diff --git a/try/JsSim.js b/try/JsSim.js index aac0faecd..6c668427a 100644 --- a/try/JsSim.js +++ b/try/JsSim.js @@ -168121,49 +168121,49 @@ kM=[2,dt],kN=[0,0,[2,dQ],hO,0,1],kO=[2,jL],kP=[0,[0,0,[2,gN],ij,0,1],[2,by],jC,0 function navli(param){return ReactiveData[1][1];} function rightsubpanel(param){ var - _ao_ = + _ar_ = [0, [0, cst_polymers, 0, caml_call1(Dune_exe_Tab_polymers[2], 0)], 0], - _ap_ = + _as_ = [0, [0, cst_constraints, 0, caml_call1(Dune_exe_Tab_constraints[2], 0)], - _ao_], - _aq_ = + _ar_], + _at_ = [0, [0, cst_influences, 0, caml_call1(Dune_exe_Tab_influences[2], 0)], - _ap_], - _ar_ = + _as_], + _au_ = [0, [0, cst_contact_map, 0, caml_call1(Dune_exe_Tab_contact_map[2], 0)], - _aq_], - _as_ = + _at_], + _av_ = [0, - caml_call3(Dune_exe_Ui_common[11], [0, rightsubpanel_id], 0, _ar_), + caml_call3(Dune_exe_Ui_common[11], [0, rightsubpanel_id], 0, _au_), 0], - _at_ = + _aw_ = [0, [0, cst_polymers$0, 0, caml_call1(Dune_exe_Tab_polymers[1], 0)], 0], - _au_ = + _ax_ = [0, [0, cst_constraints$0, 0, caml_call1(Dune_exe_Tab_constraints[1], 0)], - _at_], - _av_ = + _aw_], + _ay_ = [0, [0, cst_influences$0, 0, caml_call1(Dune_exe_Tab_influences[1], 0)], - _au_], - _aw_ = + _ax_], + _az_ = [0, [0, cst_contact_map$0, 0, caml_call1(Dune_exe_Tab_contact_map[1], 0)], - _av_], - _ax_ = [0, caml_call2(Dune_exe_Ui_common[8], cst_subnavtab, _aw_), _as_], - _ay_ = 0; - function _az_(editor_full){ - var _aC_ = editor_full ? _a_ : _b_; - return caml_call1(React[2][1], _aC_); + _ay_], + _aA_ = [0, caml_call2(Dune_exe_Ui_common[8], cst_subnavtab, _az_), _av_], + _aB_ = 0; + function _aC_(editor_full){ + var _aF_ = editor_full ? _a_ : _b_; + return caml_call1(React[2][1], _aF_); } var - _aA_ = caml_call3(React[2][24], 0, Dune_exe_Subpanel_editor[1], _az_), - _aB_ = - [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[8][3][5], _aA_), _ay_]]; - return caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][247], _aB_, _ax_); + _aD_ = caml_call3(React[2][24], 0, Dune_exe_Subpanel_editor[1], _aC_), + _aE_ = + [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[8][3][5], _aD_), _aB_]]; + return caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][247], _aE_, _aA_); } function childs_hide(b){ return b @@ -168180,130 +168180,130 @@ kM=[2,dt],kN=[0,0,[2,dQ],hO,0,1],kO=[2,jL],kP=[0,[0,0,[2,gN],ij,0,1],[2,by],jC,0 } function content(param){ var - _ah_ = [0, rightsubpanel(0), 0], - _ai_ = [0, caml_call1(Dune_exe_Subpanel_editor[3], 0), 0], - _aj_ = 0; - function _ak_(editor_full){ + _ak_ = [0, rightsubpanel(0), 0], + _al_ = [0, caml_call1(Dune_exe_Subpanel_editor[3], 0), 0], + _am_ = 0; + function _an_(editor_full){ childs_hide(editor_full); - var _an_ = editor_full ? _c_ : _d_; - return caml_call1(React[2][1], _an_); + var _aq_ = editor_full ? _c_ : _d_; + return caml_call1(React[2][1], _aq_); } var - _al_ = caml_call3(React[2][24], 0, Dune_exe_Subpanel_editor[1], _ak_), - _am_ = - [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[8][3][5], _al_), _aj_]]; + _ao_ = caml_call3(React[2][24], 0, Dune_exe_Subpanel_editor[1], _an_), + _ap_ = + [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[8][3][5], _ao_), _am_]]; return [0, - caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][247], _am_, _ai_), - _ah_]; + caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][247], _ap_, _al_), + _ak_]; } function init_dead_rules(param){ - var _U_ = Dune_exe_State_project[3]; - function _V_(model){ - function _W_(manager){ + var _X_ = Dune_exe_State_project[3]; + function _Y_(model){ + function _Z_(manager){ if(model[4][5]){ var - _Y_ = caml_call1(Kappa_json_api_Api_common[3], 0), - _Z_ = function(mh){return mh;}, - ___ = + _$_ = caml_call1(Kappa_json_api_Api_common[3], 0), + _aa_ = function(mh){return mh;}, + _ab_ = function(list){ - var _ad_ = 0; - function _ae_(acc, rule){ + var _ag_ = 0; + function _ah_(acc, rule){ if(rule[6]) return acc; if(caml_string_notequal(rule[2], cst$5)) var - _af_ = caml_call2(Stdlib[28], rule[2], cst), - _ag_ = caml_call2(Stdlib[28], cst$0, _af_); + _ai_ = caml_call2(Stdlib[28], rule[2], cst), + _aj_ = caml_call2(Stdlib[28], cst$0, _ai_); else var - _ag_ = + _aj_ = caml_string_notequal(rule[3], cst$5) ? rule[3] : caml_call1(Stdlib[33], rule[1]); - var text = caml_call2(Stdlib[28], cst_Dead_rule, _ag_); + var text = caml_call2(Stdlib[28], cst_Dead_rule, _aj_); return [0, [0, 2, text, [0, rule[4]]], acc]; } - var warnings = caml_call3(Stdlib_List[25], _ae_, _ad_, list); + var warnings = caml_call3(Stdlib_List[25], _ah_, _ag_, list); return caml_call1(Stdlib_List[9], warnings); }; 604509477; var - _$_ = caml_call2(Kappa_data_structures_Result_u[9], ___, _Z_), - _aa_ = + _ac_ = caml_call2(Kappa_data_structures_Result_u[9], _ab_, _aa_), + _ad_ = caml_call1(caml_get_public_method(manager, 604509477, 1), manager), - _ab_ = caml_call2(Lwt[33][2], _aa_, _$_); - return caml_call2(Lwt[33][2], _ab_, _Y_); + _ae_ = caml_call2(Lwt[33][2], _ad_, _ac_); + return caml_call2(Lwt[33][2], _ae_, _$_); } - var _ac_ = caml_call2(Kappa_data_structures_Result_u[14], 0, 0); - return caml_call1(Lwt[4], _ac_); + var _af_ = caml_call2(Kappa_data_structures_Result_u[14], 0, 0); + return caml_call1(Lwt[4], _af_); } var - _X_ = + ___ = caml_call2 - (Dune_exe_State_project[17], cst_File_gui_tab_editor_ml_lin, _W_); + (Dune_exe_State_project[17], cst_File_gui_tab_editor_ml_lin, _Z_); return caml_call3 - (Dune_exe_State_error[4], _e_, cst_tab_editor_dead_rule, _X_); + (Dune_exe_State_error[4], _e_, cst_tab_editor_dead_rule, ___); } - return caml_call3(React[2][26], 0, _V_, _U_); + return caml_call3(React[2][26], 0, _Y_, _X_); } function init_dead_agents(param){ - var _E_ = Dune_exe_State_project[3]; - function _F_(model){ - function _G_(manager){ + var _H_ = Dune_exe_State_project[3]; + function _I_(model){ + function _J_(manager){ if(model[4][6]){ var - _I_ = caml_call1(Kappa_json_api_Api_common[3], 0), - _J_ = function(mh){return mh;}, - _K_ = + _L_ = caml_call1(Kappa_json_api_Api_common[3], 0), + _M_ = function(mh){return mh;}, + _N_ = function(list){ - var _P_ = 0; - function _Q_(acc, agent){ + var _S_ = 0; + function _T_(acc, agent){ var - _R_ = + _U_ = caml_string_notequal(agent[2], cst$5) ? agent[2] : caml_call1(Stdlib[33], agent[1]), - text = caml_call2(Stdlib[28], cst_Dead_agent, _R_), - _S_ = agent[3]; - function _T_(acc, range){ + text = caml_call2(Stdlib[28], cst_Dead_agent, _U_), + _V_ = agent[3]; + function _W_(acc, range){ return [0, [0, 2, text, [0, range]], acc]; } - return caml_call3(Stdlib_List[25], _T_, acc, _S_); + return caml_call3(Stdlib_List[25], _W_, acc, _V_); } - var warnings = caml_call3(Stdlib_List[25], _Q_, _P_, list); + var warnings = caml_call3(Stdlib_List[25], _T_, _S_, list); return caml_call1(Stdlib_List[9], warnings); }; 46367008; var - _L_ = caml_call2(Kappa_data_structures_Result_u[9], _K_, _J_), - _M_ = + _O_ = caml_call2(Kappa_data_structures_Result_u[9], _N_, _M_), + _P_ = caml_call1(caml_get_public_method(manager, 46367008, 2), manager), - _N_ = caml_call2(Lwt[33][2], _M_, _L_); - return caml_call2(Lwt[33][2], _N_, _I_); + _Q_ = caml_call2(Lwt[33][2], _P_, _O_); + return caml_call2(Lwt[33][2], _Q_, _L_); } - var _O_ = caml_call2(Kappa_data_structures_Result_u[14], 0, 0); - return caml_call1(Lwt[4], _O_); + var _R_ = caml_call2(Kappa_data_structures_Result_u[14], 0, 0); + return caml_call1(Lwt[4], _R_); } var - _H_ = + _K_ = caml_call2 - (Dune_exe_State_project[17], cst_File_gui_tab_editor_ml_lin$0, _G_); + (Dune_exe_State_project[17], cst_File_gui_tab_editor_ml_lin$0, _J_); return caml_call3 - (Dune_exe_State_error[4], _f_, cst_tab_editor_dead_agent, _H_); + (Dune_exe_State_error[4], _f_, cst_tab_editor_dead_agent, _K_); } - return caml_call3(React[2][26], 0, _F_, _E_); + return caml_call3(React[2][26], 0, _I_, _H_); } function init_non_weakly_reversible_tra(param){ - var _m_ = Dune_exe_State_project[3]; - function _n_(model){ - function _o_(manager){ + var _p_ = Dune_exe_State_project[3]; + function _q_(model){ + function _r_(manager){ if(model[4][7]){ var - _q_ = caml_call1(Kappa_json_api_Api_common[3], 0), - _r_ = function(mh){return mh;}, - _s_ = + _t_ = caml_call1(Kappa_json_api_Api_common[3], 0), + _u_ = function(mh){return mh;}, + _v_ = function(list){ - var _x_ = 0; - function _y_(acc, param){ + var _A_ = 0; + function _B_(acc, param){ var context_list = param[2], rule = param[1]; if(rule[6]) return acc; 0; @@ -168323,21 +168323,21 @@ kM=[2,dt],kN=[0,0,[2,dQ],hO,0,1],kO=[2,jL],kP=[0,[0,0,[2,gN],ij,0,1],[2,by],jC,0 0; var tab$0 = tab, skip$0 = skip, plural$0 = plural; } - function _z_(fmt, param){ + function _C_(fmt, param){ var b = param[2], a = param[1]; return caml_call5(Stdlib_Format[129], fmt, _g_, tab$0, a, b); } - function _A_(fmt){ + function _D_(fmt){ return caml_call3(Stdlib_Format[129], fmt, _h_, skip$0); } - var _B_ = caml_call3(Kappa_data_structures_Pp[2], 0, _A_, _z_); + var _E_ = caml_call3(Kappa_data_structures_Pp[2], 0, _D_, _C_); if(caml_string_notequal(rule[2], cst$5)) var - _C_ = caml_call2(Stdlib[28], rule[2], cst$3), - _D_ = caml_call2(Stdlib[28], cst$4, _C_); + _F_ = caml_call2(Stdlib[28], rule[2], cst$3), + _G_ = caml_call2(Stdlib[28], cst$4, _F_); else var - _D_ = + _G_ = caml_string_notequal(rule[3], cst$5) ? rule[3] : caml_call1(Stdlib[33], rule[1]); @@ -168346,49 +168346,56 @@ kM=[2,dt],kN=[0,0,[2,dQ],hO,0,1],kO=[2,jL],kP=[0,[0,0,[2,gN],ij,0,1],[2,by],jC,0 caml_call6 (Stdlib_Format[133], _i_, - _D_, + _G_, plural$0, skip$0, - _B_, + _E_, context_list); return [0, [0, 2, text, [0, rule[4]]], acc]; } - var warnings = caml_call3(Stdlib_List[25], _y_, _x_, list); + var warnings = caml_call3(Stdlib_List[25], _B_, _A_, list); return caml_call1(Stdlib_List[9], warnings); }; -44198189; var - _t_ = caml_call2(Kappa_data_structures_Result_u[9], _s_, _r_), - _u_ = + _w_ = caml_call2(Kappa_data_structures_Result_u[9], _v_, _u_), + _x_ = caml_call1(caml_get_public_method(manager, -44198189, 3), manager), - _v_ = caml_call2(Lwt[33][2], _u_, _t_); - return caml_call2(Lwt[33][2], _v_, _q_); + _y_ = caml_call2(Lwt[33][2], _x_, _w_); + return caml_call2(Lwt[33][2], _y_, _t_); } - var _w_ = caml_call2(Kappa_data_structures_Result_u[14], 0, 0); - return caml_call1(Lwt[4], _w_); + var _z_ = caml_call2(Kappa_data_structures_Result_u[14], 0, 0); + return caml_call1(Lwt[4], _z_); } var - _p_ = + _s_ = caml_call2 - (Dune_exe_State_project[17], cst_File_gui_tab_editor_ml_lin$1, _o_); + (Dune_exe_State_project[17], cst_File_gui_tab_editor_ml_lin$1, _r_); return caml_call3 - (Dune_exe_State_error[4], _j_, cst_tab_editor_dead_rule$0, _p_); + (Dune_exe_State_error[4], _j_, cst_tab_editor_dead_rule$0, _s_); } - return caml_call3(React[2][26], 0, _n_, _m_); + return caml_call3(React[2][26], 0, _q_, _p_); } + var dont_gc_me = [0, 0]; function onload(param){ caml_call1(Dune_exe_Subpanel_editor[4], 0); - init_dead_rules(0); - init_dead_agents(0); - init_non_weakly_reversible_tra(0); + var _k_ = dont_gc_me[1]; + dont_gc_me[1] = [0, init_dead_rules(0), _k_]; + 0; + var _l_ = dont_gc_me[1]; + dont_gc_me[1] = [0, init_dead_agents(0), _l_]; + 0; + var _m_ = dont_gc_me[1]; + dont_gc_me[1] = [0, init_non_weakly_reversible_tra(0), _m_]; + 0; caml_call1(Dune_exe_Tab_contact_map[3], 0); caml_call1(Dune_exe_Tab_influences[3], 0); caml_call1(Dune_exe_Tab_constraints[3], 0); caml_call1(Dune_exe_Tab_polymers[3], 0); - function _k_(param){return childs_hide(1);} - caml_call3(Kappa_js_lib_Common[9], cst_naveditor, cst_hide_bs_tab, _k_); - function _l_(param){return childs_hide(0);} - caml_call3(Kappa_js_lib_Common[9], cst_naveditor$0, cst_shown_bs_tab, _l_); + function _n_(param){return childs_hide(1);} + caml_call3(Kappa_js_lib_Common[9], cst_naveditor, cst_hide_bs_tab, _n_); + function _o_(param){return childs_hide(0);} + caml_call3(Kappa_js_lib_Common[9], cst_naveditor$0, cst_shown_bs_tab, _o_); return 0; } function onresize(param){ @@ -168503,16 +168510,16 @@ kM=[2,dt],kN=[0,0,[2,dQ],hO,0,1],kO=[2,jL],kP=[0,[0,0,[2,gN],ij,0,1],[2,by],jC,0 cst_navDIN$0 = cst_navDIN$1, _C_ = [0, "flex_content", [0, "table-responsive", 0]], cst_File_gui_tab_flux_ml_line_$1 = - 'File "gui/tab_flux.ml", line 130, characters 42-49', + 'File "gui/tab_flux.ml", line 132, characters 42-49', _m_ = [0, "success", 0], _n_ = [0, "info", 0], cst_hits = " hits)", cst_affects = "affects", cst_File_gui_tab_flux_ml_line_$0 = - 'File "gui/tab_flux.ml", line 54, characters 29-36', + 'File "gui/tab_flux.ml", line 55, characters 29-36', _d_ = [1, 0], cst_File_gui_tab_flux_ml_line_ = - 'File "gui/tab_flux.ml", line 29, characters 67-74', + 'File "gui/tab_flux.ml", line 30, characters 67-74', _f_ = [0, "form-control", 0], _q_ = [0, "table", [0, "table-condensed", [0, "table-bordered", 0]]], cst_text_html = "text/html", @@ -172060,4 +172067,4 @@ kM=[2,dt],kN=[0,0,[2,dQ],hO,0,1],kO=[2,jL],kP=[0,[0,0,[2,gN],ij,0,1],[2,by],jC,0 (globalThis)); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJKc1NpbS5iYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJuYW1lcyI6WyJjYW1sX2ludDY0X2lzX3plcm8iLCJ4IiwiY2FtbF9zdHJfcmVwZWF0IiwibiIsInMiLCJyIiwibCIsImNhbWxfaW50NjRfb2Zmc2V0IiwiTWF0aCIsImNhbWxfcmFpc2VfY29uc3RhbnQiLCJ0YWciLCJjYW1sX2dsb2JhbF9kYXRhIiwiY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSIsIk1sSW50NjQiLCJsbyIsIm1pIiwiaGkiLCJ0aGlzIiwieGhpIiwiaCIsInNpZ24iLCJvZmZzZXQiLCJtb2R1bHVzIiwiZGl2aXNvciIsInF1b3RpZW50IiwieSIsInEiLCJjYW1sX2ludDY0X29mX2ludDMyIiwiY2FtbF9pbnQ2NF90b19pbnQzMiIsImNhbWxfaW50NjRfaXNfbmVnYXRpdmUiLCJjYW1sX2ludDY0X25lZyIsImNhbWxfanNieXRlc19vZl9zdHJpbmciLCJqc29vX3N5c19nZXRlbnYiLCJwcm9jZXNzIiwiZ2xvYmFsVGhpcyIsInVuZGVmaW5lZCIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnIiwiaSIsImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlIiwiZXhuIiwiZm9yY2UiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwiY2FtbF9zdHJpbmdfb2ZfanNieXRlcyIsImNhbWxfcmFpc2Vfd2l0aF9zdHJpbmciLCJtc2ciLCJjYW1sX2ludmFsaWRfYXJndW1lbnQiLCJjYW1sX3BhcnNlX2Zvcm1hdCIsImZtdCIsImxlbiIsImYiLCJjIiwiY2FtbF9maW5pc2hfZm9ybWF0dGluZyIsInJhd2J1ZmZlciIsImJ1ZmZlciIsImNhbWxfaW50NjRfZm9ybWF0Iiwid2Jhc2UiLCJjdnRibCIsInAiLCJjYW1sX2V4cG0xX2Zsb2F0IiwiY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0IiwidCIsImpzb29faXNfYXNjaWkiLCJjYW1sX3V0ZjE2X29mX3V0ZjgiLCJiIiwiYzEiLCJjMiIsInYiLCJqIiwiU3RyaW5nIiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJmc19ub2RlX3N1cHBvcnRlZCIsIm1ha2VfcGF0aF9pc19hYnNvbHV0ZSIsInBvc2l4IiwicGF0aCIsIndpbjMyIiwic3BsaXREZXZpY2VSZSIsInJlc3VsdCIsImRldmljZSIsImlzVW5jIiwiQm9vbGVhbiIsInJvb3QiLCJzZXAiLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsIm5hbWUiLCJjYW1sX2N1cnJlbnRfZGlyIiwiY2FtbF9tYWtlX3BhdGgiLCJjb21wMCIsImNvbXAiLCJuY29tcCIsImNhbWxfdXRmOF9vZl91dGYxNiIsImQiLCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZyIsInVuaXhfZXJyb3IiLCJtYWtlX3VuaXhfZXJyX2FyZ3MiLCJjb2RlIiwic3lzY2FsbCIsImVycm5vIiwidmFyaWFudCIsIm51bGwiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImEiLCJjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzIiwiTWxCeXRlcyIsImNvbnRlbnRzIiwibGVuZ3RoIiwiY29udGVudCIsImNhbWxfaXNfbWxfYnl0ZXMiLCJjYW1sX2lzX21sX3N0cmluZyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJVaW50OEFycmF5IiwiY2FtbF9ieXRlc19vZl9qc2J5dGVzIiwiY2FtbF9ieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3N5c19lcnJvciIsImNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlIiwiY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IiwiY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyIsImNhbWxfY3JlYXRlX2J5dGVzIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsIk1sRmlsZSIsIk1sRmFrZUZpbGUiLCJvbGQiLCJidWYiLCJwb3MiLCJjbGVuIiwibmV3X3N0ciIsIm9sZF9kYXRhIiwiZGF0YSIsIk1sRmFrZUZkIiwiZmlsZSIsImZsYWdzIiwiTWxGYWtlRGV2aWNlIiwicmVzIiwiU3ltYm9sIiwibmFtZV9zbGFzaCIsIm1vZGUiLCJyYWlzZV91bml4IiwicGFyZW50IiwiUmVnRXhwIiwic2VlbiIsIm0iLCJlbnRyeSIsIm9rIiwiQXJyYXkiLCJieXRlcyIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQiLCJjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyIsImNhbWxfYnl0ZXNfYm91bmRfZXJyb3IiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2J5dGVzX3NldCIsIk1sTm9kZUZkIiwiZmQiLCJyZXF1aXJlIiwiZXJyIiwiYnVmX29mZnNldCIsInJlYWQiLCJNbE5vZGVEZXZpY2UiLCJjb25zdHMiLCJrZXkiLCJpc0NoYXJhY3RlckRldmljZSIsIm8iLCJqc19zdGF0cyIsInRvX2RpciIsInRhcmdldCIsImxpbmsiLCJmaWxlX2tpbmQiLCJjYW1sX2dldF9yb290IiwiY2FtbF9mYWlsd2l0aCIsImNhbWxfcm9vdCIsImpzb29fbW91bnRfcG9pbnQiLCJyZXNvbHZlX2ZzX2RldmljZSIsImNhbWxfc3lzX2lzX2RpcmVjdG9yeSIsImNhbWxfcmFpc2Vfbm90X2ZvdW5kIiwiY2FtbF9zeXNfZ2V0ZW52Iiwic2hpZnRfcmlnaHRfbmF0IiwibmF0MSIsIm9mczEiLCJsZW4xIiwibmF0MiIsIm9mczIiLCJuYml0cyIsIndyYXAiLCJjYW1sX2dyX3N0YXRlIiwiY2FtbF9ncl9zdGF0ZV9nZXQiLCJjYW1sX2dyX3BvaW50X2NvbG9yIiwiaW0iLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZSIsIk1sT2JqZWN0VGFibGUiLCJOYWl2ZUxvb2t1cCIsIm9ianMiLCJjYW1sX3N5c19yZW5hbWUiLCJvX3Jvb3QiLCJuX3Jvb3QiLCJjYW1sX2xvZzEwX2Zsb2F0IiwiY2FtbF9ydW50aW1lX3dhcm5pbmdzIiwiY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5ncyIsImJvb2wiLCJjYW1sX2NsYXNzaWZ5X2Zsb2F0IiwiaXNGaW5pdGUiLCJpc05hTiIsImNhbWxfbWxfY2hhbm5lbHMiLCJjYW1sX3JlZmlsbCIsImNoYW4iLCJzdHIiLCJzdHJfYSIsIm5yZWFkIiwiY2FtbF9hcnJheV9ib3VuZF9lcnJvciIsImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lIiwiY2hhbmlkIiwicHJldl9tYXgiLCJjYW1sX2djX21pbm9yIiwidW5pdCIsImNhbWxfbWxfY29uZGl0aW9uX25ldyIsImNhbWxfYmFfdG9fdHlwZWRfYXJyYXkiLCJiYSIsImNhbWxfbWxfaW5wdXRfYmxvY2siLCJhdmFpbCIsImNhbWxfbWxfaW5wdXRfYmlnYXJyYXkiLCJjYW1sX2ludDY0X29mX2J5dGVzIiwiY2FtbF9iYV91aW50OF9nZXQ2NCIsImkwIiwib2ZzIiwiYjEiLCJiMiIsImIzIiwiYjQiLCJiNSIsImI2IiwiYjciLCJiOCIsImNhbWxfaW50NjRfdG9fYnl0ZXMiLCJjYW1sX2ludDY0X21hcnNoYWwiLCJ3cml0ZXIiLCJzaXplcyIsImNhbWxfYmFfbnVtX2RpbXMiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiZSIsImNhbWxfY3JlYXRlX2ZpbGUiLCJqc29vX2NyZWF0ZV9maWxlIiwiY2FtbF9mc19pbml0IiwidG1wIiwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlIiwib2xkZmxhZyIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsImNhbWxfbXVsIiwiY2FtbF9oYXNoX21peF9pbnQiLCJudW1fZGlnaXRzX25hdCIsIm5hdCIsImNhbWxfaGFzaF9uYXQiLCJjYW1sX2NhbGxfZ2VuIiwiYXJnc0xlbiIsImciLCJuYXJncyIsImV4dHJhX2FyZ3MiLCJhcmd1bWVudHMiLCJjYW1sX2NhbGxiYWNrIiwiY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc3lzX2NoZGlyIiwiZGlyIiwiY2FtbF9vYmpfdXBkYXRlX3RhZyIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyIsImNhbWxfZ2NfY291bnRlcnMiLCJjYW1sX2dyX3N5bmNocm9uaXplIiwiY2FtbF91bml4X2Nsb3NlZGlyIiwiZGlyX2hhbmRsZSIsImNhbWxfdW5peF9vcGVuZGlyIiwiY2FtbF91bml4X3Jld2luZGRpciIsIm5ld19kaXJfaGFuZGxlIiwiY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSIsImNhbWxfdW5peF9yZWFkZGlyIiwiY2FtbF91bml4X2ZpbmRmaXJzdCIsInBhdGhfanMiLCJmaXJzdF9lbnRyeSIsImNhbWxfaXNfY29udGludWF0aW9uX3RhZyIsImxvZzJfb2siLCJqc29vX2Zsb29yX2xvZzIiLCJJbmZpbml0eSIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiRmxvYXQzMkFycmF5IiwiaW50MzJhIiwiSW50MzJBcnJheSIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IiwiZXhwIiwiayIsInIzIiwicjIiLCJyMSIsImNhbWxfYmFfc2VyaWFsaXplIiwic3oiLCJjb21wbGV4IiwiY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudCIsImtpbmQiLCJjYW1sX2JhX2NyZWF0ZV9idWZmZXIiLCJzaXplIiwidmlldyIsIkZsb2F0NjRBcnJheSIsIkludDhBcnJheSIsIkludDE2QXJyYXkiLCJVaW50MTZBcnJheSIsImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2ludDY0X2hpMzIiLCJjYW1sX2ludDY0X2xvMzIiLCJjYW1sX2JhX2N1c3RvbV9uYW1lIiwiTWxfQmlnYXJyYXkiLCJsYXlvdXQiLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfYmFfZGVzZXJpYWxpemUiLCJyZWFkZXIiLCJudW1fZGltcyIsInNpemVfZGltIiwic2l6ZV9kaW1faGkiLCJzaXplX2RpbV9sbyIsInNpeHR5IiwiaW50NjQiLCJjYW1sX2JhX2NvbXBhcmUiLCJjYW1sX2hhc2hfbWl4X2ludDY0IiwiY2FtbF9oYXNoX21peF9mbG9hdCIsInYwIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJ3IiwiY2FtbF9pbnQzMl91bm1hcnNoYWwiLCJjYW1sX25hdGl2ZWludF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X3VubWFyc2hhbCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfaGFzaCIsImNhbWxfY3VzdG9tX29wcyIsImNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSIsImNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbSIsIm51bSIsImN1c3RvbSIsInN3YXAiLCJjYW1sX2NvbXBhcmVfdmFsX3RhZyIsIk51bWJlciIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9ieXRlc19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwieiIsImRpdl9kaWdpdF9uYXQiLCJuYXRxIiwib2ZzcSIsIm5hdHIiLCJvZnNyIiwicmVtIiwibnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0Iiwic2hpZnRfbGVmdF9uYXQiLCJNbE5hdCIsImNyZWF0ZV9uYXQiLCJhcnIiLCJzZXRfdG9femVyb19uYXQiLCJpbmNyX25hdCIsImNhcnJ5X2luIiwiY2FycnkiLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsImJvcnJvdyIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJzcmMiLCJkc3QiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImNhbWxfanNfaHRtbF9lbnRpdGllcyIsImVudGl0eSIsInRlbXAiLCJkb2N1bWVudCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQiLCJjYW1sX2JhX3NldF8yIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJhcmdzMiIsImNhbWxfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImV2YWwiLCJzZXJpYWxpemVfbmF0IiwiY2FtbF9tZW1wcm9mX3NldCIsIl9jb250cm9sIiwiY2FtbF9zeXNfZXhpdCIsImNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yIiwiY2FtbF9qc19mcm9tX2FycmF5IiwiY2FtbF9iYV9yZXNoYXBlIiwidmluZCIsIm5ld19kaW0iLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX3NldF9vb19pZCIsImNhbWxfZ3JfZmlsbF9yZWN0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEiLCJzdHIxIiwicG9zMSIsImJhMiIsInBvczIiLCJzbGljZSIsImNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZSIsImpzbmFtZSIsImNhbWxfZ2V0X2dsb2JhbF9kYXRhIiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCIsImNhbWxfYmFfdWludDhfZ2V0MTYiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX01ENVRyYW5zZm9ybSIsImFkZCIsInh4IiwiZmYiLCJnZyIsImhoIiwiaWkiLCJjYW1sX01ENVVwZGF0ZSIsImN0eCIsImlucHV0IiwiaW5wdXRfbGVuIiwiaW5fYnVmIiwiaW5wdXRfcG9zIiwibWlzc2luZyIsImNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsIiwiY3Vyc29yIiwiY2FsbGJhY2tzIiwiY2FtbF9mcmVzaF9vb19pZCIsImNhbWxfaW50NjRfdG9fZmxvYXQiLCJjYW1sX2JhX2dldF8xIiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9uZXdfc3RyaW5nIiwiY2FtbF9lcmZfZmxvYXQiLCJhMSIsImEyIiwiYTMiLCJhNCIsImE1IiwiY2FtbF9iYV91aW50OF9nZXQzMiIsImNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgiLCJjYW1sX3N0cl9pbml0aWFsaXplIiwiY2FtbF9vYmpfYmxvY2siLCJjYW1sX2dyX2NsZWFyX2dyYXBoIiwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciIsImJzIiwiY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCIsIl91bml0IiwibHhvcl9kaWdpdF9uYXQiLCJjYW1sX29ial9hZGRfb2Zmc2V0IiwiY2FtbF9maW5hbF9yZWxlYXNlIiwiY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplIiwiY2FtbF9qc190b19hcnJheSIsImNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZSIsImNhbWxfZ3JfcGxvdCIsImNvbG9yIiwiY2FtbF9ieXRlc19zZXQ2NCIsImk2NCIsImNhbWxfc3RyaW5nX3NldDE2IiwiaTE2IiwiY2FtbF9pbnQ2NF9ic3dhcCIsImNhbWxfZ2NfbWFqb3IiLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsInN0YXRlIiwiYmFzZSIsImJhY2t0cmsiLCJjYW1sX3N5c19maWxlX2V4aXN0cyIsImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QiLCJjYW1sX2FycmF5X3N1YiIsImNhbWxfYnl0ZXNfZXF1YWwiLCJjYW1sX2dyX3NpemVfeCIsImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMiLCJjYW1sX2F0b21pY19mZXRjaF9hZGQiLCJyZWYiLCJvc190eXBlIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiIsImNhbWxfY29zaF9mbG9hdCIsIk1sTXV0ZXgiLCJjYW1sX21sX211dGV4X25ldyIsImNhbWxfZXBoZV9rZXlfb2Zmc2V0IiwiY2FtbF9lcGhlX2NoZWNrX2tleSIsIndlYWsiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9ncl90ZXh0X3NpemUiLCJ0eHQiLCJjYW1sX2xleF9ydW5fbWVtIiwibWVtIiwiY3Vycl9wb3MiLCJjYW1sX2xleF9ydW5fdGFnIiwiY2FtbF9uZXdfbGV4X2VuZ2luZSIsImxleF9tZW0iLCJsZXhfYmFzZV9jb2RlIiwibGV4X2JhY2t0cmtfY29kZSIsImxleF9kZWZhdWx0X2NvZGUiLCJsZXhfdHJhbnNfY29kZSIsImxleF9jaGVja19jb2RlIiwibGV4X2NvZGUiLCJwY19vZmYiLCJwc3RhdGUiLCJiYXNlX2NvZGUiLCJjYW1sX2JhX3VpbnQ4X3NldDY0IiwiY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9sZXNzZXF1YWwiLCJjYW1sX2Fjb3NoX2Zsb2F0IiwiY2FtbF9NRDVJbml0IiwiQXJyYXlCdWZmZXIiLCJiMzIiLCJVaW50MzJBcnJheSIsImNhbWxfbWxfZmx1c2giLCJjYW1sX3NlZWtfb3V0IiwiY2FtbF9tbF9zZWVrX291dF82NCIsImNvbXBhcmVfbmF0X3JlYWwiLCJjYW1sX2djX3NldCIsImNhbWxfanNfZ2V0IiwiY2FtbF91bml4X2lzYXR0eSIsImZpbGVEZXNjcmlwdG9yIiwidHR5IiwiY2FtbF9tbF9zZXRfYnVmZmVyZWQiLCJjYW1sX2djX2NvbXBhY3Rpb24iLCJjYW1sX2VwaGVfZ2V0X2tleSIsImNhbWxfdW5peF9sb2NhbHRpbWUiLCJEYXRlIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJjYW1sX3N5c19mZHMiLCJjYW1sX3N5c19jbG9zZSIsImNhbWxfbWxfY2xvc2VfY2hhbm5lbCIsImNhbWxfYXRvbWljX2V4Y2hhbmdlIiwiY2FtbF9zeXNfaXNhdHR5IiwiX2NoYW4iLCJpc19kaWdpdF96ZXJvIiwiY2FtbF91bml4X2xzdGF0IiwiY2FtbF91bml4X2xzdGF0XzY0IiwiY2FtbF9qc19zZXQiLCJjYW1sX2FycmF5X2dldCIsImFycmF5IiwiaW5kZXgiLCJjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMiLCJjb250IiwiY2FtbF91bml4X3JtZGlyIiwiY2FtbF9sb2cyX2Zsb2F0IiwiY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50IiwiY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfc2Vla19pbiIsImNhbWxfbWxfc2Vla19pbl82NCIsImNhbWxfZG9tYWluX2lkIiwiY2FtbF9tbF9tdXRleF91bmxvY2siLCJjYW1sX2RvbWFpbl9sYXRlc3RfaWR4IiwiY2FtbF9kb21haW5fc3Bhd24iLCJtdXRleCIsImlkIiwiY2FtbF91bml4X21rZGlyIiwicGVybSIsImNhbWxfaW50NjRfc2hpZnRfbGVmdCIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSIsImNhbWxfanNfd3JhcF9jYWxsYmFjayIsIkZ1bmN0aW9uIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2lzX2pzIiwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwiY2FtbF9qc19tZXRoX2NhbGwiLCJjYW1sX2VwaGVfZGF0YV9vZmZzZXQiLCJjYW1sX3dlYWtfY3JlYXRlIiwiY2FtbF9lcGhlX2NyZWF0ZSIsImNhbWxfanNfdG9fYnl0ZV9zdHJpbmciLCJjYW1sX3RyYW1wb2xpbmUiLCJjYW1sX21heWJlX3ByaW50X3N0YXRzIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQ2NCIsImNhbWxfY3VzdG9tX2V2ZW50X2luZGV4IiwiY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyIiwiZXZlbnRfbmFtZSIsImV2ZW50X3RhZyIsImV2ZW50X3R5cGUiLCJjYW1sX3VuaXhfaGFzX3N5bWxpbmsiLCJjYW1sX2VwaGVfc2V0X2tleSIsIk9iamVjdCIsImNhbWxfZXBoZV91bnNldF9rZXkiLCJjb3VudCIsImNhbWxfd2Vha19zZXQiLCJjYW1sX3N5c19yZW1vdmUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2dldDMyIiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2h5cG90X2Zsb2F0IiwiY2FtbF9qc19jYWxsIiwiY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSIsImNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIiwiY2FtbF9oYXNoX21peF9ieXRlc19hcnIiLCJjYW1sX2hhc2hfbWl4X2pzYnl0ZXMiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzIiwibnRoX2RpZ2l0X25hdCIsImNhbWxfYXJyYXlfYmxpdCIsImNhbWxfZmxvYXRfb2Zfc3RyaW5nIiwibTMiLCJtYW50aXNzYSIsInBhcnNlSW50IiwiZXhwb25lbnQiLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX2ludDY0X2FkZCIsImNhbWxfaW50NjRfbXVsIiwiY2FtbF9pbnQ2NF91bHQiLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJjYW1sX2JhX3NldF8xIiwiY2FtbF9pbnQ2NF94b3IiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9seG1fbmV4dCIsInNoaWZ0X2wiLCJzaGlmdF9yIiwib3IiLCJ4b3IiLCJtdWwiLCJyb3RsIiwiZ2V0Iiwic2V0IiwiTSIsImRhYmEiLCJxMCIsInExIiwic3QiLCJ4MCIsImNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4iLCJjYW1sX2xpc3RfdG9fanNfYXJyYXkiLCJjYW1sX291dHB1dF92YWwiLCJXcml0ZXIiLCJ2YWx1ZSIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImNvbnNvbGUiLCJpbnRlcm5fb2JqX3RhYmxlIiwibWVtbyIsImV4aXN0aW5nX29mZnNldCIsImV4dGVybl9yZWMiLCJvcHMiLCJzel8zMl82NCIsImhlYWRlcl9wb3MiLCJvbGRfcG9zIiwidHlwZV9vZl92IiwiY2FtbF9zdHJpbmdfb2ZfYXJyYXkiLCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmciLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kIiwiY21kIiwiY2hpbGRfcHJvY2VzcyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF91bml4X2dldHVpZCIsImRlc2VyaWFsaXplX25hdCIsImluaXRpYWxpemVfbmF0IiwiY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyIsImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3ciLCJVSW50OEFycmF5UmVhZGVyIiwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSIsInJlYWR2bHEiLCJvdmVyZmxvdyIsIm43IiwiaGVhZGVyX2xlbiIsImRhdGFfbGVuIiwiTWxTdHJpbmdSZWFkZXIiLCJjYW1sX2RlY29tcHJlc3NfaW5wdXQiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIm1hZ2ljIiwiY29tcHJlc3NlZCIsInVuY29tcHJlc3NlZF9kYXRhX2xlbiIsIm51bV9vYmplY3RzIiwiX3NpemVfMzIiLCJfc2l6ZV82NCIsIm9ial9jb3VudGVyIiwiaW50ZXJuX3JlYyIsImhlYWRlciIsImV4cGVjdGVkX3NpemUiLCJjYW1sX3N0cmluZ19vZl9ieXRlcyIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyIsImNhbWxfaW5wdXRfdmFsdWUiLCJibG9jayIsImNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwIiwiY2FtbF9hdG9taWNfY2FzIiwiY2FtbF9jb3B5c2lnbl9mbG9hdCIsImNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSIsImNhbWxfYXRvbWljX2xvYWQiLCJjYW1sX01ENUZpbmFsIiwiY2FtbF9tZDVfYnl0ZXMiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9tbF9jb25kaXRpb25fd2FpdCIsIm11dGV4dCIsImNhbWxfc3RyaW5nX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbCIsImNhbWxfbmV4dGFmdGVyX2Zsb2F0IiwiYml0cyIsIm9uZSIsImNhbWxfZ3Jfc2l6ZV95IiwiY2FtbF9wb3NfaW4iLCJjYW1sX21sX3Bvc19pbiIsImNhbWxfaW50NjRfYW5kIiwiY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJjYW1sX3VuaXhfdW5saW5rIiwiY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZSIsImZzIiwiZmQyIiwiTWxGYWtlRmRfb3V0IiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImlkeCIsImNhbWxfc3lzX29wZW4iLCJfcGVybXMiLCJjYW1sX3N0cmluZ19nZXQiLCJyZV9tYXRjaCIsInJlX3dvcmRfbGV0dGVycyIsIm9wY29kZXMiLCJpc193b3JkX2xldHRlciIsImluX2JpdHNldCIsInJlX21hdGNoX2ltcGwiLCJwYXJ0aWFsIiwicHJvZyIsImNwb29sIiwibm9ybXRhYmxlIiwibnVtZ3JvdXBzIiwibnVtcmVnaXN0ZXJzIiwic3RhcnRjaGFycyIsInBjIiwicXVpdCIsImdyb3VwcyIsInJlX3JlZ2lzdGVyIiwiYmFja3RyYWNrIiwiaXRlbSIsInB1c2giLCJhY2NlcHQiLCJwcmVmaXhfbWF0Y2giLCJvcCIsInNhcmciLCJ1YXJnIiwiZ3JvdXAiLCJFcnJvciIsInJlX3NlYXJjaF9iYWNrd2FyZCIsImNhbWxfanNfZnJvbV9zdHJpbmciLCJjYW1sX21sX291dHB1dF90YSIsImNhbWxfYmFfc3ViIiwiY2hhbmdlZF9kaW0iLCJuZXdfZGltcyIsIm5ld19kYXRhIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9tbF9tdXRleF90cnlfbG9jayIsImNhbWxfYnl0ZXNfc2V0MzIiLCJpMzIiLCJjYW1sX2dyX3NpZ2lvX3NpZ25hbCIsImNhbWxfYmFfdWludDhfc2V0MzIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCIsImNhbWxfdW5peF9nbXRpbWUiLCJjYW1sX3NpZ25iaXRfZmxvYXQiLCJjYW1sX2dyX2N1cnJlbnRfeCIsImNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgiLCJjYW1sX2dyX3NldF9mb250IiwiY2FtbF9ncl9zZXRfY29sb3IiLCJjb252ZXJ0IiwibnVtYmVyIiwiY19zdHIiLCJjYW1sX2dyX21vdmV0byIsImNhbWxfZ3JfcmVzaXplX3dpbmRvdyIsImNhbWxfZ3Jfc3RhdGVfaW5pdCIsImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSIsInRhIiwiVWludDhDbGFtcGVkQXJyYXkiLCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkiLCJjYW1sX21sX3NlZWtfb3V0IiwiY2FtbF9qc190eXBlb2YiLCJjYW1sX2hhc2hfbWl4X3N0cmluZyIsImNhbWxfc3RyaW5nX2hhc2giLCJjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZSIsImJ0IiwiY2FtbF9ncl9saW5ldG8iLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9iYV9kaW1fMyIsImNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24iLCJjYW1sX2Zvcm1hdF9leGNlcHRpb24iLCJidWNrZXQiLCJzdGFydCIsImNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uIiwiaGFuZGxlciIsImF0X2V4aXQiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfYnl0ZXNfZ2V0MTYiLCJjYW1sX29ial9tYWtlX2ZvcndhcmQiLCJjYW1sX2pzX2Zyb21fYm9vbCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgiLCJjYW1sX2NyZWF0ZV9zdHJpbmciLCJjYW1sX21kNV9jaGFuIiwidG9yZWFkIiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCIsImNhbWxfdW5peF9maW5kbmV4dCIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2FycmF5X2FwcGVuZCIsImwxIiwibDIiLCJjYW1sX3VuaXhfZ2V0dGltZW9mZGF5IiwiY2FtbF91bml4X3RpbWUiLCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbCIsImNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvciIsImNhbWxfZmlsbF9ieXRlcyIsImNhbWxfanNfZXhwciIsImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMiLCJjYW1sX2V2ZW50bG9nX3Jlc3VtZSIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsImVuZCIsImNhbWxfcHVyZV9qc19leHByIiwiY2FtbF9ibGl0X3N0cmluZyIsImJsaXRfbmF0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyIsImJhMSIsImJ5dGVzMiIsImNhbWxfdW5peF9zdGF0IiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF91bml4X3N0YXRfNjQiLCJjYW1sX3RvX2pzX3N0cmluZyIsImNhbWxfbWxfbXV0ZXhfbG9jayIsInJlX3NlYXJjaF9mb3J3YXJkIiwiY2FtbF9tYWtlX3ZlY3QiLCJpbml0IiwiY2FtbF9tbF9zZWVrX2luIiwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkiLCJjYW1sX21sX291dHB1dF9jaGFyIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIiwiY2FtbF9vYmpfaXNfYmxvY2siLCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkIiwiY2FtbF9qc192YXIiLCJjYW1sX3RydW5jX2Zsb2F0IiwiY2FtbF9lcGhlX3Vuc2V0X2RhdGEiLCJjYW1sX2VwaGVfc2V0X2RhdGEiLCJjYW1sX2VwaGVfYmxpdF9kYXRhIiwibGVuZ3RoX25hdCIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9ieXRlc19sZXNzZXF1YWwiLCJjYW1sX2FycmF5X29mX2J5dGVzIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsIm5vdyIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNiIiwiY2FtbF9iYV9nZXRfMiIsImNhbWxfYmFfdWludDhfc2V0MTYiLCJjYW1sX2xhenlfcmVzZXRfdG9fbGF6eSIsImNhbWxfanNfZGVsZXRlIiwiY2FtbF9pbnRfb2Zfc3RyaW5nIiwiY2FtbF9saXN0X21vdW50X3BvaW50IiwicHJldiIsImNhbWxfbWFyc2hhbF9jb25zdGFudHMiLCJjYW1sX29ial9yYXdfZmllbGQiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkiLCJjYW1sX2dyX2FyY19hdXgiLCJjeCIsImN5IiwicnkiLCJyeCIsInJvdCIsInhQb3MiLCJ5UG9zIiwieFBvc19wcmV2IiwieVBvc19wcmV2Iiwic3BhY2UiLCJkZWx0YSIsImNhbWxfZ3JfZmlsbF9hcmMiLCJjYW1sX2JhX3NsaWNlIiwibnVtX2luZHMiLCJzdWJfZGltcyIsImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2JhX2tpbmQiLCJjYW1sX2FsbG9jX2R1bW15X2luZml4IiwiY2FtbF9qc19zdHJpY3RfZXF1YWxzIiwiY2FtbF9qc19mdW5fY2FsbCIsImNhbWxfZ2NfbWFqb3Jfc2xpY2UiLCJ3b3JrIiwiY2FtbF9qc19wdXJlX2V4cHIiLCJjb21wYXJlX2RpZ2l0c19uYXQiLCJjYW1sX21sX2lucHV0IiwiY2FtbF9ncl93YWl0X2V2ZW50IiwiX2V2bCIsImNhbWxfZ3Jfc2lnaW9faGFuZGxlciIsImNhbWxfbWVtcHJvZl9kaXNjYXJkIiwiY2FtbF9oYXNoX21peF9iaWdzdHJpbmciLCJjYW1sX3JlY29yZF9iYWNrdHJhY2UiLCJjYW1sX3VuaXhfY2xlYW51cCIsImNhbWxfc3lzX2dldF9jb25maWciLCJjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUiLCJjYW1sX29ial9pc19zaGFyZWQiLCJjYW1sX21sX291dF9jaGFubmVsc19saXN0IiwiY2FtbF9hc2luaF9mbG9hdCIsImNhbWxfcG9zX291dCIsImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIiLCJhYiIsImNhbWxfbW9kIiwiY2FtbF9iYV9pbml0IiwiY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCIsInJlX3N0cmluZ19tYXRjaCIsIkJpZ1N0cmluZ1JlYWRlciIsImNhbWxfZ3JfZHVtcF9pbWFnZSIsImNhbWxfYmFfZ2V0X2dlbmVyaWMiLCJjYW1sX3VuaXhfc3RhcnR1cCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX21vdW50X2F1dG9sb2FkIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfZGl2IiwiY2FtbF9vYmpfZHVwIiwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJjYW1sX3N5c19nZXRfYXJndiIsImNhbWxfbWxfZG9tYWluX3NldF9uYW1lIiwiX25hbWUiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2dyX2NyZWF0ZV9pbWFnZSIsImNhbWxfZXBoZV9nZXRfa2V5X2NvcHkiLCJjYW1sX2xlc3N0aGFuIiwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCIsImNhbWxfYnVpbGRfc3ltYm9scyIsInN5bWIiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibmlkIiwibXVsdF9uYXQiLCJsZW4zIiwic3F1YXJlX25hdCIsImNhbWxfanNfZnJvbV9mbG9hdCIsImNhbWxfZmxvYXRhcnJheV9jcmVhdGUiLCJjYW1sX2djX3N0YXQiLCJjYW1sX2dldF9tYWpvcl9jcmVkaXQiLCJjYW1sX3N5c19tb2RpZnlfYXJndiIsImNhbWxfbWV0aG9kX2NhY2hlIiwiY2FtbF9nZXRfcHVibGljX21ldGhvZCIsIm9iaiIsImNhY2hlaWQiLCJtZXRocyIsImxpIiwiY2FtbF9qc19nZXRfY29uc29sZSIsImNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImNoYW5uZWwiLCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkiLCJjYW1sX3JvdW5kX2Zsb2F0IiwiY2FtbF9vanNfbmV3X2FyciIsIkYiLCJjb21wbGVtZW50X25hdCIsImNhbWxfZG9tYWluX2RscyIsImNhbWxfZG9tYWluX2Rsc19zZXQiLCJjYW1sX29ial90YWciLCJjYW1sX2xhenlfcmVhZF9yZXN1bHQiLCJjYW1sX2pzX3JlZ2V4cHMiLCJjYW1sX2pzX2h0bWxfZXNjYXBlIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2dyX3N0YXRlX3NldCIsImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QiLCJhcml0eSIsImNhbWxfZ2NfbWlub3Jfd29yZHMiLCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayIsImxhbmRfZGlnaXRfbmF0IiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfYmFfc2V0XzMiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2dldF9tYWpvcl9idWNrZXQiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsInNldF9kaWdpdF9uYXRfbmF0aXZlIiwiZGlnaXQiLCJjYW1sX3N0cmluZ19zZXQ2NCIsImNhbWxfZ3Jfc3RhdGVfY3JlYXRlIiwiY2FudmFzIiwiY29udGV4dCIsImNhbWxfZ3JfZHJhd19hcmMiLCJjYW1sX2JhX21hcF9maWxlIiwidmZkIiwic2hhcmVkIiwiY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZSIsImFyZ24iLCJjYW1sX2JhX2NyZWF0ZV9mcm9tIiwiZGF0YTEiLCJkYXRhMiIsImpzdHlwIiwiY2FtbF90YW5oX2Zsb2F0IiwiY2FtbF9ncl9kcmF3X3N0ciIsImR4IiwiY2FtbF9ncl9kcmF3X3N0cmluZyIsImNhbWxfZ3JfZHJhd19jaGFyIiwiY2FtbF91bm1vdW50IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmciLCJjYW1sX21sX3Bvc19pbl82NCIsImNhbWxfZ3JfZHJhd19pbWFnZSIsImltYWdlIiwiY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUiLCJfY2hhbm5lbCIsImNhbWxfc3RyaW5nX3NldCIsImNhbWxfc3lzX3JtZGlyIiwiY2FtbF91bml4X3N5bWxpbmsiLCJzcmNfcm9vdCIsImRzdF9yb290IiwiY2FtbF9tbF9wb3Nfb3V0IiwiY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCIsImNhbWxfYnl0ZXNfbm90ZXF1YWwiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9iYV9jcmVhdGUiLCJkaW1zX21sIiwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIiwiY2FtbF9mbWFfZmxvYXQiLCJTUExJVCIsIk1JTl9WQUxVRSIsIkVQU0lMT04iLCJDIiwiQSIsIkIiLCJtdWx0aXBseSIsImF0IiwiYWhpIiwiYWxvIiwiYmhpIiwiYmxvIiwiYWRqdXN0Iiwic2NhbGUiLCJ4cyIsInlzIiwienMiLCJ4eSIsInUiLCJjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCIsImNhbWxfYnN3YXAxNiIsImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlIiwiY2FtbF9maW5hbF9yZWdpc3RlciIsImNhbWxfZ3JfZHJhd19yZWN0IiwiY2FtbF9zdHJpbmdfZ2V0MTYiLCJjYW1sX2pzX3RvX2ludDMyIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX21sX291dHB1dF9iaWdhcnJheSIsImNhbWxfYmFfZ2V0XzMiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlIiwiY2FtbF9lcGhlX2JsaXRfa2V5IiwiY2FtbF9pbml0aWFsX3RpbWUiLCJjYW1sX3N5c190aW1lIiwiY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfdW5peF9nZXRwd3VpZCIsImNhbWxfaGFzaCIsImxpbWl0Iiwic2VlZCIsInF1ZXVlIiwicmQiLCJ3ciIsImNhbWxfZG9tYWluX2Rsc19nZXQiLCJjYW1sX2J5dGVzX2dldDMyIiwiY2FtbF9mcmV4cF9mbG9hdCIsIm5lZyIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9tbF9wb3Nfb3V0XzY0IiwiY2FtbF91bml4X2ZpbmRjbG9zZSIsImNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93IiwiY2FtbF9mbG9hdGFycmF5X2JsaXQiLCJjYW1sX2dldF9taW5vcl9mcmVlIiwiY2FtbF9zZXRfc3RhdGljX2VudiIsImNhbWxfYmFfY2hhbmdlX2xheW91dCIsImNhbWxfanNfbmV3IiwiY2FtbF9ncl9jdXJyZW50X3kiLCJjYW1sX2Zvcm1hdF9pbnQiLCJqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkIiwiY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXyIsImNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbiIsImNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGMiLCJodmFsIiwiaGV4biIsImhlZmYiLCJjYW1sX29ial90cnVuY2F0ZSIsImNhbWxfanNfdG9fc3RyaW5nIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJidWZmZXJlZCIsImNhbWxfYXJyYXlfY29uY2F0IiwiY2FtbF9ncl9vcGVuX2dyYXBoIiwiaW5mbyIsInNwZWNzIiwic3RhdHVzIiwid2luIiwiZG9jIiwidGl0bGUiLCJib2R5IiwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3QiLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX2V2ZW50bG9nX3BhdXNlIiwiY2FtbF9tZW1wcm9mX3N0b3AiLCJjYW1sX2dyZWF0ZXJlcXVhbCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlIiwiY2FtbF9sb2cxcF9mbG9hdCIsImNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3IiLCJjYW1sX2xhenlfbWFrZV9mb3J3YXJkIiwibG9yX2RpZ2l0X25hdCIsImNhbWxfZ3JfYmxpdF9pbWFnZSIsImltMiIsImNhbWxfZ3Jfd2luZG93X2lkIiwiY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWQiLCJjYW1sX2pzX29uX2llIiwidWEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0IiwiY2FtbF9iYV9sYXlvdXQiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImNhbWxfYXJyYXlfc2V0IiwibmV3dmFsIiwiY2FtbF9hbGxvY19zdGFjayIsImh2IiwiaHgiLCJoZiIsImNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsIiwic2V0X2RpZ2l0X25hdCIsImNhbWxfYnl0ZXNfc2V0MTYiLCJjYW1sX2dyX2RvY19vZl9zdGF0ZSIsImNhbWxfbWxfb3V0cHV0X2ludCIsImNhbWxfb2JqX3dpdGhfdGFnIiwiY2FtbF9tbF9jaGFubmVsX3NpemUiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0Iiwic3R5bGUiLCJleHBfc2lnbiIsInNpZ25fc3RyIiwiY3N0IiwieF9zdHIiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUiLCJldmVudCIsImV2ZW50X2NvbnRlbnQiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX3VuaXhfcmVhZGxpbmsiLCJjYW1sX2JhY2t0cmFjZV9zdGF0dXMiLCJjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9iYV9maWxsIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9nY19nZXQiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX3N0cmluZ19zZXQzMiIsImNhbWxfcGFyc2VfZW5naW5lIiwidGFibGVzIiwiZW52IiwiRVJSQ09ERSIsImxvb3AiLCJ0ZXN0c2hpZnQiLCJzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJ0YmxfbmFtZXNfY29uc3QiLCJ0YmxfbmFtZXNfYmxvY2siLCJsb2ciLCJ0b2tlbl9uYW1lIiwibmFtZXMiLCJwcmludF90b2tlbiIsInRvayIsInRva2VuIiwibjEiLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfbWxfcnVudGltZV9ldmVudHNfc3RhcnQiLCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2dyX21ha2VfaW1hZ2UiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImVyYXNlX3JlbCIsInJlc3QiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJyZXN0JDMiLCJyZXN0JDQiLCJyZXN0JDUiLCJyZXN0JDYiLCJyZXN0JDciLCJ0eSIsInJlc3QkOCIsInR5MSIsInJlc3QkOSIsInJlc3QkMTAiLCJyZXN0JDExIiwicmVzdCQxMiIsInJlc3QkMTMiLCJjb25jYXRfZm10dHkiLCJmbXR0eTEiLCJmbXR0eTIiLCJ0eTIiLCJjb25jYXRfZm10IiwiZm10MSIsImZtdDIiLCJwYWQiLCJwYWQkMCIsInByZWMiLCJwYWQkMSIsImljb252IiwicHJlYyQwIiwicGFkJDIiLCJpY29udiQwIiwicHJlYyQxIiwicGFkJDMiLCJpY29udiQxIiwicHJlYyQyIiwicGFkJDQiLCJpY29udiQyIiwicHJlYyQzIiwicGFkJDUiLCJmY29udiIsInBhZCQ2Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJwYWQkNyIsImZtdHR5JDAiLCJwYWQkOCIsInJlc3QkMTQiLCJyZXN0JDE1IiwicmVzdCQxNiIsImZtdGluZ19saXQiLCJyZXN0JDE3IiwiZm10aW5nX2dlbiIsInJlc3QkMTgiLCJyZXN0JDE5IiwiY2hhcl9zZXQiLCJ3aWR0aF9vcHQiLCJyZXN0JDIwIiwiY291bnRlciIsInJlc3QkMjEiLCJyZXN0JDIyIiwiaWduIiwicmVzdCQyMyIsImYiLCJhcml0eSIsIm1ha2UiLCJ2IiwiZ2V0IiwiciIsInNldCIsImV4Y2hhbmdlIiwiY3VyIiwiY29tcGFyZV9hbmRfc2V0Iiwic2VlbiIsImZldGNoX2FuZF9hZGQiLCJuIiwiaW5jciIsImRlY3IiLCJmYWlsd2l0aCIsInMiLCJpbnZhbGlkX2FyZyIsIm1pbiIsIngiLCJ5IiwibWF4IiwiYWJzIiwibG5vdCIsImluZmluaXR5IiwibmVnX2luZmluaXR5IiwibmFuIiwibWF4X2Zsb2F0IiwibWluX2Zsb2F0IiwiZXBzaWxvbl9mbG9hdCIsIm1heF9pbnQiLCJtaW5faW50Iiwic3ltYm9sIiwiczEiLCJzMiIsImwxIiwibDIiLCJjaGFyX29mX2ludCIsInN0cmluZ19vZl9ib29sIiwiYiIsImJvb2xfb2Zfc3RyaW5nIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJsIiwiaSIsImkkMCIsInN0cmluZ19vZl9mbG9hdCIsImZsb2F0X29mX3N0cmluZ19vcHQiLCJzeW1ib2wkMCIsInRsIiwiaGQiLCJzdGRpbiIsInN0ZG91dCIsInN0ZGVyciIsIm9wZW5fb3V0X2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX291dCIsIm9wZW5fb3V0X2JpbiIsImZsdXNoX2FsbCIsImEiLCJvdXRwdXRfYnl0ZXMiLCJvYyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXQiLCJvZnMiLCJsZW4iLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X3ZhbHVlIiwiY2hhbiIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsIm9wZW5faW5fZ2VuIiwib3Blbl9pbiIsIm9wZW5faW5fYmluIiwiaW5wdXQiLCJpYyIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJvZnMkMCIsImxlbiQwIiwibGVuJDEiLCJvZnMkMSIsInJlYWxseV9pbnB1dCIsInJlYWxseV9pbnB1dF9zdHJpbmciLCJpbnB1dF9saW5lIiwiYnVpbGRfcmVzdWx0IiwiYnVmIiwicG9zJDAiLCJhY2N1IiwiYmVnIiwiYWNjdSQwIiwicmVzIiwiY2xvc2VfaW5fbm9lcnIiLCJwcmludF9jaGFyIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfYnl0ZXMiLCJwcmludF9pbnQiLCJwcmludF9mbG9hdCIsInByaW50X2VuZGxpbmUiLCJwcmludF9uZXdsaW5lIiwicHJlcnJfY2hhciIsInByZXJyX3N0cmluZyIsInByZXJyX2J5dGVzIiwicHJlcnJfaW50IiwicHJlcnJfZmxvYXQiLCJwcmVycl9lbmRsaW5lIiwicHJlcnJfbmV3bGluZSIsInJlYWRfbGluZSIsInJlYWRfaW50IiwicmVhZF9pbnRfb3B0IiwicmVhZF9mbG9hdCIsInJlYWRfZmxvYXRfb3B0Iiwic3RyaW5nX29mX2Zvcm1hdCIsInN5bWJvbCQxIiwic3RyMiIsInN0cjEiLCJleGl0X2Z1bmN0aW9uIiwiYXRfZXhpdCIsImZfeWV0X3RvX3J1biIsIm9sZF9leGl0IiwiZl95ZXRfdG9fcnVuJDAiLCJvbGRfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fYXRfZXhpdCIsImV4aXQiLCJyZXRjb2RlIiwiZmx1c2giLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJzZWVrX291dCIsInBvc19vdXQiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJzZXRfYmluYXJ5X21vZGVfb3V0IiwiaW5wdXRfY2hhciIsImlucHV0X2J5dGUiLCJpbnB1dF9iaW5hcnlfaW50IiwiaW5wdXRfdmFsdWUiLCJzZWVrX2luIiwicG9zX2luIiwiaW5fY2hhbm5lbF9sZW5ndGgiLCJjbG9zZV9pbiIsInNldF9iaW5hcnlfbW9kZV9pbiIsImVtcHR5IiwicmV0dXJuJDAiLCJjb25zIiwibmV4dCIsImFwcGVuZCIsInNlcTEiLCJzZXEyIiwibWFwIiwic2VxIiwiZmlsdGVyX21hcCIsInNlcSQwIiwiZmlsdGVyIiwiY29uY2F0IiwiZmxhdF9tYXAiLCJmb2xkX2xlZnQiLCJhY2MiLCJhY2MkMCIsImFjYyQxIiwiaXRlciIsInVuZm9sZCIsInUiLCJ1JDAiLCJub25lIiwic29tZSIsInZhbHVlIiwibyIsImRlZmF1bHQkMCIsImJpbmQiLCJqb2luIiwiZm9sZCIsImlzX25vbmUiLCJpc19zb21lIiwiZXF1YWwiLCJlcSIsIm8wIiwibzEiLCJ2MSIsInYwIiwiY29tcGFyZSIsImNtcCIsInRvX3Jlc3VsdCIsInRvX2xpc3QiLCJ0b19zZXEiLCJsZWZ0IiwicmlnaHQiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJmaW5kX2xlZnQiLCJmaW5kX3JpZ2h0IiwibWFwX2xlZnQiLCJlIiwibWFwX3JpZ2h0IiwidiQwIiwiZTEiLCJlMiIsInYyIiwidjEkMCIsInYyJDAiLCJvayIsImVycm9yIiwiZ2V0X29rIiwiZ2V0X2Vycm9yIiwibWFwX2Vycm9yIiwiaXRlcl9lcnJvciIsImlzX29rIiwiaXNfZXJyb3IiLCJyMCIsInIxIiwiZTAiLCJ0b19vcHRpb24iLCJ0b19mbG9hdCIsInRvX3N0cmluZyIsImVzY2FwZWQiLCJzJDAiLCJsb3dlcmNhc2UiLCJ1cHBlcmNhc2UiLCJsb3dlcmNhc2VfYXNjaWkiLCJ1cHBlcmNhc2VfYXNjaWkiLCJjMSIsImMyIiwiZXJyX25vX3ByZWQiLCJlcnJfbm9fc3VjYyIsImxvX2JvdW5kIiwiaGlfYm91bmQiLCJib20iLCJyZXAiLCJzdWNjIiwicHJlZCIsImlzX3ZhbGlkIiwib2ZfaW50IiwiaXNfY2hhciIsIm9mX2NoYXIiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJoYXNoIiwibGVuZ3RoIiwibCQwIiwibnRoIiwibiQwIiwibCQxIiwibiQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwiaW5pdF9hdXgiLCJyZXZfaW5pdF90aHJlc2hvbGQiLCJpbml0IiwiZmxhdHRlbiIsIm1hcGkiLCJyZXZfbWFwIiwiaXRlcmkiLCJhY2N1JDEiLCJmb2xkX3JpZ2h0IiwibWFwMiIsImEyIiwiYTEiLCJyZXZfbWFwMiIsIml0ZXIyIiwiZm9sZF9sZWZ0MiIsImZvbGRfcmlnaHQyIiwiZm9yX2FsbCIsInAiLCJleGlzdHMiLCJmb3JfYWxsMiIsImV4aXN0czIiLCJtZW0iLCJtZW1xIiwiYXNzb2MiLCJhc3NvY19vcHQiLCJhc3NxIiwiYXNzcV9vcHQiLCJtZW1fYXNzb2MiLCJtZW1fYXNzcSIsInJlbW92ZV9hc3NvYyIsInBhaXIiLCJyZW1vdmVfYXNzcSIsImZpbmQiLCJmaW5kX29wdCIsImZpbmRfbWFwIiwicmVzdWx0IiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiY29uY2F0X21hcCIsInhzIiwiZm9sZF9sZWZ0X21hcCIsImxfYWNjdSIsIngkMCIsInBhcnRpdGlvbiIsInllcyIsIm5vIiwicGFydGl0aW9uX21hcCIsInNwbGl0IiwicnkiLCJyeCIsImNvbWJpbmUiLCJtZXJnZSIsInQyIiwiaDIiLCJ0MSIsImgxIiwic3RhYmxlX3NvcnQiLCJzb3J0IiwieDIiLCJ4MSIsInRsJDEiLCJ4MyIsIngyJDAiLCJ4MSQwIiwibjEiLCJuMiIsInJldl9zb3J0IiwidGwkMCIsInNvcnRfdW5pcSIsImMkMCIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImFjY3UkMiIsImNvbXBhcmVfbGVuZ3RocyIsImNvbXBhcmVfbGVuZ3RoX3dpdGgiLCJhdXgiLCJ0YWlsIiwib2Zfc2VxIiwiZGlyZWN0IiwiZGVwdGgiLCJ6ZXJvIiwib25lIiwibWludXNfb25lIiwibG9nbm90IiwiY29weSIsIm9mX3N0cmluZyIsInN1YiIsInN1Yl9zdHJpbmciLCJleHRlbmQiLCJkc3RvZmYiLCJzcmNvZmYiLCJjcHlsZW4iLCJmaWxsIiwiYmxpdCIsIm9mczEiLCJvZnMyIiwiYmxpdF9zdHJpbmciLCJzZXAiLCJzZXBsZW4iLCJkc3QiLCJwb3MiLCJoZCQwIiwiY2F0IiwiaXNfc3BhY2UiLCJ0cmltIiwiaiIsImFwcGx5MSIsImNhcGl0YWxpemVfYXNjaWkiLCJ1bmNhcGl0YWxpemVfYXNjaWkiLCJzdGFydHNfd2l0aCIsInByZWZpeCIsImxlbl9zIiwibGVuX3ByZSIsImVuZHNfd2l0aCIsInN1ZmZpeCIsImxlbl9zdWYiLCJkaWZmIiwiaW5kZXhfcmVjIiwibGltIiwiaSQxIiwiaW5kZXgiLCJpbmRleF9yZWNfb3B0IiwiaW5kZXhfb3B0IiwiaW5kZXhfZnJvbSIsImluZGV4X2Zyb21fb3B0IiwicmluZGV4X3JlYyIsInJpbmRleCIsInJpbmRleF9mcm9tIiwicmluZGV4X3JlY19vcHQiLCJyaW5kZXhfb3B0IiwicmluZGV4X2Zyb21fb3B0IiwiY29udGFpbnNfZnJvbSIsImNvbnRhaW5zIiwicmNvbnRhaW5zX2Zyb20iLCJzcGxpdF9vbl9jaGFyIiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsInRvX3NlcWkiLCJuZXdfbGVuIiwibmV3X2J1ZiIsImdldF9pbnQ4IiwiZ2V0X3VpbnQxNl9sZSIsImdldF91aW50MTZfYmUiLCJnZXRfaW50MTZfbmUiLCJnZXRfaW50MTZfbGUiLCJnZXRfaW50MTZfYmUiLCJnZXRfaW50MzJfbGUiLCJnZXRfaW50MzJfYmUiLCJnZXRfaW50NjRfbGUiLCJnZXRfaW50NjRfYmUiLCJzZXRfaW50MTZfbGUiLCJzZXRfaW50MTZfYmUiLCJzZXRfaW50MzJfbGUiLCJzZXRfaW50MzJfYmUiLCJzZXRfaW50NjRfbGUiLCJzZXRfaW50NjRfYmUiLCJzZXRfdWludDgiLCJzZXRfdWludDE2X25lIiwiYnRzIiwiYm9zIiwib2ZfYnl0ZXMiLCJ0b19ieXRlcyIsImciLCJ0b19idWZmZXIiLCJidWZmIiwiZmxhZ3MiLCJoZWFkZXJfc2l6ZSIsImRhdGFfc2l6ZSIsInRvdGFsX3NpemUiLCJmcm9tX2J5dGVzIiwiZnJvbV9zdHJpbmciLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJtYXJzaGFsIiwib2JqIiwidW5tYXJzaGFsIiwiY3VzdG9tX3RhZyIsImZpcnN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3RvciIsImxhc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yXyIsImxhenlfdGFnIiwiY2xvc3VyZV90YWciLCJvYmplY3RfdGFnIiwiaW5maXhfdGFnIiwiZm9yd2FyZF90YWciLCJub19zY2FuX3RhZyIsImFic3RyYWN0X3RhZyIsInN0cmluZ190YWciLCJkb3VibGVfdGFnIiwiZG91YmxlX2FycmF5X3RhZyIsImludF90YWciLCJvdXRfb2ZfaGVhcF90YWciLCJ1bmFsaWduZWRfdGFnIiwiaW5mbyIsInN0YXJ0X2VudiIsIm9mX3ZhbCIsInNsb3QiLCJpZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImV4dGVuc2lvbl9uYW1lIiwiZXh0ZW5zaW9uX2lkIiwibWF4X2VwaGVfbGVuZ3RoIiwiY3JlYXRlIiwicmFpc2VfaWZfaW52YWxpZF9vZmZzZXQiLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzIiLCJtYWtlX2Zsb2F0IiwibWFrZV9tYXRyaXgiLCJzeCIsInN5IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJ0Iiwib2ZfbGlzdCIsImlucHV0X2FycmF5IiwiZWx0Iiwib3V0cHV0X2FycmF5IiwiZWx0JDAiLCJhY2MkMiIsImIwIiwiYTAiLCJiaSIsImFpIiwibmEiLCJuYiIsIm1heHNvbiIsImkzMSIsImkkNiIsImUkMSIsImkkNCIsImUkMCIsImkkNSIsImokMCIsImkkMiIsImkkMyIsImZhdGhlciIsInNyYzFvZnMiLCJzcmMxbGVuIiwic3JjMiIsInNyYzJvZnMiLCJzcmMybGVuIiwiZHN0b2ZzIiwic3JjMXIiLCJzcmMyciIsInMyJDEiLCJzMSQxIiwiaTEiLCJpMiIsImQiLCJpMiQwIiwiZCQwIiwiczIkMCIsImkxJDAiLCJkJDEiLCJzMSQwIiwiaXNvcnR0byIsInNyY29mcyIsInNvcnR0byIsImlzX2Zpbml0ZSIsImlzX2luZmluaXRlIiwiaXNfbmFuIiwiZXBzaWxvbiIsIm9mX3N0cmluZ19vcHQiLCJwaSIsImlzX2ludGVnZXIiLCJtaW5fbWF4IiwibWluX251bSIsIm1heF9udW0iLCJtaW5fbWF4X251bSIsInVuc2FmZV9maWxsIiwiY2hlY2siLCJobGVuIiwic3JjIiwic29mcyIsImRvZnMiLCJoIiwibWVtX2llZWUiLCJtYXBfdG9fYXJyYXkiLCJtYXBfZnJvbV9hcnJheSIsIm1heF9pbnQkMCIsInVuc2lnbmVkX3RvX2ludCIsInVuc2lnbmVkX2NvbXBhcmUiLCJtIiwidW5zaWduZWRfZGl2IiwicSIsInVuc2lnbmVkX3JlbSIsInNpemUiLCJkdW1teV9wb3MiLCJ6ZXJvX3BvcyIsImVuZ2luZSIsInRibCIsInN0YXRlIiwibmV3X2VuZ2luZSIsImZyb21fZnVuY3Rpb24iLCJvcHQiLCJyZWFkX2Z1biIsInN0aCIsIndpdGhfcG9zaXRpb25zIiwiYXV4X2J1ZmZlciIsImxleGJ1ZiIsInJlYWQiLCJuZXdsZW4iLCJuZXdidWYiLCJmcm9tX2NoYW5uZWwiLCJzZXRfcG9zaXRpb24iLCJwb3NpdGlvbiIsInNldF9maWxlbmFtZSIsImZuYW1lIiwibGV4ZW1lIiwic3ViX2xleGVtZSIsInN1Yl9sZXhlbWVfb3B0Iiwic3ViX2xleGVtZV9jaGFyIiwic3ViX2xleGVtZV9jaGFyX29wdCIsImxleGVtZV9jaGFyIiwibGV4ZW1lX3N0YXJ0IiwibGV4ZW1lX2VuZCIsImxleGVtZV9zdGFydF9wIiwibGV4ZW1lX2VuZF9wIiwibmV3X2xpbmUiLCJsY3AiLCJmbHVzaF9pbnB1dCIsImVudiIsImdyb3dfc3RhY2tzIiwib2xkc2l6ZSIsIm5ld3NpemUiLCJuZXdfcyIsIm5ld192IiwibmV3X3N0YXJ0IiwibmV3X2VuZCIsImNsZWFyX3BhcnNlciIsImN1cnJlbnRfbG9va2FoZWFkX2Z1biIsInl5cGFyc2UiLCJ0YWJsZXMiLCJzdGFydCIsImxleGVyIiwiaW5pdF9hc3AiLCJpbml0X3NwIiwiaW5pdF9zdGFja2Jhc2UiLCJpbml0X3N0YXRlIiwiaW5pdF9jdXJyX2NoYXIiLCJpbml0X2x2YWwiLCJpbml0X2VycmZsYWciLCJjbWQiLCJhcmciLCJhcmckMCIsImFjdGlvbiIsImV4biQwIiwiZXhuIiwiY3Vycl9jaGFyIiwidG9rIiwicGVla192YWwiLCJzeW1ib2xfc3RhcnRfcG9zIiwic3QiLCJlbiIsInN5bWJvbF9lbmRfcG9zIiwicmhzX3N0YXJ0X3BvcyIsInJoc19lbmRfcG9zIiwic3ltYm9sX3N0YXJ0Iiwic3ltYm9sX2VuZCIsInJoc19zdGFydCIsInJoc19lbmQiLCJpc19jdXJyZW50X2xvb2thaGVhZCIsInBhcnNlX2Vycm9yIiwiaGVpZ2h0IiwiaGwiLCJoJDAiLCJociIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiIsImxybCIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiIsInJsbCIsImFkZCIsInNpbmdsZXRvbiIsImFkZF9taW5fZWxlbWVudCIsImFkZF9tYXhfZWxlbWVudCIsInJoIiwibGgiLCJtaW5fZWx0IiwibWluX2VsdF9vcHQiLCJtYXhfZWx0IiwibWF4X2VsdF9vcHQiLCJyZW1vdmVfbWluX2VsdCIsInIkMCIsInByZXMiLCJwcmVzJDAiLCJpc19lbXB0eSIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJ2MCQxIiwidjAkMCIsImZpbmRfZmlyc3Rfb3B0IiwiZmluZF9sYXN0IiwiZmluZF9sYXN0X29wdCIsInRyeV9qb2luIiwidiQxIiwieDAiLCJsJDMiLCJsJDQiLCJ4MCQwIiwibCQ1IiwieDAkMSIsIm5sIiwibWlkIiwibCQyIiwieDQiLCJhZGRfc2VxIiwic2VxX29mX2VudW0iLCJzbm9jX2VudW0iLCJyZXZfc2VxX29mX2VudW0iLCJ0b19yZXZfc2VxIiwidG9fc2VxX2Zyb20iLCJsb3ciLCJsZCIsImxyZCIsInJkIiwicmxkIiwiZGF0YSIsImQwJDEiLCJkMCIsImQwJDAiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjbGVhciIsInB1c2giLCJwb3AiLCJwb3Bfb3B0IiwidG9wIiwidG9wX29wdCIsImNlbGwiLCJtYXRjaCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlIiwidGFrZV9vcHQiLCJjZWxsJDAiLCJxX3JlcyIsInByZXYiLCJwcmV2JDAiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJyYWlzZV91bmRlZmluZWQiLCJmb3JjZV9sYXp5X2Jsb2NrIiwiYmxrIiwiY2xvc3VyZSIsImZvcmNlX3ZhbF9sYXp5X2Jsb2NrIiwiZm9yY2UiLCJsenYiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwibWFwX3ZhbCIsImNvdW50IiwiZmlsbF9idWZmIiwiZ2V0X2RhdGEiLCJkMTEiLCJhJDAiLCJhJDEiLCJwZWVrX2RhdGEiLCJqdW5rX2RhdGEiLCJqdW5rIiwibmdldF9kYXRhIiwiYWwiLCJucGVlayIsInN0cm0iLCJmcm9tIiwib2ZfY2hhbm5lbCIsImlhcHAiLCJpY29ucyIsImlzaW5nIiwibGFwcCIsImxjb25zIiwibHNpbmciLCJzZW1wdHkiLCJzbGF6eSIsImR1bXAiLCJkdW1wX2RhdGEiLCJjb250ZW50cyIsInJlc2V0IiwicmVzaXplIiwibW9yZSIsIm9sZF9wb3MiLCJvbGRfbGVuIiwibmV3X2J1ZmZlciIsImFkZF9jaGFyIiwiYWRkX3V0Zl84X3VjaGFyIiwicG9zJDEiLCJhZGRfdXRmXzE2YmVfdWNoYXIiLCJ1JDEiLCJoaSIsImxvIiwiYWRkX3V0Zl8xNmxlX3VjaGFyIiwiYWRkX3N1YnN0cmluZyIsIm9mZnNldCIsIm5ld19wb3NpdGlvbiIsImFkZF9zdWJieXRlcyIsImFkZF9zdHJpbmciLCJhZGRfYnl0ZXMiLCJhZGRfYnVmZmVyIiwiYnMiLCJhZGRfY2hhbm5lbCIsInRvX3JlYWQkMSIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQwIiwic3RhcnQkMCIsIm9wZW5pbmciLCJsaW0kMCIsInN0b3AkMCIsImskMiIsImNsb3NpbmciLCJzdG9wIiwiayQwIiwiayQxIiwibmV4dF9pIiwiaWRlbnQiLCJpJDciLCJpJDgiLCJ0cnVuY2F0ZSIsImFkZF9pbnQ4IiwiYWRkX2ludDE2X25lIiwiYWRkX2ludDMyX25lIiwiYWRkX2ludDY0X25lIiwiYWRkX2ludDE2X2xlIiwiYWRkX2ludDE2X2JlIiwiYWRkX2ludDMyX2xlIiwiYWRkX2ludDMyX2JlIiwiYWRkX2ludDY0X2xlIiwiYWRkX2ludDY0X2JlIiwic3ViX2Zvcm1hdCIsImZvcm1hdHRpbmdfbGl0IiwiY3JlYXRlX2NoYXJfc2V0IiwiYWRkX2luX2NoYXJfc2V0Iiwic3RyX2luZCIsIm1hc2siLCJmcmVlemVfY2hhcl9zZXQiLCJyZXZfY2hhcl9zZXQiLCJjaGFyX3NldCQwIiwiaXNfaW5fY2hhcl9zZXQiLCJwYWRfb2ZfcGFkX29wdCIsInBhZF9vcHQiLCJ3aWR0aCIsInBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCIsImZtdCIsInBhZF9vcHQkMCIsInBhZF9vcHQkMSIsInBhZF9vcHQkMiIsInBhZF9vcHQkMyIsInBhZF9vcHQkNCIsInByZWNfb3B0IiwicGFkX29wdCQ1IiwibmRlYyIsInBhZF9vcHQkNiIsInBhZF9vcHQkNyIsInBhZF9vcHQkOCIsImRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIiwiYnVmZmVyX2NyZWF0ZSIsImluaXRfc2l6ZSIsImJ1ZmZlcl9jaGVja19zaXplIiwib3ZlcmhlYWQiLCJtaW5fbGVuIiwibmV3X3N0ciIsImJ1ZmZlcl9hZGRfY2hhciIsImJ1ZmZlcl9hZGRfc3RyaW5nIiwic3RyX2xlbiIsImJ1ZmZlcl9jb250ZW50cyIsImNoYXJfb2ZfaWNvbnYiLCJjaGFyX29mX2Zjb252IiwiY0YiLCJicHJpbnRfcGFkdHkiLCJwYWR0eSIsImJwcmludF9pZ25vcmVkX2ZsYWciLCJpZ25fZmxhZyIsImJwcmludF9wYWRfb3B0IiwiYnByaW50X3BhZGRpbmciLCJwYWR0eSQwIiwiYnByaW50X3ByZWNpc2lvbiIsImJwcmludF9pY29udl9mbGFnIiwiYnByaW50X2FsdGludF9mbXQiLCJicHJpbnRfZmNvbnZfZmxhZyIsInN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCIsInN0ciQwIiwiYnByaW50X2NoYXJfbGl0ZXJhbCIsImJwcmludF9zdHJpbmdfbGl0ZXJhbCIsImJwcmludF9mbXR0eSIsImZtdHR5JDEiLCJmbXR0eSQyIiwiZm10dHkkMyIsImZtdHR5JDQiLCJmbXR0eSQ1IiwiZm10dHkkNiIsImZtdHR5JDciLCJmbXR0eSQ4IiwiZm10dHkkOSIsInN1Yl9mbXR0eSIsImZtdHR5JDEwIiwic3ViX2ZtdHR5JDAiLCJmbXR0eSQxMSIsImZtdHR5JDEyIiwiZm10dHkkMTMiLCJmbXR0eSQxNCIsImZtdHR5JDE1IiwiaW50X29mX2N1c3RvbV9hcml0eSIsInN0cmluZ19vZl9mbXQiLCJmbXRpdGVyIiwiZm10JDAiLCJpZ25fZmxhZyQwIiwic3RyJDEiLCJzZXQkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJmbXR0eV9yZWxfZGV0IiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJ0cmFucyIsImpkIiwiZGoiLCJnYSIsImFnIiwiZGUkOSIsImVkJDkiLCJhZiQ5IiwiZmEkOSIsImRlJDEwIiwiZWQkMTAiLCJhZiQxMCIsImZhJDEwIiwiZGUkMTEiLCJlZCQxMSIsImFmJDExIiwiZmEkMTEiLCJkZSQxMiIsImVkJDEyIiwiYWYkMTIiLCJmYSQxMiIsImRlJDEzIiwiZWQkMTMiLCJhZiQxMyIsImZhJDEzIiwicmVzdDEiLCJyZXN0MiIsInJlc3QxJDAiLCJyZXN0MiQwIiwicmVzdDEkMSIsInJlc3QyJDEiLCJyZXN0MSQyIiwicmVzdDIkMiIsInJlc3QxJDMiLCJyZXN0MiQzIiwicmVzdDEkNCIsInJlc3QyJDQiLCJyZXN0MSQ1IiwicmVzdDIkNSIsInJlc3QxJDYiLCJyZXN0MiQ2IiwicmVzdDEkNyIsInR5MSQwIiwicmVzdDIkNyIsInR5MiQwIiwicmVzdDEkOCIsInR5MTIiLCJ0eTExIiwicmVzdDIkOCIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsInJlc3QxJDkiLCJyZXN0MiQ5IiwicmVzdDEkMTAiLCJyZXN0MiQxMCIsInJlc3QxJDExIiwicmVzdDIkMTEiLCJyZXN0MSQxMiIsInJlc3QyJDEyIiwicmVzdDEkMTMiLCJyZXN0MiQxMyIsImZtdHR5X29mX2ZtdCIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJ0eV9yZXN0IiwicHJlY190eSIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsInR5X3Jlc3QkMCIsInByZWNfdHkkMCIsInR5X3Jlc3QkMSIsInByZWNfdHkkMSIsInR5X3Jlc3QkMiIsInByZWNfdHkkMiIsInR5X3Jlc3QkMyIsInByZWNfdHkkMyIsInR5JDAiLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5X29mX2N1c3RvbSIsImFyaXR5JDAiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJmbXR0eTAiLCJmbXR0eV9yZXN0IiwiZm10X3Jlc3QiLCJmbXR0eV9yZXN0JDAiLCJmbXRfcmVzdCQwIiwiZm10X3Jlc3QkMSIsImZtdHR5X3Jlc3QkMSIsImZtdCQyIiwiZm10X3Jlc3QkMiIsImZtdHR5X3Jlc3QkMiIsImZtdCQzIiwiZm10X3Jlc3QkMyIsImZtdHR5X3Jlc3QkMyIsImZtdCQ0IiwiZm10X3Jlc3QkNCIsImZtdHR5X3Jlc3QkNCIsImZtdCQ1IiwiZm10X3Jlc3QkNSIsImZtdHR5X3Jlc3QkNSIsInByZWMkNCIsImZtdCQ2IiwiZm10X3Jlc3QkNiIsInByZWMkNSIsInBhZCQ5IiwicGFkJDEwIiwiZm10dHlfcmVzdCQ2IiwicHJlYyQ2IiwiZm10JDciLCJmbXRfcmVzdCQ3IiwicHJlYyQ3IiwicGFkJDExIiwicGFkJDEyIiwiZm10dHlfcmVzdCQ3IiwicHJlYyQ4IiwiZm10JDgiLCJmbXRfcmVzdCQ4IiwicGFkJDEzIiwicGFkJDE0IiwiZm10dHlfcmVzdCQ4IiwiZm10JDkiLCJmbXRfcmVzdCQ5IiwiZm10JDEwIiwiZm10X3Jlc3QkMTAiLCJmbXQkMTEiLCJmbXRfcmVzdCQxMSIsImZtdCQxMiIsImZtdHR5X3Jlc3QkOSIsImZtdF9yZXN0JDEyIiwiZm10JDEzIiwiZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eTEiLCJmbXRfcmVzdCQxMyIsInN1Yl9mbXR0eSQxIiwiZm10JDE0IiwiZm10dHlfcmVzdCQxMSIsImZtdF9yZXN0JDE0IiwiZm10JDE1IiwiZm10dHlfcmVzdCQxMiIsImZtdF9yZXN0JDE1IiwiZm10JDE2IiwiZm10X3Jlc3QkMTYiLCJmbXR0eSQxNiIsImZtdCQxNyIsImZtdF9yZXN0JDE3IiwiZm10dHkzIiwiZm10MyIsImZtdDEkMCIsImZtdHR5MiQwIiwiZm10MiQwIiwiZm10dHkzJDAiLCJmbXQzJDAiLCJmbXR0eV9yZXN0JDEzIiwiZm10X3Jlc3QkMTgiLCJmbXR0eSQxNyIsImZtdCQxOCIsImZtdHR5X3Jlc3QkMTQiLCJmbXRfcmVzdCQxOSIsImZtdHR5JDE4IiwiZm10JDE5IiwiZm10dHlfcmVzdCQxNSIsImZtdF9yZXN0JDIwIiwiZm10dHkkMTkiLCJmbXQkMjAiLCJ0eXBlX2lnbm9yZWRfcGFyYW1fb25lIiwic3ViX2ZtdHR5JDIiLCJzdWJfZm10dHkkMyIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsImZtdHR5JDIxIiwiZm10JDIyIiwic3ViX2ZtdHR5JDQiLCJmbXR0eV9yZXN0JDE2IiwiZm10dHkkMjAiLCJmbXQkMjEiLCJzdWJfZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0JDAiLCJzdWJfZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkNSIsInN1Yl9mbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkOCIsInN1Yl9mbXR0eV9yZXN0JDkiLCJzdWJfZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDExIiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJzdWJfZm10dHlfcmVzdCQxMyIsInN1Yl9mbXR0eV9yZXN0JDE0Iiwic3ViMl9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE1Iiwic3ViMl9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTYiLCJzdWIyX2ZtdHR5JDEiLCJzdWIxX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTciLCJzdWIyX2ZtdHR5JDIiLCJzdWIxX2ZtdHR5JDAiLCJzdWJfZm10dHlfcmVzdCQxOCIsInN1Yl9mbXR0eV9yZXN0JDE5Iiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJzdWJfZm10dHlfcmVzdCQyMSIsInN1Yl9mbXR0eV9yZXN0JDIyIiwic3ViX2ZtdHR5X3Jlc3QkMjMiLCJzdWJfZm10dHlfcmVzdCQyNCIsInN1Yl9mbXR0eV9yZXN0JDI1Iiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImthY2MiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJrb2MiLCJyZXN0JDI0IiwicmVzdCQyNSIsInJlc3QkMjYiLCJyZXN0JDI3IiwicmVzdCQyOCIsInJlc3QkMjkiLCJmbl9vZl9jdXN0b21fYXJpdHkkMCIsImZuX29mX2N1c3RvbV9hcml0eSIsIm91dHB1dF9hY2MiLCJwJDMiLCJwJDQiLCJwJDUiLCJwJDIiLCJidWZwdXRfYWNjIiwic3RycHV0X2FjYyIsImZhaWx3aXRoX21lc3NhZ2UiLCJvcGVuX2JveF9vZl9zdHJpbmciLCJpbnZhbGlkX2JveCIsInBhcnNlX3NwYWNlcyIsIndzdGFydCIsIndlbmQiLCJib3hfbmFtZSIsIm5zdGFydCIsIm5lbmQiLCJpbmRlbnQiLCJleHBfZW5kIiwiYm94X3R5cGUiLCJtYWtlX3BhZGRpbmdfZm10X2ViYiIsIm1ha2VfcGFkcHJlY19mbXRfZWJiIiwiZm10X2ViYl9vZl9zdHJpbmciLCJsZWdhY3lfYmVoYXZpb3IiLCJmbGFnIiwibGVnYWN5X2JlaGF2aW9yJDAiLCJpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIiwidW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IiwiZW5kX2luZCIsImludmFsaWRfZm9ybWF0X3dpdGhvdXQiLCJleHBlY3RlZF9jaGFyYWN0ZXIiLCJleHBlY3RlZCIsInBhcnNlIiwibGl0X3N0YXJ0IiwiYWRkX2xpdGVyYWwiLCJzdHJfaW5kJDEiLCJzdHJfaW5kJDIiLCJwYXJzZV9mbGFncyIsInN0cl9pbmQkMCIsInBhcnNlX3RhZyIsInN0cl9pbmQkMyIsInN0cl9pbmRfMSIsInBhcnNlX2ludGVnZXIiLCJzdHJfaW5kXzIiLCJzdHJfaW5kXzMiLCJmb3JtYXR0aW5nX2xpdCQwIiwibmV4dF9pbmQiLCJzdHJfaW5kXzQiLCJzdHJfaW5kXzUiLCJzdHJfaW5kJDQiLCJzdHJfaW5kXzEkMCIsInN0cl9pbmRfMiQwIiwic3RyX2luZF8zJDAiLCJzJDEiLCJmb3JtYXR0aW5nX2xpdCQxIiwibmV4dF9pbmQkMCIsInBjdF9pbmQiLCJtaW51cyIsInBsdXMiLCJzcGFjZSIsInNldF9mbGFnIiwic3RyX2luZCQ1Iiwic3BhY2UkMCIsImhhc2gkMCIsInBsdXMkMCIsIm1pbnVzJDAiLCJ6ZXJvJDAiLCJpbmNvbXBhdGlibGVfZmxhZyIsInBhcnNlX3Bvc2l0aXZlIiwibmV3X2luZCIsInBhcnNlX2FmdGVyX3BhZGRpbmciLCJwYXJzZV9jb252ZXJzaW9uIiwicGFyc2VfbGl0ZXJhbCIsInBhcnNlX2FmdGVyX3ByZWNpc2lvbiIsInN5bWIkMCIsInBhcnNlX2NvbnYiLCJwYWRwcmVjIiwicGx1c191c2VkIiwiaGFzaF91c2VkIiwic3BhY2VfdXNlZCIsImlnbl91c2VkIiwicGFkX3VzZWQiLCJwcmVjX3VzZWQiLCJnZXRfcGx1cyIsImdldF9oYXNoIiwiZ2V0X3NwYWNlIiwiZ2V0X2lnbiIsImdldF9wYWQiLCJnZXRfcHJlYyIsImdldF9wYWRwcmVjIiwiZ2V0X2ludF9wYWQiLCJjaGVja19ub18wIiwib3B0X29mX3BhZCIsIndpZHRoJDEiLCJnZXRfcGFkX29wdCIsImdldF9wYWRwcmVjX29wdCIsImZtdF9yZXN1bHQiLCJzdWJfZW5kIiwic2VhcmNoX3N1YmZvcm1hdF9lbmQiLCJzdWJfZm10IiwiaWdub3JlZCQyIiwiY291bnRlciQwIiwiaWdub3JlZCQ2IiwiaWdub3JlZCQ3IiwiYWRkX3JhbmdlIiwiZmFpbF9zaW5nbGVfcGVyY2VudCIsInBhcnNlX2NoYXJfc2V0X2NvbnRlbnQiLCJwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyJDAiLCJwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIiwicmV2ZXJzZSIsImNoYXJfc2V0JDEiLCJpZ25vcmVkJDkiLCJjaGFyX2Zvcm1hdCIsImZtdF9yZXN0JDIxIiwiZm10X3Jlc3QkMjIiLCJmbXRfcmVzdCQyMyIsImlnbm9yZWQkMTAiLCJmbXRfcmVzdCQyNCIsImZtdF9yZXN0JDI1Iiwic3ViX2VuZCQwIiwic3ViX2ZtdCQwIiwiZm10X3Jlc3QkMjYiLCJpZ25vcmVkJDExIiwiaWdub3JlZCQzIiwiaWdub3JlZCQ1IiwiY29tcHV0ZV9pbnRfY29udiIsImlnbm9yZWQkOCIsInNwYWNlJDEiLCJoYXNoJDEiLCJwbHVzJDIiLCJraW5kIiwiaWdub3JlZCQ0IiwiaWdub3JlZCIsImlnbm9yZWQkMCIsImlnbm9yZWQkMSIsInBsdXMkMSIsImlnbiQwIiwiaXNfb3Blbl90YWciLCJpbmQiLCJzdWJfc3RyIiwic3ViX2Zvcm1hdCQwIiwiZm9ybWF0dGluZyQwIiwiZm9ybWF0dGluZyIsInN1Yl9lbmQkMSIsInN1Yl9lbmQkMiIsInN0cl9pbmQkNiIsInN0cl9pbmQkNyIsIm9wdGlvbiIsInN1YmZtdCIsImZvcm1hdF9vZl9zdHJpbmdfZm10dHkiLCJmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCIsImtmcHJpbnRmIiwia2JwcmludGYiLCJpa2ZwcmludGYiLCJmcHJpbnRmIiwiYnByaW50ZiIsImlmcHJpbnRmIiwiaWJwcmludGYiLCJwcmludGYiLCJlcHJpbnRmIiwia3NwcmludGYiLCJzcHJpbnRmIiwiYXNzb2MzIiwieTIiLCJ5MSIsIm1ha2Vfc3ltbGlzdCIsImhlbHBfYWN0aW9uIiwiYWRkX2hlbHAiLCJzcGVjbGlzdCIsImFkZDEiLCJhZGQyIiwidXNhZ2VfYiIsImVycm1zZyIsImRvYyIsInNwZWMiLCJrZXkiLCJ1c2FnZV9zdHJpbmciLCJ1c2FnZSIsImN1cnJlbnQiLCJwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY18iLCJhbGxvd19leHBhbmQiLCJhcmd2IiwiYW5vbmZ1biIsImluaXRwb3MiLCJjb252ZXJ0X2Vycm9yIiwicHJvZ25hbWUiLCJmb2xsb3ckMCIsImtleXdvcmQiLCJmb2xsb3ckMiIsIm5vX2FyZyIsImdldF9hcmciLCJjb25zdW1lX2FyZyIsInRyZWF0X2FjdGlvbiIsImYkMCIsImYkMSIsInIkMSIsImYkMiIsImFyZyQxIiwiciQyIiwiYXJnJDIiLCJmJDMiLCJhcmckMyIsIngkMSIsInIkMyIsImFyZyQ0IiwieCQyIiwic3BlY3MiLCJmJDQiLCJhcmckNSIsImYkNSIsImYkNiIsImYkNyIsImFyZyQ2IiwibmV3YXJnIiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMiLCJwYXJzZV9hcmd2X2R5bmFtaWMiLCJjdXJyZW50JDAiLCJwYXJzZV9hcmd2IiwibXNnJDAiLCJtc2ckMSIsInBhcnNlX2R5bmFtaWMiLCJwYXJzZV9leHBhbmQiLCJzZWNvbmRfd29yZCIsImxvb3AiLCJtYXhfYXJnX2xlbiIsImt3ZCIsInJlcGxhY2VfbGVhZGluZ190YWIiLCJhbGlnbiIsImxpbWl0IiwiY29tcGxldGVkIiwia3NkIiwiY3V0Y29sJDAiLCJzcGFjZXMkMCIsInNwZWMkMCIsImN1dGNvbCIsImt3ZF9sZW4iLCJzcGFjZXMiLCJyZWFkX2F1eCIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsIndvcmQkMCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJsb2NmbXQiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwidG9fc3RyaW5nX2RlZmF1bHQiLCJjaGFyJDAiLCJsaW5lIiwiY2hhciQxIiwibGluZSQwIiwiZmlsZSQwIiwiY2hhciQyIiwibGluZSQxIiwiZmlsZSQxIiwiY29uc3RydWN0b3IiLCJwcmludCIsImZjdCIsImNhdGNoJDAiLCJyYXdfYmFja3RyYWNlX2VudHJpZXMiLCJidCIsImNvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImZvcm1hdF9iYWNrdHJhY2Vfc2xvdCIsImlzX3JhaXNlIiwicHJpbnRfcmF3X2JhY2t0cmFjZSIsIm91dGNoYW4iLCJyYXdfYmFja3RyYWNlIiwiYmFja3RyYWNlIiwicHJpbnRfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZV90b19zdHJpbmciLCJiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSIsInBhcmFtIiwiYmFja3RyYWNlX3Nsb3RfaXNfaW5saW5lIiwiYmFja3RyYWNlX3Nsb3RfbG9jYXRpb24iLCJiYWNrdHJhY2Vfc2xvdF9kZWZuYW1lIiwiYmFja3RyYWNlX3Nsb3RzIiwiYmFja3RyYWNlX3Nsb3RzX29mX3Jhd19lbnRyeSIsImVudHJ5IiwicmF3X2JhY2t0cmFjZV9sZW5ndGgiLCJnZXRfYmFja3RyYWNlIiwicmVnaXN0ZXJfcHJpbnRlciIsImZuIiwib2xkX3ByaW50ZXJzIiwibmV3X3ByaW50ZXJzIiwiZXhuX3Nsb3QiLCJleG5fc2xvdF9pZCIsImV4bl9zbG90X25hbWUiLCJlcnJvcnMiLCJkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW4iLCJzdGF0dXMiLCJ1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsInNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsImVtcHR5X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9leGNlcHRpb24iLCJkZWJ1Z2dlcl9pbl91c2UiLCJleG4kMSIsInJhd19iYWNrdHJhY2UkMCIsImNvbnN0JDAiLCJmbGlwIiwibmVnYXRlIiwicHJvdGVjdCIsImZpbmFsbHkkMCIsIndvcmsiLCJmaW5hbGx5X25vX2V4biIsIndvcmtfZXhuJDAiLCJ3b3JrX2V4biIsIndvcmtfYnQiLCJwcmludF9zdGF0IiwiYWxsb2NhdGVkX2J5dGVzIiwibWEiLCJwcm8iLCJtaSIsImNyZWF0ZV9hbGFybSIsImRlbGV0ZV9hbGFybSIsIm51bGxfdHJhY2tlciIsInNhbXBsaW5nX3JhdGUiLCJ0cmFja2VyIiwiY2FsbHN0YWNrX3NpemUiLCJzdHJpbmciLCJieXRlcyIsInN1YnN0cmluZyIsInN1YmJ5dGVzIiwiZmlsZW5hbWUiLCJkaWdlc3QiLCJjaGFyX2hleCIsInRvX2hleCIsImZyb21faGV4IiwiZGlnaXQiLCJuZXdfc3RhdGUiLCJhc3NpZ24iLCJzdDEiLCJzdDIiLCJmdWxsX2luaXQiLCJzZWVkIiwic2VlZCQwIiwibWFrZV9zZWxmX2luaXQiLCJiaXRzIiwiY3VydmFsIiwibmV3dmFsIiwibmV3dmFsMzAiLCJpbnRhdXgiLCJpbnQkMCIsImJvdW5kIiwiZnVsbF9pbnQiLCJiMSIsImIyIiwibWF4X2ludF8zMiIsImJwb3MiLCJiMyIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJmbG9hdCQwIiwiYm9vbCIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludDMyJDAiLCJuYXRpdmVpbnQkMCIsImludDY0JDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJmdWxsX2luaXQkMCIsInNlbGZfaW5pdCIsImdldF9zdGF0ZSIsInNldF9zdGF0ZSIsIm9uZ29pbmdfdHJhdmVyc2FsIiwiZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCIsInBhcmFtcyIsInJhbmRvbWl6ZWRfZGVmYXVsdCIsInJhbmRvbWl6ZWQiLCJyYW5kb21pemUiLCJpc19yYW5kb21pemVkIiwicHJuZyIsInBvd2VyXzJfYWJvdmUiLCJpbml0aWFsX3NpemUiLCJyYW5kb20iLCJjb3B5X2J1Y2tldGxpc3QiLCJrZXkkMCIsIm5leHQkMCIsImluc2VydF9hbGxfYnVja2V0cyIsImluZGV4ZnVuIiwiaW5wbGFjZSIsIm9kYXRhIiwibmRhdGEiLCJuc2l6ZSIsIm5kYXRhX3RhaWwiLCJuaWR4IiwibWF0Y2gkMCIsIm9zaXplIiwib2xkX3RyYXYiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJiJDAiLCJidWNrZXRfbGVuZ3RoIiwic3RhdHMiLCJtYmwiLCJoaXN0byIsInRibF9kYXRhIiwiYnVjayIsImJ1Y2skMCIsImJ1Y2skMSIsInRvX3NlcV9rZXlzIiwidG9fc2VxX3ZhbHVlcyIsImtleV9pbmRleCIsImJ1Y2tldCIsImsxIiwibmV4dDEiLCJrMiIsIm5leHQyIiwiazMiLCJkMyIsIm5leHQzIiwiZmluZF9pbl9idWNrZXQiLCJyZXBsYWNlIiwicmVwbGFjZV9zZXEiLCJzeiIsImhhc2hfcGFyYW0iLCJzZWVkZWRfaGFzaCIsInJlYnVpbGQiLCJnZXRfY29weSIsImFyIiwiZW1wdHlidWNrZXQiLCJnZXRfaW5kZXgiLCJjcmVhdGUkMCIsInN6JDAiLCJzeiQxIiwiY291bnRfYnVja2V0IiwiYWRkX2F1eCIsInNldHRlciIsImJ1Y2tldCQwIiwiaGFzaGVzIiwibmV3c3oiLCJuZXdidWNrZXQkMCIsIm5ld2hhc2hlcyIsImhidWNrZXQiLCJwcmV2X2xlbiIsImxpdmUiLCJqJDIiLCJuZXdidWNrZXQiLCJvbGRsZW4iLCJuZXd0Iiwib2IiLCJvaSIsIm9oIiwib2kkMCIsIm5pIiwiZmluZF9vciIsImlmbm90Zm91bmQiLCJmaW5kX3NoYWRvdyIsImlmZm91bmQiLCJsZW5zIiwidG90bGVuIiwidW5rbm93biIsInBwX2VucXVldWUiLCJ0b2tlbiIsInBwX2luZmluaXR5IiwicHBfb3V0cHV0X3N0cmluZyIsInBwX291dHB1dF9uZXdsaW5lIiwiZm9ybWF0X3BwX3RleHQiLCJ0ZXh0IiwiZm9ybWF0X3N0cmluZyIsImJyZWFrX25ld19saW5lIiwicmVhbF9pbmRlbnQiLCJicmVha19saW5lIiwiYnJlYWtfc2FtZV9saW5lIiwiZm9ybWF0X3BwX3Rva2VuIiwic2l6ZSQwIiwidGFicyIsImFkZF90YWIiLCJscyIsInRhZ19uYW1lIiwibWFya2VyIiwiYnJlYWtzIiwiZml0cyIsIm9mZiIsImJveF90eXBlJDAiLCJvZmYkMCIsImluc2VydGlvbl9wb2ludCIsInRhYnMkMCIsImZpcnN0IiwiaGVhZCIsInRhYiIsIm9mZiQxIiwiaW5zZXJ0aW9uX3BvaW50JDAiLCJ3aWR0aCQyIiwiYm94X3R5cGUkMSIsInRib3giLCJ0YWdfbmFtZSQwIiwibWFya2VyJDAiLCJhZHZhbmNlX2xlZnQiLCJwZW5kaW5nX2NvdW50IiwiZW5xdWV1ZV9hZHZhbmNlIiwiZW5xdWV1ZV9zdHJpbmdfYXMiLCJpbml0aWFsaXplX3NjYW5fc3RhY2siLCJzdGFjayIsInF1ZXVlX2VsZW0iLCJzZXRfc2l6ZSIsImxlZnRfdG90YWwiLCJzY2FuX3B1c2giLCJlbGVtIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfb3Blbl90YWciLCJwcF9jbG9zZV90YWciLCJwcF9zZXRfcHJpbnRfdGFncyIsInBwX3NldF9tYXJrX3RhZ3MiLCJwcF9nZXRfcHJpbnRfdGFncyIsInBwX2dldF9tYXJrX3RhZ3MiLCJwcF9zZXRfdGFncyIsInBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBjdCIsInBvdCIsIm1jdCIsIm1vdCIsInBwX3Jpbml0IiwicHBfZmx1c2hfcXVldWUiLCJwcF9wcmludF9hc19zaXplIiwicHBfcHJpbnRfYXMiLCJpc2l6ZSIsInBwX3ByaW50X3N0cmluZyIsInBwX3ByaW50X2J5dGVzIiwicHBfcHJpbnRfaW50IiwicHBfcHJpbnRfZmxvYXQiLCJwcF9wcmludF9ib29sIiwicHBfcHJpbnRfY2hhciIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2JsYW5rcyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwicHBfbWFyZ2luIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJmbHVzaF9idWZmZXJfZm9ybWF0dGVyIiwiZmx1c2hfc3RyX2Zvcm1hdHRlciIsIm1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJzb2IiLCJnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJpdGVtcyIsImFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSIsIml0ZW0iLCJmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2IiLCJvcGVuX2hib3giLCJvcGVuX3Zib3giLCJvcGVuX2h2Ym94Iiwib3Blbl9ob3Zib3giLCJvcGVuX2JveCIsImNsb3NlX2JveCIsIm9wZW5fdGFnIiwiY2xvc2VfdGFnIiwib3Blbl9zdGFnIiwiY2xvc2Vfc3RhZyIsInByaW50X2FzIiwicHJpbnRfYm9vbCIsInByaW50X2JyZWFrIiwicHJpbnRfY3V0IiwicHJpbnRfc3BhY2UiLCJmb3JjZV9uZXdsaW5lIiwicHJpbnRfZmx1c2giLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9saXN0IiwicHBfdiIsIm9wdCQwIiwicHBfc2VwIiwib3B0JDEiLCJwcF9wcmludF9zZXEiLCJzZXEkMSIsInNlcSQyIiwicHBfcHJpbnRfdGV4dCIsInBwX3ByaW50X29wdGlvbiIsInBwX3ByaW50X3Jlc3VsdCIsInBwX3ByaW50X2VpdGhlciIsImNvbXB1dGVfdGFnIiwidGFnX2FjYyIsIm91dHB1dF9mb3JtYXR0aW5nX2xpdCIsImJ0eSIsInAkNiIsInAkNyIsInNpemUkMSIsInAkOCIsImtkcHJpbnRmIiwiZHByaW50ZiIsImthc3ByaW50ZiIsImFzcHJpbnRmIiwiZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyIsInBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsInBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsInN0cmluZ2lmeSIsInBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImZ1bnMiLCJtYXJrX29wZW5fdGFnIiwibWFya19jbG9zZV90YWciLCJwcmludF9vcGVuX3RhZyIsInByaW50X2Nsb3NlX3RhZyIsInNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsIm51bGxfY2hhciIsIm5leHRfY2hhciIsImliIiwicGVla19jaGFyIiwiY2hlY2tlZF9wZWVrX2NoYXIiLCJlbmRfb2ZfaW5wdXQiLCJiZWdpbm5pbmdfb2ZfaW5wdXQiLCJuYW1lX29mX2lucHV0IiwiY2hhcl9jb3VudCIsImludmFsaWRhdGVfY3VycmVudF9jaGFyIiwidG9rZW5fc3RyaW5nIiwidG9rZW5fYnVmZmVyIiwic2tpcF9jaGFyIiwiaWdub3JlX2NoYXIiLCJzdG9yZV9jaGFyIiwiZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSIsImluYW1lIiwic2Nhbl9jbG9zZV9hdF9lbmQiLCJzY2FuX3JhaXNlX2F0X2VuZCIsImZyb21faWMiLCJzY2FuX2Nsb3NlX2ljIiwiZW9mIiwib3Blbl9pbl9maWxlIiwiaWMkMCIsIm1lbW8iLCJtZW1vX2Zyb21fY2hhbm5lbCIsImJhZF9pbnB1dCIsImJhZF9pbnB1dF9lc2NhcGUiLCJiYWRfdG9rZW5fbGVuZ3RoIiwibWVzc2FnZSIsImJhZF9mbG9hdCIsImJhZF9oZXhfZmxvYXQiLCJjaGFyYWN0ZXJfbWlzbWF0Y2giLCJjaSIsImNoZWNrX2NoYXIiLCJjaGVja190aGlzX2NoYXIiLCJ0b2tlbl9jaGFyIiwidG9rZW5fYm9vbCIsImludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIiwidG9rZW5faW50X2xpdGVyYWwiLCJjb252IiwidG9rZW5fZmxvYXQiLCJzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciIsInNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzIiwic2Nhbl9kaWdpdF9wbHVzIiwiYmFzaXMiLCJkaWdpdHAiLCJ3aWR0aCQzIiwiaXNfYmluYXJ5X2RpZ2l0Iiwic2Nhbl9iaW5hcnlfaW50IiwiaXNfb2N0YWxfZGlnaXQiLCJzY2FuX29jdGFsX2ludCIsImlzX2hleGFfZGlnaXQiLCJzY2FuX2hleGFkZWNpbWFsX2ludCIsInNjYW5fc2lnbiIsInNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbCIsInNjYW5faW50X2NvbnZlcnNpb24iLCJzY2FuX2ZyYWN0aW9uYWxfcGFydCIsInNjYW5fZXhwb25lbnRfcGFydCIsInNjYW5fZmxvYXQiLCJwcmVjaXNpb24iLCJwcmVjaXNpb24kMCIsImNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIiwic2Nhbl9oZXhfZmxvYXQiLCJ3aWR0aCQ0Iiwid2lkdGgkNSIsIndpZHRoJDYiLCJ3aWR0aCQxMCIsIndpZHRoJDciLCJ3aWR0aCQ4Iiwid2lkdGgkOSIsInNjYW5fY2FtbF9mbG9hdF9yZXN0Iiwid2lkdGhfcHJlY2lzaW9uIiwiZnJhY193aWR0aCIsInNjYW5fY2FtbF9mbG9hdCIsInNjYW5fc3RyaW5nIiwic3RwIiwiaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciIsImNoZWNrX25leHRfY2hhciIsImNoZWNrX25leHRfY2hhcl9mb3JfY2hhciIsImNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIiwic2Nhbl9iYWNrc2xhc2hfY2hhciIsImMwIiwiZ2V0X2RpZ2l0JDAiLCJjMSQwIiwiYzIkMCIsImdldF9kaWdpdCIsInNjYW5fY2FtbF9zdHJpbmciLCJmaW5kX3N0b3AkMCIsInNraXBfc3BhY2VzIiwiZmluZF9zdG9wIiwic2Nhbl9jaGFyc19pbl9jaGFyX3NldCIsInNjYW5faW5kaWMiLCJzY2FuX2NoYXJzIiwic2NhbmZfYmFkX2lucHV0Iiwid2lkdGhfb2ZfcGFkX29wdCIsInN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQiLCJmbXRpbmciLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzJDAiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzJDAiLCJyZWFkZXIiLCJuZXdfayIsInJlYWRlcnNfcmVzdCIsInRha2VfZm9ybWF0X3JlYWRlcnMiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIiwibWFrZV9zY2FuZiIsInJlYWRlcnMiLCJzY2FuJDAiLCJzdHJfcmVzdCIsInBhZF9wcmVjX3NjYW5mIiwic2NhbiQxIiwic2NhbiQyIiwic2NhbiIsInNjYW4kMyIsInNjYW4kNCIsImNvbnYkMCIsInNjYW4kNSIsImNvbnYkMSIsInNjYW4kNiIsImNvbnYkMiIsInNjYW4kNyIsInNjYW4kOCIsImZtdGluZ19saXQkMCIsInN0cCQwIiwicyQyIiwic3RyX3Jlc3QkMCIsImFyZ19yZXN0Iiwia3NjYW5mIiwiZWYiLCJleGMkMCIsImV4YyIsImFyZ3MkMSIsImFyZ3MkMCIsImJzY2FuZiIsImtzc2NhbmYiLCJzc2NhbmYiLCJzY2FuZiIsImJzY2FuZl9mb3JtYXQiLCJmb3JtYXQiLCJzc2NhbmZfZm9ybWF0IiwiZm9ybWF0X2Zyb21fc3RyaW5nIiwidW5lc2NhcGVkIiwia2ZzY2FuZiIsImZzY2FuZiIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwiaW5pdGlhbF9vYmplY3Rfc2l6ZSIsImR1bW15X2l0ZW0iLCJwdWJsaWNfbWV0aG9kX2xhYmVsIiwidGFnIiwiY29tcGFyZSQwIiwiY29tcGFyZSQxIiwiZHVtbXlfdGFibGUiLCJ0YWJsZV9jb3VudCIsImR1bW15X21ldCIsImZpdF9zaXplIiwibmV3X3RhYmxlIiwicHViX2xhYmVscyIsIm1ldGhvZHMiLCJhcnJheSIsIm5ld19zaXplIiwib2xkX3NpemUiLCJuZXdfYnVjayIsIm1ldGhvZF9jb3VudCIsImluc3RfdmFyX2NvdW50IiwibmV3X21ldGhvZCIsInRhYmxlIiwiZ2V0X21ldGhvZF9sYWJlbCIsImxhYmVsIiwiZ2V0X21ldGhvZF9sYWJlbHMiLCJuYW1lcyIsInNldF9tZXRob2QiLCJlbGVtZW50IiwiZ2V0X21ldGhvZCIsImFyciIsIm5hcnJvdyIsInZhcnMiLCJ2aXJ0X21ldGhzIiwiY29uY3JfbWV0aHMiLCJ2YXJzJDAiLCJ2aXJ0X21ldGhzJDAiLCJjb25jcl9tZXRocyQwIiwidmlydF9tZXRoX2xhYnMiLCJjb25jcl9tZXRoX2xhYnMiLCJsYWIiLCJ0dmFycyIsImJ5X25hbWUiLCJieV9sYWJlbCIsIm1ldCIsImhtIiwid2lkZW4iLCJzYXZlZF92YXJzIiwic2F2ZWRfaGlkZGVuX21ldGhzIiwibmV3X3ZhcmlhYmxlIiwidG9fYXJyYXkiLCJuZXdfbWV0aG9kc192YXJpYWJsZXMiLCJtZXRocyIsInZhbHMiLCJtZXRocyQwIiwibm1ldGhzIiwibnZhbHMiLCJnZXRfdmFyaWFibGUiLCJnZXRfdmFyaWFibGVzIiwiYWRkX2luaXRpYWxpemVyIiwiY3JlYXRlX3RhYmxlIiwicHVibGljX21ldGhvZHMiLCJ0YWdzIiwiaW5pdF9jbGFzcyIsImluaGVyaXRzIiwiY2xhIiwic3VwZXIkMCIsIm5tIiwibWFrZV9jbGFzcyIsInB1Yl9tZXRocyIsImNsYXNzX2luaXQiLCJlbnZfaW5pdCIsIm1ha2VfY2xhc3Nfc3RvcmUiLCJpbml0X3RhYmxlIiwiZHVtbXlfY2xhc3MiLCJsb2MiLCJ1bmRlZiIsImNyZWF0ZV9vYmplY3QiLCJjcmVhdGVfb2JqZWN0X29wdCIsIm9ial8wIiwiaXRlcl9mIiwicnVuX2luaXRpYWxpemVycyIsImluaXRzIiwicnVuX2luaXRpYWxpemVyc19vcHQiLCJjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGkiLCJidWlsZF9wYXRoIiwia2V5cyIsImxvb2t1cF90YWJsZXMiLCJyb290Iiwicm9vdF9kYXRhIiwidGFibGVzJDAiLCJ0YWJsZXMkMSIsInRhYmxlc19kYXRhIiwibmV3X2NhY2hlIiwic2V0X21ldGhvZHMiLCJjbG8iLCJ4JDIwIiwiY2xvJDAiLCJuJDM4IiwiZSQxMCIsIm4kMzciLCJuJDM2IiwibiQyIiwibiQzNSIsImYkMjAiLCJ4JDE5IiwibiQzIiwiZiQxOSIsIm4kMzQiLCJuJDQiLCJmJDE4IiwiZSQ5IiwibiQzMyIsIm4kNSIsImYkMTciLCJuJDMyIiwiZiQxNiIsIngkMTgiLCJ5JDAiLCJuJDYiLCJmJDE1IiwieCQxNyIsIm4kMzEiLCJ4JDMiLCJuJDciLCJmJDE0IiwieCQxNiIsImUkOCIsIm4kMzAiLCJ4JDQiLCJuJDgiLCJmJDEzIiwieCQxNSIsIm4kMjkiLCJuJDkiLCJ4JDUiLCJmJDEyIiwibiQyOCIsIngkMTQiLCJmJDgiLCJlJDIiLCJuJDEwIiwieCQ2IiwiZiQxMSIsImUkNyIsIm4kMjciLCJ4JDEzIiwiZiQ5IiwibiQxMSIsIngkNyIsImYkMTAiLCJuJDI2IiwieCQxMiIsIm4kMTIiLCJ4JDgiLCJuJDI1IiwieCQxMSIsIm4kMTMiLCJuJDI0IiwibSQxMiIsIm4kMTQiLCJlJDMiLCJuJDIzIiwiZSQ2IiwibSQxMSIsIm4kMTUiLCJtJDEiLCJuJDIyIiwibSQxMCIsIm0kMiIsIngkOSIsIm0kOSIsIngkMTAiLCJtJDMiLCJuJDE2IiwibSQ4IiwibiQyMSIsIm0kNCIsImUkNCIsIm4kMTciLCJtJDciLCJlJDUiLCJuJDIwIiwibSQ1IiwibiQxOCIsIm0kNiIsIm4kMTkiLCJpbml0X21vZF9ibG9jayIsImNvbXBzJDAiLCJtb2R1Iiwic2hhcGUiLCJmbiQwIiwiY29tcHMiLCJpbml0X21vZCIsInVwZGF0ZV9tb2RfYmxvY2siLCJjbCIsInVwZGF0ZV9tb2QiLCJpbml0aWFsX2J1ZmZlciIsImJ1ZmZlciIsImJ1ZnBvcyIsInJlc2V0X2J1ZmZlciIsInN0b3JlIiwibmV3YnVmZmVyIiwiZ2V0X3N0cmluZyIsIm1ha2VfbGV4ZXIiLCJrZXl3b3JkcyIsImt3ZF90YWJsZSIsImlkZW50X29yX2tleXdvcmQiLCJrZXl3b3JkX29yX2Vycm9yIiwibmV4dF90b2tlbiIsImVzY2FwZSIsImNvbW1lbnQiLCJudW1iZXIiLCJpZGVudDIiLCJleHBvbmVudF9wYXJ0IiwiZW5kX2V4cG9uZW50X3BhcnQiLCJjMyIsImhrZXkiLCJjbGVhbiIsImRvX2J1Y2tldCIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJuZXdfZCIsImJ1Y2tldF9sZW5ndGhfYWxpdmUiLCJzdGF0c19hbGl2ZSIsImdldF9kYXRhX2NvcHkiLCJzZXRfZGF0YSIsInVuc2V0X2RhdGEiLCJjaGVja19kYXRhIiwiYmxpdF9kYXRhIiwic2V0X2tleV9kYXRhIiwiZ2V0X2tleTEiLCJnZXRfa2V5MV9jb3B5Iiwic2V0X2tleTEiLCJ1bnNldF9rZXkxIiwiY2hlY2tfa2V5MSIsImdldF9rZXkyIiwiZ2V0X2tleTJfY29weSIsInNldF9rZXkyIiwidW5zZXRfa2V5MiIsImNoZWNrX2tleTIiLCJibGl0X2tleTEiLCJibGl0X2tleTIiLCJibGl0X2tleTEyIiwiZ2V0X2RhdGEkMCIsImdldF9kYXRhX2NvcHkkMCIsInNldF9kYXRhJDAiLCJ1bnNldF9kYXRhJDAiLCJjaGVja19kYXRhJDAiLCJibGl0X2RhdGEkMCIsImsyJDAiLCJrMSQwIiwiZXF1YWwkMCIsImNyZWF0ZSQxIiwiZ2V0X2tleSQwIiwiZ2V0X2tleV9jb3B5JDAiLCJzZXRfa2V5JDAiLCJ1bnNldF9rZXkkMCIsImNoZWNrX2tleSQwIiwiYmxpdF9rZXkkMCIsImdldF9kYXRhJDEiLCJnZXRfZGF0YV9jb3B5JDEiLCJzZXRfZGF0YSQxIiwidW5zZXRfZGF0YSQxIiwiY2hlY2tfZGF0YSQxIiwiYmxpdF9kYXRhJDEiLCJraSIsImswIiwibnVsbCQwIiwiY3VycmVudF9kaXJfbmFtZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZXF1b3RlIiwibnVsbCQxIiwiY3VycmVudF9kaXJfbmFtZSQwIiwicGFyZW50X2Rpcl9uYW1lJDAiLCJkaXJfc2VwJDAiLCJudWxsJDIiLCJjdXJyZW50X2Rpcl9uYW1lJDEiLCJwYXJlbnRfZGlyX25hbWUkMSIsImRpcl9zZXAkMSIsImdlbmVyaWNfYmFzZW5hbWUiLCJpc19kaXJfc2VwIiwiZ2VuZXJpY19kaXJuYW1lIiwiaXNfcmVsYXRpdmUiLCJpc19pbXBsaWNpdCIsImNoZWNrX3N1ZmZpeCIsInN1ZmYiLCJjaG9wX3N1ZmZpeF9vcHQiLCJsZW5fZiIsInRlbXBfZGlyX25hbWUiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQwIiwibG9vcCQwIiwibG9vcF9icyIsImFkZF9icyIsInF1b3RlX2NtZF9maWxlbmFtZSIsInF1b3RlX2NvbW1hbmQkMCIsImRyaXZlX2FuZF9wYXRoIiwiZGlybmFtZSQwIiwicGF0aCIsImRyaXZlIiwiZGlyIiwiYmFzZW5hbWUkMCIsImJhc2VuYW1lJDEiLCJkaXJuYW1lJDEiLCJudWxsJDMiLCJjdXJyZW50X2Rpcl9uYW1lJDIiLCJwYXJlbnRfZGlyX25hbWUkMiIsImRpcl9zZXAkMiIsImlzX2Rpcl9zZXAkMSIsImlzX3JlbGF0aXZlJDEiLCJpc19pbXBsaWNpdCQxIiwiY2hlY2tfc3VmZml4JDEiLCJjaG9wX3N1ZmZpeF9vcHQkMSIsInRlbXBfZGlyX25hbWUkMSIsInF1b3RlJDEiLCJxdW90ZV9jb21tYW5kJDEiLCJiYXNlbmFtZSQyIiwiZGlybmFtZSQyIiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiaTAiLCJleHRlbnNpb24iLCJjaG9wX2V4dGVuc2lvbiIsInJlbW92ZV9leHRlbnNpb24iLCJ0ZW1wX2ZpbGVfbmFtZSIsInRlbXBfZGlyIiwicm5kIiwiY3VycmVudF90ZW1wX2Rpcl9uYW1lIiwic2V0X3RlbXBfZGlyX25hbWUiLCJnZXRfdGVtcF9kaXJfbmFtZSIsInRlbXBfZmlsZSIsIm9wZW5fdGVtcF9maWxlIiwic3RoJDAiLCJwZXJtcyIsInN0aCQxIiwibmVnIiwiY29uaiIsIm11bCIsImRpdiIsImludiIsIm5vcm0yIiwibm9ybSIsInEkMCIsInBvbGFyIiwic3FydCIsInckMCIsImV4cCIsImxvZyIsInBvdyIsImZsb2F0MzIiLCJmbG9hdDY0IiwiaW50OF9zaWduZWQiLCJpbnQ4X3Vuc2lnbmVkIiwiaW50MTZfc2lnbmVkIiwiaW50MTZfdW5zaWduZWQiLCJjb21wbGV4MzIiLCJjb21wbGV4NjQiLCJraW5kX3NpemVfaW5fYnl0ZXMiLCJjX2xheW91dCIsImZvcnRyYW5fbGF5b3V0IiwiY2xvb3AiLCJpZHgiLCJjb2wiLCJmbG9vcCIsImxheW91dCIsImRpbXMiLCJzaXplX2luX2J5dGVzIiwic2l6ZV9pbl9ieXRlcyQwIiwib2ZfdmFsdWUiLCJkaW0iLCJzaXplX2luX2J5dGVzJDEiLCJzbGljZSIsImluaXQkMCIsIm9mX2FycmF5IiwiYmEiLCJkaW0xIiwiZGltMiIsInNpemVfaW5fYnl0ZXMkMiIsInNsaWNlX2xlZnQiLCJzbGljZV9yaWdodCIsImluaXQkMSIsIm9mX2FycmF5JDAiLCJyb3ciLCJjcmVhdGUkMiIsImRpbTMiLCJzaXplX2luX2J5dGVzJDMiLCJzbGljZV9sZWZ0XzEiLCJzbGljZV9yaWdodF8xIiwic2xpY2VfbGVmdF8yIiwic2xpY2VfcmlnaHRfMiIsImluaXQkMiIsIm9mX2FycmF5JDEiLCJhcnJheTBfb2ZfZ2VuYXJyYXkiLCJhcnJheTFfb2ZfZ2VuYXJyYXkiLCJhcnJheTJfb2ZfZ2VuYXJyYXkiLCJhcnJheTNfb2ZfZ2VuYXJyYXkiLCJyZXNoYXBlXzAiLCJyZXNoYXBlXzEiLCJyZXNoYXBlXzIiLCJyZXNoYXBlXzMiLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJyYWlzZSIsIm1heCIsIngiLCJ5IiwibWluIiwiZXF1YWwiLCJlcXVhbCQwIiwibWF4JDAiLCJtaW4kMCIsImdsb2JhbCIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwicmV0dXJuJDAiLCJtYXAiLCJmIiwiYmluZCIsInRlc3QiLCJpdGVyIiwiY2FzZSQwIiwiZyIsImdldCIsIm9wdGlvbiIsIngkMCIsInRvX29wdGlvbiIsInJldHVybiQxIiwibWFwJDAiLCJiaW5kJDAiLCJ0ZXN0JDAiLCJpdGVyJDAiLCJjYXNlJDEiLCJnZXQkMCIsIm9wdGlvbiQwIiwidG9fb3B0aW9uJDAiLCJjb2VyY2UiLCJjb2VyY2Vfb3B0IiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5mYyIsIm5mZCIsIm5ma2MiLCJuZmtkIiwic3RyaW5nX2NvbnN0ciIsInJlZ0V4cCIsIm9iamVjdF9jb25zdHJ1Y3RvciIsIm9iamVjdF9rZXlzIiwibyIsImFycmF5X2NvbnN0cnVjdG9yIiwiYXJyYXlfZ2V0IiwiYXJyYXlfc2V0IiwiYXJyYXlfbWFwIiwiYSIsImlkeCIsImFycmF5X21hcGkiLCJzdHJfYXJyYXkiLCJtYXRjaF9yZXN1bHQiLCJkYXRlX2NvbnN0ciIsIm1hdGgiLCJlcnJvcl9jb25zdHIiLCJleG5fd2l0aF9qc19iYWNrdHJhY2UiLCJuYW1lIiwibWVzc2FnZSIsInN0YWNrIiwidG9fc3RyaW5nIiwiZSIsInJhaXNlX2pzX2Vycm9yIiwic3RyaW5nX29mX2Vycm9yIiwiSlNPTiIsImRlY29kZVVSSSIsInMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlbmNvZGVVUkkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJ1bmVzY2FwZSIsImlzTmFOIiwiaSIsInBhcnNlSW50IiwicyQwIiwicGFyc2VGbG9hdCIsImV4cG9ydF9qcyIsImZpZWxkIiwiZXhwb3J0JDAiLCJleHBvcnRfYWxsIiwib2JqIiwia2V5cyIsImtleSIsImxpc3Rfb2Zfbm9kZUxpc3QiLCJsZW5ndGgiLCJhY2MiLCJpJDAiLCJhY2MkMCIsImkkMSIsImRpc2Nvbm5lY3RlZCIsInByZWNlZGluZyIsImZvbGxvd2luZyIsImNvbnRhaW5zIiwiY29udGFpbmVkX2J5IiwiaW1wbGVtZW50YXRpb25fc3BlY2lmaWMiLCJoYXMiLCJ0IiwibWFzayIsImFkZCIsImFwcGVuZENoaWxkIiwicCIsIm4iLCJyZW1vdmVDaGlsZCIsInJlcGxhY2VDaGlsZCIsImluc2VydEJlZm9yZSIsIm5vZGVUeXBlIiwidDEzIiwiY2FzdCIsInQxNCIsImVsZW1lbnQiLCJ0ZXh0IiwiYXR0ciIsIm5vX2hhbmRsZXIiLCJoYW5kbGVyIiwicmVzIiwiZnVsbF9oYW5kbGVyIiwidGhpcyQwIiwiaW52b2tlX2hhbmRsZXIiLCJldmVudCIsImV2ZW50VGFyZ2V0IiwibWFrZSIsImFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyIsInQyOCIsInR5cCIsImNhcHR1cmUiLCJvbmNlIiwicGFzc2l2ZSIsImgiLCJiIiwiZXYiLCJjYWxsYmFjayIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYXB0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlkIiwicHJldmVudERlZmF1bHQiLCJjcmVhdGVDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwib3B0X2l0ZXIiLCJjb25zdHIiLCJhcnJheUJ1ZmZlciIsImludDhBcnJheSIsInVpbnQ4QXJyYXkiLCJpbnQxNkFycmF5IiwidWludDE2QXJyYXkiLCJpbnQzMkFycmF5IiwidWludDMyQXJyYXkiLCJmbG9hdDMyQXJyYXkiLCJmbG9hdDY0QXJyYXkiLCJzZXQiLCJ2IiwidW5zYWZlX2dldCIsImRhdGFWaWV3Iiwib2ZfYXJyYXlCdWZmZXIiLCJhYiIsInVpbnQ4IiwiYmxvYl9jb25zdHIiLCJmaWx0ZXJfbWFwIiwicSIsInYkMCIsImJsb2JfcmF3IiwiY29udGVudFR5cGUiLCJlbmRpbmdzIiwib3B0aW9ucyIsIm9wdGlvbnMkMCIsImJsb2JfZnJvbV9zdHJpbmciLCJibG9iX2Zyb21fYW55IiwibCIsImEkMCIsImwkMCIsImZpbGVuYW1lIiwibmFtZSQwIiwiZG9jX2NvbnN0ciIsImRvY3VtZW50IiwiYmxvYiIsInN0cmluZyIsImxvYWRzdGFydCIsInByb2dyZXNzIiwiYWJvcnQiLCJlcnJvciIsImxvYWQiLCJsb2FkZW5kIiwiZmlsZVJlYWRlciIsIm9uSUUiLCJjbGljayIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsIm9yaWdpbiIsIndpbmRvdyIsImdldEVsZW1lbnRCeUlkIiwicG5vZGUiLCJnZXRFbGVtZW50QnlJZF9leG4iLCJnZXRFbGVtZW50QnlJZF9vcHQiLCJnZXRFbGVtZW50QnlJZF9jb2VyY2UiLCJjcmVhdGVFbGVtZW50IiwiZG9jIiwidW5zYWZlQ3JlYXRlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZWx0IiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwidDU0IiwidW5zYWZlQ29lcmNlIiwidGFnIiwidDU1IiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJwcmUiLCJzY3JpcHQiLCJzZWxlY3QkMCIsInN0eWxlIiwidGFibGUiLCJ0Ym9keSIsInRkIiwidGV4dGFyZWEiLCJ0Zm9vdCIsInRoIiwidGhlYWQiLCJ0aXRsZSIsInRyIiwidWwiLCJhdWRpbyIsInZpZGVvIiwidW5zYWZlQ29lcmNlRXZlbnQiLCJtb3VzZUV2ZW50Iiwia2V5Ym9hcmRFdmVudCIsIndoZWVsRXZlbnQiLCJtb3VzZVNjcm9sbEV2ZW50IiwicG9wU3RhdGVFdmVudCIsIm1lc3NhZ2VFdmVudCIsInBhcmFtIiwiZXZlbnRSZWxhdGVkVGFyZ2V0IiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uIiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJDAiLCJlbGVtZW50Q2xpZW50UG9zaXRpb24iLCJnZXREb2N1bWVudFNjcm9sbCIsImJ1dHRvblByZXNzZWQiLCJhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGgiLCJkeCIsImR5IiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXIiLCJ0cnlfY29kZSIsInRyeV9rZXlfY29kZV9sZWZ0IiwidHJ5X2tleV9jb2RlX3JpZ2h0IiwidHJ5X2tleV9jb2RlX251bXBhZCIsInRyeV9rZXlfY29kZV9ub3JtYWwiLCJtYWtlX3VuaWRlbnRpZmllZCIsInJ1bl9uZXh0IiwidmFsdWUiLCJzeW1ib2wiLCJvZl9ldmVudCIsImNoYXJfb2ZfaW50IiwiZW1wdHlfc3RyaW5nIiwibm9uZSIsIm9mX2V2ZW50JDAiLCJlbGVtZW50JDAiLCJ0YWdnZWQiLCJ0MTA1Iiwib3B0X3RhZ2dlZCIsInRhZ2dlZEV2ZW50Iiwib3B0X3RhZ2dlZEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiYyIsInJlcSIsIm5vdyIsImxhc3QiLCJkdCIsImR0JDAiLCJoYXNQdXNoU3RhdGUiLCJoYXNQbGFjZWhvbGRlciIsImhhc1JlcXVpcmVkIiwib3ZlcmZsb3dfbGltaXQiLCJzZXRUaW1lb3V0IiwibG9vcCIsInJlbWFpbiIsInN0ZXAiLCJjYiIsImNsZWFyVGltZW91dCIsImpzX2FycmF5X29mX2NvbGxlY3Rpb24iLCJmb3JtRGF0YSIsImZvcm1EYXRhX2Zvcm0iLCJoYXZlX2NvbnRlbnQiLCJmb3JtX2VsZW1lbnRzIiwiaSQyIiwic3RoIiwibmFtZSQxIiwibGlzdCIsImZpbGUiLCJhcHBlbmQiLCJmb3JtX2NvbnRlbnRzIiwiZm9ybV9lbHQiLCJlbXB0eV9mb3JtX2NvbnRlbnRzIiwicG9zdF9mb3JtX2NvbnRlbnRzIiwiY29udGVudHMiLCJnZXRfZm9ybV9jb250ZW50cyIsInJlYWR5c3RhdGVjaGFuZ2UiLCJ0aW1lb3V0Iiwid29ya2VyIiwiY3JlYXRlIiwiaW1wb3J0X3NjcmlwdHMiLCJzY3JpcHRzIiwic2V0X29ubWVzc2FnZSIsImpzX2hhbmRsZXIiLCJwb3N0X21lc3NhZ2UiLCJtc2ciLCJ3ZWJTb2NrZXQiLCJpc19zdXBwb3J0ZWQiLCJkZWZhdWx0Q29udGV4dEF0dHJpYnV0ZXMiLCJ3ZWJnbGNvbnRleHRsb3N0Iiwid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIiwiZ2V0Q29udGV4dCIsImN0eCIsImdldENvbnRleHRXaXRoQXR0cmlidXRlcyIsImF0dHJpYnMiLCJyZWdleHAiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3dpdGhfZmxhZyIsImJsdW50X3N0cl9hcnJheV9nZXQiLCJzdHJpbmdfbWF0Y2giLCJzZWFyY2giLCJyZXNfcHJlIiwibWF0Y2hlZF9zdHJpbmciLCJyIiwibWF0Y2hlZF9ncm91cCIsInF1b3RlX3JlcGxfcmUiLCJxdW90ZV9yZXBsIiwiZ2xvYmFsX3JlcGxhY2UiLCJzX2J5IiwicmVwbGFjZV9maXJzdCIsInQyOSIsImZsYWdzIiwibGlzdF9vZl9qc19hcnJheSIsImlkeCQxIiwiYWNjdSIsImlkeCQwIiwiYWNjdSQwIiwic3BsaXQiLCJib3VuZGVkX3NwbGl0IiwicXVvdGVfcmUiLCJxdW90ZSIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImludGVycnVwdCIsInBsdXNfcmUiLCJ1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyIsInVybGRlY29kZSIsInVybGVuY29kZSIsIm9wdCIsIndpdGhfcGx1cyIsImRlZmF1bHRfaHR0cF9wb3J0IiwiZGVmYXVsdF9odHRwc19wb3J0IiwicGF0aF9vZl9wYXRoX3N0cmluZyIsImF1eCIsImoiLCJ3b3JkIiwiZW5jb2RlX2FyZ3VtZW50cyIsImRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIiwibGVuIiwiaW5kZXgiLCJkZWNvZGVfYXJndW1lbnRzIiwidXJsX3JlIiwiZmlsZV9yZSIsInVybF9vZl9qc19zdHJpbmciLCJoYW5kbGUiLCJwcm90X3N0cmluZyIsInNzbCIsInBhdGhfc3RyIiwidXJsIiwidXJsX29mX3N0cmluZyIsInN0cmluZ19vZl91cmwiLCJmcmFnIiwiYXJncyIsInBhdGgiLCJwb3J0IiwiaG9zdCIsImZyYWckMCIsImFyZ3MkMCIsInBhdGgkMCIsInBvcnQkMCIsImhvc3QkMCIsImZyYWckMSIsImFyZ3MkMSIsInBhdGgkMSIsInByb3RvY29sIiwicGF0aF9zdHJpbmciLCJhcmd1bWVudHMkMCIsImdldF9mcmFnbWVudCIsInNldF9mcmFnbWVudCIsInUiLCJhc19zdHJpbmciLCJ1cGRhdGVfZmlsZSIsImNvbnRlbnQiLCJvYyIsInNldF9jaGFubmVsX2ZsdXNoZXIiLCJvdXRfY2hhbm5lbCIsImYkMCIsInNldF9jaGFubmVsX2ZpbGxlciIsImluX2NoYW5uZWwiLCJtb3VudCIsInByZWZpeCIsInVubW91bnQiLCJqc19vZl9vY2FtbF92ZXJzaW9uIiwiZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMiLCJyZXNpemVPYnNlcnZlciIsIm9ic2VydmUiLCJub2RlIiwiYm94Iiwib2JzIiwicGVyZm9ybWFuY2VPYnNlcnZlciIsImVudHJ5X3R5cGVzIiwiZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCIsIm11dGF0aW9uT2JzZXJ2ZXIiLCJjaGlsZF9saXN0IiwiYXR0cmlidXRlcyIsImNoYXJhY3Rlcl9kYXRhIiwic3VidHJlZSIsImF0dHJpYnV0ZV9vbGRfdmFsdWUiLCJjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUiLCJhdHRyaWJ1dGVfZmlsdGVyIiwiayIsInJlbW92ZSIsImZpbmQiLCJqc29uIiwicmV2aXZlciIsImlucHV0X3Jldml2ZXIiLCJ1bnNhZmVfaW5wdXQiLCJtbEludDY0X2NvbnN0ciIsIm91dHB1dF9yZXZpdmVyIiwib3V0cHV0Iiwic3RyaW5nX29mX25hbWUiLCJuYW1lX29mX3N0cmluZyIsInJnYl9vZl9uYW1lIiwicmdiIiwiaHNsIiwic3RyaW5nX29mX3QiLCJiJDAiLCJnJDAiLCJyJDAiLCJiJDEiLCJnJDEiLCJyJDEiLCJiJDIiLCJnJDIiLCJyJDIiLCJhJDEiLCJoJDAiLCJoZXhfb2ZfcmdiIiwiYmx1ZSIsImdyZWVuIiwicmVkIiwiaW5fcmFuZ2UiLCJqc190X29mX2pzX3N0cmluZyIsInJnYl9yZSIsInJnYl9wY3RfcmUiLCJyZ2JhX3JlIiwicmdiYV9wY3RfcmUiLCJoc2xfcmUiLCJoc2xhX3JlIiwianMiLCJjbiIsIm1sIiwiZmFpbCIsInJlX3JnYiIsInJlX3JnYl9wY3QiLCJyZV9oc2wiLCJpX29mX3NfbyIsImZfb2ZfcyIsImFscGhhIiwicmVkJDAiLCJncmVlbiQwIiwiYmx1ZSQwIiwiYWxwaGEkMCIsInJlZCQxIiwiZ3JlZW4kMSIsImJsdWUkMSIsImFscGhhJDEiLCJzdHJpbmdfb2ZfdCQwIiwiZiQxIiwiZiQyIiwiZiQzIiwiZiQ0IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiZiQ4IiwiZiQ5IiwiZiQxMCIsImYkMTEiLCJmJDEyIiwianMkMCIsIm1sJDAiLCJyZSIsInN0cmluZ19vZl90JDEiLCJqcyQxIiwibWwkMSIsImxpc3RlbiIsInRhcmdldCIsInN0b3BfbGlzdGVuIiwieG1sbnMiLCJjcmVhdGVBbHRHbHlwaCIsImNyZWF0ZUFsdEdseXBoRGVmIiwiY3JlYXRlQWx0R2x5cGhJdGVtIiwiY3JlYXRlQW5pbWF0ZSIsImNyZWF0ZUFuaW1hdGVDb2xvciIsImNyZWF0ZUFuaW1hdGVNb3Rpb24iLCJjcmVhdGVBbmltYXRlVHJhbnNmb3JtIiwiY3JlYXRlQ2lyY2xlIiwiY3JlYXRlQ2xpcFBhdGgiLCJjcmVhdGVDdXJzb3IiLCJjcmVhdGVEZWZzIiwiY3JlYXRlRGVzYyIsImNyZWF0ZUVsbGlwc2UiLCJjcmVhdGVGaWx0ZXIiLCJjcmVhdGVGb250IiwiY3JlYXRlRm9udEZhY2UiLCJjcmVhdGVGb250RmFjZUZvcm1hdCIsImNyZWF0ZUZvbnRGYWNlTmFtZSIsImNyZWF0ZUZvbnRGYWNlU3JjIiwiY3JlYXRlRm9udEZhY2VVcmkiLCJjcmVhdGVGb3JlaWduT2JqZWN0IiwiY3JlYXRlRyIsImNyZWF0ZUdseXBoIiwiY3JlYXRlR2x5cGhSZWYiLCJjcmVhdGVoa2VybiIsImNyZWF0ZUltYWdlIiwiY3JlYXRlTGluZUVsZW1lbnQiLCJjcmVhdGVMaW5lYXJFbGVtZW50IiwiY3JlYXRlTWFzayIsImNyZWF0ZU1ldGFEYXRhIiwiY3JlYXRlTWlzc2luZ0dseXBoIiwiY3JlYXRlTVBhdGgiLCJjcmVhdGVQYXRoIiwiY3JlYXRlUGF0dGVybiIsImNyZWF0ZVBvbHlnb24iLCJjcmVhdGVQb2x5bGluZSIsImNyZWF0ZVJhZGlhbGdyYWRpZW50IiwiY3JlYXRlUmVjdCIsImNyZWF0ZVNldCIsImNyZWF0ZVN0b3AiLCJjcmVhdGVTdmciLCJjcmVhdGVTd2l0Y2giLCJjcmVhdGVTeW1ib2wiLCJjcmVhdGVUZXh0RWxlbWVudCIsImNyZWF0ZVRleHRwYXRoIiwiY3JlYXRlVHJlZiIsImNyZWF0ZVRzcGFuIiwiY3JlYXRlVXNlIiwiY3JlYXRlVmlldyIsImNyZWF0ZXZrZXJuIiwic3ZnX2VsZW1lbnQiLCJ0OCIsImFsdEdseXBoIiwiYWx0R2x5cGhEZWYiLCJhbHRHbHlwaEl0ZW0iLCJhbmltYXRlIiwiYW5pbWF0ZUNvbG9yIiwiYW5pbWF0ZU1vdGlvbiIsImFuaW1hdGVUcmFuc2Zvcm0iLCJjaXJjbGUiLCJjbGlwUGF0aCIsImN1cnNvciIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImZpbHRlciIsImZvbnQiLCJmb250RmFjZSIsImZvbnRGYWNlRm9ybWF0IiwiZm9udEZhY2VOYW1lIiwiZm9udEZhY2VTcmMiLCJmb250RmFjZVVyaSIsImZvcmVpZ25PYmplY3QiLCJnbHlwaCIsImdseXBoUmVmIiwiaGtlcm4iLCJpbWFnZSIsImxpbmVFbGVtZW50IiwibGluZWFyRWxlbWVudCIsIm1ldGFEYXRhIiwibWlzc2luZ0dseXBoIiwibVBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsZ3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInN2ZyIsInN3aXRjaCQwIiwidGV4dEVsZW1lbnQiLCJ0ZXh0cGF0aCIsInRyZWYiLCJ0c3BhbiIsInVzZSIsInZpZXciLCJ2a2VybiIsIndpdGhDcmVkZW50aWFscyIsImV2ZW50U291cmNlIiwiZXZlbnRTb3VyY2Vfb3B0aW9ucyIsImNvbnNvbGUiLCJlbXB0eV9wb3NpdGlvbl9vcHRpb25zIiwiZ2VvbG9jYXRpb24iLCJlbXB0eV9pbnRlcnNlY3Rpb25fb2JzZXJ2ZXJfb3AiLCJpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmUiLCJvYmplY3Rfb3B0aW9ucyIsIm9wdGlvbnMkMSIsIm9wdGlvbnMkMiIsImludGwiLCJjb2xsYXRvcl9jb25zdHIiLCJkYXRlVGltZUZvcm1hdF9jb25zdHIiLCJudW1iZXJGb3JtYXRfY29uc3RyIiwicGx1cmFsUnVsZXNfY29uc3RyIiwiZXF1YWwiLCJ4IiwieSIsImNvbXBhcmUiLCJ0b19pbnQiLCJwcCIsImludGVyc2VjdCIsInN5bWJvbCIsImxldHRlciIsIm5vdF9sZXR0ZXIiLCJkdW1teSIsImluZXhpc3RhbnQiLCJuZXdsaW5lIiwibGFzdG5ld2xpbmUiLCJzZWFyY2hfYm91bmRhcnkiLCJmcm9tX2NoYXIiLCJzZXhwIiwiZm10IiwicyIsInBhaXIiLCJwcDEiLCJwcDIiLCJ2MiIsInYxIiwidHJpcGxlIiwicHAzIiwidjMiLCJvcHRpbnQiLCJpIiwicXVvdGUiLCJwcF9vbGlzdCIsInBwX2VsZW0iLCJwcF9zdHJfbGlzdCIsInRvX3RvX3N0cmluZyIsImIiLCJjYW55IiwidW5pb24iLCJsJDAiLCJsIiwibCQyIiwibCQxIiwiciIsImMyIiwiYzEiLCJyJDAiLCJjMiQwIiwiYzEkMCIsImwkMyIsImwkNCIsImludGVyIiwiZGlmZiIsInIkMSIsInNpbmdsZSIsImMiLCJhZGQiLCJzZXEiLCJjJDAiLCJvZmZzZXQiLCJvIiwiZW1wdHkiLCJtZW0iLCJzJDAiLCJyZW0iLCJoYXNoX3JlYyIsImoiLCJoYXNoIiwicHJpbnRfb25lIiwiY2giLCJpdGVyIiwidCIsImYiLCJ0JDAiLCJ4cyIsIm9uZV9jaGFyIiwidiIsInUiLCJmb2xkX3JpZ2h0IiwiaW5pdCIsImNzaW5nbGUiLCJpc19lbXB0eSIsInByZXBlbmQiLCJ4JDAiLCJkIiwiZCQwIiwicGljayIsImdlbiIsImVwc19leHByIiwiaGFzaF9jb21iaW5lIiwiaCIsImFjY3UiLCJtZXJnZV9tYXJrc19vZmZzZXQiLCJvbGQiLCJudyIsIm1lcmdlIiwibSIsImFjY3UkMSIsImFjY3UkMiIsImEiLCJhY2N1JDAiLCJpZHgiLCJtYXJrcyIsIm1hcmtzX3NldF9pZHgiLCJwcF9tYXJrcyIsInBwX3NlbSIsImsiLCJwcF9yZXBfa2luZCIsImUiLCJlJDAiLCJlJDEiLCJlJDIiLCJrJDAiLCJlJDMiLCJpJDAiLCJmaXJzdCIsInJlcyIsImNyZWF0ZV9pZHMiLCJta19leHByIiwiaWRzIiwiZGVmIiwiZW1wdHkkMCIsImNzdCIsImFsdCIsImtpbmQiLCJpc19lcHMiLCJleHByIiwiZXBzIiwicmVwIiwic2VtIiwibWFyayIsInBtYXJrIiwiZXJhc2UiLCJtJDAiLCJiZWZvcmUiLCJhZnRlciIsInJlbmFtZSIsInoiLCJ5JDAiLCJnIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwicjEiLCJlMSIsImwxJDEiLCJyMiIsImUyIiwibDIkMSIsInIxJDAiLCJlMSQwIiwibWFya3MxIiwicjIkMCIsImUyJDAiLCJtYXJrczIiLCJyMSQxIiwibWFya3MxJDAiLCJyMiQxIiwibWFya3MyJDAiLCJoYXNoJDAiLCJtYXJrcyQwIiwiYWNjdSQzIiwidHNlcSIsInByaW50X3N0YXRlX3JlYyIsInByaW50X3N0YXRlX2xzdCIsInBwJDAiLCJtayIsImNhdCIsImRlc2MiLCJjcmVhdGUiLCJlcXVhbCQwIiwiaGFzaCQxIiwiY3JlYXRlX3dvcmtpbmdfYXJlYSIsImluZGV4X2NvdW50IiwidyIsIm1hcmtfdXNlZF9pbmRpY2VzIiwidGJsIiwiZnJlZV9pbmRleCIsInRibF9yZWYiLCJsZW4iLCJpZHgkMCIsInJlbW92ZV9tYXRjaGVzIiwic3BsaXRfYXRfbWF0Y2giLCJyZW1vdmVfZHVwbGljYXRlcyIsInByZXYiLCJwcmV2JDAiLCJwcmV2JDEiLCJwcmV2JDIiLCJyJDIiLCJyJDMiLCJ4JDEiLCJwcmV2JDMiLCJyJDQiLCJzZXRfaWR4IiwiZmlsdGVyX21hcmtzIiwiZGVsdGFfMSQwIiwibmV4dF9jYXQiLCJwcmV2X2NhdCIsImRlbHRhXzIkMCIsImRlbHRhXzEiLCJkZWx0YV9zZXEkMCIsInkkMSIsImtpbmQkMCIsInJlcF9raW5kIiwieSQyIiwibWFya3MkMSIsInkkMyIsIm1hcmtzJDIiLCJjYXQkMCIsIm1hcmtzJDMiLCJkZWx0YV8yIiwiZGVsdGFfc2VxIiwiZGVsdGFfNCIsInJlbSQwIiwiZGVsdGEiLCJjaGFyJDAiLCJzdCIsImV4cHIkMCIsInJlZF90ciIsInRyMiIsInN0MiIsInMyIiwidHIxIiwic3QxIiwiczEiLCJwcmVwZW5kX2Rlcml2IiwicmVzdHJpY3QiLCJzJDEiLCJwcmVwZW5kX21hcmtzX2V4cHJfbHN0IiwibSQxIiwiZGVyaXZfMSQwIiwiYWxsX2NoYXJzIiwiY2F0ZWdvcmllcyIsInJlbSQxIiwiZGVyaXZfMiQwIiwiZGVyaXZfMSIsImRlcml2X3NlcSIsInokMCIsInJlbSQyIiwiY2F0JDEiLCJkZXJpdl8yIiwieGwiLCJ6JDEiLCJkZXJpdl80IiwiZGVyaXYiLCJkZXIiLCJleHByJDEiLCJzdGF0dXMiLCJtYSIsInN0JDAiLCJtYWtlIiwiZmxhdHRlbiIsImNtIiwiY29sb3JfcmVwciIsInNwbGl0IiwiZHVtbXlfb2Zmc2V0IiwibTEiLCJwMSIsInAyIiwiZ2V0Iiwic3RhcnQiLCJzdWJzIiwic3RvcCIsInRlc3QiLCJnZXRfb3B0IiwiYWxsX29mZnNldCIsImFsbCIsIm9mZnNldHMiLCJzdHJzIiwibWF0Y2hlcyIsInBwX21hdGNoIiwic3RyIiwibmJfZ3JvdXBzIiwibiIsIm4kMCIsInYkMCIsInYkMSIsIm4kMSIsInVua25vd24iLCJicmVhayQwIiwicHBfcmUiLCJyZSIsImdyb3VwX2NvdW50IiwiZ3JvdXBfbmFtZXMiLCJjYXRlZ29yeSIsImNvbG9yIiwiZHVtbXlfbmV4dCIsInVua25vd25fc3RhdGUiLCJmaW5kX3N0YXRlIiwibmNvbCIsImJyZWFrX3N0YXRlIiwiaW5mbyIsInBvcyIsInZhbGlkYXRlIiwiZ2V0X2NvbG9yIiwic2xlbiIsInNjYW5fc3RyIiwiaW5pdGlhbF9zdGF0ZSIsImdyb3VwcyIsInBvcyQzIiwibGFzdCIsImluZm8kMCIsInN0JDUiLCJwb3MkNCIsInN0JDMiLCJyZWFsX2MiLCJzdCQ0IiwicG9zJDAiLCJwb3MkMSIsInN0JDEiLCJzdCQyIiwicG9zJDIiLCJmaW5hbF9ib3VuZGFyeV9jaGVjayIsImZpbmFsX2NhdCIsInJlcyQwIiwibWF0Y2hfc3RyIiwicGFydGlhbCIsImluaXRpYWxfY2F0Iiwic3RhdHVzJDAiLCJwbWFya3MiLCJub19tYXRjaF9zdGFydHNfYmVmb3JlIiwiY3NlcSIsImNhZGQiLCJ2aWV3IiwidmFyJDAiLCJyZWwiLCJzcSIsInJlJDAiLCJyZSQxIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiaXNfY2hhcnNldCIsImN1cHBlciIsImNsb3dlciIsImNhbHBoYSIsImNkaWdpdCIsImNhbG51bSIsImN3b3JkIiwieDEiLCJ4MiIsIngxJDAiLCJ4MiQwIiwiZXFfbGlzdCIsImoyIiwiaTIiLCJ4MiQxIiwiajEiLCJpMSIsIngxJDEiLCJ4MiQyIiwic2VtMiIsIngxJDIiLCJzZW0xIiwieDIkMyIsImsyIiwieDEkMyIsImsxIiwieDIkNCIsIngxJDQiLCJ4MiQ1IiwieDEkNSIsIngyJDYiLCJ4MSQ2IiwieDIkNyIsIngxJDciLCJsMiQyIiwibDEkMiIsIngyJDgiLCJ4MiQ5IiwieDEkOCIsIngxJDkiLCJtMiIsInNlcXVlbmNlIiwibWVyZ2Vfc2VxdWVuY2VzIiwiZW5mb3JjZV9raW5kIiwiY3IiLCJ0cmFuc2xhdGUiLCJpZ25fY2FzZSIsIm5hbWVzIiwiY2FjaGUiLCJpZ25fZ3JvdXAkMCIsImdyZWVkeSQwIiwidHJhbnNfc2VxIiwibWVyZ2VkX3NlcXVlbmNlcyIsImtpbmQkMSIsImNyJDAiLCJqJDAiLCJraW5kJDIiLCJraW5kJDMiLCJjciQxIiwiZ3JlZWR5JDEiLCJwIiwibmFtZSIsImtpbmQkNCIsImNyJDIiLCJyJDUiLCJraW5kJDUiLCJjciQzIiwiciQ2IiwiaSQxIiwia2luZCQ2IiwiY3IkNCIsImlnbl9ncm91cCIsImdyZWVkeSIsImFzX3NldCIsImhhbmRsZV9jYXNlIiwiaWduX2Nhc2UkMCIsInIkNyIsInIkOCIsInIkOSIsInIkMTAiLCJyJDExIiwiciQxMiIsImwkNSIsInIkMTMiLCJyJDE0IiwiciQxNSIsImFuY2hvcmVkIiwiZXBzaWxvbiIsInJlcG4iLCJyZXAxIiwib3B0IiwiYm93IiwiZW93IiwiYm9sIiwiZW9sIiwid29yZCIsImJvcyIsImVvcyIsIm5vdF9ib3VuZGFyeSIsIndob2xlX3N0cmluZyIsImxlb2wiLCJsb25nZXN0Iiwic2hvcnRlc3QiLCJub25fZ3JlZWR5IiwiZ3JvdXAiLCJub19ncm91cCIsIm5lc3QiLCJzZXQiLCJyZyIsImNvbXBsIiwiYW55Iiwibm90bmwiLCJsb3dlciIsInVwcGVyIiwiYWxwaGEiLCJkaWdpdCIsImFsbnVtIiwid29yZGMiLCJhc2NpaSIsImJsYW5rIiwiY250cmwiLCJncmFwaCIsInByaW50IiwicHVuY3QiLCJzcGFjZSIsInhkaWdpdCIsImNhc2UkMCIsIm5vX2Nhc2UiLCJjb21waWxlIiwicmVnZXhwJDAiLCJyZWdleHAiLCJsbmwiLCJjb2xvcml6ZSIsInJlZ2V4cCQxIiwicmVnZXhwJDIiLCJuZWVkX2xubCIsIm5jb2xvciIsImNvbG9ycyIsImxubCQwIiwibmNvbG9yJDAiLCJpbml0aWFsIiwiZXhlY19pbnRlcm5hbCIsInN0aCIsInN0aCQwIiwiZXhlYyIsInN1YnN0ciIsImV4ZWNfb3B0IiwiZXhlY3AiLCJleGVjX3BhcnRpYWwiLCJleGVjX3BhcnRpYWxfZGV0YWlsZWQiLCJtYXJrZWQiLCJtYXJrX3NldCIsImFsbF9zZXEiLCJsaW1pdCIsImF1eCIsIm1hdGNoZXNfc2VxIiwic3ViIiwic3BsaXRfZnVsbF9zZXEiLCJzdGF0ZSIsIm9sZF9pIiwidGV4dCIsInRleHQkMCIsInN0YXRlJDAiLCJzcGxpdF9zZXEiLCJmaWx0ZXIiLCJzZXEkMCIsInRsIiwic2VxJDEiLCJsaXN0X29mX3NlcSIsInNwbGl0X2Z1bGwiLCJnZW5fb2Zfc2VxIiwic3BsaXRfZ2VuIiwic3BsaXRfZnVsbF9nZW4iLCJhbGxfZ2VuIiwibWF0Y2hlc19nZW4iLCJyZXBsYWNlIiwiYnVmIiwicmVwbGFjaW5nIiwicmVwbGFjZV9zdHJpbmciLCJieSIsIndpdG5lc3MiLCJmcm9tIiwiZ2V0X29mcyIsImdldF9hbGwiLCJnZXRfYWxsX29mcyIsInRlc3QyIiwiYWNjZXB0IiwiYWNjZXB0MiIsImxlZnQiLCJicmFuY2giLCJsZWZ0JDAiLCJsZWZ0JDEiLCJicmFja2V0IiwicyQyIiwiY29tcGlsZV9wYXQiLCJjb21waWxlX3JlZ2V4cCIsInN0cmluZ19tYXRjaCIsInN0cmluZ19wYXJ0aWFsX21hdGNoIiwic2VhcmNoX2ZvcndhcmQiLCJzZWFyY2hfYmFja3dhcmQiLCJwJDAiLCJwJDEiLCJ2YWxpZF9ncm91cCIsIm9mZnNldF9ncm91cCIsInJlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsInEiLCJxJDAiLCJxJDEiLCJwJDIiLCJsZW4kMCIsInAkMyIsInEkMiIsInEkMyIsInAkNCIsImIkMCIsInEkNSIsInAkNiIsInEkNCIsInAkNSIsInEkNiIsInAkNyIsInN0cmluZ19iZWZvcmUiLCJzdHJpbmdfYWZ0ZXIiLCJmaXJzdF9jaGFycyIsImxhc3RfY2hhcnMiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3N0cmluZyIsInJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIiwiZ3JvdXBfYmVnaW5uaW5nIiwiZ3JvdXBfZW5kIiwibWF0Y2hlZF9ncm91cCIsInR4dCIsInJlcGxhY2VfbWF0Y2hlZCIsIm1hdGNoZWQiLCJtYXRjaF9iZWdpbm5pbmciLCJtYXRjaF9lbmQiLCJtYXRjaGVkX3N0cmluZyIsInN1YnN0aXR1dGVfZmlyc3QiLCJyZXBsX2Z1biIsImdsb2JhbF9zdWJzdGl0dXRlIiwibGFzdF93YXNfZW1wdHkiLCJzdGFydHBvcyIsImVuZF9wb3MiLCJyZXBsX3RleHQiLCJsYXN0X3dhc19lbXB0eSQwIiwiZ2xvYmFsX3JlcGxhY2UiLCJyZXBsYWNlX2ZpcnN0Iiwic2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MiLCJib3VuZGVkX3NwbGl0IiwibnVtIiwiYm91bmRlZF9zcGxpdF9kZWxpbSIsInNwbGl0X2RlbGltIiwiYm91bmRlZF9mdWxsX3NwbGl0IiwiZnVsbF9zcGxpdCIsImJlZyIsIm11bCIsImV4cGxpY2l0X3BlcmlvZCIsInNsYXNoZXMiLCJhcHBlbmQiLCJwaWVjZSIsImFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCIsIm5leHQiLCJyZW1haW5pbmciLCJvbmUiLCJleHBsaWNpdF9zbGFzaCIsImVuY2xvc2VkIiwiaGlnaCIsImxvdyIsImVuY2xvc2VkX3NldCIsInNldCQwIiwiZW5jbG9zdXJlIiwiZXhhY3RseSIsInNsYXNoZXMkMCIsImNoYXJzIiwibWFueV9tYW55IiwiZXhwbGljaXRfcGVyaW9kJDAiLCJmaXJzdF9leHBsaWNpdF9wZXJpb2QiLCJtYXRjaF9jb21wb25lbnQiLCJnbG9iIiwicGF0aG5hbWUiLCJzdGgkMSIsIm1hdGNoX2JhY2tzbGFzaGVzIiwic3RoJDIiLCJwZXJpb2QiLCJzdGgkMyIsImV4cGFuZF9icmFjZXMiLCJzdGgkNCIsImRvdWJsZV9hc3RlcmlzayIsInRvX3JlIiwicmVhZCIsInBpZWNlcyIsImZvdW5kIiwicGllY2VzJDAiLCJzdGF0ZSQ4Iiwic3RhdGUkOSIsImV4cGxpY2l0X3NsYXNoJDAiLCJleHBsaWNpdF9wZXJpb2QkMSIsInNsYXNoZXMkMSIsInN0YXRlJDEwIiwibm90X2VtcHR5IiwibWF5YmVfZW1wdHkiLCJub3RfZW1wdHkkMSIsImVuY2xvc2VkX3NldCQwIiwic3RhdGUkMiIsInN0YXRlJDQiLCJub3RfZW1wdHkkMCIsInN0YXRlJDUiLCJzdGF0ZSQ2IiwiZW5jbG9zZWQkMCIsInN0YXRlJDciLCJlbmNsb3NlZCQxIiwic3RhdGUkMyIsInN0YXRlJDEiLCJlbmNsb3NlZCQyIiwiZW5jbG9zZWQkMyIsImV4cGwiLCJpbm5lciIsImFjYyIsImJlZyQwIiwiYWNjJDAiLCJiZWckMSIsImFjYyQxIiwiaSQzIiwiYmVnJDIiLCJpJDQiLCJpJDIiLCJnbG9iJDAiLCJnbG9ieCIsImdsb2J4JDAiLCJwb3NpeF9jbGFzc19zdHJpbmdzIiwib3B0cyIsInVuZ3JlZWR5IiwiZG90YWxsIiwiZG9sbGFyX2VuZG9ubHkiLCJtdWx0aWxpbmUiLCJhY2NlcHRfcyIsInVuZ2V0IiwiZ3JlZWR5X21vZCIsImdyIiwiZ3IkMCIsImF0b20iLCJpbnRlZ2VyIiwiaGV4ZGlnaXQiLCJjb2RlIiwicyQzIiwicyQ0IiwiY2xhc3MkMCIsInBvc2l4X2NsYXNzIiwicGF0IiwiZmxhZ3MiLCJleHRyYWN0IiwicmV4IiwiZ2V0X3N1YnN0cmluZyIsImdldF9uYW1lZF9zdWJzdHJpbmciLCJnZXRfc3Vic3RyaW5nX29mcyIsInBtYXRjaCIsInN1YnN0aXR1dGUiLCJzdWJzdCIsInNzIiwiZmluIiwibWF4IiwicmVzdWx0cyIsImRlbGltIiwiZm1hcCIsImYiLCJuaWwiLCJzaW5nbGV0b24iLCJ4IiwiY29ucyIsInhzIiwiYXBwZW5kIiwieSIsIm1hcCIsIm9mX2xpc3QiLCJsIiwiYSIsImIiLCJtayIsImNoaWxkcmVuIiwic2VxIiwiY2hpbGRyZW4kMCIsInNlcSQwIiwicmVzdCIsInEiLCJhdHRycyIsIm5hbWUiLCJ2IiwicmVzdCQwIiwic3ViX2NoaWxkcmVuIiwiY2hpbGRyZW4kMSIsInNlcSQxIiwicyIsImNoaWxkcmVuJDIiLCJzZXEkMiIsInMkMCIsImNoaWxkcmVuJDMiLCJvZl9zZXEiLCJhZGRfdW5zYWZlX2NoYXIiLCJjIiwiZW5jb2RlX3Vuc2FmZV9jaGFyIiwiZW5jb2RlX3Vuc2FmZV9jaGFyX2FuZF9hdCIsImNvbXBvc2VfZGVjbCIsIm9wdCIsInN0aCIsInZlcnNpb24iLCJzdGgkMCIsImVuY29kaW5nIiwiY29tcG9zZV9kb2N0eXBlIiwiZHQiLCJhcmdzIiwicHBfYXJncyIsImZtdCIsInJlX2VuZF9jb21tZW50IiwicHBfbnVtYmVyIiwidmludCIsInMxIiwiczIiLCJuIiwiaSIsImkkMCIsIm4kMCIsInN0cmluZ19vZl9udW1iZXIiLCJub3JtYWxpemUiLCJzcmMiLCJ3YXJuIiwiYnVmZmVyIiwiZCIsImNvZGUiLCJub3JtYWxpemVfaHRtbCIsInUiLCJ1JDAiLCJwcF9ub29wIiwib3Blbl9ib3giLCJpbmRlbnQiLCJjbG9zZV9ib3giLCJzcCIsImN1dCIsInNldCIsImlzX2VtcHR5dGFnIiwicHBfZW5jb2RlIiwiZW5jb2RlIiwicHBfc2VwIiwicHBfYXR0cmliX3ZhbHVlIiwic2xpc3QiLCJzZXAiLCJwcF9hdHRyaWIiLCJwcF9hdHRyaWJzIiwicHBfdGFnX2FuZF9hdHRyaWJzIiwidGFnIiwicHBfY2xvc2VkdGFnIiwicHBfdGFnIiwicHBfZWx0cyIsInBwX2VsdCIsImVsdCIsInRleHRlIiwiZyIsInRleHRlJDAiLCJ0ZXh0ZSQxIiwiZSIsInhoX2F0dHJzIiwieGhfdGFnbGlzdCIsInhoX2F0dHJzJDAiLCJuYW1lJDAiLCJwcCIsInN5bWJvbCIsInNlcGFyYXRvcl90b19zdHJpbmciLCJhdHRyaWJfdmFsdWVfdG9fc3RyaW5nIiwiYXR0cmliX3RvX3N0cmluZyIsInhoX3ByaW50X2F0dHJzIiwicXVldWUiLCJhdHRyIiwieGhfcHJpbnRfY2xvc2VkdGFnIiwieGhfcHJpbnRfdGFnIiwidGFnbGlzdCIsInhoX3ByaW50X3RhZ2xpc3QiLCJwcmludF9ub2RlcyIsInRhZ2xpc3QkMCIsInRhZ2xpc3QkMSIsInByaW50X2xpc3QiLCJmb3JldCIsInByaW50IiwiZG9jIiwiYWR2ZXJ0IiwiZG9jJDAiLCJhJDAiLCJkb2MkMSIsImVtcHR5IiwiY29uY2F0IiwiZjEiLCJmMiIsInB1dCIsIm1ha2UiLCJvdXRwdXQiLCJhbWFwMSIsImF0dHJpYnMiLCJlbHRzIiwiYXR0cmlicyQwIiwiYW1hcCIsImFkZF9mbG9hdF9hdHRyaWIiLCJ2YWx1ZSIsImhlYWQiLCJ0YWlsIiwidGFpbCQwIiwibWFwX2Zsb2F0X2F0dHJpYiIsImlzX2F0dHJpYiIsImF1eCIsImFkZF9pbnRfYXR0cmliIiwicm1fYXR0cmliIiwibWFwX2ludF9hdHRyaWIiLCJhZGRfc3RyaW5nX2F0dHJpYiIsIm1hcF9zdHJpbmdfYXR0cmliIiwiYWRkX3NwYWNlX3NlcF9hdHRyaWIiLCJ2YWx1ZXMiLCJhZGRfY29tbWFfc2VwX2F0dHJpYiIsInJtX2F0dHJpYl9mcm9tX2xpc3QiLCJpc192YWx1ZSIsInZhbHVlcyQwIiwibWFwX3N0cmluZ19hdHRyaWJfaW5fbGlzdCIsImZvbGQiLCJvZl9lbXB0eSIsIm9mX2NvbW1lbnQiLCJvZl90eHQiLCJvZl9lbmNvZGVkcGNkYXRhIiwib2ZfZW50aXR5Iiwib2ZfbGVhZiIsIm9mX25vZGUiLCJzJDEiLCJzJDIiLCJhbGxfZW50aXRpZXMiLCJlbmFtZSIsImZsYXRtYXAiLCJ0cmFuc2xhdGUiLCJyb290X2xlYWYiLCJyb290X25vZGUiLCJzdWJfbGVhZiIsInN1Yl9ub2RlIiwidXBkYXRlX3N0YXRlIiwic3RhdGUiLCJjb250ZW50X3R5cGUiLCJzdGFuZGFyZCIsIm5hbWVzcGFjZSIsImNzdCQxIiwic3RyaW5nX29mX2lyaSIsInRvX3N0cmluZyIsInVuaXQiLCJ1bml0JDAiLCJhbmdsZV9uYW1lcyIsInN0cmluZ19vZl9hbmdsZSIsImxlbmd0aF9uYW1lcyIsInN0cmluZ19vZl9sZW5ndGgiLCJsaXN0Iiwic3RyaW5nX29mX3BhaW50X3doaXRvdXRfaWNjIiwic3RyaW5nX29mX3BhaW50IiwiaXJpIiwic3RyaW5nX29mX2ZpbGxfcnVsZSIsImRvY3R5cGUiLCJzdHJpbmdfb2ZfdXJpIiwidXJpX29mX3N0cmluZyIsInRvdCIsInRvdGwiLCJ0b2VsdCIsInRvZWx0bCIsInRvX2F0dHJpYiIsIm51bGxhcnkiLCJ1bmFyeSIsInN0YXIiLCJ0b194bWxhdHRyaWJzIiwiZmxvYXRfYXR0cmliIiwic3RyaW5nX2F0dHJpYiIsInN0cmluZ19vZl9jb29yZCIsInN0cmluZ19vZl9sZW5ndGhzIiwidXNlcl9hdHRyaWIiLCJjb2xvcl9hdHRyaWIiLCJtZXRhZGF0YSIsImZvcmVpZ25PYmplY3QiLCJ0eHQiLCJhX3ZlcnNpb24iLCJhX2Jhc2VQcm9maWxlIiwiYV94IiwiYV95IiwiYV93aWR0aCIsImFfaGVpZ2h0IiwiYV9wcmVzZXJ2ZUFzcGVjdFJhdGlvIiwiYV9jb250ZW50U2NyaXB0VHlwZSIsImFfY29udGVudFN0eWxlVHlwZSIsImFfem9vbUFuZFBhbiIsImFfaHJlZiIsImFfeGxpbmtfaHJlZiIsImFfcmVxdWlyZWRGZWF0dXJlcyIsImFfcmVxdWlyZWRFeHRlbnNpb25zIiwiYV9zeXN0ZW1MYW5ndWFnZSIsImFfZXh0ZXJuYWxSZXNzb3VyY2VzUmVxdWlyZWQiLCJhX2lkIiwiYV91c2VyX2RhdGEiLCJhX3htbF9iYXNlIiwiYV94bWxfbGFuZyIsImFfeG1sX3NwYWNlIiwiYV90eXBlIiwiYV9tZWRpYSIsImFfeGxpbmtfdGl0bGUiLCJhX2NsYXNzIiwiYV9zdHlsZSIsImFfdHJhbnNmb3JtIiwiYV92aWV3Qm94IiwiYV9kIiwiYV9wYXRoTGVuZ3RoIiwiYV9yeCIsImFfcnkiLCJhX2N4IiwiYV9jeSIsImFfciIsImFfeDEiLCJhX3kxIiwiYV94MiIsImFfeTIiLCJhX3BvaW50cyIsImFfeF9saXN0IiwiYV95X2xpc3QiLCJhX2R4IiwiYV9keSIsImFfZHhfbGlzdCIsImFfZHlfbGlzdCIsImFfbGVuZ3RoQWRqdXN0IiwiYV90ZXh0TGVuZ3RoIiwiYV90ZXh0X2FuY2hvciIsImFfdGV4dF9kZWNvcmF0aW9uIiwiYV90ZXh0X3JlbmRlcmluZyIsImFfcm90YXRlIiwiYV9zdGFydE9mZnNldCIsImFfbWV0aG9kIiwiYV9zcGFjaW5nIiwiYV9nbHlwaFJlZiIsImFfZm9ybWF0IiwiYV9tYXJrZXJVbml0cyIsImFfcmVmWCIsImFfcmVmWSIsImFfbWFya2VyV2lkdGgiLCJhX21hcmtlckhlaWdodCIsImFfb3JpZW50IiwiYV9sb2NhbCIsImFfcmVuZGVyaW5nX2ludGVudCIsImFfZ3JhZGllbnRVbml0cyIsImFfZ3JhZGllbnRUcmFuc2Zvcm0iLCJhX3NwcmVhZE1ldGhvZCIsImFfZngiLCJhX2Z5IiwiYV9vZmZzZXQiLCJhX3BhdHRlcm5Vbml0cyIsImFfcGF0dGVybkNvbnRlbnRVbml0cyIsImFfcGF0dGVyblRyYW5zZm9ybSIsImFfY2xpcFBhdGhVbml0cyIsImFfbWFza1VuaXRzIiwiYV9tYXNrQ29udGVudFVuaXRzIiwiYV9wcmltaXRpdmVVbml0cyIsImFfZmlsdGVyUmVzIiwiYV9yZXN1bHQiLCJhX2luIiwiYV9pbjIiLCJhX2F6aW11dGgiLCJhX2VsZXZhdGlvbiIsImFfcG9pbnRzQXRYIiwiYV9wb2ludHNBdFkiLCJhX3BvaW50c0F0WiIsImFfc3BlY3VsYXJFeHBvbmVudCIsImFfc3BlY3VsYXJDb25zdGFudCIsImFfbGltaXRpbmdDb25lQW5nbGUiLCJhX21vZGUiLCJhX2ZlQ29sb3JNYXRyaXhfdHlwZSIsImFfdmFsdWVzIiwiYV90cmFuc2Zlcl90eXBlIiwiYV90YWJsZVZhbHVlcyIsImFfaW50ZXJjZXB0IiwiYV9hbXBsaXR1ZGUiLCJhX2V4cG9uZW50IiwiYV90cmFuc2Zlcl9vZmZzZXQiLCJhX2ZlQ29tcG9zaXRlX29wZXJhdG9yIiwiYV9rMSIsImFfazIiLCJhX2szIiwiYV9rNCIsImFfb3JkZXIiLCJhX2tlcm5lbE1hdHJpeCIsImFfZGl2aXNvciIsImFfYmlhcyIsImFfa2VybmVsVW5pdExlbmd0aCIsImFfdGFyZ2V0WCIsImFfdGFyZ2V0WSIsImFfZWRnZU1vZGUiLCJhX3ByZXNlcnZlQWxwaGEiLCJhX3N1cmZhY2VTY2FsZSIsImFfZGlmZnVzZUNvbnN0YW50IiwiYV9zY2FsZSIsImFfeENoYW5uZWxTZWxlY3RvciIsImFfeUNoYW5uZWxTZWxlY3RvciIsImFfc3RkRGV2aWF0aW9uIiwiYV9mZU1vcnBob2xvZ3lfb3BlcmF0b3IiLCJhX3JhZGl1cyIsImFfYmFzZUZyZW5xdWVuY3kiLCJhX251bU9jdGF2ZXMiLCJhX3NlZWQiLCJhX3N0aXRjaFRpbGVzIiwiYV9mZVR1cmJ1bGVuY2VfdHlwZSIsImFfeGxpbmtfc2hvdyIsImFfeGxpbmtfYWN0dWF0ZSIsImFfdGFyZ2V0IiwiYV92aWV3VGFyZ2V0IiwiYV9hdHRyaWJ1dGVOYW1lIiwiYV9hdHRyaWJ1dGVUeXBlIiwiYV9iZWdpbiIsImFfZHVyIiwiYV9taW4iLCJhX21heCIsImFfcmVzdGFydCIsImFfcmVwZWF0Q291bnQiLCJhX3JlcGVhdER1ciIsImFfZmlsbCIsImFfYW5pbWF0aW9uX2ZpbGwiLCJhX2ZpbGxfcnVsZSIsImFfY2FsY01vZGUiLCJhX2FuaW1hdGlvbl92YWx1ZXMiLCJhX2tleVRpbWVzIiwiYV9rZXlTcGxpbmVzIiwiYV9mcm9tIiwiYV90byIsImFfYnkiLCJhX2FkZGl0aXZlIiwiYV9hY2N1bXVsYXRlIiwiYV9rZXlQb2ludHMiLCJhX3BhdGgiLCJhX2FuaW1hdGVUcmFuc2Zvcm1fdHlwZSIsImFfaG9yaXpfb3JpZ2luX3giLCJhX2hvcml6X29yaWdpbl95IiwiYV9ob3Jpel9hZHZfeCIsImFfdmVydF9vcmlnaW5feCIsImFfdmVydF9vcmlnaW5feSIsImFfdmVydF9hZHZfeSIsImFfdW5pY29kZSIsImFfZ2x5cGhfbmFtZSIsImFfb3JpZW50YXRpb24iLCJhX2FyYWJpY19mb3JtIiwiYV9sYW5nIiwiYV91MSIsImFfdTIiLCJhX2cxIiwiYV9nMiIsImFfayIsImFfZm9udF9mYW1pbHkiLCJhX2ZvbnRfc3R5bGUiLCJhX2ZvbnRfdmFyaWFudCIsImFfZm9udF93ZWlnaHQiLCJhX2ZvbnRfc3RyZXRjaCIsImFfZm9udF9zaXplIiwiYV91bmljb2RlX3JhbmdlIiwiYV91bml0c19wZXJfZW0iLCJhX3N0ZW12IiwiYV9zdGVtaCIsImFfc2xvcGUiLCJhX2NhcF9oZWlnaHQiLCJhX3hfaGVpZ2h0IiwiYV9hY2NlbnRfaGVpZ2h0IiwiYV9hc2NlbnQiLCJhX3dpZHRocyIsImFfYmJveCIsImFfaWRlb2dyYXBoaWMiLCJhX2FscGhhYmV0aWMiLCJhX21hdGhlbWF0aWNhbCIsImFfaGFuZ2luZyIsImFfdmlkZW9ncmFwaGljIiwiYV92X2FscGhhYmV0aWMiLCJhX3ZfbWF0aGVtYXRpY2FsIiwiYV92X2hhbmdpbmciLCJhX3VuZGVybGluZV9wb3NpdGlvbiIsImFfdW5kZXJsaW5lX3RoaWNrbmVzcyIsImFfc3RyaWtldGhyb3VnaF9wb3NpdGlvbiIsImFfc3RyaWtldGhyb3VnaF90aGlja25lc3MiLCJhX292ZXJsaW5lX3Bvc2l0aW9uIiwiYV9vdmVybGluZV90aGlja25lc3MiLCJhX3N0cmluZyIsImFfbmFtZSIsImFfYWxpZ25tZW50X2Jhc2VsaW5lIiwiYV9kb21pbmFudF9iYXNlbGluZSIsImFfb25hYm9ydCIsImFfb25hY3RpdmF0ZSIsImFfb25iZWdpbiIsImFfb25lbmQiLCJhX29uZXJyb3IiLCJhX29uZm9jdXNpbiIsImFfb25mb2N1c291dCIsImFfb25sb2FkIiwiYV9vbnJlcGVhdCIsImFfb25yZXNpemUiLCJhX29uc2Nyb2xsIiwiYV9vbnVubG9hZCIsImFfb256b29tIiwiYV9vbmNsaWNrIiwiYV9vbm1vdXNlZG93biIsImFfb25tb3VzZXVwIiwiYV9vbm1vdXNlb3ZlciIsImFfb25tb3VzZW91dCIsImFfb25tb3VzZW1vdmUiLCJhX29udG91Y2hzdGFydCIsImFfb250b3VjaGVuZCIsImFfb250b3VjaG1vdmUiLCJhX29udG91Y2hjYW5jZWwiLCJhX3N0b3BfY29sb3IiLCJhX3N0b3Bfb3BhY2l0eSIsImFfc3Ryb2tlIiwiYV9zdHJva2Vfd2lkdGgiLCJhX3N0cm9rZV9saW5lY2FwIiwiYV9zdHJva2VfbGluZWpvaW4iLCJhX3N0cm9rZV9taXRlcmxpbWl0IiwiYV9zdHJva2VfZGFzaGFycmF5IiwiYV9zdHJva2VfZGFzaG9mZnNldCIsImFfc3Ryb2tlX29wYWNpdHkiLCJzdmciLCJkZWZzIiwiZGVzYyIsInRpdGxlIiwidXNlIiwiaW1hZ2UiLCJzd2l0Y2gkMCIsInN0eWxlIiwicGF0aCIsInJlY3QiLCJjaXJjbGUiLCJlbGxpcHNlIiwibGluZSIsInBvbHlsaW5lIiwicG9seWdvbiIsInRleHQiLCJ0c3BhbiIsInRyZWYiLCJ0ZXh0UGF0aCIsImFsdEdseXBoIiwiYWx0R2x5cGhEZWYiLCJhbHRHbHlwaEl0ZW0iLCJnbHlwaFJlZiIsIm1hcmtlciIsImNvbG9yX3Byb2ZpbGUiLCJsaW5lYXJHcmFkaWVudCIsInJhZGlhbEdyYWRpZW50Iiwic3RvcCIsInBhdHRlcm4iLCJjbGlwUGF0aCIsImZpbHRlciIsImZlRGlzdGFudExpZ2h0IiwiZmVQb2ludExpZ2h0IiwiZmVTcG90TGlnaHQiLCJmZUJsZW5kIiwiZmVDb2xvck1hdHJpeCIsImZlQ29tcG9uZW50VHJhbnNmZXIiLCJmZUZ1bmNBIiwiZmVGdW5jRyIsImZlRnVuY0IiLCJmZUZ1bmNSIiwiZmVDb21wb3NpdGUiLCJmZUNvbnZvbHZlTWF0cml4IiwiZmVEaWZmdXNlTGlnaHRpbmciLCJmZURpc3BsYWNlbWVudE1hcCIsImZlRmxvb2QiLCJmZUdhdXNzaWFuQmx1ciIsImZlSW1hZ2UiLCJmZU1lcmdlIiwiZmVNb3JwaG9sb2d5IiwiZmVPZmZzZXQiLCJmZVNwZWN1bGFyTGlnaHRpbmciLCJmZVRpbGUiLCJmZVR1cmJ1bGVuY2UiLCJjdXJzb3IiLCJ2aWV3Iiwic2NyaXB0IiwiYW5pbWF0ZSIsImFuaW1hdGVNb3Rpb24iLCJtcGF0aCIsImFuaW1hdGVDb2xvciIsImFuaW1hdGVUcmFuc2Zvcm0iLCJmb250IiwiZ2x5cGgiLCJtaXNzaW5nX2dseXBoIiwiaGtlcm4iLCJ2a2VybiIsImZvbnRfZmFjZSIsImZvbnRfZmFjZV9zcmMiLCJmb250X2ZhY2VfdXJpIiwiZm9udF9mYWNlX2Zvcm1hdCIsImZvbnRfZmFjZV9uYW1lIiwiZG9jX3RvZWx0IiwiZGF0YSIsImxlYWYiLCJub2RlIiwiY29lcmNlX2VsdCIsImZsb2F0X2F0dHJpYiQwIiwiaW50X2F0dHJpYiIsInN0cmluZ19hdHRyaWIkMCIsInVyaV9hdHRyaWIiLCJzcGFjZV9zZXBfYXR0cmliIiwiY29tbWFfc2VwX2F0dHJpYiIsInN0cmluZ19vZl9hbGlnbm1lbnRfYmFzZWxpbmUiLCJzdHJpbmdfb2ZfYmlnX3ZhcmlhbnQiLCJzdHJpbmdfb2ZfYm9vbCIsInN0cmluZ19vZl9jb29yZHMiLCJzdHJpbmdfb2ZfZG9taW5hbnRfYmFzZWxpbmUiLCJzdHJpbmdfb2ZfaW5fdmFsdWUiLCJzdHJpbmdfb2ZfaW50Iiwic3RyaW5nX29mX3BlcmNlbnRhZ2UiLCJzdHJpbmdfb2ZfZm91cmZsb2F0cyIsInN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYiIsInN0cmluZ19vZl9udW1iZXJzIiwic3RyaW5nX29mX251bWJlcnNfc2VtaWNvbG9uIiwic3RyaW5nX29mX29mZnNldCIsIngkMCIsInN0cmluZ19vZl9vcmllbnQiLCJzdHJpbmdfb2Zfc3Ryb2tlZGFzaGFycmF5Iiwic3RyaW5nX29mX3RyYW5zZm9ybSIsIngkMiIsImFuZ2xlIiwiYW5nbGUkMCIsImFuZ2xlJDEiLCJ4JDEiLCJzdHJpbmdfb2ZfdHJhbnNmb3JtcyIsImFsdGVybmF0aXZlX2NvbnRlbnRfdHlwZXMiLCJlbXB0eXRhZ3MiLCJib29sX2F0dHJpYiIsImNvbnN0YW50X2F0dHJpYiIsImxpbmt0eXBlc19hdHRyaWIiLCJtZWRpYWRlc2NfYXR0cmliIiwic3Jjc2V0X2F0dHJpYiIsImFfdGl0bGUiLCJhX3Byb3BlcnR5IiwiYV9vbmFmdGVycHJpbnQiLCJhX29uYmVmb3JlcHJpbnQiLCJhX29uYmVmb3JldW5sb2FkIiwiYV9vbmJsdXIiLCJhX29uY2FucGxheSIsImFfb25jYW5wbGF5dGhyb3VnaCIsImFfb25jaGFuZ2UiLCJhX29uY2xvc2UiLCJhX29uZHVyYXRpb25jaGFuZ2UiLCJhX29uZW1wdGllZCIsImFfb25lbmRlZCIsImFfb25mb2N1cyIsImFfb25mb3JtY2hhbmdlIiwiYV9vbmZvcm1pbnB1dCIsImFfb25oYXNoY2hhbmdlIiwiYV9vbmlucHV0IiwiYV9vbmludmFsaWQiLCJhX29ub2ZmbGluZSIsImFfb25vbmxpbmUiLCJhX29ucGF1c2UiLCJhX29ucGxheSIsImFfb25wbGF5aW5nIiwiYV9vbnBhZ2VoaWRlIiwiYV9vbnBhZ2VzaG93IiwiYV9vbnBvcHN0YXRlIiwiYV9vbnByb2dyZXNzIiwiYV9vbnJhdGVjaGFuZ2UiLCJhX29ucmVhZHlzdGF0ZWNoYW5nZSIsImFfb25yZWRvIiwiYV9vbnNlZWtlZCIsImFfb25zZWVraW5nIiwiYV9vbnNlbGVjdCIsImFfb25zaG93IiwiYV9vbnN0YWxsZWQiLCJhX29uc3RvcmFnZSIsImFfb25zdWJtaXQiLCJhX29uc3VzcGVuZCIsImFfb250aW1ldXBkYXRlIiwiYV9vbnVuZG8iLCJhX29udm9sdW1lY2hhbmdlIiwiYV9vbndhaXRpbmciLCJhX29ubG9hZGVkZGF0YSIsImFfb25sb2FkZWRtZXRhZGF0YSIsImFfb25sb2Fkc3RhcnQiLCJhX29ubWVzc2FnZSIsImFfb25tb3VzZXdoZWVsIiwiYV9vbmNvbnRleHRtZW51IiwiYV9vbmRibGNsaWNrIiwiYV9vbmRyYWciLCJhX29uZHJhZ2VuZCIsImFfb25kcmFnZW50ZXIiLCJhX29uZHJhZ2xlYXZlIiwiYV9vbmRyYWdvdmVyIiwiYV9vbmRyYWdzdGFydCIsImFfb25kcm9wIiwiYV9vbmtleXByZXNzIiwiYV9vbmtleWRvd24iLCJhX29ua2V5dXAiLCJhX3htbG5zIiwiYV9tYW5pZmVzdCIsImFfY2l0ZSIsImFfYWNjZXNza2V5IiwiYV9jaGFyc2V0IiwiYV9hY2NlcHRfY2hhcnNldCIsImFfYWNjZXB0IiwiYV9ocmVmbGFuZyIsImFfZG93bmxvYWQiLCJmaWxlIiwiYV9yZWwiLCJhX3RhYmluZGV4IiwiYV9taW1lX3R5cGUiLCJhX2FsdCIsInAiLCJhX3NyYyIsImFfbGFiZWxfZm9yIiwiYV9vdXRwdXRfZm9yIiwiYV9zZWxlY3RlZCIsImFfdGV4dF92YWx1ZSIsImFfaW50X3ZhbHVlIiwiYV92YWx1ZSIsImFfZmxvYXRfdmFsdWUiLCJhX2FjdGlvbiIsImFfZm9ybW1ldGhvZCIsImFfZW5jdHlwZSIsImFfY2hlY2tlZCIsImFfZGlzYWJsZWQiLCJhX3JlYWRvbmx5IiwiYV9tYXhsZW5ndGgiLCJhX21pbmxlbmd0aCIsImFfYWxsb3dmdWxsc2NyZWVuIiwiYV9hbGxvd3BheW1lbnRyZXF1ZXN0IiwiYV9yZWZlcnJlcnBvbGljeSIsImFfYXV0b2NvbXBsZXRlIiwiYV9hc3luYyIsImFfYXV0b2ZvY3VzIiwiYV9hdXRvcGxheSIsImFfbXV0ZWQiLCJhX2Nyb3Nzb3JpZ2luIiwiYV9pbnRlZ3JpdHkiLCJhX21lZGlhZ3JvdXAiLCJhX2NoYWxsZW5nZSIsImFfY29udGVudGVkaXRhYmxlIiwiY2UiLCJhX2NvbnRleHRtZW51IiwiYV9jb250cm9scyIsImFfZGlyIiwiYV9kcmFnZ2FibGUiLCJhX2Zvcm0iLCJhX2Zvcm1hY3Rpb24iLCJhX2Zvcm1lbmN0eXBlIiwiYV9mb3Jtbm92YWxpZGF0ZSIsImFfZm9ybXRhcmdldCIsImFfaGlkZGVuIiwiYV9oaWdoIiwiYV9pY29uIiwiYV9pc21hcCIsImFfa2V5dHlwZSIsImFfbGlzdCIsImFfbG9vcCIsImFfbG93IiwiYV9pbnB1dF9tYXgiLCJhX2lucHV0X21pbiIsImFfaW5wdXRtb2RlIiwiYV9ub3ZhbGlkYXRlIiwiYV9vcGVuIiwiYV9vcHRpbXVtIiwiYV9wYXR0ZXJuIiwiYV9wbGFjZWhvbGRlciIsImFfcG9zdGVyIiwiYV9wcmVsb2FkIiwiYV9wdWJkYXRlIiwiYV9yYWRpb2dyb3VwIiwiYV9yZXF1aXJlZCIsImFfcmV2ZXJzZWQiLCJhX3NhbmRib3giLCJhX3NwZWxsY2hlY2siLCJzYyIsImFfc2NvcGVkIiwiYV9zZWFtbGVzcyIsImFfc2l6ZXMiLCJzaXplcyIsImFfc3BhbiIsImFfc3JjbGFuZyIsImFfc3Jjc2V0IiwiYV9pbWdfc2l6ZXMiLCJhX3N0YXJ0IiwiYV9zdGVwIiwic3RlcCIsImFfdHJhbnNsYXRlIiwiYV93cmFwIiwiYV9zaXplIiwiYV9pbnB1dF90eXBlIiwiaXQiLCJhX21lbnVfdHlwZSIsImFfY29tbWFuZF90eXBlIiwiYV9idXR0b25fdHlwZSIsImJ0IiwiYV9zY3JpcHRfdHlwZSIsImFfbXVsdGlwbGUiLCJhX2NvbHMiLCJhX3Jvd3MiLCJhX3N1bW1hcnkiLCJhX2FsaWduIiwiYV9heGlzIiwiYV9jb2xzcGFuIiwiYV9oZWFkZXJzIiwiYV9yb3dzcGFuIiwiYV9zY29wZSIsImFfYm9yZGVyIiwiYV9ydWxlcyIsImFfY2hhciIsImFfZGF0YSIsImFfY29kZXR5cGUiLCJhX2ZyYW1lYm9yZGVyIiwiYV9tYXJnaW5oZWlnaHQiLCJhX21hcmdpbndpZHRoIiwiYV9zY3JvbGxpbmciLCJhX2NvbnRlbnQiLCJhX2h0dHBfZXF1aXYiLCJhX3JvbGUiLCJhX2FyaWEiLCJ0ZXJtaW5hbCIsInBsdXMiLCJvcHRpb25fY29ucyIsImJvZHkiLCJodG1sIiwiY29udGVudCIsImZvb3RlciIsImhlYWRlciIsInNlY3Rpb24iLCJuYXYiLCJlbnRpdHkiLCJzcGFjZSIsImNkYXRhIiwiY2RhdGFfc2NyaXB0IiwiY2RhdGFfc3R5bGUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZ3JvdXAiLCJhZGRyZXNzIiwiYmxvY2txdW90ZSIsImRpYWxvZyIsImRpdiIsInByZSIsImFiYnIiLCJiciIsImNpdGUiLCJkZm4iLCJlbSIsImtiZCIsInNhbXAiLCJzcGFuIiwic3Ryb25nIiwidGltZSIsInZhciQwIiwiZGwiLCJvbCIsInVsIiwiZGQiLCJsaSIsImhyIiwic21hbGwiLCJzdWIiLCJzdXAiLCJtYXJrIiwicnAiLCJydCIsInJ1YnkiLCJ3YnIiLCJiZG8iLCJkaXIiLCJhX2RhdGV0aW1lIiwiYV9zaGFwZSIsImFfY29vcmRzIiwiY29vcmRzIiwiYV91c2VtYXAiLCJhX2RlZmVyIiwiYV9sYWJlbCIsImFyZWEiLCJhbHQiLCJkZWwiLCJpbnMiLCJub3NjcmlwdCIsInRlbXBsYXRlIiwiYXJ0aWNsZSIsImFzaWRlIiwibWFpbiIsInZpZGVvX2F1ZGlvIiwic3JjcyIsInVyaSIsInNyY3MkMCIsImF1ZGlvIiwidmlkZW8iLCJjYW52YXMiLCJjb21tYW5kIiwibGFiZWwiLCJtZW51IiwiZW1iZWQiLCJzb3VyY2UiLCJtZXRlciIsIm91dHB1dF9lbHQiLCJmb3JtIiwiaW5wdXQiLCJrZXlnZW4iLCJvcHRpb24iLCJzZWxlY3QiLCJ0ZXh0YXJlYSIsImJ1dHRvbiIsImRhdGFsaXN0IiwicHJvZ3Jlc3MiLCJsZWdlbmQiLCJkZXRhaWxzIiwic3VtbWFyeSIsImZpZWxkc2V0Iiwib3B0Z3JvdXAiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiYyQwIiwiY2FwdGlvbiIsInRhYmxleCIsImNvbHVtbnMiLCJ0aGVhZCIsInRmb290IiwiY29sdW1ucyQwIiwiY29udGVudCQwIiwiY29udGVudCQxIiwidGQiLCJ0aCIsInRyIiwiY29sZ3JvdXAiLCJjb2wiLCJ0Ym9keSIsImlmcmFtZSIsIm9iamVjdCIsInBhcmFtcyIsImVsdHMkMCIsImltZyIsInBpY3R1cmUiLCJ0YWlsX25vZGUiLCJtZXRhIiwibGluayIsInJlbCIsImhyZWYiLCJiYXNlIiwicGFyYW0iLCJpbnRfYXR0cmliJDAiLCJ1cmlfYXR0cmliJDAiLCJzcGFjZV9zZXBfYXR0cmliJDAiLCJjb21tYV9zZXBfYXR0cmliJDAiLCJzdHJpbmdfb2Zfc2FuZGJveF90b2tlbiIsInN0cmluZ19vZl9saW5rdHlwZSIsInN0cmluZ19vZl9tZWRpYWRlc2NfdG9rZW4iLCJzdHJpbmdfb2ZfcmVmZXJyZXJwb2xpY3kiLCJzdHJpbmdfb2ZfaW5wdXRfdHlwZSIsInN0cmluZ19vZl9zY3JpcHRfdHlwZSIsInN0cmluZ19vZl9udW1iZXJfb3JfZGF0ZXRpbWUiLCJ0Iiwic3RyaW5nX29mX2NoYXJhY3RlciIsIm9ub2ZmX29mX2Jvb2wiLCJ1bm9wdGlvbl9zdHJpbmciLCJzdHJpbmdfb2Zfc3RlcCIsInN0cmluZ19vZl9zaXplcyIsInN0cmluZ19vZl9zYW5kYm94Iiwic3RyaW5nX29mX21lZGlhZGVzYyIsInN0cmluZ19vZl9saW5rdHlwZXMiLCJzdHJpbmdfb2Zfc3Jjc2V0IiwidXJsIiwidXJsJDAiLCJ2JDAiLCJ1cmwkMSIsInN0cmluZ19vZl9hdXRvY29tcGxldGUiLCJzdHJzIiwidXJpX29mX3N0cmluZyIsInMiLCJzdHJpbmdfb2ZfdXJpIiwiYWNvbnRlbnQiLCJhIiwiYW5hbWUiLCJuYW1lIiwiZmxvYXRfYXR0cmliIiwidmFsdWUiLCJpbnRfYXR0cmliIiwic3RyaW5nX2F0dHJpYiIsInNwYWNlX3NlcF9hdHRyaWIiLCJ2YWx1ZXMiLCJjb21tYV9zZXBfYXR0cmliIiwiZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiIsImtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIiwidG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJ1cmlfYXR0cmliIiwidXJpc19hdHRyaWIiLCJjb250ZW50IiwiZWx0IiwiZW1wdHkiLCJjb21tZW50IiwiYyIsInBjZGF0YSIsImQiLCJlbmNvZGVkcGNkYXRhIiwiZW50aXR5IiwiZSIsInJlX2VuZF9jZGF0YSIsImVuY29kZWRfY2RhdGEiLCJzMSIsInMyIiwiY2RhdGEiLCJjZGF0YV9zY3JpcHQiLCJjZGF0YV9zdHlsZSIsImxlYWYiLCJvcHQiLCJzdGgiLCJub2RlIiwiY2hpbGRyZW4iLCJwcmludCIsImZtdCIsIngiLCJwcCQwIiwicHBfZWx0JDAiLCJtZXJnZSIsIm1hcF9wYXRjaCIsIm1hcF9kYXRhIiwiZW1wdHkiLCJjcmVhdGUiLCJsIiwic2VuZCIsImluaXRpYWxfZXZlbnQiLCJjdXJyZW50IiwibXNnIiwicCIsImV2ZW50IiwiZnJvbV9ldmVudCIsImNvbnN0JDAiLCJ4IiwibWFwX21zZyIsImYiLCJtYXAiLCJzIiwicyQwIiwibXNnJDAiLCJ2YWx1ZSIsImMiLCJwYXRjaCIsInNldCIsImZvbGQiLCJhY2MiLCJhY2MkMCIsInNpZ25hbCIsIm9wdCIsInN0aCIsImVxIiwibCQwIiwiZnJvbV9zaWduYWwiLCJkJDAiLCJkIiwiaSIsImkkMCIsIngkMCIsImkkMSIsImoiLCJpJDIiLCJwJDUiLCJsJDciLCJuIiwicCQzIiwiaSQzIiwicCQ0IiwibCQyIiwib3AiLCJ4cyIsIm4kMCIsImFjYyQxIiwibiQxIiwibCQxIiwieHMkMCIsIngkMSIsIm4kMiIsImFjYyQyIiwieCQyIiwiaSQ0IiwiYSIsIm9mZnNldCIsImkkNSIsImEkMCIsImxlbiIsImkkNiIsInYiLCJqJDAiLCJpMCIsImgiLCJwJDAiLCJpMCQwIiwibCQzIiwicCQxIiwiaTAkMSIsImwkNCIsInAkMiIsImkwJDIiLCJsJDUiLCJsJDYiLCJlcXVhbCIsImwxIiwibDIiLCJsMSQwIiwibDIkMCIsIngyIiwibDEkMSIsIngxIiwibDIkMSIsIm1lbSIsImhhc2giLCJkaWZmIiwic3RoJDAiLCJseCQxIiwibHkkMyIsImFkZCIsInJlbW92ZSIsIm1lbXgiLCJtZW15IiwibGVmdCIsImx4IiwibHkiLCJseCQwIiwieSIsImx5JDAiLCJseSQxIiwiYWNjJDMiLCJhY2MkNCIsImx5JDIiLCJ5JDAiLCJhY2MkNSIsIm4kMyIsImFjYyQ2IiwiYWNjJDciLCJvcHQkMCIsImVtcHR5JDAiLCJjb25zIiwic25vYyIsImluc2VydCIsInVwZGF0ZSIsIm1vdmUiLCJpbmRleCIsImhkIiwidGwiLCJ1cGRhdGVfZXEiLCJoYW5kbGUiLCJkYXRhIiwicmVtb3ZlX2xhc3QiLCJyZW1vdmVfZXEiLCJzaW5nbGV0b24iLCJzaW5nbGV0b25fcyIsImZpcnN0IiwiZSIsInJlc3VsdCIsImNvbmNhdCIsInYxIiwidjIiLCJzaXplMSIsInNpemUyIiwic2l6ZV93aXRoX3BhdGNoIiwic2l6ZXgiLCJzaXplX3dpdGhfc2V0IiwicG9zIiwibSIsInBvcyQwIiwicG9zJDEiLCJwb3MkMiIsInBvcyQzIiwidXBkYXRlX3BhdGNoMSIsInVwZGF0ZV9wYXRjaDIiLCJwMSIsInAyIiwidHVwbGVfZXYiLCJwMiQyIiwicDIkMyIsInAxJDAiLCJwMiQwIiwiczIiLCJzMSIsInAxJDEiLCJzMiQwIiwicDIkMSIsIm1lcmdlZF9ldiIsImludmVyc2UiLCJyZXYiLCJ0IiwiZmlsdGVyIiwicHJlZCIsInNpemUiLCJmaWx0ZXJfbGlzdCIsInJlcyIsInRoZWlyX2kiLCJteV9pIiwibXlfaSQwIiwidGhlaXJfaSQwIiwicmVzJDAiLCJ0aGVpcl9pJDEiLCJub3JtYWxpc2UiLCJ1cGRhdGVfaW5kZXhfaW5zZXJ0IiwiaW5zZXJ0X3Bvc19mdWxsX2xpc3QiLCJ2aXNpYmxlIiwiaW5zZXJ0X3Bvc19mdWxsX2xpc3QkMCIsInVwZGF0YWJsZXMiLCJkaXNwbGFjZWQiLCJsZWZ0X2Fsb25lIiwiZGlzcGxhY2VkX2luX2ZpbHRlcmVkIiwidXBkYXRhYmxlcyQwIiwidXBkYXRlX2oiLCJqX2Z1bGxfbGlzdCIsImpfZmlsdGVyZWRfbGlzdCIsIm5ld19qX2ZpbHRlcmVkIiwiaW5zZXJ0X3Bvc19maWx0ZXJlZCIsInVwZGF0ZV9pbmRleF9tb3ZlIiwiZnJvbV9mdWxsX2xpc3QiLCJ0b19mdWxsX2xpc3QiLCJ0b19maWx0ZXJlZCIsIndhc192aXNpYmxlIiwiZm9yd2FyZCIsImlfZnVsbCIsImRlbHRhIiwiaV9maWx0ZXJlZCIsIm5ld192YWwiLCJpX2Z1bGwkMCIsImRlbHRhJDAiLCJpX2ZpbHRlcmVkJDAiLCJuZXdfdmFsJDAiLCJ0b19maWx0ZXJlZCQwIiwiY29udmVydF9wIiwicmVtb3ZlX3Bvc19mdWxsX2xpc3QiLCJyZXQiLCJuZXdfaiIsImxhc3RfaSIsInVwZGF0ZV9wb3NfZnVsbF9saXN0Iiwib2xkX2oiLCJ1cGRhdGVfaiQwIiwidXBkYXRhYmxlcyQxIiwibm9uZSIsInVwZGF0ZV9qJDEiLCJwcmV2aW91c19wb3NfZmlsdGVyZWQiLCJuZXdfcG9zX2ZpbHRlcmVkX2xpc3QiLCJvZmZzZXRfZnVsbCIsIm9yaWdpbl9mdWxsIiwib3JpZ2luX2Z1bGwkMCIsImRlc3RfZnVsbCIsIm9yaWdpbl9maWx0ZXJlZCIsImRlc3RfZmlsdGVyZWQiLCJzbWFsbF9vbmVzIiwiZmlsdGVyX2UiLCJmb3JfYWxsIiwiZm4iLCJtYXliZV91cGRhdGUiLCJpbml0IiwidXBkYXRlX2lkeF9hZnRlciIsInVwZGF0ZXMiLCJ2JDAiLCJrIiwiayQwIiwiZyIsImtleSIsInciLCJ3JDAiLCJ2JDEiLCJnJDAiLCJzeW1ib2wiLCJ4IiwieSIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJjb21wYXJlIiwiZXF1YWwiLCJtYXgiLCJtaW4iLCJlcXVhbCQwIiwiZXF1YWwkMSIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJjb21wYXJlJDIiLCJlcXVhbCQyIiwibWF4JDAiLCJtaW4kMCIsInJlYnVpbGRfbm9kZSIsIm9mX2VsZW1lbnQiLCJlbHQiLCJvZl9ub2RlIiwib2ZfcGNkYXRhIiwib2ZfaHRtbCIsIm9mX2hlYWQiLCJvZl9saW5rIiwib2ZfdGl0bGUiLCJvZl9tZXRhIiwib2ZfYmFzZSIsIm9mX3N0eWxlIiwib2ZfYm9keSIsIm9mX2Zvcm0iLCJvZl9vcHRncm91cCIsIm9mX29wdGlvbiIsIm9mX3NlbGVjdCIsIm9mX2lucHV0Iiwib2ZfdGV4dGFyZWEiLCJvZl9idXR0b24iLCJvZl9sYWJlbCIsIm9mX2ZpZWxkc2V0Iiwib2ZfbGVnZW5kIiwib2ZfdWwiLCJvZl9vbCIsIm9mX2RsIiwib2ZfbGkiLCJvZl9kaXYiLCJvZl9wIiwib2ZfaGVhZGluZyIsIm9mX2Jsb2NrcXVvdGUiLCJvZl9wcmUiLCJvZl9iciIsIm9mX2hyIiwib2ZfaW5zIiwib2ZfZGVsIiwib2ZfYSIsIm9mX2ltZyIsIm9mX29iamVjdCIsIm9mX3BhcmFtIiwib2ZfYXJlYSIsIm9mX21hcCIsIm9mX3NjcmlwdCIsIm9mX3RkIiwib2ZfdHIiLCJvZl9jb2wiLCJvZl90Zm9vdCIsIm9mX3RoZWFkIiwib2ZfdGJvZHkiLCJvZl9jYXB0aW9uIiwib2ZfdGFibGUiLCJvZl9jYW52YXMiLCJvZl9pZnJhbWUiLCJvZl9hdWRpbyIsIm9mX3ZpZGVvIiwib2ZfaDEiLCJvZl9oMiIsIm9mX2gzIiwib2ZfaDQiLCJvZl9oNSIsIm9mX2g2Iiwib2ZfYWJiciIsIm9mX2FkZHJlc3MiLCJvZl9hcnRpY2xlIiwib2ZfYXNpZGUiLCJvZl9iIiwib2ZfYmRvIiwib2ZfY2l0ZSIsIm9mX2NvZGUiLCJvZl9jb2xncm91cCIsIm9mX2NvbW1hbmQiLCJvZl9kYXRhbGlzdCIsIm9mX2RkIiwib2ZfZGV0YWlscyIsIm9mX2RmbiIsIm9mX2R0Iiwib2ZfZW0iLCJvZl9lbWJlZCIsIm9mX2ZpZ2NhcHRpb24iLCJvZl9maWd1cmUiLCJvZl9mb290ZXIiLCJvZl9oZWFkZXIiLCJvZl9oZ3JvdXAiLCJvZl9pIiwib2Zfa2JkIiwib2Zfa2V5Z2VuIiwib2ZfbWFpbiIsIm9mX21hcmsiLCJvZl9tZW51Iiwib2ZfbWV0ZXIiLCJvZl9uYXYiLCJvZl9ub3NjcmlwdCIsIm9mX291dHB1dCIsIm9mX3Byb2dyZXNzIiwib2ZfcSIsIm9mX3JwIiwib2ZfcnQiLCJvZl9ydWJ5Iiwib2Zfc2FtcCIsIm9mX3NlY3Rpb24iLCJvZl9zbWFsbCIsIm9mX3NvdXJjZSIsIm9mX3NwYW4iLCJvZl9zdHJvbmciLCJvZl9zdWIiLCJvZl9zdW1tYXJ5Iiwib2Zfc3VwIiwib2ZfdGgiLCJvZl90aW1lIiwib2ZfdSIsIm9mX3ZhciIsIm9mX3diciIsIm9mX29wdEdyb3VwIiwib2ZfdGV4dEFyZWEiLCJvZl9maWVsZFNldCIsIm9mX3VMaXN0Iiwib2Zfb0xpc3QiLCJvZl9kTGlzdCIsIm9mX3BhcmFncmFwaCIsIm9mX3F1b3RlIiwib2ZfbW9kIiwib2ZfYW5jaG9yIiwib2ZfaW1hZ2UiLCJvZl90YWJsZUNlbGwiLCJvZl90YWJsZVJvdyIsIm9mX3RhYmxlQ29sIiwib2ZfdGFibGVTZWN0aW9uIiwib2ZfdGFibGVDYXB0aW9uIiwib2ZfaUZyYW1lIiwid2Vha01hcCIsIm1hcCIsInJldGFpbiIsIm5vZGUiLCJrZWVwbWUiLCJwcmV2IiwidXJpX29mX3N0cmluZyIsInMiLCJzdHJpbmdfb2ZfdXJpIiwiYXR0ciIsIm5hbWUiLCJ2IiwiZmxvYXRfYXR0cmliIiwidmFsdWUiLCJpbnRfYXR0cmliIiwic3RyaW5nX2F0dHJpYiIsInNwYWNlX3NlcF9hdHRyaWIiLCJ2YWx1ZXMiLCJjb21tYV9zZXBfYXR0cmliIiwiZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiIsImtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIiwidG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJ1cmlfYXR0cmliIiwidXJpc19hdHRyaWIiLCJlbXB0eSIsImNvbW1lbnQiLCJjIiwicGNkYXRhIiwiZW5jb2RlZHBjZGF0YSIsInN0cmluZ19mb2xkIiwicG9zIiwiaW5pdCIsImYiLCJyIiwiaSIsImludmFsaWRfZW50aXR5IiwiZSIsInBhcnNlX2ludCIsImJhc2UiLCJhY2MiLCJkIiwiZW50aXR5IiwibGVuIiwic3RyIiwiaXRlcl9wcm9wX3Byb3RlY3RlZCIsIm4iLCJhdHRhY2hfYXR0cmlicyIsImwiLCJhdHQiLCJuJDAiLCJoIiwiZXYiLCJoJDAiLCJoJDEiLCJoJDIiLCJhIiwibGVhZiIsIm9wdCIsInN0aCIsImNoaWxkcmVuIiwiY2RhdGEiLCJjZGF0YV9zY3JpcHQiLCJjZGF0YV9zdHlsZSIsImxlYWYkMCIsIm5vZGUkMCIsImVsdCQwIiwiYWRkX3RvIiwiY29udGVudCIsImtlZXAiLCJpZCIsImJvZHkiLCJoZWFkIiwiaHRtbCIsInJldHVybiQwIiwiZm1hcCIsIm5pbCIsInNpbmdsZXRvbiIsImNvbnMiLCJ4cyIsIm1hcCQwIiwiYXBwZW5kIiwiaW5zZXJ0QXQiLCJkb20iLCJyZW1vdmVDaGlsZHJlbiIsInVwZGF0ZV9jaGlsZHJlbiIsIm5vZGVzIiwibXNnIiwicCIsImkkMCIsImkkMSIsImkkMiIsIngkMCIsImkkMyIsImkkNCIsIm9sZCIsIm1vdmUiLCJpJDUiLCJpJDYiLCJpJDciLCJmaWx0ZXJfYXR0cmliIiwib24iLCJhJDAiLCJhdHRyJDAiLCJmbG9hdF9hdHRyaWIkMCIsImludF9hdHRyaWIkMCIsInN0cmluZ19hdHRyaWIkMCIsInNwYWNlX3NlcF9hdHRyaWIkMCIsImNvbW1hX3NlcF9hdHRyaWIkMCIsImV2ZW50X2hhbmRsZXJfYXR0cmliJDAiLCJtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiQwIiwia2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIkMCIsInRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliJDAiLCJ1cmlfYXR0cmliJDAiLCJ1cmlzX2F0dHJpYiQwIiwicGNkYXRhJDAiLCJlbmNvZGVkcGNkYXRhJDAiLCJlbnRpdHkkMCIsIm5vZGUkMSIsIm5vZGUkMiIsImdldCIsIm5vZGUiLCJzZXQiLCJkYXRhIiwicmVtb3ZlIiwiY3JlYXRlIiwic2VxIiwiY2xlYXIiLCJpc19lbXB0eSIsImxlbmd0aCIsImN1cnIkMSIsImN1cnIiLCJsZW4iLCJsZW4kMCIsImN1cnIkMCIsImFkZF9sIiwiYWRkX3IiLCJ0YWtlX2wiLCJ0YWtlX3IiLCJ0YWtlX29wdF9sIiwidGFrZV9vcHRfciIsInRyYW5zZmVyX2wiLCJzMSIsInMyIiwidHJhbnNmZXJfciIsIml0ZXJfbCIsImYiLCJpdGVyX3IiLCJpdGVyX25vZGVfbCIsIml0ZXJfbm9kZV9yIiwiZm9sZF9sIiwiYWNjIiwiY3VyciQyIiwiYWNjJDAiLCJhY2MkMSIsImZvbGRfciIsImZpbmRfbm9kZV9sIiwiZmluZF9ub2RlX3IiLCJmaW5kX25vZGVfb3B0X2wiLCJmaW5kX25vZGVfb3B0X3IiLCJjb21wYXJlIiwic3RhdGVfb2ZfcmVzdWx0IiwieCIsImV4biIsInVuZGVybHlpbmciLCJwIiwicCQwIiwicCQxIiwic2V0X3Byb21pc2Vfc3RhdGUiLCJzdGF0ZSIsImhhbmRsZV9hbGwiLCJoYW5kbGVfYWxsX2V4Y2VwdF9ydW50aW1lIiwidiIsInJ1biIsImUiLCJuZXh0X2tleV9pZCIsIm5ld19rZXkiLCJpZCIsImN1cnJlbnRfc3RvcmFnZSIsImtleSIsInJlZnJlc2giLCJ2YWx1ZSIsIndpdGhfdmFsdWUiLCJuZXdfc3RvcmFnZSIsInNhdmVkX3N0b3JhZ2UiLCJyZXN1bHQiLCJleG4kMCIsImNvbmNhdF9yZWd1bGFyX2NhbGxiYWNrcyIsImwxIiwibDIiLCJjbGVhbl91cF9jYWxsYmFja19jZWxscyIsImNhbGxiYWNrcyIsImwxJDAiLCJsMiQwIiwiY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsIiwiY2VsbCIsInBzIiwiY2xlYW51cHNfZGVmZXJyZWQiLCJhZGRfcmVndWxhcl9jYWxsYmFja19saXN0X25vZGUiLCJleGlzdGluZyIsIm5vZGUkMCIsImFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhYyIsImFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYiIsInNlbGZfcmVtb3ZpbmdfY2FsbGJhY2tfd3JhcHBlciIsImFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYiQwIiwiYWRkX2NhbmNlbF9jYWxsYmFjayIsImFzeW5jX2V4Y2VwdGlvbl9ob29rIiwiaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvIiwicnVuX2NhbGxiYWNrcyIsImlzX2NhbmNlbGVkIiwiZnMiLCJpdGVyX2NhbGxiYWNrX2xpc3QkMiIsInJlc3QiLCJmcyQwIiwicmVzdCQwIiwiaXRlcl9saXN0JDAiLCJmcyQxIiwiZnMkMiIsInJlc3QkMSIsInN0b3JhZ2UiLCJpdGVyX2NhbGxiYWNrX2xpc3QiLCJpdGVyX2NhbGxiYWNrX2xpc3QkMSIsIml0ZXJfbGlzdCIsImYkMCIsIml0ZXJfY2FsbGJhY2tfbGlzdCQwIiwiY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoIiwiZGVmZXJyZWRfY2FsbGJhY2tzIiwiZGVmYXVsdF9tYXhpbXVtX2NhbGxiYWNrX25lc3RpIiwibGVhdmVfcmVzb2x1dGlvbl9sb29wIiwic3RvcmFnZV9zbmFwc2hvdCIsInJ1bl9pbl9yZXNvbHV0aW9uX2xvb3AiLCJhYmFuZG9uX3dha2V1cHMiLCJydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW0iLCJvcHQiLCJzdGgiLCJhbGxvd19kZWZlcnJpbmciLCJzdGgkMCIsIm1heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aCIsInNob3VsZF9kZWZlciIsInJlc29sdmUiLCJydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXQiLCJpZl9kZWZlcnJlZCIsInJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaSIsImRlZmVycmVkX3Jlc3VsdCIsImRlZmVycmVkX2NhbGxiYWNrIiwiaW1tZWRpYXRlX3Jlc3VsdCIsImRlZmVycmVkX3JlY29yZCIsIndha2V1cF9nZW5lcmFsIiwiYXBpX2Z1bmN0aW9uX25hbWUiLCJyIiwicmVzdWx0JDAiLCJ3YWtldXBfcmVzdWx0Iiwid2FrZXVwIiwid2FrZXVwX2V4biIsIndha2V1cF9sYXRlcl9nZW5lcmFsIiwid2FrZXVwX2xhdGVyX3Jlc3VsdCIsIndha2V1cF9sYXRlciIsIndha2V1cF9sYXRlcl9leG4iLCJjYW5jZWwiLCJjYW5jZWxlZF9yZXN1bHQiLCJjYW5jZWxfYW5kX2NvbGxlY3RfY2FsbGJhY2tzIiwiY2FsbGJhY2tzX2FjY3VtdWxhdG9yIiwicCQyIiwicGFyYW0iLCJyZXR1cm4kMCIsIm9mX3Jlc3VsdCIsImZhaWwiLCJyZXR1cm5fdW5pdCIsInJldHVybl9ub25lIiwicmV0dXJuX3NvbWUiLCJyZXR1cm5fbmlsIiwicmV0dXJuX3RydWUiLCJyZXR1cm5fZmFsc2UiLCJyZXR1cm5fb2siLCJyZXR1cm5fZXJyb3IiLCJmYWlsX3dpdGgiLCJtc2ciLCJmYWlsX2ludmFsaWRfYXJnIiwibmV3X3BlbmRpbmciLCJob3dfdG9fY2FuY2VsIiwid2FpdCIsInRhc2siLCJhZGRfdGFza19yIiwic2VxdWVuY2UiLCJhZGRfdGFza19sIiwicHJvdGVjdGVkJDAiLCJwX2ludGVybmFsIiwiY2FsbGJhY2siLCJwX3Jlc3VsdCIsInJlbW92ZV90aGVfY2FsbGJhY2siLCJwX2NhbGxiYWNrcyIsIm5vX2NhbmNlbCIsIm1ha2VfaW50b19wcm94eSIsIm91dGVyX3Byb21pc2UiLCJ1c2VyX3Byb3ZpZGVkX3Byb21pc2UiLCJvdXRlcl9jYWxsYmFja3MiLCJyZWd1bGFyX2NhbGxiYWNrcyIsImNsZWFudXBzX2RlZmVycmVkJDAiLCJyZWd1bGFyX2NhbGxiYWNrcyQwIiwiY2FuY2VsX2NhbGxiYWNrcyIsInN5bWJvbF9iaW5kIiwiY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsIiwiYmFja3RyYWNlX2JpbmQiLCJhZGRfbG9jIiwic3ltYm9sIiwicF9yZXN1bHQkMCIsImNhdGNoJDAiLCJoIiwiYmFja3RyYWNlX2NhdGNoIiwidHJ5X2JpbmQiLCJleG4kMSIsInAkMyIsImJhY2t0cmFjZV90cnlfYmluZCIsImZpbmFsaXplIiwiYmFja3RyYWNlX2ZpbmFsaXplIiwib25fY2FuY2VsIiwib25fc3VjY2VzcyIsImNhbGxiYWNrX2lmX2RlZmVycmVkIiwib25fZmFpbHVyZSIsIm9uX3Rlcm1pbmF0aW9uIiwib25fYW55IiwiZyIsIndyYXBfaW5fY2FuY2VsYWJsZSIsInBfdW5kZXJseWluZyIsImRvbnRfd2FpdCIsImFzeW5jIiwiaWdub3JlX3Jlc3VsdCIsImpvaW4iLCJudW1iZXJfcGVuZGluZ19pbl9wcyIsImpvaW5fcmVzdWx0IiwibmV3X3Jlc3VsdCIsInBzJDAiLCJwcyQxIiwiYm90aCIsInAxIiwicDIiLCJwYWlyIiwicDEkMCIsInAyJDAiLCJ2MiIsInYxIiwiYWxsIiwieSIsInZzIiwiaW5kZXgiLCJpJDEiLCJpIiwiaSQwIiwiY291bnRfcmVzb2x2ZWRfcHJvbWlzZXNfaW4iLCJ0b3RhbCQxIiwicHMkMiIsInBzJDMiLCJ0b3RhbCQyIiwicmVqZWN0ZWQkMSIsInRvdGFsIiwicmVqZWN0ZWQiLCJyZWplY3RlZCQwIiwidG90YWwkMCIsIm50aF9yZXNvbHZlZCIsIm4iLCJuJDAiLCJuJDIiLCJuJDEiLCJudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW4iLCJwcm5nIiwiY2hvb3NlIiwicGljayIsInFzIiwiY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0IiwicmVzdWx0cyIsInJlc3VsdHMkMCIsInJlc3VsdHMkMSIsIm5jaG9vc2UiLCJ2JDAiLCJucGljayIsIm5jaG9vc2Vfc3BsaXQiLCJwZW5kaW5nX2FjYyIsInBfaW50ZXJuYWwkMCIsInBlbmRpbmdfYWNjJDAiLCJ0b19yZXNvbHZlIiwiZnVsZmlsbGVkIiwicGVuZGluZyIsInBlbmRpbmckMCIsImZ1bGZpbGxlZCQwIiwiZGVidWdfc3RhdGVfaXMiLCJleHBlY3RlZF9zdGF0ZSIsImlzX3NsZWVwaW5nIiwicG9sbCIsImFwcGx5Iiwid3JhcCIsIndyYXAxIiwieDEiLCJ3cmFwMiIsIngyIiwid3JhcDMiLCJ4MyIsIndyYXA0IiwieDQiLCJ3cmFwNSIsIng1Iiwid3JhcDYiLCJ4NiIsIndyYXA3IiwieDciLCJwYXVzZV9ob29rIiwicGF1c2VkIiwicGF1c2UiLCJ3YWtldXBfcGF1c2VkIiwidG1wIiwicmVnaXN0ZXJfcGF1c2Vfbm90aWZpZXIiLCJhYmFuZG9uX3BhdXNlZCIsInBhdXNlZF9jb3VudCIsIm1hcCIsInQiLCJiaW5kIiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInN5bWJvbCQyIiwic3ltYm9sJDMiLCJsZXQkMCIsImlzX29uIiwic3dpdGNoJDAiLCJjaGVjayIsImFkZF9ob29rIiwiaG9vayIsIm9zIiwiYWRkX2hvb2tfb3JfZXhlYyIsInR1cm5fb2ZmIiwiaG9va3MiLCJ3aXRoX3N3aXRjaCIsImZuIiwiZW1wdHkiLCJyZXR1cm5fbHd0IiwiY29ucyIsImNvbnNfbHd0Iiwic2VxMSIsInNlcTIiLCJuZXh0IiwiYXBwZW5kIiwieCQwIiwibWFwX3MiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyX21hcF9zIiwib2siLCJmaWx0ZXIiLCJmaWx0ZXJfcyIsImZsYXRfbWFwX2FwcCIsInRhaWwiLCJmbGF0X21hcCIsImZvbGRfbGVmdCIsImF1eCIsImZvbGRfbGVmdF9zIiwiaXRlciIsIml0ZXJfcyIsIml0ZXJfcCIsIml0ZXJfbiIsIm1heF9jb25jdXJyZW5jeSIsIm1lc3NhZ2UiLCJsb29wIiwicnVubmluZyIsImF2YWlsYWJsZSIsImVsdCIsImNvbXBsZXRlIiwidW5mb2xkIiwidSIsImV4YyQwIiwiZXhjIiwidSQwIiwidW5mb2xkX2x3dCIsIm9mX2xpc3QiLCJsIiwidG9fbGlzdCQwIiwib2Zfc2VxIiwibmV4dCQwIiwib2Zfc2VxX2x3dCIsIm5ld19ub2RlIiwiY2xvbmUiLCJzIiwiZnJvbV9zb3VyY2UiLCJzb3VyY2UiLCJjbG9zZSIsImNsb3NlZCIsImZyb20iLCJmcm9tX2RpcmVjdCIsImlzX2Nsb3NlZCIsImVucXVldWUiLCJsYXN0IiwibmV3X2xhc3QiLCJlbnF1ZXVlJDAiLCJjcmVhdGVfd2l0aF9yZWZlcmVuY2UiLCJwdXNoX3NpZ25hbF9yZXNvbHZlciIsInB1c2hfc2lnbmFsIiwicHVzaF9zaWduYWxfcmVzb2x2ZXIkMCIsInB1c2giLCJvbGRfcHVzaF9zaWduYWxfcmVzb2x2ZXIiLCJuZXdfcHVzaF9zaWduYWxfcmVzb2x2ZXIiLCJuZXdfd2FpdGVyIiwiYSIsInN0cmVhbSIsInMkMCIsIm9mX2x3dF9zZXEiLCJvZl9pdGVyIiwib2ZfYXJyYXkiLCJvZl9zdHJpbmciLCJub3RpZnlfcHVzaGVyIiwiaW5mbyIsIm9sZF93YWtlbmVyIiwid2FrZW5lciIsIndhaXRlciIsInNlbGZfMSIsInNpemUiLCJuZXdfd2FrZW5lciIsImNyZWF0ZV9ib3VuZGVkIiwicHVzaF93YWtlbmVyIiwicHVzaF93YWl0ZXIiLCJ3YWtlbmVyX2NlbGwiLCJmZWVkIiwidGhyZWFkIiwicHVzaCQwIiwiY29uc3VtZSIsInBlZWtfcmVjIiwicGVlayIsIm5wZWVrX3JlYyIsIm5vZGUkMSIsIm5wZWVrIiwiZ2V0X3JlYyIsImdldF9leG5fcmVjIiwid3JhcF9leG4iLCJuZ2V0X3JlYyIsIm5nZXQiLCJnZXRfd2hpbGVfcmVjIiwidGVzdCIsImdldF93aGlsZSIsImdldF93aGlsZV9zX3JlYyIsImdldF93aGlsZV9zIiwibmV4dF9yZWMiLCJsYXN0X25ld19yZWMiLCJ4JDEiLCJsYXN0X25ldyIsInRvX2xpc3RfcmVjIiwidG9fbGlzdCIsInRvX3N0cmluZ19yZWMiLCJidWYiLCJ0b19zdHJpbmciLCJqdW5rIiwibmp1bmtfcmVjIiwibmp1bmsiLCJqdW5rX3doaWxlX3JlYyIsImp1bmtfd2hpbGUiLCJqdW5rX3doaWxlX3NfcmVjIiwianVua193aGlsZV9zIiwianVua19vbGQiLCJnZXRfYXZhaWxhYmxlIiwiZ2V0X2F2YWlsYWJsZV91cF90byIsIm1hcF9saXN0IiwicGVuZGluZ3MiLCJtYXBfbGlzdF9zIiwiZmxhdHRlbiIsImZvbGRfcmVjIiwiZm9sZCIsImZvbGRfc19yZWMiLCJmb2xkX3MiLCJpdGVyX3JlYyIsIml0ZXJfc19yZWMiLCJpdGVyX3BfcmVjIiwicmVzIiwiZmluZF9yZWMiLCJmaW5kIiwiZmluZF9zX3JlYyIsImZpbmRfcyIsImZpbmRfbWFwX3JlYyIsImZpbmRfbWFwIiwiZmluZF9tYXBfc19yZWMiLCJmaW5kX21hcF9zIiwiY29tYmluZSIsInQxIiwidDIiLCJuMSIsIm4yIiwiY3VycmVudF9zIiwiY29uY2F0Iiwic190b3AiLCJzdHJlYW1zIiwic3RyZWFtcyQwIiwibCQwIiwicGFyc2UiLCJoZXhkdW1wIiwibnVtIiwicG9zIiwicG9zJDEiLCJwb3MkMiIsImNoIiwibGlmdCIsImVycm9yIiwibWFwX2Vycm9yIiwibWFwX2VyciIsImdldF9leG4iLCJiaW5kX2Vycm9yIiwiYmluZF9sd3QiLCJiaW5kX3Jlc3VsdCIsImJpbmRfbHd0X2Vycm9yIiwiYmluZF9sd3RfZXJyIiwiYiIsInNldF9vbmNlIiwiYiQwIiwiYSQwIiwiaXRlcl9lcnJvciIsIm1hcCQwIiwibGluayIsImMyIiwicjIiLCJjMSIsInIxIiwiYyIsImlucyIsInQkMCIsInRzJDAiLCJ0JDEiLCJ0cyQxIiwidHMiLCJhZGQiLCJ1bmlvbiIsInRzMiIsInRzMSIsImZpbmRfbWluIiwibG9va3VwX21pbiIsImdldF9taW4iLCJyZW1vdmVfbWluIiwidGwiLCJ0YWlsX3JlY3Vyc2l2ZV9tYXAiLCJ0YWlsX3JlY3Vyc2l2ZV9tYXBpX3JldiIsImhkIiwiaXRlcmlfcyIsIml0ZXJpX3AiLCJpbm5lciIsImNvbGxlY3RfcmV2IiwibWFwX3AiLCJmaWx0ZXJfbWFwX3AiLCJjb2xsZWN0X29wdGlvbmFsX3JldiIsIm1hcGlfcyIsIm1hcGlfcCIsInJldl9tYXBfYXBwZW5kX3MiLCJyZXZfbWFwX3MiLCJyZXZfbWFwX3AiLCJsJDEiLCJmb2xkX3JpZ2h0X3MiLCJmb3JfYWxsX3MiLCJmb3JfYWxsX3AiLCJibCIsImV4aXN0c19zIiwiZXhpc3RzX3AiLCJvcHRpb25hbGl6ZSIsImZpbHRlcl9wIiwicGFydGl0aW9uX3MiLCJhY2MxIiwiYWNjMiIsInBhcnRpdGlvbl9wIiwiZ3JvdXAxIiwiZ3JvdXAyIiwibSIsInZhbGlkYXRlIiwic3RoJDEiLCJkaXNwb3NlIiwiY3JlYXRlX21lbWJlciIsInJlbGVhc2UiLCJ2YWxpZGF0ZV9hbmRfcmV0dXJuIiwidXNlIiwiY2xlYXJlZCIsImNsZWFyZWQkMCIsInByb21pc2UiLCJlbGVtZW50IiwiZWxlbWVudHMiLCJvbGRfY2xlYXJlZCIsIndhaXRfcXVldWVfbGVuZ3RoIiwiY3JlYXRlX2VtcHR5IiwicHV0IiwibXZhciIsInciLCJ3JDAiLCJ0YWtlX2F2YWlsYWJsZSIsInRha2UiLCJsb2NrIiwidW5sb2NrIiwid2l0aF9sb2NrIiwiaXNfbG9ja2VkIiwibXV0ZXgiLCJjdmFyIiwic2lnbmFsIiwiYXJnIiwiYnJvYWRjYXN0Iiwid2FrZW5lcnMiLCJicm9hZGNhc3RfZXhuIiwid2l0aF9maW5hbGlzZXIiLCJmIiwiZXZlbnQiLCJyIiwieCIsIm5leHQiLCJldiIsIndha2VuZXIiLCJ3YWl0ZXIiLCJldiQwIiwibGltaXQiLCJlIiwibGltaXRlciIsImRlbGF5ZWQiLCJwdXNoIiwiaXRlciIsImNlbGwiLCJjZWxsJDAiLCJjYW5jZWxfdGhyZWFkIiwidCIsImZyb20iLCJsb29wIiwidG9fc3RyZWFtIiwic2V0X3JlZiIsInN0cmVhbSIsIm9mX3N0cmVhbSIsInYiLCJleG4kMCIsImV4biIsImRlbGF5IiwidGhyZWFkIiwic2VuZCIsImtlZXAiLCJydW5fcCIsInJ1bl9zIiwibXV0ZXgiLCJtYXBfcCIsIm1hcF9zIiwiYXBwX3AiLCJlZiIsImFwcF9zIiwiZmlsdGVyX3AiLCJmaWx0ZXJfcyIsImZtYXBfcCIsImZtYXBfcyIsImRpZmZfcyIsInByZXZpb3VzIiwieSIsImFjY3VtX3MiLCJhY2MiLCJhY2MkMCIsImZvbGRfcyIsInJldl9mb2xkIiwibCIsIm1lcmdlX3MiLCJlbCIsIndpdGhfZmluYWxpc2VyJDAiLCJzaWduYWwiLCJsaW1pdCQwIiwiZXEiLCJzIiwia2VlcCQwIiwicnVuX3MkMCIsIm1hcF9zJDAiLCJhcHBfcyQwIiwic2YiLCJmaWx0ZXJfcyQwIiwiaSIsImZtYXBfcyQwIiwiZGlmZl9zJDAiLCJzYW1wbGVfcyIsImFjY3VtX3MkMCIsImZvbGRfcyQwIiwicmV2X2ZvbGQkMCIsIm1lcmdlX3MkMCIsInNsIiwibDFfcyIsInMxIiwibDJfcyIsInMyIiwieDEiLCJ4MiIsImwzX3MiLCJzMyIsIngzIiwibDRfcyIsInM0IiwieDQiLCJsNV9zIiwiczUiLCJ4NSIsImw2X3MiLCJzNiIsIng2IiwiYmluZF9zIiwic3ltYm9sIiwieCIsInkiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiY29tcGFyZSIsImVxdWFsIiwibWF4IiwibWluIiwiZXF1YWwkMCIsImVxdWFsJDEiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwiY29tcGFyZSQyIiwiZXF1YWwkMiIsIm1heCQwIiwibWluJDAiLCJjIiwicGVyZm9ybV9yYXciLCJvcHQiLCJjb250ZW50X3R5cGUiLCJwcm9ncmVzcyIsInVwbG9hZF9wcm9ncmVzcyIsImNvbnRlbnRzIiwib3ZlcnJpZGVfbWltZV90eXBlIiwib3ZlcnJpZGVfbWV0aG9kIiwid2l0aF9jcmVkZW50aWFscyIsInN0aCIsImhlYWRlcnMiLCJzdGgkMCIsImdldF9hcmdzIiwic3RoJDEiLCJjaGVja19oZWFkZXJzIiwidXJsIiwiYyQwIiwiYXJncyIsIm9ubHlfc3RyaW5ncyIsImZvcm1fY29udGVudHMiLCJ2YWx1ZSIsIm5hbWUiLCJiIiwiY29udGVudHMkMCIsIm92ZXJyaWRlX21ldGhvZCQwIiwibSIsInYiLCJmb3JtIiwiY29udGVudF90eXBlJDEiLCJtZXRob2QiLCJtZXRob2QkMCIsInVybCQwIiwidyIsInJlcyIsIm1pbWVfdHlwZSIsImMkMSIsImNvbnRlbnRfdHlwZSQyIiwibiIsImhlYWRlcnMkMCIsInMiLCJzdCIsImRvX2NoZWNrX2hlYWRlcnMiLCJjb2RlIiwicmVzcG9uc2UiLCJjb2RlJDAiLCJjb2RlJDEiLCJjb2RlJDIiLCJjb2RlJDMiLCJjb2RlJDQiLCJkb2MiLCJwcm9ncmVzcyQwIiwidXBsb2FkX3Byb2dyZXNzJDAiLCJsIiwibCQwIiwiZiIsImIkMCIsInBlcmZvcm1fcmF3X3VybCIsInBlcmZvcm0iLCJnZXQiLCJzbGVlcCIsImQiLCJ0IiwiaWQiLCJ5aWVsZCQwIiwid2FrZXVwIiwicHJlcnJfc3RyaW5nIiwiZXhuIiwiY2FsbF9jdXN0b21fdXJsIiwidGltZW91dCIsIm1ha2VfdXJpIiwicHJlZml4IiwidXNlcl9jYiIsImVycm9yX2NiIiwic2l6ZSIsImkiLCJ1cmkiLCJmaW5hbGl6ZSIsInBhcmVudCIsImV4ZWN1dGVkIiwiZGVsYXkiLCJ3YWl0IiwibmV3X3QiLCJhZGRfcGFyYW0iLCJjYWxsIiwicGFyYW0iLCJjYm5hbWUiLCJodHRwIiwibmV3X3VybCIsImh0dHAkMCIsImZpbGUiLCJzeW1ib2xfYmluZCIsImFzeW5jIiwib3B0X21hcCIsIm1ha2VfZXZlbnQiLCJldmVudF9raW5kIiwidXNlX2NhcHR1cmUiLCJwYXNzaXZlIiwidGFyZ2V0IiwiZWwiLCJjYW5jZWwiLCJldiIsImNhdGNoX2NhbmNlbCIsImUiLCJ3aXRoX2Vycm9yX2xvZyIsInNlcV9sb29wIiwiZXZoIiwiaGFuZGxlciIsImNhbmNlbF9oYW5kbGVyIiwiY2FuY2VsbGVkIiwiY3VyIiwiY3VyX2hhbmRsZXIiLCJsdCIsImF1eCIsImFzeW5jX2xvb3AiLCJidWZmZXJlZF9sb29wIiwiY2FuY2VsX3F1ZXVlIiwicXVldWUiLCJzcGF3biIsInNwYXduZXIiLCJydW5uZXIiLCJ0bCIsImZ1bmNfbGltaXRlZF9sb29wIiwiZXZlbnQiLCJsaW1pdGVkX2Z1bmMiLCJjb3VudCIsIm5iIiwibGltaXRlZF9sb29wIiwiZWxhcHNlZF90aW1lIiwiY2xpY2siLCJjb3B5IiwiY3V0IiwicGFzdGUiLCJkYmxjbGljayIsIm1vdXNlZG93biIsIm1vdXNldXAiLCJtb3VzZW92ZXIiLCJtb3VzZW1vdmUiLCJtb3VzZW91dCIsImtleXByZXNzIiwia2V5ZG93biIsImtleXVwIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJmb2N1cyIsImJsdXIiLCJzY3JvbGwiLCJzdWJtaXQiLCJzZWxlY3QiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsImNhbnBsYXkiLCJjYW5wbGF5dGhyb3VnaCIsImR1cmF0aW9uY2hhbmdlIiwiZW1wdGllZCIsImVuZGVkIiwibG9hZGVkZGF0YSIsImxvYWRlZG1ldGFkYXRhIiwibG9hZHN0YXJ0IiwicGF1c2UiLCJwbGF5IiwicGxheWluZyIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwibW91c2V3aGVlbCIsImR4IiwiZHkiLCJ3aGVlbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwibG9zdHBvaW50ZXJjYXB0dXJlIiwiZ290cG9pbnRlcmNhcHR1cmUiLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInRyYW5zaXRpb25lbmQiLCJlbHQiLCJ0cmFuc2l0aW9uc3RhcnQiLCJ0cmFuc2l0aW9ucnVuIiwidHJhbnNpdGlvbmNhbmNlbCIsImNsaWNrcyIsImNvcGllcyIsImN1dHMiLCJwYXN0ZXMiLCJkYmxjbGlja3MiLCJtb3VzZWRvd25zIiwibW91c2V1cHMiLCJtb3VzZW92ZXJzIiwibW91c2Vtb3ZlcyIsIm1vdXNlb3V0cyIsImtleXByZXNzZXMiLCJrZXlkb3ducyIsImtleXVwcyIsImNoYW5nZXMiLCJpbnB1dHMiLCJ0aW1ldXBkYXRlcyIsImRyYWdzdGFydHMiLCJkcmFnZW5kcyIsImRyYWdlbnRlcnMiLCJkcmFnb3ZlcnMiLCJkcmFnbGVhdmVzIiwiZHJhZ3MiLCJkcm9wcyIsIm1vdXNld2hlZWxzIiwid2hlZWxzIiwidG91Y2hzdGFydHMiLCJ0b3VjaG1vdmVzIiwidG91Y2hlbmRzIiwidG91Y2hjYW5jZWxzIiwiZm9jdXNlcyIsImJsdXJzIiwic2Nyb2xscyIsInN1Ym1pdHMiLCJzZWxlY3RzIiwiYWJvcnRzIiwiZXJyb3JzIiwibG9hZHMiLCJjYW5wbGF5cyIsImNhbnBsYXl0aHJvdWdocyIsImR1cmF0aW9uY2hhbmdlcyIsImVtcHRpZWRzIiwiZW5kZWRzIiwibG9hZGVkZGF0YXMiLCJsb2FkZWRtZXRhZGF0YXMiLCJsb2Fkc3RhcnRzIiwicGF1c2VzIiwicGxheXMiLCJwbGF5aW5ncyIsInJhdGVjaGFuZ2VzIiwic2Vla2VkcyIsInNlZWtpbmdzIiwic3RhbGxlZHMiLCJzdXNwZW5kcyIsInZvbHVtZWNoYW5nZXMiLCJ3YWl0aW5ncyIsImxvc3Rwb2ludGVyY2FwdHVyZXMiLCJnb3Rwb2ludGVyY2FwdHVyZXMiLCJwb2ludGVyZW50ZXJzIiwicG9pbnRlcmNhbmNlbHMiLCJwb2ludGVyZG93bnMiLCJwb2ludGVybGVhdmVzIiwicG9pbnRlcm1vdmVzIiwicG9pbnRlcm91dHMiLCJwb2ludGVyb3ZlcnMiLCJwb2ludGVydXBzIiwidHJhbnNpdGlvbmVuZHMiLCJ0cmFuc2l0aW9uc3RhcnRzIiwidHJhbnNpdGlvbnJ1bnMiLCJ0cmFuc2l0aW9uY2FuY2VscyIsInJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIiwib25sb2FkIiwiZG9tQ29udGVudExvYWRlZCIsIndha2V1cF9leG4iLCJyZWd1bGFyIiwicmVhZHlzdGF0ZWNoYW5nZSIsImluaXQiLCJvbnVubG9hZCIsIm9uYmVmb3JldW5sb2FkIiwib25yZXNpemUiLCJvbm9yaWVudGF0aW9uY2hhbmdlIiwib25wb3BzdGF0ZSIsIm9uaGFzaGNoYW5nZSIsIm9ub3JpZW50YXRpb25jaGFuZ2Vfb3Jfb25yZXNpeiIsIm9ucmVzaXplcyIsIm9ub3JpZW50YXRpb25jaGFuZ2VzIiwib25wb3BzdGF0ZXMiLCJvbmhhc2hjaGFuZ2VzIiwib25vcmllbnRhdGlvbmNoYW5nZXNfb3Jfb25yZXNpIiwibGltaXRlZF9vbnJlc2l6ZXMiLCJsaW1pdGVkX29ub3JpZW50YXRpb25jaGFuZ2VzIiwibGltaXRlZF9vbm9yaWVudGF0aW9uY2hhbmdlc19vIiwicmVhZGVyIiwia2luZCIsImZpbGVSZWFkZXIiLCJyZWFkQXNCaW5hcnlTdHJpbmciLCJyZWFkQXNUZXh0IiwicmVhZEFzVGV4dF93aXRoRW5jb2RpbmciLCJyZWFkQXNEYXRhVVJMIiwidG9zcyQwIiwiZSIsImlkJDAiLCJ2YWx1ZSIsImRlYnVnJDAiLCJpbmZvJDAiLCJub3RpY2UkMCIsIndhcm5pbmckMCIsImVycm9yJDAiLCJmYXRhbCQwIiwianF1ZXJ5X29uIiwic2VsZWN0b3IiLCJldmVudCIsImhhbmRsZXIiLCJvcHRpb25fc3RyaW5nIiwiaWQiLCJwbG90UE5HJDAiLCJwbG90U3R5bGVJZCIsInBsb3REaXZJZCIsInRpdGxlIiwicGxvdE5hbWUiLCJwbG90U1ZHJDAiLCJzYXZlRmlsZSQwIiwiZGF0YSIsIm1pbWUiLCJmaWxlbmFtZSIsIm1ldGhvZF90b19zdHJpbmciLCJhamF4X3JlcXVlc3QiLCJ0aW1lb3V0IiwidXJsIiwibWV0aCIsInRpbWVvdXQkMCIsInN0YXR1cyIsInJlc3BvbnNlIiwiZGF0YSQwIiwiYXN5bmMiLCJsb2MiLCJ0YXNrIiwiZXhuIiwiZ3VpZCQwIiwibW9kYWwkMCIsImFjdGlvbiIsImVsZW1lbnRfZGF0YSIsImVsZW1lbnQiLCJsYWJlbCIsImNyZWF0ZV9zb3J0IiwiY2hpbGRyZW5fdmFsdWUiLCJtYXAiLCJoaWRlX2NvZGVtaXJyb3IiLCJzaG93X2NvZGVtaXJyb3IiLCJhdG9tIiwibGlzdCIsImxhYmVsIiwibGlzdF90cnVlIiwibGlzdF9mYWxzZSIsImxhYmVsX3RydWUiLCJsYWJlbF9mYWxzZSIsInNldF9lc2NhcGUiLCJmbXQiLCJlc2NhcGUiLCJmbHVzaDAiLCJwcmludDAiLCJ0YWdmMCIsImlzX3RhZyIsIm1vdCIsInRhZyIsIm1jdCIsInByaW50IiwicyIsInAiLCJuIiwidGFnZiIsImRlZmluZV9zdHlsZXMiLCJlc2NhcGUkMCIsImwiLCJ0YmwxIiwidGJsMiIsInN0eWxlIiwic3R5bGVfbmFtZSIsIm1hcmtfb3Blbl90YWciLCJtYXJrX2Nsb3NlX3RhZyIsImVzYyIsImVzYyQwIiwiczAiLCJzMSIsInBwX29wZW5feGJveCIsImluZGVudCIsImV4dHJhX2JveCIsIndyYXAiLCJvcGVuX3RhZyIsImNsb3NlX3RhZyIsInRhZ19zdHJpbmciLCJvIiwiZnByaW50X3QiLCJwYXJhbSQwIiwicCQwIiwiZnByaW50X2xpc3QiLCJwJDEiLCJjbCIsInNlcCIsIm9wIiwidGwiLCJoZCIsImZwcmludF9saXN0X2JvZHlfc3RpY2tfbGVmdCIsIngiLCJscCIsImxhYiIsImwkMCIsInAkMiIsImNsJDAiLCJzZXAkMCIsIm9wJDAiLCJpbmRlbnQkMCIsImYiLCJmcHJpbnRfb3B0X2xhYmVsIiwicGFyYW0iLCJjbCQxIiwib3AkMSIsImJhc2VfaW5kZW50Iiwic2VwX2luZGVudCIsImNsb3NlX2V4dHJhJDAiLCJvcGVuX2V4dHJhJDAiLCJjbG9zZV9leHRyYSIsIm9wZW5fZXh0cmEiLCJ0b19mb3JtYXR0ZXIiLCJpbml0X2FjYyIsIm1lcmdlX2FjYyIsImZvcmNlX2JyZWFrczEiLCJmb3JjZV9icmVha3MyIiwiZm9yY2VfYnJlYWtzMSQwIiwibWFwX25vZGUiLCJmb3JjZV9icmVha3MiLCJjaGlsZHJlbiIsImEiLCJiIiwibHAkMCIsImF1eCIsIngkMCIsImFjYyIsIm5ld19jaGlsZHJlbiIsImFjY3MiLCJhY2MkMCIsInh5cyIsInkiLCJ4MiIsIngxIiwicGFyYW0kMSIsImFjYzAiLCJhY2MxIiwibmV3X3gxIiwiYWNjMiIsIm5ld194MiIsImFjYyQxIiwiYWNjJDIiLCJuZXdfeCIsInRvX2J1ZmZlciIsIm9wdCIsImJ1ZiIsInN0aCIsInN0aCQwIiwic3R5bGVzIiwidG9fc3RyaW5nIiwidG9fY2hhbm5lbCIsIm9jIiwidG9fc3Rkb3V0IiwidG9fc3RkZXJyIiwiZnByaW50X3QkMCIsImxhYmVsJDAiLCJ0b19idWZmZXIkMCIsInRvX3N0cmluZyQwIiwidG9fZm9ybWF0dGVyJDAiLCJ0b19jaGFubmVsJDAiLCJ0b19zdGRvdXQkMCIsInRvX3N0ZGVyciQwIiwiZXJyb3IiLCJzIiwic3RyaW5nOF9vZl9pbnQiLCJ4IiwiaSIsInN0cmluZzRfb2ZfaW50IiwicHJpbnRfYml0cyIsIm9wdCIsImxlbiIsInN0aCIsInBvcyIsInNsZW4iLCJsZW4kMCIsImxlbiQxIiwiciIsImsiLCJqIiwiYyIsImludF9zaXplIiwiZHVtbXlfdHlwZV9pZCIsIm4iLCJjcmVhdGVfdHlwZV9pZCIsImVxdWFsIiwidDIiLCJ4MiIsInQxIiwieDEiLCJoYXNoIiwiY3JlYXRlIiwiY2xlYXIiLCJ0YmwiLCJwdXQiLCJwb3MwIiwiY3JlYXRlJDAiLCJjbGVhciQwIiwicHV0JDAiLCJnZXQiLCJ0cnlfcHJlcmVhZCIsImliIiwicmVhZCIsInBvcyQwIiwicmVhZF9jaGFyIiwiYyQwIiwicGVlayIsImZyb21fYnl0ZXMiLCJzdGgkMCIsInNocmxlbiIsImZyb21fc3RyaW5nIiwiZnJvbV9jaGFubmVsIiwiaWMiLCJuJDAiLCJyZW1fbGVuIiwidG9fcmVhZCIsImFjY3UiLCJhY2N1JDAiLCJyZWFsbHlfcmVhZCIsInJlYWxseV9leHRlbmQiLCJiIiwic2xlbjAiLCJyZXFsZW4iLCJmbHVzaF90b19vdXRwdXQiLCJhYnN0cmFjdF9vdXRwdXQiLCJmbHVzaF90b19jaGFubmVsIiwib2MiLCJtYWtlX3Jvb20iLCJjcmVhdGVfY2hhbm5lbF93cml0ZXIiLCJmbHVzaF9jaGFubmVsX3dyaXRlciIsImNyZWF0ZV9vdXRwdXRfd3JpdGVyIiwib3V0IiwiZXh0ZW5kIiwiYWxsb2MiLCJhZGRfc3ViIiwiYmxpdCIsImFkZF9zdWJzdHJpbmciLCJhZGRfc3ViYnl0ZXMiLCJhZGRfc3RyaW5nIiwiYWRkX2J5dGVzIiwiYWRkX2NoYXIiLCJ1bnNhZmVfYWRkX2NoYXIiLCJhZGRfY2hhcjIiLCJjMSIsImMyIiwiYWRkX2NoYXI0IiwiYzMiLCJjNCIsInJlc2V0IiwiY29udGVudHMiLCJtIiwibWF4X2hpZ2hlc3RfYnl0ZSIsIm1heF92aW50X2J5dGVzIiwibSQwIiwiaCIsInVuc2lnbmVkX29mX3NpZ25lZCIsIndyaXRlX3V2aW50IiwiYnVmIiwiYnl0ZSQwIiwid3JpdGVfc3ZpbnQiLCJ1dmludF9vZl91aW50IiwiYnVmZmVyIiwic3ZpbnRfb2ZfaW50IiwicmVhZF91dmludCIsImF2YWlsIiwicmVhZF9zdmludCIsImNoZWNrX2VuZF9vZl9pbnB1dCIsInVpbnRfb2ZfdXZpbnQiLCJpbnRfb2Zfc3ZpbnQiLCJyZWFkX3N0cmVhbSIsIm9mX3N0cmluZyIsImkkMiIsImkkMCIsIm4kMSIsImkkMSIsInN0IiwiYSIsIm5leHQiLCJhJDAiLCJ3cml0ZV9zdHJlYW0iLCJ0b19zdHJpbmciLCJjaHVua19sZW4iLCJhY2MiLCJmbHVzaF9jaHVuayIsImwiLCJ0bCIsInRsJDAiLCJoZCIsIm4kMyIsIm4kMiIsInRlc3QiLCJzdCQwIiwibCQwIiwiYm9vbF90YWciLCJpbnQ4X3RhZyIsImludDE2X3RhZyIsImludDMyX3RhZyIsImludDY0X3RhZyIsImZsb2F0MzJfdGFnIiwiZmxvYXQ2NF90YWciLCJ1dmludF90YWciLCJzdmludF90YWciLCJzdHJpbmdfdGFnIiwiYXJyYXlfdGFnIiwidHVwbGVfdGFnIiwicmVjb3JkX3RhZyIsIm51bV92YXJpYW50X3RhZyIsInZhcmlhbnRfdGFnIiwidW5pdF90YWciLCJ0YWJsZV90YWciLCJzaGFyZWRfdGFnIiwibWFrZV9zaWduZWQiLCJoYXNoX25hbWUiLCJ3cml0ZV9oYXNodGFnIiwib2IiLCJoJDAiLCJoYXNfYXJnIiwiaCQxIiwiaCQyIiwiaCQzIiwic3RyaW5nX29mX2hhc2h0YWciLCJyZWFkX2hhc2h0YWciLCJjb250IiwieDAiLCJ4MyIsIng0IiwicmVhZF9maWVsZF9oYXNodGFnIiwid3JpdGVfbnVtdGFnIiwicmVhZF9udW10YWciLCJtYWtlX3VuaGFzaCIsInMkMCIsIndyaXRlX3RhZyIsIndyaXRlX3VudGFnZ2VkX3VuaXQiLCJ3cml0ZV91bnRhZ2dlZF9ib29sIiwid3JpdGVfdW50YWdnZWRfY2hhciIsIndyaXRlX3VudGFnZ2VkX2ludDgiLCJ3cml0ZV91bnRhZ2dlZF9pbnQxNiIsIndyaXRlX3VudGFnZ2VkX2ludDMyIiwiaGlnaCIsIndyaXRlX3VudGFnZ2VkX2Zsb2F0MzIiLCJmbG9hdF9lbmRpYW5uZXNzIiwicmVhZF91bnRhZ2dlZF9mbG9hdDY0IiwiaiQwIiwid3JpdGVfdW50YWdnZWRfZmxvYXQ2NCIsIndyaXRlX3VudGFnZ2VkX2ludDY0Iiwic2FmZXR5X3Rlc3QiLCJ5Iiwid3JpdGVfdW50YWdnZWRfc3RyaW5nIiwid3JpdGVfdW50YWdnZWRfdXZpbnQiLCJ3cml0ZV91bnRhZ2dlZF9zdmludCIsIndyaXRlX3VuaXQiLCJ3cml0ZV9ib29sIiwid3JpdGVfY2hhciIsIndyaXRlX2ludDgiLCJ3cml0ZV9pbnQxNiIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50NjQiLCJ3cml0ZV9mbG9hdDMyIiwid3JpdGVfZmxvYXQ2NCIsIndyaXRlX3N0cmluZyIsIndyaXRlX3QiLCJ0YWdnZWQiLCJ0YWdnZWQkMCIsIngkMCIsIngkMSIsIngkMiIsIm8iLCJub2RlX3RhZyIsIngkMyIsIngkNCIsIngkNSIsImEkMSIsIngkNiIsInYiLCJ4JDEwIiwieCQxMSIsIngkMTIiLCJ4JDciLCJvJDAiLCJhJDIiLCJmaWVsZHMiLCJyb3dfbnVtIiwiY29sX251bSIsInRhZyIsImFpIiwieCQ4IiwidiQwIiwieCQ5Iiwib2Zmc2V0Iiwid3JpdGVfdHJlZSIsInN0cmluZ19vZl90cmVlIiwidGFnX29mX3RyZWUiLCJyZWFkX3RhZyIsInJlYWRfdW50YWdnZWRfdW5pdCIsInJlYWRfdW50YWdnZWRfYm9vbCIsInJlYWRfdW50YWdnZWRfY2hhciIsInJlYWRfdW50YWdnZWRfaW50OCIsInJlYWRfdW50YWdnZWRfaW50MTYiLCJyZWFkX3VudGFnZ2VkX2ludDMyIiwicmVhZF91bnRhZ2dlZF9mbG9hdDMyIiwicmVhZF91bnRhZ2dlZF9pbnQ2NCIsInJlYWRfdW50YWdnZWRfc3RyaW5nIiwic3RyIiwicmVtIiwiYnl0ZXNfcmVhZCIsInJlYWRfdW50YWdnZWRfdXZpbnQiLCJyZWFkX3VudGFnZ2VkX3N2aW50IiwicmVhZF91bml0IiwicmVhZF9ib29sIiwicmVhZF9pbnQ4IiwicmVhZF9pbnQxNiIsInJlYWRfaW50MzIiLCJyZWFkX2ludDY0IiwicmVhZF9mbG9hdDMyIiwicmVhZF9mbG9hdDY0IiwicmVhZF9zdHJpbmciLCJyZWFkX3RyZWUiLCJ1bmhhc2giLCJyZWFkX2FycmF5IiwicmVhZGVyX29mX3RhZyIsInJlYWRfdHVwbGUiLCJyZWFkX3JlY29yZCIsIm5hbWUiLCJyZWFkX251bV92YXJpYW50X2NvbnQiLCJyZWFkX251bV92YXJpYW50IiwicmVhZF92YXJpYW50X2NvbnQiLCJyZWFkX3ZhcmlhbnQiLCJyZWFkX3RhYmxlIiwicmVhZGVycyIsInJlYWRfc2hhcmVkIiwidHJlZV9vZl9zdHJpbmciLCJza2lwX2J5dGVzIiwic2tpcF91bml0Iiwic2tpcF9ib29sIiwic2tpcF9pbnQ4Iiwic2tpcF9pbnQxNiIsInNraXBfaW50MzIiLCJza2lwX2ludDY0Iiwic2tpcF9mbG9hdDMyIiwic2tpcF9mbG9hdDY0Iiwic2tpcF91dmludCIsInNraXBfc3ZpbnQiLCJza2lwX3N0cmluZyIsInNraXBfYXJyYXkiLCJza2lwcGVyX29mX3RhZyIsInNraXBfdHVwbGUiLCJza2lwIiwic2tpcF9yZWNvcmQiLCJza2lwX251bV92YXJpYW50X2NvbnQiLCJza2lwX251bV92YXJpYW50Iiwic2tpcF92YXJpYW50X2NvbnQiLCJza2lwX3ZhcmlhbnQiLCJza2lwX3RhYmxlIiwiYXJyYXkiLCJyZWNvcmQiLCJ0dXBsZSIsIm1hcCIsImYiLCJmb3JtYXQiLCJzaGFyZWQiLCJvcHRfbmFtZSIsInN1ZmZpeCIsImNvbnMiLCJwIiwiYWEiLCJoZWFkZXIiLCJoZWFkZXIkMCIsInJlY29yZF9hcnJheSIsImluaXQiLCJ2aWV3X29mX3RyZWUiLCJ0IiwicHJpbnRfdmlld19vZl90cmVlIiwib3V0cHV0X3ZpZXdfb2ZfdHJlZSIsInZpZXciLCJwcmludF92aWV3Iiwib3V0cHV0X3ZpZXciLCJzcGxpdCIsInN0b3AiLCJzdGFydCIsImxvYWRfbGluZXMiLCJsb2FkIiwic3ltYm9sIiwiZGVmYXVsdF9kaWN0X3BhdGgiLCJsb2FkX2RpY3Rpb25hcnkiLCJkaWNfZmlsZSIsImZuIiwiZSQwIiwiZSIsIndyaXRlX3VuaXEiLCJsYXN0Iiwic2F2ZV9kaWN0aW9uYXJ5IiwiZmluYWxseSQwIiwic3RyZWFtJDEiLCJzdHJlYW0kMCIsInN0cmVhbSIsInZlcnNpb24iLCJvY2FtbF9sZXhfdGFibGVzIiwib2NhbWxfbGV4X3RhYmxlcyQwIiwib2NhbWxfbGV4X3RhYmxlcyQxIiwianNvbl9lcnJvciIsInMiLCJ1dGY4X29mX2NvZGUiLCJidWYiLCJ4IiwiYWRkIiwibWF4Yml0cyIsIm4iLCJ1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIiwiaSIsImoiLCJoaWdoMTAiLCJsb3cxMCIsImluaXRfbGV4ZXIiLCJmbmFtZSIsIm9wdCIsInN0aCIsImxudW0iLCJidWYkMCIsImJ1ZiQxIiwiaGV4Iiwid3JpdGVfc3BlY2lhbCIsInNyYyIsInN0YXJ0Iiwic3RvcCIsIm9iIiwic3RyIiwid3JpdGVfc3RyaW5nIiwiYyIsImV4YyQwIiwiZXhjIiwianNvbl9zdHJpbmdfb2Zfc3RyaW5nIiwid3JpdGVfbnVsbCIsIndyaXRlX2Jvb2wiLCJ3cml0ZV9kaWdpdHMiLCJkIiwid3JpdGVfaW50IiwiZmxvYXRfbmVlZHNfcGVyaW9kIiwid3JpdGVfZmxvYXQiLCJzMSIsIndyaXRlX25vcm1hbF9mbG9hdF9wcmVjIiwic2lnbmlmaWNhbnRfZmlndXJlcyIsIndyaXRlX2Zsb2F0X3ByZWMiLCJ3cml0ZV9zdGRfZmxvYXQiLCJ3cml0ZV9zdGRfZmxvYXRfcHJlYyIsIndyaXRlX2ludGxpdCIsIndyaXRlX2Zsb2F0bGl0Iiwid3JpdGVfc3RyaW5nbGl0IiwiaXRlcjIiLCJmX2VsdCIsImZfc2VwIiwibCQwIiwieSQwIiwibCIsInkiLCJ3cml0ZV9qc29uIiwibCQxIiwid3JpdGVfdHVwbGUiLCJvIiwicyQwIiwid3JpdGVfdmFyaWFudCIsIndyaXRlX2Fzc29jIiwid3JpdGVfbGlzdCIsImIiLCJzJDEiLCJmIiwicyQyIiwicyQzIiwid3JpdGVfc3RkX2pzb24iLCJ3cml0ZV9zdGRfdHVwbGUiLCJ3cml0ZV9zdGRfdmFyaWFudCIsInRvX2J1ZmZlciIsInN1ZiIsInN0aCQwIiwic3RkIiwidG9fc3RyaW5nIiwibGVuIiwib2IkMCIsInRvX2NoYW5uZWwiLCJvYyIsInRvX291dHB1dCIsIm91dCIsInRvX2ZpbGUiLCJmaWxlIiwiZSQwIiwiZSIsInNlcV90b19idWZmZXIiLCJzdCIsInNlcV90b19zdHJpbmciLCJzZXFfdG9fY2hhbm5lbCIsInNlcSIsImpzb24iLCJzZXFfdG9fZmlsZSIsInNvcnQiLCJ2IiwiayIsImEiLCJ2JDAiLCJsJDIiLCJwcCIsImZtdCIsInR1cCIsInNlcCIsInZhbHVlIiwibmFtZSIsIngkMSIsInhzIiwia2V5IiwieHMkMCIsIngkMCIsIngkMiIsIngkMyIsIngkNCIsIngkNSIsIngkNiIsInNob3ciLCJlcXVhbCIsImEkMCIsImIkMCIsImIkMSIsImEkMSIsInlzIiwiY29tcGFyZV9rZXlzIiwia2V5JDAiLCJ5cyQwIiwidmFsdWUkMCIsInJlc3VsdCIsInlzJDEiLCJ4cyQxIiwiYiQyIiwiYSQyIiwibmFtZSQwIiwicmVzdWx0JDAiLCJiJDMiLCJhJDMiLCJiJDQiLCJhJDQiLCJiJDUiLCJhJDUiLCJiJDYiLCJhJDYiLCJiJDciLCJhJDciLCJwcF9saXN0IiwicHB4IiwicHBfc2VwIiwiaXNfYXRvbSIsImZvcm1hdCIsImluc2lkZV9ib3giLCJzJDQiLCJvcCIsInJlcHJlc2VudGF0aW9uIiwicmVwcmVzZW50YXRpb24kMCIsInBwJDAiLCJwcmV0dHlfcHJpbnQiLCJwcmV0dHlfdG9fc3RyaW5nIiwicHJldHR5X3RvX2NoYW5uZWwiLCJoZXgkMCIsIndyaXRlX3NwZWNpYWwkMCIsIndyaXRlX3N0cmluZyQwIiwianNvbl9zdHJpbmdfb2Zfc3RyaW5nJDAiLCJ3cml0ZV9udWxsJDAiLCJ3cml0ZV9ib29sJDAiLCJ3cml0ZV9kaWdpdHMkMCIsIndyaXRlX2ludCQwIiwiZmxvYXRfbmVlZHNfcGVyaW9kJDAiLCJ3cml0ZV9mbG9hdCQwIiwid3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMkMCIsIndyaXRlX2Zsb2F0X3ByZWMkMCIsIndyaXRlX3N0ZF9mbG9hdCQwIiwid3JpdGVfc3RkX2Zsb2F0X3ByZWMkMCIsIml0ZXIyJDAiLCJmX3NlcCQwIiwid3JpdGVfanNvbiQwIiwid3JpdGVfYXNzb2MkMCIsIndyaXRlX2xpc3QkMCIsIndyaXRlX3N0ZF9qc29uJDAiLCJ0b19idWZmZXIkMCIsInRvX3N0cmluZyQwIiwidG9fY2hhbm5lbCQwIiwidG9fb3V0cHV0JDAiLCJ0b19maWxlJDAiLCJzZXFfdG9fYnVmZmVyJDAiLCJzZXFfdG9fc3RyaW5nJDAiLCJzZXFfdG9fY2hhbm5lbCQwIiwic2VxX3RvX2ZpbGUkMCIsInNvcnQkMCIsInBwX2xpc3QkMCIsImlzX2F0b20kMCIsImZvcm1hdCQwIiwicHAkMSIsInBwJDIiLCJzaG93JDAiLCJlcXVhbCQwIiwicHJldHR5X3ByaW50JDAiLCJwcmV0dHlfdG9fc3RyaW5nJDAiLCJwcmV0dHlfdG9fY2hhbm5lbCQwIiwiaGV4JDEiLCJjdXN0b21fZXJyb3IiLCJkZXNjciIsImxleGJ1ZiIsIm9mZnMiLCJib2wiLCJwb3MxIiwicG9zMiIsImZpbGVfbGluZSIsImJ5dGVzIiwibXNnIiwibGV4ZXJfZXJyb3IiLCJyZWFkX2p1bmsiLCJsb25nX2Vycm9yIiwianVuayIsImV4dHJhX2p1bmsiLCJtaW4xMCIsIm1heDEwIiwiZXh0cmFjdF9wb3NpdGl2ZV9pbnQiLCJleHRyYWN0X25lZ2F0aXZlX2ludCIsIm5ld2xpbmUiLCJhZGRfbGV4ZW1lIiwicmVhZF9qc29uIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJmaW5pc2hfc3RyaW5nIiwiYWNjIiwicmVhZF9zcGFjZSIsInJlYWRfb2JqZWN0X2VuZCIsImZpZWxkX25hbWUiLCJyZWFkX2lkZW50IiwicmVhZF9jb2xvbiIsInJlYWRfb2JqZWN0X3NlcCIsImZpZWxkX25hbWUkMCIsImFjYyQwIiwicmVhZF9hcnJheV9lbmQiLCJyZWFkX2FycmF5X3NlcCIsImZpbmlzaF9jb21tZW50IiwiZmluaXNoX2VzY2FwZWRfY2hhciIsIm1hcF9zdHJpbmciLCJjJDAiLCJvY2FtbF9sZXhfc3RhdGUkMSIsIm9jYW1sX2xleF9zdGF0ZSQyIiwiYyQxIiwiZCQwIiwiZmluaXNoX3N0cmluZ2xpdCIsImZpbmlzaF92YXJpYW50IiwicmVhZF9ndCIsInJlYWRfbHQiLCJyZWFkX2NvbW1hIiwic3RhcnRfYW55X3ZhcmlhbnQiLCJyZWFkX2VvZiIsInJlYWRfbnVsbCIsInJlYWRfbnVsbF9pZl9wb3NzaWJsZSIsInJlYWRfYm9vbCIsInJlYWRfaW50IiwicmVhZF9pbnQzMiIsInJlYWRfaW50NjQiLCJyZWFkX251bWJlciIsInJlYWRfc3RyaW5nIiwibWFwX2lkZW50IiwicmVhZF9zZXF1ZW5jZSIsInJlYWRfY2VsbCIsImluaXRfYWNjIiwicmVhZF9saXN0X3JldiIsInJlYWRfdHVwbGUiLCJyZWFkX3R1cGxlX2VuZCIsInJlYWRfdHVwbGVfZW5kMiIsInJlYWRfdHVwbGVfc2VwIiwicmVhZF90dXBsZV9zZXAyIiwicmVhZF9hYnN0cmFjdF9maWVsZHMiLCJyZWFkX2tleSIsInJlYWRfZmllbGQiLCJyZWFkX2xjdXJsIiwic3RhcnRfYW55X3R1cGxlIiwicmVhZF9scGFyIiwicmVhZF9ycGFyIiwicmVhZF9sYnIiLCJyZWFkX3JiciIsInNraXBfanNvbiIsImZpbmlzaF9za2lwX3N0cmluZ2xpdCIsInNraXBfaWRlbnQiLCJmaW5pc2hfc2tpcF92YXJpYW50IiwiYnVmZmVyX2pzb24iLCJmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCIsImJ1ZmZlcl9zcGFjZSIsImJ1ZmZlcl9pZGVudCIsImJ1ZmZlcl9jb2xvbiIsIm9jYW1sX2xleF9zdGF0ZSQzIiwib2NhbWxfbGV4X3N0YXRlJDQiLCJvY2FtbF9sZXhfc3RhdGUkNSIsIm9jYW1sX2xleF9zdGF0ZSQ2Iiwib2NhbWxfbGV4X3N0YXRlJDciLCJvY2FtbF9sZXhfc3RhdGUkOCIsImZpbmlzaF9idWZmZXJfY29tbWVudCIsInJlYWRfaW50OCIsInJlYWRfbGlzdCIsInJlYWRfYXJyYXkiLCJ0bCIsInIiLCJyZWFkX2ZpZWxkcyIsImZyb21fbGV4YnVmIiwiZnJvbV9zdHJpbmckMCIsImZyb21fY2hhbm5lbCQwIiwiaWMiLCJmcm9tX2ZpbGUiLCJzZXFfZnJvbV9sZXhidWYiLCJmaW4iLCJmaW5fZSQwIiwiZmluX2UiLCJzZXFfZnJvbV9zdHJpbmciLCJzZXFfZnJvbV9jaGFubmVsIiwic2VxX2Zyb21fZmlsZSIsImZuYW1lJDAiLCJsaW5lc2VxX2Zyb21fY2hhbm5lbCIsImxudW0wIiwibGluZSIsImxpbmVzZXFfZnJvbV9maWxlIiwicHJldHRpZnkiLCJjb21wYWN0IiwidHlwZXJyIiwianMiLCJtZW1iZXIiLCJvYmoiLCJwYXRoIiwib2JqJDAiLCJhc3NvYyIsIm9iaiQxIiwiaW5kZXgiLCJ3cmFwcGVkX2luZGV4IiwibWFwIiwidG9fYXNzb2MiLCJ0b19vcHRpb24iLCJ0b19ib29sIiwidG9fYm9vbF9vcHRpb24iLCJ0b19udW1iZXIiLCJ0b19udW1iZXJfb3B0aW9uIiwidG9fZmxvYXQiLCJ0b19mbG9hdF9vcHRpb24iLCJ0b19pbnQiLCJ0b19pbnRfb3B0aW9uIiwidG9fbGlzdCIsInRvX3N0cmluZyQxIiwidG9fc3RyaW5nX29wdGlvbiIsImNvbnZlcnRfZWFjaCIsImZpbHRlcl9tYXAiLCJmbGF0dGVuIiwibDIiLCJmaWx0ZXJfaW5kZXgiLCJmaWx0ZXJfbGlzdCIsImZpbHRlcl9tZW1iZXIiLCJmaWx0ZXJfYXNzb2MiLCJmaWx0ZXJfYm9vbCIsImZpbHRlcl9pbnQiLCJmaWx0ZXJfZmxvYXQiLCJmaWx0ZXJfbnVtYmVyIiwiZmlsdGVyX3N0cmluZyIsImtleXMiLCJ2YWx1ZXMiLCJjb21iaW5lIiwiZmlyc3QiLCJzZWNvbmQiLCJ0b19iYXNpYyIsImhleCQyIiwid3JpdGVfc3BlY2lhbCQxIiwid3JpdGVfc3RyaW5nJDEiLCJqc29uX3N0cmluZ19vZl9zdHJpbmckMSIsIndyaXRlX251bGwkMSIsIndyaXRlX2Jvb2wkMSIsIndyaXRlX2RpZ2l0cyQxIiwid3JpdGVfaW50JDEiLCJmbG9hdF9uZWVkc19wZXJpb2QkMSIsIndyaXRlX2Zsb2F0JDEiLCJ3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyQxIiwid3JpdGVfZmxvYXRfcHJlYyQxIiwid3JpdGVfc3RkX2Zsb2F0JDEiLCJ3cml0ZV9zdGRfZmxvYXRfcHJlYyQxIiwid3JpdGVfaW50bGl0JDAiLCJpdGVyMiQxIiwiZl9zZXAkMSIsIndyaXRlX2pzb24kMSIsIndyaXRlX3R1cGxlJDAiLCJ3cml0ZV9hc3NvYyQxIiwid3JpdGVfbGlzdCQxIiwid3JpdGVfdmFyaWFudCQwIiwid3JpdGVfc3RkX2pzb24kMSIsIndyaXRlX3N0ZF90dXBsZSQwIiwid3JpdGVfc3RkX3ZhcmlhbnQkMCIsInRvX2J1ZmZlciQxIiwidG9fc3RyaW5nJDIiLCJ0b19jaGFubmVsJDEiLCJ0b19vdXRwdXQkMSIsInRvX2ZpbGUkMSIsInNlcV90b19idWZmZXIkMSIsInNlcV90b19zdHJpbmckMSIsInNlcV90b19jaGFubmVsJDEiLCJzZXFfdG9fZmlsZSQxIiwic29ydCQxIiwicHBfbGlzdCQxIiwiaXNfYXRvbSQxIiwiZm9ybWF0JDEiLCJwcCQzIiwicHAkNCIsInNob3ckMSIsImVxdWFsJDEiLCJwcmV0dHlfcHJpbnQkMSIsInByZXR0eV90b19zdHJpbmckMSIsInByZXR0eV90b19jaGFubmVsJDEiLCJoZXgkMyIsImN1c3RvbV9lcnJvciQwIiwibGV4ZXJfZXJyb3IkMCIsInJlYWRfanVuayQwIiwibG9uZ19lcnJvciQwIiwibWluMTAkMCIsIm1heDEwJDAiLCJleHRyYWN0X3Bvc2l0aXZlX2ludCQwIiwiZXh0cmFjdF9uZWdhdGl2ZV9pbnQkMCIsIm5ld2xpbmUkMCIsImFkZF9sZXhlbWUkMCIsInJlYWRfanNvbiQwIiwiZmluaXNoX3N0cmluZyQwIiwicmVhZF9zcGFjZSQwIiwicmVhZF9vYmplY3RfZW5kJDAiLCJyZWFkX2lkZW50JDAiLCJyZWFkX2NvbG9uJDAiLCJyZWFkX29iamVjdF9zZXAkMCIsInJlYWRfYXJyYXlfZW5kJDAiLCJyZWFkX2FycmF5X3NlcCQwIiwiYWNjJDEiLCJyZWFkX3R1cGxlX2VuZCQwIiwicmVhZF90dXBsZV9zZXAkMCIsImNvbnMiLCJmaW5pc2hfdmFyaWFudCQwIiwiZmluaXNoX2NvbW1lbnQkMCIsImZpbmlzaF9lc2NhcGVkX2NoYXIkMCIsIm1hcF9zdHJpbmckMCIsImZpbmlzaF9zdHJpbmdsaXQkMCIsInJlYWRfZ3QkMCIsInJlYWRfbHQkMCIsInJlYWRfY29tbWEkMCIsInN0YXJ0X2FueV92YXJpYW50JDAiLCJyZWFkX2VvZiQwIiwicmVhZF9udWxsJDAiLCJyZWFkX251bGxfaWZfcG9zc2libGUkMCIsInJlYWRfYm9vbCQwIiwicmVhZF9pbnQkMCIsInJlYWRfaW50MzIkMCIsInJlYWRfaW50NjQkMCIsInJlYWRfbnVtYmVyJDAiLCJyZWFkX3N0cmluZyQwIiwibWFwX2lkZW50JDAiLCJyZWFkX3NlcXVlbmNlJDAiLCJyZWFkX2xpc3RfcmV2JDAiLCJyZWFkX3R1cGxlJDAiLCJwb3MiLCJyZWFkX3R1cGxlX2VuZDIkMCIsInJlYWRfdHVwbGVfc2VwMiQwIiwicmVhZF9hYnN0cmFjdF9maWVsZHMkMCIsInJlYWRfbGN1cmwkMCIsInN0YXJ0X2FueV90dXBsZSQwIiwicmVhZF9scGFyJDAiLCJyZWFkX3JwYXIkMCIsInJlYWRfbGJyJDAiLCJyZWFkX3JiciQwIiwic2tpcF9qc29uJDAiLCJmaW5pc2hfc2tpcF9zdHJpbmdsaXQkMCIsInNraXBfaWRlbnQkMCIsImZpbmlzaF9za2lwX3ZhcmlhbnQkMCIsImJ1ZmZlcl9qc29uJDAiLCJmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCQwIiwiYnVmZmVyX3NwYWNlJDAiLCJidWZmZXJfaWRlbnQkMCIsImJ1ZmZlcl9jb2xvbiQwIiwib2NhbWxfbGV4X3N0YXRlJDkiLCJvY2FtbF9sZXhfc3RhdGUkMTAiLCJvY2FtbF9sZXhfc3RhdGUkMTEiLCJvY2FtbF9sZXhfc3RhdGUkMTIiLCJvY2FtbF9sZXhfc3RhdGUkMTMiLCJvY2FtbF9sZXhfc3RhdGUkMTQiLCJvY2FtbF9sZXhfc3RhdGUkMTUiLCJvY2FtbF9sZXhfc3RhdGUkMTYiLCJmaW5pc2hfYnVmZmVyX2NvbW1lbnQkMCIsImp1bmskMCIsInJlYWRfaW50OCQwIiwicmVhZF9saXN0JDAiLCJyZWFkX2FycmF5JDAiLCJyZWFkX2ZpZWxkcyQwIiwiZnJvbV9sZXhidWYkMCIsImZyb21fc3RyaW5nJDIiLCJmcm9tX2NoYW5uZWwkMiIsImZyb21fZmlsZSQwIiwic2VxX2Zyb21fbGV4YnVmJDAiLCJzZXFfZnJvbV9zdHJpbmckMCIsInNlcV9mcm9tX2NoYW5uZWwkMCIsInNlcV9mcm9tX2ZpbGUkMCIsImxpbmVzZXFfZnJvbV9jaGFubmVsJDAiLCJsaW5lc2VxX2Zyb21fZmlsZSQwIiwicHJldHRpZnkkMCIsImNvbXBhY3QkMCIsInR5cGVyciQwIiwibWVtYmVyJDAiLCJwYXRoJDAiLCJpbmRleCQwIiwibWFwJDAiLCJ0b19hc3NvYyQwIiwidG9fb3B0aW9uJDAiLCJ0b19ib29sJDAiLCJ0b19ib29sX29wdGlvbiQwIiwidG9fbnVtYmVyJDAiLCJ0b19udW1iZXJfb3B0aW9uJDAiLCJ0b19mbG9hdCQwIiwidG9fZmxvYXRfb3B0aW9uJDAiLCJ0b19pbnQkMCIsInRvX2ludF9vcHRpb24kMCIsInRvX2xpc3QkMCIsInRvX3N0cmluZyQzIiwidG9fc3RyaW5nX29wdGlvbiQwIiwiY29udmVydF9lYWNoJDAiLCJmaWx0ZXJfbWFwJDAiLCJmbGF0dGVuJDAiLCJmaWx0ZXJfaW5kZXgkMCIsImZpbHRlcl9saXN0JDAiLCJmaWx0ZXJfbWVtYmVyJDAiLCJmaWx0ZXJfYXNzb2MkMCIsImZpbHRlcl9ib29sJDAiLCJmaWx0ZXJfaW50JDAiLCJmaWx0ZXJfZmxvYXQkMCIsImZpbHRlcl9udW1iZXIkMCIsImZpbHRlcl9zdHJpbmckMCIsImtleXMkMCIsInZhbHVlcyQwIiwiY29tYmluZSQwIiwiaGV4JDQiLCJ3cml0ZV9zcGVjaWFsJDIiLCJ3cml0ZV9zdHJpbmckMiIsImpzb25fc3RyaW5nX29mX3N0cmluZyQyIiwid3JpdGVfbnVsbCQyIiwid3JpdGVfYm9vbCQyIiwid3JpdGVfaW50bGl0JDEiLCJ3cml0ZV9mbG9hdGxpdCQwIiwid3JpdGVfc3RyaW5nbGl0JDAiLCJpdGVyMiQyIiwiZl9zZXAkMiIsIndyaXRlX2pzb24kMiIsIndyaXRlX2Fzc29jJDIiLCJ3cml0ZV9saXN0JDIiLCJ3cml0ZV90dXBsZSQxIiwid3JpdGVfdmFyaWFudCQxIiwid3JpdGVfc3RkX2pzb24kMiIsIndyaXRlX3N0ZF90dXBsZSQxIiwid3JpdGVfc3RkX3ZhcmlhbnQkMSIsInRvX2J1ZmZlciQyIiwidG9fc3RyaW5nJDQiLCJ0b19jaGFubmVsJDIiLCJ0b19vdXRwdXQkMiIsInRvX2ZpbGUkMiIsInNlcV90b19idWZmZXIkMiIsInNlcV90b19zdHJpbmckMiIsInNlcV90b19jaGFubmVsJDIiLCJzZXFfdG9fZmlsZSQyIiwic29ydCQyIiwicHBfbGlzdCQyIiwiaXNfYXRvbSQyIiwiZm9ybWF0JDIiLCJwcCQ1IiwicHAkNiIsInNob3ckMiIsImVxdWFsJDIiLCJwcmV0dHlfcHJpbnQkMiIsInByZXR0eV90b19zdHJpbmckMiIsInByZXR0eV90b19jaGFubmVsJDIiLCJoZXgkNSIsImN1c3RvbV9lcnJvciQxIiwibGV4ZXJfZXJyb3IkMSIsInJlYWRfanVuayQxIiwibG9uZ19lcnJvciQxIiwibWluMTAkMSIsIm1heDEwJDEiLCJuZXdsaW5lJDEiLCJhZGRfbGV4ZW1lJDEiLCJyZWFkX2pzb24kMSIsImZpbmlzaF9zdHJpbmdsaXQkMSIsInJlYWRfc3BhY2UkMSIsInJlYWRfb2JqZWN0X2VuZCQxIiwicmVhZF9pZGVudCQxIiwicmVhZF9jb2xvbiQxIiwicmVhZF9vYmplY3Rfc2VwJDEiLCJyZWFkX2FycmF5X2VuZCQxIiwicmVhZF9hcnJheV9zZXAkMSIsInJlYWRfdHVwbGVfZW5kJDEiLCJyZWFkX3R1cGxlX3NlcCQxIiwiZmluaXNoX3ZhcmlhbnQkMSIsImZpbmlzaF9jb21tZW50JDEiLCJmaW5pc2hfc3RyaW5nJDEiLCJmaW5pc2hfZXNjYXBlZF9jaGFyJDEiLCJtYXBfc3RyaW5nJDEiLCJyZWFkX2d0JDEiLCJyZWFkX2x0JDEiLCJyZWFkX2NvbW1hJDEiLCJzdGFydF9hbnlfdmFyaWFudCQxIiwicmVhZF9lb2YkMSIsInJlYWRfbnVsbCQxIiwicmVhZF9udWxsX2lmX3Bvc3NpYmxlJDEiLCJyZWFkX2Jvb2wkMSIsInJlYWRfaW50JDEiLCJzdGFydCQwIiwic3RvcCQwIiwibiQwIiwiaSQwIiwicmVhZF9pbnQzMiQxIiwicmVhZF9pbnQ2NCQxIiwicmVhZF9udW1iZXIkMSIsInJlYWRfc3RyaW5nJDEiLCJtYXBfaWRlbnQkMSIsInJlYWRfc2VxdWVuY2UkMSIsInJlYWRfbGlzdF9yZXYkMSIsInJlYWRfdHVwbGUkMSIsInJlYWRfdHVwbGVfZW5kMiQxIiwicmVhZF90dXBsZV9zZXAyJDEiLCJyZWFkX2Fic3RyYWN0X2ZpZWxkcyQxIiwicmVhZF9sY3VybCQxIiwic3RhcnRfYW55X3R1cGxlJDEiLCJyZWFkX2xwYXIkMSIsInJlYWRfcnBhciQxIiwicmVhZF9sYnIkMSIsInJlYWRfcmJyJDEiLCJza2lwX2pzb24kMSIsImZpbmlzaF9za2lwX3N0cmluZ2xpdCQxIiwic2tpcF9pZGVudCQxIiwiZmluaXNoX3NraXBfdmFyaWFudCQxIiwiYnVmZmVyX2pzb24kMSIsImZpbmlzaF9idWZmZXJfc3RyaW5nbGl0JDEiLCJidWZmZXJfc3BhY2UkMSIsImJ1ZmZlcl9pZGVudCQxIiwiYnVmZmVyX2NvbG9uJDEiLCJmaW5pc2hfYnVmZmVyX2NvbW1lbnQkMSIsImp1bmskMSIsInJlYWRfaW50OCQxIiwicmVhZF9saXN0JDEiLCJyZWFkX2FycmF5JDEiLCJyZWFkX2ZpZWxkcyQxIiwiZnJvbV9sZXhidWYkMSIsImZyb21fc3RyaW5nJDQiLCJmcm9tX2NoYW5uZWwkNCIsImZyb21fZmlsZSQxIiwic2VxX2Zyb21fbGV4YnVmJDEiLCJzZXFfZnJvbV9zdHJpbmckMSIsInNlcV9mcm9tX2NoYW5uZWwkMSIsInNlcV9mcm9tX2ZpbGUkMSIsImxpbmVzZXFfZnJvbV9jaGFubmVsJDEiLCJsaW5lc2VxX2Zyb21fZmlsZSQxIiwicHJldHRpZnkkMSIsImNvbXBhY3QkMSIsInR5cGVyciQxIiwibWVtYmVyJDEiLCJwYXRoJDEiLCJpbmRleCQxIiwibWFwJDEiLCJ0b19hc3NvYyQxIiwidG9fb3B0aW9uJDEiLCJ0b19ib29sJDEiLCJ0b19ib29sX29wdGlvbiQxIiwidG9fbnVtYmVyJDEiLCJ0b19udW1iZXJfb3B0aW9uJDEiLCJ0b19mbG9hdCQxIiwidG9fZmxvYXRfb3B0aW9uJDEiLCJ0b19pbnQkMSIsInRvX2ludF9vcHRpb24kMSIsInRvX2xpc3QkMSIsInRvX3N0cmluZyQ1IiwidG9fc3RyaW5nX29wdGlvbiQxIiwiY29udmVydF9lYWNoJDEiLCJmaWx0ZXJfbWFwJDEiLCJmbGF0dGVuJDEiLCJmaWx0ZXJfaW5kZXgkMSIsImZpbHRlcl9saXN0JDEiLCJmaWx0ZXJfbWVtYmVyJDEiLCJmaWx0ZXJfYXNzb2MkMSIsImZpbHRlcl9ib29sJDEiLCJmaWx0ZXJfaW50JDEiLCJmaWx0ZXJfZmxvYXQkMSIsImZpbHRlcl9udW1iZXIkMSIsImZpbHRlcl9zdHJpbmckMSIsImtleXMkMSIsInZhbHVlcyQxIiwiY29tYmluZSQxIiwiaW5wdXRfZmlsZSIsImZuYW1lIiwicmVhZCIsImljIiwieCIsImUkMCIsImUiLCJvdXRwdXRfZmlsZSIsIndyaXRlIiwib2MiLCJmcm9tX2NoYW5uZWwiLCJsZW4iLCJvcHQiLCJzdGgiLCJzaHJsZW4iLCJpYiIsImZyb21fZmlsZSIsInRvX2NoYW5uZWwiLCJvYiIsInRvX2ZpbGUiLCJmcm9tX2xleGJ1ZiIsImxzIiwibGV4YnVmIiwic3RyZWFtIiwiZnJvbV9zdHJpbmciLCJidWYiLCJsbnVtIiwicyIsImZyb21fY2hhbm5lbCQwIiwiZnJvbV9maWxlJDAiLCJzcmMiLCJmbmFtZTAiLCJzZXFfdW5mb2xkIiwiZiIsInUiLCJ1JDAiLCJzZXFfZnJvbV9sZXhidWYiLCJmaW4iLCJ2Iiwic2VxX2Zyb21fc3RyaW5nIiwic2VxX2Zyb21fY2hhbm5lbCIsInNlcV9mcm9tX2ZpbGUiLCJmaW4kMCIsImxpc3RfZnJvbV9zdHJpbmciLCJzZXEiLCJsaXN0X2Zyb21fY2hhbm5lbCIsImxpc3RfZnJvbV9maWxlIiwidG9fc3RyaW5nIiwidG9fY2hhbm5lbCQwIiwidG9fZmlsZSQwIiwic2VxX3RvX3N0cmluZyIsInN0aCQwIiwibGYiLCJzZXFfdG9fY2hhbm5lbCIsInNlcV90b19maWxlIiwibGlzdF90b19zdHJpbmciLCJsIiwibGlzdF90b19jaGFubmVsIiwibGlzdF90b19maWxlIiwicHJlc2V0X3Vua25vd25fZmllbGRfaGFuZGxlciIsImxvYyIsIm5hbWUiLCJtc2ciLCJ1bmtub3duX2ZpZWxkX2hhbmRsZXIiLCJzdHJpbmdfb2ZfcGF0aCIsIm4iLCJlcnJvciIsInBhdGgiLCJzdHJpbmdfb2ZfZXJyb3IiLCJ2YWxpZGF0ZV9saXN0IiwiaSIsImwkMCIsInN1YnBhdGgiLCJlcnIiLCJ2YWxpZGF0ZV9hcnJheSIsImEiLCJpJDAiLCJ2YWxpZGF0ZV9vcHRpb24iLCJlcnJvcl93aXRoX2xpbmUiLCJwIiwiczIiLCJsaXN0X2l0ZXIiLCJzZXAiLCJsJDEiLCJ5JDAiLCJ5IiwiYXJyYXlfaXRlciIsIndyaXRlX2NvbW1hIiwid3JpdGVfbGlzdCIsIndyaXRlX2l0ZW0iLCJ3cml0ZV9hcnJheSIsIndyaXRlX2Fzc29jX2xpc3QiLCJ3cml0ZV9rZXkiLCJrIiwid3JpdGVfYXNzb2NfYXJyYXkiLCJ3cml0ZV9vcHRpb24iLCJ3cml0ZV9zdGRfb3B0aW9uIiwid3JpdGVfbnVsbGFibGUiLCJ3cml0ZV9pbnRfYXNfc3RyaW5nIiwid3JpdGVfaW50OCIsIndyaXRlX2ludDhfYXNfc3RyaW5nIiwid3JpdGVfaW50MzIiLCJ3cml0ZV9pbnQzMl9hc19zdHJpbmciLCJ3cml0ZV9pbnQ2NCIsIndyaXRlX2ludDY0X2FzX3N0cmluZyIsIm1pbl9mbG9hdCIsIm1heF9mbG9hdCIsIndyaXRlX2Zsb2F0X2FzX2ludCIsIndyaXRlX2Zsb2F0X2FzX2ludF9zdHJpbmciLCJyZWFkX251bGwiLCJsYiIsInJlYWRfYm9vbCIsInJlYWRfaW50IiwicmVhZF9pbnQ4IiwicmVhZF9pbnQzMiIsInJlYWRfaW50NjQiLCJyZWFkX251bWJlciIsInJlYWRfc3RyaW5nIiwicmVhZF9qc29uIiwicmVhZF9saXN0IiwicmVhZF9pdGVtIiwicmVhZF9hcnJheSIsInJlYWRfYXNzb2NfbGlzdF9yZXYiLCJyZWFkX2tleSIsImFjYyIsInJlYWRfYXNzb2NfbGlzdCIsInJlYWRfYXNzb2NfYXJyYXkiLCJ0bCIsInIiLCJyZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIiwibWlzc2luZ190dXBsZV9maWVsZHMiLCJyZXFfZmllbGRzIiwibWlzc2luZyIsIm1pc3NpbmdfZmllbGQiLCJmaWVsZF9uYW1lIiwibWlzc2luZ19maWVsZHMiLCJiaXRfZmllbGRzIiwiZmllbGRfbmFtZXMiLCJ6IiwiaiIsImludmFsaWRfdmFyaWFudF90YWciLCJyZWFkX3dpdGhfYWRhcHRlciIsIm5vcm1hbGl6ZSIsInJlYWRlciIsImFzdCIsImFzdCQwIiwibGIkMCIsIndyaXRlX3dpdGhfYWRhcHRlciIsInJlc3RvcmUiLCJ3cml0ZXIiLCJvYl90bXAiLCJzX3RtcCIsInJlYWRfZXJyb3IiLCJyZWFkX2Vycm9yX2F0IiwidGFnX2Vycm9yIiwidGFnIiwidW5zdXBwb3J0ZWRfdmFyaWFudCIsImgiLCJoYXNfYXJnIiwiZ2V0X3VuaXRfcmVhZGVyIiwicmVhZF91bml0IiwiZ2V0X2Jvb2xfcmVhZGVyIiwiZ2V0X2ludF9yZWFkZXIiLCJnZXRfY2hhcl9yZWFkZXIiLCJyZWFkX2NoYXIiLCJnZXRfaW50MzJfcmVhZGVyIiwiZ2V0X2ludDY0X3JlYWRlciIsImdldF9mbG9hdDMyX3JlYWRlciIsImdldF9mbG9hdDY0X3JlYWRlciIsInJlYWRfZmxvYXQzMiIsInJlYWRfZmxvYXQ2NCIsImdldF9zdHJpbmdfcmVhZGVyIiwicmVhZF9hcnJheV92YWx1ZSIsImdldF9yZWFkZXIiLCJnZXRfYXJyYXlfcmVhZGVyIiwiZ2V0X2xpc3RfcmVhZGVyIiwid3JpdGVfdW50YWdnZWRfb3B0aW9uIiwieCQwIiwiYXJyYXlfaW5pdDIiLCJhcnJheV9pdGVyMiIsIndyaXRlX3VudGFnZ2VkX2FycmF5IiwiY2VsbF90YWciLCJ3cml0ZV91bnRhZ2dlZF9saXN0Iiwic2FmZV9yIiwidHlwZV9maWVsZF9uYW1lIiwibm9ybWFsaXplX3R5cGVfZmllbGQiLCJmaWVsZHMiLCJ0eXBlIiwicmVzdG9yZV90eXBlX2ZpZWxkIiwiZmllbGRzJDAiLCJub3JtYWxpemUkMCIsInZhbHVlIiwicmVzdG9yZSQwIiwidGJsIiwiaXNfa25vd25fdGFnIiwiaXNfY2F0Y2hfYWxsX3RhZyIsImNhdGNoX2FsbF90YWciLCJmb3VuZCIsImZpZWxkIiwidmFyaWFudCIsImZpZWxkcyQxIiwidGFnZ2VkIiwidGFnJDAiLCJyZWFsX3YiLCJyZWFsX3RhZyIsIm9wdF92YWx1ZSIsInRhZyQxIiwidiQwIiwiY3JlYXRlIiwibiIsImEiLCJsZW5ndGgiLCJnZXQiLCJpIiwic2V0IiwidiIsIm4kMSIsIm4kMCIsImFycmF5IiwiaW5pdCIsImYiLCJhcHBlbmQiLCJiIiwibGIiLCJsYSIsImMiLCJ4IiwiY29uY2F0IiwibCIsImwkMCIsInQiLCJlbHQiLCJzb2wiLCJtIiwiayIsImwkMSIsInEiLCJ0JDAiLCJzIiwib2Zmc2V0IiwiayQwIiwiayQxIiwib2Zmc2V0JDAiLCJzdWIiLCJzdGFydCIsImxlbiIsInNpemUiLCJjb3B5IiwiZmlsbCIsImkkMCIsIm9mX2xpc3QiLCJkZWZhdWx0JDAiLCJpdGVyIiwiaXRlcmkiLCJmb2xkX2xlZnRpIiwiZm9sZF9yaWdodGkiLCJtYXAiLCJibGl0IiwiYTEiLCJvZnMxIiwiYTIiLCJvZnMyIiwicHJpbnQiLCJ0cmFpbGluZyIsInByX3MiLCJwcl9hIiwibWF4X2FycmF5X3NpemUxIiwibWF4X2FycmF5X3NpemUyIiwiZXVjbGlkZWVuIiwicCIsInAkMCIsImF1eCIsIm0kMCIsImEkMCIsImEkMSIsImoiLCJnMiIsImcxIiwieSIsImUiLCJnIiwiY3VycmVudCIsImluaXQkMCIsIm9wdCIsInByX3NlcCIsInByX2VsIiwic3RoIiwiY3N0IiwiZmxvYXRfaXNfemVybyIsInBvdyIsImFjY3UiLCJhY2N1JDAiLCJhY2N1JDEiLCJmYWN0IiwiaSQxIiwiZ2V0X3Byb2R1Y3RfaW1hZ2Vfb2NjIiwiY29tYmluZSIsInQkMSIsIm9sZCQxIiwib2xkIiwib2NjIiwiaCIsIm9jYyQwIiwib2xkJDAiLCJnZXRfcHJvZHVjdF9pbWFnZV9vY2NfMiIsImwxIiwibDIiLCJsMSQwIiwibDIkMCIsImNvdW50X2hlYWRfYW5kX2dldF90YWlsIiwiaCQwIiwibDEkMSIsImwyJDEiLCJoMiIsImgxIiwib2NjMSIsImwxJDIiLCJvY2MyIiwibDIkMiIsIm9jYzIkMCIsImwyJDMiLCJvY2MxJDAiLCJsMSQzIiwiYWNjdSQyIiwiZGl2MiIsInBvdzY0IiwiY2FudG9yX3BhaXJpbmciLCJyZWFkX2lucHV0IiwidXNlcl9pbnB1dCIsImFjYyIsImFjYyQwIiwibm90X2FuX2lkIiwiYXJyYXlfZm9sZF9sZWZ0X21hcGkiLCJvdXQiLCJ5JDAiLCJvIiwiYXJyYXlfbWFwX29mX2xpc3QiLCJ4JDAiLCJhbnMiLCJhcnJheV9yZXZfb2ZfbGlzdCIsImFycmF5X3Jldl9tYXBfb2ZfbGlzdCIsImFycmF5X2ZvbGRfbGVmdGkiLCJhcnJheV9mb2xkX3JpZ2h0aSIsIngkMSIsImFycmF5X2ZvbGRfbGVmdDJpIiwiYXJyYXlfZmlsdGVyIiwiYXJyYXlfbWluX2VxdWFsX25vdF9udWxsIiwiYWcxIiwibmIxIiwiYWcyIiwibmIyIiwiaiQwIiwib3V0JDEiLCJpJDIiLCJ2YSIsImFnMSQwIiwibmIxJDAiLCJhZzIkMCIsIm5iMiQwIiwib3V0JDAiLCJhcnJheV9jb21wYXJlIiwiY29tcGFyZSIsImQiLCJyZWN0aSIsIm1pbl9wb3NfaW50X25vdF96ZXJvIiwiZGF0YWIiLCJrZXliIiwiZGF0YWEiLCJrZXlhIiwibWF4X3Bvc19pbnRfbm90X3plcm8iLCJmb2xkX292ZXJfcGVybXV0YXRpb25zIiwidG9fZG8iLCJkaXNjYXJkZWQiLCJwZXJtdXRhdGlvbiIsInRvX2RvJDAiLCJkaXNjYXJkZWQkMCIsInRvX2RvJDEiLCJsaXN0IiwidG9fZG8xIiwiZGlzY2FyZGVkJDEiLCJnY2RfMiIsImIkMCIsImIkMSIsImxjbV8yIiwibGNtIiwiZ2V0X2ludGVydmFsX2xpc3QiLCJhZGQiLCJvdXRwdXQiLCJjdXJyZW50JDAiLCJvdXRwdXQkMCIsImxvd2VyY2FzZSIsImNhcGl0YWxpemUiLCJzdHJpbmdfc3BsaXRfb25fY2hhciIsImRlbGltaXRlciIsImluZGV4Iiwic21hc2hfZHVwbGljYXRlX2luX29yZGVyZWRfbGlzIiwidGFpbCQyIiwibm9jYyQyIiwiY3VycmVudCQxIiwidGFpbCIsIm5vY2MiLCJ0YWlsJDAiLCJub2NjJDAiLCJ0YWlsJDEiLCJub2NjJDEiLCJjaG9wX3N1ZmZpeF9vcl9leHRlbnNpb24iLCJuYW1lIiwiZXh0IiwiZmluZF9hdmFpbGFibGVfbmFtZSIsImFscmVhZHlfdGhlcmUiLCJmYWN1bHRhdGl2ZSIsImV4dCQwIiwiYmFzZSIsImJhc2UkMCIsImRlZmF1bHRfbWVzc2FnZV9kZWxpbXRlciIsImdldF9yZWYiLCJyZWYiLCJyZW1vdmVfZG91YmxlX2VsZW1lbnRzIiwic29ydF9ieV9wcmlvcml0eSIsImtleXMiLCJzb3J0Iiwia2V5IiwiaW5pdGlhbF9idWZmZXJfc2l6ZSIsIndyaXRlX3RvX2NoYW5uZWwiLCJzdHJpbmdfb2Zfd3JpdGUiLCJvYiIsInJlYWRfb2Zfc3RyaW5nIiwibGV4X3N0IiwibGV4X2J1ZiIsInJlYWRfYmV0d2Vlbl9zcGFjZXMiLCJyZWFkX25leHRfaXRlbSIsInN0IiwiYnVpbGRfbXNnIiwib2Zfc3RyaW5nIiwidG9fc3RyaW5nIiwiZXJyb3JfbXNnIiwib2ZfaW50IiwidG9faW50Iiwib2ZfYm9vbCIsInRvX2Jvb2wiLCJvZl91bml0IiwidG9fdW5pdCIsIm9mX29wdGlvbiIsInRvX2pzb24iLCJ0b19vcHRpb24iLCJ3cml0ZV9vcHRpb24iLCJyZWFkX29wdGlvbiIsInRvX2xpc3QiLCJvZl9qc29uIiwid3JpdGVfY29tbWEiLCJ3cml0ZV9saXN0IiwiZl9lbHQiLCJvZl9hcnJheSIsInRvX2FycmF5Iiwid3JpdGVfYXJyYXkiLCJ3cml0ZV9zZXF1ZW5jZSIsInEkMCIsImYkMCIsInJlYWRfdmFyaWFudCIsInJlYWRfaWQiLCJyZWFkIiwic21hcnRfYXNzb2MiLCJvZl9hc3NvYyIsInRvX2Fzc29jIiwianNvbiIsIndyaXRlX2ZpZWxkIiwibmEiLCJvZl9wYWlyIiwidG9fanNvbjEiLCJ0b19qc29uMiIsImxhYjEiLCJzdGgkMCIsImxhYjIiLCJ0b190cmlwbGUiLCJvZl9qc29uMSIsIm9mX2pzb24yIiwib2ZfanNvbjMiLCJzdGgkMSIsImxhYjMiLCJzdGgkMiIsIm9mX3RyaXBsZSIsInRvX2pzb24zIiwidG9fcGFpciIsIndyaXRlX2NvbXBhY3RfcGFpciIsInJlYWRfY29tcGFjdF9wYWlyIiwiY29tcGFjdF90b19wYWlyIiwib2ZfbWFwIiwiZm9sZCIsImtleV90b19qc29uIiwidmFsdWVfdG9fanNvbiIsImxhYl9rZXkiLCJsYWJfdmFsdWUiLCJ2YWx1ZSIsInRvX21hcCIsImVtcHR5IiwianNvbl90b19rZXkiLCJqc29uX3RvX3ZhbHVlIiwib2ZfdW5peF9sYWJlbCIsImludCQwIiwidG9fdW5peF9sYWJlbCIsIm9mX3VuaXhfZXJyb3IiLCJ0b191bml4X2Vycm9yIiwic3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0Iiwic3VjY2VzcyIsInN0b3AiLCJzdWNjZXNzX29yX3N0b3AiLCJoZWlnaHQiLCJub2RlIiwibGVmdCIsInJpZ2h0IiwiaGwiLCJociIsImhsJDAiLCJpc19lbXB0eSIsInNpbmdsZXRvbiIsImlzX3NpbmdsZXRvbiIsInNldDIiLCJzZXQxIiwiYmFsYW5jZSIsImhlaWdodF9sZWZ0IiwiaGVpZ2h0X3JpZ2h0IiwibGVmdHJpZ2h0IiwibGVmdHZhbHVlIiwibGVmdGxlZnQiLCJsZWZ0cmlnaHRyaWdodCIsImxlZnRyaWdodHZhbHVlIiwibGVmdHJpZ2h0bGVmdCIsInJpZ2h0cmlnaHQiLCJyaWdodHZhbHVlIiwicmlnaHRsZWZ0IiwicmlnaHRsZWZ0cmlnaHQiLCJyaWdodGxlZnR2YWx1ZSIsInJpZ2h0bGVmdGxlZnQiLCJiYWxhbmNlX3dpdGhfbG9ncyIsIndhcm4iLCJwYXJhbWV0ZXJzIiwiZXJyb3IiLCJsb2MiLCJlcnJvciQwIiwiciIsIm8kMCIsImFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyIsIm5ld192YWwiLCJ2YWx1ZV9zZXQiLCJyaWdodCQwIiwiYm9vbCIsInNldCQwIiwiZXJyb3IkMSIsImxlZnQkMCIsImJvb2wkMCIsImVycm9yJDIiLCJzZXQkMSIsImVycm9yJDMiLCJhZGRfd2l0aF9sb2dzIiwibmV3X3ZhbHVlIiwiYWRkX2V2ZW5faWZfaXRfZXhpc3RzIiwiam9pbiIsInJpZ2h0aGVpZ2h0IiwibGVmdGhlaWdodCIsInNhZmVfZXh0cmFjdF9taW5fZWx0IiwibWluIiwibWluX2VsdF93aXRoX2xvZ3MiLCJyZW1vdmVfbWluX2VsdF93aXRoX2xvZ3MiLCJqb2luX3dpdGhfbG9ncyIsInJpZ2h0MiIsInZhbHVlMiIsImxlZnQyIiwic2V0MiQwIiwibWluMiIsImNvbmNhdF93aXRoX2xvZ3MiLCJlbHRfb3B0Iiwic3BsaXRfd2l0aF9sb2dzIiwic3BsaXRfdmFsIiwic2V0X3ZhbCIsImxlZnRsZWZ0JDAiLCJyaWdodHJpZ2h0JDAiLCJyZW1vdmUiLCJyZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2UiLCJlcnJvciQ0IiwiZXJyb3IkNSIsImVycm9yJDYiLCJlcnJvciQ3IiwiZXJyb3IkOCIsInNldCQyIiwiZXJyb3IkOSIsInJlbW92ZV93aXRoX2xvZ3MiLCJzcGxpdCIsInNwbGl0X3ZhbHVlIiwic2V0X3ZhbHVlIiwidW5pb24iLCJoZWlnaHQyIiwiaGVpZ2h0MSIsInJpZ2h0MSIsInZhbHVlMSIsImxlZnQxIiwicmlnaHQyJDAiLCJsZWZ0MiQwIiwicmlnaHQxJDAiLCJsZWZ0MSQwIiwiZGlzam9pbnRfdW5pb24iLCJ1bmlvbl9nZW4iLCJhZGRfZ2VuIiwidW5pb25fd2l0aF9sb2dzIiwidyIsInMkMCIsImRpc2pvaW50X3VuaW9uX3dpdGhfbG9ncyIsInN1dHVyZV9ub3QiLCJpbnRlciIsInRyaXBsZTIiLCJzdXR1cmVfbm90X3dpdGhfbG9ncyIsImludGVyX3dpdGhfbG9ncyIsImRpZmYiLCJkaWZmX3dpdGhfbG9ncyIsIm1pbnVzIiwibWludXNfd2l0aF9sb2dzIiwibWVtIiwic2VhcmNoZWRfdmFsdWUiLCJmaWx0ZXIiLCJmaWx0IiwiZmlsdGVyX3dpdGhfbG9ncyIsInBhcnRpdGlvbiIsInBhcnQiLCJwYXJ0aXRpb25fd2l0aF9sb2dzIiwicmgiLCJjb25zX2VudW0iLCJlbnVtJDEiLCJlMiQyIiwiZTEkMiIsImUxIiwiZTIiLCJlMiQwIiwicjIiLCJ2MiIsImUxJDAiLCJyMSIsInYxIiwiZTIkMSIsImUxJDEiLCJlcXVhbCIsInN1YnNldCIsInNldDEkMCIsImZvbGRfaW52IiwiZm9yX2FsbCIsImV4aXN0cyIsImVsZW1lbnRzIiwiZWxlbWVudHNfYXV4IiwiYXV4X3ByaW50Iiwia2V5JDEiLCJrZXkkMCIsIm1pbl9lbHQiLCJtYXhfZWx0IiwiY2hvb3NlIiwicmFuZG9tIiwicnMiLCJhaW1fYWNjIiwiYWNjX2wiLCJhY2NfciIsImVtcHR5JDAiLCJoZWlnaHQkMCIsInNpemUkMCIsIm5vZGUkMCIsImtleTAiLCJkYXRhIiwiaXNfZW1wdHkkMCIsInJvb3QiLCJtYXhfa2V5IiwiYmFsYW5jZSQwIiwicmlnaHQwIiwiZGF0YTAiLCJsZWZ0MCIsImRhdGExIiwia2V5MSIsInJpZ2h0MCQwIiwiZGF0YTAkMCIsImtleTAkMCIsImxlZnQwJDAiLCJkYXRhMSQwIiwia2V5MSQwIiwiYmFsYW5jZV93aXRoX2xvZ3MkMCIsImFkZCQwIiwiZGF0YV9tYXAiLCJrZXlfbWFwIiwiY21wIiwiYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzJDAiLCJwYXJhbWV0ZXIiLCJtYXAkMCIsImFkZF93aXRoX2xvZ3MkMCIsImV4dHJhY3RfbWluX2JpbmRpbmciLCJkYXRhMiIsImtleTIiLCJleHRyYWN0X21pbl9iaW5kaW5nX3dpdGhfbG9ncyIsIm1lcmdlIiwibWFwMSIsIm1hcDIiLCJkYXRhMyIsImtleTMiLCJtZXJnZV93aXRoX2xvZ3MiLCJyZW1vdmUkMCIsInJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSQwIiwibWFwJDEiLCJtYXAkMiIsInJlbW92ZV93aXRoX2xvZ3MkMCIsInBvcCIsImpvaW4kMCIsInZhbHVlJDAiLCJqb2luX3dpdGhfbG9ncyQwIiwic3BsaXQkMCIsImRhdGEyJDAiLCJsZWZ0MiQxIiwicmlnaHQyJDEiLCJzcGxpdF93aXRoX2xvZ3MkMCIsImRpZmYkMCIsIm9sZWZ0MiIsIm9sZWZ0MSIsIm9yaWdodDIiLCJvcmlnaHQxIiwidW5pb24kMCIsIm9wX2RhdGEyIiwiZDIiLCJkMiQwIiwib3BfZGF0YTEiLCJkMSIsImQxJDAiLCJ1bmlvbl93aXRoX2xvZ3MkMCIsInVwZGF0ZSIsInVwZGF0ZV93aXRoX2xvZ3MiLCJkaWZmX3ByZWQiLCJwcmVkIiwibWluX2VsdCQwIiwiZmluZF9vcHRpb24iLCJmaW5kX2RlZmF1bHQiLCJmaW5kX29wdGlvbl93aXRoX2xvZ3MiLCJmaW5kX2RlZmF1bHRfd2l0aF9sb2dzIiwibWVtJDAiLCJmaWx0ZXJfb25lIiwiaXRlciQwIiwiZm9sZCQwIiwidmFsdWUkMSIsIm91dHB1dGwiLCJpbnRlcnJ1cHRlZCIsInZhbF9vcHQiLCJmb2xkX3dpdGhfaW50ZXJydXB0aW9uIiwibW9uYWRpY19mb2xkIiwicGFyYW0iLCJlcnIiLCJlcnIkMCIsImVyciQxIiwidmFsdWUkMiIsImVyciQyIiwibW9uYWRpY19mb2xkMiIsInJlcyIsInJoJDAiLCJtYXAxJDAiLCJtYXAyJDAiLCJyZXMkMCIsInJlcyQxIiwicmgkMSIsInJlcyQyIiwicmgkMiIsInJlcyQzIiwicmgkMyIsInJlcyQ0IiwicmgkNCIsIm1vbmFkaWNfZm9sZDJfc3BhcnNlIiwiaWQiLCJtb25hZGljX2l0ZXIyX3NwYXJzZSIsIm1vbmFkaWNfZm9sZF9yZXN0cmljdGlvbiIsIm1hcGkiLCJtYXBfd2l0aF9sb2dzIiwiZXJyb3JzIiwiZXJyb3JzJDAiLCJkYXRhJDAiLCJlcnJvcnMkMSIsIm1hcDJfd2l0aF9sb2dzIiwibWFwMnpfd2l0aF9sb2dzIiwiZm9sZDJfd2l0aF9sb2dzIiwiZm9sZDJ6X3dpdGhfbG9ncyIsImZvbGQyX3NwYXJzZV93aXRoX2xvZ3MiLCJpdGVyMl9zcGFyc2Vfd2l0aF9sb2dzIiwicGFyIiwiZm9yX2FsbCQwIiwiY29uc19lbnVtJDAiLCJlJDAiLCJlJDEiLCJjb21wYXJlJDAiLCJtMSIsIm0yIiwiYyQwIiwiZXF1YWwkMCIsImJpbmRpbmdzX2F1eCIsImJpbmRpbmdzIiwiYXV4X3ByaW50JDAiLCJwciIsImRhdGEkMSIsImRhdGEkMiIsInByaW50JDAiLCJkaWZmX3dpdGhfbG9ncyQwIiwibzEkMSIsIm8yJDEiLCJvMSIsIm8yIiwibzEkMCIsIm8yJDAiLCJkaWZmX3ByZWRfd2l0aF9sb2dzIiwiZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfIiwiZm9sZF9yZXN0cmljdGlvbl93aXRoX2xvZ3MiLCJwcm9qX21hcCIsImlkZW50aXR5X2VsdCIsImtleV9hIiwiZGF0YV9hIiwibWFwX2IiLCJrZXlfYiIsInByb2pfbWFwX21vbmFkaWMiLCJoYW5kbGVyIiwibW9uYWRpY19tZXJnZSIsImhhbmRsZXIkMCIsInByb2pfc2V0Iiwic2V0X2EiLCJwcm9qX3NldF9tb25hZGljIiwic2V0X2IiLCJwYXJ0aXRpb25fc2V0IiwicGFydGl0aW9uX3NldF9tb25hZGljIiwicHJvajIiLCJrZXlfYyIsInN1Ym1hcCIsInN1Ym1hcCQwIiwicHJvajJfbW9uYWRpYyIsImludF9jb21wYXJlIiwiaW50X3BhaXJfY29tcGFyZSIsInN0cmluZ19wYWlyX2NvbXBhcmUiLCJwYWlyX2VxdWFsIiwiZXFhIiwiZXFiIiwieWIiLCJ5YSIsInhiIiwieGEiLCJwcmludCQxIiwicHJpbnQkMiIsInByaW50JDMiLCJ1bnNvbWUiLCJ1bnNvbWVfb3JfcmFpc2UiLCJleGNlcCIsImJpbmQiLCJlcSIsImdldF9hbm5vdCIsImFubm90IiwiY29weV9hbm5vdCIsIm1hcF9hbm5vdCIsIm9mX3BvcyIsInN0YXJ0X2xvY2F0aW9uIiwiZW5kX2xvY2F0aW9uIiwiZHVtbXlfcG9zaXRpb24iLCJkdW1teSIsImFubm90X3dpdGhfZHVtbXkiLCJpc19kdW1teSIsImlzX2Fubm90ZWRfd2l0aF9kdW1teSIsInByX2YiLCJwcl9sIiwicHJpbnRfYW5ub3RlZCIsInJlYWRfcG9zaXRpb24iLCJjaHIiLCJsaW5lIiwid3JpdGVfcG9zaXRpb24iLCJ0b19jb21wYWN0X3lvanNvbiIsImRlY2xzIiwib2ZfY29tcGFjdF95b2pzb24iLCJmaWxlbmFtZXMiLCJmaWxlIiwieCQyIiwib2ZfbGluZSIsIngkMyIsIm9mX2NociIsIngkNCIsInRvX2NociIsIngkNSIsInRvX2xpbmUiLCJ5b2pzb25fb2ZfYW5ub3RlZCIsImpwIiwiYW5ub3RlZF9vZl95b2pzb24iLCJ3cml0ZV9yYW5nZSIsInN0cmluZ19vZl9yYW5nZSIsInJlYWRfcmFuZ2UiLCJyYW5nZV9vZl9zdHJpbmciLCJpc19pbmNsdWRlZF9pbiIsInJhbmdlIiwibGlzdGkiLCJlbCIsImhhc2h0YmwiLCJ0YmwiLCJib3R0b20iLCJudSIsImVtcHR5X3NldCIsImNvbW1hIiwiZG90IiwiY29tcGFjdF9jb21tYSIsImNvbG9uIiwic3BhY2UiLCJjdXQiLCJ1bml0IiwicGFpciIsInBwYSIsInBwYiIsIm9wdGlvbiIsIndpdGhfc3BhY2UiLCJwbGFpbl9hcnJheSIsImxpc3RfdG9fc3RyaW5nIiwic2V0X3RvX3N0cmluZyIsImFjY3ZhbCIsInIkMCIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiIsImxybCIsImFjY19scnIiLCJhY2NfbCQxIiwiYWNjX3IkMSIsImFjY19yJDAiLCJyciIsInJ2IiwicmwiLCJhY2NfbCQwIiwicmxyIiwicmx2IiwicmxsIiwiYWNjX3JsbCIsIndlaWdodCIsIndlaWdodCQwIiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidDIiLCJ0MSIsInN0YXRlIiwiYWltX2FjYyQxIiwid3JpdGVfc2V2ZXJpdHkiLCJ3cml0ZV9zdGF0dXMiLCJ3cml0ZV9tZXNzYWdlIiwidGV4dCIsInNldmVyaXR5IiwicmVhZF9tZXNzYWdlIiwicHJpbnRfbWVzc2FnZSIsInJhbmdlJDAiLCJ3cml0ZV90Iiwid3JpdGVfb2siLCJ3cml0ZV9lcnJvciIsIm1lc3NhZ2VzIiwic3RhdHVzIiwibWVzc2FnZXMkMCIsInN0YXR1cyQwIiwic3RyaW5nX29mX3QiLCJyZWFkX3RfY29udGVudCIsInJlYWRfdCIsInJlYWRfb2siLCJyZWFkX2Vycm9yIiwiYXV4X3JlYWRfdCIsImNsb3NpbmciLCJwb3MiLCJ2JDAiLCJ0X29mX3N0cmluZyIsImxpZnQiLCJva19zdGF0dXMiLCJlcnJvcl9zdGF0dXMiLCJvayIsIm92ZXJ3cml0ZV9zdGF0dXMiLCJzcGVjaWFsX3ZhbCIsImlkZW50aXR5IiwibWF4IiwiaW1tZWRpYXRlIiwiaXNfaWRlbnRpdHkiLCJjb21wdXRlIiwidiQxIiwiZm9yY2UiLCJpbWFnZSIsImRlYnVnX21vZGUiLCJub3Rfb2siLCJ1bnNhZmVfaW1wZXJhdGl2ZV9hZGQiLCJpbXBlcmF0aXZlX2FkZCIsIm9yaWdpbiIsImN5Y2xpY19wZXJtdXRhdGlvbl9mcm9tX2xpc3QiLCJzdG9wX2F0IiwicHJlJDEiLCJzdWJzdCIsInByZSIsInByZSQwIiwiYXBwbHkiLCJjb21wb3NlIiwiZXh0ZW5zaWJsZSIsImludmVyc2UiLCJzcmMiLCJkc3QiLCJwcmludF9mdWxsIiwidG9feW9qc29uIiwib2ZfeW9qc29uIiwibWFzayIsInVubWFzayIsImlzX2luZmluaXRlIiwiZmluZCIsImNvcHlfdmVjdF9pbiIsImNvcHlfaW4iLCJkZWNsYXJlX3VuYmFsYW5jZWQiLCJ1cGRhdGVfc3RydWN0dXJlIiwibl9sYXllciIsInVwZGF0ZV9zdHJ1Y3R1cmVfYXV4IiwiZmF0aGVyIiwidF9ub2RlIiwidF9zdWJ0cmVlIiwibGF5ZXIiLCJjdXJyZW50X2xheWVyIiwibGF5ZXJfZW5kIiwidW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIiLCJ1bmJhbGFuY2VkX2V2ZW50cyIsImxheWVyX2VuZCQwIiwiY3VycmVudF9sYXllciQwIiwidyQwIiwidG90YWwiLCJyZXAiLCJyJDEiLCJsc29uIiwicnNvbiIsInIkMiIsImRlYnVnX3ByaW50IiwiaW52IiwiaW5mIiwiZ3JhcGhfcGFnZSIsInRpdGxlIiwic3VidGl0bGUiLCJkZXBzIiwiaGVhZGVyIiwiY29yZSIsImRlcGVuZGVuY3kiLCJiaW5fYWxnX29wX3RvX3N0cmluZyIsImJpbl9hbGdfb3BfaXNfcHJlZml4IiwicHJpbnRfYmluX2FsZ19vcCIsImZ4IiwiZnkiLCJvcCIsImJpbl9hbGdfb3BfdG9fanNvbiIsImJpbl9hbGdfb3Bfb2ZfanNvbiIsInVuX2FsZ19vcF90b19zdHJpbmciLCJwcmludF91bl9hbGdfb3AiLCJ1bl9hbGdfb3BfdG9fanNvbiIsInVuX2FsZ19vcF9vZl9qc29uIiwic3RhdGVfYWxnX29wX3RvX3N0cmluZyIsInByaW50X3N0YXRlX2FsZ19vcCIsInN0YXRlX2FsZ19vcF90b19qc29uIiwic3RhdGVfYWxnX29wX29mX2pzb24iLCJiaW5fYm9vbF9vcF90b19zdHJpbmciLCJwcmludF9iaW5fYm9vbF9vcCIsImJpbl9ib29sX29wX3RvX2pzb24iLCJiaW5fYm9vbF9vcF9vZl9qc29uIiwidW5fYm9vbF9vcF90b19zdHJpbmciLCJwcmludF91bl9ib29sX29wIiwidW5fYm9vbF9vcF90b19qc29uIiwidW5fYm9vbF9vcF9vZl9qc29uIiwiY29tcGFyZV9vcF90b19zdHJpbmciLCJwcmludF9jb21wYXJlX29wIiwiY29tcGFyZV9vcF90b19qc29uIiwiY29tcGFyZV9vcF9vZl9qc29uIiwicHJpbnRfcmV2X2RlcCIsImlkJDAiLCJpZCQxIiwicmV2X2RlcF90b195b2pzb24iLCJyZXZfZGVwX29mX3lvanNvbiIsImRlcHNldF90b195b2pzb24iLCJkZXBzZXRfb2ZfeW9qc29uIiwiemVybyIsIm9uZSIsImNhc3RfYmluX29wIiwib3BfZiIsIm9wX2kiLCJvcF9pNjQiLCJ5JDEiLCJ5JDIiLCJ5JDMiLCJ5JDQiLCJvcF9pJDAiLCJ5JDUiLCJvcF9pNjQkMCIsInkkNiIsInkkNyIsIm9wX2k2NCQxIiwieSQ4Iiwib3BfaTY0JDIiLCJjYXN0X3VuX29wIiwib3BfZiQwIiwib3BfaSQxIiwib3BfZiQxIiwib3BfZiQyIiwibjEiLCJuMiIsImlzX2dyZWF0ZXIiLCJpc19zbWFsbGVyIiwiaXNfZXF1YWwiLCJtdWx0IiwicmVtIiwiaW50ZXJuYWxfZGl2Iiwic3VjYyIsIm5lZyIsInRvX2Zsb2F0IiwiaXNfemVybyIsImlzX3N0cmljdGx5X3Bvc2l0aXZlIiwicG9zX3BvdyIsInByZXR0eV9wcmludCIsInByaW50X29wdGlvbiIsIm1heWJlX2l0ZXJpIiwib2ZfYmluX2FsZ19vcCIsIm9mX3VuX2FsZ19vcCIsIm9mX2NvbXBhcmVfb3AiLCJ3YXJuaW5nX2J1ZmZlciIsImZvcmJpZGRlbiIsImJhZCIsImNyZWF0ZV9mcm9tX2xpc3QiLCJjcmVhdGVfbm9fbG9jIiwibmQiLCJlbHRfbmFtZSIsImVsdF9pZCIsImtpbmQiLCJzZXAiLCJwcCIsImVsdF92YWwiLCJyZW1vdmVfc3VmZml4X2FmdGVyX2xhc3Rfb2NjdXIiLCJsaXN0JDAiLCJidWZmZXIiLCJsaXN0JDEiLCJsaXN0JDIiLCJidWZmZXIkMCIsImxhc3QiLCJwb3BfbGFzdCIsImNvbnNfb3B0aW9uIiwic21hcnRfZmlsdGVyIiwic21hcnRfbWFwIiwicmV2X21hcGkiLCJtYXBfb3B0aW9uIiwiZXhpc3RzX3VuaXEiLCJtZXJnZV91bmlxIiwidDIkMCIsImgyJDAiLCJ0MSQwIiwiaDEkMCIsInJldl9tYXBfYXBwZW5kIiwiYWNjJDEiLCJtYXBfZmxhdHRlbiIsInJlbW92ZV9jb25zZWN1dGl2ZV9kb3VibGUiLCJxJDEiLCJsYXN0JDEiLCJsYXN0JDAiLCJmb2xkX3JpZ2h0X21hcCIsImZvbGRfbGVmdDIiLCJjbGVhbiIsImludF9vZl9oYXNoZWRfbGlzdCIsImZzdF9lbHRfaWQiLCJmc3RfbGlzdF9pZCIsImNvbnMiLCJjYWNoZSQwIiwiaGVhZCIsImhhc2hfaGVhZCIsImNhY2hlJDEiLCJzdWJ0YWIiLCJzdWJ0YWIkMCIsInN1YnRhYiQxIiwiaGFzaCQwIiwiaGFzaCIsImNhY2hlIiwiZm9ybWF0dGVyIiwicHJpbnRfY2FjaGUiLCJvcHQkMCIsInNpbXBsaWZ5IiwiZ2NkIiwiZGl2IiwiYl9pbnYiLCJwdXNoIiwiY3JjX3RhYmxlIiwic3RyaW5nIiwic3RyIiwiY3JjIiwidHJpcGxlX29mX2NvbG9yIiwiY3JlYXRlX2luZmluaXRlIiwidCQyIiwidCQ0IiwidCQzIiwib3ZlcndyaXR0ZW5fdmFsdWUiLCJvdmVyd3JpdHRlbl92YWx1ZSQwIiwiY29udGVudHMiLCJudGgiLCJvZnMiLCJjbGVhciIsInJlc2V0IiwicmVzaXplIiwibW9yZSIsIm5ld19sZW4iLCJuZXdfYnVmZmVyIiwiYWRkX2NoYXIiLCJhZGRfc3Vic3RyaW5nIiwibmV3X3Bvc2l0aW9uIiwiYWRkX3N1YmJ5dGVzIiwiYWRkX3N0cmluZyIsImRlZmF1bHRfYWxwaGFiZXQiLCJ1cmlfc2FmZV9hbHBoYWJldCIsInBhZGRpbmciLCJvZl9jaGFyIiwiYWxwaGFiZXQiLCJ0b19jaGFyIiwiZGVjb2RlIiwiaW5wdXQiLCJpbnB1dCQwIiwibGVuZ3RoJDAiLCJ3b3JkcyIsInBhZGRpbmckMCIsInoiLCJlbmNvZGUiLCJwYWQiLCJwYWRkaW5nX2xlbiIsInByaW50IiwiY29tcGFyZSIsInkiLCJ4IiwieSQwIiwieCQwIiwiYyIsInByaW50X2FnZW50Iiwid2l0aF9pZCIsIndpdGhfbGluayIsIm5vZGUiLCJmIiwiYWciLCJpZCIsInNpIiwiaSIsInAkMCIsInBhY2siLCJwIiwiZnJlZV9pZCIsImRhbmdsaW5nIiwidHkiLCJsIiwibXlzZWxmIiwidmEiLCJ2YSQwIiwicHJpbnRfY2MiLCJtaXgiLCJsaW5rIiwiYWwiLCJhciIsInN0b3JlIiwicHJpbnRfZG90X2NjIiwibmJfY2MiLCJpbCIsImlyIiwidiIsInMiLCJsaW5rcyIsInMkMCIsImFyJDAiLCJhbCQwIiwid3JpdGVfc2l0ZSIsIm9iIiwid3JpdGVfY2Nfc2l0ZSIsImxpbmtzX29mX3lvanNvbiIsImIiLCJlcnJvcl9tc2ciLCJyZWFkX2NjX3NpdGUiLCJsYiIsImtleSQwIiwibiIsImtleSIsInBvcnRfc3RhdGVzIiwicG9ydF9saW5rcyIsIm91dCIsInNpdGVfdHlwZSIsInNpdGVfbmFtZSIsIndyaXRlX2NjX25vZGUiLCJub2RlX2lkIiwicmVhZF9jY19ub2RlIiwibm9kZV9zaXRlcyIsIm5vZGVfdHlwZSIsIndyaXRlX2Nvbm5lY3RlZF9jb21wb25lbnQiLCJyZWFkX2Nvbm5lY3RlZF9jb21wb25lbnQiLCJzdHJpbmdfb2ZfY29ubmVjdGVkX2NvbXBvbmVudCIsIm9wdCIsInN0aCIsImxlbiIsImNvbm5lY3RlZF9jb21wb25lbnRfb2Zfc3RyaW5nIiwiaW52ZXJ0ZWRfY291bnRlcl9zdWZmaXgiLCJmb2xkIiwibyIsIm51bV9vZl9zaXRlIiwiYWdlbnRfbmFtZSIsInNpZ25hdHVyZSIsImFnZW50X25hbWUkMCIsImtpbmQiLCJzaXRlX29mX251bSIsImFkZHIiLCJudW1fb2ZfaW50ZXJuYWxfc3RhdGUiLCJzaXRlX2lkIiwic3RhdGUiLCJzaXRlX3NpZyIsImludGVybmFsX3N0YXRlX29mX3NpdGVfaWQiLCJ2YWxfaWQiLCJjb3VudGVyX29mX3NpdGVfaWQiLCJoYXNfY291bnRlciIsInBfaWQiLCJvayIsIm9rJDAiLCJhIiwiYWNjIiwib25lX3RvX2pzb24iLCJjMV9vcHQiLCJjMl9vcHQiLCJjMyIsIm9uZV9vZl9qc29uIiwic2l6ZSIsInNpZ3MiLCJnZXQiLCJhZ2VudF9pZCIsImFyaXR5IiwibWF4X2FyaXR5IiwiYWdlbnRfb2ZfbnVtIiwibnVtX29mX2FnZW50IiwibmFtZSIsImlkX29mX3NpdGUiLCJhZ2VudF90eSIsInNpdGVfb2ZfaWQiLCJpZF9vZl9pbnRlcm5hbF9zdGF0ZSIsImludGVybmFsX3N0YXRlX29mX2lkIiwiaWRfc2l0ZSIsImlkX3N0YXRlIiwiaW50ZXJuYWxfc3RhdGVzX251bWJlciIsImRlZmF1bHRfaW50ZXJuYWxfc3RhdGUiLCJhbGxvd2VkX2xpbmsiLCJhZzEiLCJzMSIsImFnMiIsInMyIiwiYWcxJDAiLCJzMSQwIiwiYWcyJDAiLCJzMiQwIiwiY3JlYXRlIiwiY291bnRlcnNfcGVyX2FnZW50IiwiYWdlbnRfc2lncyIsImlzX2NvdW50ZXJfYWdlbnQiLCJhZ2VudF9pbmZvIiwicG9ydHNfaWZfY291bnRlcl9hZ2VudCIsInNpdGVfaXNfY291bnRlciIsImFnX3R5IiwiZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyIsImNvdW50ZXJfYWdlbnRfaW5mbyIsImlzX2ludmVydGVkX2NvdW50ZXIiLCJjb3VudGVyX25hbWUiLCJwcmludF9zaXRlIiwicHJpbnRfaW50ZXJuYWxfc3RhdGUiLCJzaXRlIiwicHJpbnRfc2l0ZV9pbnRlcm5hbF9zdGF0ZSIsInByaW50X2NvdW50ZXJfaW5mbyIsImlfb3B0Iiwial9vcHQiLCJqIiwiaSQwIiwiaSQxIiwicHJpbnRfY291bnRlciIsInBwX2ludCIsIm5hIiwidG9fanNvbiIsIm9mX2pzb24iLCJhZ2VudF9zaWduYXR1cmUiLCJwb3J0cyIsImVtcHR5IiwiaW5jcmVtZW50X2luX3NuYXBzaG90IiwicmF3IiwiY2J0X2EiLCJjbGFzc2lmeSIsImFncyIsIm5iIiwiaHMiLCJhdXhfaW5jcmVtZW50IiwidCIsImgiLCJjYnRfeSIsImgxIiwiYm9vbCIsImRvbiIsInEiLCJiJDAiLCJpX29rIiwiZG9uJDEiLCJ0b2RvIiwiYSQwIiwiYWdzJDAiLCJjb3VudGVyX3ZhbHVlIiwiY2MiLCJjb3VudCIsInNpZCIsIm5pZCIsImNjX3RvX3VzZXJfY2MiLCJkZWJ1Z19tb2RlIiwia2VlcF9pbnZlcnRlZF9jb3VudGVycyIsInIiLCJwb3MiLCJpbmRleGVzIiwiaW5kZXhlcyQwIiwiY2NfbGlzdF93aXRob3V0X2NvdW50ZXJzIiwiY2Nfd2l0aG91dF9jb3VudGVycyIsImRuX2lkIiwiZG5faWQkMCIsIm5vZGVfc2l0ZXNfYWxsIiwiZXhwb3J0JDAiLCJqc29uX2RpY3Rpb25uYXJ5IiwibWFrZSIsInNvcnQiLCJzaWdzJDAiLCJhZ2VudCIsInByaW50X2ludGVybmFsIiwicHJpbnRfcmF3X2ludGVybmFsIiwicmVuYW1lIiwiaW5qIiwibl90eSIsIm5faWQiLCJpZDIiLCJpZDEiLCJ3cml0ZV9qc29uIiwicmVhZF9qc29uIiwicHJpbnQkMCIsImxvb3BpbmciLCJpbnRfbCIsIm1hcmsiLCJvbGQiLCJ0ZXN0IiwicmVzZXQiLCJpdGVyaV9yZXNldCIsImsiLCJ3aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzIiwiY29weSIsImdyYXBoIiwidGFibGVzIiwiY2NzIiwic3RhdHMiLCJmcmVlX2lkcyIsInRvcF9pZCIsImFkZF9hZ2VudCIsImFpIiwiaWQkMCIsIm5ld19pZCIsIm5ld19pZCQwIiwidCQwIiwiaCQwIiwiZnJlZV9pZCQwIiwibWlzc2luZ3MiLCJhZGRfZnJlZSIsImFkZF9pbnRlcm5hbCIsImFkZF9saW5rIiwibm9kZTIiLCJ0eSQwIiwibm9kZTEiLCJjYWNoZSIsImNjX2lkX29wIiwibmV4dCQxIiwidG9kb3MiLCJzaXRlJDMiLCJuZXh0IiwibmV4dCQwIiwic2l0ZSQxIiwic2l0ZSQwIiwic2l0ZSQyIiwicmVtb3ZlX2FnZW50IiwiaWRzIiwiYWckMCIsInJlbW92ZV9mcmVlIiwiZ2V0X2ludGVybmFsIiwiZ2V0X3NpdGVzIiwiYXJyIiwiZ2V0X3NvcnQiLCJyZW1vdmVfaW50ZXJuYWwiLCJyZW1vdmVfbGluayIsIm90aGVyX29yaWckMSIsInRoaXNfb3JpZyIsInRoaXNfY2FjaGUiLCJvdGhlcl9jYWNoZSIsIm9sZF9jY19pZCIsImluc3BlY3Rfc2l0ZSIsImRzdF9jYWNoZSIsImRjIiwib3RoZXJfb3JpZyQwIiwib3RoZXJfY2FjaGUkMSIsIm90aGVyX25leHQkMCIsIm90aGVyX29yaWciLCJvdGhlcl9jYWNoZSQwIiwib3RoZXJfbmV4dCIsInRvZG9zJDAiLCJ0aGlzX25leHQiLCJpc19hZ2VudCIsImlzX2FnZW50X2lkIiwiaXNfZnJlZSIsImlzX2ludGVybmFsIiwibGlua19leGlzdHMiLCJzJDEiLCJhZyQxIiwiZXhpc3RzX2ZyZXNoIiwibGlua19kZXN0aW5hdGlvbiIsIml0ZXJfbmVpZ2hib3JzIiwiYWdfdGFibGUiLCJhbGxfYWdlbnRzX3doZXJlIiwiaW5fc2FtZV9jb25uZWN0ZWRfY29tcG9uZW50IiwiZ2V0X2Nvbm5lY3RlZF9jb21wb25lbnQiLCJvbmVfY29ubmVjdGVkX2NvbXBvbmVudCIsImtub3duIiwibm9kZSQwIiwia25vd24kMCIsImtub3duJDEiLCJ0b2RvcyQxIiwic2l0ZXMiLCJub2RlX2lkX2luX3dpdG5lc3MiLCJzaXRlX3N0YXRlIiwic3BlY2llcyIsInJvb3QiLCJzcGVjaWUiLCJidWlsZF9zbmFwc2hvdCIsImNjcyQxIiwibm9kZSQxIiwiY2NzJDAiLCJub2RlJDIiLCJidWlsZF91c2VyX3NuYXBzaG90IiwiZGVidWdfcHJpbnQiLCJwcmludF9zaXRlcyIsImludCQwIiwicHJpbnRfcGF0aCIsImVtcHR5X3BhdGgiLCJzaW5nbGV0b25fcGF0aCIsIm4kMCIsInJldl9wYXRoIiwiaXNfdmFsaWRfcGF0aCIsImFyZV9jb25uZWN0ZWQiLCJtYXhfZGlzdGFuY2UiLCJub2Rlc194Iiwibm9kZXNfeSIsInByZXBhcmUiLCJkZXB0aCIsIm91dCQxIiwiaWQkMSIsImFjYyQxIiwic2l0ZSQ0IiwicGF0aCIsInBhdGgkMCIsIm91dCQwIiwiYWNjJDAiLCJuZXh0JDIiLCJvdXQkMiIsInN0b3AiLCJkIiwicHJpbnRfaWQiLCJwcmludF9pZF9zaXRlIiwic291cmNlIiwiZmluZF90eSIsInR5JDEiLCJwb3J0X3RvX3lvanNvbiIsInBvcnRfb2ZfeW9qc29uIiwic3RlcF90b195b2pzb24iLCJzdGVwX29mX3lvanNvbiIsInRvX3lvanNvbiIsIm9mX3lvanNvbiIsImV4dGVuZCIsInBvcnQiLCJ0JDEiLCJjb21wYXRpYmxlX2ZyZXNoX3BvaW50IiwiZSIsInNzaXRlIiwiYXJyb3ciLCJzdHkiLCJpbmokMCIsImluaiQzIiwic3NpdGUkMSIsInN0eSQxIiwic2lkJDEiLCJpZCQyIiwiaW5qJDEiLCJpbmokMiIsInNzaXRlJDAiLCJzdHkkMCIsInNpZCQwIiwiY29tcGF0aWJsZV9wb2ludCIsImUkMCIsImlkJDMiLCJ0eSQyIiwiaWQkNCIsInNpdGUkNSIsInR5JDMiLCJpZCQ1Iiwic3NpdGUkMiIsInNpZCQyIiwiaW5qJDQiLCJzaXRlJDYiLCJ0eSQ0IiwiaWQkNiIsImlzX3N1Ym5hdmlnYXRpb24iLCJuYXYkMCIsImdvYWwiLCJuYXYkMSIsInJlbmFtZV9pZCIsImluajJjYyIsImltZyIsIngkMSIsInQkMiIsImNoZWNrX2VkZ2UiLCJkc3RfaXNfb2theSIsImluamVjdGlvbl9mb3Jfb25lX21vcmVfZWRnZSIsImRzdCIsImRzdCQwIiwicnR5IiwicnR5JDAiLCJyb290JDAiLCJpbXBlcmF0aXZlX2RzdF9pc19va2F5IiwiaW1wZXJhdGl2ZV9lZGdlX2lzX3ZhbGlkIiwiY29uY3JldGl6ZV9wb3J0IiwiY29uY3JldGl6ZSIsIm5hdiIsInN0ZXAiLCJzdCIsImNvcHlfYWdlbnQiLCJhZ2VudCIsImNyZWF0ZSIsIm4iLCJpIiwiZmluZF9hdXgiLCJhIiwiYWkiLCJyb290IiwiZmluZCIsImgiLCJ4IiwiY29tYmluZV9yYW5rcyIsImJ5IiwiaXkiLCJieCIsIml4IiwiYnkkMCIsInVuaW9uIiwieSIsInJvb3RfeCIsInJvb3RfeSIsInJhbmtfeCIsInJhbmtfeSIsInVuaW9uX2ZpbmRfY291bnRlcnMiLCJzaWdzIiwibWl4IiwidCIsInNpZ3MkMCIsImFnIiwiYWZ0ZXIiLCJiZWZvcmUiLCJiIiwibG5rX2IiLCJsbmtfYSIsInMiLCJwcmludCIsIm5vQ291bnRlcnMiLCJjcmVhdGVkIiwiaW5pdGlhbF9jb21tYSIsImYiLCJjb3VudGVyX2FnZW50cyIsInNvbWUiLCJhZ190eSIsImFnX3R5JDAiLCJpbnRzIiwicG9ydHMiLCJlbXB0eSIsImlzX2NvdW50ZXIiLCJjb3VudGVyIiwiaSQxIiwiaSQwIiwiYWdlbnRfdG9fanNvbiIsImFjYyIsImFnZW50X29mX2pzb24iLCJwIiwidG9fanNvbiIsIm0iLCJvZl9qc29uIiwibCIsImVfdG9feW9qc29uIiwiZmlsZW5hbWVzIiwiZl9taXgiLCJmX2lkIiwib3AiLCJhJDAiLCJvcCQwIiwib3AkMSIsImNjIiwibm8iLCJ5ZXMiLCJjb25kIiwiYm9vbF90b195b2pzb24iLCJ0b2tlbiIsImV4cHIiLCJtaXh0dXJlIiwiZXhwciQwIiwiYiQwIiwiYSQxIiwiZV9vZl95b2pzb24iLCJib29sX29mX3lvanNvbiIsInRvayIsInByX21peCIsInByX3RvayIsInByX3ZhciIsImxhYiIsImFzdCIsInRrIiwicHJpbnRfYm9vbCIsImNvbnN0JDAiLCJpbnQkMCIsImZsb2F0JDAiLCJhZGQiLCJlMSIsImUyIiwibWludXMiLCJtdWx0IiwiZGl2IiwicG93IiwibG9nIiwibG4iLCJzaW4iLCJjb3MiLCJ1bWludXMiLCJzcXJ0IiwiYWRkX2RlcCIsImQiLCJ4JDAiLCJvdXQiLCJ0b2tzX2QiLCJpbl9lIiwiaW5fdCIsImoiLCJhZGRfZGVwX2Jvb2wiLCJoYXNfbWl4JDAiLCJ2YXJfZGVjbHMiLCJoYXNfbWl4IiwiYm9vbF9oYXNfbWl4JDAiLCJib29sX2hhc19taXgiLCJpc19jb25zdGFudCIsImMiLCJib29sX2lzX2NvbnN0YW50IiwiaXNfdGltZV9ob21vZ2VuZW91cyIsImJvb2xfaXNfdGltZV9ob21vZ2VuZW91cyIsImF1eF9leHRyYWN0X2NjIiwiYWNjJDAiLCJleHRyYWN0X2NjX2Jvb2wiLCJleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19iIiwic2V0dXBfYWxnX3ZhcnNfcmV2X2RlcCIsInRva3MiLCJ2YXJzIiwicHJvcGFnYXRlX2NvbnN0YW50Iiwid2FybmluZyIsIm1heF90aW1lIiwibWF4X2V2ZW50cyIsInVwZGF0ZWRfdmFycyIsInBvcyIsImMxIiwiYzIiLCJwb3MkMCIsImEkMiIsInBvcyQxIiwicG9zJDIiLCJwb3MkMyIsInBvcyQ0IiwiY29uZCQwIiwicHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wiLCJwb3MkNSIsInQkMCIsImEkMyIsImEkNCIsInBvcyQ2IiwiYSQ1IiwiYSQ2IiwiYiQxIiwiYiQyIiwibjEiLCJuMiIsImhhc19wcm9ncmVzc19kZXAiLCJvbmx5X3RpbWUiLCJ2YXJzX2RlcHMiLCJkZXBzIiwiYXV4IiwiayIsImJvb2xfaGFzX3Byb2dyZXNzX2RlcCIsImlzX2VxdWFsaXR5X3Rlc3RfdGltZSIsIm1hcF9vbl9taXh0dXJlIiwibyIsInAkMCIsIngkMSIsIm8kMCIsInAkMSIsInAkMiIsInkkMCIsIngkMiIsIm1hcF9ib29sX29uX21peHR1cmUiLCJwJDMiLCJvJDEiLCJmb2xkX29uX21peHR1cmUkMCIsImZvbGRfb25fbWl4dHVyZSIsInYiLCJ1IiwiZm9sZF9ib29sX29uX21peHR1cmUkMCIsImZvbGRfYm9vbF9vbl9taXh0dXJlIiwiZXF1YWwiLCJhMiIsImExIiwib3BhIiwiYjIiLCJiMSIsIm9wYiIsImExJDAiLCJvcGEkMCIsImIxJDAiLCJvcGIkMCIsIm9wYSQxIiwib3BiJDEiLCJpZDEiLCJpZDIiLCJtaXgxIiwibWl4MiIsImlkMSQwIiwiaWQyJDAiLCJhMiQwIiwiYTEkMSIsImNvbmRhIiwiYjIkMCIsImIxJDEiLCJjb25kYiIsImVxdWFsX2Jvb2wiLCJ0b195b2pzb24iLCJvZl95b2pzb24iLCJhcnJheV9vZl9qc29uIiwibHMiLCJhcnJheTEiLCJhcnJheTIiLCJwcmludF9rYXBwYSIsImludGYiLCJpcyIsInNkIiwiYWQiLCJwcmludF9jeWNsZXMiLCJmb3JtIiwiY29udGFjdF9tYXAiLCJkZnMiLCJwYXRoIiwibGFzdF9zIiwia25vd24iLCJrbm93biQwIiwicyQwIiwidHkiLCJhY2MkMSIsImFnJDAiLCJ3cml0ZV9zaGFyaW5nX2xldmVsIiwib2IiLCJzdHJpbmdfb2Zfc2hhcmluZ19sZXZlbCIsIm9wdCIsInJlYWRfc2hhcmluZ19sZXZlbCIsImxiIiwic2hhcmluZ19sZXZlbF9vZl9zdHJpbmciLCJkZWJ1Z19wcmludF9pZCIsImZtdCIsImlkIiwic2l6ZV9vZl9jYyIsImNvbXBhcmVfY2Fub25pY2FscyIsImNjJDAiLCJpc19lcXVhbF9jYW5vbmljYWxzIiwiY29hcnNlX2hhc2giLCJwbHVzX2ludGVybmFsIiwiZSIsIm4kMCIsImV4dHJhIiwibm9kZV9zaGFwZSIsImlkX3RvX3lvanNvbiIsImlkX29mX3lvanNvbiIsImR1bW15IiwiZW1wdHlfY2MiLCJuYnQiLCJyYXdfZmluZF90eSIsInR5cyIsImZpbmRfdHkiLCJhZGRfb3JpZ2luIiwicmVjb25zdHJ1Y3Rpb25fbmF2aWdhdGlvbiIsImFscmVhZHlfc3BlY2lmaWVkIiwicmF3X2ZpbmRfcm9vdCIsIm5vZGVzX2J5X3R5cGUiLCJ0eSQwIiwiZmluZF9yb290Iiwid2VpZ2h0IiwibCQwIiwiZCQwIiwibCQxIiwiZG91YmxlJDAiLCJsaW5rcyIsImFyZV9jb21wYXRpYmxlIiwiZGVidWdfbW9kZSIsInBvc3NpYmlsaXRpZXMiLCJzdHJpY3QiLCJyb290MSIsImNjMSIsInJvb3QyIiwiY2MyIiwicmVuYW1lJDEiLCJhdF9sZWFzdF9vbmVfZWRnZSQxIiwiYXRfbGVhc3Rfb25lX2VkZ2UiLCJyZW5hbWUiLCJ0b2RvcyIsInBhaXIiLCJseSIsImx4IiwicmVuIiwidG9kbyIsIm9uZV9lZGdlIiwib25lX2VkZ2UkMSIsInMxIiwiczIiLCJyIiwib25lX2VkZ2UkMCIsImNvbmZsaWN0IiwicmVuYW1lJDAiLCJ0b2RvcyQwIiwiYXRfbGVhc3Rfb25lX2VkZ2UkMCIsImFncyIsImgxIiwiYm9vbCIsImFncyQwIiwiYXV0b21vcnBoaXNtcyIsInBvdGVudGlhbF9wYWlyaW5nIiwibGEiLCJtYXRjaGluZ3MiLCJyYXdfdG9fbmF2aWdhdGlvbiIsImZ1bGwiLCJub2RlcyIsImRvbiIsImZpcnN0IiwiZG9uJDEiLCJoJDAiLCJyZSIsImFucyIsImFucyQwIiwiZmlyc3QkMCIsIm91dCQwIiwiaW5mcyIsImNhbmRfbm9kZXMiLCJsbmsxIiwibG5rMSQwIiwiaXkkMCIsIml5JDYiLCJpeSQyIiwiaXkkNSIsIml5JDMiLCJpeSQ0IiwiaXkkMSIsIm91dGwiLCJjYW5kX25vZGVzJDAiLCJub2Rlc19ieV90eXBlJDAiLCJyZWZfbmJ0IiwicmVmX25idCQwIiwiciQyIiwiaWRzIiwicSIsInEkMCIsInIkMCIsImxzdCIsImZzdHMiLCJyJDEiLCJyZSQwIiwicmVfaW1nIiwicmVfaW1nJDAiLCJyZSQxIiwic2l0ZXMiLCJzaXRlcyQwIiwiY291bnRlcl92YWx1ZSIsInNpZCQwIiwibmlkJDAiLCJjb3VudCIsInNpZCIsIm5pZCIsIm90aGVyIiwiZWwiLCJkaSIsImRuIiwiY291bnQkMCIsImNvdW50ZXJfdmFsdWVfY2MiLCJleHRyZW1pdHkiLCJkb3Rjb21tYSIsImRvdG5ldCIsInByaW50X2NjIiwiY2NfaWQiLCJ3aXRoX2lkIiwic3RoIiwic3RoJDAiLCJmdWxsX3NwZWNpZXMiLCJjY19pZCQwIiwibmVpZ2giLCJsaW5rX2lkcyIsIm5vdF9lbXB0eSIsImFnX3giLCJhZ19pIiwic3QiLCJmcmVlIiwiZHN0X3AiLCJkc3RfYSIsImRzdF90eSIsImtpbmQiLCJvdXQkMSIsInByaW50X2NjX2FzX2lkIiwibm90X2VtcHR5JDAiLCJtZXJnZV9jb21wYXRpYmxlIiwicmVzZXJ2ZWRfaWRzIiwiZnJlZV9pZCIsImluajFfdG9fMiIsImltZyIsImF2YWlsYWJsZV9pZHMiLCJ1c2VkX2lkcyIsImF2YWlsYWJsZV9pbl9jYzEiLCJmcmVlX2lkX2Zvcl9jYzEiLCJnZXRfY2MyIiwicGFjayIsInRvZG9zMiIsInRvZG9zMSIsImluajIiLCJpbmoxIiwiZnJlZV9pZCQwIiwiZnJlZV9pZCQxIiwiZ2V0X2NjMSIsIm5vZGVzaSIsIm5vZGVzbyIsIm5vZGVzaiIsIm5vZGVzbyQwIiwibm9kZXNqJDAiLCJzdGkkMSIsIm4kMSIsInN0aiQzIiwic3RvJDAiLCJuJDIiLCJzdGoiLCJzdGkiLCJzdGokMiIsInN0byIsInN0aiQwIiwic3RpJDAiLCJzdGokMSIsImluajIkMCIsInBhY2skMCIsInRvZG9zMiQwIiwiaiQwIiwibm9kZXNpJDAiLCJpbmoyJDEiLCJwYWNrJDEiLCJjb250ZW50Iiwicm9vdHMiLCJzb25zIiwic2lnbmF0dXJlcyIsImVudiIsInByaW50JDAiLCJwcF9wb2ludCIsInBfaWQiLCJnZXRfc2luZ2xlX2FnZW50IiwiZ2V0JDAiLCJ0b19uYXZpZ2F0aW9uIiwidHJhbnNpdGlvbl90b195b2pzb24iLCJ0cmFuc2l0aW9uX29mX3lvanNvbiIsImRzdCIsInNvcnRzIiwic2lnX2RlY2wiLCJsJDIiLCJzJDEiLCJsJDMiLCJuZXdfb2JzX21hcCIsImdldF9lbGVtZW50YXJ5IiwiZG9tYWluIiwibm9kZSIsImFycm93Iiwic2EiLCJ0YWlsIiwiaW5qIiwicHJpbnQkMSIsImVtYmVkZGluZ3NfdG9fZnVsbHlfc3BlY2lmaWVkIiwiYV9pZCIsImZyZXNoIiwiaWRfYnlfdHlwZSIsIm5iX2lkIiwiaW5zZXJ0X25hdmlnYXRpb24iLCJkc3RfaWQiLCJjY19kIiwiaW5qMmRzdCIsImluajJkc3QkMCIsInBfaWQkMCIsInBvaW50IiwidCQzIiwibmF2JDAiLCJzaSIsInNpJDAiLCJ0JDEiLCJzaSQxIiwiYWckMSIsIm4kMyIsInNpbCIsImFnbCIsImluaiQwIiwidCQyIiwibiQ0Iiwic3VwIiwiaW5qX2Uyc3VwIiwiaW5qX3N1cDJkc3QiLCJpbmpfZF90b19vIiwiY2NfbyIsImludGVyIiwiZGlzYyIsIm5vZGVzZCIsImRpc2MkMCIsIm5vZGVzbyQxIiwiZHMiLCJkbCIsIm9zIiwib2wiLCJsaSIsImRpcyIsImludCQxIiwiaW50ZXJuJDEiLCJhbGxfbGlua3MiLCJkaXNjb3ZlcmVkJDIiLCJkaXNjb3ZlcmVkIiwibmV4dF9yb3VuZCIsInJlY29nbiIsImludGVybiIsImludGVybiQwIiwicmVjb2duJDAiLCJyZWNvZ24kMSIsIm5hdiIsImlual9wXzJkc3QiLCJwX2lkJDEiLCJpbmoyZHN0JDEiLCJhZGRfY2MiLCJ0b3BsZXZlbCIsIm9yaWdpbiIsImVsZW1lbnQiLCJ3IiwiaGFzaCIsInJ0eSQwIiwicmlkJDAiLCJyb290cyQwIiwicnR5IiwicmlkIiwiZW52X3ciLCJvdXRfaWQiLCJlbnZfd19oIiwib2ZfZW52IiwiYWNjX3ciLCJkZWJ1Z19wcmludCIsImNoZWNrX2RhbmdsaW5nIiwid2siLCJiZWdpbl9uZXciLCJmcmVzaF9jY19pZCIsInJhd19maW5pc2hfbmV3IiwiY2NfY2FuZGlkYXRlIiwicHJlZW52IiwiZmluaXNoX25ldyIsIm5ld19saW5rIiwieF9uIiwieV9uIiwic3R5Iiwic3R4IiwibmV3X2ZyZWUiLCJuZXdfaW50ZXJuYWxfc3RhdGUiLCJ2YSIsIm5ld19ub2RlIiwidHlwZV9pZCIsImFyaXR5Iiwibm9kZSQwIiwiZm9sZF9ieV90eXBlIiwiYWdlbnRfdHlwZSIsImxpc3RfcG9zIiwiZm9sZCIsImZpbmFsaXplIiwic2hhcmluZyIsImVudiQwIiwidyQwIiwidyQxIiwidyQyIiwidyQzIiwidyQ0IiwidyQ1IiwiZG9tYWluJDEiLCJsZXZlbCQ0IiwiYWNjJDMiLCJsZXZlbCQxIiwiZG9tYWluJDAiLCJsaXN0IiwiYWNjJDIiLCJ0aGlzJDAiLCJsZXZlbCIsInRoaXMkMSIsInJlbmFtaW5nIiwiYWNjbiIsIm5vZGVzMSIsIm5vZGVzMiIsImkyIiwibDIiLCJpMSIsImwxIiwiaW1hZ2UiLCJuZXdzIiwibWlkIiwiaWQkMCIsImlkJDEiLCJsZXZlbCQyIiwibGV2ZWwkMyIsImNvbXBsZXRlX2RvbWFpbiIsImRvbWFpbiQyIiwic2luZ2xlcyIsInNpZ3MkMSIsImVsZW1lbnRhcmllcyIsInN0ZXAiLCJhcnIiLCJ0eTEiLCJzYTEiLCJzMiQwIiwidHkyIiwic2EyIiwiZG9tYWluX2xldmVsIiwiYWNjX2xldmVsIiwibGwiLCJhY2NsIiwiaW5qcyIsImlual9lX3giLCJzdGF0X25hdl9zdGVwcyIsImxldmVsMCIsInNpbmdsZV9hZ2VudF9wb2ludHMiLCJtZXJnZV9vbl9pbmYiLCJnMSIsImcyIiwibV9saXN0IiwicGFpcmluZyIsIm0kMCIsInB1c2hvdXQiLCJsZW5ndGgiLCJjbyIsImNvJDAiLCJubSIsImNjaWQiLCJyZWNvbnN0cnVjdF9yZW5hbWluZyIsImdyYXBoIiwicmlkcyIsImluamVjdGl2ZSIsInJlY29uc3RydWN0IiwiaXNfcm9vdF9vZiIsInJvb3QkMCIsInJvb3RzX29mIiwiZ2V0IiwiZWxlbWVudHNfd2l0aF90eXBlcyIsImNjcyIsIm1hcCIsImNvbXBhcmUiLCJlbXB0eV9jYWNoZSIsImZyb21fZWRnZSIsInNpdGUiLCJjYWNoZSIsImNhY2hlJDAiLCJyZXZfZGVwcyIsIm9icyIsInJlbWFpbnMiLCJpbmpfcG9pbnQyZ3JhcGgiLCJwaWQiLCJpbmpfcG9pbnQyZ3JhcGgkMCIsInBpZCQwIiwic29uIiwiY2EiLCJjYSQwIiwibmV4dCIsImNhY2hlJDEiLCJyZW1haW5zJDAiLCJvYnNlcnZhYmxlc19mcm9tX2FnZW50IiwicmRlcHMiLCJvYnNlcnZhYmxlc19mcm9tX2ZyZWUiLCJvYnNlcnZhYmxlc19mcm9tX2ludGVybmFsIiwib2JzZXJ2YWJsZXNfZnJvbV9saW5rIiwic2l0ZSQwIiwicHJpbnRfc2l0ZSIsInBsYWNlIiwicHJpbnRfaW50ZXJuYWwiLCJnZXRfdHlwZSIsImdldF9pZCIsImlzX2ZyZXNoIiwiY29uY3JldGl6ZSIsImlual9mcmVzaCIsImlual9ub2RlcyIsImVtcHR5X2V2ZW50IiwianNvbl9kaWN0aW9ubmFyeSIsImFjdGlvbiIsIndlaWdodF9yZXZlcnNlIiwic29ydF9jb25jcmV0ZV9hY3Rpb25fbGlzdCIsInNvcnRfY29uY3JldGVfYWN0aW9uX2xpc3RfcmV2ZSIsInNvcnRfYWJzdHJhY3RfYWN0aW9uX2xpc3QiLCJzb3J0X2Fic3RyYWN0X2FjdGlvbl9saXN0X3JldmUiLCJjb25jcmV0aXplX3Rlc3QiLCJpbmoyZ3JhcGgiLCJwbCIsInBsJDAiLCJwbCQxIiwicGwkMiIsInMkMiIsInBsJDMiLCJzJDMiLCJwbCQ0IiwicyQ0IiwicGwkNSIsImNvbmNyZXRpemVfYWN0aW9uIiwicGwkNiIsInRyeV9jb25jcmV0aXplX2FjdGlvbiIsImFjdGlvbnMiLCJjb25jcmV0aXplX2V2ZW50IiwiYnQiLCJtYXBfdGVzdCIsIm1hcF9hY3Rpb24iLCJtYXRjaF90ZXN0cyIsImIkMyIsImMkMCIsIm1hdGNoX2FjdGlvbnMiLCJibHMiLCJhbHMiLCJvayIsImdldF9pZHMiLCJtYXRjaF9xdWFya3MiLCJhX3F1YXJrcyIsImNfcXVhcmtzIiwiZm1hdGNoIiwiYV9xdWFya3MkMCIsImNfcXVhcmtzJDAiLCJhX3F1YXJrcyQxIiwiYXEiLCJhcSQwIiwiY3EiLCJjX3F1YXJrcyQxIiwiY3FzIiwibWF0Y2hpbmdfYWJzdHJhY3RfY29uY3JldGUiLCJhZSIsImNlIiwiYWVfdGVzdHMiLCJjZV90ZXN0cyIsImFic3RyYWN0X2lkcyIsImNvbmNyZXRlX2lkcyIsInBhcnRpdGlvbiIsImZtYXAiLCJtYXRjaGluZyIsInRlc3RzIiwiY2FjdGlvbnMkMCIsInRsIiwiY2lkIiwiY2lkJDAiLCJ0ZXN0IiwiY3Rlc3RzIiwiY2lkJDEiLCJhY3QiLCJjYWN0aW9ucyIsInN1YnN0X21hcF9jb25jcmV0ZV9hZ2VudCIsIm5hIiwiYWdlbnQkMCIsInN1YnN0X21hcF9zaXRlIiwic3Vic3RfbWFwX2FnZW50X2luX3Rlc3QiLCJpbnRlcm5hbF9zdGF0ZSIsInNpdGUkMSIsInNpdGUkMiIsInNpdGUkMyIsInNpdGUkNCIsImJpbmRpbmdfdHlwZSIsInNpdGUkNSIsInNpdGUkNiIsInNpdGUyIiwic2l0ZTEiLCJzaXRlMSQwIiwic2l0ZTIkMCIsInN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV90ZSIsInN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3Rlc3QiLCJyZW5hbWVfYWJzdHJhY3RfdGVzdCIsInN1YnN0X21hcDJfYWdlbnRfaW5fYWN0aW9uIiwiZiQwIiwiczEkMCIsInMyJDEiLCJzMSQxIiwiczEkMiIsInMyJDIiLCJhZ2VudCQxIiwiYWdlbnQkMiIsInN1YnN0X21hcF9hZ2VudF9pbl9hY3Rpb24iLCJzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfYWMiLCJzdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24iLCJyZW5hbWVfYWJzdHJhY3RfYWN0aW9uIiwic3Vic3RfbWFwX2FnZW50X2luX3NpZGVfZWZmZWN0IiwiYnN0YXRlIiwiYnN0YXRlJDAiLCJzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfc2kiLCJzdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV9zaWRlX2UiLCJyZW5hbWVfYWJzdHJhY3Rfc2lkZV9lZmZlY3QiLCJzdWJzdF9tYXBfYWdlbnRfaW5fZXZlbnQiLCJzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfZXYiLCJzdWJzdF9tYXAyX2FnZW50X2luX2NvbmNyZXRlX2UiLCJmJDEiLCJmJDIiLCJzdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV9ldmVudCIsInJlbmFtZV9hYnN0cmFjdF9ldmVudCIsInByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUiLCJwcmludF9jb25jcmV0ZV90ZXN0IiwicHJpbnRfY29uY3JldGVfYWN0aW9uIiwicHJpbnRfY29uY3JldGVfYmluZGluZ19zdGF0ZSIsImFnX2lkIiwic2lncyQyIiwic2lncyQzIiwid3JpdGVfYmluZGluZ190eXBlIiwicmVhZF9iaW5kaW5nX3R5cGUiLCJiaW5kaW5nX3R5cGVfdG9fanNvbiIsIndyaXRlX3F1YXJrIiwicmVhZF9xdWFyayIsInF1YXJrX3RvX2pzb24iLCJxdWFya19vZl9qc29uIiwid3JpdGVfdGVzdCIsInJlYWRfdGVzdCIsImJpIiwidGVzdF90b19qc29uIiwidGVzdF9vZl9qc29uIiwid3JpdGVfYWN0aW9uIiwiaW5mbyIsInJlYWRfYWN0aW9uIiwiYWN0aW9uX3RvX2pzb24iLCJhY3Rpb25fb2ZfanNvbiIsIndyaXRlX2V2ZW50IiwiYmYiLCJyZWFkX2V2ZW50Iiwic2lkZV9lZmZlY3RzX3NyYyIsInNpZGVfZWZmZWN0c19kc3QiLCJjb25uZWN0aXZpdHlfdGVzdHMiLCJldmVudF90b19qc29uIiwiY2N0IiwiZXZlbnRfb2ZfanNvbiIsImNfdCIsInNfZV9kc3QiLCJzX2Vfc3JjIiwiY2NsIiwicDIiLCJwMSIsInAxJDAiLCJwMiQwIiwicCQ0IiwicCQ1IiwicCQ2IiwicCQ3IiwicCQ4IiwibiQ1IiwibWFwX2ZvbGRfYWdlbnQiLCJhY2MkNCIsImFjYyQ1IiwiYSQ3IiwiYWNjJDYiLCJhJDgiLCJtYXBfYWdlbnQiLCJmb2xkX2FnZW50IiwicyQ1IiwicyQ2IiwiYSQ5IiwiZ2V0X25lZ2F0aXZlX3BhcnQiLCJjcmVhdGVkX2FnZW50cyIsImxua19kc3QiLCJhZ2VudHNfY3JlYXRlZF9ieV9hY3Rpb24iLCJuZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbnNfb2ZfYWMiLCJwb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbnNfb2ZfYWMiLCJzaWRlX2VmZmVjdF9kc3RzIiwicmVtIiwicmV2IiwiZXh0cmFjdF9jY19pZHMiLCJleHRyYWN0X2Fic3RyYWN0X2V2ZW50IiwiYWxnX2V4cHJfdG9feW9qc29uIiwiYWxnX2V4cHJfb2ZfeW9qc29uIiwicnVsZV90b195b2pzb24iLCJydWxlX29mX3lvanNvbiIsImZ1bGx5X3NwZWNpZmllZF9wYXR0ZXJuX3RvX3BvcyIsImciLCJlbWIiLCJnJDAiLCJlbWIkMCIsInRyIiwicHJpbnRfZXhwcl90b195b2pzb24iLCJmX3ZhciIsInByaW50X2V4cHJfb2ZfeW9qc29uIiwibWFwX2V4cHJfcHJpbnQiLCJmb2xkX2V4cHJfcHJpbnQiLCJkaW5fa2luZF90b195b2pzb24iLCJkaW5fa2luZF9vZl95b2pzb24iLCJ3cml0ZV9kaW5fa2luZCIsInN0cmluZ19vZl9kaW5fa2luZCIsImxlbiIsInJlYWRfZGluX2tpbmQiLCJkaW5fa2luZF9vZl9zdHJpbmciLCJwcmludF90X2V4cHJfdG9feW9qc29uIiwicHJpbnRfdF9leHByX29mX3lvanNvbiIsIm1vZGlmaWNhdGlvbl90b195b2pzb24iLCJyYXciLCJuYW1lIiwiaWRzJDAiLCJuYW1lJDAiLCJmJDMiLCJ0ZXN0cyQwIiwiaWRzJDEiLCJmJDQiLCJmJDUiLCJtb2RpZmljYXRpb25fb2ZfeW9qc29uIiwicmF3JDAiLCJib29sX2V4cHJfdG9feW9qc29uIiwiYm9vbF9leHByX29mX3lvanNvbiIsInBlcnR1cmJhdGlvbl90b195b2pzb24iLCJwZXJ0dXJiYXRpb25fb2ZfeW9qc29uIiwiZXhpc3RzX21vZGlmaWNhdGlvbiIsImNoZWNrIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19lIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19wIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19tIiwiZSQwIiwiZm4iLCJleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX20kMCIsIm1hcF9leHByX3J1bGUiLCJmb2xkX2V4cHJfcnVsZSIsIm1hcF9leHByX3BlcnR1cmJhdGlvbiIsImZfYWxnIiwiZl9ib29sIiwiZm9sZF9leHByX3BlcnR1cmJhdGlvbiIsInByaW50X2xpbmsiLCJwcl9wb3J0IiwicHJfdHlwZSIsInByX2Fubm90IiwibGlua190b19qc29uIiwicG9ydF90b19qc29uIiwidHlwZV90b19qc29uIiwiYW5ub3RfdG9fanNvbiIsImxpbmtfb2ZfanNvbiIsInBvcnRfb2ZfanNvbiIsInR5cGVfb2ZfanNvbiIsImFubm90ZWRfb2ZfanNvbiIsInByaW50X2xpbmtfYW5ub3QiLCJsdHlwZXMiLCJydWxlX2ludGVybmFsX29mX2pzb24iLCJwcmludF9jb3VudGVyX3Rlc3QiLCJwcmludF9ydWxlX21peHR1cmUiLCJjcmVhdGVkX2NvdW50ZXJzIiwic2hvd19lcmFzZWQiLCJzaG93X2VyYXNlZCQwIiwiY291bnRlcnMiLCJzd2l0Y2gkMCIsImlzX2NvdW50ZXIkMCIsImVxIiwiZGVsdGEiLCJwcmludF9yYXRlcyIsIm1heF9kaXN0IiwicmEiLCJtZCIsInByaW50X3J1bGUiLCJuYiIsImx0eXBlcyQwIiwicnVsZV9taXh0dXJlX3RvX2pzb24iLCJydWxlX21peHR1cmVfb2ZfanNvbiIsImxhbGdfZXhwcl90b19qc29uIiwibGFsZ19leHByX29mX2pzb24iLCJydWxlX3RvX2pzb24iLCJydWxlX29mX2pzb24iLCJyYWlzZV9pZl9tb2RpZmljYXRpb24iLCJyYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyIsInJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIiwic3RhdHVzIiwic2lkZSIsImFnZW50X25hbWUiLCJyYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXQiLCJyYWlzZV9jb3VudGVyX21pc3VzZWQiLCJyYWlzZV9saW5rX29ubHlfb25lX29jY3VyZW5jZSIsInJhaXNlX2xpbmtfc2hvdWxkX2JlX3JlbW92ZWQiLCJjb3B5X3J1bGVfYWdlbnQiLCJhZ2VudF90b19lcmFzZWQiLCJyYV9wb3J0cyIsInJhX2ludHMiLCJ0b19lcmFzZWQiLCJ0b19tYWludGFpbmVkIiwidG9fcmF3X21peHR1cmUiLCJpbnRlcm5hbHMiLCJwb3J0X25hbWUiLCJtYXhfbGlua19pZCIsIm1heF9zIiwibWF4X2xpbmtfaWRfc2l0ZXMiLCJtYXhfaWQiLCJsaW5rX29jY3VyZW5jZV9mYWlsdXJlIiwia2V5IiwicG9ydHNfZnJvbV9jb250YWN0X21hcCIsInR5X2lkIiwiYWRkX29uZV9pbXBsaWNpdF9pbmZvIiwibGluayIsInByZXZzIiwicF9zd2l0Y2giLCJkc3RfaW5mbyIsImFnX3RhaWwiLCJvdXRfdGFpbCIsInBvcnQiLCJwb3J0cyQwIiwic3ciLCJ0b2RvJDAiLCJwb3J0cyQxIiwiaXNfbGlua2VkX29uX3BvcnQiLCJtZSIsImlzX2xpbmtlZF9vbiIsImRlZmluZV9mdWxsX3RyYW5zZm9ybWF0aW9uIiwidHJhbnNmIiwibGlua3NfdHJhbnNmIiwiY2FuZCIsImFkZGVkIiwicmVtb3ZlZCIsImxpbmtzX3RyYW5zZiQwIiwibGlua3NfdHJhbnNmJDEiLCJkZWZpbmVfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb24iLCJhZGRfaW5zdGFudGlhdGlvbl9mcmVlIiwiYWRkX3NpZGVfc2l0ZSIsInNpZGVfc2l0ZXMiLCJhZGRfZnJlZWRfc2lkZV9lZmZlY3QiLCJzaWRlX2VmZmVjdHMiLCJhZGRfYWdlbnRzX2luX2NjIiwicmVnaXN0ZXJlZF9saW5rcyIsImluc3RhbnRpYXRpb25zIiwiYWdfbCIsIndrJDAiLCJ0cmFuc2YkMCIsImhhbmRsZV9wb3J0cyIsInJfbCIsImNfbCIsImxfdCIsInNpdGVfaWQkNCIsInJfbCQwIiwibGlua3MkMiIsImxfdCQwIiwic2l0ZV9pZCQ1IiwiaXNfZXJhc2VkIiwicmVmX3BvcnRzIiwib19jY190ZXN0cyIsInRoaXNfY2NfdGVzdHMiLCJzaWRlX2VmZmVjdHNfZHN0JDEiLCJzaWRlX2VmZmVjdHNfc3JjJDEiLCJhY3Rpb25zJDMiLCJ0ZXN0cyQyIiwic2l0ZV9pZCQyIiwiaW5zdGFudGlhdGlvbnMkMCIsImFjdGlvbnMkMCIsImxpbmtzJDAiLCJzaWRlX2VmZmVjdHNfZHN0JDAiLCJzaWRlX2VmZmVjdHNfc3JjJDAiLCJhY3Rpb25zJDIiLCJ0ZXN0cyQxIiwic2lkZV9lZmZlY3RzJDEiLCJhY3Rpb25zJDEiLCJzaXRlX2lkJDMiLCJzaWRlX2VmZmVjdHMkMiIsInNpdGVfaWQkMSIsInNpdGVfaWQiLCJzaXRlX2lkJDAiLCJzaWRlX2VmZmVjdHMkMCIsIndrJDEiLCJqJDEiLCJqJDIiLCJpJDMiLCJpJDQiLCJ3ayQ2IiwidHJhbnNmJDciLCJ3ayQyIiwibF90JDIiLCJ0cmFuc2YkMSIsInNpdGVfaWQkNyIsImxfdCQxIiwic2l0ZV9pZCQ2IiwiaSQyIiwiZHN0X3BsYWNlIiwid2skMyIsImNfbCQwIiwibF90JDMiLCJ0cmFuc2YkMiIsInNpdGVfaWQkOCIsInJfbCQxIiwicl9sJDIiLCJsX3QkNyIsInRyYW5zZiQ2IiwicmUkMiIsInNpdGVfaWQkMTIiLCJzaXRlX2lkJDExIiwic2l0ZV9pZCQ5IiwibF90JDUiLCJ0cmFuc2YkNCIsIndrJDQiLCJsX3QkNiIsInRyYW5zZiQ1IiwiY19sJDEiLCJzaXRlX2lkJDEwIiwiaW5jcl9vcmlnaW4iLCJjb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW0iLCJjb21waWxlX21vZGVfb24iLCJwcmVjb21wX21peHMiLCJuZXdfc3dpdGNoIiwiYXV4X29uZSQwIiwicHJldmlvdXMiLCJjdXJyZW50IiwiY3VycmVudCQwIiwiYXV4X2FncyQwIiwiaSQ1Iiwib3JfdHkiLCJwcmV2IiwiYXV4X29uZSIsImkkNiIsIm9yX3R5JDAiLCJpJDciLCJ0b2RvcyQxIiwiYXV4X2FncyIsImFsbF9taXhzIiwidHJhbnNmb3JtYXRpb25zJDAiLCJldmVudCIsImFkZGVkJDUiLCJ3a19vdXQiLCJlbnYkMSIsImFkZGVkJDYiLCJyZW1vdmVkJDAiLCJpbnN0YW50aWF0aW9ucyQxIiwibGlua3NfdHJhbnNmJDIiLCJhZGRlZCQ3IiwicmVtb3ZlZCQxIiwiYWNzIiwiYXkiLCJheCIsImFjdGlvbnMkNCIsInJlbW92ZWQkMiIsInRyYW5zZm9ybWF0aW9ucyQyIiwiY3JlYXRlX2FjdGlvbnMiLCJhZGRlZCQ0IiwiYWRkZWQkMCIsImFkZGVkJDEiLCJwb2ludCQwIiwiYWRkZWQkMiIsImFkZGVkJDMiLCJpbnRmJDAiLCJjcmVhdGVfYWN0aW9ucyQwIiwidHJhbnNmb3JtYXRpb25zJDMiLCJhY3Rpb25zJDUiLCJjb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW0kMCIsImNjX2VudiIsInJ1bGVzIiwibGthcHBhX29mX2VsZW1lbnRhcnlfcnVsZSIsIm5iX2NjIiwibWl4cyIsImxua19wYWNrIiwia25vd25fc3JjIiwiZHN0X3MiLCJzcmNfaW5mbyIsImxua19wYWNrJDAiLCJ0cmFuc2ZzIiwiZnIiLCJmaWQiLCJhX3R5cGUiLCJlZGl0IiwiY2NfaWQxIiwiY2NfaWQyIiwiZWRpdCQwIiwidGVzdCQwIiwiZWRpdCQxIiwidGVzdCQxIiwiZWlkIiwiZWRpdCQyIiwidGVzdCQyIiwiaWQkMyIsImNjX2lkJDEiLCJpZCQyIiwidHJhbnNmcyQwIiwicl9taXgiLCJyX2NyZWF0ZWQiLCJwYXR0ZXJuc19vZl9taXh0dXJlIiwicHJlX2VudiIsInNuYXAiLCJjY19jYWNoZSIsInJhX3R5cGUiLCJhciIsImRhbmdsaW5nIiwiZGFuZ2xpbmckMCIsImRhbmdsaW5nJDEiLCJjY19jYWNoZSQwIiwicHJlX2VudiQwIiwiaW5pdCIsInRva2VucyIsImFsZ3MiLCJvYnNlcnZhYmxlcyIsImludGVydmVudGlvbnMiLCJhc3RfcnVsZXMiLCJhbGdfcmQiLCJ0b2tfcmQiLCJkZXBzX2luX2UiLCJkZXBzX2luX3QiLCJkZWNvbnN0cnVjdCIsImdldF9vYnMiLCJnZXRfcnVsZXMiLCJuZXdfZG9tYWluIiwidG9rZW5zX2ZpbmRlciIsImFsZ3NfZmluZGVyIiwibnVtX29mX2FnZW50Iiwibm1lIiwiZm9sZF9ydWxlcyIsInJ1bGUiLCJmb2xkX3BlcnR1cmJhdGlvbnMiLCJnZXRfcnVsZSIsImdldF9hc3RfcnVsZV93aXRoX2xhYmVsIiwiZ2V0X2FzdF9ydWxlIiwiZm9sZF9hc3RfcnVsZXMiLCJsa2FwcGFfcnVsZSIsImdldF9hc3RfcnVsZV9yYXRlX3BvcyIsInVuYXJ5IiwibmJfcnVsZXMiLCJudW1zX29mX3J1bGUiLCJuYl9zeW50YWN0aWNfcnVsZXMiLCJudW1fb2ZfYWxnIiwiZ2V0X2FsZyIsImdldF9hbGdzIiwibmJfYWxncyIsIm51bV9vZl90b2tlbiIsInN0ciIsIm5iX3Rva2VucyIsImdldF9wZXJ0dXJiYXRpb24iLCJuYl9wZXJ0dXJiYXRpb25zIiwiZ2V0X2FsZ19yZXZlcnNlX2RlcGVuZGVuY2llcyIsImdldF90b2tlbl9yZXZlcnNlX2RlcGVuZGVuY2llcyIsImFsbF9kZXBlbmRlbmNpZXMiLCJwcmludF9hZ2VudCIsInByaW50X2FsZyIsInNwZWNpYWwiLCJwcmludF90b2tlbiIsInByaW50X2FzdF9ydWxlIiwibWFwX29ic2VydmFibGVzIiwicHJfYWxnIiwicHJfcnVsZSIsInByX3BlcnQiLCJwcl9ydWxlJDAiLCJjaGVja19pZl9jb3VudGVyX2lzX2ZpbGxlZF9lbm8iLCJvdmVyd3JpdGVfdmFycyIsImFsZ19vdmVyd3JpdGUiLCJmb2xkX21peHR1cmVfaW5fZXhwciIsIngxIiwieDIiLCJ4MyIsImthcHBhX2luc3RhbmNlX3RvX3lvanNvbiIsImZpbGVzIiwia2FwcGFfaW5zdGFuY2Vfb2ZfeW9qc29uIiwidW5hcnlfcGF0dGVybnMiLCJjY19taXgiLCJhbGdfZXhwciIsImJvb2xfZXhwciIsInByaW50X2V4cHIiLCJhbGciLCJwcmludF9leHByX3ZhbCIsImFsZ192YWwiLCJkZWNvbXBpbGVkX3J1bGUiLCJkaXN0IiwicmF0ZSIsImVsZW1lbnRhcnlfcnVsZSIsInByX3RyYW5zIiwiYm94ZWRfY2MiLCJtb2RpZmljYXRpb24iLCJmbiQwIiwiZm4kMSIsImZuJDIiLCJ2YSQwIiwiY2MkMSIsImZuJDMiLCJmbiQ0IiwicGVydHVyYmF0aW9uIiwicGVydCIsImF1eF9hbGFybSIsImVudl9rYXBwYSIsImRlY29tcGlsZWRfZW52IiwicGFyc2UiLCJyZXN1bHQiLCJnZXRfdmFsdWUiLCJwb3NfcCIsInBhcmFtIiwidmFsdWVfbGlzdCIsInBhcmFtJDAiLCJjZmxvd0ZpbGUiLCJmb3JtYXRDZmxvdyIsInN0b3J5X2NvbXByZXNzaW9uIiwiY29uZiIsInNwIiwidXAiLCJmb3JtYXRDZmxvdyQwIiwidmFsdWUiLCJwb3NfdiIsImVycm9yIiwidGwkMCIsInRsJDEiLCJkaXZpZGVfZXhwcl9ieV9pbnQiLCJvcHQkMCIsInJvb3Rfb25seSIsImxvYyIsImIkMjAiLCJhJDEzIiwicm9vdF9vbmx5JDAiLCJiJDciLCJiJDYiLCJsb2NfY3N0JDAiLCJsb2NfY3N0JDEiLCJjJDEiLCJjJDIiLCJiJDQiLCJsb2NfY3N0JDIiLCJiJDUiLCJsb2NfY3N0IiwiZXhwciQzIiwib3B0JDMiLCJleHByJDIiLCJvcHQkMiIsImV4cHIkMSIsIm9wdCQxIiwiYiQ5IiwiYiQ4IiwibG9jZGl2IiwiYyQ1IiwiYiQxMyIsImV4cHIkNiIsIm9wdCQ2IiwiYiQxNCIsImIkMTAiLCJjJDQiLCJsb2NfYmluJDAiLCJiJDExIiwiZXhwciQ1Iiwib3B0JDUiLCJjJDMiLCJsb2NfYmluIiwiZXhwciQ0Iiwib3B0JDQiLCJhJDEwIiwiYiQxMiIsImIkMTYiLCJhJDExIiwiYiQxNSIsImIkMTgiLCJhJDEyIiwiYiQxNyIsImIkMTkiLCJsb2MkMCIsImEkMTQiLCJhJDE1IiwiYSQxOCIsImEkMTYiLCJhJDE3IiwibG9jJDEiLCJubyQwIiwieWVzJDAiLCJzaW1wbGlmeV9ib29sIiwibG9jJDIiLCJleHByJDciLCJleHByJDgiLCJsb2MkMyIsImV4cHIkOSIsImV4cHIkMTAiLCJleHByX2Jvb2wiLCJzaW1wbGlmeSIsImNsZWFuIiwiY2xlYW5fYm9vbCIsImR0IiwiZHQkMCIsImNzdCIsImNvcnJlY3RlZF9yYXRlIiwiY29ycmVjdGVkX3JhdGUxIiwiY29ycmVjdGVkX3JhdGUyIiwiZSQxIiwiY3N0JDAiLCJjb3JyZWN0ZWRfcmF0ZSQwIiwiY3N0JDEiLCJnZXRfY29ycmVjdGVkX3JhdGUkMCIsImNvcnJlY3RlZF9yYXRlX2NvbnN0IiwibmVjZXNzYXJpbHlfZXF1YWwiLCJhX29wdCIsImJfb3B0IiwiZGVwIiwiYWRkX21peHR1cmUiLCJhZGRfdG9rZW4iLCJkZXBfZW52IiwidGltZV92YXIiLCJhY2N1IiwiYWNjdSQwIiwiYWNjdSQxIiwiZGlmZl9nZW4iLCJmX3Rva2VuIiwiZl9zeW1iIiwiZl90aW1lIiwiZTIkMCIsImRpZmZfdG9rZW4iLCJkaWZmX21peHR1cmUiLCJmb2xkX292ZXJfbWl4X2luX2FsZ19leHByIiwiYXJyYXlfaWQiLCJmb2xkX292ZXJfbWl4dHVyZXNfaW5fYWxnX2V4cHIiLCJtb2RlbCIsImFsZ3NfZXhwciIsInVuYXJ5X3JhdGUiLCJkZWx0YV90b2tlbnMiLCJhY2N1JDIiLCJqc29uX2RpY3Rpb25uYXJ5IiwianNvbl9kaWN0aW9ubmFyeSQwIiwidXBkYXRlX3Byb2ZpbGluZ19pbmZvIiwiYSIsImluZm8iLCJldmVudCIsInN0b3J5X2lkIiwiY29tcGFyZV9ieV9zdG9yeV9pZCIsIngiLCJ5IiwidG9fanNvbiIsImYiLCJvZl9qc29uIiwic3RvcnlfZXZlbnQiLCJzdG9yeV90aW1lIiwid3JpdGVfanNvbiIsIm9iIiwibyIsInJlYWRfanNvbiIsInN0IiwiYiIsInByb2ZpbGluZ19pbmZvIiwicHJpbnRfZXZlbnRfa2luZCIsImVudiIsImkiLCJsIiwicyQxIiwiZW52JDAiLCJyX2lkIiwicyIsInMkMCIsInByaW50X2V2ZW50X2tpbmRfZG90X2Fubm90Iiwic3Vic19zdGVwIiwiZHVtbXlfc3RlcCIsInByaW50X2V2ZW50IiwiY29tcGFjdCIsImxvZyIsImUiLCJldl9raW5kIiwic2lncyIsInN0YXRlIiwic2l0ZSIsImFnIiwiYWdfaWQiLCJwcmludF9zdGVwIiwib3B0IiwiZW52JDEiLCJzdGgiLCJ5JDAiLCJ4JDAiLCJhY3Rpb25zIiwidGVzdHMiLCJzaWdzJDAiLCJnZXRfdHlwZXNfZnJvbV9pbml0IiwiYWNjIiwiYWN0aW9uIiwiYXR5cGUiLCJwcmludF9sYWJlbF9vZl9zdGVwIiwieCQzIiwieCQ0IiwiYSQwIiwibCQwIiwieCQ1IiwieCQxIiwieCQyIiwid3JpdGVfc3RlcCIsInoiLCJ6JDAiLCJ6JDEiLCJ5JDEiLCJyZWFkX3N0ZXAiLCJiJDAiLCJzdGVwX3RvX3lvanNvbiIsInJldl9hY3Rpb25zIiwid3JpdGVfanNvbiQwIiwicmVhZF9qc29uJDAiLCJzdHJpbmdfb2Zfc3RlcCIsImxlbiIsInN0ZXBfb2Zfc3RyaW5nIiwic3RlcF9pc19vYnMiLCJzdGVwX2lzX2luaXQiLCJzdGVwX2lzX3N1YnMiLCJzdGVwX2lzX3J1bGUiLCJzdGVwX2lzX3BlcnQiLCJzaW11bGF0aW9uX2luZm9fb2Zfc3RlcCIsImNyZWF0aW9uX29mX2FjdGlvbnMiLCJvcCIsImNyZWF0aW9uX29mX3N0ZXAiLCJhYyIsImhhc19jcmVhdGlvbl9vZl9zdGVwIiwidGVzdHNfb2Zfc3RlcCIsImFjdGlvbnNfb2Zfc3RlcCIsInNpZGVfZWZmZWN0c19vZl9zdGVwIiwiaW5pdF90cmFjZV9maWxlIiwidXVpZCIsImRlc2MiLCJhc3NlcnRfZmllbGQiLCJpZGVudCIsInJlYWRfdHJhY2VfaGVhZGVycyIsImxleF9zdCIsImxleF9idWYiLCJ1dWlkJDAiLCJ1dWlkJDEiLCJpZGVudCQwIiwiZm9sZF90cmFjZSIsImluaXQiLCJvdXQiLCJmb2xkX3RyYWNlX2ZpbGUiLCJmbmFtZSIsImdldF9oZWFkZXJzX2Zyb21fZmlsZSIsInNpemUiLCJuYiIsInQiLCJ3cml0ZV90Iiwic3RyaW5nX29mX3QiLCJyZWFkX3QiLCJwIiwibGIiLCJ0X29mX3N0cmluZyIsImN1cnJlbnRfc3RvcnkiLCJjIiwiY3VycmVudF90aW1lIiwiY3VycmVudF9ldmVudCIsIm5iX251bGxfZXZlbnQiLCJjb25zZWN1dGl2ZV9udWxsX2V2ZW50IiwicnVsZV9pZCIsImNvbnNlY3V0aXZlX2Jsb2NrZWQiLCJpbmNfc3RvcmllcyIsImNoZWNrX3RpbWUiLCJtYXgiLCJjaGVja19ldmVudHMiLCJvbmVfdGltZV9hZHZhbmNlIiwiZHQiLCJvbmVfY29uc3RydWN0aXZlX2V2ZW50IiwidCQwIiwib25lX25vX21vcmVfYmluYXJ5X2V2ZW50Iiwib25lX25vX21vcmVfdW5hcnlfZXZlbnQiLCJvbmVfY2xhc2hpbmdfaW5zdGFuY2VfZXZlbnQiLCJvbmVfdGltZV9jb3JyZWN0aW9uX2V2ZW50IiwidGkiLCJ0aSQwIiwib25lX2Jsb2NrZWRfZXZlbnQiLCJnZXRfZWZmaWNpZW5jeSIsInByaW50X2VmZmljaWVuY3kiLCJhbGwiLCJpbml0X3RpbWUiLCJtYXhfdGltZSIsIm1heF9ldmVudHMiLCJwbG90X3BlcmlvZCIsInRpbWVfcmF0aW8iLCJ0bWF4IiwiZXZlbnRfcmF0aW8iLCJlbWF4Iiwic2V0X21heF90aW1lIiwic2V0X21heF9ldmVudHMiLCJ0cmFja2VkX2V2ZW50cyIsImNvdW50ZXIiLCJzZXRfcGxvdF9wZXJpb2QiLCJjcmVhdGUiLCJtYXhfZXZlbnQiLCJuYl9ydWxlcyIsImluaXRfdCIsInN0aCQwIiwiaW5pdF9lIiwicmVpbml0aWFsaXplIiwibmV4dF9zdGVwX3NpbXVsYXRpb25faW5mbyIsImN1cnJlbnRfc2ltdWxhdGlvbl9pbmZvIiwibmV4dF9zdG9yeSIsInBvc2l0aXZlX3Bsb3RfcGVyaW9kIiwiZmlsbCIsIm91dHB1dHMiLCJkRSIsIm5leHQiLCJkVCIsImxhc3QiLCJuIiwiZFQkMCIsInRpbWUiLCJjb3VudGVyJDAiLCJwb2ludHMiLCJmYWtlX3RpbWUiLCJhcnJvd2hlYWQiLCJjb2xvciIsInByaW50X2luaXRpYWxfaW5wdXRzIiwiY29uZiIsImlucHV0c19mb3JtIiwibm9Db3VudGVycyIsInIiLCJpbnNfZnJlc2giLCJ0ayIsInByaW50X3NuYXBzaG90IiwiZWwiLCJuYSIsIm1peCIsInByaW50X2RvdF9zbmFwc2hvdCIsIndyaXRlX3NuYXBzaG90IiwicmVhZF9zbmFwc2hvdCIsImtleSIsInNuYXBzaG90X3Rva2VucyIsInNuYXBzaG90X2FnZW50cyIsInNuYXBzaG90X3RpbWUiLCJzbmFwc2hvdF9ldmVudCIsInN0cmluZ19vZl9zbmFwc2hvdCIsInNuYXBzaG90X29mX3N0cmluZyIsIndyaXRlX2RpbiIsInJlYWRfZGluIiwiaCIsImsiLCJkaW5fZW5kIiwiZGluX3J1bGVzIiwiZGluX2ZsdXhzIiwiZGluX2hpdHMiLCJkaW5fc3RhcnQiLCJkaW5fa2luZCIsInN0cmluZ19vZl9kaW4iLCJkaW5fb2Zfc3RyaW5nIiwicHJpbnRfZG90X2RpbiIsImZsdXgiLCJkIiwidiIsImFycm93aGVhZCQwIiwiY29sb3IkMCIsInByaW50X2h0bWxfZGluIiwiYWRkX3Bsb3RfbGluZSIsIm5ld19vYnNlcnZhYmxlcyIsInBsb3QiLCJuYnIiLCJuZXdfdmFsdWVzIiwiaW5pdF9wbG90IiwicGxvdF9sZWdlbmQiLCJ3cml0ZV9wbG90IiwicmVhZF9wbG90IiwicGxvdF9zZXJpZXMiLCJzdHJpbmdfb2ZfcGxvdCIsInBsb3Rfb2Zfc3RyaW5nIiwicHJpbnRfcGxvdF9zZXAiLCJpc190c3YiLCJwcmludF9wbG90X2xlZ2VuZCIsInByaW50X3Bsb3RfbGluZSIsInBwIiwiZXhwb3J0X3Bsb3QiLCJwcmludF93YXJuaW5nIiwicG9zIiwibXNnIiwicHIiLCJwb3MkMCIsImNyZWF0ZV9mbHV4IiwiaW5jcl9mbHV4X2ZsdXgiLCJvZl9ydWxlIiwib25fcnVsZSIsImluY3JfZmx1eF9oaXQiLCJzdG9wX2ZsdXgiLCJkaW5fZGF0YSIsImoiLCJlbXB0eSIsImluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4iLCJwYXR0ZXJuIiwibWF0Y2hpbmdzIiwiYWRkX2ludHNldF9pbl9pbnRtYXAiLCJpZCIsInNldCIsIm1hcCIsImJyZWFrX2FwYXJ0X2NjIiwiZWRnZXMiLCJtb2RfY29ubmVjdGl2aXR5X3N0b3JlIiwibmV3X2NjIiwib3JpZ2luX2NjIiwibW9kX2Nvbm4iLCJjY19pZCIsImNjX21hcCIsIm9zZXQiLCJvc2V0JDAiLCJuc2V0IiwibWVyZ2VfY2MiLCJjYzIiLCJjYzEiLCJtb2RfY29ubmVjdGl2aXR5IiwiY2NfbWFwJDAiLCJzZXQyIiwic2V0MSIsInVwZGF0ZV9yb290cyIsImlzX2FkZCIsInVuYXJ5X2NjcyIsInJvb3QiLCJ2YSIsInNldCQwIiwibnVtYmVyIiwicGF0IiwiZGVidWdfcHJpbnQiLCJkb21haW4iLCJyb290c19vZl9wYXR0ZXJucyIsInJvb3RzIiwicm9vdHNfb2ZfcGF0dGVybnMkMCIsInJvb3RfbWFwcyIsIm9mX3BhdHRlcm4iLCJwYXRfaWQiLCJvZl91bmFyeV9wYXR0ZXJuIiwicmVjZWl2ZV9tZXNzYWdlIiwiY2NzIiwiaXNfdmFsaWQiLCJudW1iZXJfb2ZfaW5zdGFuY2VzIiwicGF0cyIsIm51bWJlcl9vZl91bmFyeV9pbnN0YW5jZXNfaW5fYyIsInBhdDIiLCJwYXQxIiwibWFwMSIsIm1hcDIiLCJjYyIsInBpY2tfdW5hcnlfaW5zdGFuY2VfaW5fY2MiLCJyYW5kb21fc3RhdGUiLCJyb290MSIsInJvb3QyIiwiZm9sZF9waWNrZWRfaW5zdGFuY2UiLCJhY2MkMiIsImFjYyQwIiwicm9vdF9vcHQiLCJhY2MkMSIsImkkMCIsIm5vX25vX25vIiwiZm9sZF9pbnN0YW5jZXMiLCJleGNwIiwic2VudF90b19maXhlZF9yb290IiwiZXhjcF9yb290Iiwic2VudF90b19leGNwX3Jvb3QiLCJ0YWIiLCJhdXgiLCJpdGhfcm9vdHMiLCJpJDEiLCJmb2xkX3VuYXJ5X2luc3RhbmNlcyIsImV4ZWNfYWxnJDAiLCJ0aW1lJDAiLCJnZXRfYWxnIiwiZ2V0X21peCIsImdldF90b2siLCJhbGciLCJzayIsImFsZyQwIiwic2skMCIsImFsZyQxIiwic2skMSIsImFsZyQyIiwib3AkMCIsInNrJDIiLCJ3aXRoX3ZhbHVlIiwiYWxnJDMiLCJuJDAiLCJubyIsInllcyIsImNvbmQiLCJleGVjX2Jvb2wkMCIsImV4ZWNfYWxnIiwiZXhwciIsImV4cHIkMCIsImV4cHIkMSIsImV4cHIkMiIsIm9wJDEiLCJleGVjX2Jvb2wiLCJ5ZXMkMCIsInNrJDQiLCJzayQzIiwic2skNSIsIm4xIiwic2skNiIsIm4xJDAiLCJvcCQyIiwic2skNyIsIm9wJDMiLCJzayQ4IiwidmFsdWVfYm9vbCIsInZhbHVlX2FsZyIsImdldF9lZGdlcyIsInN1bV9pbnN0YW5jZXNfbnVtYmVycyIsImluc3RzIiwicGF0dGVybnMiLCJyZWNvbXB1dGUiLCJvdmVyd3IiLCJhY3Rpdml0eSIsInNldF9hY3Rpdml0eSIsInJ1bGUiLCJ3aXRoX3RyYWNlIiwiYWN0aXZpdHlfdHJlZSIsInVuYXJ5X3BhdHRlcm5zIiwiZGVwc19pbl9lIiwiZGVwc19pbl90IiwiYWx3YXlzX291dGRhdGVkIiwid2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyIsInZhcmlhYmxlc19vdmVyd3JpdGUiLCJ2YXJpYWJsZXNfY2FjaGUiLCJyYXRlIiwiaXNfYmxvY2tlZCIsImRlYnVnX21vZGUiLCJtYXRjaGluZyIsInRvX2Jsb2NrIiwiYWJzdHJhY3RfYWN0aW9ucyIsImluaiIsImFic3RyYWN0X3Rlc3RzIiwiaW5qJDAiLCJzZXRfZXZlbnRzX3RvX2Jsb2NrIiwicHJlZGljYXRlIiwiYWxsX2luamVjdGlvbnMiLCJ1bmFyeV9yYXRlIiwic3RhdGVfaW5zdHMiLCJwYXR0ZXJuYSIsImluc3RhbmNlIiwibWF0Y2hpbmckMCIsInJldl9yb290cyIsIm1heF9kaXN0YW5jZSIsIm5vZGVzIiwicjIiLCJyMSIsInBpY2tfYV9ydWxlX2luc3RhbmNlIiwiZnJvbV9wYXR0ZXJucyIsInByaW50Iiwic3RhdHMiLCJwcmludF9zdGF0cyIsImFwcGx5X25lZ2F0aXZlX3RyYW5zZm9ybWF0aW9uIiwiaW5zdGFuY2VzIiwic2lkZV9lZmZlY3RzIiwiZWRnZXMkMCIsImlkJDAiLCJlZGdlcyQxIiwiaWQkMSIsImlkJDIiLCJjY19tb2RpZiIsImVkZ2VzJDIiLCJzJDIiLCJpZCQzIiwic2lkZV9lZmZlY3RzJDAiLCJzJDMiLCJuYyIsImlkJDQiLCJjY19tb2RpZiQwIiwiZWRnZXMkMyIsInMkNCIsImlkJDUiLCJlZGdlcyQ0IiwiYXBwbHlfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb24iLCJpbmoyZ3JhcGgiLCJ0eSIsImZyZWVfaWQiLCJpbmpfZnJlc2giLCJpbmpfbm9kZXMiLCJpbmoyZ3JhcGgkMCIsIm5jJDAiLCJuJDEiLCJuJDIiLCJuYyQxIiwibmMkMiIsIm1vZGlmX2NjIiwic2lkZV9lZmZlY3RzJDEiLCJuJDMiLCJuYyQzIiwiYXBwbHlfY29uY3JldGVfcG9zaXRpdmVfdHJhbnNmIiwib2JzX2Zyb21fdHJhbnNmb3JtYXRpb24iLCJuYyQ0IiwibmMkNSIsInMkNSIsIm5jJDYiLCJvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbnMiLCJ0cmFucyIsImdldF9zcGVjaWVzX29icyIsIm9icyIsInRyYWNrZWQiLCJmbiIsIm9rIiwicGlkIiwic3BlYyIsInVwZGF0ZV9lZGdlc19mcm9tX2FjdGlvbnMiLCJzaWRlX2VmZmVjdF9kc3QiLCJsbmtfZHN0IiwiY29uY3JldGVfcmVtb3ZlZCIsImRlbF9kZXBzIiwiZGVsX29icyIsImVkZ2VzX2FmdGVyX25lZyIsImNvbmNyZXRlX2luc2VydGVkIiwibmV3X2RlcHMiLCJuZXdfb2JzIiwic3BlY2llcyIsIm1peHR1cmUiLCJmaWxlIiwicmV2X2RlcHMiLCJtYXhfZGlzdF90b19pbnQiLCJzdG9yZV9hY3Rpdml0eSIsInN0b3JlIiwic3ludGF4X2lkIiwiY2NfdmEiLCJyYXRlJDAiLCJhY3QiLCJ1bmFyeSIsIm9sZF9hY3QiLCJ1cGRhdGVfb3V0ZGF0ZWRfYWN0aXZpdGllcyIsImtub3duX3BlcnRzIiwiZGVwIiwicGVydHMiLCJtYXRjaGluZ3Nfb2ZfcnVsZSIsInJ1bGUkMCIsInBhdHRlcm5fdmEiLCJ1bmFyeV9jYW5kaWRhdGVzIiwibmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjIiwibW9kaWZpZWRfY2NzIiwicGFjayQwIiwidW5yYXRlIiwib2xkX3BhY2siLCJpX2luc3QiLCJuZXdfdiIsIm5ld19wYWNrIiwibmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjJDAiLCJ1bmFyeV9jYW5kaWRhdGVzJDAiLCJwYWNrIiwib3ZlcndyaXRlX3ZhciIsInRyYW5zZm9ybV9ieV9hX3J1bGUiLCJzdGF0ZSQxIiwiZXZlbnRfa2luZCIsInBhdGgkMCIsImluamVjdGVkJDAiLCJpbmplY3RlZCIsInJkZXBzIiwiZGVwcyIsInN0YXRlJDAiLCJoJDAiLCJyZW1haW5pbmdfc2lkZV9lZmZlY3RzIiwiZmluYWxfaW5qMmdyYXBoIiwiY29uY3JldGVfaW5zZXJ0ZWQkMCIsImV2IiwidGVzdHMkMCIsIm5ld190cmFja2VkX29ic19pbnN0YW5jZXMiLCJjZXZlbnQiLCJwYXRoIiwia25vd25fYWdlbnRzIiwicHJldGVzdHMiLCJ0ZSIsInRlJDAiLCJhZyQwIiwidGUkMSIsImFnJDEiLCJwYXRoX3Rlc3RzIiwiZnVsbF9jb25jcmV0ZV9ldmVudCIsImFwcGx5X2dpdmVuX2luc3RhbmNlIiwiZGlzdCIsImRpc3QkMCIsInJvb3QwIiwiYXBwbHlfZ2l2ZW5fcnVsZSIsImluc3QiLCJmb3JjZV9ydWxlIiwib3V0JDEiLCJkaXN0X29wdCIsImxvYyIsIm91dCQwIiwic25hcHNob3QiLCJyYXciLCJwaWNrX2FuX2luc3RhbmNlIiwicnQiLCJjaG9pY2UiLCJwYXR0ZXJuMSIsInBhdHRlcm4yIiwiaW5qMSIsImlual9vdXQiLCJpc19jb3JyZWN0X2luc3RhbmNlIiwiZ3JhcGgiLCJpc191bmFyeSIsImludl9yb290cyIsImFwcGx5X2luc3RhbmNlIiwibWF4Q29uc2VjdXRpdmVCbG9ja2VkIiwibWF4Q29uc2VjdXRpdmVDbGFzaCIsImdyYXBoJDAiLCJjYXVzZSIsImFwcGx5X2dpdmVuIiwiZ3JhcGgkMSIsImZpbmFsX3N0ZXAiLCJjb250aW51ZSQwIiwiZG9tYWluJDAiLCJsaXN0IiwiY2FuZHMiLCJtYXRjaGVzIiwibWF0Y2hlcyQwIiwiYXV4X2FkZF90cmFja2VkIiwibmFtZSIsInRwYXR0ZXJuIiwiYWRkX3RyYWNrZWQiLCJyZW1vdmVfdHJhY2tlZCIsIm5hbWUkMCIsInRlc3RlciIsInBsaXN0IiwidGVzdGVyJDAiLCJhZGRfdHJhY2tlZF9zcGVjaWVzIiwicmVtb3ZlX3RyYWNrZWRfc3BlY2llcyIsImdldF9yYW5kb21fc3RhdGUiLCJzZW5kX2luc3RhbmNlc19tZXNzYWdlIiwiYWRkX291dGRhdGVkX2RlcGVuZGVuY2llcyIsIm91dGRhdGVkX2VsZW1lbnRzIiwiZGVidWdfcHJpbnRfaW5zdGFuY2VzIiwiY29tcGFyZV9zdG9wcyIsInAyIiwidDIiLCJwMSIsInQxIiwid2l0aF9kZWx0YV9hY3Rpdml0aWVzIiwidDAiLCJhbGdzX2RlcHMiLCJzdG9wcGluZ190aW1lcyIsInN0b3BzIiwidGltZV9kZXBlbmRlbnRfcGVydHMiLCJvYnNlcnZhYmxlc192YWx1ZXMiLCJkb19tb2RpZmljYXRpb24iLCJleHRyYSIsIm1vZGlmaWNhdGlvbiIsInByaW50X2V4cHJfdmFsIiwidGV4dCIsImciLCJleHRyYSQwIiwiZ3JhcGgkMiIsImV4dHJhJDEiLCJncmFwaCQzIiwicGV4cHIiLCJwZXhwciQwIiwiZmlsZSQwIiwicmVsIiwiZmlsZSQxIiwiZmlsZSQyIiwib3RoZXJzIiwidGhlc2UiLCJjYyQwIiwibmFtZSQxIiwicGVfZXhwciIsInBlX2ZpbGUiLCJmaWxlX29wdCIsImxpbmUiLCJjYyQxIiwiZmlsZSQzIiwiZmlsZSQ0IiwicGVydHVyYmF0ZSIsImlzX2FsYXJtJDAiLCJtaXhfY2hhbmdlZCQwIiwidGFpbCIsInBlcnQiLCJtb2RfYWxhcm0iLCJtaXhfY2hhbmdlZCQxIiwiZWZmZWN0Iiwic3RvcCIsInRhaWwkMCIsImFsaXZlIiwibWl4X2NoYW5nZWQkMiIsImRvX21vZGlmaWNhdGlvbnMiLCJpbml0aWFsaXplIiwiYmluZCIsInJldHVybiQwIiwiZ3JhcGgwIiwic3RhdGUwIiwiaW5pdF9sIiwibXN0YXRlIiwiY29tcGlsZWRfcnVsZSIsInZhbHVlIiwiY3JlYXRpb25zX3NvcnQiLCJtZ3JhcGgiLCJtaWRfZ3JhcGgiLCJtaXhfY2hhbmdlZCIsInBlcnR1cmJhdGVfd2l0aF9iYWNrdHJhY2siLCJwZSIsIm91dHB1dHMkMCIsImNhbmQiLCJyZWd1bGFyX2xvb3BfYm9keSIsInBpY2tlZF9pbnN0YW5jZSIsInN0b3AkMCIsInByZXZfYWN0aXZpdHkiLCJhY3Rfc3RhY2siLCJhcHBsaWVkX3JpZF9zeW50YXgiLCJteV9zeW50YXhfcmRfaWQiLCJyZWdpc3Rlcl9uZXdfYWN0aXZpdHkiLCJzeW50YXhfcmRfaWQiLCJuZXdfYWN0IiwiZmwiLCJjdCIsImZvcmNlX3Rlc3RlZCIsImV4dHJhX3BlcnQiLCJuX2FjdGl2aXR5IiwiZmluYWxfc3RlcCQwIiwiYV9sb29wIiwiZHVtcElmRGVhZGxvY2tlZCIsInN0YXRlJDIiLCJyZCIsImR0JDIiLCJkdGkiLCJkdCQwIiwiZHQkMSIsInN0b3AkMSIsIm5lZWRzX2JhY2t0cmFjayIsImVuZF9vZl9zaW11bGF0aW9uIiwiaW5pdF9zdGF0ZSIsImNjX29mX3N0YXRlIiwiY2NfbWFwcyIsImFnZW50IiwiZSQwIiwid29yayQ1IiwiZm9sZF9hcml0eV9saXN0IiwiYXJpdHkiLCJhZGRfYWdlbnQiLCJ0b2RvcyIsIm1vcnBoaXNtIiwid29yayIsImFpZCIsIndvcmskMCIsIndfYWdlbnQiLCJ0b2RvcyQwIiwid29yayQxIiwidyIsImludGVybmFsIiwibSIsInRvZG9zJDMiLCJtb3JwaGlzbSQwIiwid29yayQzIiwicG9ydCIsImFpZCQwIiwiYWlkJDEiLCJub3RfYWdlbnQiLCJiaWQiLCJub3RfYWdlbnQkMCIsIm5vdF9hZ2VudHMiLCJiaWQkMCIsIndiX2FnZW50JDAiLCJ0b2RvcyQxIiwid2JfYWdlbnQiLCJ3b3JrJDIiLCJ0b2RvcyQyIiwidG9kbyIsIm1vcnBoaXNtJDEiLCJ3b3JrJDQiLCJlbiIsImNpZCIsImRvX25lZ2F0aXZlX3BhcnQiLCJjY19jaGFuZ2UiLCJjY3MkMCIsImludm9sdmVkX2FnZW50cyIsInRlc3RzX3Bhc3Nfb24iLCJhZyQyIiwiYWdfdHkiLCJhZyQzIiwiZHN0X3MiLCJkc3RfYWdfdHkiLCJhZyQ0IiwiYWckNSIsImlzX3N0ZXBfdHJpZ2dlcmFibGVfb25fZWRnZXMiLCJpc19zdGVwX3RyaWdnZXJhYmxlIiwiZG9fYWN0aW9ucyIsImlzX3JlbW92YWwiLCJyZW1vdmFscyIsImRvX2luX29yZGVyIiwiY2NzJDMiLCJhJDEiLCJ0eSQwIiwiY2NzJDQiLCJjY3MkNSIsImNjcyQ2IiwieDIiLCJzMiIsImEyIiwieDEiLCJzMSIsImExIiwiY2NzJDEiLCJjY3MkMiIsImRvX3N0ZXAiLCJraW5kIiwidW5hcnlfZGlzdGFuY2VzIiwiY2MxX2FncyIsImNjMl9hZ3MiLCJjb25uZWN0ZWRfY29tcG9uZW50cyIsInByZWdyYXBoIiwiaW5mbyQwIiwiZXZlbnQkMCIsImNvbm5lY3RlZF9jb21wb25lbnRzJDAiLCJwcmVncmFwaCQwIiwiY29ubmVjdGVkX2NvbXBvbmVudHMkMSIsImluZm8kMSIsImZfb3AiLCJlbXB0eV9jb21waWwiLCJtZXJnZV92ZXJzaW9uIiwiYSIsImIiLCJhcHBseV9pbnQiLCJ0IiwiaSIsImQiLCJyZW9yZGVyX2JvdW5kcyIsImoiLCJjb3VudGVyX3NpZ19vZl9jb3VudGVyIiwiYyIsImxvYyIsImNvdW50ZXJfc2lnX2RlZmF1bHQiLCJjb3VudGVyX3NpZ19taW4iLCJsb2MkMCIsImkkMCIsImNvdW50ZXJfc2lnX21heCIsIm1ha2VfaW52ZXJ0ZWRfY291bnRlcl9zaWciLCJjb3VudGVyIiwiY291bnRlcl9zaWdfbmFtZSIsIm1pbiIsIm1heCIsImZfaW50IiwiZmxpcF9sYWJlbCIsInN0ciIsIm5vX21vcmVfc2l0ZV9vbl9yaWdodCIsImVycm9yIiwibGVmdCIsInJpZ2h0IiwicCIsInAkMCIsInByaW50X2NvdW50ZXJfdGVzdCIsImYiLCJ4IiwieCQwIiwieCQxIiwieCQyIiwicHJpbnRfY291bnRlcl9taW4iLCJwcmludF9jb3VudGVyX21heCIsInByaW50X2NvdW50ZXIiLCJ0ZXN0IiwiZGVsdGEiLCJwcmludF9jb3VudGVyX3NpZyIsInN0cmluZ19hbm5vdF90b19qc29uIiwiZmlsZW5hbWVzIiwic3RyaW5nX2Fubm90ZWRfb2ZfanNvbiIsInN0cmluZ19vcHRpb25fYW5ub3RlZF9vZl9qc29uIiwiY291bnRlcl90ZXN0X3RvX2pzb24iLCJjb3VudGVyX3Rlc3Rfb2ZfanNvbiIsIngkMyIsImJ1aWxkX3BvcnRfb2ZfanNvbiIsIm4iLCJsIiwibW9kX2wiLCJtb2RfaSIsInBvcnRfaW50X21vZCIsInBvcnRfaW50IiwibSQxIiwiaSQxIiwibSQyIiwicG9ydF9pbnRfbW9kJDAiLCJwb3J0X2ludCQwIiwibCQwIiwicG9ydF9saW5rX21vZCIsInBvcnRfbGluayIsIm0iLCJsJDEiLCJtJDAiLCJwb3J0X2xpbmtfbW9kJDAiLCJwb3J0X2xpbmskMCIsInNpdGVfc2lnX29mX2pzb24iLCJuJDIiLCJuJDAiLCJuJDEiLCJkZWZhdWx0JDAiLCJuJDMiLCJzaXRlX29mX2pzb24iLCJjb3VudGVyX3RvX2pzb24iLCJjb3VudGVyX3NpZ190b19qc29uIiwicHJpbnRfYWdlbnRfbW9kIiwicHJpbnRfYXN0X2FnZW50IiwiYWdlbnRfbmFtZSIsImFnZW50X21vZF9vZl95b2pzb24iLCJhZ2VudF90b19qc29uIiwibmEiLCJhZ2VudF9vZl9qc29uIiwicyIsInMkMCIsImFnZW50X29mX2pzb24kMCIsImFnZW50X3RvX2pzb24kMCIsInByaW50X2FzdF9taXgiLCJwb3MiLCJ0b19lcmFzZWRfbWl4dHVyZSIsInRvX2NyZWF0ZWRfbWl4dHVyZSIsInRvX2R1bW15X3VzZXJfc2l0ZSIsImNvdW50ZXJfbmFtZSIsInBvcnRfbmFtZSIsInN0Iiwic2kiLCJ0eSIsInRvX2R1bW15X3VzZXJfYWdlbnQiLCJzZXR1cF9saW5rIiwidmEiLCJzaXRlIiwicm93IiwibGluZSIsIm5vZGVfc2l0ZXMiLCJtaXh0dXJlX3RvX3VzZXJfZ3JhcGgiLCJvdXQiLCJhY2MiLCJpZCIsImFjYyQwIiwidmEkMCIsImFjYyQxIiwicHJpbnRfb25lX3NpemUiLCJ0ayIsIm1peCIsInByX3ZhciIsInByX3RvayIsInByX21peCIsIm5iIiwicHJpbnRfYXJyb3ciLCJiaWRpciIsInByaW50X2FzdF9hbGdfZXhwciIsInByaW50X3JhdGVzX29uZV9kaXIiLCJ1biIsImRlZiIsIm1heF9kaXN0IiwibWQiLCJwcmludF9ydWxlX2NvbnRlbnQiLCJiaWRpcmVjdGlvbmFsIiwiciIsInIkMCIsInByaW50X2FzdF9ydWxlIiwicHJpbnRfY29uZmlndXJhdGlvbiIsInByaW50X2luaXQiLCJwcmludF9hc3RfYm9vbF9leHByIiwicHJpbnRfcHJpbnRfZXhwciIsImF1eCIsImFsZyIsImUiLCJwcmludF9tb2RpZiIsInJhdyIsImZpbGUiLCJvbiIsInAkMSIsIm9uJDAiLCJwJDIiLCJrIiwicCQzIiwicCQ0Iiwib24kMSIsInByaW50X3BlcnR1cmJhdGlvbiIsInJlcCIsIm1vZGlmIiwiY29uZCIsImFsYXJtIiwicHJpbnRfcGFyc2luZ19jb21waWxfa2FwcGEiLCJydWxlX3RvX2pzb24iLCJmX21peCIsImZfdmFyIiwiciQxIiwibWl4X3RvX2pzb24iLCJydWxlX29mX2pzb24iLCJtaXhfb2ZfanNvbiIsIm1vZGlmX29mX2pzb24iLCJleHByIiwiZmlsZSQwIiwiZmlsZSQxIiwiZmlsZSQyIiwiYiQwIiwiaWQkMCIsImIkMSIsImIkMiIsImFsZyQwIiwieSIsIm1lcmdlX2ludGVybmFscyIsIm1lcmdlX3NpdGVzX2NvdW50ZXIiLCJoIiwiYyQwIiwibWVyZ2Vfc2l0ZXNfcG9ydCIsImgkMCIsInhfb3AiLCJ0JDAiLCJtZXJnZV9zaXRlcyIsImNvIiwibmEkMCIsIm1lcmdlX2FnZW50cyIsInRvayIsIm8iLCJtZXJnZV90b2tlbnMiLCJ0b2tzIiwiYWdzIiwic2lnX2Zyb21faW5pdHMiLCJzaWdfZnJvbV9ydWxlIiwidG9rcyQxIiwiYWdzJDAiLCJzaWdfZnJvbV9ydWxlcyIsInNpZ19mcm9tX3BlcnRzIiwiaW5mZXJfYWdlbnRfc2lnbmF0dXJlcyIsInNwbGl0X21peHR1cmUiLCJyaHMiLCJsaHMiLCJhZyIsInBhY2siLCJpbnRmIiwicG9zJDAiLCJpbnRmciIsImludGZsIiwicnIiLCJsbCIsImNvbXBpbF90b19qc29uIiwiZmlsZXMiLCJtYXAiLCJ2YXJfdG9fanNvbiIsInBvc3QiLCJwcmUiLCJjb21waWxfb2ZfanNvbiIsInZhcl9vZl9qc29uIiwid3JpdGVfcGFyc2luZ19jb21waWwiLCJhc3QiLCJyZWFkX3BhcnNpbmdfY29tcGlsIiwibGIiLCJwcmludF9hc3RfbWl4JDAiLCJjb21iaW5hdGlvbnNfb2ZfdmFyX3NldHVwIiwibHMxIiwibHMyIiwiY3MiLCJkcyIsInVwZGF0ZV9yYXRlIiwiY291bnRlcl92YXJfdmFsdWVzIiwidXBkYXRlX2Jvb2xfZXhwciIsImEyIiwiazIiLCJhMSIsImsxIiwib3AiLCJrJDAiLCJvcCQwIiwiYTIkMCIsImsyJDAiLCJhMSQwIiwiazEkMCIsIm9wJDEiLCJ1cGRhdGVfZXhwciIsImEzIiwiazMiLCJhMSQxIiwiazEkMSIsImsyJDEiLCJhMSQyIiwiazEkMiIsInZhcl92YWx1ZSIsImNvdW50ZXJzX21hdGNoaW5nX3MiLCJuYW1lX21hdGNoIiwiaGFzX2NvdW50ZXJzIiwiY29tcGlsIiwic2l0ZXMiLCJzcGxpdF9jb3VudGVyX3ZhcmlhYmxlc19pbnRvX3MiLCJ3YXJuaW5nIiwiZGVidWdfbW9kZSIsInNpZ25hdHVyZXMiLCJydWxlcyQxIiwic3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsIiwiaWRzIiwiY291bnRlcl9kZWZzIiwidmFsdWUiLCJhbm5vdCIsInZhbHVlJDAiLCJ2YXJfbmFtZSIsImFubm90JDAiLCJjb3VudGVyX2RlZiIsImNvdW50ZXJfZGVsdGEiLCJtYXhfbG9jIiwibWluX2xvYyIsIm1ha2VfY2VxX2NvdW50ZXJzX2Zyb21fdmFyX3ZhbCIsInZhbHVlJDEiLCJjb3VudGVyX2RlbHRhJDAiLCJzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWwkMCIsImFzdF9hZ2VudCIsInNpdGVzJDAiLCJzaXRlc19mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWwiLCJ2YXJfdmFsdWVzIiwidXBkYXRlX29wdF9yYXRlIiwidXBkYXRlX3BhaXJfcmF0ZSIsInIyIiwicjEiLCJjaGVja19zeW50YXgiLCJwcmVwYXJlX2xoc19ydWxlIiwicnNpdGVzIiwicm5hIiwibHNpdGVzJDAiLCJsbmEiLCJwcmVwYXJlX3NpdGUiLCJ0bCIsImhkIiwicnNpdGUiLCJjb3VudGVycyIsImxzaXRlcyIsImxhZ2VudCQwIiwibHNpdGVzJDEiLCJsYWdlbnQiLCJydWxlIiwiY29udGVudCIsInJ1bGVzIiwicnVsZV9hbm5vdGVkIiwicnVsZV9uYW1lIiwibWl4X2xocyIsImNvbnRlbnQkMCIsInJfa19vcF91bl9yYXRlcyIsInJfa3VuX3JhdGVzIiwiZXhwcnNfZnJvbV9yYXRlcyIsImF1eF9leHByIiwiZXhwciQwIiwiZXhwciQxIiwiZXhwciQyIiwiZXhwciQzIiwiYWNjJDIiLCJhdXhfYm9vbCIsImV4cHJfb3B0IiwibWl4dHVyZV9mb3JfZWFjaF9jb3VudGVyX3Zhcl92Iiwia19kZWYiLCJrX3VuIiwia19vcCIsImtfb3BfdW4iLCJsaHMkMCIsIm5ld19ydWxlX25hbWUiLCJjb3VudGVyc19pZHNfYXNfc3RyaW5nIiwibG9jYWxpdHkiLCJydWxlX25hbWVfc3RyaW5nIiwicnVsZXMkMCIsImxhYmVsIiwiYWRkX2luY3IiLCJmaXJzdF9saW5rIiwibGFzdF9saW5rIiwiZXF1YWwiLCJzaWdzIiwiaXNfZmlyc3QiLCJpc19sYXN0IiwiY291bnRlcl9hZ2VudF9pbmZvIiwicG9ydF9hIiwicG9ydF9iIiwicG9ydHMiLCJpbnRlcm5hbHMiLCJiZWZvcmUiLCJhZnRlciIsInJhd19pbmNyIiwibGlua19pbmNyIiwiYWdfaW5mbyIsImxpbmsiLCJjcmVhdGVkIiwicmFfZXJhc2VkIiwiZHN0IiwicmFfdHlwZSIsInJhX3BvcnRzIiwiYmVmb3JlX3N3aXRjaCIsInJhX2ludHMiLCJyYV9hZ2VudCIsImVyYXNlX2luY3IiLCJpbmNycyIsImluY3JfcyIsImluY3IiLCJydWxlX2FnZW50IiwiY29tcGlsZV9jb3VudGVyX2luX3J1bGUiLCJydWxlX2FnZW50JDAiLCJyYXdfYWdlbnQiLCJvayIsImxua19uYiIsImxua19uYiQwIiwiY3JlYXRlZF9pbmNyIiwibWl4X2luY3IiLCJwb3J0X2lkIiwic3RhcnRfbGlua19uYiIsImFjY19pbmNycyIsInJhIiwibG9jX2RlbHRhIiwiY291bnRlcl90ZXN0IiwiaiQwIiwic3RhcnRfbGlua19mb3JfY3JlYXRlZCIsImxpbmtfZm9yX2VyYXNlZCIsInRlc3RfaW5jciIsImFkanVzdF9kZWx0YSIsInN3aXRjaCQwIiwibmV3X2xpbmtfbmIiLCJuZXdfaW5jcnMiLCJibHMiLCJhbHMiLCJjcmVhdGVkX2luY3JfbmV3IiwibWl4X2luY3JfbmV3IiwiaW5jcnNfY3JlYXRlZCIsInJhd19hZ2VudCQwIiwiYWdlbnRfbmFtZSQwIiwiaW5jcnNfY3JlYXRlZCQwIiwicnVsZV9hZ2VudF9taXgiLCJyYXdfbWl4IiwiY291bnRlcnNfcGVydHVyYmF0aW9ucyIsImFzdF9zaWdzIiwiYWdlbnRfdHlwZSIsImZpbGVuYW1lIiwic3RvcF9tZXNzYWdlIiwibW9kcyIsImxvY19hZyIsImFnX2lkIiwic2lnbiIsImFyaXR5IiwiY19uYSIsImNfaWQiLCJtYXhfdmFsIiwidmFsX29mX2NvdW50ZXIiLCJtYWtlX2NvdW50ZXIiLCJuYW1lIiwiYWRkX2NvdW50ZXJfdG9fY29udGFjdF9tYXAiLCJhZGRfbGlua19jb250YWN0X21hcCIsImFubm90YXRlX2Ryb3BwZWRfY291bnRlcnMiLCJhc3RfY291bnRlcnMiLCJyYV9jb3VudGVycyIsInBzZXQiLCJwc2V0JDAiLCJhbm5vdGF0ZV9lZGl0X2NvdW50ZXJzIiwiYW5ub3RhdGVfY291bnRlcnNfd2l0aF9kaWZmIiwibGMiLCJyYyIsImNzZXQiLCJjc2V0JDAiLCJyYyQwIiwiYyQxIiwicmNfciIsImFubm90YXRlX2NyZWF0ZWRfY291bnRlcnMiLCJjb3VudGVyX2xpc3QiLCJhZ2VudF9pZCIsImFnZW50X3NpZ25hdHVyZSIsImNvdW50ZXJfaW5mbyIsImNvbnZlcnRfZGVsdGEiLCJtYXBfb3B0Iiwib3B0IiwicmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IiwiYnVpbGRfbF90eXBlIiwiZHN0X3R5IiwiZHN0X3AiLCJ0eV9pZCIsInBfaWQiLCJjb250YWN0X21hcCIsInN0eSIsInNwIiwiZHR5IiwiZHAiLCJjb250YWN0X21hcCQwIiwic2wiLCJkbCIsImRpIiwicnVsZV9pbmR1Y2VzX2xpbmtfcGVybXV0YXRpb24iLCJzb3J0Iiwid2FybmluZ19mb3JfY291bnRlcnMiLCJzaXRlX3Nob3VsZF9tYWRlX2JlX2ZyZWUiLCJhZ190eSIsImJ1aWxkX2xpbmsiLCJ3YXJuX29uX3N3YXAiLCJsaW5rc190d28iLCJsaW5rc19vbmUiLCJvbmUkMCIsIm5ld19saW5rIiwib25lIiwic3dpdGNoJDEiLCJkc3RfaWQiLCJtYWludGFpbmVkIiwibGlua19zd2FwIiwiYW5ub3RhdGVfZHJvcHBlZF9hZ2VudCIsInN5bnRheF92ZXJzaW9uIiwicl9lZGl0X3N0eWxlIiwibGlua3NfYW5ub3QiLCJzaW1wbGVfcG9ydF9saXN0IiwibGFubm90IiwicF9wb3MiLCJwb3MkNSIsInBvcyQxIiwicG9zX2xpbmsiLCJwb3MkMiIsInBvcnRfbmFtZSQwIiwicG9zJDMiLCJsYW5ub3QkMCIsInBvc19saW5rJDAiLCJwb3MkNCIsInBvcnRfbmFtZSQxIiwiYW5ub3RhdGVfY3JlYXRlZF9hZ2VudCIsInJhbm5vdCIsInJhbm5vdCQwIiwidHJhbnNsYXRlX21vZGlmaWNhdGlvbiIsIndhcm5faW5mbyIsInJoc19saW5rcyIsImxoc19saW5rcyIsInNpdGVfbmFtZSIsInBvc19qIiwicmhzX2xpbmtzJDAiLCJhbm5vdGF0ZV9hZ2VudF93aXRoX2RpZmYiLCJscCIsInJwIiwicmVnaXN0ZXJfcG9ydF9tb2RpZiIsImxuazEiLCJyaHNfbGlua3MkMSIsInBvcyQ2IiwibmEkMSIsInJoc19saW5rcyQyIiwicG9zJDciLCJpJDIiLCJsaHNfbGlua3MkMiIsInZhJDEiLCJsaHNfbGlua3MkMCIsImxoc19saW5rcyQxIiwicmhzX2xpbmtzJDMiLCJwb3NfbGluayQxIiwiZHN0X3R5JDAiLCJkc3RfcCQwIiwicG9zJDExIiwibmEkNCIsInBvcyQ4IiwibmEkMiIsInBvcyQ5IiwiaSQzIiwicG9zJDEwIiwibmEkMyIsInJoc19saW5rcyQ0IiwiZHN0X3R5JDEiLCJkc3RfcCQxIiwicG9zJDEyIiwiaSQ0IiwicmhzX2xpbmtzJDUiLCJyZWdpc3Rlcl9pbnRlcm5hbF9tb2RpZiIsImludDEiLCJ2YXBvcyIsInZhcG9zJDAiLCJ2YSQyIiwiYW5ub3RlZCIsInJwJDAiLCJhbm5vdGVkJDAiLCJycF9yIiwic2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291IiwibHMiLCJwcyIsImZpbmFsX3J1bGVfc2FuaXR5IiwicmhzX2xpbmtzX29uZSIsImxoc19saW5rc190d28iLCJsaHNfbGlua3Nfb25lIiwicmEkMCIsIm1vZHMkMCIsIndhcm5pbmckMCIsImFubm90YXRlX2xoc193aXRoX2RpZmYiLCJzeW50YXhfdmVyc2lvbiQxIiwibGhzJDciLCJyaHMkOSIsInJocyQwIiwibGlua3NfYW5ub3QkMSIsImVyYXNlZCIsImFkZGVkIiwibG1vZCIsImxhZ19zIiwibHBvcyIsImxhZ2VudF9uYW1lIiwicm1vZCIsInJhZ19zIiwicnBvcyIsInJhZ2VudF9uYW1lIiwibGFnX2MiLCJsYWdfcCIsInJhZ19jIiwicmFnX3AiLCJsaW5rc19hbm5vdCQwIiwibGFnIiwicmFnIiwibGxpbmtzIiwicmxpbmtzIiwiY21peCIsInN5bnRheF92ZXJzaW9uJDAiLCJsaW5rc19hbm5vdCQ3IiwibGlua3NfYW5ub3QkNiIsIm1peCQzIiwiY21peCQyIiwibGhzJDQiLCJyaHMkNiIsImxocyQ1IiwicmhzJDciLCJyaHMkOCIsImxocyQ2IiwibGlua3NfYW5ub3QkMiIsIm1peCQwIiwiY21peCQwIiwibGhzJDEiLCJyaHMkMSIsImxhZ2VudF9uYW1lJDAiLCJsaHMkMiIsImxtb2QkMCIsImxwb3MkMCIsInJocyQzIiwicmEkMSIsIm1peCQyIiwibGlua3NfYW5ub3QkNCIsInJocyQyIiwicm1vZCQwIiwicmFnX3MkMCIsInJwb3MkMCIsInJhZ2VudF9uYW1lJDAiLCJsYWdfYyQwIiwibGFnX3AkMCIsInJhZ19jJDAiLCJyYWdfcCQwIiwibGlua3NfYW5ub3QkMyIsIm1peCQxIiwibGhzJDMiLCJyaHMkNCIsInJtb2QkMSIsImFnZW50X3R5cGUkMCIsImNvdW50ZXJfbGlzdCQwIiwic2ltcGxlX3BvcnRfbGlzdCQwIiwiY21peCQxIiwibGlua3NfYW5ub3QkNSIsInJocyQ1IiwiYW5ub3RhdGVfZWRpdF9taXh0dXJlIiwiaXNfcnVsZSIsIm5ld3MiLCJzY2FuX3BvcnQiLCJtb2RpZiQwIiwibW9kaWYkMSIsIm1vZGlmJDIiLCJtb2RpZiQzIiwidmEkMyIsIm1vZGlmJDQiLCJpX2lkIiwibWl4dHVyZV9vZl9hc3QiLCJjb252ZXJ0X3Rva2VuX25hbWUiLCJ0a19uYW1lIiwiYWxnX2V4cHJfb2ZfYXN0IiwiYWxncyIsIm1heF9hbGxvd2VkX3ZhciIsImEkMCIsImxhYiIsIm5vIiwieWVzIiwiYm9vbF9leHByX29mX2FzdCIsInRrX25hbWUkMCIsImFzdCQwIiwieSQwIiwicHJpbnRfZXhwcl9vZl9hc3QiLCJhc3NlbWJsZV9ydWxlIiwicl9jcmVhdGVkIiwicl9taXgiLCJhbCIsInJfZGVsdGFfdG9rZW5zIiwicl9yYXRlIiwiZGlzdCIsInVuX3JhdGUiLCJ1bl9yYXRlJDAiLCJyX3VuX3JhdGUiLCJtb2RpZl9leHByX29mX2FzdCIsImFzdF9ydWxlIiwicnVsZV9jb250ZW50IiwiY3JlYXRlZF9taXgiLCJtaXh0dXJlIiwicnVsZV9jb250ZW50JDAiLCJjcmVhdGVkX21peCQwIiwibWl4dHVyZSQwIiwiaG93IiwicmVsIiwicCQ1IiwiYWRkX3VuX3ZhcmlhYmxlIiwicmF0ZV92YXIiLCJrJDEiLCJhY2NfdW4iLCJhZ2VudF9zaWdzX29mX2FnZW50X3NpZ3Nfd2l0aF8iLCJidWlsZF9jb250YWN0X21hcCIsImFnZW50X3NpZ3NfcHJlIiwic2l6ZV9zaWdzIiwiYWdfbmFtZSIsInNpdGVfbmFtZV9hZzEiLCJzaXRlX3NpZyIsInNpdGVfbGlua3MiLCJhZzJfbmFtZSIsInNpdGVfbmFtZV9hZzIiLCJhZzJfaWQiLCJzaXRlX2lkIiwic2hvdWxkX3JhaXNlX2Zvcl9taXNzaW5nX2xpbmsiLCJpbml0X29mX2FzdCIsImluaXRzIiwiaW5pIiwid2hvIiwiaW52ZXJ0ZWRfY291bnRlcl9uYW1lIiwiY29tcGlsX29mX2FzdCIsInZhcl9vdmVyd3JpdGUiLCJhc3RfY29tcGlsJDAiLCJjb3VudGVyX2ZvbGRfaW5fbWl4dHVyZSIsImFjYzIiLCJhZ2VudF9saXN0IiwiYWNjMyIsImFnZW50Iiwic2l0ZV9saXN0IiwiYWNjNCIsImNvdW50ZXJfZm9sZF9pbl9leHByJDAiLCJlMSIsImNvdW50ZXJfZm9sZF9pbl9leHByIiwiZTIiLCJlMSQwIiwiZWIiLCJjb3VudGVyX2ZvbGRfaW5fYmV4cHIkMCIsImJleHByIiwiYmV4cHIkMCIsImJleHByJDEiLCJiZTEiLCJjb3VudGVyX2ZvbGRfaW5fYmV4cHIiLCJiZXhwciQyIiwiY291bnRlcl9mb2xkX2luX2JleHByX29wdCIsImNvdW50ZXJfZm9sZF9pbl9ydWxlIiwicnVsZSQwIiwiZSQwIiwiZSQxIiwiZSQyIiwiYWNjJDMiLCJlJDMiLCJhY2MkNCIsImNvdW50ZXJfZm9sZF9pbl9wcmludCIsImluaXQiLCJsMSIsInZhcmlhYmxlX2RlZiIsImwyIiwib2JzX2RlZiIsImwzIiwibDQiLCJwZXJ0dXJiYXRpb24iLCJiMl9vcHQiLCJtb2RfbGlzdCIsImIxX29wdCIsIm1vZF9kZWYiLCJsJDIiLCJjb3VudGVyc193aXRoX2NsdGVfdGVzdHMiLCJhZ2VudF9tb2QiLCJjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV8iLCJjb3VudGVyX29yaWciLCJjb252ZXJ0X3ZhbHVlIiwidXBkYXRlIiwicmVmX21heCIsInJlZl9taW4iLCJjb252ZXJ0X2luZm8iLCJjb3VudGVyX3NpZ192aXNpYmxlIiwibWFwJDAiLCJuZXdfY291bnRlcl9zaXRlcyIsImNvdW50ZXJfY29udmVyc2lvbl9pbmZvX21hcCIsInJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQiLCJjbHRlX3ZhbHVlX29yX25vbmUiLCJuZXdfc2l0ZSIsIm9yaWdpbmFsX2NvdW50ZXJfc2l0ZSIsImludmVydGVkX2NvdW50ZXJfc2l0ZSIsInNpdGVfbGlzdF93aXRoX29wcG9zaXRlX2RlbHRhcyIsImFkZGVkX3NpdGVzIiwibmV3X3NpdGVfbGlzdCIsImFkZF9pbnZlcnRlZF9jb3VudGVyX3RvX2luaXRfbSIsImluZm8iLCJtYXBfZXhwciIsIm1hcF9iZXhwciIsIm1hcF9ydWxlIiwicmV3cml0ZSIsInJ1bGVfZGVmIiwiaW5pdF9raW5kIiwicXVhbnRpdHlfYWxnX2V4cHIiLCJpbml0JDAiLCJ2YXJpYWJsZXMiLCJvYnNlcnZhYmxlcyIsIm1hcF9wcmludCIsIm1hcF9tb2RpZiIsImwkMyIsImEkMSIsImwkNCIsImwkNSIsImV4dCIsInBlcnR1cmJhdGlvbnMiLCJhc3RfY29tcGlsIiwiYWdlbnRfc2lnX2lzX2ltcGxpY2l0IiwiYXN0X2NvbXBpbCQxIiwiYXN0X2NvbXBpbCQyIiwiYWNjMCIsImFjYzEiLCJhY2NfY291bnRlcnNfcGVyX2FnZW50IiwiYWNjX3NpZ3MiLCJhY2NfY291bnRlcl9uYW1lcyIsImFjY19zaXRlX3NpZ3MiLCJhY2NfbGlua3MiLCJjb3VudGVyc19hZ2VudCIsInNpdGVfc2lnc19wcmVfbmFtZWRkZWNscyIsInNpdGVfc2lnc19uZCIsImNvdW50ZXJzX3Blcl9hZ2VudCIsInNpZ3Nfd2l0aF9saW5rc19hc19saXN0cyIsInNpZ3Nfd2l0aF9saW5rc19hc19saXN0cyQwIiwiY291bnRlcl9hZ2VudF9uYW1lIiwiYV9wb3J0X25hbWUiLCJiX3BvcnRfbmFtZSIsImFfcG9ydF9zaWciLCJjb3VudGVyc19mcm9tX2FnZW50IiwiYWdlbnRfY291bnRlcl9wb3J0X25hbWUiLCJiX2xpbmtzIiwiYl9wb3J0X3NpZyIsInNpdGVfc2lnc19jb3VudGVyX2FnZW50IiwiYWdlbnRfc2lncyIsImFnZW50c19zaWciLCJyX3BvcyIsImxhYmVsX29wdCIsInByaW50ZXIiLCJzZXQiLCJzZXQkMCIsInNldCQxIiwicnVsZV9sYWJlbCIsInJ1bGVfbmFtZXMiLCJrX2RlZiQwIiwia19kZWYkMSIsInJhdGVfdmFyJDAiLCJyYXRlX3Zhcl91biIsImNyZWF0ZWRfbWl4JDEiLCJtaXh0dXJlJDEiLCJyYXRlX3Zhcl91biQwIiwia19vcF91biQwIiwiYWNjX3VuJDAiLCJjcmVhdGVkX21peCQyIiwibWl4dHVyZSQyIiwiY2xlYW5lZF9ydWxlcyIsImV4dHJhX3ZhcnMiLCJ2YXJzIiwidmFyJDAiLCJhY2NfdmFycyIsIm92ZXJ3cml0ZV92YXJzX3JlbWFpbmluZyIsIm90aGVyX292ZXJ3cml0ZV92YXJzIiwibWF0Y2hzIiwidiIsImFjY192YXJzX3dpdGhfeF9yZXdyaXR0ZW5faWZfcCIsInJldl9hbGdfdmFycyIsInZhcl9vdmVyd3JpdGVfbm90X2FwcGxpZWQiLCJhbGdfdmFyc193aXRoX3Jld3JpdHRlbl92YXJzIiwiYWxnX3ZhcnNfYXJyYXkiLCJhbGdfdmFyc19maW5kZXIiLCJ0b2tlbl9uYW1lcyIsInRva2Vuc19maW5kZXIiLCJ1cF92YXJzJDAiLCJ1cF92YXJzIiwidXBkYXRlZF9hbGdfdmFycyIsInBlcnR1YmF0aW9uc193aXRob3V0X2NvdW50ZXJzIiwicGVydHVyYmF0aW9ucyQwIiwidmFyaWFibGVzJDAiLCJvYnNlcnZhYmxlcyQwIiwiaW5pdCQxIiwieXlsaHMiLCJ5eWxlbiIsInl5ZGVmcmVkIiwieXlkZ290byIsInl5c2luZGV4IiwieXlyaW5kZXgiLCJ5eWdpbmRleCIsInl5dGFibGUiLCJ5eWNoZWNrIiwieXluYW1lc19jb25zdCIsInl5bmFtZXNfYmxvY2siLCJhZGRfcG9zIiwicmhzX3BvcyIsImVuZF9wb3MiLCJzdGFydF9wb3MiLCJpbnRlcm5hbF9tZW1vcnkiLCJhZGQiLCJ5eXRyYW5zbF9jb25zdCIsInl5dHJhbnNsX2Jsb2NrIiwieXl0YWJsZXNpemUiLCJ5eWFjdCIsImNhbWxfcGFyc2VyX2VudiIsIl8yIiwiXzEiLCJfNSIsIl8zIiwiXzciLCJfNCIsIl84IiwiYW4iLCJwZW5kIiwiXzkiLCJfMTEiLCJ6Iiwicm1fdG9rZW4iLCJhZGRfdG9rZW4iLCJkZWx0YV90b2tlbiIsIl82Iiwia2JhY2sxIiwia2JhY2siLCJwb3NfZW5kIiwiZXBhdCIsInBhdCIsInBlbmRwIiwicGF1c2UiLCJlZmYiLCJ5eXRhYmxlcyIsIm1vZGVsIiwibGV4ZnVuIiwibGV4YnVmIiwiaW50ZXJhY3RpdmVfY29tbWFuZCIsInN0YW5kYWxvbmVfZWZmZWN0X2xpc3QiLCJzdGFuZGFsb25lX2Jvb2xfZXhwciIsImFwcGVuZF90b19hc3RfY29tcGlsIiwicmV2X2luc3RyIiwic3RyX3BvcyIsInZvbF9wYXJhbSIsInZvbCIsInZvbF90eXBlIiwiaW5pdF90IiwidmFyJDEiLCJsYmwiLCJlZmZlY3QiLCJ2YWx1ZV9saXN0IiwicGFyYW1fbmFtZSIsInJ1Iiwib2NhbWxfbGV4X3RhYmxlcyIsImtleXdvcmRzIiwidG9rZW4iLCJvY2FtbF9sZXhfdG9rZW5fcmVjIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJvY2FtbF9sZXhfc3RhdGUkMSIsImlubGluZV9jb21tZW50IiwicyQxIiwibGFiJDAiLCJzJDIiLCJhY2MkNSIsImFjYyQ2IiwieCQ0IiwiYWNjJDciLCJ4JDUiLCJhY2MkOCIsImFjYyQ5IiwiZXJyIiwiZXJyJDAiLCJjb21waWxlIiwibG9nZ2VyIiwiZmljIiwiY29tcGlsJDAiLCJtc2ciLCJ3cml0ZV9jYXRhbG9nX2l0ZW0iLCJvYiIsInBvc2l0aW9uIiwicmVhZF9jYXRhbG9nX2l0ZW0iLCJrZXkiLCJjb3VudCIsImNyZWF0ZSIsInB1dCIsInJhbmsiLCJjYXRhbG9nIiwiYWllIiwiZmlsZV9jcmVhdGUiLCJmaWxlX21vdmUiLCJmaWxlX3BhdGNoIiwiZmlsZV9kZWxldGUiLCJmaWxlX2dldCIsInBhcnNlIiwieWllbGQkMCIsInRleHQiLCJyYW5nZSIsImNvbXBpbGUkMCIsImV4biIsIm1lc3NhZ2UiLCJtZXNzYWdlJDAiLCJpbnN0cyIsIm92ZXJ3cml0ZSIsIml0Iiwic3RhcnRfcnVsZSIsInNwYWNlX2NoYXJzIiwicmVzZXRfZW9mIiwidG9rZW4kMCIsInJlYWRfbGFiZWwiLCJvY2FtbF9sZXhfc3RhdGUkMiIsIm9jYW1sX2xleF9zdGF0ZSQzIiwic3RyJDAiLCJjaGFyX2xpc3QiLCJyZXBseSIsIndyaXRlX3YiLCJ3cml0ZV9jYXRhbG9nX2l0ZW1zIiwibGlmdF9hbnN3ZXIiLCJvbl9tZXNzYWdlIiwiY3VycmVudF9pZCIsImFuc3dlciIsIm1zZ19pZCIsIm1zZ19pZCQwIiwibXNnX2lkJDEiLCJtc2dfaWQkMiIsIm91dCQ0IiwicG9zaXRpb24kMCIsImlkJDQiLCJjb250ZW50JDEiLCJvdXQkMyIsImlkJDMiLCJvdXQkMiIsImlkJDIiLCJvdXQkMSIsImlkJDEiLCJvdXQkMCIsImNvbXBpbGVfbW9kZV9vbiIsImRvbWFpbiIsImRvbWFpbiQwIiwiZG9tYWluJDEiLCJhJDIiLCJkb21haW4kMiIsImRvbWFpbiQzIiwib3JpZ2luIiwiY2NzIiwiZG9tYWluJDQiLCJvdXRfY2NzIiwiY29uZCQwIiwiZG9tYWluJDUiLCJ5ZXMkMCIsImRvbWFpbiQ2Iiwibm8kMCIsImRvbWFpbiQ3IiwiYSQzIiwiYSQ0IiwiY29tcGlsZV9wdXJlX2FsZyIsImNvbXBpbGVfYWxnIiwiY29tcGlsZV9ib29sIiwicnVsZXNfb2ZfYXN0IiwiZGVwc19tYWNoaW5lcnkiLCJzeW50YXhfcmVmIiwiYWxnX2V4cHIiLCJkZWx0YV90b2tzIiwiZGVwcyIsImNycCIsInJhdGUiLCJkJDAiLCJkJDEiLCJkaXN0JDAiLCJ1bnJhdGUiLCJ1bmFyeV9pbmZvcyIsIm9yaWdpbiQwIiwicnVsZV9taXh0dXJlcyIsImRlcHNfYWxncyQwIiwibmVnIiwic3ludGF4IiwiY2NzJDAiLCJ1ciIsImRlcHNfYWxncyIsInJ1bGVzX2wiLCJvJDAiLCJkJDIiLCJkJDMiLCJjb21waWxlX3ByaW50X2V4cHIiLCJleCIsImVsIiwiYXN0X2FsZyIsImVmZmVjdHNfb2ZfbW9kaWZzIiwiYXN0X2FsZ3MiLCJhc3RfcnVsZXMiLCJyZXZfZWZmZWN0cyIsImFsZ19wb3MiLCJlbGVtX3J1bGVzIiwiZWxlbV9ydWxlIiwiYWxnX2V4cHIkMCIsImFsZ19wb3MkMCIsInBleHByIiwicGV4cHIkMCIsInBleHByJDEiLCJwZXhwciQyIiwicHJpbnQiLCJwZXhwciQzIiwicGV4cHIkNCIsInByaW50JDAiLCJ0ZXN0cyIsImRvbWFpbiQ4IiwicGV4cHIkNSIsInBleHByJDYiLCJkb21haW4kOSIsInBleHByJDciLCJwZXhwciQ4IiwiZG9tYWluJDEwIiwicGV4cHIkOSIsInBleHByJDEwIiwiZG9tYWluJDExIiwiY2NzJDEiLCJkb21haW4kMTIiLCJhcnIiLCJjb21waWxlX21vZGlmaWNhdGlvbnNfbm9fdHJhY2siLCJjb21waWxlX2luaXRzIiwicmVzY2FsZSIsImVudiIsInByZWVudiIsIm1peF9wb3MiLCJhbGckMSIsInByZWVudiQwIiwiZmFrZV9ydWxlIiwiY29tcGlsZWRfcnVsZSIsInByZWVudiQxIiwidGtfbCIsInRrX2lkIiwiZmFrZV9ydWxlJDAiLCJjb21waWxlZF9ydWxlJDAiLCJpbml0X2wiLCJvdXRwdXRzIiwicmV0dXJuJDAiLCJzaGFyaW5nIiwib3ZlcndyaXRlX2luaXQiLCJvdmVyd3JpdGVfdDAiLCJyZXNjYWxlX2luaXQiLCJzaWdzX25kIiwidGtfbmQiLCJyZXN1bHQiLCJsYmxfcG9zIiwiYWxnX2EiLCJhbGdfbmQiLCJhbGdfZGVwcyIsImNyIiwiZmRvbWFpbiIsImZydWxlcyIsImZhbGdfZGVwcyIsImNvbXBpbGVkX3J1bGVzIiwiYWxnX2RlcHMkMCIsInJ1bGVfbmQiLCJvcHRfcG9zdCIsIm1vZGlmX2V4cHJfbGlzdCIsInByZV9leHByIiwidHJhY2tpbmdfZW5hYmxlZCIsImxwZXJ0IiwicHJlX2V4cHIkMCIsInRfdmFyIiwidDAiLCJlZmZlY3RzIiwicG9zdF9leHByIiwicG9zdF9wb3MiLCJoYXNfdHJhY2tpbmciLCJuZWVkc19iYWNrdHJhY2siLCJyZXBlYXQiLCJwZXJ0Iiwib3V0X2FsZ19kZXBzIiwiY29udCIsIm9icyIsImRvbV9zdGF0cyIsImJ1aWxkX2luaXRpYWxfc3RhdGUiLCJiaW5kIiwid2l0aF90cmFjZSIsIndpdGhfZGVsdGFfYWN0aXZpdGllcyIsInJhbmRvbV9zdGF0ZSIsImdyYXBoMCIsInN0YXRlMCIsImRvX2ludGVyYWN0aXZlX2RpcmVjdGl2ZXMiLCJncmFwaCIsInN0YXRlIiwiY2NfcHJlZW52IiwiY2NfcHJlZW52JDAiLCJncmFwaCQwIiwiZW52JDAiLCJmZW52IiwiZ3JhcGgkMSIsImVudiQxIiwib3N0YXRlIiwib2dyYXBoIiwib3N0b3AiLCJnZXRfcGF1c2VfY3JpdGVyaWEiLCJicG9zIiwicG9zX2IiLCJmaW5kX2FsbF9lbWJlZGRpbmdzIiwidHIiLCJkdW1teV9pbnN0YW5jZXMiLCJyb290IiwiZXJyb3JfbXNnIiwiYWdlbnQiLCJjb250YWN0bWFwIiwiYWNjdXJhY3lfc3RyaW5nIiwiZGVhZF9ydWxlcyIsImRlYWRfYWdlbnRzIiwibWFwIiwiaW50ZXJmYWNlJDAiLCJzaXRlIiwic3RhdGVzbGlzdCIsInNpdGVuYW1lIiwic2l0ZXR5cGUiLCJzaXRlbGlua3MiLCJzaXRlc3RhdGVzIiwic2l0ZW5vZGVuYW1lIiwic2l0ZW5vZGVpZCIsInNpdGVub2Rlc2l0ZXMiLCJoeXAiLCJyZWZpbmVtZW50IiwiZG9tYWluX25hbWUiLCJyZWZpbmVtZW50c19saXN0IiwicmVmaW5lbWVudF9sZW1tYXMiLCJydWxlX2lkIiwiYWdlbnRfaWQiLCJsYWJlbCIsImFzdCIsInBvc2l0aW9uIiwicG9zaXRpb25fbGlzdCIsInZhcmlhYmxlIiwicnVsZSIsImRpcmVjdCIsInNpZGVfZWZmZWN0Iiwic291cmNlIiwidGFyZ2V0X21hcCIsInRhcmdldCIsImxvY2F0aW9uX3BhaXJfbGlzdCIsInJocyIsImxocyIsImluZmx1ZW5jZW1hcCIsIm5vZGVzb2ZpbmZsdWVuY2VtYXAiLCJ3YWtldXAiLCJpbmhpYml0aW9uIiwibm9kZXMiLCJ0b3RhbF9zdHJpbmciLCJmd2Rfc3RyaW5nIiwiYndkX3N0cmluZyIsIm9yaWdpbiIsImRpcmVjdGlvbiIsInJ1bGVfaGlkZGVuIiwic2NjIiwiYWNjdXJhY3lfY20iLCJhY2N1cmFjeV9zY2MiLCJjb250YWN0bWFwc2NjIiwiY291bnRlciIsImluZiIsInN1cCIsImtleSIsImxvY2FsaXR5IiwiYWNjdXJhY3lfbGV2ZWxzIiwiY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWxzIiwiaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbHMiLCJyZWR1Y3Rpb25fYWNjdXJhY3lfbGV2ZWxzIiwiZnJlZSIsIndpbGRjYXJkIiwiYm91bmQiLCJib25kX2lkIiwiYm91bmRfdG8iLCJiaW5kaW5nX3R5cGUiLCJwcm9wIiwiYmluZCIsImJpbmRpbmdfdHlwZV9iYWNrZW5kX3N5bWJvbCIsImZyZWVfYmFja2VuZF9zeW1ib2wiLCJtaXNzaW5nX2JpbmRpbmdfc2l0ZV9iYWNrZW5kX3MiLCJ3aWxkY2FyZF9iYWNrZW5kX3N5bWJvbCIsImJvdW5kX3RvX3Vua25vd25fYmFja2VuZF9zeW1ibyIsImludGVybmFsX3N0YXRlX2ludHJvZHVjdGlvbl9iYSIsImludGVybmFsX3N0YXRlX2RlbGltaXRlcl9iYWNrZSIsImJpbmRpbmdfc3RhdGVfZGVsaW1pdGVyX2JhY2tlbiIsImJpbmRpbmdfc3RhdGVfb3BlbmluZ19iYWNrZW5kXyIsImJpbmRpbmdfc3RhdGVfY2xvc2luZ19iYWNrZW5kXyIsImludGVybmFsX3N0YXRlX29wZW5pbmdfYmFja2VuZCIsImludGVybmFsX3N0YXRlX2Nsb3NpbmdfYmFja2VuZCIsImNvdW50ZXJfc3RhdGVfb3BlbmluZ19iYWNrZW5kXyIsImNvdW50ZXJfc3RhdGVfY2xvc2luZ19iYWNrZW5kXyIsImNvdW50ZXJfc3RhdGVfcmFuZ2VfYmFja2VuZF9zeSIsIm9wZW5faW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbCIsImNsb3NlX2ludGVydmFsX2luY2x1c2l2ZV9zeW1ibyIsIm9wZW5faW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCIsImNsb3NlX2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ibyIsInBsdXNfaW5maW5pdHlfc3ltYm9sIiwibWludXNfaW5maW5pdHlfc3ltYm9sIiwiYWNjdXJhY3lfdG9fc3RyaW5nIiwiYWNjdXJhY3lfdG9fanNvbiIsIngiLCJhY2N1cmFjeV9vZl9zdHJpbmciLCJhY2N1cmFjeV9vZl9qc29uIiwianNvbiIsImNvbXBhcmUiLCJhIiwiYiIsInByaW50IiwiZiIsInNpdGVfdG9fanNvbiIsInAiLCJsIiwieSIsInhyIiwieGwiLCJ0eSIsInNpIiwiaSIsInNpdGVfb2ZfanNvbiIsImwkMCIsImpzb24kMSIsInNpdGVfbmFtZSIsImpzb24kMiIsInBvcnRfbGlua3MiLCJqc29uJDAiLCJwb3J0X3N0YXRlcyIsInNpdGVfdHlwZSIsInNpdGVfbm9kZV9zaXRlc19vZl9qc29uIiwic2l0ZV9ub2RlX3RvX2pzb24iLCJub2RlIiwibGlzdCIsInNpdGVfbm9kZV9vZl9qc29uIiwibm9kZV9pZCIsIm5vZGVfdHlwZSIsIm5vZGVfc2l0ZXMiLCJjb250YWN0X21hcF90b19qc29uIiwiY29udGFjdF9tYXAiLCJjb250YWN0X21hcF9vZl9qc29uIiwic3RyaW5nX3BhaXJfdG9fanNvbiIsInN0cmluZ19wYWlyX29mX2pzb24iLCJzdHJpbmdfcGFpcl9wYWlyX3RvX2pzb24iLCJzdHJpbmdfcGFpcl9wYWlyX29mX2pzb24iLCJzdHJpbmdfcGFpcl9wYWlyX2xpc3RfdG9fanNvbiIsInN0cmluZ19wYWlyX3BhaXJfbGlzdF9vZl9qc29uIiwic3RyaW5nX3BhaXJfcGFpcl9saXN0X2xpc3RfdG9fIiwic3RyaW5nX3BhaXJfcGFpcl9saXN0X2xpc3Rfb2ZfIiwic2NjX3RvX2pzb24iLCJzY2NfYWNjIiwiY21fYWNjIiwic2NjX29mX2pzb24iLCJydWxlX3RvX2pzb24iLCJkIiwianNvbl90b19ydWxlIiwicyIsInZhcl90b19qc29uIiwidmFyJDAiLCJqc29uX3RvX3ZhciIsImluZmx1ZW5jZV9ub2RlX3RvX2pzb24iLCJpJDAiLCJpbmZsdWVuY2Vfbm9kZV9vZl9qc29uIiwic2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiIsInNob3J0X2luZmx1ZW5jZV9ub2RlX29mX2pzb24iLCJsb2MiLCJwb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNfdG9fanNvbiIsInBvc19vZl9ydWxlc19hbmRfdmFyc19vZl9qc29uIiwicmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV90b19qc29uIiwicmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uIiwic2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUiLCJwb3NpdGlvbl9vZl9yZWZpbmVkX2luZmx1ZW5jZV8iLCJyIiwidiIsImNvbXBhcmUkMCIsInByaW50JDAiLCJyJDAiLCJkdW1wX2xvY2F0aW9uIiwiZm10IiwiaW50JDAiLCJpbnQkMSIsImR1bXBfbG9jYXRpb25fcGFpciIsImR1bXBfbG9jYXRpb25fcGFpcl9saXN0Iiwic3RyaW5nX29mX2xhYmVsX2xpc3QiLCJsb2NhdGlvbl90b19qc29uIiwibG9jYXRpb25fb2ZfanNvbiIsIm9wdCIsInN0aCIsImhhbGZfaW5mbHVlbmNlX21hcF90b19qc29uIiwiaGFsZl9pbmZsdWVuY2VfbWFwX29mX2pzb24iLCJub2Rlc19saXN0X3RvX2pzb24iLCJub2Rlc19saXN0X29mX2pzb24iLCJpbmZsdWVuY2VfbWFwX3RvX2pzb24iLCJpbmZsdWVuY2VfbWFwIiwibm9kZXNfb2ZfaW5mbHVlbmNlX21hcF90b19qc29uIiwibm9kZXNfbGlzdCIsIm5vZGVzX29mX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiIsImxvY2FsX2luZmx1ZW5jZV9tYXBfdG9fanNvbiIsImluZmx1ZW5jZV9tYXAkMCIsIm9yaWdpbl9vcHQiLCJmd2QiLCJid2QiLCJ0b3RhbCIsImFjY3VyYWN5IiwiaW5mbHVlbmNlX21hcF9vZl9qc29uIiwibG9jYWxfaW5mbHVlbmNlX21hcF9vZl9qc29uIiwiZXJyb3JfbXNnJDAiLCJvcmlnaW4kMCIsIngkMCIsImwkMSIsImRlYWRfcnVsZXNfdG9fanNvbiIsImRlYWRfcnVsZXNfb2ZfanNvbiIsImpzb25fdG9fYWdlbnRfa2luZCIsImFnZW50X2tpbmRfdG9fanNvbiIsImFnZW50X2tpbmQiLCJqc29uX29mX2RlYWRfYWdlbnRzIiwianNvbl90b19kZWFkX2FnZW50cyIsInNlcGFyYXRpbmdfdHJhbnNpdGlvbnNfdG9fanNvbiIsInNlcGFyYXRpbmdfdHJhbnNpdGlvbnNfb2ZfanNvbiIsImxlbW1hX3RvX2pzb24iLCJzaXRlX2dyYXBoX3RvX2pzb24iLCJsZW1tYV9vZl9qc29uIiwic2l0ZV9ncmFwaF9vZl9qc29uIiwiZ2V0X2h5cCIsImgiLCJnZXRfcmVmaW5lbWVudCIsInN0cmluZ19vZl9iaW5kaW5nX3R5cGUiLCJhZ2VudF9uYW1lIiwiYmluZGluZ190eXBlX3N5bWJvbCIsImJpbmRpbmdfc3RhdGVfbGlnaHRfb2ZfanNvbiIsImoiLCJiaW5kaW5nX3N0YXRlX2xpZ2h0X3RvX2pzb24iLCJib25kX2luZGV4IiwiY291bnRlcl9zdGF0ZV9saWdodF9vZl9qc29uIiwiY291bnRlcl9zdGF0ZV9saWdodF90b19qc29uIiwiaW50ZXJmYWNlX2xpZ2h0X3RvX2pzb24iLCJpbnRmIiwiYyIsImsiLCJpbnRlcmZhY2VfbGlnaHRfb2ZfanNvbiIsImxlbW1hc19saXN0X29mX2pzb25fZ2VuIiwiaW50ZXJmYWNlX29mX2pzb24iLCJsZW1tYXNfbGlzdF9vZl9qc29uIiwibGVtbWFzX2xpc3RfdG9fanNvbl9nZW4iLCJpbnRlcmZhY2VfdG9fanNvbiIsImNvbnN0cmFpbnRzIiwibGVtbWFzX2xpc3RfdG9fanNvbiIsInJhd192ZXJzaW9uX3N0cmluZyIsImV4dHJhY3RfdGFnX3JlIiwiZ3IiLCJ2ZXJzaW9uX3N0cmluZyIsInZlcnNpb25fbXNnIiwidmVyc2lvbl9rYXNhX2Z1bGxfbmFtZSIsInZlcnNpb25fa2FkZV9mdWxsX25hbWUiLCJ0a19pc19pbml0aWFsaXplZCIsImV4cGVydF9tb2RlIiwiY29tcGFyZSIsImQiLCJjIiwiYiIsImEiLCJjbXAiLCJwcmludCIsImZtdCIsIm1heF9sZXZlbF9vcHQiLCJiJDAiLCJzaG93X2xldmVsIiwibHZsIiwiYWNjZXB0X2xldmVsX2Rpc3BsYXkiLCJhY2NlcHRfbGV2ZWxfdXNlIiwibm9rZXkiLCJrIiwiY3V0X2xpc3QiLCJzIiwiZG9pdCIsImFjY3VtIiwicG9zIiwiaSIsInAiLCJsIiwibCQwIiwiaSQwIiwib3JkZXIiLCJvcmRlcmVkIiwiY2F0Iiwib2xkX2x2bCIsImFzc28iLCJjaGVjayIsIm9wdHMiLCJrZXkiLCJ0IiwiZiIsInByaW50X21zZyIsInByaW50X29wdGlvbiIsInZlcmJvc2UiLCJtc2ciLCJzcGVjIiwia2V5MiIsInIiLCJyJDAiLCJyJDEiLCJyJDIiLCJyJDMiLCJzJDAiLCJyJDQiLCJyJDUiLCJsaXN0IiwibGlzdCQwIiwidGFpbCIsImgyIiwiaDEiLCJyJDYiLCJyJDciLCJ2IiwiciQ4IiwiciQ5IiwibCQxIiwicHJpbnRfaGVscCIsImhlYWRlciIsIm5iIiwiaGVhZGVyJDAiLCJsdmwkMCIsImx2bF9vcHQiLCJ4IiwidmVyYm9zZSQwIiwidmVyYm9zZSQxIiwicGFyc2VfbGlzdCIsIndpdGhfdGsiLCJ0aXRsZSIsImxvbmdfaGVscCIsInNob3J0X2hlbHAiLCJzaG93X3ZlcnNpb24iLCJhY2N1bSQwIiwicmVtIiwib3B0Iiwib3B0JDAiLCJhYSIsInJlbSQzIiwicmVtJDIiLCJyZW0kMSIsInYkMCIsInJlbSQ3IiwicmVtJDUiLCJyZW0kNCIsInJlbSQ2IiwicmVtJDgiLCJ2JDEiLCJyZW0kOSIsInYkMiIsInJlbSQxMyIsInJlbSQxMSIsInJlbSQxMCIsInJlbSQxMiIsInYkMyIsInJlbSQxNyIsInJlbSQxNSIsInJlbSQxNCIsInJlbSQxNiIsInYkNCIsInJlbSQyMiIsInJlbSQyMCIsInJlbSQxOCIsInYkNSIsInJlbSQxOSIsInJlbSQyMSIsInYkNiIsInJlbSQyNSIsInJlbSQyNCIsInJlbSQyMyIsInYkNyIsInJlbSQyOSIsInJlbSQyNyIsInJlbSQyNiIsInJlbSQyOCIsInJlbSQzMCIsInYkOCIsInJlbSQzMSIsInYkOSIsInJlbSQzMiIsInIkMTAiLCJ5IiwicmVtJDMzIiwidiQxMCIsInJlbSQzNCIsImwkMiIsInJlbSQzNSIsInYkMTEiLCJyZW0kMzYiLCJyZW0kMCIsImZpbGVuYW1lcyIsIngkMCIsInBhcnNlIiwiZGVmIiwiYXJncyIsImRhdGFfc2V0Iiwib3V0cHV0Iiwic2VtYW50aWNzIiwiaW50ZWdyYXRpb25fc2V0dGluZ3MiLCJtb2RlbF9yZWR1Y3Rpb24iLCJzdGF0aWNfYW5hbHlzaXMiLCJkZWJ1Z19tb2RlIiwiZGVmYXVsdCQwIiwiZGVmYXVsdF9ndWkiLCJkb192ZXJzaW9uIiwiZG9fZ2x1dHRvbnkiLCJjb3B5X2Zyb21fZ3VpIiwidF9ndWkiLCJvcHRpb25zX2dlbiIsIm9wdGlvbnMiLCJvcHRpb25zX2d1aSIsImUiLCJhdXgiLCJhY2N1IiwiYWNjdSQwIiwidmFyX3ZhbCIsImFjY3UkMSIsIm0iLCJvdXRwdXREaXJlY3RvcnkiLCJvdXRwdXREYXRhRmlsZSIsInBvaW50TnVtYmVyVmFsdWUiLCJ0aW1lIiwiZmljIiwiY3JlYXRlIiwiYmFyX3NpemUiLCJiYXJfY2hhciIsImZvciQwIiwicHBfbm90X251bGwiLCJwcF90ZXh0IiwiZGVsdGFfdCIsInRfciIsImV2ZW50IiwiZV9yIiwiZHQiLCJzdHJpbmciLCJhdXhfdGljayIsInNvbWV0aGluZyIsIm4iLCJzb21ldGhpbmckMCIsIm4kMCIsIm4kMSIsInRpY2siLCJlZmZpY2llbmN5Iiwibl90Iiwibl9lIiwicnVuIiwiY29tcGxldGVfcHJvZ3Jlc3NfYmFyIiwidCQwIiwib3V0cHV0RGlyTmFtZSIsIm1hcnNoYWxpemVkT3V0RmlsZSIsImNmbG93RmlsZU5hbWUiLCJmbHV4RmlsZU5hbWUiLCJta19kaXJfciIsIm92ZXJ3cml0ZV9wZXJtaXNzaW9uIiwicGF0aCIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfZnJlc2giLCJuYW1lIiwiY29uY2F0X2xpc3QiLCJmYWN1bHRhdGl2ZSIsImV4dCIsIm5hbWUkMCIsInRtcF9uYW1lIiwiYmFzZSIsIm92ZXJfZmxhZyIsImZsYWdzIiwiYmFzZSQwIiwic2V0IiwiZXh0X29wdCIsImZuYW1lIiwiY2hlY2tfbm90X2V4aXN0cyIsImZpbGUiLCJmaWxlJDAiLCJhbnN3ZXIiLCJzZXRDaGVja0ZpbGVFeGlzdHMiLCJiYXRjaG1vZGUiLCJvdXRwdXRGaWxlIiwid2l0aF9jaGFubmVsIiwic3RyIiwiZGVzYyIsIndyYXBfZm9ybWF0dGVyIiwiZnIiLCJzZXRfZGlyIiwiZ2V0X2RpciIsInNldF9tYXJzaGFsaXplZCIsIndpdGhfbWFyc2hhbGl6ZWQiLCJzZXRfY2Zsb3ciLCJ3aXRoX2NmbG93X2ZpbGUiLCJvcGVuX3Rhc2tzX3Byb2ZpbGluZyIsIm9wZW5fYnJhbmNoX2FuZF9jdXRfZW5naW5lX3BybyIsInNldF9mbHV4Iiwibm1lIiwid2l0aF9mbHV4Iiwic3RyJDAiLCJ3aXRoX3NuYXBzaG90Iiwic2l6ZSIsImJvcmRlciQwIiwiYm9yZGVyIiwiZHVtbXlfdmFsdWVzIiwiY29sb3JzIiwic3R5bGVzIiwiZ3JhZHVhdGlvbl9zdGVwIiwiZHJhd19sIiwibWluX2dyYWRfbCIsInZhX21pbiIsInZhX21heCIsIm5icl9kZWx0YSIsImRlbHRhX3ZhIiwibmJfZ3JhZCIsImV4YWN0X3N0ZXAiLCJkZWx0YV9ncmFkIiwidmFfbWluJDAiLCJ2YV9tYXgkMCIsImRyYXciLCJoJDAiLCJ3JDAiLCJiX2giLCJ6ZXJvX3ciLCJiX29wIiwiaCIsInciLCJ2YSQwIiwidF9tYXgiLCJxIiwidmEiLCJ2YV9tYXgkMSIsInZhX21pbiQyIiwidF9tYXgkMSIsImRhdGFfdyIsImRhdGFfaCIsInRfbWF4JDIiLCJncmFkX3ciLCJuYl93IiwidmFfbWF4JDIiLCJncmFkX2giLCJuYl9oIiwidmFfbWluJDMiLCJ6ZXJvX2giLCJkcmF3X2Z1biIsInkkMCIsInBwX2xpbmUiLCJ0b19zdHJpbmciLCJzdGgiLCJ3aWR0aCIsInRvX2ZpbGUiLCJjaGFuIiwiZm9ybSIsInhsc3dlYWtGaWxlTmFtZSIsInhsc3N0cm9uZ0ZpbGVOYW1lIiwiZGVmYXVsdEV4dEFycmF5U2l6ZSIsImRlZmF1bHRHcmFwaFNpemUiLCJkZWZhdWx0TGlmdFNldFNpemUiLCJkZWZhdWx0SGVhcFNpemUiLCJkZWJ1Z19tb2RlT24iLCJ0aW1lX2luZGVwZW5kZW50IiwiYmxhY2tsaXN0X2V2ZW50cyIsImRvX2dsb2JhbF9jdXQiLCJjdXRfcHNldWRvX2ludmVyc2VfZXZlbnQiLCJkb19sb2NhbF9jdXQiLCJkb19kZXRlY3Rfc2VwYXJhYmxlX2NvbXBvbmVudHMiLCJsb29rX3VwX2Zvcl9iZXR0ZXJfY3V0IiwibG9va19kb3duX2Zvcl9iZXR0ZXJfY3V0IiwibG9nX251bWJlcl9vZl9jYXVzYWxfZmxvd3MiLCJkdW1wX2dyaWRfYmVmb3JlX3dlYWtfY29tcHJlc3MiLCJkdW1wX2dyaWRfYmVmb3JlX3N0cm9uZ19jb21wcmUiLCJkdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmkiLCJkdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmkkMCIsImdldF9jYWNoZV9zaXplIiwicHJpbnRfZGVzYyIsInNwZWNpZXNfZGVzYyIsInV1aWQiLCJnZXRfZGVzYyIsInRibCIsImRfY2hhbiIsImFjdHNEZXNjciIsImVtcHR5QWN0cyIsInBsb3REZXNjciIsInRyYWNlRGVzY3IiLCJ0cmFjZU5vdEVtcHR5IiwiaW5pdGlhbGl6ZSIsImFjdGl2aXRpZXNfZmlsZSIsInRyYWNlX2ZpbGUiLCJwbG90UGFjayIsImVudiIsImRlc2MkMCIsIm5vQ291bnRlcnMiLCJuYl9yIiwicGFjayIsIndhcm5pbmdfYnVmZmVyIiwiZ28iLCJmbHV4IiwiZGluX25hbWUiLCJmbHV4JDAiLCJsYXN0IiwiayQwIiwiaGVhZCIsImZpbGVuYW1lIiwiZm9ybWF0IiwiaXNfdHN2IiwiZmQiLCJwJDAiLCJzdGVwIiwiZCQwIiwicyQxIiwibWl4dHVyZSIsImZpbGUkMSIsImlucHV0c0Rlc2MiLCJmbHVzaF93YXJuaW5nIiwiY2xvc2UiLCJldmVudCQwIiwicGxvdCIsImlucHV0cyIsImluaXRpYWxfaW5wdXRzIiwiY29uZiIsImluaXQiLCJpbnB1dHNfZm9ybSIsImlucHV0X21vZGlmaWNhdGlvbnMiLCJtb2RzIiwibG9nRmlsZSIsInRyYWNlRmlsZSIsImRvbWFpbk91dHB1dEZpbGUiLCJtYXJzaGFsaXplT3V0RmlsZSIsInRtcF92YXJfbmFtZSIsInByZXByb2Nlc3NfYXN0Iiwid2FybmluZyIsImthc2ltX2FyZ3MiLCJjbGlfYXJncyIsImFzdCIsImNmbG93RmlsZSIsImZvcm1hdENmbG93Iiwic3RvcnlfY29tcHJlc3Npb24iLCJzeW50YXhfdmVyc2lvbiIsImthc2ltX2FyZ3MkMCIsImluaXRpYWxNaXgiLCJ2YXJfb3ZlcndyaXRlIiwiYXN0X2NvbXBpbGVkX2RhdGEiLCJjb21waWwiLCJjb25mJDAiLCJvdmVyd3JpdGVfdDAkMCIsIm92ZXJ3cml0ZV9pbml0IiwiZ2V0X2FzdF9mcm9tX2xpc3Rfb2ZfZmlsZXMiLCJmaWxlX2xpc3QiLCJjb21waWxpbmdfZnVuY3Rpb24iLCJnZXRfYXN0X2Zyb21fY2xpX2FyZ3MiLCJnZXRfcHJlcHJvY2Vzc2VkX2FzdF9mcm9tX2NsaV8iLCJnZXRfcGFja19mcm9tX3ByZXByb2Nlc3NlZF9hc3QiLCJjb21waWxlX21vZGVfb24iLCJwcmVwcm9jZXNzZWRfYXN0IiwiaW5pdF9sIiwiaGFzX3RyYWNraW5nIiwiZ2V0X2NvbXBpbGF0aW9uX2Zyb21fcGFjayIsImluaXRfdF9mcm9tX2ZpbGVzIiwicGxvdF9wZXJpb2QkMCIsIm1heF9ldmVudCQwIiwiaW5pdF9lIiwibWF4X3RpbWUiLCJpbml0X3QiLCJhJDAiLCJwbG90X3BlcmlvZCQxIiwibWF4X3RpbWUkMCIsImluaXRfdCQwIiwiY291bnRlciIsImdldF9jb21waWxhdGlvbl9mcm9tX3ByZXByb2NlcyIsInN0aCQwIiwiZ2V0X2NvbXBpbGF0aW9uIiwibWFyc2hhbGl6ZWRfZmlsZSIsImNvbXBpbGF0aW9uX3Jlc3VsdCIsImFsZ19vdmVyd3JpdGUiLCJvdmVyd3JpdGVfdDAiLCJyYXdfaW5pdHMiLCJlJDAiLCJkJDEiLCJjbG9zZV9jZWxsX3N5bWJvbCIsIm9wZW5fY2VsbF9zeW1ib2wiLCJjb21wYXJlIiwiYnJlYWthYmxlIiwieCIsImdldF9lbmNvZGluZ19mb3JtYXQiLCJ0IiwiZHVtbXlfaHRtbF9sb2dnZXIiLCJkdW1teV90eHRfbG9nZ2VyIiwiZHVtcF9jbGVhbl9zdHJpbmciLCJmbXQiLCJhIiwib3B0IiwibG9nZ2VyIiwic3RoIiwiZnByaW50bmV3bGluZSIsImZwcmludG5ld2xpbmUkMCIsImIiLCJmbXRfYnVmZmVyJDAiLCJzdHIiLCJzdHIkMCIsImJ1ZmZlciIsImZtdF9idWZmZXIiLCJzIiwicHJpbnRfYnJlYWthYmxlX3NwYWNlIiwicHJpbnRfYnJlYWthYmxlX2hpbnQiLCJkdW1wX3Rva2VuIiwiZiIsInByaW50X25ld2xpbmUiLCJiZiIsImJmJDAiLCJiZiQxIiwiYmYkMiIsInByaW50X2NlbGwiLCJjbG9zZV9jZWxsX3N5bWJvbCQwIiwib3Blbl9jZWxsX3N5bWJvbCQwIiwiZmx1c2hfbG9nZ2VyIiwiY2xvc2VfbG9nZ2VyIiwicHJpbnRfcHJlYW1ibGUiLCJvcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwiLCJjaGFubmVsIiwibW9kZSIsImZvcm1hdHRlciIsIm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyIiwib3Blbl9jaXJjdWxhcl9idWZmZXIiLCJzdGgkMCIsInNpemUiLCJvcGVuX2luZmluaXRlX2J1ZmZlciIsIm9wZW5fcm93IiwiY2xvc2Vfcm93IiwiZm9ybWF0dGVyX29mX2xvZ2dlciIsInJlZGlyZWN0IiwicHJpbnRfYXNfbG9nZ2VyIiwiZmx1c2hfYnVmZmVyIiwiZmx1c2hfYW5kX2NsZWFuIiwiZnByaW50ZiIsImNoYW5uZWxfb2ZfbG9nZ2VyIiwicHJpbnRfYmluZGluZ190eXBlIiwiYWdlbnRfbmFtZSIsInNpdGVfbmFtZSIsImJpbmRpbmdfdHlwZV9zeW1ib2wiLCJkdW1wX2pzb24iLCJqc29uIiwiY2hhbm5lbF9vcHQiLCJsaW5lX3RvX2pzb24iLCJsaW5lIiwibGluZV9vZl9qc29uIiwiZ2VuX2l0ZXIiLCJpdGVyIiwibGlzdCIsIm91dHB1dCIsIm9mX2pzb24iLCJ0b19qc29uIiwic3RyaW5nX29mX3VuX29wIiwib3AiLCJmb3JtYXQiLCJzdHJpbmdfb2ZfY29tcGFyZV9vcCIsInN0cmluZ19vZl9iaW5fb3AiLCJzdHJpbmdfb2ZfYmluX2Jvb2xfb3AiLCJzdHJpbmdfb2ZfdW5fYm9vbF9vcCIsImxpZnQiLCJ0IiwiZXh0ZW5kX2xvZ2dlciIsImxvZ2dlciIsInJlZnJlc2hfaWQiLCJhZGRfbm9kZSIsInMiLCJkIiwiYWRkX2VkZ2UiLCJzMSIsInMyIiwibWFwIiwibCIsIm9sZF9saXN0IiwiZ3JhcGhfb2ZfbG9nZ2VyIiwiZ2V0X2VkZ2VfbWFwIiwiZ2V0X25vZGVzIiwiaW50X29mX3N0cmluZ19pZCIsInN0cmluZyIsImEiLCJpIiwiZHVtbXlfbm9kZSIsImR1bW15X2VkZ2UiLCJodG1sX2RlcHMiLCJkb3RfY29sb3JfZW5jb2RpbmciLCJ4Iiwic3ZnX2NvbG9yX2VuY29kaW5nIiwiaXNfbm9fbm9kZV9hdHRyaWJ1dGVzIiwibm9kZV9hdHRyaWJ1dGUiLCJiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IiwiYm9vbCIsImJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIiwic2hhbGxfSV9kb19pdCIsImZvcm1hdCIsImZpbHRlcl9pbiIsImZpbHRlcl9vdXQiLCJiMSIsInByaW50X3ByZWFtYmxlX3NoYXJlZF9odG1sX2pzIiwiZiIsInRpdGxlIiwicHJpbnRfZ3JhcGhfcHJlYW1ibGUiLCJvcHQiLCJzdGgiLCJzdGgkMCIsInN0aCQxIiwiaGVhZGVyIiwiZl9vcHQiLCJkZXBlbmRlbmN5IiwiZl9vcHQkMCIsImYkMCIsInN0cmluZ19vZl9hcnJvd19pbl9odG1sIiwic3R5bGUiLCJtZXJnZSIsInMkMCIsInByaW50X2Zvb3Rfc2hhcmVkX2h0bWxfanMiLCJsaXN0IiwiaWQyIiwiaWQxIiwibGlzdCQwIiwiaWQxX2ludCIsImlkMl9pbnQiLCJhdHRyaWJ1dGVzIiwib3B0aW9uX2xpc3QiLCJvcHRpb24iLCJzJDEiLCJzJDIiLCJzJDMiLCJzJDQiLCJzJDUiLCJzJDYiLCJqc29uIiwicyQ3IiwicyQ4IiwicCIsImF0dHJpYnV0ZXMkMCIsInN0cmluZ19saXN0IiwiZm10Iiwic19vcHQiLCJzX29wdCQwIiwiYm9vbCQwIiwiY29sb3IiLCJib29sJDEiLCJib29sJDIiLCJib29sJDMiLCJwcmludF9ncmFwaF9mb290Iiwibm9kZXMiLCJlZGdlcyIsInNlcCIsImIiLCJvcHRpb25zIiwiY29sb3JfdmFsdWUiLCJwcmludF9jb21tZW50Iiwib3Blbl9hc3NvIiwiY2xvc2VfYXNzbyIsInByaW50X2Fzc28iLCJzdHJpbmcxIiwic3RyaW5nMiIsInNoYXBlX2luX2RvdCIsInNoYXBlIiwic3RyaW5nX29uZV9vZl9saW5lc3R5bGVfaW5fZG90Iiwic3RyaW5nX29mX2Fycm93X2hlYWRfaW5fZG90Iiwic3RyaW5nX29mX2Fycm93X3RhaWxfaW5fZG90IiwicHJpbnRfbm9kZSIsImlkIiwiZGlyZWN0aXZlcyIsImkkMCIsImlkX2ludCIsInN0cmluZyQwIiwic3RyaW5nJDEiLCJzaGFwZSQwIiwic3RyaW5nJDIiLCJzaGFwZSQxIiwiaSQxIiwiaSQyIiwiYm9vbCQ0IiwiYm9vbCQ1IiwibGFiZWwiLCJwcmludF9lZGdlIiwicHJlZml4IiwiZWRnZV9hdHRyaWJ1dGUiLCJkaXJlY3Rpb24iLCJhcnJvdyIsInByaW50X29uZV90b19uX3JlbGF0aW9uIiwiaWRsaXN0Iiwic3R5bGVfb25lIiwic3R5bGVfbiIsImZpY3RpdGlvdXMiLCJkaXJlY3RpdmVzX2ZpY3QiLCJkaXJlY3RpdmVzX29uZSIsImRpcmVjdGl2ZXNfbiIsImhlYWRraW5kX3RvX2pzb24iLCJoZWFka2luZCIsImNvbG9yX3RvX2pzb24iLCJkaXJlY3RpdmVfdG9fanNvbiIsImNvbG9yJDAiLCJpbnQkMCIsImludCQxIiwiaGVhZGtpbmQkMCIsImxpbmVzdHlsZSIsImRpcmVjdGl2ZXNfdG9fanNvbiIsIm5vZGVfdG9fanNvbiIsImVkZ2VfdG9fanNvbiIsIm5vZGVzX3RvX2pzb24iLCJlZGdlc190b19qc29uIiwidG9fanNvbiIsImdyYXBoIiwiaGVhZGtpbmRfb2ZfanNvbiIsImNvbG9yX29mX2pzb24iLCJkaXJlY3RpdmVfb2ZfanNvbiIsInBvc19saXN0IiwiY29udGV4dHVhbF9oZWxwIiwiZGlyZWN0aXZlc19vZl9qc29uIiwiaWRfb2ZfanNvbiIsIm5vZGVfb2ZfanNvbiIsImVkZ2Vfb2ZfanNvbiIsIm5vZGVzX29mX2pzb24iLCJlZGdlc19vZl9qc29uIiwib2ZfanNvbiIsInN5bWJvbF90YWJsZV9WMyIsInN5bWJvbF90YWJsZV9WNCIsIm5vdF9icmVha2FibGUiLCJzeW1ib2xfdGFibGUiLCJzeW1ib2xfdGFibGVfVjNfbGlnaHQiLCJzeW1ib2xfdGFibGVfZG90bmV0IiwidW5icmVha2FibGVfc3ltYm9sX3RhYmxlX1YzIiwidW5icmVha2FibGVfc3ltYm9sX3RhYmxlX1Y0IiwidW5icmVha2FibGVfc3ltYm9sX3RhYmxlX1YzX2xpIiwidW5icmVha2FibGVfc3ltYm9sX3RhYmxlX2RvdG5lIiwid2l0aF9kb3RfYW5kX3BsdXMiLCJlbXB0eV9lbmdpbmVfc3RhdGUiLCJ3YWtlX3VwX21hcCIsImVycm9yIiwiZW5naW5lX3N0YXRlIiwiZW1wdHlfZXJyb3JfaGFuZGxlciIsImV4bl90b19qc29uIiwieCIsIngkMCIsIngkMSIsIngkMiIsImMiLCJiIiwiYSIsImMkMCIsImIkMCIsImEkMCIsIngkMyIsIngkNCIsImNhdWdodF9leGNlcHRpb25fdG9fanNvbiIsIngkNSIsInVuY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uIiwidW5jYXVnaHQiLCJjYXVnaHQiLCJleG5fb2ZfanNvbiIsImpzb24iLCJsIiwibCQwIiwidW5jYXVnaHRfZXhjZXB0aW9uX29mX2pzb24iLCJjYXVnaHRfZXhjZXB0aW9uX29mX2pzb24iLCJidWlsZF91bmNhdWdodF9leGNlcHRpb24iLCJmaWxlX25hbWUiLCJtZXNzYWdlIiwiZXhuIiwiYnVpbGRfY2F1Z2h0X2V4Y2VwdGlvbiIsInN0YWNrIiwicmFpc2VfZXhjZXB0aW9uIiwia2V5IiwicHBfZXhjZXB0aW9uIiwiZiIsImV4YyIsInkiLCJlciIsInkkMCIsImVyJDAiLCJ4JDYiLCJwcF91bmNhdWdodCIsIngkNyIsInBwX2NhdWdodCIsIndpdGhfc3BhY2UiLCJzdHJpbmdsaXN0X29mX2V4Y2VwdGlvbiIsInN0cmluZ2xpc3Rfb2ZfY2F1Z2h0Iiwic3RyaW5nbGlzdF9vZl91bmNhdWdodCIsInNvbCIsInN0cmluZyIsInN0cmluZ2xpc3Rfb2ZfY2F1Z2h0X2xpZ2h0Iiwic3RhY2skMCIsInRvX2pzb24iLCJtZXRob2RfaGFuZGxlciIsIm9mX2pzb24iLCJjYXVnaHRfdG9fdWkiLCJ1bmNhdWdodF90b191aSIsImFkZF91bmNhdWdodF9lcnJvciIsInRvX3VpIiwiZXJyb3IkMCIsImdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3QiLCJnZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0X3RvX3UiLCJnZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3QiLCJnZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3RfdG8iLCJpc19lbXB0eV9lcnJvcl9oYW5kbGVyIiwiZGF0ZSIsInZlcnNpb24iLCJvdXRwdXRfZGlyZWN0b3J5Iiwib3V0cHV0X2NtX2RpcmVjdG9yeSIsIm91dHB1dF9pbV9kaXJlY3RvcnkiLCJvdXRwdXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5IiwidW5zYWZlIiwidHJhY2UiLCJzeW50YXhfdmVyc2lvbiIsImR1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jYyIsImxvZyIsImZvcm1hdHRlciIsImZpbGUiLCJsaW5rX21vZGUiLCJkb19pbmZsdWVuY2VfbWFwIiwicnVsZV9zaGFwZSIsInJ1bGVfY29sb3IiLCJ2YXJpYWJsZV9zaGFwZSIsInZhcmlhYmxlX2NvbG9yIiwiY2VudGVyX2NvbG9yIiwid2FrZV91cF9jb2xvciIsImluaGliaXRpb25fY29sb3IiLCJ3YWtlX3VwX2Fycm93IiwiaW5oaWJpdGlvbl9hcnJvdyIsImluZmx1ZW5jZV9tYXBfZmlsZSIsImluZmx1ZW5jZV9tYXBfZm9ybWF0IiwicHJvbXB0X2Z1bGxfdmFyX2RlZiIsInByb21wdF9mdWxsX3J1bGVfZGVmIiwibWFrZV9sYWJlbHNfY29tcGF0aWJsZV93aXRoX2RvIiwiZG9fY29udGFjdF9tYXAiLCJkb19zY2MiLCJwdXJlX2NvbnRhY3QiLCJjb250YWN0X21hcF9maWxlIiwiY29udGFjdF9tYXBfZm9ybWF0IiwiYmluZGluZ19zaXRlX3NoYXBlIiwiYmluZGluZ19zaXRlX2NvbG9yIiwiaW50ZXJuYWxfc2l0ZV9zaGFwZSIsImludGVybmFsX3NpdGVfY29sb3IiLCJjb3VudGVyX3NpdGVfc2hhcGUiLCJjb3VudGVyX3NpdGVfY29sb3IiLCJhZ2VudF9zaGFwZV9hcnJheSIsImFnZW50X2NvbG9yX2FycmF5IiwiYWdlbnRfc2hhcGVfZGVmIiwiYWdlbnRfY29sb3JfZGVmIiwibGlua19jb2xvciIsImluZmx1ZW5jZV9jb2xvciIsImluZmx1ZW5jZV9hcnJvdyIsImRvX09ERV9mbG93X29mX2luZm9ybWF0aW9uIiwiZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm9ybWF0IiwiZG9fc2l0ZV9kZXBlbmRlbmNpZXMiLCJkdW1wX3NpdGVfZGVwZW5kZW5jaWVzIiwiZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzIiwidmVyYm9zaXR5X2xldmVsX2Zvcl9yZWFjaGFiaWxpIiwiZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcmVzIiwiZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfY292IiwiZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfaXRlIiwiZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfc3RhIiwiZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluIiwiZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZGlmIiwiZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2wiLCJoaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmUiLCJoaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnQiLCJzbWFzaF9yZWxhdGlvbnMiLCJ1c2VfbmF0dXJhbF9sYW5ndWFnZSIsImNvbXB1dGVfbG9jYWxfdHJhY2VzIiwic2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3RyYWNlIiwidXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfIiwiYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzIiwiYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzIiwiZG9fbm90X2NvbXByZXNzX3RyaXZpYWxfbG9zYW5nIiwibG9jYWxfdHJhY2VfcHJlZml4IiwibG9jYWxfdHJhY2VfZm9ybWF0IiwiY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zIiwid2l0aF92aWV3c19hbmFseXNpcyIsIndpdGhfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaSIsIndpdGhfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXMiLCJ3aXRoX2R5bmFtaWNfY29udGFjdF9tYXAiLCJ3aXRoX2NvdW50ZXJzX2FuYWx5c2lzIiwiY291bnRlcl9hbmFseXNpc19kb21haW4iLCJ2aWV3X2FjY3VyYWN5X2xldmVsIiwiaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCIsImNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsIiwic2NjX2FjY3VyYWN5X2xldmVsIiwiZG9fc3ltbWV0cmllcyIsInJhdGVfY29udmVudGlvbiIsInByaW50X2VmZmljaWVuY3kiLCJiYWNrZG9vcl9uYnJfb2Zfc2NjIiwiYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjYyIsImJhY2tkb29yX25icl9vZl9jb25zdHJhaW50cyIsImJhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50cyIsImJhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzIiwiYmFja2Rvb3JfbmJyX29mX3J1bGVzIiwiYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMiLCJiYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub24iLCJiYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXYiLCJiYWNrZG9vcl90aW1pbmciLCJiYWNrZG9vcl9maWxlIiwiYmFja2Rvb3JfZGlyZWN0b3J5IiwiY3N0X3RleCIsImNzdF9odG1sJDAiLCJhZGRfZXh0ZW5zaW9uX2lmX25vdF9hbHJlYWR5X20iLCJleHQiLCJzaXplX2EiLCJzaXplX2V4dCIsIm9wZW5fb3V0IiwiZCIsIm9wZW5fYXBwZW5kIiwiY29tcG9zZSIsImciLCJleHRfZm9ybWF0IiwiZmV0Y2hfbGV2ZWxfZ2VuIiwicyIsInIiLCJmZXRjaF9ncmFwaF9mb3JtYXQiLCJmZXRjaF9hY2N1cmFjeV9sZXZlbCIsImdldF9zeW50YXhfdmVyc2lvbiIsInJlYWNoYWJpbGl0eV9tYXBfMCIsInJlYWNoYWJpbGl0eV9tYXBfMSIsInJlYWNoYWJpbGl0eV9tYXBfMiIsInJlYWNoYWJpbGl0eV9tYXBfMyIsInJlYWNoYWJpbGl0eV9tYXBfNCIsImdldF9yZWFjaGFiaWxpdHlfcGFyYW1ldGVycyIsImNhY2hlIiwiZ2V0X3BhcmFtZXRlcnMiLCJvcHQiLCJjYWxsZWRfZnJvbSIsInN0aCIsImh0bWxfbW9kZSIsImNvbW1hbmQkMCIsImNoYW5uZWxfYmFja2Rvb3IkMCIsImNoYW5uZWxfZXJyJDAiLCJjaGFubmVsJDEiLCJjaGFubmVsIiwiY2hhbm5lbCQwIiwiY29tbWFuZCQyIiwicmVhY2hhYmlsaXR5JDAiLCJyZWFjaGFiaWxpdHkiLCJtYXAiLCJhJDEiLCJmbXQiLCJjaGFubmVsJDIiLCJkdW1teV9wYXJhbWV0ZXJzIiwicCIsInAkMCIsImdldF9ib3VuZF9zeW1ib2xfMSIsInN5bWJvbCIsImdldF9vcGVuX2JpbmRpbmdfc3RhdGVfMSIsImdldF9jbG9zZV9iaW5kaW5nX3N0YXRlXzEiLCJnZXRfbWlzc2luZ19iaW5kaW5nX3N0YXRlXzEiLCJnZXRfbGlua190b19hbnlfMSIsImdldF9saW5rX3RvX3NvbWVfMSIsImdldF9pbnRlcm5hbF9zdGF0ZV9zeW1ib2xfMSIsImdldF9vcGVuX2ludGVybmFsX3N0YXRlXzEiLCJnZXRfY2xvc2VfaW50ZXJuYWxfc3RhdGVfMSIsImdldF9mcmVlXzEiLCJnZXRfYXRfc3ltYm9sXzEiLCJnZXRfYWdlbnRfb3Blbl9zeW1ib2xfMSIsImdldF9hZ2VudF9jbG9zZV9zeW1ib2xfMSIsImdldF9hZ2VudF9zZXBfY29tbWFfc3ltYm9sXzEiLCJnZXRfYWdlbnRfc2VwX3BsdXNfc3ltYm9sXzEiLCJnZXRfYWdlbnRfc2VwX2RvdF9zeW1ib2xfMSIsImdldF9idHlwZV9zZXBfc3ltYm9sXzEiLCJnZXRfc2l0ZV9zZXBfY29tbWFfc3ltYm9sXzEiLCJnZXRfZ2hvc3RfYWdlbnRfc3ltYm9sXzEiLCJnZXRfZG9fd2Vfc2hvd19naG9zdF8xIiwiZ2V0X3VuaV9hcnJvd19zeW1ib2xfMSIsImdldF9yZXZfYXJyb3dfc3ltYm9sXzEiLCJnZXRfYmlfYXJyb3dfc3ltYm9sXzEiLCJnZXRfYmlfYXJyb3dfbm9fcG9seV9zeW1ib2xfMSIsImdldF91bmlfYXJyb3dfbm9fcG9seV9zeW1ib2xfMSIsImdldF9yZXZfYXJyb3dfbm9fcG9seV9zeW1ib2xfMSIsImdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdiIsImdldF9vcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdiIsImdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eSIsImdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaSIsImdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaSIsImdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5maW5pdCIsImdldF9wbHVzX2luZmluaXR5X3N5bWJvbF8xIiwiZ2V0X21pbnVzX2luZmluaXR5X3N5bWJvbF8xIiwiZ2V0X2ludF9pbnRlcnZhbF9zZXBhcmF0b3Jfc3ltIiwiZ2V0X29wZW5fY291bnRlcl9zdGF0ZV8xIiwiZ2V0X29wZW5fY291bnRlcmNlcV8xIiwiZ2V0X29wZW5fY291bnRlcmN2YXJfMSIsImdldF9vcGVuX2NvdW50ZXJjZ3RlXzEiLCJnZXRfb3Blbl9jb3VudGVyZGVsdGFfMSIsImdldF9vcGVuX2NvdW50ZXJ2YWxfMSIsImdldF9jbG9zZV9jb3VudGVyX3N0YXRlXzEiLCJnZXRfY2xvc2VfY291bnRlcmNlcV8xIiwiZ2V0X2Nsb3NlX2NvdW50ZXJjdmFyXzEiLCJnZXRfY2xvc2VfY291bnRlcmNndGVfMSIsImdldF9jbG9zZV9jb3VudGVyZGVsdGFfMSIsImdldF9jbG9zZV9jb3VudGVydmFsXzEiLCJnZXRfY291bnRlcmNlcV9zeW1ib2xfMSIsImdldF9jb3VudGVyY3Zhcl9zeW1ib2xfMSIsImdldF9jb3VudGVyY2d0ZV9zeW1ib2xfMSIsImdldF9jb3VudGVyZGVsdGFwbHVzX3N5bWJvbF8xIiwiZ2V0X2NvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbF8xIiwiZ2V0X2NvdW50ZXJ2YWxfc3ltYm9sXzEiLCJnZXRfaW1fZm9ybWF0XzEiLCJpbmZsdWVuY2UiLCJnZXRfaW1fZmlsZV8xIiwiZ2V0X2ltX2RpcmVjdG9yeV8xIiwiZ2V0X3J1bGVfc2hhcGVfMSIsImdldF9ydWxlX2NvbG9yXzEiLCJnZXRfdmFyaWFibGVfc2hhcGVfMSIsImdldF92YXJpYWJsZV9jb2xvcl8xIiwiZ2V0X3dha2VfdXBfY29sb3JfMSIsImdldF9pbmhpYml0aW9uX2NvbG9yXzEiLCJnZXRfd2FrZV91cF9hcnJvd18xIiwiZ2V0X2luaGliaXRpb25fYXJyb3dfMSIsImdldF9wcm9tcHRfZnVsbF92YXJfZGVmXzEiLCJnZXRfcHJvbXB0X2Z1bGxfcnVsZV9kZWZfMSIsImdldF9tYWtlX2xhYmVsc19jb21wYXRpYmxlXzEiLCJnZXRfcHVyZV9jb250YWN0XzEiLCJjbSIsImdldF9jbV9mb3JtYXRfMSIsImdldF9jbV9maWxlXzEiLCJnZXRfY21fZGlyZWN0b3J5XzEiLCJnZXRfYmluZGluZ19zaXRlX3NoYXBlXzEiLCJnZXRfYmluZGluZ19zaXRlX2NvbG9yXzEiLCJnZXRfaW50ZXJuYWxfc2l0ZV9zaGFwZV8xIiwiZ2V0X2ludGVybmFsX3NpdGVfY29sb3JfMSIsImdldF9jb3VudGVyX3NpdGVfc2hhcGVfMSIsImdldF9jb3VudGVyX3NpdGVfY29sb3JfMSIsImdldF9hZ2VudF9zaGFwZV9hcnJheV8xIiwiZ2V0X2FnZW50X2NvbG9yX2FycmF5XzEiLCJnZXRfYWdlbnRfc2hhcGVfZGVmXzEiLCJnZXRfYWdlbnRfY29sb3JfZGVmXzEiLCJnZXRfbGlua19jb2xvcl8xIiwiZ2V0X2luZmx1ZW5jZV9jb2xvcl8xIiwiZ2V0X2luZmx1ZW5jZV9hcnJvd18xIiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzIiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDAiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkMSIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQyIiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDMiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkNCIsImdldF9zbWFzaF9yZWxhdGlvbnNfMSIsImdldF9oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tXyIsImdldF9oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0XyIsImdldF9wb3N0X3Byb2Nlc3NpbmdfMSIsImdldF9iYWNrZW5kX21vZGVfMSIsImdldF9sb2NhbF90cmFjZV9mb3JtYXRfMSIsImdldF9jb21wdXRlX2xvY2FsX3RyYWNlc18xIiwiZ2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0IiwiZ2V0X2lnbm9yZV90cml2aWFsX2xvc2FuZ2VzXzEiLCJnZXRfc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3QiLCJnZXRfdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG8iLCJnZXRfYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzXzEiLCJnZXRfYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzXzEiLCJnZXRfbG9jYWxfdHJhY2VfcHJlZml4XzEiLCJnZXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5XzEiLCJnZXRfdmlld19hbmFseXNpc18xIiwiZ2V0X3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzIiwiZ2V0X3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzXzEiLCJnZXRfZHluYW1pY19jb250YWN0X21hcF8xIiwiZ2V0X2NvdW50ZXJzX2FuYWx5c2lzXzEiLCJnZXRfY291bnRlcnNfZG9tYWluXzEiLCJnZXRfY29tcHV0ZV9zeW1tZXRyaWVzXzEiLCJtYXJzaGFsaXNhYmxlIiwiZ2V0X3JhdGVfY29udmVudGlvbl8xIiwiZ2V0X2VtcHR5X2hhc2h0Ymxfc2l6ZV8xIiwiZ2V0X3N5bWJvbHNfMSIsImdldF9maWxlXzEiLCJnZXRfaW5mbHVlbmNlX21hcF8xIiwiZ2V0X2NvbnRhY3RfbWFwXzEiLCJnZXRfcmVhY2hhYmlsaXR5X21hcF8xIiwiZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhIiwiZ2V0X3Vuc2FmZV8xIiwiZ2V0X3RyYWNlXzEiLCJnZXRfZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXkiLCJnZXRfcHJlZml4XzEiLCJnZXRfY2FsbF9zdGFja18xIiwiZ2V0X2xpbmtfbW9kZV8xIiwiZ2V0X2thc2Ffc3RhdGVfMSIsImdldF9kb19jb250YWN0X21hcF8xIiwiZ2V0X3N5bnRheF92ZXJzaW9uXzEiLCJnZXRfZG9fc2NjXzEiLCJnZXRfZG9faW5mbHVlbmNlX21hcF8xIiwiZ2V0X2RvX09ERV9mbG93X29mX2luZm9ybWF0aW9uIiwiZ2V0X2RvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvIiwiZ2V0X2RvX3NpdGVfZGVwZW5kZW5jaWVzXzEiLCJnZXRfZHVtcF9zaXRlX2RlcGVuZGVuY2llc18xIiwiZ2V0X2RvX3JlYWNoYWJpbGl0eV9hbmFseXNpc18xIiwiZ2V0X2luZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2IiwiZ2V0X2NvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsIiwiZ2V0X3NjY19hY2N1cmFjeV9sZXZlbF8xIiwiZ2V0X3ZpZXdfYWNjdXJhY3lfbGV2ZWxfMSIsImdldF9sYXVuY2hpbmdfZGF0ZV8xIiwidCIsImdtdCIsImdldF9zaG9ydF92ZXJzaW9uXzEiLCJnZXRfZnVsbF92ZXJzaW9uXzEiLCJnZXRfbGF1bmNoZWRfd2hlcmVfMSIsImdldF9jb21tYW5kX2xpbmVfMSIsImdldF9tYXJzaGFsaXNhYmxlIiwicGFyYW1ldGVyIiwiZ2V0X2xvZ2dlciIsImdldF9sb2dnZXJfZXJyIiwiZ2V0X2xvZ2dlcl9iYWNrZG9vciIsInVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIiwiZ2V0X2NvbW1hbmRfbGluZSIsImdldF9zaG9ydF92ZXJzaW9uIiwiZ2V0X2xhdW5jaGVkX3doZXJlIiwiZ2V0X2Z1bGxfdmVyc2lvbiIsImdldF9sYXVuY2hpbmdfZGF0ZSIsImdldF9sYXVuY2hlZF93aGVuX2FuZF93aGVyZSIsInBhcmFtZXRlcnMiLCJnZXRfZG9fY29udGFjdF9tYXAiLCJnZXRfc3ludGF4X3ZlcnNpb24kMCIsImdldF9kb19zY2MiLCJnZXRfZG9faW5mbHVlbmNlX21hcCIsImdldF9kb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbiQwIiwiZ2V0X2RvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvJDAiLCJnZXRfZG9fc2l0ZV9kZXBlbmRlbmNpZXMiLCJnZXRfZHVtcF9zaXRlX2RlcGVuZGVuY2llcyIsImdldF9zeW1ib2xzIiwiZ2V0X2ZpbGUiLCJnZXRfY29tcHV0ZV9zeW1tZXRyaWVzIiwiZ2V0X3JhdGVfY29udmVudGlvbiIsImdldF9pbmZsdWVuY2VfbWFwIiwiZ2V0X2NvbnRhY3RfbWFwIiwiZ2V0X3JlYWNoYWJpbGl0eV9tYXAiLCJnZXRfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmEkMCIsImdldF91bnNhZmUiLCJnZXRfdHJhY2UiLCJnZXRfZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXkkMCIsImdldF9wcmVmaXgiLCJnZXRfY2FsbF9zdGFjayIsImdldF9saW5rX21vZGUiLCJnZXRfY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwkMCIsImdldF9zY2NfYWNjdXJhY3lfbGV2ZWwiLCJnZXRfaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXYkMCIsImdldF92aWV3X2FjY3VyYWN5X2xldmVsIiwiZ2V0X2VtcHR5X2hhc2h0Ymxfc2l6ZSIsInVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZSIsInVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCIsInVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIiwidXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfIiwidXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFsIiwiZ2V0X2JvdW5kX3N5bWJvbCIsImdldF9vcGVuX2JpbmRpbmdfc3RhdGUiLCJnZXRfY2xvc2VfYmluZGluZ19zdGF0ZSIsImdldF9taXNzaW5nX2JpbmRpbmdfc3RhdGUiLCJnZXRfaW50ZXJuYWxfc3RhdGVfc3ltYm9sIiwiZ2V0X29wZW5faW50ZXJuYWxfc3RhdGUiLCJnZXRfY2xvc2VfaW50ZXJuYWxfc3RhdGUiLCJnZXRfbGlua190b19hbnkiLCJnZXRfbGlua190b19zb21lIiwiZ2V0X2ZyZWVfc3ltYm9sIiwiZ2V0X2F0X3N5bWJvbCIsImdldF9hZ2VudF9vcGVuX3N5bWJvbCIsImdldF9hZ2VudF9jbG9zZV9zeW1ib2wiLCJnZXRfYWdlbnRfc2VwX2NvbW1hX3N5bWJvbCIsImdldF9hZ2VudF9zZXBfcGx1c19zeW1ib2wiLCJnZXRfYWdlbnRfc2VwX2RvdF9zeW1ib2wiLCJnZXRfYnR5cGVfc2VwX3N5bWJvbCIsImdldF9zaXRlX3NlcF9jb21tYV9zeW1ib2wiLCJnZXRfZ2hvc3RfYWdlbnRfc3ltYm9sIiwiZ2V0X2RvX3dlX3Nob3dfZ2hvc3QiLCJnZXRfdW5pX2Fycm93X3N5bWJvbCIsImdldF9yZXZfYXJyb3dfc3ltYm9sIiwiZ2V0X2JpX2Fycm93X3N5bWJvbCIsImdldF9iaV9hcnJvd19ub19wb2x5X3N5bWJvbCIsImdldF9yZXZfYXJyb3dfbm9fcG9seV9zeW1ib2wiLCJnZXRfdW5pX2Fycm93X25vX3BvbHlfc3ltYm9sIiwiZ2V0X29wZW5faW50X2ludGVydmFsX2luY2x1c2l2JDAiLCJnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXYkMCIsImdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eSQwIiwiZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpJDAiLCJnZXRfY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2kkMCIsImdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5maW5pdCQwIiwiZ2V0X3BsdXNfaW5maW5pdHlfc3ltYm9sIiwiZ2V0X21pbnVzX2luZmluaXR5X3N5bWJvbCIsImdldF9pbnRfaW50ZXJ2YWxfc2VwYXJhdG9yX3N5bSQwIiwiZ2V0X29wZW5fY291bnRlcl9zdGF0ZSIsImdldF9vcGVuX2NvdW50ZXJjZXEiLCJnZXRfb3Blbl9jb3VudGVyY2d0ZSIsImdldF9vcGVuX2NvdW50ZXJjdmFyIiwiZ2V0X29wZW5fY291bnRlcmRlbHRhIiwiZ2V0X29wZW5fY291bnRlcnZhbCIsImdldF9jbG9zZV9jb3VudGVyX3N0YXRlIiwiZ2V0X2Nsb3NlX2NvdW50ZXJjZXEiLCJnZXRfY2xvc2VfY291bnRlcmNndGUiLCJnZXRfY2xvc2VfY291bnRlcmN2YXIiLCJnZXRfY2xvc2VfY291bnRlcmRlbHRhIiwiZ2V0X2Nsb3NlX2NvdW50ZXJ2YWwiLCJnZXRfY291bnRlcmNlcV9zeW1ib2wiLCJnZXRfY291bnRlcmNndGVfc3ltYm9sIiwiZ2V0X2NvdW50ZXJjdmFyX3N5bWJvbCIsImdldF9jb3VudGVyZGVsdGFwbHVzX3N5bWJvbCIsImdldF9jb3VudGVyZGVsdGFtaW51c19zeW1ib2wiLCJnZXRfY291bnRlcnZhbF9zeW1ib2wiLCJnZXRfaW1fZm9ybWF0IiwiZ2V0X2ltX2ZpbGUiLCJnZXRfaW1fZGlyZWN0b3J5IiwiZ2V0X3J1bGVfc2hhcGUiLCJnZXRfcnVsZV9jb2xvciIsImdldF92YXJpYWJsZV9zaGFwZSIsImdldF92YXJpYWJsZV9jb2xvciIsImdldF93YWtlX3VwX2NvbG9yIiwiZ2V0X2luaGliaXRpb25fY29sb3IiLCJnZXRfd2FrZV91cF9hcnJvdyIsImdldF9pbmhpYml0aW9uX2Fycm93IiwiZ2V0X3Byb21wdF9mdWxsX3Zhcl9kZWYiLCJnZXRfcHJvbXB0X2Z1bGxfcnVsZV9kZWYiLCJnZXRfbWFrZV9sYWJlbHNfY29tcGF0aWJsZV93aXQiLCJnZXRfcHVyZV9jb250YWN0IiwiZ2V0X2NtX2Zvcm1hdCIsImdldF9jbV9maWxlIiwiZ2V0X2NtX2RpcmVjdG9yeSIsImdldF9iaW5kaW5nX3NpdGVfc2hhcGUiLCJnZXRfYmluZGluZ19zaXRlX2NvbG9yIiwiZ2V0X2ludGVybmFsX3NpdGVfc2hhcGUiLCJnZXRfaW50ZXJuYWxfc2l0ZV9jb2xvciIsImdldF9jb3VudGVyX3NpdGVfc2hhcGUiLCJnZXRfY291bnRlcl9zaXRlX2NvbG9yIiwiZ2V0X2FnZW50X3NoYXBlX2FycmF5IiwiZ2V0X2FnZW50X2NvbG9yX2FycmF5IiwiZ2V0X2FnZW50X3NoYXBlX2RlZiIsImdldF9hZ2VudF9jb2xvcl9kZWYiLCJnZXRfbGlua19jb2xvciIsImdldF9pbmZsdWVuY2VfY29sb3IiLCJnZXRfaW5mbHVlbmNlX2Fycm93IiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDUiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkNiIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQ3IiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDgiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkOSIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQxMCIsImdldF9wb3N0X3Byb2Nlc3NpbmciLCJnZXRfYmFja2VuZF9tb2RlIiwiZ2V0X2hpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fJDAiLCJnZXRfaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF8kMCIsImdldF9zbWFzaF9yZWxhdGlvbnMiLCJnZXRfbG9jYWxfdHJhY2VfZm9ybWF0IiwiZ2V0X2NvbXB1dGVfbG9jYWxfdHJhY2VzIiwiZ2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0JDAiLCJzZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXQiLCJyJDAiLCJyJDEiLCJzZXRfdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG8iLCJnZXRfc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3QkMCIsImdldF91c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sbyQwIiwiZ2V0X2lnbm9yZV9sb2NhbF9sb3NhbmdlcyIsImdldF9hZGRfc2luZ3VsYXJfbWFjcm9zdGF0ZXMiLCJnZXRfYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzIiwiZ2V0X2xvY2FsX3RyYWNlX3ByZWZpeCIsImdldF9sb2NhbF90cmFjZV9kaXJlY3RvcnkiLCJnZXRfdmlld19hbmFseXNpcyIsImdldF9wYXJhbGxlbF9ib25kc19hbmFseXNpcyIsImdldF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcyQwIiwiZ2V0X2R5bmFtaWNfY29udGFjdF9tYXAiLCJnZXRfY291bnRlcnNfYW5hbHlzaXMiLCJnZXRfY291bnRlcnNfZG9tYWluIiwiZ2V0X2RvX3JlYWNoYWJpbGl0eV9hbmFseXNpcyIsInNldF9wcmVmaXhfMSIsInByZWZpeCIsInNldF9jYWxsX3N0YWNrXzEiLCJjYWxsX3N0YWNrIiwic2V0X3RyYWNlXzEiLCJib29sIiwidXBncmFkZV90b19tYXJzaGFsaXNhYmxlIiwic2V0X3ByZWZpeCIsInNldF9jYWxsX3N0YWNrIiwic2V0X3RyYWNlIiwidXBkYXRlX3ByZWZpeCIsInN1ZmZpeCIsInVwZGF0ZV9jYWxsX3N0YWNrIiwibmFtZSIsInJlcF9ib29sIiwib3Blbl9pbmZsdWVuY2VfbWFwX2ZpbGUiLCJtYXRjaCQxIiwiZm9ybWF0IiwibG9nZ2VyIiwib3Blbl9jb250YWN0X21hcF9maWxlIiwibGV4aWNhbF9hbmFseXNpc19vZl90ZXN0ZWRfb25sIiwiZ2V0X2NhbGxlZF9mcm9tIiwiZ2V0X2JhY2tkb29yX25icl9vZl9zY2NfMSIsImJhY2tkb29ycyIsImdldF9iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2ZfcyIsImdldF9iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyIsImdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludCIsImdldF9iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYSIsImdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyIsImdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfMSIsImdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aCIsImdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseSIsImdldF9iYWNrZG9vcl90aW1pbmdfMSIsImdldF9iYWNrZG9vcl9maWxlXzEiLCJnZXRfYmFja2Rvb3JfZGlyZWN0b3J5XzEiLCJnZXRfYmFja2Rvb3JzIiwiZ2V0X2JhY2tkb29yX25icl9vZl9zY2NfMiIsImdldF9iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2ZfcyQwIiwiZ2V0X2JhY2tkb29yX25icl9vZl9jb25zdHJhaW50JDAiLCJnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmEkMCIsImdldF9iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyQwIiwiZ2V0X2JhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzJDAiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzXzIiLCJnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHkkMCIsImdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aCQwIiwiZ2V0X2JhY2tkb29yX3RpbWluZ18yIiwiZ2V0X2JhY2tkb29yX2ZpbGVfMiIsImdldF9iYWNrZG9vcl9kaXJlY3RvcnlfMiIsImdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludCQxIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhJDEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3NjYyIsImdldF9iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2ZfcyQxIiwiZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzJDEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzIiwiZ2V0X2JhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzJDEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGgkMSIsImdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseSQxIiwiZ2V0X2JhY2tkb29yX3RpbWluZyIsImdldF9iYWNrZG9vcl9maWxlIiwiZ2V0X2JhY2tkb29yX2RpcmVjdG9yeSIsImdldF9wcm9maWxlciIsImdldF9jb21wcmVzc2lvbl9zdGF0dXNfbG9nZ2VyIiwiZ2V0X2thc2Ffc3RhdGUiLCJzZXRfcHJpbnRfZWZmaWNpZW5jeSIsImdldF9wcmludF9lZmZpY2llbmN5Iiwic2V0X2xvZ2dlciIsInNhdmVfZXJyb3JfbGlzdCIsInNhdmVfcHJvZ3Jlc3NfYmFyIiwiYmFyIiwicmVzZXRfcHJvZ3Jlc3NfYmFyIiwic2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIiwicmVzZXRfY3VycmVudF9waGFzZV90aXRsZSIsImRlZmF1bHQkMCIsImNvbWJpbmUiLCJsMSIsImwyIiwibGlzdCIsImExIiwiYTIiLCJvcHRpb25zIiwiZ2V0X29wdGlvbiIsInRpdGxlIiwiaW5wdXQiLCJidWlsZF9rYXNhX3BhcmFtZXRlcnMiLCJ0X2NvbW1vbiIsImRvdF9jb21tZW50IiwiZG90X3RvX3BkZiIsImhlYWQiLCJxIiwiaGVhZF9pbmZsdWVuY2VfbWFwX2luX2RvdCIsImhlYWRfY29udGFjdF9tYXBfaW5fZG90Iiwib3V0cHV0IiwiYWN0aW9ucyIsInN5bnRheCIsInRyYWNlcyIsImNvbnRhY3RfbWFwIiwiaW5mbHVlbmNlX21hcCIsImZsb3ciLCJkZWJ1ZyIsImVtcHR5X2Vycm9yX2hhbmRsZXIiLCJpc19lbXB0eV9lcnJvcl9oYW5kbGVyIiwid2Fybl9hdXgiLCJwYXJhbWV0ZXJzIiwiZXJyb3JfaGFuZGxlciIsInRvX3VpIiwiZmlsZV9uYW1lIiwibWVzc2FnZSIsImV4biIsImRlZmF1bHQkMCIsInVuY2F1Z2h0JDAiLCJkZnQiLCJlcnJvciIsInVuY2F1Z2h0Iiwic3RyaW5nbGlzdCIsIndhcm5fd2l0aF9leG4iLCJvcHQiLCJsaW5lIiwiZmlsZSIsInN0aCIsInN0aCQwIiwicG9zIiwibGlhaXNvbiIsInMiLCJwb3MkMCIsIndhcm4iLCJmaWxlX2xpbmUiLCJwcmludF9mb3JfS2FTaW0iLCJoYW5kbGVycyIsInBhcmFtZXRlcnMkMCIsImNhdWdodCIsInByaW50IiwicHJpbnRfZXJyb3JzX2xpZ2h0X2Zvcl9rYXNpbSIsIndyYXAiLCJzdHJpbmciLCJzdHJpbmdfb3B0IiwiY2hlY2tfcG9pbnQiLCJwYXJhbWV0ZXIiLCJlcnJvciQwIiwiZXJyb3IkMSIsImZvcl9LYVNpbSIsImYiLCJsaWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSIsImEiLCJiIiwibGlmdF9nZW5lcmljX2JpbmFyeV9iaW5hcnlfZm9yIiwiYyIsImIkMCIsImxpZnRfZ2VuZXJpY190ZXJuYXJ5X2Zvcl9LYVNpbSIsImxpZnRfZ2VuX3VuYXJ5IiwiZHVtcCIsIm91dHB1dCIsImxpZnRfZ2VuX2JpbmFyeSIsImxpZnRfZ2VuX3Rlcm5hcnkiLCJsaWZ0X3dpdGhfb25fdGhlX2ZseV9sb2dnaW5nX3UiLCJsaWZ0X3dpdGhfb25fdGhlX2ZseV9sb2dnaW5nX2IiLCJsaWZ0X3dpdGhfb25fdGhlX2ZseV9sb2dnaW5nX3QiLCJsaWZ0X3dpdGhvdXRfbG9nZ2luZ191bmFyeSIsImxpZnRfd2l0aG91dF9sb2dnaW5nX2JpbmFyeSIsImxpZnRfd2l0aG91dF9sb2dnaW5nX3Rlcm5hcnkiLCJzdHJpbmdfb2Zfc3RlcF9raW5kIiwieCIsImludCQwIiwiaW50JDEiLCJzdHJpbmciLCJpbnQkMiIsImludCQzIiwiaW50JDQiLCJpbnQkNSIsInN0cmluZyQwIiwic3RyaW5nJDEiLCJwcmludF9zdGVwX2tpbmQiLCJwYXJhbWV0ZXJzIiwicHJpbnRfdGFzayIsInBhcmFtZXRlciIsImIiLCJhIiwiayIsImwiLCJvdXRwdXQiLCJxIiwidCIsIm91dHB1dCQwIiwiayQwIiwiayQxIiwib3V0cHV0JDEiLCJvdXRwdXQkMiIsImskMiIsImIkMCIsInRhYiIsImkiLCJpJDAiLCJ0aW1lIiwiY2xvc2VfbG9nZ2VyIiwiZmx1c2hfbG9nZ2VyIiwiaXNfZHVtbXkiLCJzdGVwX2tpbmQiLCJhZGRfZXZlbnQiLCJlcnJvciIsImYiLCJsb2dfaW5mbyIsImVycm9yJDAiLCJuZXh0X2RlcHRoIiwiZiQwIiwidGFzayIsInRlcm1pbmF0ZWRfdGFzayIsImN1cnJlbnRfdGFzayIsImNsb3NlX2V2ZW50IiwibG9nX2luZm8kMCIsImVycm9yJDEiLCJpbnRlcnJ1cHRlZCIsImVycm9yJDIiLCJ0YWlsIiwidGFpbCQwIiwidGVybWluYXRlZF90YXNrJDAiLCJsb2dfaW5mbyQxIiwic2l6ZV9hZnRlciIsImdlbl9vcHQiLCJnZW4iLCJlIiwiYWRkX2V2ZW50X29wdCIsImNsb3NlX2V2ZW50X29wdCIsInByb3BhZ2F0aW9uX2xhYmVscyIsInByb3BhZ2F0aW9uX2Nhc2VzIiwiY29weSIsImluaXRfbG9nX2luZm8iLCJsb2dfaW5mb190b19qc29uIiwiZmxvYXRfb2ZfanNvbiIsImludF9vZl9qc29uIiwibG9nX2luZm9fb2ZfanNvbiIsImluaXQiLCJkdW1wX3Nob3J0X2xvZyIsInJlc2V0X2xvZyIsImxvZyIsImVsbGFwc2VkX3RpbWUiLCJlbGxhcHNlZF9nbG9iYWxfdGltZSIsInNldF90aW1lIiwic2V0X3N0ZXBfdGltZSIsInNldF9zdG9yeV9yZXNlYXJjaF90aW1lIiwic3QiLCJzZXRfY29uY3VycmVudF9ldmVudF9kZXRlY3Rpb24iLCJzZXRfY29uY3VycmVudF9ldmVudF9kZWxldGlvbl8iLCJzZXRfZ3JpZF9nZW5lcmF0aW9uIiwic2V0X2Nhbm9uaWNhbGlzYXRpb24iLCJhZGRfY2FzZSIsImFkZF9sb29rX2Rvd25fY2FzZSIsImFkZF9sb29rX3VwX2Nhc2UiLCJhZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIiwiYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAiLCJpbmNfY3V0IiwiaW5jX2JyYW5jaCIsImluY19uX2thc2ltX2V2ZW50cyIsImluY19uX29ic19ldmVudHMiLCJpbmNfbl9zaWRlX2V2ZW50cyIsImluY19uX2luaXRfZXZlbnRzIiwiaW5jX2N1dF9ldmVudHMiLCJpbmNfa19jdXRfZXZlbnRzIiwicmVzZXRfY3V0X2V2ZW50cyIsImluY19zZWxlY3RlZF9ldmVudHMiLCJpbmNfcmVtb3ZlZF9ldmVudHMiLCJkdW1wX2NvbXBsZXRlX2xvZyIsImxvZ2dlciIsInRpY2siLCJzZXRfZ2xvYmFsX2N1dCIsIm4iLCJzZXRfcHNldWRvX2ludiIsImxpZnQiLCJmIiwiZW1wdHkiLCJpc19lbXB0eSIsInNpbmdsZXRvbiIsImlzX3NpbmdsZXRvbiIsImFkZCIsImFkZF93aGVuX25vdF9pbiIsInAiLCJlIiwieCIsInMiLCJzJDAiLCJlJDAiLCJyZW1vdmUiLCJ1bmlvbiIsImRpc2pvaW50X3VuaW9uIiwiaW50ZXIiLCJkaWZmIiwibWludXMiLCJjYXJkaW5hbCIsIm1lbSIsImV4aXN0cyIsImZpbHRlciIsImZvcl9hbGwiLCJwYXJ0aXRpb24iLCJjb21wYXJlIiwiZXF1YWwiLCJzdWJzZXQiLCJpdGVyIiwiZm9sZCIsImZvbGRfaW52IiwiZWxlbWVudHMiLCJjaG9vc2UiLCJtaW5fZWx0IiwibWF4X2VsdCIsImVtcHR5JDAiLCJpc19lbXB0eSQwIiwibWluX2VsdCQwIiwibWVtJDAiLCJmaW5kX29wdGlvbiIsImEiLCJiIiwiYyIsImQiLCJmaW5kX2RlZmF1bHQiLCJmaW5kX29wdGlvbl93aXRob3V0X2xvZ3MiLCJmaW5kX2RlZmF1bHRfd2l0aG91dF9sb2dzIiwiYWRkJDAiLCJvdmVyd3JpdGUiLCJwYXJhbWV0ZXIiLCJlcnJvciIsIm1hcCIsImJvb2wiLCJlcnJvciQwIiwiYWRkX29yX292ZXJ3cml0ZSIsInJlbW92ZSQwIiwicmVtb3ZlX29yX25vdCIsInVwZGF0ZSIsIm1hcDIiLCJtYXAyeiIsImZvbGQyeiIsImZvbGQyIiwiaXRlcjIiLCJnIiwiaCIsIm1hcGYiLCJtYXBnIiwiZm9sZDJfc3BhcnNlIiwiaXRlcjJfc3BhcnNlIiwiZGlmZiQwIiwiZGlmZl9wcmVkIiwibWVyZ2UiLCJ1bmlvbiQwIiwiZm9sZF9yZXN0cmljdGlvbiIsImZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nXyIsIml0ZXIkMCIsImZvbGQkMCIsIm1hcGkiLCJmb3JfYWxsJDAiLCJmaWx0ZXJfb25lIiwiY29tcGFyZSQwIiwiZXF1YWwkMCIsImJpbmRpbmdzIiwidG9fanNvbiIsIm9mX2pzb24iLCJwcm9qX21hcCIsImlkZW50aXR5X2VsdCIsImtleV9hIiwiZGF0YV9hIiwibWFwX2IiLCJrZXlfYiIsIm9sZCIsIm1vbmFkaWNfcHJval9tYXBfaSIsImVycm9yJDEiLCJkYXRhIiwiZXJyb3IkMiIsImRhdGEkMCIsImVycm9yJDMiLCJtb25hZGljX3Byb2pfbWFwIiwicGFydGl0aW9uX3NldCIsInNldCIsIm5ld3NldCIsIm1vbmFkaWNfcGFydGl0aW9uX3NldCIsInByb2pfc2V0Iiwic2V0X2EiLCJzZXRfYiIsIm1vbmFkaWNfcHJval9zZXQiLCJwcm9qMiIsImtleV9jIiwic3VibWFwIiwic3VibWFwJDAiLCJwcm9qMl9tb25hZGljIiwiaGFuZGxlciIsIm12YmR1X2hhbmRsZXIiLCJoYW5kbGVyJDAiLCJoYW5kbGVyJDEiLCJtdmJkdV9oYW5kbGVyJDAiLCJoYW5kbGVyJDIiLCJoYW5kbGVyJDMiLCJoYW5kbGVyJDQiLCJsb2NhbF90cmFjZSIsInBvb2wiLCJwdXNoIiwib3V0X2xpc3QiLCJpbl9saXN0IiwiYWRkX2VsdCIsImZvbGRfbGVmdCIsImFjYyIsInByaW50X3dsIiwicGFyYW1ldGVycyIsIndsIiwiaSIsInBvcCIsIngkMCIsInRsIiwicmVtb3ZlX2VsdCIsIngkMSIsImludmFsaWRfYXJnIiwibWgiLCJwb3MiLCJleG4iLCJ2YWx1ZSIsImRpbWVuc2lvbiIsImtleV9saXN0IiwicGFyZW1ldGVycyIsInQiLCJzaXplIiwiYXJyYXkiLCJrIiwic29sIiwic29sJDAiLCJrJDAiLCJrJDEiLCJjcmVhdGUiLCJjcmVhdGVfYmlnZ2VzdF9rZXkiLCJleHBhbmRfYW5kX2NvcHkiLCJkaW1lbnNpb24kMCIsImFycmF5JDAiLCJrZXkiLCJpbml0IiwiYXJyYXkkMiIsImVycm9yJDQiLCJhcnJheSQxIiwiZ2V0IiwiZnJlZSIsInVuc2FmZV9nZXQiLCJwcmludCIsInByaW50X2VsdCIsImVsdCIsInBhcmFtZXRlcnMkMCIsImkkMCIsInJlbWFuZW50JDEiLCJyZW1hbmVudCIsInJlbWFuZW50JDAiLCJmb2xkX3dpdGhfaW50ZXJydXB0aW9uIiwib3V0cHV0X29wdCIsImZvbGQyX2NvbW1vbiIsInQxIiwidDIiLCJhcnJheTEiLCJhcnJheTIiLCJ4MiIsIngxIiwicmVtYW5lbnQkNCIsIngyJDAiLCJyZW1hbmVudCQyIiwiayQyIiwicmVtYW5lbnQkMyIsImskMyIsImZyZWVfYWxsIiwib2xkX2RpbWVuc2lvbiIsIm1hdHJpeCIsIm1hdHJpeCQwIiwiZXh0X2xpc3QiLCJsaXN0IiwidDIkMCIsImwyIiwia2V5MiIsImRpbSIsImoiLCJvbGRfdW5kZXJseWluZyIsIm9sZF91bmRlcmx5aW5nJDAiLCJvbGRfdW5kZXJseWluZyQxIiwib2xkX3VuZGVybHlpbmckMiIsIm5ld191bmRlcmx5aW5nIiwibmV3X21hdHJpeCIsInVuZGVybHlpbmciLCJ1bmRlcmx5aW5nJDAiLCJwcmludF9vZiIsImZvbGRfZ2VuIiwiZm9sZDEiLCJiJDAiLCJjJDAiLCJiYXNpYyIsIm4iLCJrZXlzIiwibmV3X2FycmF5IiwibmV3X2Jhc2ljIiwiaW0iLCJpbSQwIiwibCIsInQkMCIsIm91dHB1dCQxIiwibGlzdCQwIiwib3V0cHV0IiwidGFpbCIsImhlYWQiLCJvdXRwdXQkMCIsImZpbmRTZXQiLCJwYXJlbnQiLCJyb290IiwibCQwIiwiZ2V0X3JlcHJlc2VudGVudCIsInVuaW9uX2xpc3QiLCJ0b192aXNpdCIsInQkMSIsInRvX3Zpc2l0JDAiLCJhJDAiLCJ0b192aXNpdCQxIiwidCQyIiwicm9vdF94Iiwicm9vdF95IiwidW5pb25fYXJyYXkiLCJpdGVyaSIsImZzdF9vcHRpb24iLCJzbmRfb3B0aW9uIiwiZXNjYXBlX2xhYmVsX2luX2RvdCIsIm1ha2VfaWRfY29tcGF0aWJsZV93aXRoX2RvdF9mbyIsInN0cmluZyIsInRhYiIsInBvcyQyIiwiY2hhciQwIiwibGlzdGVfY2hhciIsInBvcyQwIiwibCQxIiwicG9zJDEiLCJzb3J0ZWRfcGFydHNfb2ZfbGlzdCIsImF1eCIsInN1ZmZpeCIsImxpc3QkMSIsInNvcnRfbGlzdCIsInJlZmluZWRfbGlzdCIsImtleSQwIiwicmVmaW5lZF9zb3J0ZWRfbGlzdCIsImNvbnN0X3VuaXQiLCJhcnJheV9vZl9saXN0IiwicSIsImEkMSIsInVuc29tZSIsInRyYWNlIiwiaW50ZXJfbGlzdCIsImwxJDEiLCJsMiQxIiwibDEiLCJyZXAiLCJsMiQwIiwibDEkMCIsInJlcCQwIiwibGlzdF8wX24iLCJsaXN0X21pbnVzIiwicTIiLCJxMSIsInExJDAiLCJwcmludF9jb21tYSIsImNvbW1hIiwiZmV0Y2hfYXJyYXkiLCJkZWYiLCJpJDEiLCJhc3NvIiwiaW50JDAiLCJmaW5kX29wdGlvbl9sb2dfb25fdGhlX2ZseSIsIm5vZGVfb2ZfaW50IiwiaW50X29mX25vZGUiLCJub2RlX29mX25vZGVfbGFiZWwiLCJub2RlX2xpc3QiLCJlZGdlX2xpc3QiLCJtIiwibWF4X25vZGUiLCJub2RlcyIsIm5vZGVzJDAiLCJlZGdlcyIsImVkZ2UiLCJuMiIsImxhYmVsIiwibjEiLCJlZGdlcyQwIiwiY29tcHV0ZV9zY2MiLCJsb3ciLCJwcmUiLCJvbl9zdGFjayIsIm5fdG9fc3RyaW5nIiwiZ3JhcGgiLCJvbl9zdGFjayQwIiwicHJlJDAiLCJsb3ckMCIsIm9uX3N0YWNrJDEiLCJwcmUkMSIsImxvdyQxIiwiZXJyb3IkOCIsImxvdyQ0IiwibG93JDUiLCJlcnJvciQ5IiwibG93JDYiLCJlcnJvciQxNCIsInByZSQ0IiwicHJlJDUiLCJlcnJvciQxMCIsInByZSQ2IiwiZXJyb3IkMTMiLCJvbl9zdGFjayQ0Iiwib25fc3RhY2skNSIsImVycm9yJDExIiwib25fc3RhY2skNiIsImVycm9yJDEyIiwic2NjX2xpc3QiLCJzdGFjayIsImNvdW50ZXIiLCJ2Iiwic3RhY2skMCIsImNvdW50ZXIkMCIsImVkZ2VzX3YiLCJ3IiwicHJlX3ciLCJzY2NfbGlzdCQwIiwibG93X3YiLCJsb3dfdyIsImVycm9yJDUiLCJzdGFjayQxIiwic2NjX2xpc3QkMSIsImNvdW50ZXIkMSIsImxvdyQyIiwiZXJyb3IkNiIsImxvd192JDAiLCJlcnJvciQ3IiwicHJlX3ckMCIsImxvdyQzIiwicHJlX3YiLCJvbl9zdGFjayQyIiwic3RhY2skMiIsImNjIiwic3RhY2skMyIsIm9uX3N0YWNrJDMiLCJjYyQwIiwicHJlJDIiLCJwcmUkMyIsImFkZF9icmlkZ2VzIiwic2NjIiwic3RyaW5nX29mX24iLCJzdHJpbmdfb2ZfZSIsImJyaWRnZXMiLCJzY2MkMCIsInNjYyQxIiwic2NjJDQiLCJub2RlIiwibiQwIiwic2NjJDIiLCJuaSIsInNjY2kiLCJzY2NpJDAiLCJzY2NpJDEiLCJuaiIsInNjY2oiLCJzY2NqJDAiLCJzY2NqJDEiLCJuc3RyaW5naSIsIm5zdHJpbmdqIiwiYnJpZGdlcyQwIiwic2NjJDMiLCJpbnZhbGlkIiwiUE9TIiwibWVzc2FnZSIsImludmFsaWRfYXJnX2Jvb2wiLCJtZW1iZXIiLCJkaWN0aW9uYXJ5IiwiaW5fY29uc3RydWN0aW9uIiwic3RhYmlsaXplIiwiYXNzbyQwIiwidHJhbnNsYXRlIiwiZGljdGlvbmFyeSQwIiwic3RhYmlsaXplZCIsImFsbG9jYXRlX3VuaXF1ZWx5X29yX25vdCIsInVuaXF1ZWx5IiwiYnVpbGQiLCJmcmVzaCIsImFzc29faWQkMSIsImhhc2hfdGFibGUiLCJoYXNoIiwiZGljdGlvbmFyeSQxIiwiYXNzb19pZCIsImFzc29faWQkMCIsImFsbG9jYXRlIiwiYWEiLCJhbGxvY2F0ZV91bmlxdWVseSIsImFsbG9jYXRlX2Jvb2wiLCJ1bnNhZmVfYWxsb2NhdGUiLCJkaWMiLCJkaWMkMCIsImxhc3RfZW50cnkiLCJ0aWNrX3N0b3JpZXMiLCJmIiwiY29uZiIsInNhdmVfcHJvZ3Jlc3NfYmFyIiwibl9zdG9yaWVzIiwiY291bnRlciIsImxhc3QiLCJpbml0IiwiYyIsIm4iLCJuYyIsIm5sIiwibiQwIiwiYmFyIiwibiQxIiwidGljayQwIiwidGljayIsImNvbmZpZ19iaWdfZ3JhcGhfd2l0aF9wcm9ncmVzcyIsImNvbmZpZ19zbWFsbF9ncmFwaCIsImNvbmZpZ19iaWdfZ3JhcGhfd2l0aG91dF9wcm9nciIsImlnbm9yZV9mbG93X2Zyb21fb3V0Z29pbmdfc2lwaCIsImNoZWNrX21vZGUiLCJzd2FwIiwiYSIsImIiLCJpZ25vcmVfZnN0IiwiY29tcGFyZV9zdWNjIiwicCIsImwiLCJsJDAiLCJxIiwic3RyaWN0bHlfaW5jcmVhc2luZyIsInN0cmljdGx5X2RlY3JlYXNpbmciLCJjb25jYXQiLCJwcmludF9saXN0IiwiY2hlY2siLCJmb3JtIiwic3RyaW5nIiwicmVwIiwiaXNfc3RyaWN0X3N1Ymxpc3QiLCJhJDAiLCJiJDAiLCJoIiwidCIsImgkMCIsInQkMCIsInQkMSIsImluc2VydF9lbHQiLCJlIiwiZGlmZl9saXN0IiwiYWNjdSIsImFjY3UkMCIsImNvbXBhcmVfYm9vbCIsImRpZmZfbGlzdF9kZWNyZWFzaW5nIiwieCIsInkiLCJtZXJnZV9saXN0X2RlY3JlYXNpbmciLCJjbG9zdXJlX2JvdHRvbV91cF93aXRoX2ZvbGQiLCJwYXJhbWV0ZXIiLCJoYW5kbGVyIiwibG9nX2luZm8iLCJlcnJvciIsImV2ZW50IiwiY29uZmlnIiwicHJlYyIsImlzX29icyIsImVycl9sb2dnZXIiLCJpc19vYnMkMCIsImkiLCJtYXhfaW5kZXgiLCJuX2VkZ2VzIiwiZiQwIiwiY2xvc2UiLCJjbG9zZV90aWNrIiwidGljayQxIiwiZG9fdGljayIsImNsb3NlX3RpY2skMCIsImRvX3RpY2skMCIsInNfcHJlZF9zdGFyIiwibWF4X3N1Y2MiLCJzdWNjIiwicHJlZCIsImlzX2xhc3Rfc3VjY19vZiIsImFkZCIsIm5vZGUiLCJvbGRfbCIsImxvZ19pbmZvJDAiLCJlcnJvciQwIiwic19wcmVkIiwiaiIsImxfcHJlZCIsInByZWRfc3RhciIsIm5ld19sIiwiZGlmZiIsImsiLCJvdXRwdXQiLCJjbG9zdXJlX2JvdHRvbV91cCIsImV2ZW50X29wdCIsInMiLCJncmFwaCIsImNsb3N1cmVfdG9wX2Rvd24iLCJkZWx0YSIsInByZWMkMCIsIm1lcmdlX3RhaW50cyIsImwxIiwibDIiLCJxJDAiLCJ0YWludGluZyIsIm91dHB1dCQxIiwiZGVsdGEkMCIsIm91dHB1dCQwIiwiZGVsdGEkMSIsIm5ld190YWludCIsInRhaW50cyIsInRhaW50Iiwic2hpZnRlZF90YWludHMiLCJnZXRfbGlzdF9pbl9pbmNyZWFzaW5nX29yZGVyX3ciLCJtb2RlIiwibSIsImNsb3N1cmVfY2hlY2siLCJsb2dfaW5mbyQxIiwiZXJyb3IkMSIsInMkMCIsInMkMSIsImNsb3N1cmUiLCJyZWR1Y3Rpb25fdG9wX2Rvd24iLCJwcmVjX3N0YXIiLCJlaWQiLCJuZWlnaCIsIm91dCIsInRvX3JlbW92ZSIsImwxJDAiLCJsMiQwIiwibDEkMSIsImNtcCIsImwxJDIiLCJzZXQiLCJsb2dfaW5mbyQyIiwiZXJyb3IkMiIsImF0b21fdGVzdGVkIiwiYXRvbV9tb2RpZmllZCIsImVtcHR5X2NvbmZpZyIsInByaW50X2V2ZW50X2tpbmQiLCJlbnYiLCJkZWJ1Z19wcmludF9jYXVzYWwiLCJkZWJ1Z19wcmludF9hdG9tIiwiZGVidWdfcHJpbnRfZ3JpZCIsImciLCJzaXRlX2lkIiwibm9kZV9pZCIsImVtcHR5X2dyaWQiLCJncmlkX2ZpbmQiLCJncmlkIiwicXVhcmsiLCJpc19saW5rIiwidmEiLCJldmVudF9udW1iZXIiLCJraW5kIiwiYXR0JDAiLCJhdHQiLCJhdHRyaWJ1dGUiLCJwaWQiLCJlaWRfaW5pdCIsIm9sZCIsImFkZF9hY3Rpb25zIiwiYWN0aW9ucyIsImdyaWQkMCIsInNpdGUiLCJxJDEiLCJzaXRlMiIsInNpdGUxIiwiZ3JpZCQ0IiwicSQyIiwic2l0ZTEkMCIsInEkMyIsInNpdGUkMCIsImFnIiwibmEiLCJzaWdzIiwiYWdfaW50ZiIsImdyaWQkMSIsImFnJDAiLCJuYSQwIiwic2lncyQwIiwiZ3JpZCQyIiwiYWRkX3Rlc3RzIiwidGVzdHMiLCJyZWNvcmQiLCJyZWNvcmRfb2JzIiwic2lkZV9lZmZlY3RzIiwicmVjb3JkX2luaXQiLCJsYmwiLCJjdXQiLCJvcHQiLCJhdHRyaWJ1dGVfaWRzIiwic3RoIiwid2l0aF9yZWR1Y3Rpb24iLCJhdHRyaWJ1dGVfaWRzJDAiLCJjZmciLCJhdHRyaWJ1dGVfaWRzJDEiLCJ0eXBlX2kiLCJzaXRlX2kiLCJub2RlX2kiLCJhdHRyaWJ1dGUkMSIsImF0dHJpYnV0ZSQyIiwiYXRvbSQwIiwiZXZlbnRzX2tpbmQkMSIsInByZWRzJDAiLCJwcmVjXzEkMCIsImxhc3RfdGVzdGVkJDIiLCJsYXN0X21vZGlmJDEiLCJjb25maWckMyIsImxhc3RfbW9kaWYiLCJsYXN0X3Rlc3RlZCIsImF0dHJpYnV0ZSQwIiwiYXRvbSIsImV2ZW50c19raW5kJDAiLCJwcmVkcyIsInByZWNfMSIsImNvbmZpZyQwIiwiZXZlbnRzX2tpbmQiLCJjZmxjdF9zZXQiLCJjZmxjdCIsImNvbmZpZyQyIiwibGFzdF90ZXN0ZWQkMSIsInByZWRfaWQiLCJwcmVkX3NldCIsImNvbmZpZyQxIiwibGFzdF90ZXN0ZWQkMCIsImxhc3RfbW9kaWYkMCIsImNmZyQwIiwicmVkdWN0aW9uIiwicmVkdWN0aW9uJDAiLCJpZHNfb2ZfZ3JpZCIsImtleSIsInByZWNfc3Rhcl9vZl9jb25maWciLCJlbnJpY2hfZ3JpZCIsImNvbmZpZ19jbG9zdXJlIiwia2VlcF9sIiwidG9fa2VlcCIsImlkcyIsInByZWNfZWlkcyIsImVtYXAiLCJkIiwiZCQwIiwiZGVwdGgiLCJkZXB0aF9vZl9ldmVudCIsImZvbGRfb3Zlcl9jYXVzYWxfcGFzdF9vZl9vYnMiLCJjaGVja19jcmVhdGVfcXVhcmtzIiwiYWlkIiwic2l0ZXMiLCJxdWFya3MiLCJpbnRlcm5hbCIsImNoZWNrX21vZGlmaWVkX3F1YXJrcyIsIm1vZGlmIiwiY2hlY2tfdGVzdGVkX3F1YXJrcyIsImNoZWNrX2V2ZW50X3F1YXJrcyIsImFzaXRlIiwiYXNpdGUkMCIsImFpZCQwIiwiYXNpdGUyIiwiYXNpdGUxIiwicHJldHR5X3ByaW50IiwiZG90Rm9ybWF0IiwiY29tcHJlc3Npb25fdHlwZSIsImxhYmVsIiwiZ3JpZF9saXN0IiwiZXJyX2ZtdCIsImNvbXByZXNzaW9uX3R5cGUkMCIsInoiLCJsaXN0IiwieCQwIiwic3RvcnlfbGlzdCIsInN0b3J5X2xpc3QkMCIsImNwdCIsInN0b3JpZXMiLCJlbnJpY2hlZF9jb25maWciLCJzdGVwcyIsImluZm8iLCJhdl90IiwiZ3JpZF9zdG9yeSIsInRibCIsImF0dF9scyIsImRtYXAiLCJzb3J0ZWRfZXZlbnRzIiwibm9kZV90b19qc29uIiwiZXZlbnRfa2luZCIsInN0cCIsInJpZCIsInJpZCQwIiwic3RwJDAiLCJzdHAkMSIsInBlcnQiLCJwZXJ0JDAiLCJzdHAkMiIsImVpZHNfYXRfZCIsImxzIiwibHMkMCIsIm5vZGVzX3RvX2xpc3QiLCJub2Rlc190b19qc29uIiwiZWRnZV90b19qc29uIiwiZWlkJDAiLCJwcmVjX2VkZ2VzIiwicHJlY19lZGdlc190b19qc29uIiwicHJlYyQxIiwicHJlYyQyIiwiYm9vbCIsImNvbmZsX2VkZ2VzIiwiY29uZmxfZWRnZXNfdG9fanNvbiIsInByb2ZpbGluZyIsImRlc2MiLCJ0aXRsZSIsImF0b21fa2luZCIsInByb2ZpbGluZyQwIiwibmFtZSIsInN0b3J5Iiwic2l6ZSIsInRpbWUiLCJwcmludF9zdGF0IiwiZW5yaWNoZWRfZ3JpZCIsImNvdW50X29icyIsIm5fc3RlcCIsImxvbmdlc3Rfc3RvcnkiLCJuX25vbmVtcHR5IiwibGVuZ3RoX3N1bSIsImxlbmd0aF9zcXVhcmVfc3VtIiwiY2MiLCJjYyQwIiwibGVuZ3RoX3NxdWFyZV9zdW0kMCIsImxlbmd0aF9zdW0kMCIsIm5fbm9uZW1wdHkkMCIsImxvbmdlc3Rfc3RvcnkkMCIsIm5fc3RlcCQwIiwiayQwIiwic3RyaW5nX29mX3ByZWRpY2F0ZV9pbmZvIiwicGkiLCJhZyQxIiwiY29tcGFyZSIsInByaW50IiwiZW1wdHkiLCJpdGVyIiwiaGFzaCIsInByZWRpY2F0ZSIsImxpZnQiLCJwcmVkaWNhdGVfaWQiLCJ0YWIiLCJmaW5kX2RlZmF1bHQiLCJkZWYiLCJmaW5kX29wdGlvbiIsIm1lbSIsInJlY3ljbGUiLCJwcmVkaWNhdGVfbWF4IiwiZW1wdHkkMCIsIml0ZXIkMCIsImZpbmRfZGVmYXVsdCQwIiwiZmluZF9vcHRpb24kMCIsIm1lbSQwIiwiYWRkJDAiLCJjYXVzYWwiLCJ3ZWFrIiwic3Ryb25nIiwibWluX2xldmVsIiwiaGlnaGVzdCIsImhpZ2giLCJhYm92ZV9hdmVyYWdlIiwiYXZlcmFnZSIsImJlbGxvd19hdmVyYWdlIiwibG93IiwibG93ZXN0Iiwic3RyaW5nX29mX2xldmVsIiwibGV2ZWwiLCJsb3dlciIsImhpZ2hlciIsIm5fc3RvcnkiLCJuX2JyYW5jaCIsInN0YXJ0IiwiaW5wcm9ncmVzcyIsInN1Y2Nlc3MiLCJmYWlsbHVyZSIsImludF9vZl9qc29uIiwibWVzc2FnZV90b19qc29uIiwicHJvZ3Jlc3NfYmFyIiwib25lX2NvbXByZXNzaW9uIiwibG9nX2luZm9fdG9fanNvbiIsIm5ld19zdG9yeSIsImludCQwIiwibWVzc2FnZV9vZl9qc29uIiwieCQzIiwibG9nX2luZm9fb2ZfanNvbiIsImwkMSIsImwkMiIsIngkMSIsImwkMyIsIngkMiIsInAkMCIsImdldF9jYXVzYWxfdHJhY2UiLCJnZXRfY2F1c2FsX3RyYWNlX29ubHkiLCJnZXRfd2Vha19jb21wcmVzc2lvbiIsImdldF9zdHJvbmdfY29tcHJlc3Npb24iLCJnZXRfY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIiwiYnVpbGRfcGFyYW1ldGVyIiwiY2FsbGVkX2Zyb20iLCJub25lIiwic2VuZF9tZXNzYWdlIiwibG9nX3N0ZXBfY2hhbm5lbCQwIiwib3V0X2NoYW5uZWxfcHJvZmlsaW5nJDAiLCJvdXRfY2hhbm5lbF9lcnIkMCIsIm91dF9jaGFubmVsJDAiLCJvdXRfc2VydmVyIiwic2VydmVyIiwiY2hhbm5lbCIsImxvZ19zdGVwX2NoYW5uZWwkMSIsIm91dF9jaGFubmVsX3Byb2ZpbGluZyQxIiwib3V0X2NoYW5uZWxfZXJyJDEiLCJvdXRfY2hhbm5lbCQxIiwib3V0X3NlcnZlciQwIiwic2V0X2NvbXByZXNzaW9uX3dlYWsiLCJzZXRfY29tcHJlc3Npb25fc3Ryb25nIiwic2V0X2NvbXByZXNzaW9uX25vbmUiLCJpbml0X2hhbmRsZXIiLCJuX3J1bGVzIiwicnVsZV9uYW1lX2NhY2hlIiwiciIsIm5fYWdlbnRzIiwiYWdlbnRfbmFtZV9jYWNoZSIsInN0ZXBzX2J5X2NvbHVtbiIsInN0cmluZ19vZl9leG4iLCJnZXRfcHJpb3JpdGllcyIsInNldF9maXJzdF9zdG9yeV9wZXJfb2JzIiwic2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMiLCJnZXRfYWxsX3N0b3JpZXNfcGVyX29icyIsImdldF9kZWJ1Z2dpbmdfbW9kZSIsInNldF9kZWJ1Z2dpbmdfbW9kZSIsImdldF9sb2dfc3RlcCIsInNldF9sb2dfc3RlcCIsImdldF9sb2dnZXIiLCJzZXRfbG9nZ2VyIiwiZm10IiwiZ2V0X291dF9jaGFubmVsIiwic2V0X291dF9jaGFubmVsIiwiZ2V0X2RlYnVnZ2luZ19jaGFubmVsIiwic2V0X2RlYnVnZ2luZ19jaGFubmVsIiwiZ2V0X2thc2FfcGFyYW1ldGVycyIsInNldF9rYXNhX3BhcmFtZXRlcnMiLCJwYXJhbWV0ZXIkMCIsImRvX3dlX3VzZV9idWNrZXRfc29ydCIsInVzZV9idWNrZXRfc29ydCIsInVzZV9mdXNpb25fc29ydCIsImFsd2F5c19kaXNhbWJpZ3VhdGUiLCJzZXRfYWx3YXlzX2Rpc2FtYmlndWF0ZSIsImRvX25vdF9ib3VuZF9pdHRlcmF0aW9ucyIsInNldF9pdHRlcmF0aW9uX2JvdW5kIiwiZ2V0X2JvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyIiwiZ2V0X3Byb2ZpbGluZ19sb2dnZXIiLCJzdHJpbmdfb2ZfcnVsZV9pZCIsInN0cmluZ19vZl9hZ2VudF9pZCIsImdldF9wcmVkaWNhdGVfbWFwIiwiZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQiLCJnZXRfYmxhY2tsaXN0X2V2ZW50cyIsImlzX3NlcnZlcl9tb2RlIiwiZ2V0X3NlcnZlcl9jaGFubmVsIiwic2h1dF9kb3duX3NlcnZlcl9jaGFubmVsIiwiaXNfc2VydmVyX2NoYW5uZWxfb24iLCJzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJkdW1wX2pzb24iLCJtZXNzYWdlIiwicmVzZXRfcHJvZ3Jlc3NfYmFyIiwicmVzZXRfY3VycmVudF9waGFzZV90aXRsZSIsInNldF9zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJzZXRfcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSIsInNldF9zYXZlX3Byb2dyZXNzX2JhciIsInNldF9yZXNldF9wcm9ncmVzc19iYXIiLCJzYXZlX2Vycm9yX2xvZyIsInNldF9zYXZlX2Vycm9yX2xvZyIsInB1c2hfanNvbiIsImpzb24iLCJyZWYiLCJwb3BfanNvbiIsImVsdF9vcHQiLCJmaWZvIiwiZGVidWdfbW9kZSIsImNvbXBvc2Vfd2l0aF9oYW5kbGVyIiwiZW1wdHlfc2lkZV9lZmZlY3QiLCJzaXRlX25hbWVfb2ZfYmluZGluZ190eXBlIiwiYWdlbnRfbmFtZV9vZl9iaW5kaW5nX3R5cGUiLCJhZ2VudF9pZF9vZl9hZ2VudCIsImFnZW50X25hbWVfb2ZfYWdlbnQiLCJhZ2VudF9vZl9zaXRlIiwiYWdlbnRfaWRfb2Zfc2l0ZSIsImFnZW50X25hbWVfb2Zfc2l0ZSIsInNpdGVfbmFtZV9vZl9zaXRlIiwiZ2V0X2dlbl9vZl9yZWZpbmVkX3N0ZXAiLCJnZXRfdGltZV9vZl9yZWZpbmVkX3N0ZXAiLCJnZXRfaWRfb2ZfcmVmaW5lZF9zdGVwIiwiYnVpbGRfZ3JpZCIsImVtcHR5X3NldCIsInNpZGUiLCJzdWJzIiwic2lkZV9lZmZlY3QiLCJtYXliZV9zaWRlX2VmZmVjdCIsInNlIiwidHJhbnNsYXRlIiwiaWQiLCJldmVudCQwIiwic2lkZV9lZmZlY3RzX2RzdCIsImluZm8kMCIsImV2ZW50JDEiLCJpZCQwIiwiZXZlbnQkMiIsInNpZGVfZWZmZWN0c19kc3QkMCIsImFjdGlvbnMkMCIsImluZm8kMSIsImlkJDEiLCJ0ZXN0cyQwIiwiY2xlYW5fZXZlbnRzIiwicHJpbnRfc2lkZV9lZmZlY3QiLCJsb2ciLCJzaWRlX2VmZmVjdF9vZl9saXN0IiwibGV2ZWxfb2ZfZXZlbnQiLCJwcmlvcml0eV9vcHQiLCJwcmlvcml0aWVzIiwicHJpb3JpdHkiLCJhZ19pZCIsImRpc2FtYmlndWF0ZSIsImV2ZW50X2xpc3QiLCJtYXBwaW5nIiwidXNlZCIsIm1heF9pZCIsIm1hcHBpbmckMCIsInVzZWQkMCIsIm1heF9pZCQwIiwiYSQxIiwiZXZlbnRfbGlzdF9yZXYiLCJjb252ZXJ0X2luaXQiLCJyZW1hbmVudCIsInN0ZXBfbGlzdCIsImFjdGlvbl9saXN0IiwicmVjdXIiLCJhY2MiLCJzb3VwIiwiYWNjJDIiLCJzaXRlX2xpc3QiLCJzb3VwJDAiLCJ0aGlzJDAiLCJzdGFuZGFsb25lIiwidGhpcyQxIiwibWFwIiwidSIsImFnZW50X2luZm8iLCJhc19pbml0IiwicmVzdHJpY3Rpb25fbWFwIiwiYWdpZCIsInJlc3RyaWN0aW9uIiwidW5iaW5kIiwicmVtIiwic19uYW1lIiwiYWdfaW5mbyIsImFnX2luZm8kMCIsInJlbWFuZW50JDAiLCJiaW5kIiwic3BsaXRfaW5pdCIsInJlZmluZWRfc3RlcF9saXN0IiwicmVmaW5lZF9zdGVwIiwiYWRkX2luX3Njb3BlIiwic2NvcGUiLCJvbGRfc2V0IiwibmV3X3NldCIsImRlYWxfd2l0aF90ZXN0cyIsImZpbGxfc2lwaG9uIiwicmV2X3RyYWNlIiwic2NvcGUkMSIsInNjb3BlJDAiLCJyZWZpbmVkX3N0ZXBfd2l0aF9zY29wZV9saXN0Iiwic3RhdGUiLCJzdGF0ZV9yZWYiLCJhZ19pbmZvJDEiLCJyZW1hbmVudCQxIiwic2V0JDAiLCJhZ2VudF9pZF9pbl9vYnMiLCJwcmVkaWNhdGVzX29mX3NpZGVfZWZmZWN0cyIsInNpZGVzIiwic19pZCIsImluaXRfY3V0IiwiZmluYWxpemVfY3V0IiwiY3V0X3N0ZXAiLCJuX2N1dCIsImtlcHQiLCJzZWVuIiwiYWN0aW9uIiwiaW50ZXJmYWNlJDAiLCJsaXN0JDAiLCJlbHQiLCJzZWVuJDAiLCJxMCIsImFnX2lkJDAiLCJzMiIsInMxIiwicTEiLCJ0MSIsImtlcHQkMCIsInRlc3QiLCJhZ2VudCIsInByZWRpY2F0ZV9pbmZvIiwic2VlbiQxIiwic2VlbiQyIiwiY3V0X3Jldl90cmFjZSIsInJldl9ldmVudF9saXN0IiwidHJhY2UiLCJjbGVhbiIsImNvbHVtbiIsImJsYWNrYm9hcmQiLCJ0YWlsIiwiaGVhZCIsImNvbHVtbiQwIiwiYmxhY2tib2FyZCQwIiwicG9wIiwicHJlZGljYXRlX2xpc3QiLCJibGFja2JvYXJkJDEiLCJuX3N0ZXBzIiwic3RlcCIsImJsYWNrYm9hcmQkMyIsInByZV9ldmVudCIsInRlc3RfbGlzdCIsInVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyIsImJ1aWxkX21hcF90ZXN0IiwicHJlZGljYXRlX2lkJDAiLCJwcmVkaWNhdGVfaWQkMSIsImFnX2lkJDEiLCJzaXRlX2lkJDAiLCJwcmVkaWNhdGVfaWQkMiIsImFnX2lkJDIiLCJzaXRlX2lkJDEiLCJwcmVkaWNhdGVfaWQkMyIsImFnX2lkMSIsImFnX2lkMiIsInNpdGVfaWQxIiwic2l0ZV9pZDIiLCJwcmVkaWNhdGVfaWQxIiwicHJlZGljYXRlX2lkMiIsInRlc3RfbWFwIiwiYm9vbF9jcmVhdGlvbiIsImFjdGlvbl9tYXAiLCJsaXN0MiIsImxpc3QxIiwibGlzdDEkMCIsImxpc3QyJDAiLCJhZ2VudF9uYW1lMSIsImFnZW50X25hbWUyIiwiczIkMCIsInMxJDAiLCJhZ19pZDEkMCIsImFnX2lkMiQwIiwiYWdlbnRfbmFtZTIkMCIsInNpdGVfaWQxJDAiLCJzaXRlX2lkMiQwIiwicHJlZGljYXRlX2lkMSQwIiwiYm9vbF9jcmVhdGlvbiQwIiwiYm9vbCQwIiwiYm9vbF9jcmVhdGlvbiQxIiwiYm9vbCQxIiwidmFsdWUiLCJpc19yZW1vdmVfYWN0aW9uIiwidGVzdF9tYXAkMCIsIm1lcmdlZF9tYXAiLCJtYXAkMCIsImFjdGlvbiQwIiwidGVzdCQwIiwidGVzdCQxIiwiYWN0aW9uJDEiLCJtZXJnZWRfbWFwJDAiLCJuc2lkIiwibW9kX3dpdGhvdXRfdGVzdCIsIm5fbW9kaWZpY2F0aW9ucyIsIm9sZF9saXN0IiwidiIsIm9sZF92YWx1ZSIsIm5ld192YWx1ZSIsIm1vZF93aXRob3V0X3Rlc3QkMCIsIm1vZF93aXRob3V0X3Rlc3QkMSIsImJvb2xfYWN0aW9uIiwibl9tb2RpZmljYXRpb25zJDAiLCJwcmVfc3RlcHNfYnlfY29sdW1uIiwiYmxhY2tib2FyZCQyIiwicHJlZGljYXRlX2xpc3QkMCIsInByZWRpY2F0ZV9saXN0JDEiLCJ5JDAiLCJjYW5kaWRhdGVzIiwiZWlkYiIsImVpZGEiLCJjb2x1bW4kMSIsImNvbHVtbiQyIiwidG9fcG9wIiwiZTIiLCJlMSIsImJsYWNrYm9hcmQkNCIsImJsYWNrYm9hcmQkNSIsImVycm9yJDMiLCJrJDIiLCJsaXN0JDEiLCJrJDEiLCJ3YXJuIiwicG9zIiwiZXhuIiwiZGVmYXVsdCQwIiwiemVyb19zdGVwX2lkIiwiZHVtbXlfc3RlcF9pZCIsImludF9vZl9zdGVwX2lkIiwic3RlcF9pZF9vZl9pbnQiLCJkZWNfc3RlcF9pZCIsImluY19zdGVwX2lkIiwiemVyb19zdGVwX3Nob3J0X2lkIiwiZHVtbXlfc3RlcF9zaG9ydF9pZCIsImludF9vZl9zdGVwX3Nob3J0X2lkIiwic3RlcF9zaG9ydF9pZF9vZl9pbnQiLCJpbmNfc3RlcF9zaG9ydF9pZCIsImRlY19zdGVwX3Nob3J0X2lkIiwid2Vha2VuaW5nIiwiZGVmaW5lZCIsInVuZGVmaW5lZCQwIiwidW5rbm93biIsImlzX3Vua25vd24iLCJpc191bmRlZmluZWQiLCJjb21wYXJlJDAiLCJwcmludCQwIiwiY29tcGFyZSQxIiwicHJpbnQkMSIsImxldmVscyIsImdldF9wcmVfY29sdW1uX21hcF9pbnYiLCJnZXRfcHJlX2V2ZW50IiwicHJpbnRfcHJlZGljYXRlX2luZm8iLCJpJDAiLCJpJDEiLCJpbnQ0IiwiaW50MyIsImludDIiLCJpbnQyJDAiLCJpbnQkMSIsImludDIkMSIsImludCQyIiwiaW50MyQwIiwiaW50MiQyIiwiaW50JDMiLCJpZDIiLCJpZDEiLCJwcmludF9rbm93biIsInN0cmluZ19vZl9wcmVkaWNhdGVfdmFsdWUiLCJhZ2VudF9pZCIsImludGVybmFsX3N0YXRlIiwiYWdlbnRfbmFtZSIsImFnZW50X2lkJDAiLCJwcmludF9wcmVkaWNhdGVfdmFsdWUiLCJwcmludF9wcmVkaWNhdGVfaWQiLCJwcmludF9wcmVibGFja2JvYXJkIiwibmV2ZW50cyIsInNlaWQiLCJzdHJpY3RseV9tb3JlX3JlZmluZWQiLCJtb3JlX3JlZmluZWQiLCJjb25qIiwiY29tcGF0aWJsZSIsImRpc2p1bmN0aW9uIiwiYWxsb2NhdGUiLCJtYXBfaW52Iiwic2lkJDAiLCJzaWQiLCJjcmVhdGVfYWdlbnQiLCJuZXdfbGlzdCIsImZyZWVfYWdlbnQiLCJmcmVlX2FnZW50X2lmX2l0X2V4aXN0cyIsInByZWRpY2F0ZXNfb2ZfYWN0aW9uX25vX3N1YnMiLCJsb2dfaW5mbyQzIiwiZXJyb3IkNCIsImxvZ19pbmZvJDQiLCJlcnJvciQ1IiwiYmxhY2tib2FyZCQ2IiwibG9nX2luZm8kNSIsImVycm9yJDYiLCJibGFja2JvYXJkJDciLCJsb2dfaW5mbyQ2IiwiZXJyb3IkNyIsInByZWRpY2F0ZV9pZDIkMCIsImJsYWNrYm9hcmQkOCIsImxvZ19pbmZvJDciLCJlcnJvciQ4IiwiYmxhY2tib2FyZCQ5IiwibG9nX2luZm8kOCIsImVycm9yJDkiLCJibGFja2JvYXJkJDEwIiwibG9nX2luZm8kOSIsImVycm9yJDEwIiwiYmxhY2tib2FyZCQxMSIsImxvZ19pbmZvJDEwIiwiZXJyb3IkMTEiLCJwcmVkaWNhdGVpZCIsImJsYWNrYm9hcmQkMTIiLCJlcnJvciQxMiIsInByZWRpY2F0ZXNfb2ZfYWN0aW9uX3N1YnMiLCJwcmVkaWNhdGVzX29mX2FjdGlvbiIsInByZWRpY2F0ZXNfb2ZfdGVzdCIsInNpdGVfbmFtZSIsInR5cGVfb2Zfc3RlcCIsImdldF9sZXZlbF9vZl9ldmVudCIsImluaXRfZmljdGl0aW91c19hY3Rpb24iLCJpbml0X3N0ZXAiLCJuc2lkJDAiLCJhZGRfZmljdGl0aW91c19hY3Rpb24iLCJ2YWx1ZSQwIiwicHJlZGljYXRlX3RhcmdldF9pZCIsInNuYW1lIiwicHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhIiwiYnQiLCJwb3RlbnRpYWxfdGFyZ2V0IiwiYmluZGluZ19zdGF0ZSIsImZvcm1lcl9zdGF0ZXMiLCJidCQwIiwiaW5pdF9kYXRhX3N0cnVjdHVyZV9zdHJvbmciLCJhZGRfc2l0ZV9pbl9vdGhlcl90ZXN0X2xpbmtzIiwiZGF0YV9zdHJ1Y3R1cmUiLCJhZGRfc2l0ZV9pbl9vdGhlcl9hY3Rpb25fbGlua3MiLCJkYXRhX3N0cnVjdHVyZSQwIiwiYWRkX3N1cmVfdGVzdCIsImFkZF9zdWJzX3Rlc3QiLCJhZGRfc3Vic190ZXN0X2xpbmsiLCJsaW5rIiwibGluayQwIiwiZGF0YV9zdHJ1Y3R1cmUkMSIsImFkZF9zdXJlX2FjdGlvbiIsImFkZF9zdWJzX2FjdGlvbiIsImFkZF9zdWJzX2FjdGlvbl9saW5rIiwiYWRkX3N0ZXBfc3Ryb25nIiwic3RlcF9pZCIsImFnMV9pZCIsImFnMl9pZCIsInNpdGUxX2lkIiwic2l0ZTJfaWQiLCJ0ZXN0ZWRfc2l0ZXMiLCJtb2Rfc2l0ZXMiLCJwcmlvcml0eV9zaXRlcyIsInN1cmVfYWdlbnRzIiwic3VyZV9hZ2VudCIsImFnZW50MSIsImFnZW50MiIsIm1peF9zaXRlMSIsIm1peF9zaXRlMiIsImRhdGFfc3RydWN0dXJlJDIiLCJkYXRhX3N0cnVjdHVyZSQzIiwiYWdlbnQkMCIsInNpdGVfbmFtZTEiLCJzaXRlX25hbWUyIiwid2VhazEiLCJ3ZWFrMiIsImFnZW50JDEiLCJkYXRhX3N0cnVjdHVyZSQ0IiwiZGF0YV9zdHJ1Y3R1cmUkNSIsImRhdGFfc3RydWN0dXJlJDYiLCJhMiIsImExIiwic2lkZV9lZmZlY3QkMCIsImFjdGlvbl9saXN0JDAiLCJ0ZXN0X2xpc3QkMCIsImZpY3RpdGlvdXNfbG9jYWxfbGlzdCIsImZpY3RpdGlvdXNfbGlzdCIsIm1peHR1cmVfYWdlbnRfaWRfbXV0ZXgiLCJydWxlX2FnZW50X2lkX3N1YnMiLCJydWxlX2FnZW50X2lkX211dGV4IiwiaW5pdF9zdGVwJDAiLCJydWxlX2FnZW50X2lkX211dGV4JDAiLCJmaWN0aXRpb3VzX2xvY2FsX2xpc3QkMCIsImZpY3RpdGlvdXNfbGlzdCQwIiwicHJlZGljYXRlX2luZm8kMCIsInJ1bGVfYWdlbnRfaWRfc3VicyQwIiwiaW5pdF9zdGVwJDEiLCJpbml0X3N0ZXAkMiIsInJ1bGVfYWdlbnRfaWRfc3VicyQxIiwibWl4dHVyZV9hZ2VudF9pZF9tdXRleCQwIiwiaW5pdF9zdGVwJDMiLCJsaW5rc19tdXRleCIsImxpbmtzX211dGV4JDAiLCJmaWN0aXRpb3VzX2xpc3QkMSIsImJ1aWxkX21hcCIsImFkZF9zdGF0ZSIsImZhZGQiLCJuc2lkX3ZvaWQiLCJuc2lkX25leHQiLCJzaWRlX2VmZmVjdCQxIiwidGVzdF9saXN0JDEiLCJwb3RlbnRpYWxfdGFyZ2V0JDAiLCJydWxlX2FnX2lkIiwiZmljdGl0aW91c19saXN0JDIiLCJzaWRlX2VmZmVjdCQyIiwic3RlcF9pZCQwIiwicHJlX3N0ZXBzX2J5X2NvbHVtbiQwIiwib2JzZXJ2YWJsZV9saXN0JDAiLCJibGFja2JvYXJkJDE0Iiwibmxpc3QiLCJtaXh0dXJlX2FnX2lkIiwicGlkX3J1bGVfYWdlbnRfbXV0ZXgiLCJwaWRfcnVsZV9hZ2VudF9tdXRleCQwIiwidGVzdF9tYXAkMSIsImFjdGlvbl9tYXAkMCIsIm1faWQiLCJhY3Rpb25fbWFwJDIiLCJ0ZXN0X21hcCQyIiwibmxpc3QkMCIsIm1lcmdlZF9tYXAkMSIsIm1lcmdlZF9tYXAkMiIsImxpbmtfbXV0ZXgiLCJydWxlX2FnX2lkMiIsInJ1bGVfYWdfaWQxIiwibF9hZ18xIiwibF9hZ18yIiwibWl4dHVyZV9hZ18xIiwic3VicyQwIiwibWl4dHVyZV9hZ18yIiwiYWN0aW9uX2xpc3QkMSIsIm1faWQkMCIsImZpY3RpdGlvdXNfbGlzdCQzIiwidW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzJDAiLCJmaWN0aXRpb3VzX2xvY2FsX2xpc3QkMSIsImZpY3RpdGlvdXNfbGlzdCQ0IiwibG9nX2luZm8kMTEiLCJlcnJvciQxMyIsIm1lcmdlZF9tYXAkMyIsIm1lcmdlZF9tYXAkNCIsInNpZGVfZWZmZWN0JDMiLCJvYnNlcnZhYmxlX2xpc3QiLCJibGFja2JvYXJkJDEzIiwiYWRkX3N0ZXAiLCJmaW5hbGl6ZSIsImhldXJpc3RpYyIsImFnZW50c19pbl9vYnMiLCJuX3ByZWRpY2F0ZXMiLCJldmVudF9saXN0X29mX3ByZWRpY2F0ZSIsIm5fZXZlbnRzX3Blcl9wcmVkaWNhdGUiLCJuX2V2ZW50cyIsIm1hbmRhdG9yeV9ldmVudHMiLCJnZXRfZmljdGl0aW91c19vYnNlcnZhYmxlIiwiZ2V0X3NpZGVfZWZmZWN0IiwiaWdub3JlIiwiZmFpbCIsImlzX2lnbm9yZWQiLCJpc19mYWlsZWQiLCJpc19zdWNjZWVkZWQiLCJudWxsX3BvaW50ZXIiLCJwb2ludGVyX2JlZm9yZV9ibGFja2JvYXJkIiwiaXNfYmVmb3JlX2JsYWNrYm9hcmQiLCJidWlsZF9wb2ludGVyIiwicHJlZGljYXRlX2lkX29mX2Nhc2VfYWRkcmVzcyIsImlzX2JvdW5kYXJ5IiwiZXZlbnRfYWRkcmVzcyIsImJ1aWxkX2V2ZW50X2Nhc2VfYWRkcmVzcyIsImlzX2V4aXN0X2V2ZW50Iiwibl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4iLCJuX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl8iLCJwb2ludGVyX3RvX25leHQiLCJ2YWx1ZV9hZnRlciIsInBvaW50ZXJfdG9fcHJldmlvdXMiLCJuX3VucmVzb2x2ZWRfZXZlbnRzIiwibl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCIsImV4aXN0Iiwic3RyaW5nX29mX3BvaW50ZXIiLCJwcmVkaWNhdGVfdmFsdWUiLCJwb2ludGVyIiwiYm9vbGVhbiQwIiwiY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkIiwicHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUiLCJjYXNlX3ZhbHVlIiwieSQxIiwibGluZSIsImZpbGUiLCJkdW1teV9jYXNlX2luZm9fc3RhdGljIiwiZHVtbXlfY2FzZV9pbmZvX2R5bmFtaWMiLCJjb3JyZWN0X3BvaW50ZXIiLCJpbnRfc2VpZCIsImR1bW15X2Nhc2VfaW5mbyIsInByb2ZpbGluZ19pbmZvIiwiZ2V0X2V2ZW50IiwiZ2V0X25fZWlkIiwiZ2V0X3N0YWNrX2RlcHRoIiwiZm9yY2VkX2V2ZW50cyIsInNpZGVfZWZmZWN0X29mX2V2ZW50IiwiY2FzZV9saXN0X29mX2VpZCIsImdldF9jYXNlIiwiY2FzZV9hZGRyZXNzIiwiZ2V0X3N0YXRpYyIsImFkZHJlc3MiLCJjYXNlJDAiLCJzdGF0aWMkMCIsInByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyIsImdldF9ucHJlZGljYXRlX2lkIiwiZ2V0X25fdW5yZXNvbHZlZF9ldmVudHNfb2ZfcGlkIiwiZ2V0X25fdW5yZXNvbHZlZF9ldmVudHNfb2ZfcGlkJDAiLCJnZXRfbl91bnJlc29sdmVkX2V2ZW50cyIsImZvbGxvd19wb2ludGVyX2Rvd24iLCJmb2xsb3dfcG9pbnRlcl91cCIsImdldF9maXJzdF9saW5rZWRfZXZlbnQiLCJnZXRfbGFzdF9saW5rZWRfZXZlbnQiLCJwcmludF9rbm93bl9jYXNlIiwicHJlZiIsImluZiIsInN1ZiIsInN0cmluZ19vZl92YWx1ZSIsInBiIiwicHJpbnRfYXNzaWdubWVudCIsImkkMiIsImkkMyIsImkkNCIsImkkNSIsImkkNiIsImkkNyIsImxvZyQwIiwiaSQ4IiwicHJpbnRfYmxhY2tib2FyZCIsImVyciIsImFycmF5IiwiaiQyIiwiaiQwIiwic3RhdHVzIiwiaiQxIiwic3RhY2siLCJlbXB0eV9zdGFjayIsImV4aXN0X2Nhc2UiLCJzZXRfY2FzZSIsImNhc2VfYWRkcmVzcyQwIiwiY2FzZV92YWx1ZSQwIiwiY2FzZV9hZGRyZXNzJDEiLCJvbGQkMCIsImNhc2VfdmFsdWUkMSIsImNhc2VfYWRkcmVzcyQyIiwib2xkJDEiLCJjYXNlX3ZhbHVlJDIiLCJsZXZlbCQwIiwiY2FzZV9hZGRyZXNzJDMiLCJvbGQkMiIsImNhc2VfdmFsdWUkMyIsImlzX3NlbGVjdGVkX2V2ZW50IiwiZ2V0IiwiY2FzZSQxIiwiY2FzZSQyIiwiY2FzZV9hZGRyZXNzJDQiLCJjYXNlX2FkZHJlc3MkNSIsImNhc2UkMyIsImx2bCIsImNhc2VfYWRkcmVzcyQ2IiwiY2FzZSQ0IiwiZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIiwicHJlZml4IiwiZmlsZV9uYW1lIiwiZGVzY19jaGFuIiwicm93X29mX3ByZWNvbmRpdGlvbiIsImNvbG9ycyIsImJhY2tjb2xvciIsImNvbG9yIiwiY29sb3IkMCIsInRleHRjb2xvciIsImdldGNlbGwiLCJyb3ciLCJjb2wiLCJwcmludF9jYXNlIiwiY29sb3JfZm9udCIsImNvbG9yX2JhY2siLCJwcmludF9jYXNlX2Z1biIsInBfaW5mbyIsInJvd19wcmVjb25kaXRpb24iLCJyb3dfcG9zdGNvbmRpdGlvbiIsIm1heWJla2VwdCIsImVpZCQxIiwic3RyaW5nX2VpZCIsInZhbHVlX2JlZm9yZSIsImNhbmQiLCJzdHJpbmdfZWlkJDAiLCJzdGFjayQwIiwic3RhY2skMSIsInJlY29yZF9tb2RpZiIsInJlZmluZSIsIm92ZXJ3cml0ZSIsImRlYyIsImJyYW5jaCIsInJlc2V0X2xhc3RfYnJhbmNoaW5nIiwicmVzZXRfaW5pdCIsImlzX21heGltYWxfc29sdXRpb24iLCJ0cmFuc2xhdGVfYmxhY2tib2FyZCIsInN0ZXBfYXJyYXkiLCJzaWRlX2FycmF5IiwicHJpbnRfc3RhY2siLCJldmVudF9saXN0JDIiLCJldmVudF9hcnJheSIsImtlcHRfZXZlbnRzIiwia2VwdF9ldmVudHMkMCIsImtlcHRfZXZlbnRzJDEiLCJldmVudF9saXN0JDAiLCJldmVudF9jYXNlX2FkZHJlc3MiLCJwb2ludGVyJDAiLCJwcmV2X2V2ZW50X2Nhc2VfYWRkcmVzcyIsInByZXZfY2FzZSIsInByZXZfZWlkIiwicG9pbnRlciQxIiwicHJldl9laWQkMCIsImtlcHRfZXZlbnRzJDIiLCJldmVudF9saXN0JDEiLCJldmVudHNfdG9fa2VlcCIsIm5fZXZlbnRzX3JlbW92ZWQiLCJjdXRfY2F1c2FsX2Zsb3ciLCJpbXBvcnQkMCIsInByZWJsYWNrYm9hcmQiLCJyZWZpbmVkX2V2ZW50IiwicHJlYmxhY2tib2FyZCQwIiwidG9feGxzIiwicHJlYmxhY2tib2FyZCQxIiwicHJlYmxhY2tib2FyZCQzIiwidG9feGxzJDAiLCJzdHJpbmckMCIsInByZWJsYWNrYm9hcmQkNCIsInByZWJsYWNrYm9hcmQkMiIsInByZV9ibGFja2JvYXJkIiwiZXZlbnRfY2FzZV9saXN0Iiwibl9zZWlkIiwidW5zb2x2ZWRfYnlfbGV2ZWwiLCJsZXZlbF9vcHQkMSIsImxldmVsX29wdCIsIndlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZSIsImxldmVsX29wdCQwIiwid2VpZ3RoX29mX3ByZWRpY2F0ZV9pZCIsImxhc3RfbGlua2VkX2V2ZW50X29mX3ByZWRpY2F0ZSIsInBfaWQkMSIsInBfaWQiLCJzaXplJDAiLCJzZWlkJDEiLCJ0cmlwbGUiLCJzaXplJDEiLCJ1bnNvbHZlZCIsInNlaWQkMCIsInByZWRfc2l6ZSIsInBfaWQkMCIsInVuc29sdmVkX2J5X2xldmVsJDAiLCJsZXZlbCQxIiwibWFwJDEiLCJsb2dfaW5mbyQxMiIsImZpY3RpdGlvdXNfb2JzIiwibG9nX2luZm8kMTMiLCJsb29rX3VwX2Zvcl9iZXR0ZXJfY3V0IiwibG9va19kb3duX2Zvcl9iZXR0ZXJfY3V0IiwiZHVtbXlfdXBkYXRlX29yZGVyIiwiZm9yYmlkZGVuX2V2ZW50cyIsInBhcmFtdGVyIiwiZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50X29uX3BpIiwiZmlyc3QiLCJzdG9wIiwia19pbml0Iiwia19lbmQiLCJnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnQiLCJuZXh0X2Nob2ljZSIsInByaW9yaXR5JDAiLCJuX3BfaWQiLCJsZXZlbF9vcHQkMiIsImJlc3QkMSIsImJlc3QiLCJncmFkZSIsImJlc3QkMCIsInN0ZXAkMCIsImV2ZW50X2lkIiwiZXZlbnRfaWQkMCIsInByb3BhZ2F0ZV9kb3duIiwiaW5zdHJ1Y3Rpb25fbGlzdCIsInByb3BhZ2F0ZV9saXN0IiwibmV4dF9ldmVudF9jYXNlX2FkZHJlc3MiLCJib29sMiIsIm5leHRfYWN0aW9uIiwibmV4dF90ZXN0IiwicHJlZGljYXRlX3ZhbHVlJDAiLCJjb25qJDAiLCJsb2dfaW5mbyQxNCIsImxvZ19pbmZvJDE1IiwibmV4dF9hY3Rpb24kMCIsIm5leHRfdGVzdCQwIiwibmV4dF9laWQiLCJsb2dfaW5mbyQxNiIsImxvZ19pbmZvJDE3IiwibG9nX2luZm8kMTgiLCJsb2dfaW5mbyQxOSIsImNvbXB1dGVkX25leHRfcHJlZGljYXRlX3ZhbHVlJDAiLCJsb2dfaW5mbyQyNCIsImxvZ19pbmZvJDI1IiwiY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUiLCJsb2dfaW5mbyQyMCIsImxvZ19pbmZvJDIxIiwibG9nX2luZm8kMjIiLCJsb2dfaW5mbyQyMyIsImxhc3RfY2hhbmNlX3VwIiwiZXZlbnRfY2FzZV9hZGRyZXNzJDAiLCJwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzcyIsInByZXZpZXdfY2FzZV9hZGRyZXNzIiwicHJldmlld19jYXNlX3ZhbHVlIiwicHJldmlld19wcmVkaWNhdGVfdmFsdWUiLCJwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzcyQwIiwicHJldmlld19jYXNlX2FkZHJlc3MkMCIsInByZXZpZXdfY2FzZV92YWx1ZSQwIiwicHJldmlld19wcmVkaWNhdGVfdmFsdWUkMCIsImxhc3RfY2hhbmNlX3VwJDAiLCJwcm9wYWdhdGVfdXAiLCJsb2dfaW5mbyQzMSIsIm5ld19wcmVkaWNhdGVfdmFsdWUiLCJwcmV2IiwibG9nX2luZm8kMjkiLCJlcnJvciQxNiIsImxvZ19pbmZvJDMwIiwibmV3X3Rlc3QiLCJlcnJvciQxNCIsIm5ld19wcmVkaWNhdGVfdmFsdWUkMCIsImxvZ19pbmZvJDI2IiwiZXJyb3IkMTUiLCJsb2dfaW5mbyQyNyIsImxvZ19pbmZvJDI4IiwibG9nX2luZm8kMzIiLCJsb2dfaW5mbyQzMyIsInByb3BhZ2F0ZSIsImN1dF9jYXNlIiwicG9pbnRlcl9uZXh0IiwicG9pbnRlcl9wcmV2aW91cyIsInJlc3VsdCIsImxvb2tfZG93biIsImxpc3RfdmFsdWVzIiwiY2EiLCJuZXh0X2Nhc2UiLCJwcm9wYWdhdGVfbGlzdCQwIiwibG9va19kb3duJDAiLCJyZWZpbmVfdmFsdWVfYWZ0ZXIiLCJyZWZpbmVfdmFsdWVfYmVmb3JlIiwiZGlzY2FyZF9jYXNlIiwicmVzdWx0JDAiLCJpbnN0cnVjdGlvbl9saXN0JDAiLCJwcm9wYWdhdGVfbGlzdCQxIiwiZ2VuX2V2ZW50IiwiZl9jYXNlIiwic3VjY2VzcyQxIiwic3VjY2VzcyQwIiwic3VjY2VzczIiLCJzdWNjZXNzJDIiLCJhcHBseV9pbnN0cnVjdGlvbiIsImluc3RydWN0aW9uIiwiaW5zdHJ1Y3Rpb25fbGlzdCQzIiwicHJvcGFnYXRlX2xpc3QkMiIsInJlc3VsdCQxIiwiaW5zdHJ1Y3Rpb25fbGlzdCQxIiwiaW5zdHJ1Y3Rpb25fbGlzdCQyIiwic3RlcF9pZCQxIiwiYWRkcmVzcyQwIiwiZW1wdHlfY2hvaWNlX2xpc3QiLCJhc3NpZ25fcmVzdWx0IiwiYXNzaWduX3Jlc3VsdCQwIiwiYmFja3RyYWNrIiwiY2hvaWNlX2xpc3QiLCJjaG9pY2VfbGlzdCQwIiwiY2hvaWNlX2xpc3QkMSIsInN1Ymxpc3QiLCJkZXRlY3RfaW5kZXBlbmRlbnRfZXZlbnRzIiwibGlzdF9laWQiLCJ0cmFuc2xhdGVfcmVzdWx0IiwiZmlsdGVyIiwic29sIiwic29sJDAiLCJzb2wkMSIsImV2ZW50c190b19yZW1vdmUiLCJzdWIiLCJjb21wcmVzcyIsImxpc3Rfb3JkZXIiLCJjaG9pY2VfbGlzdCQyIiwiY2hvaWNlX2xpc3QkMyIsImNob2ljZV9saXN0JDQiLCJjaG9pY2VfbGlzdCQ1IiwiY2hvaWNlIiwiY2hvaWNlX2xpc3QkNiIsImNob2ljZV9saXN0JDciLCJzdG9yeV9saXN0JDEiLCJnb29kb25lcyQxIiwidG9fdmlzaXQiLCJ0b192aXNpdCQwIiwiZ29vZG9uZXMiLCJnb29kb25lcyQwIiwiaCQxIiwidG9fdmlzaXQkMSIsImJsYWNrX2xpc3QiLCJpc19ibGFja19saXN0ZWQiLCJkdW1teV9ncmFwaCIsImNvbXBhcmVfZWx0IiwicXVpY2tfY29tcGFyZSIsInQyIiwiYXV4IiwibDIkMSIsImNvbXBhcmVfY2Fub25pYyIsImdyYXBoX29mX2dyaWQiLCJzdWNjX3NpemUiLCJsYWJlbHMiLCJjb25mbGljdF9wcmVkIiwibGlzdDIkMiIsImxpc3QyJDEiLCJsaXN0MSQxIiwiY29tcGFyZV9ub2RlIiwicHJlaGFzaCIsIndlaWdodCQyIiwiZm9ybWVyJDEiLCJmb3JtZXIiLCJ3ZWlnaHQiLCJmb3JtZXIkMCIsInd0Iiwid2VpZ2h0JDAiLCJ3ZWlnaHQkMSIsImNhbm9uaWNhbGl6ZSIsImFzc28iLCJjYW5kaWRhdGUiLCJ0b19iZWF0IiwiY2FuZGlkYXRlJDAiLCJ0b19iZWF0JDAiLCJjYW5kaWRhdGUkMSIsInFyIiwidHIiLCJ0b19iZWF0JDEiLCJ2aXNpdCIsImZyZXNoX3BvcyIsImZyZXNoX3BvcyQwIiwic2liYmxpbmcxIiwic2liYmxpbmcyIiwibSQwIiwiY2FuZGlkYXRlcyQxIiwibm90X2Jlc3QiLCJjYW5kaWRhdGVzJDAiLCJyZXNpZHVlIiwiZnJlc2giLCJlbmNvZGluZyIsInRvX2JlYXRfYWZ0ZXIiLCJub3RfYmVzdCQwIiwicmVjb3JkJDAiLCJub3RfYmVzdCQxIiwicmVjb3JkJDEiLCJyZWNvcmQkMiIsIm5vdF9iZXN0JDIiLCJ0b19iZWF0X2FmdGVyJDAiLCJzaWJibGluZzEkMCIsInRvX2JlYXQkMiIsImZyZXNoX3BvcyQxIiwidG9fYmVhdCQzIiwiZyQwIiwic2liYmxpbmcyJDAiLCJ0b19iZWF0JDQiLCJsaXN0JDIiLCJmcmVzaF9wb3MkMiIsIm1hcCQyIiwidG9fYmVhdCQ1IiwibGlzdCQzIiwic29ydF9vdXRlciIsInNvcnRfaW5uZXIiLCJjb21wYXJlJDIiLCJnZXRfY2Fubm9uaWNhbF9mb3JtIiwidGFibGUiLCJhc3NvYyIsImNhbm5vbmljIiwiY2Fubm9uaWMkMCIsInRhYmxlJDAiLCJjaG9vc2VfZnN0IiwiaW5pdF90YWJsZSIsInBhcmFtZXRlcnMiLCJhZGRfc3RvcnkiLCJwcmV0cmFjZSIsInN0b3J5X2luZm8iLCJ0YWJsZSQyIiwidGFibGUkMyIsImdyYXBoJDAiLCJwcmVoYXNoJDEiLCJsb2dnZXIkMCIsImxvZ2dlciIsIm5vZGVfa2luZCIsImRpcmVjdGl2ZXMiLCJhZGRfc3RvcnlfaW5mbyIsImFzc29fb3B0IiwiY2Fub25pYyIsInVwZGF0ZV9hc3NvYyIsImNhbm9uaWNfZm9ybSIsImF1eF9pbm5lcjIiLCJjYW5vbmljX2Zvcm0kMCIsInRyZWUiLCJ0YWJsZSQxIiwiaWQkMiIsInRhYmxlJDQiLCJhdXhfb3V0ZXIyIiwicHJlaGFzaCQwIiwiY2Fubm9uaWNfZm9ybSIsImFzc29jJDAiLCJjYW5ub25pY19mb3JtJDAiLCJpbm5lciIsInRhYmxlJDUiLCJhdXhfaW5uZXIiLCJzdWZmaXgiLCJpbm5lcl90cmVlIiwiaW5uZXJfdHJlZSQwIiwiaW5uZXJfdHJlZSQxIiwiaW5uZXJfdHJlZSQyIiwiaWQkMyIsImlkJDQiLCJhdXhfb3V0ZXIiLCJvdXRlcl90cmVlIiwiaWQkNSIsInRhYmxlJDgiLCJpZCQ3IiwiaWQkNiIsImdyYXBoJDEiLCJhc3NvYyQxIiwidGFibGUkNiIsImlubmVyJDAiLCJ0YWJsZSQ3IiwiaWQkOCIsInRhYmxlJDkiLCJpbm5lciQxIiwic3VmZml4JDAiLCJhc3NvYyQyIiwiaW5uZXIkMiIsInRhYmxlJDEwIiwib3V0ZXJfdHJlZSQwIiwib3V0ZXJfdHJlZSQxIiwiaGFzaF9saXN0IiwiZWxlbWVudHNfdG9fc3RvcmUkMiIsImVsZW1lbnRzX3RvX3N0b3JlJDMiLCJzdG9yZWRfZWxlbWVudHMkMSIsImxhc3RfZWxlbWVudCQyIiwibGFzdF9lbGVtZW50X29jY3VycmVuY2VzJDMiLCJlbGVtZW50c190b19zdG9yZSQ0IiwibGFzdF9lbGVtZW50X29jY3VycmVuY2VzJDQiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkNSIsImxhc3RfZWxlbWVudCQzIiwic3RvcmVkX2VsZW1lbnRzJDIiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkNiIsImxhc3RfZWxlbWVudCQ0IiwiZGFnIiwiZGFnJDAiLCJkYWckMSIsImRhZyQyIiwiZWxlbWVudHNfdG9fc3RvcmUiLCJlbGVtZW50c190b19zdG9yZSQwIiwic3RvcmVkX2VsZW1lbnRzIiwibGFzdF9lbGVtZW50IiwibGFzdF9lbGVtZW50X29jY3VycmVuY2VzIiwiZWxlbWVudHNfdG9fc3RvcmUkMSIsImxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyQwIiwibGFzdF9lbGVtZW50X29jY3VycmVuY2VzJDEiLCJsYXN0X2VsZW1lbnQkMCIsInN0b3JlZF9lbGVtZW50cyQwIiwibGFzdF9lbGVtZW50X29jY3VycmVuY2VzJDIiLCJsYXN0X2VsZW1lbnQkMSIsImFjYyQwIiwic29ydF9saXN0IiwibGlzdF9vdXQiLCJ0dXBsZSIsImZsYXRfbGlzdCIsImNvbXBhcmVfcGFpciIsImZsYXRfbGlzdCQwIiwiY291bnRfc3RvcmllcyIsImZvbGRfdGFibGUiLCJ3ZV9zaGFsbCIsIndlX3NoYWxsX25vdCIsImdldF9wcmV0cmFjZV9vZl90cmFjZSIsInNpemVfb2ZfcHJldHJhY2UiLCJzZXRfYW1iaWd1aXR5X2xldmVsIiwiZ2V0X2NvbXByZXNzZWRfdHJhY2UiLCJpc19jb21wcmVzc2VkX3RyYWNlIiwidHJhY2Vfb2ZfcHJldHJhY2Vfd2l0aF9hbWJpZ3VpIiwid2l0aF9hbWJpZ3VpdHkiLCJ0cmFjZV9vZl9wcmV0cmFjZSIsImdldF9pZF9vZl9ldmVudCIsImdldF9zaW11bGF0aW9uX3RpbWVfb2ZfZXZlbnQiLCJwcmludF90cmFjZSIsInRyYW5zZm9ybV90cmFjZV9nZW4iLCJsb2dfbWVzc2FnZSIsImRlYnVnX21lc3NhZ2UiLCJwcm9maWxpbmdfZXZlbnQiLCJrYXBwYV9oYW5kbGVyIiwic2hhbGxfd2VfY29tcHV0ZSIsInN0aCQwIiwicHJpbnRfaWZfemVybyIsInByb2ZpbGluZ19pbmZvJDAiLCJsb2dfbWVzc2FnZSQwIiwicHJldHJhY2UkMCIsInByb2ZpbGluZ19pbmZvJDEiLCJ0cmFjZSQwIiwidHJhY2UkMSIsInByb2ZpbGluZ19pbmZvJDIiLCJtb25hZGljX2xpZnQiLCJtYWtlX3VuYW1iaWd1b3VzIiwic2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mIiwic3RoJDEiLCJsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXMiLCJyZXF1aXJlbWVudCIsImVmZmVjdCIsInRyYWNlJDIiLCJvbl90aGVfZmx5X2N1dF9pbml0Iiwib25fdGhlX2ZseV9jdXRfc3RlcCIsIm9uX3RoZV9mbHlfY3V0X2ZpbmFsaXplIiwiY3V0X3N0YXRlIiwicmVtb3ZlX29ic19iZWZvcmUiLCJsYXN0X2luZm8iLCJsYXN0X2VpZCIsImxhc3RfaW5mbyQwIiwic2NvcmUiLCJzY29yZSQwIiwicmVtb3ZlX2V2ZW50c19hZnRlcl9sYXN0X29icyIsInJlbW92ZV9wc2V1ZG9faW52ZXJzZV9ldmVudHMiLCJzdG9yeV90YWJsZSIsImdldF9ydW50aW1lX2luZm9fZnJvbV9vYnNlcnZhYiIsImVycm9yX2luaXQiLCJleHRyYWN0X29ic2VydmFibGVfaGl0c19mcm9tX20iLCJleHRyYWN0X29ic2VydmFibGVfaGl0X2Zyb21fbXUiLCJjJDAiLCJjYXVzYWxfcHJlZml4X29mX2FuX29ic2VydmFibGUiLCJvYnNlcnZhYmxlX2lkIiwiZXZlbnRfaWRfbGlzdCIsImV4cG9ydF9tdXNpY2FsX2dyaWRfdG9feGxzIiwicHJpbnRfbXVzaWNhbF9ncmlkIiwiY3JlYXRlX3N0b3J5X3RhYmxlIiwiY2xvc2VfcHJvZ3Jlc3NfYmFyX29wdCIsInByaW50X2ZhaWxzIiwiaW5jX2ZhaWxzIiwiZm9sZF9zdG9yeV90YWJsZV9nZW4iLCJuX3N0b3JpZXNfaW5wdXQiLCJuX2ZhaWxzIiwicHJvZ3Jlc3NfYmFyJDAiLCJuX2ZhaWxzJDAiLCJmb2xkX3N0b3J5X3RhYmxlX3dpdGhfcHJvZ3Jlc3MiLCJmb2xkX3N0b3J5X3RhYmxlX3dpdGhvdXRfcHJvZ3IiLCJnZXRfY291bnRlciIsInN0b3JlX3RyYWNlIiwiY29tcHV0YXRpb25faW5mbyQxIiwib2JzX2luZm8iLCJjb21wdXRhdGlvbl9pbmZvJDIiLCJ0cmFjZTIiLCJjb21wdXRhdGlvbl9pbmZvIiwiY29tcHV0YXRpb25faW5mbyQwIiwiY29tcHV0YXRpb25faW5mbyQzIiwiY29tcHV0YXRpb25faW5mbyQ0Iiwic3RvcnlfdGFibGUkMCIsImNvbXB1dGF0aW9uX2luZm8kNSIsImZsYXR0ZW5fc3RvcnlfdGFibGUiLCJsaXN0X29yZGVyJDAiLCJzdHJvbmdseV9jb21wcmVzcyIsIndlYWtseV9jb21wcmVzcyIsImNvbnZlcnRfdHJhY2VfaW50b19ncmlkIiwiY29udmVydF90cmFjZV9pbnRvX211c2ljYWxfbm90IiwiZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX2NsIiwiZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX3BhIiwiZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX3BhJDAiLCJlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGEkMSIsInNvcnRfc3RvcnlfbGlzdCIsImV4cG9ydF9zdG9yeV90YWJsZSIsImhhc19vYnMiLCJmb2xkX2xlZnRfd2l0aF9wcm9ncmVzc19iYXIiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24iLCJzdGgkMiIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQwIiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDkiLCJuX2ZhaWwiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kMSIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQyIiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDQiLCJiYXIkMCIsIm5fZmFpbCQwIiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDUiLCJvdXRwdXRfb3B0IiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDMiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kNiIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQ3IiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDgiLCJmb2xkX292ZXJfdGhlX2NhdXNhbF9wYXN0X29mX28iLCJsb2dfc3RlcCIsIm9ic2VydmFibGVfaGl0IiwiY2F1c2FsX3Bhc3QiLCJpbmZvJDIiLCJjb3B5X2xvZ19pbmZvIiwiY29tcGFyZV9jYW5vbmljYWxfZm9ybSIsImNvbXB1dGVfY2Fub25pY2FsX2Zvcm0iLCJrZXlfb2ZfZXZlbnQiLCJjcmVhdGVfYmxhY2tfbGlzdCIsImJsYWNrbGlzdCIsImJsYWNrbGlzdCQwIiwicmVtb3ZlX2JsYWNrbGlzdGVkX2V2ZW50IiwibGFzdF9laWRfaW5fcHJldHJhY2UiLCJwcm9maWxpbmdfc3RhdGVfdG9fanNvbiIsImVycm9yX2xpc3RfdG9fanNvbiIsImNvbXB1dGF0aW9uX3N0ZXBzX3RvX2pzb24iLCJjbXBfb3B0IiwiY21wX2Zsb2F0X29wdCIsImNtcF9pbnRfb3B0IiwiZ2VuX2Jpbl9vcHQiLCJvcCIsImFkZF9mbG9hdF9vcHQiLCJtdWx0X2Zsb2F0X29wdCIsIm11bHRfaW50X29wdCIsIm1heF9vcHQiLCJjZmxvd19wYXJhbWV0ZXJzIiwibmV2ZXIiLCJnbG9iYWxfdHJhY2Vfc2ltcGxpZmljYXRpb24iLCJzdG9yZV9yZXN1bHQiLCJnbG9iYWxfc3RhdHVzIiwic3RvcF9uZXh0IiwiZ2xvYmFsX3N0YXR1cyQwIiwic3RvcCQwIiwiZ2xvYmFsX3N0YXR1cyQxIiwiZ2xvYmFsX3N0YXR1cyQyIiwic3RhcnRfaXRlcmF0aW9uIiwiZW5kX3NpbXBsaWZpY2F0aW9uIiwiZ2V0X3N0ZF9idWZmZXIiLCJjZmxvd19zdGF0ZSIsImdldF9lcnJfYnVmZmVyIiwiZ2V0X3Byb2ZpbGluZ19idWZmZXIiLCJnZXRfYnJhbmNoX2FuZF9jdXRfc3RhdHVzIiwiZ2V0X3Byb2dyZXNzX2JhciIsImdldF9jdXJyZW50X3BoYXNlX3RpdGxlIiwiZ2V0X2NhdXNhbF9mbG93X3RhYmxlIiwiZ2V0X3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUiLCJnZXRfd2Vha19jb21wcmVzc2lvbl90YWJsZSIsImdldF9zdHJvbmdfY29tcHJlc3Npb25fdGFibGUiLCJnZXRfZXJyb3JfbGlzdCIsInNhdmVfY3VycmVudF9waGFzZV90aXRsZV9hdXgiLCJjZmxvd19zdGF0ZV9wdHIiLCJyZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlX2F1eCIsInNhdmVfcHJvZ3Jlc3NfYmFyX2F1eCIsInJlc2V0X3Byb2dyZXNzX2Jhcl9hdXgiLCJzYXZlX2NhdXNhbF9mbG93X3RhYmxlX2F1eCIsInNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSIsInNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZV9hdSIsInNhdmVfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlXyIsInNhdmVfZXJyb3JfbG9nX2F1eCIsInJlZGlyZWN0X3N0ZF9idWZmZXJfYXV4IiwibG9nZ2VycyIsInJlZGlyZWN0X2Vycl9idWZmZXJfYXV4IiwicmVkaXJlY3RfcHJvZmlsaW5nX2J1ZmZlcl9hdXgiLCJyZWRpcmVjdF9icmFuY2hfYW5kX2N1dF9idWZmZXIiLCJjZmxvd19zdGF0ZV9wdHJfb3B0IiwiZGF0YSIsImxpZnRfcmVzZXQiLCJzYXZlX2NhdXNhbF9mbG93X3RhYmxlIiwic2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlJDAiLCJzYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGUiLCJzYXZlX3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZSIsInNhdmVfZXJyb3JfbGlzdCIsInJlZGlyZWN0X3N0ZF9idWZmZXIiLCJyZWRpcmVjdF9lcnJfYnVmZmVyIiwicmVkaXJlY3RfcHJvZmlsaW5nX2J1ZmZlciIsInJlZGlyZWN0X2JyYW5jaF9hbmRfY3V0X2J1ZmZlciQwIiwiaW5pdF9zZWNyZXRfbG9nX2luZm8iLCJkb19ub3RfbG9nIiwiY29tcHJlc3NfYW5kX3ByaW50IiwianNfaW50ZXJmYWNlIiwicGFyYW1ldGVyJDEiLCJwYXJhbWV0ZXIkMTIiLCJwYXJhbWV0ZXIkMiIsImNhdXNhbF90cmFjZV9vbiIsIndlYWtfY29tcHJlc3Npb25fb24iLCJzdHJvbmdfY29tcHJlc3Npb25fb24iLCJ0YWJsZTEiLCJ0YWJsZTIiLCJ0YWJsZTMiLCJ0YWJsZTQiLCJwYXJhbWV0ZXIkMyIsInBhcmFtZXRlciQ0IiwicGFyYW1ldGVyJDUiLCJwYXJhbWV0ZXIkNiIsInBhcmFtZXRlciQ3IiwicGFyYW1ldGVyJDgiLCJwYXJhbWV0ZXIkOSIsInBhcmFtZXRlcl9jYXVzYWwiLCJwYXJhbWV0ZXJfd2VhayIsInBhcmFtZXRlcl9zdHJvbmciLCJzdGVwX2xpc3QkMCIsInN0cm9uZyQwIiwiZXJyb3IkMTkiLCJzdGVwX2xpc3QkMSIsInN0ZXBfbGlzdCQyIiwic3RlcF9saXN0JDMiLCJ0cmFjZV9iZWZvcmVfY29tcHJlc3Npb24iLCJjYXVzYWxfc3RvcnlfYXJyYXkiLCJjYXVzYWxfc3RvcnlfbGlzdCIsImNhdXNhbF9zdG9yeV9saXN0JDAiLCJjYXVzYWxfdGFibGUiLCJwYXJhbWV0ZXJfZGVlcGVyIiwiZXZlbnRfbGlzdCQzIiwid2Vha2x5X3N0b3J5X3RhYmxlIiwidGFibGUyJDAiLCJ0YWJsZTMkMCIsIndlYWtfc3RvcnlfdGFibGUiLCJjYXVzYWxfc3RvcnlfdGFibGUiLCJjYXVzYWxfc3RvcnlfdGFibGUkMCIsIndlYWtfc3RvcnlfdGFibGUkMCIsImNhdXNhbF9zdG9yeV90YWJsZSQxIiwiZXJyb3IkMjkiLCJjYXVzYWxfc3RvcnlfdGFibGUkMiIsImVycm9yJDMwIiwibl9jYXVzYWxfc3RvcmllcyIsInBhcmFtZXRlciQxMSIsImxpc3RfaW5mbyIsIndlYWtseV9zdG9yeV90YWJsZSQwIiwiZXJyb3IkMzEiLCJ3ZWFrbHlfc3RvcnlfdGFibGUkMSIsImVycm9yJDMyIiwibl93ZWFrX3N0b3JpZXMiLCJwYXJhbWV0ZXIkMTAiLCJyZWZpbmVkX2V2ZW50X2xpc3QiLCJzdHJvbmdseV9zdG9yeV90YWJsZSIsInN0cm9uZ2x5X3N0b3J5X3RhYmxlJDAiLCJlcnJvciQxNyIsImVycm9yJDE4IiwiZXhwb3J0JDAiLCJlcnJvciQyMCIsImVycm9yJDIxIiwiZXJyb3IkMjIiLCJleHBvcnQkMSIsImVycm9yJDIzIiwiZXJyb3IkMjQiLCJlcnJvciQyNSIsImV4cG9ydCQyIiwiZXJyb3IkMjYiLCJlcnJvciQyNyIsImVycm9yJDI4Iiwib25fbWVzc2FnZSIsInRleHQiLCJzdCIsIm5vbmUkMCIsImIkMSIsIndlYWskMCIsImIkMiIsImUkMCIsImZvbGQiLCJjb21wYXJlX2xpc3QiLCJoMSIsImgyIiwiY29tcGFyZV9zdXBlcmxpc3QiLCJzb3J0Iiwic3VwZXJsaXN0IiwiZHVtcF9zdXBlcl9saXN0IiwiY29tcGFyZV9mc3RfdHJpcGxlIiwic21hc2giLCJhY2N1JDEiLCJ0b19kbyQxIiwiY3VycmVudCQyIiwidG9fZG8iLCJjdXJyZW50IiwidG9fZG8kMCIsImN1cnJlbnQkMCIsImN1cnJlbnQkMSIsImVycm9yX21zZyIsIm9wdCIsInJhbmdlIiwidGV4dCIsInN0aCIsInNldmVyaXR5IiwicmVzdWx0X2Vycm9yX21zZyIsInJlc3VsdF9jb2RlIiwibWVzc2FnZSIsInJlc3VsdF9tZXNzYWdlcyIsIm1lc3NhZ2VzIiwicmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiIsImUiLCJtZXRob2RfaGFuZGxlcl9lcnJvcnMiLCJtaCIsInVuY2F1Z2h0IiwiY2F1Z2h0IiwieCIsImwiLCJtZXRob2RfaGFuZGxlcl9tZXNzYWdlcyIsInJlc3VsdF9rYXNhIiwicmVzdWx0X2JpbmRfbHd0Iiwib2siLCJzdGF0dXMiLCJ2YWx1ZSIsImRhdGEiLCJyZXN1bHRfZm9sZF9sd3QiLCJmIiwiaWQiLCJ0IiwiaCIsInJlc3VsdCIsInJlc3VsdF9jb21iaW5lIiwiZGF0YV8xIiwiZGF0YV9yIiwibWQ1c3VtIiwid3JpdGVfc25hcHNob3RfaWQiLCJzdHJpbmdfb2Zfc25hcHNob3RfaWQiLCJsZW4iLCJvYiIsInJlYWRfc25hcHNob3RfaWQiLCJzbmFwc2hvdF9pZF9vZl9zdHJpbmciLCJzIiwid3JpdGVfc25hcHNob3QiLCJzdHJpbmdfb2Zfc25hcHNob3QiLCJyZWFkX3NuYXBzaG90Iiwic25hcHNob3Rfb2Zfc3RyaW5nIiwic3RyaW5nX29mX3NuYXBzaG90X2RldGFpbCIsInNuYXBzaG90X2RldGFpbF9vZl9zdHJpbmciLCJ3cml0ZV9zbmFwc2hvdF9pZF9saXN0IiwicmVhZF9zbmFwc2hvdF9pZF9saXN0Iiwic3RyaW5nX29mX3NuYXBzaG90X2NhdGFsb2ciLCJzbmFwc2hvdF9jYXRhbG9nX29mX3N0cmluZyIsIndyaXRlX3NpdGVfZ3JhcGgiLCJzdHJpbmdfb2Zfc2l0ZV9ncmFwaCIsInJlYWRfc2l0ZV9ncmFwaCIsInNpdGVfZ3JhcGhfb2Zfc3RyaW5nIiwid3JpdGVfc2ltdWxhdGlvbl9zdGF0ZSIsInN0cmluZ19vZl9zaW11bGF0aW9uX3N0YXRlIiwicmVhZF9zaW11bGF0aW9uX3N0YXRlIiwicCIsImxiIiwieCQwIiwieCQxIiwic2ltdWxhdGlvbl9zdGF0ZV9vZl9zdHJpbmciLCJ3cml0ZV9zaW11bGF0aW9uX3NlZWQiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9zZWVkIiwicmVhZF9zaW11bGF0aW9uX3NlZWQiLCJzaW11bGF0aW9uX3NlZWRfb2Zfc3RyaW5nIiwid3JpdGVfaW50X251bGxhYmxlIiwicmVhZF9pbnRfbnVsbGFibGUiLCJ3cml0ZV9zaW11bGF0aW9uX3Byb2dyZXNzIiwiaXNfZmlyc3QiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9wcm9ncmVzcyIsInJlYWRfc2ltdWxhdGlvbl9wcm9ncmVzcyIsImZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSIsImZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSQwIiwiZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVuIiwiZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVuJDAiLCJmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWMiLCJmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3IiLCJwb3MiLCJpIiwiZiQwIiwiaSQwIiwieCQyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwieCQ3IiwieCQ4IiwieCQ5IiwieCQxMCIsInNpbXVsYXRpb25fcHJvZ3Jlc3Nfb2Zfc3RyaW5nIiwid3JpdGVfc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlIiwicmVhZF9zaW11bGF0aW9uX3NlZWRfbnVsbGFibGUiLCJ3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlciIsInN0cmluZ19vZl9zaW11bGF0aW9uX3BhcmFtZXRlciIsInJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXIiLCJmaWVsZF9zaW11bGF0aW9uX3Bsb3RfcGVyaW9kIiwiZmllbGRfc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpIiwiZmllbGRfc2ltdWxhdGlvbl9zZWVkIiwiZmllbGRfc2ltdWxhdGlvbl9zdG9yZV90cmFjZSIsInNpbXVsYXRpb25fcGFyYW1ldGVyX29mX3N0cmluZyIsIndyaXRlX3NpbXVsYXRpb25fb3V0cHV0Iiwid3JpdGVfcGxvdCIsIndyaXRlX2RpbnMiLCJ3cml0ZV9maWxlX2xpbmVzIiwid3JpdGVfc25hcHNob3RzIiwid3JpdGVfaW5wdXRzIiwid3JpdGVfbG9nX21lc3NhZ2VzIiwic3RyaW5nX29mX3NpbXVsYXRpb25fb3V0cHV0IiwicmVhZF9zaW11bGF0aW9uX291dHB1dCIsInJlYWRfcGxvdCIsInJlYWRfZGlucyIsInJlYWRfZmlsZV9saW5lcyIsInJlYWRfc25hcHNob3RzIiwicmVhZF9pbnB1dHMiLCJyZWFkX2xvZ19tZXNzYWdlcyIsImZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QiLCJmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIiwiZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9sIiwiZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNoIiwiZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIiwiZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lIiwic2ltdWxhdGlvbl9vdXRwdXRfb2Zfc3RyaW5nIiwid3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24iLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbnRlcnZlbnQiLCJyZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uIiwic2ltdWxhdGlvbl9pbnRlcnZlbnRpb25fb2Zfc3RyIiwid3JpdGVfb3V0cHV0XzkzNDBhZDYiLCJyZWFkX291dHB1dF85MzQwYWQ2Iiwic3RyaW5nX29mX3NpbXVsYXRpb25faW5mb19vdXRwIiwic2ltdWxhdGlvbl9pbmZvX291dHB1dF9vZl9zdHJpIiwid3JpdGVfc2ltdWxhdGlvbl9pbmZvIiwic3RyaW5nX29mX3NpbXVsYXRpb25faW5mbyIsInJlYWRfc2ltdWxhdGlvbl9pbmZvIiwiZmllbGRfc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzIiwiZmllbGRfc2ltdWxhdGlvbl9pbmZvX291dHB1dCIsInNpbXVsYXRpb25faW5mb19vZl9zdHJpbmciLCJ3cml0ZV9zaW11bGF0aW9uX2lkIiwic3RyaW5nX29mX3NpbXVsYXRpb25faWQiLCJyZWFkX3NpbXVsYXRpb25faWQiLCJzaW11bGF0aW9uX2lkX29mX3N0cmluZyIsIndyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3QiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9hcnRpZmFjdCIsInJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdCIsImZpZWxkX3NpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdSIsInNpbXVsYXRpb25fYXJ0aWZhY3Rfb2Zfc3RyaW5nIiwid3JpdGVfc2hhcmluZ19sZXZlbCIsInN0cmluZ19vZl9zaGFyaW5nX2xldmVsIiwicmVhZF9zaGFyaW5nX2xldmVsIiwic2hhcmluZ19sZXZlbF9vZl9zdHJpbmciLCJ3cml0ZV9yZXN1bHQiLCJ3cml0ZV9vayIsIndyaXRlX2Vycm9yIiwic3RyaW5nX29mX3Jlc3VsdCIsInJlYWRfcmVzdWx0IiwicmVhZF9vayIsInJlYWRfZXJyb3IiLCJyZXN1bHRfb2Zfc3RyaW5nIiwid3JpdGVfcGFyc2luZ19jb21waWwiLCJzdHJpbmdfb2ZfcGFyc2luZ19jb21waWwiLCJyZWFkX3BhcnNpbmdfY29tcGlsIiwicGFyc2luZ19jb21waWxfb2Zfc3RyaW5nIiwid3JpdGVfbmJyIiwic3RyaW5nX29mX25iciIsInJlYWRfbmJyIiwibmJyX29mX3N0cmluZyIsIndyaXRlX3N0cmluZ19uYnJfbGlzdCIsInN0ZF90dXBsZSIsImVuZF9vZl90dXBsZSIsIngwIiwieDEiLCJyZWFkX3N0cmluZ19uYnJfbGlzdCIsIndyaXRlX3Byb2plY3RfcGFyc2UiLCJzdHJpbmdfb2ZfcHJvamVjdF9wYXJzZSIsInJlYWRfcHJvamVjdF9wYXJzZSIsImZpZWxkX3BhdHRlcm5fc2hhcmluZyIsImZpZWxkX2FzdCIsImZpZWxkX3ZhcmlhYmxlX292ZXJ3cml0dGVuIiwicHJvamVjdF9wYXJzZV9vZl9zdHJpbmciLCJ3cml0ZV9wcm9qZWN0X3BhcmFtZXRlciIsInN0cmluZ19vZl9wcm9qZWN0X3BhcmFtZXRlciIsInJlYWRfcHJvamVjdF9wYXJhbWV0ZXIiLCJmaWVsZF9wcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWMiLCJwcm9qZWN0X3BhcmFtZXRlcl9vZl9zdHJpbmciLCJ3cml0ZV9wbG90X2xpbWl0Iiwic3RyaW5nX29mX3Bsb3RfbGltaXQiLCJyZWFkX3Bsb3RfbGltaXQiLCJmaWVsZF9wbG90X2xpbWl0X29mZnNldCIsImZpZWxkX3Bsb3RfbGltaXRfcG9pbnRzIiwicGxvdF9saW1pdF9vZl9zdHJpbmciLCJzdHJpbmdfb2ZfcGxvdF9wYXJhbWV0ZXIiLCJwbG90X3BhcmFtZXRlcl9vZl9zdHJpbmciLCJzdHJpbmdfb2ZfcGxvdCIsInBsb3Rfb2Zfc3RyaW5nIiwid3JpdGVfbWVzc2FnZSIsInN0cmluZ19vZl9tZXNzYWdlIiwicmVhZF9tZXNzYWdlIiwibWVzc2FnZV9vZl9zdHJpbmciLCJ3cml0ZV9sb2dfbWVzc2FnZSIsInN0cmluZ19vZl9sb2dfbWVzc2FnZSIsInJlYWRfbG9nX21lc3NhZ2UiLCJsb2dfbWVzc2FnZV9vZl9zdHJpbmciLCJ3cml0ZV9rYXBwYV9jb2RlIiwic3RyaW5nX29mX2thcHBhX2NvZGUiLCJyZWFkX2thcHBhX2NvZGUiLCJrYXBwYV9jb2RlX29mX3N0cmluZyIsIndyaXRlX3N0cmluZ19udWxsYWJsZSIsInJlYWRfc3RyaW5nX251bGxhYmxlIiwid3JpdGVfZmlsZV9saW5lIiwic3RyaW5nX29mX2ZpbGVfbGluZSIsInJlYWRfZmlsZV9saW5lIiwiZmllbGRfZmlsZV9saW5lX25hbWUiLCJmaWVsZF9maWxlX2xpbmVfdGV4dCIsImZpbGVfbGluZV9vZl9zdHJpbmciLCJ3cml0ZV9maWxlX2xpbmVfbGlzdCIsInJlYWRfZmlsZV9saW5lX2xpc3QiLCJzdHJpbmdfb2ZfZmlsZV9saW5lX2RldGFpbCIsImZpbGVfbGluZV9kZXRhaWxfb2Zfc3RyaW5nIiwid3JpdGVfc3RyaW5nX2xpc3QiLCJyZWFkX3N0cmluZ19saXN0Iiwic3RyaW5nX29mX2ZpbGVfbGluZV9jYXRhbG9nIiwiZmlsZV9saW5lX2NhdGFsb2dfb2Zfc3RyaW5nIiwid3JpdGVfZW52aXJvbm1lbnRfaW5mbyIsInN0cmluZ19vZl9lbnZpcm9ubWVudF9pbmZvIiwicmVhZF9lbnZpcm9ubWVudF9pbmZvIiwiZmllbGRfZW52aXJvbm1lbnRfcHJvamVjdHMiLCJmaWVsZF9lbnZpcm9ubWVudF9idWlsZCIsImVudmlyb25tZW50X2luZm9fb2Zfc3RyaW5nIiwid3JpdGVfZGluX2lkIiwic3RyaW5nX29mX2Rpbl9pZCIsInJlYWRfZGluX2lkIiwiZGluX2lkX29mX3N0cmluZyIsIndyaXRlX2Rpbl9pZF9saXN0IiwicmVhZF9kaW5faWRfbGlzdCIsInN0cmluZ19vZl9kaW5fY2F0YWxvZyIsImRpbl9jYXRhbG9nX29mX3N0cmluZyIsIndyaXRlX2RpbiIsInN0cmluZ19vZl9kaW4iLCJyZWFkX2RpbiIsImRpbl9vZl9zdHJpbmciLCJuZXdfbWFpbGJveCIsInJlY2VpdmUiLCJtYWlsYm94IiwidGhyZWFkIiwidGhyZWFkJDAiLCJvdXQiLCJ0aHJlYWQkMSIsInRocmVhZCQyIiwidGhyZWFkJDMiLCJ0aHJlYWQkNCIsInRocmVhZCQ1IiwidGhyZWFkJDYiLCJqc29uIiwidGhyZWFkJDciLCJqc29uJDAiLCJ0aHJlYWQkOCIsImpzb24kMSIsInRocmVhZCQ5IiwianNvbiQyIiwidGhyZWFkJDEwIiwianNvbiQzIiwidGhyZWFkJDExIiwianNvbiQ0IiwidGhyZWFkJDEyIiwianNvbiQ1IiwidGhyZWFkJDEzIiwianNvbiQ2IiwidGhyZWFkJDE0IiwianNvbiQ3IiwidGhyZWFkJDE1IiwidGhyZWFkJDE2IiwidGhyZWFkJDE3IiwidGhyZWFkJDE4IiwidGhyZWFkJDE5IiwidGhyZWFkJDIwIiwidGhyZWFkJDIxIiwiaXNfY29tcHV0aW5nIiwic2VsZl8xIiwiaGFuZGxlIiwicmVxdWVzdCIsImZlZWRlciIsImIiLCJmaWxlX2lkIiwiZmlsZV9jb250ZW50IiwiZmlsZV9wb3NpdGlvbiIsImFzdCIsImNvbXBpbCIsImFjY3VyYWN5IiwiZndkIiwiYndkIiwib3JpZ2luIiwidG90YWwiLCJmaWxlbmFtZSIsImFjY3VyYWN5X2NtIiwiYWNjdXJhY3lfc2NjIiwicGF0dGVyblNoYXJpbmciLCJvdmVyd3JpdGVzIiwicGF1c2UiLCJwYXJhbWV0ZXIiLCJpbnRlcnZlbnRpb24iLCJ3cml0ZV9zbmFwc2hvdF9kZXRhaWwiLCJyZWFkX3NuYXBzaG90X2RldGFpbCIsIndyaXRlX3NuYXBzaG90X2NhdGFsb2ciLCJyZWFkX3NuYXBzaG90X2NhdGFsb2ciLCJ3cml0ZV9zaW11bGF0aW9uX2VmZmljaWVuY3kiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9lZmZpY2llbmMiLCJyZWFkX3NpbXVsYXRpb25fZWZmaWNpZW5jeSIsInNpbXVsYXRpb25fZWZmaWNpZW5jeV9vZl9zdHJpbiIsIndyaXRlX2FwaV9yZXN1bHQiLCJzdHJpbmdfb2ZfYXBpX3Jlc3VsdCIsInJlYWRfYXBpX3Jlc3VsdCIsImFwaV9yZXN1bHRfb2Zfc3RyaW5nIiwid3JpdGVfYXBpX21lc3NhZ2UiLCJzdHJpbmdfb2ZfYXBpX21lc3NhZ2UiLCJyZWFkX2FwaV9tZXNzYWdlIiwiYXBpX21lc3NhZ2Vfb2Zfc3RyaW5nIiwid3JpdGVfYXBpX21lc3NhZ2VfbGlzdCIsInJlYWRfYXBpX21lc3NhZ2VfbGlzdCIsIndyaXRlX2ZpbGVfbGluZV9jYXRhbG9nIiwicmVhZF9maWxlX2xpbmVfY2F0YWxvZyIsIndyaXRlX2Rpbl9jYXRhbG9nIiwicmVhZF9kaW5fY2F0YWxvZyIsIndyaXRlX3Jlc3RfcmVzcG9uc2VfY29udGVudCIsIngkMTEiLCJ4JDEyIiwieCQxMyIsIngkMTQiLCJ4JDE1IiwieCQxNiIsInN0cmluZ19vZl9yZXN0X3Jlc3BvbnNlX2NvbnRlbiIsInJlYWRfcmVzdF9yZXNwb25zZV9jb250ZW50IiwieCQzNSIsIngkMTciLCJ4JDI2IiwieCQyNSIsIngkMjQiLCJ4JDIzIiwieCQyMiIsIngkMjEiLCJ4JDIwIiwieCQxOSIsIngkMTgiLCJ4JDM0IiwieCQzMyIsIngkMzIiLCJ4JDMxIiwieCQzMCIsIngkMjkiLCJ4JDI4IiwieCQyNyIsInJlc3RfcmVzcG9uc2VfY29udGVudF9vZl9zdHJpbiIsIndyaXRlX3Jlc3VsdF80Y2E2YjhmIiwicmVhZF9yZXN1bHRfNGNhNmI4ZiIsInN0cmluZ19vZl9yZXN0X3Jlc3BvbnNlIiwicmVzdF9yZXNwb25zZV9vZl9zdHJpbmciLCJ3cml0ZV9wbG90X3BhcmFtZXRlciIsInJlYWRfcGxvdF9wYXJhbWV0ZXIiLCJ3cml0ZV9yZXN0X3JlcXVlc3QiLCJzdHJpbmdfb2ZfcmVzdF9yZXF1ZXN0IiwicmVhZF9yZXN0X3JlcXVlc3QiLCJyZXN0X3JlcXVlc3Rfb2Zfc3RyaW5nIiwid3JpdGVfcmVzcG9uc2VfY29udGVudCIsInN0cmluZ19vZl9yZXNwb25zZV9jb250ZW50IiwicmVhZF9yZXNwb25zZV9jb250ZW50IiwicmVzcG9uc2VfY29udGVudF9vZl9zdHJpbmciLCJ3cml0ZV9yZXN1bHRfODkwZDlmZSIsInJlYWRfcmVzdWx0Xzg5MGQ5ZmUiLCJzdHJpbmdfb2ZfcmVzcG9uc2UiLCJyZXNwb25zZV9vZl9zdHJpbmciLCJ3cml0ZV9yZXF1ZXN0Iiwic3RyaW5nX29mX3JlcXVlc3QiLCJyZWFkX3JlcXVlc3QiLCJyZXF1ZXN0X29mX3N0cmluZyIsIndyaXRlX2lkIiwic3RyaW5nX29mX2lkIiwicmVhZF9pZCIsImlkX29mX3N0cmluZyIsIndyaXRlX2RhdGEiLCJyZWFkX2RhdGEiLCJmaWVsZF9pZCIsImZpZWxkX2RhdGEiLCJ3cml0ZV9maWxlX2xpbmVfZGV0YWlsIiwicmVhZF9maWxlX2xpbmVfZGV0YWlsIiwib25fbWVzc2FnZSIsIm1hbmFnZXIiLCJwb3N0X21lc3NhZ2UiLCJ0ZXh0X21lc3NhZ2UiLCJoYW5kbGVyIiwicGFjayIsIm1lc3NhZ2UkMCIsImZpbGVfbGluZV9pZCIsInNpbXVsYXRpb25faW50ZXJ2ZW50aW9uIiwiZGluX2lkIiwidmFyaWFibGVfb3ZlcndyaXR0ZW4iLCJwYXR0ZXJuX3NoYXJpbmciLCJwbG90X3BhcmFtZXRlciIsInNuYXBzaG90X2lkIiwic2ltdWxhdGlvbl9wYXJhbWV0ZXIiLCJzaW11bGF0aW9uX3BhcmFtZXRlciQwIiwicmVzcG9uc2UiLCJwYXVzZV9jb25kaXRpb24iLCJmaWxlX2xpbmVfbGlzdCIsImZsdXhfbWFwX2lkIiwiZmx1eF9tYXAiLCJsb2dfbWVzc2FnZSIsInBsb3QiLCJzbmFwc2hvdCIsInNpbXVsYXRpb25fc3RhdHVzIiwiZWZmaWNpZW5jeSIsImluZm8iLCJzaW11bGF0aW9uX2lkIiwic2VsZl8yIiwicmVzcG9uc2VfdGV4dCIsIm1haWxib3hlcyIsIm1haWxib3hlcyQwIiwibWVzc2FnZV90ZXh0IiwiYXBpX3NuYXBzaG90X2RvdCIsImFwaV9zbmFwc2hvdF9rYXBwYSIsImFwaV9zaW11bGF0aW9uX3N0YXR1cyIsInByb2dyZXNzIiwiZGV0YWlsIiwib3V0cHV0IiwiYWdlbnRfY291bnQiLCJzcGVjaWVzIiwid3JpdGUxIiwib2MiLCJuIiwid3JpdGUyIiwid3JpdGU0Iiwid3JpdGU0X2ludCIsIndyaXRlc3RyaW5nIiwiZG9zdGltZV9vZl91bml4dGltZSIsInRtIiwib3Blbl9vdXQiLCJjb21tZW50IiwiY2xvc2Vfb3V0Iiwib2ZpbGUiLCJzdGFydF9jZCIsInZlcnNpb24iLCJkYXRlIiwidGltZSIsImNkX3NpemUiLCJudW1fZW50cmllcyIsImFkZF9lbnRyeV9oZWFkZXIiLCJleHRyYSIsImxldmVsIiwibXRpbWUiLCJhZGRfZGF0YV9kZXNjcmlwdG9yIiwiY3JjIiwiY29tcHJfc2l6ZSIsInVuY29tcHJfc2l6ZSIsImVudHJ5IiwiYWRkX2VudHJ5IiwibmFtZSIsInN0aCQwIiwic3RoJDEiLCJzdGgkMiIsImNyYyQwIiwiZSQwIiwiYWRkX2VudHJ5X2dlbmVyYXRvciIsImZpbmlzaGVkIiwiY2hlY2siLCJidWYiLCJtc2dfcHJvY2Vzc19ub3RfcGF1c2VkIiwiZXhuIiwiY2F0Y2hfZXJyb3IiLCJyYW5nZSQwIiwicmFuZ2UkMSIsIm1lc3NhZ2UkMSIsImVycm9yIiwibWVzc2FnZSQyIiwicGFyc2UiLCJ2YXJfb3ZlcndyaXRlIiwic3lzdGVtX3Byb2Nlc3MiLCJ5aWVsZCQwIiwibG9nX2J1ZmZlciIsImxvZ19mb3JtIiwiaW5wdXRzX2J1ZmZlciIsImlucHV0c19mb3JtIiwiY29uZiIsIndhcm5pbmciLCJtc2ciLCJhc3RfY29tcGlsZWRfZGF0YSIsImxhc3R5aWVsZCIsIm91dHB1dHMiLCJpbml0X2wiLCJ3aXRoX3RyYWNlIiwiZW52IiwiY291bnRlciIsInRoZVNlZWQiLCJ0aGVTZWVkJDAiLCJyYW5kb21fc3RhdGUiLCJzdGF0ZSIsImdyYXBoIiwibWF4Q29uc2VjdXRpdmVDbGFzaCIsImR1bXBJZkRlYWRsb2NrZWQiLCJjb250YWN0X21hcCIsInNpbXVsYXRpb24iLCJmbHV4X25hbWUiLCJuZXdfb2JzZXJ2YWJsZXMiLCJmaWxlX2xpbmUiLCJuYSIsImxpbmVzIiwic3QiLCJhbHJlYWR5X3RoZXJlIiwic25hcHNob3RfZmlsZSIsIm1peCIsImZpbGUiLCJmaW5hbGl6ZV9zaW11bGF0aW9uIiwicnVuX3NpbXVsYXRpb24iLCJzdG9wcGVkIiwicnN0b3AiLCJpdGVyIiwic3RvcCIsInN0b3AkMCIsInN0YXJ0IiwibGV4YnVmIiwic2VlZCIsImZpcnN0X29icyIsInBlcnR1cmJhdGlvbiIsImZvcm1hdHRlciIsInYiLCJjb250aW51ZSQwIiwiZ2V0X3Jhd190cmFjZSIsImdldF9yYXdfYXN0IiwibSQxIiwibSQwIiwibSIsImJpbmRfc2ltdWxhdGlvbiIsInNpbXVsYXRpb24kMCIsImRldGFpbF9wcm9qZWN0aW9uIiwicHJvamVjdGlvbiIsImVycm9ycyIsInNpbXVsYXRpb25fZGV0YWlsIiwiZmlsZV9saW5lcyIsImZpbGVfbGluZV9jYXRhbG9nIiwiZmx1eF9tYXBfY2F0YWxvZyIsImZsdXhfbWFwc19saXN0Iiwic2VsZl8zIiwic2VsZl80IiwicGxvdF9saW1pdCIsInBsb3RfdGltZV9zZXJpZXMiLCJwbG90X2RldGFpbF9zaXplIiwicGxvdF9saW1pdF9vZmZzZXQiLCJwbG90X2xpbWl0X3BvaW50cyIsIm9mZnNldCIsIm5iIiwibmIkMCIsIm5ld19wbG90X3RpbWVfc2VyaWVzIiwic2VsZl81Iiwic25hcHNob3RzIiwiYWNjIiwic25hcHNob3RfY2F0YWxvZyIsInNuYXBzaG90X2xpc3QiLCJzZWxmXzYiLCJoYXJha2lyaSIsInNlZWQkMCIsInNpbXVsYXRpb25fc2VlZCIsImZhY2FkZSIsImNvbnRlbnQiLCJmbHV4IiwiZGluX25hbWUiLCJuYW1lJDAiLCJzaW11bGF0aW9uX3BlcnR1cmJhdGlvbiIsInByaW50X2NvbXByZXNzaW9uX21vZGVzIiwic3Ryb25nIiwid2VhayIsImNhdXNhbCIsImluaXRpYWxfc3RhdGUiLCJ1cGRhdGVfc3RhdGUiLCJpbml0X3N0YXRlIiwiY3VycmVudF9zdGF0ZSIsIm0kMiIsImMiLCJpbmZvcyIsImNtIiwidHJhY2VfdGV4dCIsInJlcXVlc3QkNCIsInJlcXVlc3QkMyIsInJlcXVlc3QkMiIsInJlcXVlc3QkMSIsInJlcXVlc3QkMCIsImVyciIsImlkJDAiLCJwb3N0Iiwib3V0YnVmIiwib3V0YiIsImEiLCJvIiwiYiQwIiwiaXNfcnVubmluZyIsInJ1bnRpbWVfc3RhdGUiLCJzZXRfc3RhdGVfZXJyb3IiLCJzdGF0ZV9lcnJvciIsImNsZWFyX2Vycm9ycyIsImxvY2F0aW9uIiwiaGFzX2Vycm9ycyIsImFkZF9lcnJvciIsImVycm9ycyIsImN1cnJlbnRfc3RhdGVfZXJyb3IiLCJuZXdfc3RhdGVfZXJyb3IiLCJhY2MiLCJ2YWx1ZSIsIndyYXAiLCJvcHQiLCJsb2MiLCJyIiwic3RoIiwiYXBwZW5kIiwidXJsX2FyZ3MiLCJvcHQiLCJrZXkiLCJzdGgiLCJkZWZhdWx0JDAiLCJhcmdzIiwiayIsInNvbWUiLCJjb25zdHJ1Y3Rvcl9wcm9jZXNzX2NvbmZpZ3VyYXQiLCJjcmVhdGVfcHJvY2Vzc19jb25maWd1cmF0aW9uIiwib25TdGRvdXQiLCJvblN0ZGVyciIsIm9uQ2xvc2UiLCJvbkVycm9yIiwiY29tbWFuZCIsImFyZ3MiLCJjb25maWd1cmF0aW9uIiwieCIsIm9uU3Rkb3V0JDAiLCJvblN0ZGVyciQwIiwib25DbG9zZSQwIiwib25FcnJvciQwIiwic3Bhd25fcHJvY2VzcyIsImxhdW5jaF9hZ2VudCIsIm1lc3NhZ2VfZGVsaW1pdGVyIiwiaGFuZGxlciIsImJ1ZmZlciIsIm1zZyIsIm1zZyQwIiwicHJlZml4Iiwic3VmZml4IiwibXNnJDEiLCJzZWxmXzEiLCJ0aW1lb3V0Iiwib3B0Iiwic3RoIiwic3RoJDAiLCJzd2l0Y2hfcmUiLCJzdG9yX2NvbW1hbmQiLCJzd2l0Y2hfbWFpbGJveCIsInVwZGF0ZV9zdG9yX3N0YXRlIiwic3Rvcl9zdGF0ZSIsInJ1bm5pbmdfcmVmIiwic3Rvcl9wcm9jZXNzIiwibWVzc2FnZV90ZXh0IiwicmVxdWVzdF91cCIsInYiLCJyZXF1ZXN0X2Rvd24iLCJpc19jb21wdXRpbmciLCJzZW5kIiwidGltZW91dCIsInJlcXVlc3RfY291bnQiLCJ1cmwiLCJtZXRoIiwiZGF0YSIsImh5ZHJhdGUiLCJmZWVkZXIiLCJyZXBseSIsImhhbmRsZXIiLCJzdGF0dXMiLCJyZXNwb25zZV90ZXh0IiwicmVzdWx0X2NvZGUiLCJyZXN1bHRfY29kZSQwIiwicmVzcG9uc2UiLCJyZXN1bHQiLCJrYXNhX2Vycm9yIiwibCIsImFjYyIsIm0iLCJzZWxmXzEiLCJzIiwiZmlsZV9saW5lX2lkIiwibGluZXMiLCJzaW11bGF0aW9uX2ludGVydmVudGlvbiIsImZsdXhfbWFwX2lkIiwic25hcHNob3RfaWQiLCJwbG90X2xpbWl0IiwicGxvdF9saW1pdF9wb2ludHMiLCJwbG90X2xpbWl0X29mZnNldCIsInZhbHVlIiwia2V5IiwiYXJncyIsInBhdXNlX2NvbmRpdGlvbiIsInNpbXVsYXRpb25fcGFyYW1ldGVyIiwicHJvamVjdHMiLCJwcm9qZWN0X3BhcmFtZXRlciIsInByb2plY3RfaWQiLCJwYXR0ZXJuU2hhcmluZyIsImYiLCJ2YSIsInZyIiwicG9zIiwiaWQiLCJjb250ZW50IiwiZmlsZV9pZCIsImFzdCIsIngiLCJ4JDAiLCJjb21waWwiLCJhY2N1cmFjeSIsImFjY3VyYWN5JDAiLCJmd2QiLCJid2QiLCJvcmlnaW4iLCJ0b3RhbCIsImkiLCJpJDAiLCJpJDEiLCJpJDIiLCJzaG9ydF9pZF9vcHQiLCJmaWxlbmFtZSIsImxpbmUiLCJjaHIiLCJhY2N1cmFjeV9jbSIsImFjY3VyYWN5X3NjYyIsImEiLCJiIiwib3B0aW9ucyIsImEkMCIsIndlYWsiLCJjYXVzYWwiLCJjbGllbnRJZFBhcmFtSWQiLCJjbGllbnRfaWQiLCJnZXRfY2xpZW50X2lkIiwic2V0X2NsaWVudF9pZCIsImNsaWVudF9pZCQwIiwiZm9udFNpemVQYXJhbUlkIiwiY3VycmVudEZvbnRTaXplIiwiaW5pdEZyb21TdG9yYWdlIiwic3QiLCJ4Iiwic2V0X3BhcmFtZXRlcnNfYXNfZGVmYXVsdCIsInYiLCJ1cGRhdGVGb250U2l6ZSIsImRlbHRhIiwic2V0X3N5bmNoIiwic3luY2giLCJhZ2VudF9jb2xvcmluZyIsImluaXQiLCJjbGllbnRfaWRzIiwic3luYyIsInNlbGZfMSIsInRpbWVvdXQiLCJtZXNzYWdlX3RleHQiLCJ4IiwicmVzcG9uc2VfbWVzc2FnZSIsInJlc3BvbnNlX3RleHQiLCJwYXR0ZXJuU2hhcmluZyIsIm92ZXJ3cml0ZXMiLCJvdXQiLCJsb2FkIiwiaW5pdCIsImUiLCJpbmZvcyIsImxvY2F0b3JzIiwiZmlsZW5hbWUiLCJwb3MiLCJrYXNhX3dvcmtlciIsImthc2FfbWFpbGJveCIsImthbW9oYV93b3JrZXIiLCJrYW1vaGFfbWFpbGJveCIsImthc3Rvcl93b3JrZXIiLCJ1cGRhdGVfc3Rvcl9zdGF0ZSIsInN0b3Jfc3RhdGUiLCJzcGVjX2xhYmVsIiwicmVtb3RlIiwic3BlY19pZCIsImh0dHAiLCJjbGkiLCJyZWFkX3NwZWMiLCJ1cmwiLCJmb3JtYXRfdXJsIiwibGVuZ3RoIiwiY2xlYW5lZF91cmwiLCJjbGVhbmVkIiwicGFyc2VkIiwicHJvdG9jb2wiLCJodHRwcyQxIiwiZmlsZSQxIiwiaHR0cCQxIiwiaHR0cHMkMCIsImZpbGUkMCIsImxhYmVsIiwiaHR0cCQwIiwiaHR0cHMiLCJmaWxlIiwic2VsZl8xIiwieCIsInJlc3BvbnNlX21lc3NhZ2UiLCJyZXNwb25zZV90ZXh0IiwicGF0dGVyblNoYXJpbmciLCJvdmVyd3JpdGVzIiwib3V0IiwibG9hZCIsImluaXQiLCJlIiwiaW5mb3MiLCJsb2NhdG9ycyIsImZpbGVuYW1lIiwicG9zIiwia2FzYV93b3JrZXIiLCJrYXNhX21haWxib3giLCJrYW1vaGFfd29ya2VyIiwia2Ftb2hhX21haWxib3giLCJrYXN0b3Jfd29ya2VyIiwic2VsZl8yIiwiZXhuIiwibXNnIiwibWVzc2FnZV90ZXh0Iiwic2V0X3N0YXRlIiwic3RhdGUiLCJjcmVhdGVfbWFuYWdlciIsImlzX25ldyIsInByb2plY3RfaWQiLCJ2ZXJzaW9uX3VybCIsImZyYW1lIiwiaXNfdmFsaWRfc2VydmVyIiwiZXJyb3JfbXNnIiwibWFuYWdlciIsImpzX25vZGVfcnVudGltZSIsInNldF9zcGVjIiwicnVudGltZSIsImN1cnJlbnRfc3RhdGUiLCJjcmVhdGVfc3BlYyIsImlkIiwibW9kZWwiLCJob3N0cyIsImFkZF91cmxzIiwidXJscyIsInVybHMkMCIsImxvYWQkMCIsInVybHMkMSIsInByb2plY3RzIiwic3luYyIsImluaXRfZGVmYXVsdF9wYXJhbWV0ZXJzIiwicGxvdFBlcmlvZFBhcmFtSWQiLCJwYXVzZUNvbmRpdGlvblBhcmFtSWQiLCJzZWVkUGFyYW1JZCIsInN0b3JlVHJhY2VQYXJhbUlkIiwic2hvd0RlYWRSdWxlc1BhcmFtSWQiLCJzaG93RGVhZEFnZW50c1BhcmFtSWQiLCJzaG93SXJyZXZlcnNpYmxlVHJhbnNpdGlvbnNQYXIiLCJwcm9qZWN0X2VxdWFsIiwiYSIsImIiLCJjYXRhbG9nX2VxdWFsIiwieCIsInkiLCJzdGF0ZV9lcXVhbCIsIm1vZGVsX2VxdWFsIiwiaW5pdF9zdGF0ZSIsInNldF9zdGF0ZSIsInN0YXRlIiwidXBkYXRlX3BhcmFtZXRlcnMiLCJoYW5kbGVyIiwic3QiLCJwcm9qIiwicHJvamVjdF9wYXJhbWV0ZXJzIiwiZGVmYXVsdF9wYXJhbWV0ZXJzIiwicHJvamVjdF9wYXJhbWV0ZXJzJDAiLCJkZWZhdWx0X3BhcmFtZXRlcnMkMCIsInNldF9wYXJhbWV0ZXJzX2FzX2RlZmF1bHQiLCJwYSIsImxzIiwidmEiLCJzZXRfcGxvdF9wZXJpb2QiLCJwbG90X3BlcmlvZCIsInBhcmFtIiwic2V0X3BhdXNlX2NvbmRpdGlvbiIsInBhdXNlX2NvbmRpdGlvbiIsInNldF9zZWVkIiwic2VlZCIsInNldF9zdG9yZV90cmFjZSIsInN0b3JlX3RyYWNlIiwic2V0X3Nob3dfZGVhZF9ydWxlcyIsInNob3dfZGVhZF9ydWxlcyIsInNldF9zaG93X2RlYWRfYWdlbnRzIiwic2hvd19kZWFkX2FnZW50cyIsInNldF9zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZSIsInNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYSIsInVwZGF0ZV9zdGF0ZSIsIm1lIiwicHJvamVjdF9jYXRhbG9nIiwib3V0IiwiY29tcHV0aW5nX3dhdGNoZXIiLCJtYW5hZ2VyIiwic2V0dGVyIiwiY2FuY2VsbGVkIiwiZGVsYXkiLCJsb29wIiwiYWRkX3Byb2plY3QiLCJpc19uZXciLCJwcm9qZWN0X2lkIiwic3RhdGVfdmEiLCJjYXRhbG9nIiwicGFyYW1zIiwicHJvamVjdF9tYW5hZ2VyIiwic2V0X2NvbXB1dGVzIiwicHJvamVjdF9pc19jb21wdXRpbmciLCJwcm9qZWN0X3dhdGNoZXJfY2FuY2VsIiwiY3JlYXRlX3Byb2plY3QiLCJzZXRfcHJvamVjdCIsImR1bW15X21vZGVsIiwicCIsIm1vZGVsX2NhdGFsb2ciLCJtb2RlbF9wYXJhbWV0ZXJzIiwibW9kZWwiLCJzeW5jIiwiY3VycmVudCIsInJlbW92ZV9maWxlcyIsIm0iLCJyZW1vdmVfcHJvamVjdCIsInN0YXRlJDAiLCJ2IiwiaCIsInByb2plY3RfY3VycmVudCIsIm91dCQwIiwiaW5pdF9wbG90X3BlcmlvZCIsImFyZyIsImFyZyQwIiwiYXJnJDEiLCJtc2ciLCJpbml0X3BhdXNlX2NvbmRpdGlvbiIsImluaXRfbW9kZWxfc2VlZCIsImluaXRfc3RvcmVfdHJhY2UiLCJpbml0X3Nob3dfZGVhZF9ydWxlcyIsImluaXRfc2hvd19kZWFkX2FnZW50cyIsImluaXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libCIsImluaXQiLCJleGlzdGluZ19wcm9qZWN0cyIsImRlZmF1bHQkMCIsImFyZ19wbG90X3BlcmlvZCIsImRlZmF1bHQkMSIsImFyZ19wYXVzZV9jb25kaXRpb24iLCJkZWZhdWx0JDIiLCJhcmdfbW9kZWxfc2VlZCIsImRlZmF1bHQkMyIsImFyZ19zdG9yZV90cmFjZSIsImRlZmF1bHQkNCIsImFyZ19zaG93X2RlYWRfcnVsZXMiLCJkZWZhdWx0JDUiLCJhcmdfc2hvd19kZWFkX2FnZW50cyIsImRlZmF1bHQkNiIsImFyZ19zaG93X2lycmV2ZXJzaWJsZV90cmFuc2l0aSIsInByb2plY3RzIiwiYWRkX3Byb2plY3RzIiwicHJvamVjdHMkMCIsInByb2plY3QiLCJlcnJvcnMiLCJldmFsX3dpdGhfcHJvamVjdCIsImxhYmVsIiwiZXJyb3JfbXNnIiwib25fcHJvamVjdF9jaGFuZ2VfYXN5bmMiLCJlcSIsIm9uIiwib3B0IiwiaW5pdF9vdGhlcnMiLCJvdGhlcnMiLCJzdGgiLCJvdGhlcnNfZXEiLCJlcV9wYWlyIiwib3RoIiwiZXJyb3JfbXNnJDIiLCJlcnJvcl9tc2ckMSIsImVycm9yX21zZyIsImVycm9yX21zZyQwIiwiZHVtbXlfY3Vyc29yX3BvcyIsImJsYW5rX3N0YXRlIiwic2V0X2RpcmVjdG9yeV9zdGF0ZSIsIm1vZGVsIiwicmVmcmVzaF9maWxlX2hvb2siLCJyZWdpc3Rlcl9yZWZyZXNoX2ZpbGVfaG9vayIsIngiLCJtIiwibmFtZSIsImN1cnJlbnRfZmlsZW5hbWUiLCJ3aXRoX2N1cnJlbnRfcG9zIiwiZXEiLCJvcHQiLCJmIiwiZGVmYXVsdCQwIiwic3RoIiwib24iLCJ3aXRoX2N1cnJlbnRfZmlsZSIsInN0YXRlIiwiYWN0aXZlIiwiZ2V0X2ZpbGUiLCJ0ZXh0IiwibmFtZSQwIiwibWFuYWdlciIsInJhbmsiLCJzZW5kX3JlZnJlc2giLCJsaW5lIiwib3V0X29mX3N5bmMiLCJmaWxlbmFtZSIsImNvbnRlbnQiLCJ1cGRhdGVfZGlyZWN0b3J5IiwicmVzZXQiLCJjdXJyZW50IiwiY2F0YWxvZyIsImFjYyIsImlkIiwicG9zaXRpb24iLCJkaXJlY3RvcnkiLCJjcmVhdGVfZmlsZSIsImZpbGVfbWV0YWRhdGEiLCJtYXRjaGluZ19maWxlIiwibWV0YWRhdGEiLCJtYXhfcG9zIiwiY2hvb3NlX2ZpbGUiLCJjaG9pY2UiLCJ0Iiwic2VsZWN0X2ZpbGUiLCJzZXRfY29udGVudCIsInNldF9jb21waWxlIiwiZmlsZV9pZCIsImNvbXBpbGUiLCJyYW5rJDAiLCJyZW1vdmVfZmlsZSIsImxvY2FsIiwieSIsImRvX2FfbW92ZSIsIngkMCIsImN1cnNvcl9wb3MiLCJwb3MiLCJzZXRfcG9zaXRpb24iLCJvcmRlcl9maWxlcyIsImZpbGVuYW1lcyIsIm9yZGVyX2ZpbGUiLCJpbmRleCIsInRhaWwiLCJjdXJzb3JfYWN0aXZpdHkiLCJjaCIsInYiLCJzeW5jIiwiY2FuZCIsImxvYWRfZGVmYXVsdCIsImVycm9ycyIsIm1zZyIsImxvYWRfbW9kZWxzIiwibW9kZWxzIiwiYWRkX21vZGVscyIsImxvYWRfZmlsZSIsIm1vZGVscyQwIiwidSIsImgiLCJmaWxlY29udGVudCIsImluaXQiLCJlcnJvcl9tc2ckOCIsImVycm9yX21zZyQ3IiwiZXJyb3JfbXNnJDYiLCJlcnJvcl9tc2ckNSIsImVycm9yX21zZyQ0IiwiZXJyb3JfbXNnJDMiLCJlcnJvcl9tc2ckMiIsImVycm9yX21zZyQxIiwiZXJyb3JfbXNnJDAiLCJlcnJvcl9tc2ciLCJkdW1teV9tb2RlbCIsInRfc2ltdWxhdGlvbl9zdGF0ZSIsInNpbXVsYXRpb24iLCJ0X3NpbXVsYXRpb25faW5mbyIsInNpbXVsYXRpb25faW5mbyIsIm1vZGVsX3N0YXRlX3RvX3N0cmluZyIsIm1vZGVsX3NpbXVsYXRpb25faW5mbyIsIm1vZGVsIiwibW9kZWxfc2ltdWxhdGlvbl9zdGF0ZSIsInNldF9zdGF0ZSIsInN0YXRlIiwidXBkYXRlX3NpbXVsYXRpb25fc3RhdGUiLCJzaW11bGF0aW9uX3N0YXRlIiwiZXZhbF93aXRoX3NpbV9tYW5hZ2VyIiwibGFiZWwiLCJoYW5kbGVyIiwicHJvamVjdF9oYW5kbGVyIiwibWFuYWdlciIsImZhaWxfbHd0IiwiZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIiwib3B0Iiwic3RoIiwic3RvcHBlZCIsInN0aCQwIiwiaW5pdGlhbGl6aW5nIiwic3RoJDEiLCJyZWFkeSIsInMiLCJldmFsX3doZW5fcmVhZHkiLCJzbGVlcF90aW1lIiwic3luYyIsInJlZnJlc2giLCJpbml0IiwiY29udGludWVfc2ltdWxhdGlvbiIsInBhdXNlX2NvbmRpdGlvbiIsInBhdXNlX3NpbXVsYXRpb24iLCJzdG9wX3NpbXVsYXRpb24iLCJzdGFydF9zaW11bGF0aW9uIiwic2ltdWxhdGlvbl9wYXJhbWV0ZXIiLCJvbl9lcnJvciIsImVycm9yX21zZ3MiLCJlcnJvciIsIm1zZyIsIm1lc3NhZ2UiLCJzaW11bGF0aW9uX3N0YXR1cyIsImludGVydmVuZV9zaW11bGF0aW9uIiwiY29kZSIsIm91dCIsInJlZnJlc2giLCJyIiwiciQwIiwiciQxIiwiY3JlYXRlX3Byb2plY3QiLCJwcm9qZWN0X2lkIiwic2V0X3Byb2plY3QiLCJjbG9zZV9wcm9qZWN0Iiwic2V0X21hbmFnZXIiLCJydW50aW1lX2lkIiwiY29uZmlndXJhdGlvbl9zZWVkX2lucHV0X2lkIiwicHJlZmVyZW5jZXNfbW9kYWxfaWQiLCJzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRfaWQiLCJwcmVmZXJlbmNlc19idXR0b24iLCJvcHRpb25fc2VlZF9pbnB1dCIsIm9wdGlvbl93aXRodHJhY2UiLCJvcHRpb25fd2l0aGRlYWRydWxlcyIsIm9wdGlvbl93aXRoZGVhZGFnZW50cyIsIm9wdGlvbl93aXRoaXJyZXZlcnNpYmxlIiwiZGVjcmVhc2VfZm9udCIsImluY3JlYXNlX2ZvbnQiLCJzZXR0aW5nc19jbGllbnRfaWRfaW5wdXQiLCJzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRfZG9tIiwib3B0aW9uX2h0dHBfc3luY2giLCJkcm9wZG93biIsIm1vZGVsIiwiY3VycmVudF9pZCIsInNwZWMiLCJzcGVjX2lkIiwibGlzdF90IiwiYmFja2VuZF9vcHRpb25zIiwiYmFja2VuZF9zZWxlY3QiLCJib2RpZXMiLCJzZXRfYnV0dG9uIiwic2F2ZV9idXR0b24iLCJoZWFkIiwiYm9keSIsImZvb3QiLCJtb2RhbCIsImNvbnRlbnQiLCJzZXRfYWN0aW9uIiwic2V0dGluZ3NfY2xpZW50X2lkIiwieCIsInN5bmNoX2NoZWNrYm94X2RvbSIsImlzX2NoZWNrZWQiLCJpbnB1dCIsInZhbHVlIiwibW9kZWxfc2VlZCIsInNldF9hbmRfc2F2ZV9hY3Rpb24iLCJvbmxvYWQiLCJzcCIsInRvZ2dsZV9lbGVtZW50IiwicHJvamVjdGlvbiIsImNvbnRlbnQiLCJtb2RlbCIsIm9wdGlvbl9sYWJlbCIsImxhYmVsIiwiZXhwb3J0X2NvbnRyb2xzIiwiZXhwb3J0X3NlbGVjdF9pZCIsImV4cG9ydF9maWxlbmFtZV9pZCIsImV4cG9ydF9idXR0b25faWQiLCJleHBvcnRfZGF0YV9sYWJlbCIsImV4cG9ydF9mb3JtYXRzIiwiZXhwb3J0X2ZpbGVuYW1lIiwiZXhwb3J0X2J1dHRvbiIsImZvcm1hdCIsImV4cG9ydF9mb3JtYXRzX3NlbGVjdCIsIngiLCJkb2N1bWVudCIsImxhYmVsX25ld3MiLCJ0YWJfaXNfYWN0aXZlIiwiY291bnRlciIsInNpbXVsYXRpb25faW5mbyIsImxhc3RfdmFsdWUiLCJ0YWJfYWN0aXZlIiwidiIsImJhZGdlIiwiY291bnQiLCJhcmd1bWVudHMkMCIsImtleSIsImsiLCJ2ZXJzaW9uIiwib3B0Iiwic3RoIiwidGVzdCIsImRldiIsInRlc3QkMCIsIm5hdmxpIiwiZm9yY2VfY2xhc3MiLCJkZWNvcmF0aW9ucyIsImRlZmF1bHRfYXR0cmlidXRlcyIsImwiLCJhdHRyaWJ1dGVzIiwidGV4dCIsIm5hdnRhYnMiLCJuYXZfdGFiX2lkIiwidCIsInRpIiwibGkiLCJhX2NsYXNzIiwib25lbmF2Y29udGVudCIsImFjdGl2ZSIsImNsYXNzZXMiLCJuYXZjb250ZW50IiwiaWQiLCJjIiwiY2wiLCJpZCQwIiwiaWQkMSIsImxldmVsIiwiZGVidWciLCJpbmZvIiwibm90aWNlIiwid2FybmluZyIsImVycm9yIiwiZmF0YWwiLCJleHRyYWN0IiwidmFsdWUiLCJ2YWx1ZSQwIiwiZmVhdHVyZXMiLCJkZWZhdWx0JDAiLCJmZWF0dXJlIiwibWF0Y2hlcyIsImlucHV0X2NoYW5nZSIsImlucHV0X2RvbSIsInNpZ25hbF9oYW5kbGVyIiwiaWRfZG9tIiwiY3JlYXRlX21vZGFsIiwidGl0bGVfbGFiZWwiLCJib2R5Iiwic3VibWl0X2xhYmVsIiwic3VibWl0IiwiYnV0dG9uIiwiZm9ybSIsInByb2plY3RfaWRfbW9kYWxfaWQiLCJwcm9qZWN0X2lkX2lucHV0IiwibGlfbmV3IiwibGlfcHJlZnMiLCJwcm9qZWN0X2lkX2lucHV0X2RvbSIsImNvbnRlbnQiLCJzZXR0aW5nc19jbGllbnRfaWQiLCJ4IiwibW9kZWwiLCJtb2RlbF9wcm9qZWN0X2lzX2NvbXB1dGluZyIsIm1vZGVsX3Byb2plY3RfaWQiLCJjdXJyZW50X3Byb2plY3RfaWQiLCJsaV9jbGFzcyIsInNwYW5fY2xvc2UiLCJldmVudCIsImIiLCJjbGFzc2VzIiwiY29tcHV0aW5nIiwiYV9wcm9qZWN0IiwiYWNjIiwib25sb2FkIiwib25yZXNpemUiLCJzZXRfbW9kZWxfaW50ZXJ2ZW50aW9uIiwibW9kZWxfaW50ZXJ2ZW50aW9uIiwiY3JlYXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyIiwicGFyYW0iLCJjb250aW51ZV9zaW11bGF0aW9uIiwicGF1c2VfY29uZGl0aW9uIiwicGF1c2Vfc2ltdWxhdGlvbiIsInN0b3Bfc2ltdWxhdGlvbiIsInN0YXJ0X3NpbXVsYXRpb24iLCJzaW11bGF0aW9uX3BhcmFtZXRlciIsImludGVydmVuZV9zaW11bGF0aW9uIiwibW9kZWxfcGVydHVyYmF0aW9uIiwidGV4dCIsImZvY3VzX3JhbmdlIiwicmFuZ2UiLCJmaWxlX2lkIiwibGluZSIsInNpbXVsYXRpb25fdHJhY2UiLCJtYW5hZ2VyIiwiZGF0YV9zdHJpbmciLCJkYXRhIiwic2ltdWxhdGlvbl9vdXRwdXRzIiwiZGF0YV9iaWdzdHJpbmciLCJoaWRkZW5fY2xhc3MiLCJ2aXNpYmxlX2NsYXNzIiwiaWQiLCJpZCQwIiwiaWQkMSIsImlkJDIiLCJtZXNzYWdlX25hdl9pbmNfaWQiLCJtZXNzYWdlX25hdl9kZWNfaWQiLCJtZXNzYWdlX2ZpbGVfbGFiZWxfaWQiLCJpZCQzIiwiaWQkNCIsImlkJDUiLCJpZCQ2IiwiaWQkNyIsImlkJDgiLCJpZCQ5IiwiaWQkMTAiLCJ2aXNpYmxlX29uX3N0YXRlcyIsIm9wdCIsInN0aCIsImFfY2xhc3MiLCJtb2RlbCIsImN1cnJlbnRfc3RhdGUiLCJpbnB1dCIsImJ1dHRvbiIsImZvcm0iLCJjb250ZW50Iiwib25sb2FkIiwiZm9ybV9kb20iLCJpbnB1dF9kb20iLCJoYW5kbGVyIiwibW9kZWxfcGVydHVyYmF0aW9uIiwieCIsInNpZ25hbF9jaGFuZ2UiLCJzaWduYWxfaGFuZGxlciIsIm0iLCJpbnB1dCQwIiwiY29udGVudCQwIiwiZG9tIiwib25sb2FkJDAiLCJ2YWx1ZSIsInYiLCJmb3JtYXRfZmxvYXRfc3RyaW5nIiwibiIsImxlbmd0aCIsImlucHV0JDEiLCJjb250ZW50JDEiLCJvbmxvYWQkMSIsInJlc2V0X3ZhbHVlIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwic2V0X2Vycm9yX2luZGV4IiwiZXJyb3JfaW5kZXgiLCJzYW5pdGl6ZV9pbmRleCIsImluZGV4IiwiZXJyb3JzIiwiaW5kZXgkMCIsImluZGV4JDEiLCJnZXRfbWVzc2FnZSIsImVycm9yIiwibWVzYWdlX25hdl90ZXh0IiwibWVzc2FnZV9uYXZfZGVjIiwibWVzc2FnZV9uYXZfaW5jIiwibWVzc2FnZV9uYXYiLCJtZXNzYWdlIiwicmFuZ2UiLCJyYW5nZSQwIiwiZmlsZV9sYWJlbF90ZXh0IiwiZmlsZV9sYWJlbCIsImVycm9yX21lc3NhZ2VfdGV4dCIsImVycm9yX21lc3NhZ2UiLCJhbGVydF9tZXNzYWdlcyIsImNvbnRlbnQkMiIsImZpbGVfY2xpY2tfaGFuZGxlciIsImluZGV4X2NsaWNrX2hhbmRsZXIiLCJkZWx0YSIsImluY19jbGlja19oYW5kbGVyIiwiZGVjX2NsaWNrX2hhbmRsZXIiLCJvbmxvYWQkMiIsIm91dF9vZl9zeW5jIiwiYnV0dG9uJDAiLCJjb250ZW50JDMiLCJvbmxvYWQkMyIsInN0YXJ0X2J1dHRvbl9kb20iLCJidXR0b24kMSIsImNvbnRlbnQkNCIsIm9ubG9hZCQ0IiwiYnV0dG9uJDIiLCJjb250ZW50JDUiLCJvbmxvYWQkNSIsImJ1dHRvbl9kb20iLCJidXR0b24kMyIsImNvbnRlbnQkNiIsIm9ubG9hZCQ2IiwiYnV0dG9uJDQiLCJjb250ZW50JDciLCJvbmxvYWQkNyIsImJ1dHRvbiQ1IiwiY29udGVudCQ4Iiwib25sb2FkJDgiLCJjb250ZW50JDkiLCJsYWJlbCIsImRlYnVnIiwib25sb2FkJDkiLCJwcm9ncmVzc19iYXIiLCJwZXJjZW50X3NpZ25hbCIsInZhbHVlX3NpZ25hbCIsInMiLCJ0aW1lX3Byb2dyZXNzX2JhciIsInNpbXVsYXRpb25faW5mbyIsInN0YXR1cyIsInRpbWUiLCJ0aW1lJDAiLCJ0aW1lX3BlcmNlbnQiLCJ0aW1lX3BlcmNlbnQkMCIsImV2ZW50X3Byb2dyZXNzX2JhciIsImV2ZW50IiwiZXZlbnQkMCIsImV2ZW50X3BlcmNlbnRhZ2UiLCJldmVudF9wZXJjZW50YWdlJDAiLCJ0cmFja2VkX2V2ZW50cyIsInN0YXRlIiwidHJhY2tlZF9ldmVudHMkMCIsInRyYWNrZWRfZXZlbnRzX2NvdW50IiwidHJhY2tlZF9ldmVudHNfbGFiZWwiLCJlZmZpY2llbmN5X2RldGFpbCIsImN1cnJlbnRfZXZlbnQiLCJ0IiwiYWxsIiwiZiIsImNvbnRlbnQkMTAiLCJzZXRfc3RhdGVfbG9nIiwic3RhdGVfbG9nIiwibWFuYWdlciIsImVmZiIsIm9ubG9hZCQxMCIsInN0b3BwZWRfYm9keSIsInN0b3BwZWRfcm93IiwicGF1c2VkX3JvdyIsImluaXRpYWxpemluZ19ib2R5IiwicnVubmluZ19ib2R5IiwiZm9vdGVyIiwiY29udGVudCQxMSIsIm9ubG9hZCQxMSIsIm9ucmVzaXplIiwibmF2bGkiLCJjb250ZW50Iiwib25sb2FkIiwib25yZXNpemUiLCJwcm90b3R5cGUiLCJjcmVhdGVfaGFuZGxlciIsImxhYmVsIiwiaGVhZCIsInRhaWwiLCJvbl9sYWJlbCIsIndyYXBwZXIiLCJoYW5kbGVyIiwieCIsInBvc2l0aW9uIiwiY29uc3RydWN0b3JfbGludCIsImNyZWF0ZV9saW50IiwibWVzc2FnZSIsInNldmVyaXR5IiwiZnJvbSIsInRvIiwicmVzdWx0IiwiY29uc3RydWN0b3JfY2hhbmdlIiwiY3JlYXRlX2NoYW5nZSIsImNvbnN0cnVjdG9yX2xpbnRfY29uZmlndXJhdGlvbiIsImNyZWF0ZV9saW50X2NvbmZpZ3VyYXRpb24iLCJkZWZhdWx0X2NvbmZpZ3VyYXRpb24iLCJmcm9tVGV4dEFyZWEiLCJkb20iLCJjb25maWd1cmF0aW9uIiwiY29tbWFuZHMiLCJjcmVhdGVfZmlsZSIsIm9wdCIsInN0aCIsInRleHQiLCJ0eHQiLCJjb250ZW50IiwiciIsInIkMCIsInNldF9maWxlIiwiZmlsZV9pZCIsImNsb3NlX2ZpbGUiLCJzZXRfZmlsZV9jb21waWxlIiwicmFuayIsImNvbXBpbGUiLCJvcmRlcl9maWxlcyIsImZpbGVuYW1lcyIsImV4cG9ydF9jdXJyZW50X2ZpbGUiLCJmaWxlbmFtZSIsImRhdGEiLCJmaWxlX25ld19tb2RhbF9pZCIsImZpbGVfbmV3X2lucHV0X2lkIiwiZmlsZV9kcm9wZG93bl9tZW51X2lkIiwiZmlsZV9uZXdfbGlfaWQiLCJmaWxlX29wZW5fbGlfaWQiLCJmaWxlX29wZW5fc2VsZWN0b3JfaWQiLCJmaWxlX2Nsb3NlX2xpX2lkIiwiZmlsZV9leHBvcnRfbGlfaWQiLCJmaWxlX2NvbXBpbGVfY2hlY2tib3giLCJlbGVtZW50X2dldF9maWxlbmFtZSIsImVsZW1lbnQiLCJlbGVtZW50X3NldF9maWxlbmFtZSIsIm5hbWUiLCJmaWxlX25ld19pbnB1dCIsImZpbGVfbmV3X2lucHV0X2RvbSIsImZpbGVfY2hlY2tib3giLCJmaWxlX2lkIiwiaXNfY2hlY2tlZCIsImNoZWNrZWRfYXR0cmlidXRlIiwib3Blbl9pbnB1dCIsImRyb3Bkb3duIiwibW9kZWwiLCJoaWRlX29uX2VtcHR5IiwibCIsInJhbmsiLCJjdXJyZW50X2ZpbGVfcG9zIiwibG9jYWwiLCJjb21waWxlIiwibGlfY2xhc3MiLCJmaWxlX2xpIiwic2VwYXJhdG9yX2xpIiwibmV3X2xpIiwib3Blbl9saSIsImNsb3NlX2xpIiwiZXhwb3J0X2xpIiwibGlfbGlzdCIsImZpbGVuYW1lIiwieCIsImZpbGUiLCJvdXRfb2Zfc3luYyIsImNvbnRlbnQiLCJvcmRlcl9maWxlcyIsImZpbGVuYW1lcyIsImZpbGVfc2VsZWN0X2hhbmRsZXIiLCJvcGVuX2lucHV0X2RvbSIsImZpbGVzIiwib25sb2FkIiwiZXZlbnQiLCJ0YXJnZXQiLCJpZCIsIndpdGhfZmlsZSIsImhhbmRsZXIiLCJzZXRfY29udGVudCIsImZpbGVuYW1lIiwiZmlsZWNvbnRlbnQiLCJjdXJyZW50X2ZpbGVuYW1lIiwiciIsInIkMCIsIm1zZyIsInRvZ2dsZV9idXR0b25faWQiLCJwYW5lbF9oZWFkaW5nX2dyb3VwX2lkIiwiY29kZW1pcnJvcl9pZCIsImVkaXRvcl9wYW5lbF9pZCIsInNldF9lZGl0b3JfZnVsbCIsImVkaXRvcl9mdWxsIiwic2V0X2ZpbGVuYW1lIiwiZmlsZW5hbWUiLCJtb3ZlX2N1cnNvcl9ob29rIiwic2V0X21vdmVfY3Vyc29yIiwibG9jIiwiZiIsImZpbGVfbGFiZWwiLCJ0b2dnbGVfYnV0dG9uIiwibWVudV9lZGl0b3JfZmlsZV9jb250ZW50IiwiYnV0dG9ucyIsInBhbmVsX2hlYWRpbmciLCJjb250ZW50IiwidGV4dGFyZWEiLCJtb2RlbCIsImVycm9yX2xpbnQiLCJlcnJvcnMiLCJwb3NpdGlvbiIsInAiLCJoeWRyYXRlIiwiZXJyb3IiLCJyYW5nZSIsImZpbGVfaWQiLCJhY2MiLCJ2YWx1ZSIsInZhbHVlJDAiLCJzZXR1cF9saW50IiwianVtcF90b19saW5lIiwiY29kZW1pcnJvciIsImxpbmUiLCJtb2RlIiwiY29vcmRzIiwieCIsInRvcCIsImVsZW1lbnQiLCJtaWRkbGVIZWlnaHQiLCJzY3JvbGxMaW5lIiwib25sb2FkIiwibGludF9jb25maWciLCJjb25maWd1cmF0aW9uIiwiZ3V0dGVyX29wdGlvbnMiLCJndXR0ZXJfb3B0aW9uIiwiaWQiLCJ0aW1lb3V0IiwiaGFuZGxlciIsImNoYW5nZSIsInRpbWVvdXQkMCIsImRlbGF5IiwiaGFuZGxlX3RpbWVvdXQiLCJmaWxlbmFtZSQwIiwiY29kZW1pcnJvciQwIiwicG9zIiwiY2giLCJ0b2dnbGVfYnV0dG9uX2RvbSIsImVkaXRvcl9mdWxsJDAiLCJyZWZyZXNoIiwiY2FuZCIsImJlZyIsImZpcnN0IiwiZW4iLCJsYXN0Iiwib25yZXNpemUiLCJwcmludF9zdHJpbmciLCJzIiwibGlzdCIsInByaW50X25ld2xpbmUiLCJwcmludF9zaW5nbGVfYmluZGluZ19zdGF0ZSIsImEiLCJwcmludF9zaW5nbGVfaW50ZXJuYWxfc3RhdGUiLCJwcmludF9jb3VudGVyX2ludGVydmFsIiwiYiIsImEkMCIsImluZiIsIm9wZW5fcmFuZ2UiLCJpbmYkMCIsIm9wZW5fcmFuZ2UkMCIsImIkMCIsInN1cCIsImNsb3NlX3JhbmdlIiwic3VwJDAiLCJjbG9zZV9yYW5nZSQwIiwicHJpbnRfY291bnRlcl9zdGF0ZSIsInByaW50X3NpdGUiLCJzaXRlIiwiY291bnRlcl9vcHQiLCJiaW5kaW5nX29wdCIsInByb3Bfb3B0Iiwic2l0ZV9uYW1lIiwiaSIsInNpdGVfbmFtZSQwIiwiYWdlbnRfbmFtZSIsImJpbmRpbmdfdHlwZV9zeW1ib2wiLCJsaXN0JDAiLCJsaXN0JDEiLCJsaXN0JDIiLCJwcmludF9hZ2VudCIsImFnZW50IiwiaW50ZXJmYWNlJDAiLCJsaXN0JDMiLCJwcmludF9zaXRlX2dyYXBoIiwiYWdlbnRfbGlzdCIsInByaW50X21ldGhvZF9oYW5kbGVyIiwibWgiLCJ1bmNhdWdodCIsImNhdWdodCIsIngiLCJsIiwibmF2bGkiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJ0YWJfd2FzX2FjdGl2ZSIsImNvbnRlbnQiLCJtYW5hZ2VyIiwiciIsInRpdGxlIiwibSIsIm91dCIsImNvbnN0cmFpbnRzIiwicGFuZWxzIiwiYiIsImEiLCJsaXN0IiwibGVtbWEiLCJoeXAiLCJjb25jbHVzaW9uIiwic2l0ZV9ncmFwaCIsImxpc3QkNCIsImxpc3QkMCIsImxpc3QkMSIsImJvb2wiLCJsaXN0JDIiLCJsaXN0JDMiLCJsaXN0JDUiLCJsaXN0JDYiLCJ0ZXh0cyIsImNvbnN0cmFpbnRzX2RpdiIsInBhcmVudF9oaWRlIiwicGFyZW50X3Nob3duIiwib25sb2FkIiwib25yZXNpemUiLCJjcmVhdGVfY29udGFjdF9tYXAiLCJpZCIsImNvbG9yaW5nIiwiZXhwb3J0X2Zvcm1hdF9pZCIsImNvbmZpZ3VyYXRpb24iLCJleHBvcnRfZmlsZW5hbWVfaWQiLCJleHBvcnRfYnV0dG9uX2lkIiwiZXhwb3J0X2RhdGFfbGFiZWwiLCJleHBvcnRfZm9ybV9pZCIsImlubGluZV9jb250ZW50IiwiZXhwb3J0X2ZpbGVuYW1lIiwiZXhwb3J0X2J1dHRvbiIsImhhbmRsZXIiLCJleHBvcnRfZm9ybWF0c19zZWxlY3QiLCJjb250ZW50Iiwib25sb2FkIiwiZXhwb3J0X2Zvcm1hdCIsImV4cG9ydF9idXR0b25fdG9nZ2xlIiwieCIsImlzX2Rpc2FibGVkIiwiZmlsZW5hbWUiLCJkZWZhdWx0JDAiLCJyb290IiwiZXhwb3J0X3N2ZyIsInN2Z19zdHlsZV9pZCIsInN2Z19kaXZfaWQiLCJleHBvcnRfcG5nIiwiZXhwb3J0X2pzb24iLCJzZXJpYWxpemVfanNvbiIsImRhdGEiLCJkaXNwbGF5X2lkIiwiZXhwb3J0X2lkIiwiYWNjdXJhY3lfY2hvb3Nlcl9pZCIsIm5hdmxpIiwic2V0X3RhYl9pc19hY3RpdmUiLCJ0YWJfaXNfYWN0aXZlIiwidGFiX3dhc19hY3RpdmUiLCJzZXRfYWNjdXJhY3kiLCJhY2N1cmFjeSIsImV4dHJhY3RfY29udGFjdF9tYXAiLCJjb250YWN0IiwiYWNjIiwiYWNjJDAiLCJjb250YWN0JDAiLCJjb250YWN0X21hcF9qcyIsIm1hbmFnZXIiLCJtaCIsIngiLCJjb250YWN0X2pzb24iLCJtYXBfanNvbiIsImRhdGEiLCJjb250YWN0X21hcF90ZXh0IiwiY29uZmlndXJhdGlvbiIsIm9wdGlvbl9nZW4iLCJsIiwiYWNjdXJhY3lfY2hvb3NlciIsImNvbnRlbnQiLCJhY2N1cmFjeV9mb3JtIiwicGFyZW50X2hpZGUiLCJwYXJlbnRfc2hvd24iLCJvbmxvYWQiLCJ2YSIsInZhJDAiLCJvbnJlc2l6ZSIsImNyZWF0ZV9ncmFwaF9sb2dnZXIiLCJpZCIsIm9uX2NsaWNrIiwiZW1wdHlfc3BoZXJlIiwiZHVtbXlfbW9kZWwiLCJ0b3RhbF9pbnB1dF9pZCIsImZ3ZF9pbnB1dF9pZCIsImJ3ZF9pbnB1dF9pZCIsImRpc3BsYXlfaWQiLCJyZW5kZXJpbmdfY2hvb3Nlcl9pZCIsImFjY3VyYWN5X2Nob29zZXJfaWQiLCJuYXZsaSIsInNldF90YWJfaXNfYWN0aXZlIiwidGFiX2lzX2FjdGl2ZSIsInRhYl93YXNfYWN0aXZlIiwic2V0X3RyYWNrX2N1cnNvciIsInRyYWNrX2N1cnNvciIsInNldF9tb2RlbCIsIm1vZGVsIiwiaW5mbHVlbmNlX25vZGVfbGFiZWwiLCJyIiwiciQwIiwidXBkYXRlX21vZGVsX2dyYXBoIiwiZiIsIm0iLCJnIiwidXBkYXRlX21vZGVsIiwieCIsIm5vZGUiLCJvcmlnaW4iLCJvcmlnaW5fbGFiZWwiLCJpbmZsdWVuY2VtYXAiLCJ0b3RhbF9pbnB1dCIsImZ3ZF9pbnB1dCIsImJ3ZF9pbnB1dCIsIm5leHRfbm9kZSIsInByZXZfbm9kZSIsInJlY2VudGVyIiwidGMiLCJ0cmFja19jdXJzb3Jfc3dpdGNoIiwiZXhwb3J0X2NvbmZpZyIsImZpbGVuYW1lIiwibWFuYWdlciIsImFjY3VyYWN5IiwiaW5mbHVlbmNlc19zdHJpbmciLCJkYXRhIiwicmVuZGVyaW5nIiwibCIsInJlbmRlcmluZ19jaG9vc2VyIiwib3B0aW9uX2dlbiIsImFjY3VyYWN5X2Nob29zZXIiLCJpc19jZW50ZXIiLCJvcmlnaW5fc2hvcnRfb3B0IiwiaWQiLCJhIiwiaWQkMCIsImEkMCIsImpzb25fdG9fZ3JhcGgiLCJsb2dnZXIiLCJpbmZsdWVuY2VfbWFwIiwibm9kZXMiLCJkaXJlY3RpdmVzX29mX25vZGUiLCJqc29uIiwibGFiZWwiLCJwb3MiLCJjb250ZXh0dWFsX2hlbHAiLCJmaWxsY29sb3IiLCJwb3MkMCIsImNvbnRleHR1YWxfaGVscCQwIiwiZmlsbGNvbG9yJDAiLCJiaWdnZXN0X2lkIiwibiIsIm1heF9ydWxlX2lkIiwiZ2V0X2lkX29mX25vZGVfaWQiLCJub2RlX2lkIiwiZ2V0X2lkX29mX25vZGUiLCJkaXJlY3RpdmVzIiwicHJpbnRfbWFwcyIsIm9wdCIsIm1hcCIsInN0aCIsInNvdXJjZSIsInNvdXJjZV9pZCIsInRhcmdldCIsImxhYmVsX2xpc3QiLCJ0YXJnZXRfaWQiLCJsYWJlbF9zdHJpbmciLCJkaXJlY3RpdmVzJDAiLCJ0YWJsZV9vZl9pbmZsdWVuY2VzX2pzb24iLCJhY2MiLCJlIiwibmFtZXIiLCJvcmlnaW5faWRfb3B0Iiwib3JpZ2luX2lkIiwic3JjIiwiZHN0IiwiYnkiLCJvbiIsInYiLCJ2JDAiLCJwb3NpdGl2ZV9ieSIsInBvc2l0aXZlX29uIiwibmVnYXRpdmVfYnkiLCJuZWdhdGl2ZV9vbiIsInBvcF9jZWxsIiwidCIsInBvc2l0aXZlIiwiZmlsbF90YWJsZSIsImFjYyQwIiwiYnkkMCIsIm9uJDAiLCJieSQxIiwiYiIsIm9uJDEiLCJvIiwibGluZSIsImFjYyQxIiwiZHJhd190YWJsZSIsIm91dHMiLCJpbmZsdWVuY2Vfc3BoZXJlIiwiY29udGVudCIsImFjY3VyYWN5X2Zvcm0iLCJncmFwaF9mb3JtIiwic3BoZXJlIiwiZXJyb3IiLCJ0b3RhbCIsImJ3ZCIsImZ3ZCIsImluZmx1ZW5jZXMiLCJidWYiLCJmbXQiLCJsb2dnZXJfZ3JhcGgiLCJncmFwaCIsImdyYXBoX2pzb24iLCJuZWl0aGVyX2djX21lIiwiY3Vyc29yX3BvcyIsIm5vcl9nY19tZSIsInBhcmVudF9oaWRlIiwicGFyZW50X3Nob3duIiwib25sb2FkIiwidmEiLCJ2YSQwIiwib3JpZ2luX3JlZmluZWQiLCJvbnJlc2l6ZSIsIm5hdmxpIiwic2V0X3RhYl9pc19hY3RpdmUiLCJ0YWJfaXNfYWN0aXZlIiwidGFiX3dhc19hY3RpdmUiLCJzaXRlIiwiYSIsInByaW50X2VkZ2UiLCJsaXN0IiwiZCIsImMiLCJiIiwiY29udGVudCIsIm1hbmFnZXIiLCJtaCIsIm0iLCJzY2MiLCJzY2MkMCIsImxpc3RfZWRnZXMiLCJsaXN0JDAiLCJsaXN0JDEiLCJvdXRwdXQiLCJwYXJlbnRfaGlkZSIsInBhcmVudF9zaG93biIsIm9ubG9hZCIsIm9ucmVzaXplIiwidGFiIiwic2tpcCIsInBsdXJhbCIsInJpZ2h0c3VicGFuZWxfaWQiLCJuYXZsaSIsInJpZ2h0c3VicGFuZWwiLCJlZGl0b3JfZnVsbCIsImNoaWxkc19oaWRlIiwiYiIsImNvbnRlbnQiLCJpbml0X2RlYWRfcnVsZXMiLCJtb2RlbCIsIm1hbmFnZXIiLCJtaCIsImxpc3QiLCJhY2MiLCJydWxlIiwidGV4dCIsIndhcm5pbmdzIiwiaW5pdF9kZWFkX2FnZW50cyIsImFnZW50IiwicmFuZ2UiLCJpbml0X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmEiLCJjb250ZXh0X2xpc3QiLCJ0YWIkMCIsInNraXAkMCIsInBsdXJhbCQwIiwiZm10IiwiYSIsIm9ubG9hZCIsIm9ucmVzaXplIiwic2V0X3RhYl9pc19hY3RpdmUiLCJ0YWJfaXNfYWN0aXZlIiwic2V0X2Rpbl9pZCIsImRpbl9pZCIsIm1hbmFnZXIiLCJkaW5faWRzIiwiaWQiLCJvdXQiLCJkaW5fbGlzdCIsImRpbl9zZWxlY3QiLCJ4IiwiZGluX2RhdGEiLCJkaW4iLCJyIiwiYWNjIiwiZGluX2hlYWRlciIsImFsbCIsImkiLCJkYXRhIiwidiIsImJvZHkiLCJkaW5fdGFibGUiLCJ0aGVhZCIsImV4cG9ydF9jdXJyZW50X2RpbiIsInRvX3N0cmluZyIsIm1pbWUiLCJmaWxlbmFtZSIsImV4cG9ydF9jb25maWd1cmF0aW9uIiwiY29udGVudCIsIm5hdmxpIiwic3RhdGUiLCJzdGF0ZSQwIiwib25sb2FkIiwib25yZXNpemUiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJ0YWJfd2FzX2FjdGl2ZSIsImxpbmVfY291bnQiLCJzdGF0ZSIsInN0YXRlJDAiLCJuYXZsaSIsImNvbnRlbnQiLCJ4IiwieCQwIiwibGlzdCIsInRleHQiLCJtYW5hZ2VyIiwic3RhdGVfbG9nIiwicGFyZW50X2hpZGUiLCJwYXJlbnRfc2hvd24iLCJvbmxvYWQiLCJvbnJlc2l6ZSIsInNlbGVjdF9pZCIsInNldF90YWJfaXNfYWN0aXZlIiwidGFiX2lzX2FjdGl2ZSIsInNldF9jdXJyZW50X2ZpbGUiLCJjdXJyZW50X2ZpbGUiLCJ1cGRhdGVfb3V0cHV0cyIsImtleSIsIm1hbmFnZXIiLCJsaW5lcyIsImZpbGVfY291bnQiLCJzdGF0ZSIsInN0YXRlJDAiLCJuYXZsaSIsInhtbCIsInNlbGVjdCIsImZpbGVfbGluZV9pZHMiLCJjdXJyZW50X2ZpbGVfaWQiLCJmaWxlX29wdGlvbnMiLCJ4Iiwic2VsZWN0X2ZpbGUiLCJmaWxlX3NlbGVjdCIsImxpbmUiLCJmaWxlX2NvbnRlbnQiLCJzZWxlY3Rfb3V0cHV0cyIsInNlbGVjdF9kb20iLCJmaWxlaW5kZXgiLCJjb250ZW50IiwidCIsIm9ubG9hZCIsIm9ucmVzaXplIiwiY3JlYXRlX29ic2VydmFibGVfcGxvdCIsIm1haW5fZGl2X2lkIiwiZGl2X2Rpc3BsYXlfaWQiLCJleHBvcnRfaWQiLCJwbG90X3BvaW50c19pbnB1dF9pZCIsInBsb3Rfb2Zmc2V0X2lucHV0X2lkIiwic2V0X29mZnNldCIsIm9mZnNldCIsImRlZmF1bHRfcG9pbnQiLCJzZXRfcG9pbnRzIiwicG9pbnQiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJwbG90X3JlZiIsImhhc19wbG90Iiwic3RhdGUiLCJzdGF0ZSQwIiwiZXhwb3J0X2pzb24iLCJmaWxlbmFtZSIsIm1hbmFnZXIiLCJwbG90IiwiZGF0YSIsImV4cG9ydCQwIiwibWltZSIsInBsb3RfcG9pbnRzX2lucHV0IiwibWF4X29mZnNldCIsInBsb3Rfb2Zmc2V0X2lucHV0Iiwic2ltdWxhdGlvbl9pbmZvX29mZnNldF9tYXgiLCJzaW11bGF0aW9uX2luZm8iLCJwbG90X3NpemUiLCJ1cGRhdGVfb2Zmc2V0IiwidXBkYXRlX29mZnNldF9pbnB1dCIsInNpbXVsYXRpb25fbW9kZWwiLCJzaW11bGF0aW9uX2luZm8kMCIsIm9mZnNldF9tYXgiLCJvbGRfb2Zmc2V0Iiwib2Zmc2V0JDAiLCJvZmZzZXRfY3VycmVudCIsInBsb3Rfb2Zmc2V0X2lucHV0X2RvbSIsIngiLCJuZXdfb2Zmc2V0IiwicGxvdF9wYXJhbWV0ZXIiLCJwb2ludCQwIiwidXBkYXRlX3Bsb3QiLCJqc19wbG90Iiwib25sb2FkX3Bsb3RfcG9pbnRzX2lucHV0IiwicGxvdF9wb2ludHNfaW5wdXRfZG9tIiwianNfcG9pbnQiLCJldiIsInBsb3RfcG9pbnRzX3N0cmluZyIsInBsb3RfcG9pbnQkMCIsInBsb3RfcG9pbnRzX29wdGlvbiIsInBsb3RfcG9pbnRzIiwicGxvdF9wb2ludCIsInBsb3RfcG9pbnRfc3RyaW5nIiwiY29uZmlndXJhdGlvbiIsIm1vZGVsIiwib3V0IiwieG1sIiwiZXhwb3J0X2NvbnRyb2xzIiwiY29udGVudCIsInMiLCJvbmxvYWQiLCJ2YWx1ZSIsInBsb3RfY291bnQiLCJuYXZsaSIsIm9ucmVzaXplIiwiY3JlYXRlX3NuYXBzaG90IiwiaWQiLCJjb2xvcmluZyIsInNlbGVjdF9pZCIsImRpc3BsYXlfaWQiLCJmb3JtYXRfc2VsZWN0X2lkIiwic2V0X3RhYl9pc19hY3RpdmUiLCJ0YWJfaXNfYWN0aXZlIiwic2V0X2N1cnJlbnRfc25hcHNob3QiLCJjdXJyZW50X3NuYXBzaG90Iiwic3RyaW5nX3RvX2Rpc3BsYXlfZm9ybWF0Iiwic2V0X2Rpc3BsYXlfZm9ybWF0IiwiZGlzcGxheV9mb3JtYXQiLCJzbmFwc2hvdF9jb3VudCIsInN0YXRlIiwic3RhdGUkMCIsIm5hdmxpIiwiY29uZmlndXJhdGlvbl90ZW1wbGF0ZSIsImlkIiwiYWRkaXRpb25hbF9oYW5kbGVycyIsInMiLCJqc29uX2hhbmRsZXIiLCJrYXBwYV9oYW5kbGVyIiwiZmlsZW5hbWUiLCJkYXRhIiwiZG90X2hhbmRsZXIiLCJkZWZhdWx0X2hhbmRsZXJzIiwibW9kZWwiLCJzaW11bGF0aW9uX2luZm8iLCJjb25maWd1cmF0aW9uX2thcHBhIiwiY29uZmlndXJhdGlvbl9ncmFwaCIsInJlbmRlcl9zbmFwc2hvdF9ncmFwaCIsInNuYXBzaG90X2pzIiwic25hcHNob3QiLCJqc29uIiwiY29udGFjdF9tYXAiLCJ4Iiwic2VsZWN0X3NuYXBzaG90IiwiZG9tIiwiZmlsZWluZGV4IiwiaW5kZXgiLCJzaW11bGF0aW9uX291dHB1dCIsImluZGV4JDAiLCJtYW5hZ2VyIiwic25hcHNob3RfaWRzIiwic25hcHNob3RfaWQiLCJmIiwiZiQwIiwic2VsZWN0Iiwic25hcHNob3RzIiwiaSIsInNuYXBzaG90X2NsYXNzIiwiZW1wdHkiLCJzaW5nbGUiLCJtdWx0aXBsZSIsInhtbCIsImxpc3QiLCJzbmFwc2hvdF9maWxlIiwic25hcHNob3RfbGFiZWwiLCJzbmFwc2hvdF9zZWxlY3QiLCJzbmFwc2hvdF9jaG9vc2VyIiwidG9nZ2xlX2NvbnRyb2xzIiwia2FwcGEiLCJncmFwaCIsImV4cG9ydF9jb250cm9scyIsInNuYXBzaG90JDAiLCJrYXBwYV9zbmFwc2hvdF9kaXNwbGF5Iiwia2FwcGFfZ3JhcGhfZGlzcGxheSIsImZvcm1hdF9jaG9vc2VyIiwiY29udGVudCIsIm9ubG9hZCIsInNuYXBzaG90X3NlbGVjdF9kb20iLCJmb3JtYXRfc2VsZWN0X2RvbSIsInVwZGF0ZV9mb3JtYXQiLCJmb3JtYXRfdGV4dCIsImZvcm1hdCIsIm9ucmVzaXplIiwiY3JlYXRlX3N0b3J5X3JlbmRlcmluZyIsImlkIiwiZ3JhcGhfZGlzcGxheV9pZCIsInNldF90YWJfaXNfYWN0aXZlIiwidGFiX2lzX2FjdGl2ZSIsInRhYl93YXNfYWN0aXZlIiwibmF2bGkiLCJub25lX2NoZWNrYm94Iiwid2Vha19jaGVja2JveCIsInN0cm9uZ19jaGVja2JveCIsIm5vbmVfYm94Iiwid2Vha19ib3giLCJzdHJvbmdfYm94IiwibGF1bmNoX2J1dHRvbiIsImxpc3RfY29udHJvbCIsInN0b3J5X2xpc3QiLCJjbSIsImlkIiwic3RvcnlfbGlzdF9odG1sIiwic2VsZWN0X3N0b3JpZXMiLCJzZWxlY3Rfc3Rvcmllc19kb20iLCJzZXR1cF9mb3JtIiwibG9nX2NvbnRyb2wiLCJzdG9yeV9sb2ciLCJzZXRfaW5mbyIsImN1cnJlbnRfaW5mbyIsImxpbmUiLCJzdG9yeV9sb2dfaHRtbCIsImxvZ19kaXYiLCJsb2dfcGFuZWwiLCJzdG9yeV9ncmFwaCIsImNvbnRlbnQiLCJsaWZ0X3Jlc3VsdCIsIngiLCJlIiwiZG9fdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsIiwibWFuYWdlciIsImNhdXNhbCIsIndlYWsiLCJzdHJvbmciLCJ1cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwiLCJwcmVkX2lkIiwic2V0X2Ffc3RvcnkiLCJ2YSIsInYiLCJkIiwiZiIsImluc3BlY3Rfc3RvcmllcyIsImIiLCJhY2MiLCJwYXJlbnRfaGlkZSIsInBhcmVudF9zaG93biIsIm9ubG9hZCIsInRyYWNlIiwib25yZXNpemUiLCJuYXZfdGFiX2lkIiwibmF2Y29udGVudHNfaWQiLCJuYXZ0YWJzIiwicyIsInN0b3J5X2NsYXNzIiwibmF2Y29udGVudHMiLCJvbmxvYWQiLCJvbnJlc2l6ZSIsInN5bmMiLCJpbml0IiwibG9vcCIsImgiLCJ0IiwibG9vcF9zeW5jIiwib25sb2FkIiwib25sb2FkIiwibWFpbiIsIngiXSwic291cmNlcyI6WyIvYnVpbHRpbi8raW50NjQuanMiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLytmYWlsLmpzIiwiL2J1aWx0aW4vK3N0ZGxpYi5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rYmFja3RyYWNlLmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytpZWVlXzc1NC5qcyIsIi9idWlsdGluLytlZmZlY3QuanMiLCIvYnVpbHRpbi8rZnNfbm9kZS5qcyIsIi9idWlsdGluLytmcy5qcyIsIi9idWlsdGluLyt1bml4LmpzIiwiL2J1aWx0aW4vK2ZzX2Zha2UuanMiLCIvYnVpbHRpbi8rbmF0LmpzIiwiL2J1aWx0aW4vK2dyYXBoaWNzLmpzIiwiL2J1aWx0aW4vK3J1bnRpbWVfZXZlbnRzLmpzIiwiL2J1aWx0aW4vK21hcnNoYWwuanMiLCIvYnVpbHRpbi8raW8uanMiLCIvYnVpbHRpbi8rZ2MuanMiLCIvYnVpbHRpbi8rYmlnYXJyYXkuanMiLCIvYnVpbHRpbi8rcGFyc2luZy5qcyIsIi9idWlsdGluLytpbnRzLmpzIiwiL2J1aWx0aW4vK2hhc2guanMiLCIvYnVpbHRpbi8rb2JqLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvYnVpbHRpbi8ranNsaWJfanNfb2Zfb2NhbWwuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLmpzIiwiL2J1aWx0aW4vK21kNS5qcyIsIi9idWlsdGluLytzdHIuanMiLCIvYnVpbHRpbi8rbGV4aW5nLmpzIiwiL2J1aWx0aW4vK2FycmF5LmpzIiwiL2J1aWx0aW4vK2RvbWFpbi5qcyIsIi9idWlsdGluLytzeW5jLmpzIiwiL2J1aWx0aW4vK3dlYWsuanMiLCIvYnVpbHRpbi8rcHJuZy5qcyIsIi9idWlsdGluLyt6c3RkLmpzIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbEF0b21pYy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9wZXJ2YXNpdmVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zZXEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL29wdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZWl0aGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9yZXN1bHQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2Jvb2wubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3VjaGFyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9saXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9pbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL21hcnNoYWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL29iai5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvaW50NjQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL25hdGl2ZWludC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvbGV4aW5nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9wYXJzaW5nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zZXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL21hcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxMYXp5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zdHJlYW0ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsRm9ybWF0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9wcmludGYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2FyZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcHJpbnRleGMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2Z1bi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZ2MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2RpZ2VzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcmFuZG9tLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9oYXNodGJsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC93ZWFrLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9mb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3NjYW5mLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jYWxsYmFjay5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsT08ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbE1vZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZ2VubGV4Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9lcGhlbWVyb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2ZpbGVuYW1lLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9iaWdhcnJheS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtY29tcGlsZXIvcnVudGltZS9qc29vX3J1bnRpbWVfXy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtY29tcGlsZXIvcnVudGltZS9qc29vX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2pzX29mX29jYW1sX18ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvanMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2RvbS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvdHlwZWRfYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2ZpbGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2RvbV9odG1sLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9mb3JtLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC94bWxIdHRwUmVxdWVzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvd29ya2VyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC93ZWJTb2NrZXRzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC93ZWJHTC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvcmVnZXhwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC91cmwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3N5c19qcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvcmVzaXplT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3BlcmZvcm1hbmNlT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL211dGF0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2pzdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2pzb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2NTUy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvZG9tX2V2ZW50cy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvZG9tX3N2Zy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvZXZlbnRTb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2ZpcmVidWcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2dlb2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9pbnRlcnNlY3Rpb25PYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvaW50bC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvY2F0ZWdvcnkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2ZtdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvY3NldC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvcG1hcmsubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2F1dG9tYXRhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9jb2xvcl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2dyb3VwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9jb3JlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9lbWFjcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvc3RyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9nbG9iLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9wZXJsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9wY3JlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9wb3NpeC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci94bWxfd3JhcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci94bWxfc3RyZWFtLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi90eXhtbC9mdW5jdG9yL3htbF9wcmludC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci94bWxfaXRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci9zdmdfZi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci9odG1sX2YubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL3R5eG1sX3htbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvdHl4bWxfc3ZnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi90eXhtbC90eXhtbF9odG1sLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZWFjdGl2ZURhdGEvcmVhY3RpdmVEYXRhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC10eXhtbC9qc19vZl9vY2FtbF90eXhtbF9fLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC10eXhtbC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLXR5eG1sL3R5eG1sX2Nhc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLXR5eG1sL3R5eG1sX2pzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X3N3aXRjaC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9zZXEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3Rfc3RyZWFtLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9wcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3RfbGlzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9wb29sLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X212YXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3RfbXV0ZXgubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3RfY29uZGl0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3RfcmVhY3QvbHd0X3JlYWN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvanNfb2Zfb2NhbWxfbHd0X18ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9sd3RfeG1sSHR0cFJlcXVlc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9sd3RfanMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9sd3RfanNvbnAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9sd3RfanNfZXZlbnRzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvbHd0X2ZpbGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9qc19vZl9vY2FtbF9sd3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvZWFzeS1mb3JtYXQvZWFzeV9mb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2JpbmlvdS9iaV91dGlsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfc2hhcmUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2JpbmlvdS9iaV9pbmJ1Zi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX291dGJ1Zi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX3ZpbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2JpbmlvdS9iaV9zdHJlYW0ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2JpbmlvdS9iaV9pby5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX2R1bXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3lvanNvbi95b2pzb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2F0ZGdlbi1ydW50aW1lL3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2F0ZGdlbi1ydW50aW1lL292X3J1bi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYXRkZ2VuLXJ1bnRpbWUvb2pfcnVuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9hdGRnZW4tcnVudGltZS9vYl9ydW4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2F0ZGdlbi1ydW50aW1lL2pzb25fYWRhcHRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2R5bmFtaWNBcnJheS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2xhcmdlQXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy90b29scy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2pzb25VdGlsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvc3RvcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3NldE1hcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL21vZHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9vcHRpb25fdXRpbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2xvYy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3BwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvdmFsTWFwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvcmVzdWx0X3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9yZW5hbWluZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3JhbmRvbV90cmVlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvcHBfaHRtbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL29wZXJhdG9yLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvbmJyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvRXhjZXB0aW9uRGVmbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL25hbWVkRGVjbHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9saXN0X3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9pbnRDb2xsZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvaW5maW5pdGVfYnVmZmVycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2hhc2hlZF9saXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvZnJhY3Rpb25zLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvZmlmby5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2NyYzMyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvY29sb3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9jaXJjdWxhcl9idWZmZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvY2FjaGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9iaWdidWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9iYXNlNjQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaXRlR3JhcGhzL3VzZXJfZ3JhcGgubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaXRlR3JhcGhzL3NpZ25hdHVyZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpdGVHcmFwaHMvc25hcHNob3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaXRlR3JhcGhzL2FnZW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2l0ZUdyYXBocy9lZGdlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpdGVHcmFwaHMvbmF2aWdhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vcmF3X21peHR1cmUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL2FsZ19leHByLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9jb250YWN0X21hcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vcGF0dGVybi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vbWF0Y2hpbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL2luc3RhbnRpYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL3ByaW1pdGl2ZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL2xLYXBwYS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vcGF0dGVybl9jb21waWxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vcGF0dGVybl9kZWNvbXBpbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9tb2RlbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0va2FwcGFfcHJpbnRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vY29uZmlndXJhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vYWxnX2V4cHJfZXh0cmEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL3RyYWNlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi9jb3VudGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi9kYXRhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi9mbHV4bWFwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi9yb290cy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vaW5zdGFuY2VzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi9leHByX2ludGVycHJldGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi9nZW5lcmljX3J1bGVfaW50ZXJwcmV0ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL3N0YXRlX2ludGVycHJldGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi9yZXBsYXkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2FzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIvY291bnRlcnNfY29tcGlsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2xLYXBwYV9jb21waWxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva3BhcnNlcjQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seSIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIvY3N0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2xleGVyNC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2ZpbGVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5IiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2Ftb2hhX21waS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIvZXZhbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIvZXZhbHVhdG9yLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvdHlwZV9pbnRlcmZhY2UvcHVibGljX2RhdGEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS92ZXJzaW9uL3ZlcnNpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvc3VwZXJhcmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvc3VwZXJhcmdUay5ub3RrLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL2NvbW1vbl9hcmdzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL3J1bl9jbGlfYXJncy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9wcm9ncmVzc19yZXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkva2FwcGFfZmlsZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvcHBfc3ZnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL3BhcmFtZXRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9vdXRwdXRzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL2thc2ltX2FyZ3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvY2xpX2luaXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvYWdlbnRfYXJncy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2xvZ2dpbmcvbG9nZ2Vycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2xvZ2dpbmcvbG9nZ2Vyc19zdHJpbmdfb2Zfb3AubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGFzc2ljYWxfZ3JhcGhzL2dyYXBoX2xvZ2dlcnNfc2lnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xhc3NpY2FsX2dyYXBocy9ncmFwaF9sb2dnZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xhc3NpY2FsX2dyYXBocy9ncmFwaF9qc29uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9zeW1ib2xfdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wYXJhbWV0ZXJzL3JlbWFuZW50X3N0YXRlX3NpZ25hdHVyZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvZXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wYXJhbWV0ZXJzL3JlbWFuZW50X3BhcmFtZXRlcnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wYXJhbWV0ZXJzL29kZV9hcmdzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9oZWFkZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9maWxlTmFtZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wYXJhbWV0ZXJzL2dldF9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9lcnJvcl9oYW5kbGVycy9leGNlcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9lcnJvcl9oYW5kbGVycy9saWZ0X2Vycm9yX2xvZ3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wcm9maWxpbmcvc3RvcnlQcm9maWxpbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL21hcF93cmFwcGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy93b3JraW5nX2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL2ludF9zdG9yYWdlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy91bmlvbl9maW5kLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy90b29sc19rYXNhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy9taXNjX3NhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy9oYXNoLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy9ncmFwaHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL2RpY3Rpb25hcnkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy90aWNrX3N0b3JpZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9ncmFwaF9jbG9zdXJlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvY2F1c2FsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvcHJlZGljYXRlX21hcHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9wcmlvcml0eS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3N0b3J5X2pzb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9jZmxvd19oYW5kbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cva2FwcGFfaW5zdGFudGlhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3BvX2N1dC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3BzZXVkb19pbnZlcnNlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvYmxhY2tib2FyZF9nZW5lcmF0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvYmxhY2tib2FyZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3Byb3BhZ2F0aW9uX2hldXJpc3RpY3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9nZW5lcmljX2JyYW5jaF9hbmRfY3V0X3NvbHZlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2JsYWNrX2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9kYWcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy91dGlsaXRpZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy91dGlsaXRpZXNfZXhwZXJ0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvY2Zsb3dfanNfaW50ZXJmYWNlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvY29tcHJlc3Npb25fbWFpbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2thc3Rvcl9tcGkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9kYWcyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2FwaV9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvYXBpX3R5cGVzX2oubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvc3dpdGNobWFuX2NsaWVudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9tcGlfbWVzc2FnZV9qLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL21waV9hcGkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvYXBpX2RhdGEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvZmFrZXppcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9rYXBwYV9mYWNhZGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvbWFuYWdlcl9zaW11bGF0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2thc3Rvcl9jbGllbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkva2FzYV9jbGllbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkva2Ftb2hhX2NsaWVudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9lbnZpcm9ubWVudF9tZW1vcnkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvYXBpX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N0YXRlX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9jb21tb25fc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL0pzTm9kZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvcmVzdF9hcGkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N0YXRlX3NldHRpbmdzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS93ZWJfd29ya2VyX2FwaS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGVfcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGVfcHJvamVjdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGVfZmlsZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGVfc2ltdWxhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvcGFuZWxfcHJvamVjdHNfY29udHJvbGxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvbW9kYWxfcHJlZmVyZW5jZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpX2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvcGFuZWxfcHJvamVjdHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N0YXRlX3BlcnR1cmJhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvcGFuZWxfc2V0dGluZ3NfY29udHJvbGxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvcGFuZWxfc2V0dGluZ3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9hYm91dC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvY29kZW1pcnJvci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvbWVudV9lZGl0b3JfZmlsZV9jb250cm9sbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9tZW51X2VkaXRvcl9maWxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdWJwYW5lbF9lZGl0b3JfY29udHJvbGxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3VicGFuZWxfZWRpdG9yLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS91dGlsaXR5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfY29uc3RyYWludHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2pzX2NvbnRhY3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3dpZGdldF9leHBvcnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9jb250YWN0X21hcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvanNfZ3JhcGhsb2dnZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9pbmZsdWVuY2VzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfcG9seW1lcnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9lZGl0b3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9mbHV4Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfbG9nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfb3V0cHV0cy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvanNfcGxvdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX3Bsb3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2pzX3NuYXBzaG90Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfc25hcHNob3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2pzX3N0b3J5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfc3Rvcmllcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvcGFuZWxfdGFiLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZV91aS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvSnNTaW0ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3N0ZF9leGl0Lm1sIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QSxDOztHOzs7UTtTOzs7RztJO0k7STtHO0U7Ozs7R0EwT0EsU0FBU0EsbUJBQW1CQyxHQUFLLFNBQVFBLFdBQVk7R0N6THJELFNBQVNDLGdCQUFnQkMsR0FBR0M7SUFDMUIsR0FBR0QsUUFBUTtJQUNYLEdBQUlDLFVBQVUsT0FBUUEsU0FBU0Q7SUFDL0IsSUFBSUUsUUFBUUM7SUFDWixPQUFRO0tBQ04sR0FBSUgsT0FBT0UsS0FBS0Q7S0FDaEJEO0tBQ0EsR0FBSUEsUUFBUSxPQUFPRTtLQUNuQkQsS0FBS0E7S0FDTEU7S0FDQSxHQUFJQSxRQUNGRjs7R0FLTjtHRDdDc0IsSUFBbEJHLG9CQUFvQkM7R0VBeEIsU0FBU0Msb0JBQXFCQyxLQUFPLE1BQU1BLElBQUs7R0M0SDNCLElBQWpCQztHRHJGSixTQUFTQztJQUNQSCxvQkFBb0JFO0dBQ3RCO0dGckNBLFNBQVNFLFFBQVNDLElBQUdDLElBQUdDO0lBQ3RCQyxVQUFVSDtJQUNWRyxVQUFVRjtJQUNWRSxVQUFVRDtHQUNaO0dBQ0FIO0dBQ0FBO2VBQ0UsV0FBV0EsUUFBUUksU0FBUUEsU0FBUUEsU0FEWjtHQUl6Qko7YUFBdUNaO0tBQ3JDLEdBQUlnQixVQUFVaEIsTUFBTTtLQUNwQixHQUFJZ0IsVUFBVWhCLE1BQU07S0FDcEIsR0FBSWdCLFVBQVVoQixNQUFNO0tBQ3BCLEdBQUlnQixVQUFVaEIsTUFBTTtLQUNwQixHQUFJZ0IsVUFBVWhCLE1BQU07S0FDcEIsR0FBSWdCLFVBQVVoQixNQUFNO0tBQ3BCO0lBUDJCO0dBUzdCWTthQUFzQ1o7S0FDcEMsSUFBSWUsS0FBS0MsZUFDTEMsTUFBTWpCO0tBQ1YsR0FBSWUsS0FBS0UsS0FBSztLQUNkLEdBQUlGLEtBQUtFLEtBQUs7S0FDZCxHQUFJRCxVQUFVaEIsTUFBTTtLQUNwQixHQUFJZ0IsVUFBVWhCLE1BQU07S0FDcEIsR0FBSWdCLFVBQVVoQixNQUFNO0tBQ3BCLEdBQUlnQixVQUFVaEIsTUFBTTtLQUNwQjtJQVQwQjtHQVc1Qlk7O0tBQ0U7TUFBSUMsT0FBT0c7TUFDUEYsT0FBT0UsV0FBV0g7TUFDbEJFLE9BQU9DLFdBQVdGO0tBQ3RCLFdBQVdGLFFBQVFDLElBQUlDLElBQUlDO0lBSkw7R0FNeEJIO2FBQWtDWjtLQUNoQztNQUFJYSxLQUFLRyxVQUFVaEI7TUFDZmMsS0FBS0UsVUFBVWhCLFFBQVFhO01BQ3ZCRSxLQUFLQyxVQUFVaEIsUUFBUWM7S0FDM0IsV0FBV0YsUUFBUUMsSUFBSUMsSUFBSUM7SUFKTDtHQU14Qkg7YUFBa0NaO0tBQ2hDO01BQUlhLEtBQUtHLFVBQVVoQjtNQUNmYyxLQUFLRSxVQUFVaEIsUUFBUWE7TUFDdkJFLEtBQUtDLFVBQVVoQixRQUFRYztLQUMzQixXQUFXRixRQUFRQyxJQUFJQyxJQUFJQztJQUpMO0dBTXhCSDthQUFrQ1o7S0FDaEM7TUFBSWEsS0FBS0csVUFBVWhCO01BQ2ZjLE1BQU9ELEtBQUtQLHlCQUEwQlUsVUFBVWhCLE9BQU9nQixVQUFVaEI7TUFDakVlO1NBQU9ELEtBQUtSLHlCQUEwQlUsVUFBVWhCLE9BQU9nQixVQUFVaEI7VUFBT2dCLFVBQVVoQjtLQUN0RixXQUFXWSxRQUFRQyxJQUFJQyxJQUFJQztJQUpMO0dBTXhCSDtlQUNFLFFBQVFJLFVBQVFBLFVBQVFBLGNBREM7R0FHM0JKLHFDQUNFLE9BQVFJLGtCQURnQjtHQUcxQko7YUFBa0NaO0tBQ2hDLFdBQVdZLFFBQVFJLFVBQVVoQixNQUFNZ0IsVUFBVWhCLE1BQU1nQixVQUFVaEI7SUFEdkM7R0FHeEJZO2FBQWlDWjtLQUMvQixXQUFXWSxRQUFRSSxVQUFRaEIsTUFBTWdCLFVBQVFoQixNQUFNZ0IsVUFBUWhCO0lBRGxDO0dBR3ZCWTthQUFrQ1o7S0FDaEMsV0FBV1ksUUFBUUksVUFBUWhCLE1BQU1nQixVQUFRaEIsTUFBTWdCLFVBQVFoQjtJQURqQztHQUd4Qlk7YUFBeUNUO0tBQ3ZDQSxJQUFJQTtLQUNKLEdBQUlBLFFBQVEsT0FBT2E7S0FDbkIsR0FBSWI7TUFBUTtjQUNDUztlQUFTSSxXQUFXYjtlQUNWYSxXQUFXYixJQUFNYSxnQkFBaUJiO2VBQ2xDYSxXQUFXYixJQUFNYSxnQkFBaUJiO0tBRXpELEdBQUlBO01BQ0Y7Y0FBV1M7a0JBQ1NJLFdBQVliLFFBQ1hhLFdBQVliLFNBQVlhLGdCQUFpQmI7S0FDaEUsV0FBV1MsY0FBY0ksV0FBWWI7SUFaUjtHQWMvQlM7YUFBbURUO0tBQ2pEQSxJQUFJQTtLQUNKLEdBQUlBLFFBQVEsT0FBT2E7S0FDbkIsR0FBSWI7TUFDRjtjQUFXUztlQUNSSSxXQUFXYixJQUFNYSxnQkFBaUJiO2VBQ2xDYSxXQUFXYixJQUFNYSxnQkFBaUJiO2VBQ2xDYSxXQUFXYjtLQUNoQixHQUFJQTtNQUNGO2NBQVdTO2VBQ1JJLFdBQVliLFNBQVlhLGdCQUFpQmIsR0FDekNhLFdBQVliO0tBRWpCLFdBQVdTLFFBQVNJLFdBQVliO0lBYk87R0FlekNTO2FBQTBDVDtLQUN4Q0EsSUFBSUE7S0FDSixHQUFJQSxRQUFRLE9BQU9hO0tBQ2IsSUFBRkUsSUFBS0Y7S0FDVCxHQUFJYjtNQUNGO2NBQVdTO2VBQ1JJLFdBQVdiLElBQU1hLGdCQUFpQmI7ZUFDbENhLFdBQVdiLElBQU1lLFVBQVdmO2VBQzNCYSxpQkFBa0JiO0tBQ2YsSUFBTGdCLE9BQVFIO0tBQ1osR0FBSWI7TUFDRjtjQUFXUztlQUNSSSxXQUFZYixTQUFZYSxnQkFBaUJiO2VBQ3pDYSxpQkFBbUJiO2VBQ3BCZ0I7S0FDSixXQUFXUCxRQUFVSSxpQkFBbUJiLFFBQVNnQixNQUFNQTtJQWZ6QjtHQWlCaENQOztLQUNFSSxVQUFXQSxlQUFpQkE7S0FDNUJBLFdBQVlBLGVBQWlCQTtLQUM3QkEsVUFBV0E7SUFIWTtHQUt6Qko7O0tBQ0VJLFdBQVlBLGdCQUFrQkE7S0FDOUJBLFdBQVlBLGdCQUFrQkE7S0FDOUJBLFVBQVVBO0lBSGE7R0FLekJKO2FBQXNDWjtLQUNwQztNQUFJb0I7TUFDQUMsVUFBVUw7TUFDVk0sVUFBVXRCO01BQ1Z1QixlQUFlWDtLQUNuQixNQUFPUyxpQkFBaUJDLGFBQWMsQ0FDcENGLFVBQ0FFO0tBRUYsTUFBT0YsWUFBYTtNQUNsQkE7TUFDQUc7TUFDQSxHQUFJRixpQkFBaUJDLGNBQWU7T0FDbENDO09BQ0FGLFVBQVVBLFlBQVlDOztNQUV4QkE7O0tBRUYsa0JBQW9CQyxtQkFBb0JGO0lBbEJkO0dBb0I1QlQ7YUFBa0NZO0tBRTFCLElBQUZ4QixJQUFJZ0I7S0FDUixHQUFJUSxZQUFZYjtLQUNQLElBQUxRLE9BQU9uQixPQUFPd0I7S0FDbEIsR0FBSXhCLGVBQWVBLElBQUlBO0tBQ3ZCLEdBQUl3QixlQUFlQSxJQUFJQTtLQUNqQixJQUFGQyxJQUFJekIsVUFBVXdCO0tBQ2xCLEdBQUlMLGVBQWVNLElBQUlBO0tBQ3ZCLE9BQU9BO0lBVGU7R0FXeEJiO2FBQWtDWTtLQUUxQixJQUFGeEIsSUFBSWdCO0tBQ1IsR0FBSVEsWUFBWWI7S0FDUCxJQUFMUSxPQUFPbkI7S0FDWCxHQUFJQSxlQUFlQSxJQUFJQTtLQUN2QixHQUFJd0IsZUFBZUEsSUFBSUE7S0FDakIsSUFBRnBCLElBQUlKLFVBQVV3QjtLQUNsQixHQUFJTCxlQUFlZixJQUFJQTtLQUN2QixPQUFPQTtJQVRlO0dBV3hCUSxxQ0FDRSxPQUFPSSxVQUFXQSxjQURNO0dBRzFCSjs7S0FDRSxRQUFTSSxpQkFBaUJULGtCQUFrQlMsVUFBVVQ7Y0FBbUJTO0lBRC9DO0dBRzVCSjs7S0FDRSxRQUFRSTthQUNBQTthQUNBQTthQUNDQTthQUNEQTthQUNBQTthQUNDQTthQUNEQTtJQVJrQjtHQVU1Qko7ZUFDRSxPQUFPSSxXQUFZQSxzQkFESTtHQUd6Qko7ZUFDRSxPQUFTSSx5QkFBNEJBLGNBRGQ7R0F1RHpCLFNBQVNVLG9CQUFxQjFCO0lBQzVCLFdBQVdZLFFBQVFaLGNBQWVBLG9CQUFzQkE7R0FDMUQ7R0FHQSxTQUFTMkIsb0JBQXFCM0IsR0FBSyxPQUFPQSxVQUFVO0dBakNwRCxTQUFTNEIsdUJBQXVCNUIsR0FBSyxTQUFRQSxVQUFXO0dBaEJ4RCxTQUFTNkIsZUFBZ0I3QixHQUFLLE9BQU9BLFFBQVE7R0MyZTdDLFNBQVM4Qix1QkFBdUI5QixHQUFLLE9BQU9BLEVBQUU7R0cxbEI5QyxTQUFTK0IsZ0JBQWdCN0I7SUFDWCxJQUFSOEIsVUFBVUM7SUFFZCxHQUFHRCxXQUNHQSxlQUNBQSxZQUFZOUIsTUFBTWdDO0tBQ3RCLE9BQU9GLFlBQVk5QjtJQUNyQixHQUFHK0IsOEJBQ0dBLDJCQUEyQi9CO0tBQy9CLE9BQU8rQiwyQkFBMkIvQjtHQUN0QztHQ3BHK0IsSUFBM0JpQztHQUVKLENBQUE7TUFDUSxJQUFGL0IsSUFBSTJCO01BQ1IsR0FBRzNCLE1BQU04QixVQUFVO09BQ1gsSUFBRjdCLElBQUlEO09BQ1IsSUFBVSxJQUFGZ0MsT0FBT0EsSUFBSS9CLFVBQVUrQjtRQUFJLEdBQzVCL0IsRUFBRStCLFVBQVc7U0FBRUQ7U0FBZ0M7O2dCQUN6QzlCLEVBQUUrQjtTQUNURCwrQkFBK0I5QixFQUFFK0I7O1NBQzlCOztLQVJWOztHQ3VKRCxTQUFTQywyQkFBMkJDLEtBQUtDO0lBRXZDLEtBQUlELGdCQUFnQkMsU0FBU0Q7S0FBZUEsbUJBQW1CTDtJQUMvRCxPQUFPSztHQUNUO0dBYkEsU0FBU0UsNEJBQTRCRixLQUFLQztJQUN4QyxPQUFHSjtjQUNNRSwyQkFBMkJDLEtBQUtDO2NBQzdCRDtHQUNkO0dKaEpBLFNBQVNHLG9CQUFxQmhDLEtBQUtpQztJQUFPLE1BQU1GLGdDQUFnQy9CLEtBQUtpQztHQUFPO0dENHFCNUYsU0FBU0MsdUJBQXVCM0MsR0FBSyxPQUFPQSxFQUFFO0dDcHFCOUMsU0FBUzRDLHVCQUF3Qm5DLEtBQUtvQztJQUNwQ0osb0JBQXFCaEMsS0FBS2tDLHVCQUF1QkU7R0FDbkQ7R0FhQSxTQUFTQyxzQkFBdUJEO0lBQzlCRCx1QkFBdUJsQyxtQ0FBbUNtQztHQUM1RDtHSzVCQSxTQUFTRSxrQkFBbUJDO0lBQzFCQSxNQUFNbEIsdUJBQXVCa0I7SUFDckIsSUFBSkMsTUFBTUQ7SUFDVixHQUFJQyxVQUFVSDtJQUNSO0tBQUZJOzs7Ozs7Ozs7Ozs7SUFJSixJQUFXLElBQUZkLE9BQU9BLElBQUlhLEtBQUtiLElBQUs7S0FDdEIsSUFBRmUsSUFBSUgsV0FBV1o7S0FDbkIsT0FBUWU7O1FBRU5ELGlCQUFpQjs7O1FBRWpCQSxjQUFjQyxHQUFHOztRQUVqQkQsZ0JBQWdCOztRQUVoQkEsb0JBQW9COzs7Ozs7Ozs7O1FBR3BCQTtRQUNBLE1BQU9DLElBQUVILGVBQWVaLFNBQVNlLFVBQVVBLE9BQVEsQ0FDakRELFVBQVVBLGVBQWVDLEdBQUdmO1FBRTlCQTtRQUNBOztRQUVBYztRQUNBZDtRQUNBLE1BQU9lLElBQUVILGVBQWVaLFNBQVNlLFVBQVVBLE9BQVEsQ0FDakRELFNBQVNBLGNBQWNDLEdBQUdmO1FBRTVCQTs7O1FBRUFjOztRQUVBQSxhQUFhOztRQUViQSxhQUFhOztRQUViQSxhQUFhQSxvQkFBb0I7O1FBRWpDQSxZQUFZOzs7O1FBRVpBLHFCQUFxQkEsU0FBU0MsR0FBRzs7OztRQUVqQ0Q7UUFBcUJBO1FBQ3JCQSxTQUFTQztRQUFrQjs7O0lBRy9CLE9BQU9EO0dBQ1Q7R0FJQSxTQUFTRSx1QkFBdUJGLEdBQUdHO0lBQ2pDLEdBQUlILGFBQWFHLFlBQVlBO0lBQ3JCLElBQUpKLE1BQU1JO0lBRVYsR0FBSUgsaUJBQWlCQSxjQUFjQSxxQkFBcUJEO0lBQ3hELEdBQUlDLFlBQWEsQ0FDZixHQUFJQSxhQUFhRCxVQUNqQixHQUFJQyxjQUFjRDtJQUdULElBQVBLO0lBQ0osR0FBSUosb0JBQW9CQTtLQUN0QixJQUFXLElBQUZkLElBQUlhLEtBQUtiLElBQUljLFNBQVNkLEtBQUtrQjtJQUN0QyxHQUFJSjtLQUFjLEdBQ1pBO01BQVlJO2FBQ1BKLG9CQUFvQkksVUFBVUo7SUFFekMsR0FBSUEsZUFBZUEsYUFBYUk7SUFDaEMsR0FBSUosZUFBZUEsY0FBY0ksVUFBVUo7SUFDM0MsR0FBSUEsb0JBQW9CQTtLQUN0QixJQUFXLElBQUZkLElBQUlhLEtBQUtiLElBQUljLFNBQVNkLEtBQUtrQjtJQUN0Q0EsVUFBVUQ7SUFDVixHQUFJSCxrQkFDRixJQUFXLElBQUZkLElBQUlhLEtBQUtiLElBQUljLFNBQVNkLEtBQUtrQjtJQUN0QyxPQUFPWCx1QkFBdUJXO0dBQ2hDO0dQNExBLFNBQVNDLGtCQUFtQlAsS0FBS2hEO0lBQ3pCLElBQUZrRCxJQUFJSCxrQkFBa0JDO0lBQzFCLEdBQUlFLGdCQUFnQnRCLHVCQUF1QjVCLEdBQUksQ0FDN0NrRCxjQUFhbEQsSUFBSTZCLGVBQWU3QjtJQUVsQztLQUFJc0Q7S0FDQUUsUUFBUTlCLG9CQUFvQndCO0tBQzVCTztJQUNKLEVBQUc7S0FDSyxJQUFGQyxJQUFJMUQsVUFBVXdEO0tBQ2xCeEQsSUFBSTBEO0tBQ0pKLFNBQVNHLGFBQWE5QixvQkFBb0IrQixjQUFjSjs7O1FBQy9DdkQsbUJBQW1CQztJQUM5QixHQUFJa0QsWUFBYTtLQUNmQTtLQUNNLElBQUZoRCxJQUFJZ0QsU0FBU0k7S0FDakIsR0FBSXBELE9BQU9vRCxTQUFTckQsZ0JBQWlCQyxVQUFVb0Q7O0lBRWpELE9BQU9GLHVCQUF1QkYsR0FBR0k7R0FDbkM7R1EzQ0EsU0FBU0ssaUJBQWtCM0QsR0FBSyxPQUFPTyxXQUFXUCxHQUFJO0dDekZ0RCxTQUFTNEQsNEJBQTRCQyxHQUNqQyxTQUNKO0dSZkEsU0FBU0MsY0FBZTNEO0lBRXRCLEdBQUlBLGNBQWU7S0FFakIsSUFBVyxJQUFGaUMsT0FBT0EsSUFBSWpDLFVBQVVpQyxLQUFLLEdBQUlqQyxhQUFhaUMsVUFBVTtLQUM5RDs7O0tBRUEsU0FBUSxvQkFBb0JqQztHQUNoQztHQXZEQSxTQUFTNEQsbUJBQW1CNUQ7SUFDMUIsUUFBUzZELFFBQVFILFFBQVFWLEdBQUdjLElBQUlDLElBQUlDLEdBQUcvQixPQUFPL0IsSUFBSUYsVUFBVWlDLElBQUkvQixHQUFHK0IsSUFBSztLQUN0RTZCLEtBQUs5RCxhQUFhaUM7S0FDbEIsR0FBSTZCLFVBQVc7TUFDYixJQUFXLElBQUZHLElBQUloQyxPQUFRZ0MsSUFBSS9ELE1BQU80RCxLQUFLOUQsYUFBYWlFLFlBQVlBLEtBQUk7TUFDbEUsR0FBSUEsSUFBSWhDLFFBQVM7T0FBRXlCO09BQWdCRyxLQUFLSDtPQUFHQTtPQUFRRyxLQUFLN0QsUUFBUWlDLEdBQUdnQzs7O09BQzlEUCxLQUFLMUQsUUFBUWlDLEdBQUdnQztNQUNyQixHQUFJQSxLQUFLL0QsR0FBRztNQUNaK0IsSUFBSWdDOztLQUVORDtLQUNBLEtBQU8vQixJQUFJL0IsT0FBUzZELEtBQUsvRCxhQUFhaUMsbUJBQW9CO01BQ3hEZSxJQUFJZSxNQUFNRDtNQUNWLEdBQUlBLFVBQVc7T0FDYkUsSUFBSWhCO09BQ0osR0FBSWdCLFVBQVVBOztVQUNUO09BQ0xBO09BQ0EsS0FBTy9CLElBQUkvQixPQUFTNkQsS0FBSy9ELGFBQWFpQyxtQkFBb0I7UUFDeERlLElBQUllLE1BQU1mO1FBQ1YsR0FBSWMsVUFBVztTQUNiRSxJQUFJaEI7U0FDSixHQUFLZ0IsYUFBZ0JBLGVBQWlCQSxZQUFjQTs7WUFDL0M7U0FDTEE7U0FDQSxLQUFPL0IsSUFBSS9CLE9BQVM2RCxLQUFLL0QsYUFBYWlDLHNCQUNqQzZCLFVBQVk7VUFDZkUsSUFBSUQsa0JBQWtCZjtVQUN0QixHQUFJZ0IsZUFBZUEsY0FBY0E7Ozs7OztLQU0zQyxHQUFJQSxNQUFPO01BQ1QvQixLQUFLK0I7TUFDTE47O2FBQ1NNO01BQ1ROLEtBQUtRLDhCQUE4QkYsb0JBQW9CQTs7TUFFdkROLEtBQUtRLG9CQUFvQkY7S0FDM0IsR0FBSU4sZ0JBQWlCLENBQUNBLGdCQUFnQkcsS0FBS0gsR0FBR0E7O0lBRWhELE9BQU9HLElBQUVIO0dBQ1g7R0E0aUJBLFNBQVNTLHdCQUF3Qm5FO0lBQy9CLEdBQUcyRCxjQUFjM0QsSUFDZixPQUFPQTtJQUNULE9BQU80RCxtQkFBbUI1RDtHQUFJO0dTNXJCaEMsU0FBU29FO0lBQ1AsY0FDU3RDO3FCQUNLQTtxQkFDQUE7R0FDaEI7R0MwQkEsU0FBU3VDO0lBQ1AsU0FBU0MsTUFBTUM7S0FDYixHQUFJQSx3QkFBd0IsWUFBWUE7S0FDeEM7SUFDRjtJQUVBLFNBQVNDLE1BQU1EO0tBRWI7TUFBSUU7O01BQ0FDLFNBQVNELG1CQUFtQkY7TUFDNUJJLFNBQVNEO01BQ1RFLFFBQVFDLFFBQVFGLFVBQVVBO0tBRzlCLEdBQUlFLFFBQVFILGFBQWFFLE9BQVE7TUFDL0IsSUFBSUUsT0FBUUosaUJBQ1JLLE1BQU9MO01BQ1gsUUFBUUksTUFBTVAsZUFBZU8sY0FBY0M7O0tBRTdDO0lBQ0Y7SUFDQSxPQUFHWCx1QkFBd0J0QztlQUFzQkE7Y0FDeENBLDBDQUEwQzBDLFFBQVFGO2NBRS9DQTtHQUNkO0dBQ3FCLElBQWpCVSxtQkFBbUJYO0dBdkR2QixTQUFTWSxvQkFBb0JDO0lBQzNCLE9BQVFBLDBCQUEyQkEsYUFBY0E7R0FDbkQ7R0FJQSxHQUFHZCx1QkFBd0J0QyxzQkFBc0JBO0lBQzFCLElBQWpCcUQsbUJBQW1CckQ7O0lBRUYsSUFBakJxRDtHQUNOQSxtQkFBbUJGLG9CQUFvQkU7R0FrRHZDLFNBQVNDLGVBQWdCRjtJQUN2QkEsT0FBS2Ysd0JBQXdCZTtJQUM3QixLQUFLRixpQkFBaUJFLE9BQ3BCQSxPQUFPQyxtQkFBbUJEO0lBQzVCO0tBQUlHLFFBQVFMLGlCQUFpQkU7S0FDekJJLE9BQU9EO0tBQ1BFO0lBQ0osSUFBVSxJQUFGdEQsT0FBT0EsSUFBRXFELGFBQWFyRDtLQUFJLE9BQ3pCcUQsS0FBS3JEOztRQUNELEdBQUdzRCxrQkFBZ0JBLGFBQWE7aUJBQ2pDO2dCQUNEO2dCQUNBQSxXQUFXRCxLQUFLckQsS0FBSTs7SUFHL0JzRCxjQUFjRjtJQUNkRSxhQUFhTDtJQUNiLE9BQU9LO0dBQ1Q7R1ZsQkEsU0FBU0MsbUJBQW1CeEY7SUFDMUIsUUFBUzZELFFBQVFILElBQUlHLEdBQUdiLEdBQUd5QyxHQUFHeEQsT0FBTy9CLElBQUlGLFVBQVVpQyxJQUFJL0IsR0FBRytCLElBQUs7S0FDN0RlLElBQUloRCxhQUFhaUM7S0FDakIsR0FBSWUsU0FBVTtNQUNaLElBQVcsSUFBRmlCLElBQUloQyxPQUFRZ0MsSUFBSS9ELE1BQU84QyxJQUFJaEQsYUFBYWlFLFlBQVlBLEtBQUk7TUFDakUsR0FBSUEsSUFBSWhDLFFBQVM7T0FBRXlCO09BQWdCRyxLQUFLSDtPQUFHQTtPQUFRRyxLQUFLN0QsUUFBUWlDLEdBQUdnQzs7O09BQzlEUCxLQUFLMUQsUUFBUWlDLEdBQUdnQztNQUNyQixHQUFJQSxLQUFLL0QsR0FBRztNQUNaK0IsSUFBSWdDOztLQUVOLEdBQUlqQixVQUFXO01BQ2JVLEtBQUtRLDJCQUE0QmxCO01BQ2pDVSxLQUFLUSwyQkFBNEJsQjs7YUFDeEJBLGNBQWNBO01BQ3ZCVTtPQUFLUTtnQkFBNEJsQixnQkFDQ0Esc0JBQ0RBOztPQUN4QkEsZUFBZWYsU0FBUy9CLE1BQ3ZCdUYsSUFBSXpGLGFBQWFpQztVQUFvQndEO01BRS9DL0I7U0FDSztNQUNMekI7TUFDQWUsS0FBS0EsV0FBV3lDO01BQ2hCL0I7T0FBS1E7Z0JBQTRCbEI7Z0JBQ0NBO2dCQUNBQTtnQkFDREE7O0tBRW5DLEdBQUlVLGdCQUFpQixDQUFDQSxnQkFBZ0JHLEtBQUtILEdBQUdBOztJQUVoRCxPQUFPRyxJQUFFSDtHQUNYO0dBbW1CQSxTQUFTZ0Msd0JBQXlCMUY7SUFDaEMsT0FBSTJELGNBQWMzRDtjQUNUd0MsdUJBQXVCeEM7Y0FDcEJ3Qyx1QkFBdUJnRCxtQkFBbUJ4RjtHQUN4RDtHV3BvQmU7SUFBWDJGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkosU0FBU0MsbUJBQW1CQyxNQUFNQyxTQUFTdkIsTUFBTXdCO0lBQ25DLElBQVJDLFVBQVVMLG1CQUFtQkU7SUFDakMsR0FBSUcsWUFBYSxDQUVmLEdBQUlELFNBQVNFLE1BQ1hGLGdCQUdGQyxjQUFtQkQ7SUFFWjtLQUFMRztRQUNGRjtRQUNBTix3QkFBd0JJO1FBQ3hCSix3QkFBd0JuQjtJQUUxQixPQUFPMkI7R0FDVDtHVFVzQixJQUFsQkM7R0FXSixTQUFTQyxpQkFBaUJDLElBQ3hCLE9BQU9GLGtCQUFrQkUsSUFDM0I7R0RqSEEsU0FBU0MscUJBQXNCaEcsS0FBSzRGO0lBQVEsTUFBTTdELDRCQUE0QixJQUFJL0IsWUFBWTRGO0dBQVE7R0Q0Q3RHLFNBQVNLLHlCQUEwQkMsR0FBR3ZFLEdBQUdhO0lBQ2pDLElBQUZDLElBQUltQjtJQUNSLEdBQUlqQyxVQUFVYSxlQUFlQSxPQUFPMEQsVUFBVSxPQUFPekQsUUFBU2tELE1BQU1PO0lBQzlELElBQUZ4RztJQUNKLFVBQVc4QyxLQUFLYixXQUFVYTtLQUN4QjlDLEtBQUsrQyxRQUFTa0QsTUFBTU8sUUFBUXZFLEdBQUVBLElBQUk3QixTQUFTMEM7SUFDN0MsT0FBTzlDO0dBQ1Q7R0EyV0EsU0FBU3lHLDZCQUE4QnpHO0lBRXJDLEdBQUlBO0tBQ0ZBLE9BQU9GLGdCQUFnQkUsTUFBTUE7O0tBRTdCQSxNQUFNdUcseUJBQTBCdkcsUUFBUUE7SUFDMUNBO0dBQ0Y7R0F0Q0EsU0FBUzBHLFFBQVNwRyxLQUFLcUcsVUFBVUM7SUFDL0IvRixTQUFPUDtJQUFLTyxTQUFPOEY7SUFBVTlGLFNBQU8rRjtHQUN0QztHQUNBRjs7S0FDRSxPQUFRN0Y7O1FBRU4sT0FBT0E7Z0JBRVA0Riw2QkFBNkI1Rjs7UUFFN0IsR0FBSThDLGNBQWM5QyxRQUFTLENBQ3pCQSxZQUNBLE9BQU9BLFNBRVRBOztRQUVBLE9BQU9BOztJQWJrQjtHQWdCN0I2Rjs7S0FDUSxJQUFGekcsSUFBSVk7S0FDUixHQUFHQSxhQUFhLE9BQU9aO0tBQ3ZCLE9BQU8yRCxtQkFBbUIzRDtJQUhBO0dBSzVCeUc7O0tBQ2MsSUFBUkcsVUFBVWhHLGNBQWNBLGlCQUFpQkE7S0FDN0MsV0FBVzZGLFFBQVE3RixRQUFPZ0csU0FBUWhHO0lBRlY7R0FtWTFCLFNBQVNpRyxpQkFBaUI5RyxHQUN4QixPQUFRQSxhQUFhMEcsUUFDdkI7R0FrQkEsU0FBU0ssa0JBQWtCL0c7SUFDekIsY0FBZUEsb0JBQW1CLG9CQUFvQkE7R0FDeEQ7R0E3VUEsU0FBU2dILG9CQUFxQlI7SUFDNUIsTUFBTUEsYUFBYVMsYUFDakJULFFBQVFTLFdBQVdUO0lBRXJCLFdBQVdFLFdBQVVGLEdBQUVBO0dBQ3pCO0dBeU5BLFNBQVNVLHNCQUFzQmxILEdBQUssV0FBVzBHLFdBQVUxRyxHQUFFQSxVQUFXO0dBL0J0RSxTQUFTbUgscUJBQXFCbkg7SUFDNUIsT0FBT2tILHNCQUFzQnZGLHVCQUF1QjNCO0dBQ3REO0dHM3FCQSxTQUFTb0gscUJBQXNCMUU7SUFDN0JELHVCQUF1QmxDLDRCQUE0Qm1DO0dBQ3JEO0dPd0tBLFNBQVMyRSx3QkFBd0JuQztJQUMvQmtDLHFCQUFzQmxDO0dBQ3hCO0dWbVFBLFNBQVNvQyw0QkFBNkJ0SDtJQUVwQyxJQUFJd0csUUFBUVMsV0FBV2pILE1BQ25CNkQsSUFBSTdELEtBQUtFLElBQUkyRCxVQUFVNUI7SUFDM0IsTUFBT0EsSUFBSS9CLEdBQUcrQixLQUFLdUUsRUFBRXZFLEtBQUs0QixhQUFhNUI7SUFDdkMsSUFBSy9CLElBQUlGLEtBQUtpQyxJQUFJL0IsR0FBRytCLEtBQUt1RSxFQUFFdkU7SUFDNUJqQyxNQUFNd0c7SUFDTnhHO0lBQ0EsT0FBT3dHO0dBQ1Q7R0FJQSxTQUFTZSwwQkFBMkJ2SDtJQUNsQyxHQUFJQSxVQUFzQnNILDRCQUE0QnRIO0lBQ3RELE9BQU9BO0dBQ1Q7R0E4QkEsU0FBU3dILGtCQUFrQjFFO0lBQ3pCLEdBQUlBLFNBQVNIO0lBQ2IsV0FBVytELFFBQVE1RCxpQkFBV0E7R0FDaEM7R0FnSkEsU0FBUzJFLHFCQUFxQnpILEdBQUssT0FBT0EsSUFBSTtHQXZDOUMsU0FBUzBILGdCQUFnQkMsSUFBSUMsSUFBSUMsSUFBSUMsSUFBSWhGO0lBQ3ZDLEdBQUlBLFVBQVU7SUFDZCxHQUFLZ0YsWUFDQWhGLE9BQU8rRSxRQUFTQSxhQUEyQi9FLE9BQU8rRSxhQUFlO0tBQ3BFQTtNQUFRRjtTQUNOcEIseUJBQXlCb0IsTUFBTUMsSUFBSTlFO1NBQ2xDOEUsV0FBV0QsZUFBZTdFLE1BQUs2RSxPQUFLQSxZQUFZQyxJQUFJOUU7S0FDdkQrRSxPQUFRQSxlQUFlQTs7WUFDZEEsYUFBMkJDLE1BQU1ELFlBQWE7S0FDdkRBO01BQVNGO1NBQ1BwQix5QkFBeUJvQixNQUFNQyxJQUFJOUU7U0FDbEM4RSxXQUFXRCxlQUFlN0UsTUFBSzZFLE9BQUtBLFlBQVlDLElBQUk5RTtLQUN2RCtFLE9BQVFBLGVBQWVBOztRQUNsQjtLQUNMLEdBQUlBLFdBQXVCUCw0QkFBNEJPO0tBQ3ZELElBQUkvRCxLQUFLNkQsTUFBTTVELEtBQUs4RDtLQUNwQixHQUFJRjtNQUF1QixHQUNyQkcsTUFBTUY7T0FBSSxJQUNELElBQUYzRixPQUFPQSxJQUFJYSxLQUFLYixLQUFLOEIsR0FBSStELEtBQUs3RixLQUFLNkIsR0FBSThELEtBQUszRjs7T0FDaEQsSUFDTSxJQUFGQSxJQUFJYSxTQUFTYixRQUFRQSxLQUFLOEIsR0FBSStELEtBQUs3RixLQUFLNkIsR0FBSThELEtBQUszRjtTQUV2RDtNQUNDLElBQUYvQixJQUFJRSxTQUFVMEMsS0FBS2dCLFlBQVk4RDtNQUNuQyxJQUFXLElBQUYzRixPQUFPQSxJQUFJL0IsR0FBRytCLEtBQUs4QixHQUFJK0QsS0FBSzdGLEtBQUs2QixjQUFjOEQsS0FBSzNGO01BQzdELE1BQU9BLElBQUlhLEtBQUtiLEtBQUs4QixHQUFJK0QsS0FBSzdGOzs7SUFHbEM7R0FDRjtHVTVrQkEsU0FBUzhGLFNBQVc7R0U2TnBCLFNBQVNDLFdBQVduQixTQUNsQmhHLFlBQVlnRyxRQUNkO0dBQ0FtQiwyQkFBMkJEO0dBQzNCQyxtQ0FBbUNBO0dBQ25DQTthQUF5Q2xGO0tBQy9CLElBQUptRixNQUFNcEg7S0FDVkEsWUFBWTJHLGtCQUFrQjFFO0tBQzlCNEUsZ0JBQWdCTyxRQUFRcEgsY0FBY2lDO0lBSFI7R0FLaENrRjtlQUNFLE9BQU9QLHFCQUFxQjVHLFdBREE7R0FHOUJtSDthQUFzQy9HLFFBQU9pSCxLQUFJQyxLQUFJckY7S0FDMUMsSUFBTHNGLE9BQU92SDtLQUNYLEdBQUdJLFNBQVM2QixPQUFPc0YsS0FBTTtNQUN2QixJQUFJQyxVQUFVYixrQkFBa0J2RyxTQUFTNkIsTUFDckN3RixXQUFXekg7TUFDZkEsWUFBWXdIO01BQ1pYLGdCQUFnQlksYUFBYXpILGNBQWN1SDs7S0FFN0NWLGdCQUFnQlYsb0JBQW9Ca0IsTUFBTUMsS0FBS3RILFdBQVdJLFFBQVE2QjtLQUNsRTtJQVQyQjtHQVc3QmtGO2FBQXFDL0csUUFBT2lILEtBQUlDLEtBQUlyRjtLQUN6QyxJQUFMc0YsT0FBT3ZIO0tBQ1gsR0FBR0ksU0FBUzZCLE9BQU9zRixNQUNqQnRGLE1BQU1zRixPQUFPbkg7S0FFZixHQUFHNkIsSUFBSztNQUNHLElBQUx5RixPQUFPZixrQkFBa0IxRTtNQUM3QjRFLGdCQUFnQjdHLFdBQVdJLFFBQVFzSCxTQUFTekY7TUFDNUNvRixRQUFRWCwwQkFBMEJnQixPQUFPSjs7S0FFM0MsT0FBT3JGO0lBVm1CO0dBd0Q1QixTQUFTMEYsU0FBU3RELE1BQU11RCxNQUFLQztJQUMzQjdILFlBQVk0SDtJQUNaNUgsWUFBWXFFO0lBQ1pyRSxhQUFhNkg7R0FDZjtHQUVBRjs7S0FDRXBCLHFCQUFxQnZHO0lBRFM7R0FHaEMySDtlQUNFLEdBQUczSCxXQUFXLE9BQU9BLG9CQUNyQkEsa0JBRjBCO0dBSTVCMkg7YUFBcUN2SCxRQUFPaUgsS0FBSUMsS0FBSXJGO0tBQ2xELEdBQUdqQyxXQUFXLE9BQU9BLGdCQUFnQkksUUFBT2lILEtBQUlDLEtBQUlyRjtLQUNwRGpDO0lBRnlCO0dBSTNCMkg7YUFBb0N2SCxRQUFRaUgsS0FBS0MsS0FBS3JGO0tBQ3BELEdBQUdqQyxXQUFXLE9BQU9BLGVBQWVJLFFBQVFpSCxLQUFLQyxLQUFLckY7S0FDdERqQztJQUZ3QjtHQUkxQjJILHNDQUNFM0gsWUFBWWtCLFVBRGE7R0F0VjNCLFNBQVM0RyxhQUFjN0QsTUFBTS9CO0lBQzNCbEM7SUFDQUEsWUFBWWlFO0lBQ1pqRSxpQkFBaUJrQztHQUNuQjtHQUNBNEYscUNBQXFDekQsTUFDbkMsT0FBUXJFLFlBQVlxRSxLQURNO0dBRzVCeUQ7YUFBdUR6RDtLQUNyRCxJQUFJSSxPQUFPSixpQkFDUDBEO0tBQ0osSUFBVSxJQUFGM0csT0FBT0EsSUFBSXFELGlCQUFpQnJELElBQUk7TUFDdEMyRyxPQUFPdEQsS0FBS3JEO01BQ1osR0FBR3BCLGFBQWErSCxNQUFNO01BQ3RCL0gsYUFBYStILE9BQU9DOztJQU5zQjtHQVM5Q0Y7YUFBd0N6RCxNQUN0QyxPQUFPLFdBQVdBLFFBQU1BLE9BQU1BLFdBREQ7R0FHL0J5RDthQUF5Q3pEO0tBQ3ZDLEtBQUlyRSxhQUFhcUUsU0FBU3JFLGVBQWdCO01BQ2hDO09BQUorSDtTQUFNL0g7V0FBZTJCLHVCQUF1QjNCLFlBQVkyQix1QkFBdUIwQztNQUNuRixHQUFHMEQsVUFBVztPQUNaL0gsMEJBQTBCcUU7T0FDMUJyRSxhQUFhcUUsWUFBVThDLFdBQVdiLHFCQUFxQnlCOzs7SUFMN0I7R0FTaENEO2FBQXlDekQ7S0FFdkMsR0FBR0EsWUFBWTtLQUVBLElBQVg0RCxhQUFhakksV0FBV3FFO0tBQzVCLEdBQUdyRSxhQUFhaUksYUFBYTtLQUU3QmpJLFlBQVlxRTtLQUNaLE9BQU9yRSxhQUFhcUU7SUFSVTtHQVVoQ3lEO2FBQXlDekQsTUFDdkMsT0FBR3JFLFlBQVlxRSxXQUFVckUsWUFBWXFFLGNBRFA7R0FRaEN5RDthQUF3Q3pELE1BQUs2RCxNQUFNQztLQUNsQyxJQUFYckQsYUFBYXFELGNBQWM1QztLQUMvQixHQUFHdkYsWUFBWXFFO01BQU8sR0FDaEJTO09BQ0ZXO1NBQXFCWCxZQUFZQyxzQ0FBc0MvRSxRQUFRcUU7O09BRy9Fa0MscUJBQXFCbEM7S0FHZCxJQUFQK0QsU0FBUyxvQkFBb0IvRDtLQUNqQytELFNBQVVBLFVBQVVBO0tBQ3BCLEtBQUlwSSxZQUFZb0k7TUFBUSxHQUNsQnREO09BQ0ZXO1NBQXFCWCxZQUFZQyxzQ0FBc0MvRSxRQUFRb0k7O09BRy9FN0IscUJBQXFCNkI7S0FHekIsS0FBSXBJLFlBQVlvSTtNQUFRLEdBQ2xCdEQ7T0FDRlc7U0FBcUJYLFlBQVlDLHVDQUF1Qy9FLFFBQVFvSTs7T0FHaEY3QixxQkFBcUI2QjtLQUd6QnBJLDBCQUEwQkEsV0FBV3FFO0lBNUJSO0dBOEIvQnlEO2FBQXdDekQsTUFBTThEO0tBQzVDO01BQUlyRCxhQUFhcUQsY0FBYzVDO01BQzNCMEMsYUFBYzVELGtCQUFnQnJFLFdBQVdxRTtNQUN6Q2pGLFFBQVFpSixhQUFhSjtLQUN6QixLQUFJakksWUFBWXFFO01BQU8sR0FDakJTO09BQ0ZXO1NBQXFCWCxZQUFZQyxzQ0FBc0MvRSxRQUFRcUU7O09BRy9Fa0MscUJBQXFCbEM7S0FHekIsS0FBSXJFLFlBQVlxRTtNQUFPLEdBQ2pCUztPQUNGVztTQUFxQlgsWUFBWUMsdUNBQXVDL0UsUUFBUXFFOztPQUdoRmtDLHFCQUFxQmxDO0tBR3pCLFFBQVFuRixLQUFLYztNQUFjLEdBQ3RCZCxRQUFRRTtPQUFJLEdBQ1QwRjtRQUNGVztVQUFxQlgsWUFBWUMseUNBQXlDL0UsUUFBUXFFOztRQUVsRmtDLHFCQUFxQnZHLFFBQVFxRTtLQUluQyxPQUFPckUsYUFBYWlJO0lBN0JTO0dBK0IvQkg7YUFBMEN6RDtLQUN6QixJQUFYNEQsYUFBYzVELGtCQUFnQnJFLFdBQVdxRTtLQUM3QyxLQUFJckUsWUFBWXFFO01BQ2RrQyxxQkFBcUJsQztLQUV2QixLQUFJckUsWUFBWXFFLE9BQ2RrQyxxQkFBcUJsQztLQUV2QixJQUFJakYsUUFBUWlKLGFBQWFKLHlCQUNyQkssV0FDQTNDO0tBQ0osUUFBUXpHLEtBQUtjLGFBQWM7TUFDbkIsSUFBRnVJLElBQUlySixRQUFRRTtNQUNoQixHQUFHbUosT0FBTUQsS0FBS0MsTUFBTyxDQUFDRCxLQUFLQyxjQUFjNUMsT0FBTzRDOztLQUVsRCxPQUFPNUM7SUFmd0I7R0FpQmpDbUM7YUFBMEN6RCxNQUFNOEQ7S0FDOUM7TUFBSXJELGFBQWFxRCxjQUFjNUM7TUFFM0JJLElBQUkzRixhQUFhcUU7TUFDakJsQztNQUNBZjtLQUNKOztjQUNFLEdBQUllO2VBQUcsR0FDRDJDO2dCQUNGVztrQkFBcUJYO2tCQUFZQyx3Q0FBd0MvRSxRQUFRcUU7O2dCQUdqRmtDLHFCQUFxQmxDO2NBR3pCLEdBQUdqRCxLQUFLdUUsVUFBVSxPQUFPUDtjQUNmLElBQU5vRCxRQUFRN0MsRUFBRXZFO2NBQ2RBO2NBQ0EsY0FBZW9IO2FBWkk7OztjQWVqQixHQUFJckc7ZUFBRyxHQUNEMkM7Z0JBQ0ZXO2tCQUFxQlg7a0JBQVlDLHdDQUF3Qy9FLFFBQVFxRTs7Z0JBR2pGa0MscUJBQXFCbEM7Y0FHekJsQztjQUNBd0Q7YUFWWTtJQXBCZTtHQWtDakNtQzthQUF5Q3pEO0tBQ3ZDLEdBQUdBLFlBQWE7S0FDRCxJQUFYNEQsYUFBYWpJLFdBQVdxRTtLQUM1QixPQUFPckUsYUFBYWlJO0lBSFU7R0FLaENIO2FBQXlDekQ7S0FDaEMsSUFBSG9FLEtBQUt6SSxhQUFhcUU7S0FDdEIsT0FBT3JFLGFBQWFxRTtLQUNwQixPQUFPb0U7SUFIdUI7R0FLaENYO2FBQXVDekQsTUFBTW5DO0tBQzNDLElBQUkwRjtLQUNKLEdBQUcxRixZQUFZQTtNQUNicUU7UUFBcUJ2RyxRQUFRcUU7O0tBQy9CLEdBQUduQyxVQUFVQTtNQUNYcUU7UUFBcUJ2RyxRQUFRcUU7O0tBQy9CckUsWUFBWXFFO0tBQ1osR0FBSXJFLGFBQWFxRSxNQUFPO01BQ3RCLEdBQUlyRSxZQUFZcUU7T0FBT2tDLHFCQUFxQnZHLFFBQVFxRTtNQUNwRCxHQUFJbkMsWUFBWUE7T0FBUXFFLHFCQUFxQnZHLFFBQVFxRTtNQUNyRHVELE9BQU81SCxhQUFhcUU7TUFDcEIsR0FBR25DLFlBQVkwRjs7YUFDTjFGLFNBQVU7TUFDbkJsQywwQkFBMEJxRTtNQUMxQnJFLGFBQWFxRSxZQUFZOEMsV0FBV1I7TUFDcENpQixPQUFPNUgsYUFBYXFFOzs7TUFFcEJtQyx3QkFBeUJ4RyxRQUFRcUU7S0FFbkMsV0FBV3NELFNBQVMzSCxRQUFRcUUsT0FBT3VELE1BQU0xRjtJQW5CYjtHQXNCOUI0RjthQUF1Q3pELE1BQU1uQztLQUMzQyxJQUFJMEY7S0FDSixHQUFHMUYsWUFBWUE7TUFDYnFFO1FBQXFCdkcsUUFBUXFFOztLQUMvQixHQUFHbkMsVUFBVUE7TUFDWHFFO1FBQXFCdkcsUUFBUXFFOztLQUMvQnJFLFlBQVlxRTtLQUNaLEdBQUlyRSxhQUFhcUUsTUFBTztNQUN0QixHQUFJckUsWUFBWXFFO09BQU9rQyxxQkFBcUJ2RyxRQUFRcUU7TUFDcEQsR0FBSW5DLFlBQVlBO09BQVFxRSxxQkFBcUJ2RyxRQUFRcUU7TUFDckR1RCxPQUFPNUgsYUFBYXFFO01BQ3BCLEdBQUduQyxZQUFZMEY7O2FBQ04xRixTQUFVO01BQ25CbEMsMEJBQTBCcUU7TUFDMUJyRSxhQUFhcUUsWUFBWThDLFdBQVdSO01BQ3BDaUIsT0FBTzVILGFBQWFxRTs7O01BRXBCbUMsd0JBQXlCeEcsUUFBUXFFO0tBRW5DLFdBQVdzRCxTQUFTM0gsUUFBUXFFLE9BQU91RCxNQUFNMUY7SUFuQmI7R0FzQjlCNEY7YUFBMkN6RCxNQUFLMkI7S0FDOUMsSUFBSTRCO0tBQ0osR0FBRzVILGFBQWFxRTtNQUFPa0MscUJBQXFCdkcsUUFBUXFFO0tBQ3BELEdBQUc0QixpQkFBaUJELFVBQ2xCNEIsV0FBV1QsV0FBV25CO0tBQ3hCLEdBQUdFLGtCQUFrQkY7TUFDbkI0QixXQUFXVCxXQUFXYixxQkFBcUJOO2FBQ3JDQSxtQkFBbUIwQztNQUN6QmQsV0FBV1QsV0FBV2hCLG9CQUFvQkg7b0JBQzdCQTtNQUNiNEIsV0FBV1QsV0FBV2Qsc0JBQXNCTDthQUN0Q0EsaUJBQWtCO01BQ2Q7T0FBTjJDO1NBQVFyQyxxQkFBcUJ6Qix3QkFBd0JtQjtNQUN6RDRCLFdBQVdULFdBQVd3Qjs7S0FFeEIsR0FBR2YsS0FBSztNQUNONUgsMEJBQTBCcUU7TUFDMUJyRSxhQUFhcUUsUUFBUXVEOzs7TUFFbEJyQjtRQUFxQnZHLFFBQVFxRTtJQW5CSDtHQXNCakN5RCxxQ0FBcUNBO0daZ1pyQyxTQUFTYyxzQkFBc0J6SixHQUM3QixPQUFPQSxTQUNUO0dBZkEsU0FBUzBKLHVCQUF3QjFKLEdBQUdpQyxHQUNsQyxPQUFPakMsYUFBYWlDLEdBQ3RCO0dBbExBLFNBQVMwSCwyQkFBNEIzSjtJQUNuQyxJQUFJRSxJQUFJdUosc0JBQXNCekosSUFDMUJ3RyxRQUFRUyxXQUFXL0csSUFDbkIrQjtJQUNKLE1BQU9BLElBQUkvQixHQUFHK0IsS0FBS3VFLEVBQUV2RSxLQUFLeUgsdUJBQXVCMUosR0FBRWlDO0lBQ25ELE9BQU91RTtHQUNUO0dBNVFBLFNBQVNvRDtJQUNQakg7R0FDRjtHQXpCQSxTQUFTa0gsc0JBQXVCN0osR0FBR2lDLEdBQUdlO0lBRXBDQTtJQUNBLEdBQUloRCxTQUFzQjtLQUN4QixHQUFJaUMsS0FBS2pDLFdBQVk7TUFDbkJBLE9BQU9rRSxvQkFBcUJsQjtNQUM1QixHQUFJZixTQUFTakMsS0FBS0E7TUFDbEI7O0tBRUZzSCw0QkFBNkJ0SDs7SUFFL0JBLElBQUlpQyxLQUFLZTtJQUNUO0dBQ0Y7R0FpTUEsU0FBUzhHLGVBQWdCOUosR0FBR2lDLEdBQUdlO0lBQzdCLEdBQUlmLFdBQVdqQyxLQUFLNEo7SUFDcEIsT0FBT0Msc0JBQXVCN0osR0FBR2lDLEdBQUdlO0dBQ3RDO0dTckpBLFNBQVMrRyxTQUFTQyxJQUFJdEI7SUFDcEI3SCxVQUFVb0o7SUFDVnBKLFVBQVVtSjtJQUNWbkosYUFBYTZIO0dBQ2Y7R0FDQXFCLHlCQUF5QmhDO0dBQ3pCZ0MsaUNBQWlDQTtHQUVqQ0E7YUFBdUNqSDtLQUNyQyxJQUNFakMsc0JBQXNCQSxTQUFRaUM7V0FDdkJvSCxLQUNQOUMscUJBQXFCOEM7SUFKSztHQU85Qkg7O0tBQ0UsSUFDRSxPQUFPbEosa0JBQWtCQTtXQUNsQnFKLEtBQ1A5QyxxQkFBcUI4QztJQUpHO0dBTzVCSDthQUFvQzlJLFFBQU9pSCxLQUFJaUMsWUFBV3JIO0tBQ3hEO01BQ0UsR0FBR2pDO09BQ0RBLGtCQUFrQkEsU0FBU3FILEtBQUtpQyxZQUFZckg7O09BRTVDakMsa0JBQWtCQSxTQUFTcUgsS0FBS2lDLFlBQVlySCxLQUFLN0I7O1dBQzVDaUosS0FDUDlDLHFCQUFxQjhDO0tBRXZCO0lBVHlCO0dBVzNCSDthQUFtQzlJLFFBQU91RixHQUFFMkQsWUFBV3JIO0tBQ3JEO01BQ0UsR0FBR2pDO09BQ1EsSUFBTHVKLE9BQU92SixpQkFBaUJBLFNBQVMyRixHQUFHMkQsWUFBWXJIOztPQUUzQyxJQUFMc0gsT0FBT3ZKLGlCQUFpQkEsU0FBUzJGLEdBQUcyRCxZQUFZckgsS0FBSzdCO01BQzNELE9BQU9tSjs7V0FDQUYsS0FDUDlDLHFCQUFxQjhDO0lBUkM7R0FXMUJIOztLQUNFLElBQ0VsSixrQkFBa0JBLFVBQ2xCO1dBQ09xSixLQUNQOUMscUJBQXFCOEM7SUFMRTtHQWhRM0IsU0FBU0csYUFBYXZGLE1BQ3BCakUsVUFBVW9KLGVBQ1ZwSixZQUFZaUUsS0FDZDtHQUNBdUYscUNBQXFDbkYsTUFDbkMsT0FBUXJFLFlBQVlxRSxLQURNO0dBRzVCbUY7YUFBeUNuRjtLQUN2QyxJQUNFLE9BQU9yRSxtQkFBbUJBLFFBQVFxRTtXQUMzQmdGLEtBQ1A7SUFKNEI7R0FPaENHO2FBQXlDbkY7S0FDdkMsSUFDRSxPQUFPckUsaUJBQWlCQSxRQUFRcUU7V0FDekJnRixLQUNQOUMscUJBQXFCOEM7SUFKTztHQU9oQ0c7YUFBd0NuRixNQUFNNkQsTUFBTUM7S0FDbEQsSUFDRW5JLGtCQUFrQkEsUUFBUXFFLGNBQVk2RCxRQUN0QztXQUNPbUIsS0FDUHJKLHdCQUF3QnFKLEtBQUtsQjtJQUxGO0dBUS9CcUI7YUFBd0NuRixNQUFNOEQ7S0FDNUMsSUFDRW5JLGtCQUFrQkEsUUFBUXFFLFFBQzFCO1dBQ09nRixLQUNQckosd0JBQXdCcUosS0FBS2xCO0lBTEY7R0FRL0JxQjthQUEwQ25GLE1BQU04RDtLQUM5QyxJQUNFLE9BQU9uSSxvQkFBb0JBLFFBQVFxRTtXQUM1QmdGLEtBQ1BySix3QkFBd0JxSixLQUFLbEI7SUFKQTtHQU9qQ3FCO2FBQXlDbkY7S0FDdkMsSUFDRSxPQUFPckUsaUJBQWlCQSxRQUFRcUU7V0FDekJnRixLQUNQOUMscUJBQXFCOEM7SUFKTztHQU9oQ0c7YUFBeUNuRixNQUFNOEQ7S0FDN0M7TUFDUSxJQUFGbkYsSUFBSWhELG1CQUFtQkEsUUFBUXFFO01BQ25DckUsbUJBQW1CQSxRQUFRcUU7TUFDM0IsT0FBT3JCOztXQUNBcUcsS0FDUHJKLHdCQUF3QnFKLEtBQUtsQjtJQU5EO0dBU2hDcUI7YUFBdUNuRixNQUFNbkMsR0FBR2lHO0tBQzlDLElBQUlzQixTQUFTTCxzQkFDVHJCO0tBQ0osUUFBUTJCLE9BQU94SDtNQUFFLE9BQ1J3SDs7U0FDVTNCLE9BQU8wQixpQkFBaUI7O1NBQ3hCMUIsT0FBTzBCLGlCQUFpQjs7U0FFdkMxQixPQUFPMEIsa0JBQWtCQSxpQkFDekI7O1NBQ2dCMUIsT0FBTzBCLGdCQUFtQjs7U0FDMUIxQixPQUFPMEIsZ0JBQW1COztTQUMxQjFCLE9BQU8wQixlQUFtQjs7U0FDMUIxQixPQUFPMEIsaUJBQW1COztTQUMxQjFCLE9BQU8wQixlQUFtQjs7U0FDMUIxQixPQUFPMEIsbUJBQW1COztLQUc5QztNQUNFO09BQUlOLEtBQUtuSixpQkFBaUJBLFFBQVFxRSxPQUFPMEQ7T0FDckM0QjtTQUFvQjNKLGtCQUFrQkEsUUFBUXFFO01BQ2xEbkMsc0JBQXNCeUg7TUFDdEIsV0FBV1QsU0FBU0MsSUFBSWpIOztXQUNqQm1ILEtBQ1BySix3QkFBd0JxSixLQUFLbEI7SUF4Qkg7R0E0QjlCcUI7YUFBeUNJLEdBQUcxSyxHQUFHaUo7S0FDN0MsSUFDRW5JLG1CQUFtQkEsUUFBUTRKLElBQUk1SixRQUFRZDtXQUNoQ21LLEtBQ1BySix3QkFBd0JxSixLQUFLbEI7SUFKRDtHQU9oQ3FCO2FBQXVDbkYsTUFBTThEO0tBQzNDO01BQ2UsSUFBVDBCLFdBQVc3SixpQkFBaUJBLFFBQVFxRTtNQUN4QyxPQUFPckUsbUJBQW1CNko7O1dBQ25CUixLQUNQckosd0JBQXdCcUosS0FBS2xCO0lBTEg7R0FROUJxQjthQUF3Q25GLE1BQU04RDtLQUM1QztNQUNlLElBQVQwQixXQUFXN0osa0JBQWtCQSxRQUFRcUU7TUFDekMsT0FBT3JFLG1CQUFtQjZKOztXQUNuQlIsS0FDUHJKLHdCQUF3QnFKLEtBQUtsQjtJQUxGO0dBUS9CcUI7YUFBMENNLFFBQVFDLFFBQVFyRyxNQUFNeUU7S0FDOUQ7TUFDRW5JO1FBQW9CQSxRQUFRK0osU0FBUy9KLFFBQVEwRCxPQUFPb0c7TUFDcEQ7O1dBQ09ULEtBQ1BySix3QkFBd0JxSixLQUFLbEI7SUFMQTtHQVFqQ3FCO2FBQTJDbkYsTUFBTThEO0tBQy9DO01BQ1csSUFBTDZCLE9BQU9oSyxxQkFBcUJBLFFBQVFxRTtNQUN4QyxPQUFPUSx3QkFBd0JtRjs7V0FDeEJYLEtBQ1BySix3QkFBd0JxSixLQUFLbEI7SUFMQztHQVFsQ3FCO2FBQTBDbkYsTUFBTThEO0tBQzlDLElBQ0UsT0FBT25JLG9CQUFvQkEsUUFBUXFFO1dBQzVCZ0YsS0FDUHJKLHdCQUF3QnFKLEtBQUtsQjtJQUpBO0dBT2pDcUI7YUFBcURILEtBQUtsQjtLQUN6QyxJQUFYckQsYUFBYVM7S0FDakIsR0FBSTRDLGNBQWNyRCxXQUFZO01BQ25CO09BQUxPLE9BQU9OLG1CQUFtQnNFLFVBQVVBLGFBQWFBLFVBQVVBO01BQy9ENUQscUJBQXFCWCxZQUFZTzs7O01BRWpDa0IscUJBQXFCOEM7SUFObUI7R0FTNUNHO2FBQWdESztLQVc5QyxJQUFJSTtLQUNKLEdBQUlKO01BQ0ZJO2FBQ1NKO01BQ1RJO2FBQ1NKO01BQ1RJO2FBQ1NKO01BQ1RJO2FBQ1NKO01BQ1RJO2FBQ1NKO01BQ1RJO2FBQ1NKLHFCQUNUSTtLQWtCRjthQUVFSjthQUNBQTthQUNBSTthQUNBSjthQUNBQTthQUNBQTthQUNBQTthQUNBQTthQUNBQTthQUNBQTthQUNBQTthQUNBQTtJQXhEbUM7R0E0RHZDTCxxQ0FBcUNBO0dDM01yQyxTQUFTVSxjQUFjeEc7SUFDZixJQUFGMUUsSUFBSW1GLGlCQUFpQlQ7SUFDekIsS0FBSzFFLEdBQUc7SUFDUixPQUFPQTtHQUFVO0dURG5CLFNBQVNtTCxjQUFldEk7SUFDdEIsS0FBSW5DO0tBQ0ZBLGlDQUE4QmlDO0lBQ2hDQyx1QkFBdUJsQywwQkFBMEJtQztHQUNuRDtHU0NBO0lBQUl1STtNQUFZRixjQUFjNUY7U0FBcUI2RjtJQTZEL0NFO0dBQ0osR0FBSTlHO0lBQ0Y4RzthQUE0QkQsdUJBQXFCWixhQUFhWTs7SUFFOURDO2FBQTRCRCx1QkFBcUJ0QyxhQUFhc0M7R0FFaEVDO29DQUFtRHZDO0dBZW5ELFNBQVN3QyxrQkFBa0JqRztJQUN6QjtLQUFJWCxPQUFPYSxlQUFlRjtLQUN0QkEsT0FBT1g7S0FDUHVFLGFBQWE3RCxvQkFBb0JDO0tBQ2pDMEQ7SUFDSixJQUFVLElBQUYzRyxPQUFPQSxJQUFJaUoseUJBQXlCakosSUFBSztLQUN6QyxJQUFGbUgsSUFBSThCLGlCQUFpQmpKO0tBQ3pCO09BQUc2RyxrQkFBa0JNO2FBQ2JSLE9BQU9BLGtCQUFrQlE7TUFDL0JSO2NBQVlRO2dCQUFjQTtjQUFjbEUsZUFBZWtFLGVBQWNsRTs7SUFFekUsS0FBSzBELE9BQU94RSxvQkFBcUI7S0FDdEIsSUFBTFUsT0FBT2lHLGNBQWM3RjtLQUN6QixHQUFJSixRQUFRQSw0QkFBNEI7TUFDaEMsSUFBRnNFLFdBQVV0RSxrQkFBZ0J1RixhQUFhdkY7TUFDM0NvRyxzQkFBc0I5QjtNQUN0QlI7Y0FBWVE7Z0JBQWNBO2NBQWNsRSxlQUFla0UsZUFBY2xFOzs7SUFHekUsR0FBSTBELEtBQU0sT0FBT0E7SUFDakJ4Qiw4Q0FBOEMwQjtHQUNoRDtHQXNGQSxTQUFTc0Msc0JBQXNCbEc7SUFDN0IsSUFBSUosT0FBT3FHLGtCQUFrQmpHLE9BQ3pCc0IsSUFBSTFCLG1CQUFtQkE7SUFDM0IsT0FBTzBCO0dBQ1Q7R1QzS0EsU0FBUzZFO0lBQ1BoTCxvQkFBb0JFO0dBQTZCO0dFNkRuRCxTQUFTK0ssZ0JBQWlCcEc7SUFDbEIsSUFBRmpGLElBQUkyQixnQkFBZ0J1Qyx3QkFBd0JlO0lBQ2hELEdBQUdqRixNQUFNOEIsV0FDUHNKO0lBQ0YsT0FBTzNGLHdCQUF3QnpGO0dBQ2pDO0dVK01BLFNBQVNzTCxnQkFBZ0JDLE1BQU1DLE1BQU1DLE1BQU1DLE1BQU1DLE1BQU1DO0lBQ3JELEdBQUdBLFdBQVksQ0FDYkYsVUFBVUMsV0FDVjtJQUVPLElBQUxFO0lBQ0osSUFBVSxJQUFGN0osSUFBSXlKLFVBQVF6SixRQUFRQSxJQUFLO0tBQ3pCLElBQUZ1RSxJQUFJZ0YsVUFBVUMsT0FBS3hKO0tBQ3ZCdUosVUFBVUMsT0FBS3hKLEtBQU11RSxNQUFNcUYsUUFBU0M7S0FDcENBLE9BQU90RixVQUFXcUY7O0lBRXBCRixVQUFVQyxRQUFRRTtJQUNsQjtHQUNGO0dDN1VBLElBQUlDO0dBTUosU0FBU0M7SUFDUCxHQUFHRCxlQUFlLE9BQ1RBO0lBRVQsTUFBTTFKOzthQUErQitEO2FBQThDNUQ7R0FDckY7R0EyTEEsU0FBU3lKLG9CQUFvQnBNLEdBQUV3QjtJQUM3QjtLQUFJckIsSUFBSWdNO0tBQ0pFLEtBQUdsTSx1QkFBdUJILEdBQUVHLFdBQVdxQjtLQUN2Q29FLElBQUl5RztJQUNSLFFBQVF6RyxlQUFlQSxhQUFhQTtHQUN0QztHQzdNQSxTQUFTMEcsbUNBQ1AsU0FDRjtHQzBoQkEsSUFBSUM7R0FDSixVQUFXdEs7SUFDVHNLO0tBQWdCO09BRWQsU0FBU0MsWUFBWUMsTUFBUXpMLFlBQVl5TCxLQUFNO09BQy9DRDtpQkFBcUNySTtTQUNuQyxJQUFXLElBQUYvQixPQUFPQSxJQUFJcEIsa0JBQWtCb0I7VUFBSyxHQUNyQ3BCLFVBQVVvQixPQUFPK0IsR0FBRyxPQUFPL0I7UUFGUDtPQUs1Qm9LLHVDQUE0QjtPQUk1QjtRQUNFeEw7UUFBZ0JBLGtCQUFrQndMLFlBQVl4TCxXQUR6QztNQVpPOzs7SUFrQmhCdUw7Z0JBQ0V2TCxnQkFBZ0JBLGtCQUFrQmlCLGlCQURwQjtHQUtsQnNLO2FBQXlDcEksR0FDdkNuRCxnQkFBZ0JtRCxHQUFHbkQsbUJBQ25CQSxlQUFlbUQsR0FGZTtHQUtoQ29JO2FBQTBDcEk7S0FDbEMsSUFBRi9CLElBQUlwQixnQkFBZ0JtRDtLQUN4QixPQUFRL0IsTUFBTUYsWUFDVkEsWUFBWWxCLG1CQUFtQm9CO0lBSEo7R04zVmpDLFNBQVNzSyxnQkFBZ0I5QixHQUFFMUs7SUFDekIsSUFBSXlNLFNBQVNyQixrQkFBa0JWLElBQzNCZ0MsU0FBU3RCLGtCQUFrQnBMO0lBQy9CLEdBQUd5TSxpQkFBaUJDO0tBQ2xCekI7SUFDRixLQUFJd0I7S0FDRnhCO0lBQ0Z3QixxQkFBcUJBLGFBQWFDO0dBQ3BDO0dINEJBLFNBQVNDLGlCQUFrQjdNLEdBQUssT0FBT08sV0FBV1AsR0FBSTtHSmdDNUIsSUFBdEI4TTtHQUlKLFNBQVNDLGdDQUFpQ0MsTUFDeENGLHdCQUF3QkUsTUFDeEI7R0FDRjtHSXBJQSxTQUFTQyxvQkFBcUJqTjtJQUM1QixHQUFJa04sU0FBVWxOLEdBQUk7S0FDaEIsR0FBSU8sU0FBU1AsK0JBQStCO0tBQzVDLEdBQUlBLFFBQVE7S0FDWjs7SUFFRixPQUFPbU4sTUFBTW5OO0dBQ2Y7R1U1RnFCLElBQWpCb04sdUJBQXVCMUQ7R0E4STNCLFNBQVMyRCxZQUFhQztJQUNwQixHQUFHQSxlQUFlbEgsS0FBSztLQUNyQixJQUFJbUgsTUFBTUQsZUFDTkUsUUFBUTFELDJCQUEyQnlEO0tBQ3ZDLEdBQUlDO01BQ0ZGLGNBQWNsSDtTQUVYO01BQ0gsR0FBR2tILHFCQUFxQkEsa0JBQWtCRSxhQUFhO09BQy9DLElBQUZ4SixRQUFRb0QsV0FBV2tHLGtCQUFrQkU7T0FDekN4SixNQUFNc0o7T0FDTkEsY0FBY3RKOztNQUVoQnNKLGdCQUFnQkUsT0FBTUY7TUFDdEJBLGVBQWVFO01BQ2ZGLG1CQUFtQkU7OztRQUVoQjtLQUNLO01BQU5DO1FBQVFIO1VBQWVBO1VBQWFBO1VBQWFBO1VBQWlCQSxxQkFBcUJBO0tBQzNGQSxlQUFlRztLQUNmSCxtQkFBbUJHOztHQUV2QjtHaEIvTEEsU0FBU0M7SUFDUDVLO0dBQ0Y7R2dCd1dBLFNBQVM2Syx3QkFBd0JDO0lBQy9CLElBQUlOLE9BQU9GLGlCQUFpQlEsU0FDeEJsSyxJQUFJNEo7SUFDUjtLQUFHLEdBQ0U1SixLQUFLNEosZ0JBQWlCO01BQ3ZCLEdBQUdBLHFCQUFzQjtPQUN2QkEsZ0JBQWdCQSxxQkFBcUJBO09BQ3JDNUosS0FBSzRKO09BQ0xBLG1CQUFtQkE7T0FDbkJBOztNQUVGLEdBQUdBLG1CQUFtQkEsb0JBQW9CLFNBQy9CQTtNQUVFLElBQVRPLFdBQVdQO01BQ2ZELFlBQWFDO01BQ2IsR0FBR08sWUFBWVAsaUJBQWlCLFNBQ3JCQTs7O01BR05BLFlBQVk1SjtJQUNyQixPQUFRQSxJQUFJNEo7R0FDZDtHQ3BjQSxTQUFTUSxjQUFjQztJQUVyQixVQUFVOUwsNkJBQTZCQTtJQUN2QztHQUNGO0dWZ0tBLFNBQVMrTCxzQkFBc0JELE1BQzNCLHNCQUNKO0dXOHJCQSxTQUFTRSx1QkFBdUJDLElBQzlCLE9BQU9BLFFBQ1Q7R0Yva0JBLFNBQVNDLG9CQUFxQlAsUUFBUU0sSUFBSTlMLEdBQUcvQjtJQUMzQztLQUFJaU4sT0FBT0YsaUJBQWlCUTtLQUN4QjFOLElBQUlHO0tBQ0orTixRQUFRZCxrQkFBa0JBO0lBQzlCLEdBQUdqTixLQUFLK04sTUFBTztLQUNiRixPQUFPWixxQkFBcUJBLGtCQUFpQkEsbUJBQW1Cak4sSUFBSStCO0tBQ3BFa0wsb0JBQW9Cak47O1lBRWQrTixVQUFXO0tBQ2pCRjtPQUFPWixxQkFBcUJBLGtCQUFpQkEsbUJBQW1CYyxRQUFRaE07S0FDeEVrTCxvQkFBb0JjO0tBQ3BCbE8sSUFBSWtPOztRQUNDO0tBQ0xkO0tBQ0FBO0tBQ0FELFlBQVlDO0tBQ0YsSUFBTmMsUUFBUWQsa0JBQWtCQTtLQUM5QixHQUFHcE4sSUFBSWtPLE9BQU9sTyxJQUFJa087S0FDbEJGLE9BQU9aLHFCQUFxQkEsa0JBQWlCQSxtQkFBbUJwTixJQUFJa0M7S0FDcEVrTCxvQkFBb0JwTjs7SUFFdEIsT0FBT0E7R0FDVDtHQTdCQSxTQUFTbU8sdUJBQXdCVCxRQUFRNUosR0FBRzVCLEdBQUcvQjtJQUN0QyxJQUFINk4sS0FBS0QsdUJBQXVCaks7SUFDaEMsT0FBT21LLG9CQUFvQlAsUUFBUU0sSUFBSTlMLEdBQUcvQjtHQUM1QztHbEJ5RkEsU0FBU2lPLG9CQUFvQjNIO0lBQzNCO1lBQVcvRjthQUFRK0YsWUFBYUEsWUFBY0E7YUFDM0JBLFlBQWFBLFlBQWNBO2FBQzNCQSxZQUFhQTtHQUNsQztHb0J1Q0EsU0FBUzRILG9CQUFvQkwsSUFBSU07SUFDdkIsSUFBSkMsTUFBTVAsVUFBVU07SUFDcEIsR0FBR0MsV0FBV1AsZ0JBQWdCUjtJQUM5QjtLQUFJZ0IsS0FBS1IsT0FBT087S0FDWkUsS0FBS1QsT0FBT087S0FDWkcsS0FBS1YsT0FBT087S0FDWkksS0FBS1gsT0FBT087S0FDWkssS0FBS1osT0FBT087S0FDWk0sS0FBS2IsT0FBT087S0FDWk8sS0FBS2QsT0FBT087S0FDWlEsS0FBS2YsT0FBT087SUFDaEIsT0FBT0gscUJBQXFCVyxJQUFHRCxJQUFHRCxJQUFHRCxJQUFHRCxJQUFHRCxJQUFHRCxJQUFHRDtHQUNuRDtHcEJqREEsU0FBU1Esb0JBQW9CbFAsR0FBSyxPQUFPQSxZQUFZO0dpQmhLckQsU0FBU21QLG1CQUFtQkMsUUFBUWpMLEdBQUdrTDtJQUMvQixJQUFGckwsSUFBSWtMLG9CQUFxQi9LO0lBQzdCLElBQVcsSUFBRi9CLE9BQU9BLE9BQU9BLEtBQUtnTixnQkFBaUJwTCxFQUFFNUI7SUFDL0NpTjtJQUFjQTtHQUNoQjtHR2lJQSxTQUFTQyxpQkFBaUJwQixJQUN4QixPQUFPQSxlQUNUO0dkek5BLFNBQVNxQixvQkFBb0JDO0lBQ047S0FDbkIsR0FBR0EsYUFBYTlGLE9BQU8sT0FBTzhGO0tBQzlCLElBQUlsTjtLQUVKO09BQUdMLHlCQUNHdU4sYUFBYXZOO1VBQ2J1TjtVQUNBQTtNQUNKbE4sTUFBTTVCOztPQUVBdUIsNEJBQ0Z1TixhQUFhdk47VUFDYnVOO1VBQ0FBO01BQ0psTixNQUFNNUI7YUFFQThPLGFBQWF2TixvQkFBb0JzRTtNQUN2Q2pFLFVBQVNpRSw2QkFBNEJpSjs7TUFHckNsTixVQUFTNUIsMEJBQXlCbUYsd0JBQXlCeEIsT0FBT21MO0tBRXBFLEdBQUlBLGFBQWF2TixrQkFDZkssZUFBZWtOO0tBQ2pCLE9BQU9sTjs7R0FHWDtHS21KQSxTQUFTbU4saUJBQWlCcEssTUFBSzJCO0lBQ3BCLElBQUwvQixPQUFPcUcsa0JBQWtCakc7SUFDN0IsS0FBS0osc0JBQXNCa0c7SUFDM0JsRyxxQkFBcUJBLFdBQVUrQjtJQUMvQjtHQUNGO0dBS0EsU0FBUzBJLGlCQUFpQnJLLE1BQUsyQjtJQUM3QjtLQUFJM0IsT0FBTzFDLHVCQUF1QjBDO0tBQzlCMkIsVUFBVXJFLHVCQUF1QnFFO0lBQ3JDLE9BQU95SSxpQkFBaUJwSyxNQUFNMkI7R0FDaEM7R0E1QkEsU0FBUzJJO0lBQ0EsSUFBSEMsTUFBSTNOO0lBQ1IsR0FBRzJOO0tBQUksSUFDSyxJQUFGeE4sT0FBT0EsSUFBSXdOLFlBQVl4TjtNQUM3QnNOLGlCQUFpQkUsSUFBSXhOLFNBQVF3TixJQUFJeE47SUFHckNILDhCQUE4QnlOO0lBQzlCek47SUFDQTtHQUNGO0dGMUlBLFNBQVM0TixrQ0FBcUMsV0FBWTtHWWhKcEMsSUFBbEJDO0dBNlFKLFNBQVNDLHNCQUFzQi9DO0lBQ2pCLElBQVJnRCxVQUFVRjtJQUNkQSxvQkFBb0I5QztJQUNwQixPQUFPZ0Q7R0FDVDtHZjdFQSxTQUFTQyxzQkFBc0J0SjtJQUN2QixJQUFGdEc7SUFDSixJQUFTLElBQUQrQixJQUFFdUUsY0FBY3ZFLFFBQU1BLElBQUksQ0FDMUIsSUFBRm9OLElBQUk3SSxFQUFFdkUsSUFDVi9CLFFBQU9tUCxHQUFFblA7SUFFWCxPQUFPQTtHQUNUO0dnQmxJQSxTQUFTNlAsU0FBU3ZKLEdBQUUzQyxHQUNsQixPQUFPekQsVUFBVW9HLEdBQUUzQyxHQUNyQjtHQ1RBLFNBQVNtTSxrQkFBa0JqUCxHQUFFMEU7SUFDM0JBLElBQUlzSyxTQUFTdEs7SUFDYkEsSUFBTUEsVUFBWUE7SUFDbEJBLElBQUlzSyxTQUFTdEs7SUFDYjFFLEtBQUswRTtJQUNMMUUsSUFBTUEsVUFBWUE7SUFDbEIsUUFBVUEsS0FBS0E7R0FDakI7R1RHQSxTQUFTa1AsZUFBZUMsS0FBSzVCLEtBQUt4TDtJQUNoQyxJQUFVLElBQUZiLElBQUlhLFNBQVNiLFFBQVFBLEtBQUssR0FDN0JpTyxTQUFTNUIsTUFBSXJNLFNBQVMsT0FBT0E7SUFFbEM7R0FDRjtHQTFFQSxTQUFTa08sY0FBY3RRO0lBQ3JCLElBQUlpRCxNQUFNbU4sZUFBZXBRLE1BQU1BLGdCQUMzQmtCO0lBQ0osSUFBVyxJQUFGa0IsT0FBT0EsSUFBSWEsS0FBS2IsS0FDdkJsQixJQUFJaVAsa0JBQWtCalAsR0FBR2xCLE9BQU9vQztJQUVsQyxPQUFPbEI7R0FDVDtHWFpBLFNBQVNxUCxjQUFjck4sR0FBR21EO0lBQ3hCO0tBQUluRyxJQUFLZ0QsV0FBVUEsTUFBS0EsTUFBTUE7S0FDMUJzTixVQUFVbks7S0FDVlQsSUFBSTFGLElBQUlzUTtJQUNaLEdBQUk1SztLQUNGLE9BQU8xQyxRQUFRa0QsTUFBTUM7WUFDZFQsTUFBTztLQUNSLElBQUY2SyxJQUFJdk4sUUFBUWtELE1BQUtDLGNBQWFuRztLQUNsQyxVQUFVdVEsa0JBQWtCLE9BQU9BO0tBQ25DLE9BQU9GLGNBQWNFLEdBQUVwSyxXQUFXbkc7O1FBRS9CO0tBQ0gsT0FBUTBGOztRQUNBO1NBQ0E7VUFBRjZLO3FCQUFjelE7YUFDTixJQUFOMFEsWUFBWWhILE1BQU04RzthQUN0QixJQUFVLElBQUZwTyxPQUFPQSxJQUFJb08sU0FBU3BPLEtBQU1zTyxNQUFNdE8sS0FBS2lFLEtBQUtqRTthQUNsRHNPLE1BQU1GLFdBQVd4UTthQUNqQixPQUFPa0QsUUFBUWtELE1BQU1zSztZQUpmO1NBTVI7OztRQUVNO1NBQ0E7VUFBRkQ7cUJBQWN6USxHQUFHd0I7YUFDVCxJQUFOa1AsWUFBWWhILE1BQU04RzthQUN0QixJQUFVLElBQUZwTyxPQUFPQSxJQUFJb08sU0FBU3BPLEtBQU1zTyxNQUFNdE8sS0FBS2lFLEtBQUtqRTthQUNsRHNPLE1BQU1GLFdBQVd4UTthQUNqQjBRLE1BQU1GLGVBQWVoUDthQUNyQixPQUFPMEIsUUFBUWtELE1BQU1zSztZQUxmO1NBT1I7OztRQUdNO1NBQUZEOztZQUNGO2FBQUlFLGFBQWNDLDRCQUF5QkE7YUFDdkNGLFlBQVloSCxNQUFNckQsY0FBWXNLO1lBQ2xDLElBQVUsSUFBRnZPLE9BQU9BLElBQUlpRSxhQUFhakUsS0FBTXNPLE1BQU10TyxLQUFLaUUsS0FBS2pFO1lBQ3RELElBQVUsSUFBRkEsT0FBT0EsSUFBSXdPLGtCQUFrQnhPO2FBQU1zTyxNQUFNckssY0FBWWpFLEtBQUt3TyxVQUFVeE87WUFDNUUsT0FBT21PLGNBQWNyTixHQUFHd047V0FMbEI7O0tBUVZELE1BQU03SztLQUNOLE9BQU82Szs7R0FFWDtHR0NrQixJQUFkSSxnQkFBZ0JOO0dBOFBwQixTQUFTTyxnQ0FBZ0M1TjtJQUN2QztLQUNFLElBQUlELE1BQU0yTixrQkFDTnZLLFdBQVdxRCxNQUFNekc7S0FDckIsSUFBVyxJQUFGYixPQUFPQSxJQUFJYSxLQUFLYixLQUFLaUUsS0FBS2pFLEtBQUt3TyxVQUFVeE87S0FDbEQsT0FBT3lPLGNBQWMzTixJQUFJbUQsT0FKcEI7R0FNVDtHS3ZKQSxTQUFTMEssZUFBZUM7SUFDYixJQUFML0wsT0FBT3FHLGtCQUFrQjBGO0lBQzdCLEdBQUcvTCxtQkFBbUJBLFdBQVk7S0FDaEMsR0FBR0E7TUFBV0ssbUJBQW1CRixvQkFBb0JILFlBQVlBOztNQUM1REssbUJBQW1CTDtLQUN4Qjs7O0tBR0F1Qyx3QkFBd0IxRix1QkFBdUJrUDtHQUVuRDtHYXBCQSxTQUFTQyxvQkFBb0JqTixHQUFFNEcsR0FBRTFLO0lBQzdCLEdBQUc4RCxRQUFNNEcsRUFBRyxDQUFFNUcsT0FBTzlELEdBQUc7SUFDeEI7R0FDSjtHQUlBLFNBQVNnUiw0QkFBNEJ0RztJQUNuQyxPQUFLQSxhQUFhbEIsU0FBVWtCLFFBQVNBO2VBQ2pDcUcsb0JBQW9Cckc7OztHQUsxQjtHTDlKQSxTQUFTdUcsbUJBQXFCLHNCQUFtQjtHSm1kakQsU0FBU0M7SUFDUGpHO0dBQ0Y7R0h2TkEsU0FBU2tHLG1CQUFtQkM7SUFDMUIsSUFDSUE7VUFDSzlCO0tBQ1UsSUFBWDFKLGFBQWFTO0tBQ2pCRTtPQUFxQlgsWUFBWUMsd0NBQXdDdUw7O0dBRS9FO0dBdkNBLFNBQVNDLGtCQUFrQjdNO0lBQ2hCLElBQUxPLE9BQU9xRyxrQkFBa0I1RztJQUM3QixLQUFLTztLQUNIa0c7SUFFYSxJQUFYbUcsYUFBYXJNLG9CQUFvQkE7SUFDckMsaUJBQW1CcU0sa0JBQWtCNU07R0FDdkM7R0FxQ0EsU0FBUzhNLG9CQUFvQkY7SUFDM0JELG1CQUFtQkM7SUFDQSxJQUFmRyxpQkFBaUJGLGtCQUFrQkQ7SUFDdkNBLHFCQUFxQkc7SUFDckI7R0FDRjtHVmpQQSxTQUFTQztJQUNQbFIsb0JBQW9CRTtHQUN0QjtHVTRNQSxTQUFTaVIsa0JBQWtCTDtJQUN6QixJQUFJOUg7SUFDSixJQUNJQSxRQUFROEg7VUFDSDlCO0tBQ1UsSUFBWDFKLGFBQWFTO0tBQ2pCRTtPQUFxQlgsWUFBWUMsdUNBQXVDdUw7O0lBRTVFLEdBQUk5SCxVQUFVcEQ7S0FDVnNMOztLQUNHLE9BQ0k3TCx3QkFBd0IyRDtHQUVyQztHQTRCQSxTQUFTb0ksb0JBQW9CbE47SUFFZixJQUFSbU4sVUFBVXZOLHdCQUF3Qkk7SUFDdENtTixVQUFVQTtJQUNWbk4sT0FBT21CLHdCQUF3QmdNO0lBRS9CO0tBQUlQLGFBQWFDLGtCQUFrQjdNO0tBQy9Cb04sY0FBY0gsa0JBQWtCTDtJQUVwQyxXQUFXUSxhQUFhUjtHQUMxQjtHWXZHQSxTQUFTUyx5QkFBeUJsTyxHQUNoQyxTQUNGO0doQjdMWSxJQUFSbU8sVUFBVXpSLGFBQWFBO0dBQzNCLFNBQVMwUixnQkFBZ0JqUztJQUN2QixHQUFHZ1MsU0FBUyxPQUFPelIsV0FBV0EsVUFBVVA7SUFDbEMsSUFBRm9DO0lBQ0osR0FBSXBDLFFBQVEsU0FBUWtTO0lBQ3BCLEdBQUdsUyxRQUFNLE1BQVFBLE9BQU0sQ0FBQ0EsUUFBTW9DLFdBQ3pCLE1BQVFwQyxNQUFPLENBQUNBLFFBQU1vQztJQUMzQixPQUFPQTtHQUNUO0dBd0NBLFNBQVMrUCx5QkFBMEJuUztJQUNwQixJQUFUb1MsZUFBZUM7SUFDbkJELGNBQWNwUztJQUNILElBQVBzUyxhQUFhQyxXQUFXSDtJQUM1QixPQUFPRTtHQUNUO0dSbVJBLFNBQVNFLDJCQUEyQjNSLElBQUlDLElBQUlDLElBQzFDLFdBQVdILFFBQVFDLElBQUlDLElBQUlDO0dBQzdCO0dROVRBLFNBQVMwUix5QkFBMEJ6UztJQUNqQyxLQUFLa04sU0FBU2xOLEdBQUk7S0FDaEIsR0FBSW1OLE1BQU1uTixJQUNSLE9BQU93UztLQUNULE9BQUl4UztlQUNLd1M7ZUFFQUE7O0lBRUYsSUFBTHJSLE9BQVFuQixjQUFVQSxPQUFNa1Msb0JBQWtCbFM7SUFDOUMsR0FBSW1CLE1BQU1uQixNQUFLQTtJQUdQLElBQUowUyxNQUFNVCxnQkFBZ0JqUztJQUMxQixHQUFJMFMsU0FBVTtLQUNaQTtLQUNBMVMsS0FBS087O1FBQ0E7S0FDTFAsS0FBS08sWUFBV21TO0tBQ2hCLEdBQUkxUyxPQUFRLENBQ1ZBLFFBQVEwUztLQUNWLEdBQUlBLFVBQ0YxUzs7SUFFSixJQUFJMlMsSUFBSXBTLGlCQUNKcVMsS0FBSzVTO0lBQ1RBLEtBQUtBLElBQUk0UyxNQUFNRDtJQUNSLElBQUhFLEtBQUs3UztJQUNUQSxLQUFLQSxJQUFJNlMsTUFBTUY7SUFDUixJQUFIRyxLQUFLOVM7SUFDVDRTLEtBQU1BLFdBQVd6UixPQUFPdVI7SUFDeEIsT0FBT0YsMkJBQTJCTSxJQUFJRCxJQUFJRDtHQUM1QztHWTRoQkEsU0FBU0csa0JBQWtCM0QsUUFBUWxCLElBQUk4RTtJQUNyQzVELGlCQUFpQmxCO0lBQ2pCa0IsaUJBQWtCbEIsVUFBV0E7SUFDN0IsR0FBR0E7S0FDRCxJQUFVLElBQUY5TCxPQUFPQSxJQUFJOEwsZ0JBQWdCOUw7TUFBSyxHQUNuQzhMLFFBQVE5TDtPQUNUZ04saUJBQWlCbEIsUUFBUTlMO1VBQ3RCO09BQ0hnTjtPQUNBQTtPQUNBQSxpQkFBaUJsQixRQUFROUw7OztLQUk3QixJQUFVLElBQUZBLE9BQU9BLElBQUk4TCxnQkFBZ0I5TCxLQUFLZ04saUJBQWdCbEIsUUFBUTlMO0lBQ2xFLE9BQU84TDs7OztPQUlMLElBQVUsSUFBRjlMLE9BQU9BLElBQUk4TCxnQkFBZ0I5TCxLQUNqQ2dOLGdCQUFnQmxCLFFBQVE5TDtPQUUxQjs7O09BR0EsSUFBVSxJQUFGQSxPQUFPQSxJQUFJOEwsZ0JBQWdCOUwsS0FDakNnTixpQkFBaUJsQixRQUFROUw7T0FFM0I7O09BRUEsSUFBVSxJQUFGQSxPQUFPQSxJQUFJOEwsZ0JBQWdCOUwsS0FDakNnTixpQkFBaUJsQixRQUFROUw7T0FFM0I7OztPQUdBZ047T0FDQSxJQUFVLElBQUZoTixPQUFPQSxJQUFJOEwsZ0JBQWdCOUwsS0FDakNnTixpQkFBaUJsQixRQUFROUw7T0FFM0I7O09BRUEsSUFBVSxJQUFGQSxPQUFPQSxJQUFJOEwsb0JBQW9COUwsSUFBSTtRQUNuQyxJQUFGNEIsSUFBSWtMLG9CQUFvQmhCLE9BQU85TDtRQUNuQyxJQUFXLElBQUZnQyxPQUFPQSxPQUFPQSxLQUFLZ0wsZ0JBQWlCcEwsRUFBRUk7O09BRWpEOztPQUVBLElBQVUsSUFBRmhDLE9BQU9BLElBQUk4TCxnQkFBZ0I5TCxJQUFJO1FBQy9CLElBQUY0QixJQUFJa0wsb0JBQW9CdUQseUJBQXlCdkUsT0FBTzlMO1FBQzVELElBQVcsSUFBRmdDLE9BQU9BLE9BQU9BLEtBQUtnTCxnQkFBaUJwTCxFQUFFSTs7T0FFakQ7O09BRUEsSUFBVSxJQUFGaEMsT0FBT0EsSUFBSThMLGdCQUFnQjlMLElBQUk7UUFDL0IsSUFBRjRCLElBQUltTyx5QkFBeUJqRSxPQUFPOUw7UUFDeENnTixpQkFBaUJwTDs7T0FFbkI7O09BRUEsSUFBVSxJQUFGNUIsT0FBT0EsSUFBSThMLG9CQUFvQjlMLElBQUk7UUFDbkMsSUFBRmdDLElBQUk4SixPQUFPOUw7UUFDZmdOLGlCQUFpQitDLHlCQUF5Qi9OO1FBQzFDZ0wsaUJBQWlCK0MseUJBQXlCL047O09BRTVDOztPQUVBLElBQVUsSUFBRmhDLE9BQU9BLElBQUk4TCxvQkFBb0I5TCxJQUFJO1FBQ3pDO1NBQUk2USxVQUFVL0UsT0FBTzlMO1NBQ2pCNEIsSUFBSWtMLG9CQUFvQnVELHlCQUF5QlE7UUFDckQsSUFBVyxJQUFGN08sT0FBT0EsT0FBT0EsS0FBS2dMLGdCQUFpQnBMLEVBQUVJO1FBQ3pDLElBQUZKLElBQUlrTCxvQkFBb0J1RCx5QkFBeUJRO1FBQ3JELElBQVcsSUFBRjdPLE9BQU9BLE9BQU9BLEtBQUtnTCxnQkFBaUJwTCxFQUFFSTs7T0FFakQ7O0lBRUY0TyxhQUFhOUU7SUFDYjhFLGFBQWE5RTtHQUNmO0dBN25CQSxTQUFTZ0YsNkJBQTZCQztJQUNwQyxPQUFPQSw4QkFDbUIsa0JBQ2pCOztHQUVYO0dBS0EsU0FBU0Msc0JBQXNCRCxNQUFNRTtJQUNuQyxJQUFJQztJQUNKLE9BQU9IOztPQUNFRyxPQUFPakIsY0FBYzs7T0FDckJpQixPQUFPQyxjQUFjOztPQUNyQkQsT0FBT0UsV0FBVzs7T0FDbEJGLE9BQU9sTSxZQUFZOztPQUNuQmtNLE9BQU9HLFlBQVk7O09BQ25CSCxPQUFPSSxhQUFhOztPQUNwQkosT0FBT2YsWUFBWTs7T0FDbkJlLE9BQU9mLFlBQVk7O09BQ25CZSxPQUFPZixZQUFZOztPQUNuQmUsT0FBT2YsWUFBWTs7T0FDbkJlLE9BQU9qQixjQUFjOztPQUNyQmlCLE9BQU9DLGNBQWM7O09BQ3JCRCxPQUFPbE0sWUFBWTs7SUFFNUIsS0FBS2tNLE1BQU14UTtJQUNGLElBQUw0RixXQUFXNEssS0FBS0QsT0FBT0gsNkJBQTZCQztJQUN4RCxPQUFPeks7R0FDVDtHWm9HQSxTQUFTaUwseUJBQTBCM1Q7SUFDdEIsSUFBUHNTLGFBQWFDO0lBQ2pCRCxZQUFZdFM7SUFDQyxJQUFUb1MsZUFBZUMsYUFBYUM7SUFDaEMsT0FBT0Y7R0FDVDtHQXJEQSxTQUFTd0IseUJBQTBCNVQ7SUFDakMsSUFBSWEsS0FBS2IsTUFDTGMsS0FBS2QsTUFDTGUsS0FBS2YsTUFDTDBTLE9BQU8zUjtJQUNYLEdBQUkyUjtLQUFhLFFBQ1Y3UixLQUFHQyxLQUFJQztlQUNGQSxnQkFBZW1SLFdBQVVBO2VBRTFCMkI7SUFFWCxJQUFJbEIsSUFBSXBTLG1CQUNKd0ksT0FBT2xJLEtBQUc4UixJQUFFN1IsTUFBSTZSLEtBQUc1UjtJQUN2QixHQUFJMlIsUUFBUztLQUNYM0o7S0FDQUEsT0FBT3hJLFlBQVdtUzs7O0tBRWxCM0osT0FBT3hJO0lBQ1QsR0FBSVEsYUFBYWdJLFFBQVFBO0lBQ3pCLE9BQU9BO0dBQ1Q7R1lsSEEsU0FBUytLLGlCQUFpQkM7SUFDeEIsSUFBSUMsU0FBU0QsYUFDVFY7SUFDSixJQUFXLElBQUZqUixPQUFPQSxJQUFJNFIsUUFBUTVSLElBQUs7S0FDL0IsR0FBSTJSLEtBQUszUjtNQUNQVTtLQUNGdVEsT0FBT0EsT0FBT1UsS0FBSzNSOztJQUVyQixPQUFPaVI7R0FDVDtHcEJ1VEEsU0FBU1ksd0JBQXdCcFQsSUFBSUU7SUFDbkM7WUFBV0g7YUFDVEM7YUFDRUEsb0JBQXVCRTthQUN4QkE7R0FDTDtHQUtBLFNBQVNtVCxnQkFBZ0IvUCxHQUFJLE9BQU9BLFNBQVM7R0FIN0MsU0FBU2dRLGdCQUFnQmhRLEdBQUksT0FBT0EsU0FBUztHb0JyUnJCLElBQXBCaVE7R0FLSixTQUFTQyxZQUFhbEIsTUFBTW1CLFFBQVFQLE1BQU16UTtJQUV4Q3RDLFlBQWNtUztJQUNkblMsY0FBY3NUO0lBQ2R0VCxZQUFjK1M7SUFDZC9TLFlBQVlzQztHQUNkO0dBRUErUSxvQ0FBb0NEO0dBRXBDQzthQUF5QzNSO0tBQy9CLElBQUorTDtLQUNKLFVBQVUvTCxrQkFBa0JBLE9BQU9BO0tBQ25DLE1BQU9BLGVBQWVnSDtNQUFRNUc7S0FDOUIsR0FBSTlCLG9CQUFvQjBCO01BQ3RCSTtLQUNGLEdBQUc5QjtNQUFpQyxJQUN2QixJQUFGb0IsT0FBT0EsSUFBSXBCLGtCQUFrQm9CLElBQUs7T0FDekMsR0FBSU0sSUFBSU4sVUFBVU0sSUFBSU4sTUFBTXBCLFVBQVVvQixJQUNwQ3NMO09BQ0ZlLE1BQU9BLE1BQU16TixVQUFVb0IsS0FBTU0sSUFBSU47OztNQUU5QixJQUNNLElBQUZBLElBQUlwQixzQkFBc0JvQixRQUFRQSxJQUFLO09BQzlDLEdBQUlNLElBQUlOLFVBQVVNLElBQUlOLEtBQUtwQixVQUFVb0IsSUFDbkNzTDtPQUVGZSxNQUFPQSxNQUFNek4sVUFBVW9CLE1BQU9NLElBQUlOOztLQUd0QyxPQUFPcU07SUFwQnNCO0dBdUIvQjRGO2FBQXNDNUY7S0FDcEMsT0FBT3pOOztRQUdMLElBQUlYLElBQUlXLFVBQVV5TixjQUNkdk4sSUFBSUYsVUFBVXlOO1FBQ2xCLE9BQU93Rix3QkFBd0I1VCxHQUFFYTs7O1FBR2pDLElBQUlkLElBQUlZLFVBQVV5TixjQUNkck0sSUFBSXBCLFVBQVV5TjtRQUNsQixhQUFhck8sR0FBR2dDO2dCQUVoQixPQUFPcEIsVUFBVXlOOztJQWJPO0dBaUI1QjRGO2FBQXNDNUYsS0FBSXRLO0tBQ3hDLE9BQU9uRDs7UUFHTEEsVUFBVXlOLGVBQWUwRixnQkFBZ0JoUTtRQUN6Q25ELFVBQVV5TixlQUFleUYsZ0JBQWdCL1A7UUFDekM7OztRQUdBbkQsVUFBVXlOLGVBQWV0SyxNQUN6Qm5ELFVBQVV5TixlQUFldEssTUFDekI7Z0JBRUFuRCxVQUFVeU4sT0FBT3RLLEdBQ2pCOztLQUVGO0lBaEIwQjtHQW9CNUJrUTthQUF1Q2xRO0tBQ3JDLE9BQU9uRDs7UUFHTCxJQUFJMkYsSUFBSXdOLGdCQUFnQmhRLElBQ3BCSCxJQUFJa1EsZ0JBQWdCL1A7UUFDeEIsR0FBR3dDLEtBQUszQztTQUNOaEQsZUFBZTJGOztTQUVaLElBQ08sSUFBRnZFLE9BQU9BLElBQUVwQixrQkFBa0JvQjtVQUNqQ3BCLFVBQVVvQixLQUFNQSxhQUFZdUUsSUFBSTNDO1FBR3BDOzs7UUFHQSxJQUFJcUksS0FBS2xJLE1BQ0xvUSxLQUFLcFE7UUFDVCxHQUFHa0ksTUFBTWtJO1NBQ1B2VCxlQUFlcUw7O1NBRVosSUFDTyxJQUFGakssT0FBT0EsSUFBRXBCLGtCQUFrQm9CO1VBQ2pDcEIsVUFBVW9CLEtBQU1BLGFBQVlpSyxLQUFLa0k7UUFHckM7Z0JBRUF2VCxlQUFlbUQsSUFDZjs7SUE5QnlCO0dBbUM3QmtRO2FBQTBDclEsR0FBR3dRO0tBQzNDLEdBQUl4VCxlQUFlZ0QsWUFBWWhELGFBQWFnRCxPQUFRO01BQ2xELElBQUl5USxLQUFLelQsWUFBYUEsa0JBQ2xCMFQsS0FBUTFRLFNBQVVBO01BQ3RCLE9BQU8wUSxLQUFLRDs7S0FFZCxHQUFJelQsb0JBQW9CZ0Q7TUFBZSxPQUM5QkEsZ0JBQWdCaEQ7S0FFekIsSUFBVyxJQUFGb0IsT0FBT0EsSUFBSXBCLGtCQUFrQm9CO01BQ3BDLEdBQUlwQixVQUFVb0IsTUFBTTRCLE9BQU81QixJQUN6QixPQUFRcEIsVUFBVW9CLEtBQUs0QixPQUFPNUI7S0FDbEMsT0FBUXBCOzs7OztRQU1OLElBQUloQixHQUFHd0I7UUFDUCxJQUFXLElBQUZZLE9BQU9BLElBQUlwQixrQkFBa0JvQixJQUFLO1NBQ3pDcEMsSUFBSWdCLFVBQVVvQjtTQUNkWixJQUFJd0MsT0FBTzVCO1NBQ1gsR0FBSXBDLElBQUl3QixHQUNOO1NBQ0YsR0FBSXhCLElBQUl3QixHQUNOO1NBQ0YsR0FBSXhCLEtBQUt3QixFQUFHO1VBQ1YsS0FBS2dULE9BQU8sT0FBT1g7VUFDbkIsR0FBSTdULEtBQUtBLEdBQUc7VUFDWixHQUFJd0IsS0FBS0EsR0FBRzs7O1FBR2hCOztRQUdBLElBQVcsSUFBRlksT0FBT0EsSUFBSXBCLGtCQUFrQm9CLE9BQU07U0FFMUMsR0FBSXBCLFVBQVVvQixTQUFPNEIsT0FBTzVCLFFBQzFCO1NBQ0YsR0FBSXBCLFVBQVVvQixTQUFPNEIsT0FBTzVCLFFBQzFCO1NBQ0YsR0FBS3BCLFVBQVVvQixXQUFhNEIsT0FBTzVCLFVBQ2pDO1NBQ0YsR0FBS3BCLFVBQVVvQixXQUFhNEIsT0FBTzVCLFVBQ2pDOztRQUVKOzs7Ozs7Ozs7UUFTQSxJQUFXLElBQUZBLE9BQU9BLElBQUlwQixrQkFBa0JvQixJQUFLO1NBQ3pDLEdBQUlwQixVQUFVb0IsS0FBSzRCLE9BQU81QixJQUN4QjtTQUNGLEdBQUlwQixVQUFVb0IsS0FBSzRCLE9BQU81QixJQUN4Qjs7UUFFSjs7S0FFRjtJQS9EOEI7R0FvRWhDLFNBQVN1UyxrQkFBa0J4QixNQUFNbUIsUUFBUVAsTUFBTXpRO0lBQzdDdEMsWUFBY21TO0lBQ2RuUyxjQUFjc1Q7SUFDZHRULFlBQWMrUztJQUNkL1MsWUFBY3NDO0dBQ2hCO0dBRUFxUixrQ0FBa0NOO0dBQ2xDTTthQUErQ2pTO0tBQzdDLFVBQVVBO01BQWlCLEdBQ3JCQSxlQUFlZ0gsU0FBVWhIO09BQzNCQSxNQUFNQTs7T0FDSEk7S0FFUCxHQUFJSixXQUFXQSxPQUFPMUIsY0FDcEIwTTtLQUNGLE9BQU9oTDtJQVI0QjtHQVdyQ2lTLDJDQUE0Q2xHLEtBQzFDLE9BQU96TixVQUFVeU4sS0FEZTtHQUlsQ2tHO2FBQTRDbEcsS0FBSXRLLEdBQzlDbkQsVUFBVXlOLE9BQU90SyxHQUNqQixTQUZnQztHQUtsQ3dRO2FBQTZDeFEsR0FDM0NuRCxlQUFlbUQsSUFDZixTQUZpQztHQWFuQyxTQUFTeVEsc0JBQXNCekIsTUFBTW1CLFFBQVFQLE1BQU1yTDtJQUM1QixJQUFqQm1NLG1CQUFtQjNCLDZCQUE2QkM7SUFDcEQsR0FBR1csaUJBQWlCQyxRQUFRYyxvQkFBb0JuTTtLQUM5QzVGO0lBRUYsR0FBR3dSLGVBQ0FQLG9CQUNBYztLQUNELFdBQVdGLGtCQUFrQnhCLE1BQU1tQixRQUFRUCxNQUFNckw7SUFDbkQsV0FBVzJMLFlBQVlsQixNQUFNbUIsUUFBUVAsTUFBTXJMO0dBRTdDO0dBeVhBLFNBQVNvTSxvQkFBb0JDLFFBQVEvQixJQUFJM047SUFDMUIsSUFBVDJQLFdBQVdEO0lBQ2YsR0FBSUMsZ0JBQWdCQTtLQUNsQjdKO0lBQ0Y7S0FBSTFLLE1BQU1zVTtLQUNONUIsT0FBTzFTO0tBQ1A2VCxTQUFVN1Q7S0FDVnNUO0lBQ0osR0FBRzFPO0tBQ0QsSUFBVyxJQUFGakQsT0FBT0EsSUFBSTRTLFVBQVU1UyxJQUFLO01BQ3BCLElBQVQ2UyxXQUFXRjtNQUNmLEdBQUdFLG1CQUFtQjtPQUNwQixJQUFJQyxjQUFjSCxrQkFDZEksY0FBY0o7T0FDbEIsR0FBR0c7UUFDRC9KO09BQ0Y4SixXQUFXRTs7TUFFYnBCLFVBQVVrQjs7O0tBR1osSUFBVyxJQUFGN1MsT0FBT0EsSUFBSTRTLFVBQVU1UyxLQUFLMlIsVUFBVWdCO0lBQy9DO0tBQUkxQixPQUFPUyxpQkFBaUJDO0tBQ3hCckwsT0FBTzBLLHNCQUFzQkQsTUFBTUU7S0FDbkNuRixLQUFLMEcsc0JBQXNCekIsTUFBTW1CLFFBQVFQLE1BQU1yTDtJQUNuRCxPQUFPeUs7O09BRUwsSUFBVSxJQUFGL1EsT0FBT0EsSUFBSWlSLE1BQU1qUixLQUN2QnNHLEtBQUt0RyxLQUFLMlMsaUJBRVo7OztPQUdBLElBQVUsSUFBRjNTLE9BQU9BLElBQUlpUixNQUFNalIsS0FDdkJzRyxLQUFLdEcsS0FBSzJTLGlCQUVaOztPQUVBLElBQVUsSUFBRjNTLE9BQU9BLElBQUlpUixNQUFNalIsS0FDdkJzRyxLQUFLdEcsS0FBSzJTLGtCQUVaOztPQUVBLElBQVUsSUFBRjNTLE9BQU9BLElBQUlpUixNQUFNalIsS0FDdkJzRyxLQUFLdEcsS0FBSzJTLGtCQUVaOztPQUVBLElBQVUsSUFBRjNTLE9BQU9BLElBQUlpUixNQUFNalIsS0FDdkJzRyxLQUFLdEcsS0FBSzJTLGtCQUVaOzs7T0FHVSxJQUFOSyxRQUFRTDtPQUNaLEdBQUdLO1FBQU9qSzs7T0FDVixJQUFVLElBQUYvSSxPQUFPQSxJQUFJaVIsTUFBTWpSLEtBQ3ZCc0csS0FBS3RHLEtBQUsyUztPQUVaOztPQUVNLElBQUZsUixRQUFRNkY7T0FDWixJQUFVLElBQUZ0SCxPQUFPQSxJQUFJaVIsTUFBTWpSLElBQUk7UUFDM0IsSUFBVyxJQUFGZ0MsT0FBTUEsT0FBTUEsS0FBS1AsRUFBRU8sS0FBSzJRO1FBQ3ZCLElBQU5NLFFBQVEvRyxvQkFBb0J6SztRQUNoQ3FLLE9BQU85TCxHQUFFaVQ7O09BRVg7O09BRU0sSUFBRnhSLFFBQVE2RjtPQUNaLElBQVUsSUFBRnRILE9BQU9BLElBQUlpUixNQUFNalIsSUFBSTtRQUMzQixJQUFXLElBQUZnQyxPQUFNQSxPQUFNQSxLQUFLUCxFQUFFTyxLQUFLMlE7UUFDM0IsSUFBRjdSLElBQUkwUSx5QkFBeUJ0RixvQkFBb0J6SztRQUNyRHFLLE9BQU85TCxHQUFFYzs7T0FFWDs7T0FFQSxJQUFVLElBQUZkLE9BQU9BLElBQUlpUixNQUFNalIsSUFBSTtRQUNyQixJQUFGYyxJQUFJeVEseUJBQXlCb0I7UUFDakM3RyxPQUFPOUwsR0FBRWM7O09BRVg7O09BRUEsSUFBVSxJQUFGZCxPQUFPQSxJQUFJaVIsTUFBTWpSLElBQUk7UUFDM0I7U0FBSW1TLEtBQUtaLHlCQUF5Qm9CO1NBQzlCMUksS0FBS3NILHlCQUF5Qm9CO1FBQ2xDN0csT0FBTzlMLFNBQU9tUyxJQUFHbEk7O09BRW5COztPQUVNLElBQUZ4SSxRQUFRNkY7T0FDWixJQUFVLElBQUZ0SCxPQUFPQSxJQUFJaVIsTUFBTWpSLElBQUk7UUFDM0IsSUFBVyxJQUFGZ0MsT0FBTUEsT0FBTUEsS0FBS1AsRUFBRU8sS0FBSzJRO1FBQzFCLElBQUhSLEtBQUtYLHlCQUF5QnRGLG9CQUFvQnpLO1FBQ3RELElBQVcsSUFBRk8sT0FBTUEsT0FBTUEsS0FBS1AsRUFBRU8sS0FBSzJRO1FBQzFCLElBQUgxSSxLQUFLdUgseUJBQXlCdEYsb0JBQW9Ceks7UUFDdERxSyxPQUFPOUwsU0FBT21TLElBQUdsSTs7T0FFbkI7O0lBRUYyRyxhQUFhZ0M7SUFDYixPQUFPSixzQkFBc0J6QixNQUFNbUIsUUFBUVAsTUFBTXJMO0dBQ25EO0dBamZBLFNBQVM0TSxnQkFBZ0IzTyxHQUFFM0MsR0FBRXdRLE9BQzNCLE9BQU83TixVQUFVM0MsR0FBRXdRLE9BQ3JCO0dHdkxBLFNBQVNlLG9CQUFxQnJVLEdBQUdpRDtJQUMvQmpELElBQUlpUCxrQkFBa0JqUCxHQUFHaVQsZ0JBQWdCaFE7SUFDekNqRCxJQUFJaVAsa0JBQWtCalAsR0FBR2dULGdCQUFnQi9QO0lBQ3pDLE9BQU9qRDtHQUNUO0dBVkEsU0FBU3NVLG9CQUFxQnRVLEdBQUd1VTtJQUMvQixPQUFPRixvQkFBb0JyVSxHQUFHdVIseUJBQTBCZ0Q7R0FDMUQ7R0h3ckJBLFNBQVNDLGFBQWF4SDtJQUNwQixJQUFJeUgsV0FBVzdCLGlCQUFpQjVGLFVBQzVCaE47SUFDSixPQUFPZ047Ozs7T0FJTCxHQUFHeUgsZ0JBQWdCQTtPQUNuQixJQUFJQyxPQUFPeFQ7T0FDWCxJQUFJQSxPQUFPQSxTQUFTOEwsZ0JBQWdCOUwsT0FBSztRQUN2Q3dUO1NBQUkxSCxRQUFROUwsU0FBUThMLFFBQVE5TCxjQUFjOEwsUUFBUTlMO1dBQWU4TCxRQUFROUw7UUFDekVsQixJQUFJaVAsa0JBQWtCalAsR0FBRTBVOztPQUUxQkE7T0FDQSxPQUFRRDs7VUFDQUMsSUFBSzFILFFBQVE5TDs7VUFDYndULEtBQUsxSCxRQUFROUw7O1VBQ2J3VCxLQUFLMUgsUUFBUTlMLFFBQ25CbEIsSUFBSWlQLGtCQUFrQmpQLEdBQUcwVTs7T0FFM0I7OztPQUdBLEdBQUdELGdCQUFnQkE7T0FDbkIsSUFBSUMsT0FBT3hUO09BQ1gsSUFBSUEsT0FBT0EsU0FBUzhMLGdCQUFnQjlMLE9BQUs7UUFDdkN3VCxJQUFJMUgsUUFBUTlMLFNBQVE4TCxRQUFROUw7UUFDNUJsQixJQUFJaVAsa0JBQWtCalAsR0FBRTBVOztPQUUxQixJQUFLRCxvQkFDSHpVLElBQUlpUCxrQkFBa0JqUCxHQUFHZ04sUUFBUTlMO09BQ25DOztPQUVBLEdBQUl1VCxlQUFlQTtPQUNuQixJQUFXLElBQUZ2VCxPQUFPQSxJQUFJdVQsVUFBVXZULEtBQUtsQixJQUFJaVAsa0JBQWtCalAsR0FBR2dOLFFBQVE5TDtPQUNwRTs7O09BR0EsR0FBSXVULGVBQWVBO09BQ25CLElBQVcsSUFBRnZULE9BQU9BLElBQUl1VCxVQUFVdlQsS0FBS2xCLElBQUlpUCxrQkFBa0JqUCxHQUFHZ04sUUFBUTlMO09BQ3BFOztPQUVBLEdBQUl1VCxlQUFlQTtPQUNuQkE7T0FDQSxJQUFXLElBQUZ2VCxPQUFPQSxJQUFJdVQsVUFBVXZULEtBQzVCbEIsSUFBSWlQLGtCQUFrQmpQLEdBQUdnTixRQUFROUw7T0FFbkM7O09BRUF1VDs7T0FFQSxHQUFJQSxlQUFlQTtPQUNuQixJQUFXLElBQUZ2VCxPQUFPQSxJQUFJdVQsVUFBVXZUO1FBQUtsQixJQUFJc1Usb0JBQW9CdFUsR0FBR2dOLFFBQVE5TDtPQUN0RTs7T0FFQXVUOztPQUVBLEdBQUlBLGVBQWVBO09BQ25CLElBQVcsSUFBRnZULE9BQU9BLElBQUl1VCxVQUFVdlQ7UUFBS2xCLElBQUlzVSxvQkFBb0J0VSxHQUFHZ04sUUFBUTlMO09BQ3RFOztJQUVGLE9BQU9sQjtHQUNUO0dIeG9CQSxTQUFTMlUscUJBQXFCZCxRQUFRMUIsTUFDcENBLGFBQ0EsT0FBTzBCO0dBQ1Q7R0FJQSxTQUFTZSx5QkFBeUJmLFFBQVExQjtJQUN4QyxPQUFRMEI7O09BRU4xQixhQUNBLE9BQU8wQjs7T0FFUDVKO2VBQ09BOztHQUVYO0dBaENBLFNBQVM0SyxxQkFBcUJoQixRQUFRMUI7SUFDOUIsSUFBRnhQLFFBQVE2RjtJQUNaLElBQVcsSUFBRnRGLE9BQU1BLE9BQU1BLEtBQUtQLEVBQUVPLEtBQUsyUTtJQUNqQzFCO0lBQ0EsT0FBTy9FLG9CQUFxQnpLO0dBQzlCO0dqQlNBLFNBQVNtUyxtQkFBbUJoVyxHQUFFd0IsR0FBR2dULE9BQVMsT0FBT3hVLFVBQVV3QixHQUFHO0dBOEo5RCxTQUFTeVUsZ0JBQWdCOVIsR0FDdkIsT0FBUUEsV0FBYUEsU0FDdkI7R2lCeElvQjtJQUFoQitSOztxQkFFZ0JIO21CQUNENUc7O2lCQUVINkc7Y0FDSEM7MkJBR1FKOzJCQUlBQzs7O2lCQUlXZixRQUFRL0I7U0FBSyxPQUFPOEIsb0JBQXFCQyxRQUFPL0I7UUFBMUQ7bUJBQ0hEO2lCQUNGdUM7Y0FDSkk7OztpQkFHbUJYLFFBQVEvQjtTQUFLLE9BQU84QixvQkFBcUJDLFFBQU8vQjtRQUExRDttQkFDSEQ7aUJBQ0Z1QztjQUNKSTtHUWxPYixTQUFTUyw0QkFBNEJ4UDtJQUNuQyxPQUFPdVAsZ0JBQWdCdlA7Y0FBa0J1UCxnQkFBZ0J2UDtHQUMzRDtHQUlBLFNBQVN5UCwrQkFBK0JDLEtBQUtDLFFBQVFDLE1BQU0vQjtJQUNoRCxJQUFML08sT0FBTzBRLDRCQUE0Qkc7SUFDdkMsR0FBRzdRLEtBQU07S0FDRCxJQUFGekYsSUFBS3VXLFdBQVU5USxLQUFLNlEsUUFBT0QsS0FBSTdCLFNBQU8vTyxLQUFLNFEsS0FBSUMsUUFBTzlCO0tBQzFELEdBQUdBLFNBQVN4VSxLQUFLQSxHQUFHLE9BQU91VztLQUMzQixLQUFJdlcsT0FBTUEsR0FBRyxTQUFRQTtLQUNyQixJQUFJQSxhQUFhLE9BQVFBOztJQUUzQixPQUFPdVc7R0FDVDtHQXRDQSxTQUFTQyxxQkFBcUI3UDtJQUM1QixVQUFXQTtLQUFnQjtZQUNsQk0saUJBQWlCTjtLQUFJO1lBQ3JCTyxrQkFBa0JQO0tBQUk7WUFDdEJBLGFBQWErQyxTQUFTL0MsU0FBVUEsY0FBYUEsWUFBYSxDQUV6RCxJQUFKbEcsTUFBTWtHLFVBR1YsT0FBUWxHLGlCQUFjQTtZQUVma0csYUFBYXRDO0tBQVE7bUJBQ2RzQztLQUFlO1lBQ3RCQSxhQUFhOFA7S0FBUTtZQUNyQjlQLEtBQUtBO0tBQWU7WUFDcEJBLEtBQUtBO0tBQVc7bUJBQ1RBO0tBQWlCO21CQUNqQkEsZUFBZTtJQUMvQjtHQUNGO0dBME1BLFNBQVMrUCxpQkFBa0IvUCxHQUFHM0M7SUFDNUIsR0FBSTJDLElBQUkzQyxHQUFHO0lBQWEsR0FBSTJDLEtBQUszQyxHQUFHO0lBQVU7R0FDaEQ7R3hCMGFBLFNBQVMyUyxvQkFBb0I3TyxJQUFJRTtJQUMvQixPQUFRRixLQUFLRSxXQUFRRixLQUFLRTtHQUM1QjtHQXRKQSxTQUFTNE8sbUJBQW1COU8sSUFBSUU7SUFDN0JGLFlBQWFsQiw2QkFBNkJrQjtJQUMxQ0UsWUFBYXBCLDZCQUE2Qm9CO0lBQzNDLE9BQVFGLE9BQU9FLGFBQVVGLE9BQU9FO0dBQ2xDO0d3QjNjQSxTQUFTNk8saUJBQWtCbFEsR0FBRzNDLEdBQUd3UTtJQUNyQixJQUFOc0M7SUFDSixPQUFRO0tBQ04sTUFBTXRDLFNBQVM3TixNQUFNM0MsR0FBSTtNQUNiLElBQU4rUyxRQUFRUCxxQkFBcUI3UDtNQUVqQyxHQUFHb1EsYUFBYyxDQUFFcFEsSUFBSUEsTUFBTTtNQUVuQixJQUFOcVEsUUFBUVIscUJBQXFCeFM7TUFFakMsR0FBR2dULGFBQWMsQ0FBRWhULElBQUlBLE1BQU07TUFHN0IsR0FBRytTLFVBQVVDLE1BQU87T0FDbEIsR0FBR0QsY0FBZTtRQUNoQixHQUFHQztTQUFlLE9BQ1RaLCtCQUErQnpQLEdBQUczQyxRQUFPd1E7UUFFbEQ7O09BRUYsR0FBR3dDLGNBQWU7UUFDaEIsR0FBR0Q7U0FBZSxPQUNUWCwrQkFBK0JwUyxHQUFHMkMsTUFBTTZOO1FBRWpEOztPQUVGLE9BQVF1QyxRQUFRQzs7TUFFbEIsT0FBT0Q7O1NBSUxqVSxvREFDQTs7U0FFTSxJQUFGOUMsSUFBSTBXLGlCQUFpQi9QLE1BQU0zQyxPQUMvQixHQUFJaEUsUUFBUSxPQUFRQSxPQUNwQjs7U0FHQThDLG9EQUNBOztTQUdBQTtTQUNBOztTQUVBQSxnREFDQTs7U0FFQSxHQUFJNkQsTUFBTTNDLEVBQUc7VUFDTCxJQUFGaEUsSUFBSTRXLG1CQUFtQmpRLEdBQUczQztVQUM5QixHQUFJaEUsUUFBUSxPQUFRQTs7U0FFdEI7O1NBR0E4QztTQUNBOztTQUdBQTs7U0FDQTs7U0FFQUE7U0FDQTs7U0FFQUEsb0RBQ0E7O1NBRVMsSUFBTDJDLE9BQU8wUSw0QkFBNEJ4UDtTQUN2QyxHQUFHbEIsUUFBUTBRLDRCQUE0Qm5TO1VBQUcsT0FDaEMyQyxnQkFBYzNDO1NBRXhCLEtBQUl5QixNQUNGM0M7U0FDSSxJQUFGOUMsSUFBSXlGLEtBQUtrQixHQUFFM0MsR0FBRXdRO1NBQ2pCLEdBQUd4VSxLQUFLQSxHQUFFLE9BQ0R3VSxjQUFTeFU7U0FFbEIsR0FBR0EsT0FBT0EsUUFBSztTQUdmLEdBQUlBLFFBQVEsT0FBUUE7U0FDcEI7O1NBRU0sSUFBRkEsSUFBSTJHLFVBQVUzQyxHQUFFd1E7U0FDcEIsR0FBR3hVLEtBQUtBLEdBQUcsT0FDRndVLGNBQVN4VTtTQUVsQixHQUFHQSxPQUFPQSxRQUFLO1NBR2YsR0FBSUEsUUFBUSxPQUFRQTtTQUNwQjs7U0FFQTJHLE1BQUtBO1NBQ0wzQyxNQUFLQTtTQUNMLEdBQUkyQyxJQUFJM0MsR0FBRztTQUNYLEdBQUkyQyxJQUFJM0MsR0FBRztTQUNYLEdBQUkyQyxLQUFLM0MsRUFBRztVQUNWLEtBQUt3USxPQUFPLE9BQU9YO1VBQ25CLEdBQUlsTixLQUFLQSxHQUFHO1VBQ1osR0FBSTNDLEtBQUtBLEdBQUc7O1NBRWQ7O1NBZUEsR0FBSTJDLElBQUkzQyxHQUFHO1NBQ1gsR0FBSTJDLElBQUkzQyxHQUFHO1NBQ1gsR0FBSTJDLEtBQUszQyxFQUFHO1VBQ1YsS0FBS3dRLE9BQU8sT0FBT1g7VUFDbkIsR0FBSWxOLEtBQUtBLEdBQUc7VUFDWixHQUFJM0MsS0FBS0EsR0FBRzs7U0FFZDs7U0FFQSxHQUFHMkMsTUFBTTNDLEVBQUcsQ0FDVixLQUFLd1EsT0FBTyxPQUFPWCxLQUNuQixXQUVGOztTQUVBLElBQUlsTixJQUFJN0UsdUJBQXVCNkUsSUFDM0IzQyxJQUFJbEMsdUJBQXVCa0M7U0FDL0IsR0FBRzJDLE1BQU0zQyxFQUFHLENBQ1YsR0FBRzJDLElBQUkzQyxHQUFHLFlBQ1YsR0FBRzJDLElBQUkzQyxHQUFHO1NBRVo7O1NBRUEsSUFBSTJDLElBQUlBLGNBQ0ozQyxJQUFJQTtTQUNSLEdBQUcyQyxNQUFNM0MsRUFBRyxDQUNWLEdBQUcyQyxJQUFJM0MsR0FBRyxZQUNWLEdBQUcyQyxJQUFJM0MsR0FBRztTQUVaOzs7O1NBSUEsR0FBRytOLHlCQUF5QmdGLE9BQVE7VUFDbENqVTtVQUNBOztTQUVGLEdBQUk2RCxZQUFZM0MsVUFBVSxPQUFRMkMsV0FBVzNDO1NBQzdDLEdBQUkyQyxjQUFjbVEsV0FBV25RLEdBQUczQztTQUNoQzs7O0tBR0osR0FBSThTLG1CQUFtQjtLQUNqQixJQUFGMVUsSUFBSTBVO0tBQ1I5UyxJQUFJOFM7S0FDSm5RLElBQUltUTtLQUNKLEdBQUkxVSxRQUFRdUUsVUFBVW1RLFdBQVduUSxHQUFHM0MsR0FBRzVCO0tBQ3ZDdUUsSUFBSUEsRUFBRXZFO0tBQ040QixJQUFJQSxFQUFFNUI7O0dBRVY7R0FtQkEsU0FBUzZVLGlCQUFrQmpYLEdBQUd3QjtJQUFLLFVBQVNxVixpQkFBaUI3VyxHQUFFd0I7R0FBZTtHWHFCOUUsU0FBUzBWLFdBQVd2USxHQUFHM0MsR0FBR2I7SUFDeEI7S0FBSW5ELElBQUkyRyxhQUFhM0M7S0FDakJ4QyxJQUFJakIsV0FBV1AsSUFBRW1EO0tBQ2pCZ1UsSUFBS25YLElBQUltRDtLQUNUeVMsSUFBSXVCLEtBQUtuVDtJQUNiLFFBQVF4QyxJQUFJakIsV0FBV3FWLElBQUV6UyxJQUFJeVMsSUFBSXpTO0dBQ25DO0dBS0EsU0FBU2lVLGNBQWNDLE1BQU1DLE1BQU1DLE1BQU1DLE1BQU03TCxNQUFNQyxNQUFNM0ksS0FBSzZJLE1BQU1DO0lBQzVELElBQUowTCxNQUFPOUwsVUFBVUMsT0FBSzNJO0lBRzFCLElBQVUsSUFBRmIsSUFBSWEsU0FBT2IsUUFBUUEsSUFBSztLQUN4QjtNQUFGcEMsSUFBSWtYLFdBQVdPLEtBQU05TCxVQUFVQyxPQUFLeEosVUFBWTBKLFVBQVVDO0tBQzlEc0wsVUFBVUMsT0FBS2xWLEtBQUtwQztLQUNwQnlYLE1BQU16WDs7SUFFUnVYLFVBQVVDLFFBQVFDO0lBQ2xCO0dBQ0Y7R0FqTUEsU0FBU0MsK0JBQStCckgsS0FBSzVCO0lBQzNDLElBQUk5SCxJQUFJMEosU0FBUzVCLE1BQ2J6SztJQUNKLEdBQUcyQyxlQUFnQixDQUFFM0MsU0FBUTJDO0lBQzdCLEdBQUdBLFdBQWdCLENBQUUzQyxRQUFRMkM7SUFDN0IsR0FBR0EsU0FBZ0IsQ0FBRTNDLFFBQVEyQztJQUM3QixHQUFHQSxPQUFnQixDQUFFM0MsUUFBUTJDO0lBQzdCLEdBQUdBLE1BQWdCLENBQUUzQyxRQUFRMkM7SUFDN0IsR0FBR0EsT0FBa0IzQztJQUNyQixZQUFZQTtHQUNkO0dBZ0pBLFNBQVMyVCxlQUFlaE0sTUFBTUMsTUFBTUMsTUFBTUMsTUFBTUMsTUFBTUM7SUFDcEQsR0FBR0EsV0FBWSxDQUNiRixVQUFVQyxXQUNWO0lBRU8sSUFBTEU7SUFDSixJQUFVLElBQUY3SixPQUFPQSxJQUFJeUosTUFBTXpKLElBQUs7S0FDdEIsSUFBRnVFLElBQUtnRixVQUFVQyxPQUFLeEo7S0FDeEJ1SixVQUFVQyxPQUFLeEosS0FBTXVFLEtBQUtxRixRQUFTQztLQUNuQ0EsT0FBT3RGLFdBQVlxRjs7SUFFckJGLFVBQVVDLFFBQVFFO0lBQ2xCO0dBQ0Y7R0FuUUEsU0FBUzJMLE1BQU01WDtJQUNiZ0IsZ0JBQWdCdVIsV0FBV3ZTO0lBTzNCZ0IsY0FBY0E7R0FDaEI7R0FFQTRXO0dBMEJBLFNBQVNDLFdBQVd4RTtJQUNWLElBQUp5RSxVQUFVRixNQUFNdkU7SUFDcEIsSUFBVSxJQUFGalIsT0FBT0EsSUFBSWlSLE1BQU1qUixLQUN2QjBWLFNBQVMxVjtJQUVYLE9BQU8wVjtHQUNUO0dBR0EsU0FBU0MsZ0JBQWdCMUgsS0FBSzVCLEtBQUt4TDtJQUNqQyxJQUFVLElBQUZiLE9BQU9BLElBQUlhLEtBQUtiLEtBQ3RCaU8sU0FBUzVCLE1BQUlyTTtJQUVmO0dBQ0Y7R0F3RUEsU0FBUzRWLFNBQVMzSCxLQUFLNUIsS0FBS3hMLEtBQUtnVjtJQUNyQixJQUFOQyxRQUFRRDtJQUNaLElBQVUsSUFBRjdWLE9BQU9BLElBQUlhLEtBQUtiLElBQUs7S0FDckIsSUFBRnBDLEtBQUtxUSxTQUFTNUIsTUFBSXJNLFlBQVk4VjtLQUNsQzdILFNBQVM1QixNQUFJck0sS0FBTXBDO0tBQ25CLEdBQUdBLEtBQU1BLFFBQVUsQ0FDakJrWSxXQUNBLGFBRUFBOztJQUdKLE9BQU9BO0dBQ1Q7R0FLQSxTQUFTQyxRQUFReE0sTUFBTUMsTUFBTUMsTUFBTUMsTUFBTUMsTUFBTXFNLE1BQU1IO0lBQ3pDLElBQU5DLFFBQVFEO0lBQ1osSUFBVSxJQUFGN1YsT0FBT0EsSUFBSWdXLE1BQU1oVyxJQUFLO0tBQ3RCO01BQUZwQyxLQUFLMkwsVUFBVUMsT0FBS3hKLGFBQWEwSixVQUFVQyxPQUFLM0osWUFBWThWO0tBQ2hFdk0sVUFBVUMsT0FBS3hKLEtBQUtwQztLQUNwQixHQUFHQSxLQUFNQSxTQUNQa1ksZ0JBRUFBOztJQUdKLE9BQU9GLFNBQVNyTSxNQUFNQyxPQUFLd00sTUFBTXZNLE9BQUt1TSxNQUFNRjtHQUM5QztHQTFIQSxTQUFTRyxhQUFhaFksR0FDcEIsV0FBV3VYLE1BQU12WCxHQUNuQjtHQXdLQSxTQUFTaVksZUFBZTNNLE1BQU1DLE1BQU1DLE1BQU1DLE1BQU1DLE1BQU1xTSxNQUFNRyxNQUFNQztJQUNoRSxJQUFJTixXQUNBdlIsSUFBSzRSLFVBQVVDO0lBQ25CLElBQVUsSUFBRnBXLE9BQU9BLElBQUlnVyxNQUFNaFcsSUFBSztLQUM1QjtNQUFJcVc7U0FBTTlNLFVBQVVDLE9BQUt4SjtXQUFhMEosVUFBVUMsT0FBSzNKLGFBQWF1RTtVQUFrQnVSO01BQ2hGUSxNQUFNNU0sVUFBVUMsT0FBSzNKLGFBQWF1RTtLQUN0Q3VSLFFBQVEzWCxXQUFXbVk7S0FDWixJQUFIQyxLQUFLRixLQUFNQztLQUNmL00sVUFBVUMsT0FBS3hKLEtBQUt1VztLQUNwQlQsU0FBUzNYLFdBQVdvWTs7SUFHdEIsT0FBR1AsT0FBT3ZNLFFBQVFxTTtjQUNUQztlQUFReE0sTUFBTUMsT0FBS3dNLE1BQU12TSxPQUFLdU0sTUFBTUMsY0FBY0g7Y0FFbERBO0dBRVg7R0F0REEsU0FBU1UsU0FBU3ZJLEtBQUs1QixLQUFLeEwsS0FBS2dWO0lBQ3BCLElBQVBZLFNBQVVaO0lBQ2QsSUFBVSxJQUFGN1YsT0FBT0EsSUFBSWEsS0FBS2IsSUFBSztLQUNyQixJQUFGcEMsS0FBS3FRLFNBQVM1QixNQUFJck0sWUFBV3lXO0tBQ2pDeEksU0FBUzVCLE1BQUlyTSxLQUFLcEM7S0FDbEIsR0FBSUEsT0FBUSxDQUNWNlksWUFDQSxhQUVBQTs7SUFHSixPQUFRQTtHQUNWO0dBTUEsU0FBU0MsUUFBUW5OLE1BQU1DLE1BQU1DLE1BQU1DLE1BQU1DLE1BQU1xTSxNQUFNSDtJQUN4QyxJQUFQWSxTQUFVWjtJQUNkLElBQVUsSUFBRjdWLE9BQU9BLElBQUlnVyxNQUFNaFcsSUFBSztLQUN0QjtNQUFGcEMsS0FBSzJMLFVBQVVDLE9BQUt4SixhQUFhMEosVUFBVUMsT0FBSzNKLFlBQVl5VztLQUNoRWxOLFVBQVVDLE9BQUt4SixLQUFLcEM7S0FDcEIsR0FBSUEsUUFDRjZZLGlCQUVBQTs7SUFHSixPQUFPRCxTQUFTak4sTUFBTUMsT0FBS3dNLE1BQU12TSxPQUFLdU0sTUFBT1M7R0FDL0M7R0E0SkEsU0FBU0UsWUFBWXBOLE1BQU1DLE1BQU1DLE1BQU1DLE1BQU1DLE1BQU1xTTtJQUNqRDtLQUFJelIsSUFBSXlKLGVBQWV6RSxNQUFNQyxNQUFNQztLQUMvQjdILElBQUlvTSxlQUFldEUsTUFBTUMsTUFBTXFNO0lBQ25DLEdBQUd6UixJQUFJM0MsR0FBRztJQUNWLEdBQUcyQyxJQUFJM0MsR0FBRztJQUNWLElBQVUsSUFBRjVCLElBQUl5SixVQUFVekosUUFBUUEsSUFBSztLQUNqQyxHQUFLdUosVUFBVUMsT0FBS3hKLFdBQWEwSixVQUFVQyxPQUFLM0osVUFBVztLQUMzRCxHQUFLdUosVUFBVUMsT0FBS3hKLFdBQWEwSixVQUFVQyxPQUFLM0osVUFBVzs7SUFFN0Q7R0FDRjtHQXJFQSxTQUFTNFcsUUFBUXJOLE1BQU1DLE1BQU1DLE1BQU1DLE1BQU1DLE1BQU1xTTtJQUM3QyxHQUFHQSxVQUFXO0tBQ1poQixjQUFjekwsTUFBTUMsVUFBUUQsTUFBTUMsTUFBTUQsTUFBTUMsTUFBTUMsTUFBTUMsTUFBTUM7S0FDaEU7O0lBR0ksSUFBRjVMLElBQUl1WCwrQkFBK0I1TCxNQUFNQyxPQUFLcU07SUFDbERULGVBQWU3TCxNQUFNQyxNQUFNcU0sTUFBTUMsc0JBQXNCbFk7SUFDdkR3WCxlQUFlaE0sTUFBTUMsTUFBTUMsTUFBTXdNLHNCQUFzQmxZO0lBRXZELElBQUl5RixLQUFLa0csVUFBVUMsT0FBS3FNLHNCQUNwQnpSLElBQUlrUixXQUFXTztJQUNuQixJQUFXLElBQUZoVyxJQUFJeUosVUFBVXpKLEtBQUtnVyxNQUFNaFcsSUFBSztLQUU3QjtNQUFKNlc7UUFBTXJUO1dBQW1CK0YsVUFBVUMsT0FBS3hKO1dBQVk4VTthQUFZdkwsVUFBVUMsT0FBS3hKLFVBQVl1SixVQUFVQyxPQUFLeEosY0FBWXdEOztLQUMxSG1TLGdCQUFnQnBSLE1BQU15UjtLQUN0QkUsZUFBZTNSLE1BQU15UixVQUFRdE0sTUFBTUMsTUFBTXFNLE1BQU1DLGNBQWNZO0tBQzdESCxRQUFRbk4sTUFBTUMsT0FBS3hKLElBQUVnVyxNQUFNQSxVQUFRelIsTUFBTXlSO0tBRXpDO01BQU96TSxVQUFVQyxPQUFLeEo7U0FBVzJXLFlBQVlwTixNQUFNQyxPQUFLeEosSUFBRWdXLE1BQU1BLE1BQU10TSxNQUFNQyxNQUFNcU0sV0FBWTtNQUM1RmEsTUFBTUE7TUFDTkgsUUFBUW5OLE1BQU1DLE9BQUt4SixJQUFFZ1csTUFBTUEsVUFBUXRNLE1BQU1DLE1BQU1xTTs7S0FHakR6TSxVQUFVQyxPQUFLeEosS0FBSzZXOztJQUd0QnZOLGdCQUFnQkMsTUFBTUMsTUFBTXdNLE1BQU1DLHNCQUFzQmxZO0lBQ3hEdUwsZ0JBQWdCSSxNQUFNQyxNQUFNcU0sTUFBTUMsc0JBQXNCbFk7SUFDeEQ7R0FDRjtHTTBLQSxTQUFTK1ksYUFBYUMsS0FBS0M7SUFDekIsR0FBSUEsbUJBQW1CRDtLQUNyQnJXO0lBQ0YsSUFBVyxJQUFGVixPQUFPQSxJQUFJZ1gsaUJBQWlCaFg7S0FDbkMsR0FBSWdYLFNBQVNoWCxNQUFNK1csU0FBUy9XO01BQzFCVTtJQUNKc1csYUFBYUQ7SUFDYjtHQUNGO0dOM1lBLFNBQVNFLGFBQWFoSixLQUFLNUIsS0FDekIsR0FBSTRCLFNBQVM1QixXQUFXLFVBQ3hCLFNBQ0Y7R2QwSUEsU0FBUzZLLGVBQWdCdFosR0FBR3dCLEdBQUssT0FBT3hCLE1BQU13QixHQUFHO0cwQjFOakQsU0FBUytYLHNCQUFzQnBaO0lBQ2xCLElBQVBxWjtJQUNKLEdBQUdyWixRQUFRcVosUUFDWDtLQUNFLElBQUlqTSxLQUFLa00sT0FBT0M7S0FDaEJELGlCQUFnQnRaO0tBQ2hCb04sTUFBS2tNLG9CQUFvQkE7S0FDekJBLE9BQUtyVDtLQUNMLE9BQU9tSDs7O0tBR1BwQyxrQ0FBa0NoTDtHQUV0QztHekIybEJBLFNBQVN3Wix1QkFBd0J4WixHQUFHaUMsR0FBR2U7SUFDckNnSTtHQUNGO0dEN1hBLFNBQVN5TyxvQkFBcUI1WjtJQUM1QixHQUFJQSxPQUFPQSxJQUFJTyxVQUFVUDtJQUN6QjtZQUFXWTthQUNUWjthQUNBTyxXQUFXUCxJQUFJTTthQUNmQyxXQUFXUCxJQUFJTSxvQkFBb0JBO0dBQ3ZDO0drQmpFQSxTQUFTdVosd0JBQXdCak07SUFDdEIsSUFBTE4sT0FBT0YsaUJBQWlCUTtJQUM1QixPQUFPZ00sb0JBQW9CdE07R0FDN0I7R0V3UUEsU0FBU3dNLGNBQWM1TCxJQUFJTSxJQUFJekcsSUFBSTVEO0lBQ2pDK0osT0FBT0EsV0FBV00sSUFBR3pHLE1BQU01RDtJQUMzQjtHQUNGO0doQjFWQTtJQUFJNFY7TUFBYTtRQUNmLElBQUkvWCxVQUFVQyxvQkFDVitYLGdCQUNBM1Q7UUFFSixHQUFHckUsV0FDR0EsZ0JBQ0FBLHdCQUF5QjtTQUNwQixJQUFMaVksT0FBT2pZO1NBRVhnWSxPQUFPQztTQUNQNVQsT0FBTzRUOztRQUdULElBQUl2VyxJQUFJbUMsd0JBQXdCbVUsT0FDNUJFLFlBQVl4VztRQUNoQixJQUFVLElBQUZ0QixPQUFPQSxJQUFJaUUsYUFBYWpFO1NBQzlCOFgsV0FBV3JVLHdCQUF3QlEsS0FBS2pFO1FBQzFDLE9BQU84WDtPQWxCUzs7SUF1QmRDLHVCQUF1Qko7R0UwUDNCLFNBQVNLLG9CQUFxQmphLEdBQUksT0FBT2thLEtBQUsvVix3QkFBd0JuRSxJQUFJO0dRZDFFLFNBQVNtYSxjQUFjbEwsUUFBUWlCLEtBQUsyQztJQUMxQixJQUFKL1AsTUFBTW9OO0lBQ1ZqQixpQkFBaUJuTTtJQUNqQixJQUFVLElBQUZiLE9BQU9BLElBQUlhLEtBQUtiLEtBQ3RCZ04saUJBQWlCaUIsU0FBU2pPO0lBRTVCNFEsUUFBUS9QO0lBQ1IrUCxRQUFRL1A7R0FDVjtHSzNXQSxTQUFTc1gsaUJBQWlCQyxVQUN4QixTQUNGO0dmckJBLFNBQVNDLGNBQWV6VTtJQUN0QixHQUFHL0QsaUJBQWlCQSxnQkFBZ0IrRDtJQUVwQyxHQUFHL0Qsc0JBQXNCQTtLQUN2QkEsd0JBQXdCK0Q7SUFDMUJsRDtHQUNGO0djOElBLFNBQVM0WCx3QkFBd0I5TTtJQUN0QixJQUFMTixPQUFPRixpQkFBaUJRO0lBQzVCLE9BQU9OO0dBQ1Q7R1p5QkEsU0FBU3FOLG1CQUFtQmhVLEdBQzFCLE9BQU9BLFdBQ1Q7R2NxWEEsU0FBU2lVLGdCQUFnQjFNLElBQUkyTTtJQUMzQkEsT0FBT0YsbUJBQW1CRTtJQUMxQixJQUFJQyxjQUNBOUYsV0FBVzZGO0lBRWYsR0FBSTdGLGdCQUFnQkE7S0FDbEJsUztJQUVXLElBQVQ2UztJQUNKLElBQVcsSUFBRnZULE9BQU9BLElBQUk0UyxVQUFVNVMsSUFBSztLQUNqQzBZLFFBQVExWSxLQUFLeVksS0FBS3pZO0tBQ2xCLEdBQUkwWSxRQUFRMVk7TUFDVlU7S0FDRjZTLFdBQVdBLFdBQVdtRixRQUFRMVk7O0lBR3ZCLElBQUxpUixPQUFPUyxpQkFBaUI1RjtJQUU1QixHQUFJeUgsWUFBWXRDO0tBQ2R2UTtJQUNGLE9BQU84UixzQkFBc0IxRyxTQUFTQSxXQUFXNE0sU0FBUzVNO0dBQzVEO0dJL2NvQixJQUFoQjZNO0dBSUosU0FBU0MsZUFBZ0JoWCxHQUN2QkEsT0FBSytXLG1CQUNMLE9BQU8vVyxFQUNUO0dUMEtBLFNBQVNpWCxrQkFBa0JqYixHQUFFd0IsR0FBRW9VLEdBQUUxVTtJQUN6QixJQUFGZixJQUFJZ007SUFDUmhNLG1CQUFtQkgsR0FBRUcsV0FBV3FCLEdBQUVvVSxLQUFHMVU7SUFDckM7R0FDRjtHWXpQQSxTQUFTZ2EsaUNBQWlDQyxNQUFNQyxNQUFNQyxLQUFLQyxNQUFNclk7SUFDL0QsU0FBU29ZO0tBQ1B2WTtJQUNGLEdBQUdHLFVBQVU7SUFDSixJQUFMOEksT0FBT3NQLFdBQVdDO0lBQ3RCLEdBQUdGLE9BQU9uWSxNQUFNMkcsc0JBQXNCdVIsT0FDcEN6TjtJQUVGLEdBQUczQixPQUFPOUksTUFBTW9ZLGlCQUNkM047SUFFUSxJQUFONk4sUUFBUXpSLDJCQUEyQnFSLFlBQVlDLE1BQUtBLE9BQU9uWTtJQUMvRG9ZLGFBQWFFLE9BQU14UDtJQUNuQjtHQUNGO0dac0RBLFNBQVN5UCx5QkFBeUJuVztJQUMxQixJQUFGbEYsSUFBSWdNO0lBQ1JoTSxVQUFVa0Y7SUFDQyxJQUFQb1csU0FBU25YLHdCQUF3QmU7SUFDckMsR0FBR2xGLGFBQWFBLFlBQVlzYjtJQUM1QjtHQUNGO0daMkNBLFNBQVNDLHVCQUEwQixPQUFPaGIsaUJBQWtCO0dIbUU1RCxTQUFTaWIsZ0NBQWlDM2IsR0FBR0csR0FBSyxPQUFPSCx1QkFBdUJHO0dBQUc7R29CcUluRixTQUFTeWIsb0JBQW9CMU4sSUFBSU07SUFDdkIsSUFBSkMsTUFBTVAsVUFBVU07SUFDcEIsR0FBR0MsV0FBV1AsZ0JBQWdCUjtJQUM5QixJQUFJZ0IsS0FBS1IsT0FBT08sTUFDWkUsS0FBS1QsT0FBT087SUFDaEIsT0FBUUMsS0FBTUM7R0FDaEI7R0t6SkEsU0FBU2tOLGFBQWNsVixHQUFHM0MsR0FBSyxPQUFPNlMsaUJBQWtCbFEsR0FBRzNDLFNBQVU7R0c1TC9DO0lBQWxCOFg7TUFBb0I7UUFDdEIsU0FBU0MsSUFBSy9iLEdBQUd3QixHQUFLLE9BQVF4QixJQUFJd0IsTUFBUTtRQUMxQyxTQUFTd2EsR0FBR3ZhLEdBQUVrRixHQUFFM0MsR0FBRWhFLEdBQUVHLEdBQUUwRDtTQUNwQjhDLElBQUlvVixJQUFJQSxJQUFJcFYsR0FBR2xGLElBQUlzYSxJQUFJL2IsR0FBRzZEO1NBQzFCLE9BQU9rWSxJQUFLcFYsS0FBS3hHLElBQU13RyxXQUFZeEcsR0FBSzZEO1FBQzFDO1FBQ0EsU0FBU2lZLEdBQUd0VixHQUFFM0MsR0FBRWIsR0FBRXlDLEdBQUU1RixHQUFFRyxHQUFFMEQ7U0FDdEIsT0FBT21ZLEdBQUloWSxJQUFJYixNQUFRYSxJQUFLNEIsR0FBSWUsR0FBRzNDLEdBQUdoRSxHQUFHRyxHQUFHMEQ7UUFDOUM7UUFDQSxTQUFTcVksR0FBR3ZWLEdBQUUzQyxHQUFFYixHQUFFeUMsR0FBRTVGLEdBQUVHLEdBQUUwRDtTQUN0QixPQUFPbVksR0FBSWhZLElBQUk0QixJQUFNekMsTUFBTXlDLEdBQUtlLEdBQUczQyxHQUFHaEUsR0FBR0csR0FBRzBEO1FBQzlDO1FBQ0EsU0FBU3NZLEdBQUd4VixHQUFFM0MsR0FBRWIsR0FBRXlDLEdBQUU1RixHQUFFRyxHQUFFMEQsR0FBSyxPQUFPbVksR0FBR2hZLElBQUliLElBQUl5QyxHQUFHZSxHQUFHM0MsR0FBR2hFLEdBQUdHLEdBQUcwRCxHQUFJO1FBQ2xFLFNBQVN1WSxHQUFHelYsR0FBRTNDLEdBQUViLEdBQUV5QyxHQUFFNUYsR0FBRUcsR0FBRTBEO1NBQUssT0FBT21ZLEdBQUc3WSxLQUFLYSxNQUFNNEIsSUFBS2UsR0FBRzNDLEdBQUdoRSxHQUFHRyxHQUFHMEQ7UUFBSTtRQUV2RSxnQkFBaUIrUixHQUFHdFM7U0FDbEIsSUFBSXFELElBQUlpUCxNQUFNNVIsSUFBSTRSLE1BQU16UyxJQUFJeVMsTUFBTWhRLElBQUlnUTtTQUV0Q2pQLElBQUlzVixHQUFHdFYsR0FBRzNDLEdBQUdiLEdBQUd5QyxHQUFHdEM7U0FDbkJzQyxJQUFJcVcsR0FBR3JXLEdBQUdlLEdBQUczQyxHQUFHYixHQUFHRztTQUNuQkgsSUFBSThZLEdBQUc5WSxHQUFHeUMsR0FBR2UsR0FBRzNDLEdBQUdWO1NBQ25CVSxJQUFJaVksR0FBR2pZLEdBQUdiLEdBQUd5QyxHQUFHZSxHQUFHckQ7U0FDbkJxRCxJQUFJc1YsR0FBR3RWLEdBQUczQyxHQUFHYixHQUFHeUMsR0FBR3RDO1NBQ25Cc0MsSUFBSXFXLEdBQUdyVyxHQUFHZSxHQUFHM0MsR0FBR2IsR0FBR0c7U0FDbkJILElBQUk4WSxHQUFHOVksR0FBR3lDLEdBQUdlLEdBQUczQyxHQUFHVjtTQUNuQlUsSUFBSWlZLEdBQUdqWSxHQUFHYixHQUFHeUMsR0FBR2UsR0FBR3JEO1NBQ25CcUQsSUFBSXNWLEdBQUd0VixHQUFHM0MsR0FBR2IsR0FBR3lDLEdBQUd0QztTQUNuQnNDLElBQUlxVyxHQUFHclcsR0FBR2UsR0FBRzNDLEdBQUdiLEdBQUdHO1NBQ25CSCxJQUFJOFksR0FBRzlZLEdBQUd5QyxHQUFHZSxHQUFHM0MsR0FBR1Y7U0FDbkJVLElBQUlpWSxHQUFHalksR0FBR2IsR0FBR3lDLEdBQUdlLEdBQUdyRDtTQUNuQnFELElBQUlzVixHQUFHdFYsR0FBRzNDLEdBQUdiLEdBQUd5QyxHQUFHdEM7U0FDbkJzQyxJQUFJcVcsR0FBR3JXLEdBQUdlLEdBQUczQyxHQUFHYixHQUFHRztTQUNuQkgsSUFBSThZLEdBQUc5WSxHQUFHeUMsR0FBR2UsR0FBRzNDLEdBQUdWO1NBQ25CVSxJQUFJaVksR0FBR2pZLEdBQUdiLEdBQUd5QyxHQUFHZSxHQUFHckQ7U0FFbkJxRCxJQUFJdVYsR0FBR3ZWLEdBQUczQyxHQUFHYixHQUFHeUMsR0FBR3RDO1NBQ25Cc0MsSUFBSXNXLEdBQUd0VyxHQUFHZSxHQUFHM0MsR0FBR2IsR0FBR0c7U0FDbkJILElBQUkrWSxHQUFHL1ksR0FBR3lDLEdBQUdlLEdBQUczQyxHQUFHVjtTQUNuQlUsSUFBSWtZLEdBQUdsWSxHQUFHYixHQUFHeUMsR0FBR2UsR0FBR3JEO1NBQ25CcUQsSUFBSXVWLEdBQUd2VixHQUFHM0MsR0FBR2IsR0FBR3lDLEdBQUd0QztTQUNuQnNDLElBQUlzVyxHQUFHdFcsR0FBR2UsR0FBRzNDLEdBQUdiLEdBQUdHO1NBQ25CSCxJQUFJK1ksR0FBRy9ZLEdBQUd5QyxHQUFHZSxHQUFHM0MsR0FBR1Y7U0FDbkJVLElBQUlrWSxHQUFHbFksR0FBR2IsR0FBR3lDLEdBQUdlLEdBQUdyRDtTQUNuQnFELElBQUl1VixHQUFHdlYsR0FBRzNDLEdBQUdiLEdBQUd5QyxHQUFHdEM7U0FDbkJzQyxJQUFJc1csR0FBR3RXLEdBQUdlLEdBQUczQyxHQUFHYixHQUFHRztTQUNuQkgsSUFBSStZLEdBQUcvWSxHQUFHeUMsR0FBR2UsR0FBRzNDLEdBQUdWO1NBQ25CVSxJQUFJa1ksR0FBR2xZLEdBQUdiLEdBQUd5QyxHQUFHZSxHQUFHckQ7U0FDbkJxRCxJQUFJdVYsR0FBR3ZWLEdBQUczQyxHQUFHYixHQUFHeUMsR0FBR3RDO1NBQ25Cc0MsSUFBSXNXLEdBQUd0VyxHQUFHZSxHQUFHM0MsR0FBR2IsR0FBR0c7U0FDbkJILElBQUkrWSxHQUFHL1ksR0FBR3lDLEdBQUdlLEdBQUczQyxHQUFHVjtTQUNuQlUsSUFBSWtZLEdBQUdsWSxHQUFHYixHQUFHeUMsR0FBR2UsR0FBR3JEO1NBRW5CcUQsSUFBSXdWLEdBQUd4VixHQUFHM0MsR0FBR2IsR0FBR3lDLEdBQUd0QztTQUNuQnNDLElBQUl1VyxHQUFHdlcsR0FBR2UsR0FBRzNDLEdBQUdiLEdBQUdHO1NBQ25CSCxJQUFJZ1osR0FBR2haLEdBQUd5QyxHQUFHZSxHQUFHM0MsR0FBR1Y7U0FDbkJVLElBQUltWSxHQUFHblksR0FBR2IsR0FBR3lDLEdBQUdlLEdBQUdyRDtTQUNuQnFELElBQUl3VixHQUFHeFYsR0FBRzNDLEdBQUdiLEdBQUd5QyxHQUFHdEM7U0FDbkJzQyxJQUFJdVcsR0FBR3ZXLEdBQUdlLEdBQUczQyxHQUFHYixHQUFHRztTQUNuQkgsSUFBSWdaLEdBQUdoWixHQUFHeUMsR0FBR2UsR0FBRzNDLEdBQUdWO1NBQ25CVSxJQUFJbVksR0FBR25ZLEdBQUdiLEdBQUd5QyxHQUFHZSxHQUFHckQ7U0FDbkJxRCxJQUFJd1YsR0FBR3hWLEdBQUczQyxHQUFHYixHQUFHeUMsR0FBR3RDO1NBQ25Cc0MsSUFBSXVXLEdBQUd2VyxHQUFHZSxHQUFHM0MsR0FBR2IsR0FBR0c7U0FDbkJILElBQUlnWixHQUFHaFosR0FBR3lDLEdBQUdlLEdBQUczQyxHQUFHVjtTQUNuQlUsSUFBSW1ZLEdBQUduWSxHQUFHYixHQUFHeUMsR0FBR2UsR0FBR3JEO1NBQ25CcUQsSUFBSXdWLEdBQUd4VixHQUFHM0MsR0FBR2IsR0FBR3lDLEdBQUd0QztTQUNuQnNDLElBQUl1VyxHQUFHdlcsR0FBR2UsR0FBRzNDLEdBQUdiLEdBQUdHO1NBQ25CSCxJQUFJZ1osR0FBR2haLEdBQUd5QyxHQUFHZSxHQUFHM0MsR0FBR1Y7U0FDbkJVLElBQUltWSxHQUFHblksR0FBR2IsR0FBR3lDLEdBQUdlLEdBQUdyRDtTQUVuQnFELElBQUl5VixHQUFHelYsR0FBRzNDLEdBQUdiLEdBQUd5QyxHQUFHdEM7U0FDbkJzQyxJQUFJd1csR0FBR3hXLEdBQUdlLEdBQUczQyxHQUFHYixHQUFHRztTQUNuQkgsSUFBSWlaLEdBQUdqWixHQUFHeUMsR0FBR2UsR0FBRzNDLEdBQUdWO1NBQ25CVSxJQUFJb1ksR0FBR3BZLEdBQUdiLEdBQUd5QyxHQUFHZSxHQUFHckQ7U0FDbkJxRCxJQUFJeVYsR0FBR3pWLEdBQUczQyxHQUFHYixHQUFHeUMsR0FBR3RDO1NBQ25Cc0MsSUFBSXdXLEdBQUd4VyxHQUFHZSxHQUFHM0MsR0FBR2IsR0FBR0c7U0FDbkJILElBQUlpWixHQUFHalosR0FBR3lDLEdBQUdlLEdBQUczQyxHQUFHVjtTQUNuQlUsSUFBSW9ZLEdBQUdwWSxHQUFHYixHQUFHeUMsR0FBR2UsR0FBR3JEO1NBQ25CcUQsSUFBSXlWLEdBQUd6VixHQUFHM0MsR0FBR2IsR0FBR3lDLEdBQUd0QztTQUNuQnNDLElBQUl3VyxHQUFHeFcsR0FBR2UsR0FBRzNDLEdBQUdiLEdBQUdHO1NBQ25CSCxJQUFJaVosR0FBR2paLEdBQUd5QyxHQUFHZSxHQUFHM0MsR0FBR1Y7U0FDbkJVLElBQUlvWSxHQUFHcFksR0FBR2IsR0FBR3lDLEdBQUdlLEdBQUdyRDtTQUNuQnFELElBQUl5VixHQUFHelYsR0FBRzNDLEdBQUdiLEdBQUd5QyxHQUFHdEM7U0FDbkJzQyxJQUFJd1csR0FBR3hXLEdBQUdlLEdBQUczQyxHQUFHYixHQUFHRztTQUNuQkgsSUFBSWlaLEdBQUdqWixHQUFHeUMsR0FBR2UsR0FBRzNDLEdBQUdWO1NBQ25CVSxJQUFJb1ksR0FBR3BZLEdBQUdiLEdBQUd5QyxHQUFHZSxHQUFHckQ7U0FFbkJzUyxPQUFPbUcsSUFBSXBWLEdBQUdpUDtTQUNkQSxPQUFPbUcsSUFBSS9YLEdBQUc0UjtTQUNkQSxPQUFPbUcsSUFBSTVZLEdBQUd5UztTQUNkQSxPQUFPbUcsSUFBSW5XLEdBQUdnUSxNQTFFVDtPQWZnQjs7R0F5R3pCLFNBQVN5RyxlQUFlQyxLQUFLQyxPQUFPQztJQUNsQyxJQUFJQyxTQUFTSCxnQkFDVEk7SUFDSkosV0FBV0U7SUFDWCxHQUFHQyxPQUFPO0tBQ0ksSUFBUkUsZUFBZUY7S0FDbkIsR0FBR0QsWUFBWUcsUUFBUztNQUN0QkwsV0FBV0Msa0JBQWlCQyxZQUFXQztNQUN2Qzs7S0FFRkgsV0FBV0Msa0JBQWlCSSxVQUFTRjtLQUNyQ1gsa0JBQWtCUSxPQUFPQTtLQUN6QkUsYUFBYUc7S0FDYkQsYUFBYUM7O0lBRWYsTUFBTUgsZ0JBQWdCO0tBQ3BCRixXQUFXQyxlQUFlRyxXQUFVQTtLQUNwQ1osa0JBQWtCUSxPQUFPQTtLQUN6QkU7S0FDQUU7O0lBRUYsR0FBR0Y7S0FDREYsV0FBV0MsZUFBZUcsV0FBVUEsWUFBWUY7R0FDcEQ7R1poSUEsU0FBU0ksOEJBQThCQyxRQUFRQyxXQUFXekcsS0FDeEQsU0FDRjtHUStGQSxTQUFTMEcsbUJBQ1AsT0FBT2hDLGtCQUNUO0d4QjRIQSxTQUFTaUMsb0JBQXFCaGQsR0FBSyxPQUFPQSxZQUFhO0dvQndKdkQsU0FBU2lkLGNBQWMvTyxJQUFJTSxJQUN6QixPQUFPTixPQUFPQSxVQUFVTSxLQUMxQjtHT3pZQSxTQUFTME8sc0JBQXNCcFYsSUFBSXNULE1BQU1wVCxJQUFJc1QsTUFBTXJZO0lBQ2pELElBQVcsSUFBRmIsT0FBT0EsSUFBSWEsS0FBS2IsSUFBSztLQUM1QixJQUFJdUUsSUFBSXNXLGNBQWNuVixJQUFHc1QsT0FBT2haLElBQzVCNEIsSUFBSWlaLGNBQWNqVixJQUFHc1QsT0FBT2xaO0tBQ2hDLEdBQUl1RSxJQUFJM0MsR0FBRztLQUNYLEdBQUkyQyxJQUFJM0MsR0FBRzs7SUFFYjtHQUNGO0cxQm16QkEsU0FBU21aLGdCQUFpQmhkLEdBQUssT0FBT3dDLHVCQUF1QnhDLEdBQUc7R085aUJoRSxTQUFTaWQsZUFBZXBkO0lBQ3RCO0tBQUlxZDtLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBL1o7S0FFQXZDO0lBQ0osR0FBSW5CLE9BQ0ZtQjtJQUVGbkIsSUFBSU8sU0FBU1A7SUFDYjtLQUFJNkQsaUJBQWlCSCxJQUFJMUQ7S0FDckJ3Qjs7O1lBQWNpYyxLQUFLNVosSUFBSTJaLE1BQU0zWixJQUFJMFosTUFBTTFaLElBQUl5WixNQUFNelosSUFBSXdaLE1BQU14WjtVQUFJdEQsWUFBVVAsSUFBSUE7SUFFakYsT0FBT21CLE9BQU9LO0dBQ2hCO0dZMkVBLFNBQVNrYyxvQkFBb0J4UCxJQUFJTTtJQUN2QixJQUFKQyxNQUFNUCxVQUFVTTtJQUNwQixHQUFHQyxXQUFXUCxnQkFBZ0JSO0lBQzlCO0tBQUlnQixLQUFLUixPQUFPTztLQUNaRSxLQUFLVCxPQUFPTztLQUNaRyxLQUFLVixPQUFPTztLQUNaSSxLQUFLWCxPQUFPTztJQUNoQixPQUFVQyxVQUNBQyxVQUNBQyxXQUNBQztHQUNaO0dmbldBLFNBQVM4Tyw0QkFBOEIsU0FBVTtHd0IrUmpELFNBQVNDLG9CQUFvQjdQLE1BQzNCLFNBQ0Y7R0w5UkEsU0FBUzhQLGVBQWdCcGQsS0FBSzRTO0lBQ3RCLElBQUZ6SSxRQUFRbEIsTUFBTTJKO0lBQ2xCekksT0FBS25LO0lBQ0wsSUFBVyxJQUFGMkIsT0FBT0EsS0FBS2lSLE1BQU1qUixLQUFLd0ksRUFBRXhJO0lBQ2xDLE9BQU93STtHQUNUO0dUa0dBLFNBQVNrVDtJQUNELElBQUYzZCxJQUFJZ007SUFDUmhNLGlCQUFpQkE7SUFDakJBLGtCQUFrQkE7SUFFbEI7R0FDRjtHWTFKQSxTQUFTNGQsMEJBQTBCQyxJQUNqQyxPQUFPQSxlQUNUO0d2QitUQSxTQUFTQyxzQ0FBc0NDLE9BQzdDLFNBQ0Y7R1U4REEsU0FBU0MsZUFBZXhTLE1BQU1DLE1BQU1FLE1BQU1DLE1BQ3hDSixVQUFVQyxTQUFTRSxVQUFVQyxPQUM3QjtHQUNGO0dVM09BLFNBQVNxUyxvQkFBb0JqYSxHQUFFL0M7SUFDN0IrSjtHQUNGO0dMbkdBLFNBQVNrVCxxQkFBd0IsU0FBVTtHRjJiZCxJQUF6QkM7R1g3U0osU0FBU0MsaUJBQWlCNVg7SUFDeEIsSUFBSTFELE1BQU0wRCxVQUNOM0MsUUFBUTBGLE1BQU16RztJQUNsQmU7SUFDQSxJQUFTLElBQUQ1QixPQUFJQSxJQUFFYSxLQUFJYixLQUFLNEIsRUFBRTVCLFNBQU91RSxFQUFFdkU7SUFDbEMsT0FBTzRCO0dBQ1Q7R0Y0SUEsU0FBU3dhLHlCQUF5Qm5aO0lBQ3ZCLElBQUxKLE9BQU9xRyxrQkFBa0JqRztJQUM3QixPQUFPSixtQkFBbUJBO0dBQzVCO0dXNUpBLFNBQVN3WixhQUFhemUsR0FBRXdCO0lBQ3RCO0tBQUlyQixJQUFJZ007S0FDSkUsS0FBR2xNO0tBQ0h5RixJQUFJeUc7S0FDSnFTLFFBQVF2ZTtJQUNaeUYsT0FBUThZO0lBQ1I5WSxPQUFROFksbUJBQ1I5WSxPQUFROFk7SUFDUjlZO0lBQ0F6RixNQUFJSDtJQUNKRyxNQUFJcUI7SUFDSnJCLHVCQUF1QmtNLElBQUdyTSxHQUFFRyxXQUFXcUI7SUFDdkM7R0FDRjtHZDRKQSxTQUFTbWQsaUJBQWlCeGUsR0FBRWlDLEdBQUV3YztJQUM1QixHQUFJeGMsV0FBV2pDLFNBQVM0SjtJQUNsQixJQUFGcEQsSUFBSXVJLG9CQUFvQjBQO0lBQzVCLElBQVUsSUFBRnhhLE9BQU9BLE9BQU9BLEtBQ3BCNEYsc0JBQXVCN0osR0FBR2lDLFFBQVFnQyxHQUFHdUMsRUFBRXZDO0lBRXpDO0dBQ0Y7R0FsREEsU0FBU3lhLGtCQUFrQjFlLEdBQUVpQyxHQUFFMGMsS0FDN0IzVCxtQ0FDRjtHcUIzTUEsU0FBUzRULGlCQUFpQi9lO0lBQ2xCLElBQUZ3QixJQUFJME4sb0JBQW9CbFA7SUFDNUIsT0FBT3NPO2NBQXFCOU0sTUFBTUEsTUFBTUEsTUFBTUEsTUFBTUEsTUFBTUEsTUFBTUEsTUFBTUE7R0FDeEU7R0h2SEEsU0FBU3dkLGNBQWNqUjtJQUVyQixVQUFVOUwsNkJBQTZCQTtJQUN2QztHQUNGO0dXTUEsU0FBU2dkLGVBQWU5ZTtJQUN0QkEsSUFBSTJCLHVCQUF1QjNCO0lBQzNCLElBQUlFLElBQUlGLGNBQ0p3RyxRQUFRK0MsTUFBTXJKO0lBQ2xCLElBQVcsSUFBRitCLE9BQU9BLElBQUkvQixHQUFHK0I7S0FDckJ1RSxFQUFFdkUsTUFBTWpDLGlCQUFpQmlDLEtBQU1qQyxpQkFBaUJpQztJQUNsRCxPQUFPdUU7R0FDVDtHQUlBLFNBQVN1WSxnQkFBZ0JDLEtBQUtDLGFBQWFDO0lBQ3pDO0tBQUlDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0lBRUosS0FBS2QsZ0JBQWlCO0tBQ3BCQSxlQUFrQkYsZUFBZ0JFLElBQUlVO0tBQ3RDVixrQkFBa0JGLGVBQWdCRSxJQUFJVztLQUN0Q1gsZ0JBQWtCRixlQUFnQkUsSUFBSWM7S0FDdENkLGdCQUFrQkYsZUFBZ0JFLElBQUlhO0tBQ3RDYixrQkFBa0JGLGVBQWdCRSxJQUFJWTs7SUFHeEM7S0FBSTVjO0tBQUcrYyxRQUFRZDtLQUVYOWIsU0FBU29FLDBCQUEwQjJYLE9BQU9DO0lBRTlDLEdBQUlZLFdBQVk7S0FFZGIsT0FBT0ssZ0JBQWdCTCxPQUFPRyxpQkFBaUJILE9BQU9JO0tBQ3RESixPQUFPTTs7O0tBR1BPLFVBQVNBO0lBRVgsT0FBUTtLQUVHLElBQUxDLE9BQU9oQixhQUFhZTtLQUN4QixHQUFJQyxVQUFVLFNBQVFBO0tBRVYsSUFBUkMsVUFBVWpCLGdCQUFnQmU7S0FDOUIsR0FBSUUsYUFBYztNQUNoQmYsT0FBT0ssZ0JBQWdCTCxPQUFPSTtNQUM5QkosT0FBT00sbUJBQW1CUzs7S0FHNUIsR0FBSWYsT0FBT0ksaUJBQWlCSixPQUFPRTtNQUFnQixHQUM3Q0YsT0FBT08sdUJBQ1QsU0FBUU0sZ0JBRVIvYztTQUNDLENBRUhBLElBQUlHLE9BQU8rYixPQUFPSSxnQkFDbEJKLE9BQU9JO0tBR1QsR0FBSU4sY0FBY2dCLE9BQU9oZCxNQUFNK2M7TUFDN0JBLFFBQVFmLGNBQWNnQixPQUFPaGQ7O01BRTdCK2MsUUFBUWYsZ0JBQWdCZTtLQUUxQixHQUFJQSxVQUFXO01BQ2JiLE9BQU9JLGdCQUFnQkosT0FBT0s7TUFDOUIsR0FBSUwsT0FBT007T0FDVHhVOztPQUVBLE9BQU9rVSxPQUFPTTs7YUFLWnhjLFVBQVVrYyxPQUFPTzs7R0FHM0I7R25CbUdBLFNBQVNTLHFCQUFzQmhiO0lBQ3BCLElBQUxKLE9BQU9xRyxrQkFBa0JqRztJQUM3QixPQUFPSixtQkFBbUJBO0dBQzVCO0dONUlBLFNBQVNxYjtJQUNQblY7R0FDRjtHMEJoREEsU0FBU29WLGVBQWdCNVosR0FBR3ZFLEdBQUdhO0lBQ3RCLElBQUhxYSxTQUFTNVQsTUFBTXpHO0lBQ25CcWE7SUFDQSxRQUFRclYsUUFBUUYsS0FBSTNGLE9BQUs2RixNQUFNaEYsS0FBS2dGLE1BQUtGLE1BQ3ZDdVYsR0FBR3JWLE1BQUl0QixFQUFFb0I7SUFFWCxPQUFPdVY7R0FDVDtHOUJzZkEsU0FBU2tELGlCQUFpQjFZLElBQUlFO0lBQzVCLEdBQUdGLE9BQU9FLElBQUk7SUFDYkYsWUFBYWxCLDZCQUE2QmtCO0lBQzFDRSxZQUFhcEIsNkJBQTZCb0I7SUFDM0MsT0FBUUYsUUFBUUU7R0FDbEI7R2MvV0EsU0FBU3lZLGlCQUNELElBQUZ0Z0IsSUFBSWdNLHFCQUNSLE9BQU9oTSxRQUNUO0dWcklBLFNBQVN1Z0IsNEJBQStCLFNBQVU7RzJCTmxELFNBQVNDLHNCQUFzQkMsS0FBS3hlO0lBQzFCLElBQUpnRyxNQUFNd1k7SUFDVkEsVUFBVXhlO0lBQ1YsT0FBT2dHO0dBQ1Q7RzVCa1BZO0lBQVJ5WTtNQUFXNWUsc0JBQ0FBO1VBQ0FBOzs7R0FYZixTQUFTNmUsK0JBQWtDLE9BQU9EO0dBQTZCO0dJVS9FLFNBQVNFLGdCQUFpQi9nQixHQUFLLE9BQU9PLFVBQVVQLEdBQUk7R3lCcFJwRCxTQUFTZ2hCLFVBQ1BoZ0Isb0JBQ0Y7R0FJQSxTQUFTaWdCLGtCQUFrQmxULE1BQ3pCLFdBQVdpVCxVQUNiO0dDWXlCLElBQXJCRTtHQTZGSixTQUFTQyxvQkFBb0JuaEIsR0FBR29DO0lBQ3JCLElBQUxnZixPQUFPcGhCLEVBQUVraEIsdUJBQXVCOWU7SUFDcEMsR0FBR0gsc0JBQXNCbWYsZ0JBQWdCbmY7S0FBb0JtZixPQUFPQTtJQUNwRSxPQUFHQSxTQUFPbGY7R0FJWjtHWHpCQSxTQUFTbWYsb0JBQW9CbmdCO0lBQzNCQSxLQUFLQTtJQUNMQSxJQUFJZ1AsU0FBVWhQO0lBQ2RBLEtBQUtBO0lBQ0xBLElBQUlnUCxTQUFVaFA7SUFDZEEsS0FBS0E7SUFDTCxPQUFPQTtHQUNUO0dSOFJBLFNBQVNvZ0Isa0JBQWtCQztJQUN6QjtLQUFJcGhCLElBQUlnTTtLQUNKeUosSUFBSXpWLHNCQUFzQm1FLHdCQUF3QmlkO0lBQ3RELFdBQVUzTCxHQUFFelY7R0FDZDtHZXpSQSxTQUFTcWhCLGlCQUFpQnJoQixHQUFHaUMsR0FBR3FmLEtBQUtDO0lBQ25DLE9BQVM7S0FDQyxJQUFKdEksTUFBTWpaLGFBQWFpQztLQUFJQTtLQUMzQixHQUFJZ1gsYUFBYTtLQUNULElBQUpELE1BQU1oWixhQUFhaUM7S0FBSUE7S0FDM0IsR0FBSStXO01BQ0ZzSSxJQUFLckksV0FBV3NJOztNQUVoQkQsSUFBS3JJLFdBQVdxSSxJQUFLdEk7O0dBRTNCO0dBRUEsU0FBU3dJLGlCQUFpQnhoQixHQUFHaUMsR0FBR3FmO0lBQzlCLE9BQVM7S0FDQyxJQUFKckksTUFBTWpaLGFBQWFpQztLQUFJQTtLQUMzQixHQUFJZ1gsYUFBYTtLQUNULElBQUpELE1BQU1oWixhQUFhaUM7S0FBSUE7S0FDM0IsR0FBSStXLGFBQ0ZzSSxJQUFLckkscUJBRUxxSSxJQUFLckksV0FBV3FJLElBQUt0STs7R0FFM0I7R0FFQSxTQUFTeUksb0JBQW9CekMsS0FBS0MsYUFBYUM7SUFDN0M7S0FBSUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQWlDO0tBQ0FoQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBNkI7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7SUFFSixLQUFLaEQsZ0JBQWlCO0tBQ3BCQSxlQUFrQkYsZUFBZ0JFLElBQUlVO0tBQ3RDVixrQkFBa0JGLGVBQWdCRSxJQUFJVztLQUN0Q1gsZ0JBQWtCRixlQUFnQkUsSUFBSWM7S0FDdENkLGdCQUFrQkYsZUFBZ0JFLElBQUlhO0tBQ3RDYixrQkFBa0JGLGVBQWdCRSxJQUFJWTs7SUFFeEMsS0FBS1oscUJBQXNCO0tBQ3pCQSxvQkFBdUJGLGVBQWdCRSxJQUFJMkM7S0FDM0MzQyx1QkFBdUJGLGVBQWdCRSxJQUFJNEM7S0FDM0M1QyxxQkFBdUJGLGVBQWdCRSxJQUFJK0M7S0FDM0MvQyxxQkFBdUJGLGVBQWdCRSxJQUFJOEM7S0FDM0M5Qyx1QkFBdUJGLGVBQWdCRSxJQUFJNkM7O0lBRTdDLEdBQUk3QyxnQkFBZ0IvWTtLQUFNK1ksZUFBZXJkLHVCQUF1QnFkLElBQUlnRDtJQUVwRTtLQUFJaGY7S0FBRytjLFFBQVFkO0tBRVg5YixTQUFTb0UsMEJBQTBCMlgsT0FBT0M7SUFFOUMsR0FBSVksV0FBWTtLQUVkYixPQUFPSyxnQkFBZ0JMLE9BQU9HLGlCQUFpQkgsT0FBT0k7S0FDdERKLE9BQU9NOzs7S0FHUE8sVUFBU0E7SUFFWCxPQUFRO0tBRUcsSUFBTEMsT0FBT2hCLGFBQWFlO0tBQ3hCLEdBQUlDLFNBQVU7TUFDRCxJQUFQaUMsU0FBU2pELGtCQUFrQmU7TUFDL0J5QixpQkFBaUJ4QyxjQUFjaUQsUUFBUS9DLE9BQU93QztNQUM5QyxTQUFRMUI7O0tBR0UsSUFBUkMsVUFBVWpCLGdCQUFnQmU7S0FDOUIsR0FBSUUsYUFBYztNQUNMLElBQVBnQyxTQUFTakQscUJBQXFCZTtNQUNsQ3lCLGlCQUFpQnhDLGNBQWNpRCxRQUFRL0MsT0FBT3dDO01BQzlDeEMsT0FBT0ssZ0JBQWdCTCxPQUFPSTtNQUM5QkosT0FBT00sbUJBQW1CUzs7S0FHNUIsR0FBSWYsT0FBT0ksaUJBQWlCSixPQUFPRTtNQUFnQixHQUM3Q0YsT0FBT08sdUJBQ1QsU0FBUU0sZ0JBRVIvYztTQUNDLENBRUhBLElBQUlHLE9BQU8rYixPQUFPSSxnQkFDbEJKLE9BQU9JO0tBR0UsSUFBUDRDLFNBQVNuQztLQUNiLEdBQUlmLGNBQWNnQixPQUFPaGQsTUFBTStjO01BQzdCQSxRQUFRZixjQUFjZ0IsT0FBT2hkOztNQUU3QitjLFFBQVFmLGdCQUFnQmU7S0FFMUIsR0FBSUEsVUFBVztNQUNiYixPQUFPSSxnQkFBZ0JKLE9BQU9LO01BQzlCLEdBQUlMLE9BQU9NO09BQ1R4VTs7T0FFQSxPQUFPa1UsT0FBT007O1NBQ2I7TUFFSCxJQUFJMkMsWUFBWW5ELGtCQUFrQmtELFNBQVNEO01BQzNDLEdBQUlqRCxtQkFBbUJtRCxZQUFZbmYsTUFBTWtmO09BQ3ZDRCxTQUFTakQsbUJBQW1CbUQsWUFBWW5mOztPQUV4Q2lmLFNBQVNqRCxxQkFBcUJrRDtNQUNoQyxHQUFJRDtPQUNGWjtTQUNEckMsY0FBY2lELFFBQVEvQyxPQUFPd0MsVUFBVXhDLE9BQU9JO01BSS9DLEdBQUl0YyxVQUFVa2MsT0FBT087OztHQUczQjtHVm9PQSxTQUFTMkMsb0JBQW9CclUsSUFBSU0sSUFBSXJLO0lBQzNCLElBQUpzSyxNQUFNUCxVQUFVTTtJQUNwQixHQUFHQyxXQUFXUCxnQkFBZ0JSO0lBQ3hCLElBQUZ2SixJQUFJK0ssb0JBQW9CL0s7SUFDNUIsSUFBVSxJQUFGL0IsT0FBT0EsT0FBT0EsS0FBSzhMLE9BQU9PLE1BQUlyTSxHQUFHK0IsTUFBSS9CO0lBQzdDO0dBQ0Y7R2hCaFNBLFNBQVNvZ0IseUJBQXlCN2IsR0FDaEMsT0FBT3dULHFCQUNUO0dxQm1FQSxTQUFTc0ksZUFBZ0J6aUIsR0FBR3dCO0lBQUssVUFBU3FWLGlCQUFpQjdXLEdBQUV3QjtHQUFnQjtHakJ1QjdFLFNBQVNraEIsaUJBQWtCMWlCLEdBQUssT0FBT08sV0FBV1AsR0FBSTtHb0J6SXRELFNBQVMyaUI7SUFDUDtLQUFJcmYsYUFBYXNmO0tBQ2JDLFVBQVVDLFlBQVl4ZjtLQUN0QjJMLFNBQVM3SCxXQUFXOUQ7SUFDeEI7O2dCQUNjd2Y7aUJBQ0ZEO2dCQUNENVQ7R0FDYjtHVnFUQSxTQUFTOFQsY0FBZW5WO0lBQ2IsSUFBTE4sT0FBT0YsaUJBQWlCUTtJQUM1QixLQUFLTixhQUFhL0Y7SUFDbEIsS0FBSStGLGVBQWVBLHVCQUF1QjtJQUMxQyxHQUFHQTtLQUNEQSxZQUFZNUcseUJBQXlCNEcsZ0JBQWdCQTs7S0FFckRBLGdCQUFnQkEsYUFBYUEsZ0JBQWdCQTtJQUUvQ0EsZUFBZUE7SUFDZkE7SUFDQTtHQUNGO0dBMkZBLFNBQVMwVixjQUFjcFYsUUFBUXRGO0lBQzdCeWEsY0FBY25WO0lBQ0wsSUFBTE4sT0FBT0YsaUJBQWlCUTtJQUM1Qk4sY0FBY2hGO0lBQ2Q7R0FDRjtHQVNBLFNBQVMyYSxvQkFBb0JyVixRQUFPdEY7SUFDMUIsSUFBSkEsTUFBTTBVLG9CQUFvQjFVO0lBQzlCLE9BQU8wYSxjQUFjcFYsUUFBUXRGO0dBQy9CO0dKM01BLFNBQVM0YSxpQkFBaUJ2WCxNQUFLRztJQUM3QixPQUFPaU4sWUFBWXBOLFNBQU9BLGtCQUFpQkcsU0FBT0E7R0FDcEQ7R0t2VkEsU0FBU3FYLFlBQVkzSSxVQUNuQixTQUNGO0diVkEsU0FBUzRJLFlBQVl4WSxHQUFFMUgsR0FBSyxPQUFPMEgsRUFBRTFILEdBQUk7R01zQ3pDLFNBQVNtZ0IsaUJBQWlCQztJQUN4QixHQUFHL2Usb0JBQXFCO0tBQ2QsSUFBSmdmLE1BQU1uWjtLQUNWLE9BQU9tWixXQUFXRDs7O0tBQ2I7R0FHVDtHTWtpQkEsU0FBU0UscUJBQXFCNVYsUUFBT3pKO0lBQ25DaUosaUJBQWlCUSxtQkFBbUJ6SjtJQUNwQyxLQUFJQSxHQUFHNGUsY0FBY25WO0lBQ3JCO0dBQ0Y7R0MxbEJBLFNBQVM2VixxQkFBc0IsU0FBUTtHZXNFdkMsU0FBU0Msa0JBQWtCMWpCLEdBQUdvQztJQUM1QixHQUFHQSxTQUFTOGUsdUJBQXVCOWUsS0FBS3BDO0tBQ3RDOEM7SUFDTyxJQUFMc2UsT0FBT3BoQixFQUFFa2hCLHVCQUF1QjllO0lBQ3BDLEdBQUdILHNCQUFzQm1mLGdCQUFnQm5mO0tBQW9CbWYsT0FBT0E7SUFDcEUsT0FBUUEsU0FBT2xmLG9CQUFpQmtmO0dBQ2xDO0d0QnJFQSxTQUFTdUMsb0JBQXFCOWY7SUFDNUI7S0FBSStCLFFBQVFnZSxLQUFNL2Y7S0FDZGdnQixRQUFRamU7S0FDUmtlLGVBQWUsSUFBS0YsS0FBS2hlO0tBQ3pCbWUsTUFBTXhqQixZQUFZc2pCLFFBQVFDO0tBQzFCRSxVQUFVSixLQUFLaGU7S0FDZnFlLFVBQVVMLEtBQUtoZTtLQUNmc2U7T0FBb0IzakIsU0FBU3lqQix5QkFBeUJDO0lBQzFEO1lBQWdCcmU7WUFBZ0JBO1lBQWdCQTtZQUNuQ0E7WUFBYUE7WUFBY0E7WUFDM0JBO1lBQVltZTtZQUNYbmUsd0JBQXdCc2U7R0FDeEM7R0FLQSxTQUFTQyxpQkFBaUJDO0lBQ3hCO0tBQUl4ZSxJQUFJLElBQUtnZSxLQUFLUSxjQUFXQSxPQUFNQSxPQUFNQSxPQUFNQSxPQUFNQTtLQUNqRHZnQixJQUFJdEQsV0FBV3FGO0tBQ2Z5ZSxNQUFNVixvQkFBb0I5ZjtJQUM5QixXQUFlQSxHQUFFd2dCO0dBQ25CO0dlcUNBLFNBQVNDLGdDQUFnQ25KLE1BQU1DLE1BQU1DLEtBQUtDLE1BQU1yWTtJQUM5RCxTQUFTb1k7S0FDUHZZO0lBQ0YsR0FBR0csVUFBVTtJQUNKLElBQUw4SSxPQUFPc1AsV0FBV0M7SUFDdEIsR0FBR0YsT0FBT25ZLE1BQU0yRSxxQkFBcUJ1VCxPQUNuQ3pOO0lBRUYsR0FBRzNCLE9BQU85SSxNQUFNb1ksaUJBQ2QzTjtJQUVRLElBQU42TixRQUFRN1QsMEJBQTBCeVQsWUFBWUMsTUFBS0EsT0FBT25ZO0lBQzlEb1ksYUFBYUUsT0FBTXhQO0lBQ25CO0dBQ0Y7R1QvRWlCLElBQWJ3WSxtQkFBbUI3YTtHQUl2QixTQUFTOGEsZUFBZXJhO0lBQ2IsSUFBTHZCLE9BQU8yYixhQUFhcGE7SUFDeEIsR0FBR3ZCLE1BQU1BO0lBQ1QsT0FBTzJiLGFBQWFwYTtJQUNwQjtHQUNGO0dBMktBLFNBQVNzYSxzQkFBdUI3VztJQUNyQixJQUFMTixPQUFPRixpQkFBaUJRO0lBQzVCTjtJQUNBa1gsZUFBZWxYO0lBQ2Y7R0FDRjtHY3pLQSxTQUFTb1gscUJBQXFCOUQsS0FBS3pjO0lBQzNCLElBQUYvRCxJQUFJd2dCO0lBQ1JBLFNBQVN6YztJQUNULE9BQU8vRDtHQUNUO0c1QnVQQSxTQUFTdWtCLGdCQUFnQkMsT0FDdkIsU0FDRjtHVXhLQSxTQUFTQyxjQUFjeFUsS0FBSzVCO0lBQzFCLEdBQUc0QixTQUFTNUIsV0FBVztJQUN2QjtHQUNGO0dGaUJBLFNBQVNxVyxnQkFBZ0J6ZjtJQUNkLElBQUxKLE9BQU9xRyxrQkFBa0JqRztJQUM3QixLQUFLSixtQkFDSGtHO0lBRUYsT0FBT2xHLGtCQUFrQkE7R0FDM0I7R0FLQSxTQUFTOGYsbUJBQW1CMWY7SUFDcEIsSUFBRmpGLElBQUkwa0IsZ0JBQWdCemY7SUFDeEJqRixPQUFPc0Isb0JBQW9CdEI7SUFDM0IsT0FBT0E7R0FDVDtHTnBJQSxTQUFTNGtCLFlBQVlwYSxHQUFFMUgsR0FBRWlCLEdBQUt5RyxFQUFFMUgsS0FBR2lCLEdBQUUsU0FBUTtHeUJ3RDdDLFNBQVM4Z0IsZUFBZ0JDLE9BQU9DO0lBQzlCLEdBQUtBLGFBQWVBLFNBQVNELGtCQUFtQnhYO0lBQ2hELE9BQU93WCxNQUFNQztHQUNmO0d0QmdFQSxTQUFTQyw0QkFBNEJDO0lBQzFCLElBQUx2TyxRQUFNdU87SUFDVkE7SUFDQSxPQUFPdk87R0FDVDtHR3FCQSxTQUFTd08sZ0JBQWdCamdCO0lBQ2QsSUFBTEosT0FBT3FHLGtCQUFrQmpHO0lBQzdCLEtBQUtKLG1CQUNIa0c7SUFFRixPQUFPbEcsa0JBQWtCQTtHQUMzQjtHSjRGQSxTQUFTc2dCLGdCQUFnQnZsQixHQUFLLE9BQU9PLFVBQVVQLEdBQUk7R1d6TG5ELFNBQVN3bEIsNEJBQTRCelgsTUFBUSxTQUFVO0dmOFB2RCxTQUFTMFg7SUFDUHRhO0dBQ0Y7R0pwSEEsU0FBU3VhLGVBQWdCMWxCLEdBQUd3QixHQUFLLE9BQU94QixNQUFNd0IsR0FBRztHa0I0SmpELFNBQVNta0IsYUFBYS9YLFFBQVF0RjtJQUNuQixJQUFMZ0YsT0FBT0YsaUJBQWlCUTtJQUM1QixHQUFJTixlQUFlbEgsTUFBTW1CO0lBQ3pCO01BQUdlLE9BQU9nRixjQUFjQSxtQkFDbEJoRixPQUFPZ0Y7U0FDUEE7S0FDSkEsbUJBQW1CQSxtQkFBbUJBLGNBQWNoRjtRQUMvQyxDQUNMZ0YsY0FBY2hGLEtBQ2RnRixzQkFDQUE7SUFFRjtHQUNGO0dBVUEsU0FBU3NZLG1CQUFtQmhZLFFBQU90RjtJQUN6QixJQUFKQSxNQUFNMFUsb0JBQW9CMVU7SUFDOUIsT0FBT3FkLGFBQWEvWCxRQUFRdEY7R0FDOUI7R2N0Vm1CLElBQWZ1ZDtHQ3BDSixTQUFTQyxxQkFBcUJqaUIsR0FDNUJBLGtCQUNBLFNBQ0Y7R0QwRDJCLElBQXZCa2lCO0dBQ0osU0FBU0Msa0JBQWtCOWlCLEdBQUUraUI7SUFDekIsSUFBSUMsS0FBS0gsMEJBQ0wzZCxNQUFNeWQ7SUFDVkEsaUJBQWlCSztJQUNULElBQUpuZCxNQUFNOEgsY0FBYzNOO0lBQ3hCMmlCLGlCQUFpQnpkO0lBQ2pCMGQscUJBQXFCRztJQUNyQixPQUFPQztHQUNYO0dwQjhEQSxTQUFTQyxnQkFBZ0I5Z0IsTUFBTStnQjtJQUNwQixJQUFMbmhCLE9BQU9xRyxrQkFBa0JqRztJQUM3QixLQUFLSixtQkFDSGtHO0lBRUYsT0FBT2xHLGtCQUFrQkEsV0FBV21oQjtHQUN0QztHWmdGQSxTQUFTQyxzQkFBdUJybUIsR0FBR0csR0FBSyxPQUFPSCxhQUFhRyxHQUFHO0d5QkQvRCxTQUFTbW1CLGNBQWV0bUIsR0FBR3dCO0lBQUssVUFBU3FWLGlCQUFpQjdXLEdBQUV3QjtHQUFnQjtHckJLNUUsU0FBUytrQiwwQkFBNkIsVUFBVztHRW9EakQsU0FBU0Msc0JBQXNCdGpCO0lBQzdCO0tBQ1UsSUFBSkQsTUFBTTJOO0tBQ1YsR0FBRzNOLFFBQVE7TUFDQSxJQUFMb0QsV0FBV3FELE1BQU16RztNQUNyQixJQUFXLElBQUZiLE9BQU9BLElBQUlhLEtBQUtiLEtBQUtpRSxLQUFLakUsS0FBS3dPLFVBQVV4Tzs7O01BRWxEaUUsUUFBUW5FO0tBRUYsSUFBSjZHLE1BQU04SCxjQUFjM04sR0FBR21EO0tBQzNCLE9BQVEwQyxlQUFlMGQsV0FBVUQsc0JBQXNCemQsT0FBS0EsSUFUdkQ7R0FXVDtHQWtDQSxTQUFTMmQsMkJBQTJCeGpCO0lBQ2xDO0tBQ0UsSUFBSUQsTUFBTTJOLGtCQUNOdkssV0FBV3FELE1BQU16RztLQUNyQm9ELFVBQVVyRjtLQUNWLElBQVcsSUFBRm9CLE9BQU9BLElBQUlhLEtBQUtiLEtBQUtpRSxLQUFLakUsU0FBT3dPLFVBQVV4TztLQUM1QyxJQUFKMkcsTUFBTThILGNBQWMzTixHQUFFbUQ7S0FDMUIsT0FBUTBDLGVBQWUwZCxXQUFVRCxzQkFBc0J6ZCxPQUFLQSxJQU52RDtHQVFUO0dBclBBLFNBQVM0ZCxhQUNQLFNBQ0Y7R2tCb0VFLFNBQVNDLDRCQUE0QmhjO0lBQ3JDcUcsb0JBQW9Cckc7SUFDcEI7R0FDRjtHSm9LQSxTQUFTaWMsWUFBWTNZLElBQUk5TDtJQUN2QixHQUFJQSxTQUFTQSxLQUFLOEwsZ0JBQ2hCcEw7SUFDRixPQUFPb0wsUUFBUTlMO0dBQ2pCO0dBSUEsU0FBUzBrQixjQUFjNVksSUFDckIsT0FBTzJZLFlBQVkzWSxPQUNyQjtHZGhHQSxTQUFTNlksa0JBQWtCbmMsR0FBRzFILEdBQUdtRDtJQUMvQixPQUFPdUUsRUFBRXRHLHdCQUF3QnBCLFVBQVUwSCxHQUFHK1AsbUJBQW1CdFU7R0FDbkU7RzRCblAwQixJQUF0QjJnQjtHQWdESixTQUFTQyxpQkFBa0IvbUI7SUFDekIsR0FBSUEsT0FBTzRDO0lBQ0wsSUFBRjlDO0lBQ0pBLFdBQVdraEIsdUJBQXVCaGhCO0lBQ2xDLE9BQU9GO0dBQ1Q7R0FaQSxTQUFTa25CLGlCQUFrQmhuQixHQUNuQixJQUFGRixJQUFJaW5CLGlCQUFpQi9tQixJQUN6QixPQUFPRixFQUNUO0dqQ294QkEsU0FBU21uQix1QkFBdUJobkIsR0FBSyxPQUFPd0MsdUJBQXVCeEMsR0FBRztHS2x6QnRFLFNBQVNpbkIsZ0JBQWdCcmU7SUFDakIsSUFBRjVGO0lBQ0osTUFBTTRGLE9BQU9BLGNBQWM7S0FDekJBLE1BQU1BLG9CQUFvQjNDLE1BQU0yQztLQUNoQzVGOztJQUVGLE9BQU80RjtHQUNUO0dIaUpBLFNBQVNzZSx1QkFBdUJ0WixNQUFRLFNBQVM7R0ZoQmpELFNBQVN1WixzQkFBdUJubkIsR0FBR2lDO0lBQ2pDLE9BQVFqQztlQUVOLEdBQUlpQyxLQUFLakMsWUFBWTs7T0FFckIsT0FBT0EsZUFBZWlDOztPQUV0QixPQUFPakMsSUFBSWlDOztHQUVmO0dBaUdBLFNBQVNtbEIsaUJBQWlCcG5CLEdBQUVpQztJQUMxQixHQUFJQSxXQUFXakMsU0FBUzRKO0lBQ2xCLElBQUZwRCxRQUFRK0M7SUFDWixJQUFVLElBQUZ0RixPQUFPQSxPQUFPQSxLQUNwQnVDLE1BQU12QyxLQUFLa2pCLHNCQUF1Qm5uQixHQUFHaUMsSUFBSWdDO0lBRTNDLE9BQU9rSyxvQkFBb0IzSDtHQUM3QjtHZTlSNEIsSUFBeEI2Z0I7R0FJSixTQUFTQztJQUFrQ0MsWUFBWUMsV0FBV0M7SUFDaEVKO0lBQ0EsV0FBV0EseUJBQXlCRSxZQUFZRSxZQUFZRDtHQUM5RDtHSnFPQSxTQUFTRSxzQkFBc0I5WixNQUM3QixPQUFPeEosNEJBQ1Q7R3NCbk5BLFNBQVN1akIsa0JBQWtCOW5CLEdBQUdvQyxHQUFHK0I7SUFDL0IsR0FBRy9CLFNBQVM4ZSx1QkFBdUI5ZSxLQUFLcEM7S0FDdEM4QztJQUNGLEdBQUlxQixhQUFhNGpCLFVBQVU5bEIsbUJBQW9CO0tBQzdDLEdBQUdqQyxlQUFlQSxjQUFjbUUsR0FBR2pDLFdBQVdpQztLQUM5Q25FLEVBQUVraEIsdUJBQXVCOWUsU0FBU0gsbUJBQW1Ca0M7OztLQUVsRG5FLEVBQUVraEIsdUJBQXVCOWUsS0FBSytCO0lBQ25DO0dBQ0Y7R0FJQSxTQUFTNmpCLG9CQUFvQmhvQixHQUFHb0M7SUFDOUIsR0FBR0EsU0FBUzhlLHVCQUF1QjllLEtBQUtwQztLQUN0QzhDO0lBQ0Y7TUFBR2I7U0FBc0JqQyxFQUFFa2hCLHVCQUF1QjllLGNBQWNIO1NBQXNCakMsZ0JBQWlCO0tBQzdGLElBQUpvSSxNQUFNcEksRUFBRWtoQix1QkFBdUI5ZTtLQUNuQyxHQUFHZ0csUUFBUWxHLFVBQVc7TUFDVixJQUFOK2xCO01BQ0osSUFBVSxJQUFGN2pCLElBQUk4YyxzQkFBc0I5YyxJQUFJcEUsVUFBVW9FLElBQUk7T0FDMUMsSUFBSnNHLE1BQU0xSyxFQUFFb0U7T0FDWixHQUFHc0csZUFBZXpJLG1CQUFtQjtRQUNuQ3lJLE1BQU1BO1FBQ04sR0FBR0EsUUFBUXRDLEtBQUs2Zjs7O01BR3BCLEdBQUdBLFlBQVlqb0IsZ0JBQWdCb0k7OztJQUduQ3BJLEVBQUVraEIsdUJBQXVCOWUsS0FBS0Y7SUFDOUI7R0FDRjtHQXNCQSxTQUFTZ21CLGNBQWNsb0IsR0FBR29DLEdBQUcrQjtJQUMzQixHQUFHQSxRQUFRNmpCLG9CQUFvQmhvQixHQUFFb0MsU0FDNUIwbEIsa0JBQWtCOW5CLEdBQUVvQyxHQUFFK0I7SUFDM0I7R0FDRjtHdkJ3SUEsU0FBU2drQixnQkFBZ0I5aUI7SUFDdkIsSUFBSUosT0FBT3FHLGtCQUFrQmpHLE9BQ3pCb0UsS0FBS3hFLG1CQUFtQkE7SUFDNUIsR0FBR3dFLFNBQVNqQyx3QkFBd0IxRix1QkFBdUJ1RDtJQUMzRDtHQUNGO0dWdkJBLFNBQVMraUI7SUFDUHRsQjtHQUNGO0dBc0NBLFNBQVN1bEIsa0JBQWtCbG9CLEdBQUVpQztJQUMzQixHQUFJQSxXQUFXd0gsc0JBQXNCekosUUFBUWlvQjtJQUM3QztLQUFJMVosS0FBSzdFLHVCQUF3QjFKLEdBQUdpQztLQUNoQ3VNLEtBQUs5RSx1QkFBd0IxSixHQUFHaUM7S0FDaEN3TSxLQUFLL0UsdUJBQXdCMUosR0FBR2lDO0tBQ2hDeU0sS0FBS2hGLHVCQUF3QjFKLEdBQUdpQztJQUNwQyxPQUFReU0sV0FBV0QsV0FBV0QsVUFBVUQ7R0FDMUM7R0F3Q0EsU0FBUzRaLGVBQWdCbm9CLEdBQUdpQztJQUMxQixHQUFJQSxXQUFXakMsS0FBSzRKO0lBQ3BCLE9BQU91ZCxzQkFBdUJubkIsR0FBR2lDO0dBQ25DO0dPckJBLFNBQVNtbUIsaUJBQWtCdm9CLEdBQUd3QixHQUFLLE9BQU9qQixXQUFXUCxHQUFHd0IsR0FBSTtHRjNCNUQsU0FBU2duQixhQUFhdGxCLEdBQUcwSCxHQUFHdkU7SUFBUSxPQUFPbkQsUUFBUTBILEdBQUcrUCxtQkFBbUJ0VTtHQUFRO0dGV2pGLFNBQVNvaUIsNEJBQStCLDBCQUEwQjtHUXVFbEUsU0FBU0MsZ0NBQWtDLFNBQVM7R1d2THBELFNBQVNDLHdCQUF3QnpuQixHQUFHZjtJQUNsQyxJQUFJOEMsTUFBTTlDLFVBQVVpQyxHQUFHd1Q7SUFDdkIsSUFBS3hULE9BQU9BLFNBQVNhLEtBQUtiLE9BQVE7S0FDaEN3VCxJQUFJelYsRUFBRWlDLEtBQ0RqQyxFQUFFaUMsY0FDRmpDLEVBQUVpQyxlQUNGakMsRUFBRWlDO0tBQ1BsQixJQUFJaVAsa0JBQWtCalAsR0FBRzBVOztJQUUzQkE7SUFDQSxPQUFRM1M7O09BQ0EyUyxJQUFLelYsRUFBRWlDOztPQUNQd1QsS0FBS3pWLEVBQUVpQzs7T0FDUHdULEtBQUt6VixFQUFFaUMsSUFDYmxCLElBQUlpUCxrQkFBa0JqUCxHQUFHMFU7O0lBRzNCMVUsS0FBSytCO0lBQ0wsT0FBTy9CO0dBQ1Q7R0EzQ0EsU0FBUzBuQixzQkFBc0IxbkIsR0FBR2Y7SUFDaEMsSUFBSThDLE1BQU05QyxVQUFVaUMsR0FBR3dUO0lBQ3ZCLElBQUt4VCxPQUFPQSxTQUFTYSxLQUFLYixPQUFRO0tBQ2hDd1Q7TUFBSXpWLGFBQWFpQyxLQUNaakMsYUFBYWlDLGNBQ2JqQyxhQUFhaUM7UUFDYmpDLGFBQWFpQztLQUNsQmxCLElBQUlpUCxrQkFBa0JqUCxHQUFHMFU7O0lBRTNCQTtJQUNBLE9BQVEzUzs7T0FDQTJTLElBQUt6VixhQUFhaUM7O09BQ2xCd1QsS0FBS3pWLGFBQWFpQzs7T0FFeEJ3VCxLQUFLelYsYUFBYWlDLElBQ2xCbEIsSUFBSWlQLGtCQUFrQmpQLEdBQUcwVTs7SUFHM0IxVSxLQUFLK0I7SUFDTCxPQUFPL0I7R0FDVDtHdEI4cUJBLFNBQVMybkIsc0JBQXNCMW9CO0lBQzdCLE9BQVFBO2VBRU55Ryw2QkFBNkJ6Rzs7T0FFN0IsT0FBT0E7O09BRVAsT0FBT0E7O0dBRVg7R3NCMXBCQSxTQUFTMm9CLG9CQUFvQjVuQixHQUFHaUQ7SUFDbEIsSUFBUjZDLFVBQVU2aEIsc0JBQXNCMWtCO0lBQ3BDLGNBQVU2QztjQUNENGhCLHNCQUFzQjFuQixHQUFHOEY7Y0FFekIyaEIsd0JBQXdCem5CLEdBQUc4RjtHQUN0QztHdEJ5WEEsU0FBUytoQixvQkFBb0JqaEIsSUFBSUU7SUFDOUJGLFlBQWFsQiw2QkFBNkJrQjtJQUMxQ0UsWUFBYXBCLDZCQUE2Qm9CO0lBQzNDLE9BQVFGLE9BQU9FO0dBQ2pCO0dPMU9BLFNBQVNnaEIsZ0JBQWdCaHBCLEdBQ3ZCLFdBQVdvZCxlQUFlcGQsR0FDNUI7R09OQSxTQUFTaXBCLGtCQUFrQkM7SUFDbkIsSUFBRi9vQixJQUFJZ007SUFDUmhNO0lBQ0FBLGlCQUFpQitvQixVQUFTL29CLFdBQVcrb0I7SUFDckMsSUFBVSxJQUFGOW1CLE9BQU9BLElBQUk4bUIsV0FBVzltQjtLQUM1QmpDLGlCQUFpQitvQixHQUFHOW1CLE9BQU1qQyxXQUFXK29CLEdBQUc5bUI7SUFDMUNqQyxpQkFBaUIrb0IsVUFBUy9vQixXQUFXK29CO0lBQ3JDL29CO0lBQ0E7R0FDRjtHSWhUQSxTQUFTZ3BCO0lBQ1A7R0FDRjtHRHdVQSxTQUFTQyxtQkFBb0J4YjtJQUNsQixJQUFMTixPQUFPRixpQkFBaUJRO0lBQzVCLEdBQUdOLG9CQUFvQkEsZ0JBQWdCO0tBQ3JDQTtLQUNBQTtLQUNBRCxZQUFZQzs7SUFFZCxHQUFJQSxvQkFBb0JBLGlCQUN0Qm9FO0lBQ00sSUFBSjNJLE1BQU11RSxZQUFZQTtJQUN0QkE7SUFDQSxPQUFPdkU7R0FDVDtHQUtBLFNBQVNzZ0Isa0JBQW1CemI7SUFDMUIsSUFBSU4sT0FBT0YsaUJBQWlCUSxTQUN4QjdFO0lBQ0osSUFBVSxJQUFGM0csT0FBT0EsT0FBT0E7S0FDcEIyRyxPQUFPQSxZQUFZcWdCLG1CQUFtQnhiO0lBRXhDLE9BQU83RTtHQUNUO0dIeUhBLFNBQVN1Z0I7SUFDUG5lO0dBQ0Y7R1N4VkEsU0FBU29lLHlCQUF5QjNlLEdBQUssU0FBVTtHVjlFakQsU0FBUzRlLGNBQWNuWixLQUFLNUIsS0FDMUIsT0FBTzRCLFNBQVM1QixLQUNsQjtHaUI3QkEsU0FBU2diLGdCQUFnQnBNLElBQUl0VixJQUFJdVYsSUFBSXJWLElBQUloRjtJQUN2QyxHQUFJZ0YsTUFBTUY7S0FBSSxJQUNELElBQUYzRCxPQUFPQSxLQUFLbkIsS0FBS21CLEtBQUtrWixHQUFHclYsS0FBSzdELEtBQUtpWixHQUFHdFYsS0FBSzNEOztLQUMvQyxJQUNNLElBQUZBLElBQUluQixLQUFLbUIsUUFBUUEsS0FBS2taLEdBQUdyVixLQUFLN0QsS0FBS2laLEdBQUd0VixLQUFLM0Q7SUFFdEQ7R0FDRjtHdkJ3YkEsU0FBU3NsQixxQkFBcUJ2cEI7SUFDNUIsSUFBSTRJO0lBQ0o1SSxJQUFJMkIsdUJBQXVCM0I7SUFDM0I0SSxRQUFPNUk7SUFDUCxHQUFLQSxnQkFBa0I0SSxRQUFRQSxLQUFNLE9BQU9BO0lBQzVDNUksSUFBSUE7SUFDSjRJLFFBQU81STtJQUNQLEdBQU1BLGdCQUFrQjRJLFFBQVFBLE9BQVMsbUJBQW1CNUksSUFBSSxPQUFPNEk7SUFDakUsSUFBRlEsSUFBSSwrREFBK0RwSjtJQUV2RSxHQUFHb0osRUFBRTtLQUNIO01BQUlvZ0IsS0FBS3BnQjtNQUNMcWdCLFdBQVdDLFNBQVN0Z0IsT0FBT0EsT0FBT29nQjtNQUNsQ0csWUFBWXZnQixnQkFBWW9nQjtLQUM1QjVnQixNQUFNNmdCLFdBQVdycEIsWUFBWXVwQjtLQUM3QixPQUFPL2dCOztJQUVULEdBQUcseUJBQXlCNUksSUFBSSxPQUFPK1I7SUFDdkMsR0FBRyx1QkFBdUIvUixJQUFJLFNBQVErUjtJQUN0Qy9HO0dBQ0Y7R0c3VkEsU0FBUzRlO0lBQ1AsT0FBT3BuQix1QkFBdUIyQztHQUNoQztHWG1EQSxTQUFTMGtCLGVBQWdCaHFCLEdBQUd3QixHQUFLLE9BQU94QixNQUFNd0IsR0FBRztHQU9qRCxTQUFTeW9CLGVBQWVqcUIsR0FBRXdCLEdBQUssT0FBT3hCLE1BQU13QixHQUFHO0dBaEIvQyxTQUFTMG9CLGVBQWVscUIsR0FBRXdCLEdBQUssT0FBT3hCLFdBQVd3QixPQUFRO0dzQnBMekQsU0FBUzJvQix5QkFBMEJocUI7SUFDakMsSUFBSWlDLE9BQU9hLE1BQU0yRyxzQkFBc0J6SixJQUFJZ2dCLFdBQVdoZjtJQUN0RCxHQUFJOEI7S0FBUyxPQUNINEcsdUJBQXVCMUosR0FBRWlDOztRQUN4QkEsS0FBS2pCLFlBQVc7O1FBQ2hCaUIsS0FBS2pCLFVBQVU7O0lBRzFCLEdBQUlpQixRQUFRYSxPQUFPNEcsdUJBQXVCMUosR0FBR2lDO0tBQzNDLE9BQVF5SCx1QkFBdUIxSixHQUFHaUM7OztRQUNmK2QsV0FBVy9kLFFBQVE7OztRQUNuQitkLFVBQVcvZCxRQUFROzs7UUFDbkIrZCxVQUFXL2QsUUFBUTs7O1FBQ25CQSxRQUFROztJQUU3QixRQUFRQSxHQUFHakIsTUFBTWdmO0dBQ25CO0dBR0EsU0FBU2lLLGlCQUFpQmpuQjtJQUN4QixHQUFJQSxXQUFXQSxTQUFVLE9BQU9BO0lBQ2hDLEdBQUlBLFdBQVdBLFNBQVUsT0FBT0E7SUFDaEMsR0FBSUEsV0FBV0EsVUFBVSxPQUFPQTtJQUNoQztHQUNGO0d0QmlRQSxTQUFTa25CLHFCQUFxQmxxQjtJQUM1QjtLQUFJQyxJQUFJK3BCLHlCQUEwQmhxQjtLQUM5QmlDLElBQUloQztLQUFNZSxPQUFPZjtLQUFNK2YsT0FBTy9mO0tBQzlCa3FCLFNBQVM1b0Isb0JBQW9CeWU7S0FDN0JvSztPQUNBLElBQUkzcEIsNkNBQTZDMHBCO0tBQ2pEbm5CLElBQUkwRyx1QkFBdUIxSixHQUFHaUM7S0FDOUJ3RCxJQUFJd2tCLGlCQUFpQmpuQjtJQUN6QixHQUFJeUMsU0FBU0EsS0FBS3VhLE1BQU1oVjtJQUNoQixJQUFKcEMsTUFBTXJILG9CQUFvQmtFO0lBQzlCLE9BQVM7S0FDUHhEO0tBQ0FlLElBQUkwRyx1QkFBdUIxSixHQUFHaUM7S0FDOUIsR0FBSWUsU0FBUztLQUNieUMsSUFBSXdrQixpQkFBaUJqbkI7S0FDckIsR0FBSXlDLFNBQVNBLEtBQUt1YSxNQUFNO0tBRXhCLEdBQUkrSixlQUFlSyxXQUFXeGhCLE1BQU1vQztLQUNwQ3ZGLElBQUlsRSxvQkFBb0JrRTtLQUN4Qm1ELE1BQU1paEIsZUFBZUMsZUFBZUssUUFBUXZoQixNQUFNbkQ7S0FFbEQsR0FBSXNrQixlQUFlbmhCLEtBQUtuRCxJQUFJdUY7O0lBRTlCLEdBQUkvSSxLQUFLd0gsc0JBQXNCekosSUFBSWdMO0lBQ25DLEdBQUlnVixjQUFjK0osbUJBQW1CdHBCLHVCQUF1Qm1JO0tBQzFEb0M7SUFDRixHQUFJaEssVUFBVTRILE1BQU1sSCxlQUFla0g7SUFDbkMsT0FBT0E7R0FDVDtHb0J1SUEsU0FBU3loQixjQUFjdGMsSUFBSU0sSUFBSXJLLEdBQzdCK0osT0FBT0EsVUFBVU0sS0FBS3JLLElBQ3RCLFNBQ0Y7R3BCNU9BLFNBQVNzbUIsZUFBZ0J6cUIsR0FBR3dCLEdBQUssT0FBT3hCLE1BQU13QixHQUFHO0dBSGpELFNBQVNrcEIsY0FBZTFxQixHQUFHd0IsR0FBSyxPQUFPeEIsS0FBS3dCLEdBQUk7R21Ddk9oRCxTQUFTbXBCLGNBQWN4bUI7SUFDckIsU0FBU3ltQixRQUFRNXFCLEdBQUcyUyxHQUNsQixPQUFPMFQsc0JBQXNCcm1CLEdBQUUyUyxHQUNqQztJQUNBLFNBQVNrWSxRQUFRN3FCLEdBQUcyUyxHQUNsQixPQUFPZ0osZ0NBQWdDM2IsR0FBRTJTLEdBQzNDO0lBQ0EsU0FBU21ZLEdBQUdua0IsR0FBRzNDLEdBQ2IsT0FBTzBtQixjQUFjL2pCLEdBQUUzQyxHQUN6QjtJQUNBLFNBQVMrbUIsSUFBSXBrQixHQUFHM0MsR0FDZCxPQUFPeW1CLGVBQWU5akIsR0FBRTNDLEdBQzFCO0lBQ0EsU0FBUytYLElBQUlwVixHQUFHM0MsR0FDZCxPQUFPZ21CLGVBQWVyakIsR0FBRTNDLEdBQzFCO0lBQ0EsU0FBU2duQixJQUFJcmtCLEdBQUczQyxHQUNkLE9BQU9pbUIsZUFBZXRqQixHQUFFM0MsR0FDMUI7SUFDQSxTQUFTaW5CLEtBQUtqckIsR0FBRzJTLEdBQ2YsT0FBT21ZLEdBQUdGLFFBQVE1cUIsR0FBRTJTLElBQUdrWSxRQUFTN3FCLFFBQVEyUyxJQUMxQztJQUNBLFNBQVN1WSxJQUFJdmtCLEdBQUd2RSxHQUNkLE9BQU82YSxjQUFjdFcsR0FBR3ZFLEdBQzFCO0lBQ0EsU0FBUytvQixJQUFJeGtCLEdBQUd2RSxHQUFHcEMsR0FDakIsT0FBT3dxQixjQUFjN2pCLEdBQUd2RSxHQUFHcEMsR0FDN0I7SUFDQTtLQUFJb3JCLElBQUlmLHFCQUFxQmxOO0tBQ3pCa08sT0FBT2hCLHFCQUFxQmxOO0tBQzVCaEc7S0FBR21VO0tBQUlDO0tBQ1BDLEtBQUtybkI7S0FDTHdDLElBQUl1a0IsSUFBSU07S0FDUnJyQixJQUFJK3FCLElBQUlNO0tBQ1JDLEtBQUtQLElBQUlNO0tBQ1QvUyxLQUFLeVMsSUFBSU07SUFFYnJVLElBQUk0RSxJQUFJNWIsR0FBR3NyQjtJQUVYdFUsSUFBSTZULElBQUlELElBQUk1VCxHQUFFMFQsUUFBUTFULFNBQVFrVTtJQUM5QmxVLElBQUk2VCxJQUFJRCxJQUFJNVQsR0FBRTBULFFBQVExVCxTQUFRa1U7SUFDOUJsVSxJQUFJNFQsSUFBSTVULEdBQUUwVCxRQUFRMVQ7SUFFbEJnVSxJQUFJSyxPQUFPelAsSUFBS2lQLElBQUk3cUIsR0FBRWlyQixJQUFJemtCO0lBRTFCLElBQUkya0IsS0FBS0csSUFDTEYsS0FBSzlTO0lBQ1Q4UyxLQUFLUixJQUFJUSxJQUFHRDtJQUNaQSxLQUFLTCxLQUFLSztJQUNWQSxLQUFLUCxJQUFJQSxJQUFJTyxJQUFJQyxLQUFNWCxRQUFRVztJQUMvQkEsS0FBS04sS0FBS007SUFDVkosSUFBSUssT0FBT0Y7SUFDWEgsSUFBSUssT0FBT0Q7SUFFWCxPQUFPcFU7R0FDVDtHL0JvTEEsU0FBU3VVLDRCQUErQixTQUFVO0dFckJsRCxTQUFTQyxzQkFBc0J0ckI7SUFDdkIsSUFBRnNHO0lBQ0osTUFBTXRHLFNBQVNBLElBQUlBLE1BQ2pCc0csT0FBT3RHO0lBRVQsT0FBT3NHO0dBQ1Q7R1dnWG9CO0lBQWhCaWxCO01BQWtCO1FBQ3BCLFNBQVNDLFNBQVk3cUIsZ0JBQWlCO1FBQ3RDNnFCOzs7Ozs7O21CQUVrQnhZLE1BQU15WTtXQUNwQixJQUFXLElBQUYxcEIsSUFBSWlSLFVBQVNqUixRQUFPQTtZQUMzQnBCLFdBQVdBLG9CQUFxQjhxQixTQUFTMXBCO1VBRnZDOzttQkFJYWtHLEtBQUsrSyxNQUFNeVk7V0FDcEIsSUFBSnhqQixNQUFNQTtXQUNWLElBQVcsSUFBRmxHLElBQUlpUixVQUFTalIsUUFBT0E7WUFDM0JwQixXQUFXc0gsU0FBVXdqQixTQUFTMXBCO1VBSHpCOzttQkFLWWlSLE1BQU1yTixNQUFNOGxCO1dBQy9COXFCLFdBQVdBLG9CQUFvQmdGO1dBQy9CLElBQVcsSUFBRjVELElBQUlpUixVQUFTalIsUUFBT0E7WUFDM0JwQixXQUFXQSxvQkFBcUI4cUIsU0FBUzFwQjtVQUhsQzs7bUJBS1loQjtXQUNyQixHQUFJQTtZQUFtQkoseUJBQThDSTttQkFDNURBO1lBQW9CSiwwQkFBZ0RJOztZQUN4RUosMEJBQWdESTtVQUgxQzswQkFLSyxPQUFPSixlQUFyQjs7O1dBRUZBLGlCQUFpQkE7V0FDakJBO1dBQ0FBO1dBQ0FBLGVBQWdCQTtXQUNoQkEsZUFBZ0JBO1dBQ2hCQSxlQUFnQkE7V0FDaEJBLGVBQWdCQTtXQUNoQixPQUFPQTtVQVJBO1FBV1gsZ0JBQWlCbUQsR0FBRzBFO1NBQ2xCQSxRQUFROGlCLHNCQUFzQjlpQjtTQUU5QjtVQUFJa2pCLGFBQWNsakI7VUFDZG1qQixXQUFhbmpCO1NBR2pCLEdBQUltakI7VUFDRkM7O1NBRUY7VUFBSTdjLGFBQWF5YztVQUNiL1U7VUFDQW9WLG1CQUFtQkgsYUFBYTNsQixXQUFXbUc7U0FFL0MsU0FBUzRmLEtBQUtob0I7VUFDWixHQUFJNG5CLFlBQVk7VUFDSSxJQUFoQkssa0JBQWtCRix3QkFBd0IvbkI7VUFDOUMsR0FBSWlvQixnQkFBaUI7V0FBRWhkLG9CQUFvQmdkO1dBQWtCOztjQUN4RCxDQUFFRix1QkFBdUIvbkIsSUFBSTtTQUNwQztTQUVBLFNBQVNrb0IsV0FBWWxvQjtVQUNuQixHQUFJQSxjQUFlO1dBQ2pCLEdBQUlnb0IsS0FBS2hvQixJQUFJO1dBQ2I7WUFBSWtCLE9BQU9sQjtZQUNQbW9CLE1BQU1wVyxnQkFBZ0I3UTtZQUN0QmtuQjtXQUNKLEtBQUlEO1lBQ0Z4cEI7V0FDRixHQUFHd3BCLG9CQUFvQnBxQixVQUFVO1lBQy9Ca047WUFDQSxJQUFXLElBQUZoTixPQUFPQSxJQUFJaUQsYUFBYWpEO2FBQy9CZ04sZ0JBQWlCL0osZ0JBQWdCakQ7WUFDbkNnTjtZQUNlLElBQVhvZCxhQUFhcGQ7WUFDakIsSUFBVSxJQUFGaE4sT0FBT0EsUUFBUUEsS0FDckJnTjtZQUVGa2QsY0FBY2xkLFFBQVFqTCxHQUFHb29CO1lBQ3pCbmQsZ0JBQWdCb2QsZ0JBQWdCRDtZQUNoQ25kLGdCQUFnQm9kO1lBQ2hCcGQsZ0JBQWdCb2Qsb0JBQW9CRDs7ZUFDL0I7WUFDTG5kO1lBQ0EsSUFBVyxJQUFGaE4sT0FBT0EsSUFBSWlELGFBQWFqRDthQUMvQmdOLGdCQUFpQi9KLGdCQUFnQmpEO1lBQ25DZ047WUFDWSxJQUFScWQsVUFBVXJkO1lBQ2RrZCxjQUFjbGQsUUFBUWpMLEdBQUdvb0I7WUFDekIsR0FBSUQsb0JBQW9CbGQsZUFBZXFkO2FBQ3JDdGhCO3FFQUFvRTlGOztXQUV4RStKLHVCQUF3Qm1kO1dBQ3hCbmQsdUJBQXdCbWQ7O2tCQUVqQnBvQixhQUFhdUYsU0FBU3ZGLFVBQVVBLFVBQVM7V0FDaEQsR0FBSUE7WUFDRmdIO1dBRUYsR0FBSTRHLHlCQUF5QjVOO1lBQzNCckI7V0FDRixHQUFJcUIsZ0JBQWdCZ29CLEtBQUtob0IsSUFBSTtXQUM3QixHQUFJQSxhQUFhQTtZQUNmaUwsdUJBQW1EakwsUUFBU0E7O1lBRTVEaUwsNEJBQW1EakwscUJBQXFCQTtXQUMxRWlMLGtCQUFrQmpMO1dBQ2xCaUwsa0JBQWtCakw7V0FDbEIsR0FBSUEsY0FBYzJTLFdBQVkzUzs7a0JBQ3JCOEMsaUJBQWlCOUMsR0FBSTtXQUM5QixLQUFLOEMsaUJBQWlCdEU7WUFDcEJ3STs7V0FFRixHQUFJZ2hCLEtBQUtob0IsSUFBSTtXQUNMLElBQUpsQixNQUFNMkUscUJBQXFCekQ7V0FDL0IsR0FBSWxCO1lBQ0ZtTSx1QkFBb0RuTTttQkFDN0NBO1lBQ1BtTSwyQkFBZ0RuTTs7WUFFaERtTSw0QkFBbURuTTtXQUNyRCxJQUFXLElBQUZiLE9BQU1BLElBQUlhLEtBQUliO1lBQ3JCZ04sZ0JBQWlCa1ksc0JBQXNCbmpCLEdBQUUvQjtXQUMzQ2dOLHdCQUF5Qm5NO1dBQ3pCbU0sd0JBQXlCbk07O2tCQUNoQmlFLGtCQUFrQi9DLEdBQUk7V0FDL0IsR0FBSWdvQixLQUFLaG9CLElBQUk7V0FDTCxJQUFKbEIsTUFBTTJHLHNCQUFzQnpGO1dBQ2hDLEdBQUlsQjtZQUNGbU0sdUJBQW9Ebk07bUJBQzdDQTtZQUNQbU0sMkJBQWdEbk07O1lBRWhEbU0sNEJBQW1Ebk07V0FDckQsSUFBVyxJQUFGYixPQUFNQSxJQUFJYSxLQUFJYjtZQUNyQmdOLGdCQUFpQnZGLHVCQUF1QjFGLEdBQUUvQjtXQUM1Q2dOLHdCQUF5Qm5NO1dBQ3pCbU0sd0JBQXlCbk07O2tCQUVyQmtCLE1BQU1BLE9BQUs7V0FDQyxJQUFWdW9CLG1CQUFtQnZvQjtXQVN2QmdILGlEQUErQ3VoQjs7a0JBS3hDdm9CLFVBQVVBO1dBQ2pCaUwsdUJBQWlEakw7a0JBRTdDQSxtQkFBa0JBO1dBQ3BCaUwsMkJBQTZDakw7a0JBQ3RDQSxvQkFBbUJBO1dBQzFCaUwsNEJBQStDakw7O1dBRS9DaUwsNEJBQStDakw7U0FHdkQ7U0FDQWtvQixXQUFZbG9CO1NBQ1osTUFBTzJTLGlCQUFrQjtVQUN2QixJQUFJMVUsSUFBSTBVLGFBQ0ozUyxJQUFJMlM7VUFDUixHQUFJMVUsUUFBUStCLFVBQVUyUyxXQUFZM1MsR0FBRy9CO1VBQ3JDaXFCLFdBQVlsb0IsRUFBRS9COztTQUVoQixHQUFJOHBCO1VBQWtCOWMscUJBQXFCOGM7U0FDM0M5YztTQUNBLE9BQU9BLGFBdklGO09BbkNhOztHaEIvRnRCLFNBQVN1ZCxxQkFBc0JobUI7SUFDN0IsT0FBT2hFLHVCQUF1QitELHlCQUF5QkMsTUFBSUE7R0FDN0Q7R2dCNlFBLFNBQVNpbUIsNEJBQTZCem9CLEdBQUcwRTtJQUN2QyxPQUFPOGpCLHFCQUFzQmYsZ0JBQWlCem5CLEdBQUcwRTtHQUNuRDtHTnJrQkEsU0FBU2drQixxQkFBcUJ4bkI7SUFDNUJrQyxxQkFBc0JsQztHQUN4QjtHUExBLFNBQVN5bkIsd0JBQXdCQztJQUN2QixJQUFKQSxNQUFNem9CLHdCQUF3QnlvQjtJQUNsQyxVQUFXM2lCLHVCQUF1QjtLQUNkLElBQWQ0aUIsZ0JBQWdCNWlCO0tBQ3BCLEdBQUc0aUIsaUJBQWlCQTtNQUNsQixJQUNFQSx1QkFBdUJELDBCQUN2QjtZQUNPdmQsR0FDUDs7O0tBR0Q7R0FDUDtHc0I5SEEsU0FBU3lkLDJCQUEyQjNxQjtJQUNsQyxHQUFHQSxjQUFjLE9BQVNBO0lBQzFCLE9BQU84RDtHQUNUO0dkeUlBLFNBQVM4bUIsaUJBQWlCbmY7SUFDeEIsR0FBRzlMLHNCQUFzQkE7S0FBMEIsT0FDMUNBO0lBRVR1SjtHQUNGO0dFMkxBLFNBQVMyaEIsZ0JBQWdCcFksUUFBUS9CO0lBQy9CLElBQUkvUCxNQUFNOFIsa0JBQ04xRSxVQUFVdUgsTUFBTTNVO0lBQ3BCLElBQVUsSUFBRmIsT0FBT0EsSUFBSWEsS0FBS2IsS0FDdEJpTyxTQUFTak8sS0FBSzJTO0lBRWhCL0IsUUFBUS9QO0lBQ1IsT0FBT29OO0dBQ1Q7R0FsYUEsU0FBUytjO0lBQ1BsWDttQkFDa0JpWDtpQkFDRjdTO1lBQ0xoSztHQUViO0did1lBLFNBQVMrYyw2QkFBOEJsdEI7SUFDN0IsSUFBSk07SUFDSixLQUFLcUQsY0FBYzNELElBQ2pCTSxTQUFpQ04sSUFBSXdGLG1CQUFtQnhGO0lBQzFELFdBQVcwRyxRQUFRcEcsS0FBS04sR0FBR0E7R0FDN0I7R2MwR0EsU0FBU210Qix1QkFBdUIzbUIsR0FBRTNDLEdBQUViLEdBQUV5QztJQUNwQ3VGO0dBQ0Y7R0UvY0EsU0FBU29pQixpQkFBa0JwdEIsR0FBR2lDLEdBQUtwQixTQUFTYixHQUFHYSxTQUFTb0IsRUFBRztHQUMzRG1yQjt3QkFDdUIsT0FBT3ZzQixPQUFPQSxVQUE1Qjt3QkFDYyxPQUFPQSxPQUFPQSxzQkFBNUI7OztNQUVMLElBQUliLElBQUlhLFFBQVFvQixJQUFJcEI7TUFDcEJBLFNBQVNvQjtNQUNULE9BQVFqQyxFQUFFaUMsVUFBV2pDLEVBQUVpQztLQUhqQjs7O01BTU4sSUFBSWpDLElBQUlhLFFBQVFvQixJQUFJcEI7TUFDcEJBLFNBQVNvQjtNQUNULE9BQVFqQyxFQUFFaUMsaUJBQWtCakMsRUFBRWlDO0tBSHhCOzs7TUFNTixJQUFJakMsSUFBSWEsUUFBUW9CLElBQUlwQjtNQUNwQkEsU0FBU29CO01BQ1QsUUFBU2pDLEVBQUVpQyxXQUFhakMsRUFBRWlDLGVBQ2pCakMsRUFBRWlDLGNBQWFqQyxFQUFFaUM7S0FKcEI7OztNQU9OLElBQUlqQyxJQUFJYSxRQUFRb0IsSUFBSXBCO01BQ3BCQSxTQUFTb0I7TUFDVCxPQUFRakMsRUFBRWlDLFdBQWFqQyxFQUFFaUMsZUFDdEJqQyxFQUFFaUMsY0FBYWpDLEVBQUVpQztLQUpkOztjQU1VYTtNQUNWLElBQUZiLElBQUlwQjtNQUNSQSxTQUFTb0IsSUFBSWE7TUFDYixPQUFPMHBCLHFCQUFxQjNyQixnQkFBZ0JvQixHQUFHQSxJQUFJYTtLQUg3Qzs7Y0FLaUJBO01BQ2pCLElBQUZiLElBQUlwQjtNQUNSQSxTQUFTb0IsSUFBSWE7TUFDYixPQUFPakMsZ0JBQWdCb0IsR0FBR0EsSUFBSWE7S0FIakI7R0F1YmpCLFNBQVN1cUIsdUJBQXdCcnRCLEdBQUdzTztJQUM1QixJQUFGck8sUUFBUW10QixpQkFBaUI3bEIsMEJBQTBCdkgsSUFBSXNPO0lBQzNELFNBQVNnZixRQUFRQztLQUNmLElBQUl2cUIsSUFBSS9DLFlBQ0pGLElBQUlpRDtLQUNSLE9BQVFBLGVBQWdCO01BQ3RCQSxJQUFJL0M7TUFDRyxJQUFIdXRCLEtBQUt6dEI7TUFDVCxHQUFJQSxLQUFLeXRCLFNBQVNEO01BQ2xCeHRCLElBQUl5dEIsS0FBTXhxQjs7S0FFWixPQUFPakQ7SUFDVDtJQUVBLE9BQU9FOztPQUVMLElBQUl3dEIsaUJBQ0FDLFdBQVd6dEIsYUFDZjs7T0FFQTtRQUFJd3RCLGFBQWF4dEI7UUFDYnN0QjtRQUNBRyxXQUFXSixRQUFRQztPQUN2QixHQUFHQTtRQUNEdmlCOztPQUVGOztlQUdBQSxnREFDQTs7SUFFRixPQUFPeWlCLGFBQWF0UCwyQkFBMkJ1UDtHQUNqRDtHQTljQSxTQUFTQyxlQUFnQjN0QixHQUFHaUM7SUFBS3BCLFNBQVNjLHVCQUF1QjNCO0lBQUlhLFNBQVNvQjtHQUFHO0dBQ2pGMHJCO3dCQUN1QixPQUFPOXNCLGtCQUFrQkEsVUFBdkM7d0JBQ2MsT0FBT0Esa0JBQWtCQSxzQkFBdkM7OztNQUVMLElBQUliLElBQUlhLFFBQVFvQixJQUFJcEI7TUFDcEJBLFNBQVNvQjtNQUNULE9BQVFqQyxhQUFhaUMsVUFBV2pDLGFBQWFpQztLQUh2Qzs7O01BTU4sSUFBSWpDLElBQUlhLFFBQVFvQixJQUFJcEI7TUFDcEJBLFNBQVNvQjtNQUNULE9BQVFqQyxhQUFhaUMsaUJBQWtCakMsYUFBYWlDO0tBSDlDOzs7TUFNTixJQUFJakMsSUFBSWEsUUFBUW9CLElBQUlwQjtNQUNwQkEsU0FBU29CO01BQ1QsUUFBU2pDLGFBQWFpQyxXQUFhakMsYUFBYWlDO2VBQ3ZDakMsYUFBYWlDO2VBQWFqQyxhQUFhaUM7O0tBSjFDOzs7TUFPTixJQUFJakMsSUFBSWEsUUFBUW9CLElBQUlwQjtNQUNwQkEsU0FBU29CO01BQ1QsT0FBUWpDLGFBQWFpQyxXQUFhakMsYUFBYWlDO2VBQzVDakMsYUFBYWlDO2VBQWFqQyxhQUFhaUM7S0FKcEM7O2NBTVVhO01BQ1YsSUFBRmIsSUFBSXBCO01BQ1JBLFNBQVNvQixJQUFJYTtNQUNiLE9BQU9OLHVCQUF1QjNCLGlCQUFpQm9CLEdBQUdBLElBQUlhO0tBSGhEOztjQUtpQkE7TUFDdkIsSUFBSWUsUUFBUW9ELFdBQVduRSxNQUNuQjlDLElBQUlhLFFBQ0pvQixJQUFJcEI7TUFDUixJQUFVLElBQUZvRCxPQUFPQSxJQUFJbkIsS0FBS21CLEtBQ3RCSixFQUFFSSxLQUFLakUsYUFBYWlDLElBQUlnQztNQUUxQnBELFNBQVNvQixJQUFJYTtNQUNiLE9BQU9lO0tBUk07R21CZ2hCUyxJQUF0QitwQix3QkFBd0IzbkI7R25CbmQ1QixTQUFTNG5CLG9CQUFxQnJuQjtJQUM1QixPQUFPaU4seUJBQTBCdEYsb0JBQXFCM0g7R0FDeEQ7R0EyRkEsU0FBU3NuQiw2QkFBNkJsWixRQUFRdEc7SUFDNUMsU0FBU2dmLFFBQVFDO0tBQ2YsSUFBSXZxQixJQUFJNFIsaUJBQ0o3VSxJQUFJaUQ7S0FDUixPQUFRQSxlQUFnQjtNQUN0QkEsSUFBSTRSO01BQ0csSUFBSDRZLEtBQUt6dEI7TUFDVCxHQUFJQSxLQUFLeXRCLFNBQVNEO01BQ2xCeHRCLElBQUl5dEIsS0FBTXhxQjs7S0FFWixPQUFPakQ7SUFDVDtJQUNVLElBQU5ndUIsUUFBUW5aO0lBQ1osT0FBT21aOztPQUVMO1FBQUlOO1FBQ0FPO1FBQ0FOLFdBQVc5WTtRQUNYcVosd0JBQXdCUDtRQUN4QlEsY0FBY3RaO1FBQ2R1WixXQUFXdlo7UUFDWHdaLFdBQVd4WjtPQUNmOztPQUVBO1FBQUk2WSxhQUFhN1k7UUFDYm9aO1FBQ0FUO1FBQ0FHLFdBQVdKLFFBQVFDO1FBQ25CVSx3QkFBd0JYLFFBQVFDO1FBQ2hDVyxjQUFjWixRQUFRQztRQUN0QlksV0FBV2IsUUFBU0M7UUFDcEJhLFdBQVdkLFFBQVNDO09BQ3hCLEdBQUdBO1FBQ0N2aUI7O09BRUo7O09BRUFBOztPQUNBOztPQUVBQSwyREFDQTs7SUFFRjtLQUFJMkw7S0FDQW9WLG1CQUFvQm1DLHVCQUFvQmpvQjtLQUN4Q29vQjtJQUNKLFNBQVNDLFdBQVkxWjtLQUNWLElBQUwvTyxPQUFPK087S0FDWCxHQUFJL087TUFBdUMsR0FDckNBLGFBQXlDO09BQzNDLElBQUl2RixNQUFNdUYsWUFDTnFOLE9BQVFyTixpQkFDUjdCLEtBQUsxRDtPQUNULEdBQUk0UyxXQUFXLE9BQU9sUDtPQUN0QixHQUFJK25CLGtCQUFrQkEsaUJBQWlCc0MsaUJBQWlCcnFCO09BQ3hEMlMsV0FBVzNTLEdBQUdrUDtPQUNkLE9BQU9sUDs7O09BRVAsT0FBUTZCO2FBRU5BLGFBQTBDO01BQzVDLElBQUkvQyxNQUFNK0MsYUFDTjdCLElBQUk0USxlQUFnQjlSO01BQ3hCLEdBQUlpcEIsa0JBQWtCQSxpQkFBaUJzQyxpQkFBaUJycUI7TUFDeEQsT0FBT0E7OztNQUNGLE9BQ0U2Qjs7U0FFTCxPQUFPK087O1NBRVAsT0FBT0E7O1NBRVAsT0FBT0E7O1NBRVA1SixpREFDQTs7U0FFVyxJQUFQL0osU0FBUzJUO1NBQ2IsR0FBR29aLGlCQUFpQi9zQixTQUFTb3RCLGNBQWNwdEI7U0FDM0MsT0FBTzhxQixpQkFBaUI5cUI7O1NBRWIsSUFBUEEsU0FBUzJUO1NBQ2IsR0FBR29aLGlCQUFpQi9zQixTQUFTb3RCLGNBQWNwdEI7U0FDM0MsT0FBTzhxQixpQkFBaUI5cUI7O1NBRWIsSUFBUEEsU0FBUzJUO1NBQ2IsR0FBR29aLGlCQUFpQi9zQixTQUFTb3RCLGNBQWNwdEI7U0FDM0MsT0FBTzhxQixpQkFBaUI5cUI7O1NBRXhCO1VBQUlzdEIsU0FBUzNaO1VBQ1R0VSxNQUFNaXVCO1VBQ05yYixPQUFPcWI7VUFDUHZxQixLQUFLMUQ7U0FDVCxHQUFJNFMsV0FBVyxPQUFPbFA7U0FDdEIsR0FBSStuQixrQkFBa0JBLGlCQUFpQnNDLGlCQUFpQnJxQjtTQUN4RDJTLFdBQVczUyxHQUFHa1A7U0FDZCxPQUFPbFA7O1NBRVBnSCxvREFDQTs7U0FFQSxJQUFJbEksTUFBTThSLGlCQUNONVEsSUFBSTRRLGVBQWdCOVI7U0FDeEIsR0FBSWlwQixrQkFBa0JBLGlCQUFpQnNDLGlCQUFpQnJxQjtTQUN4RCxPQUFPQTs7U0FFUCxJQUFJbEIsTUFBTThSLGtCQUNONVEsSUFBSTRRLGVBQWdCOVI7U0FDeEIsR0FBSWlwQixrQkFBa0JBLGlCQUFpQnNDLGlCQUFpQnJxQjtTQUN4RCxPQUFPQTs7U0FFRCxJQUFGTixRQUFRNkY7U0FDWixJQUFXLElBQUZ0SCxPQUFNQSxPQUFNQSxLQUFLeUIsTUFBTXpCLEtBQUsyUztTQUMvQixJQUFGNVEsSUFBSTZwQixvQkFBcUJucUI7U0FDN0IsR0FBSXFvQixrQkFBa0JBLGlCQUFpQnNDLGlCQUFpQnJxQjtTQUN4RCxPQUFPQTs7U0FFRCxJQUFGTixRQUFRNkY7U0FDWixJQUFXLElBQUZ0SCxPQUFNQSxPQUFNQSxLQUFLeUIsRUFBRXpCLEtBQUsyUztTQUMzQixJQUFGNVEsSUFBSTZwQixvQkFBcUJucUI7U0FDN0IsR0FBSXFvQixrQkFBa0JBLGlCQUFpQnNDLGlCQUFpQnJxQjtTQUN4RCxPQUFPQTs7U0FFUCxJQUFJbEIsTUFBTThSLGlCQUNONVEsUUFBUXVGLE1BQU16RztTQUNsQmtCO1NBQ00sSUFBRk4sUUFBUTZGO1NBQ1osR0FBSXdpQixrQkFBa0JBLGlCQUFpQnNDLGlCQUFpQnJxQjtTQUN4RCxJQUFXLElBQUYvQixPQUFNQSxLQUFLYSxLQUFJYixJQUFLO1VBQzNCLElBQVcsSUFBRmdDLE9BQU1BLE9BQU1BLEtBQUtQLE1BQU1PLEtBQUsyUTtVQUNyQzVRLEVBQUUvQixLQUFLNHJCLG9CQUFxQm5xQjs7U0FFOUIsT0FBT007O1NBRVAsSUFBSWxCLE1BQU04UixpQkFDTjVRLFFBQVF1RixNQUFNekc7U0FDbEJrQjtTQUNNLElBQUZOLFFBQVE2RjtTQUNaLEdBQUl3aUIsa0JBQWtCQSxpQkFBaUJzQyxpQkFBaUJycUI7U0FDeEQsSUFBVyxJQUFGL0IsT0FBTUEsS0FBS2EsS0FBSWIsSUFBSztVQUMzQixJQUFXLElBQUZnQyxPQUFNQSxPQUFNQSxLQUFLUCxFQUFFTyxLQUFLMlE7VUFDakM1USxFQUFHL0IsS0FBSzRyQixvQkFBcUJucUI7O1NBRS9CLE9BQU9NOztTQUVQLElBQUlsQixNQUFNOFIsa0JBQ041USxRQUFRdUYsTUFBTXpHO1NBQ2xCa0I7U0FDQSxHQUFJK25CLGtCQUFrQkEsaUJBQWlCc0MsaUJBQWlCcnFCO1NBQ2xELElBQUZOLFFBQVE2RjtTQUNaLElBQVcsSUFBRnRILE9BQU1BLEtBQUthLEtBQUliLElBQUs7VUFDM0IsSUFBVyxJQUFGZ0MsT0FBTUEsT0FBTUEsS0FBS1AsTUFBTU8sS0FBSzJRO1VBQ3JDNVEsRUFBRS9CLEtBQUs0ckIsb0JBQXFCbnFCOztTQUU5QixPQUFPTTs7U0FFUCxJQUFJbEIsTUFBTThSLGtCQUNONVEsUUFBUXVGLE1BQU16RztTQUNsQmtCO1NBQ00sSUFBRk4sUUFBUTZGO1NBQ1osSUFBVyxJQUFGdEgsT0FBTUEsS0FBS2EsS0FBSWIsSUFBSztVQUMzQixJQUFXLElBQUZnQyxPQUFNQSxPQUFNQSxLQUFLUCxFQUFFTyxLQUFLMlE7VUFDakM1USxFQUFHL0IsS0FBSzRyQixvQkFBcUJucUI7O1NBRS9CLE9BQU9NOzs7U0FHUGdILDRDQUNBOzs7O1NBSUEsSUFBSWhJLEdBQUdoRDtTQUNQLE9BQVFnRCxJQUFJNFIsdUJBQXdCNVUsS0FBS2tFLG9CQUFxQmxCO1NBQzlELElBQUltcEIsTUFBTXBXLGdCQUFnQi9WLElBQ3RCd3VCO1NBQ0osS0FBSXJDO1VBQ0ZuaEI7U0FDRixPQUFPbkY7c0JBRUw7O1lBRUEsS0FBSXNtQjthQUNGbmhCO1lBQ0Z3akIsZ0JBQWdCckM7WUFDaEI7O1lBRUFxQyxnQkFBZ0I1WjtZQUVoQkE7WUFBa0JBO1lBQ2xCOztTQUVGO1VBQUkwWCxVQUFVMVg7VUFDVjFCO1VBQ0FsUCxJQUFJbW9CLGdCQUFnQnZYLFFBQVExQjtTQUNoQyxHQUFHc2IsaUJBQWlCenNCO1VBQVUsR0FDekJ5c0IsaUJBQWlCdGI7V0FDbEJsSTs7U0FFSixHQUFJK2dCLGtCQUFrQkEsaUJBQWlCc0MsaUJBQWlCcnFCO1NBQ3hELE9BQU9BO2lCQUVQZ0g7O0lBSVI7SUFDQSxHQUFHZ2pCO0tBQVksR0FDVko7TUFDRDtPQUFJcmxCLE9BQU9xTSxzQkFBc0I4WTtPQUM3QjlrQixVQUFVM0IsV0FBV2duQjtPQUNyQnJsQixNQUFNZ2xCLHNCQUFzQnJsQixNQUFNSztPQUNsQ2dNLGFBQWF3WSxpQkFBaUJ4a0I7O01BRWxDb0M7SUFHSSxJQUFKcEMsTUFBTTBsQixXQUFZMVo7SUFDdEIsTUFBTytCLGlCQUFrQjtLQUN2QixJQUFJekQsT0FBT3lELGFBQ1AzUyxJQUFJMlMsYUFDSmxSLElBQUl6QjtLQUNSLEdBQUl5QixJQUFJeU4sTUFBTXlELFdBQVczUyxHQUFHa1A7S0FDNUJsUCxFQUFFeUIsS0FBSzZvQixXQUFZMVo7O0lBRXJCLFVBQVd0RyxpQkFBZUEsU0FBU3NHO0lBQ25DLE9BQU9oTTtHQUNUO0doQjhMQSxTQUFTNmxCLHFCQUFxQnp1QjtJQUMzQkEsV0FBWXlHLDZCQUE2QnpHO0lBQzFDLE9BQU93Qyx1QkFBdUJ4QztHQUNoQztHZ0JwZkEsU0FBUzB1Qiw0QkFBNEIxdUIsR0FBRXNPO0lBQzFCO0tBQVBzRzs7UUFBYStZO1NBQWdCYyxxQkFBcUJ6dUIsV0FBV3NPLGtCQUFjQSxNQUFJQTtJQUNuRixPQUFPd2YsNkJBQTZCbFosUUFBUXRHO0dBQzlDO0dDOEdBLFNBQVNxZ0IsaUJBQWtCbGhCO0lBQ3pCO0tBQUlOLE9BQU9GLGlCQUFpQlE7S0FDeEI4Z0IsYUFBYXRuQixXQUFXa1g7SUFDNUIsU0FBU3lRLE1BQU16ckIsUUFBUWxDLFFBQVFsQjtLQUN2QixJQUFGRTtLQUNKLE1BQU1BLElBQUlGLEVBQUU7TUFDVixHQUFHb04sb0JBQW9CQSxnQkFBZ0I7T0FDckNBO09BQ0FBO09BQ0FELFlBQVlDOztNQUVkLEdBQUlBLG9CQUFvQkEsaUJBQ3RCO01BQ0ZoSyxPQUFPbEMsU0FBT2hCLEtBQUtrTixZQUFZQTtNQUMvQkE7TUFDQWxOOztLQUVGLE9BQU9BO0lBQ1Q7SUFDTSxJQUFGQSxJQUFJMnVCLE1BQU1MLFdBQVdwUTtJQUN6QixHQUFHbGU7S0FDRHNSO1lBQ090UixJQUFJa2U7S0FDWG5UO0lBQ0Y7S0FBSWxJLE1BQU11cUIsdUJBQXdCcm1CLG9CQUFvQnVuQjtLQUNsRHJtQixVQUFVakIsV0FBV25FLE1BQU1xYjtJQUMvQmpXLFFBQVFxbUI7SUFDRixJQUFGdHVCLElBQUkydUIsTUFBTTFtQixLQUFLaVcsMEJBQTBCcmI7SUFDN0MsR0FBRzdDLElBQUk2QztLQUNMa0ksaURBQWlEL0ssV0FBVzZDO0lBQzlEO0tBQUk3QjtLQUNBMkgsTUFBTThsQiw0QkFBNEIxbkIsb0JBQW9Ca0IsTUFBTWpIO0lBQ2hFa00sY0FBY0EsY0FBY2xNO0lBQzVCLE9BQU8ySDtHQUNUO0dBSUEsU0FBU2ltQixpQ0FBaUM3ckIsR0FDeEMsT0FBTzJyQixpQkFBaUIzckIsR0FDMUI7R2N4VUEsU0FBUzhyQixnQkFBZ0JyTyxLQUFJaFcsR0FBRTFLO0lBQzdCLEdBQUcwZ0IsV0FBV2hXLEVBQUUsQ0FDZGdXLFNBQVMxZ0IsR0FDVDtJQUVGO0dBQ0Y7R3hCaU9BLFNBQVNndkIsb0JBQXFCbHZCLEdBQUd3QjtJQUMvQixHQUFJQSxRQUFRQSxRQUFRQTtJQUNwQnhCLElBQUlPLFNBQVNQO0lBQ2IsT0FBUXdCLFVBQVN4QixJQUFHQTtHQUN0QjtHTzJIQSxTQUFTbXZCLHNCQUFzQjliO0lBQ3ZCLElBQUZsVCxJQUFJZ007SUFDUmhNLGNBQWNrVDtJQUNkbFQsaUJBQWlCQSxzQkFBc0JtRSx3QkFBd0JuRTtJQUMvRDtHQUNGO0dpQmhYQSxTQUFTaXZCLGlCQUFpQnhPLEtBQ3hCLE9BQU9BLE9BQ1Q7R0ptS0EsU0FBU3lPLGNBQWMvUztJQUNWLElBQVBHLFNBQVNIO0lBQ2JBLE9BQU9HO0lBQ1BBO0lBQ0EsR0FBR0EsWUFBYTtLQUNkLElBQVUsSUFBRnJZLElBQUlxWSxRQUFRclksUUFBUUEsS0FDMUJrWSxPQUFPbFk7S0FFVDBYLGtCQUFrQlEsT0FBT0E7S0FDekIsSUFBVSxJQUFGbFksT0FBT0EsUUFBUUEsS0FDckJrWSxPQUFPbFk7OztLQUVKLElBQ0ssSUFBRkEsSUFBSXFZLFFBQVFyWSxRQUFRQSxLQUMxQmtZLE9BQU9sWTtJQUdYa1ksY0FBY0E7SUFDZEEsY0FBZUE7SUFDZlIsa0JBQWtCUSxPQUFPQTtJQUNuQixJQUFGelksUUFBUXVEO0lBQ1osSUFBVyxJQUFGaEYsT0FBT0EsT0FBT0E7S0FDckIsSUFBVyxJQUFGZ0MsT0FBT0EsT0FBT0EsS0FDckJQLEVBQUV6QixRQUFRZ0MsS0FBTWtZLE1BQU1sYSxVQUFXZ0M7SUFDckMsT0FBT1A7R0FDVDtHQU1BLFNBQVN5ckIsZUFBZW52QixHQUFHc08sS0FBS3hMO0lBQzlCLElBQUlxWixNQUFNcUcsZ0JBQ05oYyxJQUFJZSwwQkFBMEJ2SDtJQUNsQ2tjLGVBQWVDLEtBQUkzVixXQUFXOEgsS0FBS0EsTUFBTXhMLE1BQU1BO0lBQy9DLE9BQU8wcEIscUJBQXFCMEMsY0FBYy9TO0dBQzVDO0dSK05BLFNBQVNpVCxvQkFBb0JyaEIsSUFBSTlMLEdBQUcrQjtJQUNsQytKLE9BQU9BLFVBQVV5TSxtQkFBbUJ2WSxLQUFLK0I7SUFDekM7R0FDRjtHWGhSQSxTQUFTcXJCLHVCQUF1QjNyQixHQUFFNHJCLFFBQzlCLFNBQ0o7R1IyZkEsU0FBU0Msc0JBQXNCNW5CLElBQUlFLElBQ2pDLE9BQVFGLE1BQU1FLFdBQ2hCO0dBekhBLFNBQVMybkIseUJBQXlCN25CLElBQUlFLElBQ3BDLE9BQU8wbkIsc0JBQXNCMW5CLElBQUdGO0dBQ2xDO0dPN1pBLFNBQVM4bkIscUJBQXNCNXZCLEdBQUV3QjtJQUMvQixHQUFHMkwsTUFBTW5OLE1BQU1tTixNQUFNM0wsSUFBSSxPQUFPcVM7SUFDaEMsR0FBRzdULEtBQUd3QixHQUFHLE9BQU9BO0lBQ2hCLEdBQUd4QixRQUFLLE9BQ0h3QixVQUNPakIsc0JBRURBO0lBRVgsSUFBSXN2QixPQUFPcGQseUJBQXlCelMsSUFDaEM4dkIsTUFBTXB1QjtJQUNWLEdBQUsxQixJQUFFd0IsS0FBT3hCO0tBQ1o2dkIsT0FBTzdGLGVBQWU2RixNQUFNQzs7S0FFNUJELE9BQU9uSyxlQUFlbUssTUFBTUM7SUFDOUIsT0FBT2xjLHlCQUF5QmljO0dBQ2xDO0dPTUEsU0FBU0UsaUJBQ0QsSUFBRjV2QixJQUFJZ00scUJBQ1IsT0FBT2hNLFNBQ1Q7R0c2T0EsU0FBUzZ2QixZQUFZcGlCO0lBQ1YsSUFBTE4sT0FBT0YsaUJBQWlCUTtJQUM1QixPQUFPTixlQUFlQSxrQkFBa0JBO0dBQzFDO0dBSUEsU0FBUzJpQixlQUFlcmlCLFFBQ3RCLE9BQU9vaUIsWUFBWXBpQixRQUNyQjtHbEJ0TEEsU0FBU3NpQixlQUFnQmx3QixHQUFHd0IsR0FBSyxPQUFPeEIsTUFBTXdCLEdBQUk7R2dCN01sRCxTQUFTMnVCLGdDQUNQLFNBQ0Y7R1pxTkEsU0FBU0MsMkJBQThCLFVBQVc7R1F4Q2xELFNBQVNDLGlCQUFpQmhyQjtJQUNmLElBQUxKLE9BQU9xRyxrQkFBa0JqRztJQUM3QixLQUFLSjtLQUNIa0c7SUFFRixPQUFPbEcsbUJBQW1CQTtHQUM1QjtHRjhGQSxTQUFTcXJCLHVCQUF1Qm5tQixJQUFJdEI7SUFDbEMsR0FBR0E7S0FBWTtNQUVYLElBQUkwbkIsS0FBS25tQixlQUNMb21CLE1BQU1ELFlBQVkxbkI7TUFDdEIsV0FBV3FCLFNBQVNzbUIsS0FBSzNuQjs7V0FDbkIyRztJQUVWLFdBQVd0RixTQUFTQyxJQUFJdEI7R0FDMUI7R0dWQSxTQUFTNG5CLGFBQWF0bUIsSUFBR3RCO0lBQ3ZCVixnQkFBZ0JuSCxNQUFNMkc7SUFDdEIzRyxvQkFBc0JiLEdBQUssU0FBZjtJQUNaLEdBQUdnSyxrQkFBa0I4aEI7S0FDbkJqckIsV0FBV2lyQjtZQUNMOWhCLGtCQUFrQjhoQjtLQUN4QmpyQixXQUFXaXJCO21CQUNFQSwyQkFDYmpyQixXQUFXaXJCO0lBQ2JqckIsYUFBYTZIO0dBQ2Y7R0FDQTRuQiwyQ0FBNkMsU0FBYjtHQUNoQ0E7YUFBeUNydkIsUUFBT2lILEtBQUlDLEtBQUlyRjtLQUN0RCxHQUFHakMsU0FBVTtNQUNYO1FBQUdpQyxXQUNHcUYsWUFDQUEsTUFBSXJGLE9BQU9vRjtXQUNYQSxJQUFJQyxNQUFJckY7T0FDWkE7TUFHTSxJQUFKa1csTUFBTXhSLGtCQUFrQjFFO01BQzVCNEUsZ0JBQWdCVixvQkFBb0JrQixNQUFNQyxLQUFLNlEsUUFBUWxXO01BQ3ZEakMsU0FBU21ZO01BQ1Q7O0tBRUY1UixxQkFBcUJ2RztJQWRRO0dBZ0IvQnl2QjthQUF3Q3J2QixRQUFRaUgsS0FBS0MsS0FBS3JGO0tBQ3hEc0UscUJBQXFCdkc7SUFETztHQUc5Qnl2QiwwQ0FDRXp2QixXQUFXa0IsVUFEa0I7R0sxUy9CLFNBQVN3dUIsdUJBQXVCOW5CLE1BQUsrbkI7SUFDbkMsR0FBR0EsT0FBT3p1QixXQUNSeXVCLE1BQU1wTTtJQUVSQSxhQUFhb00sT0FBTy9uQjtJQUNwQixPQUFPK25CO0dBQ1Q7R0FDQSxTQUFTQyxjQUFldnJCLE1BQU13RCxPQUFPZ29CO0lBQzdCLElBQUYzdEI7SUFDSixNQUFNMkYsTUFBTTtLQUNWLE9BQU9BOztRQUNDM0YsY0FBYTs7UUFDYkEsY0FBYTs7UUFDYkEsY0FBYTs7UUFDYkEsY0FBYTs7UUFDYkEsZ0JBQWU7O1FBQ2ZBLFlBQVk7O1FBQ1pBLGNBQWE7O1FBQ2JBLFlBQVc7O1FBQ1hBLGdCQUFlOztLQUV2QjJGLFFBQU1BOztJQUVSLEdBQUczRixZQUFZQTtLQUNicUU7T0FBcUJ6Rix1QkFBdUJ1RDs7SUFDOUMsR0FBR25DLFVBQVVBO0tBQ1hxRTtPQUFxQnpGLHVCQUF1QnVEOztJQUM5QyxJQUFJSixPQUFPcUcsa0JBQWtCakcsT0FDekJ1RCxPQUFPM0QsaUJBQWlCQSxXQUFVL0I7SUFDdEMsT0FBT3d0Qix1QkFBd0I5bkIsTUFBTTFHO0dBQ3ZDO0dBQ0EsQ0FBQTtNQUNFLFNBQVMwRyxLQUFLdUIsSUFBSXRCO09BQ2hCLE9BQUd0RTtpQkFDTStyQix1QkFBdUJubUIsSUFBSXRCO3FCQUd2QjRuQixhQUFhdG1CLElBQUl0QjtNQUNoQztNQUNBNm5CO1FBQXVCOW5COztNQUN2QjhuQjtRQUF1QjluQjtNQUN2QjhuQjtRQUF1QjluQjtLQVZ4Qjs7R2pCaUpELFNBQVNrb0IsZ0JBQWlCM3dCLEdBQUdpQztJQUMzQixHQUFJQSxXQUFXd0gsc0JBQXNCekosSUFBSWlvQjtJQUN6QyxPQUFPdmUsdUJBQXdCMUosR0FBR2lDO0dBQ3BDO0c0Qm5NYTtJQUFUMnVCO01BQVc7UUFDYjtTQUFJQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBV0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQVVKLFNBQVNDLGVBQWUvdEI7U0FDdEIsT0FBUTZ0QixnQkFBbUI3dEIsWUFBYUE7UUFDMUM7UUFFQSxTQUFTZ3VCLFVBQVVoeEIsR0FBRWlDO1NBQ25CLE9BQVEwdUIsZ0JBQWdCM3dCLEdBQUdpQyxZQUFhQTtRQUMxQztRQUVBLFNBQVNndkIsY0FBYzdjLElBQUlwVSxHQUFHbUksS0FBSytvQjtTQUVqQztVQUFJQyxPQUFnQjNXLG1CQUFtQnBHO1VBQ25DZ2QsUUFBZ0I1VyxtQkFBbUJwRztVQUNuQ2lkLFlBQWdCMXZCLHVCQUF1QnlTO1VBQ3ZDa2QsWUFBZ0JsZDtVQUNoQm1kLGVBQWdCbmQ7VUFDaEJvZCxhQUFnQnBkO1VBRWhCcFUsSUFBSTJKLDJCQUEyQjNKO1VBRS9CeXhCO1VBQ0FDO1VBQ0EvYTtVQUNBZ2IsYUFBYXBvQixNQUFNK25CO1VBQ25CTSxrQkFBa0Jyb0IsTUFBTWdvQjtTQUU1QixJQUFVLElBQUZ0dkIsT0FBT0EsSUFBSTB2QixlQUFlMXZCO1VBQ2hDMHZCLE9BQU8xdkI7U0FFVDB2QixrQkFBa0J4cEI7U0FFSixTQUFWMHBCO1VBQ0YsTUFBT2xiLGFBQWM7V0FDVixJQUFMbWIsT0FBT25iO1dBQ1gsR0FBSW1iO1lBQ0ZBLGNBQWNBLGtCQUFrQkE7bUJBRTFCQSxTQUFVLENBQ2hCTCxLQUFLSyxhQUNMM3BCLE1BQU0ycEIsY0FDTjs7VUFHSko7U0FaYztTQWVQLFNBQUxLLEtBQWdCRCxNQUFRbmIsV0FBV21iLE1BQTVCO1NBRUEsU0FBUEU7VUFDRkwsZ0JBQWdCeHBCO1VBQ0wsSUFBUHpELGFBQWE2RSxVQUFVb29CO1VBQzNCanRCO1VBQ0EsSUFBVSxJQUFGekMsT0FBT0EsSUFBSTB2QixlQUFlMXZCLElBQUk7V0FDOUIsSUFBRnFPLElBQUlxaEIsT0FBTzF2QjtXQUNmLEdBQUdxTyxlQUFlQSxXQUNoQkEsVUFBVUE7V0FFWjVMLFdBQVN6QyxTQUFVcU87V0FDbkI1TCxXQUFTekMsYUFBY3FPOztVQUV6QixPQUFPNUw7U0FaSTtTQWVJLFNBQWJ1dEI7VUFDRixHQUFHZixTQUFTLE9BQU9jLGVBQ2RIO1NBRlk7U0FNbkIsUUFBUUgsS0FBTTtVQUNaO1dBQUlRLEtBQUtmLEtBQUtNO1dBQ1ZVLE9BQU9oQixLQUFLTTtXQUNaVyxPQUFPRDtXQUNQbnZCLElBQUloRCxFQUFFbUk7V0FDTmtxQjtVQUVKWjtVQUVBLE9BQVFTO2lCQUNIcEI7YUFDSCxHQUFHM29CLFFBQVFuSSxTQUFVLENBQUNpeUIsZ0JBQWlCO2FBQ3ZDLEdBQUlqdkIsTUFBTW92QixNQUFNanFCLFlBQ1gwcEI7YUFDTDtpQkFDR2Y7YUFDSCxHQUFHM29CLFFBQVFuSSxTQUFVLENBQUNpeUIsZ0JBQWlCO2FBQ3ZDLEdBQUlaLHFCQUFxQnJ1QixPQUFPb3ZCLE1BQU1qcUIsWUFDakMwcEI7YUFDTDtpQkFDR2Y7YUFDSDtrQkFBU3Z1QixNQUFNWix1QkFBdUJ5dkIsTUFBTWdCLFFBQVFud0I7Y0FBT0EsSUFBSU07Y0FBWU4sSUFBSztjQUM5RSxHQUFHa0csUUFBUW5JLFNBQVUsQ0FBQ2l5QixnQkFBaUI7Y0FDdkMsR0FBSWp2QixNQUFNVCxlQUFlTjtlQUN2QmUsSUFBSWhELElBQUltSTtrQkFDTCxDQUFFMHBCLGFBQWE7O2FBRXRCO2lCQUNHZjthQUNIO2tCQUFTdnVCLE1BQU1aLHVCQUF1Qnl2QixNQUFNZ0IsUUFBUW53QjtjQUFPQSxJQUFJTTtjQUFZTixJQUFLO2NBQzlFLEdBQUdrRyxRQUFRbkksU0FBVSxDQUFDaXlCLGdCQUFpQjtjQUN2QyxHQUFJWixxQkFBcUJydUIsT0FBT1QsZUFBZU47ZUFDN0NlLElBQUloRCxJQUFJbUk7a0JBQ0wsQ0FBRTBwQixhQUFhOzthQUV0QjtpQkFDR2Y7YUFDSCxHQUFHM29CLFFBQVFuSSxTQUFVLENBQUNpeUIsZ0JBQWlCO2FBQ3ZDLEdBQUlqQixVQUFVSSxNQUFNZ0IsT0FBT3B2QixJQUFJbUYsWUFDMUIwcEI7YUFDTDtpQkFDR2Y7YUFDSCxHQUFHM29CLFdBQVduSSxFQUFFbUksZ0JBQTBCMHBCLGFBQzFDO2lCQUNHZjthQUNILEdBQUczb0IsTUFBTW5JLFlBQVlBLEVBQUVtSSxZQUFzQjBwQixhQUM3QztpQkFDR2Y7YUFDSCxHQUFHM29CLFNBQVU7Y0FDWCxHQUFHQSxRQUFRbkksU0FBVSxDQUFDaXlCLGdCQUFpQjtjQUN2QyxHQUFHbEIsZUFBZS93QixPQUFPO2NBQ3pCNnhCOztxQkFFTzFwQixRQUFRbkksU0FBVTtjQUN6QixHQUFHK3dCLGVBQWUvd0IsRUFBRW1JLFdBQVc7Y0FDL0IwcEI7O2lCQUVHO2NBQ0gsR0FBR2QsZUFBZS93QixFQUFFbUksYUFBYTRvQixlQUFlL3dCLEVBQUVtSSxPQUFPO2NBQ3pEMHBCOzthQUVGO2lCQUNHZjthQUNIdUIsUUFBUVYsT0FBT1M7YUFDZkwsa0JBQWlCTSw2QkFFR0E7YUFDcEJBLGNBQWNscUI7YUFDZDtpQkFDRzJvQjthQUNIdUIsUUFBUVYsT0FBT1M7YUFDZkwsa0JBQWtCTSwyQkFFRUE7YUFDcEJBLFlBQVlscUI7YUFDWjtpQkFDRzJvQjthQUNIdUIsUUFBUVYsT0FBT1M7YUFDZixHQUFHQyxtQkFBbUJBLGNBQWUsQ0FBQ1IsYUFBYzthQUNwRCxJQUFXLElBQUY1dkIsSUFBSW93QixhQUFhcHdCLElBQUlvd0IsV0FBV3B3QixJQUFJO2NBQzNDLEdBQUdrRyxRQUFRbkksU0FBVSxDQUFDaXlCLGdCQUFpQjtjQUN2QyxHQUFHanlCLEVBQUVpQyxNQUFNakMsRUFBRW1JLEtBQU0sQ0FBQzBwQixhQUFjO2NBQ2xDMXBCOzthQUVGO2lCQUNHMm9CO2FBQ0gsR0FBSUUsVUFBVUksTUFBTWdCLE9BQU9wdkIsSUFBSW1GLE9BQy9CO2lCQUNHMm9CO2FBQ0gsTUFBT0UsVUFBVUksTUFBTWdCLE9BQU9wdkIsSUFDNUJBLElBQUloRCxJQUFJbUksTUFDVjtpQkFDRzJvQjthQUNILEdBQUczb0IsUUFBUW5JLFNBQVUsQ0FBQ2l5QixnQkFBaUI7YUFDdkMsR0FBSWpCLFVBQVVJLE1BQU1nQixPQUFPcHZCO2NBQUksR0FFM0JBLElBQUloRCxJQUFJbUksV0FDRDZvQixVQUFVSSxNQUFNZ0IsT0FBT3B2Qjs7Y0FFN0I2dUI7YUFDTDtpQkFDR2YsZ0JBQ0gsT0FBT2tCO2lCQUNKbEI7YUFDSFcsS0FBS0EsS0FBS1UsTUFDVjtpQkFDR3JCO2FBQ0hpQixnQkFBZ0JOLEtBQUtVLFdBQVdocUIsUUFDaEM7aUJBQ0cyb0I7YUFDSGlCOzRCQUFpQkgsbUJBQ0VRLGFBQ0NSLFlBQVlRO2FBQ2hDUixZQUFZUSxRQUFRanFCO2FBQ3BCO2lCQUNHMm9CO2FBQ0gsR0FBSWMsWUFBWVEsVUFBVWpxQixLQUFLMHBCLGFBQy9CO3FCQUNPLFVBQVVTOzs7U0FHckI7UUFDRjtRQUVBLE9BQU9yQjtPQXROTTs7R0EwT2YsU0FBU3NCLG1CQUFtQm5lLElBQUlwVSxHQUFHbUk7SUFDakMsR0FBR0EsV0FBV0EsTUFBTXNCLHNCQUFzQnpKO0tBQ3hDMkM7SUFDRixNQUFPd0YsU0FBVTtLQUNQLElBQUpTLE1BQU1nb0IsU0FBU3hjLElBQUlwVSxHQUFHbUk7S0FDMUIsR0FBSVMsS0FBSyxPQUFPQTtLQUNoQlQ7O0lBR0Y7R0FDRjtHNUJtbEJBLFNBQVNxcUIsb0JBQW9CeHlCLEdBQzNCLE9BQU9tRSx3QkFBd0JuRSxHQUNqQztHaUJwWUEsU0FBU3l5QixrQkFBa0JobEIsUUFBT3RLLFFBQU9sQyxRQUFPNkI7SUFDckMsSUFBTHFLLE9BQU9GLGlCQUFpQlE7SUFDNUIsS0FBS047S0FBYS9GO0lBQ2xCakUsU0FBU0EsZ0JBQWdCbEMsUUFBUUEsU0FBUzZCO0lBQzFDLEdBQUdxSyxtQkFBbUJoSyxnQkFBZ0JnSyxtQkFBb0I7S0FDbEQsSUFBRnRKLFFBQVFvRCxXQUFXa0csbUJBQW1CaEs7S0FDMUNVLE1BQU1zSjtLQUNOQSxjQUFjdEo7O0lBRWhCLE9BQU9zSjs7T0FFTEEsZ0JBQWdCaEssUUFBUWdLO09BQ3hCQSxvQkFBb0JoSztPQUNwQnlmLGNBQWVuVjtPQUNmOztPQUVBTixnQkFBZ0JoSyxRQUFRZ0s7T0FDeEJBLG9CQUFvQmhLO09BQ3BCLEdBQUdnSyxvQkFBb0JBLG9CQUNyQnlWLGNBQWVuVjtPQUNqQjs7T0FFTyxJQUFIc1ksS0FBSzVpQjtPQUNULEdBQUc0aUIsT0FBUTtRQUNUNVksZ0JBQWdCaEssUUFBUWdLO1FBQ3hCQSxvQkFBb0JoSztRQUNwQixHQUFHZ0ssb0JBQW9CQSxvQkFDckJ5VixjQUFlblY7O1dBRWQ7UUFDSE4sZ0JBQWdCaEssbUJBQW1CNGlCLFNBQVM1WTtRQUM1Q0Esb0JBQW9CNFk7UUFDcEJuRCxjQUFlblY7UUFDZk4sZ0JBQWdCaEssZ0JBQWdCNGlCLFNBQVM1WTtRQUN6Q0Esb0JBQW9CaEssZ0JBQWdCNGlCOztPQUV0Qzs7SUFFRjtHQUNGO0dFREEsU0FBUzJNLFlBQVkza0IsSUFBSU8sS0FBS3hMO0lBQzVCLElBQUk2dkIsYUFDQTlIO0lBQ0osR0FBSTljLGVBQWdCO0tBQ2xCLElBQVcsSUFBRjlMLE9BQU9BLElBQUk4TCxnQkFBZ0I5TCxLQUNsQzRvQixNQUFNQSxNQUFNOWMsUUFBUTlMO0tBQ3RCMHdCOztRQUNLO0tBQ0wsSUFBVyxJQUFGMXdCLE9BQU9BLElBQUs4TCxvQkFBcUI5TCxLQUN4QzRvQixNQUFNQSxNQUFNOWMsUUFBUTlMO0tBQ3RCMHdCLGNBQWM1a0I7S0FDZE8sTUFBTUE7O0lBRVIsR0FBSUEsV0FBV3hMLFdBQVl3TCxNQUFNeEwsTUFBT2lMLFFBQVE0a0I7S0FDOUNod0I7SUFFVyxJQUFUaXdCO0lBQ0osSUFBVyxJQUFGM3dCLE9BQU9BLElBQUk4TCxnQkFBZ0I5TCxLQUNsQzJ3QixTQUFTM3dCLEtBQUs4TCxRQUFROUw7SUFDeEIyd0IsU0FBU0QsZUFBZTd2QjtJQUN4QituQixPQUFPOVgsNkJBQTZCaEY7SUFDdkIsSUFBVDhrQixXQUFXOWtCLGlCQUFpQk8sTUFBTXVjLE1BQU12YyxNQUFNeEwsT0FBTytuQjtJQUN6RCxPQUFPcFcsc0JBQXNCMUcsU0FBU0EsV0FBVzZrQixVQUFVQztHQUM3RDtHRDdnQkEsU0FBU0MsbUJBQW1CbGxCO0lBRTFCLFVBQVU5TCw2QkFBNkJBO0lBQ3ZDO0dBQ0Y7R2NHQSxTQUFTaXhCLHVCQUF1QnJ2QjtJQUM5QixLQUFJQSxTQUFVLENBQ1pBLGlCQUNBO0lBRUY7R0FDRjtHaEN1VEEsU0FBU3N2QixpQkFBaUJoekIsR0FBRWlDLEdBQUVneEI7SUFDNUIsR0FBSWh4QixXQUFXakMsU0FBUzRKO0lBQ3hCO0tBQUk4RSxZQUFZdWtCO0tBQ1p4a0IsWUFBWXdrQjtLQUNaemtCLFlBQVl5a0I7S0FDWjFrQixZQUFZMGtCO0lBQ2hCcHBCLHNCQUF1QjdKLEdBQUdpQyxPQUFPc007SUFDakMxRSxzQkFBdUI3SixHQUFHaUMsT0FBT3VNO0lBQ2pDM0Usc0JBQXVCN0osR0FBR2lDLE9BQU93TTtJQUNqQzVFLHNCQUF1QjdKLEdBQUdpQyxPQUFPeU07SUFDakM7R0FDRjtHY21JQSxTQUFTd2tCLHVCQUF1QixTQUFRO0dLdkJ4QyxTQUFTQyxvQkFBb0JwbEIsSUFBSU0sSUFBSXJLO0lBQzNCLElBQUpzSyxNQUFNUCxVQUFVTTtJQUNwQixHQUFHQyxXQUFXUCxnQkFBZ0JSO0lBQzlCUSxPQUFPTyxTQUFRdEs7SUFDZitKLE9BQU9PLFNBQVF0SztJQUNmK0osT0FBT08sU0FBUXRLO0lBQ2YrSixPQUFPTyxTQUFRdEs7SUFDZjtHQUNGO0doQjVNQSxTQUFTb3ZCLDZCQUFnQyxPQUFPMVMsMEJBQTJCO0dRdlAzRSxTQUFTMlMsaUJBQWtCM3ZCO0lBQ3pCO0tBQUkrQixRQUFRZ2UsS0FBTS9mO0tBQ2RnZ0IsUUFBUWplO0tBQ1JrZSxlQUFlLElBQUtGLEtBQUtBLFNBQVNoZTtLQUNsQ21lLE1BQU14akIsWUFBWXNqQixRQUFRQztJQUM5QjtZQUFnQmxlO1lBQW1CQTtZQUFtQkE7WUFDekNBO1lBQWdCQTtZQUFpQkE7WUFDakNBO1lBQWVtZTs7R0FFOUI7R0o0T0EsU0FBUzBQLG1CQUFtQnp6QixHQUMxQixHQUFJQSxRQUFRQSxRQUFRQSxHQUNwQixPQUFRQSxjQUNWO0dPN0JBLFNBQVMwekIsb0JBQ0QsSUFBRnZ6QixJQUFJZ00scUJBQ1IsT0FBT2hNLElBQ1Q7R0FtRUEsU0FBU3d6Qix1QkFBdUIvZDtJQUN4QixJQUFGelYsSUFBSWdNO0lBQ1JoTSxlQUFleVY7SUFDZnpWLHNCQUFzQnlWO0lBQ3RCO0dBQ0Y7R0E2REEsU0FBU2dlLGlCQUFpQjF3QjtJQUNsQixJQUFGL0MsSUFBSWdNO0lBQ1JoTSxTQUFTK0M7SUFDVC9DLGlCQUFpQkEsc0JBQXNCbUUsd0JBQXdCbkU7SUFDL0Q7R0FDRjtHQWxNQSxTQUFTMHpCLGtCQUFrQm5WO0lBQ25CLElBQUZ2ZSxJQUFJZ007SUFDUixTQUFTMm5CLFFBQVFDO0tBQ1AsSUFBSnhtQixXQUFXd21CO0tBQ2YsTUFBT3htQixnQkFBZ0JBLFlBQVlBO0tBQ25DLE9BQU9BO0lBQ1Q7SUFDQSxJQUNBbk4sSUFBS3NlLG9CQUNMak8sSUFBS2lPLG1CQUNMMWEsSUFBSzBhO0lBQ0x2ZSxVQUFRdWU7SUFDRSxJQUFOc1YsY0FBY0YsUUFBUTF6QixLQUFLMHpCLFFBQVFyakIsS0FBS3FqQixRQUFROXZCO0lBQ3BEN0Qsc0JBQXdCNnpCO0lBQ3hCN3pCLHdCQUF3QjZ6QjtJQUN4QjtHQUNGO0dBNEJBLFNBQVNDLGVBQWVqMEIsR0FBRXdCO0lBQ2xCLElBQUZyQixJQUFJZ007SUFDUmhNLE1BQUlIO0lBQ0pHLE1BQUlxQjtJQUNKO0dBQ0Y7R0FwRkEsU0FBUzB5QixzQkFBc0J0ZSxHQUFFMVU7SUFDekIsSUFBRmYsSUFBSWdNO0lBQ1JoTSxVQUFVeVY7SUFDVnpWLFdBQVdlO0lBQ1hmLGlCQUFpQnlWO0lBQ2pCelYsa0JBQWtCZTtJQUNsQjtHQUNGO0dBbEVBLFNBQVNpekI7SUFDUEYsZUFBZS9uQixpQkFBZ0JBO0lBQy9CZ29CLHNCQUFzQmhvQixxQkFBb0JBO0lBQzFDeW5CLHVCQUF1QnpuQjtJQUN2QmlqQixzQkFBc0JqakI7SUFDdEIwbkIsaUJBQWlCMW5CO0lBQ2pCMm5CLGtCQUFrQjNuQjtJQUNsQnNQLHlCQUF5QnRQO0lBRXpCQTtHQUNGO0dLNHdCQSxTQUFTa29CLDRCQUE0QkM7SUFDbkMsSUFBSWxoQjtJQUNKLEdBQVNraEIsY0FBY2hpQjtLQUFjYztZQUM1QmtoQixjQUFjOWdCO0tBQWNKO1lBQzVCa2hCLGNBQWM3Z0I7S0FBV0w7WUFDekJraEIsY0FBY2p0QjtLQUFZK0w7WUFDMUJraEIsY0FBY0M7S0FBbUJuaEI7WUFDakNraEIsY0FBYzVnQjtLQUFZTjtZQUMxQmtoQixjQUFjM2dCO0tBQWFQO1lBQzNCa2hCLGNBQWM5aEI7S0FBWVk7WUFDMUJraEIsY0FBY3ZSO0tBQWEzUDs7S0FDL0JyUTtJQUNMLE9BQU9xUTtHQUNUO0dBS0EsU0FBU29oQix5QkFBeUJGO0lBQ2hDO0tBQUlsaEIsT0FBT2loQiw0QkFBNEJDO0tBQ25DQTtPQUdBQSxjQUFjdlI7Y0FDVnZRLFdBQVc4aEIsV0FBV0EsZUFBZUE7VUFBYUE7SUFDMUQsT0FBT3pmLHNCQUFzQnpCLFVBQVVraEIsWUFBWUE7R0FDckQ7R0YzVUEsU0FBU0csaUJBQWlCNW1CLFFBQU90RixLQUMvQixPQUFPMGEsY0FBY3BWLFFBQVF0RixLQUMvQjtHWjFoQkEsU0FBU21zQixlQUFlN3BCLEdBQUssY0FBY0EsRUFBRztHaUJpSjlDLFNBQVM4cEIscUJBQXFCeHpCLEdBQUdpRDtJQUMvQixPQUFPeWtCLHNCQUFzQjFuQixHQUFHWSx1QkFBdUJxQztHQUN6RDtHQTJFQSxTQUFTd3dCLGlCQUFpQnp6QixHQUFHaUQ7SUFDM0IsSUFBSWpELElBQUl3ekIscUJBQXFCeHpCLEdBQUVpRCxJQUMzQmpELElBQUltZ0Isb0JBQW9CbmdCO0lBQzVCLE9BQU9BO0dBQ1Q7R2xCMU1BLFNBQVMwekIsMkJBQTJCdHlCLEtBQUt1eUIsSUFBTSxTQUFTO0dVMEx4RCxTQUFTQyxlQUFlOTBCLEdBQUV3QjtJQUNsQixJQUFGckIsSUFBSWdNO0lBQ1JoTTtJQUNBQSxpQkFBaUJBLEtBQUlBLFdBQVdBO0lBQ2hDQSxpQkFBaUJILEdBQUVHLFdBQVdxQjtJQUM5QnJCO0lBQ0FBLE1BQUlIO0lBQ0pHLE1BQUlxQjtJQUNKO0dBQ0Y7R1Q0SUEsU0FBU3V6Qix1QkFBdUI3eEIsR0FDOUIsT0FBUUEsV0FBVUEsTUFBS0EsTUFBTUEsU0FDL0I7R0FiQSxTQUFTOHhCLGtDQUFrQzl4QjtJQUN6QztLQUNFLElBQUlELE1BQU04eEIsdUJBQXVCN3hCLFFBQzdCbUQsV0FBV3FELE1BQU16RztLQUNyQm9ELFVBQVVyRjtLQUNWLElBQVcsSUFBRm9CLE9BQU9BLElBQUlhLEtBQUtiLEtBQUtpRSxLQUFLakUsU0FBT3dPLFVBQVV4TztLQUNwRCxPQUFPeU8sY0FBYzNOLEdBQUdtRCxNQUxuQjtHQU1UO0djbkJBLFNBQVM0dUIsY0FBYy9tQixJQUNyQixPQUFPMlksWUFBWTNZLE9BQ3JCO0doQmxWQSxTQUFTZ25CLDBCQUEwQjV5QjtJQUNqQyxPQUFPQSxzQ0FJTCxrQkFFQTs7R0FFSjtHQUlBLFNBQVM2eUIsc0JBQXNCN3lCO0lBQ3ZCLElBQUZsQztJQUNKLEdBQUdrQyxZQUFhO0tBQ2RsQyxLQUFLa0M7S0FDTDtPQUFHQSxtQkFBbUJBLGtCQUFrQjR5QiwwQkFBMEI1eUI7TUFFaEUsSUFBSTh5QixTQUFTOXlCLFFBQ1QreUI7O01BRUosSUFBSUEsV0FDQUQsU0FBUzl5QjtLQUVmbEM7S0FDQSxJQUFVLElBQUZnQyxJQUFJaXpCLE9BQU9qekIsSUFBSWd6QixlQUFlaHpCLElBQUs7TUFDekMsR0FBR0EsSUFBSWl6QixPQUFPajFCO01BQ1IsSUFBRitELElBQUlpeEIsT0FBT2h6QjtNQUNmLFVBQVUrQjtPQUNSL0QsS0FBSStEO2NBQ0VBLGFBQWEwQztPQUNuQnpHLFdBQVUrRDtxQkFFR0E7T0FDYi9ELFdBQVUrRDs7T0FFUC9EOztLQUVQQTs7WUFDU2tDLGVBQ1RsQyxLQUFLa0M7SUFFUCxPQUFPbEM7R0FDVDtHQUlBLFNBQVNrMUIsOEJBQThCanJCO0lBQ3JDLEdBQUdBLGVBQWVYLFVBQVVXLGVBQWVBLGVBQWdCO0tBQzdDLElBQVJrckIsVUFBVWh2QjtLQUNkLEdBQUdndkI7TUFBUzFrQixjQUFjMGtCLFVBQVVsckI7U0FDL0I7TUFDSDtPQUFJeEgsTUFBTXN5QixzQkFBc0I5cUI7T0FDNUJtckIsVUFBVWp2QjtNQUNkLEdBQUdpdkIsU0FBUzNrQixjQUFjMmtCO01BQzFCdkosMENBQTBDcHBCO01BQzFDLEdBQUd3SCxjQUFjLE1BQU1BOzs7O0tBR3RCLE1BQ0dBO0dBRVY7RzhCMEdBLFNBQVNvckIscUJBQXFCejFCO0lBQzVCLE9BQUdBLEVBQUVnbkIsMkJBQTJCOWtCO0dBSWxDO0dqQ3lCQSxTQUFTd3pCLGlCQUFpQnYxQixHQUFFaUM7SUFDMUIsR0FBSUEsV0FBV2pDLFNBQVM0SjtJQUN4QjtLQUFJMkUsS0FBSzRZLHNCQUF1Qm5uQixHQUFHaUM7S0FDL0J1TSxLQUFLMlksc0JBQXVCbm5CLEdBQUdpQztJQUNuQyxPQUFRdU0sVUFBVUQ7R0FDcEI7R3VCeEpBLFNBQVNpbkIsc0JBQXVCM3hCLEdBQUVHLEdBQ2hDSCxZQUNBQSxPQUFLRyxHQUNMLFNBQ0Y7R2xCaUdBLFNBQVN5eEIsa0JBQWtCNTFCLEdBQUssV0FBU0EsRUFBRztHWWxHNUMsU0FBUzYxQix5QkFBeUJqb0IsUUFBUXZJO0lBQy9CLElBQUxpSSxPQUFPRixpQkFBaUJRO0lBQzVCTixZQUFZakk7SUFDWjtHQUNGO0dWNktBLFNBQVN5d0IsZ0JBQWdCOTFCLEdBQUssT0FBT08sWUFBWVAsR0FBSTtHTzlJckQsU0FBUysxQjtJQUNELElBQUY1MUIsSUFBSWdNO0lBQ1JoTTtJQUNBQTtJQUNBO0dBQ0Y7R2lCbkJBLFNBQVM2MUIseUJBQXlCam9CLE1BQzlCLFNBQ0o7Ry9CMFhBLFNBQVNrb0IsbUJBQW1CaHpCLEtBQzFCSCx1Q0FDRjtHMkJ2ZEEsU0FBU296QixjQUFjdG9CLFFBQU91b0I7SUFDNUIsSUFBSTdaLE1BQU1xRyxnQkFDTnJmLGFBQWE4RDtJQUNqQixHQUFHK3VCO0tBQVcsV0FDRDtNQUNBLElBQUw1ckIsT0FBTzRELG9CQUFvQlAsUUFBT3RLLFdBQVNBO01BQy9DLEdBQUdpSCxXQUFXO01BQ2Q4UixlQUFlQyxLQUFJaFosbUJBQW1CaUgsT0FBT0E7OztLQUUxQyxNQUNDNHJCLFdBQVk7TUFDUDtPQUFMNXJCO1NBQU80RDtXQUFvQlAsUUFBT3RLLFdBQVc2eUIsU0FBUzd5QixnQkFBZ0JBLGdCQUFnQjZ5QjtNQUMxRixHQUFHNXJCLFdBQVdtSDtNQUNkMkssZUFBZUMsS0FBSWhaLG1CQUFtQmlILE9BQU9BO01BQzdDNHJCLFVBQVU1ckI7O0lBR2QsT0FBT29pQixxQkFBcUIwQyxjQUFjL1M7R0FDNUM7R3BCdVBBLFNBQVM4WixpQkFBa0JwMkIsR0FBSyxPQUFPTyxXQUFXUCxHQUFJO0dDMUd0RCxTQUFTcTJCLHlCQUF5Qnh5QixHQUM5QixTQUNKO0dHbUlBLFNBQVN5eUIsbUJBQW1CaGxCLFlBQzFCLE9BQU9LLGtCQUFrQkw7R0FDM0I7R002TUEsU0FBU2lsQixxQkFBcUIzb0IsUUFBT3RLLFFBQU9sQyxRQUFPNkI7SUFDdEMsSUFBUEssU0FBU29FLDBCQUEwQnBFO0lBQ3ZDLE9BQU9zdkIsa0JBQWtCaGxCLFFBQU90SyxRQUFPbEMsUUFBTzZCO0dBQ2hEO0dBY0EsU0FBU3V6QixlQUFlNW9CLFFBQU90SyxRQUFPbEMsUUFBTzZCO0lBQzNDLE9BQU9zekI7YUFBcUIzb0IsUUFBT3RHLHFCQUFxQmhFLFNBQVFsQyxRQUFPNkI7R0FDekU7R2NuYkEsU0FBU3d6QixrQkFBa0Ixb0IsTUFDdkIsT0FBTzhYLGVBQ1g7R0V1Q0EsU0FBUzZRLG1CQUFtQjEyQjtJQUMxQixPQUFHQSxFQUFFZ25CLDJCQUEyQjlrQjs7a0JBR25CbEMsRUFBRWduQjtHQUNqQjtHUnBGQSxTQUFTMlAsMkJBQTJCNW9CO0lBQ2xDLFVBQVU5TDtLQUNSLElBQU0sV0FBV0EsaUNBQW1DdU47SUFFdEQsVUFBVXZOLHlDQUEwQztLQUNsRCxJQUFNLFdBQVdBLGtEQUFtRHVOO0tBQ3BFLElBQU0sV0FBV3ZOLGtEQUFtRHVOO0tBQ3BFLElBQU0sV0FBV3ZOLHFEQUFzRHVOOztJQUV6RXJFO0dBQ0Y7R3BCN0JBLFNBQVN5ckIsdUJBQXVCMXpCLEdBQUVtRCxNQUNoQyxtQkFBa0JuRCxhQUFXbUQ7R0FDL0I7R1lrakJBLFNBQVN3d0Isb0JBQW9CanBCO0lBQzNCLE9BQU9SLGlCQUFpQlE7R0FDMUI7R2F6a0JBLFNBQVNrcEIsa0JBQWtCelosSUFBSUM7SUFDN0IsSUFBSXlaLEtBQUsxWixXQUFXMlosS0FBSzFaLFdBQ3JCamQsSUFBSTAyQixLQUFHQyxRQUNQcndCLFFBQVErQyxNQUFNcko7SUFDbEJzRztJQUNBLElBQUl2RSxPQUFNZ0M7SUFDVixNQUFLaEMsSUFBRTIwQixJQUFHMzBCLEtBQUt1RSxFQUFFdkUsS0FBR2liLEdBQUdqYjtJQUN2QixNQUFLQSxJQUFFL0IsR0FBRStCLEtBQUlnQyxLQUFLdUMsRUFBRXZFLEtBQUdrYixHQUFHbFo7SUFDMUIsT0FBT3VDO0dBQ1Q7R25CckNBLFNBQVNzd0IseUJBQ1AsT0FBTyxJQUFLclQsd0JBQ2Q7R0FLQSxTQUFTc1QsaUJBQ1AsT0FBTzMyQixXQUFXMDJCLDBCQUNwQjtHTThOQSxTQUFTRSwyQkFBMkJ2cEIsUUFBTzFLO0lBQ3pDa0ssaUJBQWlCUSxpQkFBaUIxSztJQUNsQztHQUNGO0dGcE1BLFNBQVNrMEIsa0NBQWtDcnNCLFFBQ3pDLFVBQ0Y7R2ZnaUJBLFNBQVNzc0IsZ0JBQWdCbDNCLEdBQUdpQyxHQUFHL0IsR0FBRzhDO0lBQ2hDLEdBQUk5QztLQUFPLEdBQ0wrQixXQUFXL0IsS0FBS0YsT0FBUUEsWUFBMEJFLEtBQUtGO01BQWMsR0FDbkVnRCxPQUFRO09BQ1ZoRDtPQUNBQTs7VUFDSztPQUNMQSxNQUFNRixnQkFBaUJJLEdBQUdnRSxvQkFBb0JsQjtPQUM5Q2hELE1BQU9FLEtBQUtGOztTQUVUO01BQ0wsR0FBSUEsVUFBc0JzSCw0QkFBNEJ0SDtNQUN0RCxJQUFLRSxLQUFLK0IsR0FBR0EsSUFBSS9CLEdBQUcrQixLQUFLakMsSUFBSWlDLEtBQUtlOztJQUd0QztHQUNGO0dLdkxBLFNBQVNtMEIsYUFBYW4zQjtJQUNwQjhyQjtJQUNBLE9BQU81UixLQUFLL1Ysd0JBQXdCbkU7R0FBSTtHRnRHMUMsU0FBU28zQixpQ0FBa0NyWixPQUN6QyxPQUFPcFI7R0FDVDtHYTZjQSxTQUFTMHFCLDJCQUE0QnJ6QixHQUFHMEU7SUFDdEMsT0FBTzFCLG9CQUFxQnlrQixnQkFBaUJ6bkIsR0FBRzBFO0dBQ2xEO0dFL3JCQSxTQUFTNHVCLHFCQUFxQjFwQixNQUFRLFNBQVU7R1NwQ2hELFNBQVMycEIsZ0JBQWdCdjNCLEdBQUdzTyxLQUFLeEw7SUFDL0IsT0FBT3FzQixlQUFlaG9CLHFCQUFxQm5ILElBQUdzTyxLQUFJeEw7R0FDcEQ7RzNCcTBCQSxTQUFTMDBCLHFCQUFxQjMzQixHQUFLLE9BQU84SiwyQkFBMkI5SixHQUFHO0dBbE54RSxTQUFTNDNCLGtCQUFrQjl2QixJQUFJRSxJQUM3QixHQUFHRixPQUFPRSxJQUFJLFVBQ2QsU0FDRjtHSzdpQkEsU0FBUzZ2Qiw4QkFBOEI5cEIsTUFDckMsU0FDRjtHVzBwQkEsU0FBUytwQiw0QkFBNkIzM0IsR0FBR3NPLEtBQUt4TCxLQUFLa0IsR0FBRzBFO0lBQzlDLElBQUZoRixJQUFJK25CLGdCQUFpQnpuQixHQUFHMEU7SUFDNUIsR0FBSWhGLFdBQVdaLEtBQUtrSTtJQUNwQnRELGdCQUFnQmhFLE1BQU0xRCxHQUFHc08sS0FBSzVLO0lBQzlCO0dBQ0Y7R1kvZUEsU0FBU2swQixvQkFBb0JDLE1BQUtsRyxRQUFPbUc7SUFDdkM7S0FBSUQsT0FBT2wyQix1QkFBdUJrMkI7S0FDOUIvMEIsTUFBTSswQjtLQUNOQyxPQUFPbjJCLHVCQUF1Qm0yQjtLQUM5Qmx2QjtLQUNBN0k7S0FDQWc0QjtLQUNBN0M7S0FBTzhDO0tBQUtoMUI7SUFDaEIsTUFBTWpELElBQUkrQyxJQUFJO0tBQ1ppMUIsTUFBTUYsWUFBWTkzQjtLQUNsQixHQUFHZzRCO01BQ0RudkIsT0FBT212QjtTQUVKO01BQ0gsR0FBR2g0QixLQUFLK0MsS0FBS2tJO01BQ2Irc0IsTUFBTUYsWUFBWTkzQjtNQUNsQixPQUFPZzRCOztTQUVMbnZCLE9BQU9tdkIsS0FDUDs7Ozs7Ozs7Ozs7U0FHQS8wQixNQUFLKzBCO1NBQ0wsR0FBSS8wQixTQUFPMnVCO1VBQ1QzbUI7U0FDRmtxQixRQUFRcFEsZUFBZTZNLFFBQU8zdUI7U0FDOUJnMUIsTUFBTWxULGVBQWU2TSxRQUFRM3VCO1NBQzdCLEdBQUlreUI7VUFDRmxxQjtTQUNGcEMsT0FBS2t2QixXQUFXNUMsT0FBTThDO1NBQ3RCO2lCQUVBcHZCLGNBQWdCbXZCOzs7O0lBSXRCLE9BQU92MUIsdUJBQXVCb0c7R0FBTTtHdkIyRnRDLFNBQVNxdkIsa0JBQW1CajRCO0lBQzFCOHJCO0lBQ0EsT0FBTzVSLEtBQUsvVix3QkFBd0JuRTtHQUFJO0dMb04xQyxTQUFTazRCLGlCQUFpQjF4QixHQUFFM0MsR0FBRWIsR0FBRXlDLEdBQUU0SjtJQUNoQzNILGdCQUFnQlAscUJBQXFCWCxJQUFHM0MsR0FBRWIsR0FBRXlDLEdBQUU0SjtJQUM5QztHQUNGO0dhaGtCQSxTQUFTOG9CLFNBQVMzc0IsTUFBTUMsTUFBTUUsTUFBTUMsTUFBTTlJO0lBQ3hDLElBQVUsSUFBRmIsT0FBT0EsSUFBSWEsS0FBS2IsS0FDdEJ1SixVQUFVQyxPQUFLeEosS0FBSzBKLFVBQVVDLE9BQUszSjtJQUVyQztHQUNGO0dhb0NBLFNBQVNtMkIsZ0NBQWdDQyxLQUFLcGQsTUFBTXFkLFFBQVFuZCxNQUFNclk7SUFDaEUsU0FBU3UxQjtLQUNQMTFCO0lBQ0YsR0FBR0csVUFBVTtJQUNKLElBQUwySSxPQUFPNHNCLFdBQVdwZDtJQUN0QixHQUFHeFAsT0FBTzNJLE1BQU11MUIsaUJBQ2Q5cUI7SUFFRixHQUFHNE4sT0FBT3JZLE1BQU0yRSxxQkFBcUI2d0IsU0FDbkMvcUI7SUFFUSxJQUFONk4sUUFBUWlkLGVBQWU1c0IsTUFBTUEsT0FBSzNJO0lBQ3RDNEUsZ0JBQWdCVixvQkFBb0JvVSxXQUFXa2QsUUFBUW5kLE1BQU1yWTtJQUM3RDtHQUNGO0dmRUEsU0FBU3kxQixlQUFlcnpCO0lBQ2IsSUFBTEosT0FBT3FHLGtCQUFrQmpHO0lBQzdCLEtBQUtKLGtCQUNIa0c7SUFFRixPQUFPbEcsaUJBQWlCQTtHQUMxQjtHVEdBLFNBQVMwekIsMEJBQTBCbnlCLElBQUdyQztJQUNwQ21DLGtCQUFrQnhFLHVCQUF1QjBFLE9BQU9yQztJQUNoRDtHQUNGO0dRaUpBLFNBQVN5MEIsd0JBQXdCdnpCLE1BQUsyQjtJQUNwQyxHQUFHL0U7S0FDREEsNEJBQTRCb0QsTUFBSzJCO1FBQzlCO0tBQ0gsS0FBSS9FLHdCQUF3QkE7S0FDNUJBLG1DQUFrQ29ELGVBQWEyQjs7SUFFakQ7R0FDRjtHQzFKQSxTQUFTNnhCLGtCQUFrQnh6QjtJQUNuQixJQUFGakYsSUFBSXM0QixlQUFlcnpCO0lBQ3ZCakYsT0FBT3NCLG9CQUFvQnRCO0lBQzNCLE9BQU9BO0dBQ1Q7R1g2dEJBLFNBQVMwNEIsa0JBQWtCMzRCLEdBQ3pCLE9BQU9tRSx3QkFBd0JuRSxHQUNqQztHZ0MzMUJBLFNBQVM0NEIsbUJBQW1CbDFCO0lBQzFCLEdBQUdBO0tBQ0RzSDs7S0FDR3RIO0lBQ0w7R0FDRjtHSm1PQSxTQUFTbTFCLGtCQUFrQnprQixJQUFJcFUsR0FBR21JO0lBQ2hDLEdBQUdBLFdBQVdBLE1BQU1zQixzQkFBc0J6SjtLQUN4QzJDO0lBQ0YsTUFBT3dGLE9BQU9zQixzQkFBc0J6SixHQUFJO0tBQzlCLElBQUo0SSxNQUFNZ29CLFNBQVN4YyxJQUFJcFUsR0FBR21JO0tBQzFCLEdBQUlTLEtBQUssT0FBT0E7S0FDaEJUOztJQUdGO0dBQ0Y7R0V4SkEsU0FBUzJ3QixlQUFnQmgyQixLQUFLaTJCO0lBQzVCLEdBQUlqMkIsU0FBU3lLO0lBQ2IsSUFBSXpLLE1BQU1BLGFBQ05lLFFBQVEwRixNQUFNekc7SUFDbEJlO0lBQ0EsSUFBVyxJQUFGNUIsT0FBT0EsSUFBSWEsS0FBS2IsS0FBSzRCLEVBQUU1QixLQUFLODJCO0lBQ3JDLE9BQU9sMUI7R0FDVDtHYmlTQSxTQUFTbTFCLGdCQUFnQnZyQixRQUFPdEYsS0FDOUIsT0FBT3FkLGFBQWEvWCxRQUFPdEYsS0FDN0I7R1AvTEEsU0FBUzh3Qix3QkFBd0IvekI7SUFDL0I7S0FBSUosT0FBT3FHLGtCQUFrQmpHO0tBQ3pCc0IsSUFBSTFCLG9CQUFvQkE7S0FDeEI1RSxRQUFRcUosTUFBTS9DO0lBQ2xCdEc7SUFDQSxJQUFTLElBQUQrQixPQUFJQSxJQUFFdUUsVUFBU3ZFLEtBQ3JCL0IsRUFBRStCLFNBQU9PLHVCQUF1QmdFLEVBQUV2RTtJQUNwQyxPQUFPL0I7R0FDVDtHT3VVQSxTQUFTZzVCLG9CQUFxQnpyQixRQUFPeks7SUFDN0IsSUFBRmhELElBQUl3Qyx1QkFBdUIwQixvQkFBb0JsQjtJQUNuRHF6QixlQUFlNW9CLFFBQU96TjtJQUN0QjtHQUNGO0dkN1JBLFNBQVNtNUIsOEJBQWlDLE9BQU96WSwyQkFBNEI7R29CMU83RSxTQUFTMFksa0JBQW1CdjVCLEdBQUssVUFBU0EsYUFBYTBKLE9BQVE7R0E0SC9ELFNBQVM4dkIsdUJBQXVCNXVCLEdBQUV4SSxHQUFFK0IsR0FBSyxPQUFPeUcsRUFBRXhJLFNBQU8rQixFQUFFO0dsQmlGM0QsU0FBU3MxQixZQUFZejVCO0lBQ2IsSUFBRkEsSUFBSXNFLHdCQUF3QnRFO0lBRWhDLEtBQUlBO0tBQ0Zpc0I7MEJBQWtDanNCOztJQUdwQyxPQUFPcWEsS0FBS3JhO0dBQ2Q7R0UxRUEsU0FBUzA1QixpQkFBaUIxNUIsR0FDeEIsT0FBT08sV0FBV1AsR0FDcEI7RzBCY0EsU0FBUzI1QixxQkFBcUIzNUI7SUFDNUIsR0FBR2lDLG1DQUFtQ0E7S0FBb0IsR0FDckRqQyxnQkFBZ0JpQztNQUFnQyxJQUV2QyxJQUFGbUMsSUFBSThjLHNCQUFzQjljLElBQUlwRSxVQUFVb0UsSUFBSTtPQUMxQyxJQUFKc0csTUFBTTFLLEVBQUVvRTtPQUNaLEdBQUdzRyxlQUFlekksbUJBQW9CO1FBQ3BDeUksTUFBTUE7UUFDTixHQUFHQSxLQUFLMUssZ0JBQWdCMEs7OztJQUtoQzFLLEVBQUVnbkIseUJBQXlCOWtCO0lBQzNCO0dBQ0Y7R0FuQ0EsU0FBUzAzQixtQkFBbUI1NUIsR0FBRzBJO0lBQzdCLEdBQUd6RyxtQ0FBbUNBO0tBQW9CLE1BQ2xEakMsZ0JBQWdCaUMsaUNBQWtDO01BQ3REakM7O1FBQVdpQztvQkFBOEMwM0IscUJBQXFCMzVCLEdBQW5DO01BRTNDLElBQVUsSUFBRm9FLElBQUk4YyxzQkFBc0I5YyxJQUFJcEUsVUFBVW9FLElBQUk7T0FDMUMsSUFBSnNHLE1BQU0xSyxFQUFFb0U7T0FDWixHQUFHc0csZUFBZXpJLG1CQUFvQjtRQUNwQ3lJLE1BQU1BO1FBQ04sR0FBR0EsS0FBSzFLLGNBQWMwSyxLQUFLeEksV0FBV3dJOzs7O0lBSzlDMUssRUFBRWduQix5QkFBeUJ0ZTtJQUMzQjtHQUNGO0dBNUNBLFNBQVNteEIsb0JBQW9CMWdCLEtBQUtDO0lBQzFCLElBQUZsWixJQUFJaVosSUFBSTZOO0lBQ1osR0FBRzltQixNQUFNZ0M7S0FBV3kzQixxQkFBcUJ2Z0I7O0tBQ3BDd2dCLG1CQUFtQnhnQixLQUFLbFo7SUFDN0I7R0FDRjtHcEIxR0EsU0FBUzQ1QixXQUFXOTVCLEdBQ2xCLE9BQU9BLGNBQ1Q7R1hxSkEsU0FBUys1QixrQkFBa0I1MkIsR0FBSyxVQUFTQSxVQUFVQSxTQUFVO0dGc1c3RCxTQUFTNjJCLHFCQUFxQmx5QixJQUFJRTtJQUMvQkYsWUFBYWxCLDZCQUE2QmtCO0lBQzFDRSxZQUFhcEIsNkJBQTZCb0I7SUFDM0MsT0FBUUYsUUFBUUU7R0FDbEI7R0FrVkEsU0FBU2l5QixvQkFBb0JqNkIsR0FBSyxPQUFPMEgsMEJBQTBCMUgsR0FBRztHd0Jub0J0RSxTQUFTazZCLFdBQVlsNkIsR0FBR3dCLEdBQUssVUFBU3FWLGlCQUFpQjdXLEdBQUV3QixnQkFBZ0I7R0l3Q3pFLFNBQVMyNEIsaUJBQWlCNWxCLElBQUdwVSxHQUFFbUk7SUFDN0IsR0FBR0EsV0FBV0EsTUFBTXNCLHNCQUFzQnpKO0tBQ3hDMkM7SUFDTSxJQUFKaUcsTUFBTWdvQixTQUFTeGMsSUFBSXBVLEdBQUdtSTtJQUMxQixPQUFJUyxNQUFZQTtHQUVsQjtHekI1REEsU0FBU3F4QjtJQUNQLEdBQUluNEI7S0FBbUIsR0FDaEJBLGtDQUFtQztNQUMvQixJQUFGMEUsSUFBSTFFLHNDQUFzQ3NRO01BQzlDLFdBQVc1TCxNQUFNQSxNQUFNQSxNQUFNQTs7YUFDcEIxRSw4QkFBK0I7TUFDbEMsSUFBRjBFLFFBQVE0TCxXQUFXdFE7TUFDdkIsV0FBVzBFLE1BQU1BLE1BQU1BLE1BQU1BOztJQUdsQyxJQUFJMHpCLE1BQU0sSUFBS3pXLGtCQUNYNWpCLElBQUlxNkIsbUJBQWU5NUI7SUFDdkIsV0FBVVA7R0FDWjtHZTlMbUIsSUFBZnM2QixxQkFBcUJyNEI7R0FDekIsU0FBU3M0Qix5Q0FBMENDLElBQUk3ekI7SUFDckQsR0FBRzFFLG1DQUFtQzBFLGFBQWFvaEIsT0FBUTtLQUNuRDtNQUFGL25COztTQUFRaUM7bUJBQTBDakMsR0FBR3M2QixzQkFBc0J0NkIsSUFBSXc2QixPQUFPLE9BQTlDO0tBQzVDeDZCLFdBQVcyRyxHQUFFM0c7S0FDYnM2QixtQkFBbUJ0NkI7O0lBRXJCO0dBQ0Y7R0NnWEEsU0FBU3k2QixjQUFjdnNCLElBQUlNLElBQUl6RyxJQUM3QixPQUFPbUcsT0FBT0EsV0FBV00sSUFBR3pHLE1BQzlCO0dBZ0JBLFNBQVMyeUIsb0JBQW9CeHNCLElBQUlNLElBQUlySztJQUMzQixJQUFKc0ssTUFBTVAsVUFBVU07SUFDcEIsR0FBR0MsV0FBV1AsZ0JBQWdCUjtJQUM5QlEsT0FBT08sU0FBUXRLO0lBQ2YrSixPQUFPTyxTQUFRdEs7SUFDZjtHQUNGO0dJclFBLFNBQVN3MkIsd0JBQXdCL3ZCO0lBQy9CcUcsb0JBQW9Cckc7SUFDcEI7R0FDRjtHbEJ0S0EsU0FBU2d3QixlQUFlaHdCLEdBQUUxSCxHQUFLLE9BQU8wSCxFQUFFMUgsSUFBSSxTQUFRO0dnQmtDcEQsU0FBUzIzQixtQkFBb0IxNkI7SUFDM0I7S0FBSUMsSUFBSStwQix5QkFBMEJocUI7S0FDOUJpQyxJQUFJaEM7S0FBTWUsT0FBT2Y7S0FBTStmLE9BQU8vZjtLQUM5QjZDLE1BQU0yRyxzQkFBc0J6SjtLQUM1Qm9xQjtLQUNBcG5CLElBQUtmLElBQUlhLE1BQUs0Ryx1QkFBdUIxSixHQUFHaUM7S0FDeEN3RCxJQUFJd2tCLGlCQUFpQmpuQjtJQUN6QixHQUFJeUMsU0FBU0EsS0FBS3VhLE1BQU1oVjtJQUNoQixJQUFKcEMsTUFBTW5EO0lBQ1YsSUFBS3hELEtBQUlBLElBQUVhLEtBQUliLElBQUs7S0FDbEJlLElBQUkwRyx1QkFBdUIxSixHQUFHaUM7S0FDOUIsR0FBSWUsU0FBUztLQUNieUMsSUFBSXdrQixpQkFBaUJqbkI7S0FDckIsR0FBSXlDLFNBQVNBLEtBQUt1YSxNQUFNO0tBQ3hCcFgsTUFBTW9YLE9BQU9wWCxNQUFNbkQ7S0FDbkIsR0FBSW1ELE1BQU13aEIsV0FBV3BmOztJQUV2QixHQUFJL0ksS0FBS2EsS0FBS2tJO0lBSWRwQyxNQUFNNUgsT0FBTzRIO0lBQ2IsR0FBS29YLGVBQWlCcFgsWUFBWUEsS0FFaENvQztJQUNGLE9BQU9wQztHQUNUO0dYd0JBLFNBQVMreEI7SUFDRSxJQUFMQztJQUNKLElBQVUsSUFBRjM0QixPQUFPQSxJQUFJaUoseUJBQXlCakosSUFBSTtLQUN0QyxJQUFKZ0csTUFBTTJ5QjtLQUNWQSxXQUFXcDRCLHVCQUF1QjBJLGlCQUFpQmpKLFVBQVVnRzs7SUFFL0QsT0FBTzJ5QjtHQUNUO0dNckcyQjtJQUF2QkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dPb0lKLFNBQVNDLG1CQUFtQnJ3QixHQUFFeEksR0FBSyxPQUFPd0ksRUFBRXhJLE9BQUs7R2xCZ1FqRCxTQUFTODRCLGVBQWdCbDdCLEdBQUd3QixHQUFLLFVBQVN4QixLQUFLd0IsR0FBSTtHa0J6VG5ELFNBQVMyNUIsMEJBQTBCbjdCLEdBQUVvQyxHQUFFZ0csS0FBSWxJO0lBQ3pDLEdBQUdGLEVBQUVvQyxVQUFRZ0csSUFBSyxDQUNoQnBJLEVBQUVvQyxTQUFPbEMsR0FDVDtJQUVGO0dBQ0Y7R0d2RkEsU0FBU2s3Qix5QkFBeUJwZCxJQUNoQyxPQUFPQSxRQUNUO0daeVBBLFNBQVNxZCxnQkFBZ0IvZSxLQUFJZ2YsSUFBR0MsSUFBR0MsSUFBR0MsSUFBR3BlLElBQUdDO0lBQzFDLE1BQU1ELEtBQUdDLElBQUlBO0lBQ2JEO0lBQ0FDO0lBQ0E7S0FBSW9lO0tBQVFDO0tBQUtDO0tBQUtDO0tBQVVDO0tBQzVCQztLQUNBMWxCLE9BQVNpSCxLQUFLRCxNQUFNOWMsWUFBWWs3QixLQUFHRCxXQUFVTztLQUM3Q0MsU0FBUzFlLEtBQUtELE1BQU05YyxVQUFVOFY7S0FDOUJqVSxJQUFJaWIsS0FBSzljO0lBQ2IsSUFBVSxJQUFENkQsT0FBSUEsS0FBR2lTLEtBQUlqUyxJQUFJO0tBQ3RCdTNCO01BQU9MLEtBQU1HLEtBQUtsN0IsU0FBUzZCLEtBQU03QixTQUFTbTdCLE1BQU1uN0I7UUFBWWk3QixLQUFLajdCLFNBQVM2QixLQUFNN0IsU0FBU203QixNQUFNbjdCO0tBQy9GbzdCLE9BQU9BO0tBQ1BDO01BQU9MLEtBQU1DLEtBQUtqN0IsU0FBUzZCLEtBQU03QixTQUFTbTdCLE1BQU1uN0I7UUFBWWs3QixLQUFLbDdCLFNBQVM2QixLQUFNN0IsU0FBU203QixNQUFNbjdCO0tBQy9GcTdCLE9BQU9BO0tBQ1AsR0FBSXgzQjtNQUNGa1ksV0FBV3FmLE1BQU1DO2FBQ1JDLGFBQVdGLFFBQVFHLGFBQVdGLE1BQ3ZDdGYsV0FBV3FmLE1BQU1DO0tBRW5CQyxZQUFVRjtLQUNWRyxZQUFVRjtLQUNWeDVCLEtBQUk0NUI7O0lBRU47R0FDRjtHQTRDQSxTQUFTQyxpQkFBaUJqOEIsR0FBRXdCLEdBQUVpNkIsSUFBR0QsSUFBR25lLElBQUdDO0lBQy9CLElBQUZuZCxJQUFJZ007SUFDUmhNO0lBQ0FrN0IsZ0JBQWdCbDdCLFdBQVVILEdBQUVHLFdBQVdxQixHQUFFaTZCLElBQUdELElBQUduZSxJQUFHQztJQUNsRG5kO0lBQ0E7R0FDRjtHSzhNQSxTQUFTKzdCLGNBQWNodUIsSUFBSTJNO0lBQ3pCQSxPQUFPRixtQkFBbUJFO0lBQzFCLElBQUlzaEIsV0FBV3RoQixhQUNYc0ssWUFDQWlYLGVBQ0EzdEI7SUFFSixHQUFJMHRCLFdBQVdqdUI7S0FDYnBMO0lBR0YsR0FBSW9MLGVBQWdCO0tBQ2xCLElBQVcsSUFBRjlMLE9BQU9BLElBQUkrNUIsVUFBVS81QixLQUM1QitpQixNQUFNL2lCLEtBQUt5WSxLQUFLelk7S0FDbEIsTUFBT0EsSUFBSThMLGdCQUFnQjlMLEtBQ3pCK2lCLE1BQU0vaUI7S0FDUmc2QixXQUFXbHVCLGNBQWNpdUI7O1FBQ3BCO0tBQ0wsSUFBVyxJQUFGLzVCLE9BQU9BLElBQUkrNUIsVUFBVS81QjtNQUM1QitpQixNQUFNalgsaUJBQWlCaXVCLFdBQVcvNUIsS0FBS3lZLEtBQUt6WTtLQUM5QyxJQUFXLElBQUZBLE9BQU9BLElBQUk4TCxpQkFBaUJpdUIsVUFBVS81QixLQUM3QytpQixNQUFNL2lCO0tBQ1JnNkIsV0FBV2x1QixpQkFBaUJBLGlCQUFpQml1Qjs7SUFFL0MxdEIsTUFBTVAsVUFBVWlYO0lBQ2hCO0tBQUk5UixPQUFPUyxpQkFBaUJzb0I7S0FDeEJ2bkIsbUJBQW1CM0IsNkJBQTZCaEY7S0FDaEQ4a0I7T0FBVzlrQjtTQUFpQk8sTUFBTW9HLG1CQUFtQnBHLE1BQU00RSxRQUFRd0I7SUFDdkUsT0FBT0Qsc0JBQXNCMUcsU0FBU0EsV0FBV2t1QixVQUFVcEo7R0FDN0Q7R2R4T0EsU0FBU3FKLDZCQUE2Qm41QjtJQUNwQztLQUNFLElBQUlELE1BQU04eEIsdUJBQXVCN3hCLElBQzdCbUQsV0FBV3FELE1BQU16RztLQUNyQixJQUFXLElBQUZiLE9BQU9BLElBQUlhLEtBQUtiLEtBQUtpRSxLQUFLakUsS0FBS3dPLFVBQVV4TztLQUNsRCxPQUFPeU8sY0FBYzNOLEdBQUdtRCxNQUpuQjtHQUtUO0djWkEsU0FBU2kyQixhQUFhcHVCLElBQ3BCLE9BQU9BLFFBQ1Q7R0l4VEEsU0FBU3F1QjtJQUNQLGdCQUFnQnI1QixFQUFHbEQsR0FBSyxPQUFPdVEsY0FBY3JOLFFBQVFsRCxJQUE5QztHQUNUO0dsQitYQSxTQUFTdzhCLHNCQUF1Qng4QixHQUFHd0IsR0FBSyxVQUFTeEIsTUFBTXdCLEdBQUk7R0FqSzNELFNBQVNpN0IsaUJBQWlCdjVCLEdBQUd5RDtJQUMzQixPQUFRQTs7T0FDQSxPQUFPekQ7O09BQ1AsT0FBT0EsRUFBR3lEOztPQUNWLE9BQU96RCxFQUFHeUQsTUFBS0E7O09BQ2YsT0FBT3pELEVBQUd5RCxNQUFLQSxNQUFLQTs7T0FDcEIsT0FBT3pELEVBQUd5RCxNQUFLQSxNQUFLQSxNQUFLQTs7T0FDekIsT0FBT3pELEVBQUd5RCxNQUFLQSxNQUFLQSxNQUFLQSxNQUFLQTs7T0FDOUIsT0FBT3pELEVBQUd5RCxNQUFLQSxNQUFLQSxNQUFLQSxNQUFLQSxNQUFLQTs7T0FDbkMsT0FBT3pELEVBQUd5RCxNQUFLQSxNQUFLQSxNQUFLQSxNQUFLQSxNQUFLQSxNQUFLQTs7SUFFaEQsT0FBT3pELFFBQVFrRCxNQUFNdVUsbUJBQW1CaFU7R0FDMUM7R2E1S0EsU0FBUysxQixvQkFBb0JDLE1BQVEsU0FBVTtHYm5FL0MsU0FBU0Msa0JBQW1CMTVCLEdBQUssT0FBTzJOLGNBQWMzTixRQUFTO0dRNFUvRCxTQUFTMjVCLG1CQUFtQmx4QixNQUFNQyxNQUFNRSxNQUFNQztJQUM1QyxHQUFHSixVQUFVQyxRQUFRRSxVQUFVQyxPQUFPO0lBQ3RDLEdBQUdKLFVBQVVDLFFBQVFFLFVBQVVDLE9BQU87SUFDdEM7R0FDRjtHSTVGQSxTQUFTK3dCLGNBQWVsdkIsUUFBUTVKLEdBQUc1QixHQUFHL0I7SUFDN0IsSUFBSDZOLEtBQUt4RywwQkFBMEIxRDtJQUNuQyxPQUFPbUssb0JBQW9CUCxRQUFRTSxJQUFJOUwsR0FBRy9CO0dBQzVDO0dIc05BLFNBQVMwOEIsbUJBQW1CQztJQUMxQjd4Qjs7R0FDRjtHQVBBLFNBQVM4eEIsd0JBQXdCLFNBQVE7R0lqWnpDLFNBQVNDLHFCQUFxQnI1QixHQUFLLFNBQVM7R1ExRTVDLFNBQVNzNUIsd0JBQXdCajhCLEdBQUc4YztJQUNsQyxPQUFPMkssd0JBQXdCem5CLEdBQUU4YztHQUNuQztHdEJ5Q0EsU0FBU29mLHNCQUF1QnA1QjtJQUFLN0IsNkJBQTZCNkI7SUFBRztHQUFVO0dPVS9FLFNBQVNxNUIsb0JBQXFCO0dSbU85QixTQUFTQztJQUNQLFdBQVczNkIsdUJBQXVCa2U7R0FDcEM7R0FkQSxTQUFTMGM7SUFDUCxXQUFXNTZCO0dBQ2I7R29CMUtBLFNBQVM2NkIsbUJBQW1CeDlCLEdBQzFCLFNBQ0Y7R05KQSxTQUFTeTlCO0lBQ0QsSUFBRnA5QjtJQUNKLElBQVUsSUFBRjhDLE9BQU9BLElBQUlpSyx5QkFBeUJqSztLQUFJO09BQzNDaUssaUJBQWlCakssTUFBTWlLLGlCQUFpQmpLO1VBQWFpSyxpQkFBaUJqSztNQUN2RTlDLFFBQUsrTSxpQkFBaUJqSyxPQUFNOUM7SUFFaEMsT0FBT0E7R0FDVDtHVitLQSxTQUFTcTlCLGlCQUFrQjE5QixHQUFLLE9BQU9PLFdBQVdQLEdBQUk7R1U0U3RELFNBQVMyOUIsYUFBYS92QjtJQUNYLElBQUxOLE9BQU9GLGlCQUFpQlE7SUFDNUIsT0FBT04sY0FBY0E7R0FDdkI7R1N2akJBLFNBQVNzd0IsMEJBQTBCQztJQUMxQixJQUFIeEosU0FBU2p0QixXQUFXeTJCO0lBQ3hCLE9BQU9qcEIsOEJBQThCeWYsWUFBWUE7R0FDbkQ7R0xtRkEsU0FBU3lKLFNBQVM5OUIsR0FBRXdCLEdBQ2xCLEdBQUlBLFFBQVFiLDBCQUNaLE9BQU9YLElBQUV3QixFQUNYO0dGbEZBLFNBQVN1OEIsZUFDUCxTQUNGO0dSZ0NBLFNBQVNDLDBCQUEwQmgrQixHQUFJLE9BQU9BLEVBQUU7R2lCc05oRCxTQUFTaStCLGdCQUFnQjFwQixJQUFHcFUsR0FBRW1JO0lBQzVCLEdBQUdBLFdBQVdBLE1BQU1zQixzQkFBc0J6SjtLQUN4QzJDO0lBQ00sSUFBSmlHLE1BQU1nb0IsU0FBU3hjLElBQUlwVSxHQUFHbUk7SUFDMUIsT0FBSVMsTUFBWUE7R0FFbEI7R1poSkEsU0FBU20xQixnQkFBaUJsZ0IsSUFBSTViLEdBQUtwQixTQUFTZ2QsSUFBSWhkLFNBQVNvQixFQUFHO0dBQzVEODdCO3dCQUN1QixPQUFPamhCLGNBQWNqYyxRQUFPQSxVQUExQzt3QkFDYyxPQUFPaWMsY0FBY2pjLFFBQU9BLHNCQUExQzs7O01BRUwsSUFBSWIsSUFBSWEsUUFBUW9CLElBQUlwQjtNQUNwQkEsU0FBU29CO01BQ1QsT0FBUTZhLGNBQWM5YyxHQUFFaUMsVUFBVzZhLGNBQWM5YyxHQUFFaUM7S0FIN0M7OztNQU1OLElBQUlqQyxJQUFJYSxRQUFRb0IsSUFBSXBCO01BQ3BCQSxTQUFTb0I7TUFDVCxPQUFRNmEsY0FBYzljLEdBQUVpQyxpQkFBa0I2YSxjQUFjOWMsR0FBRWlDO0tBSHBEOzs7TUFNTixJQUFJakMsSUFBSWEsUUFBUW9CLElBQUlwQjtNQUNwQkEsU0FBU29CO01BQ1QsUUFBUzZhLGNBQWM5YyxHQUFFaUMsV0FBZTZhLGNBQWM5YyxHQUFFaUM7ZUFDL0M2YSxjQUFjOWMsR0FBRWlDO2VBQWM2YSxjQUFjOWMsR0FBRWlDOztLQUpqRDs7O01BT04sSUFBSWpDLElBQUlhLFFBQVFvQixJQUFJcEI7TUFDcEJBLFNBQVNvQjtNQUNULE9BQVE2YSxjQUFjOWMsR0FBRWlDLFdBQWU2YSxjQUFjOWMsR0FBRWlDO2VBQ3BENmEsY0FBYzljLEdBQUVpQztlQUFjNmEsY0FBYzljLEdBQUVpQztLQUozQzs7Y0FNVWE7TUFDaEIsSUFBSWIsSUFBSXBCLFFBQ0o4VyxVQUFVcE8sTUFBTXpHO01BQ3BCLElBQVUsSUFBRm1CLE9BQU9BLElBQUluQixLQUFLbUIsS0FDdEIwVCxJQUFJMVQsS0FBSzZZLGNBQWNqYyxRQUFRb0IsSUFBRWdDO01BRW5DcEQsU0FBU29CLElBQUlhO01BQ2IsT0FBTzBwQixxQkFBcUI3VTtLQVB0Qjs7Y0FTaUI3VTtNQUN2QixJQUFJYixJQUFJcEIsUUFDSkksU0FBU0osWUFBWW9CO01BQ3pCcEIsU0FBU29CLElBQUlhO01BQ2IsT0FBT2pDLHFCQUFxQkksUUFBUUEsU0FBUzZCO0tBSmhDO0dGNlBqQixTQUFTazdCLG1CQUFtQjl4QjtJQUNqQixJQUFMM0Q7SUFDSixJQUFTLElBQUR0RyxPQUFLQSxJQUFFaUssV0FBVWpLLElBQUk7S0FDM0JzRyxLQUFLdEc7S0FDTCxJQUFTLElBQURnQyxPQUFLQSxJQUFFaUksVUFBU2pJLElBQUk7TUFDMUI7T0FBSXdHLElBQUl4SSxLQUFHaUssZ0JBQWVqSTtPQUN0QmhFLElBQUlpTSxRQUFRekI7T0FDWjZGLElBQUlwRSxRQUFRekI7T0FDWjVHLElBQUlxSSxRQUFRekI7TUFDaEJsQyxLQUFLdEcsT0FBS2dDLFVBQVFoRSxZQUFZcVEsVUFBVXpNOzs7SUFHNUMsT0FBTzBFO0dBQ1Q7R0s1REEsU0FBUzAxQixvQkFBb0Jsd0IsSUFBSTlMO0lBQ3ZCLElBQUpxTSxNQUFNUCxVQUFVeU0sbUJBQW1Cdlk7SUFDdkMsT0FBTzhMLE9BQU9PO0dBQ2hCO0dSeFVBLFNBQVM0dkIsb0JBQXFCO0dQWDlCLFNBQVNDLCtCQUFrQyxTQUFVO0dHd1lyRCxTQUFTQyxrQkFBbUJ2N0IsS0FBS2hEO0lBQy9CLFNBQVN3K0IsUUFBUXgrQixHQUFFeStCO0tBQ2pCLEdBQUlsK0IsU0FBU1A7TUFBVSxPQUNkQSxVQUFVeStCO1NBQ1o7TUFDQyxJQUFGanZCLElBQUlxYSxTQUFTN3BCO01BQ2pCLEdBQUl3UCxPQUFRO09BQ1ZBO09BQ0F4UCxLQUFLTyxhQUFZaVA7T0FDakJ4UCxLQUFLLElBQUswSixNQUFNOEY7T0FDaEIsR0FBR2l2QixRQUNEeitCLElBQUlBLFVBQVUsSUFBSzBKLE1BQU0rMEI7T0FFM0IsT0FBT3orQjs7O09BRUosT0FBT0EsVUFBVXkrQjs7SUFFMUI7SUFDQSxJQUFJdCtCLEdBQUcrQyxJQUFJSCxrQkFBa0JDLE1BQ3pCMDdCLE9BQVF4N0IsaUJBQWNBO0lBQzFCLEdBQUlsRCxTQUFVQSxjQUFZQSxPQUFNa1MsU0FBVyxDQUFFaFAsY0FBYWxELE1BQUtBO0lBQy9ELEdBQUltTixNQUFNbk4sR0FBSTtLQUFFRztLQUFXK0M7O2NBQ2pCZ0ssU0FBU2xOLEdBQUk7S0FBRUc7S0FBVytDOzs7S0FFbEMsT0FBUUE7O1FBRU4sSUFBSS9DLElBQUlILGdCQUFnQjArQixPQUVwQnQ4QixJQUFJakM7UUFDUixHQUFJQSxTQUFTaUM7U0FDWGpDLElBQUlBLFdBQVlpQyxlQUFlakMsUUFBU2lDO1FBQzFDOztRQUVBakMsSUFBSXErQixRQUFReCtCLEdBQUcwK0IsT0FBTzs7UUFFdEJBLE9BQU9BLE9BQUtBO1FBQ1p2K0IsSUFBSUgsZ0JBQWdCMCtCO1FBQ3BCLElBQUl0NkIsSUFBSWpFLGdCQUNKdVMsUUFBT3ZTLFFBQVFpRTtRQUNuQixHQUFJc08sYUFBWTFTLGFBQWFBLHNCQUFzQjArQixLQUFNO1NBRWpELElBQUZ0OEIsSUFBSWdDO1NBQU8sTUFBT2pFLFNBQVNpQyxXQUFXQTtTQUMxQyxHQUFJakMsU0FBU2lDLFdBQVdBO1NBQ3hCakMsSUFBSUEsV0FBV2lDLFNBQVNqQyxRQUFRaUU7U0FDaENoQyxJQUFJakM7U0FDSixHQUFJQSxTQUFTaUM7VUFDWGpDLElBQUlBLFdBQVlpQyxlQUFlakMsUUFBU2lDO1NBQzFDOztZQUNLO1NBQ0MsSUFBRnNCLElBQUlnN0I7U0FDUixHQUFJaHNCLFFBQVM7VUFBRWhQLEtBQUtnUDtVQUFTdlMsSUFBSUgsVUFBVTBEOzs7VUFDdEMsTUFBT3ZELElBQUlILFVBQVUwRCxJQUFJdkQsV0FBV3UrQixVQUFVaDdCO1NBQ25ELEdBQUlBLEVBQUc7VUFFQyxJQUFGdEIsSUFBSWpDO1VBQWMsTUFBT0EsU0FBU2lDLFdBQVdBO1VBQ2pELEdBQUlqQyxTQUFTaUMsV0FBV0E7VUFDeEJqQyxJQUFJQSxXQUFXaUM7OztRQUduQjs7SUFFSixPQUFPZ0IsdUJBQXVCRixHQUFHL0M7R0FDbkM7R0cxVkEsU0FBU3crQixvQkFBb0J0NUIsTUFBS25DO0lBQ2hDO0tBQUl3QixPQUFPYSxlQUFlRjtLQUN0QkEsT0FBT0Qsb0JBQW9CVjtJQUMvQjJHLDZCQUE0QmhHLGtCQUFnQnlELGFBQWF6RCxNQUFLbkM7SUFDOUQ7R0FDRjtHVm9oQkEsU0FBUzA3QixxQkFBcUI5MkIsSUFBSUUsSUFDaEMsT0FBUUYsS0FBS0UsV0FDZjtHQXBIQSxTQUFTNjJCLHdCQUF3Qi8yQixJQUFJRSxJQUNuQyxPQUFPNDJCLHFCQUFxQjUyQixJQUFJRjtHQUNsQztHcUI1ZEEsU0FBU2czQixTQUFTOStCLEdBQUV3QjtJQUNsQixHQUFJQSxRQUFRYjtJQUNaLE9BQVFYLElBQUV3QjtHQUNaO0dFL0JBLFNBQVN1OUIsYUFBYy8rQjtJQUNyQixJQUFJSyxJQUFJTCxVQUNKMkcsUUFBUStDLE1BQU1ySjtJQUNsQixJQUFVLElBQUYrQixPQUFPQSxJQUFJL0IsR0FBRytCLEtBQU11RSxFQUFFdkUsS0FBS3BDLEVBQUVvQztJQUNyQyxPQUFPdUU7R0FDVDtHVWlGQSxTQUFTcTRCLHdCQUF3QmgvQjtJQUMvQixPQUFHQSxFQUFFZ25CLDJCQUEyQjlrQjs7a0JBR25CNjhCLGFBQWEvK0IsRUFBRWduQjtHQUM5QjtHZjlGQSxTQUFTaVksbUJBQW1CQyxNQUFLQyxZQUFXQyxTQUMxQyxTQUNGO0dmbUdBLFNBQVNDLGtCQUFtQjE0QixHQUMxQixXQUFXb1QsY0FBY0EsV0FDM0I7RzRCakhBLFNBQVN1bEIsd0JBQXdCQyxPQUMvQixTQUNGO0cxQm1JQSxTQUFTQyxnQkFBZ0J4L0IsR0FBSyxTQUFRQSxFQUFHO0dTOFF6QyxTQUFTeS9CLHFCQUFxQnovQixHQUFFd0I7SUFDeEIsSUFBRnJCLElBQUlnTTtJQUNSLE9BQU9oTSwwQkFBMEJILEdBQUV3QjtHQUNyQztHbUIxV0EsU0FBU2srQix1QkFBdUIxL0IsR0FBR29DO0lBQ2pDLEdBQUdBLFNBQVM4ZSx1QkFBdUI5ZSxLQUFLcEM7S0FDdEM4QztJQUNJLElBQUZ0QixJQUFJa2lCLGtCQUFrQjFqQixHQUFHb0M7SUFDN0IsR0FBSVosU0FBUyxPQUFPQTtJQUNkLElBQUYyVixJQUFJM1Y7SUFDUixHQUFJMlYsYUFBYXpOLE9BQU8sV0FBV3ExQixhQUFhNW5CO0lBQ2hELE9BQU8zVjtHQUNUO0dUc0pBLFNBQVNtK0IsY0FBZTMvQixHQUFHd0IsR0FBSyxVQUFTcVYsaUJBQWlCN1csR0FBRXdCLGVBQWU7R3BCL00zRSxTQUFTbytCLCtCQUFpQyxTQUFTO0dGK0ZuRCxTQUFTQyxtQkFBbUJDO0lBQ3BCLElBQUYxL0I7SUFDSixHQUFHMC9CO0tBQU0sSUFDRyxJQUFGMTlCLE9BQU9BLElBQUkwOUIsYUFBYTE5QjtNQUM5QmhDLEVBQUVrRSx3QkFBd0J3N0IsS0FBSzE5QixVQUFVMDlCLEtBQUsxOUI7SUFHbEQsT0FBT2hDO0dBQ1Q7R0FLQSxTQUFTMi9CLHFCQUFzQjcvQixHQUFHaUUsR0FBRzY3QjtJQUNuQyxHQUFJQSxTQUFVO0tBQ0gsSUFBTDM2QixPQUFPMjZCO0tBQ1gsR0FBRy85QjtNQUNEL0IsSUFBSTJRLGNBQWM1TywyQkFBMkJvRDthQUV0QzNFLHlCQUEwQjtNQUNqQyxLQUFJQTtPQUNGQSwwQkFBMEJtL0IsbUJBQW1Cbi9CO01BRXZDLElBQUp1L0IsTUFBTXYvQix3QkFBd0IyRTtNQUNsQyxHQUFHNDZCO09BQ0QvL0IsSUFBSSsvQjs7T0FFSjkwQix1REFBdUQ5Rjs7O0lBSTdEM0UsaUJBQWlCUixTQUFTaUU7SUFDMUIsR0FBRzY3QixVQUFVdC9CLGlCQUFpQnMvQixZQUFZNzdCO0dBQzVDO0dXdURBLFNBQVMrN0IsU0FBU3YwQixNQUFNQyxNQUFNQyxNQUFNQyxNQUFNQyxNQUFNcU0sTUFBTUcsTUFBTUMsTUFBTTJuQjtJQUN0RCxJQUFOam9CO0lBQ0osSUFBVSxJQUFGOVYsT0FBT0EsSUFBSSs5QixNQUFNLzlCO0tBQ3ZCOFY7TUFBU0k7UUFBZTNNLE1BQU1DLE9BQUt4SixHQUFHeUosT0FBS3pKLEdBQUcwSixNQUFNQyxNQUFNcU0sTUFBTUcsTUFBTUMsT0FBS3BXO0lBRTdFLE9BQU84VjtHQUNUO0dBTUEsU0FBU2tvQixXQUFXejBCLE1BQU1DLE1BQU1DLE1BQU1DLE1BQU1DLE1BQU1xTTtJQUN0QyxJQUFORjtJQUNKQSxTQUFTQyxRQUFReE0sTUFBTUMsTUFBTUMsTUFBTUYsTUFBTUMsTUFBTUM7SUFDL0NxTSxTQUFTZ29CLFNBQVN2MEIsTUFBTUMsTUFBTUMsTUFBTUMsTUFBTUMsTUFBTXFNLE1BQU10TSxNQUFNQyxNQUFNcU07SUFDbEUsT0FBT0Y7R0FDVDtHUjFEQSxTQUFTbW9CLG1CQUFtQnJnQyxHQUFLLE9BQU9BLEVBQUc7R3lCdEUzQyxTQUFTc2dDLHVCQUF1QnI5QjtJQUM5QixHQUFJQSxTQUFTeUs7SUFDYixJQUFJekssTUFBTUEsYUFDTmUsUUFBUTBGLE1BQU16RztJQUNsQmU7SUFDQSxJQUFXLElBQUY1QixPQUFPQSxJQUFJYSxLQUFLYixLQUFLNEIsRUFBRTVCO0lBQ2hDLE9BQU80QjtHQUNUO0dadkdBLFNBQVN1OEI7SUFHUDtHQUNGO0dBcUVBLFNBQVNDLHNCQUFzQnRnQyxHQUFLLFNBQVU7R2YrRTlDLFNBQVN1Z0MscUJBQXFCLzlCLEtBQzVCcVgsWUFBWXJYLEtBQ1osU0FDRjtHb0J2RXNCLElBQWxCZytCO0dBQ0osU0FBU0MsdUJBQXdCQyxLQUFLbmdDLEtBQUtvZ0M7SUFDekMsSUFBSUMsUUFBUUYsUUFDUm55QixNQUFNaXlCLGtCQUFrQkc7SUFDNUIsR0FBSXB5QixRQUFRdk07S0FBVyxJQUVWLElBQUZFLElBQUlzK0IsMEJBQTBCdCtCLElBQUl5K0IsU0FBU3orQjtNQUNsRHMrQixrQkFBa0J0K0I7WUFDWDArQixNQUFNcnlCLFNBQVNoTyxLQUFLLE9BQ3RCcWdDLE1BQU1yeUI7SUFFZixJQUFJc3lCLFFBQVFoZ0MsS0FBSysvQixrQkFBa0JoZ0M7SUFDbkMsTUFBT2lnQyxLQUFLaGdDLEdBQUk7S0FDZEQsS0FBT2lnQyxLQUFHaGdDO0tBQ1YsR0FBSU4sTUFBTXFnQyxNQUFNaGdDLFNBQU9DLEtBQUtELGFBQ3ZCaWdDLEtBQUtqZ0M7O0lBRVo0L0Isa0JBQWtCRyxXQUFXRTtJQUU3QixPQUFRdGdDLE9BQU9xZ0MsTUFBTUMsVUFBUUQsTUFBTUM7R0FDckM7R0U3RUEsU0FBU0M7SUFDUDtLQUFJNzlCLElBQUk4b0I7S0FDSjFpQjs7Ozs7Ozs7Ozs7Ozs7O0lBRUosU0FBU3JHLElBQU07SUFDZixJQUFXLElBQUZkLE9BQU9BLElBQUltSCxVQUFVbkgsS0FBSyxLQUFLZSxFQUFFb0csRUFBRW5ILEtBQUtlLEVBQUVvRyxFQUFFbkgsTUFBSWM7SUFDekQsT0FBT0M7R0FDVDtHdEJ5RUEsU0FBUzg5Qix1QkFBdUI1N0IsTUFDOUIsT0FBT29HLGdCQUFpQnBHLE1BQzFCO0djQUEsU0FBUzY3QiwyQkFBNEIvMkI7SUFDMUIsSUFBTHZCLE9BQU8yYixhQUFhcGE7SUFDeEIsR0FBR3ZCLG1CQUFtQnJCLDZCQUE0QjRDO0lBQ2xEO0tBQUlnM0IsU0FBUy82QjtLQUNUZzdCO2NBQ0d4NEI7Z0JBQ0VBLG9CQUFrQkE7WUFDdEJ1Qjs7Ozs7b0JBS1EvQztnQkFDSis1QjtJQUVUL3pCLGlCQUFpQmcwQixjQUFZQTtJQUM3QixPQUFPQTtHQUNUO0dTaElBLFNBQVNDLHlCQUF5Qm56QjtJQUN6QjtLQUFIbW1COztRQUFTanRCO1NBQVc4RyxXQUFXQSxlQUFlQSxZQUFZQTtJQUM5RCxPQUFPMEcsOEJBQThCeWYsWUFBWUE7R0FDbkQ7R25Cb1FBLFNBQVNpTixpQkFBa0J0aEM7SUFDekIsR0FBSUEsT0FBUTtLQUNKLElBQUZ3QixJQUFJakIsV0FBV1A7S0FDbkIsT0FBUUEsSUFBSXdCLFdBQVdBLFFBQU9BOztRQUN6QixDQUNDLElBQUZBLElBQUlqQixVQUFVUCxJQUNsQixPQUFRd0IsSUFBSXhCLFdBQVd3QixRQUFPQTtHQUVsQztHRlZBLFNBQVMrL0IsaUJBQWlCcCtCLEdBQUd3RDtJQUMzQixPQUFRQTs7T0FDQSxXQUFXeEQ7O09BQ1gsV0FBV0EsRUFBR3dEOztPQUNkLFdBQVd4RCxFQUFHd0QsTUFBS0E7O09BQ25CLFdBQVd4RCxFQUFHd0QsTUFBS0EsTUFBS0E7O09BQ3hCLFdBQVd4RCxFQUFHd0QsTUFBS0EsTUFBS0EsTUFBS0E7O09BQzdCLFdBQVd4RCxFQUFHd0QsTUFBS0EsTUFBS0EsTUFBS0EsTUFBS0E7O09BQ2xDLFdBQVd4RCxFQUFHd0QsTUFBS0EsTUFBS0EsTUFBS0EsTUFBS0EsTUFBS0E7O09BQ3ZDLFdBQVd4RCxFQUFHd0QsTUFBS0EsTUFBS0EsTUFBS0EsTUFBS0EsTUFBS0EsTUFBS0E7O0lBRXBELFNBQVM2NkIsSUFBTSxPQUFPcitCLFFBQVFuQyxNQUFNMkYsR0FBSTtJQUN4QzY2QixjQUFjcitCO0lBQ2QsV0FBV3ErQjtHQUNiO0dRdElBLFNBQVNDLGVBQWVweEIsS0FBSzVCLEtBQUt4TDtJQUNoQyxJQUFVLElBQUZiLE9BQU9BLElBQUlhLEtBQUtiO0tBQ3RCaU8sU0FBUzVCLE1BQUlyTSxvQkFBbUJpTyxTQUFTNUIsTUFBSXJNO0dBRWpEO0drQjNLb0IsSUFBaEJzL0I7R0FJSixTQUFTQyxvQkFBb0JoN0IsR0FDM0IrNkIsa0JBQWtCLzZCLEVBQ3BCO0dSNkJBLFNBQVNpN0IsYUFBYzVoQztJQUNyQixHQUFLQSxhQUFhMEosU0FBVTFKLFFBQVNBO0tBQ25DLE9BQU9BO1lBQ0FpSCxpQkFBaUJqSDtLQUN4QjtZQUNPa0gsa0JBQWtCbEg7S0FDekI7WUFDUUEsYUFBYXltQixtQkFBb0J6bUI7S0FDekM7WUFDT0EsS0FBS0EsZUFDWixpQkFFQTtHQUNKO0dBdUpBLFNBQVM2aEMsc0JBQXNCajNCO0lBQzdCLE9BQVFnM0IsYUFBYWgzQixZQUFXQSxPQUFLQTtHQUN2QztHRTVLb0IsSUFBaEJrM0I7R0FDSixTQUFTQyxvQkFBcUI1aEM7SUFDNUIsS0FBSzJoQyx5QkFBeUIzaEMsSUFBSSxPQUFPQTtJQUN6QyxPQUFPQSxVQUFVMmhDO2NBQ05BO2FBQ0FBO0dBQ2I7R04wVUEsU0FBU0UsY0FBYzl6QixJQUNyQixPQUFPMlksWUFBWTNZLE9BQ3JCO0dkTEEsU0FBUyt6QixxQ0FBcUMvK0I7SUFDNUM7S0FDRSxJQUFJRCxNQUFNMk4sa0JBQ052SyxXQUFXcUQsTUFBTXpHO0tBQ3JCLElBQVcsSUFBRmIsT0FBT0EsSUFBSWEsS0FBS2IsS0FBS2lFLEtBQUtqRSxLQUFLd08sVUFBVXhPO0tBQ2xELE9BQU95TyxjQUFjM04sSUFBR2xDLE1BQUtxRixPQUp4QjtHQU1UO0dFeEZBLFNBQVM2N0IsZ0JBQWlCbGlDLEdBQUssT0FBT08sVUFBVVAsR0FBSTtHQTdFcEQsU0FBU21pQyxpQkFBa0JuaUMsR0FBRTBTO0lBQzNCQTtJQUNBLEdBQUlBLFdBQVk7S0FDZEE7S0FDQTFTLEtBQUtPO0tBQ0wsR0FBSW1TLFdBQVksQ0FDZEEsYUFDQTFTLEtBQUtPOztJQUdULEdBQUltUyxhQUFhLENBQ2ZBLGFBQ0ExUyxLQUFLTztJQUVQUCxLQUFLTyxZQUFZbVM7SUFDakIsT0FBTzFTO0dBQ1Q7R081TEEsU0FBU29pQyxrQkFBa0I5bEI7SUFDekJwUSxnQkFBY29RO0lBQ2Q2WDtJQUNBO0dBQ0Y7R1RzU0EsU0FBU2tPLDZCQUE2QkMsT0FBT3AvQjtJQUMzQztLQUNFO01BQUloRCxJQUFJMFE7TUFDSnZLLFdBQVdxRCxNQUFNNDRCO01BQ2pCci9CLE1BQU0xQyxTQUFTcVEsa0JBQWtCMHhCO0tBQ3JDLElBQVcsSUFBRmxnQyxPQUFPQSxJQUFJYSxLQUFLYixLQUFLaUUsS0FBS2pFLEtBQUt3TyxVQUFVeE87S0FDbEQsT0FBT3lPLGNBQWMzTixHQUFHbUQsTUFMbkI7R0FPVDtHYXRQQSxTQUFTazhCLG9CQUFvQngwQixNQUFRLFNBQVU7R2QvQi9DLFNBQVN5MEIsNkJBQWdDLFdBQVk7R1NnVXJELFNBQVNDLGVBQWU5MkIsTUFBTUMsTUFBTUUsTUFBTUMsTUFDeENKLFVBQVVDLFNBQVNFLFVBQVVDLE9BQzdCO0dBQ0Y7R2Q1SEEsU0FBUzIyQixlQUFnQjFpQyxHQUFHd0IsR0FBSyxPQUFPeEIsTUFBTXdCLEdBQUc7R3dCak5qRCxTQUFTbWhDLGlCQUFrQjNpQyxHQUFHUyxLQUFPVCxPQUFPUyxLQUFLLFNBQVU7R0ZpRTNELFNBQVNtaUMsaUJBQWlCNWlDO0lBQ3hCLFFBQVVBLHlCQUNBQTtjQUNBQTtjQUNBQTtHQUNaO0dGaVhBLFNBQVM2aUMsY0FBYzMwQixJQUFJTSxJQUFJekcsSUFBSUUsSUFBSTlEO0lBQ3JDK0osT0FBT0EsV0FBV00sSUFBR3pHLElBQUdFLE1BQU05RDtJQUM5QjtHQUNGO0dkN2NBLFNBQVMyK0IsbUJBQW1CbDRCLEdBQUV6SCxHQUFLLE9BQVF5SCxhQUFhekgsVUFBWTtHYWtFcEUsU0FBUzQvQixzQkFBc0I3aUMsR0FBSyxTQUFVO0dMUjlDLFNBQVM4aUMscUJBQXFCM3lCLEtBQUs1QixLQUNqQyxPQUFPNEIsU0FBUzVCLEtBQ2xCO0dBUkEsU0FBU3cwQixxQkFBcUI1eUIsS0FBSzVCLEtBQUt5MEIsT0FDdEM3eUIsU0FBUzVCLE9BQU95MEIsT0FDaEI7R0FDRjtHYnFTQSxTQUFTQyxrQkFBa0JoakMsR0FBRWlDLEdBQUV3YyxLQUM3QnpULG1DQUNGO0djMVJBLFNBQVNpNEIscUJBQXFCQyxRQUFPenRCLEdBQUUxVTtJQUN6QixJQUFSb2lDLFVBQVVEO0lBQ2QsaUJBQ1dDO29CQUNBRDs7O21CQUdEenRCO29CQUNDMVU7O2tCQUVGeUI7OzttQkFHQ0E7R0FFWjtHQWtMQSxTQUFTNGdDLGlCQUFpQnZqQyxHQUFFd0IsR0FBRWk2QixJQUFHRCxJQUFHbmUsSUFBR0M7SUFDL0IsSUFBRm5kLElBQUlnTTtJQUNSaE07SUFDQWs3QixnQkFBZ0JsN0IsV0FBVUgsR0FBRUcsV0FBV3FCLEdBQUVpNkIsSUFBR0QsSUFBR25lLElBQUdDO0lBQ2xEbmQ7SUFDQTtHQUNGO0dKaENBLFNBQVNxakMsaUJBQWlCQyxLQUFLdHdCLE1BQU1tQixRQUFRb3ZCLFFBQVEzdkIsTUFBTXpMLEtBRXpENkM7R0FDRjtHQUlBLFNBQVN3NEIsMEJBQTBCMXBCLE1BQUsycEI7SUFDdEMsT0FBT0o7YUFBaUJ2cEIsU0FBUUEsU0FBUUEsU0FBUUEsU0FBUUEsU0FBUUE7R0FDbEU7R1N3Z0JBLFNBQVM0cEIsb0JBQW9CQyxPQUFPQyxPQUFPQyxPQUFPN3dCLE1BQU1tQixRQUFRUDtJQUM5RCxHQUFHZ3dCLFNBQVM3d0IsNkJBQTZCQztLQUN2Q3JROztJQUVGLE9BQU84UixzQkFBc0J6QixNQUFNbUIsUUFBUVAsTUFBTSt2QjtHQUNuRDtHWnBnQkEsU0FBU0csZ0JBQWlCamtDLEdBQUssT0FBT08sVUFBVVAsR0FBSTtHT3lEcEQsU0FBU2trQyxpQkFBaUIzMkI7SUFDeEIsSUFBSXBOLElBQUlnTSxxQkFDSjVDLElBQUlwSixzQkFBc0JvTixNQUMxQjQyQixLQUFLNTZCO0lBQ1RwSixtQkFBbUJvTixLQUFJcE4sS0FBSUEsV0FBV0E7SUFDdENBLE9BQU9na0M7SUFDUDtHQUNGO0dBWUEsU0FBU0Msb0JBQW9CNzJCO0lBQzNCMjJCLGlCQUFpQjUvQix3QkFBd0JpSjtJQUN6QztHQUNGO0dBWEEsU0FBUzgyQixrQkFBa0JsaEM7SUFDekIrZ0MsaUJBQWlCNy9CLG9CQUFvQmxCO0lBQ3JDO0dBQ0Y7R0p0TUEsU0FBU21oQyxhQUFhai9CO0lBQ3BCO0tBQUlYLE9BQU9hLGVBQWVGO0tBQ3RCQSxPQUFPRCxvQkFBb0JWO0tBQzNCaXNCO0lBQ0osSUFBVSxJQUFGdnVCLE9BQU9BLElBQUlpSix5QkFBeUJqSjtLQUMxQyxHQUFHaUosaUJBQWlCakosV0FBV2lELE1BQU1zckIsTUFBTXZ1QjtJQUM3QyxHQUFHdXVCLFdBQVV0bEIsd0JBQXdCc2xCO0lBQ3JDO0dBQ0Y7R2dCekhBLFNBQVM0VCw2QkFBNkIvTCxLQUFLcGQsTUFBTUMsS0FBS0MsTUFBTXJZO0lBQzFELFNBQVN1MUI7S0FDUDExQjtJQUNGLFNBQVN1WTtLQUNQdlk7SUFDRixHQUFHRyxVQUFVO0lBQ2IsSUFBSTJJLE9BQU80c0IsV0FBV3BkLE9BQ2xCclAsT0FBT3NQLFdBQVdDO0lBQ3RCLEdBQUcxUCxPQUFPM0ksTUFBTXUxQixpQkFDZDlxQjtJQUVGLEdBQUczQixPQUFPOUksTUFBTW9ZLGlCQUNkM047SUFFUSxJQUFONk4sUUFBUWlkLGtCQUFrQjVzQixNQUFLQSxPQUFLM0k7SUFDeENvWSxhQUFhRSxPQUFNRDtJQUNuQjtHQUNGO0dWK0hBLFNBQVNrcEIsNkJBQTZCcmtDLEdBQUVzTztJQUMzQixJQUFQc0csYUFBYStZLGVBQWdCM3RCLFVBQVVzTyxrQkFBY0EsTUFBSUE7SUFDN0QsT0FBT3dmLDZCQUE2QmxaLFFBQVF0RztHQUM5QztHQ3lPQSxTQUFTZzJCLGtCQUFrQjcyQjtJQUN6QixPQUFPZ00sb0JBQW9Cb1csWUFBWXBpQjtHQUN6QztHSGFBLFNBQVM4MkIsbUJBQW1CcjRCLElBQUdyTSxHQUFFd0I7SUFDekIsSUFBRnJCLElBQUlnTTtJQUNSLEtBQUlFLFNBQVU7S0FDRCxJQUFQZzNCLFNBQVMzcEI7S0FDYjJwQixlQUFlbGpDO0tBQ2ZrakMsZ0JBQWdCbGpDO0tBQ2hCa2pDLHFDQUFxQ2gzQjtLQUMzQixJQUFOczRCLFlBQVkxaUM7S0FDaEIwaUM7O09BQ0V4a0Msb0JBQW9Cd2tDLE9BQU0za0MsR0FBRUcsV0FBV2tNLFlBQVk3SztPQUNuRDZLLFdBQVdzNEI7TUFGRTtLQUlmQSxZQUFZdEI7OztLQUVabGpDLG9CQUFvQmtNLFVBQVNyTSxHQUFFRyxXQUFXa00sWUFBWTdLO0lBRXhEO0dBQ0Y7R1gzSEEsU0FBU29qQyxvQ0FBb0NDLFVBQzNDLFNBQ0Y7R0hyQ0EsU0FBU0MsZ0JBQWlCM2tDLEdBQUdpQyxHQUFHZSxHQUM5QmdJLGlDQUNGO0dVMUNBLFNBQVM0NUIsZUFBZTEvQjtJQUNiLElBQUxKLE9BQU9xRyxrQkFBa0JqRztJQUM3Qkosa0JBQWtCQTtJQUNsQjtHQUNGO0dDL0VBLFNBQVMrL0Isa0JBQWtCbDZCLFFBQVFxTyxLQUFLQztJQUN0QyxJQUFJNnJCLFdBQVczNUIsa0JBQWtCNk4sTUFDN0IrckIsV0FBVzU1QixrQkFBa0I4TjtJQUNqQyxHQUFHNnJCLG1CQUFtQkM7S0FDcEIvNUI7O0lBQ0YsS0FBSzg1QjtLQUNIOTVCO0lBRUYsT0FBTzg1Qix3QkFBd0JuNkIsUUFBUW02QixlQUFlQztHQUN4RDtHTTZZQSxTQUFTQyxnQkFBZ0J2M0IsUUFDdkIsT0FBTyt2QixhQUFhL3ZCLFFBQ3RCO0dkNVFBLFNBQVN3M0IsdUJBQXVCbG5CLE9BQzlCLFNBQ0Y7R0h1TkEsU0FBU21uQixvQkFBb0J2OUIsSUFBSUUsSUFBTSxXQUFTd1ksaUJBQWlCMVksSUFBSUUsSUFBSztHR2xQMUUsU0FBU3M5Qix3QkFBd0JwbkIsT0FDL0IsT0FBT3ZiLDJCQUNUO0dFaUlBLFNBQVM0aUMsZUFBZ0I1K0I7SUFDakIsSUFBRmlFO0lBQ0osSUFBVyxJQUFGeEksT0FBT0EsSUFBSXVFLFVBQVV2RSxJQUFLO0tBQzNCLElBQUZzQixJQUFJaUQsRUFBRXZFO0tBQ1Z3SSxFQUFFdEcsd0JBQXdCWixTQUFTQTs7SUFFckMsT0FBT2tIO0dBQ1Q7R2N0SEEsU0FBUzQ2QixlQUFlcnlCLE1BQU1tQixRQUFRbXhCO0lBQ3BDO0tBQUkxeEIsT0FBTzRHLG1CQUFtQjhxQjtLQUMxQi84QixPQUFPMEssc0JBQXNCRCxNQUFNVyxpQkFBaUJDO0lBQ3hELE9BQU9hLHNCQUFzQnpCLE1BQU1tQixRQUFRUCxNQUFNckw7R0FDbkQ7R0wyS0EsU0FBU2c5QjtJQUNQdjZCO0dBQ0Y7R1B2S0EsU0FBU3c2QixlQUFlM2xDLEdBQUd3QixHQUFHMlY7SUFDNUI7S0FBSXl1QixRQUFRcmxDO0tBQ1JzbEMsWUFBWXRsQztLQUNadWxDLFVBQVV2bEM7S0FDVndsQztLQUNBQyxJQUFJemxDLGNBQWF3bEM7S0FDakJFLElBQUkxbEMsY0FBYXdsQztJQUVyQixTQUFTRyxTQUFVdi9CLEdBQUczQztLQUNwQjtNQUFJbWlDLEtBQUtQLFFBQVFqL0I7TUFDYnkvQixNQUFNRCxNQUFNQSxLQUFLeC9CO01BQ2pCMC9CLE1BQU0xL0IsSUFBSXkvQjtNQUNWdlIsS0FBSytRLFFBQVE1aEM7TUFDYnNpQyxNQUFNelIsTUFBTUEsS0FBSzd3QjtNQUNqQnVpQyxNQUFNdmlDLElBQUlzaUM7TUFDVjVpQyxJQUFJaUQsSUFBSTNDO01BQ1J3TCxJQUFNNDJCLE1BQU1FLE1BQU01aUMsSUFBSzBpQyxNQUFNRyxNQUFNRixNQUFNQyxNQUFPRCxNQUFNRTtLQUMxRCxXQUNLN2lDLE1BQ0E4TDtJQUVQO0lBRUEsU0FBU3VNLElBQUtwVixHQUFHM0M7S0FDZixJQUFJN0QsSUFBSXdHLElBQUkzQyxHQUNSRyxJQUFJaEUsSUFBSXdHLEdBQ1I2SSxJQUFLN0ksS0FBS3hHLElBQUlnRSxNQUFPSCxJQUFJRztLQUM3QixXQUNLaEUsTUFDQXFQO0lBRVA7SUFFQSxTQUFTZzNCLE9BQVF4bUMsR0FBR3dCO0tBQ2xCLE9BQU94QixXQUFXd0IsV0FBV29rQyxRQUFRNWxDLEtBQUs0bEMsUUFBUTVsQyxJQUFJQSxPQUFPQTtlQUFJQSxVQUFVQSxzQkFBb0J3QixxQkFBbUJza0M7ZUFBVzlsQztJQUMvSDtJQUVBO01BQUlBLFdBQVdBLE1BQU1BLEtBQUtBLG1CQUFnQkEsbUJBQ3RDd0I7U0FBV0EsTUFBTUE7U0FBS0E7U0FBZ0JBO0tBQWMsT0FDL0N4QixJQUFJd0IsSUFBSTJWO0lBRWpCLEdBQUlBLFNBQVMsT0FDSm5YLElBQUl3QjtJQUViLEdBQUkyVixNQUFNQSxLQUFLQSxtQkFBZ0JBLGlCQUFjLE9BQ3BDQTtJQUdDLElBQU5zdkI7SUFDSixNQUFPbG1DLFNBQVNQLEtBQUtnbUMsRUFBRyxDQUN0QlMsU0FBU1QsR0FDVGhtQyxLQUFLaW1DO0lBRVAsTUFBTzFsQyxTQUFTaUIsS0FBS3drQyxFQUFHLENBQ3RCUyxTQUFTVCxHQUNUeGtDLEtBQUt5a0M7SUFFUCxHQUFJUSxpQkFBaUIsT0FDWnptQyxJQUFJd0IsSUFBSWlsQztJQUVqQixNQUFPbG1DLFNBQVNQLEtBQUtpbUMsRUFBRyxDQUN0QlEsU0FBU1IsR0FDVGptQyxLQUFLZ21DO0lBRVAsTUFBT3psQyxTQUFTaUIsS0FBS3lrQyxFQUFHLENBQ3RCUSxTQUFTUixHQUNUemtDLEtBQUt3a0M7SUFFUCxHQUFJUyxhQUFhLE9BQ1J0dkI7SUFHVCxJQUFJdXZCLEtBQUsxbUMsR0FDTDJtQyxLQUFLbmxDLEdBQ0xvbEMsS0FBS3p2QixJQUFJc3ZCO0lBRWIsR0FBSWxtQyxTQUFTcW1DLE1BQU1ybUMsU0FBU21tQyxLQUFLQyxVQUFVYixTQUFTLE9BQzNDM3VCO0lBRVQsR0FBSTVXLFNBQVNxbUMsTUFBTXJtQyxTQUFTbW1DLEtBQUtDLE1BQU1iLGNBQWNBO0tBQ25EYyxNQUFNenZCLHFCQUFtQjB1QjtJQUczQjtLQUFJZ0IsS0FBS1gsU0FBU1EsSUFBSUM7S0FDbEJ4bUMsSUFBSTRiLElBQUk4cUIsTUFBTUQ7S0FDZEUsSUFBSS9xQixJQUFJOHFCLE1BQU0xbUM7S0FDZGlDLElBQUkyWixJQUFJNWIsS0FBSzJtQztLQUViNWpDLElBQUlkLE1BQU1va0MsT0FBT3BrQyxLQUFLMGtDO0lBQzFCLEdBQUk1akMsU0FBUyxPQUNKQTtJQUdGLElBQUhxdEIsS0FBS3J0QixJQUFJdWpDO0lBQ2IsR0FBSWxtQyxTQUFTZ3dCLE1BQU1zVixXQUFXLE9BQ3JCdFY7SUFJVCxPQUFPQSxLQUFLaVcsT0FBT3RqQyxJQUFJcXRCLEtBQUtrVyxPQUFPcmtDLE9BQU9xa0M7R0FDNUM7R3dCL1dBLFNBQVNNLDhCQUE4Qmg1QixNQUFRLFNBQVM7R1ZpRHhELFNBQVNpNUIsYUFBYWhuQyxHQUNwQixRQUFXQSxvQkFDQUEsaUJBQ2I7R0ptRUEsU0FBU2luQyx3QkFBd0JyNUIsUUFBTzFFO0lBQzdCLElBQUxvRSxPQUFPRixpQkFBaUJRO0lBQzVCTix5QkFBd0JwRTtJQUN4Qm9FLHlCQUF5QnBFO0lBQ3pCO0dBQ0Y7R0N4SUEsU0FBU2crQixzQkFBeUIsU0FBVTtHSitNNUMsU0FBU0Msa0JBQWtCbm5DLEdBQUV3QixHQUFFb1UsR0FBRTFVO0lBQ3pCLElBQUZmLElBQUlnTTtJQUNSaE0scUJBQXFCSCxHQUFFRyxXQUFXcUIsR0FBRW9VLEtBQUcxVTtJQUN2QztHQUNGO0dkcENBLFNBQVNrbUMsa0JBQWtCam5DLEdBQUVpQztJQUMzQixHQUFJQSxXQUFXd0gsc0JBQXNCekosUUFBUWlvQjtJQUM3QztLQUFJMVosS0FBSzdFLHVCQUF3QjFKLEdBQUdpQztLQUNoQ3VNLEtBQUs5RSx1QkFBd0IxSixHQUFHaUM7SUFDcEMsT0FBUXVNLFVBQVVEO0dBQ3BCO0dLL0JBLFNBQVMyNEIsaUJBQWlCcm5DLEdBQUssT0FBT0EsTUFBSztHWWtXM0MsU0FBU3NuQyxrQkFBbUIxNUIsUUFBT3pKLEdBQUUwRTtJQUM3QixJQUFGMUksSUFBSXlzQiw0QkFBNEJ6b0IsR0FBRzBFO0lBQ3ZDMnRCLGVBQWU1b0IsUUFBT3pOLE1BQUl5SixzQkFBc0J6SjtJQUNoRDtHQUNGO0dBNUJBLFNBQVNvbkMsd0JBQXdCMzVCLFFBQU90SyxRQUFPbEMsUUFBTzZCO0lBQ3pDLElBQVBLLFNBQVMySyx1QkFBdUIzSztJQUNwQyxPQUFPc3ZCLGtCQUFrQmhsQixRQUFPdEssUUFBT2xDLFFBQU82QjtHQUNoRDtHRWxHQSxTQUFTdWtDLGNBQWN0NUIsSUFBSU0sSUFBSXpHLElBQUlFO0lBQ2pDLE9BQU9pRyxPQUFPQSxXQUFXTSxJQUFHekcsSUFBR0U7R0FDakM7R0p4WkEsU0FBU3cvQiwrQkFDUCxTQUNGO0drQmlHQSxTQUFTQyxtQkFBbUJycUIsSUFBSXRWLElBQUl1VixJQUFJclYsSUFBSWhGO0lBRTFDd21CO01BQWdCcE07TUFBSTZELHVCQUF1Qm5aO01BQzNCdVY7TUFBSTRELHVCQUF1QmpaO01BQzNCaEY7SUFDaEI7R0FDRjtHOUJtRnNCLElBQWxCMGtDLG9CQUFvQixJQUFLL2pCO0dBQzdCLFNBQVNna0I7SUFDQyxJQUFKdk4sTUFBTSxJQUFLelc7SUFDZixPQUFPeVcsY0FBY3NOO0dBQ3ZCO0dBSUEsU0FBU0UsK0JBQStCN2pDLEdBQ3RDLE9BQU80akMsZ0JBQ1Q7RzJCbElBLFNBQVNFLGlCQUFrQjVpQixPQUFPQztJQUNoQyxHQUFJQSxlQUFlRCxrQkFBa0J4WDtJQUNyQyxPQUFPd1g7R0FDVDtHbkJtSUEsU0FBUzZpQixtQkFBbUJoNkIsTUFDMUJ2Qyx1QkFDRjtHV3pDQSxTQUFTdzhCLFVBQVcvZixPQUFPZ2dCLE9BQU9DLE1BQU10SDtJQUN0QyxJQUFJdUgsT0FBT0MsSUFBSUMsSUFBSXIxQixJQUFJcUQsS0FBS25WLEdBQUdpRCxHQUFHL0IsR0FBR2E7SUFDckMrUCxLQUFLaTFCO0lBQ0wsR0FBSWoxQixVQUFVQSxVQUFVQTtJQUN4QnFELE1BQU00UjtJQUNOL21CLElBQUlnbkM7SUFDSkMsU0FBU3ZIO0lBQU13SDtJQUFRQztJQUN2QixNQUFPRCxLQUFLQyxNQUFNaHlCLFFBQVM7S0FDekJsUyxJQUFJZ2tDLE1BQU1DO0tBQ1YsR0FBSWprQyxLQUFLQTtNQUFjO1FBQ2xCK1IsZ0JBQWdCL1Isa0JBQWtCK1IsZ0JBQWdCL1Isb0JBQXFCO09BQ2pFLElBQUhnWSxLQUFLakcsZ0JBQWdCL1Isb0JBQW9CQTtPQUM3Q2pELElBQUlpUCxrQkFBbUJqUCxHQUFHaWI7T0FDMUI5Rjs7O2FBR0tsUyxhQUFhdUYsU0FBU3ZGLFVBQVVBO01BQVMsT0FDeENBOztTQUdOakQsSUFBSWlQLGtCQUFrQmpQLEdBQUdpRCxPQUN6QmtTLE9BQ0E7O1NBR0E4eEIsUUFBUUMsTUFBTWprQyxNQUNkOztTQUVBLEdBQUc0Tix5QkFBeUI1TixPQUFPO1NBSzNCLElBQUoxRCxNQUFRMEQscUJBQXVCQTtTQUNuQ2pELElBQUlpUCxrQkFBa0JqUCxHQUFHVDtTQUN6QixJQUFLMkIsT0FBT2EsTUFBTWtCLFVBQVUvQixJQUFJYSxLQUFLYixJQUFLLENBQ3hDLEdBQUlpbUMsTUFBTXIxQixJQUFJLE9BQ2RtMUIsTUFBTUUsUUFBUWxrQyxFQUFFL0I7O1NBRWxCOzthQUVPNkUsaUJBQWlCOUMsR0FBSTtNQUM5QmpELElBQUk0bkIsb0JBQW9CNW5CLEdBQUVpRDtNQUMxQmtTOzthQUNTblAsa0JBQWtCL0MsR0FBSTtNQUMvQmpELElBQUl3ekIscUJBQXFCeHpCLEdBQUVpRDtNQUMzQmtTOztvQkFDZ0JsUyxlQUFnQjtNQUNoQ2pELElBQUkwbkIsc0JBQXNCMW5CLEdBQUVpRDtNQUM1QmtTOzthQUNTbFMsT0FBT0EsT0FBTTtNQUV0QmpELElBQUlpUCxrQkFBa0JqUCxHQUFHaUQsSUFBRUE7TUFDM0JrUzs7b0JBQ2dCbFMsZUFBZ0IsQ0FFaENqRCxJQUFJc1Usb0JBQW9CdFUsR0FBRWlELElBQzFCa1M7O0lBR0puVixJQUFJbWdCLG9CQUFvQm5nQjtJQUN4QixPQUFPQTtHQUNUO0dTblBBLFNBQVNvbkMsb0JBQW9CdjZCLE1BQzNCLE9BQU8yekIsZ0JBQ1Q7Ry9CbVBBLFNBQVM2RyxpQkFBaUJwb0MsR0FBRWlDO0lBQzFCLEdBQUlBLFdBQVdqQyxTQUFTNEo7SUFDeEI7S0FBSTJFLEtBQUs0WSxzQkFBdUJubkIsR0FBR2lDO0tBQy9CdU0sS0FBSzJZLHNCQUF1Qm5uQixHQUFHaUM7S0FDL0J3TSxLQUFLMFksc0JBQXVCbm5CLEdBQUdpQztLQUMvQnlNLEtBQUt5WSxzQkFBdUJubkIsR0FBR2lDO0lBQ25DLE9BQVF5TSxXQUFXRCxXQUFXRCxVQUFVRDtHQUMxQztHT3ZDQSxTQUFTODVCLGlCQUFrQnhvQztJQUN6QixHQUFLQSxZQUFZa04sU0FBU2xOLElBQUksV0FBV0E7SUFDakMsSUFBSnlvQyxNQUFNem9DO0lBQ1YsR0FBSXlvQyxLQUFLem9DLE1BQU1BO0lBQ1AsSUFBSjBTLE1BQU1uUyxpQkFBZ0IwUixnQkFBZ0JqUztJQUMxQ0EsS0FBS08sY0FBWW1TO0lBQ2pCLE1BQU8xUyxRQUFTLENBQ2RBLFFBQ0EwUztJQUVGLE1BQU8xUyxPQUFRLENBQ2JBLFVBQ0EwUztJQUVGLEdBQUkrMUIsS0FBS3pvQyxNQUFNQTtJQUNmLFdBQVdBLEdBQUcwUztHQUNoQjtHUDZCQSxTQUFTZzJCLGtCQUFrQnZvQyxHQUFFaUM7SUFDM0IsR0FBSUEsV0FBV3dILHNCQUFzQnpKLFFBQVFpb0I7SUFDdkMsSUFBRnpoQixRQUFRK0M7SUFDWixJQUFVLElBQUZ0RixPQUFPQSxPQUFPQSxLQUNwQnVDLE1BQU12QyxLQUFLeUYsdUJBQXdCMUosR0FBR2lDLElBQUlnQztJQUU1QyxPQUFPa0ssb0JBQW9CM0g7R0FDN0I7R0svRkEsU0FBU2dpQyxrQ0FBa0NybUM7SUFDekMsR0FBR0EsY0FBYyxXQUFhQTtJQUM5QjtHQUNGO0dZNlpBLFNBQVNzbUMsbUJBQW1CaDdCO0lBQzFCLE9BQU9nTSxvQkFBcUIrakIsYUFBYS92QjtHQUMzQztHTnJSQSxTQUFTaTdCLG9CQUFvQnYzQixZQUMzQixPQUFPRCxtQkFBbUJDO0dBQzVCO0dHa01BLFNBQVN3M0Isd0JBQXdCbmlDO0lBQy9Cd0U7R0FDRjtHZ0J6Y0EsU0FBUzQ5QixxQkFBcUIxckIsSUFBSXRWLElBQUl1VixJQUFJclYsSUFBSWhGO0lBQzVDLEdBQUlnRixNQUFNRjtLQUFJLElBQ0QsSUFBRjNELE9BQU9BLEtBQUtuQixLQUFLbUIsS0FBS2taLEdBQUdyVixLQUFLN0QsS0FBS2laLEdBQUd0VixLQUFLM0Q7O0tBQy9DLElBQ00sSUFBRkEsSUFBSW5CLEtBQUttQixRQUFRQSxLQUFLa1osR0FBR3JWLEtBQUs3RCxLQUFLaVosR0FBR3RWLEtBQUszRDtJQUV0RDtHQUNGO0daMEJBLFNBQVM0a0Msb0JBQW9CajdCLE1BQVEsU0FBVTtHZk0vQyxTQUFTazdCLG9CQUFvQnQyQixHQUFFeE87SUFDN0IsS0FBSWxDLDRCQUNGQTtJQUNGQSwyQkFBMkIwUSxLQUFLeE87SUFDaEM7R0FDRjtHZ0I2TkEsU0FBUytrQyxzQkFBc0JoN0IsSUFBSW9HO0lBQ2pDLEdBQUdwRyxhQUFhb0csUUFBUSxPQUFPcEc7SUFDbEIsSUFBVDZrQjtJQUNKLElBQVUsSUFBRjN3QixPQUFPQSxJQUFJOEwsZ0JBQWdCOUw7S0FBSzJ3QixTQUFTM3dCLEtBQUs4TCxRQUFRQSxpQkFBaUI5TDtJQUMvRSxPQUFPd1Msc0JBQXNCMUcsU0FBU29HLFFBQVF5ZSxVQUFVN2tCO0dBQzFEO0dkOURBLFNBQVNpN0IsWUFBWWhtQyxHQUFHd0Q7SUFDdEIsT0FBUUE7O09BQ0EsV0FBV3hEOztPQUNYLFdBQVdBLEVBQUd3RDs7T0FDZCxXQUFXeEQsRUFBR3dELE1BQUtBOztPQUNuQixXQUFXeEQsRUFBR3dELE1BQUtBLE1BQUtBOztPQUN4QixXQUFXeEQsRUFBR3dELE1BQUtBLE1BQUtBLE1BQUtBOztPQUM3QixXQUFXeEQsRUFBR3dELE1BQUtBLE1BQUtBLE1BQUtBLE1BQUtBOztPQUNsQyxXQUFXeEQsRUFBR3dELE1BQUtBLE1BQUtBLE1BQUtBLE1BQUtBLE1BQUtBOztPQUN2QyxXQUFXeEQsRUFBR3dELE1BQUtBLE1BQUtBLE1BQUtBLE1BQUtBLE1BQUtBLE1BQUtBOztJQUVwRCxTQUFTNjZCLElBQU0sT0FBT3IrQixRQUFRbkMsTUFBTTJaLG1CQUFtQmhVLElBQUs7SUFDNUQ2NkIsY0FBY3IrQjtJQUNkLFdBQVdxK0I7R0FDYjtHUzdDQSxTQUFTNEgsb0JBQ0QsSUFBRmpwQyxJQUFJZ00scUJBQ1IsT0FBT2hNLElBQ1Q7R08vTkEsU0FBU2twQyxnQkFBZ0JybUMsS0FBS1o7SUFDNUIsR0FBSU4sdUJBQXVCa0I7S0FBYyxPQUFPTCw0QkFBMEJQO0lBQ3BFLElBQUZjLElBQUlILGtCQUFrQkM7SUFDMUIsR0FBSVosT0FBTyxHQUFNYyxhQUFjLENBQUVBLGNBQWFkLE1BQUtBLFNBQVVBO0lBQ3ZELElBQUZqQyxJQUFJaUMsV0FBV2M7SUFDbkIsR0FBSUEsWUFBYTtLQUNmQTtLQUNNLElBQUZoRCxJQUFJZ0QsU0FBUy9DO0tBQ2pCLEdBQUlELE9BQU9DLElBQUlGLGdCQUFpQkMsVUFBVUM7O0lBRTVDLE9BQU9pRCx1QkFBdUJGLEdBQUcvQztHQUNuQztHYjhKQSxTQUFTbXBDO0lBQ1BuK0I7R0FDRjtHdUI1SWlDLElBQTdCbytCO0dBQ0osU0FBU0MsNEJBQTRCejdCLE1BQ25DLE9BQU93N0I7R0FDVDtHdkJ1R0EsU0FBU0U7SUFBK0Nwa0IsTUFBTXFrQixNQUFNQyxNQUFNQztJQUM5RCxJQUFOOXlCLFFBQVFzTyw0QkFBNEJDO0lBQ3hDdk8sZUFBZTR5QixNQUFNQyxNQUFNQztJQUMzQixPQUFPOXlCO0dBQ1Q7R2VqRkEsU0FBUyt5QixrQkFBbUI3cEMsR0FBR0c7SUFDN0IsR0FBSUEsVUFBUUEsUUFBUUgsVUFDbEI4QztJQUNGLEdBQUk5QyxZQUFZRyxPQUFPSCxXQUFXRztJQUNsQztHQUNGO0d2Qnd4QkEsU0FBUzJwQyxrQkFBbUIzcEMsR0FDMUIsT0FBTzBGLHdCQUF3QjFGLEdBQ2pDO0dhOXVCQSxTQUFTNHBDLGFBQWExNUIsS0FBSzVCLEtBQ3pCLEdBQUc0QixTQUFTNUIsVUFBVSxVQUN0QixTQUNGO0dWbUtBLFNBQVN1N0IscUJBQXFCOXJCLE9BQzVCLE9BQU92YiwyQkFDVDtHY3JMQSxTQUFTc25DLDRCQUE2QjkvQjtJQUMzQixJQUFMdkIsT0FBTzJiLGFBQWFwYTtJQUN4QixHQUFHdkIsbUJBQW1CckIsNkJBQTRCNEM7SUFDbEQ7S0FBSSsvQixXQUFZdGhDLHdCQUF3QjFHLFlBQWEwRztLQUNqRHc0QjtjQUNHeDRCO2dCQUNFQSxvQkFBa0JBO1lBQ3RCdUI7Ozs7b0JBSVEvQztrQkFDRjhpQztJQUVYOThCLGlCQUFpQmcwQixjQUFZQTtJQUM3QixPQUFPQTtHQUNUO0dhMUZBLFNBQVMrSSxrQkFBa0I5cEM7SUFDbkIsSUFBRnNHO0lBQ0osTUFBT3RHLFFBQVM7S0FDUixJQUFGMkQsSUFBSTNEO0tBQ1IsSUFBVyxJQUFGK0IsT0FBT0EsSUFBSTRCLFVBQVU1QixLQUFLdUUsT0FBTzNDLEVBQUU1QjtLQUM1Qy9CLElBQUlBOztJQUVOLE9BQU9zRztHQUNUO0doQk5BLFNBQVN5akMsbUJBQW1CQztJQUNqQixJQUFMQSxPQUFPL2xDLHdCQUF3QitsQztJQUNuQyxTQUFTbmYsSUFBSTdsQjtLQUNILElBQUowRCxNQUFNc2hDLHVCQUFxQmhsQztLQUMvQixHQUFHMEQsS0FBSyxPQUFPQTtJQUNqQjtJQUNVLElBQU51aEM7SUFDSixNQUFLRCxhQUFXQyxXQUFXRDtJQUNoQixJQUFQdC9CLFNBQVNtZ0I7SUFDYixLQUFJbmdCLFFBQVFBO0lBQ0QsSUFBUHcvQixTQUFTcmY7SUFDYixLQUFJcWYsUUFBUUQ7SUFFTixJQUFGMTBCLElBQUlzVjtJQUNSdFYsSUFBSUEsSUFBRWlVLFNBQVNqVTtJQUNmMDBCLHNCQUFvQjEwQjtJQUVkLElBQUYxVSxJQUFJZ3FCO0lBQ1JocUIsSUFBSUEsSUFBRTJvQixTQUFTM29CO0lBQ2ZvcEMsdUJBQXFCcHBDO0lBRWIsSUFBSnNwQyxNQUFNdm9DLCtCQUE4QjhJLFFBQU91L0I7SUFDL0MsS0FBSUUsS0FBTXIvQjtJQUNWLElBQUlzL0IsTUFBTUQsY0FDTm5ILFNBQVNvSDtJQUNicEgsZUFBZXp0QjtJQUNmeXRCLGdCQUFnQm5pQztJQUNSLElBQUpvYixNQUFNOG1CLHFCQUFxQkMsUUFBT3p0QixHQUFFMVU7SUFDeENvYix5QkFBMEJvdUIsT0FDeEJELFlBQVlDLE1BREU7SUFHaEJ0SSxrQkFBa0I5bEI7SUFDVCxJQUFMcXVCLE9BQU9GO0lBQ1hFO0lBQ0FBLGlCQUFpQnRIO0lBQ2pCO0dBQ0Y7R2dCbUNBLFNBQVN1SCxxQkFBcUIzbkM7SUFDNUIsR0FBSUEsU0FBU3lLO0lBQ2IsSUFBSXpLLE1BQU1BLGFBQ05lLFFBQVEwRixNQUFNekc7SUFDbEJlO0lBQ0EsSUFBVyxJQUFGNUIsT0FBT0EsSUFBSWEsS0FBS2IsS0FBSzRCLEVBQUU1QjtJQUNoQyxPQUFPNEI7R0FDVDtHdkJrTEEsU0FBUzZtQyxnQkFBaUI3cUMsR0FBSyxPQUFPTyxVQUFVUCxHQUFJO0dXeE5wRCxTQUFTOHFDLG9CQUFvQi84QixNQUFRLFNBQVU7R0FYL0MsU0FBU2c5QixrQkFBa0JoOUIsTUFDekIsU0FDRjtHTWdMQSxTQUFTaTlCLGtCQUFtQmhyQyxHQUFHd0I7SUFBSyxVQUFTcVYsaUJBQWlCN1csR0FBRXdCO0dBQWdCO0dwQi9NaEYsU0FBU3lwQyxtQ0FBc0MsV0FBWTtHR2tPM0QsU0FBU0MsaUJBQWlCbHJDLEdBQUssT0FBT08sV0FBV1AsR0FBSTtHUWpPckQsU0FBU21yQyxnQ0FBZ0N0dUIsUUFDdkMsU0FDRjtHUThEQSxTQUFTdXVCLHVCQUF3QmpuQyxHQUFLLGFBQWFBLEdBQUk7R1Z1UnZELFNBQVNrbkMsY0FBYzEvQixNQUFNQyxNQUFNRSxNQUFNQyxNQUN2Q0osVUFBVUMsU0FBU0UsVUFBVUMsT0FDN0I7R0FDRjtHQzRFQSxTQUFTdS9CLG1CQUFtQmovQixJQUFHck0sR0FBRXdCO0lBQy9CO0tBQUlyQixJQUFJZ007S0FDSm8vQjtPQUFNcHJDO1NBQXVCSCxHQUFFRyxXQUFXa00sWUFBWTdLLEdBQUU2SyxVQUFTQTtJQUNyRSxJQUFXLElBQUZqSyxPQUFPQSxJQUFJbXBDLGlCQUFpQm5wQyxPQUFLO0tBQ3hDaUssUUFBUWpLLEtBQUttcEMsU0FBU25wQztLQUN0QmlLLFFBQVFqSyxTQUFPbXBDLFNBQVNucEM7S0FDeEJpSyxRQUFRakssU0FBT21wQyxTQUFTbnBDO0tBQ3hCaUssUUFBUWpLLFNBQU9tcEMsU0FBU25wQzs7SUFFMUI7R0FDRjtHQTZCQSxTQUFTb3BDLGtCQUFrQjdrQztJQUN6QndFO0dBQ0Y7R2lCL2NBLFNBQVNzZ0MsMkJBQTJCOWtDLEdBQ2xDLFdBQVdBLEdBQ2I7R056QkEsU0FBUytrQztJQUNBO0tBQUhDO09BQ0MxcEMsd0JBQXNCQTtVQUN0QkE7O0lBQ0wsT0FBTzBwQyw2QkFBNEJBO0dBQ3JDO0cxQm9PQSxTQUFTQyx1QkFBd0I1ckMsR0FBR0csR0FBSyxPQUFPSCxjQUFjRyxHQUFHO0dvQnNGakUsU0FBUzByQyxlQUFlMzlCLElBQ3RCLE9BQU9BLFVBQ1Q7R2Z0U0EsU0FBUzQ5Qiw2QkFBZ0MsV0FBWTtHMEIwQnJELFNBQVNDLGVBQWdCN21CLE9BQU9DLE9BQU82bUI7SUFDckMsR0FBSzdtQixhQUFlQSxTQUFTRCxrQkFBbUJ4WDtJQUNoRHdYLE1BQU1DLGFBQVM2bUI7SUFBUTtHQUN6QjtHdEJrRUEsU0FBU0MsaUJBQWlCQyxJQUFJQyxJQUFJQyxJQUNoQyxTQUNGO0dScWFBLFNBQVNDLHdCQUF3QnZrQyxJQUFJRSxJQUNuQyxPQUFPZ3lCLHFCQUFxQmh5QixJQUFHRjtHQUNqQztHYS9lQSxTQUFTd2tDLGNBQWNqOEIsS0FBSzVCLEtBQUt5MEIsT0FDL0I3eUIsU0FBUzVCLE9BQU95MEIsT0FDaEIsU0FDRjtHYjZPQSxTQUFTcUosaUJBQWlCcHNDLEdBQUVpQyxHQUFFMGM7SUFDNUIsR0FBSTFjLFdBQVdqQyxTQUFTNEo7SUFDeEIsSUFBSTRFLFlBQVltUSxVQUNacFEsWUFBWW9RO0lBQ2hCOVUsc0JBQXVCN0osR0FBR2lDLE9BQU9zTTtJQUNqQzFFLHNCQUF1QjdKLEdBQUdpQyxPQUFPdU07SUFDakM7R0FDRjtHYzFNQSxTQUFTNjlCLHFCQUFxQnRzQjtJQUM1QixHQUFHQSw0QkFDRCxPQUFPQTtHQUNYO0dHa2VBLFNBQVN1c0IsbUJBQW9CNytCLFFBQU94TDtJQUNsQztLQUFJMFYsT0FBUTFWLGdCQUFlQSxnQkFBZUEsZUFBYUE7S0FDbkRqQyxJQUFJd3NCLHFCQUFxQjdVO0lBQzdCMGUsZUFBZTVvQixRQUFPek47SUFDdEI7R0FDRjtHTW5pQkEsU0FBU3VzQyxrQkFBa0Jqc0MsS0FBSVQ7SUFDN0IsSUFBSUssSUFBSUwsVUFDSjJHLFFBQVErQyxNQUFNcko7SUFDbEJzRyxPQUFPbEc7SUFDUCxJQUFVLElBQUYyQixPQUFPQSxJQUFJL0IsR0FBRytCLEtBQU11RSxFQUFFdkUsS0FBS3BDLEVBQUVvQztJQUNyQyxPQUFPdUU7R0FDVDtHTitJQSxTQUFTZ21DLHFCQUFxQi8rQjtJQUNuQixJQUFMTixPQUFPRixpQkFBaUJRO0lBQzVCLE9BQU9OO0dBQ1Q7R2I5SkEsU0FBU3MvQjtJQUNQOXBDOztHQUNGO0dHc0JBLFNBQVMrcEMsd0JBQXlCN3NDLEdBQUcwK0IsTUFBTW9PO0lBQ3pDLEtBQUs1L0IsU0FBU2xOLEdBQUk7S0FDaEIsR0FBSW1OLE1BQU1uTixJQUFJLE9BQU82RjtLQUNyQixPQUFPQSx3QkFBMEI3Rjs7SUFFMUIsSUFBTG1CLE9BQVFuQixjQUFVQSxPQUFNa1MsZUFBYWxTO0lBQ3pDLEdBQUdtQixNQUFNbkIsTUFBS0E7SUFDTixJQUFKMFM7SUFDSixHQUFJMVM7S0FBUTtZQUNIQTtLQUFPLE1BQ1BBLFNBQVMwUyxhQUFjLENBQUUxUyxRQUFRMFM7O0tBQ25DLE1BQ0UxUyxPQUFRLENBQUVBLFFBQVEwUztJQUUzQixJQUFJcTZCLFdBQVdyNkIsb0JBQ1hzNkI7SUFDSixHQUFJN3JDO0tBQU02ckM7O0tBQ0wsT0FDSUY7O1FBQ1lFLGdCQUFnQjs7UUFDaEJBLGdCQUFnQjtnQkFDMUI7O0lBR1gsR0FBSXRPLGFBQWFBLFVBQVc7S0FFbEIsSUFBSnVPLE1BQU0xc0MsWUFBV20rQjtLQUNyQjErQixJQUFJTyxXQUFXUCxJQUFJaXRDLE9BQU9BOztJQUVsQixJQUFOQyxRQUFRbHRDO0lBQ1osR0FBRzArQixVQUFVO0tBQ0gsSUFBSi9OLE1BQU11YztLQUNWLEdBQUd2YztNQUNEdWMsZUFBZWp0QyxnQkFBZ0J5K0I7U0FFNUI7TUFDTSxJQUFMcnJCLE9BQU9zZCxVQUFNK047TUFDakIsR0FBR3dPLGVBQWU3NUI7T0FDaEI2NUIsU0FBU2p0QyxnQkFBZ0JvVCxPQUFPNjVCOztPQUVoQ0EsUUFBUUEsZ0JBQWU3NUI7OztJQUc3QixPQUFPeE47YUFBeUJtbkMsa0JBQWtCRSxjQUFjSCxXQUFXcjZCO0dBQzdFO0dRaEhBLFNBQVN5NkIsK0JBQStCQyxPQUFPQyxlQUM3QyxTQUNGO0dWdVdBLFNBQVNDLGtDQUFrQ2hMLE9BQU9wL0I7SUFDaEQ7S0FDRSxJQUFJbUQsV0FBV3FELE1BQU00NEIsWUFDakJyL0IsTUFBTTFDLFNBQVNxUSxrQkFBa0IweEI7S0FDckNqOEIsVUFBVXJGO0tBQ1YsSUFBVyxJQUFGb0IsT0FBT0EsSUFBSWEsS0FBS2IsS0FBS2lFLEtBQUtqRSxTQUFPd08sVUFBVXhPO0tBQ3BELE9BQU95TyxjQUFjM04sR0FBR21ELE1BTG5CO0dBT1Q7R010TEEsU0FBU2tuQyxtQkFBbUJsb0M7SUFDakIsSUFBTEosT0FBT3FHLGtCQUFrQmpHO0lBQzdCLEtBQUtKO0tBQ0hrRztJQUVGLE9BQU9sRyxxQkFBcUJBO0dBQzlCO0dQcktBLFNBQVN1b0Msc0JBQXVCdHZCO0lBQVMsT0FBTy9iO0dBQW9DO0dEeVFwRixTQUFTc3JDLDhCQUE4QixTQUFRO0dBbEkvQyxTQUFTQyxjQUFlL21DLEdBQ3RCLE9BQU9vVCxVQUNUO0dnQmdVQSxTQUFTNHpCLGFBQWF6L0IsSUFBSS9KLEdBQ3hCK0osUUFBUS9KLElBQ1IsU0FDRjtHWnBUQSxTQUFTeXBDLGdCQUFpQjV0QztJQUN4QixHQUFJa04sU0FBVWxOLEdBQUk7S0FDUixJQUFKeW9DLFVBQVN6b0M7S0FDYkEsSUFBSU8sU0FBU1A7S0FDYixJQUFJb0MsSUFBSTdCLFdBQVlQLElBQ2hCa0QsSUFBSWxELElBQUlvQztLQUNaLEdBQUlxbUMsSUFBSyxDQUFFcm1DLE1BQUtBLEdBQUdjLE1BQUtBO0tBQ3hCLFdBQVdBLEdBQUdkOztJQUVoQixHQUFJK0ssTUFBT25OLElBQUksV0FBVzZULEtBQUtBO0lBQy9CLGVBQWE3VCxHQUFHQTtHQUNsQjtHV2xLQSxTQUFTNnRDLGNBQ1AsNENBQ0Y7R1h3TUEsU0FBU0MsbUJBQW9COXRDLEdBQUd3QjtJQUM5QixHQUFJeEIsTUFBTXdCLEdBQUc7SUFDYixHQUFJeEIsSUFBSXdCLEdBQUc7SUFDWCxHQUFJeEIsSUFBSXdCLEdBQUc7SUFDWCxHQUFJeEIsTUFBTUEsR0FBRztJQUNiLEdBQUl3QixNQUFNQSxHQUFHO0lBQ2I7R0FDRjtHUHlHQSxTQUFTdXNDLGtCQUFrQjV0QyxHQUFFaUMsR0FBRWd4QixLQUM3QmpvQixtQ0FDRjtHb0IzVUEsU0FBUzZpQyxrQkFBa0JDLFFBQVFDLEtBQUtuaEIsS0FBS3JxQjtJQUUzQztLQUFJeXJDO0tBUUFDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBRUFDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBRUFDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBR0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBRUFDO0tBQ0FDO0lBR0osU0FBU0MsSUFBSTd3QztLQUNMLElBQUZHLElBQUl3Qyx1QkFBdUIzQztLQUMvQncyQixrQkFBa0JyMkIsTUFBTXlKLHNCQUFzQnpKO0lBQ2hEO0lBRUEsU0FBUzJ3QyxXQUFXQyxPQUFPaGQ7S0FFakIsSUFBSnhtQixNQUFNakosd0JBQXdCeXNDO0tBQ2xDLEdBQUl4akMsa0JBQ0Y7S0FDRixPQUFPQSxrQkFBa0J3bUI7SUFDM0I7SUFFQSxTQUFTaWQsWUFBWTl3QixPQUFPK3dCO0tBRTFCLElBQUlDLE9BQU8vOUI7S0FDWCxHQUFJODlCLGVBQWV2bkMsTUFBTztNQUN4QnduQyxRQUFRSixXQUFXN0MsT0FBTzJDLGtCQUFrQks7TUFDNUMsVUFBV0E7T0FDVDk5QixZQUFZODlCO3FCQUNFQTtPQUNkOTlCLE9BQU84OUI7Y0FDQUEsa0JBQWtCcHFDO09BQ3pCc00sT0FBT3JSLHVCQUF1Qm12Qzs7T0FFOUI5OUI7TUFDRjA5QixlQUFlM3dCLDBCQUEwQmd4QixjQUFjLzlCOztTQUNsRDtNQUNMKzlCLFFBQVFKLFdBQVc3QyxPQUFPMEMsa0JBQWtCTTtNQUM1Q0osZUFBZTN3QiwwQkFBMEJneEI7O0lBRTdDO0lBRUEsS0FBS2pELGFBQWM7S0FDakJBLGdCQUFnQmh2QixlQUFnQmd2QixPQUFPa0M7S0FDdkNsQyxnQkFBZ0JodkIsZUFBZ0JndkIsT0FBT29DO0tBQ3ZDcEMsZUFBZ0JodkIsZUFBZ0JndkIsT0FBT3lDO0tBQ3ZDekMsZ0JBQWdCaHZCLGVBQWdCZ3ZCLE9BQU9xQztLQUN2Q3JDLGVBQWdCaHZCLGVBQWdCZ3ZCLE9BQU93QztLQUN2Q3hDLGFBQWdCaHZCLGVBQWdCZ3ZCLE9BQU9pQztLQUN2Q2pDLGFBQWdCaHZCLGVBQWdCZ3ZCLE9BQU9nQztLQUN2Q2hDLGdCQUFnQmh2QixlQUFnQmd2QixPQUFPc0M7S0FDdkN0QyxlQUFnQmh2QixlQUFnQmd2QixPQUFPbUM7O0lBR3pDO0tBQUlybkM7S0FBUzdJO0tBQUdpeEM7S0FBSUM7S0FBSUM7S0FHcEJDLEtBQUtwRCxJQUFJMEI7S0FDVDF2QixRQUFRZ3VCLElBQUkyQjtLQUNaMEIsVUFBVXJELElBQUk0QjtJQUVsQjtJQUFLO0tBQVM7S0FDUCxPQUFPL2lCOztRQUVWN00sV0FDQXF4Qjs7UUFJQXJ4QyxJQUFJK3RDLGNBQWMvdEI7UUFDbEIsR0FBSWhnQixPQUFRLENBQUU2c0IsTUFBTXloQixRQUFRO1FBQzVCLEdBQUlOLElBQUltQixvQkFBcUIsQ0FBRXRpQixNQUFNc2hCLFdBQVc7UUFDaER0bEMsTUFBTTBsQztRQUNOOztRQUlBLEdBQUkvckMsZUFBZWdILE1BQU87U0FDeEJ3a0MsSUFBSW1CLGlCQUFpQnBCLE9BQU8rQixrQkFBa0J0dEM7U0FDOUN3ckMsSUFBSW9CLFlBQVk1c0M7O1lBQ1g7U0FDTHdyQyxJQUFJbUIsaUJBQWlCcEIsT0FBTzhCLGtCQUFrQnJ0QztTQUM5Q3dyQyxJQUFJb0I7O1FBRU4sR0FBSXgvQixtQkFBbUJraEMsWUFBYTl3QixPQUFPeGQ7O1FBSTNDeXVDLEtBQUtsRCxjQUFjL3RCO1FBQ25Ca3hCLEtBQUtELEtBQUtqRCxJQUFJbUI7UUFDZDtVQUFJOEIsV0FBV0MsV0FBV0EsTUFBTW5ELE9BQU91QzthQUNuQ3ZDLGFBQWFtRCxPQUFPbEQsSUFBSW1CLGVBQWdCLENBQzFDdGlCLE1BQU11aEIsT0FBTztRQUVmNkMsS0FBS2xELGNBQWMvdEI7UUFDbkJreEIsS0FBS0QsS0FBS2pELElBQUltQjtRQUNkO1VBQUk4QixXQUFXQyxXQUFXQSxNQUFNbkQsT0FBT3VDO2FBQ25DdkMsYUFBYW1ELE9BQU9sRCxJQUFJbUIsZUFBZ0I7U0FDMUNudkMsSUFBSSt0QyxhQUFhbUQ7U0FDakJya0IsTUFBTXloQjtTQUFROztRQUVoQixHQUFJK0MsYUFBYyxDQUNoQnhvQyxNQUFNK2xDLHFCQUNOOztRQUtGLEdBQUl5QyxZQUFhO1NBQ2ZBO1NBQ0EsT0FBUztVQUNQRixTQUFTbkQsSUFBSWEsYUFBYXVDO1VBQzFCSCxLQUFLbEQsY0FBY29EO1VBQ25CRCxLQUFLRCxLQUFLaEQ7VUFDVjtZQUFJZ0QsV0FBV0MsV0FBV0EsTUFBTW5ELE9BQU91QztlQUNuQ3ZDLGFBQWFtRCxPQUFPakQsUUFBUztXQUMvQixHQUFJcitCLG1CQUNGK2dDLDZCQUE2QlE7V0FDL0J0a0IsTUFBTXdoQjtXQUFlOztjQUNoQjtXQUNMLEdBQUl6K0IsbUJBQ0YrZ0MsMEJBQTBCUTtXQUM1QixHQUFJQyxNQUFNcEQsSUFBSWtCLGVBQWdCO1lBQzVCLEdBQUl0L0IsbUJBQ0YrZ0M7WUFDRixPQUFPbkM7O1dBR1Q0Qzs7OztZQUdDO1NBQ0wsR0FBSXBELElBQUltQixxQkFDTixPQUFPWDtTQUNULEdBQUk1K0IsbUJBQ0YrZ0M7U0FDRjNDLElBQUltQjtTQUNKdGlCLE1BQU1xaEI7U0FBTTs7O1FBSWRGLElBQUltQixzQkFDSixHQUFJa0MsYUFBYUE7O1FBR2pCLEdBQUl6aEM7U0FDRitnQyxlQUFlM3dCLDhCQUE4Qit0QixhQUFhbUQ7UUFDNURseEIsUUFBUSt0QixhQUFhbUQ7UUFDckJFO1FBQ0EsR0FBSUEsTUFBTXBELElBQUlpQixlQUFnQixDQUM1QnBtQyxNQUFNNGxDLGVBQ047O1FBS0ZULElBQUlhLGFBQWF1QyxVQUFVcHhCO1FBQzNCZ3VCLElBQUljLGFBQWFzQyxVQUFVcEQsSUFBSW9CO1FBQy9CcEIsSUFBSWUsc0JBQXNCcUMsVUFBVXBELElBQUlxQjtRQUN4Q3JCLElBQUlnQixvQkFBb0JvQyxVQUFVcEQsSUFBSXNCO1FBQ3RDemlCLE1BQU1xaEI7UUFDTjs7UUFHQSxHQUFJdCtCLG1CQUNGK2dDLGVBQWUzd0IsOEJBQThCaGdCO1FBQ3pDLElBQUZxSixJQUFJMGtDLFdBQVcvdEM7UUFDbkJndUMsSUFBSXVCLFdBQVc2QjtRQUNmcEQsSUFBSXlCLG1CQUFtQnp2QztRQUN2Qmd1QyxJQUFJd0IsZ0JBQWdCbm1DO1FBQ3BCK25DLEtBQUtBLEtBQUsvbkM7UUFDVkEsSUFBSTBrQyxXQUFXL3RDO1FBQ2ZteEMsU0FBU25ELElBQUlhLGFBQWF1QztRQUMxQkgsS0FBS2xELGNBQWMxa0M7UUFDbkI2bkMsS0FBS0QsS0FBS0U7UUFDVjtVQUFJRixXQUFXQyxXQUFXQSxNQUFNbkQsT0FBT3VDO2FBQ25DdkMsYUFBYW1ELE9BQU9DO1NBQ3RCbnhCLFFBQVErdEIsYUFBYW1EOztTQUVyQmx4QixRQUFRK3RCLGFBQWExa0M7UUFDdkIsR0FBSStuQyxNQUFNcEQsSUFBSWlCLGVBQWdCLENBQzVCcG1DLE1BQU02bEMsZUFDTjs7UUFLRjdsQyxNQUFNOGxDLHlCQUNOOztRQUdBWCxJQUFJYSxhQUFhdUMsVUFBVXB4QjtRQUMzQmd1QixJQUFJYyxhQUFhc0MsVUFBVTV1QztRQUNuQixJQUFKOHVDLE1BQU10RCxJQUFJdUI7UUFDZHZCLElBQUlnQixvQkFBb0JvQyxVQUFVcEQsSUFBSWdCLG9CQUFvQnNDO1FBQzFELEdBQUlGLEtBQUtFO1NBRVB0RCxJQUFJZSxzQkFBc0JxQyxVQUFVcEQsSUFBSWdCLG9CQUFvQnNDO1FBRTlEemtCLE1BQU1xaEI7UUFBTTtnQkFHWixPQUFPTTs7SUFJWFIsSUFBSTBCLFVBQVUwQjtJQUNkcEQsSUFBSTJCLGFBQWEzdkI7SUFDakJndUIsSUFBSTRCLGVBQWV5QjtJQUNuQixPQUFPeG9DO0dBQ1Q7R0x0UUEsU0FBUzBvQywrQkFDUCxTQUNGO0dWb0dBLFNBQVNDLHdCQUF3QjNqQyxNQUMvQixTQUNGO0drQjdHQSxTQUFTNGpDLGtCQUFtQjN4QyxHQUFHd0I7SUFDN0IsR0FBSUEsTUFBUSxDQUFFeEIsUUFBUXdCLE9BQU87SUFDN0IsVUFBV0EsaUJBQWlCLENBQUV4QixRQUFRd0IsR0FBRztJQUNuQyxJQUFGWSxJQUFJWjtJQUFVLE1BQU9ZLEtBQUtwQyxFQUFFb0MsS0FBS1osRUFBRVk7SUFBSTtHQUM3QztHT2tFQSxTQUFTd3ZDLGdCQUFnQjFzQixPQUFPelcsS0FBS3hMLEtBQUtrQjtJQUN4QyxJQUFVLElBQUYvQixPQUFPQSxJQUFJYSxLQUFLYixLQUN0QjhpQixNQUFNelcsTUFBSXJNLFNBQU8rQjtJQUVuQjtHQUNGO0dwQitKQSxTQUFTMHRDLGVBQWV4c0MsTUFBTStnQjtJQUNuQixJQUFMbmhCLE9BQU9xRyxrQkFBa0JqRztJQUM3Qkosa0JBQWtCQSxXQUFVbWhCO0lBQzVCO0dBQ0Y7R1YwUkEsU0FBUzByQixxQkFBcUJocUMsSUFBSUU7SUFBTSxXQUFTNHZCLGtCQUFrQjl2QixJQUFJRTtHQUFLO0dBeUM1RSxTQUFTK3BDLHVCQUF1QmpxQyxJQUFJRSxJQUNsQyxPQUFPK2dCLG9CQUFvQi9nQixJQUFJRjtHQUNqQztHY3RMQSxTQUFTa3FDLG1CQUFtQmw2QjtJQUMxQjtLQUFJM1gsSUFBSWdNO0tBQ0pqTCxJQUFJNFc7S0FDSmxDLElBQUlrQztLQUNKekwsS0FBS2xNLDBCQUEwQnlWLEdBQUUxVTtJQUNyQyxJQUFTLElBQURrQixPQUFJQSxJQUFFbEIsR0FBRWtCO0tBQUksSUFDVCxJQUFEZ0MsT0FBSUEsSUFBRXdSLEdBQUV4UixJQUFJO01BQ2xCLElBQUlqQixJQUFJMlUsSUFBSTFWLE9BQUtnQyxRQUNid0csSUFBSXhJLEtBQUd3VCxTQUFReFI7TUFDbkIsR0FBR2pCLFNBQVM7T0FDVmtKLFFBQVF6QjtPQUNSeUIsUUFBUXpCO09BQ1J5QixRQUFRekI7T0FDUnlCLFFBQVF6Qjs7VUFDSDtPQUNMeUIsUUFBUXpCLFNBQVN6SDtPQUNqQmtKLFFBQVF6QixTQUFTekg7T0FDakJrSixRQUFRekIsU0FBU3pIO09BQ2pCa0osUUFBUXpCOzs7SUFJZCxPQUFPeUI7R0FDVDtHR3JNQSxTQUFTNGxDLDJCQUEyQnJrQyxRQUFPMUs7SUFDaEMsSUFBTG9LLE9BQU9GLGlCQUFpQlE7SUFDNUJOLHVCQUF5Qm5OLEdBQUkrQyxFQUFFL0MsR0FBaEI7SUFDZjtHQUNGO0dQaUdBLFNBQVMreEMsdUJBQXdCN3NDO0lBQy9CO0tBQUlBLGNBQWVBLG1CQUFrQjFDLHVCQUF1QjBDLFFBQU1BO0tBQzlESixPQUFPcUcsa0JBQWtCakc7SUFDN0IsR0FBR0osbUJBQW1CQSxXQUFZO0tBQ2hDO01BQUkyRCxPQUFPM0QsaUJBQWlCQTtNQUN4QmhDLE1BQU8yRjtNQUNQUCxVQUFVakIsV0FBV25FO0tBQ3pCMkYsYUFBWVAsUUFBTXBGO0tBQ2xCLE9BQU8wcEIscUJBQXFCdGtCOztJQUU5QmIsd0JBQXdCMUYsdUJBQXVCdUQ7R0FDakQ7R0w1SUEsU0FBUzhzQyxpQkFBaUJueUMsR0FBSyxPQUFPQSxFQUFHO0dGa0t6QyxTQUFTb3lDO0lBQ0ssSUFBUnB3QyxVQUFVQztJQUNkLEdBQUdELFdBQVdBO0tBQ1pBOztnQkFBMENxSSxLQUFLZ29DO1FBQzdDL2MsOEJBQThCanJCO1FBQzlCckk7T0FGOEI7WUFLMUJDO0tBQ05BOztnQkFBOENtckM7UUFDNUMsR0FBR0EsYUFDRDlYLDhCQUE4QjhYO09BRkc7R0FNekM7R0FDQWdGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7O1lpQ3dKUUU7SUFBQSw4QkFrQ1k7OztXQTlCUkMsaUJBQ1IsV0FMSUQsVUFJSUM7O1dBRUVDLG1CQUNWLFdBUElGLFVBTU1FOztXQUVIQyxtQkFDUCxXQVRJSCxVQVFHRzs7V0FFRUMsbUJBQ1QsV0FYSUosVUFVS0k7O1dBSUlDLG1CQUNiLFdBZklMLFVBY1NLOztXQUZKQyxtQkFDVCxXQWJJTixVQVlLTTs7V0FJQUMsbUJBQ1QsV0FqQklQLFVBZ0JLTzs7V0FFREMsbUJBQ1IsV0FuQklSLFVBa0JJUTs7V0FFV0MsbUJBQUpDO09BQ2YsV0FEZUEsSUFwQlhWLFVBb0JlUzs7V0FFU0UsbUJBQVhDO09BQ2pCLFdBRGlCQSxLQUFBQSxLQXRCYlosVUFzQndCVzs7V0FFbkJFLG1CQUNULFlBekJJYixVQXdCS2E7O1dBRUFDLG9CQUNULFlBM0JJZCxVQTBCS2M7O1dBRUZDLG9CQUNQLFlBN0JJZixVQTRCR2U7O1dBRUdDLG9CQUNWLFlBL0JJaEIsVUE4Qk1nQjttQkFFUUMsb0JBQ2xCLFlBakNJakIsVUFnQ2NpQjs7R0FFVTtZQWlCeEJDLGFBV0pDLFFBQU9DO0lBQVUsVUFBakJELHFCQStCZ0IsT0EvQlRDO1dBQVBEOztXQUNRbEIsT0FEUmtCLFdBRUEsV0FiSUQsYUFZSWpCLE1BRERtQjs7V0FHR2xCLFNBSFZpQixXQUlBLFdBZklELGFBY01oQixRQUhIa0I7O1dBS0FqQixTQUxQZ0IsV0FNQSxXQWpCSUQsYUFnQkdmLFFBTEFpQjs7V0FPRWhCLFNBUFRlLFdBUUEsV0FuQklELGFBa0JLZCxRQVBGZ0I7O1dBU01mLFNBVGJjLFdBVUEsV0FyQklELGFBb0JTYixRQVROZTs7V0FXRWQsU0FYVGEsV0FZQSxXQXZCSUQsYUFzQktaLFFBWEZjOztXQWFFYixTQWJUWSxXQWNBLFdBekJJRCxhQXdCS1gsUUFiRmE7O1dBZUNaLFNBZlJXLFdBZ0JBLFdBM0JJRCxhQTBCSVYsUUFmRFk7O1dBMkJZWCxTQTNCbkJVLFdBMkJlVCxLQTNCZlM7T0E0QkEsV0FEZVQsSUF0Q1hRLGFBc0NlVCxRQTNCWlc7O1dBNkJvQlQsU0E3QjNCUSxXQTZCc0JFLE1BN0J0QkYsV0E2QmlCUCxNQTdCakJPO09BOEJBLFdBRGlCUCxLQUFLUyxLQXhDbEJILGFBd0N1QlAsUUE3QnBCUzs7V0FpQkVQLFNBakJUTSxXQWtCQSxZQTdCSUQsYUE0QktMLFFBakJGTzs7V0FtQkVOLFVBbkJUSyxXQW9CQSxZQS9CSUQsYUE4QktKLFNBbkJGTTs7V0FxQkFMLFVBckJQSSxXQXNCQSxZQWpDSUQsYUFnQ0dILFNBckJBSzs7V0F1QkdKLFVBdkJWRyxXQXdCQSxZQW5DSUQsYUFrQ01GLFNBdkJISTs7V0F5QldILFVBekJsQkUsV0EwQkEsWUFyQ0lELGFBb0NjRCxTQXpCWEc7O0dBK0JlO1lBTWxCRSxXQUlKQyxNQUFLQztJQUFRLFVBQWJELG1CQTJEQSxPQTNES0M7V0FBTEQ7O1dBaUJLdEIsT0FqQkxzQixTQWtCQSxXQXRCSUQsV0FxQkNyQixNQWpCQXVCOztXQW1CS3RCLFNBbkJWcUIsU0FvQkEsV0F4QklELFdBdUJNcEIsUUFuQkxzQjs7V0FDUXJCLFNBRGJvQixTQUNRRSxNQURSRjtPQUVBLFdBRFFFLEtBTEpILFdBS1NuQixRQURScUI7O1dBR2FwQixTQUhsQm1CLFNBR2FHLFFBSGJIO09BSUEsV0FEYUcsT0FQVEosV0FPY2xCLFFBSGJvQjs7V0FNa0JuQixTQU52QmtCLFNBTWlCSSxPQU5qQkosU0FNWUssUUFOWkwsU0FNS00sUUFOTE47T0FPQSxXQURLTSxPQUFPRCxPQUFLRCxNQVZiTCxXQVVtQmpCLFFBTmxCbUI7OztRQVFvQmxCLFNBUnpCaUI7UUFRbUJPLFNBUm5CUDtRQVFjUSxRQVJkUjtRQVFPUyxVQVJQVDtPQVNBLFdBRE9TLFNBQU9ELE9BQUtELFFBWmZSLFdBWXFCaEIsUUFScEJrQjs7O1FBVXdCakIsU0FWN0JnQjtRQVV1QlUsU0FWdkJWO1FBVWtCVyxRQVZsQlg7UUFVV1ksVUFWWFo7T0FXQSxXQURXWSxTQUFPRCxPQUFLRCxRQWRuQlgsV0FjeUJmLFFBVnhCaUI7OztRQVlvQmhCLFNBWnpCZTtRQVltQmEsU0FabkJiO1FBWWNjLFFBWmRkO1FBWU9lLFVBWlBmO09BYUEsV0FET2UsU0FBT0QsT0FBS0QsUUFoQmZkLFdBZ0JxQmQsUUFacEJnQjs7O1FBY29CZixTQWR6QmM7UUFjbUJnQixTQWRuQmhCO1FBY2NpQixRQWRkakI7UUFjT2tCLFFBZFBsQjtPQWVBLFdBRE9rQixPQUFPRCxPQUFLRCxRQWxCZmpCLFdBa0JxQmIsUUFkcEJlOztXQXFCTWIsU0FyQlhZLFNBcUJNbUIsUUFyQk5uQjtPQXNCQSxXQURNbUIsT0F6QkZwQixXQXlCT1gsUUFyQk5hOztXQStCQ1gsU0EvQk5VLFNBZ0NBLFlBcENJRCxXQW1DRVQsUUEvQkRXOztXQWtDZ0JWLFVBbENyQlMsU0FrQ2dCb0IsTUFsQ2hCcEI7T0FtQ0EsWUFEZ0JvQixLQXRDWnJCLFdBc0NpQlIsU0FsQ2hCVTs7V0FvQ2NULFVBcENuQlEsU0FvQ2NxQixNQXBDZHJCO09BcUNBLFlBRGNxQixLQXhDVnRCLFdBd0NlUCxTQXBDZFM7O1dBdUNtQlIsVUF2Q3hCTyxTQXVDaUJzQixRQXZDakJ0QixTQXVDWXVCLFFBdkNadkI7T0F3Q0EsWUFEWXVCLE9BQUtELE9BM0NidkIsV0EyQ29CTixTQXZDbkJROztXQXlDcUJQLFVBekMxQk0sU0F5Q21Cd0IsVUF6Q25CeEIsU0F5Q2N5QixRQXpDZHpCO09BMENBLFlBRGN5QixPQUFLRCxTQTdDZnpCLFdBNkNzQkwsU0F6Q3JCTzs7V0F1QkN5QixVQXZCTjFCLFNBd0JBLFlBNUJJRCxXQTJCRTJCLFNBdkJEekI7O1dBeUJDMEIsVUF6Qk4zQixTQTBCQSxZQTlCSUQsV0E2QkU0QixTQXpCRDFCOztXQXFEdUIyQixVQXJENUI1QixTQXFEZ0I2QixhQXJEaEI3QjtPQXNEQSxZQURnQjZCLFlBekRaOUIsV0F5RHdCNkIsU0FyRHZCM0I7O1dBdUR1QjZCLFVBdkQ1QjlCLFNBdURnQitCLGFBdkRoQi9CO09Bd0RBLFlBRGdCK0IsWUEzRFpoQyxXQTJEd0IrQixTQXZEdkI3Qjs7V0E2QkUrQixVQTdCUGhDLFNBOEJBLFlBbENJRCxXQWlDR2lDLFNBN0JGL0I7O1dBNEMrQmdDLFVBNUNwQ2pDLFNBNEMwQmtDLFdBNUMxQmxDLFNBNENlbUMsWUE1Q2ZuQztPQTZDQSxZQURlbUMsV0FBV0QsVUFoRHRCbkMsV0FnRGdDa0MsU0E1Qy9CaEM7O1dBOENzQm1DLFVBOUMzQnBDLFNBOENrQnFDLFVBOUNsQnJDO09BK0NBLFlBRGtCcUMsU0FsRGR0QyxXQWtEdUJxQyxTQTlDdEJuQzs7V0FnRFVxQyxVQWhEZnRDLFNBaURBLFlBckRJRCxXQW9EV3VDLFNBaERWckM7O1dBa0Rlc0MsVUFsRHBCdkMsU0FrRGV3QyxNQWxEZnhDO09BbURBLFlBRGV3QyxLQXREWHpDLFdBc0RnQndDLFNBbERmdEM7O1dBMkJhd0MsVUEzQmxCekMsU0EyQmUwQyxJQTNCZjFDLFNBMkJRMkMsUUEzQlIzQztPQTRCQSxZQURRMkMsT0FBT0QsR0EvQlgzQyxXQStCYzBDLFNBM0JieEM7O0dBMkREO3NDQS9HQU4sY0FuREFsQixXQW1HQXNCOzs7O0U7Ozs7Ozs7WUN4bEJKNkMsS0FBS0MsR0FBSSxXQUFKQSxHQUFPO1lBQ1pDLElBQUlDLEdBQUksT0FBSkEsS0FBTztZQUNYQyxJQUFJRCxHQUFFRixHQUFGRSxPQUFFRixZQUFZO1lBTUhJLFNBQVNGLEdBQUVGLEdBRTVCLElBQUlLLE1BRnNCSCxNQUFBQSxPQUFFRixHQUs1QixPQUhJSyxJQUdEO1lBRWNDLGdCQUFnQkosR0FBRUssTUFBS1A7SUFFeEMsSUFBSUssTUFGNkJIO1dBRTdCRyxRQUYrQkUsUUFBRkwsT0FBT0Y7R0FRakM7WUFFVVEsY0FBY04sR0FBRU87SUFFakMsSUFBSUosTUFGMkJIO0lBQUFBLE9BRTNCRyxNQUY2Qkk7SUFLakMsT0FISUo7R0FHRDtZQUVESyxLQUFLUixHQVBVTSxjQU9WTixPQUFXLFNBQW1CO1lBQ25DUyxLQUFLVCxHQVJVTSxjQVFWTixRQUFXLFNBQXNCOzs7O09BakN0Q0g7T0FDQUU7T0FDQUU7T0FNZUM7T0FPQUU7T0FVQUU7T0FPZkU7T0FDQUM7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUMvQkFDLFNBQVNDO0lBQUksTUFBQSx5Q0FBSkE7R0FBb0I7WUFDN0JDLFlBQVlEO0lBQUksTUFBQSxrREFBSkE7R0FBNkI7R0FFN0M7WUEwQ0lFLElBQUlDLEdBQUVDLEdBQUksT0FBRyx1QkFBVEQsR0FBRUMsS0FBRkQsSUFBRUMsRUFBMkI7WUFDakNDLElBQUlGLEdBQUVDLEdBQUksT0FBRywwQkFBVEQsR0FBRUMsS0FBRkQsSUFBRUMsRUFBMkI7WUF5QmpDRSxJQUFJSCxHQUFJLFlBQUpBLElBQUFBLE1BQUFBLE1BQTRCO1lBTWhDSSxLQUFLSixHQUFJLE9BQUpBLE9BQWU7R0E0RXRCO0lBREVLLFdBQ0Y7SUFDRUMsZUFDRjtJQUNFQyxNQUNGO0lBQ0VDLFlBQ0Y7SUFDRUMsWUFDRjtJQUNFQyxnQkFDRjtJQWhGRUM7SUFDQUM7WUFxR0FDLE9BQU1DLElBQUdDO0lBQ1g7S0FBSUMsMkJBRElGO0tBQ3NCRywyQkFEbkJGO0tBRVBsQixJQUFJLGtCQURKbUIsS0FBMEJDO0lBRTlCLGlCQUhRSCxPQUVKakIsTUFEQW1CO0lBR0osaUJBSldELE9BRVBsQixHQURBbUIsSUFBMEJDO2dDQUMxQnBCO0dBR29CO1lBTXRCcUIsWUFBWXpCO0lBQ2QsUUFEY0EsWUFBQUEsR0FDMEMsT0FEMUNBO0lBQ1csT0FwTXZCSztHQW9NMEU7WUE2QjFFcUIsZUFBZUMsR0FDakIsT0FEaUJBLHlCQUNZO1lBQzNCQztJQUFpQjs7O2dCQW5PakJ2Qjs7O0dBc09pQztZQUVqQ3dCO0lBQXFCOzs7R0FHWjtZQUVUQyxjQUFjOUIsR0FDaEIsWUFEZ0JBLEVBQ0M7WUFJZitCLGtCQUFrQjNCO0lBRXBCLElBQUksY0FBSyxtQkFGV0EsS0FFaEI7Ozs0QkFDYzs7O0dBQUk7WUFJcEI0QixrQkFBa0I1QjtJQUNwQixJQUFJNkIsMEJBRGdCN0IsSUFFUDhCO0lBQ1g7UUFGRUQsS0FDU0MsR0FDSSxPQXBFZmQsT0FpRWtCaEI7S0FJWixZQUFBLHdCQUpZQSxHQUVQOEI7Ozs7TUFBYixPQUZvQjlCOztLQUtJLElBSFgrQixNQUFBRCxXQUFBQSxJQUFBQzs7R0FNUDtZQUVKQyxnQkFBZ0JoRDtJQUFJLE9BVnBCNEMsa0JBVXNDLG1DQUF0QjVDO0dBQThDO1lBSTlEaUQsb0JBQW9CakM7SUFFdEIsSUFBSSxjQUFLLHFCQUZhQSxLQUVsQjs7OzRCQUNjOzs7R0FBSTtZQUloQmtDLFNBQU1mLElBQUdDO0lBQ2YsS0FEWUQsSUFFSixPQUZPQztRQUdQZSxLQUhJaEIsT0FHVmlCLEtBSFVqQjtJQUdFLFdBQVppQixJQUhJRixTQUdFQyxJQUhPZjtHQUdjO0dBV25CO0lBQVJpQixRQUFRO0lBQ1JDLFNBQVM7SUFDVEMsU0FBUztZQWNUQyxhQUFhQyxNQUFLQyxNQUFLQztJQUNqQixJQUFKQyxJQUFJLDRCQUFtQixjQURGRCxNQUFWRixNQUFLQztJQUVwQix5QkFESUUsR0FEcUJEO0lBRXpCLE9BRElDO0dBRUg7WUFFQ0MsU0FBU0YsTUFDWCxPQU5FSCx1QkFLU0csTUFDNkQ7WUFFdEVHLGFBQWFILE1BQ2YsT0FURUgsdUJBUWFHLE1BQzJEO1lBT3hFSTtJQUNGLGNBU1E7SUFUTzttQkFDTDtTQUNIbEIsZ0JBQUhtQjtLQUNFLElBQ0ksY0FGTkE7Ozs7O21CQUFHbkI7O0dBT3VCO1lBUzVCb0IsYUFBYUMsSUFBR2xEO0lBQ2xCLE9BQUEscUJBRGVrRCxJQUFHbEQsMkJBQUFBO0dBQ21CO1lBRW5DbUQsY0FBY0QsSUFBR2xEO0lBQ25CLE9BQUEsZUFEZ0JrRCxJQUFHbEQsNEJBQUFBO0dBQzBCO1lBRTNDb0QsT0FBT0YsSUFBR2xELEdBQUVxRCxLQUFJQztJQUNsQixRQURjRCxZQUFJQyw2QkFBTnRELEtBQU1zRCxZQUFKRDtLQUdULE9BQUEscUJBSElILElBQUdsRCxHQUFFcUQsS0FBSUM7SUFFYixPQXZWSHJEO0dBd1Y2QjtZQUU3QnNELGlCQUFpQkwsSUFBR2xELEdBQUVxRCxLQUFJQztJQUM1QixRQUR3QkQsWUFBSUMsOEJBQU50RCxLQUFNc0QsWUFBSkQ7S0FHbkIsT0FBQSxlQUhjSCxJQUFHbEQsR0FBRXFELEtBQUlDO0lBRXZCLE9BNVZIckQ7R0E2Vm9DO1lBT3BDdUQsYUFBYUMsTUFBS3RFO0lBQUksT0FBQSwwQkFBVHNFLE1BQUt0RTtHQUFnQztZQU1sRHVFLFVBQVVSO0lBQUssY0FBTEE7SUFBZSxPQUFBLHNCQUFmQTtHQUFtQztZQUM3Q1MsZ0JBQWdCVDtJQUNsQixJQUFLLGNBRGFBO0lBRWxCLElBQUssVUFBQSxzQkFGYUEsS0FFYix1QkFBK0I7R0FBRztZQVNyQ1UsWUFBWW5CLE1BQUtDLE1BQUtDO0lBQ2hCLElBQUpDLElBQUksMkJBQWtCLGNBREZELE1BQVZGLE1BQUtDO0lBRW5CLHlCQURJRSxHQURvQkQ7SUFFeEIsT0FESUM7R0FFSDtZQUVDaUIsUUFBUWxCLE1BQ1YsT0FORWlCLG9CQUtRakIsTUFDaUM7WUFFekNtQixZQUFZbkIsTUFDZCxPQVRFaUIsb0JBUVlqQixNQUMrQjtZQU8zQ29CLE1BQU1DLElBQUdoRSxHQUFFcUQsS0FBSUM7SUFDakIsUUFEYUQsWUFBSUMsNkJBQU50RCxLQUFNc0QsWUFBSkQ7S0FHUixPQUFBLGNBSEdXLElBQUdoRSxHQUFFcUQsS0FBSUM7SUFFWixPQXhZSHJEO0dBeVk0QjtZQUV4QmdFLG9CQUFvQkQsSUFBR2hFLEdBQUVxRCxLQUFJQztJQUNuQyxJQUQrQlksUUFBQWIsS0FBSWMsUUFBQWI7SUFDbkM7YUFEbUNhLE9BQ2xCO0tBQ1AsSUFBSjlFLElBQUksY0FGZ0IyRSxJQUFHaEUsR0FBRWtFLE9BQUlDO0tBR2pDLFNBREk5RSxHQUVDLE1BQUE7O01BSjRCK0UsUUFBQUQsUUFFN0I5RTtNQUZ5QmdGLFFBQUFILFFBRXpCN0U7TUFGeUI2RSxRQUFBRztNQUFJRixRQUFBQzs7R0FNaEM7WUFFREUsYUFBYU4sSUFBR2hFLEdBQUVxRCxLQUFJQztJQUN4QixRQURvQkQsWUFBSUMsNkJBQU50RCxLQUFNc0QsWUFBSkQ7S0FHZixPQVhDWSxvQkFRU0QsSUFBR2hFLEdBQUVxRCxLQUFJQztJQUVuQixPQXJaSHJEO0dBc1ptQztZQUVuQ3NFLG9CQUFvQlAsSUFBR1Y7SUFDakIsSUFBSnRELElBQUksa0JBRGlCc0Q7SUFMdkJnQixhQUtvQk4sSUFDbEJoRSxNQURxQnNEO2dDQUNyQnREO0dBRW9CO1lBSXRCd0UsV0FBV2Y7SUFDYixTQUFRZ0IsYUFBYUM7U0FBSUM7O29CQUNqQixPQURhRDtNQUdqQixJQURJdkMsaUJBQU5DLGlCQUNNa0IsTUFBSixxQkFERmxCO01BRUUsd0JBRkZBLE9BRm1Cc0MsS0FBSUMsUUFHakJyQixTQUFBQTtrQkFIaUJxQixRQUdqQnJCLFNBSGlCcUIseUJBRWpCeEM7OztRQUlLeUMsVUFBS3RCO0lBQ2hCO0tBQVEsSUFBSjFELElBQUksZ0NBUkc2RDtLQVNYLFNBREk3RDtXQURPZ0YsTUFJRCxNQUFBO2dCQVZKSCxhQVdpQixrQkFMUG5CLE1BQUFBLEtBQUxzQjs7O2NBQ1BoRjtPQWNRLElBQU5pRixNQUFNLG9CQWRSakY7T0FlSSxjQXZCRzZELE1Bc0JMb0IsVUFkRmpGO09BZ0JHO1FBakJTd0UsUUFBQWQsTUFDWjFEO1FBRE9rRixhQWVMRCxLQWZLRDtRQUFBQSxPQUFBRTtRQUFLeEIsTUFBQWM7OztNQU9KLElBQU5XLE1BQU0sa0JBTlJuRjtNQU9LLGNBZkU2RCxNQWNMc0IsUUFORm5GO01BUUssbUJBaEJFNkQ7U0FPQW1COztRQVlHVCxTQVpFYixNQUNaMUQ7Y0FQRTZFLGFBbUJpQixrQkFEVE4sUUFBQUEsV0FMUlksS0FQS0g7O2lCQU9MRzs7S0FZa0IsT0FBQTs7R0FBVztZQVNuQ0MsZUFBZWhCO0lBQUssSUFBSyxVQUFBLHNCQUFWQSxLQUFVLHVCQUFzQjtHQUFHO1lBTWxEaUIsV0FBV3JDLEdBQUksT0FBQSxvQkEzS2ZOLFFBMktXTSxHQUF3QjtZQUNuQ3NDLGFBQWFsRixHQUFJLE9BdkhqQm1ELGNBckRBYixRQTRLYXRDLEdBQTBCO1lBQ3ZDbUYsWUFBWW5GLEdBQUksT0EzSGhCaUQsYUFsREFYLFFBNktZdEMsR0FBeUI7WUFDckNvRixVQUFVdEQsR0FBSSxPQXpIZHFCLGNBckRBYixhQThLVVIsR0FBMEM7WUFDcER1RCxZQUFZckcsR0FBSSxPQTFIaEJtRSxjQXJEQWIsUUExQkFOLGdCQXlNWWhELElBQTRDO1lBQ3hEc0csY0FBY3RGO0lBM0hkbUQsY0FyREFiLFFBZ0xjdEM7SUFDUSxvQkFqTHRCc0M7SUFpTCtDLE9BQUEsY0FqTC9DQTtHQWlMMkQ7WUFDM0RpRDtJQUFtQixvQkFsTG5CakQ7SUFrTDRDLE9BQUEsY0FsTDVDQTtHQWtMd0Q7WUFJeERrRCxXQUFXNUMsR0FBSSxPQUFBLG9CQXJMZkwsUUFxTFdLLEdBQXdCO1lBQ25DNkMsYUFBYXpGLEdBQUksT0FsSWpCbUQsY0FwREFaLFFBc0xhdkMsR0FBMEI7WUFDdkMwRixZQUFZMUYsR0FBSSxPQXRJaEJpRCxhQWpEQVYsUUF1TFl2QyxHQUF5QjtZQUNyQzJGLFVBQVU3RCxHQUFJLE9BcElkcUIsY0FwREFaLGFBd0xVVCxHQUEwQztZQUNwRDhELFlBQVk1RyxHQUFJLE9BckloQm1FLGNBcERBWixRQTNCQVAsZ0JBb05ZaEQsSUFBNEM7WUFDeEQ2RyxjQUFjN0Y7SUF0SWRtRCxjQXBEQVosUUEwTGN2QztJQUNRLG9CQTNMdEJ1QztJQTJMK0MsT0FBQSxjQTNML0NBO0dBMkwyRDtZQUMzRHVEO0lBQW1CLG9CQTVMbkJ2RDtJQTRMNEMsT0FBQSxjQTVMNUNBO0dBNEx3RDtZQUl4RHdELGlCQUFlLGNBak1mekQsU0FEUSxPQW1JUmtDLFdBbklBbkMsT0FrTTZDO1lBQzdDMkQsZ0JBQWMsT0FBQSxtQkFEZEQsY0FDd0M7WUFDeENFLG9CQUFrQixPQTlPbEJ0RSxrQkE0T0FvRSxjQUVnRDtZQUNoREcsa0JBQWdCLE9BQUEscUJBSGhCSCxjQUc0QztZQUM1Q0ksc0JBQW9CLE9BM05wQmxFLG9CQXVOQThELGNBSW9EO1lBMEJwREssNEJBQWdDMUksZ0JBQVEsT0FBUkE7WUFNaEMySTtJQUVNO0tBRnNDQztLQUFOL0o7S0FBaEJnSztLQUFOaks7S0FFVixNQTVVTjBFLE9BMFVzQnVGLE1BMVV0QnZGLGNBMFU0Q3NGO0lBQzlDLFdBQVEsd0NBRFVoSyxNQUFzQkM7O0dBUXRCLElBQWhCaUssZ0JBQWdCLGtDQTlNaEJ6RDtZQWdOSTBELFFBQVF6SDtJQUNkO0tBRW1CO01BQWYwSCxlQUFlO01BQ2ZDLFdBQVcsa0NBTmJIO1NBS0VJLGlCQUFBRixjQUNBRyxhQUFBRjtjQUNBRztNQUNGLEdBQUcsa0NBSERGO09BR3FELFdBTjNDNUg7TUFNMkMsT0FBQSxXQUZyRDZIO0tBR1M7S0FFQztNQUFWRTtRQUFVLGtDQVhaUCxlQU1FRyxVQUNBRztNQUtKLFVBRElDO2VBQ0o7O0dBQTZCO1lBRTNCQztJQUFnQixPQUFBLFdBQUEsa0NBZGhCUjtHQWN5RDtZQUV6RFMsS0FBS0M7SUFGTEY7SUFJRixPQUFBLHNCQUZPRTtHQUVTO0dBRVYsMkRBTkpGOzs7O09BeGhCQS9HO09BREFGOzs7Ozs7Ozs7Ozs7OztPQTZDQUc7T0FDQUc7T0F5QkFDO09BWUFRO09BQ0FDO09BUEFSO09BMkVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQXVCQUc7T0FXQUs7T0E4QkFDO09BT0FHO09BTEFEO09BVUFFO09BS0FDO09BaUJBSztPQUlBQztPQU9JQztPQWNKRztPQUNBQztPQUNBQztPQTBLQTBDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BRUFDO09BSUFDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BRUFDO09BSUFDO09BRUFFO09BREFEO09BR0FHO09BREFEO09BaExBckQ7T0FHQUM7T0FSQU47O09BZ0JBTzs7T0FzQkFJO09BSEFGO09BTUFHO09BS0FHOzs7T0FVQUM7Ozs7T0FNQUU7T0FDQUM7O09BZ0JBRTtPQUdBQztPQVJBRjs7T0F5Q0FZO09BekJBVDtPQWFBTztPQUtBQzs7Ozs7Ozs7T0EwQ0FTOzs7Ozs7Ozs7T0EwREFvQjtPQU1BQztPQXdCQVk7T0FkSVI7T0FuUko3RTtPQWtKSXFDO09BNklKK0M7OztFOzs7Ozs7O0c7Ozs7O0c7Ozs7O1lFOWhCQW9CLGFBQVcsU0FBRztZQUVkQyxTQUFPbEksVUFBTyxXQUFQQSxHQUZQaUksT0FFNkI7WUFFN0JFLEtBQUtuSSxHQUFFb0ksYUFBVSxXQUFacEksR0FBRW9JLE1BQXdCO1lBRTNCQyxPQUFPQyxNQUFLQztJQUNaLFlBQUEsV0FET0Q7Z0JBRUosT0FBQSxXQUZTQztRQUdQSCxpQkFBSHBJO0lBQVksV0FBWkEsaUIsT0FIRnFJLE9BR0tELE1BSE9HO0dBRzRCO1lBRXhDQyxJQUFJM0osR0FBRTRKO0lBQWUsWUFBQSxXQUFmQTtnQkFDSDtRQUNFTCxpQkFBSHBJO0lBQXVCLGtCLE9BRnpCd0ksSUFBSTNKLEdBRUN1SjtJQUFTLFdBQU0sV0FGaEJ2SixHQUVGbUI7R0FBa0M7WUFFcEMwSSxXQUFXN0osR0FBRTRKO0lBQVMsSUFBVEUsUUFBQUY7SUFBUztLQUFNLFlBQUEsV0FBZkU7aUJBQ1Y7S0FFQyxJQUhTUCxpQkFFWHBJLGNBQ0UsVUFBQSxXQUhPbkIsR0FFVG1COztVQUdLQztNQUFLLFdBQUxBLGlCLE9BTFB5SSxXQUFXN0osR0FBRXVKOztTQUFBTyxRQUFBUDs7R0FLMEI7WUFFdkNRLE9BQU8vSixHQUFFNEo7SUFBUyxJQUFURSxRQUFBRjtJQUFTO0tBQU0sWUFBQSxXQUFmRTtpQkFDTjtTQURNUCxpQkFFUHBJO0tBQ0QsR0FBQSxXQUhNbkIsR0FFTG1CO01BRUMsV0FGREEsaUIsT0FGRjRJLE9BQU8vSixHQUFFdUo7U0FBQU8sUUFBQVA7O0dBS1U7WUFFbkJTLE9BQU9KO0lBQWUsWUFBQSxXQUFmQTtnQkFDSjtRQUNFTCxpQkFBSHBJO0lBQ0wsT0ExQkdxSSxPQXlCRXJJLGlCLE9BRkY2SSxPQUVLVDtHQUNpQjtZQUV0QlUsU0FBU2pLLEdBQUU0SjtJQUFlLFlBQUEsV0FBZkE7Z0JBQ1I7UUFDRUwsaUJBQUhwSTtJQUNPLGtCLE9BSFQ4SSxTQUFTakssR0FFSnVKO0lBQ1QsT0EvQklDLE9BK0JHLFdBSE14SixHQUVQbUI7R0FDMkI7WUFJakMrSSxVQUNVbEssR0FBRW1LLEtBQUlQO0lBQWxCLElBQWNRLFFBQUFELEtBQUlMLFFBQUFGO0lBQU07S0FBTSxZQUFBLFdBQVpFO2lCQUNQLE9BREdNO0tBR0U7TUFIRWI7TUFFUnBJO01BRklrSixRQUdFLFdBSEpySyxHQUFFb0ssT0FFSmpKO01BRklpSixRQUFBQztNQUFJUCxRQUFBUDs7R0FNTDtZQUVYZSxLQUFLdEssR0FDSzRKO0lBQVosSUFBWUUsUUFBQUY7SUFBTTtLQUFNLFlBQUEsV0FBWkU7aUJBQ0Q7U0FEQ1AsaUJBRUZwSTtLQUNKLFdBSkNuQixHQUdHbUI7U0FGRTJJLFFBQUFQOztHQU1MO1lBRURnQixPQUFPdkssR0FBRXdLO0lBQ1QsWUFBQSxXQURPeEssR0FBRXdLO2dCQUVMOzRCQUNDQyxrQkFBSHRKO0lBQVUsV0FBVkEsaUIsT0FIRm9KLE9BQU92SyxHQUdGeUs7R0FBNEI7Ozs7T0E5RHJDckI7T0FFQUM7T0FFQUM7T0FFSUU7T0FLQUc7T0FXQUk7T0FQQUY7T0FjQUc7T0FLQUM7T0FBQUE7T0FPSkM7T0FTQUk7T0FTSUM7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7O0lDakVKRztZQUNBQyxLQUFLeEssR0FBSSxXQUFKQSxHQUFVO1lBQ2Z5SyxNQUFNQyxHQUFHQztJQUFVLEtBQWJELEdBQWdELE9BQTdDQztRQUE0QjNLLElBQS9CMEs7SUFBb0MsT0FBTDFLO0dBQXdCO1lBQzdEQztJQUFNLFlBQStCLE9BQUE7UUFBakJEO0lBQUssT0FBTEE7R0FBNkM7WUFDakU0SyxLQUFLRixHQUFFN0s7SUFBSSxLQUFONkssR0FBMkI7UUFBWTFLLElBQXZDMEs7SUFBNEMsT0FBQSxXQUExQzdLLEdBQXFDRztHQUFRO1lBQ3BENkssWUFBTyxZQUErQixjQUFqQkgsY0FBSyxPQUFMQSxFQUFxQjtZQUMxQ2xCLElBQUkzSixHQUFFNks7SUFBSSxLQUFKQSxHQUF5QjtRQUFZMUssSUFBckMwSztJQUEwQyxXQUFLLFdBQWpEN0ssR0FBdUNHO0dBQWU7WUFDMUQ4SyxLQUFNUCxNQUFNQztJLFlBQTJDLE9BQWpERDtRQUEyQnZLO0lBQUssT0FBQSxXQUExQndLLE1BQXFCeEs7O1lBQ2pDbUssS0FBS3RLO0ksWUFBcUM7UUFBbkJHO0lBQUssT0FBQSxXQUF2QkgsR0FBa0JHOztZQUN2QitLLGVBQVUscUJBQXVDO1lBQ2pEQyxlQUFVLHFCQUF1QztZQUVqREMsTUFBTUMsSUFBR0MsSUFBR0M7SUFBSyxHQUFSRDtRQUFHQyxRQUNBQyxLQURBRCxPQUNURSxLQURNSCxPQUNTLE9BQUEsV0FEWkQsSUFDSEksSUFBU0Q7O2NBREFELElBRUE7SUFDVDtHQUFLO1lBRVJHLFFBQVFDLEtBQUlMLElBQUdDO0lBQUssS0FBUkQsV0FBR0M7UUFDWkUsS0FEU0g7U0FBR0MsSUFJRDtRQUhGQyxLQURHRDtJQUNHLE9BQUEsV0FEVkksS0FDTEYsSUFBU0Q7R0FHRztZQUVmSSxVQUFXbEI7SSxZQUF3QixXQUF4QkE7UUFBMEN2SztJQUFLLFdBQUxBOztZQUNyRDBMO0lBQVUsWUFBaUI7UUFBVTFMO0lBQUssV0FBTEE7R0FBUTtZQUM3QzJMO0lBQVMsWUFBaUI7UUFBaUIzTDtJQUFLLE9BQUEsMEJBQUxBO0dBQWlCOzs7O09BekI1RHVLO09BQ0FDO09BQ0FDO09BQ0F4SztPQUNBMks7T0FDQUM7T0FDQXJCO09BQ0FzQjtPQUNBWDtPQUNBWTtPQUNBQztPQUVBQztPQUtBTTtPQU1BRTtPQUNBQztPQUNBQzs7O0U7Ozs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7WUl0QkFuTixJQUFJaUM7SUFDTixRQURNQSxZQUFBQSxHQUMrQyxPQUQvQ0E7SUFDbUIsT0FBQTtHQUF3QztZQU8vRGdOLFFBT0FoSztJQVBVOztjQU9WQTtnQkFBQUEsR0FMUTtlQUtSQTs7O2VBQUFBLFlBQUFBLEdBTlE7Y0FNUkE7Y0FBQUE7O1VBRFE7O1VBRkE7O1VBREE7O1VBRUE7OztLQVFFLElBQUo1QyxJQUFJOzJCQUFKQTsyQkFBQUEsWUFOTjRDOzJCQU1NNUMsYUFOTjRDOzJCQU1NNUMsWUFOTjRDO2lDQU1NNUM7O0lBTEksSUFBSjZNLE1BQUk7MEJBQUpBLFFBRE5qSztnQ0FDTWlLO0dBVWM7WUFFcEJDLFVBQ0FsSztJQURZLFVBQ1pBOzs7Ozs7O0tBR0EsT0FIQUE7O0lBSUssT0FKTEE7R0FJTTtZQUVObUssVUFDQW5LO0lBRFksVUFDWkE7Ozs7Ozs7S0FHQSxPQUhBQTs7SUFJSyxPQUpMQTtHQUlNO1lBRU5vSyxnQkFDQXBLLEdBRGtCLFlBQ2xCQSxlQUFBQSxJQUFBQSxXQUNNO1lBRU5xSyxnQkFDQXJLLEdBRGtCLFlBQ2xCQSxlQUFBQSxJQUFBQSxXQUNNO1lBSU44SCxRQUFRd0MsSUFBR0MsSUFBSyxPQUFSRCxLQUFHQyxPQUFzQjtZQUNqQy9DLE1BQU84QyxJQUFRQyxJQUFTLGNBQWpCRCxLQUFRQyxnQkFBMEI7Ozs7T0FyRHpDeFA7T0FRQWlQO09Bb0JBRTtPQU9BQztPQU9BQztPQUlBQztPQU1BdkM7T0FDQU47OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7SUN4REFnRDtJQUNBQzs7Ozs7SUFNQW5OO0lBQ0FHO0lBQ0FpTjtJQUNBQztJQUVBQztJQUNBQztZQUVBQyxLQUFLbEU7SUFDUCxPQURPQTtjQUxMK0Q7Y0FLSy9ELHNDQWRMNkQsZUFjSzdEO0dBR0Y7WUFFSG1FLEtBQUtuRTtJQUNQLE9BRE9BO2NBWEw4RDtjQVdLOUQsZ0NBcEJMNEQsZUFvQks1RDtHQUdGO1lBRUhvRSxTQUFTOUw7SUFBSSxlQUFKQSx1QkFBQUE7Ozs7d0JBQUFBLHVCQUFBQTs7R0FBOEQ7WUFDdkUrTCxPQUFPL0w7SUFBSSxHQURYOEwsU0FDTzlMLElBQXVCLE9BQXZCQTtJQXhCUTs7T0FBQTtxQkFBQSxzQkF3QlJBO0lBQTBDLE9BQUE7R0FBYztZQUkvRGdNLFFBQVF0RSxHQUFJLE9BQUpBLGdCQUFXO1lBQ25CdUUsUUFBUW5MLEdBQUksT0FBSkEsRUFBZTtZQUN2Qm9MLFFBQVF4RTtJQUNWLFVBRFVBLEdBRVYsT0FGVUE7SUE3QmtCO0tBQUE7T0FBQTs7U0FBQSx3QkE2QmxCQTs7S0E3QmtCLE1BQUE7SUE4QkEsT0FBQTtHQUNYO1lBRWZ5RSxvQjtZQUVBN0QsZ0I7T0FDQU07WUFDQXdELFU7Ozs7T0FqQ0FoTztPQUNBRztPQUlBbU47T0FDQUM7T0FFQUM7T0FLQUM7T0FLQUM7T0FDQUM7cUI7cUI7T0FJQUM7T0FDQUM7T0FDQUM7T0FJQUM7T0FFQTdEO09BQ0FNO09BQ0F3RDs7O0U7Ozs7Ozs7Rzs7Ozs7OztJLGtCO2M7Ozs7Ozs7Ozs7Ozs7SSxJLGMsNkI7OzsyQjs7O0c7Rzt5QyxTO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NEIsa0I7MkI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNqQ0FDLE9BQU9DO0lBQUksSUFKSTlLLGlCQUlSOEs7O2lCQUhELE9BRFM5SztLQUVQLElBQUx6QixjQUFLLFFBRk95QixhQUFBQSxxQkFFWnpCOztHQUVzQjtZQUV6QnlHLEtBQUt0RixHQUFFbkIsR0FBSSxXQUFObUIsR0FBRW5CLEdBQVE7WUFFZk87SUFBSyxZQUNDLE9BQUE7UUFDTlk7SUFBUSxPQUFSQTtHQUFTO1lBRVRiO0lBQUssWUFDQyxPQUFBO1FBQ0hOO0lBQUssT0FBTEE7R0FBTTtZQUVUd00sSUFFY3hNLEdBQUVqQztJQURsQixPQUNrQkEsR0FESixPQUFBO1FBQ0V3TyxNQUFBdk0sR0FBRXlNLE1BQUExTztJQUNoQjtVQURjd08sS0FFTixPQUFBO1NBRk1HLE1BQUFILFFBR1pwTCxJQUhZb0w7S0FHSixTQUhNRSxLQUdRLE9BQXRCdEw7S0FBNkIsSUFIZndMLE1BQUFGLGFBQUZGLE1BQUFHLEtBQUVELE1BQUFFOztHQUlKO1lBRVpDLFFBRWM1TSxHQUFFakM7SUFEbEIsT0FDa0JBLEdBREosT0FBQTtRQUNFd08sTUFBQXZNLEdBQUV5TSxNQUFBMU87SUFDaEI7VUFEY3dPLEtBRU47U0FGTUcsTUFBQUgsUUFHWnBMLElBSFlvTDtLQUdKLFNBSE1FLEtBR1EsV0FBdEJ0TDtLQUFrQyxJQUhwQndMLE1BQUFGLGFBQUZGLE1BQUFHLEtBQUVELE1BQUFFOztHQUlKO09BRVpoRztZQUVJa0csV0FBV3ZOLElBQUdDO0lBQ3BCLElBRGlCdU4sT0FBQXhOLElBQUd5TixPQUFBeE47SUFDcEI7VUFEaUJ1TixNQUVULE9BRllDO0tBR0s7TUFIUkMsT0FBQUY7TUFHZjNMLElBSGUyTDtNQUFHRyxXQUdsQjlMLEdBSGtCNEw7TUFBSEQsT0FBQUU7TUFBR0QsT0FBQUU7O0dBR2M7WUFFaENDLElBQUlsTixHQUFJLE9BTEo2TSxXQUtBN00sTUFBbUI7WUFNbkJtTixTQUFTbE4sR0FBRWxDLEdBQUVaO0lBQ25CLEdBRGlCWSxLQUFGa0MsR0FDQTtJQUVMLElBQUp6QyxJQUFJLFdBSFNMLEdBQUo4QztJQUliLFdBREl6QyxHQUhBMlAsU0FBU2xOLFdBQUVsQyxHQUFFWjtHQUlNO09BRXZCaVE7WUFPQUMsS0FBSzVMLEtBQUl0RTtJQUNYLE9BRE9zRSxLQUNTLE9BQUE7T0FSZDJMLHNCQU9LM0wsS0FHRixPQWhCQzBMLFlBYUMxTCxLQUFJdEU7UUFqQlltSyxTQUFJckg7SUFDM0I7UUFnQk93QixPQWpCb0J4QixHQW1CVSxPQXJCbkNpTixJQUVxQjVGO0tBRUQ7TUFGS3BILE1BQUFEO01BQUpzSCxZQUVBLFdBZVpwSyxHQWpCZ0I4QyxJQUFKcUg7TUFBQUEsTUFBQUM7TUFBSXRILElBQUFDOztHQW9CTjtZQUVmb047SUFBVSxZQUNSO0lBQ00sSUFBVDlQLGNBQUh3QyxjQUFZLE1BRlJzTixRQUVEOVA7SUFBUyxPQUFBLHVCQUFad0M7R0FBcUI7WUFJakI4RyxJQUFJM0o7SSxZQUNGO0lBQ1UsSUFBYjZDLGNBQUhtQixjQUFZM0QsSUFBSSxXQUZSTCxHQUVSZ0U7SUFBdUIsV0FBWDNELEdBRlJzSixJQUFJM0osR0FFTDZDOztnQkFFTUMsR0FBRTlDO0ksWUFDTDtJQUNVLElBQWI2QyxjQUFIbUIsY0FBWTNELElBQUksV0FGTEwsR0FBRjhDLEdBRVRrQjtJQUF5QixXQUFiM0QsT0FGSHlDLFdBQUU5QyxHQUVSNkM7O1lBRUh1TixLQUFLcFEsR0FBRTZDLEdBQUksY0FBTjdDLEdBQUU2QyxHQUFjO1lBRXJCd04sUUFBUXJRLEdBQUU2QztJQUNaLElBQWUrQyxrQkFESC9DOztpQkFFRixPQURLK0M7S0FFSTtNQUFad0o7TUFBSHBMO01BQWUsYUFBQyxXQUhWaEUsR0FHTmdFLElBRlc0QjtNQUFBQTtjQUVSd0o7O0dBRUk7WUFHTDlFLEtBQUt0Szs7O21CQUNIO1NBQ0g2QyxnQkFBSG1CO0tBQVEsV0FGQ2hFLEdBRVRnRTttQkFBR25COzs7WUFNSHlOLE1BQU10USxHQUFFb1A7SUFBSSxJQUpGdE0sZUFJRnNNOztpQkFIRjtTQUNIdk0sY0FBSG1CO0tBQVEsV0FFRmhFLEdBSkk4QyxHQUVWa0I7ZUFGVWxCLFdBQUFBLGlCQUVQRDs7R0FFb0I7WUFFbkJxSCxVQUFVbEssR0FBRTRGLE1BQUsvQztJQUN2QixJQURrQmlELFNBQUFGLE1BQUt3SixNQUFBdk07SUFDdkI7VUFEdUJ1TSxLQUVmLE9BRlV0SjtLQUdJO01BSEN5SixNQUFBSDtNQUdyQnBMLElBSHFCb0w7TUFBTG1CLFNBR0ksV0FITnZRLEdBQUU4RixRQUdoQjlCO01BSGdCOEIsU0FBQXlLO01BQUtuQixNQUFBRzs7R0FHVztZQUU1QmlCLFdBQVd4USxHQUFFNkMsR0FBRStDO0lBQ3JCLEtBRG1CL0MsR0FFWCxPQUZhK0M7UUFHaEJ3SixNQUhjdk0sTUFHakJtQixJQUhpQm5CO0lBR0wsT0FBQSxXQUhHN0MsR0FHZmdFLEdBSEl3TSxXQUFXeFEsR0FHWm9QLEtBSGdCeEo7R0FHYztZQUU3QjZLLEtBQUt6USxHQUFFbUMsSUFBR0M7SUFDaEIsR0FEYUQ7UUFBR0M7TUFHYztPQUFmd04sT0FIQ3hOO09BR0xzTyxLQUhLdE87T0FHVHVOLE9BSE14TjtPQUdWd08sS0FIVXhPO09BR2E5QixJQUFJLFdBSG5CTCxHQUdSMlEsSUFBUUQ7TUFBOEIsV0FBZnJRLEdBSHBCb1EsS0FBS3pRLEdBR0oyUCxNQUFRQzs7O2NBSEN4TixJQUVGO0lBRUYsT0FBQTtHQUF1QjtZQUVqQ3dPLFNBQVM1USxHQUNVbUMsSUFBR0M7SUFBeEIsSUFBZ0J3RCxVQUFLK0osT0FBQXhOLElBQUd5TixPQUFBeE47SUFDdEI7UUFEbUJ1TjtTQUFHQztPQUdRO1FBSFJFLE9BQUFGO1FBR1hjLEtBSFdkO1FBQUhDLE9BQUFGO1FBR2hCZ0IsS0FIZ0JoQjtRQUFMN0osYUFHaUIsV0FKdEI5RixHQUlOMlEsSUFBUUQsS0FIRzlLO1FBQUFBLE9BQUFFO1FBQUs2SixPQUFBRTtRQUFHRCxPQUFBRTs7OztlQUFBRixNQUVSLE9BRkFoSztLQUlGLE9BQUE7O0dBRUU7WUFHVmlMLE1BQU03USxHQUFFbUMsSUFBR0M7SUFDakIsSUFEY3VOLE9BQUF4TixJQUFHeU4sT0FBQXhOO0lBQ2pCO1FBRGN1TjtTQUFHQztXQUFBRSxPQUFBRixTQUdOYyxLQUhNZCxTQUFIQyxPQUFBRixTQUdYZ0IsS0FIV2hCO09BR1EsV0FIVjNQLEdBR1QyUSxJQUFRRDtXQUhHZixPQUFBRSxNQUFHRCxPQUFBRTs7OztlQUFBRixNQUVIO0tBRUYsT0FBQTs7R0FBd0I7WUFFOUJrQixXQUFXOVEsR0FBRTRGLE1BQUt6RCxJQUFHQztJQUMzQixJQURtQjBELFNBQUFGLE1BQUsrSixPQUFBeE4sSUFBR3lOLE9BQUF4TjtJQUMzQjtRQUR3QnVOO1NBQUdDO09BR1E7UUFIUkUsT0FBQUY7UUFHaEJjLEtBSGdCZDtRQUFIQyxPQUFBRjtRQUdyQmdCLEtBSHFCaEI7UUFBTFksU0FHZ0IsV0FIbEJ2USxHQUFFOEYsUUFHaEI2SyxJQUFRRDtRQUhRNUssU0FBQXlLO1FBQUtaLE9BQUFFO1FBQUdELE9BQUFFOzs7O2VBQUFGLE1BRWIsT0FGSzlKO0tBSVAsT0FBQTs7R0FBNkI7WUFFbkNpTCxZQUFZL1EsR0FBRW1DLElBQUdDLElBQUd3RDtJQUMxQixHQURvQnpEO1FBQUdDO1VBR1J3TixPQUhReE4sT0FHWnNPLEtBSFl0TyxPQUdoQnVOLE9BSGF4TixPQUdqQndPLEtBSGlCeE87TUFHVSxPQUFBLFdBSFpuQyxHQUdmMlEsSUFBUUQsSUFITEssWUFBWS9RLEdBR1gyUCxNQUFRQyxNQUhXaEs7OztjQUFIeEQsSUFFVCxPQUZZd0Q7SUFJZCxPQUFBO0dBQThCO1lBRXBDb0wsUUFBUUM7OzttQkFDTjtLQUNFLElBQUxwTyxnQkFBSG1CLGdCQUFRLE1BQUEsV0FGSWlOLEdBRVpqTjtLQUFRLFVBQUE7bUJBQUxuQjs7O1lBRUNxTyxPQUFPRDs7O21CQUNMO0tBQ0UsSUFBTHBPLGdCQUFIbUIsZ0JBQVEsTUFBQSxXQUZHaU4sR0FFWGpOO0tBQVEsUUFBQTttQkFBTG5COzs7WUFFQ3NPLFNBQVNGLEdBQUU5TyxJQUFHQztJQUNwQixJQURpQnVOLE9BQUF4TixJQUFHeU4sT0FBQXhOO0lBQ3BCO1FBRGlCdU47U0FBR0M7T0FHRTtRQUhGRSxPQUFBRjtRQUdUYyxLQUhTZDtRQUFIQyxPQUFBRjtRQUdkZ0IsS0FIY2hCO1FBR0ssTUFBQSxXQUhQc0IsR0FHWk4sSUFBUUQ7T0FBVyxVQUFBO1dBSExmLE9BQUFFLE1BQUdELE9BQUFFOzs7O2VBQUFGLE1BRU47S0FFRixPQUFBOztHQUEyQjtZQUVqQ3dCLFFBQVFILEdBQUU5TyxJQUFHQztJQUNuQixJQURnQnVOLE9BQUF4TixJQUFHeU4sT0FBQXhOO0lBQ25CO1FBRGdCdU47U0FBR0M7T0FHRztRQUhIRSxPQUFBRjtRQUdSYyxLQUhRZDtRQUFIQyxPQUFBRjtRQUdiZ0IsS0FIYWhCO1FBR00sTUFBQSxXQUhSc0IsR0FHWE4sSUFBUUQ7T0FBVyxRQUFBO1dBSE5mLE9BQUFFLE1BQUdELE9BQUFFOzs7O2VBQUFGLE1BRUw7S0FFRixPQUFBOztHQUEwQjtZQUVoQ3lCLElBQUlsUTs7O21CQUNGOztNQUNIMEI7TUFBSG1CO2tCQUFRLGFBQVJBLEdBRlE3Qzs7bUJBRUwwQjs7O1lBRUN5TyxLQUFLblE7OzttQkFDSDtTQUNIMEIsZ0JBQUhtQixzQkFBQUEsTUFGUzdDOzttQkFFTjBCOzs7WUFFQzBPLE1BQU1wUTs7O21CQUNKLE1BQUE7U0FDQzBCLG9DQUFKTixjQUFGeUI7S0FBYyxTQUFBLGFBQWRBLEdBRlM3QyxJQUUwQixPQUFqQ29CO21CQUFJTTs7O1lBRUgyTyxVQUFVclE7OzttQkFDUjtTQUNDMEIsb0NBQUpOLGNBQUZ5QjtLQUFjLFNBQUEsYUFBZEEsR0FGYTdDLElBRXNCLFdBQWpDb0I7bUJBQUlNOzs7WUFFSDRPLEtBQUt0UTs7O21CQUNILE1BQUE7U0FDQzBCLG9DQUFKTixjQUFGeUI7UUFBQUEsTUFGUTdDLEdBRWtCLE9BQXhCb0I7bUJBQUlNOzs7WUFFSDZPLFNBQVN2UTs7O21CQUNQO1NBQ0MwQixvQ0FBSk4sY0FBRnlCO1FBQUFBLE1BRlk3QyxHQUVjLFdBQXhCb0I7bUJBQUlNOzs7WUFFSDhPLFVBQVV4UTs7O21CQUNSOztNQUNJMEI7TUFBVG1CO2tCQUFjLGFBQWRBLEdBRmE3Qzs7bUJBRUowQjs7O1lBRU4rTyxTQUFTelE7OzttQkFDUDtTQUNJMEIsZ0JBQVRtQix5QkFBQUEsTUFGWTdDOzttQkFFSDBCOzs7WUFFTmdQLGFBQWExUTtJLFlBQ1g7UUFDWTBCLGNBQWxCaVAsaUJBQUM5TixJQUFEOE47SUFDSyxhQUFBLGFBREo5TixHQUZnQjdDLEtBRUMwQixRQUFsQmlQLE1BRklELGFBQWExUSxHQUVDMEI7O1lBR2RrUCxZQUFZNVE7SSxZQUNWO1FBQ1kwQixjQUFsQmlQLGlCQUFDOU4sSUFBRDhOO1dBQUM5TixNQUZlN0MsSUFFRTBCLFFBQWxCaVAsTUFGSUMsWUFBWTVRLEdBRUUwQjs7WUFFZG1QLEtBQUtmOzs7bUJBQ0gsTUFBQTtTQUNEcE8sZ0JBQUwxQjtLQUFhLEdBQUEsV0FGSjhQLEdBRVQ5UCxJQUFzQixPQUF0QkE7bUJBQUswQjs7O1lBRURvUCxTQUFTaEI7OzttQkFDUDtTQUNEcE8sZ0JBQUwxQjtLQUFhLEdBQUEsV0FGQThQLEdBRWI5UCxJQUFzQixXQUF0QkE7bUJBQUswQjs7O1lBRURxUCxTQUFTbFM7OzttQkFDUDtLQUVPLElBRFI2QyxnQkFBTDFCLGdCQUVLZ1IsU0FEUSxXQUhBblMsR0FFYm1CO1FBRUtnUixRQUFvQixPQUFwQkE7bUJBRkF0UDs7O1lBTUx1UCxTQUFTbkI7SUFJWDtJQUFBO1NBSGFuTDs7a0JBQ0wsT0FyTE5pSyxJQW9MV2pLO1VBRU5qRCxjQUFMMUI7TUFBYSxHQUFBLFdBSEo4UCxHQUdUOVA7T0FBMkIsSUFBQSxhQUEzQkEsR0FGVzJFLFNBQUFBLHlCQUVOakQ7O21CQUFBQTs7R0FDQTtZQUlMd1AsUUFBUXBCLEdBQUVwTztJQUNaLElBQVlDLE9BQUVxSCxpQkFERnRIOztpQkFFSixPQTdMTmtOLElBNExZNUY7S0FFWTtNQUFyQmlGO01BQUhqTztNQUF3QixRQUFBLFdBSGhCOFAsR0FDRW5PLEdBRVYzQixTQUFBQSxHQUZZZ0osT0FBQUE7WUFBRnJIO01BQUFBO01BQUVxSDtjQUVUaUY7O0dBRUs7WUFFUnZGLFdBQVc3SjtJQVFiO0lBQUE7U0FQWThGOztrQkFDRixPQXBNUmlLLElBbU1Vaks7TUFHQSxJQURIakQsY0FBTDFCLGNBQ1EsUUFBQSxXQUpDbkIsR0FHVG1COztPQUdrQixJQUFUaEIsY0FBUyxhQUFUQSxHQUxEMkYsU0FBQUEseUJBRUhqRDs7bUJBQUFBOztHQUtIO1lBRUp5UCxXQUNVdFMsR0FERzZDO0lBQ2YsSUFBY3NILGlCQURDdEg7O2lCQUVMLE9BOU1Sa04sSUE2TVk1RjtLQUdBO01BRExpRjtNQUFMak87TUFDS29SLEtBQUssV0FIRnZTLEdBRVJtQjtNQUVPLFFBdE5MdU8sV0FxTkc2QyxJQUhLcEk7TUFBQUE7Y0FFTGlGOztHQUdJO1lBRVhvRCxjQUFjeFMsR0FBRTRGLE1BQUsvQztJQUN2QixJQUFZaUQsU0FETUYsTUFDRDZNLG9CQURNNVA7O2lCQUViLFdBREVpRCxRQXJOVmlLLElBcU5lMEM7S0FHRztNQURYckQ7TUFBTGpPO01BQ2dCLFFBQUEsV0FKSm5CLEdBQ0o4RixRQUVSM0U7TUFDWXVSO01BQU5uQztNQUNLLGVBRENtQyxLQUhDRDtNQUFMM00sU0FHRnlLO01BSE9rQztjQUVSckQ7O0dBR0k7WUFFWHVELFVBQVUxQixHQUFFcE87SUFDZCxJQUFhK1AsU0FBSUMsZ0JBREhoUTs7aUJBRUksVUE5TmhCa04sSUE2TmU4QyxLQUNULFdBOU5OOUMsSUE2Tlc2QztTQUVOeEQsZ0JBQUxqTztLQUFhLEdBQUEsV0FISDhQLEdBR1Y5UDtNQUEyQixJQUFBLFlBQTNCQSxHQUZXeVIsTUFBQUEscUJBRU54RDs7TUFBb0QsSUFBQSxXQUF6RGpPLEdBRmUwUixLQUFBQSxtQkFFVnpEOztHQUNLO1lBRVYwRCxjQUFjN0IsR0FBRXBPO0lBQ2xCLElBQWFrSixVQUFLQyxtQkFEQW5KOztpQkFFQyxVQXBPakJrTixJQW1PZ0IvRCxRQUNWLFdBcE9OK0QsSUFtT1doRTtLQUdFLElBRFJxRCxnQkFBTGpPLGNBQ2EsUUFBQSxXQUpDOFAsR0FHZDlQOztNQUUyQixJQUFWaEIsY0FBVSxhQUFWQSxHQUpONEwsT0FBQUEsdUJBRU5xRDs7TUFHNEI7T0FBZjVDO09BQWUsY0FBZkEsS0FMRlI7T0FBQUE7ZUFFWG9EOztHQU1LO1lBRU4yRDtJQUFRLFlBQ047SUFFVztLQURWbFE7O0tBQUp6QjtLQUFGRDtLQUNnQixVQUhiNFIsTUFFR2xRO0tBQ0ltUTtLQUFKQztJQUFxQixlQUQzQjlSLEdBQ004UixTQURKN1IsR0FDUTRSO0dBQStCO1lBRXRDRSxRQUFRL1EsSUFBR0M7SUFDakIsR0FEY0Q7UUFBR0M7VUFHRndOLE9BSEV4TixPQUdOc08sS0FITXRPLE9BR1Z1TixPQUhPeE4sT0FHWHdPLEtBSFd4TztNQUdRLGVBQW5Cd08sSUFBUUQsS0FITHdDLFFBR0N2RCxNQUFRQzs7O2NBSEV4TixJQUVIO0lBRUYsT0FBQTtHQUEwQjtZQUloQytRLE1BQU14SCxLQUdWeEosSUFESUM7SUFETixLQUVFRCxJQURVLE9BQU5DO1NBQUFBLElBQ00sT0FBVkQ7UUFDZ0JpUixLQUZaaFIsT0FFTWlSLEtBRk5qUixPQUVFa1IsS0FETm5SLE9BQ0FvUixLQURBcFI7SUFFSyxXQUFBLFdBTEt3SixLQUlWNEgsSUFBVUY7a0JBQUFBLElBSk5GLE1BQU14SCxLQUdWeEosSUFDZ0JpUjtrQkFBaEJHLElBSklKLE1BQU14SCxLQUlKMkgsSUFGRmxSO0dBS3dCO1lBRzVCb1IsWUFBWTdILEtBQUk5STthQW1CVjRRLEtBQUs3UyxHQUFFaUM7S0FDYixTQURXakM7U0FBRWlDO21CQUFBQTs7UUFHRTtTQURFTTtTQUFOdVE7U0FBTkMsS0FGUTlRO1NBR0w3QjtlQUFPLFdBdEJIMkssS0FxQlBnSSxJQUFNRDtrQkFBQUEsUUFBTkM7a0JBQUFBLFFBQU1EO1FBRVAsV0FESTFTLEdBRFNtQzs7OzttQkFGTnZDLEtBQUVpQztnQkFBQUE7Ozs7UUFPSjtTQUZjK1E7U0FBTkM7U0FBTkM7U0FBTkMsT0FMUWxSO1NBTUxnTDtlQUNDLFdBMUJHbEMsS0F3QlBvSSxNQUFNRDs7Z0JBTUcsV0E5QkZuSSxLQXdCUG9JLE1BQVlGOztrQkFPSCxXQS9CRmxJLEtBd0JEbUksTUFBTUQ7c0JBQUFBLFFBQU5DLFVBQU5DO3NCQUFNRCxVQUFNRCxRQUFaRTtvQkFBTUQsVUFBTkMsVUFBWUY7O2dCQUdOLFdBM0JDbEksS0F3QkRtSSxNQUFNRDs7a0JBSUQsV0E1QkpsSSxLQXdCUG9JLE1BQVlGO3NCQUFBQSxRQUFaRSxVQUFNRDtzQkFBTkMsVUFBWUYsUUFBTkM7b0JBQU5DLFVBQU1ELFVBQU1EO1FBVWIsV0FUSWhHLEtBRGUrRjs7OztLQWNOO01BRlRJLEtBakJHcFQ7TUFrQkhxVCxLQWxCR3JULElBaUJIb1Q7TUFFUyxVQUdmRSxTQUxNRixJQWpCS25SO01BbUJEK007TUE1QlEzTjtNQTZCSCxVQUVmaVMsU0FKTUQsSUFDSXJFO01BQ0F1RTtNQTdCV2pTO01BR3JCQyxLQUhrQkY7TUFFZEcsS0FGaUJGO01BQUcwRDtLQUMxQjtTQUVFekQ7VUFESUM7WUFGaUJnUixLQUVqQmhSLE9BRUlpUixLQUZKalIsT0FGY2tSLEtBR2xCblIsT0FDQW9SLEtBREFwUjtRQUVLLE9BQUEsV0FmS3dKLEtBY1Y0SCxJQUFRRjtTQUVtQixJQU5Idk4sYUFJeEJ5TixJQUp3QjNOLE9BR3hCekQsS0FIa0JtUixJQUFNMU4sT0FBQUU7OztRQU9HLElBUEh5SyxhQUloQjhDLElBSmdCek4sT0FFcEJ4RCxLQUZpQmdSLElBQUd4TixPQUFBMks7OztpQkFuUnRCYixXQXNSRnZOLElBSHdCeUQ7OztpQkFuUnRCOEosV0FxUkV0TixJQUZvQndEO01BOEJ0QixnQkFEUXVPOztJQUNvQjthQUM5QkQsU0FBU3RULEdBQUVpQztLQUNiLFNBRFdqQztTQUFFaUM7bUJBQUFBOztRQUdFO1NBREVNO1NBQU51UTtTQUFOQyxLQUZROVE7U0FHTDdCO2VBQU8sV0E1Q0gySyxLQTJDUGdJLElBQU1EO2tCQUFOQyxRQUFNRDtrQkFBQUEsUUFBTkM7UUFFRCxXQURJM1MsR0FEU21DOzs7O21CQUZOdkMsS0FBRWlDO2dCQUFBQTs7OztRQU9KO1NBRmMrUTtTQUFOQztTQUFOQztTQUFOQyxPQUxRbFI7U0FNTGdMO2VBQ0MsV0FoREdsQyxLQThDUG9JLE1BQU1EOztnQkFHQSxXQWpEQ25JLEtBOENEbUksTUFBTUQ7b0JBQVpFLFVBQU1ELFVBQU1EOztrQkFJRCxXQWxESmxJLEtBOENQb0ksTUFBWUY7c0JBQVpFLFVBQVlGLFFBQU5DO3NCQUFNRCxRQUFaRSxVQUFNRDs7Z0JBTUcsV0FwREZuSSxLQThDUG9JLE1BQVlGO29CQUFOQyxVQUFOQyxVQUFZRjs7a0JBT0gsV0FyREZsSSxLQThDRG1JLE1BQU1EO3NCQUFOQyxVQUFNRCxRQUFaRTtzQkFBWUYsUUFBTkMsVUFBTkM7UUFVRCxXQVRJbEcsS0FEZStGOzs7O0tBY047TUFGVEksS0FqQkdwVDtNQWtCSHFULEtBbEJHclQsSUFpQkhvVDtNQUVTLFVBekNYUCxLQXVDRU8sSUFqQktuUjtNQW1CRCtNO01BM0RJM047TUE0REMsVUExQ1h3UixLQXdDRVEsSUFDSXJFO01BQ0F1RTtNQTVET2pTO01BR2pCQyxLQUhjRjtNQUVWRyxLQUZhRjtNQUFHMEQ7S0FDdEI7U0FFRXpEO1VBRElDO1lBRmFnUixLQUViaFIsT0FFSWlSLEtBRkpqUixPQUZVa1IsS0FHZG5SLE9BQ0FvUixLQURBcFI7UUFFSyxPQUFBLFdBTkt3SixLQUtWNEgsSUFBUUY7U0FHZSxJQVBIdk4sYUFJWnVOLElBSll6TixPQUVoQnhELEtBRmFnUixJQUFHeE4sT0FBQUU7OztRQU1HLElBTkh5SyxhQUlwQmdELElBSm9CM04sT0FHcEJ6RCxLQUhjbVIsSUFBTTFOLE9BQUEySzs7O2lCQTFRbEJiLFdBNlFGdk4sSUFIb0J5RDs7O2lCQTFRbEI4SixXQTRRRXROLElBRmdCd0Q7TUE2RGxCLGdCQURRdU87O0lBQ2dCO0lBRXBCLElBQU43UCxNQXZXRjZLLE9BdVNnQnRNO0lBaUVsQixZQURJeUIsTUE3Q0ltUCxLQTZDSm5QLEtBaEVjekIsUUFBQUE7R0FpRXFCO1lBeUNyQ3VSLFVBQVV6SSxLQUFJOUk7YUF1QlI0USxLQUFLN1MsR0FBRWlDO0tBQ2IsU0FEV2pDO1NBQUVpQzttQkFBQUE7O1FBSUM7U0FGR007U0FBTnVRO1NBQU5DLEtBRlE5UTtTQUlId1IsTUFBSSxXQTNCSjFJLEtBeUJMZ0ksSUFBTUQ7U0FDSDFTO2lCQUNFcVQ7a0JBRkxWO21CQUVLVSxVQUZDWCxRQUFOQyxjQUFBQSxRQUFNRDtRQUtQLFdBSkkxUyxHQURTbUM7Ozs7bUJBRk52QyxLQUFFaUM7Z0JBQUFBOzs7O1FBVUM7U0FGUytRO1NBQU5DO1NBQU5DO1NBQU5DLE9BUlFsUjtTQVVIeVIsTUFBSSxXQWpDSjNJLEtBK0JMb0ksTUFBTUQ7UUFHTCxTQURJUTtTQUVNO1VBQUpDLE1BQUksV0FuQ041SSxLQStCQ21JLE1BQU1EO1VBS1Q7a0JBRElVO21CQUpEVDtvQkFJQ1MsVUFKS1YsUUFBTkMsZ0JBQUFBLFVBQU1EO1VBQ1RoRztxQkFDRXlHO1NBY00sSUFBSkUsTUFBSSxXQS9DTjdJLEtBK0JMb0ksTUFBWUY7U0FpQlQsU0FESVc7d0JBaEJEVixVQUFOQztzQkFnQk9TO1VBSU07V0FBSkMsTUFBSSxXQW5EUjlJLEtBK0JDbUksTUFBTUQ7V0FxQlA7bUJBRElZO29CQXBCSFgsVUFBTkM7O21CQW9CU1U7c0JBcEJHWixRQUFOQyxVQUFOQztzQkFBTUQsVUFBTUQsUUFBWkU7Ozt3QkFBTUQsVUFBTkMsVUFBWUY7YUFDVGhHOzs7U0FNUSxJQUFKNkcsTUFBSSxXQXRDTi9JLEtBK0JDbUksTUFBTUQ7U0FRVCxTQURJYTt3QkFQUFgsVUFBTUQ7c0JBT0NZO1VBSU07V0FBSkMsTUFBSSxXQTFDUmhKLEtBK0JMb0ksTUFBWUY7V0FZUDttQkFESWM7b0JBWFRaLFVBQU1EOzttQkFXR2E7c0JBWEdkLFFBQVpFLFVBQU1EO3NCQUFOQyxVQUFZRixRQUFOQzs7O3dCQUFOQyxVQUFNRCxVQUFNRDthQUNUaEc7O1FBd0JKLFdBeEJJQSxLQURlK0Y7Ozs7S0E2Qk47TUFGVEksS0FuQ0dwVDtNQW9DSHFULEtBcENHclQsSUFtQ0hvVDtNQUVTLFVBR2ZFLFNBTE1GLElBbkNLblI7TUFxQ0QrTTtNQWhEUTNOO01BaURILFVBRWZpUyxTQUpNRCxJQUNJckU7TUFDQXVFO01BakRXalM7TUFHckJDLEtBSGtCRjtNQUVkRyxLQUZpQkY7TUFBRzBEO0tBQzFCO1NBRUV6RDtVQURJQztRQUdNO1NBTFdnUixLQUVqQmhSO1NBRUlpUixLQUZKalI7U0FGY2tSLEtBR2xCblI7U0FDQW9SLEtBREFwUjtTQUVNeUIsSUFBSSxXQWpCRitILEtBZ0JSNEgsSUFBUUY7UUFFTixTQURJelA7U0FDOEIsSUFOWmtDLGFBSXhCeU4sSUFKd0IzTixPQUd4QnpELEtBSGtCbVIsSUFFZGxSLEtBRmlCZ1IsSUFBR3hOLE9BQUFFOzs7ZUFLbEJsQztTQUdxQixJQVJIMk0sYUFJeEJnRCxJQUp3QjNOLE9BR3hCekQsS0FIa0JtUixJQUFNMU4sT0FBQTJLOzs7UUFTRyxJQVRIcUUsYUFJaEJ2QixJQUpnQnpOLE9BRXBCeEQsS0FGaUJnUixJQUFHeE4sT0FBQWdQOzs7aUJBL1h0QmxGLFdBa1lGdk4sSUFId0J5RDs7O2lCQS9YdEI4SixXQWlZRXROLElBRm9Cd0Q7TUFrRHRCLGdCQURRdU87O0lBQ29CO2FBQzlCRCxTQUFTdFQsR0FBRWlDO0tBQ2IsU0FEV2pDO1NBQUVpQzttQkFBQUE7O1FBSUM7U0FGR007U0FBTnVRO1NBQU5DLEtBRlE5UTtTQUlId1IsTUFBSSxXQW5FSjFJLEtBaUVMZ0ksSUFBTUQ7U0FDSDFTO2lCQUNFcVQ7a0JBRkxWO2tCQUVLVSxVQUZMVixRQUFNRCxjQUFBQSxRQUFOQztRQUtELFdBSkkzUyxHQURTbUM7Ozs7bUJBRk52QyxLQUFFaUM7Z0JBQUFBOzs7O1FBVUM7U0FGUytRO1NBQU5DO1NBQU5DO1NBQU5DLE9BUlFsUjtTQVVIeVIsTUFBSSxXQXpFSjNJLEtBdUVMb0ksTUFBTUQ7UUFHTCxTQURJUTtTQUVNO1VBQUpDLE1BQUksV0EzRU41SSxLQXVFQ21JLE1BQU1EO1VBS1Q7a0JBRElVO21CQUpEVDttQkFJQ1MsVUFKRFQsVUFBTUQsY0FBQUEsUUFBTkM7VUFDSGpHO29CQUNFeUc7U0FLTSxJQUFKRSxNQUFJLFdBOUVON0ksS0F1RUNtSSxNQUFNRDtTQVFULFNBRElXO3dCQVBQVCxVQUFNRDtxQkFPQ1U7d0JBUFBULFVBQU1ELFVBQU1EOztVQVdDO1dBQUpZLE1BQUksV0FsRlI5SSxLQXVFTG9JLE1BQVlGO1dBWVA7bUJBRElZO29CQVhUVixVQUFNRDs7a0JBV0dXO3NCQVhUVixVQUFZRixRQUFOQztzQkFBTUQsUUFBWkUsVUFBTUQ7O2FBQ0hqRzs7O1NBZVEsSUFBSjZHLE1BQUksV0F2Rk4vSSxLQXVFTG9JLE1BQVlGO1NBaUJULFNBRElhO3dCQWhCRFosVUFBTkM7cUJBZ0JPVzt3QkFoQkRaLFVBQU5DLFVBQVlGOztVQW9CQztXQUFKYyxNQUFJLFdBM0ZSaEosS0F1RUNtSSxNQUFNRDtXQXFCUDttQkFESWM7b0JBcEJIYixVQUFOQzs7a0JBb0JTWTtzQkFwQkhiLFVBQU1ELFFBQVpFO3NCQUFZRixRQUFOQyxVQUFOQzs7YUFDR2xHOztRQXdCSixXQXhCSUEsS0FEZStGOzs7O0tBNkJOO01BRlRJLEtBbkNHcFQ7TUFvQ0hxVCxLQXBDR3JULElBbUNIb1Q7TUFFUyxVQTdFWFAsS0EyRUVPLElBbkNLblI7TUFxQ0QrTTtNQW5HSTNOO01Bb0dDLFVBOUVYd1IsS0E0RUVRLElBQ0lyRTtNQUNBdUU7TUFwR09qUztNQUdqQkMsS0FIY0Y7TUFFVkcsS0FGYUY7TUFBRzBEO0tBQ3RCO1NBRUV6RDtVQURJQztRQUdNO1NBTE9nUixLQUViaFI7U0FFSWlSLEtBRkpqUjtTQUZVa1IsS0FHZG5SO1NBQ0FvUixLQURBcFI7U0FFTXlCLElBQUksV0FORitILEtBS1I0SCxJQUFRRjtRQUVOLFNBREl6UDtTQUMwQixJQU5aa0MsYUFJcEJ5TixJQUpvQjNOLE9BR3BCekQsS0FIY21SLElBRVZsUixLQUZhZ1IsSUFBR3hOLE9BQUFFOzs7Z0JBS2RsQztTQUlpQixJQVRIMk0sYUFJWjhDLElBSll6TixPQUVoQnhELEtBRmFnUixJQUFHeE4sT0FBQTJLOzs7UUFRRyxJQVJIcUUsYUFJcEJyQixJQUpvQjNOLE9BR3BCekQsS0FIY21SLElBQU0xTixPQUFBZ1A7OztpQkFwWGxCbEYsV0F1WEZ2TixJQUhvQnlEOzs7aUJBcFhsQjhKLFdBc1hFdE4sSUFGZ0J3RDtNQXFHbEIsZ0JBRFF1Tzs7SUFDZ0I7SUFFcEIsSUFBTjdQLE1BemZGNkssT0FpWmN0TTtJQXlHaEIsWUFESXlCLE1BakZJbVAsS0FpRkpuUCxLQXhHWXpCLFFBQUFBO0dBeUd1QjtZQUdqQ2dTLGdCQUFnQjFTLElBQUdDO0lBQ3pCLElBRHNCdU4sT0FBQXhOLElBQUd5TixPQUFBeE47SUFDekI7VUFEc0J1TixhQUFHQztVQUFBQSxNQUlkO1NBSmNFLE9BQUFGLFNBQUhDLE9BQUFGLFNBQUFBLE9BQUFFLE1BQUdELE9BQUFFOztHQUtrQjtZQUdyQ2dGLG9CQUFvQmpTLEdBQUVqQztJQUM1QixJQUQwQndPLE1BQUF2TSxHQUFFeU0sTUFBQTFPO0lBQzVCO1VBRDBCd08sa0JBQUVFLGNBQUFBO1NBQUZDLE1BQUFIO0tBTXhCLFFBTjBCRSxLQU1YO0tBQ2IsSUFQd0JFLE1BQUFGLGFBQUZGLE1BQUFHLEtBQUVELE1BQUFFOztHQU9HO1lBVXpCcEUsTUFBTUMsSUFBR2xKLElBQUdDO0lBQ2xCLElBRGV1TixPQUFBeE4sSUFBR3lOLE9BQUF4TjtJQUNsQjtRQURldU47U0FBR0M7T0FJRTtRQUpGRSxPQUFBRjtRQUlSYyxLQUpRZDtRQUFIQyxPQUFBRjtRQUliZ0IsS0FKYWhCO1FBSUssTUFBQSxXQUpSdEUsSUFJVnNGLElBQVFEO09BQVUsVUFBQTtXQUpMZixPQUFBRSxNQUFHRCxPQUFBRTs7OztlQUFBRixNQUVOO0tBQ2E7O0dBQ3FCO1lBRXhDbEUsUUFBUUMsS0FBSXhKLElBQUdDO0lBQ3JCLElBRGtCdU4sT0FBQXhOLElBQUd5TixPQUFBeE47SUFDckI7VUFEa0J1TixhQUFHQztTQUFIQyxPQUFBRixTQUtoQmdCLEtBTGdCaEI7VUFBR0MsTUFJUDtLQUVKLElBTldFLE9BQUFGLFNBS1hjLEtBTFdkLFNBTWZoTSxJQUFJLFdBTkkrSCxLQUtaZ0YsSUFBUUQ7S0FFUixTQURJOU0sR0FDVyxPQURYQTtTQU5ZK0wsT0FBQUUsTUFBR0QsT0FBQUU7O0dBUUc7WUFJdEJoRSxPQUFPako7SUFDVCxTQUFRa1MsSUFBSWxTO0tBQU8sS0FBUEEsR0FDRjtTQUNEbVMsT0FGR25TLE1BRVIxQixJQUZRMEI7S0FFSyxXQUFiMUIsaUIsT0FGSTRULElBRUNDO0lBQThCO0lBRXZDLHFCLE9BSlFELElBRENsUztHQUtKO1lBRUhvUyxPQUFPckw7YUFDRHNMLE9BQU9DLE9BQU12TDtLQUNuQixTQURhdUw7a0NBR1FoTCxLQUFJaEosR0FBSyxXQUFMQSxHQUFKZ0osS0FBZTtNQUFsQyxPQWhoQkY0RixJQWdoQkUscUNBSGlCbkc7O0tBS1IsWUFBQSxXQUxRQTtpQkFNSjtTQUNFTCxpQkFBSHBJO0tBQVksV0FBWkEsR0FQUitULE9BQU9DLGVBT0k1TDtJQUFtQztJQUV0RCxPQVRRMkwsWUFEQ3RMO0dBVUs7Ozs7T0F6akJadUY7T0E2ZkkwRjtPQVFBQztPQW5nQkp4TDtPQUVBbEc7T0FJQUQ7T0FJQWtNO09BUUFJO09BZUFNO09BbUJBRztPQTFCQTFHO09BRUlrRztPQTZCQVM7T0FBQUE7T0EyZEEvRTtPQU1BTTtPQXpjQXBCO09BUUpnRztPQTFCSTNHO09BUUp5RztPQUVBQztPQTBKQXhHO09BVUF5STtPQVFBRTtPQTFKSXRJO09BS0FzRztPQXFCQUs7T0FoQkFKO09BTUpHO09BZ0JJRTtPQU1BQztPQU1BQztPQUlBRTtPQUlBQztPQU1BQztPQU1BQztPQUlBQztPQXFDQVU7T0FJQUM7T0FJQUM7T0FRSkU7T0FBQUE7T0FRQUM7T0FpQ0FNO09BTUFHO09BaEdJdkI7T0FJQUM7T0FJQUM7T0FJQUM7T0FJQUM7T0FJQUM7T0FJQUM7T0FLQUU7T0E4RUFnQjtPQUtBRztPQWtCSk07T0FBQUE7T0FBQUE7T0EwR0FZO09BcEhJakI7T0EyUUpySDtPQU9BbUo7OztFOzs7Ozs7MENDdGpCQUcsVUFDQUMsU0FDQUM7WUFTQWhVLElBQUlILEdBQUksWUFBSkEsSUFBQUEsTUFBQUEsTUFBNEI7T0FDaENXLHNCQUNBQztZQUlBd1QsT0FBT3BVLEdBQUksT0FBSkEsT0FBaUI7WUFJeEJpSyxnQjtPQUNBTTtZQUNBeEssSUFBSUMsR0FBRUMsR0FBUSxPQUFWRCxLQUFFQyxJQUFGRCxJQUFFQyxFQUErQjtZQUNyQ0MsSUFBSUYsR0FBRUMsR0FBUSxPQUFSQSxLQUFGRCxJQUFBQSxJQUFFQyxFQUErQjtZQVVyQ3VNLFVBQVV4TSxHQUFJLFlBQUpBLEVBQXFCOzs7O09BbEMvQmlVO09BQ0FDO09BQ0FDO09BU0FoVTtPQUNBUTtPQUNBQztPQUlBd1Q7T0FJQW5LO09BQ0FNO09BQ0F4SztPQUNBRztPQVVBc007OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNYQXpOLEtBQUtVLEdBQUVnRDtJQUNELElBQUo1QyxJQUFJLGtCQURESjtJQUVQLGdCQURJSSxNQURHSixHQUFFZ0Q7SUFFVCxPQURJNUM7R0FFSDtZQUVDa1AsS0FBS3RQLEdBQUVaO0lBQ1QsSUFBSWdCLElBQUksa0JBRERKLElBRVAsT0FGT0EsV0FDQzs7U0FDUmtDOzs0QkFESTlCLEdBQ0o4QixHQUNpQixXQUhSOUMsR0FFVDhDO01BQUEsV0FBQUE7a0JBQUFBO1VBQUFBOzs7SUFHQSxPQUpJOUI7R0FJSDtHQUVTLElBQVJvSSxRQUFRO1lBRVJvTSxLQUFLeFU7SUFDUCxJQUFJc0QsMkJBREd0RCxJQUVIWCxJQUFJLGtCQURKaUU7SUFFSixnQkFIT3RELE1BRUhYLE1BREFpRTtJQUVKLE9BRElqRTtHQUVIO1lBRUNzTixVQUFVcEwsR0FBSSxPQUFpQixxQkFOL0JpVCxLQU1ValQsSUFBNkI7WUFDdkNrVCxVQUFVelUsR0FBSSxPQVBkd1UsMEJBT1V4VSxJQUE2QjtZQUV2QzBVLElBQUkxVSxHQUFFcUQsS0FBSUM7SUFDWixRQURRRCxZQUFJQyw2QkFBTnRELEtBQU1zRCxZQUFKRDtLQUlFLElBQUpoRSxJQUFJLGtCQUpFaUU7S0FLVixnQkFMSXRELEdBQUVxRCxLQUlGaEUsTUFKTWlFO0tBS1YsT0FESWpFOztJQUZELE9BQUE7R0FLRjtZQUVEc1YsV0FBV3BULEdBQUU4QixLQUFJQztJQUFNLE9BQWlCLHFCQVR4Q29SLElBU1duVCxHQUFFOEIsS0FBSUM7R0FBc0M7WUFHdkR0QyxPQUFLZ0MsR0FBRXpCO0lBQ1QsSUFBSXFCLElBREdJLElBQUV6QixjQUFBQSx1QkFDTHFCOzs7UUFER0k7S0FLQSxPQUpISjs7SUFHcUIsT0FBQTtHQUNqQjtZQUVOZ1MsT0FBTzVVLEdBQUUrSyxNQUFLQztJQUNoQjtLQUFJMUgsTUFSRnRDLE9BQUFBLDRCQU9PaEIsSUFBRStLLE9BQUtDO0tBRVozTCxJQUFJLGtCQURKaUU7WUFET3lIO1NBR0U4SixTQUhGOUosTUFHTitKOztTQUFRRCxZQUFSQyxXQUhNL0o7SUFJRTtLQUFUZ0s7T0FBUzs7OEJBSkovVSxLQUdKOFU7U0FGRHhSLE1BRVN1UjtXQUNURSxRQUNlLGdCQUxWL1UsR0FHSjhVLFFBRER6VixHQUNTd1YsUUFDVEU7SUFDZSxPQUhmMVY7R0FJSDtZQUVDMlYsS0FBS2hWLEdBQUVxRCxLQUFJQyxLQUFJVjtJQUNqQixRQURTUyxZQUFJQyw2QkFBTnRELEtBQU1zRCxZQUFKRDtLQUdKLE9BQUEsZ0JBSEVyRCxHQUFFcUQsS0FBSUMsS0FBSVY7SUFFWixPQUFBO0dBQ3VCO1lBRTFCcVMsS0FBS2hVLElBQUdpVSxNQUFLaFUsSUFBR2lVLE1BQUs3UjtJQUN2QjtXQUR1QkE7O1lBQWI0Ujs7OEJBQUhqVSxNQUFnQnFDLFlBQWI0UjtnQkFBUUMsOEJBQUhqVSxNQUFRb0MsWUFBTDZSO0tBSWIsT0FBQSxnQkFKRWxVLElBQUdpVSxNQUFLaFUsSUFBR2lVLE1BQUs3UjtJQUdsQixPQUFBO0dBQytCO1lBRWxDOFIsWUFBWW5VLElBQUdpVSxNQUFLaFUsSUFBR2lVLE1BQUs3UjtJQUM5QjtXQUQ4QkE7O1lBQWI0Ujs7dUNBQUhqVSxNQUFnQnFDLFlBQWI0UjtnQkFBUUMsOEJBQUhqVSxNQUFRb0MsWUFBTDZSO0tBSXBCLE9BQUEseUJBSlNsVSxJQUFHaVUsTUFBS2hVLElBQUdpVSxNQUFLN1I7SUFHekIsT0FBQTtHQUNzQztZQUd6Q2dHLEtBQUt0SyxHQUFFZ0U7SUFDVCxnQ0FEU0EsWUFDVDs7U0FBQWxCOztNQUE2QixXQUR0QjlDLHlCQUFFZ0UsR0FDVGxCO01BQTZCLFdBQTdCQTtrQkFBQUE7VUFBQUE7Ozs7R0FBbUQ7WUFHakR3TixNQUFNdFEsR0FBRWdFO0lBQ1YsK0JBRFVBLFlBQ1Y7O1NBQUFsQjs7TUFBNkIsV0FEckI5QyxHQUNSOEMseUJBRFVrQixHQUNWbEI7TUFBNkIsVUFBN0JBO2lCQUFBQTtVQUFBQTs7OztHQUFzRDtZQWtCcERrSCxPQUFPcU0sS0FFUHhUO0ksS0FBQUEsR0FqRlEsT0FBUnVHO1FBc0U2QmtOLDhCQVN0QkQ7Ozs7O1VBZFNsTSxpQkFnQmhCdEg7OztXQWRBTzs7O1FBQ01EO1FBTEtoQywwQkFJWGlDLE1BRzZCa1QsY0FMYm5NO2dCQUFBQSxPQUZMaEosSUFBQUEsSUFBaUM7UUFFNUJnSjtnQkFHVmhIOztnQkFIVWdIOzs7b0NBRWhCL0csTUFGZ0IrRzs7SUFrQlIsSUFiU29NLE1BYVQsd0JBYmFDLHVCQVdyQjNUOzttQkFWTSxPQURXMFQ7U0FFakJFOztNQUNBLGdCQURBQSxTQUZpQkYsS0FBSUMsMEJBRXJCQztNQUNBLE9BSGlCRjs7U0FJWHBDO0tBQ04sZ0JBSEFzQyxTQUZpQkYsS0FBSUMsS0FLckIscUJBSEFDO0tBSUE7T0FHT0osUUFUVUUsS0FBSUMsMkJBRXJCQyxXQUY2Qkg7O2VBQVJFLDJCQUVyQkMsYUFGNkJIO01BQVJFO2dCQUlmckM7OztZQVlOdUMsSUFBSXpVLElBQUdDO0lBQ1Q7S0FBSUMsMEJBREVGO0tBRUZHLEtBQUoscUJBRlNGO0tBR0w3QixJQUFJLGtCQUZKOEIsS0FDQUM7SUFFSixnQkFKTUgsT0FHRjVCLE1BRkE4QjtJQUlKLGdCQUxTRCxPQUdMN0IsR0FGQThCLElBQ0FDO0lBR0osT0FGSS9CO0dBR0g7WUFNQ3NXO0lBQVc7Ozs7S0FDMEI7O0lBQ2hDO0dBQUs7WUFFVkMsS0FBSzVWO0lBQ1AsSUFBSXNELDJCQURHdEQsSUFFSDhCOztRQUFBQSxRQURBd0I7S0FFYyxLQVBoQnFTLCtCQUlLM1YsR0FFSDhCO0tBQUFBOztJQUlJLElBQUorVCxRQUxBdlM7O0tBTWMsR0FMZHhCLFFBSUErVCxRQVZGRiwrQkFJSzNWLEdBTUg2VixRQUFBQTtZQUpBL1QsUUFJQStULE9BakdGbkIsSUEyRksxVSxHQUVIOEIsT0FJQStULE9BSkEvVCxxQkF4R0ZzRzs7R0FtSEs7WUFFTHdFLFFBQVE1TTtJQUNWLElBQUlKLHVDQURNSSxZQUNGOztTQUNSK0I7O3dDQUZVL0IsR0FFVitCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQURJbkMsT0FBQUE7TUFDSixVQUFBbUM7aUJBQUFBO1VBQUFBOzs7T0FESW5DLDhCQURNSSxJQVNZLE9BNUhwQndVLEtBbUhReFU7SUFVQyxJQUFMNk0sTUFBSyxrQkFUUGpOO0lBQUFBO0lBV0YsK0JBWlFJLFlBWVI7O1NBQUE4Qjs7VUFZSWMsMEJBeEJJNUMsR0FZUjhCOzs7Ozs7O2tCQVlJYztvQkFBQUEsYUFBQUE7OztrQkFBQUE7b0JBQUFBO2tCQUFBQTs7b0NBZEFpSyxLQVRGak47Y0FBQUE7b0NBU0VpTixLQVRGak47OztvQ0FTRWlOLEtBVEZqTjtjQUFBQTtvQ0FTRWlOLEtBVEZqTjs7O29DQVNFaU4sS0FURmpOO2NBQUFBO29DQVNFaU4sS0FURmpOOzs7b0NBU0VpTixLQVRGak47Y0FBQUE7b0NBU0VpTixLQVRGak47Ozs7O2tCQXVCRWdEOzsrQkFkQWlLLEtBVEZqTjtTQUFBQTsrQkFTRWlOLEtBVEZqTixNQXVCRWdEOzs7OEJBZEFpSyxLQVRGak47UUFBQUE7OEJBU0VpTixLQVRGak4sWUF1QkVnRDtRQXZCRmhEOzhCQVNFaU4sS0FURmpOLGFBdUJFZ0Q7UUF2QkZoRDs4QkFTRWlOLEtBVEZqTixZQXVCRWdEOzs7NkJBZEFpSyxLQVRGak4sTUF1QkVnRDs7TUF2QkZoRDtNQVdGLFVBQUFrQztpQkFBQUE7VUFBQUE7OztJQXlCQSxPQTNCSStLO0dBNEJIO1lBRURsRSxJQUFJM0osR0FBRWdCO0lBQ1IsSUFBSTZCLHlCQURJN0I7SUFFUixTQURJNkIsR0FDVSxPQUZON0I7SUFHRSxJQUFKWCxJQUFJLGtCQUZOd0MsSUFHRixNQUhFQSxXQUVNOztTQUNSQzs7NEJBREl6QyxHQUNKeUMsR0FBcUMsV0FKakM5Qyx5QkFBRWdCLEdBSU44QjtNQUFBLFVBQUFBO2lCQUFBQTtVQUFBQTs7O0lBQ0EsT0FGSXpDO0dBR0g7WUFFRCtQLEtBQUtwUSxHQUFFZ0I7SUFDVCxJQUFJNkIseUJBREs3QjtJQUVULFNBREk2QixHQUNVLE9BRkw3QjtJQUdDLElBQUpYLElBQUksa0JBRk53QyxJQUdGLE1BSEVBLFdBRU07O1NBQ1JDOzs7UUFESXpDLEdBQ0p5QyxHQUFxQyxXQUpoQzlDLEdBSUw4Qyx5QkFKTzlCLEdBSVA4QjtNQUFBLFVBQUFBO2lCQUFBQTtVQUFBQTs7O0lBQ0EsT0FGSXpDO0dBR0g7WUFFRDZKLFVBQVVsSyxHQUFFbUIsR0FBRTZDO0lBQ2hCLElBQUkzRCxRQURVYywrQkFBRTZDLFlBQ1I7O1NBQ1JsQjs7TUFESXpDLE9BRUcsV0FIS0wsR0FDUkssNEJBRFkyRCxHQUVoQmxCO01BQUEsVUFBQUE7aUJBQUFBO1VBQUFBOzs7V0FESXpDO0dBSUY7WUFFQW1RLFdBQVd4USxHQUFFZ0UsR0FBRTdDO0lBQ2pCLElBQUlkLFFBRGFjLElBRWpCLE1BQUEscUJBRmU2Qzs7U0FFZmxCOztNQURJekMsT0FFRyxXQUhNTCx5QkFBRWdFLEdBRWZsQixJQURJekM7TUFDSixVQUFBeUM7ZUFBQUE7VUFBQUE7OztXQURJekM7R0FJRjtZQUVBNlEsT0FBT0QsR0FBRWpRO0lBQ1gsSUFBSUoseUJBRE9JLElBRUU4QjtJQUNYO1FBRFdBLE1BRFRsQyxHQUVZO0tBQ04sR0FBQSxXQUpEcVEseUJBQUVqUSxHQUVFOEIsS0FFcUI7S0FDM0IsSUFITUMsTUFBQUQsV0FBQUEsSUFBQUM7O0dBSVA7WUFFSmlPLFFBQVFDLEdBQUVqUTtJQUNaLElBQUlKLHlCQURRSSxJQUVDOEI7SUFDWDtRQURXQSxNQURUbEMsR0FFWTtLQUNOLEtBQUEsV0FKQXFRLHlCQUFFalEsR0FFQzhCLEtBR047S0FEMkIsSUFGckJDLE1BQUFELFdBQUFBLElBQUFDOztHQUlQO1lBRUprTCxnQkFBZ0JqTixHQUFJLE9BOUNwQjJJLG9CQThDZ0IzSSxHQUE4QjtZQUM5Q2dOLGdCQUFnQmhOLEdBQUksT0EvQ3BCMkksb0JBK0NnQjNJLEdBQThCO1lBRTlDOFYsT0FBTzlXLEdBQUVnQjtJQUNYLDhCQURXQSxJQUNVLE9BRFZBO0lBRUQsSUFBSlgsSUE5TUptVixLQTRNU3hVOzBCQUVMWCxNQUNXLFdBSFJMLHlCQUFFZ0I7SUFJVCxPQUZJWDtHQUdIO1lBRUQwVyxpQkFBaUIvVixHQUFJLE9BUHJCOFYsdUJBT2lCOVYsR0FBaUM7WUFDbERnVyxtQkFBbUJoVyxHQUFJLE9BUnZCOFYsdUJBUW1COVYsR0FBaUM7WUFHcERpVyxZQUFhQyxRQUFPbFc7SUFDdEI7S0FBSW1XLDZCQURrQm5XO0tBRWxCb1csK0JBRldGO1dBRVhFLFdBREFEOztRQUVRclU7SUFDVjtRQURVQSxNQURSc1UsU0FFa0I7OEJBSkFwVyxHQUdWOEIsNkJBSEdvVSxRQUdIcFU7TUFFeUM7S0FDOUMsSUFIS0MsTUFBQUQsV0FBQUEsSUFBQUM7O0dBSWdCO1lBRzFCc1UsVUFBV0MsUUFBT3RXO0lBQ3BCO0tBQUltVyw2QkFEZ0JuVztLQUVoQnVXLCtCQUZTRDtLQUdURSxPQUZBTCxRQUNBSTtnQkFDQUM7O1FBQ1ExVTtJQUNWO1FBRFVBLE1BRlJ5VSxTQUdrQjs7NkJBTEZ2VyxHQUdoQndXLE9BQ1ExVTtpQ0FKQ3dVLFFBSUR4VTtNQUVrRDtLQUN2RCxJQUhLQyxNQUFBRCxXQUFBQSxJQUFBQzs7R0FJUztZQUdmMFUsVUFBVXpXLEdBQUUwVyxLQUFJNVUsR0FBRWM7SUFDeEIsSUFEc0JiLE1BQUFEO0lBQ3RCO1FBRGtCNFUsT0FBSTNVLEtBQ0wsTUFBQTs4QkFERC9CLEdBQU0rQixTQUFFYSxHQUVHLE9BRkxiO1NBQUE0VSxNQUFBNVUsYUFBQUEsTUFBQTRVOztHQUVxQztZQUd6REMsTUFBTTVXLEdBQUU0QyxHQUFJLE9BTFI2VCxVQUtFelcsd0JBQUFBLE9BQUU0QyxHQUE4QjtZQUdsQ2lVLGNBQWM3VyxHQUFFMFcsS0FBSTVVLEdBQUVjO0lBQzVCLElBRDBCYixNQUFBRDtJQUMxQjtRQURzQjRVLE9BQUkzVSxLQUNUOzhCQURHL0IsR0FBTStCLFNBQUVhLEdBRUQsV0FGRGI7U0FBQTRVLE1BQUE1VSxhQUFBQSxNQUFBNFU7O0dBRTBDO1lBR2xFRyxVQUFVOVcsR0FBRTRDO0lBQUksT0FMWmlVLGNBS003Vyx3QkFBQUEsT0FBRTRDO0dBQWtDO1lBRzlDbVUsV0FBVy9XLEdBQUU4QixHQUFFYztJQUNqQixJQUFJZix5QkFEUzdCO1lBQUU4QixLQUNYRCxLQURXQyxHQUdmLE9BbkJNMlUsVUFnQk96VyxHQUNUNkIsR0FEV0MsR0FBRWM7SUFFTSxPQUFBO0dBQ047WUFHZm9VLGVBQWVoWCxHQUFFOEIsR0FBRWM7SUFDckIsSUFBSWYseUJBRGE3QjtZQUFFOEIsS0FDZkQsS0FEZUMsR0FLakIsT0FuQkkrVSxjQWNXN1csR0FDYjZCLEdBRGVDLEdBQUVjO0lBR25CLE9BQUE7R0FFcUI7WUFHakJxVSxXQUFXalgsR0FBRThCLEdBQUVjO0lBQ3JCLElBRG1CYixNQUFBRDtJQUNuQjtZQURtQkMsS0FDTCxNQUFBOzhCQURHL0IsR0FBRStCLFNBQUVhLEdBRU0sT0FGUmI7U0FBQTRVLE1BQUE1VSxhQUFBQSxNQUFBNFU7O0dBRXFDO1lBR3RETyxPQUFPbFgsR0FBRTRDO0lBQUksT0FMVHFVLFdBS0dqWCx3QkFBQUEsWUFBRTRDO0dBQWlDO1lBRzFDdVUsWUFBWW5YLEdBQUU4QixHQUFFYztJQUNsQixTQURnQmQsMEJBQUY5QixLQUFFOEIsR0FJZCxPQVpJbVYsV0FRUWpYLEdBQUU4QixHQUFFYztJQUVoQixPQUFBO0dBRWdCO1lBR1p3VSxlQUFlcFgsR0FBRThCLEdBQUVjO0lBQ3pCLElBRHVCYixNQUFBRDtJQUN2QjtZQUR1QkMsS0FDVDs4QkFETy9CLEdBQUUrQixTQUFFYSxHQUVFLFdBRkpiO1NBQUE0VSxNQUFBNVUsYUFBQUEsTUFBQTRVOztHQUUwQztZQUcvRFUsV0FBV3JYLEdBQUU0QztJQUFJLE9BTGJ3VSxlQUtPcFgsd0JBQUFBLFlBQUU0QztHQUFxQztZQUdsRDBVLGdCQUFnQnRYLEdBQUU4QixHQUFFYztJQUN0QixTQURvQmQsMEJBQUY5QixLQUFFOEIsR0FJbEIsT0FaSXNWLGVBUVlwWCxHQUFFOEIsR0FBRWM7SUFFcEIsT0FBQTtHQUVvQjtZQUlwQjJVLGNBQWN2WCxHQUFFOEIsR0FBRWM7SUFDcEIsSUFBSWYseUJBRFk3QjtZQUFFOEIsS0FDZEQsS0FEY0M7S0FLaEIsSUFsRUkyVSxVQTZEVXpXLEdBQ1o2QixHQURjQyxHQUFFYyxJQUtjLGFBQUE7Ozs0QkFBdUI7OztJQUZ2RCxPQUFBO0dBRTREO1lBSTVENFUsU0FBU3hYLEdBQUU0QyxHQUFJLE9BVGYyVSxjQVNTdlgsTUFBRTRDLEdBQXVCO1lBR2xDNlUsZUFBZXpYLEdBQUU4QixHQUFFYztJQUNyQixRQURtQmQsMEJBQUY5QixLQUFFOEI7S0FJakIsSUEvQ0ltVixXQTJDV2pYLEdBQUU4QixHQUFFYyxJQUlZLGFBQUE7Ozs0QkFBdUI7OztJQUZ0RCxPQUFBO0dBRTJEO09BSzNEOEg7WUFJQWdOLGNBQWNyQyxLQUFJclY7SUFDcEI7S0FBSVg7S0FDQXdXLFFBQUoscUJBRm9CN1Y7S0FHcEIsTUFBQSxxQkFIb0JBOztTQUdwQjhCOzsrQkFIb0I5QixHQUdwQjhCLE9BSGdCdVQ7aUJBQ1poVztPQUFBQSxXQTFURnFWLElBeVRrQjFVLEdBR3BCOEIsWUFESStULE9BQ0ovVDtPQURJK1QsT0FDSi9UOztNQUFBLFVBQUFBO2VBQUFBO1VBQUFBOzs7Y0FGSXpDO0lBUUosV0FsVUVxVixJQXlUa0IxVSxNQUVoQjZWO0dBT1k7WUFJZDlJLFVBQVUvTSxHQUFJLE9BcExkMkksb0JBb0xVM0ksR0FBd0I7WUFDbEM4TSxVQUFVOU0sR0FBSSxPQXJMZDJJLG9CQXFMVTNJLEdBQXdCO1lBRWxDMlgsV0FBVzNYLEdBQUksT0F0SWY4Vix1QkFzSVc5VixHQUEyQjtZQUN0QzRYLGFBQWE1WCxHQUFJLE9BdklqQjhWLHVCQXVJYTlWLEdBQTJCO1lBSXhDOEssT0FBTzlLO2FBQ0QrVCxJQUFJalM7S0FDVixHQURVQSwyQkFESDlCLElBRWM7S0FFWCxJQUFKRyxJQUFJLGVBSkhILEdBQ0c4QixJQUdBLE1BSEFBO0tBSVIsV0FESTNCLGlCLE9BSEE0VDtJQUltQjtJQUUzQjtJQUFBLHFCLE9BTlFBO0dBTUg7WUFFSDhELFFBQVE3WDthQUNGK1QsSUFBSWpTO0tBQ1YsR0FEVUEsMkJBREY5QixJQUVhO0tBRVgsSUFBSkcsSUFBSSxlQUpGSCxHQUNFOEIsSUFHQSxNQUhBQTtLQUlSLGVBSlFBLEdBR0ozQixrQixPQUhBNFQ7SUFJdUI7SUFFL0I7SUFBQSxxQixPQU5RQTtHQU1IO1lBRUhFLE9BQU9uUztJQUNULElBQUlsQyxZQUNBOEUsVUF6WEZ4RjtpQkFtWUswRDtLQUNGLEdBWkRoRCw4QkFDQThFO01BR1k7T0FBVm9UO1NBQVU7O29DQUhacFQ7OzhCQUFBQSxZQUdFb1Q7T0FDMEI7TUFDaEIsSUFBVkMsVUE5WEo3WSxLQTRYSTRZO01BclVKN0MsS0FrVUV2USxXQUtFcVQsWUFORm5ZO01BQ0E4RSxTQUtFcVQ7O0tBT0QsZUFaRHJULFFBREE5RSxNQVdHZ0Q7S0FYSGhEOztJQWNPO0lBSlgsZ0NBWFNrQztXQWhXUDRTLElBa1dFaFEsV0FEQTlFO0dBZ0JTO1lBa0JYb1ksU0FBU3pXLEdBQUVPO0lBQ2IsSUFBQTtXQUFDLGVBRFVQLEdBQUVPO0dBQ2tEO1lBRTdEbVcsY0FBYzFXLEdBQUVPO0lBQ2xCO2NBQThCLGFBQUEsaUJBRGRQLEdBQUVPO2NBRWIsaUJBRldQLEdBQUVPO0dBRUk7WUFFcEJvVyxjQUFjM1csR0FBRU87SUFDbEI7Y0FDSyxpQkFGV1AsR0FBRU87Y0FDZ0IsYUFBQSxpQkFEbEJQLEdBQUVPO0dBRUk7WUFFcEJxVyxhQUFhNVcsR0FBRU87SUFDakIsSUFBQTtXQUFDLGlCQURjUCxHQUFFTztHQUNvRDtZQUVuRXNXLGFBQWE3VyxHQUFFTztJQUNqQixJQUFBO1dBWkVtVyxjQVdhMVcsR0FBRU87R0FDb0Q7WUFFbkV1VyxhQUFhOVcsR0FBRU87SUFDakIsSUFBQTtXQVhFb1csY0FVYTNXLEdBQUVPO0dBQ29EO1lBRW5Fd1csYUFBYS9XLEdBQUVPO0lBQ2pCO2NBQXVCLGlCQUFPLGlCQURmUCxHQUFFTztjQUVaLGlCQUZVUCxHQUFFTztHQUVJO1lBRW5CeVcsYUFBYWhYLEdBQUVPO0lBQ2pCO2NBQ0ssaUJBRlVQLEdBQUVPO2NBQ1UsaUJBQU8saUJBRG5CUCxHQUFFTztHQUVJO1lBRW5CMFcsYUFBYWpYLEdBQUVPO0lBQ2pCO2NBQXVCLGlCQUFPLGlCQURmUCxHQUFFTztjQUVaLGlCQUZVUCxHQUFFTztHQUVJO1lBRW5CMlcsYUFBYWxYLEdBQUVPO0lBQ2pCO2NBQ0ssaUJBRlVQLEdBQUVPO2NBQ1UsaUJBQU8saUJBRG5CUCxHQUFFTztHQUVJO1lBRW5CNFcsYUFBYW5YLEdBQUVPLEdBQUUzQjtJQUNuQjtjQUF1QixpQkFEUm9CLEdBQUVPLGdCQUFFM0I7Y0FFZCxpQkFGVW9CLEdBQUVPLEdBQUUzQjtHQUVJO1lBRXJCd1ksYUFBYXBYLEdBQUVPLEdBQUUzQjtJQUNuQjtjQUNLLGlCQUZVb0IsR0FBRU8sR0FBRTNCO2NBQ1EsaUJBRFpvQixHQUFFTyxnQkFBRTNCO0dBRUk7WUFFckJ5WSxhQUFhclgsR0FBRU8sR0FBRTNCO0lBQ25CO2NBQXVCLGlCQURSb0IsR0FBRU8sR0FDdUIsaUJBRHJCM0I7Y0FFZCxpQkFGVW9CLEdBQUVPLEdBQUUzQjtHQUVJO1lBRXJCMFksYUFBYXRYLEdBQUVPLEdBQUUzQjtJQUNuQjtjQUNLLGlCQUZVb0IsR0FBRU8sR0FBRTNCO2NBQ1EsaUJBRFpvQixHQUFFTyxHQUMyQixpQkFEekIzQjtHQUVJO1lBRXJCMlksYUFBYXZYLEdBQUVPLEdBQUUzQjtJQUNuQjtjQUF1QixpQkFEUm9CLEdBQUVPLEdBQ3VCLGlCQURyQjNCO2NBRWQsaUJBRlVvQixHQUFFTyxHQUFFM0I7R0FFSTtZQUVyQjRZLGFBQWF4WCxHQUFFTyxHQUFFM0I7SUFDbkI7Y0FDSyxpQkFGVW9CLEdBQUVPLEdBQUUzQjtjQUNRLGlCQURab0IsR0FBRU8sR0FDMkIsaUJBRHpCM0I7R0FFSTs7SUFFckI2WTtJQUNBQzs7O09BdmRBL1o7T0FLQWdRO09BT0E5RztPQUVBb007T0FPQUM7T0FEQTlIO09BR0ErSDtPQVNBQztPQVVBQztPQVFBSTtPQUtBQztPQU1BRztPQThCQXBNO09BT0EwTTtPQTlCQXBNO09BSUFnRztPQWlHQTNHO09BUUF5RztPQVFBbEc7T0FPQXNHO09BZUFRO09BUkFFO09BckZBMEY7T0FlQWhKO09BOEhBZ0s7T0FRQUU7T0FzQkFJO09BZUFHO09BbENBTjtPQU1BQztPQWdCQUc7T0FlQUc7T0FpQkFFO09BVEFEO09BWUFFO09BMEJBMUs7T0FDQUQ7T0FFQTZLO09BQ0FDO09BMUlBM0s7T0FDQUQ7T0FTQStJO09BQ0FDO09BMEdBdEw7O09BdkdBdUw7T0FVQUk7OztPQWlHQXFCO09BcUJBNU07T0FTQStNO09BU0E1RDs7T0FtQ0ErRDs7T0FPQUU7T0FKQUQ7T0FRQUU7T0FNQUU7T0FIQUQ7O09BVUFHO09BSkFEOztPQVlBRztPQUpBRDtPQWdDQVE7O09BQ0FDO09BckJBTjtPQUpBRDs7T0FJQUM7T0FKQUQ7O09BWUFHO09BSkFEOztPQVlBRztPQUpBRDs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7SUMzY0ExUTs7O0lBUEE4UTtJQUNBQzs7Ozs7Ozs7Ozs7O1lBRUFqYSxLQUFLVSxHQUFFZ0Q7SUFDVCxPQUFBLFdBSkVzVyxLQUlGLDRCQURPdFosR0FBRWdEO0dBQ1E7WUFDZnNNLEtBQUt0UCxHQUFFWjtJQUNULE9BQUEsV0FORWthLEtBTUYsNEJBRE90WixHQUFFWjtHQUNRO1lBRWZ3VixLQUFLeFU7SUFDQSxVQUFBLFdBUkxtWixLQU9Lblo7SUFDUCxPQUFBLFdBVEVrWixLQVNGO0dBQXFCO09BQ25CRSw0QkFDQUM7WUFDQTNFLElBQUkxVSxHQUFFcUQsS0FBSUM7SUFDTixVQUFBLFdBWko2VixLQVdJblo7SUFDTixPQUFBLFdBYkVrWixLQWFGLGlDQURRN1YsS0FBSUM7R0FDZ0I7T0FDMUIwUix5QkFFQUM7WUFtQkFqTSxPQUFPcU0sS0FFUHhUO0ksS0FBQUEsR0FETTtRQVZ1QnlULCtCQVN0QkQ7Ozs7O1VBZFNsTSxpQkFnQmhCdEg7OztXQWRBTzs7O1FBQ01EO1FBTEtoQywyQkFJWGlDLE1BRzZCa1QsY0FMYm5NO2dCQUFBQSxPQUZMaEosSUFBQUEsSUFBaUM7UUFFNUJnSjtnQkFHVmhIOztnQkFIVWdIOzs7cUNBRWhCL0csTUFGZ0IrRzs7SUFrQlIsSUFiU29NLE1BYVQsZ0NBYmFDLHVCQVdyQjNUOzs7VUFUQTRUOztXQUVNdEM7T0FDTixpQkFIQXNDLFNBRmlCRixLQUFJQyxLQUtyQixzQkFIQUM7T0FJQTtTQUdPSixRQVRVRSxLQUFJQyw0QkFFckJDLFdBRjZCSDs7aUJBQVJFLDRCQUVyQkMsYUFGNkJIO1FBQVJFO2tCQUlmckM7OztNQUROLGlCQURBc0MsU0FGaUJGLEtBQUlDLDJCQUVyQkM7O0tBVU0sT0FBQSxXQXRDTnlELEtBMEJpQjNEOzs7T0FnQmpCRztZQUdBcE0sS0FBS3RLLEdBQUVnQjtJQUNULGdDQURTQSxZQUNUOztTQUFBOEI7O01BQTZCLFdBRHRCOUMsMEJBQUVnQixHQUNUOEI7TUFBNkIsVUFBN0JBO2lCQUFBQTtVQUFBQTs7OztHQUFvRDtZQUdsRHdOLE1BQU10USxHQUFFZ0I7SUFDVixnQ0FEVUEsWUFDVjs7U0FBQThCOztNQUE2QixXQURyQjlDLEdBQ1I4QywwQkFEVTlCLEdBQ1Y4QjtNQUE2QixVQUE3QkE7aUJBQUFBO1VBQUFBOzs7O0dBQXNEO1lBRXBENkcsSUFBSTNKLEdBQUVnQjtJQUNBLFVBQUEsV0FwRE5tWixLQW1ETW5aO0lBQ1IsT0FBQSxXQXJERWtaLEtBcURGLDZCQURNbGE7R0FDZ0I7WUFDcEJvUSxLQUFLcFEsR0FBRWdCO0lBQ0EsVUFBQSxXQXREUG1aLEtBcURPblo7SUFDVCxPQUFBLFdBdkRFa1osS0F1REYsNkJBRE9sYTtHQUNnQjtZQUNyQndRLFdBQVd4USxHQUFFbUIsR0FBRTZDO0lBQ0YsVUFBQSxXQXhEYm1XLEtBdURhaFo7SUFDZixPQUFBLDZCQURhbkIsUUFBSWdFO0dBQ087WUFDdEJrRyxVQUFVbEssR0FBRWdFLEdBQUU3QztJQUNBLFVBQUEsV0ExRGRnWixLQXlEY2haO0lBQ0EsT0FBQSw2QkFESm5CLEdBQUVnRTtHQUNTO1lBQ3JCa04sT0FBT2xSLEdBQUVnQjtJQUNBLFVBQUEsV0E1RFRtWixLQTJEU25aO0lBQ0EsT0FBQSw2QkFERmhCO0dBQ1M7WUFDaEJnUixRQUFRaFIsR0FBRWdCO0lBQ0EsVUFBQSxXQTlEVm1aLEtBNkRVblo7SUFDQSxPQUFBLDZCQURGaEI7R0FDUztZQU1qQjJXO0lBQVc7Ozs7S0FDMEI7O0lBQ2hDO0dBQUs7WUFFVkMsS0FBSzVWO0lBQ1AsR0FBRyxrQkFESUEsV0FDUSxPQURSQTtJQUU4Qjs7TUFObkMyVixnQ0FJSzNWOzs7T0FKTDJWLGdDQUlLM1YseUJBQUFBO0tBSUYsT0FKRUE7SUFHWSxVQUFBLFdBM0VqQm1aLEtBd0VLblo7SUFHSSxPQUFBLFdBNUVUa1osS0E0RVM7R0FDTDtZQUVKdE0sUUFDdUI1TTtJQUF6QixJQUEyQkosMEJBQUZJLElBQUk4QjtJQUMzQjtRQUR5QmxDLEtBQUVrQyxHQUNaLE9BRFE5QjtzQ0FBQUEsR0FBSThCOzs7Ozs7O01BS2xCLElBTGtCQyxNQUFBRCxXQUFBQSxJQUFBQzs7O0tBSU4sVUFBQSxXQW5GckJvWCxLQStFdUJuWjtLQUliLE9BQUEsV0FwRlZrWixLQW9GVTs7R0FHbUI7WUFHekJ6QyxVQUFVelcsR0FBRTBXLEtBQUk1VSxHQUFFYztJQUN4QixJQURzQmIsTUFBQUQ7SUFDdEI7UUFEa0I0VSxPQUFJM1UsS0FDTCxNQUFBOytCQUREL0IsR0FBTStCLFNBQUVhLEdBRUcsT0FGTGI7U0FBQTRVLE1BQUE1VSxhQUFBQSxNQUFBNFU7O0dBRXFDO1lBR3pEQyxNQUFNNVcsR0FBRTRDLEdBQUksT0FMUjZULFVBS0V6Vyx5QkFBQUEsT0FBRTRDLEdBQThCO1lBR2xDaVUsY0FBYzdXLEdBQUUwVyxLQUFJNVUsR0FBRWM7SUFDNUIsSUFEMEJiLE1BQUFEO0lBQzFCO1FBRHNCNFUsT0FBSTNVLEtBQ1Q7K0JBREcvQixHQUFNK0IsU0FBRWEsR0FFRCxXQUZEYjtTQUFBNFUsTUFBQTVVLGFBQUFBLE1BQUE0VTs7R0FFMEM7WUFHbEVHLFVBQVU5VyxHQUFFNEM7SUFBSSxPQUxaaVUsY0FLTTdXLHlCQUFBQSxPQUFFNEM7R0FBa0M7WUFHOUNtVSxXQUFXL1csR0FBRThCLEdBQUVjO0lBQ2pCLElBQUlmLDBCQURTN0I7WUFBRThCLEtBQ1hELEtBRFdDLEdBR2IsT0FuQkkyVSxVQWdCT3pXLEdBQ1Q2QixHQURXQyxHQUFFYztJQUVNLE9BQUE7R0FDSjtZQUdqQm9VLGVBQWVoWCxHQUFFOEIsR0FBRWM7SUFDckIsSUFBSWYsMEJBRGE3QjtZQUFFOEIsS0FDZkQsS0FEZUMsR0FLakIsT0FuQkkrVSxjQWNXN1csR0FDYjZCLEdBRGVDLEdBQUVjO0lBR25CLE9BQUE7R0FFcUI7WUFHakJxVSxXQUFXalgsR0FBRThCLEdBQUVjO0lBQ3JCLElBRG1CYixNQUFBRDtJQUNuQjtZQURtQkMsS0FDTCxNQUFBOytCQURHL0IsR0FBRStCLFNBQUVhLEdBRU0sT0FGUmI7U0FBQTRVLE1BQUE1VSxhQUFBQSxNQUFBNFU7O0dBRXFDO1lBR3RETyxPQUFPbFgsR0FBRTRDO0lBQUksT0FMVHFVLFdBS0dqWCx5QkFBQUEsWUFBRTRDO0dBQWlDO1lBRzFDdVUsWUFBWW5YLEdBQUU4QixHQUFFYztJQUNsQixTQURnQmQsMkJBQUY5QixLQUFFOEIsR0FJZCxPQVpJbVYsV0FRUWpYLEdBQUU4QixHQUFFYztJQUVoQixPQUFBO0dBRWdCO1lBR1p3VSxlQUFlcFgsR0FBRThCLEdBQUVjO0lBQ3pCLElBRHVCYixNQUFBRDtJQUN2QjtZQUR1QkMsS0FDVDsrQkFETy9CLEdBQUUrQixTQUFFYSxHQUVFLFdBRkpiO1NBQUE0VSxNQUFBNVUsYUFBQUEsTUFBQTRVOztHQUUwQztZQUcvRFUsV0FBV3JYLEdBQUU0QztJQUFJLE9BTGJ3VSxlQUtPcFgseUJBQUFBLFlBQUU0QztHQUFxQztZQUdsRDBVLGdCQUFnQnRYLEdBQUU4QixHQUFFYztJQUN0QixTQURvQmQsMkJBQUY5QixLQUFFOEI7S0FJbEIsT0FaSXNWLGVBUVlwWCxHQUFFOEIsR0FBRWM7SUFFcEIsT0FBQTtHQUVvQjtZQUdwQjJVLGNBQWN2WCxHQUFFOEIsR0FBRWM7SUFDcEIsSUFBSWYsMEJBRFk3QjtZQUFFOEIsS0FDZEQsS0FEY0M7S0FLaEIsSUFqRUkyVSxVQTREVXpXLEdBQ1o2QixHQURjQyxHQUFFYyxJQUtjLGFBQUE7Ozs0QkFBdUI7OztJQUZ2RCxPQUFBO0dBRTREO1lBRzVENFUsU0FBU3hYLEdBQUU0QyxHQUFJLE9BUmYyVSxjQVFTdlgsTUFBRTRDLEdBQXVCO1lBR2xDNlUsZUFBZXpYLEdBQUU4QixHQUFFYztJQUNyQixRQURtQmQsMkJBQUY5QixLQUFFOEI7S0FJakIsSUE3Q0ltVixXQXlDV2pYLEdBQUU4QixHQUFFYyxJQUlZLGFBQUE7Ozs0QkFBdUI7OztJQUZ0RCxPQUFBO0dBRTJEO1lBRTNEcUssZ0JBQWdCak47SUFDQSxVQUFBLFdBdktoQm1aLEtBc0tnQm5aO0lBQ2xCLE9BQUEsV0F4S0VrWixLQXdLRjtHQUFnQztZQUM5QmxNLGdCQUFnQmhOO0lBQ0EsVUFBQSxXQXpLaEJtWixLQXdLZ0JuWjtJQUNsQixPQUFBLFdBMUtFa1osS0EwS0Y7R0FBZ0M7WUFDOUJuRCxpQkFBaUIvVjtJQUNBLFVBQUEsV0EzS2pCbVosS0EwS2lCblo7SUFDbkIsT0FBQSxXQTVLRWtaLEtBNEtGO0dBQWlDO1lBQy9CbEQsbUJBQW1CaFc7SUFDQSxVQUFBLFdBN0tuQm1aLEtBNEttQm5aO0lBQ3JCLE9BQUEsV0E5S0VrWixLQThLRjtHQUFtQztZQUdqQ2pELFlBQWFDLFFBQU9sVztJQUN0QjtLQUFJbVcsOEJBRGtCblc7S0FFbEJvVyxnQ0FGV0Y7V0FFWEUsV0FEQUQ7O1FBRVFyVTtJQUNWO1FBRFVBLE1BRFJzVSxTQUVrQjsrQkFKQXBXLEdBR1Y4Qiw4QkFIR29VLFFBR0hwVTtNQUV5QztLQUM5QyxJQUhLQyxNQUFBRCxXQUFBQSxJQUFBQzs7R0FJZ0I7WUFHMUJzVSxVQUFXQyxRQUFPdFc7SUFDcEI7S0FBSW1XLDhCQURnQm5XO0tBRWhCdVcsZ0NBRlNEO0tBR1RFLE9BRkFMLFFBQ0FJO2dCQUNBQzs7UUFDUTFVO0lBQ1Y7UUFEVUEsTUFGUnlVLFNBR2tCOzs4QkFMRnZXLEdBR2hCd1csT0FDUTFVO2tDQUpDd1UsUUFJRHhVO01BRWtEO0tBQ3ZELElBSEtDLE1BQUFELFdBQUFBLElBQUFDOztHQUlTO1lBR25CMlYsY0FBY3JDLEtBQUlyVjtJQUNwQjtLQUFJWDtLQUNBd1csUUFBSixzQkFGb0I3VjtLQUdwQixNQUFBLHNCQUhvQkE7O1NBR3BCOEI7O2dDQUhvQjlCLEdBR3BCOEIsT0FIZ0J1VDtpQkFDWmhXO09BQUFBLFdBM0xGcVYsSUEwTGtCMVUsR0FHcEI4QixZQURJK1QsT0FDSi9UO09BREkrVCxPQUNKL1Q7O01BQUEsVUFBQUE7ZUFBQUE7VUFBQUE7OztjQUZJekM7SUFRSixXQW5NRXFWLElBMExrQjFVLE1BRWhCNlY7R0FPWTtZQUlkOUksVUFBVS9NO0lBQ0EsVUFBQSxXQW5OVm1aLEtBa05Vblo7SUFDWixPQUFBLFdBcE5Fa1osS0FvTkY7R0FBMEI7WUFDeEJwTSxVQUFVOU07SUFDQSxVQUFBLFdBck5WbVosS0FvTlVuWjtJQUNaLE9BQUEsV0F0TkVrWixLQXNORjtHQUEwQjtZQUN4QnZCLFdBQVczWDtJQUNBLFVBQUEsV0F2TlhtWixLQXNOV25aO0lBQ2IsT0FBQSxXQXhORWtaLEtBd05GO0dBQTJCO1lBQ3pCdEIsYUFBYTVYO0lBQ0EsVUFBQSxXQXpOYm1aLEtBd05hblo7SUFDZixPQUFBLFdBMU5Fa1osS0EwTkY7R0FBNkI7T0FJM0J4TztZQUtBSSxPQUFPOUs7SUFBSSxVQUFBLFdBbE9YbVosS0FrT09uWjtJQUFJLE9BQUE7R0FBaUI7WUFFNUI2WCxRQUFRN1g7SUFBSSxVQUFBLFdBcE9abVosS0FvT1FuWjtJQUFJLE9BQUE7R0FBa0I7WUFFOUJpVSxPQUFPcUY7SUFBSSxPQUFBLFdBdk9YSixLQXVPVyw2QkFBSkk7R0FBcUI7WUFTNUJ0QixTQUFTaFksR0FBRThCO0lBQWUsVUFBQSxXQS9PMUJxWCxLQStPU25aO0lBQU0sT0FBQSxrQ0FBSjhCO0dBQXdCO1lBQ25DbVcsY0FBY2pZLEdBQUU4QjtJQUFvQixVQUFBLFdBaFBwQ3FYLEtBZ1Bjblo7SUFBTSxPQUFBLGtDQUFKOEI7R0FBNkI7WUFDN0NvVyxjQUFjbFksR0FBRThCO0lBQW9CLFVBQUEsV0FqUHBDcVgsS0FpUGNuWjtJQUFNLE9BQUEsa0NBQUo4QjtHQUE2QjtZQUM3Q3FXLGFBQWFuWSxHQUFFOEI7SUFBbUIsVUFBQSxXQWxQbENxWCxLQWtQYW5aO0lBQU0sT0FBQSxrQ0FBSjhCO0dBQTRCO1lBQzNDc1csYUFBYXBZLEdBQUU4QjtJQUFtQixVQUFBLFdBblBsQ3FYLEtBbVBhblo7SUFBTSxPQUFBLGtDQUFKOEI7R0FBNEI7WUFDM0N1VyxhQUFhclksR0FBRThCO0lBQW1CLFVBQUEsV0FwUGxDcVgsS0FvUGFuWjtJQUFNLE9BQUEsa0NBQUo4QjtHQUE0QjtZQUMzQ3dXLGFBQWF0WSxHQUFFOEI7SUFBbUIsVUFBQSxXQXJQbENxWCxLQXFQYW5aO0lBQU0sT0FBQSxrQ0FBSjhCO0dBQTRCO1lBQzNDeVcsYUFBYXZZLEdBQUU4QjtJQUFtQixVQUFBLFdBdFBsQ3FYLEtBc1Bhblo7SUFBTSxPQUFBLGtDQUFKOEI7R0FBNEI7WUFDM0MwVyxhQUFheFksR0FBRThCO0lBQW1CLFVBQUEsV0F2UGxDcVgsS0F1UGFuWjtJQUFNLE9BQUEsa0NBQUo4QjtHQUE0QjtZQUMzQzJXLGFBQWF6WSxHQUFFOEI7SUFBbUIsVUFBQSxXQXhQbENxWCxLQXdQYW5aO0lBQU0sT0FBQSxrQ0FBSjhCO0dBQTRCOzs7O09BdFAzQzVDO09BRUFnUTtPQUVBOUc7T0FHQWdSO09BQ0FDO09Bd0JBclE7T0FPQTBNOztPQW9MQWhMO09BN0NBdUw7T0FVQUk7T0FyQ0FrQjtPQVdBRTtPQUhBRDtPQWxKQTlDO09BMExBZ0Q7T0FsSkEvTztPQUVBeUc7T0FJQWxHO09BRkFzRztPQU1BUTtPQUZBRTtPQWFBMEY7T0FNQWhKO09Bd0ZBSztPQUVBRDtPQUVBK0k7T0FFQUM7T0FoSUExTTtPQUlBZ0c7T0F5REF5SDtPQU1BQztPQWdCQUc7T0FlQUc7T0FoREFWO09BUUFFO09Bc0JBSTtPQWVBRztPQXVGQXZNO09BRUErTTtPQUVBNUQ7T0F2TkFnQjtPQVJBVDtPQU1BUTtPQXFNQWpJO09BRUFEO09BRUE2SztPQUVBQzs7T0F1QkFJOztPQUVBRTtPQURBRDtPQUVBRTtPQUVBRTtPQURBRDs7T0FHQUc7T0FEQUQ7O09BR0FHO09BREFEOzs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O1lFN1BBZSxVQUFVQyxNQUFLblcsS0FBSUMsS0FBSW5FLEdBQUVzYTtJQUMzQixRQURpQnBXLFlBQUlDLDZCQUFUa1csUUFBU2xXLFlBQUpEO0tBR1osT0FBQSxvQ0FIT21XLE1BQUtuVyxLQUFJQyxLQUFJbkUsR0FBRXNhO0lBRXRCLE9BQUE7R0FDcUM7T0FZeENDO1lBQ0FDLFVBQVVILE1BQUtuVztJQUNqQixRQURpQkEsNkJBQUxtVyxtQkFBS25XO0tBR1osT0FBQSx1QkFIT21XLE1BQUtuVztJQUVaLE9BQUE7R0FDeUI7WUFDNUJ1VyxXQUFXSixNQUFLblcsS0FBTSxZQUp0QnNXLFVBSVdILE1BQUtuVyxTQUFzQztZQUV0RHdXLFdBQVdMLE1BQUtuVztJQUNsQixRQURrQkEsNkJBQUxtVyxtQkFBS25XO0tBSU4sSUFBTkMsTUFBTSx1QkFKQ2tXLE1BQUtuVztrQ0FBTG1XLGNBSVBsVyxnQkFKWUQ7ZUFNWDtlQUNBLG9DQVBNbVcsTUFBS25XOztJQUViLE9BQUE7R0FNRjtZQUVEeVcsWUFBWU4sTUFBS25XO0lBR25CLE9BYkV3VyxXQWFTLDZCQUhHTCxPQUFLblc7R0FHeUI7Ozs7O09BbkMxQ2tXOztPQXNCQU07T0FVQUM7T0FqQkFKO09BQ0FDO09BSUFDOzs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQzFCaUJHLFNBQVMvVyxHQUFJLG1CQUFKQSx3QkFBa0I7O0lBVTNCZ1g7SUFDQUM7WUFZakJDLFFBQVNDLEtBQ1gsT0FBQSxtQ0FEV0EsUUFDWTtZQUNyQkMsVUFBVTFjLEtBQUk4WDtJQUNoQixVQURnQkEsTUFDbUIsOEJBRHZCOVgsS0FBSThYO0lBQ2hCLFdBQUMsOEJBRFc5WCxLQUFJOFg7R0FDOEM7O0lBaUI1RDZFO0lBZkFDO0lBQ0FDO0lBRUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBRUFDO0lBRUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBS0FDO0lBQ0FDO0lBQ0FDO1lBd0JFQyxLQUFNbEI7SUFDUixHQUFRLGFBREFBO0tBQ1IsTUFBQTtJQUNZO0tBbEJHa0IsT0FrQkgsMkJBRkpsQjtLQWRKbGIsK0JBRldvYyxhQUFBQTtLQVNYQyxZQVRXRDtJQWFmLFdBWElwYyxPQU9BcWM7R0FTeUI7WUFNM0JDLE9BQ0VwYjtJQUFKOztRQWxGaUI0WixTQWtGYjVaLE1BRWlCLGFBRmpCQSxtQkFBQUEsa0JBQ0FxYixPQURBcmI7U0FDQXFiLE9BREFyYjs7OztRQWxGYTRaLFNBbUZieUIsU0FLb0IsYUFMcEJBLG1CQUlBN1ksT0FKQTZZO1NBSUE3WSxPQUVHOztXQUVGLGFBSkRBO2NBSkE2WTtjQVNHO0dBQXVDO1lBRTNCN1ksS0FBTTZZLE1BQ3hCLE9BRHdCQSxRQUNDO1lBRVBDLEdBQUlELE1BQ3RCLE9BRHNCQSxRQUNHO0dBbkI5QjtJQUFBLDRCQUVNRCxRQWFpQjVZLE1BR0E4WTtJQUluQkM7SUFDQUM7SUFDQUM7SUFTRUM7WUFHQUMsT0FBT2phO0lBQ1QsZUFEU0EsdUJBQUFBLEtBSFBnYTtnQkFLQTtJQUNGLE9BQUEseUJBSFNoYTtHQUdEO1lBRU5zTSxPQUFPaE8sR0FBSSxPQUFKQSxxQkFBb0M7WUFFM0M0Yix3QkFBd0J6USxHQUFFekIsR0FBRW1TO0lBQzlCO2dCQUQ0Qm5TO2lCQUFBQSxJQUYxQnNFLE9BRXdCN0M7O2lCQUV4QixzQkFGNEIwUTtHQUViO1lBR2ZDLFFBQVEzUSxHQUFFekI7SUFMVmtTLHdCQUtRelEsR0FBRXpCO0lBRVosT0FBQSwwQkFGVXlCLEdBQUV6QjtHQUVEO1lBR1RxUyxhQUFhNVEsR0FBRXpCO0lBVmZrUyx3QkFVYXpRLEdBQUV6QjtJQUVqQixPQUFBLCtCQUZleUIsR0FBRXpCO0dBRUQ7WUFHZHNTLFFBQVE3USxHQUFFekIsR0FBRTFKO0lBZlo0Yix3QkFlUXpRLEdBQUV6QjtJQUVaLE9BQUEsMEJBRlV5QixHQUFFekIsR0FBRTFKO0dBRUQ7WUFHWGljLFVBQVU5USxHQUFFekI7SUFwQlprUyx3QkFvQlV6USxHQUFFekI7SUFFZCxPQUFBLDRCQUZZeUIsR0FBRXpCO0dBRUQ7WUFHWHdTLFVBQVUvUSxHQUFFekI7SUF6QlprUyx3QkF5QlV6USxHQUFFekI7SUFFZCxPQUFBLDRCQUZZeUIsR0FBRXpCO0dBRUQ7WUFLWHlTLFNBQVM3USxJQUFHbEIsSUFBR21CLElBQUc2USxJQUFHMWE7SUFDdkI7V0FEdUJBOztZQUFUMEk7V0FsQ1o0RCxPQWtDUzFDLE1BQVk1SixVQUFUMEksV0FBTWdTLE9BbENsQnBPLE9Ba0NlekMsTUFBTTdKLFVBQUgwYTs7a0JBQUcxYTtrQkFJSCwyQkFKVDRKLElBQUdsQixJQUFHbUIsSUFBRzZRLElBQUcxYTtLQUlIOztJQURmLE9BQUE7R0FDcUM7Ozs7T0E5SnpCa1k7T0FVQUM7T0FDQUM7T0FpQmpCSztPQUNBQztPQUVBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQUVBQztPQUNBQztPQUNBQztPQUNBQztPQUNBWjtPQUFBQTtPQUlBYTtPQUNBQztPQUNBQztXQXdCRUM7O09BNEJGSztPQUNBQztPQUNBQztPQWhGQTFCO09BRUFFOztRQTBGRTBCO1FBS0EzTjtRQU9BOE47UUFLQUM7UUFLQUM7UUFLQUM7UUFLQUM7UUFPQUM7Ozs7Ozs7UUExQ0FUOzs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0NwR2M7Ozs7O0lBRmhCVztJQUVnQjs7Ozs7Ozs7Ozs7Ozs7WUFVaEJ0TixLQUFLck4sR0FBRTdDO0lBQ1QsU0FETzZDLEdBQ087V0FEUEEsR0FFTyxPQUFBO0lBSUgsSUFBTmtELE1BQU0sZUFOSmxELEdBTWEsV0FOWDdDLFFBT1IsT0FQTTZDLFdBTUk7O1NBQ1ZDOztNQURJaUQsUUFDSmpELEtBQ21CLFdBUlg5QyxHQU9SOEM7TUFDRSxXQURGQTtrQkFBQUE7VUFBQUE7OztJQUdBLE9BSklpRDtHQUlEO1lBRUYwWCxZQUFZQyxJQUFHQyxJQUFHek47SUFDcEIsSUFBSW5LLE1BQU0sZUFESTJYLFVBRWQsT0FGY0EsWUFDSjs7U0FDVnZjOztNQURJNEUsUUFDSjVFLEtBQ21CLGVBSEZ3YyxJQUFHek47TUFFcEIsV0FBQS9PO2tCQUFBQTtVQUFBQTs7O0lBR0EsT0FKSTRFO0dBSUQ7WUFJRHlQLEtBQUt4UjtJQUNQLElBQUluQixJQURHbUI7SUFDYSxhQUFoQm5CLFVBQXdDLGVBRHJDbUIsTUFDSG5CO0dBQXdEO1lBRTFEMkcsT0FBT21ILElBQUdEO0lBQ1osSUFBSXZPLEtBREt3TztJQUVULGFBREl4TztjQUpGcVQsS0FHVTlFOztrQkFBQUE7Z0JBR2UsZUFIbEJDLE9BQ0x4TztnQkFHQywwQkFKSXdPLElBQUdEO0dBSVU7WUFFcEJnRixJQUFJMVIsR0FBRUssS0FBSUM7SUFDWixRQURRRCxZQUFJQyxRQUFOTixlQUFNTSxZQUFKRDtLQUdILE9BQUEsZUFIQ0wsR0FBRUssS0FBSUM7SUFFUCxPQUFBO0dBQ29CO1lBRXZCMFIsS0FBS2hTLEdBQUVLLEtBQUlDLEtBQUluRTtJQUNqQixRQURTa0UsWUFBSUMsUUFBTk4sZUFBTU0sWUFBSkQ7S0FHSixPQUFBLHdCQUhFTCxHQUFFSyxLQUFJQyxLQUFJbkU7SUFFWixPQUFBO0dBQ3VCO1lBRTFCOFYsS0FBS3RGLElBQUd1RixNQUFLeEYsSUFBR3lGLE1BQUs3UjtJQUN2QjtXQUR1QkE7O1lBQWI0Ujs7U0FBSHZGLGdCQUFnQnJNLFlBQWI0UjtnQkFBUUMsU0FBSHpGLGdCQUFRcE0sWUFBTDZSO0tBSWIsT0FBQSx3QkFKRXhGLElBQUd1RixNQUFLeEYsSUFBR3lGLE1BQUs3UjtJQUdsQixPQUFBO0dBQytCO1lBRWxDZ0csS0FBS3RLLEdBQUVnRTtJQUNULFdBRFNBLHNCQUNUOztTQUFBbEI7O01BQTZCLFdBRHRCOUMsR0FBRWdFLE1BQ1RsQjtNQUE2QixXQUE3QkE7a0JBQUFBO1VBQUFBOzs7O0dBQW1EO1lBRWpEK04sTUFBTTdRLEdBQUVnRSxHQUFFekI7SUFDWixHQURVeUIsaUJBQUV6QjtLQUVWLE9BQUE7SUFFQSxXQUpReUIsc0JBSVI7O1NBQUFsQjs7TUFBNkIsV0FKdkI5QyxHQUFFZ0UsTUFJUmxCLElBSlVQLE1BSVZPO01BQTZCLFdBQTdCQTtrQkFBQUE7VUFBQUE7Ozs7R0FBcUU7WUFFckU2RyxJQUFJM0osR0FBRWdFO0lBQ1IsSUFBSW5CLElBREltQjtJQUVSLFNBREluQixHQUNVO0lBQ0o7S0FBSnhDLElBQUksZUFGTndDLEdBRWUsV0FIYjdDLEdBQUVnRTtLQUlOLE9BSEVuQjtLQUVNOztTQUNSQzs7TUFESXpDLE1BQ0p5QyxLQUNpQixXQUxiOUMsR0FBRWdFLE1BSU5sQjtNQUNFLFdBREZBO2tCQUFBQTtVQUFBQTs7O0lBR0EsT0FKSXpDO0dBS0g7WUFFRG9RLEtBQUt6USxHQUFFZ0UsR0FBRXpCO0lBQ1gsSUFBSXFiLEtBREs1WixjQUVMNlosS0FGT3RiO09BQ1BxYixPQUNBQztLQUVGLE9BQUE7YUFIRUQsSUFLYTtJQUNMO0tBQUp2ZCxJQUFJLGVBTlJ1ZCxJQU1rQixXQVBmNWQsR0FBRWdFLE1BQUV6QjtLQVFQLE9BUEFxYjtLQU1ROztTQUNSOWE7O01BREl6QyxNQUNKeUMsS0FDaUIsV0FUZDlDLEdBQUVnRSxNQVFMbEIsSUFST1AsTUFRUE87TUFDRSxXQURGQTtrQkFBQUE7VUFBQUE7OztJQUdBLE9BSkl6QztHQU1MO1lBRURpUSxNQUFNdFEsR0FBRWdFO0lBQ1YsV0FEVUEsc0JBQ1Y7O1NBQUFsQjs7TUFBNkIsV0FEckI5QyxHQUNSOEMsR0FEVWtCLE1BQ1ZsQjtNQUE2QixXQUE3QkE7a0JBQUFBO1VBQUFBOzs7O0dBQXNEO1lBRXBEc04sS0FBS3BRLEdBQUVnRTtJQUNULElBQUluQixJQURLbUI7SUFFVCxTQURJbkIsR0FDVTtJQUNKO0tBQUp4QyxJQUFJLGVBRk53QyxHQUVlLFdBSFo3QyxNQUFFZ0U7S0FJUCxNQUhFbkI7S0FFTTs7U0FDUkM7O01BREl6QyxNQUNKeUMsS0FDaUIsV0FMWjlDLEdBSUw4QyxHQUpPa0IsTUFJUGxCO01BQ0UsVUFERkE7aUJBQUFBO1VBQUFBOzs7SUFHQSxPQUpJekM7R0FLSDtZQUVEd0wsUUFBUTdIO0lBQ1YsSUFBZTJULE1BREwzVCxzQkFDS2xCLElBQUE2VSxLQUFFNVI7SUFDZjtZQURhakQsR0FDQyxPQURDaUQ7S0FDdUIsSUFEdkIrWCxZQURQOVosTUFDS2xCLElBQUVpRCxNQUFGaEQsTUFBQUQsV0FBQUEsSUFBQUMsS0FBRWdELE1BQUErWDs7R0FFTztZQUdsQkM7UUFBWWpZOzttQkFDVixPQURVQTtLQUVSO01BQUxrWTtNQUFLLFNBRlFsWTtNQUFBQTtnQkFFYmtZOzs7WUFFSEMsUUFFQXBiO0lBRlUsS0FFVkEsR0FETTtJQUVJO0tBRE5NLEtBQUpOO0tBQUFPLEtBQUFQO0tBQ01tQixJQUFJLGVBUE4rWixlQU1KbGIsSUFBQU87S0FFZU47YUFGWEs7O2lCQUVGLE9BRElhO1NBR0ltUSxpQkFBSnNDO0tBSEF6UyxNQUNTbEIsS0FFVDJUO0tBRkosSUFBQSxNQUFhM1QsV0FBQUEsaUJBRUxxUjs7R0FDQztZQUVYakssVUFBVWxLLEdBQUVtQixHQUFFNkM7SUFDaEIsSUFBSTNELFFBRFVjLFVBQUU2QyxzQkFDUjs7U0FDUmxCOztNQURJekMsT0FFRyxXQUhLTCxHQUNSSyxNQURZMkQsTUFFaEJsQjtNQUFBLFVBQUFBO2lCQUFBQTtVQUFBQTs7O1dBREl6QztHQUlGO1lBRUFtUyxjQUFjeFMsR0FBRW1LLEtBQUkrVDtJQUN0QixJQUFJNVosTUFEa0I0WjtJQUV0QixTQURJNVosS0FDWSxXQUZFNkY7SUFHRDtLQUFBLFFBQUEsV0FIRG5LLEdBQUVtSyxLQUFJK1Q7S0FHWEM7S0FBTC9UO0tBQ0FnVSxlQUFlLGVBSGpCOVosS0FFTzZaO0tBRUw5VCxZQUZBRDtLQUdKLE1BTEU5RjtLQUlROztTQUNWeEI7O01BQ2tCO09BQUEsVUFBQSxXQVBKOUMsR0FLVnFLLFVBTGdCNlQsZ0JBTXBCcGI7T0FDWXViO09BQU5DO01BRkZqVSxXQUVFaVU7TUFIRkYsaUJBRUp0YixLQUNZdWI7TUFEWixVQUFBdmI7aUJBQUFBO1VBQUFBOzs7SUFLQSxXQU5JdUgsVUFEQStUO0dBUUg7WUFFRDVOLFdBQVd4USxHQUFFZ0UsR0FBRTdDO0lBQ2pCLElBQUlkLFFBRGFjLElBRWpCLE1BRmU2Qzs7U0FFZmxCOztNQURJekMsT0FFRyxXQUhNTCxHQUFFZ0UsTUFFZmxCLElBREl6QztNQUNKLFVBQUF5QztlQUFBQTtVQUFBQTs7O1dBREl6QztHQUlGO1lBRUE2USxPQUFPRCxHQUFFak47SUFDWCxJQUFJcEQsSUFET29ELGNBRUVsQjtJQUNYO1FBRFdBLE1BRFRsQyxHQUVZO0tBQ04sR0FBQSxXQUpEcVEsR0FBRWpOLE1BRUVsQixLQUVxQjtLQUMzQixJQUhNQyxNQUFBRCxXQUFBQSxJQUFBQzs7R0FJUDtZQUVKaU8sUUFBUUMsR0FBRWpOO0lBQ1osSUFBSXBELElBRFFvRCxjQUVDbEI7SUFDWDtRQURXQSxNQURUbEMsR0FFWTtLQUNOLEtBQUEsV0FKQXFRLEdBQUVqTixNQUVDbEIsS0FHTjtLQUQyQixJQUZyQkMsTUFBQUQsV0FBQUEsSUFBQUM7O0dBSVA7WUFFSm9PLFNBQVNGLEdBQUU5TyxJQUFHQztJQUNoQixJQUFJNFIsS0FEUzdSLGVBRVQ4UixLQUZZN1I7T0FDWjRSLE9BQ0FDLElBQ2EsT0FBQTtRQUNDblI7SUFDaEI7UUFEZ0JBLE1BSGRrUixJQUlhO0tBQ1AsS0FBQSxXQU5DL0MsR0FBRTlPLE9BSUtXLElBSkZWLE9BSUVVLEtBR1g7S0FEOEMsSUFGbkNDLE1BQUFELFdBQUFBLElBQUFDOztHQUlaO1lBRUpxTyxRQUFRSCxHQUFFOU8sSUFBR0M7SUFDZixJQUFJNFIsS0FEUTdSLGVBRVI4UixLQUZXN1I7T0FDWDRSLE9BQ0FDLElBQ2EsT0FBQTtRQUNDblI7SUFDaEI7UUFEZ0JBLE1BSGRrUixJQUlhO0tBQ1AsR0FBQSxXQU5BL0MsR0FBRTlPLE9BSU1XLElBSkhWLE9BSUdVLEtBRW1DO0tBQzlDLElBSFdDLE1BQUFELFdBQUFBLElBQUFDOztHQUlaO1lBRUpzTyxJQUFJbFEsR0FBRTZDO0lBQ1IsSUFBSXBELElBRElvRCxjQUVLbEI7SUFDWDtRQURXQSxNQURUbEMsR0FFWTtLQUNOLFNBQUEscUJBSkZvRCxNQUVLbEIsSUFGUDNCLElBSXdDO0tBQ3ZDLElBSE00QixNQUFBRCxXQUFBQSxJQUFBQzs7R0FJUDtZQUVKdU8sS0FBS25RLEdBQUU2QztJQUNULElBQUlwRCxJQURLb0QsY0FFSWxCO0lBQ1g7UUFEV0EsTUFEVGxDLEdBRVk7UUFIVE8sTUFBRTZDLE1BRUlsQixJQUV3QjtLQUM5QixJQUhNQyxNQUFBRCxXQUFBQSxJQUFBQzs7R0FJUDtZQUVKa1AsU0FBU2hCLEdBQUVqTjtJQUNiLElBQUlwRCxJQURTb0QsY0FFQWxCO0lBQ1g7UUFEV0EsTUFEVGxDLEdBRVk7S0FFSixJQUFKTyxJQUxLNkMsTUFFQWxCO0tBSU4sR0FBQSxXQU5JbU8sR0FLSDlQLElBQ1EsV0FEUkE7S0FFQyxJQUxJNEIsTUFBQUQsV0FBQUEsSUFBQUM7O0dBT1A7WUFFSm1QLFNBQVNsUyxHQUFFZ0U7SUFDYixJQUFJcEQsSUFEU29ELGNBRUFsQjtJQUNYO1FBRFdBLE1BRFRsQyxHQUVZO0tBRU4sSUFFSlAsSUFGSSxXQUxDTCxHQUFFZ0UsTUFFQWxCO1FBS1B6QyxHQUFlLE9BQWZBO0tBRFEsSUFKRDBDLE1BQUFELFdBQUFBLElBQUFDOztHQU9QO1lBRUpnUSxNQUFNNVI7SUFDUixHQUFHLG1CQURLQSxTQUNTO0lBR2Y7YUFKTUE7S0FHRW9kO0tBQUpDO0tBQ0E1ZCxJQUpFTztLQUtGNkMsSUFBSSxlQURKcEQsR0FEQTRkO0tBR0FqYyxJQUFJLGVBRkozQixHQURJMmQ7S0FJUixNQUhJM2Q7S0FFSTs7U0FDUmtDOztvQkFQTTNCLE1BT04yQixJQUNVMmIsaUJBQUpDO01BSEYxYSxNQUVKbEIsS0FDTTRiO01BRkZuYyxNQUNKTyxLQUNVMmI7TUFEVixVQUFBM2I7aUJBQUFBO1VBQUFBOzs7SUFLQSxXQVBJa0IsR0FDQXpCO0dBT0g7WUFFRDJRLFFBQVFsUCxHQUFFekI7SUFDWixJQUFJb2MsS0FETTNhLGNBRU40YSxLQUZRcmM7T0FDUm9jLE9BQ0FDLElBQ2E7YUFGYkQsSUFHVztJQUVMLElBQUp4ZCxJQUFJLGVBTE53ZCxRQURNM2EsTUFBRXpCLFFBT1YsTUFORW9jLFlBS007O1NBQ1I3Yjs7TUFESTNCLE1BQ0oyQixTQVBRa0IsTUFPUmxCLElBUFVQLE1BT1ZPO01BQUEsVUFBQUE7aUJBQUFBO1VBQUFBOzs7SUFHQSxPQUpJM0I7R0FLSDtHQUVMO1lBQ0lzUyxLQUFLOUgsS0FBSTNIO2FBQ1A2YSxPQUFPaGMsR0FBRUM7S0FDWCxJQUFJZ2MsUUFET2hjLElBQUFBLFNBQUFBLGdCQUVQM0IsUUFEQTJkO1NBQUFBLGVBREtqYztNQUdTLElBQUEsTUFGZGljLGFBR2lCLHVCQUxaOWE7U0FLSixXQUxBMkgsc0JBQUkzSCxHQUVMOGEsU0FBQUE7T0FDQTNkLE9BREEyZDtNQUlGO09BQUEsTUFKRUE7T0FJZ0IsdUJBTlg5YTthQUdMN0M7U0FHQyxXQU5Bd0ssc0JBQUkzSDtPQUdMN0MsT0FEQTJkO2FBQ0EzZDs7U0FEQTJkLGVBREtqYztNQVF5QixVQVA5QmljLGFBTzhCLHVCQVR6QjlhO01BU1MsT0FBQSxXQVRiMkgsc0JBQUkzSCxHQUVMOGEsU0FBQUE7T0FRRyxPQVJIQTs7UUFBQUEsTUFES2pjLEdBVWMsT0FUbkJpYztLQVM0QixNQUFBLHdDQVZyQmhjO0lBVXFDO1FBV3RDRCxJQXRCRG1CLHNCQXNCQ25COztTQUFFa2M7O01Ba0JrQyxJQWxCaENDLHVCQXRCTGhiLEdBc0JHK2EsU0FBQUE7TUFBTTtXQVRFamMsSUFTUmljO09BUlo7UUFBUSxJQUFKbEksSUFiRmdJLE9BcUJRaGMsR0FUVUM7UUFFakIsUUFBQSxXQWZFNkksc0JBQUkzSCxHQWNMNlMsT0FBQUEsSUFRVW1JO1FBTkosMkJBaEJEaGIsR0FjTDZTLE9BQUFBO1FBRUYsaUJBaEJPN1MsR0FhV2xCLE9BQUFBO1lBQUFBLElBQ2hCK1Q7O09BSUssaUJBbEJBN1MsR0FhV2xCLE9BQUFBLEtBU05rYzs7Ozs7V0FBc0NqYztPQUFLLGlCQXRCaERpQixHQXNCMkNqQixTQUFBQSxPQUF0Q2ljOztNQWtCb0IsVUFsQnRCRDtlQUFBQTtVQUFBQTs7O0lBbUJkLFVBbkJZbGM7O1NBTURvYzs7TUFjRCxJQWJVQyx1QkE3QlRsYixHQTRCQWliLFNBQUFBO01BNUJBamIsTUE0QkFpYix3QkE1QkFqYjtVQTRCRW1iO01BQUk7V0FMSXhILE1BS1J3SDtPQUpYO1FBQVEsSUFEV0MsTUF0QmpCUCxPQTJCT0ksS0FMVXRILE1BRVgsdUJBekJDM1QsR0F1QlVvYixTQUFBQTtRQUVuQixpQkF6QlNwYixHQXVCVTJULFNBQUFBO1lBQUFBLE1BQUF5SDs7Ozs7O1dBTUhDOzs7OzthQUFBQyxNQUFBRDtTQUNoQjtjQUFJRSxVQURZRDthQUFBQSxRQUNaQztXQUNKLE1BQUE7VUFDRztpQkFBQSxXQWhDRTVULHNCQUFJM0gsR0E4Qkx1YixZQUFBQSxTQURjTDs7VUFJUiwyQkFqQ0RsYixHQThCTHViLFlBQUFBO1VBR0YsaUJBakNPdmIsR0E2Qk9zYixTQUFBQTtrQkFDWkM7Y0FEWUQsTUFDWkM7O1NBS0ssaUJBbkNBdmIsR0E2Qk9zYixTQUFBQSxPQUFFSjs7O1FBSzJCLGlCQWxDcENsYixXQTZCU2tiOztPQVlwQixVQWJXRDtnQkFBQUE7V0FBQUE7Ozs7a0JBTkNwYzs7S0F3QlcsSUFBSnlKLHFCQTlDUnRJO0tBQUFBLHdCQUFBQTtLQUFBQSxPQThDUXNJOzs7OztJQUFvQztHQUFVO1lBSS9Ea0gsWUFBWTdILEtBQUkzSDthQUNkbVAsTUFFV3FNLFNBRkdDLFNBQVFDLE1BRUxDLFNBRmtCQyxTQUFRckosS0FFcEJzSjtLQUR6QjtNQUFJQyxRQUNTTixVQUZHQztNQUNrQk0sUUFDZkosVUFGa0JDO01BRWZJLHdCQUZFTixNQUVMQyxhQUFBQTtNQUFITSx3QkFIQWpjLEdBR0h3YixhQUFBQTtNQUFBVSxLQUFBVjtNQUFHdmQsS0FBQWdlO01BQUdFLEtBQUFSO01BQUd6ZCxLQUFBOGQ7TUFBR0ksSUFBQVA7S0FDdkI7TUFBRyxPQUFBLFdBSk9sVSxLQUdJMUosSUFBTUM7T0FTbEIsaUJBWHlDcVUsS0FFcEI2SixPQUFBQSxLQUFIbGU7T0FTbEIsSUFDSW1lLE9BVldGO1VBVVhFLFFBWDBCTixjQS9QbEM5SixLQTZQZ0JqUyxHQUdIa2MsSUFGZ0MzSixLQUVwQjZKLFdBRHJCTixRQUNTSTtPQVlQO1FBWm1CSSxNQUFBRjtRQUFIRyx3QkFGRWIsTUFZaEJXLFVBQUFBO1FBVldGLEtBVVhFO1FBVmNuZSxLQUFBcWU7UUFBR0gsSUFBQUU7OztPQUVyQixpQkFKeUMvSixLQUVwQjZKLE9BQUFBLEtBQVRuZTtPQUVaLElBQ0l1ZSxPQUhLTjtVQUdMTSxRQUpKVjtlQS9QSjdKLEtBOFB3QnlKLE1BRUxTLElBRjBCNUosS0FFcEI2SixXQURTTCxRQUNmSTtPQUtiO1FBTG1CTSxNQUFBTDtRQUFUTSx3QkFIQTFjLEdBTVJ3YyxVQUFBQTtRQUhLTixLQUdMTTtRQUhRdmUsS0FBQXllO1FBQVNOLElBQUFLOztJQWdCeUM7YUFFaEVFLFFBQVFDLFFBQU9ySyxLQUFJc0osUUFBT3ZiO0tBQzVCLFVBRDRCQSxhQUM1Qjs7VUFBQXhCOztPQUNVO2NBRkE4ZCxTQUNWOWQ7UUFDTXdKLHFCQXZCVXRJO1FBd0JWNlMsU0FIZWdKLFNBQ3JCL2M7O1dBRHFCK2MsU0FHZmhKO2tCQUFBQTtRQUNtQixRQUFBLFdBekJibEwsc0JBcUJLNEssb0JBRVhqSzs7UUFHZTtlQUZmdUs7U0FFZSx1QkFMSk47ZUFHWE07UUFFRixpQkFMYU47UUFHWE07O2lCQUFBQTtPQUtKLGlCQVJlTixxQkFFWGpLO09BRE4sVUFBQXhKO2tCQUFBQTtXQUFBQTs7OztJQVFJO2FBRUUrZCxPQUFPRCxRQUFPckssS0FBSXNKLFFBQU92YjtLQUMvQixHQUQrQkEsVUFDVCxPQVpwQnFjLFFBV1dDLFFBQU9ySyxLQUFJc0osUUFBT3ZiO1NBRXpCbkMsS0FGeUJtQyxhQUd6QmxDLEtBSHlCa0MsTUFFekJuQztLQUZBMGUsT0FBT0QsU0FFUHplLFFBRmNvVSxLQUFJc0osU0FFbEIxZCxRQUNBQztLQUhBeWUsT0FBT0QsUUFoQ0c1YyxHQWdDSDRjLFNBR1B4ZSxRQURBRDtLQUdKLE9BcENBZ1IsTUErQld5TixTQUdQeGUsUUFEQUQsSUFGY29VLEtBQUlzSixTQUVsQjFkLFFBQ0FDLElBSGNtVSxLQUFJc0o7SUFPckI7UUFFRGhkLElBekNjbUI7T0F5Q2RuQixRQUNnQixPQXJCaEI4ZCxXQXJCYzNjLE1BeUNkbkI7SUFJTTtLQUZKVixLQUZGVTtLQUdFVCxLQUhGUyxJQUVFVjtLQUVBNmIsSUFBSSxlQURKNWIscUJBNUNZNEI7SUFnQ1Y2YyxPQVdGMWUsSUFFQTZiLE1BREE1YjtJQVpFeWUsVUFoQ1U3YyxHQTRDWjVCLElBREFEO0lBSUosT0E5Q0VnUixNQTJDRS9RLElBREFELElBRUE2YixNQURBNWIsSUE1Q1k0QjtHQWlEZjtZQU9EOEgsT0FBTzlIO2FBQ0QrUSxJQUFJalM7S0FDVixHQURVQSxLQURIa0IsY0FNRjtLQUZLLElBQUo3QyxJQUpDNkMsTUFDR2xCLElBR0EsTUFIQUE7S0FJUixXQURJM0IsaUIsT0FIQTRUO0lBS007SUFFZDtJQUFBLHFCLE9BUFFBO0dBT0g7WUFFSDhELFFBQVE3VTthQUNGK1EsSUFBSWpTO0tBQ1YsR0FEVUEsS0FERmtCLGNBTUg7S0FGSyxJQUFKN0MsSUFKRTZDLE1BQ0VsQixJQUdBLE1BSEFBO0tBSVIsZUFKUUEsR0FHSjNCLGtCLE9BSEE0VDtJQUtNO0lBRWQ7SUFBQSxxQixPQVBRQTtHQU9IO1lBYUhFLE9BQU9vSztJQUNUO2lCQUEyQmxWLEtBQUloSixHQUFLLFdBQUxBLEdBQUpnSixLQUFlO0lBQWxDLElBVk50SCxJQVVNLHFDQURDd2M7U0FUUHhjLEdBRE07SUFFTTtLQURSTSxLQUFKTjtLQUFBTyxLQUFBUDtLQUNNeUIsTUFqUkZ5WixlQWdSSmxiO0tBRU1tQixJQUFJLGVBREpNLEtBRE5sQjtLQUNZLE1BQU5rQjtLQUVTeEI7YUFIWEs7O2lCQUdGLE9BRElhO1NBR0ltUSxpQkFBSnNDO0tBSEF6UyxNQUNTbEIsS0FFVDJUO0tBRkosSUFBQSxNQUFhM1QsV0FBQUEsaUJBRUxxUjs7R0FNQzs7OztPQTFZWHFKO09BWUF0TjtPQVlBdU47T0FBQUE7T0FZQWpVOztPQU1Ba007T0FUQUY7T0FjQVE7T0FLQUM7T0FxREFwSztPQVVBb1M7T0F6REEzVDtPQWtDQWdHO09BekJBM0c7T0E0QkF5RztPQTZCQWxHO09BT0FzSTtPQWNBaEM7T0FwRkFLO09BZ0JBSjtPQW1GQU87T0FSQUU7T0FnQkFDO09BVUFDO09BVUFDO09BUUFDO09BUUFXO09BV0FDO09BV0FhO09BZUFHO09BY0FPO09Ba0RBRDtPQUFBQTtPQXdEQTFIO09BVUErTTtPQXFCQTVEOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7OztJRS9YQUc7SUFDQUM7O0lBQ0FDO1lBQ0E1RyxLQUFLOU4sR0FBSSxPQUFKQSxVQUFZO1lBQ2pCK04sS0FBSy9OLEdBQUksT0FBSkEsVUFBWTtZQUNqQlUsSUFBSVYsR0FBSSxPQUFHLGtCQUFQQSxRQUFBQSxNQUFBQSxNQUFnQztPQUNwQ21CLHVCQUNBRDtZQUNBeVQsT0FBTzNVLEdBQUksT0FBSkEsT0FBa0I7OztJQUt2QjtLQUFJdWhCO0tBSE5DO2dCQUlNeGhCO1FBQ0YsUUFBRyxvQkFEREEsV0FDd0IsaUJBRHhCQSxHQURBdWhCO1NBR0EsV0FGQXZoQjtRQUlBO09BQUk7OztLQU1SLE1BQUE7UUFkRndoQiwyQkFZTXhoQixHQUFLLFdBQUxBLFFBQThCOztZQUtwQytNLFVBQVUvTSxHQUFJLE9BQUEsOEJBQUpBLEdBQWlCO1lBSTNCc2dCLGNBQWNsZ0I7SUFFaEIsSUFBSSxjQUFLLDJCQUZPQSxLQUVaOzs7OEJBQ2M7OztHQUFJO09BSXBCMEs7WUFDQU4sTUFBT2pLLEdBQU9DLEdBQVEsYUFBQSxpQkFBZkQsR0FBT0MsV0FBdUI7WUFFckNpaEIsaUJBQWlCemhCLEdBQUUwaEI7SUFDckIsT0FBd0IsaUJBREwxaEIsb0JBQUUwaEI7R0FDa0I7WUFFckNwaEIsSUFBSUMsR0FBRUMsR0FBUSxPQUFHLHVCQUFiRCxHQUFFQyxLQUFGRCxJQUFFQyxFQUErQjtZQUNyQ0MsSUFBSUYsR0FBRUMsR0FBUSxPQUFHLGtCQUFiRCxHQUFFQyxLQUFGRCxJQUFFQyxFQUErQjtZQUtyQ21oQixhQUFhM2hCLEdBQUV3ZjtJQUNqQixHQUFHLHNCQURjQTtLQUVaLFlBWEhpQyxpQkFTYXpoQixHQUFFd2YsS0FqRGYvSyxNQURBRDtJQXNEUSxJQUFKb04sSUFBZSxpQkFKTjVoQixhQUFFd2YsU0FLWC9mLElBTFNPLElBS0MsU0FEVjRoQixHQUpXcEM7SUFNWixZQWZIaUMsaUJBY0loaUIsR0FMVytmLEtBSVhvQyxZQUFBQTtHQUUyQztZQUUvQ0MsYUFBYTdoQixHQUFFd2Y7SUFDakIsT0FEZXhmLElBQ1QsU0FUSjJoQixhQVFhM2hCLEdBQUV3ZixJQUFBQTtHQUNlOzs7O09BM0Q5QmhMO09BQ0FDO09BQ0FDO09BZ0RBaU47T0FRQUU7T0F2REEvVDtPQUNBQztPQUNBck47T0FFQVE7T0FEQUM7T0FFQXdUO09BRUE2TTtPQXFCQWxCO09BSkF2VDtPQVdBakM7T0FHQTJXO09BRkFqWDtPQUtBbEs7T0FDQUc7OztFOzs7Ozs7Ozs7Ozs7Ozs7O0lDL0NBK1Q7SUFDQUM7SUFDQUM7SUFJQXZUO0lBQ0FEOzs7Ozs7WUFKQTRNLEtBQUs5TixHQUFJLE9BQUEsdUJBQUpBLFFBQVk7WUFDakIrTixLQUFLL04sR0FBSSxPQUFBLGVBQUpBLFFBQVk7WUFDakJVLElBQUlWO0lBQUksT0FBRyxrQkFBUEEsVUFBQUEsSUFBMkIsdUJBQTNCQTtHQUFnQztZQUdwQzJVLE9BQU8zVSxHQUFJLE9BQUEsdUJBQUpBLFFBQWtCO0dBR2IsSUFBVnVoQixZQUFVO1lBRFpDLGdCQUVFeGhCO0lBQ0Y7V0FBRyxtQkFiSHdVLE1BWUV4VTtjQUN3QixtQkFEeEJBLEdBREF1aEI7S0FHQSx1Q0FGQXZoQjtJQUlBO0dBQUk7WUFHTitNLFVBQVUvTSxHQUFJLE9BQUEsZ0NBQUpBLEdBQWlCO1lBSTNCc2dCLGNBQWNsZ0I7SUFFaEIsSUFBSSxjQUFLLDZCQUZPQSxLQUVaOzs7OEJBQ2M7OztHQUFJO1lBYXBCMEssUUFBU3ZLLEdBQU9DLEdBQVEsT0FBQSxtQkFBZkQsR0FBT0MsR0FBMEI7WUFDMUNnSyxNQUFPakssR0FBT0MsR0FBUSxhQUFBLG1CQUFmRCxHQUFPQyxXQUF1QjtZQUVyQ2loQixpQkFBaUJ6aEIsR0FBRTBoQjtJQUNyQixPQUF3QjthQUFoQixlQURXMWhCLEdBcENqQm1CLFVBcUNzQixlQURIdWdCLEdBcENuQnZnQjtHQXFDcUM7WUFFckNiLElBQUlDLEdBQUVDLEdBQVEsT0FBRyx1QkFBYkQsR0FBRUMsS0FBRkQsSUFBRUMsRUFBK0I7WUFDckNDLElBQUlGLEdBQUVDLEdBQVEsT0FBRyxrQkFBYkQsR0FBRUMsS0FBRkQsSUFBRUMsRUFBK0I7WUFLckNtaEIsYUFBYTNoQixHQUFFd2Y7SUFDakIsR0FBRyxzQkFEY0EsR0FuRGZoTDtLQXFERyxZQVhIaU4saUJBU2F6aEIsR0FBRXdmLEtBbERmL0ssTUFEQUQ7SUF1RFE7S0FBSm9OO09BQUk7U0FBVztXQUFLLHdDQUpYNWhCLE9BQUV3Zjs7S0FLWC9mLElBQUksZUFMS08sR0FLQyxlQURWNGhCLEdBSldwQztJQU1aLFlBZkhpQyxpQkFjSWhpQixHQUxXK2YsS0FoRGYxUixLQW9ESThULEtBQUFBO0dBRTJDO1lBRS9DQyxhQUFhN2hCLEdBQUV3ZjtJQUNqQixPQUFBLGVBRGV4ZixHQUNULGVBVEoyaEIsYUFRYTNoQixHQUFFd2YsSUFBQUE7R0FDZTs7OztPQTVEOUJoTDtPQUNBQztPQUNBQztPQWlEQWlOO09BUUFFO09BeERBL1Q7T0FDQUM7T0FDQXJOO09BRUFRO09BREFDO09BRUF3VDtPQUVBNk07T0FhQWxCO09BSkF2VDtPQW9CQWpDO09BR0EyVztPQUZBalg7T0FLQWxLO09BQ0FHOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNoREErVDtJQUNBQztJQUNBQztZQUNBNUcsS0FBSzlOLEdBQUksT0FBSkEsVUFBWTtZQUNqQitOLEtBQUsvTixHQUFJLE9BQUpBLFVBQVk7WUFDakJVLElBQUlWLEdBQUksT0FBRyxrQkFBUEEsUUFBQUEsTUFBQUEsTUFBZ0M7R0FFMUI7SUFEVjhoQjtJQUNBM2dCLGdCQURBMmdCO0lBRUE1Z0IsVUFEQUM7WUFFQXdULE9BQU8zVSxHQUFJLE9BQUpBLE9BQWtCO09BR3ZCdWhCO1lBREZDLGdCQUVFeGhCO0lBQ0YsUUFBRyxvQkFEREEsV0FDd0IsaUJBRHhCQSxHQURBdWhCO0tBR0EsV0FGQXZoQjtJQUlBO0dBQUk7WUFHTitNLFVBQVUvTSxHQUFJLE9BQUEsOEJBQUpBLEdBQWlCO1lBSTNCc2dCLGNBQWNsZ0I7SUFFaEIsSUFBSSxjQUFLLDJCQUZPQSxLQUVaOzs7OEJBQ2M7OztHQUFJO09BSXBCMEs7WUFDQU4sTUFBT2pLLEdBQU9DLEdBQVEsYUFBQSxpQkFBZkQsR0FBT0MsV0FBdUI7WUFFckNpaEIsaUJBQWlCemhCLEdBQUUwaEI7SUFDckIsT0FBd0IsaUJBREwxaEIsSUEzQmpCbUIsYUEyQm1CdWdCLElBM0JuQnZnQjtHQTRCcUM7WUFFckNiLElBQUlDLEdBQUVDLEdBQVEsT0FBRyx1QkFBYkQsR0FBRUMsS0FBRkQsSUFBRUMsRUFBK0I7WUFDckNDLElBQUlGLEdBQUVDLEdBQVEsT0FBRyxrQkFBYkQsR0FBRUMsS0FBRkQsSUFBRUMsRUFBK0I7WUFLckNtaEIsYUFBYTNoQixHQUFFd2Y7SUFDakIsR0FBRyxzQkFEY0E7S0FFWixZQVhIaUMsaUJBU2F6aEIsR0FBRXdmLEtBMUNmL0ssTUFEQUQ7SUErQ1EsSUFBSm9OLElBQWUsaUJBSk41aEIsYUFBRXdmLFNBS1gvZixJQUxTTyxJQUtDLFNBRFY0aEIsR0FKV3BDO0lBTVosWUFmSGlDLGlCQWNJaGlCLEdBTFcrZixLQUlYb0MsWUFBQUE7R0FFMkM7WUFFL0NDLGFBQWE3aEIsR0FBRXdmO0lBQ2pCLE9BRGV4ZixJQUNULFNBVEoyaEIsYUFRYTNoQixHQUFFd2YsSUFBQUE7R0FDZTs7OztPQXBEOUJoTDtPQUNBQztPQUNBQztPQXlDQWlOO09BUUFFO09BaERBL1Q7T0FDQUM7T0FDQXJOO09BQ0FvaEI7T0FFQTVnQjtPQURBQztPQUVBd1Q7T0FFQTZNO09BYUFsQjtPQUpBdlQ7T0FXQWpDO09BR0EyVztPQUZBalg7T0FLQWxLO09BQ0FHOzs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJQ3REQXNoQjtJQW1IQUM7Ozs7OztZQTVFQUMsT0FBT0MsS0FBSUMsT0FBTXJkO0lBQ25CO0tBQUl5TSxTQUFTLHdCQURKMlEsS0FBSUMsT0FBTXJkO2dCQUNmeU07aUJBRGV6TSxZQXZDakJpZDs7S0F1Q2lCamQsVUFBQUE7ZUFBQUE7S0FBQUEsc0NBQUFBLFNBQUFBOztJQU9uQixPQU5JeU07R0FNRTtZQUdKNlEsV0FBV0YsS0FBSUMsT0FBTXJkO0lBQ3ZCO0tBQUl5TSxTQUFTLDRCQURBMlEsS0FBSUMsT0FBTXJkO2dCQUNuQnlNO2lCQURtQnpNLFlBakRyQmlkOztLQWlEcUJqZCxVQUFBQTtlQUFBQTtLQUFBQSxzQ0FBQUEsU0FBQUE7O0lBT3ZCLE9BTkl5TTtHQU1FO1lBa0VKOFEsY0FBZ0JDLEtBQXVCQztJQUN6QyxHQURrQkQ7U0FBaUJFLE1BQWpCRixRQUFBRyxpQkFBaUJEOztTQUFqQkM7SUFDbEI7S0FBQSxNQURrQkEsaUJBUGhCVCxXQW5IQUQ7V0EwSGdCVSxpQkFQaEJULFdBbkhBRDtLQTBEb0JXLGFBaUVPOztLQVFqQjs7Ozs7OztLQVBHLE1BQUE7SUFEZjtxQkFqRWlDQzthQUUvQjtjQURFQztnQkFDRjtrQkE4RHVDTCxVQWhFbkJHLGlDQUFBQTtjQUdsQjFpQixRQUZBNGlCLE9BQUFBLFFBRDZCRDtxQ0FBQUEsY0FBQUEsWUFHN0IzaUI7O2tCQUg2QjJpQixZQUFBQSxpQkFHN0IzaUI7d0NBSDZCMmlCO2VBaUIxQjs7aUJBakIwQkE7aUJBQUFBO2lCQUFBQTs7aUJBQUFBLFlBQUFBOztlQTRCM0I7Z0JBREVFO2tCQUNGOzs2Q0E1QjJCRjs7a0JBMkJ6QkUsV0EzQnlCRixZQUFBQSxpQkFHN0IzaUI7Z0JBMkJLO2VBQ1EsSUFBVDhpQixTQUFTLGtCQUpURDtlQU1KOztpQkFqQzZCRjtpQkFBQUE7aUJBK0J6Qkc7O2lCQS9CeUJILFlBQUFBO2VBQUFBLFlBK0J6Qkc7O2tCQVNGMWlCLElBeEMyQnVpQjtjQUFBQSxZQUFBQSxZQXdDM0J2aUI7Y0F4QzJCdWlCLFlBQUFBLFlBd0MzQnZpQjtjQXhDMkJ1aUI7Y0FBQUEsWUFBQUEsWUF3QzNCdmlCO2NBeEMyQnVpQixZQUFBQSxZQXdDM0J2aUI7a0JBTUFnZCxJQTlDMkJ1RixrQkE4QzNCdkY7O21CQUNKbGI7O2dCQUNVLElBQUozQyxxQkFGRjZkLEdBQ0psYixPQUFBQTt3QkFDTTNDLEdBRUYsaUJBSkE2ZCxHQUNKbGIsT0FBQUEsS0FDTTNDLElBUkZhO2dCQU9KLFVBQUE4QjsyQkFBQUE7b0JBQUFBOzs7O2FBT0Y7aUNBdERzQndnQixlQUFXQyxXQUFBQSxXQUc3QjNpQjthQUg2QjJpQixZQUFBQSxZQUc3QjNpQjs7Ozs7Ozs7Ozs7Ozs7R0EwRUg7WUFFQytpQixhQUFjTixnQkFBZXJlO0lBQy9CLE9BaEJFaWU7YUFlY0k7c0JBQ21CM2QsS0FBSTlFLEdBQUssT0FBQSx1QkFEYm9FLElBQ0lVLFFBQUk5RSxHQUFxQjtHQUFDO1lBRTNEa2EsWUFBY29JLEtBQXVCbGlCO0lBQ3ZDLEdBRGdCa2lCO1NBQWlCRSxNQUFqQkYsUUFBQUcsaUJBQWlCRDs7U0FBakJDO0lBQ2hCO0tBQUEsTUFEZ0JBLGlCQXpCZFQsV0FuSEFEO1dBNEljVSxpQkF6QmRULFdBbkhBRDs7S0FzSlU7Ozs7Ozt5Q0FWMkIzaEI7S0FFeEIsTUFBQSw0QkFGd0JBO0lBQ3ZDO3FCQUFxQnVpQixRQUFBQSx3QkFBd0M7Ozs7Ozs7Ozs7OztHQWE1RDtZQUVDSyxhQUFhTCxRQUFPTTtJQUFQTixpQkFBQUEsZUFBT00sYUFBQUEsYUFBQUE7SUFBUE4sWUFBT007O0dBRWlCO1lBRXJDQyxhQUFhUCxRQUFPUTtJQUN0QixVQURlUjtJQUFBQSxpQkFBT1E7O0dBQ3lDO1lBRTdEVixlQUFlRSxRQUFTLE9BQVRBLGVBbktmWixrQkFtS3NEO1lBRXREcUIsT0FBT1Q7SUFDVCxJQUFJamYsTUFES2lmLFlBQUFBO0lBRVQsT0FBQSw0QkFGU0EsV0FBQUEsV0FDTGpmO0dBQ3VEO1lBRXpEMmYsV0FBV1YsUUFBT3JELElBQUdDO0lBQ3ZCLElBQUk3YixNQURtQjZiLEtBQUhEO0lBRXBCLE9BQUEsNEJBRmFxRCxXQUFPckQsSUFDaEI1YjtHQUNxQztZQUV2QzRmLGVBQWVYLFFBQU9yRCxJQUFHQztJQUMzQixPQUR3QkQsSUFJZjtRQUZINWIsTUFGcUI2YixLQUFIRDtJQUd0QixXQUFLLDRCQUhVcUQsV0FBT3JELElBRWxCNWI7R0FJSDtZQUVENmYsZ0JBQWdCWixRQUFPemdCLEdBQUksT0FBQSxlQUFYeWdCLFdBQU96Z0IsR0FBaUM7WUFFeERzaEIsb0JBQW9CYixRQUFPemdCO0lBQzdCLFlBRDZCQSxRQUV0QixlQUZleWdCLFdBQU96Z0I7R0FJdkI7WUFHSnVoQixZQUFZZCxRQUFPemdCO0lBQ3JCLE9BQUEsZUFEY3lnQixXQUFBQSxZQUFPemdCO0dBQ2lDO1lBRXBEd2hCLGFBQWFmLFFBQVMsT0FBVEEsY0FBb0M7WUFDakRnQixXQUFXaEIsUUFBUyxPQUFUQSxjQUFtQztZQUU5Q2lCLGVBQWVqQixRQUFTLE9BQVRBLFdBQTJCO1lBQzFDa0IsYUFBYWxCLFFBQVMsT0FBVEEsV0FBMEI7WUFFdkNtQixTQUFTbkI7SUFDWDtLQUFJb0IsTUFET3BCO1dBQ1BvQixRQXhNRmhDOzs7V0F1TVNZLGlCQUNQb0IsUUFBQUEsZ0JBQUFBLFFBQUFBOzs7R0FNQztZQU1IQyxZQUFZL0c7SUFBQUE7SUFBQUE7UUFHVjhHLE1BSFU5RztPQUdWOEcsUUF2TkZoQztLQW9OWTlFLGFBR1Y4RyxRQXBHRi9CLGFBQUFBLGFBQUFBO0lBaUdZL0U7O0dBTVM7Ozs7T0ExTnJCOEU7T0F5SUFnQjtPQUdBN0k7T0FsQkFtSTtPQWtDQVc7T0FJQUU7T0FHQVQ7T0FFQVc7T0F5QkFLO09BR0FDO09BQ0FDO09BRUFDO09BQ0FDO09BRUFDO09BYUFFO09BM0NBWDtPQUlBQztPQVFBQztPQUVBQztPQWhKQXZCO09BVUFHOzs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0NmSjs7Ozs7O0lBQUE7SUFDQTtJQTZCSTZCOztPQUNVO09BQ0E7T0FDUztPQUNGOzs7Ozs7Ozs7Ozs7OztZQWNqQkM7SUFDRjtLQUFJQyxVQW5CRkY7S0FvQkVHLFVBREFEO0tBRUFFLFFBQVEsZUFEUkQ7S0FFQUUsUUFBUSxlQUZSRjtLQUdBRyxZQUFZLGVBSFpIO0tBSUFJLFVBQVUsZUFKVko7SUFLRiw2QkF6QkFILFdBcUJFSSxVQUZBRjtJQW5CRkYsU0FxQkVJO0lBTUYsNkJBM0JBSixXQXNCRUssVUFIQUg7SUFuQkZGLFNBc0JFSztJQU9GLDZCQTdCQUwsV0F1QkVNLGNBSkFKO0lBbkJGRixTQXVCRU07SUFRRiw2QkEvQkFOLFdBd0JFTyxZQUxBTDtJQW5CRkYsU0F3QkVPO0lBeEJGUCxTQW9CRUc7O0dBYXNCO1lBRXhCSztJQUNGLDRCQXBDRVIsV0FBQUE7SUFBQUE7O0dBcUNxQjtHQUVHLElBQXhCUyw0Q0FBZ0QsU0FBSztZQUVyREMsUUFBUUMsUUFBT0MsT0FBTUMsT0FBTW5DO0lBQzdCO0tBdUJJb0MsV0FqRUZkO0tBa0VFZSxVQWxFRmY7S0FtRUVnQixpQkFuRUZoQjtLQW9FRWlCLGFBcEVGakI7S0FxRUVrQixpQkFyRUZsQjtLQXNFRW1CLFlBdEVGbkI7S0F1RUVvQixlQXZFRnBCO0lBQUFBLFNBQUFBO0lBQUFBLFNBeUNlWTtJQXpDZlosVUF5QzJCdEI7SUFrQzdCO1NBakNhMkMsU0FBSUM7S0FDZjthQUFNLDBCQUZFWCxRQXpDUlgsS0EwQ1dxQixLQUFJQzs7U0FHSyxJQUhMQyxRQUdLLFdBSkNWLE9BQU1uQztTQXpDM0JzQixTQXlDMkJ0QjtTQXpDM0JzQixVQXlDMkJ0QjthQUNoQjJDLFNBQUlDLE1BQUFDOzs7U0FRWCxNQUFBOztTQWhDSnRCLG9CQXdCV29CLFNBQUlDOztTQXhCZnJCLG9CQXdCV29CLFNBQUlDOzs7VUFZb0I7aUJBdERuQ3RCO1dBc0RtQyxNQUFBLDRCQWIzQlcsMEJBekNSWDtXQXNEbUM7V0FacEJqYTtXQUFKeWI7Ozs7O2NBQUl6YixXQUFKeWI7O2FBQUFILE1BQUFHLFFBQUlGLE1BQUF2Yjs7O1NBcUJYLFdBdEJJNGEsbUNBQ0dVLFNBQUlDOzs7VUFtQ1pHO0tBQ0gsSUFER0MsMEJBQUFELFFBQ0NFLFlBOUVKM0I7S0FBQUEsVUFpRUVjO0tBakVGZCxVQWtFRWU7S0FsRUZmLFNBbUVFZ0I7S0FuRUZoQixVQW9FRWlCO0tBcEVGakIsU0FxRUVrQjtLQXJFRmxCLFNBc0VFbUI7S0F0RUZuQixVQXVFRW9CO1FBTUNNLHVCQVVNcG1CLElBVk5vbUIsUUFXQyxPQURLcG1CO0tBaERUbWxCO2VBb0RXbUI7T0FDSCxLQUFHLDBCQURBQTtRQUdFLHdCQXJETGpCLFdBa0RHaUIsU0FBQUEsU0FiUEQ7T0FlOEIsVUFBQSxxQkFGdkJDO09BRUUsd0JBcERMakIsNkJBcUNKZ0I7TUFnQndEO0tBQ3hELE1BQUEsNEJBbEJERDs7R0FrQlU7WUFFYkcsU0FBUzdCLEtBQUlqa0I7SUFDZixVQURXaWtCLFVBQUlqa0I7SUFDTCx3QkFEQ2lrQjtHQUN3QjtZQUVqQzhCO0lBQ0YsSUFBYWhQLE1BckdYa04sU0FxR1cvaEIsSUFBQTZVO0lBQ1g7YUFEVzdVO2dCQXJHWCtoQjtNQXNHZSx3QkF0R2ZBOztLQXdHVzthQXhHWEEsVUFxR1cvaEI7TUFHTDhqQixzQkF4R04vQjthQUFBQSxVQXFHVy9oQjtNQUlMK2pCLHNCQXpHTmhDO0tBMEdLLEdBQUEsc0JBRkMrQixJQUNBQyxLQUNhLE9BRmJEO0tBRXFCLElBTGhCN2pCLE1BQUFELFdBQUFBLElBQUFDOztHQVFJO1lBRWYrakI7SUFBb0IsVUEvR3BCakM7SUErR29CLHdCQS9HcEJBO0dBK0dnRDtZQUNoRGtDLGNBQWNubUI7SUFBSSxVQWhIbEJpa0IsV0FBQUEsVUFnSGNqa0I7SUFBSSx3QkFoSGxCaWtCO0dBZ0hxRTtZQUNyRW1DLFlBQVlwbUI7SUFBSSxVQWpIaEJpa0IsV0FBQUEsVUFpSFlqa0I7SUFBSSx3QkFqSGhCaWtCO0dBaUhpRTtZQUVqRW9DLG9CQUFrQixPQWZsQk4sdUJBZWdEO1lBQ2hETyxrQkFBZ0IsT0FMaEJKLHFCQUs0QztZQUM1Q0ssVUFBVXZtQixHQUFJLE9BTGRtbUIsY0FLVW5tQixNQUE4QjtZQUN4Q3dtQixRQUFReG1CLEdBQUksT0FMWm9tQixZQUtRcG1CLE1BQTRCO1lBRXBDeW1CLHFCQUFxQlo7SUFDdkIsT0FBQSxXQWxGRW5CLDBCQWlGcUJtQjtHQUNlO1lBRXBDYSxtQkFBMkIsU0FBRTs7OztPQVI3Qkw7T0FDQUM7T0FDQUM7T0FDQUM7T0FsQkFUO09BV0FHO09BQ0FDO09BQ0FDO09BOUVBM0I7Ozs7T0FNQUU7T0F3REFtQjtPQXVCQVc7T0FHQUM7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQ3BJSUM7U0FBUyxZQUNBO2FBQ0h4RjtTQUFNLE9BQU5BO1FBQU87aUJBT2JqRixPQUFPamEsR0FBRTFDLEdBQUVFO1NBQ2IsR0FEU3dDLE9BQ2dDa2YsSUFEaENsZixNQUNMMmtCLEtBQXFDekYsWUFBckN5RjtTQUNKLEdBRmFubkIsT0FFNEJvbkIsTUFGNUJwbkIsTUFFVHFuQixLQUFxQ0QsY0FBckNDO21CQUFBQSxNQURBRixLQUFBQSxhQUNBRTtTQUNBLFdBSEs3a0IsR0FBRTFDLEdBQUVFO1FBR3lDO2lCQU9wRHNuQixJQUFJOWtCLEdBQUUxQyxHQUFFRTtTQUNWLEdBRE13QyxPQUNtQ2tmLElBRG5DbGYsTUFDRjJrQixLQUFxQ3pGLFlBQXJDeUY7U0FDSixHQUZVbm5CLE9BRStCb25CLE1BRi9CcG5CLE1BRU5xbkIsS0FBcUNELGNBQXJDQzthQUFBQSxjQURBRjtlQURFM2tCLEdBS08sT0FBQTtVQUVTLElBREMra0IsS0FOakIva0IsTUFNV2dsQixLQU5YaGxCLE1BTUtpbEIsS0FOTGpsQixNQU9nQixNQTFCcEIwa0IsT0F5QnFCSztvQkF6QnJCTCxPQXlCU08sS0FFVSxPQWxCbkJoTCxPQWdCU2dMLElBQU1ELElBaEJmL0ssT0FnQnFCOEssSUFOZnpuQixHQUFFRTtlQU1hdW5CLElBS0osT0FBQTtVQUV1QixJQURYRyxNQU5SSCxPQU1DSSxNQU5ESixPQU1OSyxNQU5NTCxPQU9tQixNQXZCeEM5SyxPQXNCNkJpTCxLQVp2QjVuQixHQUFFRTtVQWFnQyxPQXZCeEN5YyxPQUFBQSxPQWdCU2dMLElBQU1ELElBTUFJLE1BQU9EOzthQVhwQlIsZUFDQUU7b0JBQUFBLE1BREFGLEtBQUFBLGFBQ0FFO1VBMEJFLFdBNUJBN2tCLEdBQUUxQyxHQUFFRTs7Y0FBQUEsR0FpQkcsT0FBQTtTQUVTLElBREM2bkIsS0FsQmI3bkIsTUFrQk84bkIsS0FsQlA5bkIsTUFrQkMrbkIsS0FsQkQvbkIsTUFtQlksTUF0Q3BCa25CLE9BcUNTYTttQkFyQ1RiLE9BcUNxQlcsS0FFZixPQTlCTnBMLE9BQUFBLE9BVUlqYSxHQUFFMUMsR0FrQkdpb0IsS0FBTUQsSUFBTUQ7Y0FBWkUsSUFLUSxPQUFBO1NBRXFCLElBRFRDLE1BTnBCRCxPQU1hRSxNQU5iRixPQU1NRyxNQU5OSCxPQU82QixNQW5DdEN0TCxPQWtDNkJ1TCxLQU5kRixJQUFNRDtTQU9pQixPQW5DdENwTCxPQUFBQSxPQVVJamEsR0FBRTFDLEdBd0JTb29CLE1BQU9EO1FBSWdDO2lCQUlsREUsSUFBSXJuQixHQUVSNmM7UyxLQUFBQSxHQURhLGNBREw3YztTQUdFLElBRENkLElBQVgyZCxNQUFRN2QsSUFBUjZkLE1BQUtuYixJQUFMbWIsTUFDTXBhLElBQUksbUJBSEZ6QyxHQUVBaEI7U0FFTixTQURJeUQsR0FDVSxPQUZoQm9hO2lCQUNNcGEsR0FNTyxJQUFMc2tCLEtBVEpNLElBQUlybkIsR0FFR2QsV0FBQUEsTUFPSDZuQixLQVBSbEssSUFsQ0EySixJQWtDSzlrQixHQUFHMUMsR0FPQStuQjtTQUhLLElBQUxKLEtBTkpVLElBQUlybkIsR0FFSDBCO2dCQUFBQSxNQUlHaWxCLEtBSlI5SixJQWxDQTJKLElBc0NRRyxJQUpBM25CLEdBQUdFOztpQkFVWG9vQixVQUFVdG5CLEdBQUksY0FBSkEsU0FBb0M7aUJBUzFDdW5CLGdCQUFnQnZuQjtTLFlBQ1gsT0FWVHNuQixVQVNvQnRuQjthQUVSZCxjQUFIRixjQUFIMEM7U0FDTixPQXhEQThrQixJQXFESWUsZ0JBQWdCdm5CLEdBRWQwQixJQUFHMUMsR0FBR0U7O2lCQUdSc29CLGdCQUFnQnhuQjtTLFlBQ1gsT0FmVHNuQixVQWNvQnRuQjthQUVSZCxjQUFIRixjQUFIMEM7U0FDRSxPQTdEUjhrQixJQTRETTlrQixHQUFHMUMsR0FGTHdvQixnQkFBZ0J4bkIsR0FFUmQ7O2lCQU1SMkssS0FBS25JLEdBQUUxQyxHQUFFRTtTQUNmLEtBRFd3QyxHQUVLLE9BZlY2bEIsZ0JBYU92b0IsR0FBRUU7Y0FBQUEsR0FHQyxPQVhWc29CLGdCQVFPeG9CLEdBQUYwQzs7VUFJK0MrbEIsS0FKM0N2b0I7VUFJcUM2bkIsS0FKckM3bkI7VUFJK0I4bkIsS0FKL0I5bkI7VUFJeUIrbkIsS0FKekIvbkI7VUFJYXdvQixLQUpqQmhtQjtVQUlXK2tCLEtBSlgva0I7VUFJS2dsQixLQUpMaGxCO1VBSURpbEIsS0FKQ2psQjtpQkFJK0MrbEIsY0FBOUJDO21CQXRFMUJsQixJQXNFUUcsSUFBTUQsSUFKVjdjLEtBSWdCNGMsSUFKVHpuQixHQUFFRTtvQkFJYXdvQjs7O3FCQUE4QkQ7cUJBdEV4RGpCLElBa0VJM2MsS0FBS25JLEdBQUUxQyxHQUkyQmlvQixLQUFNRCxJQUFNRDtxQkFoRmxEcEwsT0E0RVNqYSxHQUFFMUMsR0FBRUU7UUFPQztpQkFJVnlvQjtTQUFVO1NBQUE7d0JBQ0wsTUFBQTtjQUVKam1CO2VBQUFBLE9BRFMxQyxnQkFBTSxPQUFOQTt3QkFDVDBDOztRQUFlO2lCQUVoQmttQjtTQUFjO1NBQUE7d0JBQ1Q7Y0FFSmxtQjtlQUFBQSxPQURTMUMsZ0JBQU0sV0FBTkE7d0JBQ1QwQzs7UUFBbUI7aUJBRXBCbW1CO1NBQVU7U0FBQTt3QkFDTCxNQUFBOytCQUNKN29CLGdCQUFlLE9BQWZBO2NBQ0FFLDBCQUFBQTs7UUFBZTtpQkFFaEI0b0I7U0FBYztTQUFBO3dCQUNUOytCQUNKOW9CLGdCQUFlLFdBQWZBO2NBQ0FFLDBCQUFBQTs7UUFBbUI7aUJBSXBCNm9CO1NBQWlCLFlBQ1osT0FBQTthQUVKcm1CO1lBQUFBO2NBQU14QyxjQUFIRjtVQUFTLE9BdEdqQnduQixJQW1HSXVCLGVBR0NybUIsSUFBRzFDLEdBQUdFOzthQURHOG9CO1NBQU0sT0FBTkE7UUFDNkI7aUJBZ0IzQ25mLE9BQU9zSixJQUFHRjtTQUNaLEtBRFNFLElBRU8sT0FGSkY7Y0FBQUEsSUFHSSxPQUhQRTtTQUl3QixVQXZCM0I0VixlQW1CTTlWO1NBSXFCLE9BeEQzQnBJLEtBb0RHc0ksSUF6Q0h3VixRQXlDTTFWO1FBSXdDO2lCQVE5Q0wsTUFBTTVSO1MsWUFFUjtTQUVRO1VBRENkO1VBQUhGO1VBQUgwQztVQUNDZSxJQUFJLG1CQUpBekMsR0FHRmhCO1NBRU4sU0FESXlELEdBQ1UsV0FGWGYsTUFBTXhDO2lCQUNMdUQ7VUFLbUI7V0FBQSxRQVRyQm1QLE1BQU01UixHQUdDZDtXQU1RNm5CO1dBQU5rQjtXQUFKeEI7VUFBNkIsV0F6RWxDNWMsS0FtRUNuSSxHQUFHMUMsR0FNQ3luQixLQUFJd0IsTUFBTWxCOztTQUZNO1VBQUEsVUFQckJuVixNQUFNNVIsR0FHTDBCO1VBSWN1bEI7VUFBTmlCO1VBQUp2QjtTQUE2QixXQUE3QkEsSUFBSXVCLFFBdkVUcmUsS0F1RWVvZCxJQUpYam9CLEdBQUdFOztZQVVYK0k7aUJBRUFrZ0IsZ0JBQVcscUJBQW1DO2lCQUUxQ2pZLElBQUlsUTs7O3dCQUNDO1VBRUM7V0FEQ2Q7V0FBSEY7V0FBSDBDO1dBQ0NlLElBQUksbUJBSEZ6QyxHQUVBaEI7dUJBQ0Z5RDs7Y0FES3VsQixXQUNMdmxCLElBREt2RCxJQUFOd0MsYUFBTXNtQjs7O2lCQUlQSSxPQUFPcG9CLEdBRVg2YztTLEtBQUFBLEdBRFM7U0FFQyxJQWhERDVLLEtBK0NUNEssTUFBUzdkLElBQVQ2ZCxNQS9DTTFLLEtBK0NOMEssTUFDTXBhLElBQUksbUJBSEN6QyxHQUVGaEI7U0FFUCxTQURJeUQ7ZUFoREEwUCxJQUVRLE9BRkxGO2VBQUFBLElBR0ssT0FIUkU7VUFJd0IsVUFiMUI0VixlQVNLOVY7VUFJcUIsT0FoSDlCdVUsSUE0R01yVSxJQS9CRndWLFFBK0JLMVY7O2lCQWdESHhQO1VBUVMsSUFBTHNrQixLQVhOcUIsT0FBT3BvQixHQTdDRmlTO2lCQUFBQSxPQXdEQzhVLEtBVFZsSyxJQTNKQTJKLElBNEdNclUsSUErQ0duVCxHQVNDK25COztTQUpLLElBQUxKLEtBUE55QixPQUFPcG9CLEdBN0NMbVM7Z0JBQUFBLE9Bb0RJd1UsS0FMVjlKLElBM0pBMkosSUFnS1VHLElBTEQzbkIsR0EvQ0FpVDs7aUJBNERMb1csTUFBTXZuQixJQUFHQztTQUNmLEtBRFlELElBRUssT0FGRkM7Y0FBQUEsSUFHRSxPQUhMRDs7VUFJOENvUixLQUozQ25SO1VBSXFDdW5CLEtBSnJDdm5CO1VBSStCeUssS0FKL0J6SztVQUl5QkUsS0FKekJGO1VBSWFxUixLQUpoQnRSO1VBSVVzTCxLQUpWdEw7VUFJSXVKLEtBSkp2SjtVQUlGRSxLQUpFRjtZQUk4Q29SLE1BQTlCRTttQkFBOEJGLElBRXJDLE9BOUlmbVYsSUE0SXdDN2IsSUFKbEMxSztVQU9jO1dBQUEsUUE3Q3BCOFEsTUEwQ1V2SCxJQUpEdEo7V0FPS3duQjtXQUFQOVo7V0FDaUIsTUFSeEI0WixNQUlnQmpjLElBR0ZtYztVQUNVLE9BOUd4QjFlLEtBc0dBd2UsTUFJSXJuQixJQUdHeU4sT0FIR3BFOztrQkFBWStILElBT1AsT0FuSmZpVixJQTRJVWhkLElBSkR0SjtTQVlXO1VBQUEsVUFsRHBCNlEsTUEwQ3dDcEcsSUFKbEMxSztVQVlRMG5CO1VBQVBoYTtVQUNpQixNQWJ4QjZaLE1BWWNHLE1BUmdDRjtTQVN0QixPQW5IeEJ6ZSxLQXNHQXdlLE1BWU83WixNQVIyQnZOLEtBQU11SztRQVVyQztpQkFFSGlkLE1BQU0zbkIsSUFBR0M7U0FDZixLQURZRCxJQUVJO2NBRkRDLElBR0M7U0FFTjtVQURZcUwsS0FKVnRMO1VBSUl1SixLQUpKdko7VUFJRkUsS0FKRUY7VUFLRixNQTNESjhRLE1BMERVdkgsSUFKRHRKO1VBTVJFOztVQUd1QixJQURicW5CLGFBQ2EsTUFUeEJHLE1BSWdCcmMsSUFJTGtjO1VBQ2EsT0EvSHhCemUsS0FzSEE0ZSxNQUlJem5CLElBRUhDLEtBRlNvSjs7U0FHYSxJQURYa2UsZUFDVyxNQVB2QkUsTUFJZ0JyYyxJQUVKbWM7U0FDVyxPQXpFM0IxZixPQWtFSTRmLE1BSUl6bkIsSUFFSEM7UUFHb0M7aUJBVXJDeW5CLFVBQVUxb0I7UyxZQUVaLDhCQUE0QixTQUFLO1NBRXpCO1VBRENkO1VBQUhGO1VBQUgwQztVQUNDZSxJQUFJLG1CQUpJekMsR0FHTmhCO1NBRU4sU0FESXlELEdBQ1U7aUJBRFZBO1VBT0ksWUFYTmltQixVQUFVMW9CLEdBR0hkO3NCQVNJO2NBQ0s2bkIsZUFBSk47VUFBVyxXQXRKdkI1YyxLQTRJQ25JLEdBQUcxQyxHQVVReW5CLEtBQUlNOztTQU5WLGNBUE4yQixVQUFVMW9CLEdBR1QwQjt1QkFLVTthQUNLdWxCLGlCQUFKTjtTQUFXLFdBQVhBLG9CQUFvQyxPQWxKaEQ5YyxLQWtKZ0JvZCxPQU5aam9CLEdBQUdFLEdBTXlEOztpQkFNaEV5cEIsU0FBUzduQixJQUFHQztTQUNsQixJQURld2UsT0FBQXplLElBR1lzZSxPQUhUcmU7U0FDbEI7YUFEZXdlLFFBR1lIO2VBSFpoVCxLQUFBbVQsU0FHQ2xWLEtBSERrVixTQUdMdmUsS0FIS3VlO2NBQUFBLFNBR1lILE1BQ047V0FDTixZQXBCVHNKLFVBa0JVcmUsSUFBVytVO3VCQUlWO1dBRFcsSUFBUGtKLGVBQUpybkIsZUFBVyxNQU50QjBuQixTQUdJM25CLElBR09DO1dBQVcsVUFBQTtXQUE4QixJQU54QzRkLE9BTUd5SixPQU5OL0ksT0FBQW5ULElBR1lnVCxPQUhUUDs7O1VBRVc7O1FBS1A7aUJBRWhCeEksS0FBS3ZWLElBQUdDO1NBQ2QsS0FEV0QsSUFFSztjQUZGQyxJQUdHLE9BSE5EO1NBS0Q7VUFEWXNMLEtBSlh0TDtVQUlLdUosS0FKTHZKO1VBSURFLEtBSkNGO1VBS0QsTUF0R0o4USxNQXFHVXZILElBSkZ0SjtVQU1QRTs7VUFHcUIsSUFEWHFuQixhQUNXLE1BVHRCalMsS0FJZ0JqSyxJQUlMa2M7VUFDVyxPQXRIMUJ6ZixPQTZHSXdOLEtBSUlyVixJQUVIQzs7U0FDc0IsSUFEWHNuQixlQUNXLE1BUHZCbFMsS0FJZ0JqSyxJQUVKbWM7U0FDVyxPQXhLdkIxZSxLQWlLQXdNLEtBSUlyVixJQUVIQyxLQUZTb0o7UUFLd0I7aUJBSWxDdWUsVUFBVS9vQixHQUFFc0w7U0FDbEIsSUFEZ0J1QixNQUFBN00sR0FBRWtlLE1BQUE1UztTQUNsQjtlQURnQnVCLEtBRUwsT0FGT3FSO1VBR2E7V0FBbEI3ZSxJQUhHd047V0FHTjFOLElBSE0wTjtXQUFBaEwsSUFBQWdMO1dBQUVtUixVQUdSN2UsR0FBR0UsR0FISzZlO1dBQUZyUixNQUFBaEw7V0FBRXFjLE1BQUFGOztRQUc0QjtpQkFhNUN0VCxRQUFRekosSUFBR0M7U0FDYjtVQVpxQjhuQixPQUxmRCxVQWdCTzduQjtVQVhLK25CLE9BTFpGLFVBZ0JJOW5CO1VBWFF3SyxLQUFBd2Q7VUFBR3ZkLEtBQUFzZDtTQUNuQjtlQURnQnZkLFdBQUdDO2VBQUFBLElBSVA7VUFFRjtXQURzQndkLE9BTGJ4ZDtXQUtTK2MsS0FMVC9jO1dBS0tDLEtBTExEO1dBS0x5ZCxPQUxFMWQ7V0FLTmMsS0FMTWQ7V0FLVmpCLEtBTFVpQjtXQU1WN0ksSUFBSSxtQkFESjRILElBQWtCbUI7VUFFdEIsU0FESS9JLEdBRUMsT0FGREE7VUFHK0I7V0FUbEJ3bUIsT0FMZkwsVUFVd0JOLElBQUlTO1dBTGhCRyxPQUxaTixVQVVNeGMsSUFBSTRjO1dBTEUxZCxLQUFBNGQ7V0FBRzNkLEtBQUEwZDs7UUFZNEI7aUJBRS9DaGYsTUFBTW5KLElBQUdDLElBQ1gsYUFKRXdKLFFBR016SixJQUFHQyxZQUNNO2lCQUVYb29CLE9BQU9yb0IsSUFBR0M7U0FDaEIsSUFEYXdlLE9BQUF6ZSxJQUFHc2UsT0FBQXJlO1NBQ2hCO2VBRGF3ZSxNQUdUO2VBSFlILE1BS1o7VUFFUTtXQURvQ2tKLEtBTmhDbEo7V0FNMEI1VCxLQU4xQjRUO1dBTW9CbmUsS0FOcEJtZTtXQUFIaFQsS0FBQW1UO1dBTUdsVixLQU5Ia1Y7V0FNSHZlLEtBTkd1ZTtXQU9MOWMsSUFBSSxtQkFESTRILElBQTBCbUI7VUFFdEMsU0FESS9JO1dBRUYsVUFUQTBtQixPQU1Jbm9CLElBQTBCQztXQUc5QixVQUFBO2VBVE9zZSxPQUFBblQsSUFBR2dULE9BTWdDa0o7O3VCQUN4QzdsQjtXQU1GLFVBYkEwbUIsY0FNVTllLElBTkgrQixRQU1tQ2tjO1dBTzFDLFVBQUE7ZUFiTy9JLE9BTUh2ZTs7O1dBS0osVUFYQW1vQixXQU1Jbm9CLElBQU1xSixXQUFvQnBKO1dBSzlCLFVBQUE7ZUFYT3NlLE9BQUFuVDs7O1FBYW9EO2lCQUUzRGpELEtBQUt0Szs7O3dCQUNBO2NBQ0VLLGdCQUFIRixnQkFBSDBDO1VBRkR5SCxLQUFLdEssR0FFSjZDO1VBQXNCLFdBRmxCN0MsR0FFREc7d0JBQUdFOzs7aUJBRVA0SyxLQUFLakwsR0FBRWdCLEdBQUU0RTtTQUNmLElBRGFpSSxNQUFBN00sR0FBRThFLFNBQUFGO1NBQ2Y7ZUFEYWlJLEtBRUYsT0FGSS9IO1VBR2E7V0FIZnpGLElBQUF3TjtXQUdIMU4sSUFIRzBOO1dBR05oTCxJQUhNZ0w7V0FBRTBDLFNBR2EsV0FIakJ2USxHQUdERyxHQUhKOEssS0FBS2pMLEdBR0o2QyxHQUhRaUQ7V0FBRitILE1BQUF4TjtXQUFFeUYsU0FBQXlLOztRQUdrQztpQkFFM0NTLFFBQVFDOzs7d0JBQ0g7VUFDUTtXQUFONVE7V0FBSEY7V0FBSDBDO1dBQVksTUFBQSxXQUZMb08sR0FFSjlRO1VBQVM7V0FBTyxVQUZwQjZRLFFBQVFDLEdBRVBwTztXQUFtQixzQkFBYnhDOzs7OztVQUFhOzs7aUJBRXBCNlEsT0FBT0Q7Ozt3QkFDRjtVQUNRO1dBQU41UTtXQUFIRjtXQUFIMEM7V0FBWSxNQUFBLFdBRk5vTyxHQUVIOVE7VUFBUzs7O1dBQU8sVUFGcEIrUSxPQUFPRCxHQUVOcE87V0FBbUIsd0JBQWJ4Qzs7O1VBQU07OztpQkFFYjBKLE9BQU9rSCxHQUVYK007UyxLQUFBQSxHQURTO1NBR0U7VUFGQzNkLElBQVoyZDtVQUFTN2QsSUFBVDZkO1VBQU1uYixJQUFObWI7VUFFTTVPLE1BSkZyRixPQUFPa0gsR0FFTHBPO1VBR0EwbkIsS0FBSyxXQUxBdFosR0FFRjlRO1VBSUhncEIsTUFORnBmLE9BQU9rSCxHQUVDNVE7U0FLVixLQUZJa3FCLElBSUMsT0F6TFB2Z0IsT0FvTE1vRixLQUVBK1o7WUFKQXRtQixNQUVBdU0sT0FGTS9PLE1BSU44b0IsS0FFcUIsT0FOM0JuTDtTQU1rQyxPQTVPOUJoVCxLQXdPRW9FLEtBRkdqUCxHQUlIZ3BCOztpQkFLRnhXLFVBQVUxQjtTLFlBQ0w7U0FHUTtVQUZONVE7VUFBSEY7VUFBSDBDO1VBRVksUUFKYjhQLFVBQVUxQixHQUVUcE87VUFFTTJuQjtVQUFKQztVQUNERixLQUFLLFdBTEd0WixHQUVOOVE7VUFJUyxVQU5id1MsVUFBVTFCLEdBRUg1UTtVQUlBcXFCO1VBQUpDO1NBQ0wsR0FGSUosSUFHZ0IsVUFuTXRCdmdCLE9BK0xXd2dCLElBRUFFLEtBRUosV0F2UEgxZixLQW1QR3lmLElBRkN0cUIsR0FJRHdxQjtTQUdlLFVBeFBsQjNmLEtBbVBPd2YsSUFGSHJxQixHQUlHdXFCO1NBR0osV0FwTVAxZ0IsT0ErTE95Z0IsSUFFQUU7O2lCQUtIQztTQUFXLFlBQ047U0FDc0IsSUFBdkJ2cUIsY0FBSHdDLGNBQTBCLE1BRjNCK25CLFNBRUl2cUI7aUJBRkp1cUIsU0FFQy9uQjtRQUFvQztpQkFFckNnb0I7YUFBYS9rQjs7d0JBQ1IsT0FEUUE7VUFFYTtXQUFuQnpGO1dBQUhGO1dBQUgwQztXQUF5QixhQUF0QjFDLEdBRkowcUIsYUFBYS9rQixRQUVOekY7V0FGTXlGO3FCQUVaakQ7OztpQkFFTGlvQixTQUFTOXBCLEdBQ1gsT0FMTTZwQixnQkFJSzdwQixHQUNNO2lCQU1YZ1IsS0FBSzdROzs7d0JBQ0EsTUFBQTtVQUVDO1dBRENkO1dBQUhGO1dBQUgwQztXQUNDZSxJQUFJLG1CQUhEekMsR0FFRGhCO1VBRU4sU0FESXlELEdBQ1UsT0FGUnpEO2NBQUdncEIsV0FDTHZsQixJQURLdkQsSUFBTndDLGFBQU1zbUI7OztpQkFjUDRCLFdBVGtCL3FCOzs7d0JBV3BCLE1BQUE7Y0FDU21wQixrQkFBSDZCLG1CQUFINWI7VUFDQSxHQUFBLFdBYmlCcFAsR0FZZGdyQjtlQVpXdmYsS0FZWHVmLGNBQUg1Yjs7d0JBVkgsT0FGaUIzRDtnQkFHUnBMLGNBQUg0cUIsaUJBQUhwb0I7WUFDQSxHQUFBLFdBSmlCN0MsR0FHZGlyQjtpQkFIV3hmLEtBR1h3ZixjQUFIcG9COzt5QkFBTXhDOzs7O3lCQVNBOG9COzs7aUJBZVArQixlQVRzQmxyQjs7O3dCQVd4QjtjQUNTbXBCLGtCQUFINkIsbUJBQUg1YjtVQUNBLEdBQUEsV0FicUJwUCxHQVlsQmdyQjtlQVpldmYsS0FZZnVmLGNBQUg1Yjs7d0JBVkgsV0FGcUIzRDtnQkFHWnBMLGNBQUg0cUIsaUJBQUhwb0I7WUFDQSxHQUFBLFdBSnFCN0MsR0FHbEJpckI7aUJBSGV4ZixLQUdmd2YsY0FBSHBvQjs7eUJBQU14Qzs7Ozt5QkFTQThvQjs7O2lCQWVQZ0MsVUFUaUJuckI7Ozt3QkFXbkIsTUFBQTtjQUNTbXBCLGtCQUFINkIsbUJBQUg1YjtVQUNBLEdBQUEsV0FiZ0JwUCxHQVliZ3JCO2VBWlV2ZixLQVlWdWYsY0FBRzdCOzt3QkFWVCxPQUZnQjFkO2dCQUdQcEwsY0FBSDRxQixpQkFBSHBvQjtZQUNBLEdBQUEsV0FKZ0I3QyxHQUdiaXJCO2lCQUhVeGYsS0FHVndmLGNBQUc1cUI7O3lCQUFOd0M7Ozs7eUJBU0F1TTs7O2lCQWVEZ2MsY0FUcUJwckI7Ozt3QkFXdkI7Y0FDU21wQixrQkFBSDZCLG1CQUFINWI7VUFDQSxHQUFBLFdBYm9CcFAsR0FZakJnckI7ZUFaY3ZmLEtBWWR1ZixjQUFHN0I7O3dCQVZULFdBRm9CMWQ7Z0JBR1hwTCxjQUFINHFCLGlCQUFIcG9CO1lBQ0EsR0FBQSxXQUpvQjdDLEdBR2pCaXJCO2lCQUhjeGYsS0FHZHdmLGNBQUc1cUI7O3lCQUFOd0M7Ozs7eUJBU0F1TTs7O2lCQU1ENkMsU0FBUzlROzs7d0JBQ0o7VUFFQztXQURDZDtXQUFIRjtXQUFIMEM7V0FDQ2UsSUFBSSxtQkFIR3pDLEdBRUxoQjtVQUVOLFNBREl5RCxHQUNVLFdBRlJ6RDtjQUFHZ3BCLFdBQ0x2bEIsSUFES3ZELElBQU53QyxhQUFNc21COzs7aUJBS1hrQyxTQUFTeG9CLEdBQUUxQyxHQUFFRTtTQUlmOzttQkFKV3dDO1dBSWtCLFVBOVV2Qm1tQixRQTBVS25tQjtXQUlNLFFBQUEsd0JBSkoxQzs7bUJBQUVFO1dBS2dCLFVBelZ6QnlvQixRQW9WU3pvQjtXQUtFLFFBQUEsbUJBTEpGOztVQU1SLE9BcldDNkssS0ErVktuSSxHQUFFMUMsR0FBRUU7O1NBT0YsT0FoUVBtcEIsTUF5UEszbUIsR0FqWUwybEIsSUFpWU9yb0IsR0FBRUU7UUFPTztpQkFFaEJzSixJQUFJM0osR0FFUmdlO1MsS0FBQUEsR0FEUztTQUdDO1VBRkMzZCxJQUFYMmQ7VUFBUTdkLElBQVI2ZDtVQUFLbmIsSUFBTG1iO1VBRUs1TyxNQUpEekYsSUFBSTNKLEdBRUg2QztVQUdBMkosTUFBSyxXQUxGeE0sR0FFQUc7VUFJSGdwQixNQU5EeGYsSUFBSTNKLEdBRUdLO1lBQU53QyxNQUVBdU0sT0FGR2pQLE1BR0hxTSxPQUhNbk0sTUFJTjhvQixLQUNrQyxPQUx2Q25MO1NBTU0sT0FqQk5xTixTQWFLamMsS0FDQTVDLEtBQ0EyYzs7aUJBVUR0ZixXQUFXN0osR0FFZmdlO1MsS0FBQUEsR0FEUztTQUdDO1VBRkMzZCxJQUFYMmQ7VUFBUTdkLElBQVI2ZDtVQUFLbmIsSUFBTG1iO1VBUlcxSyxLQU1QekosV0FBVzdKLEdBRVY2QztVQUdBMkosTUFBSyxXQUxLeE0sR0FFUEc7VUFSTWlULEtBTVZ2SixXQUFXN0osR0FFSks7U0FLVixHQUZJbU07Y0FHSzhlLE1BSEw5ZTthQUhBM0osTUFSTXlRLE1BUUhuVCxNQU1FbXJCLE9BTkNqckIsTUFSRytTLElBZThCLE9BUDVDNEs7VUFRVyxPQW5DWHFOLFNBbUJXL1gsSUFjRGdZLEtBZElsWTs7Y0FBSEUsSUFFRyxPQUZBRjtjQUFBQSxJQUdBLE9BSEhFO1NBSXdCLFVBclYvQjRWLGVBaVZVOVY7U0FJcUIsT0F2Qm5DaVksU0FtQlcvWCxJQXZXUHdWLFFBdVdVMVY7O2lCQTBDZDZLLFFBQVFwYjtTQUNWLEtBRFVBLFVBL1VSdUc7bUJBK1VRdkcsTUFHUDBvQixLQUhPMW9CO21CQUdBLE9BcmJSNGxCLFVBcWJDOEM7MkJBQ0k1WDttQkFBYyxPQWxjZjZVLElBa2NDN1UsSUF0Ykw4VSxVQXFiQzhDOzJCQUVRN1g7bUJBQWMsT0FuY25COFUsSUFtY0s5VSxJQW5jTDhVLElBa2NDN1UsSUF0Ykw4VSxVQXFiQzhDOzJCQUdZMVg7bUJBQWMsT0FwY3ZCMlUsSUFvY1MzVSxJQXBjVDJVLElBbWNLOVUsSUFuY0w4VSxJQWtjQzdVLElBdGJMOFUsVUFxYkM4Qzs7VUFLbUI7V0E3QkxuYyxNQTZCSyxvQ0FSWnZNO1dBcEJGNlM7c0JBQUk5VSxHQUFFaUM7Y0FDWixRQURVakM7c0JBQUFBOztrQkFFQSxjQUZFaUM7O3FCQUFBQTt1QkFHRDJvQixNQUhDM29CLE1BR1Awb0IsS0FITzFvQjttQkFHSSxrQkFBWDBvQixXQUFNQzs7OztxQkFIQzNvQjtpQ0FBQUE7O3dCQUlLNG9CLGtCQUFOOVgsaUJBQU4rWCxPQUpPN29CO29CQUtSLHNCQURDNm9CLGFBQU0vWCxXQUFNOFg7Ozs7O3FCQUpMNW9COzZCQUFBQTs7Ozs7c0JBTVc4b0I7c0JBQU5qWTtzQkFBTks7c0JBQU42WCxPQU5PL29CO3FCQU9SO3dDQURDK29CLGFBQU03WCxhQUFNTDs2QkFBTWlZOzs7OztjQUtQO2VBRFZFLEtBVklqckI7ZUFXTSxRQVhWOFUsSUFVQW1XLElBVk1ocEI7ZUFXQXVNO2VBQU5yRDtjQUNKLEtBRFVxRDtlQUVGLE1BQUE7Y0FFUztlQURSRyxNQUhDSDtlQUdSMGMsTUFIUTFjO2VBSU8sVUFmYnNHLEtBQUk5VSxJQVVKaXJCLGlCQUlLdGM7ZUFDSXdjO2VBQVAvZjtjQUNKLFdBcGVKOFEsT0ErZE0vUSxNQUdGK2YsS0FDSTlmLFFBQU8rZjthQUNhO1VBRTFCLE9BbEJJclcsSUFrQkMsMkJBbkJRdEcsTUFBQUE7O2FBNEJFNGM7U0FBYyxPQXJjM0J4RCxJQXFjYXdELElBcmNieEQsSUFvY1MzVSxJQXBjVDJVLElBbWNLOVUsSUFuY0w4VSxJQWtjQzdVLElBdGJMOFUsVUFxYkM4QztRQUtpRDtpQkFFbERVLFFBQVFucEIsR0FBRXdmO3NCQUNPdGhCLEdBQUVHLEdBQUssT0F6Y3BCcW5CLElBeWNlcm5CLEdBQUZILEdBQWM7U0FBakMsT0FBQSxnQ0FEWXNoQixHQUFGeGY7UUFDNEI7aUJBRXBDbVMsT0FBT25TLEdBQUksT0FIWG1wQixRQUdPbnBCLEdBNVZQc0csT0E0VjBCO2lCQUV0QjhpQixZQUFhdG9CO1NBQU8sS0FBUEEsR0FDVjtTQUN3QyxJQUFuQzVILE9BRks0SCxNQUVSb2EsSUFGUXBhLE1BRVh6QyxJQUZXeUMsTUFFOEIsTUEvUDNDbW1CLFVBK1BLL0wsR0FBR2hpQjtTQUFTLFdBQWZtRixpQixPQUZGK3FCO1FBRThEO2lCQUVsRXBnQixPQUFPbEk7U0FBaUIsVUFqUXBCbW1CLFVBaVFHbm1CO1NBQWlCLHFCLE9BSnBCc29CO1FBSXFDO2lCQUVyQ0MsVUFBVW5yQixHQUFFc0w7U0FDbEIsSUFEZ0J1QixNQUFBN00sR0FBRWtlLE1BQUE1UztTQUNsQjtlQURnQnVCLEtBRUwsT0FGT3FSO1VBR2E7V0FIZjdlLElBQUF3TjtXQUdOMU4sSUFITTBOO1dBR1RoTCxJQUhTZ0w7V0FBRW1SLFVBR1I3ZSxHQUFIMEMsR0FIV3FjO1dBQUZyUixNQUFBeE47V0FBRTZlLE1BQUFGOztRQUc0QjtpQkFFeENvTixnQkFBaUJ4b0I7U0FBTyxLQUFQQSxHQUNkO1NBQzRDLElBQXZDNUgsT0FGUzRILE1BRVpvYSxJQUZZcGEsTUFFZnpDLElBRmV5QyxNQUU4QixNQVAvQ3VvQixVQU9Lbk8sR0FBR2hpQjtTQUFTLFdBQWZtRixpQixPQUZGaXJCO1FBRWtFO2lCQUV0RUMsV0FBV3pvQjtTQUFxQixVQVQ1QnVvQixVQVNPdm9CO1NBQXFCLHFCLE9BSjVCd29CO1FBSTZDO2lCQUVqREUsWUFDVUMsS0FBSXZyQjtTQUFoQjs7OztlQUFnQjZNLE1BQUE3TSxHQUFFNEM7V0FBSTtpQkFBTmlLO1lBR0U7YUFIRnhOLElBQUF3TjthQUVBMU4sSUFGQTBOO2FBQUFoTCxJQUFBZ0w7YUFLTmpOLElBRlEsbUJBREZULEdBRkpvc0I7cUJBS0YzckI7b0JBQUFBO2FBQ2UsSUFOUHlULFVBRUZsVSxHQUZBRSxHQUFFdUQsSUFBRmlLLE1BQUFoTCxHQUFFZSxJQUFBeVE7O2lCQUFGeEcsTUFBQXhOOztxQkFBRXVEOzs7d0JBRUZ6RCxHQUZBRSxHQUFFdUQ7O1NBU0wscUIsT0EzQlBzb0I7UUEyQnNCOztnQkF6WDFCOWlCO2dCQUVBa2dCO2dCQUVJalk7Z0JBbkhBbVg7Z0JBWUpDO2dCQTZHSWM7Z0JBZUFDO2dCQWdCQUk7Z0JBa0NBRTtnQkFTQXRTO2dCQTZCSjlMO2dCQUdBTjtnQkFHSWtmO2dCQWVBaGdCO2dCQXFKQVg7Z0JBakpBc0I7Z0JBS0ErRjtnQkFJQUU7Z0JBSUFuSDtnQkFvSkFGO2dCQXpJQThJO2dCQVdBaVk7Z0JBUUpFO2dCQXZQSWhDO2dCQUtBQztnQkFLQUM7Z0JBS0FDO2dCQWZBSDtnQkFLQUM7Z0JBZ0RBaFc7Z0JBeU1BZjtnQkErRUFDO2dCQS9EQThZO2dCQWtCQUc7Z0JBa0JBQztnQkFrQkFDO2dCQTZFSm5OO2dCQWdDQXFPO2dCQWJBeGdCO2dCQVdBdWdCO2dCQXBCQUo7Z0JBR0FoWDs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJDamdCQXNTO1NBQVMsWUFDQTthQUNIeEY7U0FBTSxPQUFOQTtRQUFPO2lCQUViakYsT0FBT2phLEdBQUUxQixHQUFFaWYsR0FBRS9mO1NBQ2Y7VUFBSW1uQixLQUxGRCxPQUlPMWtCO1VBQ2E2a0IsS0FMcEJILE9BSWFsbkI7Z0JBQ09xbkIsTUFBbEJGLEtBQUFBLGFBQWtCRTtTQUNsQixXQUZLN2tCLEdBQUUxQixHQUFFaWYsR0FBRS9mO1FBRTRDO2lCQUV6RG9vQixVQUFVdG5CLEdBQUVpZixHQUFJLGNBQU5qZixHQUFFaWYsU0FBdUM7aUJBRW5EdUgsSUFBSTlrQixHQUFFMUIsR0FBRWlmLEdBQUUvZjtTQUNaLEdBRE13QyxPQUNtQ2tmLElBRG5DbGYsTUFDRjJrQixLQUFxQ3pGLFlBQXJDeUY7U0FDSixHQUZZbm5CLE9BRTZCb25CLE1BRjdCcG5CLE1BRVJxbkIsS0FBcUNELGNBQXJDQzthQUFBQSxjQURBRjtlQURFM2tCLEdBS08sT0FBQTtVQUVTLElBRE8ra0IsS0FOdkIva0IsTUFNaUIycEIsS0FOakIzcEIsTUFNV2dsQixLQU5YaGxCLE1BTUtpbEIsS0FOTGpsQixNQU9nQixNQWpCcEIwa0IsT0FnQjJCSztvQkFoQjNCTCxPQWdCU087V0FFYSxPQWR0QmhMLE9BWVNnTCxJQUFNRCxJQUFNMkUsSUFackIxUCxPQVkyQjhLLElBTnJCem1CLEdBQUVpZixHQUFFL2Y7ZUFNaUJ1bkIsSUFLVixPQUFBO1VBRThCO1dBRFhHLE1BTlRIO1dBTUU2RSxNQU5GN0U7V0FNTEksTUFOS0o7V0FNWkssTUFOWUw7V0FPb0IsTUFuQi9DOUssT0FrQm9DaUwsS0FaOUI1bUIsR0FBRWlmLEdBQUUvZjtVQWFxQyxPQW5CL0N5YyxPQUFBQSxPQVlTZ0wsSUFBTUQsSUFBTTJFLElBTU52RSxNQUFPRCxLQUFPeUU7O2FBWDNCakYsZUFDQUU7b0JBQUFBLE1BREFGLEtBQUFBLGFBQ0FFO1VBMEJFLFdBNUJBN2tCLEdBQUUxQixHQUFFaWYsR0FBRS9mOztjQUFBQSxHQWlCQyxPQUFBO1NBRVMsSUFETzZuQixLQWxCakI3bkIsTUFrQldxc0IsS0FsQlhyc0IsTUFrQks4bkIsS0FsQkw5bkIsTUFrQkQrbkIsS0FsQkMvbkIsTUFtQlUsTUE3QnBCa25CLE9BNEJTYTttQkE1QlRiLE9BNEIyQlcsS0FFckIsT0ExQk5wTCxPQUFBQSxPQU1JamEsR0FBRTFCLEdBQUVpZixHQWtCQ2dJLEtBQU1ELElBQU11RSxJQUFNeEU7Y0FBbEJFLElBS1EsT0FBQTtTQUUyQjtVQURSQyxNQU4zQkQ7VUFNb0J1RSxNQU5wQnZFO1VBTWFFLE1BTmJGO1VBTU1HLE1BTk5IO1VBT21DLE1BL0I1Q3RMLE9BOEJvQ3VMLEtBTnJCRixJQUFNdUUsSUFBTXhFO1NBT2lCLE9BL0I1Q3BMLE9BQUFBLE9BTUlqYSxHQUFFMUIsR0FBRWlmLEdBd0JPbUksTUFBT0QsS0FBT3FFO1FBSThCO1lBRTNEdmpCO2lCQUVBa2dCLGdCQUFXLHFCQUFtQztpQkFFMUNkLElBQUlybkIsR0FBRXlyQixNQUdWdEs7UyxLQUFBQSxHQURNLGNBRkVuaEIsR0FBRXlyQjtTQUlBO1VBRFE3SyxJQUFsQk87VUFBZWppQixJQUFmaWlCO1VBQVlsQyxJQUFaa0M7VUFBU25pQixJQUFUbWlCO1VBQU16ZixJQUFOeWY7VUFDTTFlLElBQUksbUJBSkZ6QyxHQUdDaEI7U0FFUCxTQURJeUQsVUFETXdjLE1BSEZ3TSxPQUdWdEssUUFBTXpmLEdBSEUxQixHQUFFeXJCLE1BR0t2c0IsR0FBRzBoQjtpQkFDWm5lO1VBT08sSUFBTHNrQixLQVhKTSxJQUFJcm5CLEdBQUV5ckIsTUFHS3ZzQjtpQkFBQUEsTUFRUDZuQixLQVJSNUYsSUFyQ0FxRixJQXFDTTlrQixHQUFHMUMsR0FBR2lnQixHQVFKOEg7O1NBSEssSUFBTEosS0FSSlUsSUFBSXJuQixHQUFFeXJCLE1BR0ovcEI7Z0JBQUFBLE1BS0VpbEIsS0FMUnhGLElBckNBcUYsSUEwQ1FHLElBTEMzbkIsR0FBR2lnQixHQUFHL2Y7O2lCQVdYMlIsS0FBSzdROzs7d0JBRVAsTUFBQTtVQUVRO1dBREtkO1dBQUgrZjtXQUFIamdCO1dBQUgwQztXQUNBZSxJQUFJLG1CQUpEekMsR0FHQWhCO1VBRVAsU0FESXlELEdBQ1UsT0FGSndjO2NBQUcrSSxXQUNUdmxCLElBRFN2RCxJQUFUd0MsYUFBU3NtQjs7O2lCQWNYNEIsV0FUcUIvcUI7Ozt3QkFXdkIsTUFBQTs7V0FDYW1wQjtXQUFIMEQ7V0FBSDdCO1dBQUg1YjtVQUNELEdBQUEsV0Fib0JwUCxHQVloQmdyQjtlQVpVdmYsS0FZVnVmLE1BWmE4QixLQVlWRCxjQUFOemQ7O3dCQVZKLFdBRmlCM0QsSUFBR3FoQjtnQkFHUHpzQixjQUFIMHNCLGlCQUFIOUIsaUJBQUhwb0I7WUFDRCxHQUFBLFdBSm9CN0MsR0FHaEJpckI7aUJBSFV4ZixLQUdWd2YsTUFIYTZCLEtBR1ZDLGNBQU5scUI7O3lCQUFTeEM7Ozs7eUJBU0E4b0I7OztpQkFlWCtCLGVBVHlCbHJCOzs7d0JBVzNCOztXQUNhbXBCO1dBQUgwRDtXQUFIN0I7V0FBSDViO1VBQ0QsR0FBQSxXQWJ3QnBQLEdBWXBCZ3JCO2VBWmN2ZixLQVlkdWYsTUFaaUI4QixLQVlkRCxjQUFOemQ7O3dCQVZKLGVBRnFCM0QsSUFBR3FoQjtnQkFHWHpzQixjQUFIMHNCLGlCQUFIOUIsaUJBQUhwb0I7WUFDRCxHQUFBLFdBSndCN0MsR0FHcEJpckI7aUJBSGN4ZixLQUdkd2YsTUFIaUI2QixLQUdkQyxjQUFObHFCOzt5QkFBU3hDOzs7O3lCQVNBOG9COzs7aUJBZVhnQyxVQVRvQm5yQjs7O3dCQVd0QixNQUFBOztXQUNhbXBCO1dBQUgwRDtXQUFIN0I7V0FBSDViO1VBQ0QsR0FBQSxXQWJtQnBQLEdBWWZnckI7ZUFaU3ZmLEtBWVR1ZixNQVpZOEIsS0FZVEQsY0FBRzFEOzt3QkFWYixXQUZnQjFkLElBQUdxaEI7Z0JBR056c0IsY0FBSDBzQixpQkFBSDlCLGlCQUFIcG9CO1lBQ0QsR0FBQSxXQUptQjdDLEdBR2ZpckI7aUJBSFN4ZixLQUdUd2YsTUFIWTZCLEtBR1RDLGNBQUcxc0I7O3lCQUFUd0M7Ozs7eUJBU0F1TTs7O2lCQWVGZ2MsY0FUd0JwckI7Ozt3QkFXMUI7O1dBQ2FtcEI7V0FBSDBEO1dBQUg3QjtXQUFINWI7VUFDRCxHQUFBLFdBYnVCcFAsR0FZbkJnckI7ZUFaYXZmLEtBWWJ1ZixNQVpnQjhCLEtBWWJELGNBQUcxRDs7d0JBVmIsZUFGb0IxZCxJQUFHcWhCO2dCQUdWenNCLGNBQUgwc0IsaUJBQUg5QixpQkFBSHBvQjtZQUNELEdBQUEsV0FKdUI3QyxHQUduQmlyQjtpQkFIYXhmLEtBR2J3ZixNQUhnQjZCLEtBR2JDLGNBQUcxc0I7O3lCQUFUd0M7Ozs7eUJBU0F1TTs7O2lCQU1GNkMsU0FBUzlROzs7d0JBRVg7VUFFUTtXQURLZDtXQUFIK2Y7V0FBSGpnQjtXQUFIMEM7V0FDQWUsSUFBSSxtQkFKR3pDLEdBR0poQjtVQUVQLFNBREl5RCxHQUNVLFdBRkp3YztjQUFHK0ksV0FDVHZsQixJQURTdkQsSUFBVHdDLGFBQVNzbUI7OztpQkFLWDlYLElBQUlsUTs7O3dCQUVOO1VBRVE7V0FERWQ7V0FBSEY7V0FBSDBDO1dBQ0FlLElBQUksbUJBSkZ6QyxHQUdDaEI7dUJBQ0h5RDs7Y0FETXVsQixXQUNOdmxCLElBRE12RCxJQUFOd0MsYUFBTXNtQjs7O2lCQUlSNkQ7U0FBYztTQUFBO3dCQUNULE1BQUE7Y0FFSG5xQjtlQUFBQSxPQURZdWQsZ0JBQUhqZ0IsZ0JBQVMsV0FBVEEsR0FBR2lnQjt3QkFDWnZkOztRQUFtQjtpQkFFckJvcUI7U0FBa0I7U0FBQTt3QkFDYjtjQUVIcHFCO2VBQUFBLE9BRFl1ZCxnQkFBSGpnQixnQkFBUyxlQUFUQSxHQUFHaWdCO3dCQUNadmQ7O1FBQXNCO2lCQUV4QnFxQjtTQUFjO1NBQUE7d0JBQ1QsTUFBQTs7ZUFDQTlNLGdCQUFIamdCO1dBQWtCLFdBQWxCQSxHQUFHaWdCOztjQUNIL2YsMEJBQUFBOztRQUFtQjtpQkFFckI4c0I7U0FBa0I7U0FBQTt3QkFDYjs7ZUFDQS9NLGdCQUFIamdCO1dBQWtCLGVBQWxCQSxHQUFHaWdCOztjQUNIL2YsMEJBQUFBOztRQUF1QjtpQkFFekIrc0I7U0FBcUIsWUFDaEIsT0FBQTthQUVIdnFCO1lBQUFBO2NBQVN4QyxjQUFIK2YsY0FBSGpnQjtVQUFZLE9BdEtyQnduQixJQW1LSXlGLG1CQUdFdnFCLElBQUcxQyxHQUFHaWdCLEdBQUcvZjs7YUFEQThvQjtTQUFNLE9BQU5BO1FBQ3NDO3FCQUUvQzdWLElBQUdGO1NBQ1gsS0FEUUUsSUFFUSxPQUZMRjtjQUFBQSxJQUdLLE9BSFJFO1NBS1MsSUFBQSxRQTlCWDBaLFlBeUJLNVosS0FLQ2dOLGNBQUhqZjtTQUNNLE9BOUtid21CLElBd0tNclUsSUFLQ25TLEdBQUdpZixHQVZOZ04sbUJBS0toYTtRQU0yQjtpQkFFaENtVyxPQUFPcG9CLEdBR1htaEI7UyxLQUFBQSxHQURFO1NBRVE7VUFETWppQixJQUFoQmlpQjtVQUFhbEMsSUFBYmtDO1VBQVVuaUIsSUFBVm1pQjtVQUFPemYsSUFBUHlmO1VBQ00xZSxJQUFJLG1CQUpDekMsR0FHRGhCO1NBRVIsU0FESXlELEdBQ1UsV0FGVGYsR0FBU3hDO2lCQUNWdUQ7VUFLTyxJQUFMc2tCLEtBVEpxQixPQUFPcG9CLEdBR0tkO2lCQUFBQSxNQU1SNm5CLEtBTlI1RixJQW5MQXFGLElBbUxPOWtCLEdBQUcxQyxHQUFHaWdCLEdBTUw4SDs7U0FGSyxJQUFMSixLQVBKeUIsT0FBT3BvQixHQUdKMEI7Z0JBQUFBLE1BSUNpbEIsS0FKUnhGLElBbkxBcUYsSUF1TFFHLElBSkUzbkIsR0FBR2lnQixHQUFHL2Y7O2lCQVFaZ3RCLE9BQU9sc0IsR0FBRW5CLEdBTWJzaUI7UyxLQUFBQTtVQUpjLGNBQUEsV0FGRHRpQjt3QkFHRDtjQUNIc3RCO1VBQVksY0FKVm5zQixHQUlGbXNCOztTQUdDO1VBRFF2TCxJQUFsQk87VUFBZWppQixJQUFmaWlCO1VBQVlsQyxJQUFaa0M7VUFBU25pQixJQUFUbWlCO1VBQU16ZixJQUFOeWY7VUFDTTFlLElBQUksbUJBUEN6QyxHQU1GaEI7U0FFUCxTQURJeUQ7VUFFSSxZQUFBLFdBVEc1RCxPQU1Eb2dCO3NCQUlFLFdBSlJ2ZCxHQUFTeEM7Y0FLSnVzQjtpQkFMQ3hNLE1BS0R3TSxPQUxYdEssUUFBTXpmLEdBTksxQixHQVdBeXJCLE1BTEl2c0IsR0FBRzBoQjs7aUJBQ1puZTtVQVVPLElBQUxza0IsS0FqQkptRixPQUFPbHNCLEdBQUVuQixHQU1FSztpQkFBQUEsTUFXUDZuQixLQVhSNUYsSUFqTUFxRixJQWlNTTlrQixHQUFHMUMsR0FBR2lnQixHQVdKOEg7O1NBSEssSUFBTEosS0FkSnVGLE9BQU9sc0IsR0FBRW5CLEdBTVA2QztnQkFBQUEsTUFRRWlsQixLQVJSeEYsSUFqTUFxRixJQXlNUUcsSUFSQzNuQixHQUFHaWdCLEdBQUcvZjs7aUJBY1hpSyxLQUFLdEs7Ozt3QkFDQTtjQUNNSyxnQkFBSCtmLGdCQUFIamdCLGdCQUFIMEM7VUFGRnlILEtBQUt0SyxHQUVINkM7VUFDTSxXQUhIN0MsR0FFQUcsR0FBR2lnQjt3QkFBRy9mOzs7aUJBR1hzSixJQUFJM0o7UyxZQUVOO1NBRVM7VUFETytoQjtVQUFIMWhCO1VBQUgrZjtVQUFIamdCO1VBQUgwQztVQUNBdU0sTUFKRnpGLElBQUkzSixHQUdGNkM7VUFFQXlkLE1BQUssV0FMSHRnQixHQUdJb2dCO1VBR04rSSxNQU5GeGYsSUFBSTNKLEdBR09LO1NBSVQsV0FIQStPLEtBREdqUCxHQUVIbWdCLEtBQ0E2SSxLQUhZcEg7O2lCQU1kM1IsS0FBS3BRO1MsWUFFUDtTQUVTO1VBRE8raEI7VUFBSDFoQjtVQUFIK2Y7VUFBSGpnQjtVQUFIMEM7VUFDQXVNLE1BSkZnQixLQUFLcFEsR0FHSDZDO1VBRUF5ZCxNQUFLLFdBTEZ0Z0IsR0FHQUcsR0FBR2lnQjtVQUdOK0ksTUFORi9ZLEtBQUtwUSxHQUdNSztTQUlULFdBSEErTyxLQURHalAsR0FFSG1nQixLQUNBNkksS0FIWXBIOztpQkFNZDlXLEtBQUtqTCxHQUFFc2lCLEdBQUUxYztTQUNmLElBRGEybkIsTUFBQWpMLEdBQUV4YyxTQUFBRjtTQUNmO2VBRGEybkIsS0FFRixPQUZJem5CO1VBSUY7V0FKQXpGLElBQUFrdEI7V0FHQ25OLElBSERtTjtXQUdGcHRCLElBSEVvdEI7V0FHTDFxQixJQUhLMHFCO1dBQUVoZCxTQUlGLFdBSkZ2USxHQUdBRyxHQUFHaWdCLEdBSFJuVixLQUFLakwsR0FHSDZDLEdBSE9pRDtXQUFGeW5CLE1BQUFsdEI7V0FBRXlGLFNBQUF5Szs7UUFJcUI7aUJBRTlCUyxRQUFRQzs7O3dCQUNIO1VBQ1k7V0FBTjVRO1dBQUgrZjtXQUFIamdCO1dBQUgwQztXQUFlLE1BQUEsV0FGVG9PLEdBRUg5USxHQUFHaWdCO1VBQVM7V0FBUyxVQUYxQnBQLFFBQVFDLEdBRU5wTztXQUF3QixzQkFBZnhDOzs7OztVQUFlOzs7aUJBRTFCNlEsT0FBT0Q7Ozt3QkFDRjtVQUNZO1dBQU41UTtXQUFIK2Y7V0FBSGpnQjtXQUFIMEM7V0FBZSxNQUFBLFdBRlZvTyxHQUVGOVEsR0FBR2lnQjtVQUFTOzs7V0FBUyxVQUYxQmxQLE9BQU9ELEdBRUxwTztXQUF3Qix3QkFBZnhDOzs7VUFBTTs7O2lCQVVqQm10QixnQkFBZ0JDLEdBQUV0c0I7UyxZQUNiLE9BL1BUc25CLFVBOFBvQmdGLEdBQUV0c0I7YUFFUGQsY0FBSCtmLGNBQUhqZ0IsY0FBSDBDO1NBQ04sT0EvUEE4a0IsSUE0UEk2RixnQkFBZ0JDLEdBQUV0c0IsR0FFaEIwQixJQUFHMUMsR0FBR2lnQixHQUFHL2Y7O2lCQUdYcXRCLGdCQUFnQkQsR0FBRXRzQjtTLFlBQ2IsT0FwUVRzbkIsVUFtUW9CZ0YsR0FBRXRzQjthQUVQZCxjQUFIK2YsY0FBSGpnQixjQUFIMEM7U0FDSSxPQXBRVjhrQixJQW1RTTlrQixHQUFHMUMsR0FBR2lnQixHQUZSc04sZ0JBQWdCRCxHQUFFdHNCLEdBRVBkOztpQkFNWDJLLEtBQUtuSSxHQUFFMUMsR0FBRWlnQixHQUFFL2Y7U0FDakIsS0FEV3dDLEdBRUssT0FmVjJxQixnQkFhT3J0QixHQUFFaWdCLEdBQUUvZjtjQUFBQSxHQUdELE9BWFZxdEIsZ0JBUU92dEIsR0FBRWlnQixHQUFKdmQ7O1VBS3VCK2xCLEtBTGpCdm9CO1VBS1c2bkIsS0FMWDduQjtVQUtLcXNCLEtBTExyc0I7VUFLRDhuQixLQUxDOW5CO1VBS1ArbkIsS0FMTy9uQjtVQUlpQndvQixLQUp2QmhtQjtVQUlpQitrQixLQUpqQi9rQjtVQUlXMnBCLEtBSlgzcEI7VUFJS2dsQixLQUpMaGxCO1VBSURpbEIsS0FKQ2psQjtpQkFLdUIrbEIsY0FEQUM7bUJBN1FoQ2xCLElBNlFRRyxJQUFNRCxJQUFNMkUsSUFKaEJ4aEIsS0FJc0I0YyxJQUpmem5CLEdBQUVpZ0IsR0FBRS9mO29CQUlpQndvQjs7O3FCQUNBRDtxQkE5UWhDakIsSUF5UUkzYyxLQUFLbkksR0FBRTFDLEdBQUVpZ0IsR0FLTGdJLEtBQU1ELElBQU11RSxJQUFNeEU7cUJBcFIxQnBMLE9BK1FTamEsR0FBRTFDLEdBQUVpZ0IsR0FBRS9mO1FBUUM7aUJBTWhCMkosT0FBT3NKLElBQUdGO1NBQ1osS0FEU0UsSUFFTyxPQUZKRjtjQUFBQSxJQUdJLE9BSFBFO1NBS1EsSUFBQSxRQTdJWDBaLFlBd0lNNVosS0FLQWdOLGNBQUhqZjtTQUNPLE9BcEJWNkosS0FjR3NJLElBS0FuUyxHQUFHaWYsR0F6SE5nTixtQkFvSE1oYTtRQU0yQjtpQkFFckN1YSxlQUFlcmEsSUFBR25ULEdBQUVpZ0IsR0FBRWhOO1NBQ3hCLEtBRHNCZ04sR0FHWixPQVhScFcsT0FRZXNKLElBQU9GO2FBRWpCa04sTUFGZUY7U0FFVixPQXhCTnBWLEtBc0JXc0ksSUFBR25ULEdBRWJtZ0IsS0FGaUJsTjtRQUdGO2lCQUVoQkwsTUFBTTVSO1MsWUFFUjtTQUVRO1VBREtkO1VBQUgrZjtVQUFIamdCO1VBQUgwQztVQUNBZSxJQUFJLG1CQUpBekMsR0FHRGhCO1NBRVAsU0FESXlELEdBQ1UsV0FGVmYsT0FBTXVkLElBQUcvZjtpQkFDVHVEO1VBS21CO1dBQUEsUUFUckJtUCxNQUFNNVIsR0FHS2Q7V0FNSTZuQjtXQUFOa0I7V0FBSnhCO1VBQTZCLFdBcENsQzVjLEtBOEJFbkksR0FBRzFDLEdBQUdpZ0IsR0FNSHdILEtBQUl3QixNQUFNbEI7O1NBRk07VUFBQSxVQVByQm5WLE1BQU01UixHQUdKMEI7VUFJYXVsQjtVQUFOaUI7VUFBSnZCO1NBQTZCLFdBQTdCQSxJQUFJdUIsUUFsQ1RyZSxLQWtDZW9kLElBSlZqb0IsR0FBR2lnQixHQUFHL2Y7O2lCQVFYOFMsTUFBTW5ULEdBQUVpQyxJQUFHQztTQUNqQixHQURjRDtjQUdxQnNSLEtBSHJCdFIsT0FHZXNMLEtBSGZ0TCxPQUdTMnJCLEtBSFQzckIsT0FHR3VKLEtBSEh2SixPQUdIRSxLQUhHRjthQXpUWnNsQixPQXlUZXJsQixPQUdrQnFSO1dBQ1o7WUFBQSxRQWZqQlIsTUFjV3ZILElBSEF0SjtZQUlBdW5CO1lBQUpvRTtZQUFKenJCO1lBQ2lELE1BTHBEK1EsTUFBTW5ULEdBR2lCdU4sSUFDWmtjO1lBQ3FCLE1BQUEsV0FMMUJ6cEIsR0FHS3dMLFFBQU1vaUIsS0FDVkM7V0FDNkMsT0FyQnhERixlQWdCSXhhLE1BQU1uVCxHQUdEbUMsSUFDRkMsS0FEUW9KOzs7bUJBSEF0SixJQUVHO2NBRkhBO1VBVWIsTUFBQTtTQUhtQjtVQURTd25CLE9BTmZ4bkI7VUFNUzRyQixPQU5UNXJCO1VBTUd5SyxLQU5Ieks7VUFNSDBOLE9BTkcxTjtVQU9NLFVBbEJqQjZRLE1BaUJjcEcsSUFOTjFLO1VBT0cwbkI7VUFBSm9FO1VBQUpwZTtVQUNpRCxNQVJwRHdELE1BQU1uVCxHQU9LMnBCLE1BRGVEO1VBRU0sTUFBQSxXQVIxQjFwQixHQU1RMk0sSUFDUG9oQixVQURhRDtTQUVnQyxPQXhCeERILGVBZ0JJeGEsTUFBTW5ULEdBT0gyUCxNQURLQyxPQUFNakQ7UUFJSjtpQkFFVjZjLE1BQU14cEIsR0FBRWlDLElBQUdDO1NBQ2pCLEdBRGNEO2FBQUdDOztZQUlrQm1SLEtBSmxCblI7WUFJWXVuQixLQUpadm5CO1lBSU0yckIsS0FKTjNyQjtZQUlBeUssS0FKQXpLO1lBSU5FLEtBSk1GO1lBR2tCcVIsS0FIckJ0UjtZQUdlc0wsS0FIZnRMO1lBR1MyckIsS0FIVDNyQjtZQUdHdUosS0FISHZKO1lBR0hFLEtBSEdGO2NBSXFCb1IsTUFEQUU7WUFHVjthQUFBLFFBN0JuQlIsTUEwQld2SCxJQUhBdEo7YUFNRXduQjthQUFKb0U7YUFBSmxlO2FBQ0QvTSxJQVBKMm1CLE1BQU14cEIsR0FHRG1DLElBR0F5TjthQUNxQnZQLElBUDFCbXBCLE1BQU14cEIsR0FHaUJ1TixJQUdWbWM7WUFFYixLQUZTb0UsTUFHQyxPQTNEVjlpQixLQXlESW5JLEdBSk8ySSxJQUFNb2lCLElBSVN2dEI7Z0JBR25CMnRCLE9BSkVGO1lBSUksT0F0Q2pCSCxlQW1DUTlxQixHQUpPMkksSUFPc0IsV0FWM0J4TCxHQUdLd0wsSUFBTW9pQixJQU9WSSxPQUhtQjN0Qjs7V0FLUDtZQUFBLFVBbkNuQjBTLE1BMkJXcEcsSUFKSDFLO1lBWUswbkI7WUFBSm9FO1lBQUpwZTtZQUNEUCxNQWJKb2EsTUFBTXhwQixHQVlEMlAsTUFSQXZOO1lBU3FCK21CLE1BYjFCSyxNQUFNeHBCLEdBWU8ycEIsTUFSVUY7V0FVdkIsS0FGU3NFLE1BR0MsT0FqRVYvaUIsS0ErRElvRSxLQVRPekMsSUFBTWtoQixJQVNTMUU7ZUFHbkI4RSxPQUpFRjtXQUlJLE9BNUNqQkosZUF5Q1F2ZSxLQVRPekMsSUFZc0IsV0FoQjNCM00sR0FJSzJNLElBWUpzaEIsTUFaVUosS0FTUzFFOztjQVh0Qm5vQixJQUZJaUI7OztjQUVKakIsSUFGT2tCO1NBRVksT0FBbkJsQjtRQWMyQztpQkFFL0MrSSxPQUFPa0gsR0FFWHFSO1MsS0FBQUEsR0FEUztTQUdFO1VBRklqaUIsSUFBZmlpQjtVQUFZbEMsSUFBWmtDO1VBQVNuaUIsSUFBVG1pQjtVQUFNemYsSUFBTnlmO1VBRU1sVCxNQUpGckYsT0FBT2tILEdBRUxwTztVQUdBcXJCLE1BQU0sV0FMRGpkLEdBRUY5USxHQUFHaWdCO1VBSU4rSSxNQU5GcGYsT0FBT2tILEdBRUk1UTtTQUtiLEtBRkk2dEIsS0FHQyxPQTlEUGxrQixPQTBETW9GLEtBRUErWjtZQUpBdG1CLE1BRUF1TSxPQUZTL08sTUFJVDhvQixLQUMrQixPQUxyQzdHO1NBSzRDLE9BM0V4Q3RYLEtBd0VFb0UsS0FGR2pQLEdBQUdpZ0IsR0FJTitJOztpQkFJRnRmLFdBQVc3SjtTLFlBQ047U0FHRTtVQUZJSztVQUFIK2Y7VUFBSGpnQjtVQUFIMEM7VUFFQXVNLE1BSkZ2RixXQUFXN0osR0FFVDZDO1VBR0FzckIsTUFBTSxXQUxHbnVCLEdBRU5HLEdBQUdpZ0I7VUFJTitJLE1BTkZ0ZixXQUFXN0osR0FFQUs7U0FLYixLQUZJOHRCLEtBSVEsT0F6RWRua0IsT0FvRU1vRixLQUVBK1o7YUFFSzdJLE1BSEw2TjtTQUdXLE9BdEZibmpCLEtBa0ZFb0UsS0FGR2pQLEdBTUVtZ0IsS0FGTDZJOztpQkFNRnhXLFVBQVUxQjtTLFlBQ0w7U0FHUTtVQUZGNVE7VUFBSCtmO1VBQUhqZ0I7VUFBSDBDO1VBRVcsUUFKYjhQLFVBQVUxQixHQUVScE87VUFFSzJuQjtVQUFKQztVQUNEeUQsTUFBTSxXQUxFamQsR0FFTDlRLEdBQUdpZ0I7VUFJSyxVQU5iek4sVUFBVTFCLEdBRUM1UTtVQUlKcXFCO1VBQUpDO1NBQ0wsR0FGSXVEO1VBR2tCLFVBcEZ4QmxrQixPQWdGV3dnQixJQUVBRTtVQUVKLFdBbEdIMWYsS0E4Rkd5ZixJQUZFdHFCLEdBQUdpZ0IsR0FJTHVLOztTQUdlLFVBbkdsQjNmLEtBOEZPd2YsSUFGRnJxQixHQUFHaWdCLEdBSURzSztTQUdKLFdBckZQMWdCLE9BZ0ZPeWdCLElBRUFFOztpQkFPSFosVUFBVXpILEdBQUVoVztTQUNsQixJQURnQmloQixNQUFBakwsR0FBRXBELE1BQUE1UztTQUNsQjtlQURnQmloQixLQUVMLE9BRk9yTztVQUdpQjtXQUFsQjdlLElBSERrdEI7V0FHRm5OLElBSEVtTjtXQUdMcHRCLElBSEtvdEI7V0FBQTFxQixJQUFBMHFCO1dBQUV2TyxVQUdQN2UsR0FBR2lnQixHQUFHL2YsR0FIQzZlO1dBQUZxTyxNQUFBMXFCO1dBQUVxYyxNQUFBRjs7UUFHbUM7aUJBRW5EdFQsUUFBUUMsS0FBSXlpQixJQUFHQztTQUNqQjtVQUF1QnJFLE9BTmpCRCxVQUtXc0U7VUFDR3BFLE9BTmRGLFVBS1FxRTtVQUNNM2hCLEtBQUF3ZDtVQUFHdmQsS0FBQXNkO1NBQ25CO2VBRGdCdmQsV0FBR0M7ZUFBQUEsSUFJUDtVQUVGO1dBRDhCd2QsT0FMckJ4ZDtXQUtpQitjLEtBTGpCL2M7V0FLYW1oQixLQUxibmhCO1dBS1NDLEtBTFREO1dBS0R5ZCxPQUxGMWQ7V0FLRmMsS0FMRWQ7V0FLTm1oQixLQUxNbmhCO1dBS1ZqQixLQUxVaUI7V0FNVjdJLElBQUksbUJBREo0SCxJQUFzQm1CO1VBRTFCLFNBREkvSSxHQUNXLE9BRFhBO1VBRUksSUFBSnlRLE1BQUksV0FUSjFJLEtBTUlpaUIsSUFBc0JDO1VBSTlCLFNBREl4WixLQUNXLE9BRFhBO1VBRTBCO1dBVmIrVixPQU5qQkwsVUFXa0NOLElBQUlTO1dBTHhCRyxPQU5kTixVQVdZeGMsSUFBSTRjO1dBTEYxZCxLQUFBNGQ7V0FBRzNkLEtBQUEwZDs7UUFXNkI7aUJBRWxEaGYsTUFBTU8sS0FBSXlpQixJQUFHQztTQUNmO1VBQXFCckUsT0FwQmZELFVBbUJTc0U7VUFDR3BFLE9BcEJaRixVQW1CTXFFO1VBQ00zaEIsS0FBQXdkO1VBQUd2ZCxLQUFBc2Q7U0FDakI7ZUFEY3ZkLFdBQUdDO2VBQUFBLElBSUw7O1dBQzRCd2QsT0FMdkJ4ZDtXQUttQitjLEtBTG5CL2M7V0FLZW1oQixLQUxmbmhCO1dBS1dDLEtBTFhEO1dBS0N5ZCxPQUxKMWQ7V0FLQWMsS0FMQWQ7V0FLSm1oQixLQUxJbmhCO1dBS1JqQixLQUxRaUI7dUJBTVosbUJBRElqQixJQUFzQm1COztXQUNELFVBQUEsV0FQdkJoQixLQU1NaWlCLElBQXNCQztXQUNMO1lBQ0c7YUFQYnpELE9BcEJmTCxVQXlCa0NOLElBQUlTO2FBTDFCRyxPQXBCWk4sVUF5Qll4YyxJQUFJNGM7YUFMSjFkLEtBQUE0ZDthQUFHM2QsS0FBQTBkOzs7Ozs7O1VBTVU7O1FBRW1CO2lCQUU1Q1E7U0FBVyxZQUNOO1NBQ3VCLElBQXZCdnFCLGNBQUh3QyxjQUEwQixNQUY1QituQixTQUVLdnFCO2lCQUZMdXFCLFNBRUUvbkI7UUFBb0M7aUJBRXRDeXJCO2FBQWF4b0I7O3dCQUNSLE9BRFFBO1VBRWlCO1dBQW5CekY7V0FBSCtmO1dBQUhqZ0I7V0FBSDBDO1dBQTRCLGlCQUF6QjFDLEdBQUdpZ0IsSUFGUmtPLGFBQWF4b0IsUUFFRnpGO1dBRkV5RjtxQkFFWGpEOzs7aUJBRU4wckIsU0FBU3Z0QixHQUNYLE9BTE1zdEIsZ0JBSUt0dEIsR0FDTTtpQkFNZmlyQixRQUFRbnBCLEdBQUV3ZjtzQkFDT0E7VUFBTCxJQUFVbmlCLGNBQUZzdEI7VUFBUSxPQTVYeEJqRixJQTRYZ0JpRixHQUFFdHRCLEdBQUxtaUI7U0FBcUI7U0FBeEMsT0FBQSxnQ0FEWUEsR0FBRnhmO1FBQ2tDO2lCQUUxQ21TLE9BQU9uUyxHQUFJLE9BSFhtcEIsUUFHT25wQixHQWxZUHNHLE9Ba1kwQjtpQkFFdEI4aUIsWUFBYXRvQjtTQUFPLEtBQVBBLEdBQ1Y7U0FDNEM7VUFBdkM1SCxPQUZLNEg7VUFFUG9hLElBRk9wYTtVQUVUekQsSUFGU3lEO1VBRVg2cEIsSUFGVzdwQjtVQUVrQyxNQXBEL0NtbUIsVUFvRE0vTCxHQUFFaGlCO1NBQVMsZUFBZnl4QixHQUFFdHRCLGtCLE9BRkorckI7UUFFa0U7aUJBRXRFcGdCLE9BQU93VztTQUNJLFVBdkRQeUgsVUFzREd6SDtTQUNJLHFCLE9BTFA0SjtRQUt3QjtpQkFFeEJDLFVBQVVuckIsR0FBRXNMO1NBQ2xCLElBRGdCdUIsTUFBQTdNLEdBQUVrZSxNQUFBNVM7U0FDbEI7ZUFEZ0J1QixLQUVMLE9BRk9xUjtVQUdnQjtXQUhsQjdlLElBQUF3TjtXQUdIdVMsSUFIR3ZTO1dBR04xTixJQUhNME47V0FHVGhMLElBSFNnTDtXQUFFbVIsVUFHUjdlLEdBQUdpZ0IsR0FBTnZkLEdBSFdxYztXQUFGclIsTUFBQXhOO1dBQUU2ZSxNQUFBRjs7UUFHa0M7aUJBRTlDb04sZ0JBQWlCeG9CO1NBQU8sS0FBUEEsR0FDZDtTQUU2QjtVQUR4QjVILE9BRlM0SDtVQUVYb2EsSUFGV3BhO1VBRWJ6RCxJQUZheUQ7VUFFZjZwQixJQUZlN3BCO1VBR2UsTUFSaEN1b0IsVUFPTW5PLEdBQUVoaUI7U0FDVjtxQkFESXl4QixHQUFFdHRCOytCLE9BRkppc0I7UUFHbUQ7aUJBRXZEQyxXQUFXem9CO1NBQ0ksVUFYWHVvQixVQVVPdm9CO1NBQ0kscUIsT0FOWHdvQjtRQU00QjtpQkFFaENFLFlBQ1VDLEtBQUlqSztTQUFoQjs7OztlQUFnQmlMLE1BQUFqTCxHQUFFMWU7V0FBSTtpQkFBTjJwQjtZQUdFO2FBSEZsdEIsSUFBQWt0QjthQUVBbk4sSUFGQW1OO2FBRUhwdEIsSUFGR290QjthQUFBMXFCLElBQUEwcUI7YUFLTjNzQixJQUZRLG1CQURMVCxHQUZEb3NCO3FCQUtGM3JCO29CQUFBQTthQUNlLElBTlB5VCxVQUVMbFUsR0FBR2lnQixHQUZBL2YsR0FBRXVELElBQUYycEIsTUFBQTFxQixHQUFFZSxJQUFBeVE7O2lCQUFGa1osTUFBQWx0Qjs7cUJBQUV1RDs7O3dCQUVMekQsR0FBR2lnQixHQUZBL2YsR0FBRXVEOztTQVNMLHFCLE9BOUJQc29CO1FBOEJzQjs7Z0JBbGExQjlpQjtnQkFFQWtnQjtnQkF3R0lqWTtnQkF0R0FtWDtnQkF5SkE2RTtnQkE3TEo1RTtnQkFrTEljO2dCQStIQXBXO2dCQVlBcVc7Z0JBMERKOWQ7Z0JBY0FOO2dCQXBMSWQ7Z0JBdUJBVztnQkFNQStGO2dCQUlBRTtnQkE2RkFuSDtnQkFVQUY7Z0JBWUE4STtnQkEyQ0FpWTtnQkFRSjJEO2dCQXZRSXZCO2dCQUtBQztnQkFLQUM7Z0JBS0FDO2dCQWZBSDtnQkFLQUM7Z0JBZ0pBbGE7Z0JBcFBBZjtnQkFnRkFDO2dCQS9EQThZO2dCQWtCQUc7Z0JBa0JBQztnQkFrQkFDO2dCQTZGQXpoQjtnQkFTQXlHO2dCQXlNSnRFO2dCQWFBdWdCO2dCQUdBQztnQkF6QkFMO2dCQUdBaFg7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHQ3JlUjs7OztJQUFBO1lBRUk2SCxjQUFZLGlCQUFvQjtZQUVoQzBSLE1BQU14dEIsR0FBQUEsVUFBQUEsbUJBQXlCO1lBRS9Cd1UsS0FBS3hVLEdBQUksV0FBSkEsTUFBQUEsTUFBNkI7WUFFbEN5dEIsS0FBS3R0QixHQUFFSCxHQUFBQSxXQUFGRyxHQUFFSCxPQUFBQSxPQUFBQSx1QkFBdUM7WUFFOUMwdEIsSUFBSTF0QjtJQUNOLFlBRE1BO2dCQUdNLE1BQUE7UUFETm1DLGVBQUpDO0lBRklwQyxPQUVBbUM7SUFGQW5DLE9BQUFBO0lBRXFDLE9BQXpDb0M7R0FDcUI7WUFFckJ1ckIsUUFBUTN0QjtJQUNWLFlBRFVBO2dCQUdFO1FBRE5tQyxlQUFKQztJQUZRcEMsT0FFSm1DO0lBRkluQyxPQUFBQTtJQUVpQyxXQUF6Q29DO0dBQ2M7WUFFZHdyQixJQUFJNXRCO0lBQ04sWUFETUE7Z0JBR0ssTUFBQTtRQURUb0M7SUFBUyxPQUFUQTtHQUNvQjtZQUVwQnlyQixRQUFRN3RCO0lBQ1YsWUFEVUE7Z0JBR0M7UUFEVG9DO0lBQVMsV0FBVEE7R0FDYTtZQUVia21CLFNBQVN0b0IsR0FBSSxhQUFKQSxhQUFjO1lBRXZCbU8sT0FBT25PLEdBQUksT0FBSkEsS0FBUztZQUVoQnNKLEtBQUt0SyxHQUFFZ0IsR0FBSSxtQ0FBTmhCLEdBQUVnQixNQUFtQjtZQUUxQmlLLEtBQUtqTCxHQUFFbUssS0FBSW5KLEdBQUksbUNBQVZoQixHQUFFbUssS0FBSW5KLE1BQTRCO1lBSXZDOEssT0FBTzlLLEdBQUksbUNBQUpBLE1BQW1CO1lBRTFCaXJCLFFBQVF6SixHQUFFMWY7aUJBQWtCM0IsR0FBSyxPQWxDakNzdEIsS0FrQzRCdHRCLEdBQXBCcWhCLEdBQWlDO0lBQTNCLE9BQUEsZ0NBQUoxZjtHQUFrQztZQUU1Q21TLE9BQU9xRixHQUNELElBQUp0WixJQTNDRjhiLFdBd0NBbVAsUUFHRWpyQixHQURLc1osSUFFVCxPQURJdFosRUFFSDs7Ozs7T0E3Q0M4YjtPQU1BMlI7T0FFQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FyQkFMO09BRUFoWjtPQXdCQThUO09BRUFuYTtPQUVBN0U7T0FFQVc7T0FJQWE7T0FFQW1nQjtPQUVBaFg7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0dDN0NKOzs7SUFBQTtZQVlJNkgsY0FBWSxvQkFJZjtZQUVHMFIsTUFBTWhNLEdBQUFBLFVBQUFBLFVBQUFBLG1CQUdLO1lBRVhnRyxJQUFJcm5CLEdBQUVxaEI7SUFDUixJQUFJc00sV0FERTN0QixPQVVDNHRCLFFBVkN2TTtXQVVEdU07ZUFWQ3ZNLE9BQUFBLGNBVUR1TSxXQVRIRCxNQURJdE0sT0FDSnNNO2VBREl0TSxVQUFBQSxPQUNKc00sTUFESXRNLE9BQ0pzTTtHQVlZO1lBS2RFLEtBQUt4TTtJQUNQLFlBRE9BO2dCQUVFLE1BQUE7UUFDQXlNO0lBQWEsT0FBYkE7R0FBb0I7WUFFM0JDLFNBQVMxTTtJQUNYLFlBRFdBO2dCQUVGO1FBQ0F5TTtJQUFhLFdBQWJBO0dBQXlCO1lBS2hDRSxLQUFLM007SUFDUCxVQURPQTtjQUVFLE1BQUE7UUFDQXlNOztTQUdTMWxCO0tBTlhpWixPQUFBQTtLQUFBQSxPQU1Xalo7S0FHaEIsT0FOTzBsQjs7SUF2Q1BULE1Bb0NLaE07SUFJTCxPQURPeU07R0FNQTtZQUVQRyxTQUFTNU07SUFDWCxVQURXQTtjQUVGO1FBQ0F5TTs7U0FHUzFsQjtLQU5QaVosT0FBQUE7S0FBQUEsT0FNT2paO0tBR2hCLFdBTk8wbEI7O0lBbERQVCxNQStDU2hNO0lBS1QsV0FGT3lNO0dBTUs7WUFLWnpaLEtBWUVnTjtJQUFLLElBWGU2TSxTQVdwQjdNLE1BWFM4TSxZQVdUOU0sYUFYZStNLFVBQUtULE9BQUFPO0lBQ3RCO1VBRHNCUCxNQUFYUSxXQUFNQyxNQUVZLE9BRmxCRDtLQUlNLElBRFJMLFVBSGFILFNBR0p2bEIsT0FISXVsQixTQUloQlUsYUFER1A7S0FFUCxHQUxlTSxNQUFBQSxVQUlYQyxhQUpLRixXQUlMRTtTQUpXRCxPQUlYQyxRQUpnQlYsT0FHSnZsQjs7R0FRb0Q7WUFFdEUrZixTQUFTOUcsR0FDWCxhQURXQSxhQUNDO1lBRVZyVCxPQUFPcVQsR0FDVCxPQURTQSxLQUNEO1lBRU5sWSxLQVFFdEssR0FBRXdpQjtJQUFLLElBUEk2TSxTQU9UN00sTUFQU3NNLE9BQUFPO0lBQ2I7VUFEYVAsTUFFSjtTQUNBRyxVQUhJSCxTQUFBdmxCLE9BQUF1bEI7S0FJWCxXQUdBOXVCLEdBSk9pdkI7U0FISUgsT0FBQXZsQjs7R0FPVTtZQUV2QjBCLEtBUUVqTCxHQUFFdVEsUUFBS2lTO0lBQUssSUFQSTZNLFNBT1Q3TSxNQVBJNWMsT0FPVDJLLFFBUGN1ZSxPQUFBTztJQUNsQjtVQURrQlAsTUFFVCxPQUZJbHBCO0tBSUE7TUFESnFwQixVQUhTSDtNQUFBdmxCLE9BQUF1bEI7TUFBTGhwQixTQUlBLFdBR1g5RixHQVBXNEYsTUFHSnFwQjtNQUhJcnBCLE9BQUFFO01BQUtncEIsT0FBQXZsQjs7R0FPZTtZQUVqQ2ttQixTQUFTQyxJQUFHQztJQUNkLGNBRFdEOztRQVFGWCxRQVJLWTtXQVFMWjtlQVJLWTs7Z0JBQUFBLFFBQUhEO2NBUUZYLFdBUkVXO2NBQUdDLFFBQUhEO2NBckdUbEIsTUFxR1NrQjtlQUFHQyxRQUFIRCxPQUFHQyxRQUFIRCxPQUFHQyxRQUFIRCxPQXJHVGxCLE1BcUdTa0I7R0FZQztZQUlWNWpCLE9BQU8wVztJQUNULFNBQVF6TixJQUFJblI7S0FBTyxLQUFQQSxHQUNEO1NBQ1F6QyxJQUZQeUMsTUFFVTJGLE9BRlYzRjtLQUVxQixXQUFkekMsaUIsT0FGWDRULElBRWN4TDtJQUFpQztjQUg5Q2laO0lBQ1QscUIsT0FBUXpOO0dBSUc7WUFFVGtYLFFBQVF6SixHQUFFMWY7aUJBQWtCM0IsR0FBSyxPQXZIakNxbkIsSUF1SDRCcm5CLEdBQXBCcWhCLEdBQWlDO0lBQTNCLE9BQUEsZ0NBQUoxZjtHQUFrQztZQUU1Q21TLE9BQU9xRixHQUNELElBQUprSSxJQXJJRjFGLFdBa0lBbVAsUUFHRXpKLEdBREtsSSxJQUVULE9BRElrSSxFQUVIOzs7OztPQXZJQzFGO09BV0EwTDtPQUFBQTtPQStCQTJHO09BV0FDO09BWEFEO09BYkFIO09BS0FFO09BTEFGO09BdkJBUjtPQTZEQWhaO09BY0E4VDtPQUdBbmE7T0FHQTdFO09BVUFXO09BVUF3a0I7T0FnQkEzakI7T0FPQW1nQjtPQUVBaFg7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0dDN0lKOzs7SUFBQTs7WUFFSTJhO0lBQXNDLE1BQUE7R0FBZTtZQUtyREMsaUJBQWtCQztJQUNHLElBQW5CQyxVQURnQkQ7SUFBQUEsU0FMbEJGO0lBT0Y7S0FFZSxJQUFUemQsU0FBUyxXQUhYNGQ7S0FJRixzQkFMa0JELEtBSWQzZDtLQUNKLE9BRElBOztVQUdEK007U0FBQTVTLHdCQUFBNFM7S0FQZTRRLHlCQVFrQyxNQUFBLDRCQURqRHhqQixNQUN3RDtLQUMzRCxNQUFBLDRCQUZHQTs7R0FFSTtZQUlQMGpCLHFCQUFzQkY7SUFDRCxJQUFuQkMsVUFEb0JEO0lBQUFBLFNBbEJ0QkY7SUFxQlcsSUFBVHpkLFNBQVMsV0FGVDRkO0lBR0osc0JBSndCRCxLQUdwQjNkO0lBQ0osT0FESUE7R0FFRTtZQU9KOGQsTUFRRUM7SUFFSSxJQUFKbFMsSUFBSSxhQUZKa1M7V0FFQWxTO2NBRkFrUztjQUVBbFMsc0JBRkFrUyxNQWpDRkwsaUJBaUNFSztHQUtxQjtZQUd2QkMsVUFBV0Q7SUFFTCxJQUFKbFMsSUFBSSxhQUZLa1M7V0FFVGxTO2NBRlNrUztjQUVUbFMsc0JBRlNrUyxNQTVCWEYscUJBNEJXRTtHQUtnQjs7O3FCQTlDM0JMLGtCQWFBRyxzQkFZQUMsT0FnQkFFOzs7RTs7Ozs7Ozs7Rzs7Ozs7Ozs7OztJQ1RBQTtZQUVBQyxTQUFVcHdCO0lBQ0osSUFBSm1CLElBQUk7SUFBSkEsT0FEUW5CO0lBRVosT0FESW1CO0dBRWdCO1lBRWxCa3ZCLFNBQVVsd0I7SUFDSixJQUFKNmQsSUFBSSxhQURJN2Q7T0FDUjZkLHdCQUFBQSx1QkFBQUE7S0FJRCxPQUxTN2Q7SUFFMEQsT0FBQSwrQkFGMURBO0dBTVQ7WUFHRG13QixPQUFRenRCO0lBQWM7SUFBQSxPQUFBLGFBQWRBO0dBQWtEO1lBUzFEOEcsSUFBSTNKLEdBQUVtQjtJQUNSOzs7aUNBRFFBOzs7bUJBQUFBO2lFQUFBQSxLQUFBQTthQUNBLE9BQUEsV0FERm5COztHQUNZO1lBRWhCdXdCLFFBQVF2d0IsR0FBRW1CO0lBQ1osS0FiRW12QixPQVlVbnZCO0tBR0Y7OztrQ0FIRUE7OztvQkFBQUE7a0VBQUFBLEtBQUFBO2NBR0MsT0FBQSxXQUhIbkI7Ozt3QkFBRW1COzs7VUFBQUE7d0RBQUFBLEtBQUFBO0lBRU8sT0F2QmpCa3ZCLFNBdUJpQixXQUZUcndCO0dBR2E7Ozs7O09BTnJCMko7T0FUQTJtQjtPQVRBRDtPQXFCQUU7T0ExQkFIO09BRkFEO09BRUFDO09BS0FDO09BU0FDOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0M5Q0o7Ozs7Ozs7Ozs7OztJQUFBO0lBQ0E7Ozs7Ozs7Ozs7OztZQUVJRTtJQUFRLFlBQ0E7UUFDREE7SUFBVyxPQUFYQTtHQUFnQjtZQUN2QjVEO0lBQU8sWUFDQztRQUNEQTtJQUFVLE9BQVZBO0dBQWM7WUFFckI2RCxVQUFVbHVCO0lBQUFBLE9BQ0gsdUJBREdBLE1BQUFBLDhCQUFBQTtJQUFBQTs7R0FDa0Q7WUFHeERtdUIsU0FBaURGLE9BQU1wUTtJQUFLLElBQUxFLE1BQUFGO0lBQUs7ZUFBTEU7YUFBQUE7O1NBTzlDLElBREp1TixLQU5rRHZOLFFBTXREc04sS0FOc0R0TixRQU85QyxRQVBUb1EsU0FBaURGLE9BTWhENUM7MkNBTnNEdE4sTUFNbER1Tjs7VUFJRCxNQUFBO2FBRks4QyxnQkFBSDNzQjtTQUFXLFdBQVhBLE9BQUcyc0IsS0FGSjlDOzs7VUFxQko3dEIsSUEzQnNEc2dCOzZCQTJCdER0Z0I7VUEzQnNEeWdCOztlQTJCdER6Z0I7NkRBQUFBLEtBQUFBO1VBM0JzRHNnQixNQUFBRzs7O2FBZXZEbkcsSUFmdURnRyxjQWV2RGhHOzs7d0JBSHNCO2NBQ0hzVztVQUVuQnRXO1VBRGEsV0FETXNXLEtBYm9DdFE7O1NBZ0I5QyxjQUFBLFdBRFRoRyxNQWZpRGtXO3lCQWtCN0NLLGtCQUFLLFdBQUxBLEtBbEJtRHZRO1NBZXZEaEc7U0FFNkI7O2FBSTFCL1gsSUFyQm9EK2Q7WUFxQnBEL2QsUUFBQUEsTUF6QlBrdUIsVUF5Qk9sdUI7a0JBQUFBLE1BRWE7YUFDYmxDLDBCQUhBa0MsTUFBQUE7U0FBQUEsT0FBQUE7U0FLaUIsV0FGakJsQyxHQXhCb0RpZ0I7O0tBS25DLE9BTG1DQTs7R0EyQnBCO1lBR25Dd1EsVUFBNkM5dkI7SUFFcEQ7aUJBRm9EQTttQ0FHeEM7OztZQUNIZ0QsY0FBUyxXQUFUQTs7UUFFTyxJQUNWb2MsSUFyQ0NzUSxTQThCNkMxdkIsTUFBQUE7a0JBTzlDb2YsZ0JBQ1U7aUJBRFZBO1NBRUssTUFBQTtZQUZDd1EsTUFBTnhRO1FBUDhDcGYsT0FPOUNvZjtRQUFpQyxXQUEzQndROzs7U0FJSjV3Qjs0QkFBQUE7OztjQUFBQTs0REFBQUEsS0FBQUE7UUFYNENnQjs7O1lBYTdDc1osd0JBQUFBO3dCQURhdVcsa0JBQU0sT0FBTkE7UUFDQSxJQUFKMXZCLElBQUksV0FBYm1aLE1BYjZDdFo7UUFhN0NzWixXQUFTblo7UUFBd0MsT0FBeENBOztZQUNOb0I7V0FBQUEsUUFBQUEsTUFoRFBrdUIsVUFnRE9sdUI7cUJBQUFBO21CQWQwQ3ZCOzRDQWMxQ3VCLE1BQUFBOzs7R0FHbUM7WUFHMUN5c0I7SUFBTyxZQUNDO1FBQ0hodUI7SUFBSyxPQXRCTjh2QixVQXNCQzl2QjtHQUFnQjtZQUdqQit2QixVQUF5Qy92QjtJQUMvQztpQkFEK0NBOzs7O2FBRW5Db2YsY0FGbUNwZixPQUFBQSxjQUFBQSxPQUVuQ29mOzthQUNMOUY7WUFBQUEsTUFId0N0WixPQUFBQSxjQUd4Q3NaOzs7YUFDRy9YO1lBQUFBLFFBQUFBLE1BL0RSa3VCLFVBK0RRbHVCO3NCQUFBQTtvQkFKcUN2QjtvQkFBQUEsT0FBQUEsY0FJckN1QixPQUFBQTs7VUE3Qkp1dUIsVUF5QnlDOXZCLElBVWpDOztHQUNhO1lBR3pCZ3dCO0lBQU8sWUFDQztRQUNIcEU7SUFBUSxPQWhCVG1FLFVBZ0JDbkU7R0FBc0I7WUFFdkJxRSxVQUFVcndCLEdBQUVJO0lBQ2xCLFFBRGdCSixHQUNELGNBREdJO0lBR1YsWUE5Q0Y4dkIsVUEyQ1k5dkI7Z0JBT04sY0FQTUE7UUFJVGdEO0lBdEJIK3NCLFVBa0JZL3ZCO0lBTUs7S0FBQSxVQU5qQml3QixVQUFVcndCLFdBQUVJO0tBTUF5c0I7S0FBSHJOO0tBQUo4UTtJQUFvQyxlQUZ0Q2x0QixHQUVFa3RCLFNBRkZsdEIsR0FFTW9jLElBQUdxTjtHQUNPO1lBVXZCMEQsTUFBTXZ3QjtJLFlBQ0U7SUFQUztLQURKMGY7S0FDSSxRQVhiMlEsVUFpQkVyd0IsR0FQTzBmO0tBQ0hoYztLQUFIOGI7S0FBSjhRO0lBRFU1USxTQUFBQSxTQUNIaGM7SUFER2djLFNBQ05GO0lBR1QsT0FISzhROztZQVVIM25CLEtBQUt2STtJQUNELFlBN0NKZ3VCLEtBNENLaHVCO2dCQUdHLE1BQUE7UUFESGdEO0lBM0JMZ3RCLEtBeUJLaHdCO0lBRUssT0FBTGdEO0dBQ2dCO1lBR3JCb0YsTUFBTXBJO0lBQ1IsR0FuREVndUIsS0FrRE1odUIsSUFFSSxNQUFBO0lBQ0Y7R0FBRTtZQUdWc0osS0FBS3RLLEdBQUVveEI7SUFDVDtLQUNRLFlBMUROcEMsS0F3RE9vQztpQkFJRztTQURIcHRCO0tBeENQZ3RCLEtBcUNPSTtLQUdzQixXQUh4QnB4QixHQUdFZ0U7O0dBR0E7WUFLUHF0QixLQUFLcnhCLEdBQUksNkJBQUpBLE1BQXlEO1lBRTlEaWUsUUFBUXBiO0lBQ1Y7aUJBQTZDMUIsR0FBRTBCLEdBQUssV0FBUDFCLEdBQUUwQixHQUFpQjtJQUFoRSxrQkFBd0IsaUNBRGRBO0dBQ2lFO1lBR3pFNFMsVUFBVXpVO0lBQ0EsSUFBUnd2QjtJQUNDLE9BUkhhOztjQWVBLElBQUl6dEIsSUFSRjRzQjtxQkFRRTVzQixJQUNKLDhCQVZVNUM7eUJBQ1J3dkIsZ0JBVXFCLHdCQVhieHZCLEdBU040Qzs7YUFHSztHQUFDO1lBR1Z3VyxTQUFTcFo7SUFDQyxJQUFSd3ZCO0lBQ0MsT0F2QkhhOztjQXdCQSxJQUFJenRCLElBRkY0c0I7cUJBRUU1c0IsSUFDSixxQkFKUzVDO3lCQUNQd3ZCLGdCQUlxQix1QkFMZHh2QixHQUdMNEM7O2FBR0s7R0FBQztZQUdWMHRCLFdBQVd0c0I7SUFDYiwwQkFEYUEsSUFFeUI7R0FBcUM7WUFLekV1c0IsS0FBS3p1QixHQUFFOUI7SUFBMEMsVUFsS2pENHJCLEtBa0tPNXJCO0lBQUksc0JBbEtYNHJCLEtBa0tLOXBCO0dBQW9EO1lBQ3pEMHVCLE1BQU0xdUIsR0FBRTlCLEdBQUksc0JBQU44QixHQW5LTjhwQixLQW1LUTVyQixNQUE4QztZQUN0RHl3QixNQUFNM3VCLEdBQUksc0JBQUpBLFFBQThDO1lBRXBENHVCLEtBQUsxeEIsR0FBRWdCO0lBQ1Q7Ozs7OztnQkFBdUQsVUF2S3JENHJCLEtBc0tPNXJCO2dCQUMwQixXQXZLakM0ckIsS0F1SzZDLFdBRHhDNXNCOztHQUMwRDtZQUUvRDJ4QixNQUFNM3hCLEdBQUVnQjtJQUFJOzs7Ozs7Z0JBQWlELFVBeks3RDRyQixLQXlLUTVyQjtnQkFBdUMsV0FBUSxXQUFqRGhCOztHQUFpRTtZQUN2RTR4QixNQUFNNXhCO0lBQUk7Ozt1Q0FBbUMsV0FBUSxXQUEvQ0E7R0FBK0Q7T0FFckU2eEI7WUFDQUMsTUFBTTl4QjtJQUFJOzs7dUNBQXlDLE9BN0tuRDRzQixLQTZLbUQsV0FBN0M1c0I7R0FBc0Q7WUFJeEQreEIsS0FBZ0QveEIsR0FBRWdCO0lBQ3hEO0lBQ1UsVUF0TFJ3dkIsTUFvTHNEeHZCO0lBRXhEO0lBQ0E7SUFJRWd4QixVQVBvRGh5QixHQWpMcEQ0c0IsS0FpTHNENXJCO0lBS3hEO0lBQUEsT0FBQTtHQUNnQjtZQUNkZ3hCLFVBQXdEaHlCO0lBQXhELDhCQUVVLE9BQUE7OztXQUNBb2dCLGNBQUhwYztPQUNMO09BQ0EsV0FMc0RoRSxHQUdqRGdFO09BR0w7T0FORmd1QixVQUF3RGh5QixHQUc5Q29nQjtPQUlSLE9BQUE7O1dBRVF5TixlQUFKRDtPQUNKO09BVkZvRSxVQUF3RGh5QixHQVNsRDR0QjtPQUdKO09BWkZvRSxVQUF3RGh5QixHQVM5QzZ0QjtPQUlSLE9BQUE7O09BRVMsT0FBQTs7T0FDRCxPQUFBO2VBQ0csT0FBQTs7R0FBc0I7Ozs7OztPQTVFbkN3RDtPQUVBcFQ7T0FJQXhJO09BZUEyRTtPQVNBa1g7T0F6Q0FobkI7T0FaQWY7T0FNQUg7T0FsREE0bEI7T0FtQkFnQztPQWhGQVI7T0FxR0FXO09BZ0VBSTtPQUNBQztPQUNBQztPQUVBQztPQUdBQztPQUNBQztPQUVBQztPQUNBQztPQUlJQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ3JMSmpWLE9BQU9sYztJQUNWO0tBQUkwTyxXQURNMU8sSUFBQUE7S0FFTjRPLHVCQURBRix1QkFBQUE7S0FFQXRPLElBQUksa0JBREp3TztJQUVKLFdBREl4TyxNQURBd08sS0FDQXhPO0dBQ3NEO1lBRXZEaXhCLFNBQVMxdkIsR0FBSSxtQ0FBSkEsU0FBQUEsTUFBMEM7WUFDbkQ4WCxTQUFTOVgsR0FBSSxtQ0FBSkEsU0FBQUEsTUFBbUM7WUFFNUNtVCxJQUFJblQsR0FBRThCLEtBQUlDO0lBQ1osUUFEUUQsWUFBSUMsUUFBTi9CLE9BQU0rQixZQUFKRDtLQUdILE9BQUEsNEJBSEM5QixNQUFFOEIsS0FBSUM7SUFFUCxPQUFBO0dBQ2lDO1lBR3BDMlIsS0FBSzJMLEtBQUk5TCxRQUFPUyxLQUFJVixRQUFPdlI7SUFDN0I7V0FENkJBOztZQUFsQndSOztTQUFKOEwsU0FBc0J0ZCxZQUFsQndSO2dCQUFXRCxnQ0FBSlUsT0FBV2pTLFlBQVB1UjtLQUtwQixPQUFBLHdCQUxLK0wsUUFBSTlMLFFBQU9TLEtBQUlWLFFBQU92UjtJQUd4QixPQUFBO0dBRStDO1lBR2xEK0ssSUFBSTlNLEdBQUU4QjtJQUNSLFFBRFFBLE9BQUY5QixPQUFFOEIsa0NBQUY5QixNQUFFOEI7SUFFUCxPQUFBO0dBQ2lDO1lBR2hDOEssT0FBTzVNLEdBQUksT0FBSkEsS0FBYztZQUVyQmlzQixNQUFNanNCLEdBQUFBLG1CQUFtQjtZQUV6QjJ2QixNQUFNM3ZCO0lBQUFBO0lBQUFBLE9BQUFBO0lBQUFBLDRCQUFBQTs7R0FHeUI7WUFVL0I0dkIsT0FBTzV2QixHQUFFNnZCO0lBQ1gsSUFBSUMsVUFESzl2QixNQUVMK3ZCLFVBRksvdkIsTUFHTHVXLGNBREF3Wjs7UUFDQXhaLGVBRkF1WixVQURPRDtLQUdQdFosaUJBQUFBOzt3QkFBQUE7U0FGQXVaLFVBRE9EO01BR1B0Wjs7TUFLRztJQUVVLElBQWJ5WixhQUFhLGtCQVBielo7SUFVSiw2QkFiU3ZXLFNBVUxnd0IsZUFWS2h3QjtJQUFBQSxPQVVMZ3dCO0lBVktod0IsT0FHTHVXO1FBSEt2VyxPQUFFNnZCLFlBQUY3dkI7S0FnQlQsTUFBQTtRQWZJOHZCLFVBRE9ELGFBQUY3dkIsTUFrQlQ7SUFEQSxNQUFBO0dBQ0U7WUFvQ0Fpd0IsU0FBU2p3QixHQUFFcUI7SUFDYixJQUFJNFMsTUFET2pVO09BQUFBLFFBQ1BpVSxLQXZERjJiLE9Bc0RTNXZCOzBCQUFBQSxNQUNQaVUsS0FEUzVTO0lBQUZyQixPQUNQaVU7O0dBR2lCO1lBRWxCaWMsZ0JBQWdCbHdCLEdBQUVpSTtJQUFVLElBQzlCQyxNQUQ4Qiw2QkFBVkQ7SUFDYixPQUFQQztLQUFnQixNQUFBO0lBQ1QsVUFEUEEsS0FFRSxPQVREK25CLFNBTWlCandCLEdBQ2xCa0k7SUFHTyxXQUhQQTtTQUlNaW9CLFFBTFlud0I7UUFBQUEsUUFLWm13QixnQkFqRUxQLE9BNERpQjV2QjsyQkFBQUEsTUFLWm13QixhQUpOam9COzJCQURrQmxJLE1BS1ptd0IscUJBSk5qb0I7S0FEa0JsSSxPQUtabXdCOzs7SUFPQyxXQVhQam9CO0tBcUJPLGFBckJQQTtNQWlDSyxNQUFBO1NBWEMrTCxNQXZCWWpVO1FBQUFBLFFBdUJaaVUsY0FuRkwyYixPQTREaUI1dkI7MkJBQUFBLE1BdUJaaVUsV0F0Qk4vTDsyQkFEa0JsSSxNQXVCWmlVLG9CQXRCTi9MOzJCQURrQmxJLE1BdUJaaVUsb0JBdEJOL0w7MkJBRGtCbEksTUF1QlppVSxtQkF0Qk4vTDtLQURrQmxJLE9BdUJaaVU7OztRQVZBN1EsUUFiWXBEO09BQUFBLFFBYVpvRCxnQkF6RUx3c0IsT0E0RGlCNXZCOzBCQUFBQSxNQWFab0QsYUFaTjhFOzBCQURrQmxJLE1BYVpvRCxzQkFaTjhFOzBCQURrQmxJLE1BYVpvRCxxQkFaTjhFO0lBRGtCbEksT0FhWm9EOztHQXFCVztZQUVmZ3RCLG1CQUFtQnB3QixHQUFFaUk7SUFBVSxJQUNqQ0MsTUFEaUMsNkJBQVZEO0lBQ2hCLE9BQVBDO0tBQWdCLE1BQUE7SUFDVCxXQURQQTtLQU9PLGFBUFBBO01Ba0JLLE1BQUE7S0FWSDtNQUFJbW9CLE1BUk5ub0I7TUFTTW9vQixhQURBRDtNQUVBRSxhQUZBRjtNQUdBcGMsTUFaZWpVO1FBQUFBLFFBWWZpVSxjQTVHTDJiLE9BZ0dvQjV2QjsyQkFBQUEsTUFZZmlVLEtBRkFxYzsyQkFWZXR3QixNQVlmaVUsYUFGQXFjOzJCQVZldHdCLE1BWWZpVSxhQURBc2M7MkJBWGV2d0IsTUFZZmlVLGFBREFzYztLQVhldndCLE9BWWZpVTs7O1FBVEE3USxRQUhlcEQ7T0FBQUEsUUFHZm9ELGdCQW5HTHdzQixPQWdHb0I1dkI7MEJBQUFBLE1BR2ZvRCxPQUZOOEU7MEJBRHFCbEksTUFHZm9ELGVBRk44RTtJQURxQmxJLE9BR2ZvRDs7R0FnQlc7WUFFZm90QixtQkFBbUJ4d0IsR0FBRWlJO0lBQVUsSUFDakNDLE1BRGlDLDZCQUFWRDtJQUNoQixPQUFQQztLQUFnQixNQUFBO0lBQ1QsV0FEUEE7S0FPTyxhQVBQQTtNQWtCSyxNQUFBO0tBVkg7TUFBSW1vQixNQVJObm9CO01BU01vb0IsYUFEQUQ7TUFFQUUsYUFGQUY7TUFHQXBjLE1BWmVqVTtRQUFBQSxRQVlmaVUsY0FqSUwyYixPQXFIb0I1dkI7MkJBQUFBLE1BWWZpVSxLQUZBcWM7MkJBVmV0d0IsTUFZZmlVLGFBRkFxYzsyQkFWZXR3QixNQVlmaVUsYUFEQXNjOzJCQVhldndCLE1BWWZpVSxhQURBc2M7S0FYZXZ3QixPQVlmaVU7OztRQVRBN1EsUUFIZXBEO09BQUFBLFFBR2ZvRCxnQkF4SEx3c0IsT0FxSG9CNXZCOzBCQUFBQSxNQUdmb0QsT0FGTjhFOzBCQURxQmxJLE1BR2ZvRCxlQUZOOEU7SUFEcUJsSSxPQUdmb0Q7O0dBZ0JXO1lBRWhCcXRCLGNBQWN6d0IsR0FBRXZCLEdBQUVpeUIsUUFBTzN1QjtJQUMzQixVQURvQjJ1Qjs7Ozs7WUFBTzN1QjsyQ0FBVHRELEtBQVNzRCxXQUFQMnVCO1lBRWY7UUFDREMsZUFIWTN3QixPQUFXK0I7T0FBWC9CLE9BR1oyd0IsY0E3SUZmLE9BMEljNXZCLEdBQVcrQjtJQUszQixpQkFMa0J0RCxHQUFFaXlCLFFBQUoxd0IsTUFBQUEsTUFBVytCO0lBQVgvQixPQUdaMndCOztHQUdzQjtZQUV4QkMsYUFBYTV3QixHQUFFdkIsR0FBRWl5QixRQUFPM3VCO0lBQzFCLE9BVEUwdUIsY0FRYXp3QixHQUNDLDZCQURDdkIsSUFBRWl5QixRQUFPM3VCO0dBQzJCO1lBRW5EOHVCLFdBQVc3d0IsR0FBRXZCO0lBQ2YsSUFBSXNELDRCQURXdEQsSUFFWGt5QixlQUZTM3dCLE9BQ1QrQjtPQURTL0IsT0FFVDJ3QixjQXZKRmYsT0FxSlc1dkIsR0FDVCtCO0lBR0osaUJBSmV0RCxNQUFGdUIsTUFBQUEsTUFDVCtCO0lBRFMvQixPQUVUMndCOztHQUdzQjtZQUV4QkcsVUFBVTl3QixHQUFFdkI7SUFBSSxPQVBoQm95QixXQU9VN3dCLEdBQW1CLDZCQUFqQnZCO0dBQTJDO1lBRXZEc3lCLFdBQVcvd0IsR0FBRWd4QixJQUNmLE9BYkVKLGFBWVc1d0IsR0FBRWd4QixVQUFBQSxPQUN1QjtZQStCcENDLFlBQVlqeEIsR0FBRXlDLElBQUd5dUI7SUFDbkI7V0FEbUJBO29DQUFBQTtZQUVqQjtPQUZZbHhCLFFBQUFBLE9BQUtreEIsZ0JBOUxqQnRCLE9BOExZNXZCLEdBQUtreEI7O0tBM0JnQnB1QixRQTJCckI5QztLQTNCRW1ELE1BMkJGbkQ7S0FHVm14QjtLQTlCK0JydkIsTUFBQWdCO0tBQUtzdUIsVUEyQnJCRjtJQTFCakI7Y0FEc0NFO01BRzVCLElBQUp0ekIsSUFBSSx1QkF3QkkyRSxJQTNCQVUsS0FBbUJyQixLQUFLc3ZCO01BSXBDLFNBREl0ekI7O1FBSGF1ekIsaUJBOEJqQkYsZUEzQklyekI7UUFIMkI2RSxRQUFBYixNQUczQmhFO1FBSGdDd3pCLFlBQUFGLFVBR2hDdHpCO1FBMkJKcXpCLGVBOUJpQkU7UUFBY3Z2QixNQUFBYTtRQUFLeXVCLFVBQUFFOzs7O1NBMkIxQnR4QixPQUdWbXhCLG9CQUhVbnhCO01BSmQsTUFBQTtLQUljQSxPQUFBQSxPQUdWbXhCO1FBQUFBLGVBSGVEO01BTUgsTUFBQTtLQUNoQjs7R0FBRTtZQUVBSyxjQUFjNXZCLElBQUczQjtJQUNuQiw4QkFEZ0IyQixJQUFHM0IsU0FBQUE7R0FDWTtZQTRDN0J3eEIsZUFBZXh4QixHQUFFdkMsR0FBRWdCO0lBQ3JCLElBaEJxQmd6Qiw4QkFlQWh6QixJQUVQaXpCLGVBQVNoVjtJQUNyQjtRQURxQkEsT0FqQkYrVTt1QkFpQlBDO21CQWhNWnpCLFNBOExlandCLEdBRUgweEI7O0tBRUosSUFTSkMsYUFUSSxnQkFKV2x6QixHQUVFaWU7ZUFXakJpVjtnQkFYUUQ7T0FoTVp6QixTQThMZWp3QixHQWFYMnhCO09BUEMsSUFKZ0IvVSxNQUFBRixhQUFUZ1YsZUFBU2hWLE1BQUFFOzs7T0FPaEIsSUF4QlFnVixVQWlCUWxWO1VBakJGK1UsU0FBTkcsU0FDTSxNQUFBO09BQ2YsSUFwQmVDLFVBb0JmLGdCQWFlcHpCLEdBZk5tekI7OztrQkFsQk1DLG1CQUFBQTtTQTRCbEIsSUFsQmEzTyxRQVFEME8saUJBUkdFLDhCQXVCR3J6Qjs7Ozs7OztnQkF2QkxxZSxNQUFBb0c7WUFDZDtnQkFEZ0I0TyxTQUFGaFY7YUFFUixZQUFBLGdCQXFCYXJlLEdBdkJMcWU7Ozs7Ozs7Ozs7OztpQkFBQUMsTUFBQUQsYUFBQUEsTUFBQUM7OztlQWtCVGdWLFNBbEJTalY7OztjQWtCVGlWLFNBbEJXRDs7Ozs7YUFtQmYsOEJBSWtCcnpCLEdBZk5tekIsU0FVUkcsU0FWUUg7YUFVUkc7OztRQUxKLElBdEJlblAsWUFpQkhnUCxpQkFqQkNJO2tCQURLSDthQUFRSTs7b0JBQVJKO1VBTmQsTUFBQTthQU1zQkk7O1lBQ1Q5Yyw0QkFnQ0MxVyxJQWhDTHlzQixJQUFBOEcsS0F1QlRFLE9BdkJXdFA7UUFDaEI7WUFEa0J6TixPQXVCYitjLE1BdEJZLE1BQUE7WUFDZCxnQkE4QmdCenpCLEdBVGR5ekIsVUF4QmNMO2NBQ0h0eEIsSUF1QlgyeEIsY0F2QlNDLE1BQUFqSCxXQUFBQSxJQUFBaUgsS0F1QlRELE9BdkJXM3hCO2lCQUdiLGdCQTZCZ0I5QixHQVRkeXpCLFVBeEJzQkQ7bUJBQ2IvRztjQUFFMXFCLE1BdUJYMHhCLGNBdkJTRSxNQUFBbEgsV0FBQUEsSUFBQWtILEtBdUJURixPQXZCVzF4Qjs7O2NBQUE0VSxNQXVCWDhjLGNBQUFBLE9BdkJXOWM7Ozs7O1lBd0JmO2lDQVFrQjNXLEdBaENIbWtCLFlBdUJYc1AsT0FOUU47WUFNUk07O1dBV2dCRyxxQkFRWkM7T0F6R1R6QixXQStGZTd3QixHQVdHLFdBWER2QyxHQVVSNjBCO1dBUkdaLGVBQVNoVixNQUFBMlY7O29CQUFUWDtNQWhNWnpCLFNBOExlandCO01BOUxmaXdCLFNBOExlandCLEdBYVgyeEI7TUFFQyxJQWJnQm5WLE1BQUFFLGFBQVRnVixlQUFTaFYsTUFBQUY7O29CQVdqQm1WO01BS0MsSUFoQmdCWSxNQUFBN1YsYUFBVGdWLFdBV1JDLFlBWGlCalYsTUFBQTZWOztNQWhNckJ0QyxTQThMZWp3QixHQWFYMnhCO01BT0MsSUFsQmdCYSxNQUFBOVYsYUFBVGdWLFdBV1JDLFlBWGlCalYsTUFBQThWOzs7R0FzQlo7WUFFVEMsU0FBU3p5QixHQUFFK0I7SUFDWCxRQURXQSxPQUFGL0IsUUFBRStCLEtBQUYvQixPQUFFK0I7SUFFVCxPQUFBO0dBRWlCO1lBSW5Cd0gsT0FBT3ZKO2FBQ0R3UyxJQUFJalM7S0FFVixHQUhPUCxRQUNHTyxHQUVjO0tBR3RCLElBREkzQiwwQkFMQ29CLE1BQ0dPLElBS1IsTUFMUUE7S0FLUixXQURJM0IsaUIsT0FKQTRUO0lBS21CO0lBRTNCO0lBQUEscUIsT0FQUUE7R0FPSDtZQUVIOEQsUUFBUXRXO2FBQ0Z3UyxJQUFJalM7S0FFVixHQUhRUCxRQUNFTyxHQUVjO0tBR3RCLElBREkzQiwwQkFMRW9CLE1BQ0VPLElBS1IsTUFMUUE7S0FLUixlQUxRQSxHQUlKM0Isa0IsT0FKQTRUO0lBS3VCO0lBRS9CO0lBQUEscUIsT0FQUUE7R0FPSDtZQUVIa1gsUUFBUTFwQixHQUFFcUg7SUFBZSxrQixPQXBQekI0b0IsU0FvUFFqd0I7SUFBUSxPQUFBLGdDQUFOcUg7R0FBK0I7WUFFekNxTCxPQUFPblMsR0FDRCxJQUFKUCxJQTNWRnVhLFlBd1ZBbVAsUUFHRTFwQixHQURLTyxJQUVULE9BRElQLEVBRUg7WUFhQzB5QixTQUFTMXlCLEdBQUVwQjtJQUNiLElBQUkreEIsZUFETzN3QjtPQUFBQSxPQUNQMndCLGNBN1RGZixPQTRUUzV2QjswQkFBQUEsTUFBQUEsTUFBRXBCO0lBQUZvQixPQUNQMndCOztHQUdzQjtZQUV4QmdDLGFBQWEzeUIsR0FBRXBCO0lBQ2pCLElBQUkreEIsZUFEVzN3QjtPQUFBQSxPQUNYMndCLGNBblVGZixPQWtVYTV2QjtJQUdmLHlCQUhlQSxNQUFBQSxNQUFFcEI7SUFBRm9CLE9BQ1gyd0I7O0dBR3NCO1lBRXhCaUMsYUFBYTV5QixHQUFFcEI7SUFDakIsSUFBSSt4QixlQURXM3dCO09BQUFBLE9BQ1gyd0IsY0F6VUZmLE9Bd1VhNXZCO0lBR2YseUJBSGVBLE1BQUFBLE1BQUVwQjtJQUFGb0IsT0FDWDJ3Qjs7R0FHc0I7WUFFeEJrQyxhQUFhN3lCLEdBQUVwQjtJQUNqQixJQUFJK3hCLGVBRFczd0I7T0FBQUEsT0FDWDJ3QixjQS9VRmYsT0E4VWE1dkI7SUFHZix5QkFIZUEsTUFBQUEsTUFBRXBCO0lBQUZvQixPQUNYMndCOztHQUdzQjtZQUV4Qm1DLGFBQWE5eUIsR0FBRXBCO0lBQ2pCLHdDQURpQkEsS0FBQUE7V0FsQmYrekIsYUFrQmEzeUI7R0FDd0M7WUFFckQreUIsYUFBYS95QixHQUFFcEI7SUFDakIsSUFEaUJ1Uix1QkFBQXZSLGlCQUFBQTtJQUNzQixPQXRCckMrekIsYUFxQmEzeUIsR0FBRW1RO0dBQ3NDO1lBRXJENmlCLGFBQWFoekIsR0FBRXBCO0lBQ2pCLDJCQUF1QyxpQkFEdEJBLEtBQUFBO0lBQ3NCLE9BbkJyQ2cwQixhQWtCYTV5QjtHQUN3QztZQUVyRGl6QixhQUFhanpCLEdBQUVwQjtJQUNqQixJQURpQnVSLHVCQUFBdlIsSUFDNkIsaUJBRDdCQTtJQUM2QixPQXRCNUNnMEIsYUFxQmE1eUIsR0FBRW1RO0dBQ3NDO1lBRXJEK2lCLGFBQWFsekIsR0FBRXBCO0lBQ2pCLDJCQUF1QyxpQkFEdEJBLEtBQUFBO0lBQ3NCLE9BbkJyQ2kwQixhQWtCYTd5QjtHQUN3QztZQUVyRG16QixhQUFhbnpCLEdBQUVwQjtJQUNqQixJQURpQnVSLHVCQUFBdlIsSUFDNkIsaUJBRDdCQTtJQUM2QixPQXRCNUNpMEIsYUFxQmE3eUIsR0FBRW1RO0dBQ3NDOzs7O09BbFpyRG9LO09BTUFtVjtPQUNBNVg7T0FFQTNFO09BTUFPO09BUUE1RztPQU1BRjtPQUVBcWY7T0FFQTBEO09Bb05BNEI7T0F1RUFrQjtPQXhOQXhDO09BTUNDO09BeURBTTtPQXJCQUo7T0FxRERTO09BT0FDO09BbEJBTDtPQVFBRztPQWtHQVk7T0F0RkFUO09BZ0NBRTtPQXdGQTFuQjtPQVVBK007T0FVQW9UO09BRUFoWDtPQWdCQWdnQjtPQUFBQTtPQU1BQztPQXFCQUk7T0FIQUQ7T0FsQkFIO09BcUJBSTtPQUhBRDtPQVpBRjtPQXFCQUs7T0FIQUQ7T0FaQUg7T0FxQkFNO09BSEFEOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNtckVNRTtJQVFRQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBaGxGZEMsdUJBQXFCLE9BQUEsbUNBQW9CO1lBR3pDQyxnQkFBZ0J0MkIsVUFBU29FO0lBQzNCO0tBQ0lteUIsVUFGdUJueUI7S0FFQ295QixhQUZEcHlCO0tBSUMsT0FBQSx1QkFKVnBFLFVBRWR1MkIsV0FBd0JDO0lBQzVCLE9BQUEsZUFIa0J4MkIsVUFFZHUyQixTQUVGO0dBQWlFO1lBRWpFRSxnQkFBZ0J6MkI7SUFDbEIsT0FBQSw0QkFEa0JBO0dBQ007WUFHdEIwMkIsYUFBYTEyQjtJQUNmLElBQUkyMkIsYUFkRk4sb0JBZUYveUI7O0tBRThCLFdBQUEsZ0JBSmZ0RCxVQUVmc0Q7S0FDRSxlQUZFcXpCLFlBQ0pyekIsR0FFSTtLQURGLFdBREZBO2VBQUFBLEdBSUEsT0FBQSw2QkFMSXF6QjtTQUNKcnpCOztHQUlnQztZQUc5QnN6QixlQUFlNTJCLFVBQVNvRTtJQUMxQixJQUNJbXlCLFVBRnNCbnlCLGFBRUVveUIsYUFGRnB5QjtrQkFHYixnQkFISXBFLFVBRWJ1MkIsV0FBd0JDO0dBQzhCO1lBYXhESyxlQUFlQztJQUFVLEtBQVZBLFNBQ1A7UUFDSEMsUUFGVUQ7SUFFRCxjQUFUQztHQUFtQztZQVN4Q0MsK0JBR0ExMkIsS0FBSTIyQjtJQUFPLFVBQVgzMkI7WUFBQUE7O1FBRUEsZUFGSTIyQjs7UUFJSixlQUpJQTs7UUFnQ0osZ0JBaENJQTtnQkFzQ0osZ0JBdENJQTs7V0FBSjMyQjs7V0FLZXcyQixVQUxmeDJCLFFBTUEsZUFwQkF1MkIsZUFtQmVDLFVBTFhHOztXQU9nQkMsWUFQcEI1MkI7T0FRQSxlQXRCQXUyQixlQXFCb0JLLFlBUGhCRDs7V0FTZ0JFLFlBVHBCNzJCLFFBU2FsQyxRQVRia0M7T0FVQSxlQURhbEMsT0F2QmJ5NEIsZUF1Qm9CTSxlQVRoQkY7O1dBV2tCRyxZQVh0QjkyQixRQVdlL0IsVUFYZitCO09BWUEsZUFEZS9CLFNBekJmczRCLGVBeUJzQk8sZUFYbEJIOztXQWNzQkksWUFkMUIvMkIsUUFjbUI1QixVQWRuQjRCO09BZUEsZUFEbUI1QixTQTVCbkJtNEIsZUE0QjBCUSxlQWR0Qko7O1dBaUJrQkssWUFqQnRCaDNCLFFBaUJlekIsVUFqQmZ5QjtPQWtCQSxlQURlekIsU0EvQmZnNEIsZUErQnNCUyxlQWpCbEJMOztXQVRhTSxXQVNqQmozQixRQW9CZWszQixZQXBCZmwzQjtVQVRpQmkzQjtZQUVaRSxPQUZZRix3QkFFWkU7OztPQTRCTCxvQkFuQ0FaLGVBa0NlVyxrQkFwQlhQOztXQXdCU1MsWUF4QmJwM0I7T0F5QkEsZUF2Q0F1MkIsZUFzQ2FhLFlBeEJUVDs7V0EwQnlCNzNCLFFBMUI3QmtCLFFBMEJvQnEzQixZQTFCcEJyM0I7T0EyQkEsZ0JBRG9CcTNCLFdBQVN2NEIsT0ExQnpCNjNCOztXQTRCMkIzM0IsVUE1Qi9CZ0IsUUE0QnNCczNCLFlBNUJ0QnQzQjtPQTZCQSxnQkFEc0JzM0IsV0FBU3Q0QixTQTVCM0IyM0I7O1dBaUM4QmozQixXQWpDbENNLFFBaUN1QkwsWUFqQ3ZCSztPQWtDQSxnQkFEdUJMLFdBQVdELFVBakM5QmkzQjttQkFtQ3FCOTJCLFVBbkN6QkcsUUFvQ0EsZ0JBRHlCSCxTQW5DckI4MkI7O0dBc0NpQztZQTBHckNZLHdCQUF3Qjc0QixPQUMxQixhQUQwQkEsbUJBT1g7WUE2QmI4NEIsY0FBY0M7SUFBWSxjQUFtQixrQkFBL0JBO0dBQXVEO1lBR3JFQyxrQkFBa0I5eEIsS0FBSSt4QjtJQUN4QjtLQUFJbnpCLG1DQURnQm9CO0tBRWhCZ3lCLFVBRmdCaHlCLFNBQUkreEI7T0FDcEJuekIsTUFDQW96QjtLQUVZO01BQVY1ZSxVQUFVLDJCQUhaeFUsYUFDQW96QjtNQUdFQyxVQUFVLGtCQURWN2U7S0FFSiw2QkFOa0JwVCxXQUtkaXlCLFlBSkZyekI7S0FEZ0JvQixTQUtkaXlCOzs7R0FHTDtZQUdDQyxnQkFBZ0JseUIsS0FBSTlCO0lBWHBCNHpCLGtCQVdnQjl4QjtJQUVsQixlQUZrQkEsUUFBQUEsUUFBSTlCO0lBQUo4QixTQUFBQTs7R0FHSTtZQUdwQm15QixrQkFBa0JueUIsS0FBSTFFO0lBQ3hCLElBQUk4MkIsZ0NBRG9COTJCO0lBakJ0QncyQixrQkFpQmtCOXhCLEtBQ2hCb3lCO0lBRUosOEJBSHdCOTJCLE1BQUowRSxRQUFBQSxRQUNoQm95QjtJQURnQnB5QixTQUFBQSxTQUNoQm95Qjs7R0FHd0I7WUFHMUJDLGdCQUFnQnJ5QjtJQUNsQixtQ0FEa0JBLFdBQUFBO0dBQ2tCO1lBS2xDc3lCLGNBQWNwNkI7SUFBUSxPQUFSQTs7O09BRW9COzs7T0FBd0I7OztPQUNoRDs7O09BQXdCOzs7OztPQUZFO2VBQzFCOztHQUMyQjtZQUlyQ3E2QixjQUFnQi9VLEtBQVExa0I7SUFBUSxHQUFoQjBrQixTQUFHRSxNQUFIRixRQUFBZ1YsS0FBRzlVLGNBQUg4VTtXQUFRMTVCOztPQUNiOztPQUFpQjs7T0FDakI7O09BQWlCOztPQUNqQjs7T0FBaUIsT0FIWjA1Qjs7T0FJTDs7T0FBaUI7ZUFDaEI7O0dBQUc7WUF5RWZDLGFBQWF6eUIsS0FBSTB5QjtJQUFRLE9BQVJBOztPQUNSLE9BekdUUixnQkF3R2FseUI7O09BRUo7ZUFDQSxPQTNHVGt5QixnQkF3R2FseUI7O0dBR21CO1lBR2hDMnlCLG9CQUFvQjN5QixLQUFJNHlCO0lBQzFCLE9BRDBCQSxXQTlHeEJWLGdCQThHb0JseUIsV0FBSTR5QjtHQUNjO1lBSXRDQyxlQUFlN3lCLEtBQUk0d0I7SUFBVSxLQUFWQSxTQUNYO1FBQ0hDLFFBRmNEO0lBRWlCLE9BL0dwQ3VCLGtCQTZHZW55QixLQUVxQiwyQkFBL0I2d0I7R0FBb0Q7WUFLekRpQyxlQUNBOXlCLEtBQUlsSTtJQUFPLFVBQVBBLGtCQUNVO2FBRFZBO1NBRWdCb0QsSUFGaEJwRCxRQUVTNDZCLFFBRlQ1NkI7S0FuQkoyNkIsYUFtQkF6eUIsS0FFYTB5QjtLQUVTLE9Bekh0QlAsa0JBcUhBbnlCLEtBSXNCLDJCQUZGOUU7O1FBR1I2M0IsVUFMUmo3QjtJQW5CSjI2QixhQW1CQXp5QixLQUtZK3lCO0lBQ1osT0FqSUFiLGdCQTJIQWx5QjtHQU91QjtZQUd2Qmd6QixpQkFDRWh6QixLQUFJaEk7SUFBUSxVQUFSQTtTQUVRa0QsSUFGUmxEO0tBdElOazZCLGdCQXNJRWx5QjtLQUlvQixPQXBJdEJteUIsa0JBZ0lFbnlCLEtBSW9CLDJCQUZSOUU7O09BRlJsRCxNQU1OLE9BdElBbTZCLGtCQWdJRW55QjtJQUNjO0dBS1U7WUFLMUJpekIsa0JBQWtCanpCLEtBQUk5SDtJQUFRLE9BQVJBOzs7T0FDSCxPQWxKbkJnNkIsZ0JBaUprQmx5Qjs7O09BRUMsT0FuSm5Ca3lCLGdCQWlKa0JseUI7Ozs7Ozs7T0FJaEIsT0FySkZreUIsZ0JBaUprQmx5QjtlQUsrQjs7R0FBRTtZQVluRGt6QixrQkFBa0JsekIsS0FBSTR5QixVQUFTMTZCLE9BQU1KLEtBQUlFLE1BQUtrRztJQWxLOUNnMEIsZ0JBa0trQmx5QjtJQXBEbEIyeUIsb0JBb0RrQjN5QixLQUFJNHlCO0lBakJ0Qkssa0JBaUJrQmp6QixLQUFhOUg7SUF4Qy9CNDZCLGVBd0NrQjl5QixLQUFtQmxJO0lBN0JyQ2s3QixpQkE2QmtCaHpCLEtBQXVCaEk7SUFsS3pDazZCLGdCQWtLa0JseUIsS0FBNEI5QjtJQU81QixPQXpLbEJnMEIsZ0JBa0trQmx5QixLQS9JbEJzeUIsY0ErSStCcDZCO0dBT1E7WUFLdkNpN0Isa0JBQWtCbnpCLEtBQUlsSDtJQUN4QixPQUR3QkE7OztPQTlLdEJvNUIsZ0JBOEtrQmx5QjtlQTlLbEJreUIsZ0JBOEtrQmx5Qjs7WUFBSWxILFVBTVYsT0FwTFpvNUIsZ0JBOEtrQmx5QjtJQVFhO0dBQUU7WUFhakNvekIseUJBQXlCbEQ7SUFBaUIsVUFBakJBO1lBQUFBOztRQUNEOztRQUNBOztRQUVBOztRQUNBOztRQUNBOztRQUVBO2dCQUNBOztXQVRDQTs7V0FHbEJsM0IsTUFIa0JrM0IsbUJBR0QsT0FBakJsM0I7O1dBSUtxNkIsUUFQYW5ELG1CQU9ELE9BQVptRDs7T0FHVSxJQUFYbjFCLElBVmNneUIsbUJBVUgsT0FBQSxnQ0FBWGh5QjtPQUFXLE9BQUE7O0dBQWlCO1lBS3ZDbzFCLG9CQUFvQnR6QixLQUFJL0c7SUFBTSxjQUFOQTtjQTVNeEJrNUIsa0JBNE1vQm55QjtjQWxOcEJreUIsZ0JBa05vQmx5QixLQUFJL0c7R0FFSTtZQUc1QnM2QixzQkFBc0J2ekIsS0FBSWhIO0lBQzVCLGlDQUQ0QkEsY0FDNUI7O1NBQUFvRTs7TUFORWsyQixvQkFLc0J0ekIsS0FFRSxnQkFGRWhILEtBQzVCb0U7TUFDRSxXQURGQTtrQkFBQUE7VUFBQUE7Ozs7R0FFSTtZQU1FbzJCLGFBRUp4ekIsS0FBSTlHO0lBQVMsSUFBVEUsVUFBQUY7SUFBUztlQUFURSxzQkF5Qlk7WUF6QlpBOztZQUFBcTZCLFVBQUFyNkI7UUE1TkorNEIsa0JBNE5BbnlCO1lBQUk1RyxVQUFBcTZCOzs7WUFBQUMsVUFBQXQ2QjtRQTVOSis0QixrQkE0TkFueUI7WUFBSTVHLFVBQUFzNkI7OztZQUFBQyxVQUFBdjZCO1FBNU5KKzRCLGtCQTROQW55QjtZQUFJNUcsVUFBQXU2Qjs7O1lBQUFDLFVBQUF4NkI7UUE1TkorNEIsa0JBNE5BbnlCO1lBQUk1RyxVQUFBdzZCOzs7WUFBQUMsVUFBQXo2QjtRQTVOSis0QixrQkE0TkFueUI7WUFBSTVHLFVBQUF5NkI7OztZQUFBQyxVQUFBMTZCO1FBNU5KKzRCLGtCQTROQW55QjtZQUFJNUcsVUFBQTA2Qjs7O1lBQUFDLFVBQUEzNkI7UUE1TkorNEIsa0JBNE5BbnlCO1lBQUk1RyxVQUFBMjZCOzs7WUFBQUMsVUFBQTU2QjtRQTVOSis0QixrQkE0TkFueUI7WUFBSTVHLFVBQUE0NkI7OztZQUFBQyxVQUFBNzZCLFlBa0JXODZCLFlBbEJYOTZCO1FBNU5KKzRCLGtCQTROQW55QjtRQUZJd3pCLGFBRUp4ekIsS0FrQmVrMEI7UUE5T2YvQixrQkE0TkFueUI7WUFBSTVHLFVBQUE2NkI7OztZQUFBRSxXQUFBLzZCLFlBcUJhZzdCLGNBckJiaDdCO1FBNU5KKzRCLGtCQTROQW55QjtRQUZJd3pCLGFBRUp4ekIsS0FxQmlCbzBCO1FBalBqQmpDLGtCQTROQW55QjtZQUFJNUcsVUFBQSs2Qjs7O1lBQUFFLFdBQUFqN0I7UUE1TkorNEIsa0JBNE5BbnlCO1lBQUk1RyxVQUFBaTdCOzs7WUFBQUMsV0FBQWw3QjtRQTVOSis0QixrQkE0TkFueUI7WUFBSTVHLFVBQUFrN0I7OztZQUFBQyxXQUFBbjdCO1FBNU5KKzRCLGtCQTROQW55QjtZQUFJNUcsVUFBQW03Qjs7O1lBQUFDLFdBQUFwN0I7UUE1TkorNEIsa0JBNE5BbnlCO1lBQUk1RyxVQUFBbzdCOzs7WUFBQUMsV0FBQXI3QjtRQTVOSis0QixrQkE0TkFueUI7WUFBSTVHLFVBQUFxN0I7OztHQXlCYztZQUlkQztJQUFBLFlBR1c7UUFDSGo1QjtlQUpSaTVCLG9CQUlRajVCO0dBQThCO1lBa0gxQ2s1QixjQUFjNUQ7SUFDTixJQWhIRy93QixNQXBSWDR4QjthQXFSTWdELFFBRUo3RCxLQUFJNkI7S0FBWSxJQUFoQmlDLFFBQUE5RCxLQUFJK0QsYUFBQWxDO0tBQVk7Z0JBQWhCaUMsb0JBcUdpQjthQXJHakJBOzthQUFBditCLE9BQUF1K0I7U0F6UUYzQyxnQkFzUVdseUI7U0F4SlgyeUIsb0JBd0pXM3lCLEtBR0w4MEI7U0F6UU41QyxnQkFzUVdseUI7YUFHVDYwQixRQUFBditCLE1BQUl3K0I7OzthQUFKditCLFNBQUFzK0I7U0F6UUYzQyxnQkFzUVdseUI7U0F4SlgyeUIsb0JBd0pXM3lCLEtBR0w4MEI7U0F6UU41QyxnQkFzUVdseUI7YUFHVDYwQixRQUFBdCtCLFFBQUl1K0I7OzthQUFKdCtCLFNBQUFxK0IsVUFDUS84QixNQURSKzhCO1NBelFGM0MsZ0JBc1FXbHlCO1NBeEpYMnlCLG9CQXdKVzN5QixLQUdMODBCO1NBL0lOaEMsZUE0SVc5eUIsS0FJRGxJO1NBMVFWbzZCLGdCQXNRV2x5QjthQUdUNjBCLFFBQUFyK0IsUUFBSXMrQjs7O2FBQUpyK0IsU0FBQW8rQixVQUthOThCLFFBTGI4OEI7U0F6UUYzQyxnQkFzUVdseUI7U0F4SlgyeUIsb0JBd0pXM3lCLEtBR0w4MEI7U0EvSU5oQyxlQTRJVzl5QixLQVFJakk7U0E5UWZtNkIsZ0JBc1FXbHlCO2FBR1Q2MEIsUUFBQXArQixRQUFJcStCOzs7O1VBQUpwK0IsU0FBQW0rQjtVQWhIb0M3OEIsT0FnSHBDNjhCO1VBaEhnQzU4QixRQWdIaEM0OEI7VUFoSDBCMzhCLFFBZ0gxQjI4QjtTQXpRRjNDLGdCQXNRV2x5QjtTQXhKWDJ5QixvQkF3SlczeUIsS0FHTDgwQjtTQXhITjdCLGtCQXFIV2p6QixLQTdHaUI5SDtTQS9CNUI0NkIsZUE0SVc5eUIsS0E3R3VCL0g7U0FwQmxDKzZCLGlCQWlJV2h6QixLQTdHMkJoSTtTQXpKdENrNkIsZ0JBc1FXbHlCLEtBblBYc3lCLGNBc0k0QnA2QjthQWdIMUIyOEIsUUFBQW4rQixRQUFJbytCOzs7O1VBQUpuK0IsU0FBQWsrQjtVQWFtQjE4QixTQWJuQjA4QjtVQWFjejhCLFFBYmR5OEI7VUFhT3g4QixVQWJQdzhCO1NBdkdGM0Isa0JBb0dXbHpCLEtBR0w4MEIsWUFhR3o4QixTQUFPRCxPQUFLRDthQWJuQjA4QixRQUFBbCtCLFFBQUltK0I7Ozs7VUFBSmwrQixTQUFBaStCO1VBZ0J1QnY4QixTQWhCdkJ1OEI7VUFnQmtCdDhCLFFBaEJsQnM4QjtVQWdCV3I4QixVQWhCWHE4QjtTQXZHRjNCLGtCQW9HV2x6QixLQUdMODBCLFlBZ0JPdDhCLFNBQU9ELE9BQUtEO2FBaEJ2QnU4QixRQUFBaitCLFFBQUlrK0I7Ozs7VUFBSmorQixTQUFBZytCO1VBbUJtQnA4QixTQW5CbkJvOEI7VUFtQmNuOEIsUUFuQmRtOEI7VUFtQk9sOEIsVUFuQlBrOEI7U0F2R0YzQixrQkFvR1dsekIsS0FHTDgwQixZQW1CR244QixTQUFPRCxPQUFLRDthQW5CbkJvOEIsUUFBQWgrQixRQUFJaStCOzs7O1VBQUpoK0IsU0FBQSs5QjtVQWhGc0NqOEIsU0FnRnRDaThCO1VBaEZrQ2g4QixRQWdGbENnOEI7VUFoRjRCLzdCLFFBZ0Y1Qis3QjtTQXpRRjNDLGdCQXNRV2x5QjtTQXhKWDJ5QixvQkF3SlczeUIsS0FHTDgwQjtTQTNGTjNCLGtCQXdGV256QixLQTdFbUJsSDtTQS9EOUJnNkIsZUE0SVc5eUIsS0E3RXlCbkg7U0FwRHBDbTZCLGlCQWlJV2h6QixLQTdFNkJwSDtTQXpMeENzNUIsZ0JBc1FXbHlCLEtBNU9YdXlCLGlCQStKOEJ6NUI7YUFnRjVCKzdCLFFBQUEvOUIsUUFBSWcrQjs7O2FBQUo5OUIsU0FBQTY5QixVQWdDTTk3QixRQWhDTjg3QjtTQXpRRjNDLGdCQXNRV2x5QjtTQXhKWDJ5QixvQkF3SlczeUIsS0FHTDgwQjtTQS9JTmhDLGVBNElXOXlCLEtBbUNIakg7U0F6U1JtNUIsZ0JBc1FXbHlCO2FBR1Q2MEIsUUFBQTc5QixRQUFJODlCOzs7YUFBSjU5QixTQUFBMjlCO1NBblFGMUMsa0JBZ1FXbnlCO2FBR1Q2MEIsUUFBQTM5Qjs7O2FBQUFDLFVBQUEwOUIsVUF1RGdCNzdCLE1BdkRoQjY3QjtTQWxERnRCLHNCQStDV3Z6QixLQTBET2hIO2FBdkRoQjY3QixRQUFBMTlCOzs7YUFBQUMsVUFBQXk5QixVQTBEYzU3QixNQTFEZDQ3QjtTQXZERnZCLG9CQW9EV3R6QixLQTZESy9HO2FBMURkNDdCLFFBQUF6OUI7OzthQUFBQyxVQUFBdzlCLFVBOERxQjM3QixRQTlEckIyN0IsVUE4RFlqRSxVQTlEWmlFO1NBelFGM0MsZ0JBc1FXbHlCO1NBeEpYMnlCLG9CQXdKVzN5QixLQUdMODBCO1NBdEpOakMsZUFtSlc3eUIsS0FpRUc0d0I7U0F2VWRzQixnQkFzUVdseUI7U0F0Q1B3ekIsYUFzQ094ekIsS0FpRVk5RztTQXZVdkJnNUIsZ0JBc1FXbHlCO1NBdFFYa3lCLGdCQXNRV2x5QjthQUdUNjBCLFFBQUF4OUIsU0FBSXk5Qjs7O2FBQUp4OUIsVUFBQXU5QixVQW1FdUJ6N0IsVUFuRXZCeTdCLFVBbUVjN0QsWUFuRWQ2RDtTQXpRRjNDLGdCQXNRV2x5QjtTQXhKWDJ5QixvQkF3SlczeUIsS0FHTDgwQjtTQXRKTmpDLGVBbUpXN3lCLEtBc0VLZ3hCO1NBNVVoQmtCLGdCQXNRV2x5QjtTQXRDUHd6QixhQXNDT3h6QixLQXNFYzVHO1NBNVV6Qjg0QixnQkFzUVdseUI7U0F0UVhreUIsZ0JBc1FXbHlCO2FBR1Q2MEIsUUFBQXY5QixTQUFJdzlCOzs7YUFBSng3QixVQUFBdTdCO1NBelFGM0MsZ0JBc1FXbHlCO1NBeEpYMnlCLG9CQXdKVzN5QixLQUdMODBCO1NBelFONUMsZ0JBc1FXbHlCO2FBR1Q2MEIsUUFBQXY3QixTQUFJdzdCOzs7YUFBSnY3QixVQUFBczdCO1NBelFGM0MsZ0JBc1FXbHlCO1NBeEpYMnlCLG9CQXdKVzN5QixLQUdMODBCO1NBelFONUMsZ0JBc1FXbHlCO2FBR1Q2MEIsUUFBQXQ3QixTQUFJdTdCOzs7YUFBSnQ3QixVQUFBcTdCLFVBeUZnQnA3QixhQXpGaEJvN0I7U0FsREZ0QixzQkErQ1d2ekIsS0FuRVhvekIseUJBK0prQjM1QjthQXpGaEJvN0IsUUFBQXI3Qjs7O2FBNEY0QkUsVUE1RjVCbTdCLFVBNEZnQmw3QixhQTVGaEJrN0I7U0E2RkEsU0FEZ0JsN0I7Y0FFTzA1QixRQUZQMTVCO1VBL1ZsQnc0QixrQkFnUVdueUI7VUFoUVhteUIsa0JBZ1FXbnlCLEtBaUdjcXpCOzs7Y0FFQTBCLFFBSlBwN0I7VUEvVmxCdzRCLGtCQWdRV255QjtVQWhRWG15QixrQkFnUVdueUIsS0FtR2MrMEI7O2FBaEd2QkYsUUE0RjRCbjdCOzs7YUE1RjVCRSxVQUFBaTdCO1NBelFGM0MsZ0JBc1FXbHlCO1NBeEpYMnlCLG9CQXdKVzN5QixLQUdMODBCO1NBelFONUMsZ0JBc1FXbHlCO2FBR1Q2MEIsUUFBQWo3QixTQUFJazdCOzs7YUFBSmo3QixVQUFBZzdCLFVBOU5rQi82QixXQThObEIrNkIsVUF5RWU5NkIsWUF6RWY4NkI7U0F6UUYzQyxnQkFzUVdseUI7U0F4SlgyeUIsb0JBd0pXM3lCLEtBR0w4MEI7U0F0Sk5qQyxlQW1KVzd5QixLQTRFTWpHOztVQTFQZndHO3FCQUFXUCxLQUFJNUM7YUFBVSxJQUd6QmMsSUFIeUIsdUJBQVZkOzJCQUdmYzt3QkEzRkZnMEIsZ0JBd0ZhbHlCLFVBeEZia3lCLGdCQXdGYWx5Qjs7MkJBR1g5QjswQkEzRkZnMEIsZ0JBd0ZhbHlCLFVBeEZia3lCLGdCQXdGYWx5Qjt5QkF4RmJreUIsZ0JBd0ZhbHlCLEtBR1g5QjtZQUE2QjtTQTNGL0JnMEIsZ0JBc1FXbHlCO1NBdktSO1VBZlFwRjtZQWhUWDgxQixlQTJRb0I1MkI7Z0JBM0NwQm80QixnQkFzUVdseUIsVUEvZVh3d0IsYUFvUm9CMTJCO2VBQUFBO2FBcUNUazdCLFFBQUFwNkI7a0JBbkNQcTZCLFNBQVMvMkI7VUFDWDtXQUFZZzNCLFFBQWdDLDJCQURqQ2gzQjtXQUNQaTNCLFNBQXNCLDJCQURmajNCO1dBRVgsT0EvUUZ3eUIsZUFnVFdzRSxPQW5DRTkyQjtVQUVYO1dBQ1E7WUFBQSxPQWhSVnd5QixlQWdUV3NFLE9BbENMRztZQUVJLGNBaFJWekUsZUFnVFdzRSxPQWxDR0U7Ozs7VUFFeUI7U0FBeUI7U0FDN0QsR0FKQ0QsY0E3Q0ovQyxnQkFzUVdseUI7Ozs7Ozs7O2dCQTlNTzVDO1lBSGxCO2dCQUdrQkE7YUFGYixHQXRSTHN6QixlQWdUVzkxQixLQTFCYSx1QkFFTndDO2NBQ1osZUFBQSx1QkFEWUE7Ozs7O2VBR0gsSUFQQ3VjLE1BSUV2YyxXQUFBQSxJQUpGdWM7OztjQVFULElBQ1kxSCxNQUxEN1U7Y0FNZixHQTlSSHN6QixlQWdUVzkxQixLQWxCVyx1QkFESHFYO2VBRVgsaUJBQUEsdUJBRldBOzs7Ozs7c0JBN1JuQnllLGVBZ1RXOTFCLEtBYmdDLHVCQU54QnFYO2dCQTJCakIxUixXQThLU1AsS0F6TVFpUztnQkFPZixJQWhCWXdILE1BU0d4SCxhQUxEN1UsSUFKRnFjOzs7ZUFrQkQsR0F0U2ZpWCxlQWdUVzkxQixLQVZ3Qix1QkFUaEJxWDtnQkFjZixJQUthZCxJQW5CRWMsYUFtQkoySCxNQW5CSTNILGFBbUJGeUgsTUFBQXZJO2dCQUNqQjs0QkFEaUJ1STtpQkFDQyxLQWpUbEJnWCxlQWdUVzkxQixLQUMyQix1QkFEckI4ZTtpQkFPZixJQVBlMGIsTUFBQTFiLGFBQUFBLE1BQUEwYjs7Z0JBUWY3MEIsV0E4S1NQLEtBdExJNFo7Z0JBUWJyWixXQThLU1A7Z0JBOUtUTyxXQThLU1AsS0F0TE0wWjttQkFBQUE7Z0JBS0MsSUFqQ0YwVixNQTRCQzFWLGFBeEJDdGMsSUFKRmd5Qjs7O2dCQW9DZDd1QixXQThLU1AsS0F6TVFpUztnQkEyQmpCMVIsV0E4S1NQLEtBek1RaVM7Z0JBV2YsSUFwQllzSCxNQVNHdEgsYUFMRDdVLElBSkZtYzs7OztlQW9DZGhaLFdBOEtTUCxLQXpNUWlTO2VBZ0JqQixJQXpCY29ILE1BU0dwSCxhQUxEN1UsSUFKRmljOzs7O2NBR1QsSUFIU2hjLE1BSUVELFdBQUFBLElBSkZDOzs7O1dBb0Nka0QsV0E4S1NQOzs7VUE5S1RPLFdBOEtTUDtVQTlLVE8sV0E4S1NQOzs7U0FuTlIsR0FOQ2kxQixjQTdDSi9DLGdCQXNRV2x5QjtTQXRRWGt5QixnQkFzUVdseUI7YUFHVDYwQixRQUFBaDdCLFNBQUlpN0I7OzthQUFKOTZCLFVBQUE2NkIsVUF0T2M1NkIsVUFzT2Q0NkI7U0F6UUYzQyxnQkFzUVdseUI7U0F4SlgyeUIsb0JBd0pXM3lCLEtBR0w4MEI7Z0JBdE9VNzZCOzs7Ozs7O1NBbkNoQmk0QixnQkFzUVdseUI7YUFHVDYwQixRQUFBNzZCLFNBQUk4NkI7OzthQUFKNTZCLFVBQUEyNkI7U0F6UUYzQyxnQkFzUVdseUI7U0F4SlgyeUIsb0JBd0pXM3lCLEtBR0w4MEI7U0FsRE52QixzQkErQ1d2ekI7YUFHVDYwQixRQUFBMzZCLFNBQUk0NkI7Ozs7VUFxRmdCMzZCLFVBckZwQjA2QjtVQXFGZXo2QixNQXJGZnk2QjtVQUFBUSxRQTljRnZFLCtCQW1pQmlCMTJCLEtBQUtEO1VBckZwQjA2QixRQUFBUTtVQUFJUDs7O1NBMkNVO1VBREl6NkIsVUExQ2xCdzZCO1VBMENRdDZCLFFBMUNSczZCO1VBMkNjLE9BckRaSCxvQkFvRE1uNkI7OztjQUNSODBCOztXQXBURjZDLGdCQXNRV2x5QjtXQXhKWDJ5QixvQkF3SlczeUIsS0FHTDgwQjtXQXpRTjVDLGdCQXNRV2x5QjtXQWdEUCxXQUZGcXZCO3VCQUFBQTtlQUFBQTs7O2FBM0NBd0YsUUEwQ2tCeDZCLFNBMUNkeTZCOzs7SUFxR2U7SUF2R2ZGLFFBOEdRN0Q7SUFFaEIsT0ExV0VzQixnQkF5UFdyeUI7R0FrSE07WUFXYnMxQjtJQUFBLDhCQXVCWTs7O1dBakJSaC9CLGlCQUFRLFdBTlpnL0IsS0FNSWgvQjs7V0FPRUMsbUJBQVEsV0FiZCsrQixLQWFNLytCOztXQU5IQyxtQkFBUSxXQVBYOCtCLEtBT0c5K0I7O1dBQ0VDLG1CQUFRLFdBUmI2K0IsS0FRSzcrQjs7V0FFSUMsbUJBQVEsV0FWakI0K0IsS0FVUzUrQjs7V0FESkMsbUJBQVEsV0FUYjIrQixLQVNLMytCOztXQUVBQyxtQkFBUSxXQVhiMCtCLEtBV0sxK0I7O1dBQ0RDLG1CQUFRLFdBWlp5K0IsS0FZSXorQjs7V0FPV0MsbUJBQUpDLGVBQ2YsV0FEZUEsSUFuQlh1K0IsS0FtQmV4K0I7O1dBRVFFLG1CQUFMVSxnQkFBTFQ7T0FDakIsV0FEc0JTLEtBQUxULEtBckJicStCLEtBcUJ1QnQrQjs7V0FObEJFLG1CQUFRLFlBZmJvK0IsS0FlS3ArQjs7V0FEQUMsb0JBQVEsWUFkYm0rQixLQWNLbitCOztXQUVGQyxvQkFBUSxZQWhCWGsrQixLQWdCR2wrQjs7V0FDR0Msb0JBQVEsWUFqQmRpK0IsS0FpQk1qK0I7bUJBQ1FDLG9CQUFRLFlBbEJ0QmcrQixLQWtCY2grQjs7R0FLVTtZQUV4QmkrQjtJQUFBO0tBU0o7NkJBQWEsT0FBSTs2QkFDSixPQUFJOzZCQUNKLE9BQUk7NkJBQ0osT0FBSTs7O09BRUk7UUFEYmovQjtRQUNhLFFBZGpCaS9CLGNBYUlqL0I7UUFDUWsvQjtRQUFKQztRQUFKQztRQUFKQztPQUNKOytCQURJQSxPQUMrQixPQUFJOytCQUQvQkQsT0FFMkIsT0FBSTtlQUYzQkQ7ZUFBSUQ7O09BS0s7UUFEWGovQjtRQUNXLFVBbkJqQmcvQixjQWtCTWgvQjtRQUNNcS9CO1FBQUpDO1FBQUpDO1FBQUpDO09BQ0o7K0JBRElBLFNBQytCLE9BQUk7K0JBRC9CRCxTQUUyQixPQUFJO2VBRjNCRDtlQUFJRDs7T0FLSztRQURkcC9CO1FBQ2MsVUF4QmpCKytCLGNBdUJHLytCO1FBQ1N3L0I7UUFBSkM7UUFBSkM7UUFBSkM7T0FDSjsrQkFESUEsU0FDK0IsT0FBSTsrQkFEL0JELFNBRTJCLE9BQUk7ZUFGM0JEO2VBQUlEOztPQUtLO1FBRFp2L0I7UUFDWSxVQTdCakI4K0IsY0E0Qks5K0I7UUFDTzIvQjtRQUFKQztRQUFKQztRQUFKQztPQUNKOytCQURJQSxTQUMrQixPQUFJOytCQUQvQkQsU0FFMkIsT0FBSTtlQUYzQkQ7ZUFBSUQ7O09BVUs7UUFEUjEvQjtRQUNRLFVBdkNqQjYrQixjQXNDUzcrQjtRQUNHOC9CO1FBQUpDO1FBQUpDO1FBQUpDO09BQ0o7K0JBRElBLFNBQytCLE9BQUk7K0JBRC9CRCxTQUUyQixPQUFJO2VBRjNCRDtlQUFJRDs7T0FMSztRQURaNy9CO1FBQ1ksVUFsQ2pCNCtCLGNBaUNLNStCO1FBQ09pZ0M7UUFBSkM7UUFBSkM7UUFBSkM7T0FDSjsrQkFESUEsU0FDK0IsT0FBSTsrQkFEL0JELFNBRTJCLE9BQUk7ZUFGM0JEO2VBQUlEOztPQVVLO1FBRFpoZ0M7UUFDWSxVQTVDakIyK0IsY0EyQ0szK0I7UUFDT29nQztRQUFKQztRQUFKQztRQUFKQztPQUNKOytCQURJQSxTQUMrQixPQUFJOytCQUQvQkQsU0FFMkIsT0FBSTtlQUYzQkQ7ZUFBSUQ7O09BS0s7UUFEYm5nQztRQUNhLFVBakRqQjArQixjQWdESTErQjtRQUNRdWdDO1FBQUpDO1FBQUpDO1FBQUpDO09BQ0o7K0JBRElBLFNBQytCLE9BQUk7K0JBRC9CRCxTQUUyQixPQUFJO2VBRjNCRDtlQUFJRDs7T0FpQ0s7UUFERHRnQztRQUNDLFVBbEZqQnkrQixjQWlGZ0J6K0I7UUFDSjBnQztRQUFKQztRQUFKQztRQUFKQztPQUNKOytCQURJQSxTQUMrQixPQUFJOytCQUQvQkQsU0FFMkIsT0FBSTtlQUYzQkQ7ZUFBSUQ7O09BS0s7UUFETXhnQztRQUFMVTtRQUFMVDtRQUNJLFVBdkZqQnMrQixjQXNGdUJ2K0I7UUFDWDRnQztRQUFKQztRQUFKQztRQUFKQztRQUNBaGhDLEtBc0JKaWhDLE1BdklJMUMsS0ErR2FyK0IsTUFBS1M7UUFHRCxVQXpGakI2OUIsY0F3RkF4K0I7UUFDWWtoQztRQUFKQztRQUFKQztRQUFKQztPQUNKOytCQUhJTCxTQUVBSyxPQUNxRCxPQUFJOytCQURyREQsT0FGQUwsU0FJaUQsT0FBSTsrQkFKakRELFNBRUFLLE9BRzZDLE9BQUk7K0JBSDdDRCxPQUZBTCxTQU15QyxPQUFJOztPQWpDeEM7UUFEWjFnQztRQUNZLFdBNURqQnErQixjQTJES3IrQjtRQUNPbWhDO1FBQUpDO1FBQUpDO1FBQUpDO09BQ0o7K0JBRElBLFNBQytCLE9BQUk7K0JBRC9CRCxTQUUyQixPQUFJO2VBRjNCRDtlQUFJRDs7T0FMSztRQURabGhDO1FBQ1ksV0F2RGpCbytCLGNBc0RLcCtCO1FBQ09zaEM7UUFBSkM7UUFBSkM7UUFBSkM7T0FDSjsrQkFESUEsVUFDK0IsT0FBSTsrQkFEL0JELFVBRTJCLE9BQUk7ZUFGM0JEO2VBQUlEOztPQVVLO1FBRGRyaEM7UUFDYyxXQWpFakJtK0IsY0FnRUduK0I7UUFDU3loQztRQUFKQztRQUFKQztRQUFKQztPQUNKOytCQURJQSxVQUMrQixPQUFJOytCQUQvQkQsVUFFMkIsT0FBSTtlQUYzQkQ7ZUFBSUQ7O09BS0s7UUFEWHhoQztRQUNXLFdBdEVqQmsrQixjQXFFTWwrQjtRQUNNNGhDO1FBQUpDO1FBQUpDO1FBQUpDO09BQ0o7K0JBRElBLFVBQytCLE9BQUk7K0JBRC9CRCxVQUUyQixPQUFJOytCQUYzQkQsVUFHdUIsT0FBSTsrQkFIdkJELFVBSW1CLE9BQUk7O09BRWxCO1FBREgzaEM7UUFDRyxXQTVFakJpK0IsY0EyRWNqK0I7UUFDRitoQztRQUFKQztRQUFKQztRQUFKQztPQUNKOytCQURJQSxVQUMrQixPQUFJOytCQUQvQkQsVUFFMkIsT0FBSTsrQkFGM0JELFVBR3VCLE9BQUk7K0JBSHZCRCxVQUltQixPQUFJOztHQWF1QjtZQWlCOURyQixNQVdFL2dDLEtBQUlTO0lBQU87Ozs7Ozs7Ozs7Ozs7O3FCQUFYVDttQkFBQUE7O21CQUNNd2lDLFFBRE54aUM7eUJBQUlTO3VCQUFBQTs7dUJBQ2lCZ2lDLFFBRGpCaGlDLFFBQzBCLFdBWmhDc2dDLE1BWVF5QixPQUFlQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CQUNiQyxVQUZSMWlDO3lCQUFJUzt1QkFBQUE7O3VCQUVxQmtpQyxVQUZyQmxpQyxRQUU4QixXQWJwQ3NnQyxNQWFVMkIsU0FBaUJDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7bUJBRXBCQyxVQUpMNWlDO3lCQUFJUzt1QkFBQUE7O3VCQUllb2lDLFVBSmZwaUMsUUFJd0IsV0FmOUJzZ0MsTUFlTzZCLFNBQWNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7bUJBQ1pDLFVBTFA5aUM7eUJBQUlTO3VCQUFBQTs7dUJBS21Cc2lDLFVBTG5CdGlDLFFBSzRCLFdBaEJsQ3NnQyxNQWdCUytCLFNBQWdCQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CQUVaQyxVQVBYaGpDO3lCQUFJUzt1QkFBQUE7O3VCQU8yQndpQyxVQVAzQnhpQyxRQU9vQyxXQWxCMUNzZ0MsTUFrQmFpQyxTQUFvQkM7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQkFEeEJDLFVBTlBsakM7eUJBQUlTO3VCQUFBQTs7dUJBTW1CMGlDLFVBTm5CMWlDLFFBTTRCLFdBakJsQ3NnQyxNQWlCU21DLFNBQWdCQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CQUVoQkMsVUFSUHBqQzt5QkFBSVM7dUJBQUFBOzt1QkFRbUI0aUMsVUFSbkI1aUMsUUFRNEIsV0FuQmxDc2dDLE1BbUJTcUMsU0FBZ0JDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7bUJBTGpCQyxVQUhOdGpDO3lCQUFJUzt1QkFBQUE7O3VCQUdpQjhpQyxVQUhqQjlpQyxRQUcwQixXQWRoQ3NnQyxNQWNRdUMsU0FBZUM7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQkE0QkhDLFVBL0JsQnhqQyxRQStCYXlqQyxRQS9CYnpqQzt5QkFBSVM7dUJBQUFBOzttQkFnQ3dCO29CQURrQmlqQyxVQS9CMUNqakM7b0JBK0JxQ2tqQyxRQS9CckNsakM7b0JBZ0N3QixPQTNDOUJzZ0MsTUEwQ29CeUMsU0FBNEJFO21CQUNoRCxXQTNDQTNDLE1BMENlMEMsT0FBNEJFOzs7Ozs7Ozs7Ozs7ZUFFckIsTUFBQTs7bUJBR09DLFVBcEMzQjVqQyxRQW9DcUI2akMsT0FwQ3JCN2pDLFFBb0NlOGpDLE9BcENmOWpDO3lCQUFJUzt1QkFBQUE7Ozs7bUJBc0NHO29CQURvQnNqQyxVQXJDdkJ0akM7b0JBcUNpQnVqQyxPQXJDakJ2akM7b0JBcUNXd2pDLE9BckNYeGpDO29CQXNDRlgsS0FqREppaEMsTUF2SUkxQyxLQXNMbUJ3RixPQUNOSTtvQkFFRSxRQWhLZjNGLGNBK0pBeCtCO29CQUNVb2tDO29CQUFQQzttQkFBQUE7bUJBQU9EO21CQUdkLFdBTmlCSixNQUNNRSxNQWhEdkJqRCxNQStDNkI2QyxTQUNBRzs7Ozs7Ozs7Ozs7O2VBTUwsTUFBQTs7bUJBakNmSyxVQVZQcGtDO3lCQUFJUywyQkFBQUE7b0JBVW1CNGpDLFVBVm5CNWpDO2dCQVU0QixZQXJCbENzZ0MsTUFxQlNxRCxTQUFnQkM7O2VBQ1IsTUFBQTs7bUJBR1JDLFdBZFB0a0M7eUJBQUlTO3VCQUFBQTs7Ozt1QkFjbUI4akMsV0FkbkI5akM7bUJBYzRCLFlBekJsQ3NnQyxNQXlCU3VELFVBQWdCQzs7ZUFDUixNQUFBOzttQkFHVkMsV0FsQkx4a0M7eUJBQUlTO3VCQUFBQTs7Ozs7O3VCQWtCZWdrQyxXQWxCZmhrQzttQkFrQndCLFlBN0I5QnNnQyxNQTZCT3lELFVBQWNDOztlQUNOLE1BQUE7O21CQUdMQyxXQXRCUjFrQzt5QkFBSVM7dUJBQUFBOzs7Ozs7Ozt1QkFzQnFCa2tDLFdBdEJyQmxrQzttQkFzQjhCLFlBakNwQ3NnQyxNQWlDVTJELFVBQWlCQzs7ZUFDVCxNQUFBOzttQkFHQUMsV0ExQmhCNWtDO3lCQUFJUzt1QkFBQUE7Ozs7Ozs7Ozs7dUJBMEJxQ29rQyxXQTFCckNwa0M7bUJBMkJOLFlBdENBc2dDLE1BcUNrQjZELFVBQXlCQzs7ZUFFakIsTUFBQTs7WUFvQlAsTUFBQTs7cUJBaERicGtDLGtCQThDd0I7a0JBOUN4QkE7Ozs7Ozs7Ozs7Ozs7OztjQStDYSxNQUFBOzs7VUFISyxNQUFBOztTQVZGLE1BQUE7O1FBTEksTUFBQTs7T0FMUixNQUFBOztNQUpILE1BQUE7O0tBSkUsTUFBQTs7SUFKQSxNQUFBO0dBb0NjO1lBVS9CcWtDLGFBRUE3aUM7SUFBUyxJQUFURSxVQUFBRjtJQUFTO2VBQVRFLHNCQXFEOEI7WUFyRDlCQTs7WUEyQks5QyxPQTNCTDhDLFlBMkI4QixXQTdCOUIyaUMsYUE2Qkt6bEM7O1lBQ0tDLFNBNUJWNkMsWUE0QjhCLFdBOUI5QjJpQyxhQThCVXhsQzs7WUEzQkdDLFNBRGI0QyxZQUNRdEIsTUFEUnNCO1FBRTJCLE9BcUYzQjRpQyx1QkF0RlFsa0MsU0FIUmlrQyxhQUdhdmxDOztZQUVLQyxTQUhsQjJDLFlBR2FyQixRQUhicUI7UUFJMkIsT0FtRjNCNGlDLHVCQXBGYWprQyxXQUxiZ2tDLGFBS2tCdGxDOztRQUlKO1NBREtDLFNBTm5CMEM7U0FNYXBCLE9BTmJvQjtTQU1RbkIsUUFOUm1CO1NBT0k2aUMsVUFUSkYsYUFRbUJybEM7U0FFZndsQyxVQXVGSkMseUJBekZhbmtDLFVBQ1Rpa0M7UUFFSixPQThFQUQsdUJBakZRL2pDLE9BRUppa0M7O1FBR1U7U0FET3ZsQyxTQVZyQnlDO1NBVWVqQixTQVZmaUI7U0FVVWhCLFFBVlZnQjtTQVdJZ2pDLFlBYkpMLGFBWXFCcGxDO1NBRWpCMGxDLFlBbUZKRix5QkFyRmVoa0MsWUFDWGlrQztRQUVKLE9BMEVBSix1QkE3RVU1akMsT0FFTmlrQzs7UUFHVTtTQURXemxDLFNBZHpCd0M7U0FjbUJkLFNBZG5CYztTQWNjYixRQWRkYTtTQWVJa2pDLFlBakJKUCxhQWdCeUJubEM7U0FFckIybEMsWUErRUpKLHlCQWpGbUI3akMsWUFDZmdrQztRQUVKLE9Bc0VBTix1QkF6RWN6akMsT0FFVmdrQzs7UUFHVTtTQURPMWxDLFNBbEJyQnVDO1NBa0JlWCxTQWxCZlc7U0FrQlVWLFFBbEJWVTtTQW1CSW9qQyxZQXJCSlQsYUFvQnFCbGxDO1NBRWpCNGxDLFlBMkVKTix5QkE3RWUxakMsWUFDWCtqQztRQUVKLE9Ba0VBUix1QkFyRVV0akMsT0FFTitqQzs7UUFHVTtTQURPM2xDLFNBdEJyQnNDO1NBc0JlUixTQXRCZlE7U0FzQlVQLFFBdEJWTztTQXVCSXNqQyxZQXpCSlgsYUF3QnFCamxDO1NBRWpCNmxDLFlBdUVKUix5QkF6RWV2akMsWUFDWDhqQztRQUVKLE9BOERBVix1QkFqRVVuakMsT0FFTjhqQzs7WUFLTzNsQyxTQTdCWG9DLFlBNkJNTCxRQTdCTks7UUE4QjZCLE9BeUQ3QjRpQyx1QkExRE1qakMsV0EvQk5nakMsYUErQlcva0M7O1lBN0JYeThCLFVBQUFyNkIsWUFBQUEsVUFBQXE2Qjs7WUFBQUMsVUFBQXQ2QixZQUFBQSxVQUFBczZCOztZQUFBQyxVQUFBdjZCLFlBQUFBLFVBQUF1NkI7O1lBb0NtQno4QixTQXBDbkJrQyxZQW9DZXJDLEtBcENmcUM7UUFxQ0EsV0FEZXJDLElBdENmZ2xDLGFBc0NtQjdrQzs7WUFFRUMsVUF0Q3JCaUMsWUFzQ2lCd2pDLE9BdENqQnhqQztRQXVDQSxXQURpQndqQyxNQUFBQSxNQXhDakJiLGFBd0NxQjVrQzs7WUFQZkMsVUEvQk5nQyxZQStCOEIsWUFqQzlCMmlDLGFBaUNNM2tDOztZQUNBQyxVQWhDTitCLFlBZ0M4QixZQWxDOUIyaUMsYUFrQ00xa0M7O1lBaENOdThCLFVBQUF4NkIsWUFBQUEsVUFBQXc2Qjs7UUFtRGtEO1NBRHRCdDhCLFVBbEQ1QjhCO1NBUEF5akMsaUJBT0F6akM7U0FtRGtELE9BckRsRDJpQyxhQW9ENEJ6a0M7aUJBekQ1QnVsQzthQUNrQjlMLE1BRGxCOEwsNkJBS0FkLGFBSmtCaEw7O2FBQ0E4RCxRQUZsQmdJLDZCQUtBZCxhQUhrQmxIO1FBd0RnQyxPQUFBOztZQWpCM0N2N0IsVUFsQ1BGLFlBa0M4QixZQXBDOUIyaUMsYUFvQ096aUM7O1lBV2NDLFVBN0NyQkgsWUE2QzhCLFdBL0M5QjJpQyxhQStDcUJ4aUM7O1lBQ0FDLFVBOUNyQkosWUE4QzhCLFdBaEQ5QjJpQyxhQWdEcUJ2aUM7O1lBQ05FLFVBL0NmTixZQStDOEIsV0FqRDlCMmlDLGFBaURlcmlDOztZQXFCWG02QixVQXBFSno2QixZQW9FQWdCLE1BcEVBaEI7a0JBb0VBZ0I7Z0JBQUFBOztnQkFwRUFoQixVQW9FSXk2Qjs7Z0JBcEVKejZCLFVBb0VJeTZCOztZQWErQixZQW5GbkNrSSxhQXNFSWxJO3dCQXBFSno2QixVQW9FSXk2Qjs7O2dCQUFKejVCOztnQkFwRUFoQixVQW9FSXk2Qjs7Z0JBcEVKejZCLFVBb0VJeTZCOztnQkFwRUp6NkIsVUFvRUl5NkI7O2dCQXBFSno2QixVQW9FSXk2Qjs7Z0JBcEVKejZCLFVBb0VJeTZCOztnQkFwRUp6NkIsVUFvRUl5NkI7O2dCQXBFSno2QixVQW9FSXk2Qjs7Z0JBcEVKejZCLFVBb0VJeTZCOztnQkFwRUp6NkIsVUFvRUl5NkI7O1lBWWtELElBQTdCQyxVQVp6QjE1QixRQVlzRCxPQWxGdEQyaEMsYUFzRUlsSTtZQVlrRCxPQUFBLHdDQUE3QkM7O2dCQWhGekIxNkIsVUFvRUl5NkI7d0JBcEVKejZCLFVBb0VJeTZCOzs7O1lBbkNjajZCLFVBakNsQlIsWUFpQ1FtQixRQWpDUm5CO1FBaUNvRCxPQXNCcEQwakMsZ0JBdEJRdmlDLE9BbkNSd2hDLGFBbUNrQm5pQzs7O0dBb0J3QjtZQUUxQ2tqQyxnQkFHQXZpQyxPQUFNckI7SUFBUyxLQUFmcUIsT0FDZSxPQURUckI7UUFFTTZqQyxVQUZaeGlDO0lBRXFCLFlBTHJCdWlDLGdCQUtZQyxTQUZON2pDO0dBRW1EO1lBMkJ6RDhpQyx1QkFFRWxrQyxLQUFJb0I7SUFBUyxjQUFicEIsbUJBQUlvQixjQUFKcEIsU0FBSW9CLFlBQUFBO0dBR3lCO1lBRy9CaWpDLHlCQUVFbmtDLE1BQUtrQjtJQUFTLGNBQWRsQixvQkFBQUEsV0FBS2tCLFNBQUFBLFFBQUFBO0dBRzBCO0dBTXJDOzs7WUFLSThqQyxhQUdBbGxDLEtBQUlvQjtJQUFTLFVBQWJwQixrQkFDaUIsY0FEYm9CO2FBQUpwQjtTQUVvQm1sQyxJQUZwQm5sQyxRQUVhNDZCLFFBRmI1NkI7S0FFNkIsZUFBaEI0NkIsT0FBT3VLLElBRmhCL2pDOztjQUFBQSw0QkFBQUE7U0FHc0I1QyxPQUh0QjRDLFVBR1E2NUIsVUFIWmo3QjtLQUdrQyxlQUF0Qmk3QixVQUFjejhCOztJQUNyQixNQUFBO0dBQW1CO1lBS3hCNG1DLGFBR0FwbEMsS0FBSUUsTUFBS2tCO0lBQXFCLFlBZjlCOGpDLGFBZUFsbEMsS0FBU29CO2NBQUxsQjtTQUdxQ3hCLG1CQUFMNEIsa0JBQXRCbVQsSUFIVnZUO0tBSUosV0FEb0NJLFdBQXRCbVQsSUFBMkIvVTs7U0FIckN3QjtTQUNrQ3pCLG1CQUFMMEI7S0FDakMsV0FEaUNBLFVBQUsxQjs7OztTQUlRRCxtQkFBWnlCO0tBQ2xDLFdBRGtDQSxVQUFZekI7O0lBRWYsTUFBQTtHQUFtQjtZQU05QzZtQyxZQU1GcE0sS0FBSTczQjtJQUFlLFdBSXJCa2tDLGdCQUpFck0sS0FBSTczQjs7S0FFRCxNQUFBO1FBRFUyN0I7SUFBdUIsT0FBdkJBO0dBQ1M7WUFFeEJ1SSxnQkFNRXJNLEtBNElNc007SUE1SU8sVUFBYnRNLGtCQW1IMkIsY0F5QnJCc007V0E1SU50TTs7aUJBNElNc00sNkJBQUFBO1FBMUkyQjtTQURaQyxhQTJJZkQ7U0EzSUhFLFdBREh4TTtTQUVpQyxRQVJuQ3FNLGdCQU9LRyxVQUFrQkQ7U0FDRXBrQztTQUFOMjdCO1FBQ25CLGVBRG1CQSxRQUFNMzdCOzs7O2lCQTBJakJta0MsNkJBQUFBO1FBdkkyQjtTQURQRyxlQXdJcEJIO1NBeElFSSxhQUpSMU07U0FLaUMsVUFYbkNxTSxnQkFVVUssWUFBa0JEO1NBQ0hwa0M7U0FBTmk4QjtRQUNuQixlQURtQkEsUUFBTWo4Qjs7OztPQUduQjtRQURPc2tDLGFBUFgzTTtRQU9NajVCLE1BUE5pNUI7UUFRSSxVQXBETmlNLGFBbURRbGxDLEtBcUlBdWxDO1FBbklhdGxDOzs7UUFDZ0I7U0FERDRsQztTQUNDLFVBaEJyQ1AsZ0JBYWFNLFlBRXVCQztTQUNUbEs7U0FBTm1LO1FBQ25CLGVBRm1CN2xDLE9BQ0E2bEMsUUFBTW5LOztPQUVHLE1BQUE7O09BR3hCO1FBRFlvSyxhQWRoQjlNO1FBY1c5NEIsUUFkWDg0QjtRQWVJLFVBM0ROaU0sYUEwRGEva0MsT0E4SExvbEM7UUE1SGFqbEM7OztRQUNnQjtTQUREMGxDO1NBQ0MsVUF2QnJDVixnQkFvQmtCUyxZQUVrQkM7U0FDVHBLO1NBQU5xSztRQUNuQixlQUZtQjNsQyxPQUNBMmxDLFFBQU1ySzs7T0FFRyxNQUFBOztPQUd4QjtRQURpQnNLLGFBckJyQmpOO1FBcUJlLzRCLE9BckJmKzRCO1FBcUJVeDRCLFFBckJWdzRCO1FBcUJHNzRCLFFBckJINjRCO1FBc0JJLFVBdERObU0sYUFxRFkza0MsT0FBS1AsTUF1SFRxbEM7UUFySGEza0M7OztRQUNnQjtTQURFdWxDO1NBQWI5bEM7U0FDVyxVQTlCckNpbEMsZ0JBMkJ1QlksWUFFZ0JDO1NBQ1p0SztTQUFOdUs7UUFDbkIsZUFKR2htQyxPQUVnQlEsT0FBS1AsUUFDTCtsQyxRQUFNdks7O09BRU0sTUFBQTs7T0FHM0I7UUFEbUJ3SyxhQTVCdkJwTjtRQTRCaUJ6NEIsU0E1QmpCeTRCO1FBNEJZbDRCLFFBNUJaazRCO1FBNEJLMTRCLFVBNUJMMDRCO1FBNkJJLFdBN0RObU0sYUE0RGNya0MsT0FBS1AsUUFnSFgra0M7UUE5R2F0a0M7OztRQUNnQjtTQURJcWxDO1NBQWYzbEM7U0FDVyxXQXJDckMya0MsZ0JBa0N5QmUsWUFFZ0JDO1NBQ2R4SztTQUFOeUs7UUFDbkIsZUFKS2htQyxTQUVjVSxPQUFLTixRQUNMNGxDLFFBQU16Szs7T0FFTSxNQUFBOztPQUczQjtRQUR1QjBLLGFBbkMzQnZOO1FBbUNxQm40QixTQW5DckJtNEI7UUFtQ2dCNTNCLFFBbkNoQjQzQjtRQW1DU3Y0QixVQW5DVHU0QjtRQW9DSSxXQXBFTm1NLGFBbUVrQi9qQyxPQUFLUCxRQXlHZnlrQztRQXZHYWhrQzs7O1FBQ2dCO1NBRFFrbEM7U0FBbkJDO1NBQ1csV0E1Q3JDcEIsZ0JBeUM2QmtCLFlBRWdCQztTQUNsQjFLO1NBQU40SztRQUNuQixlQUpTam1DLFNBRVVhLE9BQUttbEMsUUFDTEMsUUFBTTVLOztPQUVNLE1BQUE7O09BRzNCO1FBRG1CNkssYUExQ3ZCM047UUEwQ2lCNE4sU0ExQ2pCNU47UUEwQ1k2TixRQTFDWjdOO1FBMENLcDRCLFVBMUNMbzRCO1FBMkNJLFdBM0VObU0sYUEwRWMwQixPQUFLRCxRQWtHWHRCO1FBaEdhd0I7OztRQUNnQjtTQURJQztTQUFmQztTQUNXLFdBbkRyQzNCLGdCQWdEeUJzQixZQUVnQkk7U0FDZGhMO1NBQU5rTDtRQUNuQixlQUpLcm1DLFNBRWNrbUMsUUFBS0UsUUFDTEMsUUFBTWxMOztPQUVNLE1BQUE7O09BRzNCO1FBRG1CbUwsYUFqRHZCbE87UUFpRGlCbU8sU0FqRGpCbk87UUFpRFlvTyxTQWpEWnBPO1FBaURLajRCLFFBakRMaTRCO1FBa0RJLFdBbEZObU0sYUFpRmNpQyxRQUFLRCxRQTJGWDdCO1FBekZhK0I7OztRQUNnQjtTQURJQztTQUFmQztTQUNXLFdBMURyQ2xDLGdCQXVEeUI2QixZQUVnQkk7U0FDZHRMO1NBQU53TDtRQUNuQixlQUpLem1DLE9BRWNzbUMsUUFBS0UsUUFDTEMsUUFBTXhMOztPQUVNLE1BQUE7O09BRzNCO1FBREt5TCxhQXhEVHpPO1FBd0RJME8sU0F4REoxTztRQXlESSxXQXJHTmlNLGFBb0dNeUMsUUFvRkVwQztRQWxGYXFDOzs7UUFDZ0I7U0FESEM7U0FDRyxXQWpFckN2QyxnQkE4RFdvQyxZQUV1Qkc7U0FDUDNMO1NBQU40TDtRQUNuQixlQUZtQkYsUUFDQUUsUUFBTTVMOztPQUVHLE1BQUE7O09BR0s7UUFEN0I2TCxhQS9ESjlPO1FBZ0VpQyxXQXRFbkNxTSxnQkFxRU15QyxZQTZFRXhDO1FBNUVpQnBKO1FBQU42TDtPQUNuQixnQkFEbUJBLFNBQU03TDs7T0FJVTtRQURkOEwsY0FuRW5CaFA7UUFtRWMvM0IsTUFuRWQrM0I7UUFvRWlDLFdBMUVuQ3FNLGdCQXlFcUIyQyxhQXlFYjFDO1FBeEVpQmxKO1FBQU42TDtPQUNuQixnQkFGZ0JobkMsS0FDR2duQyxTQUFNN0w7O09BR1U7UUFEaEI4TCxjQXRFakJsUDtRQXNFWTkzQixNQXRFWjgzQjtRQXVFaUMsV0E3RW5DcU0sZ0JBNEVtQjZDLGFBc0VYNUM7UUFyRWlCaEo7UUFBTjZMO09BQ25CLGdCQUZjam5DLEtBQ0tpbkMsU0FBTTdMOztpQkFxRWpCZ0osNkJBQUFBOztTQWpFbUI4QyxlQWlFbkI5QztTQWpFT25KLFlBaUVQbUo7U0FsRXdCK0MsY0ExRTlCclA7U0EwRW1CcUQsY0ExRW5CckQ7U0EwRVVILFVBMUVWRztRQTRFQyxHQUFBLGtCQUZrQnFELGtCQUNORjtTQUNxQyxNQUFBO1FBQ2pCO1NBQUEsV0FuRm5Da0osZ0JBZ0ZnQ2dELGFBQ0xEO1NBRUY3TDtTQUFOK0w7UUFDbkIsZ0JBSll6UCxTQUNHc0QsV0FFSW1NLFNBQU0vTDs7OztpQkErRGpCK0ksNkJBQUFBO1FBM0Q4QjtTQURJaUQsZ0JBNERsQ2pEO1NBNURTa0QsYUE0RFRsRDtTQTdEMEJtRCxjQS9FaEN6UDtTQStFcUIwUCxjQS9FckIxUDtTQStFWUMsWUEvRVpEO1NBaUZvQyxXQUFVLHdDQUQvQndQO1FBQ2Q7VUFBQTtnQkFBVSx3Q0FGVUU7U0FHckIsTUFBQTtRQUVBO1NBQUE7V0ExRkZyRDthQXFGa0NvRDthQUtQLHdDQUplRjtTQUdqQi9MO1NBQU5tTTtRQUduQixnQkFQYzFQLFdBQ0d1UCxZQUdFRyxTQUFNbk07Ozs7aUJBeURqQjhJLDhCQUFBQTtRQW5EMkI7U0FEVnNELGdCQW9EakJ0RDtTQXBERnVELGNBeEZKN1A7U0F5RmlDLFdBL0ZuQ3FNLGdCQThGTXdELGFBQW1CRDtTQUNBbk07U0FBTnFNO1FBQ25CLGdCQURtQkEsU0FBTXJNOzs7O2lCQW1EakI2SSw4QkFBQUE7UUFoRDJCO1NBRFZ5RCxnQkFpRGpCekQ7U0FqREYwRCxjQTNGSmhRO1NBNEZpQyxXQWxHbkNxTSxnQkFpR00yRCxhQUFtQkQ7U0FDQXJNO1NBQU51TTtRQUNuQixnQkFEbUJBLFNBQU12TTs7OztPQUtVO1FBREh3TSxjQWhHOUJsUTtRQWdHY2IsaUJBaEdkYTtRQWlHaUMsV0F2R25DcU0sZ0JBc0dnQzZELGFBNEN4QjVEO1FBM0NpQjZEO1FBQU5DO09BQ25CLGdCQUZnQmpSLGdCQUNHaVIsU0FBTUQ7O1dBMkJWRSxjQTVIYnJRLFFBNEhGOEwsaUJBNUhFOUw7Z0JBNEhGOEw7UUFFbUM7b0JBRm5DQTtTQUN3QnhKO1NBQU56N0I7U0FDaUIsV0FwSW5Dd2xDLGdCQW1Ja0J4bEMsTUFlVnlsQztTQWRpQjVsQztTQUFOSTtTQUNnQixXQXJJbkN1bEMsZ0JBa0llZ0UsYUFFVTNwQztTQUNBNHBDO1NBQU5DO1FBQ25CLHdCQUZtQnpwQyxNQURLdzdCLFNBRUxpTyxPQUFNRDs7T0FHVTttQkFObkN4RTtRQUt3QjlIO1FBQU53TTtRQUNpQixXQXhJbkNuRSxnQkF1SWtCbUUsUUFXVmxFO1FBVmlCbUU7UUFBTkM7UUFDZ0IsV0F6SW5DckUsZ0JBa0llZ0UsYUFNVUk7UUFDQUU7UUFBTkM7T0FDbkIsd0JBRm1CRixRQURLMU0sU0FFTDRNLFNBQU1EOztpQkFTakJyRSw4QkFBQUE7UUFwQzJCO1NBRFJ1RSxnQkFxQ25CdkU7U0FyQ0R3RSxjQXZHTDlRO1NBd0dpQyxXQTlHbkNxTSxnQkE2R095RSxhQUFvQkQ7U0FDRkU7U0FBTkM7UUFDbkIsZ0JBRG1CQSxTQUFNRDs7OztpQkFvQ2pCekUsNkJBQUFBO1FBakMyQjtTQURzQjJFLGdCQWtDakQzRTtTQWxDNEI0RSxjQTFHbENsUjtTQTBHd0JqM0IsV0ExR3hCaTNCO1NBMEdhaDNCLFlBMUdiZzNCO1NBMkdpQyxXQWpIbkNxTSxnQkFnSG9DNkUsYUFBcUJEO1NBQ2hDRTtTQUFOQztRQUNuQixnQkFGZXBvQyxXQUFXRCxVQUNQcW9DLFNBQU1EOzs7O2lCQWlDakI3RSw2QkFBQUE7UUE5QjJCO1NBRFUrRSxnQkErQnJDL0U7U0EvQm1CZ0YsY0E3R3pCdFI7U0E2R2dCOTJCLFVBN0doQjgyQjtTQThHaUMsV0FwSG5DcU0sZ0JBbUgyQmlGLGFBQWtCRDtTQUNwQkU7U0FBTkM7UUFDbkIsZ0JBRmtCdG9DLFNBQ0Nzb0MsU0FBTUQ7Ozs7V0E4QnJCaHNDLE9BNUlGeTZCLFFBNElGMzJCLE1BNUlFMjJCO2lCQTRJRjMyQjtlQUFBQTs7V0FHc0MsT0EyQnRDb29DLHVCQTlCQXBvQyxLQUFJOUQsTUFBSSttQzs7V0FJOEIsT0EwQnRDbUYsdUJBOUJBcG9DLEtBQUk5RCxNQUFJK21DOztXQUs4QixPQXlCdENtRix1QkE5QkFwb0MsS0FBSTlELE1BQUkrbUM7O1dBTThCLE9Bd0J0Q21GLHVCQTlCQXBvQyxLQUFJOUQsTUFBSSttQzs7V0FPOEIsT0F1QnRDbUYsdUJBOUJBcG9DLEtBQUk5RCxNQUFJK21DOztXQVE4QixPQXNCdENtRix1QkE5QkFwb0MsS0FBSTlELE1BQUkrbUM7O1dBUzhCLE9BcUJ0Q21GLHVCQTlCQXBvQyxLQUFJOUQsTUFBSSttQzs7V0FVOEIsT0FvQnRDbUYsdUJBOUJBcG9DLEtBQUk5RCxNQUFJK21DOztlQWNxQm9GLGNBZDdCcm9DLFFBY29CNjJCLFlBZHBCNzJCO1dBZUEsT0FlQW9vQzt3QkFoQm9CdlIsV0FBU3dSLGNBZHpCbnNDLE1BQUkrbUM7O1dBa0JOO1lBRjZCcUYsY0FoQi9CdG9DO1lBZ0JzQjgyQixZQWhCdEI5MkI7WUFrQkUsT0FzQkZ1b0MsK0JBeEIrQkQsYUFoQjNCcHNDLE1BQUkrbUM7O1lBaUI0Q3VGO1lBQU5DO1lBQTNCQztXQUVuQixvQkFIc0I1UixXQUNINFIsY0FBMkJELFNBQU1EOztXQU5kLE9BbUJ0Q0osdUJBOUJBcG9DLEtBQUk5RCxNQUFJK21DO21CQVk4QixPQWtCdENtRix1QkE5QkFwb0MsS0FBSTlELE1BQUkrbUM7O2NBQVJqakM7O1VBQ3NDLE9BNkJ0Q29vQyx1QkE5QkFwb0MsS0FBSTlELE1BQUkrbUM7O1VBRThCLE9BNEJ0Q21GLHVCQTlCQXBvQyxLQUFJOUQsTUFBSSttQzs7b0JBQUFBLDhCQUFBQTtXQXlCNkI7WUFEakIwRixnQkF4QloxRjtZQXlCNkIsV0EzS3JDRCxnQkFrSkk5bUMsTUF3QmdCeXNDO1lBQ09DO1lBQU5DO1dBQ25CLG1CQURtQkEsU0FBTUQ7O1VBRXBCLE1BQUE7a0JBZCtCLE9BaUJ0Q1IsdUJBOUJBcG9DLEtBQUk5RCxNQUFJK21DOzs7SUF2QkgsTUFBQTtHQUFtQjtZQXFEeEJtRix1QkFLRXBvQyxLQUFJMjJCLEtBQUk3M0I7SUFDWjtLQUFtQyxRQXRMakNra0MsZ0JBcUxNck0sS0FBSTczQjtLQUNhRTtLQUFOeTdCO0lBQ25CLGdCQUZJejZCLEtBQ2V5NkIsUUFBTXo3QjtHQUN3QjtZQUcvQ3VwQywrQkFJQXpPLFdBQVVuRCxLQUFJNzNCO0lBQVMsVUFBdkJnN0I7S0EwRUEsY0F4UUFrSixnQkE4TFVyTSxLQUFJNzNCO1dBQWRnN0I7O2lCQUFjaDdCLDRCQUFBQTtRQUdaO1NBRjhCb2tDLGFBRGxCcGtDO1NBQ05ncUMsaUJBRFJoUDtTQUdFO1dBUEZ5TywrQkFLUU8sZ0JBREVuUyxLQUNzQnVNO1NBQ0l6STtTQUFqQnNPO1FBRW5CLGVBRm1CQSxtQkFBaUJ0Tzs7OztpQkFGdEIzN0IsNEJBQUFBO1FBT1o7U0FGa0Nza0MsZUFMdEJ0a0M7U0FLSmtxQyxtQkFMVmxQO1NBT0U7V0FYRnlPLCtCQVNVUyxrQkFMQXJTLEtBSzBCeU07U0FDQW5JO1NBQWpCZ087UUFFbkIsZUFGbUJBLG1CQUFpQmhPOzs7O2lCQU50Qm44Qiw0QkFBQUE7UUFXWjtTQUY0QnlrQyxlQVRoQnprQztTQVNQb3FDLG1CQVRQcFA7U0FXRTtXQWZGeU8sK0JBYU9XLGtCQVRHdlMsS0FTb0I0TTtTQUNNQztTQUFqQjJGO1FBRW5CLGVBRm1CQSxtQkFBaUIzRjs7OztpQkFWdEIxa0MsNEJBQUFBO1FBZVo7U0FGZ0M0a0MsZUFicEI1a0M7U0FhTHNxQyxtQkFiVHRQO1NBZUU7V0FuQkZ5TywrQkFpQlNhLGtCQWJDelMsS0Fhd0IrTTtTQUNFQztTQUFqQjBGO1FBRW5CLGVBRm1CQSxtQkFBaUIxRjs7OztpQkFkdEI3a0MsNEJBQUFBO1FBbUJaO1NBRndDK2tDLGVBakI1Qi9rQztTQWlCRHdxQyxtQkFqQmJ4UDtTQW1CRTtXQXZCRnlPLCtCQXFCYWUsa0JBakJIM1MsS0FpQmdDa047U0FDTkM7U0FBakJ5RjtRQUVuQixlQUZtQkEsbUJBQWlCekY7Ozs7aUJBbEJ0QmhsQyw0QkFBQUE7UUF1Qlo7U0FGZ0NrbEMsZUFyQnBCbGxDO1NBcUJMMHFDLG1CQXJCVDFQO1NBdUJFO1dBM0JGeU8sK0JBeUJTaUIsa0JBckJDN1MsS0FxQndCcU47U0FDRUM7U0FBakJ3RjtRQUVuQixlQUZtQkEsb0JBQWlCeEY7Ozs7aUJBdEJ0Qm5sQyw0QkFBQUE7UUEyQlo7U0FGZ0NxbEMsZUF6QnBCcmxDO1NBeUJMNHFDLG9CQXpCVDVQO1NBMkJFO1dBL0JGeU87YUE2QlNtQixtQkF6QkMvUyxLQXlCd0J3TjtTQUNFRTtTQUFqQnNGO1FBRW5CLGVBRm1CQSxvQkFBaUJ0Rjs7OztpQkExQnRCdmxDLDRCQUFBQTtRQStCWjtTQUY4QjRsQyxlQTdCbEI1bEM7U0E2Qk44cUMsb0JBN0JSOVA7U0ErQkU7V0FuQ0Z5TzthQWlDUXFCLG1CQTdCRWpULEtBNkJzQitOO1NBQ0lFO1NBQWpCaUY7UUFFbkIsZUFGbUJBLG9CQUFpQmpGOzs7O2lCQTlCdEI5bEMsNEJBQUFBOztTQW1EY21tQyxlQW5EZG5tQztTQW1EQ2dyQyxhQW5ERGhyQztTQWtEYWlyQyxvQkFsRDNCalE7U0FrRGVrUSxlQWxEZmxRO1FBb0RHLEdBQUEsa0JBRllrUSxtQkFDQUY7U0FDdUMsTUFBQTtRQUVwRDtTQUFBO1dBMURGdkI7YUFzRDJCd0IsbUJBbERqQnBULEtBbURrQnNPO1NBRVFFO1NBQWpCOEU7UUFFbkIsZUFKZUgsWUFFSUcsb0JBQWlCOUU7Ozs7aUJBckR0QnJtQyw0QkFBQUE7UUEyRHlCO1NBRkl5bUMsZUF6RDdCem1DO1NBeURnQm9yQyxlQXpEaEJwckM7U0F5REdxckMsYUF6REhyckM7U0F3RDZCc3JDLG9CQXhEM0N0UTtTQXdEOEJ1USxlQXhEOUJ2UTtTQXdEaUJ3USxlQXhEakJ4UTtTQTJEdUMsV0FBVSx3Q0FGaENxUTtRQUVkO1VBQUE7Z0JBQVUsd0NBSElHO1NBSVosTUFBQTtRQUNrQyxlQUFVLHdDQUpuQko7UUFJM0I7VUFBQTtnQkFBVSx3Q0FMaUJHO1NBTXpCLE1BQUE7UUFDWTtTQUFiclEsY0F6ZEo0RCxNQXZJSTFDLEtBMGxCYWlQLGFBQWFEO1NBT1gsVUF4a0JmL08sY0F1a0JBbkI7U0FDVStHO1NBQVBDO1FBQUFBO1FBQU9EO1FBSVo7U0FBQTtXQXhFRndIO2FBd0VtQyx3Q0FaUTZCO2FBeERqQ3pUO2FBeURpQzRPO1NBVVBDO1NBQWpCK0U7UUFHbkI7b0JBYmlCSixZQUFhRCxjQTFsQjFCaFAsS0FvbUJlcVA7Z0JBQWlCL0U7Ozs7aUJBbkV0QjFtQyw2QkFBQUE7UUFtQ1o7U0FGZ0NpbkMsZUFqQ3BCam5DO1NBaUNMMHJDLG9CQWpDVDFRO1NBbUNFO1dBdkNGeU87YUFxQ1NpQyxtQkFqQ0M3VCxLQWlDd0JvUDtTQUNFTDtTQUFqQitFO1FBRW5CLGdCQUZtQkEsb0JBQWlCL0U7Ozs7aUJBbEN0QjVtQyw2QkFBQUE7UUF1Q1o7U0FGZ0NvbkMsZ0JBckNwQnBuQztTQXFDTDRyQyxvQkFyQ1Q1UTtTQXVDRTtXQTNDRnlPO2FBeUNTbUMsbUJBckNDL1QsS0FxQ3dCdVA7U0FDRU47U0FBakIrRTtRQUVuQixnQkFGbUJBLG9CQUFpQi9FOzs7O2lCQXRDdEI5bUMsNkJBQUFBO1FBMkNaO1NBRmtDeW5DLGdCQXpDdEJ6bkM7U0F5Q0o4ckMsb0JBekNWOVE7U0EyQ0U7V0EvQ0Z5TzthQTZDVXFDLG1CQXpDQWpVLEtBeUMwQjRQO1NBQ0FUO1NBQWpCK0U7UUFFbkIsZ0JBRm1CQSxvQkFBaUIvRTs7OztpQkExQ3RCaG5DLDZCQUFBQTtRQStDWjtTQUZrRDRuQyxnQkE3Q3RDNW5DO1NBNkNJZ3NDLG9CQTdDbEJoUjtTQStDRTtXQW5ERnlPO2FBaURrQnVDLG1CQTdDUm5VLEtBNkMwQytQO1NBQ2hCVDtTQUFqQjhFO1FBRW5CLGdCQUZtQkEsb0JBQWlCOUU7Ozs7SUE2Qi9CLE1BQUE7R0FBbUI7WUEwQnhCK0UsT0FRRXJVLEtBQUk3M0I7SUFDbUIsV0Evb0JyQm84QixLQThvQkVwOEI7SUFDUSxPQXRUVmlrQyxZQXFURnBNLEtBQ1k7R0FBd0I7WUFNdENzVSxZQUFZM1MsT0FBTTdCLE9BQU03M0I7SUFDMUI7S0FBSTRGLDRCQURzQjVGO0tBRWYrNUIsZUFGU2xDLFFBQU42QjtLQUVWNFMsVUFDRix1QkFIa0J6VTtPQUVoQnlVLFdBREExbUMsS0FhaUIsT0FkSzVGO0lBZWQ7a0JBYkQrNUI7S0FhTDF5QixNQUFNLDRCQWJSaWxDO0lBY0YsT0FkU3ZTOztPQWVFLDhCQWpCYS81QixRQWVwQnFILFFBZEZ6Qjs7T0FpQlMsOEJBbEJhNUYsUUFlcEJxSCxLQWJGaWxDLFVBREExbUMsU0FBQUE7Ozs7Y0FBQUE7UUFrQnlEO2lCQUFsQyxnQkFuQkQ1RjtvQkFtQmtCLGdCQW5CbEJBLGtCQW1CbUMsZ0JBbkJuQ0E7O1FBb0J0QixlQUxFcUgsUUFLYyxnQkFwQk1ySDtRQXFCdEI7O1VBckJzQkE7O1VBZXBCcUg7V0FiRmlsQyxVQURBMW1DO1VBQUFBOzs7O2NBQUFBLGNBcUJzQixnQkF0QkE1RjtRQXNCbUMsV0FBakIsZ0JBdEJsQkEsa0JBc0JtQyxnQkF0Qm5DQTs7UUF1QnRCLGVBUkVxSCxRQVFjLGdCQXZCTXJIO1FBd0J0Qjs7VUF4QnNCQTs7VUFlcEJxSDtXQWJGaWxDLFVBREExbUM7VUFBQUE7OztPQXlCQSw4QkExQnNCNUYsUUFlcEJxSCxLQWJGaWxDLFVBREExbUMsU0FBQUE7O0lBMkJGLE9BQUEsNkJBYkl5QjtHQWFzQjtZQUcxQmtsQyxrQkFBa0J2dEMsTUFBS2dCO0lBQ3pCO0tBQUliLFNBQU8sdUJBRFNIO0tBRWhCNEcsTUFBSixzQkFGeUI1RjtLQUl2QmtGLElBREksZ0JBSG1CbEY7Ozs7O2NBSXZCa0Y7aUJBQUFBO2dCQUFBQTtlQUFBQTs7O2NBRkVVLE9BREF6Ryx1QkFDQXlHO1lBT3NEO3NCQUFqQixnQkFUaEI1Rjt3QkFTaUMsZ0JBVGpDQTs7WUFVYixJQUFOd3NDLFFBQU0sNEJBVFJydEM7WUFVRixlQURJcXRDLFVBQ1ksZ0JBWE94c0M7WUFZdkI7O2NBWnVCQTs7Y0FVbkJ3c0M7ZUFURnJ0QyxTQUNBeUc7Y0FBQUE7WUFVRixPQUFBLDZCQUZJNG1DOzs7Ozs7Ozs7Ozs7VUFSRjVtQyxRQURBekc7T0FJUSxJQUFOaWdCLFFBQU0sNEJBSlJqZ0I7T0FLRixlQURJaWdCLFVBREpsYTtPQUdBOztTQVB1QmxGOztTQUtuQm9mO1VBSkZqZ0IsU0FDQXlHO1NBQUFBO09BS0YsT0FBQSw2QkFGSXdaOztlQURKbGEsVUFBQUEscUNBQUFBOztRQUZFVSxNQURBekc7TUFjUSxJQUFOa0ksTUFBTSw0QkFkUmxJO01BZUYsOEJBaEJ1QmEsUUFlbkJxSCxLQWRGbEksU0FDQXlHLFNBQUFBO01BY0YsT0FBQSw2QkFESXlCOzs7SUFJSixPQW5CdUJySDtHQW1CcEI7WUFHSHlzQyxzQkFBc0J6c0M7SUFDeEI7S0FBSXE2QixRQUFNLDhCQURjcjZCO0tBRXBCbUUsSUFBSixzQkFESWsyQjtLQUVBaHpCLE1BQU0sNEJBRE5sRDtJQUVKLGlCQUhJazJCLFVBRUFoekIsUUFEQWxEO0lBRUosT0FBQSw2QkFESWtEO0dBRXNCO1lBcUN4QnFsQyxnQkFBZ0I1c0MsT0FBTWQ7SUFDdEI7S0FBSUcsU0FBTyx1QkFEV0g7S0FFbEIydEMsT0EvbENKcFQsbUJBNmxDZ0J6NUI7S0FHWmtILE1BeG9DSjR4QjtJQWNBTSxnQkEwbkNJbHlCO0lBNThCSm16QixrQkE0OEJJbnpCLEtBSFlsSDtJQXZuQ2hCbzVCLGdCQTBuQ0lseUI7SUFwbkNKbXlCLGtCQW9uQ0lueUIsS0FJa0IsMkJBTmxCN0g7SUF4bkNKKzVCLGdCQTBuQ0lseUIsS0FEQTJsQztJQU1KLE9BbG5DQXRULGdCQTZtQ0lyeUI7R0FNZTtZQUVuQjRsQyxrQkFBa0IxdEMsT0FBTW9EO0lBQzFCLFFBRG9CcEQsT0F1QmIsT0F2Qm1Cb0Q7SUFJZCxJQUFKSix5Q0FKa0JJLFlBSWQ7O1NBQ1IrQjs7cUNBTHNCL0IsR0FLdEIrQixpQkFESW5DO01BQ0osV0FBQW1DO2tCQUFBQTtVQUFBQTs7O0lBT1E7S0FUTndvQyxTQUNFM3FDO0tBUUY4RTtPQUFNOytCQVpjMUUsT0FHcEJ1cUM7S0FVQS8wQjthQUNBZzFCLElBQUk1bkMsR0FBSSxlQUZSOEIsS0FDQThRLFFBQ0k1UyxJQURKNFMsaUJBQ3NDO0lBQy9CO0tBQVB6SyxhQVpBdy9CO2tDQUhvQnZxQztLQWViOztTQUNYOEI7O1VBRUljLDJCQWxCb0I1QyxHQWdCeEI4QjthQUVJYztPQUpBNG5DLElBSUE1bkM7b0JBSEFtSSxTQURBeS9CLFNBQ0F6L0IsY0FBQUEsZUFEQXkvQixJQUlBNW5DO01BRkosV0FBQWQ7a0JBQUFBO1VBQUFBOzs7SUFNQSxPQUFBLDZCQVZJNEM7R0FXRTtZQUdOK2xDLFlBQVk3dEMsT0FBTWdEO0lBQ3BCLE9BRGNoRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFDVSxPQTNCdEIwdEMsa0JBMEJZMXRDLE9BQ1Usc0JBREpnRDtHQUMwQztZQUM1RDhxQyxjQUFjOXRDLE9BQU1nRDtJQUN0QixPQURnQmhEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUNRLE9BN0J0QjB0QyxrQkE0QmMxdEMsT0FDUSxzQkFERmdEO0dBQzJDO1lBQy9EK3FDLGtCQUFrQi90QyxPQUFNZ0Q7SUFDMUIsT0FEb0JoRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFDSSxPQS9CdEIwdEMsa0JBOEJrQjF0QyxPQUNJLHNCQURFZ0Q7R0FDMkM7WUFDbkVnckMsY0FBY2h1QyxPQUFNZ0Q7SUFDdEIsT0FEZ0JoRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFDUSxPQWpDdEIwdEMsa0JBZ0NjMXRDLE9BQ1EsZ0NBREZnRDtHQUMyQztZQUkvRGlyQyxjQUFjcnRDLE9BQU1kLE1BQUt5RDthQUN2QjJxQztLQUNGLE9BRmN0dEM7O1lBRVZ1dEM7O1lBQUFBO29CQUFBQTs7S0FLSixPQUFBLGdDQVB5QjVxQyxHQUFMekQsTUFFaEJxdUM7SUFLMEI7SUFTaEMsU0FBSUMsaUJBQWlCdHRDO0tBQVksWUFBQSw0QkFoQk55Qzs7ZUFBQUE7c0NBZ0JOekM7SUFHRjtXQW5CSEY7O09BeUJKO1FBakJVRSxNQWlCVixrQkF6RVYwc0MsZ0JBZ0RjNXNDLE9BQU1kLE9BQUt5RDtRQVNyQm1ELDRCQURnQjVGO1FBRUhvRTtPQUNmO1dBRGVBLE1BRGJ3Qjs7O1NBR00sV0FBQSxnQkFKVTVGLEtBRUhvRTs7Ozs7OztVQUlOLElBSk1DLE1BQUFELFdBQUFBLElBQUFDOzs7OztRQUtkLGtCQVBpQnJFLE1BT1EsdUJBUFJBO1FBa0JILE9BVmZzdEM7OztPQUtTLE9BcEJURjs7T0FxQmdDLFdBckJoQ0EsUUFxQmdDLE9BQUE7O09BQ0wsT0FQM0JFLGlCQWZBRjtlQTJCRixPQUFBLGtCQTVFQVYsZ0JBZ0RjNXNDLE9BQU1kLE9BQUt5RDs7R0E0QmtCO1lBVzNDOHFDLGdCQUFnQnJ0QztJQUNSLElBQU44RyxNQTd0Q0Y0eEI7SUE4T0k0QixhQSsrQkZ4ekIsS0FEYzlHO0lBRWxCLE9BbnNDRW01QixnQkFrc0NFcnlCO0dBRWU7WUFZYndtQyx1QkFHSnplLEdBQUV0akIsS0FBSXNzQjtJQUFPLElBeU5YL0IsTUF6TkZqSCxHQXlOSXJqQixRQXpORkQsS0FBSW93QixRQUFBOUQ7SUFBTztlQUFQOEQsb0JBdUZOLE9BQUEsV0FrSUU3RixLQUFFdHFCO1lBek5FbXdCOztZQUNEditCLE9BREN1K0I7UUFFTixnQkFBSTMyQjtTQUNZLElBQVZ1b0MsY0FzTkYvaEMsT0F2TkF4RztTQUVGLE9BUEV3b0MsWUE0TkYxWCxLQXROSXlYLFNBRkRud0MsTUFHdUI7O1lBQ2xCQyxTQUxKcytCO1FBTU4sZ0JBQUkzMkI7U0FDRjtVQWhDQWxGLE1BQU0sMkJBK0JKa0Y7VUE5QkZmLElBQUosc0JBREluRTtVQUVBcUgsTUFBTSw0QkFETmxEO1NBRUosaUJBSEluRSxRQUVBcUgsUUFEQWxEO1NBK0JjLElBQVZzcEMsY0FrTkYvaEMsT0EvT04sNkJBRElyRTtTQStCQSxPQVhFcW1DLFlBNE5GMVgsS0FsTkl5WCxTQUZJbHdDLFFBR2tCOztZQUNmQyxTQVRQcStCLFVBU0UvOEIsTUFURis4QjtRQVVzQixPQTBJNUI4UjtpQkFxRUUzWCxLQUFFdHFCLE9BaE5TbE8sUUFBTHNCLGNBQ3lCa0IsS0FBTyxPQUFQQSxJQUFVOztZQUN6QnZDLFNBWFpvK0IsVUFXTzk4QixRQVhQODhCO1FBWU4sT0F3SUE4UixhQXFFRTNYLEtBQUV0cUIsT0E5TWNqTyxRQUFMc0IsT0E5SmIwdEM7OztTQWdLdUIvdUMsU0FiakJtK0I7U0FhVzc4QixPQWJYNjhCO1NBYU01OEIsUUFiTjQ4QjtTQWFEMzhCLFFBYkMyOEI7UUFjTixPQTBKQStSO2lCQWlERTVYLEtBQUV0cUIsT0E1TW1CaE8sUUFBWHVCLE9BQUtELE1BakZqQit0QyxhQWlGSzd0Qzs7O1NBRW9CdkIsU0FmbkJrK0I7U0FlYTE4QixTQWZiMDhCO1NBZVF6OEIsUUFmUnk4QjtTQWVDeDhCLFVBZkR3OEI7UUFnQk4sT0F3SkErUjtpQkFpREU1WCxLQUFFdHFCLE9BMU1xQi9OLFFBQVh5QixPQUFLRCxRQWpGbkI2dEMsZUFpRk8zdEM7OztTQUVzQnpCLFNBakJ2QmkrQjtTQWlCaUJ2OEIsU0FqQmpCdThCO1NBaUJZdDhCLFFBakJaczhCO1NBaUJLcjhCLFVBakJMcThCO1FBa0JOLE9Bc0pBK1I7aUJBaURFNVg7aUJBQUV0cUI7aUJBeE15QjlOO2lCQUFYMkI7aUJBQUtEO2lCQWpGdkIydEM7aUJBaUZXenRDOzs7U0FFYzNCLFNBbkJuQmcrQjtTQW1CYXA4QixTQW5CYm84QjtTQW1CUW44QixRQW5CUm04QjtTQW1CQ2w4QixVQW5CRGs4QjtRQW9CTixPQW9KQStSO2lCQWlERTVYLEtBQUV0cUIsT0F0TXFCN04sUUFBWDZCLE9BQUtELFFBakZuQnl0QyxlQWlGT3Z0Qzs7O1NBc01DN0IsU0F6TkYrOUI7U0F5TlVqOEIsU0F6TlZpOEI7U0F5Tk1oOEIsUUF6Tk5nOEI7U0F5TmUvN0IsUUF6TmYrN0I7a0JBeU5NaDhCO21CQUFJRDtpQkFBQUE7O29CQVVaMlMsR0FBRTlQO29CQUNNLElBQU56QyxNQTdSTm10QyxjQWtScUJydEMsT0FVakJ5UyxHQUFFOVA7b0JBRUosT0F4T0VpckMsWUE0TkYxWCxTQUFFdHFCLE9BV0UxTCxNQVhFbEM7bUJBWXdDOztvQkFWNUMyRTtvQkFDUTtxQkFBTnpDO3VCQXJSTm10QyxjQWtScUJydEMsT0EzK0NyQjY0Qix3QkEyK0NxQjc0QixRQUVqQjJDO29CQUVGLE9BaE9FaXJDLFlBNE5GMVgsU0FBRXRxQixPQUdFMUwsTUFIRWxDO21CQUl3QzthQUN0QnlVLElBTFYzUztTQU1oQixnQkFBSTZDO1VBQ1EsSUFBTnpDLE1BelJObXRDLGNBa1JxQnJ0QyxPQUtLeVMsR0FDdEI5UDtVQUVGLE9BcE9FaXJDLFlBNE5GMVgsU0FBRXRxQixPQU9FMUwsTUFQRWxDLFFBUXdDOztpQkFScEMrQjthQWtCUW9rQyxJQWxCUnBrQyxVQWtCQzY1QixRQWxCRDc1QjttQkFBSUQ7aUJBQUFBOztvQkF1QloyUyxHQUFFOVA7b0JBQ00sSUFBTnpDLE1BemJOcXNDLFlBbWJhM1MsT0FBT3VLLEdBcFNwQmtKLGNBa1JxQnJ0QyxPQXVCakJ5UyxHQUFFOVA7b0JBRUosT0FyUEVpckMsWUE0TkYxWCxTQUFFdHFCLE9Bd0JFMUwsTUF4QkVsQzttQkF5QndDOztvQkFYNUMyRTtvQkFDRjtxQkFBSXpDO3VCQWpTTm10QyxjQWtScUJydEMsT0EzK0NyQjY0Qix3QkEyK0NxQjc0QixRQWNqQjJDO3FCQUVFNDNCLFFBamJOZ1MsWUFtYmEzUyxPQUFPdUssR0FIZGprQztvQkFFSixPQTdPRTB0QyxZQTRORjFYLFNBQUV0cUIsT0FnQkUydUIsUUFoQkV2OEI7bUJBaUJ5QzthQUNYK3ZDLE1BbEJ0Qmp1QztTQW1CaEIsZ0JBQUk2QztVQUNRLElBQU56QyxNQXJiTnFzQyxZQW1iYTNTLE9BQU91SyxHQXBTcEJrSixjQWtScUJydEMsT0FrQmlCK3RDLEtBQ2xDcHJDO1VBRUYsT0FqUEVpckMsWUE0TkYxWCxTQUFFdHFCLE9Bb0JFMUwsTUFwQkVsQyxRQXFCd0M7O1lBVXBDaThCLFVBL0JBbDZCO2tCQUFJRDtnQkFBQUE7O21CQW9DWnFrQyxHQUFFMXhCLEdBQUU5UDttQkFDSTtvQkFBTnpDLE1BdGNOcXNDLFlBZ2NZdFMsU0FLUmtLLEdBdFRKa0osY0FrUnFCcnRDLE9Bb0NmeVMsR0FBRTlQO21CQUVOLE9BbFFFaXJDLFlBNE5GMVgsU0FBRXRxQixPQXFDRTFMLE1BckNFbEM7a0JBc0N3Qzs7bUJBWDVDbW1DLEdBQUV4aEM7bUJBQ0o7b0JBQUl6QztzQkE5U05tdEMsY0FrUnFCcnRDLE9BMytDckI2NEIsd0JBMitDcUI3NEIsUUEyQmYyQztvQkFFQTQzQixRQTliTmdTLFlBZ2NZdFMsU0FKUmtLLEdBQ0Vqa0M7bUJBRUosT0ExUEUwdEMsWUE0TkYxWCxTQUFFdHFCLE9BNkJFMnVCLFFBN0JFdjhCO2tCQThCeUM7WUFDaEJnd0MsTUEvQmpCbHVDO1FBZ0NoQixnQkFBSXFrQyxHQUFFeGhDO1NBQ00sSUFBTnpDLE1BbGNOcXNDLFlBZ2NZdFMsU0FDUmtLLEdBbFRKa0osY0FrUnFCcnRDLE9BK0JZZ3VDLEtBQzNCcnJDO1NBRUosT0E5UEVpckMsWUE0TkYxWCxTQUFFdHFCLE9BaUNFMUwsTUFqQ0VsQyxRQWtDd0M7O1lBcE9yQ0UsU0F2Qkw2OUIsVUF1QkE5N0IsUUF2QkE4N0I7UUF3Qk4sT0E0SEE4UixhQXFFRTNYLEtBQUV0cUIsT0FsTU8xTixRQUFMK0I7O1FBbUJRO1NBMUNSN0IsU0FBQTI5QjtTQUFKbHdCLFlBeU5FRDtTQUFBQSxRQXpORkM7U0FBSWt3QixRQUFBMzlCOzs7UUE2Q1E7U0E3Q1JDLFVBQUEwOUI7U0E0Q1U3N0IsTUE1Q1Y2N0I7U0FBSmpjLFlBeU5FbFUsT0E3S1kxTDtTQTZLWjBMLFFBek5Ga1U7U0FBSWljLFFBQUExOUI7OztRQStDUTtTQS9DUkMsVUFBQXk5QjtTQThDUTU3QixNQTlDUjQ3QjtTQUFKa1MsWUF5TkVyaUMsT0EzS1V6TDtTQTJLVnlMLFFBek5GcWlDO1NBQUlsUyxRQUFBejlCOzs7UUFrREc7U0FEaUJDLFVBakRwQnc5QjtTQWlEU1gsWUFqRFRXO1NBa0RGOTlCLEtBcEVKd3ZDLGdCQW1FZXJTO1FBRWYsZ0JBQUtsN0I7U0FDSCxPQXZERTB0QyxZQTRORjFYLFNBQUV0cUIsT0F2S0EzTixLQURzQk0sU0FJc0I7O1lBQ3hCQyxVQXREbEJ1OUIsVUFzRFczN0IsUUF0RFgyN0I7UUF1RE47U0FBQSxJQUFhOUQsZ0JBQ0MsT0EvUWRxVSxPQThRYXJVLEtBREk3M0I7U0FFZixPQTNERXd0QztrQkE0TkYxWDtrQkFBRXRxQjtrQkFqS0YsOENBRnNCcE4sVUFFYzs7WUEvQmhDZ0MsVUF6QkF1N0I7UUEwQk4sZ0JBQUl2NkIsR0FBRW1CO1NBQUssT0E3QlBpckM7a0JBNE5GMVg7c0JBQUV0cUIsZ0JBL0wwQ1MsR0FBSyxrQkFBL0M3SyxHQUEwQzZLLEdBQXhDMUosR0FBa0Q7a0JBRGxEbkMsU0FDeUQ7O1lBQ3pEQyxVQTNCQXM3QjtRQTRCTixnQkFBSXY2QixHQUFLLE9BL0JMb3NDLFlBNE5GMVgsU0FBRXRxQixPQTdMQXBLLElBREVmLFNBQzBDOztRQWdEbEM7U0E1RVJDLFVBQUFxN0I7U0EyRVVwN0IsYUEzRVZvN0I7U0FBSm1TLFlBeU5FdGlDLE9BOUlZakw7U0E4SVppTCxRQXpORnNpQztTQUFJblMsUUFBQXI3Qjs7O21CQUFBcTdCOzthQTZFdUNuN0IsVUE3RXZDbTdCLFVBQUFRO2FBeU5GNXdCLE1BQUFDLE9BQUZ1cUIsTUFBQUQsS0E1STJDMTRCLE9BQUFvRDtrQkE3RTdDcXVCLEVBOEVPa2YsTUFDTCxPQWxGRVAsWUE0TkZ6WCxTQUFFeHFCLFNBM0lHd2lDLFFBRHNDM3dDLE1BRXFCO2FBMEloRTA0QixNQXpORmpILEdBeU5JcmpCLFdBek5FbXdCLFFBQUFROzs7YUFpRnVDejdCLFVBakZ2Q2k3QixVQUFBK0k7YUF5TkZuNUIsTUFBQUMsT0FBRnVxQixNQUFBRCxLQXhJMkMxNEIsT0FBQXNEO2tCQWpGN0NtdUIsRUFrRk9rZixNQUNMLE9BdEZFUCxZQTRORnpYLFNBQUV4cUIsU0F2SUd3aUMsUUFEc0Mzd0MsTUFFcUI7YUFzSWhFMDRCLE1Bek5GakgsR0F5TklyakIsV0F6TkVtd0IsUUFBQStJOzs7O1FBd0NOLE1BQUE7O1FBbUJjO1NBRE8vakMsVUExRGZnN0I7U0EyREY0UixjQThKQS9oQztRQTdKSix1QkFBUyxPQS9ETGdpQyxZQTRORjFYLEtBOUpFeVgsU0FEaUI1c0MsU0FFYzs7WUFDZEcsVUE3RGY2NkI7UUFpRU4sZ0JBQUkzNUI7U0FDWSxJQUFWdXJDLGNBdUpGL2hDLE9BdkprQyx5QkFEbEN4SjtTQUVGLE9BdEVFd3JDLFlBNE5GMVgsS0F2Skl5WCxTQUxlenNDLFNBTU87O1lBQ2JFLFVBcEVUMjZCO1FBcUVOLGdCQUFJMzJCO1NBQ1ksSUFBVnVvQyxjQW1KRi9oQyxPQXBKQXhHO1NBRUYsT0ExRUV3b0MsWUE0TkYxWCxLQW5KSXlYLFNBRlN2c0MsU0FHYTs7WUFDUkMsVUF4RWQwNkIsVUF3RVN6NkIsTUF4RVR5NkI7UUF5RU47U0FBQSxPQUFBO2tCQWtCQXFTLDBCQThIRWxZLEtBQUV0cUIsT0FqSld0SyxLQUFLRDs7UUFDcEIsT0FrQkErc0MsZ0NBOEhFbFksS0FBRXRxQixPQWpKV3RLLEtBQUtEOztRQTFDUztTQURYRSxVQTdCWnc2QjtTQTZCU3Y2QixJQTdCVHU2QjtTQTZCRXQ2QixRQTdCRnM2QjtTQThCdUIsT0FBQSxXQURkdjZCO1FBQ2M7U0FBQSxPQUFBO2tCQWtPN0I2c0MsbUJBdkNFblksS0FBRXRxQixPQTVMY3JLLFNBQVZFOztRQUNxQixPQWtPN0I0c0MseUJBdkNFblksS0FBRXRxQixPQTVMY3JLLFNBQVZFOzs7R0EwREg7WUExRkRtc0MsWUFHSjNlLEdBQUV0akIsS0FBSXNzQjtJLHVCQUhGeVYsaUJBR0p6ZSxHQUFFdGpCLEtBQUlzc0I7O1lBMkZObVcsOEJBSUFuZixHQUFFdGpCLEtBQUlySyxLQUFJMjJCO0lBQU8sVUFBWDMyQjtZQUFBQTs7UUFDNkI7U0FBQSxPQUFBLHVCQTZDbkNndEMsc0JBOUNBcmYsR0FBRXRqQixLQUFRc3NCOztRQUN5QixPQTZDbkNxVyw0QkE5Q0FyZixHQUFFdGpCLEtBQVFzc0I7O1FBRXlCO1NBQUEsT0FBQSx1QkE0Q25DcVcsc0JBOUNBcmYsR0FBRXRqQixLQUFRc3NCOztRQUV5QixPQTRDbkNxVyw0QkE5Q0FyZixHQUFFdGpCLEtBQVFzc0I7O1FBYXlCLE1BQUE7O1FBR0E7U0FBQSxPQUFBLHVCQThCbkNxVyxzQkE5Q0FyZixHQUFFdGpCLEtBQVFzc0I7O1FBZ0J5QixPQThCbkNxVyw0QkE5Q0FyZixHQUFFdGpCLEtBQVFzc0I7O1dBQUozMkI7O09BRzZCO1FBQUEsT0FBQSx1QkEyQ25DZ3RDLHNCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7T0FHeUIsT0EyQ25DcVcsNEJBOUNBcmYsR0FBRXRqQixLQUFRc3NCOztPQUl5QjtRQUFBLE9BQUEsdUJBMENuQ3FXLHNCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7T0FJeUIsT0EwQ25DcVcsNEJBOUNBcmYsR0FBRXRqQixLQUFRc3NCOztPQUt5QjtRQUFBLE9BQUEsdUJBeUNuQ3FXLHNCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7T0FLeUIsT0F5Q25DcVcsNEJBOUNBcmYsR0FBRXRqQixLQUFRc3NCOztPQU15QjtRQUFBLE9BQUEsdUJBd0NuQ3FXLHNCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7T0FNeUIsT0F3Q25DcVcsNEJBOUNBcmYsR0FBRXRqQixLQUFRc3NCOztPQU95QjtRQUFBLE9BQUEsdUJBdUNuQ3FXLHNCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7T0FPeUIsT0F1Q25DcVcsNEJBOUNBcmYsR0FBRXRqQixLQUFRc3NCOztPQVF5QjtRQUFBLE9BQUEsdUJBc0NuQ3FXLHNCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7T0FReUIsT0FzQ25DcVcsNEJBOUNBcmYsR0FBRXRqQixLQUFRc3NCOztPQVN5QjtRQUFBLE9BQUEsdUJBcUNuQ3FXLHNCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7T0FTeUIsT0FxQ25DcVcsNEJBOUNBcmYsR0FBRXRqQixLQUFRc3NCOztPQVV5QjtRQUFBLE9BQUEsdUJBb0NuQ3FXLHNCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7T0FVeUIsT0FvQ25DcVcsNkJBOUNBcmYsR0FBRXRqQixLQUFRc3NCOztPQVd5QjtRQUFBLE9BQUEsdUJBbUNuQ3FXLHNCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7T0FXeUIsT0FtQ25DcVcsNkJBOUNBcmYsR0FBRXRqQixLQUFRc3NCOztXQVllNzNCLFFBWm5Ca0I7T0FZNkI7UUFBQSxPQUFBO2lCQVFuQ2l0Qyx1QkFwQkF0ZixHQUFFdGpCLEtBWXVCdkwsT0FaZjYzQjs7T0FZeUIsT0FRbkNzVyw4QkFwQkF0ZixHQUFFdGpCLEtBWXVCdkwsT0FaZjYzQjs7T0FjeUI7UUFBQSxPQUFBLHVCQWdDbkNxVyxzQkE5Q0FyZixHQUFFdGpCLEtBQVFzc0I7O09BY3lCLE9BZ0NuQ3FXLDZCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7T0FleUI7UUFBQSxPQUFBLHVCQStCbkNxVyxzQkE5Q0FyZixHQUFFdGpCLEtBQVFzc0I7O09BZXlCLE9BK0JuQ3FXLDZCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7R0FnQm1EO1lBcEI3RHVXLG1CQUlBdmYsR0FBRXRqQixLQUFJckssS0FBSTIyQjtJLHVCQUpWbVcsd0JBSUFuZixHQUFFdGpCLEtBQUlySyxLQUFJMjJCOztZQW9CVnNXLDJCQUlBdGYsR0FBRXRqQixLQUFJdkwsT0FBTTYzQjtJQUFPLFVBQWI3M0I7WUFBQUE7O1lBQ0U1QyxPQURGNEM7UUFDcUIsdUJBQVMsT0FMcENxdUMsZ0JBSUF4ZixHQUFFdGpCLEtBQ01uTyxNQURJeTZCLEtBQ3NEOztZQUN4RHg2QixTQUZKMkM7UUFFcUIsdUJBQVMsT0FOcENxdUMsZ0JBSUF4ZixHQUFFdGpCLEtBRVFsTyxRQUZFdzZCLEtBRXNEOztZQUMzRHY2QixTQUhEMEM7UUFHcUIsdUJBQVMsT0FQcENxdUMsZ0JBSUF4ZixHQUFFdGpCLEtBR0tqTyxRQUhLdTZCLEtBR3NEOztZQUN6RHQ2QixTQUpIeUM7UUFJcUIsdUJBQVMsT0FScENxdUMsZ0JBSUF4ZixHQUFFdGpCLEtBSU9oTyxRQUpHczZCLEtBSXNEOztZQUNyRHI2QixTQUxQd0M7UUFLcUIsdUJBQVMsT0FUcENxdUMsZ0JBSUF4ZixHQUFFdGpCLEtBS1cvTixRQUxEcTZCLEtBS3NEOztZQUN6RHA2QixTQU5IdUM7UUFNcUIsdUJBQVMsT0FWcENxdUMsZ0JBSUF4ZixHQUFFdGpCLEtBTU85TixRQU5HbzZCLEtBTXNEOztZQUN6RG42QixTQVBIc0M7UUFPcUIsdUJBQVMsT0FYcENxdUMsZ0JBSUF4ZixHQUFFdGpCLEtBT083TixRQVBHbTZCLEtBT3NEOztZQUMxRGw2QixTQVJGcUM7UUFRcUIsdUJBQVMsT0FacENxdUMsZ0JBSUF4ZixHQUFFdGpCLEtBUU01TixRQVJJazZCLEtBUXNEOztZQU1oRGo2QixTQWRab0M7UUFjcUIsdUJBQVMsT0FsQnBDcXVDLGdCQUlBeGYsR0FBRXRqQixLQWNnQjNOLFFBZE5pNkIsS0Fjc0Q7O1FBR3pEO1NBRGtCLzVCLFNBaEJyQmtDO1NBZ0JnQnhCLE1BaEJoQndCO1NBZ0JXakMsTUFoQlhpQztTQWlCRm5DLEtBOTFCSmloQyxNQXZJSTFDLEtBbytCYXIrQixNQUFLUztRQUV0QjtTQUFTLE9BdEJUNnZDO2tCQUlBeGY7a0JBQUV0akI7a0JBa0I2Qix3Q0FEM0IxTixJQUR1QkM7a0JBaEJmKzVCLEtBa0I2Qzs7WUFUaEQ3NUIsU0FUSGdDO1FBU3FCO1NBQVcsT0FidENxdUMsZ0JBSUF4ZixHQUFFdGpCLEtBU092TixRQVRHNjVCLEtBU3dEOztZQUMzRDU1QixVQVZIK0I7UUFVcUIsdUJBQVMsT0FkcENxdUMsZ0JBSUF4ZixHQUFFdGpCLEtBVU90TixTQVZHNDVCLEtBVXNEOztZQUMzRDM1QixVQVhEOEI7UUFXcUIsdUJBQVMsT0FmcENxdUMsZ0JBSUF4ZixHQUFFdGpCLEtBV0tyTixTQVhLMjVCLEtBV3NEOztRQUN2QyxNQUFBOztRQUNBLE1BQUE7O0lBRUE7S0FBQSxPQUFBLHVCQU8zQnFXLHNCQXRCQXJmLEdBQUV0akIsS0FBVXNzQjs7SUFlZSxPQU8zQnFXLDRCQXRCQXJmLEdBQUV0akIsS0FBVXNzQjtHQWtCNkM7WUF0QnpEd1csZ0JBSUF4ZixHQUFFdGpCLEtBQUl2TCxPQUFNNjNCO0ksdUJBSlpzVyxxQkFJQXRmLEdBQUV0akIsS0FBSXZMLE9BQU02M0I7O1lBc0JacVcsMEJBR0FyZixHQUFFdGpCLEtBQUlzc0I7SUFDTSxlQURWdHNCO0lBQ0o7S0FBQSxPQUFBLHVCQXBKTStoQyxtQkFtSkp6ZSxTQUFNZ0o7O0lBQ1IsT0FwSk15Vix5QkFtSkp6ZSxTQUFNZ0o7R0FDOEQ7WUFHcEU0VixhQUlFNWUsR0FBRXRqQixLQUFJc3NCLEtBQUlqNUIsS0FBSWtnQztJQUFTLFVBQWJsZ0M7S0FFWixnQkFBSTJEO01BQ1ksSUFBVmdyQyxjQUhGaGlDLEtBR2tDLFdBSHRCdXpCLE9BRVp2OEI7TUFFRixPQS9KRWlyQyxZQTJKRjNlLEdBR0kwZSxTQUhFMVYsS0FJbUI7YUFKZmo1QjtTQUtRKzRCLFFBTFIvNEIsUUFLQzQ2QixRQUxENTZCO0tBTVosZ0JBQUkyRDtNQUNZLElBQVZnckMsY0FQRmhpQyxLQWhXSjRnQyxZQXFXYTNTLE9BQU83QixPQUUwQyxXQVA5Q21ILE9BTVp2OEI7TUFFRixPQW5LRWlyQyxZQTJKRjNlLEdBT0kwZSxTQVBFMVYsS0FRbUI7O1FBQ2ZnQyxVQVRBajdCO0lBVVosZ0JBQUltbEMsR0FBRXhoQztLQUNVLElBQVZnckMsY0FYRmhpQyxLQWhXSjRnQyxZQXlXWXRTLFNBQ1JrSyxHQUNzRCxXQVgxQ2pGLE9BVVZ2OEI7S0FFSixPQXZLRWlyQyxZQTJKRjNlLEdBV0kwZSxTQVhFMVYsS0FZbUI7R0FBQTtZQUkzQjZWLDJCQUtFN2UsR0FBRXRqQixLQUFJc3NCLEtBQUlqNUIsS0FBSUUsTUFBS2dnQyxPQUFNOS9CO0lBQVMsVUFBeEJKO2VBQUlFO2FBQUFBOztnQkFVWnVULEdBQUU5UDtnQkFDTSxJQUFOekMsTUFqV051c0Msa0JBZ1dJaDZCLEdBQzRCLFdBWFh5c0IsT0FBTTkvQixPQVVyQnVEO2dCQUVKLE9BNUxFaXJDLFlBZ0xGM2UsT0FBRXRqQixLQVdFekwsTUFYRSszQjtlQVl3Qzs7Z0JBVjVDdDFCO2dCQUNRLElBQU56QyxNQUFNLFdBSFNnL0IsT0FBTTkvQixPQUV2QnVEO2dCQUVGLE9BcExFaXJDLFlBZ0xGM2UsT0FBRXRqQixLQUdFekwsTUFIRSszQjtlQUl3QztTQUN0QnhsQixJQUxWdlQ7S0FNaEIsZ0JBQUl5RDtNQUNRLElBQU56QyxNQTdWTnVzQyxrQkEyVjBCaDZCLEdBRU0sV0FQWHlzQixPQUFNOS9CLE9BTXZCdUQ7TUFFRixPQXhMRWlyQyxZQWdMRjNlLE9BQUV0akIsS0FPRXpMLE1BUEUrM0IsS0FRd0M7O2FBUnBDajVCO1NBaUJRbWxDLElBakJSbmxDLFFBaUJDNDZCLFFBakJENTZCO2VBQUlFO2FBQUFBOztnQkFzQlp1VCxHQUFFOVA7Z0JBQ007aUJBQU56QzttQkE1WU5xc0M7cUJBc1lhM1M7cUJBQU91SztxQkF2V3BCc0ksa0JBNFdJaDZCLEdBQ2lELFdBdkJoQ3lzQixPQUFNOS9CLE9Bc0JyQnVEO2dCQUVKLE9BeE1FaXJDLFlBZ0xGM2UsT0FBRXRqQixLQXVCRXpMLE1BdkJFKzNCO2VBd0J3Qzs7Z0JBVjVDdDFCO2dCQUNRLElBQU56QyxNQXBZTnFzQyxZQXNZYTNTLE9BQU91SyxHQUZZLFdBZlhqRixPQUFNOS9CLE9BY3ZCdUQ7Z0JBRUYsT0FoTUVpckMsWUFnTEYzZSxPQUFFdGpCLEtBZUV6TCxNQWZFKzNCO2VBZ0J3QztTQUNWOFYsTUFqQnRCN3VDO0tBa0JoQixnQkFBSXlEO01BQ1E7T0FBTnpDO1NBeFlOcXNDO1dBc1lhM1MsT0FBT3VLLEdBdldwQnNJLGtCQXVXc0NzQixLQUVlLFdBbkJoQzdPLE9BQU05L0IsT0FrQnZCdUQ7TUFFRixPQXBNRWlyQyxZQWdMRjNlLE9BQUV0akIsS0FtQkV6TCxNQW5CRSszQixLQW9Cd0M7O1FBU3BDZ0MsVUE3QkFqN0I7Y0FBSUU7WUFBQUE7O2VBa0NaaWxDLEdBQUUxeEIsR0FBRTlQO2VBQ0k7Z0JBQU56QztrQkF4Wk5xc0M7b0JBa1pZdFM7b0JBS1JrSztvQkF4WEpzSSxrQkF3WE1oNkIsR0FDK0MsV0FuQ2hDeXNCLE9BQU05L0IsT0FrQ25CdUQ7ZUFFTixPQXBORWlyQyxZQWdMRjNlLE9BQUV0akIsS0FtQ0V6TCxNQW5DRSszQjtjQW9Dd0M7O2VBVjVDa00sR0FBRXhoQztlQUNNLElBQU56QyxNQWhaTnFzQyxZQWtaWXRTLFNBSFJrSyxHQUM0QixXQTNCWGpGLE9BQU05L0IsT0EwQnJCdUQ7ZUFFSixPQTVNRWlyQyxZQWdMRjNlLE9BQUV0akIsS0EyQkV6TCxNQTNCRSszQjtjQTRCd0M7UUFDZitWLE1BN0JqQjl1QztJQThCaEIsZ0JBQUlpbEMsR0FBRXhoQztLQUNNO01BQU56QztRQXBaTnFzQztVQWtaWXRTLFNBQ1JrSyxHQXBYSnNJLGtCQW1YaUN1QixLQUVvQixXQS9CaEM5TyxPQUFNOS9CLE9BOEJyQnVEO0tBRUosT0FoTkVpckMsWUFnTEYzZSxPQUFFdGpCLEtBK0JFekwsTUEvQkUrM0IsS0FnQ3dDO0dBSUE7WUErQ2hEb1csdUJBSUVwZixHQUFFdGpCLEtBQUluTyxNQUFLaUUsT0FBTUQ7SUFBSyxHQUFYQztTQUVEd2lDLFVBRkN4aUM7S0FHYixnQkFBSWtCO01BQ0YsT0FSRityQyxZQUlFemYsR0FBRXRqQixLQUFJbk8sTUFFSXltQyxTQUVtQixXQUpaemlDLEdBR2ZtQixJQUNnQzs7SUFIUCxlQUR6QmdKLEtBQWVuSztJQUNKO0tBQUEsT0FBQSx1QkF4UVhrc0MsbUJBdVFGemUsU0FBTXp4Qjs7SUFDTyxPQXhRWGt3Qyx5QkF1UUZ6ZSxTQUFNenhCO0dBSTRCO1lBUnBDa3hDLFlBSUV6ZixHQUFFdGpCLEtBQUluTyxNQUFLaUUsT0FBTUQ7SSx1QkFKbkI2c0MsaUJBSUVwZixHQUFFdGpCLEtBQUluTyxNQUFLaUUsT0FBTUQ7O1lBUWZtdEMsd0JBRUYxZixHQUFFNWlCLEdBQUU0ckI7SUFBTyxJQUFYL0IsTUFBQWpILEdBQUk4TSxRQUFBOUQ7SUFBTztlQUFQOEQsb0JBc0VGLE9BQUEsV0F0RUY3RixLQUFFN3BCO1lBQUUwdkI7O1FBRUksSUFESHYrQixPQUREdStCLFVBRUksT0FKTjZTLGFBRUYxWSxLQUFFN3BCLEdBQ0c3TztRQUNHLHNCOztRQUVBLElBREVDLFNBSE5zK0IsVUFJSSxPQU5ONlMsYUFFRjFZLEtBQUU3cEIsR0FHUTVPO1FBQ0Ysc0I7O21CQUpKcytCOztTQU1JLElBRFlyK0IsU0FMaEJxK0IsVUFNSSxPQVJONlMsYUFFRjFZLEtBQUU3cEIsR0FLa0IzTztTQUNaLHNCOzs7U0FFQSxJQURlQyxTQVBuQm8rQixVQVFJLE9BVk42UyxhQUVGMVksS0FBRTdwQixHQU9xQjFPO1NBQ2Ysc0I7O1FBRU87U0FEUUMsU0FUbkJtK0I7U0FVVyxPQVpiNlMsYUFFRjFZLEtBQUU3cEIsR0FTcUJ6TztTQUNmLHNCO1FBQUEsc0I7O21CQVZKbStCOztTQVlJLElBRGlCbCtCLFNBWHJCaytCLFVBWUksT0FkTjZTLGFBRUYxWSxLQUFFN3BCLEdBV3VCeE87U0FDakIsc0I7OztTQUVBLElBRG9CQyxTQWJ4QmkrQixVQWNJLE9BaEJONlMsYUFFRjFZLEtBQUU3cEIsR0FhMEJ2TztTQUNwQixzQjs7UUFFTztTQURhQyxTQWZ4QmcrQjtTQWdCVyxPQWxCYjZTLGFBRUYxWSxLQUFFN3BCLEdBZTBCdE87U0FDcEIsc0I7UUFBQSxzQjs7WUFDV0MsU0FqQmYrOUIsVUFpQlM3OEIsT0FqQlQ2OEIsVUFpQkkvOEIsTUFqQkorOEI7UUFrQkYsT0FxREo4Uyx3QkF2RUUzWSxLQUFFN3BCLEdBaUJpQnJPLFFBQVhnQixLQUFLRTs7WUFFUWhCLFNBbkJqQjY5QixVQW1CVzE4QixTQW5CWDA4QixVQW1CTTk4QixRQW5CTjg4QjtRQW9CRixPQW1ESjhTLHdCQXZFRTNZLEtBQUU3cEIsR0FtQm1Cbk8sUUFBWGUsT0FBS0k7O1lBRVVqQixTQXJCckIyOUIsVUFxQmV2OEIsU0FyQmZ1OEIsVUFxQlU1OEIsUUFyQlY0OEI7UUFzQkYsT0FpREo4Uyx3QkF2RUUzWSxLQUFFN3BCLEdBcUJ1QmpPLFFBQVhlLE9BQUtLOztZQUVFbkIsVUF2QmpCMDlCLFVBdUJXcDhCLFNBdkJYbzhCLFVBdUJNejhCLFFBdkJOeThCO1FBd0JGLE9BK0NKOFMsd0JBdkVFM1ksS0FBRTdwQixHQXVCbUJoTyxTQUFYaUIsT0FBS0s7O1lBRU1yQixVQXpCakJ5OUIsVUF5QldqOEIsU0F6QlhpOEIsVUF5Qk10OEIsUUF6Qk5zOEI7UUEwQkYsT0E2Q0o4Uyx3QkF2RUUzWSxLQUFFN3BCLEdBeUJtQi9OLFNBQVhtQixPQUFLSzs7bUJBekJYaThCOztTQTRCSSxJQURVeDlCLFVBM0JkdzlCLFVBNEJJLE9BOUJONlMsYUFFRjFZLEtBQUU3cEIsR0EyQmdCOU47U0FDVixzQjs7O1NBRUEsSUFEYUMsVUE3QmpCdTlCLFVBOEJJLE9BaENONlMsYUFFRjFZLEtBQUU3cEIsR0E2Qm1CN047U0FDYixzQjs7UUFFTztTQURNZ0MsVUEvQmpCdTdCO1NBZ0NXLE9BbENiNlMsYUFFRjFZLEtBQUU3cEIsR0ErQm1CN0w7U0FDYixzQjtRQUFBLHNCOztZQWhDSkMsVUFBQXM3QixVQUFBQSxRQUFBdDdCOztZQUFBQyxVQUFBcTdCLFVBQUFBLFFBQUFyN0I7O1lBQUFFLFVBQUFtN0IsVUFBQUEsUUFBQW43Qjs7UUFrREksSUFEVUUsVUFqRGRpN0IsVUFrREksT0FwRE42UyxhQUVGMVksS0FBRTdwQixHQWlEZ0J2TDtRQUNWLHNCOztZQUNnQkMsVUFuRHBCZzdCLFVBbURhMzdCLFFBbkRiMjdCO1FBb0RGO1NBQUEsSUFBYTlELGdCQUVHLE9BM2hCcEJxVSxPQXloQmlCclUsS0FERTczQjtTQUdYLE9BeERKd3VDO2tCQUVGMVk7a0JBQUU3cEI7a0JBc0RJLDhDQUhrQnRMLFVBR2tCOztRQXBCM0I7U0FEVEcsVUFqQ0Y2NkI7U0FrQ1csT0FwQ2I2UyxhQUVGMVksS0FBRTdwQixHQWlDSW5MO1NBQ0Usc0I7UUFBQSxzQjs7UUFFQSxJQURGRSxVQW5DRjI2QixVQW9DSSxPQXRDTjZTLGFBRUYxWSxLQUFFN3BCLEdBbUNJakw7UUFDRSxzQjs7WUFwQ0pDLFVBQUEwNkIsVUFBQUEsUUFBQTE2Qjs7bUJBQUEwNkI7O2FBaUV5Q3g2QixVQWpFekN3NkIsVUFBQVE7YUFBSnBHLE1BQUFELEtBaUU2QzE0QixPQUFBK0Q7a0JBakU3QzB0QixFQWtFb0I2ZixLQUFPLE9BcEV6QkYsYUFFRnpZLEtBa0VvQjJZLEtBRHlCdHhDLE1BQ0s7YUFsRWxEMDRCLE1BQUFqSCxHQUFJOE0sUUFBQVE7OzthQW1FeUN3UyxVQW5FekNoVCxVQUFBK0k7YUFBSjNPLE1BQUFELEtBbUU2QzE0QixPQUFBdXhDO2tCQW5FN0M5ZixFQW9Fb0I2ZixLQUFPLE9BdEV6QkYsYUFFRnpZLEtBb0VvQjJZLEtBRHlCdHhDLE1BQ0s7YUFwRWxEMDRCLE1BQUFqSCxHQUFJOE0sUUFBQStJOzs7O1FBMENGLE1BQUE7O1FBY00sSUFEYWtLLFVBdkRqQmpULFVBd0RJLE9BMURONlMsYUFFRjFZLEtBQUU3cEIsR0F1RG1CMmlDO1FBQ2Isc0I7O1FBRUEsSUFEYUMsVUF6RGpCbFQsVUEwREksT0E1RE42UyxhQUVGMVksS0FBRTdwQixHQXlEbUI0aUM7UUFDYixzQjs7UUFFQSxJQURPQyxVQTNEWG5ULFVBNERJLE9BOURONlMsYUFFRjFZLEtBQUU3cEIsR0EyRGE2aUM7UUFDUCxzQjs7WUFDWUMsVUE3RGhCcFQsVUE2RFd6NkIsTUE3RFh5NkI7UUE4REYsT0FqUEp5UztpQ0FpUGlDLGtCQTlEL0J0WSxLQUFFN3BCLEdBOERnQzs7aUJBRG5CL0s7aUJBQUs2dEM7O1lBeEJGQyxVQXJDZHJULFVBcUNJdDZCLFFBckNKczZCO1FBc0NGO1NBQUEsT0FBQTtrQkF3REpzVCwwQkE5RkVuWixLQUFFN3BCLEdBcUNnQitpQyxTQUFWM3RDOztRQUNOLE9Bd0RKNHRDLGdDQTlGRW5aLEtBQUU3cEIsR0FxQ2dCK2lDLFNBQVYzdEM7OztHQWlDSDtZQXhFSG10QyxhQUVGM2YsR0FBRTVpQixHQUFFNHJCO0ksdUJBRkYwVyxrQkFFRjFmLEdBQUU1aUIsR0FBRTRyQjs7WUF1RU40Vyx3QkFJRTVmLEdBQUU1aUIsR0FBRTRyQixLQUFJajVCLEtBQUlFO0lBQVEsVUFBWkY7ZUFBSUU7TUFJSixXQWpGTjB2QyxhQTZFRjNmLEdBQUU1aUIsR0FBRTRyQjtNQUlJLHNCOztRQUpJLzRCO01BTUcsSUFBQSxPQW5GYjB2QyxhQTZFRjNmLEdBQUU1aUIsR0FBRTRyQixNQU1JLHNCO01BQUEsc0I7O0tBSkEsV0EvRU4yVyxhQTZFRjNmLEdBQUU1aUIsR0FBRTRyQjtLQUVJLHNCOzthQUZBajVCO2VBQUlFO01BVUosV0F2Rk4wdkMsYUE2RUYzZixHQUFFNWlCLEdBQUU0ckI7TUFVSSxzQjs7UUFWSS80QjtNQVlHLElBQUEsT0F6RmIwdkMsYUE2RUYzZixHQUFFNWlCLEdBQUU0ckIsTUFZSSxzQjtNQUFBLHNCOztLQUpBLFdBckZOMlcsYUE2RUYzZixHQUFFNWlCLEdBQUU0ckI7S0FRSSxzQjs7Y0FSSS80QjtLQWdCRyxJQUFBLE9BN0ZiMHZDLGFBNkVGM2YsR0FBRTVpQixHQUFFNHJCLE1BZ0JJLHNCO0tBQUEsc0I7O09BaEJJLzRCO0tBa0JVO01BQUEsT0EvRnBCMHZDLGFBNkVGM2YsR0FBRTVpQixHQUFFNHJCO01Ba0JXLHNCO01BQVAsc0I7S0FBQSxzQjs7SUFKTyxXQTNGYjJXLGFBNkVGM2YsR0FBRTVpQixHQUFFNHJCO0lBY0ksb0I7SUFBQSxzQjtHQUlzQztZQUNoRG9YLDhCQUdFcGdCLEdBQUU1aUIsR0FBRTRyQjtJQUhOO0tBT1UsSUFESXgyQixrQkFDSixPQVBWNnRDLG1CQUdFcmdCLEdBQUU1aUIsR0FBRTRyQixLQUdReDJCO0tBQ0osc0I7O0lBRk47S0FBQSxPQUFBLHVCQXJHQWt0QyxvQkFtR0YxZixHQUFFNWlCLEdBQUU0ckI7O0lBRUYsT0FyR0EwVywwQkFtR0YxZixHQUFFNWlCLEdBQUU0ckI7R0FJc0M7WUFQNUNxWCxtQkFHRXJnQixHQUFFNWlCLEdBQUU0ckI7SSx1QkFITm9YLHdCQUdFcGdCLEdBQUU1aUIsR0FBRTRyQjs7WUFZRnNYLFdBQVdsakMsR0FBRVY7SUFBTSxJQUFOQyxRQUFBRDtJQUFNO2VBQU5DLG9CQWVXO1lBZlhBOztRQUVUO1NBRGVqTCxhQUROaUw7U0FDRzZHLElBREg3RztTQUVicEosSUExNUNKODNCLHlCQXk1Q3VCMzVCO1FBRG5CNHVDLFdBQVdsakMsR0FDS29HO1FBRXBCLE9BQUEsdUJBSGVwRyxHQUVYN0o7O29CQUZhb0osVUFNR21pQyxNQU5IbmlDOzthQUFBQztTQUFiMGpDLFdBQVdsakMsR0FNSzBoQztTQURKLHVCQUxEMWhDO2FBQUVULFFBQUFDOzs7YUFBQWlVO1NBQWJ5dkIsV0FBV2xqQyxHQU1LMGhDO1NBQ0osdUJBUEQxaEM7YUFBRVQsUUFBQWtVOzs7O1lBWUh0ZSxJQVpHb0ssVUFZTjRqQyxNQVpNNWpDO1FBQWIyakMsV0FBV2xqQyxHQVlKbWpDO1FBQWlCLE9BQUEsV0FBZGh1QyxHQVpDNks7O1lBYUxvakMsTUFiTzdqQztRQUFiMmpDLFdBQVdsakMsR0FhTG9qQztRQUFrQixPQUFBLHVCQWJicGpDOztZQWNLbVMsTUFkSDVTLFVBY0E4akMsTUFkQTlqQztRQUFiMmpDLFdBQVdsakMsR0FjRXFqQztRQUFXLE9BQUEsc0JBQVJseEI7OztZQU5HblAsTUFSTnpELFVBUUdvaUMsTUFSSHBpQztRQUFiMmpDLFdBQVdsakMsR0FRSzJoQztRQUNRLE9BQUEsdUJBVGIzaEMsR0FRUWdEOztZQUVGakssSUFWSndHLFVBVUMrakMsTUFWRC9qQztRQUFiMmpDLFdBQVdsakMsR0FVR3NqQztRQUNVLE9BQUEsdUJBWGJ0akMsR0FVTWpIOzs7R0FLUztZQUsxQndxQyxXQUFXN3JDLEdBQUU0SDtJQUFNLElBQU5DLFFBQUFEO0lBQU07ZUFBTkMsb0JBZVc7WUFmWEE7O1FBRVQ7U0FEZWpMLGFBRE5pTDtTQUNHNkcsSUFESDdHO1NBRWJwSixJQTk2Q0o4M0IseUJBNjZDdUIzNUI7UUFEbkJpdkMsV0FBVzdyQyxHQUNLME87UUFFcEIsT0FBQSw4QkFIZTFPLEdBRVh2Qjs7b0JBRmFvSixVQU1HbWlDLE1BTkhuaUM7O2FBQUFDO1NBQWIrakMsV0FBVzdyQyxHQU1LZ3FDO1NBREosOEJBTERocUM7YUFBRTZILFFBQUFDOzs7YUFBQWlVO1NBQWI4dkIsV0FBVzdyQyxHQU1LZ3FDO1NBQ0osOEJBUERocUM7YUFBRTZILFFBQUFrVTs7OztZQVlIdGUsSUFaR29LLFVBWU40akMsTUFaTTVqQztRQUFiZ2tDLFdBQVc3ckMsR0FZSnlyQztRQUFpQixPQUFBLFdBQWRodUMsR0FaQ3VDOztZQUFFa3FDLFFBQUFyaUMsVUFBQUEsUUFBQXFpQzs7WUFjR3p2QixNQWRINVMsVUFjQTZqQyxNQWRBN2pDO1FBQWJna0MsV0FBVzdyQyxHQWNFMHJDO1FBQVcsT0FBQSxzQkFBUmp4Qjs7O1lBTkduUCxNQVJOekQsVUFRR29pQyxNQVJIcGlDO1FBQWJna0MsV0FBVzdyQyxHQVFLaXFDO1FBQ1EsT0FBQSw4QkFUYmpxQyxHQVFRc0w7O1lBRUZqSyxJQVZKd0csVUFVQytqQyxNQVZEL2pDO1FBQWJna0MsV0FBVzdyQyxHQVVHNHJDO1FBQ1UsT0FBQSw4QkFYYjVyQyxHQVVNcUI7OztHQUtTO1lBTTFCeXFDLFdBQVc5ckMsR0FBRTRIO0lBQU0sSUFBTkMsUUFBQUQ7SUFBTTtlQUFOQyxvQkFlVztZQWZYQTs7UUFFVDtTQURlakwsYUFETmlMO1NBQ0c2RyxJQURIN0c7U0FFYnBKLElBbjhDSjgzQix5QkFrOEN1QjM1QjtRQURuQmt2QyxXQUFXOXJDLEdBQ0swTztRQUVwQixPQUFBLDhCQUhlMU8sR0FFWHZCOztvQkFGYW9KLFVBTUdtaUMsTUFOSG5pQzs7YUFBQUM7U0FBYmdrQyxXQUFXOXJDLEdBTUtncUM7U0FESiw4QkFMRGhxQzthQUFFNkgsUUFBQUM7OzthQUFBaVU7U0FBYit2QixXQUFXOXJDLEdBTUtncUM7U0FDSiw4QkFQRGhxQzthQUFFNkgsUUFBQWtVOzs7O1lBWUh0ZSxJQVpHb0ssVUFZTjRqQyxNQVpNNWpDO1FBQWJpa0MsV0FBVzlyQyxHQVlKeXJDO1FBQXFELFdBQUEsV0FBbERodUM7UUFBa0QsT0FBQSw4QkFaakR1Qzs7WUFBRWtxQyxRQUFBcmlDLFVBQUFBLFFBQUFxaUM7O1lBY0d6dkIsTUFkSDVTLFVBY0E2akMsTUFkQTdqQztRQUFiaWtDLFdBQVc5ckMsR0FjRTByQztRQUFXLE9BQUEsc0JBQVJqeEI7OztZQU5HblAsTUFSTnpELFVBUUdvaUMsTUFSSHBpQztRQUFiaWtDLFdBQVc5ckMsR0FRS2lxQztRQUNRLE9BQUEsOEJBVGJqcUMsR0FRUXNMOztZQUVGakssSUFWSndHLFVBVUMrakMsTUFWRC9qQztRQUFiaWtDLFdBQVc5ckMsR0FVRzRyQztRQUNVLE9BQUEsOEJBWGI1ckMsR0FVTXFCOzs7R0FLUztZQU05QjBxQztJQUNRLElBRGtCN1gsZ0JBQ3hCL3dCLE1BQU07YUFDTituQixFQUFFdGpCO0tBdkJBa2tDLFdBc0JGM29DLEtBQ0V5RTtLQUFtQyxXQUFBLDZCQURyQ3pFO0tBQ3FDLE9BQUE7SUFBcUI7SUFDOUQsT0EvYk0wbUMsWUE4YkYzZSxNQUZ3QmdKOztZQVMxQjhYLG1CQUFtQjd2QztJQUNyQixHQUFHLDBCQURrQkEsY0FDSjtRQUNYNEYsNEJBRmU1RjthQUdmOHZDO0tBQWlCLE9BQXJCLFdBWkFGLHVCQVNtQjV2QztJQUdtRDthQUM5RCt2QyxhQUFhM3JDO0tBQ25CLElBRG1CQyxNQUFBRDtLQUNuQjtTQURtQkMsUUFGakJ1QixLQUdjLE9BREd2QjtNQUVYLFlBQUEsZ0JBTlNyRSxLQUlFcUU7c0NBSVYsT0FKVUE7TUFHRCxJQUhDNFUsTUFBQTVVLGFBQUFBLE1BQUE0VTs7SUFJVDtJQVdDLElBVksrMkIsU0FMVkQ7Ozs7U0FnQkpFLE9BWGNEO0tBQ2hCO1NBVUVDLFNBbEJBcnFDO2NBU00sZ0JBWFM1RixLQW9CZml3QztNQVJnQixJQUhGOTNCLElBV2Q4M0IsY0FBQUEsT0FYYzkzQjs7OztJQVlIO0tBQVgrM0IsV0FBVyw4QkFyQklsd0MsS0FTRGd3QyxRQVdkQyxPQVhjRDtLQUtGRyxTQVZSSixhQWdCSkU7Ozs7U0FHQUcsT0FUWUQ7S0FDZDtTQVFFQyxTQXJCQXhxQztNQWNNLFlBQUEsZ0JBaEJTNUYsS0F1QmZvd0M7O01BTnNCLElBSFYxdkIsTUFTWjB2QixjQUFBQSxPQVRZMXZCOzs7O09BQUF5dkIsV0FTWkM7U0FDQUM7O0tBRUE7TUFBSTtPQUFBO1NBQUE7V0FBYyw4QkExQkhyd0MsS0FjSG13QyxRQVNaQyxPQVRZRDtPQVVaRTs7Ozs7VUFBQUEsU0FyQkFQOztJQXlCVSxJQUFWUSxVQXhCSVAsYUFtQkpLO09BS0FFLFlBMUJBMXFDLEtBQ0FrcUM7Ozs7NEJBa0JBSTsrQkFBQUE7Z0NBQUFBLG9CQVNBSztnQ0FUQUwsc0JBU0FLO2dDQVRBTCxxQkFTQUs7OEJBVEFMO1dBU0FLLFdBM0JBVDs7O1VBMkJBUzs7O1NBQUFBOztJQU9KLFdBYklGLFFBTUFFO0dBT2M7WUFPbEJDLHFCQUdBMXhDLEtBQUlpNUI7SUFBTyxVQUFYajVCLGtCQUNzQixjQURsQmk1QjthQUFKajVCLFlBRWdCbWxDLElBRmhCbmxDLFFBRWF3RCxJQUZieEQsUUFFc0IsZUFBVHdELEdBQUcyaEMsSUFGWmxNO1FBR1E1b0IsTUFIWnJRO0lBR3NCLGVBQVZxUSxNQUhSNG9CO0dBR3NEO1lBZTFEMFkscUJBSUEzeEMsS0FBSUUsTUFDdUIrNEI7SUFBN0IsVUFETS80QjtpQkFBQUE7O1NBVlV1VCxJQVVWdlQseUJBVlV1VDtRQVdPcFQ7SUFDdkIsVUFGRUwsa0JBR3NCLGNBRkRLLFFBQU00NEI7SUFDN0IsU0FGRWo1QjtTQUlnQm1sQyxJQUpoQm5sQyxRQUlhd0QsSUFKYnhEO0tBSXNCLGVBQVR3RCxHQUFHMmhDLElBSEs5a0MsUUFBTTQ0Qjs7UUFJZjVvQixNQUxaclE7SUFLc0IsZUFBVnFRLE1BSlNoUSxRQUFNNDRCO0dBSXNDO1lBT2pFMlksa0JBQW1CQyxpQkFBZ0Izd0M7SUFpQnJDLEdBakJxQjJ3QztTQWtCWkMsT0FsQllELG9CQWlCakJFLG9CQUNLRDs7U0FETEM7YUFpQkFDLHVCQUF1QnpaLFNBQVEvWTtLQUNqQyxPQUFBLFdBN0hBc3hCLHVCQTBGbUM1dkMsS0FrQ1ZxM0IsU0FBUS9ZO0lBR2hCO0lBS25CLFNBQUl5eUIseUJBQXlCQztLQUMzQixPQVRFRix1QkFReUJFO0lBRUM7YUFVMUJDLHVCQUF1QjVaLFNBQVFueUIsR0FBRTVDO0tBQ25DLE9BQUEsV0FqSkFzdEMsdUJBMEZtQzV2QyxLQXNEVnEzQixTQUFRbnlCLEdBQUU1QztJQUdsQjthQUtmNHVDLG1CQUFtQjdaLFNBQVE4WixVQUFTcnNCO0tBQ3RDLE9BQUEsV0F6SkE4cUIsdUJBMEZtQzV2QyxLQThEZHEzQixTQUFROFosVUFBU3JzQjtJQUdYO2FBSXJCc3NCLE1BS0pDLFdBMGpCUUw7S0E5akJXOztVQXFCbkIzWixVQWpCQWdhO01BQ0Y7VUFnQkVoYSxZQXlpQlEyWixTQXpqQmdCLE9BNHNCeEJNLFlBN3NCQUQsV0FpQkFoYTtPQWZNLFlBQUEsZ0JBNUUyQnIzQixLQTJGakNxM0I7OztXQWpCVWthLFlBaUJWbGEsaUJBQUFBLFVBakJVa2E7O1VBaUJGQyxZQUFSbmE7U0FBUW1hLGNBeWlCQVIsU0ExbEJSRCx5QkEwbEJRQzs7O2dCQXZpQkosZ0JBN0Y2Qmh4QyxLQTJGekJ3eEM7WUFNUkMsWUFOQXBhLFNBQVFtYSxtQkF5aUJBUjtZQW5pQlJTLFlBTkFwYSxTQUFRbWEsV0F5aUJBUjtPQXRqQk16TTtNQUNaLE9Bd3NCRitNLFlBN3NCQUQsV0FpQkFoYSxTQWJja047O1NBK2NkbU4sWUFsY0FyYTs7UUFrY0FxYSxjQXVHUVY7OztNQXBHRixJQXVDSjlyQyxJQXZDSSxnQkFoaUIyQmxGLEtBNmhCakMweEM7ZUEwQ0V4c0M7Z0JBQUFBO1FBdkNJLGVBdUNKQTs7OzswQkFLRnlzQyxhQS9DQUQsbUJBdUdRVjs7OzthQTNGTW5NLGFBcGVWdU0sTUF3ZEpNLG1CQXVHUVY7bUNBM0ZNbk07Ozs7cUJBOEJaMy9CO2VBQUFBOzt5QkFLRnlzQyxhQS9DQUQsbUJBdUdRVjs7OztZQWhHTWhNLGFBL2RWb00sTUF3ZEpNLG1CQXVHUVY7a0NBaEdNaE07Ozs7O2lCQW1DWjkvQjs7U0FoQllpZ0MsYUFsZlZpTSxNQXdkSk0sbUJBdUdRVjsrQkE3RU03TDs7O2dCQWdCWmpnQztlQUFBQTs7O1lBeEJZb2dDLGFBMWVWOEwsTUF3ZEpNLG1CQXVHUVY7b0NBckZNMUw7OztXQWtCc0I7Y0FwQ3BDb00scUJBdUdRVjt1QkFuRTRCLGdCQWprQkhoeEMsS0E2aEJqQzB4Qzs7YUFxQ2NoTSxhQTdmVjBMLE1Bd2RKTSxtQkF1R1FWO21DQWxFTXRMOzs7O1lBR0FPLGFBaGdCVm1MLE1Bd2RKTSxXQXVHUVY7bUNBL0RNL0s7Ozs7WUF6QkFPLGFBdmVWNEssTUF3ZEpNLG1CQXVHUVY7b0NBeEZNeEs7Ozs7WUFjQUssYUFyZlZ1SyxNQXdkSk0sbUJBdUdRVjtrQ0ExRU1uSzs7O2VBNENkK0ssWUF6RUFGOzs7O29CQXlFQUUsY0E4QlFaO29DQTNCa0IsZ0JBem1CT2h4QyxLQXNtQmpDNHhDO3FCQUdvRCxNQUFBO1lBQ2xDO2FBQVpDLFlBd0lOOUIsYUE1SUE2QixtQkE4QlFaO2FBekJBLFVBQUEsZ0JBM21CeUJoeEMsS0EwbUIzQjZ4Qzs7Ozs7OzthQWlCRyxNQUFBOztZQWRrQjthQUFBLFVBMEozQkMsY0E3Sk1ELFdBMEJFYjthQXZCV25aO2FBQVhrYTthQUNFQyxZQW9JVmpDLGFBcklRZ0MsV0F1QkFmO2FBckJJLGFBQUEsZ0JBL21CcUJoeEMsS0E4bUJ2Qmd5Qzs7O2NBR1E7ZUFBSjF2QztpQkFBSTs7bUJBam5CZXRDO21CQXNtQmpDNHhDO29CQVFVSSxZQVJWSjtlQVl5QixXQURYdHZDLEdBSkt1MUI7ZUFLTSxPQUpmbWE7ZUFQRUM7ZUFBVkM7Ozs7O2FBYWdDO2NBQUEsVUFtSmxDSixjQXpKVUUsV0FzQkZoQjtjQWhCaUJ6YztjQUFYNGQ7Y0FDQUMsWUE2SGRyQyxhQTlIY29DLFdBZ0JObkI7dUJBZEssZ0JBdG5Cb0JoeEMsS0FxbkJuQm95QztjQUMyQixNQUFBO2FBQ3ZCO2NBQUpqakM7Z0JBQUk7O2tCQXZuQmVuUDtrQkFzbUJqQzR4QzttQkFlY1EsWUFmZFI7Y0FrQnlCLFdBRFh6aUMsS0FWSzBvQixPQU9NdEQ7Y0FJQSxPQUhYNmQ7Y0FkRkg7Y0FBVkM7OztZQWtCYSxNQUFBOzs7Ozs7Z0JBbEJIRCxtQkFBQS9hLGdCQUFWZ2IsV0FERk47OztZQXlCVXhLLGNBMWpCTmdLLE1Ba2lCRmMsVUE2Qk1sQjsrQkE3QklpQixrQkF3QkY3Szs7O2VBS1ZpTCxZQXZHQVg7V0F3R0Y7WUFFb0I7YUFBWlksY0EyR052QyxhQTlHQXNDLFdBQVFyQjthQUlBLFVBQUEsZ0JBeG9CeUJoeEMsS0F1b0IzQnN5Qzs7Ozs7Ozs7Ozs7O2FBR29CO2NBQUEsVUE2SDFCUixjQWhJTVEsYUFIRXRCO2NBTVdodEI7Y0FBWHV1QjtjQUNBQyxjQXVHUnpDLGFBeEdRd0MsYUFOQXZCO3VCQVFELGdCQTVvQjBCaHhDLEtBMm9CekJ3eUM7Y0FDMkIsTUFBQTthQUN2QjtjQUFKQztnQkFBSTs7a0JBN29CcUJ6eUM7a0JBb29CakNxeUM7bUJBT1FHLGNBUFJIOzZCQU9RRyx5QkFFQUMsS0FIV3p1Qjs7Ozs7Ozs7Ozs7OzthQVNIMHVCO2FBQVZDO2FBQ01uTCxjQS9rQlI0SixNQThrQkV1QixZQWZFM0I7NkJBZVEwQixrQkFDSmxMOzs7YUFHQUksY0FsbEJSd0osTUErakJKaUIsV0FBUXJCO2tDQW1CSXBKOzs7OztZQW5HRWIsY0EvZVZxSyxNQXdkSk0sbUJBdUdRVjtrQ0FoRk1qSzs7OztZQVdBRSxjQTFmVm1LLE1Bd2RKTSxtQkF1R1FWO2tDQXJFTS9KOzs7OztPQVNBdkMsYUFuZ0JWME0sTUF3ZEpNLG1CQXVHUVY7OEJBN0ROOXJDLElBQ1l3L0I7O1NBdmZBRDtLQUNaLE9BcXNCRjZNLFlBN3NCQUQsV0FpQkFoYSxTQVZjb047SUFYMEM7YUEyQnhEZ04sWUFpQ0FtQixTQW5CaUJ2YixTQW1CRDJaLFNBQW1DNXZDO0tBOUJyRDtNQUFJc1Y7TUFBcUJtOEI7TUFDckJDO01BQXFCQztNQUNyQnZpQztjQUNBd2lDLFNBQVMzYixTQUFRdVo7TUFFbkIsV0FGbUJBLDJCQXRGbkJDOztPQTJGZ0IsV0FBQSxnQkE1R2lCN3dDLEtBdUd0QnEzQjtPQUdULFdBcE1KdVksdUJBMEZtQzV2QyxLQXVHdEJxM0I7O01BQVF1Wjs7S0FNTjs7OztVQXFCTGMsWUFuQlNyYTs7TUFDakI7VUFrQlFxYSxjQUFRVixTQXhGaEJELHlCQXdGZ0JDO09BakJKLGVBQUEsZ0JBakhxQmh4QyxLQWtJekIweEM7Ozs7VUEzQk5zQixTQTJCTXRCLFdBN0JlcUI7VUFpQmQsSUFQUXhCLFlBbUJURyxtQkFBQUEsWUFuQlNIOzs7VUFSZnlCLFNBMkJNdEIsV0E1Qk5saEM7VUFlTyxJQU5RZ2hDLFlBbUJURSxtQkFBQUEsWUFuQlNGOzs7VUFSZndCLFNBMkJNdEIsV0E3Qk5vQjtVQWVPLElBTFFsQixZQW1CVEYsbUJBQUFBLFlBbkJTRTs7O1VBUmZvQixTQTJCTXRCLFdBOUJlbUI7VUFlZCxJQUpRUixZQW1CVFgsbUJBQUFBLFlBbkJTVzs7O1VBUmZXLFNBMkJNdEIsV0E5Qk5oN0I7VUFjTyxJQUhRdThCLFlBbUJUdkIsbUJBQUFBLFlBbkJTdUI7Ozs7Ozs7O01BbUI0QkMsVUE3QnRCSDtNQTZCaUJJLFNBNUJ0QzNpQztNQTRCaUM0aUMsU0E3QmpDTjtNQTZCMkJPLFVBOUJOUjtNQThCQ1MsU0E5QnRCNThCO1FBOEJNZzdCLGNBQVFWLFNBeEZoQkQseUJBd0ZnQkM7S0FTWjtNQVBGdFg7UUFGc0I0WjtXQUFLRDthQWpIN0J4Qzs7ZUErM0JBMEMsa0JBOXdCQVgsU0FBUWxCOztXQUFxQjJCO01BU3pCLFFBQUEsZ0JBM0k2QnJ6QyxLQWtJekIweEM7OztPQVdhO1FBQUEsVUEybUJyQjhCLGVBdG5CUTlCLFdBQVFWO1FBV0huWjtRQUFUNGI7T0FFRixPQXVCRkM7Z0JBcENBZDtnQkFXSWE7Z0JBWFl6QztnQkFBYXFDO2dCQUFNRDtnQkFBS0Q7Z0JBQUtEO2dCQUFNOXhDO29CQUVqRHM0QixPQVNXN0I7Ozs7TUFLUCxPQW9CTjZiO2VBcENBZDtlQUFRbEI7ZUFBUVY7ZUFBYXFDO2VBQU1EO2VBQUtEO2VBQUtEO2VBQU05eEM7bUJBRWpEczRCO1lBQUFBOztlQW5IRm1YO1NBcUNBSSx1QkE0RVFTO1FBcUJKLE9BZUpnQztpQkFwQ0FkO2lCQUFRbEI7aUJBQVFWO2lCQUFhcUM7aUJBQU1EO2lCQUFLRDtpQkFBS0Q7aUJBQU05eEM7OztRQStCakQsT0FLRnN5QztpQkFwQ0FkO2lCQUFRbEI7aUJBQVFWO2lCQUFhcUM7aUJBQU1EO2lCQUFLRDtpQkFBS0Q7aUJBQU05eEM7OztRQTRCakQsT0FRRnN5QztpQkFwQ0FkO2lCQUFRbEI7aUJBQVFWO2lCQUFhcUM7aUJBQU1EO2lCQUFLRDtpQkFBS0Q7aUJBQU05eEM7OztJQU5uQzthQTBDaEJzeUM7S0FpQkFkLFNBZFF2YixTQWNRMlosU0FBUTZCLE9BQU1DLE1BQUt0aUMsTUFBS3VpQyxPQUFNM3hDLEtBQUl0QztLQWJwRCxHQURVdTRCLFlBY1EyWixTQTdJaEJELHlCQTZJZ0JDO0tBWlosSUFJSnJFLE9BSkksZ0JBM0s2QjNzQyxLQXlLekJxM0I7ZUFNUnNWO01BQ0EsT0FpRUFnSDtlQTFEQWY7ZUFkUXZiO2VBY1EyWjtlQUFjOEI7ZUFBS3RpQztlQUFLdWlDO2VBQU0zeEM7ZUFBSXRDOztlQUFBQTtlQVJsRDZ0QztTQVFRK0UsWUFkQXJhO1FBY0FxYSxjQUFRVixTQTdJaEJELHlCQTZJZ0JDO2NBRWQ0QyxjQUFjZixPQUFNeGI7TUFDdEI7T0FBb0IsUUE4akJwQm1jLGVBL2pCc0JuYyxTQUZOMlo7T0FHSGh5QztPQUFUeTBDO01BRUUsT0EyQk5JO2VBaENBakI7ZUFHSWE7ZUFIWXpDO2VBRUE2QjtlQUZjQztlQUFLdGlDO2VBQUt1aUM7ZUFBTTN4QztlQUFJdEM7bUJBR3JDRTtLQUVhO0tBQ3RCLElBRUo4MEMsU0FGSSxnQkE3TDZCOXpDLEtBdUx6QjB4QztjQVFSb0M7Y0FBQUEsUUFEYyxPQUxaRixjQUZzQmYsT0FBaEJuQjs7bUJBUVJvQzthQUFBQTs7U0FXQSxPQWFBRDtrQkFoQ0FqQjtrQkFBUWxCO2tCQUFRVjtrQkFBUTZCO2tCQUFNQztrQkFBS3RpQztrQkFBS3VpQztrQkFBTTN4QztrQkFBSXRDOzs7O1lBdEtsRCt4QztVQXVMQTtXQUFBLE9BakJRYTtXQUFnQjJCLFVBQUFSLGlCQVF4QmlCO1VBU0EsT0FmRUYsY0FGc0JQOzs7O1lBdEt4QnhDO2VBc01BZ0Q7Z0JBaENBakI7Z0JBQVFsQjtnQkFBUVY7Z0JBQVE2QjtnQkFBTUM7Z0JBQUt0aUM7Z0JBQUt1aUM7Z0JBQU0zeEM7Z0JBQUl0Qzs7ZUFqSWxEbXlDLHVCQWlJUVM7SUFOZTthQXNDdkJtQztLQUdBakIsU0FBUXZiLFNBQVEyWixTQUFRNkIsT0FBTUMsTUFBS3RpQyxNQUFLdWlDLE9BQU0zeEMsS0FvQjlDdEMsS0FwQnNERTtLQUN4RCxHQURVcTRCLFlBQVEyWixTQWhMaEJELHlCQWdMZ0JDO2NBRWQrQyxXQUE4QkM7TUFDaEMsT0FvQkFMO2VBdkJBZjtlQUFRdmI7ZUFBUTJaO2VBQWM4QjtlQUFLdGlDO2VBQUt1aUM7ZUFBTTN4QztlQW9COUN0QztlQXBCc0RFO2VBRXRCZzFDO2VBRWpCLGdCQTlOa0JoMEMsS0EwTnpCcTNCO0tBSW9CO2VBZ0I1QnY0QixrQkFBTyxPQWxCTGkxQyxXQWtCRmoxQztlQXBCc0RFLHVCQUFBQSxNQWMvQixPQVpyQiswQztRQUZzQmxCO2dCQUE4Qjd6QyxtQkFrQjNCLE9BaEJ6QiswQztVQWNzQjd4QyxJQWhCOEJsRDtNQWdCZCxPQWR0QyswQyxrQkFjc0I3eEM7O2VBaEI4QmxELG1CQWlCMUIsT0FmMUIrMEM7U0FhdUJuakMsTUFmNkI1UjtLQWViLE9BYnZDKzBDLGtCQWF1Qm5qQztJQUtKO2FBR3JCK2lDO0tBd29CbUJmO0tBQVF2YjtLQTlOSjJaO0tBdmFDOEI7S0FBS3RpQztLQUFLdWlDO0tBQU0zeEM7S0FBSXRDO0tBQUlFO0tBQUtnMUM7S0Fxb0JGckg7S0Fub0JyRDtNQUFJc0g7TUFBMkJDO01BQzNCQztNQUEyQkM7TUFDM0JDO01BQTJCQztjQUczQkMsZ0JBTEFOLGtCQUtKLE9BUDBCbkIsS0FPbUI7Y0FDekMwQixnQkFOMkJOLHlCQUZBMWpDLEtBUVk7Y0FDdkNpa0MsaUJBTkFOLDBCQUhnQ3BCLE1BU1U7Y0FDMUMyQixlQVAyQk4sd0JBSFdoekMsSUFVRTtjQUN4Q3V6QyxlQVBBTix3QkFKMEN2MUMsSUFXRjtjQUN4QzgxQyxnQkFSMkJOLHlCQUptQnQxQyxLQVlMO2NBQ3pDNjFDLG1CQVRBUix3QkFKbURMLFFBYVA7Y0FFNUNjO01BWUQsSUFDSWgyQyxNQWpCSDYxQyxZQWdCaUIsUUFmakJDO01BZWlCLHlDQUNPLE9BQXJCOTFDO2dCQUFBQSxrQkFDcUI7ZUFEckJBO21CQUFBQTtpQkEvUEwreEM7O21CQSszQkEwQyxrQkF2Qm1CWCxTQUFRdmI7aUJBem1CdEJ2NEI7YUFBQUEsUUFRMkIsT0FSM0JBO1VBRW9Cb0QsSUFGcEJwRDtNQUdBLE9BbFFMK3hDO3VCQWlReUIzdUM7Z0JBOG5CekJxeEMsa0JBdkJtQlgsU0FBUXZiO0tBaG1CUTtjQUdqQzBkLFdBQVdwSSxNQUFpQjd0QztNQUM5QixVQUQ4QkEsa0JBRWQsT0FGY0E7ZUFBQUE7bUJBQUFBO2lCQTNROUIreEM7O21CQSszQkEwQyxrQkF2Qm1CWCxTQUFRdmIsU0E3bEJkc1Y7aUJBQWlCN3RDO2FBQUFBLFFBR08sT0FIUEE7VUFLUis0QixRQUxRLzRCO01BTTVCLE9BalJGK3hDO3VCQWdSc0JoWjtnQkErbUJ0QjBiLGtCQXZCbUJYLFNBQVF2YixTQTdsQmRzVjtLQVVvQztjQU0vQ3FJLFdBQVc5dkMsR0FBcUJwRztNQUF3QixVQUF4QkEsa0JBQ2xCO2VBRGtCQTtjQUFBQTs7Y0FNYis0QixRQU5hLzRCO1VBT2hDLE9BbFNGK3hDO3dCQWlTcUJoWjtvQkE4bEJyQjBiLGtCQXZCbUJYLFNBQVF2YixTQTdrQmRueUI7O2NBRVNvbkMsVUFGWXh0QyxRQUVGLFdBQVZ3dEM7O2NBQ0EySSxVQUhZbjJDO1VBSWhDLE9BL1JGK3hDO3dCQThSc0JvRTtvQkFpbUJ0QjFCLGtCQXZCbUJYLFNBQVF2YixTQTdrQmRueUI7O01BU00sT0EybEJuQnF1QyxrQkF2Qm1CWCxTQUFRdmIsU0E3a0JkbnlCO0tBUytDO2NBRTFEZ3dDLFlBQVlod0MsR0FBSSxPQVhoQjh2QyxXQVdZOXZDLEdBeERaeXZDLFlBd0R5QztjQUN6Q1EsZ0JBQWdCandDLEdBQUksT0FacEI4dkMsV0FZZ0I5dkMsR0F2RGhCMnZDLGdCQXVEaUQ7OztNQVdyRCxTQXNqQnFEbEk7Y0FBQUE7OztXQXZhdkNySCxhQTdZUjhMLE1Bb3pCdUIvWixTQTlOSjJaO1dBeFZyQm9FLHNCQStJVTlQOzs7VUFnQkU7V0FBVitQLFVBK1RKQyxxQkF3RjJCamUsU0E5TkoyWjtXQXhMWC9LLGFBOVpSbUwsTUE2WkFpRSxpQkF5TG1CckU7V0F2TFh1RSxVQS9aUm5FLE1Bb3pCdUIvWixTQXZadkJnZTtXQUdBbmEsWUF6b0RONkgsYUF3b0Rjd1M7VUFFVCxHQXhPRGI7V0F5T2M7WUFBVmMsZ0JBaExKTixpQkE4S0VoYTs0QkFFRXNhLFdBSk12UDs7K0JBNUtWaVAsaUJBOEtFaGEsV0FGUStLO2NBaEtWbVA7OztjQUFBQSxhQTlQRWhFLE1Bb3pCdUIvWixTQTlOSjJaOztVQS9UcEI7V0FEU2pLLGNBdFJScUssTUFvekJ1Qi9aLFNBOU5KMlo7V0EvVHBCO2FBOUZEMEQseUJBNkZVM04sd0JBQUFBO1dBeEJWcU87OztjQTJEVXhOLGNBelRSd0osTUFvekJ1Qi9aLFNBOU5KMlosYUE1Um5CeUU7VUFDRCxHQWxJRGY7V0FtSWM7WUFBVmdCLGlCQUZGRDs0QkFFRUMsV0FITTlOOzsrQkFDUjZOLFdBRFE3TjtjQTNEVndOOzs7VUFzQ1E7V0FBTnIxQyxRQTdFRmcxQyxXQTZsQmlEcEksTUF4bkJqRGtJO1dBeUdVOU0sY0FyU1JxSixNQW96QnVCL1osU0E5TkoyWjtVQWhUcEIsR0E3R0QwRDtXQThHYztZQUFWaUIsZ0JBcERKUjs0QkFvRElRLFdBRk01Tjs7V0FNUjtZQUFBLFVBclpOeUkscUJBOFlNendDLE9BQ1Fnb0M7WUFLaUJFO1lBQU45bkM7MkJBQUFBLE9BQU04bkM7Y0E1QzNCbU47OzthQXNqQnlCL2QsWUE5TkoyWixTQWpuQnZCRCx5QkFpbkJ1QkM7VUFHVjtXQUFYbHdDLFdBdm9GSnEyQjtXQXdvRklyRCxvQkFBUzV1QixHQUNYLE9BdG9GRmt5QixnQkFvb0ZJdDJCLFVBQ1NvRSxHQUNlO1dBRXhCMHdDO3NCQUFVamdDLEtBQUV6UTtjQUNkLEdBRGNBLEtBQUZ5UTttQkFDWnZSLElBRFl1Ujs7Z0JBeG9GZHloQixnQkFvb0ZJdDJCLFVBTXlCLHVCQUQzQnNEO2dCQUNFLFdBREZBO21CQURjYyxNQUNkZDtvQkFBQUE7Ozs7YUFFSTtXQUdGeXhDO3NCQUFvQnhlO2NBQ3RCLE9BQUEsV0Fud0JGdVksdUJBMEZtQzV2QyxLQXdxQlhxM0I7YUFHMEI7V0FVOUN5ZTsrQkFBdUJ6ZSxTQUFRMlo7Y0FDakMsSUFEeUJVLFlBQUFyYTtjQUN6QjtrQkFEeUJxYSxjQUFRVixTQTNvQmpDRCx5QkEyb0JpQ0M7ZUFFM0IsSUFNSjlyQyxJQU5JLGdCQXZyQjJCbEYsS0FxckJSMHhDO3lCQVF2QnhzQzswQkFBQUEsR0FKQSxPQUp1QndzQzsyQkFBQUE7Z0JBU3ZCO2lCQUFBLE9BQUE7MEJBR0FxRSx1Q0FaK0IvRSxTQVEvQjlyQzs7Z0JBQ0EsT0FHQTZ3QzswQ0FaK0IvRSxTQVEvQjlyQzs7ZUE5QkE0dUI7bUJBc0J1QnlkLFlBQUFHLG1CQUFBQSxZQUFBSDs7YUFTMEI7V0FHakR3RTsrQkFBMEIxZSxTQW9CUzJaLFNBcEJPOXJDO2NBQzVDLElBRDRCd3NDLFlBQUFyYSxTQW9CaUIxaEIsTUFwQkR6UTtjQUM1QztrQkFENEJ3c0MsY0FvQlNWLFNBM3FCckNELHlCQTJxQnFDQztlQWxCL0IsSUFGc0NwN0IsTUFFdEMsZ0JBbnNCMkI1VixLQWlzQkwweEM7Ozt5QkFBZ0I5N0I7MkJBQUFBOzRCQUFBQTtrQkFsQzFDa2UsU0FzRDJDbmU7a0JBaEIzQyxPQUowQis3Qjs7OytCQUFnQjk3Qjt5QkFBQUE7cUJBb0JmNDdCLFlBcEJERTtvQkFvQkNGLGNBQVFSLFNBM3FCckNELHlCQTJxQnFDQztpQkFFL0IsSUFhSm43QixNQWJJLGdCQXZ0QjJCN1YsS0FxdEJKd3hDOzJCQWUzQjM3QjtzQkFmMkIyN0IsdUJBQVFSO21CQTNxQnJDRCx5QkEycUJxQ0M7a0JBU3ZCLElBQ1JsN0IsTUFEUSxnQkE5dEJtQjlWLEtBcXRCSnd4Qzs0QkFVdkIxN0IsY0FBQUE7bUJBR0ssT0ExRFQrL0Isb0JBNkMyQnJFO2tCQW5EM0JvRSxVQW1EMkNqZ0MsS0FVdkNHOzZCQVZ1QjA3QjtrQkFXdkI7bUJBQUEsT0FBQTs0QkEzQ0pzRSxrQ0FnQ21DOUU7O2tCQVcvQixPQTNDSjhFLHdDQWdDbUM5RTs7MkJBZW5DbjdCO2tCQXJFQWllLFNBc0QyQ25lO2tCQXREM0NtZTtrQkEyREEsT0FMMkIwZDs7aUJBbkQzQm9FLFVBbUQyQ2pnQyxLQWUzQ0U7NEJBZjJCMjdCO2lCQWdCM0I7a0JBQUEsT0FBQTsyQkFoREFzRSxrQ0FnQ21DOUU7O2lCQWdCbkMsT0FoREE4RSx3Q0FnQ21DOUU7OzBCQUFRcjdCO2lCQXREM0NtZSxTQWtDMENsZTs0QkFBaEI4N0I7aUJBUzFCO2tCQUFBLE9BQUE7MkJBckJBb0Usa0NBZ0NtQzlFOztpQkFYbkMsT0FyQkE4RSx3Q0FnQ21DOUU7Ozt5QkFBUXI3QixLQTdDM0NrZ0Msb0JBeUIwQm5FO2VBbEMxQjVkLFNBc0QyQ25lOztnQkFwQmpCNDdCLFlBQUFHO2dCQUFBQSxZQUFBSDtnQkFvQmlCNTdCLE1BcEJEQzs7YUFpQlE7V0FqQmxEb2dDO3NCQUEwQjNlLFNBb0JTMlosU0FwQk85ckM7Yzt1QkFBMUM2d0MsK0JBQTBCMWUsU0FvQlMyWixTQXBCTzlyQzs7YUF3TGpCbXlCLFlBOU5KMlosU0FqbkJ2QkQseUJBaW5CdUJDO29CQStFakIsZ0JBMXVCMkJoeEMsS0F5M0JOcTNCOztZQWpKekJxYSxZQWlKeUJyYTtZQWpKaEI0ZTtZQXpEZ0IxRSxZQXlEekJHOztlQUFTdUUsYUF6RGdCMUUsWUEwTUFsYTthQTFNQWthLGNBcEJKUCxTQWpuQnZCRCx5QkFpbkJ1QkM7VUFzQmY7V0FBSjlyQyxJQUFJLGdCQWpyQnlCbEYsS0ErcUJOdXhDO1dBOER6QlcsV0E1Q0E4RCwwQkFsQnlCekUsbUJBcEJKUCxTQXNCbkI5ckM7V0E2REZ1eUIsYUE5c0ZKRixnQkE4bkZJejJCO1dBbExZbzFDLGFBNFBIRCxVQXBzRmJ6ZSxhQTBzRklDLGNBQUFBO1dBalFVd1IsY0F4YVJtSSxNQXdxQkZjLFVBbEZxQmxCO1VBN0twQixHQWhQRDBEO1dBaVBjO1lBQVZ5QixpQkF4TEpqQixpQkFxTFlnQjs0QkFHUkMsV0FGTWxOOzsrQkF0TFZpTSxpQkFxTFlnQixZQUNGak47Y0ExS1ZtTTs7OztXQXFJVS9MLGNBbllSK0gsTUFvekJ1Qi9aLFNBOU5KMlo7V0F4VnJCb0Usc0JBcUlVL0w7OztVQXRIQTtXQVhSK007c0JBQVk3UjtjQUNkLE9BMUVBbVEseUJBeUVjblEscUJBQUFBO2FBR2M7V0FPbEI4UixjQTVRUmpGLE1Bb3pCdUIvWixTQTlOSjJaO1dBelVYLFVBM0JWa0U7OztZQXNCRzthQUFBO2VBL0VIUix5QkFtRlUyQix5QkFBQUE7Ozs7O2VBaFVaeEY7a0JBc1RJdUYsWUFVUUM7a0JBL1NadkY7bUJBdTFCMkJ6Wjs7OztzQkFsakJ2QitlLFlBVVFDO2NBZFZqQjs7O1VBNElDO1dBRFNrQixjQXpZUmxGLE1Bb3pCdUIvWixTQTlOSjJaO1dBNU1wQjthQWpORDBELHlCQWdOVTRCLHlCQUFBQTtXQTNJVmxCOzs7VUE0QlE7V0FBTnhQLFFBbkVGbVAsV0E2bEJpRHBJLE1BeG5CakRrSTtXQStGVTBCLGNBM1JSbkYsTUFvekJ1Qi9aLFNBOU5KMlo7VUExVHBCLEdBbkdEMEQ7V0FvR2M7WUFBVjhCLGlCQTFDSnJCOzRCQTBDSXFCLFlBRk1EOztXQU1SO1lBQUEsVUEzWU4vRixxQkFvWU01SyxPQUNRMlE7WUFLaUJFO1lBQU41UTsyQkFBQUEsUUFBTTRRO2NBbEMzQnJCOzs7O1dBd0lVc0IsY0F0WVJ0RixNQW96QnVCL1osU0E5TkoyWjtXQXhWckJvRSxzQkF3SVVzQjs7O1VBYUU7V0FBVkMsWUF5VUpyQixxQkF3RjJCamUsU0E5TkoyWjtXQWxNWDRGLFlBcFpSeEYsTUFvekJ1Qi9aLFNBamF2QnNmO1dBRVFFLGNBclpSekYsTUFtWkF1RixtQkFtTW1CM0Y7V0FoTW5CNVYsY0EvbkROMkgsYUE2bkRjNlQ7VUFHVCxHQTlORGxDO1dBK05jO1lBQVZvQyxpQkF0S0o1QixpQkFvS0U5Wjs0QkFFRTBiLFlBSE1EOzsrQkFuS1YzQixrQkFvS0U5WixhQURReWI7Y0F2SlZ6Qjs7OztVQTJIUTtXQUFONzFDLFFBbEtGdzFDLFdBNmxCaURwSSxNQXhuQmpEa0k7V0E4TFVyTyxhQTFYUjRLLE1Bb3pCdUIvWixTQTlOSjJaO1VBM05wQixHQWxNRDBEO1dBbU1jO1lBQVZxQyxnQkF6SUo1Qjs0QkF5SUk0QixXQUZNdlE7O1dBTVI7WUFBQSxVQTFlTmdLLHFCQW1lTWp4QyxPQUNRaW5DO1lBS2lCSztZQUFObm5DOzJCQUFBQSxPQUFNbW5DO2NBakkzQnVPOzs7OztXQWtKVTFQLGFBaFpSMEwsTUFvekJ1Qi9aLFNBOU5KMlo7V0F4VnJCb0Usc0JBc2pCaUR6SSxNQXBhdkNqSDs7Ozs7YUFvYWVyTyxZQTlOSjJaO1dBdFJrQyxJQXNjN0M4QyxTQXRjNkMsZ0JBcll4Qjl6QyxLQXkzQk5xM0IsVUE5Q1IsT0FBUHljOzs7Ozs7Ozs7Ozs7Ozs7V0F0Y2dDOztjQUNoQ3RNLGNBalVSNEosTUFvekJ1Qi9aLFNBOU5KMlo7OztxQkE4TjRCckU7cUJBQUFBO29CQUFBQTs7b0JBbGYvQzFyQzs7NEJBQUFBOzs7MEJBa2YrQzByQyxVQWxmL0MxckM7V0EyY3dCLE1BQUE7O1VBMWN6QixHQTFJRHl6QztXQTJJYztZQUFWc0MsaUJBRkYvMUM7NEJBRUUrMUMsV0FITXhQOzsrQkFDUnZtQyxTQURRdW1DO2NBbkVWNE47Ozs7Ozs7O1dBQUFBLGFBaUxGLFdBOWtCRnhGLHVCQTBGbUM1dkMsS0F5M0JkNHlDLFNBQWdDakc7Ozs7Ozs7O1VBcmdCakQ7V0FBQSxPQXZIQThIO1dBc0h5RCxPQXZIekREO1dBdUhFNzBDO2FBa2VKczNDLGlCQW9DbUJyRSxTQUFRdmIsU0E5bkJ6QmtkLHlCQThuQmlENUg7V0FwZ0J2Q3ZFLGNBaFRSZ0osTUFvekJ1Qi9aLFNBOU5KMlo7VUFyU3BCLEdBeEhEMEQ7V0F5SGM7WUFBVndDLGdCQUpGdjNDLFNBNURGdTFDOzRCQWdFSWdDLFdBRk05Tzs7V0FNOEI7WUFBQSxPQTNIeEN3TTtZQTJIRSxVQTNZTm5FLHFCQW1SSXFFLHNCQWtIVTFNO1lBS3dCUztZQUFQckQ7WUFBTm5sQzsyQkFQbkJWLFNBT21CVSxPQUFNbWxDLFFBQU9xRDtjQXZEbEN1TTs7Ozs7Ozs7OztVQWlIOEI7V0FxY2ErQixVQTVuQjNDMUM7V0E0bkJzQzJDLFNBN25CdEM1QztXQTZuQmlDNkMsU0E5bkJqQzlDO1dBK25CQTNEO2FBRGlDeUc7Z0JBQVVGO2tCQXgyQjdDdEc7O29CQSszQkEwQyxrQkF2Qm1CWCxTQUFRdmI7O2dCQUFrQjhmOzs7O29CQUFNeEs7MkJBQUFBOzs7Ozs7Ozs7OztpQkFTakQySzs7Ozt5QkFUaUQzSzttQkFBQUE7Ozs7Ozs7OztnQkFTakQySzs7O2NBVHNDRjtzQkFBV3pLLFVBU2pEMks7OzBCQVRpRDNLLFVBU2pEMks7V0FVRyxNQUFBOztVQUNQO1dBM2RNeDNDLFlBd2NGOHdDLE1BUUEwRztXQTdjVXJRLGNBaFhSbUssTUFvekJ1Qi9aLFNBOU5KMlo7VUFyT3BCLEdBeExEMEQ7V0ErRHdCLFlBN0R4QkU7Ozs7dUJBZ3BCRnJCLGtCQXZCbUJYLFNBQVF2Yjs7Z0JBMWpCWGtCLDRCQUFBQTtXQXdIQTtZQUFWZ2YsZ0JBaElKckM7NEJBZ0lJcUMsV0FGTXRROzs7V0FNMEI7WUFBQSxPQTNMcEMyTjtZQTJMRSxVQTNjTm5FLHFCQStRSWtFLGtCQXNMVTFOO1lBS3dCRztZQUFQeG5DO1lBQU5DOzJCQVJuQkMsT0FRbUJELE9BQU1ELFFBQU93bkM7Y0F2SGxDZ087Ozs7Z0JBc2pCaUR6STtnQkFBQUE7ZUFBQUE7O1dBemVoQztZQUFBLE9BQUEsZ0JBaFpjM3NDLEtBeTNCTnEzQjtZQXpldkIsT0FuSkZvZDtZQWtKcUQsT0FuSnJERDtZQWtKRXQxQztjQXVjSiszQztnQkFvQ21CckUsU0FBUXZiLGlCQTluQnpCa2Q7WUFzSlVoUSxXQTVVUjZNLE1Bb3pCdUIvWixpQkE5TkoyWjtXQXpRcEIsR0FwSkQwRDtZQXFKYzthQUFWOEMsY0FMRnQ0QyxPQXZGRmcyQzs2QkE0RklzQyxTQUZNalQ7O1lBTThCO2FBQUEsT0F2SnhDcVE7YUF1SkUsVUF2YU5uRSxxQkFtUklxRSxzQkE4SVV2UTthQUt3QkU7YUFBUHRsQzthQUFOSjs0QkFSbkJHLE9BUW1CSCxPQUFNSSxRQUFPc2xDOzs7Ozs7V0FNSDtZQUFBLE9BQUEsZ0JBNVpBemtDLEtBeTNCTnEzQjtZQTdkVCxPQS9KaEJvZDtZQStKRSxPQWhLRkQ7WUE4SkVuMUM7Y0EyYko0M0M7Z0JBb0NtQnJFLFNBQVF2YixpQkE5bkJ6QmtkO1lBa0tVN1AsYUF4VlIwTSxNQW96QnVCL1osaUJBOU5KMlo7V0E3UHBCLEdBaEtEMEQ7WUFpS2M7YUFBVitDLGdCQUxGcDRDLFNBbkdGNjFDOzZCQXdHSXVDLFdBRk0vUzs7WUFNOEI7YUFBQSxPQW5LeENrUTthQW1LRSxVQW5iTm5FLHFCQW1SSXFFLHNCQTBKVXBRO2FBS3dCRzthQUFQdmxDO2FBQU5MOzRCQVJuQkksU0FRbUJKLE9BQU1LLFFBQU91bEM7OztZQS9GbEN1UTs7OztxQkFzakJpRHpJO09BamRoQztRQUFBLE9BQUEsZ0JBeGFjM3NDLEtBeTNCTnEzQjtRQWpkdkIsT0EzS0ZvZDtRQTBLcUQsT0EzS3JERDtRQTBLRWgxQztVQSthSnkzQztZQW9DbUJyRSxTQUFRdmIsaUJBOW5CekJrZDtRQThLVXZQLGFBcFdSb00sTUFvekJ1Qi9aLGlCQTlOSjJaO09BalBwQixHQTVLRDBEO1FBNktjO1NBQVZnRCxnQkFMRmw0QyxTQS9HRjAxQzt5QkFvSEl3QyxXQUZNMVM7O1FBTThCO1NBQUEsT0EvS3hDNFA7U0ErS0UsVUEvYk5uRSxxQkFtUklxRSxzQkFzS1U5UDtTQUt3Qkc7U0FBUDFsQztTQUFOTDt3QkFSbkJJLFNBUW1CSixPQUFNSyxRQUFPMGxDO1dBM0dsQ2lROzs7O09BQUFBO1NBc0xGLFdBbmxCRnhGLHVCQTBGbUM1dkMsS0F5M0JOcTNCLGlCQUF3QnNWOztZQXgyQm5Ea0U7cUJBcU9Fb0QsY0FGc0JiLGdCQUFBTjtTQUFBTSxRQTRwQnhCRyxrQkF2Qm1CWCxTQUFRdmIsU0FBd0JzVjtxQkFub0J0QnVILGNBRkFmLGdCQUFBM2lDO1NBQUEyaUMsUUE0cEI3Qkksa0JBdkJtQlgsU0FBUXZiLFNBQXdCc1Y7cUJBbG9CakR3SCxlQUhnQ2pCLGlCQUFBSDtTQUFBRyxTQTRwQmxDSyxrQkF2Qm1CWCxTQUFRdmIsU0FBd0JzVjs7a0JBam9CakQwSDtxQkFnUmlCLGtCQXBSeUJ2MUM7TUFvUnpCLFNBd1luQnkwQyxrQkF2Qm1CWCxTQUFRdmIsU0FBd0JzVjs7a0JBam9CdEIySDtxQkFrUlYsa0JBdFI2QnQxQztNQXNSN0I7a0JBdFJxQm9DLFdBcW9CV3VyQztPQXVCbkQ0RyxrQkF2Qm1CWCxTQUFRdmI7O1VBcm9CSHNnQixTQUFnQnYyQyxNQUFoQjB4QyxPQUFnQjF4QztTQUFoQnUyQyxRQTRwQnhCcEUsa0JBdkJtQlgsU0FBUXZiOztvQkFsb0JFK2MsYUFIV3dELGVBQUF4MkM7O1FBQUF3MkM7OztnQkFxb0JXakw7a0JBQUFBLGVBQUFBOztzQkFBQUEsYUFBQUE7VUF4MkJuRGtFOztNQSszQkEwQyxrQkF2Qm1CWCxTQUFRdmIsU0FBd0JzVjs7S0FsVy9DLE9BcE5GeUk7SUFzTk07YUFtRFJ6RCxVQUNBa0csYUFBWXhnQixTQUFRMlo7S0FDdEI7U0FEYzNaLFlBQVEyWixTQUVNLE1BQUE7Z0JBQ3BCLGdCQWhsQjJCaHhDLEtBNmtCckJxM0I7T0FlVixNQUFBO01BVlUsSUFBTnlnQixNQUFNLDhCQWxsQnFCOTNDLEtBNmtCckJxM0I7U0FBUTJaLFdBS2Q4RyxLQUNtQixNQUFBO01BQ1Q7T0FBVkM7U0FBVTs4QkFwbEJpQi8zQyxLQTZrQnJCcTNCLFVBS055Z0IsTUFMTXpnQjtPQVFFb04sYUFoaEJWMk0sTUE2Z0JFMEcsYUFMYzlHO09BU051RSxVQWpoQlZuRSxNQXdnQlEvWixTQUtOeWdCO09BS0FFLG1CQURRekMsU0FGUndDO09BSUFFLGVBWE5KLGtCQVVNRyxvQkFBQUE7T0FHSixnQkFGSUMsY0FIUXhUO01BS1o7Ozs7O01BTUY7T0FGWUYsV0F6aEJSNk0sTUF3Z0JRL1osU0FBUTJaO09BbUJoQmtILGFBbkJKTCxrQkFrQkk1Z0Isa0JBQUFBO01BR0osZ0JBRklpaEIsWUFGUTNUOztJQUltQzthQWdKL0N3TCxhQUFhMVksU0FBUTJaO0tBQ3ZCLElBRGVVLFlBQUFyYTtLQUNmO1NBRGVxYSxjQUFRVixTQXhzQnJCRCx5QkF3c0JxQkM7TUFFcEIsVUFBQSxnQkFwdkJnQ2h4QyxLQWt2QnBCMHhDLFlBRXFELE9BRnJEQTtVQUFBSCxZQUFBRyxtQkFBQUEsWUFBQUg7O0lBRTREO2FBSXpFaUMsZUFBZW5jLFNBQVEyWixTQUFRdmxDO0tBQ2pDLElBRGlCaW1DLFlBQUFyYSxTQUFnQjNyQixRQUFBRDtLQUNqQztTQURpQmltQyxjQUFRVixTQTlzQnZCRCx5QkE4c0J1QkM7TUFFbkIsSUFDSjlyQyxJQURJLGdCQTF2QjZCbEYsS0F3dkJsQjB4QzthQUdmeHNDLGNBUUssV0FYVXdzQyxXQUFnQmhtQztVQUFBK2hDLFdBQUEvaEMsbUJBRy9CeEc7MEJBSCtCdW9DO09BTTdCO09BQUEsT0FBQSxXQXgxQkptQyx1QkEwRm1DNXZDLEtBd3ZCRnl0Qzs7O09BQWhCOEQsWUFBQUc7T0FBQUEsWUFBQUg7T0FBZ0I3bEMsUUFBQStoQzs7SUFXZDthQUlqQnFFLGNBQWN6YSxTQUFRMlo7S0FDeEIsR0FEZ0IzWixZQUFRMlosU0E3dEJ0QkQseUJBNnRCc0JDO0tBRWxCLFlBQUEsZ0JBendCNkJoeEMsS0F1d0JuQnEzQjs7cUJBR0EsT0FsQmRtYyxlQWVjbmMsU0FBUTJaOzs7VUFBUjNaLHFCQUFRMlosU0E3dEJ0QkQseUJBNnRCc0JDO01BTWhCLElBSUo5ckMsSUFKSSxnQkE3d0IyQmxGLEtBdXdCbkJxM0I7YUFVWm55QjtPQUNBLE9BcHRCRmdzQyxtQkF5c0JjN1osNEJBVVpueUI7TUFGa0I7T0FBQSxVQXZCcEJzdUMsZUFlY25jLGlCQUFRMlo7T0FRTjl1QztPQUFWZ3dDO01BQ0osV0FESUEsWUFBVWh3Qzs7S0FLWCxNQUFBO0lBQVk7YUFHakJvdkMsWUFHQUQsV0FBVWhhLFNBQVFVO0tBQU8sSUFHekIvVCxPQUhVcVQsVUFBVmdhO2tCQUdBcnRCO21CQUhrQitUOzttQkFHbEIvVDswQkFEK0IsZ0JBNXhCRWhrQixLQTB4QmpDcXhDLFlBQWtCdFo7OztrQkFHZSw4QkE3eEJBLzNCLEtBMHhCakNxeEMsV0FHQXJ0QjtrQkFIa0IrVDtJQUdtRDthQUlyRXVkLHFCQUFxQmplLFNBQVEyWixTQUFROXJDO0tBQ3ZDLElBRHVCd3NDLFlBQUFyYTtLQUN2QjtTQUR1QnFhLGNBQVFWO09BRTdCLFdBNzNCRnBCLHVCQTBGbUM1dkMsS0FpeUJJa0YsR0FBUjhyQztnQkFLekIsZ0JBdHlCNkJoeEMsS0FpeUJaMHhDO1dBQUFBLHVCQUFRVixTQXZ2QjdCRCx5QkF1dkI2QkM7VUFRMUIsZ0JBenlCOEJoeEMsS0FpeUJaMHhDLHVCQUFnQnhzQyxHQVFtQixPQVJuQ3dzQztPQVNQLFlBQUEsZ0JBMXlCbUIxeEMsS0FpeUJaMHhDOzs7Ozs7YUF3Qkg7Y0FBVjJELFVBeEJSQyxxQkFBcUI1RCxtQkFBUVY7Y0FBUlEsWUF3QmI2RDtjQXhCYTNELFlBQUFGOzs7O2FBZ0NqQixPQW53QkpOLG1CQW11QnFCUTs7OzthQUFBQSx1QkFBUVY7VUF2dkI3QkQseUJBdXZCNkJDO1NBYWIsY0FBQSxnQkE5eUJpQmh4QyxLQWl5QloweEM7O1VBa0JEO1dBQVZpRixZQWxCVnJCLHFCQUFxQjVELG1CQUFRVjtXQUFSWSxZQWtCWCtFO1dBbEJXakYsWUFBQUU7Ozs7VUFlRDtXQUFWdUcsWUFmVjdDLHFCQUFxQjVELG1CQUFRVjtXQUFScUIsWUFlWDhGO1dBZld6RyxZQUFBVzs7O2FBQUFZLFlBQUF2QixtQkFBQUEsWUFBQXVCOzs7Ozs7U0E0Qkg7VUFBVm1GLFlBNUJSOUMscUJBQXFCNUQsbUJBQVFWO1VBQVJxSCxZQTRCYkQ7VUE1QmExRyxZQUFBMkc7Ozs7U0FtQ2pCLE9BdHdCSm5ILG1CQW11QnFCUTs7V0FBQUgsWUFBQUcsbUJBQUFBLFlBQUFIOzs7V0FBQStHLFlBQUE1RyxtQkFBQUEsWUFBQTRHOztJQXVDNEI7YUFhakRyQixpQkFBaUJyRSxTQUFRdmIsU0FBUXliLE1BQUt0aUMsTUFBS3VpQyxPQUFNcEc7S0FDbkQsSUFEbUN5RyxTQUFBTixNQUFLSyxTQUFBM2lDLE1BQUswaUMsVUFBQUg7S0FDN0M7OztVQURtQ0s7YUFBS0Q7WUFBS0Q7b0JBQU12RyxNQUlyQjtvQkFKcUJBLE1BSWdCOzs7OzthQUozQndHO1lBQUtEO3FCQUFNdkcsTUFHckI7cUJBSHFCQSxNQUdnQjs7OzBCQUhoQkE7Ozs7WUFLZ0I7O1lBSHJDOztZQUFxQzs7WUFLckM7O1lBRUE7O1lBSkE7Ozs7YUFMZXVHOzBCQUFNdkc7Ozs7YUFNZ0I7O2FBSXJDOzthQUNBOzthQUhBOzthQUlBOzthQU5BOzs7O3NCQU5xQkE7Ozs7Y0FwMEJqRGtFLG1CQWsxQndDOztjQWwxQnhDQSxtQkFtMUJ3Qzs7Y0FuMUJ4Q0EsbUJBaTFCd0M7Ozs7Z0JBajFCeENBO1lBdTFCSyxPQXdDTDBDLGtCQTNEaUJYLFNBQVF2YixTQUF3QnNWO2VBQVh3Rzs7OztTQUFMQztVQUFVRjthQXAwQjNDckM7U0E0MUJLLE9BbUNMMEMsa0JBM0RpQlgsU0FBUXZiO1lBQWtCNmI7OzthQXAwQjNDckM7U0FvMkJLLE9BMkJMMEMsa0JBM0RpQlgsU0FBUXZiLFNBQXdCc1Y7WUFBaEJ5Rzs7O1lBQVVGO1FBaUNyQixNQUFBO1lBcjJCdEJyQztRQWcyQkssT0ErQkwwQyxrQkEzRGlCWCxTQUFRdmIsU0FBd0JzVjtXQUFOdUc7OztJQWlDVDthQTBCbENLLGtCQUNFWCxTQUFRdmIsU0FBUXNWLE1BQUs0TDtLQUNWO01BQVRDO1FBQVMsOEJBbDVCb0J4NEMsS0FpNUIvQjR5QyxTQUFRdmIsVUFBUnViO0tBRUYsT0FBQTtjQTcrQkZoRCx1QkEwRm1DNXZDLEtBaTVCL0I0eUMsU0FBcUIyRixRQUFMNUwsTUFDZDZMO0lBSTRCO1dBajFCNUJwSCwrQkFyRTZCcHhDO0dBdzVCUDtZQU81Qnk0Qyx1QkFBdUJ6NEMsS0FBSUU7SUFDN0IsSUFBWTYzQixNQWg2QlYyWSxxQkErNUJ1QjF3QztJQUV6QixJQUFJLGVBeDdERW1rQyxZQXU3RE1wTSxLQURpQjczQixRQUFKRixNQUVyQjs7OztLQUlJLFdBMThDTnV0QyxnQkFvOEMyQnJ0QztLQU1yQixPQUFBLFdBLy9CTjB2Qyx1QkF5L0J1QjV2Qzs7R0FNTTtZQUk3QjA0Qyx3QkFBd0IxNEM7O0tBQW1CcTZCO0tBQU50QztLQUMzQjhELFFBMTZCVjZVLHFCQXk2QndCMXdDO0lBRTFCO0tBQUksZUFsOERFbWtDLFlBaThETXRJLE9BOWtFVmtILGFBNmtFcUNoTCxPQUFiLzNCO0tBRXRCOzs7OztNQUVGLE9BQUEsV0F2Z0NBNHZDLHVCQW1nQ3dCNXZDLEtBQW1CcTZCOzs7Ozs7O09BNTNGM0MzQztPQVRBRjtPQWJBTDtPQUdBQztPQU1BRztPQXdDQU87T0FrNkNJNFY7T0ErUUFnQjtPQStHQVc7T0FvQkFLO09BcUJBQztPQXg2QkF4TDtPQXVoQ0p1TTtPQSs1QkErSDtPQVVBQztPQXpvRkFwZjtPQWdMQWM7T0EyZ0NBbVQ7T0F6MUJBNVI7T0E2eUNBa1U7T0EveENJdlQ7T0F1SUowQztPQStmQW9OOzs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7OztZQ3B3Q0F1TSxTQUFTNXBCLEdBQUU1aUI7SUFDYixJQUR3QjRyQixnQkFDeEI7aUJBQWlCdHNCO0tBQU8sa0NBRFhVLEdBQ0lWO3VCQUROc2pCLEdBQUU1aUI7SUFDZ0M7SUFBN0MsT0FBQSw0Q0FEd0I0ckI7O1lBRXRCNmdCLFNBQVM3cEIsR0FBRWxyQjtJQUNiLElBRHdCazBCLGdCQUN4QjtpQkFBaUJ0c0I7S0FBTyxtQ0FEWDVILEdBQ0k0SDt1QkFETnNqQixHQUFFbHJCO0lBQ2dDO0lBQTdDLE9BQUEsNENBRHdCazBCOztZQUV0QjhnQixVQUFVOXBCLEdBQUV2cEI7UUFBWXV5QjtJQUMxQixPQUFBLGtDQURZaEosR0FBRXZwQixJQUFZdXlCOztZQUl4QitnQixRQUFRdHpDLElBQUd1eUI7SUFBTSxPQVJqQjRnQix1QixZQVFRbnpDLElBQUd1eUI7R0FBNEI7WUFDdkNnaEIsUUFBUWwxQyxHQUFFazBCO0lBQU0sT0FQaEI2Z0IsdUIsWUFPUS8wQyxHQUFFazBCO0dBQTJCO1lBQ3JDaWhCLFNBQVN4ekMsSUFBR3V5QjtJQUFNLE9BTmxCOGdCLHdCLFlBTVNyekMsSUFBR3V5QjtHQUE2QjtZQUN6Q2toQixTQUFTcDFDLEdBQUVrMEI7SUFBTSxPQVBqQjhnQix3QixZQU9TaDFDLEdBQUVrMEI7R0FBNEI7WUFDdkNtaEIsT0FBT25oQixLQUFNLE9BSmIrZ0Isb0JBSU8vZ0IsS0FBd0I7WUFDL0JvaEIsUUFBUXBoQixLQUFNLE9BTGQrZ0Isb0JBS1EvZ0IsS0FBd0I7WUFFaENxaEIsU0FBU3JxQjtRQUFXZ0o7SUFDdEIsU0FBSS9CLElBQUd2cUI7S0FDSyxJQUFOekUsTUFBTTtLQUNWLG1DQURJQSxLQURDeUU7S0FHSCxPQUFBLFdBSk9zakIsR0FJUCw2QkFGRS9uQjtJQUVtQjtJQUN6QixPQUFBLGtDQUpJZ3ZCLFFBRGtCK0I7O1lBT3BCc2hCLFFBQVF0aEIsS0FBTSxPQVBkcWhCLGtCQU80QjkyQyxHQUFLLE9BQUxBLEVBQU0sR0FBMUJ5MUIsS0FBK0I7Ozs7T0FkdkMrZ0I7T0FJQUk7T0FDQUM7T0FTQUU7T0FiQU47T0FDQUM7T0FDQUM7T0FYQU47T0FJQUU7T0FXQU87T0FiQVI7T0FFQUM7T0FXQU87OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0NnQko7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBO0lBQ0E7SUFRQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUlRRSxPQUFPNzJDLEdBQUUwQjtJQUNmLElBRGV1TSxNQUFBdk07SUFDZjtVQURldU0sS0FFUCxNQUFBO2lCQUZPQSxRQUdSNm9DLGVBQUpDO0tBQXFCLEdBQUEsV0FBckJBLElBSFUvMkMsSUFHcUIsT0FBM0I4MkM7U0FIUWo2QixJQUFBNU8sUUFBQUEsTUFBQTRPOztHQUlPO1lBU3BCbTZCLGFBQWFqaEMsUUFBT2IsS0FBSWlCLFFBQU96VTtJQUNqQyxLQURpQ0EsR0FFekI7SUFDMkMsSUFBOUNtYixJQUg0Qm5iLE1BRy9Ca2YsSUFIK0JsZixNQUdrQixPQUFBLHVCQUhwQ3FVLFFBR2I2SztrQkFBNkI1Z0IsR0FBRUM7S0FBUyxXQUFBLHVCQUhwQmlWLEtBR1dqVjtLQUFTLE9BQUEsdUJBQVhEO0lBQWtCO0lBQXZDLFdBQUEsd0NBQUw2YztJQUFLLE9BQUEsNkJBSGdCMUc7R0FHaUQ7WUFZekU4Z0M7SUFBaUIsTUFBQTtHQUE4QjtZQUUvQ0MsU0FBU0M7SUFDWCxJQS9CTU4sbUJBOEJLTSxXQUU2QixJQUFBLFVBRHBDQzs7Ozs7TUFBQUE7OzJCQUhGSDs7O1FBNUJJSixtQkE4QktNLFdBTThCLElBQUEsVUFEckNFOzs7OztNQUFBQTs7NkJBUEZKOzs7SUFZUyxXQUFBLHVCQVRQRyxNQUlBQztJQUtPLE9BQUEsdUJBVkFGO0dBVWE7WUFHdEJHLFFBQVEveUMsS0FBSTR5QyxVQUFTSTtJQUN2Qiw2QkFEVWh6QyxVQUFhZ3pDO0lBRUksV0FmekJMLFNBYVlDO0lBRUo7O01BMUJtQks7TUFBTkM7TUFBTEM7aUJBQ2xCLHNCQUQ2QkY7O2VBQU5DO01BTWpCLE9BQUEsNkJBa0JJbHpDLFVBeEJRbXpDLEtBQVdGO0tBSU8sSUFEeEI5MUMsSUFIVysxQyxTQUlhLE9BVmxDVCxnQ0FTVXQxQztLQUNOLE9BQUEsNkJBb0JJNkMsVUF4QlFtekMsV0FBV0Y7O0lBMEJGLE9BQUE7R0FBbUI7WUFHNUNHLGFBQWFSLFVBQVNJO0lBQ2hCLElBQUpuMkMsSUFBSTtJQU5OazJDLFFBTUVsMkMsR0FEVysxQyxVQUFTSTtJQUV4QixPQUFBLDZCQURJbjJDO0dBRWE7WUFHZncyQyxNQUFNVCxVQUFTSTtJQUNKLFdBUFhJLGFBTU1SLFVBQVNJO0lBQ0osT0FBQTtHQUE4QjtHQUcvQixJQUFWTTtZQU1BcjJDLGtCQUFrQnhCO0lBQ3BCLElBQUksZUFBSywyQkFEV0EsS0FDaEI7OzsrQkFDYzs7O0dBQUk7WUFFcEI4QixvQkFBb0I5QjtJQUN0QixJQUFJLGVBQUssNkJBRGFBLEtBQ2xCOzs7K0JBQ2M7OztHQUFJO1lBRXBCODNDO0lBQWtDQyxjQUFhRixTQUFRRyxNQUFLYixVQUFTYyxTQUNuQ1Y7SUFDcEMsSUFBSVcsVUFGNkNMO2FBRzdDTSxjQUFjdnNDO0tBS2hCO01BQUl4SyxJQUFJO01BQ0pnM0M7UUFQRkYsVUFGcURGOzRCQUFBQSxTQUVyREUsYUFBQUE7O0tBU0YsT0FSZ0J0c0M7O1lBV0ovTCxJQVhJK0w7OytCQVdKL0w7a0NBQUFBO1NBQ04sNkJBUEZ1QixRQUNBZzNDLFVBS1F2NEM7OztZQUlTNnVDLFdBZkw5aUMsVUFlQW9aLE1BZkFwWixVQWVMbVcsTUFmS25XO1FBZ0JWLDZCQVhGeEssUUFDQWczQyxVQVNZcHpCLEtBQUxqRCxLQUFVMnNCOzs7WUFGVGhpQyxNQWJJZDtRQWNWLDZCQVRGeEssUUFDQWczQyxVQU9RMXJDOzs7WUFLQXNqQyxNQWxCSXBrQztRQW1CViw2QkFkRnhLLFFBQ0FnM0MsVUFZUXBJOztLQWxEWnNILFFBcUNJbDJDLEdBUndEKzFDLGFBQzFCSTtLQXdCSixLQUEzQixXQXRCYTNyQyxpQkFzQmMsV0F0QmRBO01Bd0JYLGdCQUFJLDZCQW5CTHhLO0tBa0JDLGlCQUFLLDZCQWxCTkE7SUFtQndCO0lBM0JtQnkyQzs7UUFBQUEsY0FBUUc7S0ErQnZEO01BQ1UsVUFoQ3FDSCxZQWpFekNoNEMscUJBaUVpRG00Qzs7O09BaUMxQixRQUEzQixzQkFsR0luNEMsYUFrR3VCLGdCQWxHdkJBOztTQW9HSTs7VUFBQSxPQTNHTmczQyxPQU9FaDNDLEdBaUVzRHMzQztVQWtDNUNrQjtVQUFSbnpCOzs7OztTQUdGO1VBckdBO1dBQUp2akIsSUFBSSw4QkFEQTlCO1dBRUpzRCxNQUFKLHNCQUZRdEQ7V0F1R2VtbEI7YUFwR0w7a0NBSFZubEIsR0FDSjhCLFdBQ0F3QixPQURBeEI7V0FzR1UyMkMsVUFwR2QsOEJBSFF6NEMsTUFDSjhCO1dBdUdnQyxhQURicWpCO1dBQ2IsTUEvR0o2eEIsT0E4R1F5QixTQXRDZ0RuQjtXQWtDNUNrQjtXQUFSbnpCOzs7OztXQU1nQixNQUFBLDBDQXpHbEJybEI7Ozs7WUFBQTZNLE1BQUE3TSxHQW1HVTA0QyxXQUFBRjtpQkFRUkc7U0FDRixLQVRVRCxVQVVBO2FBQ0h2ekIsTUFYR3V6QjtTQVdJLE1BQUE7K0JBOUdkN3JDLEtBOEdPc1k7UUFBbUQ7aUJBQ3hEeXpCO1NBQ0YsR0FiVUYsY0FpQkh2ekIsTUFqQkd1ekIsYUFpQkksT0FBUHZ6QjthQW5Ea0M2eUIsdUJBQVFHO1VBa0R4QyxNQUFBLDBDQW5IVHRyQztvQkFpRXlDbXJDO1NBaURPLHdCQWpEQ0c7UUFtRGhDO2lCQUVmVSxtQkFDRixPQXBCVUgsZ0JBbEMrQlYsaUJBd0QzQjtpQkFFUmM7U0FBZTs7Z0JBQ2hCOTVDLGNBakJIMjVDLFdBaUJRLE9BQUEsV0FBTDM1Qzs7WUFFTyxJQURQKzVDLGdCQXhFUTV6QixNQTBEWHl6QjtZQXpEVixJQUFJLElBQUEsV0FBSyx1QkFEWXp6Qjs7Ozs7Ozs7YUEyRUQsTUFBQTttQ0FoSVp0WSxLQXFEYXNZO2dCQTRFSm5sQjtZQUFLLFdBSlQrNEMsS0FJSS80QztZQUVQLE9BYkE2NEM7O2dCQWNFeDVDLGNBekJGczVDLFdBeUJFdDVDOztnQkFDRThvQixnQkExQkp3d0IsV0EwQkl4d0I7O1lBRU0sSUFETDZ3QixnQkFDRDV6QixRQXhCSnd6QjtZQXlCQSxXQUZLSSxLQUNENXpCO1lBQ0osT0FsQkF5ekI7O2dCQTZCU0ksZ0JBQUFBLFNBcENUTCxZQXNDQSxPQS9CQUM7O1lBaUNVO2FBRFJLO2FBQ0VDLFFBeENKUDthQXlDWSxVQS9GcEJqM0Msa0JBOEZZdzNDOzthQUVNLE1BQUE7bUNBekpadHNDLEtBdUpNc3NDO2dCQUdHaDVDO1lBQUssV0FKVis0QyxLQUlLLzRDO1lBRVAsT0F0Q0EwNEM7O1lBd0NVO2FBREpPO2FBQ0ZDLFFBL0NKVDthQWdEWSxVQXRHcEJqM0Msa0JBcUdZMDNDOzthQUVNLE1BQUE7bUNBaEtaeHNDLEtBOEpNd3NDO2dCQUdHM25DO1lBSkQwbkMsU0FJQzFuQztZQUVQLE9BN0NBbW5DOztZQStDVTthQUROUzthQUNBQyxRQXRESlg7YUF1RFksVUF6R3BCMzJDLG9CQXdHWXMzQzs7YUFFTSxNQUFBO21DQXZLWjFzQyxLQXFLTTBzQztnQkFHR0M7WUFBSyxXQUpSRixLQUlHRTtZQUVQLE9BcERBWDs7WUFzRFU7YUFERlk7YUFDSkMsUUE3REpkO2FBOERZLFVBaEhwQjMyQyxvQkErR1l5M0M7O2FBRU0sTUFBQTttQ0E5S1o3c0MsS0E0S002c0M7Z0JBR0dDO1lBSkNGLFNBSURFO1lBRVAsT0EzREFkOztnQkE0REllO1lBdkVKakI7WUF3RUEsT0FBQSw0QkF4RElHLGNBdURBYzs7WUF2Q00sSUFERUMsZ0JBQU54UCxpQkFDRnlQLFFBNUJKbEI7WUE2QkcsR0FBQSw0QkFEQ2tCLE9BREV6UDthQUdKLFdBSFV3UCxLQUNSQzthQUVGLE9BdkJGakI7O1lBMkJnQyxXQTNJeEMxQixrQ0FvSWM5TTtZQUtHLE1BQUE7Ozt5QkEvSVh4OUIsS0EySU1pdEMsT0FLMEI7OztnQkFxQzNCQztZQTFFSHBCO1lBOEVFO2dCQXhIcUNYLGVBQVFHO3dCQUFSSDthQXVIckMsV0FIQytCLHNCQXBINEM1QjthQXFEL0NVOzs7O2dCQXFFT21CO1lBaEZQckI7WUFrRlUsSUFBTnh2QztZQUdGO2dCQS9IcUM2dUMsZUFBUUc7Y0FpSTdDLE9BQUEsV0FQSzZCLEtBT0wsMkJBTEU3d0M7d0JBNUhtQzZ1QywyQkE0SG5DN3VDO2FBQUFBLDhCQTVIMkNndkM7YUFxRC9DVTs7OztnQkE2RUtvQjttQkFsSXFCL0I7YUFvSXhCLE1BQUE7O1lBRVEsSUFBTmdDLFFBeEZKdEIsWUF5Rkl1QixTQUFTLFdBTFJGLEtBSURDO1lBakZKckI7WUFvRmE7YUFBVGhmO2VBQVMsNEJBeklrQ3NlLFlBQVJIO2FBMEluQ3BlO2VBQ0Y7O2lCQTNJNkN1ZTtpQkFBUkg7a0JBQVFHLHFCQUFSSDtZQUFRRzthQTZJeEM7b0NBSkh0ZSxZQUZBc2dCLFlBR0F2Z0I7OztRQUdzQztRQW5GdENrZixhQXhCSnp6Qjs7O09BOEdELFdBaEo4RCt5QixTQWpFL0RwNEM7Ozs7OztXQWtOS3NoQjtPQUFXLE1BQUEsNEJBOUlwQmczQixrQkE4SVNoM0I7OztVQUNDaFc7TUFBVyxNQUFBLDRCQS9JckJndEMsY0ErSVVodEM7O0tBbEptQzBzQzs7R0FxSjdDO1lBRUZvQztJQUE4QnBDLFNBQVFHLE1BQUtiLFVBQVNjLFNBQVFWO0lBQzlELE9BeEpFTztnQkF1SjhCRCxTQUFRRyxNQUFLYixVQUFTYyxTQUFRVjtHQUNhO1lBRXpFMkMsbUJBQXFCbjRCLEtBQWlCaTJCLE1BQUtiLFVBQVNjLFNBQVFWO0lBQzlELEdBRHVCeDFCLFNBQVFFLE1BQVJGLFFBQUFvNEIsWUFBUWw0QixjQUFSazRCLFlBeEtyQnRDO0lBeUtGLE9BM0pFQztnQkEwSnFCcUMsZUFBaUJuQyxPQUFLYixVQUFTYyxTQUFRVjtHQUV0RDtZQUdONkMsV0FBYXI0QixLQUFpQmkyQixNQUFLYixVQUFTYyxTQUFRVjtJQUN0RCxHQURleDFCLFNBQVFFLE1BQVJGLFFBQUFvNEIsWUFBUWw0QixjQUFSazRCLFlBN0tidEM7SUE4S0YsT0FORXFDO2lCQUthQyxZQUFpQm5DLFVBQUtiLFdBQVNjLFNBQVFWO0dBQ2dCO1lBR3BFNUksTUFBTWp0QyxHQUFFN0MsR0FBRWdkO0lBQ1osSUFDRSxVQU5BdStCLGdDQUlNMTRDLEdBQUU3QyxHQUFFZ2QsTUFFVjs7OztVQUVJdytCO01BQU8sa0NBQVBBO01BQU8sT0FBQTs7O1NBQ05DO0tBQU8sa0NBQVBBO0tBQU8sT0FBQTs7R0FBdUI7WUFHbkNDLGNBQWM3NEMsR0FBRTdDLEdBQUVnZDtJQUNwQjtLQUNFLFVBbkJBcStCLHdDQWlCY3g0QyxHQUFFN0MsR0FBRWdkO0tBRWxCOzs7OztVQUVJdytCO01BQU8sa0NBQVBBO01BQU8sT0FBQTs7O1NBQ05DO0tBQU8sa0NBQVBBO0tBQU8sT0FBQTs7R0FBdUI7WUFFbkNFLGFBQWE5NEMsR0FBRTdDLEdBQUVnZDtJQUNuQjtLQUNhO01BQVBtOEI7TUFDQVAsV0FIUy8xQztNQUlUeTRDLGdCQXBNSnRDO01BcU1BLE1BaENBb0MsOEJBK0JJRSxXQUZBbkMsTUFDQVAsTUFIVzU0QyxHQUFFZ2Q7S0FLakI7Ozs7O1VBRUl3K0I7TUFBTyxrQ0FBUEE7TUFBTyxPQUFBOzs7U0FDTkM7S0FBTyxrQ0FBUEE7S0FBTyxPQUFBOztHQUF1QjtZQUduQ0csWUFBWTU2QztJQUNkLElBQUlzRCw0QkFEVXREO2FBRU42NkMsS0FBS2o3QztLQUNYLElBRFcwTyxNQUFBMU87S0FDWDtTQUZFMEQsT0FDU2dMLEtBQWIsT0FESWhMO01BR00sVUFBQSxnQkFKSXRELEdBRURzTyxNQUdOLE9BSE1BO01BRWMsSUFGZEUsTUFBQUYsYUFBQUEsTUFBQUU7O0lBR0w7SUFFUixJQUFNLElBQ0pGLE1BREksOEJBUFF0Tzs7OztLQVVWLElBQVksSUFDVkosSUFEVSw4QkFWRkk7Ozs0QkFZZSxPQVh6QnNEOzs7S0FTWSxPQVJSdTNDLEtBU0ZqN0M7O0lBSkEsT0FMRWk3QyxLQU1OdnNDO0dBS0s7WUFHTHdzQyxZQUFZdDdDO1FBQWdCbTRDLGdCQUFOQyxpQkFBTG1EO0lBQ25CLFVBRHdCbkQ7dUNBQVZwNEMsMkJBQUt1N0M7b0NBQUFBLE9BaEJqQkgsWUFnQjRCakQ7c0NBQWhCbjRDOztZQU1adzdDLG9CQUFvQmg3QztJQUNYLElBQVBOO2lCQUM0RGtEO0tBQXJELFNBQXFEQSxPQUQ1RGxELFNBQUFBLGFBQ3NEO0tBQVcsT0FBTGtEO0lBQU87SUFBdkUsT0FBQSxtQ0FGc0I1QztHQUVtRDtZQXlCdkVpN0MsTUFBUS80QixLQUFlbzFCO0lBQ3pCLEdBRFVwMUIsU0FBTUUsTUFBTkYsUUFBQWc1QixRQUFNOTRCLGNBQU44NEI7SUFDTTtLQUFaQyxZQXpSRjlELFNBd1J1QkM7S0FFckJoMEMsTUFBTSw0QkFuQ1J3M0MsZ0JBa0NFSztLQXhCVWgzQyxRQTBCSiwyQkFETmIsS0FGTTQzQztJQUlELGFBM0JTRTtTQU1mTCxNQU5lSyxRQU1WeEQsT0FOVXdEOytCQUFBQSxnQkFLZCxPQUxjQTtlQU1WeEQ7TUFDUztPQURXNEMsUUFOVlk7T0FPVkMsV0FqQ05ULFlBZ0MwQko7T0FFRSxNQUFBLDhCQVJoQnIyQyxRQU9OazNDO09BQ0FDLFdBQVM7T0FDZSxNQWI5Qk4sb0JBVTBCUjtPQUdMLE1BQUEsdUJBRGZjO01BQ0osV0FIRFAsS0FBS25ELE1BR1E7O0tBRUM7TUFESDU3QixNQVZJby9CO01BVVZHLFNBVlVIO01BV1ZJLFNBckNOWixZQW9DWTUrQjtNQUVOeS9CLFVBQUosc0JBTkRWO01BT0t2a0MsUUFiTXJTLFFBWU5zM0MsZUFEQUQ7S0FHSixRQURJaGxDLE1BRUYsV0FUSHVrQyxLQUlLUSxRQWROUCxvQkFjWWgvQjtLQU9LO01BQVQwL0IsU0FBUyw2QkFKWGxsQztNQUtzQixNQXRCNUJ3a0Msb0JBY1loL0I7TUFRSjlGLFNBQVMsc0NBUFhzbEM7TUFRRWxsQztRQUFTOztVQVRMMEY7VUFDTncvQjtnQ0FETXgvQixPQUNOdy9CO01BU21CLE1BQUEsdUJBSGpCRSxRQUVBcGxDO0tBQ0osV0FkSHlrQyxLQUlLUSxRQVVVLHVCQUZScmxDOztJQVNWLE9BQUEsaUNBSElpbEM7R0FHZ0M7WUFTbENRLFNBQVMvbEMsTUFBS1AsS0FBSXVtQztJQUNwQjtLQUFJNTNDLEtBQUssdUJBRFc0M0M7S0FFaEJsM0MsTUFBTTtLQUNObTNDO2FBQ0FDO0tBQ1MsSUFaSEMsT0FZRyw2QkFIVHIzQztLQUlGLEdBTlNrUjtVQU5QdFMsNEJBRE15NEM7OztPQUVJLE9BRFZ6NEMsY0FDVSxnQkFGSnk0QyxNQUNOejRDO2tCQUVGLDhCQUhReTRDLFNBQ056NEM7OztpQkFETXk0Qzs7VUFhSkM7OztVQUFBQSxTQWJJRDtLQVVORixlQUdFRyxRQUhGSDtLQUNKLE9BQUEsNkJBRkluM0M7SUFNYztJQUVsQjs7TUFFYyxJQUFKOUIsSUFBSSx1QkFYVm9CO1NBV01wQixNQVpNeVMsS0FJWnltQyxlQVNnQyw4QkFYaENwM0MsS0FVTTlCOzs7Ozs7WUFLUCw2QkFmQzhCLE1BRUFvM0M7S0FjSix1QkFqQkk5M0M7S0FrQlUsVUFBQSwyQkFoQlY2M0M7S0FnQlUsT0FBQTs7R0FBaUI7O0dBRWxCLFNBQVhJLGMsT0FyQkFOO0dBcUJXLElBQUE7R0FFQyxTQUFaTyxlLE9BdkJBUDtZQXlCQVEsVUFBVTltQyxLQUFJdW1DLE1BQUtRO0lBQ1osSUFBTGw1QyxLQUFLLHVCQURPMDRDO2lCQUVBNTdDLEdBQUssb0NBRGpCa0QsU0FDWWxELEdBRkpxVixLQUVnQztJQUE1QyxrQ0FGcUIrbUM7SUFFckIsT0FBQSx1QkFESWw1QztHQUVROztHQUVFLFNBQVptNUMsb0IsT0FMQUY7R0FLWTtHQUVDLFNBQWJHLHFCLE9BUEFIOzs7O09BakhBck47T0FRQTRMO09BWkFIO09BTEFGO09BSEFEO09BMkJBTzs7O09BcE1BNUM7T0FOQUQ7T0FzUUFtRDtPQTVQQWpEO09BOFJBaUU7T0FFQUM7T0FPQUc7T0FFQUM7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDOVlXOzs7Ozs7OztJQUVYQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRkFDLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFJWEMsTUFBTXQ4QyxHQUFFMkI7SUFDRixJQUFKOUMsSUFESW1CLE1BQUUyQjtJQUVILEtBQUEsMEJBREg5QztLQUVGLE9BQUEsa0NBRkVBO0lBR0M7T0FBRyxhQUhKQSxhQUlGLE9BQUEsa0NBSkVBO0lBS0M7V0FBRyxhQUxKQSxjQU1GLHVCQU5FQTtHQVFDO1lBRUMwOUMsYUFBYXY4QyxHQUFFMkI7SUFDckIsR0FEbUIzQixnQkFBRTJCLEdBQ0c7SUFDVSxJQUFBLE9BRjVCNDZDLGFBQWF2OEMsR0FBRTJCLFlBRUMsT0FicEIyNkMsTUFXaUJ0OEMsR0FBRTJCO0lBRWEsT0FBQTtHQUFzQjtZQVN0RDY2QyxhQUFheDhDO0lBQ2YsWUFNSyw2QkFqQ0hxOEM7SUEyQmE7aUJBS0w7U0FKQXI2QyxlQUFOQzs7O01BQ0UsSUFBTyxVQUFBLFdBRFRBLElBRldqQztrQkFLREgsWUFBSyxXQUFMQTs7aUJBSEptQzs7R0FLZ0I7WUFFeEJ5NkMsa0JBVU16OEM7SUFWYyxHQVVkQSxpQkFUVztPQVNYQSxrQkFSWTtPQVFaQTs7Z0JBQUFBO01BUG9CMDhDO01BQU5DO01BQU5sQjtLQUNaLE9BQUE7O2NBckNGVztjQW9DY1g7Y0FBTWtCO2NBQU1EO2NBQUFBOzs7T0FPcEIxOEM7O2dCQUFBQTtNQUxxQjQ4QztNQUFOQztNQUFOQztLQUNiLE9BQUE7O2NBdkNGVjtjQXNDZVU7Y0FBTUQ7Y0FBTUQ7Y0FBQUE7OztPQUtyQjU4Qzs7Z0JBQUFBO01BSGlDKzhDO01BQU5DO01BQU5DO0tBQ3pCLE9BQUE7O2NBekNGYjtjQXdDMkJhO2NBQU1EO2NBQU1EO2NBQUFBOzs7SUFJbEMsU0FBQSxhQURDLzhDLElBRVMsT0FGVEE7SUFLVyxJQURUazlDLGNBSkZsOUMsaUJBQUFBOztLQXJCNEI7TUFBQSxPQVQ5QnU4QyxhQThCRXY4QztNQXJCZ0IsT0FwQnRCczhDLE1BeUNNdDhDO2FBckI0Qjs7Ozs7Ozs7UUFEZDtTQUFBLE9BbkJwQnM4QyxNQXlDTXQ4QztnQkF0QmM7O0lBNEJGLE9BQUEsdUJBRlZrOUM7R0FFb0I7WUFFNUIxd0MsVUFBVXJCO0lBQ04sWUE1QkpxeEMsYUEyQlVyeEM7Z0JBR0YsT0FyQlJzeEMsa0JBa0JVdHhDO1FBRUx0TDtJQUFLLE9BQUxBO0dBQ3NCO1lBRTNCczlDLE1BQU1DLEtBQUlwNEI7SUFDWixJQUNFLFdBQUEsV0FGTW80QixLQUFJcDRCLE1BRVY7VUFDR3pUO0tBQ2dDLElBRGhDdlIsd0JBQUF1UixNQUNnQyxPQVRuQy9FLFVBUUd4TTtLQUNIO0tBQ0E7S0FDQSxNQUFBLDRCQUhHQTs7R0FHSTtZQUVQcTlDLFFBQU1ELEtBQUlwNEI7SUFDWixJQUNFLFdBQUEsV0FGTW80QixLQUFJcDRCLE1BRVY7VUFDR3pUO1NBQUF2Uix3QkFBQXVSO0tBQ0g7S0FDbUMsV0FsQm5DL0UsVUFnQkd4TTtLQUVIO0tBQUEsT0FBQTs7R0FDTTtZQU1OczlDLHNCQUFzQkMsSUFBSyxPQUFMQSxHQUFPO1lBa0M3QkMsc0JBQXNCRDtJQUN4QixXQUFTLG1DQURlQTtHQUVGO1lBRXBCRSxzQkFBc0Jwb0MsS0FBSWdHO2FBQ3hCSCxLQUFLd2lDO0tBQ1AsT0FET0E7cUJBRGVyb0M7cUJBQUFBO0lBS2lEO0lBRXpFLFNBUDRCZ0c7S0FlaEI7WUFmZ0JBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO01BZWhCLE1BZFJILEtBRHdCRztLQWN4QjthQUFLOzs7T0FkbUJBLFNBVW9CO0lBRU4sVUFYdENIO0lBV0UsV0FBSztHQUt1QztZQWNoRHlpQyxvQkFBb0JDLFNBQVFDO0lBQ0ksSUFiRUMsWUF2QmxDTixzQkFtQzRCSztTQVpNQyxXQUdoQyxPQUFBLDZCQVNrQkY7UUFQZi82QyxJQUw2Qmk3QyxvQkFLN0JqN0M7O1NBQ0hsQjs7TUFDUSxZQTFCVjg3QyxzQkF5QkU5N0Msb0JBREdrQixHQUNIbEIsT0FBQUE7O1dBR1dwRTtPQUFPLDZCQUdBcWdELGNBSFByZ0Q7O01BSFgsVUFBQW9FO2lCQUFBQTtVQUFBQTs7OztHQU9tRTtZQUdyRW84QyxnQkFBZ0JIO0lBQ2xCLE9BTEVELG9CQUlnQkMsU0FDVTtHQUFzQjtZQWVoREksd0JBQXdCSDtJQUNOLElBZEVDLFlBMUNwQk4sc0JBdUR3Qks7U0FiSkMsV0FHbkI7SUFFUztLQURMajdDLElBSmVpN0M7S0FLZDE4QyxJQUFJO1dBREx5QjtLQUNLOztTQUNSbEI7O01BQ1EsWUE3Q1Y4N0Msc0JBNENFOTdDLG9CQUZHa0IsR0FFSGxCLE9BQUFBOztXQUdXcEU7T0FBTyw2QkFKZDZELFFBSU83RDs7TUFIWCxVQUFBb0U7aUJBQUFBO1VBQUFBOzs7SUFLQSxPQUFBLDZCQU5JUDtHQVNpRDtZQUV2RDY4Qyx3QkFFaUJDO0lBRlMsYUFFVEEsV0FBQUEsV0FBQUE7R0FBZTtZQUVoQ0MseUJBQ2VELE9BRFksYUFDWkEsV0FBQUE7R0FDWTtZQVMzQkUsd0JBRWVGO0lBRlcsYUFFWEE7c0JBQUFBLFVBQUFBLFVBQUFBLFVBQUFBOztHQU1kO1lBRURHLHVCQUdlSDtJQUhVLFNBR1ZBLHlDQUFBQTtLQUFLLFdBQUxBO0lBRG9CO0dBQ0Q7WUFFbENJLGdCQUFnQlQ7SUFPWixZQS9GSkwsc0JBd0ZnQks7Z0JBUU47UUFDSEMsNEJBQUFBLDhCQU1EbjhDO0lBRm9CO2VBRXBCQTs7O3VDQU5DbThDLFdBTURuOEMsT0FBQUE7TUFBSyxvQkFBTEEsV0FBQUE7OztLQUNELGlCQVBFbThDOztHQVNJO1lBRVhTLDZCQUE2QkMsT0FDL0IsT0FyQkVGLG9CQW9CNkJFO0dBQ0o7WUFXekJDLHFCQUFxQmxCLElBQUssT0FBTEEsY0FBb0I7WUFXekNtQjtJQUFtQixPQTVFbkJWLHdCQTRFMkM7R0FBc0I7WUFLN0RXLGlCQUFpQkM7SUFDdkI7S0FBbUI7TUFBZkMsZUFBZSw2QkF6UGpCeEM7TUEwUEV5QyxtQkFGbUJGLElBQ25CQztNQUVBajRDO1FBQVUsNkJBM1BaeTFDLFVBeVBFd0MsY0FDQUM7TUFFSixVQURJbDRDO2VBQ0o7O0dBQXVDO1lBSXJDbTRDLFNBQ0UvK0MsR0FBSixhQUNHLGFBRENBLEtBQUFBLE9BQUFBLEVBQ3NDO1lBRXhDZy9DLFlBQVloL0MsR0FDSCxJQUFQcWIsT0FMRjBqQyxTQUlZLytDLElBRUwsT0FETHFiLFFBQzhCO1lBRWhDNGpDLGNBQWNqL0MsR0FDTCxJQUFQcWIsT0FURjBqQyxTQVFjLytDLElBRVAsT0FETHFiLFFBQ2lDO09BS25DNmpDO1lBZ0JBQywrQkFBbUMvNUIsS0FBSXk0QjtJQUNILFVBM09wQ3J4QyxVQTBPbUM0WTtJQUNyQztJQTdJRXU0QixnQ0E0SXVDRTtJQUc1QixJQUFUdUIsU0FBUztPQUFUQTtLQUVvQjtNQUFBLE1BQUEsdUJBRnBCQTtNQUVZLHVCQXJCZEY7S0FxQkE7O0lBQUEsT0FBQTtHQUNVO0dBRW1CLElBQTdCRyxpQ0FSQUY7WUFVQUcsK0JBQStCVjtJQUYvQlMsZ0NBRStCVDs7R0FBcUM7T0FFcEVXO1lBb0NBQywwQkFBMEJyNkIsT0FBSXM2QjtJQUNoQztLQTVCQTs7T0FHTTVCO1NBd0IwQjRCLGtCQXBDOUJGLGtCQWdCSTtNQUVKLElBQUs7TUFDTDtPQUNFO1FBQUEsTUFBQSxXQXhCRkYsK0JBd0MwQmw2QixPQXhCdEIwNEI7OztZQVNDNkI7T0FDa0I7UUFEbEJ0NkIsMEJBQUFzNkI7UUFDQ0Msa0JBQWlCO1FBQ2lCLE1BN1F4Q256QyxVQTBSMEIyWTtPQWJ4QjtPQS9LRnc0QixnQ0FvS0lFO09BY0EsVUFoUkpyeEMsVUEyUUs0WTtPQUlIO09BakxGdTRCLGdDQThLTWdDO2lCQU1KOzs7Ozs7O2dCQUdFOztLQU9KOztlQUdBO0dBQUU7R0FNSjsyQ0FYRUg7cUI7cUI7MEI7Ozs7T0FyS0F2QjtPQUlBRTtPQVdBQztPQVVBQztPQS9FQVo7OztPQS9EQWp4QztPQWxCQWl3QztPQXVCQVU7T0FRQUU7T0FxRkFVO09BNEZBVzs7O09BS0lDO09BOU5KbkM7T0FvREFjO3FCO09BcUVBSztPQW9CQUs7T0F3SEFtQjtPQVVBRztPQWpHQWhCO09Bb0JBQzs7T0FZQUU7Ozs7T0E0QkFPO09BSUFDOzs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztZQzNRQVcsUUFBTW45QyxVQUFNLE9BQU5BLEVBQU87WUFDYm85QyxLQUFLaGhELEdBQUVtQixHQUFFQyxHQUFJLE9BQUEsV0FBUnBCLEdBQUlvQixHQUFGRCxHQUFXO1lBQ2xCOC9DLE9BQU9od0MsR0FBRTlRLEdBQUksV0FBSSxXQUFWOFEsR0FBRTlRLEdBQWE7R0FFMUI7Ozs7SUFFc0MsZ0NBRS9CO0lBRGdELElBQXRDb21CLGdCQUFzQyxNQUFBLCtCQUF0Q0E7SUFBTyxXQUFLO0dBQ2xCO0dBRkY7WUFJTDI2QixRQUFVQyxXQUF3QkM7YUFDaENDO0tBQ0YsSUFBSSxXQUZNRixlQUVOO1dBQWdCamlDO01BQ1Q7T0FEUzVTLHdCQUFBNFM7T0FDZHcvQixLQUFLO09BQ3FCLDBCQUZacHlDO3NDQUNkb3lDO01BQ0osTUFBQTs7SUFBbUQ7SUFFdkQsSUFBTSxJQUNKdnNDLFNBREksV0FOOEJpdkM7VUFReEJFO0tBQ007TUFETkMsK0JBQUFEO01BQ0pFLFVBQVU7S0FSZEg7Z0NBT1FFLFVBQ0pDO0tBRUosTUFBQSw0QkFIUUQ7O0lBUFJGO0lBTVEsT0FBVmx2QztHQUlnRDt3QkFyQmhENHVDLFNBQ0FDLE1BQ0FDLFFBUUFDOzs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQzZDQU8sV0FBVzc5QztJQUNKLElBQUxnakIsS0FBSztJQUNULDZCQUZhaGpCLFFBQ1RnakI7SUFFSiw2QkFIYWhqQixRQUNUZ2pCO0lBR0osNkJBSmFoakIsUUFDVGdqQjtJQUlKLDZCQUxhaGpCLFFBQ1RnakI7SUFLSiw2QkFOYWhqQjtJQU9VLElBQW5CekIsS0FBbUIsc0JBQUEsa0NBTm5CeWtCO0lBT0osNkJBUmFoakIsUUFPVHpCLElBTkF5a0I7SUFRSiw2QkFUYWhqQixRQU9UekIsSUFOQXlrQjtJQVNKLDZCQVZhaGpCLFFBT1R6QixJQU5BeWtCO0lBVUosNkJBWGFoakI7SUFZVSxJQUFuQnhCLEtBQW1CLHNCQUFBLGtDQVhuQndrQjtJQVlKLDZCQWJhaGpCLFFBWVR4QixJQVhBd2tCO0lBYUosNkJBZGFoakIsUUFZVHhCLElBWEF3a0I7SUFjSiw2QkFmYWhqQixRQVlUeEIsSUFYQXdrQjtJQWVKLDZCQWhCYWhqQixRQVlUeEIsSUFYQXdrQjtJQWdCSiw2QkFqQmFoakIsUUFZVHhCLElBWEF3a0I7SUFpQkosNkJBbEJhaGpCLFFBWVR4QixJQVhBd2tCO0lBa0JKLDZCQW5CYWhqQjtJQW9CYiw2QkFwQmFBLFFBQ1RnakI7SUFvQkosNkJBckJhaGpCLFFBQ1RnakI7d0NBRFNoakIsUUFDVGdqQjtHQXFCd0M7WUFHMUM4NkI7SUFDRjtLQUFvQixRQUFBO0tBQU5DO0tBQUxDO0tBQUpDO0lBQ0wsUUFES0EsS0FBU0YsS0FBTEM7R0FDNEM7WUFtQm5ERSxhQUFhOWhELEdBQ2YsY0FFVztZQUdUK2hELGFBQWEvOUMsR0FBQUEsbUJBQWM7R0FtQlI7SUFBZmcrQzs7dUJBQ3NCLFNBQUk7dUJBQ0osU0FBSTt1QkFDUixTQUFJO3VCQUNFLFNBQUU7dUJBQ0YsU0FBRTtZQU8xQnY4QixNQUNEdzhCLGVBQ0MvK0IsS0FDRmcvQjtJQUNBLEdBRkVoL0I7U0FBaUJFLE1BQWpCRixRQUFBaS9CLGlCQUFpQi8rQjs7U0FBakIrK0I7SUFFRixPQUFBLDJCQUhDRixlQUNDRSxnQkFDRkQ7R0FDNEM7aUJBaEIxQ0YsY0FZQXY4QjtxQjs7Ozs7T0FuRkpnOEI7T0F5QkFDOzBCOzs7T0FxQkFJO09BTUFDOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7O0lDeEdBcjJDO0lBQ0FOOzs7OztZQUtBZzNDLE9BQU8xakQ7SUFDVCxPQUFBLGdCQURTQSw4QkFBQUE7R0FDOEI7WUFFckMyakQsTUFBTTkvQyxHQUFJLE9BSFY2L0MsT0FHaUIsNkJBQVg3L0MsSUFBcUM7WUFFM0MrL0MsVUFBVTVqRCxLQUFJMkYsS0FBSUM7SUFDcEIsUUFEZ0JELFlBQUlDLDhCQUFSNUYsT0FBUTRGLFlBQUpEO0tBR1gsT0FBQSxnQkFITzNGLEtBQUkyRixLQUFJQztJQUVmLE9BQUE7R0FDeUI7WUFFNUJpK0MsU0FBU2hnRCxHQUFFOEIsS0FBSUM7SUFBTSxPQUxyQmcrQyxVQUsrQiw2QkFBdEIvL0MsSUFBRThCLEtBQUlDO0dBQWtEO1lBRWpFczRDLEtBQUs0RjtJQUNFLElBQUx4OUMsS0FBSyx1QkFERnc5QztJQUVQLElBQU0sSUFDRnBpQyxJQURFLHNCQURGcGI7VUFHVWthO1NBQUE1Uyx3QkFBQTRTO0tBQUssdUJBSGZsYTtLQUc0QixNQUFBLDRCQUFsQnNIOztJQURMLHVCQUZMdEg7SUFFSyxPQUFMb2I7R0FDbUM7WUFFckNoYyxPQUFPSyxNQUFLZytDLFFBQ2QsT0FBQSx1QkFEU2grQyxNQUFLZytDLFFBQ1c7WUFFdkIxOUMsTUFBTU4sTUFBTyxPQUFBLHVCQUFQQSxVQUFrQztZQUV4Q2krQyxTQUFTOWhELEdBQ1gsZ0JBRFdBLG9CQUFBQSxZQUNpRTtZQUUxRStoRCxPQUFPdmlDO0lBQ1QsZ0NBRFNBO0tBQ3FCO0lBQ2pCLElBQVRqTyxTQUFTLHVCQUNiclA7O0tBQ29CLElBQWQzQixJQUFjLGdCQUpYaWYsR0FHVHRkOzJCQURJcVAsUUFDSnJQLFdBTkU0L0MsU0FPSXZoRDsyQkFGRmdSLFNBQ0pyUCxvQkFORTQvQyxTQU9JdmhEO0tBRE4sVUFBQTJCO2VBQUFBLEdBS0EsT0FBQSw2QkFOSXFQO1NBQ0pyUDs7R0FLNkI7WUFFM0I4L0MsU0FBUzVoRDtJQUNYLGdDQURXQTtLQUNtQjtJQUFBLFNBQzFCNmhELE1BQU1qL0M7S0FDUixTQURRQTtlQUFBQTtnQkFBQUEsV0FBQUE7O21CQUFBQSxXQUFBQTs7a0JBQUFBLHFCQUFBQTtLQUtELE1BQUE7O0lBQTBDO0lBR3RDLElBQVR1TyxTQUFTLHVCQUNiclA7O0tBRmlDO01BQXhCQyxVQUVURDtNQUZpQyxNQVA3QisvQyxNQU9tQyxnQkFUNUI3aEQsR0FTRitCO2FBUEw4L0MsTUFPZSxnQkFUUjdoRCxHQVNGK0I7S0FHUCx1QkFGRW9QLFFBQ0pyUCxHQUNxQjtLQUFuQixVQURGQTtlQUFBQSxHQUdBLE9BQUEsNkJBSklxUDtTQUNKclA7O0dBRzZCOzs7O09BeEQzQjRJO09BQ0FOO09BS0FnM0M7T0FHQUM7T0FFQUM7T0FLQUM7T0FFQTNGO09BTUF4NEM7T0FHQVc7T0FLQTQ5QztPQVVBQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDNUJFRSxpQkFBZSxXQUFPLGtDQUEwQjtZQUNoREMsT0FBT0MsS0FBSUM7SUFDYiw2QkFEYUEsV0FBSkQ7SUFBQUEsU0FBSUM7O0dBRUs7WUFHaEJDLFVBQVVsaUQsR0FBRW1pRDtJQUNkO0tBS0lDLGVBTlVELDJCQUFBQTtLQU9WdGdELElBREF1Z0Q7S0FFSnJnRDs7S0FDRSxpQkFUVS9CLE1BUVorQixTQUFBQSxPQUFBQTtLQUNFLFVBREZBO2VBQUFBO1NBQUFBOztJQUdXO0tBQVA2QztnQkFDYywrQkFMZC9DO0tBSU87O1NBQ1hDOztNQUd3QjtPQUZsQitULElBRE4vVDtPQUVNMnFCLGFBRk4zcUIsR0FMSUQ7T0FOYTFCLHFCQUtiaWlELFFBUUUzMUIsT0FBQUE7T0FiTTNuQixTQVVSRjtPQVZ1QyxNQUFBLDJCQUExQnpFO09BQWtCLE1BQUEsdUJBQXZCMkU7TUFVUkYsVUFWK0I7TUFHcEI7T0FGSHdhLElBU1J4YTtPQVBXLE1BQUEsZ0JBRkh3YTtPQUM2QyxNQUFBLGdCQUQ3Q0E7T0FDbUIsTUFBQSxnQkFEbkJBO2VBQ0EsZ0JBREFBOytCQUZBcGYsTUFhTjZWLE9BQUFBO01BR0osaUJBaEJVN1YsTUFhTjZWLE9BQUFBO01BRE4sVUFBQS9UO2lCQUFBQTtVQUFBQTs7O0lBWlk5Qjs7R0FrQkY7WUFHUmQsS0FBS2lqRDtJQUNNLElBQVRoeEMsU0E1QkYyd0M7SUFNQUksVUFzQkUvd0MsUUFER2d4QztJQUVQLE9BREloeEM7R0FFRTtZQUdKa3hDLHNCQUFvQixPQU5wQm5qRCxLQU15Qix5QkFBZ0I7WUFFekNzVixLQUFLeFU7SUFDTSxJQUFUbVIsU0FwQ0Yyd0M7SUFDQUMsT0FtQ0U1d0MsUUFER25SO0lBRVAsT0FESW1SO0dBRUU7WUFJSm14QyxLQUFLdGlEO0lBQUFBLFFBQUFBO0lBRU07V0FGTkE7S0FFSHVpRCwwQkFGR3ZpRDtZQUFBQTtLQUdId2lEO3dCQUhHeGlEO1VBRUh1aUQsVUFBQUE7O0tBR0FFLFdBRkFEO1dBSEd4aUQ7SUFNUCxpQkFOT0Esc0JBS0h5aUQ7SUFDSixPQURJQTtHQUVJO1lBR0ZDLE9BQU8xaUQsR0FBRUo7SUFDZjtLQUFRLElBQUpQLElBWEZpakQsS0FVV3RpRCxJQUVUYixhQURBRSxHQURXTzt1QkFBQUEsb0JBQ1hQLElBQ0FGLFFBQytDLE9BRC9DQTs7R0FDZ0Q7WUFFbER3akQsTUFBSTNpRCxHQUFFNGlEO0lBQ1IsaUJBRFFBLGFBQUFBLE9BR0gsT0FSQ0YsT0FLQTFpRCxHQUFFNGlEO0lBRUgsT0FBQTtHQUNjO1lBMkJqQkMsU0FBUzdpRCxHQUFFNGlEO0lBQ2IsUUFEYUEsT0FFWCxPQUFBO3FCQUZXQSxPQU1YLE9BekNJRixPQW1DSzFpRCxHQUFFNGlEO0lBeEJiO0tBQ1MsSUFBTEUsS0F0QkZSLEtBNkNTdGlELElBdEJQK2lELEtBdkJGVCxLQTZDU3RpRCxJQXhCUGdqRDtRQXdCU0o7O09BakJMSyxRQUxKRix3QkFEQUQ7T0FFSWhpRCxVQUhKa2lEO09BR0MzakQsSUFJRzRqRDs7TUFLSztPQUFMQyxLQWpDTlosS0E2Q1N0aUQ7T0FyQk5tb0IsUUFTRys2Qix5QkFWSkgsc0JBREFEO09BRUkzaEM7T0FBQXJnQixVQUFBcWdCO09BQUg5aEIsSUFBQThvQjtTQWtCRGhwQixhQWxCQ0UsR0FxQlF1akQ7VUFyQkw5aEQsVUFxQks4aEQsd0JBckJSdmpELElBa0JERixRQUM4QyxPQUQ5Q0E7O0dBU1k7WUFZZGdrRCxNQUFNbmpELEdBQUU0aUQ7SUFDVixHQUFHLGVBRE9BO0tBRUwsT0FBQTtJQVZMO0tBQXNCO01BQWxCRSxLQXZERlIsS0ErRE10aUQ7TUFQSitpRCxNQXhERlQsS0ErRE10aUQ7TUFOSlgsSUFGQXlqRCxLQUNBQztNQUVBNWpELElBQUksU0FESkUsR0FNTXVqRDtLQUpQLEtBQUEsaUJBRkN2akQsSUFDQUYsMEJBS015akQ7TUFGTCxPQUhEempEOztHQVFpQjtZQWFuQmlrRCxNQUFNcGpELEdBQUU0aUQ7SUFDVixHQUFHLGVBRE9BO0tBRUwsT0FBQTtJQVhMO0tBQVM7TUFBTEUsS0FBSyxvQkF0RVBSLEtBK0VNdGlEO01BUkoraUQsS0FBSyxzQkFBaUIsb0JBdkV4QlQsS0ErRU10aUQ7TUFQSmtqRCxLQUFLLHNCQUFpQixvQkF4RXhCWixLQStFTXRpRDtNQU5KWCxJQUFJLGNBSEp5akQsSUFHbUIsY0FGbkJDLElBQ0FHO01BRUEvakQsSUFBSSx1QkFESkUsR0FNTXVqRDtLQUpQOztPQUFBO1NBQUEsZUFGQ3ZqRCxHQUNBRjtTQUNlLHVCQUFVLGdDQUluQnlqRDtNQUZMLE9BSER6akQ7O0dBUWlCOztJQUduQmtrRDs7a0JBRU9yakQsR0FBRTRpRCxPQUFTLE9BeEJsQk8sTUF3Qk9uakQsR0FBRTRpRCxPQUFnRTs7U0FDbEU1aUQsR0FBRTRpRDtTQUFTLE9BQUE7a0JBVGxCUSxNQVNPcGpELEdBQXVDLG9CQUFyQzRpRDtRQUFnRTtZQVd6RVUsUUFBTXRqRCxHQUFFNGlEO0lBQVEsSUFMZHIyQyxLQTlGRisxQyxLQW1HTXRpRCxJQUpKeW9CLEtBL0ZGNjVCLEtBbUdNdGlEO0lBQVUsUUFMZHVNLG1CQUNBa2Msb0JBSU1tNkI7R0FBMkI7WUFFbkNXLEtBQUt2akQsR0FBSSxjQXJHVHNpRCxLQXFHS3RpRCxnQkFBdUI7R0FNcEIsSUFBVjhKO1lBZ0JBMDVDLGNBQVUsT0EzSFJsQixLQTJHRng0QyxXQWdCNEI7WUFDNUIyNUMsTUFBSWIsT0FBUSxPQTdHVkQsTUE0RkY3NEMsV0FpQkk4NEMsT0FBK0I7WUFDbkNjLFdBQVNkLE9BQVEsT0FoRmZDLFNBOERGLzRDLFdBa0JTODRDLE9BQW9DO1lBQzdDZSxRQUFNZixPQUFRLE9BL0RaTyxNQTRDRnI1QyxXQW1CTTg0QyxPQUFpQztZQUN2Q2dCLFlBQVVoQixPQUFRLE9BMUNoQlMsVUFzQkZ2NUMsV0FvQlU4NEMsT0FBcUM7WUFDL0NpQixRQUFNakIsT0FBUSxPQWpEWlEsTUE0QkZ0NUMsV0FxQk04NEMsT0FBaUM7WUFDdkNrQixRQUFNQyxPQUFRLE9BOUJaVCxRQVFGeDVDLFdBc0JNaTZDLE9BQWlDO1lBQ3ZDQyxjQUFVLE9BN0JSVCxLQU1GejVDLFdBdUI0QjtZQUU1Qm02QyxZQUFVOUIsTUFBTyxPQXhLZkQsVUErSUZwNEMsV0F5QlVxNEMsTUFBbUM7WUFDN0NqekMsS0FBS2l6QyxNQUFPLE9BektWRCxVQStJRnA0QyxlQTBCS3E0QyxPQUF5QztZQUM5QytCLGlCQUFlLE9BRmZELFlBRXlCLHlCQUFlO1lBSXhDRSxpQkFBZSxPQWpKYjN2QyxLQWtIRjFLLFdBK0JpQztZQUNqQ3M2QyxVQUFVcGtELEdBQUksT0FwTForaEQsT0FvSkZqNEMsV0FnQ1U5SixHQUEwQjs7OztPQU5wQ2tQO09BREErMEM7T0FFQUM7T0FYQVY7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUU7O1FBakpFOWtEO1FBTUFtakQ7UUFFQTd0QztRQU9BOHRDO1FBZUFLO1FBOEJBRTtRQWtCQU07UUFzQkFFO1FBTkFEO1FBb0JBRTtRQUVBQztPQXFDRlk7T0FDQUM7OztFOzs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQy9LQUMsa0JBQWtCdGpDO0lBQ3BCLFdBRG9CQSwwQ0FBQUE7O0dBRUM7WUFFbkJ1akMsdUJBQXVCdmpDLEdBQUFBLFNBQUFBLG1CQUNTO09BTTVCLElBQUEsTUFBQSxrQ0FERndqQzs7OztJQUVGLElBQUksSUFBQSxNQUFBOzs7Ozs7UUFGRkE7O0dBR0o7SUFKRUMscUJBSUYsOEJBSElEO0lBS0ZFLGlCQU5BRDtZQVFBRSxpQkFGQUQsNEJBRWlDO1lBQ2pDRSxxQkFBbUIsT0FIbkJGLGNBRzhCO0dBRWxCO0lBQVpHLDRCO1lBUUlDLGNBQWMxa0QsR0FBRVA7SUFDdEIsSUFEb0I4UixNQUFBdlI7SUFDcEI7UUFEc0JQLEtBQUY4UixLQUNMLE9BREtBOzBCQUFBQSxjQUVzQixPQUZ0QkE7U0FBQThuQyxNQUFBOW5DLGFBQUFBLE1BQUE4bkM7O0dBR1E7WUFFMUIxOUIsT0FBU29HLEtBQXNCNGlDO0lBQ2pDLEdBRFc1aUMsU0FBU0UsTUFBVEYsUUFBQTZpQyxTQUFTM2lDLGNBQVQyaUMsU0FsQlROO0lBbUJNLElBQUp6a0QsSUFORTZrRCxrQkFLMkJDO0lBRWpDLEdBRldDOzswQkFiVEg7OztXQUFBQTswREFBQUEsUUFBQUE7TUFlRXpDLE9BQXNCOztTQUF0QkE7SUFDSixjQUFrRCxlQUY5Q25pRCxPQUNBbWlELE1BREFuaUQ7R0FFa0U7WUFFcEV3dEIsTUFBTXpNO0lBQ1IsZUFEUUE7O2VBQUFBOzs7Y0FHTiw0QkFITUEsU0FBQUE7O0dBSUw7WUFFRG1RLE1BQU1uUTtJQUNSLElBQUl6ZCxNQURJeWQ7WUFBQUEsZ0JBQ0p6ZCxRQUVPLHVCQUhIeWQ7S0FBQUE7S0FBQUEsT0FPSSxlQUFXLHVCQVBmQTs7O0lBSU4sT0FWQXlNLE1BTU16TTtHQVFMO1lBRURpa0M7SUFBa0IsWUFDVDtJQVlNO0tBWFRuTjtLQUFLanNCO0tBQU1yakI7S0FXWHZMLGFBWEE2NkMsS0FBS2pzQixNQUFNcmpCO0tBT0Y3TCxPQUlUTTtlQVhXdUw7O21CQVlmLE9BREl2TDtLQVBlO01BRFRpb0Q7TUFBSzM0QjtNQUFNNDRCO01BQ1hyb0QsYUFEQW9vRCxPQUFLMzRCLFFBQU00NEI7S0FJUnhvRCxVQUhIRztTQUdHSCxPQUhIRyxrQkFEV3FvRDs7R0FVcEI7WUFFSDF3QyxLQUFLdU07SUFBSTtZQUFKQTtZQUFBQTtLQUFvQixPQUFBLDZCQWpCekJpa0MsaUJBaUJLamtDO0lBQUksV0FBSkE7R0FBc0Q7WUFFM0Q1UyxPQUFPNFMsR0FBSSxPQUFKQSxLQUFVO1lBRWpCb2tDLG1CQUFtQkMsVUFBU0MsU0FBUUMsT0FBTUM7SUFDNUM7S0FBSUMsUUFEd0NEO0tBRXhDRSxhQUFhLGVBRGJEO1lBRGtDRjtLQWtCdEM7O1NBQUF2akQ7O01BQ2dCLElBQUEsMEJBbkJzQnVqRCxPQWtCdEN2akQsU0FBQUEsTUFiSStyQjtNQUZvQjtZQUVwQkE7T0FDRTtRQURJK3BCLE1BQU4vcEI7UUFBV2xDLE9BQVhrQztRQUFpQnZsQixPQUFqQnVsQjtRQUNNTyxTQU5vQmczQixVQUsxQnYzQixXQUFNK3BCLEtBQUtqc0I7UUFLTDg1QixPQUFPLFdBVklOLFVBS1h2TjtRQVFHOXBCLHlCQVhUMDNCLFlBUU1DLFVBQUFBO1VBR0czM0I7UUFBQUEsV0FQSE07O1FBTU8saUJBWjJCazNCLE9BVWxDRyxVQUFBQSxRQUpBcjNCO09BU0osaUJBYkZvM0IsWUFRTUMsVUFBQUEsUUFKQXIzQjtXQUROUCxPQUFpQnZsQjs7TUFjbkIsV0FERnhHO2tCQUFBQTtVQUFBQTs7O09BbEI4QnNqRDtLQXNCNUIsV0FyQkVHLGVBcUJGOztVQUFBMWpEOztPQUNRLElBRUM2akQsMkJBdkJQRixZQW9CRjNqRCxPQUFBQTtVQUdTNmpELFNBQUFBO09BSFQsV0FBQTdqRDttQkFBQUE7V0FBQUE7Ozs7OztnQkF0QjRCdWpEOztHQTBCeEI7WUFFSmwwQixPQUFPaTBCLFVBQVNya0M7SUFDbEI7S0FBSXVrQyxRQURjdmtDO0tBRWQ2a0MsUUFEQU47S0FFQUUsUUFEQUk7WUFDQUo7O0lBRVUsSUFBUkQsUUFBUSxlQUZWQyxXQUdFSCxjQTdHSmhCLGtCQXVHZ0J0akM7SUFBQUEsT0FLWndrQztJQUdKLE9BcENBSixtQkFvQ21CLFdBUlpDLFVBQVNya0MsSUFNWnNrQyxTQUxGQyxPQUlFQztHQUlIO1lBRURqOEMsS0FBS3RLLEdBQUUraEI7SUFNTSxJQUFYOGtDLFdBeEhGeEIsa0JBa0hPdGpDO1dBTUw4a0MsVUFwSEZ2Qix1QkE4R092akM7SUFPWTtTQUVmM0IsSUFURzJCLGFBU0gzQjs7VUFDSnRkOztvQ0FESXNkLEdBQ0p0ZCxPQUFBQTtPQVRrQjs7WUFHWCsxQyxnQkFBS2pzQixpQkFBTXJqQjtRQUNkLFdBTEN2SixHQUlFNjRDLEtBQUtqc0I7b0JBQU1yakI7O09BT2hCLFdBREZ6RzttQkFBQUE7V0FBQUE7OztvQkFKRStqRCx3QkFwSEZ2Qix1QkE4R092akM7S0FhYzs7VUFDbEJ1RTtTQUFBQywwQkFBQUQ7S0FBUyxHQVJWdWdDLDRDQVFDdGdDO0tBNUhIKytCLHVCQThHT3ZqQztLQWdCUCxNQUFBLDRCQUZHd0U7O0dBRU07WUFzQlR1Z0MsbUJBQW1COW1ELEdBQUUraEI7SUFDdkIsSUFBSTNCLElBRG1CMkIsTUFFbkI4a0MsV0ExSkZ4QixrQkF3SnFCdGpDO1dBRW5COGtDLFVBdEpGdkIsdUJBb0pxQnZqQztJQUdGO2dCQUZqQjNCOztVQXJCZ0N0ZDs7T0EwQk0sSUFBQSwwQkFObkJpZixNQXBCYWpmLE9BQUFBLElBQUVwRixVQU05QjhlOzthQUFBQTtRQUNRO1NBRE5xOEIsTUFBRnI4QjtTQUFPb1EsT0FBUHBRO1NBQWFqVCxPQUFiaVQ7U0FDUSxRQUFBLFdBYUt4YyxHQWRYNjRDLEtBQUtqc0I7O2FBS0pVO1NBQ0gsR0FaOEI1dkI7VUFBQUEsVUFNOUI4ZTs7VUFPVyxpQkFPSXVGLE1BcEJhamYsT0FBQUEsS0FNNUIwWjtTQUFBQSxVQUtHOFE7YUFYMkI1dkIsT0FNOUI4ZSxNQUFBQSxPQUFhalQ7O2FBY0V3WSxPQUFBQSxrQkFkZnZGLE9BQWFqVDs7VUFOaUI3TCxNQUFBQSxrQkFHdkIsaUJBaUJRcWtCLE1BcEJhamYsT0FBQUE7T0EwQmhDLFdBMUJnQ0E7bUJBQUFBO1dBQUFBOzs7b0JBc0JoQytqRCx3QkF0SkZ2Qix1QkFvSnFCdmpDO0tBUUE7O1VBQ2xCdUU7U0FBQUMsMEJBQUFEO0tBQVMsR0FQVnVnQyw0Q0FPQ3RnQztLQTdKSCsrQix1QkFvSnFCdmpDO0tBV3JCLE1BQUEsNEJBRkd3RTs7R0FFTTtZQUVUdGIsS0FBS2pMLEdBQUUraEIsR0FBRTdSO0lBT0ksSUFBWDIyQyxXQTVLRnhCLGtCQXFLT3RqQztXQU9MOGtDLFVBeEtGdkIsdUJBaUtPdmpDO0lBUVk7S0FHUixJQURQM0IsSUFWRzJCLE1BV0h4UixhQVhLTCxjQVVMa1Esc0JBQ087O1VBQ1h0ZDs7T0FDb0I7UUFaRjhSLFNBVWRyRTtRQVZZdzJDLHVCQVNaM21DLEdBRUp0ZCxPQUFBQTtRQVhnQlAsSUFBQXdrRDtRQUFFbmhELE9BQUFnUDtPQUNsQjthQURnQnJTO1FBS0c7U0FEWnMyQyxNQUpTdDJDO1NBSUpxcUIsT0FKSXJxQjtTQUFBZ0gsT0FBQWhIO1NBQUV1RCxTQUtDLFdBTmQ5RixHQUtFNjRDLEtBQUtqc0IsTUFKTWhuQjtTQUFGckQsSUFBQWdIO1NBQUUzRCxPQUFBRTs7T0FVZHlLLFlBVmMzSztPQVdsQixXQUFBOUM7bUJBQUFBO1dBQUFBOzs7WUFMRStqRCxVQXhLRnZCLHVCQWlLT3ZqQztnQkFXSHhSOzs7VUFNRCtWO1NBQUFDLDBCQUFBRDtLQUFTLEdBVlZ1Z0MsNENBVUN0Z0M7S0FsTEgrK0IsdUJBaUtPdmpDO0tBbUJQLE1BQUEsNEJBRkd3RTs7R0FFTTtZQVNMeWdDO1FBQWNsaEQ7O21CQUNULE9BRFNBO0tBRUo7TUFBVHlEO01BQVMsU0FGSXpEO01BQUFBO2dCQUVieUQ7OztZQUVMMDlDLE1BQU1sbEM7SUFDUixVQURRQTtpQkFFZU8sR0FBRS9mO0tBQWUsVUFObEN5a0QsaUJBTW1CemtEO0tBQWUsT0FBQSwyQkFBakIrZjtJQUFvQztJQUF6RDtLQURFNGtDLE1BQ0Y7S0FDRUMsUUFBUSxlQUZSRDtLQUdKLE1BSlFubEM7aUJBS0R4ZjtLQUNLLElBQUpNLElBVkZta0QsaUJBU0N6a0Q7S0FGSDRrRCxVQUdJdGtELHNCQUhKc2tELE9BR0l0a0QsT0FBQUE7S0FDSjtJQUEwQjtJQUg5QjtJQUtBLFdBVFFrZixNQUFBQSxpQkFDSm1sQyxLQUVBQztHQVN3QjtZQUkxQnI3QyxPQUFPZ1g7SUFHVCxJQUFJc2tDLFdBSEt0a0M7SUFLVCxTQUFRL04sSUFBSWpTLEdBQUV1a0Q7S0FBVSxJQUFadGtELE1BQUFELEdBQUV3a0QsU0FBQUQ7S0FBVTtTQUFWQztXQUtKek8sTUFMSXlPLFdBS0MxNkIsT0FMRDA2QixXQUtPLzlDLE9BTFArOUM7T0FNUixlQURJek8sS0FBS2pzQixxQixPQUxQN1gsSUFBSWhTLEtBS1N3Rzs7U0FMVHhHLFFBRlJxa0QscUJBS087TUFDUztPQUpORywwQkFGVkgsVUFFUXJrRCxTQUFBQTtPQUFBNFUsTUFBQTVVO09BQUFBLE1BQUE0VTtPQUFFMnZDLFNBQUFDOztJQU0wQjtJQUV4QyxJQUFBO0lBQUEscUIsT0FSUXh5QztHQVFHO1lBRVR5eUMsWUFBWWxsQztJQUFnQixVQWY1QnhXLE9BZVl3VztzQjtJQUFnQixPQUFBO0dBQVU7WUFFdENtbEMsY0FBY25sQztJQUFnQixVQWpCOUJ4VyxPQWlCY3dXO3NCO0lBQWdCLE9BQUE7R0FBVTs7YUFvRnBDb2xDLFVBQVUzbEMsR0FBRTgyQjtLQUNkLFVBRFk5MkI7S0FDWixPQUFBLGlCQURZQSxNQUFFODJCO0lBQ29DO2FBRWhEcndCLElBQUl6RyxHQUFFODJCLEtBQUlqc0I7S0FDWjtNQUFJOXBCLElBSkY0a0QsVUFHSTNsQyxHQUFFODJCO01BRUo4TyxhQUZJOU8sS0FBSWpzQix1QkFBTjdLLE1BQ0ZqZixPQUFBQTtLQUVKLGlCQUhNaWYsTUFDRmpmLE9BQUFBLEtBQ0E2a0Q7S0FGRTVsQyxPQUFBQTtlQUFBQSx1QkFBQUE7a0JBdE5Sb1EsT0FtTkl1MUIsV0FHSTNsQztJQUt1RDthQWUzRHdILE9BQU94SCxHQUFFODJCO0tBQ1g7TUFkc0IvMUMsSUFWcEI0a0QsVUF1Qk8zbEMsR0FBRTgyQjtNQUVpQixxQkFGbkI5MkIsTUFiYWpmLE9BQUFBO01BQU1qRjtNQUcxQkg7O1dBQUFBLE1BREU7VUFDUyt2QixJQUFYL3ZCLFNBQWM2TCxPQUFkN0w7TUFDSyxHQUFBLGlCQURNK3ZCLEdBVUZvckI7T0FBRjkyQixPQUFBQTtjQWJtQmxrQjtrQkFBQUEsWUFHWjBMO21DQVVQd1ksTUFiYWpmLE9BQUFBLEtBR055Rzs7VUFIWTFMLFNBRzFCSCxNQUFBQSxPQUFjNkw7O0lBWXNCO2FBUXBDeUksS0FBSytQLEdBQUU4MkI7S0FDVDtNQUFjLE1BbENaNk8sVUFpQ0szbEMsR0FBRTgyQjtNQUNILHlCQURDOTJCO2lCQUVJLE1BQUE7U0FDQTZsQyxlQUFTaDZCLGVBQVNpNkI7S0FDdEIsR0FBQSxpQkFKRWhQLEtBR0UrTyxLQUNnQixPQURQaDZCO1VBQVNpNkIsT0FHZCxNQUFBO1NBQ0FDLEtBSmNELFVBSUxoNkIsS0FKS2c2QixVQUlJRSxRQUpKRjtLQUtsQixHQUFBLGlCQVJGaFAsS0FPTWlQLEtBQ2dCLE9BRFBqNkI7VUFBU2s2QixPQUdkLE1BQUE7U0FDQUMsS0FKY0QsVUFJTEUsS0FKS0YsVUFJSUcsUUFKSkg7S0FLbEIsR0FBQSxpQkFaTmxQLEtBV1VtUCxLQUNnQixPQURQQztpQkFBU0M7O2tCQWZqQyxNQUFBO1VBQ096NkIsY0FBR2IsaUJBQU1yakI7TUFDYixHQUFBLGlCQUVFc3ZDLEtBSEVwckIsSUFDZSxPQURaYjtrQkFBTXJqQjs7SUFleUM7YUFRM0QwSSxTQUFTOFAsR0FBRTgyQjtLQUNiO01BQWMsTUF0RFo2TyxVQXFEUzNsQyxHQUFFODJCO01BQ1AseUJBREs5MkI7aUJBRUE7U0FDQTZsQyxlQUFTaDZCLGVBQVNpNkI7S0FDdEIsR0FBQSxpQkFKTWhQLEtBR0YrTyxLQUNnQixXQURQaDZCO1VBQVNpNkIsT0FHZDtTQUNBQyxLQUpjRCxVQUlMaDZCLEtBSktnNkIsVUFJSUUsUUFKSkY7S0FLbEIsR0FBQSxpQkFSRWhQLEtBT0VpUCxLQUNnQixXQURQajZCO1VBQVNrNkIsT0FHZDtTQUNBQyxLQUpjRCxVQUlMRSxLQUpLRixVQUlJRyxRQUpKSDtLQUtsQixHQUFBLGlCQVpGbFAsS0FXTW1QLEtBQ2dCLFdBRFBDO2lCQUFTQzs7a0JBZmpDO1VBQ096NkIsY0FBR2IsaUJBQU1yakI7TUFDYixHQUFBLGlCQUVNc3ZDLEtBSEZwckIsSUFDZSxXQURaYjtrQkFBTXJqQjs7SUFla0Q7YUFFcEU2SSxTQUFTMlAsR0FBRTgyQjtjQUNMc1A7TUFBaUI7TUFBQTtxQkFFckI7V0FDTzE2QixnQkFBUXJOLGdCQUFHN1c7T0FDZixHQUFBLGlCQURJa2tCLEdBSkVvckIsTUFNSixXQUZVejRCLEdBSFgrbkMsZUFHYzUrQztxQkFBQUE7O0tBR007S0FDTCxVQTNFckJtK0MsVUFtRVMzbEMsR0FBRTgyQjtLQVFFLE9BUFBzUCxnQ0FER3BtQztJQVE0QjthQVVyQ3FtQyxRQUFRcm1DLEdBQUU4MkIsS0FBSWpzQjtLQUNoQjtNQUFJOXBCLElBdEZGNGtELFVBcUZRM2xDLEdBQUU4MkI7TUFFUmgyQyxxQkFGTWtmLE1BQ05qZixPQUFBQTtNQU5HMFosT0FPSDNaOztTQVBHMlo7V0FBTWlSLElBQU5qUixTQUFTalQsT0FBVGlUO09BQ0EsS0FBQSxpQkFETWlSLEdBS0RvckIsVUFMTHI4QixPQUFTalQ7T0FBVGlULFVBS0txOEI7T0FMTHI4QixVQUtTb1E7Ozs7O01BR2I7T0FDRCxpQkFKUTdLLE1BQ05qZixPQUFBQSxTQURRKzFDLEtBQUlqc0IsTUFFWi9wQjtPQUZNa2YsT0FBQUE7aUJBQUFBLHVCQUFBQTtlQU1tQyxPQTlTL0NvUSxPQW1OSXUxQixXQXFGUTNsQzs7Ozs7OztJQU9QO2FBRUQxUSxJQUFJMFEsR0FBRTgyQjtLQUNSO01BS3NCLE1BcEdwQjZPLFVBOEZJM2xDLEdBQUU4MkI7K0JBQUY5MkI7S0FDa0I7a0JBRXBCO01BRUEsSUFETzBMLGNBQUdsa0IsaUJBQ1YsTUFBQSxpQkFET2trQixHQUpIb3JCO01BS0osUUFBQTtrQkFEVXR2Qzs7SUFFd0I7YUFFcEMwaUIsUUFBUW5KLEtBQUloZ0I7O01BQ0wsSUFBUTNDLGNBQUZzdEI7TUFBUSxPQXBHckJqRixJQW1HUTFGLEtBQ0sySyxHQUFFdHRCO0tBQWtCO0tBQW5DLE9BQUEsZ0NBRGMyQztJQUN1QjthQUVuQ3VsRCxZQUFZdmxDLEtBQUloZ0I7O01BQ1QsSUFBUTNDLGNBQUZzdEI7TUFBUSxPQXJCckIyNkIsUUFvQll0bEMsS0FDQzJLLEdBQUV0dEI7S0FBc0I7S0FBdkMsT0FBQSxnQ0FEa0IyQztJQUN1QjthQUV2Q21TLE9BQU9uUztLQUNDLElBQU5nZ0IsTUF0WU5oRztLQWtZSXVyQyxZQUlFdmxDLEtBREtoZ0I7S0FFVCxPQURJZ2dCO0lBRUQ7SUF4SFA7WUFoUkVoRztZQUtBMFI7WUFNQTBEO1lBMkJBMWM7WUFzUElnVDtZQW9CQWU7WUFVQXZYO1lBb0JBQztZQWNBRztZQWtCQWcyQztZQVNBLzJDO1lBdFNKL0c7WUFzQ0F3OEM7WUFhQTc3QztZQTVGQWtFO1lBNEhBODNDO1lBZ0JBbjdDO1lBZUEwN0M7WUFFQUM7WUEwTEl4N0I7WUFHQW84QjtZQUdBcHpDOzs7UUFtQkk3SjthQUNBOEQsS0FBTWkwQyxNQUFZaGlELEdBQUksT0FBQSxpQkFBSkEsR0FBWTs7OEJBRDlCaUssT0FDQThEO0tBaktSc2Y7S0FDQTBEO0tBQ0ExYztLQUNBZ1Q7S0FDQWU7S0FDQXZYO0tBQ0FDO0tBQ0FHO0tBQ0FnMkM7S0FDQS8yQztLQUNBL0c7S0FDQXc4QztLQUNBNzdDO0tBQ0FrRTtLQUNBODNDO0tBQ0FuN0M7S0FDQTA3QztLQUNBQztLQUNBeDdCO0tBQ0FvOEI7O2FBZ0pJdnJDLE9BQU93ckMsSUFBSyxPQUFBLHFCQUFMQSxJQUE0QjthQUNuQ3J6QyxPQUFPblM7S0FDQyxJQUFOZ2dCLE1BRkZoRztLQUdGLFdBbkpGdXJDLGFBa0pNdmxDLEtBREtoZ0I7S0FFVCxPQURJZ2dCO0lBRUQ7SUFWUDtZQU1NaEc7WUFuS0owUjtZQUNBMEQ7WUFDQTFjO1lBQ0FnVDtZQUNBZTtZQUNBdlg7WUFDQUM7WUFDQUc7WUFDQWcyQztZQUNBLzJDO1lBQ0EvRztZQUNBdzhDO1lBQ0E3N0M7WUFDQWtFO1lBQ0E4M0M7WUFDQW43QztZQUNBMDdDO1lBQ0FDO1lBQ0F4N0I7WUFDQW84QjtZQWlKSXB6Qzs7WUFhSi9GLEtBQUsvTixHQUFJLE9BQUEsc0JBQUpBLEdBQWdDO1lBQ3JDb25ELFdBQVd2MEMsSUFBR0MsSUFBRzlTLEdBQUksT0FBQSxVQUFWNlMsSUFBR0MsT0FBRzlTLEdBQStCO1lBQ2hEcW5ELFlBQVlyRixNQUFLaGlELEdBQUksT0FBQSxtQkFBVGdpRCxNQUFLaGlELEdBQW1DO1lBRXBEdW1ELFVBQVUzbEMsR0FBRTgyQjtJQUNkLFlBRFk5MkI7Y0FFUCxtQkFGT0EsTUFBRTgyQixRQUFGOTJCO2NBR1A7R0FBb0Q7WUFFdkR5RyxJQUFJekcsR0FBRTgyQixLQUFJanNCO0lBQ1o7S0FBSTlwQixJQU5GNGtELFVBS0kzbEMsR0FBRTgyQjtLQUVKOE8sYUFGSTlPLEtBQUlqc0IsdUJBQU43SyxNQUNGamYsT0FBQUE7SUFFSixpQkFITWlmLE1BQ0ZqZixPQUFBQSxLQUNBNmtEO0lBRkU1bEMsT0FBQUE7Y0FBQUEsdUJBQUFBO2lCQTVXSm9RLE9BdVdBdTFCLFdBS0kzbEM7R0FLdUQ7WUFlM0R3SCxPQUFPeEgsR0FBRTgyQjtJQUNYO0tBZHNCLzFDLElBWnBCNGtELFVBeUJPM2xDLEdBQUU4MkI7S0FFaUIscUJBRm5COTJCLE1BYmFqZixPQUFBQTtLQUFNakY7S0FHMUJIOztVQUFBQSxNQURFO1NBQ1MrdkIsSUFBWC92QixTQUFjNkwsT0FBZDdMO0tBQ0ssU0FBQSxhQURNK3ZCLEdBVUZvckI7TUFBRjkyQixPQUFBQTthQWJtQmxrQjtpQkFBQUEsWUFHWjBMO2tDQVVQd1ksTUFiYWpmLE9BQUFBLEtBR055Rzs7U0FIWTFMLFNBRzFCSCxNQUFBQSxPQUFjNkw7O0dBWXNCO1lBUXBDeUksS0FBSytQLEdBQUU4MkI7SUFDVCxJQUFjLE1BcENaNk8sVUFtQ0szbEMsR0FBRTgyQixNQUNILHlCQURDOTJCO2dCQUVJLE1BQUE7UUFDQTZsQyxlQUFTaDZCLGVBQVNpNkI7SUFDdEIsU0FBQSxhQUpFaFAsS0FHRStPLEtBQ29CLE9BRFhoNkI7U0FBU2k2QixPQUdkLE1BQUE7UUFDQUMsS0FKY0QsVUFJTGg2QixLQUpLZzZCLFVBSUlFLFFBSkpGO0lBS2xCLFNBQUEsYUFSRmhQLEtBT01pUCxLQUNvQixPQURYajZCO1NBQVNrNkIsT0FHZCxNQUFBO1FBQ0FDLEtBSmNELFVBSUxFLEtBSktGLFVBSUlHLFFBSkpIO0lBS2xCLFNBQUEsYUFaTmxQLEtBV1VtUCxLQUNvQixPQURYQztnQkFBU0M7O2lCQWZqQyxNQUFBO1NBQ096NkIsY0FBR2IsaUJBQU1yakI7S0FDYixTQUFBLGFBRUVzdkMsS0FIRXByQixJQUNtQixPQURoQmI7aUJBQU1yakI7O0dBZTZDO1lBUS9EMEksU0FBUzhQLEdBQUU4MkI7SUFDYixJQUFjLE1BeERaNk8sVUF1RFMzbEMsR0FBRTgyQixNQUNQLHlCQURLOTJCO2dCQUVBO1FBQ0E2bEMsZUFBU2g2QixlQUFTaTZCO0lBQ3RCLFNBQUEsYUFKTWhQLEtBR0YrTyxLQUNvQixXQURYaDZCO1NBQVNpNkIsT0FHZDtRQUNBQyxLQUpjRCxVQUlMaDZCLEtBSktnNkIsVUFJSUUsUUFKSkY7SUFLbEIsU0FBQSxhQVJFaFAsS0FPRWlQLEtBQ29CLFdBRFhqNkI7U0FBU2s2QixPQUdkO1FBQ0FDLEtBSmNELFVBSUxFLEtBSktGLFVBSUlHLFFBSkpIO0lBS2xCLFNBQUEsYUFaRmxQLEtBV01tUCxLQUNvQixXQURYQztnQkFBU0M7O2lCQWZqQztTQUNPejZCLGNBQUdiLGlCQUFNcmpCO0tBQ2IsU0FBQSxhQUVNc3ZDLEtBSEZwckIsSUFDbUIsV0FEaEJiO2lCQUFNcmpCOztHQWVzRDtZQUV4RTZJLFNBQVMyUCxHQUFFODJCO2FBQ0xzUDtLQUFpQjtLQUFBO29CQUVyQjtVQUNPMTZCLGdCQUFHYixtQkFBTXJqQjtNQUNiLFNBQUEsYUFESWtrQixHQUpFb3JCLE1BTUosV0FGS2pzQixNQUhOdTdCLGVBR1k1K0M7b0JBQUFBOztJQUdRO0lBQ0wsVUE3RXJCbStDLFVBcUVTM2xDLEdBQUU4MkI7SUFRRSxPQVBQc1AsZ0NBREdwbUM7R0FRNEI7WUFVckNxbUMsUUFBUXJtQyxHQUFFODJCLEtBQUlqc0I7SUFDaEIsSUFBSTlwQixJQXhGRjRrRCxVQXVGUTNsQyxHQUFFODJCLE1BRVJoMkMscUJBRk1rZixNQUNOamYsT0FBQUEsSUFORzBaLE9BT0gzWjs7UUFQRzJaO1VBQU1pUixJQUFOalIsU0FBU2pULE9BQVRpVDtNQUNBLFNBQUEsYUFETWlSLEdBS0RvckIsVUFMTHI4QixPQUFTalQ7TUFBVGlULFVBS0txOEI7TUFMTHI4QixVQUtTb1E7Ozs7O0tBR2I7TUFDRCxpQkFKUTdLLE1BQ05qZixPQUFBQSxTQURRKzFDLEtBQUlqc0IsTUFFWi9wQjtNQUZNa2YsT0FBQUE7Z0JBQUFBLHVCQUFBQTtjQU1tQyxPQXBjM0NvUSxPQXVXQXUxQixXQXVGUTNsQzs7Ozs7OztHQU9QO1lBRUQxUSxJQUFJMFEsR0FBRTgyQjtJQUNSLElBS3NCLE1BdEdwQjZPLFVBZ0dJM2xDLEdBQUU4MkIsK0JBQUY5MkI7SUFDa0I7aUJBRXBCOztNQUNPMEw7TUFBR2xrQjtrQkFDVixhQURPa2tCLEdBSkhvckI7O2lCQUlNdHZDOztHQUV3QjtZQUVwQzBpQixRQUFRbkosS0FBSWhnQjs7S0FDTCxJQUFRM0MsY0FBRnN0QjtLQUFRLE9BcEdyQmpGLElBbUdRMUYsS0FDSzJLLEdBQUV0dEI7SUFBa0I7SUFBbkMsT0FBQSxnQ0FEYzJDO0dBQ3VCO1lBRW5DdWxELFlBQVl2bEMsS0FBSWhnQjs7S0FDVCxJQUFRM0MsY0FBRnN0QjtLQUFRLE9BckJyQjI2QixRQW9CWXRsQyxLQUNDMkssR0FBRXR0QjtJQUFzQjtJQUF2QyxPQUFBLGdDQURrQjJDO0dBQ3VCO1lBRXZDbVMsT0FBT25TO0lBQ0MsSUFBTmdnQixNQTVoQkZoRztJQXdoQkF1ckMsWUFJRXZsQyxLQURLaGdCO0lBRVQsT0FESWdnQjtHQUVEO1lBRUQybEMsUUFBVXZsQyxLQUFzQm5CO0lBQ2xDLEdBRFltQixTQUFTRSxNQUFURixRQUFBNmlDLFNBQVMzaUMsY0FBVDJpQyxTQWxqQlZOO0lBbWpCTSxJQUFKemtELElBdGlCRTZrRCxrQkFxaUI0QjlqQztJQUVsQyxHQUZZZ2tDOzt5QkE3aUJWSDs7O1dBQUFBO3lEQUFBQSxRQUFBQTtNQStpQkV6QyxPQUNhOztTQURiQSxZQUY4QnBoQyxlQUFBQTtJQU16QjtnQkFOeUJBLGVBQUFBLE9BQzlCL2dCO0tBS0F5bUIsVUFOOEIxRixNQVF6QixlQVBML2dCLE9BQ0FtaUQ7V0FJQTE3QjtXQU44QjFGOztJQXRmaENva0M7b0IsT0FtWUF1QixVQXlIRWpnQztJQU1KLE9BTklBO0dBT0Y7Ozs7T0E3aUJBM0s7T0FLQTBSO09BTUEwRDtPQTJCQTFjO09BNFlBZ1Q7T0E4QkF4VztPQW9CQUM7T0FjQUc7T0EyQkFmO09BdkVBa1k7T0E4REE2K0I7T0FuYkE5OUM7T0FzQ0F3OEM7T0FhQTc3QztPQTVGQWtFO09BeERBdTJDO09BQ0FDO09BK2lCQThDO09BNVhBeEI7T0FnQkFuN0M7T0FlQTA3QztPQUVBQztPQWdWQXg3QjtPQUdBbzhCO09BR0FwekM7OztPQWxIQS9GO09BRUFzNUM7T0FEQUQ7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQzdkQXpyQyxPQUFPamE7SUFDVDtnQkFEU0E7aUJBQUFBO2dCQUVQO0lBQ0YsT0FBQSx5QkFIU0E7R0FHRDtZQUtOc00sT0FBT2hPLEdBQUksT0FBSkEscUJBQTRDO1lBRW5ENGIsd0JBQXdCelEsR0FBRXpCLEdBQUVtUztJQUM5QjtnQkFENEJuUztpQkFBQUEsSUFGMUJzRSxPQUV3QjdDOztpQkFFeEIsc0JBRjRCMFE7R0FFWjtZQUloQjFjLElBQUlnTSxHQUFFekIsR0FBRTFKO0lBTlI0Yix3QkFNSXpRLEdBQUV6QjtTQUFFMUosR0FHQSxPQUFBLDRCQUhKbUwsR0FBRXpCO1FBSUQ2SCxNQUpHdlI7SUFJRSxPQUFBLDBCQUpObUwsR0FBRXpCLEdBSUQ2SDtHQUFlO1lBR3BCdFMsSUFBSWtNLEdBQUV6QjtJQWJOa1Msd0JBYUl6USxHQUFFekI7SUFFUixPQUFBLDBCQUZNeUIsR0FBRXpCO0dBRUQ7WUFHTDY5QyxTQUFTcDhDLEdBQUV6QjtJQWxCWGtTLHdCQWtCU3pRLEdBQUV6QjtJQUViLE9BQUEsK0JBRld5QixHQUFFekI7R0FFRDtZQUdWNlcsTUFBTXBWLEdBQUV6QjtJQXZCUmtTLHdCQXVCTXpRLEdBQUV6QjtJQUVWLE9BQUEsNEJBRlF5QixHQUFFekI7R0FFRDtZQUtQb0wsS0FBS3hKLElBQUdsQixJQUFHbUIsSUFBRzZRLElBQUcxYTtJQUNuQjtXQURtQkE7O1lBQVQwSTtXQWhDUjRELE9BZ0NLMUMsTUFBWTVKLFVBQVQwSSxXQUFNZ1MsT0FoQ2RwTyxPQWdDV3pDLE1BQU03SixVQUFIMGE7O2tCQUFHMWE7a0JBSUMsMkJBSmI0SixJQUFHbEIsSUFBR21CLElBQUc2USxJQUFHMWE7S0FJQzs7SUFEZixPQUFBO0dBQ2lDO1lBRXBDbVQsS0FBSzJ5QyxJQUFHdGtELEtBQUlDLEtBQUluRDtJQUNsQixRQURVa0QsWUFBSUMsUUF0Q1o2SyxPQXNDS3c1QyxNQUFPcmtELFlBQUpEO2dCQUFBQSxNQUFJQztlQUFKRDtVQUdMdkIsSUFIS3VCOztPQTlCUi9ELElBOEJLcW9ELElBR0Y3bEQsR0FIYTNCO09BS2QsVUFGQzJCO2tCQUFBQTtXQUFBQTs7Ozs7SUFEQSxNQUFBO0dBS0Y7O0lBMkJlLElBQWQ4bEQsY0FoRkY5ckM7YUE0RkUrckMsVUFBVTdxQyxHQUFFK0Q7S0FBSSxnQkFBSkEsZ0JBQUYvRDtJQUFpRDtRQUUzRGsrQjthQUdBNE0sU0FBT1I7S0FDVDtNQUFJUyxZQURLVCxLQUFBQTtNQUVMVSx3QkFEQUQsd0JBQUFBO0tBRUo7YUFDVSxlQUZOQyxNQW5CRko7YUFzQlMsZUFIUEk7YUFMRjlNOzs7SUFZRDthQUVDMXRCLE1BQU14UTtLQUNSLFVBRFFBLHlCQUNSOztVQUFBbGI7O09BQ0UsaUJBRk1rYixNQUNSbGIsT0FBQUEsS0E3QkU4bEQ7T0ErQkEsaUJBSE01cUMsTUFDUmxiLE9BQUFBO09BRUUsVUFGRkE7a0JBQUFBO1dBQUFBOzs7S0FEUWtiLE9BZE5rK0I7S0FjTWwrQjs7SUFNTzthQUdiL1MsS0FBS2pMLEdBQUVnZSxHQUFFOU47S0FDWCxVQURTOE4sTUFDV2xiO0tBTUgsYUFOS1AsR0FBRWdPO1VBQUp4TixNQUFBRCxHQUFJOEMsT0FBQTJLO01BQ3RCO1VBL0dGcEIsT0E4R3NCNU0sTUFBRlEsS0FDSSxPQURBNkM7T0FFaEIsWUFqR1J4RixJQStGc0JtQyxHQUFGUTs7UUFHYztTQUF6QjVDO1NBSGUyRixTQUdVLFdBSjNCOUYsR0FJRUcsR0FIZXlGO1NBQUorUixNQUFBNVU7U0FBQUEsTUFBQTRVO1NBQUkvUixPQUFBRTs7WUFBSnVaLE1BQUF0YyxhQUFBQSxNQUFBc2M7OztLQU1wQixPQUFBLHVDQVBXblA7SUFPa0M7YUFHM0M1RixLQUFLdEssR0FBRWdlO0tBQ1QsVUFEU0EsTUFDV2xiO0tBTVQsYUFOV1A7VUFBRlEsTUFBQUQ7TUFDbEI7VUF6SEZxTSxPQXdIc0I1TSxNQUFGUSxLQUNJO09BQ2hCLFlBM0dSM0MsSUF5R3NCbUMsR0FBRlE7O1lBR1g1QztRQUFLLFdBSlBILEdBSUVHO1lBSFd3WCxNQUFBNVUsYUFBQUEsTUFBQTRVOzs7WUFBQTBILE1BQUF0YyxhQUFBQSxNQUFBc2M7OztLQU1ULE9BQUE7SUFBdUI7YUFhNUI0cEMsYUFBYW5tRCxHQUFFUCxHQUFFcUQ7S0FDdkIsSUFEbUI3QyxNQUFBRCxHQUFJZ0QsU0FBQUY7S0FDdkI7U0E1SUF1SixPQTJJcUI1TSxNQUFGUSxLQUNHLE9BREMrQztNQUVVO09BQUEsTUFwSGpDNGIsTUFrSHFCbmYsR0FBRlE7T0FBSXdOLFNBQUF6SztPQUFKNlIsTUFBQTVVO09BQUFBLE1BQUE0VTtPQUFJN1IsU0FBQXlLOztJQUVtQzthQUd4RGlnQixNQUFNeFM7S0FDUixJQUFBLGVBRFFBO0tBQ1MsdUIsT0FOWGlyQztLQU1OLE9BQUE7SUFBMkM7YUEyRHpDQyxRQUFRbHJDLEdBQUVtckMsUUFBTy9vQyxHQUFFMkIsR0FBRW5LO0tBQ3ZCO01BQUl3eEMsNEJBRE1wckMsTUFBYXBHLFdBQUFBO01BRW5CeXhDLDBCQUZNcnJDLE1BQWFwRyxXQUFBQTtNQUduQjB3QyxLQS9NSm41QyxPQTZNSWk2QztNQUdTOXBDO0tBQ1g7U0FGRWdwQyxNQUNTaHBDO01BbUJDLEtBMU1kb0MsTUFvTEkwbkMsVUFHUzlwQztPQXNCVCxXQTFCUTZwQyxRQUNSQyxVQUdTOXBDLEtBSk1jO09BMkJmLGlCQXpCQWlwQyxRQUVTL3BDLFNBQUFBLE9BSlF5QztPQTJCakI7O01BSjhCLElBbkJyQjVDLE1BQUFHLGFBQUFBLE1BQUFIOztLQUdQO01BREVtcUM7UUFDRjs7Z0JBSkZoQjs7UUFHSWdCLFNBSEpoQixJQU1vQjtLQUNKLElBQVppQixjQTlOUnpzQyxPQTBOUXdzQyxRQUtBRSxZQUFZLGVBTFpGO0tBbExScnpDLEtBNktJbXpDLGFBU0lHLGdCQVBKakI7S0FVQSw2QkFYQWUsV0FTSUcsY0FSSmxCO0tBV0EsV0FkUWEsUUFVSkksYUFQSmpCLElBSGVsb0M7S0FlZixpQkFKSW9wQyxXQVJKbEIsUUFBQUEsTUFIaUJ2bUM7S0FnQmpCLGlCQWhCTS9ELE1BQWFwRyxXQUFBQSxTQVVmMnhDO0tBT0osaUJBakJNdnJDLE1BQWFwRyxXQUFBQSxTQVdmNHhDO2VBUkpsQixNQUhNdHFDLDBCQUFBQSxPQU1Gc3JDOztNQU5FdHJDLE9BQUFBO1VBb0JKaUI7O09BeEVPO2NBb0RIakI7UUFwRE4ycEMsMEJBb0RNM3BDO1FBbkRWLE1BbURVQTtRQW5ETnlyQywyQkFtRE16ckM7UUF2REExWixNQXJKVjZLLE9Bd0pJdzRDO1FBR0ErQixjQU5NcGxEO1FBT05xbEQsT0FqQkVWLGdCQWFGdEI7VUFJQWdDLFFBREFEO1FBYU0sSUFWT0UsTUE5SmpCejZDLE9Bd0pJdzRDLGlCQU1XNWtELFNBQUU4VCxJQUFBK3lDO1FBQ2I7WUFKQUYsV0FHYTd5QztTQUVSLEdBdklUNkssTUErSElpbUMsUUFNVzVrRDtjQUFBNFUsTUFBQTVVLGFBQUFBLE1BQUE0VTtpQkFySWYrSixNQStISWltQyxRQU1hOXdDO1VBOUhqQlosS0F3SEkweEMsUUFNYTl3QyxHQU5iOHdDLFFBTVc1a0Q7VUFLUSwyQkFWbkIwbUQsU0FLYTV5QyxPQUFBQTtVQUtULGlCQVZKNHlDLFNBS1cxbUQsU0FBQUE7VUFLUCxJQUxTcWMsTUFBQXZJLFdBQUZ3SSxNQUFBdGMsYUFBQUEsTUFBQXNjLEtBQUV4SSxJQUFBdUk7OztVQU9GLElBUEUwYixNQUFBamtCLFdBQUFBLElBQUFpa0I7O2lCQUhiNHVCO21CQWlETTFyQztTQWxDTixpQkFrQ01BLHNCQXBJUjRxQzttQkFvSVE1cUM7U0FqQ04saUJBaUNNQTs7O1NBL0JVLElBQVo2ckMsWUFyTFIvc0MsT0FtS0k0c0M7U0EzSEp6ekMsS0F3SEkweEMsV0FxQklrQyxjQWxCSkg7bUJBaURNMXJDO1NBN0JOLGlCQTZCTUEsc0JBL0JGNnJDO1NBR2tCO1VBQUEsTUFBQSw0QkF2QnRCSixZQUVBQztnQkFpRE0xckM7U0E1Qk4saUJBNEJNQTs7O2VBQUFBLE9BdkRBMVo7cUJBTU5vbEQsWUFpRE0xckM7Z0JBQUFBLE9BQUFBOztPQUFBQSxnQkFBQUEsY0FBQUE7T0FvQndCLFVBQTVCaUI7Z0JBQUFBO1dBQUFBOzs7aUJBcEJJakIsNEJBQUFBOztLQXhESTtNQUFKOHJDLFNBd0RBOXJDO01BbkJOeUY7UUFyQ1U7Z0NBQUpxbUM7UUFBQUEsU0FxQ05ybUM7TUFFUztPQUFQc21DLE9BbEdKakIsU0FnR0VybEM7YUFtQk16RjtPQTFFVWxiO09BTVI7a0JBTlUrVCxHQTBEUG16QztjQUFNQyxLQTFERG5uRDtVQUNsQjtjQW5JRnFNLE9BNExlNjZDLE9BQU1DLElBekRHO2NBMUd4QnZvQyxNQW1LZXNvQyxJQUFNQztZQXZETCxJQXVERUMsc0JBZ0JSbHNDLE1BMUVZbkgsT0FBQUE7Z0JBMEREc3pDLE9BQUFGO3FCQUNiZCxPQUFPdnFDLElBQUd3ckMsV0FBTyxPQTdKekJuMEMsS0E0SmUrekMsSUFBTUcsTUFDTnZyQyxJQUFHd3JDLE9BQXlCO1lBQy9CLElBQUpyb0MscUJBRlVtb0MsSUFBR0QsUUFBQUE7WUFnQm5CZixRQWpCSWEsTUFFRVosV0FDQXBuQyxHQTFHTjhtQyxVQXVHSWtCLE1BR0Vob0M7Z0JBNURZaGYsTUEwRENrbkQsWUFBQUEsS0ExRERsbkQ7OztnQkFBQTRVLE1BMERDc3lDLFlBQUFBLEtBMUREdHlDOzs7TUFNUjtNQW9FRnFHLE9BakJKK3JDO01BaUJJL3JDLE9BakJKK3JDO01BaUJJL3JDLE9BakJKK3JDO01BaUJJL3JDLE9BakJKK3JDO01BaUJJL3JDLGdCQUFBQSxNQWpCSityQzs7O0tBaUJJL3JDO0tBQUFBOztJQThCSjthQUdKd0ssSUFBSXhLLEdBQUVvQztLQUNBLElBQUoyQixJQUFJLGlCQURBM0I7S0FFaUIsT0FuQ3ZCOG9DLFFBaUNJbHJDLEdBck9OMWQsU0FxT1E4ZixJQUNKMkIsR0ExSkY4bUMsVUF5Skk3cUMsR0FDRitEO0lBQ29DO2FBR3RDc29DLFFBQVFyc0MsR0FBRW9DLEdBQUVrcUM7S0FDZDtNQUFJdm9DLElBQUksaUJBREkzQjtNQUVSeEksUUFoS0ZpeEMsVUE4SlE3cUMsR0FDTitEO01BRUE0bEMsMEJBSE0zcEMsTUFFTnBHLFdBQUFBO01BRUF5eEMsMEJBSk1yckMsTUFFTnBHLFdBQUFBO01BR0Ewd0MsS0F2UEpuNUMsT0FxUEl3NEM7TUFHUzdrRDtLQUNYO1NBRkV3bEQsTUFDU3hsRCxHQUpELE9BQUEsV0FGRXduRCxZQUNWdm9DLEdBQ0FuSztTQURBbUssdUJBR0FzbkMsUUFFU3ZtRCxPQUFBQTtPQUdILFlBdk9WNGxELFNBaU9JZixRQUdTN2tEOztZQUlGM0M7UUFBTyxHQUFBLGlCQUFQQSxHQVZDaWdCO1NBV1UsY0E5T3RCaGdCLElBc09JdW5ELFFBR1M3a0Q7eUJBTUkwSixrQkFBSyxPQUFMQTtTQUNHLElBUFB6SixNQUFBRCxXQUFBQSxJQUFBQzs7OztPQVNGLElBVEU0VSxNQUFBN1UsV0FBQUEsSUFBQTZVOzs7T0FVRixJQVZFMEgsTUFBQXZjLFdBQUFBLElBQUF1Yzs7SUFZUDthQUdKbE0sTUFBTTZLLEdBQUVvQztLQUNWLE9BdEJFaXFDO2NBcUJNcnNDO2NBQUVvQzt1QkFDTzJCLEdBQUVuSyxPQTVEakJzeEMsUUEyRE1sckMsR0EvUFIxZCxTQStQVThmLElBQ08yQixHQUFFbkssUUFBbkIsT0FEVXdJLEVBQ21EO0lBQUM7YUFHNURwTyxLQUFLZ00sR0FBRW9DO0tBQUksT0F6QlhpcUM7Y0F5Qktyc0M7Y0FBRW9DO3VCQUFxQjJCLEdBQUduSztlQUFVLE1BQUE7Y0FBZTtJQUFDO2FBRXpEM0YsU0FBUytMLEdBQUVvQztLQUNiO01BQUkyQixJQUFJLGlCQURLM0I7TUFFVHhJLFFBM0xGaXhDLFVBeUxTN3FDLEdBQ1ArRDtNQUVBNGxDLDBCQUhPM3BDLE1BRVBwRyxXQUFBQTtNQUVBeXhDLDBCQUpPcnJDLE1BRVBwRyxXQUFBQTtNQUdBMHdDLEtBbFJKbjVDLE9BZ1JJdzRDO01BR1M3a0Q7S0FDWDtTQUZFd2xELE1BQ1N4bEQsR0FDSztTQU5kaWYsdUJBR0FzbkMsUUFFU3ZtRCxPQUFBQTtPQUdILFlBbFFWNGxELFNBNFBJZixRQUdTN2tEOztZQUlGM0M7UUFBTyxHQUFBLGlCQUFQQSxHQVZFaWdCO1NBV1MsSUFDVjVULE1BMVFacE0sSUFpUUl1bkQsUUFHUzdrRDtZQU1EMEosS0FBZSxPQUFmQTtTQUNRLElBUFB6SixNQUFBRCxXQUFBQSxJQUFBQzs7OztPQVNGLElBVEU0VSxNQUFBN1UsV0FBQUEsSUFBQTZVOzs7T0FVRixJQVZFMEgsTUFBQXZjLFdBQUFBLElBQUF1Yzs7SUFZUDthQUdKa3JDLFlBQVl2c0MsR0FBRW9DLEdBQUVvcUMsU0FBUUY7S0FDMUI7TUFBSXZvQyxJQUFJLGlCQURRM0I7TUFFWnhJLFFBaE5GaXhDLFVBOE1ZN3FDLEdBQ1YrRDtNQUVBNGxDLDBCQUhVM3BDLE1BRVZwRyxXQUFBQTtNQUVBeXhDLDBCQUpVcnJDLE1BRVZwRyxXQUFBQTtNQUdBMHdDLEtBdlNKbjVDLE9BcVNJdzRDO01BR1M3a0Q7S0FDWDtTQUZFd2xELE1BQ1N4bEQsVUFOYXduRDtTQUN0QnZvQyx1QkFHQXNuQyxRQUVTdm1ELE9BQUFBO09BR0gsWUF2UlY0bEQsU0FpUklmLFFBR1M3a0Q7O1lBSUYzQztRQUFPLEdBQUEsaUJBQVBBLEdBVktpZ0IsSUFVaUIsT0FBQSxXQVZmb3FDLFNBR2Q3QyxRQUdTN2tEOztPQUtGLElBTEVDLE1BQUFELFdBQUFBLElBQUFDOzs7T0FNRixJQU5FNFUsTUFBQTdVLFdBQUFBLElBQUE2VTs7SUFRUDthQUdKNFIsT0FBT3ZMLEdBQUVvQztLQUFJO0tBQUEsT0FqQmJtcUMsWUFpQk92c0MsR0FBRW9DLFlBQXlCdWlCLEdBQUU3L0IsR0FBSyxPQTNTM0N4QyxJQTJTb0NxaUMsR0FBRTcvQixNQUFpQjtJQUFJO2FBR3pEdU8sSUFBSTJNLEdBQUVvQztLQUFJO0tBQUEsT0FwQlZtcUMsWUFvQkl2c0MsR0FBRW9DLFlBQXlCdWlCLEdBQUc3L0IsR0FBTSxTQUFJO0lBQU87YUFHbkRzUCxTQUFTNEwsR0FBRW9DO0tBQ2I7TUFBSTJCLElBQUksaUJBREszQjtNQUVUeEksUUF2T0ZpeEMsVUFxT1M3cUMsR0FDUCtEO01BRUE0bEMsMEJBSE8zcEMsTUFFUHBHLFdBQUFBO01BRUF5eEMsMEJBSk9yckMsTUFFUHBHLFdBQUFBO01BR0Ewd0MsS0E5VEpuNUMsT0E0VEl3NEM7TUFHUzdrRDtNQUFFOEM7S0FDYjtTQUZFMGlELE1BQ1N4bEQsR0FDSyxPQURIOEM7U0FMWG1jLHVCQUdBc25DLFFBRVN2bUQsT0FBQUE7T0FHSCxZQTlTVjRsRCxTQXdTSWYsUUFHUzdrRDs7WUFJRjNDO1FBQU8sR0FBQSxpQkFBUEEsR0FWRWlnQjtTQVdTLGNBclR0QmhnQixJQTZTSXVuRCxRQUdTN2tEOztVQU1zQjtXQUFsQjBKO1dBTkYxRyxhQU1FMEcsS0FORjVHO1dBQUY3QyxNQUFBRDtXQUFBQSxJQUFBQztXQUFFNkMsT0FBQUU7OzthQUFGNlIsTUFBQTdVLFdBQUFBLElBQUE2VTs7OztXQUFBMEgsTUFBQXZjLFdBQUFBLElBQUF1Yzs7O1dBQUFDLE1BQUF4YyxXQUFBQSxJQUFBd2M7O0lBWUo7YUFHUDJuQyxNQUFNanBDO0tBQ1I7TUFBSTFaLE1BREkwWjtNQUVKeXNDLE9BQU8sNkJBaFZYdDdDLFFBOFVRNk87S0FHUix1REFESXlzQzs7NEI7S0FFUztNQUFUQyxTQUFTLHVDQUZURDtNQUVTLE1BSFRubUQ7WUFBQUE7TUFJMkMsdUJBSDNDbW1EO01BRzZCLHVCQUg3QkE7TUFHbUIsdUJBSG5CQTtLQUdKLFdBSklubUQsS0EvTEZrc0IsTUE4TE14UyxJQUlKMHNDO0lBQ3dEO0lBL1FFO1lBcUI1RDVCO1lBV0F0NkI7WUFtS0FyYjtZQTFCQXFWO1lBc0VBZTtZQXhDQXZYO1lBRUFDO1lBNENBRztZQUhBZjtZQS9MQS9HO1lBVkFXO1lBbUNBdWxCO1lBOExBeTJCOzs7O1VBdFZGbnFDLFFBUUEzTixRQVFBN08sS0FPQUYsS0FLQXNvRCxVQUtBaG5DLE9BYUExTCxNQU5BQzs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ3ZDQXdHLEdBQUd0YixHQUFJLE9BQUpBLEVBQUs7R0FvRUM7SUEwbkJMaVU7SUE1cUJGdTFDO0lBa0RPOztZQStIVEMsV0FBVzduQyxPQUFNOG5DO0lBQU45bkMsWUFBQUEsWUFBTThuQzt1Q0FBQUEsT0FBTjluQztHQUVpQjtPQTRCNUIrbkM7WUFHQUMsaUJBQWlCaG9DLE9BQU0vaEI7SUFBSSxrQkFBVitoQixXQUFNL2hCLDRCQUFBQTtHQUE2QztZQUNwRWdxRCxrQkFBa0Jqb0MsT0FBUSxPQUFBLFdBQVJBLGNBQStCO1lBS2pEa29DLGVBQWVsb0MsT0FBTUwsTUFBS3dvQztJQUFYbm9DLFdBQUFBLFdBQU1MO0lBTnJCcW9DLGlCQU1laG9DLE9BQVdtb0M7SUFBWG5vQzs7R0FHWTtZQUczQm9vQyxjQUFjcG9DLE9BQU0vaEI7SUFDbkIsV0FBQSw2QkFEbUJBO0lBQ25CLGNBUERpcUQsZUFNY2xvQyw2QkFBTS9oQixJQUFBQTtHQUNrQztZQUd0RG9xRCxlQUFlcm9DLGNBQThCd1Q7UUFBUHFFLGtCQUFSM0gsbUJBQVI0SDtJQUp0QnN3QixjQUllcG9DLE9BQU84WDtJQWZ0Qm13QixrQkFlZWpvQztJQUFBQTtJQU1DO0tBRmRnc0IsVUFKYWhzQixXQUE4QndULGFBQWZ0RDtLQU01Qm80QixjQUFjLDJCQU5EdG9DLFVBSWJnc0I7SUFKYWhzQixZQU1ic29DO0lBTmF0b0MsV0FBQUEsV0FBQUE7UUFiUW5pQixJQWFSbWlCO0lBYlksV0FhWkEsV0FiUW5pQjtJQXNCekIsT0FiRXVxRCxjQUllcG9DLE9BQXVCNlg7O1lBY3RDMHdCLFdBQVd2b0MsT0FBTXdUO0lBQVEsT0FkekI2MEIsZUFjV3JvQyxZQUFNd1Q7R0FBOEM7WUFHL0RnMUIsZ0JBQWdCeG9DO1FBQXNCNlgsa0JBL0JmckUsa0JBK0JBc0U7SUFyQnZCc3dCLGNBcUJnQnBvQyxPQUFPOFg7SUFBUDlYLFdBQUFBLFdBL0JPd1Q7SUFBSSxXQStCWHhULFdBL0JPd1Q7SUFrQ3pCLE9BeEJFNDBCLGNBcUJnQnBvQyxPQUFzQjZYOztZQW9DdEM0d0IsZ0JBQWdCem9DLE9BQU0wb0M7STs7O1FBNEJWLGNBQUEsNEJBNUJJMW9DO3NCQTZCTjtRQUVSO1NBRGMyb0M7U0FDTkM7b0JBQVEvcUQsR0FFWmdyRDtZLEtBQUFBLElBRE0sV0FETWhyRDtnQkFFUGlDLElBQUwrb0QsT0FBQXpxRCxJQUFBeXFEO1lBQW1CLE9BQUEsc0JBRlBockQsR0FFWk87MEJBRllQLEdBRVpnckQ7MEJBQUF6cUQsR0FGSXdxRCxRQUFRL3FELEdBRVBpQzs7UUFISzZvRCxVQUNOQyxRQS9CTTVvQyxXQUFBQSxjQThCQTJvQzs7O1FBWGhCLDRCQW5CZ0Izb0MsV0FtQmhCOztRQU1BLDRCQXpCZ0JBLFdBeUJoQjs7UUFpQ1ksY0FBQSw0QkExRElBO3NCQTJETixPQS9IVmlvQyxrQkFvRWdCam9DO1lBNERQaW9CO1FBQWEsT0FuR3RCc2dCLFdBdUNnQnZvQyxPQTREUGlvQjs7bUJBNURPam9CLGVBQUFBLFdBQUFBOztRQWRaLGNBQUEsNEJBY1lBO3NCQWJSO2tDQUNETCxtQkFBTXZUO1FBWUc0VCxZQUFBQSxZQVpINVQ7UUFZRzRULFdBQUFBLFdBWlRMOzs7UUErR00sY0FBQSw0QkFuR0dLO3NCQW9HTDtRQUVLLElBRFI4b0MsdUJBQ0RDLFNBQVMsV0F0R0Evb0MsV0FxR1I4b0M7UUFFTCxPQTVLSGQsaUJBcUVnQmhvQyxPQXNHVCtvQzs7OztXQXBHQzlxRCxjQUNSLE9BbEVBaXFELGVBK0RnQmxvQyxPQUFNMG9DLFFBRWR6cUQ7O09Ba0VSO1FBRGlCK3FEO1FBQU5DO1FBQ0NDLE1BREtGO1FBQ2JseEIsU0FEYWt4QjtRQUVMLFVBQUEsNEJBckVJaHBDO3FCQXNFTjs7O1FBQ1M0d0I7UUFBVnVZO09BQ1AsT0FET0E7O1VBa0JNLE9BN0hmWCxnQkFvQ2dCeG9DLE9BbUVMaXBDOztVQXFCSSxPQTdJZlosZUFxRGdCcm9DLE9BbUVDZ3BDLFFBSUVwWTs7VUFlSCxPQTNJaEJ5WCxlQXFEZ0Jyb0MsT0FtRUNncEMsUUFJRXBZOztpQkF2RUg1d0IsWUFBTTBvQywrQkFvRWxCNXdCO29CQXpISnV3QixlQXFEZ0Jyb0MsT0FtRUNncEMsUUFJRXBZO29CQTNHbkI0WCxnQkFvQ2dCeG9DLE9BbUVMaXBDOztpQkFuRUtqcEM7b0JBcENoQndvQyxnQkFvQ2dCeG9DLE9BbUVMaXBDO29CQW5FS2pwQzs7dUJBQU0wb0MsK0JBb0VsQjV3QjtzQkF6SEp1d0IsZUFxRGdCcm9DLE9BbUVDZ3BDLFFBSUVwWTt3QkF2RUg1d0I7O3dCQXVFRzR3Qjs7d0JBSFBzWTs7d0JBcEVJbHBDO3dCQXJEaEJxb0MsZUFxRGdCcm9DLE9BbUVDZ3BDLFFBSUVwWTt3QkEzR25CNFgsZ0JBb0NnQnhvQyxPQW1FTGlwQztrQkFvQkksT0EzSGZULGdCQW9DZ0J4b0MsT0FtRUxpcEM7OztPQTVCQztRQUZFRztRQUFIdnJEO1FBQ1B3ckQsa0JBdENZcnBDLFdBQUFBO1FBdUNKLFVBQUEsNEJBdkNJQTtxQkF3Q047T0FFUixJQURjc3BDLHdCQUNkLFVBRGNBOztZQUlWQyw4QkFKVUQ7UUFLSzs7Y0FDSHIzQyxtQkFBUnUzQzthQVROSCxrQkFTTUcsb0JBQVF2M0M7cUJBQVJ1M0M7OztxQkFGSkQ7YUFIQUU7Ozs7O1lBQUFBLE1BSkZKO1dBYUVuNUIsU0FUQXU1QixNQUpGSjtPQWNGLFlBREluNUI7aUJBdkZOczRCLGdCQW9DZ0J4b0Msa0JBbURWa1EsU0FkS3J5QjtpQkExRlh3cUQ7a0JBcURnQnJvQyxrQkEwQ1Z5cEMsTUFMUUwsbUJBckNFcHBDOzs7UUFLRHRtQjtRQUFMZ3dEO1FBQ05DLG9CQU5ZM3BDLFdBQUFBO1VBQUFBLFdBTVoycEM7UUEvQkEsWUFBQSw0QkF5QlkzcEM7O2lDQXZCQ3dULG9CQUFWMFk7WUF1QlNsc0IsV0F2QkN3VCxjQUFWMFk7VUFoQlBxYyxXQXVDZ0J2b0MsT0F2QkN3VDs7O1NBN0NqQnkwQixrQkFvRWdCam9DOztPQVdoQjtRQURJNHBDLFVBVlk1cEMsV0FLTjBwQztRQU1ORyxtQkFOV253RCxTQUxDc21CLFdBQU0wb0MsU0FLUGh2RDtPQVdmLE9BQUEsZ0NBTEltd0QsWUFEQUQsVUFWWTVwQzs7V0FxQk44cEM7T0FDVixPQUFBLDRCQURVQSxNQXJCTTlwQzs7T0E4RkY7UUFERCtwQztRQUNSQyxXQUFTLFdBOUZFaHFDLFdBNkZIK3BDO09BbEtiL0IsaUJBcUVnQmhvQyxPQThGWGdxQzswQ0FEUUQsWUE3RkcvcEM7OztZQThHWmlxQyxhQUFhanFDO0lBQ25CO0tBQU0sWUFBQSw0QkFEYUE7aUJBRVQ7S0FHTDs7TUFGSUw7TUFBYXZUO01BQVAwN0M7TUFDVG9DLGdCQUphbHFDLFlBQUFBO01BS2QsWUFGSUw7TUFFSixnQkFMY0ssWUFJYmtxQztnQkFDRDtLQUNELDRCQU5lbHFDO0tBT0QsSUFBVjBvQyxjQUpDL29DLE9BQUFBLE9BekxQb29DO0tBd0VBVSxnQkE4R2lCem9DLE9BT1gwb0MsUUFKT1o7S0FISTluQyxZQUdHNVQsU0FISDRUOztHQVdkO1lBSUhtcUMsZ0JBQWdCbnFDLE9BQU0wRDtJQW5PdEJta0MsV0FtT2dCN25DLE9BQU0wRDtJQUFNLE9BZnhCdW1DLGFBZVlqcUM7R0FBb0Q7WUFJcEVvcUMsa0JBQWtCcHFDLE9BQU1MLE1BQUsxaEI7SUFDL0IsT0FMRWtzRCxnQkFJa0JucUMsV0FBTUwsVUFBSzFoQixJQUFMMGhCO0dBQ2tEO1lBVzFFMHFDLHNCQUFzQkM7SUFDeEIsNEJBRHdCQTtJQUVQLElBQWJDLGlCQXRhQTNDO0lBdWFKLE9BQUEsb0NBREkyQyxhQUZvQkQ7R0FHd0I7WUFXOUNFLFNBQVN4cUMsT0FBTXRtQjtJQUNYLFlBQUEsNEJBREtzbUI7Z0JBRUQ7SUFFUjs7S0FEbUJ1cUM7S0FBWkU7S0FDSDlxQyxPQURlNHFDO09BQVpFLGFBSEV6cUMsa0JBZFRxcUMsc0JBY1NycUM7ZUFHVXVxQzs7OztlQUhKN3dEO1NBR0k2d0QsZ0JBSFZ2cUMsWUFJTEw7U0FjRSw0QkFsQkdLOztRQWtCSDs7O1dBbEJTdG1CO1NBR0k2d0QsZ0JBSFZ2cUMsWUFJTEw7U0FTRSw0QkFiR0s7O1FBYUg7O0lBU0Y7R0FBRTtZQUtOMHFDLFVBQVUxcUMsT0FBTXhnQixHQUFFc29EO0lBNVJsQkQsV0E0UlU3bkMsT0FBUThuQztPQUFGdG9ELEdBM0JoQmdyRCxTQTJCVXhxQztJQUdELElBQVAycUMsV0FIUTNxQyxXQUFROG5DO0lBSXBCLE9BQUEsNEJBREk2QyxNQUhRM3FDO0dBSXVCO1lBTWpDNHFDLGdCQUFnQjVxQyxPQUFNZ3NCLFFBQU82ZTtJQUFiN3FDLFlBQUFBO09BQUFBLFlBQUFBO0tBSUwsSUFEUEwsU0FIWUssZUFJWjJxQyxXQURBaHJDLFVBSGtCcXNCLFFBQU82ZTtLQUs3QixPQWZBSCxVQVVnQjFxQyxVQUlaMnFDOztlQUpZM3FDLGNBQUFBOztRQTNESy9oQixJQTJETCtoQjtJQTFEbEIsT0FMRW9xQyxrQkErRGdCcHFDLDZCQTNESy9oQixJQUFBQTtHQWtFb0I7WUFPekM2c0QsYUFBYTlxQztJQUNmLGVBRGVBOztRQUFBQSxZQUFBQTtNQXBUYjZuQyxXQW9UYTduQyxXQXVNVDNOO01BMVBKbTRDLFNBbURheHFDO01BbkRid3FDLFNBbURheHFDOztLQUFBQSxZQUFBQTs7Ozs7O0dBU1o7WUFJRCtxQyxhQUFhL3FDLE9BQU04b0M7SUFDckIsR0FEZTlvQztLQUdiLDRCQUhtQjhvQyxVQUFOOW9DO0tBSWIsV0FKYUEsV0FBTThvQzs7ZUFBTjlvQzs7SUFPRCxJQUFSOG5DLFlBUGVnQjtJQVFGLE9BelVqQmpCLFdBaVVhN25DLFdBMExUM04sTUFuTEF5MUM7R0FDb0Q7WUFJeERrRCxjQUFjaHJDO0lBQ2hCLEdBRGdCQSxXQTdVZDZuQyxXQTZVYzduQyxXQThLVjNOO2VBOUtVMk47O0tBSVIsWUFBQSw0QkFKUUE7O1VBTVA4b0M7TUFDTCxPQUFBLFdBUFk5b0MsV0FNUDhvQzs7Ozs7O0lBREc7R0FFeUI7WUFFbkNtQyxZQUFZanJDLE9BQU0vaEI7SUFBSSxPQXJCdEI4c0QsYUFxQlkvcUMsdUJBQU0vaEI7R0FBcUM7WUFDdkRpdEQsYUFBYWxyQyxjQUFXLE9BVnhCZ3JDLGNBVWFockMsVUFBaUM7WUFFOUNtckMsa0JBQWtCbnJDLE9BQU14Z0IsR0FBTndnQixZQUFNeGdCLFlBQTRCO1lBQ3BENHJELGlCQUFpQnByQyxPQUFNeGdCLEdBQU53Z0IsWUFBTXhnQixZQUEyQjtZQUNsRDZyRCxrQkFBa0JyckMsY0FBVyxPQUFYQSxVQUE4QjtZQUNoRHNyQyxpQkFBaUJ0ckMsY0FBVyxPQUFYQSxVQUE2QjtZQUM5Q3VyQyxZQUFZdnJDLE9BQU14Z0I7SUFKbEIyckQsa0JBSVluckMsT0FBTXhnQjtJQUNwQixPQUpFNHJELGlCQUdZcHJDLE9BQU14Z0I7R0FDK0I7WUFJakRnc0QsK0JBQWdDeHJDO0lBQVcsV0FBWEEsV0FBQUEsV0FBQUEsV0FBQUE7R0FLbkM7WUFHR3lyQywrQkFBZ0N6ckM7UUFJWjByQyxnQkFEREMsZ0JBREFDLGdCQUREQztJQURjN3JDLFlBQ2Q2ckM7SUFEYzdyQyxZQUViNHJDO0lBRmE1ckMsWUFHYjJyQztJQUhhM3JDLFlBSVowckM7OztZQVNwQkksU0FBUzlyQztJQUFBQTtJQUFBQTtpQ0FBQUE7SUFwSVRxcUMsc0JBb0lTcnFDO0lBR1gsNEJBSFdBO0lBSVgsNEJBSldBO0lBS1gsNEJBTFdBO0lBTVgsNEJBTldBO0lBQUFBO0lBQUFBO0lBQUFBLFdBQUFBO0lBdEVlLE9BWHhCNHFDLGdCQWlGUzVxQztHQVVVO1lBT25CK3JDLGVBQWUvckMsT0FBTXhnQjtJQUN2QixXQURpQndnQjt5QkFKSSxPQTdDbkJrckMsYUFpRGVsckMsVUFKeUI7SUFBL0I7SUFPVDthQUhlQTtNQUFBQSxZQTFXZituQztNQXNMSWtDLGFBb0xXanFDO1NBQU14Z0IsR0F0V3JCeW9ELGtCQXNXZWpvQztNQU9QLE9BeEJSOHJDLFNBaUJlOXJDOztLQXBGZjhxQyxhQW9GZTlxQzs7R0FRSDtZQVNaZ3NDLGlCQUFpQmhzQyxPQUFNTCxNQUFLMWhCO0lBQzlCLFdBRG1CK2hCLFlBQUFBO2tCQWxMakJvcUMsa0JBa0xpQnBxQyxPQUFNTCxNQUFLMWhCO0dBRUs7WUFHakNndUQsWUFBWWpzQyxPQUFNa3NDLE9BQU1qdUQ7SUFDMUIsT0FORSt0RCxpQkFLWWhzQyxPQUFNa3NDLE9BQU1qdUQ7R0FDa0I7WUFHMUNrdUQsZ0JBQWdCbnNDLE9BQU0vaEI7SUFDeEIsT0FMRWd1RCxZQUlnQmpzQyw2QkFBTS9oQixJQUFBQTtHQUNhO1lBRW5DbXVELGVBQWVwc0MsT0FBTS9oQjtJQUN2QixPQVJFZ3VEO2FBT2Vqc0M7MENBQU0vaEI7YUFDWSw0QkFEWkE7R0FDK0I7WUFHcERvdUQsYUFBYXJzQyxPQUFNamdCO0lBQUksT0FQdkJvc0QsZ0JBT2Fuc0MsT0FBZ0MsMkJBQTFCamdCO0dBQTJDO1lBRzlEdXNELGVBQWV0c0MsT0FBTS9pQjtJQUFJLE9BVnpCa3ZELGdCQVVlbnNDLE9BQWdDLHVCQUExQi9pQjtHQUE2QztZQUdsRXN2RCxjQUFjdnNDLE9BQU14Z0I7SUFBSSxPQWJ4QjJzRCxnQkFhY25zQyxPQUFnQyx1QkFBMUJ4Z0I7R0FBNEM7WUFHaEVndEQsY0FBY3hzQyxPQUFNbmY7SUFDdEIsT0FyQkVvckQsWUFvQmNqc0MsVUFDSSxnQ0FERW5mO0dBQ2U7WUFJbkM0ckQsYUFBYXpzQyxjQUFXLE9Bakp4QjRxQyxnQkFpSmE1cUMsYUFBMEM7WUFDdkQwc0MsYUFBYTFzQyxPQUFNZ3NCO0lBQVMsT0FsSjVCNGUsZ0JBa0phNXFDLE9BQU1nc0I7R0FBNkM7WUFFaEUyZ0IsY0FBYzNzQyxPQUFNZ3NCO0lBQVMsT0FwSjdCNGUsZ0JBb0pjNXFDLE9BQU1nc0I7R0FBOEM7WUFDbEU0Z0IsZUFBZTVzQyxPQUFNZ3NCO0lBQVMsT0FySjlCNGUsZ0JBcUplNXFDLE9BQU1nc0I7R0FBK0M7WUFDcEU2Z0IsWUFBWTdzQyxPQUFNZ3NCO0lBQVMsT0F0SjNCNGUsZ0JBc0pZNXFDLE9BQU1nc0I7R0FBNEM7WUFXOUQ4Z0IsaUJBQWlCOXNDO0lBL0RqQityQyxlQStEaUIvckM7SUFDbkIsT0FBQSxXQURtQkE7R0FDNkI7WUFDOUMrc0MsZUFBZS9zQztJQWpFZityQyxlQWlFZS9yQztJQUNqQixPQUFBLFdBRGlCQTtHQUNnQztZQUkvQ2d0QyxpQkFBaUJodEM7SUFDbkIsV0FEbUJBLFlBQUFBO2tCQTNPakJtcUMsZ0JBMk9pQm5xQyxXQTZDYjNOO0dBM0NzRTtZQUkxRTQ2QyxvQkFBb0JqdEM7SUFDdEIsV0FEc0JBLFlBQUFBO2tCQWpQcEJtcUMsZ0JBaVBvQm5xQyxXQXVDaEIzTjtHQXBDcUQ7WUFLekQ2NkMsc0JBQXNCbHRDLE9BQU9pcEMsTUFBTUQ7SUFDckM7S0FBbUJueEIsUUFEWW94QjtLQUNuQnoxQixRQURtQnkxQjtLQUMzQm54QixTQUQyQm14QjtZQUFQanBDLFlBQUFBOztJQUlEO0tBRGpCTCxTQUhrQks7S0FJbEI4bkMsWUFKeUJtQixNQUFNRDtLQUsvQjU4Qzs4QkFKRjByQixVQUFRdEU7U0FJVixzQkFKaUJxRTs7S0FLYjh5QixXQUhBaHJDLE1BQ0Ftb0MsT0FDQTE3QztJQUVKLE9Bdk1BcytDLFVBZ01zQjFxQyxVQU1sQjJxQztHQUNxQjtZQU16QndDLGVBQWVudEMsT0FBTXdULE9BQU10RDtJQUM3QixPQWRFZzlCO2FBYWVsdEMsa0JBQU13VCwwQkFBTXREO0dBRW1CO1lBUTlDazlCLGVBQWVwdEMsY0FBVyxPQVYxQm10QyxlQVVlbnRDLGFBQW1DO1lBQ2xEcXRDLGFBQWFydEMsY0FBVyxPQVh4Qm10QyxlQVdhbnRDLGFBQW1DO1lBSWhEc3RDLGFBQWF0dEM7SUFBQUEsWUFBQUE7ZUFBQUEsWUFBQUE7O0lBSUYsSUFBUDJxQyxXQURBdDRDO0lBRUosT0ExUkE4M0MsZ0JBcVJhbnFDLE9BSVQycUM7R0FDc0I7WUFJMUI0QyxjQUFjdnRDO0lBQ2hCLGVBRGdCQTs7Z0JBQUFBLFlBQUFBOztNQUlGLElBQVAycUMsV0FWRHQ0QztNQXhSSjgzQyxnQkE4UmNucUMsT0FJVDJxQztNQUpTM3FDLFlBQUFBOzs7Ozs7Ozs7R0FPYjtZQUlEd3RDLGdCQUFnQnh0QyxPQUFNd1QsT0FBTXREO0lBQzlCLFdBRGtCbFEsWUFBQUE7O0lBR0wsSUFEUEwsU0FGWUssZUFHWjJxQyxXQURBaHJDLFVBRmtCNlQsT0FBTXRELFNBQU5zRDtJQUl0QixPQXBQQWszQixVQWdQZ0IxcUMsVUFHWjJxQztHQUNxQjtZQUd6QjhDLGFBQWF6dEMsY0FBVyxPQVB4Qnd0QyxnQkFPYXh0QyxhQUFvQztZQUVqRDB0QyxXQUFXMXRDO0lBQ2IsV0FEYUEsWUFBQUE7O0lBRUEsSUFBUDJxQyxXQTVCQXQ0QztJQTZCSixPQXJUQTgzQyxnQkFrVFducUMsT0FFUDJxQztHQUNzQjtZQVUxQmdELGlCQUFpQjN0QyxPQUFNbmlCO0lBQUksZUFBSkEsMEJBQU5taUIsWUFBTW5pQjs7R0FBeUM7WUFHaEUrdkQsaUJBQWlCNXRDLGNBQVcsT0FBWEEsVUFBNkI7WUFFOUM2dEMsa0JBQWtCN3RDLGNBQVcsT0FBWEEsY0FBQUE7R0FBbUQ7WUFHckU4dEMscUJBQXFCOXRDLE9BQU0vaEIsR0FBTitoQixZQUFNL2hCLFlBQTBCO1lBQ3JEOHZELHFCQUFxQi90QyxjQUFXLE9BQVhBLFVBQTRCO1lBSWpEZ3VDLFNBQVNud0QsR0FDWCxPQURXQSxpQkFBQUEsZUFDb0M7WUFlN0Nvd0Qsa0JBQWtCanVDLE9BQU16VDtJQUMxQixlQUQwQkE7O1FBWElFLE1BV1Z1VCxXQUFNelQscUJBWElFOztJQUVwQixJQUFKNU8sSUFQSm13RCxTQUs0QnZoRDtJQVdWdVQsV0FUZG5pQjtJQVNjbWlCLFdBQUFBLFdBQUFBO0lBTmxCLE9BbE1BOHJDLFNBd01rQjlyQztHQUUrQjtZQUdqRGt1QyxrQkFBa0JsdUMsY0FBVyxPQUFYQSxTQUE4QjtZQUVoRG11QyxjQUFjbnVDLE9BQU1uaUI7SUFDdEIsZ0JBRHNCQTs7SUFFWixJQUFKME8sTUF6Qkp5aEQsU0F1Qm9CbndEO0lBQU5taUIsV0FFVnpUO09BRlV5VCxZQUFBQTtTQUlWb3VDLGlCQUpVcHVDOztLQVdIO01BQUE7UUFBQSwyQkFYR0EsV0FBQUEsY0FBQUE7TUFJVm91QyxpQkFPRDtJQUdILE9BckJBSCxrQkFPY2p1QyxPQUlWb3VDO0dBVWtDO1lBTXRDQztRQUFtQkMsbUJBQVFDO0lBQzdCLFlBRDZCQSxhQUFSRCxVQUFRQzs7WUFPM0JDLGVBQWVDO0lBQ2pCLGFBUkVKLGtCQU9lSTtHQUdDO1lBRWhCQyxjQUFjMXVDLGNBQVcsT0FBWEEsU0FBMEI7WUFFeEMydUMscUJBQXFCM3VDO1FBQU9zdUMsbUJBQVFDO0lBbENwQ0osY0FrQ3FCbnVDLE9BQU9zdUM7SUF6QzVCTCxrQkF5Q3FCanVDLE9BQWV1dUM7SUFFdEM7O1lBR0VLLGdCQUFnQjV1QyxPQUFPdXVDLFlBQVlEO0lBQ3JDO0tBQUlHLGVBRHFCRixZQUFZRDtLQUUvQixRQXJCSkQsa0JBb0JFSTt1QkFLRixPQVhBRSxxQkFLZ0IzdUMsT0FDZHl1QztJQUdzQjtLQURsQngwQztLQUNrQixPQUFBLG1EQURsQkE7SUFDTixNQUFBO0dBRW1DO1lBRW5DNDBDLHFCQUFxQjd1QyxPQUFPdXVDLFlBQVlEO0lBQzNCLElBQVhHLGVBRDBCRixZQUFZRDtpQkEzQnhDRCxrQkE0QkVJO2NBZEZFLHFCQWFxQjN1QyxPQUNuQnl1Qzs7R0FLaUM7WUFFbkNLLGdCQUFnQjl1QyxjQUNsQixXQURrQkEsVUFBQUEsVUFDMEQ7WUFFMUUrdUMsbUJBQW1CL3VDLE9BQU1zSztJQUNaLElBQVhta0MsV0FKRkssZ0JBR21COXVDO0lBRU0sT0ExQnpCMnVDLHFCQXdCbUIzdUMsT0FFTSxXQUZBc0ssUUFDdkJta0M7R0FDd0M7WUFHMUNPLCtCQUErQmh2QztRQUtoQmxNLGNBREEvVCxjQURDaWYsY0FERnpILGNBREN0YTtJQURnQitpQixZQUNoQi9pQjtJQURnQitpQixZQUVqQnpJO0lBRmlCeUksWUFHZmhCO0lBSGVnQixZQUloQmpnQjtJQUpnQmlnQixZQUtoQmxNOzs7WUFRZm03QywrQkFBK0JqdkM7SUFBVyxXQUFYQSxXQUFBQSxXQUFBQSxXQUFBQSxXQUFBQTtHQU1sQztZQUlHa3ZDLCtCQUFrQ2x2QyxPQUFNL2lCLEdBQUVzYSxHQUFSeUksWUFBTS9pQixHQUFOK2lCLFlBQVF6STtHQUNLO1lBRS9DNDNDLCtCQUFrQ252QyxjQUNwQyxXQURvQ0EsV0FBQUE7R0FDSztZQUl2Q292QyxnQkFBZ0JwdkM7SUFBVyxPQUFBLFdBQVhBO0dBQXdDO0dBRzNDLElBQWJxdkMsYUFBYTtZQUNUQyxlQUFldHZDLE9BQU1uaUI7SUFDM0IsSUFEMkIwTyxNQUFBMU87SUFDM0I7b0JBRDJCME87O2NBQUFBLEtBRVgsT0FBQSxXQUZLeVQsV0FEbkJxdkMsZUFDeUI5aUQ7S0FJekIsV0FKbUJ5VCxXQURuQnF2QztLQUtBLElBSnlCNWlELE1BQUFGLGNBQUFBLE1BQUFFOztHQU14QjtZQVFEOGlELDZCQUE2QnZ2QyxPQUFNN2U7SUFBTjZlLFlBQ1IsdUJBRGM3ZTtJQUFONmUsNEJBRUUsT0FBakMsdUJBRnFDN2UsSUFFSTtJQUZWNmUsMkIsT0FsQjdCb3ZDLGdCQWtCNkJwdkM7SUFBQUEsMkIsT0FkekJzdkMsZUFjeUJ0dkM7SUFBQUEsMkIsT0FkekJzdkMsZUFjeUJ0dkM7O0dBS1k7WUFRekN3dkM7SUFBMkIsNEJBRXRCO0lBRGlCLElBQVh2eEQsY0FBVyxPQUFBLHVCQUFYQTtJQUFXLE9BQUE7R0FDZjtZQUNQd3hEO0lBQTRCLDRCQUV2QjtJQURrQixJQUFaeHhELGNBQVksT0FBQSx1QkFBWkE7SUFBWSxPQUFBO0dBQ2hCO1lBRVB5eEQsZ0M7WUFDQUMsaUM7WUFJQUMsa0JBQWtCM3lELEdBQUVzYSxHQUFFeUgsR0FBRWpmLEdBQUUrVDtJQUU1QjtLQUFJKzdDLFdBQVc7S0FDWEMsY0FuNEJBbEk7SUFxNEJKLDRCQUZJa0ksU0FEQUQ7SUFJYSxJQUFiRSxhQUFhO0lBbGVmMUYsc0JBa2VFMEY7SUFFSixtQ0FMSUQsVUFHQUM7SUFFSjtLQUNJQzs7S0FPYyxPQUFBO0tBREQsT0FBQTtLQURDLE9BQUE7SUFIbEI7WUFMSUQ7WUFPZ0I7Ozs7WUFKaEJDOzs7WUFBQUE7Ozs7Ozs7O1lBVGdCL3lEO1lBQUVzYTtZQUFFeUg7WUFBRWpmO1lBQUUrVDs7O1lBWjFCMDdDO1lBR0FDO1lBSUFDO1lBQ0FDO1lBTUVFO0dBc0NIO1lBSUNJLDJCQUEyQkM7SUFDN0IsT0E3Q0VOO2FBNEMyQk0sYUFBQUEsYUFBQUEsYUFBQUEsYUFBQUE7R0FNUjtZQUtuQkMsZUFBZTl1RCxRQUFPK0Q7SUFDZDtLQUFOZ3JEO09BeERGUjtTQXVEZXZ1RDtTQUFPK0Q7d0I7d0I7d0I7SUFDcEJnckQseUIsT0FuR0ZoQixnQkFtR0VnQjtJQUFBQSx5QixPQS9GRWQsZUErRkZjO0lBQUFBLHlCLE9BL0ZFZCxlQStGRmM7SUFJSixPQUpJQTtHQUlEO1lBSURDLHlCQUF5Qmx2RDt5QkFDcUIsT0FBaEQsdUJBRDJCQSxJQUM2QjtJQUFuQixPQVZuQ2d2RCxlQVVhLHVCQURZaHZEO0dBQzhCO1lBSXZEbXZELG9CQUFvQjl3RDtJQUN0QixvQjtJQUF3QyxPQWZ0QzJ3RCxlQWVhLDhCQURPM3dEO0dBQ3dCO09BTTVDK3dEO1lBQ0FDO0lBQW9CLG9DQURwQkQ7R0FDZ0Q7R0FHdkM7SUFBVEUsU0FIQUQ7SUFPQUUsZ0JBcEJBTDtJQXFCQU0sZ0JBckJBTjtJQXNCQU8sZ0JBakJBTixvQkFXQUc7WUFhQUksdUJBQXVCbHVELEtBQUl5dEQ7SUFwYTNCckUsZUFvYTJCcUU7SUFFckIsSUFBSm55RCxJQUFJLDZCQUZpQjBFO0lBR3pCLDZCQUh5QkE7SUFHekIsT0FESTFFO0dBRUg7WUFJQzZ5RDtJQUF5QixPQVJ6QkQsdUJBYkFKLFFBTUFHO0dBZW9FO1lBMEJwRUcsbUNBQ0YsY0FBaUM7WUFFL0JDLDZCQUE2QkMsS0FBQUEscUJBQ0c7WUFFaENDLDJCQUEyQkQ7SUFDN0Isa0NBRDZCQTtHQUNRO1lBRW5DRSw2QkFBNkJGO0lBQ25CLElBQVJHLFFBSkZGLDJCQUc2QkQ7SUFON0JELDZCQU02QkM7SUFFL0IsT0FESUc7R0FFQztZQUVIQyx5QkFBeUJKLEtBQUlLLE1BQUpMLGFBQUlLLE1BQUpMO0dBQ3lDO1lBRWxFTSwrQkFTa0JOO0lBR1osU0FBSmgwRCxFQVBvQmdCLEdBQUU4QixHQUFFbEM7S0FDRyxPQVQ3Qnd6RDtjQVlrQkosU0FIMEIsOEJBRHRCaHpELEdBQUU4QixHQUFFbEM7O0lBUXBCLFNBQUowWixRQVhGLE9BTEE4NUMseUJBWWtCSjtJQUtaLFNBQUpqeUMsUUFWRixPQVBBcXlDLHlCQVlrQko7SUFNWixTQUFKbHhELEVBUm9CbEMsR0FDTyxPQVg3Qnd6RCx5QkFZa0JKLFNBRklwekQ7SUFTaEIsU0FBSmlXLEVBUG9CalcsR0FDTyxPQWI3Qnd6RCx5QkFZa0JKLFNBQUlwekQ7SUFReEIsT0FqS0UreEQsa0JBNEpFM3lELEdBQ0FzYSxHQUNBeUgsR0FDQWpmLEdBQ0ErVDtHQUN1QjtHQVNiLFNBQVowOUMsZ0IsT0FsY0EvRSxhQTRXQWlFO0dBdUZZLFNBQVplLGdCLE9BbGNBL0UsYUEyV0FnRTtHQXdGYSxTQUFiZ0IsaUIsT0FqY0EvRSxjQXlXQStEO0dBeUZjLFNBQWRpQixrQixPQWpjQS9FLGVBd1dBOEQ7R0EwRlcsU0FBWGtCLGUsT0FqY0EvRSxZQXVXQTZEO0dBMkZZLFNBQVptQixnQixPQTFrQkEvRyxhQStlQTRGO0dBNEZXLFNBQVhvQixlLE9BemlCQTdHLFlBNmNBeUY7R0E2RlksU0FBWnFCLGdCLE9BemlCQTdHLGFBNGNBd0Y7R0E4RlksU0FBWnNCLGdCLE9BaGtCQWpILGFBa2VBMkY7R0ErRmEsU0FBYnVCLGlCLE9BcmpCQWpILGNBc2RBMEY7R0FnR1csU0FBWHdCO0ksT0FyZUFqRyxZQXFZQXlFOztHQWlHZSxTQUFmdnRELG1CLE9BbGVBZ3BELGdCQWlZQXVFO0dBa0djLFNBQWR0dEQsa0IsT0FoZUFncEQsZUE4WEFzRTtHQW1HWSxTQUFacnRELGdCLE9BN2RBZ3BELGFBMFhBcUU7R0FvR2MsU0FBZHB0RCxrQixPQTNkQWdwRCxlQXVYQW9FO0dBcUdhLFNBQWJ4dEQsaUIsT0F0ZEFzcEQsY0FpWEFrRTtHQXNHYSxTQUFieUIsaUIsT0ExZEE1RixjQW9YQW1FO0dBdUdjLFNBQWQwQjtJLE9BamFBakYsZUEwVEF1RDs7R0F3R1ksU0FBWjJCLGdCLE9BdlpBaEYsYUErU0FxRDtHQXlHYyxTQUFkNEIsa0IsT0F6WkFsRixlQWdUQXNEO0dBMEdnQixTQUFoQjZCLG9CLE9BL2JBdkYsaUJBcVZBMEQ7R0EyR2MsU0FBZDhCLGtCLE9BcmNBekYsZUEwVkEyRDtHQTRHZ0IsU0FBaEJsdEQsb0IsT0F4Y0FzcEQsaUJBNFZBNEQ7R0E2R21CLFNBQW5CK0I7SSxPQTViQXhGLG9CQStVQXlEOztHQStHWSxTQUFaZ0MsZ0IsT0ExWkFwRixhQTJTQW9EO0dBZ0hhLFNBQWJpQyxpQixPQWxaQXBGLGNBa1NBbUQ7R0FpSGUsU0FBZmtDO0ksT0F4WUFwRixnQkF1UkFrRDs7R0FtSFUsU0FBVm1DLGMsT0FqWUFuRixXQThRQWdEO0dBb0hZLFNBQVpvQyxnQixPQXBZQXJGLGFBZ1JBaUQ7R0FzSGEsU0FBYnFDLGlCLE9BblZBNUUsY0E2TkF1QztHQXVIYSxTQUFic0MsaUIsT0F2SEF0QztHQXlIaUIsU0FBakJ1QztJLE9BN1ZBaEYsa0JBb09BeUM7O0dBMEhpQixTQUFqQndDLHFCLE9BMUhBeEM7R0E0SGUsU0FBZnlDO0ksT0FsVEF2RSxnQkFzTEE4Qjs7R0E2SG9CLFNBQXBCMEM7SSxPQTNTQXZFLHFCQThLQTZCOztHQThIZSxTQUFmMkMsbUIsT0FwU0F2RSxnQkFzS0E0QjtHQStIa0IsU0FBbEI0QztJLE9BbFNBdkUsbUJBbUtBMkI7O0dBaUlnQixTQUFoQjZDLG9CLE9BbFlBNUYsaUJBaVFBK0M7R0FrSWdCLFNBQWhCOEMsb0IsT0FsSUE5QztHQW1JaUIsU0FBakIrQztJLE9BL1hBNUYsa0JBNFBBNkM7O0dBcUlvQixTQUFwQmdEO0ksT0E5WEE1RixxQkF5UEE0Qzs7R0FzSW9CLFNBQXBCaUQsd0IsT0F0SUFqRDtHQXlJRixTQURFa0Q7SSxPQXJQQXJFLDZCQTZHQW1COztHQTRJRixTQURFbUQ7SSxPQXpTQTdFLCtCQThKQTBCOztHQThJRixTQURFb0Q7SSxPQTlSQTdFLCtCQWlKQXlCOztHQWlKRixTQURFcUQ7SSxPQXZSQTdFLCtCQXVJQXdCOztHQW1KRixTQURFc0Q7SSxPQXRSQTdFLCtCQW9JQXVCOztHQXNKRixTQURFdUQ7SSxPQTlrQkF4SSwrQkF5YkFpRjs7R0F3SkYsU0FERXdEO0ksT0F4bEJBMUksK0JBaWNBa0Y7O0dBMEpGLFNBREV5RCxvQixPQW5tQkFoSixrQkEwY0F1RjtHQTRKRixTQURFMEQsb0IsT0EzSkExRDtHQThKRixTQURFMkQsbUIsT0F0bUJBakosaUJBeWNBc0Y7R0FnS0YsU0FERTRELG1CLE9BL0pBNUQ7R0FrS0YsU0FERTZELGMsT0F2bUJBaEosWUFzY0FtRjtZQXdLSThELGNBQWdCcjBDLEtBQXVCczBDLE1BQUtyRTtRQUE1QnNFLFFBQUF2MEM7O0tBQWtDLEdBQWxDdTBDO1VBQVNyMEMsTUFBVHEwQyxVQUFBQyxTQUFTdDBDOztVQUFUczBDLFNBdmRwQnRIO0tBdWRzRCxjQUNoRDtTQUNMandEO3NCQUFNLE9BQUEsV0FGb0NxM0QsTUFBS3JFLEtBRS9DaHpEOztLQUVELFdBSjJDcTNELE1BQUtyRSxLQUUvQ2h6RDtLQUdELFdBTG9CdTNELFFBQTRCdkU7S0FNakMsSUFOS3dFLFlBQUFELFNBQUFELFFBQUFFOzs7WUFpQnBCQyxhQUFlMTBDLEtBQXVCczBDLE1BQUtyRSxLQUFJMEU7SUFDakQsR0FEaUIzMEMsU0FBU0UsTUFBVEYsUUFBQXcwQyxTQUFTdDBDLGNBQVRzMEMsU0F4ZWZ0SDtJQXllSSxjQUFBLFdBRDJDeUg7a0JBRXBDO1FBVjBCQyxvQkFXM0J0ckQ7SUFDVixXQUpzQ2dyRCxNQUFLckUsS0FHakMzbUQ7UUFYMkI1QyxNQUFBa3VEO0lBQ3ZDO0tBQU0sWUFBQSxXQURpQ2x1RDtpQkFFMUI7U0FGMEJFLGtCQUczQjNKO0tBQ1YsV0FJZXUzRCxRQUE0QnZFO0tBSDNDLFdBR3NDcUUsTUFBS3JFLEtBTGpDaHpEO1NBSDJCeUosTUFBQUU7O0dBYUQ7WUFHcENpdUQsY0FBYzVFLEtBQUlueUQ7SUFDcEIsSUFBSXNELDRCQURnQnRELElBRWhCK0ssZUFDQUM7YUFDQTdEO0tBdGtCRittRDtPQWtrQmNpRSxLQUtNLDhCQUxGbnlELEdBRWhCK0ssU0FDQUMsV0FEQUQ7S0FDQUM7S0FEQUQsVUFDQUM7O0lBR3lCOztRQUh6QkEsYUFGQTFIO2dCQUNBeUgsWUFEQXpIO21CQUdBNkQ7O0tBS0ksWUFBQSx3QkFUWW5ILEdBR2hCZ0w7O01BQ0E3RDtNQTFoQkY0bkQsaUJBc2hCY29EOzsyQkFJWmhyRCxVQXJmRmdvRCxlQWlmY2dELGVBR1pubkQ7O0dBZ0J5QjtZQUUzQmdzRCxnQkFBa0I5MEMsS0FBdUJzMEMsTUFBS3JFO0lBQU0sR0FBbENqd0M7U0FBT0UsTUFBUEYsUUFBQXhZLE9BQU8wWTs7U0FBUDFZLDRCQUFtQixTQUFFO0lBQWEsWUFDOUMsT0FBQSxXQURZQSxNQUE0QnlvRDtRQUUzQ2h6RDtJQUFLLE9BQUEsV0FGaUNxM0QsTUFBS3JFLEtBRTNDaHpEOztZQUVIODNELGdCQUFpQm5yRCxJQUFJQyxPQUFNb21EO0ksdUJBQzFCaHpELGNBQUssT0FBQSxXQURXMk0sSUFBVXFtRCxLQUMxQmh6RDtRQUNHbU07SUFBSyxPQUFBLFdBRllTLE9BQU1vbUQsS0FFdkI3bUQ7O1lBRUo0ckQsZ0JBQWlCbnNELE1BQU1DLE9BQU1tbkQ7SSx1QkFDbkJ0d0QsY0FBSyxPQUFBLFdBREVrSixNQUFZb25ELEtBQ25CdHdEO1FBQ0N4QztJQUFLLE9BQUEsV0FGTzJMLE9BQU1tbkQsS0FFbEI5eUQ7O1lBSVg4M0QsWUFBWS96RCxRQUFPZzBEO0lBQ3JCO0tBQUkxeUQsTUFBTTtLQUNOeXRELE1BclBGRSxvQkFvUEUzdEQ7SUFFSixXQUhjdEIsUUFFVit1RCxLQUZpQmlGO0lBOWpCbkJ0SSxlQWdrQkVxRDtJQUdNLElBQU43dUQsTUFBTSw2QkFKTm9CO0lBS0osWUFESXBCO2NBRUMsNkJBTkRvQixRQUlBcEI7Y0FDWSw2QkFMWm9CO0dBTTJCO1lBYTdCMnlELHNCQUFzQmxGLEtBQUloMEQ7SUFBYSxVQUFiQTtZQUFBQTs7UUFDRyxPQXh1QjdCMHVELGFBdXVCc0JzRjs7UUFFTyxPQXRzQjdCbEYsYUFvc0JzQmtGOztRQUlPLE9BdGxCN0JyRCxlQWtsQnNCcUQ7O1FBS08sT0FsbEI3QnBELGlCQTZrQnNCb0Q7O1FBTU8sT0ExbEI3QnRELGlCQW9sQnNCc0Q7O1FBUU8sT0FqbkI3QjVELGNBeW1Cc0I0RDtnQkFTTyxPQWxuQjdCNUQsY0F5bUJzQjREOztXQUFJaDBEOztXQUdUOHpCLFNBSFM5ekIsZUFHaEJvM0IsUUFIZ0JwM0I7T0FHRyxPQXJqQjdCK3dELGVBa2pCc0JpRCxLQUdaNThCLE9BQU90RDs7T0FJWTs7V0FHbEJydkIsSUFWZXpFO09Bem1CMUJvd0QsY0F5bUJzQjREO09BVU8sT0FubkI3QjVELGNBeW1Cc0I0RCxLQVVYdnZEOztHQUE0RDtZQU1uRW1xQyxXQUFXb2xCLEtBQUlocEQ7SUFBTSxVQUFOQSxrQkEwQlM7Ozs7Ozs7Y0ExQlRBOztjQVNJbkssSUFUSm1LLFFBU0M4RyxJQVREOUc7VUFBZjRqQyxXQUFXb2xCLEtBU0tsaUQ7VUFDcEIsT0ExQkFvbkQsc0JBZ0JlbEYsS0FTUW56RDs7c0JBVEptSyxRQWVDb2lDLE1BZkRwaUM7O2VBWWlCQztXQVpoQzJqQyxXQUFXb2xCLEtBZUs1bUI7V0FESCxPQXh2QmpCdWhCO29CQTB1QmVxRixxQkFwQ2ZnRixZQW9DSXBxQixZQVlnQzNqQzs7Y0FHQUM7VUFmaEMwakMsV0FBV29sQixLQWVLNW1CO1VBRW1CO1dBQUEsTUFyRHZDNHJCLFlBb0NJcHFCLFlBZWdDMWpDO1dBRWhCLFVBQUE7V0FBUGl1RDtXQUFSdnBCO1VBQ0wsT0F2eEJBNGUsZ0JBcXdCZXdGLEtBaUJWcGtCLFFBQVF1cEI7O29CQWpCTW51RDs7OztnQkFDK0MwRCxNQUQvQzFELFFBQ3VDdVksZUFBbEJ5ckI7Ozs7Y0FrQmpCbnRDLElBbkJKbUosUUFtQkNxaUM7OztvQkFuQkRyaUM7Ozs7Z0JBSzZDa0ssTUFMN0NsSyxRQUtxQ3NoRCxpQkFBbEJ4ZDs7OztjQWdCakJycUMsSUFyQkZ1RyxRQXFCRDZqQzs7O29CQXJCQzdqQzs7OztnQkFDK0MwRCxNQUQvQzFELFFBQ3VDdVksZUFBbEJ5ckI7Ozs7Y0FrQmpCbnRDLElBbkJKbUosUUFtQkNxaUM7OztvQkFuQkRyaUM7Ozs7Z0JBSzZDa0ssTUFMN0NsSyxRQUtxQ3NoRCxpQkFBbEJ4ZDs7OztjQWdCakJycUMsSUFyQkZ1RyxRQXFCRDZqQzs7O2NBRUorTCxNQXZCSzV2QyxRQXVCUitqQyxNQXZCUS9qQztVQUFmNGpDLFdBQVdvbEIsS0F1QkpqbEI7VUFBaUIsT0FBQSxXQUFkNkwsS0F2QkNvWjs7Y0F3QkxvRixNQXhCU3B1RDtVQUFmNGpDLFdBQVdvbEIsS0F3QkxvRjtVQUFrQixPQTFuQjVCekksZUFrbUJlcUQ7O2NBeUJLbjJDLE1BekJEN1MsUUF5QkZxdUQsTUF6QkVydUQ7VUFBZjRqQyxXQUFXb2xCLEtBeUJFcUY7VUFBVyxPQUFBLHNCQUFSeDdDOztPQXpCaEIrd0IsV0FBV29sQixLQUt1QmxsQjtPQUdFLE9BMXBCeEM4Z0I7Z0JBa3BCZW9FLEtBS3lDMUgsUUFHaEIsZ0NBSHdCcDNDOztNQUw1RDA1QixXQUFXb2xCLEtBcUJHbmxCO01BQ1UsT0Evb0I1QnVoQixjQXluQmU0RCxLQXFCTXZ2RDs7S0FyQmpCbXFDLFdBQVdvbEIsS0FDeUJobEI7S0FFeEMsT0FycEJBNGdCLGlCQWtwQmVvRSxLQUMyQ3p3QyxNQUFRN1U7O0lBRDlEa2dDLFdBQVdvbEIsS0FtQkszbUI7SUFDUSxPQTdwQjVCMGlCLGdCQXlvQmVpRSxLQW1CUW55RDtHQU9PO1lBTTFCcXRDLFdBQVc4a0IsS0FBSWhwRDtJQUFNLFVBQU5BLGtCQTZCUzs7Ozs7OztjQTdCVEE7O2NBWUluSyxJQVpKbUssUUFZQzhHLElBWkQ5RztVQUFma2tDLFdBQVc4a0IsS0FZS2xpRDtVQUNwQixPQTdEQW9uRCxzQkFnRGVsRixLQVlRbnpEOztzQkFaSm1LLFFBa0JDb2lDLE1BbEJEcGlDOztlQWVpQkM7V0FmaENpa0MsV0FBVzhrQixLQWtCSzVtQjtXQURILE9BM3hCakJ1aEI7b0JBMHdCZXFGLHFCQXBFZmdGLFlBb0VJOXBCLFlBZWdDamtDOztjQUdBQztVQWxCaENna0MsV0FBVzhrQixLQWtCSzVtQjtVQUVtQjtXQUFBLE1BeEZ2QzRyQixZQW9FSTlwQixZQWtCZ0Noa0M7V0FFaEIsVUFBQTtXQUFQaXVEO1dBQVJ2cEI7VUFDTCxPQTF6QkE0ZSxnQkFxeUJld0YsS0FvQlZwa0IsUUFBUXVwQjs7b0JBcEJNbnVEOzs7O2dCQUMrQzBELE1BRC9DMUQsUUFDdUN1WSxlQUFsQnlyQjs7OztjQXFCakJudEMsSUF0QkptSixRQXNCQ3FpQzs7O29CQXRCRHJpQzs7OztnQkFLNkNrSyxNQUw3Q2xLLFFBS3FDc2hELGlCQUFsQnhkOzs7O2NBbUJqQnJxQyxJQXhCRnVHLFFBd0JENmpDOzs7b0JBeEJDN2pDOzs7O2dCQUMrQzBELE1BRC9DMUQsUUFDdUN1WSxlQUFsQnlyQjs7OztjQXFCakJudEMsSUF0QkptSixRQXNCQ3FpQzs7O29CQXRCRHJpQzs7OztnQkFLNkNrSyxNQUw3Q2xLLFFBS3FDc2hELGlCQUFsQnhkOzs7O2NBbUJqQnJxQyxJQXhCRnVHLFFBd0JENmpDOzs7Y0FFUEUsTUExQlEvakM7b0JBMEJSK2pDLDBCQUFBQTt5QkFBQUE7O2dCQWpCOEM4TCxNQVR0Qzd2QyxRQVM4QnN1RCxxQkFBbEJGLE1BaUJwQnJxQjtZQTFCUEcsV0FBVzhrQixLQVNnQm9GO1lBRVMsT0E3ckJ4Q3hKLGlCQWtyQmVvRSxLQVNrQ3NGLFFBRVQsV0FGaUJ6ZTs7O2NBaUIzQ0QsTUExQks1dkM7VUFBZmtrQyxXQUFXOGtCLEtBMEJKamxCO1VBQXVELE9BbnNCbEVnaEIsZ0JBeXFCZWlFLEtBMEJtRCxXQUFwRHBaOztjQUNKeWUsTUEzQlNydUQ7VUFBZmtrQyxXQUFXOGtCLEtBMkJMcUY7VUFBa0IsT0E3cEI1QjFJLGVBa29CZXFEOztjQTRCS24yQyxNQTVCRDdTLFFBNEJGdXVELE1BNUJFdnVEO1VBQWZra0MsV0FBVzhrQixLQTRCRXVGO1VBQVcsT0FBQSxzQkFBUjE3Qzs7T0E1QmhCcXhCLFdBQVc4a0IsS0FLdUJsbEI7T0FHRSxPQTFyQnhDOGdCO2dCQWtyQmVvRSxLQUt5QzFILFFBR2hCLGdDQUh3QnAzQzs7TUFMNURnNkIsV0FBVzhrQixLQXdCR25sQjtNQUNVLE9BbHJCNUJ1aEIsY0F5cEJlNEQsS0F3Qk12dkQ7O0tBeEJqQnlxQyxXQUFXOGtCLEtBQ3lCaGxCO0tBRXhDLE9BcnJCQTRnQixpQkFrckJlb0UsS0FDMkN6d0MsTUFBUTdVOztJQUQ5RHdnQyxXQUFXOGtCLEtBc0JLM21CO0lBQ1EsT0Foc0I1QjBpQixnQkF5cUJlaUUsS0FzQlFueUQ7R0FPTztZQVE5QnEyQyxTQUFTNXBCLEdBQUUwbEM7SUFDYixJQUQwQjE4QixnQkFDMUI7aUJBQ090c0IsS0F2RUQ0akMsV0FxRU9vbEIsS0FFTmhwRCx3QkFGSXNqQixHQUFFMGxDLEtBRTBCO0lBRHZDLE9BQUEsNENBRDBCMThCOztZQUt4QjhnQixVQUFVOXBCLEdBQUUwbEM7UUFBYTE4QjtJQUMzQixPQUFBLGtDQURZaEosR0FBRTBsQyxLQUFhMThCOztZQUd6QmloQixTQUFTeWI7SUFDWCxJQUR5QjE4QixnQkFDekI7c0I7SUFBQSxPQUFBLDRDQUR5QkE7O1lBR3ZCK2dCLFFBQVEyYjtzQjtJQUFNLHFCLE9BWGQ5YixjQVdROGI7R0FBeUI7WUFDakN2YixPQUFPbmhCLEtBQU0sT0FEYitnQixRQXhWQWljLGVBeVZPaDlCLEtBQStCO1lBQ3RDb2hCLFFBQVFwaEIsS0FBTSxPQUZkK2dCLFFBdlZBa2MsZUF5VlFqOUIsS0FBK0I7WUFFdkNraUMsU0FBU2xyQztJQUNYLElBRHNCZ0osZ0JBQ3RCO2lCQUNPdHNCO0tBQU8sT0FBRSxXQUZMc2pCLFlBRVUwbEMsS0FBTyxPQXRGdEJwbEIsV0FzRmVvbEIsS0FBZGhwRCxLQUF1QztJQUFDO0lBRC9DLE9BQUEsNENBRHNCc3NCOztZQUtwQm1pQyxRQUFRbmlDLEtBQU0sT0FMZGtpQyxrQkFLNEI3MUQsR0FBSyxPQUFMQSxFQUFNLEdBQTFCMnpCLEtBQStCO1lBRXZDcWhCLFNBQVNycUI7SUFDSCxJQURjZ0osZ0JBQ2xCbDBCLElBM1dGZ3hELG1CQTRXRUosTUFwWEZFLG9CQW1YRTl3RDthQUVBbXlCLElBQUV2cUI7S0E5REFra0MsV0E2REY4a0IsS0FDRWhwRDtLQUVGLE9BQUEsV0FMT3NqQixHQTFWVG1tQyx1QkEyVkVyeEQsR0FDQTR3RDtJQUc4QjtJQUNsQyxPQUFBLGtDQUhJeitCLFFBSGtCK0I7O1lBU3BCc2hCLFFBQVF0aEIsS0FBTSxPQVRkcWhCLFNBejBDQXI3QixJQWsxQ1FnYSxLQUFxQjtZQUU3Qm9pQyxVQUFVcHJDO0lBQ0osSUFEZWdKLGdCQUNuQmwwQixJQXRYRmd4RCxtQkF1WEVKLE1BL1hGRSxvQkE4WEU5d0Q7YUFFQW15QixJQUFFdnFCO0tBekdBNGpDLFdBd0dGb2xCLEtBQ0VocEQ7S0FFRixPQUFBLFdBTFFzakIsR0FyV1ZtbUMsdUJBc1dFcnhELEdBQ0E0d0Q7SUFHOEI7SUFDbEMsT0FBQSxrQ0FISXorQixRQUhtQitCOztZQVNyQnFpQyxTQUFTcmlDLEtBQU0sT0FUZm9pQyxVQXAxQ0FwOEMsSUE2MUNTZ2EsS0FBc0I7WUFJL0JzaUM7SUFydEJBakosZUEwVkEyRDtJQTRYRixPQXR0QkUzRCxlQTJWQTREO0dBNFg2QjtHQUV4Qix3QkFKTHFGO1lBYUFDLCtCQUFzQ2oyQyxPQUNqQy9pQixHQUFTc2EsR0FBV3lILEdBQVVqZjtJQWhoQm5DbXZELCtCQStnQnNDbHZDLE9BQ2pDL2lCLEdBQVNzYTtJQUR3QnlJLFlBQ2JoQjtJQURhZ0IsWUFDSGpnQjs7R0FHYjtZQUd0Qm0yRCwrQkFBc0NsMkM7SUFDeEMsV0FEd0NBLFdBQUFBLFdBQUFBLFdBQUFBO0dBRUc7R0FLM0MsU0FERW0yQztJLE9BYkFGLCtCQXhZQXZGOztHQTJaRixTQURFMEY7SSxPQVhBRiwrQkEvWUF4Rjs7WUFxYUFoYyxRQUFRbDFDO0lBQ0EsSUFEV2swQixnQkFDakIwOEIsTUFyYkZFLG9CQW9iUTl3RDthQUVOa3JCLEVBQUV0akIsS0EvSkE0akMsV0E4SkZvbEIsS0FDRWhwRCxNQUFNLE9BbDBCVjJrRCxlQWkwQkVxRSxRQUNvRDtJQUN4RCxPQUFBLGtDQURJMWxDLE1BRmlCZ0o7O1lBcUJuQjJpQywrQkFBK0JyMkM7UUFJWjByQyxnQkFEREMsZ0JBREFDLGdCQUREQztJQUtuQixTQUFJeUssVUFBVXI1RCxHQUFFc007Syw0QkFBd0MsT0FBeENBO1NBQXdCdEw7S0FBSyxPQUFBLFdBQS9CaEIsR0FBMEJnQjs7SUFOUCtoQiwwQixPQU03QnMyQyxVQUxleks7SUFEYzdyQywwQixPQU03QnMyQyxVQUpnQjFLO0lBT3BCO0lBVGlDNXJDLDBCLE9BTTdCczJDLFVBSGdCM0s7SUFPcEI7SUFWaUMzckMsMEIsT0FNN0JzMkMsVUFGaUI1Szs7O1lBUW5CNkssK0JBQStCN2lDO0lBQ3RCLElBQVA4aUMsT0F4NEJGaEwsK0JBdTRCK0I5M0I7YUFFN0IraUMsY0FBY3g0RCxHQUFJLE9BQW9CLFdBRHRDdTRELHlCQUNjdjRELElBQXNDO2FBQ3BEeTRELGVBQWV6NEQ7S0FBSSxPQUFxQixXQUZ4Q3U0RCx5QkFFZXY0RDtJQUF1QzthQUN0RDA0RCxlQUFlMTREO0tBQUksT0FBcUIsV0FIeEN1NEQseUJBR2V2NEQ7SUFBdUM7YUFDdEQyNEQsZ0JBQWdCMzREO0tBQUksT0FBc0IsV0FKMUN1NEQseUJBSWdCdjREO0lBQXdDO0lBQzVELFdBSkl3NEQsZUFDQUMsZ0JBQ0FDLGdCQUNBQztHQUM0RDtHQUdoRSxTQURFQztJLE9BcEJBUiwrQkExYkEzRjs7R0FpZEYsU0FERW9HO0ksT0FWQVAsK0JBdGNBN0Y7Ozs7O09BdldBN0Q7T0FpY0ErRTtPQXprQkE5RztPQTBrQkErRztPQXZjQXBGO09Ba2NBK0U7T0FqY0E5RTtPQWtjQStFO09BaGNBOUU7T0FpY0ErRTtPQWhjQTlFO09BaWNBK0U7T0ExZEF4RjtPQWtlQWhwRDtPQS9kQWlwRDtPQWdlQWhwRDtPQXZlQTZvRDtPQXFlQWlHO09BMWRBN0Y7T0E2ZEFocEQ7T0ExZEFpcEQ7T0EyZEFocEQ7T0FyZEFrcEQ7T0FzZEF0cEQ7T0F6ZEFxcEQ7T0EwZEE0RjtPQXRaQS9FO09BeVpBa0Y7T0F4WkFqRjtPQXVaQWdGO09BbGFBbEY7T0FpYUFpRjtPQTlhQWxGO09BZEFGO09BK2JBdUY7T0F6YkF0RjtPQTRiQXdGO09BdmNBMUY7T0FxY0F5RjtPQXZjQTFGO09Bd2NBdHBEO09BelVBMnFEO09BbVZBNEU7T0FuVEFyRTtPQW9UQXNFO09BM1ZBL0U7T0E2VkFnRjtPQXhWQS9FO09BeVZBZ0Y7T0E1VEExRTtPQVlBSTtPQWtUQXVFO09BMVNBdEU7T0EyU0F1RTtPQWhTQXJFO09Ba1NBdUU7T0FyU0F4RTtPQW9TQXVFO09BL1hBMUY7T0FrWUE0RjtPQS9YQTNGO09BZ1lBNEY7T0E5WEEzRjtPQStYQTRGO09BOWFBbkc7T0EwWkFvRjtPQWpaQW5GO09Ba1pBb0Y7T0E5WEFqRjtPQWlZQW1GO09BbllBcEY7T0FvWUFxRjtPQTNZQXRGO09Bd1lBb0Y7T0ExV0E5RTtPQThYQTRGO09BN1hBM0Y7T0E4WEE0Rjs7T0F4bUJBNUk7T0Fna0JBaUg7T0FwakJBaEg7T0FxakJBaUg7T0FyaUJBMUc7T0F1bUJBZ0o7T0EzbUJBcEo7T0FtbUJBZ0o7T0FsbUJBL0k7T0FzbUJBaUo7T0FybUJBaEo7T0FtbUJBK0k7T0FsbUJBOUk7T0FzbUJBZ0o7T0E1UUEvRTtPQXFQQXFFO09BL1FBMUU7T0F1UkE2RTtPQXBSQTVFO09Bc1JBNkU7T0FoVEFoRjtPQXlTQTZFO09BNVJBNUU7T0E4UkE2RTtPQXRrQkFySTtPQThrQkF3STtPQXRsQkF6STtPQXdsQkEwSTtPQTNLQTdEO09Bb0JBSztPQUNBQztPQWhCQUw7T0FXQUc7T0FNQUc7T0FlQUU7T0E5Q0FYO09BWEFGO09BbUZBYztPQUdBQztPQUdBRTtPQUdBQztPQUtBRTtPQUdBRTtPQTRHSWlEO09BaUJKSztPQVFBRztPQXFCQUM7T0FJQUM7T0FJQUM7T0EwSEExZ0I7T0FDQUk7T0FDQUM7T0FrQkFFO09BV0ErZ0I7T0F0QkFGO09BWkFsaEI7T0FSQUw7T0FlQXNoQjtPQVZBcGhCO09BaUJBTztPQVdBK2dCO09BdURBcGhCO09BbEVBSztPQWtEQW9oQjtPQUtBQztPQWxCQUg7T0FPQUM7T0E1MUJBakw7T0F5aUJBNkc7T0F4aUJBNUc7T0F5aUJBNkc7T0E2VkFzRTtPQW9CQVE7T0FSQU47T0FVQU87OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ3R5Q0VDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUtBQyxVQUFVQztJQUNaO0tBQ1UsSUFBSnAyRCxJQUFJLFdBRkVvMkQ7S0FBQUEsUUFFTnAyRDtLQUZNbzJEO0tBQUFBLFFBQUFBO2VBRU5wMkQsR0FGTW8yRCxRQUFBQTtLQU9WLE9BTElwMkQ7Ozs7O0tBRk1vMkQsUUFMVkY7S0FLVUU7S0FBQUE7S0FhVixPQWxCQUY7O0dBa0JDO1lBR0RHLFVBQVVELElBQ1osT0FEWUEsUUFBQUEsUUFoQlZELFVBZ0JVQyxJQUdLO1lBUWZFLGtCQUFrQkY7SUFDWixJQUFKcDJELElBWkZxMkQsVUFXa0JEO09BQUFBLE9BRUYsTUFBQTtJQUNsQixPQUZJcDJEO0dBRUg7WUFHQ3UyRCxhQUFhSCxJQWpCYkMsVUFpQmFELFlBQUFBLE1BRU47WUFLUEksbUJBQW1CSixJQUFLLGFBQUxBLGNBQXlCO1lBRTVDSyxjQUFjTDtJQUNoQixZQURnQkE7Ozt1QkFFTTtRQUNUajJDO0lBQWUsT0FBZkE7R0FFOEI7WUFHekN1MkMsV0FBV04sSUFDYixPQURhQSxRQUFBQSxnQkFBQUEsTUFHUTtZQU9uQk8sd0JBQXdCUCxJQUFBQSxvQkFBeUM7WUF5U25FUSxhQXZTUVI7SUFDUjtLQUFJUyxlQURJVDtLQUVKdnpDLE1BQU0sNkJBRE5nMEM7SUFFSiw2QkFGSUE7SUFESVQsUUFBQUE7SUFLUixPQUhJdnpDO0dBR0Q7WUFLRGkwQyxVQUFVbmtDLE9BQU15akMsSUFaaEJPLHdCQVlnQlAsS0FDbEIsT0FEWXpqQyxNQUVQO1lBR0hva0MsWUFBWXBrQyxPQUFNeWpDLElBQUssT0FMdkJVLFVBS1lua0MsZUFBTXlqQyxJQUE2QjtZQUUvQ1ksV0FBV3JrQyxPQUFNeWpDLElBQUdwMkQ7SUFDdEIsOEJBRG1CbzJELE9BQUdwMkQ7SUFDdEIsT0FIRSsyRCxZQUVXcGtDLE9BQU15akM7R0FFQztPQUdsQmE7WUFFQS85QyxPQUFPZytDLE9BQU12eEQ7SUFBTzs7WUEzRnBCdXdEOzs7OztZQTJGYXZ3RDtZQVFHLDZCQVZoQnN4RDtZQUVPQztHQVVWO1lBR0doZ0QsWUFBWTlaO0lBQ2QsSUFBSThCLFlBQ0F3QixNQUFKLHNCQUZjdEQ7YUFHVnVJO0tBQ0YsR0FGRWpGLE9BREF4QixNQUdnQixNQUFBO0tBQ1YsSUFBSmMsSUFBSSxnQkFMSTVDLEdBQ1Y4QjtLQUFBQTtLQU1GLE9BRkljO0lBRUg7SUFDSCxPQXJCRWtaLFVBZ0JFdlQ7R0FLbUI7O0dBR0wsU0FBaEIwWixvQixPQXhCQW5HO0dBd0JnQixJQXFEZHhZO1lBUEZ5MkQsa0JBQWtCLzFEO0lBQUssdUJBQUxBO0lBQXlCLE1BQUE7R0FBaUI7WUE0RnpEZzJELGtCQXhGZWgyRDtJQUFNLE1BQUE7R0FBaUI7WUFFekNpMkQsUUFBUUMsZUFBY0osT0FBTTkxRDtJQUM5QjtLQUNJVSxNQUFNO0tBQ041QztLQUNBNFU7S0FDQXlqRDthQUNBNXhEO0tBQ0YsR0FKRXpHLE9BQ0E0VSxRQUc4QixJQUFKOVQsSUFBSSxlQUw5QjhCLEtBQ0E1QyxPQUFBQSxRQUkwRCxPQUFoQ2M7UUFGMUJ1M0QsUUFHVyxNQUFBO0tBSlh6akQsU0FLTyx1QkFUbUIxUyxJQUUxQlUsUUFEQXBCO2tCQUdBb1Q7Z0JBQ0F5akQsdUJBTE1ELGVBQW9CbDJEO2dCQUcxQmxDLFVBU0UsZUFWRjRDO0lBWUM7SUFDTCxPQTNGRW9YLE9BNEVzQmcrQyxPQU1wQnZ4RDtHQVNhO0dBc0JqQixJQURFbEcsUUFwQ0E0M0QsUUFzRkdEO1lBM0NISSxhQUFhdjJELFNBR2JrZjtJQUZGLDBCQUVFQSxlQVRGLE9BREUxZ0I7SUFXUyxJQUFMMkIsS0FBSyxXQUpJSCxTQUdia2Y7V0E5Q0FrM0MsUUFOQUYsdUJBb0RBaDNDLE9BQ0kvZSxLQUFBQTtHQUMyQzs7R0FHckMsU0FBVkgsYyxPQVJBdTJEO0dBUVU7R0FDSSxTQUFkdDJELGtCLE9BVEFzMkQ7WUFjQXozQyxhQUFhM2UsSUFDZixPQTFERWkyRCxRQXNGR0QsdUJBN0JVaDJELEtBQUFBLElBQzBCO1lBR3ZDa0UsU0FBUzh3RDtJQUNYLFlBRFdBO2tDQUtzQjsyQkFIbEJoMUQsZUFDYixPQUFBLHVCQURhQTtRQUVNcTJEO0lBQU8sT0FBQSx1QkFBUEE7R0FDYztHQW1CeEIsSUFBUEM7R0FXa0IsU0FBcEJDLGtCQVZpQnYyRDtJQUNsQixJQUFJLFdBQUEsNEJBRGNBLElBRGZzMkQsVUFFQzs7OztLQUdBLElBREV0QixLQXpGTGlCLFFBc0ZHRCx1QkFBY2gyRCxLQUFBQTtLQURmczJELGtCQUNldDJELElBR1pnMUQsS0FKSHNCO0tBT0QsT0FISXRCOzs7R0FtQlg7OztZQUVJd0IsVUFBVXg2RDtJQUFJLE1BQUEsOENBQUpBO0dBQTBCO1lBRXBDeTZELGlCQUFpQjczRDtJQUNuQixPQUhFNDNELFVBR1Esa0NBRFM1M0Q7R0FDdUM7WUFHeEQ4M0QsaUJBQWlCQztJQUNuQixPQVBFSCxVQVFBLGtDQUZpQkc7R0FLTjtZQVdYQztJQUNGLE9BdkJFSjtHQXVCc0Q7WUFHdERLO0lBQ0YsT0EzQkVMO0dBMkJtRDtZQU9uRE0sbUJBQW1CbDRELEdBQUVtNEQ7SUFDdkIsT0FuQ0VQLFVBK0JGLGtDQUdxQjUzRCxHQUFFbTREO0dBQ2dCO1lBMkJqQ0MsV0FXVWhDLElBUGQzbEQ7SUFIRixVQUdFQTtLQVFPLElBQUwwbkQsS0EvVEE3QixrQkE4VFlGO0tBRWhCLGNBREkrQjtlQTlSQXhCLHdCQTZSWVA7O21CQUNaK0I7a0JBOVJBeEIsd0JBNlJZUCxLQUxkaUMsZ0JBS2NqQztpQkF2Q2Q4Qix1QkF3Q0VDOztjQVJGMW5ELEtBQUssT0FFTDRuRCxnQkFLY2pDLElBUGQzbEQ7SUEzQkY7S0FBUSxJQUFKelEsSUF2U0FxMkQsVUF5VVlELEtBakNULFdBaUNTQTtnQkFqQ1Q7S0FBdUIsV0FEMUJwMkQ7Ozs7Ozs7TUFLSzs7S0FoUUwyMkQsd0JBNlJZUDs7R0FQVztZQUV6QmlDLGdCQUFnQmpDLElBQUdwMkQ7SUFDWixJQUFMbTRELEtBMVRBN0Isa0JBeVRjRjtXQUNkK0IsT0FEaUJuNEQsSUF4UmpCMjJELHdCQXdSY1AsTUFsQ2hCOEIsbUJBa0NtQmw0RCxHQUNqQm00RDtHQUVtQjtZQVlyQkcsV0FBV2xDLElBQUssT0FBQSxnQkFFaEJRLGFBRldSLFFBQTRCO1lBSXZDbUMsV0FBV25DO0lBQ1AsSUFHSmg1RCxJQU5BdzVELGFBRVdSO2dDQUlYaDVEOztnQkFBQUE7Z0JBM0ZBdzZELFVBMkZlLGtDQUFmeDZEOzs7R0FBd0Q7WUFheERvN0Q7SUFBNkI7Ozs7UUFDdEI7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7OztRQUNNOztJQUNSLE1BQUE7R0FBWTtZQU1qQkMsa0JBQWtCQyxNQUFLdEM7SUFDekIsT0FEb0JzQzs7T0FPTztRQUFBLE9BdkN6QjlCLGFBZ0N1QlI7UUFDckJ2ekMsTUFNZ0I7OztPQUZPO1FBQUEsT0FyQ3pCK3pDLGFBZ0N1QlI7UUFDckJ2ekMsTUFJZ0I7OztPQURPO1FBQUEsT0FwQ3pCK3pDLGFBZ0N1QlI7UUFDckJ2ekMsTUFHZ0I7OztPQUVPO1FBQUEsT0F0Q3pCK3pDLGFBZ0N1QlI7UUFDckJ2ekMsTUFLZ0I7O21CQUxoQkEsTUFqQ0YrekMsYUFnQ3VCUjs7SUFRekIsSUFBSW4zRCxJQUFKLHNCQVBJNGpCO0lBUVEsU0FEUjVqQixZQUNRLGdCQVJSNGpCO0tBUXFDLE9BQUEsOEJBUnJDQSxRQU9BNWpCO0lBQzRCLE9BUjVCNGpCO0dBUTZEO1lBUS9EODFDLFlBQVl2QztJQUFLLE9BQUEsNkJBakRqQlEsYUFpRFlSO0dBQXdDO1lBbUNoRHdDLHdCQUF3QmptQyxPQUFNeWpDO0lBQ3BDLElBRDhCaHZCLFVBQUF6VTtJQUM5QjtjQUQ4QnlVLFNBQ1osT0FEWUE7S0FFdEIsSUFBSnBuQyxJQTNhQXEyRCxVQXlhZ0NEO0tBR2pDLEdBSGlDQSxPQUdaLE9BSE1odkI7Y0FFMUJwbkM7Z0JBQUFBO09BT1UsSUFUZ0IrdkMsVUE1VzFCZ25CLFlBNFcwQjN2QixTQUFNZ3ZCLEtBQU5odkIsVUFBQTJJOzs7O21CQUUxQi92QztNQUlVLElBTmdCK29ELFVBMVcxQmlPLFdBMFcwQjV2QixTQUFNZ3ZCLElBRWhDcDJELElBRjBCb25DLFVBQUEyaEI7OztLQVd2QixPQVh1QjNoQjs7R0FXbEI7WUFHVnl4Qix3QkFBd0JsbUMsT0FBTXlqQztJQUNoQyxTQUQwQnpqQyxPQUNSLE9BbExoQm1sQztJQW1MTSxJQUFKOTNELElBOWFBczJELGtCQTRhNEJGO1dBRTVCcDJEO0tBTVEsT0EvTFY0M0QsVUErTFUsa0NBTlI1M0Q7SUFHVSxJQUFSb25DLFVBN1hGNHZCLFdBd1hzQnJrQyxPQUFNeWpDLElBRTVCcDJEO0lBSUYsT0FwQkk0NEQsd0JBbUJBeHhCLFNBTDBCZ3ZCO0dBUW9DO1lBcUJsRTBDLGdCQUFnQkMsT0FBTUMsUUFBT2pRLFNBQU1xTjtJQUdyQyxTQUgrQnJOLFNBR2IsT0FqTmhCK087SUFrTk0sSUFBSnJuRCxNQTdjQTZsRCxrQkF5Y2lDRjtJQUtsQyxLQUFBLFdBTHFCNEMsUUFJcEJ2b0Q7S0FLUSxPQTdOVm1uRCxVQTZOVSxrQ0FMUm5uRCxLQUpjc29EO0lBTUosSUFyQk1FLFVBdFloQmpDLFdBcVoyQmpPLFNBQU1xTixJQUlqQzNsRCxNQW5CZ0JraUIsUUFBQXNtQztJQUNsQjtjQURrQnRtQyxPQUNBLE9BREFBO0tBRVYsSUFHTjN5QixJQTFjQXEyRCxVQW9kaUNEO0tBWmhDLEdBWWdDQSxPQVpYLE9BSE56akM7S0FLVCxHQUFBLFdBVWFxbUMsUUFWcEJoNUQ7TUFDWSxJQU5Jb25DLFVBdFloQjR2QixXQXNZZ0Jya0MsT0FlaUJ5akMsSUFWakNwMkQsSUFMZ0IyeUIsUUFBQXlVOztnQkFLaEJwbkMsR0FNSyxPQVhXMnlCO01BU0osSUFUSW9kLFVBeFloQmduQixZQXdZZ0Jwa0MsT0FlaUJ5akMsS0FmakJ6akMsUUFBQW9kOzs7R0F3QnVEO1lBR3pFbXBCLHVCQUFrQixvQ0FFUjtHQUdRLFNBQWxCQztJLE9BakJBTCw0QkFZQUk7O1lBT0FFLHNCQUFpQixvQ0FFUDtHQUdPLFNBQWpCQztJLE9BeEJBUCwyQkFtQkFNOztZQU9BRTtJQUFnQjs7Ozs7OztLQUN3Qjs7SUFDbkM7R0FBSztHQUdhLFNBQXZCQztJLE9BL0JBVCxpQ0EwQkFROztZQVVBRSxVQUFVN21DLE9BQU15akM7SUFDbEIsSUFBSXAyRCxJQTllQXMyRCxrQkE2ZWNGLEtBQ1YsV0FBSnAyRDs7OztRQUVLLE9BNWJMZzNELFdBeWJRcmtDLE9BQU15akMsSUFDZHAyRDs7Z0JBR0ssT0E3YkxnM0QsV0F5YlFya0MsT0FBTXlqQyxJQUNkcDJEOztJQUlHLE9BTEsyeUI7R0FLQTtZQUdWOG1DLCtCQUFtQzltQyxPQUFNeWpDO0lBQy9CLElBQVJodkIsVUFURm95QixVQVFtQzdtQyxPQUFNeWpDO0lBRTNDLE9BM0VFeUMsd0JBMEVFenhCLFNBRHVDZ3ZCO0dBRVQ7WUEyQmhDc0Qsb0JBQW9CaEIsTUFBSzNvQixTQUFNcW1CO0lBQ2pDLE9BRHNCc0M7O09BRUosT0ExRGhCUyxnQkF3RHlCcHBCLFNBQU1xbUI7O09BR2YsT0FoQ2hCcUQsK0JBNkJ5QjFwQixTQUFNcW1COztPQUpyQixJQWhCUWh2QixVQWpCbEJveUIsVUFxQ3lCenBCLFNBQU1xbUIsS0FsQi9CcDJELElBaGdCRXMyRCxrQkFraEI2QkY7aUJBbEIvQnAyRCxHQVVLLE9BOUZMNjRELHdCQWtGa0J6eEIsU0FvQmFndkI7T0FqQm5CLElBQVJ6akMsUUE3Y0Zxa0MsV0EwY2dCNXZCLFNBb0JhZ3ZCLElBbEIvQnAyRDtPQUVBLFNBREkyeUIsT0FDYyxPQURkQTtPQUVJLElBQUpsaUIsTUE5Z0JGNGxELFVBNmhCNkJEO09BZDVCLEdBYzRCQSxPQWRQLE9BSHBCempDOzs7aUJBRUFsaUI7b0JBQUFBO1VBSUssT0F0Q1Q0b0QsZUE3YUVyQyxXQTZjRXJrQyxPQWlCMkJ5akMsSUFmM0IzbEQsTUFlMkIybEQ7b0JBZjNCM2xEOzs7bUJBQUFBO2tCQUFBQSxLQUtLLE9BOUNUMG9ELGdCQXRhRW5DLFdBNmNFcmtDLE9BaUIyQnlqQyxJQWYzQjNsRCxNQWUyQjJsRDs7UUFUeEIsT0EzR0h3Qyx3QkFtR0FqbUMsT0FpQjJCeWpDOztPQVpoQixPQTlCZm1ELHFCQXBiRXZDLFdBNmNFcmtDLE9BaUIyQnlqQyxJQWYzQjNsRCxNQWUyQjJsRDs7T0FLZixPQXREaEJpRCxlQWlEeUJ0cEIsU0FBTXFtQjs7T0FNZixPQTVHaEJ5Qyx3QkFzR3lCOW9CLFNBQU1xbUI7ZUFPZixPQWpEaEJtRCxxQkEwQ3lCeHBCLFNBQU1xbUI7O0dBT2M7WUFNN0N1RCxxQkFBcUJobkMsT0FBTXlqQztJQUM3QixTQUR1QnpqQyxPQUNMLE9BREtBO0lBRWYsSUFHTjN5QixJQS9pQkVxMkQsVUEwaUJ5QkQ7SUFHMUIsT0FIMEJBO2NBQU56akM7O2dCQUtyQjN5QjtnQkFMcUIyeUI7Z0JBaklqQmltQyx3QkExV0Y1QixXQTJlbUJya0MsT0FBTXlqQyxJQUszQnAyRCxJQUwyQm8yRDtHQU9qQjtZQUlWd0QsbUJBQW1Cam5DLE9BQU15akM7SUFDM0IsU0FEcUJ6akMsT0FDSCxPQURHQTtJQUViLElBQUozeUIsSUF2akJBcTJELFVBcWpCdUJEO0lBR3hCLEdBSHdCQSxPQUdILE9BSEh6akM7Y0FFakIzeUIsYUFBQUEsR0FLRyxPQVBjMnlCO0lBTW5CLE9BM0RBOG1DLCtCQWpjRXpDLFdBc2ZpQnJrQyxPQUFNeWpDLElBRXZCcDJELElBRnVCbzJEO0dBT2Y7WUEyQ1Z5RCxXQUFXOXBCLFNBQU0rcEIsV0FBVTFEO0lBQzdCO0tBcENJempDLFFBNUVGNm1DLFVBK0dXenBCLFNBQWdCcW1CO0tBQ3pCaHZCLFVBL0xFd3hCLHdCQTJKRmptQyxPQW1DeUJ5akM7SUFFN0IsU0FESWh2QixTQUNjLFdBRGRBLFNBRGUweUI7SUFHWCxJQUFKOTVELElBMW1CQXEyRCxVQXVtQnlCRDtJQUkxQixHQUowQkEsT0FJTCxXQUhwQmh2QixTQURlMHlCO2NBR2Y5NUQsR0FTRixXQTlEQTQ1RCxtQkFtREV4eUIsU0FEeUJndkIsS0FBVjBEO0lBT0w7S0FBUi9RLFVBL2lCRmlPLFdBeWlCQTV2QixTQUR5Qmd2QixJQUd6QnAyRDtLQUtFKzVELGNBQVksMkJBRFpoUixTQVBhK1E7S0FTYmI7T0FGQWxRLFdBQ0FnUixjQXJFSkoscUJBcUVJSSxhQVJ1QjNEO0lBVTNCLFdBNURBd0QsbUJBMkRJWCxTQVR1QjdDLEtBUXZCMkQ7R0FJa0M7WUFHdENDLDhCQUE4QnJuQyxPQUFNeWpDLElBQUdqdEQsT0FBTXJPO0lBQy9DLFNBQUlvUCxVQUFVbEs7S0FDWixZQURZQTtlQUFBQTt1Q0FBQUE7SUFJSjtJQUNWO0tBQUlVLE1BQUosc0JBTitDNUY7S0FPM0Nzc0MsY0FQNEJ6VTtLQVFoQyxPQUZJanlCO0tBQ1E7O1NBQ1p4Qjs7TUFDVSxJQUFKYyxJQS9uQkZxMkQsVUFzbkJrQ0QsS0FVbEIsT0FUaEJsc0QsVUFTMEIsZ0JBVmlCcFAsS0FRL0NvRTtTQVBJZ0wsVUFRRWxLLGFBQ3FDLFdBVkZtSjtlQU9yQ2krQixZQUlpQixXQVhvQmorQjtNQU9yQ2krQixhQTlqQkE0dkIsV0E4akJBNXZCLFlBUGtDZ3ZCLElBU2hDcDJEO01BRE4sV0FBQWQ7a0JBQUFBO1VBQUFBOzs7V0FESWtvQztHQU9FO1lBR0o2eUIsZUFBZXRuQyxPQUFNbW5DLFdBQVUxRDtJQUNqQyxpQkFEaUJ6akMsOEJBdG5CYjRqQyxhQXNuQjZCSDtJQUNqQixTQTlXZDZCO0lBK1dVO0tBQVI3d0IsVUFqSkZveUIsVUErSWU3bUMsT0FBZ0J5akM7a0JBRTdCaHZCO29CQXhuQkFtdkIsYUFzbkI2Qkg7SUFHakIsU0FoWGQ2QjtJQWlYSSxJQUNKajRELElBNW9CRXEyRCxVQXVvQjZCRDs7O2NBSy9CcDJEO01BREksZUFDSkE7OztPQTZCWTtRQUFSK3ZDLFVBMW1CRmluQixXQTBrQkE1dkIsU0FGNkJndkIsSUFLL0JwMkQ7cUJBNkJJK3ZDO3VCQXhwQkZ3bUIsYUFzbkI2Qkg7T0FtQ2YsU0FoWmhCNkI7T0FnWjhDLE9BcEQ5QytCO2dCQW1ESWpxQixTQWxDMkJxbUIsSUE3Vy9CNkI7Ozs7O2dCQWtYQWo0RDtPQUNZO1FBQVJpNUQsVUE5a0JGakMsV0Ewa0JBNXZCLFNBRjZCZ3ZCLElBSy9CcDJEO3FCQUNJaTVEO3VCQTVuQkYxQyxhQXNuQjZCSDtPQU9mLFNBcFhoQjZCO09BcVhZO1FBQVJpQztVQXpCSkYsOEJBdUJJZixTQU4yQjdDLElBN1cvQjZCO09Bc1hnQixTQURaaUMsYUE5bkJGM0QsYUFzbkI2Qkg7UUFVWCxXQWpwQmxCQyxVQXVvQjZCRDs7Ozs7Ozs7O2NBVXpCK0QsVUE5Sk5aLHFCQTRKSVcsU0FSMkI5RDs7O2FBVXpCK0QsVUFGRkQ7O1FBS2MsU0FIWkMsYUFob0JKNUQsYUFzbkI2Qkg7U0FjVCxJQUNkM2xELE1BdHBCTjRsRCxVQXVvQjZCRDttQkFldkIzbEQ7VUFDWSxJQUFSMnBELFVBeGxCVnBELFdBa2xCSW1ELFNBVnlCL0QsSUFldkIzbEQ7OztXQUVnQixTQURaMnBELGFBdG9CVjdELGFBc25CNkJIO1lBa0JmLFlBenBCZEMsVUF1b0I2QkQ7Ozs7Y0FxQkg7ZUFBWjJELGNBQVksMkJBTGhCSyxTQWhCU047ZUFnQlRPO2lCQUFBRDtvQkFLSUwsY0F6S2hCUixxQkF5S2dCUSxhQXJCZTNEOzs7O2lCQWdCbkJpRSxXQUFBRDs7Z0JBQUFFLFVBQUFEOzs7ZUFBQUMsVUFBQUY7O2NBRkpHLFVBRUlEOzs7Y0FGSkMsVUFKRko7U0FlYyxTQVhaSSxhQXBvQk5oRSxhQXNuQjZCSDtVQTBCbkIsSUFDSjFsRCxNQWxxQk4ybEQsVUF1b0I2QkQ7b0JBMkJ2QjFsRCxlQUFBQSxLQUlLLE9BakJMNnBEO1VBY1k7V0FBUkMsVUFwbUJWeEQsV0FzbEJNdUQsU0FkdUJuRSxJQTJCdkIxbEQ7d0JBQ0k4cEQ7MEJBbHBCVmpFLGFBc25CNkJIO1VBNkJQLFNBMVl4QjZCO1VBMFlzRCxPQXBLdER3QiwrQkFtS1llLFNBNUJtQnBFOztTQXlCbUIsT0FYMUNtRTs7UUFEd0MsT0FIMUNKOztPQUR3QyxPQUQxQ0Q7O2dCQUhKbDZEOztLQWlDWTtNQUFSK29ELFVBOW1CRmlPLFdBMGtCQTV2QixTQUY2Qmd2QixJQUsvQnAyRDttQkFpQ0krb0Q7cUJBNXBCRndOLGFBc25CNkJIO0tBdUNmLFNBcFpoQjZCO0tBb1o4QyxPQXhEOUMrQjtjQXVESWpSLFNBdEMyQnFOLElBN1cvQjZCOztJQXNaSyxPQXRaTEE7R0FzWnFCO1lBR3JCd0MscUJBQXFCOW5DLE9BQU1tbkMsV0FBVTFEO0lBQ3ZDLGlCQUR1QnpqQyw4QkFscUJuQjRqQyxhQWtxQm1DSDtJQUN2QixTQTlaZDRCO0lBK1pVO0tBQVI1d0IsVUE1UUV3eEIsd0JBMFFpQmptQyxPQUFnQnlqQztrQkFFbkNodkI7b0JBcHFCQW12QixhQWtxQm1DSDtJQUd2QixTQWhhZDRCO0lBaWFNLElBQUpoNEQsSUF2ckJBcTJELFVBbXJCbUNELEtBSS9CLFdBQUpwMkQ7OztNQUdVO09BQVIrdkMsVUEzbkJGaW5CLFdBc25CQTV2QixTQUZtQ2d2QixJQUluQ3AyRDtPQU1FKzVELGNBQVksMkJBSFpocUIsU0FQdUIrcEI7T0FhdkJZLGtCQXRKSmYscUJBbUpJSSxhQVZpQzNEO09BZ0JqQ3VFLGFBTkFaLGNBR0FXO09BS0EzUixVQVhBaFosVUFTQTRxQjtNQUdKLE9BakpBZixtQkFnSkk3USxTQWxCaUNxTjs7O3FDQXFCckMsT0FuSkF3RCxtQkFnSUV4eUIsU0FGbUNndkI7SUFzQmhDLE9BbmJMNEI7R0FtYmlCO1lBR2pCNEMsZ0JBQWdCam9DLE9BQU1tbkMsV0FBVTFEO0lBQ2xDLGlCQURrQnpqQyw4QkEzckJkNGpDLGFBMnJCOEJIO0lBQ2xCLFNBdmJkNEI7SUF3YlU7S0FBUjV3QixVQXRORm95QixVQW9OZ0I3bUMsT0FBZ0J5akM7a0JBRTlCaHZCO29CQTdyQkFtdkIsYUEyckI4Qkg7SUFHbEIsU0F6YmQ0QjtJQTBiSSxJQUNKaDRELElBanRCRXEyRCxVQTRzQjhCRDthQUtoQ3AyRDthQUFBQTtNQWlDWTtPQUFSK3ZDLFVBbnJCRmluQixXQStvQkE1dkIsU0FGOEJndkIsSUFLaENwMkQ7b0JBaUNJK3ZDO3NCQWp1QkZ3bUIsYUEyckI4Qkg7TUF1Q2hCLFNBN2RoQjRCO01BNmQ4QyxPQWhFOUN5QyxxQkErREkxcUIsU0F0Q2tCK3BCLFdBQVUxRDs7O2tCQUtoQ3AyRDtLQUNZO01BQVIrb0QsVUFucEJGaU8sV0Erb0JBNXZCLFNBRjhCZ3ZCLElBS2hDcDJEO21CQUNJK29EO3FCQWpzQkZ3TixhQTJyQjhCSDtLQU9oQixTQTdiaEI0QjtLQThiTSxJQUNKdm5ELE1BcnRCQTRsRCxVQTRzQjhCRDtlQVM5QjNsRCxlQUFBQTtNQTBCQSxPQTVERmdxRCxxQkErQkkxUixTQU5rQitRLFdBQVUxRDtLQVVsQjtNQUFSNkMsVUF2cEJKakMsV0FtcEJFak8sU0FONEJxTixJQVM5QjNsRDttQkFDSXdvRDtxQkFyc0JKMUMsYUEyckI4Qkg7S0FXZCxTQWpjbEI0QjtLQWtjYztNQUFSa0MsVUFyT05YLHFCQW1PTU4sU0FWMEI3QzttQkFZMUI4RDtxQkF2c0JKM0QsYUEyckI4Qkg7S0FhZCxTQW5jbEI0QjtLQW9jb0IsSUFDZHRuRCxNQTN0QkoybEQsVUE0c0I4QkQsS0FjWixXQUNkMWxEOzs7Ozs7O1NBQ1ksSUFBUnlwRCxVQTdwQlJuRCxXQXlwQklrRCxTQVowQjlELElBZTFCMWxEOzs7VUFFZ0IsU0FEWnlwRCxhQTNzQlI1RCxhQTJyQjhCSDtXQWtCbEIsWUE5dEJaQyxVQTRzQjhCRDs7OzthQXFCTjtjQUFaMkQsY0FBWSwyQkFMaEJJLFNBaEJZTDtjQWdCWk87Z0JBQUFGO21CQUtJSixjQTlPZFIscUJBOE9jUSxhQXJCa0IzRDs7OztnQkFnQnRCaUUsV0FBQUY7O2VBQUFDLFVBQUFDOzs7Y0FBQUQsVUFBQUQ7O2FBQUFHLFVBQUFGOzs7OzRDQUFBRSxVQUpKSjtXQUVBSyxVQXBjTnZDOzs7VUFvY011QyxVQUVJRDs7S0FVUSxTQVpaQyxhQXpzQkpoRSxhQTJyQjhCSDtNQTJCdEIsSUFDSnpsRCxNQXh1QkowbEQsVUE0c0I4QkQ7Z0JBNEIxQnpsRCxlQUFBQSxLQUlLLE9BbEJMNHBEO01BZVk7T0FBUkMsVUExcUJSeEQsV0EycEJJdUQsU0FkMEJuRSxJQTRCMUJ6bEQ7b0JBQ0k2cEQ7c0JBeHRCUmpFLGFBMnJCOEJIO01BOEJWLFNBaGR0QjZCO01BZ2RvRCxPQTFPcER3QiwrQkF5T1VlLFNBN0JzQnBFOztLQTBCZ0IsT0FaMUNtRTs7SUErQkQsT0FuZUx2QztHQW1laUI7WUFTakI2QyxZQUFZQyxLQUNEbm9DLE9BRFd5akM7SUFDeEIsSUFBYWh2QixVQUFBelU7SUFDWDtjQURXeVUsU0FDTyxPQURQQTtLQUVILElBQUpwbkMsSUFyd0JGcTJELFVBa3dCb0JEO0tBSW5CLEdBSm1CQSxPQUlFLE9BSGJodkI7VUFEQzB6QjtNQVNSLFdBTkE5NkQ7Ozs7Ozs7T0FRWSxJQVZMK29ELFVBcHNCVGlPLFdBb3NCUzV2QixTQURXZ3ZCLElBR2xCcDJELElBRk9vbkMsVUFBQTJoQjs7O01BU3VCLE9BVHZCM2hCOztTQUtGMzJCLE1BTkdxcUQ7UUFHUjk2RCxNQUdLeVEsS0FMWCxPQTNzQklxbUQsVUEyc0JTMXZCLFNBRFdndkI7S0FPSCxJQU5Scm1CLFVBcHNCVGluQixXQW9zQlM1dkIsU0FEV2d2QixJQUdsQnAyRCxJQUZPb25DLFVBQUEySTs7R0FXSDtZQXFDUmdyQiwwQkFDRS82RDtJQUFKLGFBQUlBLElBQUFBLG1CQUFBQSxJQUFBQSxhQUFBQTtHQVVpQjtZQWVuQmc3RCxnQkFBZ0JqRCxTQUFRcGxDLE9BQU15akM7SUFDaEMsU0FEMEJ6akMsT0FDUixPQXhrQmhCbWxDLGlCQXVrQmdCQztJQUVWLElBQUovM0QsSUEvMEJBcTJELFVBNjBCNEJEO0lBRzdCLE9BSDZCQSxRQTdrQjlCd0IsVUFnQkEsa0NBNmpCZ0JHLFlBRWQvM0Q7R0FFSDtHQUc0QixTQUEzQmk3RDtJLE9BUEFEOztHQVE2QixTQUE3QkU7SSxPQVJBRjs7WUFVQUcsb0JBQW9CeG9DLE9BQU15akM7SUFDdEIsSUFuRGtCZ0YsS0ErQ3RCSCx5QkFHb0J0b0MsT0FBTXlqQzs7O2NBbERKZ0Y7Y0FBQUE7ZUFBQUE7T0E2RGI7UUFOTEM7O1dBQ00sSUFFTnI3RCxJQS8yQkZtMkQsVUF1MkJ3QkM7c0JBUXRCcDJELGVBN2xCSjYzRCxpQkE2bEJJNzNELEtBQUFBO1VBQ3VCO1FBM0RGczdELE9BdURyQkQ7UUF2RHdCRSxPQXVEeEJGO1FBdERGcjdEO21CQURvQm83RCwyQkFBR0U7YUFBR0M7Ozs7Z0JBQzFCdjdELFlBQUFBLGNBUUosdUJBUklBOztnQkF0aUJGNDNELFVBNGlCRSxrQ0FQb0J3RCxJQUFHRSxNQUFHQzs7T0ErRE8sT0FyeUJqQ3ZFLFdBd3hCa0Jya0MsZUFBTXlqQzs7TUFDdEIsZUFuRGtCZ0Y7Ozs7U0FzRWI7VUFMTEk7O2FBQ0YsSUFBSXg3RCxJQXYzQkptMkQsVUF1MkJ3QkMsS0FnQmhCLE9BQUpwMkQ7Ozs7Ozs7Y0FFMkMsT0FGM0NBOzthQUdHLE9BeG1CVDYzRCxpQkFxbUJNNzNEO1lBR3FCO1VBekNEc0ssS0FxQ3RCa3hEO1VBckN5Qmp4RCxLQXFDekJpeEQ7VUFsQ0MsT0FqQkxULDBCQWM2Qnh3RDtVQUMzQmtHLFlBZkZzcUQsMEJBYzBCendEOzs7a0JBQ3hCbUcsY0FBQUE7c0JBTUosdUJBTklBOzs7cUJBbGtCRm1uRCxVQXVrQkUsa0NBTndCdHRELElBQUdDOztTQTRDTSxPQTl5QmpDeXNELFdBd3hCa0Jya0MsZUFBTXlqQzs7Ozs7Ozs7O29CQWxESmdGLFdBQUFBOzs7Z0JBQUFBO2dCQUFBQTtlQUFBQTs7Ozs7Ozs7O3FCQUFBQTtpQkFBQUE7O0tBcURPLE9BM3hCM0JwRSxXQXd4QmtCcmtDLE9BQU15akM7O0lBd0IxQixPQTdtQkF5QixpQkFtaUJzQnVEO0dBMEVKO1lBMkJsQkssaUJBRWlCOW9DLE9BRk15akM7YUFPckJzRixxQkFBVS9vQztLQUNaLElBRFl5VSxVQUFBelU7S0FDWjtNQUFNLElBR0ozeUIsSUFoRUZrN0QsMkJBNERZOXpCLFNBUFdndkI7Z0JBV3JCcDJELEdBVEosT0EvMEJJKzJELFlBbzFCVTN2QixTQVBXZ3ZCO2dCQVdyQnAyRDtPQUR1QjtRQUdSK3ZDLFVBMTFCZmduQixZQW8xQlUzdkIsU0FQV2d2QjtRQWNqQixRQW5FTjhFLDJCQWtFaUJuckIsU0FiTXFtQjs7UUFnQkQsV0E3MUJwQlcsWUEwMUJlaG5CLFNBYk1xbUI7UUFnQkQ7U0FBQSxPQUFBLHVCQVFwQnVGOztRQVJvQixPQVFwQkE7OztRQVRxQixJQUlSMUMsVUFoMkJibEMsWUEwMUJlaG5CLFNBYk1xbUI7a0JBckR2QjhFLDJCQXdFZWpDLFNBbkJRN0M7U0FxQkQsV0FsMkJwQlcsWUFnMkJha0MsU0FuQlE3QztTQXFCRDtVQUFBLE9BQUEsdUJBR3BCdUY7O1NBSG9CLE9BR3BCQTs7UUFGZSxJQWZMeEIsVUFsMUJWbkQsV0E4MUJhaUMsU0FuQlE3QyxTQU9YaHZCLFVBQUEreUI7OztRQVVLLElBVkxELFVBMURaaUIsb0JBZ0VpQnByQixTQWJNcW1CLEtBT1hodkIsVUFBQTh5Qjs7O09BSUssSUFKTG5SLFVBbDFCVmlPLFdBazFCVTV2QixTQVBXZ3ZCLElBV3JCcDJELElBSlVvbkMsVUFBQTJoQjs7SUFJcUM7YUFKL0M2UyxVQUFVanBDLE8sdUJBQVYrb0MsZUFBVS9vQzthQWlCVmdwQyxxQkFBWWhwQztLQUNkLElBRGN5VSxVQUFBelU7S0FDZDtnQkE5RUF1b0MsMkJBNkVjOXpCLFNBeEJTZ3ZCO09BMkJoQjtRQUFBLE9BQUEsdUJBcEJMc0YsaUJBaUJZdDBCOztPQUdQLE9BcEJMczBCLHVCQWlCWXQwQjs7TUFFTyxJQUZQMkksVUFyMkJaZ25CLFlBcTJCWTN2QixTQXhCU2d2QixLQXdCVGh2QixVQUFBMkk7O0lBR1E7SUF4QmhCLElBRUovdkMsSUFwNEJBczJELGtCQSszQnFCRjtrQkFLckJwMkQ7Y0FFQTQ3RCxVQXAxQkE3RSxZQSswQmVwa0MsT0FGTXlqQztjQXhtQnZCOEIsdUJBNm1CRWw0RDtHQXdCWTtZQWtCZDY3RCx1QkFBdUJqZ0UsVUFBU2tnRSxZQUFXbnBDLE9BQU15akM7YUFDM0MyRixXQUFXNzhELEdBQUU0N0Q7S0FDbkIsSUFEaUIzN0QsTUFBQUQ7S0FDakI7TUFBUSxJQUFKYyxJQTM3QkZxMkQsVUF5N0IrQ0QsZUFDaENqM0Q7O09BRUQsY0FIaUNpM0Q7O1FBSTlDO1NBQUEsTUFBQSxrQ0FKb0J4NkQsVUFFbkJvRTtTQUVELGFBRkNBLE1BRGU4NkQ7Ozs7Ozs7TUEzM0JqQjlELHVCQTAzQitDWixJQUU3Q3AyRDtVQURhK1QsTUFBQTVVLGFBQUFBLE1BQUE0VTs7SUFNTztTQVBRK25ELFlBU3hCLE9BUkZDLFdBRHFDcHBDO1FBVXRDM3lCLElBVjJCODdEO0lBQzFCQyxXQURxQ3BwQyxPQVV0QzN5QjtJQUVFLGNBWjBDbzJEO2NBWTFDO0lBQ0ksSUFBTCtCLEtBdDhCSjlCLFVBeTdCK0NEO1dBVTVDcDJELE1BR0NtNEQsS0ExNUJKeEIsd0JBNjRCK0NQLE1BdnBCakQ4QixtQkFpcUJLbDRELEdBR0NtNEQ7R0FHd0I7WUFJOUI2RCxnQkFBZ0I1RixJQUloQjc0RDtJLEdBQUFBO1NBSGFILElBR2JHOztRQUFBQSxvQkFBSyxNQUFBLDRCQUFMQTtTQUhhSCxJQUdiRzs7SUFGUSxJQUFKMkIsSUE3NkJGdzNELFdBMjZCY047SUFHTixPQWh0QlZ3QixVQWd0QlUsa0NBRE4xNEQsR0FEUzlCOztZQWViNitELGlCQUFpQnZwQztJQUFVLEtBQVZBLFNBQ1Q7UUFDSEMsUUFGWUQ7SUFFSCxPQUFUQztHQUFjO1lBR25CdXBDLDBCQUEwQkM7SUFDNUIsU0FENEJBLFFBQ0s7SUFDckI7S0FBTnJoRSxNQUFNLG1DQUZnQnFoRTtLQUd0QnJCLE1BQU0sZ0JBRE5oZ0U7S0FFQSszQztPQUFVOzRCQUZWLzNDLFFBRUosc0JBRklBO0lBR0osV0FGSWdnRSxLQUNBam9CO0dBQ1E7WUFVUnVwQiwrQkE0RUp2eUMsR0F6RUVnSjtJQUFPLElBQVA4RCxRQUFBOUQ7SUFBTztlQUFQOEQsb0JBcUNrQyxPQUFBLFdBb0NwQzlNO1lBekVFOE07O1lBQUF2K0IsT0FBQXUrQixVQUFBQSxRQUFBditCOztZQUFBQyxTQUFBcytCLFVBQUFBLFFBQUF0K0I7O1lBQUFDLFNBQUFxK0IsVUFBQUEsUUFBQXIrQjs7WUFBQUMsU0FBQW8rQixVQUFBQSxRQUFBcCtCOztZQUFBQyxTQUFBbStCLFVBQUFBLFFBQUFuK0I7O1lBQUFDLFNBQUFrK0IsVUFBQUEsUUFBQWwrQjs7WUFBQUMsU0FBQWkrQixVQUFBQSxRQUFBaitCOztZQUFBQyxTQUFBZytCLFVBQUFBLFFBQUFoK0I7O1lBQUFDLFNBQUErOUIsVUFBQUEsUUFBQS85Qjs7WUFBQUUsU0FBQTY5QixVQUFBQSxRQUFBNzlCOztZQUFBRSxTQUFBMjlCLFVBQUFBLFFBQUEzOUI7O1lBQUFDLFVBQUEwOUIsVUFBQUEsUUFBQTE5Qjs7WUFBQUMsVUFBQXk5QixVQUFBQSxRQUFBejlCOztZQUFBQyxVQUFBdzlCLFVBQUFBLFFBQUF4OUI7O1FBa0NzQztTQURoQkMsVUFqQ3RCdTlCO1NBaUNlMzdCLFFBakNmMjdCO1NBa0NzQyxNQUFBLG1DQUR2QjM3QjtTQUNZLE1BQUE7UUFBNUI7U0FBQSxPQUFBO2tCQU1EcWhFLGlDQWlDQXh5QyxRQXhDd0J6d0I7O1FBQ3ZCLE9BTURpakUsdUNBaUNBeHlDLFFBeEN3Qnp3Qjs7WUFqQ3RCZ0MsVUFBQXU3QixVQUFBQSxRQUFBdjdCOztZQUFBQyxVQUFBczdCLFVBQUFBLFFBQUF0N0I7O1lBQUFDLFVBQUFxN0IsVUFBQUEsUUFBQXI3Qjs7a0JBQUFxN0I7O1NBNEJzQjtVQURvQm43QixVQTNCMUNtN0I7VUEyQmdDUTtVQTNCaEN1SSxRQTRCc0Isd0NBRFV2SSxPQUFVMzdCO1VBM0IxQ203QixRQUFBK0k7O1NBOEJzQjtVQURvQmhrQyxVQTdCMUNpN0I7VUE2QmdDa0o7VUE3QmhDRyxRQThCc0Isd0NBRFVILE9BQVVua0M7VUE3QjFDaTdCLFFBQUFxSjs7O1lBQ0tYLFdBREwxSTtRQUVGLGdCQUFJMmxDO2tCQUNFQyxNQUFNQztVQUFlLE9BQUUsV0FzRTdCM3lDLE9BdkVJeXlDLFFBQ1FFO1NBQThDO1NBQ3hELE9BUEVDLG9CQU1FRixPQUZDbDlCLFVBRzZCOztZQUpsQzFqQyxVQUFBZzdCLFVBQUFBLFFBQUFoN0I7O1lBQUFHLFVBQUE2NkIsVUFBQUEsUUFBQTc2Qjs7WUFBQUUsVUFBQTI2QixVQUFBQSxRQUFBMzZCOztZQXlFSUMsVUF6RUowNkIsVUF5RUF6NkIsTUF6RUF5NkI7a0JBeUVBejZCO2dCQUFBQTs7Z0JBekVBeTZCLFFBeUVJMTZCOztnQkF6RUowNkIsUUF5RUkxNkI7O1lBRU4sZ0JBQUlxZ0U7c0JBQ0VDLE1BQU1DO2NBQWUsT0FBRSxXQUg3QjN5QyxPQUVJeXlDLFFBQ1FFO2FBQThDO2FBQ3hELE9BaEZFQyxvQkErRUVGLE9BSEF0Z0UsU0FJeUI7d0JBN0U3QjA2QixRQXlFSTE2Qjs7O2dCQUFKQzs7Z0JBekVBeTZCLFFBeUVJMTZCOztnQkF6RUowNkIsUUF5RUkxNkI7O2dCQXpFSjA2QixRQXlFSTE2Qjs7Z0JBekVKMDZCLFFBeUVJMTZCOztnQkF6RUowNkIsUUF5RUkxNkI7O2dCQXpFSjA2QixRQXlFSTE2Qjs7Z0JBekVKMDZCLFFBeUVJMTZCOztnQkF6RUowNkIsUUF5RUkxNkI7O2dCQXpFSjA2QixRQXlFSTE2Qjs7Z0JBZ0JtQmYsVUFoQnZCZ0I7WUFnQmlDO2FBQUEsT0FBQTtzQkFqRG5DbWdFLGlDQWlDQXh5QyxHQWdCeUIzdUIsU0FoQm5CZTs7WUFnQjZCLE9BakRuQ29nRSx1Q0FpQ0F4eUMsR0FnQnlCM3VCLFNBaEJuQmU7O2dCQXpFSjA2QixRQXlFSTE2Qjt3QkF6RUowNkIsUUF5RUkxNkI7OztvQkF6RUpFLFVBQUF3NkIsVUFBQUEsUUFBQXg2Qjs7O0dBcUN1QztZQXhDckNzZ0Usb0JBNEVKNXlDLEdBekVFZ0o7SSx1QkFIRXVwQyx5QkE0RUp2eUMsR0F6RUVnSjs7WUF3Q0Z3cEMscUNBR0F4eUMsR0FBRTd1QixPQUFNNjNCO0lBQU8sSUFBYjMzQixVQUFBRjtJQUFhO2VBQWJFO01BcUI2QjtPQUFBLE9BQUEsdUJBbkUzQmtoRSwyQkE4Q0p2eUMsR0FBUWdKOztNQXFCdUIsT0FuRTNCdXBDLGlDQThDSnZ5QyxHQUFRZ0o7O1lBQU4zM0I7O1lBQUFxNkIsVUFBQXI2QixZQUFBQSxVQUFBcTZCOztZQUFBQyxVQUFBdDZCLFlBQUFBLFVBQUFzNkI7O1lBQUFDLFVBQUF2NkIsWUFBQUEsVUFBQXU2Qjs7WUFBQUMsVUFBQXg2QixZQUFBQSxVQUFBdzZCOztZQUFBQyxVQUFBejZCLFlBQUFBLFVBQUF5NkI7O1lBQUFDLFVBQUExNkIsWUFBQUEsVUFBQTA2Qjs7WUFBQUMsVUFBQTM2QixZQUFBQSxVQUFBMjZCOztZQUFBQyxVQUFBNTZCLFlBQUFBLFVBQUE0NkI7O1lBQUFDLFVBQUE3NkIsWUFBQUEsVUFBQTY2Qjs7UUF1QmE7U0FEWTM5QixPQXRCekI4QztTQXNCb0IxQixNQXRCcEIwQjtTQXNCZW5DLE1BdEJmbUM7U0F1QmEsTUFBQSxtQ0FERW5DO1NBQ2JGLEtBQUssd0NBRGFXO1NBdEJwQnk4QixXQXdCMEIsd0NBRHhCcDlCLElBRHVCVDtTQXRCekI4QyxVQUFBKzZCOzs7WUFBQUUsV0FBQWo3QixZQUFBQSxVQUFBaTdCOztZQUFBQyxXQUFBbDdCLFlBQUFBLFVBQUFrN0I7O1lBQUFDLFdBQUFuN0IsWUFBQUEsVUFBQW03Qjs7WUFDUWdKLFdBRFJua0M7UUFFRixnQkFBSW9oRTtrQkFDRUMsTUFBTUM7VUFBZSxPQUFFLFdBSDdCM3lDLE9BRUl5eUMsUUFDUUU7U0FBOEM7U0FDeEQsT0FQRkUsMEJBTU1ILE9BRklsOUIsVUFERnhNLEtBSXNDOztZQUM1QjBNLGFBTGhCcmtDO1FBTUYsZ0JBQUlvaEU7a0JBQ0VDLE1BQU1DO1VBQWUsT0FBRSxXQVA3QjN5QyxPQU1JeXlDLFFBQ1FFO1NBQThDO1NBQ3hELE9BWEZFLDBCQVVNSCxPQUZZaDlCLFlBTFYxTSxLQVFzQzs7O0dBZ0JRO1lBM0J0RDZwQywwQkFHQTd5QyxHQUFFN3VCLE9BQU02M0I7SSx1QkFIUndwQywrQkFHQXh5QyxHQUFFN3VCLE9BQU02M0I7O1lBMkRKOHBDLFdBR0p2RyxJQUFHdmpDLEtBQUkrcEM7SUFBVyxJQUFmam1DLFFBQUE5RDtJQUFlO2VBQWY4RCxvQkF3Skg7WUF4SkdBOztZQUNFditCLE9BREZ1K0I7UUE5aENEcWdDLGNBOGhDRlosSUFsbENFRSxrQkFrbENGRjtRQUdRLElBQUoxbEQsTUE3d0JKNG5ELFdBMHdCQWxDO1FBSUEsV0FESTFsRCxLQU5BaXNELFdBR0p2RyxJQUNLaCtELE1BREV3a0U7O1FBTVA7U0FEVXZrRSxTQUxQcytCO1NBeE9jeVE7U0FZZncwQjtvQkFBVWpwQztZQUNOLElBRUozeUIsSUFoREZpN0QseUJBNkNZdG9DLE9BNE5aeWpDOzBCQXpORXAyRDtzQkF2MEJBKzJELFlBbzBCVXBrQyxPQTROWnlqQztzQkEzekJBOEIsdUJBa21CRWw0RDtXQUE4QjtTQVo5QkEsSUE3MkJBczJELGtCQWtsQ0ZGO2tCQXJPRXAyRDtTQURrQjtVQUdSMnlCLFFBN3pCVm9rQyxZQXd6QmUzdkIsU0F3T2pCZ3ZCO1VBL05FM2xELE1BMUNGd3FELHlCQXNDWXRvQyxPQW1PWnlqQzttQkEvTkUzbEQ7VUFHQW1yRCxVQTFDRlQsb0JBMXhCRXBFLFlBNnpCVXBrQyxPQW1PWnlqQyxLQUFBQTs7VUE1TkV3RixVQWwwQkE1RSxXQTJ6QlVya0MsT0FtT1p5akMsSUEvTkUzbEQ7OztTQTVsQkZ5bkQsdUJBc2xCRWw0RDtRQTRPTSxJQUFKMlEsTUFqeEJKMm5ELFdBMHdCQWxDO1FBUUEsV0FESXpsRCxLQVZBZ3NELFdBR0p2RyxJQUtVLzlELFFBTEh1a0U7O1lBbUJDaGpFLE1BbkJMKzhCLGtCQUFBQTs7OztZQVdZO2FBRDBCcCtCO2FBQVpnRDthQUNkLFVBdElmMmdFLDBCQXFJNkIzZ0U7YUFDcEJUO2FBQUxnZ0U7YUFDQStCO3dCQUFLbHFDLGNBQVF5akM7Z0JBQUssT0F2V3RCeUUsZ0JBc1dJQyxNQUNLbm9DLE9BQVF5akM7ZUFBb0M7YUFDakQwRyxnQkFGS2hpRSxLQURnQ3ZDO1lBSXpDLE9BK0lBd2tFO3FCQTdKQTNHLElBYUkwRyxVQWJHRixTQW1CQ2hqRSxRQVBKaWpFLFFBcHhCSmpHOzs7O2FBd3hCQTtjQUQwRHArRDtjQUFYMitCO2NBQzNDNmxDO3lCQUFLcnFDLGNBQVF5akM7aUJBQUssT0EzV3RCeUUsaUJBMldTbG9DLE9BQVF5akM7Z0JBQW9DO2FBQ3JELE9BNElBMkc7c0JBN0pBM0c7c0JBaUJrQix3Q0FGNkJqL0IsT0FBVzMrQjtzQkFmbkRva0U7c0JBbUJDaGpFOztzQkFISm9qRTtzQkF4eEJKcEc7O1lBNHhCQTthQUQwRG4rRDthQUFYaW5DO2FBQzNDdTlCO3dCQUFLdHFDLGNBQVF5akMsSUFBSyxPQS9XdEJ5RSxpQkErV1Nsb0MsT0FBUXlqQyxJQUFvQztZQUNyRCxPQXdJQTJHO3FCQTdKQTNHO3FCQXFCa0Isd0NBRjZCMTJCLE9BQVdqbkM7cUJBbkJuRG1rRTtxQkFtQkNoakU7O3FCQUNKcWpFO3FCQTV4QkpyRzs7UUFneUJBO1NBRGF0K0QsU0F2QlZxK0I7U0F3QkN1bUMsZ0JBQUt2cUMsY0FBUXlqQyxJQUFLLE9Bblh0QnlFLGVBbVhTbG9DLE9BQVF5akMsSUFBOEI7UUFDL0MsT0FvSUEyRyxlQTdKQTNHLElBdUJhOTlELFFBdkJOc2tFLFNBbUJDaGpFLFFBS0pzakUsTUFoeUJKdEc7O1FBb3lCQTtTQURrQmwrRCxTQTNCZmkrQjtTQTJCVTk4QixRQTNCVjg4QjtTQTRCQ3dtQztvQkFBS3hxQyxjQUFReWpDLElBQUssT0EvT3RCcUYsaUJBK09TOW9DLE9BQVF5akMsSUFBOEI7UUFDL0MsT0FnSUEyRztpQkE3SkEzRyxJQTJCa0IxOUQsUUEzQlhra0UsU0EyQk0vaUUsVUFDVHNqRSxRQXB5Qkp2Rzs7UUF1eUJRO1NBRGVqK0QsU0E5QnBCZytCO1NBOEJjNzhCLE9BOUJkNjhCO1NBOEJTNThCLFFBOUJUNDhCO1NBOEJFMzhCLFFBOUJGMjhCO1NBenRCTytoQztXQTVCVkY7YUFveEJtQyxtQ0FEOUJ4K0Q7U0FFRG9qRTtvQkFBS3pxQyxjQUFReWpDO1lBQUssT0FobUJ0QnNELG9CQXpKVWhCLE1BeXZCRC9sQyxPQUFReWpDO1dBQW1DO1FBQ1AsT0E0SDdDMkc7aUJBN0pBM0c7aUJBOEJ1Qno5RDtpQkE5QmhCaWtFO2lCQThCSzdpRTtpQkFBS0Q7aUJBRWJzakU7MEJBenZCV2hIO2tCQUFLLE9BQUEsbUJBZnBCcUMsa0JBZVVDLE1BQUt0Qzs7O1FBNHZCUDtTQURpQng5RCxTQWxDdEIrOUI7U0FrQ2dCMThCLFNBbENoQjA4QjtTQWtDV3o4QixRQWxDWHk4QjtTQWtDSXg4QixVQWxDSnc4QjtTQXBzQlMwbUM7V0FqRFo3RTthQXd4Qm1DLG1DQUQ1QnIrRDtTQUVIbWpFO29CQUFLM3FDLGNBQVF5akM7WUFBSyxPQXBtQnRCc0Qsb0JBcElZMkQsUUF3dUJIMXFDLE9BQVF5akM7V0FBbUM7UUFDUCxPQXdIN0MyRztpQkE3SkEzRztpQkFrQ3lCeDlEO2lCQWxDbEJna0U7aUJBa0NPMWlFO2lCQUFLRDtpQkFFZnFqRTswQkF4dUJhbEg7a0JBQUssT0FBQSxtQkFwQ3RCcUMsa0JBb0NZNEUsUUFBS2pIOzs7UUEydUJUO1NBRHFCdDlELFNBdEMxQjY5QjtTQXNDb0J2OEIsU0F0Q3BCdThCO1NBc0NldDhCLFFBdENmczhCO1NBc0NRcjhCLFVBdENScThCO1NBcnNCYTRtQztXQWhEaEIvRTthQTR4Qm1DLG1DQUR4QmwrRDtTQUVQa2pFO29CQUFLN3FDLGNBQVF5akM7WUFBSyxPQXhtQnRCc0Qsb0JBcklnQjZELFFBNnVCUDVxQyxPQUFReWpDO1dBQW1DO1FBQ1AsT0FvSDdDMkc7aUJBN0pBM0c7aUJBc0M2QnQ5RDtpQkF0Q3RCOGpFO2lCQXNDV3ZpRTtpQkFBS0Q7aUJBRW5Cb2pFOzBCQTd1QmlCcEg7a0JBQUssT0FBQSxtQkFuQzFCcUMsa0JBbUNnQjhFLFFBQUtuSDs7O1FBZ3ZCYjtTQURpQnA5RCxTQTFDdEIyOUI7U0EwQ2dCcDhCLFNBMUNoQm84QjtTQTBDV244QixRQTFDWG04QjtTQTBDSWw4QixVQTFDSms4QjtTQW5zQlM4bUM7V0FsRFpqRjthQWd5Qm1DLG1DQUQ1Qi85RDtTQUVIaWpFO29CQUFLL3FDLGNBQVF5akM7WUFBSyxPQTVtQnRCc0Qsb0JBbklZK0QsUUErdUJIOXFDLE9BQVF5akM7V0FBbUM7UUFDUCxPQWdIN0MyRztpQkE3SkEzRztpQkEwQ3lCcDlEO2lCQTFDbEI0akU7aUJBMENPcGlFO2lCQUFLRDtpQkFFZm1qRTswQkEvdUJhdEg7a0JBQUssT0FBQTsyQkFyQ3RCcUMsa0JBcUNZZ0YsUUFBS3JIOzs7ZUFtc0Jkei9COzs7ZUE4QzBDejlCLFVBOUMxQ3k5QixVQThDb0MySixTQTlDcEMzSixVQThDK0I5N0IsUUE5Qy9CODdCO1dBK0NILE9BOEdBb21DO29CQTdKQTNHO29CQThDNkNsOUQ7b0JBOUN0QzBqRTtvQkE4QzJCL2hFO29CQUFLeWxDO29CQS9idkNzNkI7b0JBdFVBakM7OztlQTB3QjRDeC9ELFVBbkR6Q3c5QixVQW1EbUM4SixTQW5EbkM5SixVQW1EOEIxN0IsUUFuRDlCMDdCO1dBb0RILE9BeUdBb21DO29CQTdKQTNHO29CQW1ENENqOUQ7b0JBbkRyQ3lqRTtvQkFtRDBCM2hFO29CQUFLd2xDO29CQXpnQnRDdzVCO29CQWpRQXRCOztlQXd3QmtCMS9ELFVBakRmMDlCLFVBaURTajhCLFNBakRUaThCLFVBaURJaDhCLFFBakRKZzhCO1dBa0RILE9BMkdBb21DO29CQTdKQTNHO29CQWlEa0JuOUQ7b0JBakRYMmpFO29CQWlEQWppRTtvQkFBS0Q7b0JBdmlCWm0vRDtvQkFqT0FsQjs7O1FBNndCQTtTQURXdi9ELFVBckRSdTlCO1NBcURHeDdCLFFBckRIdzdCO1NBc0RDZ25DO2dDQUFTdkg7WUFBSzthQXZPaEJwMkQsSUFqNkJBczJELGtCQXdvQ1dGO2FBdE9YMTNDO3VCQURBMWU7OztzQkFBQUE7O29CQTVxQkY0M0QsVUFtckJJLGtDQVBGNTNEO1lBUUosT0FsTEU2NkQsZUEyS0VuOEMsR0FzT1cwM0M7V0FBaUI7UUFDOUIsT0FzR0EyRztpQkE3SkEzRyxJQXFEV2g5RCxTQXJESndqRSxTQXFERHpoRSxVQUNGd2lFLFFBNXpCSnBGOztZQXN3QkduOUQsVUFBQXU3QjtRQXVFQSxLQW5wQ0Q0L0IsYUE0a0NGSCxLQXdFSyxPQXI2Qkx3QjtZQTYxQkdqaEMsUUFBQXY3Qjs7O1FBMkVTO1NBM0VUQyxVQUFBczdCO1NBMEVheEIsUUExRWJ3QjtTQTJFUyxvQixPQTEyQlJ5aEMsV0EreEJKaEM7UUEyRUEsbUNBRGdCamhDO1lBMUVid0IsUUFBQXQ3Qjs7O1lBQUFDLFVBQUFxN0IsVUE2RVc1N0IsTUE3RVg0N0I7UUEveEJDeWhDLFdBK3hCSmhDLElBNkVjcjdEO1lBN0VYNDdCLFFBQUFyN0I7OztZQWlGeUJFLFVBakZ6Qm03QixVQWlGa0IzN0IsUUFqRmxCMjdCLFVBaUZTakUsVUFqRlRpRTtRQW5OSDhrQyxpQkFtRkFRLGlCQWlOWXZwQyxVQWpGWjBqQztRQW1GUSxJQUFKaDVELElBMzFCSnc1RCxhQXd3QkFSO1FBb0ZBO1NBQ00sSUFBQSxNQUFBLG1DQUZGaDVELEdBRmlCcEMsUUFHakI2a0M7Ozs7O2FBRVd6bUIsY0FGWHltQixRQWo3QkorM0IsVUFtN0JleCtDOztRQUVmLFdBSkl5bUIsT0F2RkE4OEIsV0FHSnZHLElBaUY0QjU2RCxTQWpGckJvaEU7O1lBeUZ1QmxoRSxVQXpGM0JpN0IsVUF5Rm9CejdCLFVBekZwQnk3QixVQXlGVzdELFlBekZYNkQ7UUFuTkg4a0MsaUJBbUZBUSxpQkF5TmNucEMsWUF6RmRzakM7UUEyRlEsSUFBSm5zRCxNQW4yQkoyc0QsYUF3d0JBUjs7U0E2R2dDO1VBZmhCNzFCLFFBQU0sc0NBSGxCdDJCO1VBSVk2MkIsUUFBTyxzQ0FKbkI3MkI7VUFrQjRCLE1BQUEsbUNBcEJUL087VUFvQkYsTUFBQTtVQUFqQixRQUFBLG1DQWRZNGxDO1VBYUksTUFBQSx3Q0FuQkc1bEM7VUFtQm5CLE1BQUEsbUNBZFlxbEM7VUFGUEo7VUFBTEg7Ozs7Ozs7VUFrQlc0WDtnQkEzOEJmZ2dCLFVBMjhCZWhnQjtVQWxCTnpYO1VBQUxIOztRQW9CSjtvQkFwQklBLE9BREEvMUI7Z0JBOUZBMHlEO2tCQUdKdkc7a0JBaUhvQix3Q0FyQlhqMkIsT0FIcUJ6a0M7a0JBekZ2QmtoRTs7UUF5RFAsT0FBQTs7UUFFQSxPQUFBOztRQTRFNEI7U0F2SXpCamhFLFVBQUFnN0I7U0FzSWEzRSxpQkF0SWIyRTtTQXVJeUIsTUFBQSxtQ0FEWjNFO1NBQ0osb0IsT0F0NkJSb21DLFdBK3hCSmhDO1FBdUlBO1lBdklHei9CLFFBQUFoN0I7OztrQkFBQWc3Qjs7YUF5STBDNzZCLFVBekkxQzY2QixVQXlJK0IrSztTQXg2QjlCMDJCLFdBK3hCSmhDO1NBL3hCSWdDLFdBK3hCSmhDO1NBMkljO1VBM0lYeDBCLFNBMklXLHdDQUZvQkYsT0FBVzVsQztVQXpJMUM2NkIsUUFBQWlMOzs7YUE0STBDNWxDLFVBNUkxQzI2QixVQTRJK0JtTDtTQTM2QjlCczJCLFdBK3hCSmhDO1NBL3hCSWdDLFdBK3hCSmhDO1NBOEljO1VBOUlYcDBCLFNBOElXLHdDQUZvQkYsUUFBVzlsQztVQTVJMUMyNkIsUUFBQXFMOzs7O1lBOERJM0MsV0E5REoxSTtRQStESCxLQS9ET2ltQyxTQW9FSCxPQUFBO1FBSFE7U0FESUosZUFoRVRJO1NBZ0VDTixTQWhFRE07U0FpRUNyL0QsSUFBSSxXQURKKytELFFBaEVSbEc7UUFrRUksV0FESTc0RCxHQXBFSm8vRCxXQUdKdkcsSUE4RE8vMkIsVUFFU205Qjs7WUFtREQzZ0UsWUFuSFo4NkIsb0JBQUFBOztTQW9IWTtVQURpRHg2QjtVQUFaeWhFO1VBQTFCcnJDLGFBbkh2Qm9FO1VBb0hZLFVBL09mdWxDLDBCQThPb0QwQjtVQUMzQy9tQztVQUFMZ25DO1VBQ0E5VSxVQXJQSmtULGlCQW1QZXBnRTtTQXZSZmdnRSx1QkF1UjBCdHBDLGdCQUN0QnNyQyxRQUNBOVUsU0FySEpxTjtTQXVIUSxJQUFKMEgsTUEvM0JKbEgsYUF3d0JBUixLQXdISTJILGtCQUpLbG5DLE9BRHVEMTZCO1NBTWhFLFdBRkkyaEUsS0ExSEFuQixXQUdKdkcsSUF3SEkySCxZQXhIR25COztRQTJISztTQUR3QjNnRSxVQTFIakMwNkI7U0EwSHVCLzZCLFdBMUh2Qis2QjtTQTJIQ29aLFVBM1BKa3NCLGlCQW1QZXBnRTtRQXZSZmdnRSx1QkE4UjBCamdFLGFBQ3RCbTBDLFNBM0hKcW1CO1FBNkhRLElBQUo3b0IsTUFyNEJKcXBCLGFBd3dCQVI7UUE4SEEsV0FESTdvQixLQWhJQW92QixXQUdKdkcsSUEwSG9DbjZELFNBMUg3QjJnRTs7WUErSG9CanpCLFVBL0h4QmhULFVBeElZNTZCLFVBd0laNDZCO2VBeElZNTZCOztlQXdRWDZ3QixRQWhJSndwQzs7ZUFnSUl4cEMsUUEzckNGOHBDLFdBMmpDRk47dUJBZ0lJeHBDLFFBaElKd3BDOztRQWlJQSxXQURJeHBDLE9BbklBK3ZDLFdBR0p2RyxJQStIMkJ6c0IsU0EvSHBCaXpCOztRQW1JQyxJQURPaHpCLFVBbElaalQsVUFtSUMvbEIsTUFydENGMGxELGtCQWtsQ0ZGO1FBb0lBLFdBREl4bEQsS0F0SUErckQsV0FHSnZHLElBa0lleHNCLFNBbElSZ3pCOztRQWtKSztTQUZRL3lCLFVBaEpqQmxUO1NBZ0pZejZCLE1BaEpaeTZCO1NBaUprQndMLFNBQU8sa0NBRGJqbUMsS0FBSzJ0QztTQUVSLFVBckpSOHlCLFdBR0p2RyxJQWlKcUJqMEIsUUFqSmR5NkI7O1NBb0pFLE1BQUE7WUFERW9CO1FBQWEsT0FBYkE7Z0JBdEZYLE9BQUE7OztHQTJGRztZQUtIakIsZUFNQTNHLElBQUd2akMsS0FBSStwQyxTQUFRaGpFLEtBQUlFLE1BQUtvakUsTUFBS2pXO0lBQVMsVUFBdkJydEQ7ZUFBSUU7VUFLT3VULElBTFB2VDtNQU1YLFdBTmdCb2pFLGtCQUtFN3ZELEdBTDFCK29EO01BT1EsSUFBSnRuRCxNQUFJLFdBUHFCbTRDLE9BQTdCbVA7TUFRQSxXQURJdG5ELEtBN0tBNnRELFdBc0tKdkcsSUFBR3ZqQyxLQUFJK3BDOztRQUFZOWlFLE1Bd0JuQixPQUFBO0tBdEJRLFdBRmdCb2pFLDhCQUF4QjlHO0tBR1EsSUFBSjc0RCxJQUFJLFdBSHFCMHBELE9BQTdCbVA7S0FJQSxXQURJNzRELEdBektBby9ELFdBc0tKdkcsSUFBR3ZqQyxLQUFJK3BDOzthQUFRaGpFLFFBc0JmLE9BQUE7U0F0QmVBLFFBa0JmLE9BQUE7UUFMOEJtbEMsSUFiZm5sQztjQUFJRTtTQWE2QjZ1QyxNQWI3Qjd1QztLQWNYLFdBZGdCb2pFLE1BYU1uK0IsR0FBa0I0SixLQWJoRHl0QjtLQWVRLElBQUpyZixNQUFJLFdBZnFCa1EsT0FBN0JtUDtLQWdCQSxXQURJcmYsS0FyTEE0bEIsV0FzS0p2RyxJQUFHdmpDLEtBQUkrcEM7O09BQVk5aUUsTUFvQm5CLE9BQUE7SUFWUSxXQVZnQm9qRSxNQWFNbitCLGVBYjlCcTNCO0lBV1EsSUFBSnhmLE1BQUksV0FYcUJxUSxPQUE3Qm1QO0lBWUEsV0FESXhmLEtBakxBK2xCLFdBc0tKdkcsSUFBR3ZqQyxLQUFJK3BDO0dBd0JtQztZQU8xQ3FCLE9BQU83SCxJQUFHOEg7UUFBaUJwakUsZ0JBQUwrM0I7YUFNcEJoSixFQUFFK3lDLFNBQVF4bUI7S0FDWiw2QkFQT2dnQjtLQU9QLElBQ1UsSUFBQSxVQTdNTnVHLFdBcU1HdkcsSUFBZXZqQyxLQU1sQitwQztXQUdBdUI7VUFBQUMsMEJBQUFEOzs7O1NBQUFDLDJCQUFBQSx3QkFBQUE7V0FBQUEsd0RBQUFBO1FBRXFDO1NBRHBCaGxELE1BRGpCZ2xEO1NBRXFDLE1BQUEsOEJBWGR0akU7U0FXYyxNQUFBO1NBQWxCLE1BQUE7U0FBUCxNQUFBLHVCQURLc2U7ZUFDakI7OztxQkFGQWdsRDs7Ozs7VUFLSUQ7TUFBTyxPQUFBLFdBZExELElBQUg5SCxJQWNDK0g7O1NBWkZFLG1CQUFGamlFLElBSVFnNkMsS0FKTm9ELE9BQUE2a0I7S0FBUTtXQUFSN2tCLE1BRUcsT0FGTHA5QztNQUNtQjtPQURqQmtpRSxTQUFBOWtCO09BQ0VqOEMsSUFERmk4QztPQUFGckQsTUFDbUIsV0FEbkIvNUMsR0FDSW1CO09BREpuQixJQUFBKzVDO09BQUVxRCxPQUFBOGtCOztJQVlrQjtJQUUxQixPQTlUTTdCLG9CQW9URjV5QyxHQU5vQmdKOztZQXFCdEIwckMsT0FBT25JLElBQUd2akMsS0FBTSxPQXJCaEJvckMsT0FxQk83SCxJQXZXUDRGLGlCQXVXVW5wQyxLQUFvQztZQUU5QzJyQyxRQUFRcGhFLEdBQUU4Z0UsSUFBR3JyQyxLQUFNLE9BdkJuQm9yQyxPQTVzQ0UvbUQsWUFtdUNNOVosSUFBRThnRSxJQUFHcnJDLEtBQTZDO1lBQzFENHJDLE9BQU9yaEUsR0FBRXkxQjtJQUFNLE9BeEJmb3JDLE9BNXNDRS9tRCxZQW91Q0s5WixJQTFXUDQrRCxpQkEwV1NucEM7R0FBMEQ7WUFFbkU2ckMsTUFBTTdyQyxLQUFNLE9BMUJab3JDLE9Bem1DRXgrRCxPQXV4QkZ1OEQsaUJBNFdNbnBDLEtBQStDO1lBS3JEOHJDLGNBR0V2SSxJQUFHd0ksUUFBT3hpRTtJQXZiWnEvRCw2QkF1YkVyRjtJQUVRLElBQU50N0QsTUE5K0JKODdELGFBNCtCRVI7SUFHRixJQUNNLElBQUEsTUFBQSxtQ0FGRnQ3RCxLQUZDOGpFLFNBR0QvckM7Ozs7U0FFV3paLGNBRlh5WixNQXBrQ0ora0MsVUFza0NleCtDOztJQUNmLE9BQUEsV0FOWWhkLEdBR1J5MkI7R0FHRTtZQUdOZ3NDLGNBR0V6aEUsR0FBRXdoRSxRQUFPeGlFO0lBQUssT0FmaEJ1aUUsY0EzdUNFem5ELFlBMHZDQTlaLElBQUV3aEUsUUFBT3hpRTtHQUFvRDtZQUcvRDBpRSxtQkFBbUIxaEUsR0FBRXkxQjtJQUN2QixhQUF3RHQxQixHQUFLLE9BQUxBLEVBQU07SUFBeEM7S0FBQSxNQUFBLDhCQURESDtLQUNDLE1BQUE7SUFBNkIsT0FQakR5aEUsY0FPWSxvQ0FEU2hzQztHQUN3QztZQUc3RGtzQyxVQUFVM2hFO0lBQ1osYUFBcUNHLEdBQUssT0FBTEEsRUFBTTtJQUE1QixVQUFBLHVCQURISDtJQUNvQixPQUFBLFdBOUI5QnFoRSxPQThCSztHQUFxQztZQUkxQ08sUUFBUTU5RCxJQUFHODhELElBQUdyckM7SUFBTSxPQTFEcEJvckMsT0E3aUNFdEcsa0JBdW1DTXYyRCxLQUFHODhELElBQUdyckM7R0FBb0Q7WUFDbEVvc0MsT0FBTzc5RCxJQUFHeXhCO0lBQU0sT0EzRGhCb3JDLE9BN2lDRXRHLGtCQXdtQ0t2MkQsS0E3WVA0NkQsaUJBNllVbnBDO0dBQWdFOzs7OztRQXBxQ3hFcHpCO1FBZUF3QjtRQUNBQztRQVNBb0U7UUFWQXJFO1FBQ0FDO1FBbkhBZ1c7UUFXQW1JO1FBNkdBVTtRQTFMQXcyQztRQU9BQztRQUVBQztRQTRKQWgzRDs7T0E4bkNGOCtEO09BR0FFO09BRUFDO09BMUJBVDtPQXVCQU87T0FRQUc7T0FZQUU7T0FNQUM7T0FJQUM7T0FNQUU7T0FEQUQ7OztFOzs7Ozs7Ozs7Ozs7SUNoZ0RBRTtZQUdBQyxtQkFBbUJwL0QsTUFDakI0aUI7SUFBSjs7S0FDSS9KLE9BQVUscUJBRFYrSixlQUFBQSxNQUFBQTtJQUVKLE9BQUEsMEJBSHFCNWlCLE1BRWpCNlk7R0FDMEI7NkJBTjVCc21ELFVBR0FDOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNBQXZ0RCxLQUFLM0ssR0FDVSxJQUFibTRELE1BREduNEQsV0FFUCxPQUFBLGVBREltNEQsS0FDSTtHQVlHLElBQVR6ZCw4QkFVQTBkLHlCQU9BQztZQWVBQyxvQkFBb0JuaUU7SUFDdEI7S0FBSTRFOzBDQURrQjVFO0tBQ1g7O1NBQ1g4Qjs7TUFDa0MsV0FBQSx3QkFIWjlCLEdBRXRCOEI7TUFESThDLGlCQUFBQTtNQUNKLFdBQUE5QztrQkFBQUE7VUFBQUE7OztJQURJOEMsVUFBQUE7UUFPQXc5RCxtQkFQQXg5RCxVQUFBQSwyQkFBQUE7SUFTSixPQUZJdzlEO0dBRUs7R0E2QlQ7SUF4Qm9DMTNEO3lDQUFBQTtJQUlBMjNEOzBDQUFBQTtJQUdEQzt5Q0FBQUE7SUFnQmpDQyx5QkFyREFMO0lBK0RBTTtJQUdBQyxZQUF1QjtZQUluQkMsU0FBUzlpRTtJQUNmLFdBRGVBLElBQVQ4aUUsVUFBUzlpRSw4QkFBQUE7R0FFTztZQUVwQitpRSxVQUFVQztJQVhWSjtJQWNZO0tBRFZsL0QsTUFGUXMvRDtLQUdSQyxVQUFVLGdCQURWdi9ELHNCQVZGbS9EO0lBWUYsaUJBRElJLGlCQURBdi9EOzs7YUFHa0IsaUJBVGhCby9ELFNBTUZwL0Q7SUFHSixpQkFGSXUvRDtJQUVKLFdBSEl2L0QsYUFHSjs7U0FDQXhCOztNQUFpRDtlQUFqREE7T0FBaUQsd0JBTnJDOGdFLFlBTVo5Z0UsT0FBQUE7TUFBd0IsaUJBSHBCK2dFO01BR29CLFdBQXhCL2dFO2tCQUFBQTtVQUFBQTs7O0lBQ0E7WUF4RkVtZ0U7WUFvRkVZOzs7Ozs7O0dBVzBCO1lBRTVCMXhDLE9BQU8yeEMsT0FBTUM7SUFDZixJQUFJQyxXQURLRiw0QkFDTEUsV0FEV0Q7O0tBR0UsSUFBWEUsV0FBVyxlQUhGRixVQXhCYk47S0E0QkEsNkJBSk9LLGFBR0hHLGFBRkZEO0tBREtGLFdBR0hHOzs7Ozs7R0FHSjtHQVFlLElBQWZDLHVCQUNBQztZQUtBQyxXQUFXQztJQUNiLElBQUl6c0QsUUFEU3lzRDtJQXBCWGx5QyxPQW9CV2t5QyxPQUNUenNEO0lBQ0osT0FESUE7R0FFQztZQUVIMHNELGlCQUFpQkQsT0FBTTFnRTtJQUN6QixJQUNFLFdBQUEsc0JBRnVCQSxNQUFOMGdFLFdBRWpCOzs7O0tBRVksSUFBUkUsUUFUSkgsV0FLaUJDO0tBQUFBLFdBS1EscUJBTEYxZ0UsTUFJbkI0Z0UsT0FKYUY7S0FBQUEsV0FNUyxvQkFGdEJFLFVBSmFGO0tBT2pCLE9BSElFOztHQUdDO1lBRUxDLGtCQUFrQkgsT0FBTUk7SUFDaEIsb0IsT0FWUkgsaUJBU2tCRDtJQUNwQixPQUFBLG1DQUQwQkk7R0FDYztZQUV0Q0MsV0FBV0wsT0FBTUUsT0FBTUk7SUF2QnZCVDtJQXlCQyxPQUFBLHFCQUZnQkssT0FBTkY7ZUFyQ1hseUM7Z0JBcUNXa3lDLE9BQU1FOytCQUFORixVQUFNRSxXQUFBQSxTQUFNSTs7ZUFBWk4sbUJBQU1FLE9BQU1JLFVBQVpOO0dBS2lEO1lBRTVETyxXQUFXUCxPQUFNRTtJQUNuQixJQUFJLFdBQUEsNEJBRGVBLE9BQU5GLFdBQ1Q7Ozs7TUFDYyx3QkFGTEEsVUFBTUUsV0FBQUE7OztHQUVvQjtZQUVyQzE0RCxRQUFRZzVEO0lBQ1YsYUFEVUEsVUFDcUIsNkJBRHJCQTtHQUNzQztZQUU5Q0MsT0FBT1QsT0FBTVUsTUFBS0MsWUFBV0M7SUFDL0I7S0FBSUMsU0FKRnI1RCxRQUdhazVEO0tBRVhJLGVBTEZ0NUQsUUFHa0JtNUQ7S0FHaEJJLGdCQU5GdjVELFFBRzZCbzVEO0lBSUQsbUIsT0E5QjVCWCxpQkEwQk9EO0lBSVksSUFBakJnQixpQkFBaUIsaUNBRmpCRjtJQUcyQixtQixPQS9CN0JiLGlCQTBCT0Q7SUFLYSxJQUFsQmlCLGtCQUFrQixpQ0FGbEJGO0lBSEtmOztVQUFBQSxVQUFBQSxVQUFBQSxVQUFBQSxVQUlMZ0IsZ0JBSEFIO01BREtiOzZCQUFBQTtpQkFZQWtCLEtBQUlscEQsTUFBS21wRDtLQUNaLE9BQUcsNEJBREFELEtBWExMO2VBWTRCLG9CQUR2QkssS0FBSWxwRCxNQUFLbXBEO2VBQUFBO0lBQ2dEO0lBYnpEbkIsV0FXUDtJQUlZLElBQVZvQix5QkFDQUM7a0JBRUdDLEtBQUlwQjtLQUhQa0IsYUFJWSxxQkFEVEUsS0FBSXBCLE9BSFBrQjtnQkFDQUM7U0FNVyxJQUFBLE9BQUEscUJBSkpuQixPQWxCRkY7Ozs7OztLQWdCTHFCLGNBS0ksb0JBSEduQjs7SUFLUTtJQU5uQixrQ0FkSWEsZUFFQUU7a0JBcUJHSyxLQUFJcEI7S0FYUGtCLGFBWVkscUJBRFRFLEtBQUlwQixPQVhQa0I7S0FDQUMsY0FZYSxvQkFGTm5CLFVBVlBtQjs7SUFZMkM7SUFIL0Msa0NBdkJJUCxjQUVBRTtJQUpLaEIsV0FlTG9CO0lBZktwQixXQWdCTHFCO0lBZ0JKLElBQUEsaUJBaENTckI7a0JBa0NDc0IsS0FBa0JDO0tBQXZCLElBQU9MLE1BQUZJO0tBQ0MsT0FBQSw0QkFEQ0osS0E5QlJGO2VBOEJ3Qk87bUJBQWxCRCxLQUFrQkM7SUFDZ0M7SUFuQ25EdkIsV0FpQ047O0dBSUk7WUFFTHdCLE1BQU14QjtJQUNSO0tBQ0UsUUFBQSwyQkFGTUE7S0FDNERVO0tBQVpDO0tBQVpjO0tBQXBCQztLQUFWTDtLQUFURDtJQURHcEIsV0FJaUIsMkJBSmpCQTtpQkFPRXJqRSxHQUFFYjtLQUFnQixVQUFBLHFCQUFoQkEsR0FQSmtrRTtLQU9TLE9BQUEsb0JBQUxsa0UsUUFBRmE7SUFBNEM7SUFQOUNxakUsV0FNTCxpQ0FMeUN5QixZQUF3QmY7SUFENURWLFdBQ0hvQjtJQURHcEIsV0FDTXFCO2NBRE5yQjtpQkFhRXNCLEtBQWtCQztLQUF2QixJQUFPTCxNQUFGSTtLQUNDLE9BQUEsNEJBRENKLEtBWjRDUCxjQVk1QlksU0FBbEJELEtBQWtCQztJQUM0QjtJQWRoRHZCLFdBWUwsc0NBWHFCMEI7O0dBZUQ7WUFPckJDLGFBQWEzQixPQUFNMWdFO0lBQ3JCLElBQUksVUFBQSxxQkFEaUJBLE1BQU4wZ0UsV0FDWDs7OztTQUVFenNELFFBSFN5c0Q7S0FBQUEsV0FHVHpzRDtLQUNELEdBQUEsNkJBSmdCalU7TUFBTjBnRSxXQUlvQixvQkFKZDFnRSxNQUdmaVUsT0FIU3lzRDtLQUtiLE9BRkl6c0Q7O0dBRUM7WUFFTHF1RCxTQUFTcEIsS0FDWCxPQUFHLG1CQURRQSxnQkFBQUEsSUFDNEI7WUFFckNxQixzQkFBc0I3QixPQUFNOEIsT0FBTUM7SUFDcEM7S0FBSUMsVUFKRkosU0FHNEJFO0tBRTFCRyxTQURBRDtLQUNnQ0UsUUFGQUg7S0FHaENyZ0UsTUFBTSxlQUROdWdFLFNBQWdDQztLQUVwQyxNQUZJRDtLQUNNOztTQUNWdmpFOztNQUNhO2FBdkdYdWhFLGlCQWtHc0JELHdCQUNwQmdDLFNBR0p0akUsU0FBQUE7TUFDRSxpQkFGRWdELEtBQ0poRCxTQUFBQTtNQUNFLFVBREZBO2lCQUFBQTtVQUFBQTs7O0lBR0EsVUFMb0N3akUsZUFLcEM7O1NBQUF6akU7O01BQ29CO2FBRHBCQSxJQUxJd2pFO09BTWdCLE1BbEJsQk4sYUFVc0IzQix3QkFBWStCLE1BT3BDdGpFLE9BQUFBO01BQ0UsaUJBTEVpRDtNQUtGLFVBREZqRDtpQkFBQUE7VUFBQUE7OztJQUdBLE9BUElpRDtHQU9EO1lBRUR5Z0UsYUFBYW5DLE9BQU0xZ0U7SUFDckIsSUFBSSxVQUFBLHFCQURpQkEsTUFBTjBnRSxXQUNYOzs7O01BQTRDLE1BQUE7OztHQUFZO1lBRTFEb0MsY0FBY3BDLE9BQU1JO0lBQ1osa0IsT0FKUitCLGFBR2NuQztJQUNoQixPQUFBLGtDQURzQkk7R0FDYztZQUVsQ2lDLGdCQUFnQnJDLE9BQU1ya0UsR0FBTnFrRSxlQUFNcmtFLEdBQU5xa0Usb0JBQ3lCO1lBYXpDc0MsYUFBYUM7SUFDZixTQURlQSxnQkFDNkIsT0E1SzFDakQ7SUE4S1M7S0FBUGtELE9BQU8sNkJBek9UMUQscUJBc09heUQ7S0FJWHZDLFFBL0tGVixVQThLRWtEO2lCQUdHL2pFLEdBQUU2aUU7S0FDTCxJQUFJSixPQUREemlFO0tBRkh1aEUsV0FJMEIscUJBRnJCc0IsS0FDREosS0FISmxCO0tBQUFBLFdBSzBCLG9CQUZ0QmtCLFFBSEpsQjs7SUFLa0U7SUFKdEUsa0NBTGV1QztJQUtmLE9BREl2QztHQU9DO1lBRUh5QyxXQUFXekM7SUF6SlhGLHFCQUFBQSxvQkF5SldFO0lBQUFBLFdBRVMsMkJBRlRBO0lBR2I7V0EzS0VseUM7YUF3S1dreUM7MkNBQUFBO0dBR2tEO1lBRTdEMEMsU0FBU0MsS0FBSVosTUFBS3BCLFlBQVdDLG9CQUErQnIyQztRQUFML0osZ0JBQVZvaUQ7SUExSDdDbkMsT0EwSFNrQyxLQUFJWixNQUFLcEIsWUFBV0M7UUFFM0IvMEQsT0FGMEQwZSxNQUdoRCxXQUhpQ3E0QyxTQUFwQ0QsS0FBOENuaUQsT0FHZixXQUhLb2lELFNBQXBDRDtJQW5GVG5CLE1BbUZTbUI7SUFJWCxJQUFBLFNBTUssTUEvREhmLFNBcUQ2QmhCO2lCQVNyQmlDLElBQU0sT0ExSWR0QyxXQWlJU29DLEtBcEpUMUMsaUJBb0pTMEMsS0FTREUsS0FBK0Q7SUFGbEM7ZUFDcEM7S0FEb0MsTUE1RHJDakIsU0FxRGFHO0lBT0ssa0IsT0E3Q2xCSSxhQXNDU1E7SUFNVDttQkFKRTkyRCxXQUtNO0lBRFIsT0FBQTs7WUFNQWkzRCxXQUFXQyxXQUFVQztJQUN2QjtLQUFJaEQsUUEvQkZzQyxhQThCV1M7S0FFVEUsV0FBVyxXQUZRRCxZQUNuQmhEO0lBbEJGeUMsV0FrQkV6QztJQUdKLFdBQUMsV0FGR2lELGNBRm1CRCxZQUVuQkM7R0FFcUQ7WUFLdkRDLGlCQUFpQkgsV0FBVUMsWUFBV0c7SUFDeEM7S0FBSW5ELFFBeENGc0MsYUF1Q2lCUztLQUVmRSxXQUFXLFdBRmNELFlBQ3pCaEQ7SUEzQkZ5QyxXQTJCRXpDO0lBRG9DbUQsZ0JBQVhIO0lBQVdHLGdCQUVwQ0Y7O0dBRzJCO1lBRTdCRyxZQUFZQzthQUNWQztLQUFpQixNQUFBLDRDQURQRDtJQUM2QztJQUMzRCxXQURJQyxPQUFBQSxPQUFBQTtHQUN1QztZQUl6Q0MsY0FBY3ZEO0lBRU4sSUFBTmxwRCxNQUFNLDhCQUZNa3BEO0lBRVpscEQsU0FGWWtwRDtJQUtSLE9BQUEsZUFISmxwRDtHQUdnQjtZQUVsQjBzRCxrQkFBa0JDLE9BQU16RDtJQUMxQixHQURvQnlELE9BQ2EsT0FEYkE7SUFHUixJQUFOM3NELE1BQU0sOEJBSGNrcEQ7SUFHcEJscEQsU0FIb0JrcEQ7SUFNaEIsT0FBQSxlQUhKbHBEO0dBSUg7WUFFRzRzRCxPQUFPNXNEOzs7bUJBRUg7U0FDTHRZLGdCQUFIN0M7S0FBUSxXQUFSQSxHQUhXbWI7bUJBR1J0WTs7O1lBRUhtbEUsaUJBQWlCN3NELEtBQUlrcEQ7SUFDdkIsSUFBSTRELFFBRG1CNUQsc0JBQ25CNEQ7aUJBTkVGLE9BS2E1c0QsS0FDZjhzRDtHQUVjO1lBRWhCQyxxQkFBcUJKLE9BQU0zc0QsS0FBSWtwRDtJQUNqQyxHQUR1QnlELE9BQ1UsT0FESjNzRDtRQUV2QjhzRCxRQUYyQjVEO2FBRTNCNEQsT0FaQUYsT0FVdUI1c0QsS0FFdkI4c0Q7SUFDZ0IsT0FITzlzRDtHQUsxQjtZQUVEZ3RELCtCQUFtQ0wsT0FBTXpEO0lBQzNDLEdBRHFDeUQsT0FDSixPQURJQTtJQUV6QixJQUFOM3NELE1BbkNKeXNELGNBaUN5Q3ZEO0lBWnpDMkQsaUJBY0k3c0QsS0FGcUNrcEQ7SUFHekMsT0FESWxwRDtHQUdIO1lBMkJEdVYsU0FFSzJ1QjtJQUZNLEdBRU5BLE9BQVUsT0FBVkE7SUFESSxNQUFBO0dBQ2lCO1lBSzFCK29CLFdBQVd4bkUsR0FBRXluRSxNQUFLN2lEO0lBQ3BCLElBQUl6ZixvQkFDQTFGLFFBREEwRixNQUNJO09BRktuRjtTQUdia0M7O2dCQURJekM7TUFBQUEsNEJBRldnb0UsTUFHZnZsRSxPQUFBQTtNQUFBLFVBQUFBO1NBSGFsQyxNQUdia0M7VUFBQUE7OztRQW5Ca0IzQyxJQWtCZEU7U0FGZ0JtbEI7S0FmVCxNQUFBO0lBZVNBLFlBaEJGcmxCO0lBc0JsQixPQUxJNEY7R0FNRDtZQXFCRHVpRSxjQUFjQyxNQW5CSUY7SUFvQmQsSUFwQm1CRyxZQWhCdkI5M0MsU0FtQ2M2M0M7U0FuQlNDLFdBd0J2QixPQWpDQUosV0FTa0JDLHlCQUFBQSxNQW1CSkU7UUFuQkU1d0QsTUFBRTB3RCx5QkFBRnZsRSxJQUFBNlUsS0FBTzh3RCxXQUFBRDtJQUN6QjtZQURrQjFsRSxHQUNKLE9BRFcybEU7S0FFZixJQUFONXZCLHVCQUZnQnd2QixNQUFGdmxFLE9BQUFBLElBR0U0bEUsV0FIS0Q7S0FJdkI7V0FEa0JDO09BckJULE1BQUE7U0FxQlNBLGdCQURoQjd2QjtXQUNnQjZ2QjtPQWZULE1BQUE7TUFDTSxJQWNHbGpELFNBQUFrakQ7V0FBQWxqRDtPQVVhLElBbkNmamMsV0F3QmRzdkM7WUFDZ0I2dkI7UUF4QlQsTUFBQTtPQXdCU0EsY0F6QkZuL0Q7T0FvQ1YsT0F2Qk42K0QsV0FTZ0J0bEUsV0FBRXVsRSxNQXRCRjkrRDs7VUF5QkVtL0QsV0FBQWxqRDs7S0FFVixJQUxlbWpELGNBaEJ2Qmo0QyxTQW1Ca0JnNEM7VUFIS0M7TUFNVixNQUFBO1NBTkc1bEUsTUFBQUQsV0FBQUEsSUFBQUMsS0FBTzBsRSxXQUFBRTs7R0F3QnFCO1lBbUQ1Q0MsVUFBVXZFO0lBQ0osSUFBSnpqRSxJQXhWRndqRSxXQXVWVUM7OztlQUNSempFOzs7dUNBRFF5akU7V0FDUnpqRTtXQUNBME8sTUF6VkY4MEQsV0F1VlVDOzs7O1NBRVIvMEQsTUFEQTFPOztJQUtKLGlCQU5ZeWpFLFVBRVIvMEQsU0FBQUE7SUFJSixPQUpJQTtHQUtIO1lBb0ZDdTVELFlBQVl4RSxPQUFNUjtJQUNwQixJQUFJdi9ELE1BRGdCdS9ELG9CQXZEQS9nRTs7UUFBQUEsUUF3RGhCd0I7S0FFVTtZQTFETXhCO01BMERkeWhFLHlCQUhjVjtNQXREaEJ0NkQ7O1NBRGdCekc7bUJBQUFBO1NBQ1Esd0JBc0RSK2dFO1FBdERnQjtNQW9EbENpRixNQXBERXYvRDtlQW9ERnUvRDthQUFBQTs7U0FsRHdCLElBdEZkM25FLElBb0ZSb0k7YUFwRlF3L0QsT0FBQTVuRTthQTZJc0I2bkUsaUJBN0lUN3RELEtBQVEsT0FBckI0dEQsS0FBc0I7OztTQXVGWixJQXRGWm5vRSxJQW1GTjJJO2FBbkZNMC9ELE9BQUFyb0U7YUE0SXdCb29FLGlCQTVJVDd0RCxLQUFPLE9BQVBBLFFBQWY4dEQsTUFBNEM7OztTQXVGaEMsSUF0RlozOEQsSUFrRk4vQyxTQWxGUStGLE1Ba0ZSL0Y7YUFsRk0yL0QsT0FBQTU4RCxHQUFFNjhELE9BQUE3NUQ7YUEySXNCMDVELGlCQTFJekI3dEQsS0FDUCxPQURPQSxRQURDK3RELFVBQUVDLE1BRW1EOzs7U0FxRnpDLElBcEZYMzVELE1BK0VQakc7YUEvRU82L0QsT0FBQTU1RDthQXdJdUJ3NUQsaUJBeElUN3RELEtBQU8sT0FBQSxXQUFQQSxXQUFkaXVELE9BQWNqdUQsS0FBcUI7OztTQXFGeEIsSUFwRlprdUQsTUE4RU45L0Q7YUE5RU0rL0QsT0FBQUQ7YUF1SXdCTCxpQkF2SVQ3dEQsS0FBSWhhLEdBQUpnYSxRQUFmbXVELFFBQW1Cbm9FLFlBQTZCOzs7U0FxRnBDLElBcEZWbkIsSUE2RVJ1SixTQTdFVW1KLE1BNkVWbko7YUE3RVFnZ0UsT0FBQXZwRSxHQUFFd3BFLE9BQUE5MkQ7YUFzSW9CczJELGlCQXRJUDd0RCxLQUFRLE9BQWpCLFdBQU5vdUQsTUFBRUMsTUFBd0I7OztTQXFGaEIsSUFwRlp6dkIsTUE0RU54d0MsU0E1RVFrZ0UsTUE0RVJsZ0U7YUE1RU1tZ0UsT0FBQTN2QixLQUFFNHZCLE9BQUFGO2FBcUlzQlQsaUJBcklQN3RELEtBQU8sa0JBQXhCdXVELE1BQWlCdnVELFFBQWZ3dUQsT0FBZ0Q7OztTQXNGaEQsSUFyRkYzdkIsTUEyRU56d0MsU0EzRVEyVixNQTJFUjNWLFNBM0VVcWdFLE1BMkVWcmdFO2FBM0VNc2dFLE9BQUE3dkIsS0FBRTh2QixNQUFBNXFELEtBQUU2cUQsT0FBQUg7O1VBb0lvQlo7cUJBbkl6Qjd0RCxLQUNQLGtCQUZRMHVELE1BQ0QxdUQsUUFERzJ1RCxTQUFFQyxPQUVxRDs7O1NBcUY3QyxJQXBGWDd2QixNQXdFUDN3QyxTQXhFU3lnRSxNQXdFVHpnRTthQXhFTzBnRSxPQUFBL3ZCLEtBQUVnd0IsT0FBQUY7O1VBaUlxQmhCO3FCQWpJUDd0RDthQUFPLE9BQUUsV0FBekI4dUQsTUFBeUIsV0FBVDl1RCxXQUFkK3VELE9BQWMvdUQ7WUFBeUI7OztTQXNGeEMsSUFyRk1tL0IsTUF1RWQvd0MsU0F2RWdCaXhDLE1BdUVoQmp4QyxTQXZFa0JuSSxJQXVFbEJtSTthQXZFYzRnRSxPQUFBN3ZCLEtBQUU4dkIsT0FBQTV2QixLQUFFNnZCLE1BQUFqcEU7YUFnSVk0bkUsaUJBaElDN3RELEtBQVEsT0FBakIsV0FBUmd2RCxNQUFFQyxNQUFFQyxLQUEwQjs7O1NBd0ZwQyxJQXZGSXh2QixNQXNFWnR4QyxTQXRFY294QyxNQXNFZHB4QyxTQXRFZ0IrZ0UsTUFzRWhCL2dFO2FBdEVZZ2hFLE9BQUExdkIsS0FBRTJ2QixPQUFBN3ZCLEtBQUU4dkIsT0FBQUg7O1VBK0hjdEIsaUJBL0hDN3RELEtBQU8sa0JBQTFCb3ZELE1BQUVDLE1BQWlCcnZELFFBQWZzdkQsT0FBa0Q7OztTQTBGMUQsSUF0RkkxdkIsTUFrRVp4eEMsU0FsRWNtaEUsTUFrRWRuaEUsU0FsRWdCeVYsTUFrRWhCelYsU0FsRWtCb2hFLE1Ba0VsQnBoRTthQWxFWXFoRSxPQUFBN3ZCLEtBQUU4dkIsT0FBQUgsS0FBRUksTUFBQTlyRCxLQUFFK3JELE9BQUFKOztVQTJIWTNCO3FCQTFIekI3dEQ7YUFDUCxrQkFGY3l2RCxNQUFFQyxNQUNUMXZELFFBRFcydkQsU0FBRUM7WUFFK0M7OztTQXVGekQsSUE1RksvdkIsTUFxRWJ6eEMsU0FyRWV5aEUsTUFxRWZ6aEUsU0FyRWlCMGhFLE1BcUVqQjFoRTthQXJFYTJoRSxPQUFBbHdCLEtBQUVtd0IsT0FBQUgsS0FBRUksT0FBQUg7O1VBOEhhakM7cUJBOUhBN3REO2FBQU8sT0FBSSxXQUE1Qit2RCxNQUFFQyxNQUEwQixXQUFYaHdELFdBQWJpd0QsT0FBYWp3RDtZQUEyQjs7O1NBK0ZqRCxJQTlGSTgvQixNQW9FWjF4QyxTQXBFYzhoRSxNQW9FZDloRSxTQXBFZ0IraEUsTUFvRWhCL2hFO2FBcEVZZ2lFLE9BQUF0d0IsS0FBRXV3QixPQUFBSCxLQUFFSSxPQUFBSDs7VUE2SGN0QyxpQkE3SEQ3dEQsS0FBTyxPQUFoQixXQUFSb3dELE1BQWlCcHdELFFBQWZxd0QsT0FBRUMsTUFBZ0Q7OztTQWlHeEQsSUE1RklDLE1BK0RabmlFLFNBL0Rjb2lFLE1BK0RkcGlFLFNBL0RnQnFpRSxPQStEaEJyaUUsU0EvRGtCc2lFLE1BK0RsQnRpRTthQS9EWXVpRSxPQUFBSixLQUFFSyxNQUFBSixLQUFFSyxPQUFBSixNQUFFSyxPQUFBSjs7VUF3SFk3QztxQkF2SHpCN3REO2FBQ1AsT0FERixXQURnQjJ3RCxNQUNQM3dELFFBRFM0d0QsU0FBRUMsT0FBRUM7WUFFK0M7OztTQTZGekQsSUFuR0tDLE1BbUViM2lFLFNBbkVlNGlFLE9BbUVmNWlFLFNBbkVpQjZpRSxNQW1FakI3aUU7YUFuRWE4aUUsT0FBQUgsS0FBRUksT0FBQUgsTUFBRUksT0FBQUg7O1VBNEhhcEQ7cUJBNUhBN3REO2FBQU8sT0FBaEIsV0FBUmt4RCxNQUEwQixXQUFUbHhELFdBQWZteEQsT0FBZW54RCxNQUFib3hEO1lBQXdDOzs7U0FzR2pELElBL0ZLQyxPQTREYmpqRSxTQTVEZWtqRSxNQTREZmxqRTthQTVEYW1qRSxPQUFBRixNQUFFRyxPQUFBRjs7VUFxSGV6RDtxQkFySEY3dEQsS0FBTyxPQUFoQixXQUFTQSxXQUFmdXhELE9BQWV2eEQsS0FBYnd4RCxNQUErQzs7O1NBaUd0RCxJQWhHR0MsT0EyRFhyakUsU0EzRGErWSxJQTJEYi9ZO2FBM0RXc2pFLE9BQUFELE1BQUVFLE9BQUF4cUQ7O1VBb0hpQjBtRDtxQkFuSHpCN3REO2FBQU8sa0JBQVBBLFdBRE0weEQsT0FDTjF4RCxLQUFBQSxRQURRMnhEO1lBQ2lEOzs7U0FpR3RELElBaEdHQyxPQXlEWHhqRSxTQXpEYXlqRSxNQXlEYnpqRSxTQXpEZWdrQixNQXlEZmhrQjthQXpEVzBqRSxPQUFBRixNQUFFRyxNQUFBRixLQUFFRyxPQUFBNS9DOztVQWtIZXk3QztxQkFqSHpCN3REO2FBQU8sa0JBQVBBLFdBRE04eEQsT0FDTjl4RCxLQUFBQSxRQURRK3hELFNBQUVDO1lBRWdEOzs7U0FpR3ZELElBaEdJQyxPQXNEWjdqRSxTQXREYzhqRSxNQXNEZDlqRTthQXREWStqRSxPQUFBRixNQUFFRyxPQUFBRjs7VUErR2dCckU7cUJBOUd6Qjd0RDthQUFpQyxVQUFBLFdBQWpDQSxXQURTb3lELE9BQ1RweUQ7YUFBaUMsT0FBQSxXQUFqQ0EsV0FET215RCxPQUNQbnlEO1lBQWlEOzs7U0FpRzlDLElBaEdDcXlELE1Bb0RUamtFLFNBcERXa2tFLE1Bb0RYbGtFO1NBckNGcS9ELFVBMkZZdkU7YUExR0RxSixNQUFBRixLQUFFRyxPQUFBRjs7VUE2R21CekU7cUJBNUd6Qjd0RDthQUFPLE9BQWhCLGtDQURld3lELE1BQUZELFNBQUVDO1lBQ3lDOzs7U0FpRzVDLElBaEdEQyxNQWtEUHJrRSxTQWxEU3NrRSxPQWtEVHRrRTtTQXJDRnEvRCxVQTJGWXZFO2FBeEdIeUosTUFBQUYsS0FBRUcsT0FBQUY7O1VBMkdxQjdFO3FCQTFHekI3dEQ7YUFDUCxVQURPQSxRQURJNHlEOzJEQUFGRDtZQUdtQjs7O1NBK0ZsQixJQTlGREUsTUE4Q1B6a0UsU0E5Q1Mwa0UsTUE4Q1Qxa0UsU0E5Q1cya0UsT0E4Q1gza0U7U0FyQ0ZxL0QsVUEyRll2RTthQXBHSDhKLE1BQUFILEtBQUVJLE1BQUFILEtBQUVJLE9BQUFIOztVQXVHbUJsRjtxQkF0R3pCN3REO2FBQ1AsVUFET0EsUUFESWl6RCxTQUFFQzsyREFBSkY7WUFLcUI7OztTQTRGcEIsSUEzRkFHLE1Bd0NSL2tFLFNBeENVZ2xFLE9Bd0NWaGxFO1NBckNGcS9ELFVBMkZZdkU7YUE5RkZtSyxNQUFBRixLQUFFRyxPQUFBRjs7VUFpR29CdkY7cUJBaEd6Qjd0RDthQUNHLFVBQUEsV0FESEEsV0FES3N6RCxPQUNMdHpEO2FBQ0csT0FBQSx1Q0FGQXF6RDtZQUU2Qzs7O1VBK0Z2QnhGLFFBTGhDRjtLQS9aQXBFLFdBaWFZTCxPQUdSRSxPQUE0QnlFO0tBMURkbG1FOztHQTZEaEI7WUFPRm1rRDtJQUNGLFdBL2VFdWMsZ0JBeUNBVSxpQkFDQUM7R0FzY3VEOzs7O09BaGlCdkRoQjtPQStGQWlCO09BNkZBNEI7T0FVQUU7T0FZQU07T0FHQUM7T0FqSEFuQztPQVNBRTtPQVVBSTtPQVBBRjtPQWlhQW1FO09BblpBL0Q7T0F1Q0FlO09BbURBYTtPQWxMQW5EO09BZ01Bb0Q7T0FhQUc7T0FLQUM7T0FZQUk7T0FTQUk7T0FPQUU7T0FsVUFqeUQ7T0F3VUFveUQ7T0FPQUM7T0FjQUc7T0FLQUU7T0FPQUM7T0FtRUFHO09BOVpBL2lCO09BOGpCQTBCOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lJeGdCRTRzQjtJQUNBQztJQUNBQztJQUNBQztJQS9FWUM7SUFtSFpDO0lBQ0FDO0lBQ0FDO0lBQ0FDOztJQW1JQUM7SUFDQUM7SUFDQUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQXhPRkMsaUJBQWlCQyxZQUFXYixrQkFBaUJud0U7SUFDL0MsR0FTRyxrQkFWNENBLGVBVzFDLE9BWHlCbXdFO1FBQ2JySyw0QkFEOEI5bEUsZUFLbEMvQyxJQUpJNm9FO0lBQ2Y7WUFHVzdvRSxHQUhHLE9BQUEsOEJBRitCK0M7S0FHckMsS0FBQSxXQUhTZ3hFLFlBQTRCaHhFLE1BS2xDL0M7S0FGb0IsSUFGaEIwTyxNQUlKMU8sV0FBQUEsSUFKSTBPOztJQUdWLElBQ1EyQixJQUFGclEsV0FBQTRPLE1BQUE1TztJQUNYO1lBRFc0TyxLQUNHLE9BQUEsOEJBTitCN0wsU0FLaENzTjtLQUVMLEdBQUEsV0FQUzBqRSxZQUE0Qmh4RSxNQUtsQzZMO01BSmIsT0FBQTtrQ0FEK0M3TCxNQUtsQzZMLGNBQUV5QixJQUFGekI7U0FBQTY1RCxNQUFBNzVELGFBQUFBLE1BQUE2NUQ7O0dBT3lCO1lBTXBDdUwsZ0JBQWdCRCxZQUFXYixrQkFBaUJud0U7SUFDOUMsR0FhRyxrQkFkMkNBLGVBZXpDLE9BZndCbXdFO1FBQ1I5Siw0QkFEeUJybUUsZUFLckMvQyxJQUpZb3BFO0lBQ25CO1lBR09wcEUsR0FITyxPQUFBLDhCQUY4QitDO0tBR3BDLEtBQUEsV0FIUWd4RSxZQUE0Qmh4RSxNQUtyQy9DO0tBRndCLElBRlowTyxNQUlaMU8sV0FBQUEsSUFKWTBPOztRQVFBRSxNQUpaNU87SUFDUDtZQUdtQjRPLFlBVFFza0U7S0FPbkIsR0FBQSxXQVBRYSxZQUE0Qmh4RSxNQVN6QjZMO0tBRGQsSUFIRTY1RCxNQUlZNzVELGFBQUFBLE1BSlo2NUQ7O1FBSVlJLE1BQUFqNkQ7SUFDbkI7WUFEbUJpNkQsS0FDTCxPQUFBLDhCQVY4QjlsRTtLQVdwQyxLQUFBLFdBWFFneEUsWUFBNEJoeEUsTUFTekI4bEU7TUFHZCxPQUFBLDhCQVp1QzlsRSxTQVN6QjhsRTtLQUVZLElBRlpHLE1BQUFILGFBQUFBLE1BQUFHOztHQU9xQjtZQTBCdEMrSyxXQUFXM3pFLEdBQUU4QixHQUFJLGNBQUEsZ0JBQU45QixHQUFFOEIsV0FBZTtZQUM1Qit4RSxZQUFZajBFO0lBQUk7a0NBQUpBOzRCQUEyQixnQkFBM0JBOztHQUF1QztZQUNuRGswRSxZQUFZbDBFO0lBQ2QsV0FGRWkwRSxZQUNZajBFO0lBQ2Q7O21DQURjQTs7OztTQUVhLHFCQUFBLDhCQUZiQTtLQUVhOztvQ0FGYkE7Ozs7VUFHYSxxQkFBQSw4QkFIYkE7Ozs7OztJQUdhO0dBQTBCO1lBQ25EbTBFLGFBQWFweEUsTUFBS3F4RTtJQUNwQixPQUFBLDhCQURvQkEsTUFBTHJ4RTtHQUNtQjtZQUVoQ3N4RSxnQkFBaUIzOUQsUUFBT2tyQztJQUMxQjtLQUFJcnJDLDhCQURlRztLQUNrQjQ5RCw4QkFEWDF5QjtPQUN0QnJyQyxRQUFpQys5RCxPQVFuQztJQU5RLElBQUo3MEUsSUFBSSw4QkFIZ0JtaUQsVUFDVzB5QixRQUFqQy85RCxXQUFBQTtJQUdDLE9BQUEsa0JBREM5VyxHQUhhaVg7O2NBS1YsOEJBTGlCa3JDLGFBQ1cweUIsUUFBakMvOUQ7O0dBUUU7T0FHRixJQUFBLE1BQUEsMkJBNkpGZytEOzs7O1FBQUFBOztHQTVKUSxTQTZKUkMsTUFuUXVCcDBFO0lBRW5CO0tBREo2QiwwQkFEdUI3QjtLQUV2QnVCLElBQUksNkJBREpNO0lBRUosOEJBRElOO0lBQ0osV0FGSU0sV0FFSjs7U0FDQUM7O01BQ0ssVUFBQSxnQkFMc0I5QixHQUkzQjhCO09BRU8sOEJBSkhQLEdBRlkweEU7O09BT1UsV0FBQSxnQkFQQ2p6RSxHQUkzQjhCO09BR08sOEJBTEhQOztNQUtHLFdBSFBPO2tCQUFBQTtVQUFBQTs7O0lBS0EsOEJBUElQO0lBT0osT0FBQSw2QkFQSUE7O1lBa1FBOHlFLGNBN0pjbnZELEtBQUs3aUIsT0FBT0MsUUFBUUMsUUFBTzY1QztJQUMzQyxHQURvQzc1QztTQUlHdkQsSUFKSHVEO0tBSVcsR0FBQSxXQUpYQSxRQUFSRDs7O01BTTZCLElBQUEsT0FzSnZEOHhFLE1BeEpxQ3AxRSxXQUVVOzs7OztPQU5yQnNEO0tBR3VCO01BQVp5MkMsTUFIWHoyQztNQUd1QixPQXlKakQ4eEUsTUF6SnFDcjdCO2FBQUs7OztJQUExQyxXQUFBO09BSG1CMTJDO0tBRThCO01BQVoyMkMsTUFGbEIzMkM7TUFFOEIsT0EwSmpEK3hFLE1BMUpxQ3A3QjthQUFLOzs7SUFBMUM7S0FBQSxPQUFBO0tBRGdCLE9BQUEsNEJBMkpoQm83QixXQTVKY2x2RCxLQUEyQmszQjtLQUMzQyxPQUFBO0lBQ0UsT0FBQTtHQUkrRDtHQUNwRCxTQUFYazRCO0ksT0ExRkZaLGlCQTRERUMsWUFIQWI7O0dBa0NVLFNBQVZ5QjtJLE9BekVGWCxnQkEwQ0VELFlBSEFiOztHQUZrQjs7O09BQ2xCRDtPQUNBQztPQUNBQztPQUNBQztPQUNBVztPQUNBRTtPQUNBQztPQUlBQztPQUdBRTtPQXlLQUU7T0FDQUM7T0FDQUM7T0F0SkFDO09BQ0FDO1lBUUFDLGFBQVd4MEUsR0FBRThCO0lBQUksSUFBSWMsSUFBSSxnQkFBZDVDLEdBQUU4QixrQkFBUWM7Ozs7dUJBQUFBLGtDQUFBQTs7R0FBMkM7WUFDaEU2eEUsY0FBWTcwRTtJQUNkO2tDQURjQTs0QkFDVSxnQkFEVkE7OzttQ0FBQUE7NkJBRWEsZ0JBRmJBOzs7b0NBQUFBOzhCQUdhLGdCQUhiQTs7Ozs7OztHQUcwQjtZQUN0QzgwRSxjQUFZOTBFO0lBQ2QsVUFMRTYwRSxjQUlZNzBFO0lBQ2Q7O2tDQURjQTs7OztTQUVhLHFCQUFBLDhCQUZiQTtLQUVhOzttQ0FGYkE7Ozs7VUFHYSxxQkFBQSw4QkFIYkE7TUFHYTs7cUNBSGJBOzs7O1dBSWE7YUFBQSw4QkFKYkE7T0FJYTs7c0NBSmJBOzs7O1lBS2E7Y0FBQSw4QkFMYkE7Ozs7Ozs7Ozs7OztJQUthO0dBQTJCO1lBQ3BEKzBFLGVBQWFoeUUsTUFBS3F4RTtJQUNyQjtpQ0FEcUJBLCtCQUFMcnhFOztLQUVQO01BQUozQztRQUFJOztVQUZPMkM7Z0NBQUFBLDhCQUFLcXhFO2dDQUFBQTtNQUlPLE1BQUEsOEJBSlBBO1lBSXBCLGtCQUFBLDhCQUZJaDBFOzs7SUFFSjtHQUF1RDtZQUVyRDQwRSxrQkFBaUJ0K0QsUUFBT2tyQztJQUMxQjtLQUFJcnJDLDhCQURlRztLQUNrQjQ5RCw4QkFEWDF5QjtPQUN0QnJyQyxRQUFpQys5RCxPQVFuQztJQU5RO0tBQUo3MEUsSUFBSSw4QkFIZ0JtaUQsVUFDVzB5QixRQUFqQy85RCxXQUFBQTtLQUc0QixNQUFBLDhCQUpiRztJQUlkLE9BQUEsa0JBQUEsOEJBRENqWDs7Y0FFRyw4QkFMaUJtaUQsYUFDVzB5QixRQUFqQy85RDs7R0FRRTtPQUlGLElBQUEsTUFBQSx5QkFERjArRDs7OztRQUFBQTs7WUFFQUMsUUFBTTkwRTtJQUNSO0tBQUk2QiwwQkFESTdCO0tBRUp1QixJQUFJLDZCQURKTTtJQUVKLDhCQURJTjthQUVJd3pFLGdCQUFLanpFO0tBQ1gsSUFEV0MsTUFBQUQ7S0FDWDtTQURXQyxRQUhURixHQUlZLE9BQUEsOEJBSFpOO01BSUksSUFHSnFCLElBSEksZ0JBTkE1QyxHQUlLK0I7Z0JBS1RhOztPQUZRO1FBQUEsT0FBQSx1QkFHUm95RSxrQkFOU2p6RTs7T0FHRCxPQUdSaXpFLHdCQU5TanpFOztnQkFLVGE7O09BRFE7UUFBQSxPQUFBLHVCQUVSb3lFLGtCQU5TanpFOztPQUlELE9BRVJpekUsd0JBTlNqekU7O01BS0QsOEJBUFJSLEdBT0FxQjtNQUFRLElBTEMrVCxNQUFBNVUsYUFBQUEsTUFBQTRVOztJQUsrQjthQUxwQ2trQyxLQUFLLzRDLEcsdUJBQUxpekUsVUFBS2p6RTthQU1Ua3pFLGlCQUFRcDFFLEdBQUVrQztLQUNaLElBRFV3TSxNQUFBMU8sR0FBRW1DLE1BQUFEO0tBQ1o7U0FEWUMsUUFUVkYsR0FXQSw4QkFWQU4sUUFVQSxPQVFBMHpFLE9BVlEzbUU7TUFLRixZQUFBLGdCQWZGdE8sR0FVTStCOztPQVVWa3pFLFlBVlEzbUU7T0FNa0IsOEJBZDFCL007T0FjMEIsVUFOaEJRO09BTWdCLGtCQUFBLE9BQUEsdUJBWnRCZ3pFOztPQVlzQixPQVp0QkE7OztPQWdCSkUsT0FWUTNtRTtPQVFFLGtCQUFBLE9BQUEsdUJBZE55bUUsWUFNTWh6RTs7T0FRQSxPQWROZ3pFLGtCQU1NaHpFOztNQU9BLElBUEE0VSxNQUFBNVUsYUFBRnlNLE1BQUFGLGFBQUFBLE1BQUFFLEtBQUV6TSxNQUFBNFU7O0lBU1Q7YUFDRHMrRCxPQUFPcjFFO0tBQUk7UUFBSkE7VUFBSWlXOztPQUFtQiw4QkFsQjlCdFU7T0FrQjhCLFVBQW5Cc1U7VUFBSmpXLE1BQUlpVztXQUFBQTs7OztJQUErQztJQWhCdERnbEM7SUFrQlIsT0FBQSw2QkFwQkl0NUM7R0FxQmE7WUFnQ2YyekUsbUJBQW1CbDJFO0lBQ3JCOztNQUFHLDhCQURrQkE7V0FDUSw4QkFEUkE7S0FHYixLQUFBLDhCQUhhQSxRQU1uQixPQU5tQkE7S0FJWixVQUFBLHVCQUpZQTtLQUlaLE9BQUE7O0lBRkUsVUFBQSx1REFGVUE7SUFFVixPQUFBO0dBSVI7WUFJRG0yRSxnQkFBY2p3RCxLQUFLN2lCLE9BQU9DLFFBQVFDLFFBQU82NUM7SUFDM0MsR0FEb0M3NUM7U0FRR3ZELElBUkh1RDtLQVNHLEdBQUEsV0FUSEEsUUFBUkQ7OztNQVdxQjtPQUFBLE1BckIvQzR5RSxtQkFrQnFDbDJFO2FBR0U7Ozs7OztPQVhic0Q7S0FPdUI7TUFBWnkyQyxNQVBYejJDO01BT3VCLE1BakJqRDR5RSxtQkFpQnFDbjhCO1lBQUs7Ozs7T0FQdkIxMkM7S0FNOEI7TUFBWjIyQyxNQU5sQjMyQztNQU04QixNQWhCakQ2eUUsbUJBZ0JxQ2w4QjtZQUFLOzs7SUFEYjtLQUFBLE1BQUEsNEJBdEU3Qjg3QixTQWlFeUMxNEI7S0FyQi9CcDhDLElBMEJBO0tBekJSdUIsSUFBSSxtREFESXZCOztpQkFHTDRDO0tBQ0g7O2VBREdBO2lCQUFBQTs7OztnQkFBQUE7a0JBQUFBOzs7Z0JBQUFBO2VBQUFBOzs7TUFHQyw4QkFMSnJCO01BS0ksT0FBQSw4QkFMSkEsR0FFR3FCOztLQUtDLE9BQUEsOEJBUEpyQixHQUVHcUI7SUFLb0I7SUFOM0IsbUNBRlk1QztJQXNCSzsyQkFwQmpCLDZCQURJdUI7S0FxQmEsc0JBWGYyekUsbUJBVWNod0Q7SUFDQyxPQUFBO0dBWWhCO1lBT0Nrd0QsZUFBZXAxRTtJQUNqQixlQUZBLHNCQUNpQkE7O0tBRGlCLFlBQUEsZ0JBQ2pCQTs7Ozs7Ozs7Ozs7Ozs7S0FETyx1QkFBbUIsZ0JBQzFCQTs7OztJQUNkLFVBRUUsbUJBSFlBO0lBRU87O09BQUEsOEJBRlBBLDRCQUFBQTtJQUVaLFdBQUMsOEJBRldBO0dBR0w7WUFDVnExRSxVQUFRcjFFO0lBQ1Y7S0FBb0IsUUFMbEJvMUUsZUFJUXAxRTtLQUNFczFFO0tBQVBDO0tBQ0RDLE1BM01KNUIsZ0JBaUZFWSxjQUhBckIsb0JBNEhVbUM7SUFFWixPQUFBLHVCQUZLQyxPQUNEQztHQUNPO1lBQ1RDLFdBQVN6MUU7SUFDWCxJQUFhczFFLE9BVFhGLGVBUVNwMUU7SUFFWCxPQWpPQTB6RSxpQkFtR0VjLGNBSEFyQixvQkFnSVdtQztHQUNvQztHQW5JNUI7OztPQUNuQnBDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FtQjtPQUNBQztPQUlBQztPQU1BQztPQU1BQztPQVlBQztPQUVBQztPQWlFQUs7T0E0QkFNO09BSkFKO0dBc0JXLFNBQVhLO0ksT0FqUEZoQyxpQkFtR0VjLGNBbUlBakI7O0dBWVUsU0FBVm9DO0ksT0FoT0YvQixnQkFpRkVZLGNBbUlBakI7O0dBRm9CO0lBQUE7O09BQ3BCRDtPQUNBQztPQUNBQztPQUNBQztPQXJJQWU7T0FDQUM7T0FJQUM7T0FNQUM7T0FNQUM7T0EwSEFUO09BQ0FDO09BQ0FDO09BQ0FxQjtPQUNBQzs7Ozs7O0lBN01KQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUdBQztJQUNBQztZQXlNRXp0RSxPQUFPdXJFLFNBQVEveUI7SUFDakIsSUFBSTMvQywwQkFESzB5RTtJQUVHLFNBRFIxeUUsT0FyTkptMEUsYUFvTlN6QixTQUNMMXlFO0tBR1csVUFBQSx1QkF6TmZrMEUsV0FxTmlCdjBCO0tBSUYsT0FBQSx1QkFKTit5Qjs7SUFHSixPQUFBLHVCQUhJQSxTQUFRL3lCO0dBSWdCO1lBRS9CazFCLFlBQVkvekUsTUFBS3F4RTtJQUNuQixJQUFJcDBFLDBCQURVK0MsOEJBQUtxeEU7SUFFbkIsWUFESXAwRTtjQUNrRCw4QkFGeEMrQyxTQUNWL0M7Y0FDVTtHQUEyRDtZQUV2RSsyRSxjQUFjaDBFO0lBQ2hCLElBS21CMmIsNEJBTkgzYixlQU1HaTBFLEtBQUF0NEQ7SUFDakI7S0FBWSxRQURLczRELFFBcE9uQlosYUE4TmdCcnpFLE1BTUdpMEU7TUFFVCxVQUFBLGdCQVJNajBFLE1BTUdpMEU7TUFHWixJQUhZdjRELE1BQUF1NEQsWUFBQUEsS0FBQXY0RDs7O0tBQ2tCOztJQUNQLElBUGIxSCxNQUtFaWdFLFlBTEY5MEUsSUFBQTZVO0lBQ2Y7S0FBWSxRQURHN1UsT0EvTmpCazBFLGFBOE5nQnJ6RSxNQUNDYjtNQUVQLFVBQUEsZ0JBSE1hLE1BQ0NiO29DQUREYSxRQU1HaTBFO01BSFcsSUFGYjcwRSxNQUFBRCxXQUFBQSxJQUFBQzs7O0tBQ29COztHQVNGO1lBRWpDODBFLFVBQVVsMEU7SUFDSixJQUFKZCxJQWRGODBFLGNBYVVoMEU7SUFFWixhQURJZDs7Y0FDa0I7O2VBRlZjO3FDQUFBQSxRQUNSZDtlQUFBQTtHQUM0RDtZQUU5RGkxRSxlQUFlbjBFO0lBQ1QsSUFBSmQsSUFsQkY4MEUsY0FpQmVoMEU7SUFFakIsYUFESWQ7Y0FDVTs7O2VBRkdjOztxQ0FBQUEsUUFDYmQ7R0FFMkM7WUFFN0NrMUUsaUJBQWlCcDBFO0lBQ1gsSUFBSmQsSUF2QkY4MEUsY0FzQmlCaDBFO0lBRW5CLGFBRElkO2NBRGVjOzs7ZUFBQUE7O3FDQUFBQSxRQUNmZDtHQUM4RDtHQUtyRDtJQUFYK2lELDJCO1lBRUFveUIsZUFBZUMsVUFBUy9nRSxRQUFPSTtJQUNqQztnQ0FIRXN1Qzs7O1VBQUFBO3dEQUFBQSxRQUFBQTtLQUdFc3lCLE1BQU07SUFDTSxPQTNDZGx1RTthQXlDZWl1RSxVQUVELGtDQUZVL2dFLFFBQ3RCZ2hFLEtBRDZCNWdFO0dBRTRCO0dBR25DLElBQXhCNmdFLDRCQTdQRmQ7WUErUEVlLGtCQUFrQnAzRSxHQUZsQm0zRSwyQkFFa0JuM0UsWUFBOEI7WUFDaERxM0UseUJBQXVCLE9BSHZCRix5QkFHNkM7WUFFN0NHLFVBQVlwMUQsS0FBbUNoTSxRQUFPSTtJQUN4RCxHQURjNEw7U0FBV0UsTUFBWEYsUUFBQSswRCxXQUFXNzBEOztTQUFYNjBELFdBTFpFO1FBTWV4NEU7SUFDZjtLQUFXLElBQVBnRSxPQVpKcTBFLGVBVVlDLFVBQW1DL2dFLFFBQU9JO0tBR3REO01BQ0UsdUJBQVUsc0JBRlIzVDtNQUVGLE9BRkVBOztXQUlDdWI7VUFBQTVTLHdCQUFBNFM7U0FBQTVTLHVEQUFBQTtpQkFMVTNNLFNBTVcsTUFBQSw0QkFEckIyTTtNQUNrQyxJQU54QjZuQyxZQUFBeDBDLGlCQUFBQSxVQUFBdzBDOzs7R0FPSjtZQUVYb2tDLGVBQWlCcjFELGVBQ21DaE0sUUFBT0k7SUFDN0QsR0FGbUI0TCxTQUFPRSxNQUFQRixRQUFBemYsT0FBTzJmLGNBQVAzZjtJQUVuQixZQUZpRCswRSxnQkFBUkMsUUFBUUQsZ0JBQVJDO0lBRXpDO1NBRDhCQyxnQkFBWFQsV0FBV1M7O1NBQVhULFdBaEJqQkU7UUFpQmV4NEU7SUFDZjtLQUFXLElBQVBnRSxPQXZCSnEwRSxlQXFCaUJDLFVBQW1DL2dFLFFBQU9JO0tBRzNEO01BQ0U7OztVQUZFM1Q7VUFHRCw0Q0FOY0YsU0FBc0JnMUUsT0FHbkM5MEU7TUFFRjs7V0FFR3ViO1VBQUE1Uyx3QkFBQTRTO1NBQUE1Uyx1REFBQUE7aUJBTFUzTSxTQU1XLE1BQUEsNEJBRHJCMk07TUFDa0MsSUFOeEI2bkMsWUFBQXgwQyxpQkFBQUEsVUFBQXcwQzs7O0dBT0o7Ozs7T0E3UmIwaUM7T0FDQUM7T0FDQUM7T0FxTkUvc0U7T0FuTkZpdEU7T0FDQUM7T0FDQUM7T0F1TkVPO09BdE5GTjtPQXVPRVM7T0FTQUU7T0FMQUQ7T0FyT0ZOO09BQ0FDO09BZkFiO09BMlFFMEI7T0FVQUM7T0FaQUY7T0FEQUQ7T0EvUEZmO09BQ0FDO09BQ0FDOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJRXpCRWtDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0EzMUI7SUFDQUM7SUFDQVQ7SUFDQVU7SUFDQTAxQjtJQUNBQztJQUNBbjhCO1lBRUFvOEI7SUFBQTs7T0FDVzs7T0FDQTs7T0FDSTs7T0FDRTs7T0FDRDs7T0FDRTs7T0FDVDs7T0FDQTs7Ozs7O09BR0k7O09BQ0E7ZUFDTDs7R0FBQztHQWJULElBa0JBQyxjQUNBQztZQVdNQyxNQUFNdlYsS0FBSXdWLEtBQUlyNkUsR0FBRXM2RSxLQUFJajVFO0lBQzFCLEdBRHNCaTVFLFFBQU5EO0tBQ2Usb0JBRG5CeFYsS0FBSXdWLEtBQzJCLFdBRHZCcjZFLEdBQUpxNkU7S0FDZTs7SUFDUixJQUFBLHdCQUZHaDVFLEtBQUppNUUsU0FBQUEsY0FFakI7O1NBQUF6akU7O01BQ0UsaUJBSFN3akUsS0FBTUMsU0FBQUEsT0FFakJ6akU7TUFGQ3VqRSxNQUFNdlYsS0FBSXdWLEtBQUlyNkUsR0FBRXM2RSxhQUFJajVFO01BSW5CLFdBRkZ3VjtrQkFBQUE7VUFBQUE7Ozs7R0FHSTtZQUNIMGpFLE1BQU0xVixLQUFJd1YsS0FBSXI2RSxHQUFFczZFLEtBQUlqNUU7SUFDMUIsT0FEc0JpNUUsS0FDTixvQkFESnpWLEtBQUl3VixLQUNZLFdBRFJyNkUsR0FBSnE2RSxPQUNBO0lBQ0UsSUFBQSx3QkFGUWg1RSxLQUFKaTVFLFNBQUFBLE1BRWpCOztTQUFBempFOztNQUNFLGlCQUhTd2pFLEtBQU1DLFNBQUFBLE9BRWpCempFO01BRkMwakUsTUFBTTFWLEtBQUl3VixLQUFJcjZFLEdBQUVzNkUsYUFBSWo1RTtNQUluQixXQUZGd1Y7a0JBQUFBO1VBQUFBOzs7O0dBR0k7WUFDUDNHLEtBQWM4bEMsTUFBTXdrQyxRQUFtQkMsTUFBS3o2RTtJQUM5QyxJQUFJNmtFLE1BQU0sZUFETTd1QixNQUFNd2tDLFFBQW1CQyxPQUl2QzFyRCxRQUp1QzByRDtpQkFJdkMxckQ7Y0FIRTgxQztjQURrQjJWO2lCQU5oQkQ7a0JBT0YxVixLQUlnQyxlQURsQzkxQyxXQUo0Qy91QixHQUk1Qyt1QixlQUp1QzByRDtnQkFDckM1VjtpQkFiRXVWLE1BYUZ2VixLQUcwQixlQUE1QjkxQyxXQUo0Qy91QixNQUFMeTZFLE9BQ3JDNVY7R0FLeUI7WUFJM0I0VixLQUFLejJFO0lBQ1A7S0FBSXBELElBQUksaUJBRERvRDtLQUVIb2MsSUFBSSxlQURKeGY7S0FFSixPQUZJQTtLQUNJOztTQUNSa0M7O01BQTZCLFdBQUEsb0JBSHRCa0IsR0FHUGxCO01BQW9CLGlCQURoQnNkLEdBQ0p0ZCxPQUFBQTtNQUFvQixXQUFwQkE7a0JBQUFBO1VBQUFBOzs7SUFDQSxPQUZJc2Q7R0FFSDtZQU9DczZELGNBQWM3VjtJQUNoQjtLQUEyRCxPQVp6RDRWLEtBV2M1VjtLQUNrQixPQUFBO0lBQWxDLE9BQUEsU0FoRUFvVixtQkFnRW9CLGFBREpwVjtHQUNzRDtZQW9CcEUvbkQsT0FBT2s1QixNQUFLd2tDLFFBQ2QsT0FBQSxlQURTeGtDLE1BQUt3a0MsYUFDa0I7WUFDOUJwNkUsSUFBSXlrRSxLQUFNLE9BQUEsNEJBQU5BLFVBQTJCO1lBQy9CdmtFLElBQUl1a0U7SUFBTTtJQUFpQixzQiwyQkFBdkJBO0dBQTJCO1lBTy9COFYsZ0JBQWM5VjtJQUFNLE9BOUZ0Qm9WLG1CQThGeUMsYUFBekJwVjtHQUFtQztZQUtqRCtWLFNBQVM1a0MsTUFBS3drQyxRQUFPcjZFO0lBQ2YsSUFBSjZELElBaEJGOFksT0FlU2s1QixNQUFLd2tDO0lBWmRsNkUsSUFhRTBELEdBRG1CN0Q7SUFFdkIsT0FESTZEO0dBRUg7WUFNQzhrRCxTQUFPOVMsTUFBS3drQyxRQUFPSztJQUNyQixPQUFBLGVBRFM3a0MsTUFBS3drQyxZQUFPSztHQUNjO1lBYWpDQyxnQkFBY2pXO0lBQ2tCLFVBQUEsY0FEbEJBO0lBQ2hCLE9BQUEsU0EzSEFvVixtQkEySG9CLGFBREpwVjtHQUMyQjtZQUd6Q2tXLE1BQWdCLzJFLEdBQTBCcEQ7SUFDNUMsT0FBTSx1QkFEWW9EO2NBR0csY0FISEEsT0FBMEJwRDtjQUU3QixjQUZHb0QsT0FBMEJwRDtHQUc0QjtZQU90RW82RSxPQUFjaGxDLE1BQU13a0MsUUFBbUJLLEtBQUk3NkU7SUFDbkMsSUFISzZrRSxNQTFCYi9iLFNBNEJjOVMsTUFBTXdrQyxRQUFtQks7SUFFekMsR0FGc0JMO0tBRHRCO1FBQ3lDSztVQUR6QzkzRTs7T0FBb0IsY0FETDhoRSxLQUNmOWhFLEtBQXFDLFdBQ1EvQyxHQUQ3QytDO09BQW9CLFVBQXBCQTtVQUN5QzgzRSxRQUR6QzkzRTtXQUFBQTs7O0tBS29CLE9BTkw4aEU7O0lBRGYsVUFHeUNnVyxhQUh6Qzs7U0FBQS8zRTs7TUFBeUIsY0FDVitoRSxLQURmL2hFLEdBQTBDLFdBR0c5QyxHQUg3QzhDO01BQXlCLFVBQXpCQTtpQkFBQUE7VUFBQUE7OztJQU1jLE9BTEMraEU7R0FNZ0M7WUFDN0NvVyxTQUFrQmpsQyxNQUFNd2tDLFFBQWtCNXREO0lBQzVDO0tBQUlzdUQsS0FsQ0ZweUIsU0FpQ2tCOVMsTUFBTXdrQyxRQUFrQjV0RDtLQUV4Q3ZvQixNQUZzQm0yRTtXQUFrQjV0RDs7O1NBTzVDOXBCOztNQUFzQyxjQU5sQ280RSxJQU1KcDRFLElBTEl1QiwwQkFGd0N1b0IsTUFPNUM5cEIsT0FBQUE7TUFBc0MsVUFBdENBO2lCQUFBQTtVQUFBQTs7O0lBQ0EsT0FQSW80RTtHQU9GO1lBS0FwSSxTQUFPOThCLE1BQUt3a0MsUUFBT1csTUFBS0M7SUFDMUIsT0FBQSxlQURTcGxDLE1BQUt3a0MsWUFBT1csTUFBS0M7R0FDZ0I7WUFleENDLGdCQUFjeFc7SUFDaEIsSUFBK0MsTUFBQSxjQUQvQkEsTUFDa0IsTUFBQSxjQURsQkE7b0JBQ2hCLFNBM0tBb1YsbUJBMktvQixhQURKcFY7R0FDeUM7WUFPdkR5VyxXQUFXdDNFLEdBQUVwRCxHQUFJLE9BQUEsY0FBTm9ELE9BQUVwRCxJQUErQjtZQUM1QzI2RSxZQUFZdjNFLEdBQUVwRCxHQUFJLE9BQUEsY0FBTm9ELE9BQUVwRCxJQUFnQztZQWU5QzQ2RSxPQUFjeGxDLE1BQU13a0MsUUFBbUJXLE1BQUtDLE1BQUtwN0U7SUFDekMsSUFQSzZrRSxNQWxDYmlPLFNBd0NjOThCLE1BQU13a0MsUUFBbUJXLE1BQUtDO0lBRTlDLEdBRnNCWjtLQUx0QjtRQUs4Q1k7VUFMOUNoOEQ7O09BQ0U7VUFJdUMrN0Q7WUFKdkNwNEU7O1NBQ0UsY0FIVzhoRSxLQUViOWhFLEtBREZxYyxLQUV1QixXQUc0QnBmLEdBSmpEK0MsS0FERnFjO1NBRUksVUFERnJjO1lBSXVDbzRFLFNBSnZDcDRFO2FBQUFBOzs7T0FERixVQUFBcWM7VUFLOENnOEQsU0FMOUNoOEQ7V0FBQUE7OztLQVNvQixPQVZMeWxEOztJQUxmLFVBV3lDc1csY0FYekM7O1NBQUFyNEU7O01BQ0UsVUFVNENzNEUsY0FWNUM7O1dBQUF2a0U7O1FBQ0UsY0FHV2d1RCxLQUxmL2hFLEdBQ0UrVCxHQUNxQixXQVM0QjdXLEdBWG5EOEMsR0FDRStUO1FBQ0UsVUFERkE7bUJBQUFBO1lBQUFBOzs7TUFERixVQUFBL1Q7aUJBQUFBO1VBQUFBOzs7SUFjYyxPQVRDK2hFO0dBVXNDO1lBQ25ENFcsV0FBa0J6bEMsTUFBTXdrQyxRQUFrQjV0RDtJQUM1QztLQUFJdXVELE9BRHdDdnVEO0tBRXhDd3VELGFBREFELDRCQUR3Q3Z1RDtLQUd4Q3N1RCxLQWhERnBJLFNBNkNrQjk4QixNQUFNd2tDLFFBQ3RCVyxNQUNBQztLQUVBLzJFLE1BSnNCbTJFO0tBUzFCLE1BUklXOzs7U0FRSnI0RTs7TUFDWSxJQUFONDRFLHVCQVZzQzl1RCxNQVM1QzlwQixPQUFBQTtTQUNNNDRFLG1CQVJGTjtPQVVBO01BVndCLElBQUEsTUFBeEJBLGNBVUE7O1dBQ0Z2a0U7O1FBQ0U7VUFYQXFrRSxJQU1KcDRFLElBTEl1QixTQVNGd1MsSUFURXhTLDBCQU1FcTNFLEtBR0o3a0UsT0FBQUE7UUFDRSxVQURGQTttQkFBQUE7WUFBQUE7OztNQUpGLFVBQUEvVDtpQkFBQUE7VUFBQUE7OztJQVFBLE9BZElvNEU7R0FjRjtZQUtBUyxTQUFPM2xDLE1BQUt3a0MsUUFBT1csTUFBS0MsTUFBS1E7SUFDL0IsT0FBQSxlQURTNWxDLE1BQUt3a0MsWUFBT1csTUFBS0MsTUFBS1E7R0FDaUI7WUFpQjlDQyxnQkFBY2hYO0lBQ2hCO0tBQTRELE1BQUEsc0JBRDVDQTtLQUMrQixNQUFBLGNBRC9CQTtLQUNrQixNQUFBLGNBRGxCQTs7O2VBQ2hCLFNBaFBBb1YsbUJBZ1BvQixhQURKcFY7O0dBQ3NEO1lBT3BFaVgsYUFBYTkzRSxHQUFFcEQsR0FBRTBoQixHQUFJLE9BQUEsY0FBUnRlLE9BQUVwRCxHQUFFMGhCLElBQWtDO1lBQ25EeTVELGNBQWMvM0UsR0FBRXBELEdBQUUwaEIsR0FBSSxPQUFBLGNBQVJ0ZSxPQUFFcEQsR0FBRTBoQixJQUFtQztZQUNyRDA1RCxhQUFhaDRFLEdBQUVwRCxHQUFJLE9BQUEsY0FBTm9ELE9BQUVwRCxJQUErQjtZQUM5Q3E3RSxjQUFjajRFLEdBQUVwRCxHQUFJLE9BQUEsY0FBTm9ELE9BQUVwRCxJQUFnQztZQW1CaERzN0UsT0FBY2xtQyxNQUFNd2tDLFFBQW1CVyxNQUFLQyxNQUFLUSxNQUFLNTdFO0lBQzlDLElBVEs2a0UsTUF4Q2I4VyxTQWdEYzNsQyxNQUFNd2tDLFFBQW1CVyxNQUFLQyxNQUFLUTtJQUVuRCxHQUZzQnBCO0tBUHRCO1FBT21Eb0I7VUFQbkRsbkQ7O09BQ0U7VUFNNEMwbUQ7WUFONUNoOEQ7O1NBQ0U7WUFLcUMrN0Q7Y0FMckNwNEU7O1dBQ0UsY0FKUzhoRSxLQUdYOWhFLEtBREZxYyxLQURGc1YsS0FHMkIsV0FJNkIxMEIsR0FMcEQrQyxLQURGcWMsS0FERnNWO1dBR00sVUFERjN4QjtjQUtxQ280RSxTQUxyQ3A0RTtlQUFBQTs7O1NBREYsVUFBQXFjO1lBTTRDZzhELFNBTjVDaDhEO2FBQUFBOzs7T0FERixVQUFBc1Y7VUFPbURrbkQsU0FQbkRsbkQ7V0FBQUE7OztLQVdvQixPQVpMbXdDOztJQVBmLFVBZXlDc1csY0FmekM7O1NBQUFyNEU7O01BQ0UsVUFjNENzNEUsY0FkNUM7O1dBQUF2a0U7O1FBQ0UsVUFhK0Mra0UsY0FiL0M7O2FBQUFudUQ7O1VBQ0UsY0FJU28zQyxLQVBmL2hFLEdBQ0UrVCxHQUNFNFcsR0FDdUIsV0FZNkJ6dEIsR0FmeEQ4QyxHQUNFK1QsR0FDRTRXO1VBQ0UsVUFERkE7cUJBQUFBO2NBQUFBOzs7UUFERixVQUFBNVc7bUJBQUFBO1lBQUFBOzs7TUFERixVQUFBL1Q7aUJBQUFBO1VBQUFBOzs7SUFrQmMsT0FYQytoRTtHQVkyQztZQUN4RHNYLFdBQWtCbm1DLE1BQU13a0MsUUFBa0I1dEQ7SUFDNUM7S0FBSXV1RCxPQUR3Q3Z1RDtLQUV4Q3d1RCxhQURBRCw0QkFEd0N2dUQ7S0FHeENndkQ7YUFEQVI7OzRDQUZ3Q3h1RDtLQUl4Q3N1RCxLQXpERlMsU0FxRGtCM2xDLE1BQU13a0MsUUFDdEJXLE1BQ0FDLE1BQ0FRO0tBRUF2M0UsTUFMc0JtMkU7S0FVMUIsTUFUSVc7OztTQVNKcjRFOztNQUNZLElBQU40NEUsdUJBWHNDOXVELE1BVTVDOXBCLE9BQUFBO1NBQ000NEUsbUJBVEZOO09BV0E7TUFYd0IsSUFBQSxNQUF4QkEsY0FXQTs7V0FDRnZrRTs7UUFDWSxJQUFOeWpFLHVCQUpGb0IsS0FHSjdrRSxPQUFBQTtXQUNNeWpFLG1CQVpKc0I7U0FjRTtRQWRzQixJQUFBLE1BQXhCQSxjQWNFOzthQUNGbnVEOztVQUNFO1lBZkZ5dEQ7WUFNSnA0RSxJQUxJdUI7WUFTRndTLElBVEV4UztZQWFBb3BCLElBYkFwcEI7NkJBVUlpMkUsS0FHSjdzRCxPQUFBQTtVQUNFLFVBREZBO3FCQUFBQTtjQUFBQTs7O1FBTEEsVUFDRjVXO21CQUFBQTtZQUFBQTs7O01BSkYsVUFBQS9UO2lCQUFBQTtVQUFBQTs7O0lBYUEsT0FuQklvNEU7R0FtQkY7WUFXRmtCLG1CQUFtQnA0RTtJQUNyQixhQUFHLGlCQURrQkE7Y0FBQUE7Y0FFaEI7R0FBeUM7WUFDNUNxNEUsbUJBQW1CcjRFO0lBQ3JCLGFBQUcsaUJBRGtCQTtjQUFBQTtjQUVoQjtHQUF5QztZQUM1Q3M0RSxtQkFBbUJ0NEU7SUFDckIsYUFBRyxpQkFEa0JBO2NBQUFBO2NBRWhCO0dBQXlDO1lBQzVDdTRFLG1CQUFtQnY0RTtJQUNyQixhQUFHLGlCQURrQkE7Y0FBQUE7Y0FFaEI7R0FBeUM7WUFLNUN3NEUsVUFBVXg0RSxHQUFJLE9BQUEsZ0JBQUpBLFFBQWtCO1lBQzVCeTRFLFVBQVV6NEUsR0FBRW0zRSxNQUFPLE9BQUEsZ0JBQVRuM0UsT0FBRW0zRSxPQUF5QjtZQUNyQ3VCLFVBQVUxNEUsR0FBRW0zRSxNQUFLQztJQUFPLE9BQUEsZ0JBQWRwM0UsT0FBRW0zRSxNQUFLQztHQUE4QjtZQUMvQ3VCLFVBQVUzNEUsR0FBRW0zRSxNQUFLQyxNQUFLUTtJQUFPLE9BQUEsZ0JBQW5CNTNFLE9BQUVtM0UsTUFBS0MsTUFBS1E7R0FBbUM7Ozs7T0FyVnpEbkM7T0FDQUM7T0FTQUs7T0FDQUM7T0FUQUw7T0FDQUM7T0FDQUM7T0FDQUM7T0FHQW4yQjtPQUZBUTtPQUNBQztPQUVBQztPQUdBeEc7T0FFQW84QjtPQWtCQUM7T0FDQUM7V0F1QkVqcUUsTUFVQXVxRSxNQVdBQzs7UUFxQkE1OUQ7UUFlQTg5RDs7UUFMQUQ7UUFSQXY2RTtRQUNBRTtRQVlBczZFOztRQVNBOXhCO1FBNEJBa3lCOztRQWRBRjtRQUlBQztRQWVBRTs7UUFhQW5JO1FBd0NBMEk7O1FBeEJBSDtRQVFBQztRQUNBQztRQW9CQUU7O1FBc0JBRTtRQWdEQU87O1FBOUJBTDtRQVFBQztRQUNBQztRQUNBQztRQUNBQztRQXdCQUU7T0FrQ0ZDO09BR0FDO09BR0FDO09BR0FDOztPQU9BQztPQUNBQztPQUNBQztPQUNBQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0dFL1lROzs7O0lBQUE7SUFzSE07SUFNWkM7SUFFQUM7SUE1Qk8sa0JBMEJQRCxTQUVBQztJQTRCSjtHQUVRO0dBRWUsU0FBbkJDLFcsVTtHQVBBO0lBQUE7O09BT0FBOzs7O0lBUzBCO0lBb0NYO0lBbEJBO0lBaUNOOzs7OztFOzs7Ozs7Ozs7Ozs7R0V4TUQ7Ozs7O0lBQUE7WUFtQ1JDLElBQUtDLEdBQVNDLEdBQUksT0FBSkEsS0FBVEQsSUFBQUEsSUFBU0MsRUFBMkI7WUFFekNDLElBQUtGLEdBQVNDLEdBQUksT0FBYkQsS0FBU0MsSUFBVEQsSUFBU0MsRUFBMkI7R0FuQk47SUFBQSxxQ0FpQm5DRixLQUVBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFNQUM7SUFIVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BR1ZBOzs7Ozs7OztZQU1BQyxRQUFPSixHQUFXQyxHQUFZLE9BQXZCRCxNQUFXQyxVQUEwQjtHQUhwQztJQUFBOzs7Ozs7Ozs7T0FHUkc7SUFkQUM7SUFFQUM7OzhEQUZBRCxPQUVBQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7R0NhVzs7Ozs7O0lBQVRDO0lBekNVLGFBeUNWQTtJQWtDRkM7SUFJQUM7Ozs7WUFxQ0VDLGM7WUFNQUMsSUFBSVgsR0FBRVksR0FBSSxPQUFOWixLQS9DTlEsU0FBQUEsU0ErQ21ELFdBQTNDSSxHQUFGWixHQUFrRDtZQUV0RGEsS0FBS2IsR0FBRVksR0FBSSxPQUFOWixLQWpEUFEsU0FBQUEsU0FpRDZDLFdBQXBDSSxHQUFGWixHQUF5QztZQUU5Q2MsS0FBS2QsR0FBSSxZQUFKQSxLQW5EUFEsZ0JBbUQ4QjtZQUU1Qk8sS0FBS2YsR0FBRVk7SUFBVyxlQUFiWixLQXJEUFE7aUJBcUR5QyxXQUFoQ0ksR0FBRlo7R0FBcUM7WUFFMUNnQixPQUFLaEIsR0FBRVksR0FBRUs7SUFBSSxPQUFSakIsS0F2RFBRLFNBdURxQyxXQUE1QkksUUFBc0MsV0FBcENLLEdBQUpqQjtHQUEyQztZQUVoRGtCLElBQUlsQixHQUFFWSxHQUFJLE9BQU5aLEtBekROUSxTQXlEa0MsV0FBMUJJLFFBQUZaLEVBQXVDO1lBRTNDbUIsT0FBT25CLEdBQ1QsS0FEU0EsR0F2RGUsT0FKeEJRLFlBOERPWSxNQUhFcEIsTUFHRyxPQUFMb0IsSUFBYTtZQUVsQkMsVUFBVXJCO0lBQUksT0FUZGdCLE9BU1VoQixtQkFBc0IsU0FBSSxZQUFPQSxHQUFLLFdBQUxBLEdBQVc7R0FBQztHQTVCbEI7OztPQXBDdkNRO09BeUNFRTtPQU1BQztPQUVBRTtPQUVBQztPQUVBQztPQUVBQztPQUVBRTtPQUVBQztPQUtBRTtZQVFBQyxjO1lBTUFDLE1BQUl2QixHQUFFWTtJQUFJLE9BQU5aLE1BMUVOUyxjQUFBQSxjQTBFb0UsV0FBNURHLEdBQUZaO0dBQW1FO1lBRXZFd0IsT0FBS3hCLEdBQUVZO0lBQUksT0FBTlosTUE1RVBTLGNBQUFBLGNBNEU4RCxXQUFyREcsR0FBRlo7R0FBMEQ7WUFFL0R5QixPQUFLekIsR0FBSSxZQUFKQSxNQTlFUFMscUJBOEUwQztZQUV4Q2lCLE9BQUsxQixHQUFFWTtJQUFXLGVBQWJaLE1BaEZQUztpQkFnRnFELFdBQTVDRyxHQUFGWjtHQUFpRDtZQUV0RDJCLE9BQUszQixHQUFFWSxHQUFFSztJQUFJLE9BQVJqQixNQWxGUFMsY0FrRmlELFdBQXhDRyxRQUFrRCxXQUFoREssR0FBSmpCO0dBQXVEO1lBRTVENEIsTUFBSTVCLEdBQUVZLEdBQUksT0FBTlosTUFwRk5TLGNBb0Y4QyxXQUF0Q0csUUFBRlosRUFBbUQ7WUFFdkQ2QixTQUFPN0I7SUFDVCxLQURTQSxHQXRGZSxPQUF4QlM7UUF5Rk9XLE1BSEVwQjtJQUdHLE9BQUxvQjtHQUFhO1lBRWxCVSxZQUFVOUI7SUFBSSxPQVRkMkIsT0FTVTNCLG1CQUFzQixTQUFJLFlBQU9BLEdBQUssV0FBTEEsR0FBVztHQUFDO0dBNUJaOzs7T0EvRDdDUztPQW9FRWE7T0FNQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FLQUM7WUFLRkMsT0FBTy9CLEdBQUVZLEdBQUVLO3dCQUE2QixPQUF6QixXQUFKQSxHQUFKakIsR0FBb0M7SUFBcEIsVUFBQSxXQUFkWSxHQUFGWjtJQUFzQixPQUFBO0dBQWU7WUFFNUNnQyxXQUFXaEMsR0FBRVksR0FBRUs7d0JBQXNDLE9BQWxDLFdBQUpBLEdBQUpqQixHQUE2QztJQUE3QixVQUFBLG1CQUFoQkEsR0FBRVk7SUFBNkIsT0FBQTtHQUFlO0dBb0NqRDtJQUFScUI7SUFFQUM7SUF3SEFDO0lBRUFDO0lBRUFDO0lBRUFDOztJQVNGQzs7SUFFQUM7O0lBNkVBQztZQUVBQyxZQUFZQyxHQUE2QixPQUZ6Q0Ysd0JBRVlFLEdBQXVEOzs7SUFFbkVDO0lBTUFDO0lBRUFDO1lBTUFDLFVBQVVuQyxHQUFFb0M7SUFBSSxPQUFKQTthQUFxQjt3QkFBb0JoRCxHQUFFaUQsWUFBVSxPQUFBLFdBQXZEckMsR0FBMkNaLEdBQWU7R0FBRTtZQUV0RWtELFdBQVd0QyxHQUFFb0M7SUFBSSxPQUFKQTthQUFxQjt3QkFBb0JoRCxHQUFFaUQsWUFBUyxPQUFBLFdBQXREckMsR0FBNkNxQyxLQUFGakQsR0FBa0I7R0FBRTtZQVUxRW1ELGU7WUFFQUMsa0I7R0ErTWU7O0lBL0ZmQzs7SUFtRkFDOztJQVlBQztJQUFlOztJQThDZkM7OztZQW5DRUMsVUFBUyxPQUFBLGtDQUE2QjtZQUV0Q0MsYUFBWSxPQUFBLHFDQUFnQztZQUU1Q0M7SUFDWSxVQUFBO0lBQUEsT0FBQTtHQUF3QztZQUVwREMsVUFBVUMsR0FBSSxPQUFBLHdCQUFKQSxjQUFvQztZQXdCaERDLGVBQWVELEdBQUksT0FBQSxrQkFBSkEsR0FBeUM7WUFFeERFLGdCQUFnQkYsR0FBSSxPQTFCbEJELFVBMEJjQyxHQUE0Qzt3QkFZNURHO1lBRUFDLFVBQVdDLEdBQ2IscUJBQUEsT0FBQSxjQURhQSxHQUNrRDtZQUU3REMsbUJBQW9CRDtJQUN0QjtJQUFBLE9BQUEsdUJBRHNCQTtHQUNrRDtZQUV0RUUsVUFBV0YsR0FDYixxQkFBQSxPQUFBLGNBRGFBLEdBQ2tEO1lBRTdERyxtQkFBb0JIO0lBQ3RCO0lBQUEsT0FBQSx1QkFEc0JBO0dBQ2tEO1lBRXRFSSxPQUFRSixHQUNWLHFCQUFBLE9BQUEsV0FEVUEsR0FDa0Q7WUFFMURLLFNBQVVMLEdBQ1oscUJBQUEsT0FBQSxhQURZQSxHQUNrRDtZQWtDNURNLE1BQU9DLEdBQ1QscUJBQUEsT0FBUSxVQURDQSxPQUM0RDtZQUVuRUMsU0FBVVI7SUFDWixxQkFBSVMsTUFBSSxhQURJVDtJQUVULE9BTERNLE1BSUVHLE9BQ1ksc0NBRFpBO0dBQ3NDO1lBRXhDQyxXQUFZVjtJQUNkLHFCQUFJUyxNQUFJLGVBRE1UO0lBRVgsT0FURE0sTUFRRUcsT0FDWSx3Q0FEWkE7R0FDd0M7O0lBR2xCLHVCQUVmO1FBRFFkO0lBQUssV0F2R3BCRCxVQXVHZUM7R0FDSDtHQUZoQjtnQkFNUUE7SUFBSixPQUFJQSxhQXpXTmpCOztrQkEwV3dELHdCQURsRGlCO0dBQ3lFO0dBRmpGO0dBQUEsU0FJRWdCLFVBQVdDLE9BQXFCOUU7SUFJZixVQUFBLCtCQUplQTs7O0tBTXpCO09BRkg7Y0FKNEJBO2dCQU9oQixzQkFQZ0JBOzs7ZUFBQUE7O0lBQ2xDLG9CQURhOEU7R0FRSDtZQUVSQyxTQUFPRCxPQUFNOUU7SUFBSSxPQVZqQjZFLFVBVTJCLGdDQUFwQkMsUUFBTTlFO0dBQThCO1lBRTNDZ0YsV0FBV0M7SUFDRixJQUFQQyxPQTNYRnhDLFlBMFhXdUM7V0FDVEM7YUFFRjt3QkFBcUJDLGlCQUEwQixPQWYvQ04sVUFlcUJNLEtBSFZGLElBR1VFLE1BQTREO0dBQUU7Ozs7O09BOUhqRnZCO09BUEFIO09BRUFDO09BRUFDOztPQStCRkg7OztxQjtxQjs7O09BL25CRWhEO3FCO09BSUFDO3FCOzs7T0FzSUF3QjtPQUVBQztPQTBIQUU7T0FGQUQ7T0FNQUc7T0FGQUQ7T0FXRkU7T0FFQUM7T0FBQUE7T0FBQUE7T0ErRUFFO09BRUFFO09BQUFBO09BTUFDO09BRUFDO09BTUFDO09BRUFHO09BVUFDO09BRUFDO09BZ0hBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW1GQUM7T0FZQUM7O09Bd0RBUztPQUVBQztPQUdBRTtPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQW1DQUM7T0FHQUU7T0FJQUU7T0FobUJFN0M7T0FFQUM7T0FzbkJGK0M7T0FFQUM7O09BakdBakI7T0FGQUQ7T0FJQU47Ozs7O0U7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztZQ3hzQkE0QjtJQUNGLElBQUlDLDBCQUNhQyxTQUFJYjtJQUNuQjtRQURtQkEsS0FEakJZLFFBT0csT0FBQSwyQkFOVUM7S0FHTztNQUFBLE1BQUEsY0FISGI7TUFHWCxRQUFBOztNQUVNO09BQUxaO09BTFUwQixNQUFBZDtPQUFKZSxZQUtOM0IsR0FMTXlCO09BQUFBLE1BQUFFO09BQUlmLElBQUFjOztNQUlQLElBSk9FLE1BQUFoQixXQUFBQSxJQUFBZ0I7O0dBUVI7O0lBdUJUQztJQUVBQztJQUVBQztJQUVBQztJQUVBQztJQUVBQztZQUVBQyxJQUFJQyxHQUFFQyxNQUFPLFFBQVRELElBQUVDLFVBQUFBLGFBQXlCO1lBRS9CQyxJQUFJbkcsR0FBRUMsR0FBSSxPQUFORCxJQUFFQyxFQUFXO0dBbkJHOzs7T0FLcEJ5RjtPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBRztPQUFBQTtZQTZDRkMsWUFBYUMsR0FBY0MsR0FBZEQsY0FBY0MsSUFBc0IsU0FBOEI7WUFFL0VDLFlBQWFGLEdBQWNDLEdBQWRELGNBQWNDLElBQXNCLFNBQThCO1lBRS9FRSxhQUFjSCxHQUFjQyxHQUFjM0QsR0FBNUIwRCxlQUFjQyxHQUFjM0QsSUFDckMsU0FBNkM7WUFFbEQ4RCxhQUFjSixHQUFjQyxHQUFjM0QsR0FBNUIwRCxlQUFjQyxHQUFjM0QsSUFDckMsU0FBaUQ7WUF5SHREK0QsU0FBU0M7SUFDWCxZQURXQTs7OztRQUVFLFdBRkZBOztRQUdJLFdBSEpBOzs7UUFJZSxXQUpmQTs7SUFLSixXQUxJQTtHQUtlO1lBR3RCQyxLQUFNQyxLQUFnQlo7SUFDeEIsT0FEUVksaUJBQWdCWjtjQUNFLDhCQURsQlk7O0dBQzJEO1lBRWpFQyxRQUFRakQsR0FBMEIsT0FIbEMrQyxLQUdRL0MsTUFBd0M7WUFFaERrRDtJQUNGLDZDQUVLO0lBREEsT0FBQTtHQUNPO1lBRVZDLEtBQUtuRCxHQUF1QixPQVY1QitDLEtBVUsvQyxNQUF1QztPQXlCOUNvRDtZQU1BQyxRQUFRdEc7SUFFUjs7T0FBQTtrQkFBeUJpRDtVQUVBLFVBQUEsOEJBRkFBO1VBRWIsR0FBQTtXQU9LLElBQU5zRCxNQUFNLFdBWFR2RyxHQUVpQmlEO21CQVNkc0QsVUFUY3REO1dBVVcsT0FEekJzRDs7VUFMSSxJQUFBLGFBQ0UsUUFBQSxXQVBUdkc7O1VBUTRCO1NBSzFCO0lBWFYsT0FBQTtHQVdZO1lBRVp3RyxhQUFheEc7SUFFYjs7T0FBQTtrQkFBOEJ5RyxRQUFLeEQ7VUFFVixVQUFBLDhCQUZVQTtVQUV2QixHQUFBO1dBT0ssSUFBTnNELE1BQU0sV0FYSnZHLEdBRWlCeUcsUUFBS3hEO21CQVN4QnNELFVBVHdCdEQ7V0FVQyxPQUR6QnNEOztVQUxJLElBQUEsYUFDRSxRQUFBLFdBUEp2RyxHQUVpQnlHOztVQU1NO1NBSzFCO0lBWFYsT0FBQTtHQVdZO1lBRVpDLGVBQWdCMUcsR0FBOEJ5RyxRQUFZRSxPQUM1RCxPQURrQjNHLE9BQThCeUcsUUFBWUUsT0FDVjtZQUVoREM7O0tBRThCLG9CQUFrQyxNQUFBLDBDQUFlO0tBQTFCLE9BQUE7SUFBMkI7SUFBaEY7S0FBQSxTQUFBOztJQUVDLG1DQU9FO0lBSEEsMEJBRUU7SUFEQTtLQUEwRCxNQUFBO0lBQVk7SUFBdkIsT0FBQTtHQUUzQztHQUVFLElBR1RDLHdDQUhTLFlBR1RBO1lBYUZDLDRCQUE2QkMsS0FBc0JDLEtBQUtDLFNBQVNDLE1BQU1DLFNBQVFDO0lBQ2pGLEdBQU8saUNBRHdCTDtLQVFTO01BQUE7TUFDbEM1RztpQkFBS2tGLEdBQUVyRixHQUNULEtBRE9xRixHQUVHLFlBQ0hnQyxJQUhBaEMsTUFHSyxPQUFBLFdBSEhyRixHQUdGcUgsR0FBUTtLQUhibEgsS0FUb0Q4Ryx1QkFjakMsMEJBQW1CO0tBTHRDOUcsS0FUNkQrRyxvQkFlN0MsdUJBQWdCO0tBTmhDL0csS0FUbUVnSCx1QkFnQmhELDBCQUFtQjtLQWhCYkoscUJBQXNCQyxLQUE0Qkk7S0FrQi9FLHVCQUFVLE9BbEJtQkwsd0JBQXNCQyxLQUE0QkksU0FrQmpCOztJQWZyRCxJQUFMRSxLQUFLLFlBSDBDTjtJQUluRCxTQUFJTyxTQUFTdEU7S0FBbUIsY0FKK0NtRSxHQUlsRW5FO0tBQW1CLDBCO0lBQVk7SUFKZjhELGdCQUd6Qk8sSUFDQUM7SUFFSix1QkFBVSxPQU5tQlIsZ0JBR3pCTyxJQUNBQyxVQUVtRDtHQVlPO1lBRTlEQyxpQkFBa0J2RSxHQUFzQitELEtBQUlJLEdBQUVLO0lBQ2hELE9BckJFWCw0QkFvQmtCN0QsR0FBc0IrRCxTQUFNUyxhQUFGTDtHQUNHO1lBRS9DTSxvQkFBb0JDLElBQUssT0FBQSxXQUFMQSxPQUFVO1lBRTlCQztJQUNGLEdBQUc7O0lBRXlDOztHQUFhO1lBRXZEQyxrQkFBbUJDLFNBQVNDLFlBQVlDLFFBQU9oQjtJQUNqRCxTQUFJaUIsU0FBU2pJO0ssWUFDRDtTQUNIWjtLQUFLLE9BQUEsV0FGRFksR0FFSlo7O0lBRUU7SUFKUDZJO2VBS1U3SSxHQUF1QixjQUF2QkEsNkJBQTZCLEdBTnRCMEk7SUFDakJHO2VBTVU3SSxHQUEwQixjQUExQkEsZ0NBQWdDLEdBUGhCMkk7SUFDMUJFO2VBT1U3STtPQUFzQixVQUFBLDhCQUF0QkE7O01BQTRCO01BUkE0STtxQ0FTdENFO0lBT0osV0FQSUEsT0FUNkNsQjtHQWdCM0I7Ozs7O09BdlJwQm5CO09BSEFEO09BRkFEO09BRkFIO09BNUZBaEI7T0E2TkFzQjtXQVdFSSxTQUVBQyxNQUtBQztPQXlCRkM7T0FNQUM7T0FlQUU7T0FlQUU7T0FHQUU7O09BNkJBRTtPQW9CQVU7T0FHQUU7T0FFQUU7T0FLQUM7OztFOzs7Ozs7Ozs7OztHOzs7Ozs7Ozs7SUN2V0FNOztJQTZEQUM7O0lBVUFDOztJQVVBQzs7SUFVQUM7O0lBVUFDOztJQVVBQzs7SUFVQUM7O0lBVUFDO1lBVUFDLElBQ0N4RyxHQUFFeUIsR0FBRWdGLEdBQUssT0FBQSwrQkFBVHpHLEdBQUV5QixHQUFFZ0YsR0FBb0M7O0lBRXpDdkk7SUFFQXdJOztJQThEQUM7WUFtQkVDLGVBQWVDO0lBQ0wsSUFBUkMsWUE3SkpiLFdBNEppQlk7SUFFakIsT0FBQSxxQkFESUM7R0FDZTs7OztPQXJPbkJmOzs7O09BNkRBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUdBdEk7T0FFQXdJO09BOERBQztPQUFBQTs7Ozs7O1dBbUJFQzs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0lDak9GRzs7Ozs7Ozs7Ozs7OztZQUtJQyxXQUFXcEo7OzttQkFDVDtLQUVFLElBREhxSixnQkFBTFIsZ0JBQ1EsUUFBQSxXQUhPN0ksR0FFZjZJO21CQUdTUyxnQkFBTSxXQUFOQSxLQUxMRixXQUFXcEosR0FFVnFKO21CQUFBQTs7O1lBd0JMRSxTQUFVQyxhQUFhQyxTQUFRckg7SUFsQmpDO09Ba0J5QnFIOzRCQUFBQTs7O0lBWnJCO0tBQUEsd0JBWVFEO0tBbEJSRTtPQVJFTjs7VUFVRixJQUFZUCxjQUFOaEc7VUFDSixLQURVZ0csR0FFQTtjQUNIUyxNQUhHVDtVQUdFLGVBSFJoRyxNQUdrQyx3QkFBL0J5RztTQUEyQzs7S0FjcERLO09BbkJBRDtVQWdCRyx1QkFBVyw2QkFoQmRBOztJQW9CSixXQWpDRVAsWUFpQ2lCLDJCQUZjL0csSUFDN0J1SDtHQUNnQztZQUVsQ0MsaUJBQWtCSixhQUFhQyxTQUFRbkc7SUFDekMsT0FMRWlHLFNBSWtCQyxhQUFhQyxhQUNDLHdCQURPbkc7R0FDSTtZQUUzQ3VHLGNBQWVMLGFBQWFDLFNBQVFLOztLQUdsQzsrQkFJZXhHLGNBQUssT0FBTEE7O2dDQUhFbEIsY0FBSyxPQUFMQTtVQUNJMkg7TUFBSyxPQUFMQTs7O1VBQ1RoRztNQUFtQixPQUFBLHdCQUFuQkE7O1NBRUZzRDtLQUFLLE9BQUxBO0lBQXFCO0lBTmpDLElBREUyQyxNQUNGLGlDQUZvQ0Y7SUFXUCxPQWxCN0JQLFNBT2VDLGFBQWFDLFNBV0MsNkJBVjNCTztHQVU0QztZQWlCOUNDO0lBRUksWUFBQTtrQkFLQ3BILGlCQUFRLE9BQVJBO0lBSEcsY0FBQTs7S0FDSSxPQUFBO1FBQ0hxSDtJQUFRLE9BQVJBO0dBQ1E7bUNBSWpCQztZQUtFQyxTQUFVbkg7SUFDWixPQURZQSxhQUxaa0g7Y0FPSyw4QkFGT2xIOztHQUdBO1lBRVZvSCxLQUFNcEg7SUFDUixPQURRQSxhQXZGUmtHO2NBd0ZpQyw4QkFEekJsRzs7R0FDeUU7WUFFL0VxSCxPQUFRckg7SUFDVixjQURVQTtjQUVMLDhCQUZLQTs7R0FHRTtZQUVWa0YsWUFBYWxGO0lBQ2YsT0FEZUE7Y0FFViw4QkFGVUE7O0dBR0g7R0FpRUU7SUFBWnNILFlBQVk7SUFFWkMsV0FBVztJQUVYQyxRQUFRO0lBRVJDLFFBQVE7SUFFUkMsT0FBTztJQUVQQyxVQUFVO0lBYkssa0JBR2ZMLFdBRUFDLFVBRUFDLE9BRUFDLE9BRUFDLE1BRUFDOztJQUdGQztJQUVBckQ7OztPQS9JQW9DO09BR0FDO1dBNENFTyxVQUtBQyxvQixjQUdBQyxRQUtBbkM7O09BN0JGOEI7T0E4R0FZO09BRUFyRDs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDM0xPOzs7Ozs7Ozs7O0lBQVBzRCxPQUFrQjtJQWd1QmxCekU7SUFFQUM7SUFFQUU7SUFFQUU7SUFLRXFFLFFBQVE7SUFFUkMsT0FBTztJQUVQQyxNQUFNO0lBRU5DLFFBQVE7SUFFUkMsV0FBVztJQUVYQyxZQUFZO0lBRVpDLFVBQVU7SUFFVkMsWUFBWTtJQUVaQyxZQUFZO0lBRVpDLFdBQVc7SUFFWEMsV0FBVztJQUVYQyxVQUFVO0lBRVZDLFFBQVE7SUFFUkMsYUFBYTtJQUViQyxRQUFRO0lBRVJDLGlCQUFrQjtJQUVsQkMsYUFBYTtJQUViQyxZQUFZO0lBRVpDLFdBQVc7SUFFWEMsY0FBYztJQUVkQyxZQUFZO0lBRVpDLFVBQVU7SUFFVkMsWUFBWTtJQUVaQyxXQUFXO0lBRVhDLFlBQVk7SUFFWkMsT0FBTztJQUVQQyxPQUFPO0lBRVBDLGFBQWE7SUFFYkMsU0FBUztJQUVUQyxRQUFRO0lBRVJDLGFBQWE7SUFFYkMsU0FBUztJQUVUQyxTQUFTO0lBRVRDLFFBQVE7SUFFUkMsT0FBTztJQUVQdEMsT0FBTztJQUVQdUMsU0FBUztJQUVUQyxlQUFlO0lBRWZDLFNBQVM7SUFFVEM7TUFBb0I7SUFFcEJDLFdBQVc7SUFFWDVDLFFBQVE7SUFFUkQsUUFBUTtJQUVSOEMsU0FBUztJQUVUQyxTQUFTO0lBRVRDLFVBQVU7SUFFVkMsV0FBVztJQUVYQyxXQUFXO0lBRVhDLGNBQWM7SUFFZHBELFdBQVc7SUFFWHFELGNBQWM7SUFFZEMsU0FBUztJQUVUQyxXQUFXO0lBRVhDLG1CQUFtQjtJQUVuQkMsaUJBQWlCO0lBRWpCQyxlQUFlO0lBRWZDO01BQXFCO0lBRXJCQyxrQkFBa0I7SUFFbEJDLGdCQUFnQjtJQUVoQkMsa0JBQWtCO0lBRWxCQyxnQkFBZ0I7SUFFaEJDLG1CQUFtQjtJQUVuQkMsVUFBVTtJQUVWQyxpQkFBaUI7SUFFakJDLGlCQUFpQjtJQUVqQkMsVUFBVTtJQUVWQyxRQUFRO0lBRVJDO01BQW9CO0lBRXBCQyxhQUFhO0lBRWJDLGlCQUFpQjtJQUVqQnpFLFlBQVk7SUFFWjBFO01BQXFCO0lBRXJCbk0sVUFBVTtJQUVWb00sUUFBUTtJQUVSQyxPQUFPO0lBRVBDLFVBQVU7SUFFVkMsZUFBZTtJQUVmQyxnQkFBZ0I7SUFFaEJDLGNBQWM7SUFFZEMsZUFBZTtJQUVmQyxjQUFjO0lBRWRDLGFBQWE7SUFFYkMsY0FBYztJQUVkQyxZQUFZO0lBRVpDLGFBQWE7SUFFYkMsU0FBUztJQUVUQyxVQUFVO0lBRVZDLFVBQVU7SUFFVkMsVUFBVTtJQUVWQyxlQUFlO0lBRWZDLFVBQVU7SUFFVnRKO0lBS0ZXO0lBRUFWO0lBRUFZO0lBRUFHO0lBK3ZCQXVJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQStaQUM7SUFDRixjQVdPdE8sR0FBSyxPQUFMQSxFQUFNOztLQVJUO0tBRzRCLG1EQUN2QjtLQUVVLElBQVR1TyxTQUFTO0tBQ1YseUJBRENBLCtCQUFBQTtJQUM2RTtJQUNyRixPQUFBO0dBQVk7T0F3TVpDLDJDQUFBQTtZQU1BQyxlQUFlN0k7SUFDakIsY0FHTzhJLE9BQVMsT0FBVEEsTUFBYzt5QkFEUixNQUFBLDBDQUFlO0lBRDFCLFdBQUEsd0JBQTBCLHdCQUZYOUk7SUFJZixPQUFBO0dBQW9CO1lBRXBCK0ksbUJBQW1CL0k7SUFDckIsY0FHTzhJLE9BQVMsT0FBVEEsTUFBYzs7S0FEQyxXQUFBLGtDQUhEOUk7S0FHQyxPQUFBO0lBQXNEO0lBRDFFLFdBQUEsd0JBQTBCLHdCQUZQQTtJQUluQixPQUFBO0dBQW9CO1lBRXBCZ0osbUJBQW1CaEo7SUFBc0IsV0FBQSx3QkFBMEIsd0JBQWhEQTtJQUFzQixPQUFBO0dBQXlDO1lBRWxGaUosc0JBQXNCakosSUFBR3hHO2tCQUlwQjhCO0tBQXNCLFdBQUEsV0FKRjlCLFFBSXBCOEI7S0FBc0IsT0FBQTtJQUFVO3lCQUQxQixTQUFJO0lBRGYsV0FBQSx3QkFBMEIsd0JBRkowRTtJQUl0QixPQUFBO0dBQXNDO1lBZ0V0Q00sU0FBUzdJLEdBQUVZO0lBQ2IsS0FEV1osR0FFRDtRQUNIeUosSUFISXpKO0lBR0MsT0FBQSxXQUhDWSxHQUdONkk7R0FBUTtZQUViZ0ksY0FBZUMsS0FBa0JqTztJQUFPLE9BQXpCaU8sa0JBQTRDLHdCQUExQmpPO0dBQTBDO1lBRTNFa08sb0JBQW9CRCxLQUFJak8sTUFBTyxPQUYvQmdPLGNBRW9CQyxLQUFJak8sTUFBZ0Q7R0FFbEQsSUFBdEJtTztZQUVJQyxzQkFBdUJDLE1BQU9yTyxNQUFLaU8sS0FBSUs7SUFDN0M7Y0FENkJELGNBQU9yTyxNQUUvQixPQVJIZ08sY0FNdUNDLEtBQUlLO2dCQUYzQ0g7OztXQWFRNU87T0FBQUEsWUFDOEIsd0JBWksrTztPQVgzQ2xKO1NBVzJCaUo7a0JBYUg3TDtVQUZoQmpELGtCQUd5QyxvQkFEekJpRDtVQUNUO1NBQW1FO09BekJsRjRDO1NBV2tDcEY7a0JBZVg2QztVQUpmdEQsa0JBS3lDLG9CQUQxQnNEO1VBQ1I7U0FBbUU7T0FMMUV0RDtjQVgrQjBPLGtCQVcvQjFPOztNQUx1QixVQVovQnlPLGNBTXVDQyxLQUFJSztNQVgzQ2xKLFNBVzJCaUosb0JBT0Usc0JBQWdCO01BbEI3Q2pKLFNBV2tDcEYsb0JBUU4sc0JBQWU7TUFBdkM7O0tBWUE7TUFJVztPQUFBLE1BQUE7T0FFSixPQUFVO09BQVY7Ozs7O0tBNUJYbU87O0dBaUM4QztZQUU5Q0ksV0FBV04sS0FBc0IsT0FyQ2pDQyxvQkFxQ1dELGVBQW9EO1lBRS9ETyxXQUFXUCxLQUFzQixPQXZDakNDLG9CQXVDV0QsZUFBb0Q7WUFFL0RRLFdBQVdSLEtBQXNCLE9BekNqQ0Msb0JBeUNXRCxlQUFvRDtZQUUvRFMsWUFBWVQsS0FBdUIsT0EzQ25DQyxvQkEyQ1lELGdCQUFzRDtZQUVsRVUsV0FBV1YsS0FBc0IsT0E3Q2pDQyxvQkE2Q1dELGVBQW9EO1lBRS9EVyxXQUFXWCxLQUFzQixPQS9DakNDLG9CQStDV0QsZUFBb0Q7WUFFL0RZLFlBQVlaLEtBQXVCLE9BakRuQ0Msb0JBaURZRCxnQkFBc0Q7WUFFbEVhLFdBQVdiLEtBQXNCLE9BbkRqQ0Msb0JBbURXRCxlQUFvRDtZQUUvRGMsV0FBV2QsS0FBc0IsT0FyRGpDQyxvQkFxRFdELGVBQW9EO1lBRS9EZSxlQUFlZjtJQUEwQixPQXZEekNDLG9CQXVEZUQ7R0FBNEQ7WUFFM0VnQixhQUFhaEIsS0FBd0IsT0F6RHJDQyxvQkF5RGFELGlCQUF3RDtZQUVyRWlCLGFBQWNiLE1BQU9yTyxNQUFLaU87SUFDNUIsT0F4RE1HLHNCQXVEVUMsTUFBT3JPLE1BQUtpTztHQUNtQjtZQUU3Q2tCLFlBQWFkLE1BQU9yTyxNQUFLaU87SUFDM0IsT0EzRE1HLHNCQTBEU0MsTUFBT3JPLE1BQUtpTztHQUNtQjtZQUU1Q21CLGVBQWdCZixNQUFPck8sTUFBS2lPO0lBQzlCLE9BOURNRyxzQkE2RFlDLE1BQU9yTyxNQUFLaU87R0FDbUI7WUFFL0NvQixhQUFjaEIsTUFBT3JPLE1BQUtpTztJQUM1QixPQWpFTUcsc0JBZ0VVQyxNQUFPck8sTUFBS2lPO0dBQ21CO1lBRTdDcUIsWUFBWXJCLEtBQXVCLE9BdkVuQ0Msb0JBdUVZRCxnQkFBc0Q7WUFFbEVzQixlQUFldEI7SUFBMEIsT0F6RXpDQyxvQkF5RWVEO0dBQTREO1lBRTNFdUIsYUFBYXZCLEtBQXdCLE9BM0VyQ0Msb0JBMkVhRCxpQkFBd0Q7WUFFckV3QixTQUFTeEIsS0FBdUIsT0E3RWhDQyxvQkE2RVNELGFBQW1EO1lBRTVEeUIsU0FBU3pCLEtBQXVCLE9BL0VoQ0Msb0JBK0VTRCxhQUFtRDtZQUU1RDBCLFNBQVMxQixLQUF1QixPQWpGaENDLG9CQWlGU0QsYUFBbUQ7WUFFNUQyQixTQUFTM0IsS0FBb0IsT0FuRjdCQyxvQkFtRlNELGFBQWdEO1lBRXpENEIsVUFBVTVCLEtBQXFCLE9BckYvQkMsb0JBcUZVRCxjQUFrRDtZQUU1RDZCLFlBQVk3QixLQUF1QixPQXZGbkNDLG9CQXVGWUQsZ0JBQXNEO1lBRWxFOEIsUUFBUTlCLEtBQTJCLE9BekZuQ0Msb0JBeUZRRCxZQUFzRDtZQUU5RCtCLFNBQVMvQixLQUF5QixPQTNGbENDLG9CQTJGU0QsYUFBcUQ7WUFFOURnQyxTQUFTaEMsS0FBeUIsT0E3RmxDQyxvQkE2RlNELGFBQXFEO1lBRTlEaUMsU0FBU2pDLEtBQXlCLE9BL0ZsQ0Msb0JBK0ZTRCxhQUFxRDtZQUU5RGtDLFNBQVNsQyxLQUF5QixPQWpHbENDLG9CQWlHU0QsYUFBcUQ7WUFFOURtQyxTQUFTbkMsS0FBeUIsT0FuR2xDQyxvQkFtR1NELGFBQXFEO1lBRTlEb0MsU0FBU3BDLEtBQXlCLE9BckdsQ0Msb0JBcUdTRCxhQUFxRDtZQUU5RHFDLFFBQVFyQyxLQUF1QixPQXZHL0JDLG9CQXVHUUQsWUFBa0Q7WUFFMURzQyxpQkFBaUJ0QztJQUF1QixPQXpHeENDLG9CQXlHaUJEO0dBQTJEO1lBRTVFdUMsVUFBVXZDLEtBQXFCLE9BM0cvQkMsb0JBMkdVRCxjQUFrRDtZQUU1RHdDLFNBQVN4QyxLQUFvQixPQTdHN0JDLG9CQTZHU0QsYUFBZ0Q7WUFFekR5QyxTQUFTekMsS0FBb0IsT0EvRzdCQyxvQkErR1NELGFBQWdEO1lBRXpEMEMsVUFBVTFDLEtBQXFCLE9BakgvQkMsb0JBaUhVRCxjQUFrRDtZQUU1RDJDLFVBQVUzQyxLQUFxQixPQW5IL0JDLG9CQW1IVUQsY0FBa0Q7WUFFNUQ0QyxRQUFRNUMsS0FBd0IsT0FySGhDQyxvQkFxSFFELFlBQW1EO1lBRTNENkMsVUFBVTdDLEtBQXVCLE9BdkhqQ0Msb0JBdUhVRCxjQUFvRDtZQUU5RDhDLGFBQWE5QyxLQUF3QixPQXpIckNDLG9CQXlIYUQsaUJBQXdEO1lBRXJFK0MsWUFBWS9DLEtBQXVCLE9BM0huQ0Msb0JBMkhZRCxnQkFBc0Q7WUFFbEVnRCxVQUFVaEQsS0FBcUIsT0E3SC9CQyxvQkE2SFVELGNBQWtEO1lBRTVEaUQsV0FBV2pELEtBQXNCLE9BL0hqQ0Msb0JBK0hXRCxlQUFvRDtZQUUvRGtELGFBQWFsRCxLQUF3QixPQWpJckNDLG9CQWlJYUQsaUJBQXdEO1lBRXJFbUQsWUFBWW5ELEtBQXVCLE9BbkluQ0Msb0JBbUlZRCxnQkFBc0Q7WUFFbEVvRCxjQUFjcEQsS0FBOEIsT0FySTVDQyxvQkFxSWNELGtCQUErRDtZQUU3RXFELFVBQVVyRCxLQUEwQixPQXZJcENDLG9CQXVJVUQsY0FBdUQ7WUFFakVzRCxlQUFldEQ7SUFBMEIsT0F6SXpDQyxvQkF5SWVEO0dBQTREO1lBRTNFdUQsWUFBWXZELEtBQThCLE9BM0kxQ0Msb0JBMklZRCxnQkFBNkQ7WUFFekV3RCxZQUFZeEQsS0FBOEIsT0E3STFDQyxvQkE2SVlELGdCQUE2RDtZQUV6RXlELFlBQVl6RCxLQUE4QixPQS9JMUNDLG9CQStJWUQsZ0JBQTZEO1lBRXpFMEQsU0FBUzFELEtBQTBCLE9BakpuQ0Msb0JBaUpTRCxhQUFzRDtZQUUvRDJELFNBQVMzRCxLQUEyQixPQW5KcENDLG9CQW1KU0QsYUFBdUQ7WUFFaEU0RCxTQUFTNUQsS0FBMkIsT0FySnBDQyxvQkFxSlNELGFBQXVEO1lBRWhFNkQsVUFBVTdELEtBQU0sT0F6SmhCRCxjQXlKVUMsY0FBNkI7WUFFdkM4RCxVQUFVOUQsS0FBTSxPQTNKaEJELGNBMkpVQyxjQUE2QjtZQUV2QytELFdBQVcvRCxLQUFNLE9BN0pqQkQsY0E2SldDLGVBQThCO1lBRXpDZ0UsU0FBU2hFLEtBQU0sT0EvSmZELGNBK0pTQyxhQUE0QjtZQUVyQ2lFLFFBQVFqRSxLQUFNLE9BaktkRCxjQWlLUUMsWUFBMkI7WUFFbkNrRSxRQUFRbEUsS0FBTSxPQW5LZEQsY0FtS1FDLFlBQTJCO1lBRW5DbUUsVUFBVW5FLEtBQU0sT0FyS2hCRCxjQXFLVUMsY0FBNkI7WUFFdkNvRSxZQUFZcEUsS0FBTSxPQXZLbEJELGNBdUtZQyxnQkFBK0I7WUFFM0NxRSxTQUFTckUsS0FBTSxPQXpLZkQsY0F5S1NDLGFBQTRCO1lBRXJDc0UsYUFBYXRFLEtBQU0sT0EzS25CRCxjQTJLYUMsaUJBQWdDO1lBRTdDdUUsV0FBV3ZFLEtBQU0sT0E3S2pCRCxjQTZLV0MsZUFBOEI7WUFFekN3RSxVQUFVeEUsS0FBTSxPQS9LaEJELGNBK0tVQyxjQUE2QjtZQUV2Q3lFLFdBQVd6RSxLQUFNLE9BakxqQkQsY0FpTFdDLGVBQThCO1lBRXpDMEUsV0FBVzFFLEtBQU0sT0FuTGpCRCxjQW1MV0MsZUFBOEI7WUFFekMyRSxVQUFVM0UsS0FBTSxPQXJMaEJELGNBcUxVQyxjQUE2QjtZQUV2QzRFLFVBQVU1RSxLQUFNLE9BdkxoQkQsY0F1TFVDLGNBQTZCO1lBRXZDNkUsV0FBVzdFLEtBQU0sT0F6TGpCRCxjQXlMV0MsZUFBOEI7WUFFekM4RSxTQUFTOUUsS0FBTSxPQTNMZkQsY0EyTFNDLGFBQTRCO1lBRXJDK0UsU0FBUy9FLEtBQU0sT0E3TGZELGNBNkxTQyxhQUE0QjtZQUVyQ2dGLGVBQWVoRixLQUFNLE9BL0xyQkQsY0ErTGVDLG1CQUFrQztZQUVqRGlGLGNBQWNqRixLQUFNLE9Bak1wQkQsY0FpTWNDLGtCQUFpQztZQUUvQ2tGLGVBQWVsRjtJQUEwQixPQWpNekNDLG9CQWlNZUQ7R0FBNEQ7WUFFM0VtRixZQUFZbkYsS0FBdUIsT0FuTW5DQyxvQkFtTVlELGdCQUFzRDtZQUVsRW9GLGFBQWFwRixLQUF3QixPQXJNckNDLG9CQXFNYUQsaUJBQXdEO1lBRXJFcUYsWUFBWXJGLEtBQXVCLE9Bdk1uQ0Msb0JBdU1ZRCxnQkFBc0Q7WUFFbEVzRixZQUFZdEYsS0FBdUIsT0F6TW5DQyxvQkF5TVlELGdCQUFzRDtHQUV0RTs7O1lBRUl1RixhQUFhdkY7SUFDUCxVQTlNTkMsb0JBNk1hRDtXQUVSO0tBQStCLE1BQUE7SUFDdEM7R0FBQztHQU13Qjs7SUFKdkJ3RjtJQUl1QixNQUFBLDhCQUp2QkE7SUFHRXBRO01BQ0s7O1NBU0RqRDtTQUNKLE9BRElBLGFBYk5xVDttQkFjdUMsOEJBRGpDclQ7O1FBQzBFOztTQU4xRXNUO1NBQ21CLFdBQUEsOEJBRG5CQTtTQUNHLE9BQUE7bUJBRUYsOEJBSERBOztRQUc2QjtZQUtqQ0MsYUFBYUMsS0FBS0M7SUFDcEIsT0FEb0JBLDZCQUNrQix3QkFEdkJEO2NBRVYsOEJBRmVDOztHQUdSO1lBRVZ0VSxFQUFFYSxHQUFJLE9BTE51VCxzQkFLRXZULEdBQXNCO1lBRXhCMFQsS0FBSzFULEdBQUksT0FQVHVULHlCQU9LdlQsR0FBeUI7WUFFOUIyVCxLQUFLM1QsR0FBSSxPQVRUdVQseUJBU0t2VCxHQUF5QjtZQUU5QjRULFdBQVc1VCxHQUFJLE9BWGZ1VCwrQkFXV3ZULEdBQStCO1lBRTFDNlQsS0FBSzdULEdBQUksT0FiVHVULHlCQWFLdlQsR0FBeUI7WUFFOUI4VCxHQUFHOVQsR0FBSSxPQWZQdVQsdUJBZUd2VCxHQUF1QjtZQUUxQitULE9BQU8vVCxHQUFJLE9BakJYdVQsMkJBaUJPdlQsR0FBMkI7WUFFbENnVSxPQUFPaFUsR0FBSSxPQW5CWHVULDJCQW1CT3ZULEdBQTJCO1lBRWxDaVUsUUFBUWpVLEdBQUksT0FyQlp1VCw0QkFxQlF2VCxHQUE0QjtZQUVwQ2tVLElBQUlsVSxHQUFJLE9BdkJSdVQsd0JBdUJJdlQsR0FBd0I7WUFFNUJtVSxTQUFTblUsR0FBSSxPQXpCYnVULDZCQXlCU3ZULEdBQTZCO1lBRXRDb1UsSUFBSXBVLEdBQUksT0EzQlJ1VCx3QkEyQkl2VCxHQUF3QjtZQUU1QnFVLElBQUlyVSxHQUFJLE9BN0JSdVQsd0JBNkJJdlQsR0FBd0I7WUFFNUJzVSxHQUFHdFUsR0FBSSxPQS9CUHVULHVCQStCR3ZULEdBQXVCO1lBRTFCdVUsU0FBU3ZVLEdBQUksT0FqQ2J1VCw2QkFpQ1N2VCxHQUE2QjtZQUV0Q3dVLE1BQU14VSxHQUFJLE9BbkNWdVQsMEJBbUNNdlQsR0FBMEI7WUFFaEN5VSxLQUFLelUsR0FBSSxPQXJDVHVULHlCQXFDS3ZULEdBQXlCO1lBRTlCMFUsU0FBUzFVLEdBQUksT0F2Q2J1VCw2QkF1Q1N2VCxHQUE2QjtZQUV0QzJVLE1BQU0zVSxHQUFJLE9BekNWdVQsMEJBeUNNdlQsR0FBMEI7WUFFaEM0VSxHQUFHNVUsR0FBSSxPQTNDUHVULHVCQTJDR3ZULEdBQXVCO1lBRTFCNlUsR0FBRzdVLEdBQUksT0E3Q1B1VCx1QkE2Q0d2VCxHQUF1QjtZQUUxQjhVLEdBQUc5VSxHQUFJLE9BL0NQdVQsdUJBK0NHdlQsR0FBdUI7WUFFMUIrVSxHQUFHL1UsR0FBSSxPQWpEUHVULHVCQWlER3ZULEdBQXVCO1lBRTFCZ1YsR0FBR2hWLEdBQUksT0FuRFB1VCx1QkFtREd2VCxHQUF1QjtZQUUxQmlWLEdBQUdqVixHQUFJLE9BckRQdVQsdUJBcURHdlQsR0FBdUI7WUFFMUJrVixLQUFLbFYsR0FBSSxPQXZEVHVULHlCQXVES3ZULEdBQXlCO1lBRTlCbVYsR0FBR25WLEdBQUksT0F6RFB1VCx1QkF5REd2VCxHQUF1QjtZQUUxQm9WLEtBQUtwVixHQUFJLE9BM0RUdVQseUJBMkRLdlQsR0FBeUI7WUFFOUJxVixPQUFPclYsR0FBSSxPQTdEWHVULDJCQTZET3ZULEdBQTJCO1lBRWxDc1YsSUFBSXRWLEdBQUksT0EvRFJ1VCx3QkErREl2VCxHQUF3QjtZQUU1QnVWLFFBQU12VixHQUFJLE9BakVWdVQsMEJBaUVNdlQsR0FBMEI7WUFFaEN3VixJQUFJeFYsR0FBSSxPQW5FUnVULHdCQW1FSXZULEdBQXdCO1lBRTVCeVYsTUFBTXpWLEdBQUksT0FyRVZ1VCwwQkFxRU12VCxHQUEwQjtZQUVoQzBWLE9BQU8xVixHQUFJLE9BdkVYdVQsMkJBdUVPdlQsR0FBMkI7WUFFbEMyVixHQUFHM1YsR0FBSSxPQXpFUHVULHVCQXlFR3ZULEdBQXVCO1lBRTFCNFYsS0FBSzVWLEdBQUksT0EzRVR1VCx5QkEyRUt2VCxHQUF5QjtZQUU5QmxELElBQUlrRCxHQUFJLE9BN0VSdVQsd0JBNkVJdlQsR0FBd0I7WUFFNUI2VixLQUFLN1YsR0FBSSxPQS9FVHVULHlCQStFS3ZULEdBQXlCO1lBRTlCOFYsT0FBUTlWLEdBQUksT0FqRlp1VCwyQkFpRlF2VCxHQUEyQjtZQUVuQytWLEdBQUcvVixHQUFJLE9BbkZQdVQsdUJBbUZHdlQsR0FBdUI7WUFFMUJnVyxTQUFTaFcsR0FBSSxPQXJGYnVULDZCQXFGU3ZULEdBQTZCO1lBRXRDMUMsT0FBTzBDLEdBQUksT0F2Rlh1VCwyQkF1Rk92VCxHQUEyQjtZQUVsQ3dDLEVBQUV4QyxHQUFJLE9BekZOdVQsc0JBeUZFdlQsR0FBc0I7WUFJeEJpVyxJQUFJalcsR0FBSSxPQTdGUnVULHdCQTZGSXZULEdBQXdCO1lBRTVCb0csRUFBRXBHLEdBQUksT0EvRk51VCxzQkErRkV2VCxHQUFzQjtZQUV4QmtXLE9BQU9sVyxHQUFJLE9BakdYdVQsMkJBaUdPdlQsR0FBMkI7WUFFbENtVyxTQUFPblcsR0FBSSxPQW5HWHVULDJCQW1HT3ZULEdBQTJCO1lBRWxDb1csTUFBTXBXLEdBQUksT0FyR1Z1VCwwQkFxR012VCxHQUEwQjtZQUVoQ3FXLE1BQU1yVyxHQUFJLE9BdkdWdVQsMEJBdUdNdlQsR0FBMEI7WUFFaENzVyxNQUFNdFcsR0FBSSxPQXpHVnVULDBCQXlHTXZULEdBQTBCO1lBRWhDdVcsR0FBR3ZXLEdBQUksT0EzR1B1VCx1QkEyR0d2VCxHQUF1QjtZQUUxQndXLFNBQVN4VyxHQUFJLE9BN0didVQsNkJBNkdTdlQsR0FBNkI7WUFFdEN5VyxNQUFNelcsR0FBSSxPQS9HVnVULDBCQStHTXZULEdBQTBCO1lBRWhDMFcsR0FBRzFXLEdBQUksT0FqSFB1VCx1QkFpSEd2VCxHQUF1QjtZQUUxQjJXLE1BQU0zVyxHQUFJLE9BbkhWdVQsMEJBbUhNdlQsR0FBMEI7WUFFaEM0VyxNQUFNNVcsR0FBSSxPQXJIVnVULDBCQXFITXZULEdBQTBCO1lBRWhDNlcsR0FBRzdXLEdBQUksT0F2SFB1VCx1QkF1SEd2VCxHQUF1QjtZQUUxQjhXLEdBQUc5VyxHQUFJLE9BekhQdVQsdUJBeUhHdlQsR0FBdUI7WUFFMUIrVyxNQUFNL1csR0FBSSxPQTNIVnVULDBCQTJITXZULEdBQTBCO1lBRWhDZ1gsTUFBTWhYLEdBQUksT0E3SFZ1VCwwQkE2SE12VCxHQUEwQjtZQUVoQ2lYLGtCQUFrQmhTLFFBQVFaO0lBQ1YsV0FBQSw4QkFERVk7SUFDYyxHQUEvQiwwQ0FEeUJaLGNBQVJZO0tBRWYsT0FBQSw4QkFGdUJaO0lBR3ZCO0dBQU87WUFFVjZTLFdBQVc3UztJQUFLO0lBQUEsT0FMaEI0UyxrQ0FLVzVTO0dBQXdEO1lBRW5FOFMsY0FBYzlTO0lBQUs7SUFBQSxPQVBuQjRTLHFDQU9jNVM7R0FBMkQ7WUFFekUrUyxXQUFXL1M7SUFBSztJQUFBLE9BVGhCNFMsa0NBU1c1UztHQUF3RDtZQUVuRWdULGlCQUFpQmhUO0lBQUs7SUFBQSxPQVh0QjRTLHdDQVdpQjVTO0dBQThEO1lBRS9FaVQsY0FBY2pUO0lBQUs7SUFBQSxPQWJuQjRTLHFDQWFjNVM7R0FBMkQ7WUFFekVrVCxhQUFhbFQ7SUFBSztJQUFBLE9BZmxCNFMsb0NBZWE1UztHQUEwRDtZQW5EdkVtVCxNQUFNeFgsR0FBSSxPQTNGVnVULDBCQTJGTXZULEdBQTBCO09Bd0RsQzJEO1lBRUE4VDs7S0FFUSxZQUFBOztNQUVVOzs7VUFBb0MsTUFBQTtTQUFZO01BQXZCLE9BQUE7O29EQUNsQztLQUZVO01BQXNDLE1BQUE7S0FBWTtLQUF2QixPQUFBO0lBRTlCO0lBSlcsT0FBQTtHQUlWO1lBRWpCQztJQUNGO0lBRUE7OztHQUNxRDtZQUVuREM7aUJBSUt4YjtrQkFBcUVDLEdBQUssV0FBMUVELEdBQXFFQyxHQUFTOzBCQUF4QyxPQVYzQ3NiLDJCQVVtRTtLQUFFLE9BQUE7SUFBZTt3QkFEekUsT0FUWEEsMkJBU21DO0lBQ25DLE9BQUE7R0FBcUY7WUFFckZFLHNCQUF1QjVYO0lBQ3pCO0tBQVEsTUFEaUJBOzs7SUFJekI7OztHQUN3RTtZQUV0RTZYO0lBQ0Y7SUFFQTs7O0dBQTBFO1lBRXhFQztJQUNGLGFBUU8zYixHQUFLLE9BQUxBLEVBQU07O0tBTEg7Ozs7U0FDQzs7U0FDQTs7aUJBQ0E7O0tBQ0E7SUFBUztJQUNsQixPQUFBO0dBQVk7WUFFWjRiLCtCQUFzQy9YLEdBQUdnRSxTQUFTQyxNQUFNQyxTQUFRQztJQUNsRSxPQU1FO2FBNzNEQU47YUFzM0RzQzdEO2FBdmhFcEM0STthQXVoRXVDNUU7YUFBU0M7YUFBTUM7YUFPeEQ7ZUFua0VBYjs7b0NBb2tFcUQsU0FBQzs7aUJBQTdDMlU7O21CQUFNOzs7O29DQUNzQyxzQkFBYzs7aUJBQTFEQzs7bUJBQU07Ozs7Z0JBQ1YsT0FBQSxXQVYyRDlULFFBUXZENlQsSUFDQUM7ZUFDeUI7R0FBRTtZQUVwQ0MsMkJBQTJCbFksR0FBRW1FLEdBQUVLO0lBQ2pDLE9BYkV1VCwrQkFZMkIvWCxPQUFJd0UsYUFBRkw7R0FDd0I7WUE4WnBDZ1UsU0E3UU52UztJQUNYO0tBQU0sUUFBQSx3QkFES0E7Ozt1QkFVQzs7O3dCQXNFRzs7O3lCQTZCRDs7OzBCQVRJO21EQXZDTDttREFoQkE7aURBRkY7d0RBd0VPO3dEQURBO3NEQUVGOzs7bURBc0JIO29EQTlFQzt5REEyRUs7bURBL0VOO3dEQThFSzt1REEvRUQ7dURBNENBOzs7Ozs7MEJBUEc7eURBREQ7eURBREE7NERBSkc7NERBQ0E7b0RBNkNSO3FEQUNDO3NEQXZCQzs7O3FEQTdCRDtxREFDQTtxREFDQTtxREFDQTtxREFDQTt1REFHRTsyREFDSTs7Ozs7Ozt5QkEvRFQ7OzswQkF3RUs7bURBMURKO3FEQXFERTtxREFqQkE7cURBQ0E7cURBQ0E7cURBQ0E7OztrREFwREg7a0RBQ0E7NERBNEZVO3VEQUNMOzREQUZLO2dFQURJO3NEQXJCVjs7Ozs7OzBCQS9FSjtrREFDQTtrREFDQTtrREFDQTtrREFDQTtrREFDQTtrREFDQTtrREFDQTs7O2tEQWRBO2tEQUNBO2tEQUNBO2tEQUNBO2tEQUNBO2tEQUNBO2tEQUNBOzs7Ozs7Ozt3QkFtQkU7Ozt5QkFnQ0o7OzsyQkFqRUU7a0RBQ0E7a0RBQ0E7a0RBQ0E7a0RBQ0E7a0RBQ0E7a0RBQ0E7OztnREE0REY7Z0RBQ0E7Z0RBQ0E7a0RBd0NFO29EQTlERTsyREF1Rk87cURBQ047Ozs7OzsyQkExRUw7aURBU0M7aURBQ0E7aURBQ0E7Z0RBVkQ7Z0RBQ0E7Z0RBQ0E7Z0RBQ0E7OztvREE5Qkk7b0RBQ0E7b0RBQ0E7aURBeUVIO21EQXBFRTttREFIQTtvREFNQzs7Ozs7OzswQkFnRlE7OzsyQkE3RVI7b0RBcEJBO29EQUNBO29EQUNBO29EQUNBO29EQUNBO29EQUNBOzs7MkRBeUZPO3lEQUlGO3NEQTdFSDttREFRSDt5REFnRU07eURBNUJBOzBEQUNDOzs7Ozs7MkJBdENIO3VEQVZBO3lEQUtFOzBEQUNDO3lEQTRFRDs4REFKSzs0REFHRjt5REFKSDs7O3FEQXhCSjtzREFDQzt1REFLQzt1REFIQTt3REFDQztxREFDSDt1REFqREU7Ozs7O0lBa0ZWO0dBQVk7WUFFakJ3UztJQUFvQjtzQkFJZDs7Ozs7UUFIQTs7UUFDQTtnQkFDQTs7SUFFRDtHQUFZO1lBRWpCQztJQUFxQjtzQkFJZjs7Ozs7UUFIQTs7UUFDQTtnQkFDQTs7SUFFRDtHQUFZO1lBRWpCQztJQUFzQjs7Ozs7U0FrQmhCOztTQUNBOztTQUNBOztTQUNBOztTQUNDOztTQUNBOztTQUNBOztTQUNBOztTQUNBOztTQUNBOztTQVhBOztTQUZBOzs7U0FDQTs7U0FFQTtpQkFKQTs7Ozs7O1FBTkQ7O1FBS0E7O1FBREE7O1FBTkE7O1FBRkE7O1FBTUE7O1FBSEE7O1FBSUE7O1FBRkE7O1FBSkE7O1FBRkE7O1FBREE7O0lBMkJEO0dBQVk7WUFFakJDO0lBQXNCOzs7Ozs7U0FxRGhCOztTQUNBOztTQVVBOztTQURBOztTQXZCQTs7U0FDQTs7U0FUQTs7U0FHQTs7U0FZQTs7U0FYQTs7U0FFQTs7U0F1QkE7O1NBNUJBOztTQTBCQTs7U0F0QkE7O1NBcUJBOztTQVdBOztTQW5FQzs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FFQTs7U0F3Q0E7O1NBMUJBOztTQW9DQTs7U0FyQ0E7O1NBc0NBOztTQUNBOztTQWxEQTs7U0F5QkE7O1NBRUE7O1NBREE7O1NBYUE7Ozs7O1NBMUJGOztTQUNBOztTQTBCQzs7U0F6Q0E7O1NBNkJBOztTQTVDQTs7U0FtRUE7O1NBSUE7O1NBR0E7O1NBREE7O1NBSEE7O1NBS0E7O1NBR0E7O1NBREE7O1NBREE7O1NBL0RBOztTQXdEQTs7U0FHQTs7U0E5Q0E7O1NBVEE7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBb0JBOztTQWdCQTs7U0FGQTs7U0FaQTs7U0FkQTs7U0FlQTs7U0FDQTs7U0FDQTs7U0FaQTs7U0FhQTs7O0lBNEJEO0dBQVk7WUFFakJDLHlCQUFzQixTQUFZO1lBTWxDQyxTQUFTQyxPQUFNM2IsR0FFZjZJLEcsT0FBQUEsSUFBQUEsSUFEZ0IsV0FERDdJLEdBQU4yYjtZQWFUQyxPQUFPeGMsR0FBRVksR0FBSSxPQUFBLFdBQUpBLEdBQUZaLEdBQVM7WUFFaEJ5YztJQUlVO0lBQVQsa0IsT0FuQkRILGNBeEZBRjtJQStGSTs7ZUFiSkM7Ozs7UUFjYztTQUFBOzZCLE9BUmRDLGNBcElBTDs7O1FBNkljO1NBQUE7NkIsT0FUZEssY0E3SEFKOzs7UUF1SWM7U0FBQTs2QixPQVZkSSxjQXRIQUg7O1FBa0hTSTtJQXVCUixPQU5EQzthQUFBQTtlQUFBQTs7MEJBZkEvUztrQixPQUFBQTs0QkFBQUE7NEJBRGdCO21EQURQOFMsT0FGVEYsbUJBRWVMOzs7O0dBdUJpQztZQVFoRFUsWUFBWUg7SUFDZCxRQURjQSxPQUNzRDtJQUFsRCxJQUFJLGNBQUssNEJBRGJBLFNBQ1E7ZUFBb0M7R0FBYztZQUV0RUksb0JBQWlCLFdBQVk7WUFFN0JDLFlBQVMsU0FBSTtZQUViQztJQUNGO0tBQVUsT0FBQSwyQ0FMUkY7Ozs7b0RBRUFDLE1BTEFGOzRCQUFBQSxZQVc0QztHQUNuQztZQUtYSSxlO1lBb0VBQyxPQUFRQztJQUNBLElBQU4zRixNQUFNLCtCQURBMkY7YUFFViw4QkFESTNGLE1BRUMsWUFISzJGO2tEQUNOM0Y7Ozs7b0NBQUFBOztvQkFBQUE7O3NCQUFBQTsyQkFETTJGOzBCQUFBQTt3QkFBQUE7c0JBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzswQkFBQUE7K0JBRE0yRjs4QkFBQUE7NEJBQUFBOzBCQUFBQTt3QkFBQUE7c0JBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzZCQURNMkY7NkJBQUFBOzJCQUFBQTt3QkFBQUE7c0JBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTsyQkFETTJGOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGO3VCQURNMkY7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzZCQURNMkY7NkJBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzswQkFBQUE7OzRCQUFBQTs7OEJBQUFBOztnQ0FBQUE7O2tDQUFBQTt1Q0FETTJGO3VDQUFBQTtxQ0FBQUE7bUNBQUFBO2lDQUFBQTsrQkFBQUE7NkJBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzZCQURNMkY7NkJBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzZCQURNMkY7NkJBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7eUJBRE0yRjt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzZCQURNMkY7NkJBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTsyQkFETTJGOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGLHFCQURNMkYsYUFBQUE7O29DQUNOM0Y7O29CQUFBQTs7c0JBQUFBOzJCQURNMkY7MkJBQUFBO3lCQUFBQTt1QkFBQUE7O29DQUNOM0Y7O29CQUFBQTs7c0JBQUFBOzt3QkFBQUE7OzBCQUFBQTs7NEJBQUFBOzs4QkFBQUE7O2dDQUFBQTs7a0NBQUFBO3VDQURNMkY7dUNBQUFBO3FDQUFBQTttQ0FBQUE7aUNBQUFBOytCQUFBQTs2QkFBQUE7MkJBQUFBO3lCQUFBQTt1QkFBQUE7O29DQUNOM0Ysc0JBRE0yRixhQUFBQTs7b0NBQ04zRjt1QkFETTJGO3VCQUFBQTs7SUFzSEQsWUF0SENBO0dBc0hNO1lBRWRDLFdBQVdwWjtpQkFBcUNBLEdBQUssV0F4SHJEa1osT0F3SGdEbFosSUFBb0I7d0JBQS9CLFNBQUk7SUFBRSxPQUFBLGlDQUFoQ0E7R0FBMEQ7WUFXckVxWixZQUFhaFY7SUFDZixhQXVCT0EsSUFBTSxXQUFOQSxJQUFtQjs7S0FwQnRCLGFBbUJPQSxJQUFNLFdBQU5BLElBQXNCOztNQWhCekIsYUFlT0EsSUFBTSxXQUFOQSxJQUF3Qjs7T0FaM0IsYUFXT0EsSUFBTSxXQUFOQSxJQUF5Qjs7UUFSNUIsYUFPT0EsSUFBTSxXQUFOQSxJQUFzQjs7U0FKekIsYUFHT0EsSUFBTSxXQUFOQSxJQUFxQjs2QkFEZixXQWxCbEJBLElBa0I0QztTQURyQyxVQXB1QmxCa1QsYUFtdEJXbFQ7U0FtQk8sT0FBQTtRQUEyQjtRQUwvQixVQW51QmRpVCxjQXF0QldqVDtRQW9CRyxPQUFBO09BQTRCO09BVGhDLFVBbHVCVmdULGlCQXV0QldoVDtPQXFCRCxPQUFBO01BQStCO01BYm5DLFVBanVCTitTLFdBeXRCVy9TO01Bc0JMLE9BQUE7S0FBOEI7S0FqQmxDLFVBaHVCRjhTLGNBMnRCVzlTO0tBdUJULE9BQUE7SUFBNEI7SUFyQmhDLFVBL3RCRTZTLFdBNnRCVzdTO0lBd0JiLE9BQUE7R0FBeUI7WUFFekJpVixnQkFBZ0JqVjtpQkFBdUNBLElBQU0sV0ExQjdEZ1YsWUEwQnVEaFYsS0FBMkI7d0JBQXRDLFNBQUk7SUFBRSxPQUFBLGlDQUFsQ0E7R0FBbUU7WUFFbkZrVjtJQUVGLG9CQUdZLDhCQUFtQjs7S0FEbEI7O0lBQTRCO0lBQ3ZDLE9BQUE7R0FBOEI7R0FHaEM7SUFERUM7TUFDRjs7U0FHTTtVQURFM1M7O2FBeHNDTnlHOztjQUFBQTs7ZUFBQUE7O2dCQUFBQTtvQkFBQUE7U0FndENFO1VBQ1k7MEJBQWVtTSxHQUFLLE9BQUEsaUNBQUxBLEdBQXFCO1dBQTFDQyxNQUFNLGlDQVRSN1M7V0FVRixlQUFJdkMsVUFBWSxPQURab1YsSUFDQXBWLFVBQWtFO1VBQXRFOzs7OztVQUVBO1dBQUlxVixzQkFBUyxPQUFZLG1DQUE2QjtXQUNsREMsV0FEQUQ7VUFFSixnQkFBSXJWO1dBQ0Y7WUFBSWxDLElBSEZ1WDtZQUlFRSxLQUhGRCwrQkFFRXhYO1lBRUEwWCxPQURBRCxlQUFBQTtXQUhGRCxVQUVFeFg7V0F2dENWa0wsa0JBc3RDUWhKLFVBR0V3VjtXQUVHLFNBQTJDOztRQUFBO1lBSXhEQztJQUFrQixXQS90Q2xCek07SUErdENpQyxPQUFBO0dBQStDO1lBRWhGME07SUFDTSxXQXJrQ05qTDtJQXNrQ2EsT0FBQTtHQUFrQztZQUUvQ2tMO0lBQ00sV0F6a0NObEw7SUEwa0NhLE9BQUE7R0FBK0I7T0FFNUNtTDtZQU1BQyxXQUFXN1YsVUFBUzZJO0lBQ2IsSUFBTHpJO2FBQ0kwVixLQUFLak47S0FDWCxpQkFEV0E7VUFDRGtOLFNBRENsTixpQkFDUG1OLE9BVEpKOztVQVNVRyxhQUFOQyxPQURPbk47O01BSVBvTixLQUhNRixlQUhDL1YseUIsT0FFTDhWLEtBQ0lDO0tBRlIzVixZQWh2Q0Y0SSxrQkFzdkMrQiw4QkFEM0JpTixLQUhBRDs7SUFJaUU7SUFML0RGLEtBRmNqTjtJQVN0QixPQVJJekk7R0FTRjtZQUVBOFYsYUFBYzlWO0lBQ2hCLFlBRGdCQTtnQkFFTjtRQUNIdkk7SUFIU3VJO1dBM3ZDZDRJLG9CQTh2Q0tuUjtHQUVtQjtZQUV4QnNlLHVCQUF3QmhCLEdBRTFCLE9BQVcsY0FGZUEsR0FFc0M7Ozs7T0F2M0Q5RHRNOztPQXFvQkFPO09BTkFEO09BUUFFO09BZEFKO09BMU5BSDtPQW9OQUU7T0E5akRBbEs7T0FFQUM7T0FFQUU7T0FFQUU7T0E0Z0VBRTtPQUVBOFQ7O1FBemdFRTNQO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBSUFFO1FBRkFEO1FBSUFFO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUF0QztRQUVBdUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQTVDO1FBRUFEO1FBRUE4QztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBcEQ7UUFFQXFEO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUF6RTtRQUVBMEU7UUFFQW5NO1FBRUFvTTtRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBdEo7T0FPRkM7T0FGQVU7T0FJQUU7T0FvM0RBc1Q7T0FZQUc7T0E5M0RBdFQ7T0F1MkRBa1Q7T0FsQkFIO09BTUFDO09BT0FDO1dBOGNFZSxVQXZHQUw7V0EwSEFTO09BNzBCRjdLO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDOztPQUlBQztPQStxQkE2RjtPQW9FQUM7T0F3SEFFO09BV0FDO09BMEJBQztPQUVBQzs7UUExNEJFdFc7UUFrQkE5RDtRQUVBdVU7UUFvSEFxRDtRQWxIQXBEO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBTUFHO1FBSkFGO1FBRUFDO1FBSUFFO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUE5WTtRQUVBK1k7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQTFZO1FBRUFrRjtRQUVBZ1Y7UUFFQXZCO1FBRUE3UDtRQUVBOFA7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFJQUU7UUFPQUU7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7T0FneUJGNEM7T0FZQUs7T0FPQUM7T0E3REFqQjs7T0FuK0dBM1I7T0E2L0dBa1M7T0FFQUM7T0FJQUM7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O0lDOS9HQVM7O0lBRUFDOzs7WUFZSXhVLFdBQVdwSjs7O21CQUNUO0tBRUUsSUFESHFKLGdCQUFMUixnQkFDUSxRQUFBLFdBSE83SSxHQUVmNkk7bUJBR1NTLGdCQUFNLFdBQU5BLEtBTExGLFdBQVdwSixHQUVWcUo7bUJBQUFBOzs7WUFhTHdVO0lBQ0Y7Ozs7SUFBK0I7R0FBMkI7WUF5RnhEQyxjQUFleGQsS0FBS29YO0lBQ3RCLFVBRHNCQSxlQWpCTHFHLDBCQUFKclosU0FBSWIsSUFBQWthO0lBQ2Y7WUFEZWxhO0tBSU87TUFBQSxNQWFGNlQsbUJBakJMN1Q7TUFJUCxRQUFBOztNQUVNO09BQUx6RTtPQU5NdUYsTUFBQWQ7T0FBSmUsWUFNRnhGLEdBTkVzRjtPQUFBQSxNQUFBRTtPQUFJZixJQUFBYzs7VUFBQUUsTUFBQWhCLElBQUFBLE9BQUFBLElBQUFnQjs7aUJBa0JXZ0U7S0FQdEIsY0FBQSxzQ0FPc0JBOzs7O1dBRFh2SSxTQXRETzBkLE1Bc0RQMWQsUUF0RENVLFFBQU1nZCxjQUFOaGQ7UUFDZixLQXJDRDZjLG1CQXNFRztRQS9CUTtTQUFQSSxTQUFPO1NBQ1B0QztTQUNFLFFBQUEsK0JBQWM7Ozs7YUFMSjNhLE9BWVAsZUFUTGlkLHdCQUNBdEM7VUFXUSxjQUFBO3dCQUNJO2NBQ0h1QztVQUNBLFNBREFBO1dBRUUsZUFoQlhEO1VBa0JjLGNBQUE7O1dBV2U7MkJBQStCcGEsR0FBSyxPQWZ4RHFhLFVBZW1EcmEsR0FBaUI7WUFBaEQsTUFBQSw0QkFmcEJxYTtZQWVLLE1BQUE7V0FBQSxPQW5GZDlVOzZCQStFbUJwSjtxQkFDRyxZQUFBLGtDQURIQTtpQ0FFTzt5QkFDSG1lO3FCQUFRLGVBNUIvQkYsdUJBNEJ1QkU7b0JBQStCOzs7VUFSdEI7V0FBQSxNQU52QkQ7V0FNUyxVQUFBO3dCQUNJO2NBQ0hDO1VBQVEsZUF0QjNCRix1QkFzQm1CRTs7Ozs7Ozs7O1lBUWhCLGVBOUJIRix3QkFDQXRDOzs7VUFJb0I7O1NBQ0MsZUFOckJzQyx3QkFDQXRDOztRQUdHOzBCQUpIc0Msd0JBQ0F0Qzs7OztRQTdCSCxLQVhEa0MscUJBMEJHO1FBYlEsSUFBUDNULFNBQU87UUFDUjtTQVdFLGVBWkRBO1FBSUE7O29CQUF1Q3JHO1lBQW1CLFVBQUEsbUJBQW5CQTtZQUFtQixPQUFBO1dBQXVCOztTQUQvRTZGLFVBQ0Y7U0FPQSxNQUFBLDZCQVJFQTtRQVFGLE9BdkNBTjs7a0JBbUNBLFlBQ1k7O2tCQUVIO29DQVZUYzs7aUJBVStFOzs7O1FBbkJsRixLQUpEMlQscUJBUUc7UUFGUSxJQUFQaGIsT0FBTztRQUNYLGVBRElBO2dCQWtGQzs7SUFHb0Q7SUFBOUMsVUFBQSxpQ0FsQkE2QjtJQWtCQSxPQUFBO0dBQXlFO1lBRXBGMFosT0FBUUMsZUFBZ0NDO0lBQzFDLGdCQURVRDtTQUVBSCxPQUZBRztLQUVBSCxjQUZnQ0ksVUFFaENKOzs7SUFDTyxJQUFMbGUsSUFIRnFlLGtCQUdPLFFBSHlCQyxhQUtwQ3piLE9BTG9DeWI7O1NBTXhCSDtZQUhObmUsU0FHNkIsd0JBRG5DNkMsT0FDWXNiOztRQURFN2E7V0FGUnRELFNBRXVCLHdCQUE3QjZDLE9BQWNTO0dBQ3lEO1lBRTNFaWI7SUFDRjtLQUF1QixNQUFBLDhCQW5JckJaO0tBbUlJLFFBQUE7Z0JBQ0k7UUFDSHpWO0lBQVUsMEJBQVZBO0dBQW1DO1lBRXhDc1csbUJBQW1COUc7SUFDckIsSUFBSStHLFdBTkZGLHdCQU8wQixNQWxCMUJULGlCQWdCbUJwRztJQUVYLGtCLE9BZlIwRyxPQWNFSztJQUNKO0lBQUEsT0FESUE7R0FFSTtZQUVOQyxrQkFBa0JoSDtJQUtsQixVQTFCQW9HLG1CQXFCa0JwRzs7S0FFbEI7O1VBQ2tCcFUsY0FBZFQ7TUFBbUIsV0FBbkJBLE1BQXlCLHdCQUFYUzs7S0FDVCxNQUFBO0lBQWE7SUFDdEIsT0FBQTtHQUE4Qjs7OztPQWpKOUJxYTtPQUVBQztPQXdIQVE7T0FhQUk7T0FLQUU7T0FWQUg7T0FYQVQ7OztFOzs7Ozs7OztHOzs7OztHQ2pEcUI7OztJQUFuQmEsbUJBQW1CO0lBRW5CcFUsWUFBWTtJQUVaQyxXQUFXO0lBRVhDLFFBQVE7SUFFUkMsUUFBUTtJQUVSQyxPQUFPO0lBRVBpVSxVQUFVO0lBRVZoVSxVQUFVO0lBakJEOztPQUdUK1Q7T0FFQXBVO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFpVTtPQUVBaFU7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7OztJQzNERmlVOzs7O1lBRUFDLE9BQU8zRjtJQUFTLFdBRmhCMEYsT0FFOEIsd0JBQXZCMUY7R0FBc0M7WUFFN0M0RixlQUFlQztJQUNqQjtXQUFPO0tBQ0Y7SUFHNEM7S0FBQSxNQUFBLDZCQUxoQ0E7S0FLZixNQUFBOztJQUZGLE9BQUE7R0FFeUU7WUFFdkVDLGNBQWMzWTtJQUNoQjtXQUFPO0tBQ0Y7YUFDRDRZLGVBQXlDLE9BQVEsV0FIckM1WSxrQkFHOEM7SUFDakM7S0FBQSxLQUFBLDhCQUR6QjRZOzs7R0FDaUQ7WUFFbkRDLGFBQWFDO0lBQ2Y7V0FBTztLQUNGOzZDQUZVQTtHQUdlOzs7VUFsQjVCTixRQUVBQyxnQkFPQUUsZUFNQUU7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7WUcvQ0FZLE9BQU96YztJQUFJLDhCQUEyQix1QkFBL0JBO0dBQWdFO1lBRXZFMGMsaUJBQWlCMWM7SUFBSSw4QkFBMkIsdUJBQS9CQTtHQUFpRTtZQUVsRjJjLGlCQUFpQjNjLEdBQUV0RDtJQUN3QjtXQUFBLGdDQUFXLDhCQURuQ0E7SUFDckIsOEJBQTJCLHVCQURSc0Q7R0FDK0M7WUFFaEU0YyxvQkFBb0I5ZCxHQUFFeUI7SUFDeEI7S0FBOEQsTUFBQTtJQUFZO0lBQTFDLFVBQUEsK0JBRFZ6QixHQUFFeUI7SUFDeEIsT0FBQSx1QkFBaUI7R0FBMkQ7WUFFMUVzYyxrQkFBZTdjO0lBQ2pCO0lBQUE7S0FBQTtLQUM2QixNQUFBLFNBQVMsdUJBRnJCQTtLQUVBLE1BQUE7SUFBQSxPQUFBO0dBQXdEO1lBRXZFOGMsWUFBUzljO0lBQ1g7SUFBQSxhQUlVK2M7S0FDTyxVQUFBLCtCQURQQTtLQUVIO0lBQWdCO0lBSGxCO0tBQUEsTUFBQSxTQUFTLHVCQUpIL2M7S0FHVCxNQUFBO0lBQUEsT0FBQTtHQUl1QjtZQUl2QmdkLGVBQWVDLEdBQUksT0FsQm5CTCxvQkFrQmVLLE1BQTJCO1lBRTFDQyxjQUFjRCxHQUFFMWM7SUFDbEI7S0FBbUMsTUFBQSwrQkFEbkIwYyxHQUFFMWM7S0FDRSxNQUFBO0lBQUEsT0FBQTtHQUFtRDtHQUVyRCxJQUFoQjRjO1lBRUFDLFdBQVdwZDtJQUFJLE9BQUEsdUJBQUpBLFdBRlhtZDtHQUUwRTtZQUUxRUUsb0JBQWlCcmQsR0FBRXNkO0lBQ3JCO0lBQ0EsT0FBQTthQUFpQix1QkFGRXRkLGdCQUZqQm9kLFdBRW1CRTtHQUU4QztZQUVqRUMsY0FBY0MsS0FBRXhkLEdBQUVzZDtJQUNwQjtLQUNtQyxRQUZuQkU7S0FDWkMsUUFEWUQ7S0FRWlAsMkJBUllPLFlBQ1pDO0lBUUosT0FBQTthQUFpQix1QkFUQ3pkLFdBUWRpZCxHQWRGRyxXQU1rQkU7R0FTZ0Q7WUFFbEVJO0lBQ0YsSUFBaUJDLDRCQUFMQyxVQUFLN2UsTUFBQTRlO0lBQ2Y7WUFEZTVlLEtBQ0MsT0FETjZlO0tBQ2dCO01BRFhDLFFBQUE5ZTtNQUFMK2UsYUEzQ1ZsQix5QkEyQ2U3ZCxNQUFMNmU7TUFBQUEsT0FBQUU7TUFBSy9lLE1BQUE4ZTs7R0FHTTtZQUVyQkUsV0FBUS9kO0lBQ1Y7SUFDK0IsVUFBQSx1QkFGckJBO0lBRU8sT0FSZjBkLGlCQVFlO0dBQW9EO1lBRW5FTSxtQkFBZ0JoZSxHQUFFTztJQUNwQjtJQUMrQixVQUFBLHVCQUZiUCxjQUFFTztJQUVILE9BWmZtZCxpQkFZZTtHQUE2RDtHQUlqRSxJQUFYTyxXQWpFQXhCO1lBbUVBeUIsTUFBTWxlO0lBQUksT0FBQTthQUFpQix1QkFBckJBLFdBRk5pZTtHQUVxRjtZQUVyRkUsY0FBY25lLEdBQUksT0FyRWxCeWMsT0FtRUF5QixNQUVjbGUsSUFBb0I7WUFFbENvZSx3QkFBd0JwZSxHQUFJLE9BckU1QjBjLGlCQWlFQXdCLE1BSXdCbGUsSUFBOEI7Ozs7T0F2RXREeWM7T0FFQUM7T0FFQUM7T0ErREF1QjtPQUVBQztPQUVBQztPQTdEQXZCO09BSUFDO09BQUFBO09BV0FFO09BRUFFO09BT0FHO09BSUFFO09BaUJBUTtPQUlBQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0N2REo7Ozs7O0lBQUE7Ozs7Ozs7WUFFSUssaUJBQWUsTUFBQSwwQ0FBZTtHQUlwQjtJQUFWQyxVQUFVO0lBTVU7WUFNcEJDLDJCQUEyQnZlO0lBQzdCO2VBRDZCQTtJQUM3QixPQUFBLHVCQUFpQjtHQUF5QztZQUV4RHdlLFVBQVV4ZTtJQUFrQzs7T0FBQTtTQVgxQixtQ0FKbEJzZSxTQWVVdGU7SUFBSSxPQUFBLHVCQUFpQjtHQUErQztZQUs5RXllLFVBQVlDLEtBQWtCMWU7SUFDaEMsR0FEYzBlLFNBQVloRSxNQUFaZ0UsUUFBQUMsWUFBWWpFLGNBQVppRTtJQUNkLEtBRGNBO0tBR1QsT0FBQTtjQUFpQiwrQkFBVyx1QkFIRDNlO0lBRWY7S0FwQkhTO09Bb0JHO1NBQWtCLCtCQUFXLHVCQUZkVDtJQWxCZCxPQUFBLG1DQUZoQnNlLFNBRVk3ZDtHQXFCcUM7R0E2QnJEO0lBQUE7O0lBU0ltZTtJQUVBQztZQUdBQyxvQkFBb0I5ZTtJQUN0QixJQUFJd0csMEJBRGtCeEc7YUFFZCtlLElBQUl4ZTtLQUNWLElBQVksSUFBQSxPQUFBLHNDQUhRUCxHQUVWTyxRQUNOeWU7Ozs7O1VBQUFBLElBRkZ4WTs7S0FHUyxJQUFQeVksT0FBTyxzQ0FKU2pmLEdBRVZPLEdBQ055ZSxJQURNemU7WUFEUmlHLEtBRUV3WSxRQUNBQyxlQUFBQSxNQUZFRixJQUNGQztJQUU0QztJQUU1QyxJQUdKbGdCLElBUk1pZ0I7T0FRTmpnQiw0QkFBQUE7Z0JBQUFBO2dCQUZVOzhEQUNJOztJQUNULE9BQUxBO0dBQU07WUFHTm9nQixpQkFBaUIxWTs7S0FDUztNQUFTakI7TUFBSG5EO01BQTZCLE9BNUQ3RHFjLGFBNERtQ2xaO01BQW9CLE9BQUE7TUFBZCxPQTVEekNrWixhQTREZ0NyYztLQUF1QixPQUFBO0lBQWtCO0lBQXpELFdBQUEsa0NBRENvRTtJQUNELE9BQUE7R0FBNEQ7WUFFNUUyWSwyQkFBMkJuZjtJQUM3QjtLQS9GMkI7T0E4RkVBO1NBOUZRLHdCQUFXO0tBQXJCLE1BQUE7S0FnR3ZCb2Y7YUFFSUwsSUFBSTNkLEtBQUlyQztLQUNkLElBRGM4ZSxRQUFBOWU7S0FDZDthQURjOGUsT0FFVCxPQUZLemM7TUFJUjtPQUVvQjtlQU5SeWM7O21CQU04QzdkOztZQUNIO2FBQVNqRTthQUFIRDthQUV6QyxPQW5GdEJ5aUIsMkJBaUZrRXhpQjtZQUVuRCxXQW5GZndpQiwyQkFpRitEemlCO1dBRW5DO1dBeEdsQjtZQUFSdWpCO2NBcUcwRHJmO2dCQXJHdkM7a0JBQVc7V0FDbEMsUUFESXFmO1lBQzBEO2FBQUEsT0FvR0FyZixRQXJHMURxZjthQUN1QyxXQW9HbUJyZixXQXJHMURxZjtvQkFDdUM7OztXQXFHZ0IsT0FBQSx1Q0FqR3pEaEI7VUFtRzRCO1FBSE4sT0FBQSxvQ0FOUlI7UUFLVjtVQUxFa0I7Z0JBTUMsdUNBaEdQVixrQkEwRlVqZDs7T0FLTjs7Ozs7T0FPZ0IsSUFaTnVjLFFBQUFFLGVBQUFBLFFBQUFGOzs7SUFZd0I7SUFFeEMsT0FkUW9CLE9BRkpLO0dBZ0JZO1lBRWRFLGlCQUFpQnRmO0lBQUksT0FwQnJCbWYsMkJBb0JnRCx1QkFBL0JuZjtHQUFnRDtHQUduRTtJQURFdWY7Ozs7SUFLQUM7Ozs7WUFJQUMsaUJBQWlCemY7aUJBdUJaMGY7S0FDSDtNQUFJemMsTUFBTSwrQkFEUHljO01BRWdDLE9BQUEsK0JBRC9CemM7TUFuRkkwYyxjQW9GWSx1Q0E5SXRCdEI7TUEyREksUUFBQSx1QkFETXNCOzs7Ozs7Ozs7Ozs7OztZQW9GSkM7OztXQUFBQTs7TUFLSjtPQUFBLHVCQUVtRCxjQUFnQjtPQUFoRCxPQUFBLCtCQVJmM2M7T0FNQTRjO1NBbklOdEI7V0FxSU07T0FFSix1QkFjd0QsY0FBZ0I7T0FBakQsT0FBQSwrQkF4Qm5CdGI7T0F1QkU7U0FwSlJzYjtXQXFKVTs4QkFIK0MsY0FBZ0I7T0FBaEQsT0FBQSwrQkFyQm5CdGI7T0FvQkU7U0EzRVJrYztXQTRFVTtPQUpNLE9BeEZoQkwsb0JBNkVNZTs4QkFVc0QsY0FBZ0I7T0FBaEQsT0FBQSwrQkFoQnRCNWM7T0FJQWpEO1NBV0ksdUJBQ0c7OzhCQVpQQTtZQUFLLG1CQUFMQTtZQUhBNGY7T0FXNEMsT0FBQSwrQkFaNUMzYztPQVVBNmM7O1VBdklOdkI7WUF5SW1DLHVDQXpKbkNGOzs7VUFtSk13Qjs7O09BcUJKLE9BMUJJRCxVQVNBRSxXQUFBQTtNQWlCSjs7S0ExR3NCLE1BQUE7SUEwR29COztrQkE1Q25DSjtNQUNIO09BQUl6YyxNQUFNLCtCQURQeWM7T0FHeUMsT0FBQSwrQkFGeEN6YztPQUNBNGM7U0E5R1Z0QjtXQStHbUMsdUNBL0huQ0Y7TUFpSU0scUJBUzBELGNBQWdCO01BQWhEO09BQUEsT0FBQSwrQkFidEJwYjtPQVlLO1NBQUEsdUJBQ0U7MkJBSCtDLGNBQWdCO01BQWhEO09BQUEsT0FBQSwrQkFWdEJBO09BU0s7U0FoRGZrYztXQWlEaUI7TUFOWDtzQkEzRE5MLG9CQXdEVWUsV0FBQUE7S0FhRzt5QkFoQkUsU0FBSTtLQURmLFVBVEpMLGFBSWlCeGY7S0FPYixPQUFBO0lBZVU7SUFwQmQsVUFYQXVmLFlBU2lCdmY7SUF1QmpCLE9BQUE7R0E0QjZDO1lBRTdDK2YsY0FBYy9mO0lBQUksT0FyRGxCeWYsaUJBcURtQyx1QkFBckJ6ZjtHQUFzQztZQUVwRGdnQjtJQUFnQjs7OztRQWdCRUM7UUFEQ0M7UUFETEM7UUFEQUM7UUFEQUM7K0JBSUlKO1FBZ0JIO1NBQUEsTUFwTGZ4QixhQW9La0J3QjtlQWdCVDs7O1VBakJVQztRQWFGO1NBQUEsTUFySGpCaEIsaUJBd0dtQmdCO2VBYVI7OztPQUZQO1FBQUEsTUFBQTt1QkFEaUNwa0IsR0FBSyxPQTdLMUMyaUIsYUE2S3FDM2lCLEdBQWdCO1FBQS9CLE1BQUEsaUNBWFJxa0I7UUFXVixNQUFBO1FBQUEsTUFBQTtRQURBLE1BQUE7aUJBWFVDOzs7UUFVRztTQUFBLE1BQUEsdUJBVkhBO2VBVUg7T0FGUDtRQUFBLE1BQUE7UUFEQSxNQXhLSjNCLGFBZ0tjNEI7UUFRVixNQUFBO09BQUEsT0FBQTs7OztRQWtCY0M7UUFEQ0M7UUFETEM7UUFEQUM7UUFEQUM7K0JBSUlKO1FBZ0JIO1NBQUEsTUExTWY3QixhQTBMa0I2QjtlQWdCVDs7O1VBakJVQztRQWFGO1NBQUEsTUEzSWpCckIsaUJBOEhtQnFCO2VBYVI7OztPQUZQO1FBQUEsTUFBQTt1QkFEaUN6a0IsR0FBSyxPQW5NMUMyaUIsYUFtTXFDM2lCLEdBQWdCO1FBQS9CLE1BQUEsaUNBWFIwa0I7UUFXVixNQUFBO1FBQUEsTUFBQTtRQURBLE1BQUE7a0JBWFVDOzs7UUFVRztTQUFBLE1BQUEsdUJBVkhBO2VBVUg7T0FGUDtRQUFBLE1BQUE7UUFEQSxNQTlMSmhDLGFBc0xjaUM7UUFRVixNQUFBO09BQUEsT0FBQTs7OztRQXpDc0RDO1FBQXBCQztRQUFyQkM7K0JBQXlDRjtRQVMzQztTQUFBLE1BOUpmbEMsYUFxSjBEa0M7ZUFTakQ7OztVQVQ2QkM7UUFLckI7U0FBQSxNQS9GakIxQixpQkEwRnNDMEI7ZUFLM0I7OztPQUZQO1FBQUEsTUFBQTt1QkFEaUM5a0IsR0FBSyxPQXZKMUMyaUIsYUF1SnFDM2lCLEdBQWdCO1FBQS9CLE1BQUEsaUNBRkwra0I7UUFFYixNQUFBO1FBQUEsTUFBQTtPQUFBLE9BQUE7O0dBbUR1QjtHQUlUOztJQUFBLE1BQUE7R0FBZixHQUFBOzs7O2dDQTJCbUIsU0FBRTtnQ0FGRCxTQUFFOzJCQUZMLFNBQUU7Ozs7Ozs7Ozs7Ozs7OztHQU9iO0lBQVBSLE9BcFBGOUI7SUFzUEV1QyxXQXRQRnZDO0dBMFBFO0lBQUk7S0FBQSxVQUFLLG1CQUFlO0tBRnhCNkI7Ozs7O1FBQUFBOztHQUtjO0lBQWRXLGNBN1BGeEM7SUErUEU0QixPQXpNRnJCLG9CQXVNRWlDO0lBTUksTUFBVSxpQ0FDUjtJQUhOQyxjQTNMRjdCO1lBaU1FOEI7SUFDTSxJQUFKamhCLElBQUk7V0FDUixzQkFESUE7S0FDaUMsVUFBQSx3QkFEakNBO0tBQ3NCLEdBQUE7TUFEbEIsT0FBQTs7ZUFBSkE7O3FDQUFBQTs7SUFHQyxPQUhEQTtHQUdFO1lBRUpraEIsYUFBYWxoQjtJQUFnQixVQUFBLHVCQUFoQkE7O0dBQStCO1lBRTVDaEQsV0FBUyxPQTFLWHlpQiwyQkEwS29DO1lBRWxDbmEsSUFBSTZiO0lBQWdCLFVBQUEsdUJBckh0Qm5CLGNBcUhNbUI7O0dBQStDO0dBRXZDO0lBQVpDLFlBblJGN0M7OztPQUdBQztPQUtBQztPQXlDQUc7T0FFQUM7T0FHQUM7T0FhQUk7T0F1QkFJO09BZ0VBUztPQUVBQzs7UUF3RkVLO1FBSUFEO1FBRkFVO1FBT0FDO1FBRUFaO1FBRUFhO1FBTUFDO1FBTUFDO1FBRUFsa0I7UUFFQXNJO1FBRUE4Yjs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0dTM1NNOzs7O0lBQVI2RztJQWdCSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFzMURJMWEsY0FBZUMsS0FBa0JqTztJQUFPLE9BQXpCaU87MkNBQW9ELHdCQUFsQ2pPO0dBQWtEO1lBRW5Ga08sb0JBQW9CRCxLQUFJak8sTUFBTyxPQUYvQmdPLGNBRW9CQyxLQUFJak8sTUFBZ0Q7WUFFeEU2USxRQUFRNUMsS0FBbUIsT0FGM0JDLG9CQUVRRCxZQUE4QztZQUV0RDBhLGVBQWUxYTtJQUEwQixPQUp6Q0Msb0JBSWVEO0dBQTREO1lBRTNFMmEsa0JBQWtCM2E7SUFBNkIsT0FOL0NDLG9CQU1rQkQ7R0FBa0U7WUFFcEY0YSxtQkFBbUI1YTtJQUNyQixPQVRFQyxvQkFRbUJEO0dBQ2lCO1lBRXBDNmEsY0FBYzdhLEtBQXlCLE9BWHZDQyxvQkFXY0Qsa0JBQTBEO1lBRXhFOGEsbUJBQW1COWE7SUFDckIsT0FkRUMsb0JBYW1CRDtHQUNpQjtZQUVwQythLG9CQUFvQi9hO0lBQ3RCLE9BakJFQyxvQkFnQm9CRDtHQUNpQjtZQUVyQ2diLHVCQUF1QmhiO0lBQ3pCLE9BcEJFQyxvQkFtQnVCRDtHQUNpQjtZQUV4Q2liLGFBQWFqYixLQUF3QixPQXRCckNDLG9CQXNCYUQsaUJBQXdEO1lBRXJFa2IsZUFBZWxiO0lBQTBCLE9BeEJ6Q0Msb0JBd0JlRDtHQUE0RDtZQUczRW1iLGFBQWFuYixLQUF3QixPQTNCckNDLG9CQTJCYUQsaUJBQXdEO1lBRXJFb2IsV0FBV3BiLEtBQXNCLE9BN0JqQ0Msb0JBNkJXRCxlQUFvRDtZQUUvRHFiLFdBQVdyYixLQUFzQixPQS9CakNDLG9CQStCV0QsZUFBb0Q7WUFFL0RzYixjQUFjdGIsS0FBeUIsT0FqQ3ZDQyxvQkFpQ2NELGtCQUEwRDtZQUd4RXViLGFBQWF2YixLQUF3QixPQXBDckNDLG9CQW9DYUQsaUJBQXdEO1lBRXJFd2IsV0FBV3hiLEtBQXNCLE9BdENqQ0Msb0JBc0NXRCxlQUFvRDtZQUUvRHliLGVBQWV6YjtJQUFzQixPQXhDckNDLG9CQXdDZUQ7R0FBeUQ7WUFFeEUwYixxQkFBcUIxYjtJQUFzQixPQTFDM0NDLG9CQTBDcUJEO0dBQWdFO1lBRXJGMmIsbUJBQW1CM2I7SUFBc0IsT0E1Q3pDQyxvQkE0Q21CRDtHQUE4RDtZQUVqRjRiLGtCQUFrQjViO0lBQXNCLE9BOUN4Q0Msb0JBOENrQkQ7R0FBNkQ7WUFFL0U2YixrQkFBa0I3YjtJQUFzQixPQWhEeENDLG9CQWdEa0JEO0dBQTZEO1lBRS9FOGIsb0JBQW9COWI7SUFDdEIsT0FuREVDLG9CQWtEb0JEO0dBQ2lCO1lBRXJDK2IsUUFBUS9iLEtBQW1CLE9BckQzQkMsb0JBcURRRCxZQUE4QztZQUV0RGdjLFlBQVloYyxLQUF1QixPQXZEbkNDLG9CQXVEWUQsZ0JBQXNEO1lBRWxFaWMsZUFBZWpjO0lBQXVCLE9BekR0Q0Msb0JBeURlRDtHQUF5RDtZQUV4RWtjLFlBQVlsYyxLQUFrQixPQTNEOUJDLG9CQTJEWUQsZ0JBQWlEO1lBRTdEbWMsWUFBWW5jLEtBQXVCLE9BN0RuQ0Msb0JBNkRZRCxnQkFBc0Q7WUFFbEVvYyxrQkFBa0JwYyxLQUFzQixPQS9EeENDLG9CQStEa0JELGVBQW9EO1lBRXRFcWMsb0JBQW9CcmM7SUFDdEIsT0FsRUVDLG9CQWlFb0JEO0dBQ2tCO1lBR3RDc2MsV0FBV3RjLEtBQXNCLE9BckVqQ0Msb0JBcUVXRCxlQUFvRDtZQUUvRHVjLGVBQWV2YztJQUEwQixPQXZFekNDLG9CQXVFZUQ7R0FBNEQ7WUFFM0V3YyxtQkFBbUJ4YztJQUF1QixPQXpFMUNDLG9CQXlFbUJEO0dBQThEO1lBRWpGeWMsWUFBWXpjLEtBQXVCLE9BM0VuQ0Msb0JBMkVZRCxnQkFBc0Q7WUFFbEUwYyxXQUFXMWMsS0FBc0IsT0E3RWpDQyxvQkE2RVdELGVBQW9EO1lBRS9EMmMsY0FBYzNjLEtBQXlCLE9BL0V2Q0Msb0JBK0VjRCxrQkFBMEQ7WUFFeEU0YyxjQUFjNWMsS0FBeUIsT0FqRnZDQyxvQkFpRmNELGtCQUEwRDtZQUV4RTZjLGVBQWU3YztJQUEwQixPQW5GekNDLG9CQW1GZUQ7R0FBNEQ7WUFFM0U4YyxxQkFBcUI5YztJQUN2QixPQXRGRUMsb0JBcUZxQkQ7R0FDaUI7WUFFdEMrYyxXQUFXL2MsS0FBc0IsT0F4RmpDQyxvQkF3RldELGVBQW9EO1lBRS9Ea0QsYUFBYWxELEtBQXdCLE9BMUZyQ0Msb0JBMEZhRCxpQkFBd0Q7WUFFckVnZCxVQUFVaGQsS0FBcUIsT0E1Ri9CQyxvQkE0RlVELGNBQWtEO1lBRTVEaWQsV0FBV2pkLEtBQXNCLE9BOUZqQ0Msb0JBOEZXRCxlQUFvRDtZQUUvRFksWUFBWVosS0FBdUIsT0FoR25DQyxvQkFnR1lELGdCQUFzRDtZQUVsRWtkLFVBQVVsZCxLQUFxQixPQWxHL0JDLG9CQWtHVUQsY0FBa0Q7WUFFNURtZCxhQUFhbmQsS0FBd0IsT0FwR3JDQyxvQkFvR2FELGlCQUF3RDtZQUVyRW9kLGFBQWFwZCxLQUF3QixPQXRHckNDLG9CQXNHYUQsaUJBQXdEO1lBRXJFcWQsa0JBQWtCcmQsS0FBc0IsT0F4R3hDQyxvQkF3R2tCRCxlQUFvRDtZQUV0RXNkLGVBQWV0ZDtJQUEwQixPQTFHekNDLG9CQTBHZUQ7R0FBNEQ7WUFFM0VTLFlBQVlULEtBQXVCLE9BNUduQ0Msb0JBNEdZRCxnQkFBc0Q7WUFFbEV1ZCxXQUFXdmQsS0FBc0IsT0E5R2pDQyxvQkE4R1dELGVBQW9EO1lBRS9Ed2QsWUFBWXhkLEtBQXVCLE9BaEhuQ0Msb0JBZ0hZRCxnQkFBc0Q7WUFFbEV5ZCxVQUFVemQsS0FBcUIsT0FsSC9CQyxvQkFrSFVELGNBQWtEO1lBRTVEMGQsV0FBVzFkLEtBQXNCLE9BcEhqQ0Msb0JBb0hXRCxlQUFvRDtZQUUvRDJkLFlBQVkzZCxLQUFrQixPQXRIOUJDLG9CQXNIWUQsZ0JBQWlEOzs7SUFJN0Q0ZDs7SUFFQXRrQjtZQUVBb0csZUFBZTdJO2lCQUlWMUU7S0FBSyxHQUFMQSxhQVJMeXJCLGFBUThDLE9BQXpDenJCO0tBQWdELE1BQUE7SUFBZTt3QkFEekQsTUFBQSwwQ0FBZTtJQUQxQjs7S0FBQSxNQUFBLDJCQUE2Qyx3QkFGOUIwRTtJQUlmLE9BQUE7R0FBcUU7WUFHbkV6QixRQUFTakQ7SUFDWCxPQURXQSxhQVhYeXJCO2NBWW9DLDhCQUR6QnpyQjs7R0FDa0U7WUFFM0V1VCxhQUFjbVksSUFBZ0JsWTtJQUNoQyxPQURnQmtZLDRCQUNzQix3QkFETmxZO2NBRTNCLDhCQUZXa1k7O0dBR0o7WUFFVnZzQixFQUFFYSxHQUFxQixPQUx2QnVULGFBS0V2VCxZQUF1QztZQUV6QzJyQixTQUFTM3JCLEdBQTRCLE9BUHJDdVQsYUFPU3ZULG1CQUFxRDtZQUU5RDRyQixZQUFZNXJCLEdBQStCLE9BVDNDdVQsYUFTWXZULHNCQUEyRDtZQUV2RTZyQixhQUFhN3JCLEdBQWdDLE9BWDdDdVQsYUFXYXZULHVCQUE2RDtZQUUxRThyQixRQUFROXJCLEdBQTJCLE9BYm5DdVQsYUFhUXZULGtCQUFtRDtZQUUzRCtyQixhQUFhL3JCLEdBQWdDLE9BZjdDdVQsYUFlYXZULHVCQUE2RDtZQUUxRWdzQixjQUFjaHNCLEdBQWlDLE9BakIvQ3VULGFBaUJjdlQsd0JBQStEO1lBRTdFaXNCLGlCQUFpQmpzQjtJQUNuQixPQXBCRXVULGFBbUJpQnZUO0dBQ2M7WUFFL0Jrc0IsT0FBT2xzQixHQUEwQixPQXRCakN1VCxhQXNCT3ZULGlCQUFpRDtZQUV4RG1zQixTQUFTbnNCLEdBQTRCLE9BeEJyQ3VULGFBd0JTdlQsbUJBQXFEO1lBRzlEb3NCLE9BQU9wc0IsR0FBMEIsT0EzQmpDdVQsYUEyQk92VCxpQkFBaUQ7WUFFeERxc0IsS0FBS3JzQixHQUF3QixPQTdCN0J1VCxhQTZCS3ZULGVBQTZDO1lBRWxEc3NCLEtBQUt0c0IsR0FBd0IsT0EvQjdCdVQsYUErQkt2VCxlQUE2QztZQUVsRHVzQixRQUFRdnNCLEdBQTJCLE9BakNuQ3VULGFBaUNRdlQsa0JBQW1EO1lBRzNEd3NCLE9BQU94c0IsR0FBMEIsT0FwQ2pDdVQsYUFvQ092VCxpQkFBaUQ7WUFFeER5c0IsS0FBS3pzQixHQUF3QixPQXRDN0J1VCxhQXNDS3ZULGVBQTZDO1lBRWxEMHNCLFNBQVMxc0IsR0FBd0IsT0F4Q2pDdVQsYUF3Q1N2VCxvQkFBa0Q7WUFFM0Qyc0IsZUFBZTNzQixHQUF3QixPQTFDdkN1VCxhQTBDZXZULDJCQUF5RDtZQUV4RTRzQixhQUFhNXNCLEdBQXdCLE9BNUNyQ3VULGFBNENhdlQseUJBQXVEO1lBRXBFNnNCLFlBQVk3c0IsR0FBd0IsT0E5Q3BDdVQsYUE4Q1l2VCx3QkFBc0Q7WUFFbEU4c0IsWUFBWTlzQixHQUF3QixPQWhEcEN1VCxhQWdEWXZULHdCQUFzRDtZQUVsRStzQixjQUFjL3NCLEdBQWlDLE9BbEQvQ3VULGFBa0RjdlQsc0JBQStEO1lBRTdFNUMsRUFBRTRDLEdBQXFCLE9BcER2QnVULGFBb0RFdlQsWUFBdUM7WUFFekNndEIsTUFBTWh0QixHQUF5QixPQXREL0J1VCxhQXNETXZULGdCQUErQztZQUVyRGl0QixTQUFTanRCLEdBQXlCLE9BeERsQ3VULGFBd0RTdlQsbUJBQWtEO1lBRTNEa3RCLE1BQU1sdEIsR0FBb0IsT0ExRDFCdVQsYUEwRE12VCxnQkFBMEM7WUFFaERtdEIsTUFBTW50QixHQUF5QixPQTVEL0J1VCxhQTRETXZULGdCQUErQztZQUVyRG90QixZQUFZcHRCLEdBQXdCLE9BOURwQ3VULGFBOERZdlQsZUFBNkM7WUFFekRxdEIsY0FBY3J0QixHQUFrQyxPQWhFaER1VCxhQWdFY3ZULHlCQUFpRTtZQUcvRXFDLEtBQUtyQyxHQUF3QixPQW5FN0J1VCxhQW1FS3ZULGVBQTZDO1lBRWxEc3RCLFNBQVN0dEIsR0FBNEIsT0FyRXJDdVQsYUFxRVN2VCxtQkFBcUQ7WUFFOUR1dEIsYUFBYXZ0QixHQUF5QixPQXZFdEN1VCxhQXVFYXZULHdCQUF1RDtZQUVwRXd0QixNQUFNeHRCLEdBQXlCLE9BekUvQnVULGFBeUVNdlQsZ0JBQStDO1lBRXJEd2dCLEtBQUt4Z0IsR0FBd0IsT0EzRTdCdVQsYUEyRUt2VCxlQUE2QztZQUVsRHl0QixRQUFRenRCLEdBQTJCLE9BN0VuQ3VULGFBNkVRdlQsa0JBQW1EO1lBRTNEMHRCLFFBQVExdEIsR0FBMkIsT0EvRW5DdVQsYUErRVF2VCxrQkFBbUQ7WUFFM0QydEIsU0FBUzN0QixHQUE0QixPQWpGckN1VCxhQWlGU3ZULG1CQUFxRDtZQUU5RDR0QixlQUFlNXRCLEdBQWtDLE9BbkZqRHVULGFBbUZldlQseUJBQWlFO1lBRWhGNnRCLEtBQUs3dEIsR0FBd0IsT0FyRjdCdVQsYUFxRkt2VCxlQUE2QztZQUVsRGtXLE9BQU9sVyxHQUEwQixPQXZGakN1VCxhQXVGT3ZULGlCQUFpRDtZQUV4RDJGLElBQUkzRixHQUF1QixPQXpGM0J1VCxhQXlGSXZULGNBQTJDO1lBRS9DOHRCLEtBQUs5dEIsR0FBd0IsT0EzRjdCdVQsYUEyRkt2VCxlQUE2QztZQUVsRG9XLE1BQU1wVyxHQUF5QixPQTdGL0J1VCxhQTZGTXZULGdCQUErQztZQUVyRCt0QixJQUFJL3RCLEdBQXVCLE9BL0YzQnVULGFBK0ZJdlQsY0FBMkM7WUFFL0NndUIsU0FBT2h1QixHQUEwQixPQWpHakN1VCxhQWlHT3ZULGlCQUFpRDtZQUV4RDJZLE9BQU8zWSxHQUEwQixPQW5HakN1VCxhQW1HT3ZULGlCQUFpRDtZQUV4RGl1QixZQUFZanVCLEdBQXdCLE9BckdwQ3VULGFBcUdZdlQsZUFBNkM7WUFFekRrdUIsU0FBU2x1QixHQUE0QixPQXZHckN1VCxhQXVHU3ZULG1CQUFxRDtZQUU5RDRXLE1BQU01VyxHQUF5QixPQXpHL0J1VCxhQXlHTXZULGdCQUErQztZQUVyRG11QixLQUFLbnVCLEdBQXdCLE9BM0c3QnVULGFBMkdLdlQsZUFBNkM7WUFFbERvdUIsTUFBTXB1QixHQUF5QixPQTdHL0J1VCxhQTZHTXZULGdCQUErQztZQUVyRHF1QixJQUFJcnVCLEdBQXVCLE9BL0czQnVULGFBK0dJdlQsY0FBMkM7WUFFL0NzdUIsS0FBS3R1QixHQUF3QixPQWpIN0J1VCxhQWlIS3ZULGVBQTZDO1lBRWxEdXVCLE1BQU12dUIsR0FBb0IsT0FuSDFCdVQsYUFtSE12VCxnQkFBMEM7Ozs7T0FubUVsRHNvQjs7T0FzMkRBMWE7T0FJQTZDO09BRUE4WDtPQUVBQztPQUVBQztPQUdBQztPQUVBQztPQUdBQztPQUdBQztPQUdBQztPQUVBQztPQUdBQztPQUVBQztPQUVBQztPQUVBQztPQUdBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUdBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUlBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUdBQztPQUVBN1o7T0FFQThaO09BRUFDO09BRUFyYztPQUVBc2M7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQTdjO09BRUE4YztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUlBQztPQUVBdGtCO09BRUFvRzs7UUFPRXRLO1FBUUE5RDtRQUVBd3NCO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBR0FDO1FBRUFDO1FBR0FDO1FBRUFDO1FBRUFDO1FBRUFDO1FBR0FDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUEzdkI7UUFFQTR2QjtRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUdBaHJCO1FBRUFpckI7UUFFQUM7UUFFQUM7UUFFQWhOO1FBRUFpTjtRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBM1g7UUFFQXZRO1FBRUFtb0I7UUFFQTFYO1FBRUEyWDtRQUVBQztRQUVBclY7UUFFQXNWO1FBRUFDO1FBRUF0WDtRQUVBdVg7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7Ozs7RTs7Ozs7O0dFMy9EUTs7SUFBVkksVUFBVTs4QkFBVkE7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFc7SSxPO0c7O0k7O0c7RztJLFE7SSxROztJO0ssUTs7Ozs7Ozs7Ozs7O3dEOzBEOzBEOztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztJO0c7O0k7Ozs7OztHOztJLHNCO0c7O0k7SyxNO0ssTTs7STtJO0ksVztJLHNCO0c7OztJLGtCLHNCLGdDOzs7SyxNOzs7TyxhOztPO1EsSztRLEs7Ozs7O087USxPO1EsTztRLEs7O2dDOzt1QztROzs7O3NDO087O087USxPO1EsTztRLE87USxLOzs7Ozt3QztTOzs7O3VDO1E7O087O0c7O0k7SyxLO0ssSzs7Ozs0Qjs7SSxzQjtHOztJO0ssSztLLEs7OztLOzthOztJO3FDO0c7OztLLG1CO0k7SSxJLGlCLG1COzs7TSxNOztNLE07Szs7Ozs7Ozs7OEI7Ozs7OEI7Ozs7OztNLFk7Ozs7Ozs4Qjs7Ozs7TTs7SSxnRDtnQjs7SyxNO0k7Rzs7STs7ZTtlOzs7SyxPLHlCOztJLG1CLEk7STtjLHlCO0ksSSxrQjs7OztNLHlCO007Ozs7O0ksTzs7cUIsaUM7O0k7Ozs7Rzs7STs7OztJO0c7O0k7NkM7O0s7O00sSztLO0ssTzs7STtJLE87Rzs0QiwrQjs7O0s7Ozs7STtJO0ksWSxPOzs7OztvQzs4QjtHOztJOztJLE87Rzs7STtJOzs7STs7SyxLOztLOzs7eUI7STtHOztJO0k7Ozs7STs7OztjLDRCOzs7Rzs7STs7Szs7O0k7Rzs7STtJO0kseUI7bUIsaUI7O0k7Ozs7Ozs7OztHOztJOzs7Ozs7OztHOztJLGtCOztJO0c7O0ksc0I7SSxlO0k7OztLOztJO0ksNkI7Rzs7STtJOzs7O0s7O0k7STtHOztJOzs7Ozs7OztHOztJLGtCOztJO0c7O0ksc0I7SSxlO0k7OztLOztJO0ksNkI7Rzs7STtJOzs7O0s7O0k7STtHOztJOzs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7d0M7OztJOztLOztNO00sc0I7Szs2Qjs7Ozs7O0ssYztLOzZCOzs7OztJOzs7Szs2Qjs7Ozs4Qjs7STs7Ozs7Rzs7O0ssSTs7Ozs7TTs7Ozs7O007Ozs7O3lCOztNOztNO08sSztPOzs7Ozs7Ozs7Szs7TTtPLEs7O087a0I7a0I7O007OztPLHlCOzs7O007SztLO00sSzs7TTs7TSxNOzs7UTs7UTs7Ozs7Ozs7O3NCOztROztpQzs7UTs7STtJO0k7RztxQix5QztvQiw4QjtzQiw4QjtxQixrQjs7SSxxQixVLFcsUztJLGMsTTs7OztNOzs7OztTO1M7Ozs7O2lCLFUsVyxVOzs7O0s7SztLO0s7O0k7STtJO0k7OztJLHFCLFUsVyxTO0ksYyxNOzs7O007Ozs7O1M7O21COzs7OztpQixVLFcsVTs7OztLO0s7SztLOztJO0k7STtJOzs7SSxxQixVLFcsUztJLGMsUTs7Ozs7Ozs7TztPO087Tzs7Ozs7OztTOzttQjs7Ozs7aUIsVSxXLFU7O0s7SztLO0s7O0k7STtJO0k7OztJLHFCLFUsVyxTO0ksYyxNOzs7O007Ozs7O1M7O21COzs7OztpQixVLFcsVTs7OztLO0s7SztLOztJO0k7STtJOzs7STs7Ozs7O0c7O0k7Ozs7Ozs7Ozs7SztNLE87Ozs7Ozs7Ozs7bUM7O0s7O00sVTtNLE07Ozs7O0k7Ozs7Ozs7O1k7Ozs7Ozs7Ozs7YTs7O2MsTzs7YSxjLFE7Ozs7O2MsTzs7Ozs7OztjLE87Ozs7YSxPOzs7RztzQixPLHFCOzRCLGE7MkIsYTtrQyxhOzZCLGE7bUMsYTsyQixZOzJCLFk7Z0MsWTs7STs7O0c7cUIsaUM7O0k7Ozs7Ozs7WTs7Ozs7Rzs7STs7OztPO1EsTztPLE87O0s7Ozs7Szs7SyxPOztJLGtCLEk7STs7SSxPO0c7NEIsNkI7OztLOzs7O0k7SSxJOztpRDs2QjtHOztrQixxQixhOztJLGMsTSxpQztJOzs7aUMsMEI7Ozs7Ozs7O007TTtPLG9COzs7OztLO0s7Szs7Ozs7Ozs7O007TTtPLG9COzs7OztLO0s7SztLO0s7Ozs7Ozs7O0s7SztNLG9COzs7OztJO0k7STtJO0c7O2tCLHdCLGE7O0ksYyxNLGlDO0k7Ozs7Ozs7TTtNO08sb0I7Ozs7O0s7TTs7O0s7SztLO0s7Szs7Ozs7Ozs7SztLO00sb0I7Ozs7O0k7STtJO0c7O2tCLHdCLGE7O0ksYyxNLGlDO0k7Ozs7Ozs7TTtNO08sb0I7Ozs7O0s7TTs7O0s7SztLO0s7Szs7Ozs7Ozs7SztLO00sb0I7Ozs7O0k7STtJO0c7O0k7OztLLEksTTs7Ozs7O0k7Ozs7OztZOzs7O0c7eUIsTyx1QjtnQyxZOzJCLFk7Rzs7STtLLE07Szs7aUI7Ozs7Szs7OztLOzs7STtHOztJOzs7OztJOztLLE07OztJO2tCO0sseUI7SztNOztPLFE7Ozs7O3FCLE87TTs7TyxROzs7OztHOztJOzs7OztJOztLLE07OztJO2tCOztLLFksTztLOztNOztPLFE7Ozs7O00sWSxPO007O087Uzs7Ozs7Rzs7STs7Ozs7STs7SyxNOzs7STtrQjs7SyxZLE87Szs7TTs7TyxROzs7OztNLFksTztNOztPO1M7Ozs7O0c7Rzs7SSxVO3VCLE8seUM7STs7Ozs7Ozs7Ozs7Ozs7OztHOztJLFU7dUIsTyx5QztJO0s7TTs7O0s7SztLOzs7STs7Rzs7SSxVO3VCLE8seUM7STtLO007OztLO0s7Szs7O0k7O0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7WUk3SEFhLE1BQU9DLEdBQVVDLEdBQVcsT0FBckJELE1BQVVDLFVBQWdCO09BQ2pDQztZQUNBQyxPQUFPSCxHQUFJLE9BQUpBLEVBQUs7T0FDWkk7WUFFQUMsVUFBVUwsR0FBRUMsR0FBSSxjQUFORCxJQUFFQyxXQUFpQjtZQUM3QkssT0FBS04sR0FBRUMsR0FBSSxPQUFORCxJQUFFQyxFQUFXOztJQUlsQk07SUFDQUM7SUFIQUM7SUFDQUM7SUFHQUM7SUFDQUM7SUFDQUM7WUFFQUM7SUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFMWk47O1dBREFEO0dBY1U7Ozs7T0FsQlZEO09BVUFRO09BUkFMO09BQ0FDO09BQ0FIO09BQ0FDO09BQ0FHO09BQ0FDO09BQ0FDO09BWkFWO09BRkFKO09BQ0FHO09BSUFHO09BRkFEOzs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QztZQUdBQztZQUVBQztZQUVBQztZQUdBQztZQUdBQztZQUVBQztZQUVBQztZQUdBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUdBQztZQUVBQztZQUdBQztZQUdBQztZQUdBQztZQUdBQztZQUVBQztZQUVBQztZQUdBQztZQUdBQztZQUdBQztZQUdBQztZQUdBQztZQUdBQztZQUdBQztZQUdBQztZQUdBQztZQUVBQztZQUdBQztZQUdBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUdBQztZQUdBQztZQUVBQztZQUdBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUdBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUdBQztZQUVBQztZQUVBQztZQUdBQztZQUVBQztZQUVBQztZQUdBQztZQUVBQztZQUdBQztZQUdBQztZQUdBQztZQUdBQztZQUVBQztZQUdBQztZQUVBQztZQUVBQztZQUdBQztZQUdBQztZQUdBQztZQUdBQztZQUVBQztZQUVBQztZQUVBQztZQUdBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUdBQztZQUVBQztZQUVBQztZQUVBQztZQUdBQztZQUVBQztZQUdBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUdBQztZQUdBQztZQUVBQztZQUVBQztZQUdBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUdBQztZQUdBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUdBQztZQUdBQztZQUdBQztZQUdBQztZQUVB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDbGxDRTdYO0lBQ0E4WDs7SUFDQXBnQjtJQUNBdUk7SUFDQUM7SUFHQTZYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QixXLHFDOztJLE87OztHO3NCLE8sb0M7O0ksUTtJO0ksTztHOztJLFc7O0ssVTtLOzs7STs7O0c7O0k7O0ksTztHOztJLEksdUM7Ozs7TSxZOzZDO007Ozs7OztHOztJLEkscUI7OztrQjs7O0c7O0k7STtLO007O007TTtrQjs7Ozs7Szs7O0c7RywrQjs0QixvQix1Qjs7SSxpQjs7O0k7SSxJO0k7O0ssNkIsbUI7aUI7Ozs7OztNOzs7VTs7Rzs7SSxtQzs7OztNLFk7O007Ozs7OztHOzJCLCtCO2dDLG1COztJOzs7O007TTs7Ozs7O0c7O0k7O0k7SztNOztTOzJCLE8sa0I7Uzs7O1E7TTs7UzsyQixPLGtCO1M7OztRO00scUIscUM7Szs7Ozs7O1E7UztTO1M7UztVO1UsVztVO1U7OztVOzs7Ozs7OztrQixTLFM7OztNOztLO0s7OztLO00sb0MsbUI7eUIsTyxzQjtLO0s7Szs7O0c7O0k7Ozs7Ozs7Ozs7UTtTLGE7Ozs7Ozs7Ozs7Rzs7dUIsUztnQyxTOztJO0c7O0k7STs7Ozs7TyxZOzs7O1M7UyxNOzs7Ozs7Ozs7Ozs7NEI7OztHOztJO0k7Ozs7O1k7UTtRLE07Ozs7Ozs7SztLOzs7OzRCOzs7Rzs7STtJLDZCLG1CO0c7MEIsNkI7O0k7STs7Ozs7SSxnQjs7O0k7Ozs7O007OztPOzs7OztVLEc7VyxNOzs7Ozs7USxJOzs7Ozs7O087USxZOzs7UTtRLEk7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7RztHO3lCLCtCOztJOzs7Ozs7O0c7O0ksSSxnQjs7Rzs7SSxjOzs7STtpQjs7OztNLDJEO007Szs7O0c7O0k7O0ssTTs7STtHO3VCLG1DOzJCLGtCLGM7O0k7O0ksa0I7OztHOztJOztLLE07O0k7RzsyQixrQzs7STs7SSx3QjtrQiwrQjtJO0c7O0k7OztJLEcsMEI7Ozs7Rzs7STs7O0c7OztJO0k7OzthO2M7O2M7Yzs7OztjOzs7O2M7YTs7Rzs7STs7O0k7Rzs7SSxZOztJOzs7STs7O2lCO0k7Rzs7STtJO2tCO2E7Szs7TTswQixvQjs7O1M7UztTO1E7SztLOzs7SSxRO0ksZ0I7d0Isa0M7O0s7aUI7O0ssYTtLO0k7STtJO0k7Rzs7SSxZO0ksa0I7c0Isb0I7O0s7Szs7STtJO0k7Rzs7SSxZO0ksa0I7c0Isb0I7O21CLGtDO0s7STtJO0k7Rzs7SSxZOztJLFM7SSxnQjtzQixnQzs7Szs7O00sZTs7SztJO0k7STtJOzs7SSxZO0ksa0I7c0Isb0I7a0IsZSxrQztJO0k7OztJLFE7SSxjO3NCLG9CO2tCLDBCO0k7STtHOztJLFk7SSxrQjtzQixvQjs7SztLLE87STtJO0k7OztJLFk7SSxrQjtzQixvQjs7SyxZO2lCOztLO0k7STtJOzs7SSxZO0ksa0IseUI7c0Isb0I7O0ssSSxlOzs7O00sZTs7OztJO0k7STs7O0k7SSxZO0ksa0IseUI7c0Isb0I7O0ssSSxlOzs7O00sTzs7O0s7STtJO0k7OztJLFE7O0k7SSxlO3NCLGdDOztLO0k7STtJO0k7OztJLFE7O0ksUTtJLGU7c0IsZ0M7a0IsaUQ7STtJO0k7OztJLFE7O0ksUTtJLGU7c0IsZ0M7O0s7Ozs7OztJO0k7STtJOzs7SSxTO0ksZSx5QjtzQixvQjs7SztjO0s7STtJO0k7Rzs7SSxZO0ksa0IseUI7c0Isb0I7O0s7YztLO0k7STtJOztzQiw2Qjs7STs7O007TSxXOzs7O007OztPO087Ozs7Ozs7Rzs7STtLOzs7Szs7c0IsWTtLLE87STs7SztNOzt3QjtNOzs7OztPLE07OztJO3VCLDRCO0k7STtHOztJO0s7OztLOztzQixZO0ssTztJOztLOztrQjs7TTtPO1EsUTs7Ozs7O0k7dUIsNEI7STtJO0c7O0ksWTs7STtJLEksZTs7SztpQjs7SztJOztLOzs7O08sTTs7TTs7SyxrQjtxQzs7YSx5QiwyQjs7SztLO0s7TTtNOzs7bUI7O0s7STswQjtJO0k7OztJO0s7Szs7O3lCLFM7O1UsTTtTO0ssTzs7bUM7O21DO3NCLFM7O0s7OztLLDBCOztJO0k7STtJO0c7O0ksUzthO0ksNEIsMEI7c0IsaUM7O0s7OztNLGU7O0s7STtJO0k7STtHOztJLFM7YTthO0k7Ozs7SztLO0s7c0IsNkM7O0s7OztNLGU7O0s7STtJO0k7STtJO0c7O0ksUzthO2E7YTtJOzs7OztLO0s7Szs7SztJOztLOzs7TSxlOztLO0k7STtJO0k7STtJO0c7O0ksUzthO2E7YTthO0k7Ozs7OztLO0s7SztLOztLO0k7O0s7Ozs7Ozs7Ozs7Ozs7TSxlOztLO0k7STtJO0k7STtJO0k7Rzs7SSxTO2E7YTthO2E7YTtJOzs7Ozs7O0s7SztLO0s7O0s7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7TSxlOztLO0k7STtJO0k7STtJO0k7STtHO29CLHVCLGMsTTs7SSxnQix3QixTOzs7O0s7O2UsWTs7ZTtjOzs7O0ksUTtJLGM7c0IsZ0M7O0s7Z0I7O2lCOztLO0k7STtJO0k7RztHOztJOzs7dUMsUztJLHdCO2tCLHVCLE87O0s7O0s7SztLO0ssTztJO0k7Rzt1QixjOztJO0k7O0k7OzthO2EsRywyQjs7Yzs7O2M7Yzs7OztjOzs7O2M7Ozs7Rzs7STs7O0k7Rzs7SSxtQjs7STtHOztJOzs7O2dCLE87OztJO0c7O0ksbUI7OztJLHdCOztLLE07MkIsMEI7STs7O0k7STs7b0MsTzs7Ozs7O0k7Rzs7STtJO2tCO2tDLGtCO0s7O007TTtNLG9CLG9COzs7UztTO1M7UTtLO0s7OztJO0s7O007NEIscUI7OztTLGE7Uzs7UTtLO0s7O0ksZ0IsZTt3QixrQzs7SyxJLGU7bUMsRyw0QjtLLGE7SztJO0k7STtJO0c7O0k7SSxZO0ksa0I7c0Isb0I7O0s7aUI7O0s7STtJO0k7OztJO0kscUMsVztJLGtCO3NCLG9CO2tCLGUsZ0M7STtJOzs7STtJOztxQjs7SyxXOzs7O0s7O007MEIscUI7c0IsZSxpQztLO0s7O0ksZ0I7d0IsaUM7O0s7SyxlO0k7STtJO0k7Rzs7STtJLDZCLE87SSxjO3NCLG9COztLO0ssTztJO0k7STtHOztJO0k7Szs7TTswQixvQjs7O1MsWTtxQjs7UztRO0s7Szs7SSxrQixRO2dCOztJOzs7SSxtQjtJLGtCLHlCO3NCLG9COztLLEksYTs7TSxNOzs7SyxlO0k7Z0MsaUM7STtJOzs7SSxtQjtJLGtCO3NCLG9CO2tCLGdDO0k7STtHOztJOztLLHdCLE8scUI7OztJLFE7SSxlO3NCLGlDOztLO2lCOztLLGU7STtJO0k7STs7O0k7STs7STtLOztNOzBCLHFCO3NCLHVDO0s7Szs7SSxlO3dCLGlDO29CLGdEO0k7STtJO0c7O0k7SSxROztJO0s7O007MEIscUI7c0IsdUM7SztLOztJLGU7d0IsaUM7b0IsZ0Q7STtJO0k7Rzs7STtJLFM7SSxlO3NCLG9COztLO2lCOztLLGU7STtJO0k7Rzs7STtJLFk7SSxrQjtzQixvQjs7SztpQjs7SyxlO0k7STtJOzs7STtJO0ssbUI7O0s7O0k7SyxtQjs7Szs7SSxtQjtzQixpRDs7SztNLHFDLE87O00sTzs7SyxlO0k7O0ssbUI7O0s7STtJO0k7Rzs7STtJLHFDO0k7O0s7SztLOztLO3dCOztLO0k7O0s7Ozt5Qjs7TTs7O2dEO0s7OztNLG9CO007TTs7O0s7O007TTtNOzs7SztLOzs7STtJO0k7STs7O0k7Ozt3Qzs7O0c7O0k7O0s7SzttQjtLO0s7SztJO0k7SztLOztvQyxTLG1CLFM7SyxPOzs7Szs7OzBCLFM7c0Isd0I7TTtLO0s7OzttQzt3QixTO29CLGdDO0k7STtJO0k7Rzs7STtJOztvQyxXO0s7O007MEIsb0I7c0IsZSxtQztLO0s7Ozs7Szs7TTs0QixxQjt3QixlLHNDO0s7Szs7SSxlO3dCLGlDOztLO0ssZTtJO0k7STtJO0c7O0k7STs7OztzQyxXOzs7Ozs7OztPOztRO1E7UTs0Qiw2Qzs7O1csSSxpQjtXLGU7VTtPO087TztPOzs7O0k7Ozt3Qzs7Ozs7Rzs7STtJOzs7Ozs7OztRLFc7Ozs7Ozs7Ozs7OztROztTO1M7Uzs7O1k7Vzs7O1ksSSxpQixpQjtZLGU7VztRO1E7UTtRO1E7Ozs7O0k7Ozt3Qzs7Ozs7O0c7O0k7STs7Ozs7Ozs7OztTLFc7Ozs7Ozs7Ozs7Ozs7OztTOztVO1U7VTtVOzs7YTs7O1k7OzthO2M7YztjO2M7YyxJO2E7WTtTO1M7UztTO1M7Uzs7Ozs7O0k7Ozt3Qzs7Ozs7OztHOztJO0k7Ozs7Ozs7Ozs7OztVLFc7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOztXO1c7VztXO1c7OztjOzs7OzthOzs7YztlO2U7ZTtlO2U7ZSxJO2M7YTtVO1U7VTtVO1U7VTtVOzs7Ozs7O0k7Ozt3Qzs7Ozs7Ozs7Rzs2QjtnQzttQiwwQzs7STs7Ozs7Rzs7STs7Ozs7RztvQixvQjs7SSxtQjtJLGtCO3NCLG9COztLLFc7SztJO0k7STs7b0IseUI7b0IseUI7O0ksWTs7SSwwQjtJO3NCLG9CO2tCLG9EO0k7STs7Z0M7O0ksMEM7Rzs7SSwwQztHOztJLDBDO0c7O0k7O2tDOzs7Rzs7STs7a0M7OztHOztJO0c7d0Isb0Q7bUIsMEM7RyxJLDJCOztJO2dEO0c7O0k7Z0Q7Rzs7STtnRDtHO29CLDBDOztJO2dEO0c7O0k7O2tDOzs7Rzs7STtnRDtHO2dDOztJLDBDO0c7O0k7Z0Q7Rzs7STtnRDtHOztJO2dEO0c7O0k7Z0Q7Rzs7STs7Z0M7OztHOztJLHlDO0c7O0kseUM7Rzs7SSx5QztHO3FCLHdEOztJLHlDO0c7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7O0kseUM7Rzs7SSx5QztHOztJOztnQzs7O0c7b0IsdUQ7b0IsdUQ7b0IsdUQ7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7O0ksNkM7Rzs7STtHOztJO0c7O0k7Rzs7SSx5QztHOztJLHlDO0c7O0kseUM7Rzs7SSx5QztHO0c7STtJO0k7STtJO0k7O0k7SSxvQztHOztJLCtCLGlCO0c7dUIsK0Isb0I7dUIsK0Isb0I7Rzs7STs7Szs7TTs7Uzs7VSxPOztTLE07UTs7OztJLCtCLGM7Rzs7STtJOztpQzswRDs7SywrQjtLLGU7bUI7SztNOzBCLHFCOzs7UztTOztRO0s7Szs7Ozs7OztNLG1DLFM7O0ssdUI7O007Tzs2QixzQjs7O1U7c0I7O1U7UztNO007O0s7TTtNLHNCLHNCOzs7UztxQjs7UztRO2dDLG9DOzs7UztTOzs7VTs7O1U7UztRO0s7SztLOzs7OztLOzs7ZSxZOztlO2M7OztJLHVCO3dCLG9DOztLO2lCOztLO0k7STtJO0k7RztHOzhCLDhDOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOztnQzs7O0c7O0k7O2dDOzs7Rzs7O3VCLDRCOzJCLGdDOzBCLDJCO3lCLDhCO3VCLDRCOztLO0sscUI7STs7SztLLHFCO0k7MkIsOEI7O0s7SyxxQjtJOzBCLCtCOztLO0sscUI7STs2QixrQzt5Qiw0Qjt5Qiw4Qjs7SztLLHFCO0k7MkIsZ0M7K0Isb0M7bUMsd0M7O0s7STs7SztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUkvaENRLElBbkJSaUQsY0FDQUMsa0JBQ0FDLGlCQWlCQUM7YUFFQUMsT0FBT0M7S0FDVDtNQUF5QixRQUFBO01BQVBDO01BQWRDO01BQ0FDLGNBRktIO21CQUdvQkk7TUFDekIsU0FEeUJBO1dBR2ZDLElBSGVEO09BRHpCRCxhQUkwQixXQTNCNUJSLE9BMkJZVSxHQUpWRjs7ZUFHUUgsSUFGaUJJLFFBRHpCRCxhQUdRSDtNQUdSLE9BTHlCSTtLQUt0QjtLQUxLLElBQVJFLFFBQVEsK0JBRlJKO0tBUUosbUJBUElDLFNBQ0FH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SUE4QjtPQU9BSztPQUdBRTtPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQU1BRTtPQUdBQztPQU5BRjtPQVNBRztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQW1FQXNCO09BeUJBRztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBRTtPQUdBQztPQUdBQztPQXpJQXpDO09BSEFEO09BSEFEO09BU0FHO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09Bc0ZBd0I7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FNQUU7T0FHQUM7T0FOQUY7T0FTQUc7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FTQUc7T0FIQUQ7T0FIQUQ7T0FTQUc7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FRQUM7T0FFQUM7T0FnQ0FLO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFD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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHVXJLSjs7Ozs7Ozs7SUF3bkNRc2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTFuQ0pDO0lBZ0tBQzs7Ozs7Ozs7Ozs7OztJQUFBQzs7Ozs7Ozs7Ozs7OztJQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBOUpKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUI7SSxXO0c7Rzs7SSxJLFcsb0I7Ozs7Szs7OztNO0s7SztLO0s7O007TTtNOztLO0ssVztLO0ssTzs7Rzs7O0k7SyxPO0ksTztHOztJO0ssTztJLE87Rzs7STtLLE87SSxPO0c7O0ksaUI7Rzs7SSx3QjtHOztJO0ksTzs7Rzs7SSxXO0ksTztHOzRCLE8sNkI7NkIsK0M7RztJLGdCO0kscUI7SSxpQjtJLHNCOztJLG1COztJO0c7O0k7SyxPO0ksTztHOztJO0ssTztJLE87Rzs7STtLLE87SSxPO0c7O0k7SyxPO0ksTztHOztJLGdCO0c7O0k7aUI7RztnQyxPLG9DOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87RztpQyxPLGtDOztJO0s7TSxPO00sTztLOzs7OztLO007TTs7O1M7Ozs7Ozs7O1M7UTtLO0s7OztTLEcsbUM7UztVLHVCO1U7Ozs7OztVO1c7OzBCO1c7Ozs7a0M7Ozs7UTtNOzs7Ozs7OztjOzs7O007TztPO2U7SztNO1E7Vzs7OzttQjs7O1M7O1U7VTtTO1MsTztRO00sTztLLE87O0c7O0ksSSxXLHNDOzs7O3dDOztLO00sRztPLE07TSxJLE87Ozs7O00sRztPLE07cUI7O0s7TSxHO08sTTtNO08sTztPLE87Ozs7OztvQjs7Szs7Rzs7STtLLEksVyw4Qjs7Ozs7Ozs7O0c7O0k7O087O0k7Rzs7O0k7O0s7O00sSSxXLHdCOzs7a0M7OztLO0ssTztJO0k7SztLO29CO00sVzs7OztJO0k7Ozs7Szs7SyxPO0k7SSxPO0c7O0k7Rzs7O0k7O0c7RyxzQjs7STtJLE87Rzs7STtLLFE7OztLLFM7SSxJOzs7SztLO0ssTTs7STtJO0c7O0k7SyxROzs7SyxVO0ksSTs7O0s7SztLLE07O0k7STtHOztJO0ssUTs7O0ksSSxjOzs7SztLO0ssTTs7STs7O0ssUztLLFU7STtLOzs7OztLO0s7SztLO0ssTTs7STtJO0k7Rzs7STtLLFE7OztJLEksYzs7O0s7SztLLE07OztJLEksYzs7O0s7SztLO0s7SyxNOztJOzs7SyxTO0ssVTtLLFU7STtLOzs7Ozs7Ozs7OztLO0s7SztLO0s7SztLLE07O0k7STtJO0k7Rzs7SSxPO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtLLFc7Szs7Ozs7TSxNOzs7O0c7O0ksTztHOztJO0c7O0k7Rzs7O0k7Ozs7STs7O0ksSSxvQjtJO0k7STtHOztJLEkscUI7STtJLEk7Ozs7O0k7Rzs7STs7O0s7SztJO0k7SSxJOzs7OztJOzs7STs7OztLO0s7STtJO0ksSTs7Ozs7STtJOzs7SSxXO0k7SztLO00sTztNLFc7Szs7OztLO0ssTTs7Rzs7SSxPLHNCO0c7O0ksVztJO0k7STs7SztNLEksWTs7Ozs7Ozs7O0ssa0IsSzs7ZSxzQjtNO007TyxTO08sVTtNO007O1UsdUI7O0c7c0I7NEI7NEI7c0I7NEI7O0k7O3NCOzRCOzRCO3NCO3NCO3NCO3NCO3NCO3NCO3NCOzRCOzRCOzRCOzRCOzRCOztJOzs7STs7c0I7c0I7c0I7O3NCO3NCO3NCOzRCO3NCO3NCO3NCO3NCO3NCO3NCO3NCOzs2Qjt1Qjs7STs7dUI7dUI7dUI7Ozs7O3VCO3VCO3VCO3VCOzZCOzZCOztJOzs7STs7Ozs7OzZCOzZCOzs7Ozs7dUI7dUI7dUI7O3VCO3VCO3VCO3VCOztJOzs2Qjs2Qjt1Qjs7STs7O0k7OzZCOzZCO3VCOztJOzs2Qjs7dUI7Ozs7Ozs7UTs7NEI7NEI7Ozs7O3VCOzs2Qjs2Qjs7STs7O3VCO3VCO3VCO3VCOztJOzt1Qjt1Qjt1Qjt1Qjs2Qjt1Qjt1Qjs7STs7NkI7O0k7OzZCOzZCOzs7Ozs7O3NCOztzQjtzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw0QyxlOztLO1k7Szs7OztJOzs7Ozs7SyxVO007TTs7b0I7TTtNOzs7OztHO0c7MkIsZ0I7O0k7O087O08sTzs7TyxPOztPLE87ZSxPOzs7O0k7OztROztROztROztRO2dCOztJO0c7O0k7Ozs7Ozs7Ozs7O3lDOzs7Ozs7O0c7RyxJLGM7O0k7STs7STs7STtHO29CLFk7bUIsWTt1QixZOzRCLG1COzhCLG1DO2dDLDBDOztJO0c7d0IsYztHOztJOztjO0k7b0IsdUI7SSxPO0c7RyxJLGdCOztJO0k7O0ssbUI7O0s7STt3QixzQjs7STtHO3NCLFk7cUIsWTt1QixZOztJO0c7MEIsVzs7O0ksTzs7Ozs7O0c7STs7OztzQixPLDRCO3lCLE8sdUM7c0IsTyw0Qjs7STtLO00sUTs7O00sTTtNLE07Szs7OzsyQjs7O0c7O0k7Z0M7SSxVO0ksTztHOztnQyxPLHNCO0ksTztHOzs7SyxlO0s7SztJO0k7STtJO0k7RztHOzs4QixPLG1CLFM7O0k7O0c7RztJOzs7UTtRLE87TztJOzRCLDBCOzhCLG1COzs7SztLLE87STtJO0ksTztHOzs7STs7O2U7O0ksTzs7OztZOztJO0s7Uzs7OztJO2E7O0ssTzs7WSxPOztJLE87OztJOzs7O0k7Ozs7STs7Ozs7eUIscUIsTyxpQjtLLE87OztlOztnQixNO2dCLE07ZSxPOzs7Ozs7O2M7STtJO0c7RzsrQixvQjtrQyx5QjtHO2dDLHFCO21DLDBCO3dCLFM7O0k7STtnQixPOzs7O0ssTzs7O0k7Rzt5QixTO2tDLHFDOzJCLGlDOzJCLGlDOzRCLGlDOzRCLGlDOzZCLGlDOztJO0kscUM7Ozs2QiwwQjs7O3lCLE8sd0M7OztJO0kscUM7Ozs7Ozs7YyxPO2E7OztnQyxrQztvQyxzQzt1QixzQjt1QixzQjt3QixzQjt3QixzQjt5QixzQjs7SztLO007STs7SztLO007STtJOzs7Ozs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7OzthR3BPTW1FLE9BQU9DLEdBQUVDO3lCQUNtRCxPQURuREEsRUFDb0Q7S0FBL0QsV0FBVSxpQkFEREQsR0FBRUMsSUFBRkQ7SUFDeUQ7YUFFaEVFLE9BQU9ELEdBQUksT0FBSkEsS0FBa0I7YUFVekJFLElBQUlGLEdBQUVHO0tBQ1IsT0FEUUEsSUFBRkgsT0FFSixpQkFGSUEsTUFBRUcsS0FJTixXQUpJSCxNQUFFRztJQUlLO2FBRVBDLElBQUlKLEdBQUVH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QztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQUlBQztPQUVBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUdBQztPQUVBQztPQUdBQztPQUdBQztPQUlBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUlBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUdBQztPQUNBQztPQUdBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STs7Rzs4QixPLHVDOztJLE87O0c7RyxXOzhCLE8sbUM7O0ksVztJLE8sK0I7Rzt5Qix1QixXLFM7O0ksSSxJOztLLFc7SyxxQjtLO2tCOzs7Rzs7SSxJLEk7O0ssSSxPLHVCLE87SyxxQjtLO2tCOzs7Rzs7STs7O00sVztnQjtPLE07O21CLGM7Ozs7Ozs0Qjs7O0c7O0k7O0ssUTs7Ozs7USxlO087Ozs7O0s7Ozs7Rzs7STtJOztPLE87TyxjO007O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLHNCOzhCLGlDOztJO0k7OzhCLGlCLGtCOzs7UTs7NEIsTzs7UTs7O1EsTzs7USxzQztRLFM7Ozs7UTs7OztROzs7Z0I7OztHOztJO0k7Ozs7Ozs7Ozs7OzRCOzs7USxPOzs0Qjs7O1E7OztRLGtCLE87O1E7O1Esc0M7UTs7Ozs7Ozs7Ozs7O0c7eUI7O0k7STs7Ozs7O1MsbUM7Uzs7UyxtQztTOztTLGtCLE87O1M7Ozs7Rzs2Qjs7STs7Ozs7Ozs7O0s7O007SyxPOztJLE07RztHLEksSTs7SSxVO0kscUI7STs7OztHO0ksa0I7Ozs7STtLLFc7SztLO0s7SztLOztLO007OztRLFk7UTs7Ozs7OztLLEk7Szs7O0k7O0s7SztLO0k7O0s7SztLO0k7O0ssSSxVLHdDOzs7OztpQjs7TTs7STs7SyxxQjs7aUI7O0s7STs7Szs7O1M7O1M7aUI7Ozs7O1E7MEM7OztRLGtCLFE7d0I7O1M7VSxRO1U7VTtVO1U7Ozs7Ozs7O2tDOzs7OzBCLDJCO1EsVTtRLCtCOztROzs7UztTO1E7MkM7OztRO3VCOzs7Ozs7Ozs7OztpQix1QjtpQjtpQjs7Ozs7Ozs7Ozs7OztpQix1QjtpQjtpQjs7Ozs7Ozs7Ozs7OztpQix1QjtpQjtpQjs7Ozs7Ozs7O1M7Ozs7O1Esa0M7UTtRLEksNkI7UTs7UTtROztROztTO1M7dUI7UTt1QjtROztROztROztTO1M7UTt5QjtRO3lCO1E7O1E7O1Esb0I7UTs7UTs7O1E7UTtRO3VCOzs7O1E7dUI7OztJOztLLGtCO0s7SztJO0k7STtJLEksbUI7SSxHOzs7SyxRO0ssaUIsTyx3QjtpQzs7SSxJLGUsb0M7O0s7SztJO0k7Ozs7O0k7WTs7Ozs7O0c7O0ksUTtJOztvQjs7O3NCOzs7OztHO0c7O0ksb0M7O0ssSTtLO007OztnQjtvQjtPO1E7OztROzs7OztNOztJOztLLEksVTtLOzs7TyxrQztRO1MsTTs7Ozs7TyxVOzs7Ozs7Ozs7YTs7O2MsdUI7ZTtnQjs7Ozs7O2M7ZTs7Ozs7Ozs7Ozs7O2E7Ozs7O2MsVTs7Ozs7Ozs7Z0I7Ozs7Ozs7O2lCO2lCO2tCOzs7aUI7OzsyQjs4Qjs7OzsyQjs7OztlLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROztTLGU7OztVLEksbUI7OztVLEksbUI7O1UsSSxtQjs7Ozs7Ozs7Uzs7O1E7Ozs7OztNO00sZTs7STs7SyxJO0s7cUI7Z0Isd0MscUI7TSxTO007OztnQjttQjtPLFM7Ozs7UyxPO1M7Ozs7O08sSTs7O007TSxJOztJO0ksSTs7O2M7RztzQiw0QjtnQyw0Qjs7STs7SyxNO0s7SztLOzs7O00sSSxJLHVCOzs7Ozs7Uzs7Ozs7O1E7UTs7OztPOzs7TTs7Ozs7SSxPO0c7NkIsMEI7dUMsMEI7Rzs7SSxVOzs7Rzs7SSxVOzs7Rzs7SSxVOzs2QixNO0k7Rzs7SSxVOzs2QixNO0k7Rzs7STs7SztLLGUsTTtLOztJLE87Rzs7STs7SztNO007SyxlLE07Szs7SSxPO0c7O0k7O0s7TTtNO007SyxhLE07SyxPOztJLE87RzttQywwQjs2QixvQjtnQyw2Qjs7SSxPO0c7O0k7SztNOztnQjtNO00sTTtLOzs7OzJCOzs7Rzs7SSxJLDJDOzs7MkI7OztHOztJO0k7O1E7OztNOztPOztRO1EsWTs7UTs7OztZOzs7Ozs7Ozs7SyxVO0ssTzs7Rzs7STtpQztHOztJO2lDO0c7O0k7Z0I7Ozs7Ozs7O0c7O0k7Szs7OztJOzs7Ozs7TTs7Tzs7UTtRO1E7O1c7Ozs7Ozs7OztLLE87O0c7OEIsb0M7O0ksRyxnQzs7STs7Ozs7O007O087O1E7UTtROztXOzs7Ozs7Ozs7SyxPOztHOztJO0c7O0k7STs7Ozs7O007O08sb0I7O1E7UztTO1M7Ozs7aUI7Ozs7Ozs7TztRO1E7UTs7Ozs7Ozs7SyxPOztHO21DLHlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJdUJ4REEwNEM7SUFDQUM7SUFDQUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBaEZBQyxZQUVBclU7SUFGYyxVQUVkQSw4QkFBQUEsVUFESzRDLElBQ0w1QyxNQURVLE9BQUw0QztJQUNBLE1BQUE7MERBQUw1QztHQUFrRTtZQWdJbEVzVTtJQUFrQjs7V0FDUnRRLGNBQUgzRix3Q0FBRzJGO2NBQUgzRjs7b0NBdERQNFY7O29DQUNBQzs7b0NBQ0FDOzRDQUNBQzs7T0FtRGdCOztXQWxD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Y2VzQ29udGVudCI6WyIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZmZzZXRcbnZhciBjYW1sX2ludDY0X29mZnNldCA9IE1hdGgucG93KDIsIC0yNCk7XG5cbi8vUHJvdmlkZXM6IE1sSW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBNbEludDY0IChsbyxtaSxoaSkge1xuICB0aGlzLmxvID0gbG8gJiAweGZmZmZmZjtcbiAgdGhpcy5taSA9IG1pICYgMHhmZmZmZmY7XG4gIHRoaXMuaGkgPSBoaSAmIDB4ZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfalwiXG5NbEludDY0LnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyx0aGlzLm1pLHRoaXMuaGkpO1xufVxuXG5NbEludDY0LnByb3RvdHlwZS51Y29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIGlmICh0aGlzLmhpID4geC5oaSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmhpIDwgeC5oaSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubG8gPiB4LmxvKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBoaSA9IHRoaXMuaGkgPDwgMTY7XG4gIHZhciB4aGkgPSB4LmhpIDw8IDE2O1xuICBpZiAoaGkgPiB4aGkpIHJldHVybiAxO1xuICBpZiAoaGkgPCB4aGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGxvID0gLSB0aGlzLmxvO1xuICB2YXIgbWkgPSAtIHRoaXMubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSAtIHRoaXMuaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvICsgeC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSArIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpICsgeC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gLSB4LmxvO1xuICB2YXIgbWkgPSB0aGlzLm1pIC0geC5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IHRoaXMuaGkgLSB4LmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyAqIHgubG87XG4gIHZhciBtaSA9ICgobG8gKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMubWkgKiB4LmxvICsgdGhpcy5sbyAqIHgubWk7XG4gIHZhciBoaSA9ICgobWkgKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMuaGkgKiB4LmxvICsgdGhpcy5taSAqIHgubWkgKyB0aGlzLmxvICogeC5oaTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMubG98dGhpcy5taXx0aGlzLmhpKSA9PSAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAodGhpcy5oaSA8PCAxNikgPCAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8gJiB4LmxvLCB0aGlzLm1pICYgeC5taSwgdGhpcy5oaSAmIHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb3x4LmxvLCB0aGlzLm1pfHgubWksIHRoaXMuaGl8eC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb154LmxvLCB0aGlzLm1pXngubWksIHRoaXMuaGleeC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9sZWZ0ID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMubG8gPDwgcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IHMpIHwgKHRoaXMubG8gPj4gKDI0IC0gcykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaGkgPDwgcykgfCAodGhpcy5taSA+PiAoMjQgLSBzKSkpO1xuICB9XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICgwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sbyA8PCAocyAtIDI0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IChzIC0gMjQpKSB8ICh0aGlzLmxvID4+ICg0OCAtIHMpKSk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCgwLCAwLCB0aGlzLmxvIDw8IChzIC0gNDgpKVxufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHRfdW5zaWduZWQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8ICh0aGlzLmhpIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IHMpKTtcbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubWkgPj4gKHMgLSAyNCkpIHwgKHRoaXMuaGkgPDwgKDQ4IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPj4gKHMgLSAyNCkpLFxuICAgICAgMCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAodGhpcy5oaSA+PiAocyAtIDQ4KSwgMCwgMCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9yaWdodCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICB2YXIgaCA9ICh0aGlzLmhpIDw8IDE2KSA+PiAxNjtcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8IChoIDw8ICgyNCAtIHMpKSxcbiAgICAgICgodGhpcy5oaSA8PCAxNikgPj4gcykgPj4+IDE2KTtcbiAgdmFyIHNpZ24gPSAodGhpcy5oaSA8PCAxNikgPj4gMzE7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDI0KSA+PiAxNixcbiAgICAgIHNpZ24gJiAweGZmZmYpO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKCh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDMyKSwgc2lnbiwgc2lnbik7XG59XG5NbEludDY0LnByb3RvdHlwZS5sc2wxID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmhpID0gKHRoaXMuaGkgPDwgMSkgfCAodGhpcy5taSA+PiAyMyk7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPDwgMSkgfCAodGhpcy5sbyA+PiAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubG8gPSAodGhpcy5sbyA8PCAxKSAmIDB4ZmZmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNyMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5sbyA9ICgodGhpcy5sbyA+Pj4gMSkgfCAodGhpcy5taSA8PCAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPj4+IDEpIHwgKHRoaXMuaGkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gdGhpcy5oaSA+Pj4gMTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnVkaXZtb2QgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgb2Zmc2V0ID0gMDtcbiAgdmFyIG1vZHVsdXMgPSB0aGlzLmNvcHkoKTtcbiAgdmFyIGRpdmlzb3IgPSB4LmNvcHkoKTtcbiAgdmFyIHF1b3RpZW50ID0gbmV3IE1sSW50NjQoMCwwLDApO1xuICB3aGlsZSAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+IDApIHtcbiAgICBvZmZzZXQrKztcbiAgICBkaXZpc29yLmxzbDEoKTtcbiAgfVxuICB3aGlsZSAob2Zmc2V0ID49IDApIHtcbiAgICBvZmZzZXQgLS07XG4gICAgcXVvdGllbnQubHNsMSgpO1xuICAgIGlmIChtb2R1bHVzLnVjb21wYXJlKGRpdmlzb3IpID49IDApIHtcbiAgICAgIHF1b3RpZW50LmxvICsrO1xuICAgICAgbW9kdWx1cyA9IG1vZHVsdXMuc3ViKGRpdmlzb3IpO1xuICAgIH1cbiAgICBkaXZpc29yLmxzcjEoKTtcbiAgfVxuICByZXR1cm4geyBxdW90aWVudCA6IHF1b3RpZW50LCBtb2R1bHVzIDogbW9kdWx1cyB9O1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gKHkpXG57XG4gIHZhciB4ID0gdGhpcztcbiAgaWYgKHkuaXNaZXJvKCkpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHZhciBzaWduID0geC5oaSBeIHkuaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgcSA9IHgudWRpdm1vZCh5KS5xdW90aWVudDtcbiAgaWYgKHNpZ24gJiAweDgwMDApIHEgPSBxLm5lZygpO1xuICByZXR1cm4gcTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgciA9IHgudWRpdm1vZCh5KS5tb2R1bHVzO1xuICBpZiAoc2lnbiAmIDB4ODAwMCkgciA9IHIubmVnKCk7XG4gIHJldHVybiByO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9JbnQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxvIHwgKHRoaXMubWkgPDwgMjQpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9GbG9hdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICgodGhpcy5oaSA8PCAxNikgKiBNYXRoLnBvdygyLCAzMikgKyB0aGlzLm1pICogTWF0aC5wb3coMiwgMjQpKSArIHRoaXMubG87XG59XG5NbEludDY0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gW3RoaXMuaGkgPj4gOCxcbiAgICAgICAgICB0aGlzLmhpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pID4+IDE2LFxuICAgICAgICAgICh0aGlzLm1pID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvID4+IDE2LFxuICAgICAgICAgICh0aGlzLmxvID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvICYgMHhmZl07XG59XG5NbEludDY0LnByb3RvdHlwZS5sbzMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICgodGhpcy5taSAmIDB4ZmYpIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmhpMzIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMubWkgPj4+IDgpICYgMHhmZmZmKSB8ICh0aGlzLmhpIDw8IDE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdWx0KHgseSkgeyByZXR1cm4geC51Y29tcGFyZSh5KSA8IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NvbXBhcmUoeCx5LCB0b3RhbCkgeyByZXR1cm4geC5jb21wYXJlKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9uZWcgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbmVnICh4KSB7IHJldHVybiB4Lm5lZygpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hZGQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYWRkICh4LCB5KSB7IHJldHVybiB4LmFkZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc3ViIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3N1YiAoeCwgeSkgeyByZXR1cm4geC5zdWIoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X211bCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbXVsKHgseSkgeyByZXR1cm4geC5tdWwoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX3plcm8gY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfemVybyh4KSB7IHJldHVybiAreC5pc1plcm8oKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpIHsgcmV0dXJuICt4LmlzTmVnKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hbmQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYW5kICh4LCB5KSB7IHJldHVybiB4LmFuZCh5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29yICh4LCB5KSB7IHJldHVybiB4Lm9yKHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfeG9yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3hvciAoeCwgeSkgeyByZXR1cm4geC54b3IoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfbGVmdCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9sZWZ0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9yaWdodF91bnNpZ25lZChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2RpdiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9kaXYgKHgsIHkpIHsgcmV0dXJuIHguZGl2KHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tb2QgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbW9kICh4LCB5KSB7IHJldHVybiB4Lm1vZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfaW50MzIgKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHggJiAweGZmZmZmZiwgKHggPj4gMjQpICYgMHhmZmZmZmYsICh4ID4+IDMxKSAmIDB4ZmZmZilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19pbnQzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19pbnQzMiAoeCkgeyByZXR1cm4geC50b0ludCgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19mbG9hdCAoeCkgeyByZXR1cm4geC50b0Zsb2F0ICgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKHggPCAwKSB4ID0gTWF0aC5jZWlsKHgpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgeCAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mb3JtYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF90b19pbnQzMlxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZm9ybWF0IChmbXQsIHgpIHtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoZi5zaWduZWRjb252ICYmIGNhbWxfaW50NjRfaXNfbmVnYXRpdmUoeCkpIHtcbiAgICBmLnNpZ24gPSAtMTsgeCA9IGNhbWxfaW50NjRfbmVnKHgpO1xuICB9XG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICB2YXIgd2Jhc2UgPSBjYW1sX2ludDY0X29mX2ludDMyKGYuYmFzZSk7XG4gIHZhciBjdnRibCA9IFwiMDEyMzQ1Njc4OWFiY2RlZlwiO1xuICBkbyB7XG4gICAgdmFyIHAgPSB4LnVkaXZtb2Qod2Jhc2UpO1xuICAgIHggPSBwLnF1b3RpZW50O1xuICAgIGJ1ZmZlciA9IGN2dGJsLmNoYXJBdChjYW1sX2ludDY0X3RvX2ludDMyKHAubW9kdWx1cykpICsgYnVmZmVyO1xuICB9IHdoaWxlICghIGNhbWxfaW50NjRfaXNfemVybyh4KSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gYnVmZmVyLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIGJ1ZmZlciA9IGNhbWxfc3RyX3JlcGVhdCAobiwgJzAnKSArIGJ1ZmZlcjtcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBidWZmZXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3BhcnNlX2RpZ2l0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3VsdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGJhc2U2NCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoYmFzZSk7XG4gIHZhciB0aHJlc2hvbGQgPVxuICAgICAgbmV3IE1sSW50NjQoMHhmZmZmZmYsIDB4ZmZmZmZmZiwgMHhmZmZmKS51ZGl2bW9kKGJhc2U2NCkucXVvdGllbnQ7XG4gIHZhciBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gIGZvciAoOzspIHtcbiAgICBpKys7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT0gOTUpIGNvbnRpbnVlO1xuICAgIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICAgIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGJyZWFrO1xuICAgIC8qIERldGVjdCBvdmVyZmxvdyBpbiBtdWx0aXBsaWNhdGlvbiBiYXNlICogcmVzICovXG4gICAgaWYgKGNhbWxfaW50NjRfdWx0KHRocmVzaG9sZCwgcmVzKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gICAgZCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gICAgcmVzID0gY2FtbF9pbnQ2NF9hZGQoY2FtbF9pbnQ2NF9tdWwoYmFzZTY0LCByZXMpLCBkKTtcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gYWRkaXRpb24gKGJhc2UgKiByZXMpICsgZCAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdChyZXMsIGQpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoYmFzZSA9PSAxMCAmJiBjYW1sX2ludDY0X3VsdChuZXcgTWxJbnQ2NCgwLCAwLCAweDgwMDApLCByZXMpKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoc2lnbiA8IDApIHJlcyA9IGNhbWxfaW50NjRfbmVnKHJlcyk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShsbywgbWksIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobG8sIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICBsbyAmIDB4ZmZmZmZmLFxuICAgICgobG8gPj4+IDI0KSAmIDB4ZmYpIHwgKChoaSAmIDB4ZmZmZikgPDwgOCksXG4gICAgKGhpID4+PiAxNikgJiAweGZmZmYpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9sbzMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2xvMzIodil7IHJldHVybiB2LmxvMzIoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGkzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oaTMyKHYpeyByZXR1cm4gdi5oaTMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2J5dGVzKGEpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGFbN10gPDwgMCB8IChhWzZdIDw8IDgpIHwgKGFbNV0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVs0XSA8PCAwIHwgKGFbM10gPDwgOCkgfCAoYVsyXSA8PCAxNiksXG4gICAgICAgICAgICAgICAgICAgICBhWzFdIDw8IDAgfCAoYVswXSA8PCA4KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2J5dGVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2J5dGVzKHgpIHsgcmV0dXJuIHgudG9BcnJheSgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9oYXNoIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2hhc2godil7XG4gIHJldHVybiAodi5sbzMyKCkpIF4gKHYuaGkzMigpKVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwLTIwMTQgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQW4gT0NhbWwgc3RyaW5nIGlzIGFuIG9iamVjdCB3aXRoIHRocmVlIGZpZWxkczpcbi8vIC0gdGFnICd0J1xuLy8gLSBsZW5ndGggJ2wnXG4vLyAtIGNvbnRlbnRzICdjJ1xuLy9cbi8vIFRoZSBjb250ZW50cyBvZiB0aGUgc3RyaW5nIGNhbiBiZSBlaXRoZXIgYSBKYXZhU2NyaXB0IGFycmF5IG9yXG4vLyBhIEphdmFTY3JpcHQgc3RyaW5nLiBUaGUgbGVuZ3RoIG9mIHRoaXMgc3RyaW5nIGNhbiBiZSBsZXNzIHRoYW4gdGhlXG4vLyBsZW5ndGggb2YgdGhlIE9DYW1sIHN0cmluZy4gSW4gdGhpcyBjYXNlLCByZW1haW5pbmcgYnl0ZXMgYXJlXG4vLyBhc3N1bWVkIHRvIGJlIHplcm9lcy4gQXJyYXlzIGFyZSBtdXRhYmxlIGJ1dCBjb25zdW1lcyBtb3JlIG1lbW9yeVxuLy8gdGhhbiBzdHJpbmdzLiBBIGNvbW1vbiBwYXR0ZXJuIGlzIHRvIHN0YXJ0IGZyb20gYW4gZW1wdHkgc3RyaW5nIGFuZFxuLy8gcHJvZ3Jlc3NpdmVseSBmaWxsIGl0IGZyb20gdGhlIHN0YXJ0LiBQYXJ0aWFsIHN0cmluZ3MgbWFrZXMgaXRcbi8vIHBvc3NpYmxlIHRvIGltcGxlbWVudCB0aGlzIGVmZmljaWVudGx5LlxuLy9cbi8vIFdoZW4gY29udmVydGluZyB0byBhbmQgZnJvbSBVVEYtMTYsIHdlIGtlZXAgdHJhY2sgb2Ygd2hldGhlciB0aGVcbi8vIHN0cmluZyBpcyBjb21wb3NlZCBvbmx5IG9mIEFTQ0lJIGNoYXJhY3RlcnMgKGluIHdoaWNoIGNhc2UsIG5vXG4vLyBjb252ZXJzaW9uIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCkgb3Igbm90LlxuLy9cbi8vIFRoZSBzdHJpbmcgdGFnIGNhbiB0aHVzIHRha2UgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4vLyAgIGZ1bGwgc3RyaW5nICAgICBCWVRFIHwgVU5LTk9XTjogICAgICAwXG4vLyAgICAgICAgICAgICAgICAgICBCWVRFIHwgQVNDSUk6ICAgICAgICA5XG4vLyAgICAgICAgICAgICAgICAgICBCWVRFIHwgTk9UX0FTQ0lJOiAgICA4XG4vLyAgIHN0cmluZyBwcmVmaXggICBQQVJUSUFMOiAgICAgICAgICAgICAyXG4vLyAgIGFycmF5ICAgICAgICAgICBBUlJBWTogICAgICAgICAgICAgICA0XG4vL1xuLy8gT25lIGNhbiB1c2UgYml0IG1hc2tpbmcgdG8gZGlzY3JpbWluYXRlIHRoZXNlIGRpZmZlcmVudCBjYXNlczpcbi8vICAga25vd25fZW5jb2RpbmcoeCkgPSB4Jjhcbi8vICAgaXNfYXNjaWkoeCkgPSAgICAgICB4JjFcbi8vICAga2luZCh4KSA9ICAgICAgICAgICB4JjZcblxuLy9Qcm92aWRlczogY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX3N0cl9yZXBlYXQobiwgcykge1xuICBpZihuID09IDApIHJldHVybiBcIlwiO1xuICBpZiAocy5yZXBlYXQpIHtyZXR1cm4gcy5yZXBlYXQobik7fSAvLyBFQ01Bc2NyaXB0IDYgYW5kIEZpcmVmb3ggMjQrXG4gIHZhciByID0gXCJcIiwgbCA9IDA7XG4gIGZvcig7Oykge1xuICAgIGlmIChuICYgMSkgciArPSBzO1xuICAgIG4gPj49IDE7XG4gICAgaWYgKG4gPT0gMCkgcmV0dXJuIHI7XG4gICAgcyArPSBzO1xuICAgIGwrKztcbiAgICBpZiAobCA9PSA5KSB7XG4gICAgICBzLnNsaWNlKDAsMSk7IC8vIGZsYXR0ZW4gdGhlIHN0cmluZ1xuICAgICAgLy8gdGhlbiwgdGhlIGZsYXR0ZW5pbmcgb2YgdGhlIHdob2xlIHN0cmluZyB3aWxsIGJlIGZhc3RlcixcbiAgICAgIC8vIGFzIGl0IHdpbGwgYmUgY29tcG9zZWQgb2YgbGFyZ2VyIHBpZWNlc1xuICAgIH1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbi8vV2Vha2RlZlxuLy8gUHJlIEVDTUFTY3JpcHQgNSwgW2FwcGx5XSB3b3VsZCBub3Qgc3VwcG9ydCBhcnJheS1saWtlIG9iamVjdC5cbi8vIEluIHN1Y2ggc2V0dXAsIFR5cGVkX2FycmF5IHdvdWxkIGJlIGltcGxlbWVudGVkIGFzIHBvbHlmaWxsLCBhbmQgW2YuYXBwbHldIHdvdWxkXG4vLyBmYWlsIGhlcmUuIE1hcmsgdGhlIHByaW1pdGl2ZSBhcyBXZWFrZGVmLCBzbyB0aGF0IHBlb3BsZSBjYW4gb3ZlcnJpZGUgaXQgZWFzaWx5LlxuZnVuY3Rpb24gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzIChhLCBpLCBsZW4pIHtcbiAgdmFyIGYgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xuICBpZiAoaSA9PSAwICYmIGxlbiA8PSA0MDk2ICYmIGxlbiA9PSBhLmxlbmd0aCkgcmV0dXJuIGYuYXBwbHkgKG51bGwsIGEpO1xuICB2YXIgcyA9IFwiXCI7XG4gIGZvciAoOyAwIDwgbGVuOyBpICs9IDEwMjQsbGVuLT0xMDI0KVxuICAgIHMgKz0gZi5hcHBseSAobnVsbCwgYS5zbGljZShpLGkgKyBNYXRoLm1pbihsZW4sIDEwMjQpKSk7XG4gIHJldHVybiBzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3V0Zjhfb2ZfdXRmMTZcbmZ1bmN0aW9uIGNhbWxfdXRmOF9vZl91dGYxNihzKSB7XG4gIGZvciAodmFyIGIgPSBcIlwiLCB0ID0gYiwgYywgZCwgaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGMgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGMgPCAweDgwKSB7XG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IChqIDwgbCkgJiYgKGMgPSBzLmNoYXJDb2RlQXQoaikpIDwgMHg4MDsgaisrKTtcbiAgICAgIGlmIChqIC0gaSA+IDUxMikgeyB0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjsgYiArPSBzLnNsaWNlKGksIGopIH1cbiAgICAgIGVsc2UgdCArPSBzLnNsaWNlKGksIGopO1xuICAgICAgaWYgKGogPT0gbCkgYnJlYWs7XG4gICAgICBpID0gajtcbiAgICB9XG4gICAgaWYgKGMgPCAweDgwMCkge1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4YzAgfCAoYyA+PiA2KSk7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH0gZWxzZSBpZiAoYyA8IDB4ZDgwMCB8fCBjID49IDB4ZGZmZikge1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZTAgfCAoYyA+PiAxMiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiA2KSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9IGVsc2UgaWYgKGMgPj0gMHhkYmZmIHx8IGkgKyAxID09IGwgfHxcbiAgICAgICAgICAgICAgIChkID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgZCA+IDB4ZGZmZikge1xuICAgICAgLy8gVW5tYXRjaGVkIHN1cnJvZ2F0ZSBwYWlyLCByZXBsYWNlZCBieSBcXHVmZmZkIChyZXBsYWNlbWVudCBjaGFyYWN0ZXIpXG4gICAgICB0ICs9IFwiXFx4ZWZcXHhiZlxceGJkXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGkrKztcbiAgICAgIGMgPSAoYyA8PCAxMCkgKyBkIC0gMHgzNWZkYzAwO1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZjAgfCAoYyA+PiAxOCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiAxMikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH1cbiAgICBpZiAodC5sZW5ndGggPiAxMDI0KSB7dC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7fVxuICB9XG4gIHJldHVybiBiK3Q7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24gY2FtbF91dGYxNl9vZl91dGY4KHMpIHtcbiAgZm9yICh2YXIgYiA9IFwiXCIsIHQgPSBcIlwiLCBjLCBjMSwgYzIsIHYsIGkgPSAwLCBsID0gcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjMSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoYzEgPCAweDgwKSB7XG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IChqIDwgbCkgJiYgKGMxID0gcy5jaGFyQ29kZUF0KGopKSA8IDB4ODA7IGorKyk7XG4gICAgICBpZiAoaiAtIGkgPiA1MTIpIHsgdC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7IGIgKz0gcy5zbGljZShpLCBqKSB9XG4gICAgICBlbHNlIHQgKz0gcy5zbGljZShpLCBqKTtcbiAgICAgIGlmIChqID09IGwpIGJyZWFrO1xuICAgICAgaSA9IGo7XG4gICAgfVxuICAgIHYgPSAxO1xuICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpKSB7XG4gICAgICBjID0gYzIgKyAoYzEgPDwgNik7XG4gICAgICBpZiAoYzEgPCAweGUwKSB7XG4gICAgICAgIHYgPSBjIC0gMHgzMDgwO1xuICAgICAgICBpZiAodiA8IDB4ODApIHYgPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdiA9IDI7XG4gICAgICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpKSB7XG4gICAgICAgICAgYyA9IGMyICsgKGMgPDwgNik7XG4gICAgICAgICAgaWYgKGMxIDwgMHhmMCkge1xuICAgICAgICAgICAgdiA9IGMgLSAweGUyMDgwO1xuICAgICAgICAgICAgaWYgKCh2IDwgMHg4MDApIHx8ICgodiA+PSAweGQ3ZmYpICYmICh2IDwgMHhlMDAwKSkpIHYgPSAyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ID0gMztcbiAgICAgICAgICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpICYmXG4gICAgICAgICAgICAgICAgKGMxIDwgMHhmNSkpIHtcbiAgICAgICAgICAgICAgdiA9IGMyIC0gMHgzYzgyMDgwICsgKGMgPDwgNik7XG4gICAgICAgICAgICAgIGlmICh2IDwgMHgxMDAwMCB8fCB2ID4gMHgxMGZmZmYpIHYgPSAzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodiA8IDQpIHsgLy8gSW52YWxpZCBzZXF1ZW5jZVxuICAgICAgaSAtPSB2O1xuICAgICAgdCArPSBcIlxcdWZmZmRcIjtcbiAgICB9IGVsc2UgaWYgKHYgPiAweGZmZmYpXG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhkN2MwICsgKHYgPj4gMTApLCAweGRjMDAgKyAodiAmIDB4M0ZGKSlcbiAgICBlbHNlXG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUodik7XG4gICAgaWYgKHQubGVuZ3RoID4gMTAyNCkge3Quc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiO31cbiAgfVxuICByZXR1cm4gYit0O1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2lzX2FzY2lpXG5mdW5jdGlvbiBqc29vX2lzX2FzY2lpIChzKSB7XG4gIC8vIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gZ2V0cyBiZXR0ZXIgYXQgYXJvdW5kIHRoaXMgcG9pbnQgZm9yIGFsbCBicm93c2Vyc1xuICBpZiAocy5sZW5ndGggPCAyNCkge1xuICAgIC8vIFNwaWRlcm1vbmtleSBnZXRzIG11Y2ggc2xvd2VyIHdoZW4gcy5sZW5ndGggPj0gMjQgKG9uIDY0IGJpdCBhcmNocylcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIGlmIChzLmNoYXJDb2RlQXQoaSkgPiAxMjcpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlXG4gICAgcmV0dXJuICEvW15cXHgwMC1cXHg3Zl0vLnRlc3Qocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBpZiAoaSA+PSBzLmMubGVuZ3RoKSByZXR1cm4gMDtcbiAgY2FzZSAwOiAvKiBCWVRFUyAqL1xuICAgIHJldHVybiBzLmMuY2hhckNvZGVBdChpKTtcbiAgY2FzZSA0OiAvKiBBUlJBWSAqL1xuICAgIHJldHVybiBzLmNbaV1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIC8vIFRoZSBPQ2FtbCBjb21waWxlciB1c2VzIENoYXIudW5zYWZlX2NociBvbiBpbnRlZ2VycyBsYXJnZXIgdGhhbiAyNTUhXG4gIGMgJj0gMHhmZjtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSB7XG4gICAgaWYgKGkgPT0gcy5jLmxlbmd0aCkge1xuICAgICAgcy5jICs9IFN0cmluZy5mcm9tQ2hhckNvZGUgKGMpO1xuICAgICAgaWYgKGkgKyAxID09IHMubCkgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKTtcbiAgfVxuICBzLmNbaV0gPSBjO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0IChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0MTYocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDEpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDE2KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDEpO1xuICByZXR1cm4gKGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQzMihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKSxcbiAgICAgIGIzID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDIpLFxuICAgICAgYjQgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMyk7XG4gIHJldHVybiAoYjQgPDwgMjQgfCBiMyA8PCAxNiB8IGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQzMihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKSxcbiAgICAgIGIzID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMiksXG4gICAgICBiNCA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0IHwgYjMgPDwgMTYgfCBiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0NjQocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDcpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gbmV3IEFycmF5KDgpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKXtcbiAgICBhWzcgLSBqXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDY0KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSA3KSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gbmV3IEFycmF5KDgpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKXtcbiAgICBhWzcgLSBqXSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIGopO1xuICB9XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldCAocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQgKHMsIGksIGMpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0IChzLCBpLCBjKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MTYocyxpLGkxNil7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIyID0gMHhGRiAmIGkxNiA+PiA4LFxuICAgICAgYjEgPSAweEZGICYgaTE2O1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAwLCBiMSk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDEsIGIyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MTYocyxpLGkxNil7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQxNlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0MTZcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDE2KHMsaSxpMTYpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQxNihzLGksaTE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDMyKHMsaSxpMzIpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAzKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiNCA9IDB4RkYgJiBpMzIgPj4gMjQsXG4gICAgICBiMyA9IDB4RkYgJiBpMzIgPj4gMTYsXG4gICAgICBiMiA9IDB4RkYgJiBpMzIgPj4gOCxcbiAgICAgIGIxID0gMHhGRiAmIGkzMjtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMCwgYjEpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAxLCBiMik7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDIsIGIzKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMywgYjQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQzMihzLGksaTMyKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDMyXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQzMlxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MzIocyxpLGkzMil7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDMyKHMsaSxpMzIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0NjQocyxpLGk2NCl7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDcpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGk2NCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyA3IC0gaiwgYVtqXSk7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0NjQocyxpLGk2NCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQ2NFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDY0KHMsaSxpNjQpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQ2NChzLGksaTY0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQgKHMsIGksIGMpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3V0Zjhfb2ZfdXRmMTYsIE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmcgKHMpIHtcbiAgdmFyIHRhZyA9IDkgLyogQllURVMgfCBBU0NJSSAqLztcbiAgaWYgKCFqc29vX2lzX2FzY2lpKHMpKVxuICAgIHRhZyA9IDggLyogQllURVMgfCBOT1RfQVNDSUkgKi8sIHMgPSBjYW1sX3V0Zjhfb2ZfdXRmMTYocyk7XG4gIHJldHVybiBuZXcgTWxCeXRlcyh0YWcsIHMsIHMubGVuZ3RoKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEJ5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBqc29vX2lzX2FzY2lpLCBjYW1sX3V0ZjE2X29mX3V0ZjhcbmZ1bmN0aW9uIE1sQnl0ZXMgKHRhZywgY29udGVudHMsIGxlbmd0aCkge1xuICB0aGlzLnQ9dGFnOyB0aGlzLmM9Y29udGVudHM7IHRoaXMubD1sZW5ndGg7XG59XG5NbEJ5dGVzLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCl7XG4gIHN3aXRjaCAodGhpcy50KSB7XG4gIGNhc2UgOTogLypCWVRFUyB8IEFTQ0lJKi9cbiAgICByZXR1cm4gdGhpcy5jO1xuICBkZWZhdWx0OlxuICAgIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXModGhpcyk7XG4gIGNhc2UgMDogLypCWVRFUyB8IFVOS09XTiovXG4gICAgaWYgKGpzb29faXNfYXNjaWkodGhpcy5jKSkge1xuICAgICAgdGhpcy50ID0gOTsgLypCWVRFUyB8IEFTQ0lJKi9cbiAgICAgIHJldHVybiB0aGlzLmM7XG4gICAgfVxuICAgIHRoaXMudCA9IDg7IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICBjYXNlIDg6IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICAgIHJldHVybiB0aGlzLmM7XG4gIH1cbn07XG5NbEJ5dGVzLnByb3RvdHlwZS50b1V0ZjE2ID0gZnVuY3Rpb24gKCl7XG4gIHZhciByID0gdGhpcy50b1N0cmluZygpO1xuICBpZih0aGlzLnQgPT0gOSkgcmV0dXJuIHJcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChyKTtcbn1cbk1sQnl0ZXMucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gKCl7XG4gIHZhciBjb250ZW50ID0gdGhpcy50ID09IDQgPyB0aGlzLmMuc2xpY2UoKSA6IHRoaXMuYztcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRoaXMudCxjb250ZW50LHRoaXMubCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyX3JlcGVhdCwgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzIChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEJZVEVTICovXG4gIGlmIChzLnQgPT0gMiAvKiBQQVJUSUFMICovKVxuICAgIHMuYyArPSBjYW1sX3N0cl9yZXBlYXQocy5sIC0gcy5jLmxlbmd0aCwgJ1xcMCcpXG4gIGVsc2VcbiAgICBzLmMgPSBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMgKHMuYywgMCwgcy5jLmxlbmd0aCk7XG4gIHMudCA9IDA7IC8qQllURVMgfCBVTktPV04qL1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheSAocykge1xuICAvKiBBc3N1bWVzIG5vdCBBUlJBWSAqL1xuICB2YXIgYSA9IG5ldyBVaW50OEFycmF5KHMubCk7XG4gIHZhciBiID0gcy5jLCBsID0gYi5sZW5ndGgsIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGIuY2hhckNvZGVBdChpKTtcbiAgZm9yIChsID0gcy5sOyBpIDwgbDsgaSsrKSBhW2ldID0gMDtcbiAgcy5jID0gYTtcbiAgcy50ID0gNDsgLyogQVJSQVkgKi9cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIChzKSB7XG4gIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICByZXR1cm4gcy5jO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIGwgPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciBhID0gbmV3IFVpbnQ4QXJyYXkobCk7XG4gIHZhciBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSk7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBpZihsZW4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX3N0cmluZyhsZW4pIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJ5dGVzLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbj8yOjksXCJcIixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9hcnJheSAoYSkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoYSwwLGEubGVuZ3RoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfYXJyYXkgKGEpIHtcbiAgaWYoISAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgYSA9IG5ldyBVaW50OEFycmF5KGEpO1xuICB9XG4gIHJldHVybiBuZXcgTWxCeXRlcyg0LGEsYS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2NvbXBhcmUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19jb21wYXJlKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8tMTooczEuYyA+IHMyLmMpPzE6MDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA9PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbCBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDw9IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzdGhhbiBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczIsczEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMyLHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmlsbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vQWxpYXM6IGNhbWxfZmlsbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmlsbF9ieXRlcyhzLCBpLCBsLCBjKSB7XG4gIGlmIChsID4gMCkge1xuICAgIGlmIChpID09IDAgJiYgKGwgPj0gcy5sIHx8IChzLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGwgPj0gcy5jLmxlbmd0aCkpKSB7XG4gICAgICBpZiAoYyA9PSAwKSB7XG4gICAgICAgIHMuYyA9IFwiXCI7XG4gICAgICAgIHMudCA9IDI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMuYyA9IGNhbWxfc3RyX3JlcGVhdCAobCwgU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gICAgICAgIHMudCA9IChsID09IHMubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzKTtcbiAgICAgIGZvciAobCArPSBpOyBpIDwgbDsgaSsrKSBzLmNbaV0gPSBjO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ibGl0X2J5dGVzKHMxLCBpMSwgczIsIGkyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgaWYgKChpMiA9PSAwKSAmJlxuICAgICAgKGxlbiA+PSBzMi5sIHx8IChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsZW4gPj0gczIuYy5sZW5ndGgpKSkge1xuICAgIHMyLmMgPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIGlmIChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBpMiA9PSBzMi5jLmxlbmd0aCkge1xuICAgIHMyLmMgKz0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSB7XG4gICAgaWYgKHMyLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMyKTtcbiAgICB2YXIgYzEgPSBzMS5jLCBjMiA9IHMyLmM7XG4gICAgaWYgKHMxLnQgPT0gNCAvKiBBUlJBWSAqLykge1xuICAgICAgaWYgKGkyIDw9IGkxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsID0gTWF0aC5taW4gKGxlbiwgYzEubGVuZ3RoIC0gaTEpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIGMyIFtpMiArIGldID0gYzEuY2hhckNvZGVBdChpMSArIGkpO1xuICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ibGl0X3N0cmluZyhhLGIsYyxkLGUpIHtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGEpLGIsYyxkLGUpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19sZW5ndGgocykgeyByZXR1cm4gcy5sIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBzLmNoYXJDb2RlQXQoaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBzLmxlbmd0aFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/LTE6KHMxID4gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDw9IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocy5jKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgaWYoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gcztcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIGlmIChqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpXG4gIGVsc2UgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF91dGY4X29mX3V0ZjE2KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocykgeyByZXR1cm4gbmV3IE1sQnl0ZXMoMCxzLHMubGVuZ3RoKTsgfVxuXG5cbi8vIFRoZSBzZWN0aW9uIGJlbG93IHNob3VsZCBiZSB1c2VkIHdoZW4gdXNlLWpzLXN0cmluZz1mYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLGksYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBzLmMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpe1xuICByZXR1cm4gcy50b1V0ZjE2KClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2lzX21sX2J5dGVzKHMpIHtcbiAgcmV0dXJuIChzIGluc3RhbmNlb2YgTWxCeXRlcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19jb250ZW50KHMpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYztcbiAgY2FzZSA0OlxuICAgIHJldHVybiBzLmNcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaVxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiAodHlwZW9mIHMgPT09IFwic3RyaW5nXCIgJiYgIS9bXlxceDAwLVxceGZmXS8udGVzdChzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2lzX21sX2J5dGVzKHMpO1xufVxuXG4vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBkZXByZWNhdGVkXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9uZXdfc3RyaW5nIChzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdG9fanNfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdG9fanNfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc190b19zdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHMpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9zdHJpbmcoeCkgeyByZXR1cm4gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoeCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX2J5dGVzKHgpIHsgcmV0dXJuIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoeCkgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9SYWlzZSBleGNlcHRpb25cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2NvbnN0YW50ICh0YWcpIHsgdGhyb3cgdGFnOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGFyZykgeyB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsIHRhZywgYXJnXSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZ3MgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJncyAodGFnLCBhcmdzKSB7IHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCwgdGFnXS5jb25jYXQoYXJncykpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKHRhZywgbXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhtc2cpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYWlsd2l0aCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZhaWx3aXRoIChtc2cpIHtcbiAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSlcbiAgICBjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmU9WzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRmFpbHVyZVwiKSwtM107XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLCBtc2cpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuSW52YWxpZF9hcmd1bWVudCwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5FbmRfb2ZfZmlsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRGl2aXNpb25fYnlfemVybyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5Ob3RfZm91bmQpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuIChjb25zdCwgc2hhbGxvdylcbi8vSWY6ICFlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApXG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIGVsc2UgaWYgKGQgPCAwKSB7XG4gICAgdmFyIGcgPSBmLmFwcGx5KG51bGwsYXJncy5zbGljZSgwLG4pKTtcbiAgICBpZih0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZztcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihnLGFyZ3Muc2xpY2UobikpO1xuICB9XG4gIGVsc2Uge1xuICAgIHN3aXRjaCAoZCkge1xuICAgIGNhc2UgMToge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMSk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKCl7XG4gICAgICAgIHZhciBleHRyYV9hcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT0gMCk/MTphcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJncy5sZW5ndGgrZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkgbmFyZ3NbYXJncy5sZW5ndGgraV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgICAgfTtcbiAgICB9fVxuICAgIGcubCA9IGQ7XG4gICAgcmV0dXJuIGc7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiBlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApIHtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgfSBlbHNlIGlmIChkIDwgMCkge1xuICAgIHZhciByZXN0ID0gYXJncy5zbGljZShuIC0gMSk7XG4gICAgdmFyIGsgPSBhcmdzIFthcmdzTGVuIC0gMV07XG4gICAgYXJncyA9IGFyZ3Muc2xpY2UoMCwgbik7XG4gICAgYXJnc1tuIC0gMV0gPSBmdW5jdGlvbiAoZykge1xuICAgICAgaWYgKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBrKGcpO1xuICAgICAgdmFyIGFyZ3MgPSByZXN0LnNsaWNlKCk7XG4gICAgICBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPSBrO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZywgYXJncyk7IH07XG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgYXJnc0xlbi0tO1xuICAgIHZhciBrID0gYXJncyBbYXJnc0xlbl07XG4gICAgc3dpdGNoIChkKSB7XG4gICAgY2FzZSAxOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAyKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAyOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5LCB6KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAzKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMl0gPSB6O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoKXtcbiAgICAgICAgdmFyIGV4dHJhX2FyZ3MgPSAoYXJndW1lbnRzLmxlbmd0aCA9PSAwKT8xOmFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKVxuICAgICAgICAgIG5hcmdzW2FyZ3NMZW4gKyBpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgbmFyZ3MpXG4gICAgICB9O1xuICAgIH19XG4gICAgZy5sID0gZCArIDE7XG4gICAgcmV0dXJuIGsoZyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZXNcbnZhciBjYW1sX25hbWVkX3ZhbHVlcyA9IHt9O1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlIChjb25zdCxtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWUobm0sdikge1xuICBjYW1sX25hbWVkX3ZhbHVlc1tjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5tKV0gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXNcbmZ1bmN0aW9uIGNhbWxfbmFtZWRfdmFsdWUobm0pIHtcbiAgcmV0dXJuIGNhbWxfbmFtZWRfdmFsdWVzW25tXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dsb2JhbF9kYXRhXG52YXIgY2FtbF9nbG9iYWxfZGF0YSA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9idWlsZF9zeW1ib2xzKHN5bWIpIHtcbiAgdmFyIHIgPSB7fTtcbiAgaWYoc3ltYikge1xuICAgIGZvcih2YXIgaSA9IDE7IGkgPCBzeW1iLmxlbmd0aDsgaSsrKXtcbiAgICAgIHJbY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3ltYltpXVsxXSldID0gc3ltYltpXVsyXVxuICAgIH1cbiAgfVxuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKGNvbnN0LCBzaGFsbG93LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfY2FsbGJhY2ssIGNhbWxfYnVpbGRfc3ltYm9sc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKG4sIHYsIG5hbWVfb3B0KSB7XG4gIGlmIChuYW1lX29wdCkge1xuICAgIHZhciBuYW1lID0gbmFtZV9vcHQ7XG4gICAgaWYoZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jKSB7XG4gICAgICBuID0gY2FtbF9jYWxsYmFjayhnbG9iYWxUaGlzLnRvcGxldmVsUmVsb2MsIFtuYW1lXSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scykge1xuICAgICAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4KSB7XG4gICAgICAgIGNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4ID0gY2FtbF9idWlsZF9zeW1ib2xzKGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scylcbiAgICAgIH1cbiAgICAgIHZhciBuaWQgPSBjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeFtuYW1lXVxuICAgICAgaWYobmlkID49IDApXG4gICAgICAgIG4gPSBuaWRcbiAgICAgIGVsc2Uge1xuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9yZWdpc3Rlcl9nbG9iYWw6IGNhbm5vdCBsb2NhdGUgXCIgKyBuYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY2FtbF9nbG9iYWxfZGF0YVtuICsgMV0gPSB2O1xuICBpZihuYW1lX29wdCkgY2FtbF9nbG9iYWxfZGF0YVtuYW1lX29wdF0gPSB2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9nbG9iYWxfZGF0YSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2dldF9nbG9iYWxfZGF0YSAoKSB7IHJldHVybiBjYW1sX2dsb2JhbF9kYXRhOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfcHJpbnRhYmxlIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfaXNfcHJpbnRhYmxlKGMpIHsgcmV0dXJuICsoYyA+IDMxICYmIGMgPCAxMjcpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfcHJpbnRfc3RhdHNcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfcHJpbnRfc3RhdHModW5pdCkgeyByZXR1cm4gMCB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIFN5c1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3N5c19lcnJvciAobXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5TeXNfZXJyb3IsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4aXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9zeXNfZXhpdCAoY29kZSkge1xuICBpZihnbG9iYWxUaGlzLnF1aXQpIGdsb2JhbFRoaXMucXVpdChjb2RlKTtcbiAgLy9ub2RlanNcbiAgaWYoZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5leGl0KVxuICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5leGl0KGNvZGUpO1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJGdW5jdGlvbiAnZXhpdCcgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4bil7XG4gIHN3aXRjaChleG5bMl0pIHtcbiAgY2FzZSAtODogLy8gTWF0Y2hfZmFpbHVyZVxuICBjYXNlIC0xMTogLy8gQXNzZXJ0X2ZhaWx1cmVcbiAgY2FzZSAtMTI6IC8vIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG4gICAgcmV0dXJuIDE7XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXhuKXtcbiAgdmFyIHIgPSBcIlwiO1xuICBpZihleG5bMF0gPT0gMCkge1xuICAgIHIgKz0gZXhuWzFdWzFdO1xuICAgIGlmKGV4bi5sZW5ndGggPT0gMyAmJiBleG5bMl1bMF0gPT0gMCAmJiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4blsxXSkpIHtcblxuICAgICAgdmFyIGJ1Y2tldCA9IGV4blsyXTtcbiAgICAgIHZhciBzdGFydCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFydCA9IDJcbiAgICAgIHZhciBidWNrZXQgPSBleG47XG4gICAgfVxuICAgIHIgKz0gXCIoXCI7XG4gICAgZm9yKHZhciBpID0gc3RhcnQ7IGkgPCBidWNrZXQubGVuZ3RoOyBpICsrKXtcbiAgICAgIGlmKGkgPiBzdGFydCkgcis9XCIsIFwiO1xuICAgICAgdmFyIHYgPSBidWNrZXRbaV1cbiAgICAgIGlmKHR5cGVvZiB2ID09IFwibnVtYmVyXCIpXG4gICAgICAgIHIrPSB2LnRvU3RyaW5nKCk7XG4gICAgICBlbHNlIGlmKHYgaW5zdGFuY2VvZiBNbEJ5dGVzKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSBpZih0eXBlb2YgdiA9PSBcInN0cmluZ1wiKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSByICs9IFwiX1wiO1xuICAgIH1cbiAgICByICs9IFwiKVwiXG4gIH0gZWxzZSBpZiAoZXhuWzBdID09IDI0OCl7XG4gICAgciArPSBleG5bMV1cbiAgfVxuICByZXR1cm4gclxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9mb3JtYXRfZXhjZXB0aW9uLCBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihlcnIpe1xuICBpZihlcnIgaW5zdGFuY2VvZiBBcnJheSAmJiAoZXJyWzBdID09IDAgfHwgZXJyWzBdID09IDI0OCkpIHtcbiAgICB2YXIgaGFuZGxlciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCIpO1xuICAgIGlmKGhhbmRsZXIpIGNhbWxfY2FsbGJhY2soaGFuZGxlciwgW2VycixmYWxzZV0pO1xuICAgIGVsc2Uge1xuICAgICAgdmFyIG1zZyA9IGNhbWxfZm9ybWF0X2V4Y2VwdGlvbihlcnIpO1xuICAgICAgdmFyIGF0X2V4aXQgPSBjYW1sX25hbWVkX3ZhbHVlKFwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIpO1xuICAgICAgaWYoYXRfZXhpdCkgY2FtbF9jYWxsYmFjayhhdF9leGl0LCBbMF0pO1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gXCIgKyBtc2cpO1xuICAgICAgaWYoZXJyLmpzX2Vycm9yKSB0aHJvdyBlcnIuanNfZXJyb3I7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IGVyclxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3N0YXRpY19lbnZcbmZ1bmN0aW9uIGNhbWxfc2V0X3N0YXRpY19lbnYoayx2KXtcbiAgaWYoIWdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52KVxuICAgIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52ID0ge31cbiAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZba10gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19zeXNfZ2V0ZW52IChjb25zdClcbmZ1bmN0aW9uIGpzb29fc3lzX2dldGVudihuKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICAvL25vZGVqcyBlbnZcbiAgaWYocHJvY2Vzc1xuICAgICAmJiBwcm9jZXNzLmVudlxuICAgICAmJiBwcm9jZXNzLmVudltuXSAhPSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIHByb2Nlc3MuZW52W25dO1xuICBpZihnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudlxuICAgICAmJiBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXSlcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZbbl1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0ZW52IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29fc3lzX2dldGVudlxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0ZW52IChuYW1lKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgaWYociA9PT0gdW5kZWZpbmVkKVxuICAgIGNhbWxfcmFpc2Vfbm90X2ZvdW5kICgpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdW5zYWZlX2dldGVudlxuLy9SZXF1aXJlczogY2FtbF9zeXNfZ2V0ZW52XG5mdW5jdGlvbiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52KG5hbWUpe1xuICByZXR1cm4gY2FtbF9zeXNfZ2V0ZW52IChuYW1lKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xudmFyIGNhbWxfYXJndiA9ICgoZnVuY3Rpb24gKCkge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgdmFyIG1haW4gPSBcImEub3V0XCI7XG4gIHZhciBhcmdzID0gW11cblxuICBpZihwcm9jZXNzXG4gICAgICYmIHByb2Nlc3MuYXJndlxuICAgICAmJiBwcm9jZXNzLmFyZ3YubGVuZ3RoID4gMSkge1xuICAgIHZhciBhcmd2ID0gcHJvY2Vzcy5hcmd2XG4gICAgLy9ub2RlanNcbiAgICBtYWluID0gYXJndlsxXTtcbiAgICBhcmdzID0gYXJndi5zbGljZSgyKTtcbiAgfVxuXG4gIHZhciBwID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobWFpbik7XG4gIHZhciBhcmdzMiA9IFswLCBwXTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspXG4gICAgYXJnczIucHVzaChjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhhcmdzW2ldKSk7XG4gIHJldHVybiBhcmdzMjtcbn0pKCkpXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhlY3V0YWJsZV9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbnZhciBjYW1sX2V4ZWN1dGFibGVfbmFtZSA9IGNhbWxfYXJndlsxXVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfYXJndiAoYSkge1xuICByZXR1cm4gWzAsIGNhbWxfYXJndlsxXSwgY2FtbF9hcmd2XTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19hcmd2IChhKSB7XG4gIHJldHVybiBjYW1sX2FyZ3Y7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21vZGlmeV9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX21vZGlmeV9hcmd2KGFyZyl7XG4gIGNhbWxfYXJndiA9IGFyZztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZShhKXtcbiAgcmV0dXJuIGNhbWxfZXhlY3V0YWJsZV9uYW1lXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQoY21kKXtcbiAgdmFyIGNtZCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGNtZCk7XG4gIGlmICh0eXBlb2YgcmVxdWlyZSAhPSBcInVuZGVmaW5lZFwiKXtcbiAgICB2YXIgY2hpbGRfcHJvY2VzcyA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKTtcbiAgICBpZihjaGlsZF9wcm9jZXNzICYmIGNoaWxkX3Byb2Nlc3MuZXhlY1N5bmMpXG4gICAgICB0cnkge1xuICAgICAgICBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKGNtZCx7c3RkaW86ICdpbmhlcml0J30pO1xuICAgICAgICByZXR1cm4gMFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gMVxuICAgICAgfVxuICB9XG4gIGVsc2UgcmV0dXJuIDEyNztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZChjbWQpe1xuICByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c190aW1lIG11dGFibGVcbnZhciBjYW1sX2luaXRpYWxfdGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgKiAwLjAwMTtcbmZ1bmN0aW9uIGNhbWxfc3lzX3RpbWUgKCkge1xuICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgcmV0dXJuIG5vdyAqIDAuMDAxIC0gY2FtbF9pbml0aWFsX3RpbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlblxuLy9SZXF1aXJlczogY2FtbF9zeXNfdGltZVxuZnVuY3Rpb24gY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuKGIpIHtcbiAgcmV0dXJuIGNhbWxfc3lzX3RpbWUoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmFuZG9tX3NlZWQgbXV0YWJsZVxuLy9UaGUgZnVuY3Rpb24gbmVlZHMgdG8gcmV0dXJuIGFuIGFycmF5IHNpbmNlIE9DYW1sIDQuMC4uLlxuZnVuY3Rpb24gY2FtbF9zeXNfcmFuZG9tX3NlZWQgKCkge1xuICBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8pIHtcbiAgICAgaWYgKGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICAgICAgIHZhciBhID0gZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQzMkFycmF5KDQpKTtcbiAgICAgICByZXR1cm4gWzAsIGFbMF0sIGFbMV0sIGFbMl0sIGFbM11dO1xuICAgICB9IGVsc2UgaWYgKGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzKSB7XG4gICAgICAgdmFyIGEgPSBuZXcgSW50MzJBcnJheShnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcygxNikuYnVmZmVyKTtcbiAgICAgICByZXR1cm4gWzAsIGFbMF0sIGFbMV0sIGFbMl0sIGFbM11dO1xuICAgICB9XG4gIH1cbiAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIHZhciB4ID0gbm93XjB4ZmZmZmZmZmYqTWF0aC5yYW5kb20oKTtcbiAgcmV0dXJuIFswLHhdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfaW50X3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2ludF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgY29uc3Rcbi8vIG1heF9pbnQgLyA0IHNvIHRoYXQgdGhlIGZvbGxvd2luZyBkb2VzIG5vdCBvdmVyZmxvd1xuLy9sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDE7O1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSAoKSB7IHJldHVybiAoMHg3RkZGRkZGRi80KSB8IDA7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIlVuaXhcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiAoKSB7IHJldHVybiBvc190eXBlID09IFwiV2luMzJcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJDeWd3aW5cIiA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwianNfb2Zfb2NhbWxcIildO1xufVxuXG4vL1Byb3ZpZGVzOiBvc190eXBlXG52YXIgb3NfdHlwZSA9IChnbG9iYWxUaGlzLnByb2Nlc3MgJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtID09IFwid2luMzJcIikgPyBcIkN5Z3dpblwiIDogXCJVbml4XCI7XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2NvbmZpZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2NvbmZpZyAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhvc190eXBlKSwgMzIsIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzYXR0eShfY2hhbikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3ZhcmlhbnRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV92YXJpYW50KF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlcigpe3JldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbnZhciBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MgKGJvb2wpIHtcbiAgY2FtbF9ydW50aW1lX3dhcm5pbmdzID0gYm9vbDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9ydW50aW1lX3dhcm5pbmdzO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3BhY2V0aW1lX2VuYWJsZWQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9zcGFjZXRpbWVfZW5hYmxlZChfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZShfY2hhbm5lbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiU3BhY2V0aW1lIHByb2ZpbGluZyBvbmx5IHdvcmtzIGZvciBuYXRpdmUgY29kZVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF94ZGdfZGVmYXVsdHNcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX3hkZ19kZWZhdWx0cyhfdW5pdCkge1xuICByZXR1cm4gMDsgLy8gZW1wdHkgbGlzdFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGVcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuaXNGaWxlKHJvb3QucmVzdCk7XG59XG4vL0Fsd2F5c1xuLy9SZXF1aXJlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICBpZihwcm9jZXNzICYmIHByb2Nlc3Mub24pIHtcbiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIGZ1bmN0aW9uIChlcnIsIG9yaWdpbikge1xuICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHByb2Nlc3MuZXhpdCAoMik7XG4gICAgfSlcbiAgfVxuICBlbHNlIGlmKGdsb2JhbFRoaXMuYWRkRXZlbnRMaXN0ZW5lcil7XG4gICAgZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGZ1bmN0aW9uKGV2ZW50KXtcbiAgICAgIGlmKGV2ZW50LmVycm9yKXtcbiAgICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXZlbnQuZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5jYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCk7XG5cblxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG52YXIgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSBGTEFHKFwid2l0aC1qcy1lcnJvclwiKTtcblxuKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHIgPSBqc29vX3N5c19nZXRlbnYoXCJPQ0FNTFJVTlBBUkFNXCIpXG4gIGlmKHIgIT09IHVuZGVmaW5lZCl7XG4gICAgdmFyIGwgPSByLnNwbGl0KFwiLFwiKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbC5sZW5ndGg7IGkrKyl7XG4gICAgICBpZihsW2ldID09IFwiYlwiKSB7IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gMTsgYnJlYWsgfVxuICAgICAgZWxzZSBpZiAobFtpXS5zdGFydHNXaXRoKFwiYj1cIikpIHtcbiAgICAgICAgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSArKGxbaV0uc2xpY2UoMikpfVxuICAgICAgZWxzZSBjb250aW51ZTtcbiAgICB9XG4gIH1cbn0pICgpXG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2JhY2t0cmFjZV9zdGF0dXNcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX2JhY2t0cmFjZV9zdGF0dXMgKF91bml0KSB7IHJldHVybiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfcmVjb3JkX2JhY2t0cmFjZSAoYikgeyBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IGI7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgKCkgeyByZXR1cm4gWzBdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbGVuZ3RoKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZV9zbG90OiBpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlKGV4biwgYnQpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrICgpIHsgcmV0dXJuIFswXTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90KCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgbGlicmFyeVxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEpzbGliXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfcHVyZV9leHByIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3B1cmVfZXhwciAoZikgeyByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBbMF0pOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfc2V0IChtdXRhYmxlLCBjb25zdCwgbXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfanNfc2V0KG8sZix2KSB7IG9bZl09djtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0IChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0KG8sZikgeyByZXR1cm4gb1tmXTsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19kZWxldGUgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19kZWxldGUobyxmKSB7IGRlbGV0ZSBvW2ZdOyByZXR1cm4gMH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19pbnN0YW5jZW9mIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2luc3RhbmNlb2YobyxjKSB7IHJldHVybiAobyBpbnN0YW5jZW9mIGMpID8gMSA6IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc190eXBlb2YgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190eXBlb2YobykgeyByZXR1cm4gdHlwZW9mIG87IH1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVcbmZ1bmN0aW9uIGNhbWxfdHJhbXBvbGluZShyZXMpIHtcbiAgdmFyIGMgPSAxO1xuICB3aGlsZShyZXMgJiYgcmVzLmpvb190cmFtcCl7XG4gICAgcmVzID0gcmVzLmpvb190cmFtcC5hcHBseShudWxsLCByZXMuam9vX2FyZ3MpO1xuICAgIGMrKztcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbmZ1bmN0aW9uIGNhbWxfdHJhbXBvbGluZV9yZXR1cm4oZixhcmdzKSB7XG4gIHJldHVybiB7am9vX3RyYW1wOmYsam9vX2FyZ3M6YXJnc307XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF9zdGFja19kZXB0aFxuLy9JZjogZWZmZWN0c1xudmFyIGNhbWxfc3RhY2tfZGVwdGggPSAwO1xuXG4vL1Byb3ZpZGVzOmNhbWxfc3RhY2tfY2hlY2tfZGVwdGhcbi8vSWY6IGVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9zdGFja19kZXB0aFxuZnVuY3Rpb24gY2FtbF9zdGFja19jaGVja19kZXB0aCgpIHtcbiAgICByZXR1cm4gLS1jYW1sX3N0YWNrX2RlcHRoID4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsYmFja1xuLy9JZjogIWVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9jYWxsX2dlblxudmFyIGNhbWxfY2FsbGJhY2sgPSBjYW1sX2NhbGxfZ2VuO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiBlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfc3RhY2tfZGVwdGgsIGNhbWxfY2FsbF9nZW4sIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrLCBjYW1sX3dyYXBfZXhjZXB0aW9uLCBjYW1sX3Jlc3VtZV9zdGFjaywgY2FtbF9mcmVzaF9vb19pZCwgY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV93aXRoX2FyZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudFxuZnVuY3Rpb24gY2FtbF9jYWxsYmFjayhmLGFyZ3MpIHtcbiAgZnVuY3Rpb24gdW5jYXVnaHRfZWZmZWN0X2hhbmRsZXIoZWZmLGssbXMpIHtcbiAgICAvLyBSZXN1bWVzIHRoZSBjb250aW51YXRpb24gayBieSByYWlzaW5nIGV4Y2VwdGlvbiBVbmhhbmRsZWQuXG4gICAgY2FtbF9yZXN1bWVfc3RhY2soa1sxXSxtcyk7XG4gICAgdmFyIGV4biA9IGNhbWxfbmFtZWRfdmFsdWUoXCJFZmZlY3QuVW5oYW5kbGVkXCIpO1xuICAgIGlmKGV4bikgY2FtbF9yYWlzZV93aXRoX2FyZyhleG4sIGVmZik7XG4gICAgZWxzZSB7XG4gICAgICBleG4gPSBbMjQ4LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJFZmZlY3QuVW5oYW5kbGVkXCIpLCBjYW1sX2ZyZXNoX29vX2lkKDApXTtcbiAgICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoZXhuKTtcbiAgICB9XG4gIH1cbiAgdmFyIHNhdmVkX3N0YWNrX2RlcHRoID0gY2FtbF9zdGFja19kZXB0aDtcbiAgdmFyIHNhdmVkX2V4bl9zdGFjayA9IGNhbWxfZXhuX3N0YWNrO1xuICB2YXIgc2F2ZWRfZmliZXJfc3RhY2sgPSBjYW1sX2ZpYmVyX3N0YWNrO1xuICB0cnkge1xuICAgIGNhbWxfZXhuX3N0YWNrID0gMDtcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID1cbiAgICAgIHtoOlswLCAwLCAwLCB1bmNhdWdodF9lZmZlY3RfaGFuZGxlcl0sIHI6e2s6MCwgeDowLCBlOjB9fTtcbiAgICB2YXIgcmVzID0ge2pvb190cmFtcDogZixcbiAgICAgICAgICAgICAgIGpvb19hcmdzOiBhcmdzLmNvbmNhdChmdW5jdGlvbiAoeCl7cmV0dXJuIHg7fSl9O1xuICAgIGRvIHtcbiAgICAgIGNhbWxfc3RhY2tfZGVwdGggPSA0MDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlcyA9IGNhbWxfY2FsbF9nZW4ocmVzLmpvb190cmFtcCwgcmVzLmpvb19hcmdzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLyogSGFuZGxlIGV4Y2VwdGlvbiBjb21pbmcgZnJvbSBKYXZhU2NyaXB0IG9yIGZyb20gdGhlIHJ1bnRpbWUuICovXG4gICAgICAgIGlmICghY2FtbF9leG5fc3RhY2spIHRocm93IGU7XG4gICAgICAgIHZhciBoYW5kbGVyID0gY2FtbF9leG5fc3RhY2tbMV07XG4gICAgICAgIGNhbWxfZXhuX3N0YWNrID0gY2FtbF9leG5fc3RhY2tbMl07XG4gICAgICAgIHJlcyA9IHtqb29fdHJhbXA6IGhhbmRsZXIsXG4gICAgICAgICAgICAgICBqb29fYXJnczogW2NhbWxfd3JhcF9leGNlcHRpb24oZSldfTtcbiAgICAgIH1cbiAgICB9IHdoaWxlKHJlcyAmJiByZXMuam9vX2FyZ3MpXG4gIH0gZmluYWxseSB7XG4gICAgY2FtbF9zdGFja19kZXB0aCA9IHNhdmVkX3N0YWNrX2RlcHRoO1xuICAgIGNhbWxfZXhuX3N0YWNrID0gc2F2ZWRfZXhuX3N0YWNrO1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPSBzYXZlZF9maWJlcl9zdGFjaztcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2pzXG5mdW5jdGlvbiBjYW1sX2lzX2pzKCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nKHVuaXQpe1xuICByZXR1cm4gRkxBRyhcInVzZS1qcy1zdHJpbmdcIilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNvb19mbGFnc19lZmZlY3RzKHVuaXQpe1xuICByZXR1cm4gRkxBRyhcImVmZmVjdHNcIilcbn1cblxuLy9Qcm92aWRlczogY2FtbF93cmFwX2V4Y2VwdGlvbiBjb25zdCAobXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsY2FtbF9uYW1lZF92YWx1ZVxuZnVuY3Rpb24gY2FtbF93cmFwX2V4Y2VwdGlvbihlKSB7XG4gIGlmIChGTEFHKFwiZXhjd3JhcFwiKSkge1xuICAgIGlmKGUgaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIGU7XG4gICAgdmFyIGV4bjtcbiAgICAvL1N0YWNrX292ZXJmbG93OiBjaHJvbWUsIHNhZmFyaVxuICAgIGlmKGdsb2JhbFRoaXMuUmFuZ2VFcnJvclxuICAgICAgICYmIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlJhbmdlRXJyb3JcbiAgICAgICAmJiBlLm1lc3NhZ2VcbiAgICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL21heGltdW0gY2FsbCBzdGFjay9pKSlcbiAgICAgIGV4biA9IGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3c7XG4gICAgLy9TdGFja19vdmVyZmxvdzogZmlyZWZveFxuICAgIGVsc2UgaWYoZ2xvYmFsVGhpcy5JbnRlcm5hbEVycm9yXG4gICAgICAgJiYgZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvclxuICAgICAgICYmIGUubWVzc2FnZVxuICAgICAgICYmIGUubWVzc2FnZS5tYXRjaCgvdG9vIG11Y2ggcmVjdXJzaW9uL2kpKVxuICAgICAgZXhuID0gY2FtbF9nbG9iYWxfZGF0YS5TdGFja19vdmVyZmxvdztcbiAgICAvL1dyYXAgRXJyb3IgaW4gSnMuRXJyb3IgZXhjZXB0aW9uXG4gICAgZWxzZSBpZihlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5FcnJvciAmJiBjYW1sX25hbWVkX3ZhbHVlKFwianNFcnJvclwiKSlcbiAgICAgIGV4biA9IFswLGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpLGVdO1xuICAgIGVsc2VcbiAgICAgIC8vZmFsbGJhY2s6IHdyYXBwZWQgaW4gRmFpbHVyZVxuICAgICAgZXhuID0gWzAsY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChTdHJpbmcoZSkpXTtcbiAgICAvLyBXZSBhbHJlYWR5IGhhdmUgYW4gZXJyb3IgYXQgaGFuZCwgbGV0J3MgdXNlIGl0LlxuICAgIGlmIChlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5FcnJvcilcbiAgICAgIGV4bi5qc19lcnJvciA9IGU7XG4gICAgcmV0dXJuIGV4bjtcbiAgfSBlbHNlXG4gICAgcmV0dXJuIGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoZXhuLCBmb3JjZSkge1xuICBpZihjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZylcbiAgICByZXR1cm4gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSk7XG4gIGVsc2UgcmV0dXJuIGV4blxufVxuXG4vLyBFeHBlcmltZW50YWxcbi8vUHJvdmlkZXM6IGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZShleG4sIGZvcmNlKSB7XG4gIC8vbmV2ZXIgcmVyYWlzZSBmb3IgY29uc3RhbnQgZXhuXG4gIGlmKCFleG4uanNfZXJyb3IgfHwgZm9yY2UgfHwgZXhuWzBdID09IDI0OCkgZXhuLmpzX2Vycm9yID0gbmV3IGdsb2JhbFRoaXMuRXJyb3IoXCJKcyBleGNlcHRpb24gY29udGFpbmluZyBiYWNrdHJhY2VcIik7XG4gIHJldHVybiBleG47XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmKGV4bi5qc19lcnJvcikgeyByZXR1cm4gWzAsIGV4bi5qc19lcnJvcl07IH1cbiAgcmV0dXJuIDA7XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYm9vbCh4KSB7IHJldHVybiAhIXg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Jvb2woeCkgeyByZXR1cm4gK3g7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9mbG9hdCBjb25zdCAoY29uc3QpXG4vL0FsaWFzOiBjYW1sX2pzX2Zyb21faW50MzJcbi8vQWxpYXM6IGNhbWxfanNfZnJvbV9uYXRpdmVpbnRcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9mbG9hdCh4KSB7IHJldHVybiB4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Zsb2F0IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19pbnQzMiBjb25zdCAoY29uc3QpXG4vL0FsaWFzOiBjYW1sX2pzX3RvX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9qc190b19pbnQzMih4KSB7IHJldHVybiB4fDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYXJyYXkoYSkge1xuICByZXR1cm4gYS5zbGljZSgxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYXJyYXkgbXV0YWJsZSAoc2hhbGxvdylcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYXJyYXkoYSkge1xuICB2YXIgbGVuID0gYS5sZW5ndGg7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbisxKTtcbiAgYlswXSA9IDA7XG4gIGZvcih2YXIgaT0wO2k8bGVuO2krKykgYltpKzFdID0gYVtpXTtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF9vZl9qc19hcnJheSBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGlzdF9vZl9qc19hcnJheShhKXtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGk9YS5sZW5ndGggLSAxOyBpPj0wOyBpLS0pe1xuICAgIHZhciBlID0gYVtpXTtcbiAgICBsID0gWzAsZSxsXTtcbiAgfVxuICByZXR1cm4gbFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xpc3RfdG9fanNfYXJyYXkgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xpc3RfdG9fanNfYXJyYXkobCl7XG4gIHZhciBhID0gW107XG4gIGZvcig7IGwgIT09IDA7IGwgPSBsWzJdKSB7XG4gICAgYS5wdXNoKGxbMV0pO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3ZhciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc192YXIoeCkge1xuICB2YXIgeCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHgpO1xuICAvL0NoZWNrcyB0aGF0IHggaGFzIHRoZSBmb3JtIGlkZW50Wy5pZGVudF0qXG4gIGlmKCF4Lm1hdGNoKC9eW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qKFxcLlthLXpBLVpfJF1bYS16QS1aXyQwLTldKikqJC8pKXtcbiAgICBjb25zb2xlLmVycm9yKFwiY2FtbF9qc192YXI6IFxcXCJcIiArIHggKyBcIlxcXCIgaXMgbm90IGEgdmFsaWQgSmF2YVNjcmlwdCB2YXJpYWJsZS4gY29udGludWluZyAuLlwiKTtcbiAgICAvL2NvbnNvbGUuZXJyb3IoXCJKcy5VbnNhZmUuZXZhbF9zdHJpbmdcIilcbiAgfVxuICByZXR1cm4gZXZhbCh4KTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfY2FsbCAoY29uc3QsIG11dGFibGUsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfY2FsbChmLCBvLCBhcmdzKSB7IHJldHVybiBmLmFwcGx5KG8sIGNhbWxfanNfZnJvbV9hcnJheShhcmdzKSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuX2NhbGwgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2Z1bl9jYWxsKGYsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDE6IHJldHVybiBmKCk7XG4gIGNhc2UgMjogcmV0dXJuIGYgKGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBmIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIGNhc2UgODogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdLGFbN10pO1xuICB9XG4gIHJldHVybiBmLmFwcGx5KG51bGwsIGNhbWxfanNfZnJvbV9hcnJheShhKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX21ldGhfY2FsbCAobXV0YWJsZSwgY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX21ldGhfY2FsbChvLCBmLCBhcmdzKSB7XG4gIHJldHVybiBvW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGYpXS5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19uZXcgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX25ldyhjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMjogcmV0dXJuIG5ldyBjIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIGNhc2UgODogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpOyB9XG4gIEYucHJvdG90eXBlID0gYy5wcm90b3R5cGU7XG4gIHJldHVybiBuZXcgRjtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfb2pzX25ld19hcnIgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX29qc19uZXdfYXJyKGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDA6IHJldHVybiBuZXcgYztcbiAgY2FzZSAxOiByZXR1cm4gbmV3IGMgKGFbMF0pO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7IHJldHVybiBjLmFwcGx5KHRoaXMsIGEpOyB9XG4gIEYucHJvdG90eXBlID0gYy5wcm90b3R5cGU7XG4gIHJldHVybiBuZXcgRjtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFjayBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2soZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGlmKGxlbiA+IDApe1xuICAgICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGFyZ3MgPSBbdW5kZWZpbmVkXTtcbiAgICB9XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gICAgcmV0dXJuIChyZXMgaW5zdGFuY2VvZiBGdW5jdGlvbik/Y2FtbF9qc193cmFwX2NhbGxiYWNrKHJlcyk6cmVzO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMoZikge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIFthcmdzXSk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QoYXJpdHksIGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJpdHkpO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoLCBhcml0eSlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKTtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7IH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfd3JhcF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2soZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLGFyZ3MpO1xuICAgIHJldHVybiAocmVzIGluc3RhbmNlb2YgRnVuY3Rpb24pP2NhbWxfanNfd3JhcF9jYWxsYmFjayhyZXMpOnJlcztcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsW3RoaXMsYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5ICsgMSk7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGgsIGFyaXR5KVxuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIC0gMTtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7IH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuLy9JZjogIWVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICByZXR1cm4gKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIHtcbiAgLy8gRnVuY3Rpb25zIGhhdmUgYW4gYWRkaXRpb25hbCBjb250aW51YXRpb24gcGFyYW1ldGVyLiBUaGlzIHNob3VsZFxuICAvLyBub3QgYmUgdmlzaWJsZSB3aGVuIGNhbGxpbmcgdGhlbSBmcm9tIEphdmFTY3JpcHRcbiAgcmV0dXJuICgoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpKSAtIDFcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19lcXVhbHMgKHgsIHkpIHsgcmV0dXJuICsoeCA9PSB5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3N0cmljdF9lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19zdHJpY3RfZXF1YWxzICh4LCB5KSB7IHJldHVybiArKHggPT09IHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXZhbF9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXZhbF9zdHJpbmcgKHMpIHtyZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V4cHIgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXhwcihzKSB7XG4gIGNvbnNvbGUuZXJyb3IoXCJjYW1sX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgcmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9wdXJlX2pzX2V4cHIgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcHVyZV9qc19leHByIChzKXtcbiAgY29uc29sZS5lcnJvcihcImNhbWxfcHVyZV9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfb2JqZWN0IChvYmplY3RfbGl0ZXJhbClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX29iamVjdCAoYSkge1xuICB2YXIgbyA9IHt9O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcCA9IGFbaV07XG4gICAgb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwWzFdKV0gPSBwWzJdO1xuICB9XG4gIHJldHVybiBvO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBGb3JtYXRcblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9mb3JtYXRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9mb3JtYXQgKGZtdCkge1xuICBmbXQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCk7XG4gIHZhciBsZW4gPSBmbXQubGVuZ3RoO1xuICBpZiAobGVuID4gMzEpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImZvcm1hdF9pbnQ6IGZvcm1hdCB0b28gbG9uZ1wiKTtcbiAgdmFyIGYgPVxuICAgICAgeyBqdXN0aWZ5OicrJywgc2lnbnN0eWxlOictJywgZmlsbGVyOicgJywgYWx0ZXJuYXRlOmZhbHNlLFxuICAgICAgICBiYXNlOjAsIHNpZ25lZGNvbnY6ZmFsc2UsIHdpZHRoOjAsIHVwcGVyY2FzZTpmYWxzZSxcbiAgICAgICAgc2lnbjoxLCBwcmVjOi0xLCBjb252OidmJyB9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBmbXQuY2hhckF0KGkpO1xuICAgIHN3aXRjaCAoYykge1xuICAgIGNhc2UgJy0nOlxuICAgICAgZi5qdXN0aWZ5ID0gJy0nOyBicmVhaztcbiAgICBjYXNlICcrJzogY2FzZSAnICc6XG4gICAgICBmLnNpZ25zdHlsZSA9IGM7IGJyZWFrO1xuICAgIGNhc2UgJzAnOlxuICAgICAgZi5maWxsZXIgPSAnMCc7IGJyZWFrO1xuICAgIGNhc2UgJyMnOlxuICAgICAgZi5hbHRlcm5hdGUgPSB0cnVlOyBicmVhaztcbiAgICBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzogY2FzZSAnNSc6XG4gICAgY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICBmLndpZHRoID0gMDtcbiAgICAgIHdoaWxlIChjPWZtdC5jaGFyQ29kZUF0KGkpIC0gNDgsIGMgPj0gMCAmJiBjIDw9IDkpIHtcbiAgICAgICAgZi53aWR0aCA9IGYud2lkdGggKiAxMCArIGM7IGkrK1xuICAgICAgfVxuICAgICAgaS0tO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnLic6XG4gICAgICBmLnByZWMgPSAwO1xuICAgICAgaSsrO1xuICAgICAgd2hpbGUgKGM9Zm10LmNoYXJDb2RlQXQoaSkgLSA0OCwgYyA+PSAwICYmIGMgPD0gOSkge1xuICAgICAgICBmLnByZWMgPSBmLnByZWMgKiAxMCArIGM7IGkrK1xuICAgICAgfVxuICAgICAgaS0tO1xuICAgIGNhc2UgJ2QnOiBjYXNlICdpJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAndSc6XG4gICAgICBmLmJhc2UgPSAxMDsgYnJlYWs7XG4gICAgY2FzZSAneCc6XG4gICAgICBmLmJhc2UgPSAxNjsgYnJlYWs7XG4gICAgY2FzZSAnWCc6XG4gICAgICBmLmJhc2UgPSAxNjsgZi51cHBlcmNhc2UgPSB0cnVlOyBicmVhaztcbiAgICBjYXNlICdvJzpcbiAgICAgIGYuYmFzZSA9IDg7IGJyZWFrO1xuICAgIGNhc2UgJ2UnOiBjYXNlICdmJzogY2FzZSAnZyc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyBmLmNvbnYgPSBjOyBicmVhaztcbiAgICBjYXNlICdFJzogY2FzZSAnRic6IGNhc2UgJ0cnOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgZi51cHBlcmNhc2UgPSB0cnVlO1xuICAgICAgZi5jb252ID0gYy50b0xvd2VyQ2FzZSAoKTsgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBmO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHJhd2J1ZmZlcikge1xuICBpZiAoZi51cHBlcmNhc2UpIHJhd2J1ZmZlciA9IHJhd2J1ZmZlci50b1VwcGVyQ2FzZSgpO1xuICB2YXIgbGVuID0gcmF3YnVmZmVyLmxlbmd0aDtcbiAgLyogQWRqdXN0IGxlbiB0byByZWZsZWN0IGFkZGl0aW9uYWwgY2hhcnMgKHNpZ24sIGV0YykgKi9cbiAgaWYgKGYuc2lnbmVkY29udiAmJiAoZi5zaWduIDwgMCB8fCBmLnNpZ25zdHlsZSAhPSAnLScpKSBsZW4rKztcbiAgaWYgKGYuYWx0ZXJuYXRlKSB7XG4gICAgaWYgKGYuYmFzZSA9PSA4KSBsZW4gKz0gMTtcbiAgICBpZiAoZi5iYXNlID09IDE2KSBsZW4gKz0gMjtcbiAgfVxuICAvKiBEbyB0aGUgZm9ybWF0dGluZyAqL1xuICB2YXIgYnVmZmVyID0gXCJcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJyAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIGlmIChmLnNpZ25lZGNvbnYpIHtcbiAgICBpZiAoZi5zaWduIDwgMCkgYnVmZmVyICs9ICctJztcbiAgICBlbHNlIGlmIChmLnNpZ25zdHlsZSAhPSAnLScpIGJ1ZmZlciArPSBmLnNpZ25zdHlsZTtcbiAgfVxuICBpZiAoZi5hbHRlcm5hdGUgJiYgZi5iYXNlID09IDgpIGJ1ZmZlciArPSAnMCc7XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT0gMTYpIGJ1ZmZlciArPSBmLnVwcGVyY2FzZT9cIjBYXCI6XCIweFwiO1xuICBpZiAoZi5qdXN0aWZ5ID09ICcrJyAmJiBmLmZpbGxlciA9PSAnMCcpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcwJztcbiAgYnVmZmVyICs9IHJhd2J1ZmZlcjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnLScpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcgJztcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYnVmZmVyKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBqc29vX2Zsb29yX2xvZzJcbnZhciBsb2cyX29rID0gTWF0aC5sb2cyICYmIE1hdGgubG9nMigxLjEyMzU1ODIwOTI4ODk0NzRFKzMwNykgPT0gMTAyMFxuZnVuY3Rpb24ganNvb19mbG9vcl9sb2cyKHgpIHtcbiAgaWYobG9nMl9vaykgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5sb2cyKHgpKVxuICB2YXIgaSA9IDA7XG4gIGlmICh4ID09IDApIHJldHVybiAtSW5maW5pdHk7XG4gIGlmKHg+PTEpIHt3aGlsZSAoeD49Mikge3gvPTI7IGkrK30gfVxuICBlbHNlIHt3aGlsZSAoeCA8IDEpIHt4Kj0yOyBpLS19IH07XG4gIHJldHVybiBpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMiwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAoeCkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDEsIDAsIDB4N2ZmMCk7XG4gICAgaWYgKHggPiAwKVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDAsIDAsIDB4N2ZmMClcbiAgICBlbHNlXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMCwgMCwgMHhmZmYwKVxuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MHg4MDAwOih4Pj0wKT8wOjB4ODAwMDtcbiAgaWYgKHNpZ24pIHggPSAteDtcbiAgLy8gSW50NjQuYml0c19vZl9mbG9hdCAxLjEyMzU1ODIwOTI4ODk0NzRFKzMwNyA9IDB4N2ZiMDAwMDAwMDAwMDAwMExcbiAgLy8gdXNpbmcgTWF0aC5MT0cyRSpNYXRoLmxvZyh4KSBpbiBwbGFjZSBvZiBNYXRoLmxvZzIgcmVzdWx0IGluIHByZWNpc2lvbiBsb3N0XG4gIHZhciBleHAgPSBqc29vX2Zsb29yX2xvZzIoeCkgKyAxMDIzO1xuICBpZiAoZXhwIDw9IDApIHtcbiAgICBleHAgPSAwO1xuICAgIHggLz0gTWF0aC5wb3coMiwtMTAyNik7XG4gIH0gZWxzZSB7XG4gICAgeCAvPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgICBpZiAoeCA8IDE2KSB7XG4gICAgICB4ICo9IDI7IGV4cCAtPTE7IH1cbiAgICBpZiAoZXhwID09IDApIHtcbiAgICAgIHggLz0gMjsgfVxuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwyNCk7XG4gIHZhciByMyA9IHh8MDtcbiAgeCA9ICh4IC0gcjMpICogaztcbiAgdmFyIHIyID0geHwwO1xuICB4ID0gKHggLSByMikgKiBrO1xuICB2YXIgcjEgPSB4fDA7XG4gIHIzID0gKHIzICYweGYpIHwgc2lnbiB8IGV4cCA8PCA0O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkocjEsIHIyLCByMyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyXG5mdW5jdGlvbiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgKHgpIHtcbiAgdmFyIGZsb2F0MzJhID0gbmV3IEZsb2F0MzJBcnJheSgxKTtcbiAgZmxvYXQzMmFbMF0gPSB4O1xuICB2YXIgaW50MzJhID0gbmV3IEludDMyQXJyYXkoZmxvYXQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGludDMyYVswXSB8IDA7XG59XG5cbi8vRlAgbGl0ZXJhbHMgY2FuIGJlIHdyaXR0ZW4gdXNpbmcgdGhlIGhleGFkZWNpbWFsXG4vL25vdGF0aW9uIDB4PG1hbnRpc3NhIGluIGhleD5wPGV4cG9uZW50PiBmcm9tIElTTyBDOTkuXG4vL2h0dHBzOi8vZ2l0aHViLmNvbS9kYW5rb2dhaS9qcy1oZXhmbG9hdC9ibG9iL21hc3Rlci9oZXhmbG9hdC5qc1xuLy9Qcm92aWRlczogY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0ICh4LCBwcmVjLCBzdHlsZSkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXCJuYW5cIik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nICgoeCA+IDApP1wiaW5maW5pdHlcIjpcIi1pbmZpbml0eVwiKTtcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzE6KHg+PTApPzA6MTtcbiAgaWYoc2lnbikgeCA9IC14O1xuICB2YXIgZXhwID0gMDtcbiAgaWYgKHggPT0gMCkgeyB9XG4gIGVsc2UgaWYgKHggPCAxKSB7XG4gICAgd2hpbGUgKHggPCAxICYmIGV4cCA+IC0xMDIyKSAgeyB4ICo9IDI7IGV4cC0tIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoeCA+PSAyKSB7IHggLz0gMjsgZXhwKysgfVxuICB9XG4gIHZhciBleHBfc2lnbiA9IGV4cCA8IDAgPyAnJyA6ICcrJztcbiAgdmFyIHNpZ25fc3RyID0gJyc7XG4gIGlmIChzaWduKSBzaWduX3N0ciA9ICctJ1xuICBlbHNlIHtcbiAgICBzd2l0Y2goc3R5bGUpe1xuICAgIGNhc2UgNDMgLyogJysnICovOiBzaWduX3N0ciA9ICcrJzsgYnJlYWs7XG4gICAgY2FzZSAzMiAvKiAnICcgKi86IHNpZ25fc3RyID0gJyAnOyBicmVhaztcbiAgICBkZWZhdWx0OiBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHByZWMgPj0gMCAmJiBwcmVjIDwgMTMpIHtcbiAgICAvKiBJZiBhIHByZWNpc2lvbiBpcyBnaXZlbiwgYW5kIGlzIHNtYWxsLCByb3VuZCBtYW50aXNzYSBhY2NvcmRpbmdseSAqL1xuICAgIHZhciBjc3QgPSBNYXRoLnBvdygyLHByZWMgKiA0KTtcbiAgICB4ID0gTWF0aC5yb3VuZCh4ICogY3N0KSAvIGNzdDtcbiAgfVxuICB2YXIgeF9zdHIgPSB4LnRvU3RyaW5nKDE2KTtcbiAgaWYocHJlYyA+PSAwKXtcbiAgICB2YXIgaWR4ID0geF9zdHIuaW5kZXhPZignLicpO1xuICAgIGlmKGlkeDwwKSB7XG4gICAgICB4X3N0ciArPSAnLicgKyBjYW1sX3N0cl9yZXBlYXQocHJlYywgJzAnKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB2YXIgc2l6ZSA9IGlkeCsxK3ByZWM7XG4gICAgICBpZih4X3N0ci5sZW5ndGggPCBzaXplKVxuICAgICAgICB4X3N0ciArPSBjYW1sX3N0cl9yZXBlYXQoc2l6ZSAtIHhfc3RyLmxlbmd0aCwgJzAnKTtcbiAgICAgIGVsc2VcbiAgICAgICAgeF9zdHIgPSB4X3N0ci5zdWJzdHIoMCxzaXplKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzaWduX3N0ciArICcweCcgKyB4X3N0ciArICdwJyArIGV4cF9zaWduICsgZXhwLnRvU3RyaW5nKDEwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBsbyA9IHgubG87XG4gIHZhciBtaSA9IHgubWk7XG4gIHZhciBoaSA9IHguaGk7XG4gIHZhciBleHAgPSAoaGkgJiAweDdmZmYpID4+IDQ7XG4gIGlmIChleHAgPT0gMjA0Nykge1xuICAgIGlmICgobG98bWl8KGhpJjB4ZikpID09IDApXG4gICAgICByZXR1cm4gKGhpICYgMHg4MDAwKT8oLUluZmluaXR5KTpJbmZpbml0eTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gTmFOO1xuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwtMjQpO1xuICB2YXIgcmVzID0gKGxvKmsrbWkpKmsrKGhpJjB4Zik7XG4gIGlmIChleHAgPiAwKSB7XG4gICAgcmVzICs9IDE2O1xuICAgIHJlcyAqPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgfSBlbHNlXG4gICAgcmVzICo9IE1hdGgucG93KDIsLTEwMjYpO1xuICBpZiAoaGkgJiAweDgwMDApIHJlcyA9IC0gcmVzO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25leHRhZnRlcl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X3N1YixjYW1sX2ludDY0X29mX2ludDMyXG5mdW5jdGlvbiBjYW1sX25leHRhZnRlcl9mbG9hdCAoeCx5KSB7XG4gIGlmKGlzTmFOKHgpIHx8IGlzTmFOKHkpKSByZXR1cm4gTmFOO1xuICBpZih4PT15KSByZXR1cm4geTtcbiAgaWYoeD09MCl7XG4gICAgaWYoeSA8IDApXG4gICAgICByZXR1cm4gLU1hdGgucG93KDIsIC0xMDc0KVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBNYXRoLnBvdygyLCAtMTA3NClcbiAgfVxuICB2YXIgYml0cyA9IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh4KTtcbiAgdmFyIG9uZSA9IGNhbWxfaW50NjRfb2ZfaW50MzIoMSk7XG4gIGlmICgoeDx5KSA9PSAoeD4wKSlcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9hZGQoYml0cywgb25lKVxuICBlbHNlXG4gICAgYml0cyA9IGNhbWxfaW50NjRfc3ViKGJpdHMsIG9uZSlcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhiaXRzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF90cnVuY19mbG9hdFxuZnVuY3Rpb24gY2FtbF90cnVuY19mbG9hdCh4KXtcbiAgcmV0dXJuIE1hdGgudHJ1bmMoeCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBpbnQzMmEgPSBuZXcgSW50MzJBcnJheSgxKTtcbiAgaW50MzJhWzBdID0geDtcbiAgdmFyIGZsb2F0MzJhID0gbmV3IEZsb2F0MzJBcnJheShpbnQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGZsb2F0MzJhWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NsYXNzaWZ5X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NsYXNzaWZ5X2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPj0gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgpIHJldHVybiAwO1xuICAgIGlmICh4ICE9IDApIHJldHVybiAxO1xuICAgIHJldHVybiAyO1xuICB9XG4gIHJldHVybiBpc05hTih4KT80OjM7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21vZGZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbW9kZl9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgdmFyIG5lZyA9ICgxL3gpIDwgMDtcbiAgICB4ID0gTWF0aC5hYnMoeCk7XG4gICAgdmFyIGkgPSBNYXRoLmZsb29yICh4KTtcbiAgICB2YXIgZiA9IHggLSBpO1xuICAgIGlmIChuZWcpIHsgaSA9IC1pOyBmID0gLWY7IH1cbiAgICByZXR1cm4gWzAsIGYsIGldO1xuICB9XG4gIGlmIChpc05hTiAoeCkpIHJldHVybiBbMCwgTmFOLCBOYU5dO1xuICByZXR1cm4gWzAsIDEveCwgeF07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xkZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xkZXhwX2Zsb2F0ICh4LGV4cCkge1xuICBleHAgfD0gMDtcbiAgaWYgKGV4cCA+IDEwMjMpIHtcbiAgICBleHAgLT0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIGlmIChleHAgPiAxMDIzKSB7ICAvLyBpbiBjYXNlIHggaXMgc3Vibm9ybWFsXG4gICAgICBleHAgLT0gMTAyMztcbiAgICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgfVxuICB9XG4gIGlmIChleHAgPCAtMTAyMykge1xuICAgIGV4cCArPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgLTEwMjMpO1xuICB9XG4gIHggKj0gTWF0aC5wb3coMiwgZXhwKTtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXhwX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfZnJleHBfZmxvYXQgKHgpIHtcbiAgaWYgKCh4ID09IDApIHx8ICFpc0Zpbml0ZSh4KSkgcmV0dXJuIFswLCB4LCAwXTtcbiAgdmFyIG5lZyA9IHggPCAwO1xuICBpZiAobmVnKSB4ID0gLSB4O1xuICB2YXIgZXhwID0gTWF0aC5tYXgoLTEwMjMsIGpzb29fZmxvb3JfbG9nMih4KSArIDEpO1xuICB4ICo9IE1hdGgucG93KDIsLWV4cCk7XG4gIHdoaWxlICh4IDwgMC41KSB7XG4gICAgeCAqPSAyO1xuICAgIGV4cC0tO1xuICB9XG4gIHdoaWxlICh4ID49IDEpIHtcbiAgICB4ICo9IDAuNTtcbiAgICBleHArKztcbiAgfVxuICBpZiAobmVnKSB4ID0gLSB4O1xuICByZXR1cm4gWzAsIHgsIGV4cF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbG9hdF9jb21wYXJlICh4LCB5KSB7XG4gIGlmICh4ID09PSB5KSByZXR1cm4gMDtcbiAgaWYgKHggPCB5KSByZXR1cm4gLTE7XG4gIGlmICh4ID4geSkgcmV0dXJuIDE7XG4gIGlmICh4ID09PSB4KSByZXR1cm4gMTtcbiAgaWYgKHkgPT09IHkpIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29weXNpZ25fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29weXNpZ25fZmxvYXQgKHgsIHkpIHtcbiAgaWYgKHkgPT0gMCkgeSA9IDEgLyB5O1xuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHJldHVybiAoeSA8IDApPygteCk6eDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zaWduYml0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpZ25iaXRfZmxvYXQoeCkge1xuICBpZiAoeCA9PSAwKSB4ID0gMSAvIHg7XG4gIHJldHVybiAoeCA8IDApPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9leHBtMV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHBtMV9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5leHBtMSh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9leHAyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cDJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5wb3coMiwgeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMXBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMXBfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cxcCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cyKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2h5cG90X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2h5cG90X2Zsb2F0ICh4LCB5KSB7IHJldHVybiBNYXRoLmh5cG90KHgsIHkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzEwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzEwX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmxvZzEwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Nvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Fjb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Fjb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFjb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3NpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5zaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2FzaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2FzaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFzaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3RhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC50YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2F0YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2F0YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmF0YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JvdW5kX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3JvdW5kX2Zsb2F0ICh4KSB7XG4gIGlmICh4ID49IDApIHtcbiAgICB2YXIgeSA9IE1hdGguZmxvb3IoeCk7XG4gICAgcmV0dXJuICh4IC0geSA+PSAwLjUpPyh5ICsgMSk6eVxuICB9IGVsc2Uge1xuICAgIHZhciB5ID0gTWF0aC5jZWlsKHgpO1xuICAgIHJldHVybiAoeSAtIHggPj0gMC41KT8oeSAtIDEpOnlcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9jYnJ0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NicnRfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguY2JydCh4KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9lcmZfZmxvYXQoeCkge1xuICB2YXIgYTEgPSAwLjI1NDgyOTU5MjtcbiAgdmFyIGEyID0gLTAuMjg0NDk2NzM2O1xuICB2YXIgYTMgPSAxLjQyMTQxMzc0MTtcbiAgdmFyIGE0ID0gLTEuNDUzMTUyMDI3O1xuICB2YXIgYTUgPSAxLjA2MTQwNTQyOTtcbiAgdmFyIHAgPSAwLjMyNzU5MTE7XG5cbiAgdmFyIHNpZ24gPSAxO1xuICBpZiAoeCA8IDApIHtcbiAgICBzaWduID0gLTE7XG4gIH1cbiAgeCA9IE1hdGguYWJzKHgpO1xuICB2YXIgdCA9IDEuMCAvICgxLjAgKyBwICogeCk7XG4gIHZhciB5ID0gMS4wIC0gKCgoKGE1ICogdCArIGE0KSAqIHQgKyBhMykgKiB0ICsgYTIpICogdCArIGExKSAqIHQgKiBNYXRoLmV4cCgteCAqIHgpO1xuXG4gIHJldHVybiBzaWduICogeTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZjX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2VyZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9lcmZjX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIDEgLSBjYW1sX2VyZl9mbG9hdCh4KTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZtYV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbWFfZmxvYXQoeCwgeSwgeikge1xuICB2YXIgU1BMSVQgPSBNYXRoLnBvdygyLCAyNykgKyAxO1xuICB2YXIgTUlOX1ZBTFVFID0gTWF0aC5wb3coMiwgLTEwMjIpO1xuICB2YXIgRVBTSUxPTiA9IE1hdGgucG93KDIsIC01Mik7XG4gIHZhciBDID0gNDE2O1xuICB2YXIgQSA9IE1hdGgucG93KDIsICtDKTtcbiAgdmFyIEIgPSBNYXRoLnBvdygyLCAtQyk7XG5cbiAgZnVuY3Rpb24gbXVsdGlwbHkgKGEsIGIpIHtcbiAgICB2YXIgYXQgPSBTUExJVCAqIGE7XG4gICAgdmFyIGFoaSA9IGF0IC0gKGF0IC0gYSk7XG4gICAgdmFyIGFsbyA9IGEgLSBhaGk7XG4gICAgdmFyIGJ0ID0gU1BMSVQgKiBiO1xuICAgIHZhciBiaGkgPSBidCAtIChidCAtIGIpO1xuICAgIHZhciBibG8gPSBiIC0gYmhpO1xuICAgIHZhciBwID0gYSAqIGI7XG4gICAgdmFyIGUgPSAoKGFoaSAqIGJoaSAtIHApICsgYWhpICogYmxvICsgYWxvICogYmhpKSArIGFsbyAqIGJsbztcbiAgICByZXR1cm4ge1xuICAgICAgcDogcCxcbiAgICAgIGU6IGVcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHZhciBzID0gYSArIGI7XG4gICAgdmFyIHYgPSBzIC0gYTtcbiAgICB2YXIgZSA9IChhIC0gKHMgLSB2KSkgKyAoYiAtIHYpO1xuICAgIHJldHVybiB7XG4gICAgICBzOiBzLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRqdXN0ICh4LCB5KSB7XG4gICAgcmV0dXJuIHggIT09IDAgJiYgeSAhPT0gMCAmJiBTUExJVCAqIHggLSAoU1BMSVQgKiB4IC0geCkgPT09IHggPyB4ICogKDEgKyAoeCA8IDAgPyAtMSA6ICsxKSAqICh5IDwgMCA/IC0xIDogKzEpICogRVBTSUxPTikgOiB4O1xuICB9O1xuXG4gIGlmICh4ID09PSAwIHx8IHggIT09IHggfHwgeCA9PT0gKzEgLyAwIHx8IHggPT09IC0xIC8gMCB8fFxuICAgICAgeSA9PT0gMCB8fCB5ICE9PSB5IHx8IHkgPT09ICsxIC8gMCB8fCB5ID09PSAtMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKyB6O1xuICB9XG4gIGlmICh6ID09PSAwKSB7XG4gICAgcmV0dXJuIHggKiB5O1xuICB9XG4gIGlmICh6ICE9PSB6IHx8IHogPT09ICsxIC8gMCB8fCB6ID09PSAtMSAvIDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciBzY2FsZSA9IDE7XG4gIHdoaWxlIChNYXRoLmFicyh4KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHggKj0gQjtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeSkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB5ICo9IEI7XG4gIH1cbiAgaWYgKHNjYWxlID09PSAxIC8gMCkge1xuICAgIHJldHVybiB4ICogeSAqIHNjYWxlO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh4KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHggKj0gQTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeSkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB5ICo9IEE7XG4gIH1cbiAgaWYgKHNjYWxlID09PSAwKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgeHMgPSB4O1xuICB2YXIgeXMgPSB5O1xuICB2YXIgenMgPSB6IC8gc2NhbGU7XG5cbiAgaWYgKE1hdGguYWJzKHpzKSA+IE1hdGguYWJzKHhzICogeXMpICogNCAvIEVQU0lMT04pIHtcbiAgICByZXR1cm4gejtcbiAgfVxuICBpZiAoTWF0aC5hYnMoenMpIDwgTWF0aC5hYnMoeHMgKiB5cykgKiBFUFNJTE9OIC8gNCAqIEVQU0lMT04gLyA0KSB7XG4gICAgenMgPSAoeiA8IDAgPyAtMSA6ICsxKSAqIE1JTl9WQUxVRTtcbiAgfVxuXG4gIHZhciB4eSA9IG11bHRpcGx5KHhzLCB5cyk7XG4gIHZhciBzID0gYWRkKHh5LnAsIHpzKTtcbiAgdmFyIHUgPSBhZGQoeHkuZSwgcy5lKTtcbiAgdmFyIGkgPSBhZGQocy5zLCB1LnMpO1xuXG4gIHZhciBmID0gaS5zICsgYWRqdXN0KGkuZSwgdS5lKTtcbiAgaWYgKGYgPT09IDApIHtcbiAgICByZXR1cm4gZjtcbiAgfVxuXG4gIHZhciBmcyA9IGYgKiBzY2FsZTtcbiAgaWYgKE1hdGguYWJzKGZzKSA+IE1JTl9WQUxVRSkge1xuICAgIHJldHVybiBmcztcbiAgfVxuXG4gIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgd2FzIGV4dHJhIHJvdW5kaW5nIGZvciBhIGRlbm9ybWFsaXplZCB2YWx1ZS5cbiAgcmV0dXJuIGZzICsgYWRqdXN0KGYgLSBmcyAvIHNjYWxlLCBpLmUpICogc2NhbGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZmxvYXQgKGZtdCwgeCkge1xuICBmdW5jdGlvbiB0b0ZpeGVkKHgsZHApIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPCAxLjApIHtcbiAgICAgIHJldHVybiB4LnRvRml4ZWQoZHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZSA9IHBhcnNlSW50KHgudG9TdHJpbmcoKS5zcGxpdCgnKycpWzFdKTtcbiAgICAgIGlmIChlID4gMjApIHtcbiAgICAgICAgZSAtPSAyMDtcbiAgICAgICAgeCAvPSBNYXRoLnBvdygxMCxlKTtcbiAgICAgICAgeCArPSAobmV3IEFycmF5KGUrMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgaWYoZHAgPiAwKSB7XG4gICAgICAgICAgeCA9IHggKyAnLicgKyAobmV3IEFycmF5KGRwKzEpKS5qb2luKCcwJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHg7XG4gICAgICB9XG4gICAgICBlbHNlIHJldHVybiB4LnRvRml4ZWQoZHApXG4gICAgfVxuICB9XG4gIHZhciBzLCBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgdmFyIHByZWMgPSAoZi5wcmVjIDwgMCk/NjpmLnByZWM7XG4gIGlmICh4IDwgMCB8fCAoeCA9PSAwICYmIDEveCA9PSAtSW5maW5pdHkpKSB7IGYuc2lnbiA9IC0xOyB4ID0gLXg7IH1cbiAgaWYgKGlzTmFOKHgpKSB7IHMgPSBcIm5hblwiOyBmLmZpbGxlciA9ICcgJzsgfVxuICBlbHNlIGlmICghaXNGaW5pdGUoeCkpIHsgcyA9IFwiaW5mXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2VcbiAgICBzd2l0Y2ggKGYuY29udikge1xuICAgIGNhc2UgJ2UnOlxuICAgICAgdmFyIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyk7XG4gICAgICAvLyBleHBvbmVudCBzaG91bGQgYmUgYXQgbGVhc3QgdHdvIGRpZ2l0c1xuICAgICAgdmFyIGkgPSBzLmxlbmd0aDtcbiAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT0gJ2UnKVxuICAgICAgICBzID0gcy5zbGljZSAoMCwgaSAtIDEpICsgJzAnICsgcy5zbGljZSAoaSAtIDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZic6XG4gICAgICBzID0gdG9GaXhlZCh4LCBwcmVjKTsgYnJlYWs7XG4gICAgY2FzZSAnZyc6XG4gICAgICBwcmVjID0gcHJlYz9wcmVjOjE7XG4gICAgICBzID0geC50b0V4cG9uZW50aWFsKHByZWMgLSAxKTtcbiAgICAgIHZhciBqID0gcy5pbmRleE9mKCdlJyk7XG4gICAgICB2YXIgZXhwID0gK3Muc2xpY2UoaiArIDEpO1xuICAgICAgaWYgKGV4cCA8IC00IHx8IHggPj0gMWUyMSB8fCB4LnRvRml4ZWQoMCkubGVuZ3RoID4gcHJlYykge1xuICAgICAgICAvLyByZW1vdmUgdHJhaWxpbmcgemVyb2VzXG4gICAgICAgIHZhciBpID0gaiAtIDE7IHdoaWxlIChzLmNoYXJBdChpKSA9PSAnMCcpIGktLTtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICBzID0gcy5zbGljZSgwLCBpICsgMSkgKyBzLnNsaWNlKGopO1xuICAgICAgICBpID0gcy5sZW5ndGg7XG4gICAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT0gJ2UnKVxuICAgICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHAgPSBwcmVjO1xuICAgICAgICBpZiAoZXhwIDwgMCkgeyBwIC09IGV4cCArIDE7IHMgPSB4LnRvRml4ZWQocCk7IH1cbiAgICAgICAgZWxzZSB3aGlsZSAocyA9IHgudG9GaXhlZChwKSwgcy5sZW5ndGggPiBwcmVjICsgMSkgcC0tO1xuICAgICAgICBpZiAocCkge1xuICAgICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgICB2YXIgaSA9IHMubGVuZ3RoIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICAgIGlmIChzLmNoYXJBdChpKSA9PSAnLicpIGktLTtcbiAgICAgICAgICBzID0gcy5zbGljZSgwLCBpICsgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHJlcztcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocylcbiAgcmVzID0gK3M7XG4gIGlmICgocy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKSByZXR1cm4gcmVzO1xuICBzID0gcy5yZXBsYWNlKC9fL2csXCJcIik7XG4gIHJlcyA9ICtzO1xuICBpZiAoKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHx8IC9eWystXT9uYW4kL2kudGVzdChzKSkgcmV0dXJuIHJlcztcbiAgdmFyIG0gPSAvXiAqKFsrLV0/KTB4KFswLTlhLWZdKylcXC4/KFswLTlhLWZdKikocChbKy1dP1swLTldKykpPy9pLmV4ZWMocyk7XG4gIC8vICAgICAgICAgIDEgICAgICAgIDIgICAgICAgICAgICAgMyAgICAgICAgICAgNVxuICBpZihtKXtcbiAgICB2YXIgbTMgPSBtWzNdLnJlcGxhY2UoLzArJC8sJycpO1xuICAgIHZhciBtYW50aXNzYSA9IHBhcnNlSW50KG1bMV0gKyBtWzJdICsgbTMsIDE2KTtcbiAgICB2YXIgZXhwb25lbnQgPSAobVs1XXwwKSAtIDQqbTMubGVuZ3RoO1xuICAgIHJlcyA9IG1hbnRpc3NhICogTWF0aC5wb3coMiwgZXhwb25lbnQpO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgaWYoL15cXCs/aW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIEluZmluaXR5O1xuICBpZigvXi1pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gLUluZmluaXR5O1xuICBjYW1sX2ZhaWx3aXRoKFwiZmxvYXRfb2Zfc3RyaW5nXCIpO1xufVxuIiwiLypcblRvIGRlYWwgd2l0aCBlZmZlY3RzLCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgaXMgaW50dWl0aXZlbHkgY29tcG9zZWQgb2ZcbmEgc3RhY2sgb2YgZmliZXJzLiBFYWNoIGZpYmVyIGhhcyBhIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuKG9uZS1hcmd1bWVudCBKYXZhU2NyaXB0IGZ1bmN0aW9uKSwgYSBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kXG5hIHRyaXBsZSBvZiBoYW5kbGVycywgd2hpY2ggYXJlIGludm9rZWQgd2hlbiB0aGUgZmliZXIgdGVybWluYXRlc1xuKGVpdGhlciB3aXRoIGEgdmFsdWUgb3IgYW4gZXhjZXB0aW9uKSBvciB3aGVuIGFuIGVmZmVjdCBpcyBwZXJmb3JtZWQuXG5UaGUgbG93LWxldmVsIGNvbnRpbnVhdGlvbiBvZiB0aGUgdG9wbW9zdCBmaWJlciAod2hpY2ggaXMgY3VycmVudGx5XG5leGVjdXRpbmcpIGlzIHBhc3NlZCBmcm9tIGZ1bmN0aW9uIHRvIGZ1bmN0aW9uIGFzIGFuIGFkZGl0aW9uYWxcbmFyZ3VtZW50LiBJdHMgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGlzIHN0b3JlZCBpblxuW2NhbWxfZXhuX3N0YWNrXS4gRXhjZXB0aW9uIGhhbmRsZXJzIGFyZSBwdXNoZWQgaW50byB0aGlzIHN0YWNrIHdoZW5cbmVudGVyaW5nIGEgW3RyeSAuLi4gd2l0aCAuLi5dIGFuZCBwb3BwZWQgb24gZXhpdC4gVGhlbiwgaGFuZGxlcnMgYW5kXG50aGUgcmVtYWluaW5nIGZpYmVycyBhcmUgc3RvcmVkIGluIFtjYW1sX2ZpYmVyX3N0YWNrXS4gVG8gaW5zdGFsbCBhblxuZWZmZWN0IGhhbmRsZXIsIHdlIHB1c2ggYSBuZXcgZmliZXIgaW50byB0aGUgZXhlY3V0aW9uIGNvbnRleHQuXG5cbldlIGhhdmUgYmFzaWNhbGx5IHRoZSBmb2xsb3dpbmcgdHlwZSBmb3IgcmVpZmllZCBjb250aW51YXRpb25zICh0eXBlXG5bY29udGludWF0aW9uXSBpbiBtb2R1bGUgW0VmZmVjdF0gb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkpOlxuXG4gIHR5cGUgKCdhLCAnYikgY29udGludWF0aW9uID0gKCdhLCAnYikgc3RhY2sgcmVmXG5cbiAgYW5kIChfLCBfKSBzdGFjayA9XG4gICAgICBDb25zIDogKCdiIC0+IHVuaXQpICogICAgICAgICAgICAgKCogbG93LWxldmVsIGNvbnRpbnVhdGlvbiAqKVxuICAgICAgICAgICAgIChleG4gLT4gdW5pdCkgbGlzdCAqICAgICAgICgqIGV4Y2VwdGlvbiBoYW5kbGVycyAqKVxuICAgICAgICAgICAgICgnYiwgJ2MpIGhhbmRsZXIgKlxuICAgICAgICAgICAgICgnYSwgJ2IpIHN0YWNrXG4gICAgICAgICAgICAgLT4gKCdhLCAnYykgc3RhY2tcbiAgICB8IEVtcHR5IDogKCdhLCAnYSkgc3RhY2tcblxuICBhbmQgKCdhLCdiKSBoYW5kbGVyID0gICAoKiBBcyBpbiBtb2R1bGUgRWZmZWN0IGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgRWZmZWN0LnQgLT4gKCgnYywnYikgY29udGludWF0aW9uIC0+ICdiKSBvcHRpb24gfVxuXG5Db250aW51YXRpb25zIGFyZSBvbmUtc2hvdC4gQSBjb250aW51YXRpb24gW3JlZiBFbXB0eV0gaGFzIGFscmVhZHlcbmJlZW4gcmVzdW1lZC5cblxuQSBjb250aW51YXRpb24gaXMgYmFzaWNhbGx5IGNvbXBvc2VkIG9mIGEgbGlzdCBvZiBmaWJlcnMsIHdoaWNoIGVhY2hcbmhhcyBpdHMgbG93LWxldmVsIGNvbnRpbnVhdGlvbiwgaXRzIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQgYVxudHJpcGxlIG9mIGhhbmRsZXJzIHRvIGRlYWwgd2l0aCB3aGVuIHRoZSBmaWJlciB0ZXJtaW5hdGVzIG9yIGFuXG5lZmZlY3QgaXMgcGVyZm9ybWVkLiBXaGVuIHJlc3VtaW5nIGEgY29udGludWF0aW9uLCB0aGUgaW5uZXJtb3N0IGZpYmVyXG5pcyByZXN1bWVkIGZpcnN0LlxuXG5UaGUgaGFuZGxlcnMgYXJlIENQUy10cmFuc2Zvcm1lZCBmdW5jdGlvbnM6IHRoZXkgYWN0dWFsbHkgdGFrZSBhblxuYWRkaXRpb25hbCBwYXJhbWV0ZXIgd2hpY2ggaXMgdGhlIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvbi5cbiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG4vLyBUaGlzIGlzIGFuIE9DYW1sIGxpc3Qgb2YgZXhjZXB0aW9uIGhhbmRsZXJzXG52YXIgY2FtbF9leG5fc3RhY2sgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1c2hfdHJhcFxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcHVzaF90cmFwKGhhbmRsZXIpIHtcbiAgY2FtbF9leG5fc3RhY2s9WzAsaGFuZGxlcixjYW1sX2V4bl9zdGFja107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9wX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF90cmFwKCkge1xuICBpZiAoIWNhbWxfZXhuX3N0YWNrKSByZXR1cm4gZnVuY3Rpb24oeCl7dGhyb3cgeDt9XG4gIHZhciBoID0gY2FtbF9leG5fc3RhY2tbMV07XG4gIGNhbWxfZXhuX3N0YWNrPWNhbWxfZXhuX3N0YWNrWzJdO1xuICByZXR1cm4gaFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG4vLyBUaGlzIGhhcyB0aGUgc2hhcGUge2gsIHI6e2ssIHgsIGV9fSB3aGVyZSBoIGlzIGEgdHJpcGxlIG9mIGhhbmRsZXJzXG4vLyAoc2VlIGVmZmVjdC5qcykgYW5kIGssIHggYW5kIGUgYXJlIHRoZSBzYXZlZCBjb250aW51YXRpb24sXG4vLyBleGNlcHRpb24gc3RhY2sgYW5kIGZpYmVyIHN0YWNrIG9mIHRoZSBwYXJlbnQgZmliZXIuXG52YXIgY2FtbF9maWJlcl9zdGFjaztcblxuLy9Qcm92aWRlczpjYW1sX3Jlc3VtZV9zdGFja1xuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcmVzdW1lX3N0YWNrKHN0YWNrLCBrKSB7XG4gIGlmICghc3RhY2spIGNhbWxfcmFpc2VfY29uc3RhbnRcbiAgICAgICAgICAgICAgICAgKGNhbWxfbmFtZWRfdmFsdWUoXCJFZmZlY3QuQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFwiKSk7XG4gIC8vIFVwZGF0ZSB0aGUgZXhlY3V0aW9uIGNvbnRleHQgd2l0aCB0aGUgc3RhY2sgb2YgZmliZXJzIGluIFtzdGFja10gaW5cbiAgLy8gb3JkZXIgdG8gcmVzdW1lIHRoZSBjb250aW51YXRpb25cbiAgZG8ge1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPVxuICAgICAge2g6c3RhY2tbM10sIHI6e2s6aywgeDpjYW1sX2V4bl9zdGFjaywgZTpjYW1sX2ZpYmVyX3N0YWNrfX07XG4gICAgayA9IHN0YWNrWzFdO1xuICAgIGNhbWxfZXhuX3N0YWNrID0gc3RhY2tbMl07XG4gICAgc3RhY2sgPSBzdGFja1s0XTtcbiAgfSB3aGlsZSAoc3RhY2spXG4gIHJldHVybiBrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BvcF9maWJlclxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcG9wX2ZpYmVyKCkge1xuICAvLyBNb3ZlIHRvIHRoZSBwYXJlbnQgZmliZXIsIHJldHVybmluZyB0aGUgcGFyZW50J3MgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuICB2YXIgcmVtID0gY2FtbF9maWJlcl9zdGFjay5yO1xuICBjYW1sX2V4bl9zdGFjayA9IHJlbS54O1xuICBjYW1sX2ZpYmVyX3N0YWNrID0gcmVtLmU7XG4gIHJldHVybiByZW0uaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wZXJmb3JtX2VmZmVjdFxuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm4sIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BlcmZvcm1fZWZmZWN0KGVmZiwgY29udCwgazApIHtcbiAgLy8gQWxsb2NhdGUgYSBjb250aW51YXRpb24gaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZVxuICBpZiAoIWNvbnQpIGNvbnQgPSBbMjQ1IC8qY29udGludWF0aW9uKi8sIDBdO1xuICAvLyBHZXQgY3VycmVudCBlZmZlY3QgaGFuZGxlclxuICB2YXIgaGFuZGxlciA9IGNhbWxfZmliZXJfc3RhY2suaFszXTtcbiAgLy8gQ29ucyB0aGUgY3VycmVudCBmaWJlciBvbnRvIHRoZSBjb250aW51YXRpb246XG4gIC8vICAgY29udCA6PSBDb25zIChrLCBleG5fc3RhY2ssIGhhbmRsZXJzLCAhY29udClcbiAgY29udFsxXSA9IFswLGswLGNhbWxfZXhuX3N0YWNrLGNhbWxfZmliZXJfc3RhY2suaCxjb250WzFdXTtcbiAgLy8gTW92ZSB0byBwYXJlbnQgZmliZXIgYW5kIGV4ZWN1dGUgdGhlIGVmZmVjdCBoYW5kbGVyIHRoZXJlXG4gIC8vIFRoZSBoYW5kbGVyIGlzIGRlZmluZWQgaW4gU3RkbGliLkVmZmVjdCwgc28gd2Uga25vdyB0aGF0IHRoZSBhcml0eSBtYXRjaGVzXG4gIHZhciBrMSA9IGNhbWxfcG9wX2ZpYmVyKCk7XG4gIHJldHVybiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCk/aGFuZGxlcihlZmYsY29udCxrMSxrMSlcbiAgICAgICAgIDpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGhhbmRsZXIsW2VmZixjb250LGsxLGsxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2Nfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX2ZpYmVyX3N0YWNrLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoLCBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrKGh2LCBoeCwgaGYpIHtcbiAgZnVuY3Rpb24gY2FsbChpLCB4KSB7XG4gICAgdmFyIGY9Y2FtbF9maWJlcl9zdGFjay5oW2ldO1xuICAgIHZhciBhcmdzID0gW3gsIGNhbWxfcG9wX2ZpYmVyKCldO1xuICAgIHJldHVybiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCk/Y2FtbF9jYWxsX2dlbihmLGFyZ3MpXG4gICAgICAgICAgIDpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsYXJncyk7XG4gIH1cbiAgZnVuY3Rpb24gaHZhbCh4KSB7XG4gICAgLy8gQ2FsbCBbaHZdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgICByZXR1cm4gY2FsbCgxLCB4KTtcbiAgfVxuICBmdW5jdGlvbiBoZXhuKGUpIHtcbiAgICAvLyBDYWxsIFtoeF0gaW4gdGhlIHBhcmVudCBmaWJlclxuICAgIHJldHVybiBjYWxsKDIsIGUpO1xuICB9XG4gIHJldHVybiBbMCwgaHZhbCwgWzAsIGhleG4sIDBdLCBbMCwgaHYsIGh4LCBoZl0sIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX3N0YWNrXG4vL0lmOiAhZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFjayhodiwgaHgsIGhmKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGNcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KSB7XG4gIHZhciBzdGFjaz1jb250WzFdO1xuICBjb250WzFdPTA7XG4gIHJldHVybiBzdGFjaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Y1xuLy9SZXF1aXJlczogY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG5mdW5jdGlvbiBjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjKGNvbnQsIGh2YWwsIGhleG4sIGhlZmYpIHtcbiAgdmFyIHN0YWNrID0gY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjKGNvbnQpO1xuICBzdGFja1szXSA9IFswLCBodmFsLCBoZXhuLCBoZWZmXTtcbiAgcmV0dXJuIHN0YWNrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrXG5mdW5jdGlvbiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrICgpIHsgcmV0dXJuIFswXTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9uZXdcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX25ldyh1bml0KXtcbiAgICByZXR1cm4ge2NvbmRpdGlvbjoxfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fd2FpdFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fd2FpdCh0LG11dGV4dCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0KHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9zaWduYWxcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8hSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGpzb29fZWZmZWN0X25vdF9zdXBwb3J0ZWQoKXtcbiAgY2FtbF9mYWlsd2l0aChcIkVmZmVjdCBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZFwiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCAoKSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICYmIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MudmVyc2lvbnMgIT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb25zLm5vZGUgIT09ICd1bmRlZmluZWQnKVxufVxuLy9Qcm92aWRlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGZzX25vZGVfc3VwcG9ydGVkICgpIHtcbiAgcmV0dXJuIGZhbHNlXG59XG5cblxuLy9Qcm92aWRlczogTWxOb2RlRGV2aWNlXG4vL1JlcXVpcmVzOiBNbE5vZGVGZCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBNbE5vZGVEZXZpY2Uocm9vdCkge1xuICB0aGlzLmZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubm0gPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiAodGhpcy5yb290ICsgbmFtZSk7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuaXNGaWxlID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRmlsZSgpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm1rZGlyID0gZnVuY3Rpb24obmFtZSwgbW9kZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMubWtkaXJTeW5jKHRoaXMubm0obmFtZSkse21vZGU6bW9kZX0pO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucm1kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5ybWRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZWFkZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnJlYWRkaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmlzX2RpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0RpcmVjdG9yeSgpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgYiA9IHRoaXMuZnMuZXhpc3RzU3luYyh0aGlzLm5tKG5hbWUpKT8xOjA7XG4gICAgdGhpcy5mcy51bmxpbmtTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiBiO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmLCByYWlzZV91bml4KSB7XG4gIHZhciBjb25zdHMgPSByZXF1aXJlKCdjb25zdGFudHMnKTtcbiAgdmFyIHJlcyA9IDA7XG4gIGZvcih2YXIga2V5IGluIGYpe1xuICAgIHN3aXRjaChrZXkpe1xuICAgIGNhc2UgXCJyZG9ubHlcIiAgOiByZXMgfD0gY29uc3RzLk9fUkRPTkxZOyBicmVhaztcbiAgICBjYXNlIFwid3Jvbmx5XCIgIDogcmVzIHw9IGNvbnN0cy5PX1dST05MWTsgYnJlYWs7XG4gICAgY2FzZSBcImFwcGVuZFwiICA6XG4gICAgICByZXMgfD0gY29uc3RzLk9fV1JPTkxZIHwgY29uc3RzLk9fQVBQRU5EO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImNyZWF0ZVwiICAgOiByZXMgfD0gY29uc3RzLk9fQ1JFQVQ7ICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ0cnVuY2F0ZVwiIDogcmVzIHw9IGNvbnN0cy5PX1RSVU5DOyAgICBicmVhaztcbiAgICBjYXNlIFwiZXhjbFwiICAgICA6IHJlcyB8PSBjb25zdHMuT19FWENMOyAgICAgYnJlYWs7XG4gICAgY2FzZSBcImJpbmFyeVwiICAgOiByZXMgfD0gY29uc3RzLk9fQklOQVJZOyAgIGJyZWFrO1xuICAgIGNhc2UgXCJ0ZXh0XCIgICAgIDogcmVzIHw9IGNvbnN0cy5PX1RFWFQ7ICAgICBicmVhaztcbiAgICBjYXNlIFwibm9uYmxvY2tcIiA6IHJlcyB8PSBjb25zdHMuT19OT05CTE9DSzsgYnJlYWs7XG4gICAgfVxuICB9XG4gIHRyeSB7XG4gICAgdmFyIGZkID0gdGhpcy5mcy5vcGVuU3luYyh0aGlzLm5tKG5hbWUpLCByZXMpO1xuICAgIHZhciBpc0NoYXJhY3RlckRldmljZSA9IHRoaXMuZnMubHN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzQ2hhcmFjdGVyRGV2aWNlKCk7XG4gICAgZi5pc0NoYXJhY3RlckRldmljZSA9IGlzQ2hhcmFjdGVyRGV2aWNlO1xuICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQsIGYpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVuYW1lID0gZnVuY3Rpb24obywgbiwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMucmVuYW1lU3luYyh0aGlzLm5tKG8pLCB0aGlzLm5tKG4pKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zdGF0ID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHNfZnJvbV9qcyhqc19zdGF0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubHN0YXQgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5sc3RhdFN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHNfZnJvbV9qcyhqc19zdGF0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3ltbGluayA9IGZ1bmN0aW9uKHRvX2RpciwgdGFyZ2V0LCBwYXRoLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5zeW1saW5rU3luYyh0aGlzLm5tKHRhcmdldCksIHRoaXMubm0ocGF0aCksIHRvX2RpciA/ICdkaXInIDogJ2ZpbGUnKTtcbiAgICByZXR1cm4gMDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZWFkbGluayA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgbGluayA9IHRoaXMuZnMucmVhZGxpbmtTeW5jKHRoaXMubm0obmFtZSksICd1dGY4Jyk7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGxpbmspO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm9wZW5kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMub3BlbmRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmFpc2Vfbm9kZWpzX2Vycm9yID0gZnVuY3Rpb24oZXJyLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZShcIlVuaXguVW5peF9lcnJvclwiKTtcbiAgaWYgKHJhaXNlX3VuaXggJiYgdW5peF9lcnJvcikge1xuICAgIHZhciBhcmdzID0gbWFrZV91bml4X2Vycl9hcmdzKGVyci5jb2RlLCBlcnIuc3lzY2FsbCwgZXJyLnBhdGgsIGVyci5lcnJubyk7XG4gICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN0YXRzX2Zyb21fanMgPSBmdW5jdGlvbihqc19zdGF0cykge1xuICAvKiA9PT1Vbml4LmZpbGVfa2luZD09PVxuICAgKiB0eXBlIGZpbGVfa2luZCA9XG4gICAqICAgICBTX1JFRyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFJlZ3VsYXIgZmlsZSAqKVxuICAgKiAgIHwgU19ESVIgICAgICAgICAgICAgICAgICAgICAgICgqKiBEaXJlY3RvcnkgKilcbiAgICogICB8IFNfQ0hSICAgICAgICAgICAgICAgICAgICAgICAoKiogQ2hhcmFjdGVyIGRldmljZSAqKVxuICAgKiAgIHwgU19CTEsgICAgICAgICAgICAgICAgICAgICAgICgqKiBCbG9jayBkZXZpY2UgKilcbiAgICogICB8IFNfTE5LICAgICAgICAgICAgICAgICAgICAgICAoKiogU3ltYm9saWMgbGluayAqKVxuICAgKiAgIHwgU19GSUZPICAgICAgICAgICAgICAgICAgICAgICgqKiBOYW1lZCBwaXBlICopXG4gICAqICAgfCBTX1NPQ0sgICAgICAgICAgICAgICAgICAgICAgKCoqIFNvY2tldCAqKVxuICAgKi9cbiAgdmFyIGZpbGVfa2luZDtcbiAgaWYgKGpzX3N0YXRzLmlzRmlsZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgZmlsZV9raW5kID0gMTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0NoYXJhY3RlckRldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMjtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0Jsb2NrRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAzO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU3ltYm9saWNMaW5rKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA0O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRklGTygpKSB7XG4gICAgZmlsZV9raW5kID0gNTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1NvY2tldCgpKSB7XG4gICAgZmlsZV9raW5kID0gNjtcbiAgfVxuICAvKiA9PT1Vbml4LnN0YXRzPT09XG4gICAqIHR5cGUgc3RhdHMgPVxuICAgKiAgeyBzdF9kZXYgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIERldmljZSBudW1iZXIgKilcbiAgICogICAgc3RfaW5vIDogaW50OyAgICAgICAgICAgICAgICgqKiBJbm9kZSBudW1iZXIgKilcbiAgICogICAgc3Rfa2luZCA6IGZpbGVfa2luZDsgICAgICAgICgqKiBLaW5kIG9mIHRoZSBmaWxlICopXG4gICAqICAgIHN0X3Blcm0gOiBmaWxlX3Blcm07ICAgICAgICAoKiogQWNjZXNzIHJpZ2h0cyAqKVxuICAgKiAgICBzdF9ubGluayA6IGludDsgICAgICAgICAgICAgKCoqIE51bWJlciBvZiBsaW5rcyAqKVxuICAgKiAgICBzdF91aWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIFVzZXIgaWQgb2YgdGhlIG93bmVyICopXG4gICAqICAgIHN0X2dpZCA6IGludDsgICAgICAgICAgICAgICAoKiogR3JvdXAgSUQgb2YgdGhlIGZpbGUncyBncm91cCAqKVxuICAgKiAgICBzdF9yZGV2IDogaW50OyAgICAgICAgICAgICAgKCoqIERldmljZSBJRCAoaWYgc3BlY2lhbCBmaWxlKSAqKVxuICAgKiAgICBzdF9zaXplIDogaW50OyAgICAgICAgICAgICAgKCoqIFNpemUgaW4gYnl0ZXMgKilcbiAgICogICAgc3RfYXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IGFjY2VzcyB0aW1lICopXG4gICAqICAgIHN0X210aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBtb2RpZmljYXRpb24gdGltZSAqKVxuICAgKiAgICBzdF9jdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3Qgc3RhdHVzIGNoYW5nZSB0aW1lICopXG4gICAqICB9XG4gICAqL1xuICByZXR1cm4gQkxPQ0soXG4gICAgMCxcbiAgICBqc19zdGF0cy5kZXYsXG4gICAganNfc3RhdHMuaW5vLFxuICAgIGZpbGVfa2luZCxcbiAgICBqc19zdGF0cy5tb2RlLFxuICAgIGpzX3N0YXRzLm5saW5rLFxuICAgIGpzX3N0YXRzLnVpZCxcbiAgICBqc19zdGF0cy5naWQsXG4gICAganNfc3RhdHMucmRldixcbiAgICBqc19zdGF0cy5zaXplLFxuICAgIGpzX3N0YXRzLmF0aW1lTXMsXG4gICAganNfc3RhdHMubXRpbWVNcyxcbiAgICBqc19zdGF0cy5jdGltZU1zXG4gICk7XG59XG5cbk1sTm9kZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbE5vZGVEZXZpY2VcblxuLy9Qcm92aWRlczogTWxOb2RlRGV2aWNlXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBNbE5vZGVEZXZpY2UoKSB7XG59XG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZkXG4vL1JlcXVpcmVzOiBNbEZpbGUsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX2J5dGVzX3NldCwgY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sTm9kZUZkKGZkLCBmbGFncyl7XG4gIHRoaXMuZnMgPSByZXF1aXJlKCdmcycpO1xuICB0aGlzLmZkID0gZmQ7XG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cbk1sTm9kZUZkLnByb3RvdHlwZSA9IG5ldyBNbEZpbGUgKCk7XG5NbE5vZGVGZC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbE5vZGVGZDtcblxuTWxOb2RlRmQucHJvdG90eXBlLnRydW5jYXRlID0gZnVuY3Rpb24obGVuKXtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLmZ0cnVuY2F0ZVN5bmModGhpcy5mZCxsZW58MCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5mc3RhdFN5bmModGhpcy5mZCkuc2l6ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGZC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihvZmZzZXQsYnVmLGJ1Zl9vZmZzZXQsbGVuKXtcbiAgdHJ5IHtcbiAgICBpZih0aGlzLmZsYWdzLmlzQ2hhcmFjdGVyRGV2aWNlKVxuICAgICAgdGhpcy5mcy53cml0ZVN5bmModGhpcy5mZCwgYnVmLCBidWZfb2Zmc2V0LCBsZW4pO1xuICAgIGVsc2VcbiAgICAgIHRoaXMuZnMud3JpdGVTeW5jKHRoaXMuZmQsIGJ1ZiwgYnVmX29mZnNldCwgbGVuLCBvZmZzZXQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5NbE5vZGVGZC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKG9mZnNldCxhLGJ1Zl9vZmZzZXQsbGVuKXtcbiAgdHJ5IHtcbiAgICBpZih0aGlzLmZsYWdzLmlzQ2hhcmFjdGVyRGV2aWNlKVxuICAgICAgdmFyIHJlYWQgPSB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGEsIGJ1Zl9vZmZzZXQsIGxlbik7XG4gICAgZWxzZVxuICAgICAgdmFyIHJlYWQgPSB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGEsIGJ1Zl9vZmZzZXQsIGxlbiwgb2Zmc2V0KTtcbiAgICByZXR1cm4gcmVhZDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGZC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpe1xuICB0cnkge1xuICAgIHRoaXMuZnMuY2xvc2VTeW5jKHRoaXMuZmQpO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBNbE5vZGVGZCgpe1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbi8vUmVxdWlyZXM6IE1sTm9kZUZkXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyl7XG4gIGlmKGZsYWdzLm5hbWUpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xuICAgICAgdmFyIGZkMiA9IGZzLm9wZW5TeW5jKGZsYWdzLm5hbWUsIFwicnNcIik7XG4gICAgICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkMiwgZmxhZ3MpO1xuICAgIH0gY2F0Y2goZSkgeyAgfVxuICB9XG4gIHJldHVybiBuZXcgTWxOb2RlRmQoZmQsIGZsYWdzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3Mpe1xuICByZXR1cm4gbnVsbDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRHVtbXkgZmlsZXN5c3RlbVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpe1xuICByZXR1cm4gKG5hbWUuc2xpY2UoLTEpICE9PSBcIi9cIikgPyAobmFtZSArIFwiL1wiKSA6IG5hbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5pZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZClcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKCkucmVwbGFjZSgvXFxcXC9nLCcvJyk7XG5lbHNlXG4gIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gIFwiL3N0YXRpY1wiO1xuY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2goY2FtbF9jdXJyZW50X2Rpcik7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3Jvb3Rcbi8vUmVxdWlyZXM6IHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfZ2V0X3Jvb3QocGF0aCl7XG4gIHZhciB4ID0gcGF0aF9pc19hYnNvbHV0ZShwYXRoKTtcbiAgaWYgKCF4KSByZXR1cm47XG4gIHJldHVybiB4WzBdICsgXCIvXCJ9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcm9vdFxuLy9SZXF1aXJlczogY2FtbF9nZXRfcm9vdCwgY2FtbF9jdXJyZW50X2RpciwgY2FtbF9mYWlsd2l0aFxudmFyIGNhbWxfcm9vdCA9IGNhbWxfZ2V0X3Jvb3QoY2FtbF9jdXJyZW50X2RpcikgfHwgY2FtbF9mYWlsd2l0aChcInVuYWJsZSB0byBjb21wdXRlIGNhbWxfcm9vdFwiKTtcblxuXG4vL1Byb3ZpZGVzOiBNbEZpbGVcbmZ1bmN0aW9uIE1sRmlsZSgpeyAgfVxuXG4vL1Byb3ZpZGVzOiBwYXRoX2lzX2Fic29sdXRlXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCkge1xuICBmdW5jdGlvbiBwb3NpeChwYXRoKSB7XG4gICAgaWYgKHBhdGguY2hhckF0KDApID09PSAnLycpIHJldHVybiBbXCJcIiwgcGF0aC5zdWJzdHJpbmcoMSldO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdpbjMyKHBhdGgpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9iM2ZjYzI0NWZiMjU1Mzk5MDllZjFkNWVhYTAxZGJmOTJlMTY4NjMzL2xpYi9wYXRoLmpzI0w1NlxuICAgIHZhciBzcGxpdERldmljZVJlID0gL14oW2EtekEtWl06fFtcXFxcL117Mn1bXlxcXFwvXStbXFxcXC9dK1teXFxcXC9dKyk/KFtcXFxcL10pPyhbXFxzXFxTXSo/KSQvO1xuICAgIHZhciByZXN1bHQgPSBzcGxpdERldmljZVJlLmV4ZWMocGF0aCk7XG4gICAgdmFyIGRldmljZSA9IHJlc3VsdFsxXSB8fCAnJztcbiAgICB2YXIgaXNVbmMgPSBCb29sZWFuKGRldmljZSAmJiBkZXZpY2UuY2hhckF0KDEpICE9PSAnOicpO1xuXG4gICAgLy8gVU5DIHBhdGhzIGFyZSBhbHdheXMgYWJzb2x1dGVcbiAgICBpZiAoQm9vbGVhbihyZXN1bHRbMl0gfHwgaXNVbmMpKSB7XG4gICAgICB2YXIgcm9vdCA9IChyZXN1bHRbMV0gfHwgJycpO1xuICAgICAgdmFyIHNlcCA9IChyZXN1bHRbMl0gfHwgJycpO1xuICAgICAgcmV0dXJuIFtyb290LCBwYXRoLnN1YnN0cmluZyhyb290Lmxlbmd0aCArIHNlcC5sZW5ndGgpXVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQgKCkgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSkge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyB3aW4zMiA6IHBvc2l4O1xuICB9XG4gIGVsc2UgcmV0dXJuIHBvc2l4XG59XG52YXIgcGF0aF9pc19hYnNvbHV0ZSA9IG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfcGF0aFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfbWFrZV9wYXRoIChuYW1lKSB7XG4gIG5hbWU9Y2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmKCAhcGF0aF9pc19hYnNvbHV0ZShuYW1lKSApXG4gICAgbmFtZSA9IGNhbWxfY3VycmVudF9kaXIgKyBuYW1lO1xuICB2YXIgY29tcDAgPSBwYXRoX2lzX2Fic29sdXRlKG5hbWUpO1xuICB2YXIgY29tcCA9IGNvbXAwWzFdLnNwbGl0KFwiL1wiKTtcbiAgdmFyIG5jb21wID0gW11cbiAgZm9yKHZhciBpID0gMDsgaTxjb21wLmxlbmd0aDsgaSsrKXtcbiAgICBzd2l0Y2goY29tcFtpXSl7XG4gICAgY2FzZSBcIi4uXCI6IGlmKG5jb21wLmxlbmd0aD4xKSBuY29tcC5wb3AoKTsgYnJlYWs7XG4gICAgY2FzZSBcIi5cIjogYnJlYWs7XG4gICAgY2FzZSBcIlwiOiBicmVhaztcbiAgICBkZWZhdWx0OiBuY29tcC5wdXNoKGNvbXBbaV0pO2JyZWFrXG4gICAgfVxuICB9XG4gIG5jb21wLnVuc2hpZnQoY29tcDBbMF0pO1xuICBuY29tcC5vcmlnID0gbmFtZTtcbiAgcmV0dXJuIG5jb21wO1xufVxuXG4vL1Byb3ZpZGVzOmpzb29fbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgTWxOb2RlRGV2aWNlLCBjYW1sX3Jvb3QsIGZzX25vZGVfc3VwcG9ydGVkXG52YXIganNvb19tb3VudF9wb2ludCA9IFtdXG5pZiAoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6Y2FtbF9yb290LGRldmljZTpuZXcgTWxOb2RlRGV2aWNlKGNhbWxfcm9vdCl9KTtcbn0gZWxzZSB7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpjYW1sX3Jvb3QsZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UoY2FtbF9yb290KX0pO1xufVxuanNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOlwiL3N0YXRpYy9cIiwgZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UoXCIvc3RhdGljL1wiKX0pO1xuXG4vL1Byb3ZpZGVzOmNhbWxfbGlzdF9tb3VudF9wb2ludFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9saXN0X21vdW50X3BvaW50KCl7XG4gIHZhciBwcmV2ID0gMFxuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKyl7XG4gICAgdmFyIG9sZCA9IHByZXY7XG4gICAgcHJldiA9IFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCksIG9sZF1cbiAgfVxuICByZXR1cm4gcHJldjtcbn1cblxuLy9Qcm92aWRlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9nZXRfcm9vdCwgTWxOb2RlRGV2aWNlLCBjYW1sX3RyYWlsaW5nX3NsYXNoLCBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSl7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gcGF0aC5qb2luKFwiL1wiKTtcbiAgdmFyIG5hbWVfc2xhc2ggPSBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpO1xuICB2YXIgcmVzO1xuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtID0ganNvb19tb3VudF9wb2ludFtpXTtcbiAgICBpZihuYW1lX3NsYXNoLnNlYXJjaChtLnBhdGgpID09IDBcbiAgICAgICAmJiAoIXJlcyB8fCByZXMucGF0aC5sZW5ndGggPCBtLnBhdGgubGVuZ3RoKSlcbiAgICAgIHJlcyA9IHtwYXRoOm0ucGF0aCxkZXZpY2U6bS5kZXZpY2UscmVzdDpuYW1lLnN1YnN0cmluZyhtLnBhdGgubGVuZ3RoLG5hbWUubGVuZ3RoKX07XG4gIH1cbiAgaWYoICFyZXMgJiYgZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciByb290ID0gY2FtbF9nZXRfcm9vdChuYW1lKTtcbiAgICBpZiAocm9vdCAmJiByb290Lm1hdGNoKC9eW2EtekEtWl06XFwvJC8pKXtcbiAgICAgIHZhciBtID0ge3BhdGg6cm9vdCxkZXZpY2U6bmV3IE1sTm9kZURldmljZShyb290KX07XG4gICAgICBqc29vX21vdW50X3BvaW50LnB1c2gobSk7XG4gICAgICByZXMgPSB7cGF0aDptLnBhdGgsZGV2aWNlOm0uZGV2aWNlLHJlc3Q6bmFtZS5zdWJzdHJpbmcobS5wYXRoLmxlbmd0aCxuYW1lLmxlbmd0aCl9O1xuICAgIH1cbiAgfVxuICBpZiggcmVzICkgcmV0dXJuIHJlcztcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJubyBkZXZpY2UgZm91bmQgZm9yIFwiICsgbmFtZV9zbGFzaCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW91bnRfYXV0b2xvYWRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgY2FtbF9tYWtlX3BhdGgsIGpzb29fbW91bnRfcG9pbnQsIGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfbW91bnRfYXV0b2xvYWQobmFtZSxmKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6bmFtZSxkZXZpY2U6bmV3IE1sRmFrZURldmljZShuYW1lLGYpfSlcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5tb3VudFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9tYWtlX3BhdGgsIGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfdW5tb3VudChuYW1lKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICB2YXIgaWR4ID0gLTE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKVxuICAgIGlmKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCA9PSBuYW1lKSBpZHggPSBpO1xuICBpZihpZHggPiAtMSkganNvb19tb3VudF9wb2ludC5zcGxpY2UoaWR4LDEpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRjd2Rcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGN3ZCgpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF9jdXJyZW50X2Rpcik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NoZGlyXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfdHJhaWxpbmdfc2xhc2gsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX2NoZGlyKGRpcikge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRpcik7XG4gIGlmKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgaWYocm9vdC5yZXN0KSBjYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChyb290LnBhdGggKyByb290LnJlc3QpO1xuICAgIGVsc2UgY2FtbF9jdXJyZW50X2RpciA9IHJvb3QucGF0aDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGRpcikpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUobmFtZSl7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2FfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub3RfYV9kaXIobmFtZSl7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZmlsZV9leGlzdHNcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19maWxlX2V4aXN0cyAobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9hX2RpciwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5KG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLnJlYWRkaXIocm9vdC5yZXN0KTtcbiAgdmFyIGwgPSBuZXcgQXJyYXkoYS5sZW5ndGggKyAxKTtcbiAgbFswXSA9IDA7XG4gIGZvcih2YXIgaT0wO2k8YS5sZW5ndGg7aSsrKVxuICAgIGxbaSsxXSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYVtpXSk7XG4gIHJldHVybiBsO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW1vdmVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfcmVtb3ZlKG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgb2sgPSByb290LmRldmljZS51bmxpbmsocm9vdC5yZXN0KTtcbiAgaWYob2sgPT0gMCkgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19kaXJlY3RvcnkobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UuaXNfZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiBhPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVuYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVuYW1lKG8sbil7XG4gIHZhciBvX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShvKTtcbiAgdmFyIG5fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG4pO1xuICBpZihvX3Jvb3QuZGV2aWNlICE9IG5fcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogY2Fubm90IG1vdmUgZmlsZSBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtXCIpO1xuICBpZighb19yb290LmRldmljZS5yZW5hbWUpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogbm8gaW1wbGVtZW50ZWRcIik7XG4gIG9fcm9vdC5kZXZpY2UucmVuYW1lKG9fcm9vdC5yZXN0LCBuX3Jvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfc3lzX21rZGlyKG5hbWUsIHBlcm0pe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QscGVybSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19ybWRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vdF9hX2RpclxuZnVuY3Rpb24gY2FtbF9zeXNfcm1kaXIobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlKHZmZCwga2luZCwgbGF5b3V0LCBzaGFyZWQsIGRpbXMsIHBvcykge1xuICAvLyB2YXIgZGF0YSA9IGNhbWxfc3lzX2Zkc1t2ZmRdO1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9iYV9tYXBfZmlsZSBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUoYXJndixhcmduKXtcbiAgcmV0dXJuIGNhbWxfYmFfbWFwX2ZpbGUoYXJndlswXSxhcmd2WzFdLGFyZ3ZbMl0sYXJndlszXSxhcmd2WzRdLGFyZ3ZbNV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlX2V4dGVyblxuZnVuY3Rpb24ganNvb19jcmVhdGVfZmlsZV9leHRlcm4obmFtZSxjb250ZW50KXtcbiAgaWYoZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKVxuICAgIGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpO1xuICBlbHNlIHtcbiAgICBpZighZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCkgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICAgIGdsb2JhbFRoaXMuY2FtbF9mc190bXAucHVzaCh7bmFtZTpuYW1lLGNvbnRlbnQ6Y29udGVudH0pO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZzX2luaXRcbi8vUmVxdWlyZXM6IGpzb29fY3JlYXRlX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfZnNfaW5pdCAoKXtcbiAgdmFyIHRtcD1nbG9iYWxUaGlzLmNhbWxfZnNfdG1wXG4gIGlmKHRtcCl7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHRtcC5sZW5ndGg7IGkrKyl7XG4gICAgICBqc29vX2NyZWF0ZV9maWxlKHRtcFtpXS5uYW1lLHRtcFtpXS5jb250ZW50KTtcbiAgICB9XG4gIH1cbiAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlID0ganNvb19jcmVhdGVfZmlsZTtcbiAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKCEgcm9vdC5kZXZpY2UucmVnaXN0ZXIpIGNhbWxfZmFpbHdpdGgoXCJjYW5ub3QgcmVnaXN0ZXIgZmlsZVwiKTtcbiAgcm9vdC5kZXZpY2UucmVnaXN0ZXIocm9vdC5yZXN0LGNvbnRlbnQpO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9maWxlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCkge1xuICB2YXIgbmFtZSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk7XG4gIHZhciBjb250ZW50ID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjb250ZW50KTtcbiAgcmV0dXJuIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSwgY29udGVudCk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWFkX2ZpbGVfY29udGVudFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWFkX2ZpbGVfY29udGVudCAobmFtZSkge1xuICB2YXIgbmFtZSA9ICh0eXBlb2YgbmFtZSA9PSBcInN0cmluZ1wiKT9jYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpOm5hbWU7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCx7cmRvbmx5OjF9KTtcbiAgICB2YXIgbGVuICA9IGZpbGUubGVuZ3RoKCk7XG4gICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgZmlsZS5yZWFkKDAsYnVmLDAsbGVuKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYnVmKVxuICB9XG4gIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xufVxuIiwiLy9Qcm92aWRlczogY2FtbF91bml4X2dldHRpbWVvZmRheVxuLy9BbGlhczogdW5peF9nZXR0aW1lb2ZkYXlcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXR0aW1lb2ZkYXkgKCkge1xuICByZXR1cm4gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAvIDEwMDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF90aW1lXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5XG4vL0FsaWFzOiB1bml4X3RpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF90aW1lICgpIHtcbiAgcmV0dXJuIE1hdGguZmxvb3IoY2FtbF91bml4X2dldHRpbWVvZmRheSAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nbXRpbWVcbi8vQWxpYXM6IHVuaXhfZ210aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ210aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoRGF0ZS5VVEMoZC5nZXRVVENGdWxsWWVhcigpLCAwLCAxKSkpLmdldFRpbWUoKTtcbiAgdmFyIGRveSA9IE1hdGguZmxvb3IoKGRfbnVtIC0gamFudWFyeWZpcnN0KSAvIDg2NDAwMDAwKTtcbiAgcmV0dXJuIEJMT0NLKDAsIGQuZ2V0VVRDU2Vjb25kcygpLCBkLmdldFVUQ01pbnV0ZXMoKSwgZC5nZXRVVENIb3VycygpLFxuICAgICAgICAgICAgICAgZC5nZXRVVENEYXRlKCksIGQuZ2V0VVRDTW9udGgoKSwgZC5nZXRVVENGdWxsWWVhcigpIC0gMTkwMCxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF5KCksIGRveSxcbiAgICAgICAgICAgICAgIGZhbHNlIHwgMCAvKiBmb3IgVVRDIGRheWxpZ2h0IHNhdmluZ3MgdGltZSBpcyBmYWxzZSAqLylcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xvY2FsdGltZVxuLy9BbGlhczogdW5peF9sb2NhbHRpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9sb2NhbHRpbWUgKHQpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSAodCAqIDEwMDApO1xuICB2YXIgZF9udW0gPSBkLmdldFRpbWUoKTtcbiAgdmFyIGphbnVhcnlmaXJzdCA9IChuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDAsIDEpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHZhciBqYW4gPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xuICB2YXIganVsID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCA2LCAxKTtcbiAgdmFyIHN0ZFRpbWV6b25lT2Zmc2V0ID0gTWF0aC5tYXgoamFuLmdldFRpbWV6b25lT2Zmc2V0KCksIGp1bC5nZXRUaW1lem9uZU9mZnNldCgpKTtcbiAgcmV0dXJuIEJMT0NLKDAsIGQuZ2V0U2Vjb25kcygpLCBkLmdldE1pbnV0ZXMoKSwgZC5nZXRIb3VycygpLFxuICAgICAgICAgICAgICAgZC5nZXREYXRlKCksIGQuZ2V0TW9udGgoKSwgZC5nZXRGdWxsWWVhcigpIC0gMTkwMCxcbiAgICAgICAgICAgICAgIGQuZ2V0RGF5KCksIGRveSxcbiAgICAgICAgICAgICAgIChkLmdldFRpbWV6b25lT2Zmc2V0KCkgPCBzdGRUaW1lem9uZU9mZnNldCkgfCAwIC8qIGRheWxpZ2h0IHNhdmluZ3MgdGltZSAgZmllbGQuICovKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbWt0aW1lXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9jYWx0aW1lXG4vL0FsaWFzOiB1bml4X21rdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X21rdGltZSh0bSl7XG4gIHZhciBkID0gKG5ldyBEYXRlKHRtWzZdKzE5MDAsdG1bNV0sdG1bNF0sdG1bM10sdG1bMl0sdG1bMV0pKS5nZXRUaW1lKCk7XG4gIHZhciB0ID0gTWF0aC5mbG9vcihkIC8gMTAwMCk7XG4gIHZhciB0bTIgPSBjYW1sX3VuaXhfbG9jYWx0aW1lKHQpO1xuICByZXR1cm4gQkxPQ0soMCx0LHRtMik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhcnR1cCBjb25zdFxuLy9BbGlhczogd2luX3N0YXJ0dXBcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGFydHVwKCkge31cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2NsZWFudXAgY29uc3Rcbi8vQWxpYXM6IHdpbl9jbGVhbnVwXG5mdW5jdGlvbiBjYW1sX3VuaXhfY2xlYW51cCgpIHt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maWxlZGVzY3Jfb2ZfZmQgY29uc3Rcbi8vQWxpYXM6IHdpbl9oYW5kbGVfZmRcbmZ1bmN0aW9uIGNhbWxfdW5peF9maWxlZGVzY3Jfb2ZfZmQoeCkge3JldHVybiB4O31cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2lzYXR0eVxuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vQWxpYXM6IHVuaXhfaXNhdHR5XG5mdW5jdGlvbiBjYW1sX3VuaXhfaXNhdHR5KGZpbGVEZXNjcmlwdG9yKSB7XG4gIGlmKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICB2YXIgdHR5ID0gcmVxdWlyZSgndHR5Jyk7XG4gICAgcmV0dXJuIHR0eS5pc2F0dHkoZmlsZURlc2NyaXB0b3IpPzE6MDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vQWxpYXM6IHVuaXhfaXNhdHR5XG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3VuaXhfaXNhdHR5KGZpbGVEZXNjcmlwdG9yKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBtYWtlX3VuaXhfZXJyX2FyZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgdW5peF9lcnJvciA9IFtcbiAgLyogPT09VW5peC5lcnJvcj09PVxuICAgKlxuICAgKiBUaGlzIGFycmF5IGlzIGluIG9yZGVyIG9mIHRoZSB2YXJpYW50IGluIE9DYW1sXG4gICAqL1xuICBcIkUyQklHXCIsIFwiRUFDQ0VTXCIsIFwiRUFHQUlOXCIsIFwiRUJBREZcIiwgXCJFQlVTWVwiLCBcIkVDSElMRFwiLCBcIkVERUFETEtcIiwgXCJFRE9NXCIsXG4gIFwiRUVYSVNUXCIsIFwiRUZBVUxUXCIsIFwiRUZCSUdcIiwgXCJFSU5UUlwiLCBcIkVJTlZBTFwiLCBcIkVJT1wiLCBcIkVJU0RJUlwiLCBcIkVNRklMRVwiLFxuICBcIkVNTElOS1wiLCBcIkVOQU1FVE9PTE9OR1wiLCBcIkVORklMRVwiLCBcIkVOT0RFVlwiLCBcIkVOT0VOVFwiLCBcIkVOT0VYRUNcIiwgXCJFTk9MQ0tcIixcbiAgXCJFTk9NRU1cIiwgXCJFTk9TUENcIiwgXCJFTk9TWVNcIiwgXCJFTk9URElSXCIsIFwiRU5PVEVNUFRZXCIsIFwiRU5PVFRZXCIsIFwiRU5YSU9cIixcbiAgXCJFUEVSTVwiLCBcIkVQSVBFXCIsIFwiRVJBTkdFXCIsIFwiRVJPRlNcIiwgXCJFU1BJUEVcIiwgXCJFU1JDSFwiLCBcIkVYREVWXCIsIFwiRVdPVUxEQkxPQ0tcIixcbiAgXCJFSU5QUk9HUkVTU1wiLCBcIkVBTFJFQURZXCIsIFwiRU5PVFNPQ0tcIiwgXCJFREVTVEFERFJSRVFcIiwgXCJFTVNHU0laRVwiLFxuICBcIkVQUk9UT1RZUEVcIiwgXCJFTk9QUk9UT09QVFwiLCBcIkVQUk9UT05PU1VQUE9SVFwiLCBcIkVTT0NLVE5PU1VQUE9SVFwiLFxuICBcIkVPUE5PVFNVUFBcIiwgXCJFUEZOT1NVUFBPUlRcIiwgXCJFQUZOT1NVUFBPUlRcIiwgXCJFQUREUklOVVNFXCIsIFwiRUFERFJOT1RBVkFJTFwiLFxuICBcIkVORVRET1dOXCIsIFwiRU5FVFVOUkVBQ0hcIiwgXCJFTkVUUkVTRVRcIiwgXCJFQ09OTkFCT1JURURcIiwgXCJFQ09OTlJFU0VUXCIsIFwiRU5PQlVGU1wiLFxuICBcIkVJU0NPTk5cIiwgXCJFTk9UQ09OTlwiLCBcIkVTSFVURE9XTlwiLCBcIkVUT09NQU5ZUkVGU1wiLCBcIkVUSU1FRE9VVFwiLCBcIkVDT05OUkVGVVNFRFwiLFxuICBcIkVIT1NURE9XTlwiLCBcIkVIT1NUVU5SRUFDSFwiLCBcIkVMT09QXCIsIFwiRU9WRVJGTE9XXCJcbl07XG5mdW5jdGlvbiBtYWtlX3VuaXhfZXJyX2FyZ3MoY29kZSwgc3lzY2FsbCwgcGF0aCwgZXJybm8pIHtcbiAgdmFyIHZhcmlhbnQgPSB1bml4X2Vycm9yLmluZGV4T2YoY29kZSk7XG4gIGlmICh2YXJpYW50IDwgMCkge1xuICAgIC8vIERlZmF1bHQgaWYgdW5kZWZpbmVkXG4gICAgaWYgKGVycm5vID09IG51bGwpIHtcbiAgICAgIGVycm5vID0gLTk5OTlcbiAgICB9XG4gICAgLy8gSWYgbm9uZSBvZiB0aGUgYWJvdmUgdmFyaWFudHMsIGZhbGxiYWNrIHRvIEVVTktOT1dORVJSKGludClcbiAgICB2YXJpYW50ID0gQkxPQ0soMCwgZXJybm8pO1xuICB9XG4gIHZhciBhcmdzID0gW1xuICAgIHZhcmlhbnQsXG4gICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoc3lzY2FsbCB8fCBcIlwiKSxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhwYXRoIHx8IFwiXCIpXG4gIF07XG4gIHJldHVybiBhcmdzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3RhdFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uuc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGF0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfc3RhdCwgY2FtbF9pbnQ2NF9vZl9pbnQzMlxuLy9BbGlhczogdW5peF9zdGF0XzY0XG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhdF82NChuYW1lKSB7XG4gIHZhciByID0gY2FtbF91bml4X3N0YXQobmFtZSk7XG4gIHJbOV0gPSBjYW1sX2ludDY0X29mX2ludDMyKHJbOV0pO1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xzdGF0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9sc3RhdFxuZnVuY3Rpb24gY2FtbF91bml4X2xzdGF0KG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5sc3RhdCkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfbHN0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UubHN0YXQocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbHN0YXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sc3RhdCwgY2FtbF9pbnQ2NF9vZl9pbnQzMlxuLy9BbGlhczogdW5peF9sc3RhdF82NFxuZnVuY3Rpb24gY2FtbF91bml4X2xzdGF0XzY0KG5hbWUpIHtcbiAgdmFyIHIgPSBjYW1sX3VuaXhfbHN0YXQobmFtZSk7XG4gIHJbOV0gPSBjYW1sX2ludDY0X29mX2ludDMyKHJbOV0pO1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9ta2RpclxuZnVuY3Rpb24gY2FtbF91bml4X21rZGlyKG5hbWUsIHBlcm0pIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ta2Rpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfbWtkaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LCBwZXJtLCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3JtZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcm1kaXIobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJtZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9ybWRpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5ybWRpcihyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zeW1saW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3ltbGluayh0b19kaXIsIHNyYywgZHN0KSB7XG4gIHZhciBzcmNfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKHNyYyk7XG4gIHZhciBkc3Rfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRzdCk7XG4gIGlmKHNyY19yb290LmRldmljZSAhPSBkc3Rfcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zeW1saW5rOiBjYW5ub3Qgc3ltbGluayBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtc1wiKTtcbiAgaWYgKCFzcmNfcm9vdC5kZXZpY2Uuc3ltbGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3ltbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiBzcmNfcm9vdC5kZXZpY2Uuc3ltbGluayh0b19kaXIsIHNyY19yb290LnJlc3QsIGRzdF9yb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZWFkbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfcmVhZGxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkbGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UucmVhZGxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3JlYWRsaW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJlYWRsaW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3VubGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfdW5saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfdW5saW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS51bmxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3VubGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS51bmxpbmsocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0dWlkXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9BbGlhczogdW5peF9nZXR1aWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXR1aWQodW5pdCkge1xuICBpZihnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmdldHVpZCl7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQoKTtcbiAgfVxuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0cHd1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL0FsaWFzOiB1bml4X2dldHB3dWlkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0cHd1aWQodW5pdCkge1xuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaGFzX3N5bWxpbmtcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0FsaWFzOiB1bml4X2hhc19zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfaGFzX3N5bWxpbmsodW5pdCkge1xuICByZXR1cm4gZnNfbm9kZV9zdXBwb3J0ZWQoKT8xOjBcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X29wZW5kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X29wZW5kaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShwYXRoKTtcbiAgaWYgKCFyb290LmRldmljZS5vcGVuZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9vcGVuZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgdmFyIGRpcl9oYW5kbGUgPSByb290LmRldmljZS5vcGVuZGlyKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbiAgcmV0dXJuIHsgcG9pbnRlciA6IGRpcl9oYW5kbGUsIHBhdGg6IHBhdGggfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVcbi8vQWxpYXM6IHVuaXhfcmVhZGRpclxuZnVuY3Rpb24gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSkge1xuICB2YXIgZW50cnk7XG4gIHRyeSB7XG4gICAgICBlbnRyeSA9IGRpcl9oYW5kbGUucG9pbnRlci5yZWFkU3luYygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJyZWFkZGlyXCIsIGRpcl9oYW5kbGUucGF0aCkpO1xuICB9XG4gIGlmIChlbnRyeSA9PT0gbnVsbCkge1xuICAgICAgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGVudHJ5Lm5hbWUpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9jbG9zZWRpclxuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZVxuLy9BbGlhczogdW5peF9jbG9zZWRpclxuZnVuY3Rpb24gY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpIHtcbiAgdHJ5IHtcbiAgICAgIGRpcl9oYW5kbGUucG9pbnRlci5jbG9zZVN5bmMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgZGlyX2hhbmRsZS5wYXRoKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3Jld2luZGRpclxuLy9SZXF1aXJlczogY2FtbF91bml4X2Nsb3NlZGlyLCBjYW1sX3VuaXhfb3BlbmRpclxuLy9BbGlhczogdW5peF9yZXdpbmRkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZXdpbmRkaXIoZGlyX2hhbmRsZSkge1xuICBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSk7XG4gIHZhciBuZXdfZGlyX2hhbmRsZSA9IGNhbWxfdW5peF9vcGVuZGlyKGRpcl9oYW5kbGUucGF0aCk7XG4gIGRpcl9oYW5kbGUucG9pbnRlciA9IG5ld19kaXJfaGFuZGxlLnBvaW50ZXI7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZGZpcnN0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9vcGVuZGlyLCBjYW1sX3VuaXhfcmVhZGRpclxuLy9BbGlhczogd2luX2ZpbmRmaXJzdFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRmaXJzdChwYXRoKSB7XG4gIC8vIFRoZSBXaW5kb3dzIGNvZGUgYWRkcyB0aGlzIGdsb2IgdG8gdGhlIHBhdGgsIHNvIHdlIG5lZWQgdG8gcmVtb3ZlIGl0XG4gIHZhciBwYXRoX2pzID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocGF0aCk7XG4gIHBhdGhfanMgPSBwYXRoX2pzLnJlcGxhY2UoLyhefFtcXFxcXFwvXSlcXCpcXC5cXCokLywgXCJcIik7XG4gIHBhdGggPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhwYXRoX2pzKTtcbiAgLy8gKi4qIGlzIG5vdyBzdHJpcHBlZFxuICB2YXIgZGlyX2hhbmRsZSA9IGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpO1xuICB2YXIgZmlyc3RfZW50cnkgPSBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKTtcbiAgLy8gVGhlIFdpbmRvd3MgYmluZGluZ3MgdHlwZSBkaXJfaGFuZGxlIGFzIGFuIGBpbnRgIGJ1dCBpdCdzIG5vdCBpbiBKU1xuICByZXR1cm4gWzAsIGZpcnN0X2VudHJ5LCBkaXJfaGFuZGxlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRuZXh0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9BbGlhczogd2luX2ZpbmRuZXh0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZG5leHQoZGlyX2hhbmRsZSkge1xuICByZXR1cm4gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9jbG9zZWRpclxuLy9BbGlhczogd2luX2ZpbmRjbG9zZVxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRjbG9zZShkaXJfaGFuZGxlKSB7XG4gIHJldHVybiBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmcgY29uc3Rcbi8vQWxpYXM6IHVuaXhfaW5ldF9hZGRyX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmcgKCkge3JldHVybiAwO31cblxuXG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBNbEZha2VEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGUsIE1sRmFrZUZkLCBjYW1sX2NyZWF0ZV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9hcnJheSwgY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfYnl0ZXNfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzXG5mdW5jdGlvbiBNbEZha2VEZXZpY2UgKHJvb3QsIGYpIHtcbiAgdGhpcy5jb250ZW50PXt9O1xuICB0aGlzLnJvb3QgPSByb290O1xuICB0aGlzLmxvb2t1cEZ1biA9IGY7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5jcmVhdGVfZGlyX2lmX25lZWRlZCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIGNvbXAgPSBuYW1lLnNwbGl0KFwiL1wiKTtcbiAgdmFyIHJlcyA9IFwiXCI7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBjb21wLmxlbmd0aCAtIDE7IGkrKyl7XG4gICAgcmVzICs9IGNvbXBbaV0gKyBcIi9cIjtcbiAgICBpZih0aGlzLmNvbnRlbnRbcmVzXSkgY29udGludWU7XG4gICAgdGhpcy5jb250ZW50W3Jlc10gPSBTeW1ib2woXCJkaXJlY3RvcnlcIik7XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuc2xhc2ggPSBmdW5jdGlvbihuYW1lKXtcbiAgcmV0dXJuIC9cXC8kLy50ZXN0KG5hbWUpP25hbWU6KG5hbWUgKyBcIi9cIik7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmxvb2t1cCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYoIXRoaXMuY29udGVudFtuYW1lXSAmJiB0aGlzLmxvb2t1cEZ1bikge1xuICAgIHZhciByZXMgPSB0aGlzLmxvb2t1cEZ1bihjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucm9vdCksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSkpO1xuICAgIGlmKHJlcyAhPT0gMCkge1xuICAgICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICAgIHRoaXMuY29udGVudFtuYW1lXT1uZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhyZXNbMV0pKTtcbiAgICB9XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24obmFtZSkge1xuICAvLyBUaGUgcm9vdCBvZiB0aGUgZGV2aWNlIGV4aXN0c1xuICBpZihuYW1lID09IFwiXCIpIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGRpcmVjdG9yeSBleGlzdHNcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF0pIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGZpbGUgZXhpc3RzXG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNGaWxlID0gZnVuY3Rpb24obmFtZSkge1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSAmJiAhdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICByZXR1cm4gMVxuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiAwXG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFRVhJU1RcIiwgXCJta2RpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBGaWxlIGV4aXN0c1wiKTtcbiAgICB9XG4gIH1cbiAgdmFyIHBhcmVudCA9IC9eKC4qKVxcL1teL10rLy5leGVjKG5hbWUpO1xuICBwYXJlbnQgPSAocGFyZW50ICYmIHBhcmVudFsxXSkgfHwgJyc7XG4gIGlmKCF0aGlzLmV4aXN0cyhwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwibWtkaXJcIiwgdGhpcy5ubShwYXJlbnQpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IocGFyZW50ICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQodGhpcy5zbGFzaChuYW1lKSk7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9FTlRcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIGlmKG4ubWF0Y2gocikpIHtcbiAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RFTVBUWVwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIjogRGlyZWN0b3J5IG5vdCBlbXB0eVwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG5hbWVfc2xhc2ggPSAobmFtZSA9PSBcIlwiKT9cIlwiOih0aGlzLnNsYXNoKG5hbWUpKTtcbiAgaWYoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICB9XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIHZhciBzZWVuID0ge31cbiAgdmFyIGEgPSBbXTtcbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIHZhciBtID0gbi5tYXRjaChyKTtcbiAgICBpZihtICYmICFzZWVuW21bMV1dKSB7c2VlblttWzFdXSA9IHRydWU7IGEucHVzaChtWzFdKX1cbiAgfVxuICByZXR1cm4gYTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbmRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuXG4gIHZhciBhID0gdGhpcy5yZWFkZGlyKG5hbWUpO1xuICB2YXIgYyA9IGZhbHNlO1xuICB2YXIgaSA9IDA7XG4gIHJldHVybiB7IHJlYWRTeW5jIDogKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoYykge1xuICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBjbG9zZWRpciBmYWlsZWRcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmKGkgPT0gYS5sZW5ndGgpIHJldHVybiBudWxsO1xuICAgIHZhciBlbnRyeSA9IGFbaV07XG4gICAgaSsrO1xuICAgIHJldHVybiB7IG5hbWU6IGVudHJ5IH1cbiAgfSlcbiAgICAsIGNsb3NlU3luYzogKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChjKSB7XG4gICAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBjbG9zZWRpciBmYWlsZWRcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGMgPSB0cnVlO1xuICAgICAgYSA9IFtdO1xuICAgIH0pXG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICBpZihuYW1lID09IFwiXCIpICByZXR1cm4gdHJ1ZTtcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVfc2xhc2hdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgb2sgPSB0aGlzLmNvbnRlbnRbbmFtZV0/dHJ1ZTpmYWxzZTtcbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lXTtcbiAgcmV0dXJuIG9rO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZikge1xuICB2YXIgZmlsZTtcbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgaWYgKHRoaXMuY29udGVudFtuYW1lXSkge1xuICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogaXMgYSBkaXJlY3RvcnlcIik7XG4gICAgaWYgKGYuY3JlYXRlICYmIGYuZXhjbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICAgIGlmKGYudHJ1bmNhdGUpIGZpbGUudHJ1bmNhdGUoKTtcbiAgfSBlbHNlIGlmIChmLmNyZWF0ZSkge1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUgKHRoaXMubm0obmFtZSkpO1xuICB9XG4gIHJldHVybiBuZXcgTWxGYWtlRmQodGhpcy5ubShuYW1lKSwgZmlsZSwgZik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgdmFyIGZpbGU7XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGlzIGEgZGlyZWN0b3J5XCIpO1xuICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sRmFrZUZkKHRoaXMubm0obmFtZSksIGZpbGUsIGYpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlZ2lzdGVyPSBmdW5jdGlvbiAobmFtZSxjb250ZW50KXtcbiAgdmFyIGZpbGU7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lXSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgaWYoY2FtbF9pc19tbF9ieXRlcyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY29udGVudCk7XG4gIGlmKGNhbWxfaXNfbWxfc3RyaW5nKGNvbnRlbnQpKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudCBpbnN0YW5jZW9mIEFycmF5KVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX2FycmF5KGNvbnRlbnQpKTtcbiAgZWxzZSBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNvbnRlbnQpKTtcbiAgZWxzZSBpZihjb250ZW50LnRvU3RyaW5nKSB7XG4gICAgdmFyIGJ5dGVzID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoY29udGVudC50b1N0cmluZygpKSk7XG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGJ5dGVzKTtcbiAgfVxuICBpZihmaWxlKXtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IGZpbGU7XG4gIH1cbiAgZWxzZSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiByZWdpc3RlcmluZyBmaWxlIHdpdGggaW52YWxpZCBjb250ZW50IHR5cGVcIik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VEZXZpY2VcblxuLy9Qcm92aWRlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogTWxGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYmxpdF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gTWxGYWtlRmlsZShjb250ZW50KXtcbiAgdGhpcy5kYXRhID0gY29udGVudDtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcbk1sRmFrZUZpbGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRmlsZVxuTWxGYWtlRmlsZS5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB2YXIgb2xkID0gdGhpcy5kYXRhO1xuICB0aGlzLmRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gIGNhbWxfYmxpdF9ieXRlcyhvbGQsIDAsIHRoaXMuZGF0YSwgMCwgbGVuKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHRoaXMuZGF0YSk7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgaWYob2Zmc2V0ICsgbGVuID49IGNsZW4pIHtcbiAgICB2YXIgbmV3X3N0ciA9IGNhbWxfY3JlYXRlX2J5dGVzKG9mZnNldCArIGxlbik7XG4gICAgdmFyIG9sZF9kYXRhID0gdGhpcy5kYXRhO1xuICAgIHRoaXMuZGF0YSA9IG5ld19zdHI7XG4gICAgY2FtbF9ibGl0X2J5dGVzKG9sZF9kYXRhLCAwLCB0aGlzLmRhdGEsIDAsIGNsZW4pO1xuICB9XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIHBvcywgdGhpcy5kYXRhLCBvZmZzZXQsIGxlbik7XG4gIHJldHVybiAwXG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBpZihvZmZzZXQgKyBsZW4gPj0gY2xlbikge1xuICAgIGxlbiA9IGNsZW4gLSBvZmZzZXQ7XG4gIH1cbiAgaWYobGVuKSB7XG4gICAgdmFyIGRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gICAgY2FtbF9ibGl0X2J5dGVzKHRoaXMuZGF0YSwgb2Zmc2V0LCBkYXRhLCAwLCBsZW4pO1xuICAgIGJ1Zi5zZXQoY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhkYXRhKSwgcG9zKTtcbiAgfVxuICByZXR1cm4gbGVuXG59XG5cblxuLy9Qcm92aWRlczogTWxGYWtlRmRfb3V0XG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxGYWtlRmRfb3V0KGZkLGZsYWdzKSB7XG4gIE1sRmFrZUZpbGUuY2FsbCh0aGlzLCBjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gIHRoaXMubG9nID0gKGZ1bmN0aW9uIChzKSB7IHJldHVybiAwIH0pO1xuICBpZihmZCA9PSAxICYmIHR5cGVvZiBjb25zb2xlLmxvZyA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmxvZztcbiAgZWxzZSBpZihmZCA9PSAyICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUuZXJyb3I7XG4gIGVsc2UgaWYodHlwZW9mIGNvbnNvbGUubG9nID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUubG9nXG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7IHJldHVybiAwIH1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAob2Zmc2V0LGJ1Zixwb3MsbGVuKSB7XG4gIGlmKHRoaXMubG9nKSB7XG4gICAgaWYobGVuID4gMFxuICAgICAgICYmIHBvcyA+PSAwXG4gICAgICAgJiYgcG9zK2xlbiA8PSBidWYubGVuZ3RoXG4gICAgICAgJiYgYnVmW3BvcytsZW4tMV0gPT0gMTApXG4gICAgICBsZW4gLS07XG4gICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgIC8vIGFzIGNvbnNvbGUgbG9nZ2luZyBkaXNwbGF5IGEgbmV3bGluZSBhdCB0aGUgZW5kXG4gICAgdmFyIHNyYyA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbik7XG4gICAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoYnVmKSwgcG9zLCBzcmMsIDAsIGxlbik7XG4gICAgdGhpcy5sb2coc3JjLnRvVXRmMTYoKSk7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5mZCAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGFscmVhZHkgY2xvc2VkXCIpO1xufVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG9mZnNldCwgYnVmLCBwb3MsIGxlbikge1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLmZkICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgaXMgd3JpdGUgb25seVwiKTtcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubG9nID0gdW5kZWZpbmVkO1xufVxuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxGYWtlRmQobmFtZSwgZmlsZSxmbGFncykge1xuICB0aGlzLmZpbGUgPSBmaWxlO1xuICB0aGlzLm5hbWUgPSBuYW1lO1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5cbk1sRmFrZUZkLnByb3RvdHlwZS5lcnJfY2xvc2VkID0gZnVuY3Rpb24gKCkge1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5hbWUgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBhbHJlYWR5IGNsb3NlZFwiKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLmxlbmd0aCAoKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChvZmZzZXQsYnVmLHBvcyxsZW4pIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLndyaXRlKG9mZnNldCxidWYscG9zLGxlbilcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLnJlYWQob2Zmc2V0LCBidWYsIHBvcywgbGVuKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5maWxlID0gdW5kZWZpbmVkO1xufVxuIiwiLy9Qcm92aWRlczogaW5pdGlhbGl6ZV9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogc2VyaWFsaXplX25hdCwgZGVzZXJpYWxpemVfbmF0LCBjYW1sX2hhc2hfbmF0XG5mdW5jdGlvbiBpbml0aWFsaXplX25hdCgpIHtcbiAgY2FtbF9jdXN0b21fb3BzW1wiX25hdFwiXSA9XG4gICAgeyBkZXNlcmlhbGl6ZSA6IGRlc2VyaWFsaXplX25hdCxcbiAgICAgIHNlcmlhbGl6ZSA6IHNlcmlhbGl6ZV9uYXQsXG4gICAgICBoYXNoIDogY2FtbF9oYXNoX25hdFxuICAgIH1cbn1cblxuLy9Qcm92aWRlczogTWxOYXRcbmZ1bmN0aW9uIE1sTmF0KHgpe1xuICB0aGlzLmRhdGEgPSBuZXcgSW50MzJBcnJheSh4KTtcbiAgLy8gRm9yIG51bSA8IDEuNVxuICAvLyBsZW5ndGhfbmF0IGlzbid0IGV4dGVybmFsLCBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhlIE9iai5zaXplXG4gIC8vIHdvcmsgb3V0IHJpZ2h0LlxuICAvLyBXZSBhZGQgKzIgdG8gdGhlIGFycmF5IGxlbmd0aDpcbiAgLy8gLSArMSBmb3IgdGhlIHRhZ1xuICAvLyAtICsxIGZvciB0aGUgY3VzdG9tX29wcyBzbG90XG4gIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aCArIDJcbn1cblxuTWxOYXQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfbmF0XCI7XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY2FtbF9oYXNoX25hdCh4KSB7XG4gIHZhciBsZW4gPSBudW1fZGlnaXRzX25hdCh4LCAwLCB4LmRhdGEubGVuZ3RoKTtcbiAgdmFyIGggPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHguZGF0YVtpXSk7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGxlbmd0aF9uYXRcbmZ1bmN0aW9uIGxlbmd0aF9uYXQoeCkge1xuICByZXR1cm4geC5kYXRhLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogbmF0X29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gbmF0X29mX2FycmF5KGwpe1xuICByZXR1cm4gbmV3IE1sTmF0KGwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjcmVhdGVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gY3JlYXRlX25hdChzaXplKSB7XG4gIHZhciBhcnIgPSBuZXcgTWxOYXQoc2l6ZSk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICBhcnIuZGF0YVtpXSA9IC0xO1xuICB9XG4gIHJldHVybiBhcnI7XG59XG5cbi8vUHJvdmlkZXM6IHNldF90b196ZXJvX25hdFxuZnVuY3Rpb24gc2V0X3RvX3plcm9fbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmxpdF9uYXRcbmZ1bmN0aW9uIGJsaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IG5hdDIuZGF0YVtvZnMyK2ldO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfZGlnaXRfbmF0XG5mdW5jdGlvbiBzZXRfZGlnaXRfbmF0KG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0XG5mdW5jdGlvbiBudGhfZGlnaXRfbmF0KG5hdCwgb2ZzKSB7XG4gIHJldHVybiBuYXQuZGF0YVtvZnNdO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMsIGRpZ2l0KSB7XG4gIG5hdC5kYXRhW29mc10gPSBkaWdpdDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG50aF9kaWdpdF9uYXRfbmF0aXZlXG5mdW5jdGlvbiBudGhfZGlnaXRfbmF0X25hdGl2ZShuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIG51bV9kaWdpdHNfbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZihuYXQuZGF0YVtvZnMraV0gIT0gMCkgcmV0dXJuIGkrMTtcbiAgfVxuICByZXR1cm4gMTsgLy8gMCBjb3VudHMgYXMgMSBkaWdpdFxufVxuXG4vL1Byb3ZpZGVzOiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXRcbmZ1bmN0aW9uIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdChuYXQsIG9mcykge1xuICB2YXIgYSA9IG5hdC5kYXRhW29mc107XG4gIHZhciBiID0gMDtcbiAgaWYoYSAmIDB4RkZGRjAwMDApIHsgYiArPTE2OyBhID4+Pj0xNjsgfVxuICBpZihhICYgMHhGRjAwKSAgICAgeyBiICs9IDg7IGEgPj4+PSA4OyB9XG4gIGlmKGEgJiAweEYwKSAgICAgICB7IGIgKz0gNDsgYSA+Pj49IDQ7IH1cbiAgaWYoYSAmIDEyKSAgICAgICAgIHsgYiArPSAyOyBhID4+Pj0gMjsgfVxuICBpZihhICYgMikgICAgICAgICAgeyBiICs9IDE7IGEgPj4+PSAxOyB9XG4gIGlmKGEgJiAxKSAgICAgICAgICB7IGIgKz0gMTsgfVxuICByZXR1cm4gMzIgLSBiO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF9pbnRcbmZ1bmN0aW9uIGlzX2RpZ2l0X2ludChuYXQsIG9mcykge1xuICBpZiAobmF0LmRhdGFbb2ZzXSA+PSAwKSByZXR1cm4gMVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfemVyb1xuZnVuY3Rpb24gaXNfZGlnaXRfemVybyhuYXQsIG9mcykge1xuICBpZihuYXQuZGF0YVtvZnNdID09IDApIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfb2RkXG5mdW5jdGlvbiBpc19kaWdpdF9vZGQobmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSAmIDEpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaW5jcl9uYXRcbmZ1bmN0aW9uIGluY3JfbmF0KG5hdCwgb2ZzLCBsZW4sIGNhcnJ5X2luKSB7XG4gIHZhciBjYXJyeSA9IGNhcnJ5X2luO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQuZGF0YVtvZnMraV0gPj4+IDApICsgY2Fycnk7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gKHggfCAwKTtcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcnJ5ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IGFkZF9uYXRcbi8vUmVxdWlyZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBhZGRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIGNhcnJ5X2luKSB7XG4gIHZhciBjYXJyeSA9IGNhcnJ5X2luO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApICsgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geFxuICAgIGlmKHggPT0gKHggPj4+IDApKSB7XG4gICAgICBjYXJyeSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcnJ5ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBjYXJyeSk7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBsZW1lbnRfbmF0XG5mdW5jdGlvbiBjb21wbGVtZW50X25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICgtMSA+Pj4gMCkgLSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKTtcbiAgfVxufVxuXG4vLyBvY2FtbCBmbGlwcyBjYXJyeV9pblxuLy9Qcm92aWRlczogZGVjcl9uYXRcbmZ1bmN0aW9uIGRlY3JfbmF0KG5hdCwgb2ZzLCBsZW4sIGNhcnJ5X2luKSB7XG4gIHZhciBib3Jyb3cgPSAoY2FycnlfaW4gPT0gMSkgPyAwIDogMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PjApIC0gYm9ycm93O1xuICAgIG5hdC5kYXRhW29mcytpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gKGJvcnJvdyA9PSAxKSA/IDAgOiAxO1xufVxuXG4vLyBvY2FtbCBmbGlwcyBjYXJyeV9pblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBzdWJfbmF0XG4vL1JlcXVpcmVzOiBkZWNyX25hdFxuZnVuY3Rpb24gc3ViX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgLSAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApIC0gYm9ycm93O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geDtcbiAgICBpZiAoeCA+PSAwKSB7XG4gICAgICBib3Jyb3cgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGVjcl9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIChib3Jyb3c9PTEpPzA6MSk7XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNbb2ZzM11cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogbXVsdF9kaWdpdF9uYXRcbi8vUmVxdWlyZXM6IGFkZF9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gbXVsdF9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMykge1xuICB2YXIgY2FycnkgPSAwO1xuICB2YXIgYSA9IChuYXQzLmRhdGFbb2ZzM10gPj4+IDApO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHgxID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSAmIDB4MDAwMEZGRkYpICsgY2Fycnk7XG4gICAgdmFyIHgyID0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAqIChhID4+PiAxNik7XG4gICAgY2FycnkgPSBNYXRoLmZsb29yKHgyLzY1NTM2KTtcbiAgICB2YXIgeDMgPSB4MSArICh4MiAlIDY1NTM2KSAqIDY1NTM2O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geDM7XG4gICAgY2FycnkgKz0gTWF0aC5mbG9vcih4My80Mjk0OTY3Mjk2KTtcbiAgfVxuXG4gIGlmKGxlbjIgPCBsZW4xICYmIGNhcnJ5KSB7XG4gICAgcmV0dXJuIGFkZF9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIG5hdF9vZl9hcnJheShbY2FycnldKSwgMCwgMSwgMCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNhcnJ5O1xuICB9XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNcbi8vIGxlbjEgPj0gbGVuMiArIGxlbjMuXG4vL1Byb3ZpZGVzOiBtdWx0X25hdFxuLy9SZXF1aXJlczogbXVsdF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMsIGxlbjMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjM7IGkrKykge1xuICAgIGNhcnJ5ICs9IG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEraSwgbGVuMS1pLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzK2kpO1xuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbmF0MSA9IDIgKiBuYXQxICsgbmF0MiAqIG5hdDJcbi8vIGxlbjEgPj0gMiAqIGxlbjJcbi8vUHJvdmlkZXM6IHNxdWFyZV9uYXRcbi8vUmVxdWlyZXM6IG11bHRfbmF0LCBhZGRfbmF0XG5mdW5jdGlvbiBzcXVhcmVfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgY2FycnkgKz0gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQxLCBvZnMxLCBsZW4xLCAwKTtcbiAgY2FycnkgKz0gbXVsdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMik7XG4gIHJldHVybiBjYXJyeTtcbn1cblxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X2xlZnRfbmF0XG5mdW5jdGlvbiBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICB2YXIgYSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCk7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSAoYSA8PCBuYml0cykgfCB3cmFwO1xuICAgIHdyYXAgPSBhID4+PiAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIEFzc3VtaW5nIGMgPiBhLCByZXR1cm5zIFtxdW90aWVudCwgcmVtYWluZGVyXSBvZiAoYTw8MzIgKyBiKS9jXG4vL1Byb3ZpZGVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfaGVscGVyKGEsIGIsIGMpIHtcbiAgdmFyIHggPSBhICogNjU1MzYgKyAoYj4+PjE2KTtcbiAgdmFyIHkgPSBNYXRoLmZsb29yKHgvYykgKiA2NTUzNjtcbiAgdmFyIHogPSAoeCAlIGMpICogNjU1MzY7XG4gIHZhciB3ID0geiArIChiICYgMHgwMDAwRkZGRik7XG4gIHJldHVybiBbeSArIE1hdGguZmxvb3Iody9jKSwgdyAlIGNdO1xufVxuXG4vLyBuYXQxW29mczErbGVuXSA8IG5hdDJbb2ZzMl1cbi8vUHJvdmlkZXM6IGRpdl9kaWdpdF9uYXRcbi8vUmVxdWlyZXM6IGRpdl9oZWxwZXJcbmZ1bmN0aW9uIGRpdl9kaWdpdF9uYXQobmF0cSwgb2ZzcSwgbmF0ciwgb2ZzciwgbmF0MSwgb2ZzMSwgbGVuLCBuYXQyLCBvZnMyKSB7XG4gIHZhciByZW0gPSAobmF0MS5kYXRhW29mczErbGVuLTFdID4+PjApO1xuICAvLyBuYXRxW29mc3ErbGVuLTFdIGlzIGd1YXJhbnRlZWQgdG8gYmUgemVybyAoZHVlIHRvIHRoZSBNU0QgcmVxdWlyZW1lbnQpLFxuICAvLyBhbmQgc2hvdWxkIG5vdCBiZSB3cml0dGVuIHRvLlxuICBmb3IodmFyIGkgPSBsZW4tMjsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgeCA9IGRpdl9oZWxwZXIocmVtLCAobmF0MS5kYXRhW29mczEraV0gPj4+IDApLCAobmF0Mi5kYXRhW29mczJdID4+PiAwKSk7XG4gICAgbmF0cS5kYXRhW29mc3EraV0gPSB4WzBdO1xuICAgIHJlbSA9IHhbMV07XG4gIH1cbiAgbmF0ci5kYXRhW29mc3JdID0gcmVtO1xuICByZXR1cm4gMDtcbn1cblxuLy8gbmF0MVtuYXQyOl0gOj0gbmF0MSAvIG5hdDJcbi8vIG5hdDFbOm5hdDJdIDo9IG5hdDEgJSBuYXQyXG4vLyBsZW4xID4gbGVuMiwgbmF0MltvZnMyK2xlbjItMV0gPiBuYXQxW29mczErbGVuMS0xXVxuLy9Qcm92aWRlczogZGl2X25hdFxuLy9SZXF1aXJlczogZGl2X2RpZ2l0X25hdCwgZGl2X2hlbHBlciwgbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0LCBzaGlmdF9sZWZ0X25hdCwgc2hpZnRfcmlnaHRfbmF0LCBjcmVhdGVfbmF0LCBzZXRfdG9femVyb19uYXQsIG11bHRfZGlnaXRfbmF0LCBzdWJfbmF0LCBjb21wYXJlX25hdCwgbmF0X29mX2FycmF5XG5mdW5jdGlvbiBkaXZfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgaWYobGVuMiA9PSAxKSB7XG4gICAgZGl2X2RpZ2l0X25hdChuYXQxLCBvZnMxKzEsIG5hdDEsIG9mczEsIG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIpO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdmFyIHMgPSBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0Miwgb2ZzMitsZW4yLTEpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG4gIHNoaWZ0X2xlZnRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTtcblxuICB2YXIgZCA9IChuYXQyLmRhdGFbb2ZzMitsZW4yLTFdID4+PiAwKSArIDE7XG4gIHZhciBhID0gY3JlYXRlX25hdChsZW4yKzEpO1xuICBmb3IgKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gbGVuMjsgaS0tKSB7XG4gICAgLy8gRGVjZW50IGxvd2VyIGJvdW5kIG9uIHF1b1xuICAgIHZhciBxdW8gPSBkID09IDQyOTQ5NjcyOTYgPyAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIDogZGl2X2hlbHBlcigobmF0MS5kYXRhW29mczEraV0gPj4+IDApLCAobmF0MS5kYXRhW29mczEraS0xXSA+Pj4wKSwgZClbMF07XG4gICAgc2V0X3RvX3plcm9fbmF0KGEsIDAsIGxlbjIrMSk7XG4gICAgbXVsdF9kaWdpdF9uYXQoYSwgMCwgbGVuMisxLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoW3F1b10pLCAwKTtcbiAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIGEsIDAsIGxlbjIrMSwgMSk7XG5cbiAgICB3aGlsZSAobmF0MS5kYXRhW29mczEraV0gIT0gMCB8fCBjb21wYXJlX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMikgPj0gMCkge1xuICAgICAgcXVvID0gcXVvICsgMTtcbiAgICAgIHN1Yl9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgMSk7XG4gICAgfVxuXG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBxdW87XG4gIH1cblxuICBzaGlmdF9yaWdodF9uYXQobmF0MSwgb2ZzMSwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpOyAvLyBzaGlmdCByZW1haW5kZXJcbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDIsIG9mczIsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gcmVzdG9yZVxuICByZXR1cm4gMDtcbn1cblxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X3JpZ2h0X25hdFxuZnVuY3Rpb24gc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIG5iaXRzKSB7XG4gIGlmKG5iaXRzID09IDApIHtcbiAgICBuYXQyLmRhdGFbb2ZzMl0gPSAwO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciB3cmFwID0gMDtcbiAgZm9yKHZhciBpID0gbGVuMS0xOyBpID49IDA7IGktLSkge1xuICAgIHZhciBhID0gbmF0MS5kYXRhW29mczEraV0gPj4+IDA7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSAoYSA+Pj4gbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA8PCAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgaWYobmF0MS5kYXRhW29mczFdID4gbmF0Mi5kYXRhW29mczJdKSByZXR1cm4gMTtcbiAgaWYobmF0MS5kYXRhW29mczFdIDwgbmF0Mi5kYXRhW29mczJdKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX25hdFxuLy9SZXF1aXJlczogbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgdmFyIGEgPSBudW1fZGlnaXRzX25hdChuYXQxLCBvZnMxLCBsZW4xKTtcbiAgdmFyIGIgPSBudW1fZGlnaXRzX25hdChuYXQyLCBvZnMyLCBsZW4yKTtcbiAgaWYoYSA+IGIpIHJldHVybiAxO1xuICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICBmb3IodmFyIGkgPSBsZW4xIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA+IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAxO1xuICAgIGlmICgobmF0MS5kYXRhW29mczEraV0gPj4+IDApIDwgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSkgcmV0dXJuIC0xO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX25hdF9yZWFsXG4vL1JlcXVpcmVzOiBjb21wYXJlX25hdFxuZnVuY3Rpb24gY29tcGFyZV9uYXRfcmVhbChuYXQxLG5hdDIpe1xuICByZXR1cm4gY29tcGFyZV9uYXQobmF0MSwwLG5hdDEuZGF0YS5sZW5ndGgsbmF0MiwwLG5hdDIuZGF0YS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBsYW5kX2RpZ2l0X25hdFxuZnVuY3Rpb24gbGFuZF9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gJj0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbG9yX2RpZ2l0X25hdFxuZnVuY3Rpb24gbG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSB8PSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBseG9yX2RpZ2l0X25hdFxuZnVuY3Rpb24gbHhvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gXj0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBzZXJpYWxpemVfbmF0XG5mdW5jdGlvbiBzZXJpYWxpemVfbmF0KHdyaXRlciwgbmF0LCBzeil7XG4gIHZhciBsZW4gPSBuYXQuZGF0YS5sZW5ndGg7XG4gIHdyaXRlci53cml0ZSgzMiwgbGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICB3cml0ZXIud3JpdGUoMzIsIG5hdC5kYXRhW2ldKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHN6WzFdID0gbGVuICogODtcbn1cblxuLy9Qcm92aWRlczogZGVzZXJpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gZGVzZXJpYWxpemVfbmF0KHJlYWRlciwgc3ope1xuICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIG5hdCA9IG5ldyBNbE5hdChsZW4pO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIG5hdC5kYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHJldHVybiBuYXQ7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG5cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlXG52YXIgY2FtbF9ncl9zdGF0ZTtcblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9nZXQoKSB7XG4gIGlmKGNhbWxfZ3Jfc3RhdGUpIHtcbiAgICByZXR1cm4gY2FtbF9ncl9zdGF0ZTtcbiAgfVxuICB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsY2FtbF9uYW1lZF92YWx1ZShcIkdyYXBoaWNzLkdyYXBoaWNfZmFpbHVyZVwiKSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIk5vdCBpbml0aWFsaXplZFwiKV0pO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGUsY2FtbF9ncl9zdGF0ZV9pbml0XG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX3NldChjdHgpIHtcbiAgY2FtbF9ncl9zdGF0ZT1jdHg7XG4gIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9ncmFwaChpbmZvKXtcbiAgdmFyIGluZm8gPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhpbmZvKTtcbiAgZnVuY3Rpb24gZ2V0KG5hbWUpe1xuICAgIHZhciByZXMgPSBpbmZvLm1hdGNoKFwiKF58LCkgKlwiK25hbWUrXCIgKj0gKihbYS16QS1aMC05X10rKSAqKCx8JClcIik7XG4gICAgaWYocmVzKSByZXR1cm4gcmVzWzJdO1xuICB9XG4gIHZhciBzcGVjcyA9IFtdO1xuICBpZighKGluZm89PVwiXCIpKSBzcGVjcy5wdXNoKGluZm8pO1xuICB2YXIgdGFyZ2V0ID0gZ2V0KFwidGFyZ2V0XCIpO1xuICBpZighdGFyZ2V0KSB0YXJnZXQ9XCJcIjtcbiAgdmFyIHN0YXR1cyA9IGdldChcInN0YXR1c1wiKTtcbiAgaWYoIXN0YXR1cykgc3BlY3MucHVzaChcInN0YXR1cz0xXCIpXG5cbiAgdmFyIHcgPSBnZXQoXCJ3aWR0aFwiKTtcbiAgdyA9IHc/cGFyc2VJbnQodyk6MjAwO1xuICBzcGVjcy5wdXNoKFwid2lkdGg9XCIrdyk7XG5cbiAgdmFyIGggPSBnZXQoXCJoZWlnaHRcIik7XG4gIGggPSBoP3BhcnNlSW50KGgpOjIwMDtcbiAgc3BlY3MucHVzaChcImhlaWdodD1cIitoKTtcblxuICB2YXIgd2luID0gZ2xvYmFsVGhpcy5vcGVuKFwiYWJvdXQ6YmxhbmtcIix0YXJnZXQsc3BlY3Muam9pbihcIixcIikpO1xuICBpZighd2luKSB7Y2FtbF9mYWlsd2l0aChcIkdyYXBoaWNzLm9wZW5fZ3JhcGg6IGNhbm5vdCBvcGVuIHRoZSB3aW5kb3dcIil9XG4gIHZhciBkb2MgPSB3aW4uZG9jdW1lbnQ7XG4gIHZhciBjYW52YXMgPSBkb2MuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY2FudmFzLndpZHRoID0gdztcbiAgY2FudmFzLmhlaWdodCA9IGg7XG4gIHZhciBjdHggPSBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsdyxoKTtcbiAgY3R4LnNldF90aXRsZSA9IGZ1bmN0aW9uICh0aXRsZSkge1xuICAgIGRvYy50aXRsZSA9IHRpdGxlO1xuICB9O1xuICBjYW1sX2dyX3N0YXRlX3NldChjdHgpO1xuICB2YXIgYm9keSA9IGRvYy5ib2R5O1xuICBib2R5LnN0eWxlLm1hcmdpbiA9IFwiMHB4XCI7XG4gIGJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfaW5pdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfY29sb3IsY2FtbF9ncl9tb3ZldG8sY2FtbF9ncl9yZXNpemVfd2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9saW5lX3dpZHRoLGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSxjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGVcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpe1xuICBjYW1sX2dyX21vdmV0byhjYW1sX2dyX3N0YXRlLngsY2FtbF9ncl9zdGF0ZS55KTtcbiAgY2FtbF9ncl9yZXNpemVfd2luZG93KGNhbWxfZ3Jfc3RhdGUud2lkdGgsY2FtbF9ncl9zdGF0ZS5oZWlnaHQpO1xuICBjYW1sX2dyX3NldF9saW5lX3dpZHRoKGNhbWxfZ3Jfc3RhdGUubGluZV93aWR0aCk7XG4gIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShjYW1sX2dyX3N0YXRlLnRleHRfc2l6ZSk7XG4gIGNhbWxfZ3Jfc2V0X2ZvbnQoY2FtbF9ncl9zdGF0ZS5mb250KTtcbiAgY2FtbF9ncl9zZXRfY29sb3IoY2FtbF9ncl9zdGF0ZS5jb2xvcik7XG4gIGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZShjYW1sX2dyX3N0YXRlLnRpdGxlKTtcbiAgLy9jYW1sX2dyX3Jlc2l6ZV93aW5kb3cgbWlnaHQgcmVzZXQgc29tZSBjYW52YXMnIHByb3BlcnRpZXNcbiAgY2FtbF9ncl9zdGF0ZS5jb250ZXh0LnRleHRCYXNlbGluZSA9ICdib3R0b20nO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCl7XG4gIHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgIGNhbnZhcyA6IGNhbnZhcyxcbiAgICB4IDogMCxcbiAgICB5IDogMCxcbiAgICB3aWR0aCA6IHcsXG4gICAgaGVpZ2h0IDogaCxcbiAgICBsaW5lX3dpZHRoIDogMSxcbiAgICBmb250IDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImZpeGVkXCIpLFxuICAgIHRleHRfc2l6ZSA6IDI2LFxuICAgIGNvbG9yIDogMHgwMDAwMDAsXG4gICAgdGl0bGUgOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpXG4gIH07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZG9jX29mX3N0YXRlXG5mdW5jdGlvbiBjYW1sX2dyX2RvY19vZl9zdGF0ZShzdGF0ZSkge1xuICBpZihzdGF0ZS5jYW52YXMub3duZXJEb2N1bWVudClcbiAgICByZXR1cm4gc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2VfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSAwO1xuICBzLmNhbnZhcy5oZWlnaHQgPSAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZShuYW1lKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRpdGxlID0gbmFtZTtcbiAgdmFyIGpzbmFtZSA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZihzLnNldF90aXRsZSkgcy5zZXRfdGl0bGUoanNuYW1lKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyh3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KClcbiAgcy53aWR0aCA9IHc7XG4gIHMuaGVpZ2h0ID0gaDtcbiAgcy5jYW52YXMud2lkdGggPSB3O1xuICBzLmNhbnZhcy5oZWlnaHQgPSBoO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbGVhcl9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xlYXJfZ3JhcGgoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNhbnZhcy53aWR0aCA9IHMud2lkdGg7XG4gIHMuY2FudmFzLmhlaWdodCA9IHMuaGVpZ2h0O1xuICAvLyAgcy5jb250ZXh0LnN0cm9rZVJlY3QgKDAuLCAwLiwgcy53aWR0aCwgcy5oZWlnaHQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLndpZHRoO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3lcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeSgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmhlaWdodDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2NvbG9yKGNvbG9yKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBmdW5jdGlvbiBjb252ZXJ0KG51bWJlcikge1xuICAgIHZhciBzdHIgPSAnJyArIG51bWJlci50b1N0cmluZygxNik7XG4gICAgd2hpbGUgKHN0ci5sZW5ndGggPCAyKSBzdHIgPSAnMCcgKyBzdHI7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICB2YXJcbiAgciA9IChjb2xvciA+PiAxNikgJiAweGZmLFxuICBnID0gKGNvbG9yID4+IDgpICAmIDB4ZmYsXG4gIGIgPSAoY29sb3IgPj4gMCkgICYgMHhmZjtcbiAgcy5jb2xvcj1jb2xvcjtcbiAgdmFyIGNfc3RyID0gJyMnICsgY29udmVydChyKSArIGNvbnZlcnQoZykgKyBjb252ZXJ0KGIpO1xuICBzLmNvbnRleHQuZmlsbFN0eWxlID0gICBjX3N0cjtcbiAgcy5jb250ZXh0LnN0cm9rZVN0eWxlID0gY19zdHI7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9wbG90XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wbG90KHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltPXMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEoMSwxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICB2YXIgY29sb3IgPSBzLmNvbG9yO1xuICBkWzBdID0gKGNvbG9yID4+IDE2KSAmIDB4ZmY7IC8vclxuICBkWzFdID0gKGNvbG9yID4+IDgpICAmIDB4ZmYsIC8vZ1xuICBkWzJdID0gKGNvbG9yID4+IDApICAmIDB4ZmY7IC8vYlxuICBkWzNdID0gMHhGRjsgLy9hXG4gIHMueD14O1xuICBzLnk9eTtcbiAgcy5jb250ZXh0LnB1dEltYWdlRGF0YShpbSx4LHMuaGVpZ2h0IC0geSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3BvaW50X2NvbG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wb2ludF9jb2xvcih4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuZ2V0SW1hZ2VEYXRhKHgscy5oZWlnaHQgLSB5LDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgcmV0dXJuIChkWzBdIDw8IDE2KSArIChkWzFdIDw8IDgpICsgZFsyXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbW92ZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tb3ZldG8oeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLng9eDtcbiAgcy55PXk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2N1cnJlbnRfeFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3VycmVudF94KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueFxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3lcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeSgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnlcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbGluZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9saW5ldG8oeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8ocy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy5jb250ZXh0LmxpbmVUbyh4LHMuaGVpZ2h0IC0geSk7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3JlY3QoeCx5LHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LnN0cm9rZVJlY3QoeCxzLmhlaWdodCAtIHksdywtaCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfYXJjX2F1eChjdHgsY3gsY3kscnkscngsYTEsYTIpe1xuICB3aGlsZShhMT5hMikgYTIrPTM2MDtcbiAgYTEgLz0gMTgwO1xuICBhMiAvPSAxODA7XG4gIHZhciByb3QgPSAwLHhQb3MseVBvcyx4UG9zX3ByZXYseVBvc19wcmV2O1xuICB2YXIgc3BhY2UgPSAyO1xuICB2YXIgbnVtID0gKCgoYTIgLSBhMSkgKiBNYXRoLlBJICogKChyeCtyeSkvMikpIC8gc3BhY2UpIHwgMDtcbiAgdmFyIGRlbHRhID0gKGEyIC0gYTEpICogTWF0aC5QSSAvIG51bTtcbiAgdmFyIGkgPSBhMSAqIE1hdGguUEk7XG4gIGZvciAodmFyIGo9MDtqPD1udW07aisrKXtcbiAgICB4UG9zID0gY3ggLSAocnggKiBNYXRoLnNpbihpKSkgKiBNYXRoLnNpbihyb3QgKiBNYXRoLlBJKSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHhQb3MgPSB4UG9zLnRvRml4ZWQoMik7XG4gICAgeVBvcyA9IGN5ICsgKHJ5ICogTWF0aC5jb3MoaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnggKiBNYXRoLnNpbihpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB5UG9zID0geVBvcy50b0ZpeGVkKDIpO1xuICAgIGlmIChqPT0wKSB7XG4gICAgICBjdHgubW92ZVRvKHhQb3MsIHlQb3MpO1xuICAgIH0gZWxzZSBpZiAoeFBvc19wcmV2IT14UG9zIHx8IHlQb3NfcHJldiE9eVBvcyl7XG4gICAgICBjdHgubGluZVRvKHhQb3MsIHlQb3MpO1xuICAgIH1cbiAgICB4UG9zX3ByZXY9eFBvcztcbiAgICB5UG9zX3ByZXY9eVBvcztcbiAgICBpLT0gZGVsdGE7Ly9jY3dcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfYXJjKHgseSxyeCxyeSxhMSxhMil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LHgscy5oZWlnaHQgLSB5LHJ4LHJ5LGExLGEyKTtcbiAgcy5jb250ZXh0LnN0cm9rZSgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgodyl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5saW5lX3dpZHRoID0gdztcbiAgcy5jb250ZXh0LmxpbmVXaWR0aCA9IHdcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3JlY3QoeCx5LHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmZpbGxSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9wb2x5XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3BvbHkoYXIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhhclsxXVsxXSxzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgZm9yKHZhciBpID0gMjsgaSA8IGFyLmxlbmd0aDsgaSsrKVxuICAgIHMuY29udGV4dC5saW5lVG8oYXJbaV1bMV0scy5oZWlnaHQgLSBhcltpXVsyXSk7XG4gIHMuY29udGV4dC5saW5lVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfYXJjKHgseSxyeCxyeSxhMSxhMil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LHgscy5oZWlnaHQgLSB5LHJ4LHJ5LGExLGEyKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyKHN0cil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIG0gPSBzLmNvbnRleHQubWVhc3VyZVRleHQoc3RyKTtcbiAgdmFyIGR4ID0gbS53aWR0aDtcbiAgcy5jb250ZXh0LmZpbGxUZXh0KHN0cixzLngscy5oZWlnaHQgLSBzLnkpO1xuICBzLnggKz0gZHggfCAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19jaGFyKGMpe1xuICBjYW1sX2dyX2RyYXdfc3RyKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ncl9kcmF3X3N0clxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19zdHJpbmcoc3RyKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzdHIpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfZm9udChmKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmZvbnQgPSBmO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfdGV4dF9zaXplKHNpemUpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGV4dF9zaXplID0gc2l6ZTtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl90ZXh0X3NpemUodHh0KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgdyA9IHMuY29udGV4dC5tZWFzdXJlVGV4dChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh0eHQpKS53aWR0aDtcbiAgcmV0dXJuIFswLHcscy50ZXh0X3NpemVdO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbWFrZV9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbWFrZV9pbWFnZShhcnIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBoID0gYXJyLmxlbmd0aCAtIDEgO1xuICB2YXIgdyA9IGFyclsxXS5sZW5ndGggLSAxO1xuICB2YXIgaW0gPSBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHcsaCk7XG4gIGZvcih2YXIgaT0wO2k8aDtpKyspe1xuICAgIGZvcih2YXIgaj0wO2o8dztqKyspe1xuICAgICAgdmFyIGMgPSBhcnJbaSsxXVtqKzFdO1xuICAgICAgdmFyIG8gPSBpKih3KjQpICsgKGogKiA0KTtcbiAgICAgIGlmKGMgPT0gLTEpIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSBjID4+IDE2ICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSBjID4+ICA4ICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSBjID4+ICAwICYgMFhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAweGZmO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gaW1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHVtcF9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHVtcF9pbWFnZShpbSl7XG4gIHZhciBkYXRhID0gWzBdXG4gIGZvcih2YXIgaT0wOyBpPGltLmhlaWdodDtpKyspe1xuICAgIGRhdGFbaSsxXSA9IFswXVxuICAgIGZvcih2YXIgaj0wOyBqPGltLndpZHRoO2orKyl7XG4gICAgICB2YXIgbyA9IGkqKGltLndpZHRoKjQpICsgKGogKiA0KSxcbiAgICAgICAgICByID0gaW0uZGF0YVtvKzBdLFxuICAgICAgICAgIGcgPSBpbS5kYXRhW28rMV0sXG4gICAgICAgICAgYiA9IGltLmRhdGFbbysyXTtcbiAgICAgIGRhdGFbaSsxXVtqKzFdID0gKHIgPDwgMTYpICsgKGcgPDwgOCkgKyBiXG4gICAgfVxuICB9XG4gIHJldHVybiBkYXRhXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfaW1hZ2UoaW0seCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBpZighaW0uaW1hZ2UpIHtcbiAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICBjYW52YXMud2lkdGggPSBzLndpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgICBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpLnB1dEltYWdlRGF0YShpbSwwLDApO1xuICAgIHZhciBpbWFnZSA9IG5ldyBnbG9iYWxUaGlzLkltYWdlKCk7XG4gICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbWFnZSx4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSk7XG4gICAgICBpbS5pbWFnZSA9IGltYWdlO1xuICAgIH1cbiAgICBpbWFnZS5zcmMgPSBjYW52YXMudG9EYXRhVVJMKFwiaW1hZ2UvcG5nXCIpO1xuICB9IGVsc2Uge1xuICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW0uaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9jcmVhdGVfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NyZWF0ZV9pbWFnZSh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHgseSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2JsaXRfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2JsaXRfaW1hZ2UoaW0seCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW0yID0gcy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSxpbS53aWR0aCxpbS5oZWlnaHQpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGltMi5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgaW0uZGF0YVtpXSA9IGltMi5kYXRhW2ldO1xuICAgIGltLmRhdGFbaSsxXSA9IGltMi5kYXRhW2krMV07XG4gICAgaW0uZGF0YVtpKzJdID0gaW0yLmRhdGFbaSsyXTtcbiAgICBpbS5kYXRhW2krM10gPSBpbTIuZGF0YVtpKzNdO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19oYW5kbGVyXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXIoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9fc2lnbmFsXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX3NpZ25hbCgpe3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9ncl93YWl0X2V2ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dhaXRfZXZlbnQoX2V2bCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3dhaXRfZXZlbnQgbm90IEltcGxlbWVudGVkOiB1c2UgR3JhcGhpY3NfanMgaW5zdGVhZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zeW5jaHJvbml6ZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9zeW5jaHJvbml6ZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3N5bmNocm9uaXplIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVtZW1iZXJfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9yZW1lbWJlcl9tb2RlICgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Rpc3BsYXlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9kaXNwbGF5X21vZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Rpc3BsYXlfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2luZG93X2lkXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dpbmRvd19pZChhKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3dpbmRvd19pZCBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3coYSxiLGMsZCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9vcGVuX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyhhKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4iLCJcbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG52YXIgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXggPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVnaXN0ZXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVnaXN0ZXIoZXZlbnRfbmFtZSwgZXZlbnRfdGFnLCBldmVudF90eXBlKSB7XG4gIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ICs9IDE7XG4gIHJldHVybiBbMCwgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXgsIGV2ZW50X25hbWUsIGV2ZW50X3R5cGUsIGV2ZW50X3RhZ107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl93cml0ZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlKGV2ZW50LCBldmVudF9jb250ZW50KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG4vL0FsaWFzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuLy9BbGlhczogY2FtbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXVzZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcmVzdW1lXG4vL0FsaWFzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3JcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvcih0YXJnZXQpIHtcbiAgcmV0dXJuIHt9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yKGN1cnNvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19yZWFkX3BvbGxcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsKGN1cnNvciwgY2FsbGJhY2tzLCBudW0pIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2NvbnN0YW50c1xudmFyIGNhbWxfbWFyc2hhbF9jb25zdGFudHMgPSB7XG4gIFBSRUZJWF9TTUFMTF9CTE9DSzogICAgICAgICAweDgwLFxuICBQUkVGSVhfU01BTExfSU5UOiAgICAgICAgICAgMHg0MCxcbiAgUFJFRklYX1NNQUxMX1NUUklORzogICAgICAgIDB4MjAsXG4gIENPREVfSU5UODogICAgICAgICAgICAgICAgICAweDAwLFxuICBDT0RFX0lOVDE2OiAgICAgICAgICAgICAgICAgMHgwMSxcbiAgQ09ERV9JTlQzMjogICAgICAgICAgICAgICAgIDB4MDIsXG4gIENPREVfSU5UNjQ6ICAgICAgICAgICAgICAgICAweDAzLFxuICBDT0RFX1NIQVJFRDg6ICAgICAgICAgICAgICAgMHgwNCxcbiAgQ09ERV9TSEFSRUQxNjogICAgICAgICAgICAgIDB4MDUsXG4gIENPREVfU0hBUkVEMzI6ICAgICAgICAgICAgICAweDA2LFxuICBDT0RFX0JMT0NLMzI6ICAgICAgICAgICAgICAgMHgwOCxcbiAgQ09ERV9CTE9DSzY0OiAgICAgICAgICAgICAgIDB4MTMsXG4gIENPREVfU1RSSU5HODogICAgICAgICAgICAgICAweDA5LFxuICBDT0RFX1NUUklORzMyOiAgICAgICAgICAgICAgMHgwQSxcbiAgQ09ERV9ET1VCTEVfQklHOiAgICAgICAgICAgIDB4MEIsXG4gIENPREVfRE9VQkxFX0xJVFRMRTogICAgICAgICAweDBDLFxuICBDT0RFX0RPVUJMRV9BUlJBWThfQklHOiAgICAgMHgwRCxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTogIDB4MEUsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfQklHOiAgICAweDBGLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTogMHgwNyxcbiAgQ09ERV9DT0RFUE9JTlRFUjogICAgICAgICAgIDB4MTAsXG4gIENPREVfSU5GSVhQT0lOVEVSOiAgICAgICAgICAweDExLFxuICBDT0RFX0NVU1RPTTogICAgICAgICAgICAgICAgMHgxMixcbiAgQ09ERV9DVVNUT01fTEVOOiAgICAgICAgICAgIDB4MTgsXG4gIENPREVfQ1VTVE9NX0ZJWEVEOiAgICAgICAgICAweDE5XG59XG5cblxuLy9Qcm92aWRlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIFVJbnQ4QXJyYXlSZWFkZXIgKHMsIGkpIHsgdGhpcy5zID0gczsgdGhpcy5pID0gaTsgfVxuVUludDhBcnJheVJlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnNbdGhpcy5pKytdOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zW3RoaXMuaSsrXSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDgpIHwgc1tpICsgMV1cbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDI0ID4+IDE2KSB8IHNbaSArIDFdO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzW2ldIDw8IDI0KSB8IChzW2krMV0gPDwgMTYpIHxcbiAgICAgICAgICAgIChzW2krMl0gPDwgOCkgfCBzW2krM10pID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKHNbaV0gPDwgMjQpIHwgKHNbaSsxXSA8PCAxNikgfFxuICAgICAgKHNbaSsyXSA8PCA4KSB8IHNbaSszXTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkodGhpcy5zLnN1YmFycmF5KGksIGkgKyBsZW4pKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIHRoaXMucy5zdWJhcnJheShpLCBpICsgbGVuKTtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBNbFN0cmluZ1JlYWRlciAocywgaSkgeyB0aGlzLnMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpOyB0aGlzLmkgPSBpOyB9XG5NbFN0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCA+PiAxNikgfCBzLmNoYXJDb2RlQXQoaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5zLnN1YnN0cmluZyhpLCBpICsgbGVuKSk7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgdmFyIHMgPSB0aGlzLnM7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgZm9yKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICBiW2pdID0gcy5jaGFyQ29kZUF0KGkgKyBqKTtcbiAgICB9XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gYjtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBCaWdTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBCaWdTdHJpbmdSZWFkZXIgKGJzLCBpKSB7IHRoaXMucyA9IGJzOyB0aGlzLmkgPSBpOyB9XG5CaWdTdHJpbmdSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCA4KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSlcbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgMjQgPj4gMTYpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMykgICAgICAgICApID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgYXJyID0gbmV3IEFycmF5KGxlbilcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspe1xuICAgICAgYXJyW2pdID0gY2FtbF9iYV9nZXRfMSh0aGlzLnMsIGkraik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGFycik7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgb2Zmc2V0ID0gdGhpcy5vZmZzZXQoaSk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gdGhpcy5zLmRhdGEuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pO1xuICB9XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKGEpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoY2FtbF9pbnQ2NF9vZl9ieXRlcyAoYSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKHMsIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocyksIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gIHNpemVbMF0gPSA4O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyAodCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tYXJzaGFsKHdyaXRlciwgdiwgc2l6ZXMpIHtcbiAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzICh2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHdyaXRlci53cml0ZSAoOCwgYltpXSk7XG4gIHNpemVzWzBdID0gODsgc2l6ZXNbMV0gPSA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX3VubWFyc2hhbFxuZnVuY3Rpb24gY2FtbF9pbnQzMl91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc2l6ZVswXSA9IDQ7XG4gIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc3dpdGNoIChyZWFkZXIucmVhZDh1ICgpKSB7XG4gIGNhc2UgMTpcbiAgICBzaXplWzBdID0gNDtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gIGNhc2UgMjpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IG5hdGl2ZSBpbnRlZ2VyIHZhbHVlIHRvbyBsYXJnZVwiKTtcbiAgZGVmYXVsdDogY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG5hdGl2ZSBpbnRlZ2VyXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF91bm1hcnNoYWwsIGNhbWxfaW50NjRfbWFyc2hhbCwgY2FtbF9pbnQ2NF9jb21wYXJlLCBjYW1sX2ludDY0X2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsLCBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2VyaWFsaXplLCBjYW1sX2JhX2Rlc2VyaWFsaXplLCBjYW1sX2JhX2NvbXBhcmUsIGNhbWxfYmFfaGFzaFxudmFyIGNhbWxfY3VzdG9tX29wcyA9XG4gICAge1wiX2pcIjoge1xuICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDY0X3VubWFyc2hhbCxcbiAgICAgIHNlcmlhbGl6ZSAgOiBjYW1sX2ludDY0X21hcnNoYWwsXG4gICAgICBmaXhlZF9sZW5ndGggOiA4LFxuICAgICAgY29tcGFyZSA6IGNhbWxfaW50NjRfY29tcGFyZSxcbiAgICAgIGhhc2ggOiBjYW1sX2ludDY0X2hhc2hcbiAgICB9LFxuICAgICBcIl9pXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50MzJfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX25cIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycmF5XCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnJheVwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9LFxuICAgICBcIl9iaWdhcnIwMlwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyMDJcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfVxuICAgIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcykge1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgdmFyIG4gPSBjICYgMHg3RjtcbiAgICB3aGlsZSAoKGMgJiAweDgwKSAhPSAwKSB7XG4gICAgICBjID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIG43ID0gbiA8PCA3O1xuICAgICAgaWYgKG4gIT0gbjcgPj4gNykgb3ZlcmZsb3dbMF0gPSB0cnVlO1xuICAgICAgbiA9IG43IHwgKGMgJiAweDdGKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cbiAgdmFyIG1hZ2ljID0gcmVhZGVyLnJlYWQzMnUgKClcbiAgc3dpdGNoKG1hZ2ljKXtcbiAgY2FzZSAweDg0OTVBNkJFOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICB2YXIgY29tcHJlc3NlZCA9IDA7XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IGRhdGFfbGVuO1xuICAgIHZhciBudW1fb2JqZWN0cyA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV8zMiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV82NCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByZWFkZXIucmVhZDh1KCkgJiAweDNGO1xuICAgIHZhciBjb21wcmVzc2VkID0gMTtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciB1bmNvbXByZXNzZWRfZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgbnVtX29iamVjdHMgPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgX3NpemVfMzIgPSByZWFkdmxxIChvdmVyZmxvdyk7XG4gICAgdmFyIF9zaXplXzY0ID0gcmVhZHZscSAob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIHRoaXMgcGxhdGZvcm1cIik7XG4gICAgfVxuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRjogLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi9cbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gYSAzMi1iaXQgcGxhdGZvcm1cIik7XG4gICAgYnJlYWtcbiAgZGVmYXVsdDpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogYmFkIG9iamVjdFwiKTtcbiAgICBicmVhaztcbiAgfVxuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGludGVybl9vYmpfdGFibGUgPSAobnVtX29iamVjdHMgPiAwKT9bXTpudWxsO1xuICB2YXIgb2JqX2NvdW50ZXIgPSAwO1xuICBmdW5jdGlvbiBpbnRlcm5fcmVjIChyZWFkZXIpIHtcbiAgICB2YXIgY29kZSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgaWYgKGNvZGUgPj0gMHg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8pIHtcbiAgICAgIGlmIChjb2RlID49IDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8pIHtcbiAgICAgICAgdmFyIHRhZyA9IGNvZGUgJiAweEY7XG4gICAgICAgIHZhciBzaXplID0gKGNvZGUgPj4gNCkgJiAweDc7XG4gICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlXG4gICAgICAgIHJldHVybiAoY29kZSAmIDB4M0YpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY29kZSA+PSAweDIwLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyAqLykge1xuICAgICAgICB2YXIgbGVuID0gY29kZSAmIDB4MUY7XG4gICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2goY29kZSkge1xuICAgICAgICBjYXNlIDB4MDA6IC8vY3N0LkNPREVfSU5UODpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQ4cyAoKTtcbiAgICAgICAgY2FzZSAweDAxOiAvL2NzdC5DT0RFX0lOVDE2OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDE2cyAoKTtcbiAgICAgICAgY2FzZSAweDAyOiAvL2NzdC5DT0RFX0lOVDMyOlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbiAgICAgICAgY2FzZSAweDAzOiAvL2NzdC5DT0RFX0lOVDY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW50ZWdlciB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwNDogLy9jc3QuQ09ERV9TSEFSRUQ4OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA1OiAvL2NzdC5DT0RFX1NIQVJFRDE2OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDE2dSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNjogLy9jc3QuQ09ERV9TSEFSRUQzMjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDg6IC8vY3N0LkNPREVfQkxPQ0szMjpcbiAgICAgICAgICB2YXIgaGVhZGVyID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgdmFyIHRhZyA9IGhlYWRlciAmIDB4RkY7XG4gICAgICAgICAgdmFyIHNpemUgPSBoZWFkZXIgPj4gMTA7XG4gICAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEzOiAvL2NzdC5DT0RFX0JMT0NLNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogZGF0YSBibG9jayB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwOTogLy9jc3QuQ09ERV9TVFJJTkc4OlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQTogLy9jc3QuQ09ERV9TVFJJTkczMjpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBDOiAvL2NzdC5DT0RFX0RPVUJMRV9MSVRUTEU6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFs3IC0gaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEI6IC8vY3N0LkNPREVfRE9VQkxFX0JJRzpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0W2ldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBFOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEQ6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwNzogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEY6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTA6IC8vY3N0LkNPREVfQ09ERVBPSU5URVI6XG4gICAgICAgIGNhc2UgMHgxMTogLy9jc3QuQ09ERV9JTkZJWFBPSU5URVI6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogY29kZSBwb2ludGVyXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MTI6IC8vY3N0LkNPREVfQ1VTVE9NOlxuICAgICAgICBjYXNlIDB4MTg6IC8vY3N0LkNPREVfQ1VTVE9NX0xFTjpcbiAgICAgICAgY2FzZSAweDE5OiAvL2NzdC5DT0RFX0NVU1RPTV9GSVhFRDpcbiAgICAgICAgICB2YXIgYywgcyA9IFwiXCI7XG4gICAgICAgICAgd2hpbGUgKChjID0gcmVhZGVyLnJlYWQ4dSAoKSkgIT0gMCkgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlIChjKTtcbiAgICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW3NdO1xuICAgICAgICAgIHZhciBleHBlY3RlZF9zaXplO1xuICAgICAgICAgIGlmKCFvcHMpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHVua25vd24gY3VzdG9tIGJsb2NrIGlkZW50aWZpZXJcIik7XG4gICAgICAgICAgc3dpdGNoKGNvZGUpe1xuICAgICAgICAgIGNhc2UgMHgxMjogLy8gY3N0LkNPREVfQ1VTVE9NIChkZXByZWNhdGVkKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE5OiAvLyBjc3QuQ09ERV9DVVNUT01fRklYRURcbiAgICAgICAgICAgIGlmKCFvcHMuZml4ZWRfbGVuZ3RoKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGV4cGVjdGVkIGEgZml4ZWQtc2l6ZSBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gb3BzLmZpeGVkX2xlbmd0aDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxODogLy8gY3N0LkNPREVfQ1VTVE9NX0xFTlxuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgICAgLy8gU2tpcCBzaXplNjRcbiAgICAgICAgICAgIHJlYWRlci5yZWFkMzJzKCk7IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSByZWFkZXIuaTtcbiAgICAgICAgICB2YXIgc2l6ZSA9IFswXTtcbiAgICAgICAgICB2YXIgdiA9IG9wcy5kZXNlcmlhbGl6ZShyZWFkZXIsIHNpemUpO1xuICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gc2l6ZVswXSlcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbmNvcnJlY3QgbGVuZ3RoIG9mIHNlcmlhbGl6ZWQgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBtZXNzYWdlXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmKGNvbXByZXNzZWQpIHtcbiAgICBpZihjYW1sX2RlY29tcHJlc3NfaW5wdXQpIHtcbiAgICAgIHZhciBkYXRhID0gcmVhZGVyLnJlYWR1aW50OGFycmF5KGRhdGFfbGVuKTtcbiAgICAgIHZhciByZXMgPSBuZXcgVWludDhBcnJheSh1bmNvbXByZXNzZWRfZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IGNhbWxfZGVjb21wcmVzc19pbnB1dChkYXRhLCByZXMpO1xuICAgICAgdmFyIHJlYWRlciA9IG5ldyBVSW50OEFycmF5UmVhZGVyKHJlcywgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY29tcHJlc3NlZCBvYmplY3QsIGNhbm5vdCBkZWNvbXByZXNzXCIpO1xuICAgIH1cbiAgfVxuICB2YXIgcmVzID0gaW50ZXJuX3JlYyAocmVhZGVyKTtcbiAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgc2l6ZSA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciB2ID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIGQgPSB2Lmxlbmd0aDtcbiAgICBpZiAoZCA8IHNpemUpIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgdltkXSA9IGludGVybl9yZWMgKHJlYWRlcik7XG4gIH1cbiAgaWYgKHR5cGVvZiBvZnMhPVwibnVtYmVyXCIpIG9mc1swXSA9IHJlYWRlci5pO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDIwXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuLy9WZXJzaW9uOiA+PSA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDE2XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG5mdW5jdGlvbiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIChzLCBvZnMpIHtcbiAgdmFyIHIgPSBuZXcgVUludDhBcnJheVJlYWRlcihjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpLCBvZnMpO1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N0Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT0gMCkge1xuICAgICAgYyA9IHIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPSBuNyA+PiA3KSBvdmVyZmxvd1swXSA9IHRydWU7XG4gICAgICBuID0gbjcgfCAoYyAmIDB4N0YpO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfVxuXG4gIHN3aXRjaChyLnJlYWQzMnUoKSl7XG4gIGNhc2UgMHg4NDk1QTZCRTogLyogSW50ZXh0X21hZ2ljX251bWJlcl9zbWFsbCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gMjA7XG4gICAgdmFyIGRhdGFfbGVuID0gci5yZWFkMzJ1KCk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByLnJlYWQ4dSgpICYgMHgzRjtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gdGhpcyBwbGF0Zm9ybVwiKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJGOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2JpZyAqL1xuICBkZWZhdWx0OlxuICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogYmFkIG9iamVjdFwiKTtcbiAgICBicmVha1xuICB9XG4gIHJldHVybiBoZWFkZXJfbGVuIC0gY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplICsgZGF0YV9sZW47XG59XG5cbi8vUHJvdmlkZXM6IE1sT2JqZWN0VGFibGVcbnZhciBNbE9iamVjdFRhYmxlO1xuaWYgKHR5cGVvZiBnbG9iYWxUaGlzLk1hcCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIC8qIHBvbHlmaWxsICh1c2luZyBsaW5lYXIgc2VhcmNoKSAqL1xuICAgIGZ1bmN0aW9uIE5haXZlTG9va3VwKG9ianMpIHsgdGhpcy5vYmpzID0gb2JqczsgfVxuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbih2KSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub2Jqcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGhpcy5vYmpzW2ldID09PSB2KSByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9O1xuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIC8vIERvIG5vdGhpbmcgaGVyZS4gW01sT2JqZWN0VGFibGUuc3RvcmVdIHdpbGwgcHVzaCB0byBbdGhpcy5vYmpzXSBkaXJlY3RseS5cbiAgICB9O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgTmFpdmVMb29rdXAodGhpcy5vYmpzKTtcbiAgICB9O1xuICB9KCk7XG59XG5lbHNlIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgdGhpcy5vYmpzID0gW107IHRoaXMubG9va3VwID0gbmV3IGdsb2JhbFRoaXMuTWFwKCk7XG4gIH07XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnN0b3JlID0gZnVuY3Rpb24odikge1xuICB0aGlzLmxvb2t1cC5zZXQodiwgdGhpcy5vYmpzLmxlbmd0aCk7XG4gIHRoaXMub2Jqcy5wdXNoKHYpO1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5yZWNhbGwgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBpID0gdGhpcy5sb29rdXAuZ2V0KHYpO1xuICByZXR1cm4gKGkgPT09IHVuZGVmaW5lZClcbiAgICA/IHVuZGVmaW5lZCA6IHRoaXMub2Jqcy5sZW5ndGggLSBpOyAgIC8qIGluZGV4IGlzIHJlbGF0aXZlICovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBNbE9iamVjdFRhYmxlLCBjYW1sX2xpc3RfdG9fanNfYXJyYXksIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xudmFyIGNhbWxfb3V0cHV0X3ZhbCA9IGZ1bmN0aW9uICgpe1xuICBmdW5jdGlvbiBXcml0ZXIgKCkgeyB0aGlzLmNodW5rID0gW107IH1cbiAgV3JpdGVyLnByb3RvdHlwZSA9IHtcbiAgICBjaHVua19pZHg6MjAsIGJsb2NrX2xlbjowLCBvYmpfY291bnRlcjowLCBzaXplXzMyOjAsIHNpemVfNjQ6MCxcbiAgICB3cml0ZTpmdW5jdGlvbiAoc2l6ZSwgdmFsdWUpIHtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2F0OmZ1bmN0aW9uIChwb3MsIHNpemUsIHZhbHVlKSB7XG4gICAgICB2YXIgcG9zID0gcG9zO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbcG9zKytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2NvZGU6ZnVuY3Rpb24gKHNpemUsIGNvZGUsIHZhbHVlKSB7XG4gICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gY29kZTtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX3NoYXJlZDpmdW5jdGlvbiAob2Zmc2V0KSB7XG4gICAgICBpZiAob2Zmc2V0IDwgKDEgPDwgOCkpIHRoaXMud3JpdGVfY29kZSg4LCAweDA0IC8qY3N0LkNPREVfU0hBUkVEOCovLCBvZmZzZXQpO1xuICAgICAgZWxzZSBpZiAob2Zmc2V0IDwgKDEgPDwgMTYpKSB0aGlzLndyaXRlX2NvZGUoMTYsIDB4MDUgLypjc3QuQ09ERV9TSEFSRUQxNiovLCBvZmZzZXQpO1xuICAgICAgZWxzZSB0aGlzLndyaXRlX2NvZGUoMzIsIDB4MDYgLypjc3QuQ09ERV9TSEFSRUQzMiovLCBvZmZzZXQpO1xuICAgIH0sXG4gICAgcG9zOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuY2h1bmtfaWR4IH0sXG4gICAgZmluYWxpemU6ZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5ibG9ja19sZW4gPSB0aGlzLmNodW5rX2lkeCAtIDIwO1xuICAgICAgdGhpcy5jaHVua19pZHggPSAwO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIDB4ODQ5NUE2QkUpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuYmxvY2tfbGVuKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLm9ial9jb3VudGVyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfMzIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV82NCk7XG4gICAgICByZXR1cm4gdGhpcy5jaHVuaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICh2LCBmbGFncykge1xuICAgIGZsYWdzID0gY2FtbF9saXN0X3RvX2pzX2FycmF5KGZsYWdzKTtcblxuICAgIHZhciBub19zaGFyaW5nID0gKGZsYWdzLmluZGV4T2YoMCAvKk1hcnNoYWwuTm9fc2hhcmluZyovKSAhPT0gLTEpLFxuICAgICAgICBjbG9zdXJlcyA9ICAoZmxhZ3MuaW5kZXhPZigxIC8qTWFyc2hhbC5DbG9zdXJlcyovKSAhPT0gLTEpO1xuICAgIC8qIE1hcnNoYWwuQ29tcGF0XzMyIGlzIHJlZHVuZGFudCBzaW5jZSBpbnRlZ2VycyBhcmUgMzItYml0IGFueXdheSAqL1xuXG4gICAgaWYgKGNsb3N1cmVzKVxuICAgICAgY29uc29sZS53YXJuKFwiaW4gY2FtbF9vdXRwdXRfdmFsOiBmbGFnIE1hcnNoYWwuQ2xvc3VyZXMgaXMgbm90IHN1cHBvcnRlZC5cIik7XG5cbiAgICB2YXIgd3JpdGVyID0gbmV3IFdyaXRlciAoKTtcbiAgICB2YXIgc3RhY2sgPSBbXTtcbiAgICB2YXIgaW50ZXJuX29ial90YWJsZSA9IG5vX3NoYXJpbmcgPyBudWxsIDogbmV3IE1sT2JqZWN0VGFibGUoKTtcblxuICAgIGZ1bmN0aW9uIG1lbW8odikge1xuICAgICAgaWYgKG5vX3NoYXJpbmcpIHJldHVybiBmYWxzZTtcbiAgICAgIHZhciBleGlzdGluZ19vZmZzZXQgPSBpbnRlcm5fb2JqX3RhYmxlLnJlY2FsbCh2KTtcbiAgICAgIGlmIChleGlzdGluZ19vZmZzZXQpIHsgd3JpdGVyLndyaXRlX3NoYXJlZChleGlzdGluZ19vZmZzZXQpOyByZXR1cm4gdHJ1ZTsgfVxuICAgICAgZWxzZSB7IGludGVybl9vYmpfdGFibGUuc3RvcmUodik7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVybl9yZWMgKHYpIHtcbiAgICAgIGlmICh2LmNhbWxfY3VzdG9tKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBuYW1lID0gdi5jYW1sX2N1c3RvbTtcbiAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tuYW1lXTtcbiAgICAgICAgdmFyIHN6XzMyXzY0ID0gWzAsMF07XG4gICAgICAgIGlmKCFvcHMuc2VyaWFsaXplKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEN1c3RvbSlcIik7XG4gICAgICAgIGlmKG9wcy5maXhlZF9sZW5ndGggPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTggLypjc3QuQ09ERV9DVVNUT01fTEVOKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIGhlYWRlcl9wb3MgPSB3cml0ZXIucG9zICgpO1xuICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wcy5zZXJpYWxpemUod3JpdGVyLCB2LCBzel8zMl82NCk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MsIDMyLCBzel8zMl82NFswXSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MgKyA0LCAzMiwgMCk7IC8vIHplcm9cbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDgsIDMyLCBzel8zMl82NFsxXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDE5IC8qY3N0LkNPREVfQ1VTVE9NX0ZJWEVEKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSB3cml0ZXIucG9zKCk7XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICBpZiAob3BzLmZpeGVkX2xlbmd0aCAhPSB3cml0ZXIucG9zKCkgLSBvbGRfcG9zKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogaW5jb3JyZWN0IGZpeGVkIHNpemVzIHNwZWNpZmllZCBieSBcIiArIG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDIgKyAoKHN6XzMyXzY0WzBdICsgMykgPj4gMik7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDIgKyAoKHN6XzMyXzY0WzFdICsgNykgPj4gMyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgICAgaWYgKHZbMF0gPT0gMjUxKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEFic3RyYWN0KVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICBpZiAodi5sZW5ndGggPiAxICYmIG1lbW8odikpIHJldHVybjtcbiAgICAgICAgaWYgKHZbMF0gPCAxNiAmJiB2Lmxlbmd0aCAtIDEgPCA4KVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLyArIHZbMF0gKyAoKHYubGVuZ3RoIC0gMSk8PDQpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDA4IC8qY3N0LkNPREVfQkxPQ0szMiovLCAoKHYubGVuZ3RoLTEpIDw8IDEwKSB8IHZbMF0pO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSB2Lmxlbmd0aDtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gdi5sZW5ndGg7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEpIHN0YWNrLnB1c2ggKHYsIDEpO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICAgIGlmKCEoY2FtbF9pc19tbF9ieXRlcyhjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpKSkpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBbQnl0ZXMudF0gY2Fubm90IHNhZmVseSBiZSBtYXJzaGFsZWQgd2l0aCBbLS1lbmFibGUgdXNlLWpzLXN0cmluZ11cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDgsIDB4MDkvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICgzMiwgMHgwQSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCBsZW47aSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodiAhPSAodnwwKSl7XG4gICAgICAgICAgdmFyIHR5cGVfb2ZfdiA9IHR5cGVvZiB2O1xuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gSWYgYSBmbG9hdCBoYXBwZW5zIHRvIGJlIGFuIGludGVnZXIgaXQgaXMgc2VyaWFsaXplZCBhcyBhbiBpbnRlZ2VyXG4gICAgICAgICAgLy8gKEpzX29mX29jYW1sIGNhbm5vdCB0ZWxsIHdoZXRoZXIgdGhlIHR5cGUgb2YgYW4gaW50ZWdlciBudW1iZXIgaXNcbiAgICAgICAgICAvLyBmbG9hdCBvciBpbnRlZ2VyLikgVGhpcyBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgY3Jhc2hlcyB3aGVuXG4gICAgICAgICAgLy8gdW5tYXJzaGFsbGluZyB1c2luZyB0aGUgc3RhbmRhcmQgcnVudGltZS4gSXQgc2VlbXMgYmV0dGVyIHRvXG4gICAgICAgICAgLy8gc3lzdGVtYXRpY2FsbHkgZmFpbCBvbiBtYXJzaGFsbGluZy5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vICAgICAgICAgIGlmKHR5cGVfb2ZfdiAhPSBcIm51bWJlclwiKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChcIit0eXBlX29mX3YrXCIpXCIpO1xuICAgICAgICAgIC8vICAgICAgICAgIHZhciB0ID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQodikpO1xuICAgICAgICAgIC8vICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgwQiAvKmNzdC5DT0RFX0RPVUJMRV9CSUcqLyk7XG4gICAgICAgICAgLy8gICAgICAgICAgZm9yKHZhciBpID0gMDsgaTw4OyBpKyspe3dyaXRlci53cml0ZSg4LHRbaV0pfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHYgPj0gMCAmJiB2IDwgMHg0MCkge1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMFg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8gKyB2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodiA+PSAtKDEgPDwgNykgJiYgdiA8ICgxIDw8IDcpKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoOCwgMHgwMCAvKmNzdC5DT0RFX0lOVDgqLywgdik7XG4gICAgICAgICAgZWxzZSBpZiAodiA+PSAtKDEgPDwgMTUpICYmIHYgPCAoMSA8PCAxNSkpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgxNiwgMHgwMSAvKmNzdC5DT0RFX0lOVDE2Ki8sIHYpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDAyIC8qY3N0LkNPREVfSU5UMzIqLywgdik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZXh0ZXJuX3JlYyAodik7XG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBpID0gc3RhY2sucG9wICgpO1xuICAgICAgdmFyIHYgPSBzdGFjay5wb3AgKCk7XG4gICAgICBpZiAoaSArIDEgPCB2Lmxlbmd0aCkgc3RhY2sucHVzaCAodiwgaSArIDEpO1xuICAgICAgZXh0ZXJuX3JlYyAodltpXSk7XG4gICAgfVxuICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSB3cml0ZXIub2JqX2NvdW50ZXIgPSBpbnRlcm5fb2JqX3RhYmxlLm9ianMubGVuZ3RoO1xuICAgIHdyaXRlci5maW5hbGl6ZSgpO1xuICAgIHJldHVybiB3cml0ZXIuY2h1bms7XG4gIH1cbn0gKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfc3RyaW5nX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzICh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9mYWlsd2l0aCwgY2FtbF9ibGl0X2J5dGVzXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIgKHMsIG9mcywgbGVuLCB2LCBmbGFncykge1xuICB2YXIgdCA9IGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpO1xuICBpZiAodC5sZW5ndGggPiBsZW4pIGNhbWxfZmFpbHdpdGggKFwiTWFyc2hhbC50b19idWZmZXI6IGJ1ZmZlciBvdmVyZmxvd1wiKTtcbiAgY2FtbF9ibGl0X2J5dGVzKHQsIDAsIHMsIG9mcywgdC5sZW5ndGgpO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSW9cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZmRzXG52YXIgY2FtbF9zeXNfZmRzID0gbmV3IEFycmF5KDMpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jbG9zZVxuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG5mdW5jdGlvbiBjYW1sX3N5c19jbG9zZShmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUpIGZpbGUuY2xvc2UoKTtcbiAgZGVsZXRlIGNhbWxfc3lzX2Zkc1tmZF07XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBNbEZha2VGZF9vdXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUsaWR4KSB7XG4gIGlmKGlkeCA9PSB1bmRlZmluZWQpe1xuICAgIGlkeCA9IGNhbWxfc3lzX2Zkcy5sZW5ndGg7XG4gIH1cbiAgY2FtbF9zeXNfZmRzW2lkeF0gPSBmaWxlO1xuICByZXR1cm4gaWR4IHwgMDtcbn1cbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW4gKG5hbWUsIGZsYWdzLCBfcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUoZmxhZ3Mpe1xuICAgIHN3aXRjaChmbGFnc1sxXSl7XG4gICAgY2FzZSAwOiBmLnJkb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAxOiBmLndyb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAyOiBmLmFwcGVuZCA9IDE7YnJlYWs7XG4gICAgY2FzZSAzOiBmLmNyZWF0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA0OiBmLnRydW5jYXRlID0gMTticmVhaztcbiAgICBjYXNlIDU6IGYuZXhjbCA9IDE7IGJyZWFrO1xuICAgIGNhc2UgNjogZi5iaW5hcnkgPSAxO2JyZWFrO1xuICAgIGNhc2UgNzogZi50ZXh0ID0gMTticmVhaztcbiAgICBjYXNlIDg6IGYubm9uYmxvY2sgPSAxO2JyZWFrO1xuICAgIH1cbiAgICBmbGFncz1mbGFnc1syXTtcbiAgfVxuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3QsZik7XG4gIHJldHVybiBjYW1sX3N5c19vcGVuX2ludGVybmFsIChmaWxlLCB1bmRlZmluZWQpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gZmlsZShmZCwgZmxhZ3MpIHtcbiAgICBpZihmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgICByZXR1cm4gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3MpO1xuICAgIH1cbiAgICBlbHNlXG4gICAgICByZXR1cm4gbmV3IE1sRmFrZUZkX291dChmZCwgZmxhZ3MpXG4gIH1cbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDAse3Jkb25seToxLGFsdG5hbWU6XCIvZGV2L3N0ZGluXCIsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAwKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDEse2J1ZmZlcmVkOjIsd3Jvbmx5OjEsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAxKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDIse2J1ZmZlcmVkOjIsd3Jvbmx5OjEsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAyKTtcbn0pKClcblxuXG4vLyBvY2FtbCBDaGFubmVsc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZShjaGFuaWQsIG5hbWUpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4ubmFtZSA9IG5hbWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxzXG52YXIgY2FtbF9tbF9jaGFubmVscyA9IG5ldyBBcnJheSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dF9jaGFubmVsc19saXN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX291dF9jaGFubmVsc19saXN0ICgpIHtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGMgPSAwOyBjIDwgY2FtbF9tbF9jaGFubmVscy5sZW5ndGg7IGMrKyl7XG4gICAgaWYoY2FtbF9tbF9jaGFubmVsc1tjXSAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm9wZW5lZCAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm91dClcbiAgICAgIGw9WzAsY2FtbF9tbF9jaGFubmVsc1tjXS5mZCxsXTtcbiAgfVxuICByZXR1cm4gbDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5cbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCAoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlLmZsYWdzLnJkb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyByZWFkb25seVwiKTtcbiAgdmFyIGJ1ZmZlcmVkID0gKGZpbGUuZmxhZ3MuYnVmZmVyZWQgIT09IHVuZGVmaW5lZCkgPyBmaWxlLmZsYWdzLmJ1ZmZlcmVkIDogMTtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OnRydWUsXG4gICAgYnVmZmVyX2N1cnI6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIGJ1ZmZlcmVkOmJ1ZmZlcmVkXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiAoZmQpICB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZS5mbGFncy53cm9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgd3JpdGVvbmx5XCIpO1xuICB2YXIgcmVmaWxsID0gbnVsbDtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OiBmYWxzZSxcbiAgICBidWZmZXJfY3VycjowLFxuICAgIGJ1ZmZlcl9tYXg6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIHJlZmlsbDpyZWZpbGxcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luX3dpdGhfZmxhZ3MoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luKGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0X3dpdGhfZmxhZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzKGZkLCBmbGFncyl7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQoZmQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuLy9BbGlhczogd2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsXG5mdW5jdGlvbiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvcihjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4uZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZShjaGFuaWQsbW9kZSl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLmZpbGUuZmxhZ3MudGV4dCA9ICFtb2RlXG4gIGNoYW4uZmlsZS5mbGFncy5iaW5hcnkgPSBtb2RlXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lzX2JpbmFyeV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9pc19iaW5hcnlfbW9kZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5IFxufVxuXG4vL0lucHV0IGZyb20gaW5fY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2Nsb3NlX2NoYW5uZWxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Nsb3NlXG5mdW5jdGlvbiBjYW1sX21sX2Nsb3NlX2NoYW5uZWwgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5vcGVuZWQgPSBmYWxzZTtcbiAgY2FtbF9zeXNfY2xvc2UoY2hhbi5mZClcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZpbGUubGVuZ3RoKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0KGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2hhbi5maWxlLmxlbmd0aCAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dChjaGFuaWQsZikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5vdXRwdXQgPSAoZnVuY3Rpb24gKHMpIHtmKHMpfSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGwoY2hhbmlkLGYpIHtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLnJlZmlsbCA9IGY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWZpbGwgKGNoYW4pIHtcbiAgaWYoY2hhbi5yZWZpbGwgIT0gbnVsbCl7XG4gICAgdmFyIHN0ciA9IGNoYW4ucmVmaWxsKCk7XG4gICAgdmFyIHN0cl9hID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoc3RyKTtcbiAgICBpZiAoc3RyX2EubGVuZ3RoID09IDApIHtcbiAgICAgIGNoYW4ucmVmaWxsID0gbnVsbFxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKGNoYW4uYnVmZmVyLmxlbmd0aCA8IGNoYW4uYnVmZmVyX21heCArIHN0cl9hLmxlbmd0aCl7XG4gICAgICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkoY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKTtcbiAgICAgICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgICAgICBjaGFuLmJ1ZmZlciA9IGI7XG4gICAgICB9XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoc3RyX2EsY2hhbi5idWZmZXJfbWF4KTtcbiAgICAgIGNoYW4ub2Zmc2V0ICs9IHN0cl9hLmxlbmd0aDtcbiAgICAgIGNoYW4uYnVmZmVyX21heCArPSBzdHJfYS5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBucmVhZCA9IGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LCBjaGFuLmJ1ZmZlciwgY2hhbi5idWZmZXJfbWF4LCBjaGFuLmJ1ZmZlci5sZW5ndGggLSBjaGFuLmJ1ZmZlcl9tYXgpO1xuICAgIGNoYW4ub2Zmc2V0ICs9IG5yZWFkO1xuICAgIGNoYW4uYnVmZmVyX21heCArPSBucmVhZDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0IChjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheVxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9iaWdhcnJheSAoY2hhbmlkLCBiLCBpLCBsKSB7XG4gIHZhciBiYSA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYik7XG4gIHJldHVybiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2Jsb2NrIChjaGFuaWQsIGJhLCBpLCBsKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgbiA9IGw7XG4gIHZhciBhdmFpbCA9IGNoYW4uYnVmZmVyX21heCAtIGNoYW4uYnVmZmVyX2N1cnI7XG4gIGlmKGwgPD0gYXZhaWwpIHtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gbDtcbiAgfVxuICBlbHNlIGlmKGF2YWlsID4gMCkge1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBhdmFpbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYXZhaWw7XG4gICAgbiA9IGF2YWlsO1xuICB9IGVsc2Uge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgICBpZihuID4gYXZhaWwpIG4gPSBhdmFpbDtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgbiksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gbjtcbiAgfVxuICByZXR1cm4gbiB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcywgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWUgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIGhlYWRlciA9IG5ldyBVaW50OEFycmF5KGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGZ1bmN0aW9uIGJsb2NrKGJ1ZmZlciwgb2Zmc2V0LCBuKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHdoaWxlKHIgPCBuKXtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KXtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KVxuICAgICAgICBicmVhaztcbiAgICAgIGJ1ZmZlcltvZmZzZXQrcl0gPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIrKztcbiAgICAgIHIrKztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cbiAgdmFyIHIgPSBibG9jayhoZWFkZXIsIDAsIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGlmKHIgPT0gMClcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIGVsc2UgaWYgKHIgPCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB0cnVuY2F0ZWQgb2JqZWN0XCIpO1xuICB2YXIgbGVuID0gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAoY2FtbF9ieXRlc19vZl9hcnJheShoZWFkZXIpLCAwKTtcbiAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbiArIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGJ1Zi5zZXQoaGVhZGVyLDApO1xuICB2YXIgciA9IGJsb2NrKGJ1ZiwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplLCBsZW4pXG4gIGlmKHIgPCBsZW4pXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB0cnVuY2F0ZWQgb2JqZWN0IFwiICsgciArIFwiICBcIiArIGxlbik7XG4gIHZhciBvZmZzZXQgPSBbMF07XG4gIHZhciByZXMgPSBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBvZmZzZXQpO1xuICBjaGFuLm9mZnNldCA9IGNoYW4ub2Zmc2V0ICsgb2Zmc2V0WzBdO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX3RvX291dHNpZGVfaGVhcFxuLy9SZXF1aXJlczogY2FtbF9pbnB1dF92YWx1ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXAoYykge1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZShjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9jaGFyIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KXtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICB9XG4gIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heClcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIHZhciByZXMgPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgY2hhbi5idWZmZXJfY3VycisrO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9jaGFyLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2ludCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDQ7IGkrKyl7XG4gICAgcmVzID0gKHJlcyA8PCA4KSArIGNhbWxfbWxfaW5wdXRfY2hhcihjaGFuaWQpIHwgMDtcbiAgfVxuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9zZWVrX2luKGNoYW5pZCwgcG9zKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZiAoY2hhbi5yZWZpbGwgIT0gbnVsbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJJbGxlZ2FsIHNlZWtcIik7XG4gIGlmKHBvcyA+PSBjaGFuLm9mZnNldCAtIGNoYW4uYnVmZmVyX21heFxuICAgICAmJiBwb3MgPD0gY2hhbi5vZmZzZXRcbiAgICAgJiYgY2hhbi5maWxlLmZsYWdzLmJpbmFyeSkge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSBjaGFuLmJ1ZmZlcl9tYXggLSAoY2hhbi5vZmZzZXQgLSBwb3MpO1xuICB9IGVsc2Uge1xuICAgIGNoYW4ub2Zmc2V0ID0gcG9zO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pblxuLy9SZXF1aXJlczogY2FtbF9zZWVrX2luXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW4oY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9zZWVrX2luXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW5fNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgLSAoY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycikgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9wb3NfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luKGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9wb3NfaW4oY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX2luXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbl82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2FtbF9wb3NfaW4oY2hhbmlkKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBwID0gY2hhbi5idWZmZXJfY3VycjtcbiAgZG8ge1xuICAgIGlmKHAgPj0gY2hhbi5idWZmZXJfbWF4KSB7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID4gMCkge1xuICAgICAgICBjaGFuLmJ1ZmZlci5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VyciksMCk7XG4gICAgICAgIHAgLT0gY2hhbi5idWZmZXJfY3VycjtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4IC09IGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgICAgfVxuICAgICAgaWYoY2hhbi5idWZmZXJfbWF4ID49IGNoYW4uYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLShjaGFuLmJ1ZmZlcl9tYXgpIHwgMDtcbiAgICAgIH1cbiAgICAgIHZhciBwcmV2X21heCA9IGNoYW4uYnVmZmVyX21heDtcbiAgICAgIGNhbWxfcmVmaWxsIChjaGFuKTtcbiAgICAgIGlmKHByZXZfbWF4ID09IGNoYW4uYnVmZmVyX21heCkge1xuICAgICAgICByZXR1cm4gLShjaGFuLmJ1ZmZlcl9tYXgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH0gd2hpbGUgKGNoYW4uYnVmZmVyW3ArK10gIT0gMTApO1xuICByZXR1cm4gKHAgLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZmx1c2hcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3QgZmx1c2ggYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgaWYoIWNoYW4uYnVmZmVyIHx8IGNoYW4uYnVmZmVyX2N1cnIgPT0gMCkgcmV0dXJuIDA7XG4gIGlmKGNoYW4ub3V0cHV0KSB7XG4gICAgY2hhbi5vdXRwdXQoY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKSk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5maWxlLndyaXRlKGNoYW4ub2Zmc2V0LCBjaGFuLmJ1ZmZlciwgMCwgY2hhbi5idWZmZXJfY3Vycik7XG4gIH1cbiAgY2hhbi5vZmZzZXQgKz0gY2hhbi5idWZmZXJfY3VycjtcbiAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL291dHB1dCB0byBvdXRfY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF90YVxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCxjYW1sX21sX2J5dGVzX2xlbmd0aFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3Qgb3V0cHV0IHRvIGEgY2xvc2VkIGNoYW5uZWxcIik7XG4gIGJ1ZmZlciA9IGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbik7XG4gIGlmKGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoID4gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShjaGFuLmJ1ZmZlcl9jdXJyICsgYnVmZmVyLmxlbmd0aCk7XG4gICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgIGNoYW4uYnVmZmVyID0gYlxuICB9XG4gIHN3aXRjaChjaGFuLmJ1ZmZlcmVkKXtcbiAgY2FzZSAwOiAvLyBVbmJ1ZmZlcmVkXG4gICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgYnJlYWtcbiAgY2FzZSAxOiAvLyBCdWZmZXJlZCAodGhlIGRlZmF1bHQpXG4gICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKVxuICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBicmVhaztcbiAgY2FzZSAyOiAvLyBCdWZmZXJlZCAob25seSBmb3Igc3Rkb3V0IGFuZCBzdGRlcnIpXG4gICAgdmFyIGlkID0gYnVmZmVyLmxhc3RJbmRleE9mKDEwKVxuICAgIGlmKGlkIDwgMCkge1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyLmxlbmd0aClcbiAgICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLnN1YmFycmF5KDAsIGlkICsgMSksIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBpZCArIDE7XG4gICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheShpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aCAtIGlkIC0gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5LCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYmlnYXJyYXkoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pO1xufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXQoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X2J5dGVzKGNoYW5pZCxjYW1sX2J5dGVzX29mX3N0cmluZyhidWZmZXIpLG9mZnNldCxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfY2hhciAoY2hhbmlkLGMpIHtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZywgY2FtbF9tbF9vdXRwdXQsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZSAoY2hhbmlkLHYsZmxhZ3MpIHtcbiAgdmFyIHMgPSBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcodiwgZmxhZ3MpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3Mpe1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm9mZnNldCA9IHBvcztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXQoY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXRfNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgKyBjaGFuLmJ1ZmZlcl9jdXJyXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dFxuLy9SZXF1aXJlczogY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19vdXQoY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX3Bvc19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dF82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQgKGNhbWxfcG9zX291dChjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2ludCAoY2hhbmlkLGkpIHtcbiAgdmFyIGFyciA9IFsoaT4+MjQpICYgMHhGRiwoaT4+MTYpICYgMHhGRiwoaT4+OCkgJiAweEZGLGkgJiAweEZGIF07XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCw0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pc19idWZmZXJlZChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5idWZmZXJlZCA/IDEgOiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2J1ZmZlcmVkXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3NldF9idWZmZXJlZChjaGFuaWQsdikge1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0uYnVmZmVyZWQgPSB2O1xuICBpZighdikgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gMFxufVxuIiwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2ModHJ1ZSk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX21ham9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2Z1bGxfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfZnVsbF9tYWpvcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYygpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogY2FtbF9nY19jb21wYWN0aW9uXG5mdW5jdGlvbiBjYW1sX2djX2NvbXBhY3Rpb24oKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvdW50ZXJzXG5mdW5jdGlvbiBjYW1sX2djX2NvdW50ZXJzKCkgeyByZXR1cm4gWzI1NCwwLDAsMF0gfVxuLy9Qcm92aWRlczogY2FtbF9nY19xdWlja19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3F1aWNrX3N0YXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc3RhdFxuZnVuY3Rpb24gY2FtbF9nY19zdGF0KCkge1xuICAvLyBBIGZpZWxkIHdhcyBhZGRlZCBpbiBPQ2FtbCA0LjEyLiBJdCBpcyB1bmxpa2VseSB0byBiZSBhbiBpc3N1ZSB0b1xuICAvLyByZXR1cm4gdG9vIG1hbnkgZmllbGRzIGluIHByZXZpb3VzIHZlcnNpb25zIG9mIE9DYW1sLlxuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX3NldFxuZnVuY3Rpb24gY2FtbF9nY19zZXQoX2NvbnRyb2wpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfZ2V0XG5mdW5jdGlvbiBjYW1sX2djX2dldCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc2V0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc2V0KF9jb250cm9sKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlZ2lzdGVyICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZVxudmFyIGFsbF9maW5hbGl6ZXJzID0gbmV3IGdsb2JhbFRoaXMuU2V0KClcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWUgKGNiLCBhKSB7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgYSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgIHZhciB4ID0gbmV3IGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkoZnVuY3Rpb24gKHgpe2FsbF9maW5hbGl6ZXJzLmRlbGV0ZSh4KTsgY2IoMCk7IHJldHVybjt9KTtcbiAgICB4LnJlZ2lzdGVyKGEseCk7XG4gICAgYWxsX2ZpbmFsaXplcnMuYWRkKHgpO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlbGVhc2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVsZWFzZSAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zdGFydFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3N0YXJ0KHJhdGUsc3RhY2tfc2l6ZSx0cmFja2VyKXtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zdG9wXG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RvcCh1bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2ZfZGlzY2FyZFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX2Rpc2NhcmQodCkgeyByZXR1cm4gMCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcmVzdW1lXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3Jlc3VtZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcGF1c2UodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnRcbmZ1bmN0aW9uIGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3Jfc2xpY2VcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3Jfc2xpY2Uod29yaykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yX3dvcmRzKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWlub3JfZnJlZVxuZnVuY3Rpb24gY2FtbF9nZXRfbWlub3JfZnJlZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2J1Y2tldFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfYnVja2V0KG4pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfY3JlZGl0XG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9jcmVkaXQobikgeyByZXR1cm4gMDsgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmQsIEFuZHkgUmF5XG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4vL1xuLy8gQmlnYXJyYXkuXG4vL1xuLy8gLSBhbGwgYmlnYXJyYXkgdHlwZXMgaW5jbHVkaW5nIEludDY0IGFuZCBDb21wbGV4LlxuLy8gLSBmb3J0cmFuICsgYyBsYXlvdXRzXG4vLyAtIHN1Yi9zbGljZS9yZXNoYXBlXG4vLyAtIHJldGFpbiBmYXN0IHBhdGggZm9yIDFkIGFycmF5IGFjY2Vzc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2luaXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYmFfaW5pdCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSB7XG4gIHZhciBuX2RpbXMgPSBkaW1zLmxlbmd0aDtcbiAgdmFyIHNpemUgPSAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG5fZGltczsgaSsrKSB7XG4gICAgaWYgKGRpbXNbaV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiBuZWdhdGl2ZSBkaW1lbnNpb25cIik7XG4gICAgc2l6ZSA9IHNpemUgKiBkaW1zW2ldO1xuICB9XG4gIHJldHVybiBzaXplO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpe1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgNzogY2FzZSAxMDogY2FzZSAxMTogcmV0dXJuIDI7XG4gIGRlZmF1bHQ6IHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSl7XG4gIHZhciB2aWV3O1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMDogIHZpZXcgPSBGbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDE6ICB2aWV3ID0gRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAyOiAgdmlldyA9IEludDhBcnJheTsgYnJlYWs7XG4gIGNhc2UgMzogIHZpZXcgPSBVaW50OEFycmF5OyBicmVhaztcbiAgY2FzZSA0OiAgdmlldyA9IEludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDU6ICB2aWV3ID0gVWludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDY6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgNzogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA4OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDk6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTA6IHZpZXcgPSBGbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDExOiB2aWV3ID0gRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAxMjogdmlldyA9IFVpbnQ4QXJyYXk7IGJyZWFrO1xuICB9XG4gIGlmICghdmlldykgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICB2YXIgZGF0YSA9IG5ldyB2aWV3KHNpemUgKiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpKTtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPCA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycmF5XCJcblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA+PSA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycjAyXCJcblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfaGkzMiwgY2FtbF9pbnQ2NF9sbzMyXG5mdW5jdGlvbiBNbF9CaWdhcnJheSAoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcblxuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IGNhbWxfYmFfY3VzdG9tX25hbWU7XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIHZhciBvZnMgPSAwO1xuICBpZih0eXBlb2YgYXJnID09PSBcIm51bWJlclwiKSBhcmcgPSBbYXJnXTtcbiAgaWYgKCEgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnYXJyYXkuanM6IGludmFsaWQgb2Zmc2V0XCIpO1xuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBhcmcubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmdldC9zZXQ6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgaWYodGhpcy5sYXlvdXQgPT0gMCAvKiBjX2xheW91dCAqLykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMCB8fCBhcmdbaV0gPj0gdGhpcy5kaW1zW2ldKVxuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIGFyZ1tpXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMuZGltcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKGFyZ1tpXSA8IDEgfHwgYXJnW2ldID4gdGhpcy5kaW1zW2ldKXtcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgfVxuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyAoYXJnW2ldIC0gMSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvZnM7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgbCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGggPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsLGgpO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIHIgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBpID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gWzI1NCwgciwgaV07XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdXG4gIH1cbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IHZbMV07XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IHZbMl07XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhW29mc10gPSB2O1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwXG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGEgPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdmFyIGIgPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgaWYoYSA9PSBiKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGEgOiBiO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciBpbSA9IHZbMV07XG4gICAgdmFyIHJlID0gdlsyXTtcbiAgICBpZihpbSA9PSByZSl7XG4gICAgICB0aGlzLmRhdGEuZmlsbChpbSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gaW0gOiByZTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhLmZpbGwodik7XG4gICAgYnJlYWs7XG4gIH1cbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIChiLCB0b3RhbCkge1xuICBpZiAodGhpcy5sYXlvdXQgIT0gYi5sYXlvdXQgfHwgdGhpcy5raW5kICE9IGIua2luZCkge1xuICAgIHZhciBrMSA9IHRoaXMua2luZCB8ICh0aGlzLmxheW91dCA8PCA4KTtcbiAgICB2YXIgazIgPSAgICBiLmtpbmQgfCAoYi5sYXlvdXQgPDwgOCk7XG4gICAgcmV0dXJuIGsyIC0gazE7XG4gIH1cbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYi5kaW1zLmxlbmd0aCkge1xuICAgIHJldHVybiBiLmRpbXMubGVuZ3RoIC0gdGhpcy5kaW1zLmxlbmd0aDtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAodGhpcy5kaW1zW2ldICE9IGIuZGltc1tpXSlcbiAgICAgIHJldHVybiAodGhpcy5kaW1zW2ldIDwgYi5kaW1zW2ldKSA/IC0xIDogMTtcbiAgc3dpdGNoICh0aGlzLmtpbmQpIHtcbiAgY2FzZSAwOlxuICBjYXNlIDE6XG4gIGNhc2UgMTA6XG4gIGNhc2UgMTE6XG4gICAgLy8gRmxvYXRzXG4gICAgdmFyIHgsIHk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHggPSB0aGlzLmRhdGFbaV07XG4gICAgICB5ID0gYi5kYXRhW2ldO1xuICAgICAgaWYgKHggPCB5KVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoeCA+IHkpXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKHggIT0geSkge1xuICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICBpZiAoeCA9PSB4KSByZXR1cm4gMTtcbiAgICAgICAgaWYgKHkgPT0geSkgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKz0yKSB7XG4gICAgICAvLyBDaGVjayBoaWdoZXN0IGJpdHMgZmlyc3RcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA8IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPiBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPCAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApID4gKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAyOlxuICBjYXNlIDM6XG4gIGNhc2UgNDpcbiAgY2FzZSA1OlxuICBjYXNlIDY6XG4gIGNhc2UgODpcbiAgY2FzZSA5OlxuICBjYXNlIDEyOlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldIDwgYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldID4gYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5X2NfMV8xXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgICA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlID0gbmV3IE1sX0JpZ2FycmF5KClcbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIGlmKHR5cGVvZiBhcmcgIT09IFwibnVtYmVyXCIpe1xuICAgIGlmKChhcmcgaW5zdGFuY2VvZiBBcnJheSkgJiYgYXJnLmxlbmd0aCA9PSAxKVxuICAgICAgYXJnID0gYXJnWzBdO1xuICAgIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiTWxfQmlnYXJyYXlfY18xXzEub2Zmc2V0XCIpO1xuICB9XG4gIGlmIChhcmcgPCAwIHx8IGFyZyA+PSB0aGlzLmRpbXNbMF0pXG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJnO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICByZXR1cm4gdGhpcy5kYXRhW29mc107XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgdGhpcy5kYXRhW29mc10gPSB2O1xuICByZXR1cm4gMFxufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHRoaXMuZGF0YS5maWxsKHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NvbXBhcmVcbmZ1bmN0aW9uIGNhbWxfYmFfY29tcGFyZShhLGIsdG90YWwpe1xuICByZXR1cm4gYS5jb21wYXJlKGIsdG90YWwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIE1sX0JpZ2FycmF5X2NfMV8xLCBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpe1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCk7XG4gIGlmKGNhbWxfYmFfZ2V0X3NpemUoZGltcykgKiBzaXplX3Blcl9lbGVtZW50ICE9IGRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwibGVuZ3RoIGRvZXNuJ3QgbWF0Y2ggZGltc1wiKTtcbiAgfVxuICBpZihsYXlvdXQgPT0gMCAmJiAvLyBjX2xheW91dFxuICAgICBkaW1zLmxlbmd0aCA9PSAxICYmIC8vIEFycmF5MVxuICAgICBzaXplX3Blcl9lbGVtZW50ID09IDEpIC8vIDEtdG8tMSBtYXBwaW5nXG4gICAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5KGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG5cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGUoa2luZCwgbGF5b3V0LCBkaW1zX21sKSB7XG4gIHZhciBkaW1zID0gY2FtbF9qc19mcm9tX2FycmF5KGRpbXNfbWwpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBjYW1sX2JhX2dldF9zaXplKGRpbXMpKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NoYW5nZV9sYXlvdXRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9jaGFuZ2VfbGF5b3V0KGJhLCBsYXlvdXQpIHtcbiAgaWYoYmEubGF5b3V0ID09IGxheW91dCkgcmV0dXJuIGJhO1xuICB2YXIgbmV3X2RpbXMgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2JhLmRpbXMubGVuZ3RoIC0gaSAtIDFdO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGxheW91dCwgbmV3X2RpbXMsIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZChiYSkge1xuICByZXR1cm4gYmEua2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9sYXlvdXRcbmZ1bmN0aW9uIGNhbWxfYmFfbGF5b3V0KGJhKSB7XG4gIHJldHVybiBiYS5sYXlvdXQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbnVtX2RpbXNcbmZ1bmN0aW9uIGNhbWxfYmFfbnVtX2RpbXMoYmEpIHtcbiAgcmV0dXJuIGJhLmRpbXMubGVuZ3RoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2RpbShiYSwgaSkge1xuICBpZiAoaSA8IDAgfHwgaSA+PSBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5kaW1cIik7XG4gIHJldHVybiBiYS5kaW1zW2ldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMShiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8yXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMihiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8zXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMyhiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X2dlbmVyaWMoYmEsIGkpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpO1xuICByZXR1cm4gYmEuZ2V0KG9mcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MTYoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMpO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHJldHVybiAoYjEgfCAoYjIgPDwgOCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDMyKGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICByZXR1cm4gKCAoYjEgPDwgMCkgIHxcbiAgICAgICAgICAgKGIyIDw8IDgpICB8XG4gICAgICAgICAgIChiMyA8PCAxNikgfFxuICAgICAgICAgICAoYjQgPDwgMjQpICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0NjQoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHZhciBiNSA9IGJhLmdldChvZnMrNCk7XG4gIHZhciBiNiA9IGJhLmdldChvZnMrNSk7XG4gIHZhciBiNyA9IGJhLmdldChvZnMrNik7XG4gIHZhciBiOCA9IGJhLmdldChvZnMrNyk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFtiOCxiNyxiNixiNSxiNCxiMyxiMixiMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8xKGJhLCBpMCkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChpMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8yXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8yKGJhLCBpMCwgaTEpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8zXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8zKGJhLCBpMCwgaTEsIGkyKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX3NldF9nZW5lcmljKGJhLCBpLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MTYoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDMyKGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMiwgKHYgPj4+IDE2KSAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzMsICh2ID4+PiAyNCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0NjQoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciB2ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh2KTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDg7IGkrKykgYmEuc2V0KG9mcytpLCB2WzctaV0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8xXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8xKGJhLCBpMCwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGkwKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzIoYmEsIGkwLCBpMSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMV0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzMoYmEsIGkwLCBpMSwgaTIsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYmFfZmlsbChiYSwgdikge1xuICBiYS5maWxsKHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfYmxpdChzcmMsIGRzdCkge1xuICBpZiAoZHN0LmRpbXMubGVuZ3RoICE9IHNyYy5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZHN0LmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKGRzdC5kaW1zW2ldICE9IHNyYy5kaW1zW2ldKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBkc3QuZGF0YS5zZXQoc3JjLmRhdGEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zdWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3N1YihiYSwgb2ZzLCBsZW4pIHtcbiAgdmFyIGNoYW5nZWRfZGltO1xuICB2YXIgbXVsID0gMTtcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAoYmEuZGltcy5sZW5ndGggLSAxKTsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IGJhLmRpbXMubGVuZ3RoIC0gMTtcbiAgICBvZnMgPSBvZnMgLSAxO1xuICB9XG4gIGlmIChvZnMgPCAwIHx8IGxlbiA8IDAgfHwgKG9mcyArIGxlbikgPiBiYS5kaW1zW2NoYW5nZWRfZGltXSl7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc3ViOiBiYWQgc3ViLWFycmF5XCIpO1xuICB9XG4gIHZhciBuZXdfZGltcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2ldO1xuICBuZXdfZGltc1tjaGFuZ2VkX2RpbV0gPSBsZW47XG4gIG11bCAqPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIG11bCwgKG9mcyArIGxlbikgKiBtdWwpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zbGljZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zbGljZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbnVtX2luZHMgPSB2aW5kLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gW107XG4gIHZhciBzdWJfZGltcyA9IFtdO1xuICB2YXIgb2ZzO1xuXG4gIGlmIChudW1faW5kcyA+IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnNsaWNlOiB0b28gbWFueSBpbmRpY2VzXCIpO1xuXG4gIC8vIENvbXB1dGUgb2Zmc2V0IGFuZCBjaGVjayBib3VuZHNcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSB2aW5kW2ldO1xuICAgIGZvciAoOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMDtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UobnVtX2luZHMpO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2JhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMgKyBpXSA9IHZpbmRbaV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDE7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKDAsIGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMpO1xuICB9XG4gIG9mcyA9IGJhLm9mZnNldChpbmRleCk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShzdWJfZGltcyk7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBzaXplX3Blcl9lbGVtZW50LCAob2ZzICsgc2l6ZSkgKiBzaXplX3Blcl9lbGVtZW50KTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIHN1Yl9kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfcmVzaGFwZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuZnVuY3Rpb24gY2FtbF9iYV9yZXNoYXBlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBuZXdfZGltID0gW107XG4gIHZhciBudW1fZGltcyA9IHZpbmQubGVuZ3RoO1xuXG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICB9XG4gIHZhciBudW1fZWx0cyA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgIG5ld19kaW1baV0gPSB2aW5kW2ldO1xuICAgIGlmIChuZXdfZGltW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBudW1fZWx0cyA9IG51bV9lbHRzICogbmV3X2RpbVtpXTtcbiAgfVxuXG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgLy8gQ2hlY2sgdGhhdCBzaXplcyBhZ3JlZVxuICBpZiAobnVtX2VsdHMgIT0gc2l6ZSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBzaXplIG1pc21hdGNoXCIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbSwgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9zZXJpYWxpemUod3JpdGVyLCBiYSwgc3opIHtcbiAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zLmxlbmd0aCk7XG4gIHdyaXRlci53cml0ZSgzMiwgKGJhLmtpbmQgfCAoYmEubGF5b3V0IDw8IDgpKSk7XG4gIGlmKGJhLmNhbWxfY3VzdG9tID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmKGJhLmRpbXNbaV0gPCAweGZmZmYpXG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGltc1tpXSk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCAweGZmZmYpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIDApO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgZWxzZVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB3cml0ZXIud3JpdGUoMzIsYmEuZGltc1tpXSlcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgd3JpdGVyLndyaXRlKDgsMCk7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoYmEuZ2V0KGkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGogPSBiYS5nZXQoaSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzFdKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzJdKSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGNvbXBsZXggPSBiYS5nZXQoaSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMV0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzJdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgc3pbMF0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDQ7XG4gIHN6WzFdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Rlc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMsIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgbmFtZSl7XG4gIHZhciBudW1fZGltcyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHdyb25nIG51bWJlciBvZiBiaWdhcnJheSBkaW1lbnNpb25zXCIpO1xuICB2YXIgdGFnID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIGtpbmQgPSB0YWcgJiAweGZmXG4gIHZhciBsYXlvdXQgPSAodGFnID4+IDgpICYgMTtcbiAgdmFyIGRpbXMgPSBbXVxuICBpZihuYW1lID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgICB2YXIgc2l6ZV9kaW0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgICAgaWYoc2l6ZV9kaW0gPT0gMHhmZmZmKXtcbiAgICAgICAgdmFyIHNpemVfZGltX2hpID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgdmFyIHNpemVfZGltX2xvID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgaWYoc2l6ZV9kaW1faGkgIT0gMClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGJpZ2FycmF5IGRpbWVuc2lvbiBvdmVyZmxvdyBpbiAzMmJpdFwiKTtcbiAgICAgICAgc2l6ZV9kaW0gPSBzaXplX2RpbV9sbztcbiAgICAgIH1cbiAgICAgIGRpbXMucHVzaChzaXplX2RpbSk7XG4gICAgfVxuICBlbHNlXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSBkaW1zLnB1c2gocmVhZGVyLnJlYWQzMnUoKSk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSk7XG4gIHZhciBiYSA9IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHZhciBzaXh0eSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICBpZihzaXh0eSkgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjYW5ub3QgcmVhZCBiaWdhcnJheSB3aXRoIDY0LWJpdCBPQ2FtbCBpbnRzXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6IC8vIChpbnQ2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW50NjQgPSBjYW1sX2ludDY0X29mX2J5dGVzKHQpO1xuICAgICAgYmEuc2V0KGksaW50NjQpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVha1xuICB9XG4gIHN6WzBdID0gKDQgKyBudW1fZGltcykgKiA0O1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vRGVwcmVjYXRlZFxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfZnJvbVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2Zyb20oZGF0YTEsIGRhdGEyLCBqc3R5cCwga2luZCwgbGF5b3V0LCBkaW1zKXtcbiAgaWYoZGF0YTIgfHwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSA9PSAyKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2NyZWF0ZV9mcm9tOiB1c2UgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVwiKTtcbiAgfVxuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YTEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2hhc2ggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX2hhc2goYmEpe1xuICB2YXIgbnVtX2VsdHMgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICB2YXIgaCA9IDA7XG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMjU2KSBudW1fZWx0cyA9IDI1NjtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgNCA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCA4KSB8IChiYS5kYXRhW2krMl0gPDwgMTYpIHwgKGJhLmRhdGFbaSszXSA8PCAyNCk7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgdyA9IDA7XG4gICAgc3dpdGNoIChudW1fZWx0cyAmIDMpIHtcbiAgICBjYXNlIDM6IHcgID0gYmEuZGF0YVtpKzJdIDw8IDE2OyAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMjogdyB8PSBiYS5kYXRhW2krMV0gPDwgODsgICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAxOiB3IHw9IGJhLmRhdGFbaSswXTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDEyOCkgbnVtX2VsdHMgPSAxMjg7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDIgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTIpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgMTYpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIGlmICgobnVtX2VsdHMgJiAxKSAhPSAwKVxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIG51bV9lbHRzICo9IDJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYmEpe1xuICByZXR1cm4gYmEuZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGtpbmQ7XG4gIGlmICAgICAgKHRhIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5KSBraW5kID0gMDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkpIGtpbmQgPSAxO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDhBcnJheSkga2luZCA9IDI7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDhBcnJheSkga2luZCA9IDM7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDE2QXJyYXkpIGtpbmQgPSA0O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQxNkFycmF5KSBraW5kID0gNTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5OiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICByZXR1cm4ga2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkodGEpe1xuICB2YXIga2luZCA9IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSh0YSk7XG4gIHZhciB0YSA9XG4gICAgICAvKiBOZWVkZWQgdG8gYXZvaWQgdW5zaWduZWQgc2V0dGVycyBvdmVyZmxvd2luZ1xuICAgICAgICAgdGhlIHJhbmdlIG9mIE9DYW1sIFtpbnQzMl0gdmFsdWVzLiAqL1xuICAgICAgdGEgaW5zdGFuY2VvZiBVaW50MzJBcnJheSA/XG4gICAgICBuZXcgSW50MzJBcnJheSh0YS5idWZmZXIgLHRhLmJ5dGVPZmZzZXQsIHRhLmxlbmd0aCkgOiB0YTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IHBhcnNpbmcuYyA4OTgzIDIwMDgtMDgtMDYgMDk6Mzg6MjVaIHhsZXJveSAkICovXG5cbi8qIFRoZSBQREEgYXV0b21hdG9uIGZvciBwYXJzZXJzIGdlbmVyYXRlZCBieSBjYW1seWFjYyAqL1xuXG4vKiBUaGUgcHVzaGRvd24gYXV0b21hdGEgKi9cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZXJfdHJhY2VcbnZhciBjYW1sX3BhcnNlcl90cmFjZSA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2xleF9hcnJheSwgY2FtbF9wYXJzZXJfdHJhY2UsY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0LCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZW5naW5lKHRhYmxlcywgZW52LCBjbWQsIGFyZylcbntcbiAgdmFyIEVSUkNPREUgPSAyNTY7XG5cbiAgLy92YXIgU1RBUlQgPSAwO1xuICAvL3ZhciBUT0tFTl9SRUFEID0gMTtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzEgPSAyO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMiA9IDM7XG4gIC8vdmFyIFNFTUFOVElDX0FDVElPTl9DT01QVVRFRCA9IDQ7XG4gIC8vdmFyIEVSUk9SX0RFVEVDVEVEID0gNTtcbiAgdmFyIGxvb3AgPSA2O1xuICB2YXIgdGVzdHNoaWZ0ID0gNztcbiAgdmFyIHNoaWZ0ID0gODtcbiAgdmFyIHNoaWZ0X3JlY292ZXIgPSA5O1xuICB2YXIgcmVkdWNlID0gMTA7XG5cbiAgdmFyIFJFQURfVE9LRU4gPSAwO1xuICB2YXIgUkFJU0VfUEFSU0VfRVJST1IgPSAxO1xuICB2YXIgR1JPV19TVEFDS1NfMSA9IDI7XG4gIHZhciBHUk9XX1NUQUNLU18yID0gMztcbiAgdmFyIENPTVBVVEVfU0VNQU5USUNfQUNUSU9OID0gNDtcbiAgdmFyIENBTExfRVJST1JfRlVOQ1RJT04gPSA1O1xuXG4gIHZhciBlbnZfc19zdGFjayA9IDE7XG4gIHZhciBlbnZfdl9zdGFjayA9IDI7XG4gIHZhciBlbnZfc3ltYl9zdGFydF9zdGFjayA9IDM7XG4gIHZhciBlbnZfc3ltYl9lbmRfc3RhY2sgPSA0O1xuICB2YXIgZW52X3N0YWNrc2l6ZSA9IDU7XG4gIHZhciBlbnZfc3RhY2tiYXNlID0gNjtcbiAgdmFyIGVudl9jdXJyX2NoYXIgPSA3O1xuICB2YXIgZW52X2x2YWwgPSA4O1xuICB2YXIgZW52X3N5bWJfc3RhcnQgPSA5O1xuICB2YXIgZW52X3N5bWJfZW5kID0gMTA7XG4gIHZhciBlbnZfYXNwID0gMTE7XG4gIHZhciBlbnZfcnVsZV9sZW4gPSAxMjtcbiAgdmFyIGVudl9ydWxlX251bWJlciA9IDEzO1xuICB2YXIgZW52X3NwID0gMTQ7XG4gIHZhciBlbnZfc3RhdGUgPSAxNTtcbiAgdmFyIGVudl9lcnJmbGFnID0gMTY7XG5cbiAgLy8gdmFyIF90YmxfYWN0aW9ucyA9IDE7XG4gIHZhciB0YmxfdHJhbnNsX2NvbnN0ID0gMjtcbiAgdmFyIHRibF90cmFuc2xfYmxvY2sgPSAzO1xuICB2YXIgdGJsX2xocyA9IDQ7XG4gIHZhciB0YmxfbGVuID0gNTtcbiAgdmFyIHRibF9kZWZyZWQgPSA2O1xuICB2YXIgdGJsX2Rnb3RvID0gNztcbiAgdmFyIHRibF9zaW5kZXggPSA4O1xuICB2YXIgdGJsX3JpbmRleCA9IDk7XG4gIHZhciB0YmxfZ2luZGV4ID0gMTA7XG4gIHZhciB0YmxfdGFibGVzaXplID0gMTE7XG4gIHZhciB0YmxfdGFibGUgPSAxMjtcbiAgdmFyIHRibF9jaGVjayA9IDEzO1xuICAvLyB2YXIgX3RibF9lcnJvcl9mdW5jdGlvbiA9IDE0O1xuICB2YXIgdGJsX25hbWVzX2NvbnN0ID0gMTU7XG4gIHZhciB0YmxfbmFtZXNfYmxvY2sgPSAxNjtcblxuXG4gIGZ1bmN0aW9uIGxvZyh4KSB7XG4gICAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHggKyBcIlxcblwiKTtcbiAgICBjYW1sX21sX291dHB1dCgyLCBzLCAwLCBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9rZW5fbmFtZShuYW1lcywgbnVtYmVyKVxuICB7XG4gICAgdmFyIHN0ciA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWVzKTtcbiAgICBpZiAoc3RyWzBdID09ICdcXHgwMCcpXG4gICAgICByZXR1cm4gXCI8dW5rbm93biB0b2tlbj5cIjtcbiAgICByZXR1cm4gc3RyLnNwbGl0KCdcXHgwMCcpW251bWJlcl07XG4gIH1cblxuICBmdW5jdGlvbiBwcmludF90b2tlbihzdGF0ZSwgdG9rKVxuICB7XG4gICAgdmFyIHRva2VuLCBraW5kO1xuICAgIGlmICh0b2sgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfYmxvY2tdLCB0b2tbMF0pO1xuICAgICAgaWYgKHR5cGVvZiB0b2tbMV0gPT0gXCJudW1iZXJcIilcbiAgICAgICAga2luZCA9IFwiXCIgKyB0b2tbMV07XG4gICAgICBlbHNlIGlmICh0eXBlb2YgdG9rWzFdID09IFwic3RyaW5nXCIpXG4gICAgICAgIGtpbmQgPSB0b2tbMV1cbiAgICAgIGVsc2UgaWYgKHRva1sxXSBpbnN0YW5jZW9mIE1sQnl0ZXMpXG4gICAgICAgIGtpbmQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRva1sxXSlcbiAgICAgIGVsc2VcbiAgICAgICAga2luZCA9IFwiX1wiXG4gICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlYWQgdG9rZW4gXCIgKyB0b2tlbiArIFwiKFwiICsga2luZCArIFwiKVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfY29uc3RdLCB0b2spO1xuICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWFkIHRva2VuIFwiICsgdG9rZW4pO1xuICAgIH1cbiAgfVxuXG4gIGlmICghdGFibGVzLmRnb3RvKSB7XG4gICAgdGFibGVzLmRlZnJlZCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2RlZnJlZF0pO1xuICAgIHRhYmxlcy5zaW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9zaW5kZXhdKTtcbiAgICB0YWJsZXMuY2hlY2sgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfY2hlY2tdKTtcbiAgICB0YWJsZXMucmluZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfcmluZGV4XSk7XG4gICAgdGFibGVzLnRhYmxlICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3RhYmxlXSk7XG4gICAgdGFibGVzLmxlbiAgICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2xlbl0pO1xuICAgIHRhYmxlcy5saHMgICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9saHNdKTtcbiAgICB0YWJsZXMuZ2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZ2luZGV4XSk7XG4gICAgdGFibGVzLmRnb3RvICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2Rnb3RvXSk7XG4gIH1cblxuICB2YXIgcmVzID0gMCwgbiwgbjEsIG4yLCBzdGF0ZTE7XG5cbiAgLy8gUkVTVE9SRVxuICB2YXIgc3AgPSBlbnZbZW52X3NwXTtcbiAgdmFyIHN0YXRlID0gZW52W2Vudl9zdGF0ZV07XG4gIHZhciBlcnJmbGFnID0gZW52W2Vudl9lcnJmbGFnXTtcblxuICBleGl0OmZvciAoOzspIHtcbiAgICBuZXh0OnN3aXRjaChjbWQpIHtcbiAgICBjYXNlIDA6Ly9TVEFSVDpcbiAgICAgIHN0YXRlID0gMDtcbiAgICAgIGVycmZsYWcgPSAwO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlIDY6Ly9sb29wOlxuICAgICAgbiA9IHRhYmxlcy5kZWZyZWRbc3RhdGVdO1xuICAgICAgaWYgKG4gIT0gMCkgeyBjbWQgPSByZWR1Y2U7IGJyZWFrOyB9XG4gICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID49IDApIHsgY21kID0gdGVzdHNoaWZ0OyBicmVhazsgfVxuICAgICAgcmVzID0gUkVBRF9UT0tFTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgbGV4ZXIgYW5kIHVwZGF0ZXMgKi9cbiAgICAgIC8qIHN5bWJfc3RhcnQgYW5kIHN5bWJfZW5kICovXG4gICAgY2FzZSAxOi8vVE9LRU5fUkVBRDpcbiAgICAgIGlmIChhcmcgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9ibG9ja11bYXJnWzBdICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSBhcmdbMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9jb25zdF1bYXJnICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSAwO1xuICAgICAgfVxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKSBwcmludF90b2tlbiAoc3RhdGUsIGFyZyk7XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNzovL3Rlc3RzaGlmdDpcbiAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBjbWQgPSBzaGlmdDsgYnJlYWs7XG4gICAgICB9XG4gICAgICBuMSA9IHRhYmxlcy5yaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgbiA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICAgIGNtZCA9IHJlZHVjZTsgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoZXJyZmxhZyA8PSAwKSB7XG4gICAgICAgIHJlcyA9IENBTExfRVJST1JfRlVOQ1RJT047XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBlcnJvciBmdW5jdGlvbiAqL1xuICAgIGNhc2UgNTovL0VSUk9SX0RFVEVDVEVEOlxuICAgICAgaWYgKGVycmZsYWcgPCAzKSB7XG4gICAgICAgIGVycmZsYWcgPSAzO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdO1xuICAgICAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZTFdO1xuICAgICAgICAgIG4yID0gbjEgKyBFUlJDT0RFO1xuICAgICAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gRVJSQ09ERSkge1xuICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICBsb2coXCJSZWNvdmVyaW5nIGluIHN0YXRlIFwiICsgc3RhdGUxKTtcbiAgICAgICAgICAgIGNtZCA9IHNoaWZ0X3JlY292ZXI7IGJyZWFrIG5leHQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgbG9nKFwiRGlzY2FyZGluZyBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICBpZiAoc3AgPD0gZW52W2Vudl9zdGFja2Jhc2VdKSB7XG4gICAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgICBsb2coXCJObyBtb3JlIHN0YXRlcyB0byBkaXNjYXJkXCIpO1xuICAgICAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgICAgIHNwLS07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID09IDApXG4gICAgICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SOyAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgIGxvZyhcIkRpc2NhcmRpbmcgbGFzdCB0b2tlbiByZWFkXCIpO1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDg6Ly9zaGlmdDpcbiAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IC0xO1xuICAgICAgaWYgKGVycmZsYWcgPiAwKSBlcnJmbGFnLS07XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDk6Ly9zaGlmdF9yZWNvdmVyOlxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHNoaWZ0IHRvIHN0YXRlIFwiICsgdGFibGVzLnRhYmxlW24yXSk7XG4gICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICBzcCsrO1xuICAgICAgaWYgKHNwID49IGVudltlbnZfc3RhY2tzaXplXSkge1xuICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18xO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi9cbiAgICBjYXNlIDI6Ly9TVEFDS1NfR1JPV05fMTpcbiAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9sdmFsXTtcbiAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9zdGFydF07XG4gICAgICBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF07XG4gICAgICBjbWQgPSBsb29wO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIDEwOi8vcmVkdWNlOlxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlZHVjZSBieSBydWxlIFwiICsgbik7XG4gICAgICB2YXIgbSA9IHRhYmxlcy5sZW5bbl07XG4gICAgICBlbnZbZW52X2FzcF0gPSBzcDtcbiAgICAgIGVudltlbnZfcnVsZV9udW1iZXJdID0gbjtcbiAgICAgIGVudltlbnZfcnVsZV9sZW5dID0gbTtcbiAgICAgIHNwID0gc3AgLSBtICsgMTtcbiAgICAgIG0gPSB0YWJsZXMubGhzW25dO1xuICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcF07XG4gICAgICBuMSA9IHRhYmxlcy5naW5kZXhbbV07XG4gICAgICBuMiA9IG4xICsgc3RhdGUxO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IHN0YXRlMSlcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgZWxzZVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy5kZ290b1ttXTtcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAzOi8vU1RBQ0tTX0dST1dOXzI6XG4gICAgICByZXMgPSBDT01QVVRFX1NFTUFOVElDX0FDVElPTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgc2VtYW50aWMgYWN0aW9uICovXG4gICAgY2FzZSA0Oi8vU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBhcmc7XG4gICAgICB2YXIgYXNwID0gZW52W2Vudl9hc3BdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgaWYgKHNwID4gYXNwKSB7XG4gICAgICAgIC8qIFRoaXMgaXMgYW4gZXBzaWxvbiBwcm9kdWN0aW9uLiBUYWtlIHN5bWJfc3RhcnQgZXF1YWwgdG8gc3ltYl9lbmQuICovXG4gICAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgfVxuICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICAvKiBTaG91bGQgbm90IGhhcHBlbiAqL1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgfVxuICB9XG4gIC8vIFNBVkVcbiAgZW52W2Vudl9zcF0gPSBzcDtcbiAgZW52W2Vudl9zdGF0ZV0gPSBzdGF0ZTtcbiAgZW52W2Vudl9lcnJmbGFnXSA9IGVycmZsYWc7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3BhcnNlcl90cmFjZVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZXJfdHJhY2VcbmZ1bmN0aW9uIGNhbWxfc2V0X3BhcnNlcl90cmFjZShib29sKSB7XG4gIHZhciBvbGRmbGFnID0gY2FtbF9wYXJzZXJfdHJhY2U7XG4gIGNhbWxfcGFyc2VyX3RyYWNlID0gYm9vbDtcbiAgcmV0dXJuIG9sZGZsYWc7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9pbnQgY29uc3QgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nLCBjYW1sX3N0cl9yZXBlYXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2ludChmbXQsIGkpIHtcbiAgaWYgKGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KSA9PSBcIiVkXCIpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIraSk7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGkgPCAwKSB7IGlmIChmLnNpZ25lZGNvbnYpIHsgZi5zaWduID0gLTE7IGkgPSAtaTsgfSBlbHNlIGkgPj4+PSAwOyB9XG4gIHZhciBzID0gaS50b1N0cmluZyhmLmJhc2UpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9ICcgJztcbiAgICB2YXIgbiA9IGYucHJlYyAtIHMubGVuZ3RoO1xuICAgIGlmIChuID4gMCkgcyA9IGNhbWxfc3RyX3JlcGVhdCAobiwgJzAnKSArIHM7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpIHtcbiAgdmFyIGkgPSAwLCBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyksIGJhc2UgPSAxMCwgc2lnbiA9IDE7XG4gIGlmIChsZW4gPiAwKSB7XG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSkpIHtcbiAgICBjYXNlIDQ1OiBpKys7IHNpZ24gPSAtMTsgYnJlYWs7XG4gICAgY2FzZSA0MzogaSsrOyBzaWduID0gMTsgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChpICsgMSA8IGxlbiAmJiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpID09IDQ4KVxuICAgIHN3aXRjaCAoY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpICsgMSkpIHtcbiAgICBjYXNlIDEyMDogY2FzZSA4ODogYmFzZSA9IDE2OyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgMTExOiBjYXNlIDc5OiBiYXNlID0gIDg7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAgOTg6IGNhc2UgNjY6IGJhc2UgPSAgMjsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlIDExNzogY2FzZSA4NTogaSArPSAyOyBicmVhaztcbiAgICB9XG4gIHJldHVybiBbaSwgc2lnbiwgYmFzZV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZGlnaXRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZGlnaXQoYykge1xuICBpZiAoYyA+PSA0OCAmJiBjIDw9IDU3KSAgcmV0dXJuIGMgLSA0ODtcbiAgaWYgKGMgPj0gNjUgJiYgYyA8PSA5MCkgIHJldHVybiBjIC0gNTU7XG4gIGlmIChjID49IDk3ICYmIGMgPD0gMTIyKSByZXR1cm4gYyAtIDg3O1xuICByZXR1cm4gLTE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50X29mX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSwgY2FtbF9wYXJzZV9kaWdpdCwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9pbnRfb2Zfc3RyaW5nIChzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKTtcbiAgdmFyIGkgPSByWzBdLCBzaWduID0gclsxXSwgYmFzZSA9IHJbMl07XG4gIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciB0aHJlc2hvbGQgPSAtMSA+Pj4gMDtcbiAgdmFyIGMgPSAoaSA8IGxlbik/Y2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTowO1xuICB2YXIgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB2YXIgcmVzID0gZDtcbiAgZm9yIChpKys7aTxsZW47aSsrKSB7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT0gOTUpIGNvbnRpbnVlO1xuICAgIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICAgIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGJyZWFrO1xuICAgIHJlcyA9IGJhc2UgKiByZXMgKyBkO1xuICAgIGlmIChyZXMgPiB0aHJlc2hvbGQpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB9XG4gIGlmIChpICE9IGxlbikgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIC8vIEZvciBiYXNlIGRpZmZlcmVudCBmcm9tIDEwLCB3ZSBleHBlY3QgYW4gdW5zaWduZWQgcmVwcmVzZW50YXRpb24sXG4gIC8vIGhlbmNlIGFueSB2YWx1ZSBvZiAncmVzJyAobGVzcyB0aGFuICd0aHJlc2hvbGQnKSBpcyBhY2NlcHRhYmxlLlxuICAvLyBCdXQgd2UgaGF2ZSB0byBjb252ZXJ0IHRoZSByZXN1bHQgYmFjayB0byBhIHNpZ25lZCBpbnRlZ2VyLlxuICByZXMgPSBzaWduICogcmVzO1xuICBpZiAoKGJhc2UgPT0gMTApICYmICgocmVzIHwgMCkgIT0gcmVzKSlcbiAgICAvKiBTaWduZWQgcmVwcmVzZW50YXRpb24gZXhwZWN0ZWQsIGFsbG93IC0yXihuYml0cy0xKSB0byAyXihuYml0cy0xKSAtIDEgKi9cbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgcmV0dXJuIHJlcyB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbXVsIGNvbnN0XG5mdW5jdGlvbiBjYW1sX211bChhLGIpe1xuICByZXR1cm4gTWF0aC5pbXVsKGEsYik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGl2XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBjYW1sX2Rpdih4LHkpIHtcbiAgaWYgKHkgPT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgcmV0dXJuICh4L3kpfDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW9kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBjYW1sX21vZCh4LHkpIHtcbiAgaWYgKHkgPT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgcmV0dXJuIHgleTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ic3dhcDE2XG5mdW5jdGlvbiBjYW1sX2Jzd2FwMTYoeCkge1xuICByZXR1cm4gKCgoKHggJiAweDAwRkYpIDw8IDgpIHxcbiAgICAgICAgICAgKCh4ICYgMHhGRjAwKSA+PiA4KSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9ic3dhcFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9ic3dhcCh4KSB7XG4gIHJldHVybiAoKCh4ICYgMHgwMDAwMDBGRikgPDwgMjQpIHxcbiAgICAgICAgICAoKHggJiAweDAwMDBGRjAwKSA8PCA4KSB8XG4gICAgICAgICAgKCh4ICYgMHgwMEZGMDAwMCkgPj4+IDgpIHxcbiAgICAgICAgICAoKHggJiAweEZGMDAwMDAwKSA+Pj4gMjQpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYnN3YXBcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYnN3YXAoeCkge1xuICB2YXIgeSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoeCk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFt5WzddLCB5WzZdLCB5WzVdLCB5WzRdLCB5WzNdLCB5WzJdLCB5WzFdLCB5WzBdXSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEhhc2h0YmxcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfdW5pdl9wYXJhbSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vVmVyc2lvbjogPCA0LjEyXG5mdW5jdGlvbiBjYW1sX2hhc2hfdW5pdl9wYXJhbSAoY291bnQsIGxpbWl0LCBvYmopIHtcbiAgdmFyIGhhc2hfYWNjdSA9IDA7XG4gIGZ1bmN0aW9uIGhhc2hfYXV4IChvYmopIHtcbiAgICBsaW1pdCAtLTtcbiAgICBpZiAoY291bnQgPCAwIHx8IGxpbWl0IDwgMCkgcmV0dXJuO1xuICAgIGlmIChvYmogaW5zdGFuY2VvZiBBcnJheSAmJiBvYmpbMF0gPT09IChvYmpbMF18MCkpIHtcbiAgICAgIHN3aXRjaCAob2JqWzBdKSB7XG4gICAgICBjYXNlIDI0ODpcbiAgICAgICAgLy8gT2JqZWN0XG4gICAgICAgIGNvdW50IC0tO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBvYmpbMl0pIHwgMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MDpcbiAgICAgICAgLy8gRm9yd2FyZFxuICAgICAgICBsaW1pdCsrOyBoYXNoX2F1eChvYmopOyBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvdW50IC0tO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBvYmpbMF0pIHwgMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IG9iai5sZW5ndGggLSAxOyBpID4gMDsgaS0tKSBoYXNoX2F1eCAob2JqW2ldKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMob2JqKSkge1xuICAgICAgY291bnQgLS07XG4gICAgICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudChvYmopO1xuICAgICAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgZm9yICh2YXIgYiA9IGNvbnRlbnQsIGwgPSBiLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgICB9IGVsc2UgeyAvKiBBUlJBWSAqL1xuICAgICAgICBmb3IgKHZhciBhID0gY29udGVudCwgbCA9IGEubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBhW2ldKSB8IDA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhvYmopKSB7XG4gICAgICB2YXIganNieXRlcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob2JqKTtcbiAgICAgIGZvciAodmFyIGIgPSBqc2J5dGVzLCBsID0ganNieXRlcy5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGZvciAodmFyIGIgPSBvYmosIGwgPSBvYmoubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgfSBlbHNlIGlmIChvYmogPT09IChvYmp8MCkpIHtcbiAgICAgIC8vIEludGVnZXJcbiAgICAgIGNvdW50IC0tO1xuICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgb2JqKSB8IDA7XG4gICAgfSBlbHNlIGlmIChvYmogPT09ICtvYmopIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBjb3VudC0tO1xuICAgICAgdmFyIHAgPSBjYW1sX2ludDY0X3RvX2J5dGVzIChjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKG9iaikpO1xuICAgICAgZm9yICh2YXIgaSA9IDc7IGkgPj0gMDsgaS0tKSBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBwW2ldKSB8IDA7XG4gICAgfSBlbHNlIGlmKG9iaiAmJiBvYmouY2FtbF9jdXN0b20pIHtcbiAgICAgIGlmKGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dLmhhc2gpIHtcbiAgICAgICAgdmFyIGggPSBjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXS5oYXNoKG9iaikgfCAwO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBoKSB8IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGhhc2hfYXV4IChvYmopO1xuICByZXR1cm4gaGFzaF9hY2N1ICYgMHgzRkZGRkZGRjtcbn1cblxuLy9mdW5jdGlvbiBST1RMMzIoeCxuKSB7IHJldHVybiAoKHggPDwgbikgfCAoeCA+Pj4gKDMyLW4pKSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX211bFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQoaCxkKSB7XG4gIGQgPSBjYW1sX211bChkLCAweGNjOWUyZDUxfDApO1xuICBkID0gKChkIDw8IDE1KSB8IChkID4+PiAoMzItMTUpKSk7IC8vIFJPVEwzMihkLCAxNSk7XG4gIGQgPSBjYW1sX211bChkLCAweDFiODczNTkzKTtcbiAgaCBePSBkO1xuICBoID0gKChoIDw8IDEzKSB8IChoID4+PiAoMzItMTMpKSk7ICAgLy9ST1RMMzIoaCwgMTMpO1xuICByZXR1cm4gKCgoaCArIChoIDw8IDIpKXwwKSArICgweGU2NTQ2YjY0fDApKXwwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX211bFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9maW5hbChoKSB7XG4gIGggXj0gaCA+Pj4gMTY7XG4gIGggPSBjYW1sX211bCAoaCwgMHg4NWViY2E2YnwwKTtcbiAgaCBePSBoID4+PiAxMztcbiAgaCA9IGNhbWxfbXVsIChoLCAweGMyYjJhZTM1fDApO1xuICBoIF49IGggPj4+IDE2O1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2hhc2hfbWl4X2ludDY0XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2Zsb2F0IChoLCB2MCkge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9pbnQ2NChoLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKHYwKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9sbzMyLCBjYW1sX2ludDY0X2hpMzJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50NjQgKGgsIHYpIHtcbiAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGNhbWxfaW50NjRfbG8zMih2KSk7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2hpMzIodikpO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIHMpIHtcbiAgdmFyIGxlbiA9IHMubGVuZ3RoLCBpLCB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzLmNoYXJDb2RlQXQoaSlcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDgpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSsyKSA8PCAxNilcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzMpIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICBjYXNlIDM6IHcgID0gcy5jaGFyQ29kZUF0KGkrMikgPDwgMTY7XG4gIGNhc2UgMjogdyB8PSBzLmNoYXJDb2RlQXQoaSsxKSA8PCA4O1xuICBjYXNlIDE6XG4gICAgdyB8PSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICBkZWZhdWx0OlxuICB9XG4gIGggXj0gbGVuO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCwgaSwgdztcbiAgZm9yIChpID0gMDsgaSArIDQgPD0gbGVuOyBpICs9IDQpIHtcbiAgICB3ID0gc1tpXVxuICAgICAgfCAoc1tpKzFdIDw8IDgpXG4gICAgICB8IChzW2krMl0gPDwgMTYpXG4gICAgICB8IChzW2krM10gPDwgMjQpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICB3ID0gMDtcbiAgc3dpdGNoIChsZW4gJiAzKSB7XG4gIGNhc2UgMzogdyAgPSBzW2krMl0gPDwgMTY7XG4gIGNhc2UgMjogdyB8PSBzW2krMV0gPDwgODtcbiAgY2FzZSAxOiB3IHw9IHNbaV07XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICBkZWZhdWx0OlxuICB9XG4gIGggXj0gbGVuO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2J5dGVzKGgsIHYpIHtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQodik7XG4gIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKVxuICAgIHJldHVybiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgY29udGVudClcbiAgZWxzZSAvKiBBUlJBWSAqL1xuICAgIHJldHVybiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLCBjb250ZW50KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9zdHJpbmcoaCwgdikge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmcodikpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaCBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQsIGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmxvYXQsIGNhbWxfaGFzaF9taXhfc3RyaW5nLCBjYW1sX2hhc2hfbWl4X2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG5mdW5jdGlvbiBjYW1sX2hhc2ggKGNvdW50LCBsaW1pdCwgc2VlZCwgb2JqKSB7XG4gIHZhciBxdWV1ZSwgcmQsIHdyLCBzeiwgbnVtLCBoLCB2LCBpLCBsZW47XG4gIHN6ID0gbGltaXQ7XG4gIGlmIChzeiA8IDAgfHwgc3ogPiAyNTYpIHN6ID0gMjU2O1xuICBudW0gPSBjb3VudDtcbiAgaCA9IHNlZWQ7XG4gIHF1ZXVlID0gW29ial07IHJkID0gMDsgd3IgPSAxO1xuICB3aGlsZSAocmQgPCB3ciAmJiBudW0gPiAwKSB7XG4gICAgdiA9IHF1ZXVlW3JkKytdO1xuICAgIGlmICh2ICYmIHYuY2FtbF9jdXN0b20pe1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoaCA9IGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKHYpO1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQgKGgsIGhoKTtcbiAgICAgICAgbnVtIC0tO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgIHN3aXRjaCAodlswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdlsyXSk7XG4gICAgICAgIG51bS0tO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIHF1ZXVlWy0tcmRdID0gdlsxXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZihjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodlswXSkpIHtcbiAgICAgICAgICAvKiBBbGwgY29udGludWF0aW9ucyBoYXNoIHRvIHRoZSBzYW1lIHZhbHVlLFxuICAgICAgICAgICAgIHNpbmNlIHdlIGhhdmUgbm8gaWRlYSBob3cgdG8gZGlzdGluZ3Vpc2ggdGhlbS4gKi9cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGFnID0gKCh2Lmxlbmd0aCAtIDEpIDw8IDEwKSB8IHZbMF07XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB0YWcpO1xuICAgICAgICBmb3IgKGkgPSAxLCBsZW4gPSB2Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgaWYgKHdyID49IHN6KSBicmVhaztcbiAgICAgICAgICBxdWV1ZVt3cisrXSA9IHZbaV07XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9ieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfanNieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHYgPT09ICh2fDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdit2KzEpO1xuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJudW1iZXJcIikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsdik7XG4gICAgICBudW0tLTtcbiAgICB9XG4gIH1cbiAgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfaGFzaFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9maW5hbCwgY2FtbF9oYXNoX21peF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2hhc2goaCwgdil7XG4gIHZhciBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCx2KTtcbiAgdmFyIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuZnVuY3Rpb24gY2FtbF91cGRhdGVfZHVtbXkgKHgsIHkpIHtcbiAgaWYoIHkuZnVuICkgeyB4LmZ1biA9IHkuZnVuOyByZXR1cm4gMDsgfVxuICBpZiggdHlwZW9mIHk9PT1cImZ1bmN0aW9uXCIgKSB7IHguZnVuID0geTsgcmV0dXJuIDA7IH1cbiAgdmFyIGkgPSB5Lmxlbmd0aDsgd2hpbGUgKGktLSkgeFtpXSA9IHlbaV07IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX2R1bW15X2luZml4XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2FsbG9jX2R1bW15X2luZml4ICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGYgKHgpIHsgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZi5mdW4sIFt4XSkgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19ibG9jayBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9pc19ibG9jayAoeCkgeyByZXR1cm4gKyh4IGluc3RhbmNlb2YgQXJyYXkpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9vYmpfdGFnICh4KSB7XG4gIGlmICgoeCBpbnN0YW5jZW9mIEFycmF5KSAmJiB4WzBdID09ICh4WzBdID4+PiAwKSlcbiAgICByZXR1cm4geFswXVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmICgoeCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB8fCB0eXBlb2YgeCA9PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuIDI0N1xuICBlbHNlIGlmICh4ICYmIHguY2FtbF9jdXN0b20pXG4gICAgcmV0dXJuIDI1NVxuICBlbHNlXG4gICAgcmV0dXJuIDEwMDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3RhZyAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfdGFnICh4LCB0YWcpIHsgeFswXSA9IHRhZzsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2Jsb2NrIGNvbnN0IChjb25zdCxjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2Jsb2NrICh0YWcsIHNpemUpIHtcbiAgdmFyIG8gPSBuZXcgQXJyYXkoc2l6ZSsxKTtcbiAgb1swXT10YWc7XG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IHNpemU7IGkrKykgb1tpXSA9IDA7XG4gIHJldHVybiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial93aXRoX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfd2l0aF90YWcodGFnLHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSB0YWc7XG4gIGZvcih2YXIgaSA9IDE7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2R1cCBtdXRhYmxlIChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9vYmpfZHVwICh4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbDsgaSsrICkgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial90cnVuY2F0ZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfb2JqX3RydW5jYXRlICh4LCBzKSB7XG4gIGlmIChzPD0wIHx8IHMgKyAxID4geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIk9iai50cnVuY2F0ZVwiKTtcbiAgaWYgKHgubGVuZ3RoICE9IHMgKyAxKSB4Lmxlbmd0aCA9IHMgKyAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfbWFrZV9mb3J3YXJkXG5mdW5jdGlvbiBjYW1sX29ial9tYWtlX2ZvcndhcmQgKGIsdikge1xuICBiWzBdPTI1MDtcbiAgYlsxXT12O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwXG5mdW5jdGlvbiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwKHgsaSxvbGQsbil7XG4gIGlmKHhbaSsxXSA9PSBvbGQpIHtcbiAgICB4W2krMV0gPSBuO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX3NoYXJlZFxuZnVuY3Rpb24gY2FtbF9vYmpfaXNfc2hhcmVkKHgpe1xuICByZXR1cm4gMVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkIGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9sYXp5X21ha2VfZm9yd2FyZCAodikgeyByZXR1cm4gWzI1MCwgdl07IH1cblxuLy8vLy8vLy8vLy8vLyBDYW1saW50ZXJuYWxPT1xuLy9Qcm92aWRlczogY2FtbF9nZXRfcHVibGljX21ldGhvZCBjb25zdFxudmFyIGNhbWxfbWV0aG9kX2NhY2hlID0gW107XG5mdW5jdGlvbiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIChvYmosIHRhZywgY2FjaGVpZCkge1xuICB2YXIgbWV0aHMgPSBvYmpbMV07XG4gIHZhciBvZnMgPSBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXTtcbiAgaWYgKG9mcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gTWFrZSBzdXJlIHRoZSBhcnJheSBpcyBub3Qgc3BhcnNlXG4gICAgZm9yICh2YXIgaSA9IGNhbWxfbWV0aG9kX2NhY2hlLmxlbmd0aDsgaSA8IGNhY2hlaWQ7IGkrKylcbiAgICAgIGNhbWxfbWV0aG9kX2NhY2hlW2ldID0gMDtcbiAgfSBlbHNlIGlmIChtZXRoc1tvZnNdID09PSB0YWcpIHtcbiAgICByZXR1cm4gbWV0aHNbb2ZzIC0gMV07XG4gIH1cbiAgdmFyIGxpID0gMywgaGkgPSBtZXRoc1sxXSAqIDIgKyAxLCBtaTtcbiAgd2hpbGUgKGxpIDwgaGkpIHtcbiAgICBtaSA9ICgobGkraGkpID4+IDEpIHwgMTtcbiAgICBpZiAodGFnIDwgbWV0aHNbbWkrMV0pIGhpID0gbWktMjtcbiAgICBlbHNlIGxpID0gbWk7XG4gIH1cbiAgY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF0gPSBsaSArIDE7XG4gIC8qIHJldHVybiAwIGlmIHRhZyBpcyBub3QgdGhlcmUgKi9cbiAgcmV0dXJuICh0YWcgPT0gbWV0aHNbbGkrMV0gPyBtZXRoc1tsaV0gOiAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vb19sYXN0X2lkXG52YXIgY2FtbF9vb19sYXN0X2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9zZXRfb29faWRcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9zZXRfb29faWQgKGIpIHtcbiAgYlsyXT1jYW1sX29vX2xhc3RfaWQrKztcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnJlc2hfb29faWQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9mcmVzaF9vb19pZCgpIHtcbiAgcmV0dXJuIGNhbWxfb29fbGFzdF9pZCsrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3Jhd19maWVsZChvLGkpIHsgcmV0dXJuIG9baSsxXSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF9yYXdfZmllbGQobyxpLHYpIHsgcmV0dXJuIG9baSsxXSA9IHYgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yZWFjaGFibGVfd29yZHNcbmZ1bmN0aW9uIGNhbWxfb2JqX3JlYWNoYWJsZV93b3JkcyhvKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2FkZF9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfb2JqX2FkZF9vZmZzZXQodixvZmZzZXQpIHtcbiAgY2FtbF9mYWlsd2l0aChcIk9iai5hZGRfb2Zmc2V0IGlzIG5vdCBzdXBwb3J0ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfb2JqX3VwZGF0ZV90YWcoYixvLG4pIHtcbiAgICBpZihiWzBdPT1vKSB7IGJbMF0gPSBuOyByZXR1cm4gMSB9XG4gICAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nXG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmcobykge1xuICBpZiAoKG8gaW5zdGFuY2VvZiBBcnJheSkgJiYgb1swXSA9PSAob1swXSA+Pj4gMCkgJiZcbiAgICAgIGNhbWxfb2JqX3VwZGF0ZV90YWcobywgMjQ2LCAyNDQpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkXG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG4gIGZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZChvKSB7XG4gIGNhbWxfb2JqX3VwZGF0ZV90YWcobywyNDQsMjUwKTtcbiAgcmV0dXJuIDA7IC8vIHVuaXRcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVzZXRfdG9fbGF6eVxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenkobykge1xuICBjYW1sX29ial91cGRhdGVfdGFnKG8sMjQ0LDI0Nik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVhZF9yZXN1bHRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3JlYWRfcmVzdWx0KG8pIHtcbiAgcmV0dXJuIChjYW1sX29ial90YWcobykgPT0gMjUwKT9vWzFdOm87XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG4vL1ZlcnNpb246IDwgNVxuZnVuY3Rpb24gY2FtbF9pc19jb250aW51YXRpb25fdGFnKHQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodCkge1xuICByZXR1cm4gKHQgPT0gMjQ1KSA/IDEgOiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF90YWdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKXtcbiAgaWYgKHR5cGVvZiBhID09PSBcIm51bWJlclwiKSByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhhKSkgcmV0dXJuIDI1MjsgLy8gc3RyaW5nX3RhZ1xuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhhKSkgcmV0dXJuIDEyNTI7IC8vIG9jYW1sIHN0cmluZyAoaWYgZGlmZmVyZW50IGZyb20gYnl0ZXMpXG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBBcnJheSAmJiBhWzBdID09PSAoYVswXT4+PjApICYmIGFbMF0gPD0gMjU1KSB7XG4gICAgLy8gTG9vayBsaWtlIGFuIG9jYW1sIGJsb2NrXG4gICAgdmFyIHRhZyA9IGFbMF0gfCAwO1xuICAgIC8vIGlnbm9yZSBkb3VibGVfYXJyYXlfdGFnIGJlY2F1c2Ugd2UgY2Fubm90IGFjY3VyYXRlbHkgc2V0XG4gICAgLy8gdGhpcyB0YWcgd2hlbiB3ZSBjcmVhdGUgYW4gYXJyYXkgb2YgZmxvYXQuXG4gICAgcmV0dXJuICh0YWcgPT0gMjU0KT8wOnRhZ1xuICB9XG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBTdHJpbmcpIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcInN0cmluZ1wiKSByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIE51bWJlcikgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGEgJiYgYS5jYW1sX2N1c3RvbSkgcmV0dXJuIDEyNTU7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmIChhICYmIGEuY29tcGFyZSkgcmV0dXJuIDEyNTY7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcImZ1bmN0aW9uXCIpIHJldHVybiAxMjQ3OyAvLyBsaWtlIGNsb3N1cmVfdGFnICgyNDcpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwic3ltYm9sXCIpIHJldHVybiAxMjUxO1xuICByZXR1cm4gMTAwMTsgLy9vdXRfb2ZfaGVhcF90YWdcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKXtcbiAgcmV0dXJuIGNhbWxfY3VzdG9tX29wc1thLmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0uY29tcGFyZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShudW0sIGN1c3RvbSwgc3dhcCwgdG90YWwpIHtcbiAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oY3VzdG9tKTtcbiAgaWYoY29tcCkge1xuICAgIHZhciB4ID0gKHN3YXAgPiAwKT9jb21wKGN1c3RvbSxudW0sdG90YWwpOmNvbXAobnVtLGN1c3RvbSx0b3RhbCk7XG4gICAgaWYodG90YWwgJiYgeCAhPSB4KSByZXR1cm4gc3dhcDsgLy8gdG90YWwgJiYgbmFuXG4gICAgaWYoK3ggIT0gK3gpIHJldHVybiAreDsgLy8gbmFuXG4gICAgaWYoKHggfCAwKSAhPSAwKSByZXR1cm4gKHggfCAwKTsgLy8gIW5hblxuICB9XG4gIHJldHVybiBzd2FwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWwgKGNvbnN0LCBjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludF9jb21wYXJlLCBjYW1sX3N0cmluZ19jb21wYXJlLCBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tLCBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRvdGFsKSB7XG4gIHZhciBzdGFjayA9IFtdO1xuICBmb3IoOzspIHtcbiAgICBpZiAoISh0b3RhbCAmJiBhID09PSBiKSkge1xuICAgICAgdmFyIHRhZ19hID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSk7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZih0YWdfYSA9PSAyNTApIHsgYSA9IGFbMV07IGNvbnRpbnVlIH1cblxuICAgICAgdmFyIHRhZ19iID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYik7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZih0YWdfYiA9PSAyNTApIHsgYiA9IGJbMV07IGNvbnRpbnVlIH1cblxuICAgICAgLy8gdGFncyBhcmUgZGlmZmVyZW50XG4gICAgICBpZih0YWdfYSAhPT0gdGFnX2IpIHtcbiAgICAgICAgaWYodGFnX2EgPT0gMTAwMCkge1xuICAgICAgICAgIGlmKHRhZ19iID09IDEyNTUpIHsgLy9pbW1lZGlhdGUgY2FuIGNvbXBhcmUgYWdhaW5zdCBjdXN0b21cbiAgICAgICAgICAgIHJldHVybiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20oYSwgYiwgLTEsIHRvdGFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYodGFnX2IgPT0gMTAwMCkge1xuICAgICAgICAgIGlmKHRhZ19hID09IDEyNTUpIHsgLy9pbW1lZGlhdGUgY2FuIGNvbXBhcmUgYWdhaW5zdCBjdXN0b21cbiAgICAgICAgICAgIHJldHVybiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20oYiwgYSwgMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gMVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAodGFnX2EgPCB0YWdfYik/LTE6MTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCh0YWdfYSl7XG4gICAgICAgIC8vIDI0NjogTGF6eV90YWcgaGFuZGxlZCBiZWxsb3dcbiAgICAgIGNhc2UgMjQ3OiAvLyBDbG9zdXJlX3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI0ODogLy8gT2JqZWN0XG4gICAgICAgIHZhciB4ID0gY2FtbF9pbnRfY29tcGFyZShhWzJdLCBiWzJdKTtcbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDk6IC8vIEluZml4XG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjUwOiAvLyBGb3J3YXJkIHRhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRm9yd2FyZF90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUxOiAvL0Fic3RyYWN0XG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBhYnN0cmFjdCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MjogLy8gT0NhbWwgYnl0ZXNcbiAgICAgICAgaWYgKGEgIT09IGIpIHtcbiAgICAgICAgICB2YXIgeCA9IGNhbWxfYnl0ZXNfY29tcGFyZShhLCBiKTtcbiAgICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MzogLy8gRG91YmxlX3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlbiwgaGFuZGxlZCBhYm92ZVxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IERvdWJsZV9hcnJheV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTU6IC8vIEN1c3RvbV90YWdcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBDdXN0b21fdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNDc6IC8vIEZ1bmN0aW9uXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjU1OiAvLyBDdXN0b21cbiAgICAgICAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYSk7XG4gICAgICAgIGlmKGNvbXAgIT0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGIpKXtcbiAgICAgICAgICByZXR1cm4gKGEuY2FtbF9jdXN0b208Yi5jYW1sX2N1c3RvbSk/LTE6MTtcbiAgICAgICAgfVxuICAgICAgICBpZighY29tcClcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBhYnN0cmFjdCB2YWx1ZVwiKTtcbiAgICAgICAgdmFyIHggPSBjb21wKGEsYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIFVOT1JERVJFRFxuICAgICAgICAgIHJldHVybiB0b3RhbD8tMTp4O1xuICAgICAgICB9XG4gICAgICAgIGlmKHggIT09ICh4fDApKXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjU2OiAvLyBjb21wYXJlIGZ1bmN0aW9uXG4gICAgICAgIHZhciB4ID0gYS5jb21wYXJlKGIsdG90YWwpO1xuICAgICAgICBpZih4ICE9IHgpIHsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwMDA6IC8vIE51bWJlclxuICAgICAgICBhID0gK2E7XG4gICAgICAgIGIgPSArYjtcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMTogLy8gVGhlIHJlc3RcbiAgICAgICAgLy8gSGVyZSB3ZSBjYW4gYmUgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAgICAgLy8gMS4gSmF2YVNjcmlwdCBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy8gMi4gSmF2YVNjcmlwdCBvYmplY3QgdGhhdCBjYW4gYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy8gMy4gSmF2YVNjcmlwdCBvYmplY3QgdGhhbiBjYW5ub3QgYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy9cbiAgICAgICAgLy8gKDMpIHdpbGwgcmFpc2UgYSBbVHlwZUVycm9yXVxuICAgICAgICAvLyAoMikgd2lsbCBjb2VyY2UgdG8gcHJpbWl0aXZlIHR5cGVzIHVzaW5nIFt2YWx1ZU9mXSBvciBbdG9TdHJpbmddXG4gICAgICAgIC8vICgyKSBhbmQgKDMpLCBhZnRlciBldmVudHVhbCBjb2VyY2lvblxuICAgICAgICAvLyAtIGlmIGEgYW5kIGIgYXJlIHN0cmluZ3MsIGFwcGx5IGxleGljb2dyYXBoaWMgY29tcGFyaXNvblxuICAgICAgICAvLyAtIGlmIGEgb3IgYiBhcmUgbm90IHN0cmluZ3MsIGNvbnZlcnQgYSBhbmQgYiB0byBudW1iZXJcbiAgICAgICAgLy8gICBhbmQgYXBwbHkgc3RhbmRhcmQgY29tcGFyaXNvblxuICAgICAgICAvL1xuICAgICAgICAvLyBFeGNlcHRpb246IGAhPWAgd2lsbCBub3QgY29lcmNlL2NvbnZlcnQgaWYgYm90aCBhIGFuZCBiIGFyZSBvYmplY3RzXG4gICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICBpZiAoYSAhPSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICBpZiAoYSA9PSBhKSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoYiA9PSBiKSByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTE6IC8vIEphdmFTY3JpcHQgU3ltYm9sLCBubyBvcmRlcmluZy5cbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTI6IC8vIG9jYW1sIHN0cmluZ3NcbiAgICAgICAgdmFyIGEgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGEpO1xuICAgICAgICB2YXIgYiA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYik7XG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjA6IC8vIGphdmFzY3JpcHQgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGEudG9TdHJpbmcoKTtcbiAgICAgICAgdmFyIGIgPSBiLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjQ2OiAvLyBMYXp5X3RhZ1xuICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheVxuICAgICAgZGVmYXVsdDogLy8gQmxvY2sgd2l0aCBvdGhlciB0YWdcbiAgICAgICAgaWYoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHRhZ19hKSkge1xuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGNvbnRpbnVhdGlvbiB2YWx1ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoYS5sZW5ndGggIT0gYi5sZW5ndGgpIHJldHVybiAoYS5sZW5ndGggPCBiLmxlbmd0aCk/LTE6MTtcbiAgICAgICAgaWYgKGEubGVuZ3RoID4gMSkgc3RhY2sucHVzaChhLCBiLCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzdGFjay5sZW5ndGggPT0gMCkgcmV0dXJuIDA7XG4gICAgdmFyIGkgPSBzdGFjay5wb3AoKTtcbiAgICBiID0gc3RhY2sucG9wKCk7XG4gICAgYSA9IHN0YWNrLnBvcCgpO1xuICAgIGlmIChpICsgMSA8IGEubGVuZ3RoKSBzdGFjay5wdXNoKGEsIGIsIGkgKyAxKTtcbiAgICBhID0gYVtpXTtcbiAgICBiID0gYltpXTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmUgKGEsIGIpIHsgcmV0dXJuIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRydWUpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9jb21wYXJlIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfaW50X2NvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKGEgPCBiKSByZXR1cm4gKC0xKTsgaWYgKGEgPT0gYikgcmV0dXJuIDA7IHJldHVybiAxO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA9PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX25vdGVxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSAhPSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ncmVhdGVyZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVyZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID49IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJ0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZ3JlYXRlcnRoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID4gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbGVzc2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzdGhhbiBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3N0aGFuICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8IDApOyB9XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWI6IGNvZGUgc3BlY2lmaWMgdG8gSnNfb2Zfb2NhbWxcblxuLy9Qcm92aWRlczogY2FtbF9qc19vbl9pZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19vbl9pZSAoKSB7XG4gIHZhciB1YSA9XG4gICAgICAoZ2xvYmFsVGhpcy5uYXZpZ2F0b3ImJmdsb2JhbFRoaXMubmF2aWdhdG9yLnVzZXJBZ2VudClcbiAgICAgID9nbG9iYWxUaGlzLm5hdmlnYXRvci51c2VyQWdlbnQ6XCJcIjtcbiAgcmV0dXJuIHVhLmluZGV4T2YoXCJNU0lFXCIpICE9IC0xICYmIHVhLmluZGV4T2YoXCJPcGVyYVwiKSAhPSAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2h0bWxfZXNjYXBlIGNvbnN0IChjb25zdClcbnZhciBjYW1sX2pzX3JlZ2V4cHMgPSB7IGFtcDovJi9nLCBsdDovPC9nLCBxdW90Oi9cXFwiL2csIGFsbDovWyY8XFxcIl0vIH07XG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZXNjYXBlIChzKSB7XG4gIGlmICghY2FtbF9qc19yZWdleHBzLmFsbC50ZXN0KHMpKSByZXR1cm4gcztcbiAgcmV0dXJuIHMucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMuYW1wLCBcIiZhbXA7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmx0LCBcIiZsdDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMucXVvdCwgXCImcXVvdDtcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lbnRpdGllc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VudGl0aWVzKHMpIHtcbiAgdmFyIGVudGl0eSA9IC9eJiM/WzAtOWEtekEtWl0rOyQvXG4gIGlmKHMubWF0Y2goZW50aXR5KSlcbiAge1xuICAgIHZhciBzdHIsIHRlbXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gICAgdGVtcC5pbm5lckhUTUw9IHM7XG4gICAgc3RyPSB0ZW1wLnRleHRDb250ZW50IHx8IHRlbXAuaW5uZXJUZXh0O1xuICAgIHRlbXA9bnVsbDtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJJbnZhbGlkIGVudGl0eSBcIiArIHMpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0X2NvbnNvbGUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0X2NvbnNvbGUgKCkge1xuICB2YXIgYyA9IGNvbnNvbGU7XG4gIHZhciBtID0gW1wibG9nXCIsIFwiZGVidWdcIiwgXCJpbmZvXCIsIFwid2FyblwiLCBcImVycm9yXCIsIFwiYXNzZXJ0XCIsIFwiZGlyXCIsIFwiZGlyeG1sXCIsXG4gICAgICAgICAgIFwidHJhY2VcIiwgXCJncm91cFwiLCBcImdyb3VwQ29sbGFwc2VkXCIsIFwiZ3JvdXBFbmRcIiwgXCJ0aW1lXCIsIFwidGltZUVuZFwiXTtcbiAgZnVuY3Rpb24gZiAoKSB7fVxuICBmb3IgKHZhciBpID0gMDsgaSA8IG0ubGVuZ3RoOyBpKyspIGlmICghY1ttW2ldXSkgY1ttW2ldXT1mO1xuICByZXR1cm4gYztcbn1cblxuLy9Qcm92aWRlczogY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGUodW5pdCl7XG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLlhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5YTUxIdHRwUmVxdWVzdCB9IGNhdGNoIChlKSB7IH07XG4gIH1cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1zeG1sMi5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNc3htbDMuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTWljcm9zb2Z0LlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgfVxuICBjYW1sX2ZhaWx3aXRoKFwiQ2Fubm90IGNyZWF0ZSBhIFhNTEh0dHBSZXF1ZXN0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmKGV4bi5qc19lcnJvcikgeyByZXR1cm4gZXhuLmpzX2Vycm9yOyB9XG4gIHJldHVybiBudWxsO1xufVxuIiwiLy8vLy8vLy8vIEJJR1NUUklOR1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nKGgsIGJzKSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLGJzLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIoYnMpIHtcbiAgcmV0dXJuIGJzLmRhdGEuYnVmZmVyXG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ190b190eXBlZF9hcnJheSBtdXRhYmxlXG5mdW5jdGlvbiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkoYnMpIHtcbiAgcmV0dXJuIGJzLmRhdGFcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIoYWIpIHtcbiAgdmFyIHRhID0gbmV3IFVpbnQ4QXJyYXkoYWIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKDEyLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkoYmEpIHtcbiAgdmFyIHRhID0gbmV3IFVpbnQ4QXJyYXkoYmEuYnVmZmVyLCBiYS5ieXRlT2Zmc2V0LCBiYS5sZW5ndGggKiBiYS5CWVRFU19QRVJfRUxFTUVOVCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX21lbWNtcFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfbWVtY21wKHMxLCBwb3MxLCBzMiwgcG9zMiwgbGVuKXtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBhID0gY2FtbF9iYV9nZXRfMShzMSxwb3MxICsgaSk7XG4gICAgdmFyIGIgPSBjYW1sX2JhX2dldF8xKHMyLHBvczIgKyBpKTtcbiAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEoYmExLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMS5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKG9mczEgKyBsZW4gPiBiYTEuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gYmExLmRhdGEuc3ViYXJyYXkob2ZzMSxvZnMxK2xlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxwb3MyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3RyMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKHBvczEgKyBsZW4gPiBjYW1sX21sX3N0cmluZ19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEoc3RyMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKHBvczEgKyBsZW4gPiBjYW1sX21sX2J5dGVzX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoc3RyMSkuc2xpY2UocG9zMSxwb3MxICsgbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLG9mczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoYmExLCBwb3MxLCBieXRlczIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMS5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMxID0gYmExLm9mZnNldChwb3MxKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKHBvczIgKyBsZW4gPiBjYW1sX21sX2J5dGVzX2xlbmd0aChieXRlczIpKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gYmExLmRhdGEuc2xpY2Uob2ZzMSwgb2ZzMStsZW4pO1xuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShzbGljZSksIDAsIGJ5dGVzMiwgcG9zMiwgbGVuKTtcbiAgcmV0dXJuIDBcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9jaGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfY2hhbihjaGFuaWQsdG9yZWFkKXtcbiAgdmFyIGN0eCA9IGNhbWxfTUQ1SW5pdCgpO1xuICB2YXIgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoNDA5Nik7XG4gIGlmKHRvcmVhZCA8IDApe1xuICAgIHdoaWxlKHRydWUpe1xuICAgICAgdmFyIHJlYWQgPSBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCxidWZmZXIsMCxidWZmZXIubGVuZ3RoKTtcbiAgICAgIGlmKHJlYWQgPT0gMCkgYnJlYWs7XG4gICAgICBjYW1sX01ENVVwZGF0ZShjdHgsYnVmZmVyLnN1YmFycmF5KDAsIHJlYWQpLCByZWFkKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUodG9yZWFkID4gMCkge1xuICAgICAgdmFyIHJlYWQgPSBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCxidWZmZXIsMCwgKHRvcmVhZCA+IGJ1ZmZlci5sZW5ndGggPyBidWZmZXIubGVuZ3RoIDogdG9yZWFkKSk7XG4gICAgICBpZihyZWFkID09IDApIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCxidWZmZXIuc3ViYXJyYXkoMCwgcmVhZCksIHJlYWQpO1xuICAgICAgdG9yZWFkIC09IHJlYWRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfbWQ1X2J5dGVzXG5mdW5jdGlvbiBjYW1sX21kNV9zdHJpbmcocywgb2ZzLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfbWQ1X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpLG9mcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENVRyYW5zZm9ybVxudmFyIGNhbWxfTUQ1VHJhbnNmb3JtID0gKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gYWRkICh4LCB5KSB7IHJldHVybiAoeCArIHkpIHwgMDsgfVxuICBmdW5jdGlvbiB4eChxLGEsYix4LHMsdCkge1xuICAgIGEgPSBhZGQoYWRkKGEsIHEpLCBhZGQoeCwgdCkpO1xuICAgIHJldHVybiBhZGQoKGEgPDwgcykgfCAoYSA+Pj4gKDMyIC0gcykpLCBiKTtcbiAgfVxuICBmdW5jdGlvbiBmZihhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgYykgfCAoKH5iKSAmIGQpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBnZyhhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgZCkgfCAoYyAmICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBoaChhLGIsYyxkLHgscyx0KSB7IHJldHVybiB4eChiIF4gYyBeIGQsIGEsIGIsIHgsIHMsIHQpOyB9XG4gIGZ1bmN0aW9uIGlpKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGMgXiAoYiB8ICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTsgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAodywgYnVmZmVyKSB7XG4gICAgdmFyIGEgPSB3WzBdLCBiID0gd1sxXSwgYyA9IHdbMl0sIGQgPSB3WzNdO1xuXG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMF0sIDcsIDB4RDc2QUE0NzgpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDFdLCAxMiwgMHhFOEM3Qjc1Nik7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsgMl0sIDE3LCAweDI0MjA3MERCKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWyAzXSwgMjIsIDB4QzFCRENFRUUpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDRdLCA3LCAweEY1N0MwRkFGKTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyA1XSwgMTIsIDB4NDc4N0M2MkEpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbIDZdLCAxNywgMHhBODMwNDYxMyk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsgN10sIDIyLCAweEZENDY5NTAxKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyA4XSwgNywgMHg2OTgwOThEOCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgOV0sIDEyLCAweDhCNDRGN0FGKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTcsIDB4RkZGRjVCQjEpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTFdLCAyMiwgMHg4OTVDRDdCRSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0sIDcsIDB4NkI5MDExMjIpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbMTNdLCAxMiwgMHhGRDk4NzE5Myk7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNF0sIDE3LCAweEE2Nzk0MzhFKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzE1XSwgMjIsIDB4NDlCNDA4MjEpO1xuXG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMV0sIDUsIDB4RjYxRTI1NjIpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbIDZdLCA5LCAweEMwNDBCMzQwKTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWzExXSwgMTQsIDB4MjY1RTVBNTEpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDBdLCAyMCwgMHhFOUI2QzdBQSk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNV0sIDUsIDB4RDYyRjEwNUQpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbMTBdLCA5LCAweDAyNDQxNDUzKTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWzE1XSwgMTQsIDB4RDhBMUU2ODEpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDRdLCAyMCwgMHhFN0QzRkJDOCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOV0sIDUsIDB4MjFFMUNERTYpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbMTRdLCA5LCAweEMzMzcwN0Q2KTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWyAzXSwgMTQsIDB4RjRENTBEODcpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDhdLCAyMCwgMHg0NTVBMTRFRCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDUsIDB4QTlFM0U5MDUpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbIDJdLCA5LCAweEZDRUZBM0Y4KTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWyA3XSwgMTQsIDB4Njc2RjAyRDkpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbMTJdLCAyMCwgMHg4RDJBNEM4QSk7XG5cbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyA1XSwgNCwgMHhGRkZBMzk0Mik7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgOF0sIDExLCAweDg3NzFGNjgxKTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWzExXSwgMTYsIDB4NkQ5RDYxMjIpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTRdLCAyMywgMHhGREU1MzgwQyk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMV0sIDQsIDB4QTRCRUVBNDQpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDRdLCAxMSwgMHg0QkRFQ0ZBOSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsgN10sIDE2LCAweEY2QkI0QjYwKTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWzEwXSwgMjMsIDB4QkVCRkJDNzApO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbMTNdLCA0LCAweDI4OUI3RUM2KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyAwXSwgMTEsIDB4RUFBMTI3RkEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbIDNdLCAxNiwgMHhENEVGMzA4NSk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNl0sIDIzLCAweDA0ODgxRDA1KTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyA5XSwgNCwgMHhEOUQ0RDAzOSk7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMl0sIDExLCAweEU2REI5OUU1KTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWzE1XSwgMTYsIDB4MUZBMjdDRjgpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbIDJdLCAyMywgMHhDNEFDNTY2NSk7XG5cbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyAwXSwgNiwgMHhGNDI5MjI0NCk7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsgN10sIDEwLCAweDQzMkFGRjk3KTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTUsIDB4QUI5NDIzQTcpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDVdLCAyMSwgMHhGQzkzQTAzOSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0sIDYsIDB4NjU1QjU5QzMpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbIDNdLCAxMCwgMHg4RjBDQ0M5Mik7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMF0sIDE1LCAweEZGRUZGNDdEKTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWyAxXSwgMjEsIDB4ODU4NDVERDEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDhdLCA2LCAweDZGQTg3RTRGKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzE1XSwgMTAsIDB4RkUyQ0U2RTApO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbIDZdLCAxNSwgMHhBMzAxNDMxNCk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsxM10sIDIxLCAweDRFMDgxMUExKTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyA0XSwgNiwgMHhGNzUzN0U4Mik7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMV0sIDEwLCAweEJEM0FGMjM1KTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWyAyXSwgMTUsIDB4MkFEN0QyQkIpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDldLCAyMSwgMHhFQjg2RDM5MSk7XG5cbiAgICB3WzBdID0gYWRkKGEsIHdbMF0pO1xuICAgIHdbMV0gPSBhZGQoYiwgd1sxXSk7XG4gICAgd1syXSA9IGFkZChjLCB3WzJdKTtcbiAgICB3WzNdID0gYWRkKGQsIHdbM10pO1xuICB9fSkoKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUluaXRcbmZ1bmN0aW9uIGNhbWxfTUQ1SW5pdCgpIHtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7XG4gIHZhciBiMzIgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyKTtcbiAgdmFyIGI4ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIHtsZW46MCxcbiAgICAgICAgICB3Om5ldyBVaW50MzJBcnJheShbMHg2NzQ1MjMwMSwgMHhFRkNEQUI4OSwgMHg5OEJBRENGRSwgMHgxMDMyNTQ3Nl0pLFxuICAgICAgICAgIGIzMjpiMzIsXG4gICAgICAgICAgYjg6Yjh9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VXBkYXRlXG4vL1JlcXVpcmVzOiBjYW1sX01ENVRyYW5zZm9ybVxuZnVuY3Rpb24gY2FtbF9NRDVVcGRhdGUoY3R4LCBpbnB1dCwgaW5wdXRfbGVuKXtcbiAgdmFyIGluX2J1ZiA9IGN0eC5sZW4gJiAweDNmO1xuICB2YXIgaW5wdXRfcG9zID0gMDtcbiAgY3R4LmxlbiArPSBpbnB1dF9sZW47XG4gIGlmKGluX2J1Zil7XG4gICAgdmFyIG1pc3NpbmcgPSA2NCAtIGluX2J1ZjtcbiAgICBpZihpbnB1dF9sZW4gPCBtaXNzaW5nKSB7XG4gICAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KDAsaW5wdXRfbGVuKSxpbl9idWYpO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCxtaXNzaW5nKSxpbl9idWYpO1xuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBpbnB1dF9sZW4gLT0gbWlzc2luZztcbiAgICBpbnB1dF9wb3MgKz0gbWlzc2luZztcbiAgfVxuICB3aGlsZShpbnB1dF9sZW4gPj0gNjQpe1xuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoaW5wdXRfcG9zLGlucHV0X3BvcyArIDY0KSwgMCk7XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGlucHV0X2xlbiAtPSA2NDtcbiAgICBpbnB1dF9wb3MgKz0gNjQ7XG4gIH1cbiAgaWYoaW5wdXRfbGVuKVxuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoaW5wdXRfcG9zLGlucHV0X3BvcyArIGlucHV0X2xlbiksIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX01ENVRyYW5zZm9ybVxuZnVuY3Rpb24gY2FtbF9NRDVGaW5hbChjdHgpe1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIGN0eC5iOFtpbl9idWZdID0gMHg4MDtcbiAgaW5fYnVmICsrO1xuICBpZihpbl9idWYgPiA1Nikge1xuICAgIGZvcih2YXIgaiA9IGluX2J1ZjsgaiA8IDY0OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGZvcih2YXIgaiA9IDA7IGogPCA1NjsgaisrKXtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvcih2YXIgaiA9IGluX2J1ZjsgaiA8IDU2OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH1cbiAgY3R4LmIzMlsxNF0gPSBjdHgubGVuIDw8IDM7XG4gIGN0eC5iMzJbMTVdID0gKGN0eC5sZW4gPj4gMjkpICYgMHgxRkZGRkZGRjtcbiAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICB2YXIgdCA9IG5ldyBVaW50OEFycmF5KDE2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCA0OyBqKyspXG4gICAgICB0W2kgKiA0ICsgal0gPSAoY3R4LndbaV0gPj4gKDggKiBqKSkgJiAweEZGO1xuICByZXR1cm4gdDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1SW5pdCwgY2FtbF9NRDVVcGRhdGUsIGNhbWxfTUQ1RmluYWxcbmZ1bmN0aW9uIGNhbWxfbWQ1X2J5dGVzKHMsIG9mcywgbGVuKSB7XG4gIHZhciBjdHggPSBjYW1sX01ENUluaXQoKTtcbiAgdmFyIGEgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpO1xuICBjYW1sX01ENVVwZGF0ZShjdHgsYS5zdWJhcnJheShvZnMsIG9mcyArIGxlbiksIGxlbik7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShjYW1sX01ENUZpbmFsKGN0eCkpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDIwIC0gSHVnbyBIZXV6YXJkXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBTaGFjaGFyIEl0emhha3lcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9ibG9iLzQuMDcvb3RoZXJsaWJzL3N0ci9zdHJzdHVicy5jXG4vLyBDb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vanNjb3EvanNjb3EvYmxvYi92OC4xMS9jb3EtanMvanNfc3R1Yi9zdHIuanNcblxuLy9Qcm92aWRlczogcmVfbWF0Y2hcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2dldFxuXG52YXIgcmVfbWF0Y2ggPSBmdW5jdGlvbigpe1xuICB2YXIgcmVfd29yZF9sZXR0ZXJzID0gW1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4MDAtMHgxRjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4RkYsIDB4MDMsICAgICAgIC8qIDB4MjAtMHgzRjogZGlnaXRzIDAtOSAqL1xuICAgIDB4RkUsIDB4RkYsIDB4RkYsIDB4ODcsICAgICAgIC8qIDB4NDAtMHg1RjogQSB0byBaLCBfICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHgwNywgICAgICAgLyogMHg2MC0weDdGOiBhIHRvIHogKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweDgwLTB4OUY6IG5vbmUgKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweEEwLTB4QkY6IG5vbmUgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGLCAgICAgICAvKiAweEMwLTB4REY6IExhdGluLTEgYWNjZW50ZWQgdXBwZXJjYXNlICovXG4gICAgMHhGRiwgMHhGRiwgMHg3RiwgMHhGRiAgICAgICAgLyogMHhFMC0weEZGOiBMYXRpbi0xIGFjY2VudGVkIGxvd2VyY2FzZSAqL1xuICBdO1xuXG4gIHZhciBvcGNvZGVzID0ge1xuICAgIENIQVI6IDAsIENIQVJOT1JNOiAxLCBTVFJJTkc6IDIsIFNUUklOR05PUk06IDMsIENIQVJDTEFTUzogNCxcbiAgICBCT0w6IDUsIEVPTDogNiwgV09SREJPVU5EQVJZOiA3LFxuICAgIEJFR0dST1VQOiA4LCBFTkRHUk9VUDogOSwgUkVGR1JPVVA6IDEwLFxuICAgIEFDQ0VQVDogMTEsXG4gICAgU0lNUExFT1BUOiAxMiwgU0lNUExFU1RBUjogMTMsIFNJTVBMRVBMVVM6IDE0LFxuICAgIEdPVE86IDE1LCBQVVNIQkFDSzogMTYsIFNFVE1BUks6IDE3LFxuICAgIENIRUNLUFJPR1JFU1M6IDE4XG4gIH07XG5cbiAgZnVuY3Rpb24gaXNfd29yZF9sZXR0ZXIoYykge1xuICAgIHJldHVybiAocmVfd29yZF9sZXR0ZXJzWyAgKGMgPj4gMyldID4+IChjICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluX2JpdHNldChzLGkpIHtcbiAgICByZXR1cm4gKGNhbWxfc3RyaW5nX2dldChzLChpID4+IDMpKSA+PiAoaSAmIDcpKSAmIDE7XG4gIH1cblxuICBmdW5jdGlvbiByZV9tYXRjaF9pbXBsKHJlLCBzLCBwb3MsIHBhcnRpYWwpIHtcblxuICAgIHZhciBwcm9nICAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzFdKSxcbiAgICAgICAgY3Bvb2wgICAgICAgICA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsyXSksXG4gICAgICAgIG5vcm10YWJsZSAgICAgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlWzNdKSxcbiAgICAgICAgbnVtZ3JvdXBzICAgICA9IHJlWzRdIHwgMCxcbiAgICAgICAgbnVtcmVnaXN0ZXJzICA9IHJlWzVdIHwgMCxcbiAgICAgICAgc3RhcnRjaGFycyAgICA9IHJlWzZdIHwgMDtcblxuICAgIHZhciBzID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcocyk7XG5cbiAgICB2YXIgcGMgPSAwLFxuICAgICAgICBxdWl0ID0gZmFsc2UsXG4gICAgICAgIHN0YWNrID0gW10sXG4gICAgICAgIGdyb3VwcyA9IG5ldyBBcnJheShudW1ncm91cHMpLFxuICAgICAgICByZV9yZWdpc3RlciA9IG5ldyBBcnJheShudW1yZWdpc3RlcnMpO1xuXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICBncm91cHNbaV0gPSB7c3RhcnQ6IC0xLCBlbmQ6LTF9XG4gICAgfVxuICAgIGdyb3Vwc1swXS5zdGFydCA9IHBvcztcblxuICAgIHZhciBiYWNrdHJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7XG4gICAgICAgIHZhciBpdGVtID0gc3RhY2sucG9wKCk7XG4gICAgICAgIGlmIChpdGVtLnVuZG8pIHtcbiAgICAgICAgICBpdGVtLnVuZG8ub2JqW2l0ZW0udW5kby5wcm9wXSA9IGl0ZW0udW5kby52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKGl0ZW0ucG9zKSB7XG4gICAgICAgICAgcGMgPSBpdGVtLnBvcy5wYztcbiAgICAgICAgICBwb3MgPSBpdGVtLnBvcy50eHQ7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBxdWl0ID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgdmFyIHB1c2ggPSBmdW5jdGlvbihpdGVtKSB7IHN0YWNrLnB1c2goaXRlbSk7IH07XG5cbiAgICB2YXIgYWNjZXB0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZ3JvdXBzWzBdLmVuZCA9IHBvcztcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkoMSArIGdyb3Vwcy5sZW5ndGgqMik7XG4gICAgICByZXN1bHRbMF0gPSAwOyAvLyB0YWdcbiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspe1xuICAgICAgICB2YXIgZyA9IGdyb3Vwc1tpXTtcbiAgICAgICAgaWYoZy5zdGFydCA8IDAgfHwgZy5lbmQgPCAwKSB7XG4gICAgICAgICAgZy5zdGFydCA9IGcuZW5kID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0WzIqaSArIDEgXSA9IGcuc3RhcnQ7XG4gICAgICAgIHJlc3VsdFsyKmkgKyAxICsgMSBdID0gZy5lbmQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH07XG5cbiAgICB2YXIgcHJlZml4X21hdGNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYocGFydGlhbCkgcmV0dXJuIGFjY2VwdCAoKTtcbiAgICAgIGVsc2UgYmFja3RyYWNrICgpO1xuICAgIH1cblxuICAgIC8qIE1haW4gREZBIGludGVycHJldGVyIGxvb3AgKi9cbiAgICB3aGlsZSAoIXF1aXQpIHtcbiAgICAgIHZhciBvcCA9IHByb2dbcGNdICYgMHhmZixcbiAgICAgICAgICBzYXJnID0gcHJvZ1twY10gPj4gOCxcbiAgICAgICAgICB1YXJnID0gc2FyZyAmIDB4ZmYsXG4gICAgICAgICAgYyA9IHNbcG9zXSxcbiAgICAgICAgICBncm91cDtcblxuICAgICAgcGMrKztcblxuICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVI6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGMgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSTk9STTpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TVFJJTkc6XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAoYyA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklOR05PUk06XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IGFyZy5jaGFyQ29kZUF0KGkpKVxuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIGVsc2UgeyBiYWNrdHJhY2soKTsgYnJlYWs7IH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSQ0xBU1M6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CT0w6XG4gICAgICAgIGlmKHBvcyA+IDAgJiYgc1twb3MgLSAxXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuRU9MOlxuICAgICAgICBpZihwb3MgPCBzLmxlbmd0aCAmJiBzW3Bvc10gIT0gMTAgLyogXFxuICovKSB7YmFja3RyYWNrKCl9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLldPUkRCT1VOREFSWTpcbiAgICAgICAgaWYocG9zID09IDApIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1swXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjaygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzW3BvcyAtIDFdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pICE9IGlzX3dvcmRfbGV0dGVyKHNbcG9zXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjayAoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CRUdHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6Z3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ3JvdXAuc3RhcnR9fSk7XG4gICAgICAgIGdyb3VwLnN0YXJ0ID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FTkRHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6IGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDonZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5lbmR9fSk7XG4gICAgICAgIGdyb3VwLmVuZCA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUkVGR1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBpZihncm91cC5zdGFydCA8IDAgfHwgZ3JvdXAuZW5kIDwgMCkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgIGZvciAodmFyIGkgPSBncm91cC5zdGFydDsgaSA8IGdyb3VwLmVuZDsgaSsrKXtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoc1tpXSAhPSBzW3Bvc10pIHtiYWNrdHJhY2sgKCk7IGJyZWFrfVxuICAgICAgICAgIHBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRU9QVDpcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVTVEFSOlxuICAgICAgICB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSlcbiAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVBMVVM6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgfSB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQUNDRVBUOlxuICAgICAgICByZXR1cm4gYWNjZXB0KCk7XG4gICAgICBjYXNlIG9wY29kZXMuR09UTzpcbiAgICAgICAgcGMgPSBwYyArIHNhcmc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlBVU0hCQUNLOlxuICAgICAgICBwdXNoKHtwb3M6IHtwYzogcGMgKyBzYXJnLCB0eHQ6IHBvc319KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0VUTUFSSzpcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpyZV9yZWdpc3RlcixcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6IHVhcmcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcmVfcmVnaXN0ZXJbdWFyZ119fSk7XG4gICAgICAgIHJlX3JlZ2lzdGVyW3VhcmddID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEVDS1BST0dSRVNTOlxuICAgICAgICBpZiAocmVfcmVnaXN0ZXJbdWFyZ10gPT09IHBvcykgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBieXRlY29kZVwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gcmVfbWF0Y2hfaW1wbDtcbn0oKTtcblxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfZm9yd2FyZFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zZWFyY2hfZm9yd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfZm9yd2FyZFwiKVxuICB3aGlsZSAocG9zIDw9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkge1xuICAgIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgIHBvcysrO1xuICB9XG5cbiAgcmV0dXJuIFswXTsgIC8qIFt8fF0gOiBpbnQgYXJyYXkgKi9cbn1cblxuLy9Qcm92aWRlczogcmVfc2VhcmNoX2JhY2t3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9iYWNrd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfYmFja3dhcmRcIilcbiAgd2hpbGUgKHBvcyA+PSAwKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zLS07XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG5cbi8vUHJvdmlkZXM6IHJlX3N0cmluZ19tYXRjaFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zdHJpbmdfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc3RyaW5nX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9wYXJ0aWFsX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3BhcnRpYWxfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIucGFydGlhbF9tYXRjaFwiKVxuICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMSk7XG4gIGlmIChyZXMpIHJldHVybiByZXM7XG4gIGVsc2UgcmV0dXJuIFswXTtcbn1cblxuLy9Qcm92aWRlczogcmVfcmVwbGFjZW1lbnRfdGV4dFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9hcnJheV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vIGV4dGVybmFsIHJlX3JlcGxhY2VtZW50X3RleHQ6IHN0cmluZyAtPiBpbnQgYXJyYXkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuZnVuY3Rpb24gcmVfcmVwbGFjZW1lbnRfdGV4dChyZXBsLGdyb3VwcyxvcmlnKSB7XG4gIHZhciByZXBsID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhyZXBsKTtcbiAgdmFyIGxlbiA9IHJlcGwubGVuZ3RoO1xuICB2YXIgb3JpZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob3JpZyk7XG4gIHZhciByZXMgPSBcIlwiOyAvL3Jlc3VsdFxuICB2YXIgbiA9IDA7IC8vIGN1cnJlbnQgcG9zaXRpb25cbiAgdmFyIGN1cjsgLy9jdXJyZW50IGNoYXJcbiAgdmFyIHN0YXJ0LCBlbmQsIGM7XG4gIHdoaWxlKG4gPCBsZW4pe1xuICAgIGN1ciA9IHJlcGwuY2hhckF0KG4rKyk7XG4gICAgaWYoY3VyICE9ICdcXFxcJyl7XG4gICAgICByZXMgKz0gY3VyO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKG4gPT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCIpO1xuICAgICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICAgIHN3aXRjaChjdXIpe1xuICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgIHJlcyArPSBjdXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOlxuICAgICAgY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgICBjID0gK2N1cjtcbiAgICAgICAgaWYgKGMqMiA+PSBncm91cHMubGVuZ3RoIC0gMSApXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIgKTtcbiAgICAgICAgc3RhcnQgPSBjYW1sX2FycmF5X2dldChncm91cHMsYyoyKTtcbiAgICAgICAgZW5kID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLCBjKjIgKzEpO1xuICAgICAgICBpZiAoc3RhcnQgPT0gLTEpXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIpO1xuICAgICAgICByZXMrPW9yaWcuc2xpY2Uoc3RhcnQsZW5kKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXMgKz0gKCdcXFxcJyAgKyBjdXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhyZXMpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9zdHJfaW5pdGlhbGl6ZVxuZnVuY3Rpb24gY2FtbF9zdHJfaW5pdGlhbGl6ZSh1bml0KSB7XG4gIHJldHVybiAwO1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IGxleGluZy5jIDYwNDUgMjAwNC0wMS0wMSAxNjo0Mjo0M1ogZG9saWdleiAkICovXG5cbi8qIFRoZSB0YWJsZS1kcml2ZW4gYXV0b21hdG9uIGZvciBsZXhlcnMgZ2VuZXJhdGVkIGJ5IGNhbWxsZXguICovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2xleF9hcnJheShzKSB7XG4gIHMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpO1xuICB2YXIgbCA9IHMubGVuZ3RoIC8gMjtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgIGFbaV0gPSAocy5jaGFyQ29kZUF0KDIgKiBpKSB8IChzLmNoYXJDb2RlQXQoMiAqIGkgKyAxKSA8PCA4KSkgPDwgMTYgPj4gMTY7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuXG4gIGlmICghdGJsLmxleF9kZWZhdWx0KSB7XG4gICAgdGJsLmxleF9iYXNlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV0pO1xuICAgIHRibC5sZXhfYmFja3RyayA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF0pO1xuICB9XG5cbiAgdmFyIGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMobGV4YnVmW2xleF9idWZmZXJdKTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvcig7Oykge1xuICAgIC8qIExvb2t1cCBiYXNlIGFkZHJlc3Mgb3IgYWN0aW9uIG51bWJlciBmb3IgY3VycmVudCBzdGF0ZSAqL1xuICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0YXRlXTtcbiAgICBpZiAoYmFzZSA8IDApIHJldHVybiAtYmFzZS0xO1xuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09IHN0YXRlKVxuICAgICAgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfZGVmYXVsdFtzdGF0ZV07XG4gICAgLyogSWYgbm8gdHJhbnNpdGlvbiBvbiB0aGlzIGNoYXIsIHJldHVybiB0byBsYXN0IGJhY2t0cmFjayBwb2ludCAqL1xuICAgIGlmIChzdGF0ZSA8IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0X3Bvc107XG4gICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfWVsc2V7XG4gICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlmIHRoZSBFT0YgcHNldWRvLWNoYXJhY3RlciB3YXNcbiAgICAgICAgIGNvbnN1bWVkIGJ5IHRoZSBhdXRvbWF0b24gKGkuZS4gdGhlcmUgd2FzIG5vIGJhY2t0cmFjayBhYm92ZSlcbiAgICAgICovXG4gICAgICBpZiAoYyA9PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogTmV3IGxleGVyIGVuZ2luZSwgd2l0aCBtZW1vcnkgb2YgcG9zaXRpb25zICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9sZXhfcnVuX21lbShzLCBpLCBtZW0sIGN1cnJfcG9zKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm47XG4gICAgdmFyIHNyYyA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChzcmMgPT0gMHhmZilcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBjdXJyX3BvcztcbiAgICBlbHNlXG4gICAgICBtZW0gW2RzdCArIDFdID0gbWVtIFtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fdGFnKHMsIGksIG1lbSkge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChkc3QgPT0gMHhmZikgcmV0dXJuIDtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IC0xO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbmV3X2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9tZW0gPSAxMDtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuICB2YXIgbGV4X2Jhc2VfY29kZSA9IDY7XG4gIHZhciBsZXhfYmFja3Rya19jb2RlID0gNztcbiAgdmFyIGxleF9kZWZhdWx0X2NvZGUgPSA4O1xuICB2YXIgbGV4X3RyYW5zX2NvZGUgPSA5O1xuICB2YXIgbGV4X2NoZWNrX2NvZGUgPSAxMDtcbiAgdmFyIGxleF9jb2RlID0gMTE7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHRfY29kZSkge1xuICAgIHRibC5sZXhfYmFzZV9jb2RlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV9jb2RlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrX2NvZGUgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrX2NvZGVdKTtcbiAgICB0YmwubGV4X2NoZWNrX2NvZGUgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrX2NvZGVdKTtcbiAgICB0YmwubGV4X3RyYW5zX2NvZGUgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zX2NvZGVdKTtcbiAgICB0YmwubGV4X2RlZmF1bHRfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRfY29kZV0pO1xuICB9XG4gIGlmICh0YmwubGV4X2NvZGUgPT0gbnVsbCkgdGJsLmxleF9jb2RlID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh0YmxbbGV4X2NvZGVdKTtcblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkge1xuICAgICAgdmFyIHBjX29mZiA9IHRibC5sZXhfYmFzZV9jb2RlW3N0YXRlXTtcbiAgICAgIGNhbWxfbGV4X3J1bl90YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSk7XG4gICAgICByZXR1cm4gLWJhc2UtMTtcbiAgICB9XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgdmFyIHBjX29mZiA9IHRibC5sZXhfYmFja3Rya19jb2RlW3N0YXRlXTtcbiAgICAgIGNhbWxfbGV4X3J1bl90YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSk7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKXtcbiAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PSAwKVxuICAgICAgICByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2VcbiAgICAgICAgYyA9IDI1NjtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIFJlYWQgbmV4dCBpbnB1dCBjaGFyICovXG4gICAgICBjID0gYnVmZmVyW2xleGJ1ZltsZXhfY3Vycl9wb3NdXTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdICsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIHZhciBwc3RhdGUgPSBzdGF0ZSA7XG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09IHN0YXRlKVxuICAgICAgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfZGVmYXVsdFtzdGF0ZV07XG4gICAgLyogSWYgbm8gdHJhbnNpdGlvbiBvbiB0aGlzIGNoYXIsIHJldHVybiB0byBsYXN0IGJhY2t0cmFjayBwb2ludCAqL1xuICAgIGlmIChzdGF0ZSA8IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0X3Bvc107XG4gICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfWVsc2V7XG4gICAgICAvKiBJZiBzb21lIHRyYW5zaXRpb24sIGdldCBhbmQgcGVyZm9ybSBtZW1vcnkgbW92ZXMgKi9cbiAgICAgIHZhciBiYXNlX2NvZGUgPSB0YmwubGV4X2Jhc2VfY29kZVtwc3RhdGVdLCBwY19vZmY7XG4gICAgICBpZiAodGJsLmxleF9jaGVja19jb2RlW2Jhc2VfY29kZSArIGNdID09IHBzdGF0ZSlcbiAgICAgICAgcGNfb2ZmID0gdGJsLmxleF90cmFuc19jb2RlW2Jhc2VfY29kZSArIGNdO1xuICAgICAgZWxzZVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X2RlZmF1bHRfY29kZVtwc3RhdGVdO1xuICAgICAgaWYgKHBjX29mZiA+IDApXG4gICAgICAgIGNhbWxfbGV4X3J1bl9tZW1cbiAgICAgICh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dLCBsZXhidWZbbGV4X2N1cnJfcG9zXSk7XG4gICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlmIHRoZSBFT0YgcHNldWRvLWNoYXJhY3RlciB3YXNcbiAgICAgICAgIGNvbnN1bWVkIGJ5IHRoZSBhdXRvbWF0b24gKGkuZS4gdGhlcmUgd2FzIG5vIGJhY2t0cmFjayBhYm92ZSlcbiAgICAgICovXG4gICAgICBpZiAoYyA9PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gQXJyYXlcblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9zdWIgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9zdWIgKGEsIGksIGxlbikge1xuICB2YXIgYTIgPSBuZXcgQXJyYXkobGVuKzEpO1xuICBhMlswXT0wO1xuICBmb3IodmFyIGkyID0gMSwgaTE9IGkrMTsgaTIgPD0gbGVuOyBpMisrLGkxKysgKXtcbiAgICBhMltpMl09YVtpMV07XG4gIH1cbiAgcmV0dXJuIGEyO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2FwcGVuZCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X2FwcGVuZChhMSwgYTIpIHtcbiAgdmFyIGwxID0gYTEubGVuZ3RoLCBsMiA9IGEyLmxlbmd0aDtcbiAgdmFyIGwgPSBsMStsMi0xXG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBhWzBdID0gMDtcbiAgdmFyIGkgPSAxLGogPSAxO1xuICBmb3IoO2k8bDE7aSsrKSBhW2ldPWExW2ldO1xuICBmb3IoO2k8bDtpKyssaisrKSBhW2ldPWEyW2pdO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9jb25jYXQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9jb25jYXQobCkge1xuICB2YXIgYSA9IFswXTtcbiAgd2hpbGUgKGwgIT09IDApIHtcbiAgICB2YXIgYiA9IGxbMV07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiLmxlbmd0aDsgaSsrKSBhLnB1c2goYltpXSk7XG4gICAgbCA9IGxbMl07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9ibGl0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIGlmIChpMiA8PSBpMSkge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IGxlbjsgaisrKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBqID0gbGVuOyBqID49IDE7IGotLSkgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH07XG4gIHJldHVybiAwO1xufVxuXG4vLy8vLy8vLy8vLy8vIFBlcnZhc2l2ZVxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9zZXQgKGFycmF5LCBpbmRleCwgbmV3dmFsKSB7XG4gIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYXJyYXlbaW5kZXgrMV09bmV3dmFsOyByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9nZXQgbXV0YWJsZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2FycmF5X2dldCAoYXJyYXksIGluZGV4KSB7XG4gIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5W2luZGV4KzFdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfZmlsbChhcnJheSwgb2ZzLCBsZW4sIHYpe1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIGFycmF5W29mcytpKzFdID0gdjtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jaGVja19ib3VuZCAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2NoZWNrX2JvdW5kIChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKGluZGV4ID4+PiAwID49IGFycmF5Lmxlbmd0aCAtIDEpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfdmVjdCBjb25zdCAoY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21ha2VfdmVjdCAobGVuLCBpbml0KSB7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0wO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gaW5pdDtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9mbG9hdF92ZWN0IGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV9mbG9hdF92ZWN0KGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlKGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuIiwiLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzXG52YXIgY2FtbF9kb21haW5fZGxzID0gWzBdO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9kbHNcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX2Rsc19zZXQoYSkge1xuICBjYW1sX2RvbWFpbl9kbHMgPSBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9kbHNcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX2Rsc19nZXQodW5pdCkge1xuICByZXR1cm4gY2FtbF9kb21haW5fZGxzO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2xvYWRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2xvYWQocmVmKXtcbiAgcmV0dXJuIHJlZlsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfY2FzXG5mdW5jdGlvbiBjYW1sX2F0b21pY19jYXMocmVmLG8sbikge1xuICBpZihyZWZbMV0gPT09IG8pe1xuICAgIHJlZlsxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2ZldGNoX2FkZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZmV0Y2hfYWRkKHJlZiwgaSkge1xuICB2YXIgb2xkID0gcmVmWzFdO1xuICByZWZbMV0gKz0gaTtcbiAgcmV0dXJuIG9sZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfZXhjaGFuZ2VcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2V4Y2hhbmdlKHJlZiwgdikge1xuICB2YXIgciA9IHJlZlsxXTtcbiAgcmVmWzFdID0gdjtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZChhKSB7XG4gIHJldHVybiBbMCwgYV1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXG4vL1ZlcnNpb246IDwgNS4yXG52YXIgY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXyA9IFswXVxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuKHVuaXQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl9cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9zZXRfbmFtZVxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fc2V0X25hbWUoX25hbWUpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XG5mdW5jdGlvbiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCh1bml0KSB7IHJldHVybiAxIH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9pZFxudmFyIGNhbWxfZG9tYWluX2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA+PSA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMVxuZnVuY3Rpb24gY2FtbF9kb21haW5fc3Bhd24oZix0ZXJtX3N5bmMpe1xuICAgIHZhciBpZCA9IGNhbWxfZG9tYWluX2xhdGVzdF9pZHgrKztcbiAgICB2YXIgb2xkID0gY2FtbF9kb21haW5faWQ7XG4gICAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLFswXSk7XG4gICAgY2FtbF9kb21haW5faWQgPSBvbGQ7XG4gICAgY2FtbF9tbF9tdXRleF91bmxvY2sodGVybV9zeW5jWzJdKTtcbiAgICAvL1RPRE86IGZpeCBleG4gY2FzZVxuICAgIHRlcm1fc3luY1sxXSA9IFswLCBbMCwgcmVzXV07XG4gICAgcmV0dXJuIGlkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9zcGF3blxuLy9SZXF1aXJlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG4vL1ZlcnNpb246IDwgNS4yXG52YXIgY2FtbF9kb21haW5fbGF0ZXN0X2lkeCA9IDFcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX3NwYXduKGYsbXV0ZXgpe1xuICAgIHZhciBpZCA9IGNhbWxfZG9tYWluX2xhdGVzdF9pZHgrKztcbiAgICB2YXIgb2xkID0gY2FtbF9kb21haW5faWQ7XG4gICAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLFswXSk7XG4gICAgY2FtbF9kb21haW5faWQgPSBvbGQ7XG4gICAgY2FtbF9tbF9tdXRleF91bmxvY2sobXV0ZXgpO1xuICAgIHJldHVybiBpZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX2lkKHVuaXQpe1xuICAgIHJldHVybiBjYW1sX2RvbWFpbl9pZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXhcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX2NwdV9yZWxheCh1bml0KXtcbiAgICByZXR1cm4gMDtcbn1cbiIsIlxuLy9Qcm92aWRlczogTWxNdXRleFxuZnVuY3Rpb24gTWxNdXRleCgpIHtcbiAgdGhpcy5sb2NrZWQgPSBmYWxzZVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X25ld1xuLy9SZXF1aXJlczogTWxNdXRleFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9uZXcodW5pdCkge1xuICByZXR1cm4gbmV3IE1sTXV0ZXgoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF9sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X2xvY2sodCkge1xuICBpZih0LmxvY2tlZClcbiAgICBjYW1sX2ZhaWx3aXRoKFwiTXV0ZXgubG9jazogbXV0ZXggYWxyZWFkeSBsb2NrZWQuIENhbm5vdCB3YWl0LlwiKTtcbiAgZWxzZSB0LmxvY2tlZCA9IHRydWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X3RyeV9sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3RyeV9sb2NrKHQpIHtcbiAgaWYoIXQubG9ja2VkKSB7XG4gICAgdC5sb2NrZWQgPSB0cnVlO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF91bmxvY2sodCkge1xuICB0LmxvY2tlZCA9IGZhbHNlO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBXZWFrIEFQSVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxudmFyIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ID0gM1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbnZhciBjYW1sX2VwaGVfZGF0YV9vZmZzZXQgPSAyXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2tleSh4LCBpLCB2KSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5zZXRcIik7XG4gIGlmICh2IGluc3RhbmNlb2YgT2JqZWN0ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKHhbMV0ucmVnaXN0ZXIpIHhbMV0ucmVnaXN0ZXIodiwgdW5kZWZpbmVkLCB2KTtcbiAgICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSBuZXcgZ2xvYmFsVGhpcy5XZWFrUmVmKHYpO1xuICB9XG4gIGVsc2UgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdjtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3Vuc2V0X2tleSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5zZXRcIik7XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYgJiYgeFsxXS51bnJlZ2lzdGVyKSB7XG4gICAgdmFyIG9sZCA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXS5kZXJlZigpO1xuICAgIGlmKG9sZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgY291bnQgPSAwXG4gICAgICBmb3IodmFyIGogPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaiA8IHgubGVuZ3RoOyBqKyspe1xuICAgICAgICB2YXIga2V5ID0geFtqXTtcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKXtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKVxuICAgICAgICAgIGlmKGtleSA9PT0gb2xkKSBjb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZihjb3VudCA9PSAxKSB4WzFdLnVucmVnaXN0ZXIob2xkKTtcbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdW5kZWZpbmVkO1xuICByZXR1cm4gMFxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19jcmVhdGUsIGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2NyZWF0ZSAobikge1xuICB2YXIgeCA9IGNhbWxfd2Vha19jcmVhdGUobik7XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF93ZWFrX2NyZWF0ZSAobikge1xuICBpZiAobiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmNyZWF0ZVwiKTtcbiAgdmFyIHggPSBbMjUxLFwiY2FtbF9lcGhlX2xpc3RfaGVhZFwiXTtcbiAgeC5sZW5ndGggPSBjYW1sX2VwaGVfa2V5X29mZnNldCArIG47XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9zZXRfa2V5LCBjYW1sX2VwaGVfdW5zZXRfa2V5XG5mdW5jdGlvbiBjYW1sX3dlYWtfc2V0KHgsIGksIHYpIHtcbiAgaWYodiA9PSAwKSBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsaSlcbiAgZWxzZSBjYW1sX2VwaGVfc2V0X2tleSh4LGksdlsxXSlcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9BbGlhczogY2FtbF93ZWFrX2dldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9rZXkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2tleVwiKTtcbiAgdmFyIHdlYWsgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSBdO1xuICBpZihnbG9iYWxUaGlzLldlYWtSZWYgJiYgd2VhayBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikgd2VhayA9IHdlYWsuZGVyZWYoKTtcbiAgcmV0dXJuICh3ZWFrPT09dW5kZWZpbmVkKT8wOlswLCB3ZWFrXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfa2V5LGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXAsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9BbGlhczogY2FtbF93ZWFrX2dldF9jb3B5XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmdldF9jb3B5XCIpO1xuICB2YXIgeSA9IGNhbWxfZXBoZV9nZXRfa2V5KHgsIGkpO1xuICBpZiAoeSA9PT0gMCkgcmV0dXJuIHk7XG4gIHZhciB6ID0geVsxXTtcbiAgaWYgKHogaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeildO1xuICByZXR1cm4geTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2tleSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9BbGlhczogY2FtbF93ZWFrX2NoZWNrXG5mdW5jdGlvbiBjYW1sX2VwaGVfY2hlY2tfa2V5KHgsIGkpIHtcbiAgdmFyIHdlYWsgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV07XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB3ZWFrID0gd2Vhay5kZXJlZigpO1xuICBpZih3ZWFrPT09dW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2tleVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9BbGlhczogY2FtbF93ZWFrX2JsaXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9ibGl0X2tleShhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIC8vIG1pbnVzIG9uZSBiZWNhdXNlIGNhbWxfYXJyYXlfYmxpdCB3b3JrcyBvbiBvY2FtbCBhcnJheVxuICBjYW1sX2FycmF5X2JsaXQoYTEsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTEgLSAxLFxuICAgICAgICAgICAgICAgICAgYTIsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTIgLSAxLFxuICAgICAgICAgICAgICAgICAgbGVuKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX3NldF9kYXRhLCBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfZGF0YShzcmMsIGRzdCl7XG4gIHZhciBuID0gc3JjW2NhbWxfZXBoZV9kYXRhX29mZnNldF07XG4gIGlmKG4gPT09IHVuZGVmaW5lZCkgY2FtbF9lcGhlX3Vuc2V0X2RhdGEoZHN0KTtcbiAgZWxzZSBjYW1sX2VwaGVfc2V0X2RhdGEoZHN0LCBuKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF1dO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXBcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5KHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiBbMCwgY2FtbF9vYmpfZHVwKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2RhdGEoeCwgZGF0YSl7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoISAoeFsxXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkpKSB7XG4gICAgICB4WzFdID0gbmV3IGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkoZnVuY3Rpb24gKCkgeyBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4KSB9KTtcbiAgICAgIC8vcmVnaXN0ZXIgYWxsIGtleXNcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKTtcbiAgICAgICAgICBpZihrZXkpIHhbMV0ucmVnaXN0ZXIoa2V5LCB1bmRlZmluZWQsIGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gZGF0YTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4KXtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZih4WzFdIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSl7XG4gICAgICAvL3VucmVnaXN0ZXIgYWxsIGtleXNcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKTtcbiAgICAgICAgICBpZihrZXkpIHhbMV0udW5yZWdpc3RlcihrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IHVuZGVmaW5lZDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19kYXRhKHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiAxO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiBjYW1sX2x4bV9uZXh0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfeG9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FkZFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9tdWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2V0XzFcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX25ld19zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbHhtX25leHQodikge1xuICBmdW5jdGlvbiBzaGlmdF9sKHgsIGspe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQoeCxrKTtcbiAgfVxuICBmdW5jdGlvbiBzaGlmdF9yKHgsIGspe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsayk7XG4gIH1cbiAgZnVuY3Rpb24gb3IoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfb3IoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiB4b3IoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfeG9yKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gYWRkKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X2FkZChhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIG11bChhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9tdWwoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiByb3RsKHgsIGspIHtcbiAgICByZXR1cm4gb3Ioc2hpZnRfbCh4LGspLHNoaWZ0X3IgKHgsIDY0IC0gaykpO1xuICB9XG4gIGZ1bmN0aW9uIGdldChhLCBpKSB7XG4gICAgcmV0dXJuIGNhbWxfYmFfZ2V0XzEoYSwgaSk7XG4gIH1cbiAgZnVuY3Rpb24gc2V0KGEsIGksIHgpIHtcbiAgICByZXR1cm4gY2FtbF9iYV9zZXRfMShhLCBpLCB4KTtcbiAgfVxuICB2YXIgTSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKGNhbWxfbmV3X3N0cmluZyhcIjB4ZDEzNDI1NDNkZTgyZWY5NVwiKSk7XG4gIHZhciBkYWJhID0gY2FtbF9pbnQ2NF9vZl9zdHJpbmcoY2FtbF9uZXdfc3RyaW5nKFwiMHhkYWJhMGI2ZWIwOTMyMmUzXCIpKTtcbiAgdmFyIHosIHEwLCBxMTtcbiAgdmFyIHN0ID0gdjtcbiAgdmFyIGEgPSBnZXQoc3QsMCk7XG4gIHZhciBzID0gZ2V0KHN0LDEpO1xuICB2YXIgeDAgPSBnZXQoc3QsMik7XG4gIHZhciB4MSA9IGdldChzdCwzKTtcbiAgLyogQ29tYmluaW5nIG9wZXJhdGlvbiAqL1xuICB6ID0gYWRkKHMsIHgwKTtcbiAgLyogTWl4aW5nIGZ1bmN0aW9uICovXG4gIHogPSBtdWwoeG9yKHosc2hpZnRfcih6LDMyKSksIGRhYmEpO1xuICB6ID0gbXVsKHhvcih6LHNoaWZ0X3IoeiwzMikpLCBkYWJhKTtcbiAgeiA9IHhvcih6LHNoaWZ0X3IoeiwzMikpO1xuICAvKiBMQ0cgdXBkYXRlICovXG4gIHNldChzdCwgMSwgYWRkIChtdWwocyxNKSwgYSkpO1xuICAvKiBYQkcgdXBkYXRlICovXG4gIHZhciBxMCA9IHgwXG4gIHZhciBxMSA9IHgxXG4gIHExID0geG9yKHExLHEwKTtcbiAgcTAgPSByb3RsKHEwLCAyNCk7XG4gIHEwID0geG9yKHhvcihxMCwgcTEpLCAoc2hpZnRfbChxMSwxNikpKTtcbiAgcTEgPSByb3RsKHExLCAzNyk7XG4gIHNldChzdCwgMiwgcTApO1xuICBzZXQoc3QsIDMsIHExKTtcbiAgLyogUmV0dXJuIHJlc3VsdCAqL1xuICByZXR1cm4gejtcbn1cbiIsIlxuLy9Qcm92aWRlczogenN0ZF9kZWNvbXByZXNzXG4vL1ZlcnNpb246ID49IDUuMVxudmFyIHpzdGRfZGVjb21wcmVzcyA9IChmdW5jdGlvbiAoKSB7XG5cInVzZSBzdHJpY3RcIjtcbi8vIGFsaWFzZXMgZm9yIHNob3J0ZXIgY29tcHJlc3NlZCBjb2RlIChtb3N0IG1pbmlmZXJzIGRvbid0IGRvIHRoaXMpXG52YXIgYWIgPSBBcnJheUJ1ZmZlciwgdTggPSBVaW50OEFycmF5LCB1MTYgPSBVaW50MTZBcnJheSwgaTE2ID0gSW50MTZBcnJheSwgdTMyID0gVWludDMyQXJyYXksIGkzMiA9IEludDMyQXJyYXk7XG52YXIgc2xjID0gZnVuY3Rpb24gKHYsIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLnNsaWNlKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLnNsaWNlLmNhbGwodiwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICB2YXIgbiA9IG5ldyB1OChlIC0gcyk7XG4gICAgbi5zZXQodi5zdWJhcnJheShzLCBlKSk7XG4gICAgcmV0dXJuIG47XG59O1xudmFyIGZpbGwgPSBmdW5jdGlvbiAodiwgbiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuZmlsbClcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5maWxsLmNhbGwodiwgbiwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICBmb3IgKDsgcyA8IGU7ICsrcylcbiAgICAgICAgdltzXSA9IG47XG4gICAgcmV0dXJuIHY7XG59O1xudmFyIGNwdyA9IGZ1bmN0aW9uICh2LCB0LCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5jb3B5V2l0aGluKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLmNvcHlXaXRoaW4uY2FsbCh2LCB0LCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIHdoaWxlIChzIDwgZSkge1xuICAgICAgICB2W3QrK10gPSB2W3MrK107XG4gICAgfVxufTtcbi8qKlxuICogQ29kZXMgZm9yIGVycm9ycyBnZW5lcmF0ZWQgd2l0aGluIHRoaXMgbGlicmFyeVxuICovXG4vLyBlcnJvciBjb2Rlc1xudmFyIGVjID0gW1xuICAgICdpbnZhbGlkIHpzdGQgZGF0YScsXG4gICAgJ3dpbmRvdyBzaXplIHRvbyBsYXJnZSAoPjIwNDZNQiknLFxuICAgICdpbnZhbGlkIGJsb2NrIHR5cGUnLFxuICAgICdGU0UgYWNjdXJhY3kgdG9vIGhpZ2gnLFxuICAgICdtYXRjaCBkaXN0YW5jZSB0b28gZmFyIGJhY2snLFxuICAgICd1bmV4cGVjdGVkIEVPRidcbl07XG47XG52YXIgZXJyID0gZnVuY3Rpb24gKGluZCwgbXNnLCBudCkge1xuICAgIHZhciBlID0gbmV3IEVycm9yKG1zZyB8fCBlY1tpbmRdKTtcbiAgICBlLmNvZGUgPSBpbmQ7XG4gICAgaWYgKCFudClcbiAgICAgICAgdGhyb3cgZTtcbiAgICByZXR1cm4gZTtcbn07XG52YXIgcmIgPSBmdW5jdGlvbiAoZCwgYiwgbikge1xuICAgIHZhciBpID0gMCwgbyA9IDA7XG4gICAgZm9yICg7IGkgPCBuOyArK2kpXG4gICAgICAgIG8gfD0gZFtiKytdIDw8IChpIDw8IDMpO1xuICAgIHJldHVybiBvO1xufTtcbnZhciBiNCA9IGZ1bmN0aW9uIChkLCBiKSB7IHJldHVybiAoZFtiXSB8IChkW2IgKyAxXSA8PCA4KSB8IChkW2IgKyAyXSA8PCAxNikgfCAoZFtiICsgM10gPDwgMjQpKSA+Pj4gMDsgfTtcbi8vIHJlYWQgWnN0YW5kYXJkIGZyYW1lIGhlYWRlclxudmFyIHJ6ZmggPSBmdW5jdGlvbiAoZGF0LCB3KSB7XG4gICAgdmFyIG4zID0gZGF0WzBdIHwgKGRhdFsxXSA8PCA4KSB8IChkYXRbMl0gPDwgMTYpO1xuICAgIGlmIChuMyA9PSAweDJGQjUyOCAmJiBkYXRbM10gPT0gMjUzKSB7XG4gICAgICAgIC8vIFpzdGFuZGFyZFxuICAgICAgICB2YXIgZmxnID0gZGF0WzRdO1xuICAgICAgICAvLyAgICBzaW5nbGUgc2VnbWVudCAgICAgICBjaGVja3N1bSAgICAgICAgICAgICBkaWN0IGZsYWcgICAgIGZyYW1lIGNvbnRlbnQgZmxhZ1xuICAgICAgICB2YXIgc3MgPSAoZmxnID4+IDUpICYgMSwgY2MgPSAoZmxnID4+IDIpICYgMSwgZGYgPSBmbGcgJiAzLCBmY2YgPSBmbGcgPj4gNjtcbiAgICAgICAgaWYgKGZsZyAmIDgpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIC8vIGJ5dGVcbiAgICAgICAgdmFyIGJ0ID0gNiAtIHNzO1xuICAgICAgICAvLyBkaWN0IGJ5dGVzXG4gICAgICAgIHZhciBkYiA9IGRmID09IDMgPyA0IDogZGY7XG4gICAgICAgIC8vIGRpY3Rpb25hcnkgaWRcbiAgICAgICAgdmFyIGRpID0gcmIoZGF0LCBidCwgZGIpO1xuICAgICAgICBidCArPSBkYjtcbiAgICAgICAgLy8gZnJhbWUgc2l6ZSBieXRlc1xuICAgICAgICB2YXIgZnNiID0gZmNmID8gKDEgPDwgZmNmKSA6IHNzO1xuICAgICAgICAvLyBmcmFtZSBzb3VyY2Ugc2l6ZVxuICAgICAgICB2YXIgZnNzID0gcmIoZGF0LCBidCwgZnNiKSArICgoZmNmID09IDEpICYmIDI1Nik7XG4gICAgICAgIC8vIHdpbmRvdyBzaXplXG4gICAgICAgIHZhciB3cyA9IGZzcztcbiAgICAgICAgaWYgKCFzcykge1xuICAgICAgICAgICAgLy8gd2luZG93IGRlc2NyaXB0b3JcbiAgICAgICAgICAgIHZhciB3YiA9IDEgPDwgKDEwICsgKGRhdFs1XSA+PiAzKSk7XG4gICAgICAgICAgICB3cyA9IHdiICsgKHdiID4+IDMpICogKGRhdFs1XSAmIDcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh3cyA+IDIxNDUzODY0OTYpXG4gICAgICAgICAgICBlcnIoMSk7XG4gICAgICAgIHZhciBidWYgPSBuZXcgdTgoKHcgPT0gMSA/IChmc3MgfHwgd3MpIDogdyA/IDAgOiB3cykgKyAxMik7XG4gICAgICAgIGJ1ZlswXSA9IDEsIGJ1Zls0XSA9IDQsIGJ1Zls4XSA9IDg7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiOiBidCArIGZzYixcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBsOiAwLFxuICAgICAgICAgICAgZDogZGksXG4gICAgICAgICAgICB3OiAodyAmJiB3ICE9IDEpID8gdyA6IGJ1Zi5zdWJhcnJheSgxMiksXG4gICAgICAgICAgICBlOiB3cyxcbiAgICAgICAgICAgIG86IG5ldyBpMzIoYnVmLmJ1ZmZlciwgMCwgMyksXG4gICAgICAgICAgICB1OiBmc3MsXG4gICAgICAgICAgICBjOiBjYyxcbiAgICAgICAgICAgIG06IE1hdGgubWluKDEzMTA3Miwgd3MpXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKCgobjMgPj4gNCkgfCAoZGF0WzNdIDw8IDIwKSkgPT0gMHgxODREMkE1KSB7XG4gICAgICAgIC8vIHNraXBwYWJsZVxuICAgICAgICByZXR1cm4gYjQoZGF0LCA0KSArIDg7XG4gICAgfVxuICAgIGVycigwKTtcbn07XG4vLyBtb3N0IHNpZ25pZmljYW50IGJpdCBmb3Igbm9uemVyb1xudmFyIG1zYiA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgICB2YXIgYml0cyA9IDA7XG4gICAgZm9yICg7ICgxIDw8IGJpdHMpIDw9IHZhbDsgKytiaXRzKVxuICAgICAgICA7XG4gICAgcmV0dXJuIGJpdHMgLSAxO1xufTtcbi8vIHJlYWQgZmluaXRlIHN0YXRlIGVudHJvcHlcbnZhciByZnNlID0gZnVuY3Rpb24gKGRhdCwgYnQsIG1hbCkge1xuICAgIC8vIHRhYmxlIHBvc1xuICAgIHZhciB0cG9zID0gKGJ0IDw8IDMpICsgNDtcbiAgICAvLyBhY2N1cmFjeSBsb2dcbiAgICB2YXIgYWwgPSAoZGF0W2J0XSAmIDE1KSArIDU7XG4gICAgaWYgKGFsID4gbWFsKVxuICAgICAgICBlcnIoMyk7XG4gICAgLy8gc2l6ZVxuICAgIHZhciBzeiA9IDEgPDwgYWw7XG4gICAgLy8gcHJvYmFiaWxpdGllcyBzeW1ib2xzICByZXBlYXQgICBpbmRleCAgIGhpZ2ggdGhyZXNob2xkXG4gICAgdmFyIHByb2JzID0gc3osIHN5bSA9IC0xLCByZSA9IC0xLCBpID0gLTEsIGh0ID0gc3o7XG4gICAgLy8gb3B0aW1pemF0aW9uOiBzaW5nbGUgYWxsb2NhdGlvbiBpcyBtdWNoIGZhc3RlclxuICAgIHZhciBidWYgPSBuZXcgYWIoNTEyICsgKHN6IDw8IDIpKTtcbiAgICB2YXIgZnJlcSA9IG5ldyBpMTYoYnVmLCAwLCAyNTYpO1xuICAgIC8vIHNhbWUgdmlldyBhcyBmcmVxXG4gICAgdmFyIGRzdGF0ZSA9IG5ldyB1MTYoYnVmLCAwLCAyNTYpO1xuICAgIHZhciBuc3RhdGUgPSBuZXcgdTE2KGJ1ZiwgNTEyLCBzeik7XG4gICAgdmFyIGJiMSA9IDUxMiArIChzeiA8PCAxKTtcbiAgICB2YXIgc3ltcyA9IG5ldyB1OChidWYsIGJiMSwgc3opO1xuICAgIHZhciBuYml0cyA9IG5ldyB1OChidWYsIGJiMSArIHN6KTtcbiAgICB3aGlsZSAoc3ltIDwgMjU1ICYmIHByb2JzID4gMCkge1xuICAgICAgICB2YXIgYml0cyA9IG1zYihwcm9icyArIDEpO1xuICAgICAgICB2YXIgY2J0ID0gdHBvcyA+PiAzO1xuICAgICAgICAvLyBtYXNrXG4gICAgICAgIHZhciBtc2sgPSAoMSA8PCAoYml0cyArIDEpKSAtIDE7XG4gICAgICAgIHZhciB2YWwgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAodHBvcyAmIDcpKSAmIG1zaztcbiAgICAgICAgLy8gbWFzayAoMSBmZXdlciBiaXQpXG4gICAgICAgIHZhciBtc2sxZmIgPSAoMSA8PCBiaXRzKSAtIDE7XG4gICAgICAgIC8vIG1heCBzbWFsbCB2YWx1ZVxuICAgICAgICB2YXIgbXN2ID0gbXNrIC0gcHJvYnMgLSAxO1xuICAgICAgICAvLyBzbWFsbCB2YWx1ZVxuICAgICAgICB2YXIgc3ZhbCA9IHZhbCAmIG1zazFmYjtcbiAgICAgICAgaWYgKHN2YWwgPCBtc3YpXG4gICAgICAgICAgICB0cG9zICs9IGJpdHMsIHZhbCA9IHN2YWw7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdHBvcyArPSBiaXRzICsgMTtcbiAgICAgICAgICAgIGlmICh2YWwgPiBtc2sxZmIpXG4gICAgICAgICAgICAgICAgdmFsIC09IG1zdjtcbiAgICAgICAgfVxuICAgICAgICBmcmVxWysrc3ltXSA9IC0tdmFsO1xuICAgICAgICBpZiAodmFsID09IC0xKSB7XG4gICAgICAgICAgICBwcm9icyArPSB2YWw7XG4gICAgICAgICAgICBzeW1zWy0taHRdID0gc3ltO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHByb2JzIC09IHZhbDtcbiAgICAgICAgaWYgKCF2YWwpIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAvLyByZXBlYXQgYnl0ZVxuICAgICAgICAgICAgICAgIHZhciByYnQgPSB0cG9zID4+IDM7XG4gICAgICAgICAgICAgICAgcmUgPSAoKGRhdFtyYnRdIHwgKGRhdFtyYnQgKyAxXSA8PCA4KSkgPj4gKHRwb3MgJiA3KSkgJiAzO1xuICAgICAgICAgICAgICAgIHRwb3MgKz0gMjtcbiAgICAgICAgICAgICAgICBzeW0gKz0gcmU7XG4gICAgICAgICAgICB9IHdoaWxlIChyZSA9PSAzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3ltID4gMjU1IHx8IHByb2JzKVxuICAgICAgICBlcnIoMCk7XG4gICAgdmFyIHN5bXBvcyA9IDA7XG4gICAgLy8gc3ltIHN0ZXAgKGNvcHJpbWUgd2l0aCBzeiAtIGZvcm11bGEgZnJvbSB6c3RkIHNvdXJjZSlcbiAgICB2YXIgc3N0ZXAgPSAoc3ogPj4gMSkgKyAoc3ogPj4gMykgKyAzO1xuICAgIC8vIHN5bSBtYXNrXG4gICAgdmFyIHNtYXNrID0gc3ogLSAxO1xuICAgIGZvciAodmFyIHMgPSAwOyBzIDw9IHN5bTsgKytzKSB7XG4gICAgICAgIHZhciBzZiA9IGZyZXFbc107XG4gICAgICAgIGlmIChzZiA8IDEpIHtcbiAgICAgICAgICAgIGRzdGF0ZVtzXSA9IC1zZjtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoaXMgaXMgc3BsaXQgaW50byB0d28gbG9vcHMgaW4genN0ZCB0byBhdm9pZCBicmFuY2hpbmcsIGJ1dCBhcyBKUyBpcyBoaWdoZXItbGV2ZWwgdGhhdCBpcyB1bm5lY2Vzc2FyeVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2Y7ICsraSkge1xuICAgICAgICAgICAgc3ltc1tzeW1wb3NdID0gcztcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBzeW1wb3MgPSAoc3ltcG9zICsgc3N0ZXApICYgc21hc2s7XG4gICAgICAgICAgICB9IHdoaWxlIChzeW1wb3MgPj0gaHQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEFmdGVyIHNwcmVhZGluZyBzeW1ib2xzLCBzaG91bGQgYmUgemVybyBhZ2FpblxuICAgIGlmIChzeW1wb3MpXG4gICAgICAgIGVycigwKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc3o7ICsraSkge1xuICAgICAgICAvLyBuZXh0IHN0YXRlXG4gICAgICAgIHZhciBucyA9IGRzdGF0ZVtzeW1zW2ldXSsrO1xuICAgICAgICAvLyBudW0gYml0c1xuICAgICAgICB2YXIgbmIgPSBuYml0c1tpXSA9IGFsIC0gbXNiKG5zKTtcbiAgICAgICAgbnN0YXRlW2ldID0gKG5zIDw8IG5iKSAtIHN6O1xuICAgIH1cbiAgICByZXR1cm4gWyh0cG9zICsgNykgPj4gMywge1xuICAgICAgICAgICAgYjogYWwsXG4gICAgICAgICAgICBzOiBzeW1zLFxuICAgICAgICAgICAgbjogbmJpdHMsXG4gICAgICAgICAgICB0OiBuc3RhdGVcbiAgICAgICAgfV07XG59O1xuLy8gcmVhZCBodWZmbWFuXG52YXIgcmh1ID0gZnVuY3Rpb24gKGRhdCwgYnQpIHtcbiAgICAvLyAgaW5kZXggIHdlaWdodCBjb3VudFxuICAgIHZhciBpID0gMCwgd2MgPSAtMTtcbiAgICAvLyAgICBidWZmZXIgICAgICAgICAgICAgaGVhZGVyIGJ5dGVcbiAgICB2YXIgYnVmID0gbmV3IHU4KDI5MiksIGhiID0gZGF0W2J0XTtcbiAgICAvLyBodWZmbWFuIHdlaWdodHNcbiAgICB2YXIgaHcgPSBidWYuc3ViYXJyYXkoMCwgMjU2KTtcbiAgICAvLyByYW5rIGNvdW50XG4gICAgdmFyIHJjID0gYnVmLnN1YmFycmF5KDI1NiwgMjY4KTtcbiAgICAvLyByYW5rIGluZGV4XG4gICAgdmFyIHJpID0gbmV3IHUxNihidWYuYnVmZmVyLCAyNjgpO1xuICAgIC8vIE5PVEU6IGF0IHRoaXMgcG9pbnQgYnQgaXMgMSBsZXNzIHRoYW4gZXhwZWN0ZWRcbiAgICBpZiAoaGIgPCAxMjgpIHtcbiAgICAgICAgLy8gZW5kIGJ5dGUsIGZzZSBkZWNvZGUgdGFibGVcbiAgICAgICAgdmFyIF9hID0gcmZzZShkYXQsIGJ0ICsgMSwgNiksIGVidCA9IF9hWzBdLCBmZHQgPSBfYVsxXTtcbiAgICAgICAgYnQgKz0gaGI7XG4gICAgICAgIHZhciBlcG9zID0gZWJ0IDw8IDM7XG4gICAgICAgIC8vIGxhc3QgYnl0ZVxuICAgICAgICB2YXIgbGIgPSBkYXRbYnRdO1xuICAgICAgICBpZiAoIWxiKVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAvLyAgc3RhdGUxICAgc3RhdGUyICAgc3RhdGUxIGJpdHMgICBzdGF0ZTIgYml0c1xuICAgICAgICB2YXIgc3QxID0gMCwgc3QyID0gMCwgYnRyMSA9IGZkdC5iLCBidHIyID0gYnRyMTtcbiAgICAgICAgLy8gZnNlIHBvc1xuICAgICAgICAvLyBwcmUtaW5jcmVtZW50IHRvIGFjY291bnQgZm9yIG9yaWdpbmFsIGRlZmljaXQgb2YgMVxuICAgICAgICB2YXIgZnBvcyA9ICgrK2J0IDw8IDMpIC0gOCArIG1zYihsYik7XG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAgIGZwb3MgLT0gYnRyMTtcbiAgICAgICAgICAgIGlmIChmcG9zIDwgZXBvcylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIHZhciBjYnQgPSBmcG9zID4+IDM7XG4gICAgICAgICAgICBzdDEgKz0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChmcG9zICYgNykpICYgKCgxIDw8IGJ0cjEpIC0gMSk7XG4gICAgICAgICAgICBod1srK3djXSA9IGZkdC5zW3N0MV07XG4gICAgICAgICAgICBmcG9zIC09IGJ0cjI7XG4gICAgICAgICAgICBpZiAoZnBvcyA8IGVwb3MpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYnQgPSBmcG9zID4+IDM7XG4gICAgICAgICAgICBzdDIgKz0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChmcG9zICYgNykpICYgKCgxIDw8IGJ0cjIpIC0gMSk7XG4gICAgICAgICAgICBod1srK3djXSA9IGZkdC5zW3N0Ml07XG4gICAgICAgICAgICBidHIxID0gZmR0Lm5bc3QxXTtcbiAgICAgICAgICAgIHN0MSA9IGZkdC50W3N0MV07XG4gICAgICAgICAgICBidHIyID0gZmR0Lm5bc3QyXTtcbiAgICAgICAgICAgIHN0MiA9IGZkdC50W3N0Ml07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCsrd2MgPiAyNTUpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB3YyA9IGhiIC0gMTI3O1xuICAgICAgICBmb3IgKDsgaSA8IHdjOyBpICs9IDIpIHtcbiAgICAgICAgICAgIHZhciBieXRlID0gZGF0WysrYnRdO1xuICAgICAgICAgICAgaHdbaV0gPSBieXRlID4+IDQ7XG4gICAgICAgICAgICBod1tpICsgMV0gPSBieXRlICYgMTU7XG4gICAgICAgIH1cbiAgICAgICAgKytidDtcbiAgICB9XG4gICAgLy8gd2VpZ2h0IGV4cG9uZW50aWFsIHN1bVxuICAgIHZhciB3ZXMgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciB3dCA9IGh3W2ldO1xuICAgICAgICAvLyBiaXRzIG11c3QgYmUgYXQgbW9zdCAxMSwgc2FtZSBhcyB3ZWlnaHRcbiAgICAgICAgaWYgKHd0ID4gMTEpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIHdlcyArPSB3dCAmJiAoMSA8PCAod3QgLSAxKSk7XG4gICAgfVxuICAgIC8vIG1heCBiaXRzXG4gICAgdmFyIG1iID0gbXNiKHdlcykgKyAxO1xuICAgIC8vIHRhYmxlIHNpemVcbiAgICB2YXIgdHMgPSAxIDw8IG1iO1xuICAgIC8vIHJlbWFpbmluZyBzdW1cbiAgICB2YXIgcmVtID0gdHMgLSB3ZXM7XG4gICAgLy8gbXVzdCBiZSBwb3dlciBvZiAyXG4gICAgaWYgKHJlbSAmIChyZW0gLSAxKSlcbiAgICAgICAgZXJyKDApO1xuICAgIGh3W3djKytdID0gbXNiKHJlbSkgKyAxO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciB3dCA9IGh3W2ldO1xuICAgICAgICArK3JjW2h3W2ldID0gd3QgJiYgKG1iICsgMSAtIHd0KV07XG4gICAgfVxuICAgIC8vIGh1ZiBidWZcbiAgICB2YXIgaGJ1ZiA9IG5ldyB1OCh0cyA8PCAxKTtcbiAgICAvLyAgICBzeW1ib2xzICAgICAgICAgICAgICAgICAgICAgIG51bSBiaXRzXG4gICAgdmFyIHN5bXMgPSBoYnVmLnN1YmFycmF5KDAsIHRzKSwgbmIgPSBoYnVmLnN1YmFycmF5KHRzKTtcbiAgICByaVttYl0gPSAwO1xuICAgIGZvciAoaSA9IG1iOyBpID4gMDsgLS1pKSB7XG4gICAgICAgIHZhciBwdiA9IHJpW2ldO1xuICAgICAgICBmaWxsKG5iLCBpLCBwdiwgcmlbaSAtIDFdID0gcHYgKyByY1tpXSAqICgxIDw8IChtYiAtIGkpKSk7XG4gICAgfVxuICAgIGlmIChyaVswXSAhPSB0cylcbiAgICAgICAgZXJyKDApO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciBiaXRzID0gaHdbaV07XG4gICAgICAgIGlmIChiaXRzKSB7XG4gICAgICAgICAgICB2YXIgY29kZSA9IHJpW2JpdHNdO1xuICAgICAgICAgICAgZmlsbChzeW1zLCBpLCBjb2RlLCByaVtiaXRzXSA9IGNvZGUgKyAoMSA8PCAobWIgLSBiaXRzKSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbYnQsIHtcbiAgICAgICAgICAgIG46IG5iLFxuICAgICAgICAgICAgYjogbWIsXG4gICAgICAgICAgICBzOiBzeW1zXG4gICAgICAgIH1dO1xufTtcbi8vIFRhYmxlcyBnZW5lcmF0ZWQgdXNpbmcgdGhpczpcbi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tLzEwMWFycm93ei9hOTc5NDUyZDQzNTU5OTJjYmY4ZjI1N2NiZmZjOWVkZFxuLy8gZGVmYXVsdCBsaXRlcmFsIGxlbmd0aCB0YWJsZVxudmFyIGRsbHQgPSAvKiNfX1BVUkVfXyovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDgxLCAxNiwgOTksIDE0MCwgNDksIDE5OCwgMjQsIDk5LCAxMiwgMzMsIDE5NiwgMjQsIDk5LCAxMDIsIDEwMiwgMTM0LCA3MCwgMTQ2LCA0XG5dKSwgMCwgNilbMV07XG4vLyBkZWZhdWx0IG1hdGNoIGxlbmd0aCB0YWJsZVxudmFyIGRtbHQgPSAvKiNfX1BVUkVfXyovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDMzLCAyMCwgMTk2LCAyNCwgOTksIDE0MCwgMzMsIDEzMiwgMTYsIDY2LCA4LCAzMywgMTMyLCAxNiwgNjYsIDgsIDMzLCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDM2LCA5XG5dKSwgMCwgNilbMV07XG4vLyBkZWZhdWx0IG9mZnNldCBjb2RlIHRhYmxlXG52YXIgZG9jdCA9IC8qI19fUFVSRV9fICovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDMyLCAxMzIsIDE2LCA2NiwgMTAyLCA3MCwgNjgsIDY4LCA2OCwgNjgsIDM2LCA3MywgMlxuXSksIDAsIDUpWzFdO1xuLy8gYml0cyB0byBiYXNlbGluZVxudmFyIGIyYmwgPSBmdW5jdGlvbiAoYiwgcykge1xuICAgIHZhciBsZW4gPSBiLmxlbmd0aCwgYmwgPSBuZXcgaTMyKGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgICBibFtpXSA9IHM7XG4gICAgICAgIHMgKz0gMSA8PCBiW2ldO1xuICAgIH1cbiAgICByZXR1cm4gYmw7XG59O1xuLy8gbGl0ZXJhbCBsZW5ndGggYml0c1xudmFyIGxsYiA9IC8qI19fUFVSRV9fICovIG5ldyB1OCgoIC8qI19fUFVSRV9fICovbmV3IGkzMihbXG4gICAgMCwgMCwgMCwgMCwgMTY4NDMwMDksIDUwNTI4NzcwLCAxMzQ2NzgwMjAsIDIwMjA1MDA1NywgMjY5NDIyMDkzXG5dKSkuYnVmZmVyLCAwLCAzNik7XG4vLyBsaXRlcmFsIGxlbmd0aCBiYXNlbGluZVxudmFyIGxsYmwgPSAvKiNfX1BVUkVfXyAqLyBiMmJsKGxsYiwgMCk7XG4vLyBtYXRjaCBsZW5ndGggYml0c1xudmFyIG1sYiA9IC8qI19fUFVSRV9fICovIG5ldyB1OCgoIC8qI19fUFVSRV9fICovbmV3IGkzMihbXG4gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4NDMwMDksIDUwNTI4NzcwLCAxMTc3NjkyMjAsIDE4NTIwNzA0OCwgMjUyNTc5MDg0LCAxNlxuXSkpLmJ1ZmZlciwgMCwgNTMpO1xuLy8gbWF0Y2ggbGVuZ3RoIGJhc2VsaW5lXG52YXIgbWxibCA9IC8qI19fUFVSRV9fICovIGIyYmwobWxiLCAzKTtcbi8vIGRlY29kZSBodWZmbWFuIHN0cmVhbVxudmFyIGRodSA9IGZ1bmN0aW9uIChkYXQsIG91dCwgaHUpIHtcbiAgICB2YXIgbGVuID0gZGF0Lmxlbmd0aCwgc3MgPSBvdXQubGVuZ3RoLCBsYiA9IGRhdFtsZW4gLSAxXSwgbXNrID0gKDEgPDwgaHUuYikgLSAxLCBlYiA9IC1odS5iO1xuICAgIGlmICghbGIpXG4gICAgICAgIGVycigwKTtcbiAgICB2YXIgc3QgPSAwLCBidHIgPSBodS5iLCBwb3MgPSAobGVuIDw8IDMpIC0gOCArIG1zYihsYikgLSBidHIsIGkgPSAtMTtcbiAgICBmb3IgKDsgcG9zID4gZWIgJiYgaSA8IHNzOykge1xuICAgICAgICB2YXIgY2J0ID0gcG9zID4+IDM7XG4gICAgICAgIHZhciB2YWwgPSAoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChwb3MgJiA3KTtcbiAgICAgICAgc3QgPSAoKHN0IDw8IGJ0cikgfCB2YWwpICYgbXNrO1xuICAgICAgICBvdXRbKytpXSA9IGh1LnNbc3RdO1xuICAgICAgICBwb3MgLT0gKGJ0ciA9IGh1Lm5bc3RdKTtcbiAgICB9XG4gICAgaWYgKHBvcyAhPSBlYiB8fCBpICsgMSAhPSBzcylcbiAgICAgICAgZXJyKDApO1xufTtcbi8vIGRlY29kZSBodWZmbWFuIHN0cmVhbSA0eFxuLy8gVE9ETzogdXNlIHdvcmtlcnMgdG8gcGFyYWxsZWxpemVcbnZhciBkaHU0ID0gZnVuY3Rpb24gKGRhdCwgb3V0LCBodSkge1xuICAgIHZhciBidCA9IDY7XG4gICAgdmFyIHNzID0gb3V0Lmxlbmd0aCwgc3oxID0gKHNzICsgMykgPj4gMiwgc3oyID0gc3oxIDw8IDEsIHN6MyA9IHN6MSArIHN6MjtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbMF0gfCAoZGF0WzFdIDw8IDgpKSwgb3V0LnN1YmFycmF5KDAsIHN6MSksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbMl0gfCAoZGF0WzNdIDw8IDgpKSwgb3V0LnN1YmFycmF5KHN6MSwgc3oyKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFs0XSB8IChkYXRbNV0gPDwgOCkpLCBvdXQuc3ViYXJyYXkoc3oyLCBzejMpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCksIG91dC5zdWJhcnJheShzejMpLCBodSk7XG59O1xuLy8gcmVhZCBac3RhbmRhcmQgYmxvY2tcbnZhciByemIgPSBmdW5jdGlvbiAoZGF0LCBzdCwgb3V0KSB7XG4gICAgdmFyIF9hO1xuICAgIHZhciBidCA9IHN0LmI7XG4gICAgLy8gICAgYnl0ZSAwICAgICAgICBibG9jayB0eXBlXG4gICAgdmFyIGIwID0gZGF0W2J0XSwgYnR5cGUgPSAoYjAgPj4gMSkgJiAzO1xuICAgIHN0LmwgPSBiMCAmIDE7XG4gICAgdmFyIHN6ID0gKGIwID4+IDMpIHwgKGRhdFtidCArIDFdIDw8IDUpIHwgKGRhdFtidCArIDJdIDw8IDEzKTtcbiAgICAvLyBlbmQgYnl0ZSBmb3IgYmxvY2tcbiAgICB2YXIgZWJ0ID0gKGJ0ICs9IDMpICsgc3o7XG4gICAgaWYgKGJ0eXBlID09IDEpIHtcbiAgICAgICAgaWYgKGJ0ID49IGRhdC5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHN0LmIgPSBidCArIDE7XG4gICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgIGZpbGwob3V0LCBkYXRbYnRdLCBzdC55LCBzdC55ICs9IHN6KTtcbiAgICAgICAgICAgIHJldHVybiBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbGwobmV3IHU4KHN6KSwgZGF0W2J0XSk7XG4gICAgfVxuICAgIGlmIChlYnQgPiBkYXQubGVuZ3RoKVxuICAgICAgICByZXR1cm47XG4gICAgaWYgKGJ0eXBlID09IDApIHtcbiAgICAgICAgc3QuYiA9IGVidDtcbiAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgb3V0LnNldChkYXQuc3ViYXJyYXkoYnQsIGVidCksIHN0LnkpO1xuICAgICAgICAgICAgc3QueSArPSBzejtcbiAgICAgICAgICAgIHJldHVybiBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNsYyhkYXQsIGJ0LCBlYnQpO1xuICAgIH1cbiAgICBpZiAoYnR5cGUgPT0gMikge1xuICAgICAgICAvLyAgICBieXRlIDMgICAgICAgIGxpdCBidHlwZSAgICAgc2l6ZSBmb3JtYXRcbiAgICAgICAgdmFyIGIzID0gZGF0W2J0XSwgbGJ0ID0gYjMgJiAzLCBzZiA9IChiMyA+PiAyKSAmIDM7XG4gICAgICAgIC8vIGxpdCBzcmMgc2l6ZSAgbGl0IGNtcCBzeiA0IHN0cmVhbXNcbiAgICAgICAgdmFyIGxzcyA9IGIzID4+IDQsIGxjcyA9IDAsIHM0ID0gMDtcbiAgICAgICAgaWYgKGxidCA8IDIpIHtcbiAgICAgICAgICAgIGlmIChzZiAmIDEpXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKHNmICYgMikgJiYgKGRhdFsrK2J0XSA8PCAxMikpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxzcyA9IGIzID4+IDM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHNmO1xuICAgICAgICAgICAgaWYgKHNmIDwgMilcbiAgICAgICAgICAgICAgICBsc3MgfD0gKChkYXRbKytidF0gJiA2MykgPDwgNCksIGxjcyA9IChkYXRbYnRdID4+IDYpIHwgKGRhdFsrK2J0XSA8PCAyKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHNmID09IDIpXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKGRhdFsrK2J0XSAmIDMpIDw8IDEyKSwgbGNzID0gKGRhdFtidF0gPj4gMikgfCAoZGF0WysrYnRdIDw8IDYpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChkYXRbKytidF0gJiA2MykgPDwgMTIpLCBsY3MgPSAoZGF0W2J0XSA+PiA2KSB8IChkYXRbKytidF0gPDwgMikgfCAoZGF0WysrYnRdIDw8IDEwKTtcbiAgICAgICAgfVxuICAgICAgICArK2J0O1xuICAgICAgICAvLyBhZGQgbGl0ZXJhbHMgdG8gZW5kIC0gY2FuIG5ldmVyIG92ZXJsYXAgd2l0aCBiYWNrcmVmZXJlbmNlcyBiZWNhdXNlIHVudXNlZCBsaXRlcmFscyBhbHdheXMgYXBwZW5kZWRcbiAgICAgICAgdmFyIGJ1ZiA9IG91dCA/IG91dC5zdWJhcnJheShzdC55LCBzdC55ICsgc3QubSkgOiBuZXcgdTgoc3QubSk7XG4gICAgICAgIC8vIHN0YXJ0aW5nIHBvaW50IGZvciBsaXRlcmFsc1xuICAgICAgICB2YXIgc3BsID0gYnVmLmxlbmd0aCAtIGxzcztcbiAgICAgICAgaWYgKGxidCA9PSAwKVxuICAgICAgICAgICAgYnVmLnNldChkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGxzcyksIHNwbCk7XG4gICAgICAgIGVsc2UgaWYgKGxidCA9PSAxKVxuICAgICAgICAgICAgZmlsbChidWYsIGRhdFtidCsrXSwgc3BsKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBodWZmbWFuIHRhYmxlXG4gICAgICAgICAgICB2YXIgaHUgPSBzdC5oO1xuICAgICAgICAgICAgaWYgKGxidCA9PSAyKSB7XG4gICAgICAgICAgICAgICAgdmFyIGh1ZCA9IHJodShkYXQsIGJ0KTtcbiAgICAgICAgICAgICAgICAvLyBzdWJ0cmFjdCBkZXNjcmlwdGlvbiBsZW5ndGhcbiAgICAgICAgICAgICAgICBsY3MgKz0gYnQgLSAoYnQgPSBodWRbMF0pO1xuICAgICAgICAgICAgICAgIHN0LmggPSBodSA9IGh1ZFsxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFodSlcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICAoczQgPyBkaHU0IDogZGh1KShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGxjcyksIGJ1Zi5zdWJhcnJheShzcGwpLCBodSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbnVtIHNlcXVlbmNlc1xuICAgICAgICB2YXIgbnMgPSBkYXRbYnQrK107XG4gICAgICAgIGlmIChucykge1xuICAgICAgICAgICAgaWYgKG5zID09IDI1NSlcbiAgICAgICAgICAgICAgICBucyA9IChkYXRbYnQrK10gfCAoZGF0W2J0KytdIDw8IDgpKSArIDB4N0YwMDtcbiAgICAgICAgICAgIGVsc2UgaWYgKG5zID4gMTI3KVxuICAgICAgICAgICAgICAgIG5zID0gKChucyAtIDEyOCkgPDwgOCkgfCBkYXRbYnQrK107XG4gICAgICAgICAgICAvLyBzeW1ib2wgY29tcHJlc3Npb24gbW9kZXNcbiAgICAgICAgICAgIHZhciBzY20gPSBkYXRbYnQrK107XG4gICAgICAgICAgICBpZiAoc2NtICYgMylcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICB2YXIgZHRzID0gW2RtbHQsIGRvY3QsIGRsbHRdO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPiAtMTsgLS1pKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1kID0gKHNjbSA+PiAoKGkgPDwgMSkgKyAyKSkgJiAzO1xuICAgICAgICAgICAgICAgIGlmIChtZCA9PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJsZSBidWZcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJidWYgPSBuZXcgdTgoWzAsIDAsIGRhdFtidCsrXV0pO1xuICAgICAgICAgICAgICAgICAgICBkdHNbaV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOiByYnVmLnN1YmFycmF5KDIsIDMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbjogcmJ1Zi5zdWJhcnJheSgwLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHQ6IG5ldyB1MTYocmJ1Zi5idWZmZXIsIDAsIDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYjogMFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtZCA9PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFjY3VyYWN5IGxvZyA4IGZvciBvZmZzZXRzLCA5IGZvciBvdGhlcnNcbiAgICAgICAgICAgICAgICAgICAgX2EgPSByZnNlKGRhdCwgYnQsIDkgLSAoaSAmIDEpKSwgYnQgPSBfYVswXSwgZHRzW2ldID0gX2FbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1kID09IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdC50KVxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgICAgICAgICBkdHNbaV0gPSBzdC50W2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBfYiA9IHN0LnQgPSBkdHMsIG1sdCA9IF9iWzBdLCBvY3QgPSBfYlsxXSwgbGx0ID0gX2JbMl07XG4gICAgICAgICAgICB2YXIgbGIgPSBkYXRbZWJ0IC0gMV07XG4gICAgICAgICAgICBpZiAoIWxiKVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIHZhciBzcG9zID0gKGVidCA8PCAzKSAtIDggKyBtc2IobGIpIC0gbGx0LmIsIGNidCA9IHNwb3MgPj4gMywgb3VidCA9IDA7XG4gICAgICAgICAgICB2YXIgbHN0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxsdC5iKSAtIDEpO1xuICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2N0LmIpID4+IDM7XG4gICAgICAgICAgICB2YXIgb3N0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG9jdC5iKSAtIDEpO1xuICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWx0LmIpID4+IDM7XG4gICAgICAgICAgICB2YXIgbXN0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1sdC5iKSAtIDEpO1xuICAgICAgICAgICAgZm9yICgrK25zOyAtLW5zOykge1xuICAgICAgICAgICAgICAgIHZhciBsbGMgPSBsbHQuc1tsc3RdO1xuICAgICAgICAgICAgICAgIHZhciBsYnRyID0gbGx0Lm5bbHN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbWxjID0gbWx0LnNbbXN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbWJ0ciA9IG1sdC5uW21zdF07XG4gICAgICAgICAgICAgICAgdmFyIG9mYyA9IG9jdC5zW29zdF07XG4gICAgICAgICAgICAgICAgdmFyIG9idHIgPSBvY3Qubltvc3RdO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9mYykgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgb2ZwID0gMSA8PCBvZmM7XG4gICAgICAgICAgICAgICAgdmFyIG9mZiA9IG9mcCArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpIHwgKGRhdFtjYnQgKyAzXSA8PCAyNCkpID4+PiAoc3BvcyAmIDcpKSAmIChvZnAgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWxiW21sY10pID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIG1sID0gbWxibFttbGNdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1sYlttbGNdKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBsbGJbbGxjXSkgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgbGwgPSBsbGJsW2xsY10gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGxiW2xsY10pIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IGxidHIpID4+IDM7XG4gICAgICAgICAgICAgICAgbHN0ID0gbGx0LnRbbHN0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGJ0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWJ0cikgPj4gMztcbiAgICAgICAgICAgICAgICBtc3QgPSBtbHQudFttc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIG9zdCA9IG9jdC50W29zdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG9idHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGlmIChvZmYgPiAzKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMl0gPSBzdC5vWzFdO1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzFdID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1swXSA9IG9mZiAtPSAzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlkeCA9IG9mZiAtIChsbCAhPSAwKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gaWR4ID09IDMgPyBzdC5vWzBdIC0gMSA6IHN0Lm9baWR4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHggPiAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMl0gPSBzdC5vWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1sxXSA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzBdID0gb2ZmO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGw7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gYnVmW3NwbCArIGldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdWJ0ICs9IGxsLCBzcGwgKz0gbGw7XG4gICAgICAgICAgICAgICAgdmFyIHN0aW4gPSBvdWJ0IC0gb2ZmO1xuICAgICAgICAgICAgICAgIGlmIChzdGluIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGVuID0gLXN0aW47XG4gICAgICAgICAgICAgICAgICAgIHZhciBicyA9IHN0LmUgKyBzdGluO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGVuID4gbWwpXG4gICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBtbDtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IHN0LndbYnMgKyBpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvdWJ0ICs9IGxlbiwgbWwgLT0gbGVuLCBzdGluID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtbDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBidWZbc3RpbiArIGldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdWJ0ICs9IG1sO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG91YnQgIT0gc3BsKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHNwbCA8IGJ1Zi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQrK10gPSBidWZbc3BsKytdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBvdWJ0ID0gYnVmLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChvdXQpXG4gICAgICAgICAgICAgICAgc3QueSArPSBvdWJ0O1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGJ1ZiA9IHNsYyhidWYsIDAsIG91YnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgICAgIHN0LnkgKz0gbHNzO1xuICAgICAgICAgICAgICAgIGlmIChzcGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsc3M7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmW2ldID0gYnVmW3NwbCArIGldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc3BsKVxuICAgICAgICAgICAgICAgIGJ1ZiA9IHNsYyhidWYsIHNwbCk7XG4gICAgICAgIH1cbiAgICAgICAgc3QuYiA9IGVidDtcbiAgICAgICAgcmV0dXJuIGJ1ZjtcbiAgICB9XG4gICAgZXJyKDIpO1xufTtcbi8vIGNvbmNhdFxudmFyIGNjdCA9IGZ1bmN0aW9uIChidWZzLCBvbCkge1xuICAgIGlmIChidWZzLmxlbmd0aCA9PSAxKVxuICAgICAgICByZXR1cm4gYnVmc1swXTtcbiAgICB2YXIgYnVmID0gbmV3IHU4KG9sKTtcbiAgICBmb3IgKHZhciBpID0gMCwgYiA9IDA7IGkgPCBidWZzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBjaGsgPSBidWZzW2ldO1xuICAgICAgICBidWYuc2V0KGNoaywgYik7XG4gICAgICAgIGIgKz0gY2hrLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIGJ1Zjtcbn07XG4vKipcbiAqIERlY29tcHJlc3NlcyBac3RhbmRhcmQgZGF0YVxuICogQHBhcmFtIGRhdCBUaGUgaW5wdXQgZGF0YVxuICogQHBhcmFtIGJ1ZiBUaGUgb3V0cHV0IGJ1ZmZlci4gSWYgdW5zcGVjaWZpZWQsIHRoZSBmdW5jdGlvbiB3aWxsIGFsbG9jYXRlXG4gKiAgICAgICAgICAgIGV4YWN0bHkgZW5vdWdoIG1lbW9yeSB0byBmaXQgdGhlIGRlY29tcHJlc3NlZCBkYXRhLiBJZiB5b3VyXG4gKiAgICAgICAgICAgIGRhdGEgaGFzIG11bHRpcGxlIGZyYW1lcyBhbmQgeW91IGtub3cgdGhlIG91dHB1dCBzaXplLCBzcGVjaWZ5aW5nXG4gKiAgICAgICAgICAgIGl0IHdpbGwgeWllbGQgYmV0dGVyIHBlcmZvcm1hbmNlLlxuICogQHJldHVybnMgVGhlIGRlY29tcHJlc3NlZCBkYXRhXG4gKi9cbnJldHVybiBmdW5jdGlvbiBkZWNvbXByZXNzKGRhdCwgYnVmKSB7XG4gICAgdmFyIGJ0ID0gMCwgYnVmcyA9IFtdLCBuYiA9ICshYnVmLCBvbCA9IDA7XG4gICAgZm9yICg7IGRhdC5sZW5ndGg7KSB7XG4gICAgICAgIHZhciBzdCA9IHJ6ZmgoZGF0LCBuYiB8fCBidWYpO1xuICAgICAgICBpZiAodHlwZW9mIHN0ID09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBpZiAobmIpIHtcbiAgICAgICAgICAgICAgICBidWYgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChzdC53Lmxlbmd0aCA9PSBzdC51KSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChidWYgPSBzdC53KTtcbiAgICAgICAgICAgICAgICAgICAgb2wgKz0gc3QudTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBidWZzLnB1c2goYnVmKTtcbiAgICAgICAgICAgICAgICBzdC5lID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoOyAhc3QubDspIHtcbiAgICAgICAgICAgICAgICB2YXIgYmxrID0gcnpiKGRhdCwgc3QsIGJ1Zik7XG4gICAgICAgICAgICAgICAgaWYgKCFibGspXG4gICAgICAgICAgICAgICAgICAgIGVycig1KTtcbiAgICAgICAgICAgICAgICBpZiAoYnVmKVxuICAgICAgICAgICAgICAgICAgICBzdC5lID0gc3QueTtcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJsayk7XG4gICAgICAgICAgICAgICAgICAgIG9sICs9IGJsay5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGNwdyhzdC53LCAwLCBibGsubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgc3Qudy5zZXQoYmxrLCBzdC53Lmxlbmd0aCAtIGJsay5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ0ID0gc3QuYiArIChzdC5jICogNCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYnQgPSBzdDtcbiAgICAgICAgZGF0ID0gZGF0LnN1YmFycmF5KGJ0KTtcbiAgICB9XG4gICAgcmV0dXJuIGNjdChidWZzLCBvbCk7XG59XG59KSAoKVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA8IDUuMS4wXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0gbnVsbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4xLjBcbi8vVmVyc2lvbjogPCA1LjEuMVxuLy9SZXF1aXJlczogenN0ZF9kZWNvbXByZXNzXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4xLjFcbi8vVmVyc2lvbjogPCA1LjIuMFxudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IG51bGxcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMlxuLy9SZXF1aXJlczogenN0ZF9kZWNvbXByZXNzXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3pzdGRfaW5pdGlhbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3Ncbi8vVmVyc2lvbjogPj0gNS4xLjFcbmZ1bmN0aW9uIGNhbWxfenN0ZF9pbml0aWFsaXplKHVuaXQpIHtcbiAgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuICByZXR1cm4gMVxufVxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBhZGRpbmcgcG9zaXRpb24uICopXG50eXBlIHBhZHR5ID1cbiAgfCBMZWZ0ICAgKCogVGV4dCBpcyBsZWZ0IGp1c3RpZmllZCAoJy0nIG9wdGlvbikuICAgICAgICAgICAgICAgKilcbiAgfCBSaWdodCAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgKG5vICctJyBvcHRpb24pLiAgICAgICAgICAgKilcbiAgfCBaZXJvcyAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgYnkgemVyb3MgKHNlZSAnMCcgb3B0aW9uKS4gKilcblxuKCoqKilcblxuKCogSW50ZWdlciBjb252ZXJzaW9uLiAqKVxudHlwZSBpbnRfY29udiA9XG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgICAgICAgICgqICAlZCB8ICUrZCB8ICUgZCAgKilcbiAgfCBJbnRfaSB8IEludF9waSB8IEludF9zaSAgICAgICAgKCogICVpIHwgJStpIHwgJSBpICAqKVxuICB8IEludF94IHwgSW50X0N4ICAgICAgICAgICAgICAgICAoKiAgJXggfCAlI3ggICAgICAgICopXG4gIHwgSW50X1ggfCBJbnRfQ1ggICAgICAgICAgICAgICAgICgqICAlWCB8ICUjWCAgICAgICAgKilcbiAgfCBJbnRfbyB8IEludF9DbyAgICAgICAgICAgICAgICAgKCogICVvIHwgJSNvICAgICAgICAqKVxuICB8IEludF91ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJXUgICAgICAgICAgICAgICopXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1ICAgICAgICgqICAlI2QgfCAlI2kgfCAlI3UgKilcblxuKCogRmxvYXQgY29udmVyc2lvbi4gKilcbnR5cGUgZmxvYXRfZmxhZ19jb252ID1cbiAgfCBGbG9hdF9mbGFnXyAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3AgICAgICAgICAgICAgICAgICAgKCogJStbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19zICAgICAgICAgICAgICAgICAgICgqICUgW2ZlRWdHRmhIXSAqKVxudHlwZSBmbG9hdF9raW5kX2NvbnYgPVxuICB8IEZsb2F0X2YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWYgfCAlK2YgfCAlIGYgICopXG4gIHwgRmxvYXRfZSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZSB8ICUrZSB8ICUgZSAgKilcbiAgfCBGbG9hdF9FICAgICAgICAgICAgICAgICAgICAgICAgKCogICVFIHwgJStFIHwgJSBFICAqKVxuICB8IEZsb2F0X2cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWcgfCAlK2cgfCAlIGcgICopXG4gIHwgRmxvYXRfRyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRyB8ICUrRyB8ICUgRyAgKilcbiAgfCBGbG9hdF9GICAgICAgICAgICAgICAgICAgICAgICAgKCogICVGIHwgJStGIHwgJSBGICAqKVxuICB8IEZsb2F0X2ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWggfCAlK2ggfCAlIGggICopXG4gIHwgRmxvYXRfSCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlSCB8ICUrSCB8ICUgSCAgKilcbiAgfCBGbG9hdF9DRiAgICAgICAgICAgICAgICAgICAgICAgKCogICUjRnwgJSsjRnwgJSAjRiAqKVxudHlwZSBmbG9hdF9jb252ID0gZmxvYXRfZmxhZ19jb252ICogZmxvYXRfa2luZF9jb252XG5cbigqKiopXG5cbigqIENoYXIgc2V0cyAoc2VlICVbLi4uXSkgYXJlIGJpdG1hcHMgaW1wbGVtZW50ZWQgYXMgMzItY2hhciBzdHJpbmdzLiAqKVxudHlwZSBjaGFyX3NldCA9IHN0cmluZ1xuXG4oKioqKVxuXG4oKiBDb3VudGVyIHVzZWQgaW4gU2NhbmYuICopXG50eXBlIGNvdW50ZXIgPVxuICB8IExpbmVfY291bnRlciAgICAgKCogICVsICAgICAgKilcbiAgfCBDaGFyX2NvdW50ZXIgICAgICgqICAlbiAgICAgICopXG4gIHwgVG9rZW5fY291bnRlciAgICAoKiAgJU4sICVMICAqKVxuXG4oKioqKVxuXG4oKiBQYWRkaW5nIG9mIHN0cmluZ3MgYW5kIG51bWJlcnMuICopXG50eXBlICgnYSwgJ2IpIHBhZGRpbmcgPVxuICAoKiBObyBwYWRkaW5nIChleDogXCIlZFwiKSAqKVxuICB8IE5vX3BhZGRpbmcgIDogKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBMaXRlcmFsIHBhZGRpbmcgKGV4OiBcIiU4ZFwiKSAqKVxuICB8IExpdF9wYWRkaW5nIDogcGFkdHkgKiBpbnQgLT4gKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBQYWRkaW5nIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlKmRcIikgKilcbiAgfCBBcmdfcGFkZGluZyA6IHBhZHR5IC0+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+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuZXh0ZXJuYWwgaW5jciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWluY3JcIlxuZXh0ZXJuYWwgZGVjciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWRlY3JcIlxudHlwZSBub25yZWMgKCdhLCdiKSByZXN1bHQgPSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdjLCAnYywgJ2QpIGZvcm1hdDZcbnR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjLCAnYykgZm9ybWF0NFxubGV0IHN0cmluZ19vZl9mb3JtYXQgPSBzdHJpbmdfb2ZfZm9ybWF0XG5leHRlcm5hbCBmb3JtYXRfb2Zfc3RyaW5nIDpcbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSBcIiVpZGVudGl0eVwiXG5sZXQgKCBeXiApID0gKCBeXiApXG5sZXQgZXhpdCA9IGV4aXRcbmxldCBhdF9leGl0ID0gYXRfZXhpdFxubGV0IHZhbGlkX2Zsb2F0X2xleGVtID0gdmFsaWRfZmxvYXRfbGV4ZW1cbmxldCBkb19hdF9leGl0ID0gZG9fYXRfZXhpdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgIFNpbW9uIENydWFuZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW1NlcV06IGZ1bmN0aW9uYWwgaXRlcmF0b3JzICopXG5cbnR5cGUgKydhIG5vZGUgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5cbmFuZCAnYSB0ID0gdW5pdCAtPiAnYSBub2RlXG5cbmxldCBlbXB0eSAoKSA9IE5pbFxuXG5sZXQgcmV0dXJuIHggKCkgPSBDb25zICh4LCBlbXB0eSlcblxubGV0IGNvbnMgeCBuZXh0ICgpID0gQ29ucyAoeCwgbmV4dClcblxubGV0IHJlYyBhcHBlbmQgc2VxMSBzZXEyICgpID1cbiAgbWF0Y2ggc2VxMSgpIHdpdGhcbiAgfCBOaWwgLT4gc2VxMigpXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoeCwgYXBwZW5kIG5leHQgc2VxMilcblxubGV0IHJlYyBtYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+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+IGNcblxudHlwZSB0ID0gY2hhclxuXG5sZXQgY29tcGFyZSBjMSBjMiA9IGNvZGUgYzEgLSBjb2RlIGMyXG5sZXQgZXF1YWwgKGMxOiB0KSAoYzI6IHQpID0gY29tcGFyZSBjMSBjMiA9IDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgRGFuaWVsIEMuIEJ1ZW56bGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuXG5sZXQgZXJyX25vX3ByZWQgPSBcIlUrMDAwMCBoYXMgbm8gcHJlZGVjZXNzb3JcIlxubGV0IGVycl9ub19zdWNjID0gXCJVKzEwRkZGRiBoYXMgbm8gc3VjY2Vzc29yXCJcbmxldCBlcnJfbm90X3N2IGkgPSBmb3JtYXRfaW50IFwiJVhcIiBpIF4gXCIgaXMgbm90IGFuIFVuaWNvZGUgc2NhbGFyIHZhbHVlXCJcbmxldCBlcnJfbm90X2xhdGluMSB1ID0gXCJVK1wiIF4gZm9ybWF0X2ludCBcIiUwNFhcIiB1IF4gXCIgaXMgbm90IGEgbGF0aW4xIGNoYXJhY3RlclwiXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgbWluID0gMHgwMDAwXG5sZXQgbWF4ID0gMHgxMEZGRkZcbmxldCBsb19ib3VuZCA9IDB4RDdGRlxubGV0IGhpX2JvdW5kID0gMHhFMDAwXG5cbmxldCBib20gPSAweEZFRkZcbmxldCByZXAgPSAweEZGRkRcblxubGV0IHN1Y2MgdSA9XG4gIGlmIHUgPSBsb19ib3VuZCB0aGVuIGhpX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1heCB0aGVuIGludmFsaWRfYXJnIGVycl9ub19zdWNjIGVsc2VcbiAgdSArIDFcblxubGV0IHByZWQgdSA9XG4gIGlmIHUgPSBoaV9ib3VuZCB0aGVuIGxvX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1pbiB0aGVuIGludmFsaWRfYXJnIGVycl9ub19wcmVkIGVsc2VcbiAgdSAtIDFcblxubGV0IGlzX3ZhbGlkIGkgPSAobWluIDw9IGkgJiYgaSA8PSBsb19ib3VuZCkgfHwgKGhpX2JvdW5kIDw9IGkgJiYgaSA8PSBtYXgpXG5sZXQgb2ZfaW50IGkgPSBpZiBpc192YWxpZCBpIHRoZW4gaSBlbHNlIGludmFsaWRfYXJnIChlcnJfbm90X3N2IGkpXG5leHRlcm5hbCB1bnNhZmVfb2ZfaW50IDogaW50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0b19pbnQgOiB0IC0+IGludCA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX2NoYXIgdSA9IHUgPCAyNTZcbmxldCBvZl9jaGFyIGMgPSBDaGFyLmNvZGUgY1xubGV0IHRvX2NoYXIgdSA9XG4gIGlmIHUgPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyAoZXJyX25vdF9sYXRpbjEgdSkgZWxzZVxuICBDaGFyLnVuc2FmZV9jaHIgdVxuXG5sZXQgdW5zYWZlX3RvX2NoYXIgPSBDaGFyLnVuc2FmZV9jaHJcblxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IGhhc2ggPSB0b19pbnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIGxpc3RzLiAqKVxudHlwZSAnYSB0ID0gJ2EgbGlzdCA9IFtdIHwgKDo6KSBvZiAnYSAqICdhIGxpc3RcblxuKCogTGlzdCBvcGVyYXRpb25zICopXG5cbmxldCByZWMgbGVuZ3RoX2F1eCBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGxlblxuICB8IF86OmwgLT4gbGVuZ3RoX2F1eCAobGVuICsgMSkgbFxuXG5sZXQgbGVuZ3RoIGwgPSBsZW5ndGhfYXV4IDAgbFxuXG5sZXQgY29ucyBhIGwgPSBhOjpsXG5cbmxldCBoZCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJoZFwiXG4gIHwgYTo6XyAtPiBhXG5cbmxldCB0bCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJ0bFwiXG4gIHwgXzo6bCAtPiBsXG5cbmxldCBudGggbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGZhaWx3aXRoIFwibnRoXCJcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBudGhfb3B0IGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gU29tZSBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBhcHBlbmQgPSAoQClcblxubGV0IHJlYyByZXZfYXBwZW5kIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICAgIFtdIC0+IGwyXG4gIHwgYSA6OiBsIC0+IHJldl9hcHBlbmQgbCAoYSA6OiBsMilcblxubGV0IHJldiBsID0gcmV2X2FwcGVuZCBsIFtdXG5cbmxldCByZWMgaW5pdF90YWlscmVjX2F1eCBhY2MgaSBuIGYgPVxuICBpZiBpID49IG4gdGhlbiBhY2NcbiAgZWxzZSBpbml0X3RhaWxyZWNfYXV4IChmIGkgOjogYWNjKSAoaSsxKSBuIGZcblxubGV0IHJlYyBpbml0X2F1eCBpIG4gZiA9XG4gIGlmIGkgPj0gbiB0aGVuIFtdXG4gIGVsc2VcbiAgICBsZXQgciA9IGYgaSBpblxuICAgIHIgOjogaW5pdF9hdXggKGkrMSkgbiBmXG5cbmxldCByZXZfaW5pdF90aHJlc2hvbGQgPVxuICBtYXRjaCBTeXMuYmFja2VuZF90eXBlIHdpdGhcbiAgfCBTeXMuTmF0aXZlIHwgU3lzLkJ5dGVjb2RlIC0+IDEwXzAwMFxuICAoKiBXZSBkb24ndCBrbm93IHRoZSBzaXplIG9mIHRoZSBzdGFjaywgYmV0dGVyIGJlIHNhZmUgYW5kIGFzc3VtZSBpdCdzXG4gICAgIHNtYWxsLiAqKVxuICB8IFN5cy5PdGhlciBfIC0+IDUwXG5cbmxldCBpbml0IGxlbiBmID1cbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5pbml0XCIgZWxzZVxuICBpZiBsZW4gPiByZXZfaW5pdF90aHJlc2hvbGQgdGhlbiByZXYgKGluaXRfdGFpbHJlY19hdXggW10gMCBsZW4gZilcbiAgZWxzZSBpbml0X2F1eCAwIGxlbiBmXG5cbmxldCByZWMgZmxhdHRlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBsOjpyIC0+IGwgQCBmbGF0dGVuIHJcblxubGV0IGNvbmNhdCA9IGZsYXR0ZW5cblxubGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBhOjpsIC0+IGxldCByID0gZiBhIGluIHIgOjogbWFwIGYgbFxuXG5sZXQgcmVjIG1hcGkgaSBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGE6OmwgLT4gbGV0IHIgPSBmIGkgYSBpbiByIDo6IG1hcGkgKGkgKyAxKSBmIGxcblxubGV0IG1hcGkgZiBsID0gbWFwaSAwIGYgbFxuXG5sZXQgcmV2X21hcCBmIGwgPVxuICBsZXQgcmVjIHJtYXBfZiBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VcbiAgICB8IGE6OmwgLT4gcm1hcF9mIChmIGEgOjogYWNjdSkgbFxuICBpblxuICBybWFwX2YgW10gbFxuXG5cbmxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBhOyBpdGVyIGYgbFxuXG5sZXQgcmVjIGl0ZXJpIGkgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgaSBhOyBpdGVyaSAoaSArIDEpIGYgbFxuXG5sZXQgaXRlcmkgZiBsID0gaXRlcmkgMCBmIGxcblxubGV0IHJlYyBmb2xkX2xlZnQgZiBhY2N1IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmb2xkX2xlZnQgZiAoZiBhY2N1IGEpIGxcblxubGV0IHJlYyBmb2xkX3JpZ2h0IGYgbCBhY2N1ID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZiBhIChmb2xkX3JpZ2h0IGYgbCBhY2N1KVxuXG5sZXQgcmVjIG1hcDIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBbXVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gbGV0IHIgPSBmIGExIGEyIGluIHIgOjogbWFwMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5tYXAyXCJcblxubGV0IHJldl9tYXAyIGYgbDEgbDIgPVxuICBsZXQgcmVjIHJtYXAyX2YgYWNjdSBsMSBsMiA9XG4gICAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIHwgKFtdLCBbXSkgLT4gYWNjdVxuICAgIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBybWFwMl9mIChmIGExIGEyIDo6IGFjY3UpIGwxIGwyXG4gICAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJldl9tYXAyXCJcbiAgaW5cbiAgcm1hcDJfZiBbXSBsMSBsMlxuXG5cbmxldCByZWMgaXRlcjIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiAoKVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMjsgaXRlcjIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuaXRlcjJcIlxuXG5sZXQgcmVjIGZvbGRfbGVmdDIgZiBhY2N1IGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGZvbGRfbGVmdDIgZiAoZiBhY2N1IGExIGEyKSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9sZWZ0MlwiXG5cbmxldCByZWMgZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1ID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTIgKGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSlcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfcmlnaHQyXCJcblxubGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IHRydWVcbiAgfCBhOjpsIC0+IHAgYSAmJiBmb3JfYWxsIHAgbFxuXG5sZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gcCBhIHx8IGV4aXN0cyBwIGxcblxubGV0IHJlYyBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IHRydWVcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgJiYgZm9yX2FsbDIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9yX2FsbDJcIlxuXG5sZXQgcmVjIGV4aXN0czIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBmYWxzZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiB8fCBleGlzdHMyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmV4aXN0czJcIlxuXG5sZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbSB4IGxcblxubGV0IHJlYyBtZW1xIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBhID09IHggfHwgbWVtcSB4IGxcblxubGV0IHJlYyBhc3NvYyB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBiIGVsc2UgYXNzb2MgeCBsXG5cbmxldCByZWMgYXNzb2Nfb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBTb21lIGIgZWxzZSBhc3NvY19vcHQgeCBsXG5cbmxldCByZWMgYXNzcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBiIGVsc2UgYXNzcSB4IGxcblxubGV0IHJlYyBhc3NxX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gU29tZSBiIGVsc2UgYXNzcV9vcHQgeCBsXG5cbmxldCByZWMgbWVtX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbV9hc3NvYyB4IGxcblxubGV0IHJlYyBtZW1fYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGEgPT0geCB8fCBtZW1fYXNzcSB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+XG4gICAgICBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzb2MgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+IGlmIGEgPT0geCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NxIHggbFxuXG5sZXQgcmVjIGZpbmQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHggZWxzZSBmaW5kIHAgbFxuXG5sZXQgcmVjIGZpbmRfb3B0IHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZF9vcHQgcCBsXG5cbmxldCByZWMgZmluZF9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXAgZiBsXG4gICAgIGVuZFxuXG5sZXQgZmluZF9hbGwgcCA9XG4gIGxldCByZWMgZmluZCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByZXYgYWNjdVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBmaW5kICh4IDo6IGFjY3UpIGwgZWxzZSBmaW5kIGFjY3UgbCBpblxuICBmaW5kIFtdXG5cbmxldCBmaWx0ZXIgPSBmaW5kX2FsbFxuXG5sZXQgZmlsdGVyaSBwIGwgPVxuICBsZXQgcmVjIGF1eCBpIGFjYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmV2IGFjY1xuICB8IHg6OmwgLT4gYXV4IChpICsgMSkgKGlmIHAgaSB4IHRoZW4geDo6YWNjIGVsc2UgYWNjKSBsXG4gIGluXG4gIGF1eCAwIFtdIGxcblxubGV0IGZpbHRlcl9tYXAgZiA9XG4gIGxldCByZWMgYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY3VcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IGFjY3UgbFxuICAgICAgICB8IFNvbWUgdiAtPiBhdXggKHYgOjogYWNjdSkgbFxuICBpblxuICBhdXggW11cblxubGV0IGNvbmNhdF9tYXAgZiBsID1cbiAgbGV0IHJlYyBhdXggZiBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgbGV0IHhzID0gZiB4IGluXG4gICAgICAgYXV4IGYgKHJldl9hcHBlbmQgeHMgYWNjKSBsXG4gIGluIGF1eCBmIFtdIGxcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2N1IGwgPVxuICBsZXQgcmVjIGF1eCBhY2N1IGxfYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1LCByZXYgbF9hY2N1XG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgbGV0IGFjY3UsIHggPSBmIGFjY3UgeCBpblxuICAgICAgICBhdXggYWNjdSAoeCA6OiBsX2FjY3UpIGwgaW5cbiAgYXV4IGFjY3UgW10gbFxuXG5sZXQgcGFydGl0aW9uIHAgbCA9XG4gIGxldCByZWMgcGFydCB5ZXMgbm8gPSBmdW5jdGlvblxuICB8IFtdIC0+IChyZXYgeWVzLCByZXYgbm8pXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHBhcnQgKHggOjogeWVzKSBubyBsIGVsc2UgcGFydCB5ZXMgKHggOjogbm8pIGwgaW5cbiAgcGFydCBbXSBbXSBsXG5cbmxldCBwYXJ0aXRpb25fbWFwIHAgbCA9XG4gIGxldCByZWMgcGFydCBsZWZ0IHJpZ2h0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IGxlZnQsIHJldiByaWdodClcbiAgfCB4IDo6IGwgLT5cbiAgICAgYmVnaW4gbWF0Y2ggcCB4IHdpdGhcbiAgICAgICB8IEVpdGhlci5MZWZ0IHYgLT4gcGFydCAodiA6OiBsZWZ0KSByaWdodCBsXG4gICAgICAgfCBFaXRoZXIuUmlnaHQgdiAtPiBwYXJ0IGxlZnQgKHYgOjogcmlnaHQpIGxcbiAgICAgZW5kXG4gIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcmVjIHNwbGl0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoW10sIFtdKVxuICB8ICh4LHkpOjpsIC0+XG4gICAgICBsZXQgKHJ4LCByeSkgPSBzcGxpdCBsIGluICh4OjpyeCwgeTo6cnkpXG5cbmxldCByZWMgY29tYmluZSBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBbXVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gKGExLCBhMikgOjogY29tYmluZSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuY29tYmluZVwiXG5cbigqKiBzb3J0aW5nICopXG5cbmxldCByZWMgbWVyZ2UgY21wIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgbDIgLT4gbDJcbiAgfCBsMSwgW10gLT4gbDFcbiAgfCBoMSA6OiB0MSwgaDIgOjogdDIgLT5cbiAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICB0aGVuIGgxIDo6IG1lcmdlIGNtcCB0MSBsMlxuICAgICAgZWxzZSBoMiA6OiBtZXJnZSBjbXAgbDEgdDJcblxuXG5sZXQgc3RhYmxlX3NvcnQgY21wIGwgPVxuICBsZXQgcmVjIHJldl9tZXJnZSBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgaWYgY21wIGgxIGgyIDw9IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2UgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZSBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgcmV2X21lcmdlX3JldiBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgaWYgY21wIGgxIGgyID4gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZV9yZXYgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZV9yZXYgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHNvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID0gaWYgY21wIHgxIHgyIDw9IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBjbXAgeDEgeDIgPD0gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPD0gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA8PSAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPD0gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHJldl9zb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHJldl9zb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2VfcmV2IHMxIHMyIFtdLCB0bClcbiAgYW5kIHJldl9zb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBjbXAgeDEgeDIgPiAwIHRoZW5cbiAgICAgICAgICAgIGlmIGNtcCB4MiB4MyA+IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MiB4MyA+IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgc29ydCA9IHN0YWJsZV9zb3J0XG5sZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuKCogTm90ZTogb24gYSBsaXN0IG9mIGxlbmd0aCBiZXR3ZWVuIGFib3V0IDEwMDAwMCAoZGVwZW5kaW5nIG9uIHRoZSBtaW5vclxuICAgaGVhcCBzaXplIGFuZCB0aGUgdHlwZSBvZiB0aGUgbGlzdCkgYW5kIFN5cy5tYXhfYXJyYXlfc2l6ZSwgaXQgaXNcbiAgIGFjdHVhbGx5IGZhc3RlciB0byB1c2UgdGhlIGZvbGxvd2luZywgYnV0IGl0IG1pZ2h0IGFsc28gdXNlIG1vcmUgbWVtb3J5XG4gICBiZWNhdXNlIHRoZSBhcmd1bWVudCBsaXN0IGNhbm5vdCBiZSBkZWFsbG9jYXRlZCBpbmNyZW1lbnRhbGx5LlxuXG4gICBBbHNvLCB0aGVyZSBzZWVtcyB0byBiZSBhIGJ1ZyBpbiB0aGlzIGNvZGUgb3IgaW4gdGhlXG4gICBpbXBsZW1lbnRhdGlvbiBvZiBvYmpfdHJ1bmNhdGUuXG5cbmV4dGVybmFsIG9ial90cnVuY2F0ZSA6ICdhIGFycmF5IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX29ial90cnVuY2F0ZVwiXG5cbmxldCBhcnJheV90b19saXN0X2luX3BsYWNlIGEgPVxuICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBhY2N1IG4gcCA9XG4gICAgaWYgcCA8PSAwIHRoZW4gYWNjdSBlbHNlIGJlZ2luXG4gICAgICBpZiBwID0gbiB0aGVuIGJlZ2luXG4gICAgICAgIG9ial90cnVuY2F0ZSBhIHA7XG4gICAgICAgIGxvb3AgKGEuKHAtMSkgOjogYWNjdSkgKG4tMTAwMCkgKHAtMSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxvb3AgKGEuKHAtMSkgOjogYWNjdSkgbiAocC0xKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGluXG4gIGxvb3AgW10gKGwtMTAwMCkgbFxuXG5cbmxldCBzdGFibGVfc29ydCBjbXAgbCA9XG4gIGxldCBhID0gQXJyYXkub2ZfbGlzdCBsIGluXG4gIEFycmF5LnN0YWJsZV9zb3J0IGNtcCBhO1xuICBhcnJheV90b19saXN0X2luX3BsYWNlIGFcblxuKilcblxuXG4oKiogc29ydGluZyArIHJlbW92aW5nIGR1cGxpY2F0ZXMgKilcblxubGV0IHNvcnRfdW5pcSBjbXAgbCA9XG4gIGxldCByZWMgcmV2X21lcmdlIGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZSB0MSB0MiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2UgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZSBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgcmV2X21lcmdlX3JldiBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgbGV0IGMgPSBjbXAgaDEgaDIgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjID4gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZV9yZXYgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZV9yZXYgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHNvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxXSBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDJdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgzXSBlbHNlIFt4MzsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gcmV2X3NvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gcmV2X3NvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZV9yZXYgczEgczIgW10sIHRsKVxuICBhbmQgcmV2X3NvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxXSBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDJdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgzXSBlbHNlIFt4MzsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHJlYyBjb21wYXJlX2xlbmd0aHMgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgXyA6OiBsMSwgXyA6OiBsMiAtPiBjb21wYXJlX2xlbmd0aHMgbDEgbDJcbjs7XG5cbmxldCByZWMgY29tcGFyZV9sZW5ndGhfd2l0aCBsIG4gPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIGlmIG4gPSAwIHRoZW4gMCBlbHNlXG4gICAgICBpZiBuID4gMCB0aGVuIC0xIGVsc2UgMVxuICB8IF8gOjogbCAtPlxuICAgIGlmIG4gPD0gMCB0aGVuIDEgZWxzZVxuICAgICAgY29tcGFyZV9sZW5ndGhfd2l0aCBsIChuLTEpXG47O1xuXG4oKiogezEgQ29tcGFyaXNvbn0gKilcblxuKCogTm90ZTogd2UgYXJlICpub3QqIHNob3J0Y3V0dGluZyB0aGUgbGlzdCBieSB1c2luZ1xuICAgW0xpc3QuY29tcGFyZV9sZW5ndGhzXSBmaXJzdDsgdGhpcyBtYXkgYmUgc2xvd2VyIG9uIGxvbmcgbGlzdHNcbiAgIGltbWVkaWF0ZWx5IHN0YXJ0IHdpdGggZGlzdGluY3QgZWxlbWVudHMuIEl0IGlzIGFsc28gaW5jb3JyZWN0IGZvclxuICAgW2NvbXBhcmVdIGJlbG93LCBhbmQgaXQgaXMgYmV0dGVyIChwcmluY2lwbGUgb2YgbGVhc3Qgc3VycHJpc2UpIHRvXG4gICB1c2UgdGhlIHNhbWUgYXBwcm9hY2ggZm9yIGJvdGggZnVuY3Rpb25zLiAqKVxubGV0IHJlYyBlcXVhbCBlcSBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IHRydWVcbiAgfCBbXSwgXzo6XyB8IF86Ol8sIFtdIC0+IGZhbHNlXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT4gZXEgYTEgYTIgJiYgZXF1YWwgZXEgbDEgbDJcblxubGV0IHJlYyBjb21wYXJlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXzo6XyAtPiAtMVxuICB8IF86Ol8sIFtdIC0+IDFcbiAgfCBhMTo6bDEsIGEyOjpsMiAtPlxuICAgIGxldCBjID0gY21wIGExIGEyIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gY1xuICAgIGVsc2UgY29tcGFyZSBjbXAgbDEgbDJcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBsID1cbiAgbGV0IHJlYyBhdXggbCAoKSA9IG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gU2VxLk5pbFxuICAgIHwgeCA6OiB0YWlsIC0+IFNlcS5Db25zICh4LCBhdXggdGFpbClcbiAgaW5cbiAgYXV4IGxcblxubGV0IG9mX3NlcSBzZXEgPVxuICBsZXQgcmVjIGRpcmVjdCBkZXB0aCBzZXEgOiBfIGxpc3QgPVxuICAgIGlmIGRlcHRoPTBcbiAgICB0aGVuXG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBzZXFcbiAgICAgIHw+IHJldiAoKiB0YWlscmVjICopXG4gICAgZWxzZSBtYXRjaCBzZXEoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gW11cbiAgICAgIHwgU2VxLkNvbnMgKHgsIG5leHQpIC0+IHggOjogZGlyZWN0IChkZXB0aC0xKSBuZXh0XG4gIGluXG4gIGRpcmVjdCA1MDAgc2VxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgemVybyA9IDBcbmxldCBvbmUgPSAxXG5sZXQgbWludXNfb25lID0gLTFcbmV4dGVybmFsIG5lZyA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgYWRkIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgc3ViIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgbXVsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgZGl2IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgcmVtIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcbmxldCBtYXhfaW50ID0gKC0xKSBsc3IgMVxubGV0IG1pbl9pbnQgPSBtYXhfaW50ICsgMVxuZXh0ZXJuYWwgbG9nYW5kIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsIGxvZ3hvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcbmxldCBsb2dub3QgeCA9IGxvZ3hvciB4ICgtMSlcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuXG4oKlxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nIHMgPSB0cnkgU29tZSAoaW50X29mX3N0cmluZyBzKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG4qKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5sZXQgdG9fc3RyaW5nIHggPSBmb3JtYXRfaW50IFwiJWRcIiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zLiBXaGVuIHlvdSBtb2RpZnkgdGhlIG9uZSBpbiB0aGlzIGZpbGUgeW91IG5lZWQgdG9cbiAgIG1vZGlmeSBpdHMgZHVwbGljYXRlIGluIHN0cmluZy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIHN0cmluZ19sZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBnZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9maWxsIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2ZpbGxfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5leHRlcm5hbCB1bnNhZmVfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGJ5dGVzID0gXCIlYnl0ZXNfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV9ibGl0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmxldCBtYWtlIG4gYyA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgdW5zYWZlX2ZpbGwgcyAwIG4gYztcbiAgc1xuXG5sZXQgaW5pdCBuIGYgPVxuICBsZXQgcyA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgcyBpIChmIGkpXG4gIGRvbmU7XG4gIHNcblxubGV0IGVtcHR5ID0gY3JlYXRlIDBcblxubGV0IGNvcHkgcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXQgcyAwIHIgMCBsZW47XG4gIHJcblxubGV0IHRvX3N0cmluZyBiID0gdW5zYWZlX3RvX3N0cmluZyAoY29weSBiKVxubGV0IG9mX3N0cmluZyBzID0gY29weSAodW5zYWZlX29mX3N0cmluZyBzKVxuXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLnN1YiAvIEJ5dGVzLnN1YlwiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBzIG9mcyByIDAgbGVuO1xuICAgIHJcbiAgZW5kXG5cbmxldCBzdWJfc3RyaW5nIGIgb2ZzIGxlbiA9IHVuc2FmZV90b19zdHJpbmcgKHN1YiBiIG9mcyBsZW4pXG5cbigqIGFkZGl0aW9uIHdpdGggYW4gb3ZlcmZsb3cgY2hlY2sgKilcbmxldCAoKyspIGEgYiA9XG4gIGxldCBjID0gYSArIGIgaW5cbiAgbWF0Y2ggYSA8IDAsIGIgPCAwLCBjIDwgMCB3aXRoXG4gIHwgdHJ1ZSAsIHRydWUgLCBmYWxzZVxuICB8IGZhbHNlLCBmYWxzZSwgdHJ1ZSAgLT4gaW52YWxpZF9hcmcgXCJCeXRlcy5leHRlbmRcIiAoKiBvdmVyZmxvdyAqKVxuICB8IF8gLT4gY1xuXG5sZXQgZXh0ZW5kIHMgbGVmdCByaWdodCA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyArKyBsZWZ0ICsrIHJpZ2h0IGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICBsZXQgKHNyY29mZiwgZHN0b2ZmKSA9IGlmIGxlZnQgPCAwIHRoZW4gLWxlZnQsIDAgZWxzZSAwLCBsZWZ0IGluXG4gIGxldCBjcHlsZW4gPSBJbnQubWluIChsZW5ndGggcyAtIHNyY29mZikgKGxlbiAtIGRzdG9mZikgaW5cbiAgaWYgY3B5bGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IHMgc3Jjb2ZmIHIgZHN0b2ZmIGNweWxlbjtcbiAgclxuXG5sZXQgZmlsbCBzIG9mcyBsZW4gYyA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmZpbGwgLyBCeXRlcy5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBzIG9mcyBsZW4gY1xuXG5sZXQgYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIHMxIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBzMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnl0ZXMuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG5sZXQgYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IHN0cmluZ19sZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuYmxpdCAvIEJ5dGVzLmJsaXRfc3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGl0ZXIgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiQnl0ZXMuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBlbXB0eVxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW5cbiAgICAgICAgICB1bnNhZmVfYmxpdHNcbiAgICAgICAgICAgIChjcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCBzMSBzMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBzMSBpblxuICBsZXQgbDIgPSBsZW5ndGggczIgaW5cbiAgbGV0IHIgPSBjcmVhdGUgKGwxICsgbDIpIGluXG4gIHVuc2FmZV9ibGl0IHMxIDAgciAwIGwxO1xuICB1bnNhZmVfYmxpdCBzMiAwIHIgbDEgbDI7XG4gIHJcblxuXG5leHRlcm5hbCBjaGFyX2NvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgY2hhcl9jaHI6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXDAxMicgfCAnXFxuJyB8ICdcXHInIHwgJ1xcdCcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHRyaW0gcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWkpIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGxldCBqID0gcmVmIChsZW4gLSAxKSBpblxuICB3aGlsZSAhaiA+PSAhaSAmJiBpc19zcGFjZSAodW5zYWZlX2dldCBzICFqKSBkb1xuICAgIGRlY3IgalxuICBkb25lO1xuICBpZiAhaiA+PSAhaSB0aGVuXG4gICAgc3ViIHMgIWkgKCFqIC0gIWkgKyAxKVxuICBlbHNlXG4gICAgZW1wdHlcblxubGV0IGVzY2FwZWQgcyA9XG4gIGxldCBuID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgIG4gOj0gIW4gK1xuICAgICAgKG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXG4nIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXGInIC0+IDJcbiAgICAgICB8ICcgJyAuLiAnficgLT4gMVxuICAgICAgIHwgXyAtPiA0KVxuICBkb25lO1xuICBpZiAhbiA9IGxlbmd0aCBzIHRoZW4gY29weSBzIGVsc2UgYmVnaW5cbiAgICBsZXQgcycgPSBjcmVhdGUgIW4gaW5cbiAgICBuIDo9IDA7XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgICAgYmVnaW4gbWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAoJ1xcXCInIHwgJ1xcXFwnKSBhcyBjIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnbidcbiAgICAgIHwgJ1xcdCcgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICd0J1xuICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ3InXG4gICAgICB8ICdcXGInIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnYidcbiAgICAgIHwgKCcgJyAuLiAnficpIGFzIGMgLT4gdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8IGMgLT5cbiAgICAgICAgICBsZXQgYSA9IGNoYXJfY29kZSBjIGluXG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgLyAxMDApKTtcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgKGEgLyAxMCkgbW9kIDEwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgbW9kIDEwKSk7XG4gICAgICBlbmQ7XG4gICAgICBpbmNyIG5cbiAgICBkb25lO1xuICAgIHMnXG4gIGVuZFxuXG5sZXQgbWFwIGYgcyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgbCA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IG1hcGkgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBzIGkpKSBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhclxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgcyBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLnVwcGVyY2FzZV9hc2NpaSBzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPSBtYXAgQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG5sZXQgYXBwbHkxIGYgcyA9XG4gIGlmIGxlbmd0aCBzID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY29weSBzIGluXG4gICAgdW5zYWZlX3NldCByIDAgKGYodW5zYWZlX2dldCBzIDApKTtcbiAgICByXG4gIGVuZFxuXG5sZXQgY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9IGFwcGx5MSBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9wcmUgPSBsZW5ndGggcHJlZml4IGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fcHJlIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIGkgPD4gdW5zYWZlX2dldCBwcmVmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBsZW5fcyA+PSBsZW5fcHJlICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjX29wdCBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSBpbmRleF9yZWNfb3B0IHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICBpbmRleF9yZWMgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXggcyBjID0gcmluZGV4X3JlYyBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9vcHQgcyBjID0gcmluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbnR5cGUgdCA9IGJ5dGVzXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfYnl0ZXNfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbigqIERlcHJlY2F0ZWQgZnVuY3Rpb25zIGltcGxlbWVudGVkIHZpYSBvdGhlciBkZXByZWNhdGVkIGZ1bmN0aW9ucyAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubGV0IHVwcGVyY2FzZSBzID0gbWFwIENoYXIudXBwZXJjYXNlIHNcbmxldCBsb3dlcmNhc2UgcyA9IG1hcCBDaGFyLmxvd2VyY2FzZSBzXG5cbmxldCBjYXBpdGFsaXplIHMgPSBhcHBseTEgQ2hhci51cHBlcmNhc2Ugc1xubGV0IHVuY2FwaXRhbGl6ZSBzID0gYXBwbHkxIENoYXIubG93ZXJjYXNlIHNcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA9IGxlbmd0aCBzIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gZ2V0IHMgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGxldCBidWYgPSByZWYgKG1ha2UgMjU2ICdcXDAwMCcpIGluXG4gIGxldCByZXNpemUgKCkgPVxuICAgICgqIHJlc2l6ZSAqKVxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1pbiAoMiAqIGxlbmd0aCAhYnVmKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICBpZiBsZW5ndGggIWJ1ZiA9IG5ld19sZW4gdGhlbiBmYWlsd2l0aCBcIkJ5dGVzLm9mX3NlcTogY2Fubm90IGdyb3cgYnl0ZXNcIjtcbiAgICBsZXQgbmV3X2J1ZiA9IG1ha2UgbmV3X2xlbiAnXFwwMDAnIGluXG4gICAgYmxpdCAhYnVmIDAgbmV3X2J1ZiAwICFuO1xuICAgIGJ1ZiA6PSBuZXdfYnVmXG4gIGluXG4gIFNlcS5pdGVyXG4gICAgKGZ1biBjIC0+XG4gICAgICAgaWYgIW4gPSBsZW5ndGggIWJ1ZiB0aGVuIHJlc2l6ZSgpO1xuICAgICAgIHNldCAhYnVmICFuIGM7XG4gICAgICAgaW5jciBuKVxuICAgIGk7XG4gIHN1YiAhYnVmIDAgIW5cblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuKCogVGhlIGdldF8gZnVuY3Rpb25zIGFyZSBhbGwgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcblxuZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbmV4dGVybmFsIGdldF91aW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9ieXRlc19nZXQxNlwiXG5leHRlcm5hbCBnZXRfaW50MzJfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2J5dGVzX2dldDMyXCJcbmV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYnl0ZXNfZ2V0NjRcIlxuZXh0ZXJuYWwgc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBzZXRfaW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcbmV4dGVybmFsIHNldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMlwiXG5leHRlcm5hbCBzZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjRcIlxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxubGV0IGdldF9pbnQ4IGIgaSA9XG4gICgoZ2V0X3VpbnQ4IGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSA4KSkgYXNyIChTeXMuaW50X3NpemUgLSA4KVxuXG5sZXQgZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiAoZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IGdldF91aW50MTZfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X2ludDE2X25lIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9uZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2xlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9sZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2JlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9iZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDMyX2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIChnZXRfaW50MzJfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQzMl9uZSBiIGlcblxubGV0IGdldF9pbnQzMl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IChnZXRfaW50NjRfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQ2NF9uZSBiIGlcblxubGV0IGdldF9pbnQ2NF9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgc2V0X2ludDE2X2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSBzZXRfaW50MTZfbmUgYiBpIHhcblxubGV0IHNldF9pbnQxNl9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHNldF9pbnQxNl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDMyX2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MzJfbmUgYiBpIChzd2FwMzIgeClcbiAgZWxzZSBzZXRfaW50MzJfbmUgYiBpIHhcblxubGV0IHNldF9pbnQzMl9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQzMl9uZSBiIGkgKHN3YXAzMiB4KVxuICBlbHNlIHNldF9pbnQzMl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDY0X2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50NjRfbmUgYiBpIChzd2FwNjQgeClcbiAgZWxzZSBzZXRfaW50NjRfbmUgYiBpIHhcblxubGV0IHNldF9pbnQ2NF9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQ2NF9uZSBiIGkgKHN3YXA2NCB4KVxuICBlbHNlIHNldF9pbnQ2NF9uZSBiIGkgeFxuXG5sZXQgc2V0X3VpbnQ4ID0gc2V0X2ludDhcbmxldCBzZXRfdWludDE2X25lID0gc2V0X2ludDE2X25lXG5sZXQgc2V0X3VpbnQxNl9iZSA9IHNldF9pbnQxNl9iZVxubGV0IHNldF91aW50MTZfbGUgPSBzZXRfaW50MTZfbGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IEdhbGxpdW0sIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU3RyaW5nIG9wZXJhdGlvbnMsIGJhc2VkIG9uIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gYnl0ZXMubWwuXG4gICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBhIFwiZHVwbGljYXRlZFwiIGNvbW1lbnQgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbi5cbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlc3RyaW5nX3NhZmVfc2V0XCJcbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfc3RyaW5nXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJXN0cmluZ191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDogc3RyaW5nIC0+IGludCAtPiAgYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9maWxsX3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbm1vZHVsZSBCID0gQnl0ZXNcblxubGV0IGJ0cyA9IEIudW5zYWZlX3RvX3N0cmluZ1xubGV0IGJvcyA9IEIudW5zYWZlX29mX3N0cmluZ1xuXG5sZXQgbWFrZSBuIGMgPVxuICBCLm1ha2UgbiBjIHw+IGJ0c1xubGV0IGluaXQgbiBmID1cbiAgQi5pbml0IG4gZiB8PiBidHNcbmxldCBlbXB0eSA9IFwiXCJcbmxldCBjb3B5IHMgPVxuICBCLmNvcHkgKGJvcyBzKSB8PiBidHNcbmxldCBvZl9ieXRlcyA9IEIudG9fc3RyaW5nXG5sZXQgdG9fYnl0ZXMgPSBCLm9mX3N0cmluZ1xubGV0IHN1YiBzIG9mcyBsZW4gPVxuICBCLnN1YiAoYm9zIHMpIG9mcyBsZW4gfD4gYnRzXG5sZXQgZmlsbCA9XG4gIEIuZmlsbFxubGV0IGJsaXQgPVxuICBCLmJsaXRfc3RyaW5nXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbmNhdFwiXG5cbmxldCByZWMgc3VtX2xlbmd0aHMgYWNjIHNlcGxlbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjXG4gIHwgaGQgOjogW10gLT4gbGVuZ3RoIGhkICsgYWNjXG4gIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgc2VwbGVuICsgYWNjKSBhY2MpIHNlcGxlbiB0bFxuXG5sZXQgcmVjIHVuc2FmZV9ibGl0cyBkc3QgcG9zIHNlcCBzZXBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGRzdFxuICB8IGhkIDo6IFtdIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpOyBkc3RcbiAgfCBoZCA6OiB0bCAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTtcbiAgICB1bnNhZmVfYmxpdCBzZXAgMCBkc3QgKHBvcyArIGxlbmd0aCBoZCkgc2VwbGVuO1xuICAgIHVuc2FmZV9ibGl0cyBkc3QgKHBvcyArIGxlbmd0aCBoZCArIHNlcGxlbikgc2VwIHNlcGxlbiB0bFxuXG5sZXQgY29uY2F0IHNlcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gXCJcIlxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW4gYnRzIEBAXG4gICAgICAgICAgdW5zYWZlX2JsaXRzXG4gICAgICAgICAgICAoQi5jcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCA9ICggXiApXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyIGYgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG8gZiAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGl0ZXJpIGYgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IHMgaSkgZG9uZVxuXG5sZXQgbWFwIGYgcyA9XG4gIEIubWFwIGYgKGJvcyBzKSB8PiBidHNcbmxldCBtYXBpIGYgcyA9XG4gIEIubWFwaSBmIChib3MgcykgfD4gYnRzXG5sZXQgZm9sZF9yaWdodCBmIHggYSA9XG4gIEIuZm9sZF9yaWdodCBmIChib3MgeCkgYVxubGV0IGZvbGRfbGVmdCBmIGEgeCA9XG4gIEIuZm9sZF9sZWZ0IGYgYSAoYm9zIHgpXG5sZXQgZXhpc3RzIGYgcyA9XG4gIEIuZXhpc3RzIGYgKGJvcyBzKVxubGV0IGZvcl9hbGwgZiBzID1cbiAgQi5mb3JfYWxsIGYgKGJvcyBzKVxuXG4oKiBCZXdhcmU6IHdlIGNhbm5vdCB1c2UgQi50cmltIG9yIEIuZXNjYXBlIGJlY2F1c2UgdGhleSBhbHdheXMgbWFrZSBhXG4gICBjb3B5LCBidXQgU3RyaW5nLm1saSBzcGVsbHMgb3V0IHNvbWUgY2FzZXMgd2hlcmUgd2UgYXJlIG5vdCBhbGxvd2VkXG4gICB0byBtYWtlIGEgY29weS4gKilcblxubGV0IGlzX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFwwMTInIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHQnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCB0cmltIHMgPVxuICBpZiBzID0gXCJcIiB0aGVuIHNcbiAgZWxzZSBpZiBpc19zcGFjZSAodW5zYWZlX2dldCBzIDApIHx8IGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgKGxlbmd0aCBzIC0gMSkpXG4gICAgdGhlbiBidHMgKEIudHJpbSAoYm9zIHMpKVxuICBlbHNlIHNcblxubGV0IGVzY2FwZWQgcyA9XG4gIGxldCByZWMgZXNjYXBlX2lmX25lZWRlZCBzIG4gaSA9XG4gICAgaWYgaSA+PSBuIHRoZW4gcyBlbHNlXG4gICAgICBtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXDAwMCcuLidcXDAzMScgfCAnXFwxMjcnLi4gJ1xcMjU1JyAtPlxuICAgICAgICAgIGJ0cyAoQi5lc2NhcGVkIChib3MgcykpXG4gICAgICB8IF8gLT4gZXNjYXBlX2lmX25lZWRlZCBzIG4gKGkrMSlcbiAgaW5cbiAgZXNjYXBlX2lmX25lZWRlZCBzIChsZW5ndGggcykgMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlY19vcHQgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgaW5kZXhfcmVjX29wdCBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gICAgaW5kZXhfcmVjIHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4IHMgYyA9IHJpbmRleF9yZWMgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfb3B0IHMgYyA9IHJpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9XG4gIEIudXBwZXJjYXNlX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPVxuICBCLmxvd2VyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIuY2FwaXRhbGl6ZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID1cbiAgQi51bmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHN0YXJ0c193aXRoIH5wcmVmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fcHJlID0gbGVuZ3RoIHByZWZpeCBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3ByZSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyBpIDw+IHVuc2FmZV9nZXQgcHJlZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gbGVuX3MgPj0gbGVuX3ByZSAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzcGxpdF9vbl9jaGFyIHNlcCBzID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCBzKSBpblxuICBmb3IgaSA9IGxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHVuc2FmZV9nZXQgcyBpID0gc2VwIHRoZW4gYmVnaW5cbiAgICAgIHIgOj0gc3ViIHMgKGkgKyAxKSAoIWogLSBpIC0gMSkgOjogIXI7XG4gICAgICBqIDo9IGlcbiAgICBlbmRcbiAgZG9uZTtcbiAgc3ViIHMgMCAhaiA6OiAhclxuXG4oKiBEZXByZWNhdGVkIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCB2aWEgb3RoZXIgZGVwcmVjYXRlZCBmdW5jdGlvbnMgKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbmxldCB1cHBlcmNhc2UgcyA9XG4gIEIudXBwZXJjYXNlIChib3MgcykgfD4gYnRzXG5sZXQgbG93ZXJjYXNlIHMgPVxuICBCLmxvd2VyY2FzZSAoYm9zIHMpIHw+IGJ0c1xubGV0IGNhcGl0YWxpemUgcyA9XG4gIEIuY2FwaXRhbGl6ZSAoYm9zIHMpIHw+IGJ0c1xubGV0IHVuY2FwaXRhbGl6ZSBzID1cbiAgQi51bmNhcGl0YWxpemUgKGJvcyBzKSB8PiBidHNcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N0cmluZ19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IGJvcyBzIHw+IEIudG9fc2VxXG5cbmxldCB0b19zZXFpIHMgPSBib3MgcyB8PiBCLnRvX3NlcWlcblxubGV0IG9mX3NlcSBnID0gQi5vZl9zZXEgZyB8PiBidHNcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfc3RyaW5nX2dldDMyXCJcbmV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NFwiXG5cbmxldCBnZXRfaW50OCBzIGkgPSBCLmdldF9pbnQ4IChib3MgcykgaVxubGV0IGdldF91aW50MTZfbGUgcyBpID0gQi5nZXRfdWludDE2X2xlIChib3MgcykgaVxubGV0IGdldF91aW50MTZfYmUgcyBpID0gQi5nZXRfdWludDE2X2JlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9uZSBzIGkgPSBCLmdldF9pbnQxNl9uZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbGUgcyBpID0gQi5nZXRfaW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2JlIHMgaSA9IEIuZ2V0X2ludDE2X2JlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9sZSBzIGkgPSBCLmdldF9pbnQzMl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfYmUgcyBpID0gQi5nZXRfaW50MzJfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2xlIHMgaSA9IEIuZ2V0X2ludDY0X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9iZSBzIGkgPSBCLmdldF9pbnQ2NF9iZSAoYm9zIHMpIGlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gdW5pdCA9ICgpXG5cbmxldCBlcXVhbCAoKSAoKSA9IHRydWVcbmxldCBjb21wYXJlICgpICgpID0gMFxubGV0IHRvX3N0cmluZyAoKSA9IFwiKClcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGV4dGVybl9mbGFncyA9XG4gICAgTm9fc2hhcmluZ1xuICB8IENsb3N1cmVzXG4gIHwgQ29tcGF0XzMyXG4oKiBub3RlOiB0aGlzIHR5cGUgZGVmaW5pdGlvbiBpcyB1c2VkIGluICdydW50aW1lL2RlYnVnZ2VyLmMnICopXG5cbmV4dGVybmFsIHRvX2NoYW5uZWw6IG91dF9jaGFubmVsIC0+ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVcIlxuZXh0ZXJuYWwgdG9fYnl0ZXM6ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IGJ5dGVzXG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzXCJcbmV4dGVybmFsIHRvX3N0cmluZzogJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gc3RyaW5nXG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZ1wiXG5leHRlcm5hbCB0b19idWZmZXJfdW5zYWZlOlxuICAgICAgYnl0ZXMgLT4gaW50IC0+IGludCAtPiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBpbnRcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyXCJcblxubGV0IHRvX2J1ZmZlciBidWZmIG9mcyBsZW4gdiBmbGFncyA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC50b19idWZmZXI6IHN1YnN0cmluZyBvdXQgb2YgYm91bmRzXCJcbiAgZWxzZSB0b19idWZmZXJfdW5zYWZlIGJ1ZmYgb2ZzIGxlbiB2IGZsYWdzXG5cbigqIFRoZSBmdW5jdGlvbnMgYmVsb3cgdXNlIGJ5dGUgc2VxdWVuY2VzIGFzIGlucHV0LCBuZXZlciB1c2luZyBhbnlcbiAgIG11dGF0aW9uLiBJdCBtYWtlcyBzZW5zZSB0byB1c2Ugbm9uLW11dGF0ZWQgW2J5dGVzXSByYXRoZXIgdGhhblxuICAgW3N0cmluZ10sIGJlY2F1c2Ugd2UgcmVhbGx5IHdvcmsgd2l0aCBzZXF1ZW5jZXMgb2YgYnl0ZXMsIG5vdFxuICAgYSB0ZXh0IHJlcHJlc2VudGF0aW9uLlxuKilcblxuZXh0ZXJuYWwgZnJvbV9jaGFubmVsOiBpbl9jaGFubmVsIC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlXCJcbmV4dGVybmFsIGZyb21fYnl0ZXNfdW5zYWZlOiBieXRlcyAtPiBpbnQgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlc1wiXG5leHRlcm5hbCBkYXRhX3NpemVfdW5zYWZlOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX21hcnNoYWxfZGF0YV9zaXplXCJcblxubGV0IGhlYWRlcl9zaXplID0gMjBcbmxldCBkYXRhX3NpemUgYnVmZiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gaGVhZGVyX3NpemVcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZGF0YV9zaXplXCJcbiAgZWxzZSBkYXRhX3NpemVfdW5zYWZlIGJ1ZmYgb2ZzXG5sZXQgdG90YWxfc2l6ZSBidWZmIG9mcyA9IGhlYWRlcl9zaXplICsgZGF0YV9zaXplIGJ1ZmYgb2ZzXG5cbmxldCBmcm9tX2J5dGVzIGJ1ZmYgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGhlYWRlcl9zaXplXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmZyb21fYnl0ZXNcIlxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGxlbiA9IGRhdGFfc2l6ZV91bnNhZmUgYnVmZiBvZnMgaW5cbiAgICBpZiBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIChoZWFkZXJfc2l6ZSArIGxlbilcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5mcm9tX2J5dGVzXCJcbiAgICBlbHNlIGZyb21fYnl0ZXNfdW5zYWZlIGJ1ZmYgb2ZzXG4gIGVuZFxuXG5sZXQgZnJvbV9zdHJpbmcgYnVmZiBvZnMgPVxuICAoKiBCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIGlzIHNhZmUgaGVyZSwgYXMgdGhlIHByb2R1Y2VkIGJ5dGVcbiAgICAgc2VxdWVuY2UgaXMgbmV2ZXIgbXV0YXRlZCAqKVxuICBmcm9tX2J5dGVzIChCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIGJ1ZmYpIG9mc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBPcGVyYXRpb25zIG9uIGludGVybmFsIHJlcHJlc2VudGF0aW9ucyBvZiB2YWx1ZXMgKilcblxudHlwZSB0XG5cbnR5cGUgcmF3X2RhdGEgPSBuYXRpdmVpbnRcblxuZXh0ZXJuYWwgcmVwciA6ICdhIC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBvYmogOiB0IC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgbWFnaWMgOiAnYSAtPiAnYiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGlzX2ludCA6IHQgLT4gYm9vbCA9IFwiJW9ial9pc19pbnRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gaXNfYmxvY2sgYSA9IG5vdCAoaXNfaW50IGEpXG5leHRlcm5hbCB0YWcgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfdGFnXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHNldF90YWcgOiB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX29ial9zZXRfdGFnXCJcbmV4dGVybmFsIHNpemUgOiB0IC0+IGludCA9IFwiJW9ial9zaXplXCJcbmV4dGVybmFsIHJlYWNoYWJsZV93b3JkcyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial9yZWFjaGFibGVfd29yZHNcIlxuZXh0ZXJuYWwgZmllbGQgOiB0IC0+IGludCAtPiB0ID0gXCIlb2JqX2ZpZWxkXCJcbmV4dGVybmFsIHNldF9maWVsZCA6IHQgLT4gaW50IC0+IHQgLT4gdW5pdCA9IFwiJW9ial9zZXRfZmllbGRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdGFycmF5X2dldFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X3NldCA6XG4gICAgZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiY2FtbF9mbG9hdGFycmF5X3NldFwiXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBkb3VibGVfZmllbGQgeCBpID0gZmxvYXRhcnJheV9nZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaVxubGV0IFtAaW5saW5lIGFsd2F5c10gc2V0X2RvdWJsZV9maWVsZCB4IGkgdiA9XG4gIGZsb2F0YXJyYXlfc2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGkgdlxuZXh0ZXJuYWwgcmF3X2ZpZWxkIDogdCAtPiBpbnQgLT4gcmF3X2RhdGEgPSBcImNhbWxfb2JqX3Jhd19maWVsZFwiXG5leHRlcm5hbCBzZXRfcmF3X2ZpZWxkIDogdCAtPiBpbnQgLT4gcmF3X2RhdGEgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfb2JqX3NldF9yYXdfZmllbGRcIlxuXG5leHRlcm5hbCBuZXdfYmxvY2sgOiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfb2JqX2Jsb2NrXCJcbmV4dGVybmFsIGR1cCA6IHQgLT4gdCA9IFwiY2FtbF9vYmpfZHVwXCJcbmV4dGVybmFsIHRydW5jYXRlIDogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfdHJ1bmNhdGVcIlxuZXh0ZXJuYWwgYWRkX29mZnNldCA6IHQgLT4gSW50MzIudCAtPiB0ID0gXCJjYW1sX29ial9hZGRfb2Zmc2V0XCJcbmV4dGVybmFsIHdpdGhfdGFnIDogaW50IC0+IHQgLT4gdCA9IFwiY2FtbF9vYmpfd2l0aF90YWdcIlxuXG5sZXQgbWFyc2hhbCAob2JqIDogdCkgPVxuICBNYXJzaGFsLnRvX2J5dGVzIG9iaiBbXVxubGV0IHVubWFyc2hhbCBzdHIgcG9zID1cbiAgKE1hcnNoYWwuZnJvbV9ieXRlcyBzdHIgcG9zLCBwb3MgKyBNYXJzaGFsLnRvdGFsX3NpemUgc3RyIHBvcylcblxubGV0IGZpcnN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAwXG5sZXQgbGFzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMjQ1XG5cbmxldCBsYXp5X3RhZyA9IDI0NlxubGV0IGNsb3N1cmVfdGFnID0gMjQ3XG5sZXQgb2JqZWN0X3RhZyA9IDI0OFxubGV0IGluZml4X3RhZyA9IDI0OVxubGV0IGZvcndhcmRfdGFnID0gMjUwXG5cbmxldCBub19zY2FuX3RhZyA9IDI1MVxuXG5sZXQgYWJzdHJhY3RfdGFnID0gMjUxXG5sZXQgc3RyaW5nX3RhZyA9IDI1MlxubGV0IGRvdWJsZV90YWcgPSAyNTNcbmxldCBkb3VibGVfYXJyYXlfdGFnID0gMjU0XG5sZXQgY3VzdG9tX3RhZyA9IDI1NVxubGV0IGZpbmFsX3RhZyA9IGN1c3RvbV90YWdcblxuXG5sZXQgaW50X3RhZyA9IDEwMDBcbmxldCBvdXRfb2ZfaGVhcF90YWcgPSAxMDAxXG5sZXQgdW5hbGlnbmVkX3RhZyA9IDEwMDJcblxubW9kdWxlIENsb3N1cmUgPSBzdHJ1Y3RcbiAgdHlwZSBpbmZvID0ge1xuICAgIGFyaXR5OiBpbnQ7XG4gICAgc3RhcnRfZW52OiBpbnQ7XG4gIH1cblxuICBsZXQgaW5mb19vZl9yYXcgKGluZm8gOiBuYXRpdmVpbnQpID1cbiAgICBsZXQgb3BlbiBOYXRpdmVpbnQgaW5cbiAgICBsZXQgYXJpdHkgPVxuICAgICAgKCogc2lnbmVkOiBuZWdhdGl2ZSBmb3IgdHVwbGVkIGZ1bmN0aW9ucyAqKVxuICAgICAgaWYgU3lzLndvcmRfc2l6ZSA9IDY0IHRoZW5cbiAgICAgICAgdG9faW50IChzaGlmdF9yaWdodCBpbmZvIDU2KVxuICAgICAgZWxzZVxuICAgICAgICB0b19pbnQgKHNoaWZ0X3JpZ2h0IGluZm8gMjQpXG4gICAgaW5cbiAgICBsZXQgc3RhcnRfZW52ID1cbiAgICAgICgqIHN0YXJ0X2VudiBpcyB1bnNpZ25lZCwgYnV0IHdlIGtub3cgaXQgY2FuIGFsd2F5cyBmaXQgYW4gT0NhbWxcbiAgICAgICAgIGludGVnZXIgc28gd2UgdXNlIFt0b19pbnRdIGluc3RlYWQgb2YgW3Vuc2lnbmVkX3RvX2ludF0uICopXG4gICAgICB0b19pbnQgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKHNoaWZ0X2xlZnQgaW5mbyA4KSA5KSBpblxuICAgIHsgYXJpdHk7IHN0YXJ0X2VudiB9XG5cbiAgKCogbm90ZTogd2UgZXhwZWN0IGEgY2xvc3VyZSwgbm90IGFuIGluZml4IHBvaW50ZXIgKilcbiAgbGV0IGluZm8gKG9iaiA6IHQpID1cbiAgICBhc3NlcnQgKHRhZyBvYmogPSBjbG9zdXJlX3RhZyk7XG4gICAgaW5mb19vZl9yYXcgKHJhd19maWVsZCBvYmogMSlcbmVuZFxuXG5tb2R1bGUgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbnN0cnVjdFxuICB0eXBlIHQgPSBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgbGV0IG9mX3ZhbCB4ID1cbiAgICBsZXQgeCA9IHJlcHIgeCBpblxuICAgIGxldCBzbG90ID1cbiAgICAgIGlmIChpc19ibG9jayB4KSAmJiAodGFnIHgpIDw+IG9iamVjdF90YWcgJiYgKHNpemUgeCkgPj0gMSB0aGVuIGZpZWxkIHggMFxuICAgICAgZWxzZSB4XG4gICAgaW5cbiAgICBsZXQgbmFtZSA9XG4gICAgICBpZiAoaXNfYmxvY2sgc2xvdCkgJiYgKHRhZyBzbG90KSA9IG9iamVjdF90YWcgdGhlbiBmaWVsZCBzbG90IDBcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcbiAgICBpblxuICAgICAgaWYgKHRhZyBuYW1lKSA9IHN0cmluZ190YWcgdGhlbiAob2JqIHNsb3QgOiB0KVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIG5hbWUgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMCkgOiBzdHJpbmcpXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gaWQgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMSkgOiBpbnQpXG5lbmRcblxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IEV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWxcbmxldCBleHRlbnNpb25fbmFtZSA9IEV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5uYW1lXG5sZXQgZXh0ZW5zaW9uX2lkID0gRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkXG5cbm1vZHVsZSBFcGhlbWVyb24gPSBzdHJ1Y3RcbiAgdHlwZSBvYmpfdCA9IHRcblxuICB0eXBlIHQgKCoqIGVwaGVtZXJvbiAqKVxuXG4gICAoKiogVG8gY2hhbmdlIGluIHN5bmMgd2l0aCB3ZWFrLmggKilcbiAgbGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMlxuICBsZXQgbWF4X2VwaGVfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2VwaGVfY3JlYXRlXCI7O1xuICBsZXQgY3JlYXRlIGwgPVxuICAgIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gbWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uY3JlYXRlXCI7XG4gICAgY3JlYXRlIGxcblxuICBsZXQgbGVuZ3RoIHggPSBzaXplKHJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGV4dGVybmFsIGdldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlcIlxuICBsZXQgZ2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleVwiO1xuICAgIGdldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleV9jb3B5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcIlxuICBsZXQgZ2V0X2tleV9jb3B5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5X2NvcHlcIjtcbiAgICBnZXRfa2V5X2NvcHkgZSBvXG5cbiAgZXh0ZXJuYWwgc2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuICBsZXQgc2V0X2tleSBlIG8geCA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5zZXRfa2V5XCI7XG4gICAgc2V0X2tleSBlIG8geFxuXG4gIGV4dGVybmFsIHVuc2V0X2tleTogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG4gIGxldCB1bnNldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnVuc2V0X2tleVwiO1xuICAgIHVuc2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBjaGVja19rZXk6IHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19rZXlcIlxuICBsZXQgY2hlY2tfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5jaGVja19rZXlcIjtcbiAgICBjaGVja19rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgYmxpdF9rZXkgOiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgID0gXCJjYW1sX2VwaGVfYmxpdF9rZXlcIlxuXG4gIGxldCBibGl0X2tleSBlMSBvMSBlMiBvMiBsID1cbiAgICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgICAgfHwgbzIgPCAwIHx8IG8yID4gbGVuZ3RoIGUyIC0gbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmJsaXRfa2V5XCJcbiAgICBlbHNlIGlmIGwgPD4gMCB0aGVuIGJsaXRfa2V5IGUxIG8xIGUyIG8yIGxcblxuICBleHRlcm5hbCBnZXRfZGF0YTogdCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfZGF0YVwiXG4gIGV4dGVybmFsIGdldF9kYXRhX2NvcHk6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVwiXG4gIGV4dGVybmFsIHNldF9kYXRhOiB0IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfZGF0YVwiXG4gIGV4dGVybmFsIHVuc2V0X2RhdGE6IHQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2RhdGFcIlxuICBleHRlcm5hbCBjaGVja19kYXRhOiB0IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19kYXRhXCJcbiAgZXh0ZXJuYWwgYmxpdF9kYXRhIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9ibGl0X2RhdGFcIlxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIGFycmF5cy4gKilcbnR5cGUgJ2EgdCA9ICdhIGFycmF5XG5cbigqIEFycmF5IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogJ2EgYXJyYXkgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcbmV4dGVybmFsIGdldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3NhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcbmV4dGVybmFsIG1ha2U6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuZXh0ZXJuYWwgY3JlYXRlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIHVuc2FmZV9zdWIgOiAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X3N1YlwiXG5leHRlcm5hbCBhcHBlbmRfcHJpbSA6ICdhIGFycmF5IC0+ICdhIGFycmF5IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X2FwcGVuZFwiXG5leHRlcm5hbCBjb25jYXQgOiAnYSBhcnJheSBsaXN0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X2NvbmNhdFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6XG4gICdhIGFycmF5IC0+IGludCAtPiAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfYmxpdFwiXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6XG4gICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9hcnJheV9maWxsXCJcbmV4dGVybmFsIGNyZWF0ZV9mbG9hdDogaW50IC0+IGZsb2F0IGFycmF5ID0gXCJjYW1sX21ha2VfZmxvYXRfdmVjdFwiXG5sZXQgbWFrZV9mbG9hdCA9IGNyZWF0ZV9mbG9hdFxuXG5tb2R1bGUgRmxvYXRhcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gZmxvYXRhcnJheSA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IGZsb2F0YXJyYXkgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5lbmRcblxubGV0IGluaXQgbCBmID1cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2VcbiAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmluaXRcIlxuICAoKiBTZWUgIzY1NzUuIFdlIGNvdWxkIGFsc28gY2hlY2sgZm9yIG1heGltdW0gYXJyYXkgc2l6ZSwgYnV0IHRoaXMgZGVwZW5kc1xuICAgICBvbiB3aGV0aGVyIHdlIGNyZWF0ZSBhIGZsb2F0IGFycmF5IG9yIGEgcmVndWxhciBvbmUuLi4gKilcbiAgZWxzZVxuICAgbGV0IHJlcyA9IGNyZWF0ZSBsIChmIDApIGluXG4gICBmb3IgaSA9IDEgdG8gcHJlZCBsIGRvXG4gICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgIGRvbmU7XG4gICByZXNcblxubGV0IG1ha2VfbWF0cml4IHN4IHN5IGluaXQgPVxuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgZm9yIHggPSAwIHRvIHByZWQgc3ggZG9cbiAgICB1bnNhZmVfc2V0IHJlcyB4IChjcmVhdGUgc3kgaW5pdClcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBjcmVhdGVfbWF0cml4ID0gbWFrZV9tYXRyaXhcblxubGV0IGNvcHkgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW4gaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgdW5zYWZlX3N1YiBhIDAgbFxuXG5sZXQgYXBwZW5kIGExIGEyID1cbiAgbGV0IGwxID0gbGVuZ3RoIGExIGluXG4gIGlmIGwxID0gMCB0aGVuIGNvcHkgYTJcbiAgZWxzZSBpZiBsZW5ndGggYTIgPSAwIHRoZW4gdW5zYWZlX3N1YiBhMSAwIGwxXG4gIGVsc2UgYXBwZW5kX3ByaW0gYTEgYTJcblxubGV0IHN1YiBhIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGEgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LnN1YlwiXG4gIGVsc2UgdW5zYWZlX3N1YiBhIG9mcyBsZW5cblxubGV0IGZpbGwgYSBvZnMgbGVuIHYgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGEgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmZpbGxcIlxuICBlbHNlIHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2XG5cbmxldCBibGl0IGExIG9mczEgYTIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBsZW5ndGggYTEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIGEyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5ibGl0XCJcbiAgZWxzZSB1bnNhZmVfYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuXG5cbmxldCBpdGVyIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZih1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgaXRlcjIgZiBhIGIgPVxuICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICBlbHNlXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSBkb25lXG5cbmxldCBtYXAgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IG1hcDIgZiBhIGIgPVxuICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBsYSA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIChmICh1bnNhZmVfZ2V0IGEgMCkgKHVuc2FmZV9nZXQgYiAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcbiAgZW5kXG5cbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IG1hcGkgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYgMCAodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IHRvX2xpc3QgYSA9XG4gIGxldCByZWMgdG9saXN0IGkgcmVzID1cbiAgICBpZiBpIDwgMCB0aGVuIHJlcyBlbHNlIHRvbGlzdCAoaSAtIDEpICh1bnNhZmVfZ2V0IGEgaSA6OiByZXMpIGluXG4gIHRvbGlzdCAobGVuZ3RoIGEgLSAxKSBbXVxuXG4oKiBDYW5ub3QgdXNlIExpc3QubGVuZ3RoIGhlcmUgYmVjYXVzZSB0aGUgTGlzdCBtb2R1bGUgZGVwZW5kcyBvbiBBcnJheS4gKilcbmxldCByZWMgbGlzdF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjdVxuICB8IF86OnQgLT4gbGlzdF9sZW5ndGggKHN1Y2MgYWNjdSkgdFxuXG5sZXQgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgYSA9IGNyZWF0ZSAobGlzdF9sZW5ndGggMCBsKSBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGkrMSkgdGwgaW5cbiAgICAgIGZpbGwgMSB0bFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2MgaW5wdXRfYXJyYXkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0X2FycmF5IGluXG4gIGlmIGxlbiA9IDAgdGhlbiAoYWNjLCBbfHxdKSBlbHNlIGJlZ2luXG4gICAgbGV0IGFjYywgZWx0ID0gZiBhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgMCkgaW5cbiAgICBsZXQgb3V0cHV0X2FycmF5ID0gY3JlYXRlIGxlbiBlbHQgaW5cbiAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgYWNjJywgZWx0ID0gZiAhYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IGkpIGluXG4gICAgICBhY2MgOj0gYWNjJztcbiAgICAgIHVuc2FmZV9zZXQgb3V0cHV0X2FycmF5IGkgZWx0O1xuICAgIGRvbmU7XG4gICAgIWFjYywgb3V0cHV0X2FycmF5XG4gIGVuZFxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZm9yX2FsbDJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBleGlzdHMyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5leGlzdHMyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBtZW1xIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHggPT0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX29wdCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBpZiBwIHggdGhlbiBTb21lIHhcbiAgICAgIGVsc2UgbG9vcCAoc3VjYyBpKVxuICBpblxuICBsb29wIDBcblxubGV0IGZpbmRfbWFwIGYgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGYgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoc3VjYyBpKVxuICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgeCA9XG4gIGlmIHggPSBbfHxdIHRoZW4gW3x8XSwgW3x8XVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGEwLCBiMCA9IHVuc2FmZV9nZXQgeCAwIGluXG4gICAgbGV0IG4gPSBsZW5ndGggeCBpblxuICAgIGxldCBhID0gY3JlYXRlIG4gYTAgaW5cbiAgICBsZXQgYiA9IGNyZWF0ZSBuIGIwIGluXG4gICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICBsZXQgYWksIGJpID0gdW5zYWZlX2dldCB4IGkgaW5cbiAgICAgIHVuc2FmZV9zZXQgYSBpIGFpO1xuICAgICAgdW5zYWZlX3NldCBiIGkgYmlcbiAgICBkb25lO1xuICAgIGEsIGJcbiAgZW5kXG5cbmxldCBjb21iaW5lIGEgYiA9XG4gIGxldCBuYSA9IGxlbmd0aCBhIGluXG4gIGxldCBuYiA9IGxlbmd0aCBiIGluXG4gIGlmIG5hIDw+IG5iIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5jb21iaW5lXCI7XG4gIGlmIG5hID0gMCB0aGVuIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCB4ID0gY3JlYXRlIG5hICh1bnNhZmVfZ2V0IGEgMCwgdW5zYWZlX2dldCBiIDApIGluXG4gICAgZm9yIGkgPSAxIHRvIG5hIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCB4IGkgKHVuc2FmZV9nZXQgYSBpLCB1bnNhZmVfZ2V0IGIgaSlcbiAgICBkb25lO1xuICAgIHhcbiAgZW5kXG5cbmV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG5sZXQgc29ydCBjbXAgYSA9XG4gIGxldCBtYXhzb24gbCBpID1cbiAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICF4XG4gICAgZW5kIGVsc2VcbiAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgdGhlbiBpMzErMVxuICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICBpblxuICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgIGJ1YmJsZWRvd24gbCBqXG4gIGluXG4gIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgc2V0IGEgaSBlO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgZG9uZTtcbiAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuXG5sZXQgY3V0b2ZmID0gNVxubGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICBlbmRcbiAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgaW5cbiAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgZGVjciBqO1xuICAgICAgZG9uZTtcbiAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICBkb25lO1xuICBpblxuICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgbGV0IHQgPSBtYWtlIGwyIChnZXQgYSAwKSBpblxuICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICBlbmRcblxuXG5sZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgb2ZfcmV2X2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGxlbiA9IGxpc3RfbGVuZ3RoIDAgbCBpblxuICAgICAgbGV0IGEgPSBjcmVhdGUgbGVuIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgICAgaW5cbiAgICAgIGZpbGwgKGxlbi0yKSB0bFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgb2ZfcmV2X2xpc3QgbFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICBOaWNvbGFzIE9qZWRhIEJhciwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBuZWcgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsIGFkZCA6IGZsb2F0IC0+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+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgICBkZWNyIGo7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICAgIGRvbmU7XG4gICAgaW5cbiAgICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgICAgaWYgbGVuIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgICBzb3J0dG8gKHNyY29mcyArIGwxKSBkc3QgKGRzdG9mcyArIGwxKSBsMjtcbiAgICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gMCBhIDAgbCBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgICBsZXQgdCA9IGNyZWF0ZSBsMiBpblxuICAgICAgc29ydHRvIGwxIHQgMCBsMjtcbiAgICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICAgIGVuZFxuXG4gIGxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxIGEgPVxuICAgIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgICB0aGVuXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHRvX3NlcWkgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9yZXZfbGlzdCBsID1cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCBhID0gY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgW10gLT4gYVxuICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICBpblxuICAgIGZpbGwgKGxlbi0xKSBsXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9zZXEgaSA9XG4gICAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gICAgb2ZfcmV2X2xpc3QgbFxuXG5cbiAgbGV0IG1hcF90b19hcnJheSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsID0gMCB0aGVuIFt8IHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gQXJyYXkubWFrZSBsIChmICh1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgbGV0IG1hcF9mcm9tX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbmVuZFxuXG5tb2R1bGUgQXJyYXlMYWJlbHMgPSBBcnJheVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDMyXTogMzItYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDMyID0gXCIlaW50MzJfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDMyIC0+IGludCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX29mX2Zsb2F0XCIgXCJjYW1sX2ludDMyX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQzMiAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQzMl90b19mbG9hdFwiIFwiY2FtbF9pbnQzMl90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgemVybyA9IDBsXG5sZXQgb25lID0gMWxcbmxldCBtaW51c19vbmUgPSAtMWxcbmxldCBzdWNjIG4gPSBhZGQgbiAxbFxubGV0IHByZWQgbiA9IHN1YiBuIDFsXG5sZXQgYWJzIG4gPSBpZiBuID49IDBsIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgbWluX2ludCA9IDB4ODAwMDAwMDBsXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZsXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFsKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbWF0Y2ggU3lzLndvcmRfc2l6ZSB3aXRoXG4gIHwgMzIgLT5cbiAgICAgIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gICAgICBmdW4gbiAtPlxuICAgICAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICB8IDY0IC0+XG4gICAgICAoKiBTbyB0aGF0IGl0IGNvbXBpbGVzIGluIDMyLWJpdCAqKVxuICAgICAgbGV0IG1hc2sgPSAweEZGRkYgbHNsIDE2IGxvciAweEZGRkYgaW5cbiAgICAgIGZ1biBuIC0+IFNvbWUgKHRvX2ludCBuIGxhbmQgbWFzaylcbiAgfCBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZyA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMiA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxudHlwZSB0ID0gaW50MzJcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDY0XTogNjQtYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG5cbmxldCB6ZXJvID0gMExcbmxldCBvbmUgPSAxTFxubGV0IG1pbnVzX29uZSA9IC0xTFxubGV0IHN1Y2MgbiA9IGFkZCBuIDFMXG5sZXQgcHJlZCBuID0gc3ViIG4gMUxcbmxldCBhYnMgbiA9IGlmIG4gPj0gMEwgdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBtaW5faW50ID0gMHg4MDAwMDAwMDAwMDAwMDAwTFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGRkZGRkZGRkZMXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFMKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5cblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbnR5cGUgdCA9IGludDY0XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtOYXRpdmVpbnRdOiBwcm9jZXNzb3ItbmF0aXZlIGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZzogbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9uZWdcIlxuZXh0ZXJuYWwgYWRkOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hZGRcIlxuZXh0ZXJuYWwgc3ViOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9zdWJcIlxuZXh0ZXJuYWwgbXVsOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9tdWxcIlxuZXh0ZXJuYWwgZGl2OiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9kaXZcIlxuZXh0ZXJuYWwgcmVtOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3I6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29yXCJcbmV4dGVybmFsIGxvZ3hvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQ6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWw6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2xzclwiXG5leHRlcm5hbCBvZl9pbnQ6IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludDogbmF0aXZlaW50IC0+IGludCA9IFwiJW5hdGl2ZWludF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBuYXRpdmVpbnRcbiAgPSBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogbmF0aXZlaW50IC0+IGZsb2F0XG4gID0gXCJjYW1sX25hdGl2ZWludF90b19mbG9hdFwiIFwiY2FtbF9uYXRpdmVpbnRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBvZl9pbnQzMjogaW50MzIgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyOiBuYXRpdmVpbnQgLT4gaW50MzIgPSBcIiVuYXRpdmVpbnRfdG9faW50MzJcIlxuXG5sZXQgemVybyA9IDBuXG5sZXQgb25lID0gMW5cbmxldCBtaW51c19vbmUgPSAtMW5cbmxldCBzdWNjIG4gPSBhZGQgbiAxblxubGV0IHByZWQgbiA9IHN1YiBuIDFuXG5sZXQgYWJzIG4gPSBpZiBuID49IDBuIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgc2l6ZSA9IFN5cy53b3JkX3NpemVcbmxldCBtaW5faW50ID0gc2hpZnRfbGVmdCAxbiAoc2l6ZSAtIDEpXG5sZXQgbWF4X2ludCA9IHN1YiBtaW5faW50IDFuXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFuKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gbmF0aXZlaW50IC0+IHN0cmluZyA9IFwiY2FtbF9uYXRpdmVpbnRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmc6IHN0cmluZyAtPiBuYXRpdmVpbnQgPSBcImNhbWxfbmF0aXZlaW50X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG50eXBlIHQgPSBuYXRpdmVpbnRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4ICopXG5cbnR5cGUgcG9zaXRpb24gPSB7XG4gIHBvc19mbmFtZSA6IHN0cmluZztcbiAgcG9zX2xudW0gOiBpbnQ7XG4gIHBvc19ib2wgOiBpbnQ7XG4gIHBvc19jbnVtIDogaW50O1xufVxuXG5sZXQgZHVtbXlfcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDA7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IC0xO1xufVxuXG50eXBlIGxleGJ1ZiA9XG4gIHsgcmVmaWxsX2J1ZmYgOiBsZXhidWYgLT4gdW5pdDtcbiAgICBtdXRhYmxlIGxleF9idWZmZXIgOiBieXRlcztcbiAgICBtdXRhYmxlIGxleF9idWZmZXJfbGVuIDogaW50O1xuICAgIG11dGFibGUgbGV4X2Fic19wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2N1cnJfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfYWN0aW9uIDogaW50O1xuICAgIG11dGFibGUgbGV4X2VvZl9yZWFjaGVkIDogYm9vbDtcbiAgICBtdXRhYmxlIGxleF9tZW0gOiBpbnQgYXJyYXk7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcCA6IHBvc2l0aW9uO1xuICAgIG11dGFibGUgbGV4X2N1cnJfcCA6IHBvc2l0aW9uO1xuICB9XG5cbnR5cGUgbGV4X3RhYmxlcyA9XG4gIHsgbGV4X2Jhc2U6IHN0cmluZztcbiAgICBsZXhfYmFja3Ryazogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0OiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrOiBzdHJpbmc7XG4gICAgbGV4X2Jhc2VfY29kZSA6IHN0cmluZztcbiAgICBsZXhfYmFja3Rya19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0X2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NvZGU6IHN0cmluZzt9XG5cbmV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcbmV4dGVybmFsIGNfbmV3X2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9uZXdfbGV4X2VuZ2luZVwiXG5cbmxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gIGlmIHJlc3VsdCA+PSAwICYmIGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3BvcyB0aGVuIGJlZ2luXG4gICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gIGVuZDtcbiAgcmVzdWx0XG5cblxubGV0IG5ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX25ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5sZXQgbGV4X3JlZmlsbCByZWFkX2Z1biBhdXhfYnVmZmVyIGxleGJ1ZiA9XG4gIGxldCByZWFkID1cbiAgICByZWFkX2Z1biBhdXhfYnVmZmVyIChCeXRlcy5sZW5ndGggYXV4X2J1ZmZlcikgaW5cbiAgbGV0IG4gPVxuICAgIGlmIHJlYWQgPiAwXG4gICAgdGhlbiByZWFkXG4gICAgZWxzZSAobGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlOyAwKSBpblxuICAoKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBidWZmZXI6XG4gICAgICAgIDwtLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLT5cbiAgICAgICAgfCAganVuayB8ICAgICAgdmFsaWQgZGF0YSAgICAgfCAgIGp1bmsgICAgfFxuICAgICAgICBeICAgICAgIF4gICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICBeXG4gICAgICAgIDAgICAgc3RhcnRfcG9zICAgICAgICAgICAgIGJ1ZmZlcl9lbmQgICAgQnl0ZXMubGVuZ3RoIGJ1ZmZlclxuICAqKVxuICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuID4gQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyIHRoZW4gYmVnaW5cbiAgICAoKiBUaGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgblxuICAgICAgIDw9IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlclxuICAgIHRoZW4gYmVnaW5cbiAgICAgICgqIEJ1dCB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgaWYgd2UgcmVjbGFpbSB0aGUganVuayBhdCB0aGUgYmVnaW5uaW5nXG4gICAgICAgICBvZiB0aGUgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBsZXhidWYubGV4X2J1ZmZlciAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICgqIFdlIG11c3QgZ3JvdyB0aGUgYnVmZmVyLiAgRG91YmxpbmcgaXRzIHNpemUgd2lsbCBwcm92aWRlIGVub3VnaFxuICAgICAgICAgc3BhY2Ugc2luY2UgbiA8PSBTdHJpbmcubGVuZ3RoIGF1eF9idWZmZXIgPD0gU3RyaW5nLmxlbmd0aCBidWZmZXIuXG4gICAgICAgICBXYXRjaCBvdXQgZm9yIHN0cmluZyBsZW5ndGggb3ZlcmZsb3csIHRob3VnaC4gKilcbiAgICAgIGxldCBuZXdsZW4gPVxuICAgICAgICBJbnQubWluICgyICogQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgbiA+IG5ld2xlblxuICAgICAgdGhlbiBmYWlsd2l0aCBcIkxleGluZy5sZXhfcmVmaWxsOiBjYW5ub3QgZ3JvdyBidWZmZXJcIjtcbiAgICAgIGxldCBuZXdidWYgPSBCeXRlcy5jcmVhdGUgbmV3bGVuIGluXG4gICAgICAoKiBDb3B5IHRoZSB2YWxpZCBkYXRhIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5ldyBidWZmZXIgKilcbiAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgIG5ld2J1ZiAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpO1xuICAgICAgbGV4YnVmLmxleF9idWZmZXIgPC0gbmV3YnVmXG4gICAgZW5kO1xuICAgICgqIFJlYWxsb2NhdGlvbiBvciBub3QsIHdlIGhhdmUgc2hpZnRlZCB0aGUgZGF0YSBsZWZ0IGJ5XG4gICAgICAgc3RhcnRfcG9zIGNoYXJhY3RlcnM7IHVwZGF0ZSB0aGUgcG9zaXRpb25zICopXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBzO1xuICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIHM7XG4gICAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gMDtcbiAgICBsZXhidWYubGV4X2xhc3RfcG9zIDwtIGxleGJ1Zi5sZXhfbGFzdF9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBzIDtcbiAgICBsZXQgdCA9IGxleGJ1Zi5sZXhfbWVtIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LTEgZG9cbiAgICAgIGxldCB2ID0gdC4oaSkgaW5cbiAgICAgIGlmIHYgPj0gMCB0aGVuXG4gICAgICAgIHQuKGkpIDwtIHYtc1xuICAgIGRvbmVcbiAgZW5kO1xuICAoKiBUaGVyZSBpcyBub3cgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICBCeXRlcy5ibGl0IGF1eF9idWZmZXIgMCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X2J1ZmZlcl9sZW4gbjtcbiAgbGV4YnVmLmxleF9idWZmZXJfbGVuIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiArIG5cblxubGV0IHplcm9fcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDE7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IDA7XG59XG5cbmxldCBmcm9tX2Z1bmN0aW9uID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBmID1cbiAgeyByZWZpbGxfYnVmZiA9IGxleF9yZWZpbGwgZiAoQnl0ZXMuY3JlYXRlIDUxMik7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAxMDI0O1xuICAgIGxleF9idWZmZXJfbGVuID0gMDtcbiAgICBsZXhfYWJzX3BvcyA9IDA7XG4gICAgbGV4X3N0YXJ0X3BvcyA9IDA7XG4gICAgbGV4X2N1cnJfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9wb3MgPSAwO1xuICAgIGxleF9sYXN0X2FjdGlvbiA9IDA7XG4gICAgbGV4X21lbSA9IFt8fF07XG4gICAgbGV4X2VvZl9yZWFjaGVkID0gZmFsc2U7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBmcm9tX2NoYW5uZWwgP3dpdGhfcG9zaXRpb25zIGljID1cbiAgZnJvbV9mdW5jdGlvbiA/d2l0aF9wb3NpdGlvbnMgKGZ1biBidWYgbiAtPiBpbnB1dCBpYyBidWYgMCBuKVxuXG5sZXQgZnJvbV9zdHJpbmcgPyh3aXRoX3Bvc2l0aW9ucyA9IHRydWUpIHMgPVxuICB7IHJlZmlsbF9idWZmID0gKGZ1biBsZXhidWYgLT4gbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlKTtcbiAgICBsZXhfYnVmZmVyID0gQnl0ZXMub2Zfc3RyaW5nIHM7ICgqIGhhdmUgdG8gbWFrZSBhIGNvcHkgZm9yIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdW5zYWZlLXN0cmluZyBtb2RlICopXG4gICAgbGV4X2J1ZmZlcl9sZW4gPSBTdHJpbmcubGVuZ3RoIHM7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IHRydWU7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBzZXRfcG9zaXRpb24gbGV4YnVmIHBvc2l0aW9uID1cbiAgbGV4YnVmLmxleF9jdXJyX3AgIDwtIHtwb3NpdGlvbiB3aXRoIHBvc19mbmFtZSA9IGxleGJ1Zi5sZXhfY3Vycl9wLnBvc19mbmFtZX07XG4gIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBwb3NpdGlvbi5wb3NfY251bVxuXG5sZXQgc2V0X2ZpbGVuYW1lIGxleGJ1ZiBmbmFtZSA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHtsZXhidWYubGV4X2N1cnJfcCB3aXRoIHBvc19mbmFtZSA9IGZuYW1lfVxuXG5sZXQgd2l0aF9wb3NpdGlvbnMgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zXG5cbmxldCBsZXhlbWUgbGV4YnVmID1cbiAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICBCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG5sZXQgc3ViX2xleGVtZSBsZXhidWYgaTEgaTIgPVxuICBsZXQgbGVuID0gaTItaTEgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBpMSBsZW5cblxubGV0IHN1Yl9sZXhlbWVfb3B0IGxleGJ1ZiBpMSBpMiA9XG4gIGlmIGkxID49IDAgdGhlbiBiZWdpblxuICAgIGxldCBsZW4gPSBpMi1pMSBpblxuICAgIFNvbWUgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuKVxuICBlbmQgZWxzZSBiZWdpblxuICAgIE5vbmVcbiAgZW5kXG5cbmxldCBzdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGkgPSBCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgaVxuXG5sZXQgc3ViX2xleGVtZV9jaGFyX29wdCBsZXhidWYgaSA9XG4gIGlmIGkgPj0gMCB0aGVuXG4gICAgU29tZSAoQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGkpXG4gIGVsc2VcbiAgICBOb25lXG5cblxubGV0IGxleGVtZV9jaGFyIGxleGJ1ZiBpID1cbiAgQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIChsZXhidWYubGV4X3N0YXJ0X3BvcyArIGkpXG5cbmxldCBsZXhlbWVfc3RhcnQgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wLnBvc19jbnVtXG5sZXQgbGV4ZW1lX2VuZCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfY251bVxuXG5sZXQgbGV4ZW1lX3N0YXJ0X3AgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wXG5sZXQgbGV4ZW1lX2VuZF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wXG5cbmxldCBuZXdfbGluZSBsZXhidWYgPVxuICBsZXQgbGNwID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICAgIHsgbGNwIHdpdGhcbiAgICAgICAgcG9zX2xudW0gPSBsY3AucG9zX2xudW0gKyAxO1xuICAgICAgICBwb3NfYm9sID0gbGNwLnBvc19jbnVtO1xuICAgICAgfVxuXG5cblxuKCogRGlzY2FyZCBkYXRhIGxlZnQgaW4gbGV4ZXIgYnVmZmVyLiAqKVxuXG5sZXQgZmx1c2hfaW5wdXQgbGIgPVxuICBsYi5sZXhfY3Vycl9wb3MgPC0gMDtcbiAgbGIubGV4X2Fic19wb3MgPC0gMDtcbiAgbGV0IGxjcCA9IGxiLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGIubGV4X2N1cnJfcCA8LSB7emVyb19wb3Mgd2l0aCBwb3NfZm5hbWUgPSBsY3AucG9zX2ZuYW1lfTtcbiAgbGIubGV4X2J1ZmZlcl9sZW4gPC0gMDtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHBhcnNpbmcgZW5naW5lICopXG5cbm9wZW4gTGV4aW5nXG5cbigqIEludGVybmFsIGludGVyZmFjZSB0byB0aGUgcGFyc2luZyBlbmdpbmUgKilcblxudHlwZSBwYXJzZXJfZW52ID1cbiAgeyBtdXRhYmxlIHNfc3RhY2sgOiBpbnQgYXJyYXk7ICAgICAgICAoKiBTdGF0ZXMgKilcbiAgICBtdXRhYmxlIHZfc3RhY2sgOiBPYmoudCBhcnJheTsgICAgICAoKiBTZW1hbnRpYyBhdHRyaWJ1dGVzICopXG4gICAgbXV0YWJsZSBzeW1iX3N0YXJ0X3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICgqIFN0YXJ0IHBvc2l0aW9ucyAqKVxuICAgIG11dGFibGUgc3ltYl9lbmRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgICAoKiBFbmQgcG9zaXRpb25zICopXG4gICAgbXV0YWJsZSBzdGFja3NpemUgOiBpbnQ7ICAgICAgICAgICAgKCogU2l6ZSBvZiB0aGUgc3RhY2tzICopXG4gICAgbXV0YWJsZSBzdGFja2Jhc2UgOiBpbnQ7ICAgICAgICAgICAgKCogQmFzZSBzcCBmb3IgY3VycmVudCBwYXJzZSAqKVxuICAgIG11dGFibGUgY3Vycl9jaGFyIDogaW50OyAgICAgICAgICAgICgqIExhc3QgdG9rZW4gcmVhZCAqKVxuICAgIG11dGFibGUgbHZhbCA6IE9iai50OyAgICAgICAgICAgICAgICgqIEl0cyBzZW1hbnRpYyBhdHRyaWJ1dGUgKilcbiAgICBtdXRhYmxlIHN5bWJfc3RhcnQgOiBwb3NpdGlvbjsgICAgICAoKiBTdGFydCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCopXG4gICAgbXV0YWJsZSBzeW1iX2VuZCA6IHBvc2l0aW9uOyAgICAgICAgKCogRW5kIHBvcy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sICopXG4gICAgbXV0YWJsZSBhc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogVGhlIHN0YWNrIHBvaW50ZXIgZm9yIGF0dHJpYnV0ZXMgKilcbiAgICBtdXRhYmxlIHJ1bGVfbGVuIDogaW50OyAgICAgICAgICAgICAoKiBOdW1iZXIgb2YgcmhzIGl0ZW1zIGluIHRoZSBydWxlICopXG4gICAgbXV0YWJsZSBydWxlX251bWJlciA6IGludDsgICAgICAgICAgKCogUnVsZSBudW1iZXIgdG8gcmVkdWNlIGJ5ICopXG4gICAgbXV0YWJsZSBzcCA6IGludDsgICAgICAgICAgICAgICAgICAgKCogU2F2ZWQgc3AgZm9yIHBhcnNlX2VuZ2luZSAqKVxuICAgIG11dGFibGUgc3RhdGUgOiBpbnQ7ICAgICAgICAgICAgICAgICgqIFNhdmVkIHN0YXRlIGZvciBwYXJzZV9lbmdpbmUgKilcbiAgICBtdXRhYmxlIGVycmZsYWcgOiBpbnQgfSAgICAgICAgICAgICAoKiBTYXZlZCBlcnJvciBmbGFnIGZvciBwYXJzZV9lbmdpbmUgKilcbltAQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdXG5cbnR5cGUgcGFyc2VfdGFibGVzID1cbiAgeyBhY3Rpb25zIDogKHBhcnNlcl9lbnYgLT4gT2JqLnQpIGFycmF5O1xuICAgIHRyYW5zbF9jb25zdCA6IGludCBhcnJheTtcbiAgICB0cmFuc2xfYmxvY2sgOiBpbnQgYXJyYXk7XG4gICAgbGhzIDogc3RyaW5nO1xuICAgIGxlbiA6IHN0cmluZztcbiAgICBkZWZyZWQgOiBzdHJpbmc7XG4gICAgZGdvdG8gOiBzdHJpbmc7XG4gICAgc2luZGV4IDogc3RyaW5nO1xuICAgIHJpbmRleCA6IHN0cmluZztcbiAgICBnaW5kZXggOiBzdHJpbmc7XG4gICAgdGFibGVzaXplIDogaW50O1xuICAgIHRhYmxlIDogc3RyaW5nO1xuICAgIGNoZWNrIDogc3RyaW5nO1xuICAgIGVycm9yX2Z1bmN0aW9uIDogc3RyaW5nIC0+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+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgODtcbiAgdW5zYWZlX3NldF9pbnQ2NCBiLmJ1ZmZlciBiLnBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbGUgYiB4ID1cbiAgYWRkX2ludDE2X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDE2X2JlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcblxubGV0IGFkZF9pbnQzMl9sZSBiIHggPVxuICBhZGRfaW50MzJfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50MzJfYmUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuXG5sZXQgYWRkX2ludDY0X2xlIGIgeCA9XG4gIGFkZF9pbnQ2NF9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQ2NF9iZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHgpXG5cbmxldCBhZGRfdWludDggPSBhZGRfaW50OFxubGV0IGFkZF91aW50MTZfbmUgPSBhZGRfaW50MTZfbmVcbmxldCBhZGRfdWludDE2X2xlID0gYWRkX2ludDE2X2xlXG5sZXQgYWRkX3VpbnQxNl9iZSA9IGFkZF9pbnQxNl9iZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgIEJlbm9pdCBWYXVnb24sIEVOU1RBICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAoKiBUb29scyB0byBtYW5pcHVsYXRlIHNjYW5uaW5nIHNldCBvZiBjaGFycyAoc2VlICVbLi4uXSkgKilcblxudHlwZSBtdXRhYmxlX2NoYXJfc2V0ID0gYnl0ZXNcblxuKCogQ3JlYXRlIGEgZnJlc2gsIGVtcHR5LCBtdXRhYmxlIGNoYXIgc2V0LiAqKVxubGV0IGNyZWF0ZV9jaGFyX3NldCAoKSA9IEJ5dGVzLm1ha2UgMzIgJ1xcMDAwJ1xuXG4oKiBBZGQgYSBjaGFyIGluIGEgbXV0YWJsZSBjaGFyIHNldC4gKilcbmxldCBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyA9XG4gIGxldCBpbmQgPSBpbnRfb2ZfY2hhciBjIGluXG4gIGxldCBzdHJfaW5kID0gaW5kIGxzciAzIGFuZCBtYXNrID0gMSBsc2wgKGluZCBsYW5kIDBiMTExKSBpblxuICBCeXRlcy5zZXQgY2hhcl9zZXQgc3RyX2luZFxuICAgIChjaGFyX29mX2ludCAoaW50X29mX2NoYXIgKEJ5dGVzLmdldCBjaGFyX3NldCBzdHJfaW5kKSBsb3IgbWFzaykpXG5cbmxldCBmcmVlemVfY2hhcl9zZXQgY2hhcl9zZXQgPVxuICBCeXRlcy50b19zdHJpbmcgY2hhcl9zZXRcblxuKCogQ29tcHV0ZSB0aGUgY29tcGxlbWVudCBvZiBhIGNoYXIgc2V0LiAqKVxubGV0IHJldl9jaGFyX3NldCBjaGFyX3NldCA9XG4gIGxldCBjaGFyX3NldCcgPSBjcmVhdGVfY2hhcl9zZXQgKCkgaW5cbiAgZm9yIGkgPSAwIHRvIDMxIGRvXG4gICAgQnl0ZXMuc2V0IGNoYXJfc2V0JyBpXG4gICAgICAoY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIChTdHJpbmcuZ2V0IGNoYXJfc2V0IGkpIGx4b3IgMHhGRikpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGNoYXJfc2V0J1xuXG4oKiBSZXR1cm4gdHJ1ZSBpZiBhIGBjJyBpcyBpbiBgY2hhcl9zZXQnLiAqKVxubGV0IGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgPVxuICBsZXQgaW5kID0gaW50X29mX2NoYXIgYyBpblxuICBsZXQgc3RyX2luZCA9IGluZCBsc3IgMyBhbmQgbWFzayA9IDEgbHNsIChpbmQgbGFuZCAwYjExMSkgaW5cbiAgKGludF9vZl9jaGFyIChTdHJpbmcuZ2V0IGNoYXJfc2V0IHN0cl9pbmQpIGxhbmQgbWFzaykgPD4gMFxuXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCogSWdub3JlZCBwYXJhbSBjb252ZXJzaW9uICopXG5cbigqIEdBRFQgdXNlZCB0byBhYnN0cmFjdCBhbiBleGlzdGVudGlhbCB0eXBlIHBhcmFtZXRlci4gKilcbigqIFNlZSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYXJhbV9mb3JtYXRfZWJiID0gUGFyYW1fZm9ybWF0X0VCQiA6XG4gICAgKCd4IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYXJhbV9mb3JtYXRfZWJiXG5cbigqIENvbXB1dGUgYSBwYWRkaW5nIGFzc29jaWF0ZWQgdG8gYSBwYWRfb3B0aW9uIChzZWUgXCIlXzQyZFwiKS4gKilcbmxldCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0ID0gbWF0Y2ggcGFkX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBOb19wYWRkaW5nXG4gIHwgU29tZSB3aWR0aCAtPiBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKVxuXG4oKiBDb21wdXRlIGEgcHJlY2lzaW9uIGFzc29jaWF0ZWQgdG8gYSBwcmVjX29wdGlvbiAoc2VlIFwiJV8uNDJmXCIpLiAqKVxubGV0IHByZWNfb2ZfcHJlY19vcHQgcHJlY19vcHQgPSBtYXRjaCBwcmVjX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBOb19wcmVjaXNpb25cbiAgfCBTb21lIG5kZWMgLT4gTGl0X3ByZWNpc2lvbiBuZGVjXG5cbigqIFR1cm4gYW4gaWdub3JlZCBwYXJhbSBpbnRvIGl0cyBlcXVpdmFsZW50IG5vdC1pZ25vcmVkIGZvcm1hdCBub2RlLiAqKVxuKCogVXNlZCBmb3IgZm9ybWF0IHByZXR0eS1wcmludGluZyBhbmQgU2NhbmYuICopXG5sZXQgcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgLlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+ICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT5cbiAgICAgIChhLCBiLCBjLCBkLCBlLCBmKSBwYXJhbV9mb3JtYXRfZWJiID1cbmZ1biBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2hhciBmbXQpXG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDYW1sX2NoYXIgZm10KVxuICB8IElnbm9yZWRfc3RyaW5nIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTdHJpbmcgKHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEludCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2ludDMyIChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoSW50MzIgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChOYXRpdmVpbnQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQ2NCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEludDY0IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfZmxvYXQgKHBhZF9vcHQsIHByZWNfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChGbG9hdCAoKEZsb2F0X2ZsYWdfLCBGbG9hdF9mKSxcbiAgICAgICAgICAgICAgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgcHJlY19vZl9wcmVjX29wdCBwcmVjX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2Jvb2wgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEJvb2wgKHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgZm10KSlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHkpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIGZtdCkpXG4gIHwgSWdub3JlZF9yZWFkZXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChSZWFkZXIgZm10KVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXQpKVxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10KSlcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9uZXh0X2NoYXIgZm10KVxuXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUeXBlcyAqKVxuXG50eXBlICgnYiwgJ2MpIGFjY19mb3JtYXR0aW5nX2dlbiA9XG4gIHwgQWNjX29wZW5fdGFnIG9mICgnYiwgJ2MpIGFjY1xuICB8IEFjY19vcGVuX2JveCBvZiAoJ2IsICdjKSBhY2NcblxuKCogUmV2ZXJzZWQgbGlzdCBvZiBwcmludGluZyBhdG9tcy4gKilcbigqIFVzZWQgdG8gYWNjdW11bGF0ZSBwcmludGYgYXJndW1lbnRzLiAqKVxuYW5kICgnYiwgJ2MpIGFjYyA9XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IG9mICgnYiwgJ2MpIGFjYyAqIGZvcm1hdHRpbmdfbGl0XG4gICAgICAoKiBTcGVjaWFsIGZtdHRpbmcgKGJveCkgKilcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gb2YgKCdiLCAnYykgYWNjICogKCdiLCAnYykgYWNjX2Zvcm1hdHRpbmdfZ2VuXG4gICAgICAoKiBTcGVjaWFsIGZtdHRpbmcgKGJveCkgKilcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nICAgICAoKiBMaXRlcmFsIHN0cmluZyAqKVxuICB8IEFjY19jaGFyX2xpdGVyYWwgICBvZiAoJ2IsICdjKSBhY2MgKiBjaGFyICAgICAgICgqIExpdGVyYWwgY2hhciAqKVxuICB8IEFjY19kYXRhX3N0cmluZyAgICBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmcgICAgICgqIEdlbmVyYXRlZCBzdHJpbmcgKilcbiAgfCBBY2NfZGF0YV9jaGFyICAgICAgb2YgKCdiLCAnYykgYWNjICogY2hhciAgICAgICAoKiBHZW5lcmF0ZWQgY2hhciAqKVxuICB8IEFjY19kZWxheSAgICAgICAgICBvZiAoJ2IsICdjKSBhY2MgKiAoJ2IgLT4gJ2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBEZWxheWVkIHByaW50aW5nICglYSwgJXQpICopXG4gIHwgQWNjX2ZsdXNoICAgICAgICAgIG9mICgnYiwgJ2MpIGFjYyAgICAgICAgICAgICAgKCogRmx1c2ggKilcbiAgfCBBY2NfaW52YWxpZF9hcmcgICAgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nXG4gICAgICAoKiBSYWlzZSBJbnZhbGlkX2FyZ3VtZW50IG1zZyAqKVxuICB8IEVuZF9vZl9hY2NcblxuKCogTGlzdCBvZiBoZXRlcm9nZW5lb3VzIHZhbHVlcy4gKilcbigqIFVzZWQgdG8gYWNjdW11bGF0ZSBzY2FuZiBjYWxsYmFjayBhcmd1bWVudHMuICopXG50eXBlICgnYSwgJ2IpIGhldGVyX2xpc3QgPVxuICB8IENvbnMgOiAnYyAqICgnYSwgJ2IpIGhldGVyX2xpc3QgLT4gKCdjIC0+ICdhLCAnYikgaGV0ZXJfbGlzdFxuICB8IE5pbCA6ICgnYiwgJ2IpIGhldGVyX2xpc3RcblxuKCogRXhpc3RlbnRpYWwgQmxhY2sgQm94ZXMuICopXG4oKiBVc2VkIHRvIGFic3RyYWN0IHNvbWUgZXhpc3RlbnRpYWwgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nIGFuZCBhbiBmbXR0eS4gKilcbigqIFNlZSB0aGUgdHlwZV9wYWRkaW5nIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkZGluZ19mbXR0eV9lYmIgPSBQYWRkaW5nX2ZtdHR5X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZGRpbmdfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXR0eS4gKilcbigqIFNlZSB0aGUgdHlwZV9wYWRwcmVjIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkcHJlY19mbXR0eV9lYmIgPSBQYWRwcmVjX2ZtdHR5X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICd6KSBwcmVjaXNpb24gKiAoJ3osICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZHByZWNfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcgYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3BhZGRpbmdfZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdlLCAnZikgcGFkZGluZ19mbXRfZWJiID0gUGFkZGluZ19mbXRfRUJCIDpcbiAgICAgKF8sICd4IC0+ICdhKSBwYWRkaW5nICpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2UsICdmKSBwYWRkaW5nX2ZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wcmVjaXNpb25fZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdlLCAnZikgcHJlY2lzaW9uX2ZtdF9lYmIgPSBQcmVjaXNpb25fZm10X0VCQiA6XG4gICAgIChfLCAneCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2UsICdmKSBwcmVjaXNpb25fZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcGFkcHJlY19mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ3AsICdiLCAnYywgJ2UsICdmKSBwYWRwcmVjX2ZtdF9lYmIgPSBQYWRwcmVjX2ZtdF9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAncCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ3AsICdiLCAnYywgJ2UsICdmKSBwYWRwcmVjX2ZtdF9lYmJcblxuKCogQWJzdHJhY3QgdGhlICdhIGFuZCAnZCBwYXJhbWV0ZXJzIG9mIGFuIGZtdC4gKilcbigqIE91dHB1dCB0eXBlIG9mIHRoZSBmb3JtYXQgcGFyc2luZyBmdW5jdGlvbi4gKilcbnR5cGUgKCdiLCAnYywgJ2UsICdmKSBmbXRfZWJiID0gRm10X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCdiLCAnYywgJ2UsICdmKSBmbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhbiBmbXR0eSBhbmQgYW4gZm10LiAqKVxuKCogU2VlIHRoZSB0eXBlX2Zvcm1hdF9nZW4gZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRfZm10dHlfZWJiID0gRm10X2ZtdHR5X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBmbXQgKlxuICAgICAoJ3gsICdiLCAnYywgJ3ksICdlLCAnZikgZm10dHkgLT5cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGFuIGZtdHR5IGFuZCBhbiBmbXQuICopXG4oKiBTZWUgdGhlIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfZm10X2ViYiA9IEZtdHR5X2ZtdF9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgZm10dHkgKlxuICAgICAoJ3gsICdiLCAnYywgJ3ksICdlLCAnZikgZm10X2ZtdHR5X2ViYiAtPlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfZm10X2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgZm10dHkgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIGZvcm1hdCB0eXBlcy4gKilcbnR5cGUgZm10dHlfZWJiID0gRm10dHlfRUJCIDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+IGZtdHR5X2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgcGFkZGluZyB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgcGFkZGluZ3MuICopXG50eXBlIHBhZGRpbmdfZWJiID0gUGFkZGluZ19FQkIgOiAoJ2EsICdiKSBwYWRkaW5nIC0+IHBhZGRpbmdfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBwcmVjaXNpb24gdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIHByZWNpc2lvbnMuICopXG50eXBlIHByZWNpc2lvbl9lYmIgPSBQcmVjaXNpb25fRUJCIDogKCdhLCAnYikgcHJlY2lzaW9uIC0+IHByZWNpc2lvbl9lYmJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBDb25zdGFudHMgKilcblxuKCogRGVmYXVsdCBwcmVjaXNpb24gZm9yIGZsb2F0IHByaW50aW5nLiAqKVxubGV0IGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252ID1cbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRyB8IEZsb2F0X2ggfCBGbG9hdF9IXG4gIHwgRmxvYXRfQ0YgLT4gLTZcbiAgKCogRm9yICVoICVIIGFuZCAlI0YgZm9ybWF0cywgYSBuZWdhdGl2ZSBwcmVjaXNpb24gbWVhbnMgXCJhcyBtYW55IGRpZ2l0cyBhc1xuICAgICBuZWNlc3NhcnlcIi4gIEZvciB0aGUgb3RoZXIgRlAgZm9ybWF0cywgd2UgdGFrZSB0aGUgYWJzb2x1dGUgdmFsdWVcbiAgICAgb2YgdGhlIHByZWNpc2lvbiwgaGVuY2UgNiBkaWdpdHMgYnkgZGVmYXVsdC4gKilcbiAgfCBGbG9hdF9GIC0+IDEyXG4gICgqIERlZmF1bHQgcHJlY2lzaW9uIGZvciBPQ2FtbCBmbG9hdCBwcmludGluZyAoJUYpLiAqKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEV4dGVybmFscyAqKVxuXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQ6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQ6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDMyOiBzdHJpbmcgLT4gaW50MzIgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2ludDMyX2Zvcm1hdFwiXG5leHRlcm5hbCBmb3JtYXRfbmF0aXZlaW50OiBzdHJpbmcgLT4gbmF0aXZlaW50IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9uYXRpdmVpbnRfZm9ybWF0XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQ2NDogc3RyaW5nIC0+IGludDY0IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9pbnQ2NF9mb3JtYXRcIlxuZXh0ZXJuYWwgaGV4c3RyaW5nX29mX2Zsb2F0OiBmbG9hdCAtPiBpbnQgLT4gY2hhciAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0XCJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICgqIFRvb2xzIHRvIHByZXR0eS1wcmludCBmb3JtYXRzICopXG5cbigqIFR5cGUgb2YgZXh0ZW5zaWJsZSBjaGFyYWN0ZXIgYnVmZmVycy4gKilcbnR5cGUgYnVmZmVyID0ge1xuICBtdXRhYmxlIGluZCA6IGludDtcbiAgbXV0YWJsZSBieXRlcyA6IGJ5dGVzO1xufVxuXG4oKiBDcmVhdGUgYSBmcmVzaCBidWZmZXIuICopXG5sZXQgYnVmZmVyX2NyZWF0ZSBpbml0X3NpemUgPSB7IGluZCA9IDA7IGJ5dGVzID0gQnl0ZXMuY3JlYXRlIGluaXRfc2l6ZSB9XG5cbigqIENoZWNrIHNpemUgb2YgdGhlIGJ1ZmZlciBhbmQgZ3JvdyBpdCBpZiBuZWVkZWQuICopXG5sZXQgYnVmZmVyX2NoZWNrX3NpemUgYnVmIG92ZXJoZWFkID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBidWYuYnl0ZXMgaW5cbiAgbGV0IG1pbl9sZW4gPSBidWYuaW5kICsgb3ZlcmhlYWQgaW5cbiAgaWYgbWluX2xlbiA+IGxlbiB0aGVuIChcbiAgICBsZXQgbmV3X2xlbiA9IEludC5tYXggKGxlbiAqIDIpIG1pbl9sZW4gaW5cbiAgICBsZXQgbmV3X3N0ciA9IEJ5dGVzLmNyZWF0ZSBuZXdfbGVuIGluXG4gICAgQnl0ZXMuYmxpdCBidWYuYnl0ZXMgMCBuZXdfc3RyIDAgbGVuO1xuICAgIGJ1Zi5ieXRlcyA8LSBuZXdfc3RyO1xuICApXG5cbigqIEFkZCB0aGUgY2hhcmFjdGVyIGBjJyB0byB0aGUgYnVmZmVyIGBidWYnLiAqKVxubGV0IGJ1ZmZlcl9hZGRfY2hhciBidWYgYyA9XG4gIGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiAxO1xuICBCeXRlcy5zZXQgYnVmLmJ5dGVzIGJ1Zi5pbmQgYztcbiAgYnVmLmluZCA8LSBidWYuaW5kICsgMVxuXG4oKiBBZGQgdGhlIHN0cmluZyBgcycgdG8gdGhlIGJ1ZmZlciBgYnVmJy4gKilcbmxldCBidWZmZXJfYWRkX3N0cmluZyBidWYgcyA9XG4gIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiBzdHJfbGVuO1xuICBTdHJpbmcuYmxpdCBzIDAgYnVmLmJ5dGVzIGJ1Zi5pbmQgc3RyX2xlbjtcbiAgYnVmLmluZCA8LSBidWYuaW5kICsgc3RyX2xlblxuXG4oKiBHZXQgdGhlIGNvbnRlbnQgb2YgdGhlIGJ1ZmZlci4gKilcbmxldCBidWZmZXJfY29udGVudHMgYnVmID1cbiAgQnl0ZXMuc3ViX3N0cmluZyBidWYuYnl0ZXMgMCBidWYuaW5kXG5cbigqKiopXG5cbigqIENvbnZlcnQgYW4gaW50ZWdlciBjb252ZXJzaW9uIHRvIGNoYXIuICopXG5sZXQgY2hhcl9vZl9pY29udiBpY29udiA9IG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfZCB8IEludF9wZCB8IEludF9zZCB8IEludF9DZCAtPiAnZCcgfCBJbnRfaSB8IEludF9waSB8IEludF9zaVxuICB8IEludF9DaSAtPiAnaScgfCBJbnRfeCB8IEludF9DeCAtPiAneCcgfCBJbnRfWCB8IEludF9DWCAtPiAnWCcgfCBJbnRfb1xuICB8IEludF9DbyAtPiAnbycgfCBJbnRfdSB8IEludF9DdSAtPiAndSdcblxuKCogQ29udmVydCBhIGZsb2F0IGNvbnZlcnNpb24gdG8gY2hhci4gKilcbigqIGBjRicgd2lsbCBiZSAnRicgZm9yIGRpc3BsYXlpbmcgZm9ybWF0IGFuZCAnZycgdG8gY2FsbCBsaWJjIHByaW50ZiAqKVxubGV0IGNoYXJfb2ZfZmNvbnYgPyhjRj0nRicpIGZjb252ID0gbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9mIC0+ICdmJyB8IEZsb2F0X2UgLT4gJ2UnXG4gIHwgRmxvYXRfRSAtPiAnRScgfCBGbG9hdF9nIC0+ICdnJ1xuICB8IEZsb2F0X0cgLT4gJ0cnIHwgRmxvYXRfRiAtPiBjRlxuICB8IEZsb2F0X2ggLT4gJ2gnIHwgRmxvYXRfSCAtPiAnSCdcbiAgfCBGbG9hdF9DRiAtPiAnRidcblxuXG4oKiBDb252ZXJ0IGEgc2Nhbm5pbmcgY291bnRlciB0byBjaGFyLiAqKVxubGV0IGNoYXJfb2ZfY291bnRlciBjb3VudGVyID0gbWF0Y2ggY291bnRlciB3aXRoXG4gIHwgTGluZV9jb3VudGVyICAtPiAnbCdcbiAgfCBDaGFyX2NvdW50ZXIgIC0+ICduJ1xuICB8IFRva2VuX2NvdW50ZXIgLT4gJ04nXG5cbigqKiopXG5cbigqIFByaW50IGEgY2hhcl9zZXQgaW4gYSBidWZmZXIgd2l0aCB0aGUgT0NhbWwgZm9ybWF0IGxleGljYWwgY29udmVudGlvbi4gKilcbmxldCBicHJpbnRfY2hhcl9zZXQgYnVmIGNoYXJfc2V0ID1cbiAgbGV0IHJlYyBwcmludF9zdGFydCBzZXQgPVxuICAgIGxldCBpc19hbG9uZSBjID1cbiAgICAgIGxldCBiZWZvcmUsIGFmdGVyID0gQ2hhci4oY2hyIChjb2RlIGMgLSAxKSwgY2hyIChjb2RlIGMgKyAxKSkgaW5cbiAgICAgIGlzX2luX2NoYXJfc2V0IHNldCBjXG4gICAgICAmJiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCBiZWZvcmUgJiYgaXNfaW5fY2hhcl9zZXQgc2V0IGFmdGVyKSBpblxuICAgIGlmIGlzX2Fsb25lICddJyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ10nO1xuICAgIHByaW50X291dCBzZXQgMTtcbiAgICBpZiBpc19hbG9uZSAnLScgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICctJztcbiAgYW5kIHByaW50X291dCBzZXQgaSA9XG4gICAgaWYgaSA8IDI1NiB0aGVuXG4gICAgICBpZiBpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGkpIHRoZW4gcHJpbnRfZmlyc3Qgc2V0IGlcbiAgICAgIGVsc2UgcHJpbnRfb3V0IHNldCAoaSArIDEpXG4gIGFuZCBwcmludF9maXJzdCBzZXQgaSA9XG4gICAgbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgfCAnXFwyNTUnIC0+IHByaW50X2NoYXIgYnVmIDI1NTtcbiAgICB8ICddJyB8ICctJyAtPiBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgfCBfIC0+IHByaW50X3NlY29uZCBzZXQgKGkgKyAxKTtcbiAgYW5kIHByaW50X3NlY29uZCBzZXQgaSA9XG4gICAgaWYgaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBpKSB0aGVuXG4gICAgICBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICAgIHwgJ1xcMjU1JyAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAyNTQ7XG4gICAgICAgIHByaW50X2NoYXIgYnVmIDI1NTtcbiAgICAgIHwgJ10nIHwgJy0nIHdoZW4gbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IChpICsgMSkpKSAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgICBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgICB8IF8gd2hlbiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgKGkgKyAxKSkpIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICAgIHByaW50X2NoYXIgYnVmIGk7XG4gICAgICAgIHByaW50X291dCBzZXQgKGkgKyAyKTtcbiAgICAgIHwgXyAtPlxuICAgICAgICBwcmludF9pbiBzZXQgKGkgLSAxKSAoaSArIDIpO1xuICAgIGVsc2UgKFxuICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgIHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICApXG4gIGFuZCBwcmludF9pbiBzZXQgaSBqID1cbiAgICBpZiBqID0gMjU2IHx8IG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBqKSkgdGhlbiAoXG4gICAgICBwcmludF9jaGFyIGJ1ZiBpO1xuICAgICAgcHJpbnRfY2hhciBidWYgKGludF9vZl9jaGFyICctJyk7XG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaiAtIDEpO1xuICAgICAgaWYgaiA8IDI1NiB0aGVuIHByaW50X291dCBzZXQgKGogKyAxKTtcbiAgICApIGVsc2VcbiAgICAgIHByaW50X2luIHNldCBpIChqICsgMSk7XG4gIGFuZCBwcmludF9jaGFyIGJ1ZiBpID0gbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgfCAnJScgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICAgIHwgJ0AnIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICdAJztcbiAgICB8IGMgICAtPiBidWZmZXJfYWRkX2NoYXIgYnVmIGM7XG4gIGluXG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ1snO1xuICBwcmludF9zdGFydCAoXG4gICAgaWYgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgJ1xcMDAwJ1xuICAgIHRoZW4gKCBidWZmZXJfYWRkX2NoYXIgYnVmICdeJzsgcmV2X2NoYXJfc2V0IGNoYXJfc2V0IClcbiAgICBlbHNlIGNoYXJfc2V0XG4gICk7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ10nXG5cbigqKiopXG5cbigqIFByaW50IGEgcGFkdHkgaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wYWR0eSBidWYgcGFkdHkgPSBtYXRjaCBwYWR0eSB3aXRoXG4gIHwgTGVmdCAgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLSdcbiAgfCBSaWdodCAtPiAoKVxuICB8IFplcm9zIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJzAnXG5cbigqIFByaW50IHRoZSAnXycgb2YgYW4gaWdub3JlZCBmbGFnIGlmIG5lZWRlZC4gKilcbmxldCBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZyA9XG4gIGlmIGlnbl9mbGFnIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXydcblxuKCoqKilcblxubGV0IGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0ID0gbWF0Y2ggcGFkX29wdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgd2lkdGggLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIHdpZHRoKVxuXG4oKioqKVxuXG4oKiBQcmludCBwYWRkaW5nIGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcGFkZGluZyA6IHR5cGUgYSBiIC4gYnVmZmVyIC0+IChhLCBiKSBwYWRkaW5nIC0+IHVuaXQgPVxuZnVuIGJ1ZiBwYWQgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nIC0+ICgpXG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCBuKSAtPlxuICAgIGJwcmludF9wYWR0eSBidWYgcGFkdHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIG4pO1xuICB8IEFyZ19wYWRkaW5nIHBhZHR5IC0+XG4gICAgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eTtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcqJ1xuXG4oKiBQcmludCBwcmVjaXNpb24gaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wcmVjaXNpb24gOiB0eXBlIGEgYiAuIGJ1ZmZlciAtPiAoYSwgYikgcHJlY2lzaW9uIC0+IHVuaXQgPVxuICBmdW4gYnVmIHByZWMgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gIHwgTm9fcHJlY2lzaW9uIC0+ICgpXG4gIHwgTGl0X3ByZWNpc2lvbiBuIC0+XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLic7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIG4pO1xuICB8IEFyZ19wcmVjaXNpb24gLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIuKlwiXG5cbigqKiopXG5cbigqIFByaW50IHRoZSBvcHRpb25hbCAnKycsICcgJyBvciAnIycgYXNzb2NpYXRlZCB0byBhbiBpbnQgY29udmVyc2lvbi4gKilcbmxldCBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnYgPSBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X3BkIHwgSW50X3BpIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJysnXG4gIHwgSW50X3NkIHwgSW50X3NpIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyAnXG4gIHwgSW50X0N4IHwgSW50X0NYIHwgSW50X0NvIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcjJ1xuICB8IEludF9kIHwgSW50X2kgfCBJbnRfeCB8IEludF9YIHwgSW50X28gfCBJbnRfdSAtPiAoKVxuXG4oKiBQcmludCBhbiBjb21wbGV0ZSBpbnQgZm9ybWF0IGluIGEgYnVmZmVyIChleDogXCIlMy4qZFwiKS4gKilcbmxldCBicHJpbnRfaW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9pY29udiBpY29udilcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBpbnQzMiwgbmF0aXZlaW50IG9yIGludDY0IGZvcm1hdCBpbiBhIGJ1ZmZlci4gKilcbmxldCBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIGM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpXG5cbigqKiopXG5cbigqIFByaW50IHRoZSBvcHRpb25hbCAnKycsICcgJyBhbmQvb3IgJyMnIGFzc29jaWF0ZWQgdG8gYSBmbG9hdCBjb252ZXJzaW9uLiAqKVxubGV0IGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udiA9XG4gIGJlZ2luIG1hdGNoIGZzdCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZmxhZ19wIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJysnXG4gIHwgRmxvYXRfZmxhZ19zIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyAnXG4gIHwgRmxvYXRfZmxhZ18gLT4gKCkgZW5kO1xuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X0NGIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyMnXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0dcbiAgfCBGbG9hdF9GIHwgRmxvYXRfaCB8IEZsb2F0X0ggLT4gKClcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmbG9hdCBmb3JtYXQgaW4gYSBidWZmZXIgKGV4OiBcIiUrKi4zZlwiKS4gKilcbmxldCBicHJpbnRfZmxvYXRfZm10IGJ1ZiBpZ25fZmxhZyBmY29udiBwYWQgcHJlYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2Zjb252IGZjb252KVxuXG4oKiBDb21wdXRlIHRoZSBsaXRlcmFsIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIEZvcm1hdHRpbmdfbGl0LiAqKVxuKCogVXNlZCBieSBQcmludGYgYW5kIFNjYW5mIHdoZXJlIGZvcm1hdHRpbmcgaXMgbm90IGludGVycHJldGVkLiAqKVxubGV0IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmb3JtYXR0aW5nX2xpdCA9IG1hdGNoIGZvcm1hdHRpbmdfbGl0IHdpdGhcbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAtPiBcIkBdXCJcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAtPiBcIkB9XCJcbiAgfCBCcmVhayAoc3RyLCBfLCBfKSAgICAtPiBzdHJcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAtPiBcIkA/XCJcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAtPiBcIkBcXG5cIlxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgIC0+IFwiQC5cIlxuICB8IE1hZ2ljX3NpemUgKHN0ciwgXykgIC0+IHN0clxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgIC0+IFwiQEBcIlxuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgIC0+IFwiQCVcIlxuICB8IFNjYW5faW5kaWMgYyAtPiBcIkBcIiBeIChTdHJpbmcubWFrZSAxIGMpXG5cbigqKiopXG5cbigqIFByaW50IGEgbGl0ZXJhbCBjaGFyIGluIGEgYnVmZmVyLCBlc2NhcGUgJyUnIGJ5IFwiJSVcIi4gKilcbmxldCBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBjaHIgPSBtYXRjaCBjaHIgd2l0aFxuICB8ICclJyAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlJVwiXG4gIHwgXyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmIGNoclxuXG4oKiBQcmludCBhIGxpdGVyYWwgc3RyaW5nIGluIGEgYnVmZmVyLCBlc2NhcGUgYWxsICclJyBieSBcIiUlXCIuICopXG5sZXQgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBzdHIgPVxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdHIgLSAxIGRvXG4gICAgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgc3RyLltpXVxuICBkb25lXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCBwcmV0dHktcHJpbnRpbmcgKilcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmb3JtYXQgdHlwZSAoYW4gZm10dHkpIGluIGEgYnVmZmVyLiAqKVxubGV0IHJlYyBicHJpbnRfZm10dHkgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIC5cbiAgICBidWZmZXIgLT4gKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGksIGosIGssIGwpIGZtdHR5X3JlbCAtPiB1bml0ID1cbmZ1biBidWYgZm10dHkgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVjXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXNcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlaVwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludDMyX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVsaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJW5pXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlTGlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEZsb2F0X3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVmXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQm9vbF90eSByZXN0ICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJUJcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBBbHBoYV90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlYVwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFRoZXRhX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV0XCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQW55X3R5IHJlc3QgICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJT9cIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBSZWFkZXJfdHkgcmVzdCAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlclwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVfclwiO1xuICAgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IEZvcm1hdF9hcmdfdHkgKHN1Yl9mbXR0eSwgcmVzdCkgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIle1wiOyBicHJpbnRfZm10dHkgYnVmIHN1Yl9mbXR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlfVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgRm9ybWF0X3N1YnN0X3R5IChzdWJfZm10dHksIF8sIHJlc3QpIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJShcIjsgYnByaW50X2ZtdHR5IGJ1ZiBzdWJfZm10dHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgRW5kX29mX2ZtdHR5IC0+ICgpXG5cbigqKiopXG5cbmxldCByZWMgaW50X29mX2N1c3RvbV9hcml0eSA6IHR5cGUgYSBiIGMgLlxuICAoYSwgYiwgYykgY3VzdG9tX2FyaXR5IC0+IGludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQ3VzdG9tX3plcm8gLT4gMFxuICB8IEN1c3RvbV9zdWNjIHggLT4gMSArIGludF9vZl9jdXN0b21fYXJpdHkgeFxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZvcm1hdCBpbiBhIGJ1ZmZlci4gKilcbmxldCBicHJpbnRfZm10IGJ1ZiBmbXQgPVxuICBsZXQgcmVjIGZtdGl0ZXIgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYm9vbCAtPiB1bml0ID1cbiAgZnVuIGZtdCBpZ25fZmxhZyAtPiBtYXRjaCBmbXQgd2l0aFxuICAgIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdzJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdTJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2ludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ2wnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICduJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICdMJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2Zsb2F0X2ZtdCBidWYgaWduX2ZsYWcgZmNvbnYgcGFkIHByZWM7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IENoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnYyc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdDJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQic7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBBbHBoYSByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdhJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgVGhldGEgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAndCc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpIC0+XG4gICAgICBmb3IgX2kgPSAxIHRvIGludF9vZl9jdXN0b21fYXJpdHkgYXJpdHkgZG9cbiAgICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICc/JztcbiAgICAgIGRvbmU7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBSZWFkZXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAncic7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEZsdXNoIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUhXCI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIHN0cjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcbiAgICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgICAgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgY2hyO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0OyBidWZmZXJfYWRkX2NoYXIgYnVmICd7JztcbiAgICAgIGJwcmludF9mbXR0eSBidWYgZm10dHk7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICd9JztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKCc7XG4gICAgICBicHJpbnRfZm10dHkgYnVmIGZtdHR5OyBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKSc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgd2lkdGhfb3B0OyBicHJpbnRfY2hhcl9zZXQgYnVmIGNoYXJfc2V0O1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfY291bnRlciBjb3VudGVyKTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgXCIwY1wiOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICAgIGxldCBQYXJhbV9mb3JtYXRfRUJCIGZtdCcgPSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3QgaW5cbiAgICAgIGZtdGl0ZXIgZm10JyB0cnVlO1xuXG4gICAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgKHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0KTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZm10aW5nX2dlbiB3aXRoXG4gICAgICB8IE9wZW5fdGFnIChGb3JtYXQgKF8sIHN0cikpIC0+XG4gICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIkB7XCI7IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzdHJcbiAgICAgIHwgT3Blbl9ib3ggKEZvcm1hdCAoXywgc3RyKSkgLT5cbiAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiQFtcIjsgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHN0clxuICAgICAgZW5kO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBFbmRfb2ZfZm9ybWF0IC0+ICgpXG5cbiAgaW4gZm10aXRlciBmbXQgZmFsc2VcblxuKCoqKilcblxuKCogQ29udmVydCBhIGZvcm1hdCB0byBzdHJpbmcuICopXG5sZXQgc3RyaW5nX29mX2ZtdCBmbXQgPVxuICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICBicHJpbnRfZm10IGJ1ZiBmbXQ7XG4gIGJ1ZmZlcl9jb250ZW50cyBidWZcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVHlwZSBleHRyYWN0aW9uICopXG5cbnR5cGUgKF8sIF8pIGVxID0gUmVmbCA6ICgnYSwgJ2EpIGVxXG5cbigqIEludmFyaWFudDogdGhpcyBmdW5jdGlvbiBpcyB0aGUgaWRlbnRpdHkgb24gdmFsdWVzLlxuXG4gICBJbiBwYXJ0aWN1bGFyLCBpZiAodHkxLCB0eTIpIGhhdmUgZXF1YWwgdmFsdWVzLCB0aGVuXG4gICAodHJhbnMgKHN5bW0gdHkxKSB0eTIpIHJlc3BlY3RzIHRoZSAndHJhbnMnIHByZWNvbmRpdGlvbi4gKilcbmxldCByZWMgc3ltbSA6IHR5cGUgYTEgYjEgYzEgZDEgZTEgZjEgYTIgYjIgYzIgZDIgZTIgZjIgLlxuICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4tPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMixcbiAgICBhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXR0eV9yZWxcbj0gZnVuY3Rpb25cbiAgfCBDaGFyX3R5IHJlc3QgLT4gQ2hhcl90eSAoc3ltbSByZXN0KVxuICB8IEludF90eSByZXN0IC0+IEludF90eSAoc3ltbSByZXN0KVxuICB8IEludDMyX3R5IHJlc3QgLT4gSW50MzJfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnQ2NF90eSByZXN0IC0+IEludDY0X3R5IChzeW1tIHJlc3QpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT4gTmF0aXZlaW50X3R5IChzeW1tIHJlc3QpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPiBGbG9hdF90eSAoc3ltbSByZXN0KVxuICB8IEJvb2xfdHkgcmVzdCAtPiBCb29sX3R5IChzeW1tIHJlc3QpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT4gU3RyaW5nX3R5IChzeW1tIHJlc3QpXG4gIHwgVGhldGFfdHkgcmVzdCAtPiBUaGV0YV90eSAoc3ltbSByZXN0KVxuICB8IEFscGhhX3R5IHJlc3QgLT4gQWxwaGFfdHkgKHN5bW0gcmVzdClcbiAgfCBBbnlfdHkgcmVzdCAtPiBBbnlfdHkgKHN5bW0gcmVzdClcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPiBSZWFkZXJfdHkgKHN5bW0gcmVzdClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+IElnbm9yZWRfcmVhZGVyX3R5IChzeW1tIHJlc3QpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIHN5bW0gcmVzdClcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkyLCB0eTEsIHN5bW0gcmVzdClcbiAgfCBFbmRfb2ZfZm10dHkgLT4gRW5kX29mX2ZtdHR5XG5cbmxldCByZWMgZm10dHlfcmVsX2RldCA6IHR5cGUgYTEgYiBjIGQxIGUxIGYxIGEyIGQyIGUyIGYyIC5cbiAgKGExLCBiLCBjLCBkMSwgZTEsIGYxLFxuICAgYTIsIGIsIGMsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbCAtPlxuICAgICgoZjEsIGYyKSBlcSAtPiAoYTEsIGEyKSBlcSlcbiAgKiAoKGExLCBhMikgZXEgLT4gKGYxLCBmMikgZXEpXG4gICogKChlMSwgZTIpIGVxIC0+IChkMSwgZDIpIGVxKVxuICAqICgoZDEsIGQyKSBlcSAtPiAoZTEsIGUyKSBlcSlcbj0gZnVuY3Rpb25cbiAgfCBFbmRfb2ZfZm10dHkgLT5cbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbClcbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG4gIHwgRm9ybWF0X2FyZ190eSAoX3R5LCByZXN0KSAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgbGV0IGFnLCBnYSwgZGosIGpkID0gZm10dHlfcmVsX2RldCB0eSBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gbGV0IFJlZmwgPSBhZyBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGdhIFJlZmwgaW4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gbGV0IFJlZmwgPSBkaiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGpkIFJlZmwgaW4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG5cbigqIFByZWNvbmRpdGlvbjogd2UgYXNzdW1lIHRoYXQgdGhlIHR3byBmbXR0eV9yZWwgYXJndW1lbnRzIGhhdmUgZXF1YWxcbiAgIHZhbHVlcyAoYXQgcG9zc2libHkgZGlzdGluY3QgdHlwZXMpOyB0aGlzIGludmFyaWFudCBjb21lcyBmcm9tIHRoZSB3YXlcbiAgIGZtdHR5X3JlbCB3aXRuZXNzZXMgYXJlIHByb2R1Y2VkIGJ5IHRoZSB0eXBlLWNoZWNrZXJcblxuICAgVGhlIGNvZGUgYmVsb3cgdXNlcyAoYXNzZXJ0IGZhbHNlKSB3aGVuIHRoaXMgYXNzdW1wdGlvbiBpcyBicm9rZW4uIFRoZVxuICAgY29kZSBwYXR0ZXJuIGlzIHRoZSBmb2xsb3dpbmc6XG5cbiAgICAgfCBGb28geCwgRm9vIHkgLT5cbiAgICAgICAoKiBjYXNlIHdoZXJlIGluZGVlZCBib3RoIHZhbHVlc1xuICAgICAgICAgIHN0YXJ0IHdpdGggY29uc3RydWN0b3IgRm9vICopXG4gICAgIHwgRm9vIF8sIF9cbiAgICAgfCBfLCBGb28gXyAtPlxuICAgICAgICgqIGRpZmZlcmVudCBoZWFkIGNvbnN0cnVjdG9yczogYnJva2VuIHByZWNvbmRpdGlvbiAqKVxuICAgICAgIGFzc2VydCBmYWxzZVxuKilcbmFuZCB0cmFucyA6IHR5cGVcbiAgYTEgYjEgYzEgZDEgZTEgZjFcbiAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgYTMgYjMgYzMgZDMgZTMgZjNcbi5cbiAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIsXG4gICAgYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHlfcmVsXG4tPiAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eV9yZWxcbj0gZnVuIHR5MSB0eTIgLT4gbWF0Y2ggdHkxLCB0eTIgd2l0aFxuICB8IENoYXJfdHkgcmVzdDEsIENoYXJfdHkgcmVzdDIgLT4gQ2hhcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgU3RyaW5nX3R5IHJlc3QxLCBTdHJpbmdfdHkgcmVzdDIgLT4gU3RyaW5nX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBCb29sX3R5IHJlc3QxLCBCb29sX3R5IHJlc3QyIC0+IEJvb2xfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludF90eSByZXN0MSwgSW50X3R5IHJlc3QyIC0+IEludF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50MzJfdHkgcmVzdDEsIEludDMyX3R5IHJlc3QyIC0+IEludDMyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnQ2NF90eSByZXN0MSwgSW50NjRfdHkgcmVzdDIgLT4gSW50NjRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IE5hdGl2ZWludF90eSByZXN0MSwgTmF0aXZlaW50X3R5IHJlc3QyIC0+IE5hdGl2ZWludF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRmxvYXRfdHkgcmVzdDEsIEZsb2F0X3R5IHJlc3QyIC0+IEZsb2F0X3R5ICh0cmFucyByZXN0MSByZXN0MilcblxuICB8IEFscGhhX3R5IHJlc3QxLCBBbHBoYV90eSByZXN0MiAtPiBBbHBoYV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQWxwaGFfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBBbHBoYV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgVGhldGFfdHkgcmVzdDEsIFRoZXRhX3R5IHJlc3QyIC0+IFRoZXRhX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBUaGV0YV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIFRoZXRhX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBBbnlfdHkgcmVzdDEsIEFueV90eSByZXN0MiAtPiBBbnlfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEFueV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEFueV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgUmVhZGVyX3R5IHJlc3QxLCBSZWFkZXJfdHkgcmVzdDIgLT4gUmVhZGVyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBSZWFkZXJfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBSZWFkZXJfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QxLCBJZ25vcmVkX3JlYWRlcl90eSByZXN0MiAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIElnbm9yZWRfcmVhZGVyX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBGb3JtYXRfYXJnX3R5ICh0eTEsIHJlc3QxKSwgRm9ybWF0X2FyZ190eSAodHkyLCByZXN0MikgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0cmFucyB0eTEgdHkyLCB0cmFucyByZXN0MSByZXN0MilcbiAgfCBGb3JtYXRfYXJnX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRm9ybWF0X2FyZ190eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTExLCB0eTEyLCByZXN0MSksXG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTIxLCB0eTIyLCByZXN0MikgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEyKSB0eTIxIGluXG4gICAgbGV0IF8sIGYyLCBfLCBmNCA9IGZtdHR5X3JlbF9kZXQgdHkgaW5cbiAgICBsZXQgUmVmbCA9IGYyIFJlZmwgaW5cbiAgICBsZXQgUmVmbCA9IGY0IFJlZmwgaW5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MTEsIHR5MjIsIHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZvcm1hdF9zdWJzdF90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEZvcm1hdF9zdWJzdF90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRW5kX29mX2ZtdHR5LCBFbmRfb2ZfZm10dHkgLT4gRW5kX29mX2ZtdHR5XG4gIHwgRW5kX29mX2ZtdHR5LCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEVuZF9vZl9mbXR0eSAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHJlYyBmbXR0eV9vZl9mb3JtYXR0aW5nX2dlbiA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm9ybWF0dGluZ19nZW4gLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGZvcm1hdHRpbmdfZ2VuIC0+IG1hdGNoIGZvcm1hdHRpbmdfZ2VuIHdpdGhcbiAgfCBPcGVuX3RhZyAoRm9ybWF0IChmbXQsIF8pKSAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgT3Blbl9ib3ggKEZvcm1hdCAoZm10LCBfKSkgLT4gZm10dHlfb2ZfZm10IGZtdFxuXG4oKiBFeHRyYWN0IHRoZSB0eXBlIHJlcHJlc2VudGF0aW9uIChhbiBmbXR0eSkgb2YgYSBmb3JtYXQuICopXG5hbmQgZm10dHlfb2ZfZm10IDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBmbXR0eSAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKFN0cmluZ190eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKFN0cmluZ190eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuXG4gIHwgSW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBJbnQzMiAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnQzMl90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBOYXRpdmVpbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoTmF0aXZlaW50X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEludDY0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludDY0X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEZsb2F0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEZsb2F0X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuXG4gIHwgQ2hhciByZXN0ICAgICAgICAgICAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgICAgICAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQm9vbCAocGFkLCByZXN0KSAgICAgICAgICAgLT5cbiAgICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChCb29sX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG4gIHwgQWxwaGEgcmVzdCAgICAgICAgICAgICAgICAgLT4gQWxwaGFfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFRoZXRhIHJlc3QgICAgICAgICAgICAgICAgIC0+IFRoZXRhX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAgICAtPiBmbXR0eV9vZl9jdXN0b20gYXJpdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFJlYWRlciByZXN0ICAgICAgICAgICAgICAgIC0+IFJlYWRlcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBGb3JtYXRfYXJnIChfLCB0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChfLCB0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5LCB0eSwgZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBGbHVzaCByZXN0ICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IFN0cmluZ19saXRlcmFsIChfLCByZXN0KSAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAgICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+IFN0cmluZ190eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT4gSW50X3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBTY2FuX25leHRfY2hhciByZXN0ICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpICAtPiBmbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdFxuICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpICAtPlxuICAgIGNvbmNhdF9mbXR0eSAoZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4gZm10aW5nX2dlbikgKGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRW5kX29mX2Zvcm1hdCAgICAgICAgICAgICAgLT4gRW5kX29mX2ZtdHR5XG5cbmFuZCBmbXR0eV9vZl9jdXN0b20gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gIChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICh5LCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gYXJpdHkgZm10dHkgLT4gbWF0Y2ggYXJpdHkgd2l0aFxuICB8IEN1c3RvbV96ZXJvIC0+IGZtdHR5XG4gIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT4gQW55X3R5IChmbXR0eV9vZl9jdXN0b20gYXJpdHkgZm10dHkpXG5cbigqIEV4dHJhY3QgdGhlIGZtdHR5IG9mIGFuIGlnbm9yZWQgcGFyYW1ldGVyIGZvbGxvd2VkIGJ5IHRoZSByZXN0IG9mXG4gICB0aGUgZm9ybWF0LiAqKVxuYW5kIGZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfbmF0aXZlaW50IChfLCBfKSAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gY29uY2F0X2ZtdHR5IGZtdHR5IChmbXR0eV9vZl9mbXQgZm10KVxuICB8IElnbm9yZWRfcmVhZGVyICAgICAgICAgICAgICAgICAgLT4gSWdub3JlZF9yZWFkZXJfdHkgKGZtdHR5X29mX2ZtdCBmbXQpXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG5cbigqIEFkZCBhbiBJbnRfdHkgbm9kZSBpZiBwYWRkaW5nIGlzIHRha2VuIGFzIGFuIGV4dHJhIGFyZ3VtZW50IChleDogXCIlKnNcIikuICopXG5hbmQgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSA6IHR5cGUgeCBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIGEpIHBhZGRpbmcgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+ICh4LCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG4gIGZ1biBwYWQgZm10dHkgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgICAgLT4gZm10dHlcbiAgICB8IExpdF9wYWRkaW5nIF8gLT4gZm10dHlcbiAgICB8IEFyZ19wYWRkaW5nIF8gLT4gSW50X3R5IGZtdHR5XG5cbigqIEFkZCBhbiBJbnRfdHkgbm9kZSBpZiBwcmVjaXNpb24gaXMgdGFrZW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUuKmZcIikuKilcbmFuZCBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgOiB0eXBlIHggYSBiIGMgZCBlIGYgLlxuICAgICh4LCBhKSBwcmVjaXNpb24gLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+ICh4LCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG4gIGZ1biBwcmVjIGZtdHR5IC0+IG1hdGNoIHByZWMgd2l0aFxuICAgIHwgTm9fcHJlY2lzaW9uICAgIC0+IGZtdHR5XG4gICAgfCBMaXRfcHJlY2lzaW9uIF8gLT4gZm10dHlcbiAgICB8IEFyZ19wcmVjaXNpb24gICAtPiBJbnRfdHkgZm10dHlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgdHlwaW5nICopXG5cbigqIEV4Y2VwdGlvbiByYWlzZWQgd2hlbiBhIGZvcm1hdCBkb2VzIG5vdCBtYXRjaCBhIGdpdmVuIGZvcm1hdCB0eXBlLiAqKVxuZXhjZXB0aW9uIFR5cGVfbWlzbWF0Y2hcblxuKCogVHlwZSBhIHBhZGRpbmcuICopXG4oKiBUYWtlIGFuIEludF90eSBmcm9tIHRoZSBmbXR0eSBpZiB0aGUgaW50ZWdlciBzaG91bGQgYmUga2VwdCBhcyBhcmd1bWVudC4gKilcbigqIFJhaXNlIFR5cGVfbWlzbWF0Y2ggaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHR5cGVfcGFkZGluZyA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IC5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAgIChhLCBiLCBjLCBkLCBlLCBmKSBwYWRkaW5nX2ZtdHR5X2ViYiA9XG5mdW4gcGFkIGZtdHR5IC0+IG1hdGNoIHBhZCwgZm10dHkgd2l0aFxuICB8IE5vX3BhZGRpbmcsIF8gLT4gUGFkZGluZ19mbXR0eV9FQkIgKE5vX3BhZGRpbmcsIGZtdHR5KVxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIF8gLT4gUGFkZGluZ19mbXR0eV9FQkIgKExpdF9wYWRkaW5nIChwYWR0eSx3KSxmbXR0eSlcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgSW50X3R5IHJlc3QgLT4gUGFkZGluZ19mbXR0eV9FQkIgKEFyZ19wYWRkaW5nIHBhZHR5LHJlc3QpXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIENvbnZlcnQgYSAodXBhZGRpbmcsIHVwcmVjaXNpb24pIHRvIGEgKHBhZGRpbmcsIHByZWNpc2lvbikuICopXG4oKiBUYWtlIG9uZSBvciB0d28gSW50X3R5IGZyb20gdGhlIGZtdHR5IGlmIG5lZWRlZC4gKilcbigqIFJhaXNlIFR5cGVfbWlzbWF0Y2ggaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHR5cGVfcGFkcHJlYyA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IHogLlxuICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeikgcHJlY2lzaW9uIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBwYWRwcmVjX2ZtdHR5X2ViYiA9XG5mdW4gcGFkIHByZWMgZm10dHkgLT4gbWF0Y2ggcHJlYywgdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gIHwgTm9fcHJlY2lzaW9uLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIE5vX3ByZWNpc2lvbiwgcmVzdClcbiAgfCBMaXRfcHJlY2lzaW9uIHAsIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgTGl0X3ByZWNpc2lvbiBwLCByZXN0KVxuICB8IEFyZ19wcmVjaXNpb24sIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIEludF90eSByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIEFyZ19wcmVjaXNpb24sIHJlc3QpXG4gIHwgXywgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogVHlwZSBhIGZvcm1hdCBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG4oKiBJZiB0eXBpbmcgc3VjY2VlZCwgZ2VuZXJhdGUgYSBjb3B5IG9mIHRoZSBmb3JtYXQgd2l0aCB0aGUgc2FtZVxuICAgIHR5cGUgcGFyYW1ldGVycyBhcyB0aGUgZm10dHkuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCByZWMgdHlwZV9mb3JtYXQgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjIgIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdFxuPSBmdW4gZm10IGZtdHR5IC0+IG1hdGNoIHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkgd2l0aFxuICB8IEZtdF9mbXR0eV9FQkIgKGZtdCcsIEVuZF9vZl9mbXR0eSkgLT4gZm10J1xuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG5hbmQgdHlwZV9mb3JtYXRfZ2VuIDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRfZm10dHlfZWJiXG49IGZ1biBmbXQgZm10dHkgLT4gbWF0Y2ggZm10LCBmbXR0eSB3aXRoXG4gIHwgQ2hhciBmbXRfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKENoYXIgZm10JywgZm10dHknKVxuICB8IENhbWxfY2hhciBmbXRfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKENhbWxfY2hhciBmbXQnLCBmbXR0eScpXG4gIHwgU3RyaW5nIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBTdHJpbmdfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKFN0cmluZyAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBTdHJpbmdfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKENhbWxfc3RyaW5nIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50MzJfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludDMyIChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgTmF0aXZlaW50X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludDY0X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgRmxvYXRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEJvb2wgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIEJvb2xfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEJvb2wgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBGbHVzaCBmbXRfcmVzdCwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGbHVzaCBmbXQnLCBmbXR0eScpXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU3RyaW5nX2xpdGVyYWwgKHN0ciwgZm10JyksIGZtdHR5JylcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKENoYXJfbGl0ZXJhbCAoY2hyLCBmbXQnKSwgZm10dHknKVxuXG4gIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5LCBmbXRfcmVzdCksXG4gICAgRm9ybWF0X2FyZ190eSAoc3ViX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgc3ViX2ZtdHR5IDw+IEZtdHR5X0VCQiBzdWJfZm10dHknIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5JywgZm10JyksIGZtdHR5JylcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAoc3ViX2ZtdHR5MSwgX3N1Yl9mbXR0eTIsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWJfZm10dHkxKSB0aGVuXG4gICAgICByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID1cbiAgICAgIHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCAoZXJhc2VfcmVsIGZtdHR5X3Jlc3QpXG4gICAgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eTEsIGZtdCcpLCBmbXR0eScpXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBBbHBoYSBmbXRfcmVzdCwgQWxwaGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChBbHBoYSBmbXQnLCBmbXR0eScpXG4gIHwgVGhldGEgZm10X3Jlc3QsIFRoZXRhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoVGhldGEgZm10JywgZm10dHknKVxuXG4gICgqIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXQnKSwgZm10dHknKVxuICB8IEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nX2dlbiwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgdHlwZV9mb3JtYXR0aW5nX2dlbiBmb3JtYXR0aW5nX2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0XG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IFJlYWRlciBmbXRfcmVzdCwgUmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoUmVhZGVyIGZtdCcsIGZtdHR5JylcbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXRfcmVzdCksIFN0cmluZ190eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdCcpLCBmbXR0eScpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpLCBJbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXQnKSwgZm10dHknKVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICB0eXBlX2lnbm9yZWRfcGFyYW0gaWduIHJlc3QgZm10dHlfcmVzdFxuXG4gIHwgRW5kX29mX2Zvcm1hdCwgZm10dHlfcmVzdCAtPiBGbXRfZm10dHlfRUJCIChFbmRfb2ZfZm9ybWF0LCBmbXR0eV9yZXN0KVxuXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbmFuZCB0eXBlX2Zvcm1hdHRpbmdfZ2VuIDogdHlwZSBhMSBhMyBiMSBiMyBjMSBjMyBkMSBkMyBlMSBlMiBlMyBmMSBmMiBmMyAuXG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZvcm1hdHRpbmdfZ2VuIC0+XG4gICAgKGYxLCBiMSwgYzEsIGUxLCBlMiwgZjIpIGZtdCAtPlxuICAgIChhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eSAtPlxuICAgIChhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXRfZm10dHlfZWJiID1cbmZ1biBmb3JtYXR0aW5nX2dlbiBmbXQwIGZtdHR5MCAtPiBtYXRjaCBmb3JtYXR0aW5nX2dlbiB3aXRoXG4gIHwgT3Blbl90YWcgKEZvcm1hdCAoZm10MSwgc3RyKSkgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MiwgZm10dHkyKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQxIGZtdHR5MCBpblxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQzLCBmbXR0eTMpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDAgZm10dHkyIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdDIsIHN0cikpLCBmbXQzKSwgZm10dHkzKVxuICB8IE9wZW5fYm94IChGb3JtYXQgKGZtdDEsIHN0cikpIC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDIsIGZtdHR5MikgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MSBmbXR0eTAgaW5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MywgZm10dHkzKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQwIGZtdHR5MiBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQyLCBzdHIpKSwgZm10MyksIGZtdHR5MylcblxuKCogVHlwZSBhbiBJZ25vcmVkX3BhcmFtIG5vZGUgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuYW5kIHR5cGVfaWdub3JlZF9wYXJhbSA6IHR5cGUgcCBxIHggeSB6IHQgdSB2IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgeSwgeiwgdCwgcSwgcCkgaWdub3JlZCAtPlxuICAgIChwLCB5LCB6LCBxLCB1LCB2KSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10X2ZtdHR5X2ViYiA9XG5mdW4gaWduIGZtdCBmbXR0eSAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfaW50IF8gICAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfaW50MzIgXyAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfbmF0aXZlaW50IF8gICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfaW50NjQgXyAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZmxvYXQgXyAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5KSAtPlxuICAgIHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgKElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5KSkgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eSkgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5JywgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSkgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5IGZtdCBmbXR0eSBpblxuICAgIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHknKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQnKSxcbiAgICAgICAgICAgICAgICAgICBmbXR0eScpXG4gIHwgSWdub3JlZF9yZWFkZXIgLT4gKFxuICAgIG1hdGNoIGZtdHR5IHdpdGhcbiAgICB8IElnbm9yZWRfcmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3JlYWRlciwgZm10JyksIGZtdHR5JylcbiAgICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG5cbmFuZCB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIDogdHlwZSBhMSBhMiBiMSBiMiBjMSBjMiBkMSBkMiBlMSBlMiBmMSBmMiAuXG4gICAgKGEyLCBiMiwgYzIsIGQyLCBkMiwgYTIpIGlnbm9yZWQgLT5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10IC0+XG4gICAgKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5IC0+XG4gICAgKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdF9mbXR0eV9lYmJcbj0gZnVuIGlnbiBmbXQgZm10dHkgLT5cbiAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5IGluXG4gIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbiwgZm10JyksIGZtdHR5JylcblxuKCogVHlwaW5nIG9mIHRoZSBjb21wbGV4IGNhc2U6IFwiJV8oLi4uJSlcIi4gKilcbmFuZCB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiA6IHR5cGUgdyB4IHkgeiBwIHMgdCB1IGEgYiBjIGQgZSBmIC5cbiAgICAodywgeCwgeSwgeiwgcywgcCkgZm10dHkgLT5cbiAgICAocCwgeCwgeSwgcywgdCwgdSkgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eV9mbXRfZWJiID1cbmZ1biBzdWJfZm10dHkgZm10IGZtdHR5IC0+IG1hdGNoIHN1Yl9mbXR0eSwgZm10dHkgd2l0aFxuICB8IENoYXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQ2hhcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgU3RyaW5nX3R5IHN1Yl9mbXR0eV9yZXN0LCBTdHJpbmdfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoU3RyaW5nX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludDMyX3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnQzMl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnQzMl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgTmF0aXZlaW50X3R5IHN1Yl9mbXR0eV9yZXN0LCBOYXRpdmVpbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoTmF0aXZlaW50X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnQ2NF90eSBzdWJfZm10dHlfcmVzdCwgSW50NjRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50NjRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEZsb2F0X3R5IHN1Yl9mbXR0eV9yZXN0LCBGbG9hdF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGbG9hdF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgQm9vbF90eSBzdWJfZm10dHlfcmVzdCwgQm9vbF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChCb29sX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBBbHBoYV90eSBzdWJfZm10dHlfcmVzdCwgQWxwaGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQWxwaGFfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFRoZXRhX3R5IHN1Yl9mbXR0eV9yZXN0LCBUaGV0YV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChUaGV0YV90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgUmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0LCBSZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoUmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBzdWJfZm10dHlfcmVzdCwgSWdub3JlZF9yZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSWdub3JlZF9yZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuXG4gIHwgRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eSwgc3ViX2ZtdHR5X3Jlc3QpLFxuICAgIEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiBzdWIyX2ZtdHR5IDw+IEZtdHR5X0VCQiBzdWIyX2ZtdHR5JyB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5Jywgc3ViX2ZtdHR5X3Jlc3QnKSwgZm10JylcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHksICBzdWIyX2ZtdHR5LCAgc3ViX2ZtdHR5X3Jlc3QpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eScsIHN1YjJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgICgqIFRPRE8gZGVmaW5lIEZtdHR5X3JlbF9FQkIgdG8gcmVtb3ZlIHRob3NlIGVyYXNlX3JlbCAqKVxuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjFfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjFfZm10dHknKVxuICAgIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIyX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIyX2ZtdHR5JylcbiAgICB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IHN1Yl9mbXR0eScgPSB0cmFucyAoc3ltbSBzdWIxX2ZtdHR5Jykgc3ViMl9mbXR0eScgaW5cbiAgICBsZXQgXywgZjIsIF8sIGY0ID0gZm10dHlfcmVsX2RldCBzdWJfZm10dHknIGluXG4gICAgbGV0IFJlZmwgPSBmMiBSZWZsIGluXG4gICAgbGV0IFJlZmwgPSBmNCBSZWZsIGluXG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gKGVyYXNlX3JlbCBzdWJfZm10dHlfcmVzdCkgZm10IGZtdHR5X3Jlc3RcbiAgICBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eScsIHN1YjJfZm10dHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltbSBzdWJfZm10dHlfcmVzdCcpLFxuICAgICAgICAgICAgICAgICAgIGZtdCcpXG4gIHwgRW5kX29mX2ZtdHR5LCBmbXR0eSAtPlxuICAgIEZtdHR5X2ZtdF9FQkIgKEVuZF9vZl9mbXR0eSwgdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSlcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBgcmVjYXN0YCBpcyBhIGJpdCBkaXNhcHBvaW50aW5nLiBUaGVcbiAgIGludmFyaWFudCBwcm92aWRlZCBieSB0aGUgdHlwZSBhcmUgdmVyeSBzdHJvbmc6IHRoZSBpbnB1dCBmb3JtYXQnc1xuICAgdHlwZSBpcyBpbiByZWxhdGlvbiB0byB0aGUgb3V0cHV0IHR5cGUncyBhcyB3aXRuZXNzZWQgYnkgdGhlXG4gICBmbXR0eV9yZWwgYXJndW1lbnQuIE9uZSB3b3VsZCBhdCBmaXJzdCBleHBlY3QgdGhpcyBmdW5jdGlvbiB0byBiZVxuICAgdG90YWwsIGFuZCBpbXBsZW1lbnRhYmxlIGJ5IGV4aGF1c3RpdmUgcGF0dGVybiBtYXRjaGluZy4gSW5zdGVhZCxcbiAgIHdlIHJldXNlIHRoZSBoaWdobHkgcGFydGlhbCBhbmQgbXVjaCBsZXNzIHdlbGwtZGVmaW5lZCBmdW5jdGlvblxuICAgYHR5cGVfZm9ybWF0YCB0aGF0IGhhcyBsb3N0IGFsbCBrbm93bGVkZ2Ugb2YgdGhlIGNvcnJlc3BvbmRlbmNlXG4gICBiZXR3ZWVuIHRoZSBhcmd1bWVudCdzIHR5cGVzLlxuXG4gICBCZXNpZGVzIHRoZSBmYWN0IHRoYXQgdGhpcyBmdW5jdGlvbiByZXVzZXMgYSBsb3Qgb2YgdGhlXG4gICBgdHlwZV9mb3JtYXRgIGxvZ2ljIChlZy46IHNlZWluZyBJbnRfdHkgaW4gdGhlIGZtdHR5IHBhcmFtZXRlciBkb2VzXG4gICBub3QgbGV0IHlvdSBtYXRjaCBvbiBJbnQgb25seSwgYXMgeW91IG1heSBpbiBmYWN0IGhhdmUgRmxvYXRcbiAgIChBcmdfcGFkZGluZywgLi4uKSAoXCIlLipkXCIpIGJlZ2lubmluZyB3aXRoIGFuIEludF90eSksIGl0IGlzIGFsc29cbiAgIGEgcGFydGlhbCBmdW5jdGlvbiwgYmVjYXVzZSB0aGUgdHlwaW5nIGluZm9ybWF0aW9uIGluIGEgZm9ybWF0IGlzXG4gICBub3QgcXVpdGUgZW5vdWdoIHRvIHJlY29uc3RydWN0IGl0IHVuYW1iaWd1b3VzbHkuIEZvciBleGFtcGxlLCB0aGVcbiAgIGZvcm1hdCB0eXBlcyBvZiBcIiVkJV9yXCIgYW5kIFwiJV9yJWRcIiBoYXZlIHRoZSBzYW1lIGZvcm1hdDZcbiAgIHBhcmFtZXRlcnMsIGJ1dCB0aGV5IGFyZSBub3QgYXQgYWxsIGV4Y2hhbmdlYWJsZSwgYW5kIHB1dHRpbmcgb25lXG4gICBpbiBwbGFjZSBvZiB0aGUgb3RoZXIgbXVzdCByZXN1bHQgaW4gYSBkeW5hbWljIGZhaWx1cmUuXG5cbiAgIEdpdmVuIHRoYXQ6XG4gICAtIHdlJ2QgaGF2ZSB0byBkdXBsaWNhdGUgYSBsb3Qgb2Ygbm9uLXRyaXZpYWwgdHlwaW5nIGxvZ2ljIGZyb20gdHlwZV9mb3JtYXRcbiAgIC0gdGhpcyB3b3VsZG4ndCBldmVuIGVsaW1pbmF0ZSAoYWxsKSB0aGUgZHluYW1pYyBmYWlsdXJlc1xuICAgd2UgZGVjaWRlZCB0byBqdXN0IHJldXNlIHR5cGVfZm9ybWF0IGRpcmVjdGx5IGZvciBub3cuXG4qKVxubGV0IHJlY2FzdCA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMlxuICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdFxuPSBmdW4gZm10IGZtdHR5IC0+XG4gIHR5cGVfZm9ybWF0IGZtdCAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUHJpbnRpbmcgdG9vbHMgKilcblxuKCogQWRkIHBhZGRpbmcgc3BhY2VzIGFyb3VuZCBhIHN0cmluZy4gKilcbmxldCBmaXhfcGFkZGluZyBwYWR0eSB3aWR0aCBzdHIgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHdpZHRoLCBwYWR0eSA9XG4gICAgYWJzIHdpZHRoLFxuICAgICgqIHdoaWxlIGxpdGVyYWwgcGFkZGluZyB3aWR0aHMgYXJlIGFsd2F5cyBub24tbmVnYXRpdmUsXG4gICAgICAgZHluYW1pY2FsbHktc2V0IHdpZHRocyAoQXJnX3BhZGRpbmcsIGVnLiAlKmQpIG1heSBiZSBuZWdhdGl2ZTtcbiAgICAgICB3ZSBpbnRlcnByZXQgdGhvc2UgYXMgc3BlY2lmeWluZyBhIHBhZGRpbmctdG8tdGhlLWxlZnQ7IHRoaXNcbiAgICAgICBtZWFucyB0aGF0ICcwJyBtYXkgZ2V0IGRyb3BwZWQgZXZlbiBpZiBpdCB3YXMgZXhwbGljaXRseSBzZXQsXG4gICAgICAgYnV0OlxuICAgICAgIC0gdGhpcyBpcyB3aGF0IHRoZSBsZWdhY3kgaW1wbGVtZW50YXRpb24gZG9lcywgYW5kXG4gICAgICAgICB3ZSBwcmVzZXJ2ZSBjb21wYXRpYmlsaXR5IGlmIHBvc3NpYmxlXG4gICAgICAgLSB3ZSBjb3VsZCBvbmx5IHNpZ25hbCB0aGlzIGlzc3VlIGJ5IGZhaWxpbmcgYXQgcnVudGltZSxcbiAgICAgICAgIHdoaWNoIGlzIG5vdCB2ZXJ5IG5pY2UuLi4gKilcbiAgICBpZiB3aWR0aCA8IDAgdGhlbiBMZWZ0IGVsc2UgcGFkdHkgaW5cbiAgaWYgd2lkdGggPD0gbGVuIHRoZW4gc3RyIGVsc2VcbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSB3aWR0aCAoaWYgcGFkdHkgPSBaZXJvcyB0aGVuICcwJyBlbHNlICcgJykgaW5cbiAgICBiZWdpbiBtYXRjaCBwYWR0eSB3aXRoXG4gICAgfCBMZWZ0ICAtPiBTdHJpbmcuYmxpdCBzdHIgMCByZXMgMCBsZW5cbiAgICB8IFJpZ2h0IC0+IFN0cmluZy5ibGl0IHN0ciAwIHJlcyAod2lkdGggLSBsZW4pIGxlblxuICAgIHwgWmVyb3Mgd2hlbiBsZW4gPiAwICYmIChzdHIuWzBdID0gJysnIHx8IHN0ci5bMF0gPSAnLScgfHwgc3RyLlswXSA9ICcgJykgLT5cbiAgICAgIEJ5dGVzLnNldCByZXMgMCBzdHIuWzBdO1xuICAgICAgU3RyaW5nLmJsaXQgc3RyIDEgcmVzICh3aWR0aCAtIGxlbiArIDEpIChsZW4gLSAxKVxuICAgIHwgWmVyb3Mgd2hlbiBsZW4gPiAxICYmIHN0ci5bMF0gPSAnMCcgJiYgKHN0ci5bMV0gPSAneCcgfHwgc3RyLlsxXSA9ICdYJykgLT5cbiAgICAgIEJ5dGVzLnNldCByZXMgMSBzdHIuWzFdO1xuICAgICAgU3RyaW5nLmJsaXQgc3RyIDIgcmVzICh3aWR0aCAtIGxlbiArIDIpIChsZW4gLSAyKVxuICAgIHwgWmVyb3MgLT5cbiAgICAgIFN0cmluZy5ibGl0IHN0ciAwIHJlcyAod2lkdGggLSBsZW4pIGxlblxuICAgIGVuZDtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBBZGQgJzAnIHBhZGRpbmcgdG8gaW50LCBpbnQzMiwgbmF0aXZlaW50IG9yIGludDY0IHN0cmluZyByZXByZXNlbnRhdGlvbi4gKilcbmxldCBmaXhfaW50X3ByZWNpc2lvbiBwcmVjIHN0ciA9XG4gIGxldCBwcmVjID0gYWJzIHByZWMgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIG1hdGNoIHN0ci5bMF0gd2l0aFxuICB8ICgnKycgfCAnLScgfCAnICcpIGFzIGMgd2hlbiBwcmVjICsgMSA+IGxlbiAtPlxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIChwcmVjICsgMSkgJzAnIGluXG4gICAgQnl0ZXMuc2V0IHJlcyAwIGM7XG4gICAgU3RyaW5nLmJsaXQgc3RyIDEgcmVzIChwcmVjIC0gbGVuICsgMikgKGxlbiAtIDEpO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgJzAnIHdoZW4gcHJlYyArIDIgPiBsZW4gJiYgbGVuID4gMSAmJiAoc3RyLlsxXSA9ICd4JyB8fCBzdHIuWzFdID0gJ1gnKSAtPlxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIChwcmVjICsgMikgJzAnIGluXG4gICAgQnl0ZXMuc2V0IHJlcyAxIHN0ci5bMV07XG4gICAgU3RyaW5nLmJsaXQgc3RyIDIgcmVzIChwcmVjIC0gbGVuICsgNCkgKGxlbiAtIDIpO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIHdoZW4gcHJlYyA+IGxlbiAtPlxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIHByZWMgJzAnIGluXG4gICAgU3RyaW5nLmJsaXQgc3RyIDAgcmVzIChwcmVjIC0gbGVuKSBsZW47XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCBfIC0+XG4gICAgc3RyXG5cbigqIEVzY2FwZSBhIHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIE9DYW1sIGxleGluZyBjb252ZW50aW9uLiAqKVxubGV0IHN0cmluZ190b19jYW1sX3N0cmluZyBzdHIgPVxuICBsZXQgc3RyID0gU3RyaW5nLmVzY2FwZWQgc3RyIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKGwgKyAyKSAnXFxcIicgaW5cbiAgU3RyaW5nLnVuc2FmZV9ibGl0IHN0ciAwIHJlcyAxIGw7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIEdlbmVyYXRlIHRoZSBmb3JtYXRfaW50L2ludDMyL25hdGl2ZWludC9pbnQ2NCBmaXJzdCBhcmd1bWVudFxuICAgZnJvbSBhbiBpbnRfY29udi4gKilcbmxldCBmb3JtYXRfb2ZfaWNvbnYgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJWRcIiB8IEludF9wZCAtPiBcIiUrZFwiIHwgSW50X3NkIC0+IFwiJSBkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVpXCIgfCBJbnRfcGkgLT4gXCIlK2lcIiB8IEludF9zaSAtPiBcIiUgaVwiXG4gIHwgSW50X3ggLT4gXCIleFwiIHwgSW50X0N4IC0+IFwiJSN4XCJcbiAgfCBJbnRfWCAtPiBcIiVYXCIgfCBJbnRfQ1ggLT4gXCIlI1hcIlxuICB8IEludF9vIC0+IFwiJW9cIiB8IEludF9DbyAtPiBcIiUjb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIldVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZMID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVMZFwiIHwgSW50X3BkIC0+IFwiJStMZFwiIHwgSW50X3NkIC0+IFwiJSBMZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlTGlcIiB8IEludF9waSAtPiBcIiUrTGlcIiB8IEludF9zaSAtPiBcIiUgTGlcIlxuICB8IEludF94IC0+IFwiJUx4XCIgfCBJbnRfQ3ggLT4gXCIlI0x4XCJcbiAgfCBJbnRfWCAtPiBcIiVMWFwiIHwgSW50X0NYIC0+IFwiJSNMWFwiXG4gIHwgSW50X28gLT4gXCIlTG9cIiB8IEludF9DbyAtPiBcIiUjTG9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJUx1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udmwgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJWxkXCIgfCBJbnRfcGQgLT4gXCIlK2xkXCIgfCBJbnRfc2QgLT4gXCIlIGxkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVsaVwiIHwgSW50X3BpIC0+IFwiJStsaVwiIHwgSW50X3NpIC0+IFwiJSBsaVwiXG4gIHwgSW50X3ggLT4gXCIlbHhcIiB8IEludF9DeCAtPiBcIiUjbHhcIlxuICB8IEludF9YIC0+IFwiJWxYXCIgfCBJbnRfQ1ggLT4gXCIlI2xYXCJcbiAgfCBJbnRfbyAtPiBcIiVsb1wiIHwgSW50X0NvIC0+IFwiJSNsb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlbHVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252biA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlbmRcIiB8IEludF9wZCAtPiBcIiUrbmRcIiB8IEludF9zZCAtPiBcIiUgbmRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJW5pXCIgfCBJbnRfcGkgLT4gXCIlK25pXCIgfCBJbnRfc2kgLT4gXCIlIG5pXCJcbiAgfCBJbnRfeCAtPiBcIiVueFwiIHwgSW50X0N4IC0+IFwiJSNueFwiXG4gIHwgSW50X1ggLT4gXCIlblhcIiB8IEludF9DWCAtPiBcIiUjblhcIlxuICB8IEludF9vIC0+IFwiJW5vXCIgfCBJbnRfQ28gLT4gXCIlI25vXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVudVwiXG5cbigqIEdlbmVyYXRlIHRoZSBmb3JtYXRfZmxvYXQgZmlyc3QgYXJndW1lbnQgZnJvbSBhIGZsb2F0X2NvbnYuICopXG5sZXQgZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMgPVxuICAgIGxldCBwcmVjID0gYWJzIHByZWMgaW5cbiAgICBsZXQgc3ltYiA9IGNoYXJfb2ZfZmNvbnYgfmNGOidnJyBmY29udiBpblxuICAgIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252O1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy4nO1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBwcmVjKTtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmIHN5bWI7XG4gICAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG5sZXQgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgcyA9XG4gIG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgLT5cbiAgICBsZXQgZGlnaXRzID1cbiAgICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgIHwgJzAnLi4nOScgLT4gaW5jciBuXG4gICAgICAgIHwgXyAtPiAoKVxuICAgICAgZG9uZTtcbiAgICAgICFuXG4gICAgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKyAoZGlnaXRzIC0gMSkgLyAzKSBpblxuICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgIGxldCBwdXQgYyA9IEJ5dGVzLnNldCBidWYgIXBvcyBjOyBpbmNyIHBvcyBpblxuICAgIGxldCBsZWZ0ID0gcmVmICgoZGlnaXRzIC0gMSkgbW9kIDMgKyAxKSBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAnMCcuLic5JyBhcyBjIC0+XG4gICAgICAgICAgaWYgIWxlZnQgPSAwIHRoZW4gKHB1dCAnXyc7IGxlZnQgOj0gMyk7IGRlY3IgbGVmdDsgcHV0IGNcbiAgICAgIHwgYyAtPiBwdXQgY1xuICAgIGRvbmU7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWZcbiAgfCBfIC0+IHNcblxuKCogQ29udmVydCBhbiBpbnRlZ2VyIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byBhIGNvbnZlcnNpb24uICopXG5sZXQgY29udmVydF9pbnQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50IChmb3JtYXRfb2ZfaWNvbnYgaWNvbnYpIG4pXG5sZXQgY29udmVydF9pbnQzMiBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQzMiAoZm9ybWF0X29mX2ljb252bCBpY29udikgbilcbmxldCBjb252ZXJ0X25hdGl2ZWludCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9uYXRpdmVpbnQgKGZvcm1hdF9vZl9pY29udm4gaWNvbnYpIG4pXG5sZXQgY29udmVydF9pbnQ2NCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQ2NCAoZm9ybWF0X29mX2ljb252TCBpY29udikgbilcblxuKCogQ29udmVydCBhIGZsb2F0IHRvIHN0cmluZy4gKilcbigqIEZpeCBzcGVjaWFsIGNhc2Ugb2YgXCJPQ2FtbCBmbG9hdCBmb3JtYXRcIi4gKilcbmxldCBjb252ZXJ0X2Zsb2F0IGZjb252IHByZWMgeCA9XG4gIGxldCBoZXggKCkgPVxuICAgIGxldCBzaWduID1cbiAgICAgIG1hdGNoIGZzdCBmY29udiB3aXRoXG4gICAgICB8IEZsb2F0X2ZsYWdfcCAtPiAnKydcbiAgICAgIHwgRmxvYXRfZmxhZ19zIC0+ICcgJ1xuICAgICAgfCBfIC0+ICctJyBpblxuICAgIGhleHN0cmluZ19vZl9mbG9hdCB4IHByZWMgc2lnbiBpblxuICBsZXQgYWRkX2RvdF9pZl9uZWVkZWQgc3RyID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcmVjIGlzX3ZhbGlkIGkgPVxuICAgICAgaWYgaSA9IGxlbiB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICAgIHwgJy4nIHwgJ2UnIHwgJ0UnIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGlzX3ZhbGlkIChpICsgMSkgaW5cbiAgICBpZiBpc192YWxpZCAwIHRoZW4gc3RyIGVsc2Ugc3RyIF4gXCIuXCIgaW5cbiAgbGV0IGNhbWxfc3BlY2lhbF92YWwgc3RyID0gbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgfCBGUF96ZXJvIC0+IHN0clxuICAgIHwgRlBfaW5maW5pdGUgLT4gaWYgeCA8IDAuMCB0aGVuIFwibmVnX2luZmluaXR5XCIgZWxzZSBcImluZmluaXR5XCJcbiAgICB8IEZQX25hbiAtPiBcIm5hblwiIGluXG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfaCAtPiBoZXggKClcbiAgfCBGbG9hdF9IIC0+IFN0cmluZy51cHBlcmNhc2VfYXNjaWkgKGhleCAoKSlcbiAgfCBGbG9hdF9DRiAtPiBjYW1sX3NwZWNpYWxfdmFsIChoZXggKCkpXG4gIHwgRmxvYXRfRiAtPlxuICAgIGxldCBzdHIgPSBmb3JtYXRfZmxvYXQgKGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjKSB4IGluXG4gICAgY2FtbF9zcGVjaWFsX3ZhbCAoYWRkX2RvdF9pZl9uZWVkZWQgc3RyKVxuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HIC0+XG4gICAgZm9ybWF0X2Zsb2F0IChmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYykgeFxuXG4oKiBDb252ZXJ0IGEgY2hhciB0byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIE9DYW1sIGxleGljYWwgY29udmVudGlvbi4gKilcbmxldCBmb3JtYXRfY2FtbF9jaGFyIGMgPVxuICBsZXQgc3RyID0gQ2hhci5lc2NhcGVkIGMgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVzID0gQnl0ZXMubWFrZSAobCArIDIpICdcXCcnIGluXG4gIFN0cmluZy51bnNhZmVfYmxpdCBzdHIgMCByZXMgMSBsO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBDb252ZXJ0IGEgZm9ybWF0IHR5cGUgdG8gc3RyaW5nICopXG5sZXQgc3RyaW5nX29mX2ZtdHR5IGZtdHR5ID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTtcbiAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgKCogR2VuZXJpYyBwcmludGluZyBmdW5jdGlvbiAqKVxuXG4oKiBNYWtlIGEgZ2VuZXJpYyBwcmludGluZyBmdW5jdGlvbi4gKilcbigqIFVzZWQgdG8gZ2VuZXJhdGUgUHJpbnRmIGFuZCBGb3JtYXQgcHJpbnRpbmcgZnVuY3Rpb25zLiAqKVxuKCogUGFyYW1ldGVyczpcbiAgICAgazogYSBjb250aW51YXRpb24gZmluYWxseSBhcHBsaWVkIHRvIHRoZSBvdXRwdXQgc3RyZWFtIGFuZCB0aGUgYWNjdW11bGF0b3IuXG4gICAgIG86IHRoZSBvdXRwdXQgc3RyZWFtIChzZWUgaywgJWEgYW5kICV0KS5cbiAgICAgYWNjOiByZXYgbGlzdCBvZiBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzaCwgZm9ybWF0dGluZywgLi4uKS5cbiAgICAgZm10OiB0aGUgZm9ybWF0LiAqKVxubGV0IHJlYyBtYWtlX3ByaW50ZiA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IENoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX2NoYXIgKGFjYywgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZm9ybWF0X2NhbWxfY2hhciBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgKGZ1biBzdHIgLT4gc3RyKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIHN0cmluZ190b19jYW1sX3N0cmluZ1xuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50IGljb252XG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludDMyIGljb252XG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9uYXRpdmVpbnQgaWNvbnZcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50NjQgaWNvbnZcbiAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2Zsb2F0X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgZmNvbnZcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIHN0cmluZ19vZl9ib29sXG4gIHwgQWxwaGEgcmVzdCAtPlxuICAgIGZ1biBmIHggLT4gbWFrZV9wcmludGYgayAoQWNjX2RlbGF5IChhY2MsIGZ1biBvIC0+IGYgbyB4KSkgcmVzdFxuICB8IFRoZXRhIHJlc3QgLT5cbiAgICBmdW4gZiAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGVsYXkgKGFjYywgZikpIHJlc3RcbiAgfCBDdXN0b20gKGFyaXR5LCBmLCByZXN0KSAtPlxuICAgIG1ha2VfY3VzdG9tIGsgYWNjIHJlc3QgYXJpdHkgKGYgKCkpXG4gIHwgUmVhZGVyIF8gLT5cbiAgICAoKiBUaGlzIGNhc2UgaXMgaW1wb3NzaWJsZSwgYnkgdHlwaW5nIG9mIGZvcm1hdHMuICopXG4gICAgKCogSW5kZWVkLCBzaW5jZSBwcmludGYgYW5kIGNvLiB0YWtlIGEgZm9ybWF0NCBhcyBhcmd1bWVudCwgdGhlICdkIGFuZCAnZVxuICAgICAgIHR5cGUgcGFyYW1ldGVycyBvZiBmbXQgYXJlIG9idmlvdXNseSBlcXVhbHMuIFRoZSBSZWFkZXIgaXMgdGhlXG4gICAgICAgb25seSBjb25zdHJ1Y3RvciB3aGljaCB0b3VjaCAnZCBhbmQgJ2UgdHlwZSBwYXJhbWV0ZXJzIG9mIHRoZSBmb3JtYXRcbiAgICAgICB0eXBlLCBpdCBhZGRzIGFuICgtPikgdG8gdGhlICdkIHBhcmFtZXRlcnMuIENvbnNlcXVlbnRseSwgYSBmb3JtYXQ0XG4gICAgICAgY2Fubm90IGNvbnRhaW4gYSBSZWFkZXIgbm9kZSwgZXhjZXB0IGluIHRoZSBzdWItZm9ybWF0IGFzc29jaWF0ZWQgdG9cbiAgICAgICBhbiAley4uLiV9LiBJdCdzIG5vdCBhIHByb2JsZW0gYmVjYXVzZSBtYWtlX3ByaW50ZiBkbyBub3QgY2FsbFxuICAgICAgIGl0c2VsZiByZWN1cnNpdmVseSBvbiB0aGUgc3ViLWZvcm1hdCBhc3NvY2lhdGVkIHRvICV7Li4uJX0uICopXG4gICAgYXNzZXJ0IGZhbHNlXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mbHVzaCBhY2MpIHJlc3RcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX3N0cmluZ19saXRlcmFsIChhY2MsIHN0cikpIHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfY2hhcl9saXRlcmFsIChhY2MsIGNocikpIHJlc3RcblxuICB8IEZvcm1hdF9hcmcgKF8sIHN1Yl9mbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSBzdHJpbmdfb2ZfZm10dHkgc3ViX2ZtdHR5IGluXG4gICAgKGZ1biBzdHIgLT5cbiAgICAgIGlnbm9yZSBzdHI7XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgdHkpKSByZXN0KVxuICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpIC0+XG4gICAgZnVuIChGb3JtYXQgKGZtdCwgXykpIC0+IG1ha2VfcHJpbnRmIGsgYWNjXG4gICAgICAoY29uY2F0X2ZtdCAocmVjYXN0IGZtdCBmbXR0eSkgcmVzdClcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+XG4gICAgbGV0IG5ld19hY2MgPSBBY2NfaW52YWxpZF9hcmcgKGFjYywgXCJQcmludGY6IGJhZCBjb252ZXJzaW9uICVbXCIpIGluXG4gICAgZnVuIF8gLT4gbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPlxuICAgICgqIFRoaXMgY2FzZSBzaG91bGQgYmUgcmVmdXNlZCBmb3IgUHJpbnRmLiAqKVxuICAgICgqIEFjY2VwdGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAqKVxuICAgICgqIEludGVycHJldCAlbCwgJW4gYW5kICVMIGFzICV1LiAqKVxuICAgIGZ1biBuIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmb3JtYXRfaW50IFwiJXVcIiBuKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfY2hhciAoYWNjLCBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgbWFrZV9pZ25vcmVkX3BhcmFtIGsgYWNjIGlnbiByZXN0XG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19saXQgKGFjYywgZm10aW5nX2xpdCkpIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGxldCBrJyBrYWNjID1cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2dlbiAoYWNjLCBBY2Nfb3Blbl90YWcga2FjYykpIHJlc3QgaW5cbiAgICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdCdcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGxldCBrJyBrYWNjID1cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2dlbiAoYWNjLCBBY2Nfb3Blbl9ib3gga2FjYykpIHJlc3QgaW5cbiAgICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdCdcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBrIGFjY1xuXG4oKiBEZWxheSB0aGUgZXJyb3IgKEludmFsaWRfYXJndW1lbnQgXCJQcmludGY6IGJhZCBjb252ZXJzaW9uICVfXCIpLiAqKVxuKCogR2VuZXJhdGUgZnVuY3Rpb25zIHRvIHRha2UgcmVtYWluaW5nIGFyZ3VtZW50cyAoYWZ0ZXIgdGhlIFwiJV9cIikuICopXG5hbmQgbWFrZV9pZ25vcmVkX3BhcmFtIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfbmF0aXZlaW50IChfLCBfKSAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgZm10dHkgZm10XG4gIHwgSWdub3JlZF9yZWFkZXIgICAgICAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcblxuXG4oKiBTcGVjaWFsIGNhc2Ugb2YgcHJpbnRmIFwiJV8oXCIuICopXG5hbmQgbWFrZV9mcm9tX2ZtdHR5IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgZm10dHkgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGZtdHR5IGZtdCAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0ICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgSW50X3R5IHJlc3QgICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQm9vbF90eSByZXN0ICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBUaGV0YV90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBSZWFkZXJfdHkgXyAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBfICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBGb3JtYXRfYXJnX3R5IChfLCByZXN0KSAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBFbmRfb2ZfZm10dHkgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgKGNvbmNhdF9mbXR0eSB0eSByZXN0KSBmbXRcblxuKCogSW5zZXJ0IGFuIEFjY19pbnZhbGlkX2FyZyBpbiB0aGUgYWNjdW11bGF0b3IgYW5kIGNvbnRpbnVlIHRvIGdlbmVyYXRlXG4gICBjbG9zdXJlcyB0byBnZXQgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMuICopXG5hbmQgbWFrZV9pbnZhbGlkX2FyZyA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGZtdCAtPlxuICBtYWtlX3ByaW50ZiBrIChBY2NfaW52YWxpZF9hcmcgKGFjYywgXCJQcmludGY6IGJhZCBjb252ZXJzaW9uICVfXCIpKSBmbXRcblxuKCogRml4IHBhZGRpbmcsIHRha2UgaXQgYXMgYW4gZXh0cmEgaW50ZWdlciBhcmd1bWVudCBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9wYWRkaW5nIDogdHlwZSB4IHogYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHogLT4gYSkgcGFkZGluZyAtPiAoeiAtPiBzdHJpbmcpIC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCB0cmFucyAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgdHJhbnMgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHdpZHRoKSAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmaXhfcGFkZGluZyBwYWR0eSB3aWR0aCAodHJhbnMgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHkgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcblxuKCogRml4IHBhZGRpbmcgYW5kIHByZWNpc2lvbiBmb3IgaW50LCBpbnQzMiwgbmF0aXZlaW50IG9yIGludDY0LiAqKVxuKCogVGFrZSBvbmUgb3IgdHdvIGV4dHJhIGludGVnZXIgYXJndW1lbnRzIGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiA6IHR5cGUgeCB5IHogYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHogLT4gYSkgcHJlY2lzaW9uIC0+IChpbnRfY29udiAtPiB6IC0+IHN0cmluZykgLT5cbiAgICBpbnRfY29udiAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgcHJlYyB0cmFucyBpY29udiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gdHJhbnMgaWNvbnYgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuXG4oKiBDb252ZXJ0IGEgZmxvYXQsIGZpeCBwYWRkaW5nIGFuZCBwcmVjaXNpb24gaWYgbmVlZGVkLiAqKVxuKCogVGFrZSB0aGUgZmxvYXQgYXJndW1lbnQgYW5kIG9uZSBvciB0d28gZXh0cmEgaW50ZWdlciBhcmd1bWVudHMgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfZmxvYXRfcGFkZGluZ19wcmVjaXNpb24gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgZmxvYXQgLT4gYSkgcHJlY2lzaW9uIC0+IGZsb2F0X2NvbnYgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHByZWMgZmNvbnYgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgKGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252KSB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiBwIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgKGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252KSB4IGluXG4gICAgICBsZXQgc3RyJyA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgc3RyIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyJykpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgKGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252KSB4IGluXG4gICAgICBsZXQgc3RyJyA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgc3RyIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyJykpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbmFuZCBtYWtlX2N1c3RvbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gIChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4geCAtPiB5ID1cbiAgZnVuIGsgYWNjIHJlc3QgYXJpdHkgZiAtPiBtYXRjaCBhcml0eSB3aXRoXG4gIHwgQ3VzdG9tX3plcm8gLT4gbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIGYpKSByZXN0XG4gIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbWFrZV9jdXN0b20gayBhY2MgcmVzdCBhcml0eSAoZiB4KVxuXG5sZXQgY29uc3QgeCBfID0geFxuXG5sZXQgcmVjIG1ha2VfaXByaW50ZiA6IHR5cGUgYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPiBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGEgPVxuICBmdW4gayBvIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICAgIHwgQ2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU3RyaW5nIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU3RyaW5nIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU3RyaW5nIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBDYW1sX3N0cmluZyAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfc3RyaW5nIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9zdHJpbmcgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IEludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgSW50MzIgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IE5hdGl2ZWludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgSW50NjQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEZsb2F0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBCb29sIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQm9vbCAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEJvb2wgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IEFscGhhIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgVGhldGEgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfY3VzdG9tX2FyaXR5IGsgbyByZXN0IGFyaXR5XG4gICAgfCBSZWFkZXIgXyAtPlxuICAgICAgICAoKiBUaGlzIGNhc2UgaXMgaW1wb3NzaWJsZSwgYnkgdHlwaW5nIG9mIGZvcm1hdHMuICBTZWUgdGhlXG4gICAgICAgICAgIG5vdGUgaW4gdGhlIGNvcnJlc3BvbmRpbmcgY2FzZSBmb3IgbWFrZV9wcmludGYuICopXG4gICAgICAgIGFzc2VydCBmYWxzZVxuICAgIHwgRmx1c2ggcmVzdCAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IFN0cmluZ19saXRlcmFsIChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBGb3JtYXRfYXJnIChfLCBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgICAgZnVuIChGb3JtYXQgKGZtdCwgXykpIC0+XG4gICAgICAgICAgbWFrZV9pcHJpbnRmIGsgb1xuICAgICAgICAgICAgKGNvbmNhdF9mbXQgKHJlY2FzdCBmbXQgZm10dHkpIHJlc3QpXG4gICAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pZ25vcmVkX3BhcmFtIChmdW4gXyAtPiBrIG8pIChFbmRfb2ZfYWNjKSBpZ24gcmVzdFxuICAgIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIChmdW4ga29jIC0+IG1ha2VfaXByaW50ZiBrIGtvYyByZXN0KSBvIGZtdCdcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiAoZnVuIGtvYyAtPiBtYWtlX2lwcmludGYgayBrb2MgcmVzdCkgbyBmbXQnXG4gICAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgICAgIGsgb1xuYW5kIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIDpcbiAgdHlwZSB4IHkgeiBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+IHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHogLT4gYSkgcHJlY2lzaW9uIC0+IHggPVxuICBmdW4gayBvIGZtdCBwYWQgcHJlYyAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAgICwgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IE5vX3BhZGRpbmcgICAsIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBOb19wYWRkaW5nICAgLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTGl0X3BhZGRpbmcgXywgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IExpdF9wYWRkaW5nIF8sIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IEFyZ19wYWRkaW5nIF8sIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IEFyZ19wYWRkaW5nIF8sIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IEFyZ19wYWRkaW5nIF8sIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpKVxuYW5kIGZuX29mX2N1c3RvbV9hcml0eSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT5cbiAgc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IHkgPVxuICBmdW4gayBvIGZtdCAtPiBmdW5jdGlvblxuICAgIHwgQ3VzdG9tX3plcm8gLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyBmbXRcbiAgICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+XG4gICAgICAgIGNvbnN0IChmbl9vZl9jdXN0b21fYXJpdHkgayBvIGZtdCBhcml0eSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQ29udGludWF0aW9ucyBmb3IgbWFrZV9wcmludGYgKilcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhbiBvdXRwdXRfc3RyZWFtLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgb3V0cHV0X2FjYyBvIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIFwiQHtcIjsgb3V0cHV0X2FjYyBvIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIFwiQFtcIjsgb3V0cHV0X2FjYyBvIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X2NoYXIgbyBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBmIG9cbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IGZsdXNoIG9cbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gb3V0cHV0X2FjYyBvIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIGJ1ZnB1dF9hY2MgYiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQHtcIjsgYnVmcHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkBbXCI7IGJ1ZnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBmIGJcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gYnVmcHV0X2FjYyBiIHA7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IGJ1ZnB1dF9hY2MgYiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBEaWZmZXIgZnJvbSBidWZwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiAlYSBhbmQgJXQuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBzdHJwdXRfYWNjIGIgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkB7XCI7IHN0cnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAW1wiOyBzdHJwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiAoZiAoKSlcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gc3RycHV0X2FjYyBiIHA7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IHN0cnB1dF9hY2MgYiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEVycm9yIG1hbmFnZW1lbnQgKilcblxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBwcmV0dHktcHJpbnRlZCBlcnJvciBtZXNzYWdlLiAqKVxubGV0IGZhaWx3aXRoX21lc3NhZ2UgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IGsgYWNjID0gc3RycHV0X2FjYyBidWYgYWNjOyBmYWlsd2l0aCAoQnVmZmVyLmNvbnRlbnRzIGJ1ZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdHRpbmcgdG9vbHMgKilcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhbiBvcGVuIGJsb2NrIGRlc2NyaXB0aW9uIChpbmRlbnQsIGJsb2NrX3R5cGUpICopXG5sZXQgb3Blbl9ib3hfb2Zfc3RyaW5nIHN0ciA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiAoMCwgUHBfYm94KSBlbHNlXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IGludmFsaWRfYm94ICgpID0gZmFpbHdpdGhfbWVzc2FnZSBcImludmFsaWQgYm94IGRlc2NyaXB0aW9uICVTXCIgc3RyIGluXG4gICAgbGV0IHJlYyBwYXJzZV9zcGFjZXMgaSA9XG4gICAgICBpZiBpID0gbGVuIHRoZW4gaSBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgICB8ICcgJyB8ICdcXHQnIC0+IHBhcnNlX3NwYWNlcyAoaSArIDEpXG4gICAgICAgIHwgXyAtPiBpXG4gICAgYW5kIHBhcnNlX2x3b3JkIGkgaiA9XG4gICAgICBpZiBqID0gbGVuIHRoZW4gaiBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5bal0gd2l0aFxuICAgICAgICB8ICdhJyAuLiAneicgLT4gcGFyc2VfbHdvcmQgaSAoaiArIDEpXG4gICAgICAgIHwgXyAtPiBqXG4gICAgYW5kIHBhcnNlX2ludCBpIGogPVxuICAgICAgaWYgaiA9IGxlbiB0aGVuIGogZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2pdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IHBhcnNlX2ludCBpIChqICsgMSlcbiAgICAgICAgfCBfIC0+IGogaW5cbiAgICBsZXQgd3N0YXJ0ID0gcGFyc2Vfc3BhY2VzIDAgaW5cbiAgICBsZXQgd2VuZCA9IHBhcnNlX2x3b3JkIHdzdGFydCB3c3RhcnQgaW5cbiAgICBsZXQgYm94X25hbWUgPSBTdHJpbmcuc3ViIHN0ciB3c3RhcnQgKHdlbmQgLSB3c3RhcnQpIGluXG4gICAgbGV0IG5zdGFydCA9IHBhcnNlX3NwYWNlcyB3ZW5kIGluXG4gICAgbGV0IG5lbmQgPSBwYXJzZV9pbnQgbnN0YXJ0IG5zdGFydCBpblxuICAgIGxldCBpbmRlbnQgPVxuICAgICAgaWYgbnN0YXJ0ID0gbmVuZCB0aGVuIDAgZWxzZVxuICAgICAgICB0cnkgaW50X29mX3N0cmluZyAoU3RyaW5nLnN1YiBzdHIgbnN0YXJ0IChuZW5kIC0gbnN0YXJ0KSlcbiAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT4gaW52YWxpZF9ib3ggKCkgaW5cbiAgICBsZXQgZXhwX2VuZCA9IHBhcnNlX3NwYWNlcyBuZW5kIGluXG4gICAgaWYgZXhwX2VuZCA8PiBsZW4gdGhlbiBpbnZhbGlkX2JveCAoKTtcbiAgICBsZXQgYm94X3R5cGUgPSBtYXRjaCBib3hfbmFtZSB3aXRoXG4gICAgICB8IFwiXCIgfCBcImJcIiAtPiBQcF9ib3hcbiAgICAgIHwgXCJoXCIgICAgICAtPiBQcF9oYm94XG4gICAgICB8IFwidlwiICAgICAgLT4gUHBfdmJveFxuICAgICAgfCBcImh2XCIgICAgIC0+IFBwX2h2Ym94XG4gICAgICB8IFwiaG92XCIgICAgLT4gUHBfaG92Ym94XG4gICAgICB8IF8gICAgICAgIC0+IGludmFsaWRfYm94ICgpIGluXG4gICAgKGluZGVudCwgYm94X3R5cGUpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUGFyc2luZyB0b29scyAqKVxuXG4oKiBDcmVhdGUgYSBwYWRkaW5nX2ZtdF9lYmIgZnJvbSBhIHBhZGRpbmcgYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcGFkZGluZyB0byBkaXNqb2luIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnQgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3BhZGRpbmdfZm10X2ViYiA6IHR5cGUgeCB5IC5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgICAoXywgXywgXywgXywgXykgcGFkZGluZ19mbXRfZWJiID1cbmZ1biBwYWQgZm10IC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAgICAgICAgIC0+IFBhZGRpbmdfZm10X0VCQiAoTm9fcGFkZGluZywgZm10KVxuICB8IExpdF9wYWRkaW5nIChzLCB3KSAtPiBQYWRkaW5nX2ZtdF9FQkIgKExpdF9wYWRkaW5nIChzLCB3KSwgZm10KVxuICB8IEFyZ19wYWRkaW5nIHMgICAgICAtPiBQYWRkaW5nX2ZtdF9FQkIgKEFyZ19wYWRkaW5nIHMsIGZtdClcblxuKCogQ3JlYXRlIGEgcHJlY2lzaW9uX2ZtdF9lYmIgZnJvbSBhIHByZWNpc2lvbiBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwcmVjaXNpb24gdG8gZGlzam9pbiB0aGUgdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50IGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wcmVjaXNpb25fZm10X2ViYiA6IHR5cGUgeCB5IC5cbiAgICAoeCwgeSkgcHJlY2lzaW9uIC0+IChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAgIChfLCBfLCBfLCBfLCBfKSBwcmVjaXNpb25fZm10X2ViYiA9XG5mdW4gcHJlYyBmbXQgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gIHwgTm9fcHJlY2lzaW9uICAgIC0+IFByZWNpc2lvbl9mbXRfRUJCIChOb19wcmVjaXNpb24sIGZtdClcbiAgfCBMaXRfcHJlY2lzaW9uIHAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKExpdF9wcmVjaXNpb24gcCwgZm10KVxuICB8IEFyZ19wcmVjaXNpb24gICAtPiBQcmVjaXNpb25fZm10X0VCQiAoQXJnX3ByZWNpc2lvbiwgZm10KVxuXG4oKiBDcmVhdGUgYSBwYWRwcmVjX2ZtdF9lYmIgZnJvbSBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHBhZGRpbmcgYW5kIHRoZSBwcmVjaXNpb24gdG8gZGlzam9pbiB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnRzXG4gICBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcGFkcHJlY19mbXRfZWJiIDogdHlwZSB4IHkgeiB0IC5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeiwgdCkgcHJlY2lzaW9uIC0+XG4gICAgKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgIChfLCBfLCBfLCBfLCBfKSBwYWRwcmVjX2ZtdF9lYmIgPVxuZnVuIHBhZCBwcmVjIGZtdCAtPlxuICBsZXQgUHJlY2lzaW9uX2ZtdF9FQkIgKHByZWMsIGZtdCcpID0gbWFrZV9wcmVjaXNpb25fZm10X2ViYiBwcmVjIGZtdCBpblxuICBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgICAgICAgICAtPiBQYWRwcmVjX2ZtdF9FQkIgKE5vX3BhZGRpbmcsIHByZWMsIGZtdCcpXG4gIHwgTGl0X3BhZGRpbmcgKHMsIHcpIC0+IFBhZHByZWNfZm10X0VCQiAoTGl0X3BhZGRpbmcgKHMsIHcpLCBwcmVjLCBmbXQnKVxuICB8IEFyZ19wYWRkaW5nIHMgICAgICAtPiBQYWRwcmVjX2ZtdF9FQkIgKEFyZ19wYWRkaW5nIHMsIHByZWMsIGZtdCcpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCBwYXJzaW5nICopXG5cbigqIFBhcnNlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhIGZvcm1hdCBhbmQgY3JlYXRlIGEgZm10X2ViYi4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSBpbiBjYXNlIG9mIGludmFsaWQgZm9ybWF0LiAqKVxubGV0IGZtdF9lYmJfb2Zfc3RyaW5nID9sZWdhY3lfYmVoYXZpb3Igc3RyID1cbiAgKCogUGFyYW1ldGVycyBuYW1pbmcgY29udmVudGlvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gbGl0X3N0YXJ0OiBzdGFydCBvZiB0aGUgbGl0ZXJhbCBzZXF1ZW5jZS4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBzdHJfaW5kOiBjdXJyZW50IGluZGV4IGluIHRoZSBzdHJpbmcuICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIGVuZF9pbmQ6IGVuZCBvZiB0aGUgY3VycmVudCAoc3ViLSlmb3JtYXQuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gcGN0X2luZDogaW5kZXggb2YgdGhlICclJyBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICopXG4gICgqICAgLSB6ZXJvOiAgaXMgdGhlICcwJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIG1pbnVzOiBpcyB0aGUgJy0nIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gcGx1czogIGlzIHRoZSAnKycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBoYXNoOiAgaXMgdGhlICcjJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHNwYWNlOiBpcyB0aGUgJyAnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gaWduOiAgIGlzIHRoZSAnXycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBwYWQ6IHBhZGRpbmcgb2YgdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHByZWM6IHByZWNpc2lvbiBvZiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gc3ltYjogY2hhciByZXByZXNlbnRpbmcgdGhlIGNvbnZlcnNpb24gKCdjJywgJ3MnLCAnZCcsIC4uLikuICopXG4gICgqICAgLSBjaGFyX3NldDogc2V0IG9mIGNoYXJhY3RlcnMgYXMgYml0bWFwIChzZWUgc2NhbmYgJVsuLi5dKS4gICAgKilcblxuICBsZXQgbGVnYWN5X2JlaGF2aW9yID0gbWF0Y2ggbGVnYWN5X2JlaGF2aW9yIHdpdGhcbiAgICB8IFNvbWUgZmxhZyAtPiBmbGFnXG4gICAgfCBOb25lIC0+IHRydWVcbiAgKCogIFdoZW4gdGhpcyBmbGFnIGlzIGVuYWJsZWQsIHRoZSBmb3JtYXQgcGFyc2VyIHRyaWVzIHRvIGJlaGF2ZSBhc1xuICAgICAgdGhlIDw0LjAyIGltcGxlbWVudGF0aW9ucywgaW4gcGFydGljdWxhciBpdCBpZ25vcmVzIG1vc3QgYmVuaW5lXG4gICAgICBub25zZW5zaWNhbCBmb3JtYXQuIFdoZW4gdGhlIGZsYWcgaXMgZGlzYWJsZWQsIGl0IHdpbGwgcmVqZWN0IGFueVxuICAgICAgZm9ybWF0IHRoYXQgaXMgbm90IGFjY2VwdGVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLlxuXG4gICAgICBBIHR5cGljYWwgZXhhbXBsZSB3b3VsZCBiZSBcIiUrIGRcIjogc3BlY2lmeWluZyBib3RoICcrJyAoaWYgdGhlXG4gICAgICBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoIGEgJysnIHRvIGdldCB0aGUgc2FtZSB3aWR0aCBhc1xuICAgICAgbmVnYXRpdmUgbnVtYmVycykgYW5kICcgJyAoaWYgdGhlIG51bWJlciBpcyBwb3NpdGl2ZSwgcGFkIHdpdGhcbiAgICAgIGEgc3BhY2UpIGRvZXMgbm90IG1ha2Ugc2Vuc2UsIGJ1dCB0aGUgbGVnYWN5ICg8IDQuMDIpXG4gICAgICBpbXBsZW1lbnRhdGlvbiB3YXMgaGFwcHkgdG8ganVzdCBpZ25vcmUgdGhlIHNwYWNlLlxuICAqKVxuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZS4gKilcbiAgbGV0IGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZCBtc2cgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIG1zZ1xuICBpblxuXG4gICgqIFVzZWQgd2hlbiB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgKG9yIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXQpIHdhcyBlbmNvdW50ZXJlZFxuICAgICAgdW5leHBlY3RlZGx5LiAqKVxuICBsZXQgdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UgZW5kX2luZFxuICAgICAgXCJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXRcIlxuICBpblxuXG4gICgqIFVzZWQgZm9yICUwYzogbm8gb3RoZXIgd2lkdGhzIGFyZSBpbXBsZW1lbnRlZCAqKVxuICBsZXQgaW52YWxpZF9ub25udWxsX2NoYXJfd2lkdGggc3RyX2luZCA9XG4gICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBzdHJfaW5kXG4gICAgICBcIm5vbi16ZXJvIHdpZHRocyBhcmUgdW5zdXBwb3J0ZWQgZm9yICVjIGNvbnZlcnNpb25zXCJcbiAgaW5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIG9wdGlvbiBkZXBlbmRlbmN5XG4gICAgIHByb2JsZW0uICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IHN0cl9pbmQgYyBzID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAnJWMnIHdpdGhvdXQgJXNcIlxuICAgICAgc3RyIHN0cl9pbmQgYyBzXG4gIGluXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIHVuZXhwZWN0ZWRcbiAgICAgY2hhcmFjdGVyLiAqKVxuICBsZXQgZXhwZWN0ZWRfY2hhcmFjdGVyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZCA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlcyBleHBlY3RlZCwgcmVhZCAlQ1wiXG4gICAgICBzdHIgc3RyX2luZCBleHBlY3RlZCByZWFkXG4gIGluXG5cbiAgKCogUGFyc2UgdGhlIHN0cmluZyBmcm9tIGJlZ19pbmQgKGluY2x1ZGVkKSB0byBlbmRfaW5kIChleGNsdWRlZCkuICopXG4gIGxldCByZWMgcGFyc2UgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gYmVnX2luZCBlbmRfaW5kIC0+IHBhcnNlX2xpdGVyYWwgYmVnX2luZCBiZWdfaW5kIGVuZF9pbmRcblxuICAoKiBSZWFkIGxpdGVyYWwgY2hhcmFjdGVycyB1cCB0byAnJScgb3IgJ0AnIHNwZWNpYWwgY2hhcmFjdGVycy4gKilcbiAgYW5kIHBhcnNlX2xpdGVyYWwgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGxpdF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIEVuZF9vZl9mb3JtYXQgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2Zvcm1hdCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgZm10X3Jlc3RcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2VfYWZ0ZXJfYXQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8IF8gLT5cbiAgICAgICAgcGFyc2VfbGl0ZXJhbCBsaXRfc3RhcnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG5cbiAgKCogUGFyc2UgYSBmb3JtYXQgYWZ0ZXIgJyUnICopXG4gIGFuZCBwYXJzZV9mb3JtYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBlbmRfaW5kIC0+IHBhcnNlX2lnbiBwY3RfaW5kIChwY3RfaW5kICsgMSkgZW5kX2luZFxuXG4gIGFuZCBwYXJzZV9pZ24gOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ18nIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgKHN0cl9pbmQrMSkgZW5kX2luZCB0cnVlXG4gICAgICB8IF8gLT4gcGFyc2VfZmxhZ3MgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgZmFsc2VcblxuICBhbmQgcGFyc2VfZmxhZ3MgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmJcbiAgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgaWduIC0+XG4gICAgbGV0IHplcm8gPSByZWYgZmFsc2UgYW5kIG1pbnVzID0gcmVmIGZhbHNlXG4gICAgYW5kIHBsdXMgPSByZWYgZmFsc2UgYW5kIHNwYWNlID0gcmVmIGZhbHNlXG4gICAgYW5kIGhhc2ggPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgc2V0X2ZsYWcgc3RyX2luZCBmbGFnID1cbiAgICAgICgqIGluIGxlZ2FjeSBtb2RlLCBkdXBsaWNhdGUgZmxhZ3MgYXJlIGFjY2VwdGVkICopXG4gICAgICBpZiAhZmxhZyAmJiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIGR1cGxpY2F0ZSBmbGFnICVDXCJcbiAgICAgICAgICBzdHIgc3RyX2luZCBzdHIuW3N0cl9pbmRdO1xuICAgICAgZmxhZyA6PSB0cnVlO1xuICAgIGluXG4gICAgbGV0IHJlYyByZWFkX2ZsYWdzIHN0cl9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnMCcgLT4gc2V0X2ZsYWcgc3RyX2luZCB6ZXJvOyAgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICctJyAtPiBzZXRfZmxhZyBzdHJfaW5kIG1pbnVzOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJysnIC0+IHNldF9mbGFnIHN0cl9pbmQgcGx1czsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnIycgLT4gc2V0X2ZsYWcgc3RyX2luZCBoYXNoOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyAnIC0+IHNldF9mbGFnIHN0cl9pbmQgc3BhY2U7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmRcbiAgICAgICAgICAhemVybyAhbWludXMgIXBsdXMgIWhhc2ggIXNwYWNlIGlnblxuICAgICAgZW5kXG4gICAgaW5cbiAgICByZWFkX2ZsYWdzIHN0cl9pbmRcblxuICAoKiBUcnkgdG8gcmVhZCBhIGRpZ2l0YWwgb3IgYSAnKicgcGFkZGluZy4gKilcbiAgYW5kIHBhcnNlX3BhZGRpbmcgOiB0eXBlIGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCB6ZXJvIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYWR0eSA9IG1hdGNoIHplcm8sIG1pbnVzIHdpdGhcbiAgICAgIHwgZmFsc2UsIGZhbHNlIC0+IFJpZ2h0XG4gICAgICB8IGZhbHNlLCB0cnVlICAtPiBMZWZ0XG4gICAgICB8ICB0cnVlLCBmYWxzZSAtPiBaZXJvc1xuICAgICAgfCAgdHJ1ZSwgdHJ1ZSAgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGVmdFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnLScgXCIwXCIgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgIGxldCBuZXdfaW5kLCB3aWR0aCA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgKExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZVxuICAgICAgICBpZ24gKEFyZ19wYWRkaW5nIHBhZHR5KVxuICAgIHwgXyAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgICAgfCBMZWZ0ICAtPlxuICAgICAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy0nIFwicGFkZGluZ1wiO1xuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICB8IFplcm9zIC0+XG4gICAgICAgICAoKiBhICcwJyBwYWRkaW5nIGluZGljYXRpb24gbm90IGZvbGxvd2VkIGJ5IGFueXRoaW5nIHNob3VsZFxuICAgICAgICAgICBiZSBpbnRlcnByZXRlZCBhcyBhIFJpZ2h0IHBhZGRpbmcgb2Ygd2lkdGggMC4gVGhpcyBpcyB1c2VkXG4gICAgICAgICAgIGJ5IHNjYW5uaW5nIGNvbnZlcnNpb25zICUwcyBhbmQgJTBjICopXG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIChMaXRfcGFkZGluZyAoUmlnaHQsIDApKVxuICAgICAgfCBSaWdodCAtPlxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICBlbmRcblxuICAoKiBJcyBwcmVjaXNpb24gZGVmaW5lZD8gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3BhZGRpbmcgOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnLicgLT5cbiAgICAgIHBhcnNlX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIHBhZFxuICAgIHwgc3ltYiAtPlxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBOb19wcmVjaXNpb24gcGFkIHN5bWJcblxuICAoKiBSZWFkIHRoZSBkaWdpdGFsIG9yICcqJyBwcmVjaXNpb24uICopXG4gIGFuZCBwYXJzZV9wcmVjaXNpb24gOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZCA9XG4gICAgICBsZXQgbmV3X2luZCwgcHJlYyA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBuZXdfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gcHJlYykgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfbGl0ZXJhbCBtaW51cyBzdHJfaW5kXG4gICAgfCAoJysnIHwgJy0nKSBhcyBzeW1iIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+XG4gICAgICAoKiBMZWdhY3kgbW9kZSB3b3VsZCBhY2NlcHQgYW5kIGlnbm9yZSAnKycgb3IgJy0nIGJlZm9yZSB0aGVcbiAgICAgICAgIGludGVnZXIgZGVzY3JpYmluZyB0aGUgZGVzaXJlZCBwcmVjaXNpb247IG5vdGUgdGhhdCB0aGlzXG4gICAgICAgICBjYW5ub3QgaGFwcGVuIGZvciBwYWRkaW5nIHdpZHRoLCBhcyAnKycgYW5kICctJyBhbHJlYWR5IGhhdmVcbiAgICAgICAgIGEgc2VtYW50aWNzIHRoZXJlLlxuXG4gICAgICAgICBUaGF0IHNhaWQsIHRoZSBpZGVhIChzdXBwb3J0ZWQgYnkgdGhpcyB0d2VhaykgdGhhdCB3aWR0aCBhbmRcbiAgICAgICAgIHByZWNpc2lvbiBsaXRlcmFscyBhcmUgXCJpbnRlZ2VyIGxpdGVyYWxzXCIgaW4gdGhlIE9DYW1sIHNlbnNlIGlzXG4gICAgICAgICBzdGlsbCBibGF0YW50bHkgd3JvbmcsIGFzIDEyM180NTYgb3IgMHhGRiBhcmUgcmVqZWN0ZWQuICopXG4gICAgICBwYXJzZV9saXRlcmFsIChtaW51cyB8fCBzeW1iID0gJy0nKSAoc3RyX2luZCArIDEpXG4gICAgfCAnKicgLT5cbiAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIHBhZCBBcmdfcHJlY2lzaW9uXG4gICAgfCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBub3RlIHRoYXQgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRpZCBub3QgaWdub3JlICcuJyB3aXRob3V0XG4gICAgICAgICAgIGEgbnVtYmVyIChhcyBpdCBkb2VzIGZvciBwYWRkaW5nIGluZGljYXRpb25zKSwgYnV0XG4gICAgICAgICAgIGludGVycHJldHMgaXQgYXMgJy4wJyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIHBhZCAoTGl0X3ByZWNpc2lvbiAwKVxuICAgICAgZWxzZVxuICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy4nIFwicHJlY2lzaW9uXCJcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiA6IHR5cGUgeCB5IHogdCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgcHJlYyAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2NvbnYgKHR5cGUgdSkgKHR5cGUgdikgKHBhZHByZWMgOiAodSwgdikgcGFkZGluZykgPVxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBwcmVjIHBhZHByZWMgc3RyLltzdHJfaW5kXSBpblxuICAgICgqIGluIGxlZ2FjeSBtb2RlLCBzb21lIGZvcm1hdHMgKCVzIGFuZCAlUykgYWNjZXB0IGEgd2VpcmQgbWl4IG9mXG4gICAgICAgcGFkZGluZyBhbmQgcHJlY2lzaW9uLCB3aGljaCBpcyBtZXJnZWQgYXMgYSBzaW5nbGUgcGFkZGluZ1xuICAgICAgIGluZm9ybWF0aW9uLiBGb3IgZXhhbXBsZSwgaW4gJS4xMHMgdGhlIHByZWNpc2lvbiBpcyBpbXBsaWNpdGx5XG4gICAgICAgdW5kZXJzdG9vZCBhcyBwYWRkaW5nICUxMHMsIGJ1dCB0aGUgbGVmdC1wYWRkaW5nIGNvbXBvbmVudCBtYXlcbiAgICAgICBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgbGVmdCBwYWRkaW5nIG9yIGEgbmVnYXRpdmUgcHJlY2lzaW9uOlxuICAgICAgICUtLjNzIGFuZCAlLi0zcyBhcmUgZXF1aXZhbGVudCB0byAlLTNzICopXG4gICAgbWF0Y2ggcGFkIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgLT4gKFxuICAgICAgbWF0Y2ggbWludXMsIHByZWMgd2l0aFxuICAgICAgICB8IF8sIE5vX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IE5vX3BhZGRpbmdcbiAgICAgICAgfCBmYWxzZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChSaWdodCwgbikpXG4gICAgICAgIHwgdHJ1ZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChMZWZ0LCBuKSlcbiAgICAgICAgfCBmYWxzZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBSaWdodClcbiAgICAgICAgfCB0cnVlLCBBcmdfcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgKEFyZ19wYWRkaW5nIExlZnQpXG4gICAgKVxuICAgIHwgcGFkIC0+IHBhcnNlX2NvbnYgcGFkXG5cbiAgKCogQ2FzZSBhbmFseXNpcyBvbiBjb252ZXJzaW9uLiAqKVxuICBhbmQgcGFyc2VfY29udmVyc2lvbiA6IHR5cGUgeCB5IHogdCB1IHYgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gKHgsIHkpIHBhZGRpbmcgLT5cbiAgICAgICAgKHosIHQpIHByZWNpc2lvbiAtPiAodSwgdikgcGFkZGluZyAtPiBjaGFyIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgcGFkcHJlYyBzeW1iIC0+XG4gICAgKCogRmxhZ3MgdXNlZCB0byBjaGVjayBvcHRpb24gdXNhZ2VzL2NvbXBhdGliaWxpdGllcy4gKilcbiAgICBsZXQgcGx1c191c2VkICA9IHJlZiBmYWxzZSBhbmQgaGFzaF91c2VkID0gcmVmIGZhbHNlXG4gICAgYW5kIHNwYWNlX3VzZWQgPSByZWYgZmFsc2UgYW5kIGlnbl91c2VkICAgPSByZWYgZmFsc2VcbiAgICBhbmQgcGFkX3VzZWQgICA9IHJlZiBmYWxzZSBhbmQgcHJlY191c2VkICA9IHJlZiBmYWxzZSBpblxuXG4gICAgKCogQWNjZXNzIHRvIG9wdGlvbnMsIHVwZGF0ZSBmbGFncy4gKilcbiAgICBsZXQgZ2V0X3BsdXMgICAgKCkgPSBwbHVzX3VzZWQgIDo9IHRydWU7IHBsdXNcbiAgICBhbmQgZ2V0X2hhc2ggICAoKSA9IGhhc2hfdXNlZCA6PSB0cnVlOyBoYXNoXG4gICAgYW5kIGdldF9zcGFjZSAgICgpID0gc3BhY2VfdXNlZCA6PSB0cnVlOyBzcGFjZVxuICAgIGFuZCBnZXRfaWduICAgICAoKSA9IGlnbl91c2VkICAgOj0gdHJ1ZTsgaWduXG4gICAgYW5kIGdldF9wYWQgICAgICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRcbiAgICBhbmQgZ2V0X3ByZWMgICAgKCkgPSBwcmVjX3VzZWQgIDo9IHRydWU7IHByZWNcbiAgICBhbmQgZ2V0X3BhZHByZWMgKCkgPSBwYWRfdXNlZCAgIDo9IHRydWU7IHBhZHByZWMgaW5cblxuICAgIGxldCBnZXRfaW50X3BhZCAoKSA6ICh4LHkpIHBhZGRpbmcgPVxuICAgICAgKCogJTUuM2QgaXMgYWNjZXB0ZWQgYW5kIG1lYW5pbmdmdWw6IHBhZCB0byBsZW5ndGggNSB3aXRoXG4gICAgICAgICBzcGFjZXMsIGJ1dCBmaXJzdCBwYWQgd2l0aCB6ZXJvcyB1cHRvIGxlbmd0aCAzICgwLXBhZGRpbmdcbiAgICAgICAgIGlzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBcInByZWNpc2lvblwiIGZvciBpbnRlZ2VyIGZvcm1hdHMpLlxuXG4gICAgICAgICAlMDUuM2QgaXMgcmVkdW5kYW50OiBwYWQgdG8gbGVuZ3RoIDUgKndpdGggemVyb3MqLCBidXRcbiAgICAgICAgIGZpcnN0IHBhZCB3aXRoIHplcm9zLi4uIFRvIGFkZCBpbnN1bHQgdG8gdGhlIGluanVyeSwgdGhlXG4gICAgICAgICBsZWdhY3kgaW1wbGVtZW50YXRpb24gaWdub3JlcyB0aGUgMC1wYWRkaW5nIGluZGljYXRpb24gYW5kXG4gICAgICAgICBkb2VzIHRoZSA1IHBhZGRpbmcgd2l0aCBzcGFjZXMgaW5zdGVhZC4gV2UgcmV1c2UgdGhpc1xuICAgICAgICAgaW50ZXJwcmV0YXRpb24gZm9yIGNvbXBhdGliaWxpdHksIGJ1dCBzdGF0aWNhbGx5IHJlamVjdCB0aGlzXG4gICAgICAgICBmb3JtYXQgd2hlbiB0aGUgbGVnYWN5IG1vZGUgaXMgZGlzYWJsZWQsIHRvIHByb3RlY3Qgc3RyaWN0XG4gICAgICAgICB1c2VycyBmcm9tIHRoaXMgY29ybmVyIGNhc2UuICopXG4gICAgICAgbWF0Y2ggZ2V0X3BhZCAoKSwgZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgICAgfCBwYWQsIE5vX3ByZWNpc2lvbiAtPiBwYWRcbiAgICAgICAgIHwgTm9fcGFkZGluZywgXyAgICAgLT4gTm9fcGFkZGluZ1xuICAgICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIG4pLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgbilcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MsIF8gLT5cbiAgICAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgXyBhcyBwYWQsIF8gLT4gcGFkXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZCBpblxuXG4gICAgKCogQ2hlY2sgdGhhdCBwYWR0eSA8PiBaZXJvcy4gKilcbiAgICBsZXQgY2hlY2tfbm9fMCBzeW1iICh0eXBlIGEgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA6IChhLGIpIHBhZGRpbmcgPVxuICAgICAgbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBwYWRcbiAgICAgIHwgTGl0X3BhZGRpbmcgKChMZWZ0IHwgUmlnaHQpLCBfKSAtPiBwYWRcbiAgICAgIHwgQXJnX3BhZGRpbmcgKExlZnQgfCBSaWdodCkgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIjBcIlxuICAgIGluXG5cbiAgICAoKiBHZXQgcGFkZGluZyBhcyBhIHBhZF9vcHRpb24gKHNlZSBcIiVfXCIsIFwiJXtcIiwgXCIlKFwiIGFuZCBcIiVbXCIpLlxuICAgICAgIChubyBuZWVkIGZvciBsZWdhY3kgbW9kZSB0d2Vha2luZywgdGhvc2Ugd2VyZSByZWplY3RlZCBieSB0aGVcbiAgICAgICBsZWdhY3kgcGFyc2VyIGFzIHdlbGwpICopXG4gICAgbGV0IG9wdF9vZl9wYWQgYyAodHlwZSBhKSAodHlwZSBiKSAocGFkIDogKGEsIGIpIHBhZGRpbmcpID0gbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBOb25lXG4gICAgICB8IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpIC0+IFNvbWUgd2lkdGhcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJzAnXCJcbiAgICAgIHwgTGl0X3BhZGRpbmcgKExlZnQsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBTb21lIHdpZHRoXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInLSdcIlxuICAgICAgfCBBcmdfcGFkZGluZyBfIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJyonXCJcbiAgICBpblxuICAgIGxldCBnZXRfcGFkX29wdCBjID0gb3B0X29mX3BhZCBjIChnZXRfcGFkICgpKSBpblxuICAgIGxldCBnZXRfcGFkcHJlY19vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZHByZWMgKCkpIGluXG5cbiAgICAoKiBHZXQgcHJlY2lzaW9uIGFzIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfZlwiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBnZXRfcHJlY19vcHQgKCkgPSBtYXRjaCBnZXRfcHJlYyAoKSB3aXRoXG4gICAgICB8IE5vX3ByZWNpc2lvbiAgICAgICAtPiBOb25lXG4gICAgICB8IExpdF9wcmVjaXNpb24gbmRlYyAtPiBTb21lIG5kZWNcbiAgICAgIHwgQXJnX3ByZWNpc2lvbiAgICAgIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKidcIlxuICAgIGluXG5cbiAgICBsZXQgZm10X3Jlc3VsdCA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJywnIC0+XG4gICAgICBwYXJzZSBzdHJfaW5kIGVuZF9pbmRcbiAgICB8ICdjJyAtPlxuICAgICAgbGV0IGNoYXJfZm9ybWF0IGZtdF9yZXN0ID0gKCogJWMgKilcbiAgICAgICAgaWYgZ2V0X2lnbiAoKVxuICAgICAgICB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKENoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IHNjYW5fZm9ybWF0IGZtdF9yZXN0ID0gKCogJTBjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3NjYW5fbmV4dF9jaGFyLCBmbXRfcmVzdCkpXG4gICAgICAgIGVsc2UgRm10X0VCQiAoU2Nhbl9uZXh0X2NoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIGdldF9wYWRfb3B0ICdjJyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBjaGFyX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgMCAtPiBzY2FuX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgX24gLT5cbiAgICAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvclxuICAgICAgICAgICB0aGVuIGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmRcbiAgICAgICAgICAgZWxzZSAoKiBsZWdhY3kgaWdub3JlcyAlYyB3aWR0aHMgKikgY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgIGVuZFxuICAgIHwgJ0MnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2FtbF9jaGFyLGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoQ2FtbF9jaGFyIGZtdF9yZXN0KVxuICAgIHwgJ3MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoU3RyaW5nIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ1MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2NhbWxfc3RyaW5nIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChDYW1sX3N0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPlxuICAgICAgbGV0IGljb252ID0gY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgIChnZXRfc3BhY2UgKCkpIHN5bWIgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ04nIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBUb2tlbl9jb3VudGVyIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSlcbiAgICB8ICdsJyB8ICduJyB8ICdMJyB3aGVuIHN0cl9pbmQ9ZW5kX2luZCB8fCBub3QgKGlzX2ludF9iYXNlIHN0ci5bc3RyX2luZF0pIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBjb3VudGVyX29mX2NoYXIgc3ltYiBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDMyIChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50MzIgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICduJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKVxuICAgICAgICAgIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnTCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDY0IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50NjQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdmJyB8ICdlJyB8ICdFJyB8ICdnJyB8ICdHJyB8ICdGJyB8ICdoJyB8ICdIJyAtPlxuICAgICAgbGV0IGZjb252ID1cbiAgICAgICAgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZFxuICAgICAgICAgIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKSAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mbG9hdCAoZ2V0X3BhZF9vcHQgJ18nLCBnZXRfcHJlY19vcHQgKCkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEZsb2F0IChmY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnYicgfCAnQicgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfYm9vbCAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQm9vbCAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdhJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEFscGhhIGZtdF9yZXN0KVxuICAgIHwgJ3QnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoVGhldGEgZm10X3Jlc3QpXG4gICAgfCAncicgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoUmVhZGVyIGZtdF9yZXN0KVxuICAgIHwgJyEnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRmx1c2ggZm10X3Jlc3QpXG4gICAgfCAoJyUnIHwgJ0AnKSBhcyBjIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsIChjLCBmbXRfcmVzdCkpXG4gICAgfCAneycgLT5cbiAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kICd9JyBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3ViX2VuZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm10dHkgPSBmbXR0eV9vZl9mbXQgc3ViX2ZtdCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mb3JtYXRfYXJnIChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfYXJnIChnZXRfcGFkX29wdCAneycsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJygnIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnKScgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCBzdWJfZW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfc3Vic3QgKGdldF9wYWRfb3B0ICcoJywgc3ViX2ZtdHR5LCBmbXRfcmVzdCkpXG4gICAgfCAnWycgLT5cbiAgICAgIGxldCBuZXh0X2luZCwgY2hhcl9zZXQgPSBwYXJzZV9jaGFyX3NldCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnXycsIGNoYXJfc2V0KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fY2hhcl9zZXQgKGdldF9wYWRfb3B0ICdbJywgY2hhcl9zZXQsIGZtdF9yZXN0KSlcbiAgICB8ICctJyB8ICcrJyB8ICcjJyB8ICcgJyB8ICdfJyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgZmxhZyAlQyBpcyBvbmx5IGFsbG93ZWQgYWZ0ZXIgdGhlICclJScsIGJlZm9yZSBwYWRkaW5nIGFuZCBwcmVjaXNpb25cIlxuICAgICAgICBzdHIgcGN0X2luZCBzeW1iXG4gICAgfCBfIC0+XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICBpbnZhbGlkIGNvbnZlcnNpb24gXFxcIiUlJWNcXFwiXCIgc3RyIChzdHJfaW5kIC0gMSkgc3ltYlxuICAgIGluXG4gICAgKCogQ2hlY2sgZm9yIHVudXNlZCBvcHRpb25zLCBhbmQgcmVqZWN0IHRoZW0gYXMgaW5jb21wYXRpYmxlLlxuXG4gICAgICAgU3VjaCBjaGVja3MgbmVlZCB0byBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSwgYXMgdGhlIGxlZ2FjeVxuICAgICAgIHBhcnNlciBzaWxlbnRseSBpZ25vcmVkIGluY29tcGF0aWJsZSBmbGFncy4gKilcbiAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW4gYmVnaW5cbiAgICBpZiBub3QgIXBsdXNfdXNlZCAmJiBwbHVzIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCI7XG4gICAgaWYgbm90ICFoYXNoX3VzZWQgJiYgaGFzaCB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiO1xuICAgIGlmIG5vdCAhc3BhY2VfdXNlZCAmJiBzcGFjZSB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicgJ1wiO1xuICAgIGlmIG5vdCAhcGFkX3VzZWQgICYmIFBhZGRpbmdfRUJCIHBhZCA8PiBQYWRkaW5nX0VCQiBOb19wYWRkaW5nIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiYHBhZGRpbmcnXCI7XG4gICAgaWYgbm90ICFwcmVjX3VzZWQgJiYgUHJlY2lzaW9uX0VCQiBwcmVjIDw+IFByZWNpc2lvbl9FQkIgTm9fcHJlY2lzaW9uIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAoaWYgaWduIHRoZW4gJ18nIGVsc2Ugc3ltYilcbiAgICAgICAgXCJgcHJlY2lzaW9uJ1wiO1xuICAgIGlmIGlnbiAmJiBwbHVzIHRoZW4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICdfJyBcIicrJ1wiO1xuICAgIGVuZDtcbiAgICAoKiB0aGlzIGxhc3QgdGVzdCBtdXN0IG5vdCBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSxcbiAgICAgICBhcyBpZ25vcmluZyBpdCB3b3VsZCB0eXBpY2FsbHkgcmVzdWx0IGluIGEgZGlmZmVyZW50IHR5cGluZ1xuICAgICAgIHRoYW4gd2hhdCB0aGUgbGVnYWN5IHBhcnNlciB1c2VkICopXG4gICAgaWYgbm90ICFpZ25fdXNlZCAmJiBpZ24gdGhlblxuICAgICAgYmVnaW4gbWF0Y2ggc3ltYiB3aXRoXG4gICAgICAgICgqIGFyZ3VtZW50LWxlc3MgZm9ybWF0cyBjYW4gc2FmZWx5IGJlIGlnbm9yZWQgaW4gbGVnYWN5IG1vZGUgKilcbiAgICAgICAgfCAoJ0AnIHwgJyUnIHwgJyEnIHwgJywnKSB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIidfJ1wiXG4gICAgICBlbmQ7XG4gICAgZm10X3Jlc3VsdFxuXG4gICgqIFBhcnNlIGZvcm1hdHRpbmcgaW5mb3JtYXRpb24gKGFmdGVyICdAJykuICopXG4gIGFuZCBwYXJzZV9hZnRlcl9hdCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoJ0AnLCBFbmRfb2ZfZm9ybWF0KSlcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ1snIC0+XG4gICAgICAgIHBhcnNlX3RhZyBmYWxzZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV9ib3gsIGZtdF9yZXN0KSlcbiAgICAgIHwgJ3snIC0+XG4gICAgICAgIHBhcnNlX3RhZyB0cnVlIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnfScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKENsb3NlX3RhZywgZm10X3Jlc3QpKVxuICAgICAgfCAnLCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAsXCIsIDAsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQnJlYWsgKFwiQCBcIiwgMSwgMCksIGZtdF9yZXN0KSlcbiAgICAgIHwgJzsnIC0+XG4gICAgICAgIHBhcnNlX2dvb2RfYnJlYWsgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICc/JyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRkZsdXNoLCBmbXRfcmVzdCkpXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGb3JjZV9uZXdsaW5lLCBmbXRfcmVzdCkpXG4gICAgICB8ICcuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRmx1c2hfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgcGFyc2VfbWFnaWNfc2l6ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChFc2NhcGVkX2F0LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyB3aGVuIHN0cl9pbmQgKyAxIDwgZW5kX2luZCAmJiBzdHIuW3N0cl9pbmQgKyAxXSA9ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMikgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9wZXJjZW50LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgZm10X3Jlc3QpKVxuICAgICAgfCBjIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljIGMsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPG5hbWU+IGFmdGVyIFwiQHtcIiBvciBcIkBbXCIuICopXG4gIGFuZCBwYXJzZV90YWcgOiB0eXBlIGUgZiAuIGJvb2wgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBpc19vcGVuX3RhZyBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICB0cnlcbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICc8JyAtPlxuICAgICAgICBsZXQgaW5kID0gU3RyaW5nLmluZGV4X2Zyb20gc3RyIChzdHJfaW5kICsgMSkgJz4nIGluXG4gICAgICAgIGlmIGluZCA+PSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIHN0cl9pbmQgKGluZCAtIHN0cl9pbmQgKyAxKSBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChpbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIChpbmQgKyAxKSBpblxuICAgICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoc3ViX2ZtdCwgc3ViX3N0cikgaW5cbiAgICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICAgIGlmIGlzX29wZW5fdGFnIHRoZW4gT3Blbl90YWcgc3ViX2Zvcm1hdCBlbHNlIE9wZW5fYm94IHN1Yl9mb3JtYXQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcbiAgICAgIHwgXyAtPlxuICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm9ybWF0ID0gRm9ybWF0IChFbmRfb2ZfZm9ybWF0LCBcIlwiKSBpblxuICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZywgZm10X3Jlc3QpKVxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBvcHRpb25hbCA8d2lkdGggb2Zmc2V0PiBhZnRlciBcIkA7XCIuICopXG4gIGFuZCBwYXJzZV9nb29kX2JyZWFrIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGxldCBuZXh0X2luZCwgZm9ybWF0dGluZ19saXQgPVxuICAgICAgdHJ5XG4gICAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHx8IHN0ci5bc3RyX2luZF0gPD4gJzwnIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3RyX2luZF8xID0gcGFyc2Vfc3BhY2VzIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfMV0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gKFxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHdpZHRoID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzEgZW5kX2luZCBpblxuICAgICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzNdIHdpdGhcbiAgICAgICAgICAgICAgfCAnPicgLT5cbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzMtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfMyArIDEsIEJyZWFrIChzLCB3aWR0aCwgMClcbiAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHN0cl9pbmRfNCwgb2Zmc2V0ID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzMgZW5kX2luZCBpblxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzUgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF80IGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBpZiBzdHIuW3N0cl9pbmRfNV0gPD4gJz4nIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQtMikgKHN0cl9pbmRfNS1zdHJfaW5kKzMpIGluXG4gICAgICAgICAgICAgICAgc3RyX2luZF81ICsgMSwgQnJlYWsgKHMsIHdpZHRoLCBvZmZzZXQpXG4gICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgKVxuICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPlxuICAgICAgICBzdHJfaW5kLCBCcmVhayAoXCJAO1wiLCAxLCAwKVxuICAgIGluXG4gICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgdGhlIHNpemUgaW4gYSA8bj4uICopXG4gIGFuZCBwYXJzZV9tYWdpY19zaXplIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIG1hdGNoXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgbGV0IHN0cl9pbmRfMiwgc2l6ZSA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICBsZXQgc3RyX2luZF8zID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfMiBlbmRfaW5kIGluXG4gICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzNdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kIC0gMikgKHN0cl9pbmRfMyAtIHN0cl9pbmQgKyAzKSBpblxuICAgICAgICAgIFNvbWUgKHN0cl9pbmRfMyArIDEsIE1hZ2ljX3NpemUgKHMsIHNpemUpKVxuICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgTm9uZVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKG5leHRfaW5kLCBmb3JtYXR0aW5nX2xpdCkgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKFNjYW5faW5kaWMgJzwnLCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgYW5kIGNvbnN0cnVjdCBhIGNoYXIgc2V0LiAqKVxuICBhbmQgcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuXG4gICAgbGV0IGNoYXJfc2V0ID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gICAgbGV0IGFkZF9jaGFyIGMgPVxuICAgICAgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGM7XG4gICAgaW5cbiAgICBsZXQgYWRkX3JhbmdlIGMgYycgPVxuICAgICAgZm9yIGkgPSBpbnRfb2ZfY2hhciBjIHRvIGludF9vZl9jaGFyIGMnIGRvXG4gICAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCAoY2hhcl9vZl9pbnQgaSk7XG4gICAgICBkb25lO1xuICAgIGluXG5cbiAgICBsZXQgZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kID1cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogJyUlJyBhbG9uZSBpcyBub3QgYWNjZXB0ZWQgaW4gY2hhcmFjdGVyIHNldHMsIFxcXG4gICAgICAgICB1c2UgJSUlJSBpbnN0ZWFkIGF0IHBvc2l0aW9uICVkLlwiIHN0ciBzdHJfaW5kXG4gICAgaW5cblxuICAgICgqIFBhcnNlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSBjaGFyIHNldC4gKilcbiAgICBsZXQgcmVjIHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbGV0IGMgPSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgICAoKiBQYXJzZSB0aGUgY29udGVudCBvZiBhIGNoYXIgc2V0IHVudGlsIHRoZSBmaXJzdCAnXScuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgc3RyX2luZCBlbmRfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBhZGRfY2hhciAnLSc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMgLT5cbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogVGVzdCBmb3IgcmFuZ2UgaW4gY2hhciBzZXQuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJy0nIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG4gICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIHdoZW4gYyA9ICclJyAtPlxuICAgICAgICBhZGRfY2hhciBjJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgaWYgYyA9ICclJyB0aGVuIGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZDtcbiAgICAgICAgKCogbm90ZSB0aGF0ICdAJyBhbG9uZSBpcyBhY2NlcHRlZCwgYXMgZG9uZSBieSB0aGUgbGVnYWN5XG4gICAgICAgICAgIGltcGxlbWVudGF0aW9uOyB0aGUgZG9jdW1lbnRhdGlvbiBzcGVjaWZpY2FsbHkgcmVxdWlyZXMgJUBcbiAgICAgICAgICAgc28gd2UgY291bGQgd2FybiBvbiB0aGF0ICopXG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGMnXG5cbiAgICAoKiBNYW5hZ2UgcmFuZ2UgaW4gY2hhciBzZXQgKGV4Y2VwdCBpZiB0aGUgJy0nIHRoZSBsYXN0IGNoYXIgYmVmb3JlICddJykgKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfbWludXMgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIC0+XG4gICAgICAgICAgICBhZGRfcmFuZ2UgYyBjJztcbiAgICAgICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kXG4gICAgICAgICAgfCBfIC0+IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZFxuICAgICAgICBlbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgaW5cbiAgICBsZXQgc3RyX2luZCwgcmV2ZXJzZSA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICAgIHwgJ14nIC0+IHN0cl9pbmQgKyAxLCB0cnVlXG4gICAgICAgIHwgXyAtPiBzdHJfaW5kLCBmYWxzZSBpblxuICAgIGxldCBuZXh0X2luZCA9IHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgIGxldCBjaGFyX3NldCA9IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCBpblxuICAgIG5leHRfaW5kLCAoaWYgcmV2ZXJzZSB0aGVuIHJldl9jaGFyX3NldCBjaGFyX3NldCBlbHNlIGNoYXJfc2V0KVxuXG4gICgqIENvbnN1bWUgYWxsIG5leHQgc3BhY2VzLCByYWlzZSBhbiBGYWlsdXJlIGlmIGVuZF9pbmQgaXMgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgaWYgc3RyLltzdHJfaW5kXSA9ICcgJyB0aGVuIHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgZWxzZSBzdHJfaW5kXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmUgaWYgZW5kX2luZCBpc1xuICAgICByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIGFjYyA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBhY2MgKiAxMCArIChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnKSBpblxuICAgICAgaWYgbmV3X2FjYyA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBpbnRlZ2VyICVkIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGltaXQgJWRcIlxuICAgICAgICAgIHN0ciBuZXdfYWNjIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgbmV3X2FjY1xuICAgIHwgXyAtPiBzdHJfaW5kLCBhY2NcblxuICAoKiBSZWFkIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW50ZWdlciBmcm9tIHRoZSBzdHJpbmcsIHJhaXNlIGEgRmFpbHVyZVxuICAgICBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9pbnRlZ2VyIHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDBcbiAgICB8ICctJyAtPiAoXG4gICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICBsZXQgbmV4dF9pbmQsIG4gPSBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgMCBpblxuICAgICAgICBuZXh0X2luZCwgLW5cbiAgICAgIHwgYyAtPlxuICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImRpZ2l0XCIgY1xuICAgIClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQWRkIGEgbGl0ZXJhbCB0byBhIGZvcm1hdCBmcm9tIGEgbGl0ZXJhbCBjaGFyYWN0ZXIgc3ViLXNlcXVlbmNlLiAqKVxuICBhbmQgYWRkX2xpdGVyYWwgOiB0eXBlIGEgZCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiAoYSwgXywgXywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBmbXQgLT4gbWF0Y2ggc3RyX2luZCAtIGxpdF9zdGFydCB3aXRoXG4gICAgfCAwICAgIC0+IEZtdF9FQkIgZm10XG4gICAgfCAxICAgIC0+IEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoc3RyLltsaXRfc3RhcnRdLCBmbXQpKVxuICAgIHwgc2l6ZSAtPiBGbXRfRUJCIChTdHJpbmdfbGl0ZXJhbCAoU3RyaW5nLnN1YiBzdHIgbGl0X3N0YXJ0IHNpemUsIGZtdCkpXG5cbiAgKCogU2VhcmNoIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3ViLWZvcm1hdFxuICAgICAoaS5lLiB0aGUgY29ycmVzcG9uZGluZyBcIiV9XCIgb3IgXCIlKVwiKSAqKVxuICBhbmQgc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogdW5jbG9zZWQgc3ViLWZvcm1hdCwgXFxcbiAgICAgICAgIGV4cGVjdGVkIFxcXCIlJSVjXFxcIiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkXCIgc3RyIGMgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICclJyAtPlxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBpZiBzdHIuW3N0cl9pbmQgKyAxXSA9IGMgdGhlbiAoKiBFbmQgb2YgZm9ybWF0IGZvdW5kICopIHN0cl9pbmQgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgIHwgJ18nIC0+XG4gICAgICAgICAgKCogU2VhcmNoIGZvciBcIiVfKFwiIG9yIFwiJV97XCIuICopXG4gICAgICAgICAgaWYgc3RyX2luZCArIDIgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMl0gd2l0aFxuICAgICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnfScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgICB8IF8gLT4gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kIGNcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCAneycgLT5cbiAgICAgICAgICAoKiAley4uLiV9IHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAoKiAlKC4uLiUpIHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJyknIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnfScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJSguLi4lfS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnKSdcIiAnfSdcbiAgICAgICAgfCAnKScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJXsuLi4lKS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnfSdcIiAnKSdcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgZW5kXG4gICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgKCogQ2hlY2sgaWYgc3ltYiBpcyBhIHZhbGlkIGludCBjb252ZXJzaW9uIGFmdGVyIFwiJWxcIiwgXCIlblwiIG9yIFwiJUxcIiAqKVxuICBhbmQgaXNfaW50X2Jhc2Ugc3ltYiA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJ2QnIHwgJ2knIHwgJ3gnIHwgJ1gnIHwgJ28nIHwgJ3UnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICAoKiBDb252ZXJ0IGEgY2hhciAobCwgbiBvciBMKSB0byBpdHMgYXNzb2NpYXRlZCBjb3VudGVyLiAqKVxuICBhbmQgY291bnRlcl9vZl9jaGFyIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdsJyAtPiBMaW5lX2NvdW50ZXIgIHwgJ24nIC0+IENoYXJfY291bnRlclxuICAgIHwgJ0wnIC0+IFRva2VuX2NvdW50ZXIgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHN5bWIpIHRvIGl0cyBhc3NvY2lhdGVkIGludF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIG1hdGNoIHBsdXMsIGhhc2gsIHNwYWNlLCBzeW1iIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdkJyAtPiBJbnRfZCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnaScgLT4gSW50X2lcbiAgICB8IGZhbHNlLCBmYWxzZSwgIHRydWUsICdkJyAtPiBJbnRfc2QgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnaScgLT4gSW50X3NpXG4gICAgfCAgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X3BkIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9waVxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3gnIC0+IEludF94ICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdYJyAtPiBJbnRfWFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3gnIC0+IEludF9DeCB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdYJyAtPiBJbnRfQ1hcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdvJyAtPiBJbnRfb1xuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ28nIC0+IEludF9Db1xuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3UnIC0+IEludF91XG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnZCcgLT4gSW50X0NkXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnaScgLT4gSW50X0NpXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAndScgLT4gSW50X0N1XG4gICAgfCBfLCB0cnVlLCBfLCAneCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0N4XG4gICAgfCBfLCB0cnVlLCBfLCAnWCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NYXG4gICAgfCBfLCB0cnVlLCBfLCAnbycgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NvXG4gICAgfCBfLCB0cnVlLCBfLCAoJ2QnIHwgJ2knIHwgJ3UnKSAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgZmFsc2Ugc3BhY2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiXG4gICAgfCB0cnVlLCBfLCB0cnVlLCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBwbHVzIGFuZCBzcGFjZTogbGVnYWN5IGltcGxlbWVudGF0aW9uIHByZWZlcnMgcGx1cyAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggZmFsc2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCB0cnVlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIlxuICAgIHwgdHJ1ZSwgXywgZmFsc2UsIF8gICAgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBmYWxzZSBoYXNoIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInKydcIlxuICAgIHwgZmFsc2UsIF8sIGZhbHNlLCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHNwYWNlLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBmbG9hdF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggc3BhY2Ugc3ltYiA9XG4gICAgbGV0IGZsYWcgPSBtYXRjaCBwbHVzLCBzcGFjZSB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19cbiAgICB8IGZhbHNlLCAgdHJ1ZSAtPiBGbG9hdF9mbGFnX3NcbiAgICB8ICB0cnVlLCBmYWxzZSAtPiBGbG9hdF9mbGFnX3BcbiAgICB8ICB0cnVlLCAgdHJ1ZSAtPlxuICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEZsb2F0X2ZsYWdfcFxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCIgaW5cbiAgICBsZXQga2luZCA9IG1hdGNoIGhhc2gsIHN5bWIgd2l0aFxuICAgIHwgXywgJ2YnIC0+IEZsb2F0X2ZcbiAgICB8IF8sICdlJyAtPiBGbG9hdF9lXG4gICAgfCBfLCAnRScgLT4gRmxvYXRfRVxuICAgIHwgXywgJ2cnIC0+IEZsb2F0X2dcbiAgICB8IF8sICdHJyAtPiBGbG9hdF9HXG4gICAgfCBfLCAnaCcgLT4gRmxvYXRfaFxuICAgIHwgXywgJ0gnIC0+IEZsb2F0X0hcbiAgICB8IGZhbHNlLCAnRicgLT4gRmxvYXRfRlxuICAgIHwgdHJ1ZSwgJ0YnIC0+IEZsb2F0X0NGXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSBpblxuICAgIGZsYWcsIGtpbmRcblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgaW5jb21wYXRpYmxlIG9wdGlvbnMuKilcbiAgYW5kIGluY29tcGF0aWJsZV9mbGFnIDogdHlwZSBhIC4gaW50IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZyAtPiBhID1cbiAgICBmdW4gcGN0X2luZCBzdHJfaW5kIHN5bWIgb3B0aW9uIC0+XG4gICAgICBsZXQgc3ViZm10ID0gU3RyaW5nLnN1YiBzdHIgcGN0X2luZCAoc3RyX2luZCAtIHBjdF9pbmQpIGluXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICAlcyBpcyBpbmNvbXBhdGlibGUgd2l0aCAnJWMnIGluIHN1Yi1mb3JtYXQgJVNcIlxuICAgICAgICBzdHIgcGN0X2luZCBvcHRpb24gc3ltYiBzdWJmbXRcblxuICBpbiBwYXJzZSAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICgqIEd1YXJkZWQgc3RyaW5nIHRvIGZvcm1hdCBjb252ZXJzaW9ucyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgc3RyIGZtdHR5ID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCBmbXR0eSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIlxuICAgICAgc3RyIChzdHJpbmdfb2ZfZm10dHkgZm10dHkpXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgY29tcGF0aWJsZSB3aXRoIGFuIG90aGVyIGZvcm1hdC4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0IHN0ciAoRm9ybWF0IChmbXQnLCBzdHInKSkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IChmbXR0eV9vZl9mbXQgZm10JyksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCIgc3RyIHN0cidcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgWGF2aWVyIExlcm95IGFuZCBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbmxldCBrZnByaW50ZiBrIG8gKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIG8gYWNjOyBrIG8pIEVuZF9vZl9hY2MgZm10XG5sZXQga2JwcmludGYgayBiIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gYnVmcHV0X2FjYyBiIGFjYzsgayBiKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGlrZnByaW50ZiBrIG9jIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgb2MgZm10XG5sZXQgaWticHJpbnRmID0gaWtmcHJpbnRmXG5cbmxldCBmcHJpbnRmIG9jIGZtdCA9IGtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBicHJpbnRmIGIgZm10ID0ga2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgaWZwcmludGYgb2MgZm10ID0gaWtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBpYnByaW50ZiBiIGZtdCA9IGlrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBwcmludGYgZm10ID0gZnByaW50ZiBzdGRvdXQgZm10XG5sZXQgZXByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZGVyciBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgaycgYWNjID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHN0cnB1dF9hY2MgYnVmIGFjYztcbiAgICBrIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgLT4gcykgZm10XG5cbmxldCBrcHJpbnRmID0ga3NwcmludGZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBrZXkgPSBzdHJpbmdcbnR5cGUgZG9jID0gc3RyaW5nXG50eXBlIHVzYWdlX21zZyA9IHN0cmluZ1xudHlwZSBhbm9uX2Z1biA9IChzdHJpbmcgLT4gdW5pdClcblxudHlwZSBzcGVjID1cbiAgfCBVbml0IG9mICh1bml0IC0+IHVuaXQpICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHVuaXQgYXJndW1lbnQgKilcbiAgfCBCb29sIG9mIChib29sIC0+IHVuaXQpICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgYm9vbCBhcmd1bWVudCAqKVxuICB8IFNldCBvZiBib29sIHJlZiAgICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRydWUgKilcbiAgfCBDbGVhciBvZiBib29sIHJlZiAgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byBmYWxzZSAqKVxuICB8IFN0cmluZyBvZiAoc3RyaW5nIC0+IHVuaXQpICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBTZXRfc3RyaW5nIG9mIHN0cmluZyByZWYgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgc3RyaW5nIGFyZ3VtZW50ICopXG4gIHwgSW50IG9mIChpbnQgLT4gdW5pdCkgICAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhbiBpbnQgYXJndW1lbnQgKilcbiAgfCBTZXRfaW50IG9mIGludCByZWYgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgaW50IGFyZ3VtZW50ICopXG4gIHwgRmxvYXQgb2YgKGZsb2F0IC0+IHVuaXQpICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIGZsb2F0IGFyZ3VtZW50ICopXG4gIHwgU2V0X2Zsb2F0IG9mIGZsb2F0IHJlZiAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIGZsb2F0IGFyZ3VtZW50ICopXG4gIHwgVHVwbGUgb2Ygc3BlYyBsaXN0ICAgICAgICAgKCogVGFrZSBzZXZlcmFsIGFyZ3VtZW50cyBhY2NvcmRpbmcgdG8gdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYyBsaXN0ICopXG4gIHwgU3ltYm9sIG9mIHN0cmluZyBsaXN0ICogKHN0cmluZyAtPiB1bml0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFRha2Ugb25lIG9mIHRoZSBzeW1ib2xzIGFzIGFyZ3VtZW50IGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIHN5bWJvbC4gKilcbiAgfCBSZXN0IG9mIChzdHJpbmcgLT4gdW5pdCkgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGVhY2ggcmVtYWluaW5nIGFyZ3VtZW50ICopXG4gIHwgUmVzdF9hbGwgb2YgKHN0cmluZyBsaXN0IC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogU3RvcCBpbnRlcnByZXRpbmcga2V5d29yZHMgYW5kIGNhbGwgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2l0aCBhbGwgcmVtYWluaW5nIGFyZ3VtZW50cy4gKilcbiAgfCBFeHBhbmQgb2YgKHN0cmluZyAtPiBzdHJpbmcgYXJyYXkpICgqIElmIHRoZSByZW1haW5pbmcgYXJndW1lbnRzIHRvIHByb2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBvZiB0aGUgZm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1tcIi1mb29cIjsgXCJhcmdcIl0gQCByZXN0XSB3aGVyZSBcImZvb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyByZWdpc3RlcmVkIGFzIFtFeHBhbmQgZl0sIHRoZW4gdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgW2YgXCJhcmdcIiBAIHJlc3RdIGFyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkLiBPbmx5IGFsbG93ZWQgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY10uICopXG5cbmV4Y2VwdGlvbiBCYWQgb2Ygc3RyaW5nXG5leGNlcHRpb24gSGVscCBvZiBzdHJpbmdcblxudHlwZSBlcnJvciA9XG4gIHwgVW5rbm93biBvZiBzdHJpbmdcbiAgfCBXcm9uZyBvZiBzdHJpbmcgKiBzdHJpbmcgKiBzdHJpbmcgICgqIG9wdGlvbiwgYWN0dWFsLCBleHBlY3RlZCAqKVxuICB8IE1pc3Npbmcgb2Ygc3RyaW5nXG4gIHwgTWVzc2FnZSBvZiBzdHJpbmdcblxuZXhjZXB0aW9uIFN0b3Agb2YgZXJyb3IgKCogdXNlZCBpbnRlcm5hbGx5ICopXG5cbm9wZW4gUHJpbnRmXG5cbmxldCByZWMgYXNzb2MzIHggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8ICh5MSwgeTIsIF8pIDo6IF8gd2hlbiB5MSA9IHggLT4geTJcbiAgfCBfIDo6IHQgLT4gYXNzb2MzIHggdFxuXG5cbmxldCBzcGxpdCBzID1cbiAgbGV0IGkgPSBTdHJpbmcuaW5kZXggcyAnPScgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBTdHJpbmcuc3ViIHMgMCBpLCBTdHJpbmcuc3ViIHMgKGkrMSkgKGxlbi0oaSsxKSlcblxuXG5sZXQgbWFrZV9zeW1saXN0IHByZWZpeCBzZXAgc3VmZml4IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBcIjxub25lPlwiXG4gIHwgaDo6dCAtPiAoTGlzdC5mb2xkX2xlZnQgKGZ1biB4IHkgLT4geCBeIHNlcCBeIHkpIChwcmVmaXggXiBoKSB0KSBeIHN1ZmZpeFxuXG5cbmxldCBwcmludF9zcGVjIGJ1ZiAoa2V5LCBzcGVjLCBkb2MpID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBkb2MgPiAwIHRoZW5cbiAgICBtYXRjaCBzcGVjIHdpdGhcbiAgICB8IFN5bWJvbCAobCwgXykgLT5cbiAgICAgICAgYnByaW50ZiBidWYgXCIgICVzICVzJXNcXG5cIiBrZXkgKG1ha2Vfc3ltbGlzdCBcIntcIiBcInxcIiBcIn1cIiBsKSBkb2NcbiAgICB8IF8gLT5cbiAgICAgICAgYnByaW50ZiBidWYgXCIgICVzICVzXFxuXCIga2V5IGRvY1xuXG5cbmxldCBoZWxwX2FjdGlvbiAoKSA9IHJhaXNlIChTdG9wIChVbmtub3duIFwiLWhlbHBcIikpXG5cbmxldCBhZGRfaGVscCBzcGVjbGlzdCA9XG4gIGxldCBhZGQxID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItaGVscFwiIHNwZWNsaXN0KTsgW11cbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgW1wiLWhlbHBcIiwgVW5pdCBoZWxwX2FjdGlvbiwgXCIgRGlzcGxheSB0aGlzIGxpc3Qgb2Ygb3B0aW9uc1wiXVxuICBhbmQgYWRkMiA9XG4gICAgdHJ5IGlnbm9yZSAoYXNzb2MzIFwiLS1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItLWhlbHBcIiwgVW5pdCBoZWxwX2FjdGlvbiwgXCIgRGlzcGxheSB0aGlzIGxpc3Qgb2Ygb3B0aW9uc1wiXVxuICBpblxuICBzcGVjbGlzdCBAIChhZGQxIEAgYWRkMilcblxuXG5sZXQgdXNhZ2VfYiBidWYgc3BlY2xpc3QgZXJybXNnID1cbiAgYnByaW50ZiBidWYgXCIlc1xcblwiIGVycm1zZztcbiAgTGlzdC5pdGVyIChwcmludF9zcGVjIGJ1ZikgKGFkZF9oZWxwIHNwZWNsaXN0KVxuXG5cbmxldCB1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICB1c2FnZV9iIGIgc3BlY2xpc3QgZXJybXNnO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCB1c2FnZSBzcGVjbGlzdCBlcnJtc2cgPVxuICBlcHJpbnRmIFwiJXNcIiAodXNhZ2Vfc3RyaW5nIHNwZWNsaXN0IGVycm1zZylcblxuXG5sZXQgY3VycmVudCA9IHJlZiAwXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChib29sX29mX3N0cmluZyB4KVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG5cbmxldCBpbnRfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgeClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggYWxsb3dfZXhwYW5kIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm1zZyA9XG4gIGxldCBpbml0cG9zID0gIWN1cnJlbnQgaW5cbiAgbGV0IGNvbnZlcnRfZXJyb3IgZXJyb3IgPVxuICAgICgqIGNvbnZlcnQgYW4gaW50ZXJuYWwgZXJyb3IgdG8gYSBCYWQvSGVscCBleGNlcHRpb25cbiAgICAgICAqb3IqIGFkZCB0aGUgcHJvZ3JhbSBuYW1lIGFzIGEgcHJlZml4IGFuZCB0aGUgdXNhZ2UgbWVzc2FnZSBhcyBhIHN1ZmZpeFxuICAgICAgIHRvIGFuIHVzZXItcmFpc2VkIEJhZCBleGNlcHRpb24uXG4gICAgKilcbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gICAgbGV0IHByb2duYW1lID1cbiAgICAgIGlmIGluaXRwb3MgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSB0aGVuICFhcmd2Lihpbml0cG9zKSBlbHNlIFwiKD8pXCIgaW5cbiAgICBiZWdpbiBtYXRjaCBlcnJvciB3aXRoXG4gICAgICB8IFVua25vd24gXCItaGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gXCItLWhlbHBcIiAtPiAoKVxuICAgICAgfCBVbmtub3duIHMgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogdW5rbm93biBvcHRpb24gJyVzJy5cXG5cIiBwcm9nbmFtZSBzXG4gICAgICB8IE1pc3NpbmcgcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiBvcHRpb24gJyVzJyBuZWVkcyBhbiBhcmd1bWVudC5cXG5cIiBwcm9nbmFtZSBzXG4gICAgICB8IFdyb25nIChvcHQsIGFyZywgZXhwZWN0ZWQpIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IHdyb25nIGFyZ3VtZW50ICclcyc7IG9wdGlvbiAnJXMnIGV4cGVjdHMgJXMuXFxuXCJcbiAgICAgICAgICAgICAgICAgIHByb2duYW1lIGFyZyBvcHQgZXhwZWN0ZWRcbiAgICAgIHwgTWVzc2FnZSBzIC0+ICgqIHVzZXIgZXJyb3IgbWVzc2FnZSAqKVxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiAlcy5cXG5cIiBwcm9nbmFtZSBzXG4gICAgZW5kO1xuICAgIHVzYWdlX2IgYiAhc3BlY2xpc3QgZXJybXNnO1xuICAgIGlmIGVycm9yID0gVW5rbm93biBcIi1oZWxwXCIgfHwgZXJyb3IgPSBVbmtub3duIFwiLS1oZWxwXCJcbiAgICB0aGVuIEhlbHAgKEJ1ZmZlci5jb250ZW50cyBiKVxuICAgIGVsc2UgQmFkIChCdWZmZXIuY29udGVudHMgYilcbiAgaW5cbiAgaW5jciBjdXJyZW50O1xuICB3aGlsZSAhY3VycmVudCA8IChBcnJheS5sZW5ndGggIWFyZ3YpIGRvXG4gICAgYmVnaW4gdHJ5XG4gICAgICBsZXQgcyA9ICFhcmd2LighY3VycmVudCkgaW5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggcyA+PSAxICYmIHMuWzBdID0gJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IGFjdGlvbiwgZm9sbG93ID1cbiAgICAgICAgICB0cnkgYXNzb2MzIHMgIXNwZWNsaXN0LCBOb25lXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBrZXl3b3JkLCBhcmcgPSBzcGxpdCBzIGluXG4gICAgICAgICAgICBhc3NvYzMga2V5d29yZCAhc3BlY2xpc3QsIFNvbWUgYXJnXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgKFN0b3AgKFVua25vd24gcykpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBub19hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIGFyZyAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJubyBhcmd1bWVudFwiKSkpIGluXG4gICAgICAgIGxldCBnZXRfYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBpZiAhY3VycmVudCArIDEgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSB0aGVuICFhcmd2LighY3VycmVudCArIDEpXG4gICAgICAgICAgICAgIGVsc2UgcmFpc2UgKFN0b3AgKE1pc3NpbmcgcykpXG4gICAgICAgICAgfCBTb21lIGFyZyAtPiBhcmdcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvbnN1bWVfYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpbmNyIGN1cnJlbnRcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIHRyZWF0X2FjdGlvbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVW5pdCBmIC0+IG5vX2FyZyAoKTsgZiAoKTtcbiAgICAgICAgfCBCb29sIGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBib29sX29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGJvb2xlYW5cIikpKVxuICAgICAgICAgICAgfCBTb21lIHMgLT4gZiBzXG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXQgciAtPiBub19hcmcgKCk7IHIgOj0gdHJ1ZTtcbiAgICAgICAgfCBDbGVhciByIC0+IG5vX2FyZyAoKTsgciA6PSBmYWxzZTtcbiAgICAgICAgfCBTdHJpbmcgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGYgYXJnO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU3ltYm9sIChzeW1iLCBmKSAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGlmIExpc3QubWVtIGFyZyBzeW1iIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAgZiBhcmc7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwib25lIG9mOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiAobWFrZV9zeW1saXN0IFwiXCIgXCIgXCIgXCJcIiBzeW1iKSkpKVxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgU2V0X3N0cmluZyByIC0+XG4gICAgICAgICAgICByIDo9IGdldF9hcmcgKCk7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBJbnQgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGludF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYW4gaW50ZWdlclwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiBmIHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldF9pbnQgciAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGludF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYW4gaW50ZWdlclwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiByIDo9IHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IEZsb2F0IGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBmbG9hdF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBmbG9hdFwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiBmIHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldF9mbG9hdCByIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZmxvYXRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgZmxvYXRcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gciA6PSB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBUdXBsZSBzcGVjcyAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgTGlzdC5pdGVyIHRyZWF0X2FjdGlvbiBzcGVjcztcbiAgICAgICAgfCBSZXN0IGYgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIHdoaWxlICFjdXJyZW50IDwgKEFycmF5Lmxlbmd0aCAhYXJndikgLSAxIGRvXG4gICAgICAgICAgICAgIGYgIWFyZ3YuKCFjdXJyZW50ICsgMSk7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgfCBSZXN0X2FsbCBmIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICB3aGlsZSAhY3VycmVudCA8IEFycmF5Lmxlbmd0aCAhYXJndiAtIDEgZG9cbiAgICAgICAgICAgICAgYWNjIDo9ICFhcmd2LighY3VycmVudCArIDEpIDo6ICFhY2M7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgIGYgKExpc3QucmV2ICFhY2MpXG4gICAgICAgIHwgRXhwYW5kIGYgLT5cbiAgICAgICAgICAgIGlmIG5vdCBhbGxvd19leHBhbmQgdGhlblxuICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkFyZy5FeHBhbmQgaXMgaXMgb25seSBhbGxvd2VkIHdpdGggXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZy5wYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY1wiKTtcbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBsZXQgbmV3YXJnID0gZiBhcmcgaW5cbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IEFycmF5LnN1YiAhYXJndiAwICghY3VycmVudCArIDEpXG4gICAgICAgICAgICBhbmQgYWZ0ZXIgPVxuICAgICAgICAgICAgICBBcnJheS5zdWIgIWFyZ3YgKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICgoQXJyYXkubGVuZ3RoICFhcmd2KSAtICFjdXJyZW50IC0gMSkgaW5cbiAgICAgICAgICAgIGFyZ3Y6PSBBcnJheS5jb25jYXQgW2JlZm9yZTtuZXdhcmc7YWZ0ZXJdO1xuICAgICAgICBpblxuICAgICAgICB0cmVhdF9hY3Rpb24gYWN0aW9uIGVuZFxuICAgICAgZWxzZSBhbm9uZnVuIHNcbiAgICB3aXRoIHwgQmFkIG0gLT4gcmFpc2UgKGNvbnZlcnRfZXJyb3IgKE1lc3NhZ2UgbSkpO1xuICAgICAgICAgfCBTdG9wIGUgLT4gcmFpc2UgKGNvbnZlcnRfZXJyb3IgZSk7XG4gICAgZW5kO1xuICAgIGluY3IgY3VycmVudFxuICBkb25lXG5cbmxldCBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggdHJ1ZSBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2dcblxubGV0IHBhcnNlX2FyZ3ZfZHluYW1pYyA/KGN1cnJlbnQ9Y3VycmVudCkgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCBmYWxzZSBjdXJyZW50IChyZWYgYXJndikgc3BlY2xpc3QgYW5vbmZ1blxuICAgIGVycm1zZ1xuXG5cbmxldCBwYXJzZV9hcmd2ID8oY3VycmVudD1jdXJyZW50KSBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYXJndl9keW5hbWljIH5jdXJyZW50OmN1cnJlbnQgYXJndiAocmVmIHNwZWNsaXN0KSBhbm9uZnVuIGVycm1zZ1xuXG5cbmxldCBwYXJzZSBsIGYgbXNnID1cbiAgdHJ5XG4gICAgcGFyc2VfYXJndiBTeXMuYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5cbmxldCBwYXJzZV9keW5hbWljIGwgZiBtc2cgPVxuICB0cnlcbiAgICBwYXJzZV9hcmd2X2R5bmFtaWMgU3lzLmFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxubGV0IHBhcnNlX2V4cGFuZCBsIGYgbXNnID1cbiAgdHJ5XG4gICAgbGV0IGFyZ3YgPSByZWYgU3lzLmFyZ3YgaW5cbiAgICBsZXQgc3BlYyA9IHJlZiBsIGluXG4gICAgbGV0IGN1cnJlbnQgPSByZWYgKCFjdXJyZW50KSBpblxuICAgIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIGN1cnJlbnQgYXJndiBzcGVjIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5cbmxldCBzZWNvbmRfd29yZCBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgbiA9XG4gICAgaWYgbiA+PSBsZW4gdGhlbiBsZW5cbiAgICBlbHNlIGlmIHMuW25dID0gJyAnIHRoZW4gbG9vcCAobisxKVxuICAgIGVsc2UgblxuICBpblxuICBtYXRjaCBTdHJpbmcuaW5kZXggcyAnXFx0JyB3aXRoXG4gIHwgbiAtPiBsb29wIChuKzEpXG4gIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggU3RyaW5nLmluZGV4IHMgJyAnIHdpdGhcbiAgICAgIHwgbiAtPiBsb29wIChuKzEpXG4gICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gbGVuXG4gICAgICBlbmRcblxuXG5sZXQgbWF4X2FyZ19sZW4gY3VyIChrd2QsIHNwZWMsIGRvYykgPVxuICBtYXRjaCBzcGVjIHdpdGhcbiAgfCBTeW1ib2wgXyAtPiBJbnQubWF4IGN1ciAoU3RyaW5nLmxlbmd0aCBrd2QpXG4gIHwgXyAtPiBJbnQubWF4IGN1ciAoU3RyaW5nLmxlbmd0aCBrd2QgKyBzZWNvbmRfd29yZCBkb2MpXG5cblxubGV0IHJlcGxhY2VfbGVhZGluZ190YWIgcyA9XG4gIGxldCBzZWVuID0gcmVmIGZhbHNlIGluXG4gIFN0cmluZy5tYXAgKGZ1bmN0aW9uICdcXHQnIHdoZW4gbm90ICFzZWVuIC0+IHNlZW4gOj0gdHJ1ZTsgJyAnIHwgYyAtPiBjKSBzXG5cbmxldCBhZGRfcGFkZGluZyBsZW4ga3NkID1cbiAgbWF0Y2gga3NkIHdpdGhcbiAgfCAoXywgXywgXCJcIikgLT5cbiAgICAgICgqIERvIG5vdCBwYWQgdW5kb2N1bWVudGVkIG9wdGlvbnMsIHNvIHRoYXQgdGhleSBzdGlsbCBkb24ndCBzaG93IHVwIHdoZW5cbiAgICAgICAqIHJ1biB0aHJvdWdoIFt1c2FnZV0gb3IgW3BhcnNlXS4gKilcbiAgICAgIGtzZFxuICB8IChrd2QsIChTeW1ib2wgXyBhcyBzcGVjKSwgbXNnKSAtPlxuICAgICAgbGV0IGN1dGNvbCA9IHNlY29uZF93b3JkIG1zZyBpblxuICAgICAgbGV0IHNwYWNlcyA9IFN0cmluZy5tYWtlICgoSW50Lm1heCAwIChsZW4gLSBjdXRjb2wpKSArIDMpICcgJyBpblxuICAgICAgKGt3ZCwgc3BlYywgXCJcXG5cIiBeIHNwYWNlcyBeIHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKVxuICB8IChrd2QsIHNwZWMsIG1zZykgLT5cbiAgICAgIGxldCBjdXRjb2wgPSBzZWNvbmRfd29yZCBtc2cgaW5cbiAgICAgIGxldCBrd2RfbGVuID0gU3RyaW5nLmxlbmd0aCBrd2QgaW5cbiAgICAgIGxldCBkaWZmID0gbGVuIC0ga3dkX2xlbiAtIGN1dGNvbCBpblxuICAgICAgaWYgZGlmZiA8PSAwIHRoZW5cbiAgICAgICAgKGt3ZCwgc3BlYywgcmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBzcGFjZXMgPSBTdHJpbmcubWFrZSBkaWZmICcgJyBpblxuICAgICAgICBsZXQgcHJlZml4ID0gU3RyaW5nLnN1YiAocmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpIDAgY3V0Y29sIGluXG4gICAgICAgIGxldCBzdWZmaXggPSBTdHJpbmcuc3ViIG1zZyBjdXRjb2wgKFN0cmluZy5sZW5ndGggbXNnIC0gY3V0Y29sKSBpblxuICAgICAgICAoa3dkLCBzcGVjLCBwcmVmaXggXiBzcGFjZXMgXiBzdWZmaXgpXG5cblxubGV0IGFsaWduID8obGltaXQ9bWF4X2ludCkgc3BlY2xpc3QgPVxuICBsZXQgY29tcGxldGVkID0gYWRkX2hlbHAgc3BlY2xpc3QgaW5cbiAgbGV0IGxlbiA9IExpc3QuZm9sZF9sZWZ0IG1heF9hcmdfbGVuIDAgY29tcGxldGVkIGluXG4gIGxldCBsZW4gPSBJbnQubWluIGxlbiBsaW1pdCBpblxuICBMaXN0Lm1hcCAoYWRkX3BhZGRpbmcgbGVuKSBjb21wbGV0ZWRcblxubGV0IHRyaW1fY3IgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgbGVuID4gMCAmJiBTdHJpbmcuZ2V0IHMgKGxlbiAtIDEpID0gJ1xccicgdGhlblxuICAgIFN0cmluZy5zdWIgcyAwIChsZW4gLSAxKVxuICBlbHNlXG4gICAgc1xuXG5sZXQgcmVhZF9hdXggdHJpbSBzZXAgZmlsZSA9XG4gIGxldCBpYyA9IG9wZW5faW5fYmluIGZpbGUgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gIGxldCB3b3JkcyA9IHJlZiBbXSBpblxuICBsZXQgc3Rhc2ggKCkgPVxuICAgIGxldCB3b3JkID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIGxldCB3b3JkID0gaWYgdHJpbSB0aGVuIHRyaW1fY3Igd29yZCBlbHNlIHdvcmQgaW5cbiAgICB3b3JkcyA6PSB3b3JkIDo6ICF3b3JkcztcbiAgICBCdWZmZXIuY2xlYXIgYnVmXG4gIGluXG4gIGJlZ2luXG4gICAgdHJ5IHdoaWxlIHRydWUgZG9cbiAgICAgICAgbGV0IGMgPSBpbnB1dF9jaGFyIGljIGluXG4gICAgICAgIGlmIGMgPSBzZXAgdGhlbiBzdGFzaCAoKSBlbHNlIEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICAgICAgZG9uZVxuICAgIHdpdGggRW5kX29mX2ZpbGUgLT4gKClcbiAgZW5kO1xuICBpZiBCdWZmZXIubGVuZ3RoIGJ1ZiA+IDAgdGhlbiBzdGFzaCAoKTtcbiAgY2xvc2VfaW4gaWM7XG4gIEFycmF5Lm9mX2xpc3QgKExpc3QucmV2ICF3b3JkcylcblxubGV0IHJlYWRfYXJnID0gcmVhZF9hdXggdHJ1ZSAnXFxuJ1xuXG5sZXQgcmVhZF9hcmcwID0gcmVhZF9hdXggZmFsc2UgJ1xceDAwJ1xuXG5sZXQgd3JpdGVfYXV4IHNlcCBmaWxlIGFyZ3MgPVxuICBsZXQgb2MgPSBvcGVuX291dF9iaW4gZmlsZSBpblxuICBBcnJheS5pdGVyIChmdW4gcyAtPiBmcHJpbnRmIG9jIFwiJXMlY1wiIHMgc2VwKSBhcmdzO1xuICBjbG9zZV9vdXQgb2NcblxubGV0IHdyaXRlX2FyZyA9IHdyaXRlX2F1eCAnXFxuJ1xuXG5sZXQgd3JpdGVfYXJnMCA9IHdyaXRlX2F1eCAnXFx4MDAnXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gUHJpbnRmXG5cbnR5cGUgdCA9IGV4biA9IC4uXG5cbmxldCBwcmludGVycyA9IEF0b21pYy5tYWtlIFtdXG5cbmxldCBsb2NmbXQgPSBmb3JtYXRfb2Zfc3RyaW5nIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkOiAlc1wiXG5cbmxldCBmaWVsZCB4IGkgPVxuICBsZXQgZiA9IE9iai5maWVsZCB4IGkgaW5cbiAgaWYgbm90IChPYmouaXNfYmxvY2sgZikgdGhlblxuICAgIHNwcmludGYgXCIlZFwiIChPYmoubWFnaWMgZiA6IGludCkgICAgICAgICAgICgqIGNhbiBhbHNvIGJlIGEgY2hhciAqKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5zdHJpbmdfdGFnIHRoZW5cbiAgICBzcHJpbnRmIFwiJVNcIiAoT2JqLm1hZ2ljIGYgOiBzdHJpbmcpXG4gIGVsc2UgaWYgT2JqLnRhZyBmID0gT2JqLmRvdWJsZV90YWcgdGhlblxuICAgIHN0cmluZ19vZl9mbG9hdCAoT2JqLm1hZ2ljIGYgOiBmbG9hdClcbiAgZWxzZVxuICAgIFwiX1wiXG5cbmxldCByZWMgb3RoZXJfZmllbGRzIHggaSA9XG4gIGlmIGkgPj0gT2JqLnNpemUgeCB0aGVuIFwiXCJcbiAgZWxzZSBzcHJpbnRmIFwiLCAlcyVzXCIgKGZpZWxkIHggaSkgKG90aGVyX2ZpZWxkcyB4IChpKzEpKVxuXG5sZXQgZmllbGRzIHggPVxuICBtYXRjaCBPYmouc2l6ZSB4IHdpdGhcbiAgfCAwIC0+IFwiXCJcbiAgfCAxIC0+IFwiXCJcbiAgfCAyIC0+IHNwcmludGYgXCIoJXMpXCIgKGZpZWxkIHggMSlcbiAgfCBfIC0+IHNwcmludGYgXCIoJXMlcylcIiAoZmllbGQgeCAxKSAob3RoZXJfZmllbGRzIHggMilcblxubGV0IHVzZV9wcmludGVycyB4ID1cbiAgbGV0IHJlYyBjb252ID0gZnVuY3Rpb25cbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCBoZCB4IHdpdGhcbiAgICAgICAgIHwgTm9uZSB8IGV4Y2VwdGlvbiBfIC0+IGNvbnYgdGxcbiAgICAgICAgIHwgU29tZSBzIC0+IFNvbWUgcylcbiAgICB8IFtdIC0+IE5vbmUgaW5cbiAgY29udiAoQXRvbWljLmdldCBwcmludGVycylcblxubGV0IHRvX3N0cmluZ19kZWZhdWx0ID0gZnVuY3Rpb25cbiAgfCBPdXRfb2ZfbWVtb3J5IC0+IFwiT3V0IG9mIG1lbW9yeVwiXG4gIHwgU3RhY2tfb3ZlcmZsb3cgLT4gXCJTdGFjayBvdmVyZmxvd1wiXG4gIHwgTWF0Y2hfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNSkgXCJQYXR0ZXJuIG1hdGNoaW5nIGZhaWxlZFwiXG4gIHwgQXNzZXJ0X2ZhaWx1cmUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiQXNzZXJ0aW9uIGZhaWxlZFwiXG4gIHwgVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiVW5kZWZpbmVkIHJlY3Vyc2l2ZSBtb2R1bGVcIlxuICB8IHggLT5cbiAgICAgIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICAgICAgaWYgT2JqLnRhZyB4IDw+IDAgdGhlblxuICAgICAgICAoT2JqLm1hZ2ljIChPYmouZmllbGQgeCAwKSA6IHN0cmluZylcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNvbnN0cnVjdG9yID1cbiAgICAgICAgICAoT2JqLm1hZ2ljIChPYmouZmllbGQgKE9iai5maWVsZCB4IDApIDApIDogc3RyaW5nKSBpblxuICAgICAgICBjb25zdHJ1Y3RvciBeIChmaWVsZHMgeClcblxubGV0IHRvX3N0cmluZyBlID1cbiAgbWF0Y2ggdXNlX3ByaW50ZXJzIGUgd2l0aFxuICB8IFNvbWUgcyAtPiBzXG4gIHwgTm9uZSAtPiB0b19zdHJpbmdfZGVmYXVsdCBlXG5cbmxldCBwcmludCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZmx1c2ggc3RkZXJyO1xuICAgIHJhaXNlIHhcblxubGV0IGNhdGNoIGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGZsdXNoIHN0ZG91dDtcbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZXhpdCAyXG5cbnR5cGUgcmF3X2JhY2t0cmFjZV9zbG90XG50eXBlIHJhd19iYWNrdHJhY2VfZW50cnkgPSBwcml2YXRlIGludFxudHlwZSByYXdfYmFja3RyYWNlID0gcmF3X2JhY2t0cmFjZV9lbnRyeSBhcnJheVxuXG5sZXQgcmF3X2JhY2t0cmFjZV9lbnRyaWVzIGJ0ID0gYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2U6XG4gIHVuaXQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2VcIlxuXG5leHRlcm5hbCByYWlzZV93aXRoX2JhY2t0cmFjZTogZXhuIC0+IHJhd19iYWNrdHJhY2UgLT4gJ2FcbiAgPSBcIiVyYWlzZV93aXRoX2JhY2t0cmFjZVwiXG5cbnR5cGUgYmFja3RyYWNlX3Nsb3QgPVxuICB8IEtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlICAgIDogYm9vbDtcbiAgICAgIGZpbGVuYW1lICAgIDogc3RyaW5nO1xuICAgICAgbGluZV9udW1iZXIgOiBpbnQ7XG4gICAgICBzdGFydF9jaGFyICA6IGludDtcbiAgICAgIGVuZF9jaGFyICAgIDogaW50O1xuICAgICAgaXNfaW5saW5lICAgOiBib29sO1xuICAgICAgZGVmbmFtZSAgICAgOiBzdHJpbmc7XG4gICAgfVxuICB8IFVua25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgOiBib29sXG4gICAgfVxuXG4oKiB0byBhdm9pZCB3YXJuaW5nICopXG5sZXQgXyA9IFtLbm93bl9sb2NhdGlvbiB7IGlzX3JhaXNlID0gZmFsc2U7IGZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXIgPSAwOyBzdGFydF9jaGFyID0gMDsgZW5kX2NoYXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpc19pbmxpbmUgPSBmYWxzZTsgZGVmbmFtZSA9IFwiXCIgfTtcbiAgICAgICAgIFVua25vd25fbG9jYXRpb24geyBpc19yYWlzZSA9IGZhbHNlIH1dXG5cbmV4dGVybmFsIGNvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90OlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gYmFja3RyYWNlX3Nsb3QgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2U6XG4gIHJhd19iYWNrdHJhY2UgLT4gYmFja3RyYWNlX3Nsb3QgYXJyYXkgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlXCJcblxubGV0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSBidCA9XG4gIHRyeSBTb21lIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBwb3Mgc2xvdCA9XG4gIGxldCBpbmZvIGlzX3JhaXNlID1cbiAgICBpZiBpc19yYWlzZSB0aGVuXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYXRcIiBlbHNlIFwiUmUtcmFpc2VkIGF0XCJcbiAgICBlbHNlXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYnkgcHJpbWl0aXZlIG9wZXJhdGlvbiBhdFwiIGVsc2UgXCJDYWxsZWQgZnJvbVwiXG4gIGluXG4gIG1hdGNoIHNsb3Qgd2l0aFxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgaWYgbC5pc19yYWlzZSB0aGVuXG4gICAgICAgICgqIGNvbXBpbGVyLWluc2VydGVkIHJlLXJhaXNlLCBza2lwcGVkICopIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgU29tZSAoc3ByaW50ZiBcIiVzIHVua25vd24gbG9jYXRpb25cIiAoaW5mbyBmYWxzZSkpXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgU29tZSAoc3ByaW50ZiBcIiVzICVzIGluIGZpbGUgXFxcIiVzXFxcIiVzLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgKGluZm8gbC5pc19yYWlzZSkgbC5kZWZuYW1lIGwuZmlsZW5hbWVcbiAgICAgICAgICAgICAgKGlmIGwuaXNfaW5saW5lIHRoZW4gXCIgKGlubGluZWQpXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICBsLmxpbmVfbnVtYmVyIGwuc3RhcnRfY2hhciBsLmVuZF9jaGFyKVxuXG5sZXQgcHJpbnRfZXhjZXB0aW9uX2JhY2t0cmFjZSBvdXRjaGFuIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgZnByaW50ZiBvdXRjaGFuXG4gICAgICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgIG1hdGNoIGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBpIGEuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc3RyIC0+IGZwcmludGYgb3V0Y2hhbiBcIiVzXFxuXCIgc3RyXG4gICAgICBkb25lXG5cbmxldCBwcmludF9yYXdfYmFja3RyYWNlIG91dGNoYW4gcmF3X2JhY2t0cmFjZSA9XG4gIHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOiBwcmludHMgdGhlIGdsb2JhbCBjdXJyZW50IGJhY2t0cmFjZSAqKVxubGV0IHByaW50X2JhY2t0cmFjZSBvdXRjaGFuID1cbiAgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxubGV0IGJhY2t0cmFjZV90b19zdHJpbmcgYmFja3RyYWNlID1cbiAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBicHJpbnRmIGIgXCIlc1xcblwiIHN0clxuICAgICAgZG9uZTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCByYXdfYmFja3RyYWNlX3RvX3N0cmluZyByYXdfYmFja3RyYWNlID1cbiAgYmFja3RyYWNlX3RvX3N0cmluZyAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfcmFpc2VcblxubGV0IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX2lubGluZVxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBmYWxzZVxuXG50eXBlIGxvY2F0aW9uID0ge1xuICBmaWxlbmFtZSA6IHN0cmluZztcbiAgbGluZV9udW1iZXIgOiBpbnQ7XG4gIHN0YXJ0X2NoYXIgOiBpbnQ7XG4gIGVuZF9jaGFyIDogaW50O1xufVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfbG9jYXRpb24gPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgIFNvbWUge1xuICAgICAgZmlsZW5hbWUgICAgPSBsLmZpbGVuYW1lO1xuICAgICAgbGluZV9udW1iZXIgPSBsLmxpbmVfbnVtYmVyO1xuICAgICAgc3RhcnRfY2hhciAgPSBsLnN0YXJ0X2NoYXI7XG4gICAgICBlbmRfY2hhciAgICA9IGwuZW5kX2NoYXI7XG4gICAgfVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfXG4gIHwgS25vd25fbG9jYXRpb24geyBkZWZuYW1lID0gXCJcIiB9IC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IFNvbWUgbC5kZWZuYW1lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHMgcmF3X2JhY2t0cmFjZSA9XG4gICgqIFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0aGF0IFNvbWUgaXNcbiAgICAgcmV0dXJuZWQgb25seSBpZiBhIHBhcnQgb2YgdGhlIHRyYWNlIGlzIHVzYWJsZS4gVGhpcyBnaXZlcyB1c1xuICAgICBhIGJpdCBtb3JlIHdvcmsgdGhhbiBqdXN0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSwgYnV0IGl0IG1ha2VzIHRoZVxuICAgICBBUEkgbW9yZSB1c2VyLWZyaWVuZGx5IC0tIG90aGVyd2lzZSBtb3N0IHVzZXJzIHdvdWxkIGhhdmUgdG9cbiAgICAgcmVpbXBsZW1lbnQgdGhlIFwiUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIHNvcnJ5XCIgbG9naWNcbiAgICAgdGhlbXNlbHZlcy4gKilcbiAgbWF0Y2ggY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGJhY2t0cmFjZSAtPlxuICAgICAgbGV0IHVzYWJsZV9zbG90ID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgfCBLbm93bl9sb2NhdGlvbiBfIC0+IHRydWUgaW5cbiAgICAgIGxldCByZWMgZXhpc3RzX3VzYWJsZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKC0xKSAtPiBmYWxzZVxuICAgICAgICB8IGkgLT4gdXNhYmxlX3Nsb3QgYmFja3RyYWNlLihpKSB8fCBleGlzdHNfdXNhYmxlIChpIC0gMSkgaW5cbiAgICAgIGlmIGV4aXN0c191c2FibGUgKEFycmF5Lmxlbmd0aCBiYWNrdHJhY2UgLSAxKVxuICAgICAgdGhlbiBTb21lIGJhY2t0cmFjZVxuICAgICAgZWxzZSBOb25lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IGVudHJ5ID1cbiAgYmFja3RyYWNlX3Nsb3RzIFt8IGVudHJ5IHxdXG5cbm1vZHVsZSBTbG90ID0gc3RydWN0XG4gIHR5cGUgdCA9IGJhY2t0cmFjZV9zbG90XG4gIGxldCBmb3JtYXQgPSBmb3JtYXRfYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGlzX3JhaXNlID0gYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2VcbiAgbGV0IGlzX2lubGluZSA9IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZVxuICBsZXQgbG9jYXRpb24gPSBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvblxuICBsZXQgbmFtZSA9IGJhY2t0cmFjZV9zbG90X2RlZm5hbWVcbmVuZFxuXG5sZXQgcmF3X2JhY2t0cmFjZV9sZW5ndGggYnQgPSBBcnJheS5sZW5ndGggYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2UgLT4gaW50IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QgOlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gcmF3X2JhY2t0cmFjZV9zbG90IG9wdGlvblxuICA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFwiXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOlxuICAgcmV0dXJucyB0aGUgKnN0cmluZyogY29ycmVzcG9uZGluZyB0byB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgZ2V0X2JhY2t0cmFjZSAoKSA9IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxuZXh0ZXJuYWwgcmVjb3JkX2JhY2t0cmFjZTogYm9vbCAtPiB1bml0ID0gXCJjYW1sX3JlY29yZF9iYWNrdHJhY2VcIlxuZXh0ZXJuYWwgYmFja3RyYWNlX3N0YXR1czogdW5pdCAtPiBib29sID0gXCJjYW1sX2JhY2t0cmFjZV9zdGF0dXNcIlxuXG5sZXQgcmVjIHJlZ2lzdGVyX3ByaW50ZXIgZm4gPVxuICBsZXQgb2xkX3ByaW50ZXJzID0gQXRvbWljLmdldCBwcmludGVycyBpblxuICBsZXQgbmV3X3ByaW50ZXJzID0gZm4gOjogb2xkX3ByaW50ZXJzIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwcmludGVycyBvbGRfcHJpbnRlcnMgbmV3X3ByaW50ZXJzIGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gcmVnaXN0ZXJfcHJpbnRlciBmblxuXG5leHRlcm5hbCBnZXRfY2FsbHN0YWNrOiBpbnQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2tcIlxuXG5sZXQgZXhuX3Nsb3QgeCA9XG4gIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmoudGFnIHggPSAwIHRoZW4gT2JqLmZpZWxkIHggMCBlbHNlIHhcblxubGV0IGV4bl9zbG90X2lkIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDEpIDogaW50KVxuXG5sZXQgZXhuX3Nsb3RfbmFtZSB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAwKSA6IHN0cmluZylcblxuZXh0ZXJuYWwgZ2V0X2RlYnVnX2luZm9fc3RhdHVzIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXNcIlxuXG4oKiBEZXNjcmlwdGlvbnMgZm9yIGVycm9ycyBpbiBzdGFydHVwLmguIFNlZSBhbHNvIGJhY2t0cmFjZS5jICopXG5sZXQgZXJyb3JzID0gW3wgXCJcIjtcbiAgKCogRklMRV9OT1RfRk9VTkQgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIG5vdCBmb3VuZClcIjtcbiAgKCogQkFEX0JZVEVDT0RFICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQpXCI7XG4gICgqIFdST05HX01BR0lDICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBoYXMgd3JvbmcgbWFnaWMgbnVtYmVyKVwiO1xuICAoKiBOT19GRFMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQ7XFxuIFxcXG4gICAgICAtLSB0b28gbWFueSBvcGVuIGZpbGVzLiBUcnkgcnVubmluZyB3aXRoIE9DQU1MUlVOUEFSQU09Yj0yKVwiXG58XVxuXG5sZXQgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZSA9XG4gIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICBsZXQgc3RhdHVzID0gZ2V0X2RlYnVnX2luZm9fc3RhdHVzICgpIGluXG4gIGlmIHN0YXR1cyA8IDAgdGhlblxuICAgIHByZXJyX2VuZGxpbmUgZXJyb3JzLihhYnMgc3RhdHVzKTtcbiAgZmx1c2ggc3RkZXJyXG5cbmxldCB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA9IHJlZiBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyXG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZm4gPSB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA6PSBmblxuXG5sZXQgZW1wdHlfYmFja3RyYWNlIDogcmF3X2JhY2t0cmFjZSA9IFt8IHxdXG5cbmxldCB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgPVxuICB0cnlcbiAgICBnZXRfcmF3X2JhY2t0cmFjZSAoKVxuICB3aXRoIF8gKCogT3V0X29mX21lbW9yeT8gKikgLT5cbiAgICBlbXB0eV9iYWNrdHJhY2VcblxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICAoKiBHZXQgdGhlIGJhY2t0cmFjZSBub3csIGluIGNhc2Ugb25lIG9mIHRoZSBbYXRfZXhpdF0gZnVuY3Rpb25cbiAgICAgICBkZXN0cm95cyBpdC4gKilcbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9XG4gICAgICBpZiBkZWJ1Z2dlcl9pbl91c2UgKCogU2FtZSB0ZXN0IGFzIGluIFtydW50aW1lL3ByaW50ZXhjLmNdICopIHRoZW5cbiAgICAgICAgZW1wdHlfYmFja3RyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKVxuICAgIGluXG4gICAgKHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgIHRyeVxuICAgICAgIXVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlXG4gICAgd2l0aCBleG4nIC0+XG4gICAgICBsZXQgcmF3X2JhY2t0cmFjZScgPSB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvciBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlcjogZXhjZXB0aW9uICVzXFxuXCJcbiAgICAgICAgKHRvX3N0cmluZyBleG4nKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2UnO1xuICAgICAgZmx1c2ggc3RkZXJyXG4gIHdpdGhcbiAgICB8IE91dF9vZl9tZW1vcnkgLT5cbiAgICAgICAgcHJlcnJfZW5kbGluZVxuICAgICAgICAgIFwiRmF0YWwgZXJyb3I6IG91dCBvZiBtZW1vcnkgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXJcIlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBbY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25dIGluXG4gICBbcnVudGltZS9wcmludGV4Yy5jXSB3aGljaCBleHBlY3RzIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZVxuICB3aXRoIF8gLT5cbiAgICAoKiBUaGVyZSBpcyBub3QgbXVjaCB3ZSBjYW4gZG8gYXQgdGhpcyBwb2ludCAqKVxuICAgICgpXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIlxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgaWQgOiAnYSAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmxldCBjb25zdCBjIF8gPSBjXG5sZXQgZmxpcCBmIHggeSA9IGYgeSB4XG5sZXQgbmVnYXRlIHAgdiA9IG5vdCAocCB2KVxuXG5leGNlcHRpb24gRmluYWxseV9yYWlzZWQgb2YgZXhuXG5cbmxldCAoKSA9IFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgQEAgZnVuY3Rpb25cbnwgRmluYWxseV9yYWlzZWQgZXhuIC0+IFNvbWUgKFwiRnVuLkZpbmFsbHlfcmFpc2VkOiBcIiBeIFByaW50ZXhjLnRvX3N0cmluZyBleG4pXG58IF8gLT4gTm9uZVxuXG5sZXQgcHJvdGVjdCB+KGZpbmFsbHkgOiB1bml0IC0+IHVuaXQpIHdvcmsgPVxuICBsZXQgZmluYWxseV9ub19leG4gKCkgPVxuICAgIHRyeSBmaW5hbGx5ICgpIHdpdGggZSAtPlxuICAgICAgbGV0IGJ0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIChGaW5hbGx5X3JhaXNlZCBlKSBidFxuICBpblxuICBtYXRjaCB3b3JrICgpIHdpdGhcbiAgfCByZXN1bHQgLT4gZmluYWxseV9ub19leG4gKCkgOyByZXN1bHRcbiAgfCBleGNlcHRpb24gd29ya19leG4gLT5cbiAgICAgIGxldCB3b3JrX2J0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGZpbmFsbHlfbm9fZXhuICgpIDtcbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIHdvcmtfZXhuIHdvcmtfYnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSmFjcXVlcy1IZW5yaSBKb3VyZGFuLCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUGFyaXMgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYtMjAxNiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlICAgKilcbigqICAgICBldCBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzdGF0ID0ge1xuICBtaW5vcl93b3JkcyA6IGZsb2F0O1xuICBwcm9tb3RlZF93b3JkcyA6IGZsb2F0O1xuICBtYWpvcl93b3JkcyA6IGZsb2F0O1xuICBtaW5vcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnQ7XG4gIGhlYXBfd29yZHMgOiBpbnQ7XG4gIGhlYXBfY2h1bmtzIDogaW50O1xuICBsaXZlX3dvcmRzIDogaW50O1xuICBsaXZlX2Jsb2NrcyA6IGludDtcbiAgZnJlZV93b3JkcyA6IGludDtcbiAgZnJlZV9ibG9ja3MgOiBpbnQ7XG4gIGxhcmdlc3RfZnJlZSA6IGludDtcbiAgZnJhZ21lbnRzIDogaW50O1xuICBjb21wYWN0aW9ucyA6IGludDtcbiAgdG9wX2hlYXBfd29yZHMgOiBpbnQ7XG4gIHN0YWNrX3NpemUgOiBpbnQ7XG4gIGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogaW50O1xufVxuXG50eXBlIGNvbnRyb2wgPSB7XG4gIG11dGFibGUgbWlub3JfaGVhcF9zaXplIDogaW50O1xuICBtdXRhYmxlIG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50O1xuICBtdXRhYmxlIHNwYWNlX292ZXJoZWFkIDogaW50O1xuICBtdXRhYmxlIHZlcmJvc2UgOiBpbnQ7XG4gIG11dGFibGUgbWF4X292ZXJoZWFkIDogaW50O1xuICBtdXRhYmxlIHN0YWNrX2xpbWl0IDogaW50O1xuICBtdXRhYmxlIGFsbG9jYXRpb25fcG9saWN5IDogaW50O1xuICB3aW5kb3dfc2l6ZSA6IGludDtcbiAgY3VzdG9tX21ham9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnQ7XG4gIGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludDtcbn1cblxuZXh0ZXJuYWwgc3RhdCA6IHVuaXQgLT4gc3RhdCA9IFwiY2FtbF9nY19zdGF0XCJcbmV4dGVybmFsIHF1aWNrX3N0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2NfcXVpY2tfc3RhdFwiXG5leHRlcm5hbCBjb3VudGVycyA6IHVuaXQgLT4gKGZsb2F0ICogZmxvYXQgKiBmbG9hdCkgPSBcImNhbWxfZ2NfY291bnRlcnNcIlxuZXh0ZXJuYWwgbWlub3Jfd29yZHMgOiB1bml0IC0+IChmbG9hdCBbQHVuYm94ZWRdKVxuICA9IFwiY2FtbF9nY19taW5vcl93b3Jkc1wiIFwiY2FtbF9nY19taW5vcl93b3Jkc191bmJveGVkXCJcbmV4dGVybmFsIGdldCA6IHVuaXQgLT4gY29udHJvbCA9IFwiY2FtbF9nY19nZXRcIlxuZXh0ZXJuYWwgc2V0IDogY29udHJvbCAtPiB1bml0ID0gXCJjYW1sX2djX3NldFwiXG5leHRlcm5hbCBtaW5vciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19taW5vclwiXG5leHRlcm5hbCBtYWpvcl9zbGljZSA6IGludCAtPiBpbnQgPSBcImNhbWxfZ2NfbWFqb3Jfc2xpY2VcIlxuZXh0ZXJuYWwgbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWFqb3JcIlxuZXh0ZXJuYWwgZnVsbF9tYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19mdWxsX21ham9yXCJcbmV4dGVybmFsIGNvbXBhY3QgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfY29tcGFjdGlvblwiXG5leHRlcm5hbCBnZXRfbWlub3JfZnJlZSA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2dldF9taW5vcl9mcmVlXCJcbmV4dGVybmFsIGdldF9idWNrZXQgOiBpbnQgLT4gaW50ID0gXCJjYW1sX2dldF9tYWpvcl9idWNrZXRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZ2V0X2NyZWRpdCA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2dldF9tYWpvcl9jcmVkaXRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHVnZV9mYWxsYmFja19jb3VudCA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnRcIlxuZXh0ZXJuYWwgZXZlbnRsb2dfcGF1c2UgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZXZlbnRsb2dfcGF1c2VcIlxuZXh0ZXJuYWwgZXZlbnRsb2dfcmVzdW1lIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2V2ZW50bG9nX3Jlc3VtZVwiXG5cbm9wZW4gUHJpbnRmXG5cbmxldCBwcmludF9zdGF0IGMgPVxuICBsZXQgc3QgPSBzdGF0ICgpIGluXG4gIGZwcmludGYgYyBcIm1pbm9yX2NvbGxlY3Rpb25zOiAgICAgICVkXFxuXCIgc3QubWlub3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcIm1ham9yX2NvbGxlY3Rpb25zOiAgICAgICVkXFxuXCIgc3QubWFqb3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcImNvbXBhY3Rpb25zOiAgICAgICAgICAgICVkXFxuXCIgc3QuY29tcGFjdGlvbnM7XG4gIGZwcmludGYgYyBcImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogJWRcXG5cIiBzdC5mb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBsZXQgbDEgPSBTdHJpbmcubGVuZ3RoIChzcHJpbnRmIFwiJS4wZlwiIHN0Lm1pbm9yX3dvcmRzKSBpblxuICBmcHJpbnRmIGMgXCJtaW5vcl93b3JkczogICAgJSouMGZcXG5cIiBsMSBzdC5taW5vcl93b3JkcztcbiAgZnByaW50ZiBjIFwicHJvbW90ZWRfd29yZHM6ICUqLjBmXFxuXCIgbDEgc3QucHJvbW90ZWRfd29yZHM7XG4gIGZwcmludGYgYyBcIm1ham9yX3dvcmRzOiAgICAlKi4wZlxcblwiIGwxIHN0Lm1ham9yX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgbGV0IGwyID0gU3RyaW5nLmxlbmd0aCAoc3ByaW50ZiBcIiVkXCIgc3QudG9wX2hlYXBfd29yZHMpIGluXG4gIGZwcmludGYgYyBcInRvcF9oZWFwX3dvcmRzOiAlKmRcXG5cIiBsMiBzdC50b3BfaGVhcF93b3JkcztcbiAgZnByaW50ZiBjIFwiaGVhcF93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmhlYXBfd29yZHM7XG4gIGZwcmludGYgYyBcImxpdmVfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5saXZlX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJmcmVlX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QuZnJlZV93b3JkcztcbiAgZnByaW50ZiBjIFwibGFyZ2VzdF9mcmVlOiAgICUqZFxcblwiIGwyIHN0Lmxhcmdlc3RfZnJlZTtcbiAgZnByaW50ZiBjIFwiZnJhZ21lbnRzOiAgICAgICUqZFxcblwiIGwyIHN0LmZyYWdtZW50cztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGZwcmludGYgYyBcImxpdmVfYmxvY2tzOiAlZFxcblwiIHN0LmxpdmVfYmxvY2tzO1xuICBmcHJpbnRmIGMgXCJmcmVlX2Jsb2NrczogJWRcXG5cIiBzdC5mcmVlX2Jsb2NrcztcbiAgZnByaW50ZiBjIFwiaGVhcF9jaHVua3M6ICVkXFxuXCIgc3QuaGVhcF9jaHVua3NcblxuXG5sZXQgYWxsb2NhdGVkX2J5dGVzICgpID1cbiAgbGV0IChtaSwgcHJvLCBtYSkgPSBjb3VudGVycyAoKSBpblxuICAobWkgKy4gbWEgLS4gcHJvKSAqLiBmbG9hdF9vZl9pbnQgKFN5cy53b3JkX3NpemUgLyA4KVxuXG5cbmV4dGVybmFsIGZpbmFsaXNlIDogKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfZmluYWxfcmVnaXN0ZXJcIlxuZXh0ZXJuYWwgZmluYWxpc2VfbGFzdCA6ICh1bml0IC0+IHVuaXQpIC0+ICdhIC0+IHVuaXQgPVxuICBcImNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWVcIlxuZXh0ZXJuYWwgZmluYWxpc2VfcmVsZWFzZSA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9maW5hbF9yZWxlYXNlXCJcblxuXG50eXBlIGFsYXJtID0gYm9vbCByZWZcbnR5cGUgYWxhcm1fcmVjID0ge2FjdGl2ZSA6IGFsYXJtOyBmIDogdW5pdCAtPiB1bml0fVxuXG5sZXQgcmVjIGNhbGxfYWxhcm0gYXJlYyA9XG4gIGlmICEoYXJlYy5hY3RpdmUpIHRoZW4gYmVnaW5cbiAgICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gICAgYXJlYy5mICgpO1xuICBlbmRcblxuXG5sZXQgY3JlYXRlX2FsYXJtIGYgPVxuICBsZXQgYXJlYyA9IHsgYWN0aXZlID0gcmVmIHRydWU7IGYgPSBmIH0gaW5cbiAgZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjO1xuICBhcmVjLmFjdGl2ZVxuXG5cbmxldCBkZWxldGVfYWxhcm0gYSA9IGEgOj0gZmFsc2VcblxubW9kdWxlIE1lbXByb2YgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGFsbG9jYXRpb25fc291cmNlID0gTm9ybWFsIHwgTWFyc2hhbCB8IEN1c3RvbVxuICAgIHR5cGUgYWxsb2NhdGlvbiA9XG4gICAgICB7IG5fc2FtcGxlcyA6IGludDtcbiAgICAgICAgc2l6ZSA6IGludDtcbiAgICAgICAgc291cmNlIDogYWxsb2NhdGlvbl9zb3VyY2U7XG4gICAgICAgIGNhbGxzdGFjayA6IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgfVxuXG4gICAgdHlwZSAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgPSB7XG4gICAgICBhbGxvY19taW5vcjogYWxsb2NhdGlvbiAtPiAnbWlub3Igb3B0aW9uO1xuICAgICAgYWxsb2NfbWFqb3I6IGFsbG9jYXRpb24gLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIHByb21vdGU6ICdtaW5vciAtPiAnbWFqb3Igb3B0aW9uO1xuICAgICAgZGVhbGxvY19taW5vcjogJ21pbm9yIC0+IHVuaXQ7XG4gICAgICBkZWFsbG9jX21ham9yOiAnbWFqb3IgLT4gdW5pdDtcbiAgICB9XG5cbiAgICBsZXQgbnVsbF90cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBhbGxvY19tYWpvciA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIHByb21vdGUgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBkZWFsbG9jX21pbm9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICAgIGRlYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gKCkpO1xuICAgIH1cblxuICAgIGV4dGVybmFsIGNfc3RhcnQgOlxuICAgICAgZmxvYXQgLT4gaW50IC0+ICgnbWlub3IsICdtYWpvcikgdHJhY2tlciAtPiB1bml0XG4gICAgICA9IFwiY2FtbF9tZW1wcm9mX3N0YXJ0XCJcblxuICAgIGxldCBzdGFydFxuICAgICAgfnNhbXBsaW5nX3JhdGVcbiAgICAgID8oY2FsbHN0YWNrX3NpemUgPSBtYXhfaW50KVxuICAgICAgdHJhY2tlciA9XG4gICAgICBjX3N0YXJ0IHNhbXBsaW5nX3JhdGUgY2FsbHN0YWNrX3NpemUgdHJhY2tlclxuXG4gICAgZXh0ZXJuYWwgc3RvcCA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9tZW1wcm9mX3N0b3BcIlxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTWVzc2FnZSBkaWdlc3QgKE1ENSkgKilcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmVcbmxldCBlcXVhbCA9IFN0cmluZy5lcXVhbFxuXG5leHRlcm5hbCB1bnNhZmVfc3RyaW5nOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9zdHJpbmdcIlxuZXh0ZXJuYWwgY2hhbm5lbDogaW5fY2hhbm5lbCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9tZDVfY2hhblwiXG5cbmxldCBzdHJpbmcgc3RyID1cbiAgdW5zYWZlX3N0cmluZyBzdHIgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbmxldCBieXRlcyBiID0gc3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpXG5cbmxldCBzdWJzdHJpbmcgc3RyIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gU3RyaW5nLmxlbmd0aCBzdHIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5zdWJzdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9zdHJpbmcgc3RyIG9mcyBsZW5cblxubGV0IHN1YmJ5dGVzIGIgb2ZzIGxlbiA9IHN1YnN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKSBvZnMgbGVuXG5cbmxldCBmaWxlIGZpbGVuYW1lID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZmlsZW5hbWUgaW5cbiAgbWF0Y2ggY2hhbm5lbCBpYyAoLTEpIHdpdGhcbiAgICB8IGQgLT4gY2xvc2VfaW4gaWM7IGRcbiAgICB8IGV4Y2VwdGlvbiBlIC0+IGNsb3NlX2luIGljOyByYWlzZSBlXG5cbmxldCBvdXRwdXQgY2hhbiBkaWdlc3QgPVxuICBvdXRwdXRfc3RyaW5nIGNoYW4gZGlnZXN0XG5cbmxldCBpbnB1dCBjaGFuID0gcmVhbGx5X2lucHV0X3N0cmluZyBjaGFuIDE2XG5cbmxldCBjaGFyX2hleCBuID1cbiAgQ2hhci51bnNhZmVfY2hyIChuICsgaWYgbiA8IDEwIHRoZW4gQ2hhci5jb2RlICcwJyBlbHNlIChDaGFyLmNvZGUgJ2EnIC0gMTApKVxuXG5sZXQgdG9faGV4IGQgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGQgPD4gMTYgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC50b19oZXhcIjtcbiAgbGV0IHJlc3VsdCA9IEJ5dGVzLmNyZWF0ZSAzMiBpblxuICBmb3IgaSA9IDAgdG8gMTUgZG9cbiAgICBsZXQgeCA9IENoYXIuY29kZSBkLltpXSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIpIChjaGFyX2hleCAoeCBsc3IgNCkpO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIrMSkgKGNoYXJfaGV4ICh4IGxhbmQgMHgwZikpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc3VsdFxuXG5sZXQgZnJvbV9oZXggcyA9XG4gIGlmIFN0cmluZy5sZW5ndGggcyA8PiAzMiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LmZyb21faGV4XCI7XG4gIGxldCBkaWdpdCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcwJy4uJzknIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ0EnLi4nRicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbiAgICB8ICdhJy4uJ2YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gICAgfCBfIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRGlnZXN0LmZyb21faGV4XCIpXG4gIGluXG4gIGxldCBieXRlIGkgPSBkaWdpdCBzLltpXSBsc2wgNCArIGRpZ2l0IHMuW2krMV0gaW5cbiAgbGV0IHJlc3VsdCA9IEJ5dGVzLmNyZWF0ZSAxNiBpblxuICBmb3IgaSA9IDAgdG8gMTUgZG9cbiAgICBCeXRlcy5zZXQgcmVzdWx0IGkgKENoYXIuY2hyIChieXRlICgyICogaSkpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yXG4gICBUaGlzIGlzIGEgbGFnZ2VkLUZpYm9uYWNjaSBGKDU1LCAyNCwgKykgd2l0aCBhIG1vZGlmaWVkIGFkZGl0aW9uXG4gICBmdW5jdGlvbiB0byBlbmhhbmNlIHRoZSBtaXhpbmcgb2YgYml0cy5cbiAgIElmIHdlIHVzZSBub3JtYWwgYWRkaXRpb24sIHRoZSBsb3ctb3JkZXIgYml0IGZhaWxzIHRlc3RzIDEgYW5kIDdcbiAgIG9mIHRoZSBEaWVoYXJkIHRlc3Qgc3VpdGUsIGFuZCBiaXRzIDEgYW5kIDIgYWxzbyBmYWlsIHRlc3QgNy5cbiAgIElmIHdlIHVzZSBtdWx0aXBsaWNhdGlvbiBhcyBzdWdnZXN0ZWQgYnkgTWFyc2FnbGlhLCBpdCBkb2Vzbid0IGZhcmVcbiAgIG11Y2ggYmV0dGVyLlxuICAgQnkgbWl4aW5nIHRoZSBiaXRzIG9mIG9uZSBvZiB0aGUgbnVtYmVycyBiZWZvcmUgYWRkaXRpb24gKFhPUiB0aGVcbiAgIDUgaGlnaC1vcmRlciBiaXRzIGludG8gdGhlIGxvdy1vcmRlciBiaXRzKSwgd2UgZ2V0IGEgZ2VuZXJhdG9yIHRoYXRcbiAgIHBhc3NlcyBhbGwgdGhlIERpZWhhcmQgdGVzdHMuXG4qKVxuXG5leHRlcm5hbCByYW5kb21fc2VlZDogdW5pdCAtPiBpbnQgYXJyYXkgPSBcImNhbWxfc3lzX3JhbmRvbV9zZWVkXCJcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgdHlwZSB0ID0geyBzdCA6IGludCBhcnJheTsgbXV0YWJsZSBpZHggOiBpbnQgfVxuXG4gIGxldCBuZXdfc3RhdGUgKCkgPSB7IHN0ID0gQXJyYXkubWFrZSA1NSAwOyBpZHggPSAwIH1cbiAgbGV0IGFzc2lnbiBzdDEgc3QyID1cbiAgICBBcnJheS5ibGl0IHN0Mi5zdCAwIHN0MS5zdCAwIDU1O1xuICAgIHN0MS5pZHggPC0gc3QyLmlkeFxuXG5cbiAgbGV0IGZ1bGxfaW5pdCBzIHNlZWQgPVxuICAgIGxldCBjb21iaW5lIGFjY3UgeCA9IERpZ2VzdC5zdHJpbmcgKGFjY3UgXiBJbnQudG9fc3RyaW5nIHgpIGluXG4gICAgbGV0IGV4dHJhY3QgZCA9XG4gICAgICBDaGFyLmNvZGUgZC5bMF0gKyAoQ2hhci5jb2RlIGQuWzFdIGxzbCA4KSArIChDaGFyLmNvZGUgZC5bMl0gbHNsIDE2KVxuICAgICAgKyAoQ2hhci5jb2RlIGQuWzNdIGxzbCAyNClcbiAgICBpblxuICAgIGxldCBzZWVkID0gaWYgQXJyYXkubGVuZ3RoIHNlZWQgPSAwIHRoZW4gW3wgMCB8XSBlbHNlIHNlZWQgaW5cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBzZWVkIGluXG4gICAgZm9yIGkgPSAwIHRvIDU0IGRvXG4gICAgICBzLnN0LihpKSA8LSBpO1xuICAgIGRvbmU7XG4gICAgbGV0IGFjY3UgPSByZWYgXCJ4XCIgaW5cbiAgICBmb3IgaSA9IDAgdG8gNTQgKyBJbnQubWF4IDU1IGwgZG9cbiAgICAgIGxldCBqID0gaSBtb2QgNTUgaW5cbiAgICAgIGxldCBrID0gaSBtb2QgbCBpblxuICAgICAgYWNjdSA6PSBjb21iaW5lICFhY2N1IHNlZWQuKGspO1xuICAgICAgcy5zdC4oaikgPC0gKHMuc3QuKGopIGx4b3IgZXh0cmFjdCAhYWNjdSkgbGFuZCAweDNGRkZGRkZGOyAgKCogUFIjNTU3NSAqKVxuICAgIGRvbmU7XG4gICAgcy5pZHggPC0gMFxuXG5cbiAgbGV0IG1ha2Ugc2VlZCA9XG4gICAgbGV0IHJlc3VsdCA9IG5ld19zdGF0ZSAoKSBpblxuICAgIGZ1bGxfaW5pdCByZXN1bHQgc2VlZDtcbiAgICByZXN1bHRcblxuXG4gIGxldCBtYWtlX3NlbGZfaW5pdCAoKSA9IG1ha2UgKHJhbmRvbV9zZWVkICgpKVxuXG4gIGxldCBjb3B5IHMgPVxuICAgIGxldCByZXN1bHQgPSBuZXdfc3RhdGUgKCkgaW5cbiAgICBhc3NpZ24gcmVzdWx0IHM7XG4gICAgcmVzdWx0XG5cblxuICAoKiBSZXR1cm5zIDMwIHJhbmRvbSBiaXRzIGFzIGFuIGludGVnZXIgMCA8PSB4IDwgMTA3Mzc0MTgyNCAqKVxuICBsZXQgYml0cyBzID1cbiAgICBzLmlkeCA8LSAocy5pZHggKyAxKSBtb2QgNTU7XG4gICAgbGV0IGN1cnZhbCA9IHMuc3QuKHMuaWR4KSBpblxuICAgIGxldCBuZXd2YWwgPSBzLnN0Ligocy5pZHggKyAyNCkgbW9kIDU1KVxuICAgICAgICAgICAgICAgICArIChjdXJ2YWwgbHhvciAoKGN1cnZhbCBsc3IgMjUpIGxhbmQgMHgxRikpIGluXG4gICAgbGV0IG5ld3ZhbDMwID0gbmV3dmFsIGxhbmQgMHgzRkZGRkZGRiBpbiAgKCogUFIjNTU3NSAqKVxuICAgIHMuc3QuKHMuaWR4KSA8LSBuZXd2YWwzMDtcbiAgICBuZXd2YWwzMFxuXG5cbiAgbGV0IHJlYyBpbnRhdXggcyBuID1cbiAgICBsZXQgciA9IGJpdHMgcyBpblxuICAgIGxldCB2ID0gciBtb2QgbiBpblxuICAgIGlmIHIgLSB2ID4gMHgzRkZGRkZGRiAtIG4gKyAxIHRoZW4gaW50YXV4IHMgbiBlbHNlIHZcblxuICBsZXQgaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kID4gMHgzRkZGRkZGRiB8fCBib3VuZCA8PSAwXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnRcIlxuICAgIGVsc2UgaW50YXV4IHMgYm91bmRcblxuICBsZXQgcmVjIGludDYzYXV4IHMgbiA9XG4gICAgbGV0IG1heF9pbnRfMzIgPSAoMSBsc2wgMzApICsgMHgzRkZGRkZGRiBpbiAoKiAweDdGRkZGRkZGICopXG4gICAgbGV0IGIxID0gYml0cyBzIGluXG4gICAgbGV0IGIyID0gYml0cyBzIGluXG4gICAgbGV0IChyLCBtYXhfaW50KSA9XG4gICAgICBpZiBuIDw9IG1heF9pbnRfMzIgdGhlblxuICAgICAgICAoKiAzMSByYW5kb20gYml0cyBvbiBib3RoIDY0LWJpdCBPQ2FtbCBhbmQgSmF2YVNjcmlwdC5cbiAgICAgICAgICAgVXNlIHVwcGVyIDE1IGJpdHMgb2YgYjEgYW5kIDE2IGJpdHMgb2YgYjIuICopXG4gICAgICAgIGxldCBicG9zID1cbiAgICAgICAgICAoKChiMiBsYW5kIDB4M0ZGRkMwMDApIGxzbCAxKSBsb3IgKGIxIGxzciAxNSkpXG4gICAgICAgIGluXG4gICAgICAgICAgKGJwb3MsIG1heF9pbnRfMzIpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBiMyA9IGJpdHMgcyBpblxuICAgICAgICAoKiA2MiByYW5kb20gYml0cyBvbiA2NC1iaXQgT0NhbWw7IHVucmVhY2hhYmxlIG9uIEphdmFTY3JpcHQuXG4gICAgICAgICAgIFVzZSB1cHBlciAyMCBiaXRzIG9mIGIxIGFuZCAyMSBiaXRzIG9mIGIyIGFuZCBiMy4gKilcbiAgICAgICAgbGV0IGJwb3MgPVxuICAgICAgICAgICgoKChiMyBsYW5kIDB4M0ZGRkZFMDApIGxzbCAxMikgbG9yIChiMiBsc3IgOSkpIGxzbCAyMClcbiAgICAgICAgICAgIGxvciAoYjEgbHNyIDEwKVxuICAgICAgICBpblxuICAgICAgICAgIChicG9zLCBtYXhfaW50KVxuICAgIGluXG4gICAgbGV0IHYgPSByIG1vZCBuIGluXG4gICAgaWYgciAtIHYgPiBtYXhfaW50IC0gbiArIDEgdGhlbiBpbnQ2M2F1eCBzIG4gZWxzZSB2XG5cbiAgbGV0IGZ1bGxfaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uZnVsbF9pbnRcIlxuICAgIGVsc2UgaWYgYm91bmQgPiAweDNGRkZGRkZGIHRoZW5cbiAgICAgIGludDYzYXV4IHMgYm91bmRcbiAgICBlbHNlXG4gICAgICBpbnRhdXggcyBib3VuZFxuXG5cbiAgbGV0IHJlYyBpbnQzMmF1eCBzIG4gPVxuICAgIGxldCBiMSA9IEludDMyLm9mX2ludCAoYml0cyBzKSBpblxuICAgIGxldCBiMiA9IEludDMyLnNoaWZ0X2xlZnQgKEludDMyLm9mX2ludCAoYml0cyBzIGxhbmQgMSkpIDMwIGluXG4gICAgbGV0IHIgPSBJbnQzMi5sb2dvciBiMSBiMiBpblxuICAgIGxldCB2ID0gSW50MzIucmVtIHIgbiBpblxuICAgIGlmIEludDMyLnN1YiByIHYgPiBJbnQzMi5hZGQgKEludDMyLnN1YiBJbnQzMi5tYXhfaW50IG4pIDFsXG4gICAgdGhlbiBpbnQzMmF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50MzIgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyXCJcbiAgICBlbHNlIGludDMyYXV4IHMgYm91bmRcblxuXG4gIGxldCByZWMgaW50NjRhdXggcyBuID1cbiAgICBsZXQgYjEgPSBJbnQ2NC5vZl9pbnQgKGJpdHMgcykgaW5cbiAgICBsZXQgYjIgPSBJbnQ2NC5zaGlmdF9sZWZ0IChJbnQ2NC5vZl9pbnQgKGJpdHMgcykpIDMwIGluXG4gICAgbGV0IGIzID0gSW50NjQuc2hpZnRfbGVmdCAoSW50NjQub2ZfaW50IChiaXRzIHMgbGFuZCA3KSkgNjAgaW5cbiAgICBsZXQgciA9IEludDY0LmxvZ29yIGIxIChJbnQ2NC5sb2dvciBiMiBiMykgaW5cbiAgICBsZXQgdiA9IEludDY0LnJlbSByIG4gaW5cbiAgICBpZiBJbnQ2NC5zdWIgciB2ID4gSW50NjQuYWRkIChJbnQ2NC5zdWIgSW50NjQubWF4X2ludCBuKSAxTFxuICAgIHRoZW4gaW50NjRhdXggcyBuXG4gICAgZWxzZSB2XG5cbiAgbGV0IGludDY0IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDBMXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQ2NFwiXG4gICAgZWxzZSBpbnQ2NGF1eCBzIGJvdW5kXG5cblxuICBsZXQgbmF0aXZlaW50ID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyBib3VuZCAtPiBOYXRpdmVpbnQub2ZfaW50MzIgKGludDMyIHMgKE5hdGl2ZWludC50b19pbnQzMiBib3VuZCkpXG4gICAgZWxzZSBmdW4gcyBib3VuZCAtPiBJbnQ2NC50b19uYXRpdmVpbnQgKGludDY0IHMgKEludDY0Lm9mX25hdGl2ZWludCBib3VuZCkpXG5cblxuICAoKiBSZXR1cm5zIGEgZmxvYXQgMCA8PSB4IDw9IDEgd2l0aCBhdCBtb3N0IDYwIGJpdHMgb2YgcHJlY2lzaW9uLiAqKVxuICBsZXQgcmF3ZmxvYXQgcyA9XG4gICAgbGV0IHNjYWxlID0gMTA3Mzc0MTgyNC4wICAoKiAyXjMwICopXG4gICAgYW5kIHIxID0gU3RkbGliLmZsb2F0IChiaXRzIHMpXG4gICAgYW5kIHIyID0gU3RkbGliLmZsb2F0IChiaXRzIHMpXG4gICAgaW4gKHIxIC8uIHNjYWxlICsuIHIyKSAvLiBzY2FsZVxuXG5cbiAgbGV0IGZsb2F0IHMgYm91bmQgPSByYXdmbG9hdCBzICouIGJvdW5kXG5cbiAgbGV0IGJvb2wgcyA9IChiaXRzIHMgbGFuZCAxID0gMClcblxuZW5kXG5cbigqIFRoaXMgaXMgdGhlIHN0YXRlIHlvdSBnZXQgd2l0aCBbaW5pdCAyNzE4MjgxOF0gYW5kIHRoZW4gYXBwbHlpbmdcbiAgIHRoZSBcImxhbmQgMHgzRkZGRkZGRlwiIGZpbHRlciB0byB0aGVtLiAgU2VlICM1NTc1LCAjNTc5MywgIzU5NzcuICopXG5sZXQgZGVmYXVsdCA9IHtcbiAgU3RhdGUuc3QgPSBbfFxuICAgICAgMHgzYWUyNTIyYjsgMHgxZDhkNDYzNDsgMHgxNWI0ZmFkMDsgMHgxOGIxNGFjZTsgMHgxMmY4YTNjNDsgMHgzYjA4NmM0NztcbiAgICAgIDB4MTZkNDY3ZDY7IDB4MTAxZDkxYzc7IDB4MzIxZGYxNzc7IDB4MDE3NmMxOTM7IDB4MWZmNzJiZjE7IDB4MWU4ODkxMDk7XG4gICAgICAweDBiNDY0YjE4OyAweDJiODZiOTdjOyAweDA4OTFkYTQ4OyAweDAzMTM3NDYzOyAweDA4NWFjNWExOyAweDE1ZDYxZjJmO1xuICAgICAgMHgzYmNlZDM1OTsgMHgyOWMxYzEzMjsgMHgzYTg2NzY2ZTsgMHgzNjZkOGM4NjsgMHgxZjViNjIyMjsgMHgzY2UxYjU5ZjtcbiAgICAgIDB4MmViZjc4ZTE7IDB4MjdjZDFiODY7IDB4MjU4ZjNkYzM7IDB4Mzg5YTgxOTQ7IDB4MDJlNGM0NGM7IDB4MThjNDNmN2Q7XG4gICAgICAweDBmNmU1MzRmOyAweDFlN2RmMzU5OyAweDA1NWQwYjdlOyAweDEwZTg0ZTdlOyAweDEyNjE5OGU0OyAweDBlNzcyMmNiO1xuICAgICAgMHgxY2JlZGUyODsgMHgzMzkxYjk2NDsgMHgzZDQwZTkyYTsgMHgwYzU5OTMzZDsgMHgwYjhjZDBiNzsgMHgyNGVmZmYxYztcbiAgICAgIDB4MjgwM2ZkYWE7IDB4MDhlYmM3MmU7IDB4MGY1MjJlMzI7IDB4MDUzOThlZGM7IDB4MjE0NGEwNGM7IDB4MGFlZjNjYmQ7XG4gICAgICAweDAxYWQ0NzE5OyAweDM1YjkzY2Q2OyAweDJhNTU5ZDRmOyAweDFlNmZkNzY4OyAweDI2ZTI3ZjM2OyAweDE4NmYxOGMzO1xuICAgICAgMHgyZmJmOTY3YTtcbiAgICB8XTtcbiAgU3RhdGUuaWR4ID0gMDtcbn1cblxubGV0IGJpdHMgKCkgPSBTdGF0ZS5iaXRzIGRlZmF1bHRcbmxldCBpbnQgYm91bmQgPSBTdGF0ZS5pbnQgZGVmYXVsdCBib3VuZFxubGV0IGZ1bGxfaW50IGJvdW5kID0gU3RhdGUuZnVsbF9pbnQgZGVmYXVsdCBib3VuZFxubGV0IGludDMyIGJvdW5kID0gU3RhdGUuaW50MzIgZGVmYXVsdCBib3VuZFxubGV0IG5hdGl2ZWludCBib3VuZCA9IFN0YXRlLm5hdGl2ZWludCBkZWZhdWx0IGJvdW5kXG5sZXQgaW50NjQgYm91bmQgPSBTdGF0ZS5pbnQ2NCBkZWZhdWx0IGJvdW5kXG5sZXQgZmxvYXQgc2NhbGUgPSBTdGF0ZS5mbG9hdCBkZWZhdWx0IHNjYWxlXG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgZGVmYXVsdFxuXG5sZXQgZnVsbF9pbml0IHNlZWQgPSBTdGF0ZS5mdWxsX2luaXQgZGVmYXVsdCBzZWVkXG5sZXQgaW5pdCBzZWVkID0gU3RhdGUuZnVsbF9pbml0IGRlZmF1bHQgW3wgc2VlZCB8XVxubGV0IHNlbGZfaW5pdCAoKSA9IGZ1bGxfaW5pdCAocmFuZG9tX3NlZWQoKSlcblxuKCogTWFuaXB1bGF0aW5nIHRoZSBjdXJyZW50IHN0YXRlLiAqKVxuXG5sZXQgZ2V0X3N0YXRlICgpID0gU3RhdGUuY29weSBkZWZhdWx0XG5sZXQgc2V0X3N0YXRlIHMgPSBTdGF0ZS5hc3NpZ24gZGVmYXVsdCBzXG5cbigqKioqKioqKioqKioqKioqKioqKlxuXG4oKiBUZXN0IGZ1bmN0aW9ucy4gIE5vdCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeS5cbiAgIFRoZSBbY2hpc3F1YXJlXSBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIHdpdGggbiA+IDEwci5cbiAgIEl0IHJldHVybnMgYSB0cmlwbGUgKGxvdywgYWN0dWFsLCBoaWdoKS5cbiAgIElmIGxvdyA8PSBhY3R1YWwgPD0gaGlnaCwgdGhlIFtnXSBmdW5jdGlvbiBwYXNzZWQgdGhlIHRlc3QsXG4gICBvdGhlcndpc2UgaXQgZmFpbGVkLlxuXG4gIFNvbWUgcmVzdWx0czpcblxuaW5pdCAyNzE4MjgxODsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAwMFxuaW5pdCAyNzE4MjgxODsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCA1MDAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMDAgMTAwMFxuaW5pdCAyNzE4MjgxODsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAyNFxuaW5pdCAyOTk3OTI2NDM7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDEwMjRcbmluaXQgMTQxNDIxMzY7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDEwMjRcbmluaXQgMjcxODI4MTg7IGluaXRfZGlmZiAxMDI0OyBjaGlzcXVhcmUgZGlmZiAxMDAwMDAgMTAyNFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmIDEwMDsgY2hpc3F1YXJlIGRpZmYgMTAwMDAwIDEwMFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmMiAxMDI0OyBjaGlzcXVhcmUgZGlmZjIgMTAwMDAwIDEwMjRcbmluaXQgMjcxODI4MTg7IGluaXRfZGlmZjIgMTAwOyBjaGlzcXVhcmUgZGlmZjIgMTAwMDAwIDEwMFxuaW5pdCAxNDE0MjEzNjsgaW5pdF9kaWZmMiAxMDA7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAwXG5pbml0IDI5OTc5MjY0MzsgaW5pdF9kaWZmMiAxMDA7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAwXG4tIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDkzNi43NTQ0NDY3OTY2MzI0NjUsIDk5Ny41LCAxMDYzLjI0NTU1MzIwMzM2NzU0KVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgODkuNzQwMDAwMDAwMDA1MjM4NywgMTIwLilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg0ODU4LjU3ODY0Mzc2MjY5LCA1MDQ1LjUsIDUxNDEuNDIxMzU2MjM3MzEpXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPVxuKDkzNi43NTQ0NDY3OTY2MzI0NjUsIDk0NC44MDU5OTk5OTk5ODIzMDUsIDEwNjMuMjQ1NTUzMjAzMzY3NTQpXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTYwLiwgMTAxOS4xOTc0NDAwMDAwMDM1NSwgMTA4OC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTYwLiwgMTA1OS4zMTc3NjAwMDAwMDUzNiwgMTA4OC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTYwLiwgMTAzOS45ODQ2Mzk5OTk5OTUxMiwgMTA4OC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTYwLiwgMTA1NC4zODIwNzk5OTk5OTU3NywgMTA4OC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA5MC4wOTYwMDAwMDAwMDUsIDEyMC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTYwLiwgMTA3Ni43ODcyMDAwMDAwMDYxMiwgMTA4OC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4NS4xNzYwMDAwMDAwMDY3NTIxLCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgODUuMjE2MDAwMDAwMDAwMzQ5MiwgMTIwLilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDgwLjYyMjAwMDAwMDAwMzAyNjgsIDEyMC4pXG5cbiopXG5cbigqIFJldHVybiB0aGUgc3VtIG9mIHRoZSBzcXVhcmVzIG9mIHZbaTAsaTFbICopXG5sZXQgcmVjIHN1bXNxIHYgaTAgaTEgPVxuICBpZiBpMCA+PSBpMSB0aGVuIDAuMFxuICBlbHNlIGlmIGkxID0gaTAgKyAxIHRoZW4gU3RkbGliLmZsb2F0IHYuKGkwKSAqLiBTdGRsaWIuZmxvYXQgdi4oaTApXG4gIGVsc2Ugc3Vtc3EgdiBpMCAoKGkwK2kxKS8yKSArLiBzdW1zcSB2ICgoaTAraTEpLzIpIGkxXG5cblxubGV0IGNoaXNxdWFyZSBnIG4gciA9XG4gIGlmIG4gPD0gMTAgKiByIHRoZW4gaW52YWxpZF9hcmcgXCJjaGlzcXVhcmVcIjtcbiAgbGV0IGYgPSBBcnJheS5tYWtlIHIgMCBpblxuICBmb3IgaSA9IDEgdG8gbiBkb1xuICAgIGxldCB0ID0gZyByIGluXG4gICAgZi4odCkgPC0gZi4odCkgKyAxXG4gIGRvbmU7XG4gIGxldCB0ID0gc3Vtc3EgZiAwIHJcbiAgYW5kIHIgPSBTdGRsaWIuZmxvYXQgclxuICBhbmQgbiA9IFN0ZGxpYi5mbG9hdCBuIGluXG4gIGxldCBzciA9IDIuMCAqLiBzcXJ0IHIgaW5cbiAgKHIgLS4gc3IsICAgKHIgKi4gdCAvLiBuKSAtLiBuLCAgIHIgKy4gc3IpXG5cblxuKCogVGhpcyBpcyB0byB0ZXN0IGZvciBsaW5lYXIgZGVwZW5kZW5jaWVzIGJldHdlZW4gc3VjY2Vzc2l2ZSByYW5kb20gbnVtYmVycy5cbiopXG5sZXQgc3QgPSByZWYgMFxubGV0IGluaXRfZGlmZiByID0gc3QgOj0gaW50IHJcbmxldCBkaWZmIHIgPVxuICBsZXQgeDEgPSAhc3RcbiAgYW5kIHgyID0gaW50IHJcbiAgaW5cbiAgc3QgOj0geDI7XG4gIGlmIHgxID49IHgyIHRoZW5cbiAgICB4MSAtIHgyXG4gIGVsc2VcbiAgICByICsgeDEgLSB4MlxuXG5cbmxldCBzdDEgPSByZWYgMFxuYW5kIHN0MiA9IHJlZiAwXG5cblxuKCogVGhpcyBpcyB0byB0ZXN0IGZvciBxdWFkcmF0aWMgZGVwZW5kZW5jaWVzIGJldHdlZW4gc3VjY2Vzc2l2ZSByYW5kb21cbiAgIG51bWJlcnMuXG4qKVxubGV0IGluaXRfZGlmZjIgciA9IHN0MSA6PSBpbnQgcjsgc3QyIDo9IGludCByXG5sZXQgZGlmZjIgciA9XG4gIGxldCB4MSA9ICFzdDFcbiAgYW5kIHgyID0gIXN0MlxuICBhbmQgeDMgPSBpbnQgclxuICBpblxuICBzdDEgOj0geDI7XG4gIHN0MiA6PSB4MztcbiAgKHgzIC0geDIgLSB4MiArIHgxICsgMipyKSBtb2QgclxuXG5cbioqKioqKioqKioqKioqKioqKioqKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBIYXNoIHRhYmxlcyAqKVxuXG4oKiBXZSBkbyBkeW5hbWljIGhhc2hpbmcsIGFuZCByZXNpemUgdGhlIHRhYmxlIGFuZCByZWhhc2ggdGhlIGVsZW1lbnRzXG4gICB3aGVuIGJ1Y2tldHMgYmVjb21lIHRvbyBsb25nLiAqKVxuXG50eXBlICgnYSwgJ2IpIHQgPVxuICB7IG11dGFibGUgc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIG51bWJlciBvZiBlbnRyaWVzICopXG4gICAgbXV0YWJsZSBkYXRhOiAoJ2EsICdiKSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc2l6ZTogaW50OyAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgfVxuXG5hbmQgKCdhLCAnYikgYnVja2V0bGlzdCA9XG4gICAgRW1wdHlcbiAgfCBDb25zIG9mIHsgbXV0YWJsZSBrZXk6ICdhO1xuICAgICAgICAgICAgICBtdXRhYmxlIGRhdGE6ICdiO1xuICAgICAgICAgICAgICBtdXRhYmxlIG5leHQ6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgfVxuXG4oKiBUaGUgc2lnbiBvZiBpbml0aWFsX3NpemUgZW5jb2RlcyB0aGUgZmFjdCB0aGF0IGEgdHJhdmVyc2FsIGlzXG4gICBvbmdvaW5nIG9yIG5vdC5cblxuICAgVGhpcyBkaXNhYmxlcyB0aGUgZWZmaWNpZW50IGluIHBsYWNlIGltcGxlbWVudGF0aW9uIG9mIHJlc2l6aW5nLlxuKilcblxubGV0IG9uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgfHwgaC5pbml0aWFsX3NpemUgPCAwXG5cbmxldCBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBoLmluaXRpYWxfc2l6ZSA8LSAtIGguaW5pdGlhbF9zaXplXG5cbigqIFRvIHBpY2sgcmFuZG9tIHNlZWRzIGlmIHJlcXVlc3RlZCAqKVxuXG5sZXQgcmFuZG9taXplZF9kZWZhdWx0ID1cbiAgbGV0IHBhcmFtcyA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJPQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0cnkgU3lzLmdldGVudiBcIkNBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+IFwiXCIgaW5cbiAgU3RyaW5nLmNvbnRhaW5zIHBhcmFtcyAnUidcblxubGV0IHJhbmRvbWl6ZWQgPSByZWYgcmFuZG9taXplZF9kZWZhdWx0XG5cbmxldCByYW5kb21pemUgKCkgPSByYW5kb21pemVkIDo9IHRydWVcbmxldCBpc19yYW5kb21pemVkICgpID0gIXJhbmRvbWl6ZWRcblxubGV0IHBybmcgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQoKSlcblxuKCogRnVuY3Rpb25zIHdoaWNoIGFwcGVhciBiZWZvcmUgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIG11c3QgZWl0aGVyIGJlXG4gICBpbmRlcGVuZGVudCBvZiB0aGUgaGFzaCBmdW5jdGlvbiBvciB0YWtlIGl0IGFzIGEgcGFyYW1ldGVyIChzZWUgIzIyMDIgYW5kXG4gICBjb2RlIGJlbG93IHRoZSBmdW5jdG9yIGRlZmluaXRpb25zLiAqKVxuXG4oKiBDcmVhdGluZyBhIGZyZXNoLCBlbXB0eSB0YWJsZSAqKVxuXG5sZXQgcmVjIHBvd2VyXzJfYWJvdmUgeCBuID1cbiAgaWYgeCA+PSBuIHRoZW4geFxuICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gIGVsc2UgcG93ZXJfMl9hYm92ZSAoeCAqIDIpIG5cblxubGV0IGNyZWF0ZSA/KHJhbmRvbSA9ICFyYW5kb21pemVkKSBpbml0aWFsX3NpemUgPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgaW5pdGlhbF9zaXplIGluXG4gIGxldCBzZWVkID0gaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZykgZWxzZSAwIGluXG4gIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxubGV0IGNsZWFyIGggPVxuICBpZiBoLnNpemUgPiAwIHRoZW4gYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBBcnJheS5maWxsIGguZGF0YSAwIChBcnJheS5sZW5ndGggaC5kYXRhKSBFbXB0eVxuICBlbmRcblxubGV0IHJlc2V0IGggPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgICB8fCBsZW4gPSBhYnMgaC5pbml0aWFsX3NpemUgdGhlblxuICAgIGNsZWFyIGhcbiAgZWxzZSBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIChhYnMgaC5pbml0aWFsX3NpemUpIEVtcHR5XG4gIGVuZFxuXG5sZXQgY29weV9idWNrZXRsaXN0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGxldCByZWMgbG9vcCBwcmVjID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBDb25zIHByZWMgLT4gIHByZWMubmV4dCA8LSByXG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBsb29wIHIgbmV4dFxuICAgICAgaW5cbiAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgbG9vcCByIG5leHQ7XG4gICAgICByXG5cbmxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkubWFwIGNvcHlfYnVja2V0bGlzdCBoLmRhdGEgfVxuXG5sZXQgbGVuZ3RoIGggPSBoLnNpemVcblxubGV0IGluc2VydF9hbGxfYnVja2V0cyBpbmRleGZ1biBpbnBsYWNlIG9kYXRhIG5kYXRhID1cbiAgbGV0IG5zaXplID0gQXJyYXkubGVuZ3RoIG5kYXRhIGluXG4gIGxldCBuZGF0YV90YWlsID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICBsZXQgcmVjIGluc2VydF9idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gYXMgY2VsbCAtPlxuICAgICAgICBsZXQgY2VsbCA9XG4gICAgICAgICAgaWYgaW5wbGFjZSB0aGVuIGNlbGxcbiAgICAgICAgICBlbHNlIENvbnMge2tleTsgZGF0YTsgbmV4dCA9IEVtcHR5fVxuICAgICAgICBpblxuICAgICAgICBsZXQgbmlkeCA9IGluZGV4ZnVuIGtleSBpblxuICAgICAgICBiZWdpbiBtYXRjaCBuZGF0YV90YWlsLihuaWR4KSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gbmRhdGEuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBjZWxsO1xuICAgICAgICBlbmQ7XG4gICAgICAgIG5kYXRhX3RhaWwuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIGluc2VydF9idWNrZXQgbmV4dFxuICBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIG9kYXRhIC0gMSBkb1xuICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gIGRvbmU7XG4gIGlmIGlucGxhY2UgdGhlblxuICAgIGZvciBpID0gMCB0byBuc2l6ZSAtIDEgZG9cbiAgICAgIG1hdGNoIG5kYXRhX3RhaWwuKGkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBFbXB0eVxuICAgIGRvbmVcblxubGV0IHJlc2l6ZSBpbmRleGZ1biBoID1cbiAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gIGxldCBvc2l6ZSA9IEFycmF5Lmxlbmd0aCBvZGF0YSBpblxuICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgaWYgbnNpemUgPCBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgIGxldCBpbnBsYWNlID0gbm90IChvbmdvaW5nX3RyYXZlcnNhbCBoKSBpblxuICAgIGguZGF0YSA8LSBuZGF0YTsgICAgICAgICAgKCogc28gdGhhdCBpbmRleGZ1biBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgaW5zZXJ0X2FsbF9idWNrZXRzIChpbmRleGZ1biBoKSBpbnBsYWNlIG9kYXRhIG5kYXRhXG4gIGVuZFxuXG5sZXQgaXRlciBmIGggPVxuICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICAoKVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGYga2V5IGRhdGE7IGRvX2J1Y2tldCBuZXh0IGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGRvX2J1Y2tldCBkLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IHJlYyBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBFbXB0eVxuICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIEVtcHR5XG4gICAgICBlbmRcbiAgfCAoQ29ucyAoe2tleTsgZGF0YTsgbmV4dH0gYXMgYykpIGFzIHNsb3QgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGYga2V5IGRhdGEgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjIG5leHRcbiAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIHNsb3RcbiAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gc2xvdFxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBjLmRhdGEgPC0gZGF0YTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHNsb3QgbmV4dFxuICAgICAgZW5kXG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgZiBoID1cbiAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgRW1wdHkgaC5kYXRhLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoXG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgZm9sZCBmIGggaW5pdCA9XG4gIGxldCByZWMgZG9fYnVja2V0IGIgYWNjdSA9XG4gICAgbWF0Y2ggYiB3aXRoXG4gICAgICBFbXB0eSAtPlxuICAgICAgICBhY2N1XG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZG9fYnVja2V0IG5leHQgKGYga2V5IGRhdGEgYWNjdSkgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgbGV0IGFjY3UgPSByZWYgaW5pdCBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGFjY3UgOj0gZG9fYnVja2V0IGQuKGkpICFhY2N1XG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgIWFjY3VcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbnR5cGUgc3RhdGlzdGljcyA9IHtcbiAgbnVtX2JpbmRpbmdzOiBpbnQ7XG4gIG51bV9idWNrZXRzOiBpbnQ7XG4gIG1heF9idWNrZXRfbGVuZ3RoOiBpbnQ7XG4gIGJ1Y2tldF9oaXN0b2dyYW06IGludCBhcnJheVxufVxuXG5sZXQgcmVjIGJ1Y2tldF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYWNjdVxuICB8IENvbnN7bmV4dH0gLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIG5leHRcblxubGV0IHN0YXRzIGggPVxuICBsZXQgbWJsID1cbiAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgQXJyYXkuaXRlclxuICAgIChmdW4gYiAtPlxuICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgaC5kYXRhO1xuICB7IG51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSB0YmwgPVxuICAoKiBjYXB0dXJlIGN1cnJlbnQgYXJyYXksIHNvIHRoYXQgZXZlbiBpZiB0aGUgdGFibGUgaXMgcmVzaXplZCB3ZVxuICAgICBrZWVwIGl0ZXJhdGluZyBvbiB0aGUgc2FtZSBhcnJheSAqKVxuICBsZXQgdGJsX2RhdGEgPSB0YmwuZGF0YSBpblxuICAoKiBzdGF0ZTogaW5kZXggKiBuZXh0IGJ1Y2tldCB0byB0cmF2ZXJzZSAqKVxuICBsZXQgcmVjIGF1eCBpIGJ1Y2sgKCkgPSBtYXRjaCBidWNrIHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdGJsX2RhdGFcbiAgICAgICAgdGhlbiBTZXEuTmlsXG4gICAgICAgIGVsc2UgYXV4KGkrMSkgdGJsX2RhdGEuKGkpICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIFNlcS5Db25zICgoa2V5LCBkYXRhKSwgYXV4IGkgbmV4dClcbiAgaW5cbiAgYXV4IDAgRW1wdHlcblxubGV0IHRvX3NlcV9rZXlzIG0gPSBTZXEubWFwIGZzdCAodG9fc2VxIG0pXG5cbmxldCB0b19zZXFfdmFsdWVzIG0gPSBTZXEubWFwIHNuZCAodG9fc2VxIG0pXG5cbigqIEZ1bmN0b3JpYWwgaW50ZXJmYWNlICopXG5cbm1vZHVsZSB0eXBlIEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGhhc2g6IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTZWVkZWRIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBoYXNoOiBpbnQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlOiBpbnQgLT4gJ2EgdFxuICAgIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBjb3B5OiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIHJlbW92ZTogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICAgIHZhbCBmaW5kOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gICAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQ6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoOiAnYSB0IC0+IGludFxuICAgIHZhbCBzdGF0czogJ2EgdCAtPiBzdGF0aXN0aWNzXG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTZWVkZWRTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICEnYSB0XG4gICAgdmFsIGNyZWF0ZSA6ID9yYW5kb206Ym9vbCAtPiBpbnQgLT4gJ2EgdFxuICAgIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZCA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICAgIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyIDogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQgOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlU2VlZGVkKEg6IFNlZWRlZEhhc2hlZFR5cGUpOiAoU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIHR5cGUga2V5ID0gSC50XG4gICAgdHlwZSAnYSBoYXNodGJsID0gKGtleSwgJ2EpIHRcbiAgICB0eXBlICdhIHQgPSAnYSBoYXNodGJsXG4gICAgbGV0IGNyZWF0ZSA9IGNyZWF0ZVxuICAgIGxldCBjbGVhciA9IGNsZWFyXG4gICAgbGV0IHJlc2V0ID0gcmVzZXRcbiAgICBsZXQgY29weSA9IGNvcHlcblxuICAgIGxldCBrZXlfaW5kZXggaCBrZXkgPVxuICAgICAgKEguaGFzaCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBhZGQgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG4gICAgbGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgKClcbiAgICAgIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGJlZ2luXG4gICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbiAgICBsZXQgcmVtb3ZlIGgga2V5ID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXQgcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBbXVxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhPWQ7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gZCA6OiBmaW5kX2luX2J1Y2tldCBuZXh0XG4gICAgICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gICAgICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCByZWMgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgQ29ucyAoe2tleT1rOyBuZXh0fSBhcyBzbG90KSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxuICAgIGxldCByZXBsYWNlIGgga2V5IGRhdGEgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgaWYgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbCB0aGVuIGJlZ2luXG4gICAgICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG4gICAgICBlbmRcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgICAgIEguZXF1YWwgayBrZXkgfHwgbWVtX2luX2J1Y2tldCBuZXh0IGluXG4gICAgICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IGFkZF9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG4gICAgbGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcblxuICAgIGxldCBpdGVyID0gaXRlclxuICAgIGxldCBmaWx0ZXJfbWFwX2lucGxhY2UgPSBmaWx0ZXJfbWFwX2lucGxhY2VcbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IHN0YXRzID0gc3RhdHNcbiAgICBsZXQgdG9fc2VxID0gdG9fc2VxXG4gICAgbGV0IHRvX3NlcV9rZXlzID0gdG9fc2VxX2tleXNcbiAgICBsZXQgdG9fc2VxX3ZhbHVlcyA9IHRvX3NlcV92YWx1ZXNcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKEg6IEhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuKCogUG9seW1vcnBoaWMgaGFzaCBmdW5jdGlvbi1iYXNlZCB0YWJsZXMgKilcbigqIENvZGUgaW5jbHVkZWQgYmVsb3cgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIHRvIGd1YXJkIGFnYWluc3QgYWNjaWRlbnRhbFxuICAgdXNlIC0gc2VlICMyMjAyICopXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxuXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxubGV0IGhhc2hfcGFyYW0gbjEgbjIgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIG4xIG4yIDAgeFxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcblxubGV0IGtleV9pbmRleCBoIGtleSA9XG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0XG4gIHRoZW4gKHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkhhc2h0Ymw6IHVuc3VwcG9ydGVkIGhhc2ggdGFibGUgZm9ybWF0XCJcblxubGV0IGFkZCBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG5sZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgKClcbiAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBiZWdpblxuICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICBlbmRcbiAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG5sZXQgcmVtb3ZlIGgga2V5ID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxubGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxubGV0IGZpbmQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbmxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxubGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxubGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIFtdXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGRhdGEgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG5sZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICBlbmRcblxubGV0IG1lbSBoIGtleSA9XG4gIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgIGNvbXBhcmUgayBrZXkgPSAwIHx8IG1lbV9pbl9idWNrZXQgbmV4dCBpblxuICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgYWRkX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxubGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgdGJsXG5cbmxldCByZWJ1aWxkID8ocmFuZG9tID0gIXJhbmRvbWl6ZWQpIGggPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgKEFycmF5Lmxlbmd0aCBoLmRhdGEpIGluXG4gIGxldCBzZWVkID1cbiAgICBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKVxuICAgIGVsc2UgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLnNlZWRcbiAgICBlbHNlIDAgaW5cbiAgbGV0IGgnID0ge1xuICAgIHNpemUgPSBoLnNpemU7XG4gICAgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eTtcbiAgICBzZWVkID0gc2VlZDtcbiAgICBpbml0aWFsX3NpemUgPSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguaW5pdGlhbF9zaXplIGVsc2Ugc1xuICB9IGluXG4gIGluc2VydF9hbGxfYnVja2V0cyAoa2V5X2luZGV4IGgnKSBmYWxzZSBoLmRhdGEgaCcuZGF0YTtcbiAgaCdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFdlYWsgYXJyYXkgb3BlcmF0aW9ucyAqKVxuXG50eXBlICEnYSB0XG5cbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiAnYSB0ID0gXCJjYW1sX3dlYWtfY3JlYXRlXCJcblxubGV0IGNyZWF0ZSBsID1cbiAgaWYgbm90ICgwIDw9IGwgJiYgbCA8PSBPYmouRXBoZW1lcm9uLm1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgIGludmFsaWRfYXJnKFwiV2Vhay5jcmVhdGVcIik7XG4gIGNyZWF0ZSBsXG5cbigqKiBudW1iZXIgb2YgYWRkaXRpb25hbCB2YWx1ZXMgaW4gYSB3ZWFrIHBvaW50ZXIgKilcbmxldCBhZGRpdGlvbmFsX3ZhbHVlcyA9IDJcblxubGV0IGxlbmd0aCB4ID0gT2JqLnNpemUoT2JqLnJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG5sZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gIGlmIG5vdCAoMCA8PSBvICYmIG8gPCBsZW5ndGggZSkgdGhlblxuICAgIGludmFsaWRfYXJnKG1zZylcblxuZXh0ZXJuYWwgc2V0JyA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbmV4dGVybmFsIHVuc2V0IDogJ2EgdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG5sZXQgc2V0IGUgbyB4ID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5zZXRcIjtcbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiB1bnNldCBlIG9cbiAgfCBTb21lIHggLT4gc2V0JyBlIG8geFxuXG5leHRlcm5hbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYSBvcHRpb24gPSBcImNhbWxfd2Vha19nZXRcIlxubGV0IGdldCBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmdldFwiO1xuICBnZXQgZSBvXG5cbmV4dGVybmFsIGdldF9jb3B5IDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uID0gXCJjYW1sX3dlYWtfZ2V0X2NvcHlcIlxubGV0IGdldF9jb3B5IGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuZ2V0X2NvcHlcIjtcbiAgZ2V0X2NvcHkgZSBvXG5cbmV4dGVybmFsIGNoZWNrIDogJ2EgdCAtPiBpbnQgLT4gYm9vbCA9IFwiY2FtbF93ZWFrX2NoZWNrXCJcbmxldCBjaGVjayBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmNoZWNrXCI7XG4gIGNoZWNrIGUgb1xuXG5leHRlcm5hbCBibGl0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfd2Vha19ibGl0XCJcblxuKCogYmxpdDogc3JjIHNyY29mZiBkc3QgZHN0b2ZmIGxlbiAqKVxubGV0IGJsaXQgZTEgbzEgZTIgbzIgbCA9XG4gIGlmIGwgPCAwIHx8IG8xIDwgMCB8fCBvMSA+IGxlbmd0aCBlMSAtIGxcbiAgICAgfHwgbzIgPCAwIHx8IG8yID4gbGVuZ3RoIGUyIC0gbFxuICB0aGVuIGludmFsaWRfYXJnIFwiV2Vhay5ibGl0XCJcbiAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0IGUxIG8xIGUyIG8yIGxcblxubGV0IGZpbGwgYXIgb2ZzIGxlbiB4ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhciAtIGxlblxuICB0aGVuIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiV2Vhay5maWxsXCIpXG4gIGVsc2UgYmVnaW5cbiAgICBmb3IgaSA9IG9mcyB0byAob2ZzICsgbGVuIC0gMSkgZG9cbiAgICAgIHNldCBhciBpIHhcbiAgICBkb25lXG4gIGVuZFxuXG5cbigqKiBXZWFrIGhhc2ggdGFibGVzICopXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBkYXRhXG4gIHR5cGUgdFxuICB2YWwgY3JlYXRlIDogaW50IC0+IHRcbiAgdmFsIGNsZWFyIDogdCAtPiB1bml0XG4gIHZhbCBtZXJnZSA6IHQgLT4gZGF0YSAtPiBkYXRhXG4gIHZhbCBhZGQgOiB0IC0+IGRhdGEgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogdCAtPiBkYXRhIC0+IHVuaXRcbiAgdmFsIGZpbmQgOiB0IC0+IGRhdGEgLT4gZGF0YVxuICB2YWwgZmluZF9vcHQgOiB0IC0+IGRhdGEgLT4gZGF0YSBvcHRpb25cbiAgdmFsIGZpbmRfYWxsIDogdCAtPiBkYXRhIC0+IGRhdGEgbGlzdFxuICB2YWwgbWVtIDogdCAtPiBkYXRhIC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoZGF0YSAtPiB1bml0KSAtPiB0IC0+IHVuaXRcbiAgdmFsIGZvbGQgOiAoZGF0YSAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgY291bnQgOiB0IC0+IGludFxuICB2YWwgc3RhdHMgOiB0IC0+IGludCAqIGludCAqIGludCAqIGludCAqIGludCAqIGludFxuZW5kXG5cbm1vZHVsZSBNYWtlIChIIDogSGFzaHRibC5IYXNoZWRUeXBlKSA6IChTIHdpdGggdHlwZSBkYXRhID0gSC50KSA9IHN0cnVjdFxuXG4gIHR5cGUgJ2Egd2Vha190ID0gJ2EgdFxuICBsZXQgd2Vha19jcmVhdGUgPSBjcmVhdGVcbiAgbGV0IGVtcHR5YnVja2V0ID0gd2Vha19jcmVhdGUgMFxuXG4gIHR5cGUgZGF0YSA9IEgudFxuXG4gIHR5cGUgdCA9IHtcbiAgICBtdXRhYmxlIHRhYmxlIDogZGF0YSB3ZWFrX3QgYXJyYXk7XG4gICAgbXV0YWJsZSBoYXNoZXMgOiBpbnQgYXJyYXkgYXJyYXk7XG4gICAgbXV0YWJsZSBsaW1pdCA6IGludDsgICAgICAgICAgICAgICAoKiBidWNrZXQgc2l6ZSBsaW1pdCAqKVxuICAgIG11dGFibGUgb3ZlcnNpemUgOiBpbnQ7ICAgICAgICAgICAgKCogbnVtYmVyIG9mIG92ZXJzaXplIGJ1Y2tldHMgKilcbiAgICBtdXRhYmxlIHJvdmVyIDogaW50OyAgICAgICAgICAgICAgICgqIGZvciBpbnRlcm5hbCBib29ra2VlcGluZyAqKVxuICB9XG5cbiAgbGV0IGdldF9pbmRleCB0IGggPSAoaCBsYW5kIG1heF9pbnQpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cbiAgbGV0IGxpbWl0ID0gN1xuICBsZXQgb3Zlcl9saW1pdCA9IDJcblxuICBsZXQgY3JlYXRlIHN6ID1cbiAgICBsZXQgc3ogPSBpZiBzeiA8IDcgdGhlbiA3IGVsc2Ugc3ogaW5cbiAgICBsZXQgc3ogPSBpZiBzeiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gU3lzLm1heF9hcnJheV9sZW5ndGggZWxzZSBzeiBpblxuICAgIHtcbiAgICAgIHRhYmxlID0gQXJyYXkubWFrZSBzeiBlbXB0eWJ1Y2tldDtcbiAgICAgIGhhc2hlcyA9IEFycmF5Lm1ha2Ugc3ogW3wgfF07XG4gICAgICBsaW1pdCA9IGxpbWl0O1xuICAgICAgb3ZlcnNpemUgPSAwO1xuICAgICAgcm92ZXIgPSAwO1xuICAgIH1cblxuICBsZXQgY2xlYXIgdCA9XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgICAgdC50YWJsZS4oaSkgPC0gZW1wdHlidWNrZXQ7XG4gICAgICB0Lmhhc2hlcy4oaSkgPC0gW3wgfF07XG4gICAgZG9uZTtcbiAgICB0LmxpbWl0IDwtIGxpbWl0O1xuICAgIHQub3ZlcnNpemUgPC0gMFxuXG5cbiAgbGV0IGZvbGQgZiB0IGluaXQgPVxuICAgIGxldCByZWMgZm9sZF9idWNrZXQgaSBiIGFjY3UgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIChmIHYgYWNjdSlcbiAgICAgIHwgTm9uZSAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIGFjY3VcbiAgICBpblxuICAgIEFycmF5LmZvbGRfcmlnaHQgKGZvbGRfYnVja2V0IDApIHQudGFibGUgaW5pdFxuXG5cbiAgbGV0IGl0ZXIgZiB0ID1cbiAgICBsZXQgcmVjIGl0ZXJfYnVja2V0IGkgYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmIHY7IGl0ZXJfYnVja2V0IChpKzEpIGJcbiAgICAgIHwgTm9uZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgaXRlcl93ZWFrIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGogYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggY2hlY2sgYiBpIHdpdGhcbiAgICAgIHwgdHJ1ZSAtPiBmIGIgdC5oYXNoZXMuKGopIGk7IGl0ZXJfYnVja2V0IChpKzEpIGogYlxuICAgICAgfCBmYWxzZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICBpblxuICAgIEFycmF5Lml0ZXJpIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgcmVjIGNvdW50X2J1Y2tldCBpIGIgYWNjdSA9XG4gICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgIGNvdW50X2J1Y2tldCAoaSsxKSBiIChhY2N1ICsgKGlmIGNoZWNrIGIgaSB0aGVuIDEgZWxzZSAwKSlcblxuXG4gIGxldCBjb3VudCB0ID1cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChjb3VudF9idWNrZXQgMCkgdC50YWJsZSAwXG5cblxuICBsZXQgbmV4dF9zeiBuID0gSW50Lm1pbiAoMyAqIG4gLyAyICsgMykgU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgbGV0IHByZXZfc3ogbiA9ICgobiAtIDMpICogMiArIDIpIC8gM1xuXG4gIGxldCB0ZXN0X3Nocmlua19idWNrZXQgdCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKHQucm92ZXIpIGluXG4gICAgbGV0IGhidWNrZXQgPSB0Lmhhc2hlcy4odC5yb3ZlcikgaW5cbiAgICBsZXQgbGVuID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCBwcmV2X2xlbiA9IHByZXZfc3ogbGVuIGluXG4gICAgbGV0IGxpdmUgPSBjb3VudF9idWNrZXQgMCBidWNrZXQgMCBpblxuICAgIGlmIGxpdmUgPD0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IHJlYyBsb29wIGkgaiA9XG4gICAgICAgIGlmIGogPj0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgICAgIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gbG9vcCAoaSArIDEpIGpcbiAgICAgICAgICBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBqIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGJsaXQgYnVja2V0IGogYnVja2V0IGkgMTtcbiAgICAgICAgICAgIGhidWNrZXQuKGkpIDwtIGhidWNrZXQuKGopO1xuICAgICAgICAgICAgbG9vcCAoaSArIDEpIChqIC0gMSk7XG4gICAgICAgICAgZW5kIGVsc2UgbG9vcCBpIChqIC0gMSk7XG4gICAgICAgIGVuZDtcbiAgICAgIGluXG4gICAgICBsb29wIDAgKGxlbmd0aCBidWNrZXQgLSAxKTtcbiAgICAgIGlmIHByZXZfbGVuID0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gW3wgfF07XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgcHJldl9sZW4gaW5cbiAgICAgICAgYmxpdCBidWNrZXQgMCBuZXdidWNrZXQgMCBwcmV2X2xlbjtcbiAgICAgICAgdC50YWJsZS4odC5yb3ZlcikgPC0gbmV3YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gQXJyYXkuc3ViIGhidWNrZXQgMCBwcmV2X2xlblxuICAgICAgZW5kO1xuICAgICAgaWYgbGVuID4gdC5saW1pdCAmJiBwcmV2X2xlbiA8PSB0LmxpbWl0IHRoZW4gdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplIC0gMTtcbiAgICBlbmQ7XG4gICAgdC5yb3ZlciA8LSAodC5yb3ZlciArIDEpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cblxuICBsZXQgcmVjIHJlc2l6ZSB0ID1cbiAgICBsZXQgb2xkbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbmV3bGVuID0gbmV4dF9zeiBvbGRsZW4gaW5cbiAgICBpZiBuZXdsZW4gPiBvbGRsZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IG5ld3QgPSBjcmVhdGUgbmV3bGVuIGluXG4gICAgICBsZXQgYWRkX3dlYWsgb2Igb2ggb2kgPVxuICAgICAgICBsZXQgc2V0dGVyIG5iIG5pIF8gPSBibGl0IG9iIG9pIG5iIG5pIDEgaW5cbiAgICAgICAgbGV0IGggPSBvaC4ob2kpIGluXG4gICAgICAgIGFkZF9hdXggbmV3dCBzZXR0ZXIgTm9uZSBoIChnZXRfaW5kZXggbmV3dCBoKTtcbiAgICAgIGluXG4gICAgICBpdGVyX3dlYWsgYWRkX3dlYWsgdDtcbiAgICAgIHQudGFibGUgPC0gbmV3dC50YWJsZTtcbiAgICAgIHQuaGFzaGVzIDwtIG5ld3QuaGFzaGVzO1xuICAgICAgdC5saW1pdCA8LSBuZXd0LmxpbWl0O1xuICAgICAgdC5vdmVyc2l6ZSA8LSBuZXd0Lm92ZXJzaXplO1xuICAgICAgdC5yb3ZlciA8LSB0LnJvdmVyIG1vZCBBcnJheS5sZW5ndGggbmV3dC50YWJsZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgdC5saW1pdCA8LSBtYXhfaW50OyAgICAgICAgICAgICAoKiBtYXhpbXVtIHNpemUgYWxyZWFkeSByZWFjaGVkICopXG4gICAgICB0Lm92ZXJzaXplIDwtIDA7XG4gICAgZW5kXG5cbiAgYW5kIGFkZF9hdXggdCBzZXR0ZXIgZCBoIGluZGV4ID1cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZXdzeiA9XG4gICAgICAgICAgSW50Lm1pbiAoMyAqIHN6IC8gMiArIDMpIChTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzKVxuICAgICAgICBpblxuICAgICAgICBpZiBuZXdzeiA8PSBzeiB0aGVuIGZhaWx3aXRoIFwiV2Vhay5NYWtlOiBoYXNoIGJ1Y2tldCBjYW5ub3QgZ3JvdyBtb3JlXCI7XG4gICAgICAgIGxldCBuZXdidWNrZXQgPSB3ZWFrX2NyZWF0ZSBuZXdzeiBpblxuICAgICAgICBsZXQgbmV3aGFzaGVzID0gQXJyYXkubWFrZSBuZXdzeiAwIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgc3o7XG4gICAgICAgIEFycmF5LmJsaXQgaGFzaGVzIDAgbmV3aGFzaGVzIDAgc3o7XG4gICAgICAgIHNldHRlciBuZXdidWNrZXQgc3ogZDtcbiAgICAgICAgbmV3aGFzaGVzLihzeikgPC0gaDtcbiAgICAgICAgdC50YWJsZS4oaW5kZXgpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKGluZGV4KSA8LSBuZXdoYXNoZXM7XG4gICAgICAgIGlmIHN6IDw9IHQubGltaXQgJiYgbmV3c3ogPiB0LmxpbWl0IHRoZW4gYmVnaW5cbiAgICAgICAgICB0Lm92ZXJzaXplIDwtIHQub3ZlcnNpemUgKyAxO1xuICAgICAgICAgIGZvciBfaSA9IDAgdG8gb3Zlcl9saW1pdCBkbyB0ZXN0X3Nocmlua19idWNrZXQgdCBkb25lO1xuICAgICAgICBlbmQ7XG4gICAgICAgIGlmIHQub3ZlcnNpemUgPiBBcnJheS5sZW5ndGggdC50YWJsZSAvIG92ZXJfbGltaXQgdGhlbiByZXNpemUgdDtcbiAgICAgIGVuZCBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gYmVnaW5cbiAgICAgICAgbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXR0ZXIgYnVja2V0IGkgZDtcbiAgICAgICAgaGFzaGVzLihpKSA8LSBoO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgYWRkIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCAoZ2V0X2luZGV4IHQgaClcblxuXG4gIGxldCBmaW5kX29yIHQgZCBpZm5vdGZvdW5kID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gaWZub3Rmb3VuZCBoIGluZGV4XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBtZXJnZSB0IGQgPVxuICAgIGZpbmRfb3IgdCBkIChmdW4gaCBpbmRleCAtPiBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggaW5kZXg7IGQpXG5cblxuICBsZXQgZmluZCB0IGQgPSBmaW5kX29yIHQgZCAoZnVuIF9oIF9pbmRleCAtPiByYWlzZSBOb3RfZm91bmQpXG5cbiAgbGV0IGZpbmRfb3B0IHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIE5vbmVcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIF8gYXMgdiAtPiB2XG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgZmluZF9zaGFkb3cgdCBkIGlmZm91bmQgaWZub3Rmb3VuZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGlmbm90Zm91bmRcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGQgLT4gaWZmb3VuZCBidWNrZXQgaVxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IHJlbW92ZSB0IGQgPSBmaW5kX3NoYWRvdyB0IGQgKGZ1biB3IGkgLT4gc2V0IHcgaSBOb25lKSAoKVxuXG5cbiAgbGV0IG1lbSB0IGQgPSBmaW5kX3NoYWRvdyB0IGQgKGZ1biBfdyBfaSAtPiB0cnVlKSBmYWxzZVxuXG5cbiAgbGV0IGZpbmRfYWxsIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgYWNjdSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gYWNjdVxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBsb29wIChpICsgMSkgKHYgOjogYWNjdSlcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpIGFjY3VcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgaW5cbiAgICBsb29wIDAgW11cblxuXG4gIGxldCBzdGF0cyB0ID1cbiAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbGVucyA9IEFycmF5Lm1hcCBsZW5ndGggdC50YWJsZSBpblxuICAgIEFycmF5LnNvcnQgY29tcGFyZSBsZW5zO1xuICAgIGxldCB0b3RsZW4gPSBBcnJheS5mb2xkX2xlZnQgKCArICkgMCBsZW5zIGluXG4gICAgKGxlbiwgY291bnQgdCwgdG90bGVuLCBsZW5zLigwKSwgbGVucy4obGVuLzIpLCBsZW5zLihsZW4tMSkpXG5cblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgcHJldHR5LXByaW50aW5nIGZhY2lsaXR5IGFuZCBkZWZpbml0aW9uIG9mIGZvcm1hdHRlcnMgZm9yICdwYXJhbGxlbCdcbiAgIChpLmUuIHVucmVsYXRlZCBvciBpbmRlcGVuZGVudCkgcHJldHR5LXByaW50aW5nIG9uIG11bHRpcGxlIG91dCBjaGFubmVscy4gKilcblxuKCpcbiAgIFRoZSBwcmV0dHktcHJpbnRpbmcgZW5naW5lIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy5cbiopXG5cbmxldCBpZCB4ID0geFxuXG4oKiBBIGRldm90ZWQgdHlwZSBmb3Igc2l6ZXMgdG8gYXZvaWQgY29uZnVzaW9uXG4gICBiZXR3ZWVuIHNpemVzIGFuZCBtZXJlIGludGVnZXJzLiAqKVxubW9kdWxlIFNpemUgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICB2YWwgemVybyA6IHRcbiAgdmFsIHVua25vd24gOiB0XG4gIHZhbCBpc19rbm93biA6IHQgLT4gYm9vbFxuZW5kICA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgdG9faW50ID0gaWRcbiAgbGV0IG9mX2ludCA9IGlkXG4gIGxldCB6ZXJvID0gMFxuICBsZXQgdW5rbm93biA9IC0xXG4gIGxldCBpc19rbm93biBuID0gbiA+PSAwXG5lbmRcblxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgYm94ZXMgZGVmaW5pdGlvbjpcbiAgIGEgcHJldHR5LXByaW50aW5nIGJveCBpcyBlaXRoZXJcbiAgIC0gaGJveDogaG9yaXpvbnRhbCBib3ggKG5vIGxpbmUgc3BsaXR0aW5nKVxuICAgLSB2Ym94OiB2ZXJ0aWNhbCBib3ggKGV2ZXJ5IGJyZWFrIGhpbnQgc3BsaXRzIHRoZSBsaW5lKVxuICAgLSBodmJveDogaG9yaXpvbnRhbC92ZXJ0aWNhbCBib3hcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIGJveCBpZiBpdCBmaXRzIG9uXG4gICAgICB0aGUgY3VycmVudCBsaW5lLCBvdGhlcndpc2UgdGhlIGJveCBiZWhhdmVzIGFzIGEgdmVydGljYWwgYm94KVxuICAgLSBob3Zib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3hcbiAgICAgKHRoZSBib3ggaXMgY29tcGFjdGluZyBtYXRlcmlhbCwgcHJpbnRpbmcgYXMgbXVjaCBtYXRlcmlhbCBhcyBwb3NzaWJsZVxuICAgICAgb24gZXZlcnkgbGluZXMpXG4gICAtIGJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveCB3aXRoIGVuaGFuY2VkIGJveCBzdHJ1Y3R1cmVcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGJveCBidXQgYnJlYWsgaGludHMgc3BsaXRcbiAgICAgIHRoZSBsaW5lIGlmIHNwbGl0dGluZyB3b3VsZCBtb3ZlIHRvIHRoZSBsZWZ0KVxuKilcbnR5cGUgYm94X3R5cGUgPSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHNcblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIHRva2VucyBkZWZpbml0aW9uOlxuICAgYXJlIGVpdGhlciB0ZXh0IHRvIHByaW50IG9yIHByZXR0eSBwcmludGluZ1xuICAgZWxlbWVudHMgdGhhdCBkcml2ZSBpbmRlbnRhdGlvbiBhbmQgbGluZSBzcGxpdHRpbmcuICopXG50eXBlIHBwX3Rva2VuID1cbiAgfCBQcF90ZXh0IG9mIHN0cmluZyAgICAgICAgICAoKiBub3JtYWwgdGV4dCAqKVxuICB8IFBwX2JyZWFrIG9mIHsgICAgICAgICAgICAgICgqIGNvbXBsZXRlIGJyZWFrICopXG4gICAgICBmaXRzOiBzdHJpbmcgKiBpbnQgKiBzdHJpbmc7ICAgKCogbGluZSBpcyBub3Qgc3BsaXQgKilcbiAgICAgIGJyZWFrczogc3RyaW5nICogaW50ICogc3RyaW5nOyAoKiBsaW5lIGlzIHNwbGl0ICopXG4gICAgfVxuICB8IFBwX3RicmVhayBvZiBpbnQgKiBpbnQgICAgICgqIGdvIHRvIG5leHQgdGFidWxhdGlvbiAqKVxuICB8IFBwX3N0YWIgICAgICAgICAgICAgICAgICAgICgqIHNldCBhIHRhYnVsYXRpb24gKilcbiAgfCBQcF9iZWdpbiBvZiBpbnQgKiBib3hfdHlwZSAoKiBiZWdpbm5pbmcgb2YgYSBib3ggKilcbiAgfCBQcF9lbmQgICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSBib3ggKilcbiAgfCBQcF90YmVnaW4gb2YgdGJveCAgICAgICAgICAoKiBiZWdpbm5pbmcgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX3RlbmQgICAgICAgICAgICAgICAgICAgICgqIGVuZCBvZiBhIHRhYnVsYXRpb24gYm94ICopXG4gIHwgUHBfbmV3bGluZSAgICAgICAgICAgICAgICAgKCogdG8gZm9yY2UgYSBuZXdsaW5lIGluc2lkZSBhIGJveCAqKVxuICB8IFBwX2lmX25ld2xpbmUgICAgICAgICAgICAgICgqIHRvIGRvIHNvbWV0aGluZyBvbmx5IGlmIHRoaXMgdmVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgaGFzIGJlZW4gYnJva2VuICopXG4gIHwgUHBfb3Blbl90YWcgb2Ygc3RhZyAgICAgICAgICgqIG9wZW5pbmcgYSB0YWcgbmFtZSAqKVxuICB8IFBwX2Nsb3NlX3RhZyAgICAgICAgICAgICAgICgqIGNsb3NpbmcgdGhlIG1vc3QgcmVjZW50bHkgb3BlbiB0YWcgKilcblxuYW5kIHN0YWcgPSAuLlxuXG5hbmQgdGJveCA9IFBwX3Rib3ggb2YgaW50IGxpc3QgcmVmICAoKiBUYWJ1bGF0aW9uIGJveCAqKVxuXG50eXBlIHRhZyA9IHN0cmluZ1xudHlwZSBzdGFnICs9IFN0cmluZ190YWcgb2YgdGFnXG5cblxuKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlOlxuICAgcHJldHR5LXByaW50aW5nIG1hdGVyaWFsIGlzIG5vdCB3cml0dGVuIGluIHRoZSBvdXRwdXQgYXMgc29vbiBhcyBlbWl0dGVkO1xuICAgaW5zdGVhZCwgdGhlIG1hdGVyaWFsIGlzIHNpbXBseSByZWNvcmRlZCBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUsXG4gICB1bnRpbCB0aGUgZW5jbG9zaW5nIGJveCBoYXMgYSBrbm93biBjb21wdXRlZCBzaXplIGFuZCBwcm9wZXIgc3BsaXR0aW5nXG4gICBkZWNpc2lvbnMgY2FuIGJlIG1hZGUuXG5cbiAgIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBjb250YWlucyBmb3JtYXR0aW5nIGVsZW1lbnRzIHRvIGJlIHByaW50ZWQuXG4gICBFYWNoIGZvcm1hdHRpbmcgZWxlbWVudCBpcyBhIHR1cGxlIChzaXplLCB0b2tlbiwgbGVuZ3RoKSwgd2hlcmVcbiAgIC0gbGVuZ3RoIGlzIHRoZSBkZWNsYXJlZCBsZW5ndGggb2YgdGhlIHRva2VuLFxuICAgLSBzaXplIGlzIGVmZmVjdGl2ZSBzaXplIG9mIHRoZSB0b2tlbiB3aGVuIGl0IGlzIHByaW50ZWRcbiAgICAgKHNpemUgaXMgc2V0IHdoZW4gdGhlIHNpemUgb2YgdGhlIGJveCBpcyBrbm93biwgc28gdGhhdCBzaXplIG9mIGJyZWFrXG4gICAgICBoaW50cyBhcmUgZGVmaW5pdGl2ZSkuICopXG50eXBlIHBwX3F1ZXVlX2VsZW0gPSB7XG4gIG11dGFibGUgc2l6ZSA6IFNpemUudDtcbiAgdG9rZW4gOiBwcF90b2tlbjtcbiAgbGVuZ3RoIDogaW50O1xufVxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBkZWZpbml0aW9uLiAqKVxudHlwZSBwcF9xdWV1ZSA9IHBwX3F1ZXVlX2VsZW0gUXVldWUudFxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjazogc2Nhbm5pbmcgZWxlbWVudCBkZWZpbml0aW9uLiAqKVxudHlwZSBwcF9zY2FuX2VsZW0gPSB7XG4gIGxlZnRfdG90YWwgOiBpbnQ7ICgqIFZhbHVlIG9mIHBwX2xlZnRfdG90YWwgd2hlbiB0aGUgZWxlbWVudCB3YXMgZW5xdWV1ZWQuICopXG4gIHF1ZXVlX2VsZW0gOiBwcF9xdWV1ZV9lbGVtXG59XG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrOlxuICAgdGhlIGZvcm1hdHRpbmcgc3RhY2sgY29udGFpbnMgdGhlIGRlc2NyaXB0aW9uIG9mIGFsbCB0aGUgY3VycmVudGx5IGFjdGl2ZVxuICAgYm94ZXM7IHRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrIGlzIHVzZWQgdG8gc3BsaXQgdGhlIGxpbmVzXG4gICB3aGlsZSBwcmludGluZyB0b2tlbnMuICopXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrOiBmb3JtYXR0aW5nIHN0YWNrIGVsZW1lbnQgZGVmaW5pdGlvbi5cbiAgIEVhY2ggc3RhY2sgZWxlbWVudCBkZXNjcmliZXMgYSBwcmV0dHktcHJpbnRpbmcgYm94LiAqKVxudHlwZSBwcF9mb3JtYXRfZWxlbSA9IHsgYm94X3R5cGUgOiBib3hfdHlwZTsgd2lkdGggOiBpbnQgfVxuXG4oKiBUaGUgZm9ybWF0dGVyIGRlZmluaXRpb24uXG4gICBFYWNoIGZvcm1hdHRlciB2YWx1ZSBpcyBhIHByZXR0eS1wcmludGVyIGluc3RhbmNlIHdpdGggYWxsIGl0c1xuICAgbWFjaGluZXJ5LiAqKVxudHlwZSBmb3JtYXR0ZXIgPSB7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay4gKilcbiAgcHBfc2Nhbl9zdGFjayA6IHBwX3NjYW5fZWxlbSBTdGFjay50O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjay4gKilcbiAgcHBfZm9ybWF0X3N0YWNrIDogcHBfZm9ybWF0X2VsZW0gU3RhY2sudDtcbiAgcHBfdGJveF9zdGFjayA6IHRib3ggU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHNlbWFudGljcyB0YWcgc3RhY2suICopXG4gIHBwX3RhZ19zdGFjayA6IHN0YWcgU3RhY2sudDtcbiAgcHBfbWFya19zdGFjayA6IHN0YWcgU3RhY2sudDtcbiAgKCogVmFsdWUgb2YgcmlnaHQgbWFyZ2luLiAqKVxuICBtdXRhYmxlIHBwX21hcmdpbiA6IGludDtcbiAgKCogTWluaW1hbCBzcGFjZSBsZWZ0IGJlZm9yZSBtYXJnaW4sIHdoZW4gb3BlbmluZyBhIGJveC4gKilcbiAgbXV0YWJsZSBwcF9taW5fc3BhY2VfbGVmdCA6IGludDtcbiAgKCogTWF4aW11bSB2YWx1ZSBvZiBpbmRlbnRhdGlvbjpcbiAgICAgbm8gYm94IGNhbiBiZSBvcGVuZWQgZnVydGhlci4gKilcbiAgbXV0YWJsZSBwcF9tYXhfaW5kZW50IDogaW50O1xuICAoKiBTcGFjZSByZW1haW5pbmcgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbiAgbXV0YWJsZSBwcF9zcGFjZV9sZWZ0IDogaW50O1xuICAoKiBDdXJyZW50IHZhbHVlIG9mIGluZGVudGF0aW9uLiAqKVxuICBtdXRhYmxlIHBwX2N1cnJlbnRfaW5kZW50IDogaW50O1xuICAoKiBUcnVlIHdoZW4gdGhlIGxpbmUgaGFzIGJlZW4gYnJva2VuIGJ5IHRoZSBwcmV0dHktcHJpbnRlci4gKilcbiAgbXV0YWJsZSBwcF9pc19uZXdfbGluZSA6IGJvb2w7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBhbHJlYWR5IHByaW50ZWQuICopXG4gIG11dGFibGUgcHBfbGVmdF90b3RhbCA6IGludDtcbiAgKCogVG90YWwgd2lkdGggb2YgdG9rZW5zIGV2ZXIgcHV0IGluIHF1ZXVlLiAqKVxuICBtdXRhYmxlIHBwX3JpZ2h0X3RvdGFsIDogaW50O1xuICAoKiBDdXJyZW50IG51bWJlciBvZiBvcGVuIGJveGVzLiAqKVxuICBtdXRhYmxlIHBwX2N1cnJfZGVwdGggOiBpbnQ7XG4gICgqIE1heGltdW0gbnVtYmVyIG9mIGJveGVzIHdoaWNoIGNhbiBiZSBzaW11bHRhbmVvdXNseSBvcGVuLiAqKVxuICBtdXRhYmxlIHBwX21heF9ib3hlcyA6IGludDtcbiAgKCogRWxsaXBzaXMgc3RyaW5nLiAqKVxuICBtdXRhYmxlIHBwX2VsbGlwc2lzIDogc3RyaW5nO1xuICAoKiBPdXRwdXQgZnVuY3Rpb24uICopXG4gIG11dGFibGUgcHBfb3V0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQ7XG4gICgqIEZsdXNoaW5nIGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9mbHVzaCA6IHVuaXQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIG5ldyBsaW5lcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIGJyZWFrIGhpbnRzIHNwYWNlcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfc3BhY2VzIDogaW50IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X2luZGVudCA6IGludCAtPiB1bml0O1xuICAoKiBBcmUgdGFncyBwcmludGVkID8gKilcbiAgbXV0YWJsZSBwcF9wcmludF90YWdzIDogYm9vbDtcbiAgKCogQXJlIHRhZ3MgbWFya2VkID8gKilcbiAgbXV0YWJsZSBwcF9tYXJrX3RhZ3MgOiBib29sO1xuICAoKiBGaW5kIG9wZW5pbmcgYW5kIGNsb3NpbmcgbWFya2VycyBvZiB0YWdzLiAqKVxuICBtdXRhYmxlIHBwX21hcmtfb3Blbl90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9tYXJrX2Nsb3NlX3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtdXRhYmxlIHBwX3ByaW50X29wZW5fdGFnIDogc3RhZyAtPiB1bml0O1xuICBtdXRhYmxlIHBwX3ByaW50X2Nsb3NlX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxuICBwcF9xdWV1ZSA6IHBwX3F1ZXVlO1xufVxuXG5cbigqIFRoZSBmb3JtYXR0ZXIgc3BlY2lmaWMgdGFnIGhhbmRsaW5nIGZ1bmN0aW9ucy4gKilcbnR5cGUgZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zID0ge1xuICBtYXJrX29wZW5fc3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtYXJrX2Nsb3NlX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgcHJpbnRfb3Blbl9zdGFnIDogc3RhZyAtPiB1bml0O1xuICBwcmludF9jbG9zZV9zdGFnIDogc3RhZyAtPiB1bml0O1xufVxuXG5cbigqIFRoZSBmb3JtYXR0ZXIgZnVuY3Rpb25zIHRvIG91dHB1dCBtYXRlcmlhbC4gKilcbnR5cGUgZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgPSB7XG4gIG91dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICBvdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gIG91dF9uZXdsaW5lIDogdW5pdCAtPiB1bml0O1xuICBvdXRfc3BhY2VzIDogaW50IC0+IHVuaXQ7XG4gIG91dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbn1cblxuXG4oKlxuXG4gIEF1eGlsaWFyaWVzIGFuZCBiYXNpYyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEVudGVyIGEgdG9rZW4gaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxubGV0IHBwX2VucXVldWUgc3RhdGUgdG9rZW4gPVxuICBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSBzdGF0ZS5wcF9yaWdodF90b3RhbCArIHRva2VuLmxlbmd0aDtcbiAgUXVldWUuYWRkIHRva2VuIHN0YXRlLnBwX3F1ZXVlXG5cblxubGV0IHBwX2NsZWFyX3F1ZXVlIHN0YXRlID1cbiAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSAxOyBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSAxO1xuICBRdWV1ZS5jbGVhciBzdGF0ZS5wcF9xdWV1ZVxuXG5cbigqIFBwX2luZmluaXR5OiBsYXJnZSB2YWx1ZSBmb3IgZGVmYXVsdCB0b2tlbnMgc2l6ZS5cblxuICAgUHBfaW5maW5pdHkgaXMgZG9jdW1lbnRlZCBhcyBiZWluZyBncmVhdGVyIHRoYW4gMWUxMDsgdG8gYXZvaWRcbiAgIGNvbmZ1c2lvbiBhYm91dCB0aGUgd29yZCAnZ3JlYXRlcicsIHdlIGNob29zZSBwcF9pbmZpbml0eSBncmVhdGVyXG4gICB0aGFuIDFlMTAgKyAxOyBmb3IgY29ycmVjdCBoYW5kbGluZyBvZiB0ZXN0cyBpbiB0aGUgYWxnb3JpdGhtLFxuICAgcHBfaW5maW5pdHkgbXVzdCBiZSBldmVuIG9uZSBtb3JlIHRoYW4gMWUxMCArIDE7IGxldCdzIHN0YW5kIG9uIHRoZVxuICAgc2FmZSBzaWRlIGJ5IGNob29zaW5nIDEuZTEwKzEwLlxuXG4gICBQcF9pbmZpbml0eSBjb3VsZCBwcm9iYWJseSBiZSAxMDczNzQxODIzIHRoYXQgaXMgMl4zMCAtIDEsIHRoYXQgaXNcbiAgIHRoZSBtaW5pbWFsIHVwcGVyIGJvdW5kIGZvciBpbnRlZ2Vyczsgbm93IHRoYXQgbWF4X2ludCBpcyBkZWZpbmVkLFxuICAgdGhpcyBsaW1pdCBjb3VsZCBhbHNvIGJlIGRlZmluZWQgYXMgbWF4X2ludCAtIDEuXG5cbiAgIEhvd2V2ZXIsIGJlZm9yZSBzZXR0aW5nIHBwX2luZmluaXR5IHRvIHNvbWV0aGluZyBhcm91bmQgbWF4X2ludCwgd2VcbiAgIG11c3QgY2FyZWZ1bGx5IGRvdWJsZS1jaGVjayBhbGwgdGhlIGludGVnZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zXG4gICB0aGF0IGludm9sdmUgcHBfaW5maW5pdHksIHNpbmNlIGFueSBvdmVyZmxvdyB3b3VsZCB3cmVjayBoYXZvYyB0aGVcbiAgIHByZXR0eS1wcmludGluZyBhbGdvcml0aG0ncyBpbnZhcmlhbnRzLiBHaXZlbiB0aGF0IHRoaXMgYXJpdGhtZXRpY1xuICAgY29ycmVjdG5lc3MgY2hlY2sgaXMgZGlmZmljdWx0IGFuZCBlcnJvciBwcm9uZSBhbmQgZ2l2ZW4gdGhhdCAxZTEwXG4gICArIDEgaXMgaW4gcHJhY3RpY2UgbGFyZ2UgZW5vdWdoLCB0aGVyZSBpcyBubyBuZWVkIHRvIGF0dGVtcHQgdG8gc2V0XG4gICBwcF9pbmZpbml0eSB0byB0aGUgdGhlb3JldGljYWxseSBtYXhpbXVtIGxpbWl0LiBJdCBpcyBub3Qgd29ydGggdGhlXG4gICBidXJkZW4gISAqKVxubGV0IHBwX2luZmluaXR5ID0gMTAwMDAwMDAxMFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIGZvciB0aGUgZm9ybWF0dGVyLiAqKVxubGV0IHBwX291dHB1dF9zdHJpbmcgc3RhdGUgcyA9IHN0YXRlLnBwX291dF9zdHJpbmcgcyAwIChTdHJpbmcubGVuZ3RoIHMpXG5hbmQgcHBfb3V0cHV0X25ld2xpbmUgc3RhdGUgPSBzdGF0ZS5wcF9vdXRfbmV3bGluZSAoKVxuYW5kIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgbiA9IHN0YXRlLnBwX291dF9zcGFjZXMgblxuYW5kIHBwX291dHB1dF9pbmRlbnQgc3RhdGUgbiA9IHN0YXRlLnBwX291dF9pbmRlbnQgblxuXG4oKiBGb3JtYXQgYSB0ZXh0dWFsIHRva2VuICopXG5sZXQgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSB0ZXh0ID1cbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gc2l6ZTtcbiAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSB0ZXh0O1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSBmYWxzZVxuXG4oKiBGb3JtYXQgYSBzdHJpbmcgYnkgaXRzIGxlbmd0aCwgaWYgbm90IGVtcHR5ICopXG5sZXQgZm9ybWF0X3N0cmluZyBzdGF0ZSBzID1cbiAgaWYgcyA8PiBcIlwiIHRoZW4gZm9ybWF0X3BwX3RleHQgc3RhdGUgKFN0cmluZy5sZW5ndGggcykgc1xuXG4oKiBUbyBmb3JtYXQgYSBicmVhaywgaW5kZW50aW5nIGEgbmV3IGxpbmUuICopXG5sZXQgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKGJlZm9yZSwgb2Zmc2V0LCBhZnRlcikgd2lkdGggPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgcHBfb3V0cHV0X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIHRydWU7XG4gIGxldCBpbmRlbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSB3aWR0aCArIG9mZnNldCBpblxuICAoKiBEb24ndCBpbmRlbnQgbW9yZSB0aGFuIHBwX21heF9pbmRlbnQuICopXG4gIGxldCByZWFsX2luZGVudCA9IEludC5taW4gc3RhdGUucHBfbWF4X2luZGVudCBpbmRlbnQgaW5cbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gcmVhbF9pbmRlbnQ7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfY3VycmVudF9pbmRlbnQ7XG4gIHBwX291dHB1dF9pbmRlbnQgc3RhdGUgc3RhdGUucHBfY3VycmVudF9pbmRlbnQ7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBmb3JjZSBhIGxpbmUgYnJlYWsgaW5zaWRlIGEgYm94OiBubyBvZmZzZXQgaXMgYWRkZWQuICopXG5sZXQgYnJlYWtfbGluZSBzdGF0ZSB3aWR0aCA9IGJyZWFrX25ld19saW5lIHN0YXRlIChcIlwiLCAwLCBcIlwiKSB3aWR0aFxuXG4oKiBUbyBmb3JtYXQgYSBicmVhayB0aGF0IGZpdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCBicmVha19zYW1lX2xpbmUgc3RhdGUgKGJlZm9yZSwgd2lkdGgsIGFmdGVyKSA9XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYmVmb3JlO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSB3aWR0aDtcbiAgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSB3aWR0aDtcbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBhZnRlclxuXG5cbigqIFRvIGluZGVudCBubyBtb3JlIHRoYW4gcHBfbWF4X2luZGVudCwgaWYgb25lIHRyaWVzIHRvIG9wZW4gYSBib3hcbiAgIGJleW9uZCBwcF9tYXhfaW5kZW50LCB0aGVuIHRoZSBib3ggaXMgcmVqZWN0ZWQgb24gdGhlIGxlZnRcbiAgIGJ5IHNpbXVsYXRpbmcgYSBicmVhay4gKilcbmxldCBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlID1cbiAgbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGVcbiAgfCBTb21lIHsgYm94X3R5cGU7IHdpZHRoIH0gLT5cbiAgICBpZiB3aWR0aCA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlblxuICAgICAgbWF0Y2ggYm94X3R5cGUgd2l0aFxuICAgICAgfCBQcF9maXRzIHwgUHBfaGJveCAtPiAoKVxuICAgICAgfCBQcF92Ym94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuXG5cbigqIFRvIHNraXAgYSB0b2tlbiwgaWYgdGhlIHByZXZpb3VzIGxpbmUgaGFzIGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3NraXBfdG9rZW4gc3RhdGUgPVxuICBtYXRjaCBRdWV1ZS50YWtlX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBwcmludF9pZl9uZXdsaW5lIG11c3QgaGF2ZSBiZWVuIHRoZSBsYXN0IHByaW50aW5nIGNvbW1hbmQgKilcbiAgfCBTb21lIHsgc2l6ZTsgbGVuZ3RoOyBfIH0gLT5cbiAgICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIHN0YXRlLnBwX2xlZnRfdG90YWwgLSBsZW5ndGg7XG4gICAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0ICsgU2l6ZS50b19pbnQgc2l6ZVxuXG5cbigqXG5cbiAgVGhlIG1haW4gcHJldHR5IHByaW50aW5nIGZ1bmN0aW9ucy5cblxuKilcblxuKCogRm9ybWF0dGluZyBhIHRva2VuIHdpdGggYSBnaXZlbiBzaXplLiAqKVxubGV0IGZvcm1hdF9wcF90b2tlbiBzdGF0ZSBzaXplID0gZnVuY3Rpb25cblxuICB8IFBwX3RleHQgcyAtPlxuICAgIGZvcm1hdF9wcF90ZXh0IHN0YXRlIHNpemUgc1xuXG4gIHwgUHBfYmVnaW4gKG9mZiwgdHkpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBpZiBpbnNlcnRpb25fcG9pbnQgPiBzdGF0ZS5wcF9tYXhfaW5kZW50IHRoZW5cbiAgICAgICgqIGNhbiBub3Qgb3BlbiBhIGJveCByaWdodCB0aGVyZS4gKilcbiAgICAgIGJlZ2luIHBwX2ZvcmNlX2JyZWFrX2xpbmUgc3RhdGUgZW5kO1xuICAgIGxldCB3aWR0aCA9IHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBvZmYgaW5cbiAgICBsZXQgYm94X3R5cGUgPVxuICAgICAgbWF0Y2ggdHkgd2l0aFxuICAgICAgfCBQcF92Ym94IC0+IFBwX3Zib3hcbiAgICAgIHwgUHBfaGJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IHwgUHBfZml0cyAtPlxuICAgICAgICBpZiBzaXplID4gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIHR5IGVsc2UgUHBfZml0cyBpblxuICAgIFN0YWNrLnB1c2ggeyBib3hfdHlwZTsgd2lkdGggfSBzdGF0ZS5wcF9mb3JtYXRfc3RhY2tcblxuICB8IFBwX2VuZCAtPlxuICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHw+IGlnbm9yZVxuXG4gIHwgUHBfdGJlZ2luIChQcF90Ym94IF8gYXMgdGJveCkgLT5cbiAgICBTdGFjay5wdXNoIHRib3ggc3RhdGUucHBfdGJveF9zdGFja1xuXG4gIHwgUHBfdGVuZCAtPlxuICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3N0YWIgLT5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHJlYyBhZGRfdGFiIG4gPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IFtuXVxuICAgICAgICB8IHggOjogbCBhcyBscyAtPiBpZiBuIDwgeCB0aGVuIG4gOjogbHMgZWxzZSB4IDo6IGFkZF90YWIgbiBsIGluXG4gICAgICB0YWJzIDo9IGFkZF90YWIgKHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQpICF0YWJzXG4gICAgZW5kXG5cbiAgfCBQcF90YnJlYWsgKG4sIG9mZikgLT5cbiAgICBsZXQgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCBpblxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gdGFidWxhdGlvbiBib3guICopXG4gICAgfCBTb21lIChQcF90Ym94IHRhYnMpIC0+XG4gICAgICBsZXQgdGFiID1cbiAgICAgICAgbWF0Y2ggIXRhYnMgd2l0aFxuICAgICAgICB8IFtdIC0+IGluc2VydGlvbl9wb2ludFxuICAgICAgICB8IGZpcnN0IDo6IF8gLT5cbiAgICAgICAgICBsZXQgcmVjIGZpbmQgPSBmdW5jdGlvblxuICAgICAgICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICAgICAgaWYgaGVhZCA+PSBpbnNlcnRpb25fcG9pbnQgdGhlbiBoZWFkIGVsc2UgZmluZCB0YWlsXG4gICAgICAgICAgICB8IFtdIC0+IGZpcnN0IGluXG4gICAgICAgICAgZmluZCAhdGFicyBpblxuICAgICAgbGV0IG9mZnNldCA9IHRhYiAtIGluc2VydGlvbl9wb2ludCBpblxuICAgICAgaWYgb2Zmc2V0ID49IDBcbiAgICAgIHRoZW4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIChcIlwiLCBvZmZzZXQgKyBuLCBcIlwiKVxuICAgICAgZWxzZSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgdGFiICsgb2ZmLCBcIlwiKSBzdGF0ZS5wcF9tYXJnaW5cbiAgICBlbmRcblxuICB8IFBwX25ld2xpbmUgLT5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IHdpZHRoOyBffSAtPiBicmVha19saW5lIHN0YXRlIHdpZHRoXG4gICAgZW5kXG5cbiAgfCBQcF9pZl9uZXdsaW5lIC0+XG4gICAgaWYgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgIT0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgIHRoZW4gcHBfc2tpcF90b2tlbiBzdGF0ZVxuXG4gIHwgUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSAtPlxuICAgIGxldCBiZWZvcmUsIG9mZiwgXyA9IGJyZWFrcyBpblxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiBib3guICopXG4gICAgfCBTb21lIHsgYm94X3R5cGU7IHdpZHRoIH0gLT5cbiAgICAgIGJlZ2luIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfaG92Ym94IC0+XG4gICAgICAgIGlmIHNpemUgKyBTdHJpbmcubGVuZ3RoIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9ib3ggLT5cbiAgICAgICAgKCogSGF2ZSB0aGUgbGluZSBqdXN0IGJlZW4gYnJva2VuIGhlcmUgPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9pc19uZXdfbGluZSB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzIGVsc2VcbiAgICAgICAgaWYgc2l6ZSArIFN0cmluZy5sZW5ndGggYmVmb3JlID4gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoIGVsc2VcbiAgICAgICAgKCogYnJlYWsgdGhlIGxpbmUgaGVyZSBsZWFkcyB0byBuZXcgaW5kZW50YXRpb24gPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA+IHN0YXRlLnBwX21hcmdpbiAtIHdpZHRoICsgb2ZmXG4gICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICAgIGVsc2UgYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfaHZib3ggLT4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICB8IFBwX2ZpdHMgLT4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfdmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfaGJveCAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgIHwgUHBfb3Blbl90YWcgdGFnX25hbWUgLT5cbiAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfb3Blbl90YWcgdGFnX25hbWUgaW5cbiAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXI7XG4gICAgIFN0YWNrLnB1c2ggdGFnX25hbWUgc3RhdGUucHBfbWFya19zdGFja1xuXG4gICB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICBiZWdpbiBtYXRjaCBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX21hcmtfc3RhY2sgd2l0aFxuICAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgIHwgU29tZSB0YWdfbmFtZSAtPlxuICAgICAgIGxldCBtYXJrZXIgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyB0YWdfbmFtZSBpblxuICAgICAgIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgbWFya2VyXG4gICAgIGVuZFxuXG5cbigqIFByaW50IGlmIHRva2VuIHNpemUgaXMga25vd24gZWxzZSBwcmludGluZyBpcyBkZWxheWVkLlxuICAgUHJpbnRpbmcgaXMgZGVsYXllZCB3aGVuIHRoZSB0ZXh0IHdhaXRpbmcgaW4gdGhlIHF1ZXVlIHJlcXVpcmVzXG4gICBtb3JlIHJvb20gdG8gZm9ybWF0IHRoYW4gZXhpc3RzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgcmVjIGFkdmFuY2VfbGVmdCBzdGF0ZSA9XG4gIG1hdGNoIFF1ZXVlLnBlZWtfb3B0IHN0YXRlLnBwX3F1ZXVlIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIE5vIHRva2VucyB0byBwcmludCAqKVxuICB8IFNvbWUgeyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gLT5cbiAgICBsZXQgcGVuZGluZ19jb3VudCA9IHN0YXRlLnBwX3JpZ2h0X3RvdGFsIC0gc3RhdGUucHBfbGVmdF90b3RhbCBpblxuICAgIGlmIFNpemUuaXNfa25vd24gc2l6ZSB8fCBwZW5kaW5nX2NvdW50ID49IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiBiZWdpblxuICAgICAgUXVldWUudGFrZSBzdGF0ZS5wcF9xdWV1ZSB8PiBpZ25vcmU7ICgqIE5vdCBlbXB0eTogd2UgcGVlayBpbnRvIGl0ICopXG4gICAgICBsZXQgc2l6ZSA9IGlmIFNpemUuaXNfa25vd24gc2l6ZSB0aGVuIFNpemUudG9faW50IHNpemUgZWxzZSBwcF9pbmZpbml0eSBpblxuICAgICAgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgdG9rZW47XG4gICAgICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIGxlbmd0aCArIHN0YXRlLnBwX2xlZnRfdG90YWw7XG4gICAgICAoYWR2YW5jZV9sZWZ0IFtAdGFpbGNhbGxdKSBzdGF0ZVxuICAgIGVuZFxuXG5cbigqIFRvIGVucXVldWUgYSB0b2tlbiA6IHRyeSB0byBhZHZhbmNlLiAqKVxubGV0IGVucXVldWVfYWR2YW5jZSBzdGF0ZSB0b2sgPSBwcF9lbnF1ZXVlIHN0YXRlIHRvazsgYWR2YW5jZV9sZWZ0IHN0YXRlXG5cblxuKCogVG8gZW5xdWV1ZSBzdHJpbmdzLiAqKVxubGV0IGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIHNpemUgcyA9XG4gIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemU7IHRva2VuID0gUHBfdGV4dCBzOyBsZW5ndGggPSBTaXplLnRvX2ludCBzaXplIH1cblxuXG5sZXQgZW5xdWV1ZV9zdHJpbmcgc3RhdGUgcyA9XG4gIGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIChTaXplLm9mX2ludCAoU3RyaW5nLmxlbmd0aCBzKSkgc1xuXG5cbigqIFJvdXRpbmVzIGZvciBzY2FuIHN0YWNrXG4gICBkZXRlcm1pbmUgc2l6ZSBvZiBib3hlcy4gKilcblxuKCogVGhlIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG5sZXQgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YWNrID1cbiAgU3RhY2suY2xlYXIgc3RhY2s7XG4gIGxldCBxdWV1ZV9lbGVtID0geyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX3RleHQgXCJcIjsgbGVuZ3RoID0gMCB9IGluXG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gLTE7IHF1ZXVlX2VsZW0gfSBzdGFja1xuXG4oKiBTZXR0aW5nIHRoZSBzaXplIG9mIGJveGVzIG9uIHNjYW4gc3RhY2s6XG4gICBpZiB0eSA9IHRydWUgdGhlbiBzaXplIG9mIGJyZWFrIGlzIHNldCBlbHNlIHNpemUgb2YgYm94IGlzIHNldDtcbiAgIGluIGVhY2ggY2FzZSBwcF9zY2FuX3N0YWNrIGlzIHBvcHBlZC5cblxuICAgTm90ZTpcbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gc2NhbiBzdGFjayBpcyBleGhhdXN0aXZlLCBzaW5jZSBzY2FuX3N0YWNrIGlzIG5ldmVyXG4gICBlbXB0eS5cbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gdG9rZW4gaW4gc2NhbiBzdGFjayBpcyBhbHNvIGV4aGF1c3RpdmUsXG4gICBzaW5jZSBzY2FuX3B1c2ggaXMgdXNlZCBvbiBicmVha3MgYW5kIG9wZW5pbmcgb2YgYm94ZXMuICopXG5sZXQgc2V0X3NpemUgc3RhdGUgdHkgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbiAgfCBTb21lIHsgbGVmdF90b3RhbDsgcXVldWVfZWxlbSB9IC0+XG4gICAgbGV0IHNpemUgPSBTaXplLnRvX2ludCBxdWV1ZV9lbGVtLnNpemUgaW5cbiAgICAoKiB0ZXN0IGlmIHNjYW4gc3RhY2sgY29udGFpbnMgYW55IGRhdGEgdGhhdCBpcyBub3Qgb2Jzb2xldGUuICopXG4gICAgaWYgbGVmdF90b3RhbCA8IHN0YXRlLnBwX2xlZnRfdG90YWwgdGhlblxuICAgICAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2tcbiAgICBlbHNlXG4gICAgICBtYXRjaCBxdWV1ZV9lbGVtLnRva2VuIHdpdGhcbiAgICAgIHwgUHBfYnJlYWsgXyB8IFBwX3RicmVhayAoXywgXykgLT5cbiAgICAgICAgaWYgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF9iZWdpbiAoXywgXykgLT5cbiAgICAgICAgaWYgbm90IHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfdGV4dCBfIHwgUHBfc3RhYiB8IFBwX3RiZWdpbiBfIHwgUHBfdGVuZCB8IFBwX2VuZFxuICAgICAgfCBQcF9uZXdsaW5lIHwgUHBfaWZfbmV3bGluZSB8IFBwX29wZW5fdGFnIF8gfCBQcF9jbG9zZV90YWcgLT5cbiAgICAgICAgKCkgKCogc2Nhbl9wdXNoIGlzIG9ubHkgdXNlZCBmb3IgYnJlYWtzIGFuZCBib3hlcy4gKilcblxuXG4oKiBQdXNoIGEgdG9rZW4gb24gcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suXG4gICBJZiBiIGlzIHRydWUgc2V0X3NpemUgaXMgY2FsbGVkLiAqKVxubGV0IHNjYW5fcHVzaCBzdGF0ZSBiIHRva2VuID1cbiAgcHBfZW5xdWV1ZSBzdGF0ZSB0b2tlbjtcbiAgaWYgYiB0aGVuIHNldF9zaXplIHN0YXRlIHRydWU7XG4gIGxldCBlbGVtID0geyBsZWZ0X3RvdGFsID0gc3RhdGUucHBfcmlnaHRfdG90YWw7IHF1ZXVlX2VsZW0gPSB0b2tlbiB9IGluXG4gIFN0YWNrLnB1c2ggZWxlbSBzdGF0ZS5wcF9zY2FuX3N0YWNrXG5cblxuKCogVG8gb3BlbiBhIG5ldyBib3ggOlxuICAgdGhlIHVzZXIgbWF5IHNldCB0aGUgZGVwdGggYm91bmQgcHBfbWF4X2JveGVzXG4gICBhbnkgdGV4dCBuZXN0ZWQgZGVlcGVyIGlzIHByaW50ZWQgYXMgdGhlIGVsbGlwc2lzIHN0cmluZy4gKilcbmxldCBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IGJyX3R5ID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF9iZWdpbiAoaW5kZW50LCBicl90eSk7IGxlbmd0aCA9IDAgfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSBmYWxzZSBlbGVtIGVsc2VcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA9IHN0YXRlLnBwX21heF9ib3hlc1xuICB0aGVuIGVucXVldWVfc3RyaW5nIHN0YXRlIHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVGhlIGJveCB3aGljaCBpcyBhbHdheXMgb3Blbi4gKilcbmxldCBwcF9vcGVuX3N5c19ib3ggc3RhdGUgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9ob3Zib3hcblxuKCogQ2xvc2UgYSBib3gsIHNldHRpbmcgc2l6ZXMgb2YgaXRzIHN1YiBib3hlcy4gKilcbmxldCBwcF9jbG9zZV9ib3ggc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSB0aGVuXG4gIGJlZ2luXG4gICAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgYmVnaW5cbiAgICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2VuZDsgbGVuZ3RoID0gMCB9O1xuICAgICAgc2V0X3NpemUgc3RhdGUgdHJ1ZTsgc2V0X3NpemUgc3RhdGUgZmFsc2VcbiAgICBlbmQ7XG4gICAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoIC0gMTtcbiAgZW5kXG5cblxuKCogT3BlbiBhIHRhZywgcHVzaGluZyBpdCBvbiB0aGUgdGFnIHN0YWNrLiAqKVxubGV0IHBwX29wZW5fc3RhZyBzdGF0ZSB0YWdfbmFtZSA9XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICBiZWdpblxuICAgIFN0YWNrLnB1c2ggdGFnX25hbWUgc3RhdGUucHBfdGFnX3N0YWNrO1xuICAgIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIHRhZ19uYW1lXG4gIGVuZDtcbiAgaWYgc3RhdGUucHBfbWFya190YWdzIHRoZW5cbiAgICBsZXQgdG9rZW4gPSBQcF9vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbjsgbGVuZ3RoID0gMCB9XG5cblxuKCogQ2xvc2UgYSB0YWcsIHBvcHBpbmcgaXQgZnJvbSB0aGUgdGFnIHN0YWNrLiAqKVxubGV0IHBwX2Nsb3NlX3N0YWcgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2Nsb3NlX3RhZzsgbGVuZ3RoID0gMCB9O1xuICBpZiBzdGF0ZS5wcF9wcmludF90YWdzIHRoZW5cbiAgICBtYXRjaCBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3RhZ19zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG1vcmUgdGFnIHRvIGNsb3NlLiAqKVxuICAgIHwgU29tZSB0YWdfbmFtZSAtPlxuICAgICAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIHRhZ19uYW1lXG5cbmxldCBwcF9vcGVuX3RhZyBzdGF0ZSBzID0gcHBfb3Blbl9zdGFnIHN0YXRlIChTdHJpbmdfdGFnIHMpXG5sZXQgcHBfY2xvc2VfdGFnIHN0YXRlICgpID0gcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKVxuXG5sZXQgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX3ByaW50X3RhZ3MgPC0gYlxubGV0IHBwX3NldF9tYXJrX3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX21hcmtfdGFncyA8LSBiXG5sZXQgcHBfZ2V0X3ByaW50X3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9wcmludF90YWdzXG5sZXQgcHBfZ2V0X21hcmtfdGFncyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmtfdGFnc1xubGV0IHBwX3NldF90YWdzIHN0YXRlIGIgPVxuICBwcF9zZXRfcHJpbnRfdGFncyBzdGF0ZSBiOyBwcF9zZXRfbWFya190YWdzIHN0YXRlIGJcblxuXG4oKiBIYW5kbGluZyB0YWcgaGFuZGxpbmcgZnVuY3Rpb25zOiBnZXQvc2V0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0YXRlICgpID0ge1xuICBtYXJrX29wZW5fc3RhZyA9IHN0YXRlLnBwX21hcmtfb3Blbl90YWc7XG4gIG1hcmtfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnO1xuICBwcmludF9vcGVuX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZztcbiAgcHJpbnRfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZztcbn1cblxuXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgIG1hcmtfb3Blbl9zdGFnID0gbW90O1xuICAgICBtYXJrX2Nsb3NlX3N0YWcgPSBtY3Q7XG4gICAgIHByaW50X29wZW5fc3RhZyA9IHBvdDtcbiAgICAgcHJpbnRfY2xvc2Vfc3RhZyA9IHBjdDtcbiAgfSA9XG4gIHN0YXRlLnBwX21hcmtfb3Blbl90YWcgPC0gbW90O1xuICBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyA8LSBtY3Q7XG4gIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIDwtIHBvdDtcbiAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIDwtIHBjdFxuXG5cbigqIEluaXRpYWxpemUgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfcmluaXQgc3RhdGUgPVxuICBwcF9jbGVhcl9xdWV1ZSBzdGF0ZTtcbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX2Zvcm1hdF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGJveF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGFnX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9tYXJrX3N0YWNrO1xuICBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA8LSAwO1xuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIDA7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfbWFyZ2luO1xuICBwcF9vcGVuX3N5c19ib3ggc3RhdGVcblxubGV0IGNsZWFyX3RhZ19zdGFjayBzdGF0ZSA9XG4gIFN0YWNrLml0ZXIgKGZ1biBfIC0+IHBwX2Nsb3NlX3RhZyBzdGF0ZSAoKSkgc3RhdGUucHBfdGFnX3N0YWNrXG5cblxuKCogRmx1c2hpbmcgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG5sZXQgcHBfZmx1c2hfcXVldWUgc3RhdGUgYiA9XG4gIGNsZWFyX3RhZ19zdGFjayBzdGF0ZTtcbiAgd2hpbGUgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgZG9cbiAgICBwcF9jbG9zZV9ib3ggc3RhdGUgKClcbiAgZG9uZTtcbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gcHBfaW5maW5pdHk7XG4gIGFkdmFuY2VfbGVmdCBzdGF0ZTtcbiAgaWYgYiB0aGVuIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBwcF9yaW5pdCBzdGF0ZVxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gZm9ybWF0IHZhbHVlcyBhbmQgdXNlIGJveGVzLlxuXG4qKVxuXG4oKiBUbyBmb3JtYXQgYSBzdHJpbmcuICopXG5sZXQgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSBzaXplIHMgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzXG5cblxubGV0IHBwX3ByaW50X2FzIHN0YXRlIGlzaXplIHMgPVxuICBwcF9wcmludF9hc19zaXplIHN0YXRlIChTaXplLm9mX2ludCBpc2l6ZSkgc1xuXG5cbmxldCBwcF9wcmludF9zdHJpbmcgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxubGV0IHBwX3ByaW50X2J5dGVzIHN0YXRlIHMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAoQnl0ZXMubGVuZ3RoIHMpIChCeXRlcy50b19zdHJpbmcgcylcblxuKCogVG8gZm9ybWF0IGFuIGludGVnZXIuICopXG5sZXQgcHBfcHJpbnRfaW50IHN0YXRlIGkgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKEludC50b19zdHJpbmcgaSlcblxuKCogVG8gZm9ybWF0IGEgZmxvYXQuICopXG5sZXQgcHBfcHJpbnRfZmxvYXQgc3RhdGUgZiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Zsb2F0IGYpXG5cbigqIFRvIGZvcm1hdCBhIGJvb2xlYW4uICopXG5sZXQgcHBfcHJpbnRfYm9vbCBzdGF0ZSBiID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfYm9vbCBiKVxuXG4oKiBUbyBmb3JtYXQgYSBjaGFyLiAqKVxubGV0IHBwX3ByaW50X2NoYXIgc3RhdGUgYyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIDEgKFN0cmluZy5tYWtlIDEgYylcblxuXG4oKiBPcGVuaW5nIGJveGVzLiAqKVxubGV0IHBwX29wZW5faGJveCBzdGF0ZSAoKSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hib3hcbmFuZCBwcF9vcGVuX3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF92Ym94XG5cbmFuZCBwcF9vcGVuX2h2Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaHZib3hcbmFuZCBwcF9vcGVuX2hvdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2hvdmJveFxuYW5kIHBwX29wZW5fYm94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfYm94XG5cblxuKCogUHJpbnRpbmcgcXVldWVkIHRleHQuXG5cbiAgIFtwcF9wcmludF9mbHVzaF0gcHJpbnRzIGFsbCBwZW5kaW5nIGl0ZW1zIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBhbmRcbiAgIHRoZW4gZmx1c2hlcyB0aGUgbG93IGxldmVsIG91dHB1dCBkZXZpY2Ugb2YgdGhlIGZvcm1hdHRlciB0byBhY3R1YWxseVxuICAgZGlzcGxheSBwcmludGluZyBtYXRlcmlhbC5cblxuICAgW3BwX3ByaW50X25ld2xpbmVdIGJlaGF2ZXMgYXMgW3BwX3ByaW50X2ZsdXNoXSBhZnRlciBwcmludGluZyBhbiBhZGRpdGlvbmFsXG4gICBuZXcgbGluZS4gKilcbmxldCBwcF9wcmludF9uZXdsaW5lIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgdHJ1ZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5hbmQgcHBfcHJpbnRfZmx1c2ggc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSBmYWxzZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5cblxuKCogVG8gZ2V0IGEgbmV3bGluZSB3aGVuIG9uZSBkb2VzIG5vdCB3YW50IHRvIGNsb3NlIHRoZSBjdXJyZW50IGJveC4gKilcbmxldCBwcF9mb3JjZV9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBUbyBmb3JtYXQgc29tZXRoaW5nLCBvbmx5IGluIGNhc2UgdGhlIGxpbmUgaGFzIGp1c3QgYmVlbiBicm9rZW4uICopXG5sZXQgcHBfcHJpbnRfaWZfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZVxuICAgICAgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2lmX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIEdlbmVyYWxpemVkIGJyZWFrIGhpbnQgdGhhdCBhbGxvd3MgcHJpbnRpbmcgc3RyaW5ncyBiZWZvcmUvYWZ0ZXJcbiAgIHNhbWUtbGluZSBvZmZzZXQgKHdpZHRoKSBvciBuZXctbGluZSBvZmZzZXQgKilcbmxldCBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGUgfmZpdHMgfmJyZWFrcyA9XG4gIGxldCBiZWZvcmUsIHdpZHRoLCBhZnRlciA9IGZpdHMgaW5cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgdG9rZW4gPSBQcF9icmVhayB7IGZpdHM7IGJyZWFrcyB9IGluXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggYmVmb3JlICsgd2lkdGggKyBTdHJpbmcubGVuZ3RoIGFmdGVyIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuKCogUHJpbnRpbmcgYnJlYWsgaGludHM6XG4gICBBIGJyZWFrIGhpbnQgaW5kaWNhdGVzIHdoZXJlIGEgYm94IG1heSBiZSBicm9rZW4uXG4gICBJZiBsaW5lIGlzIGJyb2tlbiB0aGVuIG9mZnNldCBpcyBhZGRlZCB0byB0aGUgaW5kZW50YXRpb24gb2YgdGhlIGN1cnJlbnRcbiAgIGJveCBlbHNlICh0aGUgdmFsdWUgb2YpIHdpZHRoIGJsYW5rcyBhcmUgcHJpbnRlZC4gKilcbmxldCBwcF9wcmludF9icmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGVcbiAgICB+Zml0czooXCJcIiwgd2lkdGgsIFwiXCIpIH5icmVha3M6KFwiXCIsIG9mZnNldCwgXCJcIilcblxuXG4oKiBQcmludCBhIHNwYWNlIDpcbiAgIGEgc3BhY2UgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIGEgc2luZ2xlIHNwYWNlIGlmIHRoZSBicmVhayBkb2VzIG5vdFxuICAgc3BsaXQgdGhlIGxpbmU7XG4gICBhIGN1dCBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgbm90aGluZyBpZiB0aGUgYnJlYWsgZG9lcyBub3Qgc3BsaXQgdGhlXG4gICBsaW5lLiAqKVxubGV0IHBwX3ByaW50X3NwYWNlIHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMSAwXG5hbmQgcHBfcHJpbnRfY3V0IHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMCAwXG5cblxuKCogVGFidWxhdGlvbiBib3hlcy4gKilcbmxldCBwcF9vcGVuX3Rib3ggc3RhdGUgKCkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUuemVybyBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RiZWdpbiAoUHBfdGJveCAocmVmIFtdKSk7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCogQ2xvc2UgYSB0YWJ1bGF0aW9uIGJveC4gKilcbmxldCBwcF9jbG9zZV90Ym94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3RlbmQ7IGxlbmd0aCA9IDAgfSBpblxuICAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbTtcbiAgICAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoIC0gMVxuICBlbmRcblxuXG4oKiBQcmludCBhIHRhYnVsYXRpb24gYnJlYWsuICopXG5sZXQgcHBfcHJpbnRfdGJyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJyZWFrICh3aWR0aCwgb2Zmc2V0KTsgbGVuZ3RoID0gd2lkdGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuXG5sZXQgcHBfcHJpbnRfdGFiIHN0YXRlICgpID0gcHBfcHJpbnRfdGJyZWFrIHN0YXRlIDAgMFxuXG5sZXQgcHBfc2V0X3RhYiBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3N0YWI7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCpcblxuICBQcm9jZWR1cmVzIHRvIGNvbnRyb2wgdGhlIHByZXR0eS1wcmludGVyc1xuXG4qKVxuXG4oKiBTZXRfbWF4X2JveGVzLiAqKVxubGV0IHBwX3NldF9tYXhfYm94ZXMgc3RhdGUgbiA9IGlmIG4gPiAxIHRoZW4gc3RhdGUucHBfbWF4X2JveGVzIDwtIG5cblxuKCogVG8ga25vdyB0aGUgY3VycmVudCBtYXhpbXVtIG51bWJlciBvZiBib3hlcyBhbGxvd2VkLiAqKVxubGV0IHBwX2dldF9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxubGV0IHBwX292ZXJfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfY3Vycl9kZXB0aCA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG4oKiBFbGxpcHNpcy4gKilcbmxldCBwcF9zZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSBzID0gc3RhdGUucHBfZWxsaXBzaXMgPC0gc1xuYW5kIHBwX2dldF9lbGxpcHNpc190ZXh0IHN0YXRlICgpID0gc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUbyBzZXQgdGhlIG1hcmdpbiBvZiBwcmV0dHktcHJpbnRlci4gKilcbmxldCBwcF9saW1pdCBuID1cbiAgaWYgbiA8IHBwX2luZmluaXR5IHRoZW4gbiBlbHNlIHByZWQgcHBfaW5maW5pdHlcblxuXG4oKiBJbnRlcm5hbCBwcmV0dHktcHJpbnRlciBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0IDwtIG47XG4gICAgc3RhdGUucHBfbWF4X2luZGVudCA8LSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9yaW5pdCBzdGF0ZVxuXG5cbigqIEluaXRpYWxseSwgd2UgaGF2ZSA6XG4gICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQsIGFuZFxuICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbi4gKilcbmxldCBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuID1cbiAgaWYgbiA+IDEgdGhlblxuICAgIHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSAoc3RhdGUucHBfbWFyZ2luIC0gbilcblxuXG5sZXQgcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfaW5kZW50XG5cbmxldCBwcF9zZXRfbWFyZ2luIHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21hcmdpbiA8LSBuO1xuICAgIGxldCBuZXdfbWF4X2luZGVudCA9XG4gICAgICAoKiBUcnkgdG8gbWFpbnRhaW4gbWF4X2luZGVudCB0byBpdHMgYWN0dWFsIHZhbHVlLiAqKVxuICAgICAgaWYgc3RhdGUucHBfbWF4X2luZGVudCA8PSBzdGF0ZS5wcF9tYXJnaW5cbiAgICAgIHRoZW4gc3RhdGUucHBfbWF4X2luZGVudCBlbHNlXG4gICAgICAoKiBJZiBwb3NzaWJsZSBtYWludGFpbiBwcF9taW5fc3BhY2VfbGVmdCB0byBpdHMgYWN0dWFsIHZhbHVlLFxuICAgICAgICAgaWYgdGhpcyBsZWFkcyB0byBhIHRvbyBzbWFsbCBtYXhfaW5kZW50LCB0YWtlIGhhbGYgb2YgdGhlXG4gICAgICAgICBuZXcgbWFyZ2luLCBpZiBpdCBpcyBncmVhdGVyIHRoYW4gMS4gKilcbiAgICAgICBJbnQubWF4IChJbnQubWF4IChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdClcbiAgICAgICAgICAgICAgICAoc3RhdGUucHBfbWFyZ2luIC8gMikpIDEgaW5cbiAgICAoKiBSZWJ1aWxkIGludmFyaWFudHMuICopXG4gICAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbmV3X21heF9pbmRlbnRcblxuXG4oKiogR2VvbWV0cnkgZnVuY3Rpb25zIGFuZCB0eXBlcyAqKVxudHlwZSBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDppbnQ7IG1hcmdpbjogaW50fVxuXG5sZXQgdmFsaWRhdGVfZ2VvbWV0cnkge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBpZiBtYXhfaW5kZW50IDwgMiB0aGVuXG4gICAgRXJyb3IgXCJtYXhfaW5kZW50IDwgMlwiXG4gIGVsc2UgaWYgbWFyZ2luIDw9IG1heF9pbmRlbnQgdGhlblxuICAgIEVycm9yIFwibWFyZ2luIDw9IG1heF9pbmRlbnRcIlxuICBlbHNlIE9rICgpXG5cbmxldCBjaGVja19nZW9tZXRyeSBnZW9tZXRyeSA9XG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBPayAoKSAtPiB0cnVlXG4gIHwgRXJyb3IgXyAtPiBmYWxzZVxuXG5sZXQgcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmdpblxuXG5sZXQgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBwcF9zZXRfbWFyZ2luIHN0YXRlIG1hcmdpbjtcbiAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbWF4X2luZGVudDtcbiAgKClcblxubGV0IHBwX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgbXNnIC0+XG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiRm9ybWF0LnBwX3NldF9nZW9tZXRyeTogXCIgXiBtc2cpKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX3NhZmVfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBfbXNnIC0+XG4gICAgICgpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpID1cbiAgeyBtYXJnaW4gPSBwcF9nZXRfbWFyZ2luIHN0YXRlICgpOyBtYXhfaW5kZW50ID0gcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgfVxuXG5sZXQgcHBfdXBkYXRlX2dlb21ldHJ5IHN0YXRlIHVwZGF0ZSA9XG4gIGxldCBnZW9tZXRyeSA9IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSBpblxuICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSAodXBkYXRlIGdlb21ldHJ5KVxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgIG91dF9zdHJpbmcgPSBmO1xuICAgICAgb3V0X2ZsdXNoID0gZztcbiAgICAgIG91dF9uZXdsaW5lID0gaDtcbiAgICAgIG91dF9zcGFjZXMgPSBpO1xuICAgICAgb3V0X2luZGVudCA9IGo7XG4gICAgfSA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjtcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGc7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGg7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gaTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBqXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUgKCkgPSB7XG4gIG91dF9zdHJpbmcgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nO1xuICBvdXRfZmx1c2ggPSBzdGF0ZS5wcF9vdXRfZmx1c2g7XG4gIG91dF9uZXdsaW5lID0gc3RhdGUucHBfb3V0X25ld2xpbmU7XG4gIG91dF9zcGFjZXMgPSBzdGF0ZS5wcF9vdXRfc3BhY2VzO1xuICBvdXRfaW5kZW50ID0gc3RhdGUucHBfb3V0X2luZGVudDtcbn1cblxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIHN0cmluZyBvdXRwdXQgYW5kIGZsdXNoIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgZiBnID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmOyBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZ1xuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlICgpID1cbiAgKHN0YXRlLnBwX291dF9zdHJpbmcsIHN0YXRlLnBwX291dF9mbHVzaClcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfbmV3bGluZSBzdGF0ZSAoKSA9IHN0YXRlLnBwX291dF9zdHJpbmcgXCJcXG5cIiAwICAxXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBzcGFjZXMuICopXG5sZXQgYmxhbmtfbGluZSA9IFN0cmluZy5tYWtlIDgwICcgJ1xubGV0IHJlYyBkaXNwbGF5X2JsYW5rcyBzdGF0ZSBuID1cbiAgaWYgbiA+IDAgdGhlblxuICBpZiBuIDw9IDgwIHRoZW4gc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgbiBlbHNlXG4gIGJlZ2luXG4gICAgc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgODA7XG4gICAgZGlzcGxheV9ibGFua3Mgc3RhdGUgKG4gLSA4MClcbiAgZW5kXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IGluZGVudGF0aW9uIG9mIG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X2luZGVudCA9IGRpc3BsYXlfYmxhbmtzXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucyBhcyBwcmludGluZyB0byBhIGdpdmVuXG4gICBbUGVydmFzaXZlLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHN0YXRlIG9jID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBvdXRwdXRfc3Vic3RyaW5nIG9jO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gKGZ1biAoKSAtPiBmbHVzaCBvYyk7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBzdGF0ZVxuXG4oKlxuXG4gIERlZmluaW5nIHNwZWNpZmljIGZvcm1hdHRlcnNcblxuKilcblxubGV0IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPFwiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5sZXQgZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPC9cIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxuXG5sZXQgZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyA9IGlnbm9yZVxubGV0IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnID0gaWdub3JlXG5cbigqIEJ1aWxkaW5nIGEgZm9ybWF0dGVyIGdpdmVuIGl0cyBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLlxuICAgT3RoZXIgZmllbGRzIGdldCByZWFzb25hYmxlIGRlZmF1bHQgdmFsdWVzLiAqKVxubGV0IHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgaiA9XG4gICgqIFRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBmb3JtYXR0ZXIgY29udGFpbnMgYSBkdW1teSBib3guICopXG4gIGxldCBwcF9xdWV1ZSA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQgc3lzX3RvayA9XG4gICAgeyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX2JlZ2luICgwLCBQcF9ob3Zib3gpOyBsZW5ndGggPSAwIH0gaW5cbiAgUXVldWUuYWRkIHN5c190b2sgcHBfcXVldWU7XG4gIGxldCBzY2FuX3N0YWNrID0gU3RhY2suY3JlYXRlICgpIGluXG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzY2FuX3N0YWNrO1xuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IDE7IHF1ZXVlX2VsZW0gPSBzeXNfdG9rIH0gc2Nhbl9zdGFjaztcbiAgbGV0IHBwX21hcmdpbiA9IDc4XG4gIGFuZCBwcF9taW5fc3BhY2VfbGVmdCA9IDEwIGluXG4gIHtcbiAgICBwcF9zY2FuX3N0YWNrID0gc2Nhbl9zdGFjaztcbiAgICBwcF9mb3JtYXRfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGJveF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90YWdfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFya19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJnaW4gPSBwcF9tYXJnaW47XG4gICAgcHBfbWluX3NwYWNlX2xlZnQgPSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbjtcbiAgICBwcF9jdXJyZW50X2luZGVudCA9IDA7XG4gICAgcHBfaXNfbmV3X2xpbmUgPSB0cnVlO1xuICAgIHBwX2xlZnRfdG90YWwgPSAxO1xuICAgIHBwX3JpZ2h0X3RvdGFsID0gMTtcbiAgICBwcF9jdXJyX2RlcHRoID0gMTtcbiAgICBwcF9tYXhfYm94ZXMgPSBtYXhfaW50O1xuICAgIHBwX2VsbGlwc2lzID0gXCIuXCI7XG4gICAgcHBfb3V0X3N0cmluZyA9IGY7XG4gICAgcHBfb3V0X2ZsdXNoID0gZztcbiAgICBwcF9vdXRfbmV3bGluZSA9IGg7XG4gICAgcHBfb3V0X3NwYWNlcyA9IGk7XG4gICAgcHBfb3V0X2luZGVudCA9IGo7XG4gICAgcHBfcHJpbnRfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfb3Blbl90YWcgPSBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWc7XG4gICAgcHBfbWFya19jbG9zZV90YWcgPSBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnO1xuICAgIHBwX3ByaW50X29wZW5fdGFnID0gZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZztcbiAgICBwcF9wcmludF9jbG9zZV90YWcgPSBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZztcbiAgICBwcF9xdWV1ZSA9IHBwX3F1ZXVlO1xuICB9XG5cblxuKCogQnVpbGQgYSBmb3JtYXR0ZXIgb3V0IG9mIGl0cyBvdXQgZnVuY3Rpb25zLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfZnVuY3Rpb25zIG91dF9mdW5zID1cbiAgcHBfbWFrZV9mb3JtYXR0ZXJcbiAgICBvdXRfZnVucy5vdXRfc3RyaW5nXG4gICAgb3V0X2Z1bnMub3V0X2ZsdXNoXG4gICAgb3V0X2Z1bnMub3V0X25ld2xpbmVcbiAgICBvdXRfZnVucy5vdXRfc3BhY2VzXG4gICAgb3V0X2Z1bnMub3V0X2luZGVudFxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd2l0aCBkZWZhdWx0IGZ1bmN0aW9ucyB0byBvdXRwdXQgc3BhY2VzLFxuICBpbmRlbnRhdGlvbiwgYW5kIG5ldyBsaW5lcy4gKilcbmxldCBtYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggPVxuICBsZXQgcHBmID0gcHBfbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoIGlnbm9yZSBpZ25vcmUgaWdub3JlIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgcHBmXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW1BlcnZhc2l2ZS5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jID1cbiAgbWFrZV9mb3JtYXR0ZXIgKG91dHB1dF9zdWJzdHJpbmcgb2MpIChmdW4gKCkgLT4gZmx1c2ggb2MpXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW0J1ZmZlci50XSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgPVxuICBtYWtlX2Zvcm1hdHRlciAoQnVmZmVyLmFkZF9zdWJzdHJpbmcgYikgaWdub3JlXG5cblxuKCogQWxsb2NhdGluZyBidWZmZXIgZm9yIHByZXR0eS1wcmludGluZyBwdXJwb3Nlcy5cbiAgIERlZmF1bHQgYnVmZmVyIHNpemUgaXMgcHBfYnVmZmVyX3NpemUgb3IgNTEyLlxuKilcbmxldCBwcF9idWZmZXJfc2l6ZSA9IDUxMlxubGV0IHBwX21ha2VfYnVmZmVyICgpID0gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZVxuXG4oKiBUaGUgc3RhbmRhcmQgKHNoYXJlZCkgYnVmZmVyLiAqKVxubGV0IHN0ZGJ1ZiA9IHBwX21ha2VfYnVmZmVyICgpXG5cbigqIFByZWRlZmluZWQgZm9ybWF0dGVycyBzdGFuZGFyZCBmb3JtYXR0ZXIgdG8gcHJpbnRcbiAgIHRvIFtTdGRsaWIuc3Rkb3V0XSwgW1N0ZGxpYi5zdGRlcnJdLCBhbmQgeyFzdGRidWZ9LiAqKVxubGV0IHN0ZF9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZG91dFxuYW5kIGVycl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZGVyclxuYW5kIHN0cl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIHN0ZGJ1ZlxuXG5cbigqIFtmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGZdIGZsdXNoZXMgZm9ybWF0dGVyIFtwcGZdLFxuICAgdGhlbiByZXR1cm5zIHRoZSBjb250ZW50cyBvZiBidWZmZXIgW2J1Zl0gdGhhdCBpcyByZXNldC5cbiAgIEZvcm1hdHRlciBbcHBmXSBpcyBzdXBwb3NlZCB0byBwcmludCB0byBidWZmZXIgW2J1Zl0sIG90aGVyd2lzZSB0aGlzXG4gICBmdW5jdGlvbiBpcyBub3QgcmVhbGx5IHVzZWZ1bC4gKilcbmxldCBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGYgPVxuICBwcF9mbHVzaF9xdWV1ZSBwcGYgZmFsc2U7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBCdWZmZXIucmVzZXQgYnVmO1xuICBzXG5cblxuKCogRmx1c2ggW3N0cl9mb3JtYXR0ZXJdIGFuZCBnZXQgdGhlIGNvbnRlbnRzIG9mIFtzdGRidWZdLiAqKVxubGV0IGZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkgPSBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIHN0ZGJ1ZiBzdHJfZm9ybWF0dGVyXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZ1xuKilcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nIGlzIHByZXR0eS1wcmludGluZyB3aXRoIG5vIGxvdyBsZXZlbCBvdXRwdXQuXG5cbiAgV2hlbiB1c2luZyBhIHN5bWJvbGljIGZvcm1hdHRlciwgYWxsIHJlZ3VsYXIgcHJldHR5LXByaW50aW5nIGFjdGl2aXRpZXNcbiAgb2NjdXIgYnV0IG91dHB1dCBtYXRlcmlhbCBpcyBzeW1ib2xpYyBhbmQgc3RvcmVkIGluIGEgYnVmZmVyIG9mIG91dHB1dFxuICBpdGVtcy4gQXQgdGhlIGVuZCBvZiBwcmV0dHktcHJpbnRpbmcsIGZsdXNoaW5nIHRoZSBvdXRwdXQgYnVmZmVyIGFsbG93c1xuICBwb3N0LXByb2Nlc3Npbmcgb2Ygc3ltYm9saWMgb3V0cHV0IGJlZm9yZSBsb3cgbGV2ZWwgb3V0cHV0IG9wZXJhdGlvbnMuXG4qKVxuXG50eXBlIHN5bWJvbGljX291dHB1dF9pdGVtID1cbiAgfCBPdXRwdXRfZmx1c2hcbiAgfCBPdXRwdXRfbmV3bGluZVxuICB8IE91dHB1dF9zdHJpbmcgb2Ygc3RyaW5nXG4gIHwgT3V0cHV0X3NwYWNlcyBvZiBpbnRcbiAgfCBPdXRwdXRfaW5kZW50IG9mIGludFxuXG50eXBlIHN5bWJvbGljX291dHB1dF9idWZmZXIgPSB7XG4gIG11dGFibGUgc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDogc3ltYm9saWNfb3V0cHV0X2l0ZW0gbGlzdDtcbn1cblxubGV0IG1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciAoKSA9XG4gIHsgc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzID0gW10gfVxuXG5sZXQgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIFtdXG5cbmxldCBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBMaXN0LnJldiBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzXG5cbmxldCBmbHVzaF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBpdGVtcyA9IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiBpblxuICBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYjtcbiAgaXRlbXNcblxubGV0IGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgaXRlbSA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gaXRlbSA6OiBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzXG5cbmxldCBmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgc3ltYm9saWNfZmx1c2ggc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9mbHVzaFxuICBhbmQgc3ltYm9saWNfbmV3bGluZSBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X25ld2xpbmVcbiAgYW5kIHN5bWJvbGljX3N0cmluZyBzb2IgcyBpIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zdHJpbmcgKFN0cmluZy5zdWIgcyBpIG4pKVxuICBhbmQgc3ltYm9saWNfc3BhY2VzIHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3BhY2VzIG4pXG4gIGFuZCBzeW1ib2xpY19pbmRlbnQgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9pbmRlbnQgbikgaW5cblxuICBsZXQgZiA9IHN5bWJvbGljX3N0cmluZyBzb2JcbiAgYW5kIGcgPSBzeW1ib2xpY19mbHVzaCBzb2JcbiAgYW5kIGggPSBzeW1ib2xpY19uZXdsaW5lIHNvYlxuICBhbmQgaSA9IHN5bWJvbGljX3NwYWNlcyBzb2JcbiAgYW5kIGogPSBzeW1ib2xpY19pbmRlbnQgc29iIGluXG4gIHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgalxuXG4oKlxuXG4gIEJhc2ljIGZ1bmN0aW9ucyBvbiB0aGUgJ3N0YW5kYXJkJyBmb3JtYXR0ZXJcbiAgKHRoZSBmb3JtYXR0ZXIgdGhhdCBwcmludHMgdG8gW1N0ZGxpYi5zdGRvdXRdKS5cblxuKilcblxubGV0IG9wZW5faGJveCA9IHBwX29wZW5faGJveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl92Ym94ID0gcHBfb3Blbl92Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX2h2Ym94ID0gcHBfb3Blbl9odmJveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl9ob3Zib3ggPSBwcF9vcGVuX2hvdmJveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl9ib3ggPSBwcF9vcGVuX2JveCBzdGRfZm9ybWF0dGVyXG5hbmQgY2xvc2VfYm94ID0gcHBfY2xvc2VfYm94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX3RhZyA9IHBwX29wZW5fdGFnIHN0ZF9mb3JtYXR0ZXJcbmFuZCBjbG9zZV90YWcgPSBwcF9jbG9zZV90YWcgc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5fc3RhZyA9IHBwX29wZW5fc3RhZyBzdGRfZm9ybWF0dGVyXG5hbmQgY2xvc2Vfc3RhZyA9IHBwX2Nsb3NlX3N0YWcgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2FzID0gcHBfcHJpbnRfYXMgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X3N0cmluZyA9IHBwX3ByaW50X3N0cmluZyBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfYnl0ZXMgPSBwcF9wcmludF9ieXRlcyBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfaW50ID0gcHBfcHJpbnRfaW50IHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9mbG9hdCA9IHBwX3ByaW50X2Zsb2F0IHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9jaGFyID0gcHBfcHJpbnRfY2hhciBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfYm9vbCA9IHBwX3ByaW50X2Jvb2wgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2JyZWFrID0gcHBfcHJpbnRfYnJlYWsgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2N1dCA9IHBwX3ByaW50X2N1dCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfc3BhY2UgPSBwcF9wcmludF9zcGFjZSBzdGRfZm9ybWF0dGVyXG5hbmQgZm9yY2VfbmV3bGluZSA9IHBwX2ZvcmNlX25ld2xpbmUgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2ZsdXNoID0gcHBfcHJpbnRfZmx1c2ggc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X25ld2xpbmUgPSBwcF9wcmludF9uZXdsaW5lIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9pZl9uZXdsaW5lID0gcHBfcHJpbnRfaWZfbmV3bGluZSBzdGRfZm9ybWF0dGVyXG5cbmFuZCBvcGVuX3Rib3ggPSBwcF9vcGVuX3Rib3ggc3RkX2Zvcm1hdHRlclxuYW5kIGNsb3NlX3Rib3ggPSBwcF9jbG9zZV90Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF90YnJlYWsgPSBwcF9wcmludF90YnJlYWsgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X3RhYiA9IHBwX3NldF90YWIgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X3RhYiA9IHBwX3ByaW50X3RhYiBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfbWFyZ2luID0gcHBfc2V0X21hcmdpbiBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X21hcmdpbiA9IHBwX2dldF9tYXJnaW4gc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X21heF9pbmRlbnQgPSBwcF9zZXRfbWF4X2luZGVudCBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X21heF9pbmRlbnQgPSBwcF9nZXRfbWF4X2luZGVudCBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZ2VvbWV0cnkgPSBwcF9zZXRfZ2VvbWV0cnkgc3RkX2Zvcm1hdHRlclxuYW5kIHNhZmVfc2V0X2dlb21ldHJ5ID0gcHBfc2FmZV9zZXRfZ2VvbWV0cnkgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9nZW9tZXRyeSA9IHBwX2dldF9nZW9tZXRyeSBzdGRfZm9ybWF0dGVyXG5hbmQgdXBkYXRlX2dlb21ldHJ5ID0gcHBfdXBkYXRlX2dlb21ldHJ5IHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9tYXhfYm94ZXMgPSBwcF9zZXRfbWF4X2JveGVzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfbWF4X2JveGVzID0gcHBfZ2V0X21heF9ib3hlcyBzdGRfZm9ybWF0dGVyXG5hbmQgb3Zlcl9tYXhfYm94ZXMgPSBwcF9vdmVyX21heF9ib3hlcyBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZWxsaXBzaXNfdGV4dCA9IHBwX3NldF9lbGxpcHNpc190ZXh0IHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZWxsaXBzaXNfdGV4dCA9IHBwX2dldF9lbGxpcHNpc190ZXh0IHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgPVxuICBwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgc2V0X3ByaW50X3RhZ3MgPVxuICBwcF9zZXRfcHJpbnRfdGFncyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X3ByaW50X3RhZ3MgPVxuICBwcF9nZXRfcHJpbnRfdGFncyBzdGRfZm9ybWF0dGVyXG5hbmQgc2V0X21hcmtfdGFncyA9XG4gIHBwX3NldF9tYXJrX3RhZ3Mgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9tYXJrX3RhZ3MgPVxuICBwcF9nZXRfbWFya190YWdzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBzZXRfdGFncyA9XG4gIHBwX3NldF90YWdzIHN0ZF9mb3JtYXR0ZXJcblxuXG4oKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgKilcblxuKCogVG8gZm9ybWF0IGEgbGlzdCAqKVxubGV0IHJlYyBwcF9wcmludF9saXN0ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBbdl0gLT4gcHBfdiBwcGYgdlxuICB8IHYgOjogdnMgLT5cbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3NlcCBwcGYgKCk7XG4gICAgcHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBwX3YgcHBmIHZzXG5cbigqIFRvIGZvcm1hdCBhIHNlcXVlbmNlICopXG5sZXQgcmVjIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgU2VxLk5pbCAtPiAoKVxuICB8IFNlcS5Db25zICh2LCBzZXEpIC0+XG4gICAgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcVxuXG5sZXQgcHBfcHJpbnRfc2VxID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gKClcbiAgfCBTZXEuQ29ucyAodiwgc2VxKSAtPlxuICAgIHBwX3YgcHBmIHY7XG4gICAgcHBfcHJpbnRfc2VxX2luIH5wcF9zZXAgcHBfdiBwcGYgc2VxXG5cbigqIFRvIGZvcm1hdCBmcmVlLWZsb3dpbmcgdGV4dCAqKVxubGV0IHBwX3ByaW50X3RleHQgcHBmIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsZWZ0ID0gcmVmIDAgaW5cbiAgbGV0IHJpZ2h0ID0gcmVmIDAgaW5cbiAgbGV0IGZsdXNoICgpID1cbiAgICBwcF9wcmludF9zdHJpbmcgcHBmIChTdHJpbmcuc3ViIHMgIWxlZnQgKCFyaWdodCAtICFsZWZ0KSk7XG4gICAgaW5jciByaWdodDsgbGVmdCA6PSAhcmlnaHQ7XG4gIGluXG4gIHdoaWxlICghcmlnaHQgPD4gbGVuKSBkb1xuICAgIG1hdGNoIHMuWyFyaWdodF0gd2l0aFxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBmbHVzaCAoKTtcbiAgICAgICAgcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgICAgIHwgJyAnIC0+XG4gICAgICAgIGZsdXNoICgpOyBwcF9wcmludF9zcGFjZSBwcGYgKClcbiAgICAgICgqIHRoZXJlIGlzIG5vIHNwZWNpZmljIHN1cHBvcnQgZm9yICdcXHQnXG4gICAgICAgICBhcyBpdCBpcyB1bmNsZWFyIHdoYXQgYSByaWdodCBzZW1hbnRpY3Mgd291bGQgYmUgKilcbiAgICAgIHwgXyAtPiBpbmNyIHJpZ2h0XG4gIGRvbmU7XG4gIGlmICFsZWZ0IDw+IGxlbiB0aGVuIGZsdXNoICgpXG5cbmxldCBwcF9wcmludF9vcHRpb24gPyhub25lID0gZnVuIF8gKCkgLT4gKCkpIHBwX3YgcHBmID0gZnVuY3Rpb25cbnwgTm9uZSAtPiBub25lIHBwZiAoKVxufCBTb21lIHYgLT4gcHBfdiBwcGYgdlxuXG5sZXQgcHBfcHJpbnRfcmVzdWx0IH5vayB+ZXJyb3IgcHBmID0gZnVuY3Rpb25cbnwgT2sgdiAtPiBvayBwcGYgdlxufCBFcnJvciBlIC0+IGVycm9yIHBwZiBlXG5cbmxldCBwcF9wcmludF9laXRoZXIgfmxlZnQgfnJpZ2h0IHBwZiA9IGZ1bmN0aW9uXG58IEVpdGhlci5MZWZ0IGwgLT4gbGVmdCBwcGYgbFxufCBFaXRoZXIuUmlnaHQgciAtPiByaWdodCBwcGYgclxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY29tcHV0ZV90YWcgb3V0cHV0IHRhZ19hY2MgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxNiBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgb3V0cHV0IHBwZiB0YWdfYWNjO1xuICBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIGxldCBsZW4gPSBCdWZmZXIubGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPCAyIHRoZW4gQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICBlbHNlIEJ1ZmZlci5zdWIgYnVmIDEgKGxlbiAtIDIpXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuICBEZWZpbmluZyBjb250aW51YXRpb25zIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudHMgb2ZcbiAgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLlxuXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxuKCogSW50ZXJwcmV0IGEgZm9ybWF0dGluZyBlbnRpdHkgb24gYSBmb3JtYXR0ZXIuICopXG5sZXQgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmbXRpbmdfbGl0ID0gbWF0Y2ggZm10aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV9ib3ggcHBmICgpXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV90YWcgcHBmICgpXG4gIHwgQnJlYWsgKF8sIHdpZHRoLCBvZmZzZXQpICAtPiBwcF9wcmludF9icmVhayBwcGYgd2lkdGggb2Zmc2V0XG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9mbHVzaCBwcGYgKClcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9wcmludF9uZXdsaW5lIHBwZiAoKVxuICB8IE1hZ2ljX3NpemUgKF8sIF8pICAgICAgICAgLT4gKClcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJ1xuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJyUnXG4gIHwgU2Nhbl9pbmRpYyBjICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCc7IHBwX3ByaW50X2NoYXIgcHBmIGNcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhbiBvdXRwdXRfc3RyZWFtLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLm91dHB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgb3V0cHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgZiBwcGY7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gb3V0cHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLmJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZGVsYXkgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChmICgpKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiAoZiAoKSk7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKlxuXG4gIERlZmluaW5nIFtmcHJpbnRmXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtmcHJpbnRmXS5cblxuKilcblxubGV0IGtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIHBwZiBhY2M7IGsgcHBmKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmFuZCBpa2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBwcGYgZm10XG5cbmxldCBpZnByaW50ZiBfcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGlnbm9yZSAoKSBmbXRcblxubGV0IGZwcmludGYgcHBmID0ga2ZwcmludGYgaWdub3JlIHBwZlxubGV0IHByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZF9mb3JtYXR0ZXIgZm10XG5sZXQgZXByaW50ZiBmbXQgPSBmcHJpbnRmIGVycl9mb3JtYXR0ZXIgZm10XG5cbmxldCBrZHByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBrIChmdW4gcHBmIC0+IG91dHB1dF9hY2MgcHBmIGFjYykpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGRwcmludGYgZm10ID0ga2RwcmludGYgKGZ1biBpIC0+IGkpIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBiID0gcHBfbWFrZV9idWZmZXIgKCkgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPVxuICAgIHN0cnB1dF9hY2MgcHBmIGFjYztcbiAgICBrIChmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGIgcHBmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxubGV0IHNwcmludGYgZm10ID0ga3NwcmludGYgaWQgZm10XG5cbmxldCBrYXNwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBiID0gcHBfbWFrZV9idWZmZXIgKCkgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPVxuICAgIG91dHB1dF9hY2MgcHBmIGFjYztcbiAgICBrIChmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGIgcHBmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxubGV0IGFzcHJpbnRmIGZtdCA9IGthc3ByaW50ZiBpZCBmbXRcblxuKCogRmx1c2hpbmcgc3RhbmRhcmQgZm9ybWF0dGVycyBhdCBlbmQgb2YgZXhlY3V0aW9uLiAqKVxuXG5sZXQgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyAoKSA9XG4gIHBwX3ByaW50X2ZsdXNoIHN0ZF9mb3JtYXR0ZXIgKCk7XG4gIHBwX3ByaW50X2ZsdXNoIGVycl9mb3JtYXR0ZXIgKClcblxubGV0ICgpID0gYXRfZXhpdCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzXG5cbigqXG5cbiAgRGVwcmVjYXRlZCBzdHVmZi5cblxuKilcblxuKCogRGVwcmVjYXRlZCA6IHN1YnN1bWVkIGJ5IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAqKVxubGV0IHBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGVcbiAgICB+b3V0OmYgfmZsdXNoOmcgfm5ld2xpbmU6aCB+c3BhY2VzOmkgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgZiBnO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBoO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGlcblxuKCogRGVwcmVjYXRlZCA6IHN1YnN1bWVkIGJ5IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAqKVxubGV0IHBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgKCkgPVxuICAoc3RhdGUucHBfb3V0X3N0cmluZywgc3RhdGUucHBfb3V0X2ZsdXNoLFxuICAgc3RhdGUucHBfb3V0X25ld2xpbmUsIHN0YXRlLnBwX291dF9zcGFjZXMpXG5cblxuKCogRGVwcmVjYXRlZCA6IHN1YnN1bWVkIGJ5IHNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAqKVxubGV0IHNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPVxuICBwcF9zZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcblxuXG4oKiBEZXByZWNhdGVkIDogc3Vic3VtZWQgYnkgZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICopXG5sZXQgZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuXG5cbigqIERlcHJlY2F0ZWQgOiBlcnJvciBwcm9uZSBmdW5jdGlvbiwgZG8gbm90IHVzZSBpdC5cbiAgIFRoaXMgZnVuY3Rpb24gaXMgbmVpdGhlciBjb21wb3NpdGlvbmFsIG5vciBpbmNyZW1lbnRhbCwgc2luY2UgaXQgZmx1c2hlc1xuICAgdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGF0IGVhY2ggY2FsbC5cbiAgIFRvIGdldCB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5LCBkZWZpbmUgYSBmb3JtYXR0ZXIgb2YgeW91ciBvd24gd3JpdGluZyB0b1xuICAgdGhlIGJ1ZmZlciBhcmd1bWVudCwgYXMgaW5cbiAgIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGJcbiAgIHRoZW4gdXNlIHshZnByaW50ZiBwcGZ9IGFzIHVzdWFsLiAqKVxubGV0IGJwcmludGYgYiAoRm9ybWF0IChmbXQsIF8pIDogKCdhLCBmb3JtYXR0ZXIsIHVuaXQpIGZvcm1hdCkgPVxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9IG91dHB1dF9hY2MgcHBmIGFjYzsgcHBfZmx1c2hfcXVldWUgcHBmIGZhbHNlIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG4oKiBEZXByZWNhdGVkIDogYWxpYXMgZm9yIGtzcHJpbnRmLiAqKVxubGV0IGtwcmludGYgPSBrc3ByaW50ZlxuXG5cblxuKCogRGVwcmVjYXRlZCB0YWcgZnVuY3Rpb25zICopXG5cbnR5cGUgZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgPSB7XG4gIG1hcmtfb3Blbl90YWcgOiB0YWcgLT4gc3RyaW5nO1xuICBtYXJrX2Nsb3NlX3RhZyA6IHRhZyAtPiBzdHJpbmc7XG4gIHByaW50X29wZW5fdGFnIDogdGFnIC0+IHVuaXQ7XG4gIHByaW50X2Nsb3NlX3RhZyA6IHRhZyAtPiB1bml0O1xufVxuXG5cbmxldCBwcF9zZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgc3RhdGUge1xuICAgICBtYXJrX29wZW5fdGFnID0gbW90O1xuICAgICBtYXJrX2Nsb3NlX3RhZyA9IG1jdDtcbiAgICAgcHJpbnRfb3Blbl90YWcgPSBwb3Q7XG4gICAgIHByaW50X2Nsb3NlX3RhZyA9IHBjdDtcbiAgIH0gPVxuICBsZXQgc3RyaW5naWZ5IGYgZSA9IGZ1bmN0aW9uIFN0cmluZ190YWcgcyAtPiBmIHMgfCBfIC0+IGUgaW5cbiAgc3RhdGUucHBfbWFya19vcGVuX3RhZyA8LSBzdHJpbmdpZnkgbW90IFwiXCI7XG4gIHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIDwtIHN0cmluZ2lmeSBtY3QgXCJcIjtcbiAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgPC0gc3RyaW5naWZ5IHBvdCAoKTtcbiAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIDwtIHN0cmluZ2lmeSBwY3QgKClcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyBmbXQgKCkgPVxuICBsZXQgZnVucyA9IHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgZm10ICgpIGluXG4gIGxldCBtYXJrX29wZW5fdGFnIHMgPSBmdW5zLm1hcmtfb3Blbl9zdGFnIChTdHJpbmdfdGFnIHMpIGluXG4gIGxldCBtYXJrX2Nsb3NlX3RhZyBzID0gZnVucy5tYXJrX2Nsb3NlX3N0YWcgKFN0cmluZ190YWcgcykgaW5cbiAgbGV0IHByaW50X29wZW5fdGFnIHMgPSBmdW5zLnByaW50X29wZW5fc3RhZyAoU3RyaW5nX3RhZyBzKSBpblxuICBsZXQgcHJpbnRfY2xvc2VfdGFnIHMgPSBmdW5zLnByaW50X2Nsb3NlX3N0YWcgKFN0cmluZ190YWcgcykgaW5cbiAge21hcmtfb3Blbl90YWc7IG1hcmtfY2xvc2VfdGFnOyBwcmludF9vcGVuX3RhZzsgcHJpbnRfY2xvc2VfdGFnfVxuXG5sZXQgc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgPVxuICBwcF9nZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxuKCogYWxpYXMgdG8gYXZvaWQgd2FybmluZyBmb3IgYW1iaWd1aXR5IGJldHdlZW5cbiAgIFN0ZGxpYi5mb3JtYXQ2XG4gICBhbmQgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcblxuICAgKHRoZSBmb3JtZXIgaXMgaW4gZmFjdCBhbiBhbGlhcyBmb3IgdGhlIGxhdHRlcixcbiAgICBidXQgdGhlIGFtYmlndWl0eSB3YXJuaW5nIGRvZXNuJ3QgY2FyZSlcbiopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIFN0ZGxpYi5mb3JtYXQ2XG5cblxuKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIHNjYW5uZXJzLiAqKVxuXG4oKiBTY2FubmluZyBidWZmZXJzLiAqKVxubW9kdWxlIHR5cGUgU0NBTk5JTkcgPSBzaWdcblxuICB0eXBlIGluX2NoYW5uZWxcblxuICB0eXBlIHNjYW5idWYgPSBpbl9jaGFubmVsXG5cbiAgdHlwZSBmaWxlX25hbWUgPSBzdHJpbmdcblxuICB2YWwgc3RkaW4gOiBpbl9jaGFubmVsXG4gICgqIFRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLlxuICAgICBbc3RkaWJdIGlzIGVxdWl2YWxlbnQgdG8gW1NjYW5uaW5nLmZyb21fY2hhbm5lbCBTdGRsaWIuc3RkaW5dLiAqKVxuXG4gIHZhbCBzdGRpYiA6IGluX2NoYW5uZWxcbiAgKCogQW4gYWxpYXMgZm9yIFtTY2FuZi5zdGRpbl0sIHRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tXG4gICAgIFtTdGRsaWIuc3RkaW5dLiAqKVxuXG4gIHZhbCBuZXh0X2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogW1NjYW5uaW5nLm5leHRfY2hhciBpYl0gYWR2YW5jZSB0aGUgc2Nhbm5pbmcgYnVmZmVyIGZvclxuICAgICBvbmUgY2hhcmFjdGVyLlxuICAgICBJZiBubyBtb3JlIGNoYXJhY3RlciBjYW4gYmUgcmVhZCwgc2V0cyBhIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiBhbmRcbiAgICAgcmV0dXJucyAnXFwwMDAnLiAqKVxuXG4gIHZhbCBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciA6IHNjYW5idWYgLT4gdW5pdFxuICAoKiBbU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJdIG1hcmsgdGhlIGN1cnJlbnRfY2hhciBhcyBhbHJlYWR5XG4gICAgIHNjYW5uZWQuICopXG5cbiAgdmFsIHBlZWtfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBbU2Nhbm5pbmcucGVla19jaGFyIGliXSByZXR1cm5zIHRoZSBjdXJyZW50IGNoYXIgYXZhaWxhYmxlIGluXG4gICAgIHRoZSBidWZmZXIgb3IgcmVhZHMgb25lIGlmIG5lY2Vzc2FyeSAod2hlbiB0aGUgY3VycmVudCBjaGFyYWN0ZXIgaXNcbiAgICAgYWxyZWFkeSBzY2FubmVkKS5cbiAgICAgSWYgbm8gY2hhcmFjdGVyIGNhbiBiZSByZWFkLCBzZXRzIGFuIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiBhbmRcbiAgICAgcmV0dXJucyAnXFwwMDAnLiAqKVxuXG4gIHZhbCBjaGVja2VkX3BlZWtfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBTYW1lIGFzIFtTY2FubmluZy5wZWVrX2NoYXJdIGFib3ZlIGJ1dCBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGNoYXIgb3JcbiAgICAgZmFpbHM6IGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgbnVsbCBjaGFyIHdoZW4gdGhlIHJlYWRpbmcgbWV0aG9kIG9mIHRoZVxuICAgICBpbnB1dCBidWZmZXIgaGFzIHJlYWNoZWQgYW4gZW5kIG9mIGZpbGUsIHRoZSBmdW5jdGlvbiByYWlzZXMgZXhjZXB0aW9uXG4gICAgIFtFbmRfb2ZfZmlsZV0uICopXG5cbiAgdmFsIHN0b3JlX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBjaGFyIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuc3RvcmVfY2hhciBsaW0gaWIgY10gYWRkcyBbY10gdG8gdGhlIHRva2VuIGJ1ZmZlclxuICAgICBvZiB0aGUgc2Nhbm5pbmcgYnVmZmVyIFtpYl0uIEl0IGFsc28gYWR2YW5jZXMgdGhlIHNjYW5uaW5nIGJ1ZmZlciBmb3JcbiAgICAgb25lIGNoYXJhY3RlciBhbmQgcmV0dXJucyBbbGltIC0gMV0sIGluZGljYXRpbmcgdGhlIG5ldyBsaW1pdCBmb3IgdGhlXG4gICAgIGxlbmd0aCBvZiB0aGUgY3VycmVudCB0b2tlbi4gKilcblxuICB2YWwgc2tpcF9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5za2lwX2NoYXIgbGltIGliXSBpZ25vcmVzIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4gKilcblxuICB2YWwgaWdub3JlX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmlnbm9yZV9jaGFyIGliIGxpbV0gaWdub3JlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIgYW5kXG4gICAgIGRlY3JlbWVudHMgdGhlIGxpbWl0LiAqKVxuXG4gIHZhbCB0b2tlbiA6IHNjYW5idWYgLT4gc3RyaW5nXG4gICgqIFtTY2FubmluZy50b2tlbiBpYl0gcmV0dXJucyB0aGUgc3RyaW5nIHN0b3JlZCBpbnRvIHRoZSB0b2tlblxuICAgICBidWZmZXIgb2YgdGhlIHNjYW5uaW5nIGJ1ZmZlcjogaXQgcmV0dXJucyB0aGUgdG9rZW4gbWF0Y2hlZCBieSB0aGVcbiAgICAgZm9ybWF0LiAqKVxuXG4gIHZhbCByZXNldF90b2tlbiA6IHNjYW5idWYgLT4gdW5pdFxuICAoKiBbU2Nhbm5pbmcucmVzZXRfdG9rZW4gaWJdIHJlc2V0cyB0aGUgdG9rZW4gYnVmZmVyIG9mXG4gICAgIHRoZSBnaXZlbiBzY2FubmluZyBidWZmZXIuICopXG5cbiAgdmFsIGNoYXJfY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuY2hhcl9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnNcbiAgICAgcmVhZCBzbyBmYXIgZnJvbSB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBsaW5lX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmxpbmVfY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiBuZXcgbGluZVxuICAgICBjaGFyYWN0ZXJzIHJlYWQgc28gZmFyIGZyb20gdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgdG9rZW5fY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcudG9rZW5fY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiB0b2tlbnMgcmVhZFxuICAgICBzbyBmYXIgZnJvbSBbaWJdLiAqKVxuXG4gIHZhbCBlb2YgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmVvZiBpYl0gcmV0dXJucyB0aGUgZW5kIG9mIGlucHV0IGNvbmRpdGlvblxuICAgICBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBlbmRfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYl0gdGVzdHMgdGhlIGVuZCBvZiBpbnB1dCBjb25kaXRpb25cbiAgICAgb2YgdGhlIGdpdmVuIGJ1ZmZlciAoaWYgbm8gY2hhciBoYXMgZXZlciBiZWVuIHJlYWQsIGFuIGF0dGVtcHQgdG9cbiAgICAgcmVhZCBvbmUgaXMgcGVyZm9ybWVkKS4gKilcblxuICB2YWwgYmVnaW5uaW5nX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5iZWdpbm5pbmdfb2ZfaW5wdXQgaWJdIHRlc3RzIHRoZSBiZWdpbm5pbmcgb2YgaW5wdXRcbiAgICAgY29uZGl0aW9uIG9mIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIG5hbWVfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IHN0cmluZ1xuICAoKiBbU2Nhbm5pbmcubmFtZV9vZl9pbnB1dCBpYl0gcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgY2hhcmFjdGVyXG4gICAgIHNvdXJjZSBmb3IgaW5wdXQgYnVmZmVyIFtpYl0uICopXG5cbiAgdmFsIG9wZW5faW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgb3Blbl9pbl9iaW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9maWxlIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZmlsZV9iaW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9zdHJpbmcgOiBzdHJpbmcgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9mdW5jdGlvbiA6ICh1bml0IC0+IGNoYXIpIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fY2hhbm5lbCA6IFN0ZGxpYi5pbl9jaGFubmVsIC0+IGluX2NoYW5uZWxcblxuICB2YWwgY2xvc2VfaW4gOiBpbl9jaGFubmVsIC0+IHVuaXRcblxuICB2YWwgbWVtb19mcm9tX2NoYW5uZWwgOiBTdGRsaWIuaW5fY2hhbm5lbCAtPiBpbl9jaGFubmVsXG4gICgqIE9ic29sZXRlLiAqKVxuXG5lbmRcblxuXG5tb2R1bGUgU2Nhbm5pbmcgOiBTQ0FOTklORyA9IHN0cnVjdFxuXG4gICgqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FuZi4gKilcblxuICB0eXBlIGZpbGVfbmFtZSA9IHN0cmluZ1xuXG4gIHR5cGUgaW5fY2hhbm5lbF9uYW1lID1cbiAgICB8IEZyb21fY2hhbm5lbCBvZiBTdGRsaWIuaW5fY2hhbm5lbFxuICAgIHwgRnJvbV9maWxlIG9mIGZpbGVfbmFtZSAqIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2Z1bmN0aW9uXG4gICAgfCBGcm9tX3N0cmluZ1xuXG5cbiAgdHlwZSBpbl9jaGFubmVsID0ge1xuICAgIG11dGFibGUgaWNfZW9mIDogYm9vbDtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhciA6IGNoYXI7XG4gICAgbXV0YWJsZSBpY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgOiBib29sO1xuICAgIG11dGFibGUgaWNfY2hhcl9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX2xpbmVfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBpY190b2tlbl9jb3VudCA6IGludDtcbiAgICBpY19nZXRfbmV4dF9jaGFyIDogdW5pdCAtPiBjaGFyO1xuICAgIGljX3Rva2VuX2J1ZmZlciA6IEJ1ZmZlci50O1xuICAgIGljX2lucHV0X25hbWUgOiBpbl9jaGFubmVsX25hbWU7XG4gIH1cblxuXG4gIHR5cGUgc2NhbmJ1ZiA9IGluX2NoYW5uZWxcblxuICBsZXQgbnVsbF9jaGFyID0gJ1xcMDAwJ1xuXG4gICgqIFJlYWRzIGEgbmV3IGNoYXJhY3RlciBmcm9tIGlucHV0IGJ1ZmZlci5cbiAgICAgTmV4dF9jaGFyIG5ldmVyIGZhaWxzLCBldmVuIGluIGNhc2Ugb2YgZW5kIG9mIGlucHV0OlxuICAgICBpdCB0aGVuIHNpbXBseSBzZXRzIHRoZSBlbmQgb2YgZmlsZSBjb25kaXRpb24uICopXG4gIGxldCBuZXh0X2NoYXIgaWIgPVxuICAgIHRyeVxuICAgICAgbGV0IGMgPSBpYi5pY19nZXRfbmV4dF9jaGFyICgpIGluXG4gICAgICBpYi5pY19jdXJyZW50X2NoYXIgPC0gYztcbiAgICAgIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSB0cnVlO1xuICAgICAgaWIuaWNfY2hhcl9jb3VudCA8LSBzdWNjIGliLmljX2NoYXJfY291bnQ7XG4gICAgICBpZiBjID0gJ1xcbicgdGhlbiBpYi5pY19saW5lX2NvdW50IDwtIHN1Y2MgaWIuaWNfbGluZV9jb3VudDtcbiAgICAgIGMgd2l0aFxuICAgIHwgRW5kX29mX2ZpbGUgLT5cbiAgICAgIGxldCBjID0gbnVsbF9jaGFyIGluXG4gICAgICBpYi5pY19jdXJyZW50X2NoYXIgPC0gYztcbiAgICAgIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZTtcbiAgICAgIGliLmljX2VvZiA8LSB0cnVlO1xuICAgICAgY1xuXG5cbiAgbGV0IHBlZWtfY2hhciBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jdXJyZW50X2NoYXJcbiAgICBlbHNlIG5leHRfY2hhciBpYlxuXG5cbiAgKCogUmV0dXJucyBhIHZhbGlkIGN1cnJlbnQgY2hhciBmb3IgdGhlIGlucHV0IGJ1ZmZlci4gSW4gcGFydGljdWxhclxuICAgICBubyBpcnJlbGV2YW50IG51bGwgY2hhcmFjdGVyIChhcyBzZXQgYnkgW25leHRfY2hhcl0gaW4gY2FzZSBvZiBlbmRcbiAgICAgb2YgaW5wdXQpIGlzIHJldHVybmVkLCBzaW5jZSBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuXG4gICAgIFtuZXh0X2NoYXJdIHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiB3aGlsZSB0cnlpbmcgdG8gcmVhZCBhXG4gICAgIG5ldyBjaGFyYWN0ZXIuICopXG4gIGxldCBjaGVja2VkX3BlZWtfY2hhciBpYiA9XG4gICAgbGV0IGMgPSBwZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpYi5pY19lb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZTtcbiAgICBjXG5cblxuICBsZXQgZW5kX29mX2lucHV0IGliID1cbiAgICBpZ25vcmUgKHBlZWtfY2hhciBpYik7XG4gICAgaWIuaWNfZW9mXG5cblxuICBsZXQgZW9mIGliID0gaWIuaWNfZW9mXG5cbiAgbGV0IGJlZ2lubmluZ19vZl9pbnB1dCBpYiA9IGliLmljX2NoYXJfY291bnQgPSAwXG5cbiAgbGV0IG5hbWVfb2ZfaW5wdXQgaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIF9pYyAtPiBcInVubmFtZWQgU3RkbGliIGlucHV0IGNoYW5uZWxcIlxuICAgIHwgRnJvbV9maWxlIChmbmFtZSwgX2ljKSAtPiBmbmFtZVxuICAgIHwgRnJvbV9mdW5jdGlvbiAtPiBcInVubmFtZWQgZnVuY3Rpb25cIlxuICAgIHwgRnJvbV9zdHJpbmcgLT4gXCJ1bm5hbWVkIGNoYXJhY3RlciBzdHJpbmdcIlxuXG5cbiAgbGV0IGNoYXJfY291bnQgaWIgPVxuICAgIGlmIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZFxuICAgIHRoZW4gaWIuaWNfY2hhcl9jb3VudCAtIDFcbiAgICBlbHNlIGliLmljX2NoYXJfY291bnRcblxuXG4gIGxldCBsaW5lX2NvdW50IGliID0gaWIuaWNfbGluZV9jb3VudFxuXG4gIGxldCByZXNldF90b2tlbiBpYiA9IEJ1ZmZlci5yZXNldCBpYi5pY190b2tlbl9idWZmZXJcblxuICBsZXQgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWIgPSBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gZmFsc2VcblxuICBsZXQgdG9rZW4gaWIgPVxuICAgIGxldCB0b2tlbl9idWZmZXIgPSBpYi5pY190b2tlbl9idWZmZXIgaW5cbiAgICBsZXQgdG9rID0gQnVmZmVyLmNvbnRlbnRzIHRva2VuX2J1ZmZlciBpblxuICAgIEJ1ZmZlci5jbGVhciB0b2tlbl9idWZmZXI7XG4gICAgaWIuaWNfdG9rZW5fY291bnQgPC0gc3VjYyBpYi5pY190b2tlbl9jb3VudDtcbiAgICB0b2tcblxuXG4gIGxldCB0b2tlbl9jb3VudCBpYiA9IGliLmljX3Rva2VuX2NvdW50XG5cbiAgbGV0IHNraXBfY2hhciB3aWR0aCBpYiA9XG4gICAgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7XG4gICAgd2lkdGhcblxuXG4gIGxldCBpZ25vcmVfY2hhciB3aWR0aCBpYiA9IHNraXBfY2hhciAod2lkdGggLSAxKSBpYlxuXG4gIGxldCBzdG9yZV9jaGFyIHdpZHRoIGliIGMgPVxuICAgIEJ1ZmZlci5hZGRfY2hhciBpYi5pY190b2tlbl9idWZmZXIgYztcbiAgICBpZ25vcmVfY2hhciB3aWR0aCBpYlxuXG5cbiAgbGV0IGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemUgPSAxMDI0XG5cbiAgbGV0IGNyZWF0ZSBpbmFtZSBuZXh0ID0ge1xuICAgIGljX2VvZiA9IGZhbHNlO1xuICAgIGljX2N1cnJlbnRfY2hhciA9IG51bGxfY2hhcjtcbiAgICBpY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPSBmYWxzZTtcbiAgICBpY19jaGFyX2NvdW50ID0gMDtcbiAgICBpY19saW5lX2NvdW50ID0gMDtcbiAgICBpY190b2tlbl9jb3VudCA9IDA7XG4gICAgaWNfZ2V0X25leHRfY2hhciA9IG5leHQ7XG4gICAgaWNfdG9rZW5fYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSBkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplO1xuICAgIGljX2lucHV0X25hbWUgPSBpbmFtZTtcbiAgfVxuXG5cbiAgbGV0IGZyb21fc3RyaW5nIHMgPVxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWkgPj0gbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGUgZWxzZVxuICAgICAgbGV0IGMgPSBzLlshaV0gaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGMgaW5cbiAgICBjcmVhdGUgRnJvbV9zdHJpbmcgbmV4dFxuXG5cbiAgbGV0IGZyb21fZnVuY3Rpb24gPSBjcmVhdGUgRnJvbV9mdW5jdGlvblxuXG4gICgqIFNjYW5uaW5nIGZyb20gYW4gaW5wdXQgY2hhbm5lbC4gKilcblxuICAoKiBQb3NpdGlvbiBvZiB0aGUgcHJvYmxlbTpcblxuICAgICBXZSBjYW5ub3QgcHJldmVudCB0aGUgc2Nhbm5pbmcgbWVjaGFuaXNtIHRvIHVzZSBvbmUgbG9va2FoZWFkIGNoYXJhY3RlcixcbiAgICAgaWYgbmVlZGVkIGJ5IHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGZvcm1hdCBzdHJpbmcgc3BlY2lmaWNhdGlvbnMgKGUuZy4gYVxuICAgICB0cmFpbGluZyAnc2tpcCBzcGFjZScgc3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9ybWF0IHN0cmluZyk7IGluIHRoaXMgY2FzZSxcbiAgICAgdGhlIG1hbmRhdG9yeSBsb29rYWhlYWQgY2hhcmFjdGVyIGlzIGluZGVlZCByZWFkIGZyb20gdGhlIGlucHV0IGFuZCBub3RcbiAgICAgdXNlZCB0byByZXR1cm4gdGhlIHRva2VuIHJlYWQuIEl0IGlzIHRodXMgbWFuZGF0b3J5IHRvIGJlIGFibGUgdG8gc3RvcmVcbiAgICAgYW4gdW51c2VkIGxvb2thaGVhZCBjaGFyYWN0ZXIgc29tZXdoZXJlIHRvIGdldCBpdCBhcyB0aGUgZmlyc3QgY2hhcmFjdGVyXG4gICAgIG9mIHRoZSBuZXh0IHNjYW4uXG5cbiAgICAgVG8gY2lyY3VtdmVudCB0aGlzIHByb2JsZW0sIGFsbCB0aGUgc2Nhbm5pbmcgZnVuY3Rpb25zIGdldCBhIGxvdyBsZXZlbFxuICAgICBpbnB1dCBidWZmZXIgYXJndW1lbnQgd2hlcmUgdGhleSBzdG9yZSB0aGUgbG9va2FoZWFkIGNoYXJhY3RlciB3aGVuXG4gICAgIG5lZWRlZDsgYWRkaXRpb25hbGx5LCB0aGUgaW5wdXQgYnVmZmVyIGlzIHRoZSBvbmx5IHNvdXJjZSBvZiBjaGFyYWN0ZXIgb2ZcbiAgICAgYSBzY2FubmVyLiBUaGUgW3NjYW5idWZdIGlucHV0IGJ1ZmZlcnMgYXJlIGRlZmluZWQgaW4gbW9kdWxlIHshU2Nhbm5pbmd9LlxuXG4gICAgIE5vdyB3ZSB1bmRlcnN0YW5kIHRoYXQgaXQgaXMgZXh0cmVtZWx5IGltcG9ydGFudCB0aGF0IHJlbGF0ZWQgYW5kXG4gICAgIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gc2Nhbm5lcnMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgc2FtZSBpbnB1dCBidWZmZXIuXG4gICAgIEluIGVmZmVjdCwgaWYgYSBzY2FubmVyIFtzY2FuMV0gaXMgcmVhZGluZyBmcm9tIFtpYjFdIGFuZCBzdG9yZXMgYW5cbiAgICAgdW51c2VkIGxvb2thaGVhZCBjaGFyYWN0ZXIgW2MxXSBpbnRvIGl0cyBpbnB1dCBidWZmZXIgW2liMV0sIHRoZW5cbiAgICAgYW5vdGhlciBzY2FubmVyIFtzY2FuMl0gbm90IHJlYWRpbmcgZnJvbSB0aGUgc2FtZSBidWZmZXIgW2liMV0gd2lsbCBtaXNzXG4gICAgIHRoZSBjaGFyYWN0ZXIgW2MxXSwgc2VlbWluZ2x5IHZhbmlzaGVkIGluIHRoZSBhaXIgZnJvbSB0aGUgcG9pbnQgb2Ygdmlld1xuICAgICBvZiBbc2NhbjJdLlxuXG4gICAgIFRoaXMgbWVjaGFuaXNtIHdvcmtzIHBlcmZlY3RseSB0byByZWFkIGZyb20gc3RyaW5ncywgZnJvbSBmaWxlcywgYW5kIGZyb21cbiAgICAgZnVuY3Rpb25zLCBzaW5jZSBpbiB0aG9zZSBjYXNlcywgYWxsb2NhdGluZyB0d28gYnVmZmVycyByZWFkaW5nIGZyb20gdGhlXG4gICAgIHNhbWUgc291cmNlIGlzIHVubmF0dXJhbC5cblxuICAgICBTdGlsbCwgdGhlcmUgaXMgYSBkaWZmaWN1bHR5IGluIHRoZSBjYXNlIG9mIHNjYW5uaW5nIGZyb20gYW4gaW5wdXRcbiAgICAgY2hhbm5lbC4gSW4gZWZmZWN0LCB3aGVuIHNjYW5uaW5nIGZyb20gYW4gaW5wdXQgY2hhbm5lbCBbaWNdLCB0aGlzIGNoYW5uZWxcbiAgICAgbWF5IG5vdCBoYXZlIGJlZW4gYWxsb2NhdGVkIGZyb20gd2l0aGluIHRoaXMgbGlicmFyeS4gSGVuY2UsIGl0IG1heSBiZVxuICAgICBzaGFyZWQgKHR3byBmdW5jdGlvbnMgb2YgdGhlIHVzZXIncyBwcm9ncmFtIG1heSBzdWNjZXNzaXZlbHkgcmVhZCBmcm9tXG4gICAgIFtpY10pLiBUaGlzIGlzIGhpZ2hseSBlcnJvciBwcm9uZSBzaW5jZSwgb25lIG9mIHRoZSBmdW5jdGlvbiBtYXkgc2VlayB0aGVcbiAgICAgaW5wdXQgY2hhbm5lbCwgd2hpbGUgdGhlIG90aGVyIGZ1bmN0aW9uIGhhcyBzdGlsbCBhbiB1bnVzZWQgbG9va2FoZWFkXG4gICAgIGNoYXJhY3RlciBpbiBpdHMgaW5wdXQgYnVmZmVyLiBJbiBjb25jbHVzaW9uLCB5b3Ugc2hvdWxkIG5ldmVyIG1peCBkaXJlY3RcbiAgICAgbG93IGxldmVsIHJlYWRpbmcgYW5kIGhpZ2ggbGV2ZWwgc2Nhbm5pbmcgZnJvbSB0aGUgc2FtZSBpbnB1dCBjaGFubmVsLlxuXG4gICopXG5cbiAgKCogUGVyZm9ybSBidWZmZXJpemVkIGlucHV0IHRvIGltcHJvdmUgZWZmaWNpZW5jeS4gKilcbiAgbGV0IGZpbGVfYnVmZmVyX3NpemUgPSByZWYgMTAyNFxuXG4gICgqIFRoZSBzY2FubmVyIGNsb3NlcyB0aGUgaW5wdXQgY2hhbm5lbCBhdCBlbmQgb2YgaW5wdXQuICopXG4gIGxldCBzY2FuX2Nsb3NlX2F0X2VuZCBpYyA9IFN0ZGxpYi5jbG9zZV9pbiBpYzsgcmFpc2UgRW5kX29mX2ZpbGVcblxuICAoKiBUaGUgc2Nhbm5lciBkb2VzIG5vdCBjbG9zZSB0aGUgaW5wdXQgY2hhbm5lbCBhdCBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IGp1c3QgcmFpc2VzIFtFbmRfb2ZfZmlsZV0uICopXG4gIGxldCBzY2FuX3JhaXNlX2F0X2VuZCBfaWMgPSByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gIGxldCBmcm9tX2ljIHNjYW5fY2xvc2VfaWMgaW5hbWUgaWMgPVxuICAgIGxldCBsZW4gPSAhZmlsZV9idWZmZXJfc2l6ZSBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsaW0gPSByZWYgMCBpblxuICAgIGxldCBlb2YgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA8ICFsaW0gdGhlbiBiZWdpbiBsZXQgYyA9IEJ5dGVzLmdldCBidWYgIWkgaW4gaW5jciBpOyBjIGVuZCBlbHNlXG4gICAgICBpZiAhZW9mIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGUgZWxzZSBiZWdpblxuICAgICAgICBsaW0gOj0gaW5wdXQgaWMgYnVmIDAgbGVuO1xuICAgICAgICBpZiAhbGltID0gMCB0aGVuIGJlZ2luIGVvZiA6PSB0cnVlOyBzY2FuX2Nsb3NlX2ljIGljIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgaSA6PSAxO1xuICAgICAgICAgIEJ5dGVzLmdldCBidWYgMFxuICAgICAgICBlbmRcbiAgICAgIGVuZCBpblxuICAgIGNyZWF0ZSBpbmFtZSBuZXh0XG5cblxuICBsZXQgZnJvbV9pY19jbG9zZV9hdF9lbmQgPSBmcm9tX2ljIHNjYW5fY2xvc2VfYXRfZW5kXG4gIGxldCBmcm9tX2ljX3JhaXNlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcblxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS5cbiAgICAgT25lIGNvdWxkIHRyeSB0byBkZWZpbmUgW3N0ZGliXSBhcyBhIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGEgY2hhcmFjdGVyXG4gICAgIGF0IGEgdGltZSAobm8gYnVmZmVyaXphdGlvbiBhdCBhbGwpLCBidXQgdW5mb3J0dW5hdGVseSB0aGUgdG9wLWxldmVsXG4gICAgIGludGVyYWN0aW9uIHdvdWxkIGJlIHdyb25nLiBUaGlzIGlzIGR1ZSB0byBzb21lIGtpbmQgb2ZcbiAgICAgJ3JhY2UgY29uZGl0aW9uJyB3aGVuIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXSxcbiAgICAgc2luY2UgdGhlIGludGVyYWN0aXZlIGNvbXBpbGVyIGFuZCBbU2NhbmYuc2NhbmZdIHdpbGwgc2ltdWx0YW5lb3VzbHlcbiAgICAgcmVhZCB0aGUgbWF0ZXJpYWwgdGhleSBuZWVkIGZyb20gW1N0ZGxpYi5zdGRpbl07IHRoZW4sIGNvbmZ1c2lvblxuICAgICB3aWxsIHJlc3VsdCBmcm9tIHdoYXQgc2hvdWxkIGJlIHJlYWQgYnkgdGhlIHRvcC1sZXZlbCBhbmQgd2hhdCBzaG91bGQgYmVcbiAgICAgcmVhZCBieSBbU2NhbmYuc2NhbmZdLlxuICAgICBUaGlzIGlzIGV2ZW4gbW9yZSBjb21wbGljYXRlZCBieSB0aGUgb25lIGNoYXJhY3RlciBsb29rYWhlYWQgdGhhdFxuICAgICBbU2NhbmYuc2NhbmZdIGlzIHNvbWV0aW1lcyBvYmxpZ2VkIHRvIG1haW50YWluOiB0aGUgbG9va2FoZWFkIGNoYXJhY3RlclxuICAgICB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgW1NjYW5mLnNjYW5mXSBlbnRyeSwgc2VlbWluZ2x5IGNvbWluZyBmcm9tXG4gICAgIG5vd2hlcmUuXG4gICAgIEFsc28gbm8gW0VuZF9vZl9maWxlXSBpcyByYWlzZWQgd2hlbiByZWFkaW5nIGZyb20gc3RkaW46IGlmIG5vdCBlbm91Z2hcbiAgICAgY2hhcmFjdGVycyBoYXZlIGJlZW4gcmVhZCwgd2Ugc2ltcGx5IGFzayB0byByZWFkIG1vcmUuICopXG4gIGxldCBzdGRpbiA9XG4gICAgZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuICAgICAgKEZyb21fZmlsZSAoXCItXCIsIFN0ZGxpYi5zdGRpbikpIFN0ZGxpYi5zdGRpblxuXG5cbiAgbGV0IHN0ZGliID0gc3RkaW5cblxuICBsZXQgb3Blbl9pbl9maWxlIG9wZW5faW4gZm5hbWUgPVxuICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICB8IFwiLVwiIC0+IHN0ZGluXG4gICAgfCBmbmFtZSAtPlxuICAgICAgbGV0IGljID0gb3Blbl9pbiBmbmFtZSBpblxuICAgICAgZnJvbV9pY19jbG9zZV9hdF9lbmQgKEZyb21fZmlsZSAoZm5hbWUsIGljKSkgaWNcblxuXG4gIGxldCBvcGVuX2luID0gb3Blbl9pbl9maWxlIFN0ZGxpYi5vcGVuX2luXG4gIGxldCBvcGVuX2luX2JpbiA9IG9wZW5faW5fZmlsZSBTdGRsaWIub3Blbl9pbl9iaW5cblxuICBsZXQgZnJvbV9maWxlID0gb3Blbl9pblxuICBsZXQgZnJvbV9maWxlX2JpbiA9IG9wZW5faW5fYmluXG5cbiAgbGV0IGZyb21fY2hhbm5lbCBpYyA9XG4gICAgZnJvbV9pY19yYWlzZV9hdF9lbmQgKEZyb21fY2hhbm5lbCBpYykgaWNcblxuXG4gIGxldCBjbG9zZV9pbiBpYiA9XG4gICAgbWF0Y2ggaWIuaWNfaW5wdXRfbmFtZSB3aXRoXG4gICAgfCBGcm9tX2NoYW5uZWwgaWMgLT5cbiAgICAgIFN0ZGxpYi5jbG9zZV9pbiBpY1xuICAgIHwgRnJvbV9maWxlIChfZm5hbWUsIGljKSAtPiBTdGRsaWIuY2xvc2VfaW4gaWNcbiAgICB8IEZyb21fZnVuY3Rpb24gfCBGcm9tX3N0cmluZyAtPiAoKVxuXG5cbiAgKCpcbiAgICAgT2Jzb2xldGU6IGEgbWVtbyBbZnJvbV9jaGFubmVsXSB2ZXJzaW9uIHRvIGJ1aWxkIGEgW1NjYW5uaW5nLmluX2NoYW5uZWxdXG4gICAgIHNjYW5uaW5nIGJ1ZmZlciBvdXQgb2YgYSBbU3RkbGliLmluX2NoYW5uZWxdLlxuICAgICBUaGlzIGZ1bmN0aW9uIHdhcyB1c2VkIHRvIHRyeSB0byBwcmVzZXJ2ZSB0aGUgc2Nhbm5pbmdcbiAgICAgc2VtYW50aWNzIGZvciB0aGUgKG5vdyBvYnNvbGV0ZSkgZnVuY3Rpb24gW2ZzY2FuZl0uXG4gICAgIEdpdmVuIHRoYXQgYWxsIHNjYW5uZXIgbXVzdCByZWFkIGZyb20gYSBbU2Nhbm5pbmcuaW5fY2hhbm5lbF0gc2Nhbm5pbmdcbiAgICAgYnVmZmVyLCBbZnNjYW5mXSBtdXN0IHJlYWQgZnJvbSBvbmUhXG4gICAgIE1vcmUgcHJlY2lzZWx5LCBnaXZlbiBbaWNdLCBhbGwgc3VjY2Vzc2l2ZSBjYWxscyBbZnNjYW5mIGljXSBtdXN0IHJlYWRcbiAgICAgZnJvbSB0aGUgc2FtZSBzY2FubmluZyBidWZmZXIuXG4gICAgIFRoaXMgb2JsaWdlZCB0aGlzIGxpYnJhcnkgdG8gYWxsb2NhdGVkIHNjYW5uaW5nIGJ1ZmZlcnMgdGhhdCB3ZXJlXG4gICAgIG5vdCBwcm9wZXJseSBnYXJiYWdlIGNvbGxlY3RhYmxlLCBoZW5jZSBsZWFkaW5nIHRvIG1lbW9yeSBsZWFrcy5cbiAgICAgSWYgeW91IG5lZWQgdG8gcmVhZCBmcm9tIGEgW1N0ZGxpYi5pbl9jaGFubmVsXSBpbnB1dCBjaGFubmVsXG4gICAgIFtpY10sIHNpbXBseSBkZWZpbmUgYSBbU2Nhbm5pbmcuaW5fY2hhbm5lbF0gZm9ybWF0dGVkIGlucHV0IGNoYW5uZWwgYXMgaW5cbiAgICAgW2xldCBpYiA9IFNjYW5uaW5nLmZyb21fY2hhbm5lbCBpY10sIHRoZW4gdXNlIFtTY2FuZi5ic2NhbmYgaWJdIGFzIHVzdWFsLlxuICAqKVxuICBsZXQgbWVtb19mcm9tX2ljID1cbiAgICBsZXQgbWVtbyA9IHJlZiBbXSBpblxuICAgIChmdW4gc2Nhbl9jbG9zZV9pYyBpYyAtPlxuICAgICB0cnkgTGlzdC5hc3NxIGljICFtZW1vIHdpdGhcbiAgICAgfCBOb3RfZm91bmQgLT5cbiAgICAgICBsZXQgaWIgPVxuICAgICAgICAgZnJvbV9pYyBzY2FuX2Nsb3NlX2ljIChGcm9tX2NoYW5uZWwgaWMpIGljIGluXG4gICAgICAgbWVtbyA6PSAoaWMsIGliKSA6OiAhbWVtbztcbiAgICAgICBpYilcblxuXG4gICgqIE9ic29sZXRlOiBzZWUgeyFtZW1vX2Zyb21faWN9IGFib3ZlLiAqKVxuICBsZXQgbWVtb19mcm9tX2NoYW5uZWwgPSBtZW1vX2Zyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcblxuZW5kXG5cblxuKCogRm9ybWF0dGVkIGlucHV0IGZ1bmN0aW9ucy4gKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHNjYW5uZXIgPVxuICAgICAoJ2EsIFNjYW5uaW5nLmluX2NoYW5uZWwsICdiLCAnYywgJ2EgLT4gJ2QsICdkKSBmb3JtYXQ2IC0+ICdjXG5cblxuKCogUmVwb3J0aW5nIGVycm9ycy4gKilcbmV4Y2VwdGlvbiBTY2FuX2ZhaWx1cmUgb2Ygc3RyaW5nXG5cbmxldCBiYWRfaW5wdXQgcyA9IHJhaXNlIChTY2FuX2ZhaWx1cmUgcylcblxubGV0IGJhZF9pbnB1dF9lc2NhcGUgYyA9XG4gIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJpbGxlZ2FsIGVzY2FwZSBjaGFyYWN0ZXIgJUNcIiBjKVxuXG5cbmxldCBiYWRfdG9rZW5fbGVuZ3RoIG1lc3NhZ2UgPVxuICBiYWRfaW5wdXRcbiAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICBcInNjYW5uaW5nIG9mICVzIGZhaWxlZDogXFxcbiAgICAgICAgdGhlIHNwZWNpZmllZCBsZW5ndGggd2FzIHRvbyBzaG9ydCBmb3IgdG9rZW5cIlxuICAgICAgIG1lc3NhZ2UpXG5cblxubGV0IGJhZF9lbmRfb2ZfaW5wdXQgbWVzc2FnZSA9XG4gIGJhZF9pbnB1dFxuICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgIFwic2Nhbm5pbmcgb2YgJXMgZmFpbGVkOiBcXFxuICAgICAgICBwcmVtYXR1cmUgZW5kIG9mIGZpbGUgb2NjdXJyZWQgYmVmb3JlIGVuZCBvZiB0b2tlblwiXG4gICAgICAgbWVzc2FnZSlcblxuXG5sZXQgYmFkX2Zsb2F0ICgpID1cbiAgYmFkX2lucHV0IFwibm8gZG90IG9yIGV4cG9uZW50IHBhcnQgZm91bmQgaW4gZmxvYXQgdG9rZW5cIlxuXG5cbmxldCBiYWRfaGV4X2Zsb2F0ICgpID1cbiAgYmFkX2lucHV0IFwibm90IGEgdmFsaWQgZmxvYXQgaW4gaGV4YWRlY2ltYWwgbm90YXRpb25cIlxuXG5cbmxldCBjaGFyYWN0ZXJfbWlzbWF0Y2hfZXJyIGMgY2kgPVxuICBQcmludGYuc3ByaW50ZiBcImxvb2tpbmcgZm9yICVDLCBmb3VuZCAlQ1wiIGMgY2lcblxuXG5sZXQgY2hhcmFjdGVyX21pc21hdGNoIGMgY2kgPVxuICBiYWRfaW5wdXQgKGNoYXJhY3Rlcl9taXNtYXRjaF9lcnIgYyBjaSlcblxuXG5sZXQgcmVjIHNraXBfd2hpdGVzIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgbm90IChTY2FubmluZy5lb2YgaWIpIHRoZW4gYmVnaW5cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyAtPlxuICAgICAgU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7IHNraXBfd2hpdGVzIGliXG4gICAgfCBfIC0+ICgpXG4gIGVuZFxuXG5cbigqIENoZWNraW5nIHRoYXQgW2NdIGlzIGluZGVlZCBpbiB0aGUgaW5wdXQsIHRoZW4gc2tpcHMgaXQuXG4gICBJbiB0aGlzIGNhc2UsIHRoZSBjaGFyYWN0ZXIgW2NdIGhhcyBiZWVuIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGluIHRoZVxuICAgZm9ybWF0IGFzIGJlaW5nIG1hbmRhdG9yeSBpbiB0aGUgaW5wdXQ7IGhlbmNlIHdlIHNob3VsZCBmYWlsIHdpdGhcbiAgIFtFbmRfb2ZfZmlsZV0gaW4gY2FzZSBvZiBlbmRfb2ZfaW5wdXQuXG4gICAoUmVtZW1iZXIgdGhhdCBbU2Nhbl9mYWlsdXJlXSBpcyByYWlzZWQgb25seSB3aGVuICh3ZSBjYW4gcHJvdmUgYnlcbiAgIGV2aWRlbmNlKSB0aGF0IHRoZSBpbnB1dCBkb2VzIG5vdCBtYXRjaCB0aGUgZm9ybWF0IHN0cmluZyBnaXZlbi4gV2UgbXVzdFxuICAgdGh1cyBkaWZmZXJlbnRpYXRlIFtFbmRfb2ZfZmlsZV0gYXMgYW4gZXJyb3IgZHVlIHRvIGxhY2sgb2YgaW5wdXQsIGFuZFxuICAgW1NjYW5fZmFpbHVyZV0gd2hpY2ggaXMgZHVlIHRvIHByb3ZhYmx5IHdyb25nIGlucHV0LiBJIGFtIG5vdCBzdXJlIHRoaXMgaXNcbiAgIHdvcnRoIHRoZSBidXJkZW46IGl0IGlzIGNvbXBsZXggYW5kIHNvbWVob3cgc3VibGltaW5hbDsgc2hvdWxkIGJlIGNsZWFyZXJcbiAgIHRvIGZhaWwgd2l0aCBTY2FuX2ZhaWx1cmUgXCJOb3QgZW5vdWdoIGlucHV0IHRvIGNvbXBsZXRlIHNjYW5uaW5nXCIhKVxuXG4gICBUaGF0J3Mgd2h5LCB3YWl0aW5nIGZvciBhIGJldHRlciBzb2x1dGlvbiwgd2UgdXNlIGNoZWNrZWRfcGVla19jaGFyIGhlcmUuXG4gICBXZSBhcmUgYWxzbyBjYXJlZnVsIHRvIHRyZWF0IFwiXFxyXFxuXCIgaW4gdGhlIGlucHV0IGFzIGFuIGVuZCBvZiBsaW5lIG1hcmtlcjpcbiAgIGl0IGFsd2F5cyBtYXRjaGVzIGEgJ1xcbicgc3BlY2lmaWNhdGlvbiBpbiB0aGUgaW5wdXQgZm9ybWF0IHN0cmluZy4gKilcbmxldCByZWMgY2hlY2tfY2hhciBpYiBjID1cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJyAnIC0+IHNraXBfd2hpdGVzIGliXG4gIHwgJ1xcbicgLT4gY2hlY2tfbmV3bGluZSBpYlxuICB8IGMgLT4gY2hlY2tfdGhpc19jaGFyIGliIGNcblxuYW5kIGNoZWNrX3RoaXNfY2hhciBpYiBjID1cbiAgbGV0IGNpID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgaWYgY2kgPSBjIHRoZW4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWIgZWxzZVxuICBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaVxuXG5hbmQgY2hlY2tfbmV3bGluZSBpYiA9XG4gIGxldCBjaSA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGNpIHdpdGhcbiAgfCAnXFxuJyAtPiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYlxuICB8ICdcXHInIC0+IFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliOyBjaGVja190aGlzX2NoYXIgaWIgJ1xcbidcbiAgfCBfIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFxuJyBjaVxuXG5cbigqIEV4dHJhY3RpbmcgdG9rZW5zIGZyb20gdGhlIG91dHB1dCB0b2tlbiBidWZmZXIuICopXG5cbmxldCB0b2tlbl9jaGFyIGliID0gKFNjYW5uaW5nLnRva2VuIGliKS5bMF1cblxubGV0IHRva2VuX3N0cmluZyA9IFNjYW5uaW5nLnRva2VuXG5cbmxldCB0b2tlbl9ib29sIGliID1cbiAgbWF0Y2ggU2Nhbm5pbmcudG9rZW4gaWIgd2l0aFxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gZmFsc2VcbiAgfCBzIC0+IGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJpbnZhbGlkIGJvb2xlYW4gJyVzJ1wiIHMpXG5cblxuKCogVGhlIHR5cGUgb2YgaW50ZWdlciBjb252ZXJzaW9ucy4gKilcbnR5cGUgaW50ZWdlcl9jb252ZXJzaW9uID1cbiAgfCBCX2NvbnZlcnNpb24gKCogVW5zaWduZWQgYmluYXJ5IGNvbnZlcnNpb24gKilcbiAgfCBEX2NvbnZlcnNpb24gKCogU2lnbmVkIGRlY2ltYWwgY29udmVyc2lvbiAqKVxuICB8IElfY29udmVyc2lvbiAoKiBTaWduZWQgaW50ZWdlciBjb252ZXJzaW9uICopXG4gIHwgT19jb252ZXJzaW9uICgqIFVuc2lnbmVkIG9jdGFsIGNvbnZlcnNpb24gKilcbiAgfCBVX2NvbnZlcnNpb24gKCogVW5zaWduZWQgZGVjaW1hbCBjb252ZXJzaW9uICopXG4gIHwgWF9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGhleGFkZWNpbWFsIGNvbnZlcnNpb24gKilcblxuXG5sZXQgaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgPSBmdW5jdGlvblxuICB8ICdiJyAtPiBCX2NvbnZlcnNpb25cbiAgfCAnZCcgLT4gRF9jb252ZXJzaW9uXG4gIHwgJ2knIC0+IElfY29udmVyc2lvblxuICB8ICdvJyAtPiBPX2NvbnZlcnNpb25cbiAgfCAndScgLT4gVV9jb252ZXJzaW9uXG4gIHwgJ3gnIHwgJ1gnIC0+IFhfY29udmVyc2lvblxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cblxuKCogRXh0cmFjdCBhbiBpbnRlZ2VyIGxpdGVyYWwgdG9rZW4uXG4gICBTaW5jZSB0aGUgZnVuY3Rpb25zIFN0ZGxpYi4qaW50Kl9vZl9zdHJpbmcgZG8gbm90IGFjY2VwdCBhIGxlYWRpbmcgKyxcbiAgIHdlIHNraXAgaXQgaWYgbmVjZXNzYXJ5LiAqKVxubGV0IHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIgPVxuICBsZXQgdG9rID1cbiAgICBtYXRjaCBjb252IHdpdGhcbiAgICB8IERfY29udmVyc2lvbiB8IElfY29udmVyc2lvbiAtPiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgVV9jb252ZXJzaW9uIC0+IFwiMHVcIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBPX2NvbnZlcnNpb24gLT4gXCIwb1wiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IFhfY29udmVyc2lvbiAtPiBcIjB4XCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgQl9jb252ZXJzaW9uIC0+IFwiMGJcIiBeIFNjYW5uaW5nLnRva2VuIGliIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCB0b2sgaW5cbiAgaWYgbCA9IDAgfHwgdG9rLlswXSA8PiAnKycgdGhlbiB0b2sgZWxzZSBTdHJpbmcuc3ViIHRvayAxIChsIC0gMSlcblxuXG4oKiBBbGwgdGhlIGZ1bmN0aW9ucyB0aGF0IGNvbnZlcnQgYSBzdHJpbmcgdG8gYSBudW1iZXIgcmFpc2UgdGhlIGV4Y2VwdGlvblxuICAgRmFpbHVyZSB3aGVuIHRoZSBjb252ZXJzaW9uIGlzIG5vdCBwb3NzaWJsZS5cbiAgIFRoaXMgZXhjZXB0aW9uIGlzIHRoZW4gdHJhcHBlZCBpbiBba3NjYW5mXS4gKilcbmxldCB0b2tlbl9pbnQgY29udiBpYiA9IGludF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5cbmxldCB0b2tlbl9mbG9hdCBpYiA9IGZsb2F0X29mX3N0cmluZyAoU2Nhbm5pbmcudG9rZW4gaWIpXG5cbigqIFRvIHNjYW4gbmF0aXZlIGludHMsIGludDMyIGFuZCBpbnQ2NCBpbnRlZ2Vycy5cbiAgIFdlIGNhbm5vdCBhY2Nlc3MgdG8gY29udmVyc2lvbnMgdG8vZnJvbSBzdHJpbmdzIGZvciB0aG9zZSB0eXBlcyxcbiAgIE5hdGl2ZWludC5vZl9zdHJpbmcsIEludDMyLm9mX3N0cmluZywgYW5kIEludDY0Lm9mX3N0cmluZyxcbiAgIHNpbmNlIHRob3NlIG1vZHVsZXMgYXJlIG5vdCBhdmFpbGFibGUgdG8gW1NjYW5mXS5cbiAgIEhvd2V2ZXIsIHdlIGNhbiBiaW5kIGFuZCB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgcHJpbWl0aXZlcyB0aGF0IGFyZVxuICAgYXZhaWxhYmxlIGluIHRoZSBydW50aW1lLiAqKVxuZXh0ZXJuYWwgbmF0aXZlaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBuYXRpdmVpbnRcbiAgPSBcImNhbWxfbmF0aXZlaW50X29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIGludDMyX29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnQ2NF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcblxuXG5sZXQgdG9rZW5fbmF0aXZlaW50IGNvbnYgaWIgPSBuYXRpdmVpbnRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxubGV0IHRva2VuX2ludDMyIGNvbnYgaWIgPSBpbnQzMl9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5sZXQgdG9rZW5faW50NjQgY29udiBpYiA9IGludDY0X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcblxuKCogU2Nhbm5pbmcgbnVtYmVycy4gKilcblxuKCogRGlnaXRzIHNjYW5uaW5nIGZ1bmN0aW9ucyBzdXBwb3NlIHRoYXQgb25lIGNoYXJhY3RlciBoYXMgYmVlbiBjaGVja2VkIGFuZFxuICAgaXMgYXZhaWxhYmxlLCBzaW5jZSB0aGV5IHJldHVybiBhdCBlbmQgb2YgZmlsZSB3aXRoIHRoZSBjdXJyZW50bHkgZm91bmRcbiAgIHRva2VuIHNlbGVjdGVkLlxuXG4gICBQdXQgaXQgaW4gYW5vdGhlciB3YXksIHRoZSBkaWdpdHMgc2Nhbm5pbmcgZnVuY3Rpb25zIHNjYW4gZm9yIGEgcG9zc2libHlcbiAgIGVtcHR5IHNlcXVlbmNlIG9mIGRpZ2l0cywgKGhlbmNlLCBhIHN1Y2Nlc3NmdWwgc2Nhbm5pbmcgZnJvbSBvbmUgb2YgdGhvc2VcbiAgIGZ1bmN0aW9ucyBkb2VzIG5vdCBpbXBseSB0aGF0IHRoZSB0b2tlbiBpcyBhIHdlbGwtZm9ybWVkIG51bWJlcjogdG8gZ2V0IGFcbiAgIHRydWUgbnVtYmVyLCBpdCBpcyBtYW5kYXRvcnkgdG8gY2hlY2sgdGhhdCBhdCBsZWFzdCBvbmUgdmFsaWQgZGlnaXQgaXNcbiAgIGF2YWlsYWJsZSBiZWZvcmUgY2FsbGluZyBvbmUgb2YgdGhlIGRpZ2l0IHNjYW5uaW5nIGZ1bmN0aW9ucykuICopXG5cbigqIFRoZSBkZWNpbWFsIGNhc2UgaXMgdHJlYXRlZCBlc3BlY2lhbGx5IGZvciBvcHRpbWl6YXRpb24gcHVycG9zZXMuICopXG5sZXQgcmVjIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgJ18nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG5sZXQgc2Nhbl9kZWNpbWFsX2RpZ2l0X3BsdXMgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiZGVjaW1hbCBkaWdpdHNcIiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgYyAtPlxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJjaGFyYWN0ZXIgJUMgaXMgbm90IGEgZGVjaW1hbCBkaWdpdFwiIGMpXG5cblxuKCogVG8gc2NhbiBudW1iZXJzIGZyb20gb3RoZXIgYmFzZXMsIHdlIHVzZSBhIHByZWRpY2F0ZSBhcmd1bWVudCB0b1xuICAgc2NhbiBkaWdpdHMuICopXG5sZXQgc2Nhbl9kaWdpdF9zdGFyIGRpZ2l0cCB3aWR0aCBpYiA9XG4gIGxldCByZWMgc2Nhbl9kaWdpdHMgd2lkdGggaWIgPVxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8IGMgd2hlbiBkaWdpdHAgYyAtPlxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuICAgIHwgJ18nIC0+XG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYiBpblxuICAgICAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcbiAgICB8IF8gLT4gd2lkdGggaW5cbiAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcblxuXG5sZXQgc2Nhbl9kaWdpdF9wbHVzIGJhc2lzIGRpZ2l0cCB3aWR0aCBpYiA9XG4gICgqIEVuc3VyZSB3ZSBoYXZlIGdvdCBlbm91Z2ggd2lkdGggbGVmdCxcbiAgICAgYW5kIHJlYWQgYXQgbGVhc3Qgb25lIGRpZ2l0LiAqKVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiZGlnaXRzXCIgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGlmIGRpZ2l0cCBjIHRoZW5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RpZ2l0X3N0YXIgZGlnaXRwIHdpZHRoIGliXG4gIGVsc2VcbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiY2hhcmFjdGVyICVDIGlzIG5vdCBhIHZhbGlkICVzIGRpZ2l0XCIgYyBiYXNpcylcblxuXG5sZXQgaXNfYmluYXJ5X2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzEnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5fYmluYXJ5X2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcImJpbmFyeVwiIGlzX2JpbmFyeV9kaWdpdFxuXG5sZXQgaXNfb2N0YWxfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnNycgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9vY3RhbF9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJvY3RhbFwiIGlzX29jdGFsX2RpZ2l0XG5cbmxldCBpc19oZXhhX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9oZXhhZGVjaW1hbF9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJoZXhhZGVjaW1hbFwiIGlzX2hleGFfZGlnaXRcblxuKCogU2NhbiBhIGRlY2ltYWwgaW50ZWdlci4gKilcbmxldCBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50ID0gc2Nhbl9kZWNpbWFsX2RpZ2l0X3BsdXNcblxubGV0IHNjYW5fc2lnbiB3aWR0aCBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJysnIC0+IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgY1xuICB8ICctJyAtPiBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGNcbiAgfCBfIC0+IHdpZHRoXG5cblxubGV0IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbigqIFNjYW4gYW4gdW5zaWduZWQgaW50ZWdlciB0aGF0IGNvdWxkIGJlIGdpdmVuIGluIGFueSAoY29tbW9uKSBiYXNpcy5cbiAgIElmIGRpZ2l0cyBhcmUgcHJlZml4ZWQgYnkgb25lIG9mIDB4LCAwWCwgMG8sIG9yIDBiLCB0aGUgbnVtYmVyIGlzXG4gICBhc3N1bWVkIHRvIGJlIHdyaXR0ZW4gcmVzcGVjdGl2ZWx5IGluIGhleGFkZWNpbWFsLCBoZXhhZGVjaW1hbCxcbiAgIG9jdGFsLCBvciBiaW5hcnkuICopXG5sZXQgc2Nhbl91bnNpZ25lZF9pbnQgd2lkdGggaWIgPVxuICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgYmVnaW4gbWF0Y2ggYyB3aXRoXG4gICAgfCAneCcgfCAnWCcgLT4gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8ICdvJyAtPiBzY2FuX29jdGFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgJ2InIC0+IHNjYW5fYmluYXJ5X2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgXyAtPiBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiBlbmRcbiAgfCBfIC0+IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG5sZXQgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9pbnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl91bnNpZ25lZF9pbnQgd2lkdGggaWJcblxuXG5sZXQgc2Nhbl9pbnRfY29udmVyc2lvbiBjb252IHdpZHRoIGliID1cbiAgbWF0Y2ggY29udiB3aXRoXG4gIHwgQl9jb252ZXJzaW9uIC0+IHNjYW5fYmluYXJ5X2ludCB3aWR0aCBpYlxuICB8IERfY29udmVyc2lvbiAtPiBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gIHwgSV9jb252ZXJzaW9uIC0+IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfaW50IHdpZHRoIGliXG4gIHwgT19jb252ZXJzaW9uIC0+IHNjYW5fb2N0YWxfaW50IHdpZHRoIGliXG4gIHwgVV9jb252ZXJzaW9uIC0+IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgfCBYX2NvbnZlcnNpb24gLT4gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG4oKiBTY2FubmluZyBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAqKVxuXG4oKiBGcmFjdGlvbmFsIHBhcnQgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZWR1Y2VkIHRvIDAgZGlnaXRzLiAqKVxubGV0IHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbigqIEV4cCBwYXJ0IGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgcmVkdWNlZCB0byAwIGRpZ2l0cy4gKilcbmxldCBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJ2UnIHwgJ0UnIGFzIGMgLT5cbiAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbigqIFNjYW4gdGhlIGludGVnZXIgcGFydCBvZiBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgKG5vdCB1c2luZyB0aGVcbiAgIE9DYW1sIGxleGljYWwgY29udmVudGlvbiBzaW5jZSB0aGUgaW50ZWdlciBwYXJ0IGNhbiBiZSBlbXB0eSk6XG4gICBhbiBvcHRpb25hbCBzaWduLCBmb2xsb3dlZCBieSBhIHBvc3NpYmx5IGVtcHR5IHNlcXVlbmNlIG9mIGRlY2ltYWxcbiAgIGRpZ2l0cyAoZS5nLiAtLjEpLiAqKVxubGV0IHNjYW5faW50ZWdlcl9wYXJ0IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG5cblxuKCpcbiAgIEZvciB0aGUgdGltZSBiZWluZyB3ZSBoYXZlIChhcyBmb3VuZCBpbiBzY2FuZi5tbGkpOlxuICAgdGhlIGZpZWxkIHdpZHRoIGlzIGNvbXBvc2VkIG9mIGFuIG9wdGlvbmFsIGludGVnZXIgbGl0ZXJhbFxuICAgaW5kaWNhdGluZyB0aGUgbWF4aW1hbCB3aWR0aCBvZiB0aGUgdG9rZW4gdG8gcmVhZC5cbiAgIFVuZm9ydHVuYXRlbHksIHRoZSB0eXBlLWNoZWNrZXIgbGV0IHRoZSB1c2VyIHdyaXRlIGFuIG9wdGlvbmFsIHByZWNpc2lvbixcbiAgIHNpbmNlIHRoaXMgaXMgdmFsaWQgZm9yIHByaW50ZiBmb3JtYXQgc3RyaW5ncy5cblxuICAgVGh1cywgdGhlIG5leHQgc3RlcCBmb3IgU2NhbmYgaXMgdG8gc3VwcG9ydCBhIGZ1bGwgd2lkdGggYW5kIHByZWNpc2lvblxuICAgaW5kaWNhdGlvbiwgbW9yZSBvciBsZXNzIHNpbWlsYXIgdG8gdGhlIG9uZSBmb3IgcHJpbnRmLCBwb3NzaWJseSBleHRlbmRlZFxuICAgdG8gdGhlIHNwZWNpZmljYXRpb24gb2YgYSBbbWF4LCBtaW5dIHJhbmdlIGZvciB0aGUgd2lkdGggb2YgdGhlIHRva2VuIHJlYWRcbiAgIGZvciBzdHJpbmdzLiBTb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nIHNwZWMgZm9yIHNjYW5mLm1saTpcblxuICAgVGhlIG9wdGlvbmFsIFt3aWR0aF0gaXMgYW4gaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBtYXhpbWFsXG4gICB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZC4gRm9yIGluc3RhbmNlLCBbJTZkXSByZWFkcyBhbiBpbnRlZ2VyLFxuICAgaGF2aW5nIGF0IG1vc3QgNiBjaGFyYWN0ZXJzLlxuXG4gICBUaGUgb3B0aW9uYWwgW3ByZWNpc2lvbl0gaXMgYSBkb3QgWy5dIGZvbGxvd2VkIGJ5IGFuIGludGVnZXI6XG5cbiAgIC0gaW4gdGhlIGZsb2F0aW5nIHBvaW50IG51bWJlciBjb252ZXJzaW9ucyAoWyVmXSwgWyVlXSwgWyVnXSwgWyVGXSwgWyVFXSxcbiAgIGFuZCBbJUZdIGNvbnZlcnNpb25zLCB0aGUgW3ByZWNpc2lvbl0gaW5kaWNhdGVzIHRoZSBtYXhpbXVtIG51bWJlciBvZlxuICAgZGlnaXRzIHRoYXQgbWF5IGZvbGxvdyB0aGUgZGVjaW1hbCBwb2ludC4gRm9yIGluc3RhbmNlLCBbJS40Zl0gcmVhZHMgYVxuICAgW2Zsb2F0XSB3aXRoIGF0IG1vc3QgNCBmcmFjdGlvbmFsIGRpZ2l0cyxcblxuICAgLSBpbiB0aGUgc3RyaW5nIGNvbnZlcnNpb25zIChbJXNdLCBbJVNdLCBbJVxcWyByYW5nZSBcXF1dKSwgYW5kIGluIHRoZVxuICAgaW50ZWdlciBudW1iZXIgY29udmVyc2lvbnMgKFslaV0sIFslZF0sIFsldV0sIFsleF0sIFslb10sIGFuZCB0aGVpclxuICAgW2ludDMyXSwgW2ludDY0XSwgYW5kIFtuYXRpdmVfaW50XSBjb3JyZXNwb25kZW50KSwgdGhlIFtwcmVjaXNpb25dXG4gICBpbmRpY2F0ZXMgdGhlIHJlcXVpcmVkIG1pbmltdW0gd2lkdGggb2YgdGhlIHRva2VuIHJlYWQsXG5cbiAgIC0gb24gYWxsIG90aGVyIGNvbnZlcnNpb25zLCB0aGUgd2lkdGggYW5kIHByZWNpc2lvbiBzcGVjaWZ5IHRoZSBbbWF4LCBtaW5dXG4gICByYW5nZSBmb3IgdGhlIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLlxuKilcbmxldCBzY2FuX2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5faW50ZWdlcl9wYXJ0IHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoLCBwcmVjaXNpb24gZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCwgcHJlY2lzaW9uIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJy4nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgbGV0IHdpZHRoID0gd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9mcmFjdGlvbmFsX3BhcnQgcHJlY2lzaW9uIGliKSBpblxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiwgcHJlY2lzaW9uXG4gIHwgXyAtPlxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiwgcHJlY2lzaW9uXG5cblxubGV0IGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGVycm9yIHN0ciA9XG4gIGxldCBsb3dlcmNhc2UgYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnQScgLi4gJ1onIC0+XG4gICAgICBjaGFyX29mX2ludCAoaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyArIGludF9vZl9jaGFyICdhJylcbiAgICB8IF8gLT4gYyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHdpZHRoID0gcmVmIHdpZHRoIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBsb3dlcmNhc2UgYyA8PiBsb3dlcmNhc2Ugc3RyLltpXSB0aGVuIGVycm9yICgpO1xuICAgIGlmICF3aWR0aCA9IDAgdGhlbiBlcnJvciAoKTtcbiAgICB3aWR0aCA6PSBTY2FubmluZy5zdG9yZV9jaGFyICF3aWR0aCBpYiBjO1xuICBkb25lO1xuICAhd2lkdGhcblxuXG5sZXQgc2Nhbl9oZXhfZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPiAoXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgbGV0IHdpZHRoID0gY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcInhcIiBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICcuJyB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWIgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgfCAnLicgYXMgYyAtPiAoXG4gICAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICAgICAgICAgICAgIHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5faGV4YWRlY2ltYWxfaW50IHByZWNpc2lvbiBpYilcbiAgICAgICAgICApXG4gICAgICAgICAgfCBfIC0+IHdpZHRoIGluXG4gICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICB8ICdwJyB8ICdQJyBhcyBjIC0+XG4gICAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgICAgICAgICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICAgICAgICAgIHwgXyAtPiB3aWR0aFxuICApXG4gIHwgJ24nIHwgJ04nIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwiYW5cIlxuICB8ICdpJyB8ICdJJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcIm5maW5pdHlcIlxuICB8IF8gLT4gYmFkX2hleF9mbG9hdCAoKVxuXG5cbmxldCBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnLicgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAoKiBUaGUgZWZmZWN0aXZlIHdpZHRoIGF2YWlsYWJsZSBmb3Igc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCBpc1xuICAgICAgIHRoZSBtaW5pbXVtIG9mIGRlY2xhcmVkIHByZWNpc2lvbiBhbmQgd2lkdGggbGVmdC4gKilcbiAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAoKiBBZnRlciBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IHdpdGggW3ByZWNpc2lvbl0gcHJvdmlzaW9uYWwgd2lkdGgsXG4gICAgICAgW3dpZHRoX3ByZWNpc2lvbl0gaXMgbGVmdC4gKilcbiAgICBsZXQgd2lkdGhfcHJlY2lzaW9uID0gc2Nhbl9mcmFjdGlvbmFsX3BhcnQgcHJlY2lzaW9uIGliIGluXG4gICAgKCogSGVuY2UsIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgdG9vayBleGFjdGx5XG4gICAgICAgW3ByZWNpc2lvbiAtIHdpZHRoX3ByZWNpc2lvbl0gY2hhcnMuICopXG4gICAgbGV0IGZyYWNfd2lkdGggPSBwcmVjaXNpb24gLSB3aWR0aF9wcmVjaXNpb24gaW5cbiAgICAoKiBBbmQgbmV3IHByb3Zpc2lvbmFsIHdpZHRoIGlzIFt3aWR0aCAtIHdpZHRoX3ByZWNpc2lvbi4gKilcbiAgICBsZXQgd2lkdGggPSB3aWR0aCAtIGZyYWNfd2lkdGggaW5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWJcbiAgfCAnZScgfCAnRScgLT5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWJcbiAgfCBfIC0+IGJhZF9mbG9hdCAoKVxuXG5cbmxldCBzY2FuX2NhbWxfZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT4gKFxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICB8ICd4JyB8ICdYJyBhcyBjIC0+IChcbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICAgIGxldCB3aWR0aCA9IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAnLicgYXMgYyAtPiAoXG4gICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICAgICAgICAgICB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2hleGFkZWNpbWFsX2ludCBwcmVjaXNpb24gaWIpXG4gICAgICAgIClcbiAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IGJhZF9mbG9hdCAoKSBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAncCcgfCAnUCcgYXMgYyAtPlxuICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgICAgICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgICAgICAgfCBfIC0+IHdpZHRoXG4gICAgKVxuICAgIHwgXyAtPlxuICAgICAgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliXG4gIClcbiAgfCAnMScgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgIHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYlxuKCogU3BlY2lhbCBjYXNlIG9mIG5hbiBhbmQgaW5maW5pdHk6XG4gIHwgJ2knIC0+XG4gIHwgJ24nIC0+XG4qKVxuICB8IF8gLT4gYmFkX2Zsb2F0ICgpXG5cblxuKCogU2NhbiBhIHJlZ3VsYXIgc3RyaW5nOlxuICAgc3RvcHMgd2hlbiBlbmNvdW50ZXJpbmcgYSBzcGFjZSwgaWYgbm8gc2Nhbm5pbmcgaW5kaWNhdGlvbiBoYXMgYmVlbiBnaXZlbjtcbiAgIG90aGVyd2lzZSwgc3RvcHMgd2hlbiBlbmNvdW50ZXJpbmcgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHNjYW5uaW5nXG4gICBpbmRpY2F0aW9uIFtzdHBdLlxuICAgSXQgYWxzbyBzdG9wcyBhdCBlbmQgb2YgZmlsZSBvciB3aGVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGhhc1xuICAgYmVlbiByZWFkLiAqKVxubGV0IHNjYW5fc3RyaW5nIHN0cCB3aWR0aCBpYiA9XG4gIGxldCByZWMgbG9vcCB3aWR0aCA9XG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgbWF0Y2ggc3RwIHdpdGhcbiAgICAgIHwgU29tZSBjJyB3aGVuIGMgPSBjJyAtPiBTY2FubmluZy5za2lwX2NoYXIgd2lkdGggaWJcbiAgICAgIHwgU29tZSBfIC0+IGxvb3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IGxvb3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaW5cbiAgbG9vcCB3aWR0aFxuXG5cbigqIFNjYW4gYSBjaGFyOiBwZWVrIHN0cmljdGx5IG9uZSBjaGFyYWN0ZXIgaW4gdGhlIGlucHV0LCB3aGF0c29ldmVyLiAqKVxubGV0IHNjYW5fY2hhciB3aWR0aCBpYiA9XG4gICgqIFRoZSBjYXNlIHdpZHRoID0gMCBjb3VsZCBub3QgaGFwcGVuIGhlcmUsIHNpbmNlIGl0IGlzIHRlc3RlZCBiZWZvcmVcbiAgICAgY2FsbGluZyBzY2FuX2NoYXIsIGluIHRoZSBtYWluIHNjYW5uaW5nIGZ1bmN0aW9uLlxuICAgIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJhIGNoYXJhY3RlclwiIGVsc2UgKilcbiAgU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAoU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIpXG5cblxubGV0IGNoYXJfZm9yX2JhY2tzbGFzaCA9IGZ1bmN0aW9uXG4gIHwgJ24nIC0+ICdcXDAxMCdcbiAgfCAncicgLT4gJ1xcMDEzJ1xuICB8ICdiJyAtPiAnXFwwMDgnXG4gIHwgJ3QnIC0+ICdcXDAwOSdcbiAgfCBjIC0+IGNcblxuXG4oKiBUaGUgaW50ZWdlciB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmYWNpYWwgdmFsdWUgb2YgYSB2YWxpZFxuICAgZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIuICopXG5sZXQgZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMgPSBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG5cbmxldCBjaGFyX2Zvcl9kZWNpbWFsX2NvZGUgYzAgYzEgYzIgPVxuICBsZXQgYyA9XG4gICAgMTAwICogZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMwICtcbiAgICAgMTAgKiBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzEgK1xuICAgICAgICAgIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMiBpblxuICBpZiBjIDwgMCB8fCBjID4gMjU1IHRoZW5cbiAgICBiYWRfaW5wdXRcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgXCJiYWQgY2hhcmFjdGVyIGRlY2ltYWwgZW5jb2RpbmcgXFxcXCVjJWMlY1wiIGMwIGMxIGMyKSBlbHNlXG4gIGNoYXJfb2ZfaW50IGNcblxuXG4oKiBUaGUgaW50ZWdlciB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmYWNpYWwgdmFsdWUgb2YgYSB2YWxpZFxuICAgaGV4YWRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyLiAqKVxubGV0IGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYyA9XG4gIGxldCBkID0gaW50X29mX2NoYXIgYyBpblxuICAoKiBDb3VsZCBhbHNvIGJlOlxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJzknIHRoZW4gZCAtIGludF9vZl9jaGFyICcwJyBlbHNlXG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnRicgdGhlbiAxMCArIGQgLSBpbnRfb2ZfY2hhciAnQScgZWxzZVxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJ2YnIHRoZW4gMTAgKyBkIC0gaW50X29mX2NoYXIgJ2EnIGVsc2UgYXNzZXJ0IGZhbHNlXG4gICopXG4gIGlmIGQgPj0gaW50X29mX2NoYXIgJ2EnIHRoZW5cbiAgICBkIC0gODcgKCogMTAgKyBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ2EnICopIGVsc2VcbiAgaWYgZCA+PSBpbnRfb2ZfY2hhciAnQScgdGhlblxuICAgIGQgLSA1NSAgKCogMTAgKyBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICopIGVsc2VcbiAgICBkIC0gaW50X29mX2NoYXIgJzAnXG5cblxubGV0IGNoYXJfZm9yX2hleGFkZWNpbWFsX2NvZGUgYzEgYzIgPVxuICBsZXQgYyA9XG4gICAgMTYgKiBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMxICtcbiAgICAgICAgIGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzIgaW5cbiAgaWYgYyA8IDAgfHwgYyA+IDI1NSB0aGVuXG4gICAgYmFkX2lucHV0XG4gICAgICAoUHJpbnRmLnNwcmludGYgXCJiYWQgY2hhcmFjdGVyIGhleGFkZWNpbWFsIGVuY29kaW5nIFxcXFwlYyVjXCIgYzEgYzIpIGVsc2VcbiAgY2hhcl9vZl9pbnQgY1xuXG5cbigqIENhbGxlZCBpbiBwYXJ0aWN1bGFyIHdoZW4gZW5jb3VudGVyaW5nICdcXFxcJyBhcyBzdGFydGVyIG9mIGEgY2hhci5cbiAgIFN0b3BzIGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyAnXFwnJy4gKilcbmxldCBjaGVja19uZXh0X2NoYXIgbWVzc2FnZSB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggbWVzc2FnZSBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIGJhZF9lbmRfb2ZfaW5wdXQgbWVzc2FnZSBlbHNlXG4gIGNcblxuXG5sZXQgY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyID0gY2hlY2tfbmV4dF9jaGFyIFwiYSBDaGFyXCJcbmxldCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyA9IGNoZWNrX25leHRfY2hhciBcImEgU3RyaW5nXCJcblxubGV0IHNjYW5fYmFja3NsYXNoX2NoYXIgd2lkdGggaWIgPVxuICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICB8ICdcXFxcJyB8ICdcXCcnIHwgJ1xcXCInIHwgJ24nIHwgJ3QnIHwgJ2InIHwgJ3InIGFzIGMgLT5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIChjaGFyX2Zvcl9iYWNrc2xhc2ggYylcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgZ2V0X2RpZ2l0ICgpID1cbiAgICAgIGxldCBjID0gU2Nhbm5pbmcubmV4dF9jaGFyIGliIGluXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+IGNcbiAgICAgIHwgYyAtPiBiYWRfaW5wdXRfZXNjYXBlIGMgaW5cbiAgICBsZXQgYzAgPSBjIGluXG4gICAgbGV0IGMxID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgbGV0IGMyID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciAod2lkdGggLSAyKSBpYiAoY2hhcl9mb3JfZGVjaW1hbF9jb2RlIGMwIGMxIGMyKVxuICB8ICd4JyAtPlxuICAgIGxldCBnZXRfZGlnaXQgKCkgPVxuICAgICAgbGV0IGMgPSBTY2FubmluZy5uZXh0X2NoYXIgaWIgaW5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyB8ICdhJyAuLiAnZicgYXMgYyAtPiBjXG4gICAgICB8IGMgLT4gYmFkX2lucHV0X2VzY2FwZSBjIGluXG4gICAgbGV0IGMxID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgbGV0IGMyID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciAod2lkdGggLSAyKSBpYiAoY2hhcl9mb3JfaGV4YWRlY2ltYWxfY29kZSBjMSBjMilcbiAgfCBjIC0+XG4gICAgYmFkX2lucHV0X2VzY2FwZSBjXG5cblxuKCogU2NhbiBhIGNoYXJhY3RlciAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fY2FtbF9jaGFyIHdpZHRoIGliID1cblxuICBsZXQgcmVjIGZpbmRfc3RhcnQgd2lkdGggPVxuICAgIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgICB8ICdcXCcnIC0+IGZpbmRfY2hhciAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFwnJyBjXG5cbiAgYW5kIGZpbmRfY2hhciB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXFxcJyAtPlxuICAgICAgZmluZF9zdG9wIChzY2FuX2JhY2tzbGFzaF9jaGFyIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYikgaWIpXG4gICAgfCBjIC0+XG4gICAgICBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcblxuICBhbmQgZmluZF9zdG9wIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcJycgLT4gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWJcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXCcnIGMgaW5cblxuICBmaW5kX3N0YXJ0IHdpZHRoXG5cblxuKCogU2NhbiBhIGRlbGltaXRlZCBzdHJpbmcgKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2NhbWxfc3RyaW5nIHdpZHRoIGliID1cblxuICBsZXQgcmVjIGZpbmRfc3RhcnQgd2lkdGggPVxuICAgIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgICB8ICdcXFwiJyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcXCInIGNcblxuICBhbmQgZmluZF9zdG9wIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxcIicgLT4gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWJcbiAgICB8ICdcXFxcJyAtPiBzY2FuX2JhY2tzbGFzaCAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuXG4gIGFuZCBzY2FuX2JhY2tzbGFzaCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xccicgLT4gc2tpcF9uZXdsaW5lIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8ICdcXG4nIC0+IHNraXBfc3BhY2VzIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IF8gLT4gZmluZF9zdG9wIChzY2FuX2JhY2tzbGFzaF9jaGFyIHdpZHRoIGliKVxuXG4gIGFuZCBza2lwX25ld2xpbmUgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXG4nIC0+IHNraXBfc3BhY2VzIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IF8gLT4gZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliICdcXHInKVxuXG4gIGFuZCBza2lwX3NwYWNlcyB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJyAnIC0+IHNraXBfc3BhY2VzIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IF8gLT4gZmluZF9zdG9wIHdpZHRoIGluXG5cbiAgZmluZF9zdGFydCB3aWR0aFxuXG5cbigqIFNjYW4gYSBib29sZWFuIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9ib29sIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBsZXQgbSA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAndCcgLT4gNFxuICAgIHwgJ2YnIC0+IDVcbiAgICB8IGMgLT5cbiAgICAgIGJhZF9pbnB1dFxuICAgICAgICAoUHJpbnRmLnNwcmludGYgXCJ0aGUgY2hhcmFjdGVyICVDIGNhbm5vdCBzdGFydCBhIGJvb2xlYW5cIiBjKSBpblxuICBzY2FuX3N0cmluZyBOb25lIG0gaWJcblxuXG4oKiBTY2FuIGEgc3RyaW5nIGNvbnRhaW5pbmcgZWxlbWVudHMgaW4gY2hhcl9zZXQgYW5kIHRlcm1pbmF0ZWQgYnkgc2Nhbl9pbmRpY1xuICAgaWYgcHJvdmlkZWQuICopXG5sZXQgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCBzY2FuX2luZGljIHdpZHRoIGliID1cbiAgbGV0IHJlYyBzY2FuX2NoYXJzIGkgc3RwID1cbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIGkgPiAwICYmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSAmJlxuICAgICAgIGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgJiZcbiAgICAgICBpbnRfb2ZfY2hhciBjIDw+IHN0cCB0aGVuXG4gICAgICBsZXQgXyA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgbWF4X2ludCBpYiBjIGluXG4gICAgICBzY2FuX2NoYXJzIChpIC0gMSkgc3RwIGluXG4gIG1hdGNoIHNjYW5faW5kaWMgd2l0aFxuICB8IE5vbmUgLT4gc2Nhbl9jaGFycyB3aWR0aCAoLTEpO1xuICB8IFNvbWUgYyAtPlxuICAgIHNjYW5fY2hhcnMgd2lkdGggKGludF9vZl9jaGFyIGMpO1xuICAgIGlmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSB0aGVuXG4gICAgICBsZXQgY2kgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICAgIGlmIGMgPSBjaVxuICAgICAgdGhlbiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYlxuICAgICAgZWxzZSBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaVxuXG5cbigqIFRoZSBnbG9iYWwgZXJyb3IgcmVwb3J0IGZ1bmN0aW9uIGZvciBbU2NhbmZdLiAqKVxubGV0IHNjYW5mX2JhZF9pbnB1dCBpYiA9IGZ1bmN0aW9uXG4gIHwgU2Nhbl9mYWlsdXJlIHMgfCBGYWlsdXJlIHMgLT5cbiAgICBsZXQgaSA9IFNjYW5uaW5nLmNoYXJfY291bnQgaWIgaW5cbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwic2NhbmY6IGJhZCBpbnB1dCBhdCBjaGFyIG51bWJlciAlaTogJXNcIiBpIHMpXG4gIHwgeCAtPiByYWlzZSB4XG5cblxuKCogR2V0IHRoZSBjb250ZW50IG9mIGEgY291bnRlciBmcm9tIGFuIGlucHV0IGJ1ZmZlci4gKilcbmxldCBnZXRfY291bnRlciBpYiBjb3VudGVyID1cbiAgbWF0Y2ggY291bnRlciB3aXRoXG4gIHwgTGluZV9jb3VudGVyIC0+IFNjYW5uaW5nLmxpbmVfY291bnQgaWJcbiAgfCBDaGFyX2NvdW50ZXIgLT4gU2Nhbm5pbmcuY2hhcl9jb3VudCBpYlxuICB8IFRva2VuX2NvdW50ZXIgLT4gU2Nhbm5pbmcudG9rZW5fY291bnQgaWJcblxuXG4oKiBDb21wdXRlIHRoZSB3aWR0aCBvZiBhIHBhZGRpbmcgb3B0aW9uIChzZWUgXCIlNDJ7XCIgYW5kIFwiJTEyMyhcIikuICopXG5sZXQgd2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0ID0gbWF0Y2ggcGFkX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBtYXhfaW50XG4gIHwgU29tZSB3aWR0aCAtPiB3aWR0aFxuXG5cbmxldCBzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZyA9XG4gIGlmIGZtdGluZyA9IEVzY2FwZWRfcGVyY2VudCB0aGVuICclJywgXCJcIiBlbHNlXG4gICAgbGV0IHN0ciA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmcgaW5cbiAgICBsZXQgc3RwID0gc3RyLlsxXSBpblxuICAgIGxldCBzdWJfc3RyID0gU3RyaW5nLnN1YiBzdHIgMiAoU3RyaW5nLmxlbmd0aCBzdHIgLSAyKSBpblxuICAgIHN0cCwgc3ViX3N0clxuXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBSZWFkZXIgbWFuYWdlbWVudCAqKVxuXG4oKiBBIGNhbGwgdG8gdGFrZV9mb3JtYXRfcmVhZGVycyBvbiBhIGZvcm1hdCBpcyBldmFsdWF0ZWQgaW50byBmdW5jdGlvbnNcbiAgIHRha2luZyByZWFkZXJzIGFzIGFyZ3VtZW50cyBhbmQgYWdncmVnYXRlIHRoZW0gaW50byBhbiBoZXRlcm9nZW5lb3VzIGxpc3QgKilcbigqIFdoZW4gYWxsIHJlYWRlcnMgYXJlIHRha2VuLCBmaW5hbGx5IHBhc3MgdGhlIGxpc3Qgb2YgdGhlIHJlYWRlcnMgdG8gdGhlXG4gICBjb250aW51YXRpb24gay4gKilcbmxldCByZWMgdGFrZV9mb3JtYXRfcmVhZGVycyA6IHR5cGUgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgIGQgPVxuZnVuIGsgZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgUmVhZGVyIGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3RcbiAgfCBDaGFyIHJlc3QgICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENhbWxfY2hhciByZXN0ICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU3RyaW5nIChfLCByZXN0KSAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDYW1sX3N0cmluZyAoXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50MzIgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBOYXRpdmVpbnQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludDY0IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRmxvYXQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBCb29sIChfLCByZXN0KSAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEFscGhhIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgVGhldGEgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGbHVzaCByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFN0cmluZ19saXRlcmFsIChfLCByZXN0KSAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDdXN0b20gKF8sIF8sIHJlc3QpICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQsIF8pKSwgcmVzdCkgLT5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdCBmbXQgcmVzdClcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10LCBfKSksIHJlc3QpIC0+XG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXQgZm10IHJlc3QpXG5cbiAgfCBGb3JtYXRfYXJnIChfLCBfLCByZXN0KSAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpICAgIC0+XG4gICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSkgcmVzdFxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgICAgICAgIC0+IHRha2VfaWdub3JlZF9mb3JtYXRfcmVhZGVycyBrIGlnbiByZXN0XG5cbiAgfCBFbmRfb2ZfZm9ybWF0ICAgICAgICAgICAgICAgICAgICAtPiBrIE5pbFxuXG4oKiBUYWtlIHJlYWRlcnMgYXNzb2NpYXRlZCB0byBhbiBmbXR0eSBjb21pbmcgZnJvbSBhIEZvcm1hdF9zdWJzdCBcIiUoLi4uJSlcIi4gKilcbmFuZCB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIDogdHlwZSB4IHkgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIHgsIHkpIGZtdHR5IC0+XG4gICAgICAoeSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgeCwgZSwgZikgZm10IC0+IGQgPVxuZnVuIGsgZm10dHkgZm10IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBSZWFkZXJfdHkgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdCBmbXRcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0IGZtdFxuICB8IENoYXJfdHkgcmVzdCAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50X3R5IHJlc3QgICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludDMyX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEZsb2F0X3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBCb29sX3R5IHJlc3QgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IFRoZXRhX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRm9ybWF0X2FyZ190eSAoXywgcmVzdCkgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEVuZF9vZl9mbXR0eSAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdHR5IHR5IHJlc3QpIGZtdFxuXG4oKiBUYWtlIHJlYWRlcnMgYXNzb2NpYXRlZCB0byBhbiBpZ25vcmVkIHBhcmFtZXRlci4gKilcbmFuZCB0YWtlX2lnbm9yZWRfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIHggeSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgeCwgeSkgaWdub3JlZCAtPlxuICAgICAgKHksIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIHgsIGUsIGYpIGZtdCAtPiBkID1cbmZ1biBrIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX3JlYWRlciAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfbmF0aXZlaW50IChfLCBfKSAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIGZtdHR5IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBHZW5lcmljIHNjYW5uaW5nICopXG5cbigqIE1ha2UgYSBnZW5lcmljIHNjYW5uaW5nIGZ1bmN0aW9uLiAqKVxuKCogU2NhbiBhIHN0cmVhbSBhY2NvcmRpbmcgdG8gYSBmb3JtYXQgYW5kIHJlYWRlcnMgb2J0YWluZWQgYnlcbiAgIHRha2VfZm9ybWF0X3JlYWRlcnMsIGFuZCBhZ2dyZWdhdGUgc2Nhbm5lZCB2YWx1ZXMgaW50byBhblxuICAgaGV0ZXJvZ2VuZW91cyBsaXN0LiAqKVxuKCogUmV0dXJuIHRoZSBoZXRlcm9nZW5lb3VzIGxpc3Qgb2Ygc2Nhbm5lZCB2YWx1ZXMuICopXG5sZXQgcmVjIG1ha2Vfc2NhbmYgOiB0eXBlIGEgYyBkIGUgZi5cbiAgICBTY2FubmluZy5pbl9jaGFubmVsIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChkLCBlKSBoZXRlcl9saXN0IC0+IChhLCBmKSBoZXRlcl9saXN0ID1cbmZ1biBpYiBmbXQgcmVhZGVycyAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IENoYXIgcmVzdCAtPlxuICAgIGxldCBfID0gc2Nhbl9jaGFyIDAgaWIgaW5cbiAgICBsZXQgYyA9IHRva2VuX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX2NoYXIgMCBpYiBpblxuICAgIGxldCBjID0gdG9rZW5fY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSkgLT5cbiAgICBsZXQgc3RwLCBzdHIgPSBzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgc3RwKSB3aWR0aCBpYiBpblxuICAgIGxldCBzdHJfcmVzdCA9IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgc3RyX3Jlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpKSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSAneycpIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhblxuICAgICAgICAgICAgICAgICAgIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgJ1snKSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW5cbiAgICAgICAgICAgICAgICAgICB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgTm9uZSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG5cbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2NhbWxfc3RyaW5nIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludCBjKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQzMiBjKVxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5fbmF0aXZlaW50IGMpXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludDY0IGMpXG4gIHwgRmxvYXQgKChfLCAoRmxvYXRfRiB8IEZsb2F0X0NGKSksIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9jYW1sX2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgRmxvYXQgKChfLCAoRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cpKSxcbiAgICAgICAgICAgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgRmxvYXQgKChfLCAoRmxvYXRfaCB8IEZsb2F0X0gpKSwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2hleF9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiBfIF8gaWIgPSBzY2FuX2Jvb2wgaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX2Jvb2xcbiAgfCBBbHBoYSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiVhXFxcIlwiXG4gIHwgVGhldGEgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIldFxcXCJcIlxuICB8IEN1c3RvbSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiU/XFxcIiAoY3VzdG9tIGNvbnZlcnRlcilcIlxuICB8IFJlYWRlciBmbXRfcmVzdCAtPlxuICAgIGJlZ2luIG1hdGNoIHJlYWRlcnMgd2l0aFxuICAgIHwgQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpIC0+XG4gICAgICAgIGxldCB4ID0gcmVhZGVyIGliIGluXG4gICAgICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10X3Jlc3QgcmVhZGVyc19yZXN0KVxuICAgIHwgTmlsIC0+XG4gICAgICAgIGludmFsaWRfYXJnIFwic2NhbmY6IG1pc3NpbmcgcmVhZGVyXCJcbiAgICBlbmRcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgaWYgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgICBlbHNlIGJhZF9pbnB1dCBcImVuZCBvZiBpbnB1dCBub3QgZm91bmRcIlxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBTdHJpbmcuaXRlciAoY2hlY2tfY2hhciBpYikgc3RyO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiBjaHI7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcblxuICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyAod2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0KSBpYiBpblxuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCA9XG4gICAgICB0cnkgZm9ybWF0X29mX3N0cmluZ19mbXR0eSBzIGZtdHR5XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2dcbiAgICBpblxuICAgIENvbnMgKGZtdCwgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgKHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCkgaWIgaW5cbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQsIGZtdCcgPVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10JyA9IGZtdF9lYmJfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgKCogVE9ETzogZmluZCBhIHdheSB0byBhdm9pZCByZXBhcnNpbmcgdHdpY2UgKilcblxuICAgICAgICAoKiBUT0RPOiB0aGVzZSB0eXBlLWNoZWNrcyBiZWxvdyAqY2FuKiBmYWlsIGJlY2F1c2Ugb2YgdHlwZVxuICAgICAgICAgICBhbWJpZ3VpdHkgaW4gcHJlc2VuY2Ugb2YgaWdub3JlZC1yZWFkZXJzOiBcIiVfciVkXCIgYW5kIFwiJWQlX3JcIlxuICAgICAgICAgICBhcmUgdHlwZWQgaW4gdGhlIHNhbWUgd2F5LlxuXG4gICAgICAgICAgICMgU2NhbmYuc3NjYW5mIFwiXFxcIiVfciVkXFxcIjNcIiBcIiUoJWQlX3IlKVwiIGlnbm9yZVxuICAgICAgICAgICAgIChmdW4gZm10IG4gLT4gc3RyaW5nX29mX2Zvcm1hdCBmbXQsIG4pXG4gICAgICAgICAgIEV4Y2VwdGlvbjogQ2FtbGludGVybmFsRm9ybWF0LlR5cGVfbWlzbWF0Y2guXG5cbiAgICAgICAgICAgV2Ugc2hvdWxkIHByb3Blcmx5IGNhdGNoIHRoaXMgZXhjZXB0aW9uLlxuICAgICAgICAqKVxuICAgICAgICB0eXBlX2Zvcm1hdCBmbXQgKGVyYXNlX3JlbCBmbXR0eSksXG4gICAgICAgIHR5cGVfZm9ybWF0IGZtdCcgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpXG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2dcbiAgICBpblxuICAgIENvbnMgKEZvcm1hdCAoZm10LCBzKSxcbiAgICAgICAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycylcblxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSkgLT5cbiAgICBsZXQgc3RwLCBzdHIgPSBzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBsZXQgd2lkdGggPSB3aWR0aF9vZl9wYWRfb3B0IHdpZHRoX29wdCBpblxuICAgIHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgKFNvbWUgc3RwKSB3aWR0aCBpYjtcbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBzdHJfcmVzdCA9IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIGluXG4gICAgQ29ucyAocywgbWFrZV9zY2FuZiBpYiBzdHJfcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgbGV0IHdpZHRoID0gd2lkdGhfb2ZfcGFkX29wdCB3aWR0aF9vcHQgaW5cbiAgICBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IE5vbmUgd2lkdGggaWI7XG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBDb25zIChzLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgIGxldCBjb3VudCA9IGdldF9jb3VudGVyIGliIGNvdW50ZXIgaW5cbiAgICBDb25zIChjb3VudCwgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBTdHJpbmcuaXRlciAoY2hlY2tfY2hhciBpYikgKHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmb3JtYXR0aW5nX2xpdCk7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgJ0AnOyBjaGVja19jaGFyIGliICd7JztcbiAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVyc1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiAnQCc7IGNoZWNrX2NoYXIgaWIgJ1snO1xuICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzXG5cbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgbGV0IFBhcmFtX2Zvcm1hdF9FQkIgZm10JyA9IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdCBpblxuICAgIGJlZ2luIG1hdGNoIG1ha2Vfc2NhbmYgaWIgZm10JyByZWFkZXJzIHdpdGhcbiAgICB8IENvbnMgKF8sIGFyZ19yZXN0KSAtPiBhcmdfcmVzdFxuICAgIHwgTmlsIC0+IGFzc2VydCBmYWxzZVxuICAgIGVuZFxuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIE5pbFxuXG4oKiBDYXNlIGFuYWx5c2lzIG9uIHBhZGRpbmcgYW5kIHByZWNpc2lvbi4gKilcbigqIFJlamVjdCBmb3JtYXRzIGNvbnRhaW5pbmcgXCIlKlwiIG9yIFwiJS4qXCIuICopXG4oKiBQYXNzIHBhZGRpbmcgYW5kIHByZWNpc2lvbiB0byB0aGUgZ2VuZXJpYyBzY2FubmVyIGBzY2FuJy4gKilcbmFuZCBwYWRfcHJlY19zY2FuZiA6IHR5cGUgYSBjIGQgZSBmIHggeSB6IHQgLlxuICAgIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKGQsIGUpIGhldGVyX2xpc3QgLT4gKHgsIHkpIHBhZGRpbmcgLT4gKHksIHogLT4gYSkgcHJlY2lzaW9uIC0+XG4gICAgICAoaW50IC0+IGludCAtPiBTY2FubmluZy5pbl9jaGFubmVsIC0+IHQpIC0+XG4gICAgICAoU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiB6KSAtPlxuICAgICAgKHgsIGYpIGhldGVyX2xpc3QgPVxuZnVuIGliIGZtdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gdG9rZW4gLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBsZXQgXyA9IHNjYW4gbWF4X2ludCBtYXhfaW50IGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgbGV0IF8gPSBzY2FuIG1heF9pbnQgcCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBsZXQgXyA9IHNjYW4gdyBtYXhfaW50IGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgdyksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGxldCBfID0gc2NhbiB3IHAgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoTGVmdCwgXyksIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJS1cXFwiXCJcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCBfKSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuICB8IEFyZ19wYWRkaW5nIF8sIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAoKiBEZWZpbmluZyBbc2NhbmZdIGFuZCB2YXJpb3VzIGZsYXZvcnMgb2YgW3NjYW5mXSAqKVxuXG50eXBlICdhIGtzY2FuZl9yZXN1bHQgPSBBcmdzIG9mICdhIHwgRXhjIG9mIGV4blxuXG5sZXQga3NjYW5mIGliIGVmIChGb3JtYXQgKGZtdCwgc3RyKSkgPVxuICBsZXQgcmVjIGFwcGx5IDogdHlwZSBhIGIgLiBhIC0+IChhLCBiKSBoZXRlcl9saXN0IC0+IGIgPVxuICAgIGZ1biBmIGFyZ3MgLT4gbWF0Y2ggYXJncyB3aXRoXG4gICAgfCBDb25zICh4LCByKSAtPiBhcHBseSAoZiB4KSByXG4gICAgfCBOaWwgLT4gZlxuICBpblxuICBsZXQgayByZWFkZXJzIGYgPVxuICAgIFNjYW5uaW5nLnJlc2V0X3Rva2VuIGliO1xuICAgIG1hdGNoIHRyeSBBcmdzIChtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKSB3aXRoXG4gICAgICB8IChTY2FuX2ZhaWx1cmUgXyB8IEZhaWx1cmUgXyB8IEVuZF9vZl9maWxlKSBhcyBleGMgLT4gRXhjIGV4Y1xuICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPlxuICAgICAgICBpbnZhbGlkX2FyZyAobXNnIF4gXCIgaW4gZm9ybWF0IFxcXCJcIiBeIFN0cmluZy5lc2NhcGVkIHN0ciBeIFwiXFxcIlwiKVxuICAgIHdpdGhcbiAgICAgIHwgQXJncyBhcmdzIC0+IGFwcGx5IGYgYXJnc1xuICAgICAgfCBFeGMgZXhjIC0+IGVmIGliIGV4Y1xuICBpblxuICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbigqKiopXG5cbmxldCBrYnNjYW5mID0ga3NjYW5mXG5sZXQgYnNjYW5mIGliIGZtdCA9IGtic2NhbmYgaWIgc2NhbmZfYmFkX2lucHV0IGZtdFxuXG5sZXQga3NzY2FuZiBzIGVmIGZtdCA9IGtic2NhbmYgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGVmIGZtdFxubGV0IHNzY2FuZiBzIGZtdCA9IGtic2NhbmYgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIHNjYW5mX2JhZF9pbnB1dCBmbXRcblxubGV0IHNjYW5mIGZtdCA9IGtzY2FuZiBTY2FubmluZy5zdGRpYiBzY2FuZl9iYWRfaW5wdXQgZm10XG5cbigqKiopXG5cbigqIFNjYW5uaW5nIGZvcm1hdCBzdHJpbmdzLiAqKVxubGV0IGJzY2FuZl9mb3JtYXQgOlxuICBTY2FubmluZy5pbl9jaGFubmVsIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAnZykgLT4gJ2cgPVxuICBmdW4gaWIgZm9ybWF0IGYgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgbWF4X2ludCBpYiBpblxuICAgIGxldCBzdHIgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10JyA9XG4gICAgICB0cnkgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIGZvcm1hdFxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnIGluXG4gICAgZiBmbXQnXG5cblxubGV0IHNzY2FuZl9mb3JtYXQgOlxuICBzdHJpbmcgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBzIGZvcm1hdCBmIC0+IGJzY2FuZl9mb3JtYXQgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGZvcm1hdCBmXG5cblxubGV0IGZvcm1hdF9mcm9tX3N0cmluZyBzIGZtdCA9XG4gIHNzY2FuZl9mb3JtYXQgKFwiXFxcIlwiIF4gU3RyaW5nLmVzY2FwZWQgcyBeIFwiXFxcIlwiKSBmbXQgKGZ1biB4IC0+IHgpXG5cblxubGV0IHVuZXNjYXBlZCBzID1cbiAgc3NjYW5mIChcIlxcXCJcIiBeIHMgXiBcIlxcXCJcIikgXCIlUyUhXCIgKGZ1biB4IC0+IHgpXG5cblxuKCogRGVwcmVjYXRlZCAqKVxubGV0IGtmc2NhbmYgaWMgZWYgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcubWVtb19mcm9tX2NoYW5uZWwgaWMpIGVmIGZtdFxubGV0IGZzY2FuZiBpYyBmbXQgPSBrc2NhbmYgKFNjYW5uaW5nLm1lbW9fZnJvbV9jaGFubmVsIGljKSBzY2FuZl9iYWRfaW5wdXQgZm10XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFJlZ2lzdGVyaW5nIE9DYW1sIHZhbHVlcyB3aXRoIHRoZSBDIHJ1bnRpbWUgZm9yIGxhdGVyIGNhbGxiYWNrcyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiBPYmoudCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCByZWdpc3RlciBuYW1lIHYgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIChPYmoucmVwciB2KVxuXG5sZXQgcmVnaXN0ZXJfZXhjZXB0aW9uIG5hbWUgKGV4biA6IGV4bikgPVxuICBsZXQgZXhuID0gT2JqLnJlcHIgZXhuIGluXG4gIGxldCBzbG90ID0gaWYgT2JqLnRhZyBleG4gPSBPYmoub2JqZWN0X3RhZyB0aGVuIGV4biBlbHNlIE9iai5maWVsZCBleG4gMCBpblxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIHNsb3RcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIEplcm9tZSBWb3VpbGxvbiwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBPYmpcblxuKCoqKiogT2JqZWN0IHJlcHJlc2VudGF0aW9uICoqKiopXG5cbmV4dGVybmFsIHNldF9pZDogJ2EgLT4gJ2EgPSBcImNhbWxfc2V0X29vX2lkXCIgW0BAbm9hbGxvY11cblxuKCoqKiogT2JqZWN0IGNvcHkgKioqKilcblxubGV0IGNvcHkgbyA9XG4gIGxldCBvID0gKE9iai5vYmogKE9iai5kdXAgKE9iai5yZXByIG8pKSkgaW5cbiAgc2V0X2lkIG9cblxuKCoqKiogQ29tcHJlc3Npb24gb3B0aW9ucyAqKioqKVxuKCogUGFyYW1ldGVycyAqKVxudHlwZSBwYXJhbXMgPSB7XG4gICAgbXV0YWJsZSBjb21wYWN0X3RhYmxlIDogYm9vbDtcbiAgICBtdXRhYmxlIGNvcHlfcGFyZW50IDogYm9vbDtcbiAgICBtdXRhYmxlIGNsZWFuX3doZW5fY29weWluZyA6IGJvb2w7XG4gICAgbXV0YWJsZSByZXRyeV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGJ1Y2tldF9zbWFsbF9zaXplIDogaW50XG4gIH1cblxubGV0IHBhcmFtcyA9IHtcbiAgY29tcGFjdF90YWJsZSA9IHRydWU7XG4gIGNvcHlfcGFyZW50ID0gdHJ1ZTtcbiAgY2xlYW5fd2hlbl9jb3B5aW5nID0gdHJ1ZTtcbiAgcmV0cnlfY291bnQgPSAzO1xuICBidWNrZXRfc21hbGxfc2l6ZSA9IDE2XG59XG5cbigqKioqIFBhcmFtZXRlcnMgKioqKilcblxubGV0IGluaXRpYWxfb2JqZWN0X3NpemUgPSAyXG5cbigqKioqIEl0ZW1zICoqKiopXG5cbnR5cGUgaXRlbSA9IER1bW15QSB8IER1bW15QiB8IER1bW15QyBvZiBpbnRcbmxldCBfID0gW0R1bW15QTsgRHVtbXlCOyBEdW1teUMgMF0gKCogdG8gYXZvaWQgd2FybmluZ3MgKilcblxubGV0IGR1bW15X2l0ZW0gPSAobWFnaWMgKCkgOiBpdGVtKVxuXG4oKioqKiBUeXBlcyAqKioqKVxuXG50eXBlIHRhZ1xudHlwZSBsYWJlbCA9IGludFxudHlwZSBjbG9zdXJlID0gaXRlbVxudHlwZSB0ID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG50eXBlIG9iaiA9IHQgYXJyYXlcbmV4dGVybmFsIHJldCA6IChvYmogLT4gJ2EpIC0+IGNsb3N1cmUgPSBcIiVpZGVudGl0eVwiXG5cbigqKioqIExhYmVscyAqKioqKVxuXG5sZXQgcHVibGljX21ldGhvZF9sYWJlbCBzIDogdGFnID1cbiAgbGV0IGFjY3UgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIGFjY3UgOj0gMjIzICogIWFjY3UgKyBDaGFyLmNvZGUgcy5baV1cbiAgZG9uZTtcbiAgKCogcmVkdWNlIHRvIDMxIGJpdHMgKilcbiAgYWNjdSA6PSAhYWNjdSBsYW5kICgxIGxzbCAzMSAtIDEpO1xuICAoKiBtYWtlIGl0IHNpZ25lZCBmb3IgNjQgYml0cyBhcmNoaXRlY3R1cmVzICopXG4gIGxldCB0YWcgPSBpZiAhYWNjdSA+IDB4M0ZGRkZGRkYgdGhlbiAhYWNjdSAtICgxIGxzbCAzMSkgZWxzZSAhYWNjdSBpblxuICAoKiBQcmludGYuZXByaW50ZiBcIiVzID0gJWRcXG5cIiBzIHRhZzsgZmx1c2ggc3RkZXJyOyAqKVxuICBtYWdpYyB0YWdcblxuKCoqKiogU3BhcnNlIGFycmF5ICoqKiopXG5cbm1vZHVsZSBWYXJzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHN0cmluZyBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSB2YXJzID0gaW50IFZhcnMudFxuXG5tb2R1bGUgTWV0aHMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gc3RyaW5nIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIG1ldGhzID0gbGFiZWwgTWV0aHMudFxubW9kdWxlIExhYnMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gbGFiZWwgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgbGFicyA9IGJvb2wgTGFicy50XG5cbigqIFRoZSBjb21waWxlciBhc3N1bWVzIHRoYXQgdGhlIGZpcnN0IGZpZWxkIG9mIHRoaXMgc3RydWN0dXJlIGlzIFtzaXplXS4gKilcbnR5cGUgdGFibGUgPVxuIHsgbXV0YWJsZSBzaXplOiBpbnQ7XG4gICBtdXRhYmxlIG1ldGhvZHM6IGNsb3N1cmUgYXJyYXk7XG4gICBtdXRhYmxlIG1ldGhvZHNfYnlfbmFtZTogbWV0aHM7XG4gICBtdXRhYmxlIG1ldGhvZHNfYnlfbGFiZWw6IGxhYnM7XG4gICBtdXRhYmxlIHByZXZpb3VzX3N0YXRlczpcbiAgICAgKG1ldGhzICogbGFicyAqIChsYWJlbCAqIGl0ZW0pIGxpc3QgKiB2YXJzICpcbiAgICAgIGxhYmVsIGxpc3QgKiBzdHJpbmcgbGlzdCkgbGlzdDtcbiAgIG11dGFibGUgaGlkZGVuX21ldGhzOiAobGFiZWwgKiBpdGVtKSBsaXN0O1xuICAgbXV0YWJsZSB2YXJzOiB2YXJzO1xuICAgbXV0YWJsZSBpbml0aWFsaXplcnM6IChvYmogLT4gdW5pdCkgbGlzdCB9XG5cbmxldCBkdW1teV90YWJsZSA9XG4gIHsgbWV0aG9kcyA9IFt8IGR1bW15X2l0ZW0gfF07XG4gICAgbWV0aG9kc19ieV9uYW1lID0gTWV0aHMuZW1wdHk7XG4gICAgbWV0aG9kc19ieV9sYWJlbCA9IExhYnMuZW1wdHk7XG4gICAgcHJldmlvdXNfc3RhdGVzID0gW107XG4gICAgaGlkZGVuX21ldGhzID0gW107XG4gICAgdmFycyA9IFZhcnMuZW1wdHk7XG4gICAgaW5pdGlhbGl6ZXJzID0gW107XG4gICAgc2l6ZSA9IDAgfVxuXG5sZXQgdGFibGVfY291bnQgPSByZWYgMFxuXG4oKiBkdW1teV9tZXQgc2hvdWxkIGJlIGEgcG9pbnRlciwgc28gdXNlIGFuIGF0b20gKilcbmxldCBkdW1teV9tZXQgOiBpdGVtID0gb2JqIChPYmoubmV3X2Jsb2NrIDAgMClcbigqIGlmIGRlYnVnZ2luZyBpcyBuZWVkZWQsIHRoaXMgY291bGQgYmUgYSBnb29kIGlkZWE6ICopXG4oKiBsZXQgZHVtbXlfbWV0ICgpID0gZmFpbHdpdGggXCJVbmRlZmluZWQgbWV0aG9kXCIgKilcblxubGV0IHJlYyBmaXRfc2l6ZSBuID1cbiAgaWYgbiA8PSAyIHRoZW4gbiBlbHNlXG4gIGZpdF9zaXplICgobisxKS8yKSAqIDJcblxubGV0IG5ld190YWJsZSBwdWJfbGFiZWxzID1cbiAgaW5jciB0YWJsZV9jb3VudDtcbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBwdWJfbGFiZWxzIGluXG4gIGxldCBtZXRob2RzID0gQXJyYXkubWFrZSAobGVuKjIrMikgZHVtbXlfbWV0IGluXG4gIG1ldGhvZHMuKDApIDwtIG1hZ2ljIGxlbjtcbiAgbWV0aG9kcy4oMSkgPC0gbWFnaWMgKGZpdF9zaXplIGxlbiAqIFN5cy53b3JkX3NpemUgLyA4IC0gMSk7XG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvIG1ldGhvZHMuKGkqMiszKSA8LSBtYWdpYyBwdWJfbGFiZWxzLihpKSBkb25lO1xuICB7IG1ldGhvZHMgPSBtZXRob2RzO1xuICAgIG1ldGhvZHNfYnlfbmFtZSA9IE1ldGhzLmVtcHR5O1xuICAgIG1ldGhvZHNfYnlfbGFiZWwgPSBMYWJzLmVtcHR5O1xuICAgIHByZXZpb3VzX3N0YXRlcyA9IFtdO1xuICAgIGhpZGRlbl9tZXRocyA9IFtdO1xuICAgIHZhcnMgPSBWYXJzLmVtcHR5O1xuICAgIGluaXRpYWxpemVycyA9IFtdO1xuICAgIHNpemUgPSBpbml0aWFsX29iamVjdF9zaXplIH1cblxubGV0IHJlc2l6ZSBhcnJheSBuZXdfc2l6ZSA9XG4gIGxldCBvbGRfc2l6ZSA9IEFycmF5Lmxlbmd0aCBhcnJheS5tZXRob2RzIGluXG4gIGlmIG5ld19zaXplID4gb2xkX3NpemUgdGhlbiBiZWdpblxuICAgIGxldCBuZXdfYnVjayA9IEFycmF5Lm1ha2UgbmV3X3NpemUgZHVtbXlfbWV0IGluXG4gICAgQXJyYXkuYmxpdCBhcnJheS5tZXRob2RzIDAgbmV3X2J1Y2sgMCBvbGRfc2l6ZTtcbiAgICBhcnJheS5tZXRob2RzIDwtIG5ld19idWNrXG4gZW5kXG5cbmxldCBwdXQgYXJyYXkgbGFiZWwgZWxlbWVudCA9XG4gIHJlc2l6ZSBhcnJheSAobGFiZWwgKyAxKTtcbiAgYXJyYXkubWV0aG9kcy4obGFiZWwpIDwtIGVsZW1lbnRcblxuKCoqKiogQ2xhc3NlcyAqKioqKVxuXG5sZXQgbWV0aG9kX2NvdW50ID0gcmVmIDBcbmxldCBpbnN0X3Zhcl9jb3VudCA9IHJlZiAwXG5cbigqIHR5cGUgdCAqKVxudHlwZSBtZXRoID0gaXRlbVxuXG5sZXQgbmV3X21ldGhvZCB0YWJsZSA9XG4gIGxldCBpbmRleCA9IEFycmF5Lmxlbmd0aCB0YWJsZS5tZXRob2RzIGluXG4gIHJlc2l6ZSB0YWJsZSAoaW5kZXggKyAxKTtcbiAgaW5kZXhcblxubGV0IGdldF9tZXRob2RfbGFiZWwgdGFibGUgbmFtZSA9XG4gIHRyeVxuICAgIE1ldGhzLmZpbmQgbmFtZSB0YWJsZS5tZXRob2RzX2J5X25hbWVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgbGFiZWwgPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gICAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtIE1ldGhzLmFkZCBuYW1lIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbmFtZTtcbiAgICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIExhYnMuYWRkIGxhYmVsIHRydWUgdGFibGUubWV0aG9kc19ieV9sYWJlbDtcbiAgICBsYWJlbFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbHMgdGFibGUgbmFtZXMgPVxuICBBcnJheS5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIG5hbWVzXG5cbmxldCBzZXRfbWV0aG9kIHRhYmxlIGxhYmVsIGVsZW1lbnQgPVxuICBpbmNyIG1ldGhvZF9jb3VudDtcbiAgaWYgTGFicy5maW5kIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgdGhlblxuICAgIHB1dCB0YWJsZSBsYWJlbCBlbGVtZW50XG4gIGVsc2VcbiAgICB0YWJsZS5oaWRkZW5fbWV0aHMgPC0gKGxhYmVsLCBlbGVtZW50KSA6OiB0YWJsZS5oaWRkZW5fbWV0aHNcblxubGV0IGdldF9tZXRob2QgdGFibGUgbGFiZWwgPVxuICB0cnkgTGlzdC5hc3NvYyBsYWJlbCB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgd2l0aCBOb3RfZm91bmQgLT4gdGFibGUubWV0aG9kcy4obGFiZWwpXG5cbmxldCB0b19saXN0IGFyciA9XG4gIGlmIGFyciA9PSBtYWdpYyAwIHRoZW4gW10gZWxzZSBBcnJheS50b19saXN0IGFyclxuXG5sZXQgbmFycm93IHRhYmxlIHZhcnMgdmlydF9tZXRocyBjb25jcl9tZXRocyA9XG4gIGxldCB2YXJzID0gdG9fbGlzdCB2YXJzXG4gIGFuZCB2aXJ0X21ldGhzID0gdG9fbGlzdCB2aXJ0X21ldGhzXG4gIGFuZCBjb25jcl9tZXRocyA9IHRvX2xpc3QgY29uY3JfbWV0aHMgaW5cbiAgbGV0IHZpcnRfbWV0aF9sYWJzID0gTGlzdC5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIHZpcnRfbWV0aHMgaW5cbiAgbGV0IGNvbmNyX21ldGhfbGFicyA9IExpc3QubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSBjb25jcl9tZXRocyBpblxuICB0YWJsZS5wcmV2aW91c19zdGF0ZXMgPC1cbiAgICAgKHRhYmxlLm1ldGhvZHNfYnlfbmFtZSwgdGFibGUubWV0aG9kc19ieV9sYWJlbCwgdGFibGUuaGlkZGVuX21ldGhzLFxuICAgICAgdGFibGUudmFycywgdmlydF9tZXRoX2xhYnMsIHZhcnMpXG4gICAgIDo6IHRhYmxlLnByZXZpb3VzX3N0YXRlcztcbiAgdGFibGUudmFycyA8LVxuICAgIFZhcnMuZm9sZFxuICAgICAgKGZ1biBsYWIgaW5mbyB0dmFycyAtPlxuICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmFycyB0aGVuIFZhcnMuYWRkIGxhYiBpbmZvIHR2YXJzIGVsc2UgdHZhcnMpXG4gICAgICB0YWJsZS52YXJzIFZhcnMuZW1wdHk7XG4gIGxldCBieV9uYW1lID0gcmVmIE1ldGhzLmVtcHR5IGluXG4gIGxldCBieV9sYWJlbCA9IHJlZiBMYWJzLmVtcHR5IGluXG4gIExpc3QuaXRlcjJcbiAgICAoZnVuIG1ldCBsYWJlbCAtPlxuICAgICAgIGJ5X25hbWUgOj0gTWV0aHMuYWRkIG1ldCBsYWJlbCAhYnlfbmFtZTtcbiAgICAgICBieV9sYWJlbCA6PVxuICAgICAgICAgIExhYnMuYWRkIGxhYmVsXG4gICAgICAgICAgICAodHJ5IExhYnMuZmluZCBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIHdpdGggTm90X2ZvdW5kIC0+IHRydWUpXG4gICAgICAgICAgICAhYnlfbGFiZWwpXG4gICAgY29uY3JfbWV0aHMgY29uY3JfbWV0aF9sYWJzO1xuICBMaXN0Lml0ZXIyXG4gICAgKGZ1biBtZXQgbGFiZWwgLT5cbiAgICAgICBieV9uYW1lIDo9IE1ldGhzLmFkZCBtZXQgbGFiZWwgIWJ5X25hbWU7XG4gICAgICAgYnlfbGFiZWwgOj0gTGFicy5hZGQgbGFiZWwgZmFsc2UgIWJ5X2xhYmVsKVxuICAgIHZpcnRfbWV0aHMgdmlydF9tZXRoX2xhYnM7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSAhYnlfbmFtZTtcbiAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSAhYnlfbGFiZWw7XG4gIHRhYmxlLmhpZGRlbl9tZXRocyA8LVxuICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICgobGFiLCBfKSBhcyBtZXQpIGhtIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZpcnRfbWV0aF9sYWJzIHRoZW4gaG0gZWxzZSBtZXQ6OmhtKVxuICAgICAgIHRhYmxlLmhpZGRlbl9tZXRoc1xuICAgICAgIFtdXG5cbmxldCB3aWRlbiB0YWJsZSA9XG4gIGxldCAoYnlfbmFtZSwgYnlfbGFiZWwsIHNhdmVkX2hpZGRlbl9tZXRocywgc2F2ZWRfdmFycywgdmlydF9tZXRocywgdmFycykgPVxuICAgIExpc3QuaGQgdGFibGUucHJldmlvdXNfc3RhdGVzXG4gIGluXG4gIHRhYmxlLnByZXZpb3VzX3N0YXRlcyA8LSBMaXN0LnRsIHRhYmxlLnByZXZpb3VzX3N0YXRlcztcbiAgdGFibGUudmFycyA8LVxuICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgIChmdW4gcyB2IC0+IFZhcnMuYWRkIHYgKFZhcnMuZmluZCB2IHRhYmxlLnZhcnMpIHMpXG4gICAgICAgc2F2ZWRfdmFycyB2YXJzO1xuICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gYnlfbmFtZTtcbiAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBieV9sYWJlbDtcbiAgdGFibGUuaGlkZGVuX21ldGhzIDwtXG4gICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgIChmdW4gKChsYWIsIF8pIGFzIG1ldCkgaG0gLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmlydF9tZXRocyB0aGVuIGhtIGVsc2UgbWV0OjpobSlcbiAgICAgICB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgICAgICBzYXZlZF9oaWRkZW5fbWV0aHNcblxubGV0IG5ld19zbG90IHRhYmxlID1cbiAgbGV0IGluZGV4ID0gdGFibGUuc2l6ZSBpblxuICB0YWJsZS5zaXplIDwtIGluZGV4ICsgMTtcbiAgaW5kZXhcblxubGV0IG5ld192YXJpYWJsZSB0YWJsZSBuYW1lID1cbiAgdHJ5IFZhcnMuZmluZCBuYW1lIHRhYmxlLnZhcnNcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgaW5kZXggPSBuZXdfc2xvdCB0YWJsZSBpblxuICAgIGlmIG5hbWUgPD4gXCJcIiB0aGVuIHRhYmxlLnZhcnMgPC0gVmFycy5hZGQgbmFtZSBpbmRleCB0YWJsZS52YXJzO1xuICAgIGluZGV4XG5cbmxldCB0b19hcnJheSBhcnIgPVxuICBpZiBhcnIgPSBPYmoubWFnaWMgMCB0aGVuIFt8fF0gZWxzZSBhcnJcblxubGV0IG5ld19tZXRob2RzX3ZhcmlhYmxlcyB0YWJsZSBtZXRocyB2YWxzID1cbiAgbGV0IG1ldGhzID0gdG9fYXJyYXkgbWV0aHMgaW5cbiAgbGV0IG5tZXRocyA9IEFycmF5Lmxlbmd0aCBtZXRocyBhbmQgbnZhbHMgPSBBcnJheS5sZW5ndGggdmFscyBpblxuICBsZXQgcmVzID0gQXJyYXkubWFrZSAobm1ldGhzICsgbnZhbHMpIDAgaW5cbiAgZm9yIGkgPSAwIHRvIG5tZXRocyAtIDEgZG9cbiAgICByZXMuKGkpIDwtIGdldF9tZXRob2RfbGFiZWwgdGFibGUgbWV0aHMuKGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMCB0byBudmFscyAtIDEgZG9cbiAgICByZXMuKGkrbm1ldGhzKSA8LSBuZXdfdmFyaWFibGUgdGFibGUgdmFscy4oaSlcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBnZXRfdmFyaWFibGUgdGFibGUgbmFtZSA9XG4gIHRyeSBWYXJzLmZpbmQgbmFtZSB0YWJsZS52YXJzIHdpdGggTm90X2ZvdW5kIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgZ2V0X3ZhcmlhYmxlcyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X3ZhcmlhYmxlIHRhYmxlKSBuYW1lc1xuXG5sZXQgYWRkX2luaXRpYWxpemVyIHRhYmxlIGYgPVxuICB0YWJsZS5pbml0aWFsaXplcnMgPC0gZjo6dGFibGUuaW5pdGlhbGl6ZXJzXG5cbigqXG5tb2R1bGUgS2V5cyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSB0YWcgYXJyYXkgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbmxldCBrZXlfbWFwID0gcmVmIEtleXMuZW1wdHlcbmxldCBnZXRfa2V5IHRhZ3MgOiBpdGVtID1cbiAgdHJ5IG1hZ2ljIChLZXlzLmZpbmQgdGFncyAha2V5X21hcCA6IHRhZyBhcnJheSlcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBrZXlfbWFwIDo9IEtleXMuYWRkIHRhZ3MgdGFncyAha2V5X21hcDtcbiAgICBtYWdpYyB0YWdzXG4qKVxuXG5sZXQgY3JlYXRlX3RhYmxlIHB1YmxpY19tZXRob2RzID1cbiAgaWYgcHVibGljX21ldGhvZHMgPT0gbWFnaWMgMCB0aGVuIG5ld190YWJsZSBbfHxdIGVsc2VcbiAgKCogW3B1YmxpY19tZXRob2RzXSBtdXN0IGJlIGluIGFzY2VuZGluZyBvcmRlciBmb3IgYnl0ZWNvZGUgKilcbiAgbGV0IHRhZ3MgPSBBcnJheS5tYXAgcHVibGljX21ldGhvZF9sYWJlbCBwdWJsaWNfbWV0aG9kcyBpblxuICBsZXQgdGFibGUgPSBuZXdfdGFibGUgdGFncyBpblxuICBBcnJheS5pdGVyaVxuICAgIChmdW4gaSBtZXQgLT5cbiAgICAgIGxldCBsYWIgPSBpKjIrMiBpblxuICAgICAgdGFibGUubWV0aG9kc19ieV9uYW1lICA8LSBNZXRocy5hZGQgbWV0IGxhYiB0YWJsZS5tZXRob2RzX2J5X25hbWU7XG4gICAgICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIExhYnMuYWRkIGxhYiB0cnVlIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwpXG4gICAgcHVibGljX21ldGhvZHM7XG4gIHRhYmxlXG5cbmxldCBpbml0X2NsYXNzIHRhYmxlID1cbiAgaW5zdF92YXJfY291bnQgOj0gIWluc3RfdmFyX2NvdW50ICsgdGFibGUuc2l6ZSAtIDE7XG4gIHRhYmxlLmluaXRpYWxpemVycyA8LSBMaXN0LnJldiB0YWJsZS5pbml0aWFsaXplcnM7XG4gIHJlc2l6ZSB0YWJsZSAoMyArIG1hZ2ljIHRhYmxlLm1ldGhvZHMuKDEpICogMTYgLyBTeXMud29yZF9zaXplKVxuXG5sZXQgaW5oZXJpdHMgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocyAoXywgc3VwZXIsIF8sIGVudikgdG9wID1cbiAgbmFycm93IGNsYSB2YWxzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHM7XG4gIGxldCBpbml0ID1cbiAgICBpZiB0b3AgdGhlbiBzdXBlciBjbGEgZW52IGVsc2UgT2JqLnJlcHIgKHN1cGVyIGNsYSkgaW5cbiAgd2lkZW4gY2xhO1xuICBBcnJheS5jb25jYXRcbiAgICBbW3wgcmVwciBpbml0IHxdO1xuICAgICBtYWdpYyAoQXJyYXkubWFwIChnZXRfdmFyaWFibGUgY2xhKSAodG9fYXJyYXkgdmFscykgOiBpbnQgYXJyYXkpO1xuICAgICBBcnJheS5tYXBcbiAgICAgICAoZnVuIG5tIC0+IHJlcHIgKGdldF9tZXRob2QgY2xhIChnZXRfbWV0aG9kX2xhYmVsIGNsYSBubSkgOiBjbG9zdXJlKSlcbiAgICAgICAodG9fYXJyYXkgY29uY3JfbWV0aHMpIF1cblxubGV0IG1ha2VfY2xhc3MgcHViX21ldGhzIGNsYXNzX2luaXQgPVxuICBsZXQgdGFibGUgPSBjcmVhdGVfdGFibGUgcHViX21ldGhzIGluXG4gIGxldCBlbnZfaW5pdCA9IGNsYXNzX2luaXQgdGFibGUgaW5cbiAgaW5pdF9jbGFzcyB0YWJsZTtcbiAgKGVudl9pbml0IChPYmoucmVwciAwKSwgY2xhc3NfaW5pdCwgZW52X2luaXQsIE9iai5yZXByIDApXG5cbnR5cGUgaW5pdF90YWJsZSA9IHsgbXV0YWJsZSBlbnZfaW5pdDogdDsgbXV0YWJsZSBjbGFzc19pbml0OiB0YWJsZSAtPiB0IH1cbltAQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdXG5cbmxldCBtYWtlX2NsYXNzX3N0b3JlIHB1Yl9tZXRocyBjbGFzc19pbml0IGluaXRfdGFibGUgPVxuICBsZXQgdGFibGUgPSBjcmVhdGVfdGFibGUgcHViX21ldGhzIGluXG4gIGxldCBlbnZfaW5pdCA9IGNsYXNzX2luaXQgdGFibGUgaW5cbiAgaW5pdF9jbGFzcyB0YWJsZTtcbiAgaW5pdF90YWJsZS5jbGFzc19pbml0IDwtIGNsYXNzX2luaXQ7XG4gIGluaXRfdGFibGUuZW52X2luaXQgPC0gZW52X2luaXRcblxubGV0IGR1bW15X2NsYXNzIGxvYyA9XG4gIGxldCB1bmRlZiA9IGZ1biBfIC0+IHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpIGluXG4gIChPYmoubWFnaWMgdW5kZWYsIHVuZGVmLCB1bmRlZiwgT2JqLnJlcHIgMClcblxuKCoqKiogT2JqZWN0cyAqKioqKVxuXG5sZXQgY3JlYXRlX29iamVjdCB0YWJsZSA9XG4gICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gIGxldCBvYmogPSBPYmoubmV3X2Jsb2NrIE9iai5vYmplY3RfdGFnIHRhYmxlLnNpemUgaW5cbiAgKCogWFhYIEFwcGVsIGRlIFtjYW1sX21vZGlmeV0gfCBDYWxsIHRvIFtjYW1sX21vZGlmeV0gKilcbiAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gIE9iai5vYmogKHNldF9pZCBvYmopXG5cbmxldCBjcmVhdGVfb2JqZWN0X29wdCBvYmpfMCB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9ial8wIGVsc2UgYmVnaW5cbiAgICAoKiBYWFggQXBwZWwgZGUgW29ial9ibG9ja10gfCBDYWxsIHRvIFtvYmpfYmxvY2tdICAqKVxuICAgIGxldCBvYmogPSBPYmoubmV3X2Jsb2NrIE9iai5vYmplY3RfdGFnIHRhYmxlLnNpemUgaW5cbiAgICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICAgIE9iai5zZXRfZmllbGQgb2JqIDAgKE9iai5yZXByIHRhYmxlLm1ldGhvZHMpO1xuICAgIE9iai5vYmogKHNldF9pZCBvYmopXG4gIGVuZFxuXG5sZXQgcmVjIGl0ZXJfZiBvYmogPVxuICBmdW5jdGlvblxuICAgIFtdICAgLT4gKClcbiAgfCBmOjpsIC0+IGYgb2JqOyBpdGVyX2Ygb2JqIGxcblxubGV0IHJ1bl9pbml0aWFsaXplcnMgb2JqIHRhYmxlID1cbiAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gIGlmIGluaXRzIDw+IFtdIHRoZW5cbiAgICBpdGVyX2Ygb2JqIGluaXRzXG5cbmxldCBydW5faW5pdGlhbGl6ZXJzX29wdCBvYmpfMCBvYmogdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmogZWxzZSBiZWdpblxuICAgIGxldCBpbml0cyA9IHRhYmxlLmluaXRpYWxpemVycyBpblxuICAgIGlmIGluaXRzIDw+IFtdIHRoZW4gaXRlcl9mIG9iaiBpbml0cztcbiAgICBvYmpcbiAgZW5kXG5cbmxldCBjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGl6ZXJzIG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgIGxldCBvYmogPSBjcmVhdGVfb2JqZWN0IHRhYmxlIGluXG4gICAgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGU7XG4gICAgb2JqXG4gIGVuZFxuXG4oKiBFcXVpdmFsZW50IHByaW1pdGl2ZSBiZWxvd1xubGV0IHNlbmRzZWxmIG9iaiBsYWIgPVxuICAobWFnaWMgb2JqIDogKG9iaiAtPiB0KSBhcnJheSBhcnJheSkuKDApLihsYWIpIG9ialxuKilcbmV4dGVybmFsIHNlbmQgOiBvYmogLT4gdGFnIC0+ICdhID0gXCIlc2VuZFwiXG5leHRlcm5hbCBzZW5kY2FjaGUgOiBvYmogLT4gdGFnIC0+IHQgLT4gaW50IC0+ICdhID0gXCIlc2VuZGNhY2hlXCJcbmV4dGVybmFsIHNlbmRzZWxmIDogb2JqIC0+IGxhYmVsIC0+ICdhID0gXCIlc2VuZHNlbGZcIlxuZXh0ZXJuYWwgZ2V0X3B1YmxpY19tZXRob2QgOiBvYmogLT4gdGFnIC0+IGNsb3N1cmVcbiAgICA9IFwiY2FtbF9nZXRfcHVibGljX21ldGhvZFwiIFtAQG5vYWxsb2NdXG5cbigqKioqIHRhYmxlIGNvbGxlY3Rpb24gYWNjZXNzICoqKiopXG5cbnR5cGUgdGFibGVzID1cbiAgfCBFbXB0eVxuICB8IENvbnMgb2Yge2tleSA6IGNsb3N1cmU7IG11dGFibGUgZGF0YTogdGFibGVzOyBtdXRhYmxlIG5leHQ6IHRhYmxlc31cblxubGV0IHNldF9kYXRhIHRhYmxlcyB2ID0gbWF0Y2ggdGFibGVzIHdpdGhcbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMuZGF0YSA8LSB2XG5sZXQgc2V0X25leHQgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5uZXh0IDwtIHZcbmxldCBnZXRfa2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMua2V5XG5sZXQgZ2V0X2RhdGEgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhXG5sZXQgZ2V0X25leHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5uZXh0XG5cbmxldCBidWlsZF9wYXRoIG4ga2V5cyB0YWJsZXMgPVxuICBsZXQgcmVzID0gQ29ucyB7a2V5ID0gT2JqLm1hZ2ljIDA7IGRhdGEgPSBFbXB0eTsgbmV4dCA9IEVtcHR5fSBpblxuICBsZXQgciA9IHJlZiByZXMgaW5cbiAgZm9yIGkgPSAwIHRvIG4gZG9cbiAgICByIDo9IENvbnMge2tleSA9IGtleXMuKGkpOyBkYXRhID0gIXI7IG5leHQgPSBFbXB0eX1cbiAgZG9uZTtcbiAgc2V0X2RhdGEgdGFibGVzICFyO1xuICByZXNcblxubGV0IHJlYyBsb29rdXBfa2V5cyBpIGtleXMgdGFibGVzID1cbiAgaWYgaSA8IDAgdGhlbiB0YWJsZXMgZWxzZVxuICBsZXQga2V5ID0ga2V5cy4oaSkgaW5cbiAgbGV0IHJlYyBsb29rdXBfa2V5ICh0YWJsZXM6dGFibGVzKSA9XG4gICAgaWYgZ2V0X2tleSB0YWJsZXMgPT0ga2V5IHRoZW5cbiAgICAgIG1hdGNoIGdldF9kYXRhIHRhYmxlcyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBDb25zIF8gYXMgdGFibGVzX2RhdGEgLT5cbiAgICAgICAgICBsb29rdXBfa2V5cyAoaS0xKSBrZXlzIHRhYmxlc19kYXRhXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZ2V0X25leHQgdGFibGVzIHdpdGhcbiAgICAgIHwgQ29ucyBfIGFzIG5leHQgLT4gbG9va3VwX2tleSBuZXh0XG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgbGV0IG5leHQgOiB0YWJsZXMgPSBDb25zIHtrZXk7IGRhdGEgPSBFbXB0eTsgbmV4dCA9IEVtcHR5fSBpblxuICAgICAgICAgIHNldF9uZXh0IHRhYmxlcyBuZXh0O1xuICAgICAgICAgIGJ1aWxkX3BhdGggKGktMSkga2V5cyBuZXh0XG4gIGluXG4gIGxvb2t1cF9rZXkgdGFibGVzXG5cbmxldCBsb29rdXBfdGFibGVzIHJvb3Qga2V5cyA9XG4gIG1hdGNoIGdldF9kYXRhIHJvb3Qgd2l0aFxuICB8IENvbnMgXyBhcyByb290X2RhdGEgLT5cbiAgICBsb29rdXBfa2V5cyAoQXJyYXkubGVuZ3RoIGtleXMgLSAxKSBrZXlzIHJvb3RfZGF0YVxuICB8IEVtcHR5IC0+XG4gICAgYnVpbGRfcGF0aCAoQXJyYXkubGVuZ3RoIGtleXMgLSAxKSBrZXlzIHJvb3RcblxuKCoqKiogYnVpbHRpbiBtZXRob2RzICoqKiopXG5cbmxldCBnZXRfY29uc3QgeCA9IHJldCAoZnVuIF9vYmogLT4geClcbmxldCBnZXRfdmFyIG4gICA9IHJldCAoZnVuIG9iaiAtPiBBcnJheS51bnNhZmVfZ2V0IG9iaiBuKVxubGV0IGdldF9lbnYgZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbilcbmxldCBnZXRfbWV0aCBuICA9IHJldCAoZnVuIG9iaiAtPiBzZW5kc2VsZiBvYmogbilcbmxldCBzZXRfdmFyIG4gICA9IHJldCAoZnVuIG9iaiB4IC0+IEFycmF5LnVuc2FmZV9zZXQgb2JqIG4geClcbmxldCBhcHBfY29uc3QgZiB4ID0gcmV0IChmdW4gX29iaiAtPiBmIHgpXG5sZXQgYXBwX3ZhciBmIG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSlcbmxldCBhcHBfZW52IGYgZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikpXG5sZXQgYXBwX21ldGggZiBuICA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikpXG5sZXQgYXBwX2NvbnN0X2NvbnN0IGYgeCB5ID0gcmV0IChmdW4gX29iaiAtPiBmIHggeSlcbmxldCBhcHBfY29uc3RfdmFyIGYgeCBuICAgPSByZXQgKGZ1biBvYmogLT4gZiB4IChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSlcbmxldCBhcHBfY29uc3RfbWV0aCBmIHggbiA9IHJldCAoZnVuIG9iaiAtPiBmIHggKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfdmFyX2NvbnN0IGYgbiB4ID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pIHgpXG5sZXQgYXBwX21ldGhfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoc2VuZHNlbGYgb2JqIG4pIHgpXG5sZXQgYXBwX2NvbnN0X2VudiBmIHggZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiB4IChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfZW52X2NvbnN0IGYgZSBuIHggPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSB4KVxubGV0IG1ldGhfYXBwX2NvbnN0IG4geCA9IHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIHgpXG5sZXQgbWV0aF9hcHBfdmFyIG4gbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIChBcnJheS51bnNhZmVfZ2V0IG9iaiBtKSlcbmxldCBtZXRoX2FwcF9lbnYgbiBlIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG0pKVxubGV0IG1ldGhfYXBwX21ldGggbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKHNlbmRzZWxmIG9iaiBtKSlcbmxldCBzZW5kX2NvbnN0IG0geCBjID1cbiAgcmV0IChmdW4gb2JqIC0+IHNlbmRjYWNoZSB4IG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF92YXIgbSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGUgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgOiBvYmopIG1cbiAgICAgIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfZW52IG0gZSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGVcbiAgICAgIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXRcbiAgICAgICAgICAgICAgICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIDogb2JqKVxuICAgICAgbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX21ldGggbSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGUgKHNlbmRzZWxmIG9iaiBuKSBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IG5ld19jYWNoZSB0YWJsZSA9XG4gIGxldCBuID0gbmV3X21ldGhvZCB0YWJsZSBpblxuICBsZXQgbiA9XG4gICAgaWYgbiBtb2QgMiA9IDAgfHwgbiA+IDIgKyBtYWdpYyB0YWJsZS5tZXRob2RzLigxKSAqIDE2IC8gU3lzLndvcmRfc2l6ZVxuICAgIHRoZW4gbiBlbHNlIG5ld19tZXRob2QgdGFibGVcbiAgaW5cbiAgdGFibGUubWV0aG9kcy4obikgPC0gT2JqLm1hZ2ljIDA7XG4gIG5cblxudHlwZSBpbXBsID1cbiAgICBHZXRDb25zdFxuICB8IEdldFZhclxuICB8IEdldEVudlxuICB8IEdldE1ldGhcbiAgfCBTZXRWYXJcbiAgfCBBcHBDb25zdFxuICB8IEFwcFZhclxuICB8IEFwcEVudlxuICB8IEFwcE1ldGhcbiAgfCBBcHBDb25zdENvbnN0XG4gIHwgQXBwQ29uc3RWYXJcbiAgfCBBcHBDb25zdEVudlxuICB8IEFwcENvbnN0TWV0aFxuICB8IEFwcFZhckNvbnN0XG4gIHwgQXBwRW52Q29uc3RcbiAgfCBBcHBNZXRoQ29uc3RcbiAgfCBNZXRoQXBwQ29uc3RcbiAgfCBNZXRoQXBwVmFyXG4gIHwgTWV0aEFwcEVudlxuICB8IE1ldGhBcHBNZXRoXG4gIHwgU2VuZENvbnN0XG4gIHwgU2VuZFZhclxuICB8IFNlbmRFbnZcbiAgfCBTZW5kTWV0aFxuICB8IENsb3N1cmUgb2YgY2xvc3VyZVxuXG5sZXQgbWV0aG9kX2ltcGwgdGFibGUgaSBhcnIgPVxuICBsZXQgbmV4dCAoKSA9IGluY3IgaTsgbWFnaWMgYXJyLighaSkgaW5cbiAgbWF0Y2ggbmV4dCgpIHdpdGhcbiAgICBHZXRDb25zdCAtPiBsZXQgeCA6IHQgPSBuZXh0KCkgaW4gZ2V0X2NvbnN0IHhcbiAgfCBHZXRWYXIgICAtPiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfdmFyIG5cbiAgfCBHZXRFbnYgICAtPiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfZW52IGUgblxuICB8IEdldE1ldGggIC0+IGxldCBuID0gbmV4dCgpIGluIGdldF9tZXRoIG5cbiAgfCBTZXRWYXIgICAtPiBsZXQgbiA9IG5leHQoKSBpbiBzZXRfdmFyIG5cbiAgfCBBcHBDb25zdCAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBhcHBfY29uc3QgZiB4XG4gIHwgQXBwVmFyICAgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIGFwcF92YXIgZiBuXG4gIHwgQXBwRW52ICAgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluICBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2VudiBmIGUgblxuICB8IEFwcE1ldGggIC0+IGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBhcHBfbWV0aCBmIG5cbiAgfCBBcHBDb25zdENvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgeSA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X2NvbnN0IGYgeCB5XG4gIHwgQXBwQ29uc3RWYXIgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfdmFyIGYgeCBuXG4gIHwgQXBwQ29uc3RFbnYgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCAoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X2VudiBmIHggZSBuXG4gIHwgQXBwQ29uc3RNZXRoIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X21ldGggZiB4IG5cbiAgfCBBcHBWYXJDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF92YXJfY29uc3QgZiBuIHhcbiAgfCBBcHBFbnZDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0ICgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfZW52X2NvbnN0IGYgZSBuIHhcbiAgfCBBcHBNZXRoQ29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfbWV0aF9jb25zdCBmIG4geFxuICB8IE1ldGhBcHBDb25zdCAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbWV0aF9hcHBfY29uc3QgbiB4XG4gIHwgTWV0aEFwcFZhciAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW4gbWV0aF9hcHBfdmFyIG4gbVxuICB8IE1ldGhBcHBFbnYgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluXG4gICAgICBtZXRoX2FwcF9lbnYgbiBlIG1cbiAgfCBNZXRoQXBwTWV0aCAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW4gbWV0aF9hcHBfbWV0aCBuIG1cbiAgfCBTZW5kQ29uc3QgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIHNlbmRfY29uc3QgbSB4IChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZFZhciAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIHNlbmRfdmFyIG0gbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRFbnYgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBzZW5kX2VudiBtIGUgbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRNZXRoIC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gc2VuZF9tZXRoIG0gbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IENsb3N1cmUgXyBhcyBjbG8gLT4gbWFnaWMgY2xvXG5cbmxldCBzZXRfbWV0aG9kcyB0YWJsZSBtZXRob2RzID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBtZXRob2RzIGluIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICBsZXQgbGFiZWwgPSBtZXRob2RzLighaSkgaW4gbGV0IGNsbyA9IG1ldGhvZF9pbXBsIHRhYmxlIGkgbWV0aG9kcyBpblxuICAgIHNldF9tZXRob2QgdGFibGUgbGFiZWwgY2xvO1xuICAgIGluY3IgaVxuICBkb25lXG5cbigqKioqIFN0YXRpc3RpY3MgKioqKilcblxudHlwZSBzdGF0cyA9XG4gIHsgY2xhc3NlczogaW50OyBtZXRob2RzOiBpbnQ7IGluc3RfdmFyczogaW50OyB9XG5cbmxldCBzdGF0cyAoKSA9XG4gIHsgY2xhc3NlcyA9ICF0YWJsZV9jb3VudDtcbiAgICBtZXRob2RzID0gIW1ldGhvZF9jb3VudDsgaW5zdF92YXJzID0gIWluc3RfdmFyX2NvdW50OyB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDA0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc2hhcGUgPVxuICB8IEZ1bmN0aW9uXG4gIHwgTGF6eVxuICB8IENsYXNzXG4gIHwgTW9kdWxlIG9mIHNoYXBlIGFycmF5XG4gIHwgVmFsdWUgb2YgT2JqLnRcblxubGV0IHJlYyBpbml0X21vZF9maWVsZCBtb2R1IGkgbG9jIHNoYXBlID1cbiAgbGV0IGluaXQgPVxuICAgIG1hdGNoIHNoYXBlIHdpdGhcbiAgICB8IEZ1bmN0aW9uIC0+XG4gICAgICAgbGV0IHJlYyBmbiAoeCA6ICdhKSA9XG4gICAgICAgICBsZXQgZm4nIDogJ2EgLT4gJ2IgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgaWYgZm4gPT0gZm4nIHRoZW5cbiAgICAgICAgICAgcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZm4nIHggaW5cbiAgICAgICBPYmoucmVwciBmblxuICAgIHwgTGF6eSAtPlxuICAgICAgIGxldCByZWMgbCA9XG4gICAgICAgICBsYXp5IChcbiAgICAgICAgICAgbGV0IGwnID0gT2JqLm9iaiAoT2JqLmZpZWxkIG1vZHUgaSkgaW5cbiAgICAgICAgICAgaWYgbCA9PSBsJyB0aGVuXG4gICAgICAgICAgICAgcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYylcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIExhenkuZm9yY2UgbCcpIGluXG4gICAgICAgT2JqLnJlcHIgbFxuICAgIHwgQ2xhc3MgLT5cbiAgICAgICBPYmoucmVwciAoQ2FtbGludGVybmFsT08uZHVtbXlfY2xhc3MgbG9jKVxuICAgIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgICAgT2JqLnJlcHIgKGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcylcbiAgICB8IFZhbHVlIHYgLT4gdlxuICBpblxuICBPYmouc2V0X2ZpZWxkIG1vZHUgaSBpbml0XG5cbmFuZCBpbml0X21vZF9ibG9jayBsb2MgY29tcHMgPVxuICBsZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGNvbXBzIGluXG4gIGxldCBtb2R1ID0gT2JqLm5ld19ibG9jayAwIGxlbmd0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2MgY29tcHMuKGkpXG4gIGRvbmU7XG4gIG1vZHVcblxubGV0IGluaXRfbW9kIGxvYyBzaGFwZSA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgT2JqLnJlcHIgKGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcylcbiAgfCBfIC0+IGZhaWx3aXRoIFwiQ2FtbGludGVybmFsTW9kLmluaXRfbW9kOiBub3QgYSBtb2R1bGVcIlxuXG5sZXQgcmVjIHVwZGF0ZV9tb2RfZmllbGQgbW9kdSBpIHNoYXBlIG4gPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgRnVuY3Rpb24gfCBMYXp5IC0+XG4gICAgIE9iai5zZXRfZmllbGQgbW9kdSBpIG5cbiAgfCBWYWx1ZSBfIC0+XG4gICAgICgpICgqIHRoZSB2YWx1ZSBpcyBhbHJlYWR5IHRoZXJlICopXG4gIHwgQ2xhc3MgLT5cbiAgICAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPSA0KTtcbiAgICAgbGV0IGNsID0gT2JqLmZpZWxkIG1vZHUgaSBpblxuICAgICBmb3IgaiA9IDAgdG8gMyBkb1xuICAgICAgIE9iai5zZXRfZmllbGQgY2wgaiAoT2JqLmZpZWxkIG4gailcbiAgICAgZG9uZVxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIChPYmouZmllbGQgbW9kdSBpKSBuXG5cbmFuZCB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gbiA9XG4gIGFzc2VydCAoT2JqLnRhZyBuID0gMCAmJiBPYmouc2l6ZSBuID49IEFycmF5Lmxlbmd0aCBjb21wcyk7XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY29tcHMgLSAxIGRvXG4gICAgdXBkYXRlX21vZF9maWVsZCBvIGkgY29tcHMuKGkpIChPYmouZmllbGQgbiBpKVxuICBkb25lXG5cbmxldCB1cGRhdGVfbW9kIHNoYXBlIG8gbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgdXBkYXRlX21vZF9ibG9jayBjb21wcyBvIG5cbiAgfCBfIC0+IGZhaWx3aXRoIFwiQ2FtbGludGVybmFsTW9kLnVwZGF0ZV9tb2Q6IG5vdCBhIG1vZHVsZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdG9rZW4gPVxuICAgIEt3ZCBvZiBzdHJpbmdcbiAgfCBJZGVudCBvZiBzdHJpbmdcbiAgfCBJbnQgb2YgaW50XG4gIHwgRmxvYXQgb2YgZmxvYXRcbiAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gIHwgQ2hhciBvZiBjaGFyXG5cbigqIFRoZSBzdHJpbmcgYnVmZmVyaW5nIG1hY2hpbmVyeSAqKVxuXG5sZXQgaW5pdGlhbF9idWZmZXIgPSBCeXRlcy5jcmVhdGUgMzJcblxubGV0IGJ1ZmZlciA9IHJlZiBpbml0aWFsX2J1ZmZlclxubGV0IGJ1ZnBvcyA9IHJlZiAwXG5cbmxldCByZXNldF9idWZmZXIgKCkgPSBidWZmZXIgOj0gaW5pdGlhbF9idWZmZXI7IGJ1ZnBvcyA6PSAwXG5cbmxldCBzdG9yZSBjID1cbiAgaWYgIWJ1ZnBvcyA+PSBCeXRlcy5sZW5ndGggIWJ1ZmZlciB0aGVuIGJlZ2luXG4gICAgbGV0IG5ld2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAoMiAqICFidWZwb3MpIGluXG4gICAgQnl0ZXMuYmxpdCAhYnVmZmVyIDAgbmV3YnVmZmVyIDAgIWJ1ZnBvcztcbiAgICBidWZmZXIgOj0gbmV3YnVmZmVyXG4gIGVuZDtcbiAgQnl0ZXMuc2V0ICFidWZmZXIgIWJ1ZnBvcyBjO1xuICBpbmNyIGJ1ZnBvc1xuXG5sZXQgZ2V0X3N0cmluZyAoKSA9XG4gIGxldCBzID0gQnl0ZXMuc3ViX3N0cmluZyAhYnVmZmVyIDAgIWJ1ZnBvcyBpbiBidWZmZXIgOj0gaW5pdGlhbF9idWZmZXI7IHNcblxuKCogVGhlIGxleGVyICopXG5cbmxldCBtYWtlX2xleGVyIGtleXdvcmRzID1cbiAgbGV0IGt3ZF90YWJsZSA9IEhhc2h0YmwuY3JlYXRlIDE3IGluXG4gIExpc3QuaXRlciAoZnVuIHMgLT4gSGFzaHRibC5hZGQga3dkX3RhYmxlIHMgKEt3ZCBzKSkga2V5d29yZHM7XG4gIGxldCBpZGVudF9vcl9rZXl3b3JkIGlkID1cbiAgICB0cnkgSGFzaHRibC5maW5kIGt3ZF90YWJsZSBpZCB3aXRoXG4gICAgICBOb3RfZm91bmQgLT4gSWRlbnQgaWRcbiAgYW5kIGtleXdvcmRfb3JfZXJyb3IgYyA9XG4gICAgbGV0IHMgPSBTdHJpbmcubWFrZSAxIGMgaW5cbiAgICB0cnkgSGFzaHRibC5maW5kIGt3ZF90YWJsZSBzIHdpdGhcbiAgICAgIE5vdF9mb3VuZCAtPiByYWlzZSAoU3RyZWFtLkVycm9yIChcIklsbGVnYWwgY2hhcmFjdGVyIFwiIF4gcykpXG4gIGluXG4gIGxldCByZWMgbmV4dF90b2tlbiAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnICcgfCAnXFwwMTAnIHwgJ1xcMDEzJyB8ICdcXDAwOScgfCAnXFwwMjYnIHwgJ1xcMDEyJykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBuZXh0X3Rva2VuIHN0cm1fX1xuICAgIHwgU29tZSAoJ0EnLi4nWicgfCAnYScuLid6JyB8ICdfJyB8ICdcXDE5MicuLidcXDI1NScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlIGM7IGlkZW50IHNcbiAgICB8IFNvbWVcbiAgICAgICAgKCchJyB8ICclJyB8ICcmJyB8ICckJyB8ICcjJyB8ICcrJyB8ICcvJyB8ICc6JyB8ICc8JyB8ICc9JyB8ICc+JyB8XG4gICAgICAgICAnPycgfCAnQCcgfCAnXFxcXCcgfCAnficgfCAnXicgfCAnfCcgfCAnKicgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlIGM7IGlkZW50MiBzXG4gICAgfCBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgYzsgbnVtYmVyIHNcbiAgICB8IFNvbWUgJ1xcJycgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgYyA9XG4gICAgICAgICAgdHJ5IGNoYXIgc3RybV9fIHdpdGhcbiAgICAgICAgICAgIFN0cmVhbS5GYWlsdXJlIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgICAgICBTb21lICdcXCcnIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgU29tZSAoQ2hhciBjKVxuICAgICAgICB8IF8gLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgJ1xcXCInIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBTb21lIChTdHJpbmcgKHN0cmluZyBzKSlcbiAgICB8IFNvbWUgJy0nIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbmVnX251bWJlciBzdHJtX19cbiAgICB8IFNvbWUgJygnIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfY29tbWVudCBzdHJtX19cbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IFNvbWUgKGtleXdvcmRfb3JfZXJyb3IgYylcbiAgICB8IF8gLT4gTm9uZVxuICBhbmQgaWRlbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZVxuICAgICAgICAoJ0EnLi4nWicgfCAnYScuLid6JyB8ICdcXDE5MicuLidcXDI1NScgfCAnMCcuLic5JyB8ICdfJyB8ICdcXCcnIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgaWRlbnQgc1xuICAgIHwgXyAtPiBTb21lIChpZGVudF9vcl9rZXl3b3JkIChnZXRfc3RyaW5nICgpKSlcbiAgYW5kIGlkZW50MiAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lXG4gICAgICAgICgnIScgfCAnJScgfCAnJicgfCAnJCcgfCAnIycgfCAnKycgfCAnLScgfCAnLycgfCAnOicgfCAnPCcgfCAnPScgfFxuICAgICAgICAgJz4nIHwgJz8nIHwgJ0AnIHwgJ1xcXFwnIHwgJ34nIHwgJ14nIHwgJ3wnIHwgJyonIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgaWRlbnQyIHNcbiAgICB8IF8gLT4gU29tZSAoaWRlbnRfb3Jfa2V5d29yZCAoZ2V0X3N0cmluZyAoKSkpXG4gIGFuZCBuZWdfbnVtYmVyIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSAnLSc7IHN0b3JlIGM7IG51bWJlciBzXG4gICAgfCBfIC0+IGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgJy0nOyBpZGVudDIgc1xuICBhbmQgbnVtYmVyIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgbnVtYmVyIHNcbiAgICB8IFNvbWUgJy4nIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgJy4nOyBkZWNpbWFsX3BhcnQgc1xuICAgIHwgU29tZSAoJ2UnIHwgJ0UnKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlICdFJzsgZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IFNvbWUgKEludCAoaW50X29mX3N0cmluZyAoZ2V0X3N0cmluZyAoKSkpKVxuICBhbmQgZGVjaW1hbF9wYXJ0IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgZGVjaW1hbF9wYXJ0IHNcbiAgICB8IFNvbWUgKCdlJyB8ICdFJykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSAnRSc7IGV4cG9uZW50X3BhcnQgc1xuICAgIHwgXyAtPiBTb21lIChGbG9hdCAoZmxvYXRfb2Zfc3RyaW5nIChnZXRfc3RyaW5nICgpKSkpXG4gIGFuZCBleHBvbmVudF9wYXJ0IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcrJyB8ICctJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGVuZF9leHBvbmVudF9wYXJ0IHNcbiAgICB8IF8gLT4gZW5kX2V4cG9uZW50X3BhcnQgc3RybV9fXG4gIGFuZCBlbmRfZXhwb25lbnRfcGFydCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGVuZF9leHBvbmVudF9wYXJ0IHNcbiAgICB8IF8gLT4gU29tZSAoRmxvYXQgKGZsb2F0X29mX3N0cmluZyAoZ2V0X3N0cmluZyAoKSkpKVxuICBhbmQgc3RyaW5nIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJ1xcXCInIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgZ2V0X3N0cmluZyAoKVxuICAgIHwgU29tZSAnXFxcXCcgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgYyA9XG4gICAgICAgICAgdHJ5IGVzY2FwZSBzdHJtX18gd2l0aFxuICAgICAgICAgICAgU3RyZWFtLkZhaWx1cmUgLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBzdHJpbmcgc1xuICAgIHwgU29tZSBjIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgc3RyaW5nIHNcbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIGNoYXIgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnXFxcXCcgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBiZWdpbiB0cnkgZXNjYXBlIHN0cm1fXyB3aXRoXG4gICAgICAgICAgU3RyZWFtLkZhaWx1cmUgLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNcbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIGVzY2FwZSAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICduJyAtPiBTdHJlYW0uanVuayBzdHJtX187ICdcXG4nXG4gICAgfCBTb21lICdyJyAtPiBTdHJlYW0uanVuayBzdHJtX187ICdcXHInXG4gICAgfCBTb21lICd0JyAtPiBTdHJlYW0uanVuayBzdHJtX187ICdcXHQnXG4gICAgfCBTb21lICgnMCcuLic5JyBhcyBjMSkgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBiZWdpbiBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMyKSAtPlxuICAgICAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgICAgICAgICAgU29tZSAoJzAnLi4nOScgYXMgYzMpIC0+XG4gICAgICAgICAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICAgICAgICAgIENoYXIuY2hyXG4gICAgICAgICAgICAgICAgICAoKENoYXIuY29kZSBjMSAtIDQ4KSAqIDEwMCArIChDaGFyLmNvZGUgYzIgLSA0OCkgKiAxMCArXG4gICAgICAgICAgICAgICAgICAgICAoQ2hhci5jb2RlIGMzIC0gNDgpKVxuICAgICAgICAgICAgfCBfIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNcbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIG1heWJlX2NvbW1lbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnKicgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBjb21tZW50IHM7IG5leHRfdG9rZW4gc1xuICAgIHwgXyAtPiBTb21lIChrZXl3b3JkX29yX2Vycm9yICcoJylcbiAgYW5kIGNvbW1lbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnKCcgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBtYXliZV9uZXN0ZWRfY29tbWVudCBzdHJtX19cbiAgICB8IFNvbWUgJyonIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfZW5kX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lIF8gLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjb21tZW50IHN0cm1fX1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgbWF5YmVfbmVzdGVkX2NvbW1lbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnKicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBjb21tZW50IHM7IGNvbW1lbnQgc1xuICAgIHwgU29tZSBfIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY29tbWVudCBzdHJtX19cbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIG1heWJlX2VuZF9jb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJyknIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgKClcbiAgICB8IFNvbWUgJyonIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfZW5kX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lIF8gLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjb21tZW50IHN0cm1fX1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBpblxuICBmdW4gaW5wdXQgLT4gU3RyZWFtLmZyb20gKGZ1biBfY291bnQgLT4gbmV4dF90b2tlbiBpbnB1dClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9IHNpZ1xuICBpbmNsdWRlIEhhc2h0YmwuU2VlZGVkU1xuICB2YWwgY2xlYW46ICdhIHQgLT4gdW5pdFxuICB2YWwgc3RhdHNfYWxpdmU6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gICAgKCoqIHNhbWUgYXMgeyFzdGF0c30gYnV0IG9ubHkgY291bnQgdGhlIGFsaXZlIGJpbmRpbmdzICopXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBpbmNsdWRlIEhhc2h0YmwuU1xuICB2YWwgY2xlYW46ICdhIHQgLT4gdW5pdFxuICB2YWwgc3RhdHNfYWxpdmU6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gICAgKCoqIHNhbWUgYXMgeyFzdGF0c30gYnV0IG9ubHkgY291bnQgdGhlIGFsaXZlIGJpbmRpbmdzICopXG5lbmRcblxubW9kdWxlIEdlbkhhc2hUYWJsZSA9IHN0cnVjdFxuXG4gIHR5cGUgZXF1YWwgPVxuICB8IEVUcnVlIHwgRUZhbHNlXG4gIHwgRURlYWQgKCoqIHRoZSBnYXJiYWdlIGNvbGxlY3RvciByZWNsYWltZWQgdGhlIGRhdGEgKilcblxuICBtb2R1bGUgTWFrZVNlZWRlZChIOiBzaWdcbiAgICB0eXBlIHRcbiAgICB0eXBlICdhIGNvbnRhaW5lclxuICAgIHZhbCBjcmVhdGU6IHQgLT4gJ2EgLT4gJ2EgY29udGFpbmVyXG4gICAgdmFsIGhhc2g6IGludCAtPiB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogJ2EgY29udGFpbmVyIC0+IHQgLT4gZXF1YWxcbiAgICB2YWwgZ2V0X2RhdGE6ICdhIGNvbnRhaW5lciAtPiAnYSBvcHRpb25cbiAgICB2YWwgZ2V0X2tleTogJ2EgY29udGFpbmVyIC0+IHQgb3B0aW9uXG4gICAgdmFsIHNldF9rZXlfZGF0YTogJ2EgY29udGFpbmVyIC0+IHQgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBjaGVja19rZXk6ICdhIGNvbnRhaW5lciAtPiBib29sXG4gIGVuZCkgOiBTZWVkZWRTIHdpdGggdHlwZSBrZXkgPSBILnRcbiAgPSBzdHJ1Y3RcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IG11dGFibGUgc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICgqIG51bWJlciBvZiBlbnRyaWVzICopXG4gICAgICAgIG11dGFibGUgZGF0YTogJ2EgYnVja2V0bGlzdCBhcnJheTsgICgqIHRoZSBidWNrZXRzICopXG4gICAgICAgIHNlZWQ6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGZvciByYW5kb21pemF0aW9uICopXG4gICAgICAgIGluaXRpYWxfc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICgqIGluaXRpYWwgYXJyYXkgc2l6ZSAqKVxuICAgICAgfVxuXG4gICAgYW5kICdhIGJ1Y2tldGxpc3QgPVxuICAgIHwgRW1wdHlcbiAgICB8IENvbnMgb2YgaW50ICgqIGhhc2ggb2YgdGhlIGtleSAqKSAqICdhIEguY29udGFpbmVyICogJ2EgYnVja2V0bGlzdFxuXG4gICAgKCoqIHRoZSBoYXNoIG9mIHRoZSBrZXkgaXMga2VwdCBpbiBvcmRlciB0byB0ZXN0IHRoZSBlcXVhbGl0eSBvZiB0aGUgaGFzaFxuICAgICAgYmVmb3JlIHRoZSBrZXkuIFNhbWUgcmVhc29uIGFzIGZvciBXZWFrLk1ha2UgKilcblxuICAgIHR5cGUga2V5ID0gSC50XG5cbiAgICBsZXQgcmVjIHBvd2VyXzJfYWJvdmUgeCBuID1cbiAgICAgIGlmIHggPj0gbiB0aGVuIHhcbiAgICAgIGVsc2UgaWYgeCAqIDIgPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIHhcbiAgICAgIGVsc2UgcG93ZXJfMl9hYm92ZSAoeCAqIDIpIG5cblxuICAgIGxldCBwcm5nID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0KCkpXG5cbiAgICBsZXQgY3JlYXRlID8ocmFuZG9tID0gKEhhc2h0YmwuaXNfcmFuZG9taXplZCAoKSkpIGluaXRpYWxfc2l6ZSA9XG4gICAgICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgaW5pdGlhbF9zaXplIGluXG4gICAgICBsZXQgc2VlZCA9IGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpIGVsc2UgMCBpblxuICAgICAgeyBpbml0aWFsX3NpemUgPSBzOyBzaXplID0gMDsgc2VlZCA9IHNlZWQ7IGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHkgfVxuXG4gICAgbGV0IGNsZWFyIGggPVxuICAgICAgaC5zaXplIDwtIDA7XG4gICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgaC5kYXRhLihpKSA8LSBFbXB0eVxuICAgICAgZG9uZVxuXG4gICAgbGV0IHJlc2V0IGggPVxuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgICAgIGlmIGxlbiA9IGguaW5pdGlhbF9zaXplIHRoZW5cbiAgICAgICAgY2xlYXIgaFxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBoLnNpemUgPC0gMDtcbiAgICAgICAgaC5kYXRhIDwtIEFycmF5Lm1ha2UgaC5pbml0aWFsX3NpemUgRW1wdHlcbiAgICAgIGVuZFxuXG4gICAgbGV0IGNvcHkgaCA9IHsgaCB3aXRoIGRhdGEgPSBBcnJheS5jb3B5IGguZGF0YSB9XG5cbiAgICBsZXQga2V5X2luZGV4IGggaGtleSA9XG4gICAgICBoa2V5IGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuXG4gICAgbGV0IGNsZWFuIGggPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICBFbXB0eVxuICAgICAgICB8IENvbnMoXywgYywgcmVzdCkgd2hlbiBub3QgKEguY2hlY2tfa2V5IGMpIC0+XG4gICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0XG4gICAgICAgIHwgQ29ucyhoa2V5LCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgQ29ucyhoa2V5LCBjLCBkb19idWNrZXQgcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBkLihpKSA8LSBkb19idWNrZXQgZC4oaSlcbiAgICAgIGRvbmVcblxuICAgICgqKiByZXNpemUgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdG8gZG8gdGhlIGFjdHVhbCBjbGVhbmluZyBvZiBkZWFkIGtleXNcbiAgICAgICAgKHJlbW92ZSBkb2VzIGl0IGp1c3QgYmVjYXVzZSBpdCBjb3VsZCkuXG5cbiAgICAgICAgVGhlIGdvYWwgaXMgdG86XG5cbiAgICAgICAgLSBub3QgcmVzaXplIGluZmluaXRlbHkgd2hlbiB0aGUgYWN0dWFsIG51bWJlciBvZiBhbGl2ZSBrZXlzIGlzXG4gICAgICAgIGJvdW5kZWQgYnV0IGtleXMgYXJlIGNvbnRpbnVvdXNseSBhZGRlZC4gVGhhdCB3b3VsZCBoYXBwZW4gaWZcbiAgICAgICAgdGhpcyBmdW5jdGlvbiBhbHdheXMgcmVzaXplLlxuICAgICAgICAtIG5vdCBjYWxsIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgZWFjaCBhZGRpdGlvbiwgdGhhdCB3b3VsZCBoYXBwZW4gaWYgdGhpc1xuICAgICAgICBmdW5jdGlvbiBkb24ndCByZXNpemUgZXZlbiB3aGVuIG9ubHkgb25lIGtleSBpcyBkZWFkLlxuXG4gICAgICAgIFNvIHRoZSBhbGdvcml0aG06XG4gICAgICAgIC0gY2xlYW4gdGhlIGtleXMgYmVmb3JlIHJlc2l6aW5nXG4gICAgICAgIC0gaWYgdGhlIG51bWJlciBvZiByZW1haW5pbmcga2V5cyBpcyBsZXNzIHRoYW4gaGFsZiB0aGUgc2l6ZSBvZiB0aGVcbiAgICAgICAgYXJyYXksIGRvbid0IHJlc2l6ZS5cbiAgICAgICAgLSBpZiBpdCBpcyBtb3JlLCByZXNpemUuXG5cbiAgICAgICAgVGhlIHNlY29uZCBwcm9ibGVtIHJlbWFpbnMgaWYgdGhlIHRhYmxlIHJlYWNoZXMgeyFTeXMubWF4X2FycmF5X2xlbmd0aH0uXG5cbiAgICAqKVxuICAgIGxldCByZXNpemUgaCA9XG4gICAgICBsZXQgb2RhdGEgPSBoLmRhdGEgaW5cbiAgICAgIGxldCBvc2l6ZSA9IEFycmF5Lmxlbmd0aCBvZGF0YSBpblxuICAgICAgbGV0IG5zaXplID0gb3NpemUgKiAyIGluXG4gICAgICBjbGVhbiBoO1xuICAgICAgaWYgbnNpemUgPCBTeXMubWF4X2FycmF5X2xlbmd0aCAmJiBoLnNpemUgPj0gb3NpemUgbHNyIDEgdGhlbiBiZWdpblxuICAgICAgICBsZXQgbmRhdGEgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gICAgICAgIGguZGF0YSA8LSBuZGF0YTsgICAgICAgKCogc28gdGhhdCBrZXlfaW5kZXggc2VlcyB0aGUgbmV3IGJ1Y2tldCBjb3VudCAqKVxuICAgICAgICBsZXQgcmVjIGluc2VydF9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgICAgICB8IENvbnMoaGtleSwgZGF0YSwgcmVzdCkgLT5cbiAgICAgICAgICAgICAgaW5zZXJ0X2J1Y2tldCByZXN0OyAoKiBwcmVzZXJ2ZSBvcmlnaW5hbCBvcmRlciBvZiBlbGVtZW50cyAqKVxuICAgICAgICAgICAgICBsZXQgbmlkeCA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgICAgICAgICAgbmRhdGEuKG5pZHgpIDwtIENvbnMoaGtleSwgZGF0YSwgbmRhdGEuKG5pZHgpKSBpblxuICAgICAgICBmb3IgaSA9IDAgdG8gb3NpemUgLSAxIGRvXG4gICAgICAgICAgaW5zZXJ0X2J1Y2tldCBvZGF0YS4oaSlcbiAgICAgICAgZG9uZVxuICAgICAgZW5kXG5cbiAgICBsZXQgYWRkIGgga2V5IGluZm8gPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBsZXQgY29udGFpbmVyID0gSC5jcmVhdGUga2V5IGluZm8gaW5cbiAgICAgIGxldCBidWNrZXQgPSBDb25zKGhrZXksIGNvbnRhaW5lciwgaC5kYXRhLihpKSkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGhcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZW1vdmVfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gaC5zaXplIDwtIGguc2l6ZSAtIDE7IG5leHRcbiAgICAgICAgICAgIHwgRUZhbHNlIC0+IENvbnMoaGssIGMsIHJlbW92ZV9idWNrZXQgbmV4dClcbiAgICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgICAoKiBUaGUgZGVhZCBrZXkgaXMgYXV0b21hdGljYWxseSByZW1vdmVkLiBJdCBpcyBhY2NlcHRhYmxlXG4gICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIGZ1bmN0aW9uIHNpbmNlIGl0IGFscmVhZHkgcmVtb3ZlcyBhIGJpbmRpbmcgKilcbiAgICAgICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgICAgICByZW1vdmVfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoaGssYyxuZXh0KSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gcmVtb3ZlX2J1Y2tldCBoLmRhdGEuKGkpXG5cbiAgICAoKiogeyFmaW5kfSBkb24ndCByZW1vdmUgZGVhZCBrZXlzIGJlY2F1c2UgaXQgd291bGQgYmUgc3VycHJpc2luZyBmb3JcbiAgICAgICAgdGhlIHVzZXIgdGhhdCBhIHJlYWQtb25seSBmdW5jdGlvbiBtdXRhdGVzIHRoZSBzdGF0ZSAoZWcuIGNvbmN1cnJlbnRcbiAgICAgICAgYWNjZXNzKS4gU2FtZSBmb3IgeyFpdGVyfSwgeyFmb2xkfSwgeyFtZW19LlxuICAgICopXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgaGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgICgqIFRPRE8gaW5saW5lIDMgaXRlcmF0aW9ucyAqKVxuICAgICAgZmluZF9yZWMga2V5IGhrZXkgKGguZGF0YS4oa2V5X2luZGV4IGggaGtleSkpXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgaGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIGlzIG5vdCBpbXBvc3NpYmxlIGJlY2F1c2UgdGhlIGdjIGNhbiBydW4gYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICAgIEguZXF1YWwgYW5kIEguZ2V0X2RhdGEgKilcbiAgICAgICAgICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBfIGFzIGQgLT4gZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG5cbiAgICBsZXQgZmluZF9vcHQgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgKCogVE9ETyBpbmxpbmUgMyBpdGVyYXRpb25zICopXG4gICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgKGguZGF0YS4oa2V5X2luZGV4IGggaGtleSkpXG5cbiAgICBsZXQgZmluZF9hbGwgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IFtdXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBkIC0+IGQ6OmZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3QgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIHJlcGxhY2VfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgfCBDb25zKGhrLCBjLCBuZXh0KSB3aGVuIGhrZXkgPSBoayAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgICB8IEVUcnVlIC0+IEguc2V0X2tleV9kYXRhIGMga2V5IGluZm9cbiAgICAgICAgICAgIHwgRUZhbHNlIHwgRURlYWQgLT4gcmVwbGFjZV9idWNrZXQgbmV4dFxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgQ29ucyhfLF8sbmV4dCkgLT4gcmVwbGFjZV9idWNrZXQgbmV4dFxuICAgICAgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gICAgICB0cnlcbiAgICAgICAgcmVwbGFjZV9idWNrZXQgbFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgbGV0IGNvbnRhaW5lciA9IEguY3JlYXRlIGtleSBpbmZvIGluXG4gICAgICAgIGguZGF0YS4oaSkgPC0gQ29ucyhoa2V5LCBjb250YWluZXIsIGwpO1xuICAgICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBoXG5cbiAgICBsZXQgbWVtIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoayA9IGhrZXkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+IHRydWVcbiAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IG1lbV9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF9oaywgX2MsIHJlc3QpIC0+IG1lbV9pbl9idWNrZXQgcmVzdCBpblxuICAgICAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpXG5cbiAgICBsZXQgaXRlciBmIGggPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICAoKVxuICAgICAgICB8IENvbnMoXywgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2tleSBjLCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIGssIFNvbWUgZCAtPiBmIGsgZFxuICAgICAgICAgICAgZW5kOyBkb19idWNrZXQgcmVzdCBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICBsZXQgZm9sZCBmIGggaW5pdCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCBiIGFjY3UgPVxuICAgICAgICBtYXRjaCBiIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICAgYWNjdVxuICAgICAgICB8IENvbnMoXywgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBhY2N1ID0gYmVnaW4gbWF0Y2ggSC5nZXRfa2V5IGMsIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gYWNjdVxuICAgICAgICAgICAgICB8IFNvbWUgaywgU29tZSBkIC0+IGYgayBkIGFjY3VcbiAgICAgICAgICAgIGVuZCBpblxuICAgICAgICAgICAgZG9fYnVja2V0IHJlc3QgYWNjdSAgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBsZXQgYWNjdSA9IHJlZiBpbml0IGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGFjY3UgOj0gZG9fYnVja2V0IGQuKGkpICFhY2N1XG4gICAgICBkb25lO1xuICAgICAgIWFjY3VcblxuICAgIGxldCBmaWx0ZXJfbWFwX2lucGxhY2UgZiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgRW1wdHlcbiAgICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggSC5nZXRfa2V5IGMsIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+XG4gICAgICAgICAgICAgICAgZG9fYnVja2V0IHJlc3RcbiAgICAgICAgICAgIHwgU29tZSBrLCBTb21lIGQgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBmIGsgZCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0XG4gICAgICAgICAgICAgICAgfCBTb21lIG5ld19kIC0+XG4gICAgICAgICAgICAgICAgICAgIEguc2V0X2tleV9kYXRhIGMgayBuZXdfZDtcbiAgICAgICAgICAgICAgICAgICAgQ29ucyhoaywgYywgZG9fYnVja2V0IHJlc3QpXG4gICAgICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZC4oaSkgPC0gZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICBsZXQgbGVuZ3RoIGggPSBoLnNpemVcblxuICAgIGxldCByZWMgYnVja2V0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSByZXN0XG5cbiAgICBsZXQgc3RhdHMgaCA9XG4gICAgICBsZXQgbWJsID1cbiAgICAgICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICAgICAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICAgICAgaC5kYXRhO1xuICAgICAgeyBIYXNodGJsLm51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICAgICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgICAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICAgICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuICAgIGxldCByZWMgYnVja2V0X2xlbmd0aF9hbGl2ZSBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gSC5jaGVja19rZXkgYyAtPlxuICAgICAgICAgIGJ1Y2tldF9sZW5ndGhfYWxpdmUgKGFjY3UgKyAxKSByZXN0XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aF9hbGl2ZSBhY2N1IHJlc3RcblxuICAgIGxldCBzdGF0c19hbGl2ZSBoID1cbiAgICAgIGxldCBzaXplID0gcmVmIDAgaW5cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGhfYWxpdmUgMCBiKSkgMCBoLmRhdGFcbiAgICAgIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGhfYWxpdmUgMCBiIGluXG4gICAgICAgICAgIHNpemUgOj0gIXNpemUgKyBsO1xuICAgICAgICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICAgICAgaC5kYXRhO1xuICAgICAgeyBIYXNodGJsLm51bV9iaW5kaW5ncyA9ICFzaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IHRvX3NlcSB0YmwgPVxuICAgICAgKCogY2FwdHVyZSBjdXJyZW50IGFycmF5LCBzbyB0aGF0IGV2ZW4gaWYgdGhlIHRhYmxlIGlzIHJlc2l6ZWQgd2VcbiAgICAgICAgIGtlZXAgaXRlcmF0aW5nIG9uIHRoZSBzYW1lIGFycmF5ICopXG4gICAgICBsZXQgdGJsX2RhdGEgPSB0YmwuZGF0YSBpblxuICAgICAgKCogc3RhdGU6IGluZGV4ICogbmV4dCBidWNrZXQgdG8gdHJhdmVyc2UgKilcbiAgICAgIGxldCByZWMgYXV4IGkgYnVjayAoKSA9IG1hdGNoIGJ1Y2sgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRibF9kYXRhXG4gICAgICAgICAgICB0aGVuIFNlcS5OaWxcbiAgICAgICAgICAgIGVsc2UgYXV4KGkrMSkgdGJsX2RhdGEuKGkpICgpXG4gICAgICAgIHwgQ29ucyAoXywgYywgbmV4dCkgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2tleSBjLCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IGF1eCBpIG5leHQgKClcbiAgICAgICAgICAgICAgfCBTb21lIGtleSwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICAgICAgICBTZXEuQ29ucyAoKGtleSwgZGF0YSksIGF1eCBpIG5leHQpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBhdXggMCBFbXB0eVxuXG4gICAgbGV0IHRvX3NlcV9rZXlzIG0gPSBTZXEubWFwIGZzdCAodG9fc2VxIG0pXG5cbiAgICBsZXQgdG9fc2VxX3ZhbHVlcyBtID0gU2VxLm1hcCBzbmQgKHRvX3NlcSBtKVxuXG4gICAgbGV0IGFkZF9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG4gICAgbGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcblxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2JqRXBoID0gT2JqLkVwaGVtZXJvblxuXG5sZXQgX29ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiB4XG4gIHwgU29tZSB2IC0+IFNvbWUgKE9iai5vYmogdilcblxuKCoqIFRoZSBwcmV2aW91cyBmdW5jdGlvbiBpcyB0eXBlZCBzbyB0aGlzIG9uZSBpcyBhbHNvIGNvcnJlY3QgKilcbmxldCBvYmpfb3B0IDogT2JqLnQgb3B0aW9uIC0+ICdhIG9wdGlvbiA9IGZ1biB4IC0+IE9iai5tYWdpYyB4XG5cblxubW9kdWxlIEsxID0gc3RydWN0XG4gIHR5cGUgKCdrLCdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSAxXG5cbiAgbGV0IGdldF9rZXkgKHQ6KCdrLCdkKSB0KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IGdldF9rZXlfY29weSAodDooJ2ssJ2QpIHQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXlfY29weSB0IDApXG4gIGxldCBzZXRfa2V5ICh0OignaywnZCkgdCkgKGs6J2spIDogdW5pdCA9IE9iakVwaC5zZXRfa2V5IHQgMCAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9rZXkgdCAwXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBibGl0X2tleSAodDE6KCdrLCdkKSB0KSAodDI6KCdrLCdkKSB0KTogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIDAgdDIgMCAxXG5cbiAgbGV0IGdldF9kYXRhICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IGdldF9kYXRhX2NvcHkgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YV9jb3B5IHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG4gIGxldCBjaGVja19kYXRhICh0OignaywnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2RhdGEgdFxuICBsZXQgYmxpdF9kYXRhICh0MTooXywnZCkgdCkgKHQyOihfLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGguYmxpdF9kYXRhIHQxIHQyXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQgKEg6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChILnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgbGV0IGNyZWF0ZSBrIGQgPVxuICAgICAgICBsZXQgYyA9IGNyZWF0ZSAoKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIHNldF9rZXkgYyBrO1xuICAgICAgICBjXG4gICAgICBsZXQgaGFzaCA9IEguaGFzaFxuICAgICAgbGV0IGVxdWFsIGMgayA9XG4gICAgICAgICgqIHshZ2V0X2tleV9jb3B5fSBpcyBub3QgdXNlZCBiZWNhdXNlIHRoZSBlcXVhbGl0eSBvZiB0aGUgdXNlciBjYW4gYmVcbiAgICAgICAgICAgIHRoZSBwaHlzaWNhbCBlcXVhbGl0eSAqKVxuICAgICAgICBtYXRjaCBnZXRfa2V5IGMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrJyAtPlxuICAgICAgICAgICAgaWYgSC5lcXVhbCBrIGsnIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBnZXRfa2V5ID0gZ2V0X2tleVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIGsgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgc2V0X2tleSBjIGs7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSA9IGNoZWNrX2tleVxuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIOiBIYXNodGJsLkhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBLMiA9IHN0cnVjdFxuICB0eXBlICgnazEsICdrMiwgJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2sxLCdrMiwnZCkgdCA9IE9iakVwaC5jcmVhdGUgMlxuXG4gIGxldCBnZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazEgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgZ2V0X2tleTFfY29weSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazEgb3B0aW9uID1cbiAgICBvYmpfb3B0IChPYmpFcGguZ2V0X2tleV9jb3B5IHQgMClcbiAgbGV0IHNldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSAoazonazEpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCAwIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2tleSB0IDBcbiAgbGV0IGNoZWNrX2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAwXG5cbiAgbGV0IGdldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSA6ICdrMiBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IDEpXG4gIGxldCBnZXRfa2V5Ml9jb3B5ICh0OignazEsJ2syLCdkKSB0KSA6ICdrMiBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfa2V5X2NvcHkgdCAxKVxuICBsZXQgc2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMikgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDEgKE9iai5yZXByIGspXG4gIGxldCB1bnNldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfa2V5IHQgMVxuICBsZXQgY2hlY2tfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDFcblxuXG4gIGxldCBibGl0X2tleTEgKHQxOignazEsXyxfKSB0KSAodDI6KCdrMSxfLF8pIHQpIDogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIDAgdDIgMCAxXG4gIGxldCBibGl0X2tleTIgKHQxOihfLCdrMixfKSB0KSAodDI6KF8sJ2syLF8pIHQpIDogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIDEgdDIgMSAxXG4gIGxldCBibGl0X2tleTEyICh0MTooJ2sxLCdrMixfKSB0KSAodDI6KCdrMSwnazIsXykgdCkgOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgMCB0MiAwIDJcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBnZXRfZGF0YV9jb3B5ICh0OignazEsJ2syLCdkKSB0KSA6ICdkIG9wdGlvbiA9XG4gICAgb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhX2NvcHkgdClcbiAgbGV0IHNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSAoZDonZCkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcbiAgbGV0IGNoZWNrX2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19kYXRhIHRcbiAgbGV0IGJsaXRfZGF0YSAodDE6KF8sXywnZCkgdCkgKHQyOihfLF8sJ2QpIHQpIDogdW5pdCA9IE9iakVwaC5ibGl0X2RhdGEgdDEgdDJcblxuICBtb2R1bGUgTWFrZVNlZWRlZFxuICAgICAgKEgxOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSlcbiAgICAgIChIMjpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgxLnQsSDIudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSDEudCAqIEgyLnRcbiAgICAgIGxldCBjcmVhdGUgKGsxLGsyKSBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBjXG4gICAgICBsZXQgaGFzaCBzZWVkIChrMSxrMikgPVxuICAgICAgICBIMS5oYXNoIHNlZWQgazEgKyBIMi5oYXNoIHNlZWQgazIgKiA2NTU5OVxuICAgICAgbGV0IGVxdWFsIGMgKGsxLGsyKSA9XG4gICAgICAgIG1hdGNoIGdldF9rZXkxIGMsIGdldF9rZXkyIGMgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gfCBfICwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgfCBTb21lIGsxJywgU29tZSBrMicgLT5cbiAgICAgICAgICAgIGlmIEgxLmVxdWFsIGsxIGsxJyAmJiBIMi5lcXVhbCBrMiBrMidcbiAgICAgICAgICAgIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBnZXRfa2V5IGMgPVxuICAgICAgICBtYXRjaCBnZXRfa2V5MSBjLCBnZXRfa2V5MiBjIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIHwgXyAsIE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgazEnLCBTb21lIGsyJyAtPiBTb21lIChrMScsIGsyJylcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyAoazEsazIpIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkxIGMgazE7IHNldF9rZXkyIGMgazI7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSBjID0gY2hlY2tfa2V5MSBjICYmIGNoZWNrX2tleTIgY1xuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIMTogSGFzaHRibC5IYXNoZWRUeXBlKShIMjogSGFzaHRibC5IYXNoZWRUeXBlKTpcbiAgICAoUyB3aXRoIHR5cGUga2V5ID0gSDEudCAqIEgyLnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBIMS50XG4gICAgICAgICAgbGV0IGVxdWFsID0gSDEuZXF1YWxcbiAgICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEgxLmhhc2ggeFxuICAgICAgICBlbmQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBIMi50XG4gICAgICAgICAgbGV0IGVxdWFsID0gSDIuZXF1YWxcbiAgICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEgyLmhhc2ggeFxuICAgICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIEtuID0gc3RydWN0XG4gIHR5cGUgKCdrLCdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlIG4gOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIG5cbiAgbGV0IGxlbmd0aCAoazooJ2ssJ2QpIHQpIDogaW50ID0gT2JqRXBoLmxlbmd0aCBrXG5cbiAgbGV0IGdldF9rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCBuKVxuICBsZXQgZ2V0X2tleV9jb3B5ICh0OignaywnZCkgdCkgKG46aW50KSA6ICdrIG9wdGlvbiA9XG4gICAgb2JqX29wdCAoT2JqRXBoLmdldF9rZXlfY29weSB0IG4pXG4gIGxldCBzZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSAoazonaykgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IG4gKE9iai5yZXByIGspXG4gIGxldCB1bnNldF9rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogdW5pdCA9IE9iakVwaC51bnNldF9rZXkgdCBuXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCBuXG5cbiAgbGV0IGJsaXRfa2V5ICh0MTooJ2ssJ2QpIHQpIChvMTppbnQpICh0MjooJ2ssJ2QpIHQpIChvMjppbnQpIChsOmludCkgOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgbzEgdDIgbzIgbFxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBnZXRfZGF0YV9jb3B5ICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGFfY29weSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSAoZDonZCkgOiB1bml0ID0gT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuICBsZXQgY2hlY2tfZGF0YSAodDooJ2ssJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19kYXRhIHRcbiAgbGV0IGJsaXRfZGF0YSAodDE6KF8sJ2QpIHQpICh0MjooXywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLmJsaXRfZGF0YSB0MSB0MlxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnQgYXJyYXlcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKEFycmF5Lmxlbmd0aCBrKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgY1xuICAgICAgbGV0IGhhc2ggc2VlZCBrID1cbiAgICAgICAgbGV0IGggPSByZWYgMCBpblxuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgaCA6PSBILmhhc2ggc2VlZCBrLihpKSAqIDY1NTk5ICsgIWg7XG4gICAgICAgIGRvbmU7XG4gICAgICAgICFoXG4gICAgICBsZXQgZXF1YWwgYyBrID1cbiAgICAgICAgbGV0IGxlbiAgPSBBcnJheS5sZW5ndGggayBpblxuICAgICAgICBsZXQgbGVuJyA9IGxlbmd0aCBjIGluXG4gICAgICAgIGlmIGxlbiAhPSBsZW4nIHRoZW4gR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHJlYyBlcXVhbF9hcnJheSBrIGMgaSA9XG4gICAgICAgICAgICBpZiBpIDwgMCB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBnZXRfa2V5IGMgaSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgICAgICAgfCBTb21lIGtpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGsuKGkpIGtpXG4gICAgICAgICAgICAgICAgICB0aGVuIGVxdWFsX2FycmF5IGsgYyAoaS0xKVxuICAgICAgICAgICAgICAgICAgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcXVhbF9hcnJheSBrIGMgKGxlbi0xKVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBnZXRfa2V5IGMgPVxuICAgICAgICBsZXQgbGVuID0gbGVuZ3RoIGMgaW5cbiAgICAgICAgaWYgbGVuID0gMCB0aGVuIFNvbWUgW3x8XVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIDAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGswIC0+XG4gICAgICAgICAgICAgIGxldCByZWMgZmlsbCBhIGkgPVxuICAgICAgICAgICAgICAgIGlmIGkgPCAxIHRoZW4gU29tZSBhXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIGkgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBraSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGEuKGkpIDwtIGtpO1xuICAgICAgICAgICAgICAgICAgICAgIGZpbGwgYSAoaS0xKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIGswIGluXG4gICAgICAgICAgICAgIGZpbGwgYSAobGVuLTEpXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgayBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgc2V0X2tleSBjIGkgay4oaSk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSBjID1cbiAgICAgICAgbGV0IHJlYyBjaGVjayBjIGkgPVxuICAgICAgICAgIGkgPCAwIHx8IChjaGVja19rZXkgYyBpICYmIGNoZWNrIGMgKGktMSkpIGluXG4gICAgICAgIGNoZWNrIGMgKGxlbmd0aCBjIC0gMSlcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDogSGFzaHRibC5IYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCBhcnJheSkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIERhbWllbiBEb2xpZ2V6LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGdlbmVyaWNfcXVvdGUgcXVvdGVxdW90ZSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBiICdcXCcnO1xuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBpZiBzLltpXSA9ICdcXCcnXG4gICAgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIHF1b3RlcXVvdGVcbiAgICBlbHNlIEJ1ZmZlci5hZGRfY2hhciBiICBzLltpXVxuICBkb25lO1xuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1sxXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Jhc2VuYW1lLmh0bWxcbiAgSW4gc3RlcCAxIG9mIFtbMV1dLCB3ZSBjaG9vc2UgdG8gcmV0dXJuIFwiLlwiIGZvciBlbXB0eSBpbnB1dC5cbiAgICAoZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiBPQ2FtbClcbiAgSW4gc3RlcCAyLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4gIFN0ZXAgNiBpcyBub3QgaW1wbGVtZW50ZWQ6IHdlIGNvbnNpZGVyIHRoYXQgdGhlIFtzdWZmaXhdIG9wZXJhbmQgaXNcbiAgICBhbHdheXMgYWJzZW50LiAgU3VmZml4ZXMgYXJlIGhhbmRsZWQgYnkgW2Nob3Bfc3VmZml4XSBhbmQgW2Nob3BfZXh0ZW5zaW9uXS5cbiopXG5sZXQgZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgZmluZF9lbmQgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGZpbmRfZW5kIChuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIG4gKG4gKyAxKVxuICBhbmQgZmluZF9iZWcgbiBwID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIHBcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gU3RyaW5nLnN1YiBuYW1lIChuICsgMSkgKHAgLSBuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIChuIC0gMSkgcFxuICBpblxuICBpZiBuYW1lID0gXCJcIlxuICB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgZWxzZSBmaW5kX2VuZCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1syXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Rpcm5hbWUuaHRtbFxuICBJbiBzdGVwIDYgb2YgW1syXV0sIHdlIGNob29zZSB0byBwcm9jZXNzIFwiLy9cIiBub3JtYWxseS5cbiopXG5sZXQgZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBuYW1lID1cbiAgbGV0IHJlYyB0cmFpbGluZ19zZXAgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIHRyYWlsaW5nX3NlcCAobiAtIDEpXG4gICAgZWxzZSBiYXNlIG5cbiAgYW5kIGJhc2UgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGludGVybWVkaWF0ZV9zZXAgblxuICAgIGVsc2UgYmFzZSAobiAtIDEpXG4gIGFuZCBpbnRlcm1lZGlhdGVfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIChuIC0gMSlcbiAgICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChuICsgMSlcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgdHJhaWxpbmdfc2VwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5tb2R1bGUgdHlwZSBTWVNERVBTID0gc2lnXG4gIHZhbCBudWxsIDogc3RyaW5nXG4gIHZhbCBjdXJyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBwYXJlbnRfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIGRpcl9zZXAgOiBzdHJpbmdcbiAgdmFsIGlzX2Rpcl9zZXAgOiBzdHJpbmcgLT4gaW50IC0+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+PSAwLjBcbiAgICB0aGVuIHsgcmUgPSB3OyAgaW0gPSAwLjUgKi4geC5pbSAvLiB3IH1cbiAgICBlbHNlIHsgcmUgPSAwLjUgKi4gaSAvLiB3OyAgaW0gPSBpZiB4LmltID49IDAuMCB0aGVuIHcgZWxzZSAtLiB3IH1cbiAgZW5kXG5cbmxldCBleHAgeCA9XG4gIGxldCBlID0gZXhwIHgucmUgaW4geyByZSA9IGUgKi4gY29zIHguaW07IGltID0gZSAqLiBzaW4geC5pbSB9XG5cbmxldCBsb2cgeCA9IHsgcmUgPSBsb2cgKG5vcm0geCk7IGltID0gYXRhbjIgeC5pbSB4LnJlIH1cblxubGV0IHBvdyB4IHkgPSBleHAgKG11bCB5IChsb2cgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgTWFudWVsIFNlcnJhbm8gZXQgWGF2aWVyIExlcm95LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbQmlnYXJyYXldOiBsYXJnZSwgbXVsdGktZGltZW5zaW9uYWwsIG51bWVyaWNhbCBhcnJheXMgKilcblxuKCogVGhlc2UgdHlwZXMgaW4gbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgdGFibGVzIGluXG4gICAuLi90eXBpbmcvdHlwZW9wdC5tbCAqKVxuXG50eXBlIGZsb2F0MzJfZWx0ID0gRmxvYXQzMl9lbHRcbnR5cGUgZmxvYXQ2NF9lbHQgPSBGbG9hdDY0X2VsdFxudHlwZSBpbnQ4X3NpZ25lZF9lbHQgPSBJbnQ4X3NpZ25lZF9lbHRcbnR5cGUgaW50OF91bnNpZ25lZF9lbHQgPSBJbnQ4X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQxNl9zaWduZWRfZWx0ID0gSW50MTZfc2lnbmVkX2VsdFxudHlwZSBpbnQxNl91bnNpZ25lZF9lbHQgPSBJbnQxNl91bnNpZ25lZF9lbHRcbnR5cGUgaW50MzJfZWx0ID0gSW50MzJfZWx0XG50eXBlIGludDY0X2VsdCA9IEludDY0X2VsdFxudHlwZSBpbnRfZWx0ID0gSW50X2VsdFxudHlwZSBuYXRpdmVpbnRfZWx0ID0gTmF0aXZlaW50X2VsdFxudHlwZSBjb21wbGV4MzJfZWx0ID0gQ29tcGxleDMyX2VsdFxudHlwZSBjb21wbGV4NjRfZWx0ID0gQ29tcGxleDY0X2VsdFxuXG50eXBlICgnYSwgJ2IpIGtpbmQgPVxuICAgIEZsb2F0MzIgOiAoZmxvYXQsIGZsb2F0MzJfZWx0KSBraW5kXG4gIHwgRmxvYXQ2NCA6IChmbG9hdCwgZmxvYXQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3NpZ25lZCA6IChpbnQsIGludDhfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDhfdW5zaWduZWQgOiAoaW50LCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3NpZ25lZCA6IChpbnQsIGludDE2X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl91bnNpZ25lZCA6IChpbnQsIGludDE2X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDMyIDogKGludDMyLCBpbnQzMl9lbHQpIGtpbmRcbiAgfCBJbnQ2NCA6IChpbnQ2NCwgaW50NjRfZWx0KSBraW5kXG4gIHwgSW50IDogKGludCwgaW50X2VsdCkga2luZFxuICB8IE5hdGl2ZWludCA6IChuYXRpdmVpbnQsIG5hdGl2ZWludF9lbHQpIGtpbmRcbiAgfCBDb21wbGV4MzIgOiAoQ29tcGxleC50LCBjb21wbGV4MzJfZWx0KSBraW5kXG4gIHwgQ29tcGxleDY0IDogKENvbXBsZXgudCwgY29tcGxleDY0X2VsdCkga2luZFxuICB8IENoYXIgOiAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcblxudHlwZSBjX2xheW91dCA9IENfbGF5b3V0X3R5cFxudHlwZSBmb3J0cmFuX2xheW91dCA9IEZvcnRyYW5fbGF5b3V0X3R5cCAoKiopXG5cbnR5cGUgJ2EgbGF5b3V0ID1cbiAgICBDX2xheW91dDogY19sYXlvdXQgbGF5b3V0XG4gIHwgRm9ydHJhbl9sYXlvdXQ6IGZvcnRyYW5fbGF5b3V0IGxheW91dFxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfa2luZCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgZmxvYXQzMiA9IEZsb2F0MzJcbmxldCBmbG9hdDY0ID0gRmxvYXQ2NFxubGV0IGludDhfc2lnbmVkID0gSW50OF9zaWduZWRcbmxldCBpbnQ4X3Vuc2lnbmVkID0gSW50OF91bnNpZ25lZFxubGV0IGludDE2X3NpZ25lZCA9IEludDE2X3NpZ25lZFxubGV0IGludDE2X3Vuc2lnbmVkID0gSW50MTZfdW5zaWduZWRcbmxldCBpbnQzMiA9IEludDMyXG5sZXQgaW50NjQgPSBJbnQ2NFxubGV0IGludCA9IEludFxubGV0IG5hdGl2ZWludCA9IE5hdGl2ZWludFxubGV0IGNvbXBsZXgzMiA9IENvbXBsZXgzMlxubGV0IGNvbXBsZXg2NCA9IENvbXBsZXg2NFxubGV0IGNoYXIgPSBDaGFyXG5cbmxldCBraW5kX3NpemVfaW5fYnl0ZXMgOiB0eXBlIGEgYi4gKGEsIGIpIGtpbmQgLT4gaW50ID0gZnVuY3Rpb25cbiAgfCBGbG9hdDMyIC0+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+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzJcIlxuZXh0ZXJuYWwgc2V0MzogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8zXCJcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzb29fcnVudGltZS5SdW50aW1lX3ZlcnNpb24gKilcbm1vZHVsZSBSdW50aW1lX3ZlcnNpb24gPSBKc29vX3J1bnRpbWVfX1J1bnRpbWVfdmVyc2lvblxuXG5tb2R1bGUgSnNvb19ydW50aW1lX18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIm1vZHVsZSBKcyA9IHN0cnVjdFxuICB0eXBlIHRcblxuICB0eXBlICdhIGpzX2FycmF5ID0gdFxuXG4gIHR5cGUgKCdhLCAnYikgbWV0aF9jYWxsYmFjayA9IHRcblxuICBleHRlcm5hbCBzdHJpbmcgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgYnl0ZXN0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19ieXRlc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcIlxuXG4gIGV4dGVybmFsIGJvb2wgOiBib29sIC0+IHQgPSBcImNhbWxfanNfZnJvbV9ib29sXCJcblxuICBleHRlcm5hbCB0b19ib29sIDogdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuXG4gIGV4dGVybmFsIGFycmF5IDogJ2EgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcblxuICBleHRlcm5hbCB0b19hcnJheSA6IHQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfanNfdG9fYXJyYXlcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9mbG9hdCA6IGZsb2F0IC0+IHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbiAgZXh0ZXJuYWwgZmxvYXRfb2ZfbnVtYmVyIDogdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX2ludDMyIDogaW50MzIgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2ludDMyXCJcblxuICBleHRlcm5hbCBpbnQzMl9vZl9udW1iZXIgOiB0IC0+IGludDMyID0gXCJjYW1sX2pzX3RvX2ludDMyXCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IHQgPSBcImNhbWxfanNfZnJvbV9uYXRpdmVpbnRcIlxuXG4gIGV4dGVybmFsIG5hdGl2ZWludF9vZl9udW1iZXIgOiB0IC0+IG5hdGl2ZWludCA9IFwiY2FtbF9qc190b19uYXRpdmVpbnRcIlxuXG4gIGV4dGVybmFsIHR5cGVvZiA6IHQgLT4gdCA9IFwiY2FtbF9qc190eXBlb2ZcIlxuXG4gIGV4dGVybmFsIGluc3RhbmNlb2YgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19pbnN0YW5jZW9mXCJcblxuICBleHRlcm5hbCBkZWJ1Z2dlciA6IHVuaXQgLT4gdW5pdCA9IFwiZGVidWdnZXJcIlxuXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gdCAtPiB0ID0gXCJjYW1sX2pzX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0IDogdCAtPiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG4gIGV4dGVybmFsIGRlbGV0ZSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbiAgZXh0ZXJuYWwgY2FsbCA6IHQgLT4gdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfY2FsbFwiXG5cbiAgZXh0ZXJuYWwgZnVuX2NhbGwgOiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsIDogdCAtPiBzdHJpbmcgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX21ldGhfY2FsbFwiXG5cbiAgZXh0ZXJuYWwgbmV3X29iaiA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX25ld1wiXG5cbiAgZXh0ZXJuYWwgbmV3X29ial9hcnIgOiB0IC0+IHQganNfYXJyYXkgLT4gdCA9IFwiY2FtbF9vanNfbmV3X2FyclwiXG5cbiAgZXh0ZXJuYWwgb2JqIDogKHN0cmluZyAqIHQpIGFycmF5IC0+IHQgPSBcImNhbWxfanNfb2JqZWN0XCJcblxuICBleHRlcm5hbCBlcXVhbHMgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICBleHRlcm5hbCBwdXJlX2V4cHIgOiAodW5pdCAtPiAnYSkgLT4gJ2EgPSBcImNhbWxfanNfcHVyZV9leHByXCJcblxuICBleHRlcm5hbCBldmFsX3N0cmluZyA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19ldmFsX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwganNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19leHByXCJcblxuICBleHRlcm5hbCBwdXJlX2pzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfcHVyZV9qc19leHByXCJcblxuICBleHRlcm5hbCBjYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlXCJcblxuICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgKHQganNfYXJyYXkgLT4gJ2IpIC0+ICgnYywgdCBqc19hcnJheSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3RcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICgnYiAtPiB0IGpzX2FycmF5IC0+ICdhKSAtPiAoJ2IsIHQganNfYXJyYXkgLT4gJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICBleHRlcm5hbCB3cmFwX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9tZXRoX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrXCJcbmVuZFxuXG5tb2R1bGUgU3lzID0gc3RydWN0XG4gIHR5cGUgJ2EgY2FsbGJhY2sgPSAnYVxuXG4gIGV4dGVybmFsIGNyZWF0ZV9maWxlIDogbmFtZTpzdHJpbmcgLT4gY29udGVudDpzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9jcmVhdGVfZmlsZVwiXG5cbiAgZXh0ZXJuYWwgcmVhZF9maWxlIDogbmFtZTpzdHJpbmcgLT4gc3RyaW5nID0gXCJjYW1sX3JlYWRfZmlsZV9jb250ZW50XCJcblxuICBleHRlcm5hbCBzZXRfY2hhbm5lbF9vdXRwdXQnIDogb3V0X2NoYW5uZWwgLT4gKGpzX3N0cmluZzpKcy50IC0+IHVuaXQpIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcIlxuXG4gIGV4dGVybmFsIHNldF9jaGFubmVsX2lucHV0JyA6IGluX2NoYW5uZWwgLT4gKHVuaXQgLT4gc3RyaW5nKSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXCJcblxuICBleHRlcm5hbCBtb3VudF9wb2ludCA6IHVuaXQgLT4gc3RyaW5nIGxpc3QgPSBcImNhbWxfbGlzdF9tb3VudF9wb2ludFwiXG5cbiAgZXh0ZXJuYWwgbW91bnRfYXV0b2xvYWQgOiBzdHJpbmcgLT4gKHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbikgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21vdW50X2F1dG9sb2FkXCJcblxuICBleHRlcm5hbCB1bm1vdW50IDogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfdW5tb3VudFwiXG5cbiAgbW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICAgIGV4dGVybmFsIHVzZV9qc19zdHJpbmcgOiB1bml0IC0+IGJvb2wgPSBcImNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nXCJcblxuICAgIGV4dGVybmFsIGVmZmVjdHMgOiB1bml0IC0+IGJvb2wgPSBcImNhbWxfanNvb19mbGFnc19lZmZlY3RzXCJcbiAgZW5kXG5cbiAgbGV0IHZlcnNpb24gPSBSdW50aW1lX3ZlcnNpb24uc1xuXG4gIGxldCBnaXRfdmVyc2lvbiA9IFJ1bnRpbWVfdmVyc2lvbi5naXRfdmVyc2lvblxuZW5kXG5cbm1vZHVsZSBFcnJvciA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgcmFpc2VfIDogdCAtPiAnYVxuXG4gIHZhbCBhdHRhY2hfanNfYmFja3RyYWNlIDogZXhuIC0+IGZvcmNlOmJvb2wgLT4gZXhuXG4gICgqKiBBdHRhY2ggYSBKYXZhc1NjcmlwdCBlcnJvciB0byBhbiBPQ2FtbCBleGNlcHRpb24uICBpZiBbZm9yY2UgPSBmYWxzZV0gYW5kIGFcbiAgICBKYXZhc1NjcmlwdCBlcnJvciBpcyBhbHJlYWR5IGF0dGFjaGVkLCBpdCB3aWxsIGRvIG5vdGhpbmcuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIHRvXG4gICAgc3RvcmUgYW5kIHJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0IEphdmFTY3JpcHQgc3RhY2sgdHJhY2VzLlxuXG4gICAgQXR0YWNoaW5nIEphdmFzU2NyaXB0IGVycm9ycyB3aWxsIGhhcHBlbiBhdXRvbWF0aWNhbGx5IHdoZW4gY29tcGlsaW5nIHdpdGhcbiAgICBbLS1lbmFibGUgd2l0aC1qcy1lcnJvcl0uICopXG5cbiAgdmFsIG9mX2V4biA6IGV4biAtPiB0IG9wdGlvblxuICAoKiogRXh0cmFjdCBhIEphdmFTY3JpcHQgZXJyb3IgYXR0YWNoZWQgdG8gYW4gT0NhbWwgZXhjZXB0aW9uLCBpZiBhbnkuICBUaGlzIGlzIHVzZWZ1bCB0b1xuICAgICAgaW5zcGVjdCBhbiBldmVudHVhbCBzdGFjayBzdHJhY2UsIGVzcGVjaWFsbHkgd2hlbiBzb3VyY2VtYXAgaXMgZW5hYmxlZC4gKilcblxuICBleGNlcHRpb24gRXhuIG9mIHRcbiAgKCoqIFRoZSBbRXJyb3JdIGV4Y2VwdGlvbiB3cmFwIGphdmFzY3JpcHQgZXhjZXB0aW9ucyB3aGVuIGNhdWdodCBieSBPQ2FtbCBjb2RlLlxuICAgICAgSW4gY2FzZSB0aGUgamF2YXNjcmlwdCBleGNlcHRpb24gaXMgbm90IGFuIGluc3RhbmNlIG9mIGphdmFzY3JpcHQgW0Vycm9yXSxcbiAgICAgIGl0IHdpbGwgYmUgc2VyaWFsaXplZCBhbmQgd3JhcHBlZCBpbnRvIGEgW0ZhaWx1cmVdIGV4Y2VwdGlvbi5cbiAgKilcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHRcblxuICBleGNlcHRpb24gRXhuIG9mIHRcblxuICBsZXQgXyA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcImpzRXJyb3JcIiAoRXhuIChPYmoubWFnaWMgW3x8XSkpXG5cbiAgbGV0IHJhaXNlXyA6IHQgLT4gJ2EgPSBKcy5qc19leHByIFwiKGZ1bmN0aW9uIChleG4pIHsgdGhyb3cgZXhuIH0pXCJcblxuICBleHRlcm5hbCBvZl9leG4gOiBleG4gLT4gdCBvcHRpb24gPSBcImNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvblwiXG5cbiAgZXh0ZXJuYWwgYXR0YWNoX2pzX2JhY2t0cmFjZSA6IGV4biAtPiBmb3JjZTpib29sIC0+IGV4biA9IFwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2VcIlxuZW5kXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyLTYwXCJdXG5cbm1vZHVsZSBGb3JfY29tcGF0aWJpbGl0eV9vbmx5ID0gc3RydWN0XG4gICgqIEFkZCBwcmltaXRpdmVzIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMuIEV4aXN0aW5nIHVzZXJzIG1pZ2h0XG4gICAgIGRlcGVuZCBvbiBpdCAoZS5nLiBnZW5fanNfYXBpKSwgd2UgZG9udCB3YW50IHRoZSBvY2FtbCBjb21waWxlclxuICAgICB0byBjb21wbGFpbiBhYm91dCB0aGVzZXMgbWlzc2luZyBwcmltaXRpdmVzLiAqKVxuXG4gIGV4dGVybmFsIGNhbWxfanNfZnJvbV9zdHJpbmcgOiBzdHJpbmcgLT4gSnMudCA9IFwiY2FtbF9qc19mcm9tX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc190b19ieXRlX3N0cmluZyA6IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2pzX3RvX3N0cmluZyA6IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX2pzX3RvX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9saXN0X29mX2pzX2FycmF5IDogJ2EgSnMuanNfYXJyYXkgLT4gJ2EgbGlzdCA9IFwiY2FtbF9saXN0X29mX2pzX2FycmF5XCJcblxuICBleHRlcm5hbCBjYW1sX2xpc3RfdG9fanNfYXJyYXkgOiAnYSBsaXN0IC0+ICdhIEpzLmpzX2FycmF5ID0gXCJjYW1sX2xpc3RfdG9fanNfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHZhcmlhYmxlIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX3ZhclwiXG5lbmRcblxubW9kdWxlIFR5cGVkX2FycmF5ID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdHlwZWRBcnJheSA9IEpzLnRcblxuICB0eXBlIGFycmF5QnVmZmVyID0gSnMudFxuXG4gIHR5cGUgdWludDhBcnJheSA9IEpzLnRcblxuICBleHRlcm5hbCBraW5kIDogKCdhLCAnYikgdHlwZWRBcnJheSAtPiAoJ2EsICdiKSBCaWdhcnJheS5raW5kXG4gICAgPSBcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgZnJvbV9nZW5hcnJheSA6XG4gICAgKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheVxuICAgID0gXCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCB0b19nZW5hcnJheSA6XG4gICAgKCdhLCAnYikgdHlwZWRBcnJheSAtPiAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudFxuICAgID0gXCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXlcIlxuXG4gIG1vZHVsZSBCaWdzdHJpbmcgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSAoY2hhciwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG4gICAgZXh0ZXJuYWwgdG9fYXJyYXlCdWZmZXIgOiB0IC0+IGFycmF5QnVmZmVyID0gXCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyXCJcblxuICAgIGV4dGVybmFsIHRvX3VpbnQ4QXJyYXkgOiB0IC0+IHVpbnQ4QXJyYXkgPSBcImJpZ3N0cmluZ190b190eXBlZF9hcnJheVwiXG5cbiAgICBleHRlcm5hbCBvZl9hcnJheUJ1ZmZlciA6IGFycmF5QnVmZmVyIC0+IHQgPSBcImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXJcIlxuXG4gICAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgLT4gdCA9IFwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5XCJcbiAgZW5kXG5cbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9hcnJheVwiXG5lbmRcblxubW9kdWxlIEludDY0ID0gc3RydWN0XG4gIGV4dGVybmFsIGNyZWF0ZV9pbnQ2NF9sb19taV9oaSA6IGludCAtPiBpbnQgLT4gaW50IC0+IEludDY0LnRcbiAgICA9IFwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcIlxuZW5kXG4iLCIoKiBnZW5lcmF0ZWQgYnkgZHVuZSAqKVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5DU1MgKilcbm1vZHVsZSBDU1MgPSBKc19vZl9vY2FtbF9fQ1NTXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbSAqKVxubW9kdWxlIERvbSA9IEpzX29mX29jYW1sX19Eb21cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX2V2ZW50cyAqKVxubW9kdWxlIERvbV9ldmVudHMgPSBKc19vZl9vY2FtbF9fRG9tX2V2ZW50c1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21faHRtbCAqKVxubW9kdWxlIERvbV9odG1sID0gSnNfb2Zfb2NhbWxfX0RvbV9odG1sXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9zdmcgKilcbm1vZHVsZSBEb21fc3ZnID0gSnNfb2Zfb2NhbWxfX0RvbV9zdmdcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRXZlbnRTb3VyY2UgKilcbm1vZHVsZSBFdmVudFNvdXJjZSA9IEpzX29mX29jYW1sX19FdmVudFNvdXJjZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5GaWxlICopXG5tb2R1bGUgRmlsZSA9IEpzX29mX29jYW1sX19GaWxlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZpcmVidWcgKilcbm1vZHVsZSBGaXJlYnVnID0gSnNfb2Zfb2NhbWxfX0ZpcmVidWdcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRm9ybSAqKVxubW9kdWxlIEZvcm0gPSBKc19vZl9vY2FtbF9fRm9ybVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5HZW9sb2NhdGlvbiAqKVxubW9kdWxlIEdlb2xvY2F0aW9uID0gSnNfb2Zfb2NhbWxfX0dlb2xvY2F0aW9uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkltcG9ydCAqKVxubW9kdWxlIEltcG9ydCA9IEpzX29mX29jYW1sX19JbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgKilcbm1vZHVsZSBJbnRlcnNlY3Rpb25PYnNlcnZlciA9IEpzX29mX29jYW1sX19JbnRlcnNlY3Rpb25PYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbnRsICopXG5tb2R1bGUgSW50bCA9IEpzX29mX29jYW1sX19JbnRsXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzICopXG5tb2R1bGUgSnMgPSBKc19vZl9vY2FtbF9fSnNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnNvbiAqKVxubW9kdWxlIEpzb24gPSBKc19vZl9vY2FtbF9fSnNvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Kc3RhYmxlICopXG5tb2R1bGUgSnN0YWJsZSA9IEpzX29mX29jYW1sX19Kc3RhYmxlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkxpYl92ZXJzaW9uICopXG5tb2R1bGUgTGliX3ZlcnNpb24gPSBKc19vZl9vY2FtbF9fTGliX3ZlcnNpb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuTXV0YXRpb25PYnNlcnZlciAqKVxubW9kdWxlIE11dGF0aW9uT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fTXV0YXRpb25PYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5QZXJmb3JtYW5jZU9ic2VydmVyICopXG5tb2R1bGUgUGVyZm9ybWFuY2VPYnNlcnZlciA9IEpzX29mX29jYW1sX19QZXJmb3JtYW5jZU9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlJlZ2V4cCAqKVxubW9kdWxlIFJlZ2V4cCA9IEpzX29mX29jYW1sX19SZWdleHBcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUmVzaXplT2JzZXJ2ZXIgKilcbm1vZHVsZSBSZXNpemVPYnNlcnZlciA9IEpzX29mX29jYW1sX19SZXNpemVPYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5TeXNfanMgKilcbm1vZHVsZSBTeXNfanMgPSBKc19vZl9vY2FtbF9fU3lzX2pzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlR5cGVkX2FycmF5ICopXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBKc19vZl9vY2FtbF9fVHlwZWRfYXJyYXlcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuVXJsICopXG5tb2R1bGUgVXJsID0gSnNfb2Zfb2NhbWxfX1VybFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5XZWJHTCAqKVxubW9kdWxlIFdlYkdMID0gSnNfb2Zfb2NhbWxfX1dlYkdMXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldlYlNvY2tldHMgKilcbm1vZHVsZSBXZWJTb2NrZXRzID0gSnNfb2Zfb2NhbWxfX1dlYlNvY2tldHNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV29ya2VyICopXG5tb2R1bGUgV29ya2VyID0gSnNfb2Zfb2NhbWxfX1dvcmtlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5YbWxIdHRwUmVxdWVzdCAqKVxubW9kdWxlIFhtbEh0dHBSZXF1ZXN0ID0gSnNfb2Zfb2NhbWxfX1htbEh0dHBSZXF1ZXN0XG5cbm1vZHVsZSBKc19vZl9vY2FtbF9fID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcInRoaXMgbW9kdWxlIGlzIHNoYWRvd2VkXCJdXG4iLCIoKiBKc19vZl9vY2FtbFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuXG4gIGV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbiAgZXh0ZXJuYWwgZXF1YWwgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZW5kXG5cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGV4dGVybmFsICggPCApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuXG4gIGV4dGVybmFsICggPD0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPiApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbiAgZXh0ZXJuYWwgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgbGV0IG1heCAoeCA6IGludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCBlcXVhbCAoeCA6IHN0cmluZykgKHkgOiBzdHJpbmcpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5tb2R1bGUgQ2hhciA9IHN0cnVjdFxuICBpbmNsdWRlIENoYXJcblxuICBsZXQgZXF1YWwgKHggOiBjaGFyKSAoeSA6IGNoYXIpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbigqIFRoaXMgbG9jYWwgbW9kdWxlIFtKc10gaXMgbmVlZGVkIHNvIHRoYXQgdGhlIHBweF9qcyBleHRlbnNpb24gd29yayB3aXRoaW4gdGhhdCBmaWxlLiAqKVxubW9kdWxlIEpzID0gc3RydWN0XG4gIHR5cGUgKydhIHRcblxuICB0eXBlICgtJ2EsICsnYikgbWV0aF9jYWxsYmFja1xuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgICB0eXBlIHRvcFxuXG4gICAgdHlwZSBhbnkgPSB0b3AgdFxuXG4gICAgdHlwZSBhbnlfanNfYXJyYXkgPSBhbnlcblxuICAgIGV4dGVybmFsIGluamVjdCA6ICdhIC0+IGFueSA9IFwiJWlkZW50aXR5XCJcblxuICAgIGV4dGVybmFsIGNvZXJjZSA6IF8gdCAtPiBfIHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgICBleHRlcm5hbCBnZXQgOiAnYSAtPiAnYiAtPiAnYyA9IFwiY2FtbF9qc19nZXRcIlxuXG4gICAgZXh0ZXJuYWwgc2V0IDogJ2EgLT4gJ2IgLT4gJ2MgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG4gICAgZXh0ZXJuYWwgZGVsZXRlIDogJ2EgLT4gJ2IgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbCA6ICdhIC0+ICdiIC0+IGFueSBhcnJheSAtPiAnYyA9IFwiY2FtbF9qc19jYWxsXCJcblxuICAgIGV4dGVybmFsIGZ1bl9jYWxsIDogJ2EgLT4gYW55IGFycmF5IC0+ICdiID0gXCJjYW1sX2pzX2Z1bl9jYWxsXCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbCA6ICdhIC0+IHN0cmluZyAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuICAgIGV4dGVybmFsIG5ld19vYmogOiAnYSAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfbmV3XCJcblxuICAgIGV4dGVybmFsIG5ld19vYmpfYXJyIDogJ2EgLT4gYW55X2pzX2FycmF5IC0+ICdiID0gXCJjYW1sX29qc19uZXdfYXJyXCJcblxuICAgIGV4dGVybmFsIG9iaiA6IChzdHJpbmcgKiBhbnkpIGFycmF5IC0+ICdhID0gXCJjYW1sX2pzX29iamVjdFwiXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiAnYSAtPiAnYiAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogJ2EgLT4gJ2IgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHB1cmVfZXhwciA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9qc19wdXJlX2V4cHJcIlxuXG4gICAgZXh0ZXJuYWwgZXZhbF9zdHJpbmcgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXZhbF9zdHJpbmdcIlxuXG4gICAgZXh0ZXJuYWwganNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19leHByXCJcblxuICAgIGV4dGVybmFsIHB1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuXG4gICAgbGV0IGdsb2JhbCA9IHB1cmVfanNfZXhwciBcImdsb2JhbFRoaXNcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAgIChhbnlfanNfYXJyYXkgLT4gJ2IpIC0+ICgnYywgYW55X2pzX2FycmF5IC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3RcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0XCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICAgKCdiIC0+IGFueV9qc19hcnJheSAtPiAnYSkgLT4gKCdiLCBhbnlfanNfYXJyYXkgLT4gJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gICAgKCogREVQUkVDQVRFRCAqKVxuICAgIGV4dGVybmFsIHZhcmlhYmxlIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX3ZhclwiXG4gIGVuZFxuXG4gICgqKioqKVxuXG4gIHR5cGUgJ2Egb3B0ID0gJ2FcblxuICB0eXBlICdhIG9wdGRlZiA9ICdhXG5cbiAgZXh0ZXJuYWwgZGVidWdnZXIgOiB1bml0IC0+IHVuaXQgPSBcImRlYnVnZ2VyXCJcblxuICBsZXQgbnVsbCA6ICdhIG9wdCA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJudWxsXCJcblxuICBleHRlcm5hbCBzb21lIDogJ2EgLT4gJ2Egb3B0ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCB1bmRlZmluZWQgOiAnYSBvcHRkZWYgPSBVbnNhZmUucHVyZV9qc19leHByIFwidW5kZWZpbmVkXCJcblxuICBleHRlcm5hbCBkZWYgOiAnYSAtPiAnYSBvcHRkZWYgPSBcIiVpZGVudGl0eVwiXG5cbiAgbW9kdWxlIHR5cGUgT1BUID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZW1wdHkgOiAnYSB0XG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICAgdmFsIG1hcCA6ICdhIHQgLT4gKCdhIC0+ICdiKSAtPiAnYiB0XG5cbiAgICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcblxuICAgIHZhbCB0ZXN0IDogJ2EgdCAtPiBib29sXG5cbiAgICB2YWwgaXRlciA6ICdhIHQgLT4gKCdhIC0+IHVuaXQpIC0+IHVuaXRcblxuICAgIHZhbCBjYXNlIDogJ2EgdCAtPiAodW5pdCAtPiAnYikgLT4gKCdhIC0+ICdiKSAtPiAnYlxuXG4gICAgdmFsIGdldCA6ICdhIHQgLT4gKHVuaXQgLT4gJ2EpIC0+ICdhXG5cbiAgICB2YWwgb3B0aW9uIDogJ2Egb3B0aW9uIC0+ICdhIHRcblxuICAgIHZhbCB0b19vcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvblxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuICBlbmRcblxuICBtb2R1bGUgT3B0IDogT1BUIHdpdGggdHlwZSAnYSB0ID0gJ2Egb3B0ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2Egb3B0XG5cbiAgICBsZXQgZW1wdHkgPSBudWxsXG5cbiAgICBsZXQgcmV0dXJuID0gc29tZVxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgbGV0IG1hcCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gbnVsbCBlbHNlIHJldHVybiAoZiB4KVxuXG4gICAgbGV0IGJpbmQgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIG51bGwgZWxzZSBmIHhcblxuICAgIGxldCB0ZXN0IHggPSBub3QgKGVxdWFscyB4IG51bGwpXG5cbiAgICBsZXQgaXRlciB4IGYgPSBpZiBub3QgKGVxdWFscyB4IG51bGwpIHRoZW4gZiB4XG5cbiAgICBsZXQgY2FzZSB4IGYgZyA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBmICgpIGVsc2UgZyB4XG5cbiAgICBsZXQgZ2V0IHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBmICgpIGVsc2UgeFxuXG4gICAgbGV0IG9wdGlvbiB4ID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGVtcHR5XG4gICAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuXG4gICAgbGV0IHRvX29wdGlvbiB4ID0gY2FzZSB4IChmdW4gKCkgLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeClcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdGRlZiA6IE9QVCB3aXRoIHR5cGUgJ2EgdCA9ICdhIG9wdGRlZiA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGRlZlxuXG4gICAgbGV0IGVtcHR5ID0gdW5kZWZpbmVkXG5cbiAgICBsZXQgcmV0dXJuID0gZGVmXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBsZXQgbWFwIHggZiA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiB1bmRlZmluZWQgZWxzZSByZXR1cm4gKGYgeClcblxuICAgIGxldCBiaW5kIHggZiA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiB1bmRlZmluZWQgZWxzZSBmIHhcblxuICAgIGxldCB0ZXN0IHggPSBub3QgKHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQpXG5cbiAgICBsZXQgaXRlciB4IGYgPSBpZiBub3QgKHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQpIHRoZW4gZiB4XG5cbiAgICBsZXQgY2FzZSB4IGYgZyA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiBmICgpIGVsc2UgZyB4XG5cbiAgICBsZXQgZ2V0IHggZiA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiBmICgpIGVsc2UgeFxuXG4gICAgbGV0IG9wdGlvbiB4ID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGVtcHR5XG4gICAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuXG4gICAgbGV0IHRvX29wdGlvbiB4ID0gY2FzZSB4IChmdW4gKCkgLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeClcbiAgZW5kXG5cbiAgKCoqKiopXG5cbiAgbGV0IGNvZXJjZSB4IGYgZyA9IE9wdC5nZXQgKGYgeCkgKGZ1biAoKSAtPiBnIHgpXG5cbiAgbGV0IGNvZXJjZV9vcHQgeCBmIGcgPSBPcHQuZ2V0IChPcHQuYmluZCB4IGYpIChmdW4gKCkgLT4gZyB4KVxuXG4gICgqKioqKVxuXG4gIHR5cGUgKydhIG1ldGhcblxuICB0eXBlICsnYSBnZW5fcHJvcFxuXG4gIHR5cGUgJ2EgcmVhZG9ubHlfcHJvcCA9IDwgZ2V0IDogJ2EgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2Egd3JpdGVvbmx5X3Byb3AgPSA8IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2EgcHJvcCA9IDwgZ2V0IDogJ2EgOyBzZXQgOiAnYSAtPiB1bml0ID4gZ2VuX3Byb3BcblxuICB0eXBlICdhIG9wdGRlZl9wcm9wID0gPCBnZXQgOiAnYSBvcHRkZWYgOyBzZXQgOiAnYSAtPiB1bml0ID4gZ2VuX3Byb3BcblxuICB0eXBlICsnYSBjb25zdHJcblxuICAoKioqKilcblxuICB0eXBlICdhIGNhbGxiYWNrID0gKHVuaXQsICdhKSBtZXRoX2NhbGxiYWNrXG5cbiAgZXh0ZXJuYWwgd3JhcF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tcIlxuXG4gIGV4dGVybmFsIHdyYXBfbWV0aF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdhLCAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja1wiXG5cbiAgKCoqKiopXG5cbiAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAoKioqKilcblxuICBsZXQgX3RydWUgPSBVbnNhZmUucHVyZV9qc19leHByIFwidHJ1ZVwiXG5cbiAgbGV0IF9mYWxzZSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJmYWxzZVwiXG5cbiAgdHlwZSBtYXRjaF9yZXN1bHRfaGFuZGxlXG5cbiAgdHlwZSBzdHJpbmdfYXJyYXlcblxuICB0eXBlIG51bWJlcl90ID0gZmxvYXRcblxuICBjbGFzcyB0eXBlIG51bWJlciA9IG9iamVjdFxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1N0cmluZ19yYWRpeCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9GaXhlZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9FeHBvbmVudGlhbCA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0V4cG9uZW50aWFsX2RpZ2l0cyA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9QcmVjaXNpb24gOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuICBlbmRcblxuICBhbmQganNfc3RyaW5nID0gb2JqZWN0XG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHZhbHVlT2YgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY2hhckF0IDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjaGFyQ29kZUF0IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICAgICgqIFRoaXMgbWF5IHJldHVybiBOYU4uLi4gKilcbiAgICBtZXRob2QgY29uY2F0IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNvbmNhdF8yIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNvbmNhdF8zIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNvbmNhdF80IDpcbiAgICAgIGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBpbmRleE9mIDoganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBpbmRleE9mX2Zyb20gOiBqc19zdHJpbmcgdCAtPiBpbnQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsYXN0SW5kZXhPZiA6IGpzX3N0cmluZyB0IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbGFzdEluZGV4T2ZfZnJvbSA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxvY2FsZUNvbXBhcmUgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgICBtZXRob2QgX21hdGNoIDogcmVnRXhwIHQgLT4gbWF0Y2hfcmVzdWx0X2hhbmRsZSB0IG9wdCBtZXRoXG5cbiAgICBtZXRob2Qgbm9ybWFsaXplIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIG5vcm1hbGl6ZV9mb3JtIDogbm9ybWFsaXphdGlvbiB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCByZXBsYWNlIDogcmVnRXhwIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHJlcGxhY2Vfc3RyaW5nIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNlYXJjaCA6IHJlZ0V4cCB0IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzbGljZV9lbmQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0IDoganNfc3RyaW5nIHQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X2xpbWl0ZWQgOiBqc19zdHJpbmcgdCAtPiBpbnQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X3JlZ0V4cCA6IHJlZ0V4cCB0IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdF9yZWdFeHBMaW1pdGVkIDogcmVnRXhwIHQgLT4gaW50IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzdWJzdHJpbmcgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzdWJzdHJpbmdfdG9FbmQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG93ZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG9jYWxlTG93ZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvVXBwZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG9jYWxlVXBwZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRyaW0gOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgYW5kIHJlZ0V4cCA9IG9iamVjdFxuICAgIG1ldGhvZCBleGVjIDoganNfc3RyaW5nIHQgLT4gbWF0Y2hfcmVzdWx0X2hhbmRsZSB0IG9wdCBtZXRoXG5cbiAgICBtZXRob2QgdGVzdCA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc291cmNlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGdsb2JhbCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlQ2FzZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbXVsdGlsaW5lIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBsYXN0SW5kZXggOiBpbnQgcHJvcFxuICBlbmRcblxuICBhbmQgbm9ybWFsaXphdGlvbiA9IGpzX3N0cmluZ1xuXG4gICgqIHN0cmluZyBpcyB1c2VkIGJ5IHBweF9qcywgaXQgbmVlZHMgdG8gY29tZSBiZWZvcmUgYW55IHVzZSBvZiB0aGVcbiAgICAgbmV3IHN5bnRheCBpbiB0aGlzIGZpbGUgKilcbiAgZXh0ZXJuYWwgc3RyaW5nIDogc3RyaW5nIC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fc3RyaW5nIDoganNfc3RyaW5nIHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1wiXG5cbiAgbGV0IG5mYyA9IHN0cmluZyBcIk5GQ1wiXG5cbiAgbGV0IG5mZCA9IHN0cmluZyBcIk5GRFwiXG5cbiAgbGV0IG5ma2MgPSBzdHJpbmcgXCJORktDXCJcblxuICBsZXQgbmZrZCA9IHN0cmluZyBcIk5GS0RcIlxuZW5kXG5cbmluY2x1ZGUgSnNcblxuY2xhc3MgdHlwZSBzdHJpbmdfY29uc3RyID0gb2JqZWN0XG4gIG1ldGhvZCBmcm9tQ2hhckNvZGUgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBzdHJpbmdfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9TdHJpbmdcblxubGV0IHJlZ0V4cCA9IFVuc2FmZS5nbG9iYWwjIy5fUmVnRXhwXG5cbmxldCByZWdFeHBfY29weSA9IHJlZ0V4cFxuXG5sZXQgcmVnRXhwX3dpdGhGbGFncyA9IHJlZ0V4cFxuXG5jbGFzcyB0eXBlIFsnYV0ganNfYXJyYXkgPSBvYmplY3RcbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgY29uY2F0IDogJ2EganNfYXJyYXkgdCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgam9pbiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcG9wIDogJ2Egb3B0ZGVmIG1ldGhcblxuICBtZXRob2QgcHVzaCA6ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hfMiA6ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hfMyA6ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hfNCA6ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHJldmVyc2UgOiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2hpZnQgOiAnYSBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX2VuZCA6IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc29ydCA6ICgnYSAtPiAnYSAtPiBudW1iZXJfdCkgY2FsbGJhY2sgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNvcnRfYXNTdHJpbmdzIDogJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZSA6IGludCAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8xIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzIgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMyA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV80IDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdCA6ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnRfMiA6ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnRfMyA6ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnRfNCA6ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHNvbWUgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gYm9vbCB0KSBjYWxsYmFjayAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBldmVyeSA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGZvckVhY2ggOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gdW5pdCkgY2FsbGJhY2sgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1hcCA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGZpbHRlciA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VfaW5pdCA6ICgnYiAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IgLT4gJ2IgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2UgOiAoJ2EgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2EpIGNhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2QgcmVkdWNlUmlnaHRfaW5pdCA6XG4gICAgKCdiIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZVJpZ2h0IDogKCdhIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdhKSBjYWxsYmFjayAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCBwcm9wXG5lbmRcblxubGV0IG9iamVjdF9jb25zdHJ1Y3RvciA9IFVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBvYmplY3Rfa2V5cyBvIDoganNfc3RyaW5nIHQganNfYXJyYXkgdCA9IG9iamVjdF9jb25zdHJ1Y3RvciMja2V5cyBvXG5cbmxldCBhcnJheV9jb25zdHJ1Y3RvciA9IFVuc2FmZS5nbG9iYWwjIy5fQXJyYXlcblxubGV0IGFycmF5X2VtcHR5ID0gYXJyYXlfY29uc3RydWN0b3JcblxubGV0IGFycmF5X2xlbmd0aCA9IGFycmF5X2NvbnN0cnVjdG9yXG5cbmxldCBhcnJheV9nZXQgOiAnYSAjanNfYXJyYXkgdCAtPiBpbnQgLT4gJ2Egb3B0ZGVmID0gVW5zYWZlLmdldFxuXG5sZXQgYXJyYXlfc2V0IDogJ2EgI2pzX2FycmF5IHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBVbnNhZmUuc2V0XG5cbmxldCBhcnJheV9tYXBfcG9seSA6XG4gICAgJ2EgI2pzX2FycmF5IHQgLT4gKCdhIC0+IGludCAtPiAnYSAjanNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IgI2pzX2FycmF5IHQgPVxuIGZ1biBhIGNiIC0+IChVbnNhZmUuY29lcmNlIGEpIyNtYXAgY2JcblxubGV0IGFycmF5X21hcCBmIGEgPSBhcnJheV9tYXBfcG9seSBhICh3cmFwX2NhbGxiYWNrIChmdW4geCBfaWR4IF8gLT4gZiB4KSlcblxubGV0IGFycmF5X21hcGkgZiBhID0gYXJyYXlfbWFwX3BvbHkgYSAod3JhcF9jYWxsYmFjayAoZnVuIHggaWR4IF8gLT4gZiBpZHggeCkpXG5cbmNsYXNzIHR5cGUgbWF0Y2hfcmVzdWx0ID0gb2JqZWN0XG4gIGluaGVyaXQgW2pzX3N0cmluZyB0XSBqc19hcnJheVxuXG4gIG1ldGhvZCBpbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlucHV0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBzdHJfYXJyYXkgOiBzdHJpbmdfYXJyYXkgdCAtPiBqc19zdHJpbmcgdCBqc19hcnJheSB0ID0gVW5zYWZlLmNvZXJjZVxuXG5sZXQgbWF0Y2hfcmVzdWx0IDogbWF0Y2hfcmVzdWx0X2hhbmRsZSB0IC0+IG1hdGNoX3Jlc3VsdCB0ID0gVW5zYWZlLmNvZXJjZVxuXG5jbGFzcyB0eXBlIGRhdGUgPSBvYmplY3RcbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvVGltZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlRGF0ZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVUaW1lU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB2YWx1ZU9mIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGdWxsWWVhciA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0Z1bGxZZWFyIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TW9udGggOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENNb250aCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldERhdGUgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENEYXRlIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0RGF5IDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRGF5IDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SG91cnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENIb3VycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1pbnV0ZXMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENNaW51dGVzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0U2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ1NlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNaWxsaXNlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENNaWxsaXNlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRUaW1lem9uZU9mZnNldCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIHNldFRpbWUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZ1bGxZZWFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRnVsbFllYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNb250aCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ01vbnRoIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RGF0ZSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0RhdGUgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXkgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENEYXkgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRIb3VycyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0hvdXJzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TWludXRlcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ01pbnV0ZXMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRTZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDU2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1pbGxpc2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ01pbGxpc2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHRvVVRDU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0lTT1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9KU09OIDogJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgZGF0ZV9jb25zdHIgPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX21vbnRoIDogaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfZGF5IDogaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfaG91ciA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbWluIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfc2VjIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX21zIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgbm93IDogbnVtYmVyX3QgbWV0aFxuZW5kXG5cbmxldCBkYXRlX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRGF0ZVxuXG5sZXQgZGF0ZSA6IGRhdGVfY29uc3RyIHQgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9ub3cgOiBkYXRlIHQgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfZnJvbVRpbWVWYWx1ZSA6IChudW1iZXJfdCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX21vbnRoIDogKGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9kYXkgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9ob3VyIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX21pbiA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfc2VjIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbXMgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID1cbiAgZGF0ZV9jb25zdHJcblxuY2xhc3MgdHlwZSBtYXRoID0gb2JqZWN0XG4gIG1ldGhvZCBfRSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xOMiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xOMTAgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT0cyRSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPRzEwRSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BJIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1FSVDFfMl8gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUVJUMiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWJzIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhY29zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhc2luIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhdGFuIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhdGFuMiA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgY2VpbCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgY29zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBleHAgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGZsb29yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBsb2cgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1heCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4XzMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1heF80IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbl8zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtaW5fNCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgcG93IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCByYW5kb20gOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHJvdW5kIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNxcnQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHRhbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcbmVuZFxuXG5sZXQgbWF0aCA9IFVuc2FmZS5nbG9iYWwjIy5fTWF0aFxuXG5jbGFzcyB0eXBlIGVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZXNzYWdlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGFjayA6IGpzX3N0cmluZyB0IG9wdGRlZiBwcm9wXG5cbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBlcnJvcl9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0Vycm9yXG5cbm1vZHVsZSBKc19lcnJvciA9IHN0cnVjdFxuICB0eXBlIGVycm9yX3QgPSBlcnJvciB0XG5cbiAgaW5jbHVkZSBKc29vX3J1bnRpbWUuRXJyb3JcblxuICBleHRlcm5hbCBvZl9lcnJvciA6IGVycm9yX3QgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxuICBleHRlcm5hbCB0b19lcnJvciA6IHQgLT4gZXJyb3JfdCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgbmFtZSBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjLm5hbWVcblxuICBsZXQgbWVzc2FnZSBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjLm1lc3NhZ2VcblxuICBsZXQgc3RhY2sgKGUgOiB0KSA6IHN0cmluZyBvcHRpb24gPVxuICAgIE9wdC50b19vcHRpb24gKE9wdC5tYXAgKHRvX2Vycm9yIGUpIyMuc3RhY2sgdG9fc3RyaW5nKVxuXG4gIGxldCB0b19zdHJpbmcgZSA9IHRvX3N0cmluZyAodG9fZXJyb3IgZSkjI3RvU3RyaW5nXG5lbmRcblxubW9kdWxlIE1hZ2ljID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgICBleGNlcHRpb24gRXJyb3Igb2YgZXJyb3IgdFxuICBlbmRcblxuICB0eXBlICgnYSwgJ2IpIGVxID0gRXEgOiAoJ2EsICdhKSBlcVxuXG4gIGxldCAoZXEgOiAoZXJyb3IgdCwgSnNfZXJyb3IudCkgZXEpID0gT2JqLm1hZ2ljIEVxXG5cbiAgbGV0IG0gPVxuICAgIG1hdGNoIGVxIHdpdGhcbiAgICB8IEVxIC0+XG4gICAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgICAgZXhjZXB0aW9uIEVycm9yID0gSnNfZXJyb3IuRXhuXG4gICAgICAgIGVuZCA6IFQpXG5cbiAgbW9kdWxlIEVycm9yID0gKHZhbCBtIDogVClcbmVuZFxuXG5pbmNsdWRlIE1hZ2ljLkVycm9yXG5cbmxldCByYWlzZV9qc19lcnJvciBlID0gSnNfZXJyb3IucmFpc2VfIChKc19lcnJvci5vZl9lcnJvciBlKVxuXG5sZXQgc3RyaW5nX29mX2Vycm9yIGUgPSBKc19lcnJvci50b19zdHJpbmcgKEpzX2Vycm9yLm9mX2Vycm9yIGUpXG5cbmxldCBleG5fd2l0aF9qc19iYWNrdHJhY2UgPSBKc19lcnJvci5hdHRhY2hfanNfYmFja3RyYWNlXG5cbmV4dGVybmFsIGpzX2Vycm9yX29mX2V4biA6IGV4biAtPiBlcnJvciB0IG9wdCA9IFwiY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb25cIlxuXG5jbGFzcyB0eXBlIGpzb24gPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlIDoganNfc3RyaW5nIHQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnkgOiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IF9KU09OIDoganNvbiB0ID0gVW5zYWZlLmdsb2JhbCMjLl9KU09OXG5cbmxldCBkZWNvZGVVUkkgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZGVjb2RlVVJJIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZGVjb2RlVVJJQ29tcG9uZW50IChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmRlY29kZVVSSUNvbXBvbmVudCBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVuY29kZVVSSSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lbmNvZGVVUkkgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlbmNvZGVVUklDb21wb25lbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZW5jb2RlVVJJQ29tcG9uZW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZXNjYXBlIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVzY2FwZSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IHVuZXNjYXBlIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLnVuZXNjYXBlIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5leHRlcm5hbCBib29sIDogYm9vbCAtPiBib29sIHQgPSBcImNhbWxfanNfZnJvbV9ib29sXCJcblxuZXh0ZXJuYWwgdG9fYm9vbCA6IGJvb2wgdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuXG5leHRlcm5hbCBhcnJheSA6ICdhIGFycmF5IC0+ICdhIGpzX2FycmF5IHQgPSBcImNhbWxfanNfZnJvbV9hcnJheVwiXG5cbmV4dGVybmFsIHRvX2FycmF5IDogJ2EganNfYXJyYXkgdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9qc190b19hcnJheVwiXG5cbmV4dGVybmFsIGJ5dGVzdHJpbmcgOiBzdHJpbmcgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNieXRlc19vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCB0b19ieXRlc3RyaW5nIDoganNfc3RyaW5nIHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzXCJcblxuZXh0ZXJuYWwgZmxvYXQgOiBmbG9hdCAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBudW1iZXJfdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5cbmV4dGVybmFsIG51bWJlcl9vZl9mbG9hdCA6IGZsb2F0IC0+IG51bWJlciB0ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG5leHRlcm5hbCBmbG9hdF9vZl9udW1iZXIgOiBudW1iZXIgdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5cbmV4dGVybmFsIGludDMyIDogaW50MzIgLT4gbnVtYmVyX3QgPSBcImNhbWxfanNfZnJvbV9pbnQzMlwiXG5cbmV4dGVybmFsIHRvX2ludDMyIDogbnVtYmVyX3QgLT4gaW50MzIgPSBcImNhbWxfanNfdG9faW50MzJcIlxuXG5leHRlcm5hbCBuYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gbnVtYmVyX3QgPSBcImNhbWxfanNfZnJvbV9uYXRpdmVpbnRcIlxuXG5leHRlcm5hbCB0b19uYXRpdmVpbnQgOiBudW1iZXJfdCAtPiBuYXRpdmVpbnQgPSBcImNhbWxfanNfdG9fbmF0aXZlaW50XCJcblxuZXh0ZXJuYWwgdHlwZW9mIDogXyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX3R5cGVvZlwiXG5cbmV4dGVybmFsIGluc3RhbmNlb2YgOiBfIHQgLT4gXyBjb25zdHIgLT4gYm9vbCA9IFwiY2FtbF9qc19pbnN0YW5jZW9mXCJcblxubGV0IGlzTmFOIChpIDogJ2EpIDogYm9vbCA9XG4gIHRvX2Jvb2wgKFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuaXNOYU4gW3wgVW5zYWZlLmluamVjdCBpIHxdKVxuXG5sZXQgcGFyc2VJbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBpbnQgPVxuICBsZXQgcyA9IFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMucGFyc2VJbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdIGluXG4gIGlmIGlzTmFOIHMgdGhlbiBmYWlsd2l0aCBcInBhcnNlSW50XCIgZWxzZSBzXG5cbmxldCBwYXJzZUZsb2F0IChzIDoganNfc3RyaW5nIHQpIDogbnVtYmVyX3QgPVxuICBsZXQgcyA9IFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMucGFyc2VGbG9hdCBbfCBVbnNhZmUuaW5qZWN0IHMgfF0gaW5cbiAgaWYgaXNOYU4gcyB0aGVuIGZhaWx3aXRoIFwicGFyc2VGbG9hdFwiIGVsc2Ugc1xuXG5sZXQgXyA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1bmN0aW9uXG4gICAgICB8IEpzX2Vycm9yLkV4biBlIC0+IFNvbWUgKEpzX2Vycm9yLnRvX3N0cmluZyBlKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBfID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuIGUgLT5cbiAgICAgIGxldCBlIDogPCAuLiA+IHQgPSBPYmoubWFnaWMgZSBpblxuICAgICAgaWYgaW5zdGFuY2VvZiBlIGFycmF5X2NvbnN0cnVjdG9yIHRoZW4gTm9uZSBlbHNlIFNvbWUgKHRvX3N0cmluZyBlIyN0b1N0cmluZykpXG5cbmxldCBleHBvcnRfanMgKGZpZWxkIDoganNfc3RyaW5nIHQpIHggPVxuICBVbnNhZmUuc2V0XG4gICAgKFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJqc29vX2V4cG9ydHNcIilcbiAgICBmaWVsZFxuICAgIChpZiBTdHJpbmcuZXF1YWwgKEpzLnRvX3N0cmluZyAodHlwZW9mIChPYmoubWFnaWMgeCkpKSBcImZ1bmN0aW9uXCJcbiAgICAgICAgKCogZnVuY3Rpb24gd2l0aCBhcml0eS9sZW5ndGggZXF1YWwgdG8gemVybyBhcmUgYWxyZWFkeSB3cmFwcGVkICopXG4gICAgICAgICYmIFVuc2FmZS5nZXQgKE9iai5tYWdpYyB4KSAoSnMuc3RyaW5nIFwibGVuZ3RoXCIpID4gMFxuICAgICB0aGVuIE9iai5tYWdpYyAod3JhcF9jYWxsYmFjayAoT2JqLm1hZ2ljIHgpKVxuICAgICBlbHNlIHgpXG5cbmxldCBleHBvcnQgZmllbGQgeCA9IGV4cG9ydF9qcyAoc3RyaW5nIGZpZWxkKSB4XG5cbmxldCBleHBvcnRfYWxsIG9iaiA9XG4gIGxldCBrZXlzID0gb2JqZWN0X2tleXMgb2JqIGluXG4gIGtleXMjI2ZvckVhY2hcbiAgICAod3JhcF9jYWxsYmFjayAoZnVuIChrZXkgOiBqc19zdHJpbmcgdCkgXyBfIC0+IGV4cG9ydF9qcyBrZXkgKFVuc2FmZS5nZXQgb2JqIGtleSkpKVxuXG4oKioqKilcblxuKCogREVQUkVDQVRFRCAqKVxuXG50eXBlIGZsb2F0X3Byb3AgPSBudW1iZXJfdCBwcm9wXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgWydub2RlXSBub2RlTGlzdCA9IG9iamVjdFxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGxpc3Rfb2Zfbm9kZUxpc3QgKG5vZGVMaXN0IDogJ2Egbm9kZUxpc3QgdCkgPVxuICBsZXQgbGVuZ3RoID0gbm9kZUxpc3QjIy5sZW5ndGggaW5cbiAgbGV0IHJlYyBhZGRfaXRlbSBhY2MgaSA9XG4gICAgaWYgaSA8IGxlbmd0aFxuICAgIHRoZW5cbiAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKG5vZGVMaXN0IyNpdGVtIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhZGRfaXRlbSBhY2MgKGkgKyAxKVxuICAgICAgfCBTb21lIGUgLT4gYWRkX2l0ZW0gKGUgOjogYWNjKSAoaSArIDEpXG4gICAgZWxzZSBMaXN0LnJldiBhY2NcbiAgaW5cbiAgYWRkX2l0ZW0gW10gMFxuXG50eXBlIG5vZGVUeXBlID1cbiAgfCBPVEhFUlxuICAoKiBXaWxsIG5vdCBoYXBwZW4gKilcbiAgfCBFTEVNRU5UXG4gIHwgQVRUUklCVVRFXG4gIHwgVEVYVFxuICB8IENEQVRBX1NFQ1RJT05cbiAgfCBFTlRJVFlfUkVGRVJFTkNFXG4gIHwgRU5USVRZXG4gIHwgUFJPQ0VTU0lOR19JTlNUUlVDVElPTlxuICB8IENPTU1FTlRcbiAgfCBET0NVTUVOVFxuICB8IERPQ1VNRU5UX1RZUEVcbiAgfCBET0NVTUVOVF9GUkFHTUVOVFxuICB8IE5PVEFUSU9OXG5cbm1vZHVsZSBEb2N1bWVudFBvc2l0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIHR5cGUgbWFzayA9IGludFxuXG4gIGxldCBkaXNjb25uZWN0ZWQgPSAweDAxXG5cbiAgbGV0IHByZWNlZGluZyA9IDB4MDJcblxuICBsZXQgZm9sbG93aW5nID0gMHgwNFxuXG4gIGxldCBjb250YWlucyA9IDB4MDhcblxuICBsZXQgY29udGFpbmVkX2J5ID0gMHgxMFxuXG4gIGxldCBpbXBsZW1lbnRhdGlvbl9zcGVjaWZpYyA9IDB4MjBcblxuICBsZXQgaGFzIHQgbWFzayA9IHQgbGFuZCBtYXNrID0gbWFza1xuXG4gIGxldCBhZGQgeCB5ID0geCBsb3IgeVxuXG4gIGxldCAoICsgKSA9IGFkZFxuZW5kXG5cbmNsYXNzIHR5cGUgbm9kZSA9IG9iamVjdFxuICBtZXRob2Qgbm9kZU5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5vZGVWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5vZGVUeXBlIDogbm9kZVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXJlbnROb2RlIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGNoaWxkTm9kZXMgOiBub2RlIG5vZGVMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBmaXJzdENoaWxkIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGxhc3RDaGlsZCA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbmV4dFNpYmxpbmcgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbmFtZXNwYWNlVVJJIDoganNfc3RyaW5nIHQgb3B0IHByb3BcblxuICBtZXRob2QgaW5zZXJ0QmVmb3JlIDogbm9kZSB0IC0+IG5vZGUgdCBvcHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZUNoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVDaGlsZCA6IG5vZGUgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRDaGlsZCA6IG5vZGUgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCBoYXNDaGlsZE5vZGVzIDogYm9vbCB0IG1ldGhcblxuICBtZXRob2QgY2xvbmVOb2RlIDogYm9vbCB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIDogbm9kZSB0IC0+IERvY3VtZW50UG9zaXRpb24udCBtZXRoXG5cbiAgbWV0aG9kIGxvb2t1cE5hbWVzcGFjZVVSSSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxvb2t1cFByZWZpeCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5lbmRcblxubGV0IGFwcGVuZENoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSA9IGlnbm9yZSAocCMjYXBwZW5kQ2hpbGQgKG4gOj4gbm9kZSB0KSlcblxubGV0IHJlbW92ZUNoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSA9IGlnbm9yZSAocCMjcmVtb3ZlQ2hpbGQgKG4gOj4gbm9kZSB0KSlcblxubGV0IHJlcGxhY2VDaGlsZCAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgKG8gOiAjbm9kZSB0KSA9XG4gIGlnbm9yZSAocCMjcmVwbGFjZUNoaWxkIChuIDo+IG5vZGUgdCkgKG8gOj4gbm9kZSB0KSlcblxubGV0IGluc2VydEJlZm9yZSAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgKG8gOiAjbm9kZSB0IG9wdCkgPVxuICBpZ25vcmUgKHAjI2luc2VydEJlZm9yZSAobiA6PiBub2RlIHQpIChvIDo+IG5vZGUgdCBvcHQpKVxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbQXR0cl0gb2JqZWN0cy4gKilcbmNsYXNzIHR5cGUgYXR0ciA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3BlY2lmaWVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG93bmVyRWxlbWVudCA6IGVsZW1lbnQgdCBwcm9wXG5lbmRcblxuKCoqIFNwZWNpZmljYXRpb24gb2YgW05hbWVkTm9kZU1hcF0gb2JqZWN0cy4gKilcbmFuZCBbJ25vZGVdIG5hbWVkTm9kZU1hcCA9IG9iamVjdFxuICBtZXRob2QgZ2V0TmFtZWRJdGVtIDoganNfc3RyaW5nIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXROYW1lZEl0ZW0gOiAnbm9kZSB0IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlTmFtZWRJdGVtIDoganNfc3RyaW5nIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbRWxlbWVudF0gb2JqZWN0cy4gKilcbmFuZCBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCB0YWdOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0F0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaGFzQXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOb2RlIDoganNfc3RyaW5nIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZU5vZGUgOiBhdHRyIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZU5vZGUgOiBhdHRyIHQgLT4gYXR0ciB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTm9kZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZU5vZGVOUyA6IGF0dHIgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeVRhZ05hbWUgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IG5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0ciBuYW1lZE5vZGVNYXAgdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBjaGFyYWN0ZXJEYXRhID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdWJqc19zdHJpbmdEYXRhIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZERhdGEgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5zZXJ0RGF0YSA6IGludCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRGF0YSA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VEYXRhIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGNvbW1lbnQgPSBjaGFyYWN0ZXJEYXRhXG5cbmNsYXNzIHR5cGUgdGV4dCA9IGNoYXJhY3RlckRhdGFcblxuY2xhc3MgdHlwZSBkb2N1bWVudEZyYWdtZW50ID0gbm9kZVxuXG5jbGFzcyB0eXBlIFsnZWxlbWVudF0gZG9jdW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIGRvY3VtZW50RWxlbWVudCA6ICdlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjcmVhdGVEb2N1bWVudEZyYWdtZW50IDogZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlRWxlbWVudCA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVFbGVtZW50TlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVGV4dE5vZGUgOiBqc19zdHJpbmcgdCAtPiB0ZXh0IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVDb21tZW50IDoganNfc3RyaW5nIHQgLT4gY29tbWVudCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudEJ5SWQgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlUYWdOYW1lIDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgbm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGltcG9ydE5vZGUgOiBlbGVtZW50IHQgLT4gYm9vbCB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBhZG9wdE5vZGUgOiBlbGVtZW50IHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5lbmRcblxudHlwZSBub2RlX3R5cGUgPVxuICB8IEVsZW1lbnQgb2YgZWxlbWVudCB0XG4gIHwgQXR0ciBvZiBhdHRyIHRcbiAgfCBUZXh0IG9mIHRleHQgdFxuICB8IE90aGVyIG9mIG5vZGUgdFxuXG5sZXQgbm9kZVR5cGUgZSA9XG4gIG1hdGNoIGUjIy5ub2RlVHlwZSB3aXRoXG4gIHwgRUxFTUVOVCAtPiBFbGVtZW50IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gIHwgQVRUUklCVVRFIC0+IEF0dHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBDREFUQV9TRUNUSU9OIHwgVEVYVCAtPiBUZXh0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gIHwgXyAtPiBPdGhlciAoZSA6PiBub2RlIHQpXG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBsZXQgY2FzdCAoZSA6ICNub2RlIEpzLnQpIHQgPVxuICAgIGlmIGUjIy5ub2RlVHlwZSA9PSB0IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgZWxlbWVudCBlIDogZWxlbWVudCBKcy50IEpzLm9wdCA9IGNhc3QgZSBFTEVNRU5UXG5cbiAgbGV0IHRleHQgZSA6IHRleHQgSnMudCBKcy5vcHQgPVxuICAgIGlmIGUjIy5ub2RlVHlwZSA9PSBURVhUIHx8IGUjIy5ub2RlVHlwZSA9PSBDREFUQV9TRUNUSU9OXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGF0dHIgZSA6IGF0dHIgSnMudCBKcy5vcHQgPSBjYXN0IGUgQVRUUklCVVRFXG5lbmRcblxudHlwZSAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9ICgnYSwgJ2IgLT4gYm9vbCB0KSBtZXRoX2NhbGxiYWNrIG9wdFxuKCoqIFRoZSB0eXBlIG9mIGV2ZW50IGxpc3RlbmVyIGZ1bmN0aW9ucy4gIFRoZSBmaXJzdCB0eXBlIHBhcmFtZXRlclxuICAgICAgWydhXSBpcyB0aGUgdHlwZSBvZiB0aGUgdGFyZ2V0IG9iamVjdDsgdGhlIHNlY29uZCBwYXJhbWV0ZXJcbiAgICAgIFsnYl0gaXMgdGhlIHR5cGUgb2YgdGhlIGV2ZW50IG9iamVjdC4gKilcblxuY2xhc3MgdHlwZSBbJ2FdIGV2ZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0IDogJ2EgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VGFyZ2V0IDogJ2EgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gICgqIExlZ2FjeSBtZXRob2RzICopXG4gIG1ldGhvZCBzcmNFbGVtZW50IDogJ2EgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gY3VzdG9tRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIGV2ZW50XG5cbiAgbWV0aG9kIGRldGFpbCA6ICdiIEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxubGV0IG5vX2hhbmRsZXIgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9IEpzLm51bGxcblxubGV0IHdpbmRvd19ldmVudCAoKSA6ICdhICNldmVudCB0ID0gSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcImV2ZW50XCJcblxuKCogVGhlIGZ1bmN0aW9uIHByZXZlbnREZWZhdWx0IG11c3QgYmUgY2FsbGVkIGV4cGxpY2l0bHkgd2hlblxuICAgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lci4uLiAqKVxubGV0IGhhbmRsZXIgZiA9XG4gIEpzLnNvbWVcbiAgICAoSnMuVW5zYWZlLmNhbGxiYWNrIChmdW4gZSAtPlxuICAgICAgICAgKCogZGVwZW5kaW5nIG9uIHRoZSBpbnRlcm5ldCBleHBsb3JlciB2ZXJzaW9uLCBlIGNhbiBiZSBudWxsIG9yIHVuZGVmaW5lZC4gKilcbiAgICAgICAgIGlmIG5vdCAoSnMuT3B0LnRlc3QgKHNvbWUgZSkpXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgbGV0IGUgPSB3aW5kb3dfZXZlbnQgKCkgaW5cbiAgICAgICAgICAgbGV0IHJlcyA9IGYgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIGUjIy5yZXR1cm5WYWx1ZSA6PSByZXM7XG4gICAgICAgICAgIHJlcylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbGV0IHJlcyA9IGYgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGUpIyNwcmV2ZW50RGVmYXVsdDtcbiAgICAgICAgICAgcmVzKSlcblxubGV0IGZ1bGxfaGFuZGxlciBmID1cbiAgSnMuc29tZVxuICAgIChKcy5VbnNhZmUubWV0aF9jYWxsYmFjayAoZnVuIHRoaXMgZSAtPlxuICAgICAgICAgKCogZGVwZW5kaW5nIG9uIHRoZSBpbnRlcm5ldCBleHBsb3JlciB2ZXJzaW9uLCBlIGNhbiBiZSBudWxsIG9yIHVuZGVmaW5lZCAqKVxuICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCAoc29tZSBlKSlcbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBsZXQgZSA9IHdpbmRvd19ldmVudCAoKSBpblxuICAgICAgICAgICBsZXQgcmVzID0gZiB0aGlzIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiBlIyMucmV0dXJuVmFsdWUgOj0gcmVzO1xuICAgICAgICAgICByZXMpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGxldCByZXMgPSBmIHRoaXMgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGUpIyNwcmV2ZW50RGVmYXVsdDtcbiAgICAgICAgICAgcmVzKSlcblxubGV0IGludm9rZV9oYW5kbGVyIChmIDogKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIpICh0aGlzIDogJ2EpIChldmVudCA6ICdiKSA6IGJvb2wgdCA9XG4gIEpzLlVuc2FmZS5jYWxsIGYgdGhpcyBbfCBKcy5VbnNhZmUuaW5qZWN0IGV2ZW50IHxdXG5cbmxldCBldmVudFRhcmdldCAoZSA6ICg8IC4uID4gYXMgJ2EpICNldmVudCB0KSA6ICdhIHQgPVxuICBsZXQgdGFyZ2V0ID1cbiAgICBPcHQuZ2V0IGUjIy50YXJnZXQgKGZ1biAoKSAtPiBPcHQuZ2V0IGUjIy5zcmNFbGVtZW50IChmdW4gKCkgLT4gcmFpc2UgTm90X2ZvdW5kKSlcbiAgaW5cbiAgaWYgSnMuaW5zdGFuY2VvZiB0YXJnZXQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Ob2RlXG4gIHRoZW5cbiAgICAoKiBXb3JrYXJvdW5kIGZvciBTYWZhcmkgYnVnICopXG4gICAgbGV0IHRhcmdldCcgOiBub2RlIEpzLnQgPSBKcy5VbnNhZmUuY29lcmNlIHRhcmdldCBpblxuICAgIGlmIHRhcmdldCcjIy5ub2RlVHlwZSA9PSBURVhUXG4gICAgdGhlbiBKcy5VbnNhZmUuY29lcmNlIChPcHQuZ2V0IHRhcmdldCcjIy5wYXJlbnROb2RlIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICBlbHNlIHRhcmdldFxuICBlbHNlIHRhcmdldFxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0eXAgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gIGxldCBtYWtlIHMgPSBKcy5zdHJpbmcgc1xuZW5kXG5cbnR5cGUgZXZlbnRfbGlzdGVuZXJfaWQgPSB1bml0IC0+IHVuaXRcblxuY2xhc3MgdHlwZSBldmVudF9saXN0ZW5lcl9vcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCBjYXB0dXJlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2UgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcGFzc2l2ZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmxldCBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgKGUgOiAoPCAuLiA+IGFzICdhKSB0KSB0eXAgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgaCA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgZSkjIy5hZGRFdmVudExpc3RlbmVyKVxuICB0aGVuXG4gICAgbGV0IGV2ID0gKEpzLnN0cmluZyBcIm9uXCIpIyNjb25jYXQgdHlwIGluXG4gICAgbGV0IGNhbGxiYWNrIGUgPSBKcy5VbnNhZmUuY2FsbCAoaCwgZSwgW3x8XSkgaW5cbiAgICBsZXQgKCkgPSAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjYXR0YWNoRXZlbnQgZXYgY2FsbGJhY2sgaW5cbiAgICBmdW4gKCkgLT4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI2RldGFjaEV2ZW50IGV2IGNhbGxiYWNrXG4gIGVsc2VcbiAgICBsZXQgb3B0cyA6IGV2ZW50X2xpc3RlbmVyX29wdGlvbnMgdCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICAgIGxldCBpdGVyIHQgZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGIgLT4gZiBiXG4gICAgaW5cbiAgICBpdGVyIGNhcHR1cmUgKGZ1biBiIC0+IG9wdHMjIy5jYXB0dXJlIDo9IGIpO1xuICAgIGl0ZXIgb25jZSAoZnVuIGIgLT4gb3B0cyMjLm9uY2UgOj0gYik7XG4gICAgaXRlciBwYXNzaXZlIChmdW4gYiAtPiBvcHRzIyMucGFzc2l2ZSA6PSBiKTtcbiAgICBsZXQgKCkgPSAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjYWRkRXZlbnRMaXN0ZW5lciB0eXAgaCBvcHRzIGluXG4gICAgZnVuICgpIC0+IChKcy5VbnNhZmUuY29lcmNlIGUpIyNyZW1vdmVFdmVudExpc3RlbmVyIHR5cCBoIG9wdHNcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgKGUgOiAoPCAuLiA+IGFzICdhKSB0KSB0eXAgaCBjYXB0ID1cbiAgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIGUgdHlwIH5jYXB0dXJlOmNhcHQgaFxuXG5sZXQgcmVtb3ZlRXZlbnRMaXN0ZW5lciBpZCA9IGlkICgpXG5cbmxldCBwcmV2ZW50RGVmYXVsdCBldiA9XG4gIGlmIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGV2KSMjLnByZXZlbnREZWZhdWx0ICgqIElFIGhhY2sgKilcbiAgdGhlbiAoSnMuVW5zYWZlLmNvZXJjZSBldikjI3ByZXZlbnREZWZhdWx0XG4gIGVsc2UgKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyMucmV0dXJuVmFsdWUgOj0gSnMuYm9vbCBmYWxzZVxuXG5sZXQgY3JlYXRlQ3VzdG9tRXZlbnQgP2J1YmJsZXMgP2NhbmNlbGFibGUgP2RldGFpbCB0eXAgPVxuICBsZXQgb3B0X2l0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGxldCBvcHRzID0gVW5zYWZlLm9iaiBbfHxdIGluXG4gIG9wdF9pdGVyIChmdW4geCAtPiBvcHRzIyMuYnViYmxlcyA6PSBib29sIHgpIGJ1YmJsZXM7XG4gIG9wdF9pdGVyIChmdW4geCAtPiBvcHRzIyMuY2FuY2VsYWJsZSA6PSBib29sIHgpIGNhbmNlbGFibGU7XG4gIG9wdF9pdGVyIChmdW4geCAtPiBvcHRzIyMuZGV0YWlsIDo9IHNvbWUgeCkgZGV0YWlsO1xuICBsZXQgY29uc3RyIDpcbiAgICAgICggICAoJ2EsICdiKSAjY3VzdG9tRXZlbnQgSnMudCBFdmVudC50eXBcbiAgICAgICAtPiA8IGRldGFpbCA6ICdiIG9wdCBwcm9wID4gdFxuICAgICAgIC0+ICgnYSwgJ2IpIGN1c3RvbUV2ZW50IHQpXG4gICAgICBjb25zdHIgPVxuICAgIFVuc2FmZS5nbG9iYWwjIy5fQ3VzdG9tRXZlbnRcbiAgaW5cbiAgbmV3JWpzIGNvbnN0ciB0eXAgb3B0c1xuXG4oKiBJRSA8IDkgKilcblxuY2xhc3MgdHlwZSBzdHJpbmdMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRhaW5zIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMiBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcbm9wZW4gSnNcblxudHlwZSB1aW50MzIgPSBmbG9hdFxuXG5jbGFzcyB0eXBlIGFycmF5QnVmZmVyID0gb2JqZWN0XG4gIG1ldGhvZCBieXRlTGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGFycmF5QnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV90b0VuZCA6IGludCAtPiBhcnJheUJ1ZmZlciB0IG1ldGhcbmVuZFxuXG5sZXQgYXJyYXlCdWZmZXIgOiAoaW50IC0+IGFycmF5QnVmZmVyIHQpIGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fQXJyYXlCdWZmZXJcblxuY2xhc3MgdHlwZSBhcnJheUJ1ZmZlclZpZXcgPSBvYmplY3RcbiAgbWV0aG9kIGJ1ZmZlciA6IGFycmF5QnVmZmVyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBieXRlT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnl0ZUxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSB0eXBlZEFycmF5ID0gb2JqZWN0XG4gIGluaGVyaXQgYXJyYXlCdWZmZXJWaWV3XG5cbiAgbWV0aG9kIF9CWVRFU19QRVJfRUxFTUVOVCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldF9mcm9tQXJyYXkgOiAnYSBqc19hcnJheSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0X2Zyb21UeXBlZEFycmF5IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3ViYXJyYXkgOiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHN1YmFycmF5X3RvRW5kIDogaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV90b0VuZCA6IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gICgqIFRoaXMgZmFrZSBtZXRob2QgaXMgbmVlZGVkIGZvciB0eXBpbmcgcHVycG9zZXMuXG4gICAgIFdpdGhvdXQgaXQsIFsnYl0gd291bGQgbm90IGJlIGNvbnN0cmFpbmVkLiAqKVxuICBtZXRob2QgX2NvbnRlbnRfdHlwZV8gOiAnYiBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbnR5cGUgaW50OEFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50OF9zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDhBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgaW50MTZBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDE2X3NpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50MTZBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDE2X3Vuc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGludDMyQXJyYXkgPSAoaW50MzIsIEJpZ2FycmF5LmludDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQzMkFycmF5ID0gKGludDMyLCBCaWdhcnJheS5pbnQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBmbG9hdDMyQXJyYXkgPSAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgZmxvYXQ2NEFycmF5ID0gKGZsb2F0LCBCaWdhcnJheS5mbG9hdDY0X2VsdCkgdHlwZWRBcnJheVxuXG5leHRlcm5hbCBraW5kIDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+ICgnYSwgJ2IpIEJpZ2FycmF5LmtpbmRcbiAgPSBcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVwiXG5cbmV4dGVybmFsIGZyb21fZ2VuYXJyYXkgOlxuICAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHRcbiAgPSBcImNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcIlxuXG5leHRlcm5hbCB0b19nZW5hcnJheSA6XG4gICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudFxuICA9IFwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5XCJcblxubGV0IGludDhBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfZnJvbUFycmF5ID0gaW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tQnVmZmVyID0gaW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfaW5CdWZmZXIgPSBpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1VpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfZnJvbUFycmF5ID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfZnJvbUJ1ZmZlciA9IHVpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfaW5CdWZmZXIgPSB1aW50OEFycmF5XG5cbmxldCBpbnQxNkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2Zyb21BcnJheSA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBpbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2Zyb21CdWZmZXIgPSBpbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2luQnVmZmVyID0gaW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1VpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tQXJyYXkgPSB1aW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSB1aW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfZnJvbUJ1ZmZlciA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9pbkJ1ZmZlciA9IHVpbnQxNkFycmF5XG5cbmxldCBpbnQzMkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2Zyb21BcnJheSA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBpbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2Zyb21CdWZmZXIgPSBpbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2luQnVmZmVyID0gaW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1VpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tQXJyYXkgPSB1aW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSB1aW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfZnJvbUJ1ZmZlciA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9pbkJ1ZmZlciA9IHVpbnQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2Zyb21BcnJheSA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2Zyb21UeXBlZEFycmF5ID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbUJ1ZmZlciA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2luQnVmZmVyID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2Zyb21BcnJheSA9IGZsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2Zyb21UeXBlZEFycmF5ID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbUJ1ZmZlciA9IGZsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2luQnVmZmVyID0gZmxvYXQ2NEFycmF5XG5cbmxldCBzZXQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPVxuIGZ1biBhIGkgdiAtPiBhcnJheV9zZXQgKFVuc2FmZS5jb2VyY2UgYSkgaSB2XG5cbmxldCBnZXQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+ICdhIG9wdGRlZiA9IGZ1biBhIGkgLT4gSnMuVW5zYWZlLmdldCBhIGlcblxubGV0IHVuc2FmZV9nZXQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+ICdhID0gZnVuIGEgaSAtPiBKcy5VbnNhZmUuZ2V0IGEgaVxuXG5jbGFzcyB0eXBlIGRhdGFWaWV3ID0gb2JqZWN0XG4gIGluaGVyaXQgYXJyYXlCdWZmZXJWaWV3XG5cbiAgbWV0aG9kIGdldEludDggOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDggOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MTYgOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MTZfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MTYgOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDE2XyA6IGludCAtPiBib29sIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MzIgOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MzJfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MzIgOiBpbnQgLT4gdWludDMyIG1ldGhcblxuICBtZXRob2QgZ2V0VWludDMyXyA6IGludCAtPiBib29sIHQgLT4gdWludDMyIG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQzMiA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0MzJfIDogaW50IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0NjQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDY0XyA6IGludCAtPiBib29sIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQ4IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDggOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQxNiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDE2XyA6IGludCAtPiBpbnQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MTYgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MTZfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDMyIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MzJfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQzMiA6IGludCAtPiB1aW50MzIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQzMl8gOiBpbnQgLT4gdWludDMyIC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQzMiA6IGludCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQzMl8gOiBpbnQgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDY0IDogaW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDY0XyA6IGludCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxubGV0IGRhdGFWaWV3ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9EYXRhVmlld1xuXG5sZXQgZGF0YVZpZXdfaW5CdWZmZXIgPSBkYXRhVmlld1xuXG5tb2R1bGUgQmlnc3RyaW5nID0gc3RydWN0XG4gIHR5cGUgdCA9IChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbiAgZXh0ZXJuYWwgdG9fYXJyYXlCdWZmZXIgOiB0IC0+IGFycmF5QnVmZmVyIEpzLnQgPSBcImJpZ3N0cmluZ190b19hcnJheV9idWZmZXJcIlxuXG4gIGV4dGVybmFsIHRvX3VpbnQ4QXJyYXkgOiB0IC0+IHVpbnQ4QXJyYXkgSnMudCA9IFwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBvZl9hcnJheUJ1ZmZlciA6IGFycmF5QnVmZmVyIEpzLnQgLT4gdCA9IFwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlclwiXG5cbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgSnMudCAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcIlxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2FycmF5XCJcblxuICBsZXQgb2ZfYXJyYXlCdWZmZXIgYWIgPVxuICAgIGxldCB1aW50OCA9IG5ldyVqcyB1aW50OEFycmF5X2Zyb21CdWZmZXIgYWIgaW5cbiAgICBvZl91aW50OEFycmF5IHVpbnQ4XG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21cbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGJsb2IgPSBvYmplY3RcbiAgbWV0aG9kIHNpemUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGJsb2IgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3dpdGhDb250ZW50VHlwZSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gYmxvYiB0IG1ldGhcbmVuZFxuXG5sZXQgYmxvYl9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0Jsb2JcblxudHlwZSAnYSBtYWtlX2Jsb2IgPVxuICA/Y29udGVudFR5cGU6c3RyaW5nIC0+ID9lbmRpbmdzOlsgYFRyYW5zcGFyZW50IHwgYE5hdGl2ZSBdIC0+ICdhIC0+IGJsb2IgdFxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB2IDo6IHEgLT4gKFxuICAgICAgbWF0Y2ggZiB2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgcVxuICAgICAgfCBTb21lIHYnIC0+IHYnIDo6IGZpbHRlcl9tYXAgZiBxKVxuXG5sZXQgbWFrZV9ibG9iX29wdGlvbnMgY29udGVudFR5cGUgZW5kaW5ncyA9XG4gIGxldCBvcHRpb25zID1cbiAgICBmaWx0ZXJfbWFwXG4gICAgICAoZnVuIChuYW1lLCB2KSAtPlxuICAgICAgICBtYXRjaCB2IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHYgLT4gU29tZSAobmFtZSwgVW5zYWZlLmluamVjdCAoc3RyaW5nIHYpKSlcbiAgICAgIFsgXCJ0eXBlXCIsIGNvbnRlbnRUeXBlXG4gICAgICA7ICggXCJlbmRpbmdzXCJcbiAgICAgICAgLCBtYXRjaCBlbmRpbmdzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBgVHJhbnNwYXJlbnQgLT4gU29tZSBcInRyYW5zcGFyZW50XCJcbiAgICAgICAgICB8IFNvbWUgYE5hdGl2ZSAtPiBTb21lIFwibmF0aXZlXCIgKVxuICAgICAgXVxuICBpblxuICBtYXRjaCBvcHRpb25zIHdpdGhcbiAgfCBbXSAtPiB1bmRlZmluZWRcbiAgfCBsIC0+IFVuc2FmZS5vYmogKEFycmF5Lm9mX2xpc3QgbClcblxubGV0IGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBhID1cbiAgbGV0IG9wdGlvbnMgPSBtYWtlX2Jsb2Jfb3B0aW9ucyBjb250ZW50VHlwZSBlbmRpbmdzIGluXG4gIG5ldyVqcyBibG9iX2NvbnN0ciAoYXJyYXkgYSkgb3B0aW9uc1xuXG5sZXQgYmxvYl9mcm9tX3N0cmluZyA/Y29udGVudFR5cGUgP2VuZGluZ3MgcyA9XG4gIGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBbfCBzdHJpbmcgcyB8XVxuXG5sZXQgYmxvYl9mcm9tX2FueSA/Y29udGVudFR5cGUgP2VuZGluZ3MgbCA9XG4gIGxldCBsID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgYGFycmF5QnVmZmVyIGEgLT4gVW5zYWZlLmluamVjdCBhXG4gICAgICAgIHwgYGFycmF5QnVmZmVyVmlldyBhIC0+IFVuc2FmZS5pbmplY3QgYVxuICAgICAgICB8IGBzdHJpbmcgcyAtPiBVbnNhZmUuaW5qZWN0IChzdHJpbmcgcylcbiAgICAgICAgfCBganNfc3RyaW5nIHMgLT4gVW5zYWZlLmluamVjdCBzXG4gICAgICAgIHwgYGJsb2IgYiAtPiBVbnNhZmUuaW5qZWN0IGIpXG4gICAgICBsXG4gIGluXG4gIGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyAoQXJyYXkub2ZfbGlzdCBsKVxuXG5jbGFzcyB0eXBlIGZpbGUgPSBvYmplY3RcbiAgaW5oZXJpdCBibG9iXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RNb2RpZmllZERhdGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW4gZmlyZWZveCAzLjAtMy41IGZpbGUubmFtZSBpcyBub3QgYXZhaWxhYmxlLCB3ZSB1c2UgdGhlIG5vbnN0YW5kYXJkIGZpbGVOYW1lIGluc3RlYWQgKilcbmNsYXNzIHR5cGUgZmlsZV9uYW1lX29ubHkgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxlTmFtZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGZpbGVuYW1lIGZpbGUgPVxuICBsZXQgZmlsZSA6IGZpbGVfbmFtZV9vbmx5IHQgPSBKcy5VbnNhZmUuY29lcmNlIGZpbGUgaW5cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBmaWxlIyMubmFtZSB3aXRoXG4gIHwgTm9uZSAtPiAoXG4gICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGZpbGUjIy5maWxlTmFtZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJjYW4ndCByZXRyaWV2ZSBmaWxlIG5hbWU6IG5vdCBpbXBsZW1lbnRlZFwiXG4gICAgICB8IFNvbWUgbmFtZSAtPiBuYW1lKVxuICB8IFNvbWUgbmFtZSAtPiBuYW1lXG5cbnR5cGUgZmlsZV9hbnkgPSA8ID4gdFxuXG5sZXQgZG9jX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRG9jdW1lbnRcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGV4dGVybmFsIGpzb24gOiBmaWxlX2FueSAtPiAnYSBPcHQudCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgZG9jdW1lbnQgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBkb2NfY29uc3RyXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBlbGVtZW50IGRvY3VtZW50IHQpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGJsb2IgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBibG9iX2NvbnN0ciB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6ICNibG9iIHQpIGVsc2UgSnMubnVsbFxuXG4gIGxldCBzdHJpbmcgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIEpzLmVxdWFscyAodHlwZW9mIGUpIChzdHJpbmcgXCJzdHJpbmdcIilcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IGpzX3N0cmluZyB0KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhcnJheUJ1ZmZlciAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIFR5cGVkX2FycmF5LmFycmF5QnVmZmVyXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0KVxuICAgIGVsc2UgSnMubnVsbFxuZW5kXG5cbmNsYXNzIHR5cGUgZmlsZUxpc3QgPSBvYmplY3RcbiAgaW5oZXJpdCBbZmlsZV0gRG9tLm5vZGVMaXN0XG5lbmRcblxuY2xhc3MgdHlwZSBmaWxlRXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIGNvZGUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBwcm9ncmVzc0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBldmVudFxuXG4gIG1ldGhvZCBsZW5ndGhDb21wdXRhYmxlIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9hZGVkIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG90YWwgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcHJvZ3Jlc3NFdmVudFRhcmdldCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbmxvYWRzdGFydCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucHJvZ3Jlc3MgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFib3J0IDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVuZCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBFTVBUWVxuICB8IExPQURJTkdcbiAgfCBET05FXG5cbmNsYXNzIHR5cGUgZmlsZVJlYWRlciA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCByZWFkQXNBcnJheUJ1ZmZlciA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc0JpbmFyeVN0cmluZyA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc1RleHQgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNUZXh0X3dpdGhFbmNvZGluZyA6ICNibG9iIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc0RhdGFVUkwgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3VsdCA6IGZpbGVfYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZXJyb3IgOiBmaWxlRXJyb3IgdCByZWFkb25seV9wcm9wXG5cbiAgaW5oZXJpdCBwcm9ncmVzc0V2ZW50VGFyZ2V0XG5lbmRcblxubW9kdWxlIFJlYWRlckV2ZW50ID0gc3RydWN0XG4gIHR5cGUgdHlwID0gZmlsZVJlYWRlciBwcm9ncmVzc0V2ZW50IHQgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCBsb2Fkc3RhcnQgPSBFdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBFdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCBhYm9ydCA9IEV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IGVycm9yID0gRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgbG9hZCA9IEV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgbG9hZGVuZCA9IEV2ZW50Lm1ha2UgXCJsb2FkZW5kXCJcbmVuZFxuXG5sZXQgZmlsZVJlYWRlciA6IGZpbGVSZWFkZXIgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ZpbGVSZWFkZXJcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5leHRlcm5hbCBjYW1sX2pzX29uX2llIDogdW5pdCAtPiBib29sIHQgPSBcImNhbWxfanNfb25faWVcIlxuXG5sZXQgb25JRSA9IEpzLnRvX2Jvb2wgKGNhbWxfanNfb25faWUgKCkpXG5cbmV4dGVybmFsIGh0bWxfZXNjYXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfaHRtbF9lc2NhcGVcIlxuXG5leHRlcm5hbCBkZWNvZGVfaHRtbF9lbnRpdGllcyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX2h0bWxfZW50aXRpZXNcIlxuXG5jbGFzcyB0eXBlIGNzc1N0eWxlRGVjbGFyYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIHNldFByb3BlcnR5IDpcbiAgICBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHRkZWYgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9wZXJ0eVZhbHVlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9wZXJ0eVByaW9yaXR5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVQcm9wZXJ0eSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYW5pbWF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EZWxheSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EdXJhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRmlsbE1vZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25OYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25QbGF5U3RhdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kQXR0YWNobWVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kSW1hZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRQb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZFJlcGVhdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbUNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21TdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckNvbGxhcHNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmFkaXVzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2FwdGlvblNpZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsZWFyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGlwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY291bnRlckluY3JlbWVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY291bnRlclJlc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjc3NGbG9hdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3NzVGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3Vyc29yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc3BsYXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVtcHR5Q2VsbHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRGYW1pbHkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRTaXplIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRWYXJpYW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250V2VpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxldHRlclNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVIZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlSW1hZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZVBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpblRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWF4SGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWluSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3BhY2l0eSA6IGpzX3N0cmluZyB0IG9wdGRlZiBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZU9mZnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZVN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvd1ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93WSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ0JvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ0xlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdSaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ1RvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFnZUJyZWFrQWZ0ZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZ2VCcmVha0JlZm9yZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcG9pbnRlckV2ZW50cyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJsZUxheW91dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QW5jaG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0RGVjb3JhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEluZGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dFRyYW5zZm9ybSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZlcnRpY2FsQWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZpc2liaWxpdHkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdoaXRlU3BhY2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3b3JkU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgekluZGV4IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbnR5cGUgKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSAoJ2EsICdiKSBEb20uZXZlbnRfbGlzdGVuZXJcblxudHlwZSBtb3VzZV9idXR0b24gPVxuICB8IE5vX2J1dHRvblxuICB8IExlZnRfYnV0dG9uXG4gIHwgTWlkZGxlX2J1dHRvblxuICB8IFJpZ2h0X2J1dHRvblxuXG50eXBlIGRlbHRhX21vZGUgPVxuICB8IERlbHRhX3BpeGVsXG4gIHwgRGVsdGFfbGluZVxuICB8IERlbHRhX3BhZ2VcblxuY2xhc3MgdHlwZSBldmVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZXZlbnRcbmVuZFxuXG5hbmQgWydhXSBjdXN0b21FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50LCAnYV0gRG9tLmN1c3RvbUV2ZW50XG5lbmRcblxuYW5kIGZvY3VzRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5YIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ1dHRvbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoaWNoIDogbW91c2VfYnV0dG9uIG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZyb21FbGVtZW50IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b0VsZW1lbnQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VYIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VZIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGtleWJvYXJkRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9jYXRpb24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXkgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hpY2ggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhckNvZGUgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5Q29kZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldE1vZGlmaWVyU3RhdGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBrZXlJZGVudGlmaWVyIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2V3aGVlbEV2ZW50ID0gb2JqZWN0XG4gICgqIEFsbCBtb2Rlcm4gYnJvd3NlcnMgKilcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIHdoZWVsRGVsdGEgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhWCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhWSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFaIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YU1vZGUgOiBkZWx0YV9tb2RlIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2VTY3JvbGxFdmVudCA9IG9iamVjdFxuICAoKiBGaXJlZm94ICopXG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBkZXRhaWwgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBheGlzIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9IT1JJWk9OVEFMX0FYSVMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRJQ0FMX0FYSVMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdG91Y2hFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldFRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYW5nZWRUb3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdG91Y2hMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IHRvdWNoIHQgb3B0ZGVmIG1ldGhcbmVuZFxuXG5hbmQgdG91Y2ggPSBvYmplY3RcbiAgbWV0aG9kIGlkZW50aWZpZXIgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBlbGVtZW50IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdWJtaXRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHN1Ym1pdHRlciA6IGVsZW1lbnQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBkcmFnRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIGRhdGFUcmFuc2ZlciA6IGRhdGFUcmFuc2ZlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2xpcGJvYXJkRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBjbGlwYm9hcmREYXRhIDogZGF0YVRyYW5zZmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBkYXRhVHJhbnNmZXIgPSBvYmplY3RcbiAgbWV0aG9kIGRyb3BFZmZlY3QgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVmZmVjdEFsbG93ZWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHlwZXMgOiBqc19zdHJpbmcgdCBqc19hcnJheSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWRkRWxlbWVudCA6IGVsZW1lbnQgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEYXRhIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGF0YV9hbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0RGF0YSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgc2V0RGF0YSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXREcmFnSW1hZ2UgOiBlbGVtZW50IHQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgZXZlbnRUYXJnZXQgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25jbGljayA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZGJsY2xpY2sgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlZG93biA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2V1cCA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2VvdmVyIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW1vdmUgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlb3V0IDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXlwcmVzcyA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5ZG93biA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5dXAgOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNjcm9sbCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndoZWVsIDogKCdzZWxmIHQsIG1vdXNld2hlZWxFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdzdGFydCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnZW5kIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdlbnRlciA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnb3ZlciA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnbGVhdmUgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZyA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcm9wIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbnN0YXJ0IDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uZW5kIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uaXRlcmF0aW9uIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uY2FuY2VsIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbnJ1biA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uc3RhcnQgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbmVuZCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uY2FuY2VsIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmdvdHBvaW50ZXJjYXB0dXJlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvc3Rwb2ludGVyY2FwdHVyZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyZW50ZXIgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmNhbmNlbCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyZG93biA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVybGVhdmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm1vdmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm91dCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyb3ZlciA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVydXAgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGRpc3BhdGNoRXZlbnQgOiBldmVudCB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcblxuYW5kIHBvcFN0YXRlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBzdGF0ZSA6IEpzLlVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBwb2ludGVyRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIHBvaW50ZXJJZCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNzdXJlIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YW5nZW50aWFsUHJlc3N1cmUgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbHRYIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGlsdFkgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0d2lzdCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvaW50ZXJUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc1ByaW1hcnkgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdG9yYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBrZXkgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbGRWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXJsIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdG9yYWdlQXJlYSA6IHN0b3JhZ2UgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdG9yYWdlID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXkgOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0SXRlbSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEl0ZW0gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlSXRlbSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhciA6IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBoYXNoQ2hhbmdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBvbGRVUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ld1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgYW5pbWF0aW9uRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBhbmltYXRpb25OYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbGFwc2VkVGltZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHNldWRvRWxlbWVudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdHJhbnNpdGlvbkV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcHJvcGVydHlOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbGFwc2VkVGltZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHNldWRvRWxlbWVudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbWVkaWFFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5lbmRcblxuYW5kIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBVbnNhZmUuYW55IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNvdXJjZSA6IFVuc2FmZS5hbnkgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbm9kZVNlbGVjdG9yID0gb2JqZWN0XG4gIG1ldGhvZCBxdWVyeVNlbGVjdG9yIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHF1ZXJ5U2VsZWN0b3JBbGwgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcbmVuZFxuXG5hbmQgdG9rZW5MaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGpzX3N0cmluZyB0IG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIGNvbnRhaW5zIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgYWRkIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0b2dnbGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZmllciA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5hbmQgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbS5lbGVtZW50XG5cbiAgaW5oZXJpdCBub2RlU2VsZWN0b3JcblxuICBtZXRob2QgaWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsYXNzTmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xhc3NMaXN0IDogdG9rZW5MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZXN0IDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHN0eWxlIDogY3NzU3R5bGVEZWNsYXJhdGlvbiB0IHByb3BcblxuICBtZXRob2QgaW5uZXJIVE1MIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRlckhUTUwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRDb250ZW50IDoganNfc3RyaW5nIHQgb3B0IHByb3BcblxuICBtZXRob2QgaW5uZXJUZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRMZWZ0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50VG9wIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50V2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRMZWZ0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0VG9wIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0UGFyZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0SGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Nyb2xsTGVmdCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbFRvcCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbFdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsSGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgZ2V0Q2xpZW50UmVjdHMgOiBjbGllbnRSZWN0TGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IDogY2xpZW50UmVjdCB0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsSW50b1ZpZXcgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsaWNrIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvY3VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsdXIgOiB1bml0IG1ldGhcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxuYW5kIGNsaWVudFJlY3QgPSBvYmplY3RcbiAgbWV0aG9kIHRvcCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmlnaHQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvdHRvbSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVmdCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjbGllbnRSZWN0TGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBjbGllbnRSZWN0IHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgbm9faGFuZGxlciA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gRG9tLm5vX2hhbmRsZXJcblxubGV0IGhhbmRsZXIgPSBEb20uaGFuZGxlclxuXG5sZXQgZnVsbF9oYW5kbGVyID0gRG9tLmZ1bGxfaGFuZGxlclxuXG5sZXQgaW52b2tlX2hhbmRsZXIgPSBEb20uaW52b2tlX2hhbmRsZXJcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdHlwID0gJ2EgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCBjbGljayA9IERvbS5FdmVudC5tYWtlIFwiY2xpY2tcIlxuXG4gIGxldCBjb3B5ID0gRG9tLkV2ZW50Lm1ha2UgXCJjb3B5XCJcblxuICBsZXQgY3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJjdXRcIlxuXG4gIGxldCBwYXN0ZSA9IERvbS5FdmVudC5tYWtlIFwicGFzdGVcIlxuXG4gIGxldCBkYmxjbGljayA9IERvbS5FdmVudC5tYWtlIFwiZGJsY2xpY2tcIlxuXG4gIGxldCBtb3VzZWRvd24gPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlZG93blwiXG5cbiAgbGV0IG1vdXNldXAgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNldXBcIlxuXG4gIGxldCBtb3VzZW92ZXIgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlb3ZlclwiXG5cbiAgbGV0IG1vdXNlbW92ZSA9IERvbS5FdmVudC5tYWtlIFwibW91c2Vtb3ZlXCJcblxuICBsZXQgbW91c2VvdXQgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlb3V0XCJcblxuICBsZXQga2V5cHJlc3MgPSBEb20uRXZlbnQubWFrZSBcImtleXByZXNzXCJcblxuICBsZXQga2V5ZG93biA9IERvbS5FdmVudC5tYWtlIFwia2V5ZG93blwiXG5cbiAgbGV0IGtleXVwID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXl1cFwiXG5cbiAgbGV0IG1vdXNld2hlZWwgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNld2hlZWxcIlxuXG4gIGxldCB3aGVlbCA9IERvbS5FdmVudC5tYWtlIFwid2hlZWxcIlxuXG4gIGxldCBfRE9NTW91c2VTY3JvbGwgPSBEb20uRXZlbnQubWFrZSBcIkRPTU1vdXNlU2Nyb2xsXCJcblxuICBsZXQgdG91Y2hzdGFydCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hzdGFydFwiXG5cbiAgbGV0IHRvdWNobW92ZSA9IERvbS5FdmVudC5tYWtlIFwidG91Y2htb3ZlXCJcblxuICBsZXQgdG91Y2hlbmQgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoZW5kXCJcblxuICBsZXQgdG91Y2hjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoY2FuY2VsXCJcblxuICBsZXQgZHJhZ3N0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnc3RhcnRcIlxuXG4gIGxldCBkcmFnZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnZW5kXCJcblxuICBsZXQgZHJhZ2VudGVyID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnZW50ZXJcIlxuXG4gIGxldCBkcmFnb3ZlciA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ292ZXJcIlxuXG4gIGxldCBkcmFnbGVhdmUgPSBEb20uRXZlbnQubWFrZSBcImRyYWdsZWF2ZVwiXG5cbiAgbGV0IGRyYWcgPSBEb20uRXZlbnQubWFrZSBcImRyYWdcIlxuXG4gIGxldCBkcm9wID0gRG9tLkV2ZW50Lm1ha2UgXCJkcm9wXCJcblxuICBsZXQgaGFzaGNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiaGFzaGNoYW5nZVwiXG5cbiAgbGV0IGNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiY2hhbmdlXCJcblxuICBsZXQgaW5wdXQgPSBEb20uRXZlbnQubWFrZSBcImlucHV0XCJcblxuICBsZXQgdGltZXVwZGF0ZSA9IERvbS5FdmVudC5tYWtlIFwidGltZXVwZGF0ZVwiXG5cbiAgbGV0IHN1Ym1pdCA9IERvbS5FdmVudC5tYWtlIFwic3VibWl0XCJcblxuICBsZXQgc2Nyb2xsID0gRG9tLkV2ZW50Lm1ha2UgXCJzY3JvbGxcIlxuXG4gIGxldCBmb2N1cyA9IERvbS5FdmVudC5tYWtlIFwiZm9jdXNcIlxuXG4gIGxldCBibHVyID0gRG9tLkV2ZW50Lm1ha2UgXCJibHVyXCJcblxuICBsZXQgbG9hZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IHVubG9hZCA9IERvbS5FdmVudC5tYWtlIFwidW5sb2FkXCJcblxuICBsZXQgYmVmb3JldW5sb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJiZWZvcmV1bmxvYWRcIlxuXG4gIGxldCByZXNpemUgPSBEb20uRXZlbnQubWFrZSBcInJlc2l6ZVwiXG5cbiAgbGV0IG9yaWVudGF0aW9uY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJvcmllbnRhdGlvbmNoYW5nZVwiXG5cbiAgbGV0IHBvcHN0YXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb3BzdGF0ZVwiXG5cbiAgbGV0IGVycm9yID0gRG9tLkV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGFib3J0ID0gRG9tLkV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IHNlbGVjdCA9IERvbS5FdmVudC5tYWtlIFwic2VsZWN0XCJcblxuICBsZXQgb25saW5lID0gRG9tLkV2ZW50Lm1ha2UgXCJvbmxpbmVcIlxuXG4gIGxldCBvZmZsaW5lID0gRG9tLkV2ZW50Lm1ha2UgXCJvZmZsaW5lXCJcblxuICBsZXQgY2hlY2tpbmcgPSBEb20uRXZlbnQubWFrZSBcImNoZWNraW5nXCJcblxuICBsZXQgbm91cGRhdGUgPSBEb20uRXZlbnQubWFrZSBcIm5vdXBkYXRlXCJcblxuICBsZXQgZG93bmxvYWRpbmcgPSBEb20uRXZlbnQubWFrZSBcImRvd25sb2FkaW5nXCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBEb20uRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgdXBkYXRlcmVhZHkgPSBEb20uRXZlbnQubWFrZSBcInVwZGF0ZXJlYWR5XCJcblxuICBsZXQgY2FjaGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJjYWNoZWRcIlxuXG4gIGxldCBvYnNvbGV0ZSA9IERvbS5FdmVudC5tYWtlIFwib2Jzb2xldGVcIlxuXG4gIGxldCBkb21Db250ZW50TG9hZGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJET01Db250ZW50TG9hZGVkXCJcblxuICBsZXQgYW5pbWF0aW9uc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbnN0YXJ0XCJcblxuICBsZXQgYW5pbWF0aW9uZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25lbmRcIlxuXG4gIGxldCBhbmltYXRpb25pdGVyYXRpb24gPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbml0ZXJhdGlvblwiXG5cbiAgbGV0IGFuaW1hdGlvbmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uY2FuY2VsXCJcblxuICBsZXQgdHJhbnNpdGlvbnJ1biA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbnJ1blwiXG5cbiAgbGV0IHRyYW5zaXRpb25zdGFydCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbnN0YXJ0XCJcblxuICBsZXQgdHJhbnNpdGlvbmVuZCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbmVuZFwiXG5cbiAgbGV0IHRyYW5zaXRpb25jYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25jYW5jZWxcIlxuXG4gIGxldCBjYW5wbGF5ID0gRG9tLkV2ZW50Lm1ha2UgXCJjYW5wbGF5XCJcblxuICBsZXQgY2FucGxheXRocm91Z2ggPSBEb20uRXZlbnQubWFrZSBcImNhbnBsYXl0aHJvdWdoXCJcblxuICBsZXQgZHVyYXRpb25jaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcImR1cmF0aW9uY2hhbmdlXCJcblxuICBsZXQgZW1wdGllZCA9IERvbS5FdmVudC5tYWtlIFwiZW1wdGllZFwiXG5cbiAgbGV0IGVuZGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJlbmRlZFwiXG5cbiAgbGV0IGdvdHBvaW50ZXJjYXB0dXJlID0gRG9tLkV2ZW50Lm1ha2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiXG5cbiAgbGV0IGxvYWRlZGRhdGEgPSBEb20uRXZlbnQubWFrZSBcImxvYWRlZGRhdGFcIlxuXG4gIGxldCBsb2FkZWRtZXRhZGF0YSA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVkbWV0YWRhdGFcIlxuXG4gIGxldCBsb2Fkc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IGxvc3Rwb2ludGVyY2FwdHVyZSA9IERvbS5FdmVudC5tYWtlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCJcblxuICBsZXQgbWVzc2FnZSA9IERvbS5FdmVudC5tYWtlIFwibWVzc2FnZVwiXG5cbiAgbGV0IHBhdXNlID0gRG9tLkV2ZW50Lm1ha2UgXCJwYXVzZVwiXG5cbiAgbGV0IHBsYXkgPSBEb20uRXZlbnQubWFrZSBcInBsYXlcIlxuXG4gIGxldCBwbGF5aW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJwbGF5aW5nXCJcblxuICBsZXQgcG9pbnRlcmVudGVyID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyZW50ZXJcIlxuXG4gIGxldCBwb2ludGVyY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyY2FuY2VsXCJcblxuICBsZXQgcG9pbnRlcmRvd24gPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJkb3duXCJcblxuICBsZXQgcG9pbnRlcmxlYXZlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVybGVhdmVcIlxuXG4gIGxldCBwb2ludGVybW92ZSA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm1vdmVcIlxuXG4gIGxldCBwb2ludGVyb3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyb3V0XCJcblxuICBsZXQgcG9pbnRlcm92ZXIgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJvdmVyXCJcblxuICBsZXQgcG9pbnRlcnVwID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVydXBcIlxuXG4gIGxldCByYXRlY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJyYXRlY2hhbmdlXCJcblxuICBsZXQgc2Vla2VkID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWVrZWRcIlxuXG4gIGxldCBzZWVraW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWVraW5nXCJcblxuICBsZXQgc3RhbGxlZCA9IERvbS5FdmVudC5tYWtlIFwic3RhbGxlZFwiXG5cbiAgbGV0IHN1c3BlbmQgPSBEb20uRXZlbnQubWFrZSBcInN1c3BlbmRcIlxuXG4gIGxldCB2b2x1bWVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInZvbHVtZWNoYW5nZVwiXG5cbiAgbGV0IHdhaXRpbmcgPSBEb20uRXZlbnQubWFrZSBcIndhaXRpbmdcIlxuXG4gIGxldCBtYWtlID0gRG9tLkV2ZW50Lm1ha2VcbmVuZFxuXG50eXBlIGV2ZW50X2xpc3RlbmVyX2lkID0gRG9tLmV2ZW50X2xpc3RlbmVyX2lkXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcblxubGV0IGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyA9IERvbS5hZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcblxubGV0IHJlbW92ZUV2ZW50TGlzdGVuZXIgPSBEb20ucmVtb3ZlRXZlbnRMaXN0ZW5lclxuXG5sZXQgY3JlYXRlQ3VzdG9tRXZlbnQgPSBEb20uY3JlYXRlQ3VzdG9tRXZlbnRcblxuY2xhc3MgdHlwZSBbJ25vZGVdIGNvbGxlY3Rpb24gPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBuYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBodG1sRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBoZWFkRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgcHJvZmlsZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxpbmtFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNyb3Nzb3JpZ2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVkaWEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmV2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGl0bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbWV0YUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNvbnRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGh0dHBFcXVpdiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2NoZW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYmFzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHN0eWxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBib2R5RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBmb3JtRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZWxlbWVudHMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2VwdENoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZW5jdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX21ldGhvZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdWJtaXQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVzZXQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25zdWJtaXQgOiAoJ3NlbGYgdCwgc3VibWl0RXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdEdyb3VwRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBsYWJlbCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBvcHRHcm91cEVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVmYXVsdFNlbGVjdGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgdGV4dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3RlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2VsZWN0RWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VsZWN0ZWRJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcHRpb25zIDogb3B0aW9uRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG11bHRpcGxlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2l6ZSA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgYWRkIDogI29wdEdyb3VwRWxlbWVudCB0IC0+ICNvcHRHcm91cEVsZW1lbnQgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZSA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jaGFuZ2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmlucHV0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGlucHV0RWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkZWZhdWx0VmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlZmF1bHRDaGVja2VkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2NlcHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hlY2tlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbWF4TGVuZ3RoIDogaW50IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaXplIDogaW50IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhY2Vob2xkZXIgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25EaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvblN0YXJ0IDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRW5kIDogaW50IHByb3BcblxuICBtZXRob2Qgb25zZWxlY3QgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0ZXh0QXJlYUVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGVmYXVsdFZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbHMgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWRPbmx5IDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRW5kIDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uU3RhcnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYWNlaG9sZGVyIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWxlY3QgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBidXR0b25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBsYWJlbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHRtbEZvciA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGZpZWxkU2V0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxlZ2VuZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHVMaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBvTGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgZExpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGxpRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBkaXZFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHBhcmFncmFwaEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaGVhZGluZ0VsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgcXVvdGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjaXRlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcHJlRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBickVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaHJFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIG1vZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNpdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRhdGVUaW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYW5jaG9yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb29yZHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRvd25sb2FkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNoYXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbWFnZUVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaXNNYXAgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIG5hdHVyYWxXaWR0aCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYXR1cmFsSGVpZ2h0IDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbXBsZXRlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgb25sb2FkIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYWJvcnQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb2JqZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXJjaGl2ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29kZUJhc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvZGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZWNsYXJlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGFuZGJ5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwYXJhbUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXJlYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb29yZHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5vSHJlZiA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNoYXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG1hcEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFyZWFzIDogYXJlYUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNjcmlwdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlZmVyIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXN5bmMgOiBib29sIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZW1iZWRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDZWxsRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2VsbEluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWJiciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGF4aXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sU3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlYWRlcnMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd1NwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY29wZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVSb3dFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCByb3dJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlY3Rpb25Sb3dJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNlbGxzIDogdGFibGVDZWxsRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGluc2VydENlbGwgOiBpbnQgLT4gdGFibGVDZWxsRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ2VsbCA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ29sRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZVNlY3Rpb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiB0YWJsZVJvd0VsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5zZXJ0Um93IDogaW50IC0+IHRhYmxlUm93RWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUm93IDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDYXB0aW9uRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSB0YWJsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNhcHRpb24gOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCB0SGVhZCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHRGb290IDogdGFibGVTZWN0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IHRhYmxlUm93RWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0Qm9kaWVzIDogdGFibGVTZWN0aW9uRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjZWxsUGFkZGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2VsbFNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZyYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBydWxlcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3VtbWFyeSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZVRIZWFkIDogdGFibGVTZWN0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVEhlYWQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVEZvb3QgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVURm9vdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVDYXB0aW9uIDogdGFibGVDYXB0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ2FwdGlvbiA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnRSb3cgOiBpbnQgLT4gdGFibGVSb3dFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSb3cgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0aW1lUmFuZ2VzID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGVuZF8gOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuZW5kXG5cbnR5cGUgbmV0d29ya1N0YXRlID1cbiAgfCBORVRXT1JLX0VNUFRZXG4gIHwgTkVUV09SS19JRExFXG4gIHwgTkVUV09SS19MT0FESU5HXG4gIHwgTkVUV09SS19OT19TT1VSQ0VcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBIQVZFX05PVEhJTkdcbiAgfCBIQVZFX01FVEFEQVRBXG4gIHwgSEFWRV9DVVJSRU5UX0RBVEFcbiAgfCBIQVZFX0ZVVFVSRV9EQVRBXG4gIHwgSEFWRV9FTk9VR0hfREFUQVxuXG4oKiBodHRwOi8vd3d3Lnczc2Nob29scy5jb20vdGFncy9yZWZfYXZfZG9tLmFzcCAqKVxuKCogb25seSBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgYWxsIGJyb3dzZXIuIChJRTkrKSAqKVxuY2xhc3MgdHlwZSBtZWRpYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNhblBsYXlUeXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBsb2FkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBsYXkgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGF1c2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYXV0b3BsYXkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBidWZmZXJlZCA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRyb2xzIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgY3VycmVudFNyYyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFRpbWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR1cmF0aW9uIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvb3AgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYWdyb3VwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtdXRlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5ldHdvcmtTdGF0ZV9pbnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXR3b3JrU3RhdGUgOiBuZXR3b3JrU3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXVzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGF5YmFja1JhdGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHBsYXllZCA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZWxvYWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGVfaW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWVrYWJsZSA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlZWtpbmcgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZvbHVtZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgb25jYW5wbGF5IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jYW5wbGF5dGhyb3VnaCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHVyYXRpb25jaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVtcHRpZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVuZGVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZWRkYXRhIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZWRtZXRhZGF0YSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZHN0YXJ0IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wYXVzZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGxheSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGxheWluZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucmF0ZWNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Vla2VkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWVraW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zdGFsbGVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zdXNwZW5kIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb252b2x1bWVjaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndhaXRpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXVkaW9FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbWVkaWFFbGVtZW50XG5lbmRcblxuY2xhc3MgdHlwZSB2aWRlb0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtZWRpYUVsZW1lbnRcbmVuZFxuXG50eXBlIGNvbnRleHQgPSBqc19zdHJpbmcgdFxuXG5sZXQgXzJkXyA9IEpzLnN0cmluZyBcIjJkXCJcblxudHlwZSBjYW52YXNQYXR0ZXJuXG5cbmNsYXNzIHR5cGUgY2FudmFzRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgd2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0b0RhdGFVUkwgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0YVVSTF90eXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGFVUkxfdHlwZV9jb21wcmVzc2lvbiA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29udGV4dCA6IGpzX3N0cmluZyB0IC0+IGNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB0IG1ldGhcbmVuZFxuXG5hbmQgY2FudmFzUmVuZGVyaW5nQ29udGV4dDJEID0gb2JqZWN0XG4gIG1ldGhvZCBjYW52YXMgOiBjYW52YXNFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzYXZlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlc3RvcmUgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2NhbGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUcmFuc2Zvcm0gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnbG9iYWxBbHBoYSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZSA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlX2dyYWRpZW50IDogY2FudmFzR3JhZGllbnQgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZV9wYXR0ZXJuIDogY2FudmFzUGF0dGVybiB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZSA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZV9ncmFkaWVudCA6IGNhbnZhc0dyYWRpZW50IHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlX3BhdHRlcm4gOiBjYW52YXNQYXR0ZXJuIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY3JlYXRlTGluZWFyR3JhZGllbnQgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGNhbnZhc0dyYWRpZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSYWRpYWxHcmFkaWVudCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gY2FudmFzR3JhZGllbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm4gOiBpbWFnZUVsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuX2Zyb21DYW52YXMgOiBjYW52YXNFbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybl9mcm9tVmlkZW8gOiB2aWRlb0VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lV2lkdGggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVDYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVKb2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaXRlckxpbWl0IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dPZmZzZXRYIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dPZmZzZXRZIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dCbHVyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xlYXJSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGxSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmVnaW5QYXRoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlUGF0aCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtb3ZlVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbGluZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHF1YWRyYXRpY0N1cnZlVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmV6aWVyQ3VydmVUbyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFyY1RvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXJjIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVsbGlwc2UgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsaXAgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaXNQb2ludEluUGF0aCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdGb2N1c1JpbmcgOiAjZWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBmb250IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRCYXNlbGluZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsbFRleHQgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbFRleHRfd2l0aFdpZHRoIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVRleHQgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlVGV4dF93aXRoV2lkdGggOlxuICAgIGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtZWFzdXJlVGV4dCA6IGpzX3N0cmluZyB0IC0+IHRleHRNZXRyaWNzIHQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2UgOiBpbWFnZUVsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX3dpdGhTaXplIDpcbiAgICBpbWFnZUVsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGwgOlxuICAgICAgIGltYWdlRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbUNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21DYW52YXNXaXRoU2l6ZSA6XG4gICAgY2FudmFzRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbEZyb21DYW52YXMgOlxuICAgICAgIGNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21WaWRlb1dpdGhWaWRlbyA6XG4gICAgdmlkZW9FbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tVmlkZW9XaXRoU2l6ZSA6XG4gICAgdmlkZW9FbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsRnJvbVZpZGVvIDpcbiAgICAgICB2aWRlb0VsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlSW1hZ2VEYXRhIDogaW50IC0+IGludCAtPiBpbWFnZURhdGEgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEltYWdlRGF0YSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGltYWdlRGF0YSB0IG1ldGhcblxuICBtZXRob2QgcHV0SW1hZ2VEYXRhIDogaW1hZ2VEYXRhIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIGNhbnZhc0dyYWRpZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBhZGRDb2xvclN0b3AgOiBudW1iZXJfdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgdGV4dE1ldHJpY3MgPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBpbWFnZURhdGEgPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YSA6IGNhbnZhc1BpeGVsQXJyYXkgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNhbnZhc1BpeGVsQXJyYXkgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuZXh0ZXJuYWwgcGl4ZWxfZ2V0IDogY2FudmFzUGl4ZWxBcnJheSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfanNfZ2V0XCJcblxuZXh0ZXJuYWwgcGl4ZWxfc2V0IDogY2FudmFzUGl4ZWxBcnJheSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG5jbGFzcyB0eXBlIHJhbmdlID0gb2JqZWN0XG4gIG1ldGhvZCBjb2xsYXBzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydE9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZE9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0Q29udGFpbmVyIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZENvbnRhaW5lciA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRTdGFydCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U3RhcnRCZWZvcmUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmRCZWZvcmUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTdGFydEFmdGVyIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kQWZ0ZXIgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3ROb2RlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0Tm9kZUNvbnRlbnRzIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2UgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lQ29udGVudHMgOiBEb20uZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgZXh0cmFjdENvbnRlbnRzIDogRG9tLmRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNvbnRlbnRzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydE5vZGUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdXJyb3VuZENvbnRlbnRzIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvbmVSYW5nZSA6IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG4oKiogSW5mb3JtYXRpb24gb24gY3VycmVudCBzZWxlY3Rpb24gKilcbmNsYXNzIHR5cGUgc2VsZWN0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBhbmNob3JOb2RlIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuY2hvck9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvY3VzTm9kZSA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb2N1c09mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzQ29sbGFwc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmFuZ2VDb3VudCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFJhbmdlQXQgOiBpbnQgLT4gcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBleHRlbmQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbW9kaWZ5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlVG9TdGFydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZVRvRW5kIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdEFsbENoaWxkcmVuIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWRkUmFuZ2UgOiByYW5nZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVSYW5nZSA6IHJhbmdlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUFsbFJhbmdlcyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVGcm9tRG9jdW1lbnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udGFpbnNOb2RlIDogRG9tLm5vZGUgdCAtPiBib29sIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZG9jdW1lbnRcblxuICBpbmhlcml0IG5vZGVTZWxlY3RvclxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlZmVycmVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkb21haW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlYWQgOiBoZWFkRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgYm9keSA6IGJvZHlFbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCBkb2N1bWVudEVsZW1lbnQgOiBodG1sRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW1hZ2VzIDogaW1hZ2VFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcGxldHMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxpbmtzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb3JtcyA6IGZvcm1FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuY2hvcnMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvb2tpZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVzaWduTW9kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3Blbl8gOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgd3JpdGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXhlY0NvbW1hbmQgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSYW5nZSA6IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGFjdGl2ZUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGlkZGVuIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25mdWxsc2NyZWVuY2hhbmdlIDogKGRvY3VtZW50IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZSA6IChkb2N1bWVudCB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG50eXBlIGludGVydmFsX2lkXG5cbnR5cGUgdGltZW91dF9pZFxuXG50eXBlIGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkXG5cbmNsYXNzIHR5cGUgbG9jYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHByb3RvY29sIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBob3N0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBob3N0bmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3JpZ2luIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcG9ydCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGF0aG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlYXJjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGFzaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXNzaWduIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2UgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVsb2FkIDogdW5pdCBtZXRoXG5lbmRcblxubGV0IGxvY2F0aW9uX29yaWdpbiAobG9jIDogbG9jYXRpb24gdCkgPVxuICBPcHRkZWYuY2FzZVxuICAgIGxvYyMjLm9yaWdpblxuICAgIChmdW4gKCkgLT5cbiAgICAgIGxldCBwcm90b2NvbCA9IGxvYyMjLnByb3RvY29sIGluXG4gICAgICBsZXQgaG9zdG5hbWUgPSBsb2MjIy5ob3N0bmFtZSBpblxuICAgICAgbGV0IHBvcnQgPSBsb2MjIy5wb3J0IGluXG4gICAgICBpZiBwcm90b2NvbCMjLmxlbmd0aCA9IDAgJiYgaG9zdG5hbWUjIy5sZW5ndGggPSAwXG4gICAgICB0aGVuIEpzLnN0cmluZyBcIlwiXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBvcmlnaW4gPSBwcm90b2NvbCMjY29uY2F0XzIgKEpzLnN0cmluZyBcIi8vXCIpIGhvc3RuYW1lIGluXG4gICAgICAgIGlmIHBvcnQjIy5sZW5ndGggPiAwIHRoZW4gb3JpZ2luIyNjb25jYXRfMiAoSnMuc3RyaW5nIFwiOlwiKSBsb2MjIy5wb3J0IGVsc2Ugb3JpZ2luKVxuICAgIChmdW4gbyAtPiBvKVxuXG5jbGFzcyB0eXBlIGhpc3RvcnkgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXRlIDogSnMuVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdvIDogaW50IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmFjayA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb3J3YXJkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hTdGF0ZSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VTdGF0ZSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB1bmRvTWFuYWdlciA9IG9iamVjdCBlbmRcblxuY2xhc3MgdHlwZSBuYXZpZ2F0b3IgPSBvYmplY3RcbiAgbWV0aG9kIGFwcENvZGVOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBWZXJzaW9uIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb29raWVFbmFibGVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25MaW5lIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhdGZvcm0gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZlbmRvciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlckFnZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYW5ndWFnZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZXJMYW5ndWFnZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1heFRvdWNoUG9pbnRzIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNjcmVlbiA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdmFpbFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXZhaWxIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXBwbGljYXRpb25DYWNoZSA9IG9iamVjdFxuICBtZXRob2Qgc3RhdHVzIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXBkYXRlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN3YXBDYWNoZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbmNoZWNraW5nIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm5vdXBkYXRlIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmRvd25sb2FkaW5nIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnByb2dyZXNzIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnVwZGF0ZXJlYWR5IDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNhY2hlZCA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vYnNvbGV0ZSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxuY2xhc3MgdHlwZSBfVVJMID0gb2JqZWN0XG4gIG1ldGhvZCBjcmVhdGVPYmplY3RVUkwgOiAjRmlsZS5ibG9iIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZXZva2VPYmplY3RVUkwgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHdpbmRvdyA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIGRvY3VtZW50IDogZG9jdW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcGxpY2F0aW9uQ2FjaGUgOiBhcHBsaWNhdGlvbkNhY2hlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoaXN0b3J5IDogaGlzdG9yeSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdW5kb01hbmFnZXIgOiB1bmRvTWFuYWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmF2aWdhdG9yIDogbmF2aWdhdG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRTZWxlY3Rpb24gOiBzZWxlY3Rpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0b3AgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9jdXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYmx1ciA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGwgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGxCeSA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlc3Npb25TdG9yYWdlIDogc3RvcmFnZSB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvY2FsU3RvcmFnZSA6IHN0b3JhZ2UgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b3AgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudCA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnJhbWVFbGVtZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9wZW5fIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHdpbmRvdyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGFsZXJ0IDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbmZpcm0gOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBwcm9tcHQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBwcmludCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnRlcnZhbCA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IG51bWJlcl90IC0+IGludGVydmFsX2lkIG1ldGhcblxuICBtZXRob2QgY2xlYXJJbnRlcnZhbCA6IGludGVydmFsX2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUaW1lb3V0IDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gbnVtYmVyX3QgLT4gdGltZW91dF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyVGltZW91dCA6IHRpbWVvdXRfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVlc3RBbmltYXRpb25GcmFtZSA6XG4gICAgKG51bWJlcl90IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkIG1ldGhcblxuICBtZXRob2QgY2FuY2VsQW5pbWF0aW9uRnJhbWUgOiBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2NyZWVuIDogc2NyZWVuIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbm5lcldpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5uZXJIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvdXRlcldpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3V0ZXJIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFN0eWxlIDogI2VsZW1lbnQgdCAtPiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFN0eWxlX3BzZXVkb0VsdCA6XG4gICAgI2VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBhdG9iIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBidG9hIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb251bmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25iZWZvcmV1bmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ibHVyIDogKHdpbmRvdyB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICh3aW5kb3cgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucmVzaXplIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub3JpZW50YXRpb25jaGFuZ2UgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25wb3BzdGF0ZSA6ICh3aW5kb3cgdCwgcG9wU3RhdGVFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaGFzaGNoYW5nZSA6ICh3aW5kb3cgdCwgaGFzaENoYW5nZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vbmxpbmUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ub2ZmbGluZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgX1VSTCA6IF9VUkwgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRldmljZVBpeGVsUmF0aW8gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHdpbmRvdyA6IHdpbmRvdyB0ID0gSnMuVW5zYWZlLmdsb2JhbFxuXG4oKiBUaGUgdG9wbGV2ZWwgb2JqZWN0ICopXG5cbmxldCBkb2N1bWVudCA9IHdpbmRvdyMjLmRvY3VtZW50XG5cbmxldCBnZXRFbGVtZW50QnlJZCBpZCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAoZnVuIHBub2RlIC0+IHBub2RlKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfZXhuIGlkID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gZmFpbHdpdGggKFByaW50Zi5zcHJpbnRmIFwiZ2V0RWxlbWVudEJ5SWRfZXhuOiAlUyBub3QgZm91bmRcIiBpZCkpXG4gICAgKGZ1biBwbm9kZSAtPiBwbm9kZSlcblxubGV0IGdldEVsZW1lbnRCeUlkX29wdCBpZCA9IEpzLk9wdC50b19vcHRpb24gKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcblxubGV0IGdldEVsZW1lbnRCeUlkX2NvZXJjZSBpZCBjb2VyY2UgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiBOb25lKVxuICAgIChmdW4gZSAtPiBKcy5PcHQudG9fb3B0aW9uIChjb2VyY2UgZSkpXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIGZyYW1lU2V0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY29scyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGZyYW1lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZnJhbWVCb3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvbmdEZXNjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBub1Jlc2l6ZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpRnJhbWVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmcmFtZUJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9uZ0Rlc2MgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRXaW5kb3cgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqKiopXG5cbigqWFhYIFNob3VsZCBwcm92aWRlIGNyZWF0aW9uIGZ1bmN0aW9ucyBhIGxhIGxhYmxndGsuLi4gKilcblxubGV0IG9wdF9pdGVyIHggZiA9XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHYgLT4gZiB2XG5cbmxldCBjcmVhdGVFbGVtZW50IChkb2MgOiBkb2N1bWVudCB0KSBuYW1lID0gZG9jIyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgbmFtZSlcblxubGV0IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBuYW1lKVxuXG5sZXQgY3JlYXRlRWxlbWVudFN5bnRheCA9IHJlZiBgVW5rbm93blxuXG5sZXQgcmVjIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIGVsdCA9XG4gIGlmIFBvbHkuKF90eXBlID0gTm9uZSkgJiYgUG9seS4obmFtZSA9IE5vbmUpXG4gIHRoZW4gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgZWx0KVxuICBlbHNlXG4gICAgbWF0Y2ggIWNyZWF0ZUVsZW1lbnRTeW50YXggd2l0aFxuICAgIHwgYFN0YW5kYXJkIC0+XG4gICAgICAgIGxldCByZXMgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBlbHQpIGluXG4gICAgICAgIG9wdF9pdGVyIF90eXBlIChmdW4gdCAtPiByZXMjIy5fdHlwZSA6PSB0KTtcbiAgICAgICAgb3B0X2l0ZXIgbmFtZSAoZnVuIG4gLT4gcmVzIyMubmFtZSA6PSBuKTtcbiAgICAgICAgcmVzXG4gICAgfCBgRXh0ZW5kZWQgLT5cbiAgICAgICAgbGV0IGEgPSBuZXclanMgSnMuYXJyYXlfZW1wdHkgaW5cbiAgICAgICAgaWdub3JlIChhIyNwdXNoXzIgKEpzLnN0cmluZyBcIjxcIikgKEpzLnN0cmluZyBlbHQpKTtcbiAgICAgICAgb3B0X2l0ZXIgX3R5cGUgKGZ1biB0IC0+XG4gICAgICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMyAoSnMuc3RyaW5nIFwiIHR5cGU9XFxcIlwiKSAoaHRtbF9lc2NhcGUgdCkgKEpzLnN0cmluZyBcIlxcXCJcIikpKTtcbiAgICAgICAgb3B0X2l0ZXIgbmFtZSAoZnVuIG4gLT5cbiAgICAgICAgICAgIGlnbm9yZSAoYSMjcHVzaF8zIChKcy5zdHJpbmcgXCIgbmFtZT1cXFwiXCIpIChodG1sX2VzY2FwZSBuKSAoSnMuc3RyaW5nIFwiXFxcIlwiKSkpO1xuICAgICAgICBpZ25vcmUgKGEjI3B1c2ggKEpzLnN0cmluZyBcIj5cIikpO1xuICAgICAgICBKcy5VbnNhZmUuY29lcmNlIChkb2MjI2NyZWF0ZUVsZW1lbnQgKGEjI2pvaW4gKEpzLnN0cmluZyBcIlwiKSkpXG4gICAgfCBgVW5rbm93biAtPlxuICAgICAgICBjcmVhdGVFbGVtZW50U3ludGF4IDo9XG4gICAgICAgICAgaWYgdHJ5XG4gICAgICAgICAgICAgICBsZXQgZWwgOiBpbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgICAgICAgICAgICAgIEpzLlVuc2FmZS5jb2VyY2VcbiAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBcIjxpbnB1dCBuYW1lPVxcXCJ4XFxcIj5cIikpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgSnMuZXF1YWxzIGVsIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyBcImlucHV0XCIpXG4gICAgICAgICAgICAgICAmJiBKcy5lcXVhbHMgZWwjIy5uYW1lIChKcy5zdHJpbmcgXCJ4XCIpXG4gICAgICAgICAgICAgd2l0aCBfIC0+IGZhbHNlXG4gICAgICAgICAgdGhlbiBgRXh0ZW5kZWRcbiAgICAgICAgICBlbHNlIGBTdGFuZGFyZDtcbiAgICAgICAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgZWx0XG5cbmxldCBjcmVhdGVIdG1sIGRvYyA6IGh0bWxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImh0bWxcIlxuXG5sZXQgY3JlYXRlSGVhZCBkb2MgOiBoZWFkRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoZWFkXCJcblxubGV0IGNyZWF0ZUxpbmsgZG9jIDogbGlua0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGlua1wiXG5cbmxldCBjcmVhdGVUaXRsZSBkb2MgOiB0aXRsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGl0bGVcIlxuXG5sZXQgY3JlYXRlTWV0YSBkb2MgOiBtZXRhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtZXRhXCJcblxubGV0IGNyZWF0ZUJhc2UgZG9jIDogYmFzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYmFzZVwiXG5cbmxldCBjcmVhdGVTdHlsZSBkb2MgOiBzdHlsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3R5bGVcIlxuXG5sZXQgY3JlYXRlQm9keSBkb2MgOiBib2R5RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJib2R5XCJcblxubGV0IGNyZWF0ZUZvcm0gZG9jIDogZm9ybUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9ybVwiXG5cbmxldCBjcmVhdGVPcHRncm91cCBkb2MgOiBvcHRHcm91cEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib3B0Z3JvdXBcIlxuXG5sZXQgY3JlYXRlT3B0aW9uIGRvYyA6IG9wdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib3B0aW9uXCJcblxubGV0IGNyZWF0ZVNlbGVjdCA/X3R5cGUgP25hbWUgZG9jIDogc2VsZWN0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJzZWxlY3RcIlxuXG5sZXQgY3JlYXRlSW5wdXQgP190eXBlID9uYW1lIGRvYyA6IGlucHV0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJpbnB1dFwiXG5cbmxldCBjcmVhdGVUZXh0YXJlYSA/X3R5cGUgP25hbWUgZG9jIDogdGV4dEFyZWFFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcInRleHRhcmVhXCJcblxubGV0IGNyZWF0ZUJ1dHRvbiA/X3R5cGUgP25hbWUgZG9jIDogYnV0dG9uRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJidXR0b25cIlxuXG5sZXQgY3JlYXRlTGFiZWwgZG9jIDogbGFiZWxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxhYmVsXCJcblxubGV0IGNyZWF0ZUZpZWxkc2V0IGRvYyA6IGZpZWxkU2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmaWVsZHNldFwiXG5cbmxldCBjcmVhdGVMZWdlbmQgZG9jIDogbGVnZW5kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsZWdlbmRcIlxuXG5sZXQgY3JlYXRlVWwgZG9jIDogdUxpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInVsXCJcblxubGV0IGNyZWF0ZU9sIGRvYyA6IG9MaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvbFwiXG5cbmxldCBjcmVhdGVEbCBkb2MgOiBkTGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGxcIlxuXG5sZXQgY3JlYXRlTGkgZG9jIDogbGlFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpXCJcblxubGV0IGNyZWF0ZURpdiBkb2MgOiBkaXZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRpdlwiXG5cbmxldCBjcmVhdGVFbWJlZCBkb2MgOiBlbWJlZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZW1iZWRcIlxuXG5sZXQgY3JlYXRlUCBkb2MgOiBwYXJhZ3JhcGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBcIlxuXG5sZXQgY3JlYXRlSDEgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDFcIlxuXG5sZXQgY3JlYXRlSDIgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDJcIlxuXG5sZXQgY3JlYXRlSDMgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDNcIlxuXG5sZXQgY3JlYXRlSDQgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDRcIlxuXG5sZXQgY3JlYXRlSDUgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDVcIlxuXG5sZXQgY3JlYXRlSDYgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDZcIlxuXG5sZXQgY3JlYXRlUSBkb2MgOiBxdW90ZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicVwiXG5cbmxldCBjcmVhdGVCbG9ja3F1b3RlIGRvYyA6IHF1b3RlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJibG9ja3F1b3RlXCJcblxubGV0IGNyZWF0ZVByZSBkb2MgOiBwcmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInByZVwiXG5cbmxldCBjcmVhdGVCciBkb2MgOiBickVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYnJcIlxuXG5sZXQgY3JlYXRlSHIgZG9jIDogaHJFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhyXCJcblxubGV0IGNyZWF0ZUlucyBkb2MgOiBtb2RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImluc1wiXG5cbmxldCBjcmVhdGVEZWwgZG9jIDogbW9kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZWxcIlxuXG5sZXQgY3JlYXRlQSBkb2MgOiBhbmNob3JFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFcIlxuXG5sZXQgY3JlYXRlSW1nIGRvYyA6IGltYWdlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbWdcIlxuXG5sZXQgY3JlYXRlT2JqZWN0IGRvYyA6IG9iamVjdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib2JqZWN0XCJcblxubGV0IGNyZWF0ZVBhcmFtIGRvYyA6IHBhcmFtRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwYXJhbVwiXG5cbmxldCBjcmVhdGVNYXAgZG9jIDogbWFwRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtYXBcIlxuXG5sZXQgY3JlYXRlQXJlYSBkb2MgOiBhcmVhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhcmVhXCJcblxubGV0IGNyZWF0ZVNjcmlwdCBkb2MgOiBzY3JpcHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNjcmlwdFwiXG5cbmxldCBjcmVhdGVUYWJsZSBkb2MgOiB0YWJsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGFibGVcIlxuXG5sZXQgY3JlYXRlQ2FwdGlvbiBkb2MgOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNhcHRpb25cIlxuXG5sZXQgY3JlYXRlQ29sIGRvYyA6IHRhYmxlQ29sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xcIlxuXG5sZXQgY3JlYXRlQ29sZ3JvdXAgZG9jIDogdGFibGVDb2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbGdyb3VwXCJcblxubGV0IGNyZWF0ZVRoZWFkIGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGhlYWRcIlxuXG5sZXQgY3JlYXRlVGZvb3QgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0Zm9vdFwiXG5cbmxldCBjcmVhdGVUYm9keSBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRib2R5XCJcblxubGV0IGNyZWF0ZVRyIGRvYyA6IHRhYmxlUm93RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0clwiXG5cbmxldCBjcmVhdGVUaCBkb2MgOiB0YWJsZUNlbGxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRoXCJcblxubGV0IGNyZWF0ZVRkIGRvYyA6IHRhYmxlQ2VsbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGRcIlxuXG5sZXQgY3JlYXRlU3ViIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3ViXCJcblxubGV0IGNyZWF0ZVN1cCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInN1cFwiXG5cbmxldCBjcmVhdGVTcGFuIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3BhblwiXG5cbmxldCBjcmVhdGVUdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInR0XCJcblxubGV0IGNyZWF0ZUkgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJpXCJcblxubGV0IGNyZWF0ZUIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJiXCJcblxubGV0IGNyZWF0ZUJpZyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImJpZ1wiXG5cbmxldCBjcmVhdGVTbWFsbCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInNtYWxsXCJcblxubGV0IGNyZWF0ZUVtIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZW1cIlxuXG5sZXQgY3JlYXRlU3Ryb25nIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3Ryb25nXCJcblxubGV0IGNyZWF0ZUNpdGUgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJjaXRlXCJcblxubGV0IGNyZWF0ZURmbiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImRmblwiXG5cbmxldCBjcmVhdGVDb2RlIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiY29kZVwiXG5cbmxldCBjcmVhdGVTYW1wIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic2FtcFwiXG5cbmxldCBjcmVhdGVLYmQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJrYmRcIlxuXG5sZXQgY3JlYXRlVmFyIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwidmFyXCJcblxubGV0IGNyZWF0ZUFiYnIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJhYmJyXCJcblxubGV0IGNyZWF0ZURkIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZGRcIlxuXG5sZXQgY3JlYXRlRHQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkdFwiXG5cbmxldCBjcmVhdGVOb3NjcmlwdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcIm5vc2NyaXB0XCJcblxubGV0IGNyZWF0ZUFkZHJlc3MgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJhZGRyZXNzXCJcblxubGV0IGNyZWF0ZUZyYW1lc2V0IGRvYyA6IGZyYW1lU2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmcmFtZXNldFwiXG5cbmxldCBjcmVhdGVGcmFtZSBkb2MgOiBmcmFtZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZnJhbWVcIlxuXG5sZXQgY3JlYXRlSWZyYW1lIGRvYyA6IGlGcmFtZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaWZyYW1lXCJcblxubGV0IGNyZWF0ZUF1ZGlvIGRvYyA6IGF1ZGlvRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhdWRpb1wiXG5cbmxldCBjcmVhdGVWaWRlbyBkb2MgOiBhdWRpb0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmlkZW9cIlxuXG5leGNlcHRpb24gQ2FudmFzX25vdF9hdmFpbGFibGVcblxubGV0IGNyZWF0ZUNhbnZhcyBkb2MgOiBjYW52YXNFbGVtZW50IHQgPVxuICBsZXQgYyA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2FudmFzXCIgaW5cbiAgaWYgbm90IChPcHQudGVzdCBjIyMuZ2V0Q29udGV4dCkgdGhlbiByYWlzZSBDYW52YXNfbm90X2F2YWlsYWJsZTtcbiAgY1xuXG5sZXQgaHRtbF9lbGVtZW50IDogaHRtbEVsZW1lbnQgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0hUTUxFbGVtZW50XG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBsZXQgZWxlbWVudCA6ICNEb20ubm9kZSBKcy50IC0+IGVsZW1lbnQgSnMudCBKcy5vcHQgPVxuICAgIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKGRlZiBodG1sX2VsZW1lbnQpKVxuICAgIHRoZW5cbiAgICAgICgqIGllIDwgOSBkb2VzIG5vdCBoYXZlIEhUTUxFbGVtZW50OiB3ZSBoYXZlIHRvIGNoZWF0IHRvIGNoZWNrXG4gICAgICAgICB0aGF0IHNvbWV0aGluZyBpcyBhbiBodG1sIGVsZW1lbnQgKilcbiAgICAgIGZ1biBlIC0+XG4gICAgICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IChkZWYgKEpzLlVuc2FmZS5jb2VyY2UgZSkjIy5pbm5lckhUTUwpKVxuICAgICAgdGhlbiBKcy5udWxsXG4gICAgICBlbHNlIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlXG4gICAgICBmdW4gZSAtPlxuICAgICAgaWYgSnMuaW5zdGFuY2VvZiBlIGh0bWxfZWxlbWVudCB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IHVuc2FmZUNvZXJjZSB0YWcgKGUgOiAjZWxlbWVudCB0KSA9XG4gICAgaWYgSnMuZXF1YWxzIGUjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSAoSnMuc3RyaW5nIHRhZylcbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYSBlID0gdW5zYWZlQ29lcmNlIFwiYVwiIGVcblxuICBsZXQgYXJlYSBlID0gdW5zYWZlQ29lcmNlIFwiYXJlYVwiIGVcblxuICBsZXQgYmFzZSBlID0gdW5zYWZlQ29lcmNlIFwiYmFzZVwiIGVcblxuICBsZXQgYmxvY2txdW90ZSBlID0gdW5zYWZlQ29lcmNlIFwiYmxvY2txdW90ZVwiIGVcblxuICBsZXQgYm9keSBlID0gdW5zYWZlQ29lcmNlIFwiYm9keVwiIGVcblxuICBsZXQgYnIgZSA9IHVuc2FmZUNvZXJjZSBcImJyXCIgZVxuXG4gIGxldCBidXR0b24gZSA9IHVuc2FmZUNvZXJjZSBcImJ1dHRvblwiIGVcblxuICBsZXQgY2FudmFzIGUgPSB1bnNhZmVDb2VyY2UgXCJjYW52YXNcIiBlXG5cbiAgbGV0IGNhcHRpb24gZSA9IHVuc2FmZUNvZXJjZSBcImNhcHRpb25cIiBlXG5cbiAgbGV0IGNvbCBlID0gdW5zYWZlQ29lcmNlIFwiY29sXCIgZVxuXG4gIGxldCBjb2xncm91cCBlID0gdW5zYWZlQ29lcmNlIFwiY29sZ3JvdXBcIiBlXG5cbiAgbGV0IGRlbCBlID0gdW5zYWZlQ29lcmNlIFwiZGVsXCIgZVxuXG4gIGxldCBkaXYgZSA9IHVuc2FmZUNvZXJjZSBcImRpdlwiIGVcblxuICBsZXQgZGwgZSA9IHVuc2FmZUNvZXJjZSBcImRsXCIgZVxuXG4gIGxldCBmaWVsZHNldCBlID0gdW5zYWZlQ29lcmNlIFwiZmllbGRzZXRcIiBlXG5cbiAgbGV0IGVtYmVkIGUgPSB1bnNhZmVDb2VyY2UgXCJlbWJlZFwiIGVcblxuICBsZXQgZm9ybSBlID0gdW5zYWZlQ29lcmNlIFwiZm9ybVwiIGVcblxuICBsZXQgZnJhbWVzZXQgZSA9IHVuc2FmZUNvZXJjZSBcImZyYW1lc2V0XCIgZVxuXG4gIGxldCBmcmFtZSBlID0gdW5zYWZlQ29lcmNlIFwiZnJhbWVcIiBlXG5cbiAgbGV0IGgxIGUgPSB1bnNhZmVDb2VyY2UgXCJoMVwiIGVcblxuICBsZXQgaDIgZSA9IHVuc2FmZUNvZXJjZSBcImgyXCIgZVxuXG4gIGxldCBoMyBlID0gdW5zYWZlQ29lcmNlIFwiaDNcIiBlXG5cbiAgbGV0IGg0IGUgPSB1bnNhZmVDb2VyY2UgXCJoNFwiIGVcblxuICBsZXQgaDUgZSA9IHVuc2FmZUNvZXJjZSBcImg1XCIgZVxuXG4gIGxldCBoNiBlID0gdW5zYWZlQ29lcmNlIFwiaDZcIiBlXG5cbiAgbGV0IGhlYWQgZSA9IHVuc2FmZUNvZXJjZSBcImhlYWRcIiBlXG5cbiAgbGV0IGhyIGUgPSB1bnNhZmVDb2VyY2UgXCJoclwiIGVcblxuICBsZXQgaHRtbCBlID0gdW5zYWZlQ29lcmNlIFwiaHRtbFwiIGVcblxuICBsZXQgaWZyYW1lIGUgPSB1bnNhZmVDb2VyY2UgXCJpZnJhbWVcIiBlXG5cbiAgbGV0IGltZyBlID0gdW5zYWZlQ29lcmNlIFwiaW1nXCIgZVxuXG4gIGxldCBpbnB1dCBlID0gdW5zYWZlQ29lcmNlIFwiaW5wdXRcIiBlXG5cbiAgbGV0IGlucyBlID0gdW5zYWZlQ29lcmNlIFwiaW5zXCIgZVxuXG4gIGxldCBsYWJlbCBlID0gdW5zYWZlQ29lcmNlIFwibGFiZWxcIiBlXG5cbiAgbGV0IGxlZ2VuZCBlID0gdW5zYWZlQ29lcmNlIFwibGVnZW5kXCIgZVxuXG4gIGxldCBsaSBlID0gdW5zYWZlQ29lcmNlIFwibGlcIiBlXG5cbiAgbGV0IGxpbmsgZSA9IHVuc2FmZUNvZXJjZSBcImxpbmtcIiBlXG5cbiAgbGV0IG1hcCBlID0gdW5zYWZlQ29lcmNlIFwibWFwXCIgZVxuXG4gIGxldCBtZXRhIGUgPSB1bnNhZmVDb2VyY2UgXCJtZXRhXCIgZVxuXG4gIGxldCBfb2JqZWN0IGUgPSB1bnNhZmVDb2VyY2UgXCJvYmplY3RcIiBlXG5cbiAgbGV0IG9sIGUgPSB1bnNhZmVDb2VyY2UgXCJvbFwiIGVcblxuICBsZXQgb3B0Z3JvdXAgZSA9IHVuc2FmZUNvZXJjZSBcIm9wdGdyb3VwXCIgZVxuXG4gIGxldCBvcHRpb24gZSA9IHVuc2FmZUNvZXJjZSBcIm9wdGlvblwiIGVcblxuICBsZXQgcCBlID0gdW5zYWZlQ29lcmNlIFwicFwiIGVcblxuICBsZXQgcGFyYW0gZSA9IHVuc2FmZUNvZXJjZSBcInBhcmFtXCIgZVxuXG4gIGxldCBwcmUgZSA9IHVuc2FmZUNvZXJjZSBcInByZVwiIGVcblxuICBsZXQgcSBlID0gdW5zYWZlQ29lcmNlIFwicVwiIGVcblxuICBsZXQgc2NyaXB0IGUgPSB1bnNhZmVDb2VyY2UgXCJzY3JpcHRcIiBlXG5cbiAgbGV0IHNlbGVjdCBlID0gdW5zYWZlQ29lcmNlIFwic2VsZWN0XCIgZVxuXG4gIGxldCBzdHlsZSBlID0gdW5zYWZlQ29lcmNlIFwic3R5bGVcIiBlXG5cbiAgbGV0IHRhYmxlIGUgPSB1bnNhZmVDb2VyY2UgXCJ0YWJsZVwiIGVcblxuICBsZXQgdGJvZHkgZSA9IHVuc2FmZUNvZXJjZSBcInRib2R5XCIgZVxuXG4gIGxldCB0ZCBlID0gdW5zYWZlQ29lcmNlIFwidGRcIiBlXG5cbiAgbGV0IHRleHRhcmVhIGUgPSB1bnNhZmVDb2VyY2UgXCJ0ZXh0YXJlYVwiIGVcblxuICBsZXQgdGZvb3QgZSA9IHVuc2FmZUNvZXJjZSBcInRmb290XCIgZVxuXG4gIGxldCB0aCBlID0gdW5zYWZlQ29lcmNlIFwidGhcIiBlXG5cbiAgbGV0IHRoZWFkIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aGVhZFwiIGVcblxuICBsZXQgdGl0bGUgZSA9IHVuc2FmZUNvZXJjZSBcInRpdGxlXCIgZVxuXG4gIGxldCB0ciBlID0gdW5zYWZlQ29lcmNlIFwidHJcIiBlXG5cbiAgbGV0IHVsIGUgPSB1bnNhZmVDb2VyY2UgXCJ1bFwiIGVcblxuICBsZXQgYXVkaW8gZSA9IHVuc2FmZUNvZXJjZSBcImF1ZGlvXCIgZVxuXG4gIGxldCB2aWRlbyBlID0gdW5zYWZlQ29lcmNlIFwidmlkZW9cIiBlXG5cbiAgbGV0IHVuc2FmZUNvZXJjZUV2ZW50IGNvbnN0ciAoZXYgOiAjZXZlbnQgdCkgPVxuICAgIGlmIEpzLk9wdGRlZi50ZXN0IChkZWYgY29uc3RyKSAmJiBKcy5pbnN0YW5jZW9mIGV2IGNvbnN0clxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBldilcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgbW91c2VFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTW91c2VFdmVudCBldlxuXG4gIGxldCBrZXlib2FyZEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9LZXlib2FyZEV2ZW50IGV2XG5cbiAgbGV0IHdoZWVsRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX1doZWVsRXZlbnQgZXZcblxuICBsZXQgbW91c2VTY3JvbGxFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTW91c2VTY3JvbGxFdmVudCBldlxuXG4gIGxldCBwb3BTdGF0ZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Qb3BTdGF0ZUV2ZW50IGV2XG5cbiAgbGV0IG1lc3NhZ2VFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTWVzc2FnZUV2ZW50IGV2XG5lbmRcblxuKCoqKiopXG5cbmxldCBldmVudFRhcmdldCA9IERvbS5ldmVudFRhcmdldFxuXG5sZXQgZXZlbnRSZWxhdGVkVGFyZ2V0IChlIDogI21vdXNlRXZlbnQgdCkgPVxuICBPcHRkZWYuZ2V0IGUjIy5yZWxhdGVkVGFyZ2V0IChmdW4gKCkgLT5cbiAgICAgIG1hdGNoIEpzLnRvX3N0cmluZyBlIyMuX3R5cGUgd2l0aFxuICAgICAgfCBcIm1vdXNlb3ZlclwiIC0+IE9wdGRlZi5nZXQgZSMjLmZyb21FbGVtZW50IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgfCBcIm1vdXNlb3V0XCIgLT4gT3B0ZGVmLmdldCBlIyMudG9FbGVtZW50IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgfCBfIC0+IEpzLm51bGwpXG5cbmxldCBldmVudEFic29sdXRlUG9zaXRpb24nIChlIDogI21vdXNlRXZlbnQgdCkgPVxuICBsZXQgYm9keSA9IGRvY3VtZW50IyMuYm9keSBpblxuICBsZXQgaHRtbCA9IGRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IGluXG4gICggZSMjLmNsaWVudFggKyBib2R5IyMuc2Nyb2xsTGVmdCArIGh0bWwjIy5zY3JvbGxMZWZ0XG4gICwgZSMjLmNsaWVudFkgKyBib2R5IyMuc2Nyb2xsVG9wICsgaHRtbCMjLnNjcm9sbFRvcCApXG5cbmxldCBldmVudEFic29sdXRlUG9zaXRpb24gKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIE9wdGRlZi5jYXNlXG4gICAgZSMjLnBhZ2VYXG4gICAgKGZ1biAoKSAtPiBldmVudEFic29sdXRlUG9zaXRpb24nIGUpXG4gICAgKGZ1biB4IC0+IE9wdGRlZi5jYXNlIGUjIy5wYWdlWSAoZnVuICgpIC0+IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgZSkgKGZ1biB5IC0+IHgsIHkpKVxuXG5sZXQgZWxlbWVudENsaWVudFBvc2l0aW9uIChlIDogI2VsZW1lbnQgdCkgPVxuICBsZXQgciA9IGUjI2dldEJvdW5kaW5nQ2xpZW50UmVjdCBpblxuICBsZXQgYm9keSA9IGRvY3VtZW50IyMuYm9keSBpblxuICBsZXQgaHRtbCA9IGRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IGluXG4gICggdHJ1bmNhdGUgKEpzLnRvX2Zsb2F0IHIjIy5sZWZ0KSAtIGJvZHkjIy5jbGllbnRMZWZ0IC0gaHRtbCMjLmNsaWVudExlZnRcbiAgLCB0cnVuY2F0ZSAoSnMudG9fZmxvYXQgciMjLnRvcCkgLSBib2R5IyMuY2xpZW50VG9wIC0gaHRtbCMjLmNsaWVudFRvcCApXG5cbmxldCBnZXREb2N1bWVudFNjcm9sbCAoKSA9XG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgYm9keSMjLnNjcm9sbExlZnQgKyBodG1sIyMuc2Nyb2xsTGVmdCwgYm9keSMjLnNjcm9sbFRvcCArIGh0bWwjIy5zY3JvbGxUb3BcblxubGV0IGJ1dHRvblByZXNzZWQgKGV2IDogI21vdXNlRXZlbnQgSnMudCkgPVxuICBKcy5PcHRkZWYuY2FzZVxuICAgIGV2IyMud2hpY2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBtYXRjaCBldiMjLmJ1dHRvbiB3aXRoXG4gICAgICB8IDEgLT4gTGVmdF9idXR0b25cbiAgICAgIHwgMiAtPiBSaWdodF9idXR0b25cbiAgICAgIHwgNCAtPiBNaWRkbGVfYnV0dG9uXG4gICAgICB8IF8gLT4gTm9fYnV0dG9uKVxuICAgIChmdW4geCAtPiB4KVxuXG5sZXQgYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyBlID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGggPVxuICBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcbiAgICA/Y2FwdHVyZVxuICAgID9vbmNlXG4gICAgP3Bhc3NpdmVcbiAgICBlXG4gICAgRXZlbnQud2hlZWxcbiAgICAoaGFuZGxlciAoZnVuIChlIDogbW91c2V3aGVlbEV2ZW50IHQpIC0+XG4gICAgICAgICBsZXQgZHggPSAtT3B0ZGVmLmdldCBlIyMud2hlZWxEZWx0YVggKGZ1biAoKSAtPiAwKSAvIDQwIGluXG4gICAgICAgICBsZXQgZHkgPSAtT3B0ZGVmLmdldCBlIyMud2hlZWxEZWx0YVkgKGZ1biAoKSAtPiBlIyMud2hlZWxEZWx0YSkgLyA0MCBpblxuICAgICAgICAgaCAoZSA6PiBtb3VzZUV2ZW50IHQpIH5keCB+ZHkpKVxuXG5sZXQgYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXIgZSBoIGNhcHQgPVxuICBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIH5jYXB0dXJlOmNhcHQgZSBoXG5cbigqKioqKilcblxubW9kdWxlIEtleWJvYXJkX2NvZGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFVuaWRlbnRpZmllZFxuICAgICgqIEFscGhhYmV0aWMgQ2hhcmFjdGVycyAqKVxuICAgIHwgS2V5QVxuICAgIHwgS2V5QlxuICAgIHwgS2V5Q1xuICAgIHwgS2V5RFxuICAgIHwgS2V5RVxuICAgIHwgS2V5RlxuICAgIHwgS2V5R1xuICAgIHwgS2V5SFxuICAgIHwgS2V5SVxuICAgIHwgS2V5SlxuICAgIHwgS2V5S1xuICAgIHwgS2V5TFxuICAgIHwgS2V5TVxuICAgIHwgS2V5TlxuICAgIHwgS2V5T1xuICAgIHwgS2V5UFxuICAgIHwgS2V5UVxuICAgIHwgS2V5UlxuICAgIHwgS2V5U1xuICAgIHwgS2V5VFxuICAgIHwgS2V5VVxuICAgIHwgS2V5VlxuICAgIHwgS2V5V1xuICAgIHwgS2V5WFxuICAgIHwgS2V5WVxuICAgIHwgS2V5WlxuICAgICgqIERpZ2l0cyAqKVxuICAgIHwgRGlnaXQwXG4gICAgfCBEaWdpdDFcbiAgICB8IERpZ2l0MlxuICAgIHwgRGlnaXQzXG4gICAgfCBEaWdpdDRcbiAgICB8IERpZ2l0NVxuICAgIHwgRGlnaXQ2XG4gICAgfCBEaWdpdDdcbiAgICB8IERpZ2l0OFxuICAgIHwgRGlnaXQ5XG4gICAgfCBNaW51c1xuICAgIHwgRXF1YWxcbiAgICAoKiBXaGl0ZXNwYWNlICopXG4gICAgfCBUYWJcbiAgICB8IEVudGVyXG4gICAgfCBTcGFjZVxuICAgICgqIEVkaXRpbmcgKilcbiAgICB8IEVzY2FwZVxuICAgIHwgQmFja3NwYWNlXG4gICAgfCBJbnNlcnRcbiAgICB8IERlbGV0ZVxuICAgIHwgQ2Fwc0xvY2tcbiAgICAoKiBNaXNjIFByaW50YWJsZSAqKVxuICAgIHwgQnJhY2tldExlZnRcbiAgICB8IEJyYWNrZXRSaWdodFxuICAgIHwgU2VtaWNvbG9uXG4gICAgfCBRdW90ZVxuICAgIHwgQmFja3F1b3RlXG4gICAgfCBCYWNrc2xhc2hcbiAgICB8IENvbW1hXG4gICAgfCBQZXJpb2RcbiAgICB8IFNsYXNoXG4gICAgKCogRnVuY3Rpb24ga2V5cyAqKVxuICAgIHwgRjFcbiAgICB8IEYyXG4gICAgfCBGM1xuICAgIHwgRjRcbiAgICB8IEY1XG4gICAgfCBGNlxuICAgIHwgRjdcbiAgICB8IEY4XG4gICAgfCBGOVxuICAgIHwgRjEwXG4gICAgfCBGMTFcbiAgICB8IEYxMlxuICAgICgqIE51bXBhZCBrZXlzICopXG4gICAgfCBOdW1wYWQwXG4gICAgfCBOdW1wYWQxXG4gICAgfCBOdW1wYWQyXG4gICAgfCBOdW1wYWQzXG4gICAgfCBOdW1wYWQ0XG4gICAgfCBOdW1wYWQ1XG4gICAgfCBOdW1wYWQ2XG4gICAgfCBOdW1wYWQ3XG4gICAgfCBOdW1wYWQ4XG4gICAgfCBOdW1wYWQ5XG4gICAgfCBOdW1wYWRNdWx0aXBseVxuICAgIHwgTnVtcGFkU3VidHJhY3RcbiAgICB8IE51bXBhZEFkZFxuICAgIHwgTnVtcGFkRGVjaW1hbFxuICAgIHwgTnVtcGFkRXF1YWxcbiAgICB8IE51bXBhZEVudGVyXG4gICAgfCBOdW1wYWREaXZpZGVcbiAgICB8IE51bUxvY2tcbiAgICAoKiBNb2RpZmllciBrZXlzICopXG4gICAgfCBDb250cm9sTGVmdFxuICAgIHwgQ29udHJvbFJpZ2h0XG4gICAgfCBNZXRhTGVmdFxuICAgIHwgTWV0YVJpZ2h0XG4gICAgfCBTaGlmdExlZnRcbiAgICB8IFNoaWZ0UmlnaHRcbiAgICB8IEFsdExlZnRcbiAgICB8IEFsdFJpZ2h0XG4gICAgKCogQXJyb3cga2V5cyAqKVxuICAgIHwgQXJyb3dMZWZ0XG4gICAgfCBBcnJvd1JpZ2h0XG4gICAgfCBBcnJvd1VwXG4gICAgfCBBcnJvd0Rvd25cbiAgICAoKiBOYXZpZ2F0aW9uICopXG4gICAgfCBQYWdlVXBcbiAgICB8IFBhZ2VEb3duXG4gICAgfCBIb21lXG4gICAgfCBFbmRcbiAgICAoKiBTb3VuZCAqKVxuICAgIHwgVm9sdW1lTXV0ZVxuICAgIHwgVm9sdW1lRG93blxuICAgIHwgVm9sdW1lVXBcbiAgICAoKiBNZWRpYSAqKVxuICAgIHwgTWVkaWFUcmFja1ByZXZpb3VzXG4gICAgfCBNZWRpYVRyYWNrTmV4dFxuICAgIHwgTWVkaWFQbGF5UGF1c2VcbiAgICB8IE1lZGlhU3RvcFxuICAgICgqIEJyb3dzZXIgc3BlY2lhbCAqKVxuICAgIHwgQ29udGV4dE1lbnVcbiAgICB8IEJyb3dzZXJTZWFyY2hcbiAgICB8IEJyb3dzZXJIb21lXG4gICAgfCBCcm93c2VyRmF2b3JpdGVzXG4gICAgfCBCcm93c2VyUmVmcmVzaFxuICAgIHwgQnJvd3NlclN0b3BcbiAgICB8IEJyb3dzZXJGb3J3YXJkXG4gICAgfCBCcm93c2VyQmFja1xuICAgICgqIE1pc2MgKilcbiAgICB8IE9TTGVmdFxuICAgIHwgT1NSaWdodFxuICAgIHwgU2Nyb2xsTG9ja1xuICAgIHwgUHJpbnRTY3JlZW5cbiAgICB8IEludGxCYWNrc2xhc2hcbiAgICB8IEludGxZZW5cbiAgICB8IFBhdXNlXG5cbiAgbGV0IHRyeV9jb2RlIHYgPVxuICAgIG1hdGNoIEpzLnRvX3N0cmluZyB2IHdpdGhcbiAgICAoKiBBbHBoYWJldGljIENoYXJhY3RlcnMgKilcbiAgICB8IFwiS2V5QVwiIC0+IEtleUFcbiAgICB8IFwiS2V5QlwiIC0+IEtleUJcbiAgICB8IFwiS2V5Q1wiIC0+IEtleUNcbiAgICB8IFwiS2V5RFwiIC0+IEtleURcbiAgICB8IFwiS2V5RVwiIC0+IEtleUVcbiAgICB8IFwiS2V5RlwiIC0+IEtleUZcbiAgICB8IFwiS2V5R1wiIC0+IEtleUdcbiAgICB8IFwiS2V5SFwiIC0+IEtleUhcbiAgICB8IFwiS2V5SVwiIC0+IEtleUlcbiAgICB8IFwiS2V5SlwiIC0+IEtleUpcbiAgICB8IFwiS2V5S1wiIC0+IEtleUtcbiAgICB8IFwiS2V5TFwiIC0+IEtleUxcbiAgICB8IFwiS2V5TVwiIC0+IEtleU1cbiAgICB8IFwiS2V5TlwiIC0+IEtleU5cbiAgICB8IFwiS2V5T1wiIC0+IEtleU9cbiAgICB8IFwiS2V5UFwiIC0+IEtleVBcbiAgICB8IFwiS2V5UVwiIC0+IEtleVFcbiAgICB8IFwiS2V5UlwiIC0+IEtleVJcbiAgICB8IFwiS2V5U1wiIC0+IEtleVNcbiAgICB8IFwiS2V5VFwiIC0+IEtleVRcbiAgICB8IFwiS2V5VVwiIC0+IEtleVVcbiAgICB8IFwiS2V5VlwiIC0+IEtleVZcbiAgICB8IFwiS2V5V1wiIC0+IEtleVdcbiAgICB8IFwiS2V5WFwiIC0+IEtleVhcbiAgICB8IFwiS2V5WVwiIC0+IEtleVlcbiAgICB8IFwiS2V5WlwiIC0+IEtleVpcbiAgICAoKiBEaWdpdHMgKilcbiAgICB8IFwiRGlnaXQwXCIgLT4gRGlnaXQwXG4gICAgfCBcIkRpZ2l0MVwiIC0+IERpZ2l0MVxuICAgIHwgXCJEaWdpdDJcIiAtPiBEaWdpdDJcbiAgICB8IFwiRGlnaXQzXCIgLT4gRGlnaXQzXG4gICAgfCBcIkRpZ2l0NFwiIC0+IERpZ2l0NFxuICAgIHwgXCJEaWdpdDVcIiAtPiBEaWdpdDVcbiAgICB8IFwiRGlnaXQ2XCIgLT4gRGlnaXQ2XG4gICAgfCBcIkRpZ2l0N1wiIC0+IERpZ2l0N1xuICAgIHwgXCJEaWdpdDhcIiAtPiBEaWdpdDhcbiAgICB8IFwiRGlnaXQ5XCIgLT4gRGlnaXQ5XG4gICAgfCBcIk1pbnVzXCIgLT4gTWludXNcbiAgICB8IFwiRXF1YWxcIiAtPiBFcXVhbFxuICAgICgqIFdoaXRlc3BhY2UgKilcbiAgICB8IFwiVGFiXCIgLT4gVGFiXG4gICAgfCBcIkVudGVyXCIgLT4gRW50ZXJcbiAgICB8IFwiU3BhY2VcIiAtPiBTcGFjZVxuICAgICgqIEVkaXRpbmcgKilcbiAgICB8IFwiRXNjYXBlXCIgLT4gRXNjYXBlXG4gICAgfCBcIkJhY2tzcGFjZVwiIC0+IEJhY2tzcGFjZVxuICAgIHwgXCJJbnNlcnRcIiAtPiBJbnNlcnRcbiAgICB8IFwiRGVsZXRlXCIgLT4gRGVsZXRlXG4gICAgfCBcIkNhcHNMb2NrXCIgLT4gQ2Fwc0xvY2tcbiAgICAoKiBNaXNjIFByaW50YWJsZSAqKVxuICAgIHwgXCJCcmFja2V0TGVmdFwiIC0+IEJyYWNrZXRMZWZ0XG4gICAgfCBcIkJyYWNrZXRSaWdodFwiIC0+IEJyYWNrZXRSaWdodFxuICAgIHwgXCJTZW1pY29sb25cIiAtPiBTZW1pY29sb25cbiAgICB8IFwiUXVvdGVcIiAtPiBRdW90ZVxuICAgIHwgXCJCYWNrcXVvdGVcIiAtPiBCYWNrcXVvdGVcbiAgICB8IFwiQmFja3NsYXNoXCIgLT4gQmFja3NsYXNoXG4gICAgfCBcIkNvbW1hXCIgLT4gQ29tbWFcbiAgICB8IFwiUGVyaW9kXCIgLT4gUGVyaW9kXG4gICAgfCBcIlNsYXNoXCIgLT4gU2xhc2hcbiAgICAoKiBGdW5jdGlvbiBrZXlzICopXG4gICAgfCBcIkYxXCIgLT4gRjFcbiAgICB8IFwiRjJcIiAtPiBGMlxuICAgIHwgXCJGM1wiIC0+IEYzXG4gICAgfCBcIkY0XCIgLT4gRjRcbiAgICB8IFwiRjVcIiAtPiBGNVxuICAgIHwgXCJGNlwiIC0+IEY2XG4gICAgfCBcIkY3XCIgLT4gRjdcbiAgICB8IFwiRjhcIiAtPiBGOFxuICAgIHwgXCJGOVwiIC0+IEY5XG4gICAgfCBcIkYxMFwiIC0+IEYxMFxuICAgIHwgXCJGMTFcIiAtPiBGMTFcbiAgICB8IFwiRjEyXCIgLT4gRjEyXG4gICAgKCogTnVtcGFkIGtleXMgKilcbiAgICB8IFwiTnVtcGFkMFwiIC0+IE51bXBhZDBcbiAgICB8IFwiTnVtcGFkMVwiIC0+IE51bXBhZDFcbiAgICB8IFwiTnVtcGFkMlwiIC0+IE51bXBhZDJcbiAgICB8IFwiTnVtcGFkM1wiIC0+IE51bXBhZDNcbiAgICB8IFwiTnVtcGFkNFwiIC0+IE51bXBhZDRcbiAgICB8IFwiTnVtcGFkNVwiIC0+IE51bXBhZDVcbiAgICB8IFwiTnVtcGFkNlwiIC0+IE51bXBhZDZcbiAgICB8IFwiTnVtcGFkN1wiIC0+IE51bXBhZDdcbiAgICB8IFwiTnVtcGFkOFwiIC0+IE51bXBhZDhcbiAgICB8IFwiTnVtcGFkOVwiIC0+IE51bXBhZDlcbiAgICB8IFwiTnVtcGFkTXVsdGlwbHlcIiAtPiBOdW1wYWRNdWx0aXBseVxuICAgIHwgXCJOdW1wYWRTdWJ0cmFjdFwiIC0+IE51bXBhZFN1YnRyYWN0XG4gICAgfCBcIk51bXBhZEFkZFwiIC0+IE51bXBhZEFkZFxuICAgIHwgXCJOdW1wYWREZWNpbWFsXCIgLT4gTnVtcGFkRGVjaW1hbFxuICAgIHwgXCJOdW1wYWRFcXVhbFwiIC0+IE51bXBhZEVxdWFsXG4gICAgfCBcIk51bXBhZEVudGVyXCIgLT4gTnVtcGFkRW50ZXJcbiAgICB8IFwiTnVtcGFkRGl2aWRlXCIgLT4gTnVtcGFkRGl2aWRlXG4gICAgfCBcIk51bUxvY2tcIiAtPiBOdW1Mb2NrXG4gICAgKCogTW9kaWZpZXIga2V5cyAqKVxuICAgIHwgXCJDb250cm9sTGVmdFwiIC0+IENvbnRyb2xMZWZ0XG4gICAgfCBcIkNvbnRyb2xSaWdodFwiIC0+IENvbnRyb2xSaWdodFxuICAgIHwgXCJNZXRhTGVmdFwiIC0+IE1ldGFMZWZ0XG4gICAgfCBcIk1ldGFSaWdodFwiIC0+IE1ldGFSaWdodFxuICAgIHwgXCJTaGlmdExlZnRcIiAtPiBTaGlmdExlZnRcbiAgICB8IFwiU2hpZnRSaWdodFwiIC0+IFNoaWZ0UmlnaHRcbiAgICB8IFwiQWx0TGVmdFwiIC0+IEFsdExlZnRcbiAgICB8IFwiQWx0UmlnaHRcIiAtPiBBbHRSaWdodFxuICAgICgqIEFycm93IGtleXMgKilcbiAgICB8IFwiQXJyb3dMZWZ0XCIgLT4gQXJyb3dMZWZ0XG4gICAgfCBcIkFycm93UmlnaHRcIiAtPiBBcnJvd1JpZ2h0XG4gICAgfCBcIkFycm93VXBcIiAtPiBBcnJvd1VwXG4gICAgfCBcIkFycm93RG93blwiIC0+IEFycm93RG93blxuICAgICgqIE5hdmlnYXRpb24gKilcbiAgICB8IFwiUGFnZVVwXCIgLT4gUGFnZVVwXG4gICAgfCBcIlBhZ2VEb3duXCIgLT4gUGFnZURvd25cbiAgICB8IFwiSG9tZVwiIC0+IEhvbWVcbiAgICB8IFwiRW5kXCIgLT4gRW5kXG4gICAgKCogU291bmQgKilcbiAgICB8IFwiVm9sdW1lTXV0ZVwiIC0+IFZvbHVtZU11dGVcbiAgICB8IFwiVm9sdW1lRG93blwiIC0+IFZvbHVtZURvd25cbiAgICB8IFwiVm9sdW1lVXBcIiAtPiBWb2x1bWVVcFxuICAgICgqIE1lZGlhICopXG4gICAgfCBcIk1lZGlhVHJhY2tQcmV2aW91c1wiIC0+IE1lZGlhVHJhY2tQcmV2aW91c1xuICAgIHwgXCJNZWRpYVRyYWNrTmV4dFwiIC0+IE1lZGlhVHJhY2tOZXh0XG4gICAgfCBcIk1lZGlhUGxheVBhdXNlXCIgLT4gTWVkaWFQbGF5UGF1c2VcbiAgICB8IFwiTWVkaWFTdG9wXCIgLT4gTWVkaWFTdG9wXG4gICAgKCogQnJvd3NlciBzcGVjaWFsICopXG4gICAgfCBcIkNvbnRleHRNZW51XCIgLT4gQ29udGV4dE1lbnVcbiAgICB8IFwiQnJvd3NlclNlYXJjaFwiIC0+IEJyb3dzZXJTZWFyY2hcbiAgICB8IFwiQnJvd3NlckhvbWVcIiAtPiBCcm93c2VySG9tZVxuICAgIHwgXCJCcm93c2VyRmF2b3JpdGVzXCIgLT4gQnJvd3NlckZhdm9yaXRlc1xuICAgIHwgXCJCcm93c2VyUmVmcmVzaFwiIC0+IEJyb3dzZXJSZWZyZXNoXG4gICAgfCBcIkJyb3dzZXJTdG9wXCIgLT4gQnJvd3NlclN0b3BcbiAgICB8IFwiQnJvd3NlckZvcndhcmRcIiAtPiBCcm93c2VyRm9yd2FyZFxuICAgIHwgXCJCcm93c2VyQmFja1wiIC0+IEJyb3dzZXJCYWNrXG4gICAgKCogTWlzYyAqKVxuICAgIHwgXCJPU0xlZnRcIiAtPiBPU0xlZnRcbiAgICB8IFwiT1NSaWdodFwiIC0+IE9TUmlnaHRcbiAgICB8IFwiU2Nyb2xsTG9ja1wiIC0+IFNjcm9sbExvY2tcbiAgICB8IFwiUHJpbnRTY3JlZW5cIiAtPiBQcmludFNjcmVlblxuICAgIHwgXCJJbnRsQmFja3NsYXNoXCIgLT4gSW50bEJhY2tzbGFzaFxuICAgIHwgXCJJbnRsWWVuXCIgLT4gSW50bFllblxuICAgIHwgXCJQYXVzZVwiIC0+IFBhdXNlXG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbGVmdCA9IGZ1bmN0aW9uXG4gICAgfCAxNiAtPiBTaGlmdExlZnRcbiAgICB8IDE3IC0+IENvbnRyb2xMZWZ0XG4gICAgfCAxOCAtPiBBbHRMZWZ0XG4gICAgfCA5MSAtPiBNZXRhTGVmdFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX3JpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IDE2IC0+IFNoaWZ0UmlnaHRcbiAgICB8IDE3IC0+IENvbnRyb2xSaWdodFxuICAgIHwgMTggLT4gQWx0UmlnaHRcbiAgICB8IDkxIC0+IE1ldGFSaWdodFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX251bXBhZCA9IGZ1bmN0aW9uXG4gICAgfCA0NiAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCA0NSAtPiBOdW1wYWQwXG4gICAgfCAzNSAtPiBOdW1wYWQxXG4gICAgfCA0MCAtPiBOdW1wYWQyXG4gICAgfCAzNCAtPiBOdW1wYWQzXG4gICAgfCAzNyAtPiBOdW1wYWQ0XG4gICAgfCAxMiAtPiBOdW1wYWQ1XG4gICAgfCAzOSAtPiBOdW1wYWQ2XG4gICAgfCAzNiAtPiBOdW1wYWQ3XG4gICAgfCAzOCAtPiBOdW1wYWQ4XG4gICAgfCAzMyAtPiBOdW1wYWQ5XG4gICAgfCAxMyAtPiBOdW1wYWRFbnRlclxuICAgIHwgMTExIC0+IE51bXBhZERpdmlkZVxuICAgIHwgMTA3IC0+IE51bXBhZEFkZFxuICAgIHwgMTA5IC0+IE51bXBhZFN1YnRyYWN0XG4gICAgfCAxMDYgLT4gTnVtcGFkTXVsdGlwbHlcbiAgICB8IDExMCAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCA5NiAtPiBOdW1wYWQwXG4gICAgfCA5NyAtPiBOdW1wYWQxXG4gICAgfCA5OCAtPiBOdW1wYWQyXG4gICAgfCA5OSAtPiBOdW1wYWQzXG4gICAgfCAxMDAgLT4gTnVtcGFkNFxuICAgIHwgMTAxIC0+IE51bXBhZDVcbiAgICB8IDEwMiAtPiBOdW1wYWQ2XG4gICAgfCAxMDMgLT4gTnVtcGFkN1xuICAgIHwgMTA0IC0+IE51bXBhZDhcbiAgICB8IDEwNSAtPiBOdW1wYWQ5XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbm9ybWFsID0gZnVuY3Rpb25cbiAgICB8IDI3IC0+IEVzY2FwZVxuICAgIHwgMTEyIC0+IEYxXG4gICAgfCAxMTMgLT4gRjJcbiAgICB8IDExNCAtPiBGM1xuICAgIHwgMTE1IC0+IEY0XG4gICAgfCAxMTYgLT4gRjVcbiAgICB8IDExNyAtPiBGNlxuICAgIHwgMTE4IC0+IEY3XG4gICAgfCAxMTkgLT4gRjhcbiAgICB8IDEyMCAtPiBGOVxuICAgIHwgMTIxIC0+IEYxMFxuICAgIHwgMTIyIC0+IEYxMVxuICAgIHwgMTIzIC0+IEYxMlxuICAgIHwgNDIgLT4gUHJpbnRTY3JlZW5cbiAgICB8IDE0NSAtPiBTY3JvbGxMb2NrXG4gICAgfCAxOSAtPiBQYXVzZVxuICAgIHwgMTkyIC0+IEJhY2txdW90ZVxuICAgIHwgNDkgLT4gRGlnaXQxXG4gICAgfCA1MCAtPiBEaWdpdDJcbiAgICB8IDUxIC0+IERpZ2l0M1xuICAgIHwgNTIgLT4gRGlnaXQ0XG4gICAgfCA1MyAtPiBEaWdpdDVcbiAgICB8IDU0IC0+IERpZ2l0NlxuICAgIHwgNTUgLT4gRGlnaXQ3XG4gICAgfCA1NiAtPiBEaWdpdDhcbiAgICB8IDU3IC0+IERpZ2l0OVxuICAgIHwgNDggLT4gRGlnaXQwXG4gICAgfCAxODkgLT4gTWludXNcbiAgICB8IDE4NyAtPiBFcXVhbFxuICAgIHwgOCAtPiBCYWNrc3BhY2VcbiAgICB8IDkgLT4gVGFiXG4gICAgfCA4MSAtPiBLZXlRXG4gICAgfCA4NyAtPiBLZXlXXG4gICAgfCA2OSAtPiBLZXlFXG4gICAgfCA4MiAtPiBLZXlSXG4gICAgfCA4NCAtPiBLZXlUXG4gICAgfCA4OSAtPiBLZXlZXG4gICAgfCA4NSAtPiBLZXlVXG4gICAgfCA3MyAtPiBLZXlJXG4gICAgfCA3OSAtPiBLZXlPXG4gICAgfCA4MCAtPiBLZXlQXG4gICAgfCAyMTkgLT4gQnJhY2tldExlZnRcbiAgICB8IDIyMSAtPiBCcmFja2V0UmlnaHRcbiAgICB8IDIyMCAtPiBCYWNrc2xhc2hcbiAgICB8IDIwIC0+IENhcHNMb2NrXG4gICAgfCA2NSAtPiBLZXlBXG4gICAgfCA4MyAtPiBLZXlTXG4gICAgfCA2OCAtPiBLZXlEXG4gICAgfCA3MCAtPiBLZXlGXG4gICAgfCA3MSAtPiBLZXlHXG4gICAgfCA3MiAtPiBLZXlIXG4gICAgfCA3NCAtPiBLZXlKXG4gICAgfCA3NSAtPiBLZXlLXG4gICAgfCA3NiAtPiBLZXlMXG4gICAgfCAxODYgLT4gU2VtaWNvbG9uXG4gICAgfCAyMjIgLT4gUXVvdGVcbiAgICB8IDEzIC0+IEVudGVyXG4gICAgfCA5MCAtPiBLZXlaXG4gICAgfCA4OCAtPiBLZXlYXG4gICAgfCA2NyAtPiBLZXlDXG4gICAgfCA4NiAtPiBLZXlWXG4gICAgfCA2NiAtPiBLZXlCXG4gICAgfCA3OCAtPiBLZXlOXG4gICAgfCA3NyAtPiBLZXlNXG4gICAgfCAxODggLT4gQ29tbWFcbiAgICB8IDE5MCAtPiBQZXJpb2RcbiAgICB8IDE5MSAtPiBTbGFzaFxuICAgIHwgMzIgLT4gU3BhY2VcbiAgICB8IDkzIC0+IENvbnRleHRNZW51XG4gICAgfCA0NSAtPiBJbnNlcnRcbiAgICB8IDM2IC0+IEhvbWVcbiAgICB8IDMzIC0+IFBhZ2VVcFxuICAgIHwgNDYgLT4gRGVsZXRlXG4gICAgfCAzNSAtPiBFbmRcbiAgICB8IDM0IC0+IFBhZ2VEb3duXG4gICAgfCAzNyAtPiBBcnJvd0xlZnRcbiAgICB8IDQwIC0+IEFycm93RG93blxuICAgIHwgMzkgLT4gQXJyb3dSaWdodFxuICAgIHwgMzggLT4gQXJyb3dVcFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgbWFrZV91bmlkZW50aWZpZWQgXyA9IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfbmV4dCB2YWx1ZSBmID0gZnVuY3Rpb25cbiAgICB8IFVuaWRlbnRpZmllZCAtPiBPcHRkZWYuY2FzZSB2YWx1ZSBtYWtlX3VuaWRlbnRpZmllZCBmXG4gICAgfCB2IC0+IHZcblxuICBsZXQgcnVuX25leHQgdmFsdWUgZiA9IGZ1bmN0aW9uXG4gICAgfCBVbmlkZW50aWZpZWQgLT4gZiB2YWx1ZVxuICAgIHwgdiAtPiB2XG5cbiAgbGV0IGdldF9rZXlfY29kZSBldnQgPSBldnQjIy5rZXlDb2RlXG5cbiAgbGV0IHRyeV9rZXlfbG9jYXRpb24gZXZ0ID1cbiAgICBtYXRjaCBldnQjIy5sb2NhdGlvbiB3aXRoXG4gICAgfCAxIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbGVmdFxuICAgIHwgMiAtPiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX3JpZ2h0XG4gICAgfCAzIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbnVtcGFkXG4gICAgfCBfIC0+IG1ha2VfdW5pZGVudGlmaWVkXG5cbiAgbGV0ICggfD4gKSB4IGYgPSBmIHhcblxuICBsZXQgb2ZfZXZlbnQgZXZ0ID1cbiAgICBVbmlkZW50aWZpZWRcbiAgICB8PiB0cnlfbmV4dCBldnQjIy5jb2RlIHRyeV9jb2RlXG4gICAgfD4gdHJ5X2tleV9sb2NhdGlvbiBldnRcbiAgICB8PiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX25vcm1hbFxuXG4gIGxldCBvZl9rZXlfY29kZSA9IHRyeV9rZXlfY29kZV9ub3JtYWxcbmVuZFxuXG5tb2R1bGUgS2V5Ym9hcmRfa2V5ID0gc3RydWN0XG4gIHR5cGUgdCA9IFVjaGFyLnQgb3B0aW9uXG5cbiAgbGV0IGNoYXJfb2ZfaW50IHZhbHVlID1cbiAgICBpZiAwIDwgdmFsdWUgdGhlbiB0cnkgU29tZSAoVWNoYXIub2ZfaW50IHZhbHVlKSB3aXRoIF8gLT4gTm9uZSBlbHNlIE5vbmVcblxuICBsZXQgZW1wdHlfc3RyaW5nIF8gPSBKcy5zdHJpbmcgXCJcIlxuXG4gIGxldCBub25lIF8gPSBOb25lXG5cbiAgbGV0IG9mX2V2ZW50IGV2dCA9XG4gICAgbGV0IGtleSA9IE9wdGRlZi5nZXQgZXZ0IyMua2V5IGVtcHR5X3N0cmluZyBpblxuICAgIG1hdGNoIGtleSMjLmxlbmd0aCB3aXRoXG4gICAgfCAwIC0+IE9wdGRlZi5jYXNlIGV2dCMjLmNoYXJDb2RlIG5vbmUgY2hhcl9vZl9pbnRcbiAgICB8IDEgLT4gY2hhcl9vZl9pbnQgKGludF9vZl9mbG9hdCAoSnMudG9fZmxvYXQgKGtleSMjY2hhckNvZGVBdCAwKSkpXG4gICAgfCBfIC0+IE5vbmVcbmVuZFxuXG4oKioqKiopXG5cbmxldCBlbGVtZW50IDogI0RvbS5lbGVtZW50IHQgLT4gZWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZVxuXG50eXBlIHRhZ2dlZEVsZW1lbnQgPVxuICB8IEEgb2YgYW5jaG9yRWxlbWVudCB0XG4gIHwgQXJlYSBvZiBhcmVhRWxlbWVudCB0XG4gIHwgQXVkaW8gb2YgYXVkaW9FbGVtZW50IHRcbiAgfCBCYXNlIG9mIGJhc2VFbGVtZW50IHRcbiAgfCBCbG9ja3F1b3RlIG9mIHF1b3RlRWxlbWVudCB0XG4gIHwgQm9keSBvZiBib2R5RWxlbWVudCB0XG4gIHwgQnIgb2YgYnJFbGVtZW50IHRcbiAgfCBCdXR0b24gb2YgYnV0dG9uRWxlbWVudCB0XG4gIHwgQ2FudmFzIG9mIGNhbnZhc0VsZW1lbnQgdFxuICB8IENhcHRpb24gb2YgdGFibGVDYXB0aW9uRWxlbWVudCB0XG4gIHwgQ29sIG9mIHRhYmxlQ29sRWxlbWVudCB0XG4gIHwgQ29sZ3JvdXAgb2YgdGFibGVDb2xFbGVtZW50IHRcbiAgfCBEZWwgb2YgbW9kRWxlbWVudCB0XG4gIHwgRGl2IG9mIGRpdkVsZW1lbnQgdFxuICB8IERsIG9mIGRMaXN0RWxlbWVudCB0XG4gIHwgRW1iZWQgb2YgZW1iZWRFbGVtZW50IHRcbiAgfCBGaWVsZHNldCBvZiBmaWVsZFNldEVsZW1lbnQgdFxuICB8IEZvcm0gb2YgZm9ybUVsZW1lbnQgdFxuICB8IEZyYW1lc2V0IG9mIGZyYW1lU2V0RWxlbWVudCB0XG4gIHwgRnJhbWUgb2YgZnJhbWVFbGVtZW50IHRcbiAgfCBIMSBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDIgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEgzIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINCBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDUgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg2IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIZWFkIG9mIGhlYWRFbGVtZW50IHRcbiAgfCBIciBvZiBockVsZW1lbnQgdFxuICB8IEh0bWwgb2YgaHRtbEVsZW1lbnQgdFxuICB8IElmcmFtZSBvZiBpRnJhbWVFbGVtZW50IHRcbiAgfCBJbWcgb2YgaW1hZ2VFbGVtZW50IHRcbiAgfCBJbnB1dCBvZiBpbnB1dEVsZW1lbnQgdFxuICB8IElucyBvZiBtb2RFbGVtZW50IHRcbiAgfCBMYWJlbCBvZiBsYWJlbEVsZW1lbnQgdFxuICB8IExlZ2VuZCBvZiBsZWdlbmRFbGVtZW50IHRcbiAgfCBMaSBvZiBsaUVsZW1lbnQgdFxuICB8IExpbmsgb2YgbGlua0VsZW1lbnQgdFxuICB8IE1hcCBvZiBtYXBFbGVtZW50IHRcbiAgfCBNZXRhIG9mIG1ldGFFbGVtZW50IHRcbiAgfCBPYmplY3Qgb2Ygb2JqZWN0RWxlbWVudCB0XG4gIHwgT2wgb2Ygb0xpc3RFbGVtZW50IHRcbiAgfCBPcHRncm91cCBvZiBvcHRHcm91cEVsZW1lbnQgdFxuICB8IE9wdGlvbiBvZiBvcHRpb25FbGVtZW50IHRcbiAgfCBQIG9mIHBhcmFtRWxlbWVudCB0XG4gIHwgUGFyYW0gb2YgcGFyYW1FbGVtZW50IHRcbiAgfCBQcmUgb2YgcHJlRWxlbWVudCB0XG4gIHwgUSBvZiBxdW90ZUVsZW1lbnQgdFxuICB8IFNjcmlwdCBvZiBzY3JpcHRFbGVtZW50IHRcbiAgfCBTZWxlY3Qgb2Ygc2VsZWN0RWxlbWVudCB0XG4gIHwgU3R5bGUgb2Ygc3R5bGVFbGVtZW50IHRcbiAgfCBUYWJsZSBvZiB0YWJsZUVsZW1lbnQgdFxuICB8IFRib2R5IG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRkIG9mIHRhYmxlQ2VsbEVsZW1lbnQgdFxuICB8IFRleHRhcmVhIG9mIHRleHRBcmVhRWxlbWVudCB0XG4gIHwgVGZvb3Qgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGggb2YgdGFibGVDZWxsRWxlbWVudCB0XG4gIHwgVGhlYWQgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGl0bGUgb2YgdGl0bGVFbGVtZW50IHRcbiAgfCBUciBvZiB0YWJsZVJvd0VsZW1lbnQgdFxuICB8IFVsIG9mIHVMaXN0RWxlbWVudCB0XG4gIHwgVmlkZW8gb2YgdmlkZW9FbGVtZW50IHRcbiAgfCBPdGhlciBvZiBlbGVtZW50IHRcblxubGV0IG90aGVyIGUgPSBPdGhlciAoZSA6ICNlbGVtZW50IHQgOj4gZWxlbWVudCB0KVxuXG5sZXQgdGFnZ2VkIChlIDogI2VsZW1lbnQgdCkgPVxuICBsZXQgdGFnID0gSnMudG9fYnl0ZXN0cmluZyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgaW5cbiAgaWYgU3RyaW5nLmxlbmd0aCB0YWcgPSAwXG4gIHRoZW4gb3RoZXIgZVxuICBlbHNlXG4gICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgdGFnIDAgd2l0aFxuICAgIHwgJ2EnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImFcIiAtPiBBIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJhcmVhXCIgLT4gQXJlYSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYXVkaW9cIiAtPiBBdWRpbyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdiJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJiYXNlXCIgLT4gQmFzZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYmxvY2txdW90ZVwiIC0+IEJsb2NrcXVvdGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJvZHlcIiAtPiBCb2R5IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJiclwiIC0+IEJyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJidXR0b25cIiAtPiBCdXR0b24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnYycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiY2FudmFzXCIgLT4gQ2FudmFzIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjYXB0aW9uXCIgLT4gQ2FwdGlvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY29sXCIgLT4gQ29sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjb2xncm91cFwiIC0+IENvbGdyb3VwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2QnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImRlbFwiIC0+IERlbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZGl2XCIgLT4gRGl2IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJkbFwiIC0+IERsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2UnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImVtYmVkXCIgLT4gRW1iZWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZmllbGRzZXRcIiAtPiBGaWVsZHNldCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZm9ybVwiIC0+IEZvcm0gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZyYW1lc2V0XCIgLT4gRnJhbWVzZXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZyYW1lXCIgLT4gRnJhbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnaCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiaDFcIiAtPiBIMSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDJcIiAtPiBIMiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDNcIiAtPiBIMyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDRcIiAtPiBINCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDVcIiAtPiBINSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDZcIiAtPiBINiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaGVhZFwiIC0+IEhlYWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImhyXCIgLT4gSHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImh0bWxcIiAtPiBIdG1sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2knIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImlmcmFtZVwiIC0+IElmcmFtZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW1nXCIgLT4gSW1nIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbnB1dFwiIC0+IElucHV0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbnNcIiAtPiBJbnMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwibGFiZWxcIiAtPiBMYWJlbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGVnZW5kXCIgLT4gTGVnZW5kIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsaVwiIC0+IExpIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsaW5rXCIgLT4gTGluayAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdtJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJtYXBcIiAtPiBNYXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm1ldGFcIiAtPiBNZXRhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ28nIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcIm9iamVjdFwiIC0+IE9iamVjdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib2xcIiAtPiBPbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib3B0Z3JvdXBcIiAtPiBPcHRncm91cCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib3B0aW9uXCIgLT4gT3B0aW9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3AnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInBcIiAtPiBQIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJwYXJhbVwiIC0+IFBhcmFtIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJwcmVcIiAtPiBQcmUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwicVwiIC0+IFEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwic2NyaXB0XCIgLT4gU2NyaXB0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJzZWxlY3RcIiAtPiBTZWxlY3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInN0eWxlXCIgLT4gU3R5bGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidGFibGVcIiAtPiBUYWJsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGJvZHlcIiAtPiBUYm9keSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGRcIiAtPiBUZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGV4dGFyZWFcIiAtPiBUZXh0YXJlYSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGZvb3RcIiAtPiBUZm9vdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGhcIiAtPiBUaCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGhlYWRcIiAtPiBUaGVhZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGl0bGVcIiAtPiBUaXRsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidHJcIiAtPiBUciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd1JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ1bFwiIC0+IFVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3YnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInZpZGVvXCIgLT4gVmlkZW8gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCBfIC0+IG90aGVyIGVcblxubGV0IG9wdF90YWdnZWQgZSA9IE9wdC5jYXNlIGUgKGZ1biAoKSAtPiBOb25lKSAoZnVuIGUgLT4gU29tZSAodGFnZ2VkIGUpKVxuXG50eXBlIHRhZ2dlZEV2ZW50ID1cbiAgfCBNb3VzZUV2ZW50IG9mIG1vdXNlRXZlbnQgdFxuICB8IEtleWJvYXJkRXZlbnQgb2Yga2V5Ym9hcmRFdmVudCB0XG4gIHwgTWVzc2FnZUV2ZW50IG9mIG1lc3NhZ2VFdmVudCB0XG4gIHwgTW91c2V3aGVlbEV2ZW50IG9mIG1vdXNld2hlZWxFdmVudCB0XG4gIHwgTW91c2VTY3JvbGxFdmVudCBvZiBtb3VzZVNjcm9sbEV2ZW50IHRcbiAgfCBQb3BTdGF0ZUV2ZW50IG9mIHBvcFN0YXRlRXZlbnQgdFxuICB8IE90aGVyRXZlbnQgb2YgZXZlbnQgdFxuXG5sZXQgdGFnZ2VkRXZlbnQgKGV2IDogI2V2ZW50IEpzLnQpID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoQ29lcmNlVG8ubW91c2VFdmVudCBldilcbiAgICAoZnVuICgpIC0+XG4gICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAoQ29lcmNlVG8ua2V5Ym9hcmRFdmVudCBldilcbiAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoQ29lcmNlVG8ud2hlZWxFdmVudCBldilcbiAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAoQ29lcmNlVG8ubW91c2VTY3JvbGxFdmVudCBldilcbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgICAgICAoQ29lcmNlVG8ucG9wU3RhdGVFdmVudCBldilcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQ29lcmNlVG8ubWVzc2FnZUV2ZW50IGV2KVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiBPdGhlckV2ZW50IChldiA6PiBldmVudCB0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gTWVzc2FnZUV2ZW50IGV2KSlcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBldiAtPiBQb3BTdGF0ZUV2ZW50IGV2KSlcbiAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IE1vdXNlU2Nyb2xsRXZlbnQgZXYpKVxuICAgICAgICAgICAgKGZ1biBldiAtPiBNb3VzZXdoZWVsRXZlbnQgZXYpKVxuICAgICAgICAoZnVuIGV2IC0+IEtleWJvYXJkRXZlbnQgZXYpKVxuICAgIChmdW4gZXYgLT4gTW91c2VFdmVudCBldilcblxubGV0IG9wdF90YWdnZWRFdmVudCBldiA9IE9wdC5jYXNlIGV2IChmdW4gKCkgLT4gTm9uZSkgKGZ1biBldiAtPiBTb21lICh0YWdnZWRFdmVudCBldikpXG5cbmxldCBzdG9wUHJvcGFnYXRpb24gZXYgPVxuICBsZXQgZSA9IEpzLlVuc2FmZS5jb2VyY2UgZXYgaW5cbiAgT3B0ZGVmLmNhc2VcbiAgICBlIyMuc3RvcFByb3BhZ2F0aW9uXG4gICAgKGZ1biAoKSAtPiBlIyMuY2FuY2VsQnViYmxlIDo9IEpzLl90cnVlKVxuICAgIChmdW4gXyAtPiBlIyNfc3RvcFByb3BhZ2F0aW9uKVxuXG5sZXQgX3JlcXVlc3RBbmltYXRpb25GcmFtZSA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IHVuaXQgPVxuICBKcy5VbnNhZmUucHVyZV9leHByIChmdW4gXyAtPlxuICAgICAgbGV0IHcgPSBKcy5VbnNhZmUuY29lcmNlIHdpbmRvdyBpblxuICAgICAgbGV0IGwgPVxuICAgICAgICBbIHcjIy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5vUmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIF1cbiAgICAgIGluXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHJlcSA9IExpc3QuZmluZCAoZnVuIGMgLT4gSnMuT3B0ZGVmLnRlc3QgYykgbCBpblxuICAgICAgICBmdW4gY2FsbGJhY2sgLT4gSnMuVW5zYWZlLmZ1bl9jYWxsIHJlcSBbfCBKcy5VbnNhZmUuaW5qZWN0IGNhbGxiYWNrIHxdXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBsZXQgbm93ICgpID0gSnMudG9fZmxvYXQgKG5ldyVqcyBKcy5kYXRlX25vdykjI2dldFRpbWUgaW5cbiAgICAgICAgbGV0IGxhc3QgPSByZWYgKG5vdyAoKSkgaW5cbiAgICAgICAgZnVuIGNhbGxiYWNrIC0+XG4gICAgICAgICAgbGV0IHQgPSBub3cgKCkgaW5cbiAgICAgICAgICBsZXQgZHQgPSAhbGFzdCArLiAoMTAwMC4gLy4gNjAuKSAtLiB0IGluXG4gICAgICAgICAgbGV0IGR0ID0gaWYgUG9seS4oZHQgPCAwLikgdGhlbiAwLiBlbHNlIGR0IGluXG4gICAgICAgICAgbGFzdCA6PSB0O1xuICAgICAgICAgIGlnbm9yZSAod2luZG93IyNzZXRUaW1lb3V0IGNhbGxiYWNrIChKcy5mbG9hdCBkdCkpKVxuXG4oKioqKilcblxubGV0IGhhc1B1c2hTdGF0ZSAoKSA9IEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIHdpbmRvdyMjLmhpc3RvcnkpIyMucHVzaFN0YXRlXG5cbmxldCBoYXNQbGFjZWhvbGRlciAoKSA9XG4gIGxldCBpID0gY3JlYXRlSW5wdXQgZG9jdW1lbnQgaW5cbiAgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgaSkjIy5wbGFjZWhvbGRlclxuXG5sZXQgaGFzUmVxdWlyZWQgKCkgPVxuICBsZXQgaSA9IGNyZWF0ZUlucHV0IGRvY3VtZW50IGluXG4gIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGkpIyMucmVxdWlyZWRcblxubGV0IG92ZXJmbG93X2xpbWl0ID0gMjE0NzQ4M18wMDAuXG5cbigqIG1zICopXG5cbnR5cGUgdGltZW91dF9pZF9zYWZlID0gdGltZW91dF9pZCBvcHRpb24gcmVmXG5cbmxldCBzZXRUaW1lb3V0IGNhbGxiYWNrIGQgOiB0aW1lb3V0X2lkX3NhZmUgPVxuICBsZXQgaWQgPSByZWYgTm9uZSBpblxuICBsZXQgcmVjIGxvb3AgZCAoKSA9XG4gICAgbGV0IHN0ZXAsIHJlbWFpbiA9XG4gICAgICBpZiBQb2x5LihkID4gb3ZlcmZsb3dfbGltaXQpIHRoZW4gb3ZlcmZsb3dfbGltaXQsIGQgLS4gb3ZlcmZsb3dfbGltaXQgZWxzZSBkLCAwLlxuICAgIGluXG4gICAgbGV0IGNiID0gaWYgUG9seS4ocmVtYWluID0gMC4pIHRoZW4gY2FsbGJhY2sgZWxzZSBsb29wIHJlbWFpbiBpblxuICAgIGlkIDo9IFNvbWUgKHdpbmRvdyMjc2V0VGltZW91dCAoSnMud3JhcF9jYWxsYmFjayBjYikgKEpzLmZsb2F0IHN0ZXApKVxuICBpblxuICBsb29wIGQgKCk7XG4gIGlkXG5cbmxldCBjbGVhclRpbWVvdXQgKGlkIDogdGltZW91dF9pZF9zYWZlKSA9XG4gIG1hdGNoICFpZCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeCAtPlxuICAgICAgaWQgOj0gTm9uZTtcbiAgICAgIHdpbmRvdyMjY2xlYXJUaW1lb3V0IHhcblxubGV0IGpzX2FycmF5X29mX2NvbGxlY3Rpb24gKGMgOiAjZWxlbWVudCBjb2xsZWN0aW9uIEpzLnQpIDogI2VsZW1lbnQgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgPVxuICBKcy5VbnNhZmUuKG1ldGhfY2FsbCAoanNfZXhwciBcIltdLnNsaWNlXCIpIFwiY2FsbFwiIFt8IGluamVjdCBjIHxdKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbV9odG1sXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBmb3JtRGF0YSA9IG9iamVjdFxuICBtZXRob2QgYXBwZW5kIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZF9ibG9iIDoganNfc3RyaW5nIHQgLT4gRmlsZS5ibG9iIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxubGV0IGZvcm1EYXRhIDogZm9ybURhdGEgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zvcm1EYXRhXG5cbmxldCBmb3JtRGF0YV9mb3JtIDogKGZvcm1FbGVtZW50IHQgLT4gZm9ybURhdGEgdCkgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9Gb3JtRGF0YVxuXG50eXBlIGZvcm1fZWx0ID1cbiAgWyBgU3RyaW5nIG9mIGpzX3N0cmluZyB0XG4gIHwgYEZpbGUgb2YgRmlsZS5maWxlIHRcbiAgXVxuXG50eXBlIGZvcm1fY29udGVudHMgPVxuICBbIGBGaWVsZHMgb2YgKHN0cmluZyAqIGZvcm1fZWx0KSBsaXN0IHJlZlxuICB8IGBGb3JtRGF0YSBvZiBmb3JtRGF0YSB0XG4gIF1cblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgdiA6OiBxIC0+IChcbiAgICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIHFcbiAgICAgIHwgU29tZSB2JyAtPiB2JyA6OiBmaWx0ZXJfbWFwIGYgcSlcblxuY2xhc3MgdHlwZSBzdWJtaXR0YWJsZUVsZW1lbnQgPSBvYmplY3RcbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxubGV0IGhhdmVfY29udGVudCAoZWx0IDogc3VibWl0dGFibGVFbGVtZW50IHQpID1cbiAgZWx0IyMubmFtZSMjLmxlbmd0aCA+IDAgJiYgbm90IChKcy50b19ib29sIGVsdCMjLmRpc2FibGVkKVxuXG5sZXQgZ2V0X3RleHRhcmVhX3ZhbCAoZWx0IDogdGV4dEFyZWFFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgWyBuYW1lLCBgU3RyaW5nIGVsdCMjLnZhbHVlIF1cbiAgZWxzZSBbXVxuXG5sZXQgZ2V0X3NlbGVjdF92YWwgKGVsdCA6IHNlbGVjdEVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBpZiB0b19ib29sIGVsdCMjLm11bHRpcGxlXG4gICAgdGhlblxuICAgICAgbGV0IG9wdGlvbnMgPVxuICAgICAgICBBcnJheS5pbml0IGVsdCMjLm9wdGlvbnMjIy5sZW5ndGggKGZ1biBpIC0+IE9wdC50b19vcHRpb24gKGVsdCMjLm9wdGlvbnMjI2l0ZW0gaSkpXG4gICAgICBpblxuICAgICAgZmlsdGVyX21hcFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBlIC0+XG4gICAgICAgICAgICAgIGlmIEpzLnRvX2Jvb2wgZSMjLnNlbGVjdGVkIHRoZW4gU29tZSAobmFtZSwgYFN0cmluZyBlIyMudmFsdWUpIGVsc2UgTm9uZSlcbiAgICAgICAgKEFycmF5LnRvX2xpc3Qgb3B0aW9ucylcbiAgICBlbHNlIFsgbmFtZSwgYFN0cmluZyBlbHQjIy52YWx1ZSBdXG4gIGVsc2UgW11cblxuY2xhc3MgdHlwZSBmaWxlX2lucHV0ID0gb2JqZWN0XG4gIGluaGVyaXQgaW5wdXRFbGVtZW50XG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG11bHRpcGxlIDogYm9vbCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBnZXRfaW5wdXRfdmFsID8oZ2V0ID0gZmFsc2UpIChlbHQgOiBpbnB1dEVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBsZXQgdmFsdWUgPSBlbHQjIy52YWx1ZSBpblxuICAgIG1hdGNoIHRvX2J5dGVzdHJpbmcgZWx0IyMuX3R5cGUjI3RvTG93ZXJDYXNlIHdpdGhcbiAgICB8IFwiY2hlY2tib3hcIiB8IFwicmFkaW9cIiAtPlxuICAgICAgICBpZiB0b19ib29sIGVsdCMjLmNoZWNrZWQgdGhlbiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXSBlbHNlIFtdXG4gICAgfCBcInN1Ym1pdFwiIHwgXCJyZXNldFwiIC0+IFtdXG4gICAgfCBcInRleHRcIiB8IFwicGFzc3dvcmRcIiAtPiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICAgIHwgXCJmaWxlXCIgLT4gKFxuICAgICAgICBpZiBnZXRcbiAgICAgICAgdGhlbiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGVsdCA6IGZpbGVfaW5wdXQgdCA9IFVuc2FmZS5jb2VyY2UgZWx0IGluXG4gICAgICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBlbHQjIy5maWxlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGxpc3QgLT4gKFxuICAgICAgICAgICAgICBpZiBsaXN0IyMubGVuZ3RoID0gMFxuICAgICAgICAgICAgICB0aGVuIFsgbmFtZSwgYFN0cmluZyAoSnMuc3RyaW5nIFwiXCIpIF1cbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZWx0IyMubXVsdGlwbGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgZmFsc2UgLT4gKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChsaXN0IyNpdGVtIDApIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBmaWxlIC0+IFsgbmFtZSwgYEZpbGUgZmlsZSBdKVxuICAgICAgICAgICAgICAgIHwgU29tZSB0cnVlIC0+XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcl9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gZiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGZpbGUgLT4gU29tZSAobmFtZSwgYEZpbGUgZmlsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgKEFycmF5LnRvX2xpc3QgKEFycmF5LmluaXQgbGlzdCMjLmxlbmd0aCAoZnVuIGkgLT4gbGlzdCMjaXRlbSBpKSkpKSlcbiAgICB8IF8gLT4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgZWxzZSBbXVxuXG5sZXQgZ2V0X2Zvcm1fZWxlbWVudHMgKGZvcm0gOiBmb3JtRWxlbWVudCB0KSA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9XG4gICAgaWYgaSA8IDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKGZvcm0jIy5lbGVtZW50cyMjaXRlbSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCBhY2MgKGkgLSBpKVxuICAgICAgfCBTb21lIHggLT4gbG9vcCAoeCA6OiBhY2MpIChpIC0gMSlcbiAgaW5cbiAgbG9vcCBbXSAoZm9ybSMjLmVsZW1lbnRzIyMubGVuZ3RoIC0gMSlcblxubGV0IGdldF9lbGVtZW50X2NvbnRlbnQgP2dldCB2ID1cbiAgbWF0Y2ggdGFnZ2VkIHYgd2l0aFxuICB8IFNlbGVjdCB2IC0+IGdldF9zZWxlY3RfdmFsIHZcbiAgfCBJbnB1dCB2IC0+IGdldF9pbnB1dF92YWwgP2dldCB2XG4gIHwgVGV4dGFyZWEgdiAtPiBnZXRfdGV4dGFyZWFfdmFsIHZcbiAgfCBfIC0+IFtdXG5cbmxldCBmb3JtX2VsZW1lbnRzID9nZXQgKGZvcm0gOiBmb3JtRWxlbWVudCB0KSA9XG4gIExpc3QuZmxhdHRlbiAoTGlzdC5tYXAgKGZ1biB2IC0+IGdldF9lbGVtZW50X2NvbnRlbnQgP2dldCB2KSAoZ2V0X2Zvcm1fZWxlbWVudHMgZm9ybSkpXG5cbmxldCBhcHBlbmQgKGZvcm1fY29udGVudHMgOiBmb3JtX2NvbnRlbnRzKSAoZm9ybV9lbHQgOiBzdHJpbmcgKiBmb3JtX2VsdCkgPVxuICBtYXRjaCBmb3JtX2NvbnRlbnRzIHdpdGhcbiAgfCBgRmllbGRzIGxpc3QgLT4gbGlzdCA6PSBmb3JtX2VsdCA6OiAhbGlzdFxuICB8IGBGb3JtRGF0YSBmIC0+IChcbiAgICAgIG1hdGNoIGZvcm1fZWx0IHdpdGhcbiAgICAgIHwgbmFtZSwgYFN0cmluZyBzIC0+IGYjI2FwcGVuZCAoc3RyaW5nIG5hbWUpIHNcbiAgICAgIHwgbmFtZSwgYEZpbGUgZmlsZSAtPiBmIyNhcHBlbmRfYmxvYiAoc3RyaW5nIG5hbWUpIChmaWxlIDo+IEZpbGUuYmxvYiB0KSlcblxubGV0IGVtcHR5X2Zvcm1fY29udGVudHMgKCkgPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIChKcy5kZWYgZm9ybURhdGEpIHdpdGhcbiAgfCBOb25lIC0+IGBGaWVsZHMgKHJlZiBbXSlcbiAgfCBTb21lIGNvbnN0ciAtPiBgRm9ybURhdGEgKG5ldyVqcyBjb25zdHIpXG5cbmxldCBwb3N0X2Zvcm1fY29udGVudHMgZm9ybSA9XG4gIGxldCBjb250ZW50cyA9IGVtcHR5X2Zvcm1fY29udGVudHMgKCkgaW5cbiAgTGlzdC5pdGVyIChhcHBlbmQgY29udGVudHMpIChmb3JtX2VsZW1lbnRzIGZvcm0pO1xuICBjb250ZW50c1xuXG5sZXQgZ2V0X2Zvcm1fY29udGVudHMgZm9ybSA9XG4gIExpc3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IG5hbWUsIGBTdHJpbmcgcyAtPiBuYW1lLCB0b19zdHJpbmcgc1xuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICAoZm9ybV9lbGVtZW50cyB+Z2V0OnRydWUgZm9ybSlcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBVTlNFTlRcbiAgfCBPUEVORURcbiAgfCBIRUFERVJTX1JFQ0VJVkVEXG4gIHwgTE9BRElOR1xuICB8IERPTkVcblxudHlwZSBfIHJlc3BvbnNlID1cbiAgfCBBcnJheUJ1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBCbG9iIDogI0ZpbGUuYmxvYiB0IE9wdC50IHJlc3BvbnNlXG4gIHwgRG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBPcHQudCByZXNwb25zZVxuICB8IEpTT04gOiAnYSBPcHQudCByZXNwb25zZVxuICB8IFRleHQgOiBqc19zdHJpbmcgdCByZXNwb25zZVxuICB8IERlZmF1bHQgOiBzdHJpbmcgcmVzcG9uc2VcblxuY2xhc3MgdHlwZSB4bWxIdHRwUmVxdWVzdCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbnJlYWR5c3RhdGVjaGFuZ2UgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9vcGVuIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBfb3Blbl9mdWxsIDpcbiAgICAgICBqc19zdHJpbmcgdFxuICAgIC0+IGpzX3N0cmluZyB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4ganNfc3RyaW5nIHQgb3B0XG4gICAgLT4ganNfc3RyaW5nIHQgb3B0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJlcXVlc3RIZWFkZXIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgb3ZlcnJpZGVNaW1lVHlwZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kIDoganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Jsb2IgOiAjRmlsZS5ibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfZG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9mb3JtRGF0YSA6IEZvcm0uZm9ybURhdGEgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RhdHVzIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhdHVzVGV4dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0UmVzcG9uc2VIZWFkZXIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBbGxSZXNwb25zZUhlYWRlcnMgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJlc3BvbnNlIDogRmlsZS5maWxlX2FueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlVGV4dCA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlWE1MIDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBpbmhlcml0IEZpbGUucHJvZ3Jlc3NFdmVudFRhcmdldFxuXG4gIG1ldGhvZCBvbnRpbWVvdXQgOlxuICAgICgnc2VsZiB0LCAnc2VsZiBGaWxlLnByb2dyZXNzRXZlbnQgdCkgRG9tLmV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHVwbG9hZCA6IHhtbEh0dHBSZXF1ZXN0VXBsb2FkIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgeG1sSHR0cFJlcXVlc3RVcGxvYWQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IEZpbGUucHJvZ3Jlc3NFdmVudFRhcmdldFxuZW5kXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlIHR5cCA9IHhtbEh0dHBSZXF1ZXN0IEZpbGUucHJvZ3Jlc3NFdmVudCB0IERvbS5FdmVudC50eXBcblxuICBsZXQgcmVhZHlzdGF0ZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwicmVhZHlzdGF0ZWNoYW5nZVwiXG5cbiAgbGV0IGxvYWRzdGFydCA9IERvbS5FdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBEb20uRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgYWJvcnQgPSBEb20uRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgZXJyb3IgPSBEb20uRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgbG9hZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IHRpbWVvdXQgPSBEb20uRXZlbnQubWFrZSBcInRpbWVvdXRcIlxuXG4gIGxldCBsb2FkZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZW5kXCJcbmVuZFxuXG5leHRlcm5hbCBjcmVhdGUgOiB1bml0IC0+IHhtbEh0dHBSZXF1ZXN0IEpzLnQgPSBcImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXCJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgT0NhbWxQcm86IEdyw6lnb2lyZSBIZW5yeSwgw4dhxJ9kYcWfIEJvem1hbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21faHRtbFxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gd29ya2VyID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsIGVycm9yRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tZXNzYWdlIDogKCdzZWxmIHQsICdiIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb3N0TWVzc2FnZSA6ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXJtaW5hdGUgOiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgZXJyb3JFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGVuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsaW5lbm8gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2xubyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVycm9yIDogVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgZGF0YSA6ICdhIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd29ya2VyID0gVW5zYWZlLmdsb2JhbCMjLl9Xb3JrZXJcblxubGV0IGNyZWF0ZSBzY3JpcHQgPSBuZXclanMgd29ya2VyIChzdHJpbmcgc2NyaXB0KVxuXG5sZXQgaW1wb3J0X3NjcmlwdHMgc2NyaXB0cyA6IHVuaXQgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5pbXBvcnRTY3JpcHRzKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLmltcG9ydF9zY3JpcHRzIGlzIHVuZGVmaW5lZFwiO1xuICBVbnNhZmUuZnVuX2NhbGxcbiAgICBVbnNhZmUuZ2xvYmFsIyMuaW1wb3J0U2NyaXB0c1xuICAgIChBcnJheS5tYXAgKGZ1biBzIC0+IFVuc2FmZS5pbmplY3QgKHN0cmluZyBzKSkgKEFycmF5Lm9mX2xpc3Qgc2NyaXB0cykpXG5cbmxldCBzZXRfb25tZXNzYWdlIGhhbmRsZXIgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5vbm1lc3NhZ2UpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIub25tZXNzYWdlIGlzIHVuZGVmaW5lZFwiO1xuICBsZXQganNfaGFuZGxlciAoZXYgOiAnYSBtZXNzYWdlRXZlbnQgSnMudCkgPSBoYW5kbGVyIGV2IyMuZGF0YSBpblxuICBVbnNhZmUuZ2xvYmFsIyMub25tZXNzYWdlIDo9IHdyYXBfY2FsbGJhY2sganNfaGFuZGxlclxuXG5sZXQgcG9zdF9tZXNzYWdlIG1zZyA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLnBvc3RNZXNzYWdlKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLm9ubWVzc2FnZSBpcyB1bmRlZmluZWRcIjtcbiAgVW5zYWZlLmdsb2JhbCMjcG9zdE1lc3NhZ2UgbXNnXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIEphY3F1ZXMtUGFzY2FsIERlcGxhaXhcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBDT05ORUNUSU5HXG4gIHwgT1BFTlxuICB8IENMT1NJTkdcbiAgfCBDTE9TRURcblxuY2xhc3MgdHlwZSBbJ2FdIGNsb3NlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBjb2RlIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhc29uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3YXNDbGVhbiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGFfYnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGFfYmxvYiA6IEZpbGUuYmxvYiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHdlYlNvY2tldCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdXJsIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ1ZmZlcmVkQW1vdW50IDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25vcGVuIDogKCdzZWxmIEpzLnQsICdzZWxmIERvbS5ldmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jbG9zZSA6XG4gICAgKCdzZWxmIEpzLnQsICdzZWxmIGNsb3NlRXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgSnMudCwgJ3NlbGYgRG9tLmV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBleHRlbnNpb25zIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcm90b2NvbCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgY2xvc2Vfd2l0aENvZGUgOiBpbnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsb3NlX3dpdGhDb2RlQW5kUmVhc29uIDogaW50IC0+IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOlxuICAgICgnc2VsZiBKcy50LCAnc2VsZiBtZXNzYWdlRXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGJpbmFyeVR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgbWV0aG9kIHNlbmQgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgc2VuZF9idWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Jsb2IgOiBGaWxlLmJsb2IgSnMudCAtPiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgd2ViU29ja2V0ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9XZWJTb2NrZXRcblxubGV0IHdlYlNvY2tldF93aXRoUHJvdG9jb2wgPSB3ZWJTb2NrZXRcblxubGV0IHdlYlNvY2tldF93aXRoUHJvdG9jb2xzID0gd2ViU29ja2V0XG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCB3ZWJTb2NrZXRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuKCoqIDUuMSBUeXBlcyAqKVxuXG50eXBlIHNpemVpID0gaW50XG5cbnR5cGUgc2l6ZWlwdHIgPSBpbnRcblxudHlwZSBpbnRwdHIgPSBpbnRcblxudHlwZSB1aW50ID0gaW50XG5cbnR5cGUgY2xhbXBmID0gbnVtYmVyX3RcblxudHlwZSB2b2lkXG5cbnR5cGUgY2xlYXJCdWZmZXJNYXNrID0gaW50XG5cbnR5cGUgYmVnaW5Nb2RlXG5cbnR5cGUgYmxlbmRpbmdGYWN0b3JcblxudHlwZSBibGVuZE1vZGVcblxudHlwZSBidWZmZXJUYXJnZXRcblxudHlwZSBidWZmZXJVc2FnZVxuXG50eXBlIGN1bGxGYWNlTW9kZVxuXG50eXBlIGRlcHRoRnVuY3Rpb25cblxudHlwZSBlbmFibGVDYXBcblxudHlwZSBlcnJvckNvZGVcblxudHlwZSBmcm9udEZhY2VEaXJcblxudHlwZSBoaW50VGFyZ2V0XG5cbnR5cGUgaGludE1vZGVcblxudHlwZSB0ZXh0dXJlVW5pdCA9IGludFxuXG50eXBlICdhIHBpeGVsU3RvcmVQYXJhbVxuXG50eXBlIHN0ZW5jaWxPcFxuXG50eXBlIGZiVGFyZ2V0XG5cbnR5cGUgYXR0YWNobWVudFBvaW50XG5cbnR5cGUgcmJUYXJnZXRcblxudHlwZSB0ZXhUYXJnZXRcblxudHlwZSAnYSBwYXJhbWV0ZXJcblxudHlwZSAnYSBidWZmZXJQYXJhbWV0ZXJcblxudHlwZSAnYSB2ZXJ0ZXhBdHRyaWJQYXJhbVxuXG50eXBlIHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbVxuXG50eXBlICdhIGF0dGFjaFBhcmFtXG5cbnR5cGUgZnJhbWVidWZmZXJTdGF0dXNcblxudHlwZSAnYSByZW5kZXJidWZmZXJQYXJhbVxuXG50eXBlIGZvcm1hdFxuXG50eXBlIHBpeGVsRm9ybWF0XG5cbnR5cGUgcGl4ZWxUeXBlXG5cbnR5cGUgJ2EgdGV4UGFyYW1cblxudHlwZSBkYXRhVHlwZVxuXG50eXBlIHNoYWRlclR5cGVcblxudHlwZSAnYSBwcm9ncmFtUGFyYW1cblxudHlwZSAnYSBzaGFkZXJQYXJhbVxuXG50eXBlIHRleHR1cmVGaWx0ZXJcblxudHlwZSB3cmFwTW9kZVxuXG50eXBlIHRleEZpbHRlclxuXG50eXBlIHVuaWZvcm1UeXBlXG5cbnR5cGUgY29sb3JzcGFjZUNvbnZlcnNpb25cblxudHlwZSBzaGFkZXJQcmVjaXNpb25UeXBlXG5cbnR5cGUgb2JqZWN0VHlwZVxuXG4oKiogNS4yIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgKilcbmNsYXNzIHR5cGUgY29udGV4dEF0dHJpYnV0ZXMgPSBvYmplY3RcbiAgbWV0aG9kIGFscGhhIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZGVwdGggOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGVuY2lsIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgYW50aWFsaWFzIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlbXVsdGlwbGllZEFscGhhIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlc2VydmVEcmF3aW5nQnVmZmVyIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlZmVyTG93UG93ZXJUb0hpZ2hQZXJmb3JtYW5jZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQgOiBib29sIHQgcHJvcFxuZW5kXG5cbmxldCBkZWZhdWx0Q29udGV4dEF0dHJpYnV0ZXMgPVxuICBKcy5VbnNhZmUuKFxuICAgIG9ialxuICAgICAgW3wgXCJhbHBoYVwiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwiZGVwdGhcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcInN0ZW5jaWxcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJhbnRpYWxpYXNcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcInByZW11bHRpcGxpZWRBbHBoYVwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcInByZXNlcnZlRHJhd2luZ0J1ZmZlclwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcInByZWZlckxvd1Bvd2VyVG9IaWdoUGVyZm9ybWFuY2VcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0XCIsIGluamVjdCBfZmFsc2VcbiAgICAgIHxdKVxuXG50eXBlIGJ1ZmZlclxuXG50eXBlIGZyYW1lYnVmZmVyXG5cbnR5cGUgcHJvZ3JhbVxuXG50eXBlIHJlbmRlcmJ1ZmZlclxuXG50eXBlIHNoYWRlclxuXG50eXBlIHRleHR1cmVcblxudHlwZSAnYSB1bmlmb3JtTG9jYXRpb25cblxuY2xhc3MgdHlwZSBhY3RpdmVJbmZvID0gb2JqZWN0XG4gIG1ldGhvZCBzaXplIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX3R5cGUgOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzaGFkZXJQcmVjaXNpb25Gb3JtYXQgPSBvYmplY3RcbiAgbWV0aG9kIHJhbmdlTWluIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmFuZ2VNYXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVjaXNpb24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVuZGVyaW5nQ29udGV4dCA9IG9iamVjdFxuICAoKiogNS4xMy4xIEF0dHJpYnV0ZXMgKilcblxuICBtZXRob2QgY2FudmFzIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHJhd2luZ0J1ZmZlcldpZHRoIDogc2l6ZWkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkcmF3aW5nQnVmZmVySGVpZ2h0IDogc2l6ZWkgcmVhZG9ubHlfcHJvcFxuXG4gICgqKiA1LjEzLjIgR2V0dGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udGV4dCAqKVxuXG4gIG1ldGhvZCBnZXRDb250ZXh0QXR0cmlidXRlcyA6IGNvbnRleHRBdHRyaWJ1dGVzIHQgbWV0aFxuXG4gICgqKiA1LjEzLjMgU2V0dGluZyBhbmQgZ2V0dGluZyBzdGF0ZSAqKVxuXG4gIG1ldGhvZCBhY3RpdmVUZXh0dXJlIDogdGV4dHVyZVVuaXQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kQ29sb3IgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRXF1YXRpb24gOiBibGVuZE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRXF1YXRpb25TZXBhcmF0ZSA6IGJsZW5kTW9kZSAtPiBibGVuZE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRnVuYyA6IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEZ1bmNTZXBhcmF0ZSA6XG4gICAgYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyQ29sb3IgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGVwdGggOiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyU3RlbmNpbCA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sb3JNYXNrIDogYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sIHQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjdWxsRmFjZSA6IGN1bGxGYWNlTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhGdW5jIDogZGVwdGhGdW5jdGlvbiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhNYXNrIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aFJhbmdlIDogY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlzYWJsZSA6IGVuYWJsZUNhcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZW5hYmxlIDogZW5hYmxlQ2FwIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcm9udEZhY2UgOiBmcm9udEZhY2VEaXIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBhcmFtZXRlciA6ICdhLiAnYSBwYXJhbWV0ZXIgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRFcnJvciA6IGVycm9yQ29kZSBtZXRoXG5cbiAgbWV0aG9kIGhpbnQgOiBoaW50VGFyZ2V0IC0+IGhpbnRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpc0VuYWJsZWQgOiBlbmFibGVDYXAgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgbGluZVdpZHRoIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBpeGVsU3RvcmVpIDogJ2EuICdhIHBpeGVsU3RvcmVQYXJhbSAtPiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcG9seWdvbk9mZnNldCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzYW1wbGVDb3ZlcmFnZSA6IGNsYW1wZiAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxGdW5jIDogZGVwdGhGdW5jdGlvbiAtPiBpbnQgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbEZ1bmNTZXBhcmF0ZSA6IGN1bGxGYWNlTW9kZSAtPiBkZXB0aEZ1bmN0aW9uIC0+IGludCAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsTWFzayA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxNYXNrU2VwYXJhdGUgOiBjdWxsRmFjZU1vZGUgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE9wIDogc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxPcFNlcGFyYXRlIDpcbiAgICBjdWxsRmFjZU1vZGUgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuNCBWaWV3aW5nIGFuZCBjbGlwcGluZyAqKVxuXG4gIG1ldGhvZCBzY2lzc29yIDogaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgdmlld3BvcnQgOiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjUgQnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZEJ1ZmZlciA6IGJ1ZmZlclRhcmdldCAtPiBidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEJ1ZmZlcl8gOiBidWZmZXJUYXJnZXQgLT4gYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhX2NyZWF0ZSA6IGJ1ZmZlclRhcmdldCAtPiBzaXplaXB0ciAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YSA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdCAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YV9yYXcgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJTdWJEYXRhIDpcbiAgICBidWZmZXJUYXJnZXQgLT4gaW50cHRyIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyU3ViRGF0YV9yYXcgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBpbnRwdHIgLT4gVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQnVmZmVyIDogYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVCdWZmZXIgOiBidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QnVmZmVyUGFyYW1ldGVyIDogJ2EuIGJ1ZmZlclRhcmdldCAtPiAnYSBidWZmZXJQYXJhbWV0ZXIgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc0J1ZmZlciA6IGJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuNiBGcmFtZWJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRGcmFtZWJ1ZmZlciA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRGcmFtZWJ1ZmZlcl8gOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyU3RhdHVzIG1ldGhcblxuICBtZXRob2QgY3JlYXRlRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciA6XG4gICAgZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcmFtZWJ1ZmZlclRleHR1cmUyRCA6XG4gICAgZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIgOlxuICAgICdhLiBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gJ2EgYXR0YWNoUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc0ZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjcgUmVuZGVyYnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZFJlbmRlcmJ1ZmZlciA6IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kUmVuZGVyYnVmZmVyXyA6IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyIDogJ2EuIHJiVGFyZ2V0IC0+ICdhIHJlbmRlcmJ1ZmZlclBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCByZW5kZXJidWZmZXJTdG9yYWdlIDogcmJUYXJnZXQgLT4gZm9ybWF0IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjggVGV4dHVyZSBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRUZXh0dXJlIDogdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZFRleHR1cmVfIDogdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXByZXNzZWRUZXhJbWFnZTJEIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcHJlc3NlZFRleFN1YkltYWdlMkQgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb3B5VGV4SW1hZ2UyRCA6XG4gICAgdGV4VGFyZ2V0IC0+IGludCAtPiBwaXhlbEZvcm1hdCAtPiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29weVRleFN1YkltYWdlMkQgOlxuICAgIHRleFRhcmdldCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVUZXh0dXJlIDogdGV4dHVyZSB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVGV4dHVyZSA6IHRleHR1cmUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2VuZXJhdGVNaXBtYXAgOiB0ZXhUYXJnZXQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRleFBhcmFtZXRlciA6IHRleFRhcmdldCAtPiAnYSB0ZXhQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzVGV4dHVyZSA6IHRleHR1cmUgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX25ldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiB2b2lkIG9wdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21WaWV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21JbWFnZURhdGEgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZURhdGEgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21JbWFnZSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUNhbnZhcyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21WaWRlbyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLnZpZGVvRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoge1tcbiAgICAgIG1ldGhvZCB0ZXhQYXJhbWV0ZXJmIDogdGV4VGFyZ2V0IC0+IHRleFBhcmFtIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuICAgICBdfVxuICAqKVxuICBtZXRob2QgdGV4UGFyYW1ldGVyaSA6IHRleFRhcmdldCAtPiAnYSB0ZXhQYXJhbSAtPiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tVmlldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUltYWdlRGF0YSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZURhdGEgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21JbWFnZSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZUVsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21DYW52YXMgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbVZpZGVvIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLnZpZGVvRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuOSBQcm9ncmFtcyBhbmQgU2hhZGVycyAqKVxuXG4gIG1ldGhvZCBhdHRhY2hTaGFkZXIgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRBdHRyaWJMb2NhdGlvbiA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21waWxlU2hhZGVyIDogc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVByb2dyYW0gOiBwcm9ncmFtIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTaGFkZXIgOiBzaGFkZXJUeXBlIC0+IHNoYWRlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlU2hhZGVyIDogc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRldGFjaFNoYWRlciA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0YWNoZWRTaGFkZXJzIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9ncmFtUGFyYW1ldGVyIDogJ2EuIHByb2dyYW0gdCAtPiAnYSBwcm9ncmFtUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9ncmFtSW5mb0xvZyA6IHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclBhcmFtZXRlciA6ICdhLiBzaGFkZXIgdCAtPiAnYSBzaGFkZXJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdCA6XG4gICAgc2hhZGVyVHlwZSAtPiBzaGFkZXJQcmVjaXNpb25UeXBlIC0+IHNoYWRlclByZWNpc2lvbkZvcm1hdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVySW5mb0xvZyA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyU291cmNlIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBpc1Byb2dyYW0gOiBwcm9ncmFtIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgaXNTaGFkZXIgOiBzaGFkZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5rUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2hhZGVyU291cmNlIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVzZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZhbGlkYXRlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMCBVbmlmb3JtcyBhbmQgYXR0cmlidXRlcyAqKVxuXG4gIG1ldGhvZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFjdGl2ZUF0dHJpYiA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGFjdGl2ZUluZm8gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFjdGl2ZVVuaWZvcm0gOiBwcm9ncmFtIHQgLT4gdWludCAtPiBhY3RpdmVJbmZvIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJMb2NhdGlvbiA6IHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVbmlmb3JtIDogJ2EgJ2IuIHByb2dyYW0gdCAtPiAnYSB1bmlmb3JtTG9jYXRpb24gdCAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIGdldFVuaWZvcm1Mb2NhdGlvbiA6ICdhLiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgLT4gJ2EgdW5pZm9ybUxvY2F0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRWZXJ0ZXhBdHRyaWIgOiAnYS4gdWludCAtPiAnYSB2ZXJ0ZXhBdHRyaWJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFZlcnRleEF0dHJpYk9mZnNldCA6IHVpbnQgLT4gdmVydGV4QXR0cmliUG9pbnRlclBhcmFtIC0+IHNpemVpcHRyIG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmIDogbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZnZfdHlwZWQgOlxuICAgIG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWZ2IDogbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpIDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpdl90eXBlZCA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaXYgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZiA6IFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmdl90eXBlZCA6XG4gICAgWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmZ2IDogWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaSA6IFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpdiA6IFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaXZfdHlwZWQgOlxuICAgIFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2YgOlxuICAgIFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmdl90eXBlZCA6XG4gICAgWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2Z2IDogWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaSA6IFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaXYgOiBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2l2X3R5cGVkIDpcbiAgICBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmIDpcbiAgICAgICBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGZ2X3R5cGVkIDpcbiAgICBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZnYgOiBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpIDogWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aXYgOiBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGl2X3R5cGVkIDpcbiAgICBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDJmdiA6XG4gICAgWyBgbWF0MiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4MmZ2X3R5cGVkIDpcbiAgICBbIGBtYXQyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4M2Z2IDpcbiAgICBbIGBtYXQzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgzZnZfdHlwZWQgOlxuICAgIFsgYG1hdDMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXg0ZnYgOlxuICAgIFsgYG1hdDQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDRmdl90eXBlZCA6XG4gICAgWyBgbWF0NCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWYgOiB1aW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmIDogdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2Z2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGYgOlxuICAgIHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliUG9pbnRlciA6XG4gICAgdWludCAtPiBpbnQgLT4gZGF0YVR5cGUgLT4gYm9vbCB0IC0+IHNpemVpIC0+IGludHB0ciAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMSBXcml0aW5nIHRvIHRoZSBkcmF3aW5nIGJ1ZmZlciAqKVxuXG4gIG1ldGhvZCBjbGVhciA6IGNsZWFyQnVmZmVyTWFzayAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0FycmF5cyA6IGJlZ2luTW9kZSAtPiBpbnQgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdFbGVtZW50cyA6IGJlZ2luTW9kZSAtPiBzaXplaSAtPiBkYXRhVHlwZSAtPiBpbnRwdHIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbmlzaCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmbHVzaCA6IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEyIFJlYWRpbmcgYmFjayBwaXhlbHMgKilcblxuICBtZXRob2QgcmVhZFBpeGVscyA6XG4gICAgICAgaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTMgRGV0ZWN0aW5nIGNvbnRleHQgbG9zdCBldmVudHMgKilcblxuICBtZXRob2QgaXNDb250ZXh0TG9zdCA6IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTQgRGV0ZWN0aW5nIGFuZCBlbmFibGluZyBleHRlbnNpb25zICopXG5cbiAgbWV0aG9kIGdldFN1cHBvcnRlZEV4dGVuc2lvbnMgOiBqc19zdHJpbmcgdCBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZ2V0RXh0ZW5zaW9uIDogJ2EuIGpzX3N0cmluZyB0IC0+ICdhIHQgb3B0IG1ldGhcblxuICAoKiBVbnR5cGVkISAqKVxuICAoKiogQ29uc3RhbnRzICopXG5cbiAgbWV0aG9kIF9ERVBUSF9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPSU5UUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX0xPT1BfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfU1RSSVBfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRV9TVFJJUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVfRkFOXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9aRVJPIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19TUkNfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFNUX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19EU1RfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0FMUEhBX1NBVFVSQVRFXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfQUREXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX1NVQlRSQUNUXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1RfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlNUQU5UX0NPTE9SXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1JfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlNUQU5UX0FMUEhBXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEFfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FSUkFZX0JVRkZFUl8gOiBidWZmZXJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRUxFTUVOVF9BUlJBWV9CVUZGRVJfIDogYnVmZmVyVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NUUkVBTV9EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NUQVRJQ19EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RZTkFNSUNfRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVCA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CQUNLIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UX0FORF9CQUNLXyA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RJVEhFUiA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRklMTF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PX0VSUk9SXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX0VOVU1fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfVkFMVUVfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfT1BFUkFUSU9OXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PVVRfT0ZfTUVNT1JZXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05URVhUX0xPU1RfV0VCR0xfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVyA6IGZyb250RmFjZURpciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DQ1cgOiBmcm9udEZhY2VEaXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRE9OVF9DQVJFXyA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZBU1RFU1QgOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OSUNFU1QgOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRU5FUkFURV9NSVBNQVBfSElOVF8gOiBoaW50VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fUkdCXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fQUxQSEFfIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9EU1RfUkdCXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9TUkNfUkdCXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfQ09MT1JfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6IGJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElOR18gOiBidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RJVEhFUl9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZJTExfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfV0lEVEhfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfTU9ERV8gOiBjdWxsRmFjZU1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UX0ZBQ0VfIDogZnJvbnRGYWNlRGlyIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfV1JJVEVNQVNLXyA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ0xFQVJfVkFMVUVfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0ZVTkNfIDogZGVwdGhGdW5jdGlvbiBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9DTEVBUl9WQUxVRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfRlVOQ18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1NfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1JFRl8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVkFMVUVfTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfV1JJVEVNQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX0ZVTkNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1JFRl8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1dSSVRFTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZJRVdQT1JUIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX0JPWF8gOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0NMRUFSX1ZBTFVFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9XUklURU1BU0tfIDogYm9vbCB0IGpzX2FycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19BTElHTk1FTlRfUEFSQU0gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BBQ0tfQUxJR05NRU5UXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1RFWFRVUkVfU0laRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WSUVXUE9SVF9ESU1TXyA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1VCUElYRUxfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFRF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR1JFRU5fQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMVUVfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMUEhBX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfVU5JVFNfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUl8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9CSU5ESU5HXzJEXyA6IHRleHR1cmUgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQklORElOR19DVUJFX01BUF8gOiB0ZXh0dXJlIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQlVGRkVSU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfVkFMVUVfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlRfIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU18gOiBUeXBlZF9hcnJheS51aW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRU5FUkFURV9NSVBNQVBfSElOVF9QQVJBTV8gOiBoaW50TW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlVGRkVSX1NJWkVfIDogaW50IGJ1ZmZlclBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CVUZGRVJfVVNBR0VfIDogYnVmZmVyVXNhZ2UgYnVmZmVyUGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JZVEUgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9CWVRFX0RUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hPUlQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF8gOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9JTlRfIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9CWVRFXyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF80XzRfNF80XyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF81XzVfNV8xXyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF81XzZfNV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxQSEEgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0IgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0JBIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTFVNSU5BTkNFIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTFVNSU5BTkNFX0FMUEhBXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfSU5ERVhfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfU1RFTkNJTF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DT01QT05FTlRfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBR01FTlRfU0hBREVSXyA6IHNoYWRlclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX1NIQURFUl8gOiBzaGFkZXJUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfQVRUUklCU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZBUllJTkdfVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hBREVSX1RZUEVfIDogc2hhZGVyVHlwZSBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUxFVEVfU1RBVFVTXyA6IGJvb2wgdCBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT01QSUxFX1NUQVRVU18gOiBib29sIHQgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVMRVRFX1NUQVRVU19QUk9HIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5LX1NUQVRVU18gOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZBTElEQVRFX1NUQVRVU18gOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FUVEFDSEVEX1NIQURFUlNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfVU5JRk9STVNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfQVRUUklCVVRFU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIQURJTkdfTEFOR1VBR0VfVkVSU0lPTl8gOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VSUkVOVF9QUk9HUkFNXyA6IHByb2dyYW0gdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFTkRPUiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJFUiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJTSU9OIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfVEVYVFVSRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0JJTkRJTkdfIDogZnJhbWVidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9CSU5ESU5HXyA6IHJlbmRlcmJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1JFTkRFUkJVRkZFUl9TSVpFIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORVZFUiA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTEVTUyA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR1JFQVRFUiA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9URVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxXQVlTIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9LRUVQIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFUExBQ0UgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5DUiA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUNSIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkVSVCA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTkNSX1dSQVBfIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFQ1JfV1JBUF8gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfWkVST18gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVCA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVIgOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVF8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSX01JUE1BUF9ORUFSRVNUXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUX01JUE1BUF9MSU5FQVJfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUl9NSVBNQVBfTElORUFSXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX01BR19GSUxURVJfIDogdGV4RmlsdGVyIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfTUlOX0ZJTFRFUl8gOiB0ZXhGaWx0ZXIgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9XUkFQX1NfIDogd3JhcE1vZGUgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9XUkFQX1RfIDogd3JhcE1vZGUgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9ORV9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFXzJEXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1lfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWl8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFUEVBVCA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NMQU1QX1RPX0VER0VfIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUlSUk9SRURfUkVQRUFUXyA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQ0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVJfMkRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFUl9DVUJFXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRF8gOiBib29sIHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRURfIDogYm9vbCB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUl8gOiB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElOR18gOlxuICAgIGJ1ZmZlciB0IG9wdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUJfIDpcbiAgICBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT1dfRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NRURJVU1fRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ISUdIX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9XX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01FRElVTV9JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ISUdIX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSIDogZmJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSIDogcmJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCQTQgOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCNV9BMV8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCNTY1IDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NPTVBPTkVOVDE2XyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0lOREVYOF8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1dJRFRIXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfSEVJR0hUXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUXyA6IGZvcm1hdCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfUkVEX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9HUkVFTl9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQkxVRV9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQUxQSEFfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEVfIDogb2JqZWN0VHlwZSBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FX1JFTkRFUkJVRkZFUiA6XG4gICAgcmVuZGVyYnVmZmVyIHQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRV9URVhUVVJFIDogdGV4dHVyZSB0IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTF8gOiBpbnQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0VfIDogaW50IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0FUVEFDSE1FTlQwXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQ09NUExFVEVfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OU18gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfRkxJUF9ZX1dFQkdMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0xfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xfUEFSQU0gOlxuICAgIGNvbG9yc3BhY2VDb252ZXJzaW9uIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT05FIDogY29sb3JzcGFjZUNvbnZlcnNpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlJPV1NFUl9ERUZBVUxUX1dFQkdMXyA6IGNvbG9yc3BhY2VDb252ZXJzaW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19BTElHTk1FTlRfIDogaW50IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfRkxJUF9ZX1dFQkdMXyA6IGJvb2wgdCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMXyA6IGJvb2wgdCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTF8gOiBpbnQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiogNS4xNCBXZWJHTENvbnRleHRFdmVudCAqKVxuXG5jbGFzcyB0eXBlIGNvbnRleHRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50XG5cbiAgbWV0aG9kIHN0YXR1c01lc3NhZ2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIGxldCB3ZWJnbGNvbnRleHRsb3N0ID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dGxvc3RcIlxuXG4gIGxldCB3ZWJnbGNvbnRleHRyZXN0b3JlZCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRyZXN0b3JlZFwiXG5cbiAgbGV0IHdlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvclwiXG5lbmRcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgY2FudmFzRWxlbWVudCA9IG9iamVjdFxuICBtZXRob2QgZ2V0Q29udGV4dCA6IGpzX3N0cmluZyB0IC0+IHJlbmRlcmluZ0NvbnRleHQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb250ZXh0XyA6IGpzX3N0cmluZyB0IC0+IGNvbnRleHRBdHRyaWJ1dGVzIHQgLT4gcmVuZGVyaW5nQ29udGV4dCB0IG9wdCBtZXRoXG5lbmRcblxubGV0IGdldENvbnRleHQgKGMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQpID1cbiAgbGV0IGMgOiBjYW52YXNFbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlIGMgaW5cbiAgbGV0IGN0eCA9IGMjI2dldENvbnRleHQgKEpzLnN0cmluZyBcIndlYmdsXCIpIGluXG4gIGlmIE9wdC50ZXN0IGN0eCB0aGVuIGN0eCBlbHNlIGMgIyMgKGdldENvbnRleHQgKEpzLnN0cmluZyBcImV4cGVyaW1lbnRhbC13ZWJnbFwiKSlcblxubGV0IGdldENvbnRleHRXaXRoQXR0cmlidXRlcyAoYyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCkgYXR0cmlicyA9XG4gIGxldCBjIDogY2FudmFzRWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZSBjIGluXG4gIGxldCBjdHggPSBjIyNnZXRDb250ZXh0XyAoSnMuc3RyaW5nIFwid2ViZ2xcIikgYXR0cmlicyBpblxuICBpZiBPcHQudGVzdCBjdHggdGhlbiBjdHggZWxzZSBjIyNnZXRDb250ZXh0XyAoSnMuc3RyaW5nIFwiZXhwZXJpbWVudGFsLXdlYmdsXCIpIGF0dHJpYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0LCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWdleHAgPSBKcy5yZWdFeHAgSnMudFxuXG50eXBlIHJlc3VsdCA9IEpzLm1hdGNoX3Jlc3VsdCBKcy50XG5cbmxldCByZWdleHAgcyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCByZWdleHBfY2FzZV9mb2xkIHMgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIFwiZ2lcIilcblxubGV0IHJlZ2V4cF93aXRoX2ZsYWcgcyBmID1cbiAgbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyAoXCJnXCIgXiBmKSlcblxubGV0IGJsdW50X3N0cl9hcnJheV9nZXQgYSBpID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IGEgaSkgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuXG5sZXQgc3RyaW5nX21hdGNoIHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSBpO1xuICBKcy5PcHQudG9fb3B0aW9uIChKcy5PcHQubWFwIChyIyNleGVjIChKcy5ieXRlc3RyaW5nIHMpKSBKcy5tYXRjaF9yZXN1bHQpXG5cbmxldCBzZWFyY2ggciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IGk7XG4gIEpzLk9wdC50b19vcHRpb25cbiAgICAoSnMuT3B0Lm1hcFxuICAgICAgIChyIyNleGVjIChKcy5ieXRlc3RyaW5nIHMpKVxuICAgICAgIChmdW4gcmVzX3ByZSAtPlxuICAgICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCByZXNfcHJlIGluXG4gICAgICAgICByZXMjIy5pbmRleCwgcmVzKSlcblxubGV0IHNlYXJjaF9mb3J3YXJkID0gc2VhcmNoXG5cbmxldCBtYXRjaGVkX3N0cmluZyByID0gYmx1bnRfc3RyX2FycmF5X2dldCByIDBcblxubGV0IG1hdGNoZWRfZ3JvdXAgciBpID1cbiAgSnMuT3B0ZGVmLnRvX29wdGlvbiAoSnMuT3B0ZGVmLm1hcCAoSnMuYXJyYXlfZ2V0IHIgaSkgSnMudG9fYnl0ZXN0cmluZylcblxubGV0IHF1b3RlX3JlcGxfcmUgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuc3RyaW5nIFwiWyRdXCIpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCBxdW90ZV9yZXBsIHMgPSAoSnMuYnl0ZXN0cmluZyBzKSMjcmVwbGFjZSBxdW90ZV9yZXBsX3JlIChKcy5zdHJpbmcgXCIkJCQkXCIpXG5cbmxldCBnbG9iYWxfcmVwbGFjZSByIHMgc19ieSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSByIChxdW90ZV9yZXBsIHNfYnkpKVxuXG5sZXQgcmVwbGFjZV9maXJzdCByIHMgc19ieSA9XG4gIGxldCBmbGFncyA9XG4gICAgbWF0Y2ggSnMudG9fYm9vbCByIyMuaWdub3JlQ2FzZSwgSnMudG9fYm9vbCByIyMubXVsdGlsaW5lIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBKcy5zdHJpbmcgXCJcIlxuICAgIHwgZmFsc2UsIHRydWUgLT4gSnMuc3RyaW5nIFwibVwiXG4gICAgfCB0cnVlLCBmYWxzZSAtPiBKcy5zdHJpbmcgXCJpXCJcbiAgICB8IHRydWUsIHRydWUgLT4gSnMuc3RyaW5nIFwibWlcIlxuICBpblxuICBsZXQgcicgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyByIyMuc291cmNlIGZsYWdzIGluXG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgcicgKHF1b3RlX3JlcGwgc19ieSkpXG5cbmxldCBsaXN0X29mX2pzX2FycmF5IGEgPVxuICBsZXQgcmVjIGF1eCBhY2N1IGlkeCA9XG4gICAgaWYgaWR4IDwgMCB0aGVuIGFjY3UgZWxzZSBhdXggKGJsdW50X3N0cl9hcnJheV9nZXQgYSBpZHggOjogYWNjdSkgKGlkeCAtIDEpXG4gIGluXG4gIGF1eCBbXSAoYSMjLmxlbmd0aCAtIDEpXG5cbmxldCBzcGxpdCByIHMgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIGxpc3Rfb2ZfanNfYXJyYXkgKEpzLnN0cl9hcnJheSAoSnMuYnl0ZXN0cmluZyBzKSAjIyAoc3BsaXRfcmVnRXhwIHIpKVxuXG5sZXQgYm91bmRlZF9zcGxpdCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgbGlzdF9vZl9qc19hcnJheSAoSnMuc3RyX2FycmF5IChKcy5ieXRlc3RyaW5nIHMpICMjIChzcGxpdF9yZWdFeHBMaW1pdGVkIHIgaSkpXG5cbigqIE1vcmUgY29uc3RydWN0b3JzICopXG5cbmxldCBxdW90ZV9yZSA9IHJlZ2V4cCBcIltcXFxcXVsoKVxcXFxcXFxcfCsqLj97fV4kXVwiXG5cbmxldCBxdW90ZSBzID0gSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSBxdW90ZV9yZSAoSnMuc3RyaW5nIFwiXFxcXCQmXCIpKVxuXG5sZXQgcmVnZXhwX3N0cmluZyBzID0gcmVnZXhwIChxdW90ZSBzKVxuXG5sZXQgcmVnZXhwX3N0cmluZ19jYXNlX2ZvbGQgcyA9IHJlZ2V4cF9jYXNlX2ZvbGQgKHF1b3RlIHMpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuKCogVXJsIHRhbXBlcmluZy4gKilcblxubGV0IHNwbGl0IGMgcyA9IEpzLnN0cl9hcnJheSAocyMjc3BsaXQgKEpzLnN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKSkpXG5cbmxldCBzcGxpdF8yIGMgcyA9XG4gIGxldCBpbmRleCA9IHMjI2luZGV4T2YgKEpzLnN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKSkgaW5cbiAgaWYgaW5kZXggPCAwIHRoZW4gSnMudW5kZWZpbmVkIGVsc2UgSnMuZGVmIChzIyNzbGljZSAwIGluZGV4LCBzIyNzbGljZV9lbmQgKGluZGV4ICsgMSkpXG5cbmV4Y2VwdGlvbiBMb2NhbF9leG5cblxubGV0IGludGVycnVwdCAoKSA9IHJhaXNlIExvY2FsX2V4blxuXG4oKiB1cmwgKEFLQSBwZXJjZW50KSBlbmNvZGluZy9kZWNvZGluZyAqKVxuXG5sZXQgcGx1c19yZSA9IFJlZ2V4cC5yZWdleHBfc3RyaW5nIFwiK1wiXG5cbmxldCBlc2NhcGVfcGx1cyBzID0gUmVnZXhwLmdsb2JhbF9yZXBsYWNlIHBsdXNfcmUgcyBcIiUyQlwiXG5cbmxldCB1bmVzY2FwZV9wbHVzIHMgPSBSZWdleHAuZ2xvYmFsX3JlcGxhY2UgcGx1c19yZSBzIFwiIFwiXG5cbmxldCBwbHVzX3JlX2pzX3N0cmluZyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5zdHJpbmcgXCJcXFxcK1wiKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgdW5lc2NhcGVfcGx1c19qc19zdHJpbmcgcyA9XG4gIHBsdXNfcmVfanNfc3RyaW5nIyMubGFzdEluZGV4IDo9IDA7XG4gIHMjI3JlcGxhY2UgcGx1c19yZV9qc19zdHJpbmcgKEpzLnN0cmluZyBcIiBcIilcblxubGV0IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIHMgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy51bmVzY2FwZSAodW5lc2NhcGVfcGx1c19qc19zdHJpbmcgcykpXG5cbmxldCB1cmxkZWNvZGUgcyA9IEpzLnRvX2J5dGVzdHJpbmcgKEpzLnVuZXNjYXBlIChKcy5ieXRlc3RyaW5nICh1bmVzY2FwZV9wbHVzIHMpKSlcblxuKCpsZXQgdXJsZW5jb2RlX2pzX3N0cmluZ19zdHJpbmcgcyA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSBzKSopXG5cbmxldCB1cmxlbmNvZGUgPyh3aXRoX3BsdXMgPSB0cnVlKSBzID1cbiAgaWYgd2l0aF9wbHVzXG4gIHRoZW4gZXNjYXBlX3BsdXMgKEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSAoSnMuYnl0ZXN0cmluZyBzKSkpXG4gIGVsc2UgSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIChKcy5ieXRlc3RyaW5nIHMpKVxuXG50eXBlIGh0dHBfdXJsID1cbiAgeyBodV9ob3N0IDogc3RyaW5nICAoKiogVGhlIGhvc3QgcGFydCBvZiB0aGUgdXJsLiAqKVxuICA7IGh1X3BvcnQgOiBpbnQgICgqKiBUaGUgcG9ydCBmb3IgdGhlIGNvbm5lY3Rpb24gaWYgYW55LiAqKVxuICA7IGh1X3BhdGggOiBzdHJpbmcgbGlzdCAgKCoqIFRoZSBwYXRoIHNwbGl0IG9uIFsnLyddIGNoYXJhY3RlcnMuICopXG4gIDsgaHVfcGF0aF9zdHJpbmcgOiBzdHJpbmcgICgqKiBUaGUgb3JpZ2luYWwgZW50aXJlIHBhdGguICopXG4gIDsgaHVfYXJndW1lbnRzIDogKHN0cmluZyAqIHN0cmluZykgbGlzdFxuICAgICAgICAoKiogQXJndW1lbnRzIGFzIGEgZmllbGQtdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc29jaWF0aW9uIGxpc3QuKilcbiAgOyBodV9mcmFnbWVudCA6IHN0cmluZyAgKCoqIFRoZSBmcmFnbWVudCBwYXJ0IChhZnRlciB0aGUgWycjJ10gY2hhcmFjdGVyKS4gKilcbiAgfVxuKCoqIFRoZSB0eXBlIGZvciBIVFRQIHVybC4gKilcblxudHlwZSBmaWxlX3VybCA9XG4gIHsgZnVfcGF0aCA6IHN0cmluZyBsaXN0XG4gIDsgZnVfcGF0aF9zdHJpbmcgOiBzdHJpbmdcbiAgOyBmdV9hcmd1bWVudHMgOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gIDsgZnVfZnJhZ21lbnQgOiBzdHJpbmdcbiAgfVxuKCoqIFRoZSB0eXBlIGZvciBsb2NhbCBmaWxlIHVybHMuICopXG5cbnR5cGUgdXJsID1cbiAgfCBIdHRwIG9mIGh0dHBfdXJsXG4gIHwgSHR0cHMgb2YgaHR0cF91cmxcbiAgfCBGaWxlIG9mIGZpbGVfdXJsXG4gICAgICAoKiogVGhlIHR5cGUgZm9yIHVybHMuIFtGaWxlXSBpcyBmb3IgbG9jYWwgZmlsZXMgYW5kIFtFeG90aWMgc10gaXMgZm9yXG4gICAgdW5rbm93bi91bnN1cHBvcnRlZCBwcm90b2NvbHMuICopXG5cbmV4Y2VwdGlvbiBOb3RfYW5faHR0cF9wcm90b2NvbFxuXG5sZXQgaXNfc2VjdXJlIHByb3Rfc3RyaW5nID1cbiAgbWF0Y2ggSnMudG9fYnl0ZXN0cmluZyBwcm90X3N0cmluZyMjdG9Mb3dlckNhc2Ugd2l0aFxuICB8IFwiaHR0cHM6XCIgfCBcImh0dHBzXCIgLT4gdHJ1ZVxuICB8IFwiaHR0cDpcIiB8IFwiaHR0cFwiIC0+IGZhbHNlXG4gIHwgXCJmaWxlOlwiIHwgXCJmaWxlXCIgfCBfIC0+IHJhaXNlIE5vdF9hbl9odHRwX3Byb3RvY29sXG5cbigqIHBvcnQgbnVtYmVyICopXG5sZXQgZGVmYXVsdF9odHRwX3BvcnQgPSA4MFxuXG5sZXQgZGVmYXVsdF9odHRwc19wb3J0ID0gNDQzXG5cbigqIHBhdGggKilcbmxldCBwYXRoX29mX3BhdGhfc3RyaW5nIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBsZXQgaiA9IHRyeSBTdHJpbmcuaW5kZXhfZnJvbSBzIGkgJy8nIHdpdGggTm90X2ZvdW5kIC0+IGwgaW5cbiAgICBsZXQgd29yZCA9IFN0cmluZy5zdWIgcyBpIChqIC0gaSkgaW5cbiAgICBpZiBqID49IGwgdGhlbiBbIHdvcmQgXSBlbHNlIHdvcmQgOjogYXV4IChqICsgMSlcbiAgaW5cbiAgbWF0Y2ggYXV4IDAgd2l0aFxuICB8IFsgXCJcIiBdIC0+IFtdXG4gIHwgWyBcIlwiOyBcIlwiIF0gLT4gWyBcIlwiIF1cbiAgfCBhIC0+IGFcblxuKCogQXJndW1lbnRzICopXG5sZXQgZW5jb2RlX2FyZ3VtZW50cyBsID1cbiAgU3RyaW5nLmNvbmNhdCBcIiZcIiAoTGlzdC5tYXAgKGZ1biAobiwgdikgLT4gdXJsZW5jb2RlIG4gXiBcIj1cIiBeIHVybGVuY29kZSB2KSBsKVxuXG5sZXQgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmcgcyA9XG4gIGxldCBhcnIgPSBzcGxpdCAnJicgcyBpblxuICBsZXQgbGVuID0gYXJyIyMubGVuZ3RoIGluXG4gIGxldCBuYW1lX3ZhbHVlX3NwbGl0IHMgPSBzcGxpdF8yICc9JyBzIGluXG4gIGxldCByZWMgYXV4IGFjYyBpZHggPVxuICAgIGlmIGlkeCA8IDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBhdXhcbiAgICAgICAgICAoSnMuT3B0ZGVmLmNhc2UgKEpzLmFycmF5X2dldCBhcnIgaWR4KSBpbnRlcnJ1cHQgKGZ1biBzIC0+XG4gICAgICAgICAgICAgICBKcy5PcHRkZWYuY2FzZSAobmFtZV92YWx1ZV9zcGxpdCBzKSBpbnRlcnJ1cHQgKGZ1biAoeCwgeSkgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgZ2V0ID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgaW5cbiAgICAgICAgICAgICAgICAgICBnZXQgeCwgZ2V0IHkpKVxuICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAocHJlZCBpZHgpXG4gICAgICB3aXRoIExvY2FsX2V4biAtPiBhdXggYWNjIChwcmVkIGlkeClcbiAgaW5cbiAgYXV4IFtdIChsZW4gLSAxKVxuXG5sZXQgZGVjb2RlX2FyZ3VtZW50cyBzID0gZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcylcblxubGV0IHVybF9yZSA9XG4gIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAoSnMuYnl0ZXN0cmluZ1xuICAgICAgIFwiXihbSGhdW1R0XVtUdF1bUHBdW1NzXT8pOi8vKFswLTlhLXpBLVouLV0rfFxcXFxbWzAtOWEtekEtWi4tXStcXFxcXXxcXFxcW1swLTlBLUZhLWY6Ll0rXFxcXF0pPyg6KFswLTldKykpPygvKFteXFxcXD8jXSopKFxcXFw/KFteI10qKSk/KCMoLiopKT8pPyRcIilcblxubGV0IGZpbGVfcmUgPVxuICBuZXclanMgSnMucmVnRXhwXG4gICAgKEpzLmJ5dGVzdHJpbmcgXCJeKFtGZl1bSWldW0xsXVtFZV0pOi8vKFteXFxcXD8jXSopKFxcXFw/KFteI10qKSk/KCMoLiopKT8kXCIpXG5cbmxldCB1cmxfb2ZfanNfc3RyaW5nIHMgPVxuICBKcy5PcHQuY2FzZVxuICAgICh1cmxfcmUjI2V4ZWMgcylcbiAgICAoZnVuICgpIC0+XG4gICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAoZmlsZV9yZSMjZXhlYyBzKVxuICAgICAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgICAgIChmdW4gaGFuZGxlIC0+XG4gICAgICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCBoYW5kbGUgaW5cbiAgICAgICAgICBsZXQgcGF0aF9zdHIgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMikgaW50ZXJydXB0KVxuICAgICAgICAgIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKEZpbGVcbiAgICAgICAgICAgICAgIHsgZnVfcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJcbiAgICAgICAgICAgICAgIDsgZnVfcGF0aF9zdHJpbmcgPSBwYXRoX3N0clxuICAgICAgICAgICAgICAgOyBmdV9hcmd1bWVudHMgPVxuICAgICAgICAgICAgICAgICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA0KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgICAgICAgICA7IGZ1X2ZyYWdtZW50ID1cbiAgICAgICAgICAgICAgICAgICBKcy50b19ieXRlc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA2KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgICAgICAgICB9KSkpXG4gICAgKGZ1biBoYW5kbGUgLT5cbiAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgaGFuZGxlIGluXG4gICAgICBsZXQgc3NsID0gaXNfc2VjdXJlIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDEpIGludGVycnVwdCkgaW5cbiAgICAgIGxldCBwb3J0X29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgXCJcIiAtPiBpZiBzc2wgdGhlbiA0NDMgZWxzZSA4MFxuICAgICAgICB8IHMgLT4gaW50X29mX3N0cmluZyBzXG4gICAgICBpblxuICAgICAgbGV0IHBhdGhfc3RyID1cbiAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmdcbiAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA2KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICBpblxuICAgICAgbGV0IHVybCA9XG4gICAgICAgIHsgaHVfaG9zdCA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAyKSBpbnRlcnJ1cHQpXG4gICAgICAgIDsgaHVfcG9ydCA9XG4gICAgICAgICAgICBwb3J0X29mX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMudG9fYnl0ZXN0cmluZ1xuICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA0KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpKVxuICAgICAgICA7IGh1X3BhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyXG4gICAgICAgIDsgaHVfcGF0aF9zdHJpbmcgPSBwYXRoX3N0clxuICAgICAgICA7IGh1X2FyZ3VtZW50cyA9XG4gICAgICAgICAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA4KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgIDsgaHVfZnJhZ21lbnQgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMTApIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIFNvbWUgKGlmIHNzbCB0aGVuIEh0dHBzIHVybCBlbHNlIEh0dHAgdXJsKSlcblxubGV0IHVybF9vZl9zdHJpbmcgcyA9IHVybF9vZl9qc19zdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcylcblxubGV0IHN0cmluZ19vZl91cmwgPSBmdW5jdGlvblxuICB8IEZpbGUgeyBmdV9wYXRoID0gcGF0aDsgZnVfYXJndW1lbnRzID0gYXJnczsgZnVfZnJhZ21lbnQgPSBmcmFnOyBfIH0gLT4gKFxuICAgICAgXCJmaWxlOi8vXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcbiAgfCBIdHRwXG4gICAgICB7IGh1X2hvc3QgPSBob3N0XG4gICAgICA7IGh1X3BvcnQgPSBwb3J0XG4gICAgICA7IGh1X3BhdGggPSBwYXRoXG4gICAgICA7IGh1X2FyZ3VtZW50cyA9IGFyZ3NcbiAgICAgIDsgaHVfZnJhZ21lbnQgPSBmcmFnXG4gICAgICA7IF9cbiAgICAgIH0gLT4gKFxuICAgICAgXCJodHRwOi8vXCJcbiAgICAgIF4gdXJsZW5jb2RlIGhvc3RcbiAgICAgIF4gKG1hdGNoIHBvcnQgd2l0aFxuICAgICAgICB8IDgwIC0+IFwiXCJcbiAgICAgICAgfCBuIC0+IFwiOlwiIF4gc3RyaW5nX29mX2ludCBuKVxuICAgICAgXiBcIi9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuICB8IEh0dHBzXG4gICAgICB7IGh1X2hvc3QgPSBob3N0XG4gICAgICA7IGh1X3BvcnQgPSBwb3J0XG4gICAgICA7IGh1X3BhdGggPSBwYXRoXG4gICAgICA7IGh1X2FyZ3VtZW50cyA9IGFyZ3NcbiAgICAgIDsgaHVfZnJhZ21lbnQgPSBmcmFnXG4gICAgICA7IF9cbiAgICAgIH0gLT4gKFxuICAgICAgXCJodHRwczovL1wiXG4gICAgICBeIHVybGVuY29kZSBob3N0XG4gICAgICBeIChtYXRjaCBwb3J0IHdpdGhcbiAgICAgICAgfCA0NDMgLT4gXCJcIlxuICAgICAgICB8IG4gLT4gXCI6XCIgXiBzdHJpbmdfb2ZfaW50IG4pXG4gICAgICBeIFwiL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG5cbm1vZHVsZSBDdXJyZW50ID0gc3RydWN0XG4gIGxldCBsID1cbiAgICBpZiBKcy5PcHRkZWYudGVzdCAoSnMuT3B0ZGVmLnJldHVybiBEb21faHRtbC53aW5kb3cjIy5sb2NhdGlvbilcbiAgICB0aGVuIERvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uXG4gICAgZWxzZVxuICAgICAgbGV0IGVtcHR5ID0gSnMuc3RyaW5nIFwiXCIgaW5cbiAgICAgIG9iamVjdCVqc1xuICAgICAgICB2YWwgbXV0YWJsZSBocmVmID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwcm90b2NvbCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaG9zdCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaG9zdG5hbWUgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHBvcnQgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHBhdGhuYW1lID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBzZWFyY2ggPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhhc2ggPSBlbXB0eVxuXG4gICAgICAgIHZhbCBvcmlnaW4gPSBKcy51bmRlZmluZWRcblxuICAgICAgICBtZXRob2QgcmVsb2FkID0gKClcblxuICAgICAgICBtZXRob2QgcmVwbGFjZSBfID0gKClcblxuICAgICAgICBtZXRob2QgYXNzaWduIF8gPSAoKVxuICAgICAgZW5kXG5cbiAgbGV0IGhvc3QgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMuaG9zdG5hbWVcblxuICBsZXQgcHJvdG9jb2wgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMucHJvdG9jb2xcblxuICBsZXQgcG9ydCA9XG4gICAgKGZ1biAoKSAtPlxuICAgICAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgKEpzLnRvX2J5dGVzdHJpbmcgbCMjLnBvcnQpKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lKVxuICAgICAgKClcblxuICBsZXQgcGF0aF9zdHJpbmcgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMucGF0aG5hbWVcblxuICBsZXQgcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJpbmdcblxuICBsZXQgYXJndW1lbnRzID1cbiAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgKGlmIEpzLmVxdWFscyAobCMjLnNlYXJjaCMjY2hhckF0IDApIChKcy5zdHJpbmcgXCI/XCIpXG4gICAgICAgdGhlbiBsIyMuc2VhcmNoIyNzbGljZV9lbmQgMVxuICAgICAgIGVsc2UgbCMjLnNlYXJjaClcblxuICBsZXQgZ2V0X2ZyYWdtZW50ICgpID1cbiAgICBsZXQgcyA9IEpzLnRvX2J5dGVzdHJpbmcgbCMjLmhhc2ggaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPiAwICYmIENoYXIuZXF1YWwgcy5bMF0gJyMnXG4gICAgdGhlbiBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICBlbHNlIHNcblxuICBsZXQgc2V0X2ZyYWdtZW50IHMgPSBsIyMuaGFzaCA6PSBKcy5ieXRlc3RyaW5nIHNcblxuICBsZXQgZ2V0ICgpID0gdXJsX29mX2pzX3N0cmluZyBsIyMuaHJlZlxuXG4gIGxldCBzZXQgdSA9IGwjIy5ocmVmIDo9IEpzLmJ5dGVzdHJpbmcgKHN0cmluZ19vZl91cmwgdSlcblxuICBsZXQgYXNfc3RyaW5nID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLmhyZWZcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5leHRlcm5hbCBjcmVhdGVfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IGNvbnRlbnQ6c3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfY3JlYXRlX2ZpbGVcIlxuXG5leHRlcm5hbCByZWFkX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfcmVhZF9maWxlX2NvbnRlbnRcIlxuXG5sZXQgdXBkYXRlX2ZpbGUgfm5hbWUgfmNvbnRlbnQgPVxuICBsZXQgb2MgPSBvcGVuX291dCBuYW1lIGluXG4gIG91dHB1dF9zdHJpbmcgb2MgY29udGVudDtcbiAgY2xvc2Vfb3V0IG9jXG5cbmV4dGVybmFsIHNldF9jaGFubmVsX291dHB1dCcgOlxuICBvdXRfY2hhbm5lbCAtPiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcIlxuXG5leHRlcm5hbCBzZXRfY2hhbm5lbF9pbnB1dCcgOiBpbl9jaGFubmVsIC0+ICh1bml0IC0+IHN0cmluZykgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcIlxuXG5sZXQgc2V0X2NoYW5uZWxfZmx1c2hlciAob3V0X2NoYW5uZWwgOiBvdXRfY2hhbm5lbCkgKGYgOiBzdHJpbmcgLT4gdW5pdCkgPVxuICBsZXQgZicgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgPVxuICAgIEpzLndyYXBfY2FsbGJhY2sgKGZ1biBzIC0+IGYgKEpzLnRvX2J5dGVzdHJpbmcgcykpXG4gIGluXG4gIHNldF9jaGFubmVsX291dHB1dCcgb3V0X2NoYW5uZWwgZidcblxubGV0IHNldF9jaGFubmVsX2ZpbGxlciAoaW5fY2hhbm5lbCA6IGluX2NoYW5uZWwpIChmIDogdW5pdCAtPiBzdHJpbmcpID1cbiAgbGV0IGYnIDogKHVuaXQgLT4gc3RyaW5nKSBKcy5jYWxsYmFjayA9IEpzLndyYXBfY2FsbGJhY2sgZiBpblxuICBzZXRfY2hhbm5lbF9pbnB1dCcgaW5fY2hhbm5lbCBmJ1xuXG5leHRlcm5hbCBtb3VudF9wb2ludCA6IHVuaXQgLT4gc3RyaW5nIGxpc3QgPSBcImNhbWxfbGlzdF9tb3VudF9wb2ludFwiXG5cbmV4dGVybmFsIG1vdW50X2F1dG9sb2FkIDpcbiAgc3RyaW5nIC0+IChzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbW91bnRfYXV0b2xvYWRcIlxuXG5leHRlcm5hbCB1bm1vdW50IDogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfdW5tb3VudFwiXG5cbmxldCBtb3VudCB+cGF0aCBmID1cbiAgbW91bnRfYXV0b2xvYWQgcGF0aCAoSnMud3JhcF9jYWxsYmFjayAoZnVuIHByZWZpeCBwYXRoIC0+IGYgfnByZWZpeCB+cGF0aCkpXG5cbmxldCB1bm1vdW50IH5wYXRoID0gdW5tb3VudCBwYXRoXG5cbmxldCBqc19vZl9vY2FtbF92ZXJzaW9uID1cbiAgaWYgU3RyaW5nLmVxdWFsIExpYl92ZXJzaW9uLmdpdF92ZXJzaW9uIFwiXCJcbiAgdGhlbiBMaWJfdmVyc2lvbi5zXG4gIGVsc2UgTGliX3ZlcnNpb24ucyBeIFwiK1wiIF4gTGliX3ZlcnNpb24uZ2l0X3ZlcnNpb25cbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQWxleGFuZGVyIFlhbmluXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlclNpemUgPSBvYmplY3RcbiAgbWV0aG9kIGlubGluZVNpemUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJsb2NrU2l6ZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50UmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJveFNpemUgOiByZXNpemVPYnNlcnZlclNpemUgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudEJveFNpemUgOiByZXNpemVPYnNlcnZlclNpemUgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgYm94IDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9ic2VydmVfd2l0aE9wdGlvbnMgOlxuICAgICNEb20ubm9kZSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyT3B0aW9ucyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB1bm9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9yZXNpemVfb2JzZXJ2ZXJfb3B0aW9ucyAoKSA6IHJlc2l6ZU9ic2VydmVyT3B0aW9ucyBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCByZXNpemVPYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fUmVzaXplT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHJlc2l6ZU9ic2VydmVyXG5cbmxldCByZXNpemVPYnNlcnZlciA6XG4gICAgKCAgIChyZXNpemVPYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiByZXNpemVPYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgICAgIEpzLmNhbGxiYWNrXG4gICAgIC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgcmVzaXplT2JzZXJ2ZXJcblxubGV0IG9ic2VydmVcbiAgICB+KG5vZGUgOiAjRG9tLm5vZGUgSnMudClcbiAgICB+KGYgOiByZXNpemVPYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiByZXNpemVPYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgPyhib3ggOiBKcy5qc19zdHJpbmcgSnMudCBvcHRpb24pXG4gICAgKCkgOiByZXNpemVPYnNlcnZlciBKcy50ID1cbiAgbGV0IG9icyA9IG5ldyVqcyByZXNpemVPYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICAobWF0Y2ggYm94IHdpdGhcbiAgfCBOb25lIC0+IG9icyMjb2JzZXJ2ZSBub2RlXG4gIHwgU29tZSBib3ggLT5cbiAgICAgIGxldCBvcHRzID0gZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMgKCkgaW5cbiAgICAgIG9wdHMjIy5ib3ggOj0gYm94O1xuICAgICAgb2JzIyNvYnNlcnZlX3dpdGhPcHRpb25zIG5vZGUgb3B0cyk7XG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAyMSBQaGlsaXAgV2hpdGVcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgPSBvYmplY3RcbiAgbWV0aG9kIGVudHJ5VHlwZXMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZUVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbnRyeVR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0VGltZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHVyYXRpb24gOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRFbnRyaWVzIDogcGVyZm9ybWFuY2VFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6IHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0IEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBwZXJmb3JtYW5jZUVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1BlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHBlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgOlxuICAgICggICAocGVyZm9ybWFuY2VPYnNlcnZlckVudHJ5TGlzdCBKcy50IC0+IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAtPiBwZXJmb3JtYW5jZU9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgcGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZSB+ZW50cnlfdHlwZXMgfmYgPVxuICBsZXQgZW50cnlfdHlwZXMgPSBlbnRyeV90eXBlcyB8PiBMaXN0Lm1hcCBKcy5zdHJpbmcgfD4gQXJyYXkub2ZfbGlzdCB8PiBKcy5hcnJheSBpblxuICBsZXQgcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCA6IHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0IEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgbGV0ICgpID0gcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCMjLmVudHJ5VHlwZXMgOj0gZW50cnlfdHlwZXMgaW5cbiAgbGV0IG9icyA9IG5ldyVqcyBwZXJmb3JtYW5jZU9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIGxldCAoKSA9IG9icyMjb2JzZXJ2ZSBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IGluXG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgbXV0YXRpb25PYnNlcnZlckluaXQgPSBvYmplY3RcbiAgbWV0aG9kIGNoaWxkTGlzdCA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlcyA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhcmFjdGVyRGF0YSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VidHJlZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlT2xkVmFsdWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJhY3RlckRhdGFPbGRWYWx1ZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlRmlsdGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbXV0YXRpb25SZWNvcmQgPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWRkZWROb2RlcyA6IERvbS5ub2RlIERvbS5ub2RlTGlzdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVtb3ZlZE5vZGVzIDogRG9tLm5vZGUgRG9tLm5vZGVMaXN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlTmFtZXNwYWNlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2xkVmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbXV0YXRpb25PYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXJJbml0IEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0ICgpIDogbXV0YXRpb25PYnNlcnZlckluaXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgbXV0YXRpb25PYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fTXV0YXRpb25PYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgbXV0YXRpb25PYnNlcnZlclxuXG5sZXQgbXV0YXRpb25PYnNlcnZlciA6XG4gICAgKCAgIChtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgIC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBtdXRhdGlvbk9ic2VydmVyXG5cbmxldCBvYnNlcnZlXG4gICAgfihub2RlIDogI0RvbS5ub2RlIEpzLnQpXG4gICAgfihmIDogbXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgID8oY2hpbGRfbGlzdCA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlcyA6IGJvb2wgb3B0aW9uKVxuICAgID8oY2hhcmFjdGVyX2RhdGEgOiBib29sIG9wdGlvbilcbiAgICA/KHN1YnRyZWUgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZV9vbGRfdmFsdWUgOiBib29sIG9wdGlvbilcbiAgICA/KGNoYXJhY3Rlcl9kYXRhX29sZF92YWx1ZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlX2ZpbHRlciA6IEpzLmpzX3N0cmluZyBKcy50IGxpc3Qgb3B0aW9uKVxuICAgICgpIDogbXV0YXRpb25PYnNlcnZlciBKcy50ID1cbiAgbGV0IG9wdF9pdGVyIHggZiA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGxldCBvYnMgPSBuZXclanMgbXV0YXRpb25PYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICBsZXQgY2ZnID0gZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCAoKSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBjaGlsZF9saXN0IChmdW4gdiAtPiBjZmcjIy5jaGlsZExpc3QgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgYXR0cmlidXRlcyAoZnVuIHYgLT4gY2ZnIyMuYXR0cmlidXRlcyA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBjaGFyYWN0ZXJfZGF0YSAoZnVuIHYgLT4gY2ZnIyMuY2hhcmFjdGVyRGF0YSA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBzdWJ0cmVlIChmdW4gdiAtPiBjZmcjIy5zdWJ0cmVlIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGF0dHJpYnV0ZV9vbGRfdmFsdWUgKGZ1biB2IC0+IGNmZyMjLmF0dHJpYnV0ZU9sZFZhbHVlIDo9IHYpIGluXG4gIGxldCAoKSA9XG4gICAgb3B0X2l0ZXIgY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIChmdW4gdiAtPiBjZmcjIy5jaGFyYWN0ZXJEYXRhT2xkVmFsdWUgOj0gdilcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBvcHRfaXRlciBhdHRyaWJ1dGVfZmlsdGVyIChmdW4gbCAtPlxuICAgICAgICBjZmcjIy5hdHRyaWJ1dGVGaWx0ZXIgOj0gSnMuYXJyYXkgKEFycmF5Lm9mX2xpc3QgbCkpXG4gIGluXG4gIGxldCAoKSA9IG9icyMjb2JzZXJ2ZSBub2RlIGNmZyBpblxuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgUGllcnJlIENoYW1iYXJ0IDIwMTIuXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gPCA+IEpzLnRcblxubGV0IG9iaiA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBjcmVhdGUgKCkgOiAnYSB0ID0gbmV3JWpzIG9ialxuXG5sZXQgYWRkICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgKHYgOiAnYSkgPVxuICAoKiAnXycgaXMgYWRkZWQgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggb2JqZWN0cyBtZXRob2RzICopXG4gIEpzLlVuc2FmZS5zZXQgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKSB2XG5cbmxldCByZW1vdmUgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSA9XG4gIEpzLlVuc2FmZS5kZWxldGUgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKVxuXG5sZXQgZmluZCAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpIDogJ2EgSnMuT3B0ZGVmLnQgPVxuICBKcy5VbnNhZmUuZ2V0IHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSlcblxubGV0IGtleXMgKHQgOiAnYSB0KSA6IEpzLmpzX3N0cmluZyBKcy50IGxpc3QgPVxuICBsZXQga2V5X2FycmF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCA9XG4gICAgSnMuVW5zYWZlLmdsb2JhbCMjLl9PYmplY3QjI2tleXMgdFxuICBpblxuICBsZXQgcmVzID0gcmVmIFtdIGluXG4gIGZvciBpID0gMCB0byBwcmVkIGtleV9hcnJheSMjLmxlbmd0aCBkb1xuICAgIGxldCBrZXkgPVxuICAgICAgSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IGtleV9hcnJheSBpKSAoZnVuICgpIC0+IGZhaWx3aXRoIFwiSnN0YWJsZS5rZXlzXCIpXG4gICAgaW5cbiAgICByZXMgOj0ga2V5IyNzdWJzdHJpbmcgMCAocHJlZCBrZXkjIy5sZW5ndGgpIDo6ICFyZXNcbiAgZG9uZTtcbiAgTGlzdC5yZXYgIXJlc1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCBHcsOpZ29pcmUgSGVucnkgMjAxMC5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUganNvbiA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiAnYS4ganNfc3RyaW5nIHQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBwYXJzZV8gOlxuICAgICdhICdiICdjICdkLiBqc19zdHJpbmcgdCAtPiAoJ2IgdCwganNfc3RyaW5nIHQgLT4gJ2MgLT4gJ2QpIG1ldGhfY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnkgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnlfIDpcbiAgICAnYSAnYiAnYyAnZC4gJ2EgLT4gKCdiLCBqc19zdHJpbmcgdCAtPiAnYyAtPiAnZCkgbWV0aF9jYWxsYmFjayAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IGpzb24gOiBqc29uIEpzLnQgPSBVbnNhZmUuZ2xvYmFsIyMuX0pTT05cblxubGV0IGlucHV0X3Jldml2ZXIgPVxuICBsZXQgcmV2aXZlciBfdGhpcyBfa2V5ICh2YWx1ZSA6IFVuc2FmZS5hbnkpIDogT2JqLnQgPVxuICAgIGlmIEpzLmVxdWFscyAodHlwZW9mIHZhbHVlKSAoc3RyaW5nIFwic3RyaW5nXCIpXG4gICAgdGhlbiBPYmoucmVwciAodG9fYnl0ZXN0cmluZyAoVW5zYWZlLmNvZXJjZSB2YWx1ZSkpXG4gICAgZWxzZSBpZiBpbnN0YW5jZW9mIHZhbHVlIEpzLmFycmF5X2VtcHR5XG4gICAgICAgICAgICAmJiAoVW5zYWZlLmNvZXJjZSB2YWx1ZSkjIy5sZW5ndGggPT0gNFxuICAgICAgICAgICAgJiYgVW5zYWZlLmdldCB2YWx1ZSAwID09IDI1NVxuICAgIHRoZW5cbiAgICAgIE9iai5yZXByXG4gICAgICAgIChKc29vX3J1bnRpbWUuSW50NjQuY3JlYXRlX2ludDY0X2xvX21pX2hpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDEpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDIpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDMpKVxuICAgIGVsc2UgT2JqLnJlcHIgdmFsdWVcbiAgaW5cbiAgd3JhcF9tZXRoX2NhbGxiYWNrIHJldml2ZXJcblxubGV0IHVuc2FmZV9pbnB1dCBzID0ganNvbiMjcGFyc2VfIHMgaW5wdXRfcmV2aXZlclxuXG5jbGFzcyB0eXBlIG9iaiA9IG9iamVjdFxuICBtZXRob2QgY29uc3RydWN0b3IgOiAnYS4gJ2EgY29uc3RyIEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbWxJbnQ2NF9jb25zdHIgPVxuICBsZXQgZHVtbXlfaW50NjQgPSAxTCBpblxuICBsZXQgZHVtbXlfb2JqIDogb2JqIHQgPSBPYmoubWFnaWMgZHVtbXlfaW50NjQgaW5cbiAgZHVtbXlfb2JqIyMuY29uc3RydWN0b3JcblxubGV0IG91dHB1dF9yZXZpdmVyIF9rZXkgKHZhbHVlIDogVW5zYWZlLmFueSkgOiBPYmoudCA9XG4gIGlmIE9iai50YWcgKE9iai5yZXByIHZhbHVlKSA9IE9iai5zdHJpbmdfdGFnXG4gIHRoZW4gT2JqLnJlcHIgKGJ5dGVzdHJpbmcgKE9iai5tYWdpYyB2YWx1ZSA6IHN0cmluZykpXG4gIGVsc2UgaWYgaW5zdGFuY2VvZiB2YWx1ZSBtbEludDY0X2NvbnN0clxuICB0aGVuXG4gICAgbGV0IHZhbHVlID0gVW5zYWZlLmNvZXJjZSB2YWx1ZSBpblxuICAgIE9iai5yZXByIChhcnJheSBbfCAyNTU7IHZhbHVlIyMubG87IHZhbHVlIyMubWk7IHZhbHVlIyMuaGkgfF0pXG4gIGVsc2UgT2JqLnJlcHIgdmFsdWVcblxubGV0IG91dHB1dCBvYmogPSBqc29uIyNzdHJpbmdpZnlfIG9iaiAoSnMud3JhcF9jYWxsYmFjayBvdXRwdXRfcmV2aXZlcilcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBDb2xvciA9IHN0cnVjdFxuICAoKiBUaGUgdHlwZSBvZiBDU1MgY29sb3JzLiBGaXJzdCBieSBuYW1lIGFuZCB0aGVuIGJ5IGNvbnN0cnVjdG9yLiAqKVxuICB0eXBlIG5hbWUgPVxuICAgIHwgQWxpY2VibHVlXG4gICAgfCBBbnRpcXVld2hpdGVcbiAgICB8IEFxdWFcbiAgICB8IEFxdWFtYXJpbmVcbiAgICB8IEF6dXJlXG4gICAgfCBCZWlnZVxuICAgIHwgQmlzcXVlXG4gICAgfCBCbGFja1xuICAgIHwgQmxhbmNoZWRhbG1vbmRcbiAgICB8IEJsdWVcbiAgICB8IEJsdWV2aW9sZXRcbiAgICB8IEJyb3duXG4gICAgfCBCdXJseXdvb2RcbiAgICB8IENhZGV0Ymx1ZVxuICAgIHwgQ2hhcnRyZXVzZVxuICAgIHwgQ2hvY29sYXRlXG4gICAgfCBDb3JhbFxuICAgIHwgQ29ybmZsb3dlcmJsdWVcbiAgICB8IENvcm5zaWxrXG4gICAgfCBDcmltc29uXG4gICAgfCBDeWFuXG4gICAgfCBEYXJrYmx1ZVxuICAgIHwgRGFya2N5YW5cbiAgICB8IERhcmtnb2xkZW5yb2RcbiAgICB8IERhcmtncmF5XG4gICAgfCBEYXJrZ3JlZW5cbiAgICB8IERhcmtncmV5XG4gICAgfCBEYXJra2hha2lcbiAgICB8IERhcmttYWdlbnRhXG4gICAgfCBEYXJrb2xpdmVncmVlblxuICAgIHwgRGFya29yYW5nZVxuICAgIHwgRGFya29yY2hpZFxuICAgIHwgRGFya3JlZFxuICAgIHwgRGFya3NhbG1vblxuICAgIHwgRGFya3NlYWdyZWVuXG4gICAgfCBEYXJrc2xhdGVibHVlXG4gICAgfCBEYXJrc2xhdGVncmF5XG4gICAgfCBEYXJrc2xhdGVncmV5XG4gICAgfCBEYXJrdHVycXVvaXNlXG4gICAgfCBEYXJrdmlvbGV0XG4gICAgfCBEZWVwcGlua1xuICAgIHwgRGVlcHNreWJsdWVcbiAgICB8IERpbWdyYXlcbiAgICB8IERpbWdyZXlcbiAgICB8IERvZGdlcmJsdWVcbiAgICB8IEZpcmVicmlja1xuICAgIHwgRmxvcmFsd2hpdGVcbiAgICB8IEZvcmVzdGdyZWVuXG4gICAgfCBGdWNoc2lhXG4gICAgfCBHYWluc2Jvcm9cbiAgICB8IEdob3N0d2hpdGVcbiAgICB8IEdvbGRcbiAgICB8IEdvbGRlbnJvZFxuICAgIHwgR3JheVxuICAgIHwgR3JleVxuICAgIHwgR3JlZW5cbiAgICB8IEdyZWVueWVsbG93XG4gICAgfCBIb25leWRld1xuICAgIHwgSG90cGlua1xuICAgIHwgSW5kaWFucmVkXG4gICAgfCBJbmRpZ29cbiAgICB8IEl2b3J5XG4gICAgfCBLaGFraVxuICAgIHwgTGF2ZW5kZXJcbiAgICB8IExhdmVuZGVyYmx1c2hcbiAgICB8IExhd25ncmVlblxuICAgIHwgTGVtb25jaGlmZm9uXG4gICAgfCBMaWdodGJsdWVcbiAgICB8IExpZ2h0Y29yYWxcbiAgICB8IExpZ2h0Y3lhblxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3dcbiAgICB8IExpZ2h0Z3JheVxuICAgIHwgTGlnaHRncmVlblxuICAgIHwgTGlnaHRncmV5XG4gICAgfCBMaWdodHBpbmtcbiAgICB8IExpZ2h0c2FsbW9uXG4gICAgfCBMaWdodHNlYWdyZWVuXG4gICAgfCBMaWdodHNreWJsdWVcbiAgICB8IExpZ2h0c2xhdGVncmF5XG4gICAgfCBMaWdodHNsYXRlZ3JleVxuICAgIHwgTGlnaHRzdGVlbGJsdWVcbiAgICB8IExpZ2h0eWVsbG93XG4gICAgfCBMaW1lXG4gICAgfCBMaW1lZ3JlZW5cbiAgICB8IExpbmVuXG4gICAgfCBNYWdlbnRhXG4gICAgfCBNYXJvb25cbiAgICB8IE1lZGl1bWFxdWFtYXJpbmVcbiAgICB8IE1lZGl1bWJsdWVcbiAgICB8IE1lZGl1bW9yY2hpZFxuICAgIHwgTWVkaXVtcHVycGxlXG4gICAgfCBNZWRpdW1zZWFncmVlblxuICAgIHwgTWVkaXVtc2xhdGVibHVlXG4gICAgfCBNZWRpdW1zcHJpbmdncmVlblxuICAgIHwgTWVkaXVtdHVycXVvaXNlXG4gICAgfCBNZWRpdW12aW9sZXRyZWRcbiAgICB8IE1pZG5pZ2h0Ymx1ZVxuICAgIHwgTWludGNyZWFtXG4gICAgfCBNaXN0eXJvc2VcbiAgICB8IE1vY2Nhc2luXG4gICAgfCBOYXZham93aGl0ZVxuICAgIHwgTmF2eVxuICAgIHwgT2xkbGFjZVxuICAgIHwgT2xpdmVcbiAgICB8IE9saXZlZHJhYlxuICAgIHwgT3JhbmdlXG4gICAgfCBPcmFuZ2VyZWRcbiAgICB8IE9yY2hpZFxuICAgIHwgUGFsZWdvbGRlbnJvZFxuICAgIHwgUGFsZWdyZWVuXG4gICAgfCBQYWxldHVycXVvaXNlXG4gICAgfCBQYWxldmlvbGV0cmVkXG4gICAgfCBQYXBheWF3aGlwXG4gICAgfCBQZWFjaHB1ZmZcbiAgICB8IFBlcnVcbiAgICB8IFBpbmtcbiAgICB8IFBsdW1cbiAgICB8IFBvd2RlcmJsdWVcbiAgICB8IFB1cnBsZVxuICAgIHwgUmVkXG4gICAgfCBSb3N5YnJvd25cbiAgICB8IFJveWFsYmx1ZVxuICAgIHwgU2FkZGxlYnJvd25cbiAgICB8IFNhbG1vblxuICAgIHwgU2FuZHlicm93blxuICAgIHwgU2VhZ3JlZW5cbiAgICB8IFNlYXNoZWxsXG4gICAgfCBTaWVubmFcbiAgICB8IFNpbHZlclxuICAgIHwgU2t5Ymx1ZVxuICAgIHwgU2xhdGVibHVlXG4gICAgfCBTbGF0ZWdyYXlcbiAgICB8IFNsYXRlZ3JleVxuICAgIHwgU25vd1xuICAgIHwgU3ByaW5nZ3JlZW5cbiAgICB8IFN0ZWVsYmx1ZVxuICAgIHwgVGFuXG4gICAgfCBUZWFsXG4gICAgfCBUaGlzdGxlXG4gICAgfCBUb21hdG9cbiAgICB8IFR1cnF1b2lzZVxuICAgIHwgVmlvbGV0XG4gICAgfCBXaGVhdFxuICAgIHwgV2hpdGVcbiAgICB8IFdoaXRlc21va2VcbiAgICB8IFllbGxvd1xuICAgIHwgWWVsbG93Z3JlZW5cblxuICBsZXQgc3RyaW5nX29mX25hbWUgPSBmdW5jdGlvblxuICAgIHwgQWxpY2VibHVlIC0+IFwiYWxpY2VibHVlXCJcbiAgICB8IEFudGlxdWV3aGl0ZSAtPiBcImFudGlxdWV3aGl0ZVwiXG4gICAgfCBBcXVhIC0+IFwiYXF1YVwiXG4gICAgfCBBcXVhbWFyaW5lIC0+IFwiYXF1YW1hcmluZVwiXG4gICAgfCBBenVyZSAtPiBcImF6dXJlXCJcbiAgICB8IEJlaWdlIC0+IFwiYmVpZ2VcIlxuICAgIHwgQmlzcXVlIC0+IFwiYmlzcXVlXCJcbiAgICB8IEJsYWNrIC0+IFwiYmxhY2tcIlxuICAgIHwgQmxhbmNoZWRhbG1vbmQgLT4gXCJibGFuY2hlZGFsbW9uZFwiXG4gICAgfCBCbHVlIC0+IFwiYmx1ZVwiXG4gICAgfCBCbHVldmlvbGV0IC0+IFwiYmx1ZXZpb2xldFwiXG4gICAgfCBCcm93biAtPiBcImJyb3duXCJcbiAgICB8IEJ1cmx5d29vZCAtPiBcImJ1cmx5d29vZFwiXG4gICAgfCBDYWRldGJsdWUgLT4gXCJjYWRldGJsdWVcIlxuICAgIHwgQ2hhcnRyZXVzZSAtPiBcImNoYXJ0cmV1c2VcIlxuICAgIHwgQ2hvY29sYXRlIC0+IFwiY2hvY29sYXRlXCJcbiAgICB8IENvcmFsIC0+IFwiY29yYWxcIlxuICAgIHwgQ29ybmZsb3dlcmJsdWUgLT4gXCJjb3JuZmxvd2VyYmx1ZVwiXG4gICAgfCBDb3Juc2lsayAtPiBcImNvcm5zaWxrXCJcbiAgICB8IENyaW1zb24gLT4gXCJjcmltc29uXCJcbiAgICB8IEN5YW4gLT4gXCJjeWFuXCJcbiAgICB8IERhcmtibHVlIC0+IFwiZGFya2JsdWVcIlxuICAgIHwgRGFya2N5YW4gLT4gXCJkYXJrY3lhblwiXG4gICAgfCBEYXJrZ29sZGVucm9kIC0+IFwiZGFya2dvbGRlbnJvZFwiXG4gICAgfCBEYXJrZ3JheSAtPiBcImRhcmtncmF5XCJcbiAgICB8IERhcmtncmVlbiAtPiBcImRhcmtncmVlblwiXG4gICAgfCBEYXJrZ3JleSAtPiBcImRhcmtncmV5XCJcbiAgICB8IERhcmtraGFraSAtPiBcImRhcmtraGFraVwiXG4gICAgfCBEYXJrbWFnZW50YSAtPiBcImRhcmttYWdlbnRhXCJcbiAgICB8IERhcmtvbGl2ZWdyZWVuIC0+IFwiZGFya29saXZlZ3JlZW5cIlxuICAgIHwgRGFya29yYW5nZSAtPiBcImRhcmtvcmFuZ2VcIlxuICAgIHwgRGFya29yY2hpZCAtPiBcImRhcmtvcmNoaWRcIlxuICAgIHwgRGFya3JlZCAtPiBcImRhcmtyZWRcIlxuICAgIHwgRGFya3NhbG1vbiAtPiBcImRhcmtzYWxtb25cIlxuICAgIHwgRGFya3NlYWdyZWVuIC0+IFwiZGFya3NlYWdyZWVuXCJcbiAgICB8IERhcmtzbGF0ZWJsdWUgLT4gXCJkYXJrc2xhdGVibHVlXCJcbiAgICB8IERhcmtzbGF0ZWdyYXkgLT4gXCJkYXJrc2xhdGVncmF5XCJcbiAgICB8IERhcmtzbGF0ZWdyZXkgLT4gXCJkYXJrc2xhdGVncmV5XCJcbiAgICB8IERhcmt0dXJxdW9pc2UgLT4gXCJkYXJrdHVycXVvaXNlXCJcbiAgICB8IERhcmt2aW9sZXQgLT4gXCJkYXJrdmlvbGV0XCJcbiAgICB8IERlZXBwaW5rIC0+IFwiZGVlcHBpbmtcIlxuICAgIHwgRGVlcHNreWJsdWUgLT4gXCJkZWVwc2t5Ymx1ZVwiXG4gICAgfCBEaW1ncmF5IC0+IFwiZGltZ3JheVwiXG4gICAgfCBEaW1ncmV5IC0+IFwiZGltZ3JleVwiXG4gICAgfCBEb2RnZXJibHVlIC0+IFwiZG9kZ2VyYmx1ZVwiXG4gICAgfCBGaXJlYnJpY2sgLT4gXCJmaXJlYnJpY2tcIlxuICAgIHwgRmxvcmFsd2hpdGUgLT4gXCJmbG9yYWx3aGl0ZVwiXG4gICAgfCBGb3Jlc3RncmVlbiAtPiBcImZvcmVzdGdyZWVuXCJcbiAgICB8IEZ1Y2hzaWEgLT4gXCJmdWNoc2lhXCJcbiAgICB8IEdhaW5zYm9ybyAtPiBcImdhaW5zYm9yb1wiXG4gICAgfCBHaG9zdHdoaXRlIC0+IFwiZ2hvc3R3aGl0ZVwiXG4gICAgfCBHb2xkIC0+IFwiZ29sZFwiXG4gICAgfCBHb2xkZW5yb2QgLT4gXCJnb2xkZW5yb2RcIlxuICAgIHwgR3JheSAtPiBcImdyYXlcIlxuICAgIHwgR3JlZW4gLT4gXCJncmVlblwiXG4gICAgfCBHcmVlbnllbGxvdyAtPiBcImdyZWVueWVsbG93XCJcbiAgICB8IEdyZXkgLT4gXCJncmV5XCJcbiAgICB8IEhvbmV5ZGV3IC0+IFwiaG9uZXlkZXdcIlxuICAgIHwgSG90cGluayAtPiBcImhvdHBpbmtcIlxuICAgIHwgSW5kaWFucmVkIC0+IFwiaW5kaWFucmVkXCJcbiAgICB8IEluZGlnbyAtPiBcImluZGlnb1wiXG4gICAgfCBJdm9yeSAtPiBcIml2b3J5XCJcbiAgICB8IEtoYWtpIC0+IFwia2hha2lcIlxuICAgIHwgTGF2ZW5kZXIgLT4gXCJsYXZlbmRlclwiXG4gICAgfCBMYXZlbmRlcmJsdXNoIC0+IFwibGF2ZW5kZXJibHVzaFwiXG4gICAgfCBMYXduZ3JlZW4gLT4gXCJsYXduZ3JlZW5cIlxuICAgIHwgTGVtb25jaGlmZm9uIC0+IFwibGVtb25jaGlmZm9uXCJcbiAgICB8IExpZ2h0Ymx1ZSAtPiBcImxpZ2h0Ymx1ZVwiXG4gICAgfCBMaWdodGNvcmFsIC0+IFwibGlnaHRjb3JhbFwiXG4gICAgfCBMaWdodGN5YW4gLT4gXCJsaWdodGN5YW5cIlxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3cgLT4gXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiXG4gICAgfCBMaWdodGdyYXkgLT4gXCJsaWdodGdyYXlcIlxuICAgIHwgTGlnaHRncmVlbiAtPiBcImxpZ2h0Z3JlZW5cIlxuICAgIHwgTGlnaHRncmV5IC0+IFwibGlnaHRncmV5XCJcbiAgICB8IExpZ2h0cGluayAtPiBcImxpZ2h0cGlua1wiXG4gICAgfCBMaWdodHNhbG1vbiAtPiBcImxpZ2h0c2FsbW9uXCJcbiAgICB8IExpZ2h0c2VhZ3JlZW4gLT4gXCJsaWdodHNlYWdyZWVuXCJcbiAgICB8IExpZ2h0c2t5Ymx1ZSAtPiBcImxpZ2h0c2t5Ymx1ZVwiXG4gICAgfCBMaWdodHNsYXRlZ3JheSAtPiBcImxpZ2h0c2xhdGVncmF5XCJcbiAgICB8IExpZ2h0c2xhdGVncmV5IC0+IFwibGlnaHRzbGF0ZWdyZXlcIlxuICAgIHwgTGlnaHRzdGVlbGJsdWUgLT4gXCJsaWdodHN0ZWVsYmx1ZVwiXG4gICAgfCBMaWdodHllbGxvdyAtPiBcImxpZ2h0eWVsbG93XCJcbiAgICB8IExpbWUgLT4gXCJsaW1lXCJcbiAgICB8IExpbWVncmVlbiAtPiBcImxpbWVncmVlblwiXG4gICAgfCBMaW5lbiAtPiBcImxpbmVuXCJcbiAgICB8IE1hZ2VudGEgLT4gXCJtYWdlbnRhXCJcbiAgICB8IE1hcm9vbiAtPiBcIm1hcm9vblwiXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lIC0+IFwibWVkaXVtYXF1YW1hcmluZVwiXG4gICAgfCBNZWRpdW1ibHVlIC0+IFwibWVkaXVtYmx1ZVwiXG4gICAgfCBNZWRpdW1vcmNoaWQgLT4gXCJtZWRpdW1vcmNoaWRcIlxuICAgIHwgTWVkaXVtcHVycGxlIC0+IFwibWVkaXVtcHVycGxlXCJcbiAgICB8IE1lZGl1bXNlYWdyZWVuIC0+IFwibWVkaXVtc2VhZ3JlZW5cIlxuICAgIHwgTWVkaXVtc2xhdGVibHVlIC0+IFwibWVkaXVtc2xhdGVibHVlXCJcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuIC0+IFwibWVkaXVtc3ByaW5nZ3JlZW5cIlxuICAgIHwgTWVkaXVtdHVycXVvaXNlIC0+IFwibWVkaXVtdHVycXVvaXNlXCJcbiAgICB8IE1lZGl1bXZpb2xldHJlZCAtPiBcIm1lZGl1bXZpb2xldHJlZFwiXG4gICAgfCBNaWRuaWdodGJsdWUgLT4gXCJtaWRuaWdodGJsdWVcIlxuICAgIHwgTWludGNyZWFtIC0+IFwibWludGNyZWFtXCJcbiAgICB8IE1pc3R5cm9zZSAtPiBcIm1pc3R5cm9zZVwiXG4gICAgfCBNb2NjYXNpbiAtPiBcIm1vY2Nhc2luXCJcbiAgICB8IE5hdmFqb3doaXRlIC0+IFwibmF2YWpvd2hpdGVcIlxuICAgIHwgTmF2eSAtPiBcIm5hdnlcIlxuICAgIHwgT2xkbGFjZSAtPiBcIm9sZGxhY2VcIlxuICAgIHwgT2xpdmUgLT4gXCJvbGl2ZVwiXG4gICAgfCBPbGl2ZWRyYWIgLT4gXCJvbGl2ZWRyYWJcIlxuICAgIHwgT3JhbmdlIC0+IFwib3JhbmdlXCJcbiAgICB8IE9yYW5nZXJlZCAtPiBcIm9yYW5nZXJlZFwiXG4gICAgfCBPcmNoaWQgLT4gXCJvcmNoaWRcIlxuICAgIHwgUGFsZWdvbGRlbnJvZCAtPiBcInBhbGVnb2xkZW5yb2RcIlxuICAgIHwgUGFsZWdyZWVuIC0+IFwicGFsZWdyZWVuXCJcbiAgICB8IFBhbGV0dXJxdW9pc2UgLT4gXCJwYWxldHVycXVvaXNlXCJcbiAgICB8IFBhbGV2aW9sZXRyZWQgLT4gXCJwYWxldmlvbGV0cmVkXCJcbiAgICB8IFBhcGF5YXdoaXAgLT4gXCJwYXBheWF3aGlwXCJcbiAgICB8IFBlYWNocHVmZiAtPiBcInBlYWNocHVmZlwiXG4gICAgfCBQZXJ1IC0+IFwicGVydVwiXG4gICAgfCBQaW5rIC0+IFwicGlua1wiXG4gICAgfCBQbHVtIC0+IFwicGx1bVwiXG4gICAgfCBQb3dkZXJibHVlIC0+IFwicG93ZGVyYmx1ZVwiXG4gICAgfCBQdXJwbGUgLT4gXCJwdXJwbGVcIlxuICAgIHwgUmVkIC0+IFwicmVkXCJcbiAgICB8IFJvc3licm93biAtPiBcInJvc3licm93blwiXG4gICAgfCBSb3lhbGJsdWUgLT4gXCJyb3lhbGJsdWVcIlxuICAgIHwgU2FkZGxlYnJvd24gLT4gXCJzYWRkbGVicm93blwiXG4gICAgfCBTYWxtb24gLT4gXCJzYWxtb25cIlxuICAgIHwgU2FuZHlicm93biAtPiBcInNhbmR5YnJvd25cIlxuICAgIHwgU2VhZ3JlZW4gLT4gXCJzZWFncmVlblwiXG4gICAgfCBTZWFzaGVsbCAtPiBcInNlYXNoZWxsXCJcbiAgICB8IFNpZW5uYSAtPiBcInNpZW5uYVwiXG4gICAgfCBTaWx2ZXIgLT4gXCJzaWx2ZXJcIlxuICAgIHwgU2t5Ymx1ZSAtPiBcInNreWJsdWVcIlxuICAgIHwgU2xhdGVibHVlIC0+IFwic2xhdGVibHVlXCJcbiAgICB8IFNsYXRlZ3JheSAtPiBcInNsYXRlZ3JheVwiXG4gICAgfCBTbGF0ZWdyZXkgLT4gXCJzbGF0ZWdyZXlcIlxuICAgIHwgU25vdyAtPiBcInNub3dcIlxuICAgIHwgU3ByaW5nZ3JlZW4gLT4gXCJzcHJpbmdncmVlblwiXG4gICAgfCBTdGVlbGJsdWUgLT4gXCJzdGVlbGJsdWVcIlxuICAgIHwgVGFuIC0+IFwidGFuXCJcbiAgICB8IFRlYWwgLT4gXCJ0ZWFsXCJcbiAgICB8IFRoaXN0bGUgLT4gXCJ0aGlzdGxlXCJcbiAgICB8IFRvbWF0byAtPiBcInRvbWF0b1wiXG4gICAgfCBUdXJxdW9pc2UgLT4gXCJ0dXJxdW9pc2VcIlxuICAgIHwgVmlvbGV0IC0+IFwidmlvbGV0XCJcbiAgICB8IFdoZWF0IC0+IFwid2hlYXRcIlxuICAgIHwgV2hpdGUgLT4gXCJ3aGl0ZVwiXG4gICAgfCBXaGl0ZXNtb2tlIC0+IFwid2hpdGVzbW9rZVwiXG4gICAgfCBZZWxsb3cgLT4gXCJ5ZWxsb3dcIlxuICAgIHwgWWVsbG93Z3JlZW4gLT4gXCJ5ZWxsb3dncmVlblwiXG5cbiAgbGV0IG5hbWVfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFwiYWxpY2VibHVlXCIgLT4gQWxpY2VibHVlXG4gICAgfCBcImFudGlxdWV3aGl0ZVwiIC0+IEFudGlxdWV3aGl0ZVxuICAgIHwgXCJhcXVhXCIgLT4gQXF1YVxuICAgIHwgXCJhcXVhbWFyaW5lXCIgLT4gQXF1YW1hcmluZVxuICAgIHwgXCJhenVyZVwiIC0+IEF6dXJlXG4gICAgfCBcImJlaWdlXCIgLT4gQmVpZ2VcbiAgICB8IFwiYmlzcXVlXCIgLT4gQmlzcXVlXG4gICAgfCBcImJsYWNrXCIgLT4gQmxhY2tcbiAgICB8IFwiYmxhbmNoZWRhbG1vbmRcIiAtPiBCbGFuY2hlZGFsbW9uZFxuICAgIHwgXCJibHVlXCIgLT4gQmx1ZVxuICAgIHwgXCJibHVldmlvbGV0XCIgLT4gQmx1ZXZpb2xldFxuICAgIHwgXCJicm93blwiIC0+IEJyb3duXG4gICAgfCBcImJ1cmx5d29vZFwiIC0+IEJ1cmx5d29vZFxuICAgIHwgXCJjYWRldGJsdWVcIiAtPiBDYWRldGJsdWVcbiAgICB8IFwiY2hhcnRyZXVzZVwiIC0+IENoYXJ0cmV1c2VcbiAgICB8IFwiY2hvY29sYXRlXCIgLT4gQ2hvY29sYXRlXG4gICAgfCBcImNvcmFsXCIgLT4gQ29yYWxcbiAgICB8IFwiY29ybmZsb3dlcmJsdWVcIiAtPiBDb3JuZmxvd2VyYmx1ZVxuICAgIHwgXCJjb3Juc2lsa1wiIC0+IENvcm5zaWxrXG4gICAgfCBcImNyaW1zb25cIiAtPiBDcmltc29uXG4gICAgfCBcImN5YW5cIiAtPiBDeWFuXG4gICAgfCBcImRhcmtibHVlXCIgLT4gRGFya2JsdWVcbiAgICB8IFwiZGFya2N5YW5cIiAtPiBEYXJrY3lhblxuICAgIHwgXCJkYXJrZ29sZGVucm9kXCIgLT4gRGFya2dvbGRlbnJvZFxuICAgIHwgXCJkYXJrZ3JheVwiIC0+IERhcmtncmF5XG4gICAgfCBcImRhcmtncmVlblwiIC0+IERhcmtncmVlblxuICAgIHwgXCJkYXJrZ3JleVwiIC0+IERhcmtncmV5XG4gICAgfCBcImRhcmtraGFraVwiIC0+IERhcmtraGFraVxuICAgIHwgXCJkYXJrbWFnZW50YVwiIC0+IERhcmttYWdlbnRhXG4gICAgfCBcImRhcmtvbGl2ZWdyZWVuXCIgLT4gRGFya29saXZlZ3JlZW5cbiAgICB8IFwiZGFya29yYW5nZVwiIC0+IERhcmtvcmFuZ2VcbiAgICB8IFwiZGFya29yY2hpZFwiIC0+IERhcmtvcmNoaWRcbiAgICB8IFwiZGFya3JlZFwiIC0+IERhcmtyZWRcbiAgICB8IFwiZGFya3NhbG1vblwiIC0+IERhcmtzYWxtb25cbiAgICB8IFwiZGFya3NlYWdyZWVuXCIgLT4gRGFya3NlYWdyZWVuXG4gICAgfCBcImRhcmtzbGF0ZWJsdWVcIiAtPiBEYXJrc2xhdGVibHVlXG4gICAgfCBcImRhcmtzbGF0ZWdyYXlcIiAtPiBEYXJrc2xhdGVncmF5XG4gICAgfCBcImRhcmtzbGF0ZWdyZXlcIiAtPiBEYXJrc2xhdGVncmV5XG4gICAgfCBcImRhcmt0dXJxdW9pc2VcIiAtPiBEYXJrdHVycXVvaXNlXG4gICAgfCBcImRhcmt2aW9sZXRcIiAtPiBEYXJrdmlvbGV0XG4gICAgfCBcImRlZXBwaW5rXCIgLT4gRGVlcHBpbmtcbiAgICB8IFwiZGVlcHNreWJsdWVcIiAtPiBEZWVwc2t5Ymx1ZVxuICAgIHwgXCJkaW1ncmF5XCIgLT4gRGltZ3JheVxuICAgIHwgXCJkaW1ncmV5XCIgLT4gRGltZ3JleVxuICAgIHwgXCJkb2RnZXJibHVlXCIgLT4gRG9kZ2VyYmx1ZVxuICAgIHwgXCJmaXJlYnJpY2tcIiAtPiBGaXJlYnJpY2tcbiAgICB8IFwiZmxvcmFsd2hpdGVcIiAtPiBGbG9yYWx3aGl0ZVxuICAgIHwgXCJmb3Jlc3RncmVlblwiIC0+IEZvcmVzdGdyZWVuXG4gICAgfCBcImZ1Y2hzaWFcIiAtPiBGdWNoc2lhXG4gICAgfCBcImdhaW5zYm9yb1wiIC0+IEdhaW5zYm9yb1xuICAgIHwgXCJnaG9zdHdoaXRlXCIgLT4gR2hvc3R3aGl0ZVxuICAgIHwgXCJnb2xkXCIgLT4gR29sZFxuICAgIHwgXCJnb2xkZW5yb2RcIiAtPiBHb2xkZW5yb2RcbiAgICB8IFwiZ3JheVwiIC0+IEdyYXlcbiAgICB8IFwiZ3JlZW5cIiAtPiBHcmVlblxuICAgIHwgXCJncmVlbnllbGxvd1wiIC0+IEdyZWVueWVsbG93XG4gICAgfCBcImdyZXlcIiAtPiBHcmV5XG4gICAgfCBcImhvbmV5ZGV3XCIgLT4gSG9uZXlkZXdcbiAgICB8IFwiaG90cGlua1wiIC0+IEhvdHBpbmtcbiAgICB8IFwiaW5kaWFucmVkXCIgLT4gSW5kaWFucmVkXG4gICAgfCBcImluZGlnb1wiIC0+IEluZGlnb1xuICAgIHwgXCJpdm9yeVwiIC0+IEl2b3J5XG4gICAgfCBcImtoYWtpXCIgLT4gS2hha2lcbiAgICB8IFwibGF2ZW5kZXJcIiAtPiBMYXZlbmRlclxuICAgIHwgXCJsYXZlbmRlcmJsdXNoXCIgLT4gTGF2ZW5kZXJibHVzaFxuICAgIHwgXCJsYXduZ3JlZW5cIiAtPiBMYXduZ3JlZW5cbiAgICB8IFwibGVtb25jaGlmZm9uXCIgLT4gTGVtb25jaGlmZm9uXG4gICAgfCBcImxpZ2h0Ymx1ZVwiIC0+IExpZ2h0Ymx1ZVxuICAgIHwgXCJsaWdodGNvcmFsXCIgLT4gTGlnaHRjb3JhbFxuICAgIHwgXCJsaWdodGN5YW5cIiAtPiBMaWdodGN5YW5cbiAgICB8IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIiAtPiBMaWdodGdvbGRlbnJvZHllbGxvd1xuICAgIHwgXCJsaWdodGdyYXlcIiAtPiBMaWdodGdyYXlcbiAgICB8IFwibGlnaHRncmVlblwiIC0+IExpZ2h0Z3JlZW5cbiAgICB8IFwibGlnaHRncmV5XCIgLT4gTGlnaHRncmV5XG4gICAgfCBcImxpZ2h0cGlua1wiIC0+IExpZ2h0cGlua1xuICAgIHwgXCJsaWdodHNhbG1vblwiIC0+IExpZ2h0c2FsbW9uXG4gICAgfCBcImxpZ2h0c2VhZ3JlZW5cIiAtPiBMaWdodHNlYWdyZWVuXG4gICAgfCBcImxpZ2h0c2t5Ymx1ZVwiIC0+IExpZ2h0c2t5Ymx1ZVxuICAgIHwgXCJsaWdodHNsYXRlZ3JheVwiIC0+IExpZ2h0c2xhdGVncmF5XG4gICAgfCBcImxpZ2h0c2xhdGVncmV5XCIgLT4gTGlnaHRzbGF0ZWdyZXlcbiAgICB8IFwibGlnaHRzdGVlbGJsdWVcIiAtPiBMaWdodHN0ZWVsYmx1ZVxuICAgIHwgXCJsaWdodHllbGxvd1wiIC0+IExpZ2h0eWVsbG93XG4gICAgfCBcImxpbWVcIiAtPiBMaW1lXG4gICAgfCBcImxpbWVncmVlblwiIC0+IExpbWVncmVlblxuICAgIHwgXCJsaW5lblwiIC0+IExpbmVuXG4gICAgfCBcIm1hZ2VudGFcIiAtPiBNYWdlbnRhXG4gICAgfCBcIm1hcm9vblwiIC0+IE1hcm9vblxuICAgIHwgXCJtZWRpdW1hcXVhbWFyaW5lXCIgLT4gTWVkaXVtYXF1YW1hcmluZVxuICAgIHwgXCJtZWRpdW1ibHVlXCIgLT4gTWVkaXVtYmx1ZVxuICAgIHwgXCJtZWRpdW1vcmNoaWRcIiAtPiBNZWRpdW1vcmNoaWRcbiAgICB8IFwibWVkaXVtcHVycGxlXCIgLT4gTWVkaXVtcHVycGxlXG4gICAgfCBcIm1lZGl1bXNlYWdyZWVuXCIgLT4gTWVkaXVtc2VhZ3JlZW5cbiAgICB8IFwibWVkaXVtc2xhdGVibHVlXCIgLT4gTWVkaXVtc2xhdGVibHVlXG4gICAgfCBcIm1lZGl1bXNwcmluZ2dyZWVuXCIgLT4gTWVkaXVtc3ByaW5nZ3JlZW5cbiAgICB8IFwibWVkaXVtdHVycXVvaXNlXCIgLT4gTWVkaXVtdHVycXVvaXNlXG4gICAgfCBcIm1lZGl1bXZpb2xldHJlZFwiIC0+IE1lZGl1bXZpb2xldHJlZFxuICAgIHwgXCJtaWRuaWdodGJsdWVcIiAtPiBNaWRuaWdodGJsdWVcbiAgICB8IFwibWludGNyZWFtXCIgLT4gTWludGNyZWFtXG4gICAgfCBcIm1pc3R5cm9zZVwiIC0+IE1pc3R5cm9zZVxuICAgIHwgXCJtb2NjYXNpblwiIC0+IE1vY2Nhc2luXG4gICAgfCBcIm5hdmFqb3doaXRlXCIgLT4gTmF2YWpvd2hpdGVcbiAgICB8IFwibmF2eVwiIC0+IE5hdnlcbiAgICB8IFwib2xkbGFjZVwiIC0+IE9sZGxhY2VcbiAgICB8IFwib2xpdmVcIiAtPiBPbGl2ZVxuICAgIHwgXCJvbGl2ZWRyYWJcIiAtPiBPbGl2ZWRyYWJcbiAgICB8IFwib3JhbmdlXCIgLT4gT3JhbmdlXG4gICAgfCBcIm9yYW5nZXJlZFwiIC0+IE9yYW5nZXJlZFxuICAgIHwgXCJvcmNoaWRcIiAtPiBPcmNoaWRcbiAgICB8IFwicGFsZWdvbGRlbnJvZFwiIC0+IFBhbGVnb2xkZW5yb2RcbiAgICB8IFwicGFsZWdyZWVuXCIgLT4gUGFsZWdyZWVuXG4gICAgfCBcInBhbGV0dXJxdW9pc2VcIiAtPiBQYWxldHVycXVvaXNlXG4gICAgfCBcInBhbGV2aW9sZXRyZWRcIiAtPiBQYWxldmlvbGV0cmVkXG4gICAgfCBcInBhcGF5YXdoaXBcIiAtPiBQYXBheWF3aGlwXG4gICAgfCBcInBlYWNocHVmZlwiIC0+IFBlYWNocHVmZlxuICAgIHwgXCJwZXJ1XCIgLT4gUGVydVxuICAgIHwgXCJwaW5rXCIgLT4gUGlua1xuICAgIHwgXCJwbHVtXCIgLT4gUGx1bVxuICAgIHwgXCJwb3dkZXJibHVlXCIgLT4gUG93ZGVyYmx1ZVxuICAgIHwgXCJwdXJwbGVcIiAtPiBQdXJwbGVcbiAgICB8IFwicmVkXCIgLT4gUmVkXG4gICAgfCBcInJvc3licm93blwiIC0+IFJvc3licm93blxuICAgIHwgXCJyb3lhbGJsdWVcIiAtPiBSb3lhbGJsdWVcbiAgICB8IFwic2FkZGxlYnJvd25cIiAtPiBTYWRkbGVicm93blxuICAgIHwgXCJzYWxtb25cIiAtPiBTYWxtb25cbiAgICB8IFwic2FuZHlicm93blwiIC0+IFNhbmR5YnJvd25cbiAgICB8IFwic2VhZ3JlZW5cIiAtPiBTZWFncmVlblxuICAgIHwgXCJzZWFzaGVsbFwiIC0+IFNlYXNoZWxsXG4gICAgfCBcInNpZW5uYVwiIC0+IFNpZW5uYVxuICAgIHwgXCJzaWx2ZXJcIiAtPiBTaWx2ZXJcbiAgICB8IFwic2t5Ymx1ZVwiIC0+IFNreWJsdWVcbiAgICB8IFwic2xhdGVibHVlXCIgLT4gU2xhdGVibHVlXG4gICAgfCBcInNsYXRlZ3JheVwiIC0+IFNsYXRlZ3JheVxuICAgIHwgXCJzbGF0ZWdyZXlcIiAtPiBTbGF0ZWdyZXlcbiAgICB8IFwic25vd1wiIC0+IFNub3dcbiAgICB8IFwic3ByaW5nZ3JlZW5cIiAtPiBTcHJpbmdncmVlblxuICAgIHwgXCJzdGVlbGJsdWVcIiAtPiBTdGVlbGJsdWVcbiAgICB8IFwidGFuXCIgLT4gVGFuXG4gICAgfCBcInRlYWxcIiAtPiBUZWFsXG4gICAgfCBcInRoaXN0bGVcIiAtPiBUaGlzdGxlXG4gICAgfCBcInRvbWF0b1wiIC0+IFRvbWF0b1xuICAgIHwgXCJ0dXJxdW9pc2VcIiAtPiBUdXJxdW9pc2VcbiAgICB8IFwidmlvbGV0XCIgLT4gVmlvbGV0XG4gICAgfCBcIndoZWF0XCIgLT4gV2hlYXRcbiAgICB8IFwid2hpdGVcIiAtPiBXaGl0ZVxuICAgIHwgXCJ3aGl0ZXNtb2tlXCIgLT4gV2hpdGVzbW9rZVxuICAgIHwgXCJ5ZWxsb3dcIiAtPiBZZWxsb3dcbiAgICB8IFwieWVsbG93Z3JlZW5cIiAtPiBZZWxsb3dncmVlblxuICAgIHwgcyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yIG5hbWVcIikpXG5cbiAgbGV0IHJnYl9vZl9uYW1lID0gZnVuY3Rpb25cbiAgICB8IEFsaWNlYmx1ZSAtPiAyNDAsIDI0OCwgMjU1XG4gICAgfCBBbnRpcXVld2hpdGUgLT4gMjUwLCAyMzUsIDIxNVxuICAgIHwgQXF1YSAtPiAwLCAyNTUsIDI1NVxuICAgIHwgQXF1YW1hcmluZSAtPiAxMjcsIDI1NSwgMjEyXG4gICAgfCBBenVyZSAtPiAyNDAsIDI1NSwgMjU1XG4gICAgfCBCZWlnZSAtPiAyNDUsIDI0NSwgMjIwXG4gICAgfCBCaXNxdWUgLT4gMjU1LCAyMjgsIDE5NlxuICAgIHwgQmxhY2sgLT4gMCwgMCwgMFxuICAgIHwgQmxhbmNoZWRhbG1vbmQgLT4gMjU1LCAyMzUsIDIwNVxuICAgIHwgQmx1ZSAtPiAwLCAwLCAyNTVcbiAgICB8IEJsdWV2aW9sZXQgLT4gMTM4LCA0MywgMjI2XG4gICAgfCBCcm93biAtPiAxNjUsIDQyLCA0MlxuICAgIHwgQnVybHl3b29kIC0+IDIyMiwgMTg0LCAxMzVcbiAgICB8IENhZGV0Ymx1ZSAtPiA5NSwgMTU4LCAxNjBcbiAgICB8IENoYXJ0cmV1c2UgLT4gMTI3LCAyNTUsIDBcbiAgICB8IENob2NvbGF0ZSAtPiAyMTAsIDEwNSwgMzBcbiAgICB8IENvcmFsIC0+IDI1NSwgMTI3LCA4MFxuICAgIHwgQ29ybmZsb3dlcmJsdWUgLT4gMTAwLCAxNDksIDIzN1xuICAgIHwgQ29ybnNpbGsgLT4gMjU1LCAyNDgsIDIyMFxuICAgIHwgQ3JpbXNvbiAtPiAyMjAsIDIwLCA2MFxuICAgIHwgQ3lhbiAtPiAwLCAyNTUsIDI1NVxuICAgIHwgRGFya2JsdWUgLT4gMCwgMCwgMTM5XG4gICAgfCBEYXJrY3lhbiAtPiAwLCAxMzksIDEzOVxuICAgIHwgRGFya2dvbGRlbnJvZCAtPiAxODQsIDEzNCwgMTFcbiAgICB8IERhcmtncmF5IC0+IDE2OSwgMTY5LCAxNjlcbiAgICB8IERhcmtncmVlbiAtPiAwLCAxMDAsIDBcbiAgICB8IERhcmtncmV5IC0+IDE2OSwgMTY5LCAxNjlcbiAgICB8IERhcmtraGFraSAtPiAxODksIDE4MywgMTA3XG4gICAgfCBEYXJrbWFnZW50YSAtPiAxMzksIDAsIDEzOVxuICAgIHwgRGFya29saXZlZ3JlZW4gLT4gODUsIDEwNywgNDdcbiAgICB8IERhcmtvcmFuZ2UgLT4gMjU1LCAxNDAsIDBcbiAgICB8IERhcmtvcmNoaWQgLT4gMTUzLCA1MCwgMjA0XG4gICAgfCBEYXJrcmVkIC0+IDEzOSwgMCwgMFxuICAgIHwgRGFya3NhbG1vbiAtPiAyMzMsIDE1MCwgMTIyXG4gICAgfCBEYXJrc2VhZ3JlZW4gLT4gMTQzLCAxODgsIDE0M1xuICAgIHwgRGFya3NsYXRlYmx1ZSAtPiA3MiwgNjEsIDEzOVxuICAgIHwgRGFya3NsYXRlZ3JheSAtPiA0NywgNzksIDc5XG4gICAgfCBEYXJrc2xhdGVncmV5IC0+IDQ3LCA3OSwgNzlcbiAgICB8IERhcmt0dXJxdW9pc2UgLT4gMCwgMjA2LCAyMDlcbiAgICB8IERhcmt2aW9sZXQgLT4gMTQ4LCAwLCAyMTFcbiAgICB8IERlZXBwaW5rIC0+IDI1NSwgMjAsIDE0N1xuICAgIHwgRGVlcHNreWJsdWUgLT4gMCwgMTkxLCAyNTVcbiAgICB8IERpbWdyYXkgLT4gMTA1LCAxMDUsIDEwNVxuICAgIHwgRGltZ3JleSAtPiAxMDUsIDEwNSwgMTA1XG4gICAgfCBEb2RnZXJibHVlIC0+IDMwLCAxNDQsIDI1NVxuICAgIHwgRmlyZWJyaWNrIC0+IDE3OCwgMzQsIDM0XG4gICAgfCBGbG9yYWx3aGl0ZSAtPiAyNTUsIDI1MCwgMjQwXG4gICAgfCBGb3Jlc3RncmVlbiAtPiAzNCwgMTM5LCAzNFxuICAgIHwgRnVjaHNpYSAtPiAyNTUsIDAsIDI1NVxuICAgIHwgR2FpbnNib3JvIC0+IDIyMCwgMjIwLCAyMjBcbiAgICB8IEdob3N0d2hpdGUgLT4gMjQ4LCAyNDgsIDI1NVxuICAgIHwgR29sZCAtPiAyNTUsIDIxNSwgMFxuICAgIHwgR29sZGVucm9kIC0+IDIxOCwgMTY1LCAzMlxuICAgIHwgR3JheSAtPiAxMjgsIDEyOCwgMTI4XG4gICAgfCBHcmVlbiAtPiAwLCAxMjgsIDBcbiAgICB8IEdyZWVueWVsbG93IC0+IDE3MywgMjU1LCA0N1xuICAgIHwgR3JleSAtPiAxMjgsIDEyOCwgMTI4XG4gICAgfCBIb25leWRldyAtPiAyNDAsIDI1NSwgMjQwXG4gICAgfCBIb3RwaW5rIC0+IDI1NSwgMTA1LCAxODBcbiAgICB8IEluZGlhbnJlZCAtPiAyMDUsIDkyLCA5MlxuICAgIHwgSW5kaWdvIC0+IDc1LCAwLCAxMzBcbiAgICB8IEl2b3J5IC0+IDI1NSwgMjU1LCAyNDBcbiAgICB8IEtoYWtpIC0+IDI0MCwgMjMwLCAxNDBcbiAgICB8IExhdmVuZGVyIC0+IDIzMCwgMjMwLCAyNTBcbiAgICB8IExhdmVuZGVyYmx1c2ggLT4gMjU1LCAyNDAsIDI0NVxuICAgIHwgTGF3bmdyZWVuIC0+IDEyNCwgMjUyLCAwXG4gICAgfCBMZW1vbmNoaWZmb24gLT4gMjU1LCAyNTAsIDIwNVxuICAgIHwgTGlnaHRibHVlIC0+IDE3MywgMjE2LCAyMzBcbiAgICB8IExpZ2h0Y29yYWwgLT4gMjQwLCAxMjgsIDEyOFxuICAgIHwgTGlnaHRjeWFuIC0+IDIyNCwgMjU1LCAyNTVcbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93IC0+IDI1MCwgMjUwLCAyMTBcbiAgICB8IExpZ2h0Z3JheSAtPiAyMTEsIDIxMSwgMjExXG4gICAgfCBMaWdodGdyZWVuIC0+IDE0NCwgMjM4LCAxNDRcbiAgICB8IExpZ2h0Z3JleSAtPiAyMTEsIDIxMSwgMjExXG4gICAgfCBMaWdodHBpbmsgLT4gMjU1LCAxODIsIDE5M1xuICAgIHwgTGlnaHRzYWxtb24gLT4gMjU1LCAxNjAsIDEyMlxuICAgIHwgTGlnaHRzZWFncmVlbiAtPiAzMiwgMTc4LCAxNzBcbiAgICB8IExpZ2h0c2t5Ymx1ZSAtPiAxMzUsIDIwNiwgMjUwXG4gICAgfCBMaWdodHNsYXRlZ3JheSAtPiAxMTksIDEzNiwgMTUzXG4gICAgfCBMaWdodHNsYXRlZ3JleSAtPiAxMTksIDEzNiwgMTUzXG4gICAgfCBMaWdodHN0ZWVsYmx1ZSAtPiAxNzYsIDE5NiwgMjIyXG4gICAgfCBMaWdodHllbGxvdyAtPiAyNTUsIDI1NSwgMjI0XG4gICAgfCBMaW1lIC0+IDAsIDI1NSwgMFxuICAgIHwgTGltZWdyZWVuIC0+IDUwLCAyMDUsIDUwXG4gICAgfCBMaW5lbiAtPiAyNTAsIDI0MCwgMjMwXG4gICAgfCBNYWdlbnRhIC0+IDI1NSwgMCwgMjU1XG4gICAgfCBNYXJvb24gLT4gMTI4LCAwLCAwXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lIC0+IDEwMiwgMjA1LCAxNzBcbiAgICB8IE1lZGl1bWJsdWUgLT4gMCwgMCwgMjA1XG4gICAgfCBNZWRpdW1vcmNoaWQgLT4gMTg2LCA4NSwgMjExXG4gICAgfCBNZWRpdW1wdXJwbGUgLT4gMTQ3LCAxMTIsIDIxOVxuICAgIHwgTWVkaXVtc2VhZ3JlZW4gLT4gNjAsIDE3OSwgMTEzXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWUgLT4gMTIzLCAxMDQsIDIzOFxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW4gLT4gMCwgMjUwLCAxNTRcbiAgICB8IE1lZGl1bXR1cnF1b2lzZSAtPiA3MiwgMjA5LCAyMDRcbiAgICB8IE1lZGl1bXZpb2xldHJlZCAtPiAxOTksIDIxLCAxMzNcbiAgICB8IE1pZG5pZ2h0Ymx1ZSAtPiAyNSwgMjUsIDExMlxuICAgIHwgTWludGNyZWFtIC0+IDI0NSwgMjU1LCAyNTBcbiAgICB8IE1pc3R5cm9zZSAtPiAyNTUsIDIyOCwgMjI1XG4gICAgfCBNb2NjYXNpbiAtPiAyNTUsIDIyOCwgMTgxXG4gICAgfCBOYXZham93aGl0ZSAtPiAyNTUsIDIyMiwgMTczXG4gICAgfCBOYXZ5IC0+IDAsIDAsIDEyOFxuICAgIHwgT2xkbGFjZSAtPiAyNTMsIDI0NSwgMjMwXG4gICAgfCBPbGl2ZSAtPiAxMjgsIDEyOCwgMFxuICAgIHwgT2xpdmVkcmFiIC0+IDEwNywgMTQyLCAzNVxuICAgIHwgT3JhbmdlIC0+IDI1NSwgMTY1LCAwXG4gICAgfCBPcmFuZ2VyZWQgLT4gMjU1LCA2OSwgMFxuICAgIHwgT3JjaGlkIC0+IDIxOCwgMTEyLCAyMTRcbiAgICB8IFBhbGVnb2xkZW5yb2QgLT4gMjM4LCAyMzIsIDE3MFxuICAgIHwgUGFsZWdyZWVuIC0+IDE1MiwgMjUxLCAxNTJcbiAgICB8IFBhbGV0dXJxdW9pc2UgLT4gMTc1LCAyMzgsIDIzOFxuICAgIHwgUGFsZXZpb2xldHJlZCAtPiAyMTksIDExMiwgMTQ3XG4gICAgfCBQYXBheWF3aGlwIC0+IDI1NSwgMjM5LCAyMTNcbiAgICB8IFBlYWNocHVmZiAtPiAyNTUsIDIxOCwgMTg1XG4gICAgfCBQZXJ1IC0+IDIwNSwgMTMzLCA2M1xuICAgIHwgUGluayAtPiAyNTUsIDE5MiwgMjAzXG4gICAgfCBQbHVtIC0+IDIyMSwgMTYwLCAyMjFcbiAgICB8IFBvd2RlcmJsdWUgLT4gMTc2LCAyMjQsIDIzMFxuICAgIHwgUHVycGxlIC0+IDEyOCwgMCwgMTI4XG4gICAgfCBSZWQgLT4gMjU1LCAwLCAwXG4gICAgfCBSb3N5YnJvd24gLT4gMTg4LCAxNDMsIDE0M1xuICAgIHwgUm95YWxibHVlIC0+IDY1LCAxMDUsIDIyNVxuICAgIHwgU2FkZGxlYnJvd24gLT4gMTM5LCA2OSwgMTlcbiAgICB8IFNhbG1vbiAtPiAyNTAsIDEyOCwgMTE0XG4gICAgfCBTYW5keWJyb3duIC0+IDI0NCwgMTY0LCA5NlxuICAgIHwgU2VhZ3JlZW4gLT4gNDYsIDEzOSwgODdcbiAgICB8IFNlYXNoZWxsIC0+IDI1NSwgMjQ1LCAyMzhcbiAgICB8IFNpZW5uYSAtPiAxNjAsIDgyLCA0NVxuICAgIHwgU2lsdmVyIC0+IDE5MiwgMTkyLCAxOTJcbiAgICB8IFNreWJsdWUgLT4gMTM1LCAyMDYsIDIzNVxuICAgIHwgU2xhdGVibHVlIC0+IDEwNiwgOTAsIDIwNVxuICAgIHwgU2xhdGVncmF5IC0+IDExMiwgMTI4LCAxNDRcbiAgICB8IFNsYXRlZ3JleSAtPiAxMTIsIDEyOCwgMTQ0XG4gICAgfCBTbm93IC0+IDI1NSwgMjUwLCAyNTBcbiAgICB8IFNwcmluZ2dyZWVuIC0+IDAsIDI1NSwgMTI3XG4gICAgfCBTdGVlbGJsdWUgLT4gNzAsIDEzMCwgMTgwXG4gICAgfCBUYW4gLT4gMjEwLCAxODAsIDE0MFxuICAgIHwgVGVhbCAtPiAwLCAxMjgsIDEyOFxuICAgIHwgVGhpc3RsZSAtPiAyMTYsIDE5MSwgMjE2XG4gICAgfCBUb21hdG8gLT4gMjU1LCA5OSwgNzFcbiAgICB8IFR1cnF1b2lzZSAtPiA2NCwgMjI0LCAyMDhcbiAgICB8IFZpb2xldCAtPiAyMzgsIDEzMCwgMjM4XG4gICAgfCBXaGVhdCAtPiAyNDUsIDIyMiwgMTc5XG4gICAgfCBXaGl0ZSAtPiAyNTUsIDI1NSwgMjU1XG4gICAgfCBXaGl0ZXNtb2tlIC0+IDI0NSwgMjQ1LCAyNDVcbiAgICB8IFllbGxvdyAtPiAyNTUsIDI1NSwgMFxuICAgIHwgWWVsbG93Z3JlZW4gLT4gMTU0LCAyMDUsIDUwXG5cbiAgdHlwZSB0ID1cbiAgICB8IE5hbWUgb2YgbmFtZVxuICAgIHwgUkdCIG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBSZWQsIEdyZWVuIGFuZCBCbHVlIHZhbHVlcy4gQ2xpcHBlZCB0byBbWzAuLjI1NV1dIGJ5IG1vc3QgKEFsbD8pXG4gICAgICAgICAgICBicm93c2Vycy4gKilcbiAgICB8IFJHQl9wZXJjZW50IG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBSR0IgY2hhbm5lbHMgYXJlIHNwZWNpZmllZCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgbWF4aW1hbCB2YWx1ZS4gKilcbiAgICB8IFJHQkEgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogU2FtZSBhcyBSR0Igd2l0aCBhZGRpdGlvbmFsIHRyYW5zcGFyZW5jeSBhcmd1bWVudC4gT3BhY2l0eSBzaG91bGQgYmUgaW5cbiAgICAgICAgICAgIFswLl0gKGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQpIGFuZCBbMS5dIChjb21wbGV0ZWx5IG9wYXF1ZSkuICopXG4gICAgfCBSR0JBX3BlcmNlbnQgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogUkdCIGNoYW5uZWxzIHNwZWNpZmllZCBhcyBwZXJjZW50YWdlIG9mIHRoZWlyIG1heGltYWwgdmFsdWUuIEFscGhhXG4gICAgICAgICAgICBjaGFubmVsIChvcGFjaXR5KSBpcyBzdGlsbCBhIFswLl0gdG8gWzEuXSBmbG9hdC4gKilcbiAgICB8IEhTTCBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogSHVlLCBTYXR1cmF0aW9uIGFuZCBMaWdodG5lc3MgdmFsdWVzLiBIdWUgaXMgYW4gYW5nbGUgaW4gZGVncmVlIChpblxuICAgICAgICAgICAgaW50ZXJ2YWwgW1swLi4zNjBbXSkuIFNhdHVyYXRpb24gaXMgYSBwZXJjZW50YWdlIChbWzAuLjEwMF1dKSB3aXRoIFswXVxuICAgICAgICAgICAgYmVpbmcgY29sb3JsZXNzLiBMaWdodG5lc3MgaXMgYWxzbyBhIHBlcmNlbnRhZ2UgKFtbMC4uMTAwXV0pIHdpdGggWzBdXG4gICAgICAgICAgICBiZWluZyBibGFjay4gKilcbiAgICB8IEhTTEEgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogU2FtZSBhcyBIU0wgd2l0aCBhbiBvcGFjaXR5IGFyZ3VtZW50IGJldHdlZW4gWzAuXSBhbmQgWzEuXS4gKilcblxuICBsZXQgcmdiID9hIHIgZyBiID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IE5vbmUgLT4gUkdCIChyLCBnLCBiKVxuICAgIHwgU29tZSBhIC0+IFJHQkEgKHIsIGcsIGIsIGEpXG5cbiAgbGV0IGhzbCA/YSBoIHMgbCA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBOb25lIC0+IEhTTCAoaCwgcywgbClcbiAgICB8IFNvbWUgYSAtPiBIU0xBIChoLCBzLCBsLCBhKVxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBOYW1lIG4gLT4gc3RyaW5nX29mX25hbWUgblxuICAgIHwgUkdCIChyLCBnLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYiglZCwlZCwlZClcIiByIGcgYlxuICAgIHwgUkdCX3BlcmNlbnQgKHIsIGcsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiKCVkJSUsJWQlJSwlZCUlKVwiIHIgZyBiXG4gICAgfCBSR0JBIChyLCBnLCBiLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYmEoJWQsJWQsJWQsJWYpXCIgciBnIGIgYVxuICAgIHwgUkdCQV9wZXJjZW50IChyLCBnLCBiLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYmEoJWQlJSwlZCUlLCVkJSUsJWYpXCIgciBnIGIgYVxuICAgIHwgSFNMIChoLCBzLCBsKSAtPiBQcmludGYuc3ByaW50ZiBcImhzbCglZCwlZCUlLCVkJSUpXCIgaCBzIGxcbiAgICB8IEhTTEEgKGgsIHMsIGwsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwiaHNsYSglZCwlZCUlLCVkJSUsJWYpXCIgaCBzIGwgYVxuXG4gIGxldCBoZXhfb2ZfcmdiIChyZWQsIGdyZWVuLCBibHVlKSA9XG4gICAgbGV0IGluX3JhbmdlIGkgPVxuICAgICAgaWYgaSA8IDAgfHwgaSA+IDI1NVxuICAgICAgdGhlbiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoc3RyaW5nX29mX2ludCBpIF4gXCIgaXMgb3V0IG9mIHZhbGlkIHJhbmdlXCIpKVxuICAgIGluXG4gICAgaW5fcmFuZ2UgcmVkO1xuICAgIGluX3JhbmdlIGdyZWVuO1xuICAgIGluX3JhbmdlIGJsdWU7XG4gICAgUHJpbnRmLnNwcmludGYgXCIjJTAyWCUwMlglMDJYXCIgcmVkIGdyZWVuIGJsdWVcblxuICAoKiBPY2FtbCA8LT4gSlMgcmVwcmVzZW50YXRpb24gKilcbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICAoKiBUT0RPPyBiZSBtb3JlIHJlc3RyaWN0aXZlLCBjbGlwIHZhbHVlcyBpbnRvIHN0YW5kYXJkIHJhbmdlICopXG4gIGxldCBqc190X29mX2pzX3N0cmluZyBzID1cbiAgICBsZXQgcmdiX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYl9wY3RfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JcXFxcKFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiYV9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXnJnYmFcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYmFfcGN0X3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiYVxcXFwoXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgaHNsX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJeaHNsXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgaHNsYV9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXmhzbGFcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBpZiBKcy50b19ib29sIChyZ2JfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JhX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiX3BjdF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYmFfcGN0X3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAoaHNsX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAoaHNsYV9yZSMjdGVzdCBzKVxuICAgIHRoZW4gc1xuICAgIGVsc2UgaWYgTGlzdC5tZW1cbiAgICAgICAgICAgICAgKEpzLnRvX3N0cmluZyBzKVxuICAgICAgICAgICAgICBbIFwiYWxpY2VibHVlXCJcbiAgICAgICAgICAgICAgOyBcImFudGlxdWV3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJhcXVhXCJcbiAgICAgICAgICAgICAgOyBcImFxdWFtYXJpbmVcIlxuICAgICAgICAgICAgICA7IFwiYXp1cmVcIlxuICAgICAgICAgICAgICA7IFwiYmVpZ2VcIlxuICAgICAgICAgICAgICA7IFwiYmlzcXVlXCJcbiAgICAgICAgICAgICAgOyBcImJsYWNrXCJcbiAgICAgICAgICAgICAgOyBcImJsYW5jaGVkYWxtb25kXCJcbiAgICAgICAgICAgICAgOyBcImJsdWVcIlxuICAgICAgICAgICAgICA7IFwiYmx1ZXZpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJicm93blwiXG4gICAgICAgICAgICAgIDsgXCJidXJseXdvb2RcIlxuICAgICAgICAgICAgICA7IFwiY2FkZXRibHVlXCJcbiAgICAgICAgICAgICAgOyBcImNoYXJ0cmV1c2VcIlxuICAgICAgICAgICAgICA7IFwiY2hvY29sYXRlXCJcbiAgICAgICAgICAgICAgOyBcImNvcmFsXCJcbiAgICAgICAgICAgICAgOyBcImNvcm5mbG93ZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImNvcm5zaWxrXCJcbiAgICAgICAgICAgICAgOyBcImNyaW1zb25cIlxuICAgICAgICAgICAgICA7IFwiY3lhblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrY3lhblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJra2hha2lcIlxuICAgICAgICAgICAgICA7IFwiZGFya21hZ2VudGFcIlxuICAgICAgICAgICAgICA7IFwiZGFya29saXZlZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya29yYW5nZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtyZWRcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya3R1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrdmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcImRlZXBwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImRlZXBza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcImRpbWdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGltZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkb2RnZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImZpcmVicmlja1wiXG4gICAgICAgICAgICAgIDsgXCJmbG9yYWx3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJmb3Jlc3RncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJmdWNoc2lhXCJcbiAgICAgICAgICAgICAgOyBcImdhaW5zYm9yb1wiXG4gICAgICAgICAgICAgIDsgXCJnaG9zdHdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImdvbGRcIlxuICAgICAgICAgICAgICA7IFwiZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcImdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZ3JlZW55ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwiZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJob25leWRld1wiXG4gICAgICAgICAgICAgIDsgXCJob3RwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImluZGlhbnJlZFwiXG4gICAgICAgICAgICAgIDsgXCJpbmRpZ29cIlxuICAgICAgICAgICAgICA7IFwiaXZvcnlcIlxuICAgICAgICAgICAgICA7IFwia2hha2lcIlxuICAgICAgICAgICAgICA7IFwibGF2ZW5kZXJcIlxuICAgICAgICAgICAgICA7IFwibGF2ZW5kZXJibHVzaFwiXG4gICAgICAgICAgICAgIDsgXCJsYXduZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGVtb25jaGlmZm9uXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGNvcmFsXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Y3lhblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyYXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyZXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c3RlZWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0eWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImxpbWVcIlxuICAgICAgICAgICAgICA7IFwibGltZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpbmVuXCJcbiAgICAgICAgICAgICAgOyBcIm1hZ2VudGFcIlxuICAgICAgICAgICAgICA7IFwibWFyb29uXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bWFxdWFtYXJpbmVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1vcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtcHVycGxlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zcHJpbmdncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW10dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtdmlvbGV0cmVkXCJcbiAgICAgICAgICAgICAgOyBcIm1pZG5pZ2h0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtaW50Y3JlYW1cIlxuICAgICAgICAgICAgICA7IFwibWlzdHlyb3NlXCJcbiAgICAgICAgICAgICAgOyBcIm1vY2Nhc2luXCJcbiAgICAgICAgICAgICAgOyBcIm5hdmFqb3doaXRlXCJcbiAgICAgICAgICAgICAgOyBcIm5hdnlcIlxuICAgICAgICAgICAgICA7IFwib2xkbGFjZVwiXG4gICAgICAgICAgICAgIDsgXCJvbGl2ZVwiXG4gICAgICAgICAgICAgIDsgXCJvbGl2ZWRyYWJcIlxuICAgICAgICAgICAgICA7IFwib3JhbmdlXCJcbiAgICAgICAgICAgICAgOyBcIm9yYW5nZXJlZFwiXG4gICAgICAgICAgICAgIDsgXCJvcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwicGFsZWdvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJwYWxlZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwicGFsZXR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJwYWxldmlvbGV0cmVkXCJcbiAgICAgICAgICAgICAgOyBcInBhcGF5YXdoaXBcIlxuICAgICAgICAgICAgICA7IFwicGVhY2hwdWZmXCJcbiAgICAgICAgICAgICAgOyBcInBlcnVcIlxuICAgICAgICAgICAgICA7IFwicGlua1wiXG4gICAgICAgICAgICAgIDsgXCJwbHVtXCJcbiAgICAgICAgICAgICAgOyBcInBvd2RlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwicHVycGxlXCJcbiAgICAgICAgICAgICAgOyBcInJlZFwiXG4gICAgICAgICAgICAgIDsgXCJyb3N5YnJvd25cIlxuICAgICAgICAgICAgICA7IFwicm95YWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcInNhZGRsZWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInNhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJzYW5keWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInNlYXNoZWxsXCJcbiAgICAgICAgICAgICAgOyBcInNpZW5uYVwiXG4gICAgICAgICAgICAgIDsgXCJzaWx2ZXJcIlxuICAgICAgICAgICAgICA7IFwic2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJzbm93XCJcbiAgICAgICAgICAgICAgOyBcInNwcmluZ2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInN0ZWVsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJ0YW5cIlxuICAgICAgICAgICAgICA7IFwidGVhbFwiXG4gICAgICAgICAgICAgIDsgXCJ0aGlzdGxlXCJcbiAgICAgICAgICAgICAgOyBcInRvbWF0b1wiXG4gICAgICAgICAgICAgIDsgXCJ0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwidmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcIndoZWF0XCJcbiAgICAgICAgICAgICAgOyBcIndoaXRlXCJcbiAgICAgICAgICAgICAgOyBcIndoaXRlc21va2VcIlxuICAgICAgICAgICAgICA7IFwieWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcInllbGxvd2dyZWVuXCJcbiAgICAgICAgICAgICAgXVxuICAgIHRoZW4gc1xuICAgIGVsc2UgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKEpzLnRvX3N0cmluZyBzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3JcIikpXG5cbiAgbGV0IG5hbWUgY24gPSBKcy5zdHJpbmcgKHN0cmluZ19vZl9uYW1lIGNuKVxuXG4gIGxldCBqcyA9IGZ1bmN0aW9uXG4gICAgfCBOYW1lIG4gLT4gbmFtZSBuXG4gICAgfCAoUkdCIF8gfCBSR0JfcGVyY2VudCBfIHwgUkdCQSBfIHwgUkdCQV9wZXJjZW50IF8gfCBIU0wgXyB8IEhTTEEgXykgYXMgYyAtPlxuICAgICAgICBKcy5zdHJpbmcgKHN0cmluZ19vZl90IGMpXG5cbiAgbGV0IG1sIGMgPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIGMgaW5cbiAgICB0cnkgTmFtZSAobmFtZV9vZl9zdHJpbmcgcylcbiAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiAoXG4gICAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3JcIikpIGluXG4gICAgICBsZXQgcmVfcmdiID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihyZ2JhPylcXFxcKCg/OihcXFxcZCopLChcXFxcZCopLChcXFxcZCopKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgcmVfcmdiX3BjdCA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIocmdiYT8pXFxcXCgoPzooXFxcXGQqKSUsKFxcXFxkKiklLChcXFxcZCopJSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IHJlX2hzbCA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIoaHNsYT8pXFxcXCgoPzooXFxcXGQqKSwoXFxcXGQqKSUsKFxcXFxkKiklKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgaV9vZl9zX28gPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICB8IFNvbWUgaSAtPiAoXG4gICAgICAgICAgICB0cnkgaW50X29mX3N0cmluZyBpXG4gICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyB8IEZhaWx1cmUgcyAtPlxuICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJjb2xvciBjb252ZXJzaW9uIGVycm9yIChcIiBeIGkgXiBcIik6IFwiIF4gcykpKVxuICAgICAgaW5cbiAgICAgIGxldCBmX29mX3MgZiA9XG4gICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyB8IEZhaWx1cmUgcyAtPlxuICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImNvbG9yIGNvbnZlcnNpb24gZXJyb3IgKFwiIF4gZiBeIFwiKTogXCIgXiBzKSlcbiAgICAgIGluXG4gICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX3JnYiBzIDAgd2l0aFxuICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgfCBTb21lIFwicmdiXCIgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFJHQiAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgfCBTb21lIFwicmdiYVwiIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBSR0JBIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSkpXG4gICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfcmdiX3BjdCBzIDAgd2l0aFxuICAgICAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBcInJnYlwiIC0+IChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBSR0JfcGVyY2VudCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgICAgIHwgU29tZSBcInJnYmFcIiAtPiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICBSR0JBX3BlcmNlbnQgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX2hzbCBzIDAgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXCJoc2xcIiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gSFNMIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBcImhzbGFcIiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgSFNMQSAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpKSkpXG5lbmRcblxubW9kdWxlIExlbmd0aCA9IHN0cnVjdFxuICAoKiBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXZhbHVlcy8jbGVuZ3RocyAqKVxuXG4gICgqIFRPRE86XG4gICAgIHtbXG4gICAgICAgdHlwZSBqc190ID0gcHJpdmF0ZSBKcy5zdHJpbmcgSnMudFxuICAgICAgIHZhbCBqc190X29mX3RcbiAgICAgICB2YWwgdF9vZl9qc190XG4gICAgICAgdmFsIHRfb2Zfc3RyaW5nXG4gICAgIF19XG4gICopXG5cbiAgdHlwZSB0ID1cbiAgICB8IFplcm9cbiAgICAoKiByZWxhdGl2ZSAqKVxuICAgIHwgRW0gb2YgZmxvYXRcbiAgICB8IEV4IG9mIGZsb2F0XG4gICAgfCBQeCBvZiBmbG9hdFxuICAgIHwgR2Qgb2YgZmxvYXRcbiAgICB8IFJlbSBvZiBmbG9hdFxuICAgIHwgVncgb2YgZmxvYXRcbiAgICB8IFZoIG9mIGZsb2F0XG4gICAgfCBWbSBvZiBmbG9hdFxuICAgIHwgQ2ggb2YgZmxvYXRcbiAgICAoKiBhYnNvbHV0ZSAqKVxuICAgIHwgTW0gb2YgZmxvYXRcbiAgICB8IENtIG9mIGZsb2F0XG4gICAgfCBJbiBvZiBmbG9hdFxuICAgIHwgUHQgb2YgZmxvYXRcbiAgICB8IFBjIG9mIGZsb2F0XG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IFplcm8gLT4gXCIwXCJcbiAgICB8IEVtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImVtXCJcbiAgICB8IEV4IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImV4XCJcbiAgICB8IFB4IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInB4XCJcbiAgICB8IEdkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImdkXCJcbiAgICB8IFJlbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJyZW1cIlxuICAgIHwgVncgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidndcIlxuICAgIHwgVmggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidmhcIlxuICAgIHwgVm0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidm1cIlxuICAgIHwgQ2ggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiY2hcIlxuICAgIHwgTW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwibW1cIlxuICAgIHwgQ20gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiY21cIlxuICAgIHwgSW4gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiaW5cIlxuICAgIHwgUHQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicHRcIlxuICAgIHwgUGMgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicGNcIlxuXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IGpzIHQgPSBKcy5zdHJpbmcgKHN0cmluZ19vZl90IHQpXG5cbiAgbGV0IG1sIHQgPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIHQgaW5cbiAgICBpZiBTdHJpbmcuZXF1YWwgcyBcIjBcIlxuICAgIHRoZW4gWmVyb1xuICAgIGVsc2VcbiAgICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBsZW5ndGhcIikpIGluXG4gICAgICBsZXQgcmUgPSBSZWdleHAucmVnZXhwIFwiXihcXFxcZCooPzpcXFxcLlxcXFxkKik/KVxcXFxzKihcXFxcUyopJFwiIGluXG4gICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlIHMgMCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgIGxldCBmID1cbiAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgfCBTb21lIGYgLT4gKFxuICAgICAgICAgICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIC0+XG4gICAgICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJsZW5ndGggY29udmVyc2lvbiBlcnJvcjogXCIgXiBzKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgfCBTb21lIFwiZW1cIiAtPiBFbSBmXG4gICAgICAgICAgfCBTb21lIFwiZXhcIiAtPiBFeCBmXG4gICAgICAgICAgfCBTb21lIFwicHhcIiAtPiBQeCBmXG4gICAgICAgICAgfCBTb21lIFwiZ2RcIiAtPiBHZCBmXG4gICAgICAgICAgfCBTb21lIFwicmVtXCIgLT4gUmVtIGZcbiAgICAgICAgICB8IFNvbWUgXCJ2d1wiIC0+IFZ3IGZcbiAgICAgICAgICB8IFNvbWUgXCJ2aFwiIC0+IFZoIGZcbiAgICAgICAgICB8IFNvbWUgXCJ2bVwiIC0+IFZtIGZcbiAgICAgICAgICB8IFNvbWUgXCJjaFwiIC0+IENoIGZcbiAgICAgICAgICB8IFNvbWUgXCJtbVwiIC0+IE1tIGZcbiAgICAgICAgICB8IFNvbWUgXCJjbVwiIC0+IENtIGZcbiAgICAgICAgICB8IFNvbWUgXCJpblwiIC0+IEluIGZcbiAgICAgICAgICB8IFNvbWUgXCJwdFwiIC0+IFB0IGZcbiAgICAgICAgICB8IFNvbWUgXCJwY1wiIC0+IFBjIGZcbiAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpKVxuZW5kXG5cbm1vZHVsZSBBbmdsZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRGVnIG9mIGZsb2F0XG4gICAgfCBHcmFkIG9mIGZsb2F0XG4gICAgfCBSYWQgb2YgZmxvYXRcbiAgICB8IFR1cm5zIG9mIGZsb2F0XG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IERlZyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJkZWdcIlxuICAgIHwgR3JhZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJncmFkXCJcbiAgICB8IFJhZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJyYWRcIlxuICAgIHwgVHVybnMgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidHVybnNcIlxuXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IGpzIHQgPSBKcy5zdHJpbmcgKHN0cmluZ19vZl90IHQpXG5cbiAgbGV0IG1sIGogPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIGogaW5cbiAgICBsZXQgcmUgPSBSZWdleHAucmVnZXhwIFwiXihcXFxcZCooPzpcXFxcLlxcXFxkKikpKGRlZ3xncmFkfHJhZHx0dXJucykkXCIgaW5cbiAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgbGVuZ3RoXCIpKSBpblxuICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmUgcyAwIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyAtPlxuICAgICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImxlbmd0aCBjb252ZXJzaW9uIGVycm9yOiBcIiBeIHMpKSlcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIHdpdGhcbiAgICAgICAgfCBTb21lIFwiZGVnXCIgLT4gRGVnIGZcbiAgICAgICAgfCBTb21lIFwiZ3JhZFwiIC0+IEdyYWQgZlxuICAgICAgICB8IFNvbWUgXCJyYWRcIiAtPiBSYWQgZlxuICAgICAgICB8IFNvbWUgXCJ0dXJuc1wiIC0+IFR1cm5zIGZcbiAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG4oKiogSmF2YXNjcmlwdCBldmVudHMuICopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIFR5cCA9IERvbV9odG1sLkV2ZW50XG5cbnR5cGUgbGlzdGVuZXIgPSBEb21faHRtbC5ldmVudF9saXN0ZW5lcl9pZFxuXG5sZXQgbGlzdGVuID8oY2FwdHVyZSA9IGZhbHNlKSB0YXJnZXQgdHlwIGNiID1cbiAgRG9tX2h0bWwuYWRkRXZlbnRMaXN0ZW5lclxuICAgIHRhcmdldFxuICAgIHR5cFxuICAgIChEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biBuIGUgLT4gSnMuYm9vbCAoY2IgbiBlKSkpXG4gICAgKEpzLmJvb2wgY2FwdHVyZSlcblxubGV0IHN0b3BfbGlzdGVuID0gRG9tX2h0bWwucmVtb3ZlRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxubGV0IHhtbG5zID0gSnMuc3RyaW5nIFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuXG4oKiB0cmFuc2xhdGUgc3BlYyBmcm9tIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9pZGwuaHRtbCAqKVxuKCogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL3N0cnVjdC5odG1sICopXG5cbnR5cGUgZXJyb3JfY29kZSA9XG4gIHwgV1JPTkdfVFlQRV9FUlJcbiAgfCBJTlZBTElEX1ZBTFVFX0VSUlxuICB8IE1BVFJJWF9OT1RfSU5WRVJUQUJMRVxuXG5jbGFzcyB0eXBlIHN2Z19lcnJvciA9IG9iamVjdFxuICBpbmhlcml0IEpzLmVycm9yXG5cbiAgbWV0aG9kIGNvZGUgOiBlcnJvcl9jb2RlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmV4Y2VwdGlvbiBTVkdFcnJvciBvZiBzdmdfZXJyb3JcblxudHlwZSBsZW5ndGhVbml0VHlwZSA9XG4gIHwgTEVOR1RIVFlQRV9VTktOT1dOXG4gIHwgTEVOR1RIVFlQRV9OVU1CRVJcbiAgfCBMRU5HVEhUWVBFX1BFUkNFTlRBR0VcbiAgfCBMRU5HVEhUWVBFX0VNU1xuICB8IExFTkdUSFRZUEVfRVhTXG4gIHwgTEVOR1RIVFlQRV9QWFxuICB8IExFTkdUSFRZUEVfQ01cbiAgfCBMRU5HVEhUWVBFX01NXG4gIHwgTEVOR1RIVFlQRV9JTlxuICB8IExFTkdUSFRZUEVfUFRcbiAgfCBMRU5HVEhUWVBFX1BDXG5cbnR5cGUgYW5nbGVVbml0VHlwZSA9XG4gIHwgQU5HTEVUWVBFX1VOS05PV05cbiAgfCBBTkdMRVRZUEVfVU5TUEVDSUZJRURcbiAgfCBBTkdMRVRZUEVfREVHXG4gIHwgQU5HTEVUWVBFX1JBRFxuICB8IEFOR0xFVFlQRV9HUkFEXG5cbnR5cGUgY29sb3JUeXBlID1cbiAgfCBDT0xPUlRZUEVfVU5LTk9XTlxuICB8IENPTE9SVFlQRV9SR0JDT0xPUlxuICB8IENPTE9SVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUlxuICB8IENPTE9SVFlQRV9DVVJSRU5UQ09MT1JcblxudHlwZSBhbGlnbm1lbnRUeXBlID1cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1VOS05PV05cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX05PTkVcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUFYXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1BWFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNQVhcblxudHlwZSBtZWV0T3JTbGljZVR5cGUgPVxuICB8IE1FRVRPUlNMSUNFX1VOS05PV05cbiAgfCBNRUVUT1JTTElDRV9NRUVUXG4gIHwgTUVFVE9SU0xJQ0VfU0xJQ0VcblxudHlwZSB0cmFuc2Zvcm1UeXBlID1cbiAgfCBUUkFOU0ZPUk1fVU5LTk9XTlxuICB8IFRSQU5TRk9STV9NQVRSSVhcbiAgfCBUUkFOU0ZPUk1fVFJBTlNMQVRFXG4gIHwgVFJBTlNGT1JNX1NDQUxFXG4gIHwgVFJBTlNGT1JNX1JPVEFURVxuICB8IFRSQU5TRk9STV9TS0VXWFxuICB8IFRSQU5TRk9STV9TS0VXWVxuXG50eXBlIHpvb21BbmRQYW5UeXBlID1cbiAgfCBaT09NQU5EUEFOX1VOS05PV05cbiAgfCBaT09NQU5EUEFOX0RJU0FCTEVcbiAgfCBaT09NQU5EUEFOX01BR05JRllcblxudHlwZSBsZW5ndGhBZGp1c3QgPVxuICB8IExFTkdUSEFESlVTVF9VTktOT1dOXG4gIHwgTEVOR1RIQURKVVNUX1NQQUNJTkdcbiAgfCBMRU5HVEhBREpVU1RfU1BBQ0lOR0FOREdMWVBIU1xuXG50eXBlIHVuaXRUeXBlID1cbiAgfCBVTklUX1RZUEVfVU5LTk9XTlxuICB8IFVOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRVxuICB8IFVOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVuZGVyaW5nSW50ZW50ICopXG50eXBlIGludGVudFR5cGUgPVxuICB8IFJFTkRFUklOR19JTlRFTlRfVU5LTk9XTlxuICB8IFJFTkRFUklOR19JTlRFTlRfQVVUT1xuICB8IFJFTkRFUklOR19JTlRFTlRfUEVSQ0VQVFVBTFxuICB8IFJFTkRFUklOR19JTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9TQVRVUkFUSU9OXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9BQlNPTFVURV9DT0xPUklNRVRSSUNcblxuKCogUGF0aCBTZWdtZW50IFR5cGVzICopXG50eXBlIHBhdGhTZWdtZW50VHlwZSA9XG4gIHwgUEFUSFNFR19VTktOT1dOXG4gIHwgUEFUSFNFR19DTE9TRVBBVEhcbiAgfCBQQVRIU0VHX01PVkVUT19BQlNcbiAgfCBQQVRIU0VHX01PVkVUT19SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19SRUxcbiAgfCBQQVRIU0VHX0FSQ19BQlNcbiAgfCBQQVRIU0VHX0FSQ19SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX1JFTFxuXG4oKiB0ZXh0UGF0aCBNZXRob2QgVHlwZXMgKilcbnR5cGUgdGV4dFBhdGhNZXRob2RUeXBlID1cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX1VOS05PV05cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX0FMSUdOXG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJFVENIXG5cbigqIHRleHRQYXRoIFNwYWNpbmcgVHlwZXMgKilcbnR5cGUgdGV4dFBhdGhTcGFjaW5nVHlwZSA9XG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfVU5LTk9XTlxuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX0FVVE9cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVFxuXG4oKiBTcHJlYWQgTWV0aG9kIFR5cGVzICopXG50eXBlIHNwcmVhZE1ldGhvZFR5cGUgPVxuICB8IFNQUkVBRE1FVEhPRF9VTktOT1dOXG4gIHwgU1BSRUFETUVUSE9EX1BBRFxuICB8IFNQUkVBRE1FVEhPRF9SRUZMRUNUXG4gIHwgU1BSRUFETUVUSE9EX1JFUEVBVFxuXG50eXBlIHN1c3BlbmRIYW5kbGVJRFxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBbJ2FdIGFuaW1hdGVkID0gb2JqZWN0XG4gIG1ldGhvZCBiYXNlVmFsIDogJ2EgcHJvcFxuXG4gIG1ldGhvZCBhbmltVmFsIDogJ2EgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBsaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBudW1iZXJPZkl0ZW1zIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xlYXIgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5pdGlhbGl6ZSA6ICdhIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0SXRlbSA6IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGluc2VydEl0ZW1CZWZvcmUgOiAnYSAtPiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlSXRlbSA6ICdhIC0+IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUl0ZW0gOiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRJdGVtIDogJ2EgLT4gJ2EgbWV0aFxuZW5kXG5cbigqKioqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tLmVsZW1lbnRcblxuICBtZXRob2QgaWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHhtbGJhc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG93bmVyU1ZHRWxlbWVudCA6IHN2Z0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkU3RyaW5nICopXG5hbmQgYW5pbWF0ZWRTdHJpbmcgPSBbanNfc3RyaW5nIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEJvb2xlYW4gKilcbmFuZCBhbmltYXRlZEJvb2xlYW4gPSBbYm9vbCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3RyaW5nTGlzdCAqKVxuYW5kIHN0cmluZ0xpc3QgPSBbanNfc3RyaW5nIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gKilcbmFuZCBhbmltYXRlZEVudW1lcmF0aW9uID0gW2ludCAoKnNob3J0KildIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEludGVnZXIgKilcbmFuZCBhbmltYXRlZEludGVnZXIgPSBbaW50XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWROdW1iZXIgKilcbmFuZCBhbmltYXRlZE51bWJlciA9IFtudW1iZXJfdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR051bWJlckxpc3QgKilcbmFuZCBudW1iZXJMaXN0ID0gW251bWJlciB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZE51bWJlckxpc3QgKilcbmFuZCBhbmltYXRlZE51bWJlckxpc3QgPSBbbnVtYmVyTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGVuZ3RoICopXG5hbmQgbGVuZ3RoID0gb2JqZWN0XG4gIG1ldGhvZCB1bml0VHlwZSA6IGxlbmd0aFVuaXRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlSW5TcGVjaWZpZWRVbml0cyA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVBc1N0cmluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyA6IGxlbmd0aFVuaXRUeXBlIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyA6IGxlbmd0aFVuaXRUeXBlIC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZExlbmd0aCAqKVxuYW5kIGFuaW1hdGVkTGVuZ3RoID0gW2xlbmd0aCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGVuZ3RoTGlzdCAqKVxuYW5kIGxlbmd0aExpc3QgPSBbbGVuZ3RoIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCAqKVxuYW5kIGFuaW1hdGVkTGVuZ3RoTGlzdCA9IFtsZW5ndGhMaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmdsZSAqKVxuYW5kIGFuZ2xlID0gb2JqZWN0XG4gIG1ldGhvZCB1bml0VHlwZSA6IGFuZ2xlVW5pdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVJblNwZWNpZmllZFVuaXRzIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUFzU3RyaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzIDogYW5nbGVVbml0VHlwZSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udmVydFRvU3BlY2lmaWVkVW5pdHMgOiBhbmdsZVVuaXRUeXBlIC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEFuZ2xlICopXG5hbmQgYW5pbWF0ZWRBbmdsZSA9IFthbmdsZSB0XSBhbmltYXRlZFxuXG4oKiBYWFhYWCBNb3ZlIGl0ICopXG5hbmQgcmdiQ29sb3IgPSBvYmplY3QgZW5kXG5cbigqIGludGVyZmFjZSBTVkdDb2xvciAqKVxuYW5kIGNvbG9yID0gb2JqZWN0XG4gICgqIFhYWCBpbmhlcml0IGNzc1ZhbHVlICopXG4gIG1ldGhvZCBjb2xvclR5cGUgOiBjb2xvclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZ2JDb2xvciA6IHJnYkNvbG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpY2NDb2xvciA6IGljY0NvbG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRSR0JDb2xvciA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSR0JDb2xvcklDQ0NvbG9yIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldENvbG9yIDogY29sb3JUeXBlIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdJQ0NDb2xvciAqKVxuYW5kIGljY0NvbG9yID0gb2JqZWN0XG4gIG1ldGhvZCBjb2xvclByb2ZpbGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbG9ycyA6IG51bWJlckxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JlY3QgKilcbmFuZCByZWN0ID0gb2JqZWN0XG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFJlY3QgKilcbmFuZCBhbmltYXRlZFJlY3QgPSBbcmVjdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3R5bGFibGUgKilcbmFuZCBzdHlsYWJsZSA9IG9iamVjdFxuICBtZXRob2QgY2xhc3NOYW1lIDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0eWxlIDogRG9tX2h0bWwuY3NzU3R5bGVEZWNsYXJhdGlvbiB0IHJlYWRvbmx5X3Byb3BcbiAgKCogICBDU1NWYWx1ZSBnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoaW4gRE9NU3RyaW5nIG5hbWUpOyAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMb2NhdGFibGUgKilcbmFuZCBsb2NhdGFibGUgPSBvYmplY3RcbiAgbWV0aG9kIG5lYXJlc3RWaWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEJCb3ggOiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDVE0gOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNjcmVlbkNUTSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZ2V0VHJhbnNmb3JtVG9FbGVtZW50IDogZWxlbWVudCB0IC0+IG1hdHJpeCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtYWJsZSAqKVxuYW5kIHRyYW5zZm9ybWFibGUgPSBvYmplY3RcbiAgaW5oZXJpdCBsb2NhdGFibGVcblxuICBtZXRob2QgdHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXN0cyAqKVxuYW5kIHRlc3RzID0gb2JqZWN0XG4gIG1ldGhvZCByZXF1aXJlZEZlYXR1cmVzIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVxdWlyZWRFeHRlbnNpb25zIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3lzdGVtTGFuZ3VhZ2UgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoYXNFeHRlbnNpb24gOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMYW5nU3BhY2UgKilcbmFuZCBsYW5nU3BhY2UgPSBvYmplY3RcbiAgbWV0aG9kIHhtbGxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHhtbHNwYWNlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkICopXG5hbmQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA9IG9iamVjdFxuICBtZXRob2QgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA6IGFuaW1hdGVkQm9vbGVhbiB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRml0VG9WaWV3Qm94ICopXG5hbmQgZml0VG9WaWV3Qm94ID0gb2JqZWN0XG4gIG1ldGhvZCB2aWV3Qm94IDogYW5pbWF0ZWRSZWN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvIDogYW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdab29tQW5kUGFuICopXG5hbmQgem9vbUFuZFBhbiA9IG9iamVjdFxuICBtZXRob2Qgem9vbUFuZFBhbiA6IHpvb21BbmRQYW5UeXBlIHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVmlld1NwZWMgKilcbmFuZCB2aWV3U3BlYyA9IG9iamVjdFxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiB0cmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld0JveFN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc2VydmVBc3BlY3RSYXRpb1N0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHJhbnNmb3JtU3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0U3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdVUklSZWZlcmVuY2UgKilcbmFuZCB1cmlSZWZlcmVuY2UgPSBvYmplY3RcbiAgbWV0aG9kIGhyZWYgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ1NTUnVsZSA6IENTU1J1bGUgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ09MT1JfUFJPRklMRV9SVUxFID0gNzsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdEb2N1bWVudCAqKVxuYW5kIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5kb2N1bWVudFxuXG4gICgqWFhYIGluaGVyaXQgZG9jdW1lbnRFdmVudCAqKVxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlZmVycmVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkb21haW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RFbGVtZW50IDogc3ZnRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG4gICgqIHJvb3RFbGVtZW50IHdpbGwgYmUgbnVsbCBvciB1bmRlZmluZWQgaW4gYW4gaHRtbCBjb250ZXh0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NWR0VsZW1lbnQgKilcbmFuZCBzdmdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGxvY2F0YWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgKCpYWFggaW5oZXJpdCBkb2N1bWVudGV2ZW50LCB2aWV3Y3NzLCBkb2N1bWVudGNzcyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50U2NyaXB0VHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudFN0eWxlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgdmlld3BvcnQgOiByZWN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwaXhlbFVuaXRUb01pbGxpbWV0ZXJYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwaXhlbFVuaXRUb01pbGxpbWV0ZXJZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5QaXhlbFVuaXRUb01pbGxpbWV0ZXJYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5QaXhlbFVuaXRUb01pbGxpbWV0ZXJZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VDdXJyZW50VmlldyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRWaWV3IDogdmlld1NwZWMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRTY2FsZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgY3VycmVudFRyYW5zbGF0ZSA6IHBvaW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdXNwZW5kUmVkcmF3IDogaW50IC0+IHN1c3BlbmRIYW5kbGVJRCBtZXRoXG5cbiAgbWV0aG9kIHVuc3VzcGVuZFJlZHJhdyA6IHN1c3BlbmRIYW5kbGVJRCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5zdXNwZW5kUmVkcmF3QWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvcmNlUmVkcmF3IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBhdXNlQW5pbWF0aW9ucyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bnBhdXNlQW5pbWF0aW9ucyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhbmltYXRpb25zUGF1c2VkIDogYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q3VycmVudFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEN1cnJlbnRUaW1lIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnRlcnNlY3Rpb25MaXN0IDogcmVjdCB0IC0+IGVsZW1lbnQgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RW5jbG9zdXJlTGlzdCA6IHJlY3QgdCAtPiBlbGVtZW50IHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGNoZWNrSW50ZXJzZWN0aW9uIDogZWxlbWVudCB0IC0+IHJlY3QgdCAtPiBib29sIHRcblxuICBtZXRob2QgY2hlY2tFbmNsb3N1cmUgOiBlbGVtZW50IHQgLT4gcmVjdCB0IC0+IGJvb2wgdFxuXG4gIG1ldGhvZCBkZXNlbGVjdEFsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdOdW1iZXIgOiBudW1iZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR0xlbmd0aCA6IGxlbmd0aCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHQW5nbGUgOiBhbmdsZSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUG9pbnQgOiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTWF0cml4IDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdSZWN0IDogcmVjdCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtIDogdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4IDogbWF0cml4IHQgLT4gdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50QnlJZCA6IGpzX3N0cmluZyB0IC0+IERvbS5lbGVtZW50IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdHRWxlbWVudCAqKVxuYW5kIGdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0RlZnNFbGVtZW50ICopXG5hbmQgZGVmc0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuICAoKiBYWFhYWFhYID8gaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdEZXNjRWxlbWVudCAqKVxuYW5kIGRlc2NFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuICAoKiBYWFhYWFhYID8gaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUaXRsZUVsZW1lbnQgKilcbmFuZCB0aXRsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1N5bWJvbEVsZW1lbnQgKilcbmFuZCBzeW1ib2xFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdVc2VFbGVtZW50ICopXG5hbmQgdXNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnN0YW5jZVJvb3QgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkSW5zdGFuY2VSb290IDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBlbGVtZW50SW5zdGFuY2UgPSBvYmplY3RcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCBjb3JyZXNwb25kaW5nRWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvcnJlc3BvbmRpbmdVc2VFbGVtZW50IDogdXNlRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50Tm9kZSA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hpbGROb2RlcyA6IGVsZW1lbnRJbnN0YW5jZUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpcnN0Q2hpbGQgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RDaGlsZCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxlbWVudEluc3RhbmNlTGlzdCAqKVxuYW5kIGVsZW1lbnRJbnN0YW5jZUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gZWxlbWVudEluc3RhbmNlIHRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSW1hZ2VFbGVtZW50ICopXG5hbmQgaW1hZ2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG4gICgqIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuZW5kXG5cbmFuZCBzd2l0Y2hFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbmVuZFxuXG4oKiBYWFggZGVwcmVjYXRlZCA9PiBpbnRlcmZhY2UgR2V0U1ZHRG9jdW1lbnQgPT4gU1ZHRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKSAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHU3R5bGVFbGVtZW50ICopXG5hbmQgc3R5bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgbWV0aG9kIHR5cGVfIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvaW50ICopXG5hbmQgcG9pbnQgPSBvYmplY3RcbiAgbWV0aG9kIHggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1hdHJpeFRyYW5zZm9ybSA6IG1hdHJpeCB0IC0+IHBvaW50IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2ludExpc3QgKilcbmFuZCBwb2ludExpc3QgPSBbcG9pbnQgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWF0cml4ICopXG5hbmQgbWF0cml4ID0gb2JqZWN0XG4gIG1ldGhvZCBhIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBiIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtdWx0aXBseSA6IG1hdHJpeCB0IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgaW52ZXJzZSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgdHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2NhbGVOb25Vbmlmb3JtIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGUgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZUZyb21WZWN0b3IgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGZsaXBYIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBmbGlwWSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2tld1ggOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNrZXdZIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm0gKilcbmFuZCB0cmFuc2Zvcm0gPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDogdHJhbnNmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1hdHJpeCA6IG1hdHJpeCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5nbGUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldE1hdHJpeCA6IG1hdHJpeCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUcmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2NhbGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0Um90YXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNrZXdYIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNrZXdZIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybUxpc3QgKilcbmFuZCB0cmFuc2Zvcm1MaXN0ID0gb2JqZWN0XG4gIGluaGVyaXQgW3RyYW5zZm9ybSB0XSBsaXN0XG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXggOiBtYXRyaXggLT4gdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBjb25zb2xpZGF0ZSA6IHRyYW5zZm9ybSB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ICopXG5hbmQgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ID0gW3RyYW5zZm9ybUxpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmFuZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvID0gb2JqZWN0XG4gIG1ldGhvZCBhbGlnbiA6IGFsaWdubWVudFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZWV0T3JTbGljZSA6IG1lZXRPclNsaWNlVHlwZSByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuYW5kIGFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyA9IFtwcmVzZXJ2ZUFzcGVjdFJhdGlvIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnICopXG5hbmQgcGF0aFNlZyA9IG9iamVjdFxuICBtZXRob2QgcGF0aFNlZ1R5cGUgOiBwYXRoU2VnbWVudFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXRoU2VnVHlwZUFzTGV0dGVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ2xvc2VQYXRoICopXG5hbmQgcGF0aFNlZ0Nsb3NlUGF0aCA9IHBhdGhTZWdcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdNb3ZldG9BYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTW92ZXRvUmVsICopXG5hbmQgcGF0aFNlZ01vdmV0byA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9SZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkyIDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsICopXG5hbmQgcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0FyY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdBcmNSZWwqKVxuYW5kIHBhdGhTZWdBcmMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHIxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCByMiA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgYW5nbGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGxhcmdlQXJjRmxhZyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHN3ZWVwRmxhZyA6IGJvb2wgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5lbmRcblxuYW5kIHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcblxuICBtZXRob2QgeDIgOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5MiA6IG51bWJlcl90XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwgICopXG5hbmQgcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcbmVuZFxuXG5hbmQgcGF0aFNlZ0xpc3QgPSBbcGF0aFNlZyB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFBhdGhEYXRhICopXG5hbmQgYW5pbWF0ZWRQYXRoRGF0YSA9IG9iamVjdFxuICBtZXRob2QgcGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2Qgbm9ybWFsaXplZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0ZWROb3JtYWxpemVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aEVsZW1lbnQgKilcbmFuZCBwYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBhdGhEYXRhXG5cbiAgbWV0aG9kIHBhdGhMZW5ndGggOiBhbmltYXRlZE51bWJlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0VG90YWxMZW5ndGggOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBvaW50QXRMZW5ndGggOiBudW1iZXJfdCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0UGF0aFNlZ0F0TGVuZ3RoIDogbnVtYmVyX3QgLT4gaW50XG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDbG9zZVBhdGggOiBwYXRoU2VnQ2xvc2VQYXRoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b0FicyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdNb3ZldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTW92ZXRvUmVsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ01vdmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9BYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1JlbCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBwYXRoU2VnQ3VydmV0b0N1YmljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gcGF0aFNlZ0N1cnZldG9DdWJpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdBcmNBYnMgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBib29sIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBwYXRoU2VnQXJjIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0FyY1JlbCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHBhdGhTZWdBcmMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicyA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoIG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVjdEVsZW1lbnQgKilcbmFuZCByZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ2lyY2xlRWxlbWVudCAqKVxuYW5kIGNpcmNsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0VsbGlwc2VFbGVtZW50ICopXG5hbmQgZWxsaXBzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMaW5lRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBsaW5lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB4MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFBvaW50cyAqKVxuYW5kIGFuaW1hdGVkUG9pbnRzID0gb2JqZWN0XG4gIG1ldGhvZCBwb2ludHMgOiBwb2ludExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkcG9pbnRzIDogcG9pbnRMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2x5bGluZUVsZW1lbnQgKilcbmFuZCBwb2x5TGluZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQb2ludHNcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9seWdvbkVsZW1lbnQgKilcbmFuZCBwb2x5Z29uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBvaW50c1xuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0Q29udGVudEVsZW1lbnQgKilcbmFuZCB0ZXh0Q29udGVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdGV4dExlbmd0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGhBZGp1c3QgOiBsZW5ndGhBZGp1c3QgYW5pbWF0ZWQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldE51bWJlck9mQ2hhcnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFRleHRMZW5ndGggOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFN1YlN0cmluZ0xlbmd0aCA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTdGFydFBvc2l0aW9uT2ZDaGFyIDogaW50IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbmRQb3NpdGlvbk9mQ2hhciA6IGludCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RXh0ZW50T2ZDaGFyIDogaW50IC0+IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFJvdGF0aW9uT2ZDaGFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0Q2hhck51bUF0UG9zaXRpb24gOiBwb2ludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3RTdWJTdHJpbmcgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50ICopXG5hbmQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRDb250ZW50RWxlbWVudFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkeCA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHkgOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IGFuaW1hdGVkTnVtYmVyTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dEVsZW1lbnQgKilcbmFuZCB0ZXh0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbmVuZFxuXG5hbmQgdHNwYW5FbGVtZW50ID0gdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG5hbmQgdHJlZkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dFBhdGhFbGVtZW50ICopXG5hbmQgdGV4dFBhdGhFbGVtZW50TWV0aG9kID0gW3RleHRQYXRoTWV0aG9kVHlwZV0gYW5pbWF0ZWRcblxuYW5kIHRleHRQYXRoRWxlbWVudFNwYWNpbmcgPSBbdGV4dFBhdGhTcGFjaW5nVHlwZV0gYW5pbWF0ZWRcblxuYW5kIHRleHRQYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRDb250ZW50RWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgbWV0aG9kIHN0YXJ0T2Zmc2V0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGhvZF8gOiB0ZXh0UGF0aEVsZW1lbnRNZXRob2QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGFjaW5nIDogdGV4dFBhdGhFbGVtZW50U3BhY2luZyByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIG1ldGhvZCBnbHlwaFJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybWF0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaERlZkVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaERlZkVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaEl0ZW1FbGVtZW50ICopXG5hbmQgYWx0R2x5cGhJdGVtRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0dseXBoUmVmRWxlbWVudCAqKVxuYW5kIGdseXBoUmVmRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBtZXRob2QgZ2x5cGhSZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm1hdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYWludCA6IFNWR0NvbG9yIHsgKilcblxuKCogICAvLyBQYWludCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUiA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfTk9ORSA9IDEwMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IgPSAxMDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX05PTkUgPSAxMDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUiA9IDEwNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1IgPSAxMDU7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SX0lDQ0NPTE9SID0gMTA2OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSSA9IDEwNzsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcGFpbnRUeXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVyaTsgKilcblxuKCogICB2b2lkIHNldFVyaShpbiBET01TdHJpbmcgdXJpKTsgKilcbigqICAgdm9pZCBzZXRQYWludChpbiB1bnNpZ25lZCBzaG9ydCBwYWludFR5cGUsIGluIERPTVN0cmluZyB1cmksIGluIERPTVN0cmluZyByZ2JDb2xvciwgaW4gRE9NU3RyaW5nIGljY0NvbG9yKSByYWlzZXMoU1ZHRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdNYXJrZXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTGFuZ1NwYWNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdTdHlsYWJsZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRml0VG9WaWV3Qm94IHsgKilcblxuKCogICAvLyBNYXJrZXIgVW5pdCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19VU0VSU1BBQ0VPTlVTRSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19TVFJPS0VXSURUSCA9IDI7ICopXG5cbigqICAgLy8gTWFya2VyIE9yaWVudGF0aW9uIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9BVVRPID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfQU5HTEUgPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCByZWZYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggcmVmWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFya2VyVW5pdHM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBtYXJrZXJXaWR0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIG1hcmtlckhlaWdodDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3JpZW50VHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkQW5nbGUgb3JpZW50QW5nbGU7ICopXG5cbigqICAgdm9pZCBzZXRPcmllbnRUb0F1dG8oKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgdm9pZCBzZXRPcmllbnRUb0FuZ2xlKGluIFNWR0FuZ2xlIGFuZ2xlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb2xvclByb2ZpbGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHVVJJUmVmZXJlbmNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdSZW5kZXJpbmdJbnRlbnQgeyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxvY2FsOyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7ICopXG4oKiAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZW5kZXJpbmdJbnRlbnQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3JQcm9maWxlUnVsZSA6IFNWR0NTU1J1bGUsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1JlbmRlcmluZ0ludGVudCB7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgc3JjIHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWUgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZW5kZXJpbmdJbnRlbnQgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHR3JhZGllbnRFbGVtZW50ICopXG5hbmQgYW5pbWF0ZWRTcHJlYWRNZXRob2QgPSBbc3ByZWFkTWV0aG9kVHlwZV0gYW5pbWF0ZWRcblxuYW5kIGdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGdyYWRpZW50VW5pdHM7ICopXG4gIG1ldGhvZCBncmFkaWVudFRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3ByZWFkTWV0aG9kIDogYW5pbWF0ZWRTcHJlYWRNZXRob2QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCAqKVxuYW5kIGxpbmVhckdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGdyYWRpZW50RWxlbWVudFxuXG4gIG1ldGhvZCB4MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQgKilcbmFuZCByYWRpYWxHcmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBncmFkaWVudEVsZW1lbnRcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgciA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTdG9wRWxlbWVudCAqKVxuYW5kIHN0b3BFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBtZXRob2Qgb2Zmc2V0IDogYW5pbWF0ZWROdW1iZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdHRlcm5FbGVtZW50ICopXG5hbmQgcGF0dGVybkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHBhdHRlcm5Vbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwYXR0ZXJuQ29udGVudFVuaXRzOyAqKVxuICBtZXRob2QgcGF0dGVyblRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDbGlwUGF0aEVsZW1lbnQgKilcbmFuZCBjbGlwUGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGNsaXBQYXRoVW5pdHM7ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR01hc2tFbGVtZW50ICopXG5hbmQgbWFza0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFza1VuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hc2tDb250ZW50VW5pdHM7ICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpbHRlckVsZW1lbnQgKilcbmFuZCBmaWx0ZXJFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBmaWx0ZXJVbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwcmltaXRpdmVVbml0czsgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsdGVyUmVzWCA6IGFuaW1hdGVkSW50ZWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsdGVyUmVzWSA6IGFuaW1hdGVkSW50ZWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0RmlsdGVyUmVzIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIDogU1ZHU3R5bGFibGUgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB3aWR0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIGhlaWdodDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIHJlc3VsdDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUJsZW5kRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIEJsZW5kIE1vZGUgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9OT1JNQUwgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX01VTFRJUExZID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9TQ1JFRU4gPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX0RBUktFTiA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTElHSFRFTiA9IDU7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbW9kZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbG9yTWF0cml4RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENvbG9yIE1hdHJpeCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEUgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfTFVNSU5BTkNFVE9BTFBIQSA9IDQ7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCB2YWx1ZXM7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuXG4oKiAgIC8vIENvbXBvbmVudCBUcmFuc2ZlciBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0lERU5USVRZID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9UQUJMRSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfRElTQ1JFVEUgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUiA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfR0FNTUEgPSA1OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3QgdGFibGVWYWx1ZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzbG9wZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGludGVyY2VwdDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGFtcGxpdHVkZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgb2Zmc2V0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY1JFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0dFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0JFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0FFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29tcG9zaXRlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDb21wb3NpdGUgT3BlcmF0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfSU4gPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VUID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0FUT1AgPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SID0gNTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUMgPSA2OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9wZXJhdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGszOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBFZGdlIE1vZGUgVmFsdWVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX0RVUExJQ0FURSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9XUkFQID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX05PTkUgPSAzOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgb3JkZXJYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG9yZGVyWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCBrZXJuZWxNYXRyaXg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkaXZpc29yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmlhczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciB0YXJnZXRYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIHRhcmdldFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGVkZ2VNb2RlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkQm9vbGVhbiBwcmVzZXJ2ZUFscGhhOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN1cmZhY2VTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGRpZmZ1c2VDb25zdGFudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBhemltdXRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZWxldmF0aW9uOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgejsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVNwb3RMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgejsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyRXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBsaW1pdGluZ0NvbmVBbmdsZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ2hhbm5lbCBTZWxlY3RvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX1IgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9HID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfQiA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0EgPSA0OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24geENoYW5uZWxTZWxlY3RvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24geUNoYW5uZWxTZWxlY3RvcjsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZsb29kRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3RkRGV2aWF0aW9uWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN0ZERldmlhdGlvblk7ICopXG5cbigqICAgdm9pZCBzZXRTdGREZXZpYXRpb24oaW4gZmxvYXQgc3RkRGV2aWF0aW9uWCwgaW4gZmxvYXQgc3RkRGV2aWF0aW9uWSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVJbWFnZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHVVJJUmVmZXJlbmNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTGFuZ1NwYWNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbzsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1lcmdlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIE1vcnBob2xvZ3kgT3BlcmF0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX0RJTEFURSA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3BlcmF0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciByYWRpdXNYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcmFkaXVzWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU9mZnNldEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGR5OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3VyZmFjZVNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJDb25zdGFudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyRXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFVGlsZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIFR1cmJ1bGVuY2UgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9GUkFDVEFMTk9JU0UgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0UgPSAyOyAqKVxuXG4oKiAgIC8vIFN0aXRjaCBPcHRpb25zICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9TVElUQ0ggPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9OT1NUSVRDSCA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJhc2VGcmVxdWVuY3lYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmFzZUZyZXF1ZW5jeVk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgbnVtT2N0YXZlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNlZWQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHN0aXRjaFRpbGVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0N1cnNvckVsZW1lbnQgKilcbmFuZCBjdXJzb3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQUVsZW1lbnQgKilcbmFuZCBhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgdGFyZ2V0IDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1ZpZXdFbGVtZW50ICopXG5hbmQgdmlld0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICBtZXRob2Qgdmlld1RhcmdldCA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NjcmlwdEVsZW1lbnQgKilcbmFuZCBzY3JpcHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgbWV0aG9kIHR5cGVfIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdab29tRXZlbnQgOiBVSUV2ZW50ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdSZWN0IHpvb21SZWN0U2NyZWVuOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgcHJldmlvdXNTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1BvaW50IHByZXZpb3VzVHJhbnNsYXRlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgbmV3U2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdQb2ludCBuZXdUcmFuc2xhdGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0aW9uRWxlbWVudCAqKVxuYW5kIGFuaW1hdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gICgqIGluaGVyaXQgZWxlbWVudFRpbWVDb250cm9sICopXG4gIG1ldGhvZCB0YXJnZXRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0U3RhcnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRDdXJyZW50VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U2ltcGxlRHVyYXRpb24gOiBudW1iZXJfdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVFbGVtZW50ICopXG5hbmQgYW5pbWF0ZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBhbmltYXRpb25FbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTZXRFbGVtZW50ICopXG5hbmQgc2V0RWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50ICopXG5hbmQgYW5pbWF0ZU1vdGlvbkVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdNUGF0aEVsZW1lbnQgKilcbmFuZCBtUGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVDb2xvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBhbmltYXRpb25FbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEVsZW1lbnQgKilcbmFuZCBmb250RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0dseXBoRWxlbWVudCAqKVxuKCogaW50ZXJmYWNlIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQqKVxuYW5kIGdseXBoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0hLZXJuRWxlbWVudCA6IFNWR0VsZW1lbnQgKilcbigqIGludGVyZmFjZSBTVkdWS2VybkVsZW1lbnQgOiBTVkdFbGVtZW50ICopXG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VTcmNFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlU3JjRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlVXJpRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZVVyaUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZUZvcm1hdEVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VGb3JtYXRFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VOYW1lRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZU5hbWVFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWV0YWRhdGFFbGVtZW50ICopXG5jbGFzcyB0eXBlIG1ldGFkYXRhRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvcmVpZ25PYmplY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBjcmVhdGVFbGVtZW50IChkb2MgOiBkb2N1bWVudCB0KSBuYW1lID0gZG9jIyNjcmVhdGVFbGVtZW50TlMgeG1sbnMgKEpzLnN0cmluZyBuYW1lKVxuXG5sZXQgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgbmFtZSA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUpXG5cbmxldCBjcmVhdGVBIGRvYyA6IGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGggZG9jIDogYWx0R2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoRGVmIGRvYyA6IGFsdEdseXBoRGVmRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaGRlZlwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaEl0ZW0gZG9jIDogYWx0R2x5cGhJdGVtRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaGl0ZW1cIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZSBkb2MgOiBhbmltYXRlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVDb2xvciBkb2MgOiBhbmltYXRlQ29sb3JFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVjb2xvclwiXG5cbmxldCBjcmVhdGVBbmltYXRlTW90aW9uIGRvYyA6IGFuaW1hdGVNb3Rpb25FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVtb3Rpb25cIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSBkb2MgOiBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRldHJhbnNmb3JtXCJcblxubGV0IGNyZWF0ZUNpcmNsZSBkb2MgOiBjaXJjbGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNpcmNsZVwiXG5cbmxldCBjcmVhdGVDbGlwUGF0aCBkb2MgOiBjbGlwUGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2xpcHBhdGhcIlxuXG4oKiBsZXQgY3JlYXRlQ29sb3JQcm9maWxlIGRvYyA6IGNvbG9yUHJvZmlsZSB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xvci1wcm9maWxlXCIgKilcbmxldCBjcmVhdGVDdXJzb3IgZG9jIDogY3Vyc29yRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjdXJzb3JcIlxuXG5sZXQgY3JlYXRlRGVmcyBkb2MgOiBkZWZzRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZWZzXCJcblxubGV0IGNyZWF0ZURlc2MgZG9jIDogZGVzY0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVzY1wiXG5cbmxldCBjcmVhdGVFbGxpcHNlIGRvYyA6IGVsbGlwc2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImVsbGlwc2VcIlxuXG4oKiBsZXQgY3JlYXRlRmUqICopXG5sZXQgY3JlYXRlRmlsdGVyIGRvYyA6IGZpbHRlckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZmlsdGVyXCJcblxubGV0IGNyZWF0ZUZvbnQgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udFwiXG5cbmxldCBjcmVhdGVGb250RmFjZSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2VcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VGb3JtYXQgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLWZvcm1hdFwiXG5cbmxldCBjcmVhdGVGb250RmFjZU5hbWUgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLW5hbWVcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VTcmMgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLXNyY1wiXG5cbmxldCBjcmVhdGVGb250RmFjZVVyaSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtdXJpXCJcblxubGV0IGNyZWF0ZUZvcmVpZ25PYmplY3QgZG9jIDogZm9yZWlnbk9iamVjdEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9yZWlnbk9iamVjdFwiXG5cbmxldCBjcmVhdGVHIGRvYyA6IGdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdcIlxuXG5sZXQgY3JlYXRlR2x5cGggZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdseXBoXCJcblxubGV0IGNyZWF0ZUdseXBoUmVmIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnbHlwaHJlZlwiXG5cbmxldCBjcmVhdGVoa2VybiBkb2MgOiBlbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhrZXJuXCJcblxubGV0IGNyZWF0ZUltYWdlIGRvYyA6IGltYWdlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbWFnZVwiXG5cbmxldCBjcmVhdGVMaW5lRWxlbWVudCBkb2MgOiBsaW5lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5lXCJcblxubGV0IGNyZWF0ZUxpbmVhckVsZW1lbnQgZG9jIDogbGluZWFyR3JhZGllbnRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmVhcmdyYWRpZW50XCJcblxuKCogbGV0IGNyZWF0ZU1hcmtlciBkb2MgOiBtYXJrZXJFbGVtZW50ICopXG5sZXQgY3JlYXRlTWFzayBkb2MgOiBtYXNrRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtYXNrXCJcblxubGV0IGNyZWF0ZU1ldGFEYXRhIGRvYyA6IG1ldGFkYXRhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtZXRhZGF0YVwiXG5cbmxldCBjcmVhdGVNaXNzaW5nR2x5cGggZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1pc3NpbmctZ2x5cGhcIlxuXG5sZXQgY3JlYXRlTVBhdGggZG9jIDogbVBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1wYXRoXCJcblxubGV0IGNyZWF0ZVBhdGggZG9jIDogcGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGF0aFwiXG5cbmxldCBjcmVhdGVQYXR0ZXJuIGRvYyA6IHBhdHRlcm5FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhdHRlcm5cIlxuXG5sZXQgY3JlYXRlUG9seWdvbiBkb2MgOiBwb2x5Z29uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwb2x5Z29uXCJcblxubGV0IGNyZWF0ZVBvbHlsaW5lIGRvYyA6IHBvbHlMaW5lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwb2x5bGluZVwiXG5cbmxldCBjcmVhdGVSYWRpYWxncmFkaWVudCBkb2MgOiByYWRpYWxHcmFkaWVudEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicmFkaWFsZ3JhZGllbnRcIlxuXG5sZXQgY3JlYXRlUmVjdCBkb2MgOiByZWN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJyZWN0XCJcblxubGV0IGNyZWF0ZVNjcmlwdCBkb2MgOiBzY3JpcHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNjcmlwdFwiXG5cbmxldCBjcmVhdGVTZXQgZG9jIDogc2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzZXRcIlxuXG5sZXQgY3JlYXRlU3RvcCBkb2MgOiBzdG9wRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdG9wXCJcblxubGV0IGNyZWF0ZVN0eWxlIGRvYyA6IHN0eWxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdHlsZVwiXG5cbmxldCBjcmVhdGVTdmcgZG9jIDogc3ZnRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdmdcIlxuXG5sZXQgY3JlYXRlU3dpdGNoIGRvYyA6IHN3aXRjaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3dpdGNoXCJcblxubGV0IGNyZWF0ZVN5bWJvbCBkb2MgOiBzeW1ib2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN5bWJvbFwiXG5cbmxldCBjcmVhdGVUZXh0RWxlbWVudCBkb2MgOiB0ZXh0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZXh0XCJcblxubGV0IGNyZWF0ZVRleHRwYXRoIGRvYyA6IHRleHRQYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZXh0cGF0aFwiXG5cbmxldCBjcmVhdGVUaXRsZSBkb2MgOiB0aXRsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGl0bGVcIlxuXG5sZXQgY3JlYXRlVHJlZiBkb2MgOiB0cmVmRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0cmVmXCJcblxubGV0IGNyZWF0ZVRzcGFuIGRvYyA6IHRzcGFuRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0c3BhblwiXG5cbmxldCBjcmVhdGVVc2UgZG9jIDogdXNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ1c2VcIlxuXG5sZXQgY3JlYXRlVmlldyBkb2MgOiB2aWV3RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2aWV3XCJcblxubGV0IGNyZWF0ZXZrZXJuIGRvYyA6IGVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmtlcm5cIlxuXG4oKioqKilcblxubGV0IHN2Z19lbGVtZW50IDogZWxlbWVudCB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fU1ZHRWxlbWVudFxuXG5sZXQgZG9jdW1lbnQgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuZG9jdW1lbnRcblxubGV0IGdldEVsZW1lbnRCeUlkIGlkIDogZWxlbWVudCB0ID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoSnMuVW5zYWZlLmdsb2JhbCMjLmRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAoZnVuIGUgLT4gaWYgSnMuaW5zdGFuY2VvZiBlIHN2Z19lbGVtZW50IHRoZW4gZSBlbHNlIHJhaXNlIE5vdF9mb3VuZClcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBlbGVtZW50IChlIDogI0RvbS5ub2RlIEpzLnQpIDogZWxlbWVudCBKcy50IEpzLm9wdCA9XG4gICAgaWYgSnMuaW5zdGFuY2VvZiBlIHN2Z19lbGVtZW50IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgdW5zYWZlQ29lcmNlIChlIDogI2VsZW1lbnQgdCkgdGFnID1cbiAgICBpZiBKcy5lcXVhbHMgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgdGFnKVxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhIGUgOiBhRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYVwiXG5cbiAgbGV0IGFsdEdseXBoIGUgOiBhbHRHbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoXCJcblxuICBsZXQgYWx0R2x5cGhEZWYgZSA6IGFsdEdseXBoRGVmRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhkZWZcIlxuXG4gIGxldCBhbHRHbHlwaEl0ZW0gZSA6IGFsdEdseXBoSXRlbUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoaXRlbVwiXG5cbiAgbGV0IGFuaW1hdGUgZSA6IGFuaW1hdGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlXCJcblxuICBsZXQgYW5pbWF0ZUNvbG9yIGUgOiBhbmltYXRlQ29sb3JFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlY29sb3JcIlxuXG4gIGxldCBhbmltYXRlTW90aW9uIGUgOiBhbmltYXRlTW90aW9uRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZW1vdGlvblwiXG5cbiAgbGV0IGFuaW1hdGVUcmFuc2Zvcm0gZSA6IGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50IHQgb3B0ID1cbiAgICB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGV0cmFuc2Zvcm1cIlxuXG4gIGxldCBjaXJjbGUgZSA6IGNpcmNsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNpcmNsZVwiXG5cbiAgbGV0IGNsaXBQYXRoIGUgOiBjbGlwUGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNsaXBwYXRoXCJcblxuICAoKiBsZXQgQ29sb3JQcm9maWxlIGUgOiBjb2xvclByb2ZpbGUgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNvbG9yLXByb2ZpbGVcIiAqKVxuICBsZXQgY3Vyc29yIGUgOiBjdXJzb3JFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjdXJzb3JcIlxuXG4gIGxldCBkZWZzIGUgOiBkZWZzRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZGVmc1wiXG5cbiAgbGV0IGRlc2MgZSA6IGRlc2NFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJkZXNjXCJcblxuICBsZXQgZWxsaXBzZSBlIDogZWxsaXBzZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImVsbGlwc2VcIlxuXG4gICgqIGxldCBGZSogKilcbiAgbGV0IGZpbHRlciBlIDogZmlsdGVyRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZmlsdGVyXCJcblxuICBsZXQgZm9udCBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnRcIlxuXG4gIGxldCBmb250RmFjZSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZVwiXG5cbiAgbGV0IGZvbnRGYWNlRm9ybWF0IGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLWZvcm1hdFwiXG5cbiAgbGV0IGZvbnRGYWNlTmFtZSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1uYW1lXCJcblxuICBsZXQgZm9udEZhY2VTcmMgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2Utc3JjXCJcblxuICBsZXQgZm9udEZhY2VVcmkgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtdXJpXCJcblxuICBsZXQgZm9yZWlnbk9iamVjdCBlIDogZm9yZWlnbk9iamVjdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvcmVpZ25vYmplY3RcIlxuXG4gIGxldCBnIGUgOiBnRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ1wiXG5cbiAgbGV0IGdseXBoIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdseXBoXCJcblxuICBsZXQgZ2x5cGhSZWYgZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ2x5cGhyZWZcIlxuXG4gIGxldCBoa2VybiBlIDogZWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiaGtlcm5cIlxuXG4gIGxldCBpbWFnZSBlIDogaW1hZ2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJpbWFnZVwiXG5cbiAgbGV0IGxpbmVFbGVtZW50IGUgOiBsaW5lRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibGluZVwiXG5cbiAgbGV0IGxpbmVhckVsZW1lbnQgZSA6IGxpbmVhckdyYWRpZW50RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibGluZWFyZ3JhZGllbnRcIlxuXG4gICgqIGxldCBNYXJrZXIgZSA6IG1hcmtlckVsZW1lbnQgKilcbiAgbGV0IG1hc2sgZSA6IG1hc2tFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtYXNrXCJcblxuICBsZXQgbWV0YURhdGEgZSA6IG1ldGFkYXRhRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWV0YWRhdGFcIlxuXG4gIGxldCBtaXNzaW5nR2x5cGggZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWlzc2luZy1nbHlwaFwiXG5cbiAgbGV0IG1QYXRoIGUgOiBtUGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1wYXRoXCJcblxuICBsZXQgcGF0aCBlIDogcGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBhdGhcIlxuXG4gIGxldCBwYXR0ZXJuIGUgOiBwYXR0ZXJuRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicGF0dGVyblwiXG5cbiAgbGV0IHBvbHlnb24gZSA6IHBvbHlnb25FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwb2x5Z29uXCJcblxuICBsZXQgcG9seWxpbmUgZSA6IHBvbHlMaW5lRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicG9seWxpbmVcIlxuXG4gIGxldCByYWRpYWxncmFkaWVudCBlIDogcmFkaWFsR3JhZGllbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJyYWRpYWxncmFkaWVudFwiXG5cbiAgbGV0IHJlY3QgZSA6IHJlY3RFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJyZWN0XCJcblxuICBsZXQgc2NyaXB0IGUgOiBzY3JpcHRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzY3JpcHRcIlxuXG4gIGxldCBzZXQgZSA6IHNldEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInNldFwiXG5cbiAgbGV0IHN0b3AgZSA6IHN0b3BFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdG9wXCJcblxuICBsZXQgc3R5bGUgZSA6IHN0eWxlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3R5bGVcIlxuXG4gIGxldCBzdmcgZSA6IHN2Z0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN2Z1wiXG5cbiAgbGV0IHN3aXRjaCBlIDogc3dpdGNoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3dpdGNoXCJcblxuICBsZXQgc3ltYm9sIGUgOiBzeW1ib2xFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzeW1ib2xcIlxuXG4gIGxldCB0ZXh0RWxlbWVudCBlIDogdGV4dEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRleHRcIlxuXG4gIGxldCB0ZXh0cGF0aCBlIDogdGV4dFBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0ZXh0cGF0aFwiXG5cbiAgbGV0IHRpdGxlIGUgOiB0aXRsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRpdGxlXCJcblxuICBsZXQgdHJlZiBlIDogdHJlZkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRyZWZcIlxuXG4gIGxldCB0c3BhbiBlIDogdHNwYW5FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0c3BhblwiXG5cbiAgbGV0IHVzZSBlIDogdXNlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidXNlXCJcblxuICBsZXQgdmlldyBlIDogdmlld0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInZpZXdcIlxuXG4gIGxldCB2a2VybiBlIDogZWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidmtlcm5cIlxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG4oKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRTb3VyY2UgKilcbm9wZW4gSnNcbm9wZW4gRG9tXG5vcGVuISBJbXBvcnRcblxudHlwZSBzdGF0ZSA9XG4gIHwgQ09OTkVDVElOR1xuICB8IE9QRU5cbiAgfCBDTE9TRURcblxuY2xhc3MgdHlwZSBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9yaWdpbiA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdEV2ZW50SWQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG4gICgqIG1ldGhvZCBzb3VyY2UgOiB1bml0ICopXG5lbmRcblxuY2xhc3MgdHlwZSBldmVudFNvdXJjZSA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCB1cmwgOiBzdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiBzdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9ub3BlbiA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tZXNzYWdlIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IHdpdGhDcmVkZW50aWFscyBiIDogb3B0aW9ucyB0ID1cbiAgbGV0IGluaXQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgaW5pdCMjLndpdGhDcmVkZW50aWFscyA6PSBKcy5ib29sIGI7XG4gIGluaXRcblxubGV0IGV2ZW50U291cmNlID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9FdmVudFNvdXJjZVxuXG5sZXQgZXZlbnRTb3VyY2Vfb3B0aW9ucyA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRXZlbnRTb3VyY2VcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGNvbnNvbGUgPSBvYmplY3RcbiAgbWV0aG9kIGxvZyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNiA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNyA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ184IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1ZyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm8gOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm4gOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XyA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzEgOiBib29sIHQgLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzIgOiBib29sIHQgLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMyA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzQgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzUgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXIgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXJ4bWwgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFjZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cCA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBFbmQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgdGltZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0aW1lRW5kIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuZXh0ZXJuYWwgZ2V0X2NvbnNvbGUgOiB1bml0IC0+IGNvbnNvbGUgdCA9IFwiY2FtbF9qc19nZXRfY29uc29sZVwiXG5cbmxldCBjb25zb2xlID0gZ2V0X2NvbnNvbGUgKClcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlIHBvc2l0aW9uRXJyb3JDb2RlXG5cbnR5cGUgd2F0Y2hJZFxuXG5jbGFzcyB0eXBlIGNvb3JkaW5hdGVzID0gb2JqZWN0XG4gIG1ldGhvZCBsYXRpdHVkZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9uZ2l0dWRlIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRpdHVkZSA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY3VyYWN5IDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRpdHVkZUFjY3VyYWN5IDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVhZGluZyA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwZWVkIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBjb29yZHMgOiBjb29yZGluYXRlcyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZXN0YW1wIDogSnMuZGF0ZSBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbk9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGVuYWJsZUhpZ2hBY2N1cmFjeSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZW91dCA6IGludCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXhpbXVtQWdlIDogaW50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbkVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBfUEVSTUlTU0lPTl9ERU5JRURfIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9TSVRJT05fVU5BVkFJTEFCTEVfIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVElNRU9VVCA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWVzc2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGdlb2xvY2F0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRDdXJyZW50UG9zaXRpb24gOlxuICAgICAgIChwb3NpdGlvbiBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gKHBvc2l0aW9uRXJyb3IgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IHBvc2l0aW9uT3B0aW9ucyBKcy50XG4gICAgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHdhdGNoUG9zaXRpb24gOlxuICAgICAgIChwb3NpdGlvbiBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gKHBvc2l0aW9uRXJyb3IgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IHBvc2l0aW9uT3B0aW9ucyBKcy50XG4gICAgLT4gd2F0Y2hJZCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsZWFyV2F0Y2ggOiB3YXRjaElkIC0+IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9wb3NpdGlvbl9vcHRpb25zICgpID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBnZW9sb2NhdGlvbiA9XG4gIGxldCB4ID0gSnMuVW5zYWZlLmdsb2JhbCMjLm5hdmlnYXRvciBpblxuICBpZiBKcy5PcHRkZWYudGVzdCB4IHRoZW4geCMjLmdlb2xvY2F0aW9uIGVsc2UgeFxuXG4oKiB1bmRlZmluZWQgKilcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGdlb2xvY2F0aW9uXG4iLCJjbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3VuZGluZ0NsaWVudFJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290Qm91bmRzIDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGludGVyc2VjdGlvblJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnRlcnNlY3Rpb25SYXRpbyA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNJbnRlcnNlY3RpbmcgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCByb290IDogRG9tLm5vZGUgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290TWFyZ2luIDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdGhyZXNob2xkIDogSnMubnVtYmVyX3QgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIHJvb3QgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RNYXJnaW4gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRocmVzaG9sZHMgOiBKcy5udW1iZXJfdCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB1bm9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X2ludGVyc2VjdGlvbl9vYnNlcnZlcl9vcHRpb25zICgpIDogaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zIEpzLnQgPVxuICBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZVxuXG5sZXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgOlxuICAgICggICAoICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyIEpzLnRcbiAgICAgICAgIC0+IHVuaXQpXG4gICAgICAgIEpzLmNhbGxiYWNrXG4gICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyBKcy50XG4gICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE4IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgU2hhcmVkID0gc2lnXG4gIGNsYXNzIHR5cGUgb2JqZWN0X29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgdmFsIG9iamVjdF9vcHRpb25zIDogdW5pdCAtPiBvYmplY3Rfb3B0aW9ucyBKcy50XG5cbiAgY2xhc3MgdHlwZSBfb2JqZWN0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHN1cHBvcnRlZExvY2FsZXNPZiA6XG4gICAgICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAtPiBvYmplY3Rfb3B0aW9ucyBKcy50IEpzLm9wdGRlZlxuICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTaGFyZWQgOiBTaGFyZWQgPSBzdHJ1Y3RcbiAgY2xhc3MgdHlwZSBvYmplY3Rfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb2JqZWN0X29wdGlvbnMgKCkgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIF9vYmplY3QgPSBvYmplY3RcbiAgICBtZXRob2Qgc3VwcG9ydGVkTG9jYWxlc09mIDpcbiAgICAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgIC0+IG9iamVjdF9vcHRpb25zIEpzLnQgSnMub3B0ZGVmXG4gICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIENvbGxhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB1c2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzZW5zaXRpdml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBpZ25vcmVQdW5jdHVhdGlvbiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY29sbGF0aW9uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWVyaWMgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNhc2VGaXJzdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdXNhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2Vuc2l0aXZpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlUHVuY3R1YXRpb24gOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWVyaWMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIGNhc2VGaXJzdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgdXNhZ2UgPSBKcy5zdHJpbmcgXCJzb3J0XCJcblxuICAgICAgdmFsIG11dGFibGUgc2Vuc2l0aXZpdHkgPSBKcy5zdHJpbmcgXCJ2YXJpYW50XCJcblxuICAgICAgdmFsIG11dGFibGUgaWdub3JlUHVuY3R1YXRpb24gPSBKcy5fZmFsc2VcblxuICAgICAgdmFsIG11dGFibGUgbnVtZXJpYyA9IEpzLl9mYWxzZVxuXG4gICAgICB2YWwgbXV0YWJsZSBjYXNlRmlyc3QgPSBKcy5zdHJpbmcgXCJmYWxzZVwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGNvbXBhcmUgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgLT4gaW50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRGF0ZVRpbWVGb3JtYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNhbGVuZGFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBob3VyMTIgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHdlZWtkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGVyYSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgeWVhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbW9udGggOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGRheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgaG91ciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWludXRlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBzZWNvbmQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBkYXRlU3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVTdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY2FsZW5kYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGRheVBlcmlvZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyMTIgOiBib29sIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyQ3ljbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdE1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgd2Vla2RheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZXJhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB5ZWFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtb250aCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW51dGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNlY29uZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZnJhY3Rpb25hbFNlY29uZERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGRhdGVTdHlsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lU3R5bGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY2FsZW5kYXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZGF5UGVyaW9kID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWJlcmluZ1N5c3RlbSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lWm9uZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyMTIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91ckN5Y2xlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGZvcm1hdE1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHdlZWtkYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZXJhID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHllYXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbW9udGggPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWludXRlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNlY29uZCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVab25lTmFtZSA9IEpzLnVuZGVmaW5lZFxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgZm9ybWF0X3BhcnQgPSBvYmplY3RcbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3ZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgZm9ybWF0IDogKEpzLmRhdGUgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdFRvUGFydHMgOlxuICAgICAgSnMuZGF0ZSBKcy50IEpzLm9wdGRlZiAtPiBmb3JtYXRfcGFydCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIE51bWJlckZvcm1hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeURpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHVzZUdyb3VwaW5nIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgY29tcGFjdERpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeURpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5U2lnbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBub3RhdGlvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzaWduRGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdW5pdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdW5pdERpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVzZUdyb3VwaW5nIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ01vZGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nUHJpb3JpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nSW5jcmVtZW50IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0cmFpbGluZ1plcm9EaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBjb21wYWN0RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeURpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3lTaWduID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIG5vdGF0aW9uID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWJlcmluZ1N5c3RlbSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzaWduRGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzdHlsZSA9IEpzLnN0cmluZyBcImRlY2ltYWxcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB1bml0ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVuaXREaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVzZUdyb3VwaW5nID0gSnMuX3RydWVcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdNb2RlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nUHJpb3JpdHkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdJbmNyZW1lbnQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdHJhaWxpbmdaZXJvRGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtSW50ZWdlckRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBKcy51bmRlZmluZWRcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIGZvcm1hdF9wYXJ0ID0gb2JqZWN0XG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF92YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGZvcm1hdCA6IChKcy5udW1iZXIgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdFRvUGFydHMgOlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMub3B0ZGVmIC0+IGZvcm1hdF9wYXJ0IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGx1cmFsUnVsZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHBsdXJhbENhdGVnb3JpZXMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgX3R5cGUgPSBKcy5zdHJpbmcgXCJjYXJkaW5hbFwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHNlbGVjdCA6IEpzLm51bWJlciBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50bCA9IG9iamVjdFxuICBtZXRob2QgX0NvbGxhdG9yIDogQ29sbGF0b3IuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RhdGVUaW1lRm9ybWF0IDogRGF0ZVRpbWVGb3JtYXQuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX051bWJlckZvcm1hdCA6IE51bWJlckZvcm1hdC5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUGx1cmFsUnVsZXMgOiBQbHVyYWxSdWxlcy5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRDYW5vbmljYWxMb2NhbGVzIDpcbiAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBpbnRsID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsXG5cbmxldCBjb2xsYXRvcl9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fQ29sbGF0b3JcblxubGV0IGRhdGVUaW1lRm9ybWF0X2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9EYXRlVGltZUZvcm1hdFxuXG5sZXQgbnVtYmVyRm9ybWF0X2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9OdW1iZXJGb3JtYXRcblxubGV0IHBsdXJhbFJ1bGVzX2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9QbHVyYWxSdWxlc1xuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgaW50bFxuIiwiXG50eXBlIHQgPSBpbnRcbmxldCBlcXVhbCAoeCA6IGludCkgKHkgOiBpbnQpID0geCA9IHlcbmxldCBjb21wYXJlICh4IDogaW50KSAoeSA6IGludCkgPSBjb21wYXJlIHggeVxubGV0IHRvX2ludCB4ID0geFxubGV0IHBwID0gRm9ybWF0LnBwX3ByaW50X2ludFxuXG5sZXQgaW50ZXJzZWN0IHggeSA9IHggbGFuZCB5IDw+IDBcbmxldCAoKyspIHggeSA9IHggbG9yIHlcblxubGV0IGR1bW15ID0gLTFcbmxldCBpbmV4aXN0YW50ID0gMVxubGV0IGxldHRlciA9IDJcbmxldCBub3RfbGV0dGVyID0gNFxubGV0IG5ld2xpbmUgPSA4XG5sZXQgbGFzdG5ld2xpbmUgPSAxNlxubGV0IHNlYXJjaF9ib3VuZGFyeSA9IDMyXG5cbmxldCBmcm9tX2NoYXIgPSBmdW5jdGlvblxuICAoKiBTaG91bGQgbWF0Y2ggW2N3b3JkXSBkZWZpbml0aW9uICopXG4gIHwgJ2EnLi4neicgfCAnQScuLidaJyB8ICcwJy4uJzknIHwgJ18nIHwgJ1xcMTcwJyB8ICdcXDE4MScgfCAnXFwxODYnXG4gIHwgJ1xcMTkyJy4uJ1xcMjE0JyB8ICdcXDIxNicuLidcXDI0NicgfCAnXFwyNDgnLi4nXFwyNTUnIC0+XG4gICAgbGV0dGVyXG4gIHwgJ1xcbicgLT5cbiAgICBub3RfbGV0dGVyICsrIG5ld2xpbmVcbiAgfCBfIC0+XG4gICAgbm90X2xldHRlclxuIiwiKCoqIFZlcnkgc21hbGwgdG9vbGluZyBmb3IgZm9ybWF0IHByaW50ZXJzLiAqKVxuXG5pbmNsdWRlIEZvcm1hdFxuXG50eXBlICdhIHQgPSBGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXRcblxubGV0IGxpc3QgPSBwcF9wcmludF9saXN0XG5sZXQgc3RyID0gcHBfcHJpbnRfc3RyaW5nXG5sZXQgc2V4cCBmbXQgcyBwcCB4ID0gZnByaW50ZiBmbXQgXCJAWzwzPiglc0AgJWEpQF1cIiBzIHBwIHhcbmxldCBwYWlyIHBwMSBwcDIgZm10ICh2MSx2MikgPVxuICBwcDEgZm10IHYxOyBwcF9wcmludF9zcGFjZSBmbXQgKCkgOyBwcDIgZm10IHYyXG5sZXQgdHJpcGxlIHBwMSBwcDIgcHAzIGZtdCAodjEsIHYyLCB2MykgPVxuICBwcDEgZm10IHYxOyBwcF9wcmludF9zcGFjZSBmbXQgKCkgO1xuICBwcDIgZm10IHYyOyBwcF9wcmludF9zcGFjZSBmbXQgKCkgO1xuICBwcDMgZm10IHYzXG5sZXQgaW50ID0gcHBfcHJpbnRfaW50XG5sZXQgb3B0aW50IGZtdCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgaSAtPiBmcHJpbnRmIGZtdCBcIkAgJWRcIiBpXG5cbmxldCBxdW90ZSBmbXQgcyA9IEZvcm1hdC5mcHJpbnRmIGZtdCBcIlxcXCIlc1xcXCJcIiBzXG5cbmxldCBwcF9vbGlzdCBwcF9lbGVtIGZtdCA9XG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDM+W0AgJWFAIF1AXVwiXG4gICAgKHBwX3ByaW50X2xpc3RcbiAgICAgICB+cHBfc2VwOihmdW4gZm10ICgpIC0+IGZwcmludGYgZm10IFwiO0AgXCIpXG4gICAgICAgcHBfZWxlbSlcblxubGV0IHBwX3N0cl9saXN0ID0gcHBfb2xpc3QgcXVvdGVcblxubGV0IHRvX3RvX3N0cmluZyBwcCB4ID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDE2IGluXG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIHBwIGZtdCB4O1xuICBCdWZmZXIuY29udGVudHMgYlxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxudHlwZSBjID0gaW50XG50eXBlIHQgPSAoYyAqIGMpIGxpc3RcblxubGV0IHJlYyB1bmlvbiBsIGwnID1cbiAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIF8sIFtdIC0+IGxcbiAgfCBbXSwgXyAtPiBsJ1xuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyICsgMSA8IGMxJyB0aGVuXG4gICAgICAoYzEsIGMyKTo6dW5pb24gciBsJ1xuICAgIGVsc2UgaWYgYzInICsgMSA8IGMxIHRoZW5cbiAgICAgIChjMScsIGMyJyk6OnVuaW9uIGwgcidcbiAgICBlbHNlIGlmIGMyIDwgYzInIHRoZW5cbiAgICAgIHVuaW9uIHIgKChtaW4gYzEgYzEnLCBjMicpOjpyJylcbiAgICBlbHNlXG4gICAgICB1bmlvbiAoKG1pbiBjMSBjMScsIGMyKTo6cikgcidcblxubGV0IHJlYyBpbnRlciBsIGwnID1cbiAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIF8sIFtdIC0+IFtdXG4gIHwgW10sIF8gLT4gW11cbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiA8IGMxJyB0aGVuXG4gICAgICBpbnRlciByIGwnXG4gICAgZWxzZSBpZiBjMicgPCBjMSB0aGVuXG4gICAgICBpbnRlciBsIHInXG4gICAgZWxzZSBpZiBjMiA8IGMyJyB0aGVuXG4gICAgICAobWF4IGMxIGMxJywgYzIpOjppbnRlciByIGwnXG4gICAgZWxzZVxuICAgICAgKG1heCBjMSBjMScsIGMyJyk6OmludGVyIGwgcidcblxubGV0IHJlYyBkaWZmIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gbFxuICB8IFtdLCBfIC0+IFtdXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgPCBjMScgdGhlblxuICAgICAgKGMxLCBjMik6OmRpZmYgciBsJ1xuICAgIGVsc2UgaWYgYzInIDwgYzEgdGhlblxuICAgICAgZGlmZiBsIHInXG4gICAgZWxzZVxuICAgICAgbGV0IHInJyA9IGlmIGMyJyA8IGMyIHRoZW4gKGMyJyArIDEsIGMyKSA6OiByIGVsc2UgciBpblxuICAgICAgaWYgYzEgPCBjMScgdGhlblxuICAgICAgICAoYzEsIGMxJyAtIDEpOjpkaWZmIHInJyByJ1xuICAgICAgZWxzZVxuICAgICAgICBkaWZmIHInJyByJ1xuXG5sZXQgc2luZ2xlIGMgPSBbYywgY11cblxubGV0IGFkZCBjIGwgPSB1bmlvbiAoc2luZ2xlIGMpIGxcblxubGV0IHNlcSBjIGMnID0gaWYgYyA8PSBjJyB0aGVuIFtjLCBjJ10gZWxzZSBbYycsIGNdXG5cbmxldCByZWMgb2Zmc2V0IG8gbCA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAgICAgICAgLT4gW11cbiAgfCAoYzEsIGMyKSA6OiByIC0+IChjMSArIG8sIGMyICsgbykgOjogb2Zmc2V0IG8gclxuXG5sZXQgZW1wdHkgPSBbXVxuXG5sZXQgcmVjIG1lbSAoYyA6IGludCkgcyA9XG4gIG1hdGNoIHMgd2l0aFxuICAgIFtdICAgICAgICAgICAgICAtPiBmYWxzZVxuICB8IChjMSwgYzIpIDo6IHJlbSAtPiBpZiBjIDw9IGMyIHRoZW4gYyA+PSBjMSBlbHNlIG1lbSBjIHJlbVxuXG4oKioqKilcblxudHlwZSBoYXNoID0gaW50XG5cbmxldCByZWMgaGFzaF9yZWMgPSBmdW5jdGlvblxuICB8IFtdICAgICAgICAtPiAwXG4gIHwgKGksIGopOjpyIC0+IGkgKyAxMyAqIGogKyAyNTcgKiBoYXNoX3JlYyByXG5sZXQgaGFzaCBsID0gKGhhc2hfcmVjIGwpIGxhbmQgMHgzRkZGRkZGRlxuXG4oKioqKilcblxubGV0IHByaW50X29uZSBjaCAoYzEsIGMyKSA9XG4gIGlmIGMxID0gYzIgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiJWRcIiBjMVxuICBlbHNlXG4gICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZC0lZFwiIGMxIGMyXG5cbmxldCBwcCA9IEZtdC5saXN0IHByaW50X29uZVxuXG5sZXQgcmVjIGl0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgKHgsIHkpOjp4cyAtPlxuICAgIGYgeCB5O1xuICAgIGl0ZXIgeHMgIH5mXG5cbmxldCBvbmVfY2hhciA9IGZ1bmN0aW9uXG4gIHwgW2ksIGpdIHdoZW4gaSA9IGogLT4gU29tZSBpXG4gIHwgXyAtPiBOb25lXG5cblxubW9kdWxlIENTZXRNYXAgPSBNYXAuTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gaW50ICogKGludCAqIGludCkgbGlzdFxuICAgIGxldCBjb21wYXJlIChpLCB1KSAoaiwgdikgPVxuICAgICAgbGV0IGMgPSBjb21wYXJlIGkgaiBpblxuICAgICAgaWYgYyA8PiAwXG4gICAgICB0aGVuIGNcbiAgICAgIGVsc2UgY29tcGFyZSB1IHZcbiAgZW5kKVxuXG5sZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gTGlzdC5mb2xkX3JpZ2h0IGYgdCBpbml0XG5cbmxldCBjc2luZ2xlIGMgPSBzaW5nbGUgKENoYXIuY29kZSBjKVxuXG5sZXQgY2FueSA9IFswLCAyNTVdXG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHJlYyBwcmVwZW5kIHMgeCBsID1cbiAgbWF0Y2ggcywgbCB3aXRoXG4gIHwgW10sIF8gLT4gbFxuICB8IF9yLCBbXSAtPiBbXVxuICB8IChfYywgYycpIDo6IHIsIChbZCwgX2QnXSwgX3gnKSA6OiBfcicgd2hlbiBjJyA8IGQgLT4gcHJlcGVuZCByIHggbFxuICB8IChjLCBjJykgOjogciwgKFtkLCBkJ10sIHgnKSA6OiByJyAtPlxuICAgIGlmIGMgPD0gZCB0aGVuIGJlZ2luXG4gICAgICBpZiBjJyA8IGQnXG4gICAgICB0aGVuIChbZCwgYyddLCB4IEAgeCcpIDo6IHByZXBlbmQgciB4ICgoW2MnICsgMSwgZCddLCB4JykgOjogcicpXG4gICAgICBlbHNlIChbZCwgZCddLCB4IEAgeCcpIDo6IHByZXBlbmQgcyB4IHInXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGMgPiBkJ1xuICAgICAgdGhlbiAoW2QsIGQnXSwgeCcpIDo6IHByZXBlbmQgcyB4IHInXG4gICAgICBlbHNlIChbZCwgYyAtIDFdLCB4JykgOjogcHJlcGVuZCBzIHggKChbYywgZCddLCB4JykgOjogcicpXG4gICAgZW5kXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHBpY2sgPSBmdW5jdGlvblxuICB8IFtdIC0+IGludmFsaWRfYXJnIFwiUmVfY3NldC5waWNrXCJcbiAgfCAoeCwgXyk6Ol8gLT4geFxuIiwiXG5tb2R1bGUgUG1hcmsgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG4gIGxldCBlcXVhbCAoeCA6IGludCkgKHkgOiBpbnQpID0geCA9IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBpbnQpICh5IDogaW50KSA9IGNvbXBhcmUgeCB5XG4gIGxldCByID0gcmVmIDBcbiAgbGV0IGdlbiAoKSA9IGluY3IgciA7ICFyXG5cbiAgbGV0IHBwID0gRm9ybWF0LnBwX3ByaW50X2ludFxuZW5kXG5cbmluY2x1ZGUgUG1hcmtcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZShQbWFyaylcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbnR5cGUgc2VtID0gWyBgTG9uZ2VzdCB8IGBTaG9ydGVzdCB8IGBGaXJzdCBdXG5cbnR5cGUgcmVwX2tpbmQgPSBbIGBHcmVlZHkgfCBgTm9uX2dyZWVkeSBdXG5cbnR5cGUgbWFyayA9IGludFxudHlwZSBpZHggPSBpbnRcblxudHlwZSBleHByID0geyBpZCA6IGludDsgZGVmIDogZGVmIH1cblxuYW5kIGRlZiA9XG4gICAgQ3N0IG9mIENzZXQudFxuICB8IEFsdCBvZiBleHByIGxpc3RcbiAgfCBTZXEgb2Ygc2VtICogZXhwciAqIGV4cHJcbiAgfCBFcHNcbiAgfCBSZXAgb2YgcmVwX2tpbmQgKiBzZW0gKiBleHByXG4gIHwgTWFyayBvZiBpbnRcbiAgfCBFcmFzZSBvZiBpbnQgKiBpbnRcbiAgfCBCZWZvcmUgb2YgQ2F0ZWdvcnkudFxuICB8IEFmdGVyIG9mIENhdGVnb3J5LnRcbiAgfCBQbWFyayBvZiBQbWFyay50XG5cbmxldCBoYXNoX2NvbWJpbmUgaCBhY2N1ID0gYWNjdSAqIDY1NTk5ICsgaFxuXG5tb2R1bGUgTWFya3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG1hcmtzIDogKGludCAqIGludCkgbGlzdFxuICAgIDsgcG1hcmtzIDogUG1hcmsuU2V0LnQgfVxuXG4gIGxldCBlbXB0eSA9IHsgbWFya3MgPSBbXSA7IHBtYXJrcyA9IFBtYXJrLlNldC5lbXB0eSB9XG5cbiAgbGV0IHJlYyBtZXJnZV9tYXJrc19vZmZzZXQgb2xkID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBvbGRcbiAgICB8IChpLCB2KSA6OiByZW0gLT5cbiAgICAgIGxldCBudycgPSBtZXJnZV9tYXJrc19vZmZzZXQgKExpc3QucmVtb3ZlX2Fzc3EgaSBvbGQpIHJlbSBpblxuICAgICAgaWYgdiA9IC0yIHRoZW5cbiAgICAgICAgbncnXG4gICAgICBlbHNlXG4gICAgICAgIChpLCB2KSA6OiBudydcblxuICBsZXQgbWVyZ2Ugb2xkIG53ID1cbiAgICB7IG1hcmtzID0gbWVyZ2VfbWFya3Nfb2Zmc2V0IG9sZC5tYXJrcyBudy5tYXJrc1xuICAgIDsgcG1hcmtzID0gUG1hcmsuU2V0LnVuaW9uIG9sZC5wbWFya3MgbncucG1hcmtzIH1cblxuICBsZXQgcmVjIGhhc2hfbWFya3Nfb2Zmc2V0IGwgYWNjdSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAgICAgICAgICAtPiBhY2N1XG4gICAgfCAoYSwgaSkgOjogciAtPiBoYXNoX21hcmtzX29mZnNldCByIChoYXNoX2NvbWJpbmUgYSAoaGFzaF9jb21iaW5lIGkgYWNjdSkpXG5cbiAgbGV0IGhhc2ggbSBhY2N1ID1cbiAgICBoYXNoX21hcmtzX29mZnNldCBtLm1hcmtzIChoYXNoX2NvbWJpbmUgKEhhc2h0YmwuaGFzaCBtLnBtYXJrcykgYWNjdSlcblxuICBsZXQgcmVjIG1hcmtzX3NldF9pZHggaWR4ID0gZnVuY3Rpb25cbiAgICB8IChhLCAtMSkgOjogcmVtIC0+XG4gICAgICAoYSwgaWR4KSA6OiBtYXJrc19zZXRfaWR4IGlkeCByZW1cbiAgICB8IG1hcmtzIC0+XG4gICAgICBtYXJrc1xuXG4gIGxldCBtYXJrc19zZXRfaWR4IG1hcmtzIGlkeCA9XG4gICAgeyBtYXJrcyB3aXRoIG1hcmtzID0gbWFya3Nfc2V0X2lkeCBpZHggbWFya3MubWFya3MgfVxuXG4gIGxldCBwcF9tYXJrcyBjaCB0ID1cbiAgICBtYXRjaCB0Lm1hcmtzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICAoKVxuICAgIHwgKGEsIGkpIDo6IHIgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiJWQtJWRcIiBhIGk7XG4gICAgICBMaXN0Lml0ZXIgKGZ1biAoYSwgaSkgLT4gRm9ybWF0LmZwcmludGYgY2ggXCIgJWQtJWRcIiBhIGkpIHJcbmVuZFxuXG4oKioqKilcblxubGV0IHBwX3NlbSBjaCBrID1cbiAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBjaFxuICAgIChtYXRjaCBrIHdpdGhcbiAgICAgICBgU2hvcnRlc3QgLT4gXCJzaG9ydFwiXG4gICAgIHwgYExvbmdlc3QgIC0+IFwibG9uZ1wiXG4gICAgIHwgYEZpcnN0ICAgIC0+IFwiZmlyc3RcIilcblxuXG5sZXQgcHBfcmVwX2tpbmQgZm10ID0gZnVuY3Rpb25cbiAgfCBgR3JlZWR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiR3JlZWR5XCJcbiAgfCBgTm9uX2dyZWVkeSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5vbl9ncmVlZHlcIlxuXG5sZXQgcmVjIHBwIGNoIGUgPVxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbWF0Y2ggZS5kZWYgd2l0aFxuICAgIENzdCBsIC0+XG4gICAgc2V4cCBjaCBcImNzdFwiIENzZXQucHAgbDtcbiAgfCBBbHQgbCAtPlxuICAgIHNleHAgY2ggXCJhbHRcIiAobGlzdCBwcCkgbFxuICB8IFNlcSAoaywgZSwgZScpIC0+XG4gICAgc2V4cCBjaCBcInNlcVwiICh0cmlwbGUgcHBfc2VtIHBwIHBwKSAoaywgZSwgZScpXG4gIHwgRXBzIC0+XG4gICAgc3RyIGNoIFwiZXBzXCJcbiAgfCBSZXAgKF9yaywgaywgZSkgLT5cbiAgICBzZXhwIGNoIFwicmVwXCIgKHBhaXIgcHBfc2VtIHBwKSAoaywgZSlcbiAgfCBNYXJrIGkgLT5cbiAgICBzZXhwIGNoIFwibWFya1wiIGludCBpXG4gIHwgUG1hcmsgaSAtPlxuICAgIHNleHAgY2ggXCJwbWFya1wiIGludCAoaSA6PiBpbnQpXG4gIHwgRXJhc2UgKGIsIGUpIC0+XG4gICAgc2V4cCBjaCBcImVyYXNlXCIgKHBhaXIgaW50IGludCkgKGIsIGUpXG4gIHwgQmVmb3JlIGMgLT5cbiAgICBzZXhwIGNoIFwiYmVmb3JlXCIgQ2F0ZWdvcnkucHAgY1xuICB8IEFmdGVyIGMgLT5cbiAgICBzZXhwIGNoIFwiYWZ0ZXJcIiBDYXRlZ29yeS5wcCBjXG5cblxuKCoqKiopXG5cbmxldCByZWMgZmlyc3QgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBOb25lXG4gIHwgeCA6OiByIC0+XG4gICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIE5vbmUgICAgICAgICAgLT4gZmlyc3QgZiByXG4gICAgfCBTb21lIF8gYXMgcmVzIC0+IHJlc1xuXG4oKioqKilcblxudHlwZSBpZHMgPSBpbnQgcmVmXG5sZXQgY3JlYXRlX2lkcyAoKSA9IHJlZiAwXG5cbmxldCBlcHNfZXhwciA9IHsgaWQgPSAwOyBkZWYgPSBFcHMgfVxuXG5sZXQgbWtfZXhwciBpZHMgZGVmID1cbiAgaW5jciBpZHM7XG4gIHsgaWQgPSAhaWRzOyBkZWYgPSBkZWYgfVxuXG5sZXQgZW1wdHkgaWRzID0gbWtfZXhwciBpZHMgKEFsdCBbXSlcblxubGV0IGNzdCBpZHMgcyA9XG4gIGlmIENzZXQuaXNfZW1wdHkgc1xuICB0aGVuIGVtcHR5IGlkc1xuICBlbHNlIG1rX2V4cHIgaWRzIChDc3QgcylcblxubGV0IGFsdCBpZHMgPSBmdW5jdGlvblxuICB8IFtdICAtPiBlbXB0eSBpZHNcbiAgfCBbY10gLT4gY1xuICB8IGwgICAtPiBta19leHByIGlkcyAoQWx0IGwpXG5cbmxldCBzZXEgaWRzIGtpbmQgeCB5ID1cbiAgbWF0Y2ggeC5kZWYsIHkuZGVmIHdpdGhcbiAgICBBbHQgW10sIF8gICAgICAgICAgICAgICAgIC0+IHhcbiAgfCBfLCBBbHQgW10gICAgICAgICAgICAgICAgIC0+IHlcbiAgfCBFcHMsIF8gICAgICAgICAgICAgICAgICAgIC0+IHlcbiAgfCBfLCBFcHMgd2hlbiBraW5kID0gYEZpcnN0IC0+IHhcbiAgfCBfICAgICAgICAgICAgICAgICAgICAgICAgIC0+IG1rX2V4cHIgaWRzIChTZXEgKGtpbmQsIHgsIHkpKVxuXG5sZXQgaXNfZXBzIGV4cHIgPVxuICBtYXRjaCBleHByLmRlZiB3aXRoXG4gIHwgRXBzIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCBlcHMgaWRzID0gbWtfZXhwciBpZHMgRXBzXG5cbmxldCByZXAgaWRzIGtpbmQgc2VtIHggPSBta19leHByIGlkcyAoUmVwIChraW5kLCBzZW0sIHgpKVxuXG5sZXQgbWFyayBpZHMgbSA9IG1rX2V4cHIgaWRzIChNYXJrIG0pXG5cbmxldCBwbWFyayBpZHMgaSA9IG1rX2V4cHIgaWRzIChQbWFyayBpKVxuXG5sZXQgZXJhc2UgaWRzIG0gbScgPSBta19leHByIGlkcyAoRXJhc2UgKG0sIG0nKSlcblxubGV0IGJlZm9yZSBpZHMgYyA9IG1rX2V4cHIgaWRzIChCZWZvcmUgYylcblxubGV0IGFmdGVyIGlkcyBjID0gbWtfZXhwciBpZHMgKEFmdGVyIGMpXG5cbigqKioqKVxuXG5sZXQgcmVjIHJlbmFtZSBpZHMgeCA9XG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgICBDc3QgXyB8IEVwcyB8IE1hcmsgXyB8IFBtYXJrIF8gfCBFcmFzZSBfIHwgQmVmb3JlIF8gfCBBZnRlciBfIC0+XG4gICAgbWtfZXhwciBpZHMgeC5kZWZcbiAgfCBBbHQgbCAtPlxuICAgIG1rX2V4cHIgaWRzIChBbHQgKExpc3QubWFwIChyZW5hbWUgaWRzKSBsKSlcbiAgfCBTZXEgKGssIHksIHopIC0+XG4gICAgbWtfZXhwciBpZHMgKFNlcSAoaywgcmVuYW1lIGlkcyB5LCByZW5hbWUgaWRzIHopKVxuICB8IFJlcCAoZywgaywgeSkgLT5cbiAgICBta19leHByIGlkcyAoUmVwIChnLCBrLCByZW5hbWUgaWRzIHkpKVxuXG4oKioqKilcblxudHlwZSBoYXNoID0gaW50XG50eXBlIG1hcmtfaW5mb3MgPSBpbnQgYXJyYXlcbnR5cGUgc3RhdHVzID0gRmFpbGVkIHwgTWF0Y2ggb2YgbWFya19pbmZvcyAqIFBtYXJrLlNldC50IHwgUnVubmluZ1xuXG5tb2R1bGUgRSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVFNlcSBvZiB0IGxpc3QgKiBleHByICogc2VtXG4gICAgfCBURXhwIG9mIE1hcmtzLnQgKiBleHByXG4gICAgfCBUTWF0Y2ggb2YgTWFya3MudFxuXG4gIGxldCByZWMgZXF1YWwgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgW10gLT5cbiAgICAgIHRydWVcbiAgICB8IFRTZXEgKGwxJywgZTEsIF8pIDo6IHIxLCBUU2VxIChsMicsIGUyLCBfKSA6OiByMiAtPlxuICAgICAgZTEuaWQgPSBlMi5pZCAmJiBlcXVhbCBsMScgbDInICYmIGVxdWFsIHIxIHIyXG4gICAgfCBURXhwIChtYXJrczEsIGUxKSA6OiByMSwgVEV4cCAobWFya3MyLCBlMikgOjogcjIgLT5cbiAgICAgIGUxLmlkID0gZTIuaWQgJiYgbWFya3MxID0gbWFya3MyICYmIGVxdWFsIHIxIHIyXG4gICAgfCBUTWF0Y2ggbWFya3MxIDo6IHIxLCBUTWF0Y2ggbWFya3MyIDo6IHIyIC0+XG4gICAgICBtYXJrczEgPSBtYXJrczIgJiYgZXF1YWwgcjEgcjJcbiAgICB8IF8gLT5cbiAgICAgIGZhbHNlXG5cbiAgbGV0IHJlYyBoYXNoIGwgYWNjdSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgYWNjdVxuICAgIHwgVFNlcSAobCcsIGUsIF8pIDo6IHIgLT5cbiAgICAgIGhhc2ggciAoaGFzaF9jb21iaW5lIDB4MTcyYTFiY2UgKGhhc2hfY29tYmluZSBlLmlkIChoYXNoIGwnIGFjY3UpKSlcbiAgICB8IFRFeHAgKG1hcmtzLCBlKSA6OiByIC0+XG4gICAgICBoYXNoIHJcbiAgICAgICAgKGhhc2hfY29tYmluZSAweDJiNGMwZDc3IChoYXNoX2NvbWJpbmUgZS5pZCAoTWFya3MuaGFzaCBtYXJrcyBhY2N1KSkpXG4gICAgfCBUTWF0Y2ggbWFya3MgOjogciAtPlxuICAgICAgaGFzaCByIChoYXNoX2NvbWJpbmUgMHgxYzIwNWFkNSAoTWFya3MuaGFzaCBtYXJrcyBhY2N1KSlcblxuICBsZXQgdGV4cCBtYXJrcyB4ID0gVEV4cCAobWFya3MsIHgpXG5cbiAgbGV0IHRzZXEga2luZCB4IHkgcmVtID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gcmVtXG4gICAgfCBbVEV4cCAobWFya3MsIHtkZWYgPSBFcHMgOyBffSldIC0+IFRFeHAgKG1hcmtzLCB5KSA6OiByZW1cbiAgICB8IF8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gVFNlcSAoeCwgeSwga2luZCkgOjogcmVtXG5cbiAgbGV0IHJlYyBwcmludF9zdGF0ZV9yZWMgY2ggZSB5ID1cbiAgICBtYXRjaCBlIHdpdGhcbiAgICB8IFRNYXRjaCBtYXJrcyAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihNYXRjaEAgJWEpQF1cIiBNYXJrcy5wcF9tYXJrcyBtYXJrc1xuICAgIHwgVFNlcSAobCcsIHgsIF9raW5kKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihTZXFAIFwiO1xuICAgICAgcHJpbnRfc3RhdGVfbHN0IGNoIGwnIHg7XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkAgJWEpQF1cIiBwcCB4XG4gICAgfCBURXhwIChtYXJrcywge2RlZiA9IEVwczsgX30pIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KEV4cEAgJWRAICglYSlAIChlcHMpKUBdXCIgeS5pZCBNYXJrcy5wcF9tYXJrcyBtYXJrc1xuICAgIHwgVEV4cCAobWFya3MsIHgpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KEV4cEAgJWRAICglYSlAICVhKUBdXCIgeC5pZCBNYXJrcy5wcF9tYXJrcyBtYXJrcyBwcCB4XG5cbiAgYW5kIHByaW50X3N0YXRlX2xzdCBjaCBsIHkgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgW10gLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiKClcIlxuICAgIHwgZSA6OiByZW0gLT5cbiAgICAgIHByaW50X3N0YXRlX3JlYyBjaCBlIHk7XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biBlIC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQCB8IFwiO1xuICAgICAgICAgICBwcmludF9zdGF0ZV9yZWMgY2ggZSB5KVxuICAgICAgICByZW1cblxuICBsZXQgcHAgY2ggdCA9IHByaW50X3N0YXRlX2xzdCBjaCBbdF0geyBpZCA9IDA7IGRlZiA9IEVwcyB9XG5lbmRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBpZHg6IGlkeFxuICAgIDsgY2F0ZWdvcnk6IENhdGVnb3J5LnRcbiAgICA7IGRlc2M6IEUudCBsaXN0XG4gICAgOyBtdXRhYmxlIHN0YXR1czogc3RhdHVzIG9wdGlvblxuICAgIDsgaGFzaDogaGFzaCB9XG5cbiAgbGV0IGR1bW15ID1cbiAgICB7IGlkeCA9IC0xXG4gICAgOyBjYXRlZ29yeSA9IENhdGVnb3J5LmR1bW15XG4gICAgOyBkZXNjID0gW11cbiAgICA7IHN0YXR1cyA9IE5vbmVcbiAgICA7IGhhc2ggPSAtMSB9XG5cbiAgbGV0IGhhc2ggaWR4IGNhdCBkZXNjID1cbiAgICBFLmhhc2ggZGVzYyAoaGFzaF9jb21iaW5lIGlkeCAoaGFzaF9jb21iaW5lIChDYXRlZ29yeS50b19pbnQgY2F0KSAwKSkgbGFuZCAweDNGRkZGRkZGXG5cbiAgbGV0IG1rIGlkeCBjYXQgZGVzYyA9XG4gICAgeyBpZHhcbiAgICA7IGNhdGVnb3J5ID0gY2F0XG4gICAgOyBkZXNjXG4gICAgOyBzdGF0dXMgPSBOb25lXG4gICAgOyBoYXNoID0gaGFzaCBpZHggY2F0IGRlc2N9XG5cbiAgbGV0IGNyZWF0ZSBjYXQgZSA9IG1rIDAgY2F0IFtFLlRFeHAgKE1hcmtzLmVtcHR5LCBlKV1cblxuICBsZXQgZXF1YWwgeCB5ID1cbiAgICAoeC5oYXNoIDogaW50KSA9IHkuaGFzaCAmJiAoeC5pZHggOiBpbnQpID0geS5pZHggJiZcbiAgICBDYXRlZ29yeS5lcXVhbCB4LmNhdGVnb3J5IHkuY2F0ZWdvcnkgJiYgRS5lcXVhbCB4LmRlc2MgeS5kZXNjXG5cbiAgbGV0IGNvbXBhcmUgeCB5ID1cbiAgICBsZXQgYyA9IGNvbXBhcmUgKHguaGFzaCA6IGludCkgeS5oYXNoIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICBsZXQgYyA9IENhdGVnb3J5LmNvbXBhcmUgeC5jYXRlZ29yeSB5LmNhdGVnb3J5IGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgY29tcGFyZSB4LmRlc2MgeS5kZXNjXG5cbiAgdHlwZSB0JyA9IHRcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdCdcbiAgICAgIGxldCBlcXVhbCA9IGVxdWFsXG4gICAgICBsZXQgaGFzaCB0ID0gdC5oYXNoXG4gICAgZW5kKVxuZW5kXG5cbigqKioqIEZpbmQgYSBmcmVlIGluZGV4ICoqKiopXG5cbnR5cGUgd29ya2luZ19hcmVhID0gYm9vbCBhcnJheSByZWZcblxubGV0IGNyZWF0ZV93b3JraW5nX2FyZWEgKCkgPSByZWYgW3wgZmFsc2UgfF1cblxubGV0IGluZGV4X2NvdW50IHcgPSBBcnJheS5sZW5ndGggIXdcblxubGV0IHJlc2V0X3RhYmxlIGEgPSBBcnJheS5maWxsIGEgMCAoQXJyYXkubGVuZ3RoIGEpIGZhbHNlXG5cbmxldCByZWMgbWFya191c2VkX2luZGljZXMgdGJsID1cbiAgTGlzdC5pdGVyIChmdW5jdGlvblxuICAgICAgfCBFLlRTZXEgKGwsIF8sIF8pIC0+IG1hcmtfdXNlZF9pbmRpY2VzIHRibCBsXG4gICAgICB8IEUuVEV4cCAobWFya3MsIF8pXG4gICAgICB8IEUuVE1hdGNoIG1hcmtzIC0+XG4gICAgICAgIExpc3QuaXRlciAoZnVuIChfLCBpKSAtPiBpZiBpID49IDAgdGhlbiB0YmwuKGkpIDwtIHRydWUpXG4gICAgICAgICAgbWFya3MuTWFya3MubWFya3MpXG5cbmxldCByZWMgZmluZF9mcmVlIHRibCBpZHggbGVuID1cbiAgaWYgaWR4ID0gbGVuIHx8IG5vdCB0YmwuKGlkeCkgdGhlbiBpZHggZWxzZSBmaW5kX2ZyZWUgdGJsIChpZHggKyAxKSBsZW5cblxubGV0IGZyZWVfaW5kZXggdGJsX3JlZiBsID1cbiAgbGV0IHRibCA9ICF0YmxfcmVmIGluXG4gIHJlc2V0X3RhYmxlIHRibDtcbiAgbWFya191c2VkX2luZGljZXMgdGJsIGw7XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdGJsIGluXG4gIGxldCBpZHggPSBmaW5kX2ZyZWUgdGJsIDAgbGVuIGluXG4gIGlmIGlkeCA9IGxlbiB0aGVuIHRibF9yZWYgOj0gQXJyYXkubWFrZSAoMiAqIGxlbikgZmFsc2U7XG4gIGlkeFxuXG4oKioqKiBDb21wdXRhdGlvbiBvZiB0aGUgbmV4dCBzdGF0ZSAqKioqKVxuXG5sZXQgcmVtb3ZlX21hdGNoZXMgPSBMaXN0LmZpbHRlciAoZnVuY3Rpb24gRS5UTWF0Y2ggXyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcblxubGV0IHJlYyBzcGxpdF9hdF9tYXRjaF9yZWMgbCcgPSBmdW5jdGlvblxuICB8IFtdICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRS5UTWF0Y2ggXyA6OiByIC0+IChMaXN0LnJldiBsJywgcmVtb3ZlX21hdGNoZXMgcilcbiAgfCB4IDo6IHIgICAgICAgIC0+IHNwbGl0X2F0X21hdGNoX3JlYyAoeCA6OiBsJykgclxuXG5sZXQgc3BsaXRfYXRfbWF0Y2ggbCA9IHNwbGl0X2F0X21hdGNoX3JlYyBbXSBsXG5cbmxldCByZWMgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiBsIHkgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPlxuICAgIChbXSwgcHJldilcbiAgfCBFLlRNYXRjaCBfIGFzIHggOjogXyAtPiAoKiBUcnVuY2F0ZSBhZnRlciBmaXJzdCBtYXRjaCAqKVxuICAgIChbeF0sIHByZXYpXG4gIHwgRS5UU2VxIChsJywgeCwga2luZCkgOjogciAtPlxuICAgIGxldCAobCcnLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyBwcmV2IGwnIHggaW5cbiAgICBsZXQgKHInLCBwcmV2JycpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldicgciB5IGluXG4gICAgKEUudHNlcSBraW5kIGwnJyB4IHInLCBwcmV2JycpXG4gIHwgRS5URXhwIChfbWFya3MsIHtkZWYgPSBFcHM7IF99KSBhcyBlIDo6IHIgLT5cbiAgICBpZiBMaXN0Lm1lbXEgeS5pZCBwcmV2IHRoZW5cbiAgICAgIHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgciB5XG4gICAgZWxzZVxuICAgICAgbGV0IChyJywgcHJldicpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgKHkuaWQgOjogcHJldikgciB5IGluXG4gICAgICAoZSA6OiByJywgcHJldicpXG4gIHwgRS5URXhwIChfbWFya3MsIHgpIGFzIGUgOjogciAtPlxuICAgIGlmIExpc3QubWVtcSB4LmlkIHByZXYgdGhlblxuICAgICAgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiByIHlcbiAgICBlbHNlXG4gICAgICBsZXQgKHInLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyAoeC5pZCA6OiBwcmV2KSByIHkgaW5cbiAgICAgIChlIDo6IHInLCBwcmV2JylcblxubGV0IHJlYyBzZXRfaWR4IGlkeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBbXVxuICB8IEUuVE1hdGNoIG1hcmtzIDo6IHIgLT5cbiAgICBFLlRNYXRjaCAoTWFya3MubWFya3Nfc2V0X2lkeCBtYXJrcyBpZHgpIDo6IHNldF9pZHggaWR4IHJcbiAgfCBFLlRTZXEgKGwnLCB4LCBraW5kKSA6OiByIC0+XG4gICAgRS5UU2VxIChzZXRfaWR4IGlkeCBsJywgeCwga2luZCkgOjogc2V0X2lkeCBpZHggclxuICB8IEUuVEV4cCAobWFya3MsIHgpIDo6IHIgLT5cbiAgICBFLlRFeHAgKChNYXJrcy5tYXJrc19zZXRfaWR4IG1hcmtzIGlkeCksIHgpIDo6IHNldF9pZHggaWR4IHJcblxubGV0IGZpbHRlcl9tYXJrcyBiIGUgbWFya3MgPVxuICB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IExpc3QuZmlsdGVyIChmdW4gKGksIF8pIC0+IGkgPCBiIHx8IGkgPiBlKSBtYXJrcy5NYXJrcy5tYXJrcyB9XG5cbmxldCByZWMgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeCByZW0gPVxuICAoKkZvcm1hdC5lcHJpbnRmIFwiJWRALlwiIHguaWQ7KilcbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICAgIENzdCBzIC0+XG4gICAgaWYgQ3NldC5tZW0gYyBzIHRoZW4gRS50ZXhwIG1hcmtzIGVwc19leHByIDo6IHJlbSBlbHNlIHJlbVxuICB8IEFsdCBsIC0+XG4gICAgZGVsdGFfMiBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgbCByZW1cbiAgfCBTZXEgKGtpbmQsIHksIHopIC0+XG4gICAgbGV0IHknID0gZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeSBbXSBpblxuICAgIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5JyB6IHJlbVxuICB8IFJlcCAocmVwX2tpbmQsIGtpbmQsIHkpIC0+XG4gICAgbGV0IHknID0gZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeSBbXSBpblxuICAgIGxldCAoeScnLCBtYXJrcycpID1cbiAgICAgIG1hdGNoXG4gICAgICAgIGZpcnN0XG4gICAgICAgICAgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpIHknXG4gICAgICB3aXRoXG4gICAgICAgIE5vbmUgICAgICAgIC0+ICh5JywgbWFya3MpXG4gICAgICB8IFNvbWUgbWFya3MnIC0+IChyZW1vdmVfbWF0Y2hlcyB5JywgbWFya3MnKVxuICAgIGluXG4gICAgYmVnaW4gbWF0Y2ggcmVwX2tpbmQgd2l0aFxuICAgICAgICBgR3JlZWR5ICAgICAtPiBFLnRzZXEga2luZCB5JycgeCAoRS5UTWF0Y2ggbWFya3MnIDo6IHJlbSlcbiAgICAgIHwgYE5vbl9ncmVlZHkgLT4gRS5UTWF0Y2ggbWFya3MgOjogRS50c2VxIGtpbmQgeScnIHggcmVtXG4gICAgZW5kXG4gIHwgRXBzIC0+XG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgTWFyayBpIC0+XG4gICAgbGV0IG1hcmtzID0geyBtYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gKGksIC0xKSA6OiBMaXN0LnJlbW92ZV9hc3NxIGkgbWFya3MuTWFya3MubWFya3MgfSBpblxuICAgIEUuVE1hdGNoIG1hcmtzIDo6IHJlbVxuICB8IFBtYXJrIGkgLT5cbiAgICBsZXQgbWFya3MgPSB7IG1hcmtzIHdpdGggTWFya3MucG1hcmtzID0gUG1hcmsuU2V0LmFkZCBpIG1hcmtzLk1hcmtzLnBtYXJrcyB9IGluXG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgRXJhc2UgKGIsIGUpIC0+XG4gICAgRS5UTWF0Y2ggKGZpbHRlcl9tYXJrcyBiIGUgbWFya3MpIDo6IHJlbVxuICB8IEJlZm9yZSBjYXQnJyAtPlxuICAgIGlmIENhdGVnb3J5LmludGVyc2VjdCBuZXh0X2NhdCBjYXQnJyB0aGVuIEUuVE1hdGNoIG1hcmtzIDo6IHJlbSBlbHNlIHJlbVxuICB8IEFmdGVyIGNhdCcnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IHByZXZfY2F0IGNhdCcnIHRoZW4gRS5UTWF0Y2ggbWFya3MgOjogcmVtIGVsc2UgcmVtXG5cbmFuZCBkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT5cbiAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5XG4gICAgICAoZGVsdGFfMiBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgciByZW0pXG5cbmFuZCBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeSB6IHJlbSA9XG4gIG1hdGNoXG4gICAgZmlyc3QgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpIHlcbiAgd2l0aFxuICAgIE5vbmUgLT5cbiAgICBFLnRzZXEga2luZCB5IHogcmVtXG4gIHwgU29tZSBtYXJrcyAtPlxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgYExvbmdlc3QgLT5cbiAgICAgIEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6XG4gICAgICAgIChkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6IHJlbSlcbiAgICB8IGBTaG9ydGVzdCAtPlxuICAgICAgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgelxuICAgICAgICAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogcmVtKVxuICAgIHwgYEZpcnN0IC0+XG4gICAgICBsZXQgKHknLCB5JycpID0gc3BsaXRfYXRfbWF0Y2ggeSBpblxuICAgICAgRS50c2VxIGtpbmQgeScgelxuICAgICAgICAoZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeiAoRS50c2VxIGtpbmQgeScnIHogcmVtKSlcblxubGV0IHJlYyBkZWx0YV8zIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB4IHJlbSA9XG4gIG1hdGNoIHggd2l0aFxuICAgIEUuVFNlcSAoeSwgeiwga2luZCkgLT5cbiAgICBsZXQgeScgPSBkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHknIHogcmVtXG4gIHwgRS5URXhwIChtYXJrcywgZSkgLT5cbiAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBlIHJlbVxuICB8IEUuVE1hdGNoIF8gLT5cbiAgICB4IDo6IHJlbVxuXG5hbmQgZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+XG4gICAgZGVsdGFfMyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeVxuICAgICAgKGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHIgcmVtKVxuXG5sZXQgZGVsdGEgdGJsX3JlZiBuZXh0X2NhdCBjaGFyIHN0ID1cbiAgbGV0IHByZXZfY2F0ID0gc3QuU3RhdGUuY2F0ZWdvcnkgaW5cbiAgbGV0IChleHByJywgXykgPVxuICAgIHJlbW92ZV9kdXBsaWNhdGVzIFtdXG4gICAgICAoZGVsdGFfNCBjaGFyIH5uZXh0X2NhdCB+cHJldl9jYXQgc3QuU3RhdGUuZGVzYyBbXSlcbiAgICAgIGVwc19leHByIGluXG4gIGxldCBpZHggPSBmcmVlX2luZGV4IHRibF9yZWYgZXhwcicgaW5cbiAgbGV0IGV4cHInJyA9IHNldF9pZHggaWR4IGV4cHInIGluXG4gIFN0YXRlLm1rIGlkeCBuZXh0X2NhdCBleHByJydcblxuKCoqKiopXG5cbmxldCByZWMgcmVkX3RyID0gZnVuY3Rpb25cbiAgfCBbXSB8IFtfXSBhcyBsIC0+XG4gICAgbFxuICB8ICgoczEsIHN0MSkgYXMgdHIxKSA6OiAoKHMyLCBzdDIpIGFzIHRyMikgOjogcmVtIC0+XG4gICAgaWYgU3RhdGUuZXF1YWwgc3QxIHN0MiB0aGVuXG4gICAgICByZWRfdHIgKChDc2V0LnVuaW9uIHMxIHMyLCBzdDEpIDo6IHJlbSlcbiAgICBlbHNlXG4gICAgICB0cjEgOjogcmVkX3RyICh0cjIgOjogcmVtKVxuXG5sZXQgc2ltcGxfdHIgbCA9XG4gIExpc3Quc29ydFxuICAgIChmdW4gKHMxLCBfKSAoczIsIF8pIC0+IGNvbXBhcmUgczEgczIpXG4gICAgKHJlZF90ciAoTGlzdC5zb3J0IChmdW4gKF8sIHN0MSkgKF8sIHN0MikgLT4gU3RhdGUuY29tcGFyZSBzdDEgc3QyKSBsKSlcblxuKCoqKiopXG5cbmxldCBwcmVwZW5kX2Rlcml2ID0gTGlzdC5mb2xkX3JpZ2h0IChmdW4gKHMsIHgpIGwgLT4gQ3NldC5wcmVwZW5kIHMgeCBsKVxuXG5sZXQgcmVjIHJlc3RyaWN0IHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKHMnLCB4JykgOjogcmVtIC0+XG4gICAgbGV0IHMnJyA9IENzZXQuaW50ZXIgcyBzJyBpblxuICAgIGlmIENzZXQuaXNfZW1wdHkgcycnXG4gICAgdGhlbiByZXN0cmljdCBzIHJlbVxuICAgIGVsc2UgKHMnJywgeCcpIDo6IHJlc3RyaWN0IHMgcmVtXG5cbmxldCByZWMgcmVtb3ZlX21hcmtzIGIgZSByZW0gPVxuICBpZiBiID4gZSB0aGVuIHJlbSBlbHNlIHJlbW92ZV9tYXJrcyBiIChlIC0gMSkgKChlLCAtMikgOjogcmVtKVxuXG5sZXQgcmVjIHByZXBlbmRfbWFya3NfZXhwciBtID0gZnVuY3Rpb25cbiAgfCBFLlRTZXEgKGwsIGUnLCBzKSAtPiBFLlRTZXEgKHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSBsLCBlJywgcylcbiAgfCBFLlRFeHAgKG0nLCBlJykgICAtPiBFLlRFeHAgKE1hcmtzLm1lcmdlIG0gbScsIGUnKVxuICB8IEUuVE1hdGNoIG0nICAgICAgIC0+IEUuVE1hdGNoIChNYXJrcy5tZXJnZSBtIG0nKVxuXG5hbmQgcHJlcGVuZF9tYXJrc19leHByX2xzdCBtIGwgPVxuICBMaXN0Lm1hcCAocHJlcGVuZF9tYXJrc19leHByIG0pIGxcblxubGV0IHByZXBlbmRfbWFya3MgbSA9XG4gIExpc3QubWFwIChmdW4gKHMsIHgpIC0+IChzLCBwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0geCkpXG5cbmxldCByZWMgZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeCByZW0gPVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gIHwgQ3N0IHMgLT5cbiAgICBDc2V0LnByZXBlbmQgcyBbRS50ZXhwIG1hcmtzIGVwc19leHByXSByZW1cbiAgfCBBbHQgbCAtPlxuICAgIGRlcml2XzIgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGwgcmVtXG4gIHwgU2VxIChraW5kLCB5LCB6KSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeScgeiByZW1cbiAgfCBSZXAgKHJlcF9raW5kLCBraW5kLCB5KSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHopIHJlbSAtPlxuICAgICAgICAgbGV0ICh6JywgbWFya3MnKSA9XG4gICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgZmlyc3RcbiAgICAgICAgICAgICAgIChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKVxuICAgICAgICAgICAgICAgelxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgTm9uZSAgICAgICAgLT4gKHosIG1hcmtzKVxuICAgICAgICAgICB8IFNvbWUgbWFya3MnIC0+IChyZW1vdmVfbWF0Y2hlcyB6LCBtYXJrcycpXG4gICAgICAgICBpblxuICAgICAgICAgQ3NldC5wcmVwZW5kIHNcbiAgICAgICAgICAgKG1hdGNoIHJlcF9raW5kIHdpdGhcbiAgICAgICAgICAgICAgYEdyZWVkeSAgICAgLT4gRS50c2VxIGtpbmQgeicgeCBbRS5UTWF0Y2ggbWFya3MnXVxuICAgICAgICAgICAgfCBgTm9uX2dyZWVkeSAtPiBFLlRNYXRjaCBtYXJrcyA6OiBFLnRzZXEga2luZCB6JyB4IFtdKVxuICAgICAgICAgICByZW0pXG4gICAgICB5JyByZW1cbiAgfCBFcHMgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCBtYXJrc10gcmVtXG4gIHwgTWFyayBpIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2gge21hcmtzIHdpdGggTWFya3MubWFya3MgPSAoKGksIC0xKSA6OiBMaXN0LnJlbW92ZV9hc3NxIGkgbWFya3MuTWFya3MubWFya3MpfV0gcmVtXG4gIHwgUG1hcmsgXyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzXG4gICAgICBbRS5UTWF0Y2gge21hcmtzIHdpdGggTWFya3MubWFya3MgPSAocmVtb3ZlX21hcmtzIGIgZSAoZmlsdGVyX21hcmtzIGIgZSBtYXJrcykuTWFya3MubWFya3MpfV0gcmVtXG4gIHwgQmVmb3JlIGNhdCcgLT5cbiAgICBDc2V0LnByZXBlbmQgKExpc3QuYXNzcSBjYXQnIGNhdGVnb3JpZXMpIFtFLlRNYXRjaCBtYXJrc10gcmVtXG4gIHwgQWZ0ZXIgY2F0JyAtPlxuICAgIGlmIENhdGVnb3J5LmludGVyc2VjdCBjYXQgY2F0JyB0aGVuIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW0gZWxzZSByZW1cblxuYW5kIGRlcml2XzIgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPiBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB5XG4gICAgICAgICAgICAgICAgKGRlcml2XzIgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHIgcmVtKVxuXG5hbmQgZGVyaXZfc2VxIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBraW5kIHkgeiByZW0gPVxuICBpZlxuICAgIExpc3QuZXhpc3RzXG4gICAgICAoZnVuIChfcywgeGwpIC0+XG4gICAgICAgICBMaXN0LmV4aXN0cyAoZnVuY3Rpb24gRS5UTWF0Y2ggXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgeGwpXG4gICAgICB5XG4gIHRoZW5cbiAgICBsZXQgeicgPSBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIE1hcmtzLmVtcHR5IGNhdCB6IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChzLCB5KSByZW0gLT5cbiAgICAgICAgIG1hdGNoXG4gICAgICAgICAgIGZpcnN0IChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKVxuICAgICAgICAgICAgIHlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgICAgTm9uZSAtPlxuICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeSB6IFtdKSByZW1cbiAgICAgICAgIHwgU29tZSBtYXJrcyAtPlxuICAgICAgICAgICBsZXQgeicnID0gcHJlcGVuZF9tYXJrcyBtYXJrcyB6JyBpblxuICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgICBgTG9uZ2VzdCAtPlxuICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiBbXSkgKFxuICAgICAgICAgICAgICAgcHJlcGVuZF9kZXJpdiAocmVzdHJpY3QgcyB6JycpIHJlbSlcbiAgICAgICAgICAgfCBgU2hvcnRlc3QgLT5cbiAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgKFxuICAgICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IFtdKSByZW0pXG4gICAgICAgICAgIHwgYEZpcnN0IC0+XG4gICAgICAgICAgICAgbGV0ICh5JywgeScnKSA9IHNwbGl0X2F0X21hdGNoIHkgaW5cbiAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeScgeiBbXSkgKFxuICAgICAgICAgICAgICAgcHJlcGVuZF9kZXJpdiAocmVzdHJpY3QgcyB6JycpIChcbiAgICAgICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHknJyB6IFtdKSByZW0pKSlcbiAgICAgIHkgcmVtXG4gIGVsc2VcbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHhsKSByZW0gLT4gQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHhsIHogW10pIHJlbSkgeSByZW1cblxubGV0IHJlYyBkZXJpdl8zIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCB4IHJlbSA9XG4gIG1hdGNoIHggd2l0aFxuICAgIEUuVFNlcSAoeSwgeiwga2luZCkgLT5cbiAgICBsZXQgeScgPSBkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCB5IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgZGVyaXZfc2VxIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBraW5kIHknIHogcmVtXG4gIHwgRS5URXhwIChtYXJrcywgZSkgLT5cbiAgICBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCBlIHJlbVxuICB8IEUuVE1hdGNoIF8gLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFt4XSByZW1cblxuYW5kIGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPiBkZXJpdl8zIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCB5XG4gICAgICAgICAgICAgICAgKGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHIgcmVtKVxuXG5sZXQgZGVyaXYgdGJsX3JlZiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBzdCA9XG4gIGxldCBkZXIgPSBkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIHN0LlN0YXRlLmNhdGVnb3J5IHN0LlN0YXRlLmRlc2NcbiAgICAgIFsoYWxsX2NoYXJzLCBbXSldIGluXG4gIHNpbXBsX3RyIChcbiAgICBMaXN0LmZvbGRfcmlnaHQgKGZ1biAocywgZXhwcikgcmVtIC0+XG4gICAgICAgIGxldCAoZXhwcicsIF8pID0gcmVtb3ZlX2R1cGxpY2F0ZXMgW10gZXhwciBlcHNfZXhwciBpblxuKCpcbkZvcm1hdC5lcHJpbnRmIFwiQFs8Mz5AWyVhQF06ICVhIC8gJWFAXUAuXCIgQ3NldC5wcmludCBzIHByaW50X3N0YXRlIGV4cHIgcHJpbnRfc3RhdGUgZXhwcic7XG4qKVxuICAgICAgICBsZXQgaWR4ID0gZnJlZV9pbmRleCB0YmxfcmVmIGV4cHInIGluXG4gICAgICAgIGxldCBleHByJycgPSBzZXRfaWR4IGlkeCBleHByJyBpblxuICAgICAgICBMaXN0LmZvbGRfcmlnaHQgKGZ1biAoY2F0JywgcycpIHJlbSAtPlxuICAgICAgICAgICAgbGV0IHMnJyA9IENzZXQuaW50ZXIgcyBzJyBpblxuICAgICAgICAgICAgaWYgQ3NldC5pc19lbXB0eSBzJydcbiAgICAgICAgICAgIHRoZW4gcmVtXG4gICAgICAgICAgICBlbHNlIChzJycsIFN0YXRlLm1rIGlkeCBjYXQnIGV4cHInJykgOjogcmVtKVxuICAgICAgICAgIGNhdGVnb3JpZXMgcmVtKSBkZXIgW10pXG5cbigqKioqKVxuXG5sZXQgZmxhdHRlbl9tYXRjaCBtID1cbiAgbGV0IG1hID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBtYSAoaSwgXykgLT4gbWF4IG1hIGkpICgtMSkgbSBpblxuICBsZXQgcmVzID0gQXJyYXkubWFrZSAobWEgKyAxKSAoLTEpIGluXG4gIExpc3QuaXRlciAoZnVuIChpLCB2KSAtPiByZXMuKGkpIDwtIHYpIG07XG4gIHJlc1xuXG5sZXQgc3RhdHVzIHMgPVxuICBtYXRjaCBzLlN0YXRlLnN0YXR1cyB3aXRoXG4gICAgU29tZSBzdCAtPlxuICAgIHN0XG4gIHwgTm9uZSAtPlxuICAgIGxldCBzdCA9XG4gICAgICBtYXRjaCBzLlN0YXRlLmRlc2Mgd2l0aFxuICAgICAgICBbXSAgICAgICAgICAgICAgLT4gRmFpbGVkXG4gICAgICB8IEUuVE1hdGNoIG0gOjogXyAtPiBNYXRjaCAoZmxhdHRlbl9tYXRjaCBtLk1hcmtzLm1hcmtzLCBtLk1hcmtzLnBtYXJrcylcbiAgICAgIHwgXyAgICAgICAgICAgICAgIC0+IFJ1bm5pbmdcbiAgICBpblxuICAgIHMuU3RhdGUuc3RhdHVzIDwtIFNvbWUgc3Q7XG4gICAgc3RcbiIsIigqIEluIHJlYWxpdHksIHRoaXMgY2FuIHJlYWxseSBiZSByZXByZXNlbnRlZCBhcyBhIGJvb2wgYXJyYXkuXG5cbiAgIFRoZSByZXByZXNlbnRhdGlvbiBpcyBiZXN0IHRob3VnaHQgb2YgYXMgYSBsaXN0IG9mIGFsbCBjaGFycyBhbG9uZyB3aXRoIGFcbiAgIGZsYWc6XG5cbiAgIChhLCAwKSwgKGIsIDEpLCAoYywgMCksIChkLCAwKSwgLi4uXG5cbiAgIGNoYXJhY3RlcnMgYmVsb25naW5nIHRvIHRoZSBzYW1lIGNvbG9yIGFyZSByZXByZXNlbnRlZCBieSBzZXF1bmNlcyBvZlxuICAgY2hhcmFjdGVycyB3aXRoIHRoZSBmbGFnIHNldCB0byAwLlxuKilcblxudHlwZSB0ID0gQnl0ZXMudFxuXG5sZXQgbWFrZSAoKSA9IEJ5dGVzLm1ha2UgMjU3ICdcXDAwMCdcblxubGV0IGZsYXR0ZW4gY20gPVxuICBsZXQgYyA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IGNvbG9yX3JlcHIgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGxldCB2ID0gcmVmIDAgaW5cbiAgQnl0ZXMuc2V0IGMgMCAnXFwwMDAnO1xuICBCeXRlcy5zZXQgY29sb3JfcmVwciAwICdcXDAwMCc7XG4gIGZvciBpID0gMSB0byAyNTUgZG9cbiAgICBpZiBCeXRlcy5nZXQgY20gaSA8PiAnXFwwMDAnIHRoZW4gaW5jciB2O1xuICAgIEJ5dGVzLnNldCBjIGkgKENoYXIuY2hyICF2KTtcbiAgICBCeXRlcy5zZXQgY29sb3JfcmVwciAhdiAoQ2hhci5jaHIgaSlcbiAgZG9uZTtcbiAgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYywgQnl0ZXMuc3ViX3N0cmluZyBjb2xvcl9yZXByIDAgKCF2ICsgMSksICF2ICsgMSlcblxuKCogbWFyayBhbGwgdGhlIGVuZHBvaW50cyBvZiB0aGUgaW50ZXJ2YWxzIG9mIHRoZSBjaGFyIHNldCB3aXRoIHRoZSAxIGJ5dGUgKilcbmxldCBzcGxpdCBzIGNtID1cbiAgQ3NldC5pdGVyIHMgfmY6KGZ1biBpIGogLT5cbiAgICAgIEJ5dGVzLnNldCBjbSBpICdcXDAwMSc7XG4gICAgICBCeXRlcy5zZXQgY20gKGogKyAxKSAnXFwwMDEnO1xuICAgIClcbiIsIigqIFJlc3VsdCBvZiBhIHN1Y2Nlc3NmdWwgbWF0Y2guICopXG50eXBlIHQgPVxuICB7IHMgOiBzdHJpbmdcbiAgOyBtYXJrcyA6IEF1dG9tYXRhLm1hcmtfaW5mb3NcbiAgOyBwbWFya3MgOiBQbWFyay5TZXQudFxuICA7IGdwb3MgOiBpbnQgYXJyYXlcbiAgOyBnY291bnQgOiBpbnRcbiAgfVxuXG5sZXQgb2Zmc2V0IHQgaSA9XG4gIGlmIDIgKiBpICsgMSA+PSBBcnJheS5sZW5ndGggdC5tYXJrcyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gIGlmIG0xID0gLTEgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgKHAxLCBwMilcblxubGV0IGdldCB0IGkgPVxuICBsZXQgKHAxLCBwMikgPSBvZmZzZXQgdCBpIGluXG4gIFN0cmluZy5zdWIgdC5zIHAxIChwMiAtIHAxKVxuXG5sZXQgc3RhcnQgc3VicyBpID0gZnN0IChvZmZzZXQgc3VicyBpKVxuXG5sZXQgc3RvcCBzdWJzIGkgPSBzbmQgKG9mZnNldCBzdWJzIGkpXG5cbmxldCB0ZXN0IHQgaSA9XG4gIGlmIDIgKiBpID49IEFycmF5Lmxlbmd0aCB0Lm1hcmtzIHRoZW5cbiAgICBmYWxzZVxuICBlbHNlXG4gICAgbGV0IGlkeCA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlkeCA8PiAtMVxuXG5sZXQgZ2V0X29wdCB0IGkgPVxuICBpZiB0ZXN0IHQgaVxuICB0aGVuIFNvbWUgKGdldCB0IGkpXG4gIGVsc2UgTm9uZVxuXG5sZXQgZHVtbXlfb2Zmc2V0ID0gKC0xLCAtMSlcblxubGV0IGFsbF9vZmZzZXQgdCA9XG4gIGxldCByZXMgPSBBcnJheS5tYWtlIHQuZ2NvdW50IGR1bW15X29mZnNldCBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQubWFya3MgLyAyIC0gMSBkb1xuICAgIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlmIG0xIDw+IC0xIHRoZW4gYmVnaW5cbiAgICAgIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gICAgICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gICAgICByZXMuKGkpIDwtIChwMSwgcDIpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgZHVtbXlfc3RyaW5nID0gXCJcIlxuXG5sZXQgYWxsIHQgPVxuICBsZXQgcmVzID0gQXJyYXkubWFrZSB0Lmdjb3VudCBkdW1teV9zdHJpbmcgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0Lm1hcmtzIC8gMiAtIDEgZG9cbiAgICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgICBpZiBtMSA8PiAtMSB0aGVuIGJlZ2luXG4gICAgICBsZXQgcDEgPSB0Lmdwb3MuKG0xKSBpblxuICAgICAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAgICAgcmVzLihpKSA8LSBTdHJpbmcuc3ViIHQucyBwMSAocDIgLSBwMSlcbiAgICBlbmRcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBwcCBmbXQgdCA9XG4gIGxldCBtYXRjaGVzID1cbiAgICBsZXQgb2Zmc2V0cyA9IGFsbF9vZmZzZXQgdCBpblxuICAgIGxldCBzdHJzID0gYWxsIHQgaW5cbiAgICBBcnJheS50b19saXN0IChcbiAgICAgIEFycmF5LmluaXQgKEFycmF5Lmxlbmd0aCBzdHJzKSAoZnVuIGkgLT4gc3Rycy4oaSksIG9mZnNldHMuKGkpKVxuICAgICkgaW5cbiAgbGV0IG9wZW4gRm10IGluXG4gIGxldCBwcF9tYXRjaCBmbXQgKHN0ciwgKHN0YXJ0LCBzdG9wKSkgPVxuICAgIGZwcmludGYgZm10IFwiQFsoJXMgKCVkICVkKSlAXVwiIHN0ciBzdGFydCBzdG9wIGluXG4gIHNleHAgZm10IFwiR3JvdXBcIiAobGlzdCBwcF9tYXRjaCkgbWF0Y2hlc1xuXG5sZXQgbmJfZ3JvdXBzIHQgPSB0Lmdjb3VudFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubGV0IHJlYyBpdGVyIG4gZiB2ID0gaWYgbiA9IDAgdGhlbiB2IGVsc2UgaXRlciAobiAtIDEpIGYgKGYgdilcblxuKCoqKiopXG5cbmxldCB1bmtub3duID0gLTJcbmxldCBicmVhayA9IC0zXG5cbnR5cGUgbWF0Y2hfaW5mbyA9XG4gIHwgTWF0Y2ggb2YgR3JvdXAudFxuICB8IEZhaWxlZFxuICB8IFJ1bm5pbmcgb2YgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIDogaW50IH1cblxudHlwZSBzdGF0ZSA9XG4gIHsgaWR4IDogaW50O1xuICAgICgqIEluZGV4IG9mIHRoZSBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBwb3NpdGlvbiB0YWJsZS5cbiAgICAgICBOb3QgeWV0IGNvbXB1dGVkIHRyYW5zaXRpb25zIHBvaW50IHRvIGEgZHVtbXkgc3RhdGUgd2hlcmVcbiAgICAgICBbaWR4XSBpcyBzZXQgdG8gW3Vua25vd25dO1xuICAgICAgIElmIFtpZHhdIGlzIHNldCB0byBbYnJlYWtdIGZvciBzdGF0ZXMgdGhhdCBlaXRoZXIgYWx3YXlzXG4gICAgICAgc3VjY2VlZCBvciBhbHdheXMgZmFpbC4gKilcbiAgICByZWFsX2lkeCA6IGludDtcbiAgICAoKiBUaGUgcmVhbCBpbmRleCwgaW4gY2FzZSBbaWR4XSBpcyBzZXQgdG8gW2JyZWFrXSAqKVxuICAgIG5leHQgOiBzdGF0ZSBhcnJheTtcbiAgICAoKiBUcmFuc2l0aW9uIHRhYmxlLCBpbmRleGVkIGJ5IGNvbG9yICopXG4gICAgbXV0YWJsZSBmaW5hbCA6XG4gICAgICAoQ2F0ZWdvcnkudCAqXG4gICAgICAgKEF1dG9tYXRhLmlkeCAqIEF1dG9tYXRhLnN0YXR1cykpIGxpc3Q7XG4gICAgKCogTWFwcGluZyBmcm9tIHRoZSBjYXRlZ29yeSBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG9cbiAgICAgICAtIHRoZSBpbmRleCB3aGVyZSB0aGUgbmV4dCBwb3NpdGlvbiBzaG91bGQgYmUgc2F2ZWRcbiAgICAgICAtIHBvc3NpYmx5LCB0aGUgbGlzdCBvZiBtYXJrcyAoYW5kIHRoZSBjb3JyZXNwb25kaW5nIGluZGljZXMpXG4gICAgICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBiZXN0IG1hdGNoICopXG4gICAgZGVzYyA6IEF1dG9tYXRhLlN0YXRlLnRcbiAgICAoKiBEZXNjcmlwdGlvbiBvZiB0aGlzIHN0YXRlIG9mIHRoZSBhdXRvbWF0YSAqKSB9XG5cbigqIEF1dG9tYXRhIChjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb24pICopXG50eXBlIHJlID1cbiAgeyBpbml0aWFsIDogQXV0b21hdGEuZXhwcjtcbiAgICAoKiBUaGUgd2hvbGUgcmVndWxhciBleHByZXNzaW9uICopXG4gICAgbXV0YWJsZSBpbml0aWFsX3N0YXRlcyA6IChDYXRlZ29yeS50ICogc3RhdGUpIGxpc3Q7XG4gICAgKCogSW5pdGlhbCBzdGF0ZXMsIGluZGV4ZWQgYnkgaW5pdGlhbCBjYXRlZ29yeSAqKVxuICAgIGNvbG9ycyA6IHN0cmluZztcbiAgICAoKiBDb2xvciB0YWJsZSAqKVxuICAgIGNvbG9yX3JlcHIgOiBzdHJpbmc7XG4gICAgKCogVGFibGUgZnJvbSBjb2xvcnMgdG8gb25lIGNoYXJhY3RlciBvZiB0aGlzIGNvbG9yICopXG4gICAgbmNvbG9yIDogaW50O1xuICAgICgqIE51bWJlciBvZiBjb2xvcnMuICopXG4gICAgbG5sIDogaW50O1xuICAgICgqIENvbG9yIG9mIHRoZSBsYXN0IG5ld2xpbmUuIC0xIGlmIHVubmVjZXNzYXJ5ICopXG4gICAgdGJsIDogQXV0b21hdGEud29ya2luZ19hcmVhO1xuICAgICgqIFRlbXBvcmFyeSB0YWJsZSB1c2VkIHRvIGNvbXB1dGUgdGhlIGZpcnN0IGF2YWlsYWJsZSBpbmRleFxuICAgICAgIHdoZW4gY29tcHV0aW5nIGEgbmV3IHN0YXRlICopXG4gICAgc3RhdGVzIDogc3RhdGUgQXV0b21hdGEuU3RhdGUuVGFibGUudDtcbiAgICAoKiBTdGF0ZXMgb2YgdGhlIGRldGVybWluaXN0aWMgYXV0b21hdGEgKilcbiAgICBncm91cF9uYW1lcyA6IChzdHJpbmcgKiBpbnQpIGxpc3Q7XG4gICAgKCogTmFtZWQgZ3JvdXBzIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gKilcbiAgICBncm91cF9jb3VudCA6IGludFxuICAgICgqIE51bWJlciBvZiBncm91cHMgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKSB9XG5cbmxldCBwcF9yZSBjaCByZSA9IEF1dG9tYXRhLnBwIGNoIHJlLmluaXRpYWxcblxubGV0IHByaW50X3JlID0gcHBfcmVcblxubGV0IGdyb3VwX2NvdW50IHJlID0gcmUuZ3JvdXBfY291bnRcblxubGV0IGdyb3VwX25hbWVzIHJlID0gcmUuZ3JvdXBfbmFtZXNcblxuKCogSW5mb3JtYXRpb24gdXNlZCBkdXJpbmcgbWF0Y2hpbmcgKilcbnR5cGUgaW5mbyA9XG4gIHsgcmUgOiByZTtcbiAgICAoKiBUaGUgYXV0b21hdGEgKilcbiAgICBjb2xvcnMgOiBzdHJpbmc7XG4gICAgKCogQ29sb3IgdGFibGUgKFt4LmNvbG9ycyA9IHgucmUuY29sb3JzXSlcbiAgICAgICBTaG9ydGN1dCB1c2VkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zICopXG4gICAgbXV0YWJsZSBwb3NpdGlvbnMgOiBpbnQgYXJyYXk7XG4gICAgKCogQXJyYXkgb2YgbWFyayBwb3NpdGlvbnNcbiAgICAgICBUaGUgbWFyayBhcmUgb2ZmIGJ5IG9uZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyAqKVxuICAgIHBvcyA6IGludDtcbiAgICAoKiBQb3NpdGlvbiB3aGVyZSB0aGUgbWF0Y2ggaXMgc3RhcnRlZCAqKVxuICAgIGxhc3QgOiBpbnRcbiAgICAoKiBQb3NpdGlvbiB3aGVyZSB0aGUgbWF0Y2ggc2hvdWxkIHN0b3AgKikgfVxuXG5cbigqKioqKVxuXG5sZXQgY2F0ZWdvcnkgcmUgfmNvbG9yID1cbiAgaWYgY29sb3IgPSAtMSB0aGVuXG4gICAgQ2F0ZWdvcnkuaW5leGlzdGFudFxuICAgICgqIFNwZWNpYWwgY2F0ZWdvcnkgZm9yIHRoZSBsYXN0IG5ld2xpbmUgKilcbiAgZWxzZSBpZiBjb2xvciA9IHJlLmxubCB0aGVuXG4gICAgQ2F0ZWdvcnkuKGxhc3RuZXdsaW5lICsrIG5ld2xpbmUgKysgbm90X2xldHRlcilcbiAgZWxzZVxuICAgIENhdGVnb3J5LmZyb21fY2hhciAocmUuY29sb3JfcmVwci5bY29sb3JdKVxuXG4oKioqKilcblxubGV0IGR1bW15X25leHQgPSBbfHxdXG5cbmxldCB1bmtub3duX3N0YXRlID1cbiAgeyBpZHggPSB1bmtub3duOyByZWFsX2lkeCA9IDA7XG4gICAgbmV4dCA9IGR1bW15X25leHQ7IGZpbmFsID0gW107XG4gICAgZGVzYyA9IEF1dG9tYXRhLlN0YXRlLmR1bW15IH1cblxubGV0IG1rX3N0YXRlIG5jb2wgZGVzYyA9XG4gIGxldCBicmVha19zdGF0ZSA9XG4gICAgbWF0Y2ggQXV0b21hdGEuc3RhdHVzIGRlc2Mgd2l0aFxuICAgIHwgQXV0b21hdGEuUnVubmluZyAtPiBmYWxzZVxuICAgIHwgQXV0b21hdGEuRmFpbGVkXG4gICAgfCBBdXRvbWF0YS5NYXRjaCBfIC0+IHRydWVcbiAgaW5cbiAgeyBpZHggPSBpZiBicmVha19zdGF0ZSB0aGVuIGJyZWFrIGVsc2UgZGVzYy5BdXRvbWF0YS5TdGF0ZS5pZHg7XG4gICAgcmVhbF9pZHggPSBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeDtcbiAgICBuZXh0ID0gaWYgYnJlYWtfc3RhdGUgdGhlbiBkdW1teV9uZXh0IGVsc2UgQXJyYXkubWFrZSBuY29sIHVua25vd25fc3RhdGU7XG4gICAgZmluYWwgPSBbXTtcbiAgICBkZXNjIH1cblxubGV0IGZpbmRfc3RhdGUgcmUgZGVzYyA9XG4gIHRyeVxuICAgIEF1dG9tYXRhLlN0YXRlLlRhYmxlLmZpbmQgcmUuc3RhdGVzIGRlc2NcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QgPSBta19zdGF0ZSByZS5uY29sb3IgZGVzYyBpblxuICAgIEF1dG9tYXRhLlN0YXRlLlRhYmxlLmFkZCByZS5zdGF0ZXMgZGVzYyBzdDtcbiAgICBzdFxuXG4oKioqKiBNYXRjaCB3aXRoIG1hcmtzICoqKiopXG5cbmxldCBkZWx0YSBpbmZvIGNhdCB+Y29sb3Igc3QgPVxuICBsZXQgZGVzYyA9IEF1dG9tYXRhLmRlbHRhIGluZm8ucmUudGJsIGNhdCBjb2xvciBzdC5kZXNjIGluXG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaW5mby5wb3NpdGlvbnMgaW5cbiAgaWYgZGVzYy5BdXRvbWF0YS5TdGF0ZS5pZHggPSBsZW4gJiYgbGVuID4gMCB0aGVuIGJlZ2luXG4gICAgbGV0IHBvcyA9IGluZm8ucG9zaXRpb25zIGluXG4gICAgaW5mby5wb3NpdGlvbnMgPC0gQXJyYXkubWFrZSAoMiAqIGxlbikgMDtcbiAgICBBcnJheS5ibGl0IHBvcyAwIGluZm8ucG9zaXRpb25zIDAgbGVuXG4gIGVuZDtcbiAgZGVzY1xuXG5sZXQgdmFsaWRhdGUgaW5mbyAoczpzdHJpbmcpIH5wb3Mgc3QgPVxuICBsZXQgY29sb3IgPSBDaGFyLmNvZGUgKGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gIGxldCBjYXQgPSBjYXRlZ29yeSBpbmZvLnJlIH5jb2xvciBpblxuICBsZXQgZGVzYycgPSBkZWx0YSBpbmZvIGNhdCB+Y29sb3Igc3QgaW5cbiAgbGV0IHN0JyA9IGZpbmRfc3RhdGUgaW5mby5yZSBkZXNjJyBpblxuICBzdC5uZXh0Lihjb2xvcikgPC0gc3QnXG5cbmxldCByZWMgbG9vcCBpbmZvIHMgfnBvcyBzdCA9XG4gIGlmIHBvcyA8IGluZm8ubGFzdCB0aGVuXG4gICAgbGV0IHN0JyA9IHN0Lm5leHQuKENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICAgIGxldCBpZHggPSBzdCcuaWR4IGluXG4gICAgaWYgaWR4ID49IDAgdGhlbiBiZWdpblxuICAgICAgaW5mby5wb3NpdGlvbnMuKGlkeCkgPC0gcG9zO1xuICAgICAgbG9vcCBpbmZvIHMgfnBvczoocG9zICsgMSkgc3QnXG4gICAgZW5kIGVsc2UgaWYgaWR4ID0gYnJlYWsgdGhlbiBiZWdpblxuICAgICAgaW5mby5wb3NpdGlvbnMuKHN0Jy5yZWFsX2lkeCkgPC0gcG9zO1xuICAgICAgc3QnXG4gICAgZW5kIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgICAgdmFsaWRhdGUgaW5mbyBzIH5wb3Mgc3Q7XG4gICAgICBsb29wIGluZm8gcyB+cG9zIHN0XG4gICAgZW5kXG4gIGVsc2VcbiAgICBzdFxuXG5sZXQgcmVjIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvcyB+bGFzdCBzdCA9XG4gIGlmIHBvcyA8IGxhc3QgdGhlblxuICAgIGxldCBzdCcgPSBzdC5uZXh0LihDaGFyLmNvZGUgaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgICBpZiBzdCcuaWR4ID49IDAgdGhlblxuICAgICAgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zOihwb3MgKyAxKSB+bGFzdCBzdCdcbiAgICBlbHNlIGlmIHN0Jy5pZHggPSBicmVhayB0aGVuXG4gICAgICBzdCdcbiAgICBlbHNlIGJlZ2luICgqIFVua25vd24gKilcbiAgICAgIHZhbGlkYXRlIGluZm8gcyB+cG9zIHN0O1xuICAgICAgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IHN0XG4gICAgZW5kXG4gIGVsc2VcbiAgICBzdFxuXG5sZXQgZmluYWwgaW5mbyBzdCBjYXQgPVxuICB0cnlcbiAgICBMaXN0LmFzc3EgY2F0IHN0LmZpbmFsXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0JyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvcjooLTEpIHN0IGluXG4gICAgbGV0IHJlcyA9IChzdCcuQXV0b21hdGEuU3RhdGUuaWR4LCBBdXRvbWF0YS5zdGF0dXMgc3QnKSBpblxuICAgIHN0LmZpbmFsIDwtIChjYXQsIHJlcykgOjogc3QuZmluYWw7XG4gICAgcmVzXG5cbmxldCBmaW5kX2luaXRpYWxfc3RhdGUgcmUgY2F0ID1cbiAgdHJ5XG4gICAgTGlzdC5hc3NxIGNhdCByZS5pbml0aWFsX3N0YXRlc1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCA9IGZpbmRfc3RhdGUgcmUgKEF1dG9tYXRhLlN0YXRlLmNyZWF0ZSBjYXQgcmUuaW5pdGlhbCkgaW5cbiAgICByZS5pbml0aWFsX3N0YXRlcyA8LSAoY2F0LCBzdCkgOjogcmUuaW5pdGlhbF9zdGF0ZXM7XG4gICAgc3RcblxubGV0IGdldF9jb2xvciByZSAoczpzdHJpbmcpIHBvcyA9XG4gIGlmIHBvcyA8IDAgdGhlblxuICAgIC0xXG4gIGVsc2VcbiAgICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGlmIHBvcyA+PSBzbGVuIHRoZW5cbiAgICAgIC0xXG4gICAgZWxzZSBpZiBwb3MgPSBzbGVuIC0gMSAmJiByZS5sbmwgPD4gLTEgJiYgcy5bcG9zXSA9ICdcXG4nIHRoZW5cbiAgICAgICgqIFNwZWNpYWwgY2FzZSBmb3IgdGhlIGxhc3QgbmV3bGluZSAqKVxuICAgICAgcmUubG5sXG4gICAgZWxzZVxuICAgICAgQ2hhci5jb2RlIHJlLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dXG5cbmxldCByZWMgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3Mgc3Qgfmdyb3VwcyA9XG4gIGxldCBzdCcgPSBzdC5uZXh0LihpbmZvLnJlLmxubCkgaW5cbiAgaWYgc3QnLmlkeCA+PSAwIHRoZW4gYmVnaW5cbiAgICBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oc3QnLmlkeCkgPC0gcG9zO1xuICAgIHN0J1xuICBlbmQgZWxzZSBpZiBzdCcuaWR4ID0gYnJlYWsgdGhlbiBiZWdpblxuICAgIGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLihzdCcucmVhbF9pZHgpIDwtIHBvcztcbiAgICBzdCdcbiAgZW5kIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgIGxldCBjb2xvciA9IGluZm8ucmUubG5sIGluXG4gICAgbGV0IHJlYWxfYyA9IENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlICdcXG4nXSBpblxuICAgIGxldCBjYXQgPSBjYXRlZ29yeSBpbmZvLnJlIH5jb2xvciBpblxuICAgIGxldCBkZXNjJyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvcjpyZWFsX2Mgc3QgaW5cbiAgICBsZXQgc3QnID0gZmluZF9zdGF0ZSBpbmZvLnJlIGRlc2MnIGluXG4gICAgc3QubmV4dC4oY29sb3IpIDwtIHN0JztcbiAgICBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvcyBzdCB+Z3JvdXBzXG4gIGVuZFxuXG5sZXQgcmVjIHNjYW5fc3RyIGluZm8gKHM6c3RyaW5nKSBpbml0aWFsX3N0YXRlIH5ncm91cHMgPVxuICBsZXQgcG9zID0gaW5mby5wb3MgaW5cbiAgbGV0IGxhc3QgPSBpbmZvLmxhc3QgaW5cbiAgaWYgKGxhc3QgPSBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICYmIGluZm8ucmUubG5sIDw+IC0xXG4gICAgICAmJiBsYXN0ID4gcG9zXG4gICAgICAmJiBTdHJpbmcuZ2V0IHMgKGxhc3QgLSAxKSA9ICdcXG4nKVxuICB0aGVuIGJlZ2luXG4gICAgbGV0IGluZm8gPSB7IGluZm8gd2l0aCBsYXN0ID0gbGFzdCAtIDEgfSBpblxuICAgIGxldCBzdCA9IHNjYW5fc3RyIGluZm8gcyBpbml0aWFsX3N0YXRlIH5ncm91cHMgaW5cbiAgICBpZiBzdC5pZHggPSBicmVhayB0aGVuXG4gICAgICBzdFxuICAgIGVsc2VcbiAgICAgIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zOihsYXN0IC0gMSkgc3Qgfmdyb3Vwc1xuICBlbmQgZWxzZSBpZiBncm91cHMgdGhlblxuICAgIGxvb3AgaW5mbyBzIH5wb3MgaW5pdGlhbF9zdGF0ZVxuICBlbHNlXG4gICAgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IGluaXRpYWxfc3RhdGVcblxuKCogVGhpcyBmdW5jdGlvbiBhZGRzIGEgZmluYWwgYm91bmRhcnkgY2hlY2sgb24gdGhlIGlucHV0LlxuICAgVGhpcyBpcyB1c2VmdWwgdG8gaW5kaWNhdGUgdGhhdCB0aGUgb3V0cHV0IGZhaWxlZCBiZWNhdXNlXG4gICBvZiBpbnN1ZmZpY2llbnQgaW5wdXQsIG9yIHRvIHZlcmlmeSB0aGF0IHRoZSBvdXRwdXQgYWN0dWFsbHlcbiAgIG1hdGNoZXMgZm9yIHJlZ2V4IHRoYXQgaGF2ZSBib3VuZGFyeSBjb25kaXRpb25zIHdpdGggcmVzcGVjdFxuICAgdG8gdGhlIGlucHV0IHN0cmluZy5cbiAqKVxubGV0IGZpbmFsX2JvdW5kYXJ5X2NoZWNrIH5sYXN0IH5zbGVuIHJlIHMgfmluZm8gfnN0IH5ncm91cHMgPVxuICBsZXQgZmluYWxfY2F0ID1cbiAgICBpZiBsYXN0ID0gc2xlbiB0aGVuXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGluZXhpc3RhbnQpXG4gICAgZWxzZVxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBjYXRlZ29yeSByZSB+Y29sb3I6KGdldF9jb2xvciByZSBzIGxhc3QpKVxuICBpblxuICBsZXQgKGlkeCwgcmVzKSA9IGZpbmFsIGluZm8gc3QgZmluYWxfY2F0IGluXG4gIChtYXRjaCBncm91cHMsIHJlcyB3aXRoXG4gIHwgdHJ1ZSwgTWF0Y2ggXyAtPiBpbmZvLnBvc2l0aW9ucy4oaWR4KSA8LSBsYXN0XG4gIHwgXyAtPiAoKSk7XG4gIHJlc1xuXG5sZXQgbWF0Y2hfc3RyIH5ncm91cHMgfnBhcnRpYWwgcmUgcyB+cG9zIH5sZW4gPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbGFzdCA9IGlmIGxlbiA9IC0xIHRoZW4gc2xlbiBlbHNlIHBvcyArIGxlbiBpblxuICBsZXQgaW5mbyA9XG4gICAgeyByZSA7IGNvbG9ycyA9IHJlLmNvbG9yczsgcG9zIDsgbGFzdFxuICAgIDsgcG9zaXRpb25zID1cbiAgICAgICAgaWYgZ3JvdXBzIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgbiA9IEF1dG9tYXRhLmluZGV4X2NvdW50IHJlLnRibCArIDEgaW5cbiAgICAgICAgICBpZiBuIDw9IDEwIHRoZW5cbiAgICAgICAgICAgIFt8MDswOzA7MDswOzA7MDswOzA7MHxdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQXJyYXkubWFrZSBuIDBcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICBbfHxdIH1cbiAgaW5cbiAgbGV0IGluaXRpYWxfY2F0ID1cbiAgICBpZiBwb3MgPSAwIHRoZW5cbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgaW5leGlzdGFudClcbiAgICBlbHNlXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5XG4gICAgICAgICAgICAgICAgKysgY2F0ZWdvcnkgcmUgfmNvbG9yOihnZXRfY29sb3IgcmUgcyAocG9zIC0gMSkpKVxuICBpblxuICBsZXQgaW5pdGlhbF9zdGF0ZSA9IGZpbmRfaW5pdGlhbF9zdGF0ZSByZSBpbml0aWFsX2NhdCBpblxuICBsZXQgc3QgPSBzY2FuX3N0ciBpbmZvIHMgaW5pdGlhbF9zdGF0ZSB+Z3JvdXBzIGluXG4gIGxldCByZXMgPVxuICAgIGlmIHN0LmlkeCA9IGJyZWFrIHx8IChwYXJ0aWFsICYmIG5vdCBncm91cHMpIHRoZW5cbiAgICAgIEF1dG9tYXRhLnN0YXR1cyBzdC5kZXNjXG4gICAgZWxzZSBpZiBwYXJ0aWFsICYmIGdyb3VwcyB0aGVuXG4gICAgICBtYXRjaCBBdXRvbWF0YS5zdGF0dXMgc3QuZGVzYyB3aXRoXG4gICAgICB8IE1hdGNoIF8gfCBGYWlsZWQgYXMgc3RhdHVzIC0+IHN0YXR1c1xuICAgICAgfCBSdW5uaW5nIC0+XG4gICAgICAgICgqIFRoaXMgY291bGQgYmUgYmVjYXVzZSBpdCdzIHN0aWxsIG5vdCBmdWxseSBtYXRjaGVkLCBvciBpdFxuICAgICAgICAgICBjb3VsZCBiZSB0aGF0IGJlY2F1c2Ugd2UgbmVlZCB0byBydW4gc3BlY2lhbCBlbmQgb2YgaW5wdXRcbiAgICAgICAgICAgY2hlY2tzLiAqKVxuICAgICAgICAobWF0Y2ggZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3VwcyB3aXRoXG4gICAgICAgICB8IE1hdGNoIF8gYXMgc3RhdHVzIC0+IHN0YXR1c1xuICAgICAgICAgfCBGYWlsZWQgfCBSdW5uaW5nIC0+XG4gICAgICAgICAgICgqIEEgZmFpbHVyZSBoZXJlIGp1c3QgbWVhbnMgdGhhdCB3ZSBuZWVkIG1vcmUgZGF0YSwgaS5lLlxuICAgICAgICAgICAgICBpdCdzIGEgcGFydGlhbCBtYXRjaC4gKilcbiAgICAgICAgICAgUnVubmluZylcbiAgICBlbHNlIGZpbmFsX2JvdW5kYXJ5X2NoZWNrIH5sYXN0IH5zbGVuIHJlIHMgfmluZm8gfnN0IH5ncm91cHNcbiAgaW5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgICBBdXRvbWF0YS5NYXRjaCAobWFya3MsIHBtYXJrcykgLT5cbiAgICBNYXRjaCB7IHMgOyBtYXJrczsgcG1hcmtzIDsgZ3BvcyA9IGluZm8ucG9zaXRpb25zOyBnY291bnQgPSByZS5ncm91cF9jb3VudH1cbiAgfCBBdXRvbWF0YS5GYWlsZWQgLT4gRmFpbGVkXG4gIHwgQXV0b21hdGEuUnVubmluZyAtPlxuICAgIGxldCBub19tYXRjaF9zdGFydHNfYmVmb3JlID0gaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKDApIGVsc2UgMCBpblxuICAgIFJ1bm5pbmcgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIH1cblxubGV0IG1rX3JlIH5pbml0aWFsIH5jb2xvcnMgfmNvbG9yX3JlcHIgfm5jb2xvciB+bG5sIH5ncm91cF9uYW1lcyB+Z3JvdXBfY291bnQgPVxuICB7IGluaXRpYWwgO1xuICAgIGluaXRpYWxfc3RhdGVzID0gW107XG4gICAgY29sb3JzO1xuICAgIGNvbG9yX3JlcHI7XG4gICAgbmNvbG9yO1xuICAgIGxubDtcbiAgICB0YmwgPSBBdXRvbWF0YS5jcmVhdGVfd29ya2luZ19hcmVhICgpO1xuICAgIHN0YXRlcyA9IEF1dG9tYXRhLlN0YXRlLlRhYmxlLmNyZWF0ZSA5NztcbiAgICBncm91cF9uYW1lcztcbiAgICBncm91cF9jb3VudCB9XG5cbigqKioqIENoYXJhY3RlciBzZXRzICoqKiopXG5cbmxldCBjc2VxIGMgYycgPSBDc2V0LnNlcSAoQ2hhci5jb2RlIGMpIChDaGFyLmNvZGUgYycpXG5sZXQgY2FkZCBjIHMgPSBDc2V0LmFkZCAoQ2hhci5jb2RlIGMpIHNcblxubGV0IHRyYW5zX3NldCBjYWNoZSBjbSBzID1cbiAgbWF0Y2ggQ3NldC5vbmVfY2hhciBzIHdpdGhcbiAgfCBTb21lIGkgLT4gQ3NldC5jc2luZ2xlIGNtLltpXVxuICB8IE5vbmUgLT5cbiAgICBsZXQgdiA9IChDc2V0Lmhhc2hfcmVjIHMsIHMpIGluXG4gICAgdHJ5XG4gICAgICBDc2V0LkNTZXRNYXAuZmluZCB2ICFjYWNoZVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBsZXQgbCA9XG4gICAgICAgIENzZXQuZm9sZF9yaWdodFxuICAgICAgICAgIHNcbiAgICAgICAgICB+ZjooZnVuIChpLCBqKSBsIC0+IENzZXQudW5pb24gKGNzZXEgY20uW2ldIGNtLltqXSkgbClcbiAgICAgICAgICB+aW5pdDpDc2V0LmVtcHR5XG4gICAgICBpblxuICAgICAgY2FjaGUgOj0gQ3NldC5DU2V0TWFwLmFkZCB2IGwgIWNhY2hlO1xuICAgICAgbFxuXG4oKioqKilcblxudHlwZSByZWdleHAgPVxuICAgIFNldCBvZiBDc2V0LnRcbiAgfCBTZXF1ZW5jZSBvZiByZWdleHAgbGlzdFxuICB8IEFsdGVybmF0aXZlIG9mIHJlZ2V4cCBsaXN0XG4gIHwgUmVwZWF0IG9mIHJlZ2V4cCAqIGludCAqIGludCBvcHRpb25cbiAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lXG4gIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcFxuICB8IFNlbSBvZiBBdXRvbWF0YS5zZW0gKiByZWdleHBcbiAgfCBTZW1fZ3JlZWR5IG9mIEF1dG9tYXRhLnJlcF9raW5kICogcmVnZXhwXG4gIHwgR3JvdXAgb2Ygc3RyaW5nIG9wdGlvbiAqIHJlZ2V4cCB8IE5vX2dyb3VwIG9mIHJlZ2V4cCB8IE5lc3Qgb2YgcmVnZXhwXG4gIHwgQ2FzZSBvZiByZWdleHAgfCBOb19jYXNlIG9mIHJlZ2V4cFxuICB8IEludGVyc2VjdGlvbiBvZiByZWdleHAgbGlzdFxuICB8IENvbXBsZW1lbnQgb2YgcmVnZXhwIGxpc3RcbiAgfCBEaWZmZXJlbmNlIG9mIHJlZ2V4cCAqIHJlZ2V4cFxuICB8IFBtYXJrIG9mIFBtYXJrLnQgKiByZWdleHBcblxubW9kdWxlIFZpZXcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gcmVnZXhwID1cbiAgICAgIFNldCBvZiBDc2V0LnRcbiAgICB8IFNlcXVlbmNlIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBBbHRlcm5hdGl2ZSBvZiByZWdleHAgbGlzdFxuICAgIHwgUmVwZWF0IG9mIHJlZ2V4cCAqIGludCAqIGludCBvcHRpb25cbiAgICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBOb3RfYm91bmRcbiAgICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gICAgfCBTZW0gb2YgQXV0b21hdGEuc2VtICogcmVnZXhwXG4gICAgfCBTZW1fZ3JlZWR5IG9mIEF1dG9tYXRhLnJlcF9raW5kICogcmVnZXhwXG4gICAgfCBHcm91cCBvZiBzdHJpbmcgb3B0aW9uICogcmVnZXhwIHwgTm9fZ3JvdXAgb2YgcmVnZXhwIHwgTmVzdCBvZiByZWdleHBcbiAgICB8IENhc2Ugb2YgcmVnZXhwIHwgTm9fY2FzZSBvZiByZWdleHBcbiAgICB8IEludGVyc2VjdGlvbiBvZiByZWdleHAgbGlzdFxuICAgIHwgQ29tcGxlbWVudCBvZiByZWdleHAgbGlzdFxuICAgIHwgRGlmZmVyZW5jZSBvZiByZWdleHAgKiByZWdleHBcbiAgICB8IFBtYXJrIG9mIFBtYXJrLnQgKiByZWdleHBcblxuICBsZXQgdmlldyB0ID0gdFxuZW5kXG5cbmxldCByZWMgcHAgZm10IHQgPVxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbGV0IHZhciBzIHJlID0gc2V4cCBmbXQgcyBwcCByZSBpblxuICBsZXQgc2VxIHMgcmVsID0gc2V4cCBmbXQgcyAobGlzdCBwcCkgcmVsIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNldCBzIC0+ICBzZXhwIGZtdCBcIlNldFwiIENzZXQucHAgc1xuICB8IFNlcXVlbmNlIHNxIC0+IHNlcSBcIlNlcXVlbmNlXCIgc3FcbiAgfCBBbHRlcm5hdGl2ZSBhbHQgLT4gc2VxIFwiQWx0ZXJuYXRpdmVcIiBhbHRcbiAgfCBSZXBlYXQgKHJlLCBzdGFydCwgc3RvcCkgLT5cbiAgICBsZXQgcHAnIGZtdCAoKSA9IGZwcmludGYgZm10IFwiJWFAICVkJWFcIiBwcCByZSAgIHN0YXJ0ICAgb3B0aW50IHN0b3AgaW5cbiAgICBzZXhwIGZtdCBcIlJlcGVhdFwiIHBwJyAoKVxuICB8IEJlZ19vZl9saW5lICAgICAgLT4gc3RyIGZtdCBcIkJlZ19vZl9saW5lXCJcbiAgfCBFbmRfb2ZfbGluZSAgICAgIC0+IHN0ciBmbXQgXCJFbmRfb2ZfbGluZVwiXG4gIHwgQmVnX29mX3dvcmQgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX3dvcmRcIlxuICB8IEVuZF9vZl93b3JkICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl93b3JkXCJcbiAgfCBOb3RfYm91bmQgICAgICAgIC0+IHN0ciBmbXQgXCJOb3RfYm91bmRcIlxuICB8IEJlZ19vZl9zdHIgICAgICAgLT4gc3RyIGZtdCBcIkJlZ19vZl9zdHJcIlxuICB8IEVuZF9vZl9zdHIgICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl9zdHJcIlxuICB8IExhc3RfZW5kX29mX2xpbmUgLT4gc3RyIGZtdCBcIkxhc3RfZW5kX29mX2xpbmVcIlxuICB8IFN0YXJ0ICAgICAgICAgICAgLT4gc3RyIGZtdCBcIlN0YXJ0XCJcbiAgfCBTdG9wICAgICAgICAgICAgIC0+IHN0ciBmbXQgXCJTdG9wXCJcbiAgfCBTZW0gKHNlbSwgcmUpICAgIC0+XG4gICAgc2V4cCBmbXQgXCJTZW1cIiAocGFpciBBdXRvbWF0YS5wcF9zZW0gcHApIChzZW0sIHJlKVxuICB8IFNlbV9ncmVlZHkgKGssIHJlKSAtPlxuICAgIHNleHAgZm10IFwiU2VtX2dyZWVkeVwiIChwYWlyIEF1dG9tYXRhLnBwX3JlcF9raW5kIHBwKSAoaywgcmUpXG4gIHwgR3JvdXAgKE5vbmUsIGMpICAgLT4gdmFyIFwiR3JvdXBcIiBjXG4gIHwgR3JvdXAgKFNvbWUgbiwgYykgLT4gc2V4cCBmbXQgXCJOYW1lZF9ncm91cFwiIChwYWlyIHN0ciBwcCkgKG4sIGMpXG4gIHwgTm9fZ3JvdXAgYyAgICAgLT4gdmFyIFwiTm9fZ3JvdXBcIiBjXG4gIHwgTmVzdCBjICAgICAgICAgLT4gdmFyIFwiTmVzdFwiIGNcbiAgfCBDYXNlIGMgICAgICAgICAtPiB2YXIgXCJDYXNlXCIgY1xuICB8IE5vX2Nhc2UgYyAgICAgIC0+IHZhciBcIk5vX2Nhc2VcIiBjXG4gIHwgSW50ZXJzZWN0aW9uIGMgLT4gc2VxIFwiSW50ZXJzZWN0aW9uXCIgY1xuICB8IENvbXBsZW1lbnQgYyAgIC0+IHNlcSBcIkNvbXBsZW1lbnRcIiBjXG4gIHwgRGlmZmVyZW5jZSAoYSwgYikgLT4gc2V4cCBmbXQgXCJEaWZmZXJlbmNlXCIgKHBhaXIgcHAgcHApIChhLCBiKVxuICB8IFBtYXJrIChtLCByKSAgICAgIC0+IHNleHAgZm10IFwiUG1hcmtcIiAocGFpciBQbWFyay5wcCBwcCkgKG0sIHIpXG5cbmxldCByZWMgaXNfY2hhcnNldCA9IGZ1bmN0aW9uXG4gIHwgU2V0IF8gLT5cbiAgICB0cnVlXG4gIHwgQWx0ZXJuYXRpdmUgbCB8IEludGVyc2VjdGlvbiBsIHwgQ29tcGxlbWVudCBsIC0+XG4gICAgTGlzdC5mb3JfYWxsIGlzX2NoYXJzZXQgbFxuICB8IERpZmZlcmVuY2UgKHIsIHInKSAtPlxuICAgIGlzX2NoYXJzZXQgciAmJiBpc19jaGFyc2V0IHInXG4gIHwgU2VtIChfLCByKSB8IFNlbV9ncmVlZHkgKF8sIHIpXG4gIHwgTm9fZ3JvdXAgciB8IENhc2UgciB8IE5vX2Nhc2UgciAtPlxuICAgIGlzX2NoYXJzZXQgclxuICB8IFNlcXVlbmNlIF8gfCBSZXBlYXQgXyB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgfCBOb3RfYm91bmQgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gIHwgR3JvdXAgXyB8IE5lc3QgXyB8IFBtYXJrIChfLF8pLT5cbiAgICBmYWxzZVxuXG4oKlhYWCBVc2UgYSBiZXR0ZXIgYWxnb3JpdGhtIGFsbG93aW5nIG5vbi1jb250aWd1b3VzIHJlZ2lvbnM/ICopXG5cbmxldCBjdXBwZXIgPVxuICBDc2V0LnVuaW9uIChjc2VxICdBJyAnWicpXG4gICAgKENzZXQudW5pb24gKGNzZXEgJ1xcMTkyJyAnXFwyMTQnKSAoY3NlcSAnXFwyMTYnICdcXDIyMicpKVxubGV0IGNsb3dlciA9IENzZXQub2Zmc2V0IDMyIGN1cHBlclxubGV0IGNhbHBoYSA9XG4gIExpc3QuZm9sZF9yaWdodCBjYWRkIFsnXFwxNzAnOyAnXFwxODEnOyAnXFwxODYnOyAnXFwyMjMnOyAnXFwyNTUnXVxuICAgIChDc2V0LnVuaW9uIGNsb3dlciBjdXBwZXIpXG5sZXQgY2RpZ2l0ID0gY3NlcSAnMCcgJzknXG5sZXQgY2FsbnVtID0gQ3NldC51bmlvbiBjYWxwaGEgY2RpZ2l0XG5sZXQgY3dvcmQgPSBjYWRkICdfJyBjYWxudW1cblxubGV0IGNvbG9yaXplIGMgcmVnZXhwID1cbiAgbGV0IGxubCA9IHJlZiBmYWxzZSBpblxuICBsZXQgcmVjIGNvbG9yaXplIHJlZ2V4cCA9XG4gICAgbWF0Y2ggcmVnZXhwIHdpdGhcbiAgICAgIFNldCBzICAgICAgICAgICAgICAgICAgICAgLT4gQ29sb3JfbWFwLnNwbGl0IHMgY1xuICAgIHwgU2VxdWVuY2UgbCAgICAgICAgICAgICAgICAtPiBMaXN0Lml0ZXIgY29sb3JpemUgbFxuICAgIHwgQWx0ZXJuYXRpdmUgbCAgICAgICAgICAgICAtPiBMaXN0Lml0ZXIgY29sb3JpemUgbFxuICAgIHwgUmVwZWF0IChyLCBfLCBfKSAgICAgICAgICAtPiBjb2xvcml6ZSByXG4gICAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIC0+IENvbG9yX21hcC5zcGxpdCAoQ3NldC5jc2luZ2xlICdcXG4nKSBjXG4gICAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkXG4gICAgfCBOb3RfYm91bmQgICAgICAgICAgICAgICAgIC0+IENvbG9yX21hcC5zcGxpdCBjd29yZCBjXG4gICAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICAgIHwgU3RhcnQgfCBTdG9wICAgICAgICAgICAgICAtPiAoKVxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZSAgICAgICAgICAtPiBsbmwgOj0gdHJ1ZVxuICAgIHwgU2VtIChfLCByKVxuICAgIHwgU2VtX2dyZWVkeSAoXywgcilcbiAgICB8IEdyb3VwIChfLCByKSB8IE5vX2dyb3VwIHJcbiAgICB8IE5lc3QgciB8IFBtYXJrIChfLHIpICAgICAtPiBjb2xvcml6ZSByXG4gICAgfCBDYXNlIF8gfCBOb19jYXNlIF9cbiAgICB8IEludGVyc2VjdGlvbiBfXG4gICAgfCBDb21wbGVtZW50IF9cbiAgICB8IERpZmZlcmVuY2UgXyAgICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIGluXG4gIGNvbG9yaXplIHJlZ2V4cDtcbiAgIWxubFxuXG4oKioqKiBDb21waWxhdGlvbiAqKioqKVxuXG5sZXQgcmVjIGVxdWFsIHgxIHgyID1cbiAgbWF0Y2ggeDEsIHgyIHdpdGhcbiAgICBTZXQgczEsIFNldCBzMiAtPlxuICAgIHMxID0gczJcbiAgfCBTZXF1ZW5jZSBsMSwgU2VxdWVuY2UgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgQWx0ZXJuYXRpdmUgbDEsIEFsdGVybmF0aXZlIGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IFJlcGVhdCAoeDEnLCBpMSwgajEpLCBSZXBlYXQgKHgyJywgaTIsIGoyKSAtPlxuICAgIGkxID0gaTIgJiYgajEgPSBqMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgQmVnX29mX2xpbmUsIEJlZ19vZl9saW5lXG4gIHwgRW5kX29mX2xpbmUsIEVuZF9vZl9saW5lXG4gIHwgQmVnX29mX3dvcmQsIEJlZ19vZl93b3JkXG4gIHwgRW5kX29mX3dvcmQsIEVuZF9vZl93b3JkXG4gIHwgTm90X2JvdW5kLCBOb3RfYm91bmRcbiAgfCBCZWdfb2Zfc3RyLCBCZWdfb2Zfc3RyXG4gIHwgRW5kX29mX3N0ciwgRW5kX29mX3N0clxuICB8IExhc3RfZW5kX29mX2xpbmUsIExhc3RfZW5kX29mX2xpbmVcbiAgfCBTdGFydCwgU3RhcnRcbiAgfCBTdG9wLCBTdG9wIC0+XG4gICAgdHJ1ZVxuICB8IFNlbSAoc2VtMSwgeDEnKSwgU2VtIChzZW0yLCB4MicpIC0+XG4gICAgc2VtMSA9IHNlbTIgJiYgZXF1YWwgeDEnIHgyJ1xuICB8IFNlbV9ncmVlZHkgKGsxLCB4MScpLCBTZW1fZ3JlZWR5IChrMiwgeDInKSAtPlxuICAgIGsxID0gazIgJiYgZXF1YWwgeDEnIHgyJ1xuICB8IEdyb3VwIF8sIEdyb3VwIF8gLT4gKCogRG8gbm90IG1lcmdlIGdyb3VwcyEgKilcbiAgICBmYWxzZVxuICB8IE5vX2dyb3VwIHgxJywgTm9fZ3JvdXAgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IE5lc3QgeDEnLCBOZXN0IHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBDYXNlIHgxJywgQ2FzZSB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgTm9fY2FzZSB4MScsIE5vX2Nhc2UgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IEludGVyc2VjdGlvbiBsMSwgSW50ZXJzZWN0aW9uIGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IENvbXBsZW1lbnQgbDEsIENvbXBsZW1lbnQgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgRGlmZmVyZW5jZSAoeDEnLCB4MScnKSwgRGlmZmVyZW5jZSAoeDInLCB4MicnKSAtPlxuICAgIGVxdWFsIHgxJyB4MicgJiYgZXF1YWwgeDEnJyB4MicnXG4gIHwgUG1hcmsgKG0xLCByMSksIFBtYXJrIChtMiwgcjIpIC0+XG4gICAgUG1hcmsuZXF1YWwgbTEgbTIgJiYgZXF1YWwgcjEgcjJcbiAgfCBfIC0+XG4gICAgZmFsc2VcblxuYW5kIGVxX2xpc3QgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIFtdLCBbXSAtPlxuICAgIHRydWVcbiAgfCB4MSA6OiByMSwgeDIgOjogcjIgLT5cbiAgICBlcXVhbCB4MSB4MiAmJiBlcV9saXN0IHIxIHIyXG4gIHwgXyAtPlxuICAgIGZhbHNlXG5cbmxldCBzZXF1ZW5jZSA9IGZ1bmN0aW9uXG4gIHwgW3hdIC0+IHhcbiAgfCBsICAgLT4gU2VxdWVuY2UgbFxuXG5sZXQgcmVjIG1lcmdlX3NlcXVlbmNlcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBbXVxuICB8IEFsdGVybmF0aXZlIGwnIDo6IHIgLT5cbiAgICBtZXJnZV9zZXF1ZW5jZXMgKGwnIEAgcilcbiAgfCBTZXF1ZW5jZSAoeCA6OiB5KSA6OiByIC0+XG4gICAgYmVnaW4gbWF0Y2ggbWVyZ2Vfc2VxdWVuY2VzIHIgd2l0aFxuICAgICAgICBTZXF1ZW5jZSAoeCcgOjogeScpIDo6IHInIHdoZW4gZXF1YWwgeCB4JyAtPlxuICAgICAgICBTZXF1ZW5jZSBbeDsgQWx0ZXJuYXRpdmUgW3NlcXVlbmNlIHk7IHNlcXVlbmNlIHknXV0gOjogcidcbiAgICAgIHwgcicgLT5cbiAgICAgICAgU2VxdWVuY2UgKHggOjogeSkgOjogcidcbiAgICBlbmRcbiAgfCB4IDo6IHIgLT5cbiAgICB4IDo6IG1lcmdlX3NlcXVlbmNlcyByXG5cbm1vZHVsZSBBID0gQXV0b21hdGFcblxubGV0IGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjciA9XG4gIG1hdGNoIGtpbmQsIGtpbmQnIHdpdGhcbiAgICBgRmlyc3QsIGBGaXJzdCAtPiBjclxuICB8IGBGaXJzdCwgayAgICAgICAtPiBBLnNlcSBpZHMgayBjciAoQS5lcHMgaWRzKVxuICB8ICBfICAgICAgICAgICAgICAgLT4gY3JcblxuKCogWFhYIHNob3VsZCBwcm9iYWJseSBjb21wdXRlIGEgY2F0ZWdvcnkgbWFzayAqKVxubGV0IHJlYyB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT5cbiAgICAoQS5jc3QgaWRzICh0cmFuc19zZXQgY2FjaGUgYyBzKSwga2luZClcbiAgfCBTZXF1ZW5jZSBsIC0+XG4gICAgKHRyYW5zX3NlcSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIGwsIGtpbmQpXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIGJlZ2luIG1hdGNoIG1lcmdlX3NlcXVlbmNlcyBsIHdpdGhcbiAgICAgICAgW3InXSAtPlxuICAgICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAgIChlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3IsIGtpbmQpXG4gICAgICB8IG1lcmdlZF9zZXF1ZW5jZXMgLT5cbiAgICAgICAgKEEuYWx0IGlkc1xuICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgKGZ1biByJyAtPlxuICAgICAgICAgICAgICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5XG4gICAgICAgICAgICAgICAgICAgICBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgICAgICAgICAgICBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3IpXG4gICAgICAgICAgICAgIG1lcmdlZF9zZXF1ZW5jZXMpLFxuICAgICAgICAga2luZClcbiAgICBlbmRcbiAgfCBSZXBlYXQgKHInLCBpLCBqKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIGxldCByZW0gPVxuICAgICAgbWF0Y2ggaiB3aXRoXG4gICAgICAgIE5vbmUgLT5cbiAgICAgICAgQS5yZXAgaWRzIGdyZWVkeSBraW5kJyBjclxuICAgICAgfCBTb21lIGogLT5cbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIG1hdGNoIGdyZWVkeSB3aXRoXG4gICAgICAgICAgICBgR3JlZWR5IC0+XG4gICAgICAgICAgICBmdW4gcmVtIC0+XG4gICAgICAgICAgICAgIEEuYWx0IGlkc1xuICAgICAgICAgICAgICAgIFtBLnNlcSBpZHMga2luZCcgKEEucmVuYW1lIGlkcyBjcikgcmVtOyBBLmVwcyBpZHNdXG4gICAgICAgICAgfCBgTm9uX2dyZWVkeSAtPlxuICAgICAgICAgICAgZnVuIHJlbSAtPlxuICAgICAgICAgICAgICBBLmFsdCBpZHNcbiAgICAgICAgICAgICAgICBbQS5lcHMgaWRzOyBBLnNlcSBpZHMga2luZCcgKEEucmVuYW1lIGlkcyBjcikgcmVtXVxuICAgICAgICBpblxuICAgICAgICBpdGVyIChqIC0gaSkgZiAoQS5lcHMgaWRzKVxuICAgIGluXG4gICAgKGl0ZXIgaSAoZnVuIHJlbSAtPiBBLnNlcSBpZHMga2luZCcgKEEucmVuYW1lIGlkcyBjcikgcmVtKSByZW0sIGtpbmQpXG4gIHwgQmVnX29mX2xpbmUgLT5cbiAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbmV3bGluZSksIGtpbmQpXG4gIHwgRW5kX29mX2xpbmUgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5ld2xpbmUpLCBraW5kKVxuICB8IEJlZ19vZl93b3JkIC0+XG4gICAgKEEuc2VxIGlkcyBgRmlyc3RcbiAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXG4gICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5sZXR0ZXIpLFxuICAgICBraW5kKVxuICB8IEVuZF9vZl93b3JkIC0+XG4gICAgKEEuc2VxIGlkcyBgRmlyc3RcbiAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkubGV0dGVyKVxuICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpLFxuICAgICBraW5kKVxuICB8IE5vdF9ib3VuZCAtPlxuICAgIChBLmFsdCBpZHMgW0Euc2VxIGlkcyBgRmlyc3RcbiAgICAgICAgICAgICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5sZXR0ZXIpXG4gICAgICAgICAgICAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmxldHRlcik7XG4gICAgICAgICAgICAgICAgQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgICAgICAgICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKVxuICAgICAgICAgICAgICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSldLFxuICAgICBraW5kKVxuICB8IEJlZ19vZl9zdHIgLT5cbiAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuaW5leGlzdGFudCwga2luZClcbiAgfCBFbmRfb2Zfc3RyIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5pbmV4aXN0YW50LCBraW5kKVxuICB8IExhc3RfZW5kX29mX2xpbmUgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIGxhc3RuZXdsaW5lKSwga2luZClcbiAgfCBTdGFydCAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5zZWFyY2hfYm91bmRhcnksIGtpbmQpXG4gIHwgU3RvcCAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuc2VhcmNoX2JvdW5kYXJ5LCBraW5kKVxuICB8IFNlbSAoa2luZCcsIHInKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kJyBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgKGVuZm9yY2Vfa2luZCBpZHMga2luZCcga2luZCcnIGNyLFxuICAgICBraW5kJylcbiAgfCBTZW1fZ3JlZWR5IChncmVlZHknLCByJykgLT5cbiAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeScgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgfCBHcm91cCAobiwgcicpIC0+XG4gICAgaWYgaWduX2dyb3VwIHRoZW5cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gICAgZWxzZVxuICAgICAgbGV0IHAgPSAhcG9zIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBtYXRjaCBuIHdpdGhcbiAgICAgICAgfCBTb21lIG5hbWUgLT4gbmFtZXMgOj0gKG5hbWUsIHAgLyAyKSA6OiAhbmFtZXNcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICBpblxuICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgbGV0IChjciwga2luZCcpID1cbiAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLm1hcmsgaWRzIHApIChcbiAgICAgICAgICBBLnNlcSBpZHMgYEZpcnN0IGNyIChBLm1hcmsgaWRzIChwICsgMSkpKSxcbiAgICAgICBraW5kJylcbiAgfCBOb19ncm91cCByJyAtPlxuICAgIHRyYW5zbGF0ZSBpZHMga2luZCB0cnVlIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICB8IE5lc3QgcicgLT5cbiAgICBsZXQgYiA9ICFwb3MgaW5cbiAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgICBpblxuICAgIGxldCBlID0gIXBvcyAtIDEgaW5cbiAgICBpZiBlIDwgYiB0aGVuXG4gICAgICAoY3IsIGtpbmQnKVxuICAgIGVsc2VcbiAgICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLmVyYXNlIGlkcyBiIGUpIGNyLCBraW5kJylcbiAgfCBEaWZmZXJlbmNlIF8gfCBDb21wbGVtZW50IF8gfCBJbnRlcnNlY3Rpb24gXyB8IE5vX2Nhc2UgXyB8IENhc2UgXyAtPlxuICAgIGFzc2VydCBmYWxzZVxuICB8IFBtYXJrIChpLCByJykgLT5cbiAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdCAoQS5wbWFyayBpZHMgaSkgY3IsIGtpbmQnKVxuXG5hbmQgdHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgQS5lcHMgaWRzXG4gIHwgW3JdIC0+XG4gICAgbGV0IChjcicsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByIGluXG4gICAgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyJ1xuICB8IHIgOjogcmVtIC0+XG4gICAgbGV0IChjcicsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByIGluXG4gICAgbGV0IGNyJycgPVxuICAgICAgdHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcmVtIGluXG4gICAgaWYgQS5pc19lcHMgY3InJyB0aGVuXG4gICAgICBjcidcbiAgICBlbHNlIGlmIEEuaXNfZXBzIGNyJyB0aGVuXG4gICAgICBjcicnXG4gICAgZWxzZVxuICAgICAgQS5zZXEgaWRzIGtpbmQnIGNyJyBjcicnXG5cbigqKioqIENhc2UgKioqKilcblxubGV0IGNhc2VfaW5zZW5zIHMgPVxuICBDc2V0LnVuaW9uIHMgKENzZXQudW5pb24gKENzZXQub2Zmc2V0IDMyIChDc2V0LmludGVyIHMgY3VwcGVyKSlcbiAgICAgICAgICAgICAgICAgIChDc2V0Lm9mZnNldCAoLTMyKSAoQ3NldC5pbnRlciBzIGNsb3dlcikpKVxuXG5sZXQgYXNfc2V0ID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPiBzXG4gIHwgXyAgICAgLT4gYXNzZXJ0IGZhbHNlXG5cbigqIFhYWCBTaG91bGQgc3BsaXQgYWx0ZXJuYXRpdmVzIGludG8gKDEpIGNoYXJzZXRzIGFuZCAoMikgbW9yZVxuICAgY29tcGxleCByZWd1bGFyIGV4cHJlc3Npb25zOyBhbHRlcm5hdGl2ZSBzaG91bGQgdGhlcmVmb3JlIHByb2JhYmx5XG4gICBiZSBmbGF0dGVuIGhlcmUgKilcbmxldCByZWMgaGFuZGxlX2Nhc2UgaWduX2Nhc2UgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+XG4gICAgU2V0IChpZiBpZ25fY2FzZSB0aGVuIGNhc2VfaW5zZW5zIHMgZWxzZSBzKVxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICBTZXF1ZW5jZSAoTGlzdC5tYXAgKGhhbmRsZV9jYXNlIGlnbl9jYXNlKSBsKVxuICB8IEFsdGVybmF0aXZlIGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UpIGwgaW5cbiAgICBpZiBpc19jaGFyc2V0IChBbHRlcm5hdGl2ZSBsJykgdGhlblxuICAgICAgU2V0IChMaXN0LmZvbGRfbGVmdCAoZnVuIHMgciAtPiBDc2V0LnVuaW9uIHMgKGFzX3NldCByKSkgQ3NldC5lbXB0eSBsJylcbiAgICBlbHNlXG4gICAgICBBbHRlcm5hdGl2ZSBsJ1xuICB8IFJlcGVhdCAociwgaSwgaikgLT5cbiAgICBSZXBlYXQgKGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIsIGksIGopXG4gIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBOb3RfYm91bmRcbiAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0ciB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3AgYXMgciAtPlxuICAgIHJcbiAgfCBTZW0gKGssIHIpIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIFNlbSAoaywgcicpXG4gIHwgU2VtX2dyZWVkeSAoaywgcikgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgU2VtX2dyZWVkeSAoaywgcicpXG4gIHwgR3JvdXAgKG4sIHIpIC0+XG4gICAgR3JvdXAgKG4sIGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpXG4gIHwgTm9fZ3JvdXAgciAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBOb19ncm91cCByJ1xuICB8IE5lc3QgciAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBOZXN0IHInXG4gIHwgQ2FzZSByIC0+XG4gICAgaGFuZGxlX2Nhc2UgZmFsc2UgclxuICB8IE5vX2Nhc2UgciAtPlxuICAgIGhhbmRsZV9jYXNlIHRydWUgclxuICB8IEludGVyc2VjdGlvbiBsIC0+XG4gICAgbGV0IGwnID0gTGlzdC5tYXAgKGZ1biByIC0+IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpIGwgaW5cbiAgICBTZXQgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQuaW50ZXIgcyAoYXNfc2V0IHIpKSBDc2V0LmNhbnkgbCcpXG4gIHwgQ29tcGxlbWVudCBsIC0+XG4gICAgbGV0IGwnID0gTGlzdC5tYXAgKGZ1biByIC0+IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpIGwgaW5cbiAgICBTZXQgKENzZXQuZGlmZiBDc2V0LmNhbnlcbiAgICAgICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQudW5pb24gcyAoYXNfc2V0IHIpKVxuICAgICAgICAgICAgICBDc2V0LmVtcHR5IGwnKSlcbiAgfCBEaWZmZXJlbmNlIChyLCByJykgLT5cbiAgICBTZXQgKENzZXQuaW50ZXIgKGFzX3NldCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikpXG4gICAgICAgICAgIChDc2V0LmRpZmYgQ3NldC5jYW55IChhc19zZXQgKGhhbmRsZV9jYXNlIGlnbl9jYXNlIHInKSkpKVxuICB8IFBtYXJrIChpLHIpIC0+IFBtYXJrIChpLGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpXG5cbigqKioqKVxuXG5sZXQgY29tcGlsZV8xIHJlZ2V4cCA9XG4gIGxldCByZWdleHAgPSBoYW5kbGVfY2FzZSBmYWxzZSByZWdleHAgaW5cbiAgbGV0IGMgPSBDb2xvcl9tYXAubWFrZSAoKSBpblxuICBsZXQgbmVlZF9sbmwgPSBjb2xvcml6ZSBjIHJlZ2V4cCBpblxuICBsZXQgKGNvbG9ycywgY29sb3JfcmVwciwgbmNvbG9yKSA9IENvbG9yX21hcC5mbGF0dGVuIGMgaW5cbiAgbGV0IGxubCA9IGlmIG5lZWRfbG5sIHRoZW4gbmNvbG9yIGVsc2UgLTEgaW5cbiAgbGV0IG5jb2xvciA9IGlmIG5lZWRfbG5sIHRoZW4gbmNvbG9yICsgMSBlbHNlIG5jb2xvciBpblxuICBsZXQgaWRzID0gQS5jcmVhdGVfaWRzICgpIGluXG4gIGxldCBwb3MgPSByZWYgMCBpblxuICBsZXQgbmFtZXMgPSByZWYgW10gaW5cbiAgbGV0IChyLCBraW5kKSA9XG4gICAgdHJhbnNsYXRlIGlkc1xuICAgICAgYEZpcnN0IGZhbHNlIGZhbHNlIGBHcmVlZHkgcG9zIG5hbWVzIChyZWYgQ3NldC5DU2V0TWFwLmVtcHR5KSBjb2xvcnMgcmVnZXhwIGluXG4gIGxldCByID0gZW5mb3JjZV9raW5kIGlkcyBgRmlyc3Qga2luZCByIGluXG4gICgqRm9ybWF0LmVwcmludGYgXCI8JWQgJWQ+QC5cIiAhaWRzIG5jb2w7KilcbiAgbWtfcmUgfmluaXRpYWw6ciB+Y29sb3JzIH5jb2xvcl9yZXByIH5uY29sb3IgfmxubCB+Z3JvdXBfbmFtZXM6KExpc3QucmV2ICFuYW1lcykgfmdyb3VwX2NvdW50OighcG9zIC8gMilcblxuKCoqKiopXG5cbmxldCByZWMgYW5jaG9yZWQgPSBmdW5jdGlvblxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICBMaXN0LmV4aXN0cyBhbmNob3JlZCBsXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIExpc3QuZm9yX2FsbCBhbmNob3JlZCBsXG4gIHwgUmVwZWF0IChyLCBpLCBfKSAtPlxuICAgIGkgPiAwICYmIGFuY2hvcmVkIHJcbiAgfCBTZXQgXyB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkXG4gIHwgTm90X2JvdW5kIHwgRW5kX29mX3N0ciB8IExhc3RfZW5kX29mX2xpbmUgfCBTdG9wXG4gIHwgSW50ZXJzZWN0aW9uIF8gfCBDb21wbGVtZW50IF8gfCBEaWZmZXJlbmNlIF8gLT5cbiAgICBmYWxzZVxuICB8IEJlZ19vZl9zdHIgfCBTdGFydCAtPlxuICAgIHRydWVcbiAgfCBTZW0gKF8sIHIpIHwgU2VtX2dyZWVkeSAoXywgcikgfCBHcm91cCAoXywgcikgfCBOb19ncm91cCByIHwgTmVzdCByXG4gIHwgQ2FzZSByIHwgTm9fY2FzZSByIHwgUG1hcmsgKF8sIHIpIC0+XG4gICAgYW5jaG9yZWQgclxuXG4oKioqKilcblxudHlwZSB0ID0gcmVnZXhwXG5cbmxldCBzdHIgcyA9XG4gIGxldCBsID0gcmVmIFtdIGluXG4gIGZvciBpID0gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGwgOj0gU2V0IChDc2V0LmNzaW5nbGUgcy5baV0pIDo6ICFsXG4gIGRvbmU7XG4gIFNlcXVlbmNlICFsXG5sZXQgY2hhciBjID0gU2V0IChDc2V0LmNzaW5nbGUgYylcblxubGV0IGFsdCA9IGZ1bmN0aW9uXG4gIHwgW3JdIC0+IHJcbiAgfCBsICAgLT4gQWx0ZXJuYXRpdmUgbFxubGV0IHNlcSA9IGZ1bmN0aW9uXG4gIHwgW3JdIC0+IHJcbiAgfCBsICAgLT4gU2VxdWVuY2UgbFxuXG5sZXQgZW1wdHkgPSBhbHQgW11cbmxldCBlcHNpbG9uID0gc2VxIFtdXG5sZXQgcmVwbiByIGkgaiA9XG4gIGlmIGkgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBuXCI7XG4gIGJlZ2luIG1hdGNoIGogd2l0aFxuICAgIHwgU29tZSBqIHdoZW4gaiA8IGkgLT4gaW52YWxpZF9hcmcgXCJSZS5yZXBuXCJcbiAgICB8IF8gLT4gKClcbiAgZW5kO1xuICBSZXBlYXQgKHIsIGksIGopXG5sZXQgcmVwIHIgPSByZXBuIHIgMCBOb25lXG5sZXQgcmVwMSByID0gcmVwbiByIDEgTm9uZVxubGV0IG9wdCByID0gcmVwbiByIDAgKFNvbWUgMSlcbmxldCBib2wgPSBCZWdfb2ZfbGluZVxubGV0IGVvbCA9IEVuZF9vZl9saW5lXG5sZXQgYm93ID0gQmVnX29mX3dvcmRcbmxldCBlb3cgPSBFbmRfb2Zfd29yZFxubGV0IHdvcmQgciA9IHNlcSBbYm93OyByOyBlb3ddXG5sZXQgbm90X2JvdW5kYXJ5ID0gTm90X2JvdW5kXG5sZXQgYm9zID0gQmVnX29mX3N0clxubGV0IGVvcyA9IEVuZF9vZl9zdHJcbmxldCB3aG9sZV9zdHJpbmcgciA9IHNlcSBbYm9zOyByOyBlb3NdXG5sZXQgbGVvbCA9IExhc3RfZW5kX29mX2xpbmVcbmxldCBzdGFydCA9IFN0YXJ0XG5sZXQgc3RvcCA9IFN0b3BcbmxldCBsb25nZXN0IHIgPSBTZW0gKGBMb25nZXN0LCByKVxubGV0IHNob3J0ZXN0IHIgPSBTZW0gKGBTaG9ydGVzdCwgcilcbmxldCBmaXJzdCByID0gU2VtIChgRmlyc3QsIHIpXG5sZXQgZ3JlZWR5IHIgPSBTZW1fZ3JlZWR5IChgR3JlZWR5LCByKVxubGV0IG5vbl9ncmVlZHkgciA9IFNlbV9ncmVlZHkgKGBOb25fZ3JlZWR5LCByKVxubGV0IGdyb3VwID9uYW1lIHIgPSBHcm91cCAobmFtZSwgcilcbmxldCBub19ncm91cCByID0gTm9fZ3JvdXAgclxubGV0IG5lc3QgciA9IE5lc3QgclxubGV0IG1hcmsgciA9IGxldCBpID0gUG1hcmsuZ2VuICgpIGluIChpLFBtYXJrIChpLHIpKVxuXG5sZXQgc2V0IHN0ciA9XG4gIGxldCBzID0gcmVmIENzZXQuZW1wdHkgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3RyIC0gMSBkb1xuICAgIHMgOj0gQ3NldC51bmlvbiAoQ3NldC5jc2luZ2xlIHN0ci5baV0pICFzXG4gIGRvbmU7XG4gIFNldCAhc1xuXG5sZXQgcmcgYyBjJyA9IFNldCAoY3NlcSBjIGMnKVxuXG5sZXQgaW50ZXIgbCA9XG4gIGxldCByID0gSW50ZXJzZWN0aW9uIGwgaW5cbiAgaWYgaXNfY2hhcnNldCByIHRoZW5cbiAgICByXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZyBcIlJlLmludGVyXCJcblxubGV0IGNvbXBsIGwgPVxuICBsZXQgciA9IENvbXBsZW1lbnQgbCBpblxuICBpZiBpc19jaGFyc2V0IHIgdGhlblxuICAgIHJcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuY29tcGxcIlxuXG5sZXQgZGlmZiByIHInID1cbiAgbGV0IHInJyA9IERpZmZlcmVuY2UgKHIsIHInKSBpblxuICBpZiBpc19jaGFyc2V0IHInJyB0aGVuXG4gICAgcicnXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZyBcIlJlLmRpZmZcIlxuXG5sZXQgYW55ID0gU2V0IENzZXQuY2FueVxubGV0IG5vdG5sID0gU2V0IChDc2V0LmRpZmYgQ3NldC5jYW55IChDc2V0LmNzaW5nbGUgJ1xcbicpKVxuXG5sZXQgbG93ZXIgPSBhbHQgW3JnICdhJyAneic7IGNoYXIgJ1xcMTgxJzsgcmcgJ1xcMjIzJyAnXFwyNDYnOyByZyAnXFwyNDgnICdcXDI1NSddXG5sZXQgdXBwZXIgPSBhbHQgW3JnICdBJyAnWic7IHJnICdcXDE5MicgJ1xcMjE0JzsgcmcgJ1xcMjE2JyAnXFwyMjInXVxubGV0IGFscGhhID0gYWx0IFtsb3dlcjsgdXBwZXI7IGNoYXIgJ1xcMTcwJzsgY2hhciAnXFwxODYnXVxubGV0IGRpZ2l0ID0gcmcgJzAnICc5J1xubGV0IGFsbnVtID0gYWx0IFthbHBoYTsgZGlnaXRdXG5sZXQgd29yZGMgPSBhbHQgW2FsbnVtOyBjaGFyICdfJ11cbmxldCBhc2NpaSA9IHJnICdcXDAwMCcgJ1xcMTI3J1xubGV0IGJsYW5rID0gc2V0IFwiXFx0IFwiXG5sZXQgY250cmwgPSBhbHQgW3JnICdcXDAwMCcgJ1xcMDMxJzsgcmcgJ1xcMTI3JyAnXFwxNTknXVxubGV0IGdyYXBoID0gYWx0IFtyZyAnXFwwMzMnICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMjU1J11cbmxldCBwcmludCA9IGFsdCBbcmcgJ1xcMDMyJyAnXFwxMjYnOyByZyAnXFwxNjAnICdcXDI1NSddXG5sZXQgcHVuY3QgPVxuICBhbHQgW3JnICdcXDAzMycgJ1xcMDQ3JzsgcmcgJ1xcMDU4JyAnXFwwNjQnOyByZyAnXFwwOTEnICdcXDA5Nic7XG4gICAgICAgcmcgJ1xcMTIzJyAnXFwxMjYnOyByZyAnXFwxNjAnICdcXDE2OSc7IHJnICdcXDE3MScgJ1xcMTgwJztcbiAgICAgICByZyAnXFwxODInICdcXDE4NSc7IHJnICdcXDE4NycgJ1xcMTkxJzsgY2hhciAnXFwyMTUnOyBjaGFyICdcXDI0NyddXG5sZXQgc3BhY2UgPSBhbHQgW2NoYXIgJyAnOyByZyAnXFwwMDknICdcXDAxMyddXG5sZXQgeGRpZ2l0ID0gYWx0IFtkaWdpdDsgcmcgJ2EnICdmJzsgcmcgJ0EnICdGJ11cblxubGV0IGNhc2UgciA9IENhc2UgclxubGV0IG5vX2Nhc2UgciA9IE5vX2Nhc2UgclxuXG4oKioqKilcblxubGV0IGNvbXBpbGUgciA9XG4gIGNvbXBpbGVfMSAoXG4gICAgaWYgYW5jaG9yZWQgciB0aGVuXG4gICAgICBncm91cCByXG4gICAgZWxzZVxuICAgICAgc2VxIFtzaG9ydGVzdCAocmVwIGFueSk7IGdyb3VwIHJdXG4gIClcblxubGV0IGV4ZWNfaW50ZXJuYWwgbmFtZSA/KHBvcz0wKSA/KGxlbiA9IC0xKSB+cGFydGlhbCB+Z3JvdXBzIHJlIHMgPVxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IC0xIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgbmFtZTtcbiAgbWF0Y2hfc3RyIH5ncm91cHMgfnBhcnRpYWwgcmUgcyB+cG9zIH5sZW5cblxubGV0IGV4ZWMgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIFwiUmUuZXhlY1wiID9wb3MgP2xlbiB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgcyB3aXRoXG4gICAgTWF0Y2ggc3Vic3RyIC0+IHN1YnN0clxuICB8IF8gICAgICAgICAgICAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGV4ZWNfb3B0ID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCBcIlJlLmV4ZWNfb3B0XCIgP3BvcyA/bGVuIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZVxuICAgICAgICAgIHJlIHMgd2l0aFxuICAgIE1hdGNoIHN1YnN0ciAtPiBTb21lIHN1YnN0clxuICB8IF8gICAgICAgICAgICAtPiBOb25lXG5cbmxldCBleGVjcCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3VwczpmYWxzZSB+cGFydGlhbDpmYWxzZSBcIlJlLmV4ZWNwXCIgP3BvcyA/bGVuIHJlIHMgd2l0aFxuICAgIE1hdGNoIF9zdWJzdHIgLT4gdHJ1ZVxuICB8IF8gICAgICAgICAgICAgLT4gZmFsc2VcblxubGV0IGV4ZWNfcGFydGlhbCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3VwczpmYWxzZSB+cGFydGlhbDp0cnVlIFwiUmUuZXhlY19wYXJ0aWFsXCJcbiAgICAgICAgICA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggXyAtPiBgRnVsbFxuICB8IFJ1bm5pbmcgXyAtPiBgUGFydGlhbFxuICB8IEZhaWxlZCAgLT4gYE1pc21hdGNoXG5cbmxldCBleGVjX3BhcnRpYWxfZGV0YWlsZWQgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDp0cnVlIFwiUmUuZXhlY19wYXJ0aWFsX2RldGFpbGVkXCJcbiAgICAgICAgICA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggZ3JvdXAgLT4gYEZ1bGwgZ3JvdXBcbiAgfCBSdW5uaW5nIHsgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSB9IC0+IGBQYXJ0aWFsIG5vX21hdGNoX3N0YXJ0c19iZWZvcmVcbiAgfCBGYWlsZWQgIC0+IGBNaXNtYXRjaFxuXG5tb2R1bGUgTWFyayA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9IFBtYXJrLnRcblxuICBsZXQgdGVzdCAoZyA6IEdyb3VwLnQpIHAgPVxuICAgIFBtYXJrLlNldC5tZW0gcCBnLnBtYXJrc1xuXG4gIGxldCBhbGwgKGcgOiBHcm91cC50KSA9IGcucG1hcmtzXG5cbiAgbW9kdWxlIFNldCA9IFBtYXJrLlNldFxuXG4gIGxldCBlcXVhbCA9IFBtYXJrLmVxdWFsXG5cbiAgbGV0IGNvbXBhcmUgPSBQbWFyay5jb21wYXJlXG5cbmVuZFxuXG50eXBlIHNwbGl0X3Rva2VuID1cbiAgWyBgVGV4dCBvZiBzdHJpbmdcbiAgfCBgRGVsaW0gb2YgR3JvdXAudFxuICBdXG5cbm1vZHVsZSBSc2VxID0gc3RydWN0XG4gIGxldCBhbGwgPyhwb3M9MCkgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUuYWxsXCI7XG4gICAgKCogaW5kZXggb2YgdGhlIGZpcnN0IHBvc2l0aW9uIHdlIGRvIG5vdCBjb25zaWRlci5cbiAgICAgICAhcG9zIDwgbGltaXQgaXMgYW4gaW52YXJpYW50ICopXG4gICAgbGV0IGxpbWl0ID0gbWF0Y2ggbGVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgIGlmIGw8MCB8fCBwb3MrbCA+IFN0cmluZy5sZW5ndGggcyB0aGVuIGludmFsaWRfYXJnIFwiUmUuYWxsXCI7XG4gICAgICAgIHBvcytsXG4gICAgaW5cbiAgICAoKiBpdGVyYXRlIG9uIG1hdGNoZXMuIFdoZW4gYSBtYXRjaCBpcyBmb3VuZCwgc2VhcmNoIGZvciB0aGUgbmV4dFxuICAgICAgIG9uZSBqdXN0IGFmdGVyIGl0cyBlbmQgKilcbiAgICBsZXQgcmVjIGF1eCBwb3MgKCkgPVxuICAgICAgaWYgcG9zID49IGxpbWl0XG4gICAgICB0aGVuIFNlcS5OaWwgKCogbm8gbW9yZSBtYXRjaGVzICopXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIG1hdGNoX3N0ciB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgc1xuICAgICAgICAgICAgICAgIH5wb3MgfmxlbjoobGltaXQgLSBwb3MpIHdpdGhcbiAgICAgICAgfCBNYXRjaCBzdWJzdHIgLT5cbiAgICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICAgbGV0IHBvcyA9IGlmIHAxPXAyIHRoZW4gcDIrMSBlbHNlIHAyIGluXG4gICAgICAgICAgU2VxLkNvbnMgKHN1YnN0ciwgYXV4IHBvcylcbiAgICAgICAgfCBSdW5uaW5nIF9cbiAgICAgICAgfCBGYWlsZWQgLT4gU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IHBvc1xuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgYWxsID9wb3MgP2xlbiByZSBzXG4gICAgfD4gU2VxLm1hcCAoZnVuIHN1YiAtPiBHcm91cC5nZXQgc3ViIDApXG5cbiAgbGV0IHNwbGl0X2Z1bGwgPyhwb3M9MCkgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUuc3BsaXRcIjtcbiAgICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5zcGxpdFwiO1xuICAgICAgICBwb3MrbFxuICAgIGluXG4gICAgKCogaTogc3RhcnQgb2YgZGVsaW1pdGVkIHN0cmluZ1xuICAgICAgIHBvczogZmlyc3QgcG9zaXRpb24gYWZ0ZXIgbGFzdCBtYXRjaCBvZiBbcmVdXG4gICAgICAgbGltaXQ6IGZpcnN0IGluZGV4IHdlIGlnbm9yZSAoIXBvcyA8IGxpbWl0IGlzIGFuIGludmFyaWFudCkgKilcbiAgICBsZXQgcG9zMCA9IHBvcyBpblxuICAgIGxldCByZWMgYXV4IHN0YXRlIGkgcG9zICgpID0gbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgfCBgSWRsZSB3aGVuIHBvcyA+PSBsaW1pdCAtPlxuICAgICAgICBpZiBpIDwgbGltaXQgdGhlbiAoXG4gICAgICAgICAgbGV0IHN1YiA9IFN0cmluZy5zdWIgcyBpIChsaW1pdCAtIGkpIGluXG4gICAgICAgICAgU2VxLkNvbnMgKGBUZXh0IHN1YiwgYXV4IHN0YXRlIChpKzEpIHBvcylcbiAgICAgICAgKSBlbHNlIFNlcS5OaWxcbiAgICAgIHwgYElkbGUgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIH5wb3NcbiAgICAgICAgICAgICAgICAgICAgICB+bGVuOihsaW1pdCAtIHBvcykgd2l0aFxuICAgICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgICBsZXQgcG9zID0gaWYgcDE9cDIgdGhlbiBwMisxIGVsc2UgcDIgaW5cbiAgICAgICAgICBsZXQgb2xkX2kgPSBpIGluXG4gICAgICAgICAgbGV0IGkgPSBwMiBpblxuICAgICAgICAgIGlmIHAxID4gcG9zMCB0aGVuIChcbiAgICAgICAgICAgICgqIHN0cmluZyBkb2VzIG5vdCBzdGFydCBieSBhIGRlbGltaXRlciAqKVxuICAgICAgICAgICAgbGV0IHRleHQgPSBTdHJpbmcuc3ViIHMgb2xkX2kgKHAxIC0gb2xkX2kpIGluXG4gICAgICAgICAgICBsZXQgc3RhdGUgPSBgWWllbGQgKGBEZWxpbSBzdWJzdHIpIGluXG4gICAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgdGV4dCwgYXV4IHN0YXRlIGkgcG9zKVxuICAgICAgICAgICkgZWxzZSBTZXEuQ29ucyAoYERlbGltIHN1YnN0ciwgYXV4IHN0YXRlIGkgcG9zKVxuICAgICAgICB8IFJ1bm5pbmcgXyAtPiBTZXEuTmlsXG4gICAgICAgIHwgRmFpbGVkIC0+XG4gICAgICAgICAgaWYgaSA8IGxpbWl0XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgdGV4dCA9IFN0cmluZy5zdWIgcyBpIChsaW1pdCAtIGkpIGluXG4gICAgICAgICAgICAoKiB5aWVsZCBsYXN0IHN0cmluZyAqKVxuICAgICAgICAgICAgU2VxLkNvbnMgKGBUZXh0IHRleHQsIGF1eCBzdGF0ZSBsaW1pdCBwb3MpXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIGVuZFxuICAgICAgfCBgWWllbGQgeCAtPlxuICAgICAgICBTZXEuQ29ucyAoeCwgYXV4IGBJZGxlIGkgcG9zKVxuICAgIGluXG4gICAgYXV4IGBJZGxlIHBvcyBwb3NcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBsZXQgc2VxID0gc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyBpblxuICAgIGxldCByZWMgZmlsdGVyIHNlcSAoKSA9IG1hdGNoIHNlcSAoKSAgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IFNlcS5OaWxcbiAgICAgIHwgU2VxLkNvbnMgKGBEZWxpbSBfLCB0bCkgLT4gZmlsdGVyIHRsICgpXG4gICAgICB8IFNlcS5Db25zIChgVGV4dCBzLHRsKSAtPiBTZXEuQ29ucyAocywgZmlsdGVyIHRsKVxuICAgIGluIGZpbHRlciBzZXFcbmVuZFxuXG5tb2R1bGUgUmxpc3QgPSBzdHJ1Y3RcbiAgbGV0IGxpc3Rfb2Zfc2VxIChzOidhIFNlcS50KSA6ICdhIGxpc3QgPVxuICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBsIHggLT4geCA6OiBsKSBbXSBzIHw+IExpc3QucmV2XG5cbiAgbGV0IGFsbCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuYWxsID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLm1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuc3BsaXQgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcbmVuZFxuXG5tb2R1bGUgR2VuID0gc3RydWN0XG4gIHR5cGUgJ2EgZ2VuID0gdW5pdCAtPiAnYSBvcHRpb25cbiAgbGV0IGdlbl9vZl9zZXEgKHM6J2EgU2VxLnQpIDogJ2EgZ2VuID1cbiAgICBsZXQgciA9IHJlZiBzIGluXG4gICAgZnVuICgpIC0+IG1hdGNoICFyICgpIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBOb25lXG4gICAgICB8IFNlcS5Db25zICh4LCB0bCkgLT5cbiAgICAgICAgciA6PSB0bDtcbiAgICAgICAgU29tZSB4XG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzIDogXyBnZW4gPVxuICAgIFJzZXEuc3BsaXQgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIDogXyBnZW4gPVxuICAgIFJzZXEuc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IGFsbCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuYWxsID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA9IFJzZXEubWF0Y2hlcyA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5lbmRcblxubGV0IHJlcGxhY2UgPyhwb3M9MCkgP2xlbiA/KGFsbD10cnVlKSByZSB+ZiBzID1cbiAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUucmVwbGFjZVwiO1xuICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICB8IFNvbWUgbCAtPlxuICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBsYWNlXCI7XG4gICAgICBwb3MrbFxuICBpblxuICAoKiBidWZmZXIgaW50byB3aGljaCB3ZSB3cml0ZSB0aGUgcmVzdWx0ICopXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMpIGluXG4gICgqIGl0ZXJhdGUgb24gbWF0Y2hlZCBzdWJzdHJpbmdzLiAqKVxuICBsZXQgcmVjIGl0ZXIgcG9zID1cbiAgICBpZiBwb3MgPCBsaW1pdFxuICAgIHRoZW5cbiAgICAgIG1hdGNoIG1hdGNoX3N0ciB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgcyB+cG9zIH5sZW46KGxpbWl0LXBvcykgd2l0aFxuICAgICAgfCBNYXRjaCBzdWJzdHIgLT5cbiAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAoKiBhZGQgc3RyaW5nIGJldHdlZW4gcHJldmlvdXMgbWF0Y2ggYW5kIGN1cnJlbnQgbWF0Y2ggKilcbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcG9zIChwMS1wb3MpO1xuICAgICAgICAoKiB3aGF0IHNob3VsZCB3ZSByZXBsYWNlIHRoZSBtYXRjaGVkIGdyb3VwIHdpdGg/ICopXG4gICAgICAgIGxldCByZXBsYWNpbmcgPSBmIHN1YnN0ciBpblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgcmVwbGFjaW5nO1xuICAgICAgICBpZiBhbGwgdGhlblxuICAgICAgICAgICgqIGlmIHdlIG1hdGNoZWQgYSBub24tY2hhciBlLmcuIF4gd2UgbXVzdCBtYW51YWxseSBhZHZhbmNlIGJ5IDEgKilcbiAgICAgICAgICBpdGVyIChcbiAgICAgICAgICAgIGlmIHAxPXAyIHRoZW4gKFxuICAgICAgICAgICAgICAoKiBhIG5vbiBjaGFyIGNvdWxkIGJlIHBhc3QgdGhlIGVuZCBvZiBzdHJpbmcuIGUuZy4gJCAqKVxuICAgICAgICAgICAgICBpZiBwMiA8IGxpbWl0IHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBzLltwMl07XG4gICAgICAgICAgICAgIHAyKzFcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBwMilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHAyIChsaW1pdC1wMilcbiAgICAgIHwgUnVubmluZyBfIC0+ICgpXG4gICAgICB8IEZhaWxlZCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwb3MgKGxpbWl0LXBvcylcbiAgaW5cbiAgaXRlciBwb3M7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IHJlcGxhY2Vfc3RyaW5nID9wb3MgP2xlbiA/YWxsIHJlIH5ieSBzID1cbiAgcmVwbGFjZSA/cG9zID9sZW4gP2FsbCByZSBzIH5mOihmdW4gXyAtPiBieSlcblxubGV0IHdpdG5lc3MgdCA9XG4gIGxldCByZWMgd2l0bmVzcyA9IGZ1bmN0aW9uXG4gICAgfCBTZXQgYyAtPiBTdHJpbmcubWFrZSAxIChDaGFyLmNociAoQ3NldC5waWNrIGMpKVxuICAgIHwgU2VxdWVuY2UgeHMgLT4gU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0Lm1hcCB3aXRuZXNzIHhzKVxuICAgIHwgQWx0ZXJuYXRpdmUgKHggOjogXykgLT4gd2l0bmVzcyB4XG4gICAgfCBBbHRlcm5hdGl2ZSBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFJlcGVhdCAociwgZnJvbSwgX3RvKSAtPlxuICAgICAgbGV0IHcgPSB3aXRuZXNzIHIgaW5cbiAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCB3ICogZnJvbSkgaW5cbiAgICAgIGZvciBfaT0xIHRvIGZyb20gZG9cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiB3XG4gICAgICBkb25lO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICB8IE5vX2Nhc2UgciAtPiB3aXRuZXNzIHJcbiAgICB8IEludGVyc2VjdGlvbiBfXG4gICAgfCBDb21wbGVtZW50IF9cbiAgICB8IERpZmZlcmVuY2UgKF8sIF8pIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgR3JvdXAgKF8sIHIpXG4gICAgfCBOb19ncm91cCByXG4gICAgfCBOZXN0IHJcbiAgICB8IFNlbSAoXywgcilcbiAgICB8IFBtYXJrIChfLCByKVxuICAgIHwgQ2FzZSByXG4gICAgfCBTZW1fZ3JlZWR5IChfLCByKSAtPiB3aXRuZXNzIHJcbiAgICB8IEJlZ19vZl9saW5lXG4gICAgfCBFbmRfb2ZfbGluZVxuICAgIHwgQmVnX29mX3dvcmRcbiAgICB8IEVuZF9vZl93b3JkXG4gICAgfCBOb3RfYm91bmRcbiAgICB8IEJlZ19vZl9zdHJcbiAgICB8IExhc3RfZW5kX29mX2xpbmVcbiAgICB8IFN0YXJ0XG4gICAgfCBTdG9wXG4gICAgfCBFbmRfb2Zfc3RyIC0+IFwiXCIgaW5cbiAgd2l0bmVzcyAoaGFuZGxlX2Nhc2UgZmFsc2UgdClcblxubW9kdWxlIFNlcSA9IFJzZXFcbm1vZHVsZSBMaXN0ID0gUmxpc3Rcbm1vZHVsZSBHcm91cCA9IEdyb3VwXG5cbigqKiB7MiBEZXByZWNhdGVkIGZ1bmN0aW9uc30gKilcblxubGV0IHNwbGl0X2Z1bGxfc2VxID0gU2VxLnNwbGl0X2Z1bGxcbmxldCBzcGxpdF9zZXEgPSBTZXEuc3BsaXRcbmxldCBtYXRjaGVzX3NlcSA9IFNlcS5tYXRjaGVzXG5sZXQgYWxsX3NlcSA9IFNlcS5hbGxcblxudHlwZSAnYSBnZW4gICAgICAgID0gJ2EgR2VuLmdlblxubGV0IGFsbF9nZW4gICAgICAgID0gR2VuLmFsbFxubGV0IG1hdGNoZXNfZ2VuICAgID0gR2VuLm1hdGNoZXNcbmxldCBzcGxpdF9nZW4gICAgICA9IEdlbi5zcGxpdFxubGV0IHNwbGl0X2Z1bGxfZ2VuID0gR2VuLnNwbGl0X2Z1bGxcblxuXG50eXBlIHN1YnN0cmluZ3MgPSBHcm91cC50XG5cbmxldCBnZXQgPSBHcm91cC5nZXRcbmxldCBnZXRfb2ZzID0gR3JvdXAub2Zmc2V0XG5sZXQgZ2V0X2FsbCA9IEdyb3VwLmFsbFxubGV0IGdldF9hbGxfb2ZzID0gR3JvdXAuYWxsX29mZnNldFxubGV0IHRlc3QgPSBHcm91cC50ZXN0XG5cbnR5cGUgbWFya2lkID0gTWFyay50XG5cbmxldCBtYXJrZWQgPSBNYXJrLnRlc3RcbmxldCBtYXJrX3NldCA9IE1hcmsuYWxsXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKlxuSW5mb3JtYXRpb24gYWJvdXQgdGhlIHByZXZpb3VzIGNoYXJhY3Rlcjpcbi0gZG9lcyBub3QgZXhpc3RzXG4tIGlzIGEgbGV0dGVyXG4tIGlzIG5vdCBhIGxldHRlclxuLSBpcyBhIG5ld2xpbmVcbi0gaXMgbGFzdCBuZXdsaW5lXG5cbkJlZ2lubmluZyBvZiB3b3JkOlxuLSBwcmV2aW91cyBpcyBub3QgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3Rcbi0gY3VycmVudCBpcyBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2Ygd29yZDpcbi0gcHJldmlvdXMgaXMgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3Rcbi0gY3VycmVudCBpcyBub3QgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3RcblxuQmVnaW5uaW5nIG9mIGxpbmU6XG4tIHByZXZpb3VzIGlzIGEgbmV3bGluZSBvciBkb2VzIG5vdCBleGlzdFxuXG5CZWdpbm5pbmcgb2YgYnVmZmVyOlxuLSBwcmV2aW91cyBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2YgYnVmZmVyXG4tIGN1cnJlbnQgZG9lcyBub3QgZXhpc3RcblxuRW5kIG9mIGxpbmVcbi0gY3VycmVudCBpcyBhIG5ld2xpbmUgb3IgZG9lcyBub3QgZXhpc3RcbiopXG5cbigqXG5SZXA6IGUgPSBULGUgfCAoKVxuICAtIHNlbWFudGljcyBvZiB0aGUgY29tbWEgKHNob3J0ZXN0L2xvbmdlc3QvZmlyc3QpXG4gIC0gc2VtYW50aWNzIG9mIHRoZSB1bmlvbiAoZ3JlZWR5L25vbi1ncmVlZHkpXG5cbkJvdW5kZWQgcmVwZXRpdGlvblxuICBhezAsM30gPSAoYSwoYSxhPyk/KT9cbiopXG5cbnR5cGUgZ3JvdXBzID0gR3JvdXAudFxuXG5pbmNsdWRlIFJsaXN0XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWRcblxubGV0IHBhcnNlIHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCB0ZXN0MiBjIGMnID0gIWkgKyAxIDwgbCAmJiBzLlshaV0gPSBjICYmIHMuWyFpICsgMV0gPSBjJyBpblxuICBsZXQgYWNjZXB0IGMgPSBsZXQgciA9IHRlc3QgYyBpbiBpZiByIHRoZW4gaW5jciBpOyByIGluXG4gIGxldCBhY2NlcHQyIGMgYycgPSBsZXQgciA9IHRlc3QyIGMgYycgaW4gaWYgciB0aGVuIGkgOj0gIWkgKyAyOyByIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0MiAnXFxcXCcgJ3wnIHRoZW4gcmVnZXhwJyAoUmUuYWx0IFtsZWZ0OyBicmFuY2ggKCldKSBlbHNlIGxlZnRcbiAgYW5kIGJyYW5jaCAoKSA9IGJyYW5jaCcgW11cbiAgYW5kIGJyYW5jaCcgbGVmdCA9XG4gICAgaWYgZW9zICgpIHx8IHRlc3QyICdcXFxcJyAnfCcgfHwgdGVzdDIgJ1xcXFwnICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIFJlLnJlcCByIGVsc2VcbiAgICBpZiBhY2NlcHQgJysnIHRoZW4gUmUucmVwMSByIGVsc2VcbiAgICBpZiBhY2NlcHQgJz8nIHRoZW4gUmUub3B0IHIgZWxzZVxuICAgIHJcbiAgYW5kIGF0b20gKCkgPVxuICAgIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgUmUubm90bmxcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIFJlLmJvbFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgUmUuZW9sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuY29tcGwgKGJyYWNrZXQgW10pXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdDIgJ1xcXFwnICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgUmUuZ3JvdXAgclxuICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdgJyB0aGVuXG4gICAgICAgIFJlLmJvc1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJ1xcJycgdGhlblxuICAgICAgICBSZS5lb3NcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc9JyB0aGVuXG4gICAgICAgIFJlLnN0YXJ0XG4gICAgICBlbHNlIGlmIGFjY2VwdCAnYicgdGhlblxuICAgICAgICBSZS5hbHQgW1JlLmJvdzsgUmUuZW93XVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJ0InIHRoZW5cbiAgICAgICAgUmUubm90X2JvdW5kYXJ5XG4gICAgICBlbHNlIGlmIGFjY2VwdCAnPCcgdGhlblxuICAgICAgICBSZS5ib3dcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc+JyB0aGVuXG4gICAgICAgIFJlLmVvd1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJ3cnIHRoZW5cbiAgICAgICAgUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnVycgdGhlblxuICAgICAgICBSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgICAnKicgfCAnKycgfCAnPycgfCAnWycgfCAnXScgfCAnLicgfCAnXicgfCAnJCcgfCAnXFxcXCcgYXMgYyAtPlxuICAgICAgICAgICAgUmUuY2hhciBjXG4gICAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICBlbmRcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnKicgfCAnKycgfCAnPycgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgICAgICAgIGMgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGdldCAoKVxuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxubGV0IHJlID8oY2FzZSA9IHRydWUpIHMgPSBsZXQgciA9IHBhcnNlIHMgaW4gaWYgY2FzZSB0aGVuIHIgZWxzZSBSZS5ub19jYXNlIHJcblxubGV0IGNvbXBpbGUgPSBSZS5jb21waWxlXG5sZXQgY29tcGlsZV9wYXQgPyhjYXNlID0gdHJ1ZSkgcyA9IGNvbXBpbGUgKHJlIH5jYXNlIHMpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICopXG4oKiAgbGlua2luZyBleGNlcHRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZGlmaWVkIGJ5IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mciBmb3IgaW50ZWdyYXRpb24gaW4gUkUgKilcblxuKCogJElkOiByZV9zdHIubWwsdiAxLjMgMjAwMi8wNy8wMyAxNTo0Nzo1NCB2b3VpbGxvbiBFeHAgJCAqKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbnR5cGUgcmVnZXhwID1cbiAgeyByZTogUmUudFxuICA7IG10Y2g6IFJlLnJlIExhenkudFxuICA7IHNyY2g6IFJlLnJlIExhenkudCB9XG5cbmxldCBjb21waWxlX3JlZ2V4cCBzIGMgPVxuICBsZXQgcmUgPSBFbWFjcy5yZSB+Y2FzZToobm90IGMpIHMgaW5cbiAgeyByZVxuICA7IG10Y2ggPSBsYXp5IChSZS5jb21waWxlIChSZS5zZXEgW1JlLnN0YXJ0OyByZV0pKVxuICA7IHNyY2ggPSBsYXp5IChSZS5jb21waWxlIHJlKSB9XG5cbmxldCBzdGF0ZSA9IHJlZiBOb25lXG5cbmxldCBzdHJpbmdfbWF0Y2ggcmUgcyBwID1cbiAgdHJ5XG4gICAgc3RhdGUgOj0gU29tZSAoUmUuZXhlYyB+cG9zOnAgKExhenkuZm9yY2UgcmUubXRjaCkgcyk7XG4gICAgdHJ1ZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHN0YXRlIDo9IE5vbmU7XG4gICAgZmFsc2VcblxubGV0IHN0cmluZ19wYXJ0aWFsX21hdGNoIHJlIHMgcCA9XG4gIG1hdGNoXG4gICAgUmUuZXhlY19wYXJ0aWFsIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzXG4gIHdpdGhcbiAgICBgRnVsbCAgICAgLT4gc3RyaW5nX21hdGNoIHJlIHMgcFxuICB8IGBQYXJ0aWFsICAtPiB0cnVlXG4gIHwgYE1pc21hdGNoIC0+IGZhbHNlXG5cbmxldCBzZWFyY2hfZm9yd2FyZCByZSBzIHAgPVxuICB0cnlcbiAgICBsZXQgcmVzID0gUmUuZXhlYyB+cG9zOnAgKExhenkuZm9yY2UgcmUuc3JjaCkgcyBpblxuICAgIHN0YXRlIDo9IFNvbWUgcmVzO1xuICAgIGZzdCAoUmUuR3JvdXAub2Zmc2V0IHJlcyAwKVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHN0YXRlIDo9IE5vbmU7XG4gICAgcmFpc2UgTm90X2ZvdW5kXG5cbmxldCByZWMgc2VhcmNoX2JhY2t3YXJkIHJlIHMgcCA9XG4gIHRyeVxuICAgIGxldCByZXMgPSBSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzIGluXG4gICAgc3RhdGUgOj0gU29tZSByZXM7XG4gICAgcFxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHN0YXRlIDo9IE5vbmU7XG4gICAgaWYgcCA9IDAgdGhlblxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgZWxzZVxuICAgICAgc2VhcmNoX2JhY2t3YXJkIHJlIHMgKHAgLSAxKVxuXG5sZXQgdmFsaWRfZ3JvdXAgbiA9XG4gIG4gPj0gMCAmJiBuIDwgMTAgJiYgKFxuICAgIG1hdGNoICFzdGF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIG0gLT4gbiA8IFJlLkdyb3VwLm5iX2dyb3VwcyBtXG4gIClcblxubGV0IG9mZnNldF9ncm91cCBpID1cbiAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgfCBTb21lIG0gLT4gUmUuR3JvdXAub2Zmc2V0IG0gaVxuICB8IE5vbmUgICAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGdyb3VwX2xlbiBpID1cbiAgdHJ5XG4gICAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCBpIGluXG4gICAgZSAtIGJcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAwXG5cbmxldCByZWMgcmVwbF9sZW5ndGggcmVwbCBwIHEgbGVuID1cbiAgaWYgcCA8IGxlbiB0aGVuIGJlZ2luXG4gICAgaWYgcmVwbC5bcF0gPD4gJ1xcXFwnIHRoZW5cbiAgICAgIHJlcGxfbGVuZ3RoIHJlcGwgKHAgKyAxKSAocSArIDEpIGxlblxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCBwID0gcCArIDEgaW5cbiAgICAgIGlmIHAgPSBsZW4gdGhlbiBmYWlsd2l0aCBcIlN0ci5yZXBsYWNlOiBpbGxlZ2FsIGJhY2tzbGFzaCBzZXF1ZW5jZVwiO1xuICAgICAgbGV0IHEgPVxuICAgICAgICBtYXRjaCByZXBsLltwXSB3aXRoXG4gICAgICAgIHwgJ1xcXFwnIC0+IHEgKyAxXG4gICAgICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+IHEgKyBncm91cF9sZW4gKENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJylcbiAgICAgICAgfCBfIC0+IHEgKyAyIGluXG4gICAgICByZXBsX2xlbmd0aCByZXBsIChwICsgMSkgcSBsZW5cbiAgICBlbmRcbiAgZW5kIGVsc2VcbiAgICBxXG5cbmxldCByZWMgcmVwbGFjZSBvcmlnIHJlcGwgcCByZXMgcSBsZW4gPVxuICBpZiBwIDwgbGVuIHRoZW4gYmVnaW5cbiAgICBsZXQgYyA9IHJlcGwuW3BdIGluXG4gICAgaWYgYyA8PiAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgQnl0ZXMuc2V0IHJlcyBxIGM7XG4gICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDEpIHJlcyAocSArIDEpIGxlblxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBtYXRjaCByZXBsLltwICsgMV0gd2l0aFxuICAgICAgICAnXFxcXCcgLT5cbiAgICAgICAgQnl0ZXMuc2V0IHJlcyBxICdcXFxcJztcbiAgICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAyKSByZXMgKHEgKyAxKSBsZW5cbiAgICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgICAgIGxldCBkID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCAoYiwgZSkgPSBvZmZzZXRfZ3JvdXAgKENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJykgaW5cbiAgICAgICAgICAgIGxldCBkID0gZSAtIGIgaW5cbiAgICAgICAgICAgIGlmIGQgPiAwIHRoZW4gU3RyaW5nLmJsaXQgb3JpZyBiIHJlcyBxIGQ7XG4gICAgICAgICAgICBkXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIDBcbiAgICAgICAgaW5cbiAgICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAyKSByZXMgKHEgKyBkKSBsZW5cbiAgICAgIHwgYyAtPlxuICAgICAgICBCeXRlcy5zZXQgcmVzIHEgJ1xcXFwnO1xuICAgICAgICBCeXRlcy5zZXQgcmVzIChxICsgMSkgYztcbiAgICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAyKSByZXMgKHEgKyAyKSBsZW5cbiAgICBlbmRcbiAgZW5kXG5cbmxldCByZXBsYWNlbWVudF90ZXh0IHJlcGwgb3JpZyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHJlcGwgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAocmVwbF9sZW5ndGggcmVwbCAwIDAgbGVuKSBpblxuICByZXBsYWNlIG9yaWcgcmVwbCAwIHJlcyAwIChTdHJpbmcubGVuZ3RoIHJlcGwpO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKDIgKiBsZW4pIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgJ1snIHwgJ10nIHwgJyonIHwgJy4nIHwgJ1xcXFwnIHwgJz8nIHwgJysnIHwgJ14nIHwgJyQnIGFzIGMgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1xcXFwnO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICBkb25lO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbmxldCBzdHJpbmdfYmVmb3JlIHMgbiA9IFN0cmluZy5zdWIgcyAwIG5cblxubGV0IHN0cmluZ19hZnRlciBzIG4gPSBTdHJpbmcuc3ViIHMgbiAoU3RyaW5nLmxlbmd0aCBzIC0gbilcblxubGV0IGZpcnN0X2NoYXJzIHMgbiA9IFN0cmluZy5zdWIgcyAwIG5cblxubGV0IGxhc3RfY2hhcnMgcyBuID0gU3RyaW5nLnN1YiBzIChTdHJpbmcubGVuZ3RoIHMgLSBuKSBuXG5cbmxldCByZWdleHAgZSA9IGNvbXBpbGVfcmVnZXhwIGUgZmFsc2VcblxubGV0IHJlZ2V4cF9jYXNlX2ZvbGQgZSA9IGNvbXBpbGVfcmVnZXhwIGUgdHJ1ZVxuXG5sZXQgcmVnZXhwX3N0cmluZyBzID0gY29tcGlsZV9yZWdleHAgKHF1b3RlIHMpIGZhbHNlXG5cbmxldCByZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCBzID0gY29tcGlsZV9yZWdleHAgKHF1b3RlIHMpIHRydWVcblxubGV0IGdyb3VwX2JlZ2lubmluZyBuID1cbiAgaWYgbm90ICh2YWxpZF9ncm91cCBuKSB0aGVuIGludmFsaWRfYXJnIFwiU3RyLmdyb3VwX2JlZ2lubmluZ1wiO1xuICBsZXQgcG9zID0gZnN0IChvZmZzZXRfZ3JvdXAgbikgaW5cbiAgaWYgcG9zID0gLTEgdGhlblxuICAgIHJhaXNlIE5vdF9mb3VuZFxuICBlbHNlXG4gICAgcG9zXG5cbmxldCBncm91cF9lbmQgbiA9XG4gIGlmIG5vdCAodmFsaWRfZ3JvdXAgbikgdGhlbiBpbnZhbGlkX2FyZyBcIlN0ci5ncm91cF9lbmRcIjtcbiAgbGV0IHBvcyA9IHNuZCAob2Zmc2V0X2dyb3VwIG4pIGluXG4gIGlmIHBvcyA9IC0xIHRoZW5cbiAgICByYWlzZSBOb3RfZm91bmRcbiAgZWxzZVxuICAgIHBvc1xuXG5sZXQgbWF0Y2hlZF9ncm91cCBuIHR4dCA9XG4gIGxldCAoYiwgZSkgPSBvZmZzZXRfZ3JvdXAgbiBpblxuICBTdHJpbmcuc3ViIHR4dCBiIChlIC0gYilcblxubGV0IHJlcGxhY2VfbWF0Y2hlZCByZXBsIG1hdGNoZWQgPSByZXBsYWNlbWVudF90ZXh0IHJlcGwgbWF0Y2hlZFxuXG5sZXQgbWF0Y2hfYmVnaW5uaW5nICgpID0gZ3JvdXBfYmVnaW5uaW5nIDBcbmFuZCBtYXRjaF9lbmQgKCkgPSBncm91cF9lbmQgMFxuYW5kIG1hdGNoZWRfc3RyaW5nIHR4dCA9IG1hdGNoZWRfZ3JvdXAgMCB0eHRcblxubGV0IHN1YnN0aXR1dGVfZmlyc3QgZXhwciByZXBsX2Z1biB0ZXh0ID1cbiAgdHJ5XG4gICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkIGV4cHIgdGV4dCAwIGluXG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIFtzdHJpbmdfYmVmb3JlIHRleHQgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgIHJlcGxfZnVuIHRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX2FmdGVyIHRleHQgKG1hdGNoX2VuZCAoKSldXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgdGV4dFxuXG5sZXQgZ2xvYmFsX3N1YnN0aXR1dGUgZXhwciByZXBsX2Z1biB0ZXh0ID1cbiAgbGV0IHJlYyByZXBsYWNlIGFjY3Ugc3RhcnQgbGFzdF93YXNfZW1wdHkgPVxuICAgIGxldCBzdGFydHBvcyA9IGlmIGxhc3Rfd2FzX2VtcHR5IHRoZW4gc3RhcnQgKyAxIGVsc2Ugc3RhcnQgaW5cbiAgICBpZiBzdGFydHBvcyA+IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzZWFyY2hfZm9yd2FyZCBleHByIHRleHQgc3RhcnRwb3Mgd2l0aFxuICAgICAgfCBwb3MgLT5cbiAgICAgICAgbGV0IGVuZF9wb3MgPSBtYXRjaF9lbmQgKCkgaW5cbiAgICAgICAgbGV0IHJlcGxfdGV4dCA9IHJlcGxfZnVuIHRleHQgaW5cbiAgICAgICAgcmVwbGFjZSAocmVwbF90ZXh0IDo6IFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSA6OiBhY2N1KVxuICAgICAgICAgIGVuZF9wb3MgKGVuZF9wb3MgPSBwb3MpXG4gICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gIGluXG4gIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXYgKHJlcGxhY2UgW10gMCBmYWxzZSkpXG5cbmxldCBnbG9iYWxfcmVwbGFjZSBleHByIHJlcGwgdGV4dCA9XG4gIGdsb2JhbF9zdWJzdGl0dXRlIGV4cHIgKHJlcGxhY2VtZW50X3RleHQgcmVwbCkgdGV4dFxuYW5kIHJlcGxhY2VfZmlyc3QgZXhwciByZXBsIHRleHQgPVxuICBzdWJzdGl0dXRlX2ZpcnN0IGV4cHIgKHJlcGxhY2VtZW50X3RleHQgcmVwbCkgdGV4dFxuXG5sZXQgc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgcmUgcyBwID1cbiAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkIHJlIHMgcCBpblxuICBpZiBtYXRjaF9lbmQgKCkgPiBwIHRoZW5cbiAgICBwb3NcbiAgZWxzZSBpZiBwIDwgU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICBzZWFyY2hfZm9yd2FyZCByZSBzIChwICsgMSlcbiAgZWxzZVxuICAgIHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgYm91bmRlZF9zcGxpdCBleHByIHRleHQgbnVtID1cbiAgbGV0IHN0YXJ0ID1cbiAgICBpZiBzdHJpbmdfbWF0Y2ggZXhwciB0ZXh0IDAgdGhlbiBtYXRjaF9lbmQgKCkgZWxzZSAwIGluXG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+PSBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyBleHByIHRleHQgc3RhcnQgaW5cbiAgICAgICAgc3BsaXQgKChTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcy1zdGFydCkpIDo6IGFjY3UpXG4gICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIExpc3QucmV2IChzcGxpdCBbXSBzdGFydCBudW0pXG5cbmxldCBzcGxpdCBleHByIHRleHQgPSBib3VuZGVkX3NwbGl0IGV4cHIgdGV4dCAwXG5cbmxldCBib3VuZGVkX3NwbGl0X2RlbGltIGV4cHIgdGV4dCBudW0gPVxuICBsZXQgcmVjIHNwbGl0IGFjY3Ugc3RhcnQgbiA9XG4gICAgaWYgc3RhcnQgPiBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyBleHByIHRleHQgc3RhcnQgaW5cbiAgICAgICAgc3BsaXQgKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSA6OiBhY2N1KVxuICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBpZiB0ZXh0ID0gXCJcIiB0aGVuXG4gICAgW11cbiAgZWxzZVxuICAgIExpc3QucmV2IChzcGxpdCBbXSAwIG51bSlcblxubGV0IHNwbGl0X2RlbGltIGV4cHIgdGV4dCA9IGJvdW5kZWRfc3BsaXRfZGVsaW0gZXhwciB0ZXh0IDBcblxudHlwZSBzcGxpdF9yZXN1bHQgPSBUZXh0IG9mIHN0cmluZyB8IERlbGltIG9mIHN0cmluZ1xuXG5sZXQgYm91bmRlZF9mdWxsX3NwbGl0IGV4cHIgdGV4dCBudW0gPVxuICBsZXQgcmVjIHNwbGl0IGFjY3Ugc3RhcnQgbiA9XG4gICAgaWYgc3RhcnQgPj0gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIG4gPSAxIHRoZW5cbiAgICAgIFRleHQgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyBleHByIHRleHQgc3RhcnQgaW5cbiAgICAgICAgbGV0IHMgPSBtYXRjaGVkX3N0cmluZyB0ZXh0IGluXG4gICAgICAgIGlmIHBvcyA+IHN0YXJ0IHRoZW5cbiAgICAgICAgICBzcGxpdCAoRGVsaW0gKHMpIDo6XG4gICAgICAgICAgICAgICAgIFRleHQgKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zIC0gc3RhcnQpKSA6OlxuICAgICAgICAgICAgICAgICBhY2N1KVxuICAgICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgc3BsaXQgKERlbGltIChzKSA6OiBhY2N1KVxuICAgICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgVGV4dCAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgTGlzdC5yZXYgKHNwbGl0IFtdIDAgbnVtKVxuXG5sZXQgZnVsbF9zcGxpdCBleHByIHRleHQgPSBib3VuZGVkX2Z1bGxfc3BsaXQgZXhwciB0ZXh0IDBcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5cbnR5cGUgZW5jbG9zZWQgPVxuICB8IENoYXIgb2YgY2hhclxuICB8IFJhbmdlIG9mIGNoYXIgKiBjaGFyXG5cbnR5cGUgcGllY2UgPVxuICB8IEV4YWN0bHkgb2YgY2hhclxuICB8IEFueV9vZiBvZiBlbmNsb3NlZCBsaXN0XG4gIHwgQW55X2J1dCBvZiBlbmNsb3NlZCBsaXN0XG4gIHwgT25lXG4gIHwgTWFueVxuICB8IE1hbnlNYW55XG5cbnR5cGUgdCA9IHBpZWNlIGxpc3RcblxubGV0IG9mX3N0cmluZyB+ZG91YmxlX2FzdGVyaXNrIHMgOiB0ID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCByZWFkIGMgPVxuICAgIGxldCByID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgICBpZiByIHRoZW4gaW5jciBpO1xuICAgIHJcbiAgaW5cblxuICAoKipcbiAgIFtyZWFkX2FoZWFkIHBhdHRlcm5dIHdpbGwgYXR0ZW1wdCB0byByZWFkIFtwYXR0ZXJuXSBhbmQgd2lsbCByZXR1cm4gW3RydWVdIGlmIGl0IHdhcyBzdWNjZXNzZnVsLlxuICAgSWYgaXQgZmFpbHMsIGl0IHdpbGwgcmV0dXJuIFtmYWxzZV0gYW5kIG5vdCBpbmNyZW1lbnQgdGhlIHJlYWQgaW5kZXguXG4gICopXG4gIGxldCByZWFkX2FoZWFkIHBhdHRlcm4gPVxuICAgIGxldCBwYXR0ZXJuX2xlbiA9IFN0cmluZy5sZW5ndGggcGF0dGVybiBpblxuICAgICgqIGlmIHRoZSBwYXR0ZXJuIHdlIGFyZSBsb29raW5nIGZvciBleGVlZHMgdGhlIHJlbWFpbmluZyBsZW5ndGggb2YgcywgcmV0dXJuIGZhbHNlIGltbWVkaWF0ZWx5ICopXG4gICAgaWYgIWkgKyBwYXR0ZXJuX2xlbiA+PSBsIHRoZW5cbiAgICAgIGZhbHNlXG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGZvciBqID0gMCB0byBwYXR0ZXJuX2xlbiAtIDEgZG9cbiAgICAgICAgICBsZXQgZm91bmQgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWkgKyBqXSA9IHBhdHRlcm4uW2pdIGluXG4gICAgICAgICAgaWYgbm90IGZvdW5kIHRoZW4gcmFpc2Vfbm90cmFjZSBFeGl0O1xuICAgICAgICBkb25lO1xuICAgICAgICBpIDo9ICFpICsgcGF0dGVybl9sZW47XG4gICAgICAgIHRydWVcbiAgICAgIHdpdGggfCBFeGl0ICAtPiBmYWxzZVxuICBpblxuXG4gIGxldCBjaGFyICgpID1cbiAgICBpZ25vcmUgKHJlYWQgJ1xcXFwnIDogYm9vbCk7XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IHIgPSBzLlshaV0gaW5cbiAgICBpbmNyIGk7XG4gICAgclxuICBpblxuXG4gIGxldCBlbmNsb3NlZCAoKSA6IGVuY2xvc2VkIGxpc3QgPVxuICAgIGxldCByZWMgbG9vcCBzID1cbiAgICAgICgqIFRoaXMgcmV0dXJucyB0aGUgbGlzdCBpbiByZXZlcnNlIG9yZGVyLCBidXQgb3JkZXIgaXNuJ3QgaW1wb3J0YW50IGFueXdheSAqKVxuICAgICAgaWYgcyA8PiBbXSAmJiByZWFkICddJ1xuICAgICAgdGhlbiBzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgICBpZiBub3QgKHJlYWQgJy0nKVxuICAgICAgICB0aGVuIGxvb3AgKENoYXIgYyA6OiBzKVxuICAgICAgICBlbHNlIGlmIHJlYWQgJ10nXG4gICAgICAgIHRoZW4gQ2hhciBjIDo6IENoYXIgJy0nIDo6IHNcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBjJyA9IGNoYXIgKCkgaW5cbiAgICAgICAgICBsb29wIChSYW5nZSAoYywgYycpIDo6IHMpXG4gICAgaW5cbiAgICBsb29wIFtdXG4gIGluXG5cbiAgbGV0IHBpZWNlICgpID1cbiAgICBpZiBkb3VibGVfYXN0ZXJpc2sgJiYgcmVhZF9haGVhZCBcIi8qKlwiICYmIG5vdCAoZW9zICgpKVxuICAgIHRoZW4gTWFueU1hbnlcbiAgICBlbHNlIGlmIHJlYWQgJyonXG4gICAgdGhlbiBpZiBkb3VibGVfYXN0ZXJpc2sgJiYgcmVhZCAnKidcbiAgICAgIHRoZW4gTWFueU1hbnlcbiAgICAgIGVsc2UgTWFueVxuICAgIGVsc2UgaWYgcmVhZCAnPydcbiAgICB0aGVuIE9uZVxuICAgIGVsc2UgaWYgbm90IChyZWFkICdbJylcbiAgICB0aGVuIEV4YWN0bHkgKGNoYXIgKCkpXG4gICAgZWxzZSBpZiByZWFkICdeJyB8fCByZWFkICchJ1xuICAgIHRoZW4gQW55X2J1dCAoZW5jbG9zZWQgKCkpXG4gICAgZWxzZSBBbnlfb2YgKGVuY2xvc2VkICgpKVxuICBpblxuXG4gIGxldCByZWMgbG9vcCBwaWVjZXMgPVxuICAgIGlmIGVvcyAoKVxuICAgIHRoZW4gTGlzdC5yZXYgcGllY2VzXG4gICAgZWxzZSBsb29wIChwaWVjZSAoKSA6OiBwaWVjZXMpXG4gIGluXG5cbiAgbG9vcCBbXVxuXG5sZXQgbXVsIGwgbCcgPVxuICBMaXN0LmZsYXR0ZW4gKExpc3QubWFwIChmdW4gcyAtPiBMaXN0Lm1hcCAoZnVuIHMnIC0+IHMgXiBzJykgbCcpIGwpXG5cbmxldCBleHBsb2RlIHN0ciA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlYyBleHBsIGlubmVyIHMgaSBhY2MgYmVnID1cbiAgICBpZiBpID49IGwgdGhlbiBiZWdpblxuICAgICAgaWYgaW5uZXIgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIChtdWwgYmVnIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldLCBpKVxuICAgIGVuZCBlbHNlXG4gICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgIHwgJ1xcXFwnIC0+IGV4cGwgaW5uZXIgcyAoaSArIDIpIGFjYyBiZWdcbiAgICAgIHwgJ3snIC0+XG4gICAgICAgIGxldCAodCwgaScpID0gZXhwbCB0cnVlIChpICsgMSkgKGkgKyAxKSBbXSBbXCJcIl0gaW5cbiAgICAgICAgZXhwbCBpbm5lciBpJyBpJyBhY2NcbiAgICAgICAgICAobXVsIGJlZyAobXVsIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldIHQpKVxuICAgICAgfCAnLCcgd2hlbiBpbm5lciAtPlxuICAgICAgICBleHBsIGlubmVyIChpICsgMSkgKGkgKyAxKVxuICAgICAgICAgIChtdWwgYmVnIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldIEAgYWNjKSBbXCJcIl1cbiAgICAgIHwgJ30nIHdoZW4gaW5uZXIgLT5cbiAgICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gQCBhY2MsIGkgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIGV4cGwgaW5uZXIgcyAoaSArIDEpIGFjYyBiZWdcbiAgaW5cbiAgTGlzdC5yZXYgKGZzdCAoZXhwbCBmYWxzZSAwIDAgW10gW1wiXCJdKSlcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICByZV9waWVjZXMgICAgICAgICAgICAgICAgOiBSZS50IGxpc3Q7ICAoKiBsYXN0IHBpZWNlIGF0IGhlYWQgb2YgbGlzdC4gKilcbiAgICByZW1haW5pbmcgICAgICAgICAgICAgICAgOiBwaWVjZSBsaXN0OyAoKiBsYXN0IHBpZWNlIGF0IHRhaWwgb2YgbGlzdC4gKilcbiAgICBhbV9hdF9zdGFydF9vZl9wYXR0ZXJuICAgOiBib29sOyAgICAgICAoKiB0cnVlIGF0IHN0YXJ0IG9mIHBhdHRlcm4gKilcbiAgICBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgOiBib29sOyAgICAgICAoKiB0cnVlIGF0IHN0YXJ0IG9mIHBhdHRlcm4gb3IgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlciAnLycgKilcbiAgICBwYXRobmFtZSAgICAgICAgICAgICAgICAgOiBib29sO1xuICAgIG1hdGNoX2JhY2tzbGFzaGVzICAgICAgICA6IGJvb2w7XG4gICAgcGVyaW9kICAgICAgICAgICAgICAgICAgIDogYm9vbDtcbiAgfVxuXG4gIGxldCBjcmVhdGUgfnBlcmlvZCB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIHJlbWFpbmluZyA9XG4gICAge1xuICAgICAgcmVfcGllY2VzID0gW107XG4gICAgICBhbV9hdF9zdGFydF9vZl9wYXR0ZXJuID0gdHJ1ZTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA9IHRydWU7XG4gICAgICBwYXRobmFtZTtcbiAgICAgIG1hdGNoX2JhY2tzbGFzaGVzO1xuICAgICAgcGVyaW9kO1xuICAgICAgcmVtYWluaW5nO1xuICAgIH1cblxuICBsZXQgZXhwbGljaXRfcGVyaW9kIHQgPVxuICAgIHQucGVyaW9kICYmIChcbiAgICAgIHQuYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiB8fFxuICAgICAgKHQuYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ICYmIHQucGF0aG5hbWUpXG4gICAgKVxuXG4gIGxldCBleHBsaWNpdF9zbGFzaCB0ID0gdC5wYXRobmFtZVxuXG4gIGxldCBzbGFzaGVzIHQgPVxuICAgIGlmIHQubWF0Y2hfYmFja3NsYXNoZXMgdGhlbiBbJy8nOyAnXFxcXCddIGVsc2UgWycvJ11cblxuICBsZXQgYXBwZW5kID8oYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50PWZhbHNlKSB0IHBpZWNlID1cbiAgICB7IHQgd2l0aFxuICAgICAgcmVfcGllY2VzID0gcGllY2UgOjogdC5yZV9waWVjZXM7XG4gICAgICBhbV9hdF9zdGFydF9vZl9wYXR0ZXJuID0gZmFsc2U7XG4gICAgICBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQ7XG4gICAgfVxuXG4gIGxldCB0b19yZSB0ID0gUmUuc2VxIChMaXN0LnJldiB0LnJlX3BpZWNlcylcblxuICBsZXQgbmV4dCB0ID1cbiAgICBtYXRjaCB0LnJlbWFpbmluZyB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBwaWVjZSA6OiByZW1haW5pbmcgLT4gU29tZSAocGllY2UsIHsgdCB3aXRoIHJlbWFpbmluZyB9KVxuZW5kXG5cbmxldCBvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QgPVxuICBSZS5jb21wbCAoXG4gICAgTGlzdC5jb25jYXQgW1xuICAgICAgaWYgZXhwbGljaXRfc2xhc2ggIHRoZW4gTGlzdC5tYXAgUmUuY2hhciBzbGFzaGVzIGVsc2UgW107XG4gICAgICBpZiBleHBsaWNpdF9wZXJpb2QgdGhlbiBbUmUuY2hhciAnLiddIGVsc2UgW107XG4gICAgXVxuICApXG5cbmxldCBlbmNsb3NlZCBlbmNsb3NlZCA9XG4gIG1hdGNoIGVuY2xvc2VkIHdpdGhcbiAgfCBDaGFyIGMgLT4gUmUuY2hhciBjXG4gIHwgUmFuZ2UgKGxvdywgaGlnaCkgLT4gUmUucmcgbG93IGhpZ2hcblxubGV0IGVuY2xvc2VkX3NldCB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBraW5kIHNldCA9XG4gIGxldCBzZXQgPSBMaXN0Lm1hcCBlbmNsb3NlZCBzZXQgaW5cbiAgbGV0IGVuY2xvc3VyZSA9XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgfCBgQW55X29mIC0+IFJlLmFsdCBzZXRcbiAgICB8IGBBbnlfYnV0IC0+IFJlLmNvbXBsIHNldFxuICBpblxuICBSZS5pbnRlciBbZW5jbG9zdXJlOyBvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2RdXG5cbmxldCBleGFjdGx5IHN0YXRlIGMgPVxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbGV0IGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA9IExpc3QubWVtIGMgc2xhc2hlcyBpblxuICBsZXQgY2hhcnMgPSBpZiBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgdGhlbiBzbGFzaGVzIGVsc2UgW2NdIGluXG4gIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUuYWx0IChMaXN0Lm1hcCBSZS5jaGFyIGNoYXJzKSkgfmFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudFxuXG5sZXQgbWFueV9tYW55IHN0YXRlID1cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IHN0YXRlLlN0YXRlLnBlcmlvZCAmJiBzdGF0ZS5TdGF0ZS5wYXRobmFtZSBpblxuICBsZXQgZmlyc3RfZXhwbGljaXRfcGVyaW9kID0gU3RhdGUuZXhwbGljaXRfcGVyaW9kIHN0YXRlIGluXG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBsZXQgbWF0Y2hfY29tcG9uZW50IH5leHBsaWNpdF9wZXJpb2QgPVxuICAgIFJlLnNlcSBbXG4gICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kO1xuICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZSk7XG4gICAgXVxuICBpblxuICAoKiBXZSBtdXN0IG1hdGNoIGNvbXBvbmVudHMgaW5kaXZpZHVhbGx5IHdoZW4gW3BlcmlvZF0gZmxhZyBpcyBzZXQsXG4gICAgIG1ha2luZyBzdXJlIHRvIG5vdCBtYXRjaCBbXCJmb28vLmJhclwiXS4gKilcbiAgU3RhdGUuYXBwZW5kIHN0YXRlIChcbiAgICBSZS5zZXEgW1xuICAgICAgUmUub3B0IChtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZDpmaXJzdF9leHBsaWNpdF9wZXJpb2QpO1xuICAgICAgUmUucmVwIChcbiAgICAgICAgUmUuc2VxIFtcbiAgICAgICAgICBSZS5hbHQgKExpc3QubWFwIFJlLmNoYXIgc2xhc2hlcyk7XG4gICAgICAgICAgUmUub3B0IChtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZCk7XG4gICAgICAgIF1cbiAgICAgICk7XG4gICAgXSlcblxubGV0IG1hbnkgKHN0YXRlIDogU3RhdGUudCkgPVxuICBsZXQgZXhwbGljaXRfc2xhc2ggPSBTdGF0ZS5leHBsaWNpdF9zbGFzaCBzdGF0ZSBpblxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gU3RhdGUuZXhwbGljaXRfcGVyaW9kIHN0YXRlIGluXG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICAoKiBXaGV0aGVyIHdlIG11c3QgZXhwbGljaXRseSBtYXRjaCBwZXJpb2QgZGVwZW5kcyBvbiB0aGUgc3Vycm91bmRpbmcgY2hhcmFjdGVycywgYnV0XG4gICAgIHNsYXNoZXMgYXJlIGVhc3kgdG8gZXhwbGljaXQgbWF0Y2guIFRoaXMgY29uZGl0aW9uYWwgc3BsaXRzIG91dCBzb21lIHNpbXBsZSBjYXNlcy5cbiAgKilcbiAgaWYgbm90IGV4cGxpY2l0X3BlcmlvZCB0aGVuIGJlZ2luXG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCkpXG4gIGVuZCBlbHNlIGlmIG5vdCBleHBsaWNpdF9zbGFzaCB0aGVuIGJlZ2luXG4gICAgKCogSW4gdGhpcyBzdGF0ZSwgd2UgZXhwbGljaXRseSBtYXRjaCBwZXJpb2RzIG9ubHkgYXQgdGhlIHZlcnkgYmVnaW5uaW5nICopXG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5vcHQgKFxuICAgICAgUmUuc2VxIFtcbiAgICAgICAgb25lICAgICAgICAgfmV4cGxpY2l0X3NsYXNoOmZhbHNlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q7XG4gICAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDpmYWxzZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICAgIF1cbiAgICApKVxuICBlbmQgZWxzZSBiZWdpblxuICAgIGxldCBub3RfZW1wdHkgPVxuICAgICAgUmUuc2VxIFtcbiAgICAgICAgb25lICAgICAgICAgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDp0cnVlO1xuICAgICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICAgIF1cbiAgICBpblxuICAgICgqIFttYXliZV9lbXB0eV0gaXMgdGhlIGRlZmF1bHQgdHJhbnNsYXRpb24gb2YgTWFueSwgZXhjZXB0IGluIHNvbWUgc3BlY2lhbCBjYXNlcy5cbiAgICAqKVxuICAgIGxldCBtYXliZV9lbXB0eSA9IFJlLm9wdCBub3RfZW1wdHkgaW5cbiAgICBsZXQgZW5jbG9zZWRfc2V0IHN0YXRlIGtpbmQgc2V0ID1cbiAgICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUuYWx0IFtcbiAgICAgICAgZW5jbG9zZWRfc2V0IGtpbmQgc2V0IH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6dHJ1ZTtcbiAgICAgICAgUmUuc2VxIFtcbiAgICAgICAgICBub3RfZW1wdHk7XG4gICAgICAgICAgKCogU2luY2UgW25vdF9lbXB0eV0gbWF0Y2hlZCwgc3Vic2VxdWVudCBkb3RzIGFyZSBub3QgbGVhZGluZy4gKilcbiAgICAgICAgICBlbmNsb3NlZF9zZXQga2luZCBzZXQgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZTtcbiAgICAgICAgXTtcbiAgICAgIF0pXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb2thaGVhZCBzdGF0ZSA9XG4gICAgICBtYXRjaCBTdGF0ZS5uZXh0IHN0YXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgbWF5YmVfZW1wdHlcbiAgICAgICgqIGdsb2IgKiogPT09IGdsb2IgKiAuICopXG4gICAgICB8IFNvbWUgKE1hbnksIHN0YXRlKSAtPiBsb29rYWhlYWQgc3RhdGVcbiAgICAgIHwgU29tZSAoRXhhY3RseSBjLCBzdGF0ZSkgLT5cbiAgICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgICBTdGF0ZS5hcHBlbmQgc3RhdGVcbiAgICAgICAgICAgIChpZiBjID0gJy4nXG4gICAgICAgICAgICAgdGhlbiBub3RfZW1wdHlcbiAgICAgICAgICAgICBlbHNlIG1heWJlX2VtcHR5KVxuICAgICAgICBpblxuICAgICAgICBleGFjdGx5IHN0YXRlIGNcbiAgICAgICgqIGdsb2IgKj8gPT09IGdsb2IgPyogKilcbiAgICAgIHwgU29tZSAoT25lLCBzdGF0ZSkgLT4gU3RhdGUuYXBwZW5kIHN0YXRlIG5vdF9lbXB0eVxuICAgICAgfCBTb21lIChBbnlfb2YgZW5jbG9zZWQsIHN0YXRlKSAtPiBlbmNsb3NlZF9zZXQgc3RhdGUgYEFueV9vZiBlbmNsb3NlZFxuICAgICAgfCBTb21lIChBbnlfYnV0IGVuY2xvc2VkLCBzdGF0ZSkgLT4gZW5jbG9zZWRfc2V0IHN0YXRlIGBBbnlfYnV0IGVuY2xvc2VkXG4gICAgICAoKiAqIHRoZW4gKiogPT09ICoqICopXG4gICAgICB8IFNvbWUgKE1hbnlNYW55LCBzdGF0ZSkgLT4gbWFueV9tYW55IHN0YXRlXG4gICAgaW5cbiAgICBsb29rYWhlYWQgc3RhdGVcbiAgZW5kXG5cbmxldCBwaWVjZSBzdGF0ZSBwaWVjZSA9XG4gIGxldCBleHBsaWNpdF9zbGFzaCA9IFN0YXRlLmV4cGxpY2l0X3NsYXNoIHN0YXRlIGluXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIG1hdGNoIHBpZWNlIHdpdGhcbiAgfCBPbmUgLT4gU3RhdGUuYXBwZW5kIHN0YXRlIChvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QpXG4gIHwgTWFueSAtPiBtYW55IHN0YXRlXG4gIHwgQW55X29mIGVuY2xvc2VkIC0+XG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChlbmNsb3NlZF9zZXQgYEFueV9vZiB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBlbmNsb3NlZClcbiAgfCBBbnlfYnV0IGVuY2xvc2VkIC0+XG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChlbmNsb3NlZF9zZXQgYEFueV9idXQgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QgZW5jbG9zZWQpXG4gIHwgRXhhY3RseSBjIC0+IGV4YWN0bHkgc3RhdGUgY1xuICB8IE1hbnlNYW55IC0+IG1hbnlfbWFueSBzdGF0ZVxuXG5sZXQgZ2xvYiB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIH5wZXJpb2QgZ2xvYiA9XG4gIGxldCByZWMgbG9vcCBzdGF0ZSA9XG4gICAgbWF0Y2ggU3RhdGUubmV4dCBzdGF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IFN0YXRlLnRvX3JlIHN0YXRlXG4gICAgfCBTb21lIChwLCBzdGF0ZSkgLT4gbG9vcCAocGllY2Ugc3RhdGUgcClcbiAgaW5cbiAgbG9vcCAoU3RhdGUuY3JlYXRlIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCBnbG9iKVxuXG5sZXQgZ2xvYlxuICAgICAgPyhhbmNob3JlZCA9IGZhbHNlKVxuICAgICAgPyhwYXRobmFtZSA9IHRydWUpXG4gICAgICA/KG1hdGNoX2JhY2tzbGFzaGVzID0gZmFsc2UpXG4gICAgICA/KHBlcmlvZCA9IHRydWUpXG4gICAgICA/KGV4cGFuZF9icmFjZXMgPSBmYWxzZSlcbiAgICAgID8oZG91YmxlX2FzdGVyaXNrID0gdHJ1ZSlcbiAgICAgIHNcbiAgPVxuICBsZXQgdG9fcmUgcyA9XG4gICAgbGV0IHJlID0gZ2xvYiB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIH5wZXJpb2QgKG9mX3N0cmluZyB+ZG91YmxlX2FzdGVyaXNrIHMpIGluXG4gICAgaWYgYW5jaG9yZWRcbiAgICB0aGVuIFJlLndob2xlX3N0cmluZyByZVxuICAgIGVsc2UgcmVcbiAgaW5cbiAgaWYgZXhwYW5kX2JyYWNlc1xuICB0aGVuIFJlLmFsdCAoTGlzdC5tYXAgdG9fcmUgKGV4cGxvZGUgcykpXG4gIGVsc2UgdG9fcmUgc1xuXG5sZXQgZ2xvYicgP2FuY2hvcmVkIHBlcmlvZCBzID0gZ2xvYiA/YW5jaG9yZWQgfnBlcmlvZCBzXG5cbmxldCBnbG9ieCA/YW5jaG9yZWQgcyA9IGdsb2IgP2FuY2hvcmVkIH5leHBhbmRfYnJhY2VzOnRydWUgc1xuXG5sZXQgZ2xvYngnID9hbmNob3JlZCBwZXJpb2QgcyA9IGdsb2IgP2FuY2hvcmVkIH5leHBhbmRfYnJhY2VzOnRydWUgfnBlcmlvZCBzXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWRcblxubGV0IHBvc2l4X2NsYXNzX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJhbHBoYVwiICAtPiBSZS5hbHBoYVxuICB8IFwiYWxudW1cIiAgLT4gUmUuYWxudW1cbiAgfCBcImFzY2lpXCIgIC0+IFJlLmFzY2lpXG4gIHwgXCJibGFua1wiICAtPiBSZS5ibGFua1xuICB8IFwiY250cmxcIiAgLT4gUmUuY250cmxcbiAgfCBcImRpZ2l0XCIgIC0+IFJlLmRpZ2l0XG4gIHwgXCJsb3dlclwiICAtPiBSZS5sb3dlclxuICB8IFwicHJpbnRcIiAgLT4gUmUucHJpbnRcbiAgfCBcInNwYWNlXCIgIC0+IFJlLnNwYWNlXG4gIHwgXCJ1cHBlclwiICAtPiBSZS51cHBlclxuICB8IFwid29yZFwiICAgLT4gUmUud29yZGNcbiAgfCBcInB1bmN0XCIgIC0+IFJlLnB1bmN0XG4gIHwgXCJncmFwaFwiICAtPiBSZS5ncmFwaFxuICB8IFwieGRpZ2l0XCIgLT4gUmUueGRpZ2l0XG4gIHwgY2xhc3NfICAgLT4gaW52YWxpZF9hcmcgKFwiSW52YWxpZCBwY3JlIGNsYXNzOiBcIiBeIGNsYXNzXylcblxubGV0IHBvc2l4X2NsYXNzX3N0cmluZ3MgPVxuICBbIFwiYWxwaGFcIiA7IFwiYWxudW1cIiA7IFwiYXNjaWlcIlxuICA7IFwiYmxhbmtcIiA7IFwiY250cmxcIiA7IFwiZGlnaXRcIlxuICA7IFwibG93ZXJcIiA7IFwicHJpbnRcIiA7IFwic3BhY2VcIlxuICA7IFwidXBwZXJcIiA7IFwid29yZFwiICA7IFwicHVuY3RcIlxuICA7IFwiZ3JhcGhcIiA7IFwieGRpZ2l0XCIgXVxuXG5sZXQgcGFyc2UgbXVsdGlsaW5lIGRvbGxhcl9lbmRvbmx5IGRvdGFsbCB1bmdyZWVkeSBzID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCB0ZXN0IGMgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICBsZXQgYWNjZXB0IGMgPSBsZXQgciA9IHRlc3QgYyBpbiBpZiByIHRoZW4gaW5jciBpOyByIGluXG4gIGxldCBhY2NlcHRfcyBzJyA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcycgaW5cbiAgICB0cnlcbiAgICAgIGZvciBqID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIHRyeSBpZiBzJy5bal0gPD4gcy5bIWkgKyBqXSB0aGVuIHJhaXNlIEV4aXRcbiAgICAgICAgd2l0aCBfIC0+IHJhaXNlIEV4aXRcbiAgICAgIGRvbmU7XG4gICAgICBpIDo9ICFpICsgbGVuO1xuICAgICAgdHJ1ZVxuICAgIHdpdGggRXhpdCAtPiBmYWxzZSBpblxuICBsZXQgZ2V0ICgpID0gbGV0IHIgPSBzLlshaV0gaW4gaW5jciBpOyByIGluXG4gIGxldCB1bmdldCAoKSA9IGRlY3IgaSBpblxuICBsZXQgZ3JlZWR5X21vZCByID1cbiAgICBsZXQgZ3IgPSBhY2NlcHQgJz8nIGluXG4gICAgbGV0IGdyID0gaWYgdW5ncmVlZHkgdGhlbiBub3QgZ3IgZWxzZSBnciBpblxuICAgIGlmIGdyIHRoZW4gUmUubm9uX2dyZWVkeSByIGVsc2UgUmUuZ3JlZWR5IHJcbiAgaW5cbiAgbGV0IHJlYyByZWdleHAgKCkgPSByZWdleHAnIChicmFuY2ggKCkpXG4gIGFuZCByZWdleHAnIGxlZnQgPVxuICAgIGlmIGFjY2VwdCAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdCAnfCcgfHwgdGVzdCAnKScgdGhlbiBSZS5zZXEgKExpc3QucmV2IGxlZnQpXG4gICAgZWxzZSBicmFuY2gnIChwaWVjZSAoKSA6OiBsZWZ0KVxuICBhbmQgcGllY2UgKCkgPVxuICAgIGxldCByID0gYXRvbSAoKSBpblxuICAgIGlmIGFjY2VwdCAnKicgdGhlbiBncmVlZHlfbW9kIChSZS5yZXAgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBncmVlZHlfbW9kIChSZS5yZXAxIHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJz8nIHRoZW4gZ3JlZWR5X21vZCAoUmUub3B0IHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJ3snIHRoZW5cbiAgICAgIG1hdGNoIGludGVnZXIgKCkgd2l0aFxuICAgICAgICBTb21lIGkgLT5cbiAgICAgICAgICBsZXQgaiA9IGlmIGFjY2VwdCAnLCcgdGhlbiBpbnRlZ2VyICgpIGVsc2UgU29tZSBpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJ30nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIGogd2l0aFxuICAgICAgICAgICAgU29tZSBqIHdoZW4gaiA8IGkgLT4gcmFpc2UgUGFyc2VfZXJyb3IgfCBfIC0+ICgpXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGdyZWVkeV9tb2QgKFJlLnJlcG4gciBpIGopXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICB1bmdldCAoKTsgclxuICAgIGVsc2VcbiAgICAgIHJcbiAgYW5kIGF0b20gKCkgPVxuICAgIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgaWYgZG90YWxsIHRoZW4gUmUuYW55IGVsc2UgUmUubm90bmxcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJygnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPycgdGhlbiBiZWdpblxuICAgICAgICBpZiBhY2NlcHQgJzonIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICByXG4gICAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnIycgdGhlbiBiZWdpblxuICAgICAgICAgIGNvbW1lbnQgKClcbiAgICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICc8JyB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lICgpIGluXG4gICAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgUmUuZ3JvdXAgfm5hbWUgclxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIFJlLmdyb3VwIHJcbiAgICAgIGVuZFxuICAgIGVuZCBlbHNlXG4gICAgaWYgYWNjZXB0ICdeJyB0aGVuIGJlZ2luXG4gICAgICBpZiBtdWx0aWxpbmUgdGhlbiBSZS5ib2wgZWxzZSBSZS5ib3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyQnIHRoZW4gYmVnaW5cbiAgICAgIGlmIG11bHRpbGluZSB0aGVuIFJlLmVvbCBlbHNlIGlmIGRvbGxhcl9lbmRvbmx5IHRoZW4gUmUubGVvbCBlbHNlIFJlLmVvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIChicmFja2V0IFtdKVxuICAgICAgZWxzZVxuICAgICAgICBSZS5hbHQgKGJyYWNrZXQgW10pXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdcXFxcJyB0aGVuIGJlZ2luXG4oKiBYWFhcbiAgIC0gQmFjay1yZWZlcmVuY2VzXG4gICAtIFxcY3ggKGNvbnRyb2wteCksIFxcZGRkXG4qKVxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAndycgLT5cbiAgICAgICAgICBSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIHwgJ1cnIC0+XG4gICAgICAgICAgUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIHwgJ3MnIC0+XG4gICAgICAgICAgUmUuc3BhY2VcbiAgICAgIHwgJ1MnIC0+XG4gICAgICAgICAgUmUuY29tcGwgW1JlLnNwYWNlXVxuICAgICAgfCAnZCcgLT5cbiAgICAgICAgICBSZS5kaWdpdFxuICAgICAgfCAnRCcgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuZGlnaXRdXG4gICAgICB8ICdiJyAtPlxuICAgICAgICAgIFJlLmFsdCBbUmUuYm93OyBSZS5lb3ddXG4gICAgICB8ICdCJyAtPlxuICAgICAgICAgIFJlLm5vdF9ib3VuZGFyeVxuICAgICAgfCAnQScgLT5cbiAgICAgICAgICBSZS5ib3NcbiAgICAgIHwgJ1onIC0+XG4gICAgICAgICAgUmUubGVvbFxuICAgICAgfCAneicgLT5cbiAgICAgICAgICBSZS5lb3NcbiAgICAgIHwgJ0cnIC0+XG4gICAgICAgICAgUmUuc3RhcnRcbiAgICAgIHwgJ2UnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx4MWInXG4gICAgICB8ICdmJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xceDBjJ1xuICAgICAgfCAnbicgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXG4nXG4gICAgICB8ICdyJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xccidcbiAgICAgIHwgJ3QnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx0J1xuICAgICAgfCAneCcgLT5cbiAgICAgICAgICBsZXQgYzEgPSBoZXhkaWdpdCAoKSBpblxuICAgICAgICAgIGxldCBjMiA9IGhleGRpZ2l0ICgpIGluXG4gICAgICAgICAgbGV0IGNvZGUgPSBjMSAqIDE2ICsgYzIgaW5cbiAgICAgICAgICBSZS5jaGFyIChjaGFyX29mX2ludCBjb2RlKVxuICAgICAgfCAnYScuLid6JyB8ICdBJy4uJ1onIC0+XG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgJzAnLi4nOScgLT5cbiAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICB8IGMgLT5cbiAgICAgICAgICBSZS5jaGFyIGNcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnKicgfCAnKycgfCAnPycgfCAneycgfCAnXFxcXCcgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAtPiBSZS5jaGFyIGNcbiAgICBlbmRcbiAgYW5kIGhleGRpZ2l0ICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCdcbiAgICB8ICdhJy4uJ2YnIGFzIGQgLT4gQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgICB8ICdBJy4uJ0YnIGFzIGQgLT4gQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbiAgICB8IF8gLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgYW5kIGludGVnZXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIE5vbmUgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IGludGVnZXInIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpXG4gICAgfCAgICAgXyAgICAgICAgLT4gdW5nZXQgKCk7IE5vbmVcbiAgYW5kIGludGVnZXInIGkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIFNvbWUgaSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT5cbiAgICAgICAgbGV0IGknID0gMTAgKiBpICsgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJykgaW5cbiAgICAgICAgaWYgaScgPCBpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGludGVnZXInIGknXG4gICAgfCBfIC0+XG4gICAgICAgIHVuZ2V0ICgpOyBTb21lIGlcbiAgYW5kIG5hbWUgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgKCdfJyB8ICdhJy4uJ3onIHwgJ0EnLi4nWicpIGFzIGMgLT5cbiAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAzMiBpblxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYztcbiAgICAgIG5hbWUnIGJcbiAgICB8IF8gLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgYW5kIG5hbWUnIGIgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgKCdfJyB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgfCAnMCcuLic5JykgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYztcbiAgICAgIG5hbWUnIGJcbiAgICB8ICc+JyAtPiBCdWZmZXIuY29udGVudHMgYlxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIG1hdGNoIGNoYXIgKCkgd2l0aFxuICAgICAgfCBgQ2hhciBjIC0+XG4gICAgICAgIGlmIGFjY2VwdCAnLScgdGhlbiBiZWdpblxuICAgICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgICBtYXRjaCBjaGFyICgpIHdpdGhcbiAgICAgICAgICAgICAgYENoYXIgYycgLT5cbiAgICAgICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICAgICAgfCBgU2V0IHN0JyAtPlxuICAgICAgICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogc3QnIDo6IHMpXG4gICAgICAgICAgZW5kXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IHMpXG4gICAgICB8IGBTZXQgc3QgLT4gYnJhY2tldCAoc3QgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgaWYgYyA9ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz0nIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZDtcbiAgICAgIGlmIGFjY2VwdCAnOicgdGhlblxuICAgICAgICBsZXQgY29tcGwgPSBhY2NlcHQgJ14nIGluXG4gICAgICAgIGxldCBjbHMgPVxuICAgICAgICAgIHRyeSBMaXN0LmZpbmQgYWNjZXB0X3MgcG9zaXhfY2xhc3Nfc3RyaW5nc1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIFBhcnNlX2Vycm9yIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0X3MgXCI6XVwiKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBsZXQgcmUgPVxuICAgICAgICAgIGxldCBwb3NpeF9jbGFzcyA9IHBvc2l4X2NsYXNzX29mX3N0cmluZyBjbHMgaW5cbiAgICAgICAgICBpZiBjb21wbCB0aGVuIFJlLmNvbXBsIFtwb3NpeF9jbGFzc10gZWxzZSBwb3NpeF9jbGFzcyBpblxuICAgICAgICBgU2V0IChyZSlcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdCAnLicpIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZDtcbiAgICAgICAgaWYgbm90IChhY2NlcHQgJ10nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBgQ2hhciBjXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBgQ2hhciBjXG4gICAgZW5kIGVsc2UgaWYgYyA9ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4oKiBYWFhcbiAgIFxcMTI3LCAuLi5cbiopXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgJ2InIC0+IGBDaGFyICdcXDAwOCdcbiAgICAgIHwgJ24nIC0+IGBDaGFyICdcXG4nICgqWFhYKilcbiAgICAgIHwgJ3InIC0+IGBDaGFyICdcXHInICgqWFhYKilcbiAgICAgIHwgJ3QnIC0+IGBDaGFyICdcXHQnICgqWFhYKilcbiAgICAgIHwgJ3cnIC0+IGBTZXQgKFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXSlcbiAgICAgIHwgJ1cnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddKVxuICAgICAgfCAncycgLT4gYFNldCAoUmUuc3BhY2UpXG4gICAgICB8ICdTJyAtPiBgU2V0IChSZS5jb21wbCBbUmUuc3BhY2VdKVxuICAgICAgfCAnZCcgLT4gYFNldCAoUmUuZGlnaXQpXG4gICAgICB8ICdEJyAtPiBgU2V0IChSZS5jb21wbCBbUmUuZGlnaXRdKVxuICAgICAgfCAnYScuLid6JyB8ICdBJy4uJ1onIC0+XG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgJzAnLi4nOScgLT5cbiAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBgQ2hhciBjXG4gICAgZW5kIGVsc2VcbiAgICAgIGBDaGFyIGNcbiAgYW5kIGNvbW1lbnQgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGlmIGFjY2VwdCAnKScgdGhlbiBSZS5lcHNpbG9uIGVsc2UgYmVnaW4gaW5jciBpOyBjb21tZW50ICgpIGVuZFxuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxudHlwZSBvcHQgPVxuICBbIGBVbmdyZWVkeSB8IGBEb3RhbGwgfCBgRG9sbGFyX2VuZG9ubHlcbiAgfCBgTXVsdGlsaW5lIHwgYEFuY2hvcmVkIHwgYENhc2VsZXNzIF1cblxubGV0IHJlICA/KG9wdHMgPSBbXSkgcyA9XG4gIGxldCByID1cbiAgICBwYXJzZVxuICAgICAgKExpc3QubWVtcSBgTXVsdGlsaW5lIG9wdHMpIChMaXN0Lm1lbXEgYERvbGxhcl9lbmRvbmx5IG9wdHMpXG4gICAgICAoTGlzdC5tZW1xIGBEb3RhbGwgb3B0cykgKExpc3QubWVtcSBgVW5ncmVlZHkgb3B0cylcbiAgICAgIHNcbiAgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYEFuY2hvcmVkIG9wdHMgdGhlbiBSZS5zZXEgW1JlLnN0YXJ0OyByXSBlbHNlIHIgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYENhc2VsZXNzIG9wdHMgdGhlbiBSZS5ub19jYXNlIHIgZWxzZSByIGluXG4gIHJcblxubGV0IGNvbXBpbGUgPSBSZS5jb21waWxlXG5sZXQgY29tcGlsZV9wYXQgPyhvcHRzID0gW10pIHMgPSBjb21waWxlIChyZSB+b3B0cyBzKVxuIiwibW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3IgPSBQZXJsLlBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZCA9IFBlcmwuTm90X3N1cHBvcnRlZFxuXG50eXBlIHJlZ2V4cCA9IFJlLnJlXG5cbnR5cGUgZmxhZyA9IFsgYENBU0VMRVNTIHwgYE1VTFRJTElORSB8IGBBTkNIT1JFRCB8IGBET1RBTEwgXVxuXG50eXBlIHNwbGl0X3Jlc3VsdCA9XG4gIHwgVGV4dCAgb2Ygc3RyaW5nXG4gIHwgRGVsaW0gb2Ygc3RyaW5nXG4gIHwgR3JvdXAgb2YgaW50ICogc3RyaW5nXG4gIHwgTm9Hcm91cFxuXG50eXBlIGdyb3VwcyA9IENvcmUuR3JvdXAudFxuXG5sZXQgcmUgPyhmbGFncyA9IFtdKSBwYXQgPVxuICBsZXQgb3B0cyA9IExpc3QubWFwIChmdW5jdGlvblxuICAgIHwgYENBU0VMRVNTIC0+IGBDYXNlbGVzc1xuICAgIHwgYE1VTFRJTElORSAtPiBgTXVsdGlsaW5lXG4gICAgfCBgQU5DSE9SRUQgLT4gYEFuY2hvcmVkXG4gICAgfCBgRE9UQUxMIC0+IGBEb3RhbGxcbiAgKSBmbGFncyBpblxuICBQZXJsLnJlIH5vcHRzIHBhdFxuXG5sZXQgcmVnZXhwID9mbGFncyBwYXQgPSBSZS5jb21waWxlIChyZSA/ZmxhZ3MgcGF0KVxuXG5sZXQgZXh0cmFjdCB+cmV4IHMgPVxuICBSZS5Hcm91cC5hbGwgKFJlLmV4ZWMgcmV4IHMpXG5cbmxldCBleGVjIH5yZXggP3BvcyBzID1cbiAgUmUuZXhlYyByZXggP3BvcyBzXG5cbmxldCBnZXRfc3Vic3RyaW5nIHMgaSA9XG4gIFJlLkdyb3VwLmdldCBzIGlcblxubGV0IG5hbWVzIHJleCA9XG4gIFJlLmdyb3VwX25hbWVzIHJleFxuICB8PiBMaXN0Lm1hcCBmc3RcbiAgfD4gQXJyYXkub2ZfbGlzdFxuXG5sZXQgZ2V0X25hbWVkX3N1YnN0cmluZyByZXggbmFtZSBzID1cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgIHwgKG4sIGkpIDo6IHJlbSB3aGVuIG4gPSBuYW1lIC0+XG4gICAgICAgYmVnaW5cbiAgICAgICAgIHRyeSBnZXRfc3Vic3RyaW5nIHMgaVxuICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gbG9vcCByZW1cbiAgICAgICBlbmRcbiAgICB8IF8gOjogcmVtIC0+IGxvb3AgcmVtXG4gIGluXG4gIGxvb3AgKFJlLmdyb3VwX25hbWVzIHJleClcblxubGV0IGdldF9zdWJzdHJpbmdfb2ZzIHMgaSA9XG4gIFJlLkdyb3VwLm9mZnNldCBzIGlcblxubGV0IHBtYXRjaCB+cmV4IHMgPVxuICBSZS5leGVjcCByZXggc1xuXG5sZXQgc3Vic3RpdHV0ZSB+cmV4IH5zdWJzdCBzdHIgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgcmVjIGxvb3AgcG9zID1cbiAgICBpZiBwb3MgPj0gU3RyaW5nLmxlbmd0aCBzdHIgdGhlblxuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICBlbHNlIGlmIFJlLmV4ZWNwIH5wb3MgcmV4IHN0ciB0aGVuIChcbiAgICAgIGxldCBzcyA9IFJlLmV4ZWMgfnBvcyByZXggc3RyIGluXG4gICAgICBsZXQgc3RhcnQsIGZpbiA9IFJlLkdyb3VwLm9mZnNldCBzcyAwIGluXG4gICAgICBsZXQgcGF0ID0gUmUuR3JvdXAuZ2V0IHNzIDAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIgc3RyIHBvcyAoc3RhcnQgLSBwb3MpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3Vic3QgcGF0KTtcbiAgICAgIGxvb3AgZmluXG4gICAgKSBlbHNlIChcbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIgc3RyIHBvcyAoU3RyaW5nLmxlbmd0aCBzdHIgLSBwb3MpO1xuICAgICAgbG9vcCAoU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgKVxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IH5yZXggc3RyID1cbiAgbGV0IHJlYyBsb29wIGFjY3UgcG9zID1cbiAgICBpZiBwb3MgPj0gU3RyaW5nLmxlbmd0aCBzdHIgdGhlblxuICAgICAgTGlzdC5yZXYgYWNjdVxuICAgIGVsc2UgaWYgUmUuZXhlY3AgfnBvcyByZXggc3RyIHRoZW4gKFxuICAgICAgbGV0IHNzID0gUmUuZXhlYyB+cG9zIHJleCBzdHIgaW5cbiAgICAgIGxldCBzdGFydCwgZmluID0gUmUuR3JvdXAub2Zmc2V0IHNzIDAgaW5cbiAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgcG9zIChzdGFydCAtIHBvcykgaW5cbiAgICAgIGxvb3AgKHMgOjogYWNjdSkgZmluXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgcG9zIChTdHJpbmcubGVuZ3RoIHN0ciAtIHBvcykgaW5cbiAgICAgIGxvb3AgKHMgOjogYWNjdSkgKFN0cmluZy5sZW5ndGggc3RyKVxuICAgICkgaW5cbiAgbG9vcCBbXSAwXG5cbigqIEZyb20gUENSRSAqKVxubGV0IHN0cmluZ191bnNhZmVfc3ViIHMgb2ZzIGxlbiA9XG4gIGxldCByID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBCeXRlcy51bnNhZmVfYmxpdCBzIG9mcyByIDAgbGVuO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJcblxubGV0IHF1b3RlIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgKGxlbiBsc2wgMSkgaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICB8ICdcXFxcJyB8ICdeJyB8ICckJyB8ICcuJyB8ICdbJyB8ICd8J1xuICAgIHwgJygnICB8ICcpJyB8ICc/JyB8ICcqJyB8ICcrJyB8ICd7JyBhcyBjIC0+XG4gICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zICdcXFxcJztcbiAgICAgIGluY3IgcG9zO1xuICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgIXBvcyBjOyBpbmNyIHBvc1xuICAgIHwgYyAtPiBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zXG4gIGRvbmU7XG4gIHN0cmluZ191bnNhZmVfc3ViIGJ1ZiAwICFwb3NcblxubGV0IGZ1bGxfc3BsaXQgPyhtYXg9MCkgfnJleCBzID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzID0gMCB0aGVuIFtdXG4gIGVsc2UgaWYgbWF4ID0gMSB0aGVuIFtUZXh0IHNdXG4gIGVsc2VcbiAgICBsZXQgcmVzdWx0cyA9IFJlLnNwbGl0X2Z1bGwgcmV4IHMgaW5cbiAgICBsZXQgbWF0Y2hlcyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuY3Rpb25cbiAgICAgICAgfCBgVGV4dCBzIC0+IFtUZXh0IHNdXG4gICAgICAgIHwgYERlbGltIGQgLT5cbiAgICAgICAgICBsZXQgbWF0Y2hlcyA9IFJlLkdyb3VwLmFsbF9vZmZzZXQgZCBpblxuICAgICAgICAgIGxldCBkZWxpbSA9IFJlLkdyb3VwLmdldCBkIDAgaW5cbiAgICAgICAgICAoRGVsaW0gZGVsaW0pOjooXG4gICAgICAgICAgICBsZXQgbCA9IHJlZiBbXSBpblxuICAgICAgICAgICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBtYXRjaGVzIC0gMSBkb1xuICAgICAgICAgICAgICBsIDo9XG4gICAgICAgICAgICAgICAgKGlmIG1hdGNoZXMuKGkpID0gKC0xLCAtMSlcbiAgICAgICAgICAgICAgICAgdGhlbiBOb0dyb3VwXG4gICAgICAgICAgICAgICAgIGVsc2UgR3JvdXAgKGksIFJlLkdyb3VwLmdldCBkIGkpKVxuICAgICAgICAgICAgICAgIDo6KCFsKVxuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgIExpc3QucmV2ICFsKSkgcmVzdWx0cyBpblxuICAgIExpc3QuY29uY2F0IG1hdGNoZXNcblxuXG50eXBlIHN1YnN0cmluZ3MgPSBHcm91cC50XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG4oKlxuV2hhdCB3ZSBjb3VsZCAoc2hvdWxkPykgZG86XG4tIGEqID09PiBsb25nZXN0ICgoc2hvcnRlc3QgKG5vX2dyb3VwIGEpKiApLCBhIHwgKCkpICAoISEhKVxuLSBhYmMgdW5kZXJzdG9vZCBhcyAoYWIpY1xuLSBcIigoYT8pfGIpXCIgYWdhaW5zdCBcImFiXCIgc2hvdWxkIG5vdCBiaW5kIHRoZSBmaXJzdCBzdWJwYXR0ZXJuIHRvIGFueXRoaW5nXG5cbk5vdGUgdGhhdCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gaGFuZGxlIFwiKCgoYWIpYylkKWVcIiBlZmZpY2llbnRseVxuKilcbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcGFyc2UgbmV3bGluZSBzID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCB0ZXN0IGMgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICBsZXQgYWNjZXB0IGMgPSBsZXQgciA9IHRlc3QgYyBpbiBpZiByIHRoZW4gaW5jciBpOyByIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cbiAgbGV0IHVuZ2V0ICgpID0gZGVjciBpIGluXG5cbiAgbGV0IHJlYyByZWdleHAgKCkgPSByZWdleHAnIChicmFuY2ggKCkpXG4gIGFuZCByZWdleHAnIGxlZnQgPVxuICAgIGlmIGFjY2VwdCAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdCAnfCcgfHwgdGVzdCAnKScgdGhlbiBSZS5zZXEgKExpc3QucmV2IGxlZnQpXG4gICAgZWxzZSBicmFuY2gnIChwaWVjZSAoKSA6OiBsZWZ0KVxuICBhbmQgcGllY2UgKCkgPVxuICAgIGxldCByID0gYXRvbSAoKSBpblxuICAgIGlmIGFjY2VwdCAnKicgdGhlbiBSZS5yZXAgKFJlLm5lc3QgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBSZS5yZXAxIChSZS5uZXN0IHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJz8nIHRoZW4gUmUub3B0IHIgZWxzZVxuICAgIGlmIGFjY2VwdCAneycgdGhlblxuICAgICAgbWF0Y2ggaW50ZWdlciAoKSB3aXRoXG4gICAgICAgIFNvbWUgaSAtPlxuICAgICAgICAgIGxldCBqID0gaWYgYWNjZXB0ICcsJyB0aGVuIGludGVnZXIgKCkgZWxzZSBTb21lIGkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnfScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgICAgICAgICBTb21lIGogd2hlbiBqIDwgaSAtPiByYWlzZSBQYXJzZV9lcnJvciB8IF8gLT4gKClcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgUmUucmVwbiAoUmUubmVzdCByKSBpIGpcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIHVuZ2V0ICgpOyByXG4gICAgZWxzZVxuICAgICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBpZiBuZXdsaW5lIHRoZW4gUmUubm90bmwgZWxzZSBSZS5hbnlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJygnIHRoZW4gYmVnaW5cbiAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBSZS5ncm91cCByXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5ib2wgZWxzZSBSZS5ib3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyQnIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5lb2wgZWxzZSBSZS5lb3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5kaWZmIChSZS5jb21wbCAoYnJhY2tldCBbXSkpIChSZS5jaGFyICdcXG4nKVxuICAgICAgZWxzZVxuICAgICAgICBSZS5hbHQgKGJyYWNrZXQgW10pXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJ3wnIHwgJygnIHwgJyknIHwgJyonIHwgJysnIHwgJz8nXG4gICAgICB8ICdbJyB8ICcuJyB8ICdeJyB8ICckJyB8ICd7JyB8ICdcXFxcJyBhcyBjIC0+IFJlLmNoYXIgY1xuICAgICAgfCAgICAgICAgICAgICAgICAgXyAgICAgICAgICAgICAgICAgICAgICAgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnKicgfCAnKycgfCAnPycgfCAneycgfCAnXFxcXCcgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAtPiBSZS5jaGFyIGNcbiAgICBlbmRcbiAgYW5kIGludGVnZXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIE5vbmUgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IGludGVnZXInIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpXG4gICAgfCAgICAgXyAgICAgICAgLT4gdW5nZXQgKCk7IE5vbmVcbiAgYW5kIGludGVnZXInIGkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIFNvbWUgaSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT5cbiAgICAgICAgbGV0IGknID0gMTAgKiBpICsgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJykgaW5cbiAgICAgICAgaWYgaScgPCBpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGludGVnZXInIGknXG4gICAgfCBfIC0+XG4gICAgICAgIHVuZ2V0ICgpOyBTb21lIGlcbiAgYW5kIGJyYWNrZXQgcyA9XG4gICAgaWYgcyA8PiBbXSAmJiBhY2NlcHQgJ10nIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgICBsZXQgYyA9IGNoYXIgKCkgaW5cbiAgICAgIGlmIGFjY2VwdCAnLScgdGhlbiBiZWdpblxuICAgICAgICBpZiBhY2NlcHQgJ10nIHRoZW4gUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHMgZWxzZSBiZWdpblxuICAgICAgICAgIGxldCBjJyA9IGNoYXIgKCkgaW5cbiAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IHMpXG4gICAgZW5kXG4gIGFuZCBjaGFyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgIGlmIGMgPSAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc9JyB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc6JyB0aGVuIGJlZ2luXG4gICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWQgKCpYWFgqKVxuICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdCAnLicpIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZDtcbiAgICAgICAgaWYgbm90IChhY2NlcHQgJ10nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBjXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBjXG4gICAgZW5kIGVsc2VcbiAgICAgIGNcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZ2V4cCAoKSBpblxuICBpZiBub3QgKGVvcyAoKSkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgcmVzXG5cbnR5cGUgb3B0ID0gW2BJQ2FzZSB8IGBOb1N1YiB8IGBOZXdsaW5lXVxuXG5sZXQgcmUgPyhvcHRzID0gW10pIHMgPVxuICBsZXQgciA9IHBhcnNlIChMaXN0Lm1lbXEgYE5ld2xpbmUgb3B0cykgcyBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgSUNhc2Ugb3B0cyB0aGVuIFJlLm5vX2Nhc2UgciBlbHNlIHIgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYE5vU3ViIG9wdHMgdGhlbiBSZS5ub19ncm91cCByIGVsc2UgciBpblxuICByXG5cbmxldCBjb21waWxlIHJlID0gUmUuY29tcGlsZSAoUmUubG9uZ2VzdCByZSlcbmxldCBjb21waWxlX3BhdCA/KG9wdHMgPSBbXSkgcyA9IGNvbXBpbGUgKHJlIH5vcHRzIHMpXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDEzIEdhYnJpZWwgUmFkYW5uZSA8ZHJ1cHlvZytjYW1sQHpvaG8uY29tPlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxubW9kdWxlIHR5cGUgVCA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICB0eXBlICgtJ2EsICdiKSBmdFxuICB2YWwgZm1hcCA6ICgnYSwgJ2IpIGZ0IC0+ICdhIHQgLT4gJ2IgdFxuXG4gIHR5cGUgJ2EgdGxpc3RcbiAgdmFsIG5pbCA6IHVuaXQgLT4gJ2EgdGxpc3RcbiAgdmFsIHNpbmdsZXRvbiA6ICdhIHQgLT4gJ2EgdGxpc3RcbiAgdmFsIGNvbnMgOiAnYSB0IC0+ICdhIHRsaXN0IC0+ICdhIHRsaXN0XG4gIHZhbCBhcHBlbmQgOiAnYSB0bGlzdCAtPiAnYSB0bGlzdCAtPiAnYSB0bGlzdFxuICB2YWwgbWFwIDogKCdhLCAnYikgZnQgLT4gJ2EgdGxpc3QgLT4gJ2IgdGxpc3RcbmVuZFxuXG5tb2R1bGUgdHlwZSBOb1dyYXAgPVxuICBUIHdpdGggdHlwZSAnYSB0ID0gJ2FcbiAgICAgYW5kIHR5cGUgJ2EgdGxpc3QgPSAnYSBsaXN0XG4gICAgIGFuZCB0eXBlICgtJ2EsICdiKSBmdCA9ICdhIC0+ICdiXG5cbm1vZHVsZSBOb1dyYXAgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2FcbiAgdHlwZSAnYSB0bGlzdCA9ICdhIGxpc3RcbiAgdHlwZSAoLSdhLCAnYikgZnQgPSAnYSAtPiAnYlxuICBleHRlcm5hbCByZXR1cm4gOiAnYSAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbiAgbGV0IGZtYXAgZiA6ICAnYSB0IC0+ICdiIHQgPSBmXG5cbiAgbGV0IG5pbCAoKSA9IFtdXG4gIGxldCBzaW5nbGV0b24geCA9IFt4XVxuICBsZXQgY29ucyB4IHhzID0geDo6eHNcbiAgbGV0IGFwcGVuZCB4IHk9IHhAeVxuICBsZXQgbWFwID0gTGlzdC5tYXBcbmVuZFxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAxOCBHYWJyaWVsIFJhZGFubmVcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cbnR5cGUgbmFtZSA9IHN0cmluZyAqIHN0cmluZ1xuXG4oKiogSW5wdXQgKilcblxudHlwZSBzaWduYWwgPSBbXG4gIHwgYENvbW1lbnQgb2Ygc3RyaW5nXG4gIHwgYEVuZF9lbGVtZW50XG4gIHwgYFN0YXJ0X2VsZW1lbnQgb2YgbmFtZSAqIChuYW1lICogc3RyaW5nKSBsaXN0XG4gIHwgYFRleHQgb2Ygc3RyaW5nIGxpc3Rcbl1cblxuZXhjZXB0aW9uIE1hbGZvcm1lZF9zdHJlYW1cblxubW9kdWxlIEltcG9ydFxuICAgIChYbWwgOiBYbWxfc2lncy5UKVxuPSBzdHJ1Y3RcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gYSBiIC0+IFhtbC5XLihjb25zIChyZXR1cm4gYSkgYikpXG4gICAgICBsIChYbWwuVy5uaWwgKCkpXG5cbiAgbGV0IG1rX2F0dHJpYnMgYXR0cnMgPVxuICAgICgqIFRPRE86IFRoaXMgaXMgbm90IHZlcnkgc3RydWN0dXJlZCAqKVxuICAgIGxldCBmICgoXyxuYW1lKSwgdikgPSBYbWwuc3RyaW5nX2F0dHJpYiBuYW1lIChYbWwuVy5yZXR1cm4gdikgaW5cbiAgICBMaXN0Lm1hcCBmIGF0dHJzXG5cbiAgbGV0IHJlYyBtayBjaGlsZHJlbiAoc2VxIDogc2lnbmFsIFNlcS50KSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBDb25zIChgQ29tbWVudCBzLCBxKSAtPlxuICAgICAgbWsgKFhtbC5jb21tZW50IHMgOjogY2hpbGRyZW4pIHFcbiAgICB8IENvbnMgKGBUZXh0IHMsIHEpIC0+XG4gICAgICBtayAoTGlzdC5tYXAgKGZ1biB4IC0+IFhtbC5wY2RhdGEgQEAgWG1sLlcucmV0dXJuIHgpIHMgQCBjaGlsZHJlbikgcVxuICAgIHwgQ29ucyAoYFN0YXJ0X2VsZW1lbnQgKChfLCBuYW1lKSwgYXR0cnMpLCBxKSAtPlxuICAgICAgbGV0IGEgPSBta19hdHRyaWJzIGF0dHJzIGluXG4gICAgICBsZXQgc3ViX2NoaWxkcmVuLCByZXN0ID0gbWsgW10gcSBpblxuICAgICAgbWsgKFhtbC5ub2RlIH5hIG5hbWUgc3ViX2NoaWxkcmVuIDo6IGNoaWxkcmVuKSByZXN0XG4gICAgfCBDb25zIChgRW5kX2VsZW1lbnQsIHJlc3QpIC0+XG4gICAgICBvZl9saXN0IChMaXN0LnJldiBjaGlsZHJlbiksIHJlc3RcbiAgICB8IE5pbCAtPlxuICAgICAgb2ZfbGlzdCAoTGlzdC5yZXYgY2hpbGRyZW4pLCBTZXEuZW1wdHlcblxuICBsZXQgb2Zfc2VxIHNlcSA9XG4gICAgbGV0IGwsIHJlc3QgPSBtayBbXSBzZXEgaW5cbiAgICBtYXRjaCByZXN0ICgpIHdpdGhcbiAgICB8IFNlcS5OaWwgLT4gbFxuICAgIHwgXyAtPiByYWlzZSBNYWxmb3JtZWRfc3RyZWFtXG5cbmVuZFxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAwOCBWaW5jZW50IEJhbGF0LCBNYXVyaWNpbyBGZXJuYW5kZXpcbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnQsIEdyw6lnb2lyZSBIZW5yeVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxubGV0IGlzX2NvbnRyb2wgYyA9XG4gIGxldCBjYyA9IENoYXIuY29kZSBjIGluXG4gIChjYyA8PSA4IHx8IGNjID0gMTEgfHwgY2MgPSAxMiB8fCAoMTQgPD0gY2MgJiYgY2MgPD0gMzEpIHx8IGNjID0gMTI3KVxuXG5sZXQgYWRkX3Vuc2FmZV9jaGFyIGIgPSBmdW5jdGlvblxuICB8ICc8JyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmx0O1wiXG4gIHwgJz4nIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImZ3Q7XCJcbiAgfCAnXCInIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImcXVvdDtcIlxuICB8ICcmJyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmFtcDtcIlxuICB8IGMgd2hlbiBpc19jb250cm9sIGMgLT5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJiNcIiA7XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2ludCAoQ2hhci5jb2RlIGMpKSA7XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjtcIlxuICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGIgY1xuXG5sZXQgZW5jb2RlX3Vuc2FmZV9jaGFyIHMgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgU3RyaW5nLml0ZXIgKGFkZF91bnNhZmVfY2hhciBiKSBzO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgZW5jb2RlX3Vuc2FmZV9jaGFyX2FuZF9hdCBzID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMpIGluXG4gIGxldCBmID0gZnVuY3Rpb25cbiAgICB8ICdAJyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJiM2NDtcIlxuICAgIHwgYyAtPiBhZGRfdW5zYWZlX2NoYXIgYiBjXG4gIGluXG4gIFN0cmluZy5pdGVyIGYgcztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IGNvbXBvc2VfZGVjbCA/KHZlcnNpb24gPSBcIjEuMFwiKSA/KGVuY29kaW5nID0gXCJVVEYtOFwiKSAoKSA9XG4gIEZvcm1hdC5zcHJpbnRmXG4gICAge3w8P3htbCB2ZXJzaW9uPVwiJXNcIiBlbmNvZGluZz1cIiVzXCI/Plxcbnx9XG4gICAgdmVyc2lvbiBlbmNvZGluZ1xuXG5sZXQgY29tcG9zZV9kb2N0eXBlIGR0IGFyZ3MgPVxuICBsZXQgcHBfYXJncyBmbXQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IGwgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiBQVUJMSUMgJWFcIlxuICAgICAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcDpGb3JtYXQucHBfcHJpbnRfc3BhY2VcbiAgICAgICAgICAgKGZ1biBmbXQgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVzXFxcIlwiKSlcbiAgICAgICAgbFxuICBpblxuICBGb3JtYXQuYXNwcmludGZcbiAgICBcIjwhRE9DVFlQRSAlcyVhPlwiXG4gICAgZHRcbiAgICBwcF9hcmdzIGFyZ3NcblxubGV0IHJlX2VuZF9jb21tZW50ID0gUmUuKGNvbXBpbGUgQEAgYWx0IFtcbiAgc2VxIFsgYm9zIDsgc3RyIFwiPlwiIF0gO1xuICBzZXEgWyBib3MgOyBzdHIgXCItPlwiIF0gO1xuICBzdHIgXCItLT5cIiA7XG4gIHN0ciBcIi0tIT5cIiA7XG5dKVxubGV0IGVzY2FwZV9jb21tZW50IHMgPVxuICBsZXQgZiBnID0gbWF0Y2ggUmUuR3JvdXAuZ2V0IGcgMCB3aXRoXG4gICAgfCBcIj5cIiAtPiBcIiZndDtcIlxuICAgIHwgXCItPlwiIC0+IFwiLSZndDtcIlxuICAgIHwgXCItLT5cIiAtPiBcIi0tJmd0O1wiXG4gICAgfCBcIi0tIT5cIiAtPiBcIi0tISZndDtcIlxuICAgIHwgcyAtPiBzXG4gIGluXG4gIFJlLnJlcGxhY2UgfmFsbDp0cnVlIHJlX2VuZF9jb21tZW50IH5mIHNcblxuKCogY29waWVkIGZvcm0ganNfb2Zfb2NhbWw6IGNvbXBpbGVyL2phdmFzY3JpcHQubWwgKilcbmxldCBwcF9udW1iZXIgZm10IHYgPVxuICBpZiB2ID0gaW5maW5pdHlcbiAgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIkluZmluaXR5XCJcbiAgZWxzZSBpZiB2ID0gbmVnX2luZmluaXR5XG4gIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCItSW5maW5pdHlcIlxuICBlbHNlIGlmIHYgPD4gdlxuICB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTmFOXCJcbiAgZWxzZVxuICAgIGxldCB2aW50ID0gaW50X29mX2Zsb2F0IHYgaW5cbiAgICAoKiBjb21waWxlciAxMDAwIGludG8gMWUzICopXG4gICAgaWYgZmxvYXRfb2ZfaW50IHZpbnQgPSB2XG4gICAgdGhlblxuICAgICAgbGV0IHJlYyBkaXYgbiBpID1cbiAgICAgICAgaWYgbiA8PiAwICYmIG4gbW9kIDEwID0gMFxuICAgICAgICB0aGVuIGRpdiAobi8xMCkgKHN1Y2MgaSlcbiAgICAgICAgZWxzZVxuICAgICAgICBpZiBpID4gMlxuICAgICAgICB0aGVuIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkZSVkXCIgbiBpXG4gICAgICAgIGVsc2UgRm9ybWF0LnBwX3ByaW50X2ludCBmbXQgdmludCBpblxuICAgICAgZGl2IHZpbnQgMFxuICAgIGVsc2VcbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xMmdcIiB2IGluXG4gICAgICBpZiB2ID0gZmxvYXRfb2Zfc3RyaW5nIHMxXG4gICAgICB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IHMxXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBzMiA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNWdcIiB2IGluXG4gICAgICAgIGlmIHYgPSBmbG9hdF9vZl9zdHJpbmcgczJcbiAgICAgICAgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBzMlxuICAgICAgICBlbHNlICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlLjE4Z1wiIHZcblxubGV0IHN0cmluZ19vZl9udW1iZXIgdiA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHBfbnVtYmVyIHZcblxubW9kdWxlIFV0ZjggPSBzdHJ1Y3RcbiAgdHlwZSB1dGY4ID0gc3RyaW5nXG5cbiAgbGV0IG5vcm1hbGl6ZSBzcmMgPVxuICAgIGxldCB3YXJuID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IGJ1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggc3JjKSBpblxuICAgIFV1dGYuU3RyaW5nLmZvbGRfdXRmXzhcbiAgICAgIChmdW4gXyBfIGQgLT5cbiAgICAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgICAgfCBgVWNoYXIgY29kZSAtPiBVdXRmLkJ1ZmZlci5hZGRfdXRmXzggYnVmZmVyIGNvZGVcbiAgICAgICAgIHwgYE1hbGZvcm1lZCBfIC0+XG4gICAgICAgICAgICAgICBVdXRmLkJ1ZmZlci5hZGRfdXRmXzggYnVmZmVyIFV1dGYudV9yZXA7XG4gICAgICAgICAgICAgICB3YXJuOj10cnVlKVxuICAgICAgKCkgc3JjO1xuICAgIChCdWZmZXIuY29udGVudHMgYnVmZmVyLCAhd2FybilcblxuICBsZXQgbm9ybWFsaXphdGlvbl9uZWVkZWQgc3JjID1cbiAgICBsZXQgcmVjIGxvb3Agc3JjIGkgbCA9XG4gICAgICBpIDwgbCAmJlxuICAgICAgbWF0Y2ggc3JjLltpXSB3aXRoXG4gICAgICAoKiBDaGFyYWN0ZXJzIHRoYXQgbmVlZCB0byBiZSBlbmNvZGVkIGluIEhUTUwgKilcbiAgICAgIHwgJ1xcMDM0JyB8ICdcXDAzOCcgfCAnXFwwNjAnIHwnXFwwNjInIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgKCogQVNDSUkgY2hhcmFjdGVycyAqKVxuICAgICAgfCAnXFwwMDknIHwgJ1xcMDEwJyB8ICdcXDAxMycgfCAnXFwwMzInLi4nXFwxMjYnIC0+XG4gICAgICAgICAgbG9vcCBzcmMgKGkgKyAxKSBsXG4gICAgICB8IF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgaW5cbiAgICBsb29wIHNyYyAwIChTdHJpbmcubGVuZ3RoIHNyYylcblxuICBsZXQgbm9ybWFsaXplX2h0bWwgc3JjID1cbiAgICBpZiBub3JtYWxpemF0aW9uX25lZWRlZCBzcmMgdGhlbiBiZWdpblxuICAgICAgbGV0IHdhcm4gPSByZWYgZmFsc2UgaW5cbiAgICAgIGxldCBidWZmZXIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHNyYykgaW5cbiAgICAgIFV1dGYuU3RyaW5nLmZvbGRfdXRmXzhcbiAgICAgICAgKGZ1biBfIF8gZCAtPlxuICAgICAgICAgICBtYXRjaCBkIHdpdGhcbiAgICAgICAgICAgfCBgVWNoYXIgdSAtPlxuICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICAgICAgICAgICAgICAgfCAzNCAtPlxuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZmZlciBcIiZxdW90O1wiXG4gICAgICAgICAgICAgICB8IDM4IC0+XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmZmVyIFwiJmFtcDtcIlxuICAgICAgICAgICAgICAgfCA2MCAtPlxuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZmZlciBcIiZsdDtcIlxuICAgICAgICAgICAgICAgfCA2MiAtPlxuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZmZlciBcIiZndDtcIlxuICAgICAgICAgICAgICAgfCBjb2RlIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IHUgPVxuICAgICAgICAgICAgICAgICAgICAgKCogSWxsZWdhbCBjaGFyYWN0ZXJzIGluIGh0bWxcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2hhcmFjdGVyX2VuY29kaW5nc19pbl9IVE1MXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCAqKVxuICAgICAgICAgICAgICAgICAgICAgaWYgKCogQS4gY29udHJvbCBDMCAqKVxuICAgICAgICAgICAgICAgICAgICAgICAoY29kZSA8PSAzMSAmJiBjb2RlIDw+IDkgJiYgY29kZSA8PiAxMCAmJiBjb2RlIDw+IDEzKVxuICAgICAgICAgICAgICAgICAgICAgICAoKiBCLiBERUwgKyBjb250cm9sIEMxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0gaW52YWxpZCBpbiBodG1sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0gZGlzY291cmFnZWQgaW4geG1sO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgMHg4NSBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgbGV0J3MgZGlzY2FyZCBpdCBhbnl3YXkgKilcbiAgICAgICAgICAgICAgICAgICAgICAgfHwgKGNvZGUgPj0gMTI3ICYmIGNvZGUgPD0gMTU5KVxuICAgICAgICAgICAgICAgICAgICAgICAoKiBDLiBVVEYtMTYgc3Vycm9nYXRlIGhhbHZlcyA6IGFscmVhZHkgZGlzY2FyZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHV1dGYgfHwgKGNvZGUgPj0gMHhEODAwICYmIGNvZGUgPD0gMHhERkZGKSAqKVxuICAgICAgICAgICAgICAgICAgICAgICAoKiBELiBCT00gcmVsYXRlZCAqKVxuICAgICAgICAgICAgICAgICAgICAgICB8fCBjb2RlIGxhbmQgMHhGRkZGID0gMHhGRkZFXG4gICAgICAgICAgICAgICAgICAgICAgIHx8IGNvZGUgbGFuZCAweEZGRkYgPSAweEZGRkZcbiAgICAgICAgICAgICAgICAgICAgIHRoZW4gKHdhcm46PXRydWU7IFV1dGYudV9yZXApXG4gICAgICAgICAgICAgICAgICAgICBlbHNlIHVcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIFV1dGYuQnVmZmVyLmFkZF91dGZfOCBidWZmZXIgdVxuICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgIHwgYE1hbGZvcm1lZCBfIC0+XG4gICAgICAgICAgICAgICBVdXRmLkJ1ZmZlci5hZGRfdXRmXzggYnVmZmVyIFV1dGYudV9yZXA7XG4gICAgICAgICAgICAgICB3YXJuOj10cnVlKVxuICAgICAgICAoKSBzcmM7XG4gICAgICAoQnVmZmVyLmNvbnRlbnRzIGJ1ZmZlciwgIXdhcm4pXG4gICAgZW5kIGVsc2VcbiAgICAgIChzcmMsIGZhbHNlKVxuXG5lbmRcblxubW9kdWxlIHR5cGUgVGFnTGlzdCA9IHNpZyB2YWwgZW1wdHl0YWdzIDogc3RyaW5nIGxpc3QgZW5kXG5cbigqKiBGb3JtYXQgYmFzZWQgcHJpbnRlcnMgKilcblxubGV0IHBwX25vb3AgX2ZtdCBfID0gKClcblxubW9kdWxlIE1ha2VfZm10XG4gICAgKFhtbCA6IFhtbF9zaWdzLkl0ZXJhYmxlKVxuICAgIChJIDogVGFnTGlzdCkgPVxuc3RydWN0XG4gIG9wZW4gWG1sXG5cbiAgbGV0IG9wZW5fYm94IGluZGVudCBmbXQgPSBpZiBpbmRlbnQgdGhlbiBGb3JtYXQucHBfb3Blbl9ib3ggZm10IDAgZWxzZSAoKVxuICBsZXQgY2xvc2VfYm94IGluZGVudCBmbXQgPSBpZiBpbmRlbnQgdGhlbiBGb3JtYXQucHBfY2xvc2VfYm94IGZtdCAoKSBlbHNlICgpXG4gIGxldCBzcCBpbmRlbnQgZm10ID1cbiAgICBpZiBpbmRlbnQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZm10ICgpIGVsc2UgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCJcbiAgbGV0IGN1dCBpbmRlbnQgZm10ID1cbiAgICBpZiBpbmRlbnQgdGhlbiBGb3JtYXQucHBfcHJpbnRfY3V0IGZtdCAoKSBlbHNlICgpXG5cbiAgbW9kdWxlIFMgPSBTZXQuTWFrZShTdHJpbmcpXG4gIGxldCBpc19lbXB0eXRhZyA9IG1hdGNoIEkuZW1wdHl0YWdzIHdpdGhcbiAgICB8IFtdIC0+IGZ1biBfIC0+IGZhbHNlXG4gICAgfCBsIC0+XG4gICAgICBsZXQgc2V0ID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHggLT4gUy5hZGQgeCBzKSBTLmVtcHR5IGwgaW5cbiAgICAgIGZ1biB4IC0+IFMubWVtIHggc2V0XG5cbiAgbGV0IHBwX2VuY29kZSBlbmNvZGUgaW5kZW50IGZtdCBzID1cbiAgICBsZXQgcyA9IGVuY29kZSBzIGluXG4gICAgaWYgaW5kZW50IHRoZW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbJWFAXVwiIEZvcm1hdC5wcF9wcmludF90ZXh0IHNcbiAgICBlbHNlXG4gICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBzXG5cbiAgbGV0IHBwX3NlcCBpbmRlbnQgPSBmdW5jdGlvblxuICAgIHwgU3BhY2UgLT4gZnVuIGZtdCAoKSAtPiBzcCBpbmRlbnQgZm10XG4gICAgfCBDb21tYSAtPiBmdW4gZm10ICgpIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiwldFwiIChzcCBpbmRlbnQpXG5cbiAgbGV0IHBwX2F0dHJpYl92YWx1ZSBlbmNvZGUgaW5kZW50IGZtdCBhID0gbWF0Y2ggYWNvbnRlbnQgYSB3aXRoXG4gICAgfCBBRmxvYXQgZiAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCJcXFwiJWFcXFwiXCIgcHBfbnVtYmVyIGZcbiAgICB8IEFJbnQgaSAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCJcXFwiJWRcXFwiXCIgaVxuICAgIHwgQVN0ciBzIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIlxcXCIlc1xcXCJcIiAoZW5jb2RlIHMpXG4gICAgfCBBU3RyTCAoc2VwLCBzbGlzdCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIlxcXCIlYVxcXCJcIlxuICAgICAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcDoocHBfc2VwIGluZGVudCBzZXApXG4gICAgICAgICAgIChwcF9lbmNvZGUgZW5jb2RlIGluZGVudCkpIHNsaXN0XG5cbiAgbGV0IHBwX2F0dHJpYiBlbmNvZGUgaW5kZW50IGZtdCBhID1cbiAgICBGb3JtYXQuZnByaW50ZiBmbXRcbiAgICAgIFwiJXQlcz0lYVwiIChzcCBpbmRlbnQpIChhbmFtZSBhKSAocHBfYXR0cmliX3ZhbHVlIGVuY29kZSBpbmRlbnQpIGFcblxuICBsZXQgcHBfYXR0cmlicyBlbmNvZGUgaW5kZW50ID1cbiAgICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwOnBwX25vb3AgKHBwX2F0dHJpYiBlbmNvZGUgaW5kZW50KVxuXG4gIGxldCBwcF90YWdfYW5kX2F0dHJpYnMgZW5jb2RlIGluZGVudCBmbXQgKHRhZywgYXR0cnMpID1cbiAgICBvcGVuX2JveCBpbmRlbnQgZm10IDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlcyVhJXRcIiB0YWcgKHBwX2F0dHJpYnMgZW5jb2RlIGluZGVudCkgYXR0cnMgKGN1dCBpbmRlbnQpO1xuICAgIGNsb3NlX2JveCBpbmRlbnQgZm10XG5cbiAgbGV0IHBwX2Nsb3NlZHRhZyBlbmNvZGUgaW5kZW50IGZtdCB0YWcgYXR0cnMgPVxuICAgIGlmIGlzX2VtcHR5dGFnIHRhZyB0aGVuXG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI8JWEvPlwiIChwcF90YWdfYW5kX2F0dHJpYnMgZW5jb2RlIGluZGVudCkgKHRhZywgYXR0cnMpXG4gICAgZWxzZSBiZWdpblxuICAgICAgb3Blbl9ib3ggaW5kZW50IGZtdCA7XG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI8JWE+JXQ8LyVzPlwiXG4gICAgICAgIChwcF90YWdfYW5kX2F0dHJpYnMgZW5jb2RlIGluZGVudCkgKHRhZywgYXR0cnMpXG4gICAgICAgIChjdXQgaW5kZW50KVxuICAgICAgICB0YWcgO1xuICAgICAgY2xvc2VfYm94IGluZGVudCBmbXRcbiAgICBlbmRcblxuICBsZXQgcmVjIHBwX3RhZyBlbmNvZGUgaW5kZW50IGZtdCB0YWcgYXR0cnMgY2hpbGRyZW4gPVxuICAgIG1hdGNoIGNoaWxkcmVuIHdpdGhcbiAgICB8IFtdIC0+IHBwX2Nsb3NlZHRhZyBlbmNvZGUgaW5kZW50IGZtdCB0YWcgYXR0cnNcbiAgICB8IF8gLT5cbiAgICAgIG9wZW5fYm94IGluZGVudCBmbXQgO1xuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiPCV0JWE+JXQlYSV0JXQ8LyVzPlwiXG4gICAgICAgIChvcGVuX2JveCBpbmRlbnQpXG4gICAgICAgIChwcF90YWdfYW5kX2F0dHJpYnMgZW5jb2RlIGluZGVudCkgKHRhZywgYXR0cnMpXG4gICAgICAgIChjdXQgaW5kZW50KVxuICAgICAgICAocHBfZWx0cyBlbmNvZGUgaW5kZW50KSBjaGlsZHJlblxuICAgICAgICAoY2xvc2VfYm94IGluZGVudClcbiAgICAgICAgKGN1dCBpbmRlbnQpXG4gICAgICAgIHRhZyA7XG4gICAgICBjbG9zZV9ib3ggaW5kZW50IGZtdFxuXG4gIGFuZCBwcF9lbHQgZW5jb2RlIGluZGVudCBmbXQgZWx0ID0gbWF0Y2ggY29udGVudCBlbHQgd2l0aFxuICAgIHwgQ29tbWVudCB0ZXh0ZSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiPCEtLSVzLS0+XCIgKGVzY2FwZV9jb21tZW50IHRleHRlKVxuXG4gICAgfCBFbnRpdHkgZSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJiVzO1wiIGVcblxuICAgIHwgUENEQVRBIHRleHRlIC0+XG4gICAgICBwcF9lbmNvZGUgZW5jb2RlIGluZGVudCBmbXQgdGV4dGVcblxuICAgIHwgRW5jb2RlZFBDREFUQSB0ZXh0ZSAtPlxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgdGV4dGVcblxuICAgIHwgTm9kZSAobmFtZSwgeGhfYXR0cnMsIHhoX3RhZ2xpc3QpIC0+XG4gICAgICBwcF90YWcgZW5jb2RlIGluZGVudCBmbXQgbmFtZSB4aF9hdHRycyB4aF90YWdsaXN0XG5cbiAgICB8IExlYWYgKG5hbWUsIHhoX2F0dHJzKSAtPlxuICAgICAgcHBfY2xvc2VkdGFnIGVuY29kZSBpbmRlbnQgZm10IG5hbWUgeGhfYXR0cnNcblxuICAgIHwgRW1wdHkgLT4gKClcblxuICBhbmQgcHBfZWx0cyBlbmNvZGUgaW5kZW50ID1cbiAgICBGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgfnBwX3NlcDooZnVuIGZtdCAoKSAtPiBjdXQgaW5kZW50IGZtdClcbiAgICAgIChwcF9lbHQgZW5jb2RlIGluZGVudClcblxuICBsZXQgcHAgPyhlbmNvZGU9ZW5jb2RlX3Vuc2FmZV9jaGFyKSA/KGluZGVudD1mYWxzZSkgKCkgPVxuICAgIHBwX2VsdCBlbmNvZGUgaW5kZW50XG5cbmVuZFxuXG5tb2R1bGUgTWFrZV90eXBlZF9mbXRcbiAgICAoWG1sIDogWG1sX3NpZ3MuSXRlcmFibGUpXG4gICAgKFR5cGVkX3htbCA6IFhtbF9zaWdzLlR5cGVkX3htbCB3aXRoIG1vZHVsZSBYbWwgOj0gWG1sKSA9XG5zdHJ1Y3RcblxuICBtb2R1bGUgUCA9IE1ha2VfZm10KFhtbCkoVHlwZWRfeG1sLkluZm8pXG5cbiAgKCogQWRkIGFuIHhtbG5zIHRhZyBvbiB0aGUgaHRtbCBlbGVtZW50IGlmIGl0J3Mgbm90IGFscmVhZHkgcHJlc2VudCAqKVxuICBsZXQgcHJlcGFyZV9kb2N1bWVudCBkb2MgPVxuICAgIGxldCBkb2MgPSBUeXBlZF94bWwuZG9jX3RvZWx0IGRvYyBpblxuICAgIG1hdGNoIFhtbC5jb250ZW50IGRvYyB3aXRoXG4gICAgfCBYbWwuTm9kZSAobiwgYSwgYykgLT5cbiAgICAgIGxldCBhID1cbiAgICAgICAgaWYgTGlzdC5leGlzdHMgKGZ1biBhIC0+IFhtbC5hbmFtZSBhID0gXCJ4bWxuc1wiKSBhXG4gICAgICAgIHRoZW4gYVxuICAgICAgICBlbHNlIFhtbC5zdHJpbmdfYXR0cmliIFwieG1sbnNcIiBUeXBlZF94bWwuSW5mby5uYW1lc3BhY2UgOjogYVxuICAgICAgaW5cbiAgICAgIFhtbC5ub2RlIH5hIG4gY1xuICAgIHwgXyAtPiBkb2NcblxuICBsZXQgcHBfZWx0ID8oZW5jb2RlPWVuY29kZV91bnNhZmVfY2hhcikgPyhpbmRlbnQ9ZmFsc2UpICgpIGZtdCBmb3JldCA9XG4gICAgUC5wcF9lbHQgZW5jb2RlIGluZGVudCBmbXQgKFR5cGVkX3htbC50b2VsdCBmb3JldClcblxuICBsZXQgcHAgPyhlbmNvZGUgPSBlbmNvZGVfdW5zYWZlX2NoYXIpID8oaW5kZW50PWZhbHNlKSA/YWR2ZXJ0ICgpIGZtdCBkb2MgPVxuICAgIEZvcm1hdC5wcF9vcGVuX3Zib3ggZm10IDAgO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzQCxcIiBUeXBlZF94bWwuSW5mby5kb2N0eXBlIDtcblxuICAgIGJlZ2luIG1hdGNoIGFkdmVydCB3aXRoXG4gICAgICB8IFNvbWUgcyAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCI8IS0tICVzIC0tPkAsXCIgc1xuICAgICAgfCBOb25lIC0+ICgpXG4gICAgZW5kIDtcblxuICAgIFAucHBfZWx0IGVuY29kZSBpbmRlbnQgZm10IChwcmVwYXJlX2RvY3VtZW50IGRvYykgO1xuICAgIEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpO1xuXG5lbmRcblxubW9kdWxlIE1ha2VcbiAgICAoWG1sIDogWG1sX3NpZ3MuSXRlcmFibGUpXG4gICAgKEkgOiBUYWdMaXN0KVxuICAgIChPIDogWG1sX3NpZ3MuT3V0cHV0KSA9XG5zdHJ1Y3RcblxuICBsZXQgKCsrKSA9IE8uY29uY2F0XG5cbiAgb3BlbiBYbWxcblxuICBsZXQgc2VwYXJhdG9yX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBTcGFjZSAtPiBcIiBcIlxuICAgIHwgQ29tbWEgLT4gXCIsIFwiXG5cbiAgbGV0IGF0dHJpYl92YWx1ZV90b19zdHJpbmcgZW5jb2RlIGEgPSBtYXRjaCBhY29udGVudCBhIHdpdGhcbiAgICB8IEFGbG9hdCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiXFxcIiVzXFxcIlwiIChzdHJpbmdfb2ZfbnVtYmVyIGYpXG4gICAgfCBBSW50IGkgLT4gUHJpbnRmLnNwcmludGYgXCJcXFwiJWRcXFwiXCIgaVxuICAgIHwgQVN0ciBzIC0+IFByaW50Zi5zcHJpbnRmIFwiXFxcIiVzXFxcIlwiIChlbmNvZGUgcylcbiAgICB8IEFTdHJMIChzZXAsIHNsaXN0KSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJcXFwiJXNcXFwiXCJcbiAgICAgICAgKGVuY29kZSAoU3RyaW5nLmNvbmNhdCAoc2VwYXJhdG9yX3RvX3N0cmluZyBzZXApIHNsaXN0KSlcblxuICBsZXQgYXR0cmliX3RvX3N0cmluZyBlbmNvZGUgYSA9XG4gICAgUHJpbnRmLnNwcmludGYgXCIlcz0lc1wiIChhbmFtZSBhKSAoYXR0cmliX3ZhbHVlX3RvX3N0cmluZyBlbmNvZGUgYSlcblxuICBsZXQgcmVjIHhoX3ByaW50X2F0dHJzIGVuY29kZSBhdHRycyA9IG1hdGNoIGF0dHJzIHdpdGhcbiAgICB8IFtdIC0+IE8uZW1wdHlcbiAgICB8IGF0dHI6OnF1ZXVlIC0+XG4gICAgICBPLnB1dCAoXCIgXCJeIGF0dHJpYl90b19zdHJpbmcgZW5jb2RlIGF0dHIpXG4gICAgICArKyB4aF9wcmludF9hdHRycyBlbmNvZGUgcXVldWVcblxuICBhbmQgeGhfcHJpbnRfY2xvc2VkdGFnIGVuY29kZSB0YWcgYXR0cnMgPVxuICAgIGlmIEkuZW1wdHl0YWdzID0gW10gfHwgTGlzdC5tZW0gdGFnIEkuZW1wdHl0YWdzXG4gICAgdGhlblxuICAgICAgKE8ucHV0IChcIjxcIl50YWcpXG4gICAgICAgKysgeGhfcHJpbnRfYXR0cnMgZW5jb2RlIGF0dHJzXG4gICAgICAgKysgTy5wdXQgXCIgLz5cIilcbiAgICBlbHNlXG4gICAgICAoTy5wdXQgKFwiPFwiXnRhZylcbiAgICAgICArKyB4aF9wcmludF9hdHRycyBlbmNvZGUgYXR0cnNcbiAgICAgICArKyBPLnB1dCAoXCI+PC9cIl50YWdeXCI+XCIpKVxuXG4gIGFuZCB4aF9wcmludF90YWcgZW5jb2RlIHRhZyBhdHRycyB0YWdsaXN0ID1cbiAgICBpZiB0YWdsaXN0ID0gW11cbiAgICB0aGVuIHhoX3ByaW50X2Nsb3NlZHRhZyBlbmNvZGUgdGFnIGF0dHJzXG4gICAgZWxzZVxuICAgICAgKE8ucHV0IChcIjxcIl50YWcpXG4gICAgICAgKysgeGhfcHJpbnRfYXR0cnMgZW5jb2RlIGF0dHJzXG4gICAgICAgKysgTy5wdXQgXCI+XCJcbiAgICAgICArKyB4aF9wcmludF90YWdsaXN0IGVuY29kZSB0YWdsaXN0XG4gICAgICAgKysgTy5wdXQgKFwiPC9cIl50YWdeXCI+XCIpKVxuXG4gIGFuZCBwcmludF9ub2RlcyBlbmNvZGUgbmFtZSB4aF9hdHRycyB4aF90YWdsaXN0IHF1ZXVlID1cbiAgICB4aF9wcmludF90YWcgZW5jb2RlIG5hbWUgeGhfYXR0cnMgeGhfdGFnbGlzdFxuICAgICsrIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHF1ZXVlXG5cbiAgYW5kIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHRhZ2xpc3QgPVxuICAgIG1hdGNoIHRhZ2xpc3Qgd2l0aFxuXG4gICAgfCBbXSAtPiBPLmVtcHR5XG5cbiAgICB8IGVsdCA6OiBxdWV1ZSAtPiBtYXRjaCBjb250ZW50IGVsdCB3aXRoXG5cbiAgICAgIHwgQ29tbWVudCB0ZXh0ZSAtPlxuICAgICAgICBPLnB1dCAoXCI8IS0tXCJeKGVuY29kZSB0ZXh0ZSleXCItLT5cIilcbiAgICAgICAgKysgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgcXVldWVcblxuICAgICAgfCBFbnRpdHkgZSAtPlxuICAgICAgICBPLnB1dCAoXCImXCJeZV5cIjtcIikgKCogbm8gZW5jb2RpbmcgKilcbiAgICAgICAgKysgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgcXVldWVcblxuICAgICAgfCBQQ0RBVEEgdGV4dGUgLT5cbiAgICAgICAgTy5wdXQgKGVuY29kZSB0ZXh0ZSlcbiAgICAgICAgKysgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgcXVldWVcblxuICAgICAgfCBFbmNvZGVkUENEQVRBIHRleHRlIC0+XG4gICAgICAgIE8ucHV0IHRleHRlXG4gICAgICAgICsrIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHF1ZXVlXG5cbiAgICAgIHwgTm9kZSAobmFtZSwgeGhfYXR0cnMsIHhoX3RhZ2xpc3QpIC0+XG4gICAgICAgIHByaW50X25vZGVzIGVuY29kZSBuYW1lIHhoX2F0dHJzIHhoX3RhZ2xpc3QgcXVldWVcblxuICAgICAgfCBMZWFmIChuYW1lLCB4aF9hdHRycykgLT5cbiAgICAgICAgcHJpbnRfbm9kZXMgZW5jb2RlIG5hbWUgeGhfYXR0cnMgW10gcXVldWVcblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICB4aF9wcmludF90YWdsaXN0IGVuY29kZSBxdWV1ZVxuXG4gIGxldCBwcmludF9saXN0ID8oZW5jb2RlID0gZW5jb2RlX3Vuc2FmZV9jaGFyKSBmb3JldCA9XG4gICAgTy5tYWtlICh4aF9wcmludF90YWdsaXN0IGVuY29kZSBmb3JldClcblxuZW5kXG5cbm1vZHVsZSBNYWtlX3R5cGVkXG4gICAgKFhtbCA6IFhtbF9zaWdzLkl0ZXJhYmxlKVxuICAgIChUeXBlZF94bWwgOiBYbWxfc2lncy5UeXBlZF94bWwgd2l0aCBtb2R1bGUgWG1sIDo9IFhtbClcbiAgICAoTyA6IFhtbF9zaWdzLk91dHB1dCkgPVxuc3RydWN0XG5cbiAgbW9kdWxlIFAgPSBNYWtlKFhtbCkoVHlwZWRfeG1sLkluZm8pKE8pXG4gIGxldCAoKyspID0gTy5jb25jYXRcblxuICBsZXQgcHJpbnRfbGlzdCA/KGVuY29kZSA9IGVuY29kZV91bnNhZmVfY2hhcikgZm9yZXQgPVxuICAgIE8ubWFrZSAoUC54aF9wcmludF90YWdsaXN0IGVuY29kZSAoTGlzdC5tYXAgVHlwZWRfeG1sLnRvZWx0IGZvcmV0KSlcblxuICBsZXQgcHJpbnQgPyhlbmNvZGUgPSBlbmNvZGVfdW5zYWZlX2NoYXIpID8oYWR2ZXJ0ID0gXCJcIikgZG9jID1cbiAgICBsZXQgZG9jID0gVHlwZWRfeG1sLmRvY190b2VsdCBkb2MgaW5cbiAgICBsZXQgZG9jID0gbWF0Y2ggWG1sLmNvbnRlbnQgZG9jIHdpdGhcbiAgICAgIHwgWG1sLk5vZGUgKG4sIGEsIGMpIC0+XG4gICAgICAgIGxldCBhID1cbiAgICAgICAgICBpZiBMaXN0LmV4aXN0cyAoZnVuIGEgLT4gWG1sLmFuYW1lIGEgPSBcInhtbG5zXCIpIGFcbiAgICAgICAgICB0aGVuIGFcbiAgICAgICAgICBlbHNlIFhtbC5zdHJpbmdfYXR0cmliIFwieG1sbnNcIiBUeXBlZF94bWwuSW5mby5uYW1lc3BhY2UgOjogYVxuICAgICAgICBpblxuICAgICAgICBYbWwubm9kZSB+YSBuIGNcbiAgICAgIHwgXyAtPiBkb2MgaW5cbiAgICBPLm1ha2VcbiAgICAgIChPLnB1dCBUeXBlZF94bWwuSW5mby5kb2N0eXBlXG4gICAgICAgKysgTy5wdXQgKGlmIGFkdmVydCA8PiBcIlwiIHRoZW4gKFwiPCEtLSBcIiBeIGFkdmVydCBeIFwiIC0tPlxcblwiKSBlbHNlIFwiXFxuXCIpXG4gICAgICAgKysgUC54aF9wcmludF90YWdsaXN0IGVuY29kZSBbZG9jXSlcblxuZW5kXG5cbm1vZHVsZSBTaW1wbGVfb3V0cHV0KE0gOiBzaWcgdmFsIHB1dDogc3RyaW5nIC0+IHVuaXQgZW5kKSA9IHN0cnVjdFxuICB0eXBlIG91dCA9IHVuaXRcbiAgdHlwZSBtID0gdW5pdCAtPiB1bml0XG4gIGxldCBlbXB0eSAoKSA9ICgpXG4gIGxldCBjb25jYXQgZjEgZjIgKCkgPSBmMSAoKTsgZjIgKClcbiAgbGV0IHB1dCBzICgpID0gTS5wdXQgc1xuICBsZXQgbWFrZSBmID0gZiAoKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3NpbXBsZVxuICAgIChYbWwgOiBYbWxfc2lncy5JdGVyYWJsZSlcbiAgICAoSSA6IFRhZ0xpc3QpID1cbnN0cnVjdFxuXG4gIGxldCBwcmludF9saXN0IH5vdXRwdXQgPVxuICAgIGxldCBtb2R1bGUgTSA9IE1ha2UoWG1sKShJKShTaW1wbGVfb3V0cHV0KHN0cnVjdCBsZXQgcHV0ID0gb3V0cHV0IGVuZCkpIGluXG4gICAgTS5wcmludF9saXN0XG5cbmVuZFxuXG5tb2R1bGUgTWFrZV90eXBlZF9zaW1wbGVcbiAgICAoWG1sIDogWG1sX3NpZ3MuSXRlcmFibGUpXG4gICAgKFR5cGVkX3htbCA6IFhtbF9zaWdzLlR5cGVkX3htbCB3aXRoICBtb2R1bGUgWG1sIDo9IFhtbCkgPVxuc3RydWN0XG5cbiAgbGV0IHByaW50X2xpc3Qgfm91dHB1dCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIE1ha2VfdHlwZWQoWG1sKShUeXBlZF94bWwpKFNpbXBsZV9vdXRwdXQoc3RydWN0IGxldCBwdXQgPSBvdXRwdXQgZW5kKSkgaW5cbiAgICBNLnByaW50X2xpc3RcblxuICBsZXQgcHJpbnQgfm91dHB1dCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIE1ha2VfdHlwZWQoWG1sKShUeXBlZF94bWwpKFNpbXBsZV9vdXRwdXQoc3RydWN0IGxldCBwdXQgPSBvdXRwdXQgZW5kKSkgaW5cbiAgICBNLnByaW50XG5cbmVuZFxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAwNCBUaG9yc3RlbiBPaGwgPG9obEBwaHlzaWsudW5pLXd1ZXJ6YnVyZy5kZT5cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnQsIEdyw6lnb2lyZSBIZW5yeVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxubW9kdWxlIE1ha2UoWG1sIDogWG1sX3NpZ3MuSXRlcmFibGUpID0gc3RydWN0XG5cbiAgb3BlbiBYbWxcblxuICAoKiogSXRlcmF0b3JzICopXG5cbiAgbGV0IGFtYXAxIGYgbiA9XG4gICAgbWF0Y2ggY29udGVudCBuIHdpdGhcbiAgICB8IEVtcHR5IHwgQ29tbWVudCBfIHwgUENEQVRBIF8gfCBFbmNvZGVkUENEQVRBIF8gfCBFbnRpdHkgXyAtPiBuXG4gICAgfCBMZWFmIChuYW1lLCBhdHRyaWJzKSAtPiBsZWFmIH5hOihmIG5hbWUgYXR0cmlicykgbmFtZVxuICAgIHwgTm9kZSAobmFtZSwgYXR0cmlicywgZWx0cykgLT4gbm9kZSB+YTooZiBuYW1lIGF0dHJpYnMpIG5hbWUgZWx0c1xuXG4gIGxldCByZWMgYW1hcCBmIG4gPVxuICAgIG1hdGNoIGNvbnRlbnQgbiB3aXRoXG4gICAgfCBFbXB0eSB8IENvbW1lbnQgXyB8IFBDREFUQSBfIHwgRW5jb2RlZFBDREFUQSBfIHwgRW50aXR5IF8gLT4gblxuICAgIHwgTGVhZiAobmFtZSwgYXR0cmlicykgLT4gbGVhZiB+YTooZiBuYW1lIGF0dHJpYnMpIG5hbWVcbiAgICB8IE5vZGUgKG5hbWUsIGF0dHJpYnMsIGVsdHMpIC0+XG4gICAgICBub2RlIH5hOihmIG5hbWUgYXR0cmlicykgbmFtZSAoTGlzdC5tYXAgKGFtYXAgZikgZWx0cylcblxuICBsZXQgcmVjIGFkZF9mbG9hdF9hdHRyaWIgbmFtZSB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbZmxvYXRfYXR0cmliIG5hbWUgdmFsdWVdXG4gICAgfCBoZWFkIDo6IHRhaWwgd2hlbiBhbmFtZSBoZWFkID0gbmFtZSAtPlxuICAgICAgZmxvYXRfYXR0cmliIG5hbWUgdmFsdWUgOjogdGFpbFxuICAgIHwgaGVhZCA6OiB0YWlsIC0+IGhlYWQgOjogYWRkX2Zsb2F0X2F0dHJpYiBuYW1lIHZhbHVlIHRhaWxcblxuICBsZXQgbWFwX2Zsb2F0X2F0dHJpYiBpc19hdHRyaWIgZiBsID1cbiAgICBsZXQgYXV4IGhlYWQgPSBtYXRjaCBhY29udGVudCBoZWFkIHdpdGhcbiAgICAgIHwgQUZsb2F0IHZhbHVlIHdoZW4gaXNfYXR0cmliIChhbmFtZSBoZWFkKSAtPiBmbG9hdF9hdHRyaWIgKGFuYW1lIGhlYWQpIChmIHZhbHVlKVxuICAgICAgfCBfIC0+IGhlYWQgaW5cbiAgICBMaXN0Lm1hcCBhdXggbFxuXG4gIGxldCByZWMgYWRkX2ludF9hdHRyaWIgbmFtZSB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbaW50X2F0dHJpYiBuYW1lIHZhbHVlXVxuICAgIHwgaGVhZCA6OiB0YWlsIHdoZW4gYW5hbWUgaGVhZCA9IG5hbWUgLT5cbiAgICAgIGludF9hdHRyaWIgbmFtZSB2YWx1ZSA6OiB0YWlsXG4gICAgfCBoZWFkIDo6IHRhaWwgLT4gaGVhZCA6OiBhZGRfaW50X2F0dHJpYiBuYW1lIHZhbHVlIHRhaWxcblxuICBsZXQgcmVjIHJtX2F0dHJpYiBpc19hdHRyaWIgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IGhlYWQgOjogdGFpbCB3aGVuIGlzX2F0dHJpYiAoYW5hbWUgaGVhZCkgLT4gcm1fYXR0cmliIGlzX2F0dHJpYiB0YWlsXG4gICAgfCBoZWFkIDo6IHRhaWwgLT4gaGVhZCA6OiBybV9hdHRyaWIgaXNfYXR0cmliIHRhaWxcblxuICBsZXQgbWFwX2ludF9hdHRyaWIgaXNfYXR0cmliIGYgbCA9XG4gICAgbGV0IGF1eCBoZWFkID0gbWF0Y2ggYWNvbnRlbnQgaGVhZCB3aXRoXG4gICAgICB8IEFJbnQgdmFsdWUgd2hlbiBpc19hdHRyaWIgKGFuYW1lIGhlYWQpIC0+IGludF9hdHRyaWIgKGFuYW1lIGhlYWQpIChmIHZhbHVlKVxuICAgICAgfCBfIC0+IGhlYWQgaW5cbiAgICBMaXN0Lm1hcCBhdXggbFxuXG4gIGxldCByZWMgYWRkX3N0cmluZ19hdHRyaWIgbmFtZSB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbc3RyaW5nX2F0dHJpYiBuYW1lIHZhbHVlXVxuICAgIHwgaGVhZCA6OiB0YWlsIHdoZW4gYW5hbWUgaGVhZCA9IG5hbWUgLT5cbiAgICAgIHN0cmluZ19hdHRyaWIgbmFtZSB2YWx1ZSA6OiB0YWlsXG4gICAgfCBoZWFkIDo6IHRhaWwgLT4gaGVhZCA6OiBhZGRfc3RyaW5nX2F0dHJpYiBuYW1lIHZhbHVlIHRhaWxcblxuICBsZXQgbWFwX3N0cmluZ19hdHRyaWIgaXNfYXR0cmliIGYgbCA9XG4gICAgbGV0IGF1eCBoZWFkID0gbWF0Y2ggYWNvbnRlbnQgaGVhZCB3aXRoXG4gICAgICB8IEFTdHIgdmFsdWUgd2hlbiBpc19hdHRyaWIgKGFuYW1lIGhlYWQpIC0+IHN0cmluZ19hdHRyaWIgKGFuYW1lIGhlYWQpIChmIHZhbHVlKVxuICAgICAgfCBfIC0+IGhlYWQgaW5cbiAgICBMaXN0Lm1hcCBhdXggbFxuXG4gIGxldCByZWMgYWRkX3NwYWNlX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbc3BhY2Vfc2VwX2F0dHJpYiBuYW1lIFt2YWx1ZV1dXG4gICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgIG1hdGNoIGFjb250ZW50IGhlYWQgd2l0aFxuICAgICAgfCBBU3RyTCAoU3BhY2UsIHZhbHVlcycpIHdoZW4gYW5hbWUgaGVhZCA9IG5hbWUgLT5cbiAgICAgICAgc3BhY2Vfc2VwX2F0dHJpYiBuYW1lICh2YWx1ZSA6OiB2YWx1ZXMnKSA6OiB0YWlsXG4gICAgICB8IF8gd2hlbiBhbmFtZSBoZWFkID0gbmFtZSAtPlxuICAgICAgICBzcGFjZV9zZXBfYXR0cmliIG5hbWUgW3ZhbHVlXSA6OiB0YWlsXG4gICAgICB8IF8gLT4gaGVhZCA6OiBhZGRfc3BhY2Vfc2VwX2F0dHJpYiBuYW1lIHZhbHVlIHRhaWxcblxuICBsZXQgcmVjIGFkZF9jb21tYV9zZXBfYXR0cmliIG5hbWUgdmFsdWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW2NvbW1hX3NlcF9hdHRyaWIgbmFtZSBbdmFsdWVdXVxuICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICBtYXRjaCBhY29udGVudCBoZWFkIHdpdGhcbiAgICAgIHwgQVN0ckwgKENvbW1hLCB2YWx1ZXMnKSB3aGVuIGFuYW1lIGhlYWQgPSBuYW1lIC0+XG4gICAgICAgIGNvbW1hX3NlcF9hdHRyaWIgbmFtZSAodmFsdWUgOjogdmFsdWVzJykgOjogdGFpbFxuICAgICAgfCBfIHdoZW4gYW5hbWUgaGVhZCA9IG5hbWUgLT5cbiAgICAgICAgY29tbWFfc2VwX2F0dHJpYiBuYW1lIFt2YWx1ZV0gOjogdGFpbFxuICAgICAgfCBfIC0+IGhlYWQgOjogYWRkX2NvbW1hX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZSB0YWlsXG5cbiAgbGV0IHJlYyBybV9hdHRyaWJfZnJvbV9saXN0IGlzX2F0dHJpYiBpc192YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICBtYXRjaCBhY29udGVudCBoZWFkIHdpdGhcbiAgICAgIHwgQVN0ckwgKHNlcCwgdmFsdWVzKSB3aGVuIGlzX2F0dHJpYiAoYW5hbWUgaGVhZCkgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggTGlzdC5maWx0ZXIgKGZ1biB2IC0+IG5vdCAoaXNfdmFsdWUgdikpIHZhbHVlcyB3aXRoXG4gICAgICAgICAgfCBbXSAtPiB0YWlsXG4gICAgICAgICAgfCB2YWx1ZXMnIC0+XG4gICAgICAgICAgICBtYXRjaCBzZXAgd2l0aFxuICAgICAgICAgICAgfCBTcGFjZSAtPiBzcGFjZV9zZXBfYXR0cmliIChhbmFtZSBoZWFkKSB2YWx1ZXMnIDo6IHRhaWxcbiAgICAgICAgICAgIHwgQ29tbWEgLT4gY29tbWFfc2VwX2F0dHJpYiAoYW5hbWUgaGVhZCkgdmFsdWVzJyA6OiB0YWlsXG4gICAgICAgIGVuZFxuICAgICAgfCBfIC0+IGhlYWQgOjogcm1fYXR0cmliX2Zyb21fbGlzdCBpc19hdHRyaWIgaXNfdmFsdWUgdGFpbFxuXG4gIGxldCBtYXBfc3RyaW5nX2F0dHJpYl9pbl9saXN0IGlzX2F0dHJpYiBmIGwgPVxuICAgIGxldCBhdXggaGVhZCA9IG1hdGNoIGFjb250ZW50IGhlYWQgd2l0aFxuICAgICAgfCBBU3RyTCAoc2VwLCB2YWx1ZXMpIHdoZW4gaXNfYXR0cmliIChhbmFtZSBoZWFkKSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBzZXAgd2l0aFxuICAgICAgICAgIHwgQ29tbWEgLT4gY29tbWFfc2VwX2F0dHJpYiAoYW5hbWUgaGVhZCkgKExpc3QubWFwIGYgdmFsdWVzKVxuICAgICAgICAgIHwgU3BhY2UgLT4gc3BhY2Vfc2VwX2F0dHJpYiAoYW5hbWUgaGVhZCkgKExpc3QubWFwIGYgdmFsdWVzKVxuICAgICAgICBlbmRcbiAgICAgIHwgXyAtPiBoZWFkIGluXG4gICAgTGlzdC5tYXAgYXV4IGxcblxuICBsZXQgcmVjIGZvbGQgb2ZfZW1wdHkgb2ZfY29tbWVudCBvZl90eHQgb2ZfZW5jb2RlZHBjZGF0YSBvZl9lbnRpdHlcbiAgICAgIG9mX2xlYWYgb2Zfbm9kZSBuID1cbiAgICBtYXRjaCBjb250ZW50IG4gd2l0aFxuICAgIHwgRW1wdHkgLT4gb2ZfZW1wdHkgKClcbiAgICB8IENvbW1lbnQgcyAtPiBvZl9jb21tZW50IHNcbiAgICB8IFBDREFUQSBzIC0+IG9mX3R4dCBzXG4gICAgfCBFbmNvZGVkUENEQVRBIHMgLT4gb2ZfZW5jb2RlZHBjZGF0YSBzXG4gICAgfCBFbnRpdHkgcyAtPiBvZl9lbnRpdHkgc1xuICAgIHwgTGVhZiAobmFtZSwgYXR0cmlicykgLT4gb2ZfbGVhZiBuYW1lIGF0dHJpYnNcbiAgICB8IE5vZGUgKG5hbWUsIGF0dHJpYnMsIGVsdHMpIC0+XG4gICAgICBvZl9ub2RlIG5hbWUgYXR0cmlic1xuICAgICAgICAoTGlzdC5tYXAgKGZvbGQgb2ZfZW1wdHkgb2ZfY29tbWVudCBvZl90eHQgb2ZfZW5jb2RlZHBjZGF0YSBvZl9lbnRpdHkgb2ZfbGVhZiBvZl9ub2RlKSBlbHRzKVxuXG4gIGxldCBhbGxfZW50aXRpZXMgZWx0ID1cbiAgICBsZXQgZiBfID0gW10gaW5cbiAgICBmb2xkIGYgZiBmIGYgZlxuICAgICAgKGZ1biBfZW5hbWUgX2F0dHJpYnMgLT4gW10pIChmdW4gX2VuYW1lIF9hdHRyaWJzIGVsdHMgLT4gTGlzdC5mbGF0dGVuIGVsdHMpXG4gICAgICBlbHRcblxuICBsZXQgZmxhdG1hcCBmIGwgPSBMaXN0LmNvbmNhdCAoTGlzdC5tYXAgZiBsKVxuXG4gIGxldCB0cmFuc2xhdGUgcm9vdF9sZWFmIHJvb3Rfbm9kZSBzdWJfbGVhZiBzdWJfbm9kZSB1cGRhdGVfc3RhdGUgc3RhdGUgbiA9XG4gICAgbGV0IHJlYyB0cmFuc2xhdGUnIHN0YXRlICBuID1cbiAgICAgIG1hdGNoIGNvbnRlbnQgbiB3aXRoXG4gICAgICB8IChFbXB0eSB8IENvbW1lbnQgXyB8IFBDREFUQSBfIHwgRW5jb2RlZFBDREFUQSBfIHwgRW50aXR5IF8pIC0+IFtuXVxuICAgICAgfCBMZWFmIChuYW1lLCBhdHRyaWJzKSAtPlxuICAgICAgICBzdWJfbGVhZiBzdGF0ZSBuYW1lIGF0dHJpYnNcbiAgICAgIHwgTm9kZSAobmFtZSwgYXR0cmlicywgZWx0cykgLT5cbiAgICAgICAgc3ViX25vZGUgc3RhdGUgbmFtZSBhdHRyaWJzXG4gICAgICAgICAgKGZsYXRtYXAgKHRyYW5zbGF0ZScgKHVwZGF0ZV9zdGF0ZSBuYW1lIGF0dHJpYnMgc3RhdGUpKSBlbHRzKVxuICAgIGluXG4gICAgbWF0Y2ggY29udGVudCBuIHdpdGhcbiAgICB8IChFbXB0eSB8IENvbW1lbnQgXyB8IFBDREFUQSBfIHwgRW5jb2RlZFBDREFUQSBfIHwgRW50aXR5IF8pIC0+IG5cbiAgICB8IExlYWYgKG5hbWUsIGF0dHJpYnMpIC0+XG4gICAgICByb290X2xlYWYgbmFtZSBhdHRyaWJzXG4gICAgfCBOb2RlIChuYW1lLCBhdHRyaWJzLCBlbHRzKSAtPlxuICAgICAgcm9vdF9ub2RlIG5hbWUgYXR0cmlicyAoZmxhdG1hcCAodHJhbnNsYXRlJyBzdGF0ZSkgZWx0cylcblxuZW5kXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDEwIGJ5IFNpbW9uIENhc3RlbGxhblxuICogQ29weXJpZ2h0IChDKSAyMDEwIGJ5IENlY2lsZSBIZXJiZWxpblxuICogQ29weXJpZ2h0IChDKSAyMDEwIGJ5IFZpbmNlbnQgQmFsYXRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cbigqKiBUeXBlIGluc3RhbnRpYXRpb25zIGZvciBTVkcgKilcblxuKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgYmFzaWMgZGF0YSB0eXBlcyBmb3IgZGF0YSwgYXR0cmlidXRlc1xuICAgIGFuZCBlbGVtZW50IG9jY3VycmluZyBpbiBTVkcgZG9jdW1lbnRzLlxuICAgIEl0IGlzIGJhc2VkIG9uIHRoZSBzcGVjaWZpY2F0aW9uIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvLlxuXG4gICAgVGhpcyBtb2R1bGUgaXMgZXhwZXJpbWVudGFsLCBpdCBtYXkgbGFjayBvZiBzb21lIGF0dHJpYnV0ZXMsXG4gICAgYW5kIHRoZSBpbnRlcmZhY2UgaXMgdmVyeSBsb3cgbGV2ZWwgYW5kIGRvIG5vdCB0YWtlIGRlZXBseSBpbnRvIGFjY291bnRcbiAgICB0aGUgbmVlZHMgb2YgU1ZHIGVsZW1lbnRzLiAqKVxuXG5vcGVuIFN2Z190eXBlc1xuXG5vcGVuIFVuaXRcblxubGV0IHN0cmluZ19vZl9pcmkgeCA9IFByaW50Zi5zcHJpbnRmIFwidXJsKCVzKVwiIHhcblxubW9kdWxlIFVuaXQgPSBzdHJ1Y3RcblxuICAoKiBsZXQgcmVsIHggICAgID0gKHgsIE5vbmUpICopXG4gICgqIGxldCBkZWcgeCAgICAgPSAoeCwgU29tZSBgRGVnKSAqKVxuICAoKiBsZXQgZ3JhZCB4ICAgID0gKHgsIFNvbWUgYEdyYWQpICopXG4gICgqIGxldCByYWQgeCAgICAgPSAoeCwgU29tZSBgUmFkKSAqKVxuICAoKiBsZXQgbXMgeCAgICAgID0gKHgsIFNvbWUgYE1zKSAqKVxuICAoKiBsZXQgcyB4ICAgICAgID0gKHgsIFNvbWUgYFMpICopXG4gICgqIGxldCBlbSB4ICAgICAgPSAoeCwgU29tZSBgRW0pICopXG4gICgqIGxldCBleCB4ICAgICAgPSAoeCwgU29tZSBgRXgpICopXG4gICgqIGxldCBweCB4ICAgICAgPSAoeCwgU29tZSBgUHgpICopXG4gICgqIGxldCBpbl8geCAgICAgPSAoeCwgU29tZSBgSW4pICopXG4gICgqIGxldCBjbSB4ICAgICAgPSAoeCwgU29tZSBgQ20pICopXG4gICgqIGxldCBtbSB4ICAgICAgPSAoeCwgU29tZSBgTW0pICopXG4gICgqIGxldCBwdCB4ICAgICAgPSAoeCwgU29tZSBgUHQpICopXG4gICgqIGxldCBwYyB4ICAgICAgPSAoeCwgU29tZSBgUGMpICopXG4gICgqIGxldCBwZXJjZW50IHggPSAoeCwgU29tZSBgUGVyY2VudCkgKilcbiAgKCogbGV0IGh6IHggICAgICA9ICh4LCBTb21lIGBIeikgKilcbiAgKCogbGV0IGtoeiB4ICAgICA9ICh4LCBTb21lIGBLSHopICopXG5cbiAgbGV0IHRvX3N0cmluZyBmIChuLCB1bml0KSA9IFByaW50Zi5zcHJpbnRmIFwiJWclc1wiIG4gYmVnaW5cbiAgICBtYXRjaCB1bml0IHdpdGhcbiAgICB8IFNvbWUgdW5pdCAtPiBmIHVuaXRcbiAgICB8IE5vbmUgLT4gXCJcIlxuICBlbmRcblxuICBsZXQgYW5nbGVfbmFtZXMgPSBmdW5jdGlvbiBgRGVnIC0+IFwiZGVnXCIgfCBgR3JhZCAtPiBcImdyYWRcIiB8IGBSYWQgLT4gXCJyYWRcIlxuICBsZXQgc3RyaW5nX29mX2FuZ2xlIGEgPSB0b19zdHJpbmcgYW5nbGVfbmFtZXMgYVxuXG4gICgqIGxldCB0aW1lX25hbWVzID0gZnVuY3Rpb24gYE1zIC0+IFwibXNcIiB8IGBTIC0+IFwic1wiICopXG4gICgqIGxldCBzdHJpbmdfb2ZfdGltZSBhID0gdG9fc3RyaW5nIHRpbWVfbmFtZXMgYSAqKVxuXG4gIGxldCBsZW5ndGhfbmFtZXMgPSBmdW5jdGlvblxuICAgIHwgYEVtIC0+IFwiZW1cIiB8IGBFeCAtPiBcImV4XCIgfCBgUHggLT4gXCJweFwiIHwgYEluIC0+IFwiaW5cIiB8IGBDbSAtPiBcImNtXCJcbiAgICB8IGBNbSAtPiBcIm1tXCIgfCBgUHQgLT4gXCJwdFwiIHwgYFBjIC0+IFwicGNcIiB8IGBQZXJjZW50IC0+IFwiJVwiXG4gIGxldCBzdHJpbmdfb2ZfbGVuZ3RoIChhOiBsZW5ndGgpID0gdG9fc3RyaW5nIGxlbmd0aF9uYW1lcyBhXG5cbiAgKCogbGV0IGZyZXFfbmFtZXMgPSBmdW5jdGlvbiBgSHogLT4gXCJIelwiIHwgYEtIeiAtPiBcImtIelwiICopXG4gICgqIGxldCBzdHJpbmdfb2ZfZnJlcSBhID0gdG9fc3RyaW5nIGZyZXFfbmFtZXMgYSAqKVxuXG5lbmRcblxub3BlbiBVbml0XG5cbmxldCBvcHRfY29uY2F0ID8oc2VwPVwiIFwiKSBzIGYgPSBmdW5jdGlvblxuICB8IFNvbWUgeCAtPiBzIF4gc2VwIF4gKGYgeClcbiAgfCBOb25lIC0+IHNcblxubGV0IGxpc3QgPyhzZXA9XCIgXCIpIGYgbCA9IFN0cmluZy5jb25jYXQgc2VwIChMaXN0Lm1hcCBmIGwpXG5cbmxldCBzdHJpbmdfb2ZfY29sb3IgcyA9IHNcbigqIEZvciBub3cganVzdCBzdHJpbmcsIHdlIG1heSB3YW50IHNvbWV0aGluZyBiZXR0ZXIgaW4gdGhlIGZ1dHVyZS4gKilcblxubGV0IHN0cmluZ19vZl9pY2Njb2xvciBzID0gc1xuXG5sZXQgc3RyaW5nX29mX3BhaW50X3doaXRvdXRfaWNjID0gZnVuY3Rpb25cbiAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICB8IGBDdXJyZW50Q29sb3IgLT4gXCJjdXJyZW50Q29sb3JcIlxuICB8IGBDb2xvciAoYywgaWNjKSAtPiBvcHRfY29uY2F0IChzdHJpbmdfb2ZfY29sb3IgYykgc3RyaW5nX29mX2ljY2NvbG9yIGljY1xuXG5sZXQgc3RyaW5nX29mX3BhaW50ID0gZnVuY3Rpb25cbiAgfCBgSWNjIChpcmksIE5vbmUpIC0+IHN0cmluZ19vZl9pcmkgaXJpXG4gIHwgYEljYyAoaXJpLCBTb21lIGIpIC0+XG4gICAgKHN0cmluZ19vZl9pcmkgaXJpKSBeXCIgXCJeIChzdHJpbmdfb2ZfcGFpbnRfd2hpdG91dF9pY2MgYilcbiAgfCAjcGFpbnRfd2hpdG91dF9pY2MgYXMgYyAtPiBzdHJpbmdfb2ZfcGFpbnRfd2hpdG91dF9pY2MgY1xuXG5sZXQgc3RyaW5nX29mX2ZpbGxfcnVsZSA9IGZ1bmN0aW9uXG4gIHwgYE5vbnplcm8gLT4gXCJub256ZXJvXCJcbiAgfCBgRXZlbm9kZCAtPiBcImV2ZW5vZGRcIlxuXG5tb2R1bGUgTWFrZV93aXRoX3dyYXBwZWRfZnVuY3Rpb25zXG5cbiAgICAoWG1sIDogWG1sX3NpZ3MuVClcbiAgICAoQyA6IFN2Z19zaWdzLldyYXBwZWRfZnVuY3Rpb25zIHdpdGggbW9kdWxlIFhtbCA9IFhtbCkgPVxuXG5zdHJ1Y3RcblxuICBtb2R1bGUgWG1sID0gWG1sXG4gIG1vZHVsZSBXID0gWG1sLldcblxuICBtb2R1bGUgSW5mbyA9IHN0cnVjdFxuICAgIGxldCBjb250ZW50X3R5cGUgPSBcImltYWdlL3N2Zyt4bWxcIlxuICAgIGxldCBhbHRlcm5hdGl2ZV9jb250ZW50X3R5cGVzID0gW11cbiAgICBsZXQgZW1wdHl0YWdzID0gW11cbiAgICBsZXQgdmVyc2lvbiA9IFwiU1ZHIDEuMVwiXG4gICAgbGV0IHN0YW5kYXJkID0gXCJodHRwOi8vd3d3LnczLm9yZy9UUi9zdmcxMS9cIlxuICAgIGxldCBuYW1lc3BhY2UgPSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICBsZXQgZG9jdHlwZSA9XG4gICAgICBYbWxfcHJpbnQuY29tcG9zZV9kb2N0eXBlXCJzdmdcIlxuICAgICAgICBbXCItLy9XM0MvL0RURCBTVkcgMS4xLy9FTlwiO1xuICAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGRcIl1cbiAgZW5kXG5cbiAgdHlwZSB1cmkgPSBYbWwudXJpXG4gIGxldCBzdHJpbmdfb2ZfdXJpID0gWG1sLnN0cmluZ19vZl91cmlcbiAgbGV0IHVyaV9vZl9zdHJpbmcgPSBYbWwudXJpX29mX3N0cmluZ1xuXG5cbiAgKCogTWFuZGF0b3J5IFhNTCBzdHVmZi4gKilcblxuICB0eXBlICdhIGF0dHJpYiA9IFhtbC5hdHRyaWJcblxuICB0eXBlICsnYSBlbHQgPSBYbWwuZWx0XG5cbiAgdHlwZSAnYSB3cmFwID0gJ2EgVy50XG4gIHR5cGUgJ2EgbGlzdF93cmFwID0gJ2EgVy50bGlzdFxuXG4gIHR5cGUgKCdhLCAnYikgbnVsbGFyeSA9ID9hOiAoKCdhIGF0dHJpYikgbGlzdCkgLT4gdW5pdCAtPiAnYiBlbHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSB1bmFyeSA9ID9hOiAoKCdhIGF0dHJpYikgbGlzdCkgLT4gJ2IgZWx0IHdyYXAgLT4gJ2MgZWx0XG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgc3RhciA9XG4gICAgP2E6ICgoJ2EgYXR0cmliKSBsaXN0KSAtPiAoJ2IgZWx0KSBsaXN0X3dyYXAgLT4gJ2MgZWx0XG5cbiAgbGV0IHRvdCB4ID0geFxuXG4gIGxldCB0b3RsIHggPSB4XG5cbiAgbGV0IHRvZWx0IHggPSB4XG5cbiAgbGV0IHRvZWx0bCB4ID0geFxuXG4gIGxldCB0b19hdHRyaWIgeCA9IHhcblxuICBsZXQgbnVsbGFyeSB0YWcgP2EgKCkgPVxuICAgIFhtbC5ub2RlID9hIHRhZyAoVy5uaWwgKCkpXG5cbiAgbGV0IHVuYXJ5IHRhZyA/YSBlbHQgPVxuICAgIFhtbC5ub2RlID9hIHRhZyAoVy5zaW5nbGV0b24gZWx0KVxuXG4gIGxldCBzdGFyIHRhZyA/YSBlbHRzID0gWG1sLm5vZGUgP2EgdGFnIGVsdHNcblxuICB0eXBlIGFsdGdseXBoZGVmX2NvbnRlbnQgPVxuICAgIFsgYFJlZiBvZiAoZ2x5cGhyZWYgZWx0KSBsaXN0XG4gICAgfCBgSXRlbSBvZiAoYWx0Z2x5cGhpdGVtIGVsdCkgbGlzdFxuICAgIF1cblxuICBsZXQgdG9feG1sYXR0cmlicyB4ID0geFxuXG4gIGxldCBmbG9hdF9hdHRyaWIgPSBYbWwuZmxvYXRfYXR0cmliXG5cbiAgbGV0IHN0cmluZ19hdHRyaWIgPSBYbWwuc3RyaW5nX2F0dHJpYlxuXG4gICgqIHdyYXAgQyBtb2R1bGUgZnVuY3Rpb25zICopXG5cbiAgbGV0IHN0cmluZ19vZl9jb29yZCA9IEMuc3RyaW5nX29mX2xlbmd0aFxuXG4gIGxldCBzdHJpbmdfb2ZfbGVuZ3RoID0gQy5zdHJpbmdfb2ZfbGVuZ3RoXG5cbiAgbGV0IHN0cmluZ19vZl9sZW5ndGhzID0gQy5zdHJpbmdfb2ZfbGVuZ3Roc1xuXG4gICgqIEN1c3RvbSBYTUwgYXR0cmlidXRlcyAqKVxuXG4gIGxldCB1c2VyX2F0dHJpYiBmIG5hbWUgdiA9XG4gICAgWG1sLnN0cmluZ19hdHRyaWIgbmFtZSAoVy5mbWFwIGYgdilcblxuICBsZXQgbnVtYmVyX2F0dHJpYiA9IGZsb2F0X2F0dHJpYlxuXG4gICgqIGZvciBub3cgc3RyaW5nX2F0dHJpYiwgd2UgbWF5IHdhbnQgc29tZXRoaW5nIGJldHRlciBpbiB0aGVcbiAgICAgZnV0dXJlLiAqKVxuICBsZXQgY29sb3JfYXR0cmliID0gWG1sLnN0cmluZ19hdHRyaWJcblxuICAoKiBTVkcgYXR0cmlidXRlcyAqKVxuXG4gIGxldCBtZXRhZGF0YSA/YSBjaGlsZHJlbiA9IFhtbC5ub2RlID9hIFwibWV0YWRhdGFcIiBjaGlsZHJlblxuXG4gIGxldCBmb3JlaWduT2JqZWN0ID9hIGNoaWxkcmVuID0gWG1sLm5vZGUgP2EgXCJmb3JlaWduT2JqZWN0XCIgY2hpbGRyZW5cblxuICBsZXQgdHh0IHMgPSBYbWwucGNkYXRhIHNcbiAgbGV0IHBjZGF0YSA9IHR4dFxuXG4gICgqIGdlbmVyYXRlZCAqKVxuICBsZXQgYV92ZXJzaW9uID0gc3RyaW5nX2F0dHJpYiBcInZlcnNpb25cIlxuXG4gIGxldCBhX2Jhc2VQcm9maWxlID0gc3RyaW5nX2F0dHJpYiBcImJhc2VQcm9maWxlXCJcblxuICBsZXQgYV94ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwieFwiXG5cbiAgbGV0IGFfeSA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcInlcIlxuXG4gIGxldCBhX3dpZHRoID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcIndpZHRoXCJcblxuICBsZXQgYV9oZWlnaHQgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwiaGVpZ2h0XCJcblxuICBsZXQgYV9wcmVzZXJ2ZUFzcGVjdFJhdGlvID1cbiAgICBzdHJpbmdfYXR0cmliIFwicHJlc2VydmVBc3BlY3RSYXRpb1wiXG5cbiAgbGV0IGFfY29udGVudFNjcmlwdFR5cGUgPVxuICAgIHN0cmluZ19hdHRyaWIgXCJjb250ZW50U2NyaXB0VHlwZVwiXG5cbiAgbGV0IGFfY29udGVudFN0eWxlVHlwZSA9IHN0cmluZ19hdHRyaWIgXCJjb250ZW50U3R5bGVUeXBlXCJcblxuICBsZXQgYV96b29tQW5kUGFuIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiem9vbUFuZFNwYW5cIiB4XG5cbiAgbGV0IGFfaHJlZiA9IHN0cmluZ19hdHRyaWIgXCJocmVmXCJcblxuICBsZXQgYV94bGlua19ocmVmID0gc3RyaW5nX2F0dHJpYiBcInhsaW5rOmhyZWZcIlxuXG4gIGxldCBhX3JlcXVpcmVkRmVhdHVyZXMgPVxuICAgIFhtbC5zcGFjZV9zZXBfYXR0cmliIFwicmVxdWlyZWRGZWF0dXJlc1wiXG5cbiAgbGV0IGFfcmVxdWlyZWRFeHRlbnNpb25zID1cbiAgICBYbWwuc3BhY2Vfc2VwX2F0dHJpYiBcInJlcXVpcmVkRXh0ZW5zaW9uXCJcblxuICBsZXQgYV9zeXN0ZW1MYW5ndWFnZSA9XG4gICAgWG1sLmNvbW1hX3NlcF9hdHRyaWIgXCJzeXN0ZW1MYW5ndWFnZVwiXG5cbiAgbGV0IGFfZXh0ZXJuYWxSZXNzb3VyY2VzUmVxdWlyZWQgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2Jvb2wgXCJleHRlcm5hbFJlc3NvdXJjZXNSZXF1aXJlZFwiXG5cbiAgbGV0IGFfaWQgPSBzdHJpbmdfYXR0cmliIFwiaWRcIlxuXG4gIGxldCBhX3VzZXJfZGF0YSBuYW1lID0gc3RyaW5nX2F0dHJpYiAoXCJkYXRhLVwiIF4gbmFtZSlcblxuICBsZXQgYV94bWxfYmFzZSA9IHN0cmluZ19hdHRyaWIgXCJ4bWw6YmFzZVwiXG5cbiAgbGV0IGFfeG1sX2xhbmcgPSBzdHJpbmdfYXR0cmliIFwieG1sOmxhbmdcIlxuXG4gIGxldCBhX3htbF9zcGFjZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInhtbDpzcGFjZVwiIHhcblxuICBsZXQgYV90eXBlID0gc3RyaW5nX2F0dHJpYiBcInR5cGVcIlxuXG4gIGxldCBhX21lZGlhID0gWG1sLmNvbW1hX3NlcF9hdHRyaWIgXCJtZWRpYVwiXG5cbiAgbGV0IGFfeGxpbmtfdGl0bGUgPSBzdHJpbmdfYXR0cmliIFwieGxpbms6dGl0bGVcIlxuXG4gIGxldCBhX2NsYXNzID0gWG1sLnNwYWNlX3NlcF9hdHRyaWIgXCJjbGFzc1wiXG5cbiAgbGV0IGFfc3R5bGUgPSBzdHJpbmdfYXR0cmliIFwic3R5bGVcIlxuXG4gIGxldCBhX3RyYW5zZm9ybSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3RyYW5zZm9ybXMgXCJ0cmFuc2Zvcm1cIlxuXG4gIGxldCBhX3ZpZXdCb3ggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9mb3VyZmxvYXRzIFwidmlld0JveFwiXG5cbiAgbGV0IGFfZCA9IHN0cmluZ19hdHRyaWIgXCJkXCJcblxuICBsZXQgYV9wYXRoTGVuZ3RoID0gbnVtYmVyX2F0dHJpYiBcInBhdGhMZW5ndGhcIlxuXG4gIGxldCBhX3J4ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcInJ4XCJcblxuICBsZXQgYV9yeSA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJyeVwiXG5cbiAgbGV0IGFfY3ggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwiY3hcIlxuXG4gIGxldCBhX2N5ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcImN5XCJcblxuICBsZXQgYV9yID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcInJcIlxuXG4gIGxldCBhX3gxID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwieDFcIlxuXG4gIGxldCBhX3kxID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwieTFcIlxuXG4gIGxldCBhX3gyID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwieDJcIlxuXG4gIGxldCBhX3kyID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwieTJcIlxuXG4gIGxldCBhX3BvaW50cyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2Nvb3JkcyBcInBvaW50c1wiXG5cbiAgbGV0IGFfeF9saXN0ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aHMgXCJ4XCJcblxuICBsZXQgYV95X2xpc3QgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RocyBcInlcIlxuXG4gIGxldCBhX2R4ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiZHhcIlxuXG4gIGxldCBhX2R5ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiZHlcIlxuXG4gIGxldCBhX2R4X2xpc3QgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RocyBcImR4XCJcblxuICBsZXQgYV9keV9saXN0ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aHMgXCJkeVwiXG5cbiAgbGV0IGFfbGVuZ3RoQWRqdXN0IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibGVuZ3RoQWRqdXN0XCIgeFxuXG4gIGxldCBhX3RleHRMZW5ndGggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwidGV4dExlbmd0aFwiXG5cbiAgbGV0IGFfdGV4dF9hbmNob3IgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0ZXh0LWFuY2hvclwiIHhcblxuICBsZXQgYV90ZXh0X2RlY29yYXRpb24geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0ZXh0LWRlY29yYXRpb25cIiB4XG5cbiAgbGV0IGFfdGV4dF9yZW5kZXJpbmcgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0ZXh0LXJlbmRlcmluZ1wiIHhcblxuICBsZXQgYV9yb3RhdGUgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJzIFwicm90YXRlXCJcblxuICBsZXQgYV9zdGFydE9mZnNldCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJzdGFydE9mZnNldFwiXG5cbiAgbGV0IGFfbWV0aG9kIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibWV0aG9kXCIgeFxuXG4gIGxldCBhX3NwYWNpbmcgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzcGFjaW5nXCIgeFxuXG4gIGxldCBhX2dseXBoUmVmID0gc3RyaW5nX2F0dHJpYiBcImdseXBoUmVmXCJcblxuICBsZXQgYV9mb3JtYXQgPSBzdHJpbmdfYXR0cmliIFwiZm9ybWF0XCJcblxuICBsZXQgYV9tYXJrZXJVbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm1hcmtlclVuaXRzXCIgeFxuXG4gIGxldCBhX3JlZlggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJyZWZYXCJcblxuICBsZXQgYV9yZWZZID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwicmVmWVwiXG5cbiAgbGV0IGFfbWFya2VyV2lkdGggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwibWFya2VyV2lkdGhcIlxuXG4gIGxldCBhX21hcmtlckhlaWdodCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJtYXJrZXJIZWlnaHRcIlxuXG4gIGxldCBhX29yaWVudCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9vcmllbnQgXCJvcmllbnRcIiB4XG5cbiAgbGV0IGFfbG9jYWwgPSBzdHJpbmdfYXR0cmliIFwibG9jYWxcIlxuXG4gIGxldCBhX3JlbmRlcmluZ19pbnRlbnQgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJyZW5kZXJpbmctaW50ZW50XCIgeFxuXG4gIGxldCBhX2dyYWRpZW50VW5pdHMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJncmFkaWVudFVuaXRzXCIgeFxuXG4gIGxldCBhX2dyYWRpZW50VHJhbnNmb3JtID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl90cmFuc2Zvcm1zIFwiZ3JhZGllbnRUcmFuc2Zvcm1cIlxuXG4gIGxldCBhX3NwcmVhZE1ldGhvZCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInNwcmVhZE1ldGhvZFwiIHhcblxuICBsZXQgYV9meCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcImZ4XCJcblxuICBsZXQgYV9meSA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcImZ5XCJcblxuICBsZXQgYV9vZmZzZXQgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2Zfb2Zmc2V0IFwib2Zmc2V0XCIgeFxuXG4gIGxldCBhX3BhdHRlcm5Vbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInBhdHRlcm5Vbml0c1wiIHhcblxuICBsZXQgYV9wYXR0ZXJuQ29udGVudFVuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwicGF0dGVybkNvbnRlbnRVbml0c1wiIHhcblxuICBsZXQgYV9wYXR0ZXJuVHJhbnNmb3JtIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3RyYW5zZm9ybXMgXCJwYXR0ZXJuVHJhbnNmb3JtXCIgeFxuXG4gIGxldCBhX2NsaXBQYXRoVW5pdHMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJjbGlwUGF0aFVuaXRzXCIgeFxuXG4gIGxldCBhX21hc2tVbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm1hc2tVbml0c1wiIHhcblxuICBsZXQgYV9tYXNrQ29udGVudFVuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibWFza0NvbnRlbnRVbml0c1wiIHhcblxuICBsZXQgYV9wcmltaXRpdmVVbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInByaW1pdGl2ZVVuaXRzXCIgeFxuXG4gIGxldCBhX2ZpbHRlclJlcyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciBcImZpbHRlclJlc1VuaXRzXCJcblxuICBsZXQgYV9yZXN1bHQgPSBzdHJpbmdfYXR0cmliIFwicmVzdWx0XCJcblxuICBsZXQgYV9pbiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9pbl92YWx1ZSBcImluXCIgeFxuXG4gIGxldCBhX2luMiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9pbl92YWx1ZSBcImluMlwiIHhcblxuICBsZXQgYV9hemltdXRoID0gbnVtYmVyX2F0dHJpYiBcImF6aW11dGhcIlxuXG4gIGxldCBhX2VsZXZhdGlvbiA9IG51bWJlcl9hdHRyaWIgXCJlbGV2YXRpb25cIlxuXG4gIGxldCBhX3BvaW50c0F0WCA9IG51bWJlcl9hdHRyaWIgXCJwb2ludHNBdFhcIlxuXG4gIGxldCBhX3BvaW50c0F0WSA9IG51bWJlcl9hdHRyaWIgXCJwb2ludHNBdFlcIlxuXG4gIGxldCBhX3BvaW50c0F0WiA9IG51bWJlcl9hdHRyaWIgXCJwb2ludHNBdFpcIlxuXG4gIGxldCBhX3NwZWN1bGFyRXhwb25lbnQgPSBudW1iZXJfYXR0cmliIFwic3BlY3VsYXJFeHBvbmVudFwiXG5cbiAgbGV0IGFfc3BlY3VsYXJDb25zdGFudCA9IG51bWJlcl9hdHRyaWIgXCJzcGVjdWxhckNvbnN0YW50XCJcblxuICBsZXQgYV9saW1pdGluZ0NvbmVBbmdsZSA9IG51bWJlcl9hdHRyaWIgXCJsaW1pdGluZ0NvbmVBbmdsZVwiXG5cbiAgbGV0IGFfbW9kZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm1vZGVcIiB4XG5cbiAgbGV0IGFfZmVDb2xvck1hdHJpeF90eXBlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidHlwZVwiIHhcblxuICBsZXQgYV92YWx1ZXMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJzIFwidmFsdWVzXCJcblxuICBsZXQgYV90cmFuc2Zlcl90eXBlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidHlwZVwiIHhcblxuICBsZXQgYV90YWJsZVZhbHVlcyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcnMgXCJ0YWJsZVZhbHVlc1wiXG5cbiAgbGV0IGFfaW50ZXJjZXB0ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiaW50ZXJjZXB0XCJcblxuICBsZXQgYV9hbXBsaXR1ZGUgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJhbXBsaXR1ZGVcIlxuXG4gIGxldCBhX2V4cG9uZW50ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiZXhwb25lbnRcIlxuXG4gIGxldCBhX3RyYW5zZmVyX29mZnNldCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcIm9mZnNldFwiXG5cbiAgbGV0IGFfZmVDb21wb3NpdGVfb3BlcmF0b3IgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJvcGVyYXRvclwiIHhcblxuICBsZXQgYV9rMSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImsxXCJcblxuICBsZXQgYV9rMiA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImsyXCJcblxuICBsZXQgYV9rMyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImszXCJcblxuICBsZXQgYV9rNCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcIms0XCJcblxuICBsZXQgYV9vcmRlciA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgXCJvcmRlclwiXG5cbiAgbGV0IGFfa2VybmVsTWF0cml4ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVycyBcImtlcm5lbE1hdHJpeFwiXG5cbiAgbGV0IGFfZGl2aXNvciA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImRpdmlzb3JcIlxuXG4gIGxldCBhX2JpYXMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJiaWFzXCJcblxuICBsZXQgYV9rZXJuZWxVbml0TGVuZ3RoID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyIFwia2VybmVsVW5pdExlbmd0aFwiXG5cbiAgbGV0IGFfdGFyZ2V0WCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2ludCBcInRhcmdldFhcIlxuXG4gIGxldCBhX3RhcmdldFkgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9pbnQgXCJ0YXJnZXRZXCJcblxuICBsZXQgYV9lZGdlTW9kZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInRhcmdldFlcIiB4XG5cbiAgbGV0IGFfcHJlc2VydmVBbHBoYSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2Jvb2wgXCJwcmVzZXJ2ZUFscGhhXCJcblxuICBsZXQgYV9zdXJmYWNlU2NhbGUgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdXJmYWNlU2NhbGVcIlxuXG4gIGxldCBhX2RpZmZ1c2VDb25zdGFudCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiZGlmZnVzZUNvbnN0YW50XCJcblxuICBsZXQgYV9zY2FsZSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInNjYWxlXCJcblxuICBsZXQgYV94Q2hhbm5lbFNlbGVjdG9yIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieENoYW5uZWxTZWxlY3RvclwiIHhcblxuICBsZXQgYV95Q2hhbm5lbFNlbGVjdG9yIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieUNoYW5uZWxTZWxlY3RvclwiIHhcblxuICBsZXQgYV9zdGREZXZpYXRpb24gPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgXCJzdGREZXZpYXRpb25cIlxuXG4gIGxldCBhX2ZlTW9ycGhvbG9neV9vcGVyYXRvciB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm9wZXJhdG9yXCIgeFxuXG4gIGxldCBhX3JhZGl1cyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgXCJyYWRpdXNcIlxuXG4gIGxldCBhX2Jhc2VGcmVucXVlbmN5ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyIFwiYmFzZUZyZXF1ZW5jeVwiXG5cbiAgbGV0IGFfbnVtT2N0YXZlcyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2ludCBcIm51bU9jdGF2ZXNcIlxuXG4gIGxldCBhX3NlZWQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzZWVkXCJcblxuICBsZXQgYV9zdGl0Y2hUaWxlcyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInN0aXRjaFRpbGVzXCIgeFxuXG4gIGxldCBhX2ZlVHVyYnVsZW5jZV90eXBlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidHlwZVwiIHhcblxuICBsZXQgYV94bGlua19zaG93IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieGxpbms6c2hvd1wiIHhcblxuICBsZXQgYV94bGlua19hY3R1YXRlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieGxpbms6YWN0dWF0ZVwiIHhcblxuICBsZXQgYV90YXJnZXQgPSBzdHJpbmdfYXR0cmliIFwieGxpbms6dGFyZ2V0XCJcblxuICBsZXQgYV92aWV3VGFyZ2V0ID0gc3RyaW5nX2F0dHJpYiBcInZpZXdUYXJnZXRcIlxuXG4gIGxldCBhX2F0dHJpYnV0ZU5hbWUgPSBzdHJpbmdfYXR0cmliIFwiYXR0cmlidXRlTmFtZVwiXG5cbiAgbGV0IGFfYXR0cmlidXRlVHlwZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImF0dHJpYnV0ZVR5cGVcIiB4XG5cbiAgbGV0IGFfYmVnaW4gPSBzdHJpbmdfYXR0cmliIFwiYmVnaW5cIlxuXG4gIGxldCBhX2R1ciA9IHN0cmluZ19hdHRyaWIgXCJkdXJcIlxuXG4gIGxldCBhX21pbiA9IHN0cmluZ19hdHRyaWIgXCJtaW5cIlxuXG4gIGxldCBhX21heCA9IHN0cmluZ19hdHRyaWIgXCJtYXhcIlxuXG4gIGxldCBhX3Jlc3RhcnQgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJyZXN0YXJ0XCIgeFxuXG4gIGxldCBhX3JlcGVhdENvdW50ID0gc3RyaW5nX2F0dHJpYiBcInJlcGVhdENvdW50XCJcblxuICBsZXQgYV9yZXBlYXREdXIgPSBzdHJpbmdfYXR0cmliIFwicmVwZWF0RHVyXCJcblxuICBsZXQgYV9maWxsID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfcGFpbnQgXCJmaWxsXCJcblxuICBsZXQgYV9hbmltYXRpb25fZmlsbCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImZpbGxcIiB4XG5cbiAgbGV0IGFfZmlsbF9ydWxlID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfZmlsbF9ydWxlIFwiZmlsbC1ydWxlXCJcblxuICBsZXQgYV9jYWxjTW9kZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImNhbGNNb2RlXCIgeFxuXG4gIGxldCBhX2FuaW1hdGlvbl92YWx1ZXMgPSBYbWwuY29tbWFfc2VwX2F0dHJpYiBcInZhbHVlc1wiXG5cbiAgbGV0IGFfa2V5VGltZXMgPSBYbWwuY29tbWFfc2VwX2F0dHJpYiBcImtleVRpbWVzXCJcblxuICBsZXQgYV9rZXlTcGxpbmVzID0gWG1sLmNvbW1hX3NlcF9hdHRyaWIgXCJrZXlTcGxpbmVzXCJcblxuICBsZXQgYV9mcm9tID0gc3RyaW5nX2F0dHJpYiBcImZyb21cIlxuXG4gIGxldCBhX3RvID0gc3RyaW5nX2F0dHJpYiBcInRvXCJcblxuICBsZXQgYV9ieSA9IHN0cmluZ19hdHRyaWIgXCJieVwiXG5cbiAgbGV0IGFfYWRkaXRpdmUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJhZGRpdGl2ZVwiIHhcblxuICBsZXQgYV9hY2N1bXVsYXRlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiYWNjdW11bGF0ZVwiIHhcblxuICBsZXQgYV9rZXlQb2ludHMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJzX3NlbWljb2xvbiBcImtleVBvaW50c1wiXG5cbiAgbGV0IGFfcGF0aCA9IHN0cmluZ19hdHRyaWIgXCJwYXRoXCJcblxuICBsZXQgYV9hbmltYXRlVHJhbnNmb3JtX3R5cGUgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidHlwZVwiXG5cbiAgbGV0IGFfaG9yaXpfb3JpZ2luX3ggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJob3Jpei1vcmlnaW4teFwiXG5cbiAgbGV0IGFfaG9yaXpfb3JpZ2luX3kgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJob3Jpei1vcmlnaW4teVwiXG5cbiAgbGV0IGFfaG9yaXpfYWR2X3ggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJob3Jpei1hZHYteFwiXG5cbiAgbGV0IGFfdmVydF9vcmlnaW5feCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInZlcnQtb3JpZ2luLXhcIlxuXG4gIGxldCBhX3ZlcnRfb3JpZ2luX3kgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ2ZXJ0LW9yaWdpbi15XCJcblxuICBsZXQgYV92ZXJ0X2Fkdl95ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidmVydC1hZHYteVwiXG5cbiAgbGV0IGFfdW5pY29kZSA9IHN0cmluZ19hdHRyaWIgXCJ1bmljb2RlXCJcblxuICBsZXQgYV9nbHlwaF9uYW1lID0gc3RyaW5nX2F0dHJpYiBcImdseXBobmFtZVwiXG5cbiAgbGV0IGFfb3JpZW50YXRpb24geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJvcmllbnRhdGlvblwiIHhcblxuICBsZXQgYV9hcmFiaWNfZm9ybSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImFyYWJpYy1mb3JtXCIgeFxuXG4gIGxldCBhX2xhbmcgPSBzdHJpbmdfYXR0cmliIFwibGFuZ1wiXG5cbiAgbGV0IGFfdTEgPSBzdHJpbmdfYXR0cmliIFwidTFcIlxuXG4gIGxldCBhX3UyID0gc3RyaW5nX2F0dHJpYiBcInUyXCJcblxuICBsZXQgYV9nMSA9IHN0cmluZ19hdHRyaWIgXCJnMVwiXG5cbiAgbGV0IGFfZzIgPSBzdHJpbmdfYXR0cmliIFwiZzJcIlxuXG4gIGxldCBhX2sgPSBzdHJpbmdfYXR0cmliIFwia1wiXG5cbiAgbGV0IGFfZm9udF9mYW1pbHkgPSBzdHJpbmdfYXR0cmliIFwiZm9udC1mYW1pbHlcIlxuXG4gIGxldCBhX2ZvbnRfc3R5bGUgPSBzdHJpbmdfYXR0cmliIFwiZm9udC1zdHlsZVwiXG5cbiAgbGV0IGFfZm9udF92YXJpYW50ID0gc3RyaW5nX2F0dHJpYiBcImZvbnQtdmFyaWFudFwiXG5cbiAgbGV0IGFfZm9udF93ZWlnaHQgPSBzdHJpbmdfYXR0cmliIFwiZm9udC13ZWlnaHRcIlxuXG4gIGxldCBhX2ZvbnRfc3RyZXRjaCA9IHN0cmluZ19hdHRyaWIgXCJmb250LXN0cmV0Y2hcIlxuXG4gIGxldCBhX2ZvbnRfc2l6ZSA9IHN0cmluZ19hdHRyaWIgXCJmb250LXNpemVcIlxuXG4gIGxldCBhX3VuaWNvZGVfcmFuZ2UgPSBzdHJpbmdfYXR0cmliIFwidW5pY29kZS1yYW5nZVwiXG5cbiAgbGV0IGFfdW5pdHNfcGVyX2VtID0gc3RyaW5nX2F0dHJpYiBcInVuaXRzLXBlci1lbVwiXG5cbiAgbGV0IGFfc3RlbXYgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdGVtdlwiXG5cbiAgbGV0IGFfc3RlbWggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdGVtaFwiXG5cbiAgbGV0IGFfc2xvcGUgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzbG9wZVwiXG5cbiAgbGV0IGFfY2FwX2hlaWdodCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImNhcC1oZWlnaHRcIlxuXG4gIGxldCBhX3hfaGVpZ2h0ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwieC1oZWlnaHRcIlxuXG4gIGxldCBhX2FjY2VudF9oZWlnaHQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJhY2NlbnQtaGVpZ2h0XCJcblxuICBsZXQgYV9hc2NlbnQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJhc2NlbnRcIlxuXG4gIGxldCBhX3dpZHRocyA9IHN0cmluZ19hdHRyaWIgXCJ3aWR0aHNcIlxuXG4gIGxldCBhX2Jib3ggPSBzdHJpbmdfYXR0cmliIFwiYmJveFwiXG5cbiAgbGV0IGFfaWRlb2dyYXBoaWMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJpZGVvZ3JhcGhpY1wiXG5cbiAgbGV0IGFfYWxwaGFiZXRpYyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImFscGhhYmV0aWNcIlxuXG4gIGxldCBhX21hdGhlbWF0aWNhbCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcIm1hdGhlbWF0aWNhbFwiXG5cbiAgbGV0IGFfaGFuZ2luZyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImhhbmdpbmdcIlxuXG4gIGxldCBhX3ZpZGVvZ3JhcGhpYyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInYtaWRlb2dyYXBoaWNcIlxuXG4gIGxldCBhX3ZfYWxwaGFiZXRpYyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInYtYWxwaGFiZXRpY1wiXG5cbiAgbGV0IGFfdl9tYXRoZW1hdGljYWwgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ2LW1hdGhlbWF0aWNhbFwiXG5cbiAgbGV0IGFfdl9oYW5naW5nID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidi1oYW5naW5nXCJcblxuICBsZXQgYV91bmRlcmxpbmVfcG9zaXRpb24gPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInVuZGVybGluZS1wb3NpdGlvblwiXG5cbiAgbGV0IGFfdW5kZXJsaW5lX3RoaWNrbmVzcyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidW5kZXJsaW5lLXRoaWNrbmVzc1wiXG5cbiAgbGV0IGFfc3RyaWtldGhyb3VnaF9wb3NpdGlvbiA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic3RyaWtldGhyb3VnaC1wb3NpdGlvblwiXG5cbiAgbGV0IGFfc3RyaWtldGhyb3VnaF90aGlja25lc3MgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN0cmlrZXRocm91Z2gtdGhpY2tuZXNzXCJcblxuICBsZXQgYV9vdmVybGluZV9wb3NpdGlvbiA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcIm92ZXJsaW5lLXBvc2l0aW9uXCJcblxuICBsZXQgYV9vdmVybGluZV90aGlja25lc3MgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcIm92ZXJsaW5lLXRoaWNrbmVzc1wiXG5cbiAgbGV0IGFfc3RyaW5nID0gc3RyaW5nX2F0dHJpYiBcInN0cmluZ1wiXG5cbiAgbGV0IGFfbmFtZSA9IHN0cmluZ19hdHRyaWIgXCJuYW1lXCJcblxuICBsZXQgYV9hbGlnbm1lbnRfYmFzZWxpbmUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYWxpZ25tZW50X2Jhc2VsaW5lIFwiYWxpZ25tZW50LWJhc2VsaW5lXCIgeFxuXG4gIGxldCBhX2RvbWluYW50X2Jhc2VsaW5lIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2RvbWluYW50X2Jhc2VsaW5lIFwiZG9taW5hbnQtYmFzZWxpbmVcIiB4XG5cbiAgKCoqIEphdmFzY3JpcHQgZXZlbnRzICopXG5cbiAgbGV0IGFfb25hYm9ydCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYWJvcnRcIlxuICBsZXQgYV9vbmFjdGl2YXRlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25hY3RpdmF0ZVwiXG4gIGxldCBhX29uYmVnaW4gPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmJlZ2luXCJcbiAgbGV0IGFfb25lbmQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmVuZFwiXG4gIGxldCBhX29uZXJyb3IgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmVycm9yXCJcbiAgbGV0IGFfb25mb2N1c2luID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25mb2N1c2luXCJcbiAgbGV0IGFfb25mb2N1c291dCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZm9jdXNvdXRcIlxuICBsZXQgYV9vbmxvYWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmxvYWRcIlxuICBsZXQgYV9vbnJlcGVhdCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucmVwZWF0XCJcbiAgbGV0IGFfb25yZXNpemUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnJlc2l6ZVwiXG4gIGxldCBhX29uc2Nyb2xsID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zY3JvbGxcIlxuICBsZXQgYV9vbnVubG9hZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udW5sb2FkXCJcbiAgbGV0IGFfb256b29tID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib256b29tXCJcblxuICAoKiogSmF2YXNjcmlwdCBtb3VzZSBldmVudHMgKilcblxuICBsZXQgYV9vbmNsaWNrID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25jbGlja1wiXG4gIGxldCBhX29ubW91c2Vkb3duID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZWRvd25cIlxuICBsZXQgYV9vbm1vdXNldXAgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNldXBcIlxuICBsZXQgYV9vbm1vdXNlb3ZlciA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2VvdmVyXCJcbiAgbGV0IGFfb25tb3VzZW91dCA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2VvdXRcIlxuICBsZXQgYV9vbm1vdXNlbW92ZSA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2Vtb3ZlXCJcblxuICAoKiogSmF2YXNjcmlwdCB0b3VjaCBldmVudHMgKilcbiAgbGV0IGFfb250b3VjaHN0YXJ0ID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaHN0YXJ0XCJcbiAgbGV0IGFfb250b3VjaGVuZCA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udG91Y2hlbmRcIlxuICBsZXQgYV9vbnRvdWNobW92ZSA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udG91Y2htb3ZlXCJcbiAgbGV0IGFfb250b3VjaGNhbmNlbCA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udG91Y2hjYW5jZWxcIlxuXG4gIGxldCBhX3N0b3BfY29sb3IgPSBjb2xvcl9hdHRyaWIgXCJzdG9wLWNvbG9yXCJcblxuICBsZXQgYV9zdG9wX29wYWNpdHkgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdG9wLW9wYWNpdHlcIlxuXG4gIGxldCBhX3N0cm9rZSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3BhaW50IFwic3Ryb2tlXCJcblxuICBsZXQgYV9zdHJva2Vfd2lkdGggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9sZW5ndGggXCJzdHJva2Utd2lkdGhcIlxuXG4gIGxldCBhX3N0cm9rZV9saW5lY2FwIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwic3Ryb2tlLWxpbmVjYXBcIiB4XG5cbiAgbGV0IGFfc3Ryb2tlX2xpbmVqb2luIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwic3Ryb2tlLWxpbmVqb2luXCIgeFxuXG4gIGxldCBhX3N0cm9rZV9taXRlcmxpbWl0ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdHJva2UtbWl0ZXJsaW1pdFwiXG5cbiAgbGV0IGFfc3Ryb2tlX2Rhc2hhcnJheSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9zdHJva2VkYXNoYXJyYXkgXCJzdHJva2UtZGFzaGFycmF5XCIgeFxuXG4gIGxldCBhX3N0cm9rZV9kYXNob2Zmc2V0ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9sZW5ndGggXCJzdHJva2UtZGFzaG9mZnNldFwiXG5cbiAgbGV0IGFfc3Ryb2tlX29wYWNpdHkgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN0cm9rZS1vcGFjaXR5XCJcblxuICAoKiB4bGluayBuYW1lc3BhY2UgZ2l2ZW4gYSBuaWNrbmFtZSBzaW5jZSBzb21lIGF0dHJpYnV0ZXMgbWFuZGF0ZWQgYnlcbiAgICAgdGhlIHN2ZyBzdGFuZGFyZCBzdWNoIGFzIHhsaW5rOmhyZWYgbGl2ZSBpbiB0aGF0IG5hbWVzcGFjZSwgYW5kIHdlXG4gICAgIHJlZmVyIHRvIHRoZW0gYXMgXCJ4bGluazp3aGF0ZXZlclwiIChzZWUgYV94bGlua19ocmVmIG9yIGFfeGxpbmtzaG93KVxuICAqKVxuICBsZXQgc3ZnID8oYSA9IFtdKSBjaGlsZHJlbiA9XG4gICAgbGV0IGF0dHJpYnMgPVxuICAgICAgc3RyaW5nX2F0dHJpYiBcInhtbG5zXCIgKFcucmV0dXJuIFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIilcbiAgICAgIDo6IHN0cmluZ19hdHRyaWIgXCJ4bWxuczp4bGlua1wiIChXLnJldHVybiBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIilcbiAgICAgIDo6IHRvX3htbGF0dHJpYnMgYVxuICAgIGluXG4gICAgc3RhciB+YTooYXR0cmlicykgXCJzdmdcIiBjaGlsZHJlblxuXG4gICgqIGFsc28gZ2VuZXJhdGVkICopXG4gIGxldCBnID0gc3RhciBcImdcIlxuXG4gIGxldCBkZWZzID0gc3RhciBcImRlZnNcIlxuXG4gIGxldCBkZXNjID0gdW5hcnkgXCJkZXNjXCJcblxuICBsZXQgdGl0bGUgPSB1bmFyeSBcInRpdGxlXCJcblxuICBsZXQgc3ltYm9sID0gc3RhciBcInN5bWJvbFwiXG5cbiAgbGV0IHVzZSA9IHN0YXIgXCJ1c2VcIlxuXG4gIGxldCBpbWFnZSA9IHN0YXIgXCJpbWFnZVwiXG5cbiAgbGV0IHN3aXRjaCA9IHN0YXIgXCJzd2l0Y2hcIlxuXG4gIGxldCBzdHlsZSA9IHVuYXJ5IFwic3R5bGVcIlxuXG4gIGxldCBwYXRoID0gc3RhciBcInBhdGhcIlxuXG4gIGxldCByZWN0ID0gc3RhciBcInJlY3RcIlxuXG4gIGxldCBjaXJjbGUgPSBzdGFyIFwiY2lyY2xlXCJcblxuICBsZXQgZWxsaXBzZSA9IHN0YXIgXCJlbGxpcHNlXCJcblxuICBsZXQgbGluZSA9IHN0YXIgXCJsaW5lXCJcblxuICBsZXQgcG9seWxpbmUgPSBzdGFyIFwicG9seWxpbmVcIlxuXG4gIGxldCBwb2x5Z29uID0gc3RhciBcInBvbHlnb25cIlxuXG4gIGxldCB0ZXh0ID0gc3RhciBcInRleHRcIlxuXG4gIGxldCB0c3BhbiA9IHN0YXIgXCJ0c3BhblwiXG5cbiAgbGV0IHRyZWYgPSBzdGFyIFwidHJlZlwiXG5cbiAgbGV0IHRleHRQYXRoID0gc3RhciBcInRleHRQYXRoXCJcblxuICBsZXQgYWx0R2x5cGggPSB1bmFyeSBcImFsdEdseXBoXCJcblxuICBsZXQgYWx0R2x5cGhEZWYgPSB1bmFyeSBcImFsdEdseXBoRGVmXCJcblxuICBsZXQgYWx0R2x5cGhJdGVtID0gc3RhciBcImFsdEdseXBoSXRlbVwiXG5cbiAgbGV0IGdseXBoUmVmID0gbnVsbGFyeSBcImdseXBoUmVmXCJcblxuICBsZXQgbWFya2VyID0gc3RhciBcIm1hcmtlclwiXG5cbiAgbGV0IGNvbG9yX3Byb2ZpbGUgPSBzdGFyIFwiY29sb3ItcHJvZmlsZVwiXG5cbiAgbGV0IGxpbmVhckdyYWRpZW50ID0gc3RhciBcImxpbmVhckdyYWRpZW50XCJcblxuICBsZXQgcmFkaWFsR3JhZGllbnQgPSBzdGFyIFwicmFkaWFsR3JhZGllbnRcIlxuXG4gIGxldCBzdG9wID0gc3RhciBcInN0b3BcIlxuXG4gIGxldCBwYXR0ZXJuID0gc3RhciBcInBhdHRlcm5cIlxuXG4gIGxldCBjbGlwUGF0aCA9IHN0YXIgXCJjbGlwUGF0aFwiXG5cbiAgbGV0IGZpbHRlciA9IHN0YXIgXCJmaWx0ZXJcIlxuXG4gIGxldCBmZURpc3RhbnRMaWdodCA9IHN0YXIgXCJmZURpc3RhbnRMaWdodFwiXG5cbiAgbGV0IGZlUG9pbnRMaWdodCA9IHN0YXIgXCJmZVBvaW50TGlnaHRcIlxuXG4gIGxldCBmZVNwb3RMaWdodCA9IHN0YXIgXCJmZVNwb3RMaWdodFwiXG5cbiAgbGV0IGZlQmxlbmQgPSBzdGFyIFwiZmVCbGVuZFwiXG5cbiAgbGV0IGZlQ29sb3JNYXRyaXggPSBzdGFyIFwiZmVDb2xvck1hdHJpeFwiXG5cbiAgbGV0IGZlQ29tcG9uZW50VHJhbnNmZXIgPSBzdGFyIFwiZmVDb21wb25lbnRUcmFuc2ZlclwiXG5cbiAgbGV0IGZlRnVuY0EgPSBzdGFyIFwiZmVGdW5jQVwiXG5cbiAgbGV0IGZlRnVuY0cgPSBzdGFyIFwiZmVGdW5jR1wiXG5cbiAgbGV0IGZlRnVuY0IgPSBzdGFyIFwiZmVGdW5jQlwiXG5cbiAgbGV0IGZlRnVuY1IgPSBzdGFyIFwiZmVGdW5jUlwiXG5cbiAgbGV0IGZlQ29tcG9zaXRlID0gc3RhciBcImZlQ29tcG9zaXRlXCJcblxuICBsZXQgZmVDb252b2x2ZU1hdHJpeCA9IHN0YXIgXCJmZUNvbnZvbHZlTWF0cml4XCJcblxuICBsZXQgZmVEaWZmdXNlTGlnaHRpbmcgPSBzdGFyIFwiZmVEaWZmdXNlTGlnaHRpbmdcIlxuXG4gIGxldCBmZURpc3BsYWNlbWVudE1hcCA9IHN0YXIgXCJmZURpc3BsYWNlbWVudE1hcFwiXG5cbiAgbGV0IGZlRmxvb2QgPSBzdGFyIFwiZmVGbG9vZFwiXG5cbiAgbGV0IGZlR2F1c3NpYW5CbHVyID0gc3RhciBcImZlR2F1c3NpYW5CbHVyXCJcblxuICBsZXQgZmVJbWFnZSA9IHN0YXIgXCJmZUltYWdlXCJcblxuICBsZXQgZmVNZXJnZSA9IHN0YXIgXCJmZU1lcmdlXCJcblxuICBsZXQgZmVNb3JwaG9sb2d5ID0gc3RhciBcImZlTW9ycGhvbG9neVwiXG5cbiAgbGV0IGZlT2Zmc2V0ID0gc3RhciBcImZlT2Zmc2V0XCJcblxuICBsZXQgZmVTcGVjdWxhckxpZ2h0aW5nID0gc3RhciBcImZlU3BlY3VsYXJMaWdodGluZ1wiXG5cbiAgbGV0IGZlVGlsZSA9IHN0YXIgXCJmZVRpbGVcIlxuXG4gIGxldCBmZVR1cmJ1bGVuY2UgPSBzdGFyIFwiZmVUdXJidWxlbmNlXCJcblxuICBsZXQgY3Vyc29yID0gc3RhciBcImN1cnNvclwiXG5cbiAgbGV0IGEgPSBzdGFyIFwiYVwiXG5cbiAgbGV0IHZpZXcgPSBzdGFyIFwidmlld1wiXG5cbiAgbGV0IHNjcmlwdCA9IHVuYXJ5IFwic2NyaXB0XCJcblxuICBsZXQgYW5pbWF0ZSA9IHN0YXIgXCJhbmltYXRlXCJcblxuICBsZXQgYW5pbWF0aW9uID0gYW5pbWF0ZVxuXG4gIGxldCBzZXQgPSBzdGFyIFwic2V0XCJcblxuICBsZXQgYW5pbWF0ZU1vdGlvbiA9IHN0YXIgXCJhbmltYXRlTW90aW9uXCJcblxuICBsZXQgbXBhdGggPSBzdGFyIFwibXBhdGhcIlxuXG4gIGxldCBhbmltYXRlQ29sb3IgPSBzdGFyIFwiYW5pbWF0ZUNvbG9yXCJcblxuICBsZXQgYW5pbWF0ZVRyYW5zZm9ybSA9IHN0YXIgXCJhbmltYXRlVHJhbnNmb3JtXCJcblxuICBsZXQgZm9udCA9IHN0YXIgXCJmb250XCJcblxuICBsZXQgZ2x5cGggPSBzdGFyIFwiZ2x5cGhcIlxuXG4gIGxldCBtaXNzaW5nX2dseXBoID0gc3RhciBcIm1pc3NpbmctZ2x5cGhcIlxuXG4gIGxldCBoa2VybiA9IG51bGxhcnkgXCJoa2VyblwiXG5cbiAgbGV0IHZrZXJuID0gbnVsbGFyeSBcInZrZXJuXCJcblxuICBsZXQgZm9udF9mYWNlID0gbnVsbGFyeSBcImZvbnQtZmFjZVwiXG5cbiAgbGV0IGZvbnRfZmFjZV9zcmMgPSBzdGFyIFwiZm9udC1mYWNlLXNyY1wiXG5cbiAgbGV0IGZvbnRfZmFjZV91cmkgPSBzdGFyIFwiZm9udC1mYWNlLXVyaVwiXG5cbiAgbGV0IGZvbnRfZmFjZV9mb3JtYXQgPSBudWxsYXJ5IFwiZm9udC1mYWNlLXVyaVwiXG5cbiAgbGV0IGZvbnRfZmFjZV9uYW1lID0gbnVsbGFyeSBcImZvbnQtZmFjZS1uYW1lXCJcblxuICB0eXBlIGRvYyA9IFsgYFN2ZyBdIGVsdFxuICBsZXQgZG9jX3RvZWx0IHggPSB4XG5cbiAgbW9kdWxlIEkgPSBYbWxfc3RyZWFtLkltcG9ydChYbWwpXG4gIGxldCBvZl9zZXEgcyA9IHRvdGwgQEAgSS5vZl9zZXEgc1xuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcblxuICAgIGxldCBkYXRhIHMgPSBYbWwuZW5jb2RlZHBjZGF0YSBzXG5cbiAgICBsZXQgbGVhZiB0YWcgP2EgKCkgPSBYbWwubGVhZiA/YSB0YWdcblxuICAgIGxldCBub2RlIHRhZyA/YSBlbHRzID0gWG1sLm5vZGUgP2EgdGFnIGVsdHNcblxuICAgIGxldCBjb2VyY2VfZWx0IHggPSB4XG5cbiAgICBsZXQgZmxvYXRfYXR0cmliID0gWG1sLmZsb2F0X2F0dHJpYlxuXG4gICAgbGV0IGludF9hdHRyaWIgPSBYbWwuaW50X2F0dHJpYlxuXG4gICAgbGV0IHN0cmluZ19hdHRyaWIgPSBYbWwuc3RyaW5nX2F0dHJpYlxuXG4gICAgbGV0IHVyaV9hdHRyaWIgYSBzID0gWG1sLnVyaV9hdHRyaWIgYSBzXG5cbiAgICBsZXQgc3BhY2Vfc2VwX2F0dHJpYiA9IFhtbC5zcGFjZV9zZXBfYXR0cmliXG5cbiAgICBsZXQgY29tbWFfc2VwX2F0dHJpYiA9IFhtbC5jb21tYV9zZXBfYXR0cmliXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgV3JhcHBlZF9mdW5jdGlvbnNcbiAgICAoWG1sIDogWG1sX3NpZ3MuVCB3aXRoIHR5cGUgKCdhLCdiKSBXLmZ0ID0gJ2EgLT4gJ2IpID1cbnN0cnVjdFxuXG4gIG1vZHVsZSBYbWwgPSBYbWxcblxuICBsZXQgc3RyaW5nX29mX2FsaWdubWVudF9iYXNlbGluZSA9IGZ1bmN0aW9uXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgYEJhc2VsaW5lIC0+IFwiYmFzZWxpbmVcIlxuICAgIHwgYEJlZm9yZV9lZGdlIC0+IFwiYmVmb3JlLWVkZ2VcIlxuICAgIHwgYFRleHRfYmVmb3JlX2VkZ2UgLT4gXCJ0ZXh0LWJlZm9yZS1lZGdlXCJcbiAgICB8IGBNaWRkbGUgLT4gXCJtaWRkbGVcIlxuICAgIHwgYENlbnRyYWwgLT4gXCJjZW50cmFsXCJcbiAgICB8IGBBZnRlcl9lZGdlIC0+IFwiYWZ0ZXItZWRnZVwiXG4gICAgfCBgVGV4dF9hZnRlcl9lZGdlIC0+IFwidGV4dC1hZnRlci1lZGdlXCJcbiAgICB8IGBJZGVvZ3JhcGhpYyAtPiBcImlkZW9ncmFwaGljXCJcbiAgICB8IGBBbHBoYWJldGljIC0+IFwiYWxwaGFiZXRpY1wiXG4gICAgfCBgSGFuZ2luZy0+IFwiaGFuZ2luZ1wiXG4gICAgfCBgTWF0aGVtYXRpY2FsIC0+IFwibWF0aGVtYXRpY2FsXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG5cbiAgbGV0IHN0cmluZ19vZl9iaWdfdmFyaWFudCA9IGZ1bmN0aW9uXG4gICAgfCBgQSAtPiBcImFcIlxuICAgIHwgYEFic29sdXRlX2NvbG9yaW1ldHJpYyAtPiBcImFic29sdXRlX2NvbG9yaW1ldHJpY1wiXG4gICAgfCBgQWxpZ24gLT4gXCJcIlxuICAgIHwgYEFsd2F5cyAtPiBcImFsd2F5c1wiXG4gICAgfCBgQXRvcCAtPiBcImF0b3BcIlxuICAgIHwgYEFyaXRobWV0aWMgLT4gXCJhcml0aG1ldGljXCJcbiAgICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gICAgfCBgQiAtPiBcImJcIlxuICAgIHwgYEJldmVyIC0+IFwiYmV2ZWxcIlxuICAgIHwgYEJsaW5rIC0+IFwiYmxpbmtcIlxuICAgIHwgYEJ1dHQgLT4gXCJidXR0XCJcbiAgICB8IGBDU1MgLT4gXCJDU1NcIlxuICAgIHwgYERhcmtlbiAtPiBcImRhcmtlblwiXG4gICAgfCBgRGVmYXVsdCAtPiBcImRlZmF1bHRcIlxuICAgIHwgYERpbGF0ZSAtPiBcImRpbGF0ZVwiXG4gICAgfCBgRGlzYWJsZSAtPiBcImRpc2FibGVcIlxuICAgIHwgYERpc2NyZXRlIC0+IFwiZGlzY3JldGVcIlxuICAgIHwgYER1cGxpY2F0ZSAtPiBcImR1cGxpY2F0ZVwiXG4gICAgfCBgRW5kIC0+IFwiZW5kXCJcbiAgICB8IGBFcm9kZSAtPiBcImVyb2RlXCJcbiAgICB8IGBFeGFjdCAtPiBcImV4YWN0XCJcbiAgICB8IGBGcmFjdGFsTm9pc2UgLT4gXCJmcmFjdGFsTm9pc2VcIlxuICAgIHwgYEZyZWV6ZSAtPiBcImZyZWV6ZVwiXG4gICAgfCBgSHVlUm90YXRlIC0+IFwiaHVlUm90YXRlXCJcbiAgICB8IGBHIC0+IFwiZ1wiXG4gICAgfCBgR2FtbWEgLT4gXCJnYW1tYVwiXG4gICAgfCBgR2VvbWV0cmljUHJlY2lzaW9uIC0+IFwiZ2VvbWV0cmljUHJlY2lzaW9uXCJcbiAgICB8IGBIIC0+IFwiaFwiXG4gICAgfCBgSWRlbnRpdHkgLT4gXCJpZGVudGl0eVwiXG4gICAgfCBgSW4gLT4gXCJpblwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBJc29sYXRlZCAtPiBcImlzb2xhdGVkXCJcbiAgICB8IGBMaWdodGVuIC0+IFwibGlnaHRlblwiXG4gICAgfCBgTGluZV90aHJvdWdoIC0+IFwibGluZS10aHJvdWdoXCJcbiAgICB8IGBMaW5lYXIgLT4gXCJsaW5lYXJcIlxuICAgIHwgYEx1bWluYW5jZVRvQWxwaGEgLT4gXCJsdW1pbmFuY2VUb0FscGhhXCJcbiAgICB8IGBNYWduaWZ5IC0+IFwibWFnbmlmeVwiXG4gICAgfCBgTWF0cml4IC0+IFwibWF0cml4XCJcbiAgICB8IGBNZWRpYWwgLT4gXCJtZWRpYWxcIlxuICAgIHwgYE1pZGRsZSAtPiBcIm1pZGRsZVwiXG4gICAgfCBgTWl0ZXIgLT4gXCJtaXRlclwiXG4gICAgfCBgTXVsdGlwbHkgLT4gXCJtdWx0aXBseVwiXG4gICAgfCBgTmV2ZXIgLT4gXCJuZXZlclwiXG4gICAgfCBgTmV3IC0+IFwibmV3XCJcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBOb1N0aXRjaCAtPiBcIm5vU3RpdGNoXCJcbiAgICB8IGBPYmplY3RCb3VuZGluZ0JveCAtPiBcIm9iamVjdEJvdW5kaW5nQm94XCJcbiAgICB8IGBPbkxvYWQgLT4gXCJvbkxvYWRcIlxuICAgIHwgYE9uUmVxdWVzdCAtPiBcIm9uUmVxdWVzdFwiXG4gICAgfCBgT3B0aW1pemVMZWdpYmlsaXR5IC0+IFwib3B0aW1pemVMZWdpYmlsaXR5XCJcbiAgICB8IGBPcHRpbWl6ZVNwZWVkIC0+IFwib3B0aW1pemVTcGVlZFwiXG4gICAgfCBgT3RoZXIgLT4gXCJvdGhlclwiXG4gICAgfCBgT3V0IC0+IFwib3V0XCJcbiAgICB8IGBPdmVyIC0+IFwib3ZlclwiXG4gICAgfCBgT3ZlcmxpbmUgLT4gXCJvdmVybGluZVwiXG4gICAgfCBgUGFjZWQgLT4gXCJwYWNlZFwiXG4gICAgfCBgUGFkIC0+IFwicGFkXCJcbiAgICB8IGBQZXJjZXB0dWFsIC0+IFwicGVyY2VwdHVhbFwiXG4gICAgfCBgUHJlc2VydmUgLT4gXCJwcmVzZXJ2ZVwiXG4gICAgfCBgUiAtPiBcInJcIlxuICAgIHwgYFJlZmxlY3QgLT4gXCJyZWZsZWN0XCJcbiAgICB8IGBSZW1vdmUgLT4gXCJyZW1vdmVcIlxuICAgIHwgYFJlcGVhdCAtPiBcInJlcGVhdFwiXG4gICAgfCBgUmVwbGFjZSAtPiBcInJlcGxhY2VcIlxuICAgIHwgYFJlbGF0aXZlX2NvbG9yaW1ldHJpYyAtPiBcInJlbGF0aXZlX2NvbG9yaW1ldHJpY1wiXG4gICAgfCBgUm90YXRlIC0+IFwicm90YXRlXCJcbiAgICB8IGBSb3VuZCAtPiBcInJvdW5kXCJcbiAgICB8IGBTYXR1cmF0ZSAtPiBcInNhdHVyYXRlXCJcbiAgICB8IGBTYXR1cmF0aW9uIC0+IFwic2F0dXJhdGlvblwiXG4gICAgfCBgU2NhbGUgLT4gXCJzY2FsZVwiXG4gICAgfCBgU2NyZWVuIC0+IFwic2NyZWVuXCJcbiAgICB8IGBTa2V3WCAtPiBcInNrZXdYXCJcbiAgICB8IGBTa2V3WSAtPiBcInNrZXdZXCJcbiAgICB8IGBTcGFjaW5nIC0+IFwic3BhY2luZ1wiXG4gICAgfCBgU3BhY2luZ0FuZEdseXBocyAtPiBcInNwYWNpbmdBbmRHbHlwaHNcIlxuICAgIHwgYFNwbGluZSAtPiBcInNwbGluZVwiXG4gICAgfCBgU3F1YXJlIC0+IFwic3F1YXJlXCJcbiAgICB8IGBTdGFydCAtPiBcInN0YXJ0XCJcbiAgICB8IGBTdGl0Y2ggLT4gXCJzdGl0Y2hcIlxuICAgIHwgYFN0cmV0Y2ggLT4gXCJzdHJldGNoXCJcbiAgICB8IGBTdHJva2VXaWR0aCAtPiBcInN0cm9rZS13aWR0aFwiXG4gICAgfCBgU3VtIC0+IFwic3VtXCJcbiAgICB8IGBUYWJsZSAtPiBcInRhYmxlXCJcbiAgICB8IGBUZXJtaW5hbCAtPiBcInRlcm1pbmFsXCJcbiAgICB8IGBUcmFuc2xhdGUgLT4gXCJ0cmFuc2xhdGVcIlxuICAgIHwgYFR1cmJ1bGVuY2UgLT4gXCJ0dXJidWxlbmNlXCJcbiAgICB8IGBVbmRlcmxpbmUgLT4gXCJ1bmRlcmxpbmVcIlxuICAgIHwgYFVzZXJTcGFjZU9uVXNlIC0+IFwidXNlclNwYWNlT25Vc2VcIlxuICAgIHwgYFYgLT4gXCJ2XCJcbiAgICB8IGBXaGVuTm90QWN0aXZlIC0+IFwid2hlbk5vdEFjdGl2ZVwiXG4gICAgfCBgV3JhcCAtPiBcIndyYXBcIlxuICAgIHwgYFhNTCAtPiBcIlhNTFwiXG4gICAgfCBgWG9yIC0+IFwieG9yXCJcblxuICBsZXQgc3RyaW5nX29mX2Jvb2wgPSBzdHJpbmdfb2ZfYm9vbFxuXG4gIGxldCBzdHJpbmdfb2ZfY29vcmRzID1cbiAgICBsaXN0IChmdW4gKGEsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwiJWcsICVnXCIgYSBiKVxuXG4gIGxldCBzdHJpbmdfb2ZfZG9taW5hbnRfYmFzZWxpbmUgPSBmdW5jdGlvblxuICAgIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgICB8IGBVc2Vfc2NyaXB0IC0+IFwidXNlc2NyaXB0XCJcbiAgICB8IGBOb19jaGFuZ2UgLT4gXCJub2NoYW5nZVwiXG4gICAgfCBgUmVzZXRfc2l6ZSAtPiBcInJlc2V0c2l6ZVwiXG4gICAgfCBgSWRlb2dyYXBoaWMgLT4gXCJpZGVvZ3JhcGhpY1wiXG4gICAgfCBgQWxwaGFiZXRpYyAtPiBcImFscGhhYmV0aWNcIlxuICAgIHwgYEhhbmdpbmcgLT4gXCJoYW5naW5nXCJcbiAgICB8IGBNYXRoZW1hdGljYWwgLT4gXCJtYXRoZW1hdGljYWxcIlxuICAgIHwgYENlbnRyYWwgLT4gXCJjZW50cmFsXCJcbiAgICB8IGBNaWRkbGUgLT4gXCJtaWRkbGVcIlxuICAgIHwgYFRleHRfYWZ0ZXJfZWRnZSAtPiBcInRleHRhZnRlcmVkZ2VcIlxuICAgIHwgYFRleHRfYmVmb3JlX2VkZ2UgLT4gXCJ0ZXh0YmVmb3JlZWRnZVwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuXG5cbiAgbGV0IHN0cmluZ19vZl9pbl92YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBgU291cmNlR3JhcGhpYyAtPiBcInNvdXJjZUdyYXBoaWNcIlxuICAgIHwgYFNvdXJjZUFscGhhIC0+IFwic291cmNlQWxwaGFcIlxuICAgIHwgYEJhY2tncm91bmRJbWFnZSAtPiBcImJhY2tncm91bmRJbWFnZVwiXG4gICAgfCBgQmFja2dyb3VuZEFscGhhIC0+IFwiYmFja2dyb3VuZEFscGhhXCJcbiAgICB8IGBGaWxsUGFpbnQgLT4gXCJmaWxsUGFpbnRcIlxuICAgIHwgYFN0cm9rZVBhaW50IC0+IFwic3Ryb2tlUGFpbnRcIlxuICAgIHwgYFJlZiBfc3ZnIC0+IF9zdmdcblxuICBsZXQgc3RyaW5nX29mX2ludCA9IHN0cmluZ19vZl9pbnRcblxuICBsZXQgc3RyaW5nX29mX2xlbmd0aCA9IFVuaXQuc3RyaW5nX29mX2xlbmd0aFxuXG4gIGxldCBzdHJpbmdfb2ZfbGVuZ3RocyA9IGxpc3Qgc3RyaW5nX29mX2xlbmd0aFxuXG4gIGxldCBzdHJpbmdfb2ZfbnVtYmVyID0gWG1sX3ByaW50LnN0cmluZ19vZl9udW1iZXJcblxuICBsZXQgc3RyaW5nX29mX3BlcmNlbnRhZ2UgeCA9IChzdHJpbmdfb2ZfbnVtYmVyIHgpIF4gXCIlXCJcblxuICBsZXQgc3RyaW5nX29mX2ZvdXJmbG9hdHMgKGEsIGIsIGMsIGQpID1cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzICVzICVzXCJcbiAgICAgIChzdHJpbmdfb2ZfbnVtYmVyIGEpIChzdHJpbmdfb2ZfbnVtYmVyIGIpIChzdHJpbmdfb2ZfbnVtYmVyIGMpIChzdHJpbmdfb2ZfbnVtYmVyIGQpXG5cbiAgbGV0IHN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyID0gZnVuY3Rpb25cbiAgICB8IHgsIFNvbWUgeSAtPiBQcmludGYuc3ByaW50ZiBcIiVnLCAlZ1wiIHggeVxuICAgIHwgeCwgTm9uZSAtPiBQcmludGYuc3ByaW50ZiBcIiVnXCIgeFxuXG4gIGxldCBzdHJpbmdfb2ZfbnVtYmVycyA9IGxpc3Qgc3RyaW5nX29mX251bWJlclxuXG4gIGxldCBzdHJpbmdfb2ZfbnVtYmVyc19zZW1pY29sb24gPSBsaXN0IH5zZXA6XCI7IFwiIHN0cmluZ19vZl9udW1iZXJcblxuICBsZXQgc3RyaW5nX29mX29mZnNldCA9IGZ1bmN0aW9uXG4gICAgfCBgTnVtYmVyIHggLT4gc3RyaW5nX29mX251bWJlciB4XG4gICAgfCBgUGVyY2VudGFnZSB4IC0+IHN0cmluZ19vZl9wZXJjZW50YWdlIHhcblxuICBsZXQgc3RyaW5nX29mX29yaWVudCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IFwiYXV0b1wiXG4gICAgfCBTb21lIF9fc3ZnIC0+IHN0cmluZ19vZl9hbmdsZSBfX3N2Z1xuXG4gIGxldCBzdHJpbmdfb2ZfcGFpbnQgPSBzdHJpbmdfb2ZfcGFpbnRcblxuICBsZXQgc3RyaW5nX29mX2ZpbGxfcnVsZSA9IHN0cmluZ19vZl9maWxsX3J1bGVcblxuICBsZXQgc3RyaW5nX29mX3N0cm9rZWRhc2hhcnJheSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBcIm5vbmVcIlxuICAgIHwgbCAtPiBsaXN0IHN0cmluZ19vZl9sZW5ndGggbFxuXG4gIGxldCBzdHJpbmdfb2ZfdHJhbnNmb3JtID0gZnVuY3Rpb25cbiAgICB8IGBNYXRyaXggKGEsIGIsIGMsIGQsIGUsIGYpIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIm1hdHJpeCglZyAlZyAlZyAlZyAlZyAlZylcIiBhIGIgYyBkIGUgZlxuICAgIHwgYFRyYW5zbGF0ZSB4IC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcInRyYW5zbGF0ZSglcylcIlxuICAgICAgICAoc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgeClcbiAgICB8IGBTY2FsZSB4IC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcInNjYWxlKCVzKVwiIChzdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciB4KVxuICAgIHwgYFJvdGF0ZSAoKGFuZ2xlLCB4KSkgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwicm90YXRlKCVzICVzKVwiIChzdHJpbmdfb2ZfYW5nbGUgYW5nbGUpXG4gICAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICAgIHwgU29tZSAoKHgsIHkpKSAtPiBQcmludGYuc3ByaW50ZiBcIiVnICVnXCIgeCB5XG4gICAgICAgICB8IE5vbmUgLT4gXCJcIilcbiAgICB8IGBTa2V3WCBhbmdsZSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJza2V3WCglcylcIiAoc3RyaW5nX29mX2FuZ2xlIGFuZ2xlKVxuICAgIHwgYFNrZXdZIGFuZ2xlIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcInNrZXdZKCVzKVwiIChzdHJpbmdfb2ZfYW5nbGUgYW5nbGUpXG5cbiAgbGV0IHN0cmluZ19vZl90cmFuc2Zvcm1zIGwgPVxuICAgIFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHN0cmluZ19vZl90cmFuc2Zvcm0gbClcblxuZW5kXG5cbm1vZHVsZSBNYWtlXG4gICAgKFhtbCA6IFhtbF9zaWdzLlQgd2l0aCB0eXBlICgnYSwgJ2IpIFcuZnQgPSAoJ2EgLT4gJ2IpKSA9XG4gIE1ha2Vfd2l0aF93cmFwcGVkX2Z1bmN0aW9ucyhYbWwpKFdyYXBwZWRfZnVuY3Rpb25zKFhtbCkpXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDA0IGJ5IFRob3JzdGVuIE9obCA8b2hsQHBoeXNpay51bmktd3VlcnpidXJnLmRlPlxuICogQ29weXJpZ2h0IChDKSAyMDA3IGJ5IFZpbmNlbnQgQmFsYXQsIEdhYnJpZWwgS2VybmVpc1xuICogQ29weXJpZ2h0IChDKSAyMDEwIGJ5IENlY2lsZSBIZXJiZWxpblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxubW9kdWxlIE1ha2Vfd2l0aF93cmFwcGVkX2Z1bmN0aW9uc1xuXG4gICAgKFhtbCA6IFhtbF9zaWdzLlQpXG4gICAgKEMgOiBIdG1sX3NpZ3MuV3JhcHBlZF9mdW5jdGlvbnMgd2l0aCBtb2R1bGUgWG1sID0gWG1sKVxuICAgIChTdmcgOiBTdmdfc2lncy5UIHdpdGggbW9kdWxlIFhtbCA6PSBYbWwpID1cblxuc3RydWN0XG5cbiAgbW9kdWxlIFhtbCA9IFhtbFxuXG4gIG1vZHVsZSBXID0gWG1sLldcblxuICBtb2R1bGUgSW5mbyA9IHN0cnVjdFxuICAgIGxldCBjb250ZW50X3R5cGUgPSBcInRleHQvaHRtbFwiXG4gICAgbGV0IGFsdGVybmF0aXZlX2NvbnRlbnRfdHlwZXMgPSBbXCJhcHBsaWNhdGlvbi94aHRtbCt4bWxcIjtcImFwcGxpY2F0aW9uL3htbFwiO1widGV4dC94bWxcIl1cbiAgICBsZXQgdmVyc2lvbiA9IFwiSFRNTDUtZHJhZnRcIlxuICAgIGxldCBzdGFuZGFyZCA9IFwiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvXCJcbiAgICBsZXQgbmFtZXNwYWNlID0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCJcbiAgICBsZXQgZG9jdHlwZSA9XG4gICAgICBYbWxfcHJpbnQuY29tcG9zZV9kb2N0eXBlIFwiaHRtbFwiIFtdXG4gICAgbGV0IGVtcHR5dGFncyA9XG4gICAgICBbIFwiYXJlYVwiOyBcImJhc2VcIjsgXCJiclwiOyBcImNvbFwiOyBcImNvbW1hbmRcIjsgXCJlbWJlZFwiOyBcImhyXCI7IFwiaW1nXCI7XG4gICAgICAgIFwiaW5wdXRcIjsgXCJrZXlnZW5cIjsgXCJsaW5rXCI7IFwibWV0YVwiOyBcInBhcmFtXCI7IFwic291cmNlXCI7IFwid2JyXCIgXVxuICBlbmRcblxuICB0eXBlICdhIHdyYXAgPSAnYSBXLnRcbiAgdHlwZSAnYSBsaXN0X3dyYXAgPSAnYSBXLnRsaXN0XG5cbiAgdHlwZSB1cmkgPSBYbWwudXJpXG4gIGxldCBzdHJpbmdfb2ZfdXJpID0gWG1sLnN0cmluZ19vZl91cmlcbiAgbGV0IHVyaV9vZl9zdHJpbmcgPSBYbWwudXJpX29mX3N0cmluZ1xuXG4gIHR5cGUgaW1hZ2VfY2FuZGlkYXRlID1cbiAgICBbIGBVcmwgb2YgdXJpXG4gICAgfCBgVXJsX3dpZHRoIG9mIHVyaSAqIEh0bWxfdHlwZXMubnVtYmVyXG4gICAgfCBgVXJsX3BpeGVsIG9mIHVyaSAqIEh0bWxfdHlwZXMuZmxvYXRfbnVtYmVyIF1cblxuICB0eXBlICdhIGF0dHJpYiA9IFhtbC5hdHRyaWJcblxuICBsZXQgdG9feG1sYXR0cmlicyB4ID0geFxuICBsZXQgdG9fYXR0cmliIHggPSB4XG5cbiAgKCogVkIgKilcbiAgbGV0IGZsb2F0X2F0dHJpYiA9IFhtbC5mbG9hdF9hdHRyaWJcblxuICBsZXQgaW50X2F0dHJpYiA9IFhtbC5pbnRfYXR0cmliXG5cbiAgbGV0IHN0cmluZ19hdHRyaWIgPSBYbWwuc3RyaW5nX2F0dHJpYlxuXG4gIGxldCB1cmlfYXR0cmliIGEgcyA9IFhtbC51cmlfYXR0cmliIGEgc1xuXG4gIGxldCBzcGFjZV9zZXBfYXR0cmliID0gWG1sLnNwYWNlX3NlcF9hdHRyaWJcblxuICBsZXQgY29tbWFfc2VwX2F0dHJpYiA9IFhtbC5jb21tYV9zZXBfYXR0cmliXG5cbiAgbGV0IHVzZXJfYXR0cmliIGYgbmFtZSB2ID0gWG1sLnN0cmluZ19hdHRyaWIgbmFtZSAoVy5mbWFwIGYgdilcblxuICBsZXQgYm9vbF9hdHRyaWIgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9ib29sXG5cbiAgbGV0IGNvbnN0YW50X2F0dHJpYiBhICgpID1cbiAgICBzdHJpbmdfYXR0cmliIGEgKFcucmV0dXJuIGEpXG5cbiAgbGV0IGxpbmt0eXBlc19hdHRyaWIgbmFtZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9saW5rdHlwZXMgbmFtZSB4XG5cbiAgbGV0IG1lZGlhZGVzY19hdHRyaWIgbmFtZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9tZWRpYWRlc2MgbmFtZSB4XG5cbiAgbGV0IHNyY3NldF9hdHRyaWIgbmFtZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9zcmNzZXQgbmFtZSB4XG5cbiAgKCogQ29yZTogKilcbiAgbGV0IGFfY2xhc3MgPSBzcGFjZV9zZXBfYXR0cmliIFwiY2xhc3NcIlxuXG4gIGxldCBhX2lkID0gc3RyaW5nX2F0dHJpYiBcImlkXCJcblxuICBsZXQgYV91c2VyX2RhdGEgbmFtZSA9IHN0cmluZ19hdHRyaWIgKFwiZGF0YS1cIiBeIG5hbWUpXG5cbiAgbGV0IGFfdGl0bGUgPSBzdHJpbmdfYXR0cmliIFwidGl0bGVcIlxuXG4gICgqIEkxOE46ICopXG4gIGxldCBhX3htbF9sYW5nID0gc3RyaW5nX2F0dHJpYiBcInhtbDpsYW5nXCJcbiAgbGV0IGFfbGFuZyA9IHN0cmluZ19hdHRyaWIgXCJsYW5nXCJcblxuICAoKiBTdHlsZTogKilcbiAgbGV0IGFfc3R5bGUgPSBzdHJpbmdfYXR0cmliIFwic3R5bGVcIlxuXG4gIGxldCBhX3Byb3BlcnR5ID0gc3RyaW5nX2F0dHJpYiBcInByb3BlcnR5XCJcblxuICAoKiBFdmVudHM6ICopXG4gIGxldCBhX29uYWJvcnQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmFib3J0XCJcbiAgbGV0IGFfb25hZnRlcnByaW50ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25hZnRlcnByaW50XCJcbiAgbGV0IGFfb25iZWZvcmVwcmludCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYmVmb3JlcHJpbnRcIlxuICBsZXQgYV9vbmJlZm9yZXVubG9hZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYmVmb3JldW5sb2FkXCJcbiAgbGV0IGFfb25ibHVyID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25ibHVyXCJcbiAgbGV0IGFfb25jYW5wbGF5ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25jYW5wbGF5XCJcbiAgbGV0IGFfb25jYW5wbGF5dGhyb3VnaCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uY2FucGxheXRocm91Z2hcIlxuICBsZXQgYV9vbmNoYW5nZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uY2hhbmdlXCJcbiAgbGV0IGFfb25jbG9zZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uY2xvc2VcIlxuICBsZXQgYV9vbmR1cmF0aW9uY2hhbmdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kdXJhdGlvbmNoYW5nZVwiXG4gIGxldCBhX29uZW1wdGllZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZW1wdGllZFwiXG4gIGxldCBhX29uZW5kZWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmVuZGVkXCJcbiAgbGV0IGFfb25lcnJvciA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZXJyb3JcIlxuICBsZXQgYV9vbmZvY3VzID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25mb2N1c1wiXG4gIGxldCBhX29uZm9ybWNoYW5nZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZm9ybWNoYW5nZVwiXG4gIGxldCBhX29uZm9ybWlucHV0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25mb3JtaW5wdXRcIlxuICBsZXQgYV9vbmhhc2hjaGFuZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmhhc2hjaGFuZ2VcIlxuICBsZXQgYV9vbmlucHV0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25pbnB1dFwiXG4gIGxldCBhX29uaW52YWxpZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uaW52YWxpZFwiXG4gIGxldCBhX29ub2ZmbGluZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ub2ZmbGluZVwiXG4gIGxldCBhX29ub25saW5lID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25vbmxpbmVcIlxuICBsZXQgYV9vbnBhdXNlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25wYXVzZVwiXG4gIGxldCBhX29ucGxheSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucGxheVwiXG4gIGxldCBhX29ucGxheWluZyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucGxheWluZ1wiXG4gIGxldCBhX29ucGFnZWhpZGUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnBhZ2VoaWRlXCJcbiAgbGV0IGFfb25wYWdlc2hvdyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucGFnZXNob3dcIlxuICBsZXQgYV9vbnBvcHN0YXRlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25wb3BzdGF0ZVwiXG4gIGxldCBhX29ucHJvZ3Jlc3MgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnByb2dyZXNzXCJcbiAgbGV0IGFfb25yYXRlY2hhbmdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25yYXRlY2hhbmdlXCJcbiAgbGV0IGFfb25yZWFkeXN0YXRlY2hhbmdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25yZWFkeXN0YXRlY2hhbmdlXCJcbiAgbGV0IGFfb25yZWRvID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25yZWRvXCJcbiAgbGV0IGFfb25yZXNpemUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnJlc2l6ZVwiXG4gIGxldCBhX29uc2Nyb2xsID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zY3JvbGxcIlxuICBsZXQgYV9vbnNlZWtlZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc2Vla2VkXCJcbiAgbGV0IGFfb25zZWVraW5nID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zZWVraW5nXCJcbiAgbGV0IGFfb25zZWxlY3QgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnNlbGVjdFwiXG4gIGxldCBhX29uc2hvdyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc2hvd1wiXG4gIGxldCBhX29uc3RhbGxlZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc3RhbGxlZFwiXG4gIGxldCBhX29uc3RvcmFnZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc3RvcmFnZVwiXG4gIGxldCBhX29uc3VibWl0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zdWJtaXRcIlxuICBsZXQgYV9vbnN1c3BlbmQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnN1c3BlbmRcIlxuICBsZXQgYV9vbnRpbWV1cGRhdGUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRpbWV1cGRhdGVcIlxuICBsZXQgYV9vbnVuZG8gPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnVuZG9cIlxuICBsZXQgYV9vbnVubG9hZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udW5sb2FkXCJcbiAgbGV0IGFfb252b2x1bWVjaGFuZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnZvbHVtZWNoYW5nZVwiXG4gIGxldCBhX29ud2FpdGluZyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ud2FpdGluZ1wiXG4gIGxldCBhX29ubG9hZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubG9hZFwiXG4gIGxldCBhX29ubG9hZGVkZGF0YSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubG9hZGVkZGF0YVwiXG4gIGxldCBhX29ubG9hZGVkbWV0YWRhdGEgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmxvYWRlZG1ldGFkYXRhXCJcbiAgbGV0IGFfb25sb2Fkc3RhcnQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmxvYWRzdGFydFwiXG4gIGxldCBhX29ubWVzc2FnZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubWVzc2FnZVwiXG4gIGxldCBhX29ubW91c2V3aGVlbCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2V3aGVlbFwiXG5cbiAgKCoqIEphdmFzY3JpcHQgbW91c2UgZXZlbnRzICopXG4gIGxldCBhX29uY2xpY2sgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmNsaWNrXCJcbiAgbGV0IGFfb25jb250ZXh0bWVudSA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uY29udGV4dG1lbnVcIlxuICBsZXQgYV9vbmRibGNsaWNrID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kYmxjbGlja1wiXG4gIGxldCBhX29uZHJhZyA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHJhZ1wiXG4gIGxldCBhX29uZHJhZ2VuZCA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHJhZ2VuZFwiXG4gIGxldCBhX29uZHJhZ2VudGVyID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcmFnZW50ZXJcIlxuICBsZXQgYV9vbmRyYWdsZWF2ZSA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHJhZ2xlYXZlXCJcbiAgbGV0IGFfb25kcmFnb3ZlciA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHJhZ292ZXJcIlxuICBsZXQgYV9vbmRyYWdzdGFydCA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHJhZ3N0YXJ0XCJcbiAgbGV0IGFfb25kcm9wID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcm9wXCJcbiAgbGV0IGFfb25tb3VzZWRvd24gPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNlZG93blwiXG4gIGxldCBhX29ubW91c2V1cCA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2V1cFwiXG4gIGxldCBhX29ubW91c2VvdmVyID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZW92ZXJcIlxuICBsZXQgYV9vbm1vdXNlbW92ZSA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2Vtb3ZlXCJcbiAgbGV0IGFfb25tb3VzZW91dCA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2VvdXRcIlxuXG4gICgqKiBKYXZhc2NyaXB0IHRvdWNoIGV2ZW50cyAqKVxuICBsZXQgYV9vbnRvdWNoc3RhcnQgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNoc3RhcnRcIlxuICBsZXQgYV9vbnRvdWNoZW5kID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaGVuZFwiXG4gIGxldCBhX29udG91Y2htb3ZlID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaG1vdmVcIlxuICBsZXQgYV9vbnRvdWNoY2FuY2VsID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaGNhbmNlbFwiXG5cbiAgKCoqIEphdmFzY3JpcHQga2V5Ym9hcmQgZXZlbnRzICopXG4gIGxldCBhX29ua2V5cHJlc3MgPSBYbWwua2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmtleXByZXNzXCJcbiAgbGV0IGFfb25rZXlkb3duID0gWG1sLmtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25rZXlkb3duXCJcbiAgbGV0IGFfb25rZXl1cCA9IFhtbC5rZXlib2FyZF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ua2V5dXBcIlxuXG4gICgqIE90aGVyIEF0dHJpYnV0ZXMgKilcbiAgbGV0IGFfdmVyc2lvbiA9IHN0cmluZ19hdHRyaWIgXCJ2ZXJzaW9uXCJcblxuICBsZXQgYV94bWxucyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInhtbG5zXCIgeFxuXG4gIGxldCBhX21hbmlmZXN0ID0gdXJpX2F0dHJpYiBcIm1hbmlmZXN0XCJcblxuICBsZXQgYV9jaXRlID0gdXJpX2F0dHJpYiBcImNpdGVcIlxuXG4gIGxldCBhX3htbF9zcGFjZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInhtbDpzcGFjZVwiIHhcblxuICBsZXQgYV9hY2Nlc3NrZXkgYyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfY2hhcmFjdGVyIFwiYWNjZXNza2V5XCIgY1xuXG4gIGxldCBhX2NoYXJzZXQgPSBzdHJpbmdfYXR0cmliIFwiY2hhcnNldFwiXG5cbiAgbGV0IGFfYWNjZXB0X2NoYXJzZXQgPSBzcGFjZV9zZXBfYXR0cmliIFwiYWNjZXB0LWNoYXJzZXRcIlxuXG4gIGxldCBhX2FjY2VwdCA9IGNvbW1hX3NlcF9hdHRyaWIgXCJhY2NlcHRcIlxuXG4gIGxldCBhX2hyZWYgPSB1cmlfYXR0cmliIFwiaHJlZlwiXG5cbiAgbGV0IGFfaHJlZmxhbmcgPSBzdHJpbmdfYXR0cmliIFwiaHJlZmxhbmdcIlxuXG4gIGxldCBhX2Rvd25sb2FkIGZpbGUgPVxuICAgIHVzZXJfYXR0cmliIChDLnVub3B0aW9uX3N0cmluZykgXCJkb3dubG9hZFwiIGZpbGVcblxuICBsZXQgYV9yZWwgPSBsaW5rdHlwZXNfYXR0cmliIFwicmVsXCJcblxuICBsZXQgYV90YWJpbmRleCA9IGludF9hdHRyaWIgXCJ0YWJpbmRleFwiXG5cbiAgbGV0IGFfbWltZV90eXBlID0gc3RyaW5nX2F0dHJpYiBcInR5cGVcIlxuXG4gIGxldCBhX2FsdCA9IHN0cmluZ19hdHRyaWIgXCJhbHRcIlxuXG4gIGxldCBhX2hlaWdodCBwID0gaW50X2F0dHJpYiBcImhlaWdodFwiIHBcblxuICBsZXQgYV9zcmMgPSB1cmlfYXR0cmliIFwic3JjXCJcblxuICBsZXQgYV93aWR0aCBwID0gaW50X2F0dHJpYiBcIndpZHRoXCIgcFxuXG4gIGxldCBhX2xhYmVsX2ZvciA9IHN0cmluZ19hdHRyaWIgXCJmb3JcIlxuICBsZXQgYV9mb3IgPSBhX2xhYmVsX2ZvclxuXG4gIGxldCBhX291dHB1dF9mb3IgPSBzcGFjZV9zZXBfYXR0cmliIFwiZm9yXCJcbiAgbGV0IGFfZm9yX2xpc3QgPSBhX291dHB1dF9mb3JcblxuICBsZXQgYV9zZWxlY3RlZCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwic2VsZWN0ZWRcIlxuXG4gIGxldCBhX3RleHRfdmFsdWUgPSBzdHJpbmdfYXR0cmliIFwidmFsdWVcIlxuXG4gIGxldCBhX2ludF92YWx1ZSA9IGludF9hdHRyaWIgXCJ2YWx1ZVwiXG5cbiAgbGV0IGFfdmFsdWUgPSBzdHJpbmdfYXR0cmliIFwidmFsdWVcIlxuXG4gIGxldCBhX2Zsb2F0X3ZhbHVlID0gZmxvYXRfYXR0cmliIFwidmFsdWVcIlxuXG4gIGxldCBhX2FjdGlvbiA9IHVyaV9hdHRyaWIgXCJhY3Rpb25cIlxuXG4gIGxldCBhX21ldGhvZCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm1ldGhvZFwiIHhcblxuICBsZXQgYV9mb3JtbWV0aG9kIHggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImZvcm1tZXRob2RcIiB4XG5cbiAgbGV0IGFfZW5jdHlwZSA9IHN0cmluZ19hdHRyaWIgXCJlbmN0eXBlXCJcblxuICBsZXQgYV9jaGVja2VkID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJjaGVja2VkXCJcblxuICBsZXQgYV9kaXNhYmxlZCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiZGlzYWJsZWRcIlxuXG4gIGxldCBhX3JlYWRvbmx5ID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJyZWFkb25seVwiXG5cbiAgbGV0IGFfbWF4bGVuZ3RoID0gaW50X2F0dHJpYiBcIm1heGxlbmd0aFwiXG5cbiAgbGV0IGFfbWlubGVuZ3RoID0gaW50X2F0dHJpYiBcIm1pbmxlbmd0aFwiXG5cbiAgbGV0IGFfbmFtZSA9IHN0cmluZ19hdHRyaWIgXCJuYW1lXCJcblxuICBsZXQgYV9hbGxvd2Z1bGxzY3JlZW4gPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImFsbG93ZnVsbHNjcmVlblwiXG5cbiAgbGV0IGFfYWxsb3dwYXltZW50cmVxdWVzdCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiYWxsb3dwYXltZW50cmVxdWVzdFwiXG5cbiAgbGV0IGFfcmVmZXJyZXJwb2xpY3kgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfcmVmZXJyZXJwb2xpY3kgXCJyZWZlcnJlcnBvbGljeVwiIHhcblxuICBsZXQgYV9hdXRvY29tcGxldGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYXV0b2NvbXBsZXRlIFwiYXV0b2NvbXBsZXRlXCIgeFxuXG4gIGxldCBhX2FzeW5jID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJhc3luY1wiXG5cbiAgbGV0IGFfYXV0b2ZvY3VzID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJhdXRvZm9jdXNcIlxuXG4gIGxldCBhX2F1dG9wbGF5ID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJhdXRvcGxheVwiXG5cbiAgbGV0IGFfbXV0ZWQgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcIm11dGVkXCJcblxuICBsZXQgYV9jcm9zc29yaWdpbiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImNyb3Nzb3JpZ2luXCIgeFxuXG4gIGxldCBhX2ludGVncml0eSA9IHN0cmluZ19hdHRyaWIgXCJpbnRlZ3JpdHlcIlxuXG4gIGxldCBhX21lZGlhZ3JvdXAgPSBzdHJpbmdfYXR0cmliIFwibWVkaWFncm91cFwiXG5cbiAgbGV0IGFfY2hhbGxlbmdlID0gc3RyaW5nX2F0dHJpYiBcImNoYWxsZW5nZVwiXG5cbiAgbGV0IGFfY29udGVudGVkaXRhYmxlIGNlID1cbiAgICBib29sX2F0dHJpYiBcImNvbnRlbnRlZGl0YWJsZVwiIGNlXG5cbiAgbGV0IGFfY29udGV4dG1lbnUgPSBzdHJpbmdfYXR0cmliIFwiY29udGV4dG1lbnVcIlxuXG4gIGxldCBhX2NvbnRyb2xzID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJjb250cm9sc1wiXG5cbiAgbGV0IGFfZGlyIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiZGlyXCIgeFxuXG4gIGxldCBhX2RyYWdnYWJsZSBkID1cbiAgICBib29sX2F0dHJpYiBcImRyYWdnYWJsZVwiIGRcblxuICBsZXQgYV9mb3JtID0gc3RyaW5nX2F0dHJpYiBcImZvcm1cIlxuXG4gIGxldCBhX2Zvcm1hY3Rpb24gPSB1cmlfYXR0cmliIFwiZm9ybWFjdGlvblwiXG5cbiAgbGV0IGFfZm9ybWVuY3R5cGUgPSBzdHJpbmdfYXR0cmliIFwiZm9ybWVuY3R5cGVcIlxuXG4gIGxldCBhX2Zvcm1ub3ZhbGlkYXRlID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJmb3Jtbm92YWxpZGF0ZVwiXG5cbiAgbGV0IGFfZm9ybXRhcmdldCA9IHN0cmluZ19hdHRyaWIgXCJmb3JtdGFyZ2V0XCJcblxuICBsZXQgYV9oaWRkZW4gPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImhpZGRlblwiXG5cbiAgbGV0IGFfaGlnaCA9IGZsb2F0X2F0dHJpYiBcImhpZ2hcIlxuXG4gIGxldCBhX2ljb24gPSB1cmlfYXR0cmliIFwiaWNvblwiXG5cbiAgbGV0IGFfaXNtYXAgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImlzbWFwXCJcblxuICBsZXQgYV9rZXl0eXBlID0gc3RyaW5nX2F0dHJpYiBcImtleXR5cGVcIlxuXG4gIGxldCBhX2xpc3QgPSBzdHJpbmdfYXR0cmliIFwibGlzdFwiXG5cbiAgbGV0IGFfbG9vcCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwibG9vcFwiXG5cbiAgbGV0IGFfbG93ID0gZmxvYXRfYXR0cmliIFwibG93XCJcblxuICBsZXQgYV9tYXggPSBmbG9hdF9hdHRyaWIgXCJtYXhcIlxuXG4gIGxldCBhX2lucHV0X21heCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcl9kYXRldGltZSBcIm1heFwiXG5cbiAgbGV0IGFfbWluID0gZmxvYXRfYXR0cmliIFwibWluXCJcblxuICBsZXQgYV9pbnB1dF9taW4gPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJfb3JfZGF0ZXRpbWUgXCJtaW5cIlxuXG4gIGxldCBhX2lucHV0bW9kZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImlucHV0bW9kZVwiIHhcblxuICBsZXQgYV9ub3ZhbGlkYXRlID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJub3ZhbGlkYXRlXCJcblxuICBsZXQgYV9vcGVuID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJvcGVuXCJcblxuICBsZXQgYV9vcHRpbXVtID0gZmxvYXRfYXR0cmliIFwib3B0aW11bVwiXG5cbiAgbGV0IGFfcGF0dGVybiA9IHN0cmluZ19hdHRyaWIgXCJwYXR0ZXJuXCJcblxuICBsZXQgYV9wbGFjZWhvbGRlciA9IHN0cmluZ19hdHRyaWIgXCJwbGFjZWhvbGRlclwiXG5cbiAgbGV0IGFfcG9zdGVyID0gdXJpX2F0dHJpYiBcInBvc3RlclwiXG5cbiAgbGV0IGFfcHJlbG9hZCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInByZWxvYWRcIiB4XG5cbiAgbGV0IGFfcHViZGF0ZSA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwicHViZGF0ZVwiXG5cbiAgbGV0IGFfcmFkaW9ncm91cCA9IHN0cmluZ19hdHRyaWIgXCJyYWRpb2dyb3VwXCJcblxuICBsZXQgYV9yZXF1aXJlZCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwicmVxdWlyZWRcIlxuXG4gIGxldCBhX3JldmVyc2VkID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJyZXNlcnZlZFwiXG5cbiAgbGV0IGFfc2FuZGJveCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9zYW5kYm94IFwic2FuZGJveFwiIHhcblxuICBsZXQgYV9zcGVsbGNoZWNrIHNjID1cbiAgICBib29sX2F0dHJpYiBcInNwZWxsY2hlY2tcIiBzY1xuXG4gIGxldCBhX3Njb3BlZCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwic2NvcGVkXCJcblxuICBsZXQgYV9zZWFtbGVzcyA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwic2VhbWxlc3NcIlxuXG4gIGxldCBhX3NpemVzIHNpemVzID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9zaXplcyBcInNpemVzXCIgc2l6ZXNcblxuICBsZXQgYV9zcGFuID0gaW50X2F0dHJpYiBcInNwYW5cIlxuXG4gICgqbGV0IGFfc3JjZG9jKilcbiAgbGV0IGFfc3JjbGFuZyA9IHN0cmluZ19hdHRyaWIgXCJ4bWw6bGFuZ1wiXG5cbiAgbGV0IGFfc3Jjc2V0ID0gc3Jjc2V0X2F0dHJpYiBcInNyY3NldFwiXG5cbiAgbGV0IGFfaW1nX3NpemVzID0gY29tbWFfc2VwX2F0dHJpYiBcInNpemVzXCJcblxuICBsZXQgYV9zdGFydCA9IGludF9hdHRyaWIgXCJzdGFydFwiXG5cbiAgbGV0IGFfc3RlcCBzdGVwID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9zdGVwIFwic3RlcFwiIHN0ZXBcblxuICBsZXQgYV90cmFuc2xhdGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0cmFuc2xhdGVcIiB4XG4gIFxuICBsZXQgYV93cmFwIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwid3JhcFwiIHhcblxuICBsZXQgYV9zaXplID0gaW50X2F0dHJpYiBcInNpemVcIlxuXG4gIGxldCBhX2lucHV0X3R5cGUgaXQgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2lucHV0X3R5cGUgXCJ0eXBlXCIgaXRcblxuICBsZXQgYV9tZW51X3R5cGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0eXBlXCIgeFxuXG4gIGxldCBhX2NvbW1hbmRfdHlwZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInR5cGVcIiB4XG5cbiAgbGV0IGFfYnV0dG9uX3R5cGUgYnQgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2lucHV0X3R5cGUgXCJ0eXBlXCIgYnRcblxuICBsZXQgYV9zY3JpcHRfdHlwZSBzYyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3NjcmlwdF90eXBlIFwidHlwZVwiIHNjXG5cbiAgbGV0IGFfbXVsdGlwbGUgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcIm11bHRpcGxlXCJcblxuICBsZXQgYV9jb2xzID0gaW50X2F0dHJpYiBcImNvbHNcIlxuXG4gIGxldCBhX3Jvd3MgPSBpbnRfYXR0cmliIFwicm93c1wiXG5cbiAgbGV0IGFfc3VtbWFyeSA9IHN0cmluZ19hdHRyaWIgXCJzdW1tYXJ5XCJcblxuICBsZXQgYV9hbGlnbiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImFsaWduXCIgeFxuXG4gIGxldCBhX2F4aXMgPSBzdHJpbmdfYXR0cmliIFwiYXhpc1wiXG5cbiAgbGV0IGFfY29sc3BhbiA9IGludF9hdHRyaWIgXCJjb2xzcGFuXCJcblxuICBsZXQgYV9oZWFkZXJzID0gc3BhY2Vfc2VwX2F0dHJpYiBcImhlYWRlcnNcIlxuXG4gIGxldCBhX3Jvd3NwYW4gPSBpbnRfYXR0cmliIFwicm93c3BhblwiXG5cbiAgbGV0IGFfc2NvcGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzY29wZVwiIHhcblxuICBsZXQgYV9ib3JkZXIgPSBpbnRfYXR0cmliIFwiYm9yZGVyXCJcblxuICBsZXQgYV9ydWxlcyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInJ1bGVzXCIgeFxuXG4gIGxldCBhX2NoYXIgYyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfY2hhcmFjdGVyIFwiY2hhclwiIGNcblxuICBsZXQgYV9kYXRhID0gdXJpX2F0dHJpYiBcImRhdGFcIlxuXG4gIGxldCBhX2NvZGV0eXBlID0gc3RyaW5nX2F0dHJpYiBcImNvZGV0eXBlXCJcblxuICBsZXQgYV9mcmFtZWJvcmRlciB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImZyYW1lYm9yZGVyXCIgeFxuXG4gIGxldCBhX21hcmdpbmhlaWdodCA9IGludF9hdHRyaWIgXCJtYXJnaW5oZWlnaHRcIlxuXG4gIGxldCBhX21hcmdpbndpZHRoID0gaW50X2F0dHJpYiBcIm1hcmdpbndpZHRoXCJcblxuICBsZXQgYV9zY3JvbGxpbmcgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzY3JvbGxpbmdcIiB4XG5cbiAgbGV0IGFfdGFyZ2V0ID0gc3RyaW5nX2F0dHJpYiBcInRhcmdldFwiXG5cbiAgbGV0IGFfY29udGVudCA9IHN0cmluZ19hdHRyaWIgXCJjb250ZW50XCJcblxuICBsZXQgYV9odHRwX2VxdWl2ID0gc3RyaW5nX2F0dHJpYiBcImh0dHAtZXF1aXZcIlxuXG4gIGxldCBhX21lZGlhID0gbWVkaWFkZXNjX2F0dHJpYiBcIm1lZGlhXCJcblxuICAoKiBBUklBICopXG5cbiAgbGV0IGFfcm9sZSA9IHNwYWNlX3NlcF9hdHRyaWIgXCJyb2xlXCJcblxuICBsZXQgYV9hcmlhIG5hbWUgPSBzcGFjZV9zZXBfYXR0cmliIChcImFyaWEtXCIgXiBuYW1lKVxuXG4gIHR5cGUgJ2EgZWx0ID0gWG1sLmVsdFxuXG4gIHR5cGUgKCdhLCAnYikgbnVsbGFyeSA9ID9hOiAoKCdhIGF0dHJpYikgbGlzdCkgLT4gdW5pdCAtPiAnYiBlbHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSB1bmFyeSA9ID9hOiAoKCdhIGF0dHJpYikgbGlzdCkgLT4gJ2IgZWx0IHdyYXAgLT4gJ2MgZWx0XG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgc3RhciA9XG4gICAgP2E6ICgoJ2EgYXR0cmliKSBsaXN0KSAtPiAoJ2IgZWx0KSBsaXN0X3dyYXAgLT4gJ2MgZWx0XG5cbiAgbGV0IHRlcm1pbmFsIHRhZyA/YSAoKSA9IFhtbC5sZWFmID9hIHRhZ1xuXG4gIGxldCB1bmFyeSB0YWcgP2EgZWx0ID1cbiAgICBYbWwubm9kZSA/YSB0YWcgKFcuc2luZ2xldG9uIGVsdClcblxuICBsZXQgc3RhciB0YWcgP2EgZWx0cyA9IFhtbC5ub2RlID9hIHRhZyBlbHRzXG5cbiAgbGV0IHBsdXMgdGFnID9hIGVsdCBlbHRzID1cbiAgICBYbWwubm9kZSA/YSB0YWcgKFcuY29ucyBlbHQgZWx0cylcblxuICBsZXQgb3B0aW9uX2NvbnMgb3B0IGVsdHMgPVxuICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgfCBOb25lIC0+IGVsdHNcbiAgICB8IFNvbWUgeCAtPiBXLmNvbnMgeCBlbHRzXG5cbiAgbGV0IGJvZHkgPSBzdGFyIFwiYm9keVwiXG5cbiAgbGV0IGhlYWQgPSBwbHVzIFwiaGVhZFwiXG5cbiAgbGV0IHRpdGxlID0gdW5hcnkgXCJ0aXRsZVwiXG5cbiAgbGV0IGh0bWwgP2EgaGVhZCBib2R5ID1cbiAgICBsZXQgY29udGVudCA9IFcuY29ucyBoZWFkIChXLnNpbmdsZXRvbiBib2R5KSBpblxuICAgIFhtbC5ub2RlID9hIFwiaHRtbFwiIGNvbnRlbnRcblxuICBsZXQgZm9vdGVyID0gc3RhciBcImZvb3RlclwiXG5cbiAgbGV0IGhlYWRlciA9IHN0YXIgXCJoZWFkZXJcIlxuXG4gIGxldCBzZWN0aW9uID0gc3RhciBcInNlY3Rpb25cIlxuXG4gIGxldCBuYXYgPSBzdGFyIFwibmF2XCJcblxuICBsZXQgdHh0IHMgPSBYbWwucGNkYXRhIHNcbiAgbGV0IHBjZGF0YSA9IHR4dFxuXG4gIGxldCBlbnRpdHkgPSBYbWwuZW50aXR5XG5cbiAgbGV0IHNwYWNlICgpID0gZW50aXR5IFwibmJzcFwiXG5cbiAgbGV0IGNkYXRhID0gWG1sLmNkYXRhXG5cbiAgbGV0IGNkYXRhX3NjcmlwdCA9IFhtbC5jZGF0YV9zY3JpcHRcblxuICBsZXQgY2RhdGFfc3R5bGUgPSBYbWwuY2RhdGFfc3R5bGVcblxuICBsZXQgaDEgPSBzdGFyIFwiaDFcIlxuXG4gIGxldCBoMiA9IHN0YXIgXCJoMlwiXG5cbiAgbGV0IGgzID0gc3RhciBcImgzXCJcblxuICBsZXQgaDQgPSBzdGFyIFwiaDRcIlxuXG4gIGxldCBoNSA9IHN0YXIgXCJoNVwiXG5cbiAgbGV0IGg2ID0gc3RhciBcImg2XCJcblxuICBsZXQgaGdyb3VwID0gc3RhciBcImhncm91cFwiXG5cbiAgbGV0IGFkZHJlc3MgPSBzdGFyIFwiYWRkcmVzc1wiXG5cbiAgbGV0IGJsb2NrcXVvdGUgPSBzdGFyIFwiYmxvY2txdW90ZVwiXG5cbiAgbGV0IGRpYWxvZyA9IHN0YXIgXCJkaWFsb2dcIlxuXG4gIGxldCBkaXYgPSBzdGFyIFwiZGl2XCJcblxuICBsZXQgcCA9IHN0YXIgXCJwXCJcblxuICBsZXQgcHJlID0gc3RhciBcInByZVwiXG5cbiAgbGV0IGFiYnIgPSBzdGFyIFwiYWJiclwiXG5cbiAgbGV0IGJyID0gdGVybWluYWwgXCJiclwiXG5cbiAgbGV0IGNpdGUgPSBzdGFyIFwiY2l0ZVwiXG5cbiAgbGV0IGNvZGUgPSBzdGFyIFwiY29kZVwiXG5cbiAgbGV0IGRmbiA9IHN0YXIgXCJkZm5cIlxuXG4gIGxldCBlbSA9IHN0YXIgXCJlbVwiXG5cbiAgbGV0IGtiZCA9IHN0YXIgXCJrYmRcIlxuXG4gIGxldCBxID0gc3RhciBcInFcIlxuXG4gIGxldCBzYW1wID0gc3RhciBcInNhbXBcIlxuXG4gIGxldCBzcGFuID0gc3RhciBcInNwYW5cIlxuXG4gIGxldCBzdHJvbmcgPSBzdGFyIFwic3Ryb25nXCJcblxuICBsZXQgdGltZSA9IHN0YXIgXCJ0aW1lXCJcblxuICBsZXQgdmFyID0gc3RhciBcInZhclwiXG5cbiAgbGV0IGEgPSBzdGFyIFwiYVwiXG5cbiAgbGV0IGRsID0gc3RhciBcImRsXCJcblxuICBsZXQgb2wgPSBzdGFyIFwib2xcIlxuXG4gIGxldCB1bCA9IHN0YXIgXCJ1bFwiXG5cbiAgbGV0IGRkID0gc3RhciBcImRkXCJcblxuICBsZXQgZHQgPSBzdGFyIFwiZHRcIlxuXG4gIGxldCBsaSA9IHN0YXIgXCJsaVwiXG5cbiAgbGV0IGhyID0gdGVybWluYWwgXCJoclwiXG5cbiAgbGV0IGIgPSBzdGFyIFwiYlwiXG5cbiAgbGV0IGkgPSBzdGFyIFwiaVwiXG5cbiAgbGV0IHUgPSBzdGFyIFwidVwiXG5cbiAgbGV0IHNtYWxsID0gc3RhciBcInNtYWxsXCJcblxuICBsZXQgc3ViID0gc3RhciBcInN1YlwiXG5cbiAgbGV0IHN1cCA9IHN0YXIgXCJzdXBcIlxuXG4gIGxldCBtYXJrID0gc3RhciBcIm1hcmtcIlxuXG4gIGxldCBycCA9IHN0YXIgXCJycFwiXG5cbiAgbGV0IHJ0ID0gc3RhciBcInJ0XCJcblxuICBsZXQgcnVieSA9IHN0YXIgXCJydWJ5XCJcblxuICBsZXQgd2JyID0gdGVybWluYWwgXCJ3YnJcIlxuXG4gICgqIFZCICopXG4gIHR5cGUgc2hhcGUgPSBbIHwgYFJlY3QgfCBgQ2lyY2xlIHwgYFBvbHkgfCBgRGVmYXVsdCBdXG5cbiAgbGV0IGJkbyB+ZGlyID8oYSA9IFtdKSBlbHRzID0gWG1sLm5vZGUgfmE6ICgoYV9kaXIgZGlyKSA6OiBhKSBcImJkb1wiIGVsdHNcblxuICBsZXQgYV9kYXRldGltZSA9IHN0cmluZ19hdHRyaWIgXCJkYXRldGltZVwiXG5cbiAgbGV0IGFfc2hhcGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzaGFwZVwiIHhcblxuICBsZXQgYV9jb29yZHMgY29vcmRzID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJzIFwiY29vcmRzXCIgY29vcmRzXG5cbiAgbGV0IGFfdXNlbWFwID0gc3RyaW5nX2F0dHJpYiBcInVzZW1hcFwiXG5cbiAgbGV0IGFfZGVmZXIgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImRlZmVyXCJcblxuICBsZXQgYV9sYWJlbCA9IHN0cmluZ19hdHRyaWIgXCJsYWJlbFwiXG5cbiAgbGV0IGFyZWEgfmFsdCA/KGEgPSBbXSkgKCkgPSBYbWwubGVhZiB+YTogKChhX2FsdCBhbHQpIDo6IGEpIFwiYXJlYVwiXG5cbiAgbGV0IG1hcCA9IHN0YXIgXCJtYXBcIlxuXG4gIGxldCBkZWwgPSBzdGFyIFwiZGVsXCJcblxuICBsZXQgaW5zID0gc3RhciBcImluc1wiXG5cbiAgbGV0IHNjcmlwdCA9IHVuYXJ5IFwic2NyaXB0XCJcblxuICBsZXQgbm9zY3JpcHQgPSBzdGFyIFwibm9zY3JpcHRcIlxuXG4gIGxldCB0ZW1wbGF0ZSA9IHN0YXIgXCJ0ZW1wbGF0ZVwiXG5cbiAgbGV0IGFydGljbGUgPSBzdGFyIFwiYXJ0aWNsZVwiXG5cbiAgbGV0IGFzaWRlID0gc3RhciBcImFzaWRlXCJcblxuICBsZXQgbWFpbiA9IHN0YXIgXCJtYWluXCJcblxuICBsZXQgdmlkZW9fYXVkaW8gbmFtZSA/c3JjID9zcmNzID8oYSA9IFtdKSBlbHRzID1cbiAgICBsZXQgYSA9XG4gICAgICBtYXRjaCBzcmMgd2l0aFxuICAgICAgfCBOb25lIC0+IGFcbiAgICAgIHwgU29tZSB1cmkgLT4gKGFfc3JjIHVyaSkgOjogYVxuICAgIGluXG4gICAgbWF0Y2ggc3JjcyB3aXRoXG4gICAgfCBOb25lIC0+IFhtbC5ub2RlIG5hbWUgfmEgZWx0c1xuICAgIHwgU29tZSBzcmNzIC0+IFhtbC5ub2RlIG5hbWUgfmEgKFcuYXBwZW5kIHNyY3MgZWx0cylcblxuICBsZXQgYXVkaW8gPSB2aWRlb19hdWRpbyBcImF1ZGlvXCJcblxuICBsZXQgdmlkZW8gPSB2aWRlb19hdWRpbyBcInZpZGVvXCJcblxuICBsZXQgY2FudmFzID0gc3RhciBcImNhbnZhc1wiXG5cbiAgbGV0IGNvbW1hbmQgfmxhYmVsID8oYSA9IFtdKSAoKSA9XG4gICAgWG1sLmxlYWYgfmE6ICgoYV9sYWJlbCBsYWJlbCkgOjogYSkgXCJjb21tYW5kXCJcblxuICBsZXQgbWVudSA/Y2hpbGRyZW4gP2EgKCkgPVxuICAgIGxldCBjaGlsZHJlbiA9IG1hdGNoIGNoaWxkcmVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBXLm5pbCAoKVxuICAgICAgfCBTb21lIChgTGlzIGwpXG4gICAgICB8IFNvbWUgKGBGbG93cyBsKSAtPiBsIGluXG4gICAgWG1sLm5vZGUgP2EgXCJtZW51XCIgY2hpbGRyZW5cblxuICBsZXQgZW1iZWQgPSB0ZXJtaW5hbCBcImVtYmVkXCJcblxuICBsZXQgc291cmNlID0gdGVybWluYWwgXCJzb3VyY2VcIlxuXG4gIGxldCBtZXRlciA9IHN0YXIgXCJtZXRlclwiXG5cbiAgbGV0IG91dHB1dF9lbHQgPSBzdGFyIFwib3V0cHV0XCJcblxuICBsZXQgZm9ybSA9IHN0YXIgXCJmb3JtXCJcblxuICBsZXQgc3ZnID8oYSA9IFtdKSBjaGlsZHJlbiA9XG4gICAgU3ZnLnRvZWx0IChTdmcuc3ZnIH5hIGNoaWxkcmVuKVxuXG4gIGxldCBpbnB1dCA9IHRlcm1pbmFsIFwiaW5wdXRcIlxuXG4gIGxldCBrZXlnZW4gPSB0ZXJtaW5hbCBcImtleWdlblwiXG5cbiAgbGV0IGxhYmVsID0gc3RhciBcImxhYmVsXCJcblxuICBsZXQgb3B0aW9uID0gdW5hcnkgXCJvcHRpb25cIlxuXG4gIGxldCBzZWxlY3QgPSBzdGFyIFwic2VsZWN0XCJcblxuICBsZXQgdGV4dGFyZWEgPSB1bmFyeSBcInRleHRhcmVhXCJcblxuICBsZXQgYnV0dG9uID0gc3RhciBcImJ1dHRvblwiXG5cbiAgbGV0IGRhdGFsaXN0ID9jaGlsZHJlbiA/YSAoKSA9XG4gICAgbGV0IGNoaWxkcmVuID0gbWF0Y2ggY2hpbGRyZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFcubmlsICgpXG4gICAgICB8IFNvbWUgKGBPcHRpb25zIHggfCBgUGhyYXMgeCkgLT4geCBpblxuICAgIFhtbC5ub2RlID9hIFwiZGF0YWxpc3RcIiBjaGlsZHJlblxuXG4gIGxldCBwcm9ncmVzcyA9IHN0YXIgXCJwcm9ncmVzc1wiXG5cbiAgbGV0IGxlZ2VuZCA9IHN0YXIgXCJsZWdlbmRcIlxuXG4gIGxldCBkZXRhaWxzIHN1bW1hcnkgP2EgY2hpbGRyZW4gPVxuICAgIHBsdXMgXCJkZXRhaWxzXCIgP2Egc3VtbWFyeSBjaGlsZHJlblxuXG4gIGxldCBzdW1tYXJ5ID0gc3RhciBcInN1bW1hcnlcIlxuXG4gIGxldCBmaWVsZHNldCA/bGVnZW5kID9hIGVsdHMgPVxuICAgIFhtbC5ub2RlID9hIFwiZmllbGRzZXRcIiAob3B0aW9uX2NvbnMgbGVnZW5kIGVsdHMpXG5cbiAgbGV0IG9wdGdyb3VwIH5sYWJlbCA/KGEgPSBbXSkgZWx0cyA9XG4gICAgWG1sLm5vZGUgfmE6ICgoYV9sYWJlbCBsYWJlbCkgOjogYSkgXCJvcHRncm91cFwiIGVsdHNcblxuICBsZXQgZmlnY2FwdGlvbiA9IHN0YXIgXCJmaWdjYXB0aW9uXCJcbiAgbGV0IGZpZ3VyZSA/ZmlnY2FwdGlvbiA/YSBlbHRzID1cbiAgICBsZXQgY29udGVudCA9IG1hdGNoIGZpZ2NhcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGVsdHNcbiAgICAgIHwgU29tZSAoYFRvcCBjKSAtPiBXLmNvbnMgYyBlbHRzXG4gICAgICB8IFNvbWUgKGBCb3R0b20gYykgLT4gVy5hcHBlbmQgZWx0cyAoVy5zaW5nbGV0b24gYylcbiAgICBpblxuICAgIFhtbC5ub2RlID9hIFwiZmlndXJlXCIgY29udGVudFxuXG4gIGxldCBjYXB0aW9uID0gc3RhciBcImNhcHRpb25cIlxuXG4gIGxldCB0YWJsZXggP2NhcHRpb24gP2NvbHVtbnMgP3RoZWFkID90Zm9vdCA/YSBlbHRzID1cbiAgICBsZXQgY29udGVudCA9IG9wdGlvbl9jb25zIHRoZWFkIChvcHRpb25fY29ucyB0Zm9vdCBlbHRzKSBpblxuICAgIGxldCBjb250ZW50ID0gbWF0Y2ggY29sdW1ucyB3aXRoXG4gICAgICB8IE5vbmUgLT4gY29udGVudFxuICAgICAgfCBTb21lIGNvbHVtbnMgLT4gVy5hcHBlbmQgY29sdW1ucyBjb250ZW50IGluXG4gICAgbGV0IGNvbnRlbnQgPSBvcHRpb25fY29ucyBjYXB0aW9uIGNvbnRlbnQgaW5cbiAgICBYbWwubm9kZSA/YSBcInRhYmxlXCIgY29udGVudFxuXG4gIGxldCB0YWJsZSA9IHRhYmxleFxuXG4gIGxldCB0ZCA9IHN0YXIgXCJ0ZFwiXG5cbiAgbGV0IHRoID0gc3RhciBcInRoXCJcblxuICBsZXQgdHIgPSBzdGFyIFwidHJcIlxuXG4gIGxldCBjb2xncm91cCA9IHN0YXIgXCJjb2xncm91cFwiXG5cbiAgbGV0IGNvbCA9IHRlcm1pbmFsIFwiY29sXCJcblxuICBsZXQgdGhlYWQgPSBzdGFyIFwidGhlYWRcIlxuXG4gIGxldCB0Ym9keSA9IHN0YXIgXCJ0Ym9keVwiXG5cbiAgbGV0IHRmb290ID0gc3RhciBcInRmb290XCJcblxuICBsZXQgaWZyYW1lID0gc3RhciBcImlmcmFtZVwiXG5cbiAgbGV0IG9iamVjdF8gP3BhcmFtcyA/KGEgPSBbXSkgZWx0cyA9XG4gICAgbGV0IGVsdHMgPSBtYXRjaCBwYXJhbXMgd2l0aFxuICAgICAgfCBOb25lIC0+IGVsdHNcbiAgICAgIHwgU29tZSBlIC0+IFcuYXBwZW5kIGUgZWx0cyBpblxuICAgIFhtbC5ub2RlIH5hIFwib2JqZWN0XCIgZWx0c1xuXG4gIGxldCBwYXJhbSA9IHRlcm1pbmFsIFwicGFyYW1cIlxuXG4gIGxldCBpbWcgfnNyYyB+YWx0ID8oYSA9IFtdKSAoKSA9XG4gICAgbGV0IGEgPSAoYV9zcmMgc3JjKSA6OiAoYV9hbHQgYWx0KSA6OiBhIGluXG4gICAgWG1sLmxlYWYgfmEgXCJpbWdcIlxuXG4gIGxldCBwaWN0dXJlIH5pbWcgP2EgZWx0cyA9XG4gICAgbGV0IHRhaWxfbm9kZSA9IFcuY29ucyBpbWcgKFcubmlsICgpKSBpblxuICAgIGxldCBjb250ZW50ID0gVy5hcHBlbmQgZWx0cyB0YWlsX25vZGUgaW5cbiAgICBYbWwubm9kZSA/YSBcInBpY3R1cmVcIiBjb250ZW50XG5cbiAgbGV0IG1ldGEgPSB0ZXJtaW5hbCBcIm1ldGFcIlxuXG4gIGxldCBzdHlsZSA/KGEgPSBbXSkgZWx0cyA9IFhtbC5ub2RlIH5hIFwic3R5bGVcIiBlbHRzXG5cbiAgbGV0IGxpbmsgfnJlbCB+aHJlZiA/KGEgPSBbXSkgKCkgPVxuICAgIFhtbC5sZWFmIH5hOiAoKGFfcmVsIHJlbCkgOjogKGFfaHJlZiBocmVmKSA6OiBhKSBcImxpbmtcIlxuXG4gIGxldCBiYXNlID0gdGVybWluYWwgXCJiYXNlXCJcblxuICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAoKiBDb252ZXJzaW9uIGZyb20gYW5kIHRvIFhtbCBtb2R1bGUgKilcbiAgbGV0IHRvdCB4ID0geFxuXG4gIGxldCB0b3RsIHggPSB4XG5cbiAgbGV0IHRvZWx0IHggPSB4XG5cbiAgbGV0IHRvZWx0bCB4ID0geFxuXG4gIHR5cGUgZG9jICA9IFsgYEh0bWwgXSBlbHRcbiAgbGV0IGRvY190b2VsdCB4ID0geFxuXG4gIG1vZHVsZSBJID0gWG1sX3N0cmVhbS5JbXBvcnQoWG1sKVxuICBsZXQgb2Zfc2VxIHMgPSB0b3RsIEBAIEkub2Zfc2VxIHNcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG5cbiAgICBsZXQgZGF0YSBzID0gWG1sLmVuY29kZWRwY2RhdGEgc1xuXG4gICAgbGV0IGxlYWYgdGFnID9hICgpID0gWG1sLmxlYWYgP2EgdGFnXG5cbiAgICBsZXQgbm9kZSB0YWcgP2EgZWx0cyA9IFhtbC5ub2RlID9hIHRhZyBlbHRzXG5cbiAgICBsZXQgY29lcmNlX2VsdCB4ID0geFxuXG4gICAgbGV0IGZsb2F0X2F0dHJpYiA9IFhtbC5mbG9hdF9hdHRyaWJcblxuICAgIGxldCBpbnRfYXR0cmliID0gWG1sLmludF9hdHRyaWJcblxuICAgIGxldCBzdHJpbmdfYXR0cmliID0gWG1sLnN0cmluZ19hdHRyaWJcblxuICAgIGxldCB1cmlfYXR0cmliIGEgcyA9IFhtbC51cmlfYXR0cmliIGEgc1xuXG4gICAgbGV0IHNwYWNlX3NlcF9hdHRyaWIgPSBYbWwuc3BhY2Vfc2VwX2F0dHJpYlxuXG4gICAgbGV0IGNvbW1hX3NlcF9hdHRyaWIgPSBYbWwuY29tbWFfc2VwX2F0dHJpYlxuXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIFdyYXBwZWRfZnVuY3Rpb25zXG4gICAgKFhtbCA6IFhtbF9zaWdzLlQgd2l0aCB0eXBlICgnYSwnYikgVy5mdCA9ICdhIC0+ICdiKSA9XG5zdHJ1Y3RcblxuICBtb2R1bGUgWG1sID0gWG1sXG5cbiAgbGV0IHN0cmluZ19vZl9zYW5kYm94X3Rva2VuID0gZnVuY3Rpb25cbiAgICB8IGBBbGxvd19mb3JtcyAtPiBcImFsbG93LWZvcm1zXCJcbiAgICB8IGBBbGxvd19wb2ludGVyX2xvY2sgLT4gXCJhbGxvdy1wb2ludGVyLWxvY2tcIlxuICAgIHwgYEFsbG93X3BvcHVwcyAtPiBcImFsbG93LXBvcHVwc1wiXG4gICAgfCBgQWxsb3dfdG9wX25hdmlnYXRpb24gLT4gXCJhbGxvdy10b3AtbmF2aWdhdGlvblwiXG4gICAgfCBgQWxsb3dfc2FtZV9vcmlnaW4gLT4gXCJhbGxvdy1zYW1lLW9yaWdpblwiXG4gICAgfCBgQWxsb3dfc2NyaXB0IC0+IFwiYWxsb3ctc2NyaXB0XCJcblxuICBsZXQgc3RyaW5nX29mX2xpbmt0eXBlID0gZnVuY3Rpb25cbiAgICB8IGBBbHRlcm5hdGUgLT4gXCJhbHRlcm5hdGVcIlxuICAgIHwgYEFyY2hpdmVzIC0+IFwiYXJjaGl2ZXNcIlxuICAgIHwgYEF1dGhvciAtPiBcImF1dGhvclwiXG4gICAgfCBgQm9va21hcmsgLT4gXCJib29rbWFya1wiXG4gICAgfCBgQ2Fub25pY2FsIC0+IFwiY2Fub25pY2FsXCJcbiAgICB8IGBEbnNfcHJlZmV0Y2ggLT4gXCJkbnMtcHJlZmV0Y2hcIlxuICAgIHwgYEV4dGVybmFsIC0+IFwiZXh0ZXJuYWxcIlxuICAgIHwgYEZpcnN0IC0+IFwiZmlyc3RcIlxuICAgIHwgYEhlbHAgLT4gXCJoZWxwXCJcbiAgICB8IGBJY29uIC0+IFwiaWNvblwiXG4gICAgfCBgSW5kZXggLT4gXCJpbmRleFwiXG4gICAgfCBgTGFzdCAtPiBcImxhc3RcIlxuICAgIHwgYExpY2Vuc2UgLT4gXCJsaWNlbnNlXCJcbiAgICB8IGBNYW5pZmVzdCAtPiBcIm1hbmlmZXN0XCJcbiAgICB8IGBNZSAtPiBcIm1lXCJcbiAgICB8IGBNb2R1bGVwcmVsb2FkIC0+IFwibW9kdWxlcHJlbG9hZFwiXG4gICAgfCBgTmV4dCAtPiBcIm5leHRcIlxuICAgIHwgYE5vZm9sbG93IC0+IFwibm9mb2xsb3dcIlxuICAgIHwgYE5vb3BlbmVyIC0+IFwibm9vcGVuZXJcIlxuICAgIHwgYE5vcmVmZXJyZXIgLT4gXCJub3JlZmVycmVyXCJcbiAgICB8IGBPcGVuZXIgLT4gXCJvcGVuZXJcIlxuICAgIHwgYFBpbmdiYWNrIC0+IFwicGluZ2JhY2tcIlxuICAgIHwgYFByZWNvbm5lY3QgLT4gXCJwcmVjb25uZWN0XCJcbiAgICB8IGBQcmVmZXRjaCAtPiBcInByZWZldGNoXCJcbiAgICB8IGBQcmVsb2FkIC0+IFwicHJlbG9hZFwiXG4gICAgfCBgUHJlcmVuZGVyIC0+IFwicHJlcmVuZGVyXCJcbiAgICB8IGBQcmV2IC0+IFwicHJldlwiXG4gICAgfCBgU2VhcmNoIC0+IFwic2VhcmNoXCJcbiAgICB8IGBTdHlsZXNoZWV0IC0+IFwic3R5bGVzaGVldFwiXG4gICAgfCBgU2lkZWJhciAtPiBcInNpZGViYXJcIlxuICAgIHwgYFRhZyAtPiBcInRhZ1wiXG4gICAgfCBgVXAgLT4gXCJ1cFwiXG4gICAgfCBgT3RoZXIgcyAtPiBzXG5cbiAgbGV0IHN0cmluZ19vZl9tZWRpYWRlc2NfdG9rZW4gPVxuICAgIGZ1bmN0aW9uXG4gICAgfCBgQWxsIC0+IFwiYWxsXCJcbiAgICB8IGBBdXJhbCAtPiBcImF1cmFsXCJcbiAgICB8IGBCcmFpbGxlIC0+IFwiYnJhaWxsZVwiXG4gICAgfCBgRW1ib3NzZWQgLT4gXCJlbWJvc3NlZFwiXG4gICAgfCBgSGFuZGhlbGQgLT4gXCJoYW5kaGVsZFwiXG4gICAgfCBgUHJpbnQgLT4gXCJwcmludFwiXG4gICAgfCBgUHJvamVjdGlvbiAtPiBcInByb2plY3Rpb25cIlxuICAgIHwgYFNjcmVlbiAtPiBcInNjcmVlblwiXG4gICAgfCBgU3BlZWNoIC0+IFwic3BlZWNoXCJcbiAgICB8IGBUdHkgLT4gXCJ0dHlcIlxuICAgIHwgYFR2IC0+IFwidHZcIlxuICAgIHwgYFJhd19tZWRpYWRlc2MgcyAtPiBzXG5cbiAgbGV0IHN0cmluZ19vZl9yZWZlcnJlcnBvbGljeSA9IGZ1bmN0aW9uXG4gICAgfCBgRW1wdHkgLT4gXCJcIlxuICAgIHwgYE5vX3JlZmVycmVyIC0+IFwibm8tcmVmZXJyZXJcIlxuICAgIHwgYE5vX3JlZmVycmVyX3doZW5fZG93bmdyYWRlIC0+IFwibm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGVcIlxuICAgIHwgYE9yaWdpbiAtPiBcIm9yaWdpblwiXG4gICAgfCBgT3JpZ2luX3doZW5fY3Jvc3Nfb3JpZ2luIC0+IFwib3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luXCJcbiAgICB8IGBTYW1lX29yaWdpbiAtPiBcInNhbWUtb3JpZ2luXCJcbiAgICB8IGBTdHJpY3Rfb3JpZ2luIC0+IFwic3RyaWN0LW9yaWdpblwiXG4gICAgfCBgU3RyaWN0X29yaWdpbl93aGVuX2Nyb3NzX29yaWdpbiAtPiBcInN0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5cIlxuICAgIHwgYFVuc2FmZV91cmwgLT4gXCJ1bnNhZmUtdXJsXCJcblxuICBsZXQgc3RyaW5nX29mX2JpZ192YXJpYW50ID0gZnVuY3Rpb25cbiAgICB8IGBBbm9ueW1vdXMgLT4gXCJhbm9ueW1vdXNcIlxuICAgIHwgYEFzeW5jIC0+IFwiYXN5bmNcIlxuICAgIHwgYEF1dG9mb2N1cyAtPiBcImF1dG9mb2N1c1wiXG4gICAgfCBgQXV0b3BsYXkgLT4gXCJhdXRvcGxheVwiXG4gICAgfCBgQ2hlY2tlZCAtPiBcImNoZWNrZWRcIlxuICAgIHwgYERlZmVyIC0+IFwiZGVmZXJcIlxuICAgIHwgYERpc2FibGVkIC0+IFwiZGlzYWJsZWRcIlxuICAgIHwgYE11dGVkIC0+IFwibXV0ZWRcIlxuICAgIHwgYFJlYWRPbmx5IC0+IFwicmVhZG9ubHlcIlxuICAgIHwgYFJlY3QgLT4gXCJyZWN0XCJcbiAgICB8IGBTZWxlY3RlZCAtPiBcInNlbGVjdGVkXCJcbiAgICB8IGBVc2VfY3JlZGVudGlhbHMgLT4gXCJ1c2UtY3JlZGVudGlhbHNcIlxuICAgIHwgYFczX29yZ18xOTk5X3hodG1sIC0+IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiXG4gICAgfCBgQWxsIC0+IFwiYWxsXCJcbiAgICB8IGBQcmVzZXJ2ZSAtPiBcInByZXNlcnZlXCJcbiAgICB8IGBEZWZhdWx0IC0+IFwiZGVmYXVsdFwiXG4gICAgfCBgQ29udHJvbHMgLT4gXCJjb250cm9sc1wiXG4gICAgfCBgTHRyIC0+IFwibHRyXCJcbiAgICB8IGBSdGwgLT4gXCJydGxcIlxuICAgIHwgYEdldCAtPiBcIkdFVFwiXG4gICAgfCBgUG9zdCAtPiBcIlBPU1RcIlxuICAgIHwgYEZvcm1ub3ZhbGlkYXRlIC0+IFwiZm9ybW5vdmFsaWRhdGVcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgSXNtYXAgLT4gXCJpc21hcFwiXG4gICAgfCBgTG9vcCAtPiBcImxvb3BcIlxuICAgIHwgYE5vdmFsaWRhdGUgLT4gXCJub3ZhbGlkYXRlXCJcbiAgICB8IGBPcGVuIC0+IFwib3BlblwiXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYE1ldGFkYXRhIC0+IFwibWV0YWRhdGFcIlxuICAgIHwgYEF1ZGlvIC0+IFwiYXVkaW9cIlxuICAgIHwgYFB1YmRhdGUgLT4gXCJwdWJkYXRlXCJcbiAgICB8IGBSZXF1aXJlZCAtPiBcInJlcXVpcmVkXCJcbiAgICB8IGBSZXZlcnNlZCAtPiBcInJlc2VydmVkXCJcbiAgICB8IGBTY29wZWQgLT4gXCJzY29wZWRcIlxuICAgIHwgYFNlYW1sZXNzIC0+IFwic2VhbWxlc3NcIlxuICAgIHwgYEFueSAtPiBcImFueVwiXG4gICAgfCBgU29mdCAtPiBcInNvZnRcIlxuICAgIHwgYEhhcmQgLT4gXCJoYXJkXCJcbiAgICB8IGBDb250ZXh0IC0+IFwiY29udGV4dFwiXG4gICAgfCBgVG9vbGJhciAtPiBcInRvb2xiYXJcIlxuICAgIHwgYENvbW1hbmQgLT4gXCJjb21tYW5kXCJcbiAgICB8IGBDaGVja2JveCAtPiBcImNoZWNrYm94XCJcbiAgICB8IGBSYWRpbyAtPiBcInJhZGlvXCJcbiAgICB8IGBNdWx0aXBsZSAtPiBcIm11bHRpcGxlXCJcbiAgICB8IGBMZWZ0IC0+IFwibGVmdFwiXG4gICAgfCBgUmlnaHQgLT4gXCJyaWdodFwiXG4gICAgfCBgSnVzdGlmeSAtPiBcImp1c3RpZnlcIlxuICAgIHwgYENoYXIgLT4gXCJjaGFyXCJcbiAgICB8IGBSb3cgLT4gXCJyb3dcIlxuICAgIHwgYENvbCAtPiBcImNvbFwiXG4gICAgfCBgUm93Z3JvdXAgLT4gXCJyb3dncm91cFwiXG4gICAgfCBgQ29sZ3JvdXAgLT4gXCJjb2xncm91cFwiXG4gICAgfCBgR3JvdXBzIC0+IFwiZ3JvdXBzXCJcbiAgICB8IGBSb3dzIC0+IFwicm93c1wiXG4gICAgfCBgQ29scyAtPiBcImNvbHNcIlxuICAgIHwgYFplcm8gLT4gXCIwXCJcbiAgICB8IGBPbmUgLT4gXCIxXCJcbiAgICB8IGBZZXMgLT4gXCJ5ZXNcIlxuICAgIHwgYE5vIC0+IFwibm9cIlxuICAgIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgICB8IGBDaXJjbGUgLT4gXCJjaXJjbGVcIlxuICAgIHwgYFBvbHkgLT4gXCJwb2x5XCJcbiAgICB8IGBBbHRlcm5hdGUgLT4gXCJhbHRlcm5hdGVcIlxuICAgIHwgYEFyY2hpdmVzIC0+IFwiYXJjaGl2ZXNcIlxuICAgIHwgYEF1dGhvciAtPiBcImF1dGhvclwiXG4gICAgfCBgQm9va21hcmsgLT4gXCJib29rbWFya1wiXG4gICAgfCBgRXh0ZXJuYWwgLT4gXCJleHRlcm5hbFwiXG4gICAgfCBgRmlyc3QgLT4gXCJmaXJzdFwiXG4gICAgfCBgSGVscCAtPiBcImhlbHBcIlxuICAgIHwgYEljb24gLT4gXCJpY29uXCJcbiAgICB8IGBJbmRleCAtPiBcImluZGV4XCJcbiAgICB8IGBMYXN0IC0+IFwibGFzdFwiXG4gICAgfCBgTGljZW5zZSAtPiBcImxpY2Vuc2VcIlxuICAgIHwgYE5leHQgLT4gXCJuZXh0XCJcbiAgICB8IGBOb2ZvbGxvdyAtPiBcIm5vZm9sbG93XCJcbiAgICB8IGBOb3JlZmVycmVyIC0+IFwibm9yZWZlcnJlclwiXG4gICAgfCBgUGluZ2JhY2sgLT4gXCJwaW5nYmFja1wiXG4gICAgfCBgUHJlZmV0Y2ggLT4gXCJwcmVmZXRjaFwiXG4gICAgfCBgUHJldiAtPiBcInByZXZcIlxuICAgIHwgYFNlYXJjaCAtPiBcInNlYXJjaFwiXG4gICAgfCBgU3R5bGVzaGVldCAtPiBcInN0eWxlc2hlZXRcIlxuICAgIHwgYFNpZGViYXIgLT4gXCJzaWRlYmFyXCJcbiAgICB8IGBUYWcgLT4gXCJ0YWdcIlxuICAgIHwgYFVwIC0+IFwidXBcIlxuICAgIHwgYFZlcmJhdGltIC0+IFwidmVyYmF0aW1cIlxuICAgIHwgYExhdGluIC0+IFwibGF0aW5cIlxuICAgIHwgYExhdGluX25hbWUgLT4gXCJsYXRpbi1uYW1lXCJcbiAgICB8IGBMYXRpbl9wcm9zZSAtPiBcImxhdGluLXByb3NlXCJcbiAgICB8IGBGdWxsX3dpZHRoX2xhdGluIC0+IFwiZnVsbC13aWR0aC1sYXRpblwiXG4gICAgfCBgS2FuYSAtPiBcImthbmFcIlxuICAgIHwgYEthdGFrYW5hIC0+IFwia2F0YWthbmFcIlxuICAgIHwgYE51bWVyaWMgLT4gXCJudW1lcmljXCJcbiAgICB8IGBUZWwgLT4gXCJ0ZWxcIlxuICAgIHwgYEVtYWlsIC0+IFwiZW1haWxcIlxuICAgIHwgYFVybCAtPiBcInVybFwiXG4gICAgfCBgVGV4dCAtPiBcInRleHRcIlxuICAgIHwgYERlY2ltYWwgLT4gXCJkZWNpbWFsXCJcbiAgICB8IGBPdGhlciBzIC0+IHNcblxuICBsZXQgc3RyaW5nX29mX2lucHV0X3R5cGUgPSBmdW5jdGlvblxuICAgIHwgYEJ1dHRvbiAtPiBcImJ1dHRvblwiXG4gICAgfCBgQ2hlY2tib3ggLT4gXCJjaGVja2JveFwiXG4gICAgfCBgQ29sb3IgLT4gXCJjb2xvclwiXG4gICAgfCBgRGF0ZSAtPiBcImRhdGVcIlxuICAgIHwgYERhdGV0aW1lIC0+IFwiZGF0ZXRpbWVcIlxuICAgIHwgYERhdGV0aW1lX2xvY2FsIC0+IFwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgIHwgYEVtYWlsIC0+IFwiZW1haWxcIlxuICAgIHwgYEZpbGUgLT4gXCJmaWxlXCJcbiAgICB8IGBIaWRkZW4gLT4gXCJoaWRkZW5cIlxuICAgIHwgYEltYWdlIC0+IFwiaW1hZ2VcIlxuICAgIHwgYE1vbnRoIC0+IFwibW9udGhcIlxuICAgIHwgYE51bWJlciAtPiBcIm51bWJlclwiXG4gICAgfCBgUGFzc3dvcmQgLT4gXCJwYXNzd29yZFwiXG4gICAgfCBgUmFkaW8gLT4gXCJyYWRpb1wiXG4gICAgfCBgUmFuZ2UgLT4gXCJyYW5nZVwiXG4gICAgfCBgUmVhZG9ubHkgLT4gXCJyZWFkb25seVwiXG4gICAgfCBgUmVzZXQgLT4gXCJyZXNldFwiXG4gICAgfCBgU2VhcmNoIC0+IFwic2VhcmNoXCJcbiAgICB8IGBTdWJtaXQgLT4gXCJzdWJtaXRcIlxuICAgIHwgYFRlbCAtPiBcInRlbFwiXG4gICAgfCBgVGV4dCAtPiBcInRleHRcIlxuICAgIHwgYFRpbWUgLT4gXCJ0aW1lXCJcbiAgICB8IGBVcmwgLT4gXCJ1cmxcIlxuICAgIHwgYFdlZWsgLT4gXCJ3ZWVrXCJcblxuICBsZXQgc3RyaW5nX29mX3NjcmlwdF90eXBlID0gZnVuY3Rpb25cbiAgfCBgSmF2YXNjcmlwdCAtPiBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIlxuICB8IGBNb2R1bGUgLT4gXCJtb2R1bGVcIlxuICB8IGBNaW1lIHMgLT4gc1xuXG4gIGxldCBzdHJpbmdfb2ZfbnVtYmVyX29yX2RhdGV0aW1lID0gZnVuY3Rpb25cbiAgICB8IGBOdW1iZXIgbiAtPiBzdHJpbmdfb2ZfaW50IG5cbiAgICB8IGBEYXRldGltZSB0IC0+IHRcblxuICBsZXQgc3RyaW5nX29mX2NoYXJhY3RlciA9IFN0cmluZy5tYWtlIDFcblxuICBsZXQgc3RyaW5nX29mX251bWJlciA9IHN0cmluZ19vZl9pbnRcblxuICBsZXQgc3RyaW5nX29mX2Jvb2wgPSBzdHJpbmdfb2ZfYm9vbFxuXG4gIGxldCBvbm9mZl9vZl9ib29sID0gZnVuY3Rpb25cbiAgICB8IGZhbHNlIC0+IFwib2ZmXCJcbiAgICB8IHRydWUgLT4gXCJvblwiXG5cbiAgbGV0IHVub3B0aW9uX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBcIlwiXG5cbiAgbGV0IHN0cmluZ19vZl9zdGVwID0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPiBYbWxfcHJpbnQuc3RyaW5nX29mX251bWJlciB4XG4gICAgfCBOb25lIC0+IFwiYW55XCJcblxuICBsZXQgc3RyaW5nX29mX3NpemVzID0gZnVuY3Rpb25cbiAgICB8IFNvbWUgbCAtPlxuICAgICAgU3RyaW5nLmNvbmNhdCBcIiBcIlxuICAgICAgICAoTGlzdC5tYXAgKGZ1biAoeCwgeSkgLT4gUHJpbnRmLnNwcmludGYgXCIlZHglZFwiIHggeSkgbClcbiAgICB8IE5vbmUgLT5cbiAgICAgIFwiYW55XCJcblxuICBsZXQgc3RyaW5nX29mX3NhbmRib3ggbCA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgc3RyaW5nX29mX3NhbmRib3hfdG9rZW4gbClcblxuICBsZXQgc3RyaW5nX29mX251bWJlcnMgbCA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIixcIiAoTGlzdC5tYXAgc3RyaW5nX29mX251bWJlciBsKVxuXG4gIGxldCBzdHJpbmdfb2ZfbWVkaWFkZXNjIGwgPVxuICAgIFN0cmluZy5jb25jYXQgXCIsIFwiIChMaXN0Lm1hcCBzdHJpbmdfb2ZfbWVkaWFkZXNjX3Rva2VuIGwpXG5cbiAgbGV0IHN0cmluZ19vZl9saW5rdHlwZXMgbCA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2xpbmt0eXBlIGwpXG5cbiAgdHlwZSBpbWFnZV9jYW5kaWRhdGUgPVxuICAgIFsgYFVybCBvZiBYbWwudXJpXG4gICAgfCBgVXJsX3dpZHRoIG9mIFhtbC51cmkgKiBIdG1sX3R5cGVzLm51bWJlclxuICAgIHwgYFVybF9waXhlbCBvZiBYbWwudXJpICogSHRtbF90eXBlcy5mbG9hdF9udW1iZXIgXVxuXG4gIGxldCBzdHJpbmdfb2Zfc3Jjc2V0IChsIDogWzwgaW1hZ2VfY2FuZGlkYXRlXSBsaXN0KSA9XG4gICAgbGV0IGYgPSBmdW5jdGlvblxuICAgIHwgYFVybCB1cmwgLT4gWG1sLnN0cmluZ19vZl91cmkgdXJsXG4gICAgfCBgVXJsX3dpZHRoICh1cmwsIHYpIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzd1wiIChYbWwuc3RyaW5nX29mX3VyaSB1cmwpIChzdHJpbmdfb2ZfbnVtYmVyIHYpXG4gICAgfCBgVXJsX3BpeGVsICh1cmwsIHYpIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzeFwiIChYbWwuc3RyaW5nX29mX3VyaSB1cmwpIChYbWxfcHJpbnQuc3RyaW5nX29mX251bWJlciB2KVxuICAgIGluXG4gICAgU3RyaW5nLmNvbmNhdCBcIiwgXCIgKExpc3QubWFwIGYgbClcblxuICBsZXQgc3RyaW5nX29mX2F1dG9jb21wbGV0ZSAobCA6IEh0bWxfdHlwZXMuYXV0b2NvbXBsZXRlX29wdGlvbikgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgYE9uIHwgYFRva2VucyBbXSAtPiBcIm9uXCJcbiAgICB8IGBPZmYgLT4gXCJvZmZcIlxuICAgIHwgYFRva2VucyBzdHJzIC0+IFN0cmluZy5jb25jYXQgXCIgXCIgc3Ryc1xuXG5lbmRcblxubW9kdWxlIE1ha2VcbiAgICAoWG1sIDogWG1sX3NpZ3MuVCB3aXRoIHR5cGUgKCdhLCAnYikgVy5mdCA9ICdhIC0+ICdiKVxuICAgIChTdmcgOiBTdmdfc2lncy5UIHdpdGggbW9kdWxlIFhtbCA6PSBYbWwpID1cbiAgTWFrZV93aXRoX3dyYXBwZWRfZnVuY3Rpb25zKFhtbCkoV3JhcHBlZF9mdW5jdGlvbnMoWG1sKSkoU3ZnKVxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAwNCBUaG9yc3RlbiBPaGwgPG9obEBwaHlzaWsudW5pLXd1ZXJ6YnVyZy5kZT5cbiAqIENvcHlyaWdodCAoQykgMjAwNyBHYWJyaWVsIEtlcm5laXNcbiAqIENvcHlyaWdodCAoQykgMjAxMCBDZWNpbGUgSGVyYmVsaW5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cblxubW9kdWxlIE0gPSBzdHJ1Y3RcblxuICBtb2R1bGUgVyA9IFhtbF93cmFwLk5vV3JhcFxuXG4gIHR5cGUgJ2Egd3JhcCA9ICdhXG4gIHR5cGUgJ2EgbGlzdF93cmFwID0gJ2EgbGlzdFxuXG4gIHR5cGUgdXJpID0gc3RyaW5nXG4gIGxldCB1cmlfb2Zfc3RyaW5nIHMgPSBzXG4gIGxldCBzdHJpbmdfb2ZfdXJpIHMgPSBzXG5cbiAgdHlwZSBzZXBhcmF0b3IgPSBTcGFjZSB8IENvbW1hXG5cbiAgKCoqIEF0dHJpYnV0ZXMgKilcblxuICB0eXBlIGFuYW1lID0gc3RyaW5nXG4gIHR5cGUgYWNvbnRlbnQgPVxuICAgIHwgQUZsb2F0IG9mIGZsb2F0XG4gICAgfCBBSW50IG9mIGludFxuICAgIHwgQVN0ciBvZiBzdHJpbmdcbiAgICB8IEFTdHJMIG9mIHNlcGFyYXRvciAqIHN0cmluZyBsaXN0XG4gIHR5cGUgYXR0cmliID0gYW5hbWUgKiBhY29udGVudFxuXG4gIHR5cGUgZXZlbnRfaGFuZGxlciA9IHN0cmluZ1xuICB0eXBlIG1vdXNlX2V2ZW50X2hhbmRsZXIgPSBzdHJpbmdcbiAgdHlwZSBrZXlib2FyZF9ldmVudF9oYW5kbGVyID0gc3RyaW5nXG4gIHR5cGUgdG91Y2hfZXZlbnRfaGFuZGxlciA9IHN0cmluZ1xuXG4gIGxldCBhY29udGVudCAoXywgYSkgPSBhXG4gIGxldCBhbmFtZSAobmFtZSwgXykgPSBuYW1lXG5cbiAgbGV0IGZsb2F0X2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQUZsb2F0IHZhbHVlXG4gIGxldCBpbnRfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBSW50IHZhbHVlXG4gIGxldCBzdHJpbmdfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBU3RyIHZhbHVlXG4gIGxldCBzcGFjZV9zZXBfYXR0cmliIG5hbWUgdmFsdWVzID0gbmFtZSwgQVN0ckwgKFNwYWNlLCB2YWx1ZXMpXG4gIGxldCBjb21tYV9zZXBfYXR0cmliIG5hbWUgdmFsdWVzID0gbmFtZSwgQVN0ckwgKENvbW1hLCB2YWx1ZXMpXG4gIGxldCBldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQVN0ciB2YWx1ZVxuICBsZXQgbW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSB2YWx1ZSA9IG5hbWUsIEFTdHIgdmFsdWVcbiAgbGV0IGtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBU3RyIHZhbHVlXG4gIGxldCB0b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQVN0ciB2YWx1ZVxuICBsZXQgdXJpX2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQVN0ciB2YWx1ZVxuICBsZXQgdXJpc19hdHRyaWIgbmFtZSB2YWx1ZXMgPSBuYW1lLCBBU3RyTCAoU3BhY2UsIHZhbHVlcylcblxuXG4gICgqKiBFbGVtZW50ICopXG5cbiAgdHlwZSBlbmFtZSA9IHN0cmluZ1xuICB0eXBlIGVjb250ZW50ID1cbiAgICB8IEVtcHR5XG4gICAgfCBDb21tZW50IG9mIHN0cmluZ1xuICAgIHwgRW5jb2RlZFBDREFUQSBvZiBzdHJpbmdcbiAgICB8IFBDREFUQSBvZiBzdHJpbmdcbiAgICB8IEVudGl0eSBvZiBzdHJpbmdcbiAgICB8IExlYWYgb2YgZW5hbWUgKiBhdHRyaWIgbGlzdFxuICAgIHwgTm9kZSBvZiBlbmFtZSAqIGF0dHJpYiBsaXN0ICogZWNvbnRlbnQgbGlzdFxuXG4gIHR5cGUgZWx0ID0gIGVjb250ZW50XG5cbiAgbGV0IGNvbnRlbnQgZWx0ID0gZWx0XG5cbiAgbGV0IGVtcHR5ICgpID0gRW1wdHlcblxuICBsZXQgY29tbWVudCBjID0gQ29tbWVudCBjXG5cbiAgbGV0IHBjZGF0YSBkID0gUENEQVRBIGRcbiAgbGV0IGVuY29kZWRwY2RhdGEgZCA9IEVuY29kZWRQQ0RBVEEgZFxuICBsZXQgZW50aXR5IGUgPSBFbnRpdHkgZVxuXG4gICgqIEZvciBzZWN1cml0eSByZWFzb25zLCB3ZSBkbyBub3QgYWxsb3cgXCJdXT5cIiBpbnNpZGUgQ0RBVEFcbiAgICAgKGFzIHRoaXMgc3RyaW5nIGlzIHRvIGJlIGNvbnNpZGVyZWQgYXMgdGhlIGVuZCBvZiB0aGUgY2RhdGEpXG4gICopXG4gIGxldCByZV9lbmRfY2RhdGEgPSBSZS4oY29tcGlsZSBAQCBzdHIgXCJdXT5cIilcbiAgbGV0IGVuY29kZWRfY2RhdGEgczEgczIgcyA9XG4gICAgZW5jb2RlZHBjZGF0YVxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiXFxuJXNcXG4lc1xcbiVzXFxuXCJcbiAgICAgICAgIHMxXG4gICAgICAgICAoUmUucmVwbGFjZV9zdHJpbmcgfmFsbDp0cnVlIHJlX2VuZF9jZGF0YSB+Ynk6XCJcIiBzKVxuICAgICAgICAgczIgKVxuXG4gIGxldCBjZGF0YSA9IGVuY29kZWRfY2RhdGEgXCI8IVtDREFUQVtcIiBcIl1dPlwiXG4gIGxldCBjZGF0YV9zY3JpcHQgPSBlbmNvZGVkX2NkYXRhIFwiLy88IVtDREFUQVtcIiBcIi8vXV0+XCJcbiAgbGV0IGNkYXRhX3N0eWxlID0gZW5jb2RlZF9jZGF0YSBcIi8qIDwhW0NEQVRBWyAqL1wiIFwiLyogXV0+ICovXCJcblxuICBsZXQgbGVhZiA/KGE9W10pIG5hbWUgPSBMZWFmIChuYW1lLCBhKVxuICBsZXQgbm9kZSA/KGE9W10pIG5hbWUgY2hpbGRyZW4gPSBOb2RlIChuYW1lLCBhLCBjaGlsZHJlbilcblxuZW5kXG5cbmluY2x1ZGUgTVxuaW5jbHVkZSBYbWxfcHJpbnQuTWFrZV9zaW1wbGUoTSkoc3RydWN0IGxldCBlbXB0eXRhZ3MgPSBbXSBlbmQpXG5bQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuaW5jbHVkZSBYbWxfaXRlci5NYWtlKE0pXG5pbmNsdWRlIFhtbF9wcmludC5NYWtlX2ZtdChNKShzdHJ1Y3QgbGV0IGVtcHR5dGFncyA9IFtdIGVuZClcblxuaW5jbHVkZSBYbWxfc3RyZWFtLkltcG9ydChNKVxubGV0IHByaW50IGZtdCB4ID0gcHJpbnRfbGlzdCB+b3V0cHV0OihGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCkgW3hdXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydCwgR3LDqWdvaXJlIEhlbnJ5XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG5tb2R1bGUgTSA9IFN2Z19mLk1ha2UoVHl4bWxfeG1sKVxubW9kdWxlIFAgPSBYbWxfcHJpbnQuTWFrZV90eXBlZF9mbXQoVHl4bWxfeG1sKShNKVxubW9kdWxlIE1ha2VfcHJpbnRlciA9IFhtbF9wcmludC5NYWtlX3R5cGVkKFR5eG1sX3htbCkoTSlcbltAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG5cbmluY2x1ZGUgTVxuaW5jbHVkZSBQXG5cbmxldCBfcHAgPSBwcCAoKVxubGV0IF9wcF9lbHQgPSBwcF9lbHQgKClcbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0LCBHcsOpZ29pcmUgSGVucnlcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cbm1vZHVsZSBNID0gSHRtbF9mLk1ha2UoVHl4bWxfeG1sKShUeXhtbF9zdmcpXG5tb2R1bGUgUCA9IFhtbF9wcmludC5NYWtlX3R5cGVkX2ZtdChUeXhtbF94bWwpKE0pXG5tb2R1bGUgTWFrZV9wcmludGVyID0gWG1sX3ByaW50Lk1ha2VfdHlwZWQoVHl4bWxfeG1sKShNKVxuW0BAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbmluY2x1ZGUgTVxuaW5jbHVkZSBQXG5cbmxldCBfcHAgPSBwcCAoKVxubGV0IF9wcF9lbHQgPSBwcF9lbHQgKClcbiIsIigqIFJlYWN0aXZlRGF0YVxuICogaHR0cHM6Ly9naXRodWIuY29tL2hodWdvL3JlYWN0aXZlRGF0YVxuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgdHlwZSBEQVRBID0gc2lnXG4gIHR5cGUgJ2EgZGF0YVxuICB0eXBlICdhIHBhdGNoXG4gIHZhbCBtZXJnZSA6ICdhIHBhdGNoIC0+ICdhIGRhdGEgLT4gJ2EgZGF0YVxuICB2YWwgbWFwX3BhdGNoIDogKCdhIC0+ICdiKSAtPiAnYSBwYXRjaCAtPiAnYiBwYXRjaFxuICB2YWwgbWFwX2RhdGEgOiAoJ2EgLT4gJ2IpIC0+ICdhIGRhdGEgLT4gJ2IgZGF0YVxuICB2YWwgZW1wdHkgOiAnYSBkYXRhXG4gIHZhbCBlcXVhbCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSBkYXRhIC0+ICdhIGRhdGEgLT4gYm9vbFxuICB2YWwgZGlmZiA6IGVxOignYSAtPiAnYSAtPiBib29sKSAtPiAnYSBkYXRhIC0+ICdhIGRhdGEgLT4gJ2EgcGF0Y2hcbmVuZFxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAnYSBkYXRhXG4gIHR5cGUgJ2EgcGF0Y2hcbiAgdHlwZSAnYSBtc2cgPSBQYXRjaCBvZiAnYSBwYXRjaCB8IFNldCBvZiAnYSBkYXRhXG4gIHR5cGUgJ2EgaGFuZGxlXG4gIHZhbCBlbXB0eSA6ICdhIHRcbiAgdmFsIGNyZWF0ZSA6ICdhIGRhdGEgLT4gJ2EgdCAqICdhIGhhbmRsZVxuICB2YWwgZnJvbV9ldmVudCA6ICdhIGRhdGEgLT4gJ2EgbXNnIFJlYWN0LkUudCAtPiAnYSB0XG4gIHZhbCBmcm9tX3NpZ25hbCA6ID9lcTooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgZGF0YSBSZWFjdC5TLnQgLT4gJ2EgdFxuICB2YWwgY29uc3QgOiAnYSBkYXRhIC0+ICdhIHRcbiAgdmFsIHBhdGNoIDogJ2EgaGFuZGxlIC0+ICdhIHBhdGNoIC0+IHVuaXRcbiAgdmFsIHNldCAgIDogJ2EgaGFuZGxlIC0+ICdhIGRhdGEgLT4gdW5pdFxuICB2YWwgbWFwX21zZyA6ICgnYSAtPiAnYikgLT4gJ2EgbXNnIC0+ICdiIG1zZ1xuICB2YWwgbWFwIDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgdmFsIHZhbHVlIDogJ2EgdCAtPiAnYSBkYXRhXG4gIHZhbCBmb2xkIDogKCdhIC0+ICdiIG1zZyAtPiAnYSkgLT4gJ2IgdCAtPiAnYSAtPiAnYSBSZWFjdC5zaWduYWxcbiAgdmFsIHNpZ25hbCA6ID9lcTooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSBkYXRhIFJlYWN0LlMudFxuICB2YWwgZXZlbnQgOiAnYSB0IC0+ICdhIG1zZyBSZWFjdC5FLnRcbmVuZFxuXG5tb2R1bGUgTWFrZShEIDogREFUQSkgOlxuICBTIHdpdGggdHlwZSAnYSBkYXRhID0gJ2EgRC5kYXRhXG4gICAgIGFuZCB0eXBlICdhIHBhdGNoID0gJ2EgRC5wYXRjaCA9IHN0cnVjdFxuXG4gIHR5cGUgJ2EgZGF0YSA9ICdhIEQuZGF0YVxuICB0eXBlICdhIHBhdGNoID0gJ2EgRC5wYXRjaFxuICBsZXQgbWVyZ2UgPSBELm1lcmdlXG4gIGxldCBtYXBfcGF0Y2ggPSBELm1hcF9wYXRjaFxuICBsZXQgbWFwX2RhdGEgPSBELm1hcF9kYXRhXG5cbiAgdHlwZSAnYSBtc2cgPVxuICAgIHwgUGF0Y2ggb2YgJ2EgcGF0Y2hcbiAgICB8IFNldCBvZiAnYSBkYXRhXG5cbiAgdHlwZSAnYSBoYW5kbGUgPSA/c3RlcDpSZWFjdC5zdGVwIC0+ICdhIG1zZyAtPiB1bml0XG5cbiAgdHlwZSAnYSBtdXQgPSB7XG4gICAgY3VycmVudCA6ICdhIGRhdGEgcmVmO1xuICAgIGV2ZW50IDogJ2EgbXNnIFJlYWN0LkUudDtcbiAgfVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBDb25zdCBvZiAnYSBkYXRhXG4gICAgfCBNdXQgb2YgJ2EgbXV0XG5cbiAgbGV0IGVtcHR5ID0gQ29uc3QgRC5lbXB0eVxuXG4gIGxldCBjcmVhdGUgbCA9XG4gICAgbGV0IGluaXRpYWxfZXZlbnQsc2VuZCA9IFJlYWN0LkUuY3JlYXRlICgpIGluXG4gICAgbGV0IGN1cnJlbnQgPSByZWYgbCBpblxuICAgIGxldCBldmVudCA9IFJlYWN0LkUubWFwIChmdW4gbXNnIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIG1zZyB3aXRoXG4gICAgICAgICAgfCBTZXQgbCAtPiBjdXJyZW50IDo9IGw7XG4gICAgICAgICAgfCBQYXRjaCBwIC0+IGN1cnJlbnQgOj0gbWVyZ2UgcCAhY3VycmVudFxuICAgICAgICBlbmQ7XG4gICAgICAgIG1zZykgaW5pdGlhbF9ldmVudCBpblxuICAgIE11dCB7Y3VycmVudDtldmVudH0sc2VuZFxuXG4gIGxldCBmcm9tX2V2ZW50IGwgaW5pdGlhbF9ldmVudCA9XG4gICAgbGV0IGN1cnJlbnQgPSByZWYgbCBpblxuICAgIGxldCBldmVudCA9IFJlYWN0LkUubWFwIChmdW4gbXNnIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIG1zZyB3aXRoXG4gICAgICAgICAgfCBTZXQgbCAtPiBjdXJyZW50IDo9IGw7XG4gICAgICAgICAgfCBQYXRjaCBwIC0+IGN1cnJlbnQgOj0gbWVyZ2UgcCAhY3VycmVudFxuICAgICAgICBlbmQ7XG4gICAgICAgIG1zZykgaW5pdGlhbF9ldmVudCBpblxuICAgIE11dCB7Y3VycmVudDtldmVudH1cblxuICBsZXQgY29uc3QgeCA9IENvbnN0IHhcblxuICBsZXQgbWFwX21zZyAoZiA6ICdhIC0+ICdiKSA6ICdhIG1zZyAtPiAnYiBtc2cgPSBmdW5jdGlvblxuICAgIHwgU2V0IGwgLT4gU2V0IChtYXBfZGF0YSBmIGwpXG4gICAgfCBQYXRjaCBwIC0+IFBhdGNoIChtYXBfcGF0Y2ggZiBwKVxuXG4gIGxldCBtYXAgZiBzID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IENvbnN0IHggLT4gQ29uc3QgKG1hcF9kYXRhIGYgeClcbiAgICB8IE11dCBzIC0+XG4gICAgICBsZXQgY3VycmVudCA9IHJlZiAobWFwX2RhdGEgZiAhKHMuY3VycmVudCkpIGluXG4gICAgICBsZXQgZXZlbnQgPSBSZWFjdC5FLm1hcCAoZnVuIG1zZyAtPlxuICAgICAgICAgIGxldCBtc2cgPSBtYXBfbXNnIGYgbXNnIGluXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbXNnIHdpdGhcbiAgICAgICAgICAgIHwgU2V0IGwgLT4gY3VycmVudCA6PSBsO1xuICAgICAgICAgICAgfCBQYXRjaCBwIC0+IGN1cnJlbnQgOj0gbWVyZ2UgcCAhY3VycmVudFxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBtc2cpIHMuZXZlbnQgaW5cbiAgICAgIE11dCB7Y3VycmVudCA7ZXZlbnR9XG5cbiAgbGV0IHZhbHVlIHMgPSBtYXRjaCBzIHdpdGhcbiAgICB8IENvbnN0IGMgLT4gY1xuICAgIHwgTXV0IHMgLT4gIShzLmN1cnJlbnQpXG5cbiAgbGV0IGV2ZW50IHMgPSBtYXRjaCBzIHdpdGhcbiAgICB8IENvbnN0IF8gLT4gUmVhY3QuRS5uZXZlclxuICAgIHwgTXV0IHMgLT4gcy5ldmVudFxuXG4gIGxldCBwYXRjaCAocyA6ICdhIGhhbmRsZSkgcCA9IHMgKFBhdGNoIHApXG5cbiAgbGV0IHNldCAocyA6ICdhIGhhbmRsZSkgcCA9IHMgKFNldCBwKVxuXG4gIGxldCBmb2xkIGYgcyBhY2MgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgQ29uc3QgYyAtPiBSZWFjdC5TLmNvbnN0IChmIGFjYyAoU2V0IGMpKVxuICAgIHwgTXV0IHMgLT5cbiAgICAgIGxldCBhY2MgPSBmIGFjYyAoU2V0ICghKHMuY3VycmVudCkpKSBpblxuICAgICAgUmVhY3QuUy5mb2xkIGYgYWNjIHMuZXZlbnRcblxuICBsZXQgc2lnbmFsID8oZXEgPSAoPSkpIChzIDogJ2EgdCkgOiAnYSBkYXRhIFJlYWN0LlMudCA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBDb25zdCBjIC0+IFJlYWN0LlMuY29uc3QgY1xuICAgIHwgTXV0IHMgLT5cbiAgICAgIFJlYWN0LlMuZm9sZCB+ZXE6KEQuZXF1YWwgZXEpIChmdW4gbCBtc2cgLT5cbiAgICAgICAgICBtYXRjaCBtc2cgd2l0aFxuICAgICAgICAgIHwgU2V0IGwgLT4gbFxuICAgICAgICAgIHwgUGF0Y2ggcCAtPiBtZXJnZSBwIGwpICghKHMuY3VycmVudCkpIHMuZXZlbnRcblxuICBsZXQgZnJvbV9zaWduYWwgPyhlcSA9ICg9KSkgcyA9XG4gICAgbGV0IGYgZCcgZCA9IFBhdGNoIChELmRpZmYgfmVxIGQgZCcpIGluXG4gICAgZnJvbV9ldmVudCAoUmVhY3QuUy52YWx1ZSBzKSAoUmVhY3QuUy5kaWZmIGYgcylcblxuZW5kXG5cbm1vZHVsZSBEYXRhTGlzdCA9IHN0cnVjdFxuICB0eXBlICdhIGRhdGEgPSAnYSBsaXN0XG4gIHR5cGUgJ2EgcCA9XG4gICAgfCBJIG9mIGludCAqICdhXG4gICAgfCBSIG9mIGludFxuICAgIHwgVSBvZiBpbnQgKiAnYVxuICAgIHwgWCBvZiBpbnQgKiBpbnRcbiAgdHlwZSAnYSBwYXRjaCA9ICdhIHAgbGlzdFxuICBsZXQgZW1wdHkgPSBbXVxuICBsZXQgbWFwX2RhdGEgPSBMaXN0Lm1hcFxuICBsZXQgbWFwX3BhdGNoIGYgPSBmdW5jdGlvblxuICAgIHwgSSAoaSx4KSAtPiBJIChpLCBmIHgpXG4gICAgfCBSIGkgLT4gUiBpXG4gICAgfCBYIChpLGopIC0+IFggKGksailcbiAgICB8IFUgKGkseCkgLT4gVSAoaSxmIHgpXG4gIGxldCBtYXBfcGF0Y2ggZiA9IExpc3QubWFwIChtYXBfcGF0Y2ggZilcblxuICBsZXQgbWVyZ2VfcCBvcCBsID1cbiAgICBtYXRjaCBvcCB3aXRoXG4gICAgfCBJIChpJyx4KSAtPlxuICAgICAgbGV0IGkgPSBpZiBpJyA8IDAgdGhlbiBMaXN0Lmxlbmd0aCBsICsgMSArIGknIGVsc2UgaScgaW5cbiAgICAgIGxldCByZWMgYXV4IGFjYyBuIGwgPSBtYXRjaCBuLGwgd2l0aFxuICAgICAgICB8IDAsbCAtPiBMaXN0LnJldl9hcHBlbmQgYWNjICh4OjpsKVxuICAgICAgICB8IF8sW10gLT4gZmFpbHdpdGggXCJSZWFjdGl2ZURhdGEuUmxpc3QubWVyZ2VcIlxuICAgICAgICB8IG4seDo6eHMgLT4gYXV4ICh4OjphY2MpIChwcmVkIG4pIHhzXG4gICAgICBpbiBhdXggW10gaSBsXG4gICAgfCBSIGknIC0+XG4gICAgICBsZXQgaSA9IGlmIGknIDwgMCB0aGVuIExpc3QubGVuZ3RoIGwgKyBpJyBlbHNlIGknIGluXG4gICAgICBsZXQgcmVjIGF1eCBhY2MgbiBsID0gbWF0Y2ggbixsIHdpdGhcbiAgICAgICAgfCAwLF86OmwgLT4gTGlzdC5yZXZfYXBwZW5kIGFjYyBsXG4gICAgICAgIHwgXyxbXSAtPiBmYWlsd2l0aCBcIlJlYWN0aXZlRGF0YS5SbGlzdC5tZXJnZVwiXG4gICAgICAgIHwgbix4Ojp4cyAtPiBhdXggKHg6OmFjYykgKHByZWQgbikgeHNcbiAgICAgIGluIGF1eCBbXSBpIGxcbiAgICB8IFUgKGknLHgpIC0+XG4gICAgICBsZXQgaSA9IGlmIGknIDwgMCB0aGVuIExpc3QubGVuZ3RoIGwgKyBpJyBlbHNlIGknIGluXG4gICAgICBsZXQgYSA9IEFycmF5Lm9mX2xpc3QgbCBpblxuICAgICAgYS4oaSkgPC0geDtcbiAgICAgIEFycmF5LnRvX2xpc3QgYVxuICAgIHwgWCAoaScsb2Zmc2V0KSAtPlxuICAgICAgbGV0IGEgPSBBcnJheS5vZl9saXN0IGwgaW5cbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICAgICAgbGV0IGkgPSBpZiBpJyA8IDAgdGhlbiBsZW4gKyBpJyBlbHNlIGknIGluXG4gICAgICBsZXQgdiA9IGEuKGkpIGluXG4gICAgICBpZiBvZmZzZXQgPiAwXG4gICAgICB0aGVuIGJlZ2luXG4gICAgICAgIGlmIChpICsgb2Zmc2V0ID49IGxlbikgdGhlbiBmYWlsd2l0aCBcIlJlYWN0aXZlRGF0YS5SbGlzdC5tZXJnZVwiO1xuICAgICAgICBmb3IgaiA9IGkgdG8gaSArIG9mZnNldCAtIDEgZG9cbiAgICAgICAgICBhLihqKSA8LSBhLihqICsgMSlcbiAgICAgICAgZG9uZTtcbiAgICAgICAgYS4oaStvZmZzZXQpIDwtIHZcbiAgICAgIGVuZFxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBpZiAoaSArIG9mZnNldCA8IDApIHRoZW4gZmFpbHdpdGggXCJSZWFjdGl2ZURhdGEuUmxpc3QubWVyZ2VcIjtcbiAgICAgICAgZm9yIGogPSBpIGRvd250byBpICsgb2Zmc2V0ICsgMSBkb1xuICAgICAgICAgIGEuKGopIDwtIGEuKGogLSAxKVxuICAgICAgICBkb25lO1xuICAgICAgICBhLihpK29mZnNldCkgPC0gdlxuICAgICAgZW5kO1xuICAgICAgQXJyYXkudG9fbGlzdCBhXG5cbiAgKCogYWNjdW11bGF0ZXMgaW50byBhY2MgaSB1bm1vZGlmaWVkIGVsZW1lbnRzIGZyb20gbCAqKVxuICBsZXQgcmVjIGxpbmVhcl9tZXJnZV9md2QgfmFjYyBpIGwgPVxuICAgIGFzc2VydCAoaSA+PSAwKTtcbiAgICBpZiBpID4gMCB0aGVuXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgaCA6OiBsIC0+XG4gICAgICAgIGxldCBhY2MgPSBoIDo6IGFjYyBpblxuICAgICAgICBsaW5lYXJfbWVyZ2VfZndkIH5hY2MgKGkgLSAxKSBsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGludmFsaWRfYXJnIFwiaW52YWxpZCBpbmRleFwiXG4gICAgZWxzZVxuICAgICAgbCwgYWNjXG5cbiAgbGV0IHJlYyBsaW5lYXJfbWVyZ2UgfmFjYyBpMCBwIGwgPVxuICAgIGxldCBsLCBhY2MgPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IChJIChpLCBfKSB8IFIgaSB8IFUgKGksIF8pKSA6OiBfIHdoZW4gaSA+IGkwIC0+XG4gICAgICAgIGxpbmVhcl9tZXJnZV9md2QgfmFjYyAoaSAtIGkwKSBsXG4gICAgICB8IF8gLT5cbiAgICAgICAgbCwgYWNjXG4gICAgaW5cbiAgICBtYXRjaCBwLCBsIHdpdGhcbiAgICB8IEkgKGksIHgpIDo6IHAsIF8gLT5cbiAgICAgIGxpbmVhcl9tZXJnZSB+YWNjIGkgcCAoeCA6OiBsKVxuICAgIHwgUiBpIDo6IHAsIF8gOjogbCAtPlxuICAgICAgbGluZWFyX21lcmdlIH5hY2MgaSBwIGxcbiAgICB8IFIgXyA6OiBfLCBbXSAtPlxuICAgICAgaW52YWxpZF9hcmcgXCJtZXJnZTogaW52YWxpZCBpbmRleFwiXG4gICAgfCBVIChpLCB4KSA6OiBwLCBfIDo6IGwgLT5cbiAgICAgIGxpbmVhcl9tZXJnZSB+YWNjIGkgcCAoeCA6OiBsKVxuICAgIHwgVSAoXywgXykgOjogXywgW10gLT5cbiAgICAgIGludmFsaWRfYXJnIFwibWVyZ2U6IGludmFsaWQgaW5kZXhcIlxuICAgIHwgW10sIGwgLT5cbiAgICAgIExpc3QucmV2X2FwcGVuZCBhY2MgbFxuICAgIHwgWCAoXywgXykgOjogXywgXyAtPlxuICAgICAgZmFpbHdpdGggXCJsaW5lYXJfbWVyZ2U6IFggbm90IHN1cHBvcnRlZFwiXG5cbiAgbGV0IHJlYyBsaW5lYXJfbWVyZ2VhYmxlIH5uIHAgPVxuICAgIGFzc2VydCAobiA+PSAwKTtcbiAgICBtYXRjaCBwIHdpdGhcbiAgICB8IChJIChpLCBfKSB8IFIgaSB8IFUgKGksIF8pKSA6OiBwIHdoZW4gaSA+PSBuIC0+XG4gICAgICAoKiBuZWdhdGl2ZSBpJ3MgcnVsZWQgb3V0IChhbW9uZyBvdGhlcnMpICopXG4gICAgICBsaW5lYXJfbWVyZ2VhYmxlIH5uOmkgcFxuICAgIHwgXyA6OiBfIC0+XG4gICAgICBmYWxzZVxuICAgIHwgW10gLT5cbiAgICAgIHRydWVcblxuICBsZXQgbWVyZ2UgcCBsID1cbiAgICBpZiBsaW5lYXJfbWVyZ2VhYmxlIH5uOjAgcCB0aGVuXG4gICAgICBsaW5lYXJfbWVyZ2UgfmFjYzpbXSAwIHAgbFxuICAgIGVsc2VcbiAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbCB4IC0+IG1lcmdlX3AgeCBsKSBsIHBcblxuICBsZXQgcmVjIGVxdWFsIGYgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCB4MSA6OiBsMSwgeDIgOjogbDIgd2hlbiBmIHgxIHgyIC0+XG4gICAgICBlcXVhbCBmIGwxIGwyXG4gICAgfCBbXSwgW10gLT5cbiAgICAgIHRydWVcbiAgICB8IF8gOjogXyAsIF8gOjogX1xuICAgIHwgXyA6OiBfICwgW11cbiAgICB8IFtdICAgICAsIF8gOjogXyAtPlxuICAgICAgZmFsc2VcblxuICBsZXQgbWVtICh0eXBlIHUpIGwgPVxuICAgIGxldCBtb2R1bGUgSCA9XG4gICAgICBIYXNodGJsLk1ha2VcbiAgICAgICAgKHN0cnVjdCB0eXBlIHQgPSB1IGxldCBoYXNoID0gSGFzaHRibC5oYXNoIGxldCBlcXVhbCA9ICg9PSkgZW5kKSBpblxuICAgIGxldCBoID0gSC5jcmVhdGUgMTYgaW5cbiAgICBMaXN0Lml0ZXIgKGZ1biB4IC0+IEguYWRkIGggeCAoKSkgbDtcbiAgICBILm1lbSBoXG5cbiAgbGV0IGZvbGRfZGlmZiA/KGVxID0gKD0pKSB+YWNjIH5yZW1vdmUgfmFkZCBseCBseSA9XG4gICAgbGV0IG1lbXggPSBtZW0gbHhcbiAgICBhbmQgbWVteSA9IG1lbSBseSBpblxuICAgIGxldCByZWMgZiB+YWNjIH5sZWZ0IGx4IGx5IG4gPVxuICAgICAgbWF0Y2ggbHgsIGx5IHdpdGhcbiAgICAgICgqIHRyYWlsaW5nIGVsZW1lbnRzIHRvIGJlIHJlbW92ZWQgKilcbiAgICAgIHwgXyA6OiBseCwgW10gLT5cbiAgICAgICAgbGV0IGFjYyA9IHJlbW92ZSBhY2MgbiBpblxuICAgICAgICBmIH5hY2MgfmxlZnQgbHggW10gblxuICAgICAgKCogdHJhaWxpbmcgZWxlbWVudHMgdG8gYmUgYWRkZWQgKilcbiAgICAgIHwgW10sIHkgOjogbHkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGFkZCBhY2MgbiB5IGluXG4gICAgICAgIGYgfmFjYyB+bGVmdCBbXSBseSAobiArIDEpXG4gICAgICAoKiBkb25lISAqKVxuICAgICAgfCBbXSwgW10gLT5cbiAgICAgICAgYWNjXG4gICAgICAoKiBzYW1lICopXG4gICAgICB8IHggOjogbHgsIHkgOjogbHkgd2hlbiBlcSB4IHkgLT5cbiAgICAgICAgZiB+YWNjIH5sZWZ0IGx4IGx5IChuICsgMSlcbiAgICAgICgqIHggbmVlZHMgdG8gYmUgcmVtb3ZlZCBmb3Igc3VyZSAqKVxuICAgICAgfCB4IDo6IGx4LCBfIDo6IF8gd2hlbiBub3QgKG1lbXkgeCkgLT5cbiAgICAgICAgbGV0IGFjYyA9IHJlbW92ZSBhY2MgbiBpblxuICAgICAgICBmIH5hY2MgfmxlZnQgbHggbHkgblxuICAgICAgKCogeSBuZWVkcyB0byBiZSBhZGRlZCBmb3Igc3VyZSAqKVxuICAgICAgfCBfIDo6IF8sIHkgOjogbHkgd2hlbiBub3QgKG1lbXggeSkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGFkZCBhY2MgbiB5IGluXG4gICAgICAgIGYgfmFjYyB+bGVmdCBseCBseSAobiArIDEpXG4gICAgICAoKiBubyBtb3JlIGNlcnRhaW50eSwgfmxlZnQgZGVjaWRlcyB3aGF0IHRvIHJlY3VyIG9uICopXG4gICAgICB8IF8gOjogbHgsIF8gOjogXyB3aGVuIGxlZnQgLT5cbiAgICAgICAgbGV0IGFjYyA9IHJlbW92ZSBhY2MgbiBpblxuICAgICAgICBmIH5hY2MgfmxlZnQ6ZmFsc2UgbHggbHkgblxuICAgICAgfCBfIDo6IF8sIHkgOjogbHkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGFkZCBhY2MgbiB5IGluXG4gICAgICAgIGYgfmFjYyB+bGVmdDp0cnVlIGx4IGx5IChuICsgMSlcbiAgICBpblxuICAgIGYgfmFjYyB+bGVmdDp0cnVlIGx4IGx5IDBcblxuICBsZXQgcmVjIGxpc3RfcmV2ID8oYWNjID0gW10pID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IGFjYyA9IGggOjogYWNjIGluXG4gICAgICBsaXN0X3JldiB+YWNjIHRcbiAgICB8IFtdIC0+XG4gICAgICBhY2NcblxuICBsZXQgZGlmZiB+ZXEgeCB5ID1cbiAgICBsZXQgYWRkIGFjYyBpIHYgPSBJIChpLCB2KSA6OiBhY2NcbiAgICBhbmQgcmVtb3ZlIGFjYyBpID0gUiBpIDo6IGFjY1xuICAgIGFuZCBhY2MgPSBbXSBpblxuICAgIGxpc3RfcmV2IChmb2xkX2RpZmYgfmVxIH5hY2MgfmFkZCB+cmVtb3ZlIHggeSlcblxuZW5kXG5cbm1vZHVsZSBSTGlzdCA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKERhdGFMaXN0KVxuICBtb2R1bGUgRCA9IERhdGFMaXN0XG4gIHR5cGUgJ2EgcCA9ICdhIEQucCA9XG4gICAgfCBJIG9mIGludCAqICdhXG4gICAgfCBSIG9mIGludFxuICAgIHwgVSBvZiBpbnQgKiAnYVxuICAgIHwgWCBvZiBpbnQgKiBpbnRcblxuICBsZXQgY29ucyB4IHMgPSBwYXRjaCBzIFtELkkgKDAseCldXG4gIGxldCBzbm9jIHggcyA9IHBhdGNoIHMgW0QuSSAoLTEseCldXG4gIGxldCBpbnNlcnQgeCBpIHMgPSBwYXRjaCBzIFtELkkgKGkseCldXG4gIGxldCB1cGRhdGUgeCBpIHMgPSBwYXRjaCBzIFtELlUgKGkseCldXG4gIGxldCBtb3ZlIGkgaiBzID0gcGF0Y2ggcyBbRC5YIChpLGopXVxuICBsZXQgcmVtb3ZlIGkgcyA9IHBhdGNoIHMgW0QuUiBpXVxuXG4gIGxldCBpbmRleCA/KGVxID0gKD0pKSBsIHggPVxuICAgIGxldCByZWMgZiBuID0gZnVuY3Rpb25cbiAgICAgIHwgaGQgOjogXyB3aGVuIGVxIGhkIHggLT4gblxuICAgICAgfCBfIDo6IHRsIC0+IGYgKG4gKyAxKSB0bFxuICAgICAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICBpblxuICAgIGYgMCBsXG5cbiAgbGV0IHVwZGF0ZV9lcSA/ZXEgKGRhdGEsIGhhbmRsZSkgeCB5ID1cbiAgICBsZXQgaSA9IGluZGV4ID9lcSAodmFsdWUgZGF0YSkgeCBpblxuICAgIHVwZGF0ZSB5IGkgaGFuZGxlXG5cbiAgbGV0IHJlbW92ZV9sYXN0IChkYXRhLCBoYW5kbGUpID1cbiAgICByZW1vdmUgKExpc3QubGVuZ3RoICh2YWx1ZSBkYXRhKSAtIDEpIGhhbmRsZVxuXG4gIGxldCByZW1vdmVfZXEgP2VxIChkYXRhLCBoYW5kbGUpIHggPVxuICAgIGxldCBpID0gaW5kZXggP2VxICh2YWx1ZSBkYXRhKSB4IGluXG4gICAgcmVtb3ZlIGkgaGFuZGxlXG5cbiAgbGV0IHNpbmdsZXRvbiB4ID0gY29uc3QgW3hdXG5cbiAgbGV0IHNpbmdsZXRvbl9zIHMgPVxuICAgIGxldCBmaXJzdCA9IHJlZiB0cnVlIGluXG4gICAgbGV0IGUsc2VuZCA9IFJlYWN0LkUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlc3VsdCA9IGZyb21fZXZlbnQgW10gZSBpblxuICAgIGxldCBfID0gUmVhY3QuUy5tYXAgKGZ1biB4IC0+XG4gICAgICAgIGlmICFmaXJzdFxuICAgICAgICB0aGVuIGJlZ2luXG4gICAgICAgICAgZmlyc3Q6PWZhbHNlO1xuICAgICAgICAgIHNlbmQgKFBhdGNoIFtJKDAseCldKVxuICAgICAgICBlbmRcbiAgICAgICAgZWxzZSBzZW5kIChQYXRjaCBbVSgwLHgpXSkpIHMgaW5cbiAgICByZXN1bHRcblxuICBsZXQgY29uY2F0IDogJ2EgdCAtPiAnYSB0IC0+ICdhIHQgPSBmdW4geCB5IC0+XG4gICAgbGV0IHYxID0gdmFsdWUgeFxuICAgIGFuZCB2MiA9IHZhbHVlIHkgaW5cbiAgICBsZXQgc2l6ZTEgPSByZWYgMFxuICAgIGFuZCBzaXplMiA9IHJlZiAwIGluXG4gICAgbGV0IHNpemVfd2l0aF9wYXRjaCBzaXpleCA6ICdhIEQucCAtPiB1bml0ID0gZnVuY3Rpb25cbiAgICAgIHwgKEQuSSBfKSAtPiBpbmNyIHNpemV4XG4gICAgICB8IChELlIgXykgLT4gZGVjciBzaXpleFxuICAgICAgfCAoRC5YIF8gfCBELlUgXykgLT4gKCkgaW5cbiAgICBsZXQgc2l6ZV93aXRoX3NldCBzaXpleCBsID0gc2l6ZXg6PUxpc3QubGVuZ3RoIGwgaW5cblxuICAgIHNpemVfd2l0aF9zZXQgc2l6ZTEgdjE7XG4gICAgc2l6ZV93aXRoX3NldCBzaXplMiB2MjtcblxuICAgIGxldCB1cGRhdGVfcGF0Y2gxID0gTGlzdC5tYXAgKGZ1biBwIC0+XG4gICAgICAgIGxldCBtID0gbWF0Y2ggcCB3aXRoXG4gICAgICAgICAgfCBELkkgKHBvcyx4KSAtPlxuICAgICAgICAgICAgbGV0IGkgPSBpZiBwb3MgPCAwIHRoZW4gcG9zIC0gIXNpemUyIGVsc2UgcG9zIGluXG4gICAgICAgICAgICBELkkgKGksIHgpXG4gICAgICAgICAgfCBELlIgcG9zICAgICAtPiBELlIgIChpZiBwb3MgPCAwIHRoZW4gcG9zIC0gIXNpemUyIGVsc2UgcG9zKVxuICAgICAgICAgIHwgRC5VIChwb3MseCkgLT4gRC5VICgoaWYgcG9zIDwgMCB0aGVuIHBvcyAtICFzaXplMiBlbHNlIHBvcyksIHgpXG4gICAgICAgICAgfCBELlggKGksaikgLT4gICBELlggKChpZiBpIDwgMCB0aGVuIGkgLSAhc2l6ZTIgZWxzZSBpKSxqKVxuICAgICAgICBpblxuICAgICAgICBzaXplX3dpdGhfcGF0Y2ggc2l6ZTEgbTtcbiAgICAgICAgbSkgaW5cbiAgICBsZXQgdXBkYXRlX3BhdGNoMiA9IExpc3QubWFwIChmdW4gcCAtPlxuICAgICAgICBsZXQgbSA9IG1hdGNoIHAgd2l0aFxuICAgICAgICAgIHwgRC5JIChwb3MseCkgLT4gRC5JICgoaWYgcG9zIDwgMCB0aGVuIHBvcyBlbHNlICFzaXplMSArIHBvcyksIHgpXG4gICAgICAgICAgfCBELlIgcG9zICAgICAtPiBELlIgIChpZiBwb3MgPCAwIHRoZW4gcG9zIGVsc2UgIXNpemUxICsgcG9zKVxuICAgICAgICAgIHwgRC5VIChwb3MseCkgLT4gRC5VICgoaWYgcG9zIDwgMCB0aGVuIHBvcyBlbHNlICFzaXplMSArIHBvcyksIHgpXG4gICAgICAgICAgfCBELlggKGksaikgLT4gICBELlggKChpZiBpIDwgMCB0aGVuIGkgZWxzZSAhc2l6ZTEgKyBpKSxqKVxuICAgICAgICBpblxuICAgICAgICBzaXplX3dpdGhfcGF0Y2ggc2l6ZTIgbTtcbiAgICAgICAgbSkgaW5cbiAgICBsZXQgdHVwbGVfZXYgPVxuICAgICAgUmVhY3QuRS5tZXJnZSAoZnVuIGFjYyB4IC0+XG4gICAgICAgICAgbWF0Y2ggYWNjLHggd2l0aFxuICAgICAgICAgIHwgKE5vbmUscDIpLGBFMSB4IC0+IFNvbWUgeCxwMlxuICAgICAgICAgIHwgKHAxLE5vbmUpLGBFMiB4IC0+IHAxLCBTb21lIHhcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgICAoTm9uZSxOb25lKVxuICAgICAgICBbUmVhY3QuRS5tYXAgKGZ1biBlIC0+IGBFMSBlKSAoZXZlbnQgeCk7XG4gICAgICAgICBSZWFjdC5FLm1hcCAoZnVuIGUgLT4gYEUyIGUpIChldmVudCB5KV0gaW5cbiAgICBsZXQgbWVyZ2VkX2V2ID0gUmVhY3QuRS5tYXAgKGZ1biBwIC0+XG4gICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICB8IFNvbWUgKFNldCBwMSksIFNvbWUgKFNldCBwMikgLT5cbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUxIHAxO1xuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTIgcDI7XG4gICAgICAgICAgU2V0IChwMSBAIHAyKVxuICAgICAgICB8IFNvbWUgKFNldCBwMSksIE5vbmUgLT5cbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUxIHAxO1xuICAgICAgICAgIFNldCAocDEgQCB2YWx1ZSB5KVxuICAgICAgICB8IE5vbmUsIFNvbWUgKFNldCBwMikgLT5cbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUyIHAyO1xuICAgICAgICAgIFNldCAodmFsdWUgeCBAIHAyIClcbiAgICAgICAgfCBTb21lIChQYXRjaCBwMSksIFNvbWUgKFBhdGNoIHAyKSAtPlxuICAgICAgICAgIGxldCBwMSA9IHVwZGF0ZV9wYXRjaDEgcDEgaW5cbiAgICAgICAgICBsZXQgcDIgPSB1cGRhdGVfcGF0Y2gyIHAyIGluXG4gICAgICAgICAgUGF0Y2ggKHAxIEAgcDIpXG4gICAgICAgIHwgU29tZSAoUGF0Y2ggcDEpLCBOb25lIC0+IFBhdGNoICh1cGRhdGVfcGF0Y2gxIHAxKVxuICAgICAgICB8IE5vbmUsIFNvbWUgKFBhdGNoIHAyKSAtPiBQYXRjaCAodXBkYXRlX3BhdGNoMiBwMilcbiAgICAgICAgfCBTb21lIChQYXRjaCBfKSwgU29tZSAoU2V0IHMyKSAtPlxuICAgICAgICAgIGxldCBzMSA9IHZhbHVlIHggaW5cbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUxIHMxO1xuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTIgczI7XG4gICAgICAgICAgU2V0KHMxIEAgczIpXG4gICAgICAgIHwgU29tZSAoU2V0IHMxKSwgU29tZSAoUGF0Y2ggXykgLT5cbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUxIHMxO1xuICAgICAgICAgIGxldCBzMiA9IHZhbHVlIHkgaW5cbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUyIHMyO1xuICAgICAgICAgIFNldChzMSBAIHMyKVxuICAgICAgICB8IE5vbmUsTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICkgdHVwbGVfZXYgaW5cbiAgICBmcm9tX2V2ZW50ICh2MSBAIHYyKSBtZXJnZWRfZXZcblxuICBsZXQgaW52ZXJzZSA6ICdhIC4gJ2EgcCAtPiAnYSBwID0gZnVuY3Rpb25cbiAgICB8IEkgKGkseCkgLT4gSSgtaS0xLCB4KVxuICAgIHwgVSAoaSx4KSAtPiBVKC1pLTEsIHgpXG4gICAgfCBSIGkgLT4gUiAoLWktMSlcbiAgICB8IFggKGksaikgLT4gWCAoLWktMSwtailcblxuICBsZXQgcmV2IHQgPVxuICAgIGxldCBlID0gUmVhY3QuRS5tYXAgKGZ1bmN0aW9uXG4gICAgICAgIHwgU2V0IGwgLT4gU2V0IChMaXN0LnJldiBsKVxuICAgICAgICB8IFBhdGNoIHAgLT4gUGF0Y2ggKExpc3QubWFwIGludmVyc2UgcCkpICAoZXZlbnQgdClcbiAgICBpblxuICAgIGZyb21fZXZlbnQgKExpc3QucmV2ICh2YWx1ZSB0KSkgZVxuXG4gIGxldCBmaWx0ZXIgcHJlZCBsID1cbiAgICBsZXQgbW9kdWxlIEludE1hcCA9IE1hcC5NYWtlKEludCkgaW5cblxuICAgIGxldCBpbmRleCA9IHJlZiBJbnRNYXAuZW1wdHkgaW5cbiAgICBsZXQgc2l6ZSA9IHJlZiAwIGluXG5cbiAgICBsZXQgZmlsdGVyX2xpc3QgbCA9XG4gICAgICBsZXQgcmVjIGF1eCAobDogJ2EgbGlzdCkgcmVzIHRoZWlyX2kgbXlfaSA9IG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IHJlc1xuICAgICAgICB8IHg6OnhzIC0+XG4gICAgICAgICAgIGlmIHByZWQgeFxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgdGhlaXJfaSAobXlfaSArIDEpICFpbmRleDtcbiAgICAgICAgICAgICAgIGF1eCB4cyAoeDo6cmVzKSAodGhlaXJfaSArIDEpIChteV9pICsgMSlcbiAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICBhdXggeHMgcmVzICh0aGVpcl9pICsgMSkgbXlfaVxuICAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNpemUgOj0gTGlzdC5sZW5ndGggbDtcbiAgICAgIGluZGV4IDo9IEludE1hcC5lbXB0eTtcbiAgICAgIExpc3QucmV2IChhdXggbCBbXSAwICgtMSkpXG4gICAgaW5cblxuICAgIGxldCBub3JtYWxpc2UgaSA9IGlmIGkgPCAwIHRoZW4gIXNpemUgKyAxICsgaSBlbHNlIGkgaW5cblxuICAgIGxldCB1cGRhdGVfaW5kZXhfaW5zZXJ0IGluc2VydF9wb3NfZnVsbF9saXN0IHZpc2libGUgPVxuICAgICAgbGV0IGluc2VydF9wb3NfZnVsbF9saXN0ID0gbm9ybWFsaXNlIGluc2VydF9wb3NfZnVsbF9saXN0IGluXG4gICAgICBsZXQgbGVmdF9hbG9uZSwgZGlzcGxhY2VkLCB1cGRhdGFibGVzID0gSW50TWFwLnNwbGl0IGluc2VydF9wb3NfZnVsbF9saXN0ICFpbmRleCBpblxuICAgICAgbGV0IHVwZGF0YWJsZXMgPSBtYXRjaCBkaXNwbGFjZWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdXBkYXRhYmxlc1xuICAgICAgICB8IFNvbWUgZGlzcGxhY2VkX2luX2ZpbHRlcmVkIC0+XG4gICAgICAgICAgIEludE1hcC5hZGQgaW5zZXJ0X3Bvc19mdWxsX2xpc3QgZGlzcGxhY2VkX2luX2ZpbHRlcmVkIHVwZGF0YWJsZXNcbiAgICAgIGluXG4gICAgICBsZXQgdXBkYXRlX2ogal9mdWxsX2xpc3Qgal9maWx0ZXJlZF9saXN0ID1cbiAgICAgICAgbGV0IG5ld19qX2ZpbHRlcmVkID0gaWYgdmlzaWJsZSB0aGVuIGpfZmlsdGVyZWRfbGlzdCArIDEgZWxzZSBqX2ZpbHRlcmVkX2xpc3QgaW5cbiAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCAoal9mdWxsX2xpc3QgKyAxKSBuZXdfal9maWx0ZXJlZCAhaW5kZXhcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBJbnRNYXAuaXRlciB1cGRhdGVfaiB1cGRhdGFibGVzIGluXG4gICAgICBsZXQgaW5zZXJ0X3Bvc19maWx0ZXJlZCA9IGlmIEludE1hcC5pc19lbXB0eSBsZWZ0X2Fsb25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChzbmQgKEludE1hcC5tYXhfYmluZGluZyBsZWZ0X2Fsb25lKSkgKyAxXG4gICAgICBpblxuICAgICAgaWYgdmlzaWJsZSB0aGVuIGluZGV4IDo9IEludE1hcC5hZGQgaW5zZXJ0X3Bvc19mdWxsX2xpc3QgaW5zZXJ0X3Bvc19maWx0ZXJlZCAhaW5kZXg7XG4gICAgICBpbmNyIHNpemU7XG4gICAgICBpbnNlcnRfcG9zX2ZpbHRlcmVkXG4gICAgaW5cblxuICAgIGxldCB1cGRhdGVfaW5kZXhfcmVtb3ZlIHJlbW92ZV9wb3NfZnVsbF9saXN0ID1cbiAgICAgIGxldCB3YXNfdmlzaWJsZSA9IEludE1hcC5tZW0gcmVtb3ZlX3Bvc19mdWxsX2xpc3QgIWluZGV4IGluXG4gICAgICBsZXQgXyxfLHVwZGF0YWJsZXMgPSBJbnRNYXAuc3BsaXQgcmVtb3ZlX3Bvc19mdWxsX2xpc3QgIWluZGV4IGluXG4gICAgICBsZXQgdXBkYXRlX2ogal9mdWxsX2xpc3Qgal9maWx0ZXJlZF9saXN0ID1cbiAgICAgICAgbGV0IG5ld19qID0gaWYgd2FzX3Zpc2libGUgdGhlbiBqX2ZpbHRlcmVkX2xpc3QgZWxzZSBqX2ZpbHRlcmVkX2xpc3QgLSAxIGluXG4gICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgKGpfZnVsbF9saXN0IC0gMSkgbmV3X2ogIWluZGV4XG4gICAgICBpblxuICAgICAgaWYgbm90IChJbnRNYXAuaXNfZW1wdHkgIWluZGV4KVxuICAgICAgdGhlblxuICAgICAgICBsZXQgbGFzdF9pLCBfID0gSW50TWFwLm1heF9iaW5kaW5nICFpbmRleCBpblxuICAgICAgICBpbmRleCA6PSBJbnRNYXAucmVtb3ZlIGxhc3RfaSAhaW5kZXhcbiAgICAgIGVsc2UgKCk7XG4gICAgICBkZWNyIHNpemU7XG4gICAgICBJbnRNYXAuaXRlciB1cGRhdGVfaiB1cGRhdGFibGVzXG4gICAgaW5cblxuICAgIGxldCB1cGRhdGVfaW5kZXhfdXBkYXRlX2RlbGV0ZSB1cGRhdGVfcG9zX2Z1bGxfbGlzdCA9XG4gICAgICBsZXQgXywgXywgdXBkYXRhYmxlcyA9IEludE1hcC5zcGxpdCB1cGRhdGVfcG9zX2Z1bGxfbGlzdCAhaW5kZXggaW5cbiAgICAgIGxldCB1cGRhdGVfaiBqX2Z1bGxfbGlzdCBqX2ZpbHRlcmVkX2xpc3QgPVxuICAgICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIGpfZnVsbF9saXN0IChqX2ZpbHRlcmVkX2xpc3QgLSAxKSAhaW5kZXhcbiAgICAgIGluXG4gICAgICBpbmRleCA6PSBJbnRNYXAucmVtb3ZlIHVwZGF0ZV9wb3NfZnVsbF9saXN0ICFpbmRleDtcbiAgICAgIEludE1hcC5pdGVyIHVwZGF0ZV9qIHVwZGF0YWJsZXNcbiAgICBpblxuXG4gICAgbGV0IHVwZGF0ZV9pbmRleF91cGRhdGVfaW5zZXJ0IHVwZGF0ZV9wb3NfZnVsbF9saXN0ID1cbiAgICAgIGxldCBsZWZ0X2Fsb25lLCBub25lLCB1cGRhdGFibGVzID0gSW50TWFwLnNwbGl0IHVwZGF0ZV9wb3NfZnVsbF9saXN0ICFpbmRleCBpblxuICAgICAgYXNzZXJ0IChub25lID0gTm9uZSk7XG4gICAgICBsZXQgdXBkYXRlX2ogal9mdWxsX2xpc3Qgal9maWx0ZXJlZF9saXN0ID1cbiAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCBqX2Z1bGxfbGlzdCAoal9maWx0ZXJlZF9saXN0ICsgMSkgIWluZGV4XG4gICAgICBpblxuICAgICAgbGV0IG5ld19wb3NfZmlsdGVyZWRfbGlzdCA9XG4gICAgICAgIGxldCBwcmV2aW91c19wb3NfZmlsdGVyZWQgPSB0cnkgKHNuZCAoSW50TWFwLm1heF9iaW5kaW5nIGxlZnRfYWxvbmUpKSB3aXRoIE5vdF9mb3VuZCAtPiAoLTEpIGluXG4gICAgICAgIHByZXZpb3VzX3Bvc19maWx0ZXJlZCArIDFcbiAgICAgIGluXG4gICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIHVwZGF0ZV9wb3NfZnVsbF9saXN0IG5ld19wb3NfZmlsdGVyZWRfbGlzdCAhaW5kZXg7XG4gICAgICBJbnRNYXAuaXRlciB1cGRhdGVfaiB1cGRhdGFibGVzO1xuICAgICAgbmV3X3Bvc19maWx0ZXJlZF9saXN0XG4gICAgaW5cblxuICAgIGxldCB1cGRhdGVfaW5kZXhfbW92ZSBmcm9tX2Z1bGxfbGlzdCB0b19mdWxsX2xpc3QgdG9fZmlsdGVyZWQgPVxuICAgICAgbGV0IHdhc192aXNpYmxlID0gbWF0Y2ggdG9fZmlsdGVyZWQgd2l0aCB8IFNvbWUgXyAtPiB0cnVlIHwgTm9uZSAtPiBmYWxzZSBpblxuICAgICAgbGV0IGZvcndhcmQgPSBmcm9tX2Z1bGxfbGlzdCA8IHRvX2Z1bGxfbGlzdCBpblxuICAgICAgaWYgZm9yd2FyZCB0aGVuXG4gICAgICAgIGZvciBpX2Z1bGwgPSBmcm9tX2Z1bGxfbGlzdCArIDEgdG8gdG9fZnVsbF9saXN0IGRvXG4gICAgICAgICAgbGV0IGRlbHRhID0gaWYgd2FzX3Zpc2libGUgdGhlbiAoLTEpIGVsc2UgMCBpblxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGlfZmlsdGVyZWQgPSBJbnRNYXAuZmluZCBpX2Z1bGwgIWluZGV4IGluXG4gICAgICAgICAgICBsZXQgbmV3X3ZhbCA9IGlfZmlsdGVyZWQgKyBkZWx0YSBpblxuICAgICAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCAoaV9mdWxsIC0gMSkgbmV3X3ZhbCAhaW5kZXhcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb3RfZm91bmQgLT4gKClcbiAgICAgICAgZG9uZVxuICAgICAgZWxzZVxuICAgICAgICBmb3IgaV9mdWxsID0gZnJvbV9mdWxsX2xpc3QgLSAxIGRvd250byB0b19mdWxsX2xpc3QgZG9cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBkZWx0YSA9IGlmIHdhc192aXNpYmxlIHRoZW4gMSBlbHNlIDAgaW5cbiAgICAgICAgICAgIGxldCBpX2ZpbHRlcmVkID0gSW50TWFwLmZpbmQgaV9mdWxsICFpbmRleCBpblxuICAgICAgICAgICAgbGV0IG5ld192YWwgPSBpX2ZpbHRlcmVkICsgZGVsdGEgaW5cbiAgICAgICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgKGlfZnVsbCArIDEpIG5ld192YWwgIWluZGV4XG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm90X2ZvdW5kIC0+ICgpXG4gICAgICAgIGRvbmU7XG4gICAgICBtYXRjaCB0b19maWx0ZXJlZCB3aXRoXG4gICAgICB8IFNvbWUgdG9fZmlsdGVyZWQgLT5cbiAgICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgdG9fZnVsbF9saXN0IHRvX2ZpbHRlcmVkICFpbmRleFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICBpbmRleCA6PSBJbnRNYXAucmVtb3ZlIHRvX2Z1bGxfbGlzdCAhaW5kZXhcbiAgICBpblxuXG4gICAgbGV0IGNvbnZlcnRfcCA9IGZ1bmN0aW9uXG4gICAgICB8IEkgKGksIHgpIC0+XG4gICAgICAgICBpZiBwcmVkIHhcbiAgICAgICAgIHRoZW5cbiAgICAgICAgICAgbGV0IG15X2kgPSB1cGRhdGVfaW5kZXhfaW5zZXJ0IGkgdHJ1ZSBpblxuICAgICAgICAgICBbSSAobXlfaSwgeCldXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgaWdub3JlICh1cGRhdGVfaW5kZXhfaW5zZXJ0IGkgZmFsc2UpO1xuICAgICAgICAgICAgIFtdXG4gICAgICAgICAgIGVuZFxuICAgICAgfCBSIGkgLT5cbiAgICAgICAgIGxldCBpID0gbm9ybWFsaXNlIGkgaW5cbiAgICAgICAgIGxldCByZXQgPSB0cnkgbGV0IGogPSBJbnRNYXAuZmluZCBpICFpbmRleCBpbiBbUiBqXSB3aXRoIHwgTm90X2ZvdW5kIC0+IFtdIGluXG4gICAgICAgICBsZXQgKCkgPSB1cGRhdGVfaW5kZXhfcmVtb3ZlIGkgaW5cbiAgICAgICAgIHJldFxuICAgICAgfCBVIChpLCB4KSAtPlxuICAgICAgICAgbGV0IGkgPSBub3JtYWxpc2UgaSBpblxuICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgbGV0IG9sZF9qID0gSW50TWFwLmZpbmQgaSAhaW5kZXggaW5cbiAgICAgICAgICAgICBpZiBwcmVkIHhcbiAgICAgICAgICAgICB0aGVuIFtVIChvbGRfaiwgeCldXG4gICAgICAgICAgICAgZWxzZSAodXBkYXRlX2luZGV4X3VwZGF0ZV9kZWxldGUgaTsgW1Igb2xkX2pdKVxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgIHwgTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAgIGlmIHByZWQgeFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgbGV0IG5ld19qID0gdXBkYXRlX2luZGV4X3VwZGF0ZV9pbnNlcnQgaSBpblxuICAgICAgICAgICAgICAgIFtJIChuZXdfaiwgeCldXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgZW5kXG4gICAgICB8IFggKG9yaWdpbl9mdWxsLCBvZmZzZXRfZnVsbCkgLT5cbiAgICAgICAgIGxldCBvcmlnaW5fZnVsbCA9IG5vcm1hbGlzZSBvcmlnaW5fZnVsbCBpblxuICAgICAgICAgbGV0IGRlc3RfZnVsbCA9IG9yaWdpbl9mdWxsICsgb2Zmc2V0X2Z1bGwgaW5cbiAgICAgICAgIHRyeVxuICAgICAgICAgICBsZXQgb3JpZ2luX2ZpbHRlcmVkID0gSW50TWFwLmZpbmQgb3JpZ2luX2Z1bGwgIWluZGV4IGluXG4gICAgICAgICAgIGxldCBkZXN0X2ZpbHRlcmVkID1cbiAgICAgICAgICAgICB0cnkgSW50TWFwLmZpbmQgZGVzdF9mdWxsICFpbmRleFxuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgICAgIGxldCBzbWFsbF9vbmVzLCBfLCBfID0gSW50TWFwLnNwbGl0IG9yaWdpbl9mdWxsICFpbmRleCBpblxuICAgICAgICAgICAgICAgIGlmIEludE1hcC5pc19lbXB0eSBzbWFsbF9vbmVzXG4gICAgICAgICAgICAgICAgdGhlbiAwXG4gICAgICAgICAgICAgICAgZWxzZSBzbmQgKEludE1hcC5tYXhfYmluZGluZyBzbWFsbF9vbmVzKSArIDFcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgdXBkYXRlX2luZGV4X21vdmUgb3JpZ2luX2Z1bGwgZGVzdF9mdWxsIChTb21lIGRlc3RfZmlsdGVyZWQpO1xuICAgICAgICAgICBpZiBkZXN0X2ZpbHRlcmVkICE9IG9yaWdpbl9maWx0ZXJlZFxuICAgICAgICAgICB0aGVuIFtYIChvcmlnaW5fZmlsdGVyZWQsIGRlc3RfZmlsdGVyZWQgLSBvcmlnaW5fZmlsdGVyZWQpXVxuICAgICAgICAgICBlbHNlIFtdXG4gICAgICAgICB3aXRoXG4gICAgICAgICB8IE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgKCogbW92aW5nIGFuIGVsZW1lbnQgdGhhdCB3YXMgZmlsdGVyZWQgb3V0ICopXG4gICAgICAgICAgICB1cGRhdGVfaW5kZXhfbW92ZSBvcmlnaW5fZnVsbCBkZXN0X2Z1bGwgTm9uZTtcbiAgICAgICAgICAgIFtdXG4gICAgaW5cblxuICAgIGxldCBmaWx0ZXJfZSA9IGZ1bmN0aW9uXG4gICAgICB8IFNldCBsIC0+IFNldCAoZmlsdGVyX2xpc3QgbClcbiAgICAgIHwgUGF0Y2ggcCAtPlxuICAgICAgICAgUGF0Y2ggKExpc3QuY29uY2F0IChMaXN0Lm1hcCBjb252ZXJ0X3AgcCkpXG4gICAgaW5cbiAgICBsZXQgZSA9IFJlYWN0LkUubWFwIGZpbHRlcl9lIChldmVudCBsKSBpblxuICAgIGZyb21fZXZlbnQgKGZpbHRlcl9saXN0ICh2YWx1ZSBsKSkgZVxuXG4gIG1vZHVsZSBJbnRTZXQgPSBTZXQuTWFrZSAoSW50KVxuXG4gIGxldCBmb3JfYWxsIGZuIGRhdGEgPVxuICAgIGxldCBtYXliZV91cGRhdGUgYWNjIGkgdiA9IGlmIGZuIHYgdGhlbiBhY2MgZWxzZSBJbnRTZXQuYWRkIGkgYWNjIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbGV0IHJlYyBmb2xkIGkgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgfCB2IDo6IHRsIC0+IGZvbGQgKGkgKyAxKSAobWF5YmVfdXBkYXRlIGFjYyBpIHYpIHRsXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICBpblxuICAgICAgZm9sZCAwIEludFNldC5lbXB0eVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9pZHhfYWZ0ZXIgaSBmIGFjYyA9XG4gICAgICBJbnRTZXQubWFwIChmdW4gaScgLT4gaWYgaScgPj0gaSB0aGVuIGYgaScgMSBlbHNlIGknKSBhY2NcbiAgICBpblxuICAgIGxldCBmID0gZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXQgeCAtPiBpbml0IHhcbiAgICAgIHwgUGF0Y2ggdXBkYXRlcyAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBYIChpLCBpJykgLT5cbiAgICAgICAgICAgICAgIGlmIEludFNldC5tZW0gaSBhY2MgPSBJbnRTZXQubWVtIGknIGFjY1xuICAgICAgICAgICAgICAgdGhlbiBhY2NcbiAgICAgICAgICAgICAgIGVsc2UgaWYgSW50U2V0Lm1lbSBpIGFjY1xuICAgICAgICAgICAgICAgdGhlbiBJbnRTZXQuYWRkIGknIChJbnRTZXQucmVtb3ZlIGkgYWNjKVxuICAgICAgICAgICAgICAgZWxzZSBJbnRTZXQuYWRkIGkgKEludFNldC5yZW1vdmUgaScgYWNjKVxuICAgICAgICAgICAgIHwgUiBpIC0+XG4gICAgICAgICAgICAgICB1cGRhdGVfaWR4X2FmdGVyIGkgKC0pIChJbnRTZXQucmVtb3ZlIGkgYWNjKVxuICAgICAgICAgICAgIHwgSSAoaSwgdikgLT5cbiAgICAgICAgICAgICAgIGxldCBhY2MgPSB1cGRhdGVfaWR4X2FmdGVyIGkgKCspIGFjYyBpblxuICAgICAgICAgICAgICAgbWF5YmVfdXBkYXRlIGFjYyBpIHZcbiAgICAgICAgICAgICB8IFUgKGksIHYpIC0+XG4gICAgICAgICAgICAgICBtYXliZV91cGRhdGUgKEludFNldC5yZW1vdmUgaSBhY2MpIGkgdilcbiAgICAgICAgICBhY2NcbiAgICAgICAgICB1cGRhdGVzXG4gICAgaW5cbiAgICBSZWFjdC5TLmZvbGQgZiAoaW5pdCAodmFsdWUgZGF0YSkpIChldmVudCBkYXRhKVxuICAgIHw+IFJlYWN0LlMubWFwIEludFNldC5pc19lbXB0eVxuXG5lbmRcblxubW9kdWxlIFJNYXAoTSA6IE1hcC5TKSA9IHN0cnVjdFxuXG4gIG1vZHVsZSBEYXRhID0gc3RydWN0XG5cbiAgICB0eXBlICdhIGRhdGEgPSAnYSBNLnRcblxuICAgIHR5cGUgJ2EgcCA9IFtgQWRkIG9mIChNLmtleSAqICdhKSB8IGBEZWwgb2YgTS5rZXldXG5cbiAgICB0eXBlICdhIHBhdGNoID0gJ2EgcCBsaXN0XG5cbiAgICBsZXQgbWVyZ2VfcCBwIHMgPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IGBBZGQgKGssYSkgLT4gTS5hZGQgayBhIHNcbiAgICAgIHwgYERlbCBrIC0+IE0ucmVtb3ZlIGsgc1xuXG4gICAgbGV0IG1lcmdlIHAgYWNjID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgcCAtPiBtZXJnZV9wIHAgYWNjKSBhY2MgcFxuXG4gICAgbGV0IG1hcF9wIGYgPSBmdW5jdGlvblxuICAgICAgfCBgQWRkIChrLGEpIC0+IGBBZGQgKGssZiBhKVxuICAgICAgfCBgRGVsIGsgLT4gYERlbCBrXG5cbiAgICBsZXQgbWFwX3BhdGNoIGYgPSBMaXN0Lm1hcCAobWFwX3AgZilcblxuICAgIGxldCBtYXBfZGF0YSBmIGQgPSBNLm1hcCBmIGRcblxuICAgIGxldCBlbXB0eSA9IE0uZW1wdHlcblxuICAgIGxldCBlcXVhbCBmID0gTS5lcXVhbCBmXG5cbiAgICBsZXQgZGlmZiB+ZXEgeCB5ID1cbiAgICAgIGxldCBtID1cbiAgICAgICAgbGV0IGcgX2tleSB2IHcgPVxuICAgICAgICAgIG1hdGNoIHYsIHcgd2l0aFxuICAgICAgICAgIHwgU29tZSB2LCBTb21lIHcgd2hlbiBlcSB2IHcgLT5cbiAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICB8IFNvbWUgXywgU29tZSB3IC0+XG4gICAgICAgICAgICBTb21lIChgVSB3KVxuICAgICAgICAgIHwgU29tZSBfLCBOb25lIC0+XG4gICAgICAgICAgICBTb21lIGBEXG4gICAgICAgICAgfCBOb25lLCBTb21lIHYgLT5cbiAgICAgICAgICAgIFNvbWUgKGBBIHYpXG4gICAgICAgICAgfCBOb25lLCBOb25lIC0+XG4gICAgICAgICAgICBOb25lXG4gICAgICAgIGluXG4gICAgICAgIE0ubWVyZ2UgZyB4IHlcbiAgICAgIGFuZCBnIGtleSB4IGFjYyA9XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IGBVIHYgLT5cbiAgICAgICAgICBgRGVsIGtleSA6OiBgQWRkIChrZXksIHYpIDo6IGFjY1xuICAgICAgICB8IGBEIC0+XG4gICAgICAgICAgYERlbCBrZXkgOjogYWNjXG4gICAgICAgIHwgYEEgdiAtPlxuICAgICAgICAgIGBBZGQgKGtleSwgdikgOjogYWNjXG4gICAgICBhbmQgYWNjID0gW10gaW5cbiAgICAgIExpc3QucmV2IChNLmZvbGQgZyBtIGFjYylcblxuICBlbmRcblxuICBpbmNsdWRlIE1ha2UoRGF0YSlcblxuICBsZXQgZmlsdGVyIHByZWQgbSA9XG5cbiAgICBsZXQgY29udmVydF9wID0gZnVuY3Rpb25cbiAgICAgIHwgYEFkZCAoayx2KSAtPlxuICAgICAgICAgaWYgcHJlZCBrIHZcbiAgICAgICAgIHRoZW4gW2BBZGQgKGssdildXG4gICAgICAgICBlbHNlIFtdXG4gICAgICB8IGBEZWwgayAtPiBbYERlbCBrXVxuICAgIGluXG5cbiAgICBsZXQgZmlsdGVyX2UgPSBmdW5jdGlvblxuICAgICAgfCBTZXQgbSAtPiBTZXQgKE0uZmlsdGVyIHByZWQgbSlcbiAgICAgIHwgUGF0Y2ggcCAtPiBQYXRjaCAoTGlzdC5jb25jYXQgKExpc3QubWFwIGNvbnZlcnRfcCBwKSlcbiAgICBpblxuXG4gICAgbGV0IGUgPSBSZWFjdC5FLm1hcCBmaWx0ZXJfZSAoZXZlbnQgbSkgaW5cbiAgICBmcm9tX2V2ZW50IChNLmZpbHRlciBwcmVkICh2YWx1ZSBtKSkgZVxuZW5kXG4iLCIoKiBnZW5lcmF0ZWQgYnkgZHVuZSAqKVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF90eXhtbC5JbXBvcnQgKilcbm1vZHVsZSBJbXBvcnQgPSBKc19vZl9vY2FtbF90eXhtbF9fSW1wb3J0XG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX3R5eG1sLlR5eG1sX2Nhc3QgKilcbm1vZHVsZSBUeXhtbF9jYXN0ID0gSnNfb2Zfb2NhbWxfdHl4bWxfX1R5eG1sX2Nhc3RcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfdHl4bWwuVHl4bWxfY2FzdF9zaWdzICopXG5tb2R1bGUgVHl4bWxfY2FzdF9zaWdzID0gSnNfb2Zfb2NhbWxfdHl4bWxfX1R5eG1sX2Nhc3Rfc2lnc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF90eXhtbC5UeXhtbF9qcyAqKVxubW9kdWxlIFR5eG1sX2pzID0gSnNfb2Zfb2NhbWxfdHl4bWxfX1R5eG1sX2pzXG5cbm1vZHVsZSBKc19vZl9vY2FtbF90eXhtbF9fID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcInRoaXMgbW9kdWxlIGlzIHNoYWRvd2VkXCJdXG4iLCIoKiBKc19vZl9vY2FtbFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuXG4gIGV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbiAgZXh0ZXJuYWwgZXF1YWwgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZW5kXG5cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGludCkgeSA9IHggPCB5XG5cbiAgbGV0ICggPD0gKSAoeCA6IGludCkgeSA9IHggPD0geVxuXG4gIGxldCAoIDw+ICkgKHggOiBpbnQpIHkgPSB4IDw+IHlcblxuICBsZXQgKCA9ICkgKHggOiBpbnQpIHkgPSB4ID0geVxuXG4gIGxldCAoID4gKSAoeCA6IGludCkgeSA9IHggPiB5XG5cbiAgbGV0ICggPj0gKSAoeCA6IGludCkgeSA9IHggPj0geVxuXG4gIGxldCBjb21wYXJlICh4IDogaW50KSB5ID0gY29tcGFyZSB4IHlcblxuICBsZXQgZXF1YWwgKHggOiBpbnQpIHkgPSB4ID0geVxuXG4gIGxldCBtYXggKHggOiBpbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4gIGxldCBtaW4gKHggOiBpbnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgZXF1YWwgKHggOiBzdHJpbmcpICh5IDogc3RyaW5nKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxubW9kdWxlIENoYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDaGFyXG5cbiAgbGV0IGVxdWFsICh4IDogY2hhcikgKHkgOiBjaGFyKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIE1ha2VUbyAoQyA6IHNpZ1xuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBlbHQgOiAnYSBlbHQgLT4gRG9tLm5vZGUgSnMudFxuZW5kKSA6IFR5eG1sX2Nhc3Rfc2lncy5UTyB3aXRoIHR5cGUgJ2EgZWx0ID0gJ2EgQy5lbHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBlbHQgPSAnYSBDLmVsdFxuXG4gIGxldCByZWJ1aWxkX25vZGUgXyB4ID0gSnMuVW5zYWZlLmNvZXJjZSAoQy5lbHQgeClcblxuICBsZXQgb2ZfZWxlbWVudCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9lbGVtZW50XCIgZWx0XG5cbiAgbGV0IG9mX25vZGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfbm9kZVwiIGVsdFxuXG4gIGxldCBvZl9wY2RhdGEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcGNkYXRhXCIgZWx0XG5cbiAgbGV0IG9mX2h0bWwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaHRtbFwiIGVsdFxuXG4gIGxldCBvZl9oZWFkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hlYWRcIiBlbHRcblxuICBsZXQgb2ZfbGluayBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9saW5rXCIgZWx0XG5cbiAgbGV0IG9mX3RpdGxlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RpdGxlXCIgZWx0XG5cbiAgbGV0IG9mX21ldGEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWV0YVwiIGVsdFxuXG4gIGxldCBvZl9iYXNlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Jhc2VcIiBlbHRcblxuICBsZXQgb2Zfc3R5bGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3R5bGVcIiBlbHRcblxuICBsZXQgb2ZfYm9keSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ib2R5XCIgZWx0XG5cbiAgbGV0IG9mX2Zvcm0gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZm9ybVwiIGVsdFxuXG4gIGxldCBvZl9vcHRncm91cCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vcHRncm91cFwiIGVsdFxuXG4gIGxldCBvZl9vcHRpb24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb3B0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX3NlbGVjdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zZWxlY3RcIiBlbHRcblxuICBsZXQgb2ZfaW5wdXQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaW5wdXRcIiBlbHRcblxuICBsZXQgb2ZfdGV4dGFyZWEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGV4dGFyZWFcIiBlbHRcblxuICBsZXQgb2ZfYnV0dG9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2J1dHRvblwiIGVsdFxuXG4gIGxldCBvZl9sYWJlbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9sYWJlbFwiIGVsdFxuXG4gIGxldCBvZl9maWVsZHNldCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9maWVsZHNldFwiIGVsdFxuXG4gIGxldCBvZl9sZWdlbmQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbGVnZW5kXCIgZWx0XG5cbiAgbGV0IG9mX3VsIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3VsXCIgZWx0XG5cbiAgbGV0IG9mX29sIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29sXCIgZWx0XG5cbiAgbGV0IG9mX2RsIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RsXCIgZWx0XG5cbiAgbGV0IG9mX2xpIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xpXCIgZWx0XG5cbiAgbGV0IG9mX2RpdiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kaXZcIiBlbHRcblxuICBsZXQgb2ZfcCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wXCIgZWx0XG5cbiAgbGV0IG9mX2hlYWRpbmcgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaGVhZGluZ1wiIGVsdFxuXG4gIGxldCBvZl9ibG9ja3F1b3RlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Jsb2NrcXVvdGVcIiBlbHRcblxuICBsZXQgb2ZfcHJlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3ByZVwiIGVsdFxuXG4gIGxldCBvZl9iciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9iclwiIGVsdFxuXG4gIGxldCBvZl9ociBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oclwiIGVsdFxuXG4gIGxldCBvZl9pbnMgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaW5zXCIgZWx0XG5cbiAgbGV0IG9mX2RlbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kZWxcIiBlbHRcblxuICBsZXQgb2ZfYSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hXCIgZWx0XG5cbiAgbGV0IG9mX2ltZyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9pbWdcIiBlbHRcblxuICBsZXQgb2Zfb2JqZWN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29iamVjdFwiIGVsdFxuXG4gIGxldCBvZl9wYXJhbSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wYXJhbVwiIGVsdFxuXG4gIGxldCBvZl9hcmVhIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FyZWFcIiBlbHRcblxuICBsZXQgb2ZfbWFwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21hcFwiIGVsdFxuXG4gIGxldCBvZl9zY3JpcHQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc2NyaXB0XCIgZWx0XG5cbiAgbGV0IG9mX3RkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RkXCIgZWx0XG5cbiAgbGV0IG9mX3RyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RyXCIgZWx0XG5cbiAgbGV0IG9mX2NvbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jb2xcIiBlbHRcblxuICBsZXQgb2ZfdGZvb3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGZvb3RcIiBlbHRcblxuICBsZXQgb2ZfdGhlYWQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGhlYWRcIiBlbHRcblxuICBsZXQgb2ZfdGJvZHkgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGJvZHlcIiBlbHRcblxuICBsZXQgb2ZfY2FwdGlvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jYXB0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX3RhYmxlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RhYmxlXCIgZWx0XG5cbiAgbGV0IG9mX2NhbnZhcyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jYW52YXNcIiBlbHRcblxuICBsZXQgb2ZfaWZyYW1lIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2lmcmFtZVwiIGVsdFxuXG4gIGxldCBvZl9hdWRpbyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hdWRpb1wiIGVsdFxuXG4gIGxldCBvZl92aWRlbyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl92aWRlb1wiIGVsdFxuXG4gICgqIERvbV9odG1sLmhlYWRpbmdFbGVtZW50ICopXG5cbiAgbGV0IG9mX2gxIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2gxXCIgZWx0XG5cbiAgbGV0IG9mX2gyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2gyXCIgZWx0XG5cbiAgbGV0IG9mX2gzIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2gzXCIgZWx0XG5cbiAgbGV0IG9mX2g0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2g0XCIgZWx0XG5cbiAgbGV0IG9mX2g1IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2g1XCIgZWx0XG5cbiAgbGV0IG9mX2g2IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2g2XCIgZWx0XG5cbiAgKCogRG9tX2h0bWwuZWxlbWVudCAqKVxuXG4gIGxldCBvZl9hYmJyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FiYnJcIiBlbHRcblxuICBsZXQgb2ZfYWRkcmVzcyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hZGRyZXNzXCIgZWx0XG5cbiAgbGV0IG9mX2FydGljbGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYXJ0aWNsZVwiIGVsdFxuXG4gIGxldCBvZl9hc2lkZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hc2lkZVwiIGVsdFxuXG4gIGxldCBvZl9iIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2JcIiBlbHRcblxuICBsZXQgb2ZfYmRvIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Jkb1wiIGVsdFxuXG4gIGxldCBvZl9jaXRlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NpdGVcIiBlbHRcblxuICBsZXQgb2ZfY29kZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jb2RlXCIgZWx0XG5cbiAgbGV0IG9mX2NvbGdyb3VwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NvbGdyb3VwXCIgZWx0XG5cbiAgbGV0IG9mX2NvbW1hbmQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfY29tbWFuZFwiIGVsdFxuXG4gIGxldCBvZl9kYXRhbGlzdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kYXRhbGlzdFwiIGVsdFxuXG4gIGxldCBvZl9kZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kZFwiIGVsdFxuXG4gIGxldCBvZl9kZXRhaWxzIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RldGFpbHNcIiBlbHRcblxuICBsZXQgb2ZfZGZuIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RmblwiIGVsdFxuXG4gIGxldCBvZl9kdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kdFwiIGVsdFxuXG4gIGxldCBvZl9lbSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9lbVwiIGVsdFxuXG4gIGxldCBvZl9lbWJlZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9lbWJlZFwiIGVsdFxuXG4gIGxldCBvZl9maWdjYXB0aW9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2ZpZ2NhcHRpb25cIiBlbHRcblxuICBsZXQgb2ZfZmlndXJlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2ZpZ3VyZVwiIGVsdFxuXG4gIGxldCBvZl9mb290ZXIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZm9vdGVyXCIgZWx0XG5cbiAgbGV0IG9mX2hlYWRlciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oZWFkZXJcIiBlbHRcblxuICBsZXQgb2ZfaGdyb3VwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hncm91cFwiIGVsdFxuXG4gIGxldCBvZl9pIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2lcIiBlbHRcblxuICBsZXQgb2Zfa2JkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2tiZFwiIGVsdFxuXG4gIGxldCBvZl9rZXlnZW4gZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfa2V5Z2VuXCIgZWx0XG5cbiAgbGV0IG9mX21haW4gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWFpblwiIGVsdFxuXG4gIGxldCBvZl9tYXJrIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21hcmtcIiBlbHRcblxuICBsZXQgb2ZfbWVudSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tZW51XCIgZWx0XG5cbiAgbGV0IG9mX21ldGVyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21ldGVyXCIgZWx0XG5cbiAgbGV0IG9mX25hdiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9uYXZcIiBlbHRcblxuICBsZXQgb2Zfbm9zY3JpcHQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfbm9zY3JpcHRcIiBlbHRcblxuICBsZXQgb2Zfb3V0cHV0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX291dHB1dFwiIGVsdFxuXG4gIGxldCBvZl9wcm9ncmVzcyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wcm9ncmVzc1wiIGVsdFxuXG4gIGxldCBvZl9xIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3FcIiBlbHRcblxuICBsZXQgb2ZfcnAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcnBcIiBlbHRcblxuICBsZXQgb2ZfcnQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcnRcIiBlbHRcblxuICBsZXQgb2ZfcnVieSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ydWJ5XCIgZWx0XG5cbiAgbGV0IG9mX3NhbXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc2FtcFwiIGVsdFxuXG4gIGxldCBvZl9zZWN0aW9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NlY3Rpb25cIiBlbHRcblxuICBsZXQgb2Zfc21hbGwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc21hbGxcIiBlbHRcblxuICBsZXQgb2Zfc291cmNlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NvdXJjZVwiIGVsdFxuXG4gIGxldCBvZl9zcGFuIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NwYW5cIiBlbHRcblxuICBsZXQgb2Zfc3Ryb25nIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3N0cm9uZ1wiIGVsdFxuXG4gIGxldCBvZl9zdWIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3ViXCIgZWx0XG5cbiAgbGV0IG9mX3N1bW1hcnkgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3VtbWFyeVwiIGVsdFxuXG4gIGxldCBvZl9zdXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3VwXCIgZWx0XG5cbiAgbGV0IG9mX3RoIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RoXCIgZWx0XG5cbiAgbGV0IG9mX3RpbWUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGltZVwiIGVsdFxuXG4gIGxldCBvZl91IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3VcIiBlbHRcblxuICBsZXQgb2ZfdmFyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3ZhclwiIGVsdFxuXG4gIGxldCBvZl93YnIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfd2JyXCIgZWx0XG5lbmRcblxubW9kdWxlIE1ha2VPZiAoQyA6IHNpZ1xuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBlbHQgOiBEb20ubm9kZSBKcy50IC0+ICdhIGVsdFxuZW5kKSA6IFR5eG1sX2Nhc3Rfc2lncy5PRiB3aXRoIHR5cGUgJ2EgZWx0ID0gJ2EgQy5lbHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBlbHQgPSAnYSBDLmVsdFxuXG4gIGxldCByZWJ1aWxkX25vZGUgXyB4ID0gQy5lbHQgKEpzLlVuc2FmZS5jb2VyY2UgeClcblxuICBsZXQgb2ZfZWxlbWVudCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9lbGVtZW50XCIgZWx0XG5cbiAgbGV0IG9mX2h0bWwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaHRtbFwiIGVsdFxuXG4gIGxldCBvZl9oZWFkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hlYWRcIiBlbHRcblxuICBsZXQgb2ZfbGluayBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9saW5rXCIgZWx0XG5cbiAgbGV0IG9mX3RpdGxlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RpdGxlXCIgZWx0XG5cbiAgbGV0IG9mX21ldGEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWV0YVwiIGVsdFxuXG4gIGxldCBvZl9iYXNlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Jhc2VcIiBlbHRcblxuICBsZXQgb2Zfc3R5bGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3R5bGVcIiBlbHRcblxuICBsZXQgb2ZfYm9keSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ib2R5XCIgZWx0XG5cbiAgbGV0IG9mX2Zvcm0gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZm9ybVwiIGVsdFxuXG4gIGxldCBvZl9vcHRHcm91cCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vcHRHcm91cFwiIGVsdFxuXG4gIGxldCBvZl9vcHRpb24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb3B0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX3NlbGVjdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zZWxlY3RcIiBlbHRcblxuICBsZXQgb2ZfaW5wdXQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaW5wdXRcIiBlbHRcblxuICBsZXQgb2ZfdGV4dEFyZWEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGV4dEFyZWFcIiBlbHRcblxuICBsZXQgb2ZfYnV0dG9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2J1dHRvblwiIGVsdFxuXG4gIGxldCBvZl9sYWJlbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9sYWJlbFwiIGVsdFxuXG4gIGxldCBvZl9maWVsZFNldCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9maWVsZFNldFwiIGVsdFxuXG4gIGxldCBvZl9sZWdlbmQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbGVnZW5kXCIgZWx0XG5cbiAgbGV0IG9mX3VMaXN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3VMaXN0XCIgZWx0XG5cbiAgbGV0IG9mX29MaXN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29MaXN0XCIgZWx0XG5cbiAgbGV0IG9mX2RMaXN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RMaXN0XCIgZWx0XG5cbiAgbGV0IG9mX2xpIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xpXCIgZWx0XG5cbiAgbGV0IG9mX2RpdiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kaXZcIiBlbHRcblxuICBsZXQgb2ZfcGFyYWdyYXBoIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3BhcmFncmFwaFwiIGVsdFxuXG4gIGxldCBvZl9oZWFkaW5nIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hlYWRpbmdcIiBlbHRcblxuICBsZXQgb2ZfcXVvdGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcXVvdGVcIiBlbHRcblxuICBsZXQgb2ZfcHJlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3ByZVwiIGVsdFxuXG4gIGxldCBvZl9iciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9iclwiIGVsdFxuXG4gIGxldCBvZl9ociBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oclwiIGVsdFxuXG4gIGxldCBvZl9tb2QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbW9kXCIgZWx0XG5cbiAgbGV0IG9mX2FuY2hvciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hbmNob3JcIiBlbHRcblxuICBsZXQgb2ZfaW1hZ2UgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaW1hZ2VcIiBlbHRcblxuICBsZXQgb2Zfb2JqZWN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29iamVjdFwiIGVsdFxuXG4gIGxldCBvZl9wYXJhbSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wYXJhbVwiIGVsdFxuXG4gIGxldCBvZl9hcmVhIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FyZWFcIiBlbHRcblxuICBsZXQgb2ZfbWFwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21hcFwiIGVsdFxuXG4gIGxldCBvZl9zY3JpcHQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc2NyaXB0XCIgZWx0XG5cbiAgbGV0IG9mX2VtYmVkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2VtYmVkXCIgZWx0XG5cbiAgbGV0IG9mX3RhYmxlQ2VsbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90YWJsZUNlbGxcIiBlbHRcblxuICBsZXQgb2ZfdGFibGVSb3cgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVSb3dcIiBlbHRcblxuICBsZXQgb2ZfdGFibGVDb2wgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVDb2xcIiBlbHRcblxuICBsZXQgb2ZfdGFibGVTZWN0aW9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RhYmxlU2VjdGlvblwiIGVsdFxuXG4gIGxldCBvZl90YWJsZUNhcHRpb24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVDYXB0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX3RhYmxlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RhYmxlXCIgZWx0XG5cbiAgbGV0IG9mX2NhbnZhcyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jYW52YXNcIiBlbHRcblxuICBsZXQgb2ZfaUZyYW1lIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2lGcmFtZVwiIGVsdFxuXG4gIGxldCBvZl9hdWRpbyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hdWRpb1wiIGVsdFxuXG4gIGxldCBvZl92aWRlbyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl92aWRlb1wiIGVsdFxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuISBJbXBvcnRcblxubGV0IGpzX3N0cmluZ19vZl9mbG9hdCBmID0gKEpzLm51bWJlcl9vZl9mbG9hdCBmKSMjdG9TdHJpbmdcblxubGV0IGpzX3N0cmluZ19vZl9pbnQgaSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgKGZsb2F0X29mX2ludCBpKSkjI3RvU3RyaW5nXG5cbm1vZHVsZSB0eXBlIFhNTCA9XG4gIFhtbF9zaWdzLlRcbiAgICB3aXRoIHR5cGUgdXJpID0gc3RyaW5nXG4gICAgIGFuZCB0eXBlIGV2ZW50X2hhbmRsZXIgPSBEb21faHRtbC5ldmVudCBKcy50IC0+IGJvb2xcbiAgICAgYW5kIHR5cGUgbW91c2VfZXZlbnRfaGFuZGxlciA9IERvbV9odG1sLm1vdXNlRXZlbnQgSnMudCAtPiBib29sXG4gICAgIGFuZCB0eXBlIGtleWJvYXJkX2V2ZW50X2hhbmRsZXIgPSBEb21faHRtbC5rZXlib2FyZEV2ZW50IEpzLnQgLT4gYm9vbFxuICAgICBhbmQgdHlwZSBlbHQgPSBEb20ubm9kZSBKcy50XG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gd2Vha01hcCA9IG9iamVjdFxuICBtZXRob2Qgc2V0IDogJ2EgLT4gJ2IgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGdldCA6ICdhIC0+ICdiIEpzLk9wdGRlZi50IEpzLm1ldGhcbmVuZFxuXG5sZXQgcmV0YWluID1cbiAgbGV0IG1hcCA6IChEb20ubm9kZSBKcy50LCBPYmoudCBKcy5qc19hcnJheSBKcy50KSB3ZWFrTWFwIEpzLnQgPVxuICAgIGxldCB3ZWFrTWFwID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9XZWFrTWFwIGluXG4gICAgbmV3JWpzIHdlYWtNYXBcbiAgaW5cbiAgZnVuICh0eXBlIGEpIG5vZGUgfihrZWVwbWUgOiBhKSAtPlxuICAgIGxldCBwcmV2ID1cbiAgICAgIEpzLk9wdGRlZi5jYXNlIChtYXAjI2dldCBub2RlKSAoZnVuICgpIC0+IG5ldyVqcyBKcy5hcnJheV9lbXB0eSkgKGZ1biB4IC0+IHgpXG4gICAgaW5cbiAgICBsZXQgKF8gOiBpbnQpID0gcHJldiMjcHVzaCAoT2JqLnJlcHIga2VlcG1lKSBpblxuICAgIG1hcCMjc2V0IG5vZGUgcHJldlxuXG5tb2R1bGUgWG1sID0gc3RydWN0XG4gIG1vZHVsZSBXID0gWG1sX3dyYXAuTm9XcmFwXG5cbiAgdHlwZSAnYSB3cmFwID0gJ2FcblxuICB0eXBlICdhIGxpc3Rfd3JhcCA9ICdhIGxpc3RcblxuICB0eXBlIHVyaSA9IHN0cmluZ1xuXG4gIGxldCB1cmlfb2Zfc3RyaW5nIHMgPSBzXG5cbiAgbGV0IHN0cmluZ19vZl91cmkgcyA9IHNcblxuICB0eXBlIGFuYW1lID0gc3RyaW5nXG5cbiAgdHlwZSBldmVudF9oYW5kbGVyID0gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiBib29sXG5cbiAgdHlwZSBtb3VzZV9ldmVudF9oYW5kbGVyID0gRG9tX2h0bWwubW91c2VFdmVudCBKcy50IC0+IGJvb2xcblxuICB0eXBlIGtleWJvYXJkX2V2ZW50X2hhbmRsZXIgPSBEb21faHRtbC5rZXlib2FyZEV2ZW50IEpzLnQgLT4gYm9vbFxuXG4gIHR5cGUgdG91Y2hfZXZlbnRfaGFuZGxlciA9IERvbV9odG1sLnRvdWNoRXZlbnQgSnMudCAtPiBib29sXG5cbiAgdHlwZSBhdHRyaWJfayA9XG4gICAgfCBFdmVudCBvZiBldmVudF9oYW5kbGVyXG4gICAgfCBNb3VzZUV2ZW50IG9mIG1vdXNlX2V2ZW50X2hhbmRsZXJcbiAgICB8IEtleWJvYXJkRXZlbnQgb2Yga2V5Ym9hcmRfZXZlbnRfaGFuZGxlclxuICAgIHwgVG91Y2hFdmVudCBvZiB0b3VjaF9ldmVudF9oYW5kbGVyXG4gICAgfCBBdHRyIG9mIEpzLmpzX3N0cmluZyBKcy50IG9wdGlvbiBSZWFjdC5TLnRcblxuICB0eXBlIGF0dHJpYiA9IGFuYW1lICogYXR0cmliX2tcblxuICBsZXQgYXR0ciBuYW1lIHYgPSBuYW1lLCBBdHRyIChSZWFjdC5TLmNvbnN0IChTb21lIHYpKVxuXG4gIGxldCBmbG9hdF9hdHRyaWIgbmFtZSB2YWx1ZSA6IGF0dHJpYiA9IGF0dHIgbmFtZSAoanNfc3RyaW5nX29mX2Zsb2F0IHZhbHVlKVxuXG4gIGxldCBpbnRfYXR0cmliIG5hbWUgdmFsdWUgPSBhdHRyIG5hbWUgKGpzX3N0cmluZ19vZl9pbnQgdmFsdWUpXG5cbiAgbGV0IHN0cmluZ19hdHRyaWIgbmFtZSB2YWx1ZSA9IGF0dHIgbmFtZSAoSnMuc3RyaW5nIHZhbHVlKVxuXG4gIGxldCBzcGFjZV9zZXBfYXR0cmliIG5hbWUgdmFsdWVzID0gYXR0ciBuYW1lIChKcy5zdHJpbmcgKFN0cmluZy5jb25jYXQgXCIgXCIgdmFsdWVzKSlcblxuICBsZXQgY29tbWFfc2VwX2F0dHJpYiBuYW1lIHZhbHVlcyA9IGF0dHIgbmFtZSAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IFwiLFwiIHZhbHVlcykpXG5cbiAgbGV0IGV2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgKHZhbHVlIDogZXZlbnRfaGFuZGxlcikgPSBuYW1lLCBFdmVudCB2YWx1ZVxuXG4gIGxldCBtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lICh2YWx1ZSA6IG1vdXNlX2V2ZW50X2hhbmRsZXIpID1cbiAgICBuYW1lLCBNb3VzZUV2ZW50IHZhbHVlXG5cbiAgbGV0IGtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgKHZhbHVlIDoga2V5Ym9hcmRfZXZlbnRfaGFuZGxlcikgPVxuICAgIG5hbWUsIEtleWJvYXJkRXZlbnQgdmFsdWVcblxuICBsZXQgdG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSAodmFsdWUgOiB0b3VjaF9ldmVudF9oYW5kbGVyKSA9XG4gICAgbmFtZSwgVG91Y2hFdmVudCB2YWx1ZVxuXG4gIGxldCB1cmlfYXR0cmliIG5hbWUgdmFsdWUgPSBhdHRyIG5hbWUgKEpzLnN0cmluZyB2YWx1ZSlcblxuICBsZXQgdXJpc19hdHRyaWIgbmFtZSB2YWx1ZXMgPSBhdHRyIG5hbWUgKEpzLnN0cmluZyAoU3RyaW5nLmNvbmNhdCBcIiBcIiB2YWx1ZXMpKVxuXG4gICgqKiBFbGVtZW50ICopXG5cbiAgdHlwZSBlbHQgPSBEb20ubm9kZSBKcy50XG5cbiAgdHlwZSBlbmFtZSA9IHN0cmluZ1xuXG4gIGxldCBlbXB0eSAoKSA9IChEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRG9jdW1lbnRGcmFnbWVudCA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBjb21tZW50IGMgPSAoRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZUNvbW1lbnQgKEpzLnN0cmluZyBjKSA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBwY2RhdGEgcyA9IChEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlVGV4dE5vZGUgKEpzLnN0cmluZyBzKSA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBlbmNvZGVkcGNkYXRhIHMgPSAoRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZVRleHROb2RlIChKcy5zdHJpbmcgcykgOj4gRG9tLm5vZGUgSnMudClcblxuICBsZXQgZW50aXR5ID1cbiAgICBsZXQgc3RyaW5nX2ZvbGQgcyB+cG9zIH5pbml0IH5mID1cbiAgICAgIGxldCByID0gcmVmIGluaXQgaW5cbiAgICAgIGZvciBpID0gcG9zIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgbGV0IGMgPSBzLltpXSBpblxuICAgICAgICByIDo9IGYgIXIgY1xuICAgICAgZG9uZTtcbiAgICAgICFyXG4gICAgaW5cbiAgICBsZXQgaW52YWxpZF9lbnRpdHkgZSA9IGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiBcIkludmFsaWQgZW50aXR5ICVTXCIgZSkgaW5cbiAgICBsZXQgaW50X29mX2NoYXIgPSBmdW5jdGlvblxuICAgICAgfCAnMCcgLi4gJzknIGFzIHggLT4gU29tZSAoQ2hhci5jb2RlIHggLSBDaGFyLmNvZGUgJzAnKVxuICAgICAgfCAnYScgLi4gJ2YnIGFzIHggLT4gU29tZSAoQ2hhci5jb2RlIHggLSBDaGFyLmNvZGUgJ2EnICsgMTApXG4gICAgICB8ICdBJyAuLiAnRicgYXMgeCAtPiBTb21lIChDaGFyLmNvZGUgeCAtIENoYXIuY29kZSAnQScgKyAxMClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgcGFyc2VfaW50IH5wb3MgfmJhc2UgZSA9XG4gICAgICBzdHJpbmdfZm9sZCBlIH5wb3MgfmluaXQ6MCB+ZjooZnVuIGFjYyB4IC0+XG4gICAgICAgICAgbWF0Y2ggaW50X29mX2NoYXIgeCB3aXRoXG4gICAgICAgICAgfCBTb21lIGQgd2hlbiBkIDwgYmFzZSAtPiAoYWNjICogYmFzZSkgKyBkXG4gICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGludmFsaWRfZW50aXR5IGUpXG4gICAgaW5cbiAgICBsZXQgaXNfYWxwaGFfbnVtID0gZnVuY3Rpb25cbiAgICAgIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgZnVuIGUgLT5cbiAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGUgaW5cbiAgICAgIGxldCBzdHIgPVxuICAgICAgICBpZiBsZW4gPj0gMSAmJiBDaGFyLmVxdWFsIGUuWzBdICcjJ1xuICAgICAgICB0aGVuXG4gICAgICAgICAgbGV0IGkgPVxuICAgICAgICAgICAgaWYgbGVuID49IDIgJiYgKENoYXIuZXF1YWwgZS5bMV0gJ3gnIHx8IENoYXIuZXF1YWwgZS5bMV0gJ1gnKVxuICAgICAgICAgICAgdGhlbiBwYXJzZV9pbnQgfnBvczoyIH5iYXNlOjE2IGVcbiAgICAgICAgICAgIGVsc2UgcGFyc2VfaW50IH5wb3M6MSB+YmFzZToxMCBlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBKcy5zdHJpbmdfY29uc3RyIyNmcm9tQ2hhckNvZGUgaVxuICAgICAgICBlbHNlIGlmIHN0cmluZ19mb2xkIGUgfnBvczowIH5pbml0OnRydWUgfmY6KGZ1biBhY2MgeCAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBUaGlzIGlzIG5vdCBxdWl0ZSByaWdodCBhY2NvcmRpbmcgdG9cbiAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly93d3cueG1sLmNvbS9heG1sL3RhcmdldC5odG1sI05ULU5hbWUuXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1dCBpdCBzZWVtcyB0byBjb3ZlciBhbGwgaHRtbDUgZW50aXRpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly9kZXYudzMub3JnL2h0bWw1L2h0bWwtYXV0aG9yL2NoYXJyZWYgKilcbiAgICAgICAgICAgICAgICAgICAgYWNjICYmIGlzX2FscGhhX251bSB4KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgICAgfCBcInF1b3RcIiAtPiBKcy5zdHJpbmcgXCJcXFwiXCJcbiAgICAgICAgICB8IFwiYW1wXCIgLT4gSnMuc3RyaW5nIFwiJlwiXG4gICAgICAgICAgfCBcImFwb3NcIiAtPiBKcy5zdHJpbmcgXCInXCJcbiAgICAgICAgICB8IFwibHRcIiAtPiBKcy5zdHJpbmcgXCI8XCJcbiAgICAgICAgICB8IFwiZ3RcIiAtPiBKcy5zdHJpbmcgXCI+XCJcbiAgICAgICAgICB8IFwiXCIgLT4gaW52YWxpZF9lbnRpdHkgZVxuICAgICAgICAgIHwgXyAtPiBEb21faHRtbC5kZWNvZGVfaHRtbF9lbnRpdGllcyAoSnMuc3RyaW5nIChcIiZcIiBeIGUgXiBcIjtcIikpXG4gICAgICAgIGVsc2UgaW52YWxpZF9lbnRpdHkgZVxuICAgICAgaW5cbiAgICAgIChEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlVGV4dE5vZGUgc3RyIDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgKCogVE9ETzogZml4IGdldF9wcm9wXG4gICAgIGl0IG9ubHkgd29yayB3aGVuIGh0bWwgYXR0cmlidXRlIGFuZCBkb20gcHJvcGVydHkgbmFtZXMgY29ycmVzcG9uZC5cbiAgICAgZmluZCBhIHdheSB0byBnZXQgZG9tIHByb3BlcnR5IG5hbWUgY29ycmVzcG9uZGluZyB0byBodG1sIGF0dHJpYnV0ZVxuICAqKVxuXG4gIGxldCBnZXRfcHJvcCBub2RlIG5hbWUgPVxuICAgIGlmIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuZ2V0IG5vZGUgbmFtZSkgdGhlbiBTb21lIG5hbWUgZWxzZSBOb25lXG5cbiAgbGV0IGl0ZXJfcHJvcF9wcm90ZWN0ZWQgbm9kZSBuYW1lIGYgPVxuICAgIG1hdGNoIGdldF9wcm9wIG5vZGUgbmFtZSB3aXRoXG4gICAgfCBTb21lIG4gLT4gKCB0cnkgZiBuIHdpdGggXyAtPiAoKSlcbiAgICB8IE5vbmUgLT4gKClcblxuICBsZXQgYXR0YWNoX2F0dHJpYnMgbm9kZSBsID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gKG4nLCBhdHQpIC0+XG4gICAgICAgIGxldCBuID0gSnMuc3RyaW5nIG4nIGluXG4gICAgICAgIG1hdGNoIGF0dCB3aXRoXG4gICAgICAgIHwgQXR0ciBhIC0+XG4gICAgICAgICAgICBsZXQgKGtlZXBtZSA6IHVuaXQgUmVhY3QuUy50KSA9XG4gICAgICAgICAgICAgIFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgaWdub3JlIChub2RlIyNzZXRBdHRyaWJ1dGUgbiB2KTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBuJyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBcInN0eWxlXCIgLT4gbm9kZSMjLnN0eWxlIyMuY3NzVGV4dCA6PSB2XG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJfcHJvcF9wcm90ZWN0ZWQgbm9kZSBuIChmdW4gbmFtZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnMuVW5zYWZlLnNldCBub2RlIG5hbWUgdikpXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZSAobm9kZSMjcmVtb3ZlQXR0cmlidXRlIG4pO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIG4nIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFwic3R5bGVcIiAtPiBub2RlIyMuc3R5bGUjIy5jc3NUZXh0IDo9IEpzLnN0cmluZyBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJfcHJvcF9wcm90ZWN0ZWQgbm9kZSBuIChmdW4gbmFtZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnMuVW5zYWZlLnNldCBub2RlIG5hbWUgSnMubnVsbCkpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICByZXRhaW4gKG5vZGUgOj4gRG9tLm5vZGUgSnMudCkgfmtlZXBtZVxuICAgICAgICB8IEV2ZW50IGggLT4gSnMuVW5zYWZlLnNldCBub2RlIG4gKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBldiAtPiBKcy5ib29sIChoIGV2KSkpXG4gICAgICAgIHwgTW91c2VFdmVudCBoIC0+XG4gICAgICAgICAgICBKcy5VbnNhZmUuc2V0IG5vZGUgbiAoSnMud3JhcF9jYWxsYmFjayAoZnVuIGV2IC0+IEpzLmJvb2wgKGggZXYpKSlcbiAgICAgICAgfCBLZXlib2FyZEV2ZW50IGggLT5cbiAgICAgICAgICAgIEpzLlVuc2FmZS5zZXQgbm9kZSBuIChKcy53cmFwX2NhbGxiYWNrIChmdW4gZXYgLT4gSnMuYm9vbCAoaCBldikpKVxuICAgICAgICB8IFRvdWNoRXZlbnQgaCAtPlxuICAgICAgICAgICAgSnMuVW5zYWZlLnNldCBub2RlIG4gKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBldiAtPiBKcy5ib29sIChoIGV2KSkpKVxuICAgICAgbFxuXG4gIGxldCBsZWFmID8oYSA9IFtdKSBuYW1lID1cbiAgICBsZXQgZSA9IERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgbmFtZSkgaW5cbiAgICBhdHRhY2hfYXR0cmlicyBlIGE7XG4gICAgKGUgOj4gRG9tLm5vZGUgSnMudClcblxuICBsZXQgbm9kZSA/KGEgPSBbXSkgbmFtZSBjaGlsZHJlbiA9XG4gICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIG5hbWUpIGluXG4gICAgYXR0YWNoX2F0dHJpYnMgZSBhO1xuICAgIExpc3QuaXRlciAoZnVuIGMgLT4gaWdub3JlIChlIyNhcHBlbmRDaGlsZCBjKSkgY2hpbGRyZW47XG4gICAgKGUgOj4gRG9tLm5vZGUgSnMudClcblxuICBsZXQgY2RhdGEgcyA9IHBjZGF0YSBzXG5cbiAgbGV0IGNkYXRhX3NjcmlwdCBzID0gY2RhdGEgc1xuXG4gIGxldCBjZGF0YV9zdHlsZSBzID0gY2RhdGEgc1xuZW5kXG5cbm1vZHVsZSBYbWxfU3ZnID0gc3RydWN0XG4gIGluY2x1ZGUgWG1sXG5cbiAgbGV0IGxlYWYgPyhhID0gW10pIG5hbWUgPVxuICAgIGxldCBlID0gRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnROUyBEb21fc3ZnLnhtbG5zIChKcy5zdHJpbmcgbmFtZSkgaW5cbiAgICBhdHRhY2hfYXR0cmlicyBlIGE7XG4gICAgKGUgOj4gRG9tLm5vZGUgSnMudClcblxuICBsZXQgbm9kZSA/KGEgPSBbXSkgbmFtZSBjaGlsZHJlbiA9XG4gICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRWxlbWVudE5TIERvbV9zdmcueG1sbnMgKEpzLnN0cmluZyBuYW1lKSBpblxuICAgIGF0dGFjaF9hdHRyaWJzIGUgYTtcbiAgICBMaXN0Lml0ZXIgKGZ1biBjIC0+IGlnbm9yZSAoZSMjYXBwZW5kQ2hpbGQgYykpIGNoaWxkcmVuO1xuICAgIChlIDo+IERvbS5ub2RlIEpzLnQpXG5lbmRcblxubW9kdWxlIFN2ZyA9IFN2Z19mLk1ha2UgKFhtbF9TdmcpXG5tb2R1bGUgSHRtbCA9IEh0bWxfZi5NYWtlIChYbWwpIChTdmcpXG5tb2R1bGUgSHRtbDUgPSBIdG1sXG5cbm1vZHVsZSBUb19kb20gPSBUeXhtbF9jYXN0Lk1ha2VUbyAoc3RydWN0XG4gIHR5cGUgJ2EgZWx0ID0gJ2EgSHRtbC5lbHRcblxuICBsZXQgZWx0ID0gSHRtbC50b2VsdFxuZW5kKVxuXG5tb2R1bGUgT2ZfZG9tID0gVHl4bWxfY2FzdC5NYWtlT2YgKHN0cnVjdFxuICB0eXBlICdhIGVsdCA9ICdhIEh0bWwuZWx0XG5cbiAgbGV0IGVsdCA9IEh0bWwudG90XG5lbmQpXG5cbm1vZHVsZSBSZWdpc3RlciA9IHN0cnVjdFxuICBsZXQgcmVtb3ZlQ2hpbGRyZW4gKG5vZGUgOiAjRG9tLmVsZW1lbnQgSnMudCkgPVxuICAgIGxldCBsID0gbm9kZSMjLmNoaWxkTm9kZXMgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCMjLmxlbmd0aCAtIDEgZG9cbiAgICAgIEpzLk9wdC5pdGVyIChsIyNpdGVtIGkpIChmdW4geCAtPiBpZ25vcmUgKG5vZGUjI3JlbW92ZUNoaWxkIHgpKVxuICAgIGRvbmVcblxuICBsZXQgYWRkX3RvID8oa2VlcCA9IHRydWUpIG5vZGUgY29udGVudCA9XG4gICAgaWYgbm90IGtlZXAgdGhlbiByZW1vdmVDaGlsZHJlbiBub2RlO1xuICAgIExpc3QuaXRlciAoZnVuIHggLT4gRG9tLmFwcGVuZENoaWxkIG5vZGUgKFRvX2RvbS5vZl9lbGVtZW50IHgpKSBjb250ZW50XG5cbiAgbGV0IGlkID9rZWVwIGlkIGNvbnRlbnQgPVxuICAgIGxldCBub2RlID0gRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWQgaWQgaW5cbiAgICBhZGRfdG8gP2tlZXAgbm9kZSBjb250ZW50XG5cbiAgbGV0IGJvZHkgP2tlZXAgY29udGVudCA9IGFkZF90byA/a2VlcCBEb21faHRtbC5kb2N1bWVudCMjLmJvZHkgY29udGVudFxuXG4gIGxldCBoZWFkID9rZWVwIGNvbnRlbnQgPSBhZGRfdG8gP2tlZXAgRG9tX2h0bWwuZG9jdW1lbnQjIy5oZWFkIGNvbnRlbnRcblxuICBsZXQgaHRtbCA/aGVhZCBib2R5ID1cbiAgICAobWF0Y2ggaGVhZCB3aXRoXG4gICAgfCBTb21lIGggLT4gRG9tX2h0bWwuZG9jdW1lbnQjIy5oZWFkIDo9IFRvX2RvbS5vZl9oZWFkIGhcbiAgICB8IE5vbmUgLT4gKCkpO1xuICAgIERvbV9odG1sLmRvY3VtZW50IyMuYm9keSA6PSBUb19kb20ub2ZfYm9keSBib2R5O1xuICAgICgpXG5lbmRcblxubW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgUmVhY3Quc2lnbmFsXG5cbiAgdHlwZSAnYSB0bGlzdCA9ICdhIFJlYWN0aXZlRGF0YS5STGlzdC50XG5cbiAgdHlwZSAoJ2EsICdiKSBmdCA9ICdhIC0+ICdiXG5cbiAgbGV0IHJldHVybiA9IFJlYWN0LlMuY29uc3RcblxuICBsZXQgZm1hcCBmID0gUmVhY3QuUy5tYXAgZlxuXG4gIGxldCBuaWwgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcblxuICBsZXQgc2luZ2xldG9uID0gUmVhY3RpdmVEYXRhLlJMaXN0LnNpbmdsZXRvbl9zXG5cbiAgbGV0IGNvbnMgeCB4cyA9IFJlYWN0aXZlRGF0YS5STGlzdC5jb25jYXQgKHNpbmdsZXRvbiB4KSB4c1xuXG4gIGxldCBtYXAgZiA9IFJlYWN0aXZlRGF0YS5STGlzdC5tYXAgZlxuXG4gIGxldCBhcHBlbmQgeCB5ID0gUmVhY3RpdmVEYXRhLlJMaXN0LmNvbmNhdCB4IHlcbmVuZFxuXG5tb2R1bGUgVXRpbCA9IHN0cnVjdFxuICBvcGVuIFJlYWN0aXZlRGF0YVxuICBvcGVuIFJMaXN0XG5cbiAgbGV0IGluc2VydEF0IGRvbSBpIHggPVxuICAgIGxldCBub2RlcyA9IGRvbSMjLmNoaWxkTm9kZXMgaW5cbiAgICBhc3NlcnQgKGkgPD0gbm9kZXMjIy5sZW5ndGgpO1xuICAgIGlmIGkgPSBub2RlcyMjLmxlbmd0aFxuICAgIHRoZW4gaWdub3JlIChkb20jI2FwcGVuZENoaWxkICh4IDo+IERvbS5ub2RlIEpzLnQpKVxuICAgIGVsc2UgaWdub3JlIChkb20jI2luc2VydEJlZm9yZSB4IChub2RlcyMjaXRlbSBpKSlcblxuICBsZXQgbWVyZ2Vfb25lX3BhdGNoIChkb20gOiBEb20ubm9kZSBKcy50KSAocCA6IERvbS5ub2RlIEpzLnQgcCkgPVxuICAgIG1hdGNoIHAgd2l0aFxuICAgIHwgSSAoaSwgeCkgLT5cbiAgICAgICAgbGV0IGkgPSBpZiBpIDwgMCB0aGVuIGRvbSMjLmNoaWxkTm9kZXMjIy5sZW5ndGggKyAxICsgaSBlbHNlIGkgaW5cbiAgICAgICAgaW5zZXJ0QXQgZG9tIGkgeFxuICAgIHwgUiBpIC0+XG4gICAgICAgIGxldCBpID0gaWYgaSA8IDAgdGhlbiBkb20jIy5jaGlsZE5vZGVzIyMubGVuZ3RoICsgaSBlbHNlIGkgaW5cbiAgICAgICAgbGV0IG5vZGVzID0gZG9tIyMuY2hpbGROb2RlcyBpblxuICAgICAgICBhc3NlcnQgKGkgPj0gMCAmJiBpIDwgbm9kZXMjIy5sZW5ndGgpO1xuICAgICAgICBKcy5PcHQuaXRlciAobm9kZXMjI2l0ZW0gaSkgKGZ1biBuIC0+IERvbS5yZW1vdmVDaGlsZCBkb20gbilcbiAgICB8IFUgKGksIHgpIC0+IChcbiAgICAgICAgbGV0IGkgPSBpZiBpIDwgMCB0aGVuIGRvbSMjLmNoaWxkTm9kZXMjIy5sZW5ndGggKyBpIGVsc2UgaSBpblxuICAgICAgICBtYXRjaCBKcy5PcHQudG9fb3B0aW9uIChkb20jIy5jaGlsZE5vZGVzIyNpdGVtIGkpIHdpdGhcbiAgICAgICAgfCBTb21lIG9sZCAtPiBpZ25vcmUgKGRvbSMjcmVwbGFjZUNoaWxkIHggb2xkKVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIHwgWCAoaSwgbW92ZSkgLT4gKFxuICAgICAgICBsZXQgaSA9IGlmIGkgPCAwIHRoZW4gZG9tIyMuY2hpbGROb2RlcyMjLmxlbmd0aCArIGkgZWxzZSBpIGluXG4gICAgICAgIGlmIG1vdmUgPSAwXG4gICAgICAgIHRoZW4gKClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIEpzLk9wdC50b19vcHRpb24gKGRvbSMjLmNoaWxkTm9kZXMjI2l0ZW0gaSkgd2l0aFxuICAgICAgICAgIHwgU29tZSBpJyAtPiBpbnNlcnRBdCBkb20gKGkgKyBpZiBtb3ZlID4gMCB0aGVuIG1vdmUgKyAxIGVsc2UgbW92ZSkgaSdcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuXG4gIGxldCByZWMgcmVtb3ZlQ2hpbGRyZW4gZG9tID1cbiAgICBtYXRjaCBKcy5PcHQudG9fb3B0aW9uIGRvbSMjLmxhc3RDaGlsZCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGMgLT5cbiAgICAgICAgaWdub3JlIChkb20jI3JlbW92ZUNoaWxkIGMpO1xuICAgICAgICByZW1vdmVDaGlsZHJlbiBkb21cblxuICBsZXQgbWVyZ2VfbXNnIChkb20gOiBEb20ubm9kZSBKcy50KSAobXNnIDogRG9tLm5vZGUgSnMudCBtc2cpID1cbiAgICBtYXRjaCBtc2cgd2l0aFxuICAgIHwgU2V0IGwgLT5cbiAgICAgICAgKCogRm9ybWF0LmVwcmludGYgXCJyZXBsYWNlIGFsbEAuXCI7ICopXG4gICAgICAgIHJlbW92ZUNoaWxkcmVuIGRvbTtcbiAgICAgICAgTGlzdC5pdGVyIChmdW4gbCAtPiBpZ25vcmUgKGRvbSMjYXBwZW5kQ2hpbGQgbCkpIGxcbiAgICB8IFBhdGNoIHAgLT5cbiAgICAgICAgKCogRm9ybWF0LmVwcmludGYgXCJwYXRjaEAuXCI7ICopXG4gICAgICAgIExpc3QuaXRlciAobWVyZ2Vfb25lX3BhdGNoIGRvbSkgcFxuXG4gIGxldCB1cGRhdGVfY2hpbGRyZW4gKGRvbSA6IERvbS5ub2RlIEpzLnQpIChub2RlcyA6IERvbS5ub2RlIEpzLnQgdCkgPVxuICAgIHJlbW92ZUNoaWxkcmVuIGRvbTtcbiAgICBsZXQga2VlcG1lIDogdW5pdCBSZWFjdC5TLnQgPSBmb2xkIChmdW4gKCkgbXNnIC0+IG1lcmdlX21zZyBkb20gbXNnKSBub2RlcyAoKSBpblxuICAgIHJldGFpbiAoZG9tIDogRG9tLm5vZGUgSnMudCkgfmtlZXBtZTtcbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBSID0gc3RydWN0XG4gIGxldCBmaWx0ZXJfYXR0cmliIChuYW1lLCBhKSBvbiA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBYbWwuRXZlbnQgXyB8IFhtbC5Nb3VzZUV2ZW50IF8gfCBYbWwuS2V5Ym9hcmRFdmVudCBfIHwgWG1sLlRvdWNoRXZlbnQgXyAtPlxuICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImZpbHRlcl9hdHRyaWIgbm90IGltcGxlbWVudGVkIGZvciBldmVudCBoYW5kbGVyXCIpXG4gICAgfCBYbWwuQXR0ciBhIC0+IG5hbWUsIFhtbC5BdHRyIChSZWFjdC5TLmwyIChmdW4gb24gYSAtPiBpZiBvbiB0aGVuIGEgZWxzZSBOb25lKSBvbiBhKVxuXG4gIGxldCBhdHRhY2hfYXR0cmlicyA9IFhtbC5hdHRhY2hfYXR0cmlic1xuXG4gIG1vZHVsZSBYbWwgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVyA9IFdyYXBcblxuICAgIHR5cGUgJ2Egd3JhcCA9ICdhIFcudFxuXG4gICAgdHlwZSAnYSBsaXN0X3dyYXAgPSAnYSBXLnRsaXN0XG5cbiAgICB0eXBlIHVyaSA9IFhtbC51cmlcblxuICAgIGxldCBzdHJpbmdfb2ZfdXJpID0gWG1sLnN0cmluZ19vZl91cmlcblxuICAgIGxldCB1cmlfb2Zfc3RyaW5nID0gWG1sLnVyaV9vZl9zdHJpbmdcblxuICAgIHR5cGUgYW5hbWUgPSBYbWwuYW5hbWVcblxuICAgIHR5cGUgZXZlbnRfaGFuZGxlciA9IFhtbC5ldmVudF9oYW5kbGVyXG5cbiAgICB0eXBlIG1vdXNlX2V2ZW50X2hhbmRsZXIgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlclxuXG4gICAgdHlwZSBrZXlib2FyZF9ldmVudF9oYW5kbGVyID0gWG1sLmtleWJvYXJkX2V2ZW50X2hhbmRsZXJcblxuICAgIHR5cGUgdG91Y2hfZXZlbnRfaGFuZGxlciA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyXG5cbiAgICB0eXBlIGF0dHJpYiA9IFhtbC5hdHRyaWJcblxuICAgIGxldCBhdHRyIG5hbWUgZiBzID1cbiAgICAgIGxldCBhID0gVy5mbWFwIGYgcyBpblxuICAgICAgbmFtZSwgWG1sLkF0dHIgYVxuXG4gICAgbGV0IGZsb2F0X2F0dHJpYiBuYW1lIHMgPSBhdHRyIG5hbWUgKGZ1biBmIC0+IFNvbWUgKGpzX3N0cmluZ19vZl9mbG9hdCBmKSkgc1xuXG4gICAgbGV0IGludF9hdHRyaWIgbmFtZSBzID0gYXR0ciBuYW1lIChmdW4gZiAtPiBTb21lIChqc19zdHJpbmdfb2ZfaW50IGYpKSBzXG5cbiAgICBsZXQgc3RyaW5nX2F0dHJpYiBuYW1lIHMgPSBhdHRyIG5hbWUgKGZ1biBmIC0+IFNvbWUgKEpzLnN0cmluZyBmKSkgc1xuXG4gICAgbGV0IHNwYWNlX3NlcF9hdHRyaWIgbmFtZSBzID1cbiAgICAgIGF0dHIgbmFtZSAoZnVuIGYgLT4gU29tZSAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IFwiIFwiIGYpKSkgc1xuXG4gICAgbGV0IGNvbW1hX3NlcF9hdHRyaWIgbmFtZSBzID1cbiAgICAgIGF0dHIgbmFtZSAoZnVuIGYgLT4gU29tZSAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IFwiLFwiIGYpKSkgc1xuXG4gICAgbGV0IGV2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgcyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHNcblxuICAgIGxldCBtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHMgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSBzXG5cbiAgICBsZXQga2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSBzID0gWG1sLmtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgc1xuXG4gICAgbGV0IHRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgcyA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHNcblxuICAgIGxldCB1cmlfYXR0cmliIG5hbWUgcyA9IGF0dHIgbmFtZSAoZnVuIGYgLT4gU29tZSAoSnMuc3RyaW5nIGYpKSBzXG5cbiAgICBsZXQgdXJpc19hdHRyaWIgbmFtZSBzID0gYXR0ciBuYW1lIChmdW4gZiAtPiBTb21lIChKcy5zdHJpbmcgKFN0cmluZy5jb25jYXQgXCIgXCIgZikpKSBzXG5cbiAgICB0eXBlIGVsdCA9IFhtbC5lbHRcblxuICAgIHR5cGUgZW5hbWUgPSBYbWwuZW5hbWVcblxuICAgIGxldCBlbXB0eSA9IFhtbC5lbXB0eVxuXG4gICAgbGV0IGNvbW1lbnQgPSBYbWwuY29tbWVudFxuXG4gICAgbGV0IHBjZGF0YSBzID1cbiAgICAgIGxldCBlID0gRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZVRleHROb2RlIChKcy5zdHJpbmcgXCJcIikgaW5cbiAgICAgIGxldCBrZWVwbWUgPSBSZWFjdC5TLm1hcCAoZnVuIHMgLT4gZSMjLmRhdGEgOj0gSnMuc3RyaW5nIHMpIHMgaW5cbiAgICAgIHJldGFpbiAoZSA6PiBEb20ubm9kZSBKcy50KSB+a2VlcG1lO1xuICAgICAgKGUgOj4gRG9tLm5vZGUgSnMudClcblxuICAgIGxldCBlbmNvZGVkcGNkYXRhIHMgPSBwY2RhdGEgc1xuXG4gICAgbGV0IGVudGl0eSBzID0gWG1sLmVudGl0eSBzXG5cbiAgICBsZXQgbGVhZiA9IFhtbC5sZWFmXG5cbiAgICBsZXQgbm9kZSA/KGEgPSBbXSkgbmFtZSBsID1cbiAgICAgIGxldCBlID0gRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBuYW1lKSBpblxuICAgICAgYXR0YWNoX2F0dHJpYnMgZSBhO1xuICAgICAgVXRpbC51cGRhdGVfY2hpbGRyZW4gKGUgOj4gRG9tLm5vZGUgSnMudCkgbDtcbiAgICAgIChlIDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgICBsZXQgY2RhdGEgPSBYbWwuY2RhdGFcblxuICAgIGxldCBjZGF0YV9zY3JpcHQgPSBYbWwuY2RhdGFfc2NyaXB0XG5cbiAgICBsZXQgY2RhdGFfc3R5bGUgPSBYbWwuY2RhdGFfc3R5bGVcbiAgZW5kXG5cbiAgbW9kdWxlIFhtbF9TdmcgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFhtbFxuXG4gICAgbGV0IGxlYWYgPSBYbWxfU3ZnLmxlYWZcblxuICAgIGxldCBub2RlID8oYSA9IFtdKSBuYW1lIGwgPVxuICAgICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRWxlbWVudE5TIERvbV9zdmcueG1sbnMgKEpzLnN0cmluZyBuYW1lKSBpblxuICAgICAgYXR0YWNoX2F0dHJpYnMgZSBhO1xuICAgICAgVXRpbC51cGRhdGVfY2hpbGRyZW4gKGUgOj4gRG9tLm5vZGUgSnMudCkgbDtcbiAgICAgIChlIDo+IERvbS5ub2RlIEpzLnQpXG4gIGVuZFxuXG4gIG1vZHVsZSBTdmcgPSBTdmdfZi5NYWtlIChYbWxfU3ZnKVxuICBtb2R1bGUgSHRtbCA9IEh0bWxfZi5NYWtlIChYbWwpIChTdmcpXG4gIG1vZHVsZSBIdG1sNSA9IEh0bWxcbmVuZFxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG5leGNlcHRpb24gRW1wdHlcblxudHlwZSAnYSB0ID0ge1xuICBtdXRhYmxlIHByZXYgOiAnYSB0O1xuICBtdXRhYmxlIG5leHQgOiAnYSB0O1xufVxuXG50eXBlICdhIG5vZGUgPSB7XG4gIG5vZGVfcHJldiA6ICdhIHQ7XG4gIG5vZGVfbmV4dCA6ICdhIHQ7XG4gIG11dGFibGUgbm9kZV9kYXRhIDogJ2E7XG4gIG11dGFibGUgbm9kZV9hY3RpdmUgOiBib29sO1xufVxuXG5leHRlcm5hbCBzZXFfb2Zfbm9kZSA6ICdhIG5vZGUgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG5vZGVfb2Zfc2VxIDogJ2EgdCAtPiAnYSBub2RlID0gXCIlaWRlbnRpdHlcIlxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wZXJhdGlvbnMgb24gbm9kZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBnZXQgbm9kZSA9XG4gIG5vZGUubm9kZV9kYXRhXG5cbmxldCBzZXQgbm9kZSBkYXRhID1cbiAgbm9kZS5ub2RlX2RhdGEgPC0gZGF0YVxuXG5sZXQgcmVtb3ZlIG5vZGUgPVxuICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW4gYmVnaW5cbiAgICBub2RlLm5vZGVfYWN0aXZlIDwtIGZhbHNlO1xuICAgIGxldCBzZXEgPSBzZXFfb2Zfbm9kZSBub2RlIGluXG4gICAgc2VxLnByZXYubmV4dCA8LSBzZXEubmV4dDtcbiAgICBzZXEubmV4dC5wcmV2IDwtIHNlcS5wcmV2XG4gIGVuZFxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wZXJhdGlvbnMgb24gc2VxdWVuY2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgcmVjIHNlcSA9IHsgcHJldiA9IHNlcTsgbmV4dCA9IHNlcSB9IGluXG4gIHNlcVxuXG5sZXQgY2xlYXIgc2VxID1cbiAgc2VxLnByZXYgPC0gc2VxO1xuICBzZXEubmV4dCA8LSBzZXFcblxubGV0IGlzX2VtcHR5IHNlcSA9IHNlcS5uZXh0ID09IHNlcVxuXG5sZXQgbGVuZ3RoIHNlcSA9XG4gIGxldCByZWMgbG9vcCBjdXJyIGxlbiA9XG4gICAgaWYgY3VyciA9PSBzZXEgdGhlblxuICAgICAgbGVuXG4gICAgZWxzZVxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluIGxvb3Agbm9kZS5ub2RlX25leHQgKGxlbiArIDEpXG4gIGluXG4gIGxvb3Agc2VxLm5leHQgMFxuXG5sZXQgYWRkX2wgZGF0YSBzZXEgPVxuICBsZXQgbm9kZSA9IHsgbm9kZV9wcmV2ID0gc2VxOyBub2RlX25leHQgPSBzZXEubmV4dDsgbm9kZV9kYXRhID0gZGF0YTsgbm9kZV9hY3RpdmUgPSB0cnVlIH0gaW5cbiAgc2VxLm5leHQucHJldiA8LSBzZXFfb2Zfbm9kZSBub2RlO1xuICBzZXEubmV4dCA8LSBzZXFfb2Zfbm9kZSBub2RlO1xuICBub2RlXG5cbmxldCBhZGRfciBkYXRhIHNlcSA9XG4gIGxldCBub2RlID0geyBub2RlX3ByZXYgPSBzZXEucHJldjsgbm9kZV9uZXh0ID0gc2VxOyBub2RlX2RhdGEgPSBkYXRhOyBub2RlX2FjdGl2ZSA9IHRydWUgfSBpblxuICBzZXEucHJldi5uZXh0IDwtIHNlcV9vZl9ub2RlIG5vZGU7XG4gIHNlcS5wcmV2IDwtIHNlcV9vZl9ub2RlIG5vZGU7XG4gIG5vZGVcblxubGV0IHRha2VfbCBzZXEgPVxuICBpZiBpc19lbXB0eSBzZXEgdGhlblxuICAgIHJhaXNlIEVtcHR5XG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIHNlcS5uZXh0IGluXG4gICAgcmVtb3ZlIG5vZGU7XG4gICAgbm9kZS5ub2RlX2RhdGFcbiAgZW5kXG5cbmxldCB0YWtlX3Igc2VxID1cbiAgaWYgaXNfZW1wdHkgc2VxIHRoZW5cbiAgICByYWlzZSBFbXB0eVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBzZXEucHJldiBpblxuICAgIHJlbW92ZSBub2RlO1xuICAgIG5vZGUubm9kZV9kYXRhXG4gIGVuZFxuXG5sZXQgdGFrZV9vcHRfbCBzZXEgPVxuICBpZiBpc19lbXB0eSBzZXEgdGhlblxuICAgIE5vbmVcbiAgZWxzZSBiZWdpblxuICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgc2VxLm5leHQgaW5cbiAgICByZW1vdmUgbm9kZTtcbiAgICBTb21lIG5vZGUubm9kZV9kYXRhXG4gIGVuZFxuXG5sZXQgdGFrZV9vcHRfciBzZXEgPVxuICBpZiBpc19lbXB0eSBzZXEgdGhlblxuICAgIE5vbmVcbiAgZWxzZSBiZWdpblxuICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgc2VxLnByZXYgaW5cbiAgICByZW1vdmUgbm9kZTtcbiAgICBTb21lIG5vZGUubm9kZV9kYXRhXG4gIGVuZFxuXG5sZXQgdHJhbnNmZXJfbCBzMSBzMiA9XG4gIHMyLm5leHQucHJldiA8LSBzMS5wcmV2O1xuICBzMS5wcmV2Lm5leHQgPC0gczIubmV4dDtcbiAgczIubmV4dCA8LSBzMS5uZXh0O1xuICBzMS5uZXh0LnByZXYgPC0gczI7XG4gIHMxLnByZXYgPC0gczE7XG4gIHMxLm5leHQgPC0gczFcblxubGV0IHRyYW5zZmVyX3IgczEgczIgPVxuICBzMi5wcmV2Lm5leHQgPC0gczEubmV4dDtcbiAgczEubmV4dC5wcmV2IDwtIHMyLnByZXY7XG4gIHMyLnByZXYgPC0gczEucHJldjtcbiAgczEucHJldi5uZXh0IDwtIHMyO1xuICBzMS5wcmV2IDwtIHMxO1xuICBzMS5uZXh0IDwtIHMxXG5cbmxldCBpdGVyX2wgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlbiBiZWdpblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW4gZiBub2RlLm5vZGVfZGF0YTtcbiAgICAgIGxvb3Agbm9kZS5ub2RlX25leHRcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBzZXEubmV4dFxuXG5sZXQgaXRlcl9yIGYgc2VxID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgPVxuICAgIGlmIGN1cnIgIT0gc2VxIHRoZW4gYmVnaW5cbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuIGYgbm9kZS5ub2RlX2RhdGE7XG4gICAgICBsb29wIG5vZGUubm9kZV9wcmV2XG4gICAgZW5kXG4gIGluXG4gIGxvb3Agc2VxLnByZXZcblxubGV0IGl0ZXJfbm9kZV9sIGYgc2VxID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgPVxuICAgIGlmIGN1cnIgIT0gc2VxIHRoZW4gYmVnaW5cbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuIGYgbm9kZTtcbiAgICAgIGxvb3Agbm9kZS5ub2RlX25leHRcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBzZXEubmV4dFxuXG5sZXQgaXRlcl9ub2RlX3IgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlbiBiZWdpblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW4gZiBub2RlO1xuICAgICAgbG9vcCBub2RlLm5vZGVfcHJldlxuICAgIGVuZFxuICBpblxuICBsb29wIHNlcS5wcmV2XG5cbmxldCBmb2xkX2wgZiBzZXEgYWNjID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgYWNjID1cbiAgICBpZiBjdXJyID09IHNlcSB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlXG4gICAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIGN1cnIgaW5cbiAgICAgIGlmIG5vZGUubm9kZV9hY3RpdmUgdGhlblxuICAgICAgICBsb29wIG5vZGUubm9kZV9uZXh0IChmIG5vZGUubm9kZV9kYXRhIGFjYylcbiAgICAgIGVsc2VcbiAgICAgICAgbG9vcCBub2RlLm5vZGVfbmV4dCBhY2NcbiAgaW5cbiAgbG9vcCBzZXEubmV4dCBhY2NcblxubGV0IGZvbGRfciBmIHNlcSBhY2MgPVxuICBsZXQgcmVjIGxvb3AgY3VyciBhY2MgPVxuICAgIGlmIGN1cnIgPT0gc2VxIHRoZW5cbiAgICAgIGFjY1xuICAgIGVsc2VcbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuXG4gICAgICAgIGxvb3Agbm9kZS5ub2RlX3ByZXYgKGYgbm9kZS5ub2RlX2RhdGEgYWNjKVxuICAgICAgZWxzZVxuICAgICAgICBsb29wIG5vZGUubm9kZV9wcmV2IGFjY1xuICBpblxuICBsb29wIHNlcS5wcmV2IGFjY1xuXG5sZXQgZmluZF9ub2RlX2wgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW5cbiAgICAgICAgaWYgZiBub2RlLm5vZGVfZGF0YSB0aGVuXG4gICAgICAgICAgbm9kZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCBub2RlLm5vZGVfbmV4dFxuICAgICAgZWxzZVxuICAgICAgICBsb29wIG5vZGUubm9kZV9uZXh0XG4gICAgZWxzZVxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gIGluXG4gIGxvb3Agc2VxLm5leHRcblxubGV0IGZpbmRfbm9kZV9yIGYgc2VxID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgPVxuICAgIGlmIGN1cnIgIT0gc2VxIHRoZW5cbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuXG4gICAgICAgIGlmIGYgbm9kZS5ub2RlX2RhdGEgdGhlblxuICAgICAgICAgIG5vZGVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3Agbm9kZS5ub2RlX3ByZXZcbiAgICAgIGVsc2VcbiAgICAgICAgbG9vcCBub2RlLm5vZGVfcHJldlxuICAgIGVsc2VcbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICBpblxuICBsb29wIHNlcS5wcmV2XG5cbmxldCBmaW5kX25vZGVfb3B0X2wgZiBzZXEgPVxuICB0cnkgU29tZSAoZmluZF9ub2RlX2wgZiBzZXEpIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxubGV0IGZpbmRfbm9kZV9vcHRfciBmIHNlcSA9XG4gIHRyeSBTb21lIChmaW5kX25vZGVfciBmIHNlcSkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG4oKiBSZWFkaW5nIGd1aWRlXG5cbiAgIFdlbGNvbWUgdG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBMd3QgY29yZSEgVGhpcyBpcyBhIGJpZyBmaWxlLCBidXQgd2VcbiAgIGhvcGUgdGhhdCByZWFkaW5nIGl0IChwYXJ0cyBhdCBhIHRpbWUhKSB3aWxsIG5vdCBiZSBzY2FyeSA6KSBIZXJlIGlzIHdoeTpcblxuXG4gICAqIFNlY3Rpb25pbmdcblxuICAgVGhlIGNvZGUgaXMgYnJva2VuIHVwIGludG8gc2VjdGlvbnMsIGVhY2ggb25lIG9mIHdoaWNoIGlzIGFuIGludGVybmFsIG1vZHVsZS5cbiAgIE1vc3Qgb2YgdGhlIG1vZHVsZXMgaGF2ZSBhIHNpZ25hdHVyZSwgd2hpY2ggc2VydmVzIGFzIGEgbmVhdCB0YWJsZSBvZlxuICAgY29udGVudHMuXG5cbiAgIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHJlYWQgdGhpcyBmaWxlIHdpdGggY29kZSBmb2xkaW5nIGVuYWJsZWQuIElmIHlvdVxuICAgZm9sZCBhbGwgdGhlIG1vZHVsZXMsIHlvdSBjYW4gdmlzdWFsaXplIHRoZSBsb2dpY2FsIHN0cnVjdHVyZSBvZiBMd3QgcXVpdGVcbiAgIGVhc2lseS4gWW91IGNhbiB0aGVuIGV4cGFuZCBtb2R1bGVzIGFzIG5lZWRlZCwgZGVwZW5kaW5nIG9uIHdoYXQgcGFydCBvZiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIHlvdSBhcmUgaW50ZXJlc3RlZCBpbi4gV2l0aG91dCBjb2RlIGZvbGRpbmcsIHlvdSBmYWNlIGFuXG4gICBpbnRpbWlkYXRpbmcgd2FsbCBvZiBjb2RlIDooIFlvdSBjYW4gc3RpbGwgdmlzdWFsbHkgcGFyc2UgdGhlIGZpbGUsIGhvd2V2ZXIsXG4gICBiZWNhdXNlIHRoZXJlIGFyZSBwbGVudHkgb2YgYmxhbmsgbGluZXMgdG8gaGVscCBzZWN0aW9uIHRoaW5ncyBvZmYuIFlvdSBjYW5cbiAgIGFsc28gdmlldyB0aGlzIGZpbGUgZm9sZGVkIG9ubGluZTpcblxuICAgICBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9hYW50cm9uLzlmYWIwYmRlYWQ5OGE2MGZjY2YwNmUwMTg5MTg2ODYzXG4gICAgIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2FhbnRyb24vOTdiNTg1MjBkNWJiNDg1OGNjYWM2ZjU0NzAwYTI0ZDdcblxuICAgVGhlIHNpZ25hdHVyZXMgYXJlIHVudXN1YWw6IGJpZyBjb21tZW50cyBhcmUgYWJzZW50LiBUaGV5IGFyZSBtb3ZlZCBpbnRvIHRoZVxuICAgbW9kdWxlcywgc28gdGhhdCB0aGV5IGFyZSBoaWRkZW4gYnkgY29kZSBmb2xkaW5nIHdoZW4geW91ICh0aGUgcmVhZGVyISkgYXJlXG4gICBub3QgaW50ZXJlc3RlZCBpbiB0aG9zZSBtb2R1bGVzLlxuXG5cbiAgICogRG9jdW1lbnRhdGlvblxuXG4gICBUaGUgZG9jdW1lbnRhdGlvbiBiZWdpbnMgd2l0aCBhbiBvdmVydmlldyBvZiBtYWpvciBjb25jZXB0cyBhbmQgY29tcG9uZW50cy5cbiAgIFRoaXMgb3ZlcnZpZXcgcHV0cyBldmVyeXRoaW5nIGludG8gY29udGV4dC4gWW91IGRvbid0IGhhdmUgdG8gcmVhZCB0aGUgd2hvbGVcbiAgIHRoaW5nLiBUaGUgb3ZlcnZpZXcgYmVnaW5zIHdpdGggYmFzaWMgY29uY2VwdHMsIG1vdmVzIG9uIHRvIGFkdmFuY2VkIG9uZXMsXG4gICBhbmQgdGhlbiBnZXRzIGludG8gdGhlIHRydWx5IGVzb3RlcmljLiBZb3UgY2FuIHJlYWQgYWJvdXQgZWFjaCBjb25jZXB0IG9uIGFuXG4gICBhcy1uZWVkZWQgYmFzaXMuIEhvd2V2ZXIsIG9uY2UgeW91IGhhdmUgcmVhZCB0aGUgd2hvbGUgb3ZlcnZpZXcsIHlvdSB3aWxsIGJlXG4gICBhd2FyZSBvZiAqZXZlcnl0aGluZyogdGhhdCBpcyBuZWVkZWQgdG8gdW5kZXJzdGFuZCwgYW5kIHdvcmsgd2l0aCwgdGhlIGNvcmVcbiAgIG9mIEx3dC5cblxuICAgTGl0dGVyZWQgaW4gdGhlIGNvZGUgYXJlIGFkZGl0aW9uYWwgY29tbWVudHMsIHRoYXQgZ28gaW4tZGVwdGggb24gdmFyaW91c1xuICAgbG9jYWwgaW1wbGVtZW50YXRpb24gZGV0YWlscywgb3Bwb3J0dW5pdGllcywgcmVncmV0cywgYW5kIHRoZSBsaWtlLlxuXG4gICBUaGUgc2VjdGlvbnMgKG1vZHVsZXMpIG9mIHRoZSBjb2RlIGNvcnJlc3BvbmQgY2xvc2VseSB0byBzZWN0aW9ucyBvZiB0aGVcbiAgIG92ZXJ2aWV3LlxuXG5cbiAgICogV2hpdGVzcGFjZVxuXG4gICBUaGUgdG90YWwgbGluZSBjb3VudCBvZiB0aGlzIGZpbGUgbWF5IHNlZW0gZnJpZ2h0ZW5pbmcsIGJ1dCBvbmUgdGhpcmQgb2YgaXRcbiAgIGlzIHdoaXRlc3BhY2UgYW5kIGNvbW1lbnRzLCBib3RoIHRoZXJlIHRvIGhlbHAgeW91IHJlYWQgdGhlIHJlbWFpbmluZyB0d29cbiAgIHRoaXJkcyFcblxuICAgQWxzbywgd2l0aGluIHRob3NlIHR3byB0aGlyZHMsIHRoZXJlIGFyZSBsYXJnZSBncm91cHMgb2YgZnVuY3Rpb25zIHRoYXQgYXJlXG4gICByZXBldGl0aXZlIGFuZCBmb3JtdWxhaWMsIHNvIHRoZXJlIGlzIG11Y2ggbGVzcyBjb25jZXB0dWFsbHktdW5pcXVlIGNvZGUgaW5cbiAgIEx3dCB0aGFuIHlvdSBtaWdodCB0aGluayBhdCBmaXJzdC5cblxuXG4gICAqIFBsZWFzZSBlZGl0IHRoZSBjb2RlIGFuZCB0aGUgZG9jcyFcblxuICAgVGhpcyBjb2RlIGlzIG1lYW50IHRvIGJlIHJlYWRhYmxlLCBhbmQgdG8gYmUgZWRpdGVkLiBJZiB5b3UgYXJlIHJlYWRpbmdcbiAgIHNvbWV0aGluZywgYW5kIHRoaW5rIHRoZXJlIGlzIGEgYmV0dGVyIHdheSB0byBleHByZXNzIGl0LCBwbGVhc2UgZ28gYWhlYWQgYW5kXG4gICBvcGVuIGEgcHVsbCByZXF1ZXN0IHRvIHRoZSBMd3QgcmVwb3NpdG9yeSBhdFxuXG4gICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dFxuXG4gICBFdmVuIGlmIHlvdXIgcHVsbCByZXF1ZXN0IHNvbWVob3cgZG9lc24ndCBnZXQgbWVyZ2VkLCB5b3Ugd2lsbCBoYXZlIGVkdWNhdGVkXG4gICB0aGUgbWFpbnRhaW5lcnMsIG5vdCB0byBtZW50aW9uIG90aGVyIGNvbnRyaWJ1dG9ycywgYW5kIHVzZXJzLiBUaGlzIGlzIHRydWVcbiAgIGV2ZW4gaWYgdGhlIGNoYW5nZSBpcyB0cml2aWFsIC0tIHNvbWV0aW1lcywgbWFpbnRhaW5lcnMganVzdCBuZWVkIHRvIGJlXG4gICBlZHVjYXRlZCBtdWx0aXBsZSB0aW1lcyBiZWZvcmUgdGhleSBzZWUgdGhlIHdpc2RvbSBvZiBpdCA6L1xuXG4gICBMaWtld2lzZSwgaWYgeW91IHdvdWxkIGxpa2UgdG8gbWFrZSBhIGNvZGUgY29udHJpYnV0aW9uIHRvIHRoZSBMd3QgY29yZSwgaXRcbiAgIGlzIHF1aXRlIHdlbGNvbWUsIGFuZCB3ZSBob3BlIHRoYXQgdGhpcyBjb2RlIGlzIHJlYWRhYmxlIGVub3VnaCBmb3IgeW91IHRvIGJlXG4gICBhYmxlIHRvIG1ha2UgaXQhXG5cblxuICAgRW5qb3khICopXG5cblxuXG4oKiBPdmVydmlld1xuXG4gICBJbiB0aGlzIGZpbGUsIHRoZXJlIGlzIGEgXCJtb2RlbFwiIGZ1bmN0aW9uIC0tIFtMd3QuYmluZF0gLS0gd2hpY2ggcHVsbHNcbiAgIHRvZ2V0aGVyIG1hbnkgKHRob3VnaCBub3QgYWxsKSBvZiB0aGUgY29uY2VwdHMgYW5kIGhlbHBlcnMgZGlzY3Vzc2VkIGluIHRoaXNcbiAgIG92ZXJ2aWV3LiBUbyBmaW5kIGl0LCBzZWFyY2ggZm9yIFwibGV0IGJpbmQsXCIgYW5kIHlvdSBjYW4gZXhhbWluZSBpdCB3aGlsZVxuICAgcmVhZGluZyB0aGUgb3ZlcnZpZXcuIFRoZSBhdXRob3JzIG9mIHRoaXMgZmlsZSBpbnRlbmQgdG8gcHV0IGV4dHJhIGVmZm9ydFxuICAgaW50byB3cml0aW5nIG5pY2UgY29tbWVudHMgaW5zaWRlIFtMd3QuYmluZF0gOilcblxuXG4gICAwLiBNYWluIG1lY2hhbmlzbSBhbmQgdHdvIGFzcGVjdHNcblxuICAgVGhlIEx3dCBpbnRlcmZhY2UgKFtsd3QubWxpXSkgcHJvdmlkZXMgb25lIG1haW4gbWVjaGFuaXNtLCBwcm9taXNlcywgYW5kIHR3b1xuICAgXCJhc3BlY3RzLFwiIHdoaWNoIGFyZSAqbm90KiBuZWNlc3NhcnkgdG8gdW5kZXJzdGFuZCB0aGUgbWFpbiBtZWNoYW5pc21cbiAgIHByb21pc2VzLCBidXQgdGhleSBhcmUgc3RpbGwgdGhlcmU6XG5cbiAgIC0gcHJvbWlzZSBjYW5jZWxsYXRpb25cbiAgIC0gc2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlXG5cbiAgIElmIHlvdSBhcmUgbm90IGludGVyZXN0ZWQgaW4gY2FuY2VsbGF0aW9uIG9yIHN0b3JhZ2UsIHlvdSBjYW4gaWdub3JlIHRoZXNlXG4gICB0d28gY29tcGxpY2F0aW9ucywgYW5kIHN0aWxsIGdldCBhIHByZXR0eSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUuIFRvXG4gICBoZWxwLCBhbGwgaWRlbnRpZmllcnMgcmVsYXRlZCB0byBjYW5jZWxsYXRpb24gY29udGFpbiB0aGUgc3RyaW5nIFwiY2FuY2VsLFwiXG4gICBhbmQgYWxsIGlkZW50aWZpZXJzIHJlbGF0ZWQgdG8gc3RvcmFnZSBjb250YWluIFwic3RvcmFnZS5cIlxuXG5cbiAgIDEuIFByb21pc2VzXG5cbiAgIEEgcHJvbWlzZSBpcyBhIGNlbGwgdGhhdCBjYW4gYmUgaW4gb25lIG9mIHR3byBzdGF0ZXM6IFwicmVzb2x2ZWRcIiBvclxuICAgXCJwZW5kaW5nLlwiXG5cbiAgIC0gUmVzb2x2ZWQgcHJvbWlzZXNcblxuICAgICBBIHJlc29sdmVkIHByb21pc2UgaXMgZWl0aGVyIFwiZnVsZmlsbGVkXCIgd2l0aCBhIHZhbHVlLCBvciBcInJlamVjdGVkXCIgd2l0aFxuICAgICBhbiBleGNlcHRpb24uIFRoZSBzdGF0ZSBvZiBhIHJlc29sdmVkIHByb21pc2Ugd2lsbCBuZXZlciBjaGFuZ2UgYWdhaW46IGFcbiAgICAgcmVzb2x2ZWQgcHJvbWlzZSBpcyBpbW11dGFibGUuIEEgcmVzb2x2ZWQgcHJvbWlzZSBpcyBiYXNpY2FsbHkgZXF1aXZhbGVudFxuICAgICB0byBhbiBbKCdhLCBleG4pIFN0ZGxpYi5yZXN1bHRdLiBSZXNvbHZlZCBwcm9taXNlcyBhcmUgcHJvZHVjZWQgaW4gdHdvXG4gICAgIHdheXM6XG5cbiAgICAgLSBbTHd0LnJldHVybl0sIFtMd3QuZmFpbF0sIGFuZCByZWxhdGVkIGZ1bmN0aW9ucywgcHJvZHVjZSBcInRyaXZpYWxcIlxuICAgICAgIHByb21pc2VzIHRoYXQgYXJlIHJlc29sdmVkIGZyb20gdGhlIHN0YXJ0LlxuICAgICAtIFRoZSBvdGhlciB3YXkgaXMgdG8gcmVzb2x2ZSBhIHByb21pc2UgdGhhdCBzdGFydGVkIG91dCBwZW5kaW5nLlxuXG4gICAgIE5vdGUgdGhhdCByZWplY3RlZCBwcm9taXNlcyBoYXZlIG5vdGhpbmcgdG8gZG8gd2l0aCB1bmhhbmRsZWQgZXhjZXB0aW9ucy5cblxuICAgLSBQZW5kaW5nIHByb21pc2VzXG5cbiAgICAgLi4uYXJlIHRob3NlIHRoYXQgbWF5IGJlY29tZSByZXNvbHZlZCBpbiB0aGUgZnV0dXJlLiBFYWNoIHBlbmRpbmcgcHJvbWlzZVxuICAgICBjYXJyaWVzIGEgbGlzdCBvZiBjYWxsYmFja3MuIFRoZXNlIGNhbGxiYWNrcyBhcmUgYWRkZWQgYnkgZnVuY3Rpb25zIGxpa2VcbiAgICAgW0x3dC5iaW5kXSwgYW5kIGNhbGxlZCBieSBMd3QgaWYvd2hlbiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZC4gVGhlc2VcbiAgICAgY2FsbGJhY2tzIHR5cGljYWxseSBlbmQgdXAgcmVzb2x2aW5nIGFkZGl0aW9uYWwgcHJvbWlzZXM7IHNlZSBzZWN0aW9uXG4gICAgIFwiUmVzb2x1dGlvbiBsb29wXCIgYmVsb3cuXG5cbiAgICAgUGVuZGluZyBwcm9taXNlcyBhcmUgcHJvZHVjZWQgaW4gdGhyZWUgd2F5cywgYWNjb3JkaW5nIHRvIGhvdyB0aGV5IGNhbiBiZVxuICAgICByZXNvbHZlZDpcblxuICAgICAtIEluaXRpYWwgcHJvbWlzZXNcblxuICAgICAgIC4uLmFyZSBjcmVhdGVkIGJ5IFtMd3Qud2FpdF0gYW5kIFtMd3QudGFza10uIFRoZSB1c2VyIG9mIEx3dCByZXNvbHZlc1xuICAgICAgIHRoZXNlIHByb21pc2VzIG1hbnVhbGx5LCB0aHJvdWdoIHRoZSByZXNvbHZlcnMgcmV0dXJuZWQgYnkgdGhvc2VcbiAgICAgICBmdW5jdGlvbnMuXG5cbiAgICAgLSBTZXF1ZW50aWFsIGNvbXBvc2l0aW9uXG5cbiAgICAgICBGb3IgZXhhbXBsZSwgW0x3dC5iaW5kXS4gVGhlc2UgcHJvbWlzZXMgb25seSBhcmUgb25seSByZXNvbHZlZCB3aGVuIHRoZVxuICAgICAgIHByZWNlZGluZyBzZXF1ZW5jZSBvZiBwcm9taXNlcyByZXNvbHZlcy4gVGhlIHVzZXIgY2Fubm90IHJlc29sdmUgdGhlc2VcbiAgICAgICBwcm9taXNlcyBkaXJlY3RseSAoYnV0IHNlZSB0aGUgc2VjdGlvbiBvbiBjYW5jZWxsYXRpb24gYmVsb3cpLlxuXG4gICAgIC0gQ29uY3VycmVudCBjb21wb3NpdGlvblxuXG4gICAgICAgRm9yIGV4YW1wbGUsIFtMd3Quam9pbl0gb3IgW0x3dC5jaG9vc2VdLiBUaGVzZSBwcm9taXNlcyBhcmUgb25seSByZXNvbHZlZFxuICAgICAgIHdoZW4gYWxsIG9yIG9uZSBvZiBhIHNldCBvZiBcInByZWNlZGluZ1wiIHByb21pc2VzIHJlc29sdmUuIFRoZSB1c2VyIGNhbm5vdFxuICAgICAgIHJlc29sdmUgdGhlc2UgcHJvbWlzZXMgZGlyZWN0bHkgKGJ1dCBzZWUgdGhlIHNlY3Rpb24gb24gY2FuY2VsbGF0aW9uXG4gICAgICAgYmVsb3cpLlxuXG5cbiAgIDIuIFJlc29sdmVyc1xuXG4gICBSZXNvbHZlcnMgYXJlIGdpdmVuIHRvIHRoZSB1c2VyIGJ5IFtMd3Qud2FpdF0gYW5kIFtMd3QudGFza10sIGFuZCBjYW4gYmUgdXNlZFxuICAgYnkgdGhlIHVzZXIgdG8gcmVzb2x2ZSB0aGUgY29ycmVzcG9uZGluZyBwcm9taXNlcy4gTm90ZSB0aGF0IHRoaXMgbWVhbnMgdGhlXG4gICB1c2VyIG9ubHkgZXZlciBnZXRzIHJlc29sdmVycyBmb3IgaW5pdGlhbCBwcm9taXNlcy5cblxuICAgSW50ZXJuYWxseSwgcmVzb2x2ZXJzIGFyZSB0aGUgZXhhY3Qgc2FtZSBvYmplY3RzIGFzIHRoZSBwcm9taXNlcyB0aGV5XG4gICByZXNvbHZlLCBldmVuIHRob3VnaCB0aGUgcmVzb2x2ZXIgaXMgZXhwb3NlZCBhcyBhIHJlZmVyZW5jZSBvZiBhIGRpZmZlcmVudFxuICAgdHlwZSBieSBbbHd0Lm1saV0uIEZvciBkZXRhaWxzIG9uIHdoeSwgc2VlIHNlY3Rpb24gXCJUeXBlIHN5c3RlbSBhYnVzZVwiIGJlbG93LlxuXG5cbiAgIDMuIENhbGxiYWNrc1xuXG4gICAuLi5hcmUgYXR0YWNoZWQgYnkgTHd0IHRvIHBlbmRpbmcgcHJvbWlzZXMsIGFuZCBhcmUgcnVuIGJ5IEx3dCBpZi93aGVuIHRob3NlXG4gICBwcm9taXNlcyBhcmUgcmVzb2x2ZWQuIFRoZXNlIGNhbGxiYWNrcyBhcmUgbm90IGRpcmVjdGx5IGV4cG9zZWQgdGhyb3VnaFxuICAgW2x3dC5tbGldIC0tIHRoZXkgYXJlIGEgbG93LWxldmVsIG1lY2hhbmlzbS4gRm9yIGV4YW1wbGUsIHRvIGltcGxlbWVudFxuICAgW0x3dC5iaW5kIHAgZl0sIEx3dCBhdHRhY2hlcyBhIGNhbGxiYWNrIHRvIFtwXSB0aGF0IGRvZXMgc29tZSBpbnRlcm5hbCBMd3RcbiAgIGJvb2sta2VlcGluZywgYW5kIHRoZW4gY2FsbHMgW2ZdIGlmIFtwXSBpcyBmdWxmaWxsZWQsIGFuZCBkb2VzIHNvbWV0aGluZyBlbHNlXG4gICBpZiBbcF0gaXMgcmVqZWN0ZWQuXG5cbiAgIENhbGxiYWNrcyBjb21lIGluIHR3byBmbGF2b3JzOiByZWd1bGFyIGNhbGxiYWNrcyBhbmQgY2FuY2VsIGNhbGxiYWNrcy4gVGhlXG4gICBvbmx5IG1hdGVyaWFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlbSBhcmUgdGhhdDpcblxuICAgLSByZWd1bGFyIGNhbGxiYWNrcyBhcmUgYWx3YXlzIGNhbGxlZCB3aGVuIGEgcHJvbWlzZSBpcyByZXNvbHZlZCwgYnV0IGNhbmNlbFxuICAgICBjYWxsYmFja3MgYXJlIGNhbGxlZCwgaW4gYWRkaXRpb24sIG9ubHkgaWYgdGhlIHByb21pc2UgaXMgY2FuY2VsZWQsIGFuZFxuICAgLSBhbGwgY2FuY2VsIGNhbGxiYWNrcyBvZiBhIHByb21pc2UgYXJlIGNhbGxlZCBiZWZvcmUgYW55IHJlZ3VsYXIgY2FsbGJhY2tcbiAgICAgaXMgY2FsbGVkLlxuXG4gICBDYW5jZWxsYXRpb24gaXMgYSBzcGVjaWFsIGNhc2Ugb2YgcmVzb2x1dGlvbiwgaW4gcGFydGljdWxhciwgYSBzcGVjaWFsIGNhc2VcbiAgIG9mIHJlamVjdGlvbiwgYnV0IHNlZSB0aGUgc2VjdGlvbiBvbiBjYW5jZWxsYXRpb24gbGF0ZXIgYmVsb3cuXG5cblxuICAgNC4gUmVzb2x1dGlvbiBsb29wXG5cbiAgIFJlc29sdmluZyBhIHBlbmRpbmcgcHJvbWlzZSB0cmlnZ2VycyBpdHMgY2FsbGJhY2tzLCBhbmQgdGhvc2UgbWlnaHQgcmVzb2x2ZVxuICAgbW9yZSBwZW5kaW5nIHByb21pc2VzLCB0cmlnZ2VyaW5nIG1vcmUgY2FsbGJhY2tzLCBldGMuIFRoaXMgYmVoYXZpb3IgaXMgdGhlXG4gICAqcmVzb2x1dGlvbiBsb29wKi4gTHd0IGhhcyBzb21lIG1hY2hpbmVyeSB0byBhdm9pZCBzdGFjayBvdmVyZmxvdyBhbmQgb3RoZXJcbiAgIHVuZm9ydHVuYXRlIHNpdHVhdGlvbnMgZHVyaW5nIHRoaXMgbG9vcC5cblxuICAgVGhpcyBjaGFpbmluZyBvZiBwcm9taXNlIHJlc29sdXRpb25zIHRocm91Z2ggY2FsbGJhY2tzIGNhbiBiZSBzZWVuIGFzIGEga2luZFxuICAgb2YgcHJvbWlzZSBkZXBlbmRlbmN5IGdyYXBoLCBpbiB3aGljaCB0aGUgbm9kZXMgYXJlIHBlbmRpbmcgcHJvbWlzZXMsIGFuZCB0aGVcbiAgIGVkZ2VzIGFyZSBjYWxsYmFja3MuIER1cmluZyB0aGUgcmVzb2x1dGlvbiBsb29wLCBMd3Qgc3RhcnRzIGF0IHNvbWUgaW5pdGlhbFxuICAgcHJvbWlzZSB0aGF0IGlzIGdldHRpbmcgcmVzb2x2ZWQgYnkgdGhlIHVzZXIsIGFuZCByZWN1cnNpdmVseSByZXNvbHZlcyBhbGxcbiAgIGRlcGVuZGVudCBwcm9taXNlcy4gVGhlIGdyYXBoIGlzIG1vZGlmaWVkOiByZXNvbHZlZCBwcm9taXNlcyBhcmUgbm8gbG9uZ2VyXG4gICBwZW5kaW5nLCBzbyB0aGV5IGFyZSBubyBsb25nZXIgcGFydCBvZiB0aGUgZ3JhcGguXG5cbiAgIFNvbWUgb2YgdGhlc2UgZGVwZW5kZW5jaWVzIGFyZSBleHBsaWNpdCB0byBMd3QsIGUuZy4gdGhlIGNhbGxiYWNrcyByZWdpc3RlcmVkXG4gICBieSBbTHd0LmJpbmRdLiBPdGhlcnMgYXJlIG5vdCB2aXNpYmxlIHRvIEx3dCwgYmVjYXVzZSB0aGUgdXNlciBjYW4gYWx3YXlzXG4gICByZWdpc3RlciBhIGNhbGxiYWNrIHVzaW5nIGEgZnVuY3Rpb24gbGlrZSBbTHd0Lm9uX3N1Y2Nlc3NdLCBhbmQgdXNlIHRoYXRcbiAgIGNhbGxiYWNrIHRvIHJlc29sdmUgYW5vdGhlciBpbml0aWFsIHByb21pc2UuIEFsbCB0aGUgZXhwbGljaXQgZGVwZW5kZW5jaWVzXG4gICBhcmUgY3JlYXRlZCBieSBMd3QncyBvd24gc2VxdWVudGlhbCBhbmQgY29uY3VycmVudCBjb21wb3NpdGlvbiBmdW5jdGlvbnNcbiAgIChzbywgW0x3dC5iaW5kXSwgW0x3dC5qb2luXSwgZXRjKS4gV2hldGhlciBkZXBlbmRlbmNpZXMgYXJlIGV4cGxpY2l0IG9yIG5vdFxuICAgaXMgcmVsZXZhbnQgb25seSB0byBjYW5jZWxsYXRpb24uXG5cblxuICAgNS4gQ2FuY2VsbGF0aW9uXG5cbiAgIEFzIGRlc2NyaWJlZCBhYm92ZSwgb3JkaW5hcnkgcHJvbWlzZSByZXNvbHV0aW9uIHByb2NlZWRzIGZyb20gYW4gaW5pdGlhbFxuICAgcHJvbWlzZSwgZm9yd2FyZCBhbG9uZyBjYWxsYmFja3MgdGhyb3VnaCB0aGUgZGVwZW5kZW5jeSBncmFwaC4gU2luY2UgaXRcbiAgIHN0YXJ0cyBmcm9tIGFuIGluaXRpYWwgcHJvbWlzZSwgaXQgY2FuIG9ubHkgYmUgdHJpZ2dlcmVkIHVzaW5nIGEgcmVzb2x2ZXIuXG5cbiAgIENhbmNlbGxhdGlvbiBpcyBhIHNvcnQgb2YgZHVhbCB0byBvcmRpbmFyeSByZXNvbHV0aW9uLiBJbnN0ZWFkIG9mIHN0YXJ0aW5nIGF0XG4gICBhbiBpbml0aWFsIHByb21pc2UvcmVzb2x2ZXIsIGNhbmNlbGxhdGlvbiBzdGFydHMgYXQgKmFueSogcHJvbWlzZS4gSXQgdGhlblxuICAgZ29lcyAqYmFja3dhcmRzKiB0aHJvdWdoIHRoZSBleHBsaWNpdCBkZXBlbmRlbmN5IGdyYXBoLCBsb29raW5nIGZvclxuICAgY2FuY2VsYWJsZSBpbml0aWFsIHByb21pc2VzIHRvIGNhbmNlbCAtLSB0aG9zZSB0aGF0IHdlcmUgY3JlYXRlZCBieVxuICAgW0x3dC50YXNrXS4gQWZ0ZXIgZmluZGluZyB0aGVtLCBjYW5jZWxsYXRpb24gcmVzb2x2ZXMgdGhlbSBub3JtYWxseSB3aXRoXG4gICBbUmVqZWN0ZWQgTHd0LkNhbmNlbGVkXSwgY2F1c2luZyBhbiBvcmRpbmFyeSBwcm9taXNlIHJlc29sdXRpb24gcHJvY2Vzcy5cblxuICAgVG8gc3VtbWFyaXplLCBjYW5jZWxsYXRpb24gaXMgYSB3YXkgdG8gdHJpZ2dlciBhbiAqb3JkaW5hcnkqIHJlc29sdXRpb24gb2ZcbiAgIHByb21pc2VzIGNyZWF0ZWQgd2l0aCBbTHd0LnRhc2tdLCBieSBmaXJzdCBzZWFyY2hpbmcgZm9yIHRoZW0gaW4gdGhlIHByb21pc2VcbiAgIGRlcGVuZGVuY3kgZ3JhcGggKHdoaWNoIGlzIGFzc2VtYmxlZCBieSBbTHd0LmJpbmRdLCBbTHd0LmpvaW5dLCBldGMpLlxuXG4gICBUaGlzIGJhY2t3YXJkcyBzZWFyY2ggaXMgdHJpZ2dlcmVkIG9ubHkgYnkgW0x3dC5jYW5jZWxdLiBJdCBpcyBhbHNvIHBvc3NpYmxlXG4gICBmb3IgdGhlIHVzZXIgdG8gY2FuY2VsIGEgcHJvbWlzZSBkaXJlY3RseSBieSByZWplY3RpbmcgaXQgd2l0aFxuICAgW0x3dC5DYW5jZWxlZF0sIGJ1dCBpbiBhbGwgY2FzZXMgd2hlcmUgdGhlIHVzZXIgY2FuIGRvIHNvLCB0aGUgc2VhcmNoIHdvdWxkXG4gICBiZSByZWR1bmRhbnQgYW55d2F5IC0tIHRoZSB1c2VyIGhhcyBvbmx5IHR3byB3YXlzIG9mIGRpcmVjdGx5IHJlamVjdGluZyBhXG4gICBwcm9taXNlIHdpdGggW0x3dC5DYW5jZWxlZF0gKG9yIGFueSBleGNlcHRpb24sIGZvciB0aGF0IG1hdHRlcik6XG5cbiAgIC0gVGhlIHVzZXIgY2FuIGNyZWF0ZSBhbiBpbml0aWFsIHByb21pc2UsIHRoZW4gcmVqZWN0IGl0IHRocm91Z2ggaXRzXG4gICAgIHJlc29sdmVyLiBUaGUgc2VhcmNoIGlzIHJlZHVuZGFudCBiZWNhdXNlIGl0IHdvdWxkIGZpbmQgb25seSB0aGUgc2FtZVxuICAgICBpbml0aWFsIHByb21pc2UgdG8gY2FuY2VsLlxuICAgLSBUaGUgdXNlciBjYW4gY3JlYXRlIGEgdHJpdmlhbCBwcm9taXNlIGJ5IGNhbGxpbmcgW0x3dC5mYWlsIEx3dC5DYW5jZWxlZF0uXG4gICAgIFRoZSBzZWFyY2ggaXMgYWdhaW4gcmVkdW5kYW50OyBpbiB0aGlzIGNhc2UgaXQgd291bGQgZmluZCBub3RoaW5nIHRvXG4gICAgIGNhbmNlbC5cblxuICAgTm90ZSB0aGF0IHRoZXJlIGlzIGEgcXVpcms6IG9ubHkgcHJvbWlzZXMgY3JlYXRlZCBieSBbTHd0LnRhc2tdIGFyZVxuICAgc3VzY2VwdGlibGUgdG8gYmVpbmcgY2FuY2VsZWQgYnkgW0x3dC5jYW5jZWxdLCBidXQgdGhlIHVzZXIgY2FuIG1hbnVhbGx5XG4gICBjYW5jZWwgaW5pdGlhbCBwcm9taXNlcyBjcmVhdGVkIGJ5IGJvdGggW0x3dC50YXNrXSBhbmQgW0x3dC53YWl0XS5cblxuICAgRHVlIHRvIFtMd3QuY2FuY2VsXSwgcHJvbWlzZSBjYW5jZWxsYXRpb24sIGFuZCB0aGVyZWZvcmUgcmVzb2x1dGlvbiwgY2FuIGJlXG4gICBpbml0aWF0ZWQgYnkgdGhlIHVzZXIgd2l0aG91dCBhY2Nlc3MgdG8gYSByZXNvbHZlci4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yXG4gICByZWFzb25pbmcgYWJvdXQgc3RhdGUgY2hhbmdlcyBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgTHd0LCBhbmQgaXMgcmVmZXJlbmNlZFxuICAgaW4gc29tZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgY29tbWVudHMuXG5cblxuICAgNi4gTm8gSS9PXG5cbiAgIFRoZSBMd3QgY29yZSBkZWxpYmVyYXRlbHkgZG9lc24ndCBkbyBJL08uIFRoZSByZXNvbHV0aW9uIGxvb3Agc3RvcHMgcnVubmluZ1xuICAgb25jZSBubyBwcm9taXNlcyBjYW4gYmUgcmVzb2x2ZWQgaW1tZWRpYXRlbHkuIEl0IGhhcyB0byBiZSByZXN0YXJ0ZWQgbGF0ZXJcbiAgIGJ5IHNvbWUgc3Vycm91bmRpbmcgSS9PIGxvb3AuIFRoaXMgSS9PIGxvb3AgdHlwaWNhbGx5IGtlZXBzIHRyYWNrIG9mIHBlbmRpbmdcbiAgIHByb21pc2VzIHRoYXQgcmVwcmVzZW50IGJsb2NrZWQgb3IgaW4tcHJvZ3Jlc3MgSS9POyBvdGhlciBwZW5kaW5nIHByb21pc2VzXG4gICB0aGF0IGluZGlyZWN0bHkgZGVwZW5kIG9uIEkvTyBhcmUgbm90IGV4cGxpY2l0bHkgdHJhY2tlZC4gVGhleSBhcmUgcmV0YWluZWRcbiAgIGluIG1lbW9yeSBieSByZWZlcmVuY2VzIGNhcHR1cmVkIGluc2lkZSBjYWxsYmFja3MuXG5cbiAgIE9uIFVuaXggYW5kIFdpbmRvd3MsIGEgc2VwYXJhdGUgdG9wLWxldmVsIGxvb3AsIHR5cGljYWxseSBbTHd0X21haW4ucnVuXSwgaXNcbiAgIG5lY2Vzc2FyeSB0byByZXBlYXRlZGx5IGNhbGwgW3NlbGVjdF0sIFtlcG9sbF0sIG9yIFtrZXZlbnRdLCBhbmQgcmVzb2x2ZVxuICAgYmxvY2tlZCBJL08gcHJvbWlzZXMuXG5cbiAgIEluIEphdmFTY3JpcHQsIHJlZmVyZW5jZXMgdG8gcHJvbWlzZXMgYXJlIHJldGFpbmVkIGJ5IEphdmFTY3JpcHQgY29kZSwgd2hpY2hcbiAgIGlzLCBpbiB0dXJuLCB0cmlnZ2VyZWQgYnkgdGhlIEpTIGVuZ2luZS4gSW4gb3RoZXIgd29yZHMsIHRoZSB0b3AtbGV2ZWwgbG9vcFxuICAgaXMgYnVyaWVkIGluc2lkZSB0aGUgSlMgZW5naW5lLlxuXG4gICBUaGlzIHNlcGFyYXRpb24gb2YgdGhlIEx3dCBjb3JlIGZyb20gdGhlIHRvcC1sZXZlbCBJL08gbG9vcCBrZWVwcyB0aGUgY29yZVxuICAgcG9ydGFibGUuXG5cblxuICAgNy4gUHJvbWlzZSBcInByb3h5aW5nXCJcblxuICAgSW4gW0x3dC5iaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdF0sIHRoZSBvdXRlciBbJ2IgdF0gaXMgY3JlYXRlZCBieVxuICAgW2JpbmRdIGZpcnN0LCBhbmQgcmV0dXJuZWQgdG8gdGhlIHVzZXIuIFRoZSBpbm5lciBbJ2IgdF0gaXMgY3JlYXRlZCBieSB0aGVcbiAgIHVzZXIgbGF0ZXIsIGFuZCB0aGVuIHJldHVybmVkIHRvIFtiaW5kXS4gQXQgdGhhdCBwb2ludCwgW2JpbmRdIG5lZWRzIHRvIG1ha2VcbiAgIHRoZSBpbm5lciBhbmQgb3V0ZXIgWydiIHRdcyBiZWhhdmUgaWRlbnRpY2FsbHkuXG5cbiAgIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IG1ha2luZyBvbmUgb2YgdGhlIHByb21pc2VzIHBvaW50IHRvIHRoZSBvdGhlci4gVGhlXG4gICBmaXJzdCBvZiB0aGUgcHJvbWlzZXMgdGh1cyBiZWNvbWVzIGEgXCJwcm94eSxcIiBhbmQgdGhlIG90aGVyIGlzIGl0c1xuICAgXCJ1bmRlcmx5aW5nXCIgcHJvbWlzZS5cblxuICAgQWZ0ZXIgdGhhdCwgYWxsIG9wZXJhdGlvbnMgdGhhdCB3b3VsZCBiZSBwZXJmb3JtZWQgYnkgTHd0IG9uIHRoZSBwcm94eSBhcmVcbiAgIGluc3RlYWQgcGVyZm9ybWVkIG9uIHRoZSB1bmRlcmx5aW5nIHByb21pc2UuIFRoaXMgaXMgZW5zdXJlZCBieSB0aGUgbnVtZXJvdXNcbiAgIGNhbGxzIHRvIHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBbdW5kZXJseWluZ10gaW4gdGhpcyBmaWxlLlxuXG4gICBCZWNhdXNlIG9mIHRoZSBwZXJ2YXNpdmUgdXNlIG9mIFt1bmRlcmx5aW5nXSwgcHJveGllcyBjYW4gYmUgbW9yZSBvciBsZXNzXG4gICBpZ25vcmVkIG9uIGEgZmlyc3QgcmVhZGluZyB0aGUgY29kZS4gSG93ZXZlciwgYmVjb21pbmcgYSBwcm94eSBpcyBhIGtpbmQgb2ZcbiAgIHN0YXRlIGNoYW5nZSwgYW5kIGFueSBwcm9taXNlIHRoYXQgaXMgcmV0dXJuZWQgYnkgYSBjYWxsYmFjayB0byBbYmluZF0sIG9yIHRvXG4gICBhIHNpbWlsYXIgTHd0IGZ1bmN0aW9uLCBtaWdodCBiZWNvbWUgYSBwcm94eS4gVGhhdCBtZWFuczoganVzdCBhYm91dCBhbnlcbiAgIHByb21pc2UgdGhhdCBpcyBoYW5kZWQgdG8gdGhlIHVzZXIsIG1pZ2h0IGJlY29tZSBhIHByb3h5IHByb21pc2UgYnkgdGhlIG5leHRcbiAgIHRpbWUgTHd0IHNlZXMgaXQuIFRoaXMgaXMgaW1wb3J0YW50IGZvciByZWFzb25pbmcgYWJvdXQgcG9zc2libGUgc3RhdGVcbiAgIGNoYW5nZXMgaW4gaW1wbGVtZW50YXRpb24gb2YgTHd0LCBhbmQgaXMgcmVmZXJlbmNlZCBpbiBzb21lIGltcGxlbWVudGF0aW9uXG4gICBkZXRhaWwgY29tbWVudHMuXG5cblxuICAgOC4gU2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlXG5cbiAgIEx3dCBoYXMgYSBnbG9iYWwga2V5LXZhbHVlIG1hcC4gVGhlIG1hcCBjYW4gYmUgcHJlc2VydmVkIGFjcm9zcyBzZXF1ZW50aWFsXG4gICBjb21wb3NpdGlvbiBmdW5jdGlvbnMsIHNvIHRoYXQgaXQgaGFzIHRoZSBzYW1lIHN0YXRlIGluIHRoZSB1c2VyJ3MgY2FsbGJhY2tcbiAgIFtmXSBhcyBpdCBkaWQgYXQgdGhlIHRpbWUgdGhlIHVzZXIgY2FsbGVkIFtMd3QuYmluZCBwIGZdLlxuXG4gICBUaGUgZGV0YWlscyBhcmUgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYW5kIGRpc2N1c3NlZCBpbiBtb2R1bGVcbiAgIFtTZXF1ZW5jZV9hc3NvY2lhdGVkX3N0b3JhZ2VdLiBUaGUgbWFpbiB0aGluZyB0byBiZSBhd2FyZSBvZiBpcyB0aGUgbWFueVxuICAgcmVmZXJlbmNlcyB0byBbY3VycmVudF9zdG9yYWdlXSB0aHJvdWdob3V0IEx3dCwgd2hpY2ggYXJlIG5lZWRlZCB0byBwcm9wZXJseVxuICAgc2F2ZSBhbmQgcmVzdG9yZSB0aGUgbWFwcGluZy5cblxuXG4gICA5LiBUeXBlIHN5c3RlbSBhYnVzZVxuXG4gICBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyB0aGUgdHlwZSBzeXN0ZW0gc29tZXdoYXQgZXh0ZW5zaXZlbHkuIEdlbnRsZVxuICAgaW50cm9kdWN0aW9ucyBjYW4gYmUgZm91bmQgaGVyZTpcblxuICAgICBodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvMTYxLzdcbiAgICAgaHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90LzE2MS8xNlxuXG4gICBBIHNob3J0IHN1bW1hcnkgZm9sbG93cy5cblxuICAgVGhlIHByb21pc2Ugc3RhdGUgaXMsIGludGVybmFsbHksIGEgR0FEVCB3aGljaCBlbmNvZGVzIHRoZSBzdGF0ZSBpbiBpdHMgdHlwZVxuICAgcGFyYW1ldGVycy4gVGh1cywgaWYgeW91IGRvIFtsZXQgcCA9IHVuZGVybHlpbmcgcF0sIHRoZSBzaGFkb3dpbmcgcmVmZXJlbmNlXG4gICBbcF0gaXMgc3RhdGljYWxseSBrbm93biAqbm90KiB0byBiZSBhIHByb3h5LCBhbmQgdGhlIGNvbXBpbGVyIGtub3dzIHRoYXQgdGhlXG4gICBjb3JyZXNwb25kaW5nIG1hdGNoIGNhc2UgW1Byb3h5IF9dIGlzIGltcG9zc2libGUuXG5cbiAgIFRoZSBleHRlcm5hbCBwcm9taXNlIHR5cGUsIFsnYSB0XSwgYW5kIHRoZSBleHRlcm5hbCByZXNvbHZlciB0eXBlLCBbJ2EgdV0sXG4gICBhcmUgbm90IEdBRFRzLiBGdXJ0aGVybW9yZSwgdGhleSBhcmUsIHJlc3BlY3RpdmVseSwgY292YXJpYW50IGFuZFxuICAgY29udHJhdmFyaWFudCBpbiBbJ2FdLCB3aGlsZSB0aGUgaW50ZXJuYWwgcHJvbWlzZSB0eXBlIGlzIGludmFyaWFudCBpbiBbJ2FdLlxuICAgRm9yIHRoZXNlIHJlYXNvbnMsIHRoZXJlIGFyZSBuYXN0eSBjYXN0cyBiZXR3ZWVuIFsnYSB0XSwgWydhIHVdLCBhbmQgdGhlXG4gICBpbnRlcm5hbCBwcm9taXNlIHR5cGUuIFRoZSBpbXBsZW1lbnRhdGlvbiBpcywgb2YgY291cnNlLCB3cml0dGVuIGluIHRlcm1zIG9mXG4gICB0aGUgaW50ZXJuYWwgdHlwZS5cblxuICAgQ2FzdGluZyBmcm9tIGFuIFsnYSB0XSB0byBhbiBpbnRlcm5hbCBwcm9taXNlIHByb2R1Y2VzIGEgcmVmZXJlbmNlIGZvclxuICAgd2hpY2ggdGhlIHN0YXRlIGlzIFwidW5rbm93blwiOiB0aGlzIGlzIHNpbXVsYXRlZCB3aXRoIGEgaGVscGVyIEdBRFQsIHdoaWNoXG4gICBlbmNvZGVzIGV4aXN0ZW50aWFsIHR5cGVzLiBUaGVyZSBhcmUgc2V2ZXJhbCBzaW1pbGFyIGNhc3RzLCB3aGljaCBhcmUgdXNlZFxuICAgdG8gZG9jdW1lbnQgcG9zc2libGUgc3RhdGUgY2hhbmdlcyBiZXR3ZWVuIHRoZSB0aW1lIGEgcHJvbWlzZSBpcyBjcmVhdGVkLFxuICAgYW5kIHRoZSBsYXRlciB0aW1lIGl0IGlzIHVzZWQgaW4gYSBjYWxsYmFjay4gWW91IGNhbiBzZWUgdGhlc2UgY2FzdHMgaW5cbiAgIGFjdGlvbiBpbiBbTHd0LmJpbmRdLiBUaGUgY2FzdCBzeW50YXggaXMgcHJldHR5IGxpZ2h0LCBhbmQsIGJlc2lkZXMgYmVpbmdcbiAgIGNvbW1lbnRlZCBpbiBbYmluZF0sIGFsbCBzdWNoIGNhc3RzIGFyZSBkb2N1bWVudGVkIGluIG1vZHVsZXMgW1B1YmxpY190eXBlc11cbiAgIGFuZCBbQmFzaWNfaGVscGVyc10uXG5cblxuICAgSWYgeW91J3ZlIG1hZGUgaXQgdGhpcyBmYXIsIHlvdSBhcmUgYW4gTHd0IGV4cGVydCEgUmVqb2ljZSEgKilcblxuXG5cbigqIFtMd3Rfc2VxdWVuY2VdIGlzIGRlcHJlY2F0ZWQg4oCTIHdlIGRvbid0IHdhbnQgdXNlcnMgb3V0c2lkZSBMd3QgdXNpbmcgaXQuXG4gICBIb3dldmVyLCBpdCBpcyBzdGlsbCB1c2VkIGludGVybmFsbHkgYnkgTHd0LiBTbywgYnJpZWZseSBkaXNhYmxlIHdhcm5pbmcgM1xuICAgKFwiZGVwcmVjYXRlZFwiKSwgYW5kIGNyZWF0ZSBhIGxvY2FsLCBub24tZGVwcmVjYXRlZCBhbGlhcyBmb3JcbiAgIFtMd3Rfc2VxdWVuY2VdIHRoYXQgY2FuIGJlIHJlZmVycmVkIHRvIGJ5IHRoZSByZXN0IG9mIHRoZSBjb2RlIGluIHRoaXNcbiAgIG1vZHVsZSB3aXRob3V0IHRyaWdnZXJpbmcgYW55IG1vcmUgd2FybmluZ3MuICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5tb2R1bGUgTHd0X3NlcXVlbmNlID0gTHd0X3NlcXVlbmNlXG5bQEBAb2NhbWwud2FybmluZyBcIiszXCJdXG5cbigqIFNvbWUgc2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlIHR5cGVzXG5cbiAgIFNlcXVlbmNlLWFzc29jaWF0ZWQgc3RvcmFnZSBpcyBkZWZpbmVkIGFuZCBkb2N1bWVudGVkIGxhdGVyLCBpbiBtb2R1bGVcbiAgIFtTZXF1ZW5jZV9hc3NvY2lhdGVkX3N0b3JhZ2VdLiBIb3dldmVyLCB0aGUgZm9sbG93aW5nIHR5cGVzIGFyZSBtZW50aW9uZWQgaW5cbiAgIHRoZSBkZWZpbml0aW9uIG9mIFtwcm9taXNlXSwgc28gdGhleSBtdXN0IGJlIGRlZmluZWQgaGVyZSBmaXJzdC4gKilcbm1vZHVsZSBTdG9yYWdlX21hcCA9XG4gIE1hcC5NYWtlXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50XG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBlbmQpXG50eXBlIHN0b3JhZ2UgPSAodW5pdCAtPiB1bml0KSBTdG9yYWdlX21hcC50XG5cblxuXG5tb2R1bGUgTWFpbl9pbnRlcm5hbF90eXBlcyA9XG5zdHJ1Y3RcbiAgKCogUGhhbnRvbSB0eXBlcyBmb3IgdXNlIHdpdGggdHlwZXMgW3Byb21pc2VdIGFuZCBbc3RhdGVdLiBUaGVzZSBhcmUgbmV2ZXJcbiAgICAgY29uc3RydWN0ZWQ7IHRoZSBwdXJwb3NlIG9mIHRoZSBjb25zdHJ1Y3RvcnMgaXMgdG8gcHJvdmUgdG8gdGhlIHR5cGVcbiAgICAgY2hlY2tlciB0aGF0IHRoZXNlIHR5cGVzIGFyZSBkaXN0aW5jdCBmcm9tIGVhY2ggb3RoZXIuIFdhcm5pbmcgMzcsIFwidW51c2VkXG4gICAgIGNvbnN0cnVjdG9yLFwiIHRoZXJlZm9yZSBoYXMgdG8gYmUgdGVtcG9yYXJpbHkgc3VwcHJlc3NlZC4gKilcblxuICBbQEBAb2NhbWwud2FybmluZyBcIi0zN1wiXVxuXG4gIHR5cGUgdW5kZXJseWluZyA9IHByaXZhdGUgVW5kZXJseWluZ19hbmRfdGhpc19jb25zdHJ1Y3Rvcl9pc19ub3RfdXNlZFxuICB0eXBlIHByb3h5ID0gcHJpdmF0ZSBQcm94eV9hbmRfdGhpc19jb25zdHJ1Y3Rvcl9pc19ub3RfdXNlZFxuXG4gIHR5cGUgcmVzb2x2ZWQgPSBwcml2YXRlIFJlc29sdmVkX2FuZF90aGlzX2NvbnN0cnVjdG9yX2lzX25vdF91c2VkXG4gIHR5cGUgcGVuZGluZyA9IHByaXZhdGUgUGVuZGluZ19hbmRfdGhpc19jb25zdHJ1Y3Rvcl9pc19ub3RfdXNlZFxuXG4gIFtAQEBvY2FtbC53YXJuaW5nIFwiKzM3XCJdXG5cblxuXG4gICgqIFByb21pc2VzIHByb3Blci4gKilcblxuICB0eXBlICgnYSwgJ3UsICdjKSBwcm9taXNlID0ge1xuICAgIG11dGFibGUgc3RhdGUgOiAoJ2EsICd1LCAnYykgc3RhdGU7XG4gIH1cblxuICBhbmQgKF8sIF8sIF8pIHN0YXRlID1cbiAgICB8IEZ1bGZpbGxlZCA6ICdhICAgICAgICAgICAgICAgICAgLT4gKCdhLCB1bmRlcmx5aW5nLCByZXNvbHZlZCkgc3RhdGVcbiAgICB8IFJlamVjdGVkICA6IGV4biAgICAgICAgICAgICAgICAgLT4gKCBfLCB1bmRlcmx5aW5nLCByZXNvbHZlZCkgc3RhdGVcbiAgICB8IFBlbmRpbmcgICA6ICdhIGNhbGxiYWNrcyAgICAgICAgLT4gKCdhLCB1bmRlcmx5aW5nLCBwZW5kaW5nKSAgc3RhdGVcbiAgICB8IFByb3h5ICAgICA6ICgnYSwgXywgJ2MpIHByb21pc2UgLT4gKCdhLCBwcm94eSwgICAgICAnYykgICAgICAgc3RhdGVcblxuICAoKiBOb3RlOlxuXG4gICAgIEEgcHJvbWlzZSB3aG9zZSBzdGF0ZSBpcyBbUHJveHkgX10gaXMgYSBcInByb3h5XCIgcHJvbWlzZS4gQSBwcm9taXNlIHdob3NlXG4gICAgIHN0YXRlIGlzICpub3QqIFtQcm94eSBfXSBpcyBhbiBcInVuZGVybHlpbmdcIiBwcm9taXNlLlxuXG4gICAgIFRoZSBcInVuZGVybHlpbmcgcHJvbWlzZSBvZiBbcF1cIiBpczpcblxuICAgICAtIFtwXSwgaWYgW3BdIGlzIGl0c2VsZiB1bmRlcmx5aW5nLlxuICAgICAtIE90aGVyd2lzZSwgW3BdIGlzIGEgcHJveHkgYW5kIGhhcyBzdGF0ZSBbUHJveHkgcCddLiBUaGUgdW5kZXJseWluZ1xuICAgICAgIHByb21pc2Ugb2YgW3BdIGlzIHRoZSB1bmRlcmx5aW5nIHByb21pc2Ugb2YgW3AnXS5cblxuICAgICBJbiBvdGhlciB3b3JkcywgdG8gZmluZCB0aGUgdW5kZXJseWluZyBwcm9taXNlIG9mIGEgcHJveHksIEx3dCBmb2xsb3dzIHRoZVxuICAgICBbUHJveHkgX10gbGlua3MgdG8gdGhlIGVuZC4gKilcblxuICAoKiBOb3RlOlxuXG4gICAgIFdoZW4gYSBwcm9taXNlIGlzIHJlc29sdmVkLCBvciBiZWNvbWVzIGEgcHJveHksIGl0cyBzdGF0ZSBmaWVsZCBpc1xuICAgICBtdXRhdGVkLiBUaGlzIGludmFsaWRhdGVzIHRoZSB0eXBlIGludmFyaWFudHMgb24gdGhlIHByb21pc2UuIFNlZSBpbnRlcm5hbFxuICAgICBmdW5jdGlvbiBbc2V0X3Byb21pc2Vfc3RhdGVdIGZvciBkZXRhaWxzIGFib3V0IHRoYXQuXG5cbiAgICAgV2hlbiBhbiBMd3QgZnVuY3Rpb24gaGFzIGEgcmVmZXJlbmNlIHRvIGEgcHJvbWlzZSwgYW5kIGFsc28gcmVnaXN0ZXJzIGFcbiAgICAgY2FsbGJhY2sgdGhhdCBoYXMgYSByZWZlcmVuY2UgdG8gdGhlIHNhbWUgcHJvbWlzZSwgdGhlIGludmFyaWFudHMgb24gdGhlXG4gICAgIHJlZmVyZW5jZSBtYXkgYmVjb21lIGludmFsaWQgYnkgdGhlIHRpbWUgdGhlIGNhbGxiYWNrIGlzIGNhbGxlZC4gQWxsIHN1Y2hcbiAgICAgY2FsbGJhY2tzIGhhdmUgY29tbWVudHMgZXhwbGFpbmluZyB3aGF0IHRoZSB2YWxpZCBpbnZhcmlhbnRzIGFyZSBhdCB0aGF0XG4gICAgIHBvaW50LCBhbmQvb3IgY2FzdHMgdG8gKDEpIGdldCB0aGUgY29ycmVjdCB0eXBpbmcgYW5kICgyKSBkb2N1bWVudCB0aGVcbiAgICAgcG90ZW50aWFsIHN0YXRlIGNoYW5nZSBmb3IgcmVhZGVycyBvZiB0aGUgY29kZS4gKilcblxuXG5cbiAgKCogQ2FsbGJhY2sgaW5mb3JtYXRpb24gZm9yIHBlbmRpbmcgcHJvbWlzZXMuICopXG5cbiAgYW5kICdhIGNhbGxiYWNrcyA9IHtcbiAgICBtdXRhYmxlIHJlZ3VsYXJfY2FsbGJhY2tzIDogJ2EgcmVndWxhcl9jYWxsYmFja19saXN0O1xuICAgIG11dGFibGUgY2FuY2VsX2NhbGxiYWNrcyAgOiAnYSBjYW5jZWxfY2FsbGJhY2tfbGlzdDtcbiAgICBtdXRhYmxlIGhvd190b19jYW5jZWwgICAgIDogaG93X3RvX2NhbmNlbDtcbiAgICBtdXRhYmxlIGNsZWFudXBzX2RlZmVycmVkIDogaW50O1xuICB9XG5cbiAgYW5kICdhIHJlZ3VsYXJfY2FsbGJhY2sgPSAnYSByZXNvbHZlZF9zdGF0ZSAtPiB1bml0XG5cbiAgYW5kIGNhbmNlbF9jYWxsYmFjayA9IHVuaXQgLT4gdW5pdFxuXG4gIGFuZCAnYSByZXNvbHZlZF9zdGF0ZSA9ICgnYSwgdW5kZXJseWluZywgcmVzb2x2ZWQpIHN0YXRlXG5cbiAgYW5kIGhvd190b19jYW5jZWwgPVxuICAgIHwgTm90X2NhbmNlbGFibGUgICAgICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICBob3dfdG9fY2FuY2VsXG4gICAgfCBDYW5jZWxfdGhpc19wcm9taXNlICAgICAgICAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvd190b19jYW5jZWxcbiAgICB8IFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lICAgICA6IChfLCBfLCBfKSBwcm9taXNlICAgICAgLT4gaG93X3RvX2NhbmNlbFxuICAgIHwgUHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIDogKF8sIF8sIF8pIHByb21pc2UgbGlzdCAtPiBob3dfdG9fY2FuY2VsXG5cbiAgYW5kICdhIHJlZ3VsYXJfY2FsbGJhY2tfbGlzdCA9XG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHlcbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9jb25jYXQgb2ZcbiAgICAgICdhIHJlZ3VsYXJfY2FsbGJhY2tfbGlzdCAqICdhIHJlZ3VsYXJfY2FsbGJhY2tfbGlzdFxuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBvZlxuICAgICAgJ2EgcmVndWxhcl9jYWxsYmFja1xuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrIG9mXG4gICAgICAnYSByZWd1bGFyX2NhbGxiYWNrIG9wdGlvbiByZWZcblxuICBhbmQgXyBjYW5jZWxfY2FsbGJhY2tfbGlzdCA9XG4gICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9lbXB0eSA6XG4gICAgICBfIGNhbmNlbF9jYWxsYmFja19saXN0XG4gICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jb25jYXQgOlxuICAgICAgJ2EgY2FuY2VsX2NhbGxiYWNrX2xpc3QgKiAnYSBjYW5jZWxfY2FsbGJhY2tfbGlzdCAtPlxuICAgICAgICAnYSBjYW5jZWxfY2FsbGJhY2tfbGlzdFxuICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY2FsbGJhY2sgOlxuICAgICAgc3RvcmFnZSAqIGNhbmNlbF9jYWxsYmFjayAtPlxuICAgICAgICBfIGNhbmNlbF9jYWxsYmFja19saXN0XG4gICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9yZW1vdmVfc2VxdWVuY2Vfbm9kZSA6XG4gICAgICAoJ2EsIF8sIF8pIHByb21pc2UgTHd0X3NlcXVlbmNlLm5vZGUgLT5cbiAgICAgICAgJ2EgY2FuY2VsX2NhbGxiYWNrX2xpc3RcblxuICAoKiBOb3RlczpcblxuICAgICBUaGVzZSB0eXBlIGRlZmluaXRpb25zIGFyZSBndWlsdHkgb2YgcGVyZm9ybWluZyBzZXZlcmFsIG9wdGltaXphdGlvbnMsXG4gICAgIHdpdGhvdXQgd2hpY2ggdGhleSB3b3VsZCBiZSBtdWNoIGVhc2llciB0byB1bmRlcnN0YW5kLlxuXG4gICAgIC0gVGhlIHR5cGUgcGFyYW1ldGVycyBvZiBbJ2EgcmVzb2x2ZWRfc3RhdGVdIGd1YXJhbnRlZSB0aGF0IGl0IGlzIGVpdGhlclxuICAgICAgIFtGdWxmaWxsZWQgX10gb3IgW1JlamVjdGVkIF9dLiBTbywgaXQgaXMgZXF1aXZhbGVudCB0b1xuICAgICAgIFsoJ2EsIGV4bikgU3RkbGliLnJlc3VsdF0sIGFuZCwgaW5kZWVkLCBzaG91bGQgaGF2ZSBhbiBpZGVudGljYWxcbiAgICAgICBtZW1vcnkgcmVwcmVzZW50YXRpb24uXG5cbiAgICAgLSBBcyBwZXIgdGhlIE92ZXJ2aWV3LCB0aGVyZSBhcmUgcmVndWxhciBjYWxsYmFja3MgYW5kIGNhbmNlbCBjYWxsYmFja3MuXG4gICAgICAgQ2FuY2VsIGNhbGxiYWNrcyBhcmUgY2FsbGVkIG9ubHkgb24gY2FuY2VsbGF0aW9uLCBhbmQsIHRoZW4sIGJlZm9yZSBhbnlcbiAgICAgICByZWd1bGFyIGNhbGxiYWNrcyBhcmUgY2FsbGVkLlxuXG4gICAgICAgRGVzcGl0ZSB0aGUgZGlmZmVyZW50IHR5cGVzIGZvciB0aGUgdHdvIGtpbmRzIG9mIGNhbGxiYWNrcywgdGhleSBhcmVcbiAgICAgICBvdGhlcndpc2UgdGhlIHNhbWUuIENhbmNlbCBjYWxsYmFja3MganVzdCBkb24ndCBuZWVkIGEgcmVzdWx0IHN0YXRlXG4gICAgICAgYXJndW1lbnQsIGJlY2F1c2UgaXQgaXMga25vd24gdG8gYmUgW1JlamVjdGVkIENhbmNlbGVkXS5cblxuICAgICAtIFJlZ3VsYXIgY2FsbGJhY2tzIGFyZSBub3QgYWxsb3dlZCB0byByYWlzZSBleGNlcHRpb25zLiBBbGwgcmVndWxhclxuICAgICAgIGNhbGxiYWNrcyBhcmUgY3JlYXRlZCBpbiB0aGlzIGZpbGUsIHNvIHRoaXMgY2FuIGJlIGNoZWNrZWQuXG5cbiAgICAgICBDYW5jZWwgY2FsbGJhY2tzIGNhbiByYWlzZSBleGNlcHRpb25zLCBidXQgaWYgdGhleSBkbyBzbywgdGhlIGV4Y2VwdGlvbnNcbiAgICAgICBhcmUgcGFzc2VkIHRvIFthc3luY19leGNlcHRpb25faG9va10uXG5cbiAgICAgLSBbaG93X3RvX2NhbmNlbF0gaW1wbGVtZW50cyB0aGUgZGVwZW5kZW5jeSBncmFwaCBtZW50aW9uZWQgaW4gdGhlXG4gICAgICAgT3ZlcnZpZXcuIEl0IGlzIHRyYXZlcnNlZCBiYWNrd2FyZHMgZHVyaW5nIFtMd3QuY2FuY2VsXS4gSXQgaXMgYSBHQURUXG4gICAgICAgYmVjYXVzZSB3ZSBkb24ndCBjYXJlIGFib3V0IHRoZSBhY3R1YWwgdHlwZXMgb2YgdGhlIHByb21pc2UgcmVmZXJlbmNlc1xuICAgICAgIHN0b3JlZCwgb3IgdGhlaXIgaW52YXJpYW50cy4gVGhlIGNvbnN0cnVjdG9ycyBjb3JyZXNwb25kIHRvIHBlbmRpbmdcbiAgICAgICBwcm9taXNlIGtpbmRzIGFzIGZvbGxvd3M6XG4gICAgICAgICAtIFtOb3RfY2FuY2VsYWJsZV06IGluaXRpYWwsIFtMd3Qud2FpdF0uXG4gICAgICAgICAtIFtDYW5jZWxfdGhpc19wcm9taXNlXTogaW5pdGlhbCwgW0x3dC50YXNrXS5cbiAgICAgICAgIC0gW1Byb3BhZ2F0ZV9jYW5jZWxfdG9fb25lXTogc2VxdWVudGlhbCBjb21wb3NpdGlvbiwgZS5nLiBbTHd0LmJpbmRdLlxuICAgICAgICAgLSBbUHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsXTogY29uY3VycmVudCBjb21wb3NpdGlvbiwgZS5nLlxuICAgICAgICAgICBbTHd0LmpvaW5dLlxuXG4gICAgIC0gVGhlIHR3byBjYWxsYmFjayBsaXN0IHR5cGVzIGFyZSBvcmRpbmFyeSBhcHBlbmQtZnJpZW5kbHkgbGlzdHMsIHdpdGggdHdvXG4gICAgICAgb3B0aW1pemF0aW9ucyBpbmxpbmVkOlxuXG4gICAgICAgLSBbJ2EgcmVndWxhcl9jYWxsYmFja19saXN0XSBhcHBhcmVudGx5IGhhcyB0d28gXCJraW5kc1wiIG9mIHJlZ3VsYXJcbiAgICAgICAgIGNhbGxiYWNrcywgaW1wbGljaXRseSByZW1vdmVkIGFuZCBleHBsaWNpdGx5IHJlbW92YWJsZS4gQWxsIGNhbGxiYWNrc1xuICAgICAgICAgYXJlIHJlbW92YWJsZS4gSXQncyBqdXN0IHRoYXQsIGZvciBzb21lIGNhbGxiYWNrcywgdGhleSB3aWxsIG9ubHkgYmVcbiAgICAgICAgIHJlbW92ZWQgYXQgdGhlIHNhbWUgdGltZSB0aGF0IHRoZSBwcm9taXNlIHRoZXkgYXJlIGF0dGFjaGVkIHRvIGJlY29tZXNcbiAgICAgICAgIHJlc29sdmVkLiBXaGVuIHRoYXQgaGFwcGVucywgdGhlIGVudGlyZSBzdGF0ZSBvZiB0aGF0IHByb21pc2UgY2hhbmdlc1xuICAgICAgICAgdG8gW0Z1bGZpbGxlZCBfXSBvciBbUmVqZWN0ZWQgX10sIGFuZCB0aGUgcmVmZXJlbmNlIHRvIHRoZSB3aG9sZVxuICAgICAgICAgY2FsbGJhY2sgbGlzdCBpcyBzaW1wbHkgbG9zdC4gVGhpcyBcInJlbW92ZXNcIiB0aGUgY2FsbGJhY2suIEZvciB0aGVzZVxuICAgICAgICAgY2FsbGJhY2tzLCBbJ2EgcmVndWxhcl9jYWxsYmFja19saXN0XSBhdHRlbXB0cyB0byB0cmltIGFuIG9wdGlvbiBhbmQgYVxuICAgICAgICAgcmVmZXJlbmNlIGNlbGwgd2l0aCB0aGVcbiAgICAgICAgIFtSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrXSBjb25zdHJ1Y3Rvci5cblxuICAgICAgIC0gWydhIGNhbmNlbF9jYWxsYmFja19saXN0XSBoYXNcbiAgICAgICAgIFtDYW5jZWxfY2FsbGJhY2tfbGlzdF9yZW1vdmVfc2VxdWVuY2Vfbm9kZSBub2RlXSwgd2hpY2ggaXMgdGhlIHNhbWUgYXNcbiAgICAgICAgIFtDYW5jZWxfY2FsbGJhY2tfbGlzdF9jYWxsYmFjayAoXywgKGZ1biBfIC0+XG4gICAgICAgICAgIEx3dF9zZXF1ZW5jZS5yZW1vdmUgbm9kZSkpXS5cbiAgICAgICAgIFRoaXMgd2FzIHByb2JhYmx5IGRvbmUgdG8gYXZvaWQgYSBjbG9zdXJlIGFsbG9jYXRpb24uXG5cbiAgICAgLSBUaGUgW2NsZWFudXBzX2RlZmVycmVkXSBmaWVsZCBpcyBleHBsYWluZWQgaW4gbW9kdWxlXG4gICAgICAgW1BlbmRpbmdfY2FsbGJhY2tzXS4gKilcbmVuZFxub3BlbiBNYWluX2ludGVybmFsX3R5cGVzXG5cblxuXG5tb2R1bGUgUHVibGljX3R5cGVzID1cbnN0cnVjdFxuICB0eXBlICsnYSB0XG4gIHR5cGUgLSdhIHVcblxuICBsZXQgdG9fcHVibGljX3Byb21pc2UgOiAoJ2EsIF8sIF8pIHByb21pc2UgLT4gJ2EgdCA9IE9iai5tYWdpY1xuICBsZXQgdG9fcHVibGljX3Jlc29sdmVyIDogKCdhLCBfLCBfKSBwcm9taXNlIC0+ICdhIHUgPSBPYmoubWFnaWNcblxuICB0eXBlIF8gcGFja2VkX3Byb21pc2UgPVxuICAgIHwgSW50ZXJuYWwgOiAoJ2EsIF8sIF8pIHByb21pc2UgLT4gJ2EgcGFja2VkX3Byb21pc2VcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuXG4gIGxldCB0b19pbnRlcm5hbF9wcm9taXNlIChwIDogJ2EgdCkgOiAnYSBwYWNrZWRfcHJvbWlzZSA9XG4gICAgSW50ZXJuYWwgKE9iai5tYWdpYyBwKVxuICBsZXQgdG9faW50ZXJuYWxfcmVzb2x2ZXIgKHIgOiAnYSB1KSA6ICdhIHBhY2tlZF9wcm9taXNlID1cbiAgICBJbnRlcm5hbCAoT2JqLm1hZ2ljIHIpXG5cbiAgKCogTW9zdCBmdW5jdGlvbnMgdGhhdCB0YWtlIGEgcHVibGljIHByb21pc2UgKFsnYSB0XSkgY29udmVydCBpdCB0byBhblxuICAgICBpbnRlcm5hbCBwcm9taXNlIGFzIGZvbGxvd3M6XG5cbiAgICAgICAoKiBwIDogJ2EgdCAqKVxuXG4gICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cblxuICAgICAgICgqIHAgOiAoJ2EsIHUsIGMpIHByb21pc2UsIHdoZXJlIHUgYW5kIGMgYXJlIGZyZXNoIHR5cGVzLCBpLmUuIHRoZVxuICAgICAgICAgIGludmFyaWFudHMgb24gcCBhcmUgdW5rbm93bi4gKilcblxuICAgICBUaGlzIGNhc3QgaXMgYSBuby1vcCBjYXN0LiBJdCBvbmx5IHByb2R1Y2VzIGEgcmVmZXJlbmNlIHdpdGggYSBkaWZmZXJlbnRcbiAgICAgdHlwZS4gVGhlIGludHJvZHVjdGlvbiBhbmQgaW1tZWRpYXRlIGVsaW1pbmF0aW9uIG9mIFtJbnRlcm5hbCBfXSBzZWVtcyB0b1xuICAgICBiZSBvcHRpbWl6ZWQgYXdheSBldmVuIG9uIG9sZGVyIHZlcnNpb25zIG9mIE9DYW1sIHRoYXQgZG9uJ3QgaGF2ZSBGbGFtYmRhXG4gICAgIGFuZCBkb24ndCBzdXBwb3J0IFtbQEBvY2FtbC51bmJveGVkXV0uICopXG5cbiAgKCogVGhpcyBjb3VsZCBwcm9iYWJseSBzYXZlIGFuIGFsbG9jYXRpb24gYnkgdXNpbmcgW09iai5tYWdpY10uICopXG4gIGxldCBzdGF0ZV9vZl9yZXN1bHQgPSBmdW5jdGlvblxuICAgIHwgT2sgeCAtPiBGdWxmaWxsZWQgeFxuICAgIHwgRXJyb3IgZXhuIC0+IFJlamVjdGVkIGV4blxuZW5kXG5pbmNsdWRlIFB1YmxpY190eXBlc1xuXG5cblxubW9kdWxlIEJhc2ljX2hlbHBlcnMgOlxuc2lnXG4gIHZhbCBpZGVudGljYWwgOiAoJ2EsIF8sIF8pIHByb21pc2UgLT4gKCdhLCBfLCBfKSBwcm9taXNlIC0+IGJvb2xcbiAgdmFsIHVuZGVybHlpbmcgOiAoJ2EsICd1LCAnYykgcHJvbWlzZSAtPiAoJ2EsIHVuZGVybHlpbmcsICdjKSBwcm9taXNlXG5cbiAgdHlwZSAoJ2EsICd1LCAnYykgc3RhdGVfY2hhbmdlZCA9XG4gICAgfCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIG9mICgnYSwgJ3UsICdjKSBwcm9taXNlXG4gICAgW0BAb2NhbWwudW5ib3hlZF1cbiAgdmFsIHNldF9wcm9taXNlX3N0YXRlIDpcbiAgICAoJ2EsIF8sIF8pIHByb21pc2UgLT4gKCdhLCAndSwgJ2MpIHN0YXRlIC0+ICgnYSwgJ3UsICdjKSBzdGF0ZV9jaGFuZ2VkXG5cbiAgdHlwZSAnYSBtYXlfbm93X2JlX3Byb3h5ID1cbiAgICB8IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSA6XG4gICAgICAoJ2EsIF8sIHBlbmRpbmcpIHByb21pc2UgLT4gJ2EgbWF5X25vd19iZV9wcm94eVxuICAgIFtAQG9jYW1sLnVuYm94ZWRdXG4gIHZhbCBtYXlfbm93X2JlX3Byb3h5IDpcbiAgICAoJ2EsIHVuZGVybHlpbmcsIHBlbmRpbmcpIHByb21pc2UgLT4gJ2EgbWF5X25vd19iZV9wcm94eVxuZW5kID1cbnN0cnVjdFxuICAoKiBDaGVja3MgcGh5c2ljYWwgZXF1YWxpdHkgKFs9PV0pIG9mIHR3byBpbnRlcm5hbCBwcm9taXNlcy4gVW5saWtlIFs9PV0sIGRvZXNcbiAgICAgbm90IGZvcmNlIHVuaWZpY2F0aW9uIG9mIHRoZWlyIGludmFyaWFudHMuICopXG4gIGxldCBpZGVudGljYWwgcDEgcDIgPVxuICAgICh0b19wdWJsaWNfcHJvbWlzZSBwMSkgPT0gKHRvX3B1YmxpY19wcm9taXNlIHAyKVxuXG4gICgqIFt1bmRlcmx5aW5nIHBdIGV2YWx1YXRlcyB0byB0aGUgdW5kZXJseWluZyBwcm9taXNlIG9mIFtwXS5cblxuICAgICBJZiBtdWx0aXBsZSBbUHJveHkgX10gbGlua3MgYXJlIHRyYXZlcnNlZCwgW3VuZGVybHlpbmddIHVwZGF0ZXMgYWxsIHRoZVxuICAgICBwcm94aWVzIHRvIHBvaW50IGltbWVkaWF0ZWx5IHRvIHRoZWlyIGZpbmFsIHVuZGVybHlpbmcgcHJvbWlzZS4gKilcbiAgbGV0IHJlYyB1bmRlcmx5aW5nXG4gICAgICA6IHR5cGUgdSBjLiAoJ2EsIHUsIGMpIHByb21pc2UgLT4gKCdhLCB1bmRlcmx5aW5nLCBjKSBwcm9taXNlID1cbiAgICBmdW4gcCAtPlxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPiAocCA6IChfLCB1bmRlcmx5aW5nLCBfKSBwcm9taXNlKVxuICAgIHwgUmVqZWN0ZWQgXyAtPiBwXG4gICAgfCBQZW5kaW5nIF8gLT4gcFxuICAgIHwgUHJveHkgcCcgLT5cbiAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnIGluXG4gICAgICBpZiBub3QgKGlkZW50aWNhbCBwJycgcCcpIHRoZW5cbiAgICAgICAgcC5zdGF0ZSA8LSBQcm94eSBwJyc7XG4gICAgICBwJydcblxuXG5cbiAgdHlwZSAoJ2EsICd1LCAnYykgc3RhdGVfY2hhbmdlZCA9XG4gICAgfCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIG9mICgnYSwgJ3UsICdjKSBwcm9taXNlXG4gICAgW0BAb2NhbWwudW5ib3hlZF1cblxuICBsZXQgc2V0X3Byb21pc2Vfc3RhdGUgcCBzdGF0ZSA9XG4gICAgbGV0IHAgOiAoXywgXywgXykgcHJvbWlzZSA9IE9iai5tYWdpYyBwIGluXG4gICAgcC5zdGF0ZSA8LSBzdGF0ZTtcbiAgICBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHBcblxuICAoKiBbc2V0X3Byb21pc2Vfc3RhdGUgcCBzdGF0ZV0gbXV0YXRlcyB0aGUgc3RhdGUgb2YgW3BdLCBhbmQgZXZhbHVhdGVzIHRvIGFcbiAgICAgKHdyYXBwZWQpIHJlZmVyZW5jZSB0byBbcF0gd2l0aCB0aGUgc2FtZSBpbnZhcmlhbnRzIGFzIG9uIFtzdGF0ZV0uIFRoZVxuICAgICBvcmlnaW5hbCByZWZlcmVuY2UgW3BdIHNob3VsZCBiZSBzaGFkb3dlZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbjpcblxuICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPSBzZXRfcHJvbWlzZV9zdGF0ZSBwIChGdWxmaWxsZWQgNDIpIGluIC4uLlxuXG4gICAgIFRoaXMgaXMgYSBraW5kIG9mIGNoZWFwIGltaXRhdGlvbiBvZiBsaW5lYXIgdHlwaW5nLCB3aGljaCBpcyBnb29kIGVub3VnaFxuICAgICBmb3IgdGhlIG5lZWRzIG9mIFtsd3QubWxdLlxuXG4gICAgIEludGVybmFsIGZ1bmN0aW9ucyB0aGF0IHRyYW5zaXRpdmVseSBjYWxsIFtzZXRfcHJvbWlzZV9zdGF0ZV0gbGlrZXdpc2VcbiAgICAgcmV0dXJuIHRoZSBuZXcgcmVmZXJlbmNlLiBUaGlzIGVuZHMgYXQgc29tZSB0b3AtbGV2ZWwgZnVuY3Rpb24sIHR5cGljYWxseVxuICAgICBlaXRoZXIgYSBjYWxsYmFjayBvciBhIGZ1bmN0aW9uIGluIHRoZSBwdWJsaWMgQVBJLiBUaGVyZSwgdGhlIG5ldyByZWZlcmVuY2VcbiAgICAgaXMgc3RpbGwgYm91bmQsIGJ1dCBpcyB0aGVuIGV4cGxpY2l0bHkgaWdub3JlZC5cblxuICAgICBUaGUgc3RhdGUgb2YgYSBwcm9taXNlIGlzIG5ldmVyIHVwZGF0ZWQgZGlyZWN0bHkgb3V0c2lkZSB0aGlzIG1vZHVsZVxuICAgICBbQmFzaWNfaGVscGVyc10uIEFsbCB1cGRhdGVzIGVsc2V3aGVyZSBhcmUgZG9uZSB0aHJvdWdoXG4gICAgIFtzZXRfcHJvbWlzZV9zdGF0ZV0uXG5cbiAgICAgVG8gYXZvaWQgcHJvYmxlbXMgd2l0aCB0eXBlLWxldmVsIGludmFyaWFudHMgbm90IG1hdGNoaW5nIHJlYWxpdHksIGRhdGFcbiAgICAgc3RydWN0dXJlcyBkbyBub3Qgc3RvcmUgcHJvbWlzZXMgd2l0aCBjb25jcmV0ZSBpbnZhcmlhbnRzIC0tIGV4Y2VwdFxuICAgICByZXNvbHZlZCBwcm9taXNlcywgd2hpY2ggYXJlIGltbXV0YWJsZS4gSW5kZWVkLCBpZiBvbmUgbG9va3MgYXRcbiAgICAgZGVmaW5pdGlvbnMgb2YgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgY2FuIHN0b3JlIHBlbmRpbmcgcHJvbWlzZXMsIGUuZy4gdGhlXG4gICAgIFtob3dfdG9fY2FuY2VsXSBncmFwaCwgdGhlIGludmFyaWFudHMgYXJlIGV4aXN0ZW50aWFsbHkgcXVhbnRpZmllZC5cblxuICAgICBOb3RlOiBpdCdzIHBvc3NpYmxlIHRvIHN0YXRpY2FsbHkgZGlzYWxsb3cgdGhlIHNldHRpbmcgb2YgdGhlIFtzdGF0ZV0gZmllbGRcbiAgICAgYnkgbWFraW5nIHR5cGUgW3Byb21pc2VdIHByaXZhdGUuIEhvd2V2ZXIsIHRoYXQgc2VlbXMgdG8gcmVxdWlyZSB3cml0aW5nIGFcbiAgICAgc2lnbmF0dXJlIHRoYXQgaXMgYSBuZWFyLWR1cGxpY2F0ZSBvZiBbTWFpbl9pbnRlcm5hbF90eXBlc10sIG9yIHNvbWUgYWJ1c2VcbiAgICAgb2YgZnVuY3RvcnMuICopXG5cblxuXG4gIHR5cGUgJ2EgbWF5X25vd19iZV9wcm94eSA9XG4gICAgfCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgOlxuICAgICAgKCdhLCBfLCBwZW5kaW5nKSBwcm9taXNlIC0+ICdhIG1heV9ub3dfYmVfcHJveHlcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuXG4gIGxldCBtYXlfbm93X2JlX3Byb3h5IHAgPSBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcFxuXG4gICgqIE1hbnkgZnVuY3Rpb25zLCBmb3IgZXhhbXBsZSBbTHd0LmJpbmRdIGFuZCBbTHd0LmpvaW5dLCBjcmVhdGUgYSBmcmVzaFxuICAgICBwZW5kaW5nIHByb21pc2UgW3BdIGFuZCByZXR1cm4gaXQgdG8gdGhlIHVzZXIuXG5cbiAgICAgVGhleSBkbyBub3QgcmV0dXJuIGEgY29ycmVzcG9uZGluZyByZXNvbHZlci4gVGhhdCBtZWFucyB0aGF0IG9ubHkgdGhlXG4gICAgIGZ1bmN0aW9uIGl0c2VsZiAodHlwaWNhbGx5LCBhIGNhbGxiYWNrIHJlZ2lzdGVyZWQgYnkgaXQpIGNhbiByZXNvbHZlIFtwXS5cbiAgICAgVGhlIG9ubHkgdGhpbmcgdGhlIHVzZXIgY2FuIGRvIGRpcmVjdGx5IGlzIHRyeSB0byBjYW5jZWwgW3BdLCBidXQsIHNpbmNlXG4gICAgIFtwXSBpcyBub3QgYW4gaW5pdGlhbCBwcm9taXNlLCB0aGUgY2FuY2VsbGF0aW9uIGF0dGVtcHQgc2ltcGx5IHByb3BhZ2F0ZXNcbiAgICAgcGFzdCBbcF0gdG8gW3BdJ3MgcHJlZGVjZXNzb3JzLiBJZiB0aGF0IGV2ZW50dWFsbHkgcmVzdWx0cyBpbiBjYW5jZWxpbmdcbiAgICAgW3BdLCBpdCB3aWxsIGJlIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc21zIG9mIHRoZSBmdW5jdGlvbiAoZS5nLlxuICAgICBbTHd0LmJpbmRdJ3MgY2FsbGJhY2spLlxuXG4gICAgIEFzIGEgcmVzdWx0LCB0aGUgb25seSBwb3NzaWJsZSBzdGF0ZSBjaGFuZ2UsIGJlZm9yZSB0aGUgY2FsbGJhY2ssIGlzIHRoYXRcbiAgICAgW3BdIG1heSBoYXZlIGJlY29tZSBhIHByb3h5LiBOb3csXG5cbiAgICAgLSBJZiBbcF0gZG9lcyBub3QgdW5kZXJnbyB0aGlzIHN0YXRlIGNoYW5nZSBhbmQgYmVjb21lIGEgcHJveHksIGl0IHJlbWFpbnNcbiAgICAgICBhbiB1bmRlcmx5aW5nLCBwZW5kaW5nIHByb21pc2UuXG4gICAgIC0gSWYgW3BdIGRvZXMgYmVjb21lIGEgcHJveHksIGl0IHdpbGwgYmUgYSBwcm94eSBmb3IgYW5vdGhlciBwcm9taXNlIFtwJ11cbiAgICAgICBjcmVhdGVkIGZyZXNoIGJ5IFtMd3QuYmluZF0sIHRvIHdoaWNoIHRoaXMgc2FtZSBhcmd1bWVudCBhcHBsaWVzLiBTZWVcbiAgICAgICBbbWFrZV9pbnRvX3Byb3h5XS5cblxuICAgICBTbywgYnkgaW5kdWN0aW9uIG9uIHRoZSBsZW5ndGggb2YgdGhlIHByb3h5IChbUHJveHkgX10pIGNoYWluLCBhdCB0aGUgdGltZVxuICAgICB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkLCBbcF0gaXMgZWl0aGVyIGFuIHVuZGVybHlpbmcsIHBlbmRpbmcgcHJvbWlzZSwgb3IgYVxuICAgICBwcm94eSBmb3IgYSBwZW5kaW5nIHByb21pc2UuXG5cbiAgICAgVGhlIGNhc3RcblxuICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpbiAuLi5cblxuICAgICBlbmNvZGVzIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGlzIHN0YXRlIGNoYW5nZS4gSXQgcmVwbGFjZXMgYSByZWZlcmVuY2VcblxuICAgICAgIHAgOiAoJ2EsIHVuZGVybHlpbmcsIHBlbmRpbmcpXG5cbiAgICAgd2l0aFxuXG4gICAgICAgcCA6ICgnYSwgJFVua25vd24sIHBlbmRpbmcpXG5cbiAgICAgYW5kIGlzIHR5cGljYWxseSBzZWVuIGF0IHRoZSBiZWdpbm5pbmcgb2YgY2FsbGJhY2tzIHJlZ2lzdGVyZWQgYnlcbiAgICAgW0x3dC5iaW5kXSBhbmQgc2ltaWxhciBmdW5jdGlvbnMuXG5cbiAgICAgVGhlIGNhc3QgaXMgYSBuby1vcCBjYXN0LiBUaGUgaW50cm9kdWN0aW9uIGFuZCBpbW1lZGlhdGUgZWxpbWluYXRpb24gb2ZcbiAgICAgW1N0YXRlX21heV9oYXZlX2NoYW5nZWQgX10gc2VlbXMgdG8gYmUgb3B0aW1pemVkIGF3YXkgZXZlbiBvbiBvbGQgdmVyc2lvbnNcbiAgICAgb2YgT0NhbWwuICopXG5lbmRcbm9wZW4gQmFzaWNfaGVscGVyc1xuXG4oKiBTbWFsbCBoZWxwZXJzIHRvIGF2b2lkIGNhdGNoaW5nIG9jYW1sLXJ1bnRpbWUgZXhjZXB0aW9ucyAqKVxubW9kdWxlIEV4Y2VwdGlvbl9maWx0ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZXhuIC0+IGJvb2xcbiAgbGV0IGhhbmRsZV9hbGwgPSBmdW4gXyAtPiB0cnVlXG4gIGxldCBoYW5kbGVfYWxsX2V4Y2VwdF9ydW50aW1lID0gZnVuY3Rpb25cbiAgICB8IE91dF9vZl9tZW1vcnkgLT4gZmFsc2VcbiAgICB8IFN0YWNrX292ZXJmbG93IC0+IGZhbHNlXG4gICAgfCBfIC0+IHRydWVcbiAgbGV0IHYgPVxuICAgICgqIERlZmF1bHQgdmFsdWU6IHRoZSBsZWdhY3kgYmVoYXZpb3VyIHRvIGF2b2lkIGJyZWFraW5nIHByb2dyYW1zICopXG4gICAgcmVmIGhhbmRsZV9hbGxcbiAgbGV0IHNldCBmID0gdiA6PSBmXG4gIGxldCBydW4gZSA9ICF2IGVcbmVuZFxuXG5tb2R1bGUgU2VxdWVuY2VfYXNzb2NpYXRlZF9zdG9yYWdlIDpcbnNpZ1xuICAoKiBQdWJsaWMgaW50ZXJmYWNlICopXG4gIHR5cGUgJ3Yga2V5XG4gIHZhbCBuZXdfa2V5IDogdW5pdCAtPiBfIGtleVxuICB2YWwgZ2V0IDogJ3Yga2V5IC0+ICd2IG9wdGlvblxuICB2YWwgd2l0aF92YWx1ZSA6ICd2IGtleSAtPiAndiBvcHRpb24gLT4gKHVuaXQgLT4gJ2IpIC0+ICdiXG5cbiAgKCogSW50ZXJuYWwgaW50ZXJmYWNlICopXG4gIHZhbCBjdXJyZW50X3N0b3JhZ2UgOiBzdG9yYWdlIHJlZlxuZW5kID1cbnN0cnVjdFxuICAoKiBUaGUgaWRlYSBiZWhpbmQgc2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlIGlzIHRvIHByZXNlcnZlIHNvbWUgdmFsdWVzXG4gICAgIGR1cmluZyBhIGNhbGwgdG8gW2JpbmRdIG9yIG90aGVyIHNlcXVlbnRpYWwgY29tcG9zaXRpb24gb3BlcmF0aW9uLCBhbmRcbiAgICAgcmVzdG9yZSB0aG9zZSB2YWx1ZXMgaW4gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uOlxuXG4gICAgICAgTHd0LndpdGhfdmFsdWUgbXlfa2V5IChTb21lIFwiZm9vXCIpIChmdW4gKCkgLT5cbiAgICAgICBwID58PSBmdW4gKCkgLT5cbiAgICAgICBhc3NlcnQgKEx3dC5nZXQgbXlfa2V5ID0gU29tZSBcImZvb1wiKSlcbiAgICAgICAgICgqIFdpbGwgc3VjY2VlZCBldmVuIGlmIHRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIGxhdGVyLiAqKVxuXG4gICAgIE5vdGUgdGhhdCBpdCBkb2VzIG5vdCBtYXR0ZXIgdGhhdCB0aGUgY2FsbGJhY2sgaXMgZGVmaW5lZCB3aXRoaW4gYW5cbiAgICAgYXJndW1lbnQgb2YgW3dpdGhfdmFsdWVdLCBpLmUuLCB0aGlzIGRvZXMgdGhlIHNhbWU6XG5cbiAgICAgICBsZXQgZiA9IGZ1biAoKSAtPiBhc3NlcnQgKEx3dC5nZXQgbXlfa2V5ID0gU29tZSBcImZvb1wiKSBpblxuICAgICAgIEx3dC53aXRoX3ZhbHVlIG15X2tleSAoU29tZSBcImZvb1wiKSAoZnVuICgpIC0+IHAgPnw9IGYpXG5cbiAgICAgQWxsIHRoYXQgbWF0dGVycyBpcyB0aGF0IHRoZSB0b3AtbW9zdCBzZXF1ZW5jaW5nIG9wZXJhdGlvbiAoaW4gdGhpcyBjYXNlLFxuICAgICBtYXApIGlzIGV4ZWN1dGVkIGJ5IHRoYXQgYXJndW1lbnQuXG5cbiAgICAgVGhpcyBpcyBpbXBsZW1lbnRlZCB1c2luZyBhIHNpbmdsZSBnbG9iYWwgaGV0ZXJvZ2VuZW91cyBrZXktdmFsdWUgbWFwLlxuICAgICBTZXF1ZW50aWFsIGNvbXBvc2l0aW9uIGZ1bmN0aW9ucyBzbmFwc2hvdCB0aGlzIG1hcCB3aGVuIHRoZXkgYXJlIGNhbGxlZCxcbiAgICAgYW5kIHJlc3RvcmUgdGhlIHNuYXBzaG90IHJpZ2h0IGJlZm9yZSBjYWxsaW5nIHRoZSB1c2VyJ3MgY2FsbGJhY2suIFRoZSBzYW1lXG4gICAgIGhhcHBlbnMgZm9yIGNhbmNlbCB0cmlnZ2VycyBhZGRlZCBieSBbb25fY2FuY2VsXS5cblxuICAgICBNYWludGFpbmVyJ3Mgbm90ZTogSSB0aGluayB1c2luZyB0aGlzIG1lY2hhbmlzbSBzaG91bGQgYmUgZGlzY291cmFnZWQgaW5cbiAgICAgbmV3IGNvZGUuICopXG5cbiAgdHlwZSAndiBrZXkgPSB7XG4gICAgaWQgOiBpbnQ7XG4gICAgbXV0YWJsZSB2YWx1ZSA6ICd2IG9wdGlvbjtcbiAgfVxuXG4gIGxldCBuZXh0X2tleV9pZCA9IHJlZiAwXG5cbiAgbGV0IG5ld19rZXkgKCkgPVxuICAgIGxldCBpZCA9ICFuZXh0X2tleV9pZCBpblxuICAgIG5leHRfa2V5X2lkIDo9IGlkICsgMTtcbiAgICB7aWQgPSBpZDsgdmFsdWUgPSBOb25lfVxuXG4gIGxldCBjdXJyZW50X3N0b3JhZ2UgPSByZWYgU3RvcmFnZV9tYXAuZW1wdHlcblxuICBsZXQgZ2V0IGtleSA9XG4gICAgaWYgU3RvcmFnZV9tYXAubWVtIGtleS5pZCAhY3VycmVudF9zdG9yYWdlIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWZyZXNoID0gU3RvcmFnZV9tYXAuZmluZCBrZXkuaWQgIWN1cnJlbnRfc3RvcmFnZSBpblxuICAgICAgcmVmcmVzaCAoKTtcbiAgICAgIGxldCB2YWx1ZSA9IGtleS52YWx1ZSBpblxuICAgICAga2V5LnZhbHVlIDwtIE5vbmU7XG4gICAgICB2YWx1ZVxuICAgIGVuZFxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuICBsZXQgd2l0aF92YWx1ZSBrZXkgdmFsdWUgZiA9XG4gICAgbGV0IG5ld19zdG9yYWdlID1cbiAgICAgIG1hdGNoIHZhbHVlIHdpdGhcbiAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgIGxldCByZWZyZXNoID0gZnVuICgpIC0+IGtleS52YWx1ZSA8LSB2YWx1ZSBpblxuICAgICAgICBTdG9yYWdlX21hcC5hZGQga2V5LmlkIHJlZnJlc2ggIWN1cnJlbnRfc3RvcmFnZVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIFN0b3JhZ2VfbWFwLnJlbW92ZSBrZXkuaWQgIWN1cnJlbnRfc3RvcmFnZVxuICAgIGluXG5cbiAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cbiAgICBjdXJyZW50X3N0b3JhZ2UgOj0gbmV3X3N0b3JhZ2U7XG4gICAgdHJ5XG4gICAgICBsZXQgcmVzdWx0ID0gZiAoKSBpblxuICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG4gICAgICByZXN1bHRcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPlxuICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG4gICAgICByYWlzZSBleG5cbmVuZFxuaW5jbHVkZSBTZXF1ZW5jZV9hc3NvY2lhdGVkX3N0b3JhZ2VcblxuXG5cbm1vZHVsZSBQZW5kaW5nX2NhbGxiYWNrcyA6XG5zaWdcbiAgKCogTXV0YXRpbmcgY2FsbGJhY2sgbGlzdHMgYXR0YWNoZWQgdG8gcGVuZGluZyBwcm9taXNlcyAqKVxuICB2YWwgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayA6XG4gICAgJ2EgY2FsbGJhY2tzIC0+ICdhIHJlZ3VsYXJfY2FsbGJhY2sgLT4gdW5pdFxuICB2YWwgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgOlxuICAgICdhIHQgbGlzdCAtPiAnYSByZWd1bGFyX2NhbGxiYWNrIC0+IHVuaXRcbiAgdmFsIGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19hbmRfZ2l2ZV9yZW1vdmVfZnVuY3Rpb24gOlxuICAgICdhIHQgbGlzdCAtPiAnYSByZWd1bGFyX2NhbGxiYWNrIC0+IGNhbmNlbF9jYWxsYmFja1xuICB2YWwgYWRkX2NhbmNlbF9jYWxsYmFjayA6ICdhIGNhbGxiYWNrcyAtPiBjYW5jZWxfY2FsbGJhY2sgLT4gdW5pdFxuICB2YWwgbWVyZ2VfY2FsbGJhY2tzIDogZnJvbTonYSBjYWxsYmFja3MgLT4gaW50bzonYSBjYWxsYmFja3MgLT4gdW5pdFxuZW5kID1cbnN0cnVjdFxuICBsZXQgY29uY2F0X3JlZ3VsYXJfY2FsbGJhY2tzIGwxIGwyID1cbiAgICBiZWdpbiBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5LCBfIC0+IGwyXG4gICAgfCBfLCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHkgLT4gbDFcbiAgICB8IF8sIF8gLT4gUmVndWxhcl9jYWxsYmFja19saXN0X2NvbmNhdCAobDEsIGwyKVxuICAgIGVuZCBbQG9jYW1sLndhcm5pbmcgXCItNFwiXVxuXG4gIGxldCBjb25jYXRfY2FuY2VsX2NhbGxiYWNrcyBsMSBsMiA9XG4gICAgYmVnaW4gbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2VtcHR5LCBfIC0+IGwyXG4gICAgfCBfLCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9lbXB0eSAtPiBsMVxuICAgIHwgXywgXyAtPiBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jb25jYXQgKGwxLCBsMilcbiAgICBlbmQgW0BvY2FtbC53YXJuaW5nIFwiLTRcIl1cblxuICAoKiBJbiBhIGNhbGxiYWNrIGxpc3QsIGZpbHRlcnMgb3V0IGNlbGxzIG9mIGV4cGxpY2l0bHkgcmVtb3ZhYmxlIGNhbGxiYWNrc1xuICAgICB0aGF0IGhhdmUgYmVlbiByZW1vdmVkLiAqKVxuICBsZXQgcmVjIGNsZWFuX3VwX2NhbGxiYWNrX2NlbGxzID0gZnVuY3Rpb25cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFjayB7Y29udGVudHMgPSBOb25lfSAtPlxuICAgICAgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5XG5cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFjayB7Y29udGVudHMgPSBTb21lIF99XG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIF9cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eSBhcyBjYWxsYmFja3MgLT5cbiAgICAgIGNhbGxiYWNrc1xuXG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfY29uY2F0IChsMSwgbDIpIC0+XG4gICAgICBsZXQgbDEgPSBjbGVhbl91cF9jYWxsYmFja19jZWxscyBsMSBpblxuICAgICAgbGV0IGwyID0gY2xlYW5fdXBfY2FsbGJhY2tfY2VsbHMgbDIgaW5cbiAgICAgIGNvbmNhdF9yZWd1bGFyX2NhbGxiYWNrcyBsMSBsMlxuXG4gICgqIFNlZSBbY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfY2VsbF0gYW5kIFttZXJnZV9jYWxsYmFja3NdLiAqKVxuICBsZXQgY2xlYW51cF90aHJvdHRsZSA9IDQyXG5cbiAgKCogRXhwbGljaXRseSByZW1vdmFibGUgY2FsbGJhY2tzIGFyZSBhZGRlZCAobWFpbmx5KSBieSBbTHd0LmNob29zZV0gYW5kIGl0c1xuICAgICBzaW1pbGFyIGZ1bmN0aW9ucy4gSW4gW0x3dC5jaG9vc2UgW3A7IHAnXV0sIGlmIFtwJ10gcmVzb2x2ZXMgZmlyc3QsIHRoZVxuICAgICBjYWxsYmFjayBhZGRlZCBieSBbTHd0LmNob29zZV0gdG8gW3BdIGlzIHJlbW92ZWQuXG5cbiAgICAgVGhlIHJlbW92YWwgaXRzZWxmIGlzIGFjY29tcGxpc2hlZCB3aGVuIHRoaXMgZnVuY3Rpb24gY2xlYXJzIHRoZSByZWZlcmVuY2VcbiAgICAgY2VsbCBbY2VsbF0sIHdoaWNoIGNvbnRhaW5zIHRoZSByZWZlcmVuY2UgdG8gdGhhdCBjYWxsYmFjay5cblxuICAgICBJZiBbcF0gaXMgYSBsb25nLXBlbmRpbmcgcHJvbWlzZSB0aGF0IHJlcGVhdGVkbHkgcGFydGljaXBhdGVzIGluXG4gICAgIFtMd3QuY2hvb3NlXSwgcGVyaGFwcyBpbiBhIGxvb3AsIGl0IHdpbGwgYWNjdW11bGF0ZSBhIGxhcmdlIG51bWJlciBvZlxuICAgICBjbGVhcmVkIHJlZmVyZW5jZSBjZWxscyBpbiB0aGlzIGZhc2hpb24uIFRvIGF2b2lkIGEgbWVtb3J5IGxlYWssIHRoZXkgbXVzdFxuICAgICBiZSBjbGVhbmVkIHVwLiBIb3dldmVyLCB0aGUgY2VsbHMgYXJlIG5vdCBjbGVhbmVkIHVwIG9uICpldmVyeSogcmVtb3ZhbCxcbiAgICAgcHJlc3VtYWJseSBiZWNhdXNlIHNjYW5uaW5nIHRoZSBjYWxsYmFjayBsaXN0IHRoYXQgb2Z0ZW4sIGFuZCByZWJ1aWxkaW5nXG4gICAgIGl0LCBjYW4gZ2V0IGV4cGVuc2l2ZS5cblxuICAgICBDbGVhbnVwIGlzIHRocm90dGxlZCBieSBtYWludGFpbmluZyBhIGNvdW50ZXIsIFtjbGVhbnVwc19kZWZlcnJlZF0sIG9uIGVhY2hcbiAgICAgcGVuZGluZyBwcm9taXNlLiBUaGUgY291bnRlciBpcyBpbmNyZW1lbnRlZCBlYWNoIHRpbWUgdGhpcyBmdW5jdGlvbiB3YW50c1xuICAgICB0byBjbGVhbiB0aGUgY2FsbGJhY2sgbGlzdCAocmlnaHQgYWZ0ZXIgY2xlYXJpbmcgYSBjZWxsKS4gV2hlbiB0aGUgY291bnRlclxuICAgICByZWFjaGVzIFtjbGVhbnVwX3Rocm90dGxlXSwgdGhlIGNhbGxiYWNrIGxpc3QgaXMgYWN0dWFsbHkgc2Nhbm5lZCBhbmRcbiAgICAgY2xlYXJlZCBjYWxsYmFjayBjZWxscyBhcmUgcmVtb3ZlZC4gKilcbiAgbGV0IGNsZWFyX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2NlbGwgY2VsbCB+b3JpZ2luYWxseV9hZGRlZF90bzpwcyA9XG4gICAgY2VsbCA6PSBOb25lO1xuXG4gICAgKCogR28gdGhyb3VnaCB0aGUgcHJvbWlzZXMgdGhlIGNlbGwgaGFkIG9yaWdpbmFsbHkgYmVlbiBhZGRlZCB0bywgYW5kIGVpdGhlclxuICAgICAgIGRlZmVyIGEgY2xlYW51cCwgb3IgYWN0dWFsbHkgY2xlYW4gdXAgdGhlaXIgY2FsbGJhY2sgbGlzdHMuICopXG4gICAgcHMgfD4gTGlzdC5pdGVyIChmdW4gcCAtPlxuICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgICgqIFNvbWUgb2YgdGhlIHByb21pc2VzIG1heSBhbHJlYWR5IGhhdmUgYmVlbiByZXNvbHZlZCBhdCB0aGUgdGltZSB0aGlzXG4gICAgICAgICBmdW5jdGlvbiBpcyBjYWxsZWQuICopXG4gICAgICB8IEZ1bGZpbGxlZCBfIC0+ICgpXG4gICAgICB8IFJlamVjdGVkIF8gLT4gKClcblxuICAgICAgfCBQZW5kaW5nIGNhbGxiYWNrcyAtPlxuICAgICAgICBtYXRjaCBjYWxsYmFja3MucmVndWxhcl9jYWxsYmFja3Mgd2l0aFxuICAgICAgICAoKiBJZiB0aGUgcHJvbWlzZSBoYXMgb25seSBvbmUgcmVndWxhciBjYWxsYmFjaywgYW5kIGl0IGlzIHJlbW92YWJsZSwgaXRcbiAgICAgICAgICAgbXVzdCBoYXZlIGJlZW4gdGhlIGNlbGwgY2xlYXJlZCBpbiB0aGlzIGZ1bmN0aW9uLCBhYm92ZS4gSW4gdGhhdFxuICAgICAgICAgICBjYXNlLCBqdXN0IHNldCBpdHMgY2FsbGJhY2sgbGlzdCB0byBlbXB0eS4gKilcbiAgICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2sgXyAtPlxuICAgICAgICAgIGNhbGxiYWNrcy5yZWd1bGFyX2NhbGxiYWNrcyA8LSBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHlcblxuICAgICAgICAoKiBNYWludGFpbmVyJ3Mgbm90ZTogSSB0aGluayB0aGlzIGZ1bmN0aW9uIHNob3VsZG4ndCB0cnkgdG8gdHJpZ2dlciBhXG4gICAgICAgICAgIGNsZWFudXAgaW4gdGhlIGZpcnN0IHR3byBjYXNlcywgYnV0IEkgYW0gcHJlc2VydmluZyB0aGVtIGZvciBub3csIGFzXG4gICAgICAgICAgIHRoaXMgaXMgaG93IHRoZSBjb2RlIHdhcyB3cml0dGVuIGluIHRoZSBwYXN0LiAqKVxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eVxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgX1xuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9jb25jYXQgXyAtPlxuICAgICAgICAgIGxldCBjbGVhbnVwc19kZWZlcnJlZCA9IGNhbGxiYWNrcy5jbGVhbnVwc19kZWZlcnJlZCArIDEgaW5cbiAgICAgICAgICBpZiBjbGVhbnVwc19kZWZlcnJlZCA+IGNsZWFudXBfdGhyb3R0bGUgdGhlbiBiZWdpblxuICAgICAgICAgICAgY2FsbGJhY2tzLmNsZWFudXBzX2RlZmVycmVkIDwtIDA7XG4gICAgICAgICAgICBjYWxsYmFja3MucmVndWxhcl9jYWxsYmFja3MgPC1cbiAgICAgICAgICAgICAgY2xlYW5fdXBfY2FsbGJhY2tfY2VsbHMgY2FsbGJhY2tzLnJlZ3VsYXJfY2FsbGJhY2tzXG4gICAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICAgIGNhbGxiYWNrcy5jbGVhbnVwc19kZWZlcnJlZCA8LSBjbGVhbnVwc19kZWZlcnJlZClcblxuICAoKiBDb25jYXRlbmF0ZXMgYm90aCBraW5kcyBvZiBjYWxsYmFja3Mgb24gW35mcm9tXSB0byB0aGUgY29ycmVzcG9uZGluZyBsaXN0c1xuICAgICBvZiBbfmludG9dLiBUaGUgY2FsbGJhY2sgbGlzdHMgb24gW35mcm9tXSBhcmUgKm5vdCogdGhlbiBjbGVhcmVkLCBiZWNhdXNlXG4gICAgIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgYnkgW1NlcXVlbnRpYWxfY29tcG9zaXRpb24ubWFrZV9pbnRvX3Byb3h5XSxcbiAgICAgd2hpY2ggaW1tZWRpYXRlbHkgY2hhbmdlcyB0aGUgc3RhdGUgb2YgW35mcm9tXSBhbmQgbG9zZXMgcmVmZXJlbmNlcyB0byB0aGVcbiAgICAgb3JpZ2luYWwgY2FsbGJhY2sgbGlzdHMuXG5cbiAgICAgVGhlIFtjbGVhbnVwc19kZWZlcnJlZF0gZmllbGRzIG9mIGJvdGggcHJvbWlzZXMgYXJlIHN1bW1lZCwgYW5kIGlmIHRoZSBzdW1cbiAgICAgZXhjZWVkcyBbY2xlYW51cF90aHJvdHRsZV0sIGEgY2xlYW51cCBvZiByZWd1bGFyIGNhbGxiYWNrcyBpcyB0cmlnZ2VyZWQuXG4gICAgIFRoaXMgaXMgdG8gcHJldmVudCBtZW1vcnkgbGVha3M7IHNlZVxuICAgICBbY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfY2VsbF0uICopXG4gIGxldCBtZXJnZV9jYWxsYmFja3MgfmZyb20gfmludG8gPVxuICAgIGxldCByZWd1bGFyX2NhbGxiYWNrcyA9XG4gICAgICBjb25jYXRfcmVndWxhcl9jYWxsYmFja3MgaW50by5yZWd1bGFyX2NhbGxiYWNrcyBmcm9tLnJlZ3VsYXJfY2FsbGJhY2tzIGluXG4gICAgbGV0IGNsZWFudXBzX2RlZmVycmVkID0gaW50by5jbGVhbnVwc19kZWZlcnJlZCArIGZyb20uY2xlYW51cHNfZGVmZXJyZWQgaW5cblxuICAgIGxldCByZWd1bGFyX2NhbGxiYWNrcywgY2xlYW51cHNfZGVmZXJyZWQgPVxuICAgICAgaWYgY2xlYW51cHNfZGVmZXJyZWQgPiBjbGVhbnVwX3Rocm90dGxlIHRoZW5cbiAgICAgICAgY2xlYW5fdXBfY2FsbGJhY2tfY2VsbHMgcmVndWxhcl9jYWxsYmFja3MsIDBcbiAgICAgIGVsc2VcbiAgICAgICAgcmVndWxhcl9jYWxsYmFja3MsIGNsZWFudXBzX2RlZmVycmVkXG4gICAgaW5cblxuICAgIGxldCBjYW5jZWxfY2FsbGJhY2tzID1cbiAgICAgIGNvbmNhdF9jYW5jZWxfY2FsbGJhY2tzIGludG8uY2FuY2VsX2NhbGxiYWNrcyBmcm9tLmNhbmNlbF9jYWxsYmFja3MgaW5cblxuICAgIGludG8ucmVndWxhcl9jYWxsYmFja3MgPC0gcmVndWxhcl9jYWxsYmFja3M7XG4gICAgaW50by5jYW5jZWxfY2FsbGJhY2tzIDwtIGNhbmNlbF9jYWxsYmFja3M7XG4gICAgaW50by5jbGVhbnVwc19kZWZlcnJlZCA8LSBjbGVhbnVwc19kZWZlcnJlZFxuXG5cblxuICAoKiBHZW5lcmFsLCBpbnRlcm5hbCwgZnVuY3Rpb24gZm9yIGFkZGluZyBhIHJlZ3VsYXIgY2FsbGJhY2suICopXG4gIGxldCBhZGRfcmVndWxhcl9jYWxsYmFja19saXN0X25vZGUgY2FsbGJhY2tzIG5vZGUgPVxuICAgIGNhbGxiYWNrcy5yZWd1bGFyX2NhbGxiYWNrcyA8LVxuICAgICAgbWF0Y2ggY2FsbGJhY2tzLnJlZ3VsYXJfY2FsbGJhY2tzIHdpdGhcbiAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5IC0+XG4gICAgICAgIG5vZGVcbiAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBfXG4gICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFjayBfXG4gICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9jb25jYXQgXyBhcyBleGlzdGluZyAtPlxuICAgICAgICBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfY29uY2F0IChub2RlLCBleGlzdGluZylcblxuICBsZXQgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBjYWxsYmFja3MgZiA9XG4gICAgYWRkX3JlZ3VsYXJfY2FsbGJhY2tfbGlzdF9ub2RlXG4gICAgICBjYWxsYmFja3MgKFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgZilcblxuICAoKiBBZGRzIFtjYWxsYmFja10gYXMgcmVtb3ZhYmxlIHRvIGVhY2ggcHJvbWlzZSBpbiBbcHNdLiBUaGUgZmlyc3QgcHJvbWlzZSBpblxuICAgICBbcHNdIHRvIHRyaWdnZXIgW2NhbGxiYWNrXSByZW1vdmVzIFtjYWxsYmFja10gZnJvbSB0aGUgb3RoZXIgcHJvbWlzZXM7IHRoaXNcbiAgICAgZ3VhcmFudGVlcyB0aGF0IFtjYWxsYmFja10gaXMgY2FsbGVkIGF0IG1vc3Qgb25jZS4gQWxsIHRoZSBwcm9taXNlcyBpbiBbcHNdXG4gICAgIG11c3QgYmUgcGVuZGluZy5cblxuICAgICBUaGlzIGlzIGFuIGludGVybmFsIGZ1bmN0aW9uLCBpbmRpcmVjdGx5IHVzZWQgYnkgdGhlIGltcGxlbWVudGF0aW9ucyBvZlxuICAgICBbTHd0LmNob29zZV0gYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLiAqKVxuICBsZXQgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2FuZF9naXZlX2NlbGwgcHMgZiA9XG4gICAgbGV0IHJlYyBjZWxsID0gcmVmIChTb21lIHNlbGZfcmVtb3ZpbmdfY2FsbGJhY2tfd3JhcHBlcilcbiAgICBhbmQgc2VsZl9yZW1vdmluZ19jYWxsYmFja193cmFwcGVyIHJlc3VsdCA9XG4gICAgICBjbGVhcl9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19jZWxsIGNlbGwgfm9yaWdpbmFsbHlfYWRkZWRfdG86cHM7XG4gICAgICBmIHJlc3VsdFxuICAgIGluXG5cbiAgICBsZXQgbm9kZSA9IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFjayBjZWxsIGluXG4gICAgcHMgfD4gTGlzdC5pdGVyIChmdW4gcCAtPlxuICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgIHwgUGVuZGluZyBjYWxsYmFja3MgLT4gYWRkX3JlZ3VsYXJfY2FsbGJhY2tfbGlzdF9ub2RlIGNhbGxiYWNrcyBub2RlXG4gICAgICB8IEZ1bGZpbGxlZCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBSZWplY3RlZCBfIC0+IGFzc2VydCBmYWxzZSk7XG5cbiAgICBjZWxsXG5cbiAgbGV0IGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja190b19lYWNoX29mIHBzIGYgPVxuICAgIGlnbm9yZSAoYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2FuZF9naXZlX2NlbGwgcHMgZilcblxuICAoKiBUaGlzIGlzIGJhc2ljYWxseSBqdXN0IHRvIHN1cHBvcnQgW0x3dC5wcm90ZWN0ZWRdLCB3aGljaCBuZWVkcyB0byByZW1vdmVcbiAgICAgdGhlIGNhbGxiYWNrIGluIGNpcmN1bXN0YW5jZXMgb3RoZXIgdGhhbiB0aGUgY2FsbGJhY2sgYmVpbmcgY2FsbGVkLiAqKVxuICBsZXQgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2FuZF9naXZlX3JlbW92ZV9mdW5jdGlvbiBwcyBmID1cbiAgICBsZXQgY2VsbCA9IGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19hbmRfZ2l2ZV9jZWxsIHBzIGYgaW5cbiAgICBmdW4gKCkgLT5cbiAgICAgIGNsZWFyX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2NlbGwgY2VsbCB+b3JpZ2luYWxseV9hZGRlZF90bzpwc1xuXG4gIGxldCBhZGRfY2FuY2VsX2NhbGxiYWNrIGNhbGxiYWNrcyBmID1cbiAgICBsZXQgbm9kZSA9IENhbmNlbF9jYWxsYmFja19saXN0X2NhbGxiYWNrICghY3VycmVudF9zdG9yYWdlLCBmKSBpblxuXG4gICAgY2FsbGJhY2tzLmNhbmNlbF9jYWxsYmFja3MgPC1cbiAgICAgIG1hdGNoIGNhbGxiYWNrcy5jYW5jZWxfY2FsbGJhY2tzIHdpdGhcbiAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfZW1wdHkgLT5cbiAgICAgICAgbm9kZVxuXG4gICAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2NhbGxiYWNrIF9cbiAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfcmVtb3ZlX3NlcXVlbmNlX25vZGUgX1xuICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jb25jYXQgXyAtPlxuICAgICAgICBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jb25jYXQgKG5vZGUsIGNhbGxiYWNrcy5jYW5jZWxfY2FsbGJhY2tzKVxuZW5kXG5vcGVuIFBlbmRpbmdfY2FsbGJhY2tzXG5cblxuXG5tb2R1bGUgUmVzb2x1dGlvbl9sb29wIDpcbnNpZ1xuICAoKiBBbGwgdXNlci1wcm92aWRlZCBjYWxsYmFja3MgYXJlIGNhbGxlZCBieSBMd3Qgb25seSB0aHJvdWdoIHRoaXMgbW9kdWxlLiBJdFxuICAgICB0cmFja3MgdGhlIGN1cnJlbnQgY2FsbGJhY2sgc3RhY2sgZGVwdGgsIGFuZCBkZWNpZGVzIHdoZXRoZXIgZWFjaCBjYWxsYmFja1xuICAgICBjYWxsIHNob3VsZCBiZSBkZWZlcnJlZCBvciBub3QuICopXG5cbiAgKCogSW50ZXJuYWwgaW50ZXJmYWNlIHVzZWQgb25seSBpbiB0aGlzIG1vZHVsZSBMd3QgKilcbiAgdmFsIHJlc29sdmUgOlxuICAgID9hbGxvd19kZWZlcnJpbmc6Ym9vbCAtPlxuICAgID9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGg6aW50IC0+XG4gICAgKCdhLCB1bmRlcmx5aW5nLCBwZW5kaW5nKSBwcm9taXNlIC0+XG4gICAgJ2EgcmVzb2x2ZWRfc3RhdGUgLT5cbiAgICAgICgnYSwgdW5kZXJseWluZywgcmVzb2x2ZWQpIHN0YXRlX2NoYW5nZWRcblxuICB2YWwgcnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtIDpcbiAgICA/YWxsb3dfZGVmZXJyaW5nOmJvb2wgLT5cbiAgICA/bWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoOmludCAtPlxuICAgICgnYSBjYWxsYmFja3MpIC0+XG4gICAgJ2EgcmVzb2x2ZWRfc3RhdGUgLT5cbiAgICAgIHVuaXRcblxuICB2YWwgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0IDpcbiAgICA/cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOmJvb2wgLT5cbiAgICBjYWxsYmFjazoodW5pdCAtPiAnYSkgLT5cbiAgICBpZl9kZWZlcnJlZDoodW5pdCAtPiAnYSAqICdiIHJlZ3VsYXJfY2FsbGJhY2sgKiAnYiByZXNvbHZlZF9zdGF0ZSkgLT5cbiAgICAgICdhXG5cbiAgdmFsIGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIDogKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcblxuICAoKiBJbnRlcm5hbCBpbnRlcmZhY2UgZXhwb3NlZCB0byBvdGhlciBtb2R1bGVzIGluIEx3dCAqKVxuICB2YWwgYWJhbmRvbl93YWtldXBzIDogdW5pdCAtPiB1bml0XG5cbiAgKCogUHVibGljIGludGVyZmFjZSAqKVxuICBleGNlcHRpb24gQ2FuY2VsZWRcblxuICB2YWwgYXN5bmNfZXhjZXB0aW9uX2hvb2sgOiAoZXhuIC0+IHVuaXQpIHJlZlxuZW5kID1cbnN0cnVjdFxuICAoKiBXaGVuIEx3dCBuZWVkcyB0byBjYWxsIGEgY2FsbGJhY2ssIGl0IGVudGVycyB0aGUgcmVzb2x1dGlvbiBsb29wLiBUaGlzXG4gICAgIHR5cGljYWxseSBoYXBwZW5zIHdoZW4gTHd0IHNldHMgdGhlIHN0YXRlIG9mIG9uZSBwcm9taXNlIHRvIFtGdWxmaWxsZWQgX11cbiAgICAgb3IgW1JlamVjdGVkIF9dLiBUaGUgY2FsbGJhY2tzIHRoYXQgd2VyZSBhdHRhY2hlZCB0byB0aGUgcHJvbWlzZSB3aGVuIGl0XG4gICAgIHdhcyBwZW5kaW5nIG11c3QgdGhlbiBiZSBjYWxsZWQuXG5cbiAgICAgVGhpcyBhbHNvIGhhcHBlbnMgaW4gYSBmZXcgb3RoZXIgc2l0dWF0aW9ucy4gRm9yIGV4YW1wbGUsIHdoZW4gW0x3dC5iaW5kXVxuICAgICBpcyBjYWxsZWQgb24gYSBwcm9taXNlLCBidXQgdGhhdCBwcm9taXNlIGlzIGFscmVhZHkgcmVzb2x2ZWQsIHRoZSBjYWxsYmFja1xuICAgICBwYXNzZWQgdG8gW2JpbmRdIG11c3QgYmUgY2FsbGVkLlxuXG4gICAgIFRoZSBjYWxsYmFja3MgdHJpZ2dlcmVkIGR1cmluZyB0aGUgcmVzb2x1dGlvbiBsb29wIG1pZ2h0IHJlc29sdmUgbW9yZVxuICAgICBwcm9taXNlcywgdHJpZ2dlcmluZyBtb3JlIGNhbGxiYWNrcywgYW5kIHNvIG9uLiBUaGlzIGlzIHdoYXQgbWFrZXMgdGhlXG4gICAgIHJlc29sdXRpb24gbG9vcCBhIHtlIGxvb3B9LlxuXG4gICAgIEx3dCBnZW5lcmFsbHkgdHJpZXMgdG8gY2FsbCBlYWNoIGNhbGxiYWNrIGltbWVkaWF0ZWx5LiBIb3dldmVyLCB0aGlzIGNhblxuICAgICBsZWFkIHRvIGEgcHJvZ3Jlc3NpdmUgZGVlcGVuaW5nIG9mIHRoZSBjYWxsIHN0YWNrLCB1bnRpbCB0aGVyZSBpcyBhIHN0YWNrXG4gICAgIG92ZXJmbG93LiBUaGlzIGNhbid0IGJlIGF2b2lkZWQgYnkgZG9pbmcgdGFpbCBjYWxscywgYmVjYXVzZSBMd3QgYWx3YXlzXG4gICAgIG5lZWRzIHRvIGRvIGV4Y2VwdGlvbiBoYW5kbGluZyBhcm91bmQgY2FsbGJhY2tzIGNhbGxzOiBlYWNoIGNhbGxiYWNrIGNhbGxcbiAgICAgaXMgZm9sbG93ZWQgYnkgYW4gZXhjZXB0aW9uIGhhbmRsZXIuIEluc3RlYWQsIHdoYXQgTHd0IGRvZXMgaXMgdHJhY2sgdGhlXG4gICAgIGN1cnJlbnQgY2FsbGJhY2sgY2FsbCBkZXB0aC4gT25jZSB0aGF0IGRlcHRoIHJlYWNoZXMgYSBjZXJ0YWluIG51bWJlcixcbiAgICAgW2RlZmF1bHRfbWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoXSwgZGVmaW5lZCBiZWxvdywgZnVydGhlciBjYWxsYmFja3NcbiAgICAgYXJlIGRlZmVycmVkIGludG8gYSBxdWV1ZSBpbnN0ZWFkLiBUaGF0IHF1ZXVlIGlzIGRyYWluZWQgd2hlbiBMd3QgZXhpdHNcbiAgICAgZnJvbSB0aGUgdG9wLW1vc3QgY2FsbGJhY2sgY2FsbCB0aGF0IHRyaWdnZXJlZCB0aGUgcmVzb2x1dGlvbiBsb29wIGluIHRoZVxuICAgICBmaXJzdCBwbGFjZS5cblxuICAgICBUbyBlbnN1cmUgdGhhdCB0aGlzIGRlZmVycmFsIG1lY2hhbmlzbSBpcyBhbHdheXMgcHJvcGVybHkgaW52b2tlZCwgYWxsXG4gICAgIGNhbGxiYWNrcyBjYWxsZWQgYnkgTHd0IGFyZSBjYWxsZWQgdGhyb3VnaCBvbmUgb2YgdGhyZWUgZnVuY3Rpb25zIHByb3ZpZGVkXG4gICAgIGJ5IHRoaXMgbW9kdWxlOlxuXG4gICAgIC0gW3Jlc29sdmVdLCB3aGljaCBjYWxscyBhbGwgdGhlIGNhbGxiYWNrcyBhc3NvY2lhdGVkIHRvIGEgcGVuZGluZyBwcm9taXNlXG4gICAgICAgKGFuZCByZXNvbHZlcyBpdCwgY2hhbmdpbmcgaXRzIHN0YXRlKS5cbiAgICAgLSBbcnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtXSwgd2hpY2ggaXMgaW50ZXJuYWxseSB1c2VkIGJ5IFtyZXNvbHZlXSB0b1xuICAgICAgIGNhbGwgY2FsbGJhY2tzIHRoYXQgYXJlIGluIGEgcmVjb3JkIG9mIHR5cGUgWydhIGNhbGxiYWNrc10sIHdoaWNoIHJlY29yZHNcbiAgICAgICBhcmUgYXNzb2NpYXRlZCB3aXRoIHBlbmRpbmcgcHJvbWlzZXMuIFRoaXMgZnVuY3Rpb24gaXMgZXhwb3NlZCBiZWNhdXNlXG4gICAgICAgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgW0x3dC5jYW5jZWxdIG5lZWRzIHRvIGNhbGwgaXQgZGlyZWN0bHkuXG4gICAgICAgUHJvbWlzZSByZXNvbHV0aW9uIGFuZCBjYWxsYmFjayBjYWxsaW5nIGFyZSBzZXBhcmF0ZWQgaW4gYSB1bmlxdWUgd2F5IGluXG4gICAgICAgW2NhbmNlbF0uXG4gICAgIC0gW3J1bl9jYWxsYmFja19vcl9kZWZlcl9pdF0sIHdoaWNoIGlzIHVzZWQgYnkgW0x3dC5iaW5kXSBhbmQgc2ltaWxhclxuICAgICAgIGZ1bmN0aW9ucyB0byBjYWxsIHNpbmdsZSBjYWxsYmFja3Mgd2hlbiB0aGUgcHJvbWlzZXMgcGFzc2VkIHRvXG4gICAgICAgW0x3dC5iaW5kXSwgZXRjLiwgYXJlIGFscmVhZHkgcmVzb2x2ZWQuXG5cbiAgICAgQ3VycmVudCBMd3QgYWN0dWFsbHkgaGFzIGEgbWVzc3kgbWl4IG9mIGNhbGxiYWNrLWNhbGxpbmcgYmVoYXZpb3JzLiBGb3JcbiAgICAgZXhhbXBsZSwgW0x3dC5iaW5kXSBpcyBleHBlY3RlZCB0byBhbHdheXMgY2FsbCBpdHMgY2FsbGJhY2sgaW1tZWRpYXRlbHksXG4gICAgIHdoaWxlIFtMd3Qud2FrZXVwX2xhdGVyXSBpcyBleHBlY3RlZCB0byBkZWZlciBhbGwgY2FsbGJhY2tzIG9mIHRoZSBwcm9taXNlXG4gICAgIHJlc29sdmVkLCB7ZSB1bmxlc3N9IEx3dCBpcyBub3QgYWxyZWFkeSBpbnNpZGUgdGhlIHJlc29sdXRpb24gbG9vcC5cblxuICAgICBXZSBwbGFubmVkIHRvIG1ha2UgdGhlc2UgYmVoYXZpb3JzIHVuaWZvcm0gaW4gTHd0IDQuMC4wLCBidXQgZGVjaWRlZFxuICAgICBhZ2FpbnN0IGl0IGR1ZSB0byB0aGUgcmlzayBvZiBicmVha2luZyB1c2Vycy4gU2VlXG5cbiAgICAgLSBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvcHVsbC81MDBcbiAgICAgLSBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvcHVsbC81MTlcblxuICAgICBBcyBwYXJ0IG9mIHRoZSBwcmVwYXJhdGlvbiBmb3IgdGhlIGNoYW5nZSwgdGhlIGFib3ZlIGNhbGxiYWNrLWludm9raW5nXG4gICAgIGZ1bmN0aW9ucyBzdXBwb3J0IHNldmVyYWwgb3B0aW9uYWwgYXJndW1lbnRzIHRvIGVtdWxhdGUgdGhlIHZhcmlvdXNcbiAgICAgYmVoYXZpb3JzLiBXZSBkZWNpZGVkIG5vdCB0byByZW1vdmUgdGhpcyBtYWNoaW5lcnksIGJlY2F1c2Ugd2UgbWlnaHQgd2FudFxuICAgICB0byBleHBvc2UgZGlmZmVyZW50IEFQSXMgdG8gTHd0IGluIHRoZSBmdXR1cmUuXG5cbiAgICAgLSBbfmFsbG93X2RlZmVycmluZzpmYWxzZV0gYWxsb3dzIGlnbm9yaW5nIHRoZSBjYWxsYmFjayBzdGFjayBkZXB0aCwgYW5kXG4gICAgICAgY2FsbGluZyB0aGUgY2FsbGJhY2tzIGltbWVkaWF0ZWx5LiBUaGlzIGVtdWxhdGVzIHRoZSBvbGQgcmVzb2x1dGlvblxuICAgICAgIGJlaGF2aW9yLlxuICAgICAtIFt+bWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoOjFdIGFsbG93cyBsaW1pdGluZyB0aGUgZGVwdGggd2hpY2hcbiAgICAgICB0cmlnZ2VycyBkZWZlcnJhbCBvbiBhIHBlci1jYWxsLXNpdGUgYmFzaXMuIFRoaXMgaXMgdXNlZCBieVxuICAgICAgIFtMd3Qud2FrZXVwX2xhdGVyXS5cbiAgICAgLSBbfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXSBpcyBsaWtlXG4gICAgICAgW35hbGxvd19kZWZlcnJpbmc6ZmFsc2VdLCB3aGljaCBpZ25vcmVzIHRoZSBjYWxsYmFjayBzdGFjayBkZXB0aC5cbiAgICAgICBIb3dldmVyLCB0byBlbnN1cmUgdGhhdCB0aGUgY2FsbGJhY2sgaXMgdGFpbC1jYWxsZWQsIEx3dCBkb2Vzbid0IGV2ZW5cbiAgICAgICB1cGRhdGUgdGhlIGNhbGxiYWNrIHN0YWNrIGRlcHRoIGZvciB0aGUgYmVuZWZpdCBvZiAqb3RoZXIqIGNhbGxiYWNrXG4gICAgICAgY2FsbHMuIEl0IGp1c3QgYmxpbmRseSBjYWxscyB0aGUgY2FsbGJhY2suXG5cbiAgICAgU2VlIGRpc2N1c3Npb24gb2YgY2FsbGJhY2stY2FsbGluZyBzZW1hbnRpY3MgaW46XG5cbiAgICAgICBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvaXNzdWVzLzMyOVxuXG4gICAgICogQ29udGV4dFxuXG4gICAgIFRoZSByZXNvbHV0aW9uIGxvb3AgZWZmZWN0aXZlbHkgaGFuZGxlcyBhbGwgcHJvbWlzZXMgdGhhdCBjYW4gYmUgcmVzb2x2ZWRcbiAgICAgaW1tZWRpYXRlbHksIHdpdGhvdXQgYmxvY2tpbmcgb24gSS9PLiBBIGNvbXBsZXRlIHByb2dyYW0gdGhhdCBkb2VzIEkvT1xuICAgICBjYWxscyBbTHd0X21haW4ucnVuXS4gU2VlIFwiTm8gSS9PXCIgaW4gdGhlIE92ZXJ2aWV3LiAqKVxuXG5cblxuICBsZXQgYXN5bmNfZXhjZXB0aW9uX2hvb2sgPVxuICAgIHJlZiAoZnVuIGV4biAtPlxuICAgICAgcHJlcnJfc3RyaW5nIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiBcIjtcbiAgICAgIHByZXJyX3N0cmluZyAoUHJpbnRleGMudG9fc3RyaW5nIGV4bik7XG4gICAgICBwcmVycl9jaGFyICdcXG4nO1xuICAgICAgUHJpbnRleGMucHJpbnRfYmFja3RyYWNlIHN0ZGVycjtcbiAgICAgIGZsdXNoIHN0ZGVycjtcbiAgICAgIGV4aXQgMilcblxuICBsZXQgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiB2ID1cbiAgICAoKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjYXJlIGlmIFtmXSBldmFsdWF0ZXMgdG8gYSBwcm9taXNlLiBJblxuICAgICAgIHBhcnRpY3VsYXIsIGlmIFtmIHZdIGV2YWx1YXRlcyB0byBbcF0gYW5kIFtwXSBpcyBhbHJlYWR5IHJlamVjdGVkIG9yIHdpbGxcbiAgICAgICBiZSByZWplY3QgbGF0ZXIsIGl0IGlzIG5vdCB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhpcyBmdW5jdGlvbiB0byBwYXNzXG4gICAgICAgdGhlIGV4Y2VwdGlvbiB0byBbIWFzeW5jX2V4Y2VwdGlvbl9ob29rXS4gKilcbiAgICB0cnkgZiB2XG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT5cbiAgICAgICFhc3luY19leGNlcHRpb25faG9vayBleG5cblxuXG5cbiAgZXhjZXB0aW9uIENhbmNlbGVkXG5cblxuXG4gICgqIFJ1bnMgdGhlIGNhbGxiYWNrcyAoZm9ybWVybHkpIGFzc29jaWF0ZWQgdG8gYSBwcm9taXNlLiBDYW5jZWwgY2FsbGJhY2tzIGFyZVxuICAgICBydW4gZmlyc3QsIGlmIHRoZSBwcm9taXNlIHdhcyBjYW5jZWxlZC4gVGhlc2UgYXJlIGZvbGxvd2VkIGJ5IHJlZ3VsYXJcbiAgICAgY2FsbGJhY2tzLlxuXG4gICAgIFRoZSByZWFzb24gZm9yIHRoZSBcImZvcm1lcmx5XCIgaXMgdGhhdCB0aGUgcHJvbWlzZSdzIHN0YXRlIGhhcyBhbHJlYWR5IGJlZW5cbiAgICAgc2V0IHRvIFtGdWxmaWxsZWQgX10gb3IgW1JlamVjdGVkIF9dLCBzbyB0aGUgY2FsbGJhY2tzIGFyZSBubyBsb25nZXJcbiAgICAgcmVhY2hhYmxlIHRocm91Z2ggdGhlIHByb21pc2UgcmVmZXJlbmNlLiBUaGlzIGlzIHdoeSB0aGUgZGlyZWN0IFtjYWxsYmFja3NdXG4gICAgIHJlY29yZCBtdXN0IGJlIGdpdmVuIHRvIHRoaXMgZnVuY3Rpb24uICopXG4gIGxldCBydW5fY2FsbGJhY2tzXG4gICAgICAoY2FsbGJhY2tzIDogJ2EgY2FsbGJhY2tzKVxuICAgICAgKHJlc3VsdCA6ICdhIHJlc29sdmVkX3N0YXRlKSA6IHVuaXQgPVxuXG4gICAgbGV0IHJ1bl9jYW5jZWxfY2FsbGJhY2tzIGZzID1cbiAgICAgIGxldCByZWMgaXRlcl9jYWxsYmFja19saXN0IGZzIHJlc3QgPVxuICAgICAgICBtYXRjaCBmcyB3aXRoXG4gICAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfZW1wdHkgLT5cbiAgICAgICAgICBpdGVyX2xpc3QgcmVzdFxuICAgICAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2NhbGxiYWNrIChzdG9yYWdlLCBmKSAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzdG9yYWdlO1xuICAgICAgICAgIGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgKCk7XG4gICAgICAgICAgaXRlcl9saXN0IHJlc3RcbiAgICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9yZW1vdmVfc2VxdWVuY2Vfbm9kZSBub2RlIC0+XG4gICAgICAgICAgTHd0X3NlcXVlbmNlLnJlbW92ZSBub2RlO1xuICAgICAgICAgIGl0ZXJfbGlzdCByZXN0XG4gICAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY29uY2F0IChmcywgZnMnKSAtPlxuICAgICAgICAgIGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyAoZnMnOjpyZXN0KVxuXG4gICAgICBhbmQgaXRlcl9saXN0IHJlc3QgPVxuICAgICAgICBtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGZzOjpyZXN0IC0+IGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyByZXN0XG5cbiAgICAgIGluXG5cbiAgICAgIGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyBbXVxuICAgIGluXG5cbiAgICBsZXQgcnVuX3JlZ3VsYXJfY2FsbGJhY2tzIGZzID1cbiAgICAgIGxldCByZWMgaXRlcl9jYWxsYmFja19saXN0IGZzIHJlc3QgPVxuICAgICAgICBtYXRjaCBmcyB3aXRoXG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5IC0+XG4gICAgICAgICAgaXRlcl9saXN0IHJlc3RcbiAgICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIGYgLT5cbiAgICAgICAgICBmIHJlc3VsdDtcbiAgICAgICAgICBpdGVyX2xpc3QgcmVzdFxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja1xuICAgICAgICAgICAge2NvbnRlbnRzID0gTm9uZX0gLT5cbiAgICAgICAgICBpdGVyX2xpc3QgcmVzdFxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja1xuICAgICAgICAgICAge2NvbnRlbnRzID0gU29tZSBmfSAtPlxuICAgICAgICAgIGYgcmVzdWx0O1xuICAgICAgICAgIGl0ZXJfbGlzdCByZXN0XG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2NvbmNhdCAoZnMsIGZzJykgLT5cbiAgICAgICAgICBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgKGZzJzo6cmVzdClcblxuICAgICAgYW5kIGl0ZXJfbGlzdCByZXN0ID1cbiAgICAgICAgbWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBmczo6cmVzdCAtPiBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgcmVzdFxuXG4gICAgICBpblxuXG4gICAgICBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgW11cbiAgICBpblxuXG4gICAgKCogUGF0dGVybiBtYXRjaGluZyBpcyBtdWNoIGZhc3RlciB0aGFuIHBvbHltb3JwaGljIGNvbXBhcmlzb24uICopXG4gICAgbGV0IGlzX2NhbmNlbGVkID1cbiAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICB8IFJlamVjdGVkIENhbmNlbGVkIC0+IHRydWVcbiAgICAgIHwgUmVqZWN0ZWQgXyAtPiBmYWxzZVxuICAgICAgfCBGdWxmaWxsZWQgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgaWYgaXNfY2FuY2VsZWQgdGhlblxuICAgICAgcnVuX2NhbmNlbF9jYWxsYmFja3MgY2FsbGJhY2tzLmNhbmNlbF9jYWxsYmFja3M7XG4gICAgcnVuX3JlZ3VsYXJfY2FsbGJhY2tzIGNhbGxiYWNrcy5yZWd1bGFyX2NhbGxiYWNrc1xuXG5cblxuICBsZXQgZGVmYXVsdF9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGggPSA0MlxuXG4gIGxldCBjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGggPSByZWYgMFxuXG4gIHR5cGUgZGVmZXJyZWRfY2FsbGJhY2tzID1cbiAgICBEZWZlcnJlZCA6ICgnYSBjYWxsYmFja3MgKiAnYSByZXNvbHZlZF9zdGF0ZSkgLT4gZGVmZXJyZWRfY2FsbGJhY2tzXG4gICAgW0BAb2NhbWwudW5ib3hlZF1cblxuICBsZXQgZGVmZXJyZWRfY2FsbGJhY2tzIDogZGVmZXJyZWRfY2FsbGJhY2tzIFF1ZXVlLnQgPSBRdWV1ZS5jcmVhdGUgKClcblxuICAoKiBCZWZvcmUgZW50ZXJpbmcgYSByZXNvbHV0aW9uIGxvb3AsIGl0IGlzIG5lY2Vzc2FyeSB0byB0YWtlIGEgc25hcHNob3Qgb2ZcbiAgICAgdGhlIGN1cnJlbnQgc3RhdGUgb2Ygc2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlLiBUaGlzIGlzIGJlY2F1c2UgbWFueSBvZlxuICAgICB0aGUgY2FsbGJhY2tzIHRoYXQgd2lsbCBiZSBydW4gd2lsbCBtb2RpZnkgdGhlIHN0b3JhZ2UuIFRoZSBzdG9yYWdlIGlzXG4gICAgIHJlc3RvcmVkIHRvIHRoZSBzbmFwc2hvdCB3aGVuIHRoZSByZXNvbHV0aW9uIGxvb3AgaXMgZXhpdGVkLiAqKVxuICBsZXQgZW50ZXJfcmVzb2x1dGlvbl9sb29wICgpID1cbiAgICBjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGggOj0gIWN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCArIDE7XG4gICAgbGV0IHN0b3JhZ2Vfc25hcHNob3QgPSAhY3VycmVudF9zdG9yYWdlIGluXG4gICAgc3RvcmFnZV9zbmFwc2hvdFxuXG4gIGxldCBsZWF2ZV9yZXNvbHV0aW9uX2xvb3AgKHN0b3JhZ2Vfc25hcHNob3QgOiBzdG9yYWdlKSA6IHVuaXQgPVxuICAgIGlmICFjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGggPSAxIHRoZW4gYmVnaW5cbiAgICAgIHdoaWxlIG5vdCAoUXVldWUuaXNfZW1wdHkgZGVmZXJyZWRfY2FsbGJhY2tzKSBkb1xuICAgICAgICBsZXQgRGVmZXJyZWQgKGNhbGxiYWNrcywgcmVzdWx0KSA9IFF1ZXVlLnBvcCBkZWZlcnJlZF9jYWxsYmFja3MgaW5cbiAgICAgICAgcnVuX2NhbGxiYWNrcyBjYWxsYmFja3MgcmVzdWx0XG4gICAgICBkb25lXG4gICAgZW5kO1xuICAgIGN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA6PSAhY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoIC0gMTtcbiAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc3RvcmFnZV9zbmFwc2hvdFxuXG4gIGxldCBydW5faW5fcmVzb2x1dGlvbl9sb29wIGYgPVxuICAgIGxldCBzdG9yYWdlX3NuYXBzaG90ID0gZW50ZXJfcmVzb2x1dGlvbl9sb29wICgpIGluXG4gICAgbGV0IHJlc3VsdCA9IGYgKCkgaW5cbiAgICBsZWF2ZV9yZXNvbHV0aW9uX2xvb3Agc3RvcmFnZV9zbmFwc2hvdDtcbiAgICByZXN1bHRcblxuICAoKiBUaGlzIGlzIGJhc2ljYWxseSBhIGhhY2sgdG8gZml4IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9pc3N1ZXMvNDguXG4gICAgIElmIGN1cnJlbnRseSByZXNvbHZpbmcgcHJvbWlzZXMsIGl0IGltbWVkaWF0ZWx5IGV4aXRzIGFsbCByZWN1cnNpdmVcbiAgICAgZW50cmllcyBvZiB0aGUgcmVzb2x1dGlvbiBsb29wLCBnb2VzIHRvIHRoZSB0b3AgbGV2ZWwsIHJ1bnMgYW55IGRlZmVycmVkXG4gICAgIGNhbGxiYWNrcywgYW5kIGV4aXRzIHRoZSB0b3AtbGV2ZWwgcmVzb2x1dGlvbiBsb29wLlxuXG4gICAgIFRoZSBuYW1lIHNob3VsZCBwcm9iYWJseSBiZSBbYWJhb25kb25fcmVzb2x1dGlvbl9sb29wXS4gKilcbiAgbGV0IGFiYW5kb25fd2FrZXVwcyAoKSA9XG4gICAgaWYgIWN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA8PiAwIHRoZW5cbiAgICAgIGxlYXZlX3Jlc29sdXRpb25fbG9vcCBTdG9yYWdlX21hcC5lbXB0eVxuXG5cblxuICBsZXQgcnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtXG4gICAgICA/KGFsbG93X2RlZmVycmluZyA9IHRydWUpXG4gICAgICA/KG1heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA9IGRlZmF1bHRfbWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoKVxuICAgICAgY2FsbGJhY2tzIHJlc3VsdCA9XG5cbiAgICBsZXQgc2hvdWxkX2RlZmVyID1cbiAgICAgIGFsbG93X2RlZmVycmluZ1xuICAgICAgJiYgIWN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA+PSBtYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGhcbiAgICBpblxuXG4gICAgaWYgc2hvdWxkX2RlZmVyIHRoZW5cbiAgICAgIFF1ZXVlLnB1c2ggKERlZmVycmVkIChjYWxsYmFja3MsIHJlc3VsdCkpIGRlZmVycmVkX2NhbGxiYWNrc1xuICAgIGVsc2VcbiAgICAgIHJ1bl9pbl9yZXNvbHV0aW9uX2xvb3AgKGZ1biAoKSAtPlxuICAgICAgICBydW5fY2FsbGJhY2tzIGNhbGxiYWNrcyByZXN1bHQpXG5cbiAgbGV0IHJlc29sdmUgP2FsbG93X2RlZmVycmluZyA/bWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoIHAgcmVzdWx0ID1cbiAgICBsZXQgUGVuZGluZyBjYWxsYmFja3MgPSBwLnN0YXRlIGluXG4gICAgbGV0IHAgPSBzZXRfcHJvbWlzZV9zdGF0ZSBwIHJlc3VsdCBpblxuXG4gICAgcnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtXG4gICAgICA/YWxsb3dfZGVmZXJyaW5nID9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGggY2FsbGJhY2tzIHJlc3VsdDtcblxuICAgIHBcblxuICBsZXQgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICA/KHJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbCA9IGZhbHNlKVxuICAgICAgfmNhbGxiYWNrOmZcbiAgICAgIH5pZl9kZWZlcnJlZCA9XG5cbiAgICBpZiBydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGwgdGhlblxuICAgICAgZiAoKVxuXG4gICAgZWxzZVxuICAgICAgbGV0IHNob3VsZF9kZWZlciA9XG4gICAgICAgICFjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGhcbiAgICAgICAgICA+PSBkZWZhdWx0X21heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aFxuICAgICAgaW5cblxuICAgICAgaWYgc2hvdWxkX2RlZmVyIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IGltbWVkaWF0ZV9yZXN1bHQsIGRlZmVycmVkX2NhbGxiYWNrLCBkZWZlcnJlZF9yZXN1bHQgPVxuICAgICAgICAgIGlmX2RlZmVycmVkICgpIGluXG4gICAgICAgIGxldCBkZWZlcnJlZF9yZWNvcmQgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlZ3VsYXJfY2FsbGJhY2tzID1cbiAgICAgICAgICAgICAgUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFja1xuICAgICAgICAgICAgICAgIGRlZmVycmVkX2NhbGxiYWNrO1xuICAgICAgICAgICAgY2FuY2VsX2NhbGxiYWNrcyA9IENhbmNlbF9jYWxsYmFja19saXN0X2VtcHR5O1xuICAgICAgICAgICAgaG93X3RvX2NhbmNlbCA9IE5vdF9jYW5jZWxhYmxlO1xuICAgICAgICAgICAgY2xlYW51cHNfZGVmZXJyZWQgPSAwXG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBRdWV1ZS5wdXNoXG4gICAgICAgICAgKERlZmVycmVkIChkZWZlcnJlZF9yZWNvcmQsIGRlZmVycmVkX3Jlc3VsdCkpIGRlZmVycmVkX2NhbGxiYWNrcztcbiAgICAgICAgaW1tZWRpYXRlX3Jlc3VsdFxuICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIHJ1bl9pbl9yZXNvbHV0aW9uX2xvb3AgKGZ1biAoKSAtPlxuICAgICAgICAgIGYgKCkpXG5lbmRcbmluY2x1ZGUgUmVzb2x1dGlvbl9sb29wXG5cblxuXG5tb2R1bGUgUmVzb2x2aW5nIDpcbnNpZ1xuICB2YWwgd2FrZXVwX2xhdGVyX3Jlc3VsdCA6ICdhIHUgLT4gKCdhLCBleG4pIHJlc3VsdCAtPiB1bml0XG4gIHZhbCB3YWtldXBfbGF0ZXIgOiAnYSB1IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHdha2V1cF9sYXRlcl9leG4gOiBfIHUgLT4gZXhuIC0+IHVuaXRcblxuICB2YWwgd2FrZXVwX3Jlc3VsdCA6ICdhIHUgLT4gKCdhLCBleG4pIHJlc3VsdCAtPiB1bml0XG4gIHZhbCB3YWtldXAgOiAnYSB1IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHdha2V1cF9leG4gOiBfIHUgLT4gZXhuIC0+IHVuaXRcblxuICB2YWwgY2FuY2VsIDogJ2EgdCAtPiB1bml0XG5lbmQgPVxuc3RydWN0XG4gICgqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGRldmlhdGVzIGZyb20gdGhlIFwiaWRlYWxcIiBjYWxsYmFjayBkZWZlcnJhbFxuICAgICBiZWhhdmlvcjogaXQgcnVucyBjYWxsYmFja3MgZGlyZWN0bHkgb24gdGhlIGN1cnJlbnQgc3RhY2suIEl0IHNob3VsZFxuICAgICB0aGVyZWZvcmUgYmUgcG9zc2libGUgdG8gY2F1c2UgYSBzdGFjayBvdmVyZmxvdyB1c2luZyB0aGlzIGZ1bmN0aW9uLiAqKVxuICBsZXQgd2FrZXVwX2dlbmVyYWwgYXBpX2Z1bmN0aW9uX25hbWUgciByZXN1bHQgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcmVzb2x2ZXIgciBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IFJlamVjdGVkIENhbmNlbGVkIC0+XG4gICAgICAoKVxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZyBcIkx3dC4lc1wiIGFwaV9mdW5jdGlvbl9uYW1lXG4gICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmcgXCJMd3QuJXNcIiBhcGlfZnVuY3Rpb25fbmFtZVxuXG4gICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgIGxldCByZXN1bHQgPSBzdGF0ZV9vZl9yZXN1bHQgcmVzdWx0IGluXG4gICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID0gcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAgcmVzdWx0IGluXG4gICAgICBpZ25vcmUgcFxuXG4gIGxldCB3YWtldXBfcmVzdWx0IHIgcmVzdWx0ID0gd2FrZXVwX2dlbmVyYWwgXCJ3YWtldXBfcmVzdWx0XCIgciByZXN1bHRcbiAgbGV0IHdha2V1cCByIHYgPSB3YWtldXBfZ2VuZXJhbCBcIndha2V1cFwiIHIgKE9rIHYpXG4gIGxldCB3YWtldXBfZXhuIHIgZXhuID0gd2FrZXVwX2dlbmVyYWwgXCJ3YWtldXBfZXhuXCIgciAoRXJyb3IgZXhuKVxuXG4gIGxldCB3YWtldXBfbGF0ZXJfZ2VuZXJhbCBhcGlfZnVuY3Rpb25fbmFtZSByIHJlc3VsdCA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9yZXNvbHZlciByIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgUmVqZWN0ZWQgQ2FuY2VsZWQgLT5cbiAgICAgICgpXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnIFwiTHd0LiVzXCIgYXBpX2Z1bmN0aW9uX25hbWVcbiAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZyBcIkx3dC4lc1wiIGFwaV9mdW5jdGlvbl9uYW1lXG5cbiAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgbGV0IHJlc3VsdCA9IHN0YXRlX29mX3Jlc3VsdCByZXN1bHQgaW5cbiAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPVxuICAgICAgICByZXNvbHZlIH5tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGg6MSBwIHJlc3VsdCBpblxuICAgICAgaWdub3JlIHBcblxuICBsZXQgd2FrZXVwX2xhdGVyX3Jlc3VsdCByIHJlc3VsdCA9XG4gICAgd2FrZXVwX2xhdGVyX2dlbmVyYWwgXCJ3YWtldXBfbGF0ZXJfcmVzdWx0XCIgciByZXN1bHRcbiAgbGV0IHdha2V1cF9sYXRlciByIHYgPVxuICAgIHdha2V1cF9sYXRlcl9nZW5lcmFsIFwid2FrZXVwX2xhdGVyXCIgciAoT2sgdilcbiAgbGV0IHdha2V1cF9sYXRlcl9leG4gciBleG4gPVxuICAgIHdha2V1cF9sYXRlcl9nZW5lcmFsIFwid2FrZXVwX2xhdGVyX2V4blwiIHIgKEVycm9yIGV4bilcblxuXG5cbiAgdHlwZSBwYWNrZWRfY2FsbGJhY2tzID1cbiAgICB8IFBhY2tlZCA6IF8gY2FsbGJhY2tzIC0+IHBhY2tlZF9jYWxsYmFja3NcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuXG4gICgqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGRldmlhdGVzIGZyb20gdGhlIFwiaWRlYWxcIiBjYWxsYmFjayBkZWZlcnJhbFxuICAgICBiZWhhdmlvcjogaXQgcnVucyBjYWxsYmFja3MgZGlyZWN0bHkgb24gdGhlIGN1cnJlbnQgc3RhY2suIEl0IHNob3VsZFxuICAgICB0aGVyZWZvcmUgYmUgcG9zc2libGUgdG8gY2F1c2UgYSBzdGFjayBvdmVyZmxvdyB1c2luZyB0aGlzIGZ1bmN0aW9uLiAqKVxuICBsZXQgY2FuY2VsIHAgPVxuICAgIGxldCBjYW5jZWxlZF9yZXN1bHQgPSBSZWplY3RlZCBDYW5jZWxlZCBpblxuXG4gICAgKCogV2Fsa3MgdGhlIHByb21pc2UgZGVwZW5kZW5jeSBncmFwaCBiYWNrd2FyZHMsIGxvb2tpbmcgZm9yIGNhbmNlbGFibGVcbiAgICAgICBpbml0aWFsIHByb21pc2VzLCBhbmQgY2FuY2VscyAob25seSkgdGhlbS5cblxuICAgICAgIEZvdW5kIGluaXRpYWwgcHJvbWlzZXMgYXJlIGNhbmNlbGVkIGltbWVkaWF0ZWx5LCBhcyB0aGV5IGFyZSBmb3VuZCwgYnlcbiAgICAgICBzZXR0aW5nIHRoZWlyIHN0YXRlIHRvIFtSZWplY3RlZCBDYW5jZWxlZF0uIFRoaXMgaXMgdG8gcHJldmVudCB0aGVtIGZyb21cbiAgICAgICBiZWluZyBcImZvdW5kIHR3aWNlXCIgaWYgdGhleSBhcmUgcmVhY2hhYmxlIGJ5IHR3byBvciBtb3JlIGRpc3RpbmN0IHBhdGhzXG4gICAgICAgdGhyb3VnaCB0aGUgcHJvbWlzZSBkZXBlbmRlbmN5IGdyYXBoLlxuXG4gICAgICAgVGhlIGNhbGxiYWNrcyBvZiB0aGVzZSBpbml0aWFsIHByb21pc2VzIGFyZSB0aGVuIHJ1biwgaW4gYSBzZXBhcmF0ZVxuICAgICAgIHBoYXNlLiBUaGVzZSBjYWxsYmFja3MgcHJvcGFnYXRlIGNhbmNlbGxhdGlvbiBmb3J3YXJkcyB0byBhbnkgZGVwZW5kZW50XG4gICAgICAgcHJvbWlzZXMuIFNlZSBcIkNhbmNlbGxhdGlvblwiIGluIHRoZSBPdmVydmlldy4gKilcbiAgICBsZXQgcHJvcGFnYXRlX2NhbmNlbCA6IChfLCBfLCBfKSBwcm9taXNlIC0+IHBhY2tlZF9jYWxsYmFja3MgbGlzdCA9XG4gICAgICAgIGZ1biBwIC0+XG4gICAgICBsZXQgcmVjIGNhbmNlbF9hbmRfY29sbGVjdF9jYWxsYmFja3MgOlxuICAgICAgICAgICdhICd1ICdjLiBwYWNrZWRfY2FsbGJhY2tzIGxpc3QgLT4gKCdhLCAndSwgJ2MpIHByb21pc2UgLT5cbiAgICAgICAgICAgIHBhY2tlZF9jYWxsYmFja3MgbGlzdCA9XG4gICAgICAgICAgZnVuICh0eXBlIGMpIGNhbGxiYWNrc19hY2N1bXVsYXRvciAocCA6IChfLCBfLCBjKSBwcm9taXNlKSAtPlxuXG4gICAgICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG4gICAgICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgICAgICAoKiBJZiB0aGUgcHJvbWlzZSBpcyBub3Qgc3RpbGwgcGVuZGluZywgaXQgY2FuJ3QgYmUgY2FuY2VsZWQuICopXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgICBjYWxsYmFja3NfYWNjdW11bGF0b3JcbiAgICAgICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICAgICAgY2FsbGJhY2tzX2FjY3VtdWxhdG9yXG5cbiAgICAgICAgfCBQZW5kaW5nIGNhbGxiYWNrcyAtPlxuICAgICAgICAgIG1hdGNoIGNhbGxiYWNrcy5ob3dfdG9fY2FuY2VsIHdpdGhcbiAgICAgICAgICB8IE5vdF9jYW5jZWxhYmxlIC0+XG4gICAgICAgICAgICBjYWxsYmFja3NfYWNjdW11bGF0b3JcbiAgICAgICAgICB8IENhbmNlbF90aGlzX3Byb21pc2UgLT5cbiAgICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPVxuICAgICAgICAgICAgICBzZXRfcHJvbWlzZV9zdGF0ZSBwIGNhbmNlbGVkX3Jlc3VsdCBpblxuICAgICAgICAgICAgaWdub3JlIHA7XG4gICAgICAgICAgICAoUGFja2VkIGNhbGxiYWNrcyk6OmNhbGxiYWNrc19hY2N1bXVsYXRvclxuICAgICAgICAgIHwgUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCcgLT5cbiAgICAgICAgICAgIGNhbmNlbF9hbmRfY29sbGVjdF9jYWxsYmFja3MgY2FsbGJhY2tzX2FjY3VtdWxhdG9yIHAnXG4gICAgICAgICAgfCBQcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMgLT5cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IGNhbmNlbF9hbmRfY29sbGVjdF9jYWxsYmFja3MgY2FsbGJhY2tzX2FjY3VtdWxhdG9yIHBzXG4gICAgICBpblxuICAgICAgY2FuY2VsX2FuZF9jb2xsZWN0X2NhbGxiYWNrcyBbXSBwXG4gICAgaW5cblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IGNhbGxiYWNrcyA9IHByb3BhZ2F0ZV9jYW5jZWwgcCBpblxuXG4gICAgY2FsbGJhY2tzIHw+IExpc3QuaXRlciAoZnVuIChQYWNrZWQgY2FsbGJhY2tzKSAtPlxuICAgICAgcnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtXG4gICAgICAgIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgY2FsbGJhY2tzIGNhbmNlbGVkX3Jlc3VsdClcbmVuZFxuaW5jbHVkZSBSZXNvbHZpbmdcblxuXG5cbm1vZHVsZSBUcml2aWFsX3Byb21pc2VzIDpcbnNpZ1xuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICB2YWwgZmFpbCA6IGV4biAtPiBfIHRcbiAgdmFsIG9mX3Jlc3VsdCA6ICgnYSwgZXhuKSByZXN1bHQgLT4gJ2EgdFxuXG4gIHZhbCByZXR1cm5fdW5pdCA6IHVuaXQgdFxuICB2YWwgcmV0dXJuX3RydWUgOiBib29sIHRcbiAgdmFsIHJldHVybl9mYWxzZSA6IGJvb2wgdFxuICB2YWwgcmV0dXJuX25vbmUgOiBfIG9wdGlvbiB0XG4gIHZhbCByZXR1cm5fc29tZSA6ICdhIC0+ICdhIG9wdGlvbiB0XG4gIHZhbCByZXR1cm5fb2sgOiAnYSAtPiAoJ2EsIF8pIHJlc3VsdCB0XG4gIHZhbCByZXR1cm5fZXJyb3IgOiAnZSAtPiAoXywgJ2UpIHJlc3VsdCB0XG4gIHZhbCByZXR1cm5fbmlsIDogXyBsaXN0IHRcblxuICB2YWwgZmFpbF93aXRoIDogc3RyaW5nIC0+IF8gdFxuICB2YWwgZmFpbF9pbnZhbGlkX2FyZyA6IHN0cmluZyAtPiBfIHRcbmVuZCA9XG5zdHJ1Y3RcbiAgbGV0IHJldHVybiB2ID1cbiAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSBGdWxmaWxsZWQgdn1cblxuICBsZXQgb2ZfcmVzdWx0IHJlc3VsdCA9XG4gICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gc3RhdGVfb2ZfcmVzdWx0IHJlc3VsdH1cblxuICBsZXQgZmFpbCBleG4gPVxuICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IFJlamVjdGVkIGV4bn1cblxuICBsZXQgcmV0dXJuX3VuaXQgPSByZXR1cm4gKClcbiAgbGV0IHJldHVybl9ub25lID0gcmV0dXJuIE5vbmVcbiAgbGV0IHJldHVybl9zb21lIHggPSByZXR1cm4gKFNvbWUgeClcbiAgbGV0IHJldHVybl9uaWwgPSByZXR1cm4gW11cbiAgbGV0IHJldHVybl90cnVlID0gcmV0dXJuIHRydWVcbiAgbGV0IHJldHVybl9mYWxzZSA9IHJldHVybiBmYWxzZVxuICBsZXQgcmV0dXJuX29rIHggPSByZXR1cm4gKE9rIHgpXG4gIGxldCByZXR1cm5fZXJyb3IgeCA9IHJldHVybiAoRXJyb3IgeClcblxuICBsZXQgZmFpbF93aXRoIG1zZyA9XG4gICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gUmVqZWN0ZWQgKEZhaWx1cmUgbXNnKX1cblxuICBsZXQgZmFpbF9pbnZhbGlkX2FyZyBtc2cgPVxuICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IFJlamVjdGVkIChJbnZhbGlkX2FyZ3VtZW50IG1zZyl9XG5lbmRcbmluY2x1ZGUgVHJpdmlhbF9wcm9taXNlc1xuXG5cblxubW9kdWxlIFBlbmRpbmdfcHJvbWlzZXMgOlxuc2lnXG4gICgqIEludGVybmFsICopXG4gIHZhbCBuZXdfcGVuZGluZyA6XG4gICAgaG93X3RvX2NhbmNlbDpob3dfdG9fY2FuY2VsIC0+ICgnYSwgdW5kZXJseWluZywgcGVuZGluZykgcHJvbWlzZVxuICB2YWwgcHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIDogXyB0IGxpc3QgLT4gaG93X3RvX2NhbmNlbFxuXG4gICgqIEluaXRpYWwgcGVuZGluZyBwcm9taXNlcyAocHVibGljKSAqKVxuICB2YWwgd2FpdCA6IHVuaXQgLT4gJ2EgdCAqICdhIHVcbiAgdmFsIHRhc2sgOiB1bml0IC0+ICdhIHQgKiAnYSB1XG5cbiAgdmFsIGFkZF90YXNrX3IgOiAnYSB1IEx3dF9zZXF1ZW5jZS50IC0+ICdhIHRcbiAgdmFsIGFkZF90YXNrX2wgOiAnYSB1IEx3dF9zZXF1ZW5jZS50IC0+ICdhIHRcblxuICB2YWwgcHJvdGVjdGVkIDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBub19jYW5jZWwgOiAnYSB0IC0+ICdhIHRcbmVuZCA9XG5zdHJ1Y3RcbiAgbGV0IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsID1cbiAgICBsZXQgc3RhdGUgPVxuICAgICAgUGVuZGluZyB7XG4gICAgICAgIHJlZ3VsYXJfY2FsbGJhY2tzID0gUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5O1xuICAgICAgICBjYW5jZWxfY2FsbGJhY2tzID0gQ2FuY2VsX2NhbGxiYWNrX2xpc3RfZW1wdHk7XG4gICAgICAgIGhvd190b19jYW5jZWw7XG4gICAgICAgIGNsZWFudXBzX2RlZmVycmVkID0gMDtcbiAgICAgIH1cbiAgICBpblxuICAgIHtzdGF0ZX1cblxuICBsZXQgcHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIHBzID1cbiAgICAoKiBVc2luZyBhIGRpcnR5IGNhc3QgaGVyZSB0byBhdm9pZCByZWJ1aWxkaW5nIHRoZSBsaXN0IDooIE5vdCBib3RoZXJpbmdcbiAgICAgICB3aXRoIHRoZSBpbnZhcmlhbnRzLCBiZWNhdXNlIFtQcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWxdIHBhY2tzIHRoZW0sXG4gICAgICAgYW5kIGNvZGUgdGhhdCBtYXRjaGVzIG9uIFtQcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWxdIGRvZXNuJ3QgY2FyZSBhYm91dFxuICAgICAgIHRoZW0gYW55d2F5LiAqKVxuICAgIGxldCBjYXN0X3Byb21pc2VfbGlzdCA6ICdhIHQgbGlzdCAtPiAoJ2EsIF8sIF8pIHByb21pc2UgbGlzdCA9IE9iai5tYWdpYyBpblxuICAgIFByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCAoY2FzdF9wcm9taXNlX2xpc3QgcHMpXG5cblxuXG4gIGxldCB3YWl0ICgpID1cbiAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOk5vdF9jYW5jZWxhYmxlIGluXG4gICAgdG9fcHVibGljX3Byb21pc2UgcCwgdG9fcHVibGljX3Jlc29sdmVyIHBcblxuICBsZXQgdGFzayAoKSA9XG4gICAgbGV0IHAgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDpDYW5jZWxfdGhpc19wcm9taXNlIGluXG4gICAgdG9fcHVibGljX3Byb21pc2UgcCwgdG9fcHVibGljX3Jlc29sdmVyIHBcblxuXG5cblxuICBsZXQgY2FzdF9zZXF1ZW5jZV9ub2RlXG4gICAgICAobm9kZSA6ICdhIHUgTHd0X3NlcXVlbmNlLm5vZGUpXG4gICAgICAoX2FjdHVhbF9jb250ZW50OignYSwgJ3UsICdjKSBwcm9taXNlKVxuICAgICAgICA6ICgnYSwgJ3UsICdjKSBwcm9taXNlIEx3dF9zZXF1ZW5jZS5ub2RlID1cbiAgICBPYmoubWFnaWMgbm9kZVxuXG4gIGxldCBhZGRfdGFza19yIHNlcXVlbmNlID1cbiAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOkNhbmNlbF90aGlzX3Byb21pc2UgaW5cbiAgICBsZXQgbm9kZSA9IEx3dF9zZXF1ZW5jZS5hZGRfciAodG9fcHVibGljX3Jlc29sdmVyIHApIHNlcXVlbmNlIGluXG4gICAgbGV0IG5vZGUgPSBjYXN0X3NlcXVlbmNlX25vZGUgbm9kZSBwIGluXG5cbiAgICBsZXQgUGVuZGluZyBjYWxsYmFja3MgPSBwLnN0YXRlIGluXG4gICAgY2FsbGJhY2tzLmNhbmNlbF9jYWxsYmFja3MgPC1cbiAgICAgIENhbmNlbF9jYWxsYmFja19saXN0X3JlbW92ZV9zZXF1ZW5jZV9ub2RlIG5vZGU7XG5cbiAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgbGV0IGFkZF90YXNrX2wgc2VxdWVuY2UgPVxuICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6Q2FuY2VsX3RoaXNfcHJvbWlzZSBpblxuICAgIGxldCBub2RlID0gTHd0X3NlcXVlbmNlLmFkZF9sICh0b19wdWJsaWNfcmVzb2x2ZXIgcCkgc2VxdWVuY2UgaW5cbiAgICBsZXQgbm9kZSA9IGNhc3Rfc2VxdWVuY2Vfbm9kZSBub2RlIHAgaW5cblxuICAgIGxldCBQZW5kaW5nIGNhbGxiYWNrcyA9IHAuc3RhdGUgaW5cbiAgICBjYWxsYmFja3MuY2FuY2VsX2NhbGxiYWNrcyA8LVxuICAgICAgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfcmVtb3ZlX3NlcXVlbmNlX25vZGUgbm9kZTtcblxuICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuXG5cbiAgbGV0IHByb3RlY3RlZCBwID1cbiAgICBsZXQgSW50ZXJuYWwgcF9pbnRlcm5hbCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHBfaW50ZXJuYWwpLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+IHBcbiAgICB8IFJlamVjdGVkIF8gLT4gcFxuXG4gICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgIGxldCBwJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOkNhbmNlbF90aGlzX3Byb21pc2UgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJyA9IG1heV9ub3dfYmVfcHJveHkgcCcgaW5cbiAgICAgICAgbGV0IHAnID0gdW5kZXJseWluZyBwJyBpblxuICAgICAgICAoKiBJbiB0aGlzIGNhbGxiYWNrLCBbcCddIHdpbGwgZWl0aGVyIHN0aWxsIGl0c2VsZiBiZSBwZW5kaW5nLCBvciBpdFxuICAgICAgICAgICB3aWxsIGhhdmUgYmVjb21lIGEgcHJveHkgZm9yIGEgcGVuZGluZyBwcm9taXNlLiBUaGUgcmVhc29uaW5nIGZvclxuICAgICAgICAgICB0aGlzIGlzIGFsbW9zdCB0aGUgc2FtZSBhcyBpbiB0aGUgY29tbWVudCBhdCBbbWF5X25vd19iZV9wcm94eV0uIFRoZVxuICAgICAgICAgICBkaWZmZXJlbmNlcyBhcmU6XG5cbiAgICAgICAgICAgLSBbcCddICppcyogYW4gaW5pdGlhbCBwcm9taXNlLCBzbyBpdCAqY2FuKiBnZXQgY2FuY2VsZWQuIEhvd2V2ZXIsIGlmXG4gICAgICAgICAgICAgaXQgZG9lcywgdGhlIFtvbl9jYW5jZWxdIGhhbmRsZXIgaW5zdGFsbGVkIGJlbG93IHdpbGwgcmVtb3ZlIHRoaXNcbiAgICAgICAgICAgICBjYWxsYmFjay5cbiAgICAgICAgICAgLSBbcCddIG5ldmVyIGdldHMgcGFzc2VkIHRvIFttYWtlX2ludG9fcHJveHldLCB0aGUgb25seSBlZmZlY3Qgb2ZcbiAgICAgICAgICAgICB3aGljaCBpcyB0aGF0IGl0IGNhbm5vdCBiZSB0aGUgdW5kZXJseWluZyBwcm9taXNlIG9mIGFub3RoZXJcbiAgICAgICAgICAgICAocHJveHkpIHByb21pc2UuIFNvLCBbcCddIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgaGVhZCBvZiBhIGNoYWluIG9mXG4gICAgICAgICAgICAgW1Byb3h5IF9dIGxpbmtzLCBhbmQgaXQncyBub3QgbmVjZXNzYXJ5IHRvIHdvcnJ5IGFib3V0IHdoZXRoZXIgdGhlXG4gICAgICAgICAgICAgaW5kdWN0aXZlIHJlYXNvbmluZyBhdCBbbWF5X25vd19iZV9wcm94eV0gYXBwbGllcy4gKilcblxuICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJyA9XG4gICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnIHBfcmVzdWx0IGluXG4gICAgICAgIGlnbm9yZSBwJ1xuICAgICAgaW5cblxuICAgICAgbGV0IHJlbW92ZV90aGVfY2FsbGJhY2sgPVxuICAgICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfYW5kX2dpdmVfcmVtb3ZlX2Z1bmN0aW9uXG4gICAgICAgICAgW3BdIGNhbGxiYWNrXG4gICAgICBpblxuXG4gICAgICBsZXQgUGVuZGluZyBwJ19jYWxsYmFja3MgPSBwJy5zdGF0ZSBpblxuICAgICAgYWRkX2NhbmNlbF9jYWxsYmFjayBwJ19jYWxsYmFja3MgcmVtb3ZlX3RoZV9jYWxsYmFjaztcblxuICAgICAgdG9fcHVibGljX3Byb21pc2UgcCdcblxuICBsZXQgbm9fY2FuY2VsIHAgPVxuICAgIGxldCBJbnRlcm5hbCBwX2ludGVybmFsID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcF9pbnRlcm5hbCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT4gcFxuICAgIHwgUmVqZWN0ZWQgXyAtPiBwXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBwJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOk5vdF9jYW5jZWxhYmxlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcgPSBtYXlfbm93X2JlX3Byb3h5IHAnIGluXG4gICAgICAgIGxldCBwJyA9IHVuZGVybHlpbmcgcCcgaW5cbiAgICAgICAgKCogSW4gdGhpcyBjYWxsYmFjaywgW3AnXSB3aWxsIGVpdGhlciBzdGlsbCBpdHNlbGYgYmUgcGVuZGluZywgb3IgaXRcbiAgICAgICAgICAgd2lsbCBoYXZlIGJlY29tZSBhIHByb3h5IGZvciBhIHBlbmRpbmcgcHJvbWlzZS4gVGhlIHJlYXNvbmluZyBmb3JcbiAgICAgICAgICAgdGhpcyBpcyBhcyBpbiBbcHJvdGVjdGVkXSBhbmQgW21heV9ub3dfYmVfcHJveHldLCBidXQgZXZlbiBzaW1wbGVyLFxuICAgICAgICAgICBiZWNhdXNlIFtwJ10gaXMgbm90IGNhbmNlbGFibGUuICopXG5cbiAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcgPVxuICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwJyBwX3Jlc3VsdCBpblxuICAgICAgICBpZ25vcmUgcCdcbiAgICAgIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuXG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSBwJ1xuZW5kXG5pbmNsdWRlIFBlbmRpbmdfcHJvbWlzZXNcblxuXG5cbm1vZHVsZSBTZXF1ZW50aWFsX2NvbXBvc2l0aW9uIDpcbnNpZ1xuICAoKiBNYWluIGludGVyZmFjZSAocHVibGljKSAqKVxuICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcbiAgdmFsIG1hcCA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gIGV4dGVybmFsIHJlcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyZXJhaXNlXCJcbiAgdmFsIGNhdGNoIDogKHVuaXQgLT4gJ2EgdCkgLT4gKGV4biAtPiAnYSB0KSAtPiAnYSB0XG4gIHZhbCBmaW5hbGl6ZSA6ICh1bml0IC0+ICdhIHQpIC0+ICh1bml0IC0+IHVuaXQgdCkgLT4gJ2EgdFxuICB2YWwgdHJ5X2JpbmQgOiAodW5pdCAtPiAnYSB0KSAtPiAoJ2EgLT4gJ2IgdCkgLT4gKGV4biAtPiAnYiB0KSAtPiAnYiB0XG5cbiAgKCogQ2FuY2VsIGNhbGxiYWNrcyAocHVibGljKS4gKilcbiAgdmFsIG9uX2NhbmNlbCA6ICdhIHQgLT4gKHVuaXQgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqIE5vbi1wcm9taXNlIGNhbGxiYWNrcyAocHVibGljKSAqKVxuICB2YWwgb25fc3VjY2VzcyA6ICdhIHQgLT4gKCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIG9uX2ZhaWx1cmUgOiBfIHQgLT4gKGV4biAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBvbl90ZXJtaW5hdGlvbiA6IF8gdCAtPiAodW5pdCAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBvbl9hbnkgOiAnYSB0IC0+ICgnYSAtPiB1bml0KSAtPiAoZXhuIC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiBCYWNrdHJhY2Ugc3VwcG9ydCAoaW50ZXJuYWw7IGZvciB1c2UgYnkgdGhlIFBQWCkgKilcbiAgdmFsIGJhY2t0cmFjZV9iaW5kIDpcbiAgICAoZXhuIC0+IGV4bikgLT4gJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICB2YWwgYmFja3RyYWNlX2NhdGNoIDpcbiAgICAoZXhuIC0+IGV4bikgLT4gKHVuaXQgLT4gJ2EgdCkgLT4gKGV4biAtPiAnYSB0KSAtPiAnYSB0XG4gIHZhbCBiYWNrdHJhY2VfZmluYWxpemUgOlxuICAgIChleG4gLT4gZXhuKSAtPiAodW5pdCAtPiAnYSB0KSAtPiAodW5pdCAtPiB1bml0IHQpIC0+ICdhIHRcbiAgdmFsIGJhY2t0cmFjZV90cnlfYmluZCA6XG4gICAgKGV4biAtPiBleG4pIC0+ICh1bml0IC0+ICdhIHQpIC0+ICgnYSAtPiAnYiB0KSAtPiAoZXhuIC0+ICdiIHQpIC0+ICdiIHRcbmVuZCA9XG5zdHJ1Y3RcbiAgKCogVGhlcmUgYXJlIGZpdmUgcHJpbWFyeSBzZXF1ZW50aWFsIGNvbXBvc2l0aW9uIGZ1bmN0aW9uczogW2JpbmRdLCBbbWFwXSxcbiAgICAgW2NhdGNoXSwgW2ZpbmFsaXplXSwgYW5kIFt0cnlfYmluZF0uIE9mIHRoZXNlLCBbdHJ5X2JpbmRdIGlzIHRoZSBtb3N0XG4gICAgIGdlbmVyYWwgLS0gYWxsIHRoZSBvdGhlcnMgY2FuIGJlIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIGl0LlxuXG4gICAgIEx3dCBjb25mbGF0ZXMgY29uY3VycmVuY3kgd2l0aCBlcnJvciBwcm9wYWdhdGlvbi4gSWYgTHd0IGRpZCBub3QgZG8gdGhpcyxcbiAgICAgdGhlcmUgd291bGQgYmUgb25seSB0d28gcHJpbWFyeSBmdW5jdGlvbnM6IFtiaW5kXSBhbmQgW21hcF0sIGFuZCwgb2YgdGhlc2VcbiAgICAgdHdvLCBbYmluZF0gaXMgdGhlIG1vc3QgZ2VuZXJhbC4gU2luY2UgW2JpbmRdIGlzIHRoZSBtb3N0IHJlbGV2YW50XG4gICAgIHNwZWNpZmljYWxseSB0byBjb25jdXJyZW5jeSwgYW5kIGlzIGFsc28gdGhlIG1vc3QgZmFtaWxpYXIgZnVuY3Rpb24gaW4gTHd0LFxuICAgICBpdHMgaW1wbGVtZW50YXRpb24gc2VydmVzIGFzIGEga2luZCBvZiBcIm1vZGVsXCIgZm9yIHRoZSByZXN0LiBJdCBpcyB0aGUgbW9zdFxuICAgICBjb21tZW50ZWQsIGFuZCBhbGwgdGhlIG90aGVyIGZ1bmN0aW9ucyBmb2xsb3cgYSBzaW1pbGFyIHBhdHRlcm4gdG8gW2JpbmRdLlxuXG4gICAgIEZvdXIgb2YgdGhlIHByaW1hcnkgZnVuY3Rpb25zIGhhdmUgW2JhY2t0cmFjZV8qXSB2ZXJzaW9ucywgd2hpY2ggYXJlIG5vdFxuICAgICB0cnVseSBwdWJsaWMsIGFuZCBleGlzdCB0byBzdXBwb3J0IHRoZSBQUFguIFtiYWNrdHJhY2VfbWFwXSBkb2VzIG5vdCBleGlzdFxuICAgICBiZWNhdXNlIHRoZSBQUFggZG9lcyBub3QgbmVlZCBpdC5cblxuICAgICBUaGUgcmVtYWluaW5nIGZvdXIgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiBhdHRhY2ggXCJsb3dlci1sZXZlbC1pc2hcIlxuICAgICBub24tcHJvbWlzZS1wcm9kdWNpbmcgY2FsbGJhY2tzIHRvIHByb21pc2VzOiB0aGVzZSBhcmUgdGhlIFtvbl8qXVxuICAgICBmdW5jdGlvbnMuIE9mIHRoZXNlLCBbb25fYW55XSBpcyB0aGUgbW9zdCBnZW5lcmFsLiBJZiBMd3QgZGlkIG5vdCBjb25mbGF0ZVxuICAgICBjb25jdXJyZW5jeSB3aXRoIGVycm9yIGhhbmRsaW5nLCB0aGVyZSB3b3VsZCBvbmx5IGJlIG9uZTogW29uX3N1Y2Nlc3NdLiAqKVxuXG5cblxuICAoKiBNYWtlcyBbfnVzZXJfcHJvdmlkZWRfcHJvbWlzZV0gaW50byBhIHByb3h5IG9mIFt+b3V0ZXJfcHJvbWlzZV0uIEFmdGVyXG4gICAgIFttYWtlX2ludG9fcHJveHldLCB0aGVzZSB0d28gcHJvbWlzZSByZWZlcmVuY2VzIFwiYmVoYXZlIGlkZW50aWNhbGx5LlwiXG5cbiAgICAgTm90ZSB0aGF0IHRoaXMgaXMgbm90IHN5bW1ldHJpYzogW3VzZXJfcHJvdmlkZWRfcHJvbWlzZV0gYWx3YXlzIGJlY29tZXMgdGhlXG4gICAgIHByb3h5LiBbbWFrZV9pbnRvX3Byb3h5XSBpcyBjYWxsZWQgb25seSBieSBbYmluZF0gYW5kIHNpbWlsYXIgZnVuY3Rpb25zIGluXG4gICAgIHRoaXMgbW9kdWxlLiBUaGlzIG1lYW5zIHRoYXQ6XG5cbiAgICAgLSB0aGUgb25seSB3YXkgZm9yIGEgcHJvbWlzZSB0byBiZWNvbWUgYSBwcm94eSBpcyBieSBiZWluZyByZXR1cm5lZCBmcm9tXG4gICAgICAgdGhlIGNhbGxiYWNrIGdpdmVuIGJ5IHRoZSB1c2VyIHRvIFtiaW5kXSwgb3IgYSBzaW1pbGFyIGZ1bmN0aW9uLCBhbmRcbiAgICAgLSB0aGUgb25seSB3YXkgZm9yIGEgcHJvbWlzZSB0byBiZWNvbWUgdW5kZXJseWluZyBmb3IgYSBwcm9taXNlIG90aGVyIHRoYW5cbiAgICAgICBpdHNlbGYgaXMgdG8gYmUgdGhlIG91dGVyIHByb21pc2Ugb3JpZ2luYWxseSByZXR1cm5lZCB0byB0aGUgdXNlciBmcm9tXG4gICAgICAgW2JpbmRdLCBvciBhIHNpbWlsYXIgZnVuY3Rpb24uXG5cbiAgICAgVGhlc2UgdHdvIGZhY3RzIGFyZSBpbXBvcnRhbnQgZm9yIHJlYXNvbmluZyBhYm91dCBob3cgYW5kIHdoaWNoIHByb21pc2VzXG4gICAgIGNhbiBiZWNvbWUgcHJveGllcywgdW5kZXJseWluZywgZXRjLjsgaW4gcGFydGljdWxhciwgaXQgaXMgdXNlZCBpbiB0aGVcbiAgICAgYXJndW1lbnQgaW4gW21heV9ub3dfYmVfcHJveHldIGZvciBjb3JyZWN0IHByZWRpY3Rpb25zIGFib3V0IHN0YXRlIGNoYW5nZXMuXG5cbiAgICAgW35vdXRlcl9wcm9taXNlXSBpcyBhbHdheXMgYSBwZW5kaW5nIHByb21pc2Ugd2hlbiBbbWFrZV9pbnRvX3Byb3h5XSBpc1xuICAgICBjYWxsZWQ7IGZvciB0aGUgZXhwbGFuYXRpb24sIHNlZSBbbWF5X25vd19iZV9wcm94eV0gKHRob3VnaCB0aGUgY2FsbGVyIG9mXG4gICAgIFttYWtlX2ludG9fcHJveHldIGFsd2F5cyBjYWxscyBbdW5kZXJseWluZ10gZmlyc3QgdG8gcGFzcyB0aGUgdW5kZXJseWluZ1xuICAgICBwZW5kaW5nIHByb21pc2UgdG8gW21ha2VfaW50b19wcm94eV0pLlxuXG4gICAgIFRoZSByZWFzb25zIHByb3h5aW5nIGlzIHVzZWQsIGluc3RlYWQgb2YgYWRkaW5nIGEgY2FsbGJhY2sgdG9cbiAgICAgW351c2VyX3Byb3ZpZGVkX3Byb21pc2VdIHRvIHJlc29sdmUgW35vdXRlcl9wcm9taXNlXSB3aGVuIHRoZSBmb3JtZXJcbiAgICAgYmVjb21lcyByZXNvbHZlZCBwcm9iYWJseSBhcmU6XG5cbiAgICAgLSBQcm9taXNlcyBoYXZlIG1vcmUgYmVoYXZpb3JzIHRoYW4gcmVzb2x1dGlvbi4gT25lIHdvdWxkIGhhdmUgdG8gYWRkIGFcbiAgICAgICBjYW5jZWxsYXRpb24gaGFuZGxlciB0byBbfm91dGVyX3Byb21pc2VdIHRvIHByb3BhZ2F0ZSB0aGUgY2FuY2VsbGF0aW9uXG4gICAgICAgYmFjayB0byBbfnVzZXJfcHJvdmlkZWRfcHJvbWlzZV0sIGZvciBleGFtcGxlLiBJdCBtYXkgYmUgZWFzaWVyIHRvIGp1c3RcbiAgICAgICB0aGluayBvZiB0aGVtIGFzIHRoZSBzYW1lIHByb21pc2UuXG4gICAgIC0gSWYgdXNpbmcgY2FsbGJhY2tzLCByZXNvbHZpbmcgW351c2VyX3Byb3ZpZGVkX3Byb21pc2VdIHdvdWxkIG5vdFxuICAgICAgIGltbWVkaWF0ZWx5IHJlc29sdmUgW35vdXRlcl9wcm9taXNlXS4gQW5vdGhlciBjYWxsYmFjayBhZGRlZCB0b1xuICAgICAgIFt+dXNlcl9wcm92aWRlZF9wcm9taXNlXSBtaWdodCBzZWUgW351c2VyX3Byb3ZpZGVkX3Byb21pc2VdIHJlc29sdmVkLFxuICAgICAgIGJ1dCBbfm91dGVyX3Byb21pc2VdIHN0aWxsIHBlbmRpbmcsIGRlcGVuZGluZyBvbiB0aGUgb3JkZXIgaW4gd2hpY2hcbiAgICAgICBjYWxsYmFja3MgYXJlIHJ1bi4gKilcbiAgbGV0IG1ha2VfaW50b19wcm94eVxuICAgICAgKHR5cGUgYylcbiAgICAgIH4ob3V0ZXJfcHJvbWlzZSA6ICgnYSwgdW5kZXJseWluZywgcGVuZGluZykgcHJvbWlzZSlcbiAgICAgIH4odXNlcl9wcm92aWRlZF9wcm9taXNlIDogKCdhLCBfLCBjKSBwcm9taXNlKVxuICAgICAgICA6ICgnYSwgdW5kZXJseWluZywgYykgc3RhdGVfY2hhbmdlZCA9XG5cbiAgICAoKiBVc2luZyBbcCddIGFzIGl0J3MgdGhlIG5hbWUgdXNlZCBpbnNpZGUgW2JpbmRdLCBldGMuLCBmb3IgcHJvbWlzZXMgd2l0aFxuICAgICAgIHRoaXMgcm9sZSAtLSBbcCddIGlzIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSB1c2VyJ3MgZnVuY3Rpb24uICopXG4gICAgbGV0IHAnID0gdW5kZXJseWluZyB1c2VyX3Byb3ZpZGVkX3Byb21pc2UgaW5cblxuICAgIGlmIGlkZW50aWNhbCBwJyBvdXRlcl9wcm9taXNlIHRoZW5cbiAgICAgIFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCdcbiAgICAgICgqIFdlIHJlYWxseSB3YW50IHRvIHJldHVybiBbU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBvdXRlcl9wcm9taXNlXSwgYnV0XG4gICAgICAgICB0aGUgcmVmZXJlbmNlIHRocm91Z2ggW3AnXSBoYXMgdGhlIHJpZ2h0IHR5cGUuICopXG5cbiAgICBlbHNlXG4gICAgICBtYXRjaCBwJy5zdGF0ZSB3aXRoXG4gICAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBvdXRlcl9wcm9taXNlIHAnLnN0YXRlXG4gICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIG91dGVyX3Byb21pc2UgcCcuc3RhdGVcblxuICAgICAgfCBQZW5kaW5nIHAnX2NhbGxiYWNrcyAtPlxuICAgICAgICBsZXQgUGVuZGluZyBvdXRlcl9jYWxsYmFja3MgPSBvdXRlcl9wcm9taXNlLnN0YXRlIGluXG5cbiAgICAgICAgbWVyZ2VfY2FsbGJhY2tzIH5mcm9tOnAnX2NhbGxiYWNrcyB+aW50bzpvdXRlcl9jYWxsYmFja3M7XG4gICAgICAgIG91dGVyX2NhbGxiYWNrcy5ob3dfdG9fY2FuY2VsIDwtIHAnX2NhbGxiYWNrcy5ob3dfdG9fY2FuY2VsO1xuXG4gICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnID1cbiAgICAgICAgICBzZXRfcHJvbWlzZV9zdGF0ZSBwJyAoUHJveHkgb3V0ZXJfcHJvbWlzZSkgaW5cbiAgICAgICAgaWdub3JlIHAnO1xuXG4gICAgICAgIFN0YXRlX21heV9oYXZlX2NoYW5nZWQgb3V0ZXJfcHJvbWlzZVxuICAgICAgICAoKiBUaGUgc3RhdGUgaGFzbid0IGFjdHVhbGx5IGNoYW5nZWQsIGJ1dCB3ZSBzdGlsbCBoYXZlIHRvIHdyYXBcbiAgICAgICAgICAgW291dGVyX3Byb21pc2VdIGZvciB0eXBlIGNoZWNraW5nLiAqKVxuXG4gICAgICAgICgqIFRoZSBzdGF0ZSBvZiBbcCddIG1heSBpbnN0ZWFkIGhhdmUgY2hhbmdlZCAtLSBpdCBtYXkgaGF2ZSBiZWNvbWUgYVxuICAgICAgICAgICBwcm94eS4gSG93ZXZlciwgY2FsbGVycyBvZiBbbWFrZV9pbnRvX3Byb3h5XSBkb24ndCBrbm93IGlmXG4gICAgICAgICAgIFt1c2VyX3Byb3ZpZGVkX3Byb21pc2VdIHdhcyBhIHByb3h5IG9yIG5vdCAodGhhdCdzIHdoeSB3ZSBjYWxsXG4gICAgICAgICAgIHVuZGVybHlpbmcgb24gaXQgYXQgdGhlIHRvcCBvZiB0aGlzIGZ1bmN0aW9uLCB0byBnZXQgW3AnXSkuIFdlIGNhblxuICAgICAgICAgICB0aGVyZWZvcmUgdGFrZSBhIGRhbmdlcm91cyBzaG9ydGN1dCBhbmQgbm90IGJvdGhlciByZXR1cm5pbmcgYSBuZXdcbiAgICAgICAgICAgcmVmZXJlbmNlIHRvIFt1c2VyX3Byb3ZpZGVkX3Byb21pc2VdIGZvciBzaGFkb3dpbmcuICopXG5cblxuXG4gICgqIE1haW50YWluZXIncyBub3RlOiBhIGxvdCBvZiB0aGUgY29kZSBiZWxvdyBjYW4gcHJvYmFibHkgYmUgZGVkdXBsaWNhdGVkIGluXG4gICAgIHNvbWUgd2F5LCBlc3BlY2lhbGx5IGlmIGFzc3VtaW5nIEZsYW1iZGEuICopXG5cbiAgbGV0IGJpbmQgcCBmID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICAoKiBJbiBjYXNlIFtMd3QuYmluZF0gbmVlZHMgdG8gZGVmZXIgdGhlIGNhbGwgdG8gW2ZdLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYmVcbiAgICAgICBjYWxsZWQgdG8gY3JlYXRlOlxuXG4gICAgICAgMS4gVGhlIHByb21pc2UsIFtwJyddLCB0aGF0IG11c3QgYmUgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciBpbW1lZGlhdGVseS5cbiAgICAgICAyLiBUaGUgY2FsbGJhY2sgdGhhdCByZXNvbHZlcyBbcCcnXS5cblxuICAgICAgIFtMd3QuYmluZF0gZGVmZXJzIHRoZSBjYWxsIHRvIFtmXSBpbiB0d28gY2lyY3Vtc3RhbmNlczpcblxuICAgICAgIDEuIFRoZSBwcm9taXNlIFtwXSBpcyBwZW5kaW5nLlxuICAgICAgIDIuIFRoZSBwcm9taXNlIFtwXSBpcyBmdWxmaWxsZWQsIGJ1dCB0aGUgY3VycmVudCBjYWxsYmFjayBjYWxsIG5lc3RpbmdcbiAgICAgICAgICBkZXB0aCBpcyBzdWNoIHRoYXQgdGhlIGNhbGwgdG8gW2ZdIG11c3QgZ28gaW50byB0aGUgY2FsbGJhY2sgcXVldWUsIGluXG4gICAgICAgICAgb3JkZXIgdG8gYXZvaWQgc3RhY2sgb3ZlcmZsb3cuXG5cbiAgICAgIE1lY2hhbmlzbSAoMikgaXMgY3VycmVudGx5IGRpc2FibGVkLiBJdCBtYXkgYmUgdXNlZCBpbiBhbiBhbHRlcm5hdGl2ZSBMd3RcbiAgICAgIEFQSS5cblxuICAgICAgRnVuY3Rpb25zIG90aGVyIHRoYW4gW0x3dC5iaW5kXSBoYXZlIGFuYWxvZ291cyBkZWZlcnJhbCBiZWhhdmlvci4gKilcbiAgICBsZXQgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgcCcnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lIHApIGluXG4gICAgICAoKiBUaGUgcmVzdWx0IHByb21pc2UgaXMgYSBmcmVzaCBwZW5kaW5nIHByb21pc2UuXG5cbiAgICAgICAgIEluaXRpYWxseSwgdHJ5aW5nIHRvIGNhbmNlbCB0aGlzIGZyZXNoIHBlbmRpbmcgcHJvbWlzZSBbcCcnXSB3aWxsXG4gICAgICAgICBwcm9wYWdhdGUgdGhlIGNhbmNlbGxhdGlvbiBhdHRlbXB0IHRvIFtwXSAoYmFja3dhcmRzIHRocm91Z2ggdGhlXG4gICAgICAgICBwcm9taXNlIGRlcGVuZGVuY3kgZ3JhcGgpLiBJZi93aGVuIFtwXSBpcyBmdWxmaWxsZWQsIEx3dCB3aWxsIGNhbGwgdGhlXG4gICAgICAgICB1c2VyJ3MgY2FsbGJhY2sgW2ZdIGJlbG93LCB3aGljaCB3aWxsIHByb3ZpZGUgYSBuZXcgcHJvbWlzZSBbcCddLCBhbmRcbiAgICAgICAgIFtwJ10gd2lsbCBiZWNvbWUgYSBwcm94eSBvZiBbcCcnXS4gQXQgdGhhdCBwb2ludCwgdHJ5aW5nIHRvIGNhbmNlbFxuICAgICAgICAgW3AnJ10gd2lsbCBiZSBlcXVpdmFsZW50IHRvIHRyeWluZyB0byBjYW5jZWwgW3AnXSwgc28gdGhlIGJlaGF2aW9yIHdpbGxcbiAgICAgICAgIGRlcGVuZCBvbiBob3cgdGhlIHVzZXIgb2J0YWluZWQgW3AnXS4gKilcblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBmIHYgd2l0aCBleG5cbiAgICAgICAgICAgIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG4gICAgICAgICAgKCogUnVuIHRoZSB1c2VyJ3MgZnVuY3Rpb24gW2ZdLiAqKVxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuICAgICAgICAgICgqIFtwJyddIHdhcyBhbiB1bmRlcmx5aW5nIHByb21pc2Ugd2hlbiBpdCB3YXMgY3JlYXRlZCBhYm92ZSwgYnV0IGl0XG4gICAgICAgICAgICAgbWF5IGhhdmUgYmVjb21lIGEgcHJveHkgYnkgdGhlIHRpbWUgdGhpcyBjb2RlIGlzIGJlaW5nIGV4ZWN1dGVkLlxuICAgICAgICAgICAgIEhvd2V2ZXIsIGl0IGlzIHN0aWxsIGVpdGhlciBhbiB1bmRlcmx5aW5nIHBlbmRpbmcgcHJvbWlzZSwgb3IgYVxuICAgICAgICAgICAgIHByb3h5IGZvciBhIHBlbmRpbmcgcHJvbWlzZS4gVGhlcmVmb3JlLCBbbWF5X25vd19iZV9wcm94eV0gcHJvZHVjZXNcbiAgICAgICAgICAgICBhIHJlZmVyZW5jZSB3aXRoIHRoZSByaWdodCB0eXBlIHZhcmlhYmxlcy4gV2UgaW1tZWRpYXRlbHkgZ2V0XG4gICAgICAgICAgICAgW3AnJ10ncyBjdXJyZW50IHVuZGVybHlpbmcgcHJvbWlzZS4gKilcblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICAgICAgKCogTWFrZSB0aGUgb3V0ZXIgcHJvbWlzZSBbcCcnXSBiZWhhdmlvcmFsbHkgaWRlbnRpY2FsIHRvIHRoZSBwcm9taXNlXG4gICAgICAgICAgICAgW3AnXSByZXR1cm5lZCBieSBbZl0gYnkgbWFraW5nIFtwJ10gaW50byBhIHByb3h5IG9mIFtwJyddLiAqKVxuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyBwX3Jlc3VsdCAtPlxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcnIHBfcmVzdWx0IGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuICAgICAgaW5cblxuICAgICAgKHRvX3B1YmxpY19wcm9taXNlIHAnJywgY2FsbGJhY2spXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gZiB2KVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICBwJydcblxuICBsZXQgYmFja3RyYWNlX2JpbmQgYWRkX2xvYyBwIGYgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBmIHZcbiAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+XG4gICAgICAgICAgICAgIGZhaWwgKGFkZF9sb2MgZXhuKSBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnJyAoUmVqZWN0ZWQgKGFkZF9sb2MgZXhuKSkgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBmIHYpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9XG4gICAgICAgICAgICBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKHAnJywgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IFJlamVjdGVkIChhZGRfbG9jIGV4bil9XG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IG1hcCBmIHAgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnJ19yZXN1bHQgPVxuICAgICAgICAgICAgdHJ5IEZ1bGZpbGxlZCAoZiB2KSB3aXRoIGV4blxuICAgICAgICAgICAgd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gUmVqZWN0ZWQgZXhuXG4gICAgICAgICAgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcnIHAnJ19yZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHBfcmVzdWx0IC0+XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwJycgcF9yZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPlxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlXG4gICAgICAgICAgICB7c3RhdGUgPVxuICAgICAgICAgICAgICB0cnkgRnVsZmlsbGVkIChmIHYpXG4gICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IFJlamVjdGVkIGV4bn0pXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9XG4gICAgICAgICAgICBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKHAnJywgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gcmVzdWx0fVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgKHAnJywgY2FsbGJhY2spID0gY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFjaztcbiAgICAgIHAnJ1xuXG4gIGV4dGVybmFsIHJlcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyZXJhaXNlXCJcblxuICBsZXQgY2F0Y2ggZiBoID1cbiAgICBsZXQgcCA9XG4gICAgICB0cnkgZiAoKVxuICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICBpblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgXyBhcyBwX3Jlc3VsdCAtPlxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcnIHBfcmVzdWx0IGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcgPVxuICAgICAgICAgICAgdHJ5IGggZXhuXG4gICAgICAgICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIG1ha2VfaW50b19wcm94eSB+b3V0ZXJfcHJvbWlzZTpwJycgfnVzZXJfcHJvdmlkZWRfcHJvbWlzZTpwJyBpblxuICAgICAgICAgIGlnbm9yZSBwJydcbiAgICAgIGluXG5cbiAgICAgICh0b19wdWJsaWNfcHJvbWlzZSBwJycsIGNhbGxiYWNrKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoIGV4bilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IGJhY2t0cmFjZV9jYXRjaCBhZGRfbG9jIGYgaCA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgcCcnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lIHApIGluXG5cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcF9yZXN1bHQgPVxuICAgICAgICBtYXRjaCBwX3Jlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gYXMgcF9yZXN1bHQgLT5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnJyBwX3Jlc3VsdCBpblxuICAgICAgICAgIGlnbm9yZSBwJydcblxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBoIGV4blxuICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT5cbiAgICAgICAgICAgICAgZmFpbCAoYWRkX2xvYyBleG4pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgbWFrZV9pbnRvX3Byb3h5IH5vdXRlcl9wcm9taXNlOnAnJyB+dXNlcl9wcm92aWRlZF9wcm9taXNlOnAnIGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuICAgICAgaW5cblxuICAgICAgKHRvX3B1YmxpY19wcm9taXNlIHAnJywgY2FsbGJhY2spXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGggKGFkZF9sb2MgZXhuKSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IHRyeV9iaW5kIGYgZicgaCA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgcCcnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lIHApIGluXG5cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcF9yZXN1bHQgPVxuICAgICAgICBtYXRjaCBwX3Jlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgZicgdlxuICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgaCBleG5cbiAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgbWFrZV9pbnRvX3Byb3h5IH5vdXRlcl9wcm9taXNlOnAnJyB+dXNlcl9wcm92aWRlZF9wcm9taXNlOnAnIGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuICAgICAgaW5cblxuICAgICAgKHRvX3B1YmxpY19wcm9taXNlIHAnJywgY2FsbGJhY2spXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gZicgdilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoIGV4bilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IGJhY2t0cmFjZV90cnlfYmluZCBhZGRfbG9jIGYgZicgaCA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgcCcnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lIHApIGluXG5cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcF9yZXN1bHQgPVxuICAgICAgICBtYXRjaCBwX3Jlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgZicgdlxuICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT5cbiAgICAgICAgICAgICAgZmFpbCAoYWRkX2xvYyBleG4pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgbWFrZV9pbnRvX3Byb3h5IH5vdXRlcl9wcm9taXNlOnAnJyB+dXNlcl9wcm92aWRlZF9wcm9taXNlOnAnIGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcgPVxuICAgICAgICAgICAgdHJ5IGggZXhuXG4gICAgICAgICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPlxuICAgICAgICAgICAgICBmYWlsIChhZGRfbG9jIGV4bilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBmJyB2KVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGggKGFkZF9sb2MgZXhuKSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IGZpbmFsaXplIGYgZicgPVxuICAgIHRyeV9iaW5kIGZcbiAgICAgIChmdW4geCAtPiBiaW5kIChmJyAoKSkgKGZ1biAoKSAtPiByZXR1cm4geCkpXG4gICAgICAoZnVuIGUgLT4gYmluZCAoZicgKCkpIChmdW4gKCkgLT4gZmFpbCBlKSlcblxuICBsZXQgYmFja3RyYWNlX2ZpbmFsaXplIGFkZF9sb2MgZiBmJyA9XG4gICAgYmFja3RyYWNlX3RyeV9iaW5kIGFkZF9sb2MgZlxuICAgICAgKGZ1biB4IC0+IGJpbmQgKGYnICgpKSAoZnVuICgpIC0+IHJldHVybiB4KSlcbiAgICAgIChmdW4gZSAtPiBiaW5kIChmJyAoKSkgKGZ1biAoKSAtPiBmYWlsIChhZGRfbG9jIGUpKSlcblxuXG5cbiAgbGV0IG9uX2NhbmNlbCBwIGYgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgUmVqZWN0ZWQgQ2FuY2VsZWQgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiAoKSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICAoKCksIChmdW4gXyAtPiBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmICgpKSwgRnVsZmlsbGVkICgpKSlcblxuICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgKClcblxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICgpXG5cbiAgICB8IFBlbmRpbmcgY2FsbGJhY2tzIC0+XG4gICAgICBhZGRfY2FuY2VsX2NhbGxiYWNrIGNhbGxiYWNrcyBmXG5cblxuXG4gIGxldCBvbl9zdWNjZXNzIHAgZiA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBmdW4gcmVzdWx0IC0+XG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgICAgICBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmIHZcblxuICAgICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICAgICAoKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgdilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgICgoKSwgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICAoKVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFja1xuXG4gIGxldCBvbl9mYWlsdXJlIHAgZiA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBmdW4gcmVzdWx0IC0+XG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgICAoKVxuXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG4gICAgICAgICAgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiBleG5cbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgKClcblxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgZXhuKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKCgpLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrXG5cbiAgbGV0IG9uX3Rlcm1pbmF0aW9uIHAgZiA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBmdW4gX3Jlc3VsdCAtPlxuICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgICAgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiAoKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgKCkpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAoKCksIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiAoKSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgICgoKSwgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFja1xuXG4gIGxldCBvbl9hbnkgcCBmIGcgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgZnVuIHJlc3VsdCAtPlxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG4gICAgICAgICAgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiB2XG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgICAgICBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBnIGV4blxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgdilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgICgoKSwgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZyBleG4pXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAoKCksIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2tcbmVuZFxuaW5jbHVkZSBTZXF1ZW50aWFsX2NvbXBvc2l0aW9uXG5cblxuKCogVGhpcyBiZWxvbmdzIHdpdGggdGhlIFtwcm90ZWN0ZWRdIGFuZCBzdWNoLCBidXQgaXQgZGVwZW5kcyBvbiBwcmltaXRpdmVzIGZyb21cbiAgIFtTZXF1ZW50aWFsX2NvbXBvc2l0aW9uXS4gKilcbmxldCB3cmFwX2luX2NhbmNlbGFibGUgcCA9XG4gbGV0IEludGVybmFsIHBfaW50ZXJuYWwgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiBsZXQgcF91bmRlcmx5aW5nID0gdW5kZXJseWluZyBwX2ludGVybmFsIGluXG4gbWF0Y2ggcF91bmRlcmx5aW5nLnN0YXRlIHdpdGhcbiB8IEZ1bGZpbGxlZCBfIC0+IHBcbiB8IFJlamVjdGVkIF8gLT4gcFxuIHwgUGVuZGluZyBfIC0+XG4gICBsZXQgcCcsIHIgPSB0YXNrICgpIGluXG4gICBvbl9jYW5jZWwgcCcgKGZ1biAoKSAtPiBjYW5jZWwgcCk7XG4gICBvbl9hbnkgcCAod2FrZXVwIHIpICh3YWtldXBfZXhuIHIpO1xuICAgcCdcblxuXG5tb2R1bGUgQ29uY3VycmVudF9jb21wb3NpdGlvbiA6XG5zaWdcbiAgdmFsIGRvbnRfd2FpdCA6ICh1bml0IC0+IF8gdCkgLT4gKGV4biAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBhc3luYyA6ICh1bml0IC0+IF8gdCkgLT4gdW5pdFxuICB2YWwgaWdub3JlX3Jlc3VsdCA6IF8gdCAtPiB1bml0XG5cbiAgdmFsIGJvdGggOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcbiAgdmFsIGpvaW4gOiB1bml0IHQgbGlzdCAtPiB1bml0IHRcbiAgdmFsIGFsbCA6ICgnYSB0KSBsaXN0IC0+ICgnYSBsaXN0KSB0XG5cbiAgdmFsIGNob29zZSA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gIHZhbCBwaWNrIDogJ2EgdCBsaXN0IC0+ICdhIHRcblxuICB2YWwgbmNob29zZSA6ICdhIHQgbGlzdCAtPiAnYSBsaXN0IHRcbiAgdmFsIG5waWNrIDogJ2EgdCBsaXN0IC0+ICdhIGxpc3QgdFxuXG4gIHZhbCBuY2hvb3NlX3NwbGl0IDogJ2EgdCBsaXN0IC0+ICgnYSBsaXN0ICogJ2EgdCBsaXN0KSB0XG5lbmQgPVxuc3RydWN0XG4gIGV4dGVybmFsIHJlcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyZXJhaXNlXCJcblxuICBsZXQgZG9udF93YWl0IGYgaCA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICgpXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIGggZXhuXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBjYWxsYmFjayByZXN1bHQgPVxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAgICAgKClcbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBoIGV4blxuICAgICAgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2tcblxuICBsZXQgYXN5bmMgZiA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICgpXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICFhc3luY19leGNlcHRpb25faG9vayBleG5cblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IGNhbGxiYWNrIHJlc3VsdCA9XG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgICAoKVxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgICFhc3luY19leGNlcHRpb25faG9vayBleG5cbiAgICAgIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrXG5cbiAgbGV0IGlnbm9yZV9yZXN1bHQgcCA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAoKVxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICByZXJhaXNlIGV4blxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgY2FsbGJhY2sgcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICAgICgpXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgIWFzeW5jX2V4Y2VwdGlvbl9ob29rIGV4blxuICAgICAgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2tcblxuXG5cbiAgbGV0IGpvaW4gcHMgPVxuICAgIGxldCBwJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMpIGluXG5cbiAgICBsZXQgbnVtYmVyX3BlbmRpbmdfaW5fcHMgPSByZWYgMCBpblxuICAgIGxldCBqb2luX3Jlc3VsdCA9IHJlZiAoRnVsZmlsbGVkICgpKSBpblxuXG4gICAgKCogQ2FsbGJhY2sgYXR0YWNoZWQgdG8gZWFjaCBwcm9taXNlIGluIFtwc10gdGhhdCBpcyBzdGlsbCBwZW5kaW5nIGF0IHRoZVxuICAgICAgIHRpbWUgW2pvaW5dIGlzIGNhbGxlZC4gKilcbiAgICBsZXQgY2FsbGJhY2sgbmV3X3Jlc3VsdCA9XG4gICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnID0gbWF5X25vd19iZV9wcm94eSBwJyBpblxuXG4gICAgICBiZWdpbiBtYXRjaCBuZXdfcmVzdWx0IHdpdGhcbiAgICAgIHwgRnVsZmlsbGVkICgpIC0+ICgpXG4gICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICgqIEZvciB0aGUgZmlyc3QgcHJvbWlzZSBpbiBbcHNdIHRvIGJlIHJlamVjdGVkLCBzZXQgdGhlIHJlc3VsdCBvZiB0aGVcbiAgICAgICAgIFtqb2luXSB0byByZWplY3RlZCB3aXRoIHRoZSBzYW1lIGV4Y2VwdGlvbi4uICopXG4gICAgICAgIG1hdGNoICFqb2luX3Jlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkICgpIC0+IGpvaW5fcmVzdWx0IDo9IG5ld19yZXN1bHRcbiAgICAgICAgfCBSZWplY3RlZCBfIC0+ICgpXG4gICAgICBlbmQ7XG5cbiAgICAgICgqIEluIGFsbCBjYXNlcywgZGVjcmVtZW50IHRoZSBudW1iZXIgb2YgcHJvbWlzZXMgc3RpbGwgcGVuZGluZywgYW5kXG4gICAgICAgICByZXNvbHZlIHRoZSBbam9pbl0gb25jZSBhbGwgcHJvbWlzZXMgcmVzb2x2ZS4gKilcbiAgICAgIG51bWJlcl9wZW5kaW5nX2luX3BzIDo9ICFudW1iZXJfcGVuZGluZ19pbl9wcyAtIDE7XG4gICAgICBpZiAhbnVtYmVyX3BlbmRpbmdfaW5fcHMgPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IHAnID0gdW5kZXJseWluZyBwJyBpblxuICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJyA9XG4gICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlICh1bmRlcmx5aW5nIHAnKSAham9pbl9yZXN1bHQgaW5cbiAgICAgICAgaWdub3JlIHAnXG4gICAgICBlbmRcbiAgICBpblxuXG4gICAgKCogQXR0YWNoIHRoZSBhYm92ZSBjYWxsYmFjay4gU2ltdWx0YW5lb3VzbHkgY291bnQgaG93IG1hbnkgcGVuZGluZyBwcm9taXNlc1xuICAgICAgIHRoZXJlIGFyZSBpbiBbcHNdIChpbml0aWFsbHkpLiBJZiB0aGF0IG51bWJlciBpcyB6ZXJvLCB0aGUgW2pvaW5dIG11c3RcbiAgICAgICByZXNvbHZlIGltbWVkaWF0ZWx5LiAqKVxuICAgIGxldCByZWMgYXR0YWNoX2NhbGxiYWNrX29yX3Jlc29sdmVfaW1tZWRpYXRlbHkgcHMgPVxuICAgICAgbWF0Y2ggcHMgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBpZiAhbnVtYmVyX3BlbmRpbmdfaW5fcHMgPSAwIHRoZW5cbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSAham9pbl9yZXN1bHR9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSBwJ1xuXG4gICAgICB8IHA6OnBzIC0+XG4gICAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgICAgICBudW1iZXJfcGVuZGluZ19pbl9wcyA6PSAhbnVtYmVyX3BlbmRpbmdfaW5fcHMgKyAxO1xuICAgICAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICAgICAgYXR0YWNoX2NhbGxiYWNrX29yX3Jlc29sdmVfaW1tZWRpYXRlbHkgcHNcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcF9yZXN1bHQgLT5cbiAgICAgICAgICAoKiBBcyBpbiB0aGUgY2FsbGJhY2sgYWJvdmUsIGJ1dCBmb3IgYWxyZWFkeS1yZXNvbHZlZCBwcm9taXNlcyBpblxuICAgICAgICAgICAgIFtwc106IHJlamVjdCB0aGUgW2pvaW5dIHdpdGggdGhlIHNhbWUgZXhjZXB0aW9uIGFzIGluIHRoZSBmaXJzdFxuICAgICAgICAgICAgIHJlamVjdGVkIHByb21pc2UgZm91bmQuIFtqb2luXSBzdGlsbCB3YWl0cyBmb3IgYW55IHBlbmRpbmcgcHJvbWlzZXNcbiAgICAgICAgICAgICBiZWZvcmUgYWN0dWFsbHkgcmVzb2x2aW5nLCB0aG91Z2guICopXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggIWpvaW5fcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IEZ1bGZpbGxlZCAoKSAtPiBqb2luX3Jlc3VsdCA6PSBwX3Jlc3VsdDtcbiAgICAgICAgICB8IFJlamVjdGVkIF8gLT4gKClcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgYXR0YWNoX2NhbGxiYWNrX29yX3Jlc29sdmVfaW1tZWRpYXRlbHkgcHNcblxuICAgICAgICB8IEZ1bGZpbGxlZCAoKSAtPlxuICAgICAgICAgIGF0dGFjaF9jYWxsYmFja19vcl9yZXNvbHZlX2ltbWVkaWF0ZWx5IHBzXG4gICAgaW5cblxuICAgIGF0dGFjaF9jYWxsYmFja19vcl9yZXNvbHZlX2ltbWVkaWF0ZWx5IHBzXG5cbiAgKCogdGhpcyBpcyAzIHdvcmRzLCBzbWFsbGVyIHRoYW4gdGhlIDIgdGltZXMgMiB3b3JkcyBhIHBhaXIgb2YgcmVmZXJlbmNlc1xuICAgICB3b3VsZCB0YWtlLiAqKVxuICB0eXBlICgnYSwnYikgcGFpciA9IHtcbiAgICBtdXRhYmxlIHgxOiAnYSBvcHRpb247XG4gICAgbXV0YWJsZSB4MjogJ2Igb3B0aW9uO1xuICB9XG5cbiAgbGV0IGJvdGggcDEgcDIgPVxuICAgIGxldCBwYWlyID0ge3gxID0gTm9uZTsgeDIgPSBOb25lfSBpblxuICAgIGxldCBwMScgPSBiaW5kIHAxIChmdW4gdiAtPiBwYWlyLngxIDwtIFNvbWUgdjsgcmV0dXJuX3VuaXQpIGluXG4gICAgbGV0IHAyJyA9IGJpbmQgcDIgKGZ1biB2IC0+IHBhaXIueDIgPC0gU29tZSB2OyByZXR1cm5fdW5pdCkgaW5cbiAgICBqb2luIFtwMSc7IHAyJ10gfD4gbWFwIChmdW4gKCkgLT5cbiAgICAgIG1hdGNoIHBhaXIueDEsIHBhaXIueDIgd2l0aFxuICAgICAgfCBTb21lIHYxLCBTb21lIHYyIC0+IHYxLCB2MlxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcblxuICBsZXQgYWxsIHBzID1cbiAgICBtYXRjaCBwcyB3aXRoXG4gICAgfCBbXSAtPiByZXR1cm5fbmlsXG4gICAgfCBbeF0gLT4gbWFwIChmdW4geSAtPiBbeV0pIHhcbiAgICB8IFt4OyB5XSAtPiBtYXAgKGZ1biAoeCwgeSkgLT4gW3g7IHldKSAoYm90aCB4IHkpXG4gICAgfCBfIC0+XG4gICAgICBsZXQgdnMgPSBBcnJheS5tYWtlIChMaXN0Lmxlbmd0aCBwcykgTm9uZSBpblxuICAgICAgcHNcbiAgICAgIHw+IExpc3QubWFwaSAoZnVuIGluZGV4IHAgLT5cbiAgICAgICAgYmluZCBwIChmdW4gdiAtPiB2cy4oaW5kZXgpIDwtIFNvbWUgdjsgcmV0dXJuX3VuaXQpKVxuICAgICAgfD4gam9pblxuICAgICAgfD4gbWFwIChmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgcmVjIHRvX2xpc3RfdW5vcHQgaSBhY2MgPVxuICAgICAgICAgICAgaWYgaSA8IDAgdGhlblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCB2cyBpIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB0b19saXN0X3Vub3B0IChpIC0gMSkgKHg6OmFjYylcbiAgICAgICAgICBpblxuICAgICAgICAgIHRvX2xpc3RfdW5vcHQgKEFycmF5Lmxlbmd0aCB2cyAtIDEpIFtdKVxuXG4gICgqIE1haW50YWluZXIncyBub3RlOiB0aGUgbmV4dCBmZXcgZnVuY3Rpb25zIGFyZSBoZWxwZXJzIGZvciBbY2hvb3NlXSBhbmRcbiAgICAgW3BpY2tdLiBQZXJoYXBzIHRoZXkgc2hvdWxkIGJlIGZhY3RvcmVkIGludG8gc29tZSBraW5kIG9mIGdlbmVyaWNcbiAgICAgW2Nob29zZV0vW3BpY2tdIGltcGxlbWVudGF0aW9uLCB3aGljaCBtYXkgYWN0dWFsbHkgYmUgb3B0aW1hbCBhbnl3YXkgd2l0aFxuICAgICBGbGFtYmRhLiAqKVxuXG4gIGxldCBjb3VudF9yZXNvbHZlZF9wcm9taXNlc19pbiAocHMgOiAnYSB0IGxpc3QpID1cbiAgICBsZXQgcmVjIGNvdW50X2FuZF9nYXRoZXJfcmVqZWN0ZWQgdG90YWwgcmVqZWN0ZWQgcHMgPVxuICAgICAgIG1hdGNoIHBzIHdpdGhcbiAgICAgICB8IFtdIC0+IEVycm9yICh0b3RhbCwgcmVqZWN0ZWQpXG4gICAgICAgfCBwIDo6IHBzIC0+XG4gICAgICAgICAgICBsZXQgSW50ZXJuYWwgcSA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcSkuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBGdWxmaWxsZWQgXyAtPiBjb3VudF9hbmRfZ2F0aGVyX3JlamVjdGVkIHRvdGFsIHJlamVjdGVkIHBzXG4gICAgICAgICAgICB8IFJlamVjdGVkIF8gLT4gY291bnRfYW5kX2dhdGhlcl9yZWplY3RlZCAodG90YWwgKyAxKSAocCA6OiByZWplY3RlZCkgcHNcbiAgICAgICAgICAgIHwgUGVuZGluZyBfIC0+IGNvdW50X2FuZF9nYXRoZXJfcmVqZWN0ZWQgdG90YWwgcmVqZWN0ZWQgcHNcbiAgICBpblxuICAgIGxldCByZWMgY291bnRfZnVsZmlsbGVkIHRvdGFsIHBzID1cbiAgICAgICBtYXRjaCBwcyB3aXRoXG4gICAgICAgfCBbXSAtPiBPayB0b3RhbFxuICAgICAgIHwgcCA6OiBwcyAtPlxuICAgICAgICAgICAgbGV0IEludGVybmFsIHEgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHEpLnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgRnVsZmlsbGVkIF8gLT4gY291bnRfZnVsZmlsbGVkICh0b3RhbCArIDEpIHBzXG4gICAgICAgICAgICB8IFJlamVjdGVkIF8gLT4gY291bnRfYW5kX2dhdGhlcl9yZWplY3RlZCAxIFtwXSBwc1xuICAgICAgICAgICAgfCBQZW5kaW5nIF8gLT4gY291bnRfZnVsZmlsbGVkIHRvdGFsIHBzXG4gICAgaW5cbiAgICBjb3VudF9mdWxmaWxsZWQgMCBwc1xuXG4gICgqIEV2YWx1YXRlcyB0byB0aGUgW25ddGggcHJvbWlzZSBpbiBbcHNdLCBhbW9uZyBvbmx5IHRob3NlIHByb21pc2VzIGluIFtwc11cbiAgICAgdGhhdCBhcmUgcmVzb2x2ZWQuIFRoZSBjYWxsZXIgaXMgZXhwZWN0ZWQgdG8gZW5zdXJlIHRoYXQgdGhlcmUgYXJlIGF0XG4gICAgIGxlYXN0IFtuXSByZXNvbHZlZCBwcm9taXNlcyBpbiBbcHNdLiAqKVxuICBsZXQgcmVjIG50aF9yZXNvbHZlZCAocHMgOiAnYSB0IGxpc3QpIChuIDogaW50KSA6ICdhIHQgPVxuICAgIG1hdGNoIHBzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuICAgIHwgcDo6cHMgLT5cbiAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCcpLnN0YXRlIHdpdGhcbiAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgIG50aF9yZXNvbHZlZCBwcyBuXG5cbiAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgaWYgbiA8PSAwIHRoZW4gcFxuICAgICAgICBlbHNlIG50aF9yZXNvbHZlZCBwcyAobiAtIDEpXG4gICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICAgaWYgbiA8PSAwIHRoZW4gcFxuICAgICAgICBlbHNlIG50aF9yZXNvbHZlZCBwcyAobiAtIDEpXG5cbiAgKCogTGlrZSBbbnRoX3Jlc29sdmVkXSwgYnV0IGNhbmNlbHMgYWxsIHBlbmRpbmcgcHJvbWlzZXMgZm91bmQgd2hpbGVcbiAgICAgdHJhdmVyc2luZyBbcHNdLiAqKVxuICBsZXQgcmVjIG50aF9yZXNvbHZlZF9hbmRfY2FuY2VsX3BlbmRpbmcgKHBzIDogJ2EgdCBsaXN0KSAobiA6IGludCkgOiAnYSB0ID1cbiAgICBtYXRjaCBwcyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbiAgICB8IHA6OnBzIC0+XG4gICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHAnKS5zdGF0ZSB3aXRoXG4gICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICBjYW5jZWwgcDtcbiAgICAgICAgbnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluZyBwcyBuXG5cbiAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgaWYgbiA8PSAwIHRoZW4gKExpc3QuaXRlciBjYW5jZWwgcHM7IHApXG4gICAgICAgIGVsc2UgbnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluZyBwcyAobiAtIDEpXG4gICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICAgaWYgbiA8PSAwIHRoZW4gKExpc3QuaXRlciBjYW5jZWwgcHM7IHApXG4gICAgICAgIGVsc2UgbnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluZyBwcyAobiAtIDEpXG5cbiAgKCogVGhlIFBSTkcgc3RhdGUgaXMgaW5pdGlhbGl6ZWQgd2l0aCBhIGNvbnN0YW50IHRvIG1ha2Ugbm9uLUlPLWJhc2VkIHByb2dyYW1zXG4gICAgIGRldGVybWluaXN0aWMuICopXG4gICgqIE1haW50YWluZXIncyBub3RlOiBpcyB0aGlzIG5lY2Vzc2FyeT8gKilcbiAgbGV0IHBybmcgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZSBbfHxdKVxuXG4gIGxldCBjaG9vc2UgcHMgPVxuICAgIGlmIHBzID0gW10gdGhlblxuICAgICAgaW52YWxpZF9hcmdcbiAgICAgICAgXCJMd3QuY2hvb3NlIFtdIHdvdWxkIHJldHVybiBhIHByb21pc2UgdGhhdCBpcyBwZW5kaW5nIGZvcmV2ZXJcIjtcbiAgICBtYXRjaCBjb3VudF9yZXNvbHZlZF9wcm9taXNlc19pbiBwcyB3aXRoXG4gICAgfCBPayAwIC0+XG4gICAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMpIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayByZXN1bHQgPVxuICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAgPSBtYXlfbm93X2JlX3Byb3h5IHAgaW5cbiAgICAgICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cbiAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9XG4gICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAgcmVzdWx0IGluXG4gICAgICAgIGlnbm9yZSBwXG4gICAgICBpblxuICAgICAgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgcHMgY2FsbGJhY2s7XG5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuICAgIHwgT2sgMSAtPlxuICAgICAgbnRoX3Jlc29sdmVkIHBzIDBcblxuICAgIHwgT2sgbiAtPlxuICAgICAgbnRoX3Jlc29sdmVkIHBzIChSYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHBybmcpIG4pXG5cbiAgICB8IEVycm9yIChuLCBwcykgLT5cbiAgICAgIG50aF9yZXNvbHZlZCBwcyAoUmFuZG9tLlN0YXRlLmludCAoTGF6eS5mb3JjZSBwcm5nKSBuKVxuXG4gIGxldCBwaWNrIHBzID1cbiAgICBpZiBwcyA9IFtdIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiTHd0LnBpY2sgW10gd291bGQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IGlzIHBlbmRpbmcgZm9yZXZlclwiO1xuICAgIG1hdGNoIGNvdW50X3Jlc29sdmVkX3Byb21pc2VzX2luIHBzIHdpdGhcbiAgICB8IE9rIDAgLT5cbiAgICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KHByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcykgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHJlc3VsdCA9XG4gICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpblxuICAgICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID1cbiAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCByZXN1bHQgaW5cbiAgICAgICAgaWdub3JlIHBcbiAgICAgIGluXG4gICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiBwcyBjYWxsYmFjaztcblxuICAgICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gICAgfCBPayAxIC0+XG4gICAgICBudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW5nIHBzIDBcblxuICAgIHwgT2sgbiAtPlxuICAgICAgbnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluZyBwc1xuICAgICAgICAoUmFuZG9tLlN0YXRlLmludCAoTGF6eS5mb3JjZSBwcm5nKSBuKVxuXG4gICAgfCBFcnJvciAobiwgcXMpIC0+XG4gICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgbnRoX3Jlc29sdmVkIHFzIChSYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHBybmcpIG4pXG5cblxuXG4gICgqIElmIFtuY2hvb3NlIHBzXSBvciBbbnBpY2sgcHNdIGZvdW5kIGFsbCBwcm9taXNlcyBpbiBbcHNdIHBlbmRpbmcsIHRoZVxuICAgICBjYWxsYmFjayBhZGRlZCB0byBlYWNoIHByb21pc2UgaW4gW3BzXSBldmVudHVhbGx5IGNhbGxzIHRoaXMgZnVuY3Rpb24uIFRoZVxuICAgICBmdW5jdGlvbiBjb2xsZWN0cyBwcm9taXNlcyBpbiBbcHNdIHRoYXQgaGF2ZSBiZWNvbWUgZnVsZmlsbGVkLCBvciBmaW5kcyBvbmVcbiAgICAgcHJvbWlzZSBpbiBbcHNdIHRoYXQgaGFzIGJlZW4gcmVqZWN0ZWQuIEl0IHRoZW4gcmV0dXJucyB0aGUgZGVzaXJlZCBzdGF0ZVxuICAgICBvZiB0aGUgZmluYWwgcHJvbWlzZTogZWl0aGVyIHRoZSBsaXN0IG9mIHJlc3VsdHMgY29sbGVjdGVkLCBvciB0aGVcbiAgICAgZXhjZXB0aW9uIGZvdW5kLiAqKVxuICBsZXQgcmVjIGNvbGxlY3RfZnVsZmlsbGVkX3Byb21pc2VzX2FmdGVyX3BlbmRpbmdcbiAgICAgIChyZXN1bHRzIDogJ2EgbGlzdClcbiAgICAgIChwcyA6ICdhIHQgbGlzdCkgOlxuICAgICAgICAoJ2EgbGlzdCByZXNvbHZlZF9zdGF0ZSkgPVxuXG4gICAgbWF0Y2ggcHMgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIEZ1bGZpbGxlZCAoTGlzdC5yZXYgcmVzdWx0cylcblxuICAgIHwgcDo6cHMgLT5cbiAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG5cbiAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0ZXJfcGVuZGluZyAodjo6cmVzdWx0cykgcHNcblxuICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICByZXN1bHRcblxuICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0ZXJfcGVuZGluZyByZXN1bHRzIHBzXG5cbiAgbGV0IG5jaG9vc2UgcHMgPVxuICAgICgqIElmIGF0IGxlYXN0IG9uZSBwcm9taXNlIGluIFtwc10gaXMgZm91bmQgZnVsZmlsbGVkLCB0aGlzIGZ1bmN0aW9uIGlzXG4gICAgICAgY2FsbGVkIHRvIGZpbmQgYWxsIHN1Y2ggcHJvbWlzZXMuICopXG4gICAgaWYgcHMgPSBbXSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkx3dC5uY2hvb3NlIFtdIHdvdWxkIHJldHVybiBhIHByb21pc2UgdGhhdCBpcyBwZW5kaW5nIGZvcmV2ZXJcIjtcbiAgICBsZXQgcmVjIGNvbGxlY3RfYWxyZWFkeV9mdWxmaWxsZWRfcHJvbWlzZXNfb3JfZmluZF9yZWplY3RlZCBhY2MgcHMgPVxuICAgICAgbWF0Y2ggcHMgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICByZXR1cm4gKExpc3QucmV2IGFjYylcblxuICAgICAgfCBwOjpwcyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgKHY6OmFjYykgcHNcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gcmVzdWx0fVxuXG4gICAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkIGFjYyBwc1xuICAgIGluXG5cbiAgICAoKiBMb29rcyBmb3IgYWxyZWFkeS1yZXNvbHZlZCBwcm9taXNlcyBpbiBbcHNdLiBJZiBub25lIGFyZSBmdWxmaWxsZWQgb3JcbiAgICAgICByZWplY3RlZCwgYWRkcyBhIGNhbGxiYWNrIHRvIGFsbCBwcm9taXNlcyBpbiBbcHNdIChhbGwgb2Ygd2hpY2ggYXJlXG4gICAgICAgcGVuZGluZykuICopXG4gICAgbGV0IHJlYyBjaGVja19mb3JfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyBwcycgPVxuICAgICAgbWF0Y2ggcHMnIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IHAgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDoocHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIHBzKSBpblxuXG4gICAgICAgIGxldCBjYWxsYmFjayBfcmVzdWx0ID1cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAgPSBtYXlfbm93X2JlX3Byb3h5IHAgaW5cbiAgICAgICAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBjb2xsZWN0X2Z1bGZpbGxlZF9wcm9taXNlc19hZnRlcl9wZW5kaW5nIFtdIHBzIGluXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCByZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcFxuICAgICAgICBpblxuICAgICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiBwcyBjYWxsYmFjaztcblxuICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgICAgIHwgcDo6cHMgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkIFt2XSBwc1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgICBjaGVja19mb3JfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyBwc1xuICAgIGluXG5cbiAgICBsZXQgcCA9IGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzIGluXG4gICAgcFxuXG4gICgqIFNlZSBbbmNob29zZV0uIFRoaXMgZnVuY3Rpb24gZGlmZmVycyBvbmx5IGluIGhhdmluZyBhZGRpdGlvbmFsIGNhbGxzIHRvXG4gICAgIFtjYW5jZWxdLiAqKVxuICBsZXQgbnBpY2sgcHMgPVxuICAgIGlmIHBzID0gW10gdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJMd3QubnBpY2sgW10gd291bGQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IGlzIHBlbmRpbmcgZm9yZXZlclwiO1xuICAgIGxldCByZWMgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkIGFjYyBwcycgPVxuICAgICAgbWF0Y2ggcHMnIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgTGlzdC5pdGVyIGNhbmNlbCBwcztcbiAgICAgICAgcmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbiAgICAgIHwgcDo6cHMnIC0+XG4gICAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9mdWxmaWxsZWRfcHJvbWlzZXNfb3JfZmluZF9yZWplY3RlZCAodjo6YWNjKSBwcydcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgTGlzdC5pdGVyIGNhbmNlbCBwcztcbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgYWNjIHBzJ1xuICAgIGluXG5cbiAgICBsZXQgcmVjIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzJyA9XG4gICAgICBtYXRjaCBwcycgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMpIGluXG5cbiAgICAgICAgbGV0IGNhbGxiYWNrIF9yZXN1bHQgPVxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpblxuICAgICAgICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGNvbGxlY3RfZnVsZmlsbGVkX3Byb21pc2VzX2FmdGVyX3BlbmRpbmcgW10gcHMgaW5cbiAgICAgICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPVxuICAgICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAgcmVzdWx0IGluXG4gICAgICAgICAgaWdub3JlIHBcbiAgICAgICAgaW5cbiAgICAgICAgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgcHMgY2FsbGJhY2s7XG5cbiAgICAgICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gICAgICB8IHA6OnBzJyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgW3ZdIHBzJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzJ1xuICAgIGluXG5cbiAgICBsZXQgcCA9IGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzIGluXG4gICAgcFxuXG5cblxuICAoKiBTYW1lIGdlbmVyYWwgcGF0dGVybiBhcyBbbnBpY2tdIGFuZCBbbmNob29zZV0uICopXG4gIGxldCBuY2hvb3NlX3NwbGl0IHBzID1cbiAgICBpZiBwcyA9IFtdIHRoZW5cbiAgICAgIGludmFsaWRfYXJnXG4gICAgICAgIFwiTHd0Lm5jaG9vc2Vfc3BsaXQgW10gd291bGQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IGlzIHBlbmRpbmcgZm9yZXZlclwiO1xuICAgIGxldCByZWMgZmluaXNoXG4gICAgICAgICh0b19yZXNvbHZlIDogKCdhIGxpc3QgKiAnYSB0IGxpc3QsIHVuZGVybHlpbmcsIHBlbmRpbmcpIHByb21pc2UpXG4gICAgICAgIChmdWxmaWxsZWQgOiAnYSBsaXN0KVxuICAgICAgICAocGVuZGluZyA6ICdhIHQgbGlzdClcbiAgICAgICAgKHBzIDogJ2EgdCBsaXN0KVxuICAgICAgICAgIDogKCdhIGxpc3QgKiAnYSB0IGxpc3QsIHVuZGVybHlpbmcsIHJlc29sdmVkKSBzdGF0ZV9jaGFuZ2VkID1cblxuICAgICAgbWF0Y2ggcHMgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgdG9fcmVzb2x2ZVxuICAgICAgICAgIChGdWxmaWxsZWQgKExpc3QucmV2IGZ1bGZpbGxlZCwgTGlzdC5yZXYgcGVuZGluZykpXG5cbiAgICAgIHwgcDo6cHMgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHBfaW50ZXJuYWwgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcF9pbnRlcm5hbCkuc3RhdGUgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgZmluaXNoIHRvX3Jlc29sdmUgKHY6OmZ1bGZpbGxlZCkgcGVuZGluZyBwc1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgdG9fcmVzb2x2ZSByZXN1bHRcblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGZpbmlzaCB0b19yZXNvbHZlIGZ1bGZpbGxlZCAocDo6cGVuZGluZykgcHNcbiAgICBpblxuXG4gICAgbGV0IHJlYyBjb2xsZWN0X2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcmVzdWx0cyBwZW5kaW5nIHBzID1cbiAgICAgIG1hdGNoIHBzIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKCogTWFpbnRhaW5lcidzIG5vdGU6IHNob3VsZCB0aGUgcGVuZGluZyBwcm9taXNlIGxpc3QgYWxzbyBiZVxuICAgICAgICAgICByZXZlcnNlZD8gSXQgaXMgcmV2ZXJzZWQgaW4gZmluaXNoLiAqKVxuICAgICAgICByZXR1cm4gKExpc3QucmV2IHJlc3VsdHMsIHBlbmRpbmcpXG5cbiAgICAgIHwgcDo6cHMgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHBfaW50ZXJuYWwgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcF9pbnRlcm5hbCkuc3RhdGUgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzICh2OjpyZXN1bHRzKSBwZW5kaW5nIHBzXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyByZXN1bHRzIChwOjpwZW5kaW5nKSBwc1xuICAgIGluXG5cbiAgICBsZXQgcmVjIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBlbmRpbmdfYWNjIHBzJyA9XG4gICAgICBtYXRjaCBwcycgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMpIGluXG5cbiAgICAgICAgbGV0IGNhbGxiYWNrIF9yZXN1bHQgPVxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpblxuICAgICAgICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9IGZpbmlzaCBwIFtdIFtdIHBzIGluXG4gICAgICAgICAgaWdub3JlIHBcbiAgICAgICAgaW5cbiAgICAgICAgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgcHMgY2FsbGJhY2s7XG5cbiAgICAgICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gICAgICB8IHA6OnBzJyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcF9pbnRlcm5hbCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwX2ludGVybmFsKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgW3ZdIHBlbmRpbmdfYWNjIHBzJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgICBjaGVja19mb3JfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyAocDo6cGVuZGluZ19hY2MpIHBzJ1xuICAgIGluXG5cbiAgICBsZXQgcCA9IGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIFtdIHBzIGluXG4gICAgcFxuZW5kXG5pbmNsdWRlIENvbmN1cnJlbnRfY29tcG9zaXRpb25cblxuXG5cbm1vZHVsZSBNaXNjZWxsYW5lb3VzIDpcbnNpZ1xuICAoKiBQcm9taXNlIHN0YXRlIHF1ZXJ5ICopXG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHwgUmV0dXJuIG9mICdhXG4gICAgfCBGYWlsIG9mIGV4blxuICAgIHwgU2xlZXBcblxuICB2YWwgc3RhdGUgOiAnYSB0IC0+ICdhIHN0YXRlXG4gIHZhbCBpc19zbGVlcGluZyA6ICdhIHQgLT4gYm9vbFxuICB2YWwgZGVidWdfc3RhdGVfaXMgOiAnYSBzdGF0ZSAtPiAnYSB0IC0+IGJvb2wgdFxuXG4gICgqIEZ1bmN0aW9uIGxpZnRlcnMgKilcbiAgdmFsIGFwcGx5IDogKCdhIC0+ICdiIHQpIC0+ICdhIC0+ICdiIHRcblxuICB2YWwgd3JhcCA6XG4gICAgKHVuaXQgLT4gJ2IpIC0+XG4gICAgJ2IgdFxuICB2YWwgd3JhcDEgOlxuICAgICgnYTEgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYiB0KVxuICB2YWwgd3JhcDIgOlxuICAgICgnYTEgLT4gJ2EyIC0+ICdiKSAtPlxuICAgICgnYTEgLT4gJ2EyIC0+ICdiIHQpXG4gIHZhbCB3cmFwMyA6XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdiKSAtPlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYiB0KVxuICB2YWwgd3JhcDQgOlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYiB0KVxuICB2YWwgd3JhcDUgOlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdiKSAtPlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdiIHQpXG4gIHZhbCB3cmFwNiA6XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdiKSAtPlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYiB0KVxuICB2YWwgd3JhcDcgOlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYiB0KVxuXG4gICgqIFBhdXNlZCBwcm9taXNlcyAqKVxuICB2YWwgcGF1c2UgOiB1bml0IC0+IHVuaXQgdFxuICB2YWwgd2FrZXVwX3BhdXNlZCA6IHVuaXQgLT4gdW5pdFxuICB2YWwgcGF1c2VkX2NvdW50IDogdW5pdCAtPiBpbnRcbiAgdmFsIHJlZ2lzdGVyX3BhdXNlX25vdGlmaWVyIDogKGludCAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBhYmFuZG9uX3BhdXNlZCA6IHVuaXQgLT4gdW5pdFxuXG4gICgqIEludGVybmFsIGludGVyZmFjZSBmb3Igb3RoZXIgbW9kdWxlcyBpbiBMd3QgKilcbiAgdmFsIHBvbGwgOiAnYSB0IC0+ICdhIG9wdGlvblxuZW5kID1cbnN0cnVjdFxuICB0eXBlICdhIHN0YXRlID1cbiAgICB8IFJldHVybiBvZiAnYVxuICAgIHwgRmFpbCBvZiBleG5cbiAgICB8IFNsZWVwXG5cbiAgZXh0ZXJuYWwgcmVyYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJlcmFpc2VcIlxuXG4gIGxldCBzdGF0ZSBwID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+IFJldHVybiB2XG4gICAgfCBSZWplY3RlZCBleG4gLT4gRmFpbCBleG5cbiAgICB8IFBlbmRpbmcgXyAtPiBTbGVlcFxuXG4gIGxldCBkZWJ1Z19zdGF0ZV9pcyBleHBlY3RlZF9zdGF0ZSBwID1cbiAgICByZXR1cm4gKHN0YXRlIHAgPSBleHBlY3RlZF9zdGF0ZSlcblxuICBsZXQgaXNfc2xlZXBpbmcgcCA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPiBmYWxzZVxuICAgIHwgUmVqZWN0ZWQgXyAtPiBmYWxzZVxuICAgIHwgUGVuZGluZyBfIC0+IHRydWVcblxuICBsZXQgcG9sbCBwID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICB8IFJlamVjdGVkIGUgLT4gcmVyYWlzZSBlXG4gICAgfCBGdWxmaWxsZWQgdiAtPiBTb21lIHZcbiAgICB8IFBlbmRpbmcgXyAtPiBOb25lXG5cblxuXG4gIGxldCBhcHBseSBmIHggPVxuICAgIHRyeSBmIHggd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcCBmID1cbiAgICB0cnkgcmV0dXJuIChmICgpKVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXAxIGYgeDEgPVxuICAgIHRyeSByZXR1cm4gKGYgeDEpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcDIgZiB4MSB4MiA9XG4gICAgdHJ5IHJldHVybiAoZiB4MSB4MilcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG4gIGxldCB3cmFwMyBmIHgxIHgyIHgzID1cbiAgICB0cnkgcmV0dXJuIChmIHgxIHgyIHgzKVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXA0IGYgeDEgeDIgeDMgeDQgPVxuICAgIHRyeSByZXR1cm4gKGYgeDEgeDIgeDMgeDQpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcDUgZiB4MSB4MiB4MyB4NCB4NSA9XG4gICAgdHJ5IHJldHVybiAoZiB4MSB4MiB4MyB4NCB4NSlcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG4gIGxldCB3cmFwNiBmIHgxIHgyIHgzIHg0IHg1IHg2ID1cbiAgICB0cnkgcmV0dXJuIChmIHgxIHgyIHgzIHg0IHg1IHg2KVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXA3IGYgeDEgeDIgeDMgeDQgeDUgeDYgeDcgPVxuICAgIHRyeSByZXR1cm4gKGYgeDEgeDIgeDMgeDQgeDUgeDYgeDcpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuXG5cbiAgbGV0IHBhdXNlX2hvb2sgPSByZWYgaWdub3JlXG5cbiAgbGV0IHBhdXNlZCA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKClcbiAgbGV0IHBhdXNlZF9jb3VudCA9IHJlZiAwXG5cbiAgbGV0IHBhdXNlICgpID1cbiAgICBsZXQgcCA9IGFkZF90YXNrX3IgcGF1c2VkIGluXG4gICAgaW5jciBwYXVzZWRfY291bnQ7XG4gICAgIXBhdXNlX2hvb2sgIXBhdXNlZF9jb3VudDtcbiAgICBwXG5cbiAgbGV0IHdha2V1cF9wYXVzZWQgKCkgPVxuICAgIGlmIEx3dF9zZXF1ZW5jZS5pc19lbXB0eSBwYXVzZWQgdGhlblxuICAgICAgcGF1c2VkX2NvdW50IDo9IDBcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdG1wID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKSBpblxuICAgICAgTHd0X3NlcXVlbmNlLnRyYW5zZmVyX3IgcGF1c2VkIHRtcDtcbiAgICAgIHBhdXNlZF9jb3VudCA6PSAwO1xuICAgICAgTHd0X3NlcXVlbmNlLml0ZXJfbCAoZnVuIHIgLT4gd2FrZXVwIHIgKCkpIHRtcFxuICAgIGVuZFxuXG4gIGxldCByZWdpc3Rlcl9wYXVzZV9ub3RpZmllciBmID0gcGF1c2VfaG9vayA6PSBmXG5cbiAgbGV0IGFiYW5kb25fcGF1c2VkICgpID1cbiAgICBMd3Rfc2VxdWVuY2UuY2xlYXIgcGF1c2VkO1xuICAgIHBhdXNlZF9jb3VudCA6PSAwXG5cbiAgbGV0IHBhdXNlZF9jb3VudCAoKSA9ICFwYXVzZWRfY291bnRcbmVuZFxuaW5jbHVkZSBNaXNjZWxsYW5lb3VzXG5cbm1vZHVsZSBMZXRfc3ludGF4ID1cbnN0cnVjdFxuICBtb2R1bGUgTGV0X3N5bnRheCA9XG4gIHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwIHQgfmYgPSBtYXAgZiB0XG4gICAgbGV0IGJpbmQgdCB+ZiA9IGJpbmQgdCBmXG4gICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPVxuICAgIHN0cnVjdFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgSW5maXggPVxuc3RydWN0XG4gIGxldCAoPj49KSA9IGJpbmRcbiAgbGV0ICg9PDwpIGYgcCA9IGJpbmQgcCBmXG4gIGxldCAoPnw9KSBwIGYgPSBtYXAgZiBwXG4gIGxldCAoPXw8KSA9IG1hcFxuICBsZXQgKDwmPikgcCBwJyA9IGpvaW4gW3A7IHAnXVxuICBsZXQgKDw/PikgcCBwJyA9IGNob29zZSBbcDsgcCddXG5cbiAgaW5jbHVkZSBMZXRfc3ludGF4XG5lbmRcbmluY2x1ZGUgKCBJbmZpeCA6IG1vZHVsZSB0eXBlIG9mIEluZml4IHdpdGggbW9kdWxlIExldF9zeW50YXggOj0gTGV0X3N5bnRheC5MZXRfc3ludGF4IClcblxubW9kdWxlIFN5bnRheCA9XG5zdHJ1Y3RcbiAgbGV0IChsZXQqKSA9IGJpbmRcbiAgbGV0IChhbmQqKSA9IGJvdGhcblxuICBsZXQgKGxldCspIHggZiA9IG1hcCBmIHhcbiAgbGV0IChhbmQrKSA9IGJvdGhcbmVuZFxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG5leGNlcHRpb24gT2ZmXG5cbnR5cGUgb25fc3dpdGNoID0ge1xuICBtdXRhYmxlIGhvb2tzIDogKHVuaXQgLT4gdW5pdCBMd3QudCkgbGlzdDtcbn1cblxudHlwZSBzdGF0ZSA9XG4gIHwgU3Rfb24gb2Ygb25fc3dpdGNoXG4gIHwgU3Rfb2ZmXG5cbnR5cGUgdCA9IHsgbXV0YWJsZSBzdGF0ZSA6IHN0YXRlIH1cblxubGV0IGNyZWF0ZSAoKSA9IHsgc3RhdGUgPSBTdF9vbiB7IGhvb2tzID0gW10gfSB9XG5cbmxldCBpc19vbiBzd2l0Y2ggPVxuICBtYXRjaCBzd2l0Y2guc3RhdGUgd2l0aFxuICB8IFN0X29uIF8gLT4gdHJ1ZVxuICB8IFN0X29mZiAtPiBmYWxzZVxuXG5sZXQgY2hlY2sgPSBmdW5jdGlvblxuICB8IFNvbWV7IHN0YXRlID0gU3Rfb2ZmIH0gLT4gcmFpc2UgT2ZmXG4gIHwgU29tZSB7c3RhdGUgPSBTdF9vbiBffSB8IE5vbmUgLT4gKClcblxubGV0IGFkZF9ob29rIHN3aXRjaCBob29rID1cbiAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgfCBTb21lIHsgc3RhdGUgPSBTdF9vbiBvcyB9IC0+XG4gICAgb3MuaG9va3MgPC0gaG9vayA6OiBvcy5ob29rc1xuICB8IFNvbWUgeyBzdGF0ZSA9IFN0X29mZiB9IC0+XG4gICAgcmFpc2UgT2ZmXG4gIHwgTm9uZSAtPlxuICAgICgpXG5cbmxldCBhZGRfaG9va19vcl9leGVjIHN3aXRjaCBob29rID1cbiAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgfCBTb21lIHsgc3RhdGUgPSBTdF9vbiBvcyB9IC0+XG4gICAgb3MuaG9va3MgPC0gaG9vayA6OiBvcy5ob29rcztcbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgfCBTb21lIHsgc3RhdGUgPSBTdF9vZmYgfSAtPlxuICAgIGhvb2sgKClcbiAgfCBOb25lIC0+XG4gICAgTHd0LnJldHVybl91bml0XG5cbmxldCB0dXJuX29mZiBzd2l0Y2ggPVxuICBtYXRjaCBzd2l0Y2guc3RhdGUgd2l0aFxuICB8IFN0X29uIHsgaG9va3MgPSBob29rcyB9IC0+XG4gICAgc3dpdGNoLnN0YXRlIDwtIFN0X29mZjtcbiAgICBMd3Quam9pbiAoTGlzdC5tYXAgKGZ1biBob29rIC0+IEx3dC5hcHBseSBob29rICgpKSBob29rcylcbiAgfCBTdF9vZmYgLT5cbiAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IHdpdGhfc3dpdGNoIGZuID1cbiAgbGV0IHN3aXRjaCA9IGNyZWF0ZSAoKSBpblxuICBMd3QuZmluYWxpemVcbiAgICAoZnVuICgpIC0+IGZuIHN3aXRjaClcbiAgICAoZnVuICgpIC0+IHR1cm5fb2ZmIHN3aXRjaClcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5cblxub3BlbiBMd3QuU3ludGF4XG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlICsnYSBub2RlID0gTmlsIHwgQ29ucyBvZiAnYSAqICdhIHRcblxuYW5kICdhIHQgPSB1bml0IC0+ICdhIG5vZGUgTHd0LnRcblxubGV0IHJldHVybl9uaWwgPSBMd3QucmV0dXJuIE5pbFxuXG5sZXQgZW1wdHkgOiAnYSB0ID0gZnVuICgpIC0+IHJldHVybl9uaWxcblxubGV0IHJldHVybiAoeCA6ICdhKSA6ICdhIHQgPSBmdW4gKCkgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgZW1wdHkpKVxuXG5sZXQgcmV0dXJuX2x3dCAoeCA6ICdhIEx3dC50KSA6ICdhIHQgPSBmdW4gKCkgLT5cbiAgIGxldCsgeCA9IHggaW5cbiAgIENvbnMgKHgsIGVtcHR5KVxuXG5sZXQgY29ucyB4IHQgKCkgPSBMd3QucmV0dXJuIChDb25zICh4LCB0KSlcblxubGV0IGNvbnNfbHd0IHggdCAoKSA9XG4gICBsZXQrIHggPSB4IGluXG4gICBDb25zICh4LCB0KVxuXG4oKiBBIG5vdGUgb24gcmVjdXJzaW5nIHRocm91Z2ggdGhlIHNlcXM6XG4gICBXaGVuIHRyYXZlcnNpbmcgYSBzZXEsIHRoZSBmaXJzdCB0aW1lIHdlIGV2YWx1YXRlIGEgc3VzcGVuZGVkIG5vZGUgd2UgYXJlXG4gICBvbiB0aGUgbGVmdCBvZiB0aGUgZmlyc3QgYmluZCAoPj49KS4gSW4gdGhhdCBjYXNlLCB3ZSB1c2UgYXBwbHkgdG8gY2FwdHVyZVxuICAgZXhjZXB0aW9ucyBpbnRvIHByb21pc2UgcmVqZWN0aW9uLlxuXG4gICBUaGlzIGlzIG9ubHkgbmVlZGVkIG9uIHRoZSBmaXJzdCBpdGVyYXRpb24gYmVjYXVzZSB3ZSBhcmUgd2l0aGluIGEgY2FsbGJhY2tcbiAgIHBhc3NlZCB0byBMd3Qgb24gdGhlIHJpZ2h0LWhhbmQgc2lkZSBvZiBhIGJpbmQgYWZ0ZXIgdGhhdC5cblxuICAgVGhyb3VnaG91dCB0aGlzIGZpbGUgd2UgdXNlIHRoZSBzYW1lIGNvZGUgcGF0dGVybiB0byBhY2hpZXZlIHRoaXM6IHdlXG4gICBzaGFkb3cgdGhlIHJlY3Vyc2l2ZSB0cmF2ZXJzYWwgZnVuY3Rpb24gd2l0aCBhbiBpZGVudGljYWwtYnV0LWZvci10aGUtYXBwbHlcbiAgIG5vbi1yZWN1cnNpdmUgY29weS4gKilcblxubGV0IHJlYyBhcHBlbmQgc2VxMSBzZXEyICgpID1cbiAgc2VxMSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gc2VxMiAoKVxuICB8IENvbnMgKHgsIG5leHQpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIGFwcGVuZCBuZXh0IHNlcTIpKVxubGV0IGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBMd3QuYXBwbHkgc2VxMSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gc2VxMiAoKVxuICB8IENvbnMgKHgsIG5leHQpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIGFwcGVuZCBuZXh0IHNlcTIpKVxuXG5sZXQgcmVjIG1hcCBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+fD0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCB4ID0gZiB4IGluXG4gICAgICBDb25zICh4LCBtYXAgZiBuZXh0KVxubGV0IG1hcCBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPnw9IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQgeCA9IGYgeCBpblxuICAgICAgQ29ucyAoeCwgbWFwIGYgbmV4dClcblxubGV0IHJlYyBtYXBfcyBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQrIHggPSBmIHggaW5cbiAgICAgIENvbnMgKHgsIG1hcF9zIGYgbmV4dClcbmxldCBtYXBfcyBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0KyB4ID0gZiB4IGluXG4gICAgICBDb25zICh4LCBtYXBfcyBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyX21hcCBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+IChcbiAgICAgIGxldCB4ID0gZiB4IGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbmV4dCAoKVxuICAgICAgfCBTb21lIHkgLT4gTHd0LnJldHVybiAoQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpICkpXG5sZXQgZmlsdGVyX21hcCBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPiAoXG4gICAgICBsZXQgeCA9IGYgeCBpblxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIG5leHQgKClcbiAgICAgIHwgU29tZSB5IC0+IEx3dC5yZXR1cm4gKENvbnMgKHksIGZpbHRlcl9tYXAgZiBuZXh0KSApKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfcyBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+IChcbiAgICAgIGxldCogeCA9IGYgeCBpblxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcF9zIGYgbmV4dCAoKVxuICAgICAgfCBTb21lIHkgLT4gTHd0LnJldHVybiAoQ29ucyAoeSwgZmlsdGVyX21hcF9zIGYgbmV4dCkgKSlcbmxldCBmaWx0ZXJfbWFwX3MgZiBzZXEgKCkgPVxuICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gKFxuICAgICAgbGV0KiB4ID0gZiB4IGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwX3MgZiBuZXh0ICgpXG4gICAgICB8IFNvbWUgeSAtPiBMd3QucmV0dXJuIChDb25zICh5LCBmaWx0ZXJfbWFwX3MgZiBuZXh0KSApKVxuXG5sZXQgcmVjIGZpbHRlciBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQgb2sgPSBmIHggaW5cbiAgICAgIGlmIG9rIHRoZW4gTHd0LnJldHVybiAoQ29ucyAoeCwgZmlsdGVyIGYgbmV4dCkpIGVsc2UgZmlsdGVyIGYgbmV4dCAoKVxubGV0IGZpbHRlciBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0IG9rID0gZiB4IGluXG4gICAgICBpZiBvayB0aGVuIEx3dC5yZXR1cm4gKENvbnMgKHgsIGZpbHRlciBmIG5leHQpKSBlbHNlIGZpbHRlciBmIG5leHQgKClcblxubGV0IHJlYyBmaWx0ZXJfcyBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQqIG9rID0gZiB4IGluXG4gICAgICBpZiBvayB0aGVuIEx3dC5yZXR1cm4gKENvbnMgKHgsIGZpbHRlcl9zIGYgbmV4dCkpIGVsc2UgZmlsdGVyX3MgZiBuZXh0ICgpXG5sZXQgZmlsdGVyX3MgZiBzZXEgKCkgPVxuICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCogb2sgPSBmIHggaW5cbiAgICAgIGlmIG9rIHRoZW4gTHd0LnJldHVybiAoQ29ucyAoeCwgZmlsdGVyX3MgZiBuZXh0KSkgZWxzZSBmaWx0ZXJfcyBmIG5leHQgKClcblxubGV0IHJlYyBmbGF0X21hcCBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBmbGF0X21hcF9hcHAgZiAoZiB4KSBuZXh0ICgpXG5cbigqIHRoaXMgaXMgW2FwcGVuZCBzZXEgKGZsYXRfbWFwIGYgdGFpbCldICopXG5hbmQgZmxhdF9tYXBfYXBwIGYgc2VxIHRhaWwgKCkgPVxuICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IGZsYXRfbWFwIGYgdGFpbCAoKVxuICB8IENvbnMgKHgsIG5leHQpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIGZsYXRfbWFwX2FwcCBmIG5leHQgdGFpbCkpXG5cbmxldCBmbGF0X21hcCBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgZmxhdF9tYXBfYXBwIGYgKGYgeCkgbmV4dCAoKVxuXG5sZXQgZm9sZF9sZWZ0IGYgYWNjIHNlcSA9XG4gIGxldCByZWMgYXV4IGYgYWNjIHNlcSA9XG4gICAgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBhdXggZiBhY2MgbmV4dFxuICBpblxuICBsZXQgYXV4IGYgYWNjIHNlcSA9XG4gICAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuIGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIHggaW5cbiAgICAgICAgYXV4IGYgYWNjIG5leHRcbiAgaW5cbiAgYXV4IGYgYWNjIHNlcVxuXG5sZXQgZm9sZF9sZWZ0X3MgZiBhY2Mgc2VxID1cbiAgbGV0IHJlYyBhdXggZiBhY2Mgc2VxID1cbiAgICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LnJldHVybiBhY2NcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCogYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBhdXggZiBhY2MgbmV4dFxuICBpblxuICBsZXQgYXV4IGYgYWNjIHNlcSA9XG4gICAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuIGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0KiBhY2MgPSBmIGFjYyB4IGluXG4gICAgICAgIGF1eCBmIGFjYyBuZXh0XG4gIGluXG4gIGF1eCBmIGFjYyBzZXFcblxubGV0IGl0ZXIgZiBzZXEgPVxuICBsZXQgcmVjIGF1eCBzZXEgPVxuICAgIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuX3VuaXRcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGYgeDtcbiAgICAgICAgYXV4IG5leHRcbiAgaW5cbiAgbGV0IGF1eCBzZXEgPVxuICAgIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LnJldHVybl91bml0XG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBmIHg7XG4gICAgICAgIGF1eCBuZXh0XG4gIGluXG4gIGF1eCBzZXFcblxubGV0IGl0ZXJfcyBmIHNlcSA9XG4gIGxldCByZWMgYXV4IHNlcSA9XG4gICAgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm5fdW5pdFxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0KiAoKSA9IGYgeCBpblxuICAgICAgICBhdXggbmV4dFxuICBpblxuICBsZXQgYXV4IHNlcSA9XG4gICAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuX3VuaXRcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCogKCkgPSBmIHggaW5cbiAgICAgICAgYXV4IG5leHRcbiAgaW5cbiAgYXV4IHNlcVxuXG5sZXQgaXRlcl9wIGYgc2VxID1cbiAgbGV0IHJlYyBhdXggYWNjIHNlcSA9XG4gICAgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5qb2luIGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IHAgPSBmIHggaW5cbiAgICAgICAgYXV4IChwOjphY2MpIG5leHRcbiAgaW5cbiAgbGV0IGF1eCBhY2Mgc2VxID1cbiAgICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5qb2luIGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IHAgPSBmIHggaW5cbiAgICAgICAgYXV4IChwOjphY2MpIG5leHRcbiAgaW5cbiAgYXV4IFtdIHNlcVxuXG5sZXQgaXRlcl9uID8obWF4X2NvbmN1cnJlbmN5ID0gMSkgZiBzZXEgPVxuICBiZWdpblxuICAgIGlmIG1heF9jb25jdXJyZW5jeSA8PSAwIHRoZW5cbiAgICAgIGxldCBtZXNzYWdlID1cbiAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICBcIkx3dF9zZXEuaXRlcl9uOiBtYXhfY29uY3VycmVuY3kgbXVzdCBiZSA+IDAsICVkIGdpdmVuXCJcbiAgICAgICAgICBtYXhfY29uY3VycmVuY3lcbiAgICAgIGluXG4gICAgICBpbnZhbGlkX2FyZyBtZXNzYWdlXG4gIGVuZDtcbiAgbGV0IHJlYyBsb29wIHJ1bm5pbmcgYXZhaWxhYmxlIHNlcSA9XG4gICAgYmVnaW5cbiAgICAgIGlmIGF2YWlsYWJsZSA+IDAgdGhlbiAoXG4gICAgICAgIEx3dC5yZXR1cm4gKHJ1bm5pbmcsIGF2YWlsYWJsZSlcbiAgICAgIClcbiAgICAgIGVsc2UgKFxuICAgICAgICBMd3QubmNob29zZV9zcGxpdCBydW5uaW5nID4+PSBmdW4gKGNvbXBsZXRlLCBydW5uaW5nKSAtPlxuICAgICAgICBMd3QucmV0dXJuIChydW5uaW5nLCBhdmFpbGFibGUgKyBMaXN0Lmxlbmd0aCBjb21wbGV0ZSlcbiAgICAgIClcbiAgICBlbmQgPj49IGZ1biAocnVubmluZywgYXZhaWxhYmxlKSAtPlxuICAgIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPlxuICAgICAgTHd0LmpvaW4gcnVubmluZ1xuICAgIHwgQ29ucyAoZWx0LCBzZXEpIC0+XG4gICAgICBsb29wIChmIGVsdCA6OiBydW5uaW5nKSAocHJlZCBhdmFpbGFibGUpIHNlcVxuICBpblxuICAoKiBiZWNhdXNlIHRoZSByZWN1cnNpb24gaXMgbW9yZSBjb21wbGljYXRlZCBoZXJlLCB3ZSBhcHBseSB0aGUgc2VxIGRpcmVjdGx5IGF0XG4gICAgIHRoZSBjYWxsLXNpdGUgaW5zdGVhZCAqKVxuICBsb29wIFtdIG1heF9jb25jdXJyZW5jeSAoZnVuICgpIC0+IEx3dC5hcHBseSBzZXEgKCkpXG5cbmxldCByZWMgdW5mb2xkIGYgdSAoKSA9XG4gIG1hdGNoIGYgdSB3aXRoXG4gIHwgTm9uZSAtPiByZXR1cm5fbmlsXG4gIHwgU29tZSAoeCwgdScpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIHVuZm9sZCBmIHUnKSlcbiAgfCBleGNlcHRpb24gZXhjIHdoZW4gTHd0LkV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4YyAtPiBMd3QuZmFpbCBleGNcblxubGV0IHJlYyB1bmZvbGRfbHd0IGYgdSAoKSA9XG4gIGxldCogeCA9IGYgdSBpblxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHJldHVybl9uaWxcbiAgfCBTb21lICh4LCB1JykgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgdW5mb2xkX2x3dCBmIHUnKSlcbmxldCB1bmZvbGRfbHd0IGYgdSAoKSA9XG4gIGxldCogeCA9IEx3dC5hcHBseSBmIHUgaW5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiByZXR1cm5fbmlsXG4gIHwgU29tZSAoeCwgdScpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIHVuZm9sZF9sd3QgZiB1JykpXG5cbmxldCByZWMgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZW1wdHlcbiAgfCBoIDo6IHQgLT4gY29ucyBoIChvZl9saXN0IHQpXG5cbmxldCByZWMgdG9fbGlzdCBzZXEgPVxuICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IEx3dC5yZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBsZXQrIGwgPSB0b19saXN0IG5leHQgaW5cbiAgICB4IDo6IGxcbmxldCB0b19saXN0IHNlcSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IEx3dC5yZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBsZXQrIGwgPSB0b19saXN0IG5leHQgaW5cbiAgICB4IDo6IGxcblxubGV0IHJlYyBvZl9zZXEgc2VxICgpID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBTZXEuTmlsIC0+IHJldHVybl9uaWxcbiAgfCBTZXEuQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBMd3QucmV0dXJuIChDb25zICh4LCAob2Zfc2VxIG5leHQpKSlcbiAgfCBleGNlcHRpb24gZXhuIHdoZW4gTHd0LkV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBMd3QuZmFpbCBleG5cblxubGV0IHJlYyBvZl9zZXFfbHd0IChzZXE6ICdhIEx3dC50IFNlcS50KTogJ2EgdCA9IGZ1biAoKSAtPlxuICAgIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBTZXEuTmlsIC0+IHJldHVybl9uaWxcbiAgICB8IFNlcS5Db25zICh4LCBuZXh0KSAtPlxuICAgICAgIGxldCsgeCA9IHggaW5cbiAgICAgICBsZXQgbmV4dCA9IG9mX3NlcV9sd3QgbmV4dCBpblxuICAgICAgIENvbnMgKHgsIG5leHQpXG5sZXQgb2Zfc2VxX2x3dCAoc2VxOiAnYSBMd3QudCBTZXEudCk6ICdhIHQgPSBmdW4gKCkgLT5cbiAgICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgU2VxLk5pbCAtPiByZXR1cm5fbmlsXG4gICAgfCBTZXEuQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICBsZXQrIHggPSB4IGluXG4gICAgICAgbGV0IG5leHQgPSBvZl9zZXFfbHd0IG5leHQgaW5cbiAgICAgICBDb25zICh4LCBuZXh0KVxuICAgIHwgZXhjZXB0aW9uIGV4YyB3aGVuIEx3dC5FeGNlcHRpb25fZmlsdGVyLnJ1biBleGMgLT4gTHd0LmZhaWwgZXhjXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxub3BlbiBMd3QuSW5maXhcblxuZXhjZXB0aW9uIENsb3NlZFxuZXhjZXB0aW9uIEZ1bGxcbmV4Y2VwdGlvbiBFbXB0eVxuXG4oKiBBIG5vZGUgaW4gYSBxdWV1ZSBvZiBwZW5kaW5nIGRhdGEuICopXG50eXBlICdhIG5vZGUgPSB7XG4gIG11dGFibGUgbmV4dCA6ICdhIG5vZGU7XG4gICgqIE5leHQgbm9kZSBpbiB0aGUgcXVldWUuIEZvciB0aGUgbGFzdCBub2RlIGl0IHBvaW50cyB0byBpdHNlbGYuICopXG4gIG11dGFibGUgZGF0YSA6ICdhIG9wdGlvbjtcbiAgKCogRGF0YSBvZiB0aGlzIG5vZGUuIEZvciB0aGUgbGFzdCBub2RlIGl0IGlzIGFsd2F5cyBbTm9uZV0uICopXG59XG5cbigqIE5vdGU6IGEgcXVldWUgZm9yIGFuIGV4aGF1c3RlZCBzdHJlYW0gaXMgcmVwcmVzZW50ZWQgYnkgYSBub2RlXG4gICBjb250YWluaW5nIFtOb25lXSBmb2xsb3dlZCBieSBhIG5vZGUgd2l0aCBpdHNlbGYgYXMgbmV4dCBhbmQgW05vbmVdXG4gICBhcyBkYXRhLiAqKVxuXG5sZXQgbmV3X25vZGUgKCkgPVxuICBsZXQgcmVjIG5vZGUgPSB7IG5leHQgPSBub2RlOyBkYXRhID0gTm9uZSB9IGluXG4gIG5vZGVcblxuKCogVHlwZSBvZiBhIHN0cmVhbSBzb3VyY2UgdXNpbmcgYSBmdW5jdGlvbiB0byBjcmVhdGUgbmV3IGVsZW1lbnRzLiAqKVxudHlwZSAnYSBmcm9tID0ge1xuICBmcm9tX2NyZWF0ZSA6IHVuaXQgLT4gJ2Egb3B0aW9uIEx3dC50O1xuICAoKiBGdW5jdGlvbiB1c2VkIHRvIGNyZWF0ZSBuZXcgZWxlbWVudHMuICopXG4gIG11dGFibGUgZnJvbV90aHJlYWQgOiB1bml0IEx3dC50O1xuICAoKiBUaHJlYWQgd2hpY2g6XG5cbiAgICAgLSB3YWl0IGZvciB0aGUgdGhyZWFkIHJldHVybmVkIGJ5IHRoZSBsYXN0IGNhbGwgdG8gW2Zyb21fbmV4dF0sXG4gICAgIC0gYWRkIHRoZSBuZXh0IGVsZW1lbnQgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWUuXG5cbiAgICAgSWYgaXQgaXMgYSBzbGVlcGluZyB0aHJlYWQsIHRoZW4gaXQgbXVzdCBiZSB1c2VkIGluc3RlYWQgb2YgY3JlYXRpbmcgYVxuICAgICBuZXcgb25lIHdpdGggW2Zyb21fY3JlYXRlXS4gKilcbn1cblxuKCogVHlwZSBvZiBhIHN0cmVhbSBzb3VyY2UgZm9yIHB1c2ggc3RyZWFtcy4gKilcbnR5cGUgcHVzaCA9IHtcbiAgbXV0YWJsZSBwdXNoX3NpZ25hbCA6IHVuaXQgTHd0LnQ7XG4gICgqIFRocmVhZCBzaWduYWxlZCB3aGVuIGEgbmV3IGVsZW1lbnQgaXMgYWRkZWQgdG8gdGhlIHN0cmVhbS4gKilcbiAgbXV0YWJsZSBwdXNoX3dhaXRpbmcgOiBib29sO1xuICAoKiBJcyBhIHRocmVhZCB3YWl0aW5nIG9uIFtwdXNoX3NpZ25hbF0gPyAqKVxuICBtdXRhYmxlIHB1c2hfZXh0ZXJuYWwgOiBPYmoudCBbQG9jYW1sLndhcm5pbmcgXCItNjlcIl07XG4gICgqIFJlZmVyZW5jZSB0byBhbiBleHRlcm5hbCBzb3VyY2UuICopXG59XG5cbigqIFR5cGUgb2YgYSBzdHJlYW0gc291cmNlIGZvciBib3VuZGVkLXB1c2ggc3RyZWFtcy4gKilcbnR5cGUgJ2EgcHVzaF9ib3VuZGVkID0ge1xuICBtdXRhYmxlIHB1c2hiX3NpZ25hbCA6IHVuaXQgTHd0LnQ7XG4gICgqIFRocmVhZCBzaWduYWxlZCB3aGVuIGEgbmV3IGVsZW1lbnQgaXMgYWRkZWQgdG8gdGhlIHN0cmVhbS4gKilcbiAgbXV0YWJsZSBwdXNoYl93YWl0aW5nIDogYm9vbDtcbiAgKCogSXMgYSB0aHJlYWQgd2FpdGluZyBvbiBbcHVzaGJfc2lnbmFsXSA/ICopXG4gIG11dGFibGUgcHVzaGJfc2l6ZSA6IGludDtcbiAgKCogU2l6ZSBvZiB0aGUgcXVldWUuICopXG4gIG11dGFibGUgcHVzaGJfY291bnQgOiBpbnQ7XG4gICgqIEN1cnJlbnQgbGVuZ3RoIG9mIHRoZSBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwdXNoYl9wZW5kaW5nIDogJ2Egb3B0aW9uO1xuICAoKiBUaGUgbmV4dCBlbGVtZW50IHRvIHB1c2ggaWYgYSB0aHJlYWQgYmxvY2tlZCBvbiBwdXNoLiBXZSBzdG9yZSBpdFxuICAgICBoZXJlIHRvIGJlIHN1cmUgaXQgd2lsbCBiZSB0aGUgZmlyc3QgZWxlbWVudCB0byBiZSBhZGRlZCB3aGVuXG4gICAgIHNwYWNlIGJlY29tZXMgYXZhaWxhYmxlLiAqKVxuICBtdXRhYmxlIHB1c2hiX3B1c2hfd2FpdGVyIDogdW5pdCBMd3QudDtcbiAgbXV0YWJsZSBwdXNoYl9wdXNoX3dha2VuZXIgOiB1bml0IEx3dC51O1xuICAoKiBUaHJlYWQgYmxvY2tlZCBvbiBwdXNoLiAqKVxuICBtdXRhYmxlIHB1c2hiX2V4dGVybmFsIDogT2JqLnQgW0BvY2FtbC53YXJuaW5nIFwiLTY5XCJdO1xuICAoKiBSZWZlcmVuY2UgdG8gYW4gZXh0ZXJuYWwgc291cmNlLiAqKVxufVxuXG4oKiBTb3VyY2Ugb2YgYSBzdHJlYW0uICopXG50eXBlICdhIHNvdXJjZSA9XG4gIHwgRnJvbSBvZiAnYSBmcm9tXG4gIHwgRnJvbV9kaXJlY3Qgb2YgKHVuaXQgLT4gJ2Egb3B0aW9uKVxuICB8IFB1c2ggb2YgcHVzaFxuICB8IFB1c2hfYm91bmRlZCBvZiAnYSBwdXNoX2JvdW5kZWRcblxudHlwZSAnYSB0ID0ge1xuICBzb3VyY2UgOiAnYSBzb3VyY2U7XG4gICgqIFRoZSBzb3VyY2Ugb2YgdGhlIHN0cmVhbS4gKilcbiAgY2xvc2UgOiB1bml0IEx3dC51O1xuICAoKiBBIHdha2VuZXIgZm9yIGEgdGhyZWFkIHRoYXQgc2xlZXBzIHVudGlsIHRoZSBzdHJlYW0gaXMgY2xvc2VkLiAqKVxuICBjbG9zZWQgOiB1bml0IEx3dC50O1xuICAoKiBBIHdhaXRlciBmb3IgYSB0aHJlYWQgdGhhdCBzbGVlcHMgdW50aWwgdGhlIHN0cmVhbSBpcyBjbG9zZWQuICopXG4gIG11dGFibGUgbm9kZSA6ICdhIG5vZGU7XG4gICgqIFBvaW50ZXIgdG8gZmlyc3QgcGVuZGluZyBlbGVtZW50LCBvciB0byBbbGFzdF0gaWYgdGhlcmUgaXMgbm9cbiAgICAgcGVuZGluZyBlbGVtZW50LiAqKVxuICBsYXN0IDogJ2Egbm9kZSByZWY7XG4gICgqIE5vZGUgbWFya2luZyB0aGUgZW5kIG9mIHRoZSBxdWV1ZSBvZiBwZW5kaW5nIGVsZW1lbnRzLiAqKVxufVxuXG5jbGFzcyB0eXBlIFsnYV0gYm91bmRlZF9wdXNoID0gb2JqZWN0XG4gIG1ldGhvZCBzaXplIDogaW50XG4gIG1ldGhvZCByZXNpemUgOiBpbnQgLT4gdW5pdFxuICBtZXRob2QgcHVzaCA6ICdhIC0+IHVuaXQgTHd0LnRcbiAgbWV0aG9kIGNsb3NlIDogdW5pdFxuICBtZXRob2QgY291bnQgOiBpbnRcbiAgbWV0aG9kIGJsb2NrZWQgOiBib29sXG4gIG1ldGhvZCBjbG9zZWQgOiBib29sXG4gIG1ldGhvZCBzZXRfcmVmZXJlbmNlIDogJ2EuICdhIC0+IHVuaXRcbmVuZFxuXG4oKiBUaGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGNsb25lcyBpcyB0aGUgcG9pbnRlciB0byB0aGUgZmlyc3RcbiAgIHBlbmRpbmcgZWxlbWVudC4gKilcbmxldCBjbG9uZSBzID1cbiAgKG1hdGNoIHMuc291cmNlIHdpdGhcbiAgIHwgUHVzaF9ib3VuZGVkIF8gLT4gaW52YWxpZF9hcmcgXCJMd3Rfc3RyZWFtLmNsb25lXCJcbiAgIHwgRnJvbSBfIHwgRnJvbV9kaXJlY3QgXyB8IFB1c2ggXyAtPiAoKSk7XG4gIHtcbiAgICBzb3VyY2UgPSBzLnNvdXJjZTtcbiAgICBjbG9zZSA9IHMuY2xvc2U7XG4gICAgY2xvc2VkID0gcy5jbG9zZWQ7XG4gICAgbm9kZSA9IHMubm9kZTtcbiAgICBsYXN0ID0gcy5sYXN0O1xuICB9XG5cbmxldCBmcm9tX3NvdXJjZSBzb3VyY2UgPVxuICBsZXQgbm9kZSA9IG5ld19ub2RlICgpIGluXG4gIGxldCBjbG9zZWQsIGNsb3NlID0gTHd0LndhaXQgKCkgaW5cbiAgeyBzb3VyY2UgOyBjbG9zZSA7IGNsb3NlZCA7IG5vZGUgOyBsYXN0ID0gcmVmIG5vZGUgfVxuXG5sZXQgZnJvbSBmID1cbiAgZnJvbV9zb3VyY2UgKEZyb20geyBmcm9tX2NyZWF0ZSA9IGY7IGZyb21fdGhyZWFkID0gTHd0LnJldHVybl91bml0IH0pXG5cbmxldCBmcm9tX2RpcmVjdCBmID1cbiAgZnJvbV9zb3VyY2UgKEZyb21fZGlyZWN0IGYpXG5cbmxldCBjbG9zZWQgcyA9IHMuY2xvc2VkXG5cbmxldCBpc19jbG9zZWQgcyA9XG4gIG5vdCAoTHd0LmlzX3NsZWVwaW5nIChjbG9zZWQgcykpXG5cbmxldCBlbnF1ZXVlJyBlIGxhc3QgPVxuICBsZXQgbm9kZSA9ICFsYXN0XG4gIGFuZCBuZXdfbGFzdCA9IG5ld19ub2RlICgpIGluXG4gIG5vZGUuZGF0YSA8LSBlO1xuICBub2RlLm5leHQgPC0gbmV3X2xhc3Q7XG4gIGxhc3QgOj0gbmV3X2xhc3RcblxubGV0IGVucXVldWUgZSBzID1cbiAgZW5xdWV1ZScgZSBzLmxhc3RcblxubGV0IGNyZWF0ZV93aXRoX3JlZmVyZW5jZSAoKSA9XG4gICgqIENyZWF0ZSB0aGUgc291cmNlIGZvciBub3RpZmljYXRpb25zIG9mIG5ldyBlbGVtZW50cy4gKilcbiAgbGV0IHNvdXJjZSwgcHVzaF9zaWduYWxfcmVzb2x2ZXIgPVxuICAgIGxldCBwdXNoX3NpZ25hbCwgcHVzaF9zaWduYWxfcmVzb2x2ZXIgPSBMd3Qud2FpdCAoKSBpblxuICAgICh7IHB1c2hfc2lnbmFsO1xuICAgICAgIHB1c2hfd2FpdGluZyA9IGZhbHNlO1xuICAgICAgIHB1c2hfZXh0ZXJuYWwgPSBPYmoucmVwciAoKSB9LFxuICAgICByZWYgcHVzaF9zaWduYWxfcmVzb2x2ZXIpXG4gIGluXG4gIGxldCB0ID0gZnJvbV9zb3VyY2UgKFB1c2ggc291cmNlKSBpblxuICAoKiBbcHVzaF0gc2hvdWxkIG5vdCBjbG9zZSBvdmVyIFt0XSBzbyB0aGF0IGl0IGNhbiBiZSBnYXJiYWdlIGNvbGxlY3RlZCBldmVuXG4gICAqIHRoZXJlIGFyZSBzdGlsbCByZWZlcmVuY2VzIHRvIFtwdXNoXS4gVW5wYWNrIGFsbCB0aGUgY29tcG9uZW50cyBvZiBbdF1cbiAgICogdGhhdCBbcHVzaF0gbmVlZHMgYW5kIHJlZmVyZW5jZSB0aG9zZSBpZGVudGlmaWVycyBpbnN0ZWFkLiAqKVxuICBsZXQgY2xvc2UgPSB0LmNsb3NlIGFuZCBjbG9zZWQgPSB0LmNsb3NlZCBhbmQgbGFzdCA9IHQubGFzdCBpblxuICAoKiBUaGUgcHVzaCBmdW5jdGlvbi4gSXQgZG9lcyBub3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgc3RyZWFtLiAqKVxuICBsZXQgcHVzaCB4ID1cbiAgICBpZiBub3QgKEx3dC5pc19zbGVlcGluZyBjbG9zZWQpIHRoZW4gcmFpc2UgQ2xvc2VkO1xuICAgICgqIFB1c2ggdGhlIGVsZW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgcXVldWUuICopXG4gICAgZW5xdWV1ZScgeCBsYXN0O1xuICAgICgqIFNlbmQgYSBzaWduYWwgaWYgYXQgbGVhc3Qgb25lIHRocmVhZCBpcyB3YWl0aW5nIGZvciBhIG5ld1xuICAgICAgIGVsZW1lbnQuICopXG4gICAgaWYgc291cmNlLnB1c2hfd2FpdGluZyB0aGVuIGJlZ2luXG4gICAgICBzb3VyY2UucHVzaF93YWl0aW5nIDwtIGZhbHNlO1xuICAgICAgKCogVXBkYXRlIHRocmVhZHMuICopXG4gICAgICBsZXQgb2xkX3B1c2hfc2lnbmFsX3Jlc29sdmVyID0gIXB1c2hfc2lnbmFsX3Jlc29sdmVyIGluXG4gICAgICBsZXQgbmV3X3dhaXRlciwgbmV3X3B1c2hfc2lnbmFsX3Jlc29sdmVyID0gTHd0LndhaXQgKCkgaW5cbiAgICAgIHNvdXJjZS5wdXNoX3NpZ25hbCA8LSBuZXdfd2FpdGVyO1xuICAgICAgcHVzaF9zaWduYWxfcmVzb2x2ZXIgOj0gbmV3X3B1c2hfc2lnbmFsX3Jlc29sdmVyO1xuICAgICAgKCogU2lnbmFsIHRoYXQgYSBuZXcgdmFsdWUgaGFzIGJlZW4gcmVjZWl2ZWQuICopXG4gICAgICBMd3Qud2FrZXVwX2xhdGVyIG9sZF9wdXNoX3NpZ25hbF9yZXNvbHZlciAoKVxuICAgIGVuZDtcbiAgICAoKiBEbyB0aGlzIGF0IHRoZSBlbmQgaW4gY2FzZSBvbmUgb2YgdGhlIGZ1bmN0aW9uIHJhaXNlIGFuXG4gICAgICAgZXhjZXB0aW9uLiAqKVxuICAgIGlmIHggPSBOb25lIHRoZW4gTHd0Lndha2V1cCBjbG9zZSAoKVxuICBpblxuICAodCwgcHVzaCwgZnVuIHggLT4gc291cmNlLnB1c2hfZXh0ZXJuYWwgPC0gT2JqLnJlcHIgeClcblxubGV0IHJldHVybiBhID1cbiAgbGV0IHN0cmVhbSwgcHVzaCwgXyA9IGNyZWF0ZV93aXRoX3JlZmVyZW5jZSAoKSBpblxuICBwdXNoIChTb21lIGEpO1xuICBwdXNoIE5vbmU7XG4gIHN0cmVhbVxuXG5sZXQgcmV0dXJuX2x3dCBhID1cbiAgbGV0IHNvdXJjZSwgcHVzaCwgXyA9IGNyZWF0ZV93aXRoX3JlZmVyZW5jZSAoKSBpblxuICBMd3QuZG9udF93YWl0XG4gICAgKGZ1biAoKSAtPlxuICAgICAgTHd0LmJpbmQgYSAoZnVuIHggLT5cbiAgICAgICAgcHVzaCAoU29tZSB4KTtcbiAgICAgICAgcHVzaCBOb25lO1xuICAgICAgICBMd3QucmV0dXJuX3VuaXQpKVxuICAgIChmdW4gX2V4YyAtPiBwdXNoIE5vbmUpO1xuICBzb3VyY2VcblxubGV0IG9mX3NlcSBzID1cbiAgbGV0IHMgPSByZWYgcyBpblxuICBsZXQgZ2V0ICgpID1cbiAgICBtYXRjaCAhcyAoKSB3aXRoXG4gICAgfCBTZXEuTmlsIC0+IE5vbmVcbiAgICB8IFNlcS5Db25zIChlbHQsIHMnKSAtPiBzIDo9IHMnOyBTb21lIGVsdFxuICBpblxuICBmcm9tX2RpcmVjdCBnZXRcblxubGV0IG9mX2x3dF9zZXEgcyA9XG4gIGxldCBzID0gcmVmIHMgaW5cbiAgbGV0IGdldCAoKSA9XG4gICAgIXMgKCkgPnw9IGZ1bmN0aW9uXG4gICAgfCBMd3Rfc2VxLk5pbCAtPiBOb25lXG4gICAgfCBMd3Rfc2VxLkNvbnMgKGVsdCwgcycpIC0+IHMgOj0gcyc7IFNvbWUgZWx0XG4gIGluXG4gIGZyb20gZ2V0XG5cblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBzb3VyY2UsIHB1c2gsIF8gPSBjcmVhdGVfd2l0aF9yZWZlcmVuY2UgKCkgaW5cbiAgKHNvdXJjZSwgcHVzaClcblxubGV0IG9mX2l0ZXIgaXRlciBpID1cbiAgbGV0IHN0cmVhbSwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIChmdW4geCAtPiBwdXNoIChTb21lIHgpKSBpO1xuICBwdXNoIE5vbmU7XG4gIHN0cmVhbVxuXG5sZXQgb2ZfbGlzdCBsID1cbiAgb2ZfaXRlciBMaXN0Lml0ZXIgbFxuXG5sZXQgb2ZfYXJyYXkgYSA9XG4gIG9mX2l0ZXIgQXJyYXkuaXRlciBhXG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIG9mX2l0ZXIgU3RyaW5nLml0ZXIgc1xuXG4oKiBBZGQgdGhlIHBlbmRpbmcgZWxlbWVudCB0byB0aGUgcXVldWUgYW5kIG5vdGlmeSB0aGUgYmxvY2tlZCBwdXNoZWQuXG5cbiAgIFByZWNvbmRpdGlvbjogaW5mby5wdXNoYl9wZW5kaW5nID0gU29tZSBfXG5cbiAgIFRoaXMgZG9lcyBub3QgbW9kaWZ5IGluZm8ucHVzaGJfY291bnQuICopXG5sZXQgbm90aWZ5X3B1c2hlciBpbmZvIGxhc3QgPVxuICAoKiBQdXNoIHRoZSBlbGVtZW50IGF0IHRoZSBlbmQgb2YgdGhlIHF1ZXVlLiAqKVxuICBlbnF1ZXVlJyBpbmZvLnB1c2hiX3BlbmRpbmcgbGFzdDtcbiAgKCogQ2xlYXIgcGVuZGluZyBlbGVtZW50LiAqKVxuICBpbmZvLnB1c2hiX3BlbmRpbmcgPC0gTm9uZTtcbiAgKCogV2FrZXVwIHRoZSBwdXNoZXIuICopXG4gIGxldCBvbGRfd2FrZW5lciA9IGluZm8ucHVzaGJfcHVzaF93YWtlbmVyIGluXG4gIGxldCB3YWl0ZXIsIHdha2VuZXIgPSBMd3QudGFzayAoKSBpblxuICBpbmZvLnB1c2hiX3B1c2hfd2FpdGVyIDwtIHdhaXRlcjtcbiAgaW5mby5wdXNoYl9wdXNoX3dha2VuZXIgPC0gd2FrZW5lcjtcbiAgTHd0Lndha2V1cF9sYXRlciBvbGRfd2FrZW5lciAoKVxuXG5jbGFzcyBbJ2FdIGJvdW5kZWRfcHVzaF9pbXBsIChpbmZvIDogJ2EgcHVzaF9ib3VuZGVkKSB3YWtlbmVyX2NlbGwgbGFzdCBjbG9zZSA9IG9iamVjdFxuICB2YWwgbXV0YWJsZSBjbG9zZWQgPSBmYWxzZVxuXG4gIG1ldGhvZCBzaXplID1cbiAgICBpbmZvLnB1c2hiX3NpemVcblxuICBtZXRob2QgcmVzaXplIHNpemUgPVxuICAgIGlmIHNpemUgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMd3Rfc3RyZWFtLmJvdW5kZWRfcHVzaCNyZXNpemVcIjtcbiAgICBpbmZvLnB1c2hiX3NpemUgPC0gc2l6ZTtcbiAgICBpZiBpbmZvLnB1c2hiX2NvdW50IDwgaW5mby5wdXNoYl9zaXplICYmIGluZm8ucHVzaGJfcGVuZGluZyA8PiBOb25lIHRoZW4gYmVnaW5cbiAgICAgIGluZm8ucHVzaGJfY291bnQgPC0gaW5mby5wdXNoYl9jb3VudCArIDE7XG4gICAgICBub3RpZnlfcHVzaGVyIGluZm8gbGFzdFxuICAgIGVuZFxuXG4gIG1ldGhvZCBwdXNoIHggPVxuICAgIGlmIGNsb3NlZCB0aGVuXG4gICAgICBMd3QuZmFpbCBDbG9zZWRcbiAgICBlbHNlIGlmIGluZm8ucHVzaGJfcGVuZGluZyA8PiBOb25lIHRoZW5cbiAgICAgIEx3dC5mYWlsIEZ1bGxcbiAgICBlbHNlIGlmIGluZm8ucHVzaGJfY291bnQgPj0gaW5mby5wdXNoYl9zaXplIHRoZW4gYmVnaW5cbiAgICAgIGluZm8ucHVzaGJfcGVuZGluZyA8LSBTb21lIHg7XG4gICAgICBMd3QuY2F0Y2hcbiAgICAgICAgKGZ1biAoKSAtPiBpbmZvLnB1c2hiX3B1c2hfd2FpdGVyKVxuICAgICAgICAoZnVuIGV4biAtPlxuICAgICAgICAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgICAgICB8IEx3dC5DYW5jZWxlZCAtPlxuICAgICAgICAgICAgIGluZm8ucHVzaGJfcGVuZGluZyA8LSBOb25lO1xuICAgICAgICAgICAgIGxldCB3YWl0ZXIsIHdha2VuZXIgPSBMd3QudGFzayAoKSBpblxuICAgICAgICAgICAgIGluZm8ucHVzaGJfcHVzaF93YWl0ZXIgPC0gd2FpdGVyO1xuICAgICAgICAgICAgIGluZm8ucHVzaGJfcHVzaF93YWtlbmVyIDwtIHdha2VuZXI7XG4gICAgICAgICAgICAgTHd0LmZhaWwgZXhuXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIEx3dC5mYWlsIGV4bilcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgKCogUHVzaCB0aGUgZWxlbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBxdWV1ZS4gKilcbiAgICAgIGVucXVldWUnIChTb21lIHgpIGxhc3Q7XG4gICAgICBpbmZvLnB1c2hiX2NvdW50IDwtIGluZm8ucHVzaGJfY291bnQgKyAxO1xuICAgICAgKCogU2VuZCBhIHNpZ25hbCBpZiBhdCBsZWFzdCBvbmUgdGhyZWFkIGlzIHdhaXRpbmcgZm9yIGEgbmV3XG4gICAgICAgICBlbGVtZW50LiAqKVxuICAgICAgaWYgaW5mby5wdXNoYl93YWl0aW5nIHRoZW4gYmVnaW5cbiAgICAgICAgaW5mby5wdXNoYl93YWl0aW5nIDwtIGZhbHNlO1xuICAgICAgICAoKiBVcGRhdGUgdGhyZWFkcy4gKilcbiAgICAgICAgbGV0IG9sZF93YWtlbmVyID0gIXdha2VuZXJfY2VsbCBpblxuICAgICAgICBsZXQgbmV3X3dhaXRlciwgbmV3X3dha2VuZXIgPSBMd3Qud2FpdCAoKSBpblxuICAgICAgICBpbmZvLnB1c2hiX3NpZ25hbCA8LSBuZXdfd2FpdGVyO1xuICAgICAgICB3YWtlbmVyX2NlbGwgOj0gbmV3X3dha2VuZXI7XG4gICAgICAgICgqIFNpZ25hbCB0aGF0IGEgbmV3IHZhbHVlIGhhcyBiZWVuIHJlY2VpdmVkLiAqKVxuICAgICAgICBMd3Qud2FrZXVwX2xhdGVyIG9sZF93YWtlbmVyICgpXG4gICAgICBlbmQ7XG4gICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICBlbmRcblxuICBtZXRob2QgY2xvc2UgPVxuICAgIGlmIG5vdCBjbG9zZWQgdGhlbiBiZWdpblxuICAgICAgY2xvc2VkIDwtIHRydWU7XG4gICAgICBsZXQgbm9kZSA9ICFsYXN0IGFuZCBuZXdfbGFzdCA9IG5ld19ub2RlICgpIGluXG4gICAgICBub2RlLmRhdGEgPC0gTm9uZTtcbiAgICAgIG5vZGUubmV4dCA8LSBuZXdfbGFzdDtcbiAgICAgIGxhc3QgOj0gbmV3X2xhc3Q7XG4gICAgICBpZiBpbmZvLnB1c2hiX3BlbmRpbmcgPD4gTm9uZSB0aGVuIGJlZ2luXG4gICAgICAgIGluZm8ucHVzaGJfcGVuZGluZyA8LSBOb25lO1xuICAgICAgICBMd3Qud2FrZXVwX2xhdGVyX2V4biBpbmZvLnB1c2hiX3B1c2hfd2FrZW5lciBDbG9zZWRcbiAgICAgIGVuZDtcbiAgICAgICgqIFNlbmQgYSBzaWduYWwgaWYgYXQgbGVhc3Qgb25lIHRocmVhZCBpcyB3YWl0aW5nIGZvciBhIG5ld1xuICAgICAgICAgZWxlbWVudC4gKilcbiAgICAgIGlmIGluZm8ucHVzaGJfd2FpdGluZyB0aGVuIGJlZ2luXG4gICAgICAgIGluZm8ucHVzaGJfd2FpdGluZyA8LSBmYWxzZTtcbiAgICAgICAgbGV0IG9sZF93YWtlbmVyID0gIXdha2VuZXJfY2VsbCBpblxuICAgICAgICAoKiBTaWduYWwgdGhhdCBhIG5ldyB2YWx1ZSBoYXMgYmVlbiByZWNlaXZlZC4gKilcbiAgICAgICAgTHd0Lndha2V1cF9sYXRlciBvbGRfd2FrZW5lciAoKVxuICAgICAgZW5kO1xuICAgICAgTHd0Lndha2V1cCBjbG9zZSAoKTtcbiAgICBlbmRcblxuICBtZXRob2QgY291bnQgPVxuICAgIGluZm8ucHVzaGJfY291bnRcblxuICBtZXRob2QgYmxvY2tlZCA9XG4gICAgaW5mby5wdXNoYl9wZW5kaW5nIDw+IE5vbmVcblxuICBtZXRob2QgY2xvc2VkID1cbiAgICBjbG9zZWRcblxuICBtZXRob2Qgc2V0X3JlZmVyZW5jZSA6ICdhLiAnYSAtPiB1bml0ID1cbiAgICBmdW4geCAtPiBpbmZvLnB1c2hiX2V4dGVybmFsIDwtIE9iai5yZXByIHhcbmVuZFxuXG5sZXQgY3JlYXRlX2JvdW5kZWQgc2l6ZSA9XG4gIGlmIHNpemUgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMd3Rfc3RyZWFtLmNyZWF0ZV9ib3VuZGVkXCI7XG4gICgqIENyZWF0ZSB0aGUgc291cmNlIGZvciBub3RpZmljYXRpb25zIG9mIG5ldyBlbGVtZW50cy4gKilcbiAgbGV0IGluZm8sIHdha2VuZXJfY2VsbCA9XG4gICAgbGV0IHdhaXRlciwgd2FrZW5lciA9IEx3dC53YWl0ICgpIGluXG4gICAgbGV0IHB1c2hfd2FpdGVyLCBwdXNoX3dha2VuZXIgPSBMd3QudGFzayAoKSBpblxuICAgICh7IHB1c2hiX3NpZ25hbCA9IHdhaXRlcjtcbiAgICAgICBwdXNoYl93YWl0aW5nID0gZmFsc2U7XG4gICAgICAgcHVzaGJfc2l6ZSA9IHNpemU7XG4gICAgICAgcHVzaGJfY291bnQgPSAwO1xuICAgICAgIHB1c2hiX3BlbmRpbmcgPSBOb25lO1xuICAgICAgIHB1c2hiX3B1c2hfd2FpdGVyID0gcHVzaF93YWl0ZXI7XG4gICAgICAgcHVzaGJfcHVzaF93YWtlbmVyID0gcHVzaF93YWtlbmVyO1xuICAgICAgIHB1c2hiX2V4dGVybmFsID0gT2JqLnJlcHIgKCkgfSxcbiAgICAgcmVmIHdha2VuZXIpXG4gIGluXG4gIGxldCB0ID0gZnJvbV9zb3VyY2UgKFB1c2hfYm91bmRlZCBpbmZvKSBpblxuICAodCwgbmV3IGJvdW5kZWRfcHVzaF9pbXBsIGluZm8gd2FrZW5lcl9jZWxsIHQubGFzdCB0LmNsb3NlKVxuXG4oKiBXYWl0IGZvciBhIG5ldyBlbGVtZW50IHRvIGJlIGFkZGVkIHRvIHRoZSBxdWV1ZSBvZiBwZW5kaW5nIGVsZW1lbnRcbiAgIG9mIHRoZSBzdHJlYW0uICopXG5sZXQgZmVlZCBzID1cbiAgbWF0Y2ggcy5zb3VyY2Ugd2l0aFxuICB8IEZyb20gZnJvbSAtPlxuICAgICgqIFRoZXJlIGlzIGFscmVhZHkgYSB0aHJlYWQgc3RhcnRlZCB0byBjcmVhdGUgYSBuZXcgZWxlbWVudCxcbiAgICAgICB3YWl0IGZvciB0aGlzIG9uZSB0byB0ZXJtaW5hdGUuICopXG4gICAgaWYgTHd0LmlzX3NsZWVwaW5nIGZyb20uZnJvbV90aHJlYWQgdGhlblxuICAgICAgTHd0LnByb3RlY3RlZCBmcm9tLmZyb21fdGhyZWFkXG4gICAgZWxzZSBiZWdpblxuICAgICAgKCogT3RoZXJ3aXNlIHJlcXVlc3QgYSBuZXcgZWxlbWVudC4gKilcbiAgICAgIGxldCB0aHJlYWQgPVxuICAgICAgICBmcm9tLmZyb21fY3JlYXRlICgpID4+PSBmdW4geCAtPlxuICAgICAgICAoKiBQdXNoIHRoZSBlbGVtZW50IHRvIHRoZSBlbmQgb2YgdGhlIHF1ZXVlLiAqKVxuICAgICAgICBlbnF1ZXVlIHggcztcbiAgICAgICAgaWYgeCA9IE5vbmUgdGhlbiBMd3Qud2FrZXVwIHMuY2xvc2UgKCk7XG4gICAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgICAgaW5cbiAgICAgICgqIEFsbG93IG90aGVyIHRocmVhZHMgdG8gYWNjZXNzIHRoaXMgdGhyZWFkLiAqKVxuICAgICAgZnJvbS5mcm9tX3RocmVhZCA8LSB0aHJlYWQ7XG4gICAgICBMd3QucHJvdGVjdGVkIHRocmVhZFxuICAgIGVuZFxuICB8IEZyb21fZGlyZWN0IGYgLT5cbiAgICBsZXQgeCA9IGYgKCkgaW5cbiAgICAoKiBQdXNoIHRoZSBlbGVtZW50IHRvIHRoZSBlbmQgb2YgdGhlIHF1ZXVlLiAqKVxuICAgIGVucXVldWUgeCBzO1xuICAgIGlmIHggPSBOb25lIHRoZW4gTHd0Lndha2V1cCBzLmNsb3NlICgpO1xuICAgIEx3dC5yZXR1cm5fdW5pdFxuICB8IFB1c2ggcHVzaCAtPlxuICAgIHB1c2gucHVzaF93YWl0aW5nIDwtIHRydWU7XG4gICAgTHd0LnByb3RlY3RlZCBwdXNoLnB1c2hfc2lnbmFsXG4gIHwgUHVzaF9ib3VuZGVkIHB1c2ggLT5cbiAgICBwdXNoLnB1c2hiX3dhaXRpbmcgPC0gdHJ1ZTtcbiAgICBMd3QucHJvdGVjdGVkIHB1c2gucHVzaGJfc2lnbmFsXG5cbigqIFJlbW92ZSBbbm9kZV0gZnJvbSB0aGUgdG9wIG9mIHRoZSBxdWV1ZSwgb3IgZG8gbm90aGluZyBpZiBpdCB3YXNcbiAgIGFscmVhZHkgY29uc3VtZWQuXG5cbiAgIFByZWNvbmRpdGlvbjogbm9kZS5kYXRhIDw+IE5vbmVcbiopXG5sZXQgY29uc3VtZSBzIG5vZGUgPVxuICBpZiBub2RlID09IHMubm9kZSB0aGVuIGJlZ2luXG4gICAgcy5ub2RlIDwtIG5vZGUubmV4dDtcbiAgICBtYXRjaCBzLnNvdXJjZSB3aXRoXG4gICAgfCBQdXNoX2JvdW5kZWQgaW5mbyAtPlxuICAgICAgaWYgaW5mby5wdXNoYl9wZW5kaW5nID0gTm9uZSB0aGVuXG4gICAgICAgIGluZm8ucHVzaGJfY291bnQgPC0gaW5mby5wdXNoYl9jb3VudCAtIDFcbiAgICAgIGVsc2VcbiAgICAgICAgbm90aWZ5X3B1c2hlciBpbmZvIHMubGFzdFxuICAgIHwgRnJvbSBfIHwgRnJvbV9kaXJlY3QgXyB8IFB1c2ggXyAtPlxuICAgICAgKClcbiAgZW5kXG5cbmxldCByZWMgcGVla19yZWMgcyBub2RlID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IHBlZWtfcmVjIHMgbm9kZVxuICBlbHNlXG4gICAgTHd0LnJldHVybiBub2RlLmRhdGFcblxubGV0IHBlZWsgcyA9IHBlZWtfcmVjIHMgcy5ub2RlXG5cbmxldCByZWMgbnBlZWtfcmVjIG5vZGUgYWNjIG4gcyA9XG4gIGlmIG4gPD0gMCB0aGVuXG4gICAgTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjKVxuICBlbHNlIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBucGVla19yZWMgbm9kZSBhY2MgbiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBucGVla19yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgKG4gLSAxKSBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbmxldCBucGVlayBuIHMgPSBucGVla19yZWMgcy5ub2RlIFtdIG4gc1xuXG5sZXQgcmVjIGdldF9yZWMgcyBub2RlID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGdldF9yZWMgcyBub2RlXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBub2RlLmRhdGEgPD4gTm9uZSB0aGVuIGNvbnN1bWUgcyBub2RlO1xuICAgIEx3dC5yZXR1cm4gbm9kZS5kYXRhXG4gIGVuZFxuXG5sZXQgZ2V0IHMgPSBnZXRfcmVjIHMgcy5ub2RlXG5cbmxldCByZWMgZ2V0X2V4bl9yZWMgcyBub2RlID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIEx3dC50cnlfYmluZFxuICAgICAgKGZ1biAoKSAtPiBmZWVkIHMpXG4gICAgICAoZnVuICgpIC0+IGdldF9leG5fcmVjIHMgbm9kZSlcbiAgICAgIChmdW4gZXhuIC0+IEx3dC5yZXR1cm4gKFNvbWUgKFJlc3VsdC5FcnJvciBleG4pKSlcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIEx3dC5yZXR1cm4gKFNvbWUgKFJlc3VsdC5PayB2YWx1ZSkpXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcblxubGV0IHdyYXBfZXhuIHMgPSBmcm9tIChmdW4gKCkgLT4gZ2V0X2V4bl9yZWMgcyBzLm5vZGUpXG5cbmxldCByZWMgbmdldF9yZWMgbm9kZSBhY2MgbiBzID1cbiAgaWYgbiA8PSAwIHRoZW5cbiAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG4gIGVsc2UgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IG5nZXRfcmVjIG5vZGUgYWNjIG4gc1xuICBlbHNlXG4gICAgbWF0Y2ggcy5ub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIG5nZXRfcmVjIG5vZGUubmV4dCAoeCA6OiBhY2MpIChuIC0gMSkgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjKVxuXG5sZXQgbmdldCBuIHMgPSBuZ2V0X3JlYyBzLm5vZGUgW10gbiBzXG5cbmxldCByZWMgZ2V0X3doaWxlX3JlYyBub2RlIGFjYyBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZ2V0X3doaWxlX3JlYyBub2RlIGFjYyBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGxldCB0ZXN0ID0gZiB4IGluXG4gICAgICBpZiB0ZXN0IHRoZW4gYmVnaW5cbiAgICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICAgIGdldF93aGlsZV9yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgZiBzXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbmxldCBnZXRfd2hpbGUgZiBzID0gZ2V0X3doaWxlX3JlYyBzLm5vZGUgW10gZiBzXG5cbmxldCByZWMgZ2V0X3doaWxlX3NfcmVjIG5vZGUgYWNjIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBnZXRfd2hpbGVfc19yZWMgbm9kZSBhY2MgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+IGJlZ2luXG4gICAgICAgIGYgeCA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICAgICAgZ2V0X3doaWxlX3NfcmVjIG5vZGUubmV4dCAoeCA6OiBhY2MpIGYgc1xuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjKVxuICAgICAgZW5kXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbmxldCBnZXRfd2hpbGVfcyBmIHMgPSBnZXRfd2hpbGVfc19yZWMgcy5ub2RlIFtdIGYgc1xuXG5sZXQgcmVjIG5leHRfcmVjIHMgbm9kZSA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBuZXh0X3JlYyBzIG5vZGVcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgTHd0LnJldHVybiB4XG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QuZmFpbCBFbXB0eVxuXG5sZXQgbmV4dCBzID0gbmV4dF9yZWMgcyBzLm5vZGVcblxubGV0IHJlYyBsYXN0X25ld19yZWMgbm9kZSB4IHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgbGV0IHRocmVhZCA9IGZlZWQgcyBpblxuICAgIG1hdGNoIEx3dC5zdGF0ZSB0aHJlYWQgd2l0aFxuICAgIHwgTHd0LlJldHVybiBfIC0+XG4gICAgICBsYXN0X25ld19yZWMgbm9kZSB4IHNcbiAgICB8IEx3dC5GYWlsIGV4biAtPlxuICAgICAgTHd0LmZhaWwgZXhuXG4gICAgfCBMd3QuU2xlZXAgLT5cbiAgICAgIEx3dC5yZXR1cm4geFxuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsYXN0X25ld19yZWMgbm9kZS5uZXh0IHggc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiB4XG5cbmxldCBsYXN0X25ldyBzID1cbiAgbGV0IG5vZGUgPSBzLm5vZGUgaW5cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGxldCB0aHJlYWQgPSBuZXh0IHMgaW5cbiAgICBtYXRjaCBMd3Quc3RhdGUgdGhyZWFkIHdpdGhcbiAgICB8IEx3dC5SZXR1cm4geCAtPlxuICAgICAgbGFzdF9uZXdfcmVjIG5vZGUgeCBzXG4gICAgfCBMd3QuRmFpbCBfIHwgTHd0LlNsZWVwIC0+XG4gICAgICB0aHJlYWRcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbGFzdF9uZXdfcmVjIG5vZGUubmV4dCB4IHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5mYWlsIEVtcHR5XG5cbmxldCByZWMgdG9fbGlzdF9yZWMgbm9kZSBhY2MgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiB0b19saXN0X3JlYyBub2RlIGFjYyBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIHRvX2xpc3RfcmVjIG5vZGUubmV4dCAoeCA6OiBhY2MpIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcblxubGV0IHRvX2xpc3QgcyA9IHRvX2xpc3RfcmVjIHMubm9kZSBbXSBzXG5cbmxldCByZWMgdG9fc3RyaW5nX3JlYyBub2RlIGJ1ZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IHRvX3N0cmluZ19yZWMgbm9kZSBidWYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIHg7XG4gICAgICB0b19zdHJpbmdfcmVjIG5vZGUubmV4dCBidWYgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiAoQnVmZmVyLmNvbnRlbnRzIGJ1ZilcblxubGV0IHRvX3N0cmluZyBzID0gdG9fc3RyaW5nX3JlYyBzLm5vZGUgKEJ1ZmZlci5jcmVhdGUgMTI4KSBzXG5cbmxldCBqdW5rIHMgPVxuICBsZXQgbm9kZSA9IHMubm9kZSBpblxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuIGJlZ2luXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT5cbiAgICBpZiBub2RlLmRhdGEgPD4gTm9uZSB0aGVuIGNvbnN1bWUgcyBub2RlO1xuICAgIEx3dC5yZXR1cm5fdW5pdFxuICBlbmQgZWxzZSBiZWdpblxuICAgIGlmIG5vZGUuZGF0YSA8PiBOb25lIHRoZW4gY29uc3VtZSBzIG5vZGU7XG4gICAgTHd0LnJldHVybl91bml0XG4gIGVuZFxuXG5sZXQgcmVjIG5qdW5rX3JlYyBub2RlIG4gcyA9XG4gIGlmIG4gPD0gMCB0aGVuXG4gICAgTHd0LnJldHVybl91bml0XG4gIGVsc2UgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IG5qdW5rX3JlYyBub2RlIG4gc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgXyAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBuanVua19yZWMgbm9kZS5uZXh0IChuIC0gMSkgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBuanVuayBuIHMgPSBuanVua19yZWMgcy5ub2RlIG4gc1xuXG5sZXQgcmVjIGp1bmtfd2hpbGVfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGp1bmtfd2hpbGVfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBsZXQgdGVzdCA9IGYgeCBpblxuICAgICAgaWYgdGVzdCB0aGVuIGJlZ2luXG4gICAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgICBqdW5rX3doaWxlX3JlYyBub2RlLm5leHQgZiBzXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQganVua193aGlsZSBmIHMgPSBqdW5rX3doaWxlX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMganVua193aGlsZV9zX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBqdW5rX3doaWxlX3NfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+IGJlZ2luXG4gICAgICAgIGYgeCA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICAgICAganVua193aGlsZV9zX3JlYyBub2RlLm5leHQgZiBzXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICAgIGVuZFxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBqdW5rX3doaWxlX3MgZiBzID0ganVua193aGlsZV9zX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMganVua19vbGRfcmVjIG5vZGUgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBsZXQgdGhyZWFkID0gZmVlZCBzIGluXG4gICAgbWF0Y2ggTHd0LnN0YXRlIHRocmVhZCB3aXRoXG4gICAgfCBMd3QuUmV0dXJuIF8gLT5cbiAgICAgIGp1bmtfb2xkX3JlYyBub2RlIHNcbiAgICB8IEx3dC5GYWlsIGV4biAtPlxuICAgICAgTHd0LmZhaWwgZXhuXG4gICAgfCBMd3QuU2xlZXAgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgXyAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBqdW5rX29sZF9yZWMgbm9kZS5uZXh0IHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQganVua19vbGQgcyA9IGp1bmtfb2xkX3JlYyBzLm5vZGUgc1xuXG5sZXQgcmVjIGdldF9hdmFpbGFibGVfcmVjIG5vZGUgYWNjIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgbGV0IHRocmVhZCA9IGZlZWQgcyBpblxuICAgIG1hdGNoIEx3dC5zdGF0ZSB0aHJlYWQgd2l0aFxuICAgIHwgTHd0LlJldHVybiBfIC0+XG4gICAgICBnZXRfYXZhaWxhYmxlX3JlYyBub2RlIGFjYyBzXG4gICAgfCBMd3QuRmFpbCBleG4gLT5cbiAgICAgIHJhaXNlIGV4blxuICAgIHwgTHd0LlNsZWVwIC0+XG4gICAgICBMaXN0LnJldiBhY2NcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgZ2V0X2F2YWlsYWJsZV9yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTGlzdC5yZXYgYWNjXG5cbmxldCBnZXRfYXZhaWxhYmxlIHMgPSBnZXRfYXZhaWxhYmxlX3JlYyBzLm5vZGUgW10gc1xuXG5sZXQgcmVjIGdldF9hdmFpbGFibGVfdXBfdG9fcmVjIG5vZGUgYWNjIG4gcyA9XG4gIGlmIG4gPD0gMCB0aGVuXG4gICAgTGlzdC5yZXYgYWNjXG4gIGVsc2UgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGxldCB0aHJlYWQgPSBmZWVkIHMgaW5cbiAgICBtYXRjaCBMd3Quc3RhdGUgdGhyZWFkIHdpdGhcbiAgICB8IEx3dC5SZXR1cm4gXyAtPlxuICAgICAgZ2V0X2F2YWlsYWJsZV91cF90b19yZWMgbm9kZSBhY2MgbiBzXG4gICAgfCBMd3QuRmFpbCBleG4gLT5cbiAgICAgIHJhaXNlIGV4blxuICAgIHwgTHd0LlNsZWVwIC0+XG4gICAgICBMaXN0LnJldiBhY2NcbiAgZWxzZVxuICAgIG1hdGNoIHMubm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBnZXRfYXZhaWxhYmxlX3VwX3RvX3JlYyBub2RlLm5leHQgKHggOjogYWNjKSAobiAtIDEpIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIExpc3QucmV2IGFjY1xuXG5sZXQgZ2V0X2F2YWlsYWJsZV91cF90byBuIHMgPSBnZXRfYXZhaWxhYmxlX3VwX3RvX3JlYyBzLm5vZGUgW10gbiBzXG5cbmxldCByZWMgaXNfZW1wdHkgcyA9XG4gIGlmIHMubm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGlzX2VtcHR5IHNcbiAgZWxzZVxuICAgIEx3dC5yZXR1cm4gKHMubm9kZS5kYXRhID0gTm9uZSlcblxubGV0IG1hcCBmIHMgPVxuICBmcm9tIChmdW4gKCkgLT4gZ2V0IHMgPnw9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IC0+XG4gICAgbGV0IHggPSBmIHggaW5cbiAgICBTb21lIHhcbiAgfCBOb25lIC0+XG4gICAgTm9uZSlcblxubGV0IG1hcF9zIGYgcyA9XG4gIGZyb20gKGZ1biAoKSAtPiBnZXQgcyA+Pj0gZnVuY3Rpb25cbiAgfCBTb21lIHggLT5cbiAgICBmIHggPnw9IChmdW4geCAtPiBTb21lIHgpXG4gIHwgTm9uZSAtPlxuICAgIEx3dC5yZXR1cm5fbm9uZSlcblxubGV0IGZpbHRlciBmIHMgPVxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIGxldCB0ID0gZ2V0IHMgaW5cbiAgICB0ID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+XG4gICAgICBsZXQgdGVzdCA9IGYgeCBpblxuICAgICAgaWYgdGVzdCB0aGVuXG4gICAgICAgIHRcbiAgICAgIGVsc2VcbiAgICAgICAgbmV4dCAoKVxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgZmlsdGVyX3MgZiBzID1cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBsZXQgdCA9IGdldCBzIGluXG4gICAgdCA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPiBiZWdpblxuICAgICAgICBmIHggPj49IGZ1bmN0aW9uXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIHRcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgIG5leHQgKClcbiAgICAgIGVuZFxuICAgIHwgTm9uZSAtPlxuICAgICAgdFxuICBpblxuICBmcm9tIG5leHRcblxubGV0IGZpbHRlcl9tYXAgZiBzID1cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBnZXQgcyA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPlxuICAgICAgbGV0IHggPSBmIHggaW5cbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgTHd0LnJldHVybiB4XG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBuZXh0ICgpKVxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgZmlsdGVyX21hcF9zIGYgcyA9XG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgZ2V0IHMgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGxldCB0ID0gZiB4IGluXG4gICAgICAodCA+Pj0gZnVuY3Rpb25cbiAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgdFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbmV4dCAoKSlcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICBpblxuICBmcm9tIG5leHRcblxubGV0IG1hcF9saXN0IGYgcyA9XG4gIGxldCBwZW5kaW5ncyA9IHJlZiBbXSBpblxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIG1hdGNoICFwZW5kaW5ncyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgKGdldCBzID4+PSBmdW5jdGlvblxuICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBsZXQgbCA9IGYgeCBpblxuICAgICAgICAgcGVuZGluZ3MgOj0gbDtcbiAgICAgICAgIG5leHQgKClcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIEx3dC5yZXR1cm5fbm9uZSlcbiAgICB8IHggOjogbCAtPlxuICAgICAgcGVuZGluZ3MgOj0gbDtcbiAgICAgIEx3dC5yZXR1cm4gKFNvbWUgeClcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBtYXBfbGlzdF9zIGYgcyA9XG4gIGxldCBwZW5kaW5ncyA9IHJlZiBbXSBpblxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIG1hdGNoICFwZW5kaW5ncyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgKGdldCBzID4+PSBmdW5jdGlvblxuICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBmIHggPj49IGZ1biBsIC0+XG4gICAgICAgICBwZW5kaW5ncyA6PSBsO1xuICAgICAgICAgbmV4dCAoKVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgTHd0LnJldHVybl9ub25lKVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICBwZW5kaW5ncyA6PSBsO1xuICAgICAgTHd0LnJldHVybiAoU29tZSB4KVxuICBpblxuICBmcm9tIG5leHRcblxubGV0IGZsYXR0ZW4gcyA9XG4gIG1hcF9saXN0IChmdW4gbCAtPiBsKSBzXG5cbmxldCByZWMgZm9sZF9yZWMgbm9kZSBmIHMgYWNjID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGZvbGRfcmVjIG5vZGUgZiBzIGFjY1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsZXQgYWNjID0gZiB4IGFjYyBpblxuICAgICAgZm9sZF9yZWMgbm9kZS5uZXh0IGYgcyBhY2NcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gYWNjXG5cbmxldCBmb2xkIGYgcyBhY2MgPSBmb2xkX3JlYyBzLm5vZGUgZiBzIGFjY1xuXG5sZXQgcmVjIGZvbGRfc19yZWMgbm9kZSBmIHMgYWNjID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGZvbGRfc19yZWMgbm9kZSBmIHMgYWNjXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGYgeCBhY2MgPj49IGZ1biBhY2MgLT5cbiAgICAgIGZvbGRfc19yZWMgbm9kZS5uZXh0IGYgcyBhY2NcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gYWNjXG5cbmxldCBmb2xkX3MgZiBzIGFjYyA9IGZvbGRfc19yZWMgcy5ub2RlIGYgcyBhY2NcblxubGV0IHJlYyBpdGVyX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBpdGVyX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsZXQgKCkgPSBmIHggaW5cbiAgICAgIGl0ZXJfcmVjIG5vZGUubmV4dCBmIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgaXRlciBmIHMgPSBpdGVyX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMgaXRlcl9zX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBpdGVyX3NfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGYgeCA+Pj0gZnVuICgpIC0+XG4gICAgICBpdGVyX3NfcmVjIG5vZGUubmV4dCBmIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgaXRlcl9zIGYgcyA9IGl0ZXJfc19yZWMgcy5ub2RlIGYgc1xuXG5sZXQgcmVjIGl0ZXJfcF9yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gaXRlcl9wX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsZXQgcmVzID0gZiB4IGluXG4gICAgICBsZXQgcmVzdCA9IGl0ZXJfcF9yZWMgbm9kZS5uZXh0IGYgcyBpblxuICAgICAgcmVzID4+PSBmdW4gKCkgLT4gcmVzdFxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBpdGVyX3AgZiBzID0gaXRlcl9wX3JlYyBzLm5vZGUgZiBzXG5cbmxldCBpdGVyX24gPyhtYXhfY29uY3VycmVuY3kgPSAxKSBmIHN0cmVhbSA9XG4gIGJlZ2luXG4gICAgaWYgbWF4X2NvbmN1cnJlbmN5IDw9IDAgdGhlblxuICAgICAgbGV0IG1lc3NhZ2UgPVxuICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgIFwiTHd0X3N0cmVhbS5pdGVyX246IG1heF9jb25jdXJyZW5jeSBtdXN0IGJlID4gMCwgJWQgZ2l2ZW5cIlxuICAgICAgICAgIG1heF9jb25jdXJyZW5jeVxuICAgICAgaW5cbiAgICAgIGludmFsaWRfYXJnIG1lc3NhZ2VcbiAgZW5kO1xuICBsZXQgcmVjIGxvb3AgcnVubmluZyBhdmFpbGFibGUgPVxuICAgIGJlZ2luXG4gICAgICBpZiBhdmFpbGFibGUgPiAwIHRoZW4gKFxuICAgICAgICBMd3QucmV0dXJuIChydW5uaW5nLCBhdmFpbGFibGUpXG4gICAgICApXG4gICAgICBlbHNlIChcbiAgICAgICAgTHd0Lm5jaG9vc2Vfc3BsaXQgcnVubmluZyA+Pj0gZnVuIChjb21wbGV0ZSwgcnVubmluZykgLT5cbiAgICAgICAgTHd0LnJldHVybiAocnVubmluZywgYXZhaWxhYmxlICsgTGlzdC5sZW5ndGggY29tcGxldGUpXG4gICAgICApXG4gICAgZW5kID4+PSBmdW4gKHJ1bm5pbmcsIGF2YWlsYWJsZSkgLT5cbiAgICBnZXQgc3RyZWFtID4+PSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LmpvaW4gcnVubmluZ1xuICAgIHwgU29tZSBlbHQgLT5cbiAgICAgIGxvb3AgKGYgZWx0IDo6IHJ1bm5pbmcpIChwcmVkIGF2YWlsYWJsZSlcbiAgaW5cbiAgbG9vcCBbXSBtYXhfY29uY3VycmVuY3lcblxubGV0IHJlYyBmaW5kX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBmaW5kX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCBhcyBvcHQgLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbGV0IHRlc3QgPSBmIHggaW5cbiAgICAgIGlmIHRlc3QgdGhlblxuICAgICAgICBMd3QucmV0dXJuIG9wdFxuICAgICAgZWxzZVxuICAgICAgICBmaW5kX3JlYyBub2RlLm5leHQgZiBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcblxubGV0IGZpbmQgZiBzID0gZmluZF9yZWMgcy5ub2RlIGYgc1xuXG5sZXQgcmVjIGZpbmRfc19yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZmluZF9zX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCBhcyBvcHQgLT4gYmVnaW5cbiAgICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICAgIGYgeCA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgTHd0LnJldHVybiBvcHRcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgIGZpbmRfc19yZWMgbm9kZS5uZXh0IGYgc1xuICAgICAgZW5kXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcblxubGV0IGZpbmRfcyBmIHMgPSBmaW5kX3NfcmVjIHMubm9kZSBmIHNcblxubGV0IHJlYyBmaW5kX21hcF9yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZmluZF9tYXBfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxldCB4ID0gZiB4IGluXG4gICAgICBpZiB4ID0gTm9uZSB0aGVuXG4gICAgICAgIGZpbmRfbWFwX3JlYyBub2RlLm5leHQgZiBzXG4gICAgICBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm4geFxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG5cbmxldCBmaW5kX21hcCBmIHMgPSBmaW5kX21hcF9yZWMgcy5ub2RlIGYgc1xuXG5sZXQgcmVjIGZpbmRfbWFwX3NfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGZpbmRfbWFwX3NfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxldCB0ID0gZiB4IGluXG4gICAgICAodCA+Pj0gZnVuY3Rpb25cbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGZpbmRfbWFwX3NfcmVjIG5vZGUubmV4dCBmIHNcbiAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgdClcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuXG5sZXQgZmluZF9tYXBfcyBmIHMgPSBmaW5kX21hcF9zX3JlYyBzLm5vZGUgZiBzXG5cbmxldCBjb21iaW5lIHMxIHMyID1cbiAgbGV0IG5leHQgKCkgPVxuICAgIGxldCB0MSA9IGdldCBzMSBhbmQgdDIgPSBnZXQgczIgaW5cbiAgICB0MSA+Pj0gZnVuIG4xIC0+XG4gICAgdDIgPj49IGZ1biBuMiAtPlxuICAgIG1hdGNoIG4xLCBuMiB3aXRoXG4gICAgfCBTb21lIHgxLCBTb21lIHgyIC0+XG4gICAgICBMd3QucmV0dXJuIChTb21lKHgxLCB4MikpXG4gICAgfCBfIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBhcHBlbmQgczEgczIgPVxuICBsZXQgY3VycmVudF9zID0gcmVmIHMxIGluXG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgbGV0IHQgPSBnZXQgIWN1cnJlbnRfcyBpblxuICAgIHQgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lIF8gLT5cbiAgICAgIHRcbiAgICB8IE5vbmUgLT5cbiAgICAgIGlmICFjdXJyZW50X3MgPT0gczIgdGhlblxuICAgICAgICBMd3QucmV0dXJuX25vbmVcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgY3VycmVudF9zIDo9IHMyO1xuICAgICAgICBuZXh0ICgpXG4gICAgICBlbmRcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBjb25jYXQgc190b3AgPVxuICBsZXQgY3VycmVudF9zID0gcmVmIChmcm9tIChmdW4gKCkgLT4gTHd0LnJldHVybl9ub25lKSkgaW5cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBsZXQgdCA9IGdldCAhY3VycmVudF9zIGluXG4gICAgdCA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgXyAtPlxuICAgICAgdFxuICAgIHwgTm9uZSAtPlxuICAgICAgZ2V0IHNfdG9wID4+PSBmdW5jdGlvblxuICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgY3VycmVudF9zIDo9IHM7XG4gICAgICAgIG5leHQgKClcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBMd3QucmV0dXJuX25vbmVcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBjaG9vc2Ugc3RyZWFtcyA9XG4gIGxldCBzb3VyY2UgcyA9IChzLCBnZXQgcyA+fD0gZnVuIHggLT4gKHMsIHgpKSBpblxuICBsZXQgc3RyZWFtcyA9IHJlZiAoTGlzdC5tYXAgc291cmNlIHN0cmVhbXMpIGluXG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgbWF0Y2ggIXN0cmVhbXMgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICAgIHwgbCAtPlxuICAgICAgTHd0LmNob29zZSAoTGlzdC5tYXAgc25kIGwpID4+PSBmdW4gKHMsIHgpIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmVtb3ZlX2Fzc3EgcyBsIGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgIHN0cmVhbXMgOj0gc291cmNlIHMgOjogbDtcbiAgICAgICAgTHd0LnJldHVybiB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgc3RyZWFtcyA6PSBsO1xuICAgICAgICBuZXh0ICgpXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgcGFyc2UgcyBmID1cbiAgKG1hdGNoIHMuc291cmNlIHdpdGhcbiAgIHwgUHVzaF9ib3VuZGVkIF8gLT4gaW52YWxpZF9hcmcgXCJMd3Rfc3RyZWFtLnBhcnNlXCJcbiAgIHwgRnJvbSBfIHwgRnJvbV9kaXJlY3QgXyB8IFB1c2ggXyAtPiAoKSk7XG4gIGxldCBub2RlID0gcy5ub2RlIGluXG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT4gZiBzKVxuICAgIChmdW4gZXhuIC0+XG4gICAgICAgcy5ub2RlIDwtIG5vZGU7XG4gICAgICAgTHd0LmZhaWwgZXhuKVxuXG5sZXQgaGV4ZHVtcCBzdHJlYW0gPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA4MCBhbmQgbnVtID0gcmVmIDAgaW5cbiAgZnJvbSBiZWdpbiBmdW4gXyAtPlxuICAgIG5nZXQgMTYgc3RyZWFtID4+PSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICAgIHwgbCAtPlxuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIFByaW50Zi5icHJpbnRmIGJ1ZiBcIiUwOHh8ICBcIiAhbnVtO1xuICAgICAgbnVtIDo9ICFudW0gKyAxNjtcbiAgICAgIGxldCByZWMgYnl0ZXMgcG9zID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIGJsYW5rcyBwb3NcbiAgICAgICAgfCB4IDo6IGwgLT5cbiAgICAgICAgICBpZiBwb3MgPSA4IHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnICc7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYnVmIFwiJTAyeCBcIiAoQ2hhci5jb2RlIHgpO1xuICAgICAgICAgIGJ5dGVzIChwb3MgKyAxKSBsXG4gICAgICBhbmQgYmxhbmtzIHBvcyA9XG4gICAgICAgIGlmIHBvcyA8IDE2IHRoZW4gYmVnaW5cbiAgICAgICAgICBpZiBwb3MgPSA4IHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIiAgICBcIlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIiAgIFwiO1xuICAgICAgICAgIGJsYW5rcyAocG9zICsgMSlcbiAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgYnl0ZXMgMCBsO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiIHxcIjtcbiAgICAgIExpc3QuaXRlciAoZnVuIGNoIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgKGlmIGNoID49ICdcXHgyMCcgJiYgY2ggPD0gJ1xceDdlJyB0aGVuIGNoIGVsc2UgJy4nKSkgbDtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ3wnO1xuICAgICAgTHd0LnJldHVybiAoU29tZShCdWZmZXIuY29udGVudHMgYnVmKSlcbiAgZW5kXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuKCoqIE1vZHVsZSBbTHd0X3Jlc3VsdF06IGV4cGxpY2l0IGVycm9yIGhhbmRsaW5nICopXG5cbm9wZW4gUmVzdWx0XG5cbnR5cGUgKCsnYSwgKydiKSB0ID0gKCdhLCAnYikgUmVzdWx0LnQgTHd0LnRcblxubGV0IHJldHVybiB4ID0gTHd0LnJldHVybiAoT2sgeClcbmxldCBmYWlsIGUgPSBMd3QucmV0dXJuIChFcnJvciBlKVxuXG5sZXQgbGlmdCA9IEx3dC5yZXR1cm5cbmxldCBvayB4ID0gTHd0Lm1hcCAoZnVuIHkgLT4gT2sgeSkgeFxubGV0IGVycm9yIHggPSBMd3QubWFwIChmdW4geSAtPiBFcnJvciB5KSB4XG5cbmxldCBtYXAgZiBlID1cbiAgTHd0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgICAgIHwgT2sgeCAtPiBPayAoZiB4KSlcbiAgICBlXG5cbmxldCBtYXBfZXJyb3IgZiBlID1cbiAgTHd0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IEVycm9yIChmIGUpXG4gICAgICB8IE9rIHggLT4gT2sgeClcbiAgICBlXG5sZXQgbWFwX2VyciBmIGUgPSBtYXBfZXJyb3IgZiBlXG5cbmxldCBjYXRjaCBlID1cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPiBvayAoZSAoKSkpXG4gICAgZmFpbFxuXG5sZXQgZ2V0X2V4biBlID1cbiAgTHd0LmJpbmQgZVxuICAgIChmdW5jdGlvblxuICAgICAgfCBPayB4IC0+IEx3dC5yZXR1cm4geFxuICAgICAgfCBFcnJvciBlIC0+IEx3dC5mYWlsIGUpXG5cbmxldCBiaW5kIGUgZiA9XG4gIEx3dC5iaW5kIGVcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgRXJyb3IgZSAtPiBMd3QucmV0dXJuIChFcnJvciBlKVxuICAgICAgfCBPayB4IC0+IGYgeClcbiAgICAgIFxubGV0IGJpbmRfZXJyb3IgZSBmID1cbiAgTHd0LmJpbmQgZVxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IGYgZVxuICAgICAgfCBPayB4IC0+IEx3dC5yZXR1cm4gKE9rIHgpKVxuICAgICAgXG5sZXQgYmluZF9sd3QgZSBmID1cbiAgTHd0LmJpbmQgZVxuICAgIChmdW5jdGlvblxuICAgICAgfCBPayB4IC0+IG9rIChmIHgpXG4gICAgICB8IEVycm9yIGUgLT4gZmFpbCBlKVxuXG5sZXQgYmluZF9yZXN1bHQgZSBmID1cbiAgTHd0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgICAgIHwgT2sgeCAtPiBmIHgpXG4gICAgZVxuXG5sZXQgYmluZF9sd3RfZXJyb3IgZSBmID1cbiAgTHd0LmJpbmQgZVxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IEx3dC5iaW5kIChmIGUpIGZhaWxcbiAgICAgIHwgT2sgeCAtPiByZXR1cm4geClcbmxldCBiaW5kX2x3dF9lcnIgZSBmID0gYmluZF9sd3RfZXJyb3IgZSBmXG5cbmxldCBib3RoIGEgYiA9XG4gIGxldCBzID0gcmVmIE5vbmUgaW5cbiAgbGV0IHNldF9vbmNlIGUgPVxuICAgIG1hdGNoICFzIHdpdGhcbiAgICB8IE5vbmUgLT4gczo9IFNvbWUgZVxuICAgIHwgU29tZSBfIC0+ICgpXG4gIGluXG4gIGxldCAoYSxiKSA9IG1hcF9lcnJvciBzZXRfb25jZSBhLG1hcF9lcnJvciBzZXRfb25jZSBiIGluXG4gIGxldCBzb21lX2Fzc2VydCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgU29tZSBlIC0+IEVycm9yIGVcbiAgaW5cbiAgTHd0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBPayB4LCBPayB5IC0+IE9rICh4LHkpXG4gICAgICB8IEVycm9yIF8sIE9rIF9cbiAgICAgIHwgT2sgXyxFcnJvciBfXG4gICAgICB8IEVycm9yIF8sIEVycm9yIF8gLT4gc29tZV9hc3NlcnQgIXMpXG4gICAgKEx3dC5ib3RoIGEgYilcblxubGV0IGl0ZXIgZiByID1cbiAgTHd0LmJpbmQgclxuICAgIChmdW5jdGlvblxuICAgICAgfCBPayB4IC0+IGYgeFxuICAgICAgfCBFcnJvciBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IGl0ZXJfZXJyb3IgZiByID1cbiAgTHd0LmJpbmQgclxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IGYgZVxuICAgICAgfCBPayBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoPj49KSA9IGJpbmRcbiAgbGV0ICg+fD0pIGUgZiA9IG1hcCBmIGVcbmVuZFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwIHQgfmYgPSBtYXAgZiB0XG4gICAgbGV0IGJpbmQgdCB+ZiA9IGJpbmQgdCBmXG4gICAgbGV0IGJvdGggPSBib3RoXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTeW50YXggPSBzdHJ1Y3RcbiAgbGV0IChsZXQqKSA9IGJpbmRcbiAgbGV0IChhbmQqKSA9IGJvdGhcblxuICBsZXQgKGxldCspIHggZiA9IG1hcCBmIHhcbiAgbGV0IChhbmQrKSA9IGJvdGhcbmVuZFxuXG5pbmNsdWRlIEluZml4XG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbnNpZ1xuICB0eXBlIHRcbiAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbnNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcbiAgdmFsIGVtcHR5OiB0XG4gIHZhbCBpc19lbXB0eTogdCAtPiBib29sXG4gIHZhbCBhZGQ6IGVsdCAtPiB0IC0+IHRcbiAgdmFsIHVuaW9uOiB0IC0+IHQgLT4gdFxuICB2YWwgZmluZF9taW46IHQgLT4gZWx0XG4gIHZhbCBsb29rdXBfbWluOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIHJlbW92ZV9taW46IHQgLT4gdFxuICB2YWwgc2l6ZTogdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA6IChTIHdpdGggdHlwZSBlbHQgPSBPcmQudCkgPVxuc3RydWN0XG4gIHR5cGUgZWx0ID0gT3JkLnRcblxuICB0eXBlIHQgPSB0cmVlIGxpc3RcbiAgYW5kIHRyZWUgPSBOb2RlIG9mIGVsdCAqIGludCAqIHRyZWUgbGlzdFxuXG4gIGxldCByb290IChOb2RlICh4LCBfLCBfKSkgPSB4XG4gIGxldCByYW5rIChOb2RlIChfLCByLCBfKSkgPSByXG4gIGxldCBsaW5rIChOb2RlICh4MSwgcjEsIGMxKSBhcyB0MSkgKE5vZGUgKHgyLCByMiwgYzIpIGFzIHQyKSA9XG4gICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4MSB4MiBpblxuICAgIGlmIGMgPD0gMCB0aGVuIE5vZGUgKHgxLCByMSArIDEsIHQyOjpjMSkgZWxzZSBOb2RlKHgyLCByMiArIDEsIHQxOjpjMilcbiAgbGV0IHJlYyBpbnMgdCA9XG4gICAgZnVuY3Rpb25cbiAgICAgIFtdICAgICAtPlxuICAgICAgW3RdXG4gICAgfCAodCc6Ol8pIGFzIHRzIHdoZW4gcmFuayB0IDwgcmFuayB0JyAtPlxuICAgICAgdDo6dHNcbiAgICB8IHQnOjp0cyAtPlxuICAgICAgaW5zIChsaW5rIHQgdCcpIHRzXG5cbiAgbGV0IGVtcHR5ID0gW11cbiAgbGV0IGlzX2VtcHR5IHRzID0gdHMgPSBbXVxuICBsZXQgYWRkIHggdHMgPSBpbnMgKE5vZGUgKHgsIDAsIFtdKSkgdHNcbiAgbGV0IHJlYyB1bmlvbiB0cyB0cycgPVxuICAgIG1hdGNoIHRzLCB0cycgd2l0aFxuICAgICAgKFtdLCBfKSAtPiB0cydcbiAgICB8IChfLCBbXSkgLT4gdHNcbiAgICB8ICh0MTo6dHMxLCB0Mjo6dHMyKSAgLT5cbiAgICAgIGlmIHJhbmsgdDEgPCByYW5rIHQyIHRoZW4gdDEgOjogdW5pb24gdHMxICh0Mjo6dHMyKVxuICAgICAgZWxzZSBpZiByYW5rIHQyIDwgcmFuayB0MSB0aGVuIHQyIDo6IHVuaW9uICh0MTo6dHMxKSB0czJcbiAgICAgIGVsc2UgaW5zIChsaW5rIHQxIHQyKSAodW5pb24gdHMxIHRzMilcblxuICBsZXQgcmVjIGZpbmRfbWluID1cbiAgICBmdW5jdGlvblxuICAgICAgW10gICAgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgfCBbdF0gICAtPiByb290IHRcbiAgICB8IHQ6OnRzIC0+XG4gICAgICBsZXQgeCA9IGZpbmRfbWluIHRzIGluXG4gICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIChyb290IHQpIHggaW5cbiAgICAgIGlmIGMgPCAwIHRoZW4gcm9vdCB0IGVsc2UgeFxuXG4gIGxldCByZWMgbG9va3VwX21pbiA9XG4gICAgZnVuY3Rpb25cbiAgICB8IFtdICAgIC0+IE5vbmVcbiAgICB8IFt0XSAgIC0+IFNvbWUgKHJvb3QgdClcbiAgICB8IHQ6OnRzIC0+XG4gICAgICBtYXRjaCBsb29rdXBfbWluIHRzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgeCBhcyByZXN1bHQgLT5cbiAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSAocm9vdCB0KSB4IGluXG4gICAgICAgIGlmIGMgPCAwIHRoZW4gU29tZSAocm9vdCB0KSBlbHNlIHJlc3VsdFxuXG4gIGxldCByZWMgZ2V0X21pbiA9XG4gICAgZnVuY3Rpb25cbiAgICAgIFtdICAgIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgW3RdICAgLT4gKHQsIFtdKVxuICAgIHwgdDo6dHMgLT5cbiAgICAgIGxldCAodCcsIHRzJykgPSBnZXRfbWluIHRzIGluXG4gICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIChyb290IHQpIChyb290IHQnKSBpblxuICAgICAgaWYgYyA8IDAgdGhlbiAodCwgdHMpIGVsc2UgKHQnLCB0Ojp0cycpXG5cbiAgbGV0IHJlbW92ZV9taW4gPVxuICAgIGZ1bmN0aW9uXG4gICAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICB8IHRzIC0+XG4gICAgICBsZXQgKE5vZGUgKF8sIF8sIGMpLCB0cykgPSBnZXRfbWluIHRzIGluXG4gICAgICB1bmlvbiAoTGlzdC5yZXYgYykgdHNcblxuICBsZXQgcmVjIHNpemUgbCA9XG4gICAgbGV0IHNpemV0cmVlIChOb2RlIChfLF8sdGwpKSA9IDEgKyBzaXplIHRsIGluXG4gICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHQgLT4gcyArIHNpemV0cmVlIHQpIDAgbFxuZW5kXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbigqIEEgc3VydmV5IGFuZCBtZWFzdXJlbWVudHMgb2YgbW9yZSBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb25zIGNhbiBiZSBmb3VuZCBhdDpcblxuICAgIGh0dHBzOi8vanN0aG9tYXMuZ2l0aHViLmlvL21hcC1jb21wYXJpc29uLmh0bWxcblxuICAgU2VlIGRpc2N1c3Npb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L3B1bGwvMzQ3LiAqKVxubGV0IHRhaWxfcmVjdXJzaXZlX21hcCBmIGwgPVxuICBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGYgbClcblxubGV0IHRhaWxfcmVjdXJzaXZlX21hcGlfcmV2IGYgbCA9XG4gIGxldCByZWMgaW5uZXIgYWNjIGkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoZDo6dGwgLT4gKGlubmVyIFtAb2NhbWwudGFpbGNhbGxdKSAoKGYgaSBoZCk6OmFjYykgKGkgKyAxKSB0bFxuICBpblxuICBpbm5lciBbXSAwIGxcblxub3BlbiBMd3QuSW5maXhcblxubGV0IHJlYyBpdGVyX3MgZiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgfCB4IDo6IGwgLT5cbiAgICBMd3QuYXBwbHkgZiB4ID4+PSBmdW4gKCkgLT5cbiAgICBpdGVyX3MgZiBsXG5cbmxldCBpdGVyX3AgZiBsID1cbiAgbGV0IHRzID0gTGlzdC5yZXZfbWFwIChMd3QuYXBwbHkgZikgbCBpblxuICBMd3Quam9pbiB0c1xuXG5sZXQgcmVjIGl0ZXJpX3MgaSBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm5fdW5pdFxuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSAoZiBpKSB4ID4+PSBmdW4gKCkgLT5cbiAgICBpdGVyaV9zIChpICsgMSkgZiBsXG5cbmxldCBpdGVyaV9zIGYgbCA9IGl0ZXJpX3MgMCBmIGxcblxubGV0IGl0ZXJpX3AgZiBsID1cbiAgbGV0IGYnIGkgPSBMd3QuYXBwbHkgKGYgaSkgaW5cbiAgbGV0IHRzID0gdGFpbF9yZWN1cnNpdmVfbWFwaV9yZXYgZicgbCBpblxuICBMd3Quam9pbiB0c1xuXG5sZXQgbWFwX3MgZiBsID1cbiAgbGV0IHJlYyBpbm5lciBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjIHw+IEx3dC5yZXR1cm5cbiAgICB8IGhkOjp0bCAtPlxuICAgICAgTHd0LmFwcGx5IGYgaGQgPj49IGZ1biByIC0+XG4gICAgICAoaW5uZXIgW0BvY2FtbC50YWlsY2FsbF0pIChyOjphY2MpIHRsXG4gIGluXG4gIGlubmVyIFtdIGxcblxubGV0IHJlYyBfY29sbGVjdF9yZXYgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm4gYWNjXG4gIHwgdDo6dHMgLT5cbiAgICB0ID4+PSBmdW4gaSAtPlxuICAgIChfY29sbGVjdF9yZXYgW0BvY2FtbC50YWlsY2FsbF0pIChpOjphY2MpIHRzXG5cbmxldCBtYXBfcCBmIGwgPVxuICBsZXQgdHMgPSBMaXN0LnJldl9tYXAgKEx3dC5hcHBseSBmKSBsIGluXG4gIF9jb2xsZWN0X3JldiBbXSB0c1xuXG5sZXQgZmlsdGVyX21hcF9zIGYgbCA9XG4gIGxldCByZWMgaW5uZXIgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdICAgICAtPiBMaXN0LnJldiBhY2MgfD4gTHd0LnJldHVyblxuICAgIHwgaGQ6OnRsIC0+XG4gICAgICBMd3QuYXBwbHkgZiBoZCA+Pj0gZnVuY3Rpb25cbiAgICAgIHwgU29tZSB2IC0+IChpbm5lciBbQG9jYW1sLnRhaWxjYWxsXSkgKHY6OmFjYykgdGxcbiAgICAgIHwgTm9uZSAtPiAoaW5uZXIgW0BvY2FtbC50YWlsY2FsbF0pIGFjYyB0bFxuICBpblxuICBpbm5lciBbXSBsXG5cbmxldCBmaWx0ZXJfbWFwX3AgZiBsID1cbiAgbGV0IHJlYyBfY29sbGVjdF9vcHRpb25hbF9yZXYgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAgICAtPiBMd3QucmV0dXJuIGFjY1xuICB8IHQ6OnRzIC0+XG4gICAgdCA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgdiAtPiAoX2NvbGxlY3Rfb3B0aW9uYWxfcmV2IFtAb2NhbWwudGFpbGNhbGxdKSAodjo6YWNjKSB0c1xuICAgIHwgTm9uZSAtPiAoX2NvbGxlY3Rfb3B0aW9uYWxfcmV2IFtAb2NhbWwudGFpbGNhbGxdKSBhY2MgdHNcbiAgaW5cbiAgbGV0IHRzID0gTGlzdC5yZXZfbWFwIChMd3QuYXBwbHkgZikgbCBpblxuICBfY29sbGVjdF9vcHRpb25hbF9yZXYgW10gdHNcblxubGV0IG1hcGlfcyBmIGwgPVxuICBsZXQgcmVjIGlubmVyIGFjYyBpID0gZnVuY3Rpb25cbiAgICB8IFtdICAgICAtPiBMaXN0LnJldiBhY2MgfD4gTHd0LnJldHVyblxuICAgIHwgaGQ6OnRsIC0+XG4gICAgICBMd3QuYXBwbHkgKGYgaSkgaGQgPj49IGZ1biB2IC0+XG4gICAgICAoaW5uZXIgW0BvY2FtbC50YWlsY2FsbF0pICh2OjphY2MpIChpKzEpIHRsXG4gIGluXG4gIGlubmVyIFtdIDAgbFxuXG5sZXQgbWFwaV9wIGYgbCA9XG4gIGxldCBmJyBpID0gTHd0LmFwcGx5IChmIGkpIGluXG4gIGxldCB0cyA9IHRhaWxfcmVjdXJzaXZlX21hcGlfcmV2IGYnIGwgaW5cbiAgX2NvbGxlY3RfcmV2IFtdIHRzXG5cbmxldCByZWMgcmV2X21hcF9hcHBlbmRfcyBhY2MgZiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QucmV0dXJuIGFjY1xuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSBmIHggPj49IGZ1biB4IC0+XG4gICAgcmV2X21hcF9hcHBlbmRfcyAoeCA6OiBhY2MpIGYgbFxuXG5sZXQgcmV2X21hcF9zIGYgbCA9XG4gIHJldl9tYXBfYXBwZW5kX3MgW10gZiBsXG5cbmxldCByZWMgcmV2X21hcF9hcHBlbmRfcCBhY2MgZiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBhY2NcbiAgfCB4IDo6IGwgLT5cbiAgICByZXZfbWFwX2FwcGVuZF9wXG4gICAgICAoTHd0LmFwcGx5IGYgeCA+Pj0gZnVuIHggLT5cbiAgICAgICBhY2MgPnw9IGZ1biBsIC0+XG4gICAgICAgeCA6OiBsKSBmIGxcblxubGV0IHJldl9tYXBfcCBmIGwgPVxuICByZXZfbWFwX2FwcGVuZF9wIEx3dC5yZXR1cm5fbmlsIGYgbFxuXG5sZXQgcmVjIGZvbGRfbGVmdF9zIGYgYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm4gYWNjXG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IChmIGFjYykgeCA+Pj0gZnVuIGFjYyAtPlxuICAgIChmb2xkX2xlZnRfcyBbQG9jYW1sLnRhaWxjYWxsXSkgZiBhY2MgbFxuXG5sZXQgZm9sZF9yaWdodF9zIGYgbCBhY2MgPVxuICBsZXQgcmVjIGlubmVyIGYgYSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAgICAgLT4gTHd0LnJldHVybiBhXG4gICAgfCBoZDo6dGwgLT4gKEx3dC5hcHBseSAoZiBoZCkgYSkgPj49IGZ1biBhJyAtPlxuICAgICAgKGlubmVyIFtAb2NhbWwudGFpbGNhbGxdKSBmIGEnIHRsXG4gIGluXG4gIGlubmVyIGYgYWNjIChMaXN0LnJldiBsKVxuXG5sZXQgcmVjIGZvcl9hbGxfcyBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm5fdHJ1ZVxuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSBmIHggPj49IGZ1bmN0aW9uXG4gICAgfCB0cnVlIC0+XG4gICAgICAoZm9yX2FsbF9zIFtAb2NhbWwudGFpbGNhbGxdKSBmIGxcbiAgICB8IGZhbHNlIC0+XG4gICAgICBMd3QucmV0dXJuX2ZhbHNlXG5cbmxldCBmb3JfYWxsX3AgZiBsID1cbiAgbWFwX3AgZiBsID4+PSBmdW4gYmwgLT4gTGlzdC5mb3JfYWxsIChmdW4geCAtPiB4KSBibCB8PiBMd3QucmV0dXJuXG5cbmxldCByZWMgZXhpc3RzX3MgZiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QucmV0dXJuX2ZhbHNlXG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IGYgeCA+Pj0gZnVuY3Rpb25cbiAgICB8IHRydWUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdHJ1ZVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIChleGlzdHNfcyBbQG9jYW1sLnRhaWxjYWxsXSkgZiBsXG5cbmxldCBleGlzdHNfcCBmIGwgPVxuICBtYXBfcCBmIGwgPj49IGZ1biBibCAtPiBMaXN0LmV4aXN0cyAoZnVuIHggLT4geCkgYmwgfD4gTHd0LnJldHVyblxuXG5sZXQgcmVjIGZpbmRfcyBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5mYWlsIE5vdF9mb3VuZFxuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSBmIHggPj49IGZ1bmN0aW9uXG4gICAgfCB0cnVlIC0+XG4gICAgICBMd3QucmV0dXJuIHhcbiAgICB8IGZhbHNlIC0+XG4gICAgICAoZmluZF9zIFtAb2NhbWwudGFpbGNhbGxdKSBmIGxcblxubGV0IF9vcHRpb25hbGl6ZSBmIHggPVxuICBmIHggPj49IGZ1biBiIC0+IGlmIGIgdGhlbiBMd3QucmV0dXJuIChTb21lIHgpIGVsc2UgTHd0LnJldHVybl9ub25lXG5cbmxldCBmaWx0ZXJfcyBmIGwgPVxuICBmaWx0ZXJfbWFwX3MgKF9vcHRpb25hbGl6ZSBmKSBsXG5cbmxldCBmaWx0ZXJfcCBmIGwgPVxuICAgZmlsdGVyX21hcF9wIChfb3B0aW9uYWxpemUgZikgbFxuXG5sZXQgcGFydGl0aW9uX3MgZiBsID1cbiAgbGV0IHJlYyBpbm5lciBhY2MxIGFjYzIgPSBmdW5jdGlvblxuICAgIHwgW10gICAgIC0+IEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYzEsIExpc3QucmV2IGFjYzIpXG4gICAgfCBoZDo6dGwgLT4gTHd0LmFwcGx5IGYgaGQgPj49IGZ1biBiIC0+XG4gICAgICAgIGlmIGIgdGhlblxuICAgICAgICAgIGlubmVyIChoZDo6YWNjMSkgYWNjMiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW5uZXIgYWNjMSAoaGQ6OmFjYzIpIHRsXG4gIGluXG4gIGlubmVyIFtdIFtdIGxcblxubGV0IHBhcnRpdGlvbl9wIGYgbCA9XG4gIGxldCBnIHggPSBMd3QuYXBwbHkgZiB4ID4+PSBmdW4gYiAtPiBMd3QucmV0dXJuIChiLCB4KSBpblxuICBtYXBfcCBnIGwgPj49IGZ1biB0bCAtPlxuICBsZXQgZ3JvdXAxID0gdGFpbF9yZWN1cnNpdmVfbWFwIHNuZCBAQCBMaXN0LmZpbHRlciBmc3QgdGwgaW5cbiAgbGV0IGdyb3VwMiA9XG4gICAgdGFpbF9yZWN1cnNpdmVfbWFwIHNuZCBAQCBMaXN0LmZpbHRlciAoZnVuIHggLT4gbm90IEBAIGZzdCB4KSB0bCBpblxuICBMd3QucmV0dXJuIChncm91cDEsIGdyb3VwMilcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5cblxuKCogW0x3dF9zZXF1ZW5jZV0gaXMgZGVwcmVjYXRlZCDigJMgd2UgZG9uJ3Qgd2FudCB1c2VycyBvdXRzaWRlIEx3dCB1c2luZyBpdC5cbiAgIEhvd2V2ZXIsIGl0IGlzIHN0aWxsIHVzZWQgaW50ZXJuYWxseSBieSBMd3QuIFNvLCBicmllZmx5IGRpc2FibGUgd2FybmluZyAzXG4gICAoXCJkZXByZWNhdGVkXCIpLCBhbmQgY3JlYXRlIGEgbG9jYWwsIG5vbi1kZXByZWNhdGVkIGFsaWFzIGZvclxuICAgW0x3dF9zZXF1ZW5jZV0gdGhhdCBjYW4gYmUgcmVmZXJyZWQgdG8gYnkgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgaW4gdGhpc1xuICAgbW9kdWxlIHdpdGhvdXQgdHJpZ2dlcmluZyBhbnkgbW9yZSB3YXJuaW5ncy4gKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbm1vZHVsZSBMd3Rfc2VxdWVuY2UgPSBMd3Rfc2VxdWVuY2VcbltAQEBvY2FtbC53YXJuaW5nIFwiKzNcIl1cblxub3BlbiBMd3QuSW5maXhcblxudHlwZSAnYSB0ID0ge1xuICBjcmVhdGUgOiB1bml0IC0+ICdhIEx3dC50O1xuICAoKiBDcmVhdGUgYSBuZXcgcG9vbCBtZW1iZXIuICopXG4gIGNoZWNrIDogJ2EgLT4gKGJvb2wgLT4gdW5pdCkgLT4gdW5pdDtcbiAgKCogQ2hlY2sgdmFsaWRpdHkgb2YgYSBwb29sIG1lbWJlciB3aGVuIHVzZSByZXN1bHRlZCBpbiBmYWlsZWQgcHJvbWlzZS4gKilcbiAgdmFsaWRhdGUgOiAnYSAtPiBib29sIEx3dC50O1xuICAoKiBWYWxpZGF0ZSBhbiBleGlzdGluZyBmcmVlIHBvb2wgbWVtYmVyIGJlZm9yZSB1c2UuICopXG4gIGRpc3Bvc2UgOiAnYSAtPiB1bml0IEx3dC50O1xuICAoKiBEaXNwb3NlIG9mIGEgcG9vbCBtZW1iZXIuICopXG4gIGNsZWFyZWQgOiBib29sIHJlZiByZWY7XG4gICgqIEhhdmUgdGhlIGN1cnJlbnQgcG9vbCBlbGVtZW50cyBiZWVuIGNsZWFyZWQgb3V0PyAqKVxuICBtYXggOiBpbnQ7XG4gICgqIFNpemUgb2YgdGhlIHBvb2wuICopXG4gIG11dGFibGUgY291bnQgOiBpbnQ7XG4gICgqIE51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgcG9vbC4gKilcbiAgbGlzdCA6ICdhIFF1ZXVlLnQ7XG4gICgqIEF2YWlsYWJsZSBwb29sIG1lbWJlcnMuICopXG4gIHdhaXRlcnMgOiAnYSBMd3QudSBMd3Rfc2VxdWVuY2UudDtcbiAgKCogUHJvbWlzZSByZXNvbHZlcnMgd2FpdGluZyBmb3IgYSBmcmVlIG1lbWJlci4gKilcbn1cblxubGV0IGNyZWF0ZSBtID8odmFsaWRhdGUgPSBmdW4gXyAtPiBMd3QucmV0dXJuX3RydWUpID8oY2hlY2sgPSBmdW4gXyBmIC0+IGYgdHJ1ZSkgPyhkaXNwb3NlID0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KSBjcmVhdGUgPVxuICB7IG1heCA9IG07XG4gICAgY3JlYXRlID0gY3JlYXRlO1xuICAgIHZhbGlkYXRlID0gdmFsaWRhdGU7XG4gICAgY2hlY2sgPSBjaGVjaztcbiAgICBkaXNwb3NlID0gZGlzcG9zZTtcbiAgICBjbGVhcmVkID0gcmVmIChyZWYgZmFsc2UpO1xuICAgIGNvdW50ID0gMDtcbiAgICBsaXN0ID0gUXVldWUuY3JlYXRlICgpO1xuICAgIHdhaXRlcnMgPSBMd3Rfc2VxdWVuY2UuY3JlYXRlICgpIH1cblxuKCogQ3JlYXRlIGEgcG9vbCBtZW1iZXIuICopXG5sZXQgY3JlYXRlX21lbWJlciBwID1cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgICgqIE11c3QgYmUgZG9uZSBiZWZvcmUgcC5jcmVhdGUgdG8gcHJldmVudCBvdGhlciByZXNvbHZlcnMgZnJvbVxuICAgICAgICAgIGNyZWF0aW5nIG5ldyBtZW1iZXJzIGlmIHRoZSBsaW1pdCBpcyByZWFjaGVkLiAqKVxuICAgICAgIHAuY291bnQgPC0gcC5jb3VudCArIDE7XG4gICAgICAgcC5jcmVhdGUgKCkpXG4gICAgKGZ1biBleG4gLT5cbiAgICAgICAoKiBDcmVhdGlvbiBmYWlsZWQsIHNvIGRvbid0IGluY3JlbWVudCBjb3VudC4gKilcbiAgICAgICBwLmNvdW50IDwtIHAuY291bnQgLSAxO1xuICAgICAgIEx3dC5mYWlsIGV4bilcblxuKCogUmVsZWFzZSBhIHBvb2wgbWVtYmVyLiAqKVxubGV0IHJlbGVhc2UgcCBjID1cbiAgbWF0Y2ggTHd0X3NlcXVlbmNlLnRha2Vfb3B0X2wgcC53YWl0ZXJzIHdpdGhcbiAgfCBTb21lIHdha2VuZXIgLT5cbiAgICAoKiBBIHByb21pc2UgcmVzb2x2ZXIgaXMgd2FpdGluZywgZ2l2ZSBpdCB0aGUgcG9vbCBtZW1iZXIuICopXG4gICAgTHd0Lndha2V1cF9sYXRlciB3YWtlbmVyIGNcbiAgfCBOb25lIC0+XG4gICAgKCogTm8gb25lIGlzIHdhaXRpbmcsIHF1ZXVlIGl0LiAqKVxuICAgIFF1ZXVlLnB1c2ggYyBwLmxpc3RcblxuKCogRGlzcG9zZSBvZiBhIHBvb2wgbWVtYmVyLiAqKVxubGV0IGRpc3Bvc2UgcCBjID1cbiAgcC5kaXNwb3NlIGMgPj49IGZ1biAoKSAtPlxuICBwLmNvdW50IDwtIHAuY291bnQgLSAxO1xuICBMd3QucmV0dXJuX3VuaXRcblxuKCogQ3JlYXRlIGEgbmV3IG1lbWJlciB3aGVuIG9uZSBpcyB0aHJvd24gYXdheS4gKilcbmxldCByZXBsYWNlX2Rpc3Bvc2VkIHAgPVxuICBtYXRjaCBMd3Rfc2VxdWVuY2UudGFrZV9vcHRfbCBwLndhaXRlcnMgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAoKiBObyBvbmUgaXMgd2FpdGluZywgZG8gbm90IGNyZWF0ZSBhIG5ldyBtZW1iZXIgdG8gYXZvaWRcbiAgICAgICBsb3NpbmcgYW4gZXJyb3IgaWYgY3JlYXRpb24gZmFpbHMuICopXG4gICAgKClcbiAgfCBTb21lIHdha2VuZXIgLT5cbiAgICBMd3Qub25fYW55XG4gICAgICAoTHd0LmFwcGx5IHAuY3JlYXRlICgpKVxuICAgICAgKGZ1biBjIC0+XG4gICAgICAgICBMd3Qud2FrZXVwX2xhdGVyIHdha2VuZXIgYylcbiAgICAgIChmdW4gZXhuIC0+XG4gICAgICAgICAoKiBDcmVhdGlvbiBmYWlsZWQsIG5vdGlmeSB0aGUgd2FpdGVyIG9mIHRoZSBmYWlsdXJlLiAqKVxuICAgICAgICAgTHd0Lndha2V1cF9sYXRlcl9leG4gd2FrZW5lciBleG4pXG5cbigqIFZlcmlmeSBhIG1lbWJlciBpcyBzdGlsbCB2YWxpZCBiZWZvcmUgdXNpbmcgaXQuICopXG5sZXQgdmFsaWRhdGVfYW5kX3JldHVybiBwIGMgPVxuICBMd3QudHJ5X2JpbmRcbiAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgIHAudmFsaWRhdGUgYylcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIGNcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgICgqIFJlbW92ZSB0aGlzIG1lbWJlciBhbmQgY3JlYXRlIGEgbmV3IG9uZS4gKilcbiAgICAgICAgICBkaXNwb3NlIHAgYyA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgY3JlYXRlX21lbWJlciBwKVxuICAgICAgKGZ1biBlIC0+XG4gICAgICAgICAoKiBWYWxpZGF0aW9uIGZhaWxlZDogY3JlYXRlIGEgbmV3IG1lbWJlciBpZiBhdCBsZWFzdCBvbmVcbiAgICAgICAgICAgIHJlc29sdmVyIGlzIHdhaXRpbmcuICopXG4gICAgICAgICBkaXNwb3NlIHAgYyA+Pj0gZnVuICgpIC0+XG4gICAgICAgICByZXBsYWNlX2Rpc3Bvc2VkIHA7XG4gICAgICAgICBMd3QuZmFpbCBlKVxuXG4oKiBBY3F1aXJlIGEgcG9vbCBtZW1iZXIuICopXG5sZXQgYWNxdWlyZSBwID1cbiAgaWYgUXVldWUuaXNfZW1wdHkgcC5saXN0IHRoZW5cbiAgICAoKiBObyBtb3JlIGF2YWlsYWJsZSBtZW1iZXIuICopXG4gICAgaWYgcC5jb3VudCA8IHAubWF4IHRoZW5cbiAgICAgICgqIExpbWl0IG5vdCByZWFjaGVkOiBjcmVhdGUgYSBuZXcgb25lLiAqKVxuICAgICAgY3JlYXRlX21lbWJlciBwXG4gICAgZWxzZVxuICAgICAgKCogTGltaXQgcmVhY2hlZDogd2FpdCBmb3IgYSBmcmVlIG9uZS4gKilcbiAgICAgIChMd3QuYWRkX3Rhc2tfciBbQG9jYW1sLndhcm5pbmcgXCItM1wiXSkgcC53YWl0ZXJzID4+PSB2YWxpZGF0ZV9hbmRfcmV0dXJuIHBcbiAgZWxzZVxuICAgICgqIFRha2UgdGhlIGZpcnN0IGZyZWUgbWVtYmVyIGFuZCB2YWxpZGF0ZSBpdC4gKilcbiAgICBsZXQgYyA9IFF1ZXVlLnRha2UgcC5saXN0IGluXG4gICAgdmFsaWRhdGVfYW5kX3JldHVybiBwIGNcblxuKCogUmVsZWFzZSBhIG1lbWJlciB3aGVuIHVzZSByZXN1bHRlZCBpbiBmYWlsZWQgcHJvbWlzZSBpZiB0aGUgbWVtYmVyXG4gICBpcyBzdGlsbCB2YWxpZC4gKilcbmxldCBjaGVja19hbmRfcmVsZWFzZSBwIGMgY2xlYXJlZCA9XG4gIGxldCBvayA9IHJlZiBmYWxzZSBpblxuICBwLmNoZWNrIGMgKGZ1biByZXN1bHQgLT4gb2sgOj0gcmVzdWx0KTtcbiAgaWYgY2xlYXJlZCB8fCBub3QgIW9rIHRoZW4gKFxuICAgICgqIEVsZW1lbnQgaXMgbm90IG9rIG9yIHRoZSBwb29sIHdhcyBjbGVhcmVkIC0gZGlzcG9zZSBvZiBpdCAqKVxuICAgIGRpc3Bvc2UgcCBjXG4gIClcbiAgZWxzZSAoXG4gICAgKCogRWxlbWVudCBpcyBvayAtIHJlbGVhc2UgaXQgYmFjayB0byB0aGUgcG9vbCAqKVxuICAgIHJlbGVhc2UgcCBjO1xuICAgIEx3dC5yZXR1cm5fdW5pdFxuICApXG5cbmxldCB1c2UgcCBmID1cbiAgYWNxdWlyZSBwID4+PSBmdW4gYyAtPlxuICAoKiBDYXB0dXJlIHRoZSBjdXJyZW50IGNsZWFyZWQgc3RhdGUgc28gd2UgY2FuIHNlZSBpZiBpdCBjaGFuZ2VzIHdoaWxlIHRoaXNcbiAgICAgZWxlbWVudCBpcyBpbiB1c2UgKilcbiAgbGV0IGNsZWFyZWQgPSAhKHAuY2xlYXJlZCkgaW5cbiAgbGV0IHByb21pc2UgPVxuICAgIEx3dC5jYXRjaFxuICAgICAgKGZ1biAoKSAtPiBmIGMpXG4gICAgICAoZnVuIGUgLT5cbiAgICAgICAgIGNoZWNrX2FuZF9yZWxlYXNlIHAgYyAhY2xlYXJlZCA+Pj0gZnVuICgpIC0+XG4gICAgICAgICBMd3QuZmFpbCBlKVxuICBpblxuICBwcm9taXNlID4+PSBmdW4gXyAtPlxuICBpZiAhY2xlYXJlZCB0aGVuIChcbiAgICAoKiBwIHdhcyBjbGVhcmVkIHdoaWxlIHByb21pc2Ugd2FzIHJlc29sdmluZyAtIGRpc3Bvc2Ugb2YgdGhpcyBlbGVtZW50ICopXG4gICAgZGlzcG9zZSBwIGMgPj49IGZ1biAoKSAtPlxuICAgIHByb21pc2VcbiAgKVxuICBlbHNlIChcbiAgICByZWxlYXNlIHAgYztcbiAgICBwcm9taXNlXG4gIClcblxubGV0IGNsZWFyIHAgPVxuICBsZXQgZWxlbWVudHMgPSBRdWV1ZS5mb2xkIChmdW4gbCBlbGVtZW50IC0+IGVsZW1lbnQgOjogbCkgW10gcC5saXN0IGluXG4gIFF1ZXVlLmNsZWFyIHAubGlzdDtcbiAgKCogSW5kaWNhdGUgdG8gYW55IGN1cnJlbnRseSBpbi11c2UgZWxlbWVudHMgdGhhdCB3ZSBjbGVhcmVkIHRoZSBwb29sICopXG4gIGxldCBvbGRfY2xlYXJlZCA9ICEocC5jbGVhcmVkKSBpblxuICBvbGRfY2xlYXJlZCA6PSB0cnVlO1xuICBwLmNsZWFyZWQgOj0gcmVmIGZhbHNlO1xuICBMd3RfbGlzdC5pdGVyX3MgKGRpc3Bvc2UgcCkgZWxlbWVudHNcblxubGV0IHdhaXRfcXVldWVfbGVuZ3RoIHAgPSBMd3Rfc2VxdWVuY2UubGVuZ3RoIHAud2FpdGVyc1xuIiwiKCogT0NhbWwgcHJvbWlzZSBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2x3dFxuICogQ29weXJpZ2h0IChjKSAyMDA5LCBNZXRhd2ViIFRlY2hub2xvZ2llcywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICogYXJlIG1ldDpcbiAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlXG4gKiAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xuICogICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkXG4gKiAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBNRVRBV0VCIFRFQ0hOT0xPR0lFUyBgYEFTIElTJycgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUlxuICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTUVUQVdFQiBURUNITk9MT0dJRVMgQkVcbiAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1JcbiAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GXG4gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1JcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLFxuICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0VcbiAqIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU5cbiAqIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICopXG5cbigqIFRoaXMgY29kZSBpcyBhZGFwdGVkIGZyb21cbiAgIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDEwMTAwMTIxNTQyNS9odHRwOi8vZWlnZW5jbGFzcy5vcmc6ODAvaGlraS9saWdodHdlaWdodC10aHJlYWRzLXdpdGgtbHd0LiAqKVxuXG4oKiBbTHd0X3NlcXVlbmNlXSBpcyBkZXByZWNhdGVkIOKAkyB3ZSBkb24ndCB3YW50IHVzZXJzIG91dHNpZGUgTHd0IHVzaW5nIGl0LlxuICAgSG93ZXZlciwgaXQgaXMgc3RpbGwgdXNlZCBpbnRlcm5hbGx5IGJ5IEx3dC4gU28sIGJyaWVmbHkgZGlzYWJsZSB3YXJuaW5nIDNcbiAgIChcImRlcHJlY2F0ZWRcIiksIGFuZCBjcmVhdGUgYSBsb2NhbCwgbm9uLWRlcHJlY2F0ZWQgYWxpYXMgZm9yXG4gICBbTHd0X3NlcXVlbmNlXSB0aGF0IGNhbiBiZSByZWZlcnJlZCB0byBieSB0aGUgcmVzdCBvZiB0aGUgY29kZSBpbiB0aGlzXG4gICBtb2R1bGUgd2l0aG91dCB0cmlnZ2VyaW5nIGFueSBtb3JlIHdhcm5pbmdzLiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubW9kdWxlIEx3dF9zZXF1ZW5jZSA9IEx3dF9zZXF1ZW5jZVxuW0BAQG9jYW1sLndhcm5pbmcgXCIrM1wiXVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgbXZhcl9jb250ZW50cyA6ICdhIG9wdGlvbjtcbiAgKCogQ3VycmVudCBjb250ZW50cyAqKVxuXG4gIHdyaXRlcnMgOiAoJ2EgKiB1bml0IEx3dC51KSBMd3Rfc2VxdWVuY2UudDtcbiAgKCogVGhyZWFkcyB3YWl0aW5nIHRvIHB1dCBhIHZhbHVlICopXG5cbiAgcmVhZGVycyA6ICdhIEx3dC51IEx3dF9zZXF1ZW5jZS50O1xuICAoKiBUaHJlYWRzIHdhaXRpbmcgZm9yIGEgdmFsdWUgKilcbn1cblxubGV0IGNyZWF0ZV9lbXB0eSAoKSA9XG4gIHsgbXZhcl9jb250ZW50cyA9IE5vbmU7XG4gICAgd3JpdGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCk7XG4gICAgcmVhZGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCkgfVxuXG5sZXQgY3JlYXRlIHYgPVxuICB7IG12YXJfY29udGVudHMgPSBTb21lIHY7XG4gICAgd3JpdGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCk7XG4gICAgcmVhZGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCkgfVxuXG5sZXQgcHV0IG12YXIgdiA9XG4gIG1hdGNoIG12YXIubXZhcl9jb250ZW50cyB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGJlZ2luIG1hdGNoIEx3dF9zZXF1ZW5jZS50YWtlX29wdF9sIG12YXIucmVhZGVycyB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbXZhci5tdmFyX2NvbnRlbnRzIDwtIFNvbWUgdlxuICAgICAgfCBTb21lIHcgLT5cbiAgICAgICAgTHd0Lndha2V1cF9sYXRlciB3IHZcbiAgICBlbmQ7XG4gICAgTHd0LnJldHVybl91bml0XG4gIHwgU29tZSBfIC0+XG4gICAgbGV0IChyZXMsIHcpID0gTHd0LnRhc2sgKCkgaW5cbiAgICBsZXQgbm9kZSA9IEx3dF9zZXF1ZW5jZS5hZGRfciAodiwgdykgbXZhci53cml0ZXJzIGluXG4gICAgTHd0Lm9uX2NhbmNlbCByZXMgKGZ1biBfIC0+IEx3dF9zZXF1ZW5jZS5yZW1vdmUgbm9kZSk7XG4gICAgcmVzXG5cbmxldCBuZXh0X3dyaXRlciBtdmFyID1cbiAgbWF0Y2ggTHd0X3NlcXVlbmNlLnRha2Vfb3B0X2wgbXZhci53cml0ZXJzIHdpdGhcbiAgfCBTb21lKHYnLCB3KSAtPlxuICAgIG12YXIubXZhcl9jb250ZW50cyA8LSBTb21lIHYnO1xuICAgIEx3dC53YWtldXBfbGF0ZXIgdyAoKVxuICB8IE5vbmUgLT5cbiAgICBtdmFyLm12YXJfY29udGVudHMgPC0gTm9uZVxuXG5sZXQgdGFrZV9hdmFpbGFibGUgbXZhciA9XG4gIG1hdGNoIG12YXIubXZhcl9jb250ZW50cyB3aXRoXG4gIHwgU29tZSB2IC0+XG4gICAgbmV4dF93cml0ZXIgbXZhcjtcbiAgICBTb21lIHZcbiAgfCBOb25lIC0+XG4gICAgTm9uZVxuXG5sZXQgdGFrZSBtdmFyID1cbiAgbWF0Y2ggdGFrZV9hdmFpbGFibGUgbXZhciB3aXRoXG4gIHwgU29tZSB2IC0+IEx3dC5yZXR1cm4gdlxuICB8IE5vbmUgLT4gKEx3dC5hZGRfdGFza19yIFtAb2NhbWwud2FybmluZyBcIi0zXCJdKSBtdmFyLnJlYWRlcnNcblxubGV0IGlzX2VtcHR5IG12YXIgPVxuICBtYXRjaCBtdmFyLm12YXJfY29udGVudHMgd2l0aFxuICB8IFNvbWUgXyAtPiBmYWxzZVxuICB8IE5vbmUgLT4gdHJ1ZVxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG4oKiBbTHd0X3NlcXVlbmNlXSBpcyBkZXByZWNhdGVkIOKAkyB3ZSBkb24ndCB3YW50IHVzZXJzIG91dHNpZGUgTHd0IHVzaW5nIGl0LlxuICAgSG93ZXZlciwgaXQgaXMgc3RpbGwgdXNlZCBpbnRlcm5hbGx5IGJ5IEx3dC4gU28sIGJyaWVmbHkgZGlzYWJsZSB3YXJuaW5nIDNcbiAgIChcImRlcHJlY2F0ZWRcIiksIGFuZCBjcmVhdGUgYSBsb2NhbCwgbm9uLWRlcHJlY2F0ZWQgYWxpYXMgZm9yXG4gICBbTHd0X3NlcXVlbmNlXSB0aGF0IGNhbiBiZSByZWZlcnJlZCB0byBieSB0aGUgcmVzdCBvZiB0aGUgY29kZSBpbiB0aGlzXG4gICBtb2R1bGUgd2l0aG91dCB0cmlnZ2VyaW5nIGFueSBtb3JlIHdhcm5pbmdzLiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubW9kdWxlIEx3dF9zZXF1ZW5jZSA9IEx3dF9zZXF1ZW5jZVxuW0BAQG9jYW1sLndhcm5pbmcgXCIrM1wiXVxuXG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlIHQgPSB7IG11dGFibGUgbG9ja2VkIDogYm9vbDsgd2FpdGVycyA6IHVuaXQgTHd0LnUgTHd0X3NlcXVlbmNlLnQgIH1cblxubGV0IGNyZWF0ZSAoKSA9IHsgbG9ja2VkID0gZmFsc2U7IHdhaXRlcnMgPSBMd3Rfc2VxdWVuY2UuY3JlYXRlICgpIH1cblxubGV0IGxvY2sgbSA9XG4gIGlmIG0ubG9ja2VkIHRoZW5cbiAgICAoTHd0LmFkZF90YXNrX3IgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl0pIG0ud2FpdGVyc1xuICBlbHNlIGJlZ2luXG4gICAgbS5sb2NrZWQgPC0gdHJ1ZTtcbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgZW5kXG5cbmxldCB1bmxvY2sgbSA9XG4gIGlmIG0ubG9ja2VkIHRoZW4gYmVnaW5cbiAgICBpZiBMd3Rfc2VxdWVuY2UuaXNfZW1wdHkgbS53YWl0ZXJzIHRoZW5cbiAgICAgIG0ubG9ja2VkIDwtIGZhbHNlXG4gICAgZWxzZVxuICAgICAgKCogV2UgZG8gbm90IHVzZSBbTHd0Lndha2V1cF0gaGVyZSB0byBhdm9pZCBhIHN0YWNrIG92ZXJmbG93XG4gICAgICAgICB3aGVuIHVubG9ja2luZyBhIGxvdCBvZiB0aHJlYWRzLiAqKVxuICAgICAgTHd0Lndha2V1cF9sYXRlciAoTHd0X3NlcXVlbmNlLnRha2VfbCBtLndhaXRlcnMpICgpXG4gIGVuZFxuXG5sZXQgd2l0aF9sb2NrIG0gZiA9XG4gIGxvY2sgbSA+Pj0gZnVuICgpIC0+XG4gIEx3dC5maW5hbGl6ZSBmIChmdW4gKCkgLT4gdW5sb2NrIG07IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IGlzX2xvY2tlZCBtID0gbS5sb2NrZWRcbmxldCBpc19lbXB0eSBtID0gTHd0X3NlcXVlbmNlLmlzX2VtcHR5IG0ud2FpdGVyc1xuIiwiKCogT0NhbWwgcHJvbWlzZSBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2x3dFxuICogQ29weXJpZ2h0IChjKSAyMDA5LCBNZXRhd2ViIFRlY2hub2xvZ2llcywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICogYXJlIG1ldDpcbiAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlXG4gKiAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xuICogICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkXG4gKiAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBNRVRBV0VCIFRFQ0hOT0xPR0lFUyBgYEFTIElTJycgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUlxuICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTUVUQVdFQiBURUNITk9MT0dJRVMgQkVcbiAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1JcbiAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GXG4gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1JcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLFxuICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0VcbiAqIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU5cbiAqIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICopXG5cbigqIFtMd3Rfc2VxdWVuY2VdIGlzIGRlcHJlY2F0ZWQg4oCTIHdlIGRvbid0IHdhbnQgdXNlcnMgb3V0c2lkZSBMd3QgdXNpbmcgaXQuXG4gICBIb3dldmVyLCBpdCBpcyBzdGlsbCB1c2VkIGludGVybmFsbHkgYnkgTHd0LiBTbywgYnJpZWZseSBkaXNhYmxlIHdhcm5pbmcgM1xuICAgKFwiZGVwcmVjYXRlZFwiKSwgYW5kIGNyZWF0ZSBhIGxvY2FsLCBub24tZGVwcmVjYXRlZCBhbGlhcyBmb3JcbiAgIFtMd3Rfc2VxdWVuY2VdIHRoYXQgY2FuIGJlIHJlZmVycmVkIHRvIGJ5IHRoZSByZXN0IG9mIHRoZSBjb2RlIGluIHRoaXNcbiAgIG1vZHVsZSB3aXRob3V0IHRyaWdnZXJpbmcgYW55IG1vcmUgd2FybmluZ3MuICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5tb2R1bGUgTHd0X3NlcXVlbmNlID0gTHd0X3NlcXVlbmNlXG5bQEBAb2NhbWwud2FybmluZyBcIiszXCJdXG5cbnR5cGUgJ2EgdCA9ICdhIEx3dC51IEx3dF9zZXF1ZW5jZS50XG5cbmxldCBjcmVhdGUgPSBMd3Rfc2VxdWVuY2UuY3JlYXRlXG5cbmxldCB3YWl0ID9tdXRleCBjdmFyID1cbiAgbGV0IHdhaXRlciA9IChMd3QuYWRkX3Rhc2tfciBbQG9jYW1sLndhcm5pbmcgXCItM1wiXSkgY3ZhciBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIG11dGV4IHdpdGhcbiAgICB8IFNvbWUgbSAtPiBMd3RfbXV0ZXgudW5sb2NrIG1cbiAgICB8IE5vbmUgLT4gKClcbiAgaW5cbiAgTHd0LmZpbmFsaXplXG4gICAgKGZ1biAoKSAtPiB3YWl0ZXIpXG4gICAgKGZ1biAoKSAtPlxuICAgICAgIG1hdGNoIG11dGV4IHdpdGhcbiAgICAgICB8IFNvbWUgbSAtPiBMd3RfbXV0ZXgubG9jayBtXG4gICAgICAgfCBOb25lIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNpZ25hbCBjdmFyIGFyZyA9XG4gIHRyeVxuICAgIEx3dC53YWtldXBfbGF0ZXIgKEx3dF9zZXF1ZW5jZS50YWtlX2wgY3ZhcikgYXJnXG4gIHdpdGggTHd0X3NlcXVlbmNlLkVtcHR5IC0+XG4gICAgKClcblxubGV0IGJyb2FkY2FzdCBjdmFyIGFyZyA9XG4gIGxldCB3YWtlbmVycyA9IEx3dF9zZXF1ZW5jZS5mb2xkX3IgKGZ1biB4IGwgLT4geCA6OiBsKSBjdmFyIFtdIGluXG4gIEx3dF9zZXF1ZW5jZS5pdGVyX25vZGVfbCBMd3Rfc2VxdWVuY2UucmVtb3ZlIGN2YXI7XG4gIExpc3QuaXRlciAoZnVuIHdha2VuZXIgLT4gTHd0Lndha2V1cF9sYXRlciB3YWtlbmVyIGFyZykgd2FrZW5lcnNcblxubGV0IGJyb2FkY2FzdF9leG4gY3ZhciBleG4gPVxuICBsZXQgd2FrZW5lcnMgPSBMd3Rfc2VxdWVuY2UuZm9sZF9yIChmdW4geCBsIC0+IHggOjogbCkgY3ZhciBbXSBpblxuICBMd3Rfc2VxdWVuY2UuaXRlcl9ub2RlX2wgTHd0X3NlcXVlbmNlLnJlbW92ZSBjdmFyO1xuICBMaXN0Lml0ZXIgKGZ1biB3YWtlbmVyIC0+IEx3dC53YWtldXBfbGF0ZXJfZXhuIHdha2VuZXIgZXhuKSB3YWtlbmVyc1xuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlICdhIGV2ZW50ID0gJ2EgUmVhY3QuZXZlbnRcbnR5cGUgJ2Egc2lnbmFsID0gJ2EgUmVhY3Quc2lnbmFsXG5cbm1vZHVsZSBFID0gc3RydWN0XG4gIGluY2x1ZGUgUmVhY3QuRVxuXG4gICgqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgIHwgTHd0LXNwZWNpZmljIHV0aWxpdGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbiAgbGV0IGZpbmFsaXNlIGYgXyA9IGYgKClcblxuICBsZXQgd2l0aF9maW5hbGlzZXIgZiBldmVudCA9XG4gICAgbGV0IHIgPSByZWYgKCkgaW5cbiAgICBHYy5maW5hbGlzZSAoZmluYWxpc2UgZikgcjtcbiAgICBtYXAgKGZ1biB4IC0+IGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSByKTsgeCkgZXZlbnRcblxuICBsZXQgbmV4dCBldiA9XG4gICAgbGV0IHdhaXRlciwgd2FrZW5lciA9IEx3dC50YXNrICgpIGluXG4gICAgbGV0IGV2ID0gbWFwIChmdW4geCAtPiBMd3Qud2FrZXVwIHdha2VuZXIgeCkgKG9uY2UgZXYpIGluXG4gICAgTHd0Lm9uX2NhbmNlbCB3YWl0ZXIgKGZ1biAoKSAtPiBzdG9wIGV2KTtcbiAgICB3YWl0ZXJcblxuICBsZXQgbGltaXQgZiBlID1cbiAgICAoKiBUaHJlYWQgd2hpY2ggcHJldmVudHMgW2VdIGZyb20gb2NjdXJyaW5nIHdoaWxlIGl0IGlzIHNsZWVwaW5nICopXG4gICAgbGV0IGxpbWl0ZXIgPSByZWYgTHd0LnJldHVybl91bml0IGluXG5cbiAgICAoKiBUaGUgb2NjdXJyZW5jZSB0aGF0IGlzIGRlbGF5ZWQgdW50aWwgdGhlIGxpbWl0ZXIgcmV0dXJucy4gKilcbiAgICBsZXQgZGVsYXllZCA9IHJlZiBOb25lIGluXG5cbiAgICAoKiBUaGUgcmVzdWx0aW5nIGV2ZW50LiAqKVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgaWYgTHd0LmlzX3NsZWVwaW5nICFsaW1pdGVyIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAoKiBUaGUgbGltaXRlciBpcyBzbGVlcGluZywgd2UgcXVldWUgdGhlIGV2ZW50IGZvciBsYXRlclxuICAgICAgICAgICAgICAgIGRlbGl2ZXJpbmcuICopXG4gICAgICAgICAgICAgbWF0Y2ggIWRlbGF5ZWQgd2l0aFxuICAgICAgICAgICAgIHwgU29tZSBjZWxsIC0+XG4gICAgICAgICAgICAgICAoKiBBbiBvY2N1cnJlbmNlIGlzIGFscmVhZHkgcXVldWVkLCByZXBsYWNlIGl0LiAqKVxuICAgICAgICAgICAgICAgY2VsbCA6PSB4O1xuICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgbGV0IGNlbGwgPSByZWYgeCBpblxuICAgICAgICAgICAgICAgZGVsYXllZCA6PSBTb21lIGNlbGw7XG4gICAgICAgICAgICAgICBMd3Qub25fc3VjY2VzcyAhbGltaXRlciAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBMd3QuaXNfc2xlZXBpbmcgIWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICBkZWxheWVkIDo9IE5vbmVcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSAhY2VsbCBpblxuICAgICAgICAgICAgICAgICAgICBkZWxheWVkIDo9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgIGxpbWl0ZXIgOj0gZiAoKTtcbiAgICAgICAgICAgICAgICAgICAgcHVzaCB4KTtcbiAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAoKiBTZXQgdGhlIGxpbWl0ZXIgZm9yIGZ1dHVyZSBldmVudHMuICopXG4gICAgICAgICAgICAgbGltaXRlciA6PSBmICgpO1xuICAgICAgICAgICAgICgqIFNlbmQgdGhlIG9jY3VycmVuY2Ugbm93LiAqKVxuICAgICAgICAgICAgIHB1c2ggeDtcbiAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgIGVuZClcbiAgICAgICAgZVxuICAgIGluXG5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBjYW5jZWxfdGhyZWFkIHQgKCkgPVxuICAgIEx3dC5jYW5jZWwgdFxuXG4gIGxldCBmcm9tIGYgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICBmICgpID4+PSBmdW4geCAtPlxuICAgICAgcHVzaCB4O1xuICAgICAgbG9vcCAoKVxuICAgIGluXG4gICAgbGV0IHQgPSBMd3QucGF1c2UgKCkgPj49IGxvb3AgaW5cbiAgICB3aXRoX2ZpbmFsaXNlciAoY2FuY2VsX3RocmVhZCB0KSBldmVudFxuXG4gIGxldCB0b19zdHJlYW0gZXZlbnQgPVxuICAgIGxldCBzdHJlYW0sIHB1c2gsIHNldF9yZWYgPSBMd3Rfc3RyZWFtLmNyZWF0ZV93aXRoX3JlZmVyZW5jZSAoKSBpblxuICAgIHNldF9yZWYgKG1hcCAoZnVuIHggLT4gcHVzaCAoU29tZSB4KSkgZXZlbnQpO1xuICAgIHN0cmVhbVxuXG4gIGxldCBvZl9zdHJlYW0gc3RyZWFtID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgdCA9XG4gICAgICBMd3QucGF1c2UgKCkgPj49IGZ1biAoKSAtPlxuICAgICAgTHd0X3N0cmVhbS5pdGVyIChmdW4gdiAtPiB0cnkgcHVzaCB2IHdpdGggZXhuIC0+ICFMd3QuYXN5bmNfZXhjZXB0aW9uX2hvb2sgZXhuKSBzdHJlYW0gaW5cbiAgICB3aXRoX2ZpbmFsaXNlciAoY2FuY2VsX3RocmVhZCB0KSBldmVudFxuXG4gIGxldCBkZWxheSB0aHJlYWQgPVxuICAgIG1hdGNoIEx3dC5wb2xsIHRocmVhZCB3aXRoXG4gICAgfCBTb21lIGUgLT5cbiAgICAgIGVcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBldmVudCwgc2VuZCA9IGNyZWF0ZSAoKSBpblxuICAgICAgTHd0Lm9uX3N1Y2Nlc3MgdGhyZWFkIChmdW4gZSAtPiBzZW5kIGU7IHN0b3AgZXZlbnQpO1xuICAgICAgc3dpdGNoIG5ldmVyIGV2ZW50XG5cbiAgbGV0IGtlZXBlZCA9IHJlZiBbXVxuXG4gIGxldCBrZWVwIGUgPVxuICAgIGtlZXBlZCA6PSBtYXAgaWdub3JlIGUgOjogIWtlZXBlZFxuXG4gICgqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgIHwgRXZlbnQgdHJhbnNmb3JtYXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbiAgbGV0IHJ1bl9wIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIHQgLT4gTHd0Lm9uX3N1Y2Nlc3MgdCAoZnVuIHYgLT4gcHVzaCB2KTsgTm9uZSkgZSBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IHJ1bl9zIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4gdCAtPlxuICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gdCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpIGVcbiAgICBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IG1hcF9wIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoZiB4KSAoZnVuIHYgLT4gcHVzaCB2KTsgTm9uZSkgZSBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IG1hcF9zIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIGZtYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKSBlXG4gICAgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBhcHBfcCBlZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4gKGYsIHgpIC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzIChmIHgpIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoYXBwIChtYXAgKGZ1biBmIHggLT4gKGYsIHgpKSBlZikgZSlcbiAgICBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGFwcF9zIGVmIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4gKGYsIHgpIC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoYXBwIChtYXAgKGZ1biBmIHggLT4gKGYsIHgpKSBlZikgZSlcbiAgICBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGZpbHRlcl9wIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoZiB4KSAoZnVuY3Rpb24gdHJ1ZSAtPiBwdXNoIHggfCBmYWxzZSAtPiAoKSk7IE5vbmUpIGUgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBmaWx0ZXJfcyBmIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IGZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSkgKGZ1bmN0aW9uIHRydWUgLT4gcHVzaCB4IHwgZmFsc2UgLT4gKCkpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgZm1hcF9wIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoZiB4KSAoZnVuY3Rpb24gU29tZSB4IC0+IHB1c2ggeCB8IE5vbmUgLT4gKCkpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgZm1hcF9zIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIHggLT4gTHd0Lm9uX3N1Y2Nlc3MgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKSAoZnVuY3Rpb24gU29tZSB4IC0+IHB1c2ggeCB8IE5vbmUgLT4gKCkpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgZGlmZl9zIGYgZSA9XG4gICAgbGV0IHByZXZpb3VzID0gcmVmIE5vbmUgaW5cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgbWF0Y2ggIXByZXZpb3VzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgcHJldmlvdXMgOj0gU29tZSB4O1xuICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgfCBTb21lIHkgLT5cbiAgICAgICAgICAgICBwcmV2aW91cyA6PSBTb21lIHg7XG4gICAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4IHkpKVxuICAgICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgZVxuICAgIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgYWNjdW1fcyBlZiBhY2MgPVxuICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIGYgLT4gTHd0Lm9uX3N1Y2Nlc3MgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmICFhY2MpKSAoZnVuIHggLT4gYWNjIDo9IHg7IHB1c2ggeCk7IE5vbmUpIGVmIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgZm9sZF9zIGYgYWNjIGUgPVxuICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIHggLT4gTHd0Lm9uX3N1Y2Nlc3MgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmICFhY2MgeCkpIChmdW4geCAtPiBhY2MgOj0geDsgcHVzaCB4KTsgTm9uZSkgZSBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IHJlYyByZXZfZm9sZCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgTHd0LnJldHVybiBhY2NcbiAgICB8IHggOjogbCAtPlxuICAgICAgcmV2X2ZvbGQgZiBhY2MgbCA+Pj0gZnVuIGFjYyAtPlxuICAgICAgZiBhY2MgeFxuXG4gIGxldCBtZXJnZV9zIGYgYWNjIGVsID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgZm1hcFxuICAgICAgICAoZnVuIGwgLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IHJldl9mb2xkIGYgYWNjIGwpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAobWVyZ2UgKGZ1biBhY2MgeCAtPiB4IDo6IGFjYykgW10gZWwpXG4gICAgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuZW5kXG5cbm1vZHVsZSBTID0gc3RydWN0XG4gIGluY2x1ZGUgUmVhY3QuU1xuXG4gICgqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgIHwgTHd0LXNwZWNpZmljIHV0aWxpdGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbiAgbGV0IGZpbmFsaXNlIGYgXyA9IGYgKClcblxuICBsZXQgd2l0aF9maW5hbGlzZXIgZiBzaWduYWwgPVxuICAgIGxldCByID0gcmVmICgpIGluXG4gICAgR2MuZmluYWxpc2UgKGZpbmFsaXNlIGYpIHI7XG4gICAgbWFwXG4gICAgICAoZnVuIHggLT4gaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IHIpOyB4KVxuICAgICAgc2lnbmFsXG5cbiAgbGV0IGxpbWl0ID9lcSBmIHMgPVxuICAgICgqIFRocmVhZCB3aGljaCBwcmV2ZW50IFtzXSB0byBjaGFuZ2VzIHdoaWxlIGl0IGlzIHNsZWVwaW5nICopXG4gICAgbGV0IGxpbWl0ZXIgPSByZWYgKGYgKCkpIGluXG5cbiAgICAoKiBUaGUgb2NjdXJyZW5jZSB0aGF0IGlzIGRlbGF5ZWQgdW50aWwgdGhlIGxpbWl0ZXIgcmV0dXJucy4gKilcbiAgICBsZXQgZGVsYXllZCA9IHJlZiBOb25lIGluXG5cbiAgICAoKiBUaGUgcmVzdWx0aW5nIGV2ZW50LiAqKVxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgIGlmIEx3dC5pc19zbGVlcGluZyAhbGltaXRlciB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgKCogVGhlIGxpbWl0ZXIgaXMgc2xlZXBpbmcsIHdlIHF1ZXVlIHRoZSBldmVudCBmb3IgbGF0ZXJcbiAgICAgICAgICAgICAgICBkZWxpdmVyaW5nLiAqKVxuICAgICAgICAgICAgIG1hdGNoICFkZWxheWVkIHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgY2VsbCAtPlxuICAgICAgICAgICAgICAgKCogQW4gb2NjdXJyZW5jZSBpcyBhbHJlYWR5IHF1ZXVlZCwgcmVwbGFjZSBpdC4gKilcbiAgICAgICAgICAgICAgIGNlbGwgOj0geDtcbiAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgIGxldCBjZWxsID0gcmVmIHggaW5cbiAgICAgICAgICAgICAgIGRlbGF5ZWQgOj0gU29tZSBjZWxsO1xuICAgICAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3MgIWxpbWl0ZXIgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgIGlmIEx3dC5pc19zbGVlcGluZyAhbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICBkZWxheWVkIDo9IE5vbmVcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBsZXQgeCA9ICFjZWxsIGluXG4gICAgICAgICAgICAgICAgICBkZWxheWVkIDo9IE5vbmU7XG4gICAgICAgICAgICAgICAgICBsaW1pdGVyIDo9IGYgKCk7XG4gICAgICAgICAgICAgICAgICBwdXNoIHgpO1xuICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICgqIFNldCB0aGUgbGltaXRlciBmb3IgZnV0dXJlIGV2ZW50cy4gKilcbiAgICAgICAgICAgICBsaW1pdGVyIDo9IGYgKCk7XG4gICAgICAgICAgICAgKCogU2VuZCB0aGUgb2NjdXJyZW5jZSBub3cuICopXG4gICAgICAgICAgICAgcHVzaCB4O1xuICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgZW5kKVxuICAgICAgICAoY2hhbmdlcyBzKVxuICAgIGluXG5cbiAgICBob2xkID9lcSAodmFsdWUgcykgKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pXG5cbiAgbGV0IGtlZXBlZCA9IHJlZiBbXVxuXG4gIGxldCBrZWVwIHMgPVxuICAgIGtlZXBlZCA6PSBtYXAgaWdub3JlIHMgOjogIWtlZXBlZFxuXG4gICgqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgIHwgU2lnbmFsIHRyYW5zZm9ybWF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbiAgbGV0IHJ1bl9zID9lcSBzID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biB0IC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiB0KSlcbiAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAgKGNoYW5nZXMgcylcbiAgICBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiB2YWx1ZSBzKSA+Pj0gZnVuIHggLT5cbiAgICBMd3QucmV0dXJuIChob2xkID9lcSB4IChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcblxuICBsZXQgbWFwX3MgP2VxIGYgcyA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgRS5mbWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSkgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChjaGFuZ2VzIHMpXG4gICAgaW5cbiAgICBMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiAodmFsdWUgcykpID4+PSBmdW4geCAtPlxuICAgIEx3dC5yZXR1cm4gKGhvbGQgP2VxIHggKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pKVxuXG4gIGxldCBhcHBfcyA/ZXEgc2YgcyA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgRS5mbWFwXG4gICAgICAgIChmdW4gKGYsIHgpIC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoRS5hcHAgKEUubWFwIChmdW4gZiB4IC0+IChmLCB4KSkgKGNoYW5nZXMgc2YpKSAoY2hhbmdlcyBzKSlcbiAgICBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiAodmFsdWUgc2YpICh2YWx1ZSBzKSkgPj49IGZ1biB4IC0+XG4gICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG5cbiAgbGV0IGZpbHRlcl9zID9lcSBmIGkgcyA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBFLmZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSkgKGZ1bmN0aW9uIHRydWUgLT4gcHVzaCB4IHwgZmFsc2UgLT4gKCkpOyBOb25lKSAoY2hhbmdlcyBzKSBpblxuICAgIGxldCB4ID0gdmFsdWUgcyBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpID4+PSBmdW5jdGlvblxuICAgIHwgdHJ1ZSAtPlxuICAgICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG4gICAgfCBmYWxzZSAtPlxuICAgICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgaSAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG5cbiAgbGV0IGZtYXBfcyA/ZXEgZiBpIHMgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gRS5mbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpIChmdW5jdGlvbiBTb21lIHggLT4gcHVzaCB4IHwgTm9uZSAtPiAoKSk7IE5vbmUpIChjaGFuZ2VzIHMpIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgKHZhbHVlIHMpKSA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPlxuICAgICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChob2xkID9lcSBpIChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcblxuICBsZXQgZGlmZl9zIGYgcyA9XG4gICAgbGV0IHByZXZpb3VzID0gcmVmICh2YWx1ZSBzKSBpblxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIEUuZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgbGV0IHkgPSAhcHJldmlvdXMgaW5cbiAgICAgICAgICAgcHJldmlvdXMgOj0geDtcbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCB5KSlcbiAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAgKGNoYW5nZXMgcylcbiAgICBpblxuICAgIEUuc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgc2FtcGxlX3MgZiBlIHMgPVxuICAgIEUubWFwX3MgKGZ1biB4IC0+IGYgeCAodmFsdWUgcykpIGVcblxuICBsZXQgYWNjdW1fcyA/ZXEgZWYgaSA9XG4gICAgaG9sZCA/ZXEgaSAoRS5hY2N1bV9zIGVmIGkpXG5cbiAgbGV0IGZvbGRfcyA/ZXEgZiBpIGUgPVxuICAgIGhvbGQgP2VxIGkgKEUuZm9sZF9zIGYgaSBlKVxuXG4gIGxldCByZWMgcmV2X2ZvbGQgZiBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIEx3dC5yZXR1cm4gYWNjXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIHJldl9mb2xkIGYgYWNjIGwgPj49IGZ1biBhY2MgLT5cbiAgICAgIGYgYWNjIHhcblxuICBsZXQgbWVyZ2VfcyA/ZXEgZiBhY2Mgc2wgPVxuICAgIGxldCBzID0gbWVyZ2UgKGZ1biBhY2MgeCAtPiB4IDo6IGFjYykgW10gc2wgaW5cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biBsIC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiByZXZfZm9sZCBmIGFjYyBsKSlcbiAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAgKGNoYW5nZXMgcylcbiAgICBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiByZXZfZm9sZCBmIGFjYyAodmFsdWUgcykpID4+PSBmdW4geCAtPlxuICAgIEx3dC5yZXR1cm4gKGhvbGQgP2VxIHggKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pKVxuXG4gIGxldCBsMV9zID9lcSBmIHMxID1cbiAgICBtYXBfcyA/ZXEgZiBzMVxuXG4gIGxldCBsMl9zID9lcSBmIHMxIHMyID1cbiAgICAoKiBTb21lIGRldGFpbHMgYWJvdXQgdGhlIHVzZSBvZiBbZnVuIF8gXyAtPiBmYWxzZV0gb25cbiAgICAgICBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvcHVsbC84OTMjcHVsbHJlcXVlc3RyZXZpZXctNzgzMDgzNDk2ICopXG4gICAgbWFwX3MgP2VxIChmdW4gKHgxLCB4MikgLT4gZiB4MSB4MikgKGwyIH5lcTooZnVuIF8gXyAtPiBmYWxzZSkgKGZ1biB4MSB4MiAtPiAoeDEsIHgyKSkgczEgczIpXG5cbiAgbGV0IGwzX3MgP2VxIGYgczEgczIgczMgPVxuICAgIG1hcF9zID9lcSAoZnVuICh4MSwgeDIsIHgzKSAtPiBmIHgxIHgyIHgzKSAobDMgfmVxOihmdW4gXyBfIC0+IGZhbHNlKSAoZnVuIHgxIHgyIHgzLT4gKHgxLCB4MiwgeDMpKSBzMSBzMiBzMylcblxuICBsZXQgbDRfcyA/ZXEgZiBzMSBzMiBzMyBzNCA9XG4gICAgbWFwX3MgP2VxIChmdW4gKHgxLCB4MiwgeDMsIHg0KSAtPiBmIHgxIHgyIHgzIHg0KSAobDQgfmVxOihmdW4gXyBfIC0+IGZhbHNlKSAoZnVuIHgxIHgyIHgzIHg0LT4gKHgxLCB4MiwgeDMsIHg0KSkgczEgczIgczMgczQpXG5cbiAgbGV0IGw1X3MgP2VxIGYgczEgczIgczMgczQgczUgPVxuICAgIG1hcF9zID9lcSAoZnVuICh4MSwgeDIsIHgzLCB4NCwgeDUpIC0+IGYgeDEgeDIgeDMgeDQgeDUpIChsNSB+ZXE6KGZ1biBfIF8gLT4gZmFsc2UpIChmdW4geDEgeDIgeDMgeDQgeDUtPiAoeDEsIHgyLCB4MywgeDQsIHg1KSkgczEgczIgczMgczQgczUpXG5cbiAgbGV0IGw2X3MgP2VxIGYgczEgczIgczMgczQgczUgczYgPVxuICAgIG1hcF9zID9lcSAoZnVuICh4MSwgeDIsIHgzLCB4NCwgeDUsIHg2KSAtPiBmIHgxIHgyIHgzIHg0IHg1IHg2KSAobDYgfmVxOihmdW4gXyBfIC0+IGZhbHNlKSAoZnVuIHgxIHgyIHgzIHg0IHg1IHg2LT4gKHgxLCB4MiwgeDMsIHg0LCB4NSwgeDYpKSBzMSBzMiBzMyBzNCBzNSBzNilcblxuICAoKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgICB8IE1vbmFkaWMgaW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG4gIGxldCByZXR1cm4gPVxuICAgIGNvbnN0XG5cbiAgbGV0IGJpbmRfcyA/ZXEgcyBmID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoY2hhbmdlcyBzKVxuICAgIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgKHZhbHVlIHMpKSA+Pj0gZnVuIHggLT5cbiAgICBMd3QucmV0dXJuIChzd2l0Y2ggP2VxIChob2xkIH5lcTooID09ICkgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpKVxuZW5kXG4iLCIoKiBnZW5lcmF0ZWQgYnkgZHVuZSAqKVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF9sd3QuSW1wb3J0ICopXG5tb2R1bGUgSW1wb3J0ID0gSnNfb2Zfb2NhbWxfbHd0X19JbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9maWxlICopXG5tb2R1bGUgTHd0X2ZpbGUgPSBKc19vZl9vY2FtbF9sd3RfX0x3dF9maWxlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX2x3dC5Md3RfanMgKilcbm1vZHVsZSBMd3RfanMgPSBKc19vZl9vY2FtbF9sd3RfX0x3dF9qc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF9sd3QuTHd0X2pzX2V2ZW50cyAqKVxubW9kdWxlIEx3dF9qc19ldmVudHMgPSBKc19vZl9vY2FtbF9sd3RfX0x3dF9qc19ldmVudHNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qc29ucCAqKVxubW9kdWxlIEx3dF9qc29ucCA9IEpzX29mX29jYW1sX2x3dF9fTHd0X2pzb25wXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX2x3dC5Md3RfeG1sSHR0cFJlcXVlc3QgKilcbm1vZHVsZSBMd3RfeG1sSHR0cFJlcXVlc3QgPSBKc19vZl9vY2FtbF9sd3RfX0x3dF94bWxIdHRwUmVxdWVzdFxuXG5tb2R1bGUgSnNfb2Zfb2NhbWxfbHd0X18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIigqIEpzX29mX29jYW1sXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5lbmRcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogaW50KSB5ID0geCA8IHlcblxuICBsZXQgKCA8PSApICh4IDogaW50KSB5ID0geCA8PSB5XG5cbiAgbGV0ICggPD4gKSAoeCA6IGludCkgeSA9IHggPD4geVxuXG4gIGxldCAoID0gKSAoeCA6IGludCkgeSA9IHggPSB5XG5cbiAgbGV0ICggPiApICh4IDogaW50KSB5ID0geCA+IHlcblxuICBsZXQgKCA+PSApICh4IDogaW50KSB5ID0geCA+PSB5XG5cbiAgbGV0IGNvbXBhcmUgKHggOiBpbnQpIHkgPSBjb21wYXJlIHggeVxuXG4gIGxldCBlcXVhbCAoeCA6IGludCkgeSA9IHggPSB5XG5cbiAgbGV0IG1heCAoeCA6IGludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCBlcXVhbCAoeCA6IHN0cmluZykgKHkgOiBzdHJpbmcpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5tb2R1bGUgQ2hhciA9IHN0cnVjdFxuICBpbmNsdWRlIENoYXJcblxuICBsZXQgZXF1YWwgKHggOiBjaGFyKSAoeSA6IGNoYXIpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuIEpzXG5vcGVuIFhtbEh0dHBSZXF1ZXN0XG5vcGVuISBJbXBvcnRcblxubGV0IGVuY29kZV91cmwgbCA9XG4gIFN0cmluZy5jb25jYXRcbiAgICBcIiZcIlxuICAgIChMaXN0Lm1hcFxuICAgICAgIChmdW5jdGlvblxuICAgICAgICAgfCBuYW1lLCBgU3RyaW5nIHMgLT4gVXJsLnVybGVuY29kZSBuYW1lIF4gXCI9XCIgXiBVcmwudXJsZW5jb2RlICh0b19zdHJpbmcgcylcbiAgICAgICAgIHwgbmFtZSwgYEZpbGUgcyAtPiBVcmwudXJsZW5jb2RlIG5hbWUgXiBcIj1cIiBeIFVybC51cmxlbmNvZGUgKHRvX3N0cmluZyBzIyMubmFtZSkpXG4gICAgICAgbClcblxuKCogSGlnaGVyIGxldmVsIGludGVyZmFjZTogKilcblxudHlwZSAncmVzcG9uc2UgZ2VuZXJpY19odHRwX2ZyYW1lID1cbiAgeyB1cmwgOiBzdHJpbmdcbiAgOyBjb2RlIDogaW50XG4gIDsgaGVhZGVycyA6IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gIDsgY29udGVudCA6ICdyZXNwb25zZVxuICA7IGNvbnRlbnRfeG1sIDogdW5pdCAtPiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBvcHRpb25cbiAgfVxuKCoqIHR5cGUgb2YgdGhlIGh0dHAgaGVhZGVycyAqKVxuXG50eXBlIGh0dHBfZnJhbWUgPSBzdHJpbmcgZ2VuZXJpY19odHRwX2ZyYW1lXG5cbmV4Y2VwdGlvbiBXcm9uZ19oZWFkZXJzIG9mIChpbnQgKiAoc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pKVxuXG5sZXQgZGVmYXVsdF9yZXNwb25zZSB1cmwgY29kZSBoZWFkZXJzIHJlcSA9XG4gIHsgdXJsXG4gIDsgY29kZVxuICA7IGNvbnRlbnQgPSBKcy5PcHQuY2FzZSByZXEjIy5yZXNwb25zZVRleHQgKGZ1biAoKSAtPiBcIlwiKSAoZnVuIHggLT4gSnMudG9fc3RyaW5nIHgpXG4gIDsgY29udGVudF94bWwgPVxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICBtYXRjaCBKcy5PcHQudG9fb3B0aW9uIHJlcSMjLnJlc3BvbnNlWE1MIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGRvYyAtPiBpZiBKcy5zb21lIGRvYyMjLmRvY3VtZW50RWxlbWVudCA9PSBKcy5udWxsIHRoZW4gTm9uZSBlbHNlIFNvbWUgZG9jKVxuICA7IGhlYWRlcnNcbiAgfVxuXG5sZXQgdGV4dF9yZXNwb25zZSB1cmwgY29kZSBoZWFkZXJzIHJlcSA9XG4gIHsgdXJsXG4gIDsgY29kZVxuICA7IGNvbnRlbnQgPSBKcy5PcHQuY2FzZSByZXEjIy5yZXNwb25zZVRleHQgKGZ1biAoKSAtPiBKcy5zdHJpbmcgXCJcIikgKGZ1biB4IC0+IHgpXG4gIDsgY29udGVudF94bWwgPSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgOyBoZWFkZXJzXG4gIH1cblxubGV0IGRvY3VtZW50X3Jlc3BvbnNlIHVybCBjb2RlIGhlYWRlcnMgcmVxID1cbiAgeyB1cmxcbiAgOyBjb2RlXG4gIDsgY29udGVudCA9IEZpbGUuQ29lcmNlVG8uZG9jdW1lbnQgcmVxIyMucmVzcG9uc2VcbiAgOyBjb250ZW50X3htbCA9IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICA7IGhlYWRlcnNcbiAgfVxuXG5sZXQganNvbl9yZXNwb25zZSB1cmwgY29kZSBoZWFkZXJzIHJlcSA9XG4gIHsgdXJsXG4gIDsgY29kZVxuICA7IGNvbnRlbnQgPSBGaWxlLkNvZXJjZVRvLmpzb24gcmVxIyMucmVzcG9uc2VcbiAgOyBjb250ZW50X3htbCA9IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICA7IGhlYWRlcnNcbiAgfVxuXG5sZXQgYmxvYl9yZXNwb25zZSB1cmwgY29kZSBoZWFkZXJzIHJlcSA9XG4gIHsgdXJsXG4gIDsgY29kZVxuICA7IGNvbnRlbnQgPSBGaWxlLkNvZXJjZVRvLmJsb2IgcmVxIyMucmVzcG9uc2VcbiAgOyBjb250ZW50X3htbCA9IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICA7IGhlYWRlcnNcbiAgfVxuXG5sZXQgYXJyYXlidWZmZXJfcmVzcG9uc2UgdXJsIGNvZGUgaGVhZGVycyByZXEgPVxuICB7IHVybFxuICA7IGNvZGVcbiAgOyBjb250ZW50ID0gRmlsZS5Db2VyY2VUby5hcnJheUJ1ZmZlciByZXEjIy5yZXNwb25zZVxuICA7IGNvbnRlbnRfeG1sID0gKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gIDsgaGVhZGVyc1xuICB9XG5cbmxldCBoYXNfZ2V0X2FyZ3MgdXJsID1cbiAgdHJ5XG4gICAgaWdub3JlIChTdHJpbmcuaW5kZXggdXJsICc/Jyk7XG4gICAgdHJ1ZVxuICB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5sZXQgcGVyZm9ybV9yYXdcbiAgICA/KGhlYWRlcnMgPSBbXSlcbiAgICA/Y29udGVudF90eXBlXG4gICAgPyhnZXRfYXJncyA9IFtdKVxuICAgID8oY2hlY2tfaGVhZGVycyA9IGZ1biBfIF8gLT4gdHJ1ZSlcbiAgICA/cHJvZ3Jlc3NcbiAgICA/dXBsb2FkX3Byb2dyZXNzXG4gICAgP2NvbnRlbnRzXG4gICAgP292ZXJyaWRlX21pbWVfdHlwZVxuICAgID9vdmVycmlkZV9tZXRob2RcbiAgICA/d2l0aF9jcmVkZW50aWFsc1xuICAgICh0eXBlIHJlc3B0eXBlKVxuICAgIH4ocmVzcG9uc2VfdHlwZSA6IHJlc3B0eXBlIHJlc3BvbnNlKVxuICAgIHVybCA9XG4gIGxldCBjb250ZW50c19ub3JtYWxpemF0aW9uID0gZnVuY3Rpb25cbiAgICB8IGBQT1NUX2Zvcm0gYXJncyAtPlxuICAgICAgICBsZXQgb25seV9zdHJpbmdzID1cbiAgICAgICAgICBMaXN0LmZvcl9hbGxcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBfLCBgU3RyaW5nIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICBhcmdzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBmb3JtX2NvbnRlbnRzID1cbiAgICAgICAgICBpZiBvbmx5X3N0cmluZ3MgdGhlbiBgRmllbGRzIChyZWYgW10pIGVsc2UgRm9ybS5lbXB0eV9mb3JtX2NvbnRlbnRzICgpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QuaXRlciAoZnVuIChuYW1lLCB2YWx1ZSkgLT4gRm9ybS5hcHBlbmQgZm9ybV9jb250ZW50cyAobmFtZSwgdmFsdWUpKSBhcmdzO1xuICAgICAgICBgRm9ybV9jb250ZW50cyBmb3JtX2NvbnRlbnRzXG4gICAgfCAoYFN0cmluZyBfIHwgYEZvcm1fY29udGVudHMgXykgYXMgeCAtPiB4XG4gICAgfCBgQmxvYiBiIC0+IGBCbG9iIChiIDogI0ZpbGUuYmxvYiBKcy50IDo+IEZpbGUuYmxvYiBKcy50KVxuICBpblxuICBsZXQgY29udGVudHMgPVxuICAgIG1hdGNoIGNvbnRlbnRzIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBjIC0+IFNvbWUgKGNvbnRlbnRzX25vcm1hbGl6YXRpb24gYylcbiAgaW5cbiAgbGV0IG1ldGhvZF90b19zdHJpbmcgbSA9XG4gICAgbWF0Y2ggbSB3aXRoXG4gICAgfCBgR0VUIC0+IFwiR0VUXCJcbiAgICB8IGBQT1NUIC0+IFwiUE9TVFwiXG4gICAgfCBgSEVBRCAtPiBcIkhFQURcIlxuICAgIHwgYFBVVCAtPiBcIlBVVFwiXG4gICAgfCBgREVMRVRFIC0+IFwiREVMRVRFXCJcbiAgICB8IGBPUFRJT05TIC0+IFwiT1BUSU9OU1wiXG4gICAgfCBgUEFUQ0ggLT4gXCJQQVRDSFwiXG4gIGluXG4gIGxldCBtZXRob2RfLCBjb250ZW50X3R5cGUgPVxuICAgIGxldCBvdmVycmlkZV9tZXRob2QgbSA9XG4gICAgICBtYXRjaCBvdmVycmlkZV9tZXRob2Qgd2l0aFxuICAgICAgfCBOb25lIC0+IG1cbiAgICAgIHwgU29tZSB2IC0+IG1ldGhvZF90b19zdHJpbmcgdlxuICAgIGluXG4gICAgbGV0IG92ZXJyaWRlX2NvbnRlbnRfdHlwZSBjID1cbiAgICAgIG1hdGNoIGNvbnRlbnRfdHlwZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gU29tZSBjXG4gICAgICB8IFNvbWUgXyAtPiBjb250ZW50X3R5cGVcbiAgICBpblxuICAgIG1hdGNoIGNvbnRlbnRzIHdpdGhcbiAgICB8IE5vbmUgLT4gb3ZlcnJpZGVfbWV0aG9kIFwiR0VUXCIsIGNvbnRlbnRfdHlwZVxuICAgIHwgU29tZSAoYEZvcm1fY29udGVudHMgZm9ybSkgLT4gKFxuICAgICAgICBtYXRjaCBmb3JtIHdpdGhcbiAgICAgICAgfCBgRmllbGRzIF9zdHJpbmdzIC0+XG4gICAgICAgICAgICAoIG92ZXJyaWRlX21ldGhvZCBcIlBPU1RcIlxuICAgICAgICAgICAgLCBvdmVycmlkZV9jb250ZW50X3R5cGUgXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIiApXG4gICAgICAgIHwgYEZvcm1EYXRhIF8gLT4gb3ZlcnJpZGVfbWV0aG9kIFwiUE9TVFwiLCBjb250ZW50X3R5cGUpXG4gICAgfCBTb21lIChgU3RyaW5nIF8gfCBgQmxvYiBfKSAtPiBvdmVycmlkZV9tZXRob2QgXCJQT1NUXCIsIGNvbnRlbnRfdHlwZVxuICBpblxuICBsZXQgdXJsID1cbiAgICBpZiBQb2x5LihnZXRfYXJncyA9IFtdKVxuICAgIHRoZW4gdXJsXG4gICAgZWxzZSB1cmwgXiAoaWYgaGFzX2dldF9hcmdzIHVybCB0aGVuIFwiJlwiIGVsc2UgXCI/XCIpIF4gVXJsLmVuY29kZV9hcmd1bWVudHMgZ2V0X2FyZ3NcbiAgaW5cbiAgbGV0IChyZXMgOiByZXNwdHlwZSBnZW5lcmljX2h0dHBfZnJhbWUgTHd0LnQpLCB3ID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IHJlcSA9IGNyZWF0ZSAoKSBpblxuICByZXEjI19vcGVuIChKcy5zdHJpbmcgbWV0aG9kXykgKEpzLnN0cmluZyB1cmwpIEpzLl90cnVlO1xuICAobWF0Y2ggb3ZlcnJpZGVfbWltZV90eXBlIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBtaW1lX3R5cGUgLT4gcmVxIyNvdmVycmlkZU1pbWVUeXBlIChKcy5zdHJpbmcgbWltZV90eXBlKSk7XG4gIChtYXRjaCByZXNwb25zZV90eXBlIHdpdGhcbiAgfCBBcnJheUJ1ZmZlciAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiYXJyYXlidWZmZXJcIlxuICB8IEJsb2IgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImJsb2JcIlxuICB8IERvY3VtZW50IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJkb2N1bWVudFwiXG4gIHwgSlNPTiAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwianNvblwiXG4gIHwgVGV4dCAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwidGV4dFwiXG4gIHwgRGVmYXVsdCAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiXCIpO1xuICAobWF0Y2ggd2l0aF9jcmVkZW50aWFscyB3aXRoXG4gIHwgU29tZSBjIC0+IHJlcSMjLndpdGhDcmVkZW50aWFscyA6PSBKcy5ib29sIGNcbiAgfCBOb25lIC0+ICgpKTtcbiAgKG1hdGNoIGNvbnRlbnRfdHlwZSB3aXRoXG4gIHwgU29tZSBjb250ZW50X3R5cGUgLT5cbiAgICAgIHJlcSMjc2V0UmVxdWVzdEhlYWRlciAoSnMuc3RyaW5nIFwiQ29udGVudC10eXBlXCIpIChKcy5zdHJpbmcgY29udGVudF90eXBlKVxuICB8IF8gLT4gKCkpO1xuICBMaXN0Lml0ZXIgKGZ1biAobiwgdikgLT4gcmVxIyNzZXRSZXF1ZXN0SGVhZGVyIChKcy5zdHJpbmcgbikgKEpzLnN0cmluZyB2KSkgaGVhZGVycztcbiAgbGV0IGhlYWRlcnMgcyA9XG4gICAgT3B0LmNhc2VcbiAgICAgIChyZXEjI2dldFJlc3BvbnNlSGVhZGVyIChKcy5ieXRlc3RyaW5nIHMpKVxuICAgICAgKGZ1biAoKSAtPiBOb25lKVxuICAgICAgKGZ1biB2IC0+IFNvbWUgKEpzLnRvX3N0cmluZyB2KSlcbiAgaW5cbiAgbGV0IGRvX2NoZWNrX2hlYWRlcnMgPVxuICAgIGxldCBzdCA9IHJlZiBgTm90X3lldCBpblxuICAgIGZ1biAoKSAtPlxuICAgICAgaWYgUG9seS4oIXN0ID0gYE5vdF95ZXQpXG4gICAgICB0aGVuXG4gICAgICAgIGlmIGNoZWNrX2hlYWRlcnMgcmVxIyMuc3RhdHVzIGhlYWRlcnNcbiAgICAgICAgdGhlbiBzdCA6PSBgUGFzc2VkXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIEx3dC53YWtldXBfZXhuIHcgKFdyb25nX2hlYWRlcnMgKHJlcSMjLnN0YXR1cywgaGVhZGVycykpO1xuICAgICAgICAgIHN0IDo9IGBGYWlsZWQ7XG4gICAgICAgICAgcmVxIyNhYm9ydCk7XG4gICAgICBQb2x5Lighc3QgPD4gYEZhaWxlZClcbiAgaW5cbiAgcmVxIyMub25yZWFkeXN0YXRlY2hhbmdlIDo9XG4gICAgSnMud3JhcF9jYWxsYmFjayAoZnVuIF8gLT5cbiAgICAgICAgbWF0Y2ggcmVxIyMucmVhZHlTdGF0ZSB3aXRoXG4gICAgICAgICgqIElFIGRvZXNuJ3QgaGF2ZSB0aGUgc2FtZSBzZW1hbnRpY3MgZm9yIEhFQURFUlNfUkVDRUlWRUQuXG4gICAgICAgICAgICAgc28gd2Ugd2FpdCB0aWwgTE9BRElORyB0byBjaGVjayBoZWFkZXJzLiBTZWU6XG4gICAgICAgICAgICAgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNTM0MzYxKHY9dnMuODUpLmFzcHggKilcbiAgICAgICAgfCBIRUFERVJTX1JFQ0VJVkVEIHdoZW4gbm90IERvbV9odG1sLm9uSUUgLT4gaWdub3JlIChkb19jaGVja19oZWFkZXJzICgpKVxuICAgICAgICB8IExPQURJTkcgd2hlbiBEb21faHRtbC5vbklFIC0+IGlnbm9yZSAoZG9fY2hlY2tfaGVhZGVycyAoKSlcbiAgICAgICAgfCBET05FIC0+XG4gICAgICAgICAgICAoKiBJZiB3ZSBkaWRuJ3QgY2F0Y2ggYSBwcmV2aW91cyBldmVudCwgd2UgY2hlY2sgdGhlIGhlYWRlci4gKilcbiAgICAgICAgICAgIGlmIGRvX2NoZWNrX2hlYWRlcnMgKClcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlIDogcmVzcHR5cGUgZ2VuZXJpY19odHRwX2ZyYW1lID1cbiAgICAgICAgICAgICAgICBtYXRjaCByZXNwb25zZV90eXBlIHdpdGhcbiAgICAgICAgICAgICAgICB8IEFycmF5QnVmZmVyIC0+IGFycmF5YnVmZmVyX3Jlc3BvbnNlIHVybCByZXEjIy5zdGF0dXMgaGVhZGVycyByZXFcbiAgICAgICAgICAgICAgICB8IEJsb2IgLT4gYmxvYl9yZXNwb25zZSB1cmwgcmVxIyMuc3RhdHVzIGhlYWRlcnMgcmVxXG4gICAgICAgICAgICAgICAgfCBEb2N1bWVudCAtPiBkb2N1bWVudF9yZXNwb25zZSB1cmwgcmVxIyMuc3RhdHVzIGhlYWRlcnMgcmVxXG4gICAgICAgICAgICAgICAgfCBKU09OIC0+IGpzb25fcmVzcG9uc2UgdXJsIHJlcSMjLnN0YXR1cyBoZWFkZXJzIHJlcVxuICAgICAgICAgICAgICAgIHwgVGV4dCAtPiB0ZXh0X3Jlc3BvbnNlIHVybCByZXEjIy5zdGF0dXMgaGVhZGVycyByZXFcbiAgICAgICAgICAgICAgICB8IERlZmF1bHQgLT4gZGVmYXVsdF9yZXNwb25zZSB1cmwgcmVxIyMuc3RhdHVzIGhlYWRlcnMgcmVxXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEx3dC53YWtldXAgdyByZXNwb25zZVxuICAgICAgICB8IF8gLT4gKCkpO1xuICAobWF0Y2ggcHJvZ3Jlc3Mgd2l0aFxuICB8IFNvbWUgcHJvZ3Jlc3MgLT5cbiAgICAgIHJlcSMjLm9ucHJvZ3Jlc3MgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBlIC0+XG4gICAgICAgICAgICBwcm9ncmVzcyBlIyMubG9hZGVkIGUjIy50b3RhbDtcbiAgICAgICAgICAgIEpzLl90cnVlKVxuICB8IE5vbmUgLT4gKCkpO1xuICBPcHRkZWYuaXRlciByZXEjIy51cGxvYWQgKGZ1biB1cGxvYWQgLT5cbiAgICAgIG1hdGNoIHVwbG9hZF9wcm9ncmVzcyB3aXRoXG4gICAgICB8IFNvbWUgdXBsb2FkX3Byb2dyZXNzIC0+XG4gICAgICAgICAgdXBsb2FkIyMub25wcm9ncmVzcyA6PVxuICAgICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBlIC0+XG4gICAgICAgICAgICAgICAgdXBsb2FkX3Byb2dyZXNzIGUjIy5sb2FkZWQgZSMjLnRvdGFsO1xuICAgICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgfCBOb25lIC0+ICgpKTtcbiAgKG1hdGNoIGNvbnRlbnRzIHdpdGhcbiAgfCBOb25lIC0+IHJlcSMjc2VuZCBKcy5udWxsXG4gIHwgU29tZSAoYEZvcm1fY29udGVudHMgKGBGaWVsZHMgbCkpIC0+IHJlcSMjc2VuZCAoSnMuc29tZSAoc3RyaW5nIChlbmNvZGVfdXJsICFsKSkpXG4gIHwgU29tZSAoYEZvcm1fY29udGVudHMgKGBGb3JtRGF0YSBmKSkgLT4gcmVxIyNzZW5kX2Zvcm1EYXRhIGZcbiAgfCBTb21lIChgU3RyaW5nIHMpIC0+IHJlcSMjc2VuZCAoSnMuc29tZSAoSnMuc3RyaW5nIHMpKVxuICB8IFNvbWUgKGBCbG9iIGIpIC0+IHJlcSMjc2VuZF9ibG9iIGIpO1xuICBMd3Qub25fY2FuY2VsIHJlcyAoZnVuICgpIC0+IHJlcSMjYWJvcnQpO1xuICByZXNcblxubGV0IHBlcmZvcm1fcmF3X3VybFxuICAgID8oaGVhZGVycyA9IFtdKVxuICAgID9jb250ZW50X3R5cGVcbiAgICA/KGdldF9hcmdzID0gW10pXG4gICAgP2NoZWNrX2hlYWRlcnNcbiAgICA/cHJvZ3Jlc3NcbiAgICA/dXBsb2FkX3Byb2dyZXNzXG4gICAgP2NvbnRlbnRzXG4gICAgP292ZXJyaWRlX21pbWVfdHlwZVxuICAgID9vdmVycmlkZV9tZXRob2RcbiAgICA/d2l0aF9jcmVkZW50aWFsc1xuICAgIHVybCA9XG4gIHBlcmZvcm1fcmF3XG4gICAgfmhlYWRlcnNcbiAgICA/Y29udGVudF90eXBlXG4gICAgfmdldF9hcmdzXG4gICAgP2NvbnRlbnRzXG4gICAgP2NoZWNrX2hlYWRlcnNcbiAgICA/cHJvZ3Jlc3NcbiAgICA/dXBsb2FkX3Byb2dyZXNzXG4gICAgP292ZXJyaWRlX21pbWVfdHlwZVxuICAgID9vdmVycmlkZV9tZXRob2RcbiAgICA/d2l0aF9jcmVkZW50aWFsc1xuICAgIH5yZXNwb25zZV90eXBlOkRlZmF1bHRcbiAgICB1cmxcblxubGV0IHBlcmZvcm1cbiAgICA/KGhlYWRlcnMgPSBbXSlcbiAgICA/Y29udGVudF90eXBlXG4gICAgPyhnZXRfYXJncyA9IFtdKVxuICAgID9jaGVja19oZWFkZXJzXG4gICAgP3Byb2dyZXNzXG4gICAgP3VwbG9hZF9wcm9ncmVzc1xuICAgID9jb250ZW50c1xuICAgID9vdmVycmlkZV9taW1lX3R5cGVcbiAgICA/b3ZlcnJpZGVfbWV0aG9kXG4gICAgP3dpdGhfY3JlZGVudGlhbHNcbiAgICB1cmwgPVxuICBwZXJmb3JtX3Jhd1xuICAgIH5oZWFkZXJzXG4gICAgP2NvbnRlbnRfdHlwZVxuICAgIH5nZXRfYXJnc1xuICAgID9jb250ZW50c1xuICAgID9jaGVja19oZWFkZXJzXG4gICAgP3Byb2dyZXNzXG4gICAgP3VwbG9hZF9wcm9ncmVzc1xuICAgID9vdmVycmlkZV9taW1lX3R5cGVcbiAgICA/b3ZlcnJpZGVfbWV0aG9kXG4gICAgP3dpdGhfY3JlZGVudGlhbHNcbiAgICB+cmVzcG9uc2VfdHlwZTpEZWZhdWx0XG4gICAgKFVybC5zdHJpbmdfb2ZfdXJsIHVybClcblxubGV0IGdldCBzID0gcGVyZm9ybV9yYXdfdXJsIHNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuISBJbXBvcnRcblxubGV0IHNsZWVwIGQgPVxuICBsZXQgdCwgdyA9IEx3dC50YXNrICgpIGluXG4gIGxldCBpZCA9IERvbV9odG1sLnNldFRpbWVvdXQgKEx3dC53YWtldXAgdykgKGQgKi4gMTAwMC4pIGluXG4gIEx3dC5vbl9jYW5jZWwgdCAoZnVuICgpIC0+IERvbV9odG1sLmNsZWFyVGltZW91dCBpZCk7XG4gIHRcblxubGV0IHlpZWxkICgpID0gc2xlZXAgMC5cblxubGV0IHdha2V1cCA9IGZ1bmN0aW9uXG4gIHwgMSAtPlxuICAgICAgaWdub3JlXG4gICAgICAgIChEb21faHRtbC53aW5kb3cjI3NldFRpbWVvdXQgKEpzLndyYXBfY2FsbGJhY2sgTHd0Lndha2V1cF9wYXVzZWQpIChKcy5mbG9hdCAwLikpXG4gIHwgXyAtPiAoKVxuXG5sZXQgKCkgPSBMd3QucmVnaXN0ZXJfcGF1c2Vfbm90aWZpZXIgd2FrZXVwXG5cbmxldCBwcmVycl9zdHJpbmcgcyA9IEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgcylcblxubGV0IF8gPVxuICBMd3QuYXN5bmNfZXhjZXB0aW9uX2hvb2sgOj1cbiAgICBmdW4gZXhuIC0+XG4gICAgICBwcmVycl9zdHJpbmcgXCJFeGNlcHRpb24gZHVyaW5nIEx3dC5hc3luYzogXCI7XG4gICAgICBwcmVycl9zdHJpbmcgKFByaW50ZXhjLnRvX3N0cmluZyBleG4pO1xuICAgICAgUHJpbnRleGMucHJpbnRfYmFja3RyYWNlIHN0ZGVyclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc19vZl9vY2FtbFxub3BlbiEgSW1wb3J0XG5cbmxldCByZWMgcmFuZG9tX2lkZW50aWZpZXIgc2l6ZSA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSBzaXplIGluXG4gIGZvciBfaSA9IDAgdG8gc2l6ZSAtIDEgZG9cbiAgICBCdWZmZXIuYWRkX2NoYXIgYiAoQ2hhci5jaHIgKDk3ICsgUmFuZG9tLmludCAyNikpXG4gIGRvbmU7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGIgaW5cbiAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5nZXQgRG9tX2h0bWwud2luZG93IChKcy5zdHJpbmcgcykpXG4gIHRoZW4gKCogbmFtZSBhbHJlYWR5IGluIHVzZSwgY2hvb3NlIGFub3RoZXIgb25lKilcbiAgICByYW5kb21faWRlbnRpZmllciBzaXplXG4gIGVsc2Ugc1xuXG5sZXQgcmF3X2NhbGwgbmFtZSB1cmkgZXJyb3JfY2IgdXNlcl9jYiA9XG4gIGxldCBzY3JpcHQgPSBEb21faHRtbC4oY3JlYXRlU2NyaXB0IGRvY3VtZW50KSBpblxuICBsZXQgZmluYWxpemUgKCkgPVxuICAgIEpzLlVuc2FmZS5kZWxldGUgRG9tX2h0bWwud2luZG93IChKcy5zdHJpbmcgbmFtZSk7XG4gICAgSnMuT3B0Lml0ZXIgc2NyaXB0IyMucGFyZW50Tm9kZSAoZnVuIHBhcmVudCAtPiBEb20ucmVtb3ZlQ2hpbGQgcGFyZW50IHNjcmlwdClcbiAgaW5cbiAgbGV0IGV4ZWN1dGVkID0gcmVmIGZhbHNlIGluXG4gIEpzLlVuc2FmZS5zZXRcbiAgICBEb21faHRtbC53aW5kb3dcbiAgICAoSnMuc3RyaW5nIG5hbWUpXG4gICAgKEpzLndyYXBfY2FsbGJhY2sgKGZ1biB4IC0+XG4gICAgICAgICBleGVjdXRlZCA6PSB0cnVlO1xuICAgICAgICAgZmluYWxpemUgKCk7XG4gICAgICAgICB1c2VyX2NiIHgpKTtcbiAgc2NyaXB0IyMuc3JjIDo9IEpzLnN0cmluZyB1cmk7XG4gIHNjcmlwdCMjLl90eXBlIDo9IEpzLnN0cmluZyBcInRleHQvamF2YXNjcmlwdFwiO1xuICBzY3JpcHQjIy5hc3luYyA6PSBKcy5fdHJ1ZTtcbiAgKChKcy5VbnNhZmUuY29lcmNlIHNjcmlwdCkjIy5vbmVycm9yXG4gIDo9IGZ1biB4IC0+XG4gIGZpbmFsaXplICgpO1xuICBlcnJvcl9jYiB4KTtcbiAgKChKcy5VbnNhZmUuY29lcmNlIHNjcmlwdCkjIy5vbmxvYWRcbiAgOj0gZnVuIHggLT5cbiAgTHd0LmFzeW5jIChmdW4gKCkgLT5cbiAgICAgIEx3dC5iaW5kIChMd3RfanMuc2xlZXAgMS4pIChmdW4gKCkgLT5cbiAgICAgICAgICBpZiAhZXhlY3V0ZWRcbiAgICAgICAgICB0aGVuIEx3dC5yZXR1cm5fdW5pdFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXG4gICAgICAgICAgICAgIChKcy5zdHJpbmcgXCJKc29ucDogc2NyaXB0IGxvYWRlZCBidXQgY2FsbGJhY2sgbm90IGV4ZWN1dGVkXCIpO1xuICAgICAgICAgICAgZmluYWxpemUgKCk7XG4gICAgICAgICAgICBlcnJvcl9jYiB4O1xuICAgICAgICAgICAgTHd0LnJldHVybl91bml0KSkpKTtcbiAgbGV0IGluaXQgKCkgPSBpZ25vcmUgKERvbS5hcHBlbmRDaGlsZCBEb21faHRtbC5kb2N1bWVudCMjLmJvZHkgc2NyaXB0KSBpblxuICBpbml0LCBmaW5hbGl6ZVxuXG5sZXQgY2FsbF8gcHJlZml4IG1ha2VfdXJpIGVycm9yX2NiIHVzZXJfY2IgPVxuICBsZXQgbmFtZSA9IHByZWZpeCBeIHJhbmRvbV9pZGVudGlmaWVyIDEwIGluXG4gIGxldCB1cmkgPSBtYWtlX3VyaSBuYW1lIGluXG4gIHJhd19jYWxsIG5hbWUgdXJpIGVycm9yX2NiIHVzZXJfY2JcblxubGV0IGNhbGxfY3VzdG9tX3VybCA/dGltZW91dCA/KHByZWZpeCA9IFwiXCIpIG1ha2VfdXJpID1cbiAgbGV0IHQsIHcgPSBMd3QudGFzayAoKSBpblxuICBsZXQgaW5pdCwgZmluYWxpemUgPSBjYWxsXyBwcmVmaXggbWFrZV91cmkgKGZ1biBfIC0+IEx3dC5jYW5jZWwgdCkgKEx3dC53YWtldXAgdykgaW5cbiAgTHd0Lm9uX2NhbmNlbCB0IGZpbmFsaXplO1xuICBsZXQgbmV3X3QgPVxuICAgIG1hdGNoIHRpbWVvdXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0XG4gICAgfCBTb21lIGRlbGF5IC0+XG4gICAgICAgIGxldCB3YWl0ID1cbiAgICAgICAgICBMd3QuYmluZCAoTHd0X2pzLnNsZWVwIGRlbGF5KSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIEx3dC5jYW5jZWwgdDtcbiAgICAgICAgICAgICAgdClcbiAgICAgICAgaW5cbiAgICAgICAgTHd0LmNob29zZSBbIHdhaXQ7IHQgXVxuICBpblxuICBpbml0ICgpO1xuICBuZXdfdFxuXG5sZXQgYWRkX3BhcmFtIG5hbWUgdmFsdWUgbCA9XG4gIGxldCBsID0gTGlzdC5maWx0ZXIgKGZ1biAoeCwgXykgLT4gbm90IChTdHJpbmcuZXF1YWwgeCBuYW1lKSkgbCBpblxuICAobmFtZSwgdmFsdWUpIDo6IGxcblxubGV0IGNhbGwgP3RpbWVvdXQgPyhwYXJhbSA9IFwiY2FsbGJhY2tcIikgPyhwcmVmaXggPSBcIlwiKSB1cmwgPVxuICBsZXQgbWFrZV91cmkgY2JuYW1lID1cbiAgICBtYXRjaCBVcmwudXJsX29mX3N0cmluZyB1cmwgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkpzb25wLmNhbGw6IENhbm5vdCBwYXJzZSB1cmxcIlxuICAgIHwgU29tZSB1cmwgLT5cbiAgICAgICAgbGV0IG5ld191cmwgPVxuICAgICAgICAgIG1hdGNoIHVybCB3aXRoXG4gICAgICAgICAgfCBVcmwuSHR0cCBodHRwIC0+XG4gICAgICAgICAgICAgIFVybC5IdHRwXG4gICAgICAgICAgICAgICAgeyBodHRwIHdpdGhcbiAgICAgICAgICAgICAgICAgIFVybC5odV9hcmd1bWVudHMgPSBhZGRfcGFyYW0gcGFyYW0gY2JuYW1lIGh0dHAuVXJsLmh1X2FyZ3VtZW50c1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICB8IFVybC5IdHRwcyBodHRwIC0+XG4gICAgICAgICAgICAgIFVybC5IdHRwc1xuICAgICAgICAgICAgICAgIHsgaHR0cCB3aXRoXG4gICAgICAgICAgICAgICAgICBVcmwuaHVfYXJndW1lbnRzID0gYWRkX3BhcmFtIHBhcmFtIGNibmFtZSBodHRwLlVybC5odV9hcmd1bWVudHNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgfCBVcmwuRmlsZSBmaWxlIC0+XG4gICAgICAgICAgICAgIFVybC5GaWxlXG4gICAgICAgICAgICAgICAgeyBmaWxlIHdpdGhcbiAgICAgICAgICAgICAgICAgIFVybC5mdV9hcmd1bWVudHMgPSBhZGRfcGFyYW0gcGFyYW0gY2JuYW1lIGZpbGUuVXJsLmZ1X2FyZ3VtZW50c1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgVXJsLnN0cmluZ19vZl91cmwgbmV3X3VybFxuICBpblxuICBjYWxsX2N1c3RvbV91cmwgP3RpbWVvdXQgfnByZWZpeCBtYWtlX3VyaVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBWaW5jZW50IEJhbGF0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc19vZl9vY2FtbFxub3BlbiEgSW1wb3J0XG5cbmxldCAoID4+PSApID0gTHd0LmJpbmRcblxubGV0IGFzeW5jIGYgPSBMd3QuYXN5bmMgKGZ1biAoKSAtPiBMd3RfanMueWllbGQgKCkgPj49IGYpXG5cbmxldCBvcHRfbWFwIGYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCBtYWtlX2V2ZW50IGV2ZW50X2tpbmQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIGxldCBlbCA9IHJlZiBKcy5udWxsIGluXG4gIGxldCB0LCB3ID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IGNhbmNlbCAoKSA9IEpzLk9wdC5pdGVyICFlbCBEb21faHRtbC5yZW1vdmVFdmVudExpc3RlbmVyIGluXG4gIEx3dC5vbl9jYW5jZWwgdCBjYW5jZWw7XG4gIGVsIDo9XG4gICAgSnMuc29tZVxuICAgICAgKERvbS5hZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcbiAgICAgICAgID9jYXB0dXJlOihvcHRfbWFwIEpzLmJvb2wgdXNlX2NhcHR1cmUpXG4gICAgICAgICA/cGFzc2l2ZToob3B0X21hcCBKcy5ib29sIHBhc3NpdmUpXG4gICAgICAgICB0YXJnZXRcbiAgICAgICAgIGV2ZW50X2tpbmRcbiAgICAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gKGV2IDogI0RvbV9odG1sLmV2ZW50IEpzLnQpIC0+XG4gICAgICAgICAgICAgIGNhbmNlbCAoKTtcbiAgICAgICAgICAgICAgTHd0Lndha2V1cCB3IGV2O1xuICAgICAgICAgICAgICBKcy5ib29sIHRydWUpKVxuICAgICAgICAgKCogdHJ1ZSBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IHRvIHByZXZlbnQgZGVmYXVsdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHVzZXIgY2FuIHVzZSB0aGUgcHJldmVudERlZmF1bHQgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFib3ZlLiAqKSk7XG4gIHRcblxubGV0IGNhdGNoX2NhbmNlbCBmIHggPVxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+IGYgeClcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgTHd0LkNhbmNlbGVkIC0+IEx3dC5yZXR1cm4gKClcbiAgICAgIHwgZSAtPiBMd3QuZmFpbCBlKVxuXG5sZXQgd2l0aF9lcnJvcl9sb2cgZiB4ID1cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPiBmIHgpXG4gICAgKGZ1biBlIC0+XG4gICAgICBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIChQcmludGV4Yy50b19zdHJpbmcgZSkpO1xuICAgICAgTHd0LnJldHVybiAoKSlcblxubGV0IHNlcV9sb29wIGV2aCA/KGNhbmNlbF9oYW5kbGVyID0gZmFsc2UpID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgaGFuZGxlciA9XG4gIGxldCBjYW5jZWxsZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IGN1ciA9IHJlZiAoTHd0LmZhaWwgKEZhaWx1cmUgXCJMd3RfanNfZXZlbnRcIikpIGluXG4gICgqIFVzaW5nIEx3dC5mYWlsIGFzIGRlZmF1bHQsIHRvIGJlIHBvbHltb3JwaGljICopXG4gIGxldCBjdXJfaGFuZGxlciA9IHJlZiAoTHd0LnJldHVybiAoKSkgaW5cbiAgbGV0IGx0LCBfbHcgPSBMd3QudGFzayAoKSBpblxuICBMd3Qub25fY2FuY2VsIGx0IChmdW4gKCkgLT5cbiAgICAgIEx3dC5jYW5jZWwgIWN1cjtcbiAgICAgIGlmIGNhbmNlbF9oYW5kbGVyIHRoZW4gTHd0LmNhbmNlbCAhY3VyX2hhbmRsZXI7XG4gICAgICBjYW5jZWxsZWQgOj0gdHJ1ZSk7XG4gIGxldCByZWMgYXV4ICgpID1cbiAgICBpZiBub3QgIWNhbmNlbGxlZFxuICAgICAgICgqIEluIHRoZSBjYXNlIGl0IGhhcyBiZWVuIGNhbmNlbGxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyB0aGUgcHJldmlvdXMgaGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICB3ZSBkbyBub3QgcmVpbnN0YWxsIHRoZSBldmVudCBoYW5kbGVyICopXG4gICAgdGhlbiAoXG4gICAgICBsZXQgdCA9IGV2aCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0IGluXG4gICAgICBjdXIgOj0gdDtcbiAgICAgIHRcbiAgICAgID4+PSBmdW4gZSAtPlxuICAgICAgY3VyX2hhbmRsZXIgOj0gd2l0aF9lcnJvcl9sb2cgKGhhbmRsZXIgZSkgbHQ7XG4gICAgICAhY3VyX2hhbmRsZXIgPj49IGF1eClcbiAgICBlbHNlIEx3dC5yZXR1cm4gKClcbiAgaW5cbiAgTHd0LmFzeW5jIChjYXRjaF9jYW5jZWwgYXV4KTtcbiAgbHRcblxubGV0IGFzeW5jX2xvb3AgZXZoID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgaGFuZGxlciA9XG4gIGxldCBjYW5jZWxsZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IGN1ciA9IHJlZiAoTHd0LmZhaWwgKEZhaWx1cmUgXCJMd3RfanNfZXZlbnRcIikpIGluXG4gIGxldCBsdCwgX2x3ID0gTHd0LnRhc2sgKCkgaW5cbiAgTHd0Lm9uX2NhbmNlbCBsdCAoZnVuICgpIC0+XG4gICAgICBMd3QuY2FuY2VsICFjdXI7XG4gICAgICBjYW5jZWxsZWQgOj0gdHJ1ZSk7XG4gIGxldCByZWMgYXV4ICgpID1cbiAgICBpZiBub3QgIWNhbmNlbGxlZFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHQgPSBldmggP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCBpblxuICAgICAgY3VyIDo9IHQ7XG4gICAgICB0XG4gICAgICA+Pj0gZnVuIGUgLT5cbiAgICAgIEx3dC5hc3luYyAoZnVuICgpIC0+IHdpdGhfZXJyb3JfbG9nIChoYW5kbGVyIGUpIGx0KTtcbiAgICAgIGF1eCAoKSlcbiAgICBlbHNlIEx3dC5yZXR1cm4gKClcbiAgaW5cbiAgTHd0LmFzeW5jIChjYXRjaF9jYW5jZWwgYXV4KTtcbiAgbHRcblxubGV0IGJ1ZmZlcmVkX2xvb3BcbiAgICBldmhcbiAgICA/KGNhbmNlbF9oYW5kbGVyID0gZmFsc2UpXG4gICAgPyhjYW5jZWxfcXVldWUgPSB0cnVlKVxuICAgID91c2VfY2FwdHVyZVxuICAgID9wYXNzaXZlXG4gICAgdGFyZ2V0XG4gICAgaGFuZGxlciA9XG4gIGxldCBjYW5jZWxsZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IHF1ZXVlID0gcmVmIFtdIGluXG4gIGxldCBjdXIgPSByZWYgKEx3dC5mYWlsIChGYWlsdXJlIFwiTHd0X2pzX2V2ZW50XCIpKSBpblxuICBsZXQgY3VyX2hhbmRsZXIgPSByZWYgKEx3dC5yZXR1cm4gKCkpIGluXG4gIGxldCBsdCwgX2x3ID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IHNwYXduID0gTHd0X2NvbmRpdGlvbi5jcmVhdGUgKCkgaW5cbiAgTHd0Lm9uX2NhbmNlbCBsdCAoZnVuICgpIC0+XG4gICAgICBMd3QuY2FuY2VsICFjdXI7XG4gICAgICBpZiBjYW5jZWxfaGFuZGxlciB0aGVuIEx3dC5jYW5jZWwgIWN1cl9oYW5kbGVyO1xuICAgICAgaWYgY2FuY2VsX3F1ZXVlIHRoZW4gcXVldWUgOj0gW107XG4gICAgICBjYW5jZWxsZWQgOj0gdHJ1ZSk7XG4gIGxldCByZWMgc3Bhd25lciAoKSA9XG4gICAgaWYgbm90ICFjYW5jZWxsZWRcbiAgICB0aGVuIChcbiAgICAgIGxldCB0ID0gZXZoID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgaW5cbiAgICAgIGN1ciA6PSB0O1xuICAgICAgdFxuICAgICAgPj49IGZ1biBlIC0+XG4gICAgICBxdWV1ZSA6PSBlIDo6ICFxdWV1ZTtcbiAgICAgIEx3dF9jb25kaXRpb24uc2lnbmFsIHNwYXduICgpO1xuICAgICAgc3Bhd25lciAoKSlcbiAgICBlbHNlIEx3dC5yZXR1cm4gKClcbiAgaW5cbiAgbGV0IHJlYyBydW5uZXIgKCkgPVxuICAgIGN1cl9oYW5kbGVyIDo9IEx3dC5yZXR1cm4gKCk7XG4gICAgaWYgbm90ICFjYW5jZWxsZWRcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoICFxdWV1ZSB3aXRoXG4gICAgICB8IFtdIC0+IEx3dF9jb25kaXRpb24ud2FpdCBzcGF3biA+Pj0gcnVubmVyXG4gICAgICB8IGUgOjogdGwgLT5cbiAgICAgICAgICBxdWV1ZSA6PSB0bDtcbiAgICAgICAgICBjdXJfaGFuZGxlciA6PSB3aXRoX2Vycm9yX2xvZyAoaGFuZGxlciBlKSBsdDtcbiAgICAgICAgICAhY3VyX2hhbmRsZXIgPj49IHJ1bm5lcilcbiAgICBlbHNlIEx3dC5yZXR1cm4gKClcbiAgaW5cbiAgTHd0LmFzeW5jIChjYXRjaF9jYW5jZWwgc3Bhd25lcik7XG4gIEx3dC5hc3luYyBydW5uZXI7XG4gIGx0XG5cbmxldCBmdW5jX2xpbWl0ZWRfbG9vcCBldmVudCBsaW1pdGVkX2Z1bmMgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCBoYW5kbGVyID1cbiAgbGV0IGNvdW50ID0gcmVmIDAgaW5cbiAgYXN5bmNfbG9vcCBldmVudCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0IChmdW4gZXYgbHQgLT5cbiAgICAgIGluY3IgY291bnQ7XG4gICAgICBsZXQgbmIgPSAhY291bnQgaW5cbiAgICAgIGxpbWl0ZWRfZnVuYyAoKSA+Pj0gZnVuIF8gLT4gaWYgIWNvdW50ID0gbmIgdGhlbiBoYW5kbGVyIGV2IGx0IGVsc2UgTHd0LnJldHVybiAoKSlcblxubGV0IGxpbWl0ZWRfbG9vcCBldmVudCA/KGVsYXBzZWRfdGltZSA9IDAuMSkgPVxuICBmdW5jX2xpbWl0ZWRfbG9vcCBldmVudCAoZnVuICgpIC0+IEx3dF9qcy5zbGVlcCBlbGFwc2VkX3RpbWUpXG5cbmxldCBjbGljayA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5jbGljayA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBjb3B5ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmNvcHkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgY3V0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmN1dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwYXN0ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wYXN0ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkYmxjbGljayA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kYmxjbGljayA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBtb3VzZWRvd24gP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubW91c2Vkb3duID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IG1vdXNldXAgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubW91c2V1cCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBtb3VzZW92ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubW91c2VvdmVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IG1vdXNlbW92ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5tb3VzZW1vdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbW91c2VvdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubW91c2VvdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQga2V5cHJlc3MgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQua2V5cHJlc3MgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQga2V5ZG93biA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5rZXlkb3duID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGtleXVwID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmtleXVwID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5jaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgaW5wdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuaW5wdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgdGltZXVwZGF0ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50aW1ldXBkYXRlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGRyYWdzdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcmFnc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJhZ2VuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcmFnZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGRyYWdlbnRlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcmFnZW50ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJhZ292ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZHJhZ292ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJhZ2xlYXZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyYWdsZWF2ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkcmFnID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyYWcgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJvcCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcm9wID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGZvY3VzID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmZvY3VzID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGJsdXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuYmx1ciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBzY3JvbGwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuc2Nyb2xsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHN1Ym1pdCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5zdWJtaXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgc2VsZWN0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnNlbGVjdCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBhYm9ydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5hYm9ydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBlcnJvciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5lcnJvciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBsb2FkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmxvYWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgY2FucGxheSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5jYW5wbGF5ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGNhbnBsYXl0aHJvdWdoID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmNhbnBsYXl0aHJvdWdoID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGR1cmF0aW9uY2hhbmdlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmR1cmF0aW9uY2hhbmdlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGVtcHRpZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZW1wdGllZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBlbmRlZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5lbmRlZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBsb2FkZWRkYXRhID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmxvYWRlZGRhdGEgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbG9hZGVkbWV0YWRhdGEgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9hZGVkbWV0YWRhdGEgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbG9hZHN0YXJ0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmxvYWRzdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwYXVzZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wYXVzZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwbGF5ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBsYXkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcGxheWluZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wbGF5aW5nID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHJhdGVjaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucmF0ZWNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBzZWVrZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuc2Vla2VkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHNlZWtpbmcgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuc2Vla2luZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBzdGFsbGVkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnN0YWxsZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgc3VzcGVuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5zdXNwZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHZvbHVtZWNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC52b2x1bWVjaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgd2FpdGluZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC53YWl0aW5nID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxuKCogc3BlY2lhbCBjYXNlIGZvciBtb3VzZXdoZWVsLCBiZWNhdXNlIGl0IGRlcGVuZHMgb24gdGhlIGJyb3dzZXIgKilcbmxldCBtb3VzZXdoZWVsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBsZXQgZWwgPSByZWYgSnMubnVsbCBpblxuICBsZXQgdCwgdyA9IEx3dC50YXNrICgpIGluXG4gIGxldCBjYW5jZWwgKCkgPSBKcy5PcHQuaXRlciAhZWwgRG9tX2h0bWwucmVtb3ZlRXZlbnRMaXN0ZW5lciBpblxuICBMd3Qub25fY2FuY2VsIHQgY2FuY2VsO1xuICBlbCA6PVxuICAgIEpzLnNvbWVcbiAgICAgIChEb21faHRtbC5hZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zXG4gICAgICAgICA/Y2FwdHVyZToob3B0X21hcCBKcy5ib29sIHVzZV9jYXB0dXJlKVxuICAgICAgICAgP3Bhc3NpdmU6KG9wdF9tYXAgSnMuYm9vbCBwYXNzaXZlKVxuICAgICAgICAgdGFyZ2V0XG4gICAgICAgICAoZnVuIChldiA6ICNEb21faHRtbC5ldmVudCBKcy50KSB+ZHggfmR5IC0+XG4gICAgICAgICAgIEZpcmVidWcuY29uc29sZSMjbG9nIGV2O1xuICAgICAgICAgICBjYW5jZWwgKCk7XG4gICAgICAgICAgIEx3dC53YWtldXAgdyAoZXYsIChkeCwgZHkpKTtcbiAgICAgICAgICAgSnMuYm9vbCB0cnVlKVxuICAgICAgICAgKCogdHJ1ZSBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IHRvIHByZXZlbnQgZGVmYXVsdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHVzZXIgY2FuIHVzZSB0aGUgcHJldmVudERlZmF1bHQgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFib3ZlLiAqKSk7XG4gIHRcblxuKCogbGV0IF9ET01Nb3VzZVNjcm9sbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuX0RPTU1vdXNlU2Nyb2xsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcbiopXG5cbmxldCB3aGVlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC53aGVlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0b3VjaHN0YXJ0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRvdWNoc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgdG91Y2htb3ZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRvdWNobW92ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0b3VjaGVuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50b3VjaGVuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0b3VjaGNhbmNlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50b3VjaGNhbmNlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBsb3N0cG9pbnRlcmNhcHR1cmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9zdHBvaW50ZXJjYXB0dXJlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGdvdHBvaW50ZXJjYXB0dXJlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmdvdHBvaW50ZXJjYXB0dXJlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJlbnRlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVyZW50ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcmNhbmNlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVyY2FuY2VsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJkb3duID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJkb3duID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJsZWF2ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVybGVhdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcm1vdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucG9pbnRlcm1vdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcm91dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVyb3V0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJvdmVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJvdmVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJ1cCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVydXAgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgdHJhbnNpdGlvbmVuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50cmFuc2l0aW9uZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHRcblxubGV0IHRyYW5zaXRpb25zdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50cmFuc2l0aW9uc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIGVsdFxuXG5sZXQgdHJhbnNpdGlvbnJ1biA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50cmFuc2l0aW9ucnVuID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHRcblxubGV0IHRyYW5zaXRpb25jYW5jZWwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIGVsdCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudHJhbnNpdGlvbmNhbmNlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0XG5cbmxldCBjbGlja3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgY2xpY2sgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBjb3BpZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgY29weSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGN1dHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgY3V0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcGFzdGVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBhc3RlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZGJsY2xpY2tzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRibGNsaWNrID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbW91c2Vkb3ducyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBtb3VzZWRvd24gP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBtb3VzZXVwcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBtb3VzZXVwID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbW91c2VvdmVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBtb3VzZW92ZXIgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBtb3VzZW1vdmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIG1vdXNlbW92ZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IG1vdXNlb3V0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBtb3VzZW91dCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGtleXByZXNzZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Aga2V5cHJlc3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBrZXlkb3ducyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBrZXlkb3duID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQga2V5dXBzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGtleXVwID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgY2hhbmdlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBjaGFuZ2UgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBpbnB1dHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgaW5wdXQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB0aW1ldXBkYXRlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0aW1ldXBkYXRlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZHJhZ3N0YXJ0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcmFnc3RhcnQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcmFnZW5kcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcmFnZW5kID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZHJhZ2VudGVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcmFnZW50ZXIgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcmFnb3ZlcnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZHJhZ292ZXIgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcmFnbGVhdmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyYWdsZWF2ZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGRyYWdzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyYWcgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcm9wcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcm9wID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbW91c2V3aGVlbHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbW91c2V3aGVlbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHdoZWVscyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB3aGVlbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRvdWNoc3RhcnRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRvdWNoc3RhcnQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB0b3VjaG1vdmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRvdWNobW92ZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRvdWNoZW5kcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0b3VjaGVuZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRvdWNoY2FuY2VscyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0b3VjaGNhbmNlbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGZvY3VzZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZm9jdXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBibHVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBibHVyID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgc2Nyb2xscyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBzY3JvbGwgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBzdWJtaXRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHN1Ym1pdCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHNlbGVjdHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agc2VsZWN0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgYWJvcnRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGFib3J0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZXJyb3JzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGVycm9yID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbG9hZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbG9hZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGNhbnBsYXlzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGNhbnBsYXkgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBjYW5wbGF5dGhyb3VnaHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgY2FucGxheXRocm91Z2ggP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkdXJhdGlvbmNoYW5nZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZHVyYXRpb25jaGFuZ2UgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBlbXB0aWVkcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBlbXB0aWVkID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZW5kZWRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGVuZGVkID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbG9hZGVkZGF0YXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbG9hZGVkZGF0YSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGxvYWRlZG1ldGFkYXRhcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBsb2FkZWRtZXRhZGF0YSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGxvYWRzdGFydHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbG9hZHN0YXJ0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcGF1c2VzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBhdXNlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcGxheXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcGxheSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBsYXlpbmdzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBsYXlpbmcgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCByYXRlY2hhbmdlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCByYXRlY2hhbmdlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgc2Vla2VkcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBzZWVrZWQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBzZWVraW5ncyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBzZWVraW5nID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgc3RhbGxlZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agc3RhbGxlZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHN1c3BlbmRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHN1c3BlbmQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB2b2x1bWVjaGFuZ2VzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHZvbHVtZWNoYW5nZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHdhaXRpbmdzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHdhaXRpbmcgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBsb3N0cG9pbnRlcmNhcHR1cmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGxvc3Rwb2ludGVyY2FwdHVyZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGdvdHBvaW50ZXJjYXB0dXJlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBnb3Rwb2ludGVyY2FwdHVyZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJlbnRlcnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcmVudGVyID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcmNhbmNlbHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcmNhbmNlbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJkb3ducyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVyZG93biA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJsZWF2ZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcmxlYXZlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcm1vdmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBvaW50ZXJtb3ZlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcm91dHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcm91dCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJvdmVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVyb3ZlciA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJ1cHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcnVwID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdHJhbnNpdGlvbmVuZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdHJhbnNpdGlvbmVuZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRyYW5zaXRpb25zdGFydHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdHJhbnNpdGlvbnN0YXJ0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdHJhbnNpdGlvbnJ1bnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdHJhbnNpdGlvbnJ1biA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRyYW5zaXRpb25jYW5jZWxzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRyYW5zaXRpb25jYW5jZWwgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSAoKSA9XG4gIGxldCB0LCBzID0gTHd0LndhaXQgKCkgaW5cbiAgbGV0IChfIDogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQpID1cbiAgICBEb21faHRtbC53aW5kb3cjI3JlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgKEpzLndyYXBfY2FsbGJhY2sgKGZ1biAoXyA6IEpzLm51bWJlcl90KSAtPiBMd3Qud2FrZXVwIHMgKCkpKVxuICBpblxuICB0XG5cbmxldCBvbmxvYWQgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmxvYWQgRG9tX2h0bWwud2luZG93XG5cbmxldCBkb21Db250ZW50TG9hZGVkID1cbiAgbGV0IGNvbXBsZXRlID0gSnMuc3RyaW5nIFwiY29tcGxldGVcIiBpblxuICBsZXQgZG9jID0gRG9tX2h0bWwud2luZG93IyMuZG9jdW1lbnQgaW5cbiAgZnVuICgpIC0+XG4gICAgaWYgZG9jIyMucmVhZHlTdGF0ZSA9PSBjb21wbGV0ZVxuICAgIHRoZW4gTHd0LnJldHVybl91bml0XG4gICAgZWxzZVxuICAgICAgbGV0IHQsIHcgPSBMd3QudGFzayAoKSBpblxuICAgICAgbGV0IHdha2V1cCB3IF8gPSBpZiBMd3QuaXNfc2xlZXBpbmcgdCB0aGVuIEx3dC53YWtldXAgdyAoKSBpblxuICAgICAgbGV0IHdha2V1cF9leG4gdyBlID0gaWYgTHd0LmlzX3NsZWVwaW5nIHQgdGhlbiBMd3Qud2FrZXVwX2V4biB3IGUgaW5cbiAgICAgICgqIGh0dHBzOi8vZ2l0aHViLmNvbS9kcGVyaW5pL0NvbnRlbnRMb2FkZWQvYmxvYi9tYXN0ZXIvc3JjL2NvbnRlbnRsb2FkZWQuanMgKilcbiAgICAgIGxldCByZWd1bGFyID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kb21Db250ZW50TG9hZGVkIGRvYyBpblxuICAgICAgTHd0Lm9uX2FueSByZWd1bGFyICh3YWtldXAgdykgKHdha2V1cF9leG4gdyk7XG4gICAgICAoKiBpZTggKilcbiAgICAgIGxldCByZWFkeXN0YXRlY2hhbmdlID1cbiAgICAgICAgYXN5bmNfbG9vcFxuICAgICAgICAgIChtYWtlX2V2ZW50IChEb20uRXZlbnQubWFrZSBcInJlYWR5c3RhdGVjaGFuZ2VcIikpXG4gICAgICAgICAgZG9jXG4gICAgICAgICAgKGZ1biBlIF8gLT5cbiAgICAgICAgICAgIGlmIGRvYyMjLnJlYWR5U3RhdGUgPT0gY29tcGxldGUgdGhlbiB3YWtldXAgdyBlO1xuICAgICAgICAgICAgTHd0LnJldHVybl91bml0KVxuICAgICAgaW5cbiAgICAgICgqIGZhbGxiYWNrLCBqdXN0IGluIGNhc2UgKilcbiAgICAgIGxldCBpbml0ID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5sb2FkIERvbV9odG1sLndpbmRvdyBpblxuICAgICAgTHd0Lm9uX2FueSBpbml0ICh3YWtldXAgdykgKHdha2V1cF9leG4gdyk7XG4gICAgICAoKiBjbGVhbiBhbmQgcmV0dXJuICopXG4gICAgICBMd3QuYmluZCB0IChmdW4gX2UgLT5cbiAgICAgICAgICBMd3QuY2FuY2VsIHJlZ3VsYXI7XG4gICAgICAgICAgTHd0LmNhbmNlbCByZWFkeXN0YXRlY2hhbmdlO1xuICAgICAgICAgIEx3dC5jYW5jZWwgaW5pdDtcbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBvbnVubG9hZCAoKSA9IG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudW5sb2FkIERvbV9odG1sLndpbmRvd1xuXG5sZXQgb25iZWZvcmV1bmxvYWQgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmJlZm9yZXVubG9hZCBEb21faHRtbC53aW5kb3dcblxubGV0IG9ucmVzaXplICgpID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5yZXNpemUgRG9tX2h0bWwud2luZG93XG5cbmxldCBvbm9yaWVudGF0aW9uY2hhbmdlICgpID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5vcmllbnRhdGlvbmNoYW5nZSBEb21faHRtbC53aW5kb3dcblxubGV0IG9ucG9wc3RhdGUgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvcHN0YXRlIERvbV9odG1sLndpbmRvd1xuXG5sZXQgb25oYXNoY2hhbmdlICgpID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5oYXNoY2hhbmdlIERvbV9odG1sLndpbmRvd1xuXG5sZXQgb25vcmllbnRhdGlvbmNoYW5nZV9vcl9vbnJlc2l6ZSAoKSA9IEx3dC5waWNrIFsgb25yZXNpemUgKCk7IG9ub3JpZW50YXRpb25jaGFuZ2UgKCkgXVxuXG5sZXQgb25yZXNpemVzIHQgPSBzZXFfbG9vcCAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25yZXNpemUgKCkpICgpIHRcblxubGV0IG9ub3JpZW50YXRpb25jaGFuZ2VzIHQgPVxuICBzZXFfbG9vcCAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25vcmllbnRhdGlvbmNoYW5nZSAoKSkgKCkgdFxuXG5sZXQgb25wb3BzdGF0ZXMgdCA9IHNlcV9sb29wIChmdW4gP3VzZV9jYXB0dXJlOl8gP3Bhc3NpdmU6XyAoKSAtPiBvbnBvcHN0YXRlICgpKSAoKSB0XG5cbmxldCBvbmhhc2hjaGFuZ2VzIHQgPSBzZXFfbG9vcCAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25oYXNoY2hhbmdlICgpKSAoKSB0XG5cbmxldCBvbm9yaWVudGF0aW9uY2hhbmdlc19vcl9vbnJlc2l6ZXMgdCA9XG4gIHNlcV9sb29wIChmdW4gP3VzZV9jYXB0dXJlOl8gP3Bhc3NpdmU6XyAoKSAtPiBvbm9yaWVudGF0aW9uY2hhbmdlX29yX29ucmVzaXplICgpKSAoKSB0XG5cbmxldCBsaW1pdGVkX29ucmVzaXplcyA/ZWxhcHNlZF90aW1lIHQgPVxuICBsaW1pdGVkX2xvb3AgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9ucmVzaXplICgpKSA/ZWxhcHNlZF90aW1lICgpIHRcblxubGV0IGxpbWl0ZWRfb25vcmllbnRhdGlvbmNoYW5nZXMgP2VsYXBzZWRfdGltZSB0ID1cbiAgbGltaXRlZF9sb29wXG4gICAgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9ub3JpZW50YXRpb25jaGFuZ2UgKCkpXG4gICAgP2VsYXBzZWRfdGltZVxuICAgICgpXG4gICAgdFxuXG5sZXQgbGltaXRlZF9vbm9yaWVudGF0aW9uY2hhbmdlc19vcl9vbnJlc2l6ZXMgP2VsYXBzZWRfdGltZSB0ID1cbiAgbGltaXRlZF9sb29wXG4gICAgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9ub3JpZW50YXRpb25jaGFuZ2Vfb3Jfb25yZXNpemUgKCkpXG4gICAgP2VsYXBzZWRfdGltZVxuICAgICgpXG4gICAgdFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuIEpzXG5vcGVuIERvbVxub3BlbiBGaWxlXG5vcGVuISBJbXBvcnRcblxubGV0IHJlYWRfd2l0aF9maWxlcmVhZGVyIChmaWxlUmVhZGVyIDogZmlsZVJlYWRlciB0IGNvbnN0cikga2luZCBmaWxlID1cbiAgbGV0IHJlYWRlciA9IG5ldyVqcyBmaWxlUmVhZGVyIGluXG4gIGxldCByZXMsIHcgPSBMd3QudGFzayAoKSBpblxuICByZWFkZXIjIy5vbmxvYWRlbmQgOj1cbiAgICBoYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICBpZiByZWFkZXIjIy5yZWFkeVN0YXRlID09IERPTkVcbiAgICAgICAgdGhlblxuICAgICAgICAgIEx3dC53YWtldXBcbiAgICAgICAgICAgIHdcbiAgICAgICAgICAgIChtYXRjaCBPcHQudG9fb3B0aW9uIChDb2VyY2VUby5zdHJpbmcgcmVhZGVyIyMucmVzdWx0KSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlICgqIGNhbid0IGhhcHBlbjogY2FsbGVkIHdpdGggZ29vZCByZWFkQXNfICopXG4gICAgICAgICAgICB8IFNvbWUgcyAtPiBzKVxuICAgICAgICBlbHNlICgpO1xuICAgICAgICAoKiBDQ0MgVE9ETzogaGFuZGxlIGVycm9ycyAqKVxuICAgICAgICBKcy5fZmFsc2UpO1xuICBMd3Qub25fY2FuY2VsIHJlcyAoZnVuICgpIC0+IHJlYWRlciMjYWJvcnQpO1xuICAobWF0Y2gga2luZCB3aXRoXG4gIHwgYEJpbmFyeVN0cmluZyAtPiByZWFkZXIjI3JlYWRBc0JpbmFyeVN0cmluZyBmaWxlXG4gIHwgYFRleHQgLT4gcmVhZGVyIyNyZWFkQXNUZXh0IGZpbGVcbiAgfCBgVGV4dF93aXRoRW5jb2RpbmcgZSAtPiByZWFkZXIjI3JlYWRBc1RleHRfd2l0aEVuY29kaW5nIGZpbGUgZVxuICB8IGBEYXRhVVJMIC0+IHJlYWRlciMjcmVhZEFzRGF0YVVSTCBmaWxlKTtcbiAgcmVzXG5cbmxldCByZWFkZXIga2luZCBmaWxlID0gcmVhZF93aXRoX2ZpbGVyZWFkZXIgZmlsZVJlYWRlciBraW5kIGZpbGVcblxubGV0IHJlYWRBc0JpbmFyeVN0cmluZyBmaWxlID0gcmVhZGVyIGBCaW5hcnlTdHJpbmcgZmlsZVxuXG5sZXQgcmVhZEFzVGV4dCBmaWxlID0gcmVhZGVyIGBUZXh0IGZpbGVcblxubGV0IHJlYWRBc1RleHRfd2l0aEVuY29kaW5nIGZpbGUgZSA9IHJlYWRlciAoYFRleHRfd2l0aEVuY29kaW5nIGUpIGZpbGVcblxubGV0IHJlYWRBc0RhdGFVUkwgZmlsZSA9IHJlYWRlciBgRGF0YVVSTCBmaWxlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE3IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgWG1sSHR0cFJlcXVlc3QgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBKc19vZl9vY2FtbC5YbWxIdHRwUmVxdWVzdFxuICBpbmNsdWRlIEx3dF94bWxIdHRwUmVxdWVzdFxuZW5kXG5cbm1vZHVsZSBGaWxlID0gc3RydWN0XG4gIGluY2x1ZGUgSnNfb2Zfb2NhbWwuRmlsZVxuICBpbmNsdWRlIEx3dF9maWxlXG5lbmRcblxubW9kdWxlIEpzb25wID0gTHd0X2pzb25wXG5tb2R1bGUgTHd0X2pzID0gTHd0X2pzXG5tb2R1bGUgTHd0X2pzX2V2ZW50cyA9IEx3dF9qc19ldmVudHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIG5lZWQgdG8gc3BlY2lmeSBtZXNzYWdlcyB3aGVyZSB0aGVyZSBpcyBhbiBlcnJvciAqKVxubGV0IHRvc3MgOiAnYSAnYi4gJ2EgLT4gJ2IgPVxuIGZ1biBlIC0+XG4gIGxldCAoKSA9XG4gICAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcInRvc3NcIikgW3wgSnMuVW5zYWZlLmluamVjdCBlIHxdXG4gIGluXG4gIGFzc2VydCBmYWxzZVxuXG5sZXQgaWQgdmFsdWUgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwiaWRcIikgW3wgSnMuVW5zYWZlLmluamVjdCB2YWx1ZSB8XVxuXG5sZXQgZGVidWcgdmFsdWUgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwiZGVidWdcIikgW3wgSnMuVW5zYWZlLmluamVjdCB2YWx1ZSB8XVxuXG5sZXQgaW5mbyB2YWx1ZSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJpbmZvXCIpIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWUgfF1cblxubGV0IG5vdGljZSB2YWx1ZSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJub3RpY2VcIikgW3wgSnMuVW5zYWZlLmluamVjdCB2YWx1ZSB8XVxuXG5sZXQgd2FybmluZyB2YWx1ZSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJ3YXJuaW5nXCIpIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWUgfF1cblxubGV0IGVycm9yIHZhbHVlID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImVycm9yXCIpIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWUgfF1cblxubGV0IGZhdGFsIHZhbHVlID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImZhdGFsXCIpIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWUgfF1cblxubGV0IGpxdWVyeV9vbiAoc2VsZWN0b3IgOiBzdHJpbmcpIChldmVudCA6IHN0cmluZykgaGFuZGxlciA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcImpxdWVyeU9uXCIpXG4gICAgW3xcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBzZWxlY3Rvcik7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgZXZlbnQpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCBoYW5kbGVyO1xuICAgIHxdXG5cbmxldCBvcHRpb25fc3RyaW5nIChpZCA6IHN0cmluZyBvcHRpb24pID1cbiAgbWF0Y2ggaWQgd2l0aFxuICB8IFNvbWUgaWQgLT4gSnMuc29tZSAoSnMuc3RyaW5nIGlkKVxuICB8IE5vbmUgLT4gSnMubnVsbFxuXG5sZXQgcGxvdFBORyA/KHBsb3RTdHlsZUlkIDogc3RyaW5nIG9wdGlvbikgKHBsb3REaXZJZCA6IHN0cmluZykgKHRpdGxlIDogc3RyaW5nKVxuICAgIChwbG90TmFtZSA6IHN0cmluZykgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJwbG90UE5HXCIpXG4gICAgW3xcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBwbG90RGl2SWQpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHRpdGxlKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBwbG90TmFtZSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChvcHRpb25fc3RyaW5nIHBsb3RTdHlsZUlkKTtcbiAgICB8XVxuXG5sZXQgcGxvdFNWRyA/KHBsb3RTdHlsZUlkIDogc3RyaW5nIG9wdGlvbikgKHBsb3REaXZJZCA6IHN0cmluZykgKHRpdGxlIDogc3RyaW5nKVxuICAgIChwbG90TmFtZSA6IHN0cmluZykgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJwbG90U1ZHXCIpXG4gICAgW3xcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBwbG90RGl2SWQpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHRpdGxlKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBwbG90TmFtZSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChvcHRpb25fc3RyaW5nIHBsb3RTdHlsZUlkKTtcbiAgICB8XVxuXG5sZXQgc2F2ZUZpbGUgfihkYXRhIDogJ2EgSnMudCkgfihtaW1lIDogc3RyaW5nKSB+KGZpbGVuYW1lIDogc3RyaW5nKSA6IHVuaXQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJzYXZlRmlsZVwiKVxuICAgIFt8XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IGRhdGE7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgbWltZSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgZmlsZW5hbWUpO1xuICAgIHxdXG5cbnR5cGUgbWV0aCA9IFsgYERFTEVURSB8IGBHRVQgfCBgSEVBRCB8IGBPUFRJT05TIHwgYFBBVENIIHwgYFBPU1QgfCBgUFVUIF1cblxubGV0IG1ldGhvZF90b19zdHJpbmcgOiBtZXRoIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgYERFTEVURSAtPiBcIkRFTEVURVwiXG4gIHwgYEdFVCAtPiBcIkdFVFwiXG4gIHwgYEhFQUQgLT4gXCJIRUFEXCJcbiAgfCBgT1BUSU9OUyAtPiBcIk9QVElPTlNcIlxuICB8IGBQQVRDSCAtPiBcIlBBVENIXCJcbiAgfCBgUE9TVCAtPiBcIlBPU1RcIlxuICB8IGBQVVQgLT4gXCJQVVRcIlxuXG5sZXQgYWpheF9yZXF1ZXN0ID8odGltZW91dCA6IGZsb2F0IG9wdGlvbikgfih1cmwgOiBzdHJpbmcpIH4obWV0aCA6IG1ldGgpXG4gICAgPyhkYXRhIDogc3RyaW5nIG9wdGlvbikgfihoYW5kbGVyIDogaW50IC0+IHN0cmluZyAtPiB1bml0KSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcImFqYXhSZXF1ZXN0XCIpXG4gICAgW3xcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB1cmwpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIChtZXRob2RfdG9fc3RyaW5nIG1ldGgpKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3RcbiAgICAgICAgKEpzLk9wdC5vcHRpb25cbiAgICAgICAgICAgKG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBTb21lIChKcy5zdHJpbmcgZGF0YSkpKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3RcbiAgICAgICAgKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBzdGF0dXMgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgZGVidWdcbiAgICAgICAgICAgICAgICAgKEpzLnN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAoXCJyZXF1ZXN0IFwiIF4gdXJsIF4gXCIgYW5zd2VyOiBcIiBeIHN0cmluZ19vZl9pbnQgc3RhdHVzKSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCAoKSA9IGRlYnVnIHJlc3BvbnNlIGluXG4gICAgICAgICAgICAgaGFuZGxlciBzdGF0dXMgKEpzLnRvX3N0cmluZyByZXNwb25zZSkpKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3RcbiAgICAgICAgKEpzLk9wdC5vcHRpb25cbiAgICAgICAgICAgKG1hdGNoIHRpbWVvdXQgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICB8IFNvbWUgdGltZW91dCAtPiBTb21lIHRpbWVvdXQpKTtcbiAgICB8XVxuXG4oKiBUaGlzIGlzIHRvIGhhbmRsZSBlcnJvcnMgYmVpbmcgbG9zdCBpbiBhc3luY3NcbiAgIHNvIHRoZXJlIHNob3VsZCBiZSBubyBvdGhlciBhc3luYyBjYWxscyBpbiB0aGVcbiAgIGNvZGUuXG4qKVxubGV0IGFzeW5jIGxvYyAodGFzayA6IHVuaXQgLT4gJ2EgTHd0LnQpIDogdW5pdCA9XG4gIEpzX29mX29jYW1sX2x3dC5Md3RfanNfZXZlbnRzLmFzeW5jIChmdW4gKCkgLT5cbiAgICAgIEx3dC5jYXRjaCB0YXNrIChmdW4gZXhuIC0+XG4gICAgICAgICAgbGV0ICgpID0gaW5mbyAoSnMuc3RyaW5nIChsb2MgXiBQcmludGV4Yy50b19zdHJpbmcgZXhuKSkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBkZWJ1ZyAoSnMuc3RyaW5nIChQcmludGV4Yy5nZXRfYmFja3RyYWNlICgpKSkgaW5cbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpKVxuXG5sZXQgZ3VpZCAoKSA6IHN0cmluZyA9XG4gIEpzLnRvX3N0cmluZyAoSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImd1aWRcIikgW3x8XSlcblxubGV0IG1vZGFsIH4oaWQgOiBzdHJpbmcpIH4oYWN0aW9uIDogc3RyaW5nKSA6IHVuaXQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJtb2RhbFwiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBpZCk7IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBhY3Rpb24pIHxdXG5cbmxldCBlbGVtZW50X2RhdGEgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIChsYWJlbCA6IHN0cmluZykgOlxuICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcImVsZW1lbnREYXRhXCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCBlbGVtZW50OyBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgbGFiZWwpIHxdXG5cbmxldCBjcmVhdGVfc29ydCAoaWQgOiBzdHJpbmcpIChoYW5kbGVyIDogRG9tX2h0bWwuZXZlbnQgSnMudCAtPiAnYiAtPiB1bml0KSA6XG4gICAgdW5pdCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcImNyZWF0ZVNvcnRcIilcbiAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgaWQpOyBKcy5VbnNhZmUuaW5qZWN0IGhhbmRsZXIgfF1cblxubGV0IGNoaWxkcmVuX3ZhbHVlIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSAoc2VsZWN0b3IgOiBzdHJpbmcpXG4gICAgKG1hcCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCAtPiAnYSkgOiAnYSBsaXN0ID1cbiAgQXJyYXkudG9fbGlzdFxuICAgIChKcy50b19hcnJheVxuICAgICAgIChKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAgICAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJjaGlsZHJlblZhbHVlXCIpXG4gICAgICAgICAgW3xcbiAgICAgICAgICAgIEpzLlVuc2FmZS5pbmplY3QgZWxlbWVudDtcbiAgICAgICAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBzZWxlY3Rvcik7XG4gICAgICAgICAgICBKcy5VbnNhZmUuaW5qZWN0IG1hcDtcbiAgICAgICAgICB8XSkpXG5cbmxldCBoaWRlX2NvZGVtaXJyb3IgKCkgOiB1bml0ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImhpZGVDb2RlTWlycm9yXCIpIFt8fF1cblxubGV0IHNob3dfY29kZW1pcnJvciAoKSA6IHVuaXQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwic2hvd0NvZGVNaXJyb3JcIikgW3x8XVxuIiwibGV0IHJldl9zcGxpdCBsID1cbiAgbGV0IHJlYyBpbm5lciB4cyB5cyA9IGZ1bmN0aW9uXG4gICAgfCAoeCwgeSkgOjogeHlzIC0+XG4gICAgICAgaW5uZXIgKHg6OnhzKSAoeTo6eXMpIHh5c1xuICAgIHwgW10gLT4gKHhzLCB5cylcbiAgaW5cbiAgaW5uZXIgW10gW10gbFxuXG50eXBlIHdyYXAgPSBbXG4gIHwgYFdyYXBfYXRvbXNcbiAgfCBgQWx3YXlzX3dyYXBcbiAgfCBgTmV2ZXJfd3JhcFxuICB8IGBGb3JjZV9icmVha3NcbiAgfCBgRm9yY2VfYnJlYWtzX3JlY1xuICB8IGBOb19icmVha3Ncbl1cblxudHlwZSBsYWJlbF9icmVhayA9IFtcbiAgfCBgQXV0b1xuICB8IGBBbHdheXNcbiAgfCBgQWx3YXlzX3JlY1xuICB8IGBOZXZlclxuXVxuXG50eXBlIHN0eWxlX25hbWUgPSBzdHJpbmdcbnR5cGUgc3R5bGUgPSB7XG4gIHRhZ19vcGVuIDogc3RyaW5nO1xuICB0YWdfY2xvc2UgOiBzdHJpbmdcbn1cblxudHlwZSBhdG9tX3BhcmFtID0ge1xuICBhdG9tX3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG59XG5cbmxldCBhdG9tID0ge1xuICBhdG9tX3N0eWxlID0gTm9uZVxufVxuXG50eXBlIGxpc3RfcGFyYW0gPSB7XG4gIHNwYWNlX2FmdGVyX29wZW5pbmcgOiBib29sO1xuICBzcGFjZV9hZnRlcl9zZXBhcmF0b3IgOiBib29sO1xuICBzcGFjZV9iZWZvcmVfc2VwYXJhdG9yIDogYm9vbDtcbiAgc2VwYXJhdG9yc19zdGlja19sZWZ0IDogYm9vbDtcbiAgc3BhY2VfYmVmb3JlX2Nsb3NpbmcgOiBib29sO1xuICBzdGlja190b19sYWJlbCA6IGJvb2w7XG4gIGFsaWduX2Nsb3NpbmcgOiBib29sO1xuICB3cmFwX2JvZHkgOiB3cmFwO1xuICBpbmRlbnRfYm9keSA6IGludDtcbiAgbGlzdF9zdHlsZSA6IHN0eWxlX25hbWUgb3B0aW9uO1xuICBvcGVuaW5nX3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG4gIGJvZHlfc3R5bGUgOiBzdHlsZV9uYW1lIG9wdGlvbjtcbiAgc2VwYXJhdG9yX3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG4gIGNsb3Npbmdfc3R5bGUgOiBzdHlsZV9uYW1lIG9wdGlvbjtcbn1cblxubGV0IGxpc3QgPSB7XG4gIHNwYWNlX2FmdGVyX29wZW5pbmcgPSB0cnVlO1xuICBzcGFjZV9hZnRlcl9zZXBhcmF0b3IgPSB0cnVlO1xuICBzcGFjZV9iZWZvcmVfc2VwYXJhdG9yID0gZmFsc2U7XG4gIHNlcGFyYXRvcnNfc3RpY2tfbGVmdCA9IHRydWU7XG4gIHNwYWNlX2JlZm9yZV9jbG9zaW5nID0gdHJ1ZTtcbiAgc3RpY2tfdG9fbGFiZWwgPSB0cnVlO1xuICBhbGlnbl9jbG9zaW5nID0gdHJ1ZTtcbiAgd3JhcF9ib2R5ID0gYFdyYXBfYXRvbXM7XG4gIGluZGVudF9ib2R5ID0gMjtcbiAgbGlzdF9zdHlsZSA9IE5vbmU7XG4gIG9wZW5pbmdfc3R5bGUgPSBOb25lO1xuICBib2R5X3N0eWxlID0gTm9uZTtcbiAgc2VwYXJhdG9yX3N0eWxlID0gTm9uZTtcbiAgY2xvc2luZ19zdHlsZSA9IE5vbmU7XG59XG5cbnR5cGUgbGFiZWxfcGFyYW0gPSB7XG4gIGxhYmVsX2JyZWFrOiBsYWJlbF9icmVhaztcbiAgc3BhY2VfYWZ0ZXJfbGFiZWwgOiBib29sO1xuICBpbmRlbnRfYWZ0ZXJfbGFiZWwgOiBpbnQ7XG4gIGxhYmVsX3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG59XG5cbmxldCBsYWJlbCA9IHtcbiAgbGFiZWxfYnJlYWsgPSBgQXV0bztcbiAgc3BhY2VfYWZ0ZXJfbGFiZWwgPSB0cnVlO1xuICBpbmRlbnRfYWZ0ZXJfbGFiZWwgPSAyO1xuICBsYWJlbF9zdHlsZSA9IE5vbmU7XG59XG5cbnR5cGUgdCA9XG4gICAgQXRvbSBvZiBzdHJpbmcgKiBhdG9tX3BhcmFtXG4gIHwgTGlzdCBvZiAoc3RyaW5nICogc3RyaW5nICogc3RyaW5nICogbGlzdF9wYXJhbSkgKiB0IGxpc3RcbiAgfCBMYWJlbCBvZiAodCAqIGxhYmVsX3BhcmFtKSAqIHRcbiAgfCBDdXN0b20gb2YgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gdW5pdClcblxudHlwZSBlc2NhcGUgPVxuICAgIFsgYE5vbmVcbiAgICB8IGBFc2NhcGUgb2ZcbiAgICAgICAgKChzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0KSAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0KVxuICAgIHwgYEVzY2FwZV9zdHJpbmcgb2YgKHN0cmluZyAtPiBzdHJpbmcpIF1cblxudHlwZSBzdHlsZXMgPSAoc3R5bGVfbmFtZSAqIHN0eWxlKSBsaXN0XG5cbigqXG4gICBUcmFuc2Zvcm0gYSB0cmVlIHN0YXJ0aW5nIGZyb20gdGhlIGxlYXZlcywgcHJvcGFnYXRpbmcgYW5kIG1lcmdpbmdcbiAgIGFjY3VtdWxhdG9ycyB1bnRpbCByZWFjaGluZyB0aGUgcm9vdC5cbiopXG5sZXQgcHJvcGFnYXRlX2Zyb21fbGVhZl90b19yb290XG4gIH5pbml0X2FjYyAgKCogY3JlYXRlIGluaXRpYWwgYWNjdW11bGF0b3IgZm9yIGEgbGVhZiAqKVxuICB+bWVyZ2VfYWNjICgqIG1lcmdlIHR3byBhY2N1bXVsYXRvcnMgY29taW5nIGZyb20gY2hpbGQgbm9kZXMgKilcbiAgfm1hcF9ub2RlICAoKiAobm9kZSwgYWNjKSAtPiAobm9kZSwgYWNjKSAqKVxuICB4ID1cblxuICBsZXQgcmVjIGF1eCB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEF0b20gXyAtPlxuICAgICAgICBsZXQgYWNjID0gaW5pdF9hY2MgeCBpblxuICAgICAgICBtYXBfbm9kZSB4IGFjY1xuICAgIHwgTGlzdCAocGFyYW0sIGNoaWxkcmVuKSAtPlxuICAgICAgICBsZXQgbmV3X2NoaWxkcmVuLCBhY2NzID0gcmV2X3NwbGl0IChMaXN0LnJldl9tYXAgYXV4IGNoaWxkcmVuKSBpblxuICAgICAgICBsZXQgYWNjID0gTGlzdC5mb2xkX2xlZnQgbWVyZ2VfYWNjIChpbml0X2FjYyB4KSBhY2NzIGluXG4gICAgICAgIG1hcF9ub2RlIChMaXN0IChwYXJhbSwgbmV3X2NoaWxkcmVuKSkgYWNjXG4gICAgfCBMYWJlbCAoKHgxLCBwYXJhbSksIHgyKSAtPlxuICAgICAgICBsZXQgYWNjMCA9IGluaXRfYWNjIHggaW5cbiAgICAgICAgbGV0IG5ld194MSwgYWNjMSA9IGF1eCB4MSBpblxuICAgICAgICBsZXQgbmV3X3gyLCBhY2MyID0gYXV4IHgyIGluXG4gICAgICAgIGxldCBhY2MgPSBtZXJnZV9hY2MgKG1lcmdlX2FjYyBhY2MwIGFjYzEpIGFjYzIgaW5cbiAgICAgICAgbWFwX25vZGUgKExhYmVsICgobmV3X3gxLCBwYXJhbSksIG5ld194MikpIGFjY1xuICAgIHwgQ3VzdG9tIF8gLT5cbiAgICAgICAgbGV0IGFjYyA9IGluaXRfYWNjIHggaW5cbiAgICAgICAgbWFwX25vZGUgeCBhY2NcbiAgaW5cbiAgYXV4IHhcblxuKCpcbiAgIENvbnZlcnQgd3JhcHBhYmxlIGxpc3RzIGludG8gdmVydGljYWwgbGlzdHMgaWYgYW55IG9mIHRoZWlyIGRlc2NlbmRhbnRzXG4gICBoYXMgdGhlIGF0dHJpYnV0ZSB3cmFwX2JvZHkgPSBgRm9yY2VfYnJlYWtzX3JlYy5cbiopXG5sZXQgcHJvcGFnYXRlX2ZvcmNlZF9icmVha3MgeCA9XG4gICgqIGFjYyA9IHdoZXRoZXIgdG8gZm9yY2UgYnJlYWtzIGluIHdyYXBwYWJsZSBsaXN0cyBvciBsYWJlbHMgKilcbiAgbGV0IGluaXRfYWNjID0gZnVuY3Rpb25cbiAgICB8IExpc3QgKChfLCBfLCBfLCB7IHdyYXBfYm9keSA9IGBGb3JjZV9icmVha3NfcmVjOyBfIH0pLCBfKVxuICAgIHwgTGFiZWwgKChfLCB7IGxhYmVsX2JyZWFrID0gYEFsd2F5c19yZWM7IF8gfSksIF8pIC0+IHRydWVcbiAgICB8IEF0b20gX1xuICAgIHwgTGFiZWwgX1xuICAgIHwgQ3VzdG9tIF9cbiAgICB8IExpc3QgXyAtPiBmYWxzZVxuICBpblxuICBsZXQgbWVyZ2VfYWNjIGZvcmNlX2JyZWFrczEgZm9yY2VfYnJlYWtzMiA9XG4gICAgZm9yY2VfYnJlYWtzMSB8fCBmb3JjZV9icmVha3MyXG4gIGluXG4gIGxldCBtYXBfbm9kZSB4IGZvcmNlX2JyZWFrcyA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBMaXN0ICgoXywgXywgXywgeyB3cmFwX2JvZHkgPSBgRm9yY2VfYnJlYWtzX3JlYzsgXyB9KSwgXykgLT4geCwgdHJ1ZVxuICAgIHwgTGlzdCAoKF8sIF8sIF8sIHsgd3JhcF9ib2R5ID0gYEZvcmNlX2JyZWFrczsgXyB9KSwgXykgLT4geCwgZm9yY2VfYnJlYWtzXG5cbiAgICB8IExpc3QgKChvcCwgc2VwLCBjbCwgKHsgd3JhcF9ib2R5ID0gKGBXcmFwX2F0b21zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYE5ldmVyX3dyYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgQWx3YXlzX3dyYXApOyBfIH0gYXMgcCkpLFxuICAgICAgICAgICAgY2hpbGRyZW4pIC0+XG4gICAgICAgIGlmIGZvcmNlX2JyZWFrcyB0aGVuXG4gICAgICAgICAgbGV0IHAgPSB7IHAgd2l0aCB3cmFwX2JvZHkgPSBgRm9yY2VfYnJlYWtzIH0gaW5cbiAgICAgICAgICBMaXN0ICgob3AsIHNlcCwgY2wsIHApLCBjaGlsZHJlbiksIHRydWVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHgsIGZhbHNlXG5cbiAgICB8IExhYmVsICgoYSwgKHsgbGFiZWxfYnJlYWsgPSBgQXV0bzsgXyB9IGFzIGxwKSksIGIpIC0+XG4gICAgICAgIGlmIGZvcmNlX2JyZWFrcyB0aGVuXG4gICAgICAgICAgbGV0IGxwID0geyBscCB3aXRoIGxhYmVsX2JyZWFrID0gYEFsd2F5cyB9IGluXG4gICAgICAgICAgTGFiZWwgKChhLCBscCksIGIpLCB0cnVlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB4LCBmYWxzZVxuXG4gICAgfCBMaXN0ICgoXywgXywgXywgeyB3cmFwX2JvZHkgPSBgTm9fYnJlYWtzOyBfIH0pLCBfKVxuICAgIHwgTGFiZWwgKChfLCB7IGxhYmVsX2JyZWFrID0gKGBBbHdheXMgfCBgQWx3YXlzX3JlYyB8IGBOZXZlcik7IF8gfSksIF8pXG4gICAgfCBBdG9tIF9cbiAgICB8IEN1c3RvbSBfIC0+IHgsIGZvcmNlX2JyZWFrc1xuICBpblxuICBsZXQgbmV3X3gsIF9mb3JjZWRfYnJlYWtzID1cbiAgICBwcm9wYWdhdGVfZnJvbV9sZWFmX3RvX3Jvb3RcbiAgICAgIH5pbml0X2FjY1xuICAgICAgfm1lcmdlX2FjY1xuICAgICAgfm1hcF9ub2RlXG4gICAgICB4XG4gIGluXG4gIG5ld194XG5cbm1vZHVsZSBQcmV0dHkgPVxuc3RydWN0XG4gICgqXG4gICAgIFJld3JpdGUgdGhlIHRyZWUgdG8gYmUgcHJpbnRlZC5cbiAgICAgQ3VycmVudGx5LCB0aGlzIGlzIHVzZWQgb25seSB0byBoYW5kbGUgYEZvcmNlX2JyZWFrc19yZWMuXG4gICopXG4gIGxldCByZXdyaXRlIHggPSBwcm9wYWdhdGVfZm9yY2VkX2JyZWFrcyB4XG5cbiAgKCpcbiAgICBSZWxpZXMgb24gdGhlIGZhY3QgdGhhdCBtYXJrX29wZW5fdGFnIGFuZCBtYXJrX2Nsb3NlX3RhZ1xuICAgIGFyZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSBjYWxsaW5nIHBwX291dHB1dF9zdHJpbmcgb25jZS5cbiAgICBJdCdzIGEgcmVhc29uYWJsZSBhc3N1bXB0aW9uIGFsdGhvdWdoIG5vdCBndWFyYW50ZWVkIGJ5IHRoZVxuICAgIGRvY3VtZW50YXRpb24gb2YgdGhlIEZvcm1hdCBtb2R1bGUuXG4gICopXG4gIGxldCBzZXRfZXNjYXBlIGZtdCBlc2NhcGUgPVxuICAgIGxldCBwcmludDAsIGZsdXNoMCA9IEZvcm1hdC5wcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgZm10ICgpIGluXG4gICAgbGV0IHRhZ2YwID0gRm9ybWF0LnBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgZm10ICgpIGluXG5cbiAgICBsZXQgaXNfdGFnID0gcmVmIGZhbHNlIGluXG5cbiAgICBsZXQgbW90IHRhZyA9XG4gICAgICBpc190YWcgOj0gdHJ1ZTtcbiAgICAgIHRhZ2YwLm1hcmtfb3Blbl9zdGFnIHRhZ1xuICAgIGluXG5cbiAgICBsZXQgbWN0IHRhZyA9XG4gICAgICBpc190YWcgOj0gdHJ1ZTtcbiAgICAgIHRhZ2YwLm1hcmtfY2xvc2Vfc3RhZyB0YWdcbiAgICBpblxuXG4gICAgbGV0IHByaW50IHMgcCBuID1cbiAgICAgIGlmICFpc190YWcgdGhlblxuICAgICAgICAocHJpbnQwIHMgcCBuO1xuICAgICAgICAgaXNfdGFnIDo9IGZhbHNlKVxuICAgICAgZWxzZVxuICAgICAgICBlc2NhcGUgcHJpbnQwIHMgcCBuXG4gICAgaW5cblxuICAgIGxldCB0YWdmID0ge1xuICAgICAgdGFnZjAgd2l0aFxuICAgICAgICBtYXJrX29wZW5fc3RhZyA9IG1vdDtcbiAgICAgICAgbWFya19jbG9zZV9zdGFnID0gbWN0XG4gICAgfVxuICAgIGluXG4gICAgRm9ybWF0LnBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBmbXQgcHJpbnQgZmx1c2gwO1xuICAgIEZvcm1hdC5wcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIGZtdCB0YWdmXG5cblxuICBsZXQgc2V0X2VzY2FwZV9zdHJpbmcgZm10IGVzYyA9XG4gICAgbGV0IGVzY2FwZSBwcmludCBzIHAgbiA9XG4gICAgICBsZXQgczAgPSBTdHJpbmcuc3ViIHMgcCBuIGluXG4gICAgICBsZXQgczEgPSBlc2MgczAgaW5cbiAgICAgIHByaW50IHMxIDAgKFN0cmluZy5sZW5ndGggczEpXG4gICAgaW5cbiAgICBzZXRfZXNjYXBlIGZtdCBlc2NhcGVcblxuXG4gIGxldCBkZWZpbmVfc3R5bGVzIGZtdCBlc2NhcGUgbCA9XG4gICAgaWYgbCA8PiBbXSB0aGVuIChcbiAgICAgIEZvcm1hdC5wcF9zZXRfdGFncyBmbXQgdHJ1ZTtcbiAgICAgIGxldCB0YmwxID0gSGFzaHRibC5jcmVhdGUgKDIgKiBMaXN0Lmxlbmd0aCBsKSBpblxuICAgICAgbGV0IHRibDIgPSBIYXNodGJsLmNyZWF0ZSAoMiAqIExpc3QubGVuZ3RoIGwpIGluXG4gICAgICBMaXN0Lml0ZXIgKFxuICAgICAgICBmdW4gKHN0eWxlX25hbWUsIHN0eWxlKSAtPlxuICAgICAgICAgIEhhc2h0YmwuYWRkIHRibDEgc3R5bGVfbmFtZSBzdHlsZS50YWdfb3BlbjtcbiAgICAgICAgICBIYXNodGJsLmFkZCB0YmwyIHN0eWxlX25hbWUgc3R5bGUudGFnX2Nsb3NlXG4gICAgICApIGw7XG4gICAgICBsZXQgbWFya19vcGVuX3RhZyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRm9ybWF0LlN0cmluZ190YWcgc3R5bGVfbmFtZSAtPlxuICAgICAgICAgICAgKHRyeSBIYXNodGJsLmZpbmQgdGJsMSBzdHlsZV9uYW1lXG4gICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gXCJcIilcbiAgICAgICAgfCBfIC0+IFwiXCJcbiAgICAgIGluXG4gICAgICBsZXQgbWFya19jbG9zZV90YWcgPSBmdW5jdGlvblxuICAgICAgICB8IEZvcm1hdC5TdHJpbmdfdGFnIHN0eWxlX25hbWUgLT5cbiAgICAgICAgICAgICh0cnkgSGFzaHRibC5maW5kIHRibDIgc3R5bGVfbmFtZVxuICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFwiXCIpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgXCJcIlxuICAgICAgaW5cblxuICAgICAgbGV0IHRhZ2YgPSB7XG4gICAgICAgIChGb3JtYXQucHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBmbXQgKCkpIHdpdGhcbiAgICAgICAgICBtYXJrX29wZW5fc3RhZyA9IG1hcmtfb3Blbl90YWc7XG4gICAgICAgICAgbWFya19jbG9zZV9zdGFnID0gbWFya19jbG9zZV90YWdcbiAgICAgIH1cbiAgICAgIGluXG4gICAgICBGb3JtYXQucHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBmbXQgdGFnZlxuICAgICk7XG5cbiAgICAobWF0Y2ggZXNjYXBlIHdpdGhcbiAgICAgICAgIGBOb25lIC0+ICgpXG4gICAgICAgfCBgRXNjYXBlIGVzYyAtPiBzZXRfZXNjYXBlIGZtdCBlc2NcbiAgICAgICB8IGBFc2NhcGVfc3RyaW5nIGVzYyAtPiBzZXRfZXNjYXBlX3N0cmluZyBmbXQgZXNjKVxuXG5cbiAgbGV0IHBwX29wZW5feGJveCBmbXQgcCBpbmRlbnQgPVxuICAgIG1hdGNoIHAud3JhcF9ib2R5IHdpdGhcbiAgICAgICAgYEFsd2F5c193cmFwXG4gICAgICB8IGBOZXZlcl93cmFwXG4gICAgICB8IGBXcmFwX2F0b21zIC0+IEZvcm1hdC5wcF9vcGVuX2h2Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYEZvcmNlX2JyZWFrc1xuICAgICAgfCBgRm9yY2VfYnJlYWtzX3JlYyAtPiBGb3JtYXQucHBfb3Blbl92Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYE5vX2JyZWFrcyAtPiBGb3JtYXQucHBfb3Blbl9oYm94IGZtdCAoKVxuXG4gIGxldCBleHRyYV9ib3ggcCBsID1cbiAgICBsZXQgd3JhcCA9XG4gICAgICBtYXRjaCBwLndyYXBfYm9keSB3aXRoXG4gICAgICAgICAgYEFsd2F5c193cmFwIC0+IHRydWVcbiAgICAgICAgfCBgTmV2ZXJfd3JhcFxuICAgICAgICB8IGBGb3JjZV9icmVha3NcbiAgICAgICAgfCBgRm9yY2VfYnJlYWtzX3JlY1xuICAgICAgICB8IGBOb19icmVha3MgLT4gZmFsc2VcbiAgICAgICAgfCBgV3JhcF9hdG9tcyAtPlxuICAgICAgICAgICAgTGlzdC5mb3JfYWxsIChmdW5jdGlvbiBBdG9tIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIGxcbiAgICBpblxuICAgIGlmIHdyYXAgdGhlblxuICAgICAgKChmdW4gZm10IC0+IEZvcm1hdC5wcF9vcGVuX2hvdmJveCBmbXQgMCksXG4gICAgICAgKGZ1biBmbXQgLT4gRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKCkpKVxuICAgIGVsc2VcbiAgICAgICgoZnVuIF8gLT4gKCkpLFxuICAgICAgIChmdW4gXyAtPiAoKSkpXG5cblxuICBsZXQgcHBfb3Blbl9ub25hbGlnbmVkX2JveCBmbXQgcCBpbmRlbnQgbCA9XG4gICAgbWF0Y2ggcC53cmFwX2JvZHkgd2l0aFxuICAgICAgICBgQWx3YXlzX3dyYXAgLT4gRm9ybWF0LnBwX29wZW5faG92Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYE5ldmVyX3dyYXAgLT4gRm9ybWF0LnBwX29wZW5faHZib3ggZm10IGluZGVudFxuICAgICAgfCBgV3JhcF9hdG9tcyAtPlxuICAgICAgICAgIGlmIExpc3QuZm9yX2FsbCAoZnVuY3Rpb24gQXRvbSBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSBsIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5wcF9vcGVuX2hvdmJveCBmbXQgaW5kZW50XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgRm9ybWF0LnBwX29wZW5faHZib3ggZm10IGluZGVudFxuICAgICAgfCBgRm9yY2VfYnJlYWtzXG4gICAgICB8IGBGb3JjZV9icmVha3NfcmVjIC0+IEZvcm1hdC5wcF9vcGVuX3Zib3ggZm10IGluZGVudFxuICAgICAgfCBgTm9fYnJlYWtzIC0+IEZvcm1hdC5wcF9vcGVuX2hib3ggZm10ICgpXG5cblxuICBsZXQgb3Blbl90YWcgZm10ID0gZnVuY3Rpb25cbiAgICAgIE5vbmUgLT4gKClcbiAgICB8IFNvbWUgcyAtPiBGb3JtYXQucHBfb3Blbl9zdGFnIGZtdCAoRm9ybWF0LlN0cmluZ190YWcgcylcblxuICBsZXQgY2xvc2VfdGFnIGZtdCA9IGZ1bmN0aW9uXG4gICAgICBOb25lIC0+ICgpXG4gICAgfCBTb21lIF8gLT4gRm9ybWF0LnBwX2Nsb3NlX3N0YWcgZm10ICgpXG5cbiAgbGV0IHRhZ19zdHJpbmcgZm10IG8gcyA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgICAgIE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgc1xuICAgICAgfCBTb21lIHRhZyAtPlxuICAgICAgICAgIEZvcm1hdC5wcF9vcGVuX3N0YWcgZm10IChGb3JtYXQuU3RyaW5nX3RhZyB0YWcpO1xuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IHM7XG4gICAgICAgICAgRm9ybWF0LnBwX2Nsb3NlX3N0YWcgZm10ICgpXG5cbiAgbGV0IHJlYyBmcHJpbnRfdCBmbXQgPSBmdW5jdGlvblxuICAgICAgQXRvbSAocywgcCkgLT5cbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5hdG9tX3N0eWxlIHM7XG5cbiAgICB8IExpc3QgKChfLCBfLCBfLCBwKSBhcyBwYXJhbSwgbCkgLT5cbiAgICAgICAgb3Blbl90YWcgZm10IHAubGlzdF9zdHlsZTtcbiAgICAgICAgaWYgcC5hbGlnbl9jbG9zaW5nIHRoZW5cbiAgICAgICAgICBmcHJpbnRfbGlzdCBmbXQgTm9uZSBwYXJhbSBsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmcHJpbnRfbGlzdDIgZm10IHBhcmFtIGw7XG4gICAgICAgIGNsb3NlX3RhZyBmbXQgcC5saXN0X3N0eWxlXG5cbiAgICB8IExhYmVsIChsYWJlbCwgeCkgLT4gZnByaW50X3BhaXIgZm10IGxhYmVsIHhcbiAgICB8IEN1c3RvbSBmIC0+IGYgZm10XG5cbiAgYW5kIGZwcmludF9saXN0X2JvZHlfc3RpY2tfbGVmdCBmbXQgcCBzZXAgaGQgdGwgPVxuICAgIG9wZW5fdGFnIGZtdCBwLmJvZHlfc3R5bGU7XG4gICAgZnByaW50X3QgZm10IGhkO1xuICAgIExpc3QuaXRlciAoXG4gICAgICBmdW4geCAtPlxuICAgICAgICBpZiBwLnNwYWNlX2JlZm9yZV9zZXBhcmF0b3IgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiIFwiO1xuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLnNlcGFyYXRvcl9zdHlsZSBzZXA7XG4gICAgICAgIGlmIHAuc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZm10ICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfY3V0IGZtdCAoKTtcbiAgICAgICAgZnByaW50X3QgZm10IHhcbiAgICApIHRsO1xuICAgIGNsb3NlX3RhZyBmbXQgcC5ib2R5X3N0eWxlXG5cbiAgYW5kIGZwcmludF9saXN0X2JvZHlfc3RpY2tfcmlnaHQgZm10IHAgc2VwIGhkIHRsID1cbiAgICBvcGVuX3RhZyBmbXQgcC5ib2R5X3N0eWxlO1xuICAgIGZwcmludF90IGZtdCBoZDtcbiAgICBMaXN0Lml0ZXIgKFxuICAgICAgZnVuIHggLT5cbiAgICAgICAgaWYgcC5zcGFjZV9iZWZvcmVfc2VwYXJhdG9yIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZm10ICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfY3V0IGZtdCAoKTtcbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5zZXBhcmF0b3Jfc3R5bGUgc2VwO1xuICAgICAgICBpZiBwLnNwYWNlX2FmdGVyX3NlcGFyYXRvciB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG4gICAgICAgIGZwcmludF90IGZtdCB4XG4gICAgKSB0bDtcbiAgICBjbG9zZV90YWcgZm10IHAuYm9keV9zdHlsZVxuXG4gIGFuZCBmcHJpbnRfb3B0X2xhYmVsIGZtdCA9IGZ1bmN0aW9uXG4gICAgICBOb25lIC0+ICgpXG4gICAgfCBTb21lIChsYWIsIGxwKSAtPlxuICAgICAgICBvcGVuX3RhZyBmbXQgbHAubGFiZWxfc3R5bGU7XG4gICAgICAgIGZwcmludF90IGZtdCBsYWI7XG4gICAgICAgIGNsb3NlX3RhZyBmbXQgbHAubGFiZWxfc3R5bGU7XG4gICAgICAgIGlmIGxwLnNwYWNlX2FmdGVyX2xhYmVsIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIlxuXG4gICgqIEVpdGhlciBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGxpc3QgKilcbiAgYW5kIGZwcmludF9saXN0IGZtdCBsYWJlbCAoKG9wLCBfc2VwLCBjbCwgcCkgYXMgcGFyYW0pID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+XG4gICAgICAgIGZwcmludF9vcHRfbGFiZWwgZm10IGxhYmVsO1xuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLm9wZW5pbmdfc3R5bGUgb3A7XG4gICAgICAgIGlmIHAuc3BhY2VfYWZ0ZXJfb3BlbmluZyB8fCBwLnNwYWNlX2JlZm9yZV9jbG9zaW5nIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIjtcbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5jbG9zaW5nX3N0eWxlIGNsXG5cbiAgICB8IGhkIDo6IHRsIGFzIGwgLT5cblxuICAgICAgICBpZiB0bCA9IFtdIHx8IHAuc2VwYXJhdG9yc19zdGlja19sZWZ0IHRoZW5cbiAgICAgICAgICBmcHJpbnRfbGlzdF9zdGlja19sZWZ0IGZtdCBsYWJlbCBwYXJhbSBoZCB0bCBsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmcHJpbnRfbGlzdF9zdGlja19yaWdodCBmbXQgbGFiZWwgcGFyYW0gaGQgdGwgbFxuXG5cbiAgYW5kIGZwcmludF9saXN0X3N0aWNrX2xlZnQgZm10IGxhYmVsIChvcCwgc2VwLCBjbCwgcCkgaGQgdGwgbCA9XG4gICAgbGV0IGluZGVudCA9IHAuaW5kZW50X2JvZHkgaW5cbiAgICBwcF9vcGVuX3hib3ggZm10IHAgaW5kZW50O1xuICAgIGZwcmludF9vcHRfbGFiZWwgZm10IGxhYmVsO1xuXG4gICAgdGFnX3N0cmluZyBmbXQgcC5vcGVuaW5nX3N0eWxlIG9wO1xuXG4gICAgaWYgcC5zcGFjZV9hZnRlcl9vcGVuaW5nIHRoZW5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zcGFjZSBmbXQgKClcbiAgICBlbHNlXG4gICAgICBGb3JtYXQucHBfcHJpbnRfY3V0IGZtdCAoKTtcblxuICAgIGxldCBvcGVuX2V4dHJhLCBjbG9zZV9leHRyYSA9IGV4dHJhX2JveCBwIGwgaW5cbiAgICBvcGVuX2V4dHJhIGZtdDtcbiAgICBmcHJpbnRfbGlzdF9ib2R5X3N0aWNrX2xlZnQgZm10IHAgc2VwIGhkIHRsO1xuICAgIGNsb3NlX2V4dHJhIGZtdDtcblxuICAgIGlmIHAuc3BhY2VfYmVmb3JlX2Nsb3NpbmcgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAxICgtaW5kZW50KVxuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMCAoLWluZGVudCk7XG4gICAgdGFnX3N0cmluZyBmbXQgcC5jbG9zaW5nX3N0eWxlIGNsO1xuICAgIEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpXG5cbiAgYW5kIGZwcmludF9saXN0X3N0aWNrX3JpZ2h0IGZtdCBsYWJlbCAob3AsIHNlcCwgY2wsIHApIGhkIHRsIGwgPVxuICAgIGxldCBiYXNlX2luZGVudCA9IHAuaW5kZW50X2JvZHkgaW5cbiAgICBsZXQgc2VwX2luZGVudCA9XG4gICAgICBTdHJpbmcubGVuZ3RoIHNlcCArIChpZiBwLnNwYWNlX2FmdGVyX3NlcGFyYXRvciB0aGVuIDEgZWxzZSAwKVxuICAgIGluXG4gICAgbGV0IGluZGVudCA9IGJhc2VfaW5kZW50ICsgc2VwX2luZGVudCBpblxuXG4gICAgcHBfb3Blbl94Ym94IGZtdCBwIGluZGVudDtcbiAgICBmcHJpbnRfb3B0X2xhYmVsIGZtdCBsYWJlbDtcblxuICAgIHRhZ19zdHJpbmcgZm10IHAub3BlbmluZ19zdHlsZSBvcDtcblxuICAgIGlmIHAuc3BhY2VfYWZ0ZXJfb3BlbmluZyB0aGVuXG4gICAgICBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZm10ICgpXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LnBwX3ByaW50X2N1dCBmbXQgKCk7XG5cbiAgICBsZXQgb3Blbl9leHRyYSwgY2xvc2VfZXh0cmEgPSBleHRyYV9ib3ggcCBsIGluXG4gICAgb3Blbl9leHRyYSBmbXQ7XG5cbiAgICBmcHJpbnRfdCBmbXQgaGQ7XG4gICAgTGlzdC5pdGVyIChcbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIGlmIHAuc3BhY2VfYmVmb3JlX3NlcGFyYXRvciB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAxICgtc2VwX2luZGVudClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMCAoLXNlcF9pbmRlbnQpO1xuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLnNlcGFyYXRvcl9zdHlsZSBzZXA7XG4gICAgICAgIGlmIHAuc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIjtcbiAgICAgICAgZnByaW50X3QgZm10IHhcbiAgICApIHRsO1xuXG4gICAgY2xvc2VfZXh0cmEgZm10O1xuXG4gICAgaWYgcC5zcGFjZV9iZWZvcmVfY2xvc2luZyB0aGVuXG4gICAgICBGb3JtYXQucHBfcHJpbnRfYnJlYWsgZm10IDEgKC1pbmRlbnQpXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAwICgtaW5kZW50KTtcbiAgICB0YWdfc3RyaW5nIGZtdCBwLmNsb3Npbmdfc3R5bGUgY2w7XG4gICAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKClcblxuXG5cbiAgKCogYWxpZ25fY2xvc2luZyA9IGZhbHNlICopXG4gIGFuZCBmcHJpbnRfbGlzdDIgZm10IChvcCwgc2VwLCBjbCwgcCkgPSBmdW5jdGlvblxuICAgICAgW10gLT5cbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5vcGVuaW5nX3N0eWxlIG9wO1xuICAgICAgICBpZiBwLnNwYWNlX2FmdGVyX29wZW5pbmcgfHwgcC5zcGFjZV9iZWZvcmVfY2xvc2luZyB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAuY2xvc2luZ19zdHlsZSBjbFxuXG4gICAgfCBoZCA6OiB0bCBhcyBsIC0+XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAub3BlbmluZ19zdHlsZSBvcDtcbiAgICAgICAgaWYgcC5zcGFjZV9hZnRlcl9vcGVuaW5nIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIjtcblxuICAgICAgICBwcF9vcGVuX25vbmFsaWduZWRfYm94IGZtdCBwIDAgbCA7XG4gICAgICAgIGlmIHAuc2VwYXJhdG9yc19zdGlja19sZWZ0IHRoZW5cbiAgICAgICAgICBmcHJpbnRfbGlzdF9ib2R5X3N0aWNrX2xlZnQgZm10IHAgc2VwIGhkIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmcHJpbnRfbGlzdF9ib2R5X3N0aWNrX3JpZ2h0IGZtdCBwIHNlcCBoZCB0bDtcbiAgICAgICAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKCk7XG5cbiAgICAgICAgaWYgcC5zcGFjZV9iZWZvcmVfY2xvc2luZyB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAuY2xvc2luZ19zdHlsZSBjbFxuXG5cbiAgKCogUHJpbnRpbmcgYSBsYWJlbDp2YWx1ZSBwYWlyLlxuXG4gICAgIFRoZSBvcGVuaW5nIGJyYWNrZXQgc3RheXMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUga2V5LCBubyBtYXR0ZXIgd2hhdCxcbiAgICAgYW5kIHRoZSBjbG9zaW5nIGJyYWNrZXQgaXMgZWl0aGVyIG9uIHRoZSBzYW1lIGxpbmVcbiAgICAgb3IgdmVydGljYWxseSBhbGlnbmVkIHdpdGggdGhlIGJlZ2lubmluZyBvZiB0aGUga2V5LlxuICAqKVxuICBhbmQgZnByaW50X3BhaXIgZm10ICgobGFiLCBscCkgYXMgbGFiZWwpIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgICBMaXN0ICgob3AsIHNlcCwgY2wsIHApLCBsKSB3aGVuIHAuc3RpY2tfdG9fbGFiZWwgJiYgcC5hbGlnbl9jbG9zaW5nIC0+XG4gICAgICAgICAgZnByaW50X2xpc3QgZm10IChTb21lIGxhYmVsKSAob3AsIHNlcCwgY2wsIHApIGxcblxuICAgICAgfCBfIC0+XG4gICAgICAgICAgbGV0IGluZGVudCA9IGxwLmluZGVudF9hZnRlcl9sYWJlbCBpblxuICAgICAgICAgIEZvcm1hdC5wcF9vcGVuX2h2Ym94IGZtdCAwO1xuXG4gICAgICAgICAgb3Blbl90YWcgZm10IGxwLmxhYmVsX3N0eWxlO1xuICAgICAgICAgIGZwcmludF90IGZtdCBsYWI7XG4gICAgICAgICAgY2xvc2VfdGFnIGZtdCBscC5sYWJlbF9zdHlsZTtcblxuICAgICAgICAgIChtYXRjaCBscC5sYWJlbF9icmVhayB3aXRoXG4gICAgICAgICAgIHwgYEF1dG8gLT5cbiAgICAgICAgICAgICAgIGlmIGxwLnNwYWNlX2FmdGVyX2xhYmVsIHRoZW5cbiAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAxIGluZGVudFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfYnJlYWsgZm10IDAgaW5kZW50XG4gICAgICAgICAgIHwgYEFsd2F5c1xuICAgICAgICAgICB8IGBBbHdheXNfcmVjIC0+XG4gICAgICAgICAgICAgICBGb3JtYXQucHBfZm9yY2VfbmV3bGluZSBmbXQgKCk7XG4gICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCAoU3RyaW5nLm1ha2UgaW5kZW50ICcgJylcbiAgICAgICAgICAgfCBgTmV2ZXIgLT5cbiAgICAgICAgICAgICAgIGlmIGxwLnNwYWNlX2FmdGVyX2xhYmVsIHRoZW5cbiAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2NoYXIgZm10ICcgJ1xuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICk7XG4gICAgICAgICAgZnByaW50X3QgZm10IHg7XG4gICAgICAgICAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKClcblxuICBsZXQgdG9fZm9ybWF0dGVyIGZtdCB4ID1cbiAgICBsZXQgeCA9IHJld3JpdGUgeCBpblxuICAgIGZwcmludF90IGZtdCB4O1xuICAgIEZvcm1hdC5wcF9wcmludF9mbHVzaCBmbXQgKClcblxuICBsZXQgdG9fYnVmZmVyID8oZXNjYXBlID0gYE5vbmUpID8oc3R5bGVzID0gW10pIGJ1ZiB4ID1cbiAgICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gICAgZGVmaW5lX3N0eWxlcyBmbXQgZXNjYXBlIHN0eWxlcztcbiAgICB0b19mb3JtYXR0ZXIgZm10IHhcblxuICBsZXQgdG9fc3RyaW5nID9lc2NhcGUgP3N0eWxlcyB4ID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA1MDAgaW5cbiAgICB0b19idWZmZXIgP2VzY2FwZSA/c3R5bGVzIGJ1ZiB4O1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxuICBsZXQgdG9fY2hhbm5lbCA/KGVzY2FwZSA9IGBOb25lKSA/KHN0eWxlcyA9IFtdKSBvYyB4ID1cbiAgICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgIGRlZmluZV9zdHlsZXMgZm10IGVzY2FwZSBzdHlsZXM7XG4gICAgdG9fZm9ybWF0dGVyIGZtdCB4XG5cbiAgbGV0IHRvX3N0ZG91dCA/ZXNjYXBlID9zdHlsZXMgeCA9IHRvX2NoYW5uZWwgP2VzY2FwZSA/c3R5bGVzIHN0ZG91dCB4XG4gIGxldCB0b19zdGRlcnIgP2VzY2FwZSA/c3R5bGVzIHggPSB0b19jaGFubmVsID9lc2NhcGUgP3N0eWxlcyBzdGRlcnIgeFxuXG5lbmRcblxuXG5cblxubW9kdWxlIENvbXBhY3QgPVxuc3RydWN0XG4gIG9wZW4gUHJpbnRmXG5cbiAgbGV0IHJlYyBmcHJpbnRfdCBidWYgPSBmdW5jdGlvblxuICAgICAgQXRvbSAocywgXykgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHNcbiAgICB8IExpc3QgKHBhcmFtLCBsKSAtPiBmcHJpbnRfbGlzdCBidWYgcGFyYW0gbFxuICAgIHwgTGFiZWwgKGxhYmVsLCB4KSAtPiBmcHJpbnRfcGFpciBidWYgbGFiZWwgeFxuICAgIHwgQ3VzdG9tIGYgLT5cbiAgICAgICAgKCogV2lsbCBtb3N0IGxpa2VseSBub3QgYmUgY29tcGFjdCAqKVxuICAgICAgICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gICAgICAgIGYgZm10O1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10ICgpXG5cbiAgYW5kIGZwcmludF9saXN0IGJ1ZiAob3AsIHNlcCwgY2wsIF8pID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+IGJwcmludGYgYnVmIFwiJXMlc1wiIG9wIGNsXG4gICAgfCB4IDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBvcDtcbiAgICAgICAgZnByaW50X3QgYnVmIHg7XG4gICAgICAgIExpc3QuaXRlciAoXG4gICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBzZXA7XG4gICAgICAgICAgICBmcHJpbnRfdCBidWYgeFxuICAgICAgICApIHRsO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgY2xcblxuICBhbmQgZnByaW50X3BhaXIgYnVmIChsYWJlbCwgXykgeCA9XG4gICAgZnByaW50X3QgYnVmIGxhYmVsO1xuICAgIGZwcmludF90IGJ1ZiB4XG5cblxuICBsZXQgdG9fYnVmZmVyIGJ1ZiB4ID0gZnByaW50X3QgYnVmIHhcblxuICBsZXQgdG9fc3RyaW5nIHggPVxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDUwMCBpblxuICAgIHRvX2J1ZmZlciBidWYgeDtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IHRvX2Zvcm1hdHRlciBmbXQgeCA9XG4gICAgbGV0IHMgPSB0b19zdHJpbmcgeCBpblxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzXCIgcztcbiAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10ICgpXG5cbiAgbGV0IHRvX2NoYW5uZWwgb2MgeCA9XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNTAwIGluXG4gICAgdG9fYnVmZmVyIGJ1ZiB4O1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIGJ1ZlxuXG4gIGxldCB0b19zdGRvdXQgeCA9IHRvX2NoYW5uZWwgc3Rkb3V0IHhcbiAgbGV0IHRvX3N0ZGVyciB4ID0gdG9fY2hhbm5lbCBzdGRlcnIgeFxuZW5kXG5cblxuXG5cbigqIE9ic29sZXRlICopXG5tb2R1bGUgUGFyYW0gPVxuc3RydWN0XG4gIGxldCBsaXN0X3RydWUgPSB7XG4gICAgc3BhY2VfYWZ0ZXJfb3BlbmluZyA9IHRydWU7XG4gICAgc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yID0gdHJ1ZTtcbiAgICBzcGFjZV9iZWZvcmVfc2VwYXJhdG9yID0gdHJ1ZTtcbiAgICBzZXBhcmF0b3JzX3N0aWNrX2xlZnQgPSB0cnVlO1xuICAgIHNwYWNlX2JlZm9yZV9jbG9zaW5nID0gdHJ1ZTtcbiAgICBzdGlja190b19sYWJlbCA9IHRydWU7XG4gICAgYWxpZ25fY2xvc2luZyA9IHRydWU7XG4gICAgd3JhcF9ib2R5ID0gYFdyYXBfYXRvbXM7XG4gICAgaW5kZW50X2JvZHkgPSAyO1xuICAgIGxpc3Rfc3R5bGUgPSBOb25lO1xuICAgIG9wZW5pbmdfc3R5bGUgPSBOb25lO1xuICAgIGJvZHlfc3R5bGUgPSBOb25lO1xuICAgIHNlcGFyYXRvcl9zdHlsZSA9IE5vbmU7XG4gICAgY2xvc2luZ19zdHlsZSA9IE5vbmU7XG4gIH1cblxuICBsZXQgbGlzdF9mYWxzZSA9IHtcbiAgICBzcGFjZV9hZnRlcl9vcGVuaW5nID0gZmFsc2U7XG4gICAgc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yID0gZmFsc2U7XG4gICAgc3BhY2VfYmVmb3JlX3NlcGFyYXRvciA9IGZhbHNlO1xuICAgIHNlcGFyYXRvcnNfc3RpY2tfbGVmdCA9IGZhbHNlO1xuICAgIHNwYWNlX2JlZm9yZV9jbG9zaW5nID0gZmFsc2U7XG4gICAgc3RpY2tfdG9fbGFiZWwgPSBmYWxzZTtcbiAgICBhbGlnbl9jbG9zaW5nID0gZmFsc2U7XG4gICAgd3JhcF9ib2R5ID0gYFdyYXBfYXRvbXM7XG4gICAgaW5kZW50X2JvZHkgPSAyO1xuICAgIGxpc3Rfc3R5bGUgPSBOb25lO1xuICAgIG9wZW5pbmdfc3R5bGUgPSBOb25lO1xuICAgIGJvZHlfc3R5bGUgPSBOb25lO1xuICAgIHNlcGFyYXRvcl9zdHlsZSA9IE5vbmU7XG4gICAgY2xvc2luZ19zdHlsZSA9IE5vbmU7XG4gIH1cblxuICBsZXQgbGFiZWxfdHJ1ZSA9IHtcbiAgICBsYWJlbF9icmVhayA9IGBBdXRvO1xuICAgIHNwYWNlX2FmdGVyX2xhYmVsID0gdHJ1ZTtcbiAgICBpbmRlbnRfYWZ0ZXJfbGFiZWwgPSAyO1xuICAgIGxhYmVsX3N0eWxlID0gTm9uZTtcbiAgfVxuXG4gIGxldCBsYWJlbF9mYWxzZSA9IHtcbiAgICBsYWJlbF9icmVhayA9IGBBdXRvO1xuICAgIHNwYWNlX2FmdGVyX2xhYmVsID0gZmFsc2U7XG4gICAgaW5kZW50X2FmdGVyX2xhYmVsID0gMjtcbiAgICBsYWJlbF9zdHlsZSA9IE5vbmU7XG4gIH1cbmVuZFxuIiwiZXhjZXB0aW9uIEVycm9yIG9mIHN0cmluZ1xuXG5sZXQgZXJyb3IgcyA9IHJhaXNlIChFcnJvciBzKVxuXG5cbigqXG4gIERlYnVnZ2luZyB1dGlsaXRpZXMuXG4qKVxuXG5sZXQgc3RyaW5nOF9vZl9pbnQgeCA9XG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIDggaW5cbiAgZm9yIGkgPSAwIHRvIDcgZG9cbiAgICBCeXRlcy5zZXQgcyAoNy1pKSAoQ2hhci5jaHIgKDB4ZmYgbGFuZCAoeCBsc3IgKDggKiBpKSkpKVxuICBkb25lO1xuICBCeXRlcy50b19zdHJpbmcgc1xuXG5sZXQgc3RyaW5nNF9vZl9pbnQgeCA9XG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIDQgaW5cbiAgZm9yIGkgPSAwIHRvIDMgZG9cbiAgICBCeXRlcy5zZXQgcyAoMy1pKSAoQ2hhci5jaHIgKDB4ZmYgbGFuZCAoeCBsc3IgKDggKiBpKSkpKVxuICBkb25lO1xuICBCeXRlcy50b19zdHJpbmcgc1xuXG5sZXQgcHJpbnRfYml0cyA/KHBvcyA9IDApID9sZW4gcyA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIHBvcyA8IDAgfHwgKHBvcyA+IDAgJiYgcG9zID49IHNsZW4pIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkJpX3V0aWwucHJpbnRfYml0c1wiO1xuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICBOb25lIC0+IHNsZW4gLSBwb3NcbiAgICAgIHwgU29tZSBsZW4gLT5cbiAgICAgICAgICBpZiBsZW4gPiBzbGVuIC0gcG9zIHRoZW4gaW52YWxpZF9hcmcgXCJCaV91dGlsLnByaW50X2JpdHNcIlxuICAgICAgICAgIGVsc2UgbGVuXG4gIGluXG5cbiAgbGV0IHIgPSBCeXRlcy5jcmVhdGUgKGxlbiAqIDkpIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbGV0IGsgPSBpICogOSBpblxuICAgIGxldCB4ID0gQ2hhci5jb2RlIHMuW3BvcytpXSBpblxuICAgIGZvciBqID0gMCB0byA3IGRvXG4gICAgICBCeXRlcy5zZXQgciAoaytqKSAoaWYgKHggbHNyICg3IC0gaikpIGxhbmQgMSA9IDAgdGhlbiAnMCcgZWxzZSAnMScpXG4gICAgZG9uZTtcbiAgICBCeXRlcy5zZXQgciAoays4KSAoaWYgKGkgKyAxKSBtb2QgOCA9IDAgdGhlbiAnXFxuJyBlbHNlICcgJylcbiAgZG9uZTtcbiAgQnl0ZXMudG9fc3RyaW5nIHJcblxuKCogaW50IHNpemUgaW4gYml0cyAqKVxubGV0IGludF9zaXplID1cbiAgbGV0IGMgPSByZWYgMCBpblxuICBsZXQgciA9IHJlZiAoLTEpIGluXG4gIHdoaWxlICFyIDw+IDAgZG9cbiAgICByIDo9ICFyIGxzciAxO1xuICAgIGluY3IgY1xuICBkb25lO1xuICAhY1xuIiwidHlwZSB0eXBlX2lkID0gaW50XG5cbmxldCBkdW1teV90eXBlX2lkID0gMFxuXG5sZXQgY3JlYXRlX3R5cGVfaWQgPVxuICBsZXQgbiA9IHJlZiBkdW1teV90eXBlX2lkIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgbjtcbiAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgZmFpbHdpdGggXCJCaV9zaGFyZS5SZF9wb2x5LmNyZWF0ZV90eXBlX2lkOiBcXFxuICAgICAgICAgICAgICAgIGV4aGF1c3RlZCBhdmFpbGFibGUgdHlwZV9pZCdzXCJcbiAgICBlbHNlXG4gICAgICAhblxuXG5tb2R1bGUgV3IgPVxuc3RydWN0XG4gIG1vZHVsZSBIID0gSGFzaHRibC5NYWtlIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IE9iai50ICogdHlwZV9pZFxuICAgICAgbGV0IGVxdWFsICh4MSwgdDEpICh4MiwgdDIpID0geDEgPT0geDIgJiYgdDEgPT0gdDJcbiAgICAgIGxldCBoYXNoID0gSGFzaHRibC5oYXNoXG4gICAgZW5kXG4gIClcblxuICB0eXBlIHRibCA9IGludCBILnRcblxuICBsZXQgY3JlYXRlID0gSC5jcmVhdGVcbiAgbGV0IGNsZWFyIHRibCA9XG4gICAgaWYgSC5sZW5ndGggdGJsID4gMCB0aGVuXG4gICAgICBILmNsZWFyIHRibFxuXG4gIGxldCBwdXQgdGJsIGsgcG9zID1cbiAgICB0cnlcbiAgICAgIGxldCBwb3MwID0gSC5maW5kIHRibCAoT2JqLm1hZ2ljIGspIGluXG4gICAgICBwb3MgLSBwb3MwXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIEguYWRkIHRibCAoT2JqLm1hZ2ljIGspIHBvcztcbiAgICAgIDBcbmVuZFxuXG5tb2R1bGUgUmQgPVxuc3RydWN0XG4gIHR5cGUgdGJsID0gKChpbnQgKiB0eXBlX2lkKSwgT2JqLnQpIEhhc2h0YmwudFxuXG4gIGxldCBjcmVhdGUgbiA9IEhhc2h0YmwuY3JlYXRlIG5cbiAgbGV0IGNsZWFyID0gSGFzaHRibC5jbGVhclxuXG4gIGxldCBwdXQgdGJsIHBvcyB4ID1cbiAgICBIYXNodGJsLmFkZCB0YmwgcG9zIHhcblxuICBsZXQgZ2V0IHRibCBwb3MgPVxuICAgIHRyeSBIYXNodGJsLmZpbmQgdGJsIHBvc1xuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKGludmFsaWQgcmVmZXJlbmNlKVwiXG5lbmRcbiIsInR5cGUgdCA9IHtcbiAgbXV0YWJsZSBpX3MgOiBieXRlcztcbiAgbXV0YWJsZSBpX3BvcyA6IGludDtcbiAgbXV0YWJsZSBpX2xlbiA6IGludDtcbiAgbXV0YWJsZSBpX29mZnMgOiBpbnQ7XG4gIG11dGFibGUgaV9tYXhfbGVuIDogaW50O1xuICBpX3JlZmlsbCA6ICh0IC0+IGludCAtPiB1bml0KTtcbiAgaV9zaGFyZWQgOiBCaV9zaGFyZS5SZC50Ymw7XG59XG5cbmV4Y2VwdGlvbiBFbmRfb2ZfaW5wdXRcblxubGV0IHRyeV9wcmVyZWFkIGliIG4gPVxuICBpZiBpYi5pX2xlbiAtIGliLmlfcG9zIDwgbiB0aGVuIChcbiAgICBpYi5pX3JlZmlsbCBpYiBuO1xuICAgIG1pbiAoaWIuaV9sZW4gLSBpYi5pX3BvcykgblxuICApXG4gIGVsc2VcbiAgICBuXG5cbmxldCByZWFkIGliIG4gPVxuICBsZXQgcG9zID0gaWIuaV9wb3MgaW5cbiAgaWYgaWIuaV9sZW4gLSBwb3MgPj0gbiB0aGVuIChcbiAgICBpYi5pX3BvcyA8LSBwb3MgKyBuO1xuICAgIHBvc1xuICApXG4gIGVsc2VcbiAgICBpZiB0cnlfcHJlcmVhZCBpYiBuID49IG4gdGhlblxuICAgICAgbGV0IHBvcyA9IGliLmlfcG9zIGluXG4gICAgICBpYi5pX3BvcyA8LSBpYi5pX3BvcyArIG47XG4gICAgICBwb3NcbiAgICBlbHNlXG4gICAgICByYWlzZSBFbmRfb2ZfaW5wdXRcblxubGV0IHJlYWRfY2hhciBpYiA9XG4gIGxldCBwb3MgPSBpYi5pX3BvcyBpblxuICBpZiBpYi5pX2xlbiAtIHBvcyA+IDAgdGhlbiAoXG4gICAgbGV0IGMgPSBCeXRlcy51bnNhZmVfZ2V0IGliLmlfcyBwb3MgaW5cbiAgICBpYi5pX3BvcyA8LSBwb3MgKyAxO1xuICAgIGNcbiAgKVxuICBlbHNlXG4gICAgaWYgdHJ5X3ByZXJlYWQgaWIgMSA+IDAgdGhlblxuICAgICAgbGV0IHBvcyA9IGliLmlfcG9zIGluXG4gICAgICBsZXQgYyA9IEJ5dGVzLnVuc2FmZV9nZXQgaWIuaV9zIHBvcyBpblxuICAgICAgaWIuaV9wb3MgPC0gcG9zICsgMTtcbiAgICAgIGNcbiAgICBlbHNlXG4gICAgICByYWlzZSBFbmRfb2ZfaW5wdXRcblxubGV0IHBlZWsgaWIgPVxuICBsZXQgcG9zID0gaWIuaV9wb3MgaW5cbiAgaWYgaWIuaV9sZW4gLSBwb3MgPiAwIHRoZW4gKFxuICAgIEJ5dGVzLnVuc2FmZV9nZXQgaWIuaV9zIHBvc1xuICApXG4gIGVsc2VcbiAgICBpZiB0cnlfcHJlcmVhZCBpYiAxID4gMCB0aGVuXG4gICAgICBCeXRlcy51bnNhZmVfZ2V0IGliLmlfcyBpYi5pX3Bvc1xuICAgIGVsc2VcbiAgICAgIHJhaXNlIEVuZF9vZl9pbnB1dFxuXG5sZXQgZnJvbV9ieXRlcyA/KHBvcyA9IDApID8oc2hybGVuID0gMTYpIHMgPSB7XG4gIGlfcyA9IHM7XG4gIGlfcG9zID0gcG9zO1xuICBpX2xlbiA9IEJ5dGVzLmxlbmd0aCBzO1xuICBpX29mZnMgPSAtcG9zO1xuICBpX21heF9sZW4gPSBCeXRlcy5sZW5ndGggcztcbiAgaV9yZWZpbGwgPSAoZnVuIGliIG4gLT4gKCkpO1xuICBpX3NoYXJlZCA9IEJpX3NoYXJlLlJkLmNyZWF0ZSBzaHJsZW47XG59XG5cbmxldCBmcm9tX3N0cmluZyA/cG9zID9zaHJsZW4gcyA9IGZyb21fYnl0ZXMgP3BvcyA/c2hybGVuIChCeXRlcy5vZl9zdHJpbmcgcylcblxuKCpcbiAgTGlrZSBQZXJ2YXNpdmVzLnJlYWxseV9pbnB1dCBidXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzXG4gIHJlYWQgaW5zdGVhZCBvZiByYWlzaW5nIEVuZF9vZl9maWxlIHdoZW4gdGhlIGVuZCBvZiBmaWxlIGlzIHJlYWNoZWQuXG4qKVxubGV0IHJlYyBub3RfcmVhbGx5X2lucHV0IGljIHMgcG9zIGxlbiBhY2N1ID1cbiAgbGV0IG4gPSBpbnB1dCBpYyBzIHBvcyBsZW4gaW5cbiAgaWYgbiA8IGxlbiAmJiBuID4gMCB0aGVuXG4gICAgbm90X3JlYWxseV9pbnB1dCBpYyBzIChwb3MgKyBuKSAobGVuIC0gbikgKGFjY3UgKyBuKVxuICBlbHNlXG4gICAgYWNjdSArIG5cblxubGV0IHJlZmlsbF9mcm9tX2NoYW5uZWwgaWMgaWIgbiA9XG4gIGlmIG4gPiBpYi5pX21heF9sZW4gdGhlblxuICAgIGludmFsaWRfYXJnIFwiQmlfaW5idWYucmVmaWxsX2Zyb21fY2hhbm5lbFwiXG4gIGVsc2UgKFxuICAgIGxldCByZW1fbGVuID0gaWIuaV9sZW4gLSBpYi5pX3BvcyBpblxuICAgIGlmIHJlbV9sZW4gPCBuIHRoZW5cbiAgICAgIGxldCBzID0gaWIuaV9zIGluXG4gICAgICBCeXRlcy5ibGl0IHMgaWIuaV9wb3MgcyAwIHJlbV9sZW47XG4gICAgICBsZXQgdG9fcmVhZCA9IG4gLSByZW1fbGVuIGluXG4gICAgICBsZXQgcmVhbGx5X3JlYWQgPSBub3RfcmVhbGx5X2lucHV0IGljIHMgcmVtX2xlbiB0b19yZWFkIDAgaW5cbiAgICAgIGliLmlfb2ZmcyA8LSBpYi5pX29mZnMgKyBpYi5pX3BvcztcbiAgICAgIGliLmlfcG9zIDwtIDA7XG4gICAgICBpYi5pX2xlbiA8LSByZW1fbGVuICsgcmVhbGx5X3JlYWRcbiAgKVxuXG5sZXQgZnJvbV9jaGFubmVsID8obGVuID0gNDA5NikgPyhzaHJsZW4gPSAxNikgaWMgPSB7XG4gIGlfcyA9IEJ5dGVzLmNyZWF0ZSBsZW47XG4gIGlfcG9zID0gMDtcbiAgaV9sZW4gPSAwO1xuICBpX29mZnMgPSAwO1xuICBpX21heF9sZW4gPSBsZW47XG4gIGlfcmVmaWxsID0gcmVmaWxsX2Zyb21fY2hhbm5lbCBpYztcbiAgaV9zaGFyZWQgPSBCaV9zaGFyZS5SZC5jcmVhdGUgc2hybGVuO1xufVxuIiwidHlwZSB0ID0ge1xuICBtdXRhYmxlIG9fcyA6IGJ5dGVzO1xuICBtdXRhYmxlIG9fbWF4X2xlbiA6IGludDtcbiAgbXV0YWJsZSBvX2xlbiA6IGludDtcbiAgbXV0YWJsZSBvX29mZnMgOiBpbnQ7XG4gIG9faW5pdF9sZW4gOiBpbnQ7XG4gIG9fbWFrZV9yb29tIDogKHQgLT4gaW50IC0+IHVuaXQpO1xuICBtdXRhYmxlIG9fc2hhcmVkIDogQmlfc2hhcmUuV3IudGJsO1xuICBvX3NoYXJlZF9pbml0X2xlbiA6IGludDtcbn1cblxubGV0IHJlYWxseV9leHRlbmQgYiBuID1cbiAgbGV0IHNsZW4wID0gYi5vX21heF9sZW4gaW5cbiAgbGV0IHJlcWxlbiA9IGIub19sZW4gKyBuIGluXG4gIGxldCBzbGVuID1cbiAgICBsZXQgeCA9IG1heCByZXFsZW4gKDIgKiBzbGVuMCkgaW5cbiAgICBpZiB4IDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIHhcbiAgICBlbHNlXG4gICAgICBpZiBTeXMubWF4X3N0cmluZ19sZW5ndGggPCByZXFsZW4gdGhlblxuXHRpbnZhbGlkX2FyZyBcIkJ1Zi5leHRlbmQ6IHJlYWNoZWQgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXCJcbiAgICAgIGVsc2Vcblx0U3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gIGluXG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIHNsZW4gaW5cbiAgQnl0ZXMuYmxpdCBiLm9fcyAwIHMgMCBiLm9fbGVuO1xuICBiLm9fcyA8LSBzO1xuICBiLm9fbWF4X2xlbiA8LSBzbGVuXG5cbmxldCBmbHVzaF90b19vdXRwdXQgYWJzdHJhY3Rfb3V0cHV0IGIgbiA9XG4gIGFic3RyYWN0X291dHB1dCAoQnl0ZXMudG9fc3RyaW5nIGIub19zKSAwIGIub19sZW47XG4gIGIub19vZmZzIDwtIGIub19vZmZzICsgYi5vX2xlbjtcbiAgYi5vX2xlbiA8LSAwO1xuICBpZiBuID4gYi5vX21heF9sZW4gdGhlblxuICAgIHJlYWxseV9leHRlbmQgYiBuXG5cbmxldCBmbHVzaF90b19jaGFubmVsIG9jID0gZmx1c2hfdG9fb3V0cHV0IChvdXRwdXRfc3Vic3RyaW5nIG9jKVxuXG5cbmxldCBjcmVhdGUgPyhtYWtlX3Jvb20gPSByZWFsbHlfZXh0ZW5kKSA/KHNocmxlbiA9IDE2KSBuID0ge1xuICBvX3MgPSBCeXRlcy5jcmVhdGUgbjtcbiAgb19tYXhfbGVuID0gbjtcbiAgb19sZW4gPSAwO1xuICBvX29mZnMgPSAwO1xuICBvX2luaXRfbGVuID0gbjtcbiAgb19tYWtlX3Jvb20gPSBtYWtlX3Jvb207XG4gIG9fc2hhcmVkID0gQmlfc2hhcmUuV3IuY3JlYXRlIHNocmxlbjtcbiAgb19zaGFyZWRfaW5pdF9sZW4gPSBzaHJsZW47XG59XG5cbmxldCBjcmVhdGVfY2hhbm5lbF93cml0ZXIgPyhsZW4gPSA0MDk2KSA/c2hybGVuIG9jID1cbiAgY3JlYXRlIH5tYWtlX3Jvb206KGZsdXNoX3RvX2NoYW5uZWwgb2MpID9zaHJsZW4gbGVuXG5cbmxldCBmbHVzaF9jaGFubmVsX3dyaXRlciBiID1cbiAgYi5vX21ha2Vfcm9vbSBiIDBcblxubGV0IGNyZWF0ZV9vdXRwdXRfd3JpdGVyID8obGVuID0gNDA5NikgP3NocmxlbiBvdXQgPVxuICBjcmVhdGUgfm1ha2Vfcm9vbTooZmx1c2hfdG9fb3V0cHV0IG91dCNvdXRwdXQpID9zaHJsZW4gbGVuXG5cbmxldCBmbHVzaF9vdXRwdXRfd3JpdGVyID0gZmx1c2hfY2hhbm5lbF93cml0ZXJcblxuXG4oKlxuICBHdWFyYW50ZWUgdGhhdCB0aGUgYnVmZmVyIHN0cmluZyBoYXMgZW5vdWdoIHJvb20gZm9yIG4gYWRkaXRpb25hbCBieXRlcy5cbiopXG5sZXQgZXh0ZW5kIGIgbiA9XG4gIGlmIGIub19sZW4gKyBuID4gYi5vX21heF9sZW4gdGhlblxuICAgIGIub19tYWtlX3Jvb20gYiBuXG5cbmxldCBhbGxvYyBiIG4gPVxuICBleHRlbmQgYiBuO1xuICBsZXQgcG9zID0gYi5vX2xlbiBpblxuICBiLm9fbGVuIDwtIHBvcyArIG47XG4gIHBvc1xuXG5sZXQgYWRkX3N1YiBibGl0IGIgcyBwb3MgbGVuID1cbiAgZXh0ZW5kIGIgbGVuO1xuICBibGl0IHMgcG9zIGIub19zIGIub19sZW4gbGVuO1xuICBiLm9fbGVuIDwtIGIub19sZW4gKyBsZW5cblxubGV0IGFkZF9zdWJzdHJpbmcgPSBhZGRfc3ViIFN0cmluZy5ibGl0XG5sZXQgYWRkX3N1YmJ5dGVzID0gYWRkX3N1YiBCeXRlcy5ibGl0XG5cbmxldCBhZGRfc3RyaW5nIGIgcyA9XG4gIGFkZF9zdWJzdHJpbmcgYiBzIDAgKFN0cmluZy5sZW5ndGggcylcblxubGV0IGFkZF9ieXRlcyBiIHMgPVxuICBhZGRfc3ViYnl0ZXMgYiBzIDAgKEJ5dGVzLmxlbmd0aCBzKVxuXG5cbmxldCBhZGRfY2hhciBiIGMgPVxuICBsZXQgcG9zID0gYWxsb2MgYiAxIGluXG4gIEJ5dGVzLnNldCBiLm9fcyBwb3MgY1xuXG5sZXQgdW5zYWZlX2FkZF9jaGFyIGIgYyA9XG4gIGxldCBsZW4gPSBiLm9fbGVuIGluXG4gIEJ5dGVzLnNldCBiLm9fcyBsZW4gYztcbiAgYi5vX2xlbiA8LSBsZW4gKyAxXG5cbmxldCBhZGRfY2hhcjIgYiBjMSBjMiA9XG4gIGxldCBwb3MgPSBhbGxvYyBiIDIgaW5cbiAgbGV0IHMgPSBiLm9fcyBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgcG9zIGMxO1xuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcysxKSBjMlxuXG5sZXQgYWRkX2NoYXI0IGIgYzEgYzIgYzMgYzQgPVxuICBsZXQgcG9zID0gYWxsb2MgYiA0IGluXG4gIGxldCBzID0gYi5vX3MgaW5cbiAgQnl0ZXMudW5zYWZlX3NldCBzIHBvcyBjMTtcbiAgQnl0ZXMudW5zYWZlX3NldCBzIChwb3MrMSkgYzI7XG4gIEJ5dGVzLnVuc2FmZV9zZXQgcyAocG9zKzIpIGMzO1xuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcyszKSBjNFxuXG5cblxubGV0IGNsZWFyIGIgPVxuICBiLm9fb2ZmcyA8LSAwO1xuICBiLm9fbGVuIDwtIDA7XG4gIEJpX3NoYXJlLldyLmNsZWFyIGIub19zaGFyZWRcblxubGV0IHJlc2V0IGIgPVxuICBpZiBCeXRlcy5sZW5ndGggYi5vX3MgPD4gYi5vX2luaXRfbGVuIHRoZW5cbiAgICBiLm9fcyA8LSBCeXRlcy5jcmVhdGUgYi5vX2luaXRfbGVuO1xuICBiLm9fb2ZmcyA8LSAwO1xuICBiLm9fbGVuIDwtIDA7XG4gIGIub19zaGFyZWQgPC0gQmlfc2hhcmUuV3IuY3JlYXRlIGIub19zaGFyZWRfaW5pdF9sZW5cblxubGV0IGNvbnRlbnRzIGIgPSBCeXRlcy5zdWJfc3RyaW5nIGIub19zIDAgYi5vX2xlblxuIiwiKCogVmFyaWFibGUtYnl0ZSBlbmNvZGluZyBvZiA4LWJ5dGUgaW50ZWdlcnMgKHN0YXJ0aW5nIGZyb20gMCkuICopXG5cbm9wZW4gUHJpbnRmXG5vcGVuIEJpX291dGJ1Zlxub3BlbiBCaV9pbmJ1ZlxuXG50eXBlIHVpbnQgPSBpbnRcblxuKCogTWF4aW11bSBsZW5ndGggb2YgYSB2aW50IGRlY29kYWJsZSBpbnRvIGFuIE9DYW1sIGludCxcbiAgIG1heGltdW0gdmFsdWUgb2YgdGhlIGhpZ2hlc3QgYnl0ZSBvZiB0aGUgbGFyZ2VzdCB2aW50IHN1cHBvcnRlZCAqKVxubGV0IG1heF92aW50X2J5dGVzLCBtYXhfaGlnaGVzdF9ieXRlID1cbiAgaWYgQmlfdXRpbC5pbnRfc2l6ZSBtb2QgNyA9IDAgdGhlblxuICAgIGxldCBtID0gQmlfdXRpbC5pbnRfc2l6ZSAvIDcgaW5cbiAgICBsZXQgaCA9IDEgbHNsIDcgLSAxIGluXG4gICAgbSwgaFxuICBlbHNlXG4gICAgbGV0IG0gPSBCaV91dGlsLmludF9zaXplIC8gNyArIDEgaW5cbiAgICBsZXQgaCA9IDEgbHNsIChCaV91dGlsLmludF9zaXplIG1vZCA3KSAtIDEgaW5cbiAgICBtLCBoXG5cbmxldCBjaGVja19oaWdoZXN0X2J5dGUgeCA9XG4gIGlmIHggPiBtYXhfaGlnaGVzdF9ieXRlIHRoZW5cbiAgICBCaV91dGlsLmVycm9yIFwiVmludCBleGNlZWRpbmcgcmFuZ2Ugb2YgT0NhbWwgaW50c1wiXG5cblxubGV0IHVuc2lnbmVkX29mX3NpZ25lZCBpID1cbiAgaWYgaSA+PSAwIHRoZW5cbiAgICAoKlxuICAgICAgMCAtPiAwXG4gICAgICAxIC0+IDJcbiAgICAgIDIgLT4gNFxuICAgICAgMyAtPiA2XG4gICAgKilcbiAgICBpIGxzbCAxXG4gIGVsc2VcbiAgICAoKlxuICAgICAgLTEgLT4gMVxuICAgICAgLTIgLT4gM1xuICAgICAgLTMgLT4gNVxuICAgICopXG4gICAgKCgtMS1pKSBsc2wgMSkgbG9yIDFcblxubGV0IHNpZ25lZF9vZl91bnNpZ25lZCBpID1cbiAgaWYgaSBsYW5kIDEgPSAwIHRoZW4gaSBsc3IgMVxuICBlbHNlIC0xIC0gKGkgbHNyIDEpXG5cbmxldCB3cml0ZV91dmludCBidWYgaSAgPVxuICBCaV9vdXRidWYuZXh0ZW5kIGJ1ZiBtYXhfdmludF9ieXRlcztcblxuICBsZXQgeCA9IHJlZiBpIGluXG4gIHdoaWxlICF4IGxzciA3IDw+IDAgZG9cbiAgICBsZXQgYnl0ZSA9IDB4ODAgbG9yICgheCBsYW5kIDB4N2YpIGluXG4gICAgQmlfb3V0YnVmLnVuc2FmZV9hZGRfY2hhciBidWYgKENoYXIuY2hyIGJ5dGUpO1xuICAgIHggOj0gIXggbHNyIDc7XG4gIGRvbmU7XG4gIEJpX291dGJ1Zi51bnNhZmVfYWRkX2NoYXIgYnVmIChDaGFyLmNociAheClcblxubGV0IHdyaXRlX3N2aW50IGJ1ZiBpID1cbiAgd3JpdGVfdXZpbnQgYnVmICh1bnNpZ25lZF9vZl9zaWduZWQgaSlcblxuKCogY29udmVuaWVuY2UgKilcbmxldCB1dmludF9vZl91aW50ID9idWYgaSA9XG4gIGxldCBidWZmZXIgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICB8IE5vbmUgLT4gQmlfb3V0YnVmLmNyZWF0ZSAxMFxuICAgICAgfCBTb21lIGIgLT4gYlxuICBpblxuICBCaV9vdXRidWYuY2xlYXIgYnVmZmVyO1xuICB3cml0ZV91dmludCBidWZmZXIgaTtcbiAgQmlfb3V0YnVmLmNvbnRlbnRzIGJ1ZmZlclxuXG5sZXQgc3ZpbnRfb2ZfaW50ID9idWYgaSA9XG4gIHV2aW50X29mX3VpbnQgP2J1ZiAodW5zaWduZWRfb2Zfc2lnbmVkIGkpXG5cblxubGV0IHJlYWRfdXZpbnQgaWIgPVxuICBsZXQgYXZhaWwgPSBCaV9pbmJ1Zi50cnlfcHJlcmVhZCBpYiBtYXhfdmludF9ieXRlcyBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICBsZXQgcG9zID0gaWIuaV9wb3MgaW5cbiAgbGV0IHggPSByZWYgMCBpblxuICAodHJ5XG4gICAgIGZvciBpID0gMCB0byBhdmFpbCAtIDEgZG9cbiAgICAgICBsZXQgYiA9IENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgKHBvcytpKSkgaW5cbiAgICAgICB4IDo9ICgoYiBsYW5kIDB4N2YpIGxzbCAoNyppKSkgbG9yICF4O1xuICAgICAgIGlmIGIgPCAweDgwIHRoZW4gKFxuXHQgaWIuaV9wb3MgPC0gcG9zICsgaSArIDE7XG5cdCBpZiBpICsgMSA9IG1heF92aW50X2J5dGVzIHRoZW5cblx0ICAgY2hlY2tfaGlnaGVzdF9ieXRlIGI7XG5cdCByYWlzZSBFeGl0XG4gICAgICAgKVxuICAgICBkb25lO1xuICAgICBCaV91dGlsLmVycm9yIFwiVW50ZXJtaW5hdGVkIHZpbnQgb3IgdmludCBleGNlZWRpbmcgcmFuZ2Ugb2YgT0NhbWwgaW50c1wiXG4gICB3aXRoIEV4aXQgLT4gKClcbiAgKTtcbiAgIXhcblxuXG5sZXQgcmVhZF9zdmludCBpYiA9XG4gIHNpZ25lZF9vZl91bnNpZ25lZCAocmVhZF91dmludCBpYilcblxuKCogY29udmVuaWVuY2UgKilcblxubGV0IGNoZWNrX2VuZF9vZl9pbnB1dCBpYiA9XG4gIGlmIEJpX2luYnVmLnRyeV9wcmVyZWFkIGliIDEgPiAwIHRoZW5cbiAgICBCaV91dGlsLmVycm9yIFwiSnVuayBpbnB1dCBhZnRlciBlbmQgb2YgdmludFwiXG5cbmxldCB1aW50X29mX3V2aW50IHMgPVxuICBsZXQgaWIgPSBCaV9pbmJ1Zi5mcm9tX3N0cmluZyBzIGluXG4gIGxldCB4ID0gcmVhZF91dmludCBpYiBpblxuICBjaGVja19lbmRfb2ZfaW5wdXQgaWI7XG4gIHhcblxubGV0IGludF9vZl9zdmludCBzID1cbiAgbGV0IGliID0gQmlfaW5idWYuZnJvbV9zdHJpbmcgcyBpblxuICBsZXQgeCA9IHJlYWRfc3ZpbnQgaWIgaW5cbiAgY2hlY2tfZW5kX29mX2lucHV0IGliO1xuICB4XG5cblxuKCpcbiAgVGVzdGluZ1xuKilcblxubGV0IHN0cmluZ19vZl9saXN0IGwgPVxuICBsZXQgb2IgPSBCaV9vdXRidWYuY3JlYXRlIDEwMCBpblxuICBMaXN0Lml0ZXIgKHdyaXRlX3V2aW50IG9iKSBsO1xuICBCaV9vdXRidWYuY29udGVudHMgb2JcblxubGV0IHJlYyByZWFkX2xpc3QgaWIgPVxuICBpZiBpYi5pX3BvcyA8IGliLmlfbGVuIHRoZW5cbiAgICBsZXQgeCA9IHJlYWRfdXZpbnQgaWIgaW5cbiAgICB4IDo6IHJlYWRfbGlzdCBpYlxuICBlbHNlXG4gICAgW11cblxubGV0IGxpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2xpc3QgKEJpX2luYnVmLmZyb21fc3RyaW5nIHMpXG5cbmxldCBwcmludF9saXN0IGwgPVxuICBMaXN0Lml0ZXIgKFxuICAgIGZ1biBpIC0+XG4gICAgICBwcmludGYgXCJkZWMgJWlcXG5oZXggJXhcXG5iaW4gJXNcXG5cIiBpIGlcblx0KEJpX3V0aWwucHJpbnRfYml0cyAoQmlfdXRpbC5zdHJpbmc4X29mX2ludCBpKSlcbiAgKSBsXG5cbmxldCB0ZXN0ICgpID1cbiAgbGV0IGwgPSBbXG4gICAgMDtcbiAgICAweGZmZmZmZmY7XG4gICAgKDB4MDEwMjAzMDQgbHNsIDMyKSBsb3IgMHgwNTA2MDcwODtcbiAgICBtYXhfaW50O1xuICAgIG1pbl9pbnRcbiAgXSBpblxuICBwcmludGYgXCJJbnB1dDpcXG5cIjtcbiAgcHJpbnRfbGlzdCBsO1xuICBsZXQgbCcgPSBsaXN0X29mX3N0cmluZyAoc3RyaW5nX29mX2xpc3QgbCkgaW5cbiAgcHJpbnRmIFwiT3V0cHV0OlxcblwiO1xuICBwcmludF9saXN0IGwnO1xuICBpZiBsID0gbCcgdGhlblxuICAgIHByaW50X2VuZGxpbmUgXCJTVUNDRVNTXCJcbiAgZWxzZVxuICAgIHByaW50X2VuZGxpbmUgXCJGQUlMVVJFXCJcbiIsIm9wZW4gUHJpbnRmXG5cbmxldCBlcnJvciBzID0gZmFpbHdpdGggKFwiQmlfc3RyZWFtOiBcIiBeIHMpXG5cbmxldCBpbnB1dF9pbnQ2NCBpYyA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICAgICAgNjQgLT5cbiAgICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgICBmb3IgaSA9IDEgdG8gOCBkb1xuICAgICAgICAgIG4gOj0gKCFuIGxzbCA4KSBsb3IgKGlucHV0X2J5dGUgaWMpO1xuICAgICAgICBkb25lO1xuICAgICAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgICAgIGVycm9yIFwiQ29ycnVwdGVkIHN0cmVhbTogZXhjZXNzaXZlIGNodW5rIGxlbmd0aFwiO1xuICAgICAgICAhblxuICAgIHwgMzIgLT5cbiAgICAgICAgZm9yIGkgPSAxIHRvIDQgZG9cbiAgICAgICAgICBpZiBpbnB1dF9ieXRlIGljIDw+IDAgdGhlblxuICAgICAgICAgICAgZXJyb3IgXCJDaHVuayBsZW5ndGggZXhjZWVkcyBzdXBwb3J0ZWQgcmFuZ2Ugb24gdGhpcyBwbGF0Zm9ybVwiXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIDQgZG9cbiAgICAgICAgICBuIDo9ICghbiBsc2wgOCkgbG9yIChpbnB1dF9ieXRlIGljKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgICAgICBlcnJvciBcIkNodW5rIGxlbmd0aCBleGNlZWRzIHN1cHBvcnRlZCByYW5nZSBvbiB0aGlzIHBsYXRmb3JtXCI7XG4gICAgICAgICFuXG4gICAgfCBuIC0+XG4gICAgICAgIGVycm9yIChzcHJpbnRmIFwidW5zdXBwb3J0ZWQgd29yZCBzaXplICglaSlcIiBuKVxuXG5sZXQgb3V0cHV0X2ludDY0IG9jIG4gPVxuICBtYXRjaCBTeXMud29yZF9zaXplIHdpdGhcbiAgICAgIDY0IC0+XG4gICAgICAgIGxldCBuID0gcmVmIG4gaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIDggZG9cbiAgICAgICAgICBvdXRwdXRfY2hhciBvYyAoY2hhcl9vZl9pbnQgKCFuIGxzciA1NikpO1xuICAgICAgICAgIG4gOj0gIW4gbHNsIDhcbiAgICAgICAgZG9uZVxuICAgIHwgMzIgLT5cbiAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gICAgICAgIGxldCBuID0gcmVmIG4gaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIDQgZG9cbiAgICAgICAgICBvdXRwdXRfY2hhciBvYyAoY2hhcl9vZl9pbnQgKCFuIGxzciAyNCkpO1xuICAgICAgICAgIG4gOj0gIW4gbHNsIDhcbiAgICAgICAgZG9uZVxuICAgIHwgbiAtPlxuICAgICAgICBlcnJvciAoc3ByaW50ZiBcInVuc3VwcG9ydGVkIHdvcmQgc2l6ZSAoJWkpXCIgbilcblxubGV0IHJlYyByZWFkX2NodW5rIG9mX3N0cmluZyBpYyA9XG4gIG1hdGNoIGlucHV0X2NoYXIgaWMgd2l0aFxuICAgICAgJ1xcMDAxJyAtPlxuICAgICAgICBsZXQgbGVuID0gaW5wdXRfaW50NjQgaWMgaW5cbiAgICAgICAgaWYgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgIFwiQ29ycnVwdGVkIHN0cmVhbTogZXhjZXNzaXZlIGNodW5rIGxlbmd0aCAoJWkgYnl0ZXMpXCIgbGVuKTtcbiAgICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICAgIHJlYWxseV9pbnB1dCBpYyBzIDAgbGVuO1xuICAgICAgICBTb21lIChvZl9zdHJpbmcgKEJ5dGVzLnRvX3N0cmluZyBzKSlcblxuICAgIHwgJ1xcMDAwJyAtPiBOb25lXG5cbiAgICB8IGMgLT4gZXJyb3IgKHNwcmludGYgXCJDb3JydXB0ZWQgc3RyZWFtOiAlQ1wiIGMpXG5cblxubGV0IGZsYXR0ZW4gc3QgPVxuICBsZXQgYSA9IHJlZiBbfCB8XSBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgbGV0IHJlYyBuZXh0IGkgPVxuICAgIGlmICFwb3MgPj0gQXJyYXkubGVuZ3RoICFhIHRoZW4gKFxuICAgICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3Qgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgYScgLT5cbiAgICAgICAgICAgIFN0cmVhbS5qdW5rIHN0O1xuICAgICAgICAgICAgYSA6PSBhJztcbiAgICAgICAgICAgIHBvcyA6PSAwO1xuICAgICAgICAgICAgbmV4dCBpXG4gICAgKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHggPSAoIWEpLighcG9zKSBpblxuICAgICAgaW5jciBwb3M7XG4gICAgICBTb21lIHhcbiAgICApXG4gIGluXG4gIFN0cmVhbS5mcm9tIG5leHRcblxuXG5sZXQgcmVhZF9zdHJlYW0gb2Zfc3RyaW5nIGljID1cbiAgZmxhdHRlbiAoU3RyZWFtLmZyb20gKGZ1biBpIC0+IHJlYWRfY2h1bmsgb2Zfc3RyaW5nIGljKSlcblxubGV0IHJldl9hcnJheV9vZl9saXN0IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdIC0+IFt8fF1cbiAgICB8IHggOjogdGwgLT5cbiAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgICAgICAgICAgaGQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBhLihpKSA8LSBoZDtcbiAgICAgICAgICAgICAgICByIDo9IHRsO1xuICAgICAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZG9uZTtcbiAgICAgICAgYVxuXG5sZXQgd3JpdGVfc3RyZWFtID8oY2h1bmtfbGVuID0gMTAyNCkgdG9fc3RyaW5nIG9jIHN0ID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBsZXQgYWNjID0gcmVmIFtdIGluXG4gIGxldCBmbHVzaF9jaHVuayAoKSA9XG4gICAgbGV0IGEgPSByZXZfYXJyYXlfb2ZfbGlzdCAhYWNjIGluXG4gICAgYWNjIDo9IFtdO1xuICAgIG4gOj0gMDtcbiAgICBsZXQgcyA9IHRvX3N0cmluZyBhIGluXG4gICAgb3V0cHV0X2NoYXIgb2MgJ1xcMDAxJztcbiAgICBvdXRwdXRfaW50NjQgb2MgKFN0cmluZy5sZW5ndGggcyk7XG4gICAgb3V0cHV0X3N0cmluZyBvYyBzXG4gIGluXG4gIFN0cmVhbS5pdGVyIChcbiAgICBmdW4geCAtPlxuICAgICAgaW5jciBuO1xuICAgICAgYWNjIDo9IHggOjogIWFjYztcbiAgICAgIGlmICFuID49IGNodW5rX2xlbiB0aGVuXG4gICAgICAgIGZsdXNoX2NodW5rICgpXG4gICkgc3Q7XG4gIGlmICFuID4gMCB0aGVuXG4gICAgZmx1c2hfY2h1bmsgKCk7XG4gIG91dHB1dF9jaGFyIG9jICdcXDAwMCdcblxuXG5sZXQgdGVzdCBsID1cbiAgTGlzdC5pdGVyIChmdW4geCAtPiBhc3NlcnQgKHggPj0gMCAmJiB4IDw9IDkpKSBsO1xuICBsZXQgdG9fc3RyaW5nIGEgPVxuICAgIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2ludCAoQXJyYXkudG9fbGlzdCBhKSlcbiAgaW5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBBcnJheS5pbml0IChTdHJpbmcubGVuZ3RoIHMpIChmdW4gaSAtPiBpbnRfb2Zfc3RyaW5nIChTdHJpbmcubWFrZSAxIHMuW2ldKSlcbiAgaW5cbiAgbGV0IHN0ID0gU3RyZWFtLm9mX2xpc3QgbCBpblxuICBsZXQgb2MgPSBvcGVuX291dCBcInRlc3Qtc3RyZWFtLmRhdFwiIGluXG4gIHdyaXRlX3N0cmVhbSB+Y2h1bmtfbGVuOjIgdG9fc3RyaW5nIG9jIHN0O1xuICBjbG9zZV9vdXQgb2M7XG5cbiAgbGV0IGljID0gb3Blbl9pbiBcInRlc3Qtc3RyZWFtLmRhdFwiIGluXG4gIGxldCBzdCcgPSByZWFkX3N0cmVhbSBvZl9zdHJpbmcgaWMgaW5cbiAgbGV0IGwnID0gcmVmIFtdIGluXG4gIFN0cmVhbS5pdGVyIChmdW4gaSAtPiBsJyA6PSBpIDo6ICFsJykgc3QnO1xuICBjbG9zZV9pbiBpYztcbiAgbCA9IExpc3QucmV2ICFsJ1xuIiwib3BlbiBQcmludGZcblxub3BlbiBCaV9vdXRidWZcbm9wZW4gQmlfaW5idWZcblxudHlwZSBub2RlX3RhZyA9IGludFxuXG5sZXQgYm9vbF90YWcgPSAwXG5sZXQgaW50OF90YWcgPSAxXG5sZXQgaW50MTZfdGFnID0gMlxubGV0IGludDMyX3RhZyA9IDNcbmxldCBpbnQ2NF90YWcgPSA0XG5sZXQgZmxvYXQzMl90YWcgPSAxMVxubGV0IGZsb2F0NjRfdGFnID0gMTJcbmxldCB1dmludF90YWcgPSAxNlxubGV0IHN2aW50X3RhZyA9IDE3XG5sZXQgc3RyaW5nX3RhZyA9IDE4XG5sZXQgYXJyYXlfdGFnID0gMTlcbmxldCB0dXBsZV90YWcgPSAyMFxubGV0IHJlY29yZF90YWcgPSAyMVxubGV0IG51bV92YXJpYW50X3RhZyA9IDIyXG5sZXQgdmFyaWFudF90YWcgPSAyM1xubGV0IHVuaXRfdGFnID0gMjRcbmxldCB0YWJsZV90YWcgPSAyNVxubGV0IHNoYXJlZF90YWcgPSAyNlxuXG50eXBlIGhhc2ggPSBpbnRcblxuKCpcbiAgRGF0YSB0cmVlLCBmb3IgdGVzdGluZyBwdXJwb3Nlcy5cbiopXG50eXBlIHRyZWUgPVxuICAgIFsgYFVuaXRcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICB8IGBJbnQ4IG9mIGNoYXJcbiAgICB8IGBJbnQxNiBvZiBpbnRcbiAgICB8IGBJbnQzMiBvZiBJbnQzMi50XG4gICAgfCBgSW50NjQgb2YgSW50NjQudFxuICAgIHwgYEZsb2F0MzIgb2YgZmxvYXRcbiAgICB8IGBGbG9hdDY0IG9mIGZsb2F0XG4gICAgfCBgVXZpbnQgb2YgaW50XG4gICAgfCBgU3ZpbnQgb2YgaW50XG4gICAgfCBgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgYEFycmF5IG9mIChub2RlX3RhZyAqIHRyZWUgYXJyYXkpIG9wdGlvblxuICAgIHwgYFR1cGxlIG9mIHRyZWUgYXJyYXlcbiAgICB8IGBSZWNvcmQgb2YgKHN0cmluZyBvcHRpb24gKiBoYXNoICogdHJlZSkgYXJyYXlcbiAgICB8IGBOdW1fdmFyaWFudCBvZiAoaW50ICogdHJlZSBvcHRpb24pXG4gICAgfCBgVmFyaWFudCBvZiAoc3RyaW5nIG9wdGlvbiAqIGhhc2ggKiB0cmVlIG9wdGlvbilcbiAgICB8IGBUYWJsZSBvZlxuXHQoKHN0cmluZyBvcHRpb24gKiBoYXNoICogbm9kZV90YWcpIGFycmF5ICogdHJlZSBhcnJheSBhcnJheSkgb3B0aW9uXG4gICAgfCBgU2hhcmVkIG9mIHRyZWUgXVxuXG4oKiBleHRlbmQgc2lnbiBiaXQgKilcbmxldCBtYWtlX3NpZ25lZCB4ID1cbiAgaWYgeCA+IDB4M0ZGRkZGRkYgdGhlbiB4IC0gKDEgbHNsIDMxKSBlbHNlIHhcblxuKCpcbiAgU2FtZSBmdW5jdGlvbiBhcyB0aGUgb25lIHVzZWQgZm9yIE9DYW1sIHZhcmlhbnRzIGFuZCBvYmplY3QgbWV0aG9kcy5cbiopXG5sZXQgaGFzaF9uYW1lIHMgPVxuICBsZXQgYWNjdSA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgYWNjdSA6PSAyMjMgKiAhYWNjdSArIENoYXIuY29kZSBzLltpXVxuICBkb25lO1xuICAoKiByZWR1Y2UgdG8gMzEgYml0cyAqKVxuICBhY2N1IDo9ICFhY2N1IGxhbmQgKDEgbHNsIDMxIC0gMSk7XG4gICgqIG1ha2UgaXQgc2lnbmVkIGZvciA2NCBiaXRzIGFyY2hpdGVjdHVyZXMgKilcbiAgbWFrZV9zaWduZWQgIWFjY3VcblxuXG4oKlxuICBTdHJ1Y3R1cmUgb2YgYSBoYXNodGFnOiA0IGJ5dGVzLFxuXG4gIGFyZ2JpdCA3Yml0cyA4Yml0cyA4Yml0cyA4Yml0c1xuICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgICAgICAgICAgICAgMzEtYml0IGhhc2hcblxuICBhcmdiaXQgPSAxIGlmZiBoYXNodGFnIGlzIGZvbGxvd2VkIGJ5IGFuIGFyZ3VtZW50LCB0aGlzIGlzIGFsd2F5cyAxIGZvclxuICAgICAgICAgICByZWNvcmQgZmllbGRzLlxuXG4qKVxuXG5sZXQgbWFza18zMWJpdCA9XG4gIGxldCBuID0gQmlfdXRpbC5pbnRfc2l6ZSAtIDMxIGluXG4gIGFzc2VydCAobiA+PSAwKTtcbiAgZnVuIHggLT4gKHggbHNsIG4pIGxzciBuXG5cbmxldCB3cml0ZV9oYXNodGFnIG9iIGggaGFzX2FyZyA9XG4gIGxldCBoID0gbWFza18zMWJpdCBoIGluXG4gIGxldCBwb3MgPSBCaV9vdXRidWYuYWxsb2Mgb2IgNCBpblxuICBsZXQgcyA9IG9iLm9fcyBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcyszKSAoQ2hhci5jaHIgKGggbGFuZCAweGZmKSk7XG4gIGxldCBoID0gaCBsc3IgOCBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcysyKSAoQ2hhci5jaHIgKGggbGFuZCAweGZmKSk7XG4gIGxldCBoID0gaCBsc3IgOCBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcysxKSAoQ2hhci5jaHIgKGggbGFuZCAweGZmKSk7XG4gIGxldCBoID0gaCBsc3IgOCBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgcG9zIChcbiAgICBDaGFyLmNociAoXG4gICAgICBpZiBoYXNfYXJnIHRoZW4gaCBsb3IgMHg4MFxuICAgICAgZWxzZSBoXG4gICAgKVxuICApXG5cbmxldCBzdHJpbmdfb2ZfaGFzaHRhZyBoIGhhc19hcmcgPVxuICBsZXQgb2IgPSBCaV9vdXRidWYuY3JlYXRlIDQgaW5cbiAgd3JpdGVfaGFzaHRhZyBvYiBoIGhhc19hcmc7XG4gIEJpX291dGJ1Zi5jb250ZW50cyBvYlxuXG5sZXQgcmVhZF9oYXNodGFnIGliIGNvbnQgPVxuICBsZXQgaSA9IEJpX2luYnVmLnJlYWQgaWIgNCBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICBsZXQgeDAgPSBDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIGkpIGluXG4gIGxldCBoYXNfYXJnID0geDAgPj0gMHg4MCBpblxuICBsZXQgeDEgPSAoeDAgbGFuZCAweDdmKSBsc2wgMjQgaW5cbiAgbGV0IHgyID0gKENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgKGkrMSkpKSBsc2wgMTYgaW5cbiAgbGV0IHgzID0gKENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgKGkrMikpKSBsc2wgOCBpblxuICBsZXQgeDQgPSBDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIChpKzMpKSBpblxuICBsZXQgaCA9IG1ha2Vfc2lnbmVkICh4MSBsb3IgeDIgbG9yIHgzIGxvciB4NCkgaW5cblxuICBjb250IGliIGggaGFzX2FyZ1xuXG5cbmxldCByZWFkX2ZpZWxkX2hhc2h0YWcgaWIgPVxuICBsZXQgaSA9IEJpX2luYnVmLnJlYWQgaWIgNCBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICBsZXQgeDAgPSBDaGFyLmNvZGUgKEJ5dGVzLnVuc2FmZV9nZXQgcyBpKSBpblxuICBpZiB4MCA8IDB4ODAgdGhlblxuICAgIEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoaW52YWxpZCBmaWVsZCBoYXNodGFnKVwiO1xuICBsZXQgeDEgPSAoeDAgbGFuZCAweDdmKSBsc2wgMjQgaW5cbiAgbGV0IHgyID0gKENoYXIuY29kZSAoQnl0ZXMudW5zYWZlX2dldCBzIChpKzEpKSkgbHNsIDE2IGluXG4gIGxldCB4MyA9IChDaGFyLmNvZGUgKEJ5dGVzLnVuc2FmZV9nZXQgcyAoaSsyKSkpIGxzbCA4IGluXG4gIGxldCB4NCA9IENoYXIuY29kZSAoQnl0ZXMudW5zYWZlX2dldCBzIChpKzMpKSBpblxuICBtYWtlX3NpZ25lZCAoeDEgbG9yIHgyIGxvciB4MyBsb3IgeDQpXG5cblxudHlwZSBpbnQ3ID0gaW50XG5cbmxldCB3cml0ZV9udW10YWcgb2IgaSBoYXNfYXJnID1cbiAgaWYgaSA8IDAgfHwgaSA+IDB4N2YgdGhlblxuICAgIEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoaW52YWxpZCBudW10YWcpXCI7XG4gIGxldCB4ID1cbiAgICBpZiBoYXNfYXJnIHRoZW4gaSBsb3IgMHg4MFxuICAgIGVsc2UgaVxuICBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyIHgpXG5cbmxldCByZWFkX251bXRhZyBpYiBjb250ID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDEgaW5cbiAgbGV0IHggPSBDaGFyLmNvZGUgKEJ5dGVzLmdldCBpYi5pX3MgaSkgaW5cbiAgbGV0IGhhc19hcmcgPSB4ID49IDB4ODAgaW5cbiAgY29udCBpYiAoeCBsYW5kIDB4N2YpIGhhc19hcmdcblxubGV0IG1ha2VfdW5oYXNoIGwgPVxuICBsZXQgdGJsID0gSGFzaHRibC5jcmVhdGUgKDQgKiBMaXN0Lmxlbmd0aCBsKSBpblxuICBMaXN0Lml0ZXIgKFxuICAgIGZ1biBzIC0+XG4gICAgICBsZXQgaCA9IGhhc2hfbmFtZSBzIGluXG4gICAgICB0cnlcblx0bWF0Y2ggSGFzaHRibC5maW5kIHRibCBoIHdpdGhcblx0ICAgIFNvbWUgcycgLT5cblx0ICAgICAgaWYgcyA8PiBzJyB0aGVuXG5cdFx0ZmFpbHdpdGggKFxuXHRcdCAgc3ByaW50ZlxuXHRcdCAgICBcIkJpX2lvLm1ha2VfdW5oYXNoOiBcXFxuICAgICAgICAgICAgICAgICAgICAgJVMgYW5kICVTIGhhdmUgdGhlIHNhbWUgaGFzaCwgcGxlYXNlIHBpY2sgYW5vdGhlciBuYW1lXCJcblx0XHQgICAgcyBzJ1xuXHRcdClcblx0ICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG5cbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+IEhhc2h0YmwuYWRkIHRibCBoIChTb21lIHMpXG4gICkgbDtcbiAgZnVuIGggLT5cbiAgICB0cnkgSGFzaHRibC5maW5kIHRibCBoXG4gICAgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG5cbmxldCB3cml0ZV90YWcgb2IgeCA9XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgeClcblxubGV0IHdyaXRlX3VudGFnZ2VkX3VuaXQgb2IgKCkgPVxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgJ1xceDAwJ1xuXG5sZXQgd3JpdGVfdW50YWdnZWRfYm9vbCBvYiB4ID1cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChpZiB4IHRoZW4gJ1xceDAxJyBlbHNlICdcXHgwMCcpXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9jaGFyIG9iIHggPVxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgeFxuXG5sZXQgd3JpdGVfdW50YWdnZWRfaW50OCBvYiB4ID1cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociB4KVxuXG5sZXQgd3JpdGVfdW50YWdnZWRfaW50MTYgb2IgeCA9XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKHggbHNyIDgpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoeCBsYW5kIDB4ZmYpKVxuXG5sZXQgd3JpdGVfdW50YWdnZWRfaW50MzIgb2IgeCA9XG4gIGxldCBoaWdoID0gSW50MzIudG9faW50IChJbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsIHggMTYpIGluXG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKGhpZ2ggbHNyIDgpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoaGlnaCBsYW5kIDB4ZmYpKTtcbiAgbGV0IGxvdyA9IEludDMyLnRvX2ludCB4IGluXG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKChsb3cgbHNyIDgpIGxhbmQgMHhmZikpO1xuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyIChsb3cgbGFuZCAweGZmKSlcblxubGV0IHdyaXRlX3VudGFnZ2VkX2Zsb2F0MzIgb2IgeCA9XG4gIHdyaXRlX3VudGFnZ2VkX2ludDMyIG9iIChJbnQzMi5iaXRzX29mX2Zsb2F0IHgpXG5cbmxldCBmbG9hdF9lbmRpYW5uZXNzID0gbGF6eSAoXG4gIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IChPYmoubWFnaWMgMS4wKSAwIHdpdGhcbiAgICAgICdcXHgzZicgLT4gYEJpZ1xuICAgIHwgJ1xceDAwJyAtPiBgTGl0dGxlXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuKVxuXG5sZXQgcmVhZF91bnRhZ2dlZF9mbG9hdDY0IGliID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDggaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgbGV0IHggPSBPYmoubmV3X2Jsb2NrIE9iai5kb3VibGVfdGFnIDggaW5cbiAgKG1hdGNoIExhenkuZm9yY2UgZmxvYXRfZW5kaWFubmVzcyB3aXRoXG4gICAgICAgYExpdHRsZSAtPlxuXHQgZm9yIGogPSAwIHRvIDcgZG9cblx0ICAgQnl0ZXMudW5zYWZlX3NldCAoT2JqLm9iaiB4KSAoNy1qKSAoQnl0ZXMudW5zYWZlX2dldCBzIChpK2opKVxuXHQgZG9uZVxuICAgICB8IGBCaWcgLT5cblx0IGZvciBqID0gMCB0byA3IGRvXG5cdCAgIEJ5dGVzLnVuc2FmZV9zZXQgKE9iai5vYmogeCkgaiAoQnl0ZXMudW5zYWZlX2dldCBzIChpK2opKVxuXHQgZG9uZVxuICApO1xuICAoT2JqLm9iaiB4IDogZmxvYXQpXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9mbG9hdDY0IG9iIHggPVxuICBsZXQgaSA9IEJpX291dGJ1Zi5hbGxvYyBvYiA4IGluXG4gIGxldCBzID0gb2Iub19zIGluXG4gIChtYXRjaCBMYXp5LmZvcmNlIGZsb2F0X2VuZGlhbm5lc3Mgd2l0aFxuICAgICAgIGBMaXR0bGUgLT5cblx0IGZvciBqID0gMCB0byA3IGRvXG5cdCAgIEJ5dGVzLnVuc2FmZV9zZXQgcyAoaStqKSAoU3RyaW5nLnVuc2FmZV9nZXQgKE9iai5tYWdpYyB4KSAoNy1qKSlcblx0IGRvbmVcbiAgICAgfCBgQmlnIC0+XG5cdCBmb3IgaiA9IDAgdG8gNyBkb1xuXHQgICBCeXRlcy51bnNhZmVfc2V0IHMgKGkraikgKFN0cmluZy51bnNhZmVfZ2V0IChPYmoubWFnaWMgeCkgailcblx0IGRvbmVcbiAgKVxuXG4oKlxubGV0IHdyaXRlX3VudGFnZ2VkX2ludDY0IG9iIHggPVxuICBsZXQgeDQgPSBJbnQ2NC50b19pbnQgKEludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCA0OCkgaW5cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoeDQgbHNyIDgpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoeDQgbGFuZCAweGZmKSk7XG4gIGxldCB4MyA9IEludDY0LnRvX2ludCAoSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IDMyKSBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICgoeDMgbHNyIDgpIGxhbmQgMHhmZikpO1xuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICh4MyBsYW5kIDB4ZmYpKTtcbiAgbGV0IHgyID0gSW50NjQudG9faW50IChJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggMTYpIGluXG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKCh4MiBsc3IgOCkgbGFuZCAweGZmKSk7XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKHgyIGxhbmQgMHhmZikpO1xuICBsZXQgeDEgPSBJbnQ2NC50b19pbnQgeCBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICgoeDEgbHNyIDgpIGxhbmQgMHhmZikpO1xuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICh4MSBsYW5kIDB4ZmYpKVxuKilcblxubGV0IHdyaXRlX3VudGFnZ2VkX2ludDY0IG9iIHggPVxuICB3cml0ZV91bnRhZ2dlZF9mbG9hdDY0IG9iIChJbnQ2NC5mbG9hdF9vZl9iaXRzIHgpXG5cblxubGV0IHNhZmV0eV90ZXN0ICgpID1cbiAgbGV0IHMgPSBcIlxceDNmXFx4ZjBcXHgwNlxceDA1XFx4MDRcXHgwM1xceDAyXFx4MDFcIiBpblxuICBsZXQgeCA9IDEuMDAxNDY5NjI3MDY2NTEyODggaW5cbiAgbGV0IHkgPSByZWFkX3VudGFnZ2VkX2Zsb2F0NjQgKEJpX2luYnVmLmZyb21fc3RyaW5nIHMpIGluXG4gIGlmIHggPD4geSB0aGVuXG4gICAgYXNzZXJ0IGZhbHNlO1xuICBsZXQgb2IgPSBCaV9vdXRidWYuY3JlYXRlIDggaW5cbiAgd3JpdGVfdW50YWdnZWRfZmxvYXQ2NCBvYiB4O1xuICBpZiBCaV9vdXRidWYuY29udGVudHMgb2IgPD4gcyB0aGVuXG4gICAgYXNzZXJ0IGZhbHNlXG5cblxuXG5sZXQgd3JpdGVfdW50YWdnZWRfc3RyaW5nIG9iIHMgPVxuICBCaV92aW50LndyaXRlX3V2aW50IG9iIChTdHJpbmcubGVuZ3RoIHMpO1xuICBCaV9vdXRidWYuYWRkX3N0cmluZyBvYiBzXG5cbmxldCB3cml0ZV91bnRhZ2dlZF91dmludCA9IEJpX3ZpbnQud3JpdGVfdXZpbnRcbmxldCB3cml0ZV91bnRhZ2dlZF9zdmludCA9IEJpX3ZpbnQud3JpdGVfc3ZpbnRcblxubGV0IHdyaXRlX3VuaXQgb2IgKCkgPVxuICB3cml0ZV90YWcgb2IgdW5pdF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX3VuaXQgb2IgKClcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBib29sX3RhZztcbiAgd3JpdGVfdW50YWdnZWRfYm9vbCBvYiB4XG5cbmxldCB3cml0ZV9jaGFyIG9iIHggPVxuICB3cml0ZV90YWcgb2IgaW50OF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2NoYXIgb2IgeFxuXG5sZXQgd3JpdGVfaW50OCBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIGludDhfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9pbnQ4IG9iIHhcblxubGV0IHdyaXRlX2ludDE2IG9iIHggPVxuICB3cml0ZV90YWcgb2IgaW50MTZfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9pbnQxNiBvYiB4XG5cbmxldCB3cml0ZV9pbnQzMiBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIGludDMyX3RhZztcbiAgd3JpdGVfdW50YWdnZWRfaW50MzIgb2IgeFxuXG5sZXQgd3JpdGVfaW50NjQgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBpbnQ2NF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2ludDY0IG9iIHhcblxubGV0IHdyaXRlX2Zsb2F0MzIgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBmbG9hdDMyX3RhZztcbiAgd3JpdGVfdW50YWdnZWRfZmxvYXQzMiBvYiB4XG5cbmxldCB3cml0ZV9mbG9hdDY0IG9iIHggPVxuICB3cml0ZV90YWcgb2IgZmxvYXQ2NF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2Zsb2F0NjQgb2IgeFxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHggPVxuICB3cml0ZV90YWcgb2Igc3RyaW5nX3RhZztcbiAgd3JpdGVfdW50YWdnZWRfc3RyaW5nIG9iIHhcblxubGV0IHdyaXRlX3V2aW50IG9iIHggPVxuICB3cml0ZV90YWcgb2IgdXZpbnRfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF91dmludCBvYiB4XG5cbmxldCB3cml0ZV9zdmludCBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIHN2aW50X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfc3ZpbnQgb2IgeFxuXG5cblxuXG5sZXQgcmVjIHdyaXRlX3Qgb2IgdGFnZ2VkICh4IDogdHJlZSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBVbml0IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIHVuaXRfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF91bml0IG9iICgpXG5cbiAgICB8IGBCb29sIHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgYm9vbF90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX2Jvb2wgb2IgeFxuXG4gICAgfCBgSW50OCB4IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGludDhfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF9jaGFyIG9iIHhcblxuICAgIHwgYEludDE2IHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgaW50MTZfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF9pbnQxNiBvYiB4XG5cbiAgICB8IGBJbnQzMiB4IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGludDMyX3RhZztcblx0d3JpdGVfdW50YWdnZWRfaW50MzIgb2IgeFxuXG4gICAgfCBgSW50NjQgeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBpbnQ2NF90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX2ludDY0IG9iIHhcblxuICAgIHwgYEZsb2F0MzIgeCAtPlxuICAgICAgICBpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBmbG9hdDMyX3RhZztcblx0d3JpdGVfdW50YWdnZWRfZmxvYXQzMiBvYiB4XG5cbiAgICB8IGBGbG9hdDY0IHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgZmxvYXQ2NF90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX2Zsb2F0NjQgb2IgeFxuXG4gICAgfCBgVXZpbnQgeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiB1dmludF90YWc7XG5cdEJpX3ZpbnQud3JpdGVfdXZpbnQgb2IgeFxuXG4gICAgfCBgU3ZpbnQgeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBzdmludF90YWc7XG5cdEJpX3ZpbnQud3JpdGVfc3ZpbnQgb2IgeFxuXG4gICAgfCBgU3RyaW5nIHMgLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2Igc3RyaW5nX3RhZztcblx0d3JpdGVfdW50YWdnZWRfc3RyaW5nIG9iIHNcblxuICAgIHwgYEFycmF5IG8gLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgYXJyYXlfdGFnO1xuXHQobWF0Y2ggbyB3aXRoXG5cdCAgICAgTm9uZSAtPiBCaV92aW50LndyaXRlX3V2aW50IG9iIDBcblx0ICAgfCBTb21lIChub2RlX3RhZywgYSkgLT5cblx0ICAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuXHQgICAgICAgQmlfdmludC53cml0ZV91dmludCBvYiBsZW47XG5cdCAgICAgICBpZiBsZW4gPiAwIHRoZW4gKFxuXHRcdCB3cml0ZV90YWcgb2Igbm9kZV90YWc7XG5cdFx0IEFycmF5Lml0ZXIgKHdyaXRlX3Qgb2IgZmFsc2UpIGFcblx0ICAgICAgIClcblx0KVxuXG4gICAgfCBgVHVwbGUgYSAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiB0dXBsZV90YWc7XG5cdEJpX3ZpbnQud3JpdGVfdXZpbnQgb2IgKEFycmF5Lmxlbmd0aCBhKTtcblx0QXJyYXkuaXRlciAod3JpdGVfdCBvYiB0cnVlKSBhXG5cbiAgICB8IGBSZWNvcmQgYSAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiByZWNvcmRfdGFnO1xuXHRCaV92aW50LndyaXRlX3V2aW50IG9iIChBcnJheS5sZW5ndGggYSk7XG4gICAgICAgIEFycmF5Lml0ZXIgKHdyaXRlX2ZpZWxkIG9iKSBhXG5cbiAgICB8IGBOdW1fdmFyaWFudCAoaSwgeCkgLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgbnVtX3ZhcmlhbnRfdGFnO1xuXHR3cml0ZV9udW10YWcgb2IgaSAoeCA8PiBOb25lKTtcblx0KG1hdGNoIHggd2l0aFxuXHQgICAgIE5vbmUgLT4gKClcblx0ICAgfCBTb21lIHYgLT4gd3JpdGVfdCBvYiB0cnVlIHYpXG5cbiAgICB8IGBWYXJpYW50IChvLCBoLCB4KSAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiB2YXJpYW50X3RhZztcblx0d3JpdGVfaGFzaHRhZyBvYiBoICh4IDw+IE5vbmUpO1xuXHQobWF0Y2ggeCB3aXRoXG5cdCAgICAgTm9uZSAtPiAoKVxuXHQgICB8IFNvbWUgdiAtPiB3cml0ZV90IG9iIHRydWUgdilcblxuICAgIHwgYFRhYmxlIG8gLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgdGFibGVfdGFnO1xuXHQobWF0Y2ggbyB3aXRoXG5cdCAgICAgTm9uZSAtPiBCaV92aW50LndyaXRlX3V2aW50IG9iIDBcblx0ICAgfCBTb21lIChmaWVsZHMsIGEpIC0+XG5cdCAgICAgICBsZXQgcm93X251bSA9IEFycmF5Lmxlbmd0aCBhIGluXG5cdCAgICAgICBCaV92aW50LndyaXRlX3V2aW50IG9iIHJvd19udW07XG5cdCAgICAgICBpZiByb3dfbnVtID4gMCB0aGVuXG5cdFx0IGxldCBjb2xfbnVtID0gQXJyYXkubGVuZ3RoIGZpZWxkcyBpblxuXHRcdCBCaV92aW50LndyaXRlX3V2aW50IG9iIGNvbF9udW07XG5cdFx0IEFycmF5Lml0ZXIgKFxuXHRcdCAgIGZ1biAobmFtZSwgaCwgdGFnKSAtPlxuXHRcdCAgICAgd3JpdGVfaGFzaHRhZyBvYiBoIHRydWU7XG5cdFx0ICAgICB3cml0ZV90YWcgb2IgdGFnXG5cdFx0ICkgZmllbGRzO1xuXHRcdCBpZiByb3dfbnVtID4gMCB0aGVuIChcblx0XHQgICBmb3IgaSA9IDAgdG8gcm93X251bSAtIDEgZG9cblx0XHQgICAgIGxldCBhaSA9IGEuKGkpIGluXG5cdFx0ICAgICBpZiBBcnJheS5sZW5ndGggYWkgPD4gY29sX251bSB0aGVuXG5cdFx0ICAgICAgIGludmFsaWRfYXJnIFwiQmlfaW8ud3JpdGVfdDogTWFsZm9ybWVkIGBUYWJsZVwiO1xuXHRcdCAgICAgZm9yIGogPSAwIHRvIGNvbF9udW0gLSAxIGRvXG5cdFx0ICAgICAgIHdyaXRlX3Qgb2IgZmFsc2UgYWkuKGopXG5cdFx0ICAgICBkb25lXG5cdFx0ICAgZG9uZVxuXHRcdCApXG5cdClcblxuICAgIHwgYFNoYXJlZCB4IC0+XG4gICAgICAgIGlmIHRhZ2dlZCB0aGVuXG4gICAgICAgICAgd3JpdGVfdGFnIG9iIHNoYXJlZF90YWc7XG4gICAgICAgIGxldCBvZmZzZXQgPVxuICAgICAgICAgIEJpX3NoYXJlLldyLnB1dCBvYi5vX3NoYXJlZFxuICAgICAgICAgICAgKHgsIEJpX3NoYXJlLmR1bW15X3R5cGVfaWQpIChvYi5vX29mZnMgKyBvYi5vX2xlbikgaW5cbiAgICAgICAgQmlfdmludC53cml0ZV91dmludCBvYiBvZmZzZXQ7XG4gICAgICAgIGlmIG9mZnNldCA9IDAgdGhlblxuICAgICAgICAgIHdyaXRlX3Qgb2IgdHJ1ZSB4XG5cbmFuZCB3cml0ZV9maWVsZCBvYiAocywgaCwgeCkgPVxuICB3cml0ZV9oYXNodGFnIG9iIGggdHJ1ZTtcbiAgd3JpdGVfdCBvYiB0cnVlIHhcblxubGV0IHdyaXRlX3RyZWUgb2IgeCA9XG4gIHdyaXRlX3Qgb2IgdHJ1ZSB4XG5cbmxldCBzdHJpbmdfb2ZfdHJlZSB4ID1cbiAgbGV0IG9iID0gQmlfb3V0YnVmLmNyZWF0ZSAxMDAwIGluXG4gIHdyaXRlX3RyZWUgb2IgeDtcbiAgQmlfb3V0YnVmLmNvbnRlbnRzIG9iXG5cbmxldCB0YWdfb2ZfdHJlZSAoeCA6IHRyZWUpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgVW5pdCAtPiB1bml0X3RhZ1xuICAgIHwgYEJvb2wgXyAtPiBib29sX3RhZ1xuICAgIHwgYEludDggXyAtPiBpbnQ4X3RhZ1xuICAgIHwgYEludDE2IF8gLT4gaW50MTZfdGFnXG4gICAgfCBgSW50MzIgXyAtPiBpbnQzMl90YWdcbiAgICB8IGBJbnQ2NCBfIC0+IGludDY0X3RhZ1xuICAgIHwgYEZsb2F0MzIgXyAtPiBmbG9hdDMyX3RhZ1xuICAgIHwgYEZsb2F0NjQgXyAtPiBmbG9hdDY0X3RhZ1xuICAgIHwgYFV2aW50IF8gLT4gdXZpbnRfdGFnXG4gICAgfCBgU3ZpbnQgXyAtPiBzdmludF90YWdcbiAgICB8IGBTdHJpbmcgXyAtPiBzdHJpbmdfdGFnXG4gICAgfCBgQXJyYXkgXyAtPiBhcnJheV90YWdcbiAgICB8IGBUdXBsZSBfIC0+IHR1cGxlX3RhZ1xuICAgIHwgYFJlY29yZCBfIC0+IHJlY29yZF90YWdcbiAgICB8IGBOdW1fdmFyaWFudCBfIC0+IG51bV92YXJpYW50X3RhZ1xuICAgIHwgYFZhcmlhbnQgXyAtPiB2YXJpYW50X3RhZ1xuICAgIHwgYFRhYmxlIF8gLT4gdGFibGVfdGFnXG4gICAgfCBgU2hhcmVkIF8gLT4gc2hhcmVkX3RhZ1xuXG5cbmxldCByZWFkX3RhZyBpYiA9XG4gIENoYXIuY29kZSAoQmlfaW5idWYucmVhZF9jaGFyIGliKVxuXG5sZXQgcmVhZF91bnRhZ2dlZF91bml0IGliID1cbiAgbWF0Y2ggQmlfaW5idWYucmVhZF9jaGFyIGliIHdpdGhcbiAgICAgICdcXHgwMCcgLT4gKClcbiAgICB8IF8gLT4gQmlfdXRpbC5lcnJvciBcIkNvcnJ1cHRlZCBkYXRhICh1bml0IHZhbHVlKVwiXG5cbmxldCByZWFkX3VudGFnZ2VkX2Jvb2wgaWIgPVxuICBtYXRjaCBCaV9pbmJ1Zi5yZWFkX2NoYXIgaWIgd2l0aFxuICAgICAgJ1xceDAwJyAtPiBmYWxzZVxuICAgIHwgJ1xceDAxJyAtPiB0cnVlXG4gICAgfCBfIC0+IEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoYm9vbCB2YWx1ZSlcIlxuXG5sZXQgcmVhZF91bnRhZ2dlZF9jaGFyIGliID0gQmlfaW5idWYucmVhZF9jaGFyIGliXG5cbmxldCByZWFkX3VudGFnZ2VkX2ludDggaWIgPVxuICBDaGFyLmNvZGUgKEJpX2luYnVmLnJlYWRfY2hhciBpYilcblxubGV0IHJlYWRfdW50YWdnZWRfaW50MTYgaWIgPVxuICBsZXQgaSA9IEJpX2luYnVmLnJlYWQgaWIgMiBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICAoKENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgaSkpIGxzbCA4KSBsb3IgKENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgKGkrMSkpKVxuXG5cbmxldCByZWFkX3VudGFnZ2VkX2ludDMyIGliID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDQgaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgbGV0IGdldF9jb2RlIHMgaSA9IENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgaSkgaW5cbiAgbGV0IHgxID1cbiAgICBJbnQzMi5vZl9pbnQgKCgoZ2V0X2NvZGUgcyAoaSAgKSkgbHNsIDgpIGxvciAoZ2V0X2NvZGUgcyAoaSsxKSkpIGluXG4gIGxldCB4MiA9XG4gICAgSW50MzIub2ZfaW50ICgoKGdldF9jb2RlIHMgKGkrMikpIGxzbCA4KSBsb3IgKGdldF9jb2RlIHMgKGkrMykpKSBpblxuICBJbnQzMi5sb2dvciAoSW50MzIuc2hpZnRfbGVmdCB4MSAxNikgeDJcblxubGV0IHJlYWRfdW50YWdnZWRfZmxvYXQzMiBpYiA9XG4gIEludDMyLmZsb2F0X29mX2JpdHMgKHJlYWRfdW50YWdnZWRfaW50MzIgaWIpXG5cbigqXG5sZXQgcmVhZF91bnRhZ2dlZF9pbnQ2NCBpYiA9XG4gIGxldCBpID0gQmlfaW5idWYucmVhZCBpYiA4IGluXG4gIGxldCBzID0gaWIuaV9zIGluXG4gIGxldCB4MSA9XG4gICAgSW50NjQub2ZfaW50ICgoKENoYXIuY29kZSBzLltpICBdKSBsc2wgOCkgbG9yIChDaGFyLmNvZGUgcy5baSsxXSkpIGluXG4gIGxldCB4MiA9XG4gICAgSW50NjQub2ZfaW50ICgoKENoYXIuY29kZSBzLltpKzJdKSBsc2wgOCkgbG9yIChDaGFyLmNvZGUgcy5baSszXSkpIGluXG4gIGxldCB4MyA9XG4gICAgSW50NjQub2ZfaW50ICgoKENoYXIuY29kZSBzLltpKzRdKSBsc2wgOCkgbG9yIChDaGFyLmNvZGUgcy5baSs1XSkpIGluXG4gIGxldCB4NCA9XG4gICAgSW50NjQub2ZfaW50ICgoKENoYXIuY29kZSBzLltpKzZdKSBsc2wgOCkgbG9yIChDaGFyLmNvZGUgcy5baSs3XSkpIGluXG4gIEludDY0LmxvZ29yIChJbnQ2NC5zaGlmdF9sZWZ0IHgxIDQ4KVxuICAgIChJbnQ2NC5sb2dvciAoSW50NjQuc2hpZnRfbGVmdCB4MiAzMilcbiAgICAgICAoSW50NjQubG9nb3IgKEludDY0LnNoaWZ0X2xlZnQgeDMgMTYpIHg0KSlcbiopXG5cbmxldCByZWFkX3VudGFnZ2VkX2ludDY0IGliID1cbiAgSW50NjQuYml0c19vZl9mbG9hdCAocmVhZF91bnRhZ2dlZF9mbG9hdDY0IGliKVxuXG5cblxubGV0IHJlYWRfdW50YWdnZWRfc3RyaW5nIGliID1cbiAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgbGV0IHJlbSA9IHJlZiBsZW4gaW5cbiAgd2hpbGUgIXJlbSA+IDAgZG9cbiAgICBsZXQgYnl0ZXNfcmVhZCA9IEJpX2luYnVmLnRyeV9wcmVyZWFkIGliICFyZW0gaW5cbiAgICBpZiBieXRlc19yZWFkID0gMCB0aGVuXG4gICAgICBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKHN0cmluZylcIlxuICAgIGVsc2UgKFxuICAgICAgQnl0ZXMuYmxpdCBpYi5pX3MgaWIuaV9wb3Mgc3RyICFwb3MgYnl0ZXNfcmVhZDtcbiAgICAgIGliLmlfcG9zIDwtIGliLmlfcG9zICsgYnl0ZXNfcmVhZDtcbiAgICAgIHBvcyA6PSAhcG9zICsgYnl0ZXNfcmVhZDtcbiAgICAgIHJlbSA6PSAhcmVtIC0gYnl0ZXNfcmVhZFxuICAgIClcbiAgZG9uZTtcbiAgQnl0ZXMudG9fc3RyaW5nIHN0clxuXG5sZXQgcmVhZF91bnRhZ2dlZF91dmludCA9IEJpX3ZpbnQucmVhZF91dmludFxubGV0IHJlYWRfdW50YWdnZWRfc3ZpbnQgPSBCaV92aW50LnJlYWRfc3ZpbnRcblxubGV0IHJlYWRfdW5pdCBpYiA9IHJlYWRfdW50YWdnZWRfdW5pdCBpYjsgYFVuaXRcblxubGV0IHJlYWRfYm9vbCBpYiA9IGBCb29sIChyZWFkX3VudGFnZ2VkX2Jvb2wgaWIpXG5cbmxldCByZWFkX2ludDggaWIgPSBgSW50OCAocmVhZF91bnRhZ2dlZF9jaGFyIGliKVxuXG5sZXQgcmVhZF9pbnQxNiBpYiA9IGBJbnQxNiAocmVhZF91bnRhZ2dlZF9pbnQxNiBpYilcblxubGV0IHJlYWRfaW50MzIgaWIgPSBgSW50MzIgKHJlYWRfdW50YWdnZWRfaW50MzIgaWIpXG5cbmxldCByZWFkX2ludDY0IGliID0gYEludDY0IChyZWFkX3VudGFnZ2VkX2ludDY0IGliKVxuXG5sZXQgcmVhZF9mbG9hdDMyIGliID1cbiAgYEZsb2F0MzIgKHJlYWRfdW50YWdnZWRfZmxvYXQzMiBpYilcblxubGV0IHJlYWRfZmxvYXQ2NCBpYiA9XG4gIGBGbG9hdDY0IChyZWFkX3VudGFnZ2VkX2Zsb2F0NjQgaWIpXG5cbmxldCByZWFkX3V2aW50IGliID0gYFV2aW50IChyZWFkX3VudGFnZ2VkX3V2aW50IGliKVxubGV0IHJlYWRfc3ZpbnQgaWIgPSBgU3ZpbnQgKHJlYWRfdW50YWdnZWRfc3ZpbnQgaWIpXG5cbmxldCByZWFkX3N0cmluZyBpYiA9IGBTdHJpbmcgKHJlYWRfdW50YWdnZWRfc3RyaW5nIGliKVxuXG5sZXQgcHJpbnQgcyA9IHByaW50X3N0cmluZyBzOyBwcmludF9uZXdsaW5lICgpXG5cbmxldCByZWFkX3RyZWUgPyh1bmhhc2ggPSBtYWtlX3VuaGFzaCBbXSkgaWIgOiB0cmVlID1cblxuICBsZXQgcmVjIHJlYWRfYXJyYXkgaWIgPVxuICAgIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICBpZiBsZW4gPSAwIHRoZW4gYEFycmF5IE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgdGFnID0gcmVhZF90YWcgaWIgaW5cbiAgICAgIGxldCByZWFkID0gcmVhZGVyX29mX3RhZyB0YWcgaW5cbiAgICAgIGBBcnJheSAoU29tZSAodGFnLCBBcnJheS5pbml0IGxlbiAoZnVuIF8gLT4gcmVhZCBpYikpKVxuXG4gIGFuZCByZWFkX3R1cGxlIGliID1cbiAgICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgYFR1cGxlIChBcnJheS5pbml0IGxlbiAoZnVuIF8gLT4gcmVhZF90cmVlIGliKSlcblxuICBhbmQgcmVhZF9maWVsZCBpYiA9XG4gICAgbGV0IGggPSByZWFkX2ZpZWxkX2hhc2h0YWcgaWIgaW5cbiAgICBsZXQgbmFtZSA9IHVuaGFzaCBoIGluXG4gICAgbGV0IHggPSByZWFkX3RyZWUgaWIgaW5cbiAgICAobmFtZSwgaCwgeClcblxuICBhbmQgcmVhZF9yZWNvcmQgaWIgPVxuICAgIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICBgUmVjb3JkIChBcnJheS5pbml0IGxlbiAoZnVuIF8gLT4gcmVhZF9maWVsZCBpYikpXG5cbiAgYW5kIHJlYWRfbnVtX3ZhcmlhbnRfY29udCBpYiBpIGhhc19hcmcgPVxuICAgIGxldCB4ID1cbiAgICAgIGlmIGhhc19hcmcgdGhlblxuXHRTb21lIChyZWFkX3RyZWUgaWIpXG4gICAgICBlbHNlXG5cdE5vbmVcbiAgICBpblxuICAgIGBOdW1fdmFyaWFudCAoaSwgeClcblxuICBhbmQgcmVhZF9udW1fdmFyaWFudCBpYiA9XG4gICAgcmVhZF9udW10YWcgaWIgcmVhZF9udW1fdmFyaWFudF9jb250XG5cbiAgYW5kIHJlYWRfdmFyaWFudF9jb250IGliIGggaGFzX2FyZyA9XG4gICAgbGV0IG5hbWUgPSB1bmhhc2ggaCBpblxuICAgIGxldCB4ID1cbiAgICAgIGlmIGhhc19hcmcgdGhlblxuXHRTb21lIChyZWFkX3RyZWUgaWIpXG4gICAgICBlbHNlXG5cdE5vbmVcbiAgICBpblxuICAgIGBWYXJpYW50IChuYW1lLCBoLCB4KVxuXG4gIGFuZCByZWFkX3ZhcmlhbnQgaWIgPVxuICAgIHJlYWRfaGFzaHRhZyBpYiByZWFkX3ZhcmlhbnRfY29udFxuXG4gIGFuZCByZWFkX3RhYmxlIGliID1cbiAgICBsZXQgcm93X251bSA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICAgIGlmIHJvd19udW0gPSAwIHRoZW5cbiAgICAgIGBUYWJsZSBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IGNvbF9udW0gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICAgIGxldCBmaWVsZHMgPVxuXHRBcnJheS5pbml0IGNvbF9udW0gKFxuXHQgIGZ1biBfIC0+XG5cdCAgICBsZXQgaCA9IHJlYWRfZmllbGRfaGFzaHRhZyBpYiBpblxuXHQgICAgbGV0IG5hbWUgPSB1bmhhc2ggaCBpblxuXHQgICAgbGV0IHRhZyA9IHJlYWRfdGFnIGliIGluXG5cdCAgICAobmFtZSwgaCwgdGFnKVxuXHQpXG4gICAgICBpblxuICAgICAgbGV0IHJlYWRlcnMgPVxuXHRBcnJheS5tYXAgKGZ1biAobmFtZSwgaCwgdGFnKSAtPiByZWFkZXJfb2ZfdGFnIHRhZykgZmllbGRzIGluXG4gICAgICBsZXQgYSA9XG5cdEFycmF5LmluaXQgcm93X251bVxuXHQgIChmdW4gXyAtPlxuXHQgICAgIEFycmF5LmluaXQgY29sX251bSAoZnVuIGogLT4gcmVhZGVycy4oaikgaWIpKVxuICAgICAgaW5cbiAgICAgIGBUYWJsZSAoU29tZSAoZmllbGRzLCBhKSlcblxuICBhbmQgcmVhZF9zaGFyZWQgaWIgPVxuICAgIGxldCBwb3MgPSBpYi5pX29mZnMgKyBpYi5pX3BvcyBpblxuICAgIGxldCBvZmZzZXQgPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICBpZiBvZmZzZXQgPSAwIHRoZW5cbiAgICAgIGxldCByZWMgciA9IGBTaGFyZWQgciBpblxuICAgICAgQmlfc2hhcmUuUmQucHV0IGliLmlfc2hhcmVkXG4gICAgICAgIChwb3MsIEJpX3NoYXJlLmR1bW15X3R5cGVfaWQpIChPYmoucmVwciByKTtcbiAgICAgIGxldCB4ID0gcmVhZF90cmVlIGliIGluXG4gICAgICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciByKSAxIChPYmoucmVwciB4KTtcbiAgICAgIHJcbiAgICBlbHNlXG4gICAgICBPYmoub2JqIChCaV9zaGFyZS5SZC5nZXQgaWIuaV9zaGFyZWRcbiAgICAgICAgICAgICAgICAgKHBvcyAtIG9mZnNldCwgQmlfc2hhcmUuZHVtbXlfdHlwZV9pZCkpXG5cbiAgYW5kIHJlYWRlcl9vZl90YWcgPSBmdW5jdGlvblxuICAgICAgMCAoKiBib29sICopIC0+IHJlYWRfYm9vbFxuICAgIHwgMSAoKiBpbnQ4ICopIC0+IHJlYWRfaW50OFxuICAgIHwgMiAoKiBpbnQxNiAqKSAtPiByZWFkX2ludDE2XG4gICAgfCAzICgqIGludDMyICopIC0+IHJlYWRfaW50MzJcbiAgICB8IDQgKCogaW50NjQgKikgLT4gcmVhZF9pbnQ2NFxuICAgIHwgMTEgKCogZmxvYXQzMiAqKSAtPiByZWFkX2Zsb2F0MzJcbiAgICB8IDEyICgqIGZsb2F0NjQgKikgLT4gcmVhZF9mbG9hdDY0XG4gICAgfCAxNiAoKiB1dmludCAqKSAtPiByZWFkX3V2aW50XG4gICAgfCAxNyAoKiBzdmludCAqKSAtPiByZWFkX3N2aW50XG4gICAgfCAxOCAoKiBzdHJpbmcgKikgLT4gcmVhZF9zdHJpbmdcbiAgICB8IDE5ICgqIGFycmF5ICopIC0+IHJlYWRfYXJyYXlcbiAgICB8IDIwICgqIHR1cGxlICopIC0+IHJlYWRfdHVwbGVcbiAgICB8IDIxICgqIHJlY29yZCAqKSAtPiByZWFkX3JlY29yZFxuICAgIHwgMjIgKCogbnVtX3ZhcmlhbnQgKikgLT4gcmVhZF9udW1fdmFyaWFudFxuICAgIHwgMjMgKCogdmFyaWFudCAqKSAtPiByZWFkX3ZhcmlhbnRcbiAgICB8IDI0ICgqIHVuaXQgKikgLT4gcmVhZF91bml0XG4gICAgfCAyNSAoKiB0YWJsZSAqKSAtPiByZWFkX3RhYmxlXG4gICAgfCAyNiAoKiBzaGFyZWQgKikgLT4gcmVhZF9zaGFyZWRcbiAgICB8IF8gLT4gQmlfdXRpbC5lcnJvciBcIkNvcnJ1cHRlZCBkYXRhIChpbnZhbGlkIHRhZylcIlxuXG4gIGFuZCByZWFkX3RyZWUgaWIgOiB0cmVlID1cbiAgICByZWFkZXJfb2ZfdGFnIChyZWFkX3RhZyBpYikgaWJcblxuICBpblxuICByZWFkX3RyZWUgaWJcblxubGV0IHRyZWVfb2Zfc3RyaW5nID91bmhhc2ggcyA9IHJlYWRfdHJlZSA/dW5oYXNoIChCaV9pbmJ1Zi5mcm9tX3N0cmluZyBzKVxuXG5cbmxldCBza2lwX2J5dGVzIGliIG4gPSBpZ25vcmUgKEJpX2luYnVmLnJlYWQgaWIgbilcblxubGV0IHNraXBfdW5pdCBpYiA9IHNraXBfYnl0ZXMgaWIgMVxubGV0IHNraXBfYm9vbCBpYiA9IHNraXBfYnl0ZXMgaWIgMVxubGV0IHNraXBfaW50OCBpYiA9IHNraXBfYnl0ZXMgaWIgMVxubGV0IHNraXBfaW50MTYgaWIgPSBza2lwX2J5dGVzIGliIDJcbmxldCBza2lwX2ludDMyIGliID0gc2tpcF9ieXRlcyBpYiA0XG5sZXQgc2tpcF9pbnQ2NCBpYiA9IHNraXBfYnl0ZXMgaWIgOFxubGV0IHNraXBfZmxvYXQzMiBpYiA9IHNraXBfYnl0ZXMgaWIgNFxubGV0IHNraXBfZmxvYXQ2NCBpYiA9IHNraXBfYnl0ZXMgaWIgOFxubGV0IHNraXBfdXZpbnQgaWIgPSBpZ25vcmUgKHJlYWRfdW50YWdnZWRfdXZpbnQgaWIpXG5sZXQgc2tpcF9zdmludCBpYiA9IGlnbm9yZSAocmVhZF91bnRhZ2dlZF9zdmludCBpYilcblxubGV0IHNraXBfc3RyaW5nIGliID1cbiAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBza2lwX2J5dGVzIGliIGxlblxuXG5sZXQgcmVjIHNraXBfYXJyYXkgaWIgPVxuICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gIGlmIGxlbiA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IHRhZyA9IHJlYWRfdGFnIGliIGluXG4gICAgbGV0IHJlYWQgPSBza2lwcGVyX29mX3RhZyB0YWcgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIGRvXG4gICAgICByZWFkIGliXG4gICAgZG9uZVxuXG5hbmQgc2tpcF90dXBsZSBpYiA9XG4gIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgZm9yIGkgPSAxIHRvIGxlbiBkb1xuICAgIHNraXAgaWJcbiAgZG9uZVxuXG5hbmQgc2tpcF9maWVsZCBpYiA9XG4gIGlnbm9yZSAocmVhZF9maWVsZF9oYXNodGFnIGliKTtcbiAgc2tpcCBpYlxuXG5hbmQgc2tpcF9yZWNvcmQgaWIgPVxuICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gIGZvciBpID0gMSB0byBsZW4gZG9cbiAgICBza2lwX2ZpZWxkIGliXG4gIGRvbmVcblxuYW5kIHNraXBfbnVtX3ZhcmlhbnRfY29udCBpYiBpIGhhc19hcmcgPVxuICBpZiBoYXNfYXJnIHRoZW5cbiAgICBza2lwIGliXG5cbmFuZCBza2lwX251bV92YXJpYW50IGliID1cbiAgcmVhZF9udW10YWcgaWIgc2tpcF9udW1fdmFyaWFudF9jb250XG5cbmFuZCBza2lwX3ZhcmlhbnRfY29udCBpYiBoIGhhc19hcmcgPVxuICBpZiBoYXNfYXJnIHRoZW5cbiAgICBza2lwIGliXG5cbmFuZCBza2lwX3ZhcmlhbnQgaWIgPVxuICByZWFkX2hhc2h0YWcgaWIgc2tpcF92YXJpYW50X2NvbnRcblxuYW5kIHNraXBfdGFibGUgaWIgPVxuICBsZXQgcm93X251bSA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBpZiByb3dfbnVtID0gMCB0aGVuXG4gICAgKClcbiAgZWxzZVxuICAgIGxldCBjb2xfbnVtID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgbGV0IHJlYWRlcnMgPVxuICAgICAgQXJyYXkuaW5pdCBjb2xfbnVtIChcblx0ZnVuIF8gLT5cblx0ICBpZ25vcmUgKHJlYWRfZmllbGRfaGFzaHRhZyBpYik7XG5cdCAgc2tpcHBlcl9vZl90YWcgKHJlYWRfdGFnIGliKVxuICAgICAgKVxuICAgIGluXG4gICAgZm9yIGkgPSAxIHRvIHJvd19udW0gZG9cbiAgICAgIGZvciBqID0gMSB0byBjb2xfbnVtIGRvXG5cdHJlYWRlcnMuKGopIGliXG4gICAgICBkb25lXG4gICAgZG9uZVxuXG5hbmQgc2tpcHBlcl9vZl90YWcgPSBmdW5jdGlvblxuICAgIDAgKCogYm9vbCAqKSAtPiBza2lwX2Jvb2xcbiAgfCAxICgqIGludDggKikgLT4gc2tpcF9pbnQ4XG4gIHwgMiAoKiBpbnQxNiAqKSAtPiBza2lwX2ludDE2XG4gIHwgMyAoKiBpbnQzMiAqKSAtPiBza2lwX2ludDMyXG4gIHwgNCAoKiBpbnQ2NCAqKSAtPiBza2lwX2ludDY0XG4gIHwgMTEgKCogZmxvYXQzMiAqKSAtPiBza2lwX2Zsb2F0MzJcbiAgfCAxMiAoKiBmbG9hdDY0ICopIC0+IHNraXBfZmxvYXQ2NFxuICB8IDE2ICgqIHV2aW50ICopIC0+IHNraXBfdXZpbnRcbiAgfCAxNyAoKiBzdmludCAqKSAtPiBza2lwX3N2aW50XG4gIHwgMTggKCogc3RyaW5nICopIC0+IHNraXBfc3RyaW5nXG4gIHwgMTkgKCogYXJyYXkgKikgLT4gc2tpcF9hcnJheVxuICB8IDIwICgqIHR1cGxlICopIC0+IHNraXBfdHVwbGVcbiAgfCAyMSAoKiByZWNvcmQgKikgLT4gc2tpcF9yZWNvcmRcbiAgfCAyMiAoKiBudW1fdmFyaWFudCAqKSAtPiBza2lwX251bV92YXJpYW50XG4gIHwgMjMgKCogdmFyaWFudCAqKSAtPiBza2lwX3ZhcmlhbnRcbiAgfCAyNCAoKiB1bml0ICopIC0+IHNraXBfdW5pdFxuICB8IDI1ICgqIHRhYmxlICopIC0+IHNraXBfdGFibGVcbiAgfCBfIC0+IEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoaW52YWxpZCB0YWcpXCJcblxuYW5kIHNraXAgaWIgOiB1bml0ID1cbiAgc2tpcHBlcl9vZl90YWcgKHJlYWRfdGFnIGliKSBpYlxuXG5cbigqIEVxdWl2YWxlbnQgb2YgQXJyYXkubWFwIHRoYXQgZ3VhcmFudGVlcyBhIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbmxldCBhcnJheV9tYXAgZiBhID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGlmIGxlbiA9IDAgdGhlbiBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCByID0gQXJyYXkubWFrZSBsZW4gKGYgKEFycmF5LnVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgQXJyYXkudW5zYWZlX3NldCByIGkgKGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgKVxuXG5cbm1vZHVsZSBQcCA9XG5zdHJ1Y3RcbiAgb3BlbiBFYXN5X2Zvcm1hdFxuXG4gIGxldCBhcnJheSA9IGxpc3RcbiAgbGV0IHJlY29yZCA9IGxpc3RcbiAgbGV0IHR1cGxlID0geyBsaXN0IHdpdGhcblx0XHQgIHNwYWNlX2FmdGVyX29wZW5pbmcgPSBmYWxzZTtcblx0XHQgIHNwYWNlX2JlZm9yZV9jbG9zaW5nID0gZmFsc2U7XG5cdFx0ICBhbGlnbl9jbG9zaW5nID0gZmFsc2UgfVxuICBsZXQgdmFyaWFudCA9IHsgbGlzdCB3aXRoXG5cdFx0ICAgIHNlcGFyYXRvcnNfc3RpY2tfbGVmdCA9IHRydWUgfVxuXG4gIGxldCBtYXAgZiBhID0gQXJyYXkudG9fbGlzdCAoYXJyYXlfbWFwIGYgYSlcblxuICBsZXQgcmVjIGZvcm1hdCBzaGFyZWQgKHggOiB0cmVlKSA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIGBVbml0IC0+IEF0b20gKFwidW5pdFwiLCBhdG9tKVxuICAgICAgfCBgQm9vbCB4IC0+IEF0b20gKChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpLCBhdG9tKVxuICAgICAgfCBgSW50OCB4IC0+IEF0b20gKHNwcmludGYgXCIweCUwMnhcIiAoQ2hhci5jb2RlIHgpLCBhdG9tKVxuICAgICAgfCBgSW50MTYgeCAtPiBBdG9tIChzcHJpbnRmIFwiMHglMDR4XCIgeCwgYXRvbSlcbiAgICAgIHwgYEludDMyIHggLT4gQXRvbSAoc3ByaW50ZiBcIjB4JTA4bHhcIiB4LCBhdG9tKVxuICAgICAgfCBgSW50NjQgeCAtPiBBdG9tIChzcHJpbnRmIFwiMHglMDE2THhcIiB4LCBhdG9tKVxuICAgICAgfCBgRmxvYXQzMiB4IC0+IEF0b20gKHN0cmluZ19vZl9mbG9hdCB4LCBhdG9tKVxuICAgICAgfCBgRmxvYXQ2NCB4IC0+IEF0b20gKHN0cmluZ19vZl9mbG9hdCB4LCBhdG9tKVxuICAgICAgfCBgVXZpbnQgeCAtPiBBdG9tIChzdHJpbmdfb2ZfaW50IHgsIGF0b20pXG4gICAgICB8IGBTdmludCB4IC0+IEF0b20gKHN0cmluZ19vZl9pbnQgeCwgYXRvbSlcbiAgICAgIHwgYFN0cmluZyBzIC0+IEF0b20gKHNwcmludGYgXCIlU1wiIHMsIGF0b20pXG4gICAgICB8IGBBcnJheSBOb25lIC0+IEF0b20gKFwiW11cIiwgYXRvbSlcbiAgICAgIHwgYEFycmF5IChTb21lIChfLCBhKSkgLT5cbiAgICAgICAgICBMaXN0ICgoXCJbXCIsIFwiLFwiLCBcIl1cIiwgYXJyYXkpLCBtYXAgKGZvcm1hdCBzaGFyZWQpIGEpXG4gICAgICB8IGBUdXBsZSBhIC0+IExpc3QgKChcIihcIiwgXCIsXCIsIFwiKVwiLCB0dXBsZSksIG1hcCAoZm9ybWF0IHNoYXJlZCkgYSlcbiAgICAgIHwgYFJlY29yZCBhIC0+IExpc3QgKChcIntcIiwgXCIsXCIsIFwifVwiLCByZWNvcmQpLCBtYXAgKGZvcm1hdF9maWVsZCBzaGFyZWQpIGEpXG4gICAgICB8IGBOdW1fdmFyaWFudCAoaSwgbykgLT5cblx0ICBsZXQgc3VmZml4ID1cblx0ICAgIGlmIGkgPSAwIHRoZW4gXCJcIlxuXHQgICAgZWxzZSBzdHJpbmdfb2ZfaW50IGlcblx0ICBpblxuXHQgIChtYXRjaCBvIHdpdGhcblx0ICAgICAgIE5vbmUgLT4gQXRvbSAoXCJOb25lXCIgXiBzdWZmaXgsIGF0b20pXG5cdCAgICAgfCBTb21lIHggLT5cblx0XHQgbGV0IGNvbnMgPSBBdG9tIChcIlNvbWVcIiBeIHN1ZmZpeCwgYXRvbSkgaW5cblx0XHQgTGFiZWwgKChjb25zLCBsYWJlbCksIGZvcm1hdCBzaGFyZWQgeCkpXG4gICAgICB8IGBWYXJpYW50IChvcHRfbmFtZSwgaCwgbykgLT5cblx0ICBsZXQgbmFtZSA9XG5cdCAgICBtYXRjaCBvcHRfbmFtZSB3aXRoXG5cdFx0Tm9uZSAtPiBzcHJpbnRmIFwiIyUwOGx4XCIgKEludDMyLm9mX2ludCBoKVxuXHQgICAgICB8IFNvbWUgcyAtPiBzcHJpbnRmIFwiJVNcIiBzXG5cdCAgaW5cblx0ICAobWF0Y2ggbyB3aXRoXG5cdCAgICAgICBOb25lIC0+IEF0b20gKFwiPFwiIF4gbmFtZSBeIFwiPlwiLCBhdG9tKVxuXHQgICAgIHwgU29tZSB4IC0+XG5cdFx0IExpc3QgKChcIjxcIiwgXCJcIiwgXCI+XCIsIHR1cGxlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgWyBMYWJlbCAoKEF0b20gKG5hbWUgXiBcIjpcIiwgYXRvbSksIGxhYmVsKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0IHNoYXJlZCB4KSBdKVxuXHQgIClcbiAgICAgIHwgYFRhYmxlIE5vbmUgLT4gQXRvbSAoXCJbXVwiLCBhdG9tKVxuICAgICAgfCBgVGFibGUgKFNvbWUgKGhlYWRlciwgYWEpKSAtPlxuXHQgIGxldCByZWNvcmRfYXJyYXkgPVxuXHQgICAgYEFycmF5IChcblx0ICAgICAgU29tZSAoXG5cdFx0cmVjb3JkX3RhZyxcblx0XHRBcnJheS5tYXAgKFxuXHRcdCAgZnVuIGEgLT5cblx0XHQgICAgYFJlY29yZCAoXG5cdFx0ICAgICAgQXJyYXkubWFwaSAoXG5cdFx0XHRmdW4gaSB4IC0+XG5cdFx0XHQgIGxldCBzLCBoLCBfID0gaGVhZGVyLihpKSBpblxuXHRcdFx0ICAocywgaCwgeClcblx0XHQgICAgICApIGFcblx0XHQgICAgKVxuXHRcdCkgYWFcblx0ICAgICAgKVxuXHQgICAgKSBpblxuXHQgIGZvcm1hdCBzaGFyZWQgcmVjb3JkX2FycmF5XG5cbiAgICAgIHwgYFNoYXJlZCB4IC0+XG4gICAgICAgICAgbGV0IHRibCwgcCA9IHNoYXJlZCBpblxuICAgICAgICAgIGluY3IgcDtcbiAgICAgICAgICBsZXQgcG9zID0gIXAgaW5cbiAgICAgICAgICBsZXQgb2Zmc2V0ID0gQmlfc2hhcmUuV3IucHV0IHRibCAoeCwgQmlfc2hhcmUuZHVtbXlfdHlwZV9pZCkgcG9zIGluXG4gICAgICAgICAgaWYgb2Zmc2V0ID0gMCB0aGVuXG4gICAgICAgICAgICBMYWJlbCAoKEF0b20gKHNwcmludGYgXCJzaGFyZWQlaSAtPlwiIHBvcywgYXRvbSksIGxhYmVsKSxcbiAgICAgICAgICAgICAgICAgICBmb3JtYXQgc2hhcmVkIHgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQXRvbSAoc3ByaW50ZiBcInNoYXJlZCVpXCIgKHBvcyAtIG9mZnNldCksIGF0b20pXG5cbiAgYW5kIGZvcm1hdF9maWVsZCBzaGFyZWQgKG8sIGgsIHgpID1cbiAgICBsZXQgcyA9XG4gICAgICBtYXRjaCBvIHdpdGhcblx0ICBOb25lIC0+IHNwcmludGYgXCIjJTA4bHhcIiAoSW50MzIub2ZfaW50IGgpXG5cdHwgU29tZSBzIC0+IHNwcmludGYgXCIlU1wiIHNcbiAgICBpblxuICAgIExhYmVsICgoQXRvbSAoc3ByaW50ZiBcIiVzOlwiIHMsIGF0b20pLCBsYWJlbCksIGZvcm1hdCBzaGFyZWQgeClcbmVuZFxuXG5sZXQgaW5pdCAoKSA9IChCaV9zaGFyZS5Xci5jcmVhdGUgNTEyLCByZWYgMClcblxubGV0IHZpZXdfb2ZfdHJlZSB0ID1cbiAgRWFzeV9mb3JtYXQuUHJldHR5LnRvX3N0cmluZyAoUHAuZm9ybWF0IChpbml0ICgpKSB0KVxuXG5sZXQgcHJpbnRfdmlld19vZl90cmVlIHQgPVxuICBFYXN5X2Zvcm1hdC5QcmV0dHkudG9fc3Rkb3V0IChQcC5mb3JtYXQgKGluaXQgKCkpIHQpXG5cbmxldCBvdXRwdXRfdmlld19vZl90cmVlIG9jIHQgPVxuICBFYXN5X2Zvcm1hdC5QcmV0dHkudG9fY2hhbm5lbCBvYyAoUHAuZm9ybWF0IChpbml0ICgpKSB0KVxuXG5sZXQgdmlldyA/dW5oYXNoIHMgPVxuICB2aWV3X29mX3RyZWUgKHRyZWVfb2Zfc3RyaW5nID91bmhhc2ggcylcblxubGV0IHByaW50X3ZpZXcgP3VuaGFzaCBzID1cbiAgcHJpbnRfdmlld19vZl90cmVlICh0cmVlX29mX3N0cmluZyA/dW5oYXNoIHMpXG5cbmxldCBvdXRwdXRfdmlldyA/dW5oYXNoIG9jIHMgPVxuICBvdXRwdXRfdmlld19vZl90cmVlIG9jICh0cmVlX29mX3N0cmluZyA/dW5oYXNoIHMpXG4iLCJvcGVuIFByaW50ZlxuXG4oKlxubGV0IHNwbGl0IHMgPSBTdHIuc3BsaXQgKFN0ci5yZWdleHAgXCIsXCIpIHNcbiopXG5cbmxldCBzcGxpdCBzID1cbiAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICBsZXQgc3RvcCA9IHJlZiAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICBmb3IgaSA9ICFzdG9wIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHMuW2ldID0gJywnIHRoZW4gKFxuICAgICAgbGV0IHN0YXJ0ID0gaSArIDEgaW5cbiAgICAgIGFjYyA6PSBTdHJpbmcuc3ViIHMgc3RhcnQgKCFzdG9wIC0gc3RhcnQpIDo6ICFhY2M7XG4gICAgICBzdG9wIDo9IGlcbiAgICApXG4gIGRvbmU7XG4gIFN0cmluZy5zdWIgcyAwICFzdG9wIDo6ICFhY2NcblxuXG5sZXQgbG9hZF9saW5lcyBhY2N1IHMgPVxuICBsZXQgaWMgPSBvcGVuX2luIHMgaW5cbiAgbGV0IGwgPSByZWYgYWNjdSBpblxuICAodHJ5XG4gICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICBsIDo9IGlucHV0X2xpbmUgaWMgOjogTGlzdC5yZXYgIWxcbiAgICAgZG9uZVxuICAgd2l0aCBFbmRfb2ZfZmlsZSAtPlxuICAgICBjbG9zZV9pbiBpY1xuICApO1xuICAhbFxuXG5sZXQgbG9hZCBpYyA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDEwMDAgaW5cbiAgdHJ5XG4gICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAoaW5wdXRfY2hhciBpYyk7XG4gICAgZG9uZTtcbiAgICBhc3NlcnQgZmFsc2VcbiAgd2l0aCBFbmRfb2ZfZmlsZSAtPlxuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0ICggLy8gKSA9IEZpbGVuYW1lLmNvbmNhdFxuXG5sZXQgZGVmYXVsdF9kaWN0X3BhdGggKCkgPVxuICB0cnlcbiAgICBtYXRjaCBTeXMub3NfdHlwZSB3aXRoXG4gICAgICAgIFwiVW5peFwiIC0+IFNvbWUgKFN5cy5nZXRlbnYgXCJIT01FXCIgLy8gXCIuYmR1bXAtZGljdFwiKVxuICAgICAgfCBcIldpbjMyXCIgLT4gU29tZSAoU3lzLmdldGVudiBcIkhPTUVQQVRIXCIgLy8gXCJfYmR1bXAtZGljdFwiKVxuICAgICAgfCBcIkN5Z3dpblwiIC0+IFNvbWUgKFN5cy5nZXRlbnYgXCJIT01FXCIgLy8gXCIuYmR1bXAtZGljdFwiKVxuICAgICAgfCBfIC0+IE5vbmVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBOb25lXG5cbmxldCBsb2FkX2RpY3Rpb25hcnkgZGljX2ZpbGUgYWNjdSA9XG4gIG1hdGNoIGRpY19maWxlIHdpdGhcbiAgICAgIE5vbmUgLT4gYWNjdVxuICAgIHwgU29tZSBmbiAtPlxuICAgICAgICBpZiBTeXMuZmlsZV9leGlzdHMgZm4gdGhlblxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbG9hZF9saW5lcyBhY2N1IGZuXG4gICAgICAgICAgd2l0aCBlIC0+XG4gICAgICAgICAgICBmYWlsd2l0aCAoc3ByaW50ZiBcIkNhbm5vdCBsb2FkIGRpY3Rpb25hcnkgZnJvbSAlUzogJXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmbiAoUHJpbnRleGMudG9fc3RyaW5nIGUpKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYWNjdVxuXG5sZXQgd3JpdGVfdW5pcSBvYyBhID1cbiAgaWYgQXJyYXkubGVuZ3RoIGEgPiAwIHRoZW4gKFxuICAgIGZwcmludGYgb2MgXCIlc1xcblwiIGEuKDApO1xuICAgIGlnbm9yZSAoXG4gICAgICBBcnJheS5mb2xkX2xlZnQgKFxuICAgICAgICBmdW4gbGFzdCB4IC0+XG4gICAgICAgICAgaWYgbGFzdCA8PiB4IHRoZW5cbiAgICAgICAgICAgIGZwcmludGYgb2MgXCIlc1xcblwiIHg7XG4gICAgICAgICAgeFxuICAgICAgKSBhLigwKSBhXG4gICAgKVxuICApXG5cbmxldCBzYXZlX2RpY3Rpb25hcnkgZGljX2ZpbGUgbCA9XG4gIG1hdGNoIGRpY19maWxlIHdpdGhcbiAgICAgIE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZm4gLT5cbiAgICAgICAgbGV0IGEgPSBBcnJheS5vZl9saXN0IGwgaW5cbiAgICAgICAgQXJyYXkuc29ydCBTdHJpbmcuY29tcGFyZSBhO1xuICAgICAgICBsZXQgb2MgPSBvcGVuX291dCBmbiBpblxuICAgICAgICBsZXQgZmluYWxseSAoKSA9IGNsb3NlX291dF9ub2VyciBvYyBpblxuICAgICAgICB0cnlcbiAgICAgICAgICB3cml0ZV91bmlxIG9jIGE7XG4gICAgICAgICAgZmluYWxseSAoKVxuICAgICAgICB3aXRoIGUgLT5cbiAgICAgICAgICBmaW5hbGx5ICgpO1xuICAgICAgICAgIHJhaXNlIGVcbiIsIiMgMSBcImNvbW1vbi5tbFwiXG5sZXQgdmVyc2lvbiA9IFwiMi4xLjBcIlxuXG5leGNlcHRpb24gSnNvbl9lcnJvciBvZiBzdHJpbmdcblxubGV0IGpzb25fZXJyb3IgcyA9IHJhaXNlIChKc29uX2Vycm9yIHMpXG5cbmV4Y2VwdGlvbiBFbmRfb2ZfYXJyYXlcbmV4Y2VwdGlvbiBFbmRfb2Zfb2JqZWN0XG5leGNlcHRpb24gRW5kX29mX3R1cGxlXG5leGNlcHRpb24gRW5kX29mX2lucHV0XG5cbnR5cGUgaW5fcGFyYW0gPSB7IHN0cmluZ19idWYgOiBCdWZmZXIudCB9XG5cbmxldCBjcmVhdGVfaW5fcGFyYW0gPyhsZW4gPSAyNTYpICgpID0geyBzdHJpbmdfYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gfVxuXG5sZXQgdXRmOF9vZl9jb2RlIGJ1ZiB4ID1cbiAgbGV0IGFkZCA9IEJ1ZmZlci5hZGRfY2hhciBpblxuXG4gICgqIFN0cmFpZ2h0IDw9IGRvZXNuJ3Qgd29yayB3aXRoIHNpZ25lZCAzMS1iaXQgaW50cyAqKVxuICBsZXQgbWF4Yml0cyBuIHggPSB4IGxzciBuID0gMCBpblxuXG4gIGlmIG1heGJpdHMgNyB4IHRoZW4gKCogNyAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyIHgpXG4gIGVsc2UgaWYgbWF4Yml0cyAxMSB4IHRoZW4gKFxuICAgICgqIDUgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTEwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMDExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAxNiB4IHRoZW4gKFxuICAgICgqIDQgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAwMDExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAyMSB4IHRoZW4gKFxuICAgICgqIDMgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMDAwMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAyNiB4IHRoZW4gKFxuICAgICgqIDIgKyA2ICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTEwMDAgbG9yICgoeCBsc3IgMjQpIGxhbmQgMGIwMDAwMDAxMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgKFxuICAgIGFzc2VydCAobWF4Yml0cyAzMSB4KTtcbiAgICAoKiAxICsgNiArIDYgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMTEwMCBsb3IgKCh4IGxzciAzMCkgbGFuZCAwYjAwMDAwMDAxKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDI0KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuXG5sZXQgY29kZV9vZl9zdXJyb2dhdGVfcGFpciBpIGogPVxuICBsZXQgaGlnaDEwID0gaSAtIDB4RDgwMCBpblxuICBsZXQgbG93MTAgPSBqIC0gMHhEQzAwIGluXG4gIDB4MTAwMDAgKyAoKGhpZ2gxMCBsc2wgMTApIGxvciBsb3cxMClcblxubGV0IHV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgYnVmIGkgaiA9XG4gIHV0Zjhfb2ZfY29kZSBidWYgKGNvZGVfb2Zfc3Vycm9nYXRlX3BhaXIgaSBqKVxuXG50eXBlIGxleGVyX3N0YXRlID0ge1xuICBidWYgOiBCdWZmZXIudDsgKCogQnVmZmVyIHVzZWQgdG8gYWNjdW11bGF0ZSBzdWJzdHJpbmdzICopXG4gIG11dGFibGUgbG51bSA6IGludDsgKCogQ3VycmVudCBsaW5lIG51bWJlciAoc3RhcnRpbmcgZnJvbSAxKSAqKVxuICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICAgICgqIEFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGN1cnJlbnQgbGluZVxuICAgICAgICAgKHN0YXJ0aW5nIGZyb20gMCkgKilcbiAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247ICgqIE5hbWUgZGVzY3JpYmluZyB0aGUgaW5wdXQgZmlsZSAqKVxufVxuXG5tb2R1bGUgTGV4ZXJfc3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gbGV4ZXJfc3RhdGUgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5lbmRcblxubGV0IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgPyhsbnVtID0gMSkgKCkgPVxuICBsZXQgYnVmID0gbWF0Y2ggYnVmIHdpdGggTm9uZSAtPiBCdWZmZXIuY3JlYXRlIDI1NiB8IFNvbWUgYnVmIC0+IGJ1ZiBpblxuICB7IGJ1ZjsgbG51bTsgYm9sID0gMDsgZm5hbWUgfVxuXG4jIDEgXCJ0eXBlLm1sXCJcbigqKiB7MyBUeXBlIG9mIHRoZSBKU09OIHRyZWV9ICopXG5cbnR5cGUgdCA9XG4gICAgW1xuICAgIHwgYE51bGxcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICBcbiMgOCBcInR5cGUubWxcIlxuICAgIHwgYEludCBvZiBpbnRcbiAgICBcbiMgMTEgXCJ0eXBlLm1sXCJcbiAgICB8IGBJbnRsaXQgb2Ygc3RyaW5nXG4gICAgXG4jIDE0IFwidHlwZS5tbFwiXG4gICAgfCBgRmxvYXQgb2YgZmxvYXRcbiAgICBcbiMgMTcgXCJ0eXBlLm1sXCJcbiAgICB8IGBGbG9hdGxpdCBvZiBzdHJpbmdcbiAgICBcbiMgMjAgXCJ0eXBlLm1sXCJcbiAgICB8IGBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgXG4jIDIzIFwidHlwZS5tbFwiXG4gICAgfCBgU3RyaW5nbGl0IG9mIHN0cmluZ1xuICAgIFxuIyAyNSBcInR5cGUubWxcIlxuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICBcbiMgMjggXCJ0eXBlLm1sXCJcbiAgICB8IGBUdXBsZSBvZiB0IGxpc3RcbiAgICBcbiMgMzEgXCJ0eXBlLm1sXCJcbiAgICB8IGBWYXJpYW50IG9mIChzdHJpbmcgKiB0IG9wdGlvbilcbiAgICBcbiMgMzMgXCJ0eXBlLm1sXCJcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcbiMgMSBcIndyaXRlLm1sXCJcbigqIGluY2x1ZGVkOiB0eXBlLm1sICopXG5cbmxldCBoZXggbiA9XG4gIENoYXIuY2hyIChcbiAgICBpZiBuIDwgMTAgdGhlbiBuICsgNDhcbiAgICBlbHNlIG4gKyA4N1xuICApXG5cbmxldCB3cml0ZV9zcGVjaWFsIHNyYyBzdGFydCBzdG9wIG9iIHN0ciA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdHI7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCB3cml0ZV9jb250cm9sX2NoYXIgc3JjIHN0YXJ0IHN0b3Agb2IgYyA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXFx1MDBcIjtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxzciA0KSk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsYW5kIDB4ZikpO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgZmluaXNoX3N0cmluZyBzcmMgc3RhcnQgb2IgPVxuICB0cnlcbiAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydClcbiAgd2l0aCBleGMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcInNyYz0lUyBzdGFydD0laSBsZW49JWlcXG4lIVwiXG4gICAgICBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydCk7XG4gICAgcmFpc2UgZXhjXG5cbmxldCB3cml0ZV9zdHJpbmdfYm9keSBvYiBzID1cbiAgbGV0IHN0YXJ0ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICdcIicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcIlwiXG4gICAgICB8ICdcXFxcJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgJ1xcYicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcYlwiXG4gICAgICB8ICdcXDAxMicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcZlwiXG4gICAgICB8ICdcXG4nIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXG5cIlxuICAgICAgfCAnXFxyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxyXCJcbiAgICAgIHwgJ1xcdCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcdFwiXG4gICAgICB8ICdcXHgwMCcuLidcXHgxRidcbiAgICAgIHwgJ1xceDdGJyBhcyBjIC0+IHdyaXRlX2NvbnRyb2xfY2hhciBzIHN0YXJ0IGkgb2IgY1xuICAgICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGZpbmlzaF9zdHJpbmcgcyBzdGFydCBvYlxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHMgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcztcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IGpzb25fc3RyaW5nX29mX3N0cmluZyBzID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAxMCBpblxuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCB0ZXN0X3N0cmluZyAoKSA9XG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBmb3IgaSA9IDAgdG8gMjU1IGRvXG4gICAgQnl0ZXMuc2V0IHMgaSAoQ2hhci5jaHIgaSlcbiAgZG9uZTtcbiAganNvbl9zdHJpbmdfb2Zfc3RyaW5nIChCeXRlcy50b19zdHJpbmcgcylcblxuXG5sZXQgd3JpdGVfbnVsbCBvYiAoKSA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwibnVsbFwiXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKVxuXG5cbmxldCBtYXhfZGlnaXRzID1cbiAgbWF4XG4gICAgKFN0cmluZy5sZW5ndGggKHN0cmluZ19vZl9pbnQgbWF4X2ludCkpXG4gICAgKFN0cmluZy5sZW5ndGggKHN0cmluZ19vZl9pbnQgbWluX2ludCkpXG5cbmxldCBkZWMgbiA9XG4gIENoYXIuY2hyIChuICsgNDgpXG5cbmxldCByZWMgd3JpdGVfZGlnaXRzIHMgeCA9XG4gIGlmIHggPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCBkID0geCBtb2QgMTAgaW5cbiAgICB3cml0ZV9kaWdpdHMgcyAoeCAvIDEwKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgcyAoZGVjIChhYnMgZCkpXG5cbmxldCB3cml0ZV9pbnQgb2IgeCA9XG4gIGlmIHggPiAwIHRoZW5cbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICBlbHNlIGlmIHggPCAwIHRoZW4gKFxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLSc7XG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgKVxuICBlbHNlXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcwJ1xuXG5cbmxldCBqc29uX3N0cmluZ19vZl9pbnQgaSA9XG4gIHN0cmluZ19vZl9pbnQgaVxuXG5cbigqXG4gIEVuc3VyZSB0aGF0IHRoZSBmbG9hdCBpcyBub3QgcHJpbnRlZCBhcyBhbiBpbnQuXG4gIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IEpTT04sIGJ1dCB1c2VmdWwgaW4gb3JkZXIgdG8gZ3VhcmFudGVlXG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IGZsb2F0X25lZWRzX3BlcmlvZCBzID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAnMCcuLic5JyB8ICctJyAtPiAoKVxuICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIEV4aXQgLT5cbiAgICBmYWxzZVxuXG4oKlxuICBHdWFyYW50ZWVzIHRoYXQgYSBzdWZmaWNpZW50IG51bWJlciBvZiBkaWdpdHMgYXJlIHByaW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgd3JpdGVfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG5sZXQgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbGV0IG9wZW4gUHJpbnRmIGluXG4gIGxldCBzID1cbiAgICBtYXRjaCBzaWduaWZpY2FudF9maWd1cmVzIHdpdGhcbiAgICAgICAgMSAtPiBzcHJpbnRmIFwiJS4xZ1wiIHhcbiAgICAgIHwgMiAtPiBzcHJpbnRmIFwiJS4yZ1wiIHhcbiAgICAgIHwgMyAtPiBzcHJpbnRmIFwiJS4zZ1wiIHhcbiAgICAgIHwgNCAtPiBzcHJpbnRmIFwiJS40Z1wiIHhcbiAgICAgIHwgNSAtPiBzcHJpbnRmIFwiJS41Z1wiIHhcbiAgICAgIHwgNiAtPiBzcHJpbnRmIFwiJS42Z1wiIHhcbiAgICAgIHwgNyAtPiBzcHJpbnRmIFwiJS43Z1wiIHhcbiAgICAgIHwgOCAtPiBzcHJpbnRmIFwiJS44Z1wiIHhcbiAgICAgIHwgOSAtPiBzcHJpbnRmIFwiJS45Z1wiIHhcbiAgICAgIHwgMTAgLT4gc3ByaW50ZiBcIiUuMTBnXCIgeFxuICAgICAgfCAxMSAtPiBzcHJpbnRmIFwiJS4xMWdcIiB4XG4gICAgICB8IDEyIC0+IHNwcmludGYgXCIlLjEyZ1wiIHhcbiAgICAgIHwgMTMgLT4gc3ByaW50ZiBcIiUuMTNnXCIgeFxuICAgICAgfCAxNCAtPiBzcHJpbnRmIFwiJS4xNGdcIiB4XG4gICAgICB8IDE1IC0+IHNwcmludGYgXCIlLjE1Z1wiIHhcbiAgICAgIHwgMTYgLT4gc3ByaW50ZiBcIiUuMTZnXCIgeFxuICAgICAgfCBfIC0+IHNwcmludGYgXCIlLjE3Z1wiIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQganNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX3N0ZF9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBqc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBqc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9zdGRfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIGpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIGpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHRlc3RfZmxvYXQgKCkgPVxuICBsZXQgbCA9IFsgMC47IDEuOyAtMS4gXSBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4gMi4gKi4geCArLiAxLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAvLiBzcXJ0IDIuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4ICouIHNxcnQgMy4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgY29zIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggKi4gMS4yM2U1MCkgbCBpblxuICBsZXQgbCA9IGwgQCBbIGluZmluaXR5OyBuZWdfaW5maW5pdHkgXSBpblxuICBMaXN0Lml0ZXIgKFxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgcyA9IFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4IGluXG4gICAgICBsZXQgeSA9IGZsb2F0X29mX3N0cmluZyBzIGluXG4gICAgICBQcmludGYucHJpbnRmIFwiJWcgJWcgJVMgJUJcXG5cIiB4IHkgcyAoeCA9IHkpXG4gIClcbiAgICBsXG5cbigqXG5sZXQgKCkgPSB0ZXN0X2Zsb2F0ICgpXG4qKVxuXG5sZXQgd3JpdGVfaW50bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9mbG9hdGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfc3RyaW5nbGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcblxubGV0IHJlYyBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfc2VwIHg7XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBpdGVyMiBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgZl9zZXAgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgd3JpdGVfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIFxuIyAyNjQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICBcbiMgMjY3IFwid3JpdGUubWxcIlxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMjcwIFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfZmxvYXQgb2IgZlxuICAgIFxuIyAyNzMgXCJ3cml0ZS5tbFwiXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDI3NiBcIndyaXRlLm1sXCJcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIFxuIyAyNzkgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAyODEgXCJ3cml0ZS5tbFwiXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX2xpc3Qgb2IgbFxuICAgIFxuIyAyODQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV90dXBsZSBvYiBsXG4gICAgXG4jIDI4NyBcIndyaXRlLm1sXCJcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV92YXJpYW50IG9iIHMgb1xuXG4jIDI5MCBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG4jIDMwNiBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcoJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJyknXG5cbiMgMzEzIFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3ZhcmlhbnQgb2IgcyBvID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc8JztcbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIChtYXRjaCBvIHdpdGhcbiAgICAgICBOb25lIC0+ICgpXG4gICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgICAgICAgd3JpdGVfanNvbiBvYiB4XG4gICk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPidcblxuIyAzMjUgXCJ3cml0ZS5tbFwiXG5sZXQgd3JpdGVfdCA9IHdyaXRlX2pzb25cblxubGV0IHJlYyB3cml0ZV9zdGRfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIFxuIyAzMzIgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICBcbiMgMzM1IFwid3JpdGUubWxcIlxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzM4IFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfc3RkX2Zsb2F0IG9iIGZcbiAgICBcbiMgMzQxIFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAzNDQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzQ3IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzQ5IFwid3JpdGUubWxcIlxuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuICAgIFxuIyAzNTIgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV9zdGRfdHVwbGUgb2IgbFxuICAgIFxuIyAzNTUgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvXG5cbiMgMzU4IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbiMgMzc5IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgbyA9XG4gIG1hdGNoIG8gd2l0aFxuICAgICAgTm9uZSAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gICAgICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgICB3cml0ZV9zdGRfanNvbiBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxuIyAzOTEgXCJ3cml0ZS5tbFwiXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYik7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fZmlsZSA/bGVuID9zdGQgPyhzdWYgPSBcIlxcblwiKSBmaWxlIHggPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHRvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2MgeDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubGV0IHNlcV90b19idWZmZXIgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9iIHN0ID1cbiAgU2VxLml0ZXIgKHRvX2J1ZmZlciB+c3VmID9zdGQgb2IpIHN0XG5cbmxldCBzZXFfdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBzdCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHNlcV90b19idWZmZXIgfnN1ZiA/c3RkIG9iIHN0O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHNlcV90b19jaGFubmVsID9idWYgPyhsZW49MjA5NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9jIHNlcSA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgU2VxLml0ZXIgKGZ1biBqc29uIC0+XG4gICAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBqc29uO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgKSBzZXFcblxubGV0IHNlcV90b19maWxlID9sZW4gPyhzdWYgPSBcIlxcblwiKSA/c3RkIGZpbGUgc3QgPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHN0O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5cbmxldCByZWMgc29ydCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgc29ydCB2KSkgbCkgaW5cbiAgICAgIGBBc3NvYyAoTGlzdC5zdGFibGVfc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSBsKVxuICB8IGBMaXN0IGwgLT5cbiAgICAgIGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIFxuIyA0ODUgXCJ3cml0ZS5tbFwiXG4gIHwgYFR1cGxlIGwgLT5cbiAgICAgIGBUdXBsZSAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICBcbiMgNDg5IFwid3JpdGUubWxcIlxuICB8IGBWYXJpYW50IChrLCBTb21lIHYpIGFzIHggLT5cbiAgICAgIGxldCB2JyA9IHNvcnQgdiBpblxuICAgICAgaWYgdiA9PSB2JyB0aGVuIHhcbiAgICAgIGVsc2VcbiAgICAgICAgYFZhcmlhbnQgKGssIFNvbWUgdicpXG4gIFxuIyA0OTUgXCJ3cml0ZS5tbFwiXG4gIHwgeCAtPiB4XG4jIDEgXCJtb25vbW9ycGhpYy5tbFwiXG5sZXQgcmVjIHBwIGZtdCA9XG4gIGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJgTnVsbFwiXG4gIHwgYEJvb2wgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBCb29sIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUJcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA5IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZFwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDE1IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDIxIFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBGbG9hdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUZcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAyNyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgRmxvYXRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMzMgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFN0cmluZyB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMzkgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFN0cmluZ2xpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZ2xpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgNDQgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEFzc29jIHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEFzc29jIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBrZXk7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgICAgICAgcHAgZm10IHZhbHVlO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYExpc3QgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgTGlzdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIHggLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgNzEgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFR1cGxlIHR1cCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBUdXBsZSAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIGUgLT5cbiAgICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgICBwcCBmbXQgZTtcbiAgICAgICAgICAgdHJ1ZSkgZmFsc2UgdHVwKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA4NCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFZhcmlhbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIG5hbWU7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgKG1hdGNoIHZhbHVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5vbmVcIlxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIoU29tZSBcIjtcbiAgICAgICAgcHAgZm10IHg7XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKVwiKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuXG4jIDk5IFwibW9ub21vcnBoaWMubWxcIlxubGV0IHNob3cgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHAgeFxuXG5sZXQgcmVjIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IGBOdWxsLCBgTnVsbCAtPiB0cnVlXG4gIHwgYEJvb2wgYSwgYEJvb2wgYiAtPiBhID0gYlxuICBcbiMgMTA3IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnQgYSwgYEludCBiIC0+IGEgPSBiXG4gICAgXG4jIDExMCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBJbnRsaXQgYSwgYEludGxpdCBiIC0+IGEgPSBiXG4gICAgXG4jIDExMyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBGbG9hdCBhLCBgRmxvYXQgYiAtPiBhID0gYlxuICAgIFxuIyAxMTYgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgRmxvYXRsaXQgYSwgYEZsb2F0bGl0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTE5IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFN0cmluZyBhLCBgU3RyaW5nIGIgLT4gYSA9IGJcbiAgICBcbiMgMTIyIFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBhLCBgU3RyaW5nbGl0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTI0IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEFzc29jIHhzLCBgQXNzb2MgeXMgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleXMgPSBmdW4gKGtleSwgXykgKGtleScsIF8pIC0+IFN0cmluZy5jb21wYXJlIGtleSBrZXknIGluXG4gICAgICBsZXQgeHMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB4cyBpblxuICAgICAgbGV0IHlzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeXMgaW5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIChmdW4gKGtleSwgdmFsdWUpIChrZXknLCB2YWx1ZScpIC0+XG4gICAgICAgIG1hdGNoIGtleSA9IGtleScgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPiBlcXVhbCB2YWx1ZSB2YWx1ZScpIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgXG4jIDEzNyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBUdXBsZSB4cywgYFR1cGxlIHlzXG4gICAgXG4jIDEzOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBMaXN0IHhzLCBgTGlzdCB5cyAtPlxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgZXF1YWwgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICBcbiMgMTQ2IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSwgYFZhcmlhbnQgKG5hbWUnLCB2YWx1ZScpIC0+XG4gICAgICAobWF0Y2ggbmFtZSA9IG5hbWUnIHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBtYXRjaCB2YWx1ZSwgdmFsdWUnIHdpdGhcbiAgICAgICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcXVhbCB4IHlcbiAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIFxuIyAxNTUgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBfIC0+IGZhbHNlXG4jIDE0IFwieW9qc29uLmNwcG8ubWxcIlxubW9kdWxlIFByZXR0eSA9XG5zdHJ1Y3RcbiMgMSBcInByZXR0eS5tbFwiXG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgXG4jIDc4IFwicHJldHR5Lm1sXCJcbiAgICB8IGBJbnQgeCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2ZfaW50IHgpXG4gICAgXG4jIDgxIFwicHJldHR5Lm1sXCJcbiAgICB8IGBGbG9hdCB4IC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBzdGQgdGhlbiBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICAgIGVsc2UganNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDg5IFwicHJldHR5Lm1sXCJcbiAgICB8IGBTdHJpbmcgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG4gICAgXG4jIDkyIFwicHJldHR5Lm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDk1IFwicHJldHR5Lm1sXCJcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICBcbiMgOTggXCJwcmV0dHkubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICBcbiMgMTAwIFwicHJldHR5Lm1sXCJcbiAgICB8IGBMaXN0IFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiW11cIlxuICAgIHwgYExpc3QgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBpZiBpc19hdG9tX2xpc3QgbCB0aGVuXG4gICAgICAgICgqIHVzZSBsaW5lIHdyYXBwaW5nIGxpa2Ugd2Ugd291bGQgZG8gZm9yIGEgcGFyYWdyYXBoIG9mIHRleHQgKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxob3Y+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsXG4gICAgICBlbHNlXG4gICAgICAgICgqIHByaW50IHRoZSBlbGVtZW50cyBob3Jpem9udGFsbHkgaWYgdGhleSBmaXQgb24gdGhlIGxpbmUsXG4gICAgICAgICAgIG90aGVyd2lzZSBwcmludCB0aGVtIGluIGEgY29sdW1uICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aHY+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYEFzc29jIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwie31cIlxuICAgIHwgYEFzc29jIGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwie0A7PDEgMD4lYUA7PDEgLTI+fVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXRfZmllbGQgc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICBcbiMgMTE5IFwicHJldHR5Lm1sXCJcbiAgICB8IGBUdXBsZSBsIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpZiBsID0gW10gdGhlblxuICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCIoKVwiXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGhvdjI+XCI7XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCIoQCwlYUA7PDAgLTI+KVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICAgICAgICApXG4gICAgXG4jIDEzMiBcInByZXR0eS5tbFwiXG4gICAgfCBgVmFyaWFudCAocywgTm9uZSkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBcbiMgMTM1IFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nIHMgaW5cbiAgICAgICAgICBcbiMgMTM5IFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCByZXByZXNlbnRhdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPCVzPlwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcblxuICAgIHwgYFZhcmlhbnQgKHMsIFNvbWUgeCkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBcbiMgMTQ2IFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nIHMgaW5cbiAgICAgICAgICBcbiMgMTUwIFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgWyByZXByZXNlbnRhdGlvbjsgeCBdKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG9wID0ganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8QFs8aHYyPiVzOiAlYUBdPlwiIG9wIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxuIyAxNTYgXCJwcmV0dHkubWxcIlxuYW5kIGZvcm1hdF9maWVsZCBzdGQgb3V0IChuYW1lLCB4KSA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lczogJWFAXVwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgbmFtZSkgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5sZXQgcHAgPyhzdGQgPSBmYWxzZSkgb3V0IHggPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JWFAXVwiIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpICh4IDo+IHQpXG5cbmxldCB0b19zdHJpbmcgP3N0ZCB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAocHAgP3N0ZCkgeFxuXG5sZXQgdG9fY2hhbm5lbCA/c3RkIG9jIHggPVxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYUA/XCIgKHBwID9zdGQpIHhcbiMgMTcgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcbiMgMSBcIndyaXRlMi5tbFwiXG5sZXQgcHJldHR5X3ByaW50ID9zdGQgb3V0IHggPSBQcmV0dHkucHAgP3N0ZCBvdXQgeFxubGV0IHByZXR0eV90b19zdHJpbmcgP3N0ZCB4ID0gUHJldHR5LnRvX3N0cmluZyA/c3RkIHhcbmxldCBwcmV0dHlfdG9fY2hhbm5lbCA/c3RkIG9jIHggPSBQcmV0dHkudG9fY2hhbm5lbCA/c3RkIG9jIHhcblxuIyAyOCBcInlvanNvbi5jcHBvLm1sXCJcbm1vZHVsZSBCYXNpYyA9XG5zdHJ1Y3RcbiMgMSBcInR5cGUubWxcIlxuKCoqIHszIFR5cGUgb2YgdGhlIEpTT04gdHJlZX0gKilcblxudHlwZSB0ID1cbiAgICBbXG4gICAgfCBgTnVsbFxuICAgIHwgYEJvb2wgb2YgYm9vbFxuICAgIFxuIyA4IFwidHlwZS5tbFwiXG4gICAgfCBgSW50IG9mIGludFxuICAgIFxuIyAxNCBcInR5cGUubWxcIlxuICAgIHwgYEZsb2F0IG9mIGZsb2F0XG4gICAgXG4jIDIwIFwidHlwZS5tbFwiXG4gICAgfCBgU3RyaW5nIG9mIHN0cmluZ1xuICAgIFxuIyAyNSBcInR5cGUubWxcIlxuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICBcbiMgMzMgXCJ0eXBlLm1sXCJcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcbiMgMSBcIndyaXRlLm1sXCJcbigqIGluY2x1ZGVkOiB0eXBlLm1sICopXG5cbmxldCBoZXggbiA9XG4gIENoYXIuY2hyIChcbiAgICBpZiBuIDwgMTAgdGhlbiBuICsgNDhcbiAgICBlbHNlIG4gKyA4N1xuICApXG5cbmxldCB3cml0ZV9zcGVjaWFsIHNyYyBzdGFydCBzdG9wIG9iIHN0ciA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdHI7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCB3cml0ZV9jb250cm9sX2NoYXIgc3JjIHN0YXJ0IHN0b3Agb2IgYyA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXFx1MDBcIjtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxzciA0KSk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsYW5kIDB4ZikpO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgZmluaXNoX3N0cmluZyBzcmMgc3RhcnQgb2IgPVxuICB0cnlcbiAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydClcbiAgd2l0aCBleGMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcInNyYz0lUyBzdGFydD0laSBsZW49JWlcXG4lIVwiXG4gICAgICBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydCk7XG4gICAgcmFpc2UgZXhjXG5cbmxldCB3cml0ZV9zdHJpbmdfYm9keSBvYiBzID1cbiAgbGV0IHN0YXJ0ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICdcIicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcIlwiXG4gICAgICB8ICdcXFxcJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgJ1xcYicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcYlwiXG4gICAgICB8ICdcXDAxMicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcZlwiXG4gICAgICB8ICdcXG4nIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXG5cIlxuICAgICAgfCAnXFxyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxyXCJcbiAgICAgIHwgJ1xcdCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcdFwiXG4gICAgICB8ICdcXHgwMCcuLidcXHgxRidcbiAgICAgIHwgJ1xceDdGJyBhcyBjIC0+IHdyaXRlX2NvbnRyb2xfY2hhciBzIHN0YXJ0IGkgb2IgY1xuICAgICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGZpbmlzaF9zdHJpbmcgcyBzdGFydCBvYlxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHMgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcztcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IGpzb25fc3RyaW5nX29mX3N0cmluZyBzID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAxMCBpblxuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCB0ZXN0X3N0cmluZyAoKSA9XG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBmb3IgaSA9IDAgdG8gMjU1IGRvXG4gICAgQnl0ZXMuc2V0IHMgaSAoQ2hhci5jaHIgaSlcbiAgZG9uZTtcbiAganNvbl9zdHJpbmdfb2Zfc3RyaW5nIChCeXRlcy50b19zdHJpbmcgcylcblxuXG5sZXQgd3JpdGVfbnVsbCBvYiAoKSA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwibnVsbFwiXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKVxuXG5cbmxldCBtYXhfZGlnaXRzID1cbiAgbWF4XG4gICAgKFN0cmluZy5sZW5ndGggKHN0cmluZ19vZl9pbnQgbWF4X2ludCkpXG4gICAgKFN0cmluZy5sZW5ndGggKHN0cmluZ19vZl9pbnQgbWluX2ludCkpXG5cbmxldCBkZWMgbiA9XG4gIENoYXIuY2hyIChuICsgNDgpXG5cbmxldCByZWMgd3JpdGVfZGlnaXRzIHMgeCA9XG4gIGlmIHggPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCBkID0geCBtb2QgMTAgaW5cbiAgICB3cml0ZV9kaWdpdHMgcyAoeCAvIDEwKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgcyAoZGVjIChhYnMgZCkpXG5cbmxldCB3cml0ZV9pbnQgb2IgeCA9XG4gIGlmIHggPiAwIHRoZW5cbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICBlbHNlIGlmIHggPCAwIHRoZW4gKFxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLSc7XG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgKVxuICBlbHNlXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcwJ1xuXG5cbmxldCBqc29uX3N0cmluZ19vZl9pbnQgaSA9XG4gIHN0cmluZ19vZl9pbnQgaVxuXG5cbigqXG4gIEVuc3VyZSB0aGF0IHRoZSBmbG9hdCBpcyBub3QgcHJpbnRlZCBhcyBhbiBpbnQuXG4gIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IEpTT04sIGJ1dCB1c2VmdWwgaW4gb3JkZXIgdG8gZ3VhcmFudGVlXG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IGZsb2F0X25lZWRzX3BlcmlvZCBzID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAnMCcuLic5JyB8ICctJyAtPiAoKVxuICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIEV4aXQgLT5cbiAgICBmYWxzZVxuXG4oKlxuICBHdWFyYW50ZWVzIHRoYXQgYSBzdWZmaWNpZW50IG51bWJlciBvZiBkaWdpdHMgYXJlIHByaW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgd3JpdGVfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG5sZXQgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbGV0IG9wZW4gUHJpbnRmIGluXG4gIGxldCBzID1cbiAgICBtYXRjaCBzaWduaWZpY2FudF9maWd1cmVzIHdpdGhcbiAgICAgICAgMSAtPiBzcHJpbnRmIFwiJS4xZ1wiIHhcbiAgICAgIHwgMiAtPiBzcHJpbnRmIFwiJS4yZ1wiIHhcbiAgICAgIHwgMyAtPiBzcHJpbnRmIFwiJS4zZ1wiIHhcbiAgICAgIHwgNCAtPiBzcHJpbnRmIFwiJS40Z1wiIHhcbiAgICAgIHwgNSAtPiBzcHJpbnRmIFwiJS41Z1wiIHhcbiAgICAgIHwgNiAtPiBzcHJpbnRmIFwiJS42Z1wiIHhcbiAgICAgIHwgNyAtPiBzcHJpbnRmIFwiJS43Z1wiIHhcbiAgICAgIHwgOCAtPiBzcHJpbnRmIFwiJS44Z1wiIHhcbiAgICAgIHwgOSAtPiBzcHJpbnRmIFwiJS45Z1wiIHhcbiAgICAgIHwgMTAgLT4gc3ByaW50ZiBcIiUuMTBnXCIgeFxuICAgICAgfCAxMSAtPiBzcHJpbnRmIFwiJS4xMWdcIiB4XG4gICAgICB8IDEyIC0+IHNwcmludGYgXCIlLjEyZ1wiIHhcbiAgICAgIHwgMTMgLT4gc3ByaW50ZiBcIiUuMTNnXCIgeFxuICAgICAgfCAxNCAtPiBzcHJpbnRmIFwiJS4xNGdcIiB4XG4gICAgICB8IDE1IC0+IHNwcmludGYgXCIlLjE1Z1wiIHhcbiAgICAgIHwgMTYgLT4gc3ByaW50ZiBcIiUuMTZnXCIgeFxuICAgICAgfCBfIC0+IHNwcmludGYgXCIlLjE3Z1wiIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQganNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX3N0ZF9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBqc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBqc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9zdGRfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIGpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIGpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHRlc3RfZmxvYXQgKCkgPVxuICBsZXQgbCA9IFsgMC47IDEuOyAtMS4gXSBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4gMi4gKi4geCArLiAxLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAvLiBzcXJ0IDIuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4ICouIHNxcnQgMy4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgY29zIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggKi4gMS4yM2U1MCkgbCBpblxuICBsZXQgbCA9IGwgQCBbIGluZmluaXR5OyBuZWdfaW5maW5pdHkgXSBpblxuICBMaXN0Lml0ZXIgKFxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgcyA9IFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4IGluXG4gICAgICBsZXQgeSA9IGZsb2F0X29mX3N0cmluZyBzIGluXG4gICAgICBQcmludGYucHJpbnRmIFwiJWcgJWcgJVMgJUJcXG5cIiB4IHkgcyAoeCA9IHkpXG4gIClcbiAgICBsXG5cbigqXG5sZXQgKCkgPSB0ZXN0X2Zsb2F0ICgpXG4qKVxuXG5sZXQgd3JpdGVfaW50bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9mbG9hdGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfc3RyaW5nbGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcblxubGV0IHJlYyBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfc2VwIHg7XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBpdGVyMiBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgZl9zZXAgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgd3JpdGVfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIFxuIyAyNjQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICBcbiMgMjcwIFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfZmxvYXQgb2IgZlxuICAgIFxuIyAyNzYgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICBcbiMgMjgxIFwid3JpdGUubWxcIlxuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9saXN0IG9iIGxcblxuIyAyOTAgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG5cbiMgMzI1IFwid3JpdGUubWxcIlxubGV0IHdyaXRlX3QgPSB3cml0ZV9qc29uXG5cbmxldCByZWMgd3JpdGVfc3RkX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICBcbiMgMzMyIFwid3JpdGUubWxcIlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgXG4jIDMzOCBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX3N0ZF9mbG9hdCBvYiBmXG4gICAgXG4jIDM0NCBcIndyaXRlLm1sXCJcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIFxuIyAzNDkgXCJ3cml0ZS5tbFwiXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9zdGRfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9zdGRfbGlzdCBvYiBsXG5cbiMgMzU4IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxuXG4jIDM5MSBcIndyaXRlLm1sXCJcbmxldCB0b19idWZmZXIgPyhzdWYgPSBcIlwiKSA/KHN0ZCA9IGZhbHNlKSBvYiB4ID1cbiAgaWYgc3RkIHRoZW5cbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGVsc2VcbiAgICB3cml0ZV9qc29uIG9iIHg7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN1ZlxuXG5sZXQgdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcIikgP3N0ZCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHRvX2NoYW5uZWwgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb2MgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19vdXRwdXQgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb3V0IHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgb3V0I291dHB1dCAoQnVmZmVyLmNvbnRlbnRzIG9iKSAwIChCdWZmZXIubGVuZ3RoIG9iKTtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19maWxlID9sZW4gP3N0ZCA/KHN1ZiA9IFwiXFxuXCIpIGZpbGUgeCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyB4O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5sZXQgc2VxX3RvX2J1ZmZlciA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Igc3QgPVxuICBTZXEuaXRlciAodG9fYnVmZmVyIH5zdWYgP3N0ZCBvYikgc3RcblxubGV0IHNlcV90b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIHN0ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgc2VxX3RvX2J1ZmZlciB+c3VmID9zdGQgb2Igc3Q7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgc2VxX3RvX2NoYW5uZWwgP2J1ZiA/KGxlbj0yMDk2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Mgc2VxID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICBTZXEuaXRlciAoZnVuIGpzb24gLT5cbiAgICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIGpzb247XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gICAgQnVmZmVyLmNsZWFyIG9iO1xuICApIHNlcVxuXG5sZXQgc2VxX3RvX2ZpbGUgP2xlbiA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgZmlsZSBzdCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2Mgc3Q7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cblxubGV0IHJlYyBzb3J0ID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgbGV0IGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCBzb3J0IHYpKSBsKSBpblxuICAgICAgYEFzc29jIChMaXN0LnN0YWJsZV9zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpIGwpXG4gIHwgYExpc3QgbCAtPlxuICAgICAgYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgXG4jIDQ5NSBcIndyaXRlLm1sXCJcbiAgfCB4IC0+IHhcbiMgMzUgXCJ5b2pzb24uY3Bwby5tbFwiXG5tb2R1bGUgUHJldHR5ID1cbnN0cnVjdFxuIyAxIFwicHJldHR5Lm1sXCJcbigqXG4gICBQcmV0dHktcHJpbnQgSlNPTiBkYXRhIGluIGFuIGF0dGVtcHQgdG8gbWF4aW1pemUgcmVhZGFiaWxpdHkuXG5cbiAgIDEuIFdoYXQgZml0cyBvbiBvbmUgbGluZSBzdGF5cyBvbiBvbmUgbGluZS5cbiAgIDIuIFdoYXQgZG9lc24ndCBmaXQgb24gb25lIGxpbmUgZ2V0cyBwcmludGVkIG1vcmUgdmVydGljYWxseSBzbyBhcyB0byBub3RcbiAgICAgIGV4Y2VlZCBhIHJlYXNvbmFibGUgcGFnZSB3aWR0aCwgaWYgcG9zc2libGUuXG5cbiAgIEFycmF5cyBjb250YWluaW5nIG9ubHkgc2ltcGxlIGVsZW1lbnRzIChcImF0b21zXCIpIGFyZSBwcmV0dHktcHJpbnRlZCB3aXRoXG4gICBlbmQtb2YtbGluZSB3cmFwcGluZyBsaWtlIG9yZGluYXJ5IHRleHQ6XG5cbiAgICAgW1xuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIixcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCJcbiAgICAgXVxuXG4gICBPdGhlciBhcnJheXMgYXJlIHByaW50ZWQgZWl0aGVyIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGV5IGZpdCBvbiBhIHNpbmdsZSBsaW5lOlxuXG4gICAgIFsgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSBdXG5cbiAgIG9yXG5cbiAgICAgW1xuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfVxuICAgICBdXG4qKVxuXG5sZXQgcHBfbGlzdCBzZXAgcHB4IG91dCBsID1cbiAgbGV0IHBwX3NlcCBvdXQgKCkgPSBGb3JtYXQuZnByaW50ZiBvdXQgXCIlc0AgXCIgc2VwIGluXG4gIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXAgcHB4IG91dCBsXG5cbmxldCBpc19hdG9tICh4OiBbPiB0XSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTnVsbFxuICB8IGBCb29sIF9cbiAgfCBgSW50IF9cbiAgfCBgRmxvYXQgX1xuICB8IGBTdHJpbmcgX1xuICB8IGBJbnRsaXQgX1xuICB8IGBGbG9hdGxpdCBfXG4gIHwgYFN0cmluZ2xpdCBfXG4gIHwgYExpc3QgW11cbiAgfCBgQXNzb2MgW11cbiAgfCBgVHVwbGUgW11cbiAgfCBgVmFyaWFudCAoXywgTm9uZSkgLT4gdHJ1ZVxuICB8IGBMaXN0IF9cbiAgfCBgQXNzb2MgX1xuICB8IGBUdXBsZSBfXG4gIHwgYFZhcmlhbnQgKF8sIFNvbWUgXykgLT4gZmFsc2VcblxubGV0IGlzX2F0b21fbGlzdCBsID1cbiAgTGlzdC5mb3JfYWxsIGlzX2F0b20gbFxuXG4oKlxuICAgaW5zaWRlX2JveDogaW5kaWNhdGVzIHRoYXQgd2UncmUgYWxyZWFkeSB3aXRoaW4gYSBib3ggdGhhdCBpbXBvc2VzXG4gICBhIGNlcnRhaW4gc3R5bGUgYW5kIHdlIHNob3VsZG4ndCBjcmVhdGUgYSBuZXcgb25lLiBUaGlzIGlzIHVzZWQgZm9yXG4gICBwcmludGluZyBmaWVsZCB2YWx1ZXMgbGlrZSB0aGlzOlxuXG4gICAgIGZvbzogW1xuICAgICAgIGJhclxuICAgICBdXG5cbiAgIHJhdGhlciB0aGFuIHNvbWV0aGluZyBlbHNlIGxpa2VcblxuICAgICBmb286XG4gICAgICAgW1xuICAgICAgICAgYmFyXG4gICAgICAgXVxuKilcbmxldCByZWMgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCAob3V0OkZvcm1hdC5mb3JtYXR0ZXIpICh4OnQpIDogdW5pdCA9XG4gIG1hdGNoIHggd2l0aFxuICAgIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJudWxsXCJcbiAgICB8IGBCb29sIHggLT4gRm9ybWF0LnBwX3ByaW50X2Jvb2wgb3V0IHhcbiAgICBcbiMgNzggXCJwcmV0dHkubWxcIlxuICAgIHwgYEludCB4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9pbnQgeClcbiAgICBcbiMgODEgXCJwcmV0dHkubWxcIlxuICAgIHwgYEZsb2F0IHggLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIHN0ZCB0aGVuIHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgICAgZWxzZSBqc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICBcbiMgODkgXCJwcmV0dHkubWxcIlxuICAgIHwgYFN0cmluZyBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcbiAgICBcbiMgMTAwIFwicHJldHR5Lm1sXCJcbiAgICB8IGBMaXN0IFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiW11cIlxuICAgIHwgYExpc3QgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBpZiBpc19hdG9tX2xpc3QgbCB0aGVuXG4gICAgICAgICgqIHVzZSBsaW5lIHdyYXBwaW5nIGxpa2Ugd2Ugd291bGQgZG8gZm9yIGEgcGFyYWdyYXBoIG9mIHRleHQgKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxob3Y+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsXG4gICAgICBlbHNlXG4gICAgICAgICgqIHByaW50IHRoZSBlbGVtZW50cyBob3Jpem9udGFsbHkgaWYgdGhleSBmaXQgb24gdGhlIGxpbmUsXG4gICAgICAgICAgIG90aGVyd2lzZSBwcmludCB0aGVtIGluIGEgY29sdW1uICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aHY+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYEFzc29jIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwie31cIlxuICAgIHwgYEFzc29jIGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwie0A7PDEgMD4lYUA7PDEgLTI+fVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXRfZmllbGQgc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcblxuIyAxNTYgXCJwcmV0dHkubWxcIlxuYW5kIGZvcm1hdF9maWVsZCBzdGQgb3V0IChuYW1lLCB4KSA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lczogJWFAXVwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgbmFtZSkgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5sZXQgcHAgPyhzdGQgPSBmYWxzZSkgb3V0IHggPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JWFAXVwiIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpICh4IDo+IHQpXG5cbmxldCB0b19zdHJpbmcgP3N0ZCB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAocHAgP3N0ZCkgeFxuXG5sZXQgdG9fY2hhbm5lbCA/c3RkIG9jIHggPVxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYUA/XCIgKHBwID9zdGQpIHhcbiMgMzggXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcbiMgMSBcIm1vbm9tb3JwaGljLm1sXCJcbmxldCByZWMgcHAgZm10ID1cbiAgZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcImBOdWxsXCJcbiAgfCBgQm9vbCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEJvb2wgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlQlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDkgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEludCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMjEgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEZsb2F0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlRlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDMzIFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBTdHJpbmcgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmcgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDQ0IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBBc3NvYyB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBBc3NvYyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIChrZXksIHZhbHVlKSAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIga2V5O1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgICAgICAgIHBwIGZtdCB2YWx1ZTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBMaXN0IHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYExpc3QgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCB4IC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgcHAgZm10IHg7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxuIyA5OSBcIm1vbm9tb3JwaGljLm1sXCJcbmxldCBzaG93IHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwIHhcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBgTnVsbCwgYE51bGwgLT4gdHJ1ZVxuICB8IGBCb29sIGEsIGBCb29sIGIgLT4gYSA9IGJcbiAgXG4jIDEwNyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgSW50IGEsIGBJbnQgYiAtPiBhID0gYlxuICAgIFxuIyAxMTMgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgRmxvYXQgYSwgYEZsb2F0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTE5IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFN0cmluZyBhLCBgU3RyaW5nIGIgLT4gYSA9IGJcbiAgICBcbiMgMTI0IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEFzc29jIHhzLCBgQXNzb2MgeXMgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleXMgPSBmdW4gKGtleSwgXykgKGtleScsIF8pIC0+IFN0cmluZy5jb21wYXJlIGtleSBrZXknIGluXG4gICAgICBsZXQgeHMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB4cyBpblxuICAgICAgbGV0IHlzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeXMgaW5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIChmdW4gKGtleSwgdmFsdWUpIChrZXknLCB2YWx1ZScpIC0+XG4gICAgICAgIG1hdGNoIGtleSA9IGtleScgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPiBlcXVhbCB2YWx1ZSB2YWx1ZScpIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgXG4jIDEzOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBMaXN0IHhzLCBgTGlzdCB5cyAtPlxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgZXF1YWwgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICBcbiMgMTU1IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgXyAtPiBmYWxzZVxuIyAxIFwid3JpdGUyLm1sXCJcbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4jIDEgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBcbiMgMiBcImxpYi9yZWFkLm1sbFwiXG4gIG1vZHVsZSBMZXhpbmcgPVxuICAgICgqXG4gICAgICBXZSBvdmVycmlkZSBMZXhpbmcuZW5naW5lIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IHBvc2l0aW9uXG4gICAgICByZWNvcmQgZWFjaCB0aW1lIGEgcnVsZSBpcyBtYXRjaGVkLlxuICAgICAgVGhpcyByZWR1Y2VzIHRvdGFsIHBhcnNpbmcgdGltZSBieSBhYm91dCAzMSUuXG4gICAgKilcbiAgc3RydWN0XG4gICAgaW5jbHVkZSBMZXhpbmdcblxuICAgIGV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcblxuICAgIGxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gICAgICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICAgICAgKCpcbiAgICAgIGlmIHJlc3VsdCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgICAgIGVuZDtcbiAgICAgICopXG4gICAgICByZXN1bHRcbiAgZW5kXG5cbiAgb3BlbiBQcmludGZcbiAgb3BlbiBMZXhpbmdcblxuICAoKiBzZWUgZGVzY3JpcHRpb24gaW4gY29tbW9uLm1saSAqKVxuICB0eXBlIGxleGVyX3N0YXRlID0gTGV4ZXJfc3RhdGUudCA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgZGVjIGMgPVxuICAgIENoYXIuY29kZSBjIC0gNDhcblxuICBsZXQgaGV4IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnMCcuLic5JyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG4gICAgICB8ICdhJy4uJ2YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKyAxMFxuICAgICAgfCAnQScuLidGJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgMTBcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgY3VzdG9tX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQgb2ZmcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyAtIDEgaW5cbiAgICBsZXQgYm9sID0gdi5ib2wgaW5cbiAgICBsZXQgcG9zMSA9IG9mZnMgKyBsZXhidWYubGV4X3N0YXJ0X3BvcyAtIGJvbCAtIDEgaW5cbiAgICBsZXQgcG9zMiA9IG1heCBwb3MxIChvZmZzICsgbGV4YnVmLmxleF9jdXJyX3BvcyAtIGJvbCkgaW5cbiAgICBsZXQgZmlsZV9saW5lID1cbiAgICAgIG1hdGNoIHYuZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gXCJMaW5lXCJcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIHNwcmludGYgXCJGaWxlICVzLCBsaW5lXCIgc1xuICAgIGluXG4gICAgbGV0IGJ5dGVzID1cbiAgICAgIGlmIHBvczEgPSBwb3MyIHRoZW5cbiAgICAgICAgc3ByaW50ZiBcImJ5dGUgJWlcIiAocG9zMSsxKVxuICAgICAgZWxzZVxuICAgICAgICBzcHJpbnRmIFwiYnl0ZXMgJWktJWlcIiAocG9zMSsxKSAocG9zMisxKVxuICAgIGluXG4gICAgbGV0IG1zZyA9IHNwcmludGYgXCIlcyAlaSwgJXM6XFxuJXNcIiBmaWxlX2xpbmUgdi5sbnVtIGJ5dGVzIGRlc2NyIGluXG4gICAganNvbl9lcnJvciBtc2dcblxuXG4gIGxldCBsZXhlcl9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoc3ByaW50ZiBcIiVzICclcydcIiBkZXNjciAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgcmVhZF9qdW5rID0gcmVmIChmdW4gXyAtPiBhc3NlcnQgZmFsc2UpXG5cbiAgbGV0IGxvbmdfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGxldCBqdW5rID0gTGV4aW5nLmxleGVtZSBsZXhidWYgaW5cbiAgICBsZXQgZXh0cmFfanVuayA9ICFyZWFkX2p1bmsgbGV4YnVmIGluXG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoc3ByaW50ZiBcIiVzICclcyVzJ1wiIGRlc2NyIGp1bmsgZXh0cmFfanVuaylcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IG1pbjEwID0gbWluX2ludCAvIDEwIC0gKGlmIG1pbl9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuICBsZXQgbWF4MTAgPSBtYXhfaW50IC8gMTAgKyAoaWYgbWF4X2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG5cbiAgZXhjZXB0aW9uIEludF9vdmVyZmxvd1xuXG4gIGxldCBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWYgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA+PSBtYXgxMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gKyBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgXG4jIDEwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgXG4jIDExMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWZcblxuICBcbiMgMTEzIFwibGliL3JlYWQubWxsXCJcbiAgbGV0IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZiA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyAxIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA8PSBtaW4xMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gLSBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA+IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgXG4jIDEzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgXG4jIDEzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWZcblxuXG4gIFxuIyAxNDEgXCJsaWIvcmVhZC5tbGxcIlxuICBsZXQgc2V0X2ZpbGVfbmFtZSB2IGZuYW1lID1cbiAgICB2LmZuYW1lIDwtIGZuYW1lXG5cbiAgbGV0IG5ld2xpbmUgdiBsZXhidWYgPVxuICAgIHYubG51bSA8LSB2LmxudW0gKyAxO1xuICAgIHYuYm9sIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3NcblxuICBsZXQgYWRkX2xleGVtZSBidWYgbGV4YnVmID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgQnVmZmVyLmFkZF9zdWJieXRlcyBidWYgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbiAgbGV0IG1hcF9sZXhlbWUgZiBsZXhidWYgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBmIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlbikgMCBsZW5cblxuICB0eXBlIHZhcmlhbnRfa2luZCA9IFsgYEVkZ3lfYnJhY2tldCB8IGBTcXVhcmVfYnJhY2tldCB8IGBEb3VibGVfcXVvdGUgXVxuICB0eXBlIHR1cGxlX2tpbmQgPSBbIGBQYXJlbnRoZXNpcyB8IGBTcXVhcmVfYnJhY2tldCBdXG5cblxuIyAxNjEgXCJsaWIvcmVhZC5tbFwiXG4jIDE2MSBcImxpYi9yZWFkLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIzNlxcMjU1XFwyMzdcXDI1NVxcMDAzXFwwMDBcXDIzOVxcMjU1XFwwMTZcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNDlcXDI1NVxcMDg1XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NFxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDI1M1xcMjU1XFwwMTFcXDAwMFxcMjUyXFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjUxXFwyNTVcXDAyMVxcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDIyXFwwMDBcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIyXFwwMDBcXDAxMlxcMDAwXFwwMDhcXDAwMFxcMjUwXFwyNTVcXFxuICAgIFxcMTE5XFwwMDBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTYxXFwwMDBcXDE3MVxcMDAwXFwxODFcXDAwMFxcMTkzXFwwMDBcXDIwOVxcMDAwXFxcbiAgICBcXDI0MFxcMjU1XFwwMTFcXDAwMFxcMDM4XFwwMDBcXDI1MlxcMjU1XFwwNjVcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMTBcXDAwMFxcXG4gICAgXFwyNTJcXDI1NVxcMTYzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjM0XFwwMDBcXDI0N1xcMjU1XFwyNDhcXDI1NVxcMDQ4XFwwMDFcXFxuICAgIFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDEyNlxcMDAxXFxcbiAgICBcXDE0OVxcMDAxXFwyNDlcXDI1NVxcMDM5XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDM4XFwwMDBcXDE4N1xcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNDhcXDAwMVxcMDE1XFwwMDJcXDI1NVxcMjU1XFwyMjBcXDAwMFxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMDM5XFwwMDJcXFxuICAgIFxcMTA5XFwwMDJcXDAxNFxcMDAxXFwwODhcXDAwMlxcMTY0XFwwMDJcXDE4N1xcMDAyXFwyMjVcXDAwMlxcMDEzXFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDFcXFxuICAgIFxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDFcXDAwNVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwwMjNcXDAwMFxcMjU0XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDUzXFwwMDBcXDA0OFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAxXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDEzN1xcMDAwXFwxMDRcXDAwMFxcMDg5XFwwMDBcXDA4OFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDBcXDEzN1xcMDAwXFwxNzdcXDAwMFxcMjU0XFwyNTVcXDE4M1xcMDAwXFwxNjhcXDAwMFxcMTY2XFwwMDBcXFxuICAgIFxcMTgzXFwwMDBcXDAwMlxcMDAwXFwyNTNcXDI1NVxcMTc3XFwwMDBcXDE3MlxcMDAwXFwxODdcXDAwMFxcMDA0XFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDA1M1xcMDAyXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwxMDNcXDAwMVxcMjU1XFwyNTVcXDI0OFxcMDAyXFwyNTRcXDI1NVxcXG4gICAgXFwwMDZcXDAwM1xcMDMwXFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwM1xcMDUwXFwwMDNcXFxuICAgIFxcMDc0XFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwM1xcMDg0XFwwMDNcXDEwOFxcMDAzXFxcbiAgICBcXDI0OVxcMjU1XFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI0NFxcMDAwXFwxMjBcXDAwM1xcMTQyXFwwMDNcXDE3OVxcMDAwXFwxOTRcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDE5MFxcMDAwXFwxODhcXDAwMFxcMTg3XFwwMDBcXDE5M1xcMDAwXFwxODNcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDE5MVxcMDAwXFwyMDFcXDAwMFxcMjAwXFwwMDBcXDE5NlxcMDAwXFwyMDNcXDAwMFxcMTkzXFwwMDBcXDE4OVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwxNTdcXDAwM1xcMDk1XFwwMDNcXDE3NFxcMDAzXFwxOTZcXDAwM1xcMjA2XFwwMDNcXDIxNlxcMDAzXFwyMjhcXDAwM1xcXG4gICAgXFwyMzlcXDAwM1xcMDYwXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMDg3XFwwMDRcXDI1NVxcMjU1XFwxNDVcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjFcXDAwNFxcMjU1XFwyNTVcXDIyOVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzMVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE4XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjBcXDAwMVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIwOFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMTFcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODlcXDAwMFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDk1XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzNcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjIyXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDVcXDIzN1xcMjU1XFwyMzhcXDI1NVxcMDEwXFwwMDBcXDI0MFxcMjU1XFwwNDRcXDAwMVxcXG4gICAgXFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMDYxXFwwMDFcXDAwMlxcMDA0XFwyNDlcXDI1NVxcMDQ1XFwwMDVcXFxuICAgIFxcMjA5XFwwMDBcXDIyOFxcMDAwXFwyMTFcXDAwMFxcMjMyXFwwMDBcXDIyNVxcMDAwXFwyMjNcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIzNVxcMDAwXFwyMzRcXDAwMFxcMDA4XFwwMDFcXDI1NFxcMjU1XFwwMDRcXDAwMVxcMDIzXFwwMDFcXDI1M1xcMjU1XFwwNTRcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMDMxXFwwMDFcXDAyOVxcMDAxXFwwMzJcXDAwMVxcMDM5XFwwMDFcXDA0OVxcMDAxXFwwNDVcXDAwMVxcMjUxXFwyNTVcXFxuICAgIFxcMDU3XFwwMDFcXDA4MlxcMDAxXFwwODBcXDAwMVxcMDc4XFwwMDFcXDA4NFxcMDAxXFwwNzRcXDAwMVxcMDg2XFwwMDFcXDI1MFxcMjU1XFxcbiAgICBcXDExMFxcMDA1XFwwMTJcXDAwNFxcMTIzXFwwMDVcXDE1NVxcMDA1XFwxNjVcXDAwNVxcMTc3XFwwMDVcXDE4N1xcMDA1XFwxOTdcXDAwNVxcXG4gICAgXFwyNDFcXDI1NVxcMTk5XFwwMDFcXDA3N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDE1NFxcMDAyXFwyMjJcXDAwNVxcMjA5XFwwMDVcXFxuICAgIFxcMTU1XFwwMDJcXDIzOVxcMDA1XFwwNTNcXDAwNlxcMDc2XFwwMDZcXDExNFxcMDA2XFwwMTZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTUyXFwwMDZcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjI3XFwwMDZcXDI1NVxcMjU1XFwwODVcXDAwN1xcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAxMVxcMDAwXFwyNDdcXDI1NVxcMDc2XFwwMDJcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzFcXDAwMlxcMjQzXFwwMDVcXDA1MVxcMDA3XFwxMDBcXDAwMVxcMTE1XFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMThcXDAwMVxcMTU0XFwwMDFcXDE3MVxcMDAxXFwyNTVcXDI1NVxcMTczXFwwMDFcXDE3NlxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg3XFwwMDFcXDI1M1xcMDAxXFwyMzBcXDAwMVxcMjMwXFwwMDFcXDIzNFxcMDAxXFwyNDdcXDAwMVxcMjM3XFwwMDFcXFxuICAgIFxcMjM0XFwwMDFcXDAwOVxcMDAyXFwwMTlcXDAwMlxcMDE5XFwwMDJcXDAxNVxcMDAyXFwwMjFcXDAwMlxcMDExXFwwMDJcXDAwN1xcMDAyXFxcbiAgICBcXDE0MlxcMDA2XFwxNTJcXDAwNlxcMTE2XFwwMDdcXDE3MFxcMDA3XFwxODBcXDAwN1xcMTkwXFwwMDdcXDIwMFxcMDA3XFwyMTBcXDAwN1xcXG4gICAgXFwyNDhcXDI1NVxcMTIwXFwwMDJcXDE2N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDIxNlxcMDAyXFwwODJcXDAwN1xcMjIwXFwwMDdcXFxuICAgIFxcMjM2XFwwMDJcXDI0NFxcMDA3XFwwNThcXDAwOFxcMDgxXFwwMDhcXDExOVxcMDA4XFwwNzZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTU3XFwwMDhcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjMyXFwwMDhcXDI1NVxcMjU1XFwxMzVcXDAwMlxcXG4gICAgXFwxMjBcXDAwMlxcMjUzXFwyNTVcXDEwMFxcMDAyXFwyNTRcXDI1NVxcMTgyXFwwMDJcXDI1NVxcMjU1XFwwMTFcXDAwMlxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMlxcMjU1XFwyNTVcXDE3OFxcMDAyXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMjU1XFwyNTVcXDE4M1xcMDAyXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMlxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIxXFwwMDJcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxNDBcXDAwMVxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwxNTBcXDAwMVxcMTUxXFwwMDFcXDE1NFxcMDAxXFwxNjhcXDAwMVxcXG4gICAgXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE3MlxcMDAxXFwxNzNcXDAwMVxcMTgxXFwwMDFcXDE4NFxcMDAxXFwxODVcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5M1xcMDAxXFwxOTVcXDAwMVxcMTk2XFwwMDFcXDE5N1xcMDAxXFwyMDBcXDAwMVxcMjAzXFwwMDFcXDIyM1xcMDAxXFxcbiAgICBcXDIyNVxcMDAxXFwyMjhcXDAwMVxcMjQ5XFwwMDFcXDI1MVxcMDAxXFwwMDJcXDAwMlxcMDA0XFwwMDJcXDAxMVxcMDAyXFwwMTJcXDAwMlxcXG4gICAgXFwwMTNcXDAwMlxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxMzhcXDAwMFxcMDAwXFwwMDBcXDE0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDEyMVxcMDAxXFwxMjVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTQ0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5M1xcMDAxXFwxOTdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDIyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAyXFwwMDJcXDAwNFxcMDAyXFwwMDBcXDAwMFxcMDA1XFwwMDJcXDAwNlxcMDAyXFwwMDdcXDAwMlxcMDA4XFwwMDJcXFxuICAgIFxcMDA5XFwwMDJcXDAxMFxcMDAyXFwwMTFcXDAwMlxcMDEyXFwwMDJcXDAxM1xcMDAyXFwwMTRcXDAwMlxcMDE1XFwwMDJcXDAxNlxcMDAyXFxcbiAgICBcXDAxN1xcMDAyXFwwMThcXDAwMlxcMDE5XFwwMDJcXDAyMFxcMDAyXFwwMjFcXDAwMlxcMDIyXFwwMDJcXDAyM1xcMDAyXFwwMjRcXDAwMlxcXG4gICAgXFwwMjVcXDAwMlxcMDI2XFwwMDJcXDAyN1xcMDAyXFwwMjhcXDAwMlxcMDI5XFwwMDJcXDAzMFxcMDAyXFwwMzFcXDAwMlxcMDMyXFwwMDJcXFxuICAgIFxcMDMzXFwwMDJcXDAwM1xcMDAyXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI3XFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMDNcXDAwMFxcMTcwXFwwMDBcXDEzNFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxNFxcMDAxXFwwMTNcXDAwMFxcMDQ5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDA1NlxcMDAwXFwxMThcXDAwMFxcMDA2XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDFcXDEzN1xcMDAwXFwwMDBcXDAwMlxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMTM4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwMTRcXDAwMFxcMTEwXFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAxNVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAzMFxcMDAwXFwwNDhcXDAwMFxcMDA4XFwwMDBcXDExNFxcMDAwXFwyMDlcXDAwMFxcMjM2XFwwMDBcXDAwMFxcMDAxXFxcbiAgICBcXDAxM1xcMDAxXFwwMjlcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDAxN1xcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjVcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDIzXFwwMDBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAzNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDIwXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMzdcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA2MVxcMDAwXFwwODVcXDAwMFxcMDQ4XFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA2N1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODZcXDAwMFxcMTQzXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMTQ0XFwwMDBcXFxuICAgIFxcMTQ1XFwwMDBcXDE0NlxcMDAwXFwwNTVcXDAwMFxcMTQ4XFwwMDBcXDA1NVxcMDAwXFwxNDlcXDAwMFxcMDQ4XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwxNTBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMFxcMTYxXFwwMDBcXDA2NlxcMDAwXFwxNThcXDAwMFxcMDUzXFwwMDBcXDE1OVxcMDAwXFwwNTNcXDAwMFxcMTYwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDE2NVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDE2NlxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMTAzXFwwMDBcXDEwOFxcMDAwXFwxMTZcXDAwMFxcXG4gICAgXFwxMzJcXDAwMFxcMTM0XFwwMDBcXDEzNVxcMDAwXFwxMjhcXDAwMFxcMTM5XFwwMDBcXDEzNFxcMDAwXFwxNjRcXDAwMFxcMDkzXFwwMDBcXFxuICAgIFxcMTcxXFwwMDBcXDA3N1xcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzJcXDAwMFxcMTEyXFwwMDBcXDE3M1xcMDAwXFxcbiAgICBcXDE3NFxcMDAwXFwyMTBcXDAwMFxcMjI2XFwwMDBcXDIwOFxcMDAwXFwyMTFcXDAwMFxcMjEyXFwwMDBcXDA1OVxcMDAwXFwwODNcXDAwMFxcXG4gICAgXFwxMzRcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE2XFwwMDBcXDIxOFxcMDAwXFwxNDFcXDAwMFxcMjE5XFwwMDBcXFxuICAgIFxcMDkzXFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTIzXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMjI0XFwwMDBcXDEzNlxcMDAwXFxcbiAgICBcXDA5NVxcMDAwXFwyMjVcXDAwMFxcMDM1XFwwMDFcXDA2NVxcMDAxXFwyMzRcXDAwMFxcMTU1XFwwMDBcXDAwNVxcMDAxXFwwOTdcXDAwMVxcXG4gICAgXFwyNTBcXDAwMFxcMjU1XFwyNTVcXDI1NFxcMDAwXFwwNTdcXDAwMVxcMDYxXFwwMDFcXDA5NVxcMDAxXFwwNzdcXDAwMFxcMDQ0XFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA4OFxcMDAxXFwwMDlcXDAwMVxcMDI5XFwwMDFcXDA3NlxcMDAwXFwxMjRcXDAwMFxcMDMzXFwwMDFcXDAxOFxcMDAxXFxcbiAgICBcXDA3NVxcMDAwXFwwOThcXDAwMFxcMDE5XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDg3XFwwMDFcXDEyMFxcMDAxXFwwODlcXDAwMVxcXG4gICAgXFwwNzRcXDAwMFxcMjI1XFwwMDBcXDA1M1xcMDAxXFwxMjFcXDAwMVxcMDczXFwwMDBcXDA5MFxcMDAxXFwwNzJcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk4XFwwMDBcXDExM1xcMDAxXFwxMjJcXDAwMFxcMDkxXFwwMDFcXDA2NFxcMDAwXFwwMDRcXDAwMVxcXG4gICAgXFwwOTNcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwxNTZcXDAwMFxcMTEyXFwwMDFcXDA5NFxcMDAxXFwwOTZcXDAwMVxcMDk4XFwwMDFcXDA5OVxcMDAxXFwwNDlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwxMDBcXDAwMVxcMTU3XFwwMDBcXFxuICAgIFxcMTAxXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDE4M1xcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMDI0XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDEwMlxcMDAxXFwxMDNcXDAwMVxcMTA1XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwxMDZcXDAwMVxcMTA3XFwwMDFcXDA0OFxcMDAxXFwwNDBcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwxMTBcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwxMTFcXDAwMVxcXG4gICAgXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDE3MVxcMDAxXFwwMzFcXDAwMVxcMTcwXFwwMDFcXDAyM1xcMDAxXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA5MlxcMDAwXFwxNjhcXDAwMVxcMDYzXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMjQ4XFwwMDBcXDE2NVxcMDAxXFwyNTJcXDAwMFxcXG4gICAgXFwxNjJcXDAwMVxcMDU5XFwwMDFcXDA2OVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwyNTVcXDI1NVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDAzOVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDE2M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwxMjBcXDAwMFxcMDAyXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMTY2XFwwMDFcXDA1NVxcMDAxXFwxNTNcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMDdcXDAwMVxcMTY3XFwwMDFcXDE2NFxcMDAxXFwxNjlcXDAwMVxcMDE2XFwwMDFcXDE2NFxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA1MVxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDEzN1xcMDAxXFwxNjRcXDAwMVxcMTcyXFwwMDFcXDE4NVxcMDAxXFwxMzZcXDAwMVxcMTczXFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDE3NFxcMDAxXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNDZcXDAwMVxcXG4gICAgXFwxNzVcXDAwMVxcMTc2XFwwMDFcXDE4MFxcMDAwXFwxNjRcXDAwMVxcMTg0XFwwMDFcXDE4MVxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDEyNFxcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDE5MlxcMDAxXFwxNzhcXDAwMVxcXG4gICAgXFwwMjFcXDAwMVxcMTc5XFwwMDFcXDA5N1xcMDAwXFwxOTNcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcMTgzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDIxNlxcMDAxXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDE4NFxcMDAxXFwyMTZcXDAwMVxcMjA5XFwwMDFcXDA5N1xcMDAwXFxcbiAgICBcXDIyM1xcMDAxXFwwOTdcXDAwMFxcMjA4XFwwMDFcXDIzMFxcMDAxXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDIxOVxcMDAxXFwwMzdcXDAwMVxcXG4gICAgXFwyMTZcXDAwMVxcMjE3XFwwMDFcXDAwM1xcMDAyXFwyMjBcXDAwMVxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDAzXFwwMDJcXFxuICAgIFxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMTZcXDAwMVxcXG4gICAgXFwwMDNcXDAwMlxcMTI2XFwwMDFcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMjE4XFwwMDFcXDI1MFxcMDAxXFxcbiAgICBcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDAwM1xcMDAyXFwxMjRcXDAwMVxcMTI0XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcXG4gICAgXFwyMjFcXDAwMVxcMDAzXFwwMDJcXDI1M1xcMDAxXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDJcXDE5NlxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyMzVcXDAwMVxcMDAzXFwwMDJcXFxuICAgIFxcMjQxXFwwMDFcXDAwM1xcMDAyXFwyNTVcXDAwMVxcMjQyXFwwMDFcXDAwM1xcMDAyXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI0NlxcMDAxXFwxMjlcXDAwMVxcMTI5XFwwMDFcXFxuICAgIFxcMjI4XFwwMDFcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMDAzXFwwMDJcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDAzXFwwMDJcXDE5OFxcMDAxXFwwMDNcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMjM0XFwwMDFcXFxuICAgIFxcMTM0XFwwMDFcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDFcXDAwMVxcMTc3XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg4XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDIwMVxcMDAxXFwyMjdcXDAwMVxcMDAwXFwwMDBcXDE5MVxcMDAwXFwyMDZcXDAwMVxcMTIzXFwwMDFcXDE4OVxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTg5XFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTk1XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNDhcXDAwMVxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMjAyXFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjI2XFwwMDBcXDE5NVxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMjFcXDAwMVxcMjM5XFwwMDFcXFxuICAgIFxcMjU0XFwwMDFcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMjQ0XFwwMDFcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjAzXFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDFcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg2XFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTEzXFwwMDFcXDAwMFxcMDAwXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwMDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDIzOFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNFxcMDAxXFwwNzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwNzFcXDAwMVxcMDc2XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDFcXDExOVxcMDAxXFwwMDBcXDAwMFxcMTE5XFwwMDFcXDAwMFxcMDAwXFwwODFcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE3XFwwMDFcXDAwMFxcMDAwXFwwNzVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTg1XFwwMDFcXDAwMFxcMDAwXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE5MVxcMDAxXFwxNDJcXDAwMVxcMTkxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDZcXDAwMVxcMTQ3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMTUzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3N1xcMDAxXFwxNTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTU2XFwwMDFcXDAwMFxcMDAwXFwxNDhcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE0OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEzOVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDE1MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTg3XFwwMDFcXDAwMFxcMDAwXFwxNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNjFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OVxcMDAxXFwwMDBcXDAwMFxcMTg5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDVcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE5OVxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMTRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjVcXDAwMFxcMTM4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwM1xcMDAwXFwxNjlcXDAwMFxcMTM0XFwwMDBcXDE3NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDEyXFwwMDFcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMTI1XFwwMDBcXDEyOVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyMzZcXDAwMVxcMTM2XFwwMDBcXDI1NVxcMDAxXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDAxMFxcMDAwXFwxMzZcXDAwMFxcMTAyXFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwxMDdcXDAwMFxcMTAyXFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDI5XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDIwOFxcMDAwXFwyMzNcXDAwMFxcMjU1XFwwMDBcXFxuICAgIFxcMDEyXFwwMDFcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDYwXFwwMDBcXDAxMVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyNFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMjJcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDMzXFwwMDBcXDAxOFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMTlcXDAwMFxcMDM1XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAzNlxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NVxcMDAwXFwwNDZcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcXG4gICAgXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NVxcMDAwXFwxNDBcXDAwMFxcMDYwXFwwMDBcXDAxM1xcMDAwXFwxNDNcXDAwMFxcXG4gICAgXFwxNDRcXDAwMFxcMTQ1XFwwMDBcXDA0OFxcMDAwXFwxNDdcXDAwMFxcMDQ4XFwwMDBcXDE0OFxcMDAwXFwwMzlcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNjVcXDAwMFxcMDM5XFwwMDBcXDE0OVxcMDAwXFxcbiAgICBcXDE1MFxcMDAwXFwxNTZcXDAwMFxcMDYzXFwwMDBcXDE1N1xcMDAwXFwwNTFcXDAwMFxcMTU4XFwwMDBcXDA1MVxcMDAwXFwxNTlcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcXG4gICAgXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMTU1XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcMTU1XFwwMDBcXDA5MVxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2OFxcMDAwXFwxMDJcXDAwMFxcMTA3XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDEzMVxcMDAwXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMTMzXFwwMDBcXDE2M1xcMDAwXFwwOTRcXDAwMFxcXG4gICAgXFwxNjVcXDAwMFxcMDY4XFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE3MVxcMDAwXFwxMTFcXDAwMFxcMTcyXFwwMDBcXFxuICAgIFxcMTczXFwwMDBcXDIwNlxcMDAwXFwyMDNcXDAwMFxcMjA3XFwwMDBcXDIxMFxcMDAwXFwyMTFcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDEzM1xcMDAwXFwyMTJcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE3XFwwMDBcXDE0MFxcMDAwXFwyMThcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjE5XFwwMDBcXDIyMFxcMDAwXFwxMTlcXDAwMFxcMjIxXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMTMzXFwwMDBcXFxuICAgIFxcMDkxXFwwMDBcXDIwM1xcMDAwXFwwMzRcXDAwMVxcMDYyXFwwMDFcXDIzM1xcMDAwXFwxNTJcXDAwMFxcMDAxXFwwMDFcXDA4MFxcMDAxXFxcbiAgICBcXDI0N1xcMDAwXFwwNjBcXDAwMFxcMjUxXFwwMDBcXDA1NFxcMDAxXFwwNThcXDAwMVxcMDgxXFwwMDFcXDA2OFxcMDAwXFwwNDFcXDAwMVxcXG4gICAgXFwwODJcXDAwMVxcMDgzXFwwMDFcXDAwNlxcMDAxXFwwMjZcXDAwMVxcMDY4XFwwMDBcXDExOVxcMDAwXFwwMzBcXDAwMVxcMDE1XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDA5NFxcMDAwXFwwMTVcXDAwMVxcMDg0XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDcxXFwwMDFcXDA4OFxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwyMDNcXDAwMFxcMDUwXFwwMDFcXDA3MVxcMDAxXFwwNjhcXDAwMFxcMDg5XFwwMDFcXDA2OFxcMDAwXFwwNjhcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwOTdcXDAwMFxcMDc2XFwwMDFcXDExOVxcMDAwXFwwOTBcXDAwMVxcMDYzXFwwMDBcXDAwMVxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDE1MlxcMDAwXFwwNzZcXDAwMVxcMDkzXFwwMDFcXDA5NVxcMDAxXFwwOTdcXDAwMVxcMDk4XFwwMDFcXDA0NVxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OVxcMDAxXFwxNTJcXDAwMFxcXG4gICAgXFwxMDBcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwwMjBcXDAwMVxcMDc2XFwwMDFcXDA2NVxcMDAwXFwwMjBcXDAwMVxcMTAxXFwwMDFcXDEwMlxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDEwNVxcMDAxXFwxMDZcXDAwMVxcMDQ1XFwwMDFcXDAzNlxcMDAxXFwxMDdcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDExMFxcMDAxXFxcbiAgICBcXDAyNlxcMDAxXFwxMjFcXDAwMVxcMTU3XFwwMDFcXDAzMFxcMDAxXFwxNThcXDAwMVxcMDIwXFwwMDFcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDkxXFwwMDBcXDE1OVxcMDAxXFwwNjJcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwyNDdcXDAwMFxcMTYwXFwwMDFcXDI1MVxcMDAwXFxcbiAgICBcXDE2MVxcMDAxXFwwNThcXDAwMVxcMDY4XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA5NFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDM2XFwwMDFcXDA0MVxcMDAxXFwwOTdcXDAwMFxcMTYyXFwwMDFcXFxuICAgIFxcMTYzXFwwMDFcXDExOVxcMDAwXFwwMDFcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwxNjVcXDAwMVxcMDU0XFwwMDFcXDE1MlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwNlxcMDAxXFwxNjZcXDAwMVxcMTY3XFwwMDFcXDE2OFxcMDAxXFwwMTVcXDAwMVxcMTY5XFwwMDFcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDUwXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTMzXFwwMDFcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTU0XFwwMDFcXDEzM1xcMDAxXFwxNzJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTczXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA0NVxcMDAxXFxcbiAgICBcXDE3NFxcMDAxXFwxNzVcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAxXFwxNTRcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTIyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMTQ4XFwwMDFcXDE3N1xcMDAxXFxcbiAgICBcXDAyMFxcMDAxXFwxNzhcXDAwMVxcMDk4XFwwMDBcXDE0OFxcMDAxXFwxNzlcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcXG4gICAgXFwxODNcXDAwMVxcMjE2XFwwMDFcXDE5M1xcMDAxXFwwOTVcXDAwMFxcMTU0XFwwMDFcXDIxNlxcMDAxXFwyMDVcXDAwMVxcMDk4XFwwMDBcXFxuICAgIFxcMjIyXFwwMDFcXDA5NVxcMDAwXFwyMDVcXDAwMVxcMjI5XFwwMDFcXDAwMVxcMDAyXFwwOTVcXDAwMFxcMjE4XFwwMDFcXDAzNlxcMDAxXFxcbiAgICBcXDIxNVxcMDAxXFwyMTVcXDAwMVxcMDAyXFwwMDJcXDIxOFxcMDAxXFwyMTVcXDAwMVxcMDk1XFwwMDBcXDAwNFxcMDAyXFwwMDVcXDAwMlxcXG4gICAgXFwyMTZcXDAwMVxcMDk1XFwwMDBcXDAwNlxcMDAyXFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDIxNVxcMDAxXFxcbiAgICBcXDAwN1xcMDAyXFwxMjJcXDAwMVxcMDA4XFwwMDJcXDAwOVxcMDAyXFwwMTBcXDAwMlxcMDExXFwwMDJcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk4XFwwMDBcXDAxMlxcMDAyXFwyMTVcXDAwMVxcMjQ3XFwwMDFcXFxuICAgIFxcMDEzXFwwMDJcXDAxNFxcMDAyXFwwOThcXDAwMFxcMDE1XFwwMDJcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMDk4XFwwMDBcXDAxNlxcMDAyXFxcbiAgICBcXDIyMFxcMDAxXFwwMTdcXDAwMlxcMjUxXFwwMDFcXDAxOFxcMDAyXFwwMTlcXDAwMlxcMDIwXFwwMDJcXDA5OFxcMDAwXFwxMjFcXDAwMVxcXG4gICAgXFwwMjFcXDAwMlxcMTk0XFwwMDFcXDA5OFxcMDAwXFwwMjJcXDAwMlxcMDk4XFwwMDBcXDA5OFxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIzMVxcMDAxXFwwMjNcXDAwMlxcXG4gICAgXFwyMzhcXDAwMVxcMDI0XFwwMDJcXDI1MVxcMDAxXFwyMzhcXDAwMVxcMDI1XFwwMDJcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjQzXFwwMDFcXDEyNVxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwyMjRcXDAwMVxcMDI2XFwwMDJcXDE5N1xcMDAxXFwwMjdcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMjhcXDAwMlxcMTk0XFwwMDFcXDAyOVxcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDAzMFxcMDAyXFwwMzFcXDAwMlxcMDMyXFwwMDJcXDIwMFxcMDAxXFwyMzFcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwxNzZcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMjU1XFwyNTVcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTg1XFwwMDBcXDIwNVxcMDAxXFwxMjJcXDAwMVxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFxcbiAgICBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTJcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkzXFwwMDFcXDI0N1xcMDAxXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOTlcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwxOTlcXDAwMFxcMTI1XFwwMDFcXDEyOFxcMDAxXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcXG4gICAgXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwyMDRcXDAwMFxcMTk0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDBcXDIyMFxcMDAxXFwyMzhcXDAwMVxcXG4gICAgXFwyNTFcXDAwMVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyNDNcXDAwMVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjRcXDAwMVxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMTk3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDIyOFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFxcbiAgICBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODVcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFxcbiAgICBcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDE5OVxcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjM3XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjZcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwxMTJcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExNVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTVcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXFxuICAgIFxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXFxuICAgIFxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcXG4gICAgXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMjU1XFwyNTVcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDEyNlxcMDAxXFwxMjlcXDAwMVxcMTI2XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyOVxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTg0XFwwMDFcXDEzOFxcMDAxXFwxODRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzOFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXFxuICAgIFxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTU2XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwxODZcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTk4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDFcXDI1NVxcMjU1XFwxODdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTg2XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjAxXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCB0cnVlIClcblxuIyAxMDMyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDMzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgZmFsc2UgKVxuXG4jIDEwMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwMzggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDE5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgTnVsbCApXG5cbiMgMTA0MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA0MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAxOTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgbmFuXG4gICAgICAgICAgICAgICAgXG4jIDE5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDE5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IGluZmluaXR5XG4gICAgICAgICAgICAgICAgXG4jIDIwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwNjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgIFxuIyAyMTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDc2IFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyAyMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAyMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgYFN0cmluZyAoZmluaXNoX3N0cmluZyB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICBcbiMgMjE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA4NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA4OCBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgMjIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMjIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmIClcblxuIyAxMDkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDkzIFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyAyMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAyMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgKVxuXG4jIDEwOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwOTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgOSAtPlxuXG4jIDIyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDIyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IChmbG9hdF9vZl9zdHJpbmcgKGxleGVtZSBsZXhidWYpKVxuICAgICAgICAgICAgICAgICBcbiMgMjI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExMDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTAgLT5cblxuIyAyMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgYEFzc29jIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMTEzNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTEzNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMSAtPlxuXG4jIDI1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyNTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBMaXN0IChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMTE1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMiAtPlxuXG4jIDI3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgMjg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDI4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTc4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTc5IFwibGliL3JlYWQubWxcIlxuICB8IDEzIC0+XG5cbiMgMjkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDI5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyAyOTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgMzAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTQgLT5cblxuIyAzMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDExOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExOTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTUgLT5cblxuIyAzMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMjAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjAzIFwibGliL3JlYWQubWxcIlxuICB8IDE2IC0+XG5cbiMgMzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMjA3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjA4IFwibGliL3JlYWQubWxcIlxuICB8IDE3IC0+XG5cbiMgMzA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMjEyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjEzIFwibGliL3JlYWQubWxcIlxuICB8IDE4IC0+XG5cbiMgMzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTIxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxOSAtPlxuXG4jIDMwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuXG4jIDEyMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIDU4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBCdWZmZXIuY29udGVudHMgdi5idWYgKVxuXG4jIDEyMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDMxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTI0MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI0MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTI0NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI0NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMjUxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjUyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIDYzXG5hbmQgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGxldCBiID0gdi5idWYgaW5cbiAgICAgICAgICAgICAgICAgICAgZiAoQnVmZmVyLmNvbnRlbnRzIGIpIDAgKEJ1ZmZlci5sZW5ndGggYikgKVxuXG4jIDEyNjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDMyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcblxuIyAxMjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjcxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuXG4jIDEyNzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDMyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTI4MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI4MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgNjhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIFxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICBjXG5cbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiBjIClcblxuIyAxMjk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjk5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxiJyApXG5cbiMgMTMwMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMwNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcMDEyJyApXG5cbiMgMTMwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbicgKVxuXG4jIDEzMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHInIClcblxuIyAxMzE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzE5IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyAzMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFx0JyApXG5cbiMgMTMyMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMyNCBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5sZXRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIGFcblxuIyAxMzI5IFwibGliL3JlYWQubWxcIlxuIyAxMzI5IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSlcbmFuZFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcblxuIyAxMzM0IFwibGliL3JlYWQubWxcIlxuIyAxMzM0IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG5cbiMgMTMzOSBcImxpYi9yZWFkLm1sXCJcbiMgMTMzOSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcblxuIyAxMzQ0IFwibGliL3JlYWQubWxcIlxuIyAxMzQ0IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNCkgaW5cblxuIyAzMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeCA+PSAweEQ4MDAgJiYgeCA8PSAweERCRkYgdGhlblxuICAgICAgICAgICAgIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICB1dGY4X29mX2NvZGUgdi5idWYgeFxuICAgICAgICAgKVxuXG4jIDEzNTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzNTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgZXNjYXBlIHNlcXVlbmNlXCIgdiBsZXhidWYgKVxuXG4jIDEzNjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzNjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDM0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTM2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTM2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgODJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBhXG5cbiMgMTM3OCBcImxpYi9yZWFkLm1sXCJcbiMgMTM3OCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuXG4jIDEzODMgXCJsaWIvcmVhZC5tbFwiXG4jIDEzODMgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG5cbiMgMTM4OCBcImxpYi9yZWFkLm1sXCJcbiMgMTM4OCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpXG5hbmRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG5cbiMgMTM5MyBcImxpYi9yZWFkLm1sXCJcbiMgMTM5MyBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDUpIGluXG5cbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeSA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHkgPj0gMHhEQzAwICYmIHkgPD0gMHhERkZGIHRoZW5cbiAgICAgICAgICAgICB1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIHYuYnVmIHggeVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgbG93IHN1cnJvZ2F0ZSBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCJcbiAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICApXG5cbiMgMTQwNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQwNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiTWlzc2luZyBlc2NhcGUgc2VxdWVuY2UgcmVwcmVzZW50aW5nIGxvdyBzdXJyb2dhdGUgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiIHYgbGV4YnVmIClcblxuIyAxNDExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDEyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzNjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgOTFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICAgICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgKGxlbisxKSBpblxuICAgICAgICAgICBCeXRlcy5zZXQgcyAwICdcIic7XG4gICAgICAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgcyAxIGxlbjtcbiAgICAgICAgICAgQnl0ZXMudG9fc3RyaW5nIHNcbiAgICAgICAgIClcblxuIyAxNDMzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDM0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuXG4jIDE0MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgMTAyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPSByZWFkX2pzb24gdiBsZXhidWYgaW5cbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZjtcbiAgICAgICAgICAgU29tZSB4IClcblxuIyAxNDU4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDU5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIE5vbmUgKVxuXG4jIDE0NjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE0NjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDM4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ3MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ3NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiAxMDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDE0ODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0ODYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDM4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNDkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDkxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIDExMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDE1MDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTUxMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUxMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNTE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTE4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29tbWEgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgMTE1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMTUyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNTM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTM1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE1MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDExOVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYEVkZ3lfYnJhY2tldCApXG5cbiMgMTU1MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU1MiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGBEb3VibGVfcXVvdGUgKVxuXG4jIDE1NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgU3F1YXJlX2JyYWNrZXQgKVxuXG4jIDE1NjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnLCAnXFxcIicgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNTY3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTY4IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0MDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTU3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDEyNVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAxNTg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTg1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcblxuIyAxNTg5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTkwIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcblxuIyAxNTk0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTk1IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcblxuIyAxNTk5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjAwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2VvZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiAxMzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE2MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNjE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiAxMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjI4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjI5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTYzMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYzNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTYzOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYzOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTY0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDE2NDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgMTQwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMTY2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdudWxsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTY2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTY3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbF9pZl9wb3NzaWJsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIDE0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTY4MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY4MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE2ODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2ODggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Jvb2wgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiAxNTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNjk5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzAwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE3MDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQ0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNzA5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzEwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE3MTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQ0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3RydWUnIG9yICdmYWxzZScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE3MTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDQ0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNzI0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzI1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIDE3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTczOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTczOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE3NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQ1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnRlZ2VyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG5cbiMgMTc2MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc2NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnRlZ2VyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNzY4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzY5IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTc3MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc3NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQzMiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiAxODVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDMyLm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxNzg3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzg4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDMyLm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQzMiBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuXG4jIDE4MDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQ5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50MzIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE4MTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQ5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxODE1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODE2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50NjQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgMTkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQ2NC5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTgyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQ2NC5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50NjQgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcblxuIyAxODQ3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODQ4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA1MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDY0IGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxODUyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODUzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA1MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTg1NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg1OCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bWJlciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgMTk5XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDUxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuYW4gKVxuXG4jIDE4NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDUxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBpbmZpbml0eSApXG5cbiMgMTg3NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg3NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5lZ19pbmZpbml0eSApXG5cbiMgMTg3OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg4MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZsb2F0X29mX3N0cmluZyAobGV4ZW1lIGxleGJ1ZikgKVxuXG4jIDE4ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4ODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDUyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGZsb2F0IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3Jlcy4gKilcbiAgICAgICAgICAgICAgICAgICAgZmxvYXRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiTmFOXCIgLT4gbmFuXG4gICAgICAgICAgICAgICAgICAgICAgfCBcIkluZmluaXR5XCIgLT4gaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IFwiLUluZmluaXR5XCIgLT4gbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYSBudW1iZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhIG51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICApXG5cbiMgMTkwNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkwNyBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgNTM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBudW1iZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDUzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxOTE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgMjMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxOTI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdcXFwiJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTkzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE5MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgMjM3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDE5NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxubGV0XG5cbiMgNTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBzXG5cbiMgMTk1OCBcImxpYi9yZWFkLm1sXCJcbiMgMTk1OCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuXG4jIDU1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBzIClcblxuIyAxOTYyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTYzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTY3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTY4IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTk3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfaWRlbnQgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgMjQyXG5hbmQgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuXG4jIDE5ODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5ODYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBtYXBfbGV4ZW1lIGYgbGV4YnVmIClcblxuIyAxOTkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTkxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1NjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTk2IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjAwMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAwMSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zZXF1ZW5jZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuXG4jIDIwMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMDMxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDMyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjAzNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAzNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIDI1MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuXG4jIDIwNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwNjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMDY3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDY4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjA3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgMjU1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAyMDg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDg1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIwODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwOTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgMjU3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDYwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjEwMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjEwMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMjEwNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjEwNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMTExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTEyIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA2MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjExNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjExNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI2MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNjEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDYzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyA2MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjE1MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE1MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIxNTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDYzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMTYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTYxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiAyNjZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIxNzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjE3NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE3OCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgMjY4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTkzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMDEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjIwNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIwNiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgMjcxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjIxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjIyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjI3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjI4IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA2NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjIzMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIzMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiAyNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIyNDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIyNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyNjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDY3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjI2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNjcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIyNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiAyODJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuXG4jIDIzMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzA5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzEwIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjMxNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMxNSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xjdXJsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIDI4NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjMyNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMyNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMzM2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzM3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgMjkwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDIzNDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjM1MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM1NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiAyOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjM2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDIzNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjM3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIzODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzODEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIDI5N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjM5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzOTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDAzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV90dXBsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIDMwMVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAyNDE0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDE1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMjQxOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQyMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDI0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDI1IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA3MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIDMwNlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNDQxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDQyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ0NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ0NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiAzMTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDczMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjQ2MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ2NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0NjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDczNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDczIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDc0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIDMxNFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI0ODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0ODYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDczOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDkxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9yYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIDMxOFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDc0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNTEyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTEzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjUxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgMzIyXG5hbmQgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDc1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTQwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA3NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDc1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU0OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU1MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgNzU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTU1IFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyA3NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyNTU5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTYwIFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyA3NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNzU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgNzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTY5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTcwIFwibGliL3JlYWQubWxcIlxuICB8IDkgLT5cblxuIyA3NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjU5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMCAtPlxuXG4jIDc4NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA3ODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI2MTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2MTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTEgLT5cblxuIyA3OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNzk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDgxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyA4MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjYzNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjYzNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMiAtPlxuXG4jIDgxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgODI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDgyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNjUwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjUxIFwibGliL3JlYWQubWxcIlxuICB8IDEzIC0+XG5cbiMgODMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjU1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjU2IFwibGliL3JlYWQubWxcIlxuICB8IDE0IC0+XG5cbiMgODMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNSAtPlxuXG4jIDgzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNiAtPlxuXG4jIDgzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNyAtPlxuXG4jIDgzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI2NzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTggLT5cblxuIyA4MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcblxuIyAyNjgwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjgxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgMzc4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAyNjkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjkzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuXG4jIDI2OTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2OTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjcwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgMzg5XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWYgKVxuXG4jIDI3MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDI3MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MjIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI3MjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDg1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjczMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjczMiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIDM5NFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI3NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjc0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjc1MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc1NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgODU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI3NTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIDM5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA4NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuXG4jIDI3NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDg3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjc3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDg3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ3snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4MDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4MDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDg5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdbJztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjgyMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjgyMiBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgOTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDkxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA5MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgOTMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDkzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgOTQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDk0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODYxIFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyA5NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDk0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDk1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODc5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODgwIFwibGliL3JlYWQubWxcIlxuICB8IDkgLT5cblxuIyA5NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4ODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTAgLT5cblxuIyA5NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyODg5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODkwIFwibGliL3JlYWQubWxcIlxuICB8IDExIC0+XG5cbiMgOTU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG5cbiMgMjg5NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg5NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDQ1MFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXCInO1xuICAgICAgICAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZlxuICAgICAgICAgKVxuXG4jIDI5MDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG5cbiMgMjkxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTE5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiA0NjFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JztcbiAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX2d0IHYgbGV4YnVmIClcblxuIyAyOTMzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTM0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuXG4jIDI5MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI5NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjk0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIDQ2NlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyOTYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTYxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5NzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuXG4jIDI5NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI5NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTc2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgNDcxXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAyOTkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTkxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAyOTk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTk5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMzAwNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAwNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgOTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDMwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcblxuIyAzMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDE5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIDQ3OFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JztcbiAgICAgIHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDMwMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMDM3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDM4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgNDgwXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuXG4jIDMwNDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7IHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDMwNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMDU5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDYwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMDY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDY1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIDQ4NVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMzA3NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA3NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDMwODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwODIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiA0ODdcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcblxuIyAzMDkzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDk0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDMwOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTAzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTA0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTA5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgNDkyXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7XG4gICAgICByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDMxMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMTI3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTI4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgNDk0XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG5cbiMgMzEzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJzsgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAzMTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTQ1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE0OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE1MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTAzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzE1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiA0OTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOicgKVxuXG4jIDMxNjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxNzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxNzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiA1MDNcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcblxuIyAzMTg4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTg5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE5MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE5NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTA0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiA1MDdcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIiovXCIgKVxuXG4jIDMyMTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG5cbiMgMzIxNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIxNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTA0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcblxuIyAzMjIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjIzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMzIyNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIyOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGp1bmsgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2p1bmtfcmVjIGxleGJ1ZiA1MTNcbmFuZCBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTA1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggTGV4aW5nLmxleGVtZSBsZXhidWYgKVxuXG4jIDMyMzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyNDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuXG4jIDEwNTUgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBcbiMgMTA1NiBcImxpYi9yZWFkLm1sbFwiXG4gIGxldCBfID0gKHJlYWRfanNvbiA6IGxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gdClcblxuICBsZXQgcmVhZF90ID0gcmVhZF9qc29uXG5cbiAgbGV0ICgpID1cbiAgICByZWFkX2p1bmsgOj0ganVua1xuXG4gIGxldCByZWFkX2ludDggdiBsZXhidWYgPVxuICAgIGxldCBuID0gcmVhZF9pbnQgdiBsZXhidWYgaW5cbiAgICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW5cbiAgICAgIGxleGVyX2Vycm9yIFwiSW50OCBvdmVyZmxvd1wiIHYgbGV4YnVmXG4gICAgZWxzZVxuICAgICAgY2hhcl9vZl9pbnQgblxuXG4gIGxldCByZWFkX2xpc3QgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBMaXN0LnJldiAocmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYpXG5cbiAgbGV0IGFycmF5X29mX3Jldl9saXN0IGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICBbXSAtPiBbfCB8XVxuICAgICAgfCB4IDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgICBsZXQgciA9IHJlZiB0bCBpblxuICAgICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgICAgYS4oaSkgPC0gTGlzdC5oZCAhcjtcbiAgICAgICAgICAgIHIgOj0gTGlzdC50bCAhclxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgYVxuXG4gIGxldCByZWFkX2FycmF5IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgbGV0IGwgPSByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiBpblxuICAgIGFycmF5X29mX3Jldl9saXN0IGxcblxuICAoKiBSZWFkIGEgSlNPTiBvYmplY3QsIHJlYWRpbmcgdGhlIGtleXMgaW50byBPQ2FtbCBzdHJpbmdzXG4gICAgIChwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgKilcbiAgbGV0IHJlYWRfZmllbGRzIHJlYWRfZmllbGQgaW5pdF9hY2MgdiA9XG4gICAgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9pZGVudCByZWFkX2ZpZWxkIGluaXRfYWNjIHZcblxuICBsZXQgZmluaXNoIHYgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgIGlmIG5vdCAocmVhZF9lb2YgbGV4YnVmKSB0aGVuXG4gICAgICBsb25nX2Vycm9yIFwiSnVuayBhZnRlciBlbmQgb2YgSlNPTiB2YWx1ZTpcIiB2IGxleGJ1ZlxuXG4gIGxldCBpbml0X2xleGVyID0gaW5pdF9sZXhlclxuXG4gIGxldCBmcm9tX2xleGJ1ZiB2ID8oc3RyZWFtID0gZmFsc2UpIGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcblxuICAgIGxldCB4ID1cbiAgICAgIGlmIHJlYWRfZW9mIGxleGJ1ZiB0aGVuXG4gICAgICAgIHJhaXNlIEVuZF9vZl9pbnB1dFxuICAgICAgZWxzZVxuICAgICAgICByZWFkX2pzb24gdiBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggdiBsZXhidWY7XG5cbiAgICB4XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIEVuZF9vZl9pbnB1dCAtPlxuICAgICAganNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIEVuZF9vZl9pbnB1dCAtPlxuICAgICAganNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgdHJ5XG4gICAgICBsZXQgeCA9IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyBpblxuICAgICAgY2xvc2VfaW4gaWM7XG4gICAgICB4XG4gICAgd2l0aCBlIC0+XG4gICAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICAgIHJhaXNlIGVcblxuICBleGNlcHRpb24gRmluYWxseSBvZiBleG4gKiBleG5cblxuICBsZXQgc2VxX2Zyb21fbGV4YnVmIHYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpIGxleGJ1ZiA9XG4gICAgbGV0IHN0cmVhbSA9IFNvbWUgdHJ1ZSBpblxuICAgIGxldCByZWMgZiAoKSA9XG4gICAgICB0cnkgU2VxLkNvbnMgKGZyb21fbGV4YnVmIHYgP3N0cmVhbSBsZXhidWYsIGYpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2lucHV0IC0+XG4gICAgICAgICAgICBmaW4gKCk7XG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgICAgKHRyeSBmaW4gKCkgd2l0aCBmaW5fZSAtPiByYWlzZSAoRmluYWxseSAoZSwgZmluX2UpKSk7XG4gICAgICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICBmXG5cbiAgbGV0IHNlcV9mcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiA/ZmluIGxleGJ1ZlxuXG4gIGxldCBzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgfmZpbiBsZXhidWZcblxuICB0eXBlIGpzb25fbGluZSA9IFsgYEpzb24gb2YgdCB8IGBFeG4gb2YgZXhuIF1cblxuICBsZXQgbGluZXNlcV9mcm9tX2NoYW5uZWxcbiAgICAgID9idWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpID9mbmFtZSA/bG51bToobG51bTAgPSAxKSBpYyA9XG4gICAgbGV0IGJ1ZiA9XG4gICAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSAoQnVmZmVyLmNyZWF0ZSAyNTYpXG4gICAgICAgIHwgU29tZSBfIC0+IGJ1ZlxuICAgIGluXG4gICAgbGV0IHJlYyBmIGxudW0gPSBmdW4gKCkgLT5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgbGluZSA9IGlucHV0X2xpbmUgaWMgaW5cbiAgICAgICAgU2VxLkNvbnMgKGBKc29uIChmcm9tX3N0cmluZyA/YnVmID9mbmFtZSB+bG51bSBsaW5lKSwgZiAobG51bSArIDEpKVxuICAgICAgd2l0aFxuICAgICAgICAgIEVuZF9vZl9maWxlIC0+IGZpbiAoKTsgU2VxLk5pbFxuICAgICAgICB8IGUgLT4gU2VxLkNvbnMgKGBFeG4gZSwgZiAobG51bSArIDEpKVxuICAgIGluXG4gICAgZiBsbnVtMFxuXG4gIGxldCBsaW5lc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsaW5lc2VxX2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gP2ZuYW1lID9sbnVtIGljXG5cbiAgbGV0IHByZXR0aWZ5ID9zdGQgcyA9XG4gICAgcHJldHR5X3RvX3N0cmluZyA/c3RkIChmcm9tX3N0cmluZyBzKVxuXG4gIGxldCBjb21wYWN0ID9zdGQgcyA9XG4gICAgdG9fc3RyaW5nIChmcm9tX3N0cmluZyBzKVxuXG5cbiMgMzQwOCBcImxpYi9yZWFkLm1sXCJcbiMgNDIgXCJ5b2pzb24uY3Bwby5tbFwiXG5tb2R1bGUgVXRpbCA9XG5zdHJ1Y3RcbiMgMSBcInV0aWwubWxcIlxuZXhjZXB0aW9uIFR5cGVfZXJyb3Igb2Ygc3RyaW5nICogdFxuXG5sZXQgdHlwZW9mID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgXyAtPiBcIm9iamVjdFwiXG4gIHwgYEJvb2wgXyAtPiBcImJvb2xcIlxuICB8IGBGbG9hdCBfIC0+IFwiZmxvYXRcIlxuICBcbiMgOCBcInV0aWwubWxcIlxuICB8IGBJbnQgXyAtPiBcImludFwiXG4gIFxuIyAxMCBcInV0aWwubWxcIlxuICB8IGBMaXN0IF8gLT4gXCJhcnJheVwiXG4gIHwgYE51bGwgLT4gXCJudWxsXCJcbiAgfCBgU3RyaW5nIF8gLT4gXCJzdHJpbmdcIlxuICB8IGBJbnRsaXQgXyAtPiBcImludGxpdFwiXG4gIHwgYEZsb2F0bGl0IF8gLT4gXCJmbG9hdGxpdFwiXG4gIFxuIyAxOCBcInV0aWwubWxcIlxuICB8IGBUdXBsZSBfIC0+IFwidHVwbGVcIlxuICB8IGBWYXJpYW50IF8gLT4gXCJ2YXJpYW50XCJcblxubGV0IHR5cGVyciBtc2cganMgPSByYWlzZSAoVHlwZV9lcnJvciAobXNnIF4gdHlwZW9mIGpzLCBqcykpXG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nICogdFxuXG5sZXQgYXNzb2MgbmFtZSBvYmogPSB0cnkgTGlzdC5hc3NvYyBuYW1lIG9iaiB3aXRoIE5vdF9mb3VuZCAtPiBgTnVsbFxuXG5sZXQgbWVtYmVyIG5hbWUgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gYXNzb2MgbmFtZSBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IG1lbWJlciAnXCIgXiBuYW1lIF4gXCInIG9mIG5vbi1vYmplY3QgdHlwZSBcIikganNcblxubGV0IHJlYyBwYXRoIGwgb2JqID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gU29tZSBvYmpcbiAgfCBrZXkgOjogbCAtPiAoXG4gICAgICBtYXRjaCBvYmogd2l0aFxuICAgICAgfCBgQXNzb2MgYXNzb2MgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Mga2V5IGFzc29jIHdpdGhcbiAgICAgICAgICB8IG9iaiAtPiBwYXRoIGwgb2JqXG4gICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IGluZGV4IGkgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMganMgLT5cbiAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICBsZXQgd3JhcHBlZF9pbmRleCA9IGlmIGkgPCAwIHRoZW4gbGVuICsgaSBlbHNlIGkgaW5cbiAgICAgIGlmIHdyYXBwZWRfaW5kZXggPCAwIHx8IHdyYXBwZWRfaW5kZXggPj0gbGVuIHRoZW5cbiAgICAgICAgcmFpc2UgKFVuZGVmaW5lZCAoXCJJbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG91dCBvZiBib3VuZHNcIiwganMpKVxuICAgICAgZWxzZSBMaXN0Lm50aCBsIHdyYXBwZWRfaW5kZXhcbiAgfCBqcyAtPlxuICAgICAgdHlwZXJyIChcIkNhbid0IGdldCBpbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG9mIG5vbi1hcnJheSB0eXBlIFwiKSBqc1xuXG5sZXQgbWFwIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gYExpc3QgKExpc3QubWFwIGYgbClcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBtYXAgZnVuY3Rpb24gb3ZlciBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgdG9fYXNzb2MgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gb2JqXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgb2JqZWN0LCBnb3QgXCIganNcblxubGV0IHRvX29wdGlvbiBmID0gZnVuY3Rpb24gYE51bGwgLT4gTm9uZSB8IHggLT4gU29tZSAoZiB4KVxubGV0IHRvX2Jvb2wgPSBmdW5jdGlvbiBgQm9vbCBiIC0+IGIgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sLCBnb3QgXCIganNcblxubGV0IHRvX2Jvb2xfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgQm9vbCBiIC0+IFNvbWUgYlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyID0gZnVuY3Rpb25cbiAgXG4jIDcwIFwidXRpbC5tbFwiXG4gIHwgYEludCBpIC0+IGZsb2F0IGlcbiAgXG4jIDczIFwidXRpbC5tbFwiXG4gIHwgYEZsb2F0IGYgLT4gZlxuICBcbiMgNzUgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyX29wdGlvbiA9IGZ1bmN0aW9uXG4gIFxuIyA3OSBcInV0aWwubWxcIlxuICB8IGBJbnQgaSAtPiBTb21lIChmbG9hdCBpKVxuICBcbiMgODIgXCJ1dGlsLm1sXCJcbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgXG4jIDg0IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgXG4jIDg5IFwidXRpbC5tbFwiXG4gIHwgYEZsb2F0IGYgLT4gZlxuICBcbiMgOTEgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdF9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgOTUgXCJ1dGlsLm1sXCJcbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgXG4jIDk3IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgXG4jIDEwMiBcInV0aWwubWxcIlxuICB8IGBJbnQgaSAtPiBpXG4gIFxuIyAxMDQgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50X29wdGlvbiA9IGZ1bmN0aW9uXG4gIFxuIyAxMDggXCJ1dGlsLm1sXCJcbiAgfCBgSW50IGkgLT4gU29tZSBpXG4gIFxuIyAxMTAgXCJ1dGlsLm1sXCJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIGBMaXN0IGwgLT4gbCB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGFycmF5LCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIFxuIyAxMTcgXCJ1dGlsLm1sXCJcbiAgfCBgU3RyaW5nIHMgLT4gc1xuICBcbiMgMTE5IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nLCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZ19vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgMTIzIFwidXRpbC5tbFwiXG4gIHwgYFN0cmluZyBzIC0+IFNvbWUgc1xuICBcbiMgMTI1IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZyBvciBudWxsLCBnb3QgXCIganNcblxubGV0IGNvbnZlcnRfZWFjaCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIGYgbFxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IGNvbnZlcnQgZWFjaCBlbGVtZW50IG9mIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCByZWMgcmV2X2ZpbHRlcl9tYXAgZiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZXZfZmlsdGVyX21hcCBmIGFjYyB0bFxuICAgICAgfCBTb21lIHkgLT4gcmV2X2ZpbHRlcl9tYXAgZiAoeSA6OiBhY2MpIHRsKVxuXG5sZXQgZmlsdGVyX21hcCBmIGwgPSBMaXN0LnJldiAocmV2X2ZpbHRlcl9tYXAgZiBbXSBsKVxuXG5sZXQgcmVjIHJldl9mbGF0dGVuIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYExpc3QgbDIgLT4gcmV2X2ZsYXR0ZW4gKExpc3QucmV2X2FwcGVuZCBsMiBhY2MpIHRsXG4gICAgICB8IF8gLT4gcmV2X2ZsYXR0ZW4gYWNjIHRsKVxuXG5sZXQgZmxhdHRlbiBsID0gTGlzdC5yZXYgKHJldl9mbGF0dGVuIFtdIGwpXG5cbmxldCBmaWx0ZXJfaW5kZXggaSBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgTGlzdCBsIC0+ICggdHJ5IFNvbWUgKExpc3QubnRoIGwgaSkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9saXN0IGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgTGlzdCBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxuXG5sZXQgZmlsdGVyX21lbWJlciBrIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBBc3NvYyBsIC0+ICggdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBsKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2Fzc29jIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQXNzb2MgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfYm9vbCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEJvb2wgeCAtPiBTb21lIHggfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfaW50IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICAgIGZ1bmN0aW9uXG4gICAgICBcbiMgMTcyIFwidXRpbC5tbFwiXG4gICAgICB8ICBgSW50IHggLT4gU29tZSB4XG4gICAgICBcbiMgMTc0IFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICAgICkgbFxuXG5sZXQgZmlsdGVyX2Zsb2F0IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgXG4jIDE4MSBcInV0aWwubWxcIlxuICAgICAgYEZsb2F0IHggLT4gU29tZSB4XG4gICAgICBcbiMgMTgzIFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9udW1iZXIgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICAgIFxuIyAxOTAgXCJ1dGlsLm1sXCJcbiAgICAgICAgYEludCB4IC0+IFNvbWUgKGZsb2F0IHgpXG4gICAgICBcbiMgMTkzIFwidXRpbC5tbFwiXG4gICAgICB8IGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgXG4jIDE5NSBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfc3RyaW5nIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBcbiMgMjAyIFwidXRpbC5tbFwiXG4gICAgICAgIGBTdHJpbmcgeCAtPiBTb21lIHhcbiAgICAgIFxuIyAyMDQgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQga2V5cyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChrZXksIF8pIC0+IGtleSlcblxubGV0IHZhbHVlcyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChfLCB2YWx1ZSkgLT4gdmFsdWUpXG5cbmxldCBjb21iaW5lIChmaXJzdCA6IHQpIChzZWNvbmQgOiB0KSA9XG4gIG1hdGNoIChmaXJzdCwgc2Vjb25kKSB3aXRoXG4gIHwgYEFzc29jIGEsIGBBc3NvYyBiIC0+IChgQXNzb2MgKGEgQCBiKSA6IHQpXG4gIHwgYSwgYiAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkV4cGVjdGVkIHR3byBvYmplY3RzLCBjaGVjayBpbnB1dHNcIilcbiMgNDUgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcbiMgNDkgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcblxubW9kdWxlIFNhZmUgPVxuc3RydWN0XG4jIDEgXCJ0eXBlLm1sXCJcbigqKiB7MyBUeXBlIG9mIHRoZSBKU09OIHRyZWV9ICopXG5cbnR5cGUgdCA9XG4gICAgW1xuICAgIHwgYE51bGxcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICBcbiMgOCBcInR5cGUubWxcIlxuICAgIHwgYEludCBvZiBpbnRcbiAgICBcbiMgMTEgXCJ0eXBlLm1sXCJcbiAgICB8IGBJbnRsaXQgb2Ygc3RyaW5nXG4gICAgXG4jIDE0IFwidHlwZS5tbFwiXG4gICAgfCBgRmxvYXQgb2YgZmxvYXRcbiAgICBcbiMgMjAgXCJ0eXBlLm1sXCJcbiAgICB8IGBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgXG4jIDI1IFwidHlwZS5tbFwiXG4gICAgfCBgQXNzb2Mgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICB8IGBMaXN0IG9mIHQgbGlzdFxuICAgIFxuIyAyOCBcInR5cGUubWxcIlxuICAgIHwgYFR1cGxlIG9mIHQgbGlzdFxuICAgIFxuIyAzMSBcInR5cGUubWxcIlxuICAgIHwgYFZhcmlhbnQgb2YgKHN0cmluZyAqIHQgb3B0aW9uKVxuICAgIFxuIyAzMyBcInR5cGUubWxcIlxuICAgIF1cbigqKlxuQWxsIHBvc3NpYmxlIGNhc2VzIGRlZmluZWQgaW4gWW9qc29uOlxuLSBgTnVsbDogSlNPTiBudWxsXG4tIGBCb29sIG9mIGJvb2w6IEpTT04gYm9vbGVhblxuLSBgSW50IG9mIGludDogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LlxuLSBgSW50bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgRmxvYXQgb2YgZmxvYXQ6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTi5cbi0gYEZsb2F0bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgU3RyaW5nIG9mIHN0cmluZzogSlNPTiBzdHJpbmcuIEJ5dGVzIGluIHRoZSByYW5nZSAxMjgtMjU1IGFyZSBwcmVzZXJ2ZWRcblx0ICAgIGFzLWlzIHdpdGhvdXQgZW5jb2RpbmcgdmFsaWRhdGlvbiBmb3IgYm90aCByZWFkaW5nXG5cdCAgICBhbmQgd3JpdGluZy5cbi0gYFN0cmluZ2xpdCBvZiBzdHJpbmc6IEpTT04gc3RyaW5nIGxpdGVyYWwgaW5jbHVkaW5nIHRoZSBkb3VibGUgcXVvdGVzLlxuLSBgQXNzb2Mgb2YgKHN0cmluZyAqIGpzb24pIGxpc3Q6IEpTT04gb2JqZWN0LlxuLSBgTGlzdCBvZiBqc29uIGxpc3Q6IEpTT04gYXJyYXkuXG4tIGBUdXBsZSBvZiBqc29uIGxpc3Q6IFR1cGxlIChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbKFwiYWJjXCIsIDEyMyldLlxuLSBgVmFyaWFudCBvZiAoc3RyaW5nICoganNvbiBvcHRpb24pOiBWYXJpYW50IChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbPFwiRm9vXCI+XSBvciBbPFwiQmFyXCI6MTIzPl0uXG4qKVxuXG4oKlxuICBOb3RlIHRvIGFkdmVudHVyZXJzOiBvY2FtbGRvYyBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBjb21tZW50c1xuICBvbiBlYWNoIHBvbHltb3JwaGljIHZhcmlhbnQsIGFuZCBjcHBvIGRvZXNuJ3QgYWxsb3cgdG8gY29uY2F0ZW5hdGVcbiAgY29tbWVudHMsIHNvIGl0IHdvdWxkIGJlIGNvbXBsaWNhdGVkIHRvIGRvY3VtZW50IG9ubHkgdGhlXG4gIGNhc2VzIHRoYXQgYXJlIHByZXNlcnZlZCBieSBjcHBvIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4qKVxuIyAxIFwic2FmZS5tbFwiXG5sZXQgcmVjIHRvX2Jhc2ljIDogdCAtPiBCYXNpYy50ID0gZnVuY3Rpb25cbiAgfCAoYE51bGwgfCBgQm9vbCBfIHwgYEludCBfIHwgYEZsb2F0IF8gfCBgU3RyaW5nIF8pIGFzIHggLT4geFxuICB8IGBJbnRsaXQgcyAtPiBgU3RyaW5nIHNcbiAgfCBgTGlzdCBsIHwgYFR1cGxlIGwgLT4gYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgdG9fYmFzaWMgbCkpXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGBBc3NvYyAoTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgdG9fYmFzaWMgdikpIGwpKVxuICB8IGBWYXJpYW50IChrLCBOb25lKSAtPiBgU3RyaW5nIGtcbiAgfCBgVmFyaWFudCAoaywgU29tZSB2KSAtPiBgTGlzdCBbIGBTdHJpbmcgazsgdG9fYmFzaWMgdiBdXG4jIDEgXCJ3cml0ZS5tbFwiXG4oKiBpbmNsdWRlZDogdHlwZS5tbCAqKVxuXG5sZXQgaGV4IG4gPVxuICBDaGFyLmNociAoXG4gICAgaWYgbiA8IDEwIHRoZW4gbiArIDQ4XG4gICAgZWxzZSBuICsgODdcbiAgKVxuXG5sZXQgd3JpdGVfc3BlY2lhbCBzcmMgc3RhcnQgc3RvcCBvYiBzdHIgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3RyO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgd3JpdGVfY29udHJvbF9jaGFyIHNyYyBzdGFydCBzdG9wIG9iIGMgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFxcdTAwXCI7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsc3IgNCkpO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbGFuZCAweGYpKTtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IGZpbmlzaF9zdHJpbmcgc3JjIHN0YXJ0IG9iID1cbiAgdHJ5XG4gICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpXG4gIHdpdGggZXhjIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJzcmM9JVMgc3RhcnQ9JWkgbGVuPSVpXFxuJSFcIlxuICAgICAgc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpO1xuICAgIHJhaXNlIGV4Y1xuXG5sZXQgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcyA9XG4gIGxldCBzdGFydCA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAnXCInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXCJcIlxuICAgICAgfCAnXFxcXCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcXFwiXG4gICAgICB8ICdcXGInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGJcIlxuICAgICAgfCAnXFwwMTInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGZcIlxuICAgICAgfCAnXFxuJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxuXCJcbiAgICAgIHwgJ1xccicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcclwiXG4gICAgICB8ICdcXHQnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHRcIlxuICAgICAgfCAnXFx4MDAnLi4nXFx4MUYnXG4gICAgICB8ICdcXHg3RicgYXMgYyAtPiB3cml0ZV9jb250cm9sX2NoYXIgcyBzdGFydCBpIG9iIGNcbiAgICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBmaW5pc2hfc3RyaW5nIHMgc3RhcnQgb2JcblxubGV0IHdyaXRlX3N0cmluZyBvYiBzID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX3N0cmluZ19ib2R5IG9iIHM7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMTAgaW5cbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgdGVzdF9zdHJpbmcgKCkgPVxuICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgZm9yIGkgPSAwIHRvIDI1NSBkb1xuICAgIEJ5dGVzLnNldCBzIGkgKENoYXIuY2hyIGkpXG4gIGRvbmU7XG4gIGpzb25fc3RyaW5nX29mX3N0cmluZyAoQnl0ZXMudG9fc3RyaW5nIHMpXG5cblxubGV0IHdyaXRlX251bGwgb2IgKCkgPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuXG5sZXQgd3JpdGVfYm9vbCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIilcblxuXG5sZXQgbWF4X2RpZ2l0cyA9XG4gIG1heFxuICAgIChTdHJpbmcubGVuZ3RoIChzdHJpbmdfb2ZfaW50IG1heF9pbnQpKVxuICAgIChTdHJpbmcubGVuZ3RoIChzdHJpbmdfb2ZfaW50IG1pbl9pbnQpKVxuXG5sZXQgZGVjIG4gPVxuICBDaGFyLmNociAobiArIDQ4KVxuXG5sZXQgcmVjIHdyaXRlX2RpZ2l0cyBzIHggPVxuICBpZiB4ID0gMCB0aGVuICgpXG4gIGVsc2VcbiAgICBsZXQgZCA9IHggbW9kIDEwIGluXG4gICAgd3JpdGVfZGlnaXRzIHMgKHggLyAxMCk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHMgKGRlYyAoYWJzIGQpKVxuXG5sZXQgd3JpdGVfaW50IG9iIHggPVxuICBpZiB4ID4gMCB0aGVuXG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgZWxzZSBpZiB4IDwgMCB0aGVuIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJy0nO1xuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIClcbiAgZWxzZVxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnMCdcblxuXG5sZXQganNvbl9zdHJpbmdfb2ZfaW50IGkgPVxuICBzdHJpbmdfb2ZfaW50IGlcblxuXG4oKlxuICBFbnN1cmUgdGhhdCB0aGUgZmxvYXQgaXMgbm90IHByaW50ZWQgYXMgYW4gaW50LlxuICBUaGlzIGlzIG5vdCByZXF1aXJlZCBieSBKU09OLCBidXQgdXNlZnVsIGluIG9yZGVyIHRvIGd1YXJhbnRlZVxuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCBmbG9hdF9uZWVkc19wZXJpb2QgcyA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgJzAnLi4nOScgfCAnLScgLT4gKClcbiAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBFeGl0IC0+XG4gICAgZmFsc2VcblxuKCpcbiAgR3VhcmFudGVlcyB0aGF0IGEgc3VmZmljaWVudCBudW1iZXIgb2YgZGlnaXRzIGFyZSBwcmludGVkIGluIG9yZGVyIHRvIGFsbG93XG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IHdyaXRlX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxubGV0IHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIGxldCBvcGVuIFByaW50ZiBpblxuICBsZXQgcyA9XG4gICAgbWF0Y2ggc2lnbmlmaWNhbnRfZmlndXJlcyB3aXRoXG4gICAgICAgIDEgLT4gc3ByaW50ZiBcIiUuMWdcIiB4XG4gICAgICB8IDIgLT4gc3ByaW50ZiBcIiUuMmdcIiB4XG4gICAgICB8IDMgLT4gc3ByaW50ZiBcIiUuM2dcIiB4XG4gICAgICB8IDQgLT4gc3ByaW50ZiBcIiUuNGdcIiB4XG4gICAgICB8IDUgLT4gc3ByaW50ZiBcIiUuNWdcIiB4XG4gICAgICB8IDYgLT4gc3ByaW50ZiBcIiUuNmdcIiB4XG4gICAgICB8IDcgLT4gc3ByaW50ZiBcIiUuN2dcIiB4XG4gICAgICB8IDggLT4gc3ByaW50ZiBcIiUuOGdcIiB4XG4gICAgICB8IDkgLT4gc3ByaW50ZiBcIiUuOWdcIiB4XG4gICAgICB8IDEwIC0+IHNwcmludGYgXCIlLjEwZ1wiIHhcbiAgICAgIHwgMTEgLT4gc3ByaW50ZiBcIiUuMTFnXCIgeFxuICAgICAgfCAxMiAtPiBzcHJpbnRmIFwiJS4xMmdcIiB4XG4gICAgICB8IDEzIC0+IHNwcmludGYgXCIlLjEzZ1wiIHhcbiAgICAgIHwgMTQgLT4gc3ByaW50ZiBcIiUuMTRnXCIgeFxuICAgICAgfCAxNSAtPiBzcHJpbnRmIFwiJS4xNWdcIiB4XG4gICAgICB8IDE2IC0+IHNwcmludGYgXCIlLjE2Z1wiIHhcbiAgICAgIHwgXyAtPiBzcHJpbnRmIFwiJS4xN2dcIiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IGpzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9zdGRfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAganNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAganNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfc3RkX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBqc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBqc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfc3RkX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB0ZXN0X2Zsb2F0ICgpID1cbiAgbGV0IGwgPSBbIDAuOyAxLjsgLTEuIF0gaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IDIuICouIHggKy4gMS4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggLy4gc3FydCAyLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAqLiBzcXJ0IDMuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIGNvcyBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4ICouIDEuMjNlNTApIGwgaW5cbiAgbGV0IGwgPSBsIEAgWyBpbmZpbml0eTsgbmVnX2luZmluaXR5IF0gaW5cbiAgTGlzdC5pdGVyIChcbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHMgPSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeCBpblxuICAgICAgbGV0IHkgPSBmbG9hdF9vZl9zdHJpbmcgcyBpblxuICAgICAgUHJpbnRmLnByaW50ZiBcIiVnICVnICVTICVCXFxuXCIgeCB5IHMgKHggPSB5KVxuICApXG4gICAgbFxuXG4oKlxubGV0ICgpID0gdGVzdF9mbG9hdCAoKVxuKilcblxubGV0IHdyaXRlX2ludGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfZmxvYXRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX3N0cmluZ2xpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5cbmxldCByZWMgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX3NlcCB4O1xuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgaXRlcjIgZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGZfc2VwIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgcmVjIHdyaXRlX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICBcbiMgMjY0IFwid3JpdGUubWxcIlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgXG4jIDI2NyBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDI3MCBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX2Zsb2F0IG9iIGZcbiAgICBcbiMgMjc2IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgXG4jIDI4MSBcIndyaXRlLm1sXCJcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfbGlzdCBvYiBsXG4gICAgXG4jIDI4NCBcIndyaXRlLm1sXCJcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3R1cGxlIG9iIGxcbiAgICBcbiMgMjg3IFwid3JpdGUubWxcIlxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3ZhcmlhbnQgb2IgcyBvXG5cbiMgMjkwIFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbiMgMzA2IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJygnO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKSdcblxuIyAzMTMgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfdmFyaWFudCBvYiBzIG8gPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJzwnO1xuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgKG1hdGNoIG8gd2l0aFxuICAgICAgIE5vbmUgLT4gKClcbiAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICAgICB3cml0ZV9qc29uIG9iIHhcbiAgKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc+J1xuXG4jIDMyNSBcIndyaXRlLm1sXCJcbmxldCB3cml0ZV90ID0gd3JpdGVfanNvblxuXG5sZXQgcmVjIHdyaXRlX3N0ZF9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgXG4jIDMzMiBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIFxuIyAzMzUgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAzMzggXCJ3cml0ZS5tbFwiXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9zdGRfZmxvYXQgb2IgZlxuICAgIFxuIyAzNDQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzQ5IFwid3JpdGUubWxcIlxuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuICAgIFxuIyAzNTIgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV9zdGRfdHVwbGUgb2IgbFxuICAgIFxuIyAzNTUgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvXG5cbiMgMzU4IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbiMgMzc5IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgbyA9XG4gIG1hdGNoIG8gd2l0aFxuICAgICAgTm9uZSAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gICAgICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgICB3cml0ZV9zdGRfanNvbiBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxuIyAzOTEgXCJ3cml0ZS5tbFwiXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYik7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fZmlsZSA/bGVuID9zdGQgPyhzdWYgPSBcIlxcblwiKSBmaWxlIHggPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHRvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2MgeDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubGV0IHNlcV90b19idWZmZXIgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9iIHN0ID1cbiAgU2VxLml0ZXIgKHRvX2J1ZmZlciB+c3VmID9zdGQgb2IpIHN0XG5cbmxldCBzZXFfdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBzdCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHNlcV90b19idWZmZXIgfnN1ZiA/c3RkIG9iIHN0O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHNlcV90b19jaGFubmVsID9idWYgPyhsZW49MjA5NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9jIHNlcSA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgU2VxLml0ZXIgKGZ1biBqc29uIC0+XG4gICAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBqc29uO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgKSBzZXFcblxubGV0IHNlcV90b19maWxlID9sZW4gPyhzdWYgPSBcIlxcblwiKSA/c3RkIGZpbGUgc3QgPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHN0O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5cbmxldCByZWMgc29ydCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgc29ydCB2KSkgbCkgaW5cbiAgICAgIGBBc3NvYyAoTGlzdC5zdGFibGVfc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSBsKVxuICB8IGBMaXN0IGwgLT5cbiAgICAgIGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIFxuIyA0ODUgXCJ3cml0ZS5tbFwiXG4gIHwgYFR1cGxlIGwgLT5cbiAgICAgIGBUdXBsZSAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICBcbiMgNDg5IFwid3JpdGUubWxcIlxuICB8IGBWYXJpYW50IChrLCBTb21lIHYpIGFzIHggLT5cbiAgICAgIGxldCB2JyA9IHNvcnQgdiBpblxuICAgICAgaWYgdiA9PSB2JyB0aGVuIHhcbiAgICAgIGVsc2VcbiAgICAgICAgYFZhcmlhbnQgKGssIFNvbWUgdicpXG4gIFxuIyA0OTUgXCJ3cml0ZS5tbFwiXG4gIHwgeCAtPiB4XG4jIDYyIFwieW9qc29uLmNwcG8ubWxcIlxubW9kdWxlIFByZXR0eSA9XG5zdHJ1Y3RcbiMgMSBcInByZXR0eS5tbFwiXG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgXG4jIDc4IFwicHJldHR5Lm1sXCJcbiAgICB8IGBJbnQgeCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2ZfaW50IHgpXG4gICAgXG4jIDgxIFwicHJldHR5Lm1sXCJcbiAgICB8IGBGbG9hdCB4IC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBzdGQgdGhlbiBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICAgIGVsc2UganNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDg5IFwicHJldHR5Lm1sXCJcbiAgICB8IGBTdHJpbmcgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG4gICAgXG4jIDkyIFwicHJldHR5Lm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDEwMCBcInByZXR0eS5tbFwiXG4gICAgfCBgTGlzdCBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIltdXCJcbiAgICB8IGBMaXN0IGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgaWYgaXNfYXRvbV9saXN0IGwgdGhlblxuICAgICAgICAoKiB1c2UgbGluZSB3cmFwcGluZyBsaWtlIHdlIHdvdWxkIGRvIGZvciBhIHBhcmFncmFwaCBvZiB0ZXh0ICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aG92PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbFxuICAgICAgZWxzZVxuICAgICAgICAoKiBwcmludCB0aGUgZWxlbWVudHMgaG9yaXpvbnRhbGx5IGlmIHRoZXkgZml0IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICBvdGhlcndpc2UgcHJpbnQgdGhlbSBpbiBhIGNvbHVtbiAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGh2PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBBc3NvYyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcInt9XCJcbiAgICB8IGBBc3NvYyBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIntAOzwxIDA+JWFAOzwxIC0yPn1cIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0X2ZpZWxkIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgXG4jIDExOSBcInByZXR0eS5tbFwiXG4gICAgfCBgVHVwbGUgbCAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaWYgbCA9IFtdIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiKClcIlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxob3YyPlwiO1xuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiKEAsJWFAOzwwIC0yPilcIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgICAgICAgKVxuICAgIFxuIyAxMzIgXCJwcmV0dHkubWxcIlxuICAgIHwgYFZhcmlhbnQgKHMsIE5vbmUpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgXG4jIDEzNSBcInByZXR0eS5tbFwiXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZyBzIGluXG4gICAgICAgICAgXG4jIDEzOSBcInByZXR0eS5tbFwiXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgcmVwcmVzZW50YXRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjwlcz5cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG5cbiAgICB8IGBWYXJpYW50IChzLCBTb21lIHgpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgXG4jIDE0NiBcInByZXR0eS5tbFwiXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZyBzIGluXG4gICAgICAgICAgXG4jIDE1MCBcInByZXR0eS5tbFwiXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IFsgcmVwcmVzZW50YXRpb247IHggXSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBvcCA9IGpzb25fc3RyaW5nX29mX3N0cmluZyBzIGluXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPEBbPGh2Mj4lczogJWFAXT5cIiBvcCAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbiMgMTU2IFwicHJldHR5Lm1sXCJcbmFuZCBmb3JtYXRfZmllbGQgc3RkIG91dCAobmFtZSwgeCkgPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JXM6ICVhQF1cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIG5hbWUpIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxubGV0IHBwID8oc3RkID0gZmFsc2UpIG91dCB4ID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVhQF1cIiAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSAoeCA6PiB0KVxuXG5sZXQgdG9fc3RyaW5nID9zdGQgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKHBwID9zdGQpIHhcblxubGV0IHRvX2NoYW5uZWwgP3N0ZCBvYyB4ID1cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiJWFAP1wiIChwcCA/c3RkKSB4XG4jIDY1IFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG4jIDEgXCJtb25vbW9ycGhpYy5tbFwiXG5sZXQgcmVjIHBwIGZtdCA9XG4gIGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJgTnVsbFwiXG4gIHwgYEJvb2wgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBCb29sIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUJcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA5IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZFwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDE1IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDIxIFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBGbG9hdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUZcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAzMyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgU3RyaW5nIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA0NCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgQXNzb2MgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQXNzb2MgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIGtleTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAgICAgICBwcCBmbXQgdmFsdWU7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgTGlzdCB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBMaXN0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgeCAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIHBwIGZtdCB4O1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA3MSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgVHVwbGUgdHVwIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFR1cGxlIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgZSAtPlxuICAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgIHBwIGZtdCBlO1xuICAgICAgICAgICB0cnVlKSBmYWxzZSB0dXApO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDg0IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVmFyaWFudCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgbmFtZTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAobWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uZVwiXG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIihTb21lIFwiO1xuICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIpXCIpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG5cbiMgOTkgXCJtb25vbW9ycGhpYy5tbFwiXG5sZXQgc2hvdyB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcCB4XG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgYE51bGwsIGBOdWxsIC0+IHRydWVcbiAgfCBgQm9vbCBhLCBgQm9vbCBiIC0+IGEgPSBiXG4gIFxuIyAxMDcgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEludCBhLCBgSW50IGIgLT4gYSA9IGJcbiAgICBcbiMgMTEwIFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEludGxpdCBhLCBgSW50bGl0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTEzIFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEZsb2F0IGEsIGBGbG9hdCBiIC0+IGEgPSBiXG4gICAgXG4jIDExOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBTdHJpbmcgYSwgYFN0cmluZyBiIC0+IGEgPSBiXG4gICAgXG4jIDEyNCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBBc3NvYyB4cywgYEFzc29jIHlzIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXlzID0gZnVuIChrZXksIF8pIChrZXknLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBrZXkga2V5JyBpblxuICAgICAgbGV0IHhzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeHMgaW5cbiAgICAgIGxldCB5cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHlzIGluXG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiAoZnVuIChrZXksIHZhbHVlKSAoa2V5JywgdmFsdWUnKSAtPlxuICAgICAgICBtYXRjaCBrZXkgPSBrZXknIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgICB8IHRydWUgLT4gZXF1YWwgdmFsdWUgdmFsdWUnKSB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIFxuIyAxMzcgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgVHVwbGUgeHMsIGBUdXBsZSB5c1xuICAgIFxuIyAxMzkgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgXG4jIDE0NiBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSksIGBWYXJpYW50IChuYW1lJywgdmFsdWUnKSAtPlxuICAgICAgKG1hdGNoIG5hbWUgPSBuYW1lJyB3aXRoXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgbWF0Y2ggdmFsdWUsIHZhbHVlJyB3aXRoXG4gICAgICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICBcbiMgMTU1IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgXyAtPiBmYWxzZVxuIyAxIFwid3JpdGUyLm1sXCJcbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4jIDEgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBcbiMgMiBcImxpYi9yZWFkLm1sbFwiXG4gIG1vZHVsZSBMZXhpbmcgPVxuICAgICgqXG4gICAgICBXZSBvdmVycmlkZSBMZXhpbmcuZW5naW5lIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IHBvc2l0aW9uXG4gICAgICByZWNvcmQgZWFjaCB0aW1lIGEgcnVsZSBpcyBtYXRjaGVkLlxuICAgICAgVGhpcyByZWR1Y2VzIHRvdGFsIHBhcnNpbmcgdGltZSBieSBhYm91dCAzMSUuXG4gICAgKilcbiAgc3RydWN0XG4gICAgaW5jbHVkZSBMZXhpbmdcblxuICAgIGV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcblxuICAgIGxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gICAgICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICAgICAgKCpcbiAgICAgIGlmIHJlc3VsdCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgICAgIGVuZDtcbiAgICAgICopXG4gICAgICByZXN1bHRcbiAgZW5kXG5cbiAgb3BlbiBQcmludGZcbiAgb3BlbiBMZXhpbmdcblxuICAoKiBzZWUgZGVzY3JpcHRpb24gaW4gY29tbW9uLm1saSAqKVxuICB0eXBlIGxleGVyX3N0YXRlID0gTGV4ZXJfc3RhdGUudCA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgZGVjIGMgPVxuICAgIENoYXIuY29kZSBjIC0gNDhcblxuICBsZXQgaGV4IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnMCcuLic5JyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG4gICAgICB8ICdhJy4uJ2YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKyAxMFxuICAgICAgfCAnQScuLidGJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgMTBcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgY3VzdG9tX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQgb2ZmcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyAtIDEgaW5cbiAgICBsZXQgYm9sID0gdi5ib2wgaW5cbiAgICBsZXQgcG9zMSA9IG9mZnMgKyBsZXhidWYubGV4X3N0YXJ0X3BvcyAtIGJvbCAtIDEgaW5cbiAgICBsZXQgcG9zMiA9IG1heCBwb3MxIChvZmZzICsgbGV4YnVmLmxleF9jdXJyX3BvcyAtIGJvbCkgaW5cbiAgICBsZXQgZmlsZV9saW5lID1cbiAgICAgIG1hdGNoIHYuZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gXCJMaW5lXCJcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIHNwcmludGYgXCJGaWxlICVzLCBsaW5lXCIgc1xuICAgIGluXG4gICAgbGV0IGJ5dGVzID1cbiAgICAgIGlmIHBvczEgPSBwb3MyIHRoZW5cbiAgICAgICAgc3ByaW50ZiBcImJ5dGUgJWlcIiAocG9zMSsxKVxuICAgICAgZWxzZVxuICAgICAgICBzcHJpbnRmIFwiYnl0ZXMgJWktJWlcIiAocG9zMSsxKSAocG9zMisxKVxuICAgIGluXG4gICAgbGV0IG1zZyA9IHNwcmludGYgXCIlcyAlaSwgJXM6XFxuJXNcIiBmaWxlX2xpbmUgdi5sbnVtIGJ5dGVzIGRlc2NyIGluXG4gICAganNvbl9lcnJvciBtc2dcblxuXG4gIGxldCBsZXhlcl9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoc3ByaW50ZiBcIiVzICclcydcIiBkZXNjciAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgcmVhZF9qdW5rID0gcmVmIChmdW4gXyAtPiBhc3NlcnQgZmFsc2UpXG5cbiAgbGV0IGxvbmdfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGxldCBqdW5rID0gTGV4aW5nLmxleGVtZSBsZXhidWYgaW5cbiAgICBsZXQgZXh0cmFfanVuayA9ICFyZWFkX2p1bmsgbGV4YnVmIGluXG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoc3ByaW50ZiBcIiVzICclcyVzJ1wiIGRlc2NyIGp1bmsgZXh0cmFfanVuaylcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IG1pbjEwID0gbWluX2ludCAvIDEwIC0gKGlmIG1pbl9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuICBsZXQgbWF4MTAgPSBtYXhfaW50IC8gMTAgKyAoaWYgbWF4X2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG5cbiAgZXhjZXB0aW9uIEludF9vdmVyZmxvd1xuXG4gIGxldCBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWYgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA+PSBtYXgxMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gKyBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgXG4jIDEwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgXG4jIDEwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgIGBJbnRsaXQgKGxleGVtZSBsZXhidWYpXG5cbiAgXG4jIDExMyBcImxpYi9yZWFkLm1sbFwiXG4gIGxldCBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWYgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgMSBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPD0gbWluMTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuIC0gZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPiAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgIFxuIyAxMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgdHJ5IGBJbnQgKGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZilcbiAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgIFxuIyAxMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICBgSW50bGl0IChsZXhlbWUgbGV4YnVmKVxuXG5cbiAgXG4jIDE0MSBcImxpYi9yZWFkLm1sbFwiXG4gIGxldCBzZXRfZmlsZV9uYW1lIHYgZm5hbWUgPVxuICAgIHYuZm5hbWUgPC0gZm5hbWVcblxuICBsZXQgbmV3bGluZSB2IGxleGJ1ZiA9XG4gICAgdi5sbnVtIDwtIHYubG51bSArIDE7XG4gICAgdi5ib2wgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgbGV4YnVmLmxleF9jdXJyX3Bvc1xuXG4gIGxldCBhZGRfbGV4ZW1lIGJ1ZiBsZXhidWYgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBCdWZmZXIuYWRkX3N1YmJ5dGVzIGJ1ZiBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxuICBsZXQgbWFwX2xleGVtZSBmIGxleGJ1ZiA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGYgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuKSAwIGxlblxuXG4gIHR5cGUgdmFyaWFudF9raW5kID0gWyBgRWRneV9icmFja2V0IHwgYFNxdWFyZV9icmFja2V0IHwgYERvdWJsZV9xdW90ZSBdXG4gIHR5cGUgdHVwbGVfa2luZCA9IFsgYFBhcmVudGhlc2lzIHwgYFNxdWFyZV9icmFja2V0IF1cblxuXG4jIDE2MSBcImxpYi9yZWFkLm1sXCJcbiMgMTYxIFwibGliL3JlYWQubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjM2XFwyNTVcXDIzN1xcMjU1XFwwMDNcXDAwMFxcMjM5XFwyNTVcXDAxNlxcMDAwXFwyNDJcXDI1NVxcMjQzXFwyNTVcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMDBcXDAwMFxcMDMxXFwwMDBcXDI0OVxcMjU1XFwwODVcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU0XFwyNTVcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMjUzXFwyNTVcXDAxMVxcMDAwXFwyNTJcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwyNTFcXDI1NVxcMDIxXFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMjJcXDAwMFxcMDIwXFwwMDBcXDAxNlxcMDAwXFwwMjJcXDAwMFxcMDEyXFwwMDBcXDAwOFxcMDAwXFwyNTBcXDI1NVxcXG4gICAgXFwxMTlcXDAwMFxcMTI5XFwwMDBcXDEzOVxcMDAwXFwxNjFcXDAwMFxcMTcxXFwwMDBcXDE4MVxcMDAwXFwxOTNcXDAwMFxcMjA5XFwwMDBcXFxuICAgIFxcMjQwXFwyNTVcXDAxMVxcMDAwXFwwMzhcXDAwMFxcMjUyXFwyNTVcXDA2NVxcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDExMFxcMDAwXFxcbiAgICBcXDI1MlxcMjU1XFwxNjNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzRcXDAwMFxcMjQ3XFwyNTVcXDI0OFxcMjU1XFwwNDhcXDAwMVxcXG4gICAgXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMTI2XFwwMDFcXFxuICAgIFxcMTQ5XFwwMDFcXDI0OVxcMjU1XFwwMzlcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzhcXDAwMFxcMTg3XFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI0OFxcMDAxXFwwMTVcXDAwMlxcMjU1XFwyNTVcXDIyMFxcMDAwXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwwMzlcXDAwMlxcXG4gICAgXFwxMDlcXDAwMlxcMDE0XFwwMDFcXDA4OFxcMDAyXFwxNjRcXDAwMlxcMTg3XFwwMDJcXDIyNVxcMDAyXFwwMTNcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMVxcXG4gICAgXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMVxcMDA1XFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDAyM1xcMDAwXFwyNTRcXDI1NVxcMDIwXFwwMDBcXDI1NVxcMjU1XFwwNDZcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwNDJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwNTNcXDAwMFxcMDQ4XFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI3XFwwMDFcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMTM3XFwwMDBcXDEwNFxcMDAwXFwwODlcXDAwMFxcMDg4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMFxcMTM3XFwwMDBcXDE3N1xcMDAwXFwyNTRcXDI1NVxcMTgzXFwwMDBcXDE2OFxcMDAwXFwxNjZcXDAwMFxcXG4gICAgXFwxODNcXDAwMFxcMDAyXFwwMDBcXDI1M1xcMjU1XFwxNzdcXDAwMFxcMTcyXFwwMDBcXDE4N1xcMDAwXFwwMDRcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMDUzXFwwMDJcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDEwM1xcMDAxXFwyNTVcXDI1NVxcMjQ4XFwwMDJcXDI1NFxcMjU1XFxcbiAgICBcXDAwNlxcMDAzXFwwMzBcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAzXFwwNTBcXDAwM1xcXG4gICAgXFwwNzRcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA2MVxcMDAzXFwwODRcXDAwM1xcMTA4XFwwMDNcXFxuICAgIFxcMjQ5XFwyNTVcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjQ0XFwwMDBcXDEyMFxcMDAzXFwxNDJcXDAwM1xcMTc5XFwwMDBcXDE5NFxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMTkwXFwwMDBcXDE4OFxcMDAwXFwxODdcXDAwMFxcMTkzXFwwMDBcXDE4M1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwyNTRcXDI1NVxcMTkxXFwwMDBcXDIwMVxcMDAwXFwyMDBcXDAwMFxcMTk2XFwwMDBcXDIwM1xcMDAwXFwxOTNcXDAwMFxcMTg5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDE1N1xcMDAzXFwwOTVcXDAwM1xcMTc0XFwwMDNcXDE5NlxcMDAzXFwyMDZcXDAwM1xcMjE2XFwwMDNcXDIyOFxcMDAzXFxcbiAgICBcXDIzOVxcMDAzXFwwNjBcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwwODdcXDAwNFxcMjU1XFwyNTVcXDE0NVxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyMVxcMDA0XFwyNTVcXDI1NVxcMjI5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMxXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMThcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM4XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMFxcMDAxXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjA4XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIxMVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4OVxcMDAwXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwOTVcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzM1xcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMjJcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwNVxcMjM3XFwyNTVcXDIzOFxcMjU1XFwwMTBcXDAwMFxcMjQwXFwyNTVcXDA0NFxcMDAxXFxcbiAgICBcXDI0M1xcMjU1XFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDI0NlxcMjU1XFwwNjFcXDAwMVxcMDAyXFwwMDRcXDI0OVxcMjU1XFwwNDVcXDAwNVxcXG4gICAgXFwyMDlcXDAwMFxcMjI4XFwwMDBcXDIxMVxcMDAwXFwyMzJcXDAwMFxcMjI1XFwwMDBcXDIyM1xcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjM1XFwwMDBcXDIzNFxcMDAwXFwwMDhcXDAwMVxcMjU0XFwyNTVcXDAwNFxcMDAxXFwwMjNcXDAwMVxcMjUzXFwyNTVcXDA1NFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwwMzFcXDAwMVxcMDI5XFwwMDFcXDAzMlxcMDAxXFwwMzlcXDAwMVxcMDQ5XFwwMDFcXDA0NVxcMDAxXFwyNTFcXDI1NVxcXG4gICAgXFwwNTdcXDAwMVxcMDgyXFwwMDFcXDA4MFxcMDAxXFwwNzhcXDAwMVxcMDg0XFwwMDFcXDA3NFxcMDAxXFwwODZcXDAwMVxcMjUwXFwyNTVcXFxuICAgIFxcMTEwXFwwMDVcXDAxMlxcMDA0XFwxMjNcXDAwNVxcMTU1XFwwMDVcXDE2NVxcMDA1XFwxNzdcXDAwNVxcMTg3XFwwMDVcXDE5N1xcMDA1XFxcbiAgICBcXDI0MVxcMjU1XFwxOTlcXDAwMVxcMDc3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMTU0XFwwMDJcXDIyMlxcMDA1XFwyMDlcXDAwNVxcXG4gICAgXFwxNTVcXDAwMlxcMjM5XFwwMDVcXDA1M1xcMDA2XFwwNzZcXDAwNlxcMTE0XFwwMDZcXDAxNlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTJcXDAwNlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjdcXDAwNlxcMjU1XFwyNTVcXDA4NVxcMDA3XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDExXFwwMDBcXDI0N1xcMjU1XFwwNzZcXDAwMlxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzMVxcMDAyXFwyNDNcXDAwNVxcMDUxXFwwMDdcXDEwMFxcMDAxXFwxMTVcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDExOFxcMDAxXFwxNTRcXDAwMVxcMTcxXFwwMDFcXDI1NVxcMjU1XFwxNzNcXDAwMVxcMTc2XFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODdcXDAwMVxcMjUzXFwwMDFcXDIzMFxcMDAxXFwyMzBcXDAwMVxcMjM0XFwwMDFcXDI0N1xcMDAxXFwyMzdcXDAwMVxcXG4gICAgXFwyMzRcXDAwMVxcMDA5XFwwMDJcXDAxOVxcMDAyXFwwMTlcXDAwMlxcMDE1XFwwMDJcXDAyMVxcMDAyXFwwMTFcXDAwMlxcMDA3XFwwMDJcXFxuICAgIFxcMTQyXFwwMDZcXDE1MlxcMDA2XFwxMTZcXDAwN1xcMTcwXFwwMDdcXDE4MFxcMDA3XFwxOTBcXDAwN1xcMjAwXFwwMDdcXDIxMFxcMDA3XFxcbiAgICBcXDI0OFxcMjU1XFwxMjBcXDAwMlxcMTY3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjE2XFwwMDJcXDA4MlxcMDA3XFwyMjBcXDAwN1xcXG4gICAgXFwyMzZcXDAwMlxcMjQ0XFwwMDdcXDA1OFxcMDA4XFwwODFcXDAwOFxcMTE5XFwwMDhcXDA3NlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTdcXDAwOFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMzJcXDAwOFxcMjU1XFwyNTVcXDEzNVxcMDAyXFxcbiAgICBcXDEyMFxcMDAyXFwyNTNcXDI1NVxcMTAwXFwwMDJcXDI1NFxcMjU1XFwxODJcXDAwMlxcMjU1XFwyNTVcXDAxMVxcMDAyXFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0NlxcMDAyXFwyNTVcXDI1NVxcMTc4XFwwMDJcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyM1xcMDAwXFwyNTVcXDI1NVxcMTgzXFwwMDJcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAyXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjFcXDAwMlxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE0MFxcMDAxXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDE1MFxcMDAxXFwxNTFcXDAwMVxcMTU0XFwwMDFcXDE2OFxcMDAxXFxcbiAgICBcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTcyXFwwMDFcXDE3M1xcMDAxXFwxODFcXDAwMVxcMTg0XFwwMDFcXDE4NVxcMDAxXFwxODdcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkzXFwwMDFcXDE5NVxcMDAxXFwxOTZcXDAwMVxcMTk3XFwwMDFcXDIwMFxcMDAxXFwyMDNcXDAwMVxcMjIzXFwwMDFcXFxuICAgIFxcMjI1XFwwMDFcXDIyOFxcMDAxXFwyNDlcXDAwMVxcMjUxXFwwMDFcXDAwMlxcMDAyXFwwMDRcXDAwMlxcMDExXFwwMDJcXDAxMlxcMDAyXFxcbiAgICBcXDAxM1xcMDAyXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA5N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTIxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDEzOFxcMDAwXFwwMDBcXDAwMFxcMTQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTg3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjM1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0OVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxN1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTIxXFwwMDFcXDEyNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxNDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTkzXFwwMDFcXDE5N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjIwXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIzM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0MFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDJcXDAwMlxcMDA0XFwwMDJcXDAwMFxcMDAwXFwwMDVcXDAwMlxcMDA2XFwwMDJcXDAwN1xcMDAyXFwwMDhcXDAwMlxcXG4gICAgXFwwMDlcXDAwMlxcMDEwXFwwMDJcXDAxMVxcMDAyXFwwMTJcXDAwMlxcMDEzXFwwMDJcXDAxNFxcMDAyXFwwMTVcXDAwMlxcMDE2XFwwMDJcXFxuICAgIFxcMDE3XFwwMDJcXDAxOFxcMDAyXFwwMTlcXDAwMlxcMDIwXFwwMDJcXDAyMVxcMDAyXFwwMjJcXDAwMlxcMDIzXFwwMDJcXDAyNFxcMDAyXFxcbiAgICBcXDAyNVxcMDAyXFwwMjZcXDAwMlxcMDI3XFwwMDJcXDAyOFxcMDAyXFwwMjlcXDAwMlxcMDMwXFwwMDJcXDAzMVxcMDAyXFwwMzJcXDAwMlxcXG4gICAgXFwwMzNcXDAwMlxcMDAzXFwwMDJcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjdcXDAwMFxcMTM5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXDAwM1xcMDAwXFwxNzBcXDAwMFxcMTM0XFwwMDBcXDE3NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDExXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDE0XFwwMDFcXDAxM1xcMDAwXFwwNDlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDU2XFwwMDBcXDExOFxcMDAwXFwwMDZcXDAwMFxcMTI5XFwwMDBcXDEzMFxcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMVxcMTM3XFwwMDBcXDAwMFxcMDAyXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFwxMzhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDAxNFxcMDAwXFwxMTBcXDAwMFxcMTA1XFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDE1XFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDMwXFwwMDBcXDA0OFxcMDAwXFwwMDhcXDAwMFxcMTE0XFwwMDBcXDIwOVxcMDAwXFwyMzZcXDAwMFxcMDAwXFwwMDFcXFxuICAgIFxcMDEzXFwwMDFcXDAyOVxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDE3XFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDAyNVxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzNVxcMDAwXFwwMjNcXDAwMFxcMDI3XFwwMDBcXDAxNlxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDM0XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMjBcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDQxXFwwMDBcXDAzN1xcMDAwXFwwNDhcXDAwMFxcMDA5XFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDdcXDAwMFxcMDYxXFwwMDBcXDA4NVxcMDAwXFwwNDhcXDAwMFxcMDM4XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDY3XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NlxcMDAwXFwxNDNcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwxNDRcXDAwMFxcXG4gICAgXFwxNDVcXDAwMFxcMTQ2XFwwMDBcXDA1NVxcMDAwXFwxNDhcXDAwMFxcMDU1XFwwMDBcXDE0OVxcMDAwXFwwNDhcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDE1MFxcMDAwXFxcbiAgICBcXDE1MVxcMDAwXFwxNjFcXDAwMFxcMDY2XFwwMDBcXDE1OFxcMDAwXFwwNTNcXDAwMFxcMTU5XFwwMDBcXDA1M1xcMDAwXFwxNjBcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMTY1XFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MlxcMDAwXFwxNjNcXDAwMFxcMTY2XFwwMDBcXDA5M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwxMDNcXDAwMFxcMTA4XFwwMDBcXDExNlxcMDAwXFxcbiAgICBcXDEzMlxcMDAwXFwxMzRcXDAwMFxcMTM1XFwwMDBcXDEyOFxcMDAwXFwxMzlcXDAwMFxcMTM0XFwwMDBcXDE2NFxcMDAwXFwwOTNcXDAwMFxcXG4gICAgXFwxNzFcXDAwMFxcMDc3XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDE3MlxcMDAwXFwxMTJcXDAwMFxcMTczXFwwMDBcXFxuICAgIFxcMTc0XFwwMDBcXDIxMFxcMDAwXFwyMjZcXDAwMFxcMjA4XFwwMDBcXDIxMVxcMDAwXFwyMTJcXDAwMFxcMDU5XFwwMDBcXDA4M1xcMDAwXFxcbiAgICBcXDEzNFxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTZcXDAwMFxcMjE4XFwwMDBcXDE0MVxcMDAwXFwyMTlcXDAwMFxcXG4gICAgXFwwOTNcXDAwMFxcMjIwXFwwMDBcXDIyMVxcMDAwXFwxMjNcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwyMjRcXDAwMFxcMTM2XFwwMDBcXFxuICAgIFxcMDk1XFwwMDBcXDIyNVxcMDAwXFwwMzVcXDAwMVxcMDY1XFwwMDFcXDIzNFxcMDAwXFwxNTVcXDAwMFxcMDA1XFwwMDFcXDA5N1xcMDAxXFxcbiAgICBcXDI1MFxcMDAwXFwyNTVcXDI1NVxcMjU0XFwwMDBcXDA1N1xcMDAxXFwwNjFcXDAwMVxcMDk1XFwwMDFcXDA3N1xcMDAwXFwwNDRcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDg4XFwwMDFcXDAwOVxcMDAxXFwwMjlcXDAwMVxcMDc2XFwwMDBcXDEyNFxcMDAwXFwwMzNcXDAwMVxcMDE4XFwwMDFcXFxuICAgIFxcMDc1XFwwMDBcXDA5OFxcMDAwXFwwMTlcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwODdcXDAwMVxcMTIwXFwwMDFcXDA4OVxcMDAxXFxcbiAgICBcXDA3NFxcMDAwXFwyMjVcXDAwMFxcMDUzXFwwMDFcXDEyMVxcMDAxXFwwNzNcXDAwMFxcMDkwXFwwMDFcXDA3MlxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOThcXDAwMFxcMTEzXFwwMDFcXDEyMlxcMDAwXFwwOTFcXDAwMVxcMDY0XFwwMDBcXDAwNFxcMDAxXFxcbiAgICBcXDA5M1xcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDE1NlxcMDAwXFwxMTJcXDAwMVxcMDk0XFwwMDFcXDA5NlxcMDAxXFwwOThcXDAwMVxcMDk5XFwwMDFcXDA0OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDEwMFxcMDAxXFwxNTdcXDAwMFxcXG4gICAgXFwxMDFcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMTgzXFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwwMjRcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMTAyXFwwMDFcXDEwM1xcMDAxXFwxMDVcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDEwNlxcMDAxXFwxMDdcXDAwMVxcMDQ4XFwwMDFcXDA0MFxcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDExMFxcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDExMVxcMDAxXFxcbiAgICBcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMTcxXFwwMDFcXDAzMVxcMDAxXFwxNzBcXDAwMVxcMDIzXFwwMDFcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDkyXFwwMDBcXDE2OFxcMDAxXFwwNjNcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwyNDhcXDAwMFxcMTY1XFwwMDFcXDI1MlxcMDAwXFxcbiAgICBcXDE2MlxcMDAxXFwwNTlcXDAwMVxcMDY5XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDI1NVxcMjU1XFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDM5XFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMTYzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDEyMFxcMDAwXFwwMDJcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwxNjZcXDAwMVxcMDU1XFwwMDFcXDE1M1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAwN1xcMDAxXFwxNjdcXDAwMVxcMTY0XFwwMDFcXDE2OVxcMDAxXFwwMTZcXDAwMVxcMTY0XFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDUxXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTM3XFwwMDFcXDE2NFxcMDAxXFwxNzJcXDAwMVxcMTg1XFwwMDFcXDEzNlxcMDAxXFwxNzNcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMTc0XFwwMDFcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA0NlxcMDAxXFxcbiAgICBcXDE3NVxcMDAxXFwxNzZcXDAwMVxcMTgwXFwwMDBcXDE2NFxcMDAxXFwxODRcXDAwMVxcMTgxXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTI0XFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMTkyXFwwMDFcXDE3OFxcMDAxXFxcbiAgICBcXDAyMVxcMDAxXFwxNzlcXDAwMVxcMDk3XFwwMDBcXDE5M1xcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFwxODNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMjE2XFwwMDFcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMTg0XFwwMDFcXDIxNlxcMDAxXFwyMDlcXDAwMVxcMDk3XFwwMDBcXFxuICAgIFxcMjIzXFwwMDFcXDA5N1xcMDAwXFwyMDhcXDAwMVxcMjMwXFwwMDFcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMjE5XFwwMDFcXDAzN1xcMDAxXFxcbiAgICBcXDIxNlxcMDAxXFwyMTdcXDAwMVxcMDAzXFwwMDJcXDIyMFxcMDAxXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwM1xcMDAyXFwwMDNcXDAwMlxcXG4gICAgXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIxNlxcMDAxXFxcbiAgICBcXDAwM1xcMDAyXFwxMjZcXDAwMVxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk3XFwwMDBcXDAwM1xcMDAyXFwyMThcXDAwMVxcMjUwXFwwMDFcXFxuICAgIFxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDEyNFxcMDAxXFwxMjRcXDAwMVxcMDk3XFwwMDBcXDAwM1xcMDAyXFxcbiAgICBcXDIyMVxcMDAxXFwwMDNcXDAwMlxcMjUzXFwwMDFcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMlxcMTk2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDIzNVxcMDAxXFwwMDNcXDAwMlxcXG4gICAgXFwyNDFcXDAwMVxcMDAzXFwwMDJcXDI1NVxcMDAxXFwyNDJcXDAwMVxcMDAzXFwwMDJcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjQ2XFwwMDFcXDEyOVxcMDAxXFwxMjlcXDAwMVxcXG4gICAgXFwyMjhcXDAwMVxcMDAzXFwwMDJcXDE5NlxcMDAxXFwwMDNcXDAwMlxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwMDNcXDAwMlxcMTk4XFwwMDFcXDAwM1xcMDAyXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDE5NlxcMDAxXFwyMzRcXDAwMVxcXG4gICAgXFwxMzRcXDAwMVxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMVxcMDAxXFwxNzdcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODhcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMjAxXFwwMDFcXDIyN1xcMDAxXFwwMDBcXDAwMFxcMTkxXFwwMDBcXDIwNlxcMDAxXFwxMjNcXDAwMVxcMTg5XFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxODlcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTVcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI0OFxcMDAxXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwyMDJcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMjZcXDAwMFxcMTk1XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA2XFwwMDBcXDIyMVxcMDAxXFwyMzlcXDAwMVxcXG4gICAgXFwyNTRcXDAwMVxcMDAwXFwwMDBcXDIwN1xcMDAwXFwyNDRcXDAwMVxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMDNcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMVxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjE3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIzMFxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODZcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTNcXDAwMVxcMDAwXFwwMDBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDAwMFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDIwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMjQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjM4XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDA3OFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA0XFwwMDFcXDA3M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMVxcMDAwXFwwMDBcXDA3MVxcMDAxXFwwNzZcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwODBcXDAwMVxcMTE5XFwwMDFcXDAwMFxcMDAwXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDA4MVxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA4M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTdcXDAwMVxcMDAwXFwwMDBcXDA3NVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxODVcXDAwMVxcMDAwXFwwMDBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyN1xcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyN1xcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTkxXFwwMDFcXDE0MlxcMDAxXFwxOTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0NlxcMDAxXFwxNDdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NlxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwxNTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc3XFwwMDFcXDE1MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNTZcXDAwMVxcMDAwXFwwMDBcXDE0OFxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTQ5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTM5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OFxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxODdcXDAwMVxcMDAwXFwwMDBcXDE2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTlcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE2MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg5XFwwMDFcXDAwMFxcMDAwXFwxODlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTk5XFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIxNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjExXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDU3XFwwMDBcXDI1NVxcMjU1XFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAzXFwwMDBcXDE2OVxcMDAwXFwxMzRcXDAwMFxcMTc0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTJcXDAwMVxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMTE1XFwwMDBcXDAwMFxcMDAwXFwxMjVcXDAwMFxcMTI5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDIzNlxcMDAxXFwxMzZcXDAwMFxcMjU1XFwwMDFcXDAzOFxcMDAwXFwyNTVcXDI1NVxcMDEwXFwwMDBcXDEzNlxcMDAwXFwxMDJcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDAwXFwwMDBcXDEwN1xcMDAwXFwxMDJcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMjlcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMjA4XFwwMDBcXDIzM1xcMDAwXFwyNTVcXDAwMFxcXG4gICAgXFwwMTJcXDAwMVxcMDE1XFwwMDBcXDAxN1xcMDAwXFwwNjBcXDAwMFxcMDExXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDI0XFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDM0XFwwMDBcXDAyMlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAxNFxcMDAwXFxcbiAgICBcXDAyN1xcMDAwXFwwMzNcXDAwMFxcMDE4XFwwMDBcXDAyM1xcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXDAxOVxcMDAwXFwwMzVcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDM2XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ1XFwwMDBcXDA0NlxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXDAxMVxcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFxcbiAgICBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg1XFwwMDBcXDE0MFxcMDAwXFwwNjBcXDAwMFxcMDEzXFwwMDBcXDE0M1xcMDAwXFxcbiAgICBcXDE0NFxcMDAwXFwxNDVcXDAwMFxcMDQ4XFwwMDBcXDE0N1xcMDAwXFwwNDhcXDAwMFxcMTQ4XFwwMDBcXDAzOVxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA2NVxcMDAwXFwwMzlcXDAwMFxcMTQ5XFwwMDBcXFxuICAgIFxcMTUwXFwwMDBcXDE1NlxcMDAwXFwwNjNcXDAwMFxcMTU3XFwwMDBcXDA1MVxcMDAwXFwxNThcXDAwMFxcMDUxXFwwMDBcXDE1OVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFxcbiAgICBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwxNTVcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYxXFwwMDBcXDE2MlxcMDAwXFwxNTVcXDAwMFxcMDkxXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTdcXDAwMFxcMDY4XFwwMDBcXDEwMlxcMDAwXFwxMDdcXDAwMFxcMTE1XFwwMDBcXFxuICAgIFxcMTMxXFwwMDBcXDEzM1xcMDAwXFwxMzNcXDAwMFxcMTI1XFwwMDBcXDEzOFxcMDAwXFwxMzNcXDAwMFxcMTYzXFwwMDBcXDA5NFxcMDAwXFxcbiAgICBcXDE2NVxcMDAwXFwwNjhcXDAwMFxcMTY2XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTcxXFwwMDBcXDExMVxcMDAwXFwxNzJcXDAwMFxcXG4gICAgXFwxNzNcXDAwMFxcMjA2XFwwMDBcXDIwM1xcMDAwXFwyMDdcXDAwMFxcMjEwXFwwMDBcXDIxMVxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMTMzXFwwMDBcXDIxMlxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTdcXDAwMFxcMTQwXFwwMDBcXDIxOFxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwyMTlcXDAwMFxcMjIwXFwwMDBcXDExOVxcMDAwXFwyMjFcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwxMzNcXDAwMFxcXG4gICAgXFwwOTFcXDAwMFxcMjAzXFwwMDBcXDAzNFxcMDAxXFwwNjJcXDAwMVxcMjMzXFwwMDBcXDE1MlxcMDAwXFwwMDFcXDAwMVxcMDgwXFwwMDFcXFxuICAgIFxcMjQ3XFwwMDBcXDA2MFxcMDAwXFwyNTFcXDAwMFxcMDU0XFwwMDFcXDA1OFxcMDAxXFwwODFcXDAwMVxcMDY4XFwwMDBcXDA0MVxcMDAxXFxcbiAgICBcXDA4MlxcMDAxXFwwODNcXDAwMVxcMDA2XFwwMDFcXDAyNlxcMDAxXFwwNjhcXDAwMFxcMTE5XFwwMDBcXDAzMFxcMDAxXFwwMTVcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMDk0XFwwMDBcXDAxNVxcMDAxXFwwODRcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwNzFcXDAwMVxcMDg4XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDIwM1xcMDAwXFwwNTBcXDAwMVxcMDcxXFwwMDFcXDA2OFxcMDAwXFwwODlcXDAwMVxcMDY4XFwwMDBcXDA2OFxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA5N1xcMDAwXFwwNzZcXDAwMVxcMTE5XFwwMDBcXDA5MFxcMDAxXFwwNjNcXDAwMFxcMDAxXFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMTUyXFwwMDBcXDA3NlxcMDAxXFwwOTNcXDAwMVxcMDk1XFwwMDFcXDA5N1xcMDAxXFwwOThcXDAwMVxcMDQ1XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk5XFwwMDFcXDE1MlxcMDAwXFxcbiAgICBcXDEwMFxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDAyMFxcMDAxXFwwNzZcXDAwMVxcMDY1XFwwMDBcXDAyMFxcMDAxXFwxMDFcXDAwMVxcMTAyXFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMTA1XFwwMDFcXDEwNlxcMDAxXFwwNDVcXDAwMVxcMDM2XFwwMDFcXDEwN1xcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMTEwXFwwMDFcXFxuICAgIFxcMDI2XFwwMDFcXDEyMVxcMDAxXFwxNTdcXDAwMVxcMDMwXFwwMDFcXDE1OFxcMDAxXFwwMjBcXDAwMVxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwOTFcXDAwMFxcMTU5XFwwMDFcXDA2MlxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDI0N1xcMDAwXFwxNjBcXDAwMVxcMjUxXFwwMDBcXFxuICAgIFxcMTYxXFwwMDFcXDA1OFxcMDAxXFwwNjhcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDk0XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMzZcXDAwMVxcMDQxXFwwMDFcXDA5N1xcMDAwXFwxNjJcXDAwMVxcXG4gICAgXFwxNjNcXDAwMVxcMTE5XFwwMDBcXDAwMVxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDE2NVxcMDAxXFwwNTRcXDAwMVxcMTUyXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDA2XFwwMDFcXDE2NlxcMDAxXFwxNjdcXDAwMVxcMTY4XFwwMDFcXDAxNVxcMDAxXFwxNjlcXDAwMVxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNTBcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxMzNcXDAwMVxcMTcwXFwwMDFcXDE3MVxcMDAxXFwxNTRcXDAwMVxcMTMzXFwwMDFcXDE3MlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzNcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDQ1XFwwMDFcXFxuICAgIFxcMTc0XFwwMDFcXDE3NVxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDFcXDE1NFxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxMjJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwxNDhcXDAwMVxcMTc3XFwwMDFcXFxuICAgIFxcMDIwXFwwMDFcXDE3OFxcMDAxXFwwOThcXDAwMFxcMTQ4XFwwMDFcXDE3OVxcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFxcbiAgICBcXDE4M1xcMDAxXFwyMTZcXDAwMVxcMTkzXFwwMDFcXDA5NVxcMDAwXFwxNTRcXDAwMVxcMjE2XFwwMDFcXDIwNVxcMDAxXFwwOThcXDAwMFxcXG4gICAgXFwyMjJcXDAwMVxcMDk1XFwwMDBcXDIwNVxcMDAxXFwyMjlcXDAwMVxcMDAxXFwwMDJcXDA5NVxcMDAwXFwyMThcXDAwMVxcMDM2XFwwMDFcXFxuICAgIFxcMjE1XFwwMDFcXDIxNVxcMDAxXFwwMDJcXDAwMlxcMjE4XFwwMDFcXDIxNVxcMDAxXFwwOTVcXDAwMFxcMDA0XFwwMDJcXDAwNVxcMDAyXFxcbiAgICBcXDIxNlxcMDAxXFwwOTVcXDAwMFxcMDA2XFwwMDJcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMjE1XFwwMDFcXFxuICAgIFxcMDA3XFwwMDJcXDEyMlxcMDAxXFwwMDhcXDAwMlxcMDA5XFwwMDJcXDAxMFxcMDAyXFwwMTFcXDAwMlxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOThcXDAwMFxcMDEyXFwwMDJcXDIxNVxcMDAxXFwyNDdcXDAwMVxcXG4gICAgXFwwMTNcXDAwMlxcMDE0XFwwMDJcXDA5OFxcMDAwXFwwMTVcXDAwMlxcMTI1XFwwMDFcXDEyOFxcMDAxXFwwOThcXDAwMFxcMDE2XFwwMDJcXFxuICAgIFxcMjIwXFwwMDFcXDAxN1xcMDAyXFwyNTFcXDAwMVxcMDE4XFwwMDJcXDAxOVxcMDAyXFwwMjBcXDAwMlxcMDk4XFwwMDBcXDEyMVxcMDAxXFxcbiAgICBcXDAyMVxcMDAyXFwxOTRcXDAwMVxcMDk4XFwwMDBcXDAyMlxcMDAyXFwwOThcXDAwMFxcMDk4XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjMxXFwwMDFcXDAyM1xcMDAyXFxcbiAgICBcXDIzOFxcMDAxXFwwMjRcXDAwMlxcMjUxXFwwMDFcXDIzOFxcMDAxXFwwMjVcXDAwMlxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNDNcXDAwMVxcMTI1XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDIyNFxcMDAxXFwwMjZcXDAwMlxcMTk3XFwwMDFcXDAyN1xcMDAyXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDAyOFxcMDAyXFwxOTRcXDAwMVxcMDI5XFwwMDJcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDMwXFwwMDJcXDAzMVxcMDAyXFwwMzJcXDAwMlxcMjAwXFwwMDFcXDIzMVxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk3XFwwMDFcXDE3NlxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwyNTVcXDI1NVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjI0XFwwMDFcXDI1NVxcMjU1XFwxODVcXDAwMFxcMjA1XFwwMDFcXDEyMlxcMDAxXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXFxuICAgIFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTNcXDAwMVxcMjQ3XFwwMDFcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OVxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDE5OVxcMDAwXFwxMjVcXDAwMVxcMTI4XFwwMDFcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFxcbiAgICBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDIwNFxcMDAwXFwxOTRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjIwXFwwMDFcXDIzOFxcMDAxXFxcbiAgICBcXDI1MVxcMDAxXFwyNTVcXDI1NVxcMTk5XFwwMDBcXDI0M1xcMDAxXFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNFxcMDAxXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwxOTdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjI4XFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXFxuICAgIFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NVxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXFxuICAgIFxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTkyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMTk5XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyMzdcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTE1XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNVxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcXG4gICAgXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcXG4gICAgXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFxcbiAgICBcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMTI2XFwwMDFcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI5XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxODRcXDAwMVxcMTM4XFwwMDFcXDE4NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcXG4gICAgXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNTZcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDE4NlxcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxOThcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMVxcMjU1XFwyNTVcXDE4N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxODZcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcXG4gICAgXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyMDFcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcmVhZF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIHRydWUgKVxuXG4jIDEwMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwMzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDE4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCBmYWxzZSApXG5cbiMgMTAzNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTAzOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBOdWxsIClcblxuIyAxMDQyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDQzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDE5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBuYW5cbiAgICAgICAgICAgICAgICBcbiMgMTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA1MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA1NCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgMTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgaW5maW5pdHlcbiAgICAgICAgICAgICAgICBcbiMgMjA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgXG4jIDIxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDIxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDIxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICBgU3RyaW5nIChmaW5pc2hfc3RyaW5nIHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgIFxuIyAyMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDg3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDg4IFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyAyMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAyMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgKVxuXG4jIDEwOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDIyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDIyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiApXG5cbiMgMTA5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCA5IC0+XG5cbiMgMjIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMjIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgKGZsb2F0X29mX3N0cmluZyAobGV4ZW1lIGxleGJ1ZikpXG4gICAgICAgICAgICAgICAgIFxuIyAyMjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMTEwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTEwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMCAtPlxuXG4jIDIzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICBgQXNzb2MgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTM1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTM2IFwibGliL3JlYWQubWxcIlxuICB8IDExIC0+XG5cbiMgMjU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDI1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgYExpc3QgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTU1IFwibGliL3JlYWQubWxcIlxuICB8IDEyIC0+XG5cbiMgMjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDI3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyAyNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBgVHVwbGUgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIFxuIyAyODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMTE3OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE3OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMyAtPlxuXG4jIDI5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgMjkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgY29ucyA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBgVmFyaWFudCAoY29ucywgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgIFxuIyAzMDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMTE5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNCAtPlxuXG4jIDMwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTE5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNSAtPlxuXG4jIDMwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDEyMDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTYgLT5cblxuIyAzMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDEyMDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTcgLT5cblxuIyAzMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDEyMTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTggLT5cblxuIyAzMDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMjE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjE4IFwibGliL3JlYWQubWxcIlxuICB8IDE5IC0+XG5cbiMgMzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG5cbiMgMTIyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgNThcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzMTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jb250ZW50cyB2LmJ1ZiApXG5cbiMgMTIzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxMjQwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjQxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxMjQ2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjQ3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEyNTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX3N0cmluZyB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgNjNcbmFuZCBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggbGV0IGIgPSB2LmJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICBmIChCdWZmZXIuY29udGVudHMgYikgMCAoQnVmZmVyLmxlbmd0aCBiKSApXG5cbiMgMTI2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuXG4jIDEyNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDMyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG5cbiMgMTI3NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI3NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMjgxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjgyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiA2OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIGNcblxuIyAxMjk0IFwibGliL3JlYWQubWxcIlxuIyAxMjk0IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cblxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmIGMgKVxuXG4jIDEyOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDMzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXGInIClcblxuIyAxMzAzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzA0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFwwMTInIClcblxuIyAxMzA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzA5IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJyApXG5cbiMgMTMxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgMzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xccicgKVxuXG4jIDEzMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDMzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHQnIClcblxuIyAxMzIzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzI0IFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cbmxldFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgYVxuXG4jIDEzMjkgXCJsaWIvcmVhZC5tbFwiXG4jIDEzMjkgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKVxuYW5kXG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuXG4jIDEzMzQgXCJsaWIvcmVhZC5tbFwiXG4jIDEzMzQgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcblxuIyAxMzM5IFwibGliL3JlYWQubWxcIlxuIyAxMzM5IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuXG4jIDEzNDQgXCJsaWIvcmVhZC5tbFwiXG4jIDEzNDQgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KSBpblxuXG4jIDMzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB4ID49IDB4RDgwMCAmJiB4IDw9IDB4REJGRiB0aGVuXG4gICAgICAgICAgICAgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWZcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIHV0Zjhfb2ZfY29kZSB2LmJ1ZiB4XG4gICAgICAgICApXG5cbiMgMTM1NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTM1NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgMzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBlc2NhcGUgc2VxdWVuY2VcIiB2IGxleGJ1ZiApXG5cbiMgMTM2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTM2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgMzQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMzY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzY2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiA4MlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIGFcblxuIyAxMzc4IFwibGliL3JlYWQubWxcIlxuIyAxMzc4IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiXG5cbiMgMTM4MyBcImxpYi9yZWFkLm1sXCJcbiMgMTM4MyBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcblxuIyAxMzg4IFwibGliL3JlYWQubWxcIlxuIyAxMzg4IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNClcbmFuZFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcblxuIyAxMzkzIFwibGliL3JlYWQubWxcIlxuIyAxMzkzIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNSkgaW5cblxuIyAzNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB5ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeSA+PSAweERDMDAgJiYgeSA8PSAweERGRkYgdGhlblxuICAgICAgICAgICAgIHV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgdi5idWYgeCB5XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCBsb3cgc3Vycm9nYXRlIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIlxuICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgIClcblxuIyAxNDA1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDA2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzNTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJNaXNzaW5nIGVzY2FwZSBzZXF1ZW5jZSByZXByZXNlbnRpbmcgbG93IHN1cnJvZ2F0ZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCIgdiBsZXhidWYgKVxuXG4jIDE0MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA5MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgICAgICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAobGVuKzEpIGluXG4gICAgICAgICAgIEJ5dGVzLnNldCBzIDAgJ1wiJztcbiAgICAgICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBzIDEgbGVuO1xuICAgICAgICAgICBCeXRlcy50b19zdHJpbmcgc1xuICAgICAgICAgKVxuXG4jIDE0MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG5cbiMgMTQzOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQzOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDQ0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMDJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9IHJlYWRfanNvbiB2IGxleGJ1ZiBpblxuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmO1xuICAgICAgICAgICBTb21lIHggKVxuXG4jIDE0NTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggTm9uZSApXG5cbiMgMTQ2MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ2NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ2OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ2OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDczIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDc0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2x0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIDEwN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMTQ4NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ4NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE0OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDM4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDk2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgMTExXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMTUwNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUwOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNTEyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTEzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzOTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE1MTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb21tYSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiAxMTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAxNTI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzOTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE1MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTUzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgMTE5XG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgRWRneV9icmFja2V0IClcblxuIyAxNTUxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTUyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgYERvdWJsZV9xdW90ZSApXG5cbiMgMTU1NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU1OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBTcXVhcmVfYnJhY2tldCApXG5cbiMgMTU2MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU2MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcsICdcXFwiJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE1NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNTcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTczIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgMTI1XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDE1ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1ODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuXG4jIDE1ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1OTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDE1OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1OTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDE1OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZW9mIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIDEzMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTYxMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYxMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE2MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIDEzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2MjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjMzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjM0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjM5IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjQ0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMTY0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiAxNDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoICgpIClcblxuIyAxNjYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjYxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ251bGwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNjY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjY2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjcxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsX2lmX3Bvc3NpYmxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgMTQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNjgyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjgzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTY4NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY4OCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYm9vbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIDE1MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE2OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTcwNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcwNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE3MDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQ0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTcxNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcxNSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAndHJ1ZScgb3IgJ2ZhbHNlJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTcxOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcyMCBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgNDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE3MjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgMTc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQ1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxNzM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzM5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTc0NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc0NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludGVnZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcblxuIyAxNzYzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzY0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludGVnZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE3NjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQ3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNzczIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzc0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDMyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIDE4NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQ3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50MzIub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE3ODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3ODggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50MzIub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDMyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG5cbiMgMTgwNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgwNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQzMiBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTgxMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgxMSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE4MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQ2NCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiAxOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDY0Lm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxODI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDY0Lm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQ2NCBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuXG4jIDE4NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDUxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDUxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50NjQgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE4NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDUxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDUxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxODU3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODU4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVtYmVyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiAxOTlcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5hbiApXG5cbiMgMTg2OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg3MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGluZmluaXR5IClcblxuIyAxODc0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODc1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmVnX2luZmluaXR5IClcblxuIyAxODc5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODgwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmxvYXRfb2Zfc3RyaW5nIChsZXhlbWUgbGV4YnVmKSApXG5cbiMgMTg4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNTIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgZmxvYXQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzLiAqKVxuICAgICAgICAgICAgICAgICAgICBmbG9hdF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJOYU5cIiAtPiBuYW5cbiAgICAgICAgICAgICAgICAgICAgICB8IFwiSW5maW5pdHlcIiAtPiBpbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXCItSW5maW5pdHlcIiAtPiBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhIG51bWJlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGEgbnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgIClcblxuIyAxOTA2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTA3IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA1MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIG51bWJlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTkxMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkxMiBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgNTM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE5MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiAyMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDE5MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1xcXCInIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTM1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTkzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiAyMzdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTk1MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk1MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5sZXRcblxuIyA1NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIHNcblxuIyAxOTU4IFwibGliL3JlYWQubWxcIlxuIyAxOTU4IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG5cbiMgNTUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHMgKVxuXG4jIDE5NjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDU1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTczIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9pZGVudCB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiAyNDJcbmFuZCBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG5cbiMgMTk4NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk4NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIG1hcF9sZXhlbWUgZiBsZXhidWYgKVxuXG4jIDE5OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU2MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU2MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDU2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMDAwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDAxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NlcXVlbmNlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG5cbiMgMjAyNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAyNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIwMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMDM2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDM3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgMjUxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG5cbiMgMjA2MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA2MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIwNjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwNjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMDcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDczIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiAyNTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDYwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDIwODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDYwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjA4OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA5MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiAyNTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMTAxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTAyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAyMTA2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTA3IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIxMTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDYwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMTE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjYyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDYxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA2MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgNjE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhcG9zICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIXBvcyAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICAgICAgXG4jIDYzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyMTUwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTUxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjE1NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE1NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIxNjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIDI2NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjE3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMTc3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTc4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiAyNjhcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIxOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjIwMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIwMSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMjA1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjA2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiAyNzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMjE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjE4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMjIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjIzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDY1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMjMyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjMzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIDI3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjI0NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI0NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjYyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjYyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjI1MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI1MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjI2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjY2IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA2NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjI3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIDI4MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG5cbiMgMjMwNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMwNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMzE0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzE1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGN1cmwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgMjg2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzI2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzI3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjMzMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMzMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIzMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiAyOTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMjM0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzUzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzU0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDI5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzY2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMjM3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzc2IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjM4MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM4MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgMjk3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzkzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjM5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0MDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3R1cGxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgMzAxXG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDI0MTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCB0cnVlIClcblxuIyAyNDE5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDIwIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0MjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDcyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDMwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9scGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgMzA2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI0NDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NDIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDQ2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDQ3IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ1MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ1MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcnBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIDMxMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNDYzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDY0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ2OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ2OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0NzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgMzE0XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDczOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjQ4NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ4NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDc0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDk2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgMzE4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUwNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUwOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI1MTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNTE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTE4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiAzMjJcbmFuZCBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDc1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTM1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDc1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU0NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU0NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNzU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTUwIFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA3NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDc1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI1NTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDc1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA3NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTY1IFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyA3NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOSAtPlxuXG4jIDc2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA3NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNTk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTk2IFwibGliL3JlYWQubWxcIlxuICB8IDEwIC0+XG5cbiMgNzg0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDc4NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjYxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjYxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMSAtPlxuXG4jIDc5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA3OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgODAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgXG4jIDgxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNjM2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjM3IFwibGliL3JlYWQubWxcIlxuICB8IDEyIC0+XG5cbiMgODE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA4MjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgODI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI2NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTMgLT5cblxuIyA4MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTQgLT5cblxuIyA4MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjYxIFwibGliL3JlYWQubWxcIlxuICB8IDE1IC0+XG5cbiMgODMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjY2IFwibGliL3JlYWQubWxcIlxuICB8IDE2IC0+XG5cbiMgODMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjcxIFwibGliL3JlYWQubWxcIlxuICB8IDE3IC0+XG5cbiMgODM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjY3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxOCAtPlxuXG4jIDgzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuXG4jIDI2ODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2ODEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiAzNzhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDI2OTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2OTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG5cbiMgMjY5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNzAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzAzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiAzODlcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZiApXG5cbiMgMjcxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMjcyMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcyMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjcyNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcyNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgODUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNzMxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzMyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgMzk0XG5hbmQgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjc0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNzQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzQ5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNzUzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzU0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA4NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjc1OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc1OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgMzk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDg3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG5cbiMgMjc3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgODcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyNzc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzc2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAneyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjgwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjgwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgODk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDg5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODIxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODIyIFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA5MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDkxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcoJztcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICBcbiMgOTMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDkzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgOTM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPCc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDk0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODYxIFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyA5NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDk0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDk1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODc5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODgwIFwibGliL3JlYWQubWxcIlxuICB8IDkgLT5cblxuIyA5NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4ODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTAgLT5cblxuIyA5NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyODg5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODkwIFwibGliL3JlYWQubWxcIlxuICB8IDExIC0+XG5cbiMgOTU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG5cbiMgMjg5NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg5NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDQ1MFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXCInO1xuICAgICAgICAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZlxuICAgICAgICAgKVxuXG4jIDI5MDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG5cbiMgMjkxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTE5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiA0NjFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JztcbiAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX2d0IHYgbGV4YnVmIClcblxuIyAyOTMzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTM0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuXG4jIDI5MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI5NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjk0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIDQ2NlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyOTYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTYxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5NzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuXG4jIDI5NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI5NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTc2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgNDcxXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAyOTkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTkxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAyOTk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTk5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMzAwNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAwNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgOTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDMwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcblxuIyAzMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDE5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIDQ3OFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JztcbiAgICAgIHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDMwMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMDM3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDM4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgNDgwXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuXG4jIDMwNDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7IHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDMwNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMDU5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDYwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMDY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDY1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIDQ4NVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMzA3NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA3NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDMwODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwODIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiA0ODdcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcblxuIyAzMDkzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDk0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDMwOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTAzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTA0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTA5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgNDkyXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7XG4gICAgICByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDMxMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMTI3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTI4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgNDk0XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG5cbiMgMzEzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJzsgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAzMTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTQ1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE0OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE1MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTAzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzE1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiA0OTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOicgKVxuXG4jIDMxNjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxNzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxNzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiA1MDNcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcblxuIyAzMTg4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTg5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE5MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE5NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTA0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiA1MDdcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIiovXCIgKVxuXG4jIDMyMTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG5cbiMgMzIxNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIxNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTA0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcblxuIyAzMjIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjIzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMzIyNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIyOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGp1bmsgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2p1bmtfcmVjIGxleGJ1ZiA1MTNcbmFuZCBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTA1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggTGV4aW5nLmxleGVtZSBsZXhidWYgKVxuXG4jIDMyMzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyNDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuXG4jIDEwNTUgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBcbiMgMTA1NiBcImxpYi9yZWFkLm1sbFwiXG4gIGxldCBfID0gKHJlYWRfanNvbiA6IGxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gdClcblxuICBsZXQgcmVhZF90ID0gcmVhZF9qc29uXG5cbiAgbGV0ICgpID1cbiAgICByZWFkX2p1bmsgOj0ganVua1xuXG4gIGxldCByZWFkX2ludDggdiBsZXhidWYgPVxuICAgIGxldCBuID0gcmVhZF9pbnQgdiBsZXhidWYgaW5cbiAgICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW5cbiAgICAgIGxleGVyX2Vycm9yIFwiSW50OCBvdmVyZmxvd1wiIHYgbGV4YnVmXG4gICAgZWxzZVxuICAgICAgY2hhcl9vZl9pbnQgblxuXG4gIGxldCByZWFkX2xpc3QgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBMaXN0LnJldiAocmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYpXG5cbiAgbGV0IGFycmF5X29mX3Jldl9saXN0IGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICBbXSAtPiBbfCB8XVxuICAgICAgfCB4IDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgICBsZXQgciA9IHJlZiB0bCBpblxuICAgICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgICAgYS4oaSkgPC0gTGlzdC5oZCAhcjtcbiAgICAgICAgICAgIHIgOj0gTGlzdC50bCAhclxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgYVxuXG4gIGxldCByZWFkX2FycmF5IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgbGV0IGwgPSByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiBpblxuICAgIGFycmF5X29mX3Jldl9saXN0IGxcblxuICAoKiBSZWFkIGEgSlNPTiBvYmplY3QsIHJlYWRpbmcgdGhlIGtleXMgaW50byBPQ2FtbCBzdHJpbmdzXG4gICAgIChwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgKilcbiAgbGV0IHJlYWRfZmllbGRzIHJlYWRfZmllbGQgaW5pdF9hY2MgdiA9XG4gICAgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9pZGVudCByZWFkX2ZpZWxkIGluaXRfYWNjIHZcblxuICBsZXQgZmluaXNoIHYgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgIGlmIG5vdCAocmVhZF9lb2YgbGV4YnVmKSB0aGVuXG4gICAgICBsb25nX2Vycm9yIFwiSnVuayBhZnRlciBlbmQgb2YgSlNPTiB2YWx1ZTpcIiB2IGxleGJ1ZlxuXG4gIGxldCBpbml0X2xleGVyID0gaW5pdF9sZXhlclxuXG4gIGxldCBmcm9tX2xleGJ1ZiB2ID8oc3RyZWFtID0gZmFsc2UpIGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcblxuICAgIGxldCB4ID1cbiAgICAgIGlmIHJlYWRfZW9mIGxleGJ1ZiB0aGVuXG4gICAgICAgIHJhaXNlIEVuZF9vZl9pbnB1dFxuICAgICAgZWxzZVxuICAgICAgICByZWFkX2pzb24gdiBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggdiBsZXhidWY7XG5cbiAgICB4XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIEVuZF9vZl9pbnB1dCAtPlxuICAgICAganNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIEVuZF9vZl9pbnB1dCAtPlxuICAgICAganNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgdHJ5XG4gICAgICBsZXQgeCA9IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyBpblxuICAgICAgY2xvc2VfaW4gaWM7XG4gICAgICB4XG4gICAgd2l0aCBlIC0+XG4gICAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICAgIHJhaXNlIGVcblxuICBleGNlcHRpb24gRmluYWxseSBvZiBleG4gKiBleG5cblxuICBsZXQgc2VxX2Zyb21fbGV4YnVmIHYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpIGxleGJ1ZiA9XG4gICAgbGV0IHN0cmVhbSA9IFNvbWUgdHJ1ZSBpblxuICAgIGxldCByZWMgZiAoKSA9XG4gICAgICB0cnkgU2VxLkNvbnMgKGZyb21fbGV4YnVmIHYgP3N0cmVhbSBsZXhidWYsIGYpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2lucHV0IC0+XG4gICAgICAgICAgICBmaW4gKCk7XG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgICAgKHRyeSBmaW4gKCkgd2l0aCBmaW5fZSAtPiByYWlzZSAoRmluYWxseSAoZSwgZmluX2UpKSk7XG4gICAgICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICBmXG5cbiAgbGV0IHNlcV9mcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiA/ZmluIGxleGJ1ZlxuXG4gIGxldCBzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgfmZpbiBsZXhidWZcblxuICB0eXBlIGpzb25fbGluZSA9IFsgYEpzb24gb2YgdCB8IGBFeG4gb2YgZXhuIF1cblxuICBsZXQgbGluZXNlcV9mcm9tX2NoYW5uZWxcbiAgICAgID9idWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpID9mbmFtZSA/bG51bToobG51bTAgPSAxKSBpYyA9XG4gICAgbGV0IGJ1ZiA9XG4gICAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSAoQnVmZmVyLmNyZWF0ZSAyNTYpXG4gICAgICAgIHwgU29tZSBfIC0+IGJ1ZlxuICAgIGluXG4gICAgbGV0IHJlYyBmIGxudW0gPSBmdW4gKCkgLT5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgbGluZSA9IGlucHV0X2xpbmUgaWMgaW5cbiAgICAgICAgU2VxLkNvbnMgKGBKc29uIChmcm9tX3N0cmluZyA/YnVmID9mbmFtZSB+bG51bSBsaW5lKSwgZiAobG51bSArIDEpKVxuICAgICAgd2l0aFxuICAgICAgICAgIEVuZF9vZl9maWxlIC0+IGZpbiAoKTsgU2VxLk5pbFxuICAgICAgICB8IGUgLT4gU2VxLkNvbnMgKGBFeG4gZSwgZiAobG51bSArIDEpKVxuICAgIGluXG4gICAgZiBsbnVtMFxuXG4gIGxldCBsaW5lc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsaW5lc2VxX2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gP2ZuYW1lID9sbnVtIGljXG5cbiAgbGV0IHByZXR0aWZ5ID9zdGQgcyA9XG4gICAgcHJldHR5X3RvX3N0cmluZyA/c3RkIChmcm9tX3N0cmluZyBzKVxuXG4gIGxldCBjb21wYWN0ID9zdGQgcyA9XG4gICAgdG9fc3RyaW5nIChmcm9tX3N0cmluZyBzKVxuXG5cbiMgMzQwOCBcImxpYi9yZWFkLm1sXCJcbiMgNjkgXCJ5b2pzb24uY3Bwby5tbFwiXG5tb2R1bGUgVXRpbCA9XG5zdHJ1Y3RcbiMgMSBcInV0aWwubWxcIlxuZXhjZXB0aW9uIFR5cGVfZXJyb3Igb2Ygc3RyaW5nICogdFxuXG5sZXQgdHlwZW9mID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgXyAtPiBcIm9iamVjdFwiXG4gIHwgYEJvb2wgXyAtPiBcImJvb2xcIlxuICB8IGBGbG9hdCBfIC0+IFwiZmxvYXRcIlxuICBcbiMgOCBcInV0aWwubWxcIlxuICB8IGBJbnQgXyAtPiBcImludFwiXG4gIFxuIyAxMCBcInV0aWwubWxcIlxuICB8IGBMaXN0IF8gLT4gXCJhcnJheVwiXG4gIHwgYE51bGwgLT4gXCJudWxsXCJcbiAgfCBgU3RyaW5nIF8gLT4gXCJzdHJpbmdcIlxuICB8IGBJbnRsaXQgXyAtPiBcImludGxpdFwiXG4gIHwgYEZsb2F0bGl0IF8gLT4gXCJmbG9hdGxpdFwiXG4gIFxuIyAxOCBcInV0aWwubWxcIlxuICB8IGBUdXBsZSBfIC0+IFwidHVwbGVcIlxuICB8IGBWYXJpYW50IF8gLT4gXCJ2YXJpYW50XCJcblxubGV0IHR5cGVyciBtc2cganMgPSByYWlzZSAoVHlwZV9lcnJvciAobXNnIF4gdHlwZW9mIGpzLCBqcykpXG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nICogdFxuXG5sZXQgYXNzb2MgbmFtZSBvYmogPSB0cnkgTGlzdC5hc3NvYyBuYW1lIG9iaiB3aXRoIE5vdF9mb3VuZCAtPiBgTnVsbFxuXG5sZXQgbWVtYmVyIG5hbWUgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gYXNzb2MgbmFtZSBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IG1lbWJlciAnXCIgXiBuYW1lIF4gXCInIG9mIG5vbi1vYmplY3QgdHlwZSBcIikganNcblxubGV0IHJlYyBwYXRoIGwgb2JqID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gU29tZSBvYmpcbiAgfCBrZXkgOjogbCAtPiAoXG4gICAgICBtYXRjaCBvYmogd2l0aFxuICAgICAgfCBgQXNzb2MgYXNzb2MgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Mga2V5IGFzc29jIHdpdGhcbiAgICAgICAgICB8IG9iaiAtPiBwYXRoIGwgb2JqXG4gICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IGluZGV4IGkgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMganMgLT5cbiAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICBsZXQgd3JhcHBlZF9pbmRleCA9IGlmIGkgPCAwIHRoZW4gbGVuICsgaSBlbHNlIGkgaW5cbiAgICAgIGlmIHdyYXBwZWRfaW5kZXggPCAwIHx8IHdyYXBwZWRfaW5kZXggPj0gbGVuIHRoZW5cbiAgICAgICAgcmFpc2UgKFVuZGVmaW5lZCAoXCJJbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG91dCBvZiBib3VuZHNcIiwganMpKVxuICAgICAgZWxzZSBMaXN0Lm50aCBsIHdyYXBwZWRfaW5kZXhcbiAgfCBqcyAtPlxuICAgICAgdHlwZXJyIChcIkNhbid0IGdldCBpbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG9mIG5vbi1hcnJheSB0eXBlIFwiKSBqc1xuXG5sZXQgbWFwIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gYExpc3QgKExpc3QubWFwIGYgbClcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBtYXAgZnVuY3Rpb24gb3ZlciBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgdG9fYXNzb2MgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gb2JqXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgb2JqZWN0LCBnb3QgXCIganNcblxubGV0IHRvX29wdGlvbiBmID0gZnVuY3Rpb24gYE51bGwgLT4gTm9uZSB8IHggLT4gU29tZSAoZiB4KVxubGV0IHRvX2Jvb2wgPSBmdW5jdGlvbiBgQm9vbCBiIC0+IGIgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sLCBnb3QgXCIganNcblxubGV0IHRvX2Jvb2xfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgQm9vbCBiIC0+IFNvbWUgYlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyID0gZnVuY3Rpb25cbiAgXG4jIDcwIFwidXRpbC5tbFwiXG4gIHwgYEludCBpIC0+IGZsb2F0IGlcbiAgXG4jIDczIFwidXRpbC5tbFwiXG4gIHwgYEZsb2F0IGYgLT4gZlxuICBcbiMgNzUgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyX29wdGlvbiA9IGZ1bmN0aW9uXG4gIFxuIyA3OSBcInV0aWwubWxcIlxuICB8IGBJbnQgaSAtPiBTb21lIChmbG9hdCBpKVxuICBcbiMgODIgXCJ1dGlsLm1sXCJcbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgXG4jIDg0IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgXG4jIDg5IFwidXRpbC5tbFwiXG4gIHwgYEZsb2F0IGYgLT4gZlxuICBcbiMgOTEgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdF9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgOTUgXCJ1dGlsLm1sXCJcbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgXG4jIDk3IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgXG4jIDEwMiBcInV0aWwubWxcIlxuICB8IGBJbnQgaSAtPiBpXG4gIFxuIyAxMDQgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50X29wdGlvbiA9IGZ1bmN0aW9uXG4gIFxuIyAxMDggXCJ1dGlsLm1sXCJcbiAgfCBgSW50IGkgLT4gU29tZSBpXG4gIFxuIyAxMTAgXCJ1dGlsLm1sXCJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIGBMaXN0IGwgLT4gbCB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGFycmF5LCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIFxuIyAxMTcgXCJ1dGlsLm1sXCJcbiAgfCBgU3RyaW5nIHMgLT4gc1xuICBcbiMgMTE5IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nLCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZ19vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgMTIzIFwidXRpbC5tbFwiXG4gIHwgYFN0cmluZyBzIC0+IFNvbWUgc1xuICBcbiMgMTI1IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZyBvciBudWxsLCBnb3QgXCIganNcblxubGV0IGNvbnZlcnRfZWFjaCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIGYgbFxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IGNvbnZlcnQgZWFjaCBlbGVtZW50IG9mIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCByZWMgcmV2X2ZpbHRlcl9tYXAgZiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZXZfZmlsdGVyX21hcCBmIGFjYyB0bFxuICAgICAgfCBTb21lIHkgLT4gcmV2X2ZpbHRlcl9tYXAgZiAoeSA6OiBhY2MpIHRsKVxuXG5sZXQgZmlsdGVyX21hcCBmIGwgPSBMaXN0LnJldiAocmV2X2ZpbHRlcl9tYXAgZiBbXSBsKVxuXG5sZXQgcmVjIHJldl9mbGF0dGVuIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYExpc3QgbDIgLT4gcmV2X2ZsYXR0ZW4gKExpc3QucmV2X2FwcGVuZCBsMiBhY2MpIHRsXG4gICAgICB8IF8gLT4gcmV2X2ZsYXR0ZW4gYWNjIHRsKVxuXG5sZXQgZmxhdHRlbiBsID0gTGlzdC5yZXYgKHJldl9mbGF0dGVuIFtdIGwpXG5cbmxldCBmaWx0ZXJfaW5kZXggaSBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgTGlzdCBsIC0+ICggdHJ5IFNvbWUgKExpc3QubnRoIGwgaSkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9saXN0IGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgTGlzdCBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxuXG5sZXQgZmlsdGVyX21lbWJlciBrIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBBc3NvYyBsIC0+ICggdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBsKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2Fzc29jIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQXNzb2MgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfYm9vbCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEJvb2wgeCAtPiBTb21lIHggfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfaW50IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICAgIGZ1bmN0aW9uXG4gICAgICBcbiMgMTcyIFwidXRpbC5tbFwiXG4gICAgICB8ICBgSW50IHggLT4gU29tZSB4XG4gICAgICBcbiMgMTc0IFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICAgICkgbFxuXG5sZXQgZmlsdGVyX2Zsb2F0IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgXG4jIDE4MSBcInV0aWwubWxcIlxuICAgICAgYEZsb2F0IHggLT4gU29tZSB4XG4gICAgICBcbiMgMTgzIFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9udW1iZXIgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICAgIFxuIyAxOTAgXCJ1dGlsLm1sXCJcbiAgICAgICAgYEludCB4IC0+IFNvbWUgKGZsb2F0IHgpXG4gICAgICBcbiMgMTkzIFwidXRpbC5tbFwiXG4gICAgICB8IGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgXG4jIDE5NSBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfc3RyaW5nIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBcbiMgMjAyIFwidXRpbC5tbFwiXG4gICAgICAgIGBTdHJpbmcgeCAtPiBTb21lIHhcbiAgICAgIFxuIyAyMDQgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQga2V5cyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChrZXksIF8pIC0+IGtleSlcblxubGV0IHZhbHVlcyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChfLCB2YWx1ZSkgLT4gdmFsdWUpXG5cbmxldCBjb21iaW5lIChmaXJzdCA6IHQpIChzZWNvbmQgOiB0KSA9XG4gIG1hdGNoIChmaXJzdCwgc2Vjb25kKSB3aXRoXG4gIHwgYEFzc29jIGEsIGBBc3NvYyBiIC0+IChgQXNzb2MgKGEgQCBiKSA6IHQpXG4gIHwgYSwgYiAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkV4cGVjdGVkIHR3byBvYmplY3RzLCBjaGVjayBpbnB1dHNcIilcbiMgNzIgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcbiMgNzkgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcblxubW9kdWxlIFJhdyA9XG5zdHJ1Y3RcbiMgMSBcInR5cGUubWxcIlxuKCoqIHszIFR5cGUgb2YgdGhlIEpTT04gdHJlZX0gKilcblxudHlwZSB0ID1cbiAgICBbXG4gICAgfCBgTnVsbFxuICAgIHwgYEJvb2wgb2YgYm9vbFxuICAgIFxuIyAxMSBcInR5cGUubWxcIlxuICAgIHwgYEludGxpdCBvZiBzdHJpbmdcbiAgICBcbiMgMTcgXCJ0eXBlLm1sXCJcbiAgICB8IGBGbG9hdGxpdCBvZiBzdHJpbmdcbiAgICBcbiMgMjMgXCJ0eXBlLm1sXCJcbiAgICB8IGBTdHJpbmdsaXQgb2Ygc3RyaW5nXG4gICAgXG4jIDI1IFwidHlwZS5tbFwiXG4gICAgfCBgQXNzb2Mgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICB8IGBMaXN0IG9mIHQgbGlzdFxuICAgIFxuIyAyOCBcInR5cGUubWxcIlxuICAgIHwgYFR1cGxlIG9mIHQgbGlzdFxuICAgIFxuIyAzMSBcInR5cGUubWxcIlxuICAgIHwgYFZhcmlhbnQgb2YgKHN0cmluZyAqIHQgb3B0aW9uKVxuICAgIFxuIyAzMyBcInR5cGUubWxcIlxuICAgIF1cbigqKlxuQWxsIHBvc3NpYmxlIGNhc2VzIGRlZmluZWQgaW4gWW9qc29uOlxuLSBgTnVsbDogSlNPTiBudWxsXG4tIGBCb29sIG9mIGJvb2w6IEpTT04gYm9vbGVhblxuLSBgSW50IG9mIGludDogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LlxuLSBgSW50bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgRmxvYXQgb2YgZmxvYXQ6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTi5cbi0gYEZsb2F0bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgU3RyaW5nIG9mIHN0cmluZzogSlNPTiBzdHJpbmcuIEJ5dGVzIGluIHRoZSByYW5nZSAxMjgtMjU1IGFyZSBwcmVzZXJ2ZWRcblx0ICAgIGFzLWlzIHdpdGhvdXQgZW5jb2RpbmcgdmFsaWRhdGlvbiBmb3IgYm90aCByZWFkaW5nXG5cdCAgICBhbmQgd3JpdGluZy5cbi0gYFN0cmluZ2xpdCBvZiBzdHJpbmc6IEpTT04gc3RyaW5nIGxpdGVyYWwgaW5jbHVkaW5nIHRoZSBkb3VibGUgcXVvdGVzLlxuLSBgQXNzb2Mgb2YgKHN0cmluZyAqIGpzb24pIGxpc3Q6IEpTT04gb2JqZWN0LlxuLSBgTGlzdCBvZiBqc29uIGxpc3Q6IEpTT04gYXJyYXkuXG4tIGBUdXBsZSBvZiBqc29uIGxpc3Q6IFR1cGxlIChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbKFwiYWJjXCIsIDEyMyldLlxuLSBgVmFyaWFudCBvZiAoc3RyaW5nICoganNvbiBvcHRpb24pOiBWYXJpYW50IChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbPFwiRm9vXCI+XSBvciBbPFwiQmFyXCI6MTIzPl0uXG4qKVxuXG4oKlxuICBOb3RlIHRvIGFkdmVudHVyZXJzOiBvY2FtbGRvYyBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBjb21tZW50c1xuICBvbiBlYWNoIHBvbHltb3JwaGljIHZhcmlhbnQsIGFuZCBjcHBvIGRvZXNuJ3QgYWxsb3cgdG8gY29uY2F0ZW5hdGVcbiAgY29tbWVudHMsIHNvIGl0IHdvdWxkIGJlIGNvbXBsaWNhdGVkIHRvIGRvY3VtZW50IG9ubHkgdGhlXG4gIGNhc2VzIHRoYXQgYXJlIHByZXNlcnZlZCBieSBjcHBvIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4qKVxuIyAxIFwid3JpdGUubWxcIlxuKCogaW5jbHVkZWQ6IHR5cGUubWwgKilcblxubGV0IGhleCBuID1cbiAgQ2hhci5jaHIgKFxuICAgIGlmIG4gPCAxMCB0aGVuIG4gKyA0OFxuICAgIGVsc2UgbiArIDg3XG4gIClcblxubGV0IHdyaXRlX3NwZWNpYWwgc3JjIHN0YXJ0IHN0b3Agb2Igc3RyID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN0cjtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IHdyaXRlX2NvbnRyb2xfY2hhciBzcmMgc3RhcnQgc3RvcCBvYiBjID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcXHUwMFwiO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbHNyIDQpKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxhbmQgMHhmKSk7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCBmaW5pc2hfc3RyaW5nIHNyYyBzdGFydCBvYiA9XG4gIHRyeVxuICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KVxuICB3aXRoIGV4YyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwic3JjPSVTIHN0YXJ0PSVpIGxlbj0laVxcbiUhXCJcbiAgICAgIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KTtcbiAgICByYWlzZSBleGNcblxubGV0IHdyaXRlX3N0cmluZ19ib2R5IG9iIHMgPVxuICBsZXQgc3RhcnQgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgJ1wiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgJ1xcXFwnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXFxcIlxuICAgICAgfCAnXFxiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxiXCJcbiAgICAgIHwgJ1xcMDEyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxmXCJcbiAgICAgIHwgJ1xcbicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcblwiXG4gICAgICB8ICdcXHInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHJcIlxuICAgICAgfCAnXFx0JyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFx0XCJcbiAgICAgIHwgJ1xceDAwJy4uJ1xceDFGJ1xuICAgICAgfCAnXFx4N0YnIGFzIGMgLT4gd3JpdGVfY29udHJvbF9jaGFyIHMgc3RhcnQgaSBvYiBjXG4gICAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgZmluaXNoX3N0cmluZyBzIHN0YXJ0IG9iXG5cbmxldCB3cml0ZV9zdHJpbmcgb2IgcyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9zdHJpbmdfYm9keSBvYiBzO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDEwIGluXG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHRlc3Rfc3RyaW5nICgpID1cbiAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGZvciBpID0gMCB0byAyNTUgZG9cbiAgICBCeXRlcy5zZXQgcyBpIChDaGFyLmNociBpKVxuICBkb25lO1xuICBqc29uX3N0cmluZ19vZl9zdHJpbmcgKEJ5dGVzLnRvX3N0cmluZyBzKVxuXG5cbmxldCB3cml0ZV9udWxsIG9iICgpID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpXG5cblxubGV0IG1heF9kaWdpdHMgPVxuICBtYXhcbiAgICAoU3RyaW5nLmxlbmd0aCAoc3RyaW5nX29mX2ludCBtYXhfaW50KSlcbiAgICAoU3RyaW5nLmxlbmd0aCAoc3RyaW5nX29mX2ludCBtaW5faW50KSlcblxubGV0IGRlYyBuID1cbiAgQ2hhci5jaHIgKG4gKyA0OClcblxubGV0IHJlYyB3cml0ZV9kaWdpdHMgcyB4ID1cbiAgaWYgeCA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IGQgPSB4IG1vZCAxMCBpblxuICAgIHdyaXRlX2RpZ2l0cyBzICh4IC8gMTApO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzIChkZWMgKGFicyBkKSlcblxubGV0IHdyaXRlX2ludCBvYiB4ID1cbiAgaWYgeCA+IDAgdGhlblxuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIGVsc2UgaWYgeCA8IDAgdGhlbiAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICctJztcbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICApXG4gIGVsc2VcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzAnXG5cblxubGV0IGpzb25fc3RyaW5nX29mX2ludCBpID1cbiAgc3RyaW5nX29mX2ludCBpXG5cblxuKCpcbiAgRW5zdXJlIHRoYXQgdGhlIGZsb2F0IGlzIG5vdCBwcmludGVkIGFzIGFuIGludC5cbiAgVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgSlNPTiwgYnV0IHVzZWZ1bCBpbiBvcmRlciB0byBndWFyYW50ZWVcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgZmxvYXRfbmVlZHNfcGVyaW9kIHMgPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICcwJy4uJzknIHwgJy0nIC0+ICgpXG4gICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggRXhpdCAtPlxuICAgIGZhbHNlXG5cbigqXG4gIEd1YXJhbnRlZXMgdGhhdCBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIGRpZ2l0cyBhcmUgcHJpbnRlZCBpbiBvcmRlciB0byBhbGxvd1xuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCB3cml0ZV9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbmxldCB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBsZXQgb3BlbiBQcmludGYgaW5cbiAgbGV0IHMgPVxuICAgIG1hdGNoIHNpZ25pZmljYW50X2ZpZ3VyZXMgd2l0aFxuICAgICAgICAxIC0+IHNwcmludGYgXCIlLjFnXCIgeFxuICAgICAgfCAyIC0+IHNwcmludGYgXCIlLjJnXCIgeFxuICAgICAgfCAzIC0+IHNwcmludGYgXCIlLjNnXCIgeFxuICAgICAgfCA0IC0+IHNwcmludGYgXCIlLjRnXCIgeFxuICAgICAgfCA1IC0+IHNwcmludGYgXCIlLjVnXCIgeFxuICAgICAgfCA2IC0+IHNwcmludGYgXCIlLjZnXCIgeFxuICAgICAgfCA3IC0+IHNwcmludGYgXCIlLjdnXCIgeFxuICAgICAgfCA4IC0+IHNwcmludGYgXCIlLjhnXCIgeFxuICAgICAgfCA5IC0+IHNwcmludGYgXCIlLjlnXCIgeFxuICAgICAgfCAxMCAtPiBzcHJpbnRmIFwiJS4xMGdcIiB4XG4gICAgICB8IDExIC0+IHNwcmludGYgXCIlLjExZ1wiIHhcbiAgICAgIHwgMTIgLT4gc3ByaW50ZiBcIiUuMTJnXCIgeFxuICAgICAgfCAxMyAtPiBzcHJpbnRmIFwiJS4xM2dcIiB4XG4gICAgICB8IDE0IC0+IHNwcmludGYgXCIlLjE0Z1wiIHhcbiAgICAgIHwgMTUgLT4gc3ByaW50ZiBcIiUuMTVnXCIgeFxuICAgICAgfCAxNiAtPiBzcHJpbnRmIFwiJS4xNmdcIiB4XG4gICAgICB8IF8gLT4gc3ByaW50ZiBcIiUuMTdnXCIgeFxuICBpblxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBqc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfc3RkX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIGpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIGpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX3N0ZF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAganNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAganNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgdGVzdF9mbG9hdCAoKSA9XG4gIGxldCBsID0gWyAwLjsgMS47IC0xLiBdIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiAyLiAqLiB4ICsuIDEuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4IC8uIHNxcnQgMi4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggKi4gc3FydCAzLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCBjb3MgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAqLiAxLjIzZTUwKSBsIGluXG4gIGxldCBsID0gbCBAIFsgaW5maW5pdHk7IG5lZ19pbmZpbml0eSBdIGluXG4gIExpc3QuaXRlciAoXG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzID0gUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHggaW5cbiAgICAgIGxldCB5ID0gZmxvYXRfb2Zfc3RyaW5nIHMgaW5cbiAgICAgIFByaW50Zi5wcmludGYgXCIlZyAlZyAlUyAlQlxcblwiIHggeSBzICh4ID0geSlcbiAgKVxuICAgIGxcblxuKCpcbmxldCAoKSA9IHRlc3RfZmxvYXQgKClcbiopXG5cbmxldCB3cml0ZV9pbnRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX2Zsb2F0bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9zdHJpbmdsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xuXG5sZXQgcmVjIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9zZXAgeDtcbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGl0ZXIyIGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBmX3NlcCBvYiA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyB3cml0ZV9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgXG4jIDI2NyBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDI3MyBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMjc5IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMjgxIFwid3JpdGUubWxcIlxuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9saXN0IG9iIGxcbiAgICBcbiMgMjg0IFwid3JpdGUubWxcIlxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfdHVwbGUgb2IgbFxuICAgIFxuIyAyODcgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfdmFyaWFudCBvYiBzIG9cblxuIyAyOTAgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuIyAzMDYgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKCc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcpJ1xuXG4jIDMxMyBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV92YXJpYW50IG9iIHMgbyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPCc7XG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICAobWF0Y2ggbyB3aXRoXG4gICAgICAgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICAgICAgIHdyaXRlX2pzb24gb2IgeFxuICApO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJz4nXG5cbiMgMzI1IFwid3JpdGUubWxcIlxubGV0IHdyaXRlX3QgPSB3cml0ZV9qc29uXG5cbmxldCByZWMgd3JpdGVfc3RkX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICBcbiMgMzM1IFwid3JpdGUubWxcIlxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzQxIFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAzNDcgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAzNDkgXCJ3cml0ZS5tbFwiXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9zdGRfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9zdGRfbGlzdCBvYiBsXG4gICAgXG4jIDM1MiBcIndyaXRlLm1sXCJcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3N0ZF90dXBsZSBvYiBsXG4gICAgXG4jIDM1NSBcIndyaXRlLm1sXCJcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG9cblxuIyAzNTggXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfc3RkX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX3N0ZF9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuIyAzNzkgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvID1cbiAgbWF0Y2ggbyB3aXRoXG4gICAgICBOb25lIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgICAgICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICAgIHdyaXRlX3N0ZF9qc29uIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG4jIDM5MSBcIndyaXRlLm1sXCJcbmxldCB0b19idWZmZXIgPyhzdWYgPSBcIlwiKSA/KHN0ZCA9IGZhbHNlKSBvYiB4ID1cbiAgaWYgc3RkIHRoZW5cbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGVsc2VcbiAgICB3cml0ZV9qc29uIG9iIHg7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN1ZlxuXG5sZXQgdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcIikgP3N0ZCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHRvX2NoYW5uZWwgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb2MgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19vdXRwdXQgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb3V0IHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgb3V0I291dHB1dCAoQnVmZmVyLmNvbnRlbnRzIG9iKSAwIChCdWZmZXIubGVuZ3RoIG9iKTtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19maWxlID9sZW4gP3N0ZCA/KHN1ZiA9IFwiXFxuXCIpIGZpbGUgeCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyB4O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5sZXQgc2VxX3RvX2J1ZmZlciA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Igc3QgPVxuICBTZXEuaXRlciAodG9fYnVmZmVyIH5zdWYgP3N0ZCBvYikgc3RcblxubGV0IHNlcV90b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIHN0ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgc2VxX3RvX2J1ZmZlciB+c3VmID9zdGQgb2Igc3Q7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgc2VxX3RvX2NoYW5uZWwgP2J1ZiA/KGxlbj0yMDk2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Mgc2VxID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICBTZXEuaXRlciAoZnVuIGpzb24gLT5cbiAgICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIGpzb247XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gICAgQnVmZmVyLmNsZWFyIG9iO1xuICApIHNlcVxuXG5sZXQgc2VxX3RvX2ZpbGUgP2xlbiA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgZmlsZSBzdCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2Mgc3Q7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cblxubGV0IHJlYyBzb3J0ID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgbGV0IGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCBzb3J0IHYpKSBsKSBpblxuICAgICAgYEFzc29jIChMaXN0LnN0YWJsZV9zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpIGwpXG4gIHwgYExpc3QgbCAtPlxuICAgICAgYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgXG4jIDQ4NSBcIndyaXRlLm1sXCJcbiAgfCBgVHVwbGUgbCAtPlxuICAgICAgYFR1cGxlIChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIFxuIyA0ODkgXCJ3cml0ZS5tbFwiXG4gIHwgYFZhcmlhbnQgKGssIFNvbWUgdikgYXMgeCAtPlxuICAgICAgbGV0IHYnID0gc29ydCB2IGluXG4gICAgICBpZiB2ID09IHYnIHRoZW4geFxuICAgICAgZWxzZVxuICAgICAgICBgVmFyaWFudCAoaywgU29tZSB2JylcbiAgXG4jIDQ5NSBcIndyaXRlLm1sXCJcbiAgfCB4IC0+IHhcbiMgOTAgXCJ5b2pzb24uY3Bwby5tbFwiXG5tb2R1bGUgUHJldHR5ID1cbnN0cnVjdFxuIyAxIFwicHJldHR5Lm1sXCJcbigqXG4gICBQcmV0dHktcHJpbnQgSlNPTiBkYXRhIGluIGFuIGF0dGVtcHQgdG8gbWF4aW1pemUgcmVhZGFiaWxpdHkuXG5cbiAgIDEuIFdoYXQgZml0cyBvbiBvbmUgbGluZSBzdGF5cyBvbiBvbmUgbGluZS5cbiAgIDIuIFdoYXQgZG9lc24ndCBmaXQgb24gb25lIGxpbmUgZ2V0cyBwcmludGVkIG1vcmUgdmVydGljYWxseSBzbyBhcyB0byBub3RcbiAgICAgIGV4Y2VlZCBhIHJlYXNvbmFibGUgcGFnZSB3aWR0aCwgaWYgcG9zc2libGUuXG5cbiAgIEFycmF5cyBjb250YWluaW5nIG9ubHkgc2ltcGxlIGVsZW1lbnRzIChcImF0b21zXCIpIGFyZSBwcmV0dHktcHJpbnRlZCB3aXRoXG4gICBlbmQtb2YtbGluZSB3cmFwcGluZyBsaWtlIG9yZGluYXJ5IHRleHQ6XG5cbiAgICAgW1xuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIixcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCJcbiAgICAgXVxuXG4gICBPdGhlciBhcnJheXMgYXJlIHByaW50ZWQgZWl0aGVyIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGV5IGZpdCBvbiBhIHNpbmdsZSBsaW5lOlxuXG4gICAgIFsgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSBdXG5cbiAgIG9yXG5cbiAgICAgW1xuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfVxuICAgICBdXG4qKVxuXG5sZXQgcHBfbGlzdCBzZXAgcHB4IG91dCBsID1cbiAgbGV0IHBwX3NlcCBvdXQgKCkgPSBGb3JtYXQuZnByaW50ZiBvdXQgXCIlc0AgXCIgc2VwIGluXG4gIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXAgcHB4IG91dCBsXG5cbmxldCBpc19hdG9tICh4OiBbPiB0XSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTnVsbFxuICB8IGBCb29sIF9cbiAgfCBgSW50IF9cbiAgfCBgRmxvYXQgX1xuICB8IGBTdHJpbmcgX1xuICB8IGBJbnRsaXQgX1xuICB8IGBGbG9hdGxpdCBfXG4gIHwgYFN0cmluZ2xpdCBfXG4gIHwgYExpc3QgW11cbiAgfCBgQXNzb2MgW11cbiAgfCBgVHVwbGUgW11cbiAgfCBgVmFyaWFudCAoXywgTm9uZSkgLT4gdHJ1ZVxuICB8IGBMaXN0IF9cbiAgfCBgQXNzb2MgX1xuICB8IGBUdXBsZSBfXG4gIHwgYFZhcmlhbnQgKF8sIFNvbWUgXykgLT4gZmFsc2VcblxubGV0IGlzX2F0b21fbGlzdCBsID1cbiAgTGlzdC5mb3JfYWxsIGlzX2F0b20gbFxuXG4oKlxuICAgaW5zaWRlX2JveDogaW5kaWNhdGVzIHRoYXQgd2UncmUgYWxyZWFkeSB3aXRoaW4gYSBib3ggdGhhdCBpbXBvc2VzXG4gICBhIGNlcnRhaW4gc3R5bGUgYW5kIHdlIHNob3VsZG4ndCBjcmVhdGUgYSBuZXcgb25lLiBUaGlzIGlzIHVzZWQgZm9yXG4gICBwcmludGluZyBmaWVsZCB2YWx1ZXMgbGlrZSB0aGlzOlxuXG4gICAgIGZvbzogW1xuICAgICAgIGJhclxuICAgICBdXG5cbiAgIHJhdGhlciB0aGFuIHNvbWV0aGluZyBlbHNlIGxpa2VcblxuICAgICBmb286XG4gICAgICAgW1xuICAgICAgICAgYmFyXG4gICAgICAgXVxuKilcbmxldCByZWMgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCAob3V0OkZvcm1hdC5mb3JtYXR0ZXIpICh4OnQpIDogdW5pdCA9XG4gIG1hdGNoIHggd2l0aFxuICAgIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJudWxsXCJcbiAgICB8IGBCb29sIHggLT4gRm9ybWF0LnBwX3ByaW50X2Jvb2wgb3V0IHhcbiAgICBcbiMgOTIgXCJwcmV0dHkubWxcIlxuICAgIHwgYEludGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICBcbiMgOTUgXCJwcmV0dHkubWxcIlxuICAgIHwgYEZsb2F0bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIFxuIyA5OCBcInByZXR0eS5tbFwiXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIFxuIyAxMDAgXCJwcmV0dHkubWxcIlxuICAgIHwgYExpc3QgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJbXVwiXG4gICAgfCBgTGlzdCBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIGlmIGlzX2F0b21fbGlzdCBsIHRoZW5cbiAgICAgICAgKCogdXNlIGxpbmUgd3JhcHBpbmcgbGlrZSB3ZSB3b3VsZCBkbyBmb3IgYSBwYXJhZ3JhcGggb2YgdGV4dCAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGhvdj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGxcbiAgICAgIGVsc2VcbiAgICAgICAgKCogcHJpbnQgdGhlIGVsZW1lbnRzIGhvcml6b250YWxseSBpZiB0aGV5IGZpdCBvbiB0aGUgbGluZSxcbiAgICAgICAgICAgb3RoZXJ3aXNlIHByaW50IHRoZW0gaW4gYSBjb2x1bW4gKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxodj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgQXNzb2MgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJ7fVwiXG4gICAgfCBgQXNzb2MgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJ7QDs8MSAwPiVhQDs8MSAtMj59XCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdF9maWVsZCBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIFxuIyAxMTkgXCJwcmV0dHkubWxcIlxuICAgIHwgYFR1cGxlIGwgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgbClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGlmIGwgPSBbXSB0aGVuXG4gICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIigpXCJcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aG92Mj5cIjtcbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIihALCVhQDs8MCAtMj4pXCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgICAgICAgIClcbiAgICBcbiMgMTMyIFwicHJldHR5Lm1sXCJcbiAgICB8IGBWYXJpYW50IChzLCBOb25lKSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIFxuIyAxMzcgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmdsaXQgcyBpblxuICAgICAgICAgIFxuIyAxMzkgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IHJlcHJlc2VudGF0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8JXM+XCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuXG4gICAgfCBgVmFyaWFudCAocywgU29tZSB4KSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIFxuIyAxNDggXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmdsaXQgcyBpblxuICAgICAgICAgIFxuIyAxNTAgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBbIHJlcHJlc2VudGF0aW9uOyB4IF0pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgb3AgPSBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyBpblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjxAWzxodjI+JXM6ICVhQF0+XCIgb3AgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG4jIDE1NiBcInByZXR0eS5tbFwiXG5hbmQgZm9ybWF0X2ZpZWxkIHN0ZCBvdXQgKG5hbWUsIHgpID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVzOiAlYUBdXCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBuYW1lKSAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmxldCBwcCA/KHN0ZCA9IGZhbHNlKSBvdXQgeCA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lYUBdXCIgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgKHggOj4gdClcblxubGV0IHRvX3N0cmluZyA/c3RkIHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChwcCA/c3RkKSB4XG5cbmxldCB0b19jaGFubmVsID9zdGQgb2MgeCA9XG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVhQD9cIiAocHAgP3N0ZCkgeFxuIyA5MyBcInlvanNvbi5jcHBvLm1sXCJcbmVuZFxuIyAxIFwibW9ub21vcnBoaWMubWxcIlxubGV0IHJlYyBwcCBmbXQgPVxuICBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiYE51bGxcIlxuICB8IGBCb29sIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQm9vbCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVCXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMTUgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEludGxpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMjcgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEZsb2F0bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDM5IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBTdHJpbmdsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmdsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDQ0IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBBc3NvYyB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBBc3NvYyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIChrZXksIHZhbHVlKSAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIga2V5O1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgICAgICAgIHBwIGZtdCB2YWx1ZTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBMaXN0IHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYExpc3QgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCB4IC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgcHAgZm10IHg7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDcxIFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBUdXBsZSB0dXAgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVHVwbGUgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCBlIC0+XG4gICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICAgcHAgZm10IGU7XG4gICAgICAgICAgIHRydWUpIGZhbHNlIHR1cCk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgODQgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBWYXJpYW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBuYW1lO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgIChtYXRjaCB2YWx1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25lXCJcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKFNvbWUgXCI7XG4gICAgICAgIHBwIGZtdCB4O1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIilcIik7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxuIyA5OSBcIm1vbm9tb3JwaGljLm1sXCJcbmxldCBzaG93IHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwIHhcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBgTnVsbCwgYE51bGwgLT4gdHJ1ZVxuICB8IGBCb29sIGEsIGBCb29sIGIgLT4gYSA9IGJcbiAgICBcbiMgMTEwIFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEludGxpdCBhLCBgSW50bGl0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTE2IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEZsb2F0bGl0IGEsIGBGbG9hdGxpdCBiIC0+IGEgPSBiXG4gICAgXG4jIDEyMiBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBTdHJpbmdsaXQgYSwgYFN0cmluZ2xpdCBiIC0+IGEgPSBiXG4gICAgXG4jIDEyNCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBBc3NvYyB4cywgYEFzc29jIHlzIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXlzID0gZnVuIChrZXksIF8pIChrZXknLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBrZXkga2V5JyBpblxuICAgICAgbGV0IHhzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeHMgaW5cbiAgICAgIGxldCB5cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHlzIGluXG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiAoZnVuIChrZXksIHZhbHVlKSAoa2V5JywgdmFsdWUnKSAtPlxuICAgICAgICBtYXRjaCBrZXkgPSBrZXknIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgICB8IHRydWUgLT4gZXF1YWwgdmFsdWUgdmFsdWUnKSB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIFxuIyAxMzcgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgVHVwbGUgeHMsIGBUdXBsZSB5c1xuICAgIFxuIyAxMzkgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgXG4jIDE0NiBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSksIGBWYXJpYW50IChuYW1lJywgdmFsdWUnKSAtPlxuICAgICAgKG1hdGNoIG5hbWUgPSBuYW1lJyB3aXRoXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgbWF0Y2ggdmFsdWUsIHZhbHVlJyB3aXRoXG4gICAgICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICBcbiMgMTU1IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgXyAtPiBmYWxzZVxuIyAxIFwid3JpdGUyLm1sXCJcbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4jIDEgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBcbiMgMiBcImxpYi9yZWFkLm1sbFwiXG4gIG1vZHVsZSBMZXhpbmcgPVxuICAgICgqXG4gICAgICBXZSBvdmVycmlkZSBMZXhpbmcuZW5naW5lIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IHBvc2l0aW9uXG4gICAgICByZWNvcmQgZWFjaCB0aW1lIGEgcnVsZSBpcyBtYXRjaGVkLlxuICAgICAgVGhpcyByZWR1Y2VzIHRvdGFsIHBhcnNpbmcgdGltZSBieSBhYm91dCAzMSUuXG4gICAgKilcbiAgc3RydWN0XG4gICAgaW5jbHVkZSBMZXhpbmdcblxuICAgIGV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcblxuICAgIGxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gICAgICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICAgICAgKCpcbiAgICAgIGlmIHJlc3VsdCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgICAgIGVuZDtcbiAgICAgICopXG4gICAgICByZXN1bHRcbiAgZW5kXG5cbiAgb3BlbiBQcmludGZcbiAgb3BlbiBMZXhpbmdcblxuICAoKiBzZWUgZGVzY3JpcHRpb24gaW4gY29tbW9uLm1saSAqKVxuICB0eXBlIGxleGVyX3N0YXRlID0gTGV4ZXJfc3RhdGUudCA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgZGVjIGMgPVxuICAgIENoYXIuY29kZSBjIC0gNDhcblxuICBsZXQgaGV4IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnMCcuLic5JyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG4gICAgICB8ICdhJy4uJ2YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKyAxMFxuICAgICAgfCAnQScuLidGJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgMTBcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgY3VzdG9tX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQgb2ZmcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyAtIDEgaW5cbiAgICBsZXQgYm9sID0gdi5ib2wgaW5cbiAgICBsZXQgcG9zMSA9IG9mZnMgKyBsZXhidWYubGV4X3N0YXJ0X3BvcyAtIGJvbCAtIDEgaW5cbiAgICBsZXQgcG9zMiA9IG1heCBwb3MxIChvZmZzICsgbGV4YnVmLmxleF9jdXJyX3BvcyAtIGJvbCkgaW5cbiAgICBsZXQgZmlsZV9saW5lID1cbiAgICAgIG1hdGNoIHYuZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gXCJMaW5lXCJcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIHNwcmludGYgXCJGaWxlICVzLCBsaW5lXCIgc1xuICAgIGluXG4gICAgbGV0IGJ5dGVzID1cbiAgICAgIGlmIHBvczEgPSBwb3MyIHRoZW5cbiAgICAgICAgc3ByaW50ZiBcImJ5dGUgJWlcIiAocG9zMSsxKVxuICAgICAgZWxzZVxuICAgICAgICBzcHJpbnRmIFwiYnl0ZXMgJWktJWlcIiAocG9zMSsxKSAocG9zMisxKVxuICAgIGluXG4gICAgbGV0IG1zZyA9IHNwcmludGYgXCIlcyAlaSwgJXM6XFxuJXNcIiBmaWxlX2xpbmUgdi5sbnVtIGJ5dGVzIGRlc2NyIGluXG4gICAganNvbl9lcnJvciBtc2dcblxuXG4gIGxldCBsZXhlcl9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoc3ByaW50ZiBcIiVzICclcydcIiBkZXNjciAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgcmVhZF9qdW5rID0gcmVmIChmdW4gXyAtPiBhc3NlcnQgZmFsc2UpXG5cbiAgbGV0IGxvbmdfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGxldCBqdW5rID0gTGV4aW5nLmxleGVtZSBsZXhidWYgaW5cbiAgICBsZXQgZXh0cmFfanVuayA9ICFyZWFkX2p1bmsgbGV4YnVmIGluXG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoc3ByaW50ZiBcIiVzICclcyVzJ1wiIGRlc2NyIGp1bmsgZXh0cmFfanVuaylcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IG1pbjEwID0gbWluX2ludCAvIDEwIC0gKGlmIG1pbl9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuICBsZXQgbWF4MTAgPSBtYXhfaW50IC8gMTAgKyAoaWYgbWF4X2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG5cbiAgZXhjZXB0aW9uIEludF9vdmVyZmxvd1xuXG4gIGxldCBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWYgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA+PSBtYXgxMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gKyBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgICBcbiMgMTA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgYEludGxpdCAobGV4ZW1lIGxleGJ1ZilcblxuICBcbiMgMTEzIFwibGliL3JlYWQubWxsXCJcbiAgbGV0IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZiA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyAxIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA8PSBtaW4xMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gLSBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA+IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgICBcbiMgMTM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgYEludGxpdCAobGV4ZW1lIGxleGJ1ZilcblxuXG4gIFxuIyAxNDEgXCJsaWIvcmVhZC5tbGxcIlxuICBsZXQgc2V0X2ZpbGVfbmFtZSB2IGZuYW1lID1cbiAgICB2LmZuYW1lIDwtIGZuYW1lXG5cbiAgbGV0IG5ld2xpbmUgdiBsZXhidWYgPVxuICAgIHYubG51bSA8LSB2LmxudW0gKyAxO1xuICAgIHYuYm9sIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3NcblxuICBsZXQgYWRkX2xleGVtZSBidWYgbGV4YnVmID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgQnVmZmVyLmFkZF9zdWJieXRlcyBidWYgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbiAgbGV0IG1hcF9sZXhlbWUgZiBsZXhidWYgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBmIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlbikgMCBsZW5cblxuICB0eXBlIHZhcmlhbnRfa2luZCA9IFsgYEVkZ3lfYnJhY2tldCB8IGBTcXVhcmVfYnJhY2tldCB8IGBEb3VibGVfcXVvdGUgXVxuICB0eXBlIHR1cGxlX2tpbmQgPSBbIGBQYXJlbnRoZXNpcyB8IGBTcXVhcmVfYnJhY2tldCBdXG5cblxuIyAxNjEgXCJsaWIvcmVhZC5tbFwiXG4jIDE2MSBcImxpYi9yZWFkLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIzNlxcMjU1XFwyMzdcXDI1NVxcMDAzXFwwMDBcXDIzOVxcMjU1XFwwMTZcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNDlcXDI1NVxcMDg1XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NFxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDI1M1xcMjU1XFwwMTFcXDAwMFxcMjUyXFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjUxXFwyNTVcXDAyMVxcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDIyXFwwMDBcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIyXFwwMDBcXDAxMlxcMDAwXFwwMDhcXDAwMFxcMjUwXFwyNTVcXFxuICAgIFxcMTE5XFwwMDBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTYxXFwwMDBcXDE3MVxcMDAwXFwxODFcXDAwMFxcMTkzXFwwMDBcXDIwOVxcMDAwXFxcbiAgICBcXDI0MFxcMjU1XFwwMTFcXDAwMFxcMDM4XFwwMDBcXDI1MlxcMjU1XFwwNjVcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMTBcXDAwMFxcXG4gICAgXFwyNTJcXDI1NVxcMTYzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjM0XFwwMDBcXDI0N1xcMjU1XFwyNDhcXDI1NVxcMDQ4XFwwMDFcXFxuICAgIFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDEyNlxcMDAxXFxcbiAgICBcXDE0OVxcMDAxXFwyNDlcXDI1NVxcMDM5XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDM4XFwwMDBcXDE4N1xcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNDhcXDAwMVxcMDE1XFwwMDJcXDI1NVxcMjU1XFwyMjBcXDAwMFxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMDM5XFwwMDJcXFxuICAgIFxcMTA5XFwwMDJcXDAxNFxcMDAxXFwwODhcXDAwMlxcMTY0XFwwMDJcXDE4N1xcMDAyXFwyMjVcXDAwMlxcMDEzXFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDFcXFxuICAgIFxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDFcXDAwNVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwwMjNcXDAwMFxcMjU0XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDUzXFwwMDBcXDA0OFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAxXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDEzN1xcMDAwXFwxMDRcXDAwMFxcMDg5XFwwMDBcXDA4OFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDBcXDEzN1xcMDAwXFwxNzdcXDAwMFxcMjU0XFwyNTVcXDE4M1xcMDAwXFwxNjhcXDAwMFxcMTY2XFwwMDBcXFxuICAgIFxcMTgzXFwwMDBcXDAwMlxcMDAwXFwyNTNcXDI1NVxcMTc3XFwwMDBcXDE3MlxcMDAwXFwxODdcXDAwMFxcMDA0XFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDA1M1xcMDAyXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwxMDNcXDAwMVxcMjU1XFwyNTVcXDI0OFxcMDAyXFwyNTRcXDI1NVxcXG4gICAgXFwwMDZcXDAwM1xcMDMwXFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwM1xcMDUwXFwwMDNcXFxuICAgIFxcMDc0XFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwM1xcMDg0XFwwMDNcXDEwOFxcMDAzXFxcbiAgICBcXDI0OVxcMjU1XFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI0NFxcMDAwXFwxMjBcXDAwM1xcMTQyXFwwMDNcXDE3OVxcMDAwXFwxOTRcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDE5MFxcMDAwXFwxODhcXDAwMFxcMTg3XFwwMDBcXDE5M1xcMDAwXFwxODNcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDE5MVxcMDAwXFwyMDFcXDAwMFxcMjAwXFwwMDBcXDE5NlxcMDAwXFwyMDNcXDAwMFxcMTkzXFwwMDBcXDE4OVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwxNTdcXDAwM1xcMDk1XFwwMDNcXDE3NFxcMDAzXFwxOTZcXDAwM1xcMjA2XFwwMDNcXDIxNlxcMDAzXFwyMjhcXDAwM1xcXG4gICAgXFwyMzlcXDAwM1xcMDYwXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMDg3XFwwMDRcXDI1NVxcMjU1XFwxNDVcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjFcXDAwNFxcMjU1XFwyNTVcXDIyOVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzMVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE4XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjBcXDAwMVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIwOFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMTFcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODlcXDAwMFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDk1XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzNcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjIyXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDVcXDIzN1xcMjU1XFwyMzhcXDI1NVxcMDEwXFwwMDBcXDI0MFxcMjU1XFwwNDRcXDAwMVxcXG4gICAgXFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMDYxXFwwMDFcXDAwMlxcMDA0XFwyNDlcXDI1NVxcMDQ1XFwwMDVcXFxuICAgIFxcMjA5XFwwMDBcXDIyOFxcMDAwXFwyMTFcXDAwMFxcMjMyXFwwMDBcXDIyNVxcMDAwXFwyMjNcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIzNVxcMDAwXFwyMzRcXDAwMFxcMDA4XFwwMDFcXDI1NFxcMjU1XFwwMDRcXDAwMVxcMDIzXFwwMDFcXDI1M1xcMjU1XFwwNTRcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMDMxXFwwMDFcXDAyOVxcMDAxXFwwMzJcXDAwMVxcMDM5XFwwMDFcXDA0OVxcMDAxXFwwNDVcXDAwMVxcMjUxXFwyNTVcXFxuICAgIFxcMDU3XFwwMDFcXDA4MlxcMDAxXFwwODBcXDAwMVxcMDc4XFwwMDFcXDA4NFxcMDAxXFwwNzRcXDAwMVxcMDg2XFwwMDFcXDI1MFxcMjU1XFxcbiAgICBcXDExMFxcMDA1XFwwMTJcXDAwNFxcMTIzXFwwMDVcXDE1NVxcMDA1XFwxNjVcXDAwNVxcMTc3XFwwMDVcXDE4N1xcMDA1XFwxOTdcXDAwNVxcXG4gICAgXFwyNDFcXDI1NVxcMTk5XFwwMDFcXDA3N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDE1NFxcMDAyXFwyMjJcXDAwNVxcMjA5XFwwMDVcXFxuICAgIFxcMTU1XFwwMDJcXDIzOVxcMDA1XFwwNTNcXDAwNlxcMDc2XFwwMDZcXDExNFxcMDA2XFwwMTZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTUyXFwwMDZcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjI3XFwwMDZcXDI1NVxcMjU1XFwwODVcXDAwN1xcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAxMVxcMDAwXFwyNDdcXDI1NVxcMDc2XFwwMDJcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzFcXDAwMlxcMjQzXFwwMDVcXDA1MVxcMDA3XFwxMDBcXDAwMVxcMTE1XFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMThcXDAwMVxcMTU0XFwwMDFcXDE3MVxcMDAxXFwyNTVcXDI1NVxcMTczXFwwMDFcXDE3NlxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg3XFwwMDFcXDI1M1xcMDAxXFwyMzBcXDAwMVxcMjMwXFwwMDFcXDIzNFxcMDAxXFwyNDdcXDAwMVxcMjM3XFwwMDFcXFxuICAgIFxcMjM0XFwwMDFcXDAwOVxcMDAyXFwwMTlcXDAwMlxcMDE5XFwwMDJcXDAxNVxcMDAyXFwwMjFcXDAwMlxcMDExXFwwMDJcXDAwN1xcMDAyXFxcbiAgICBcXDE0MlxcMDA2XFwxNTJcXDAwNlxcMTE2XFwwMDdcXDE3MFxcMDA3XFwxODBcXDAwN1xcMTkwXFwwMDdcXDIwMFxcMDA3XFwyMTBcXDAwN1xcXG4gICAgXFwyNDhcXDI1NVxcMTIwXFwwMDJcXDE2N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDIxNlxcMDAyXFwwODJcXDAwN1xcMjIwXFwwMDdcXFxuICAgIFxcMjM2XFwwMDJcXDI0NFxcMDA3XFwwNThcXDAwOFxcMDgxXFwwMDhcXDExOVxcMDA4XFwwNzZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTU3XFwwMDhcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjMyXFwwMDhcXDI1NVxcMjU1XFwxMzVcXDAwMlxcXG4gICAgXFwxMjBcXDAwMlxcMjUzXFwyNTVcXDEwMFxcMDAyXFwyNTRcXDI1NVxcMTgyXFwwMDJcXDI1NVxcMjU1XFwwMTFcXDAwMlxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMlxcMjU1XFwyNTVcXDE3OFxcMDAyXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMjU1XFwyNTVcXDE4M1xcMDAyXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMlxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIxXFwwMDJcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxNDBcXDAwMVxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwxNTBcXDAwMVxcMTUxXFwwMDFcXDE1NFxcMDAxXFwxNjhcXDAwMVxcXG4gICAgXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE3MlxcMDAxXFwxNzNcXDAwMVxcMTgxXFwwMDFcXDE4NFxcMDAxXFwxODVcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5M1xcMDAxXFwxOTVcXDAwMVxcMTk2XFwwMDFcXDE5N1xcMDAxXFwyMDBcXDAwMVxcMjAzXFwwMDFcXDIyM1xcMDAxXFxcbiAgICBcXDIyNVxcMDAxXFwyMjhcXDAwMVxcMjQ5XFwwMDFcXDI1MVxcMDAxXFwwMDJcXDAwMlxcMDA0XFwwMDJcXDAxMVxcMDAyXFwwMTJcXDAwMlxcXG4gICAgXFwwMTNcXDAwMlxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxMzhcXDAwMFxcMDAwXFwwMDBcXDE0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDEyMVxcMDAxXFwxMjVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTQ0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5M1xcMDAxXFwxOTdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDIyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAyXFwwMDJcXDAwNFxcMDAyXFwwMDBcXDAwMFxcMDA1XFwwMDJcXDAwNlxcMDAyXFwwMDdcXDAwMlxcMDA4XFwwMDJcXFxuICAgIFxcMDA5XFwwMDJcXDAxMFxcMDAyXFwwMTFcXDAwMlxcMDEyXFwwMDJcXDAxM1xcMDAyXFwwMTRcXDAwMlxcMDE1XFwwMDJcXDAxNlxcMDAyXFxcbiAgICBcXDAxN1xcMDAyXFwwMThcXDAwMlxcMDE5XFwwMDJcXDAyMFxcMDAyXFwwMjFcXDAwMlxcMDIyXFwwMDJcXDAyM1xcMDAyXFwwMjRcXDAwMlxcXG4gICAgXFwwMjVcXDAwMlxcMDI2XFwwMDJcXDAyN1xcMDAyXFwwMjhcXDAwMlxcMDI5XFwwMDJcXDAzMFxcMDAyXFwwMzFcXDAwMlxcMDMyXFwwMDJcXFxuICAgIFxcMDMzXFwwMDJcXDAwM1xcMDAyXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI3XFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMDNcXDAwMFxcMTcwXFwwMDBcXDEzNFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxNFxcMDAxXFwwMTNcXDAwMFxcMDQ5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDA1NlxcMDAwXFwxMThcXDAwMFxcMDA2XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDFcXDEzN1xcMDAwXFwwMDBcXDAwMlxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMTM4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwMTRcXDAwMFxcMTEwXFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAxNVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAzMFxcMDAwXFwwNDhcXDAwMFxcMDA4XFwwMDBcXDExNFxcMDAwXFwyMDlcXDAwMFxcMjM2XFwwMDBcXDAwMFxcMDAxXFxcbiAgICBcXDAxM1xcMDAxXFwwMjlcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDAxN1xcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjVcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDIzXFwwMDBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAzNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDIwXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMzdcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA2MVxcMDAwXFwwODVcXDAwMFxcMDQ4XFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA2N1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODZcXDAwMFxcMTQzXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMTQ0XFwwMDBcXFxuICAgIFxcMTQ1XFwwMDBcXDE0NlxcMDAwXFwwNTVcXDAwMFxcMTQ4XFwwMDBcXDA1NVxcMDAwXFwxNDlcXDAwMFxcMDQ4XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwxNTBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMFxcMTYxXFwwMDBcXDA2NlxcMDAwXFwxNThcXDAwMFxcMDUzXFwwMDBcXDE1OVxcMDAwXFwwNTNcXDAwMFxcMTYwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDE2NVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDE2NlxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMTAzXFwwMDBcXDEwOFxcMDAwXFwxMTZcXDAwMFxcXG4gICAgXFwxMzJcXDAwMFxcMTM0XFwwMDBcXDEzNVxcMDAwXFwxMjhcXDAwMFxcMTM5XFwwMDBcXDEzNFxcMDAwXFwxNjRcXDAwMFxcMDkzXFwwMDBcXFxuICAgIFxcMTcxXFwwMDBcXDA3N1xcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzJcXDAwMFxcMTEyXFwwMDBcXDE3M1xcMDAwXFxcbiAgICBcXDE3NFxcMDAwXFwyMTBcXDAwMFxcMjI2XFwwMDBcXDIwOFxcMDAwXFwyMTFcXDAwMFxcMjEyXFwwMDBcXDA1OVxcMDAwXFwwODNcXDAwMFxcXG4gICAgXFwxMzRcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE2XFwwMDBcXDIxOFxcMDAwXFwxNDFcXDAwMFxcMjE5XFwwMDBcXFxuICAgIFxcMDkzXFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTIzXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMjI0XFwwMDBcXDEzNlxcMDAwXFxcbiAgICBcXDA5NVxcMDAwXFwyMjVcXDAwMFxcMDM1XFwwMDFcXDA2NVxcMDAxXFwyMzRcXDAwMFxcMTU1XFwwMDBcXDAwNVxcMDAxXFwwOTdcXDAwMVxcXG4gICAgXFwyNTBcXDAwMFxcMjU1XFwyNTVcXDI1NFxcMDAwXFwwNTdcXDAwMVxcMDYxXFwwMDFcXDA5NVxcMDAxXFwwNzdcXDAwMFxcMDQ0XFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA4OFxcMDAxXFwwMDlcXDAwMVxcMDI5XFwwMDFcXDA3NlxcMDAwXFwxMjRcXDAwMFxcMDMzXFwwMDFcXDAxOFxcMDAxXFxcbiAgICBcXDA3NVxcMDAwXFwwOThcXDAwMFxcMDE5XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDg3XFwwMDFcXDEyMFxcMDAxXFwwODlcXDAwMVxcXG4gICAgXFwwNzRcXDAwMFxcMjI1XFwwMDBcXDA1M1xcMDAxXFwxMjFcXDAwMVxcMDczXFwwMDBcXDA5MFxcMDAxXFwwNzJcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk4XFwwMDBcXDExM1xcMDAxXFwxMjJcXDAwMFxcMDkxXFwwMDFcXDA2NFxcMDAwXFwwMDRcXDAwMVxcXG4gICAgXFwwOTNcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwxNTZcXDAwMFxcMTEyXFwwMDFcXDA5NFxcMDAxXFwwOTZcXDAwMVxcMDk4XFwwMDFcXDA5OVxcMDAxXFwwNDlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwxMDBcXDAwMVxcMTU3XFwwMDBcXFxuICAgIFxcMTAxXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDE4M1xcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMDI0XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDEwMlxcMDAxXFwxMDNcXDAwMVxcMTA1XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwxMDZcXDAwMVxcMTA3XFwwMDFcXDA0OFxcMDAxXFwwNDBcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwxMTBcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwxMTFcXDAwMVxcXG4gICAgXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDE3MVxcMDAxXFwwMzFcXDAwMVxcMTcwXFwwMDFcXDAyM1xcMDAxXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA5MlxcMDAwXFwxNjhcXDAwMVxcMDYzXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMjQ4XFwwMDBcXDE2NVxcMDAxXFwyNTJcXDAwMFxcXG4gICAgXFwxNjJcXDAwMVxcMDU5XFwwMDFcXDA2OVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwyNTVcXDI1NVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDAzOVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDE2M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwxMjBcXDAwMFxcMDAyXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMTY2XFwwMDFcXDA1NVxcMDAxXFwxNTNcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMDdcXDAwMVxcMTY3XFwwMDFcXDE2NFxcMDAxXFwxNjlcXDAwMVxcMDE2XFwwMDFcXDE2NFxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA1MVxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDEzN1xcMDAxXFwxNjRcXDAwMVxcMTcyXFwwMDFcXDE4NVxcMDAxXFwxMzZcXDAwMVxcMTczXFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDE3NFxcMDAxXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNDZcXDAwMVxcXG4gICAgXFwxNzVcXDAwMVxcMTc2XFwwMDFcXDE4MFxcMDAwXFwxNjRcXDAwMVxcMTg0XFwwMDFcXDE4MVxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDEyNFxcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDE5MlxcMDAxXFwxNzhcXDAwMVxcXG4gICAgXFwwMjFcXDAwMVxcMTc5XFwwMDFcXDA5N1xcMDAwXFwxOTNcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcMTgzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDIxNlxcMDAxXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDE4NFxcMDAxXFwyMTZcXDAwMVxcMjA5XFwwMDFcXDA5N1xcMDAwXFxcbiAgICBcXDIyM1xcMDAxXFwwOTdcXDAwMFxcMjA4XFwwMDFcXDIzMFxcMDAxXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDIxOVxcMDAxXFwwMzdcXDAwMVxcXG4gICAgXFwyMTZcXDAwMVxcMjE3XFwwMDFcXDAwM1xcMDAyXFwyMjBcXDAwMVxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDAzXFwwMDJcXFxuICAgIFxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMTZcXDAwMVxcXG4gICAgXFwwMDNcXDAwMlxcMTI2XFwwMDFcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMjE4XFwwMDFcXDI1MFxcMDAxXFxcbiAgICBcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDAwM1xcMDAyXFwxMjRcXDAwMVxcMTI0XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcXG4gICAgXFwyMjFcXDAwMVxcMDAzXFwwMDJcXDI1M1xcMDAxXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDJcXDE5NlxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyMzVcXDAwMVxcMDAzXFwwMDJcXFxuICAgIFxcMjQxXFwwMDFcXDAwM1xcMDAyXFwyNTVcXDAwMVxcMjQyXFwwMDFcXDAwM1xcMDAyXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI0NlxcMDAxXFwxMjlcXDAwMVxcMTI5XFwwMDFcXFxuICAgIFxcMjI4XFwwMDFcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMDAzXFwwMDJcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDAzXFwwMDJcXDE5OFxcMDAxXFwwMDNcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMjM0XFwwMDFcXFxuICAgIFxcMTM0XFwwMDFcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDFcXDAwMVxcMTc3XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg4XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDIwMVxcMDAxXFwyMjdcXDAwMVxcMDAwXFwwMDBcXDE5MVxcMDAwXFwyMDZcXDAwMVxcMTIzXFwwMDFcXDE4OVxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTg5XFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTk1XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNDhcXDAwMVxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMjAyXFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjI2XFwwMDBcXDE5NVxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMjFcXDAwMVxcMjM5XFwwMDFcXFxuICAgIFxcMjU0XFwwMDFcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMjQ0XFwwMDFcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjAzXFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDFcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg2XFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTEzXFwwMDFcXDAwMFxcMDAwXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwMDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDIzOFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNFxcMDAxXFwwNzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwNzFcXDAwMVxcMDc2XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDFcXDExOVxcMDAxXFwwMDBcXDAwMFxcMTE5XFwwMDFcXDAwMFxcMDAwXFwwODFcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE3XFwwMDFcXDAwMFxcMDAwXFwwNzVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTg1XFwwMDFcXDAwMFxcMDAwXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE5MVxcMDAxXFwxNDJcXDAwMVxcMTkxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDZcXDAwMVxcMTQ3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMTUzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3N1xcMDAxXFwxNTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTU2XFwwMDFcXDAwMFxcMDAwXFwxNDhcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE0OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEzOVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDE1MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTg3XFwwMDFcXDAwMFxcMDAwXFwxNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNjFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OVxcMDAxXFwwMDBcXDAwMFxcMTg5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDVcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE5OVxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMTRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjVcXDAwMFxcMTM4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwM1xcMDAwXFwxNjlcXDAwMFxcMTM0XFwwMDBcXDE3NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDEyXFwwMDFcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMTI1XFwwMDBcXDEyOVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyMzZcXDAwMVxcMTM2XFwwMDBcXDI1NVxcMDAxXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDAxMFxcMDAwXFwxMzZcXDAwMFxcMTAyXFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwxMDdcXDAwMFxcMTAyXFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDI5XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDIwOFxcMDAwXFwyMzNcXDAwMFxcMjU1XFwwMDBcXFxuICAgIFxcMDEyXFwwMDFcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDYwXFwwMDBcXDAxMVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyNFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMjJcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDMzXFwwMDBcXDAxOFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMTlcXDAwMFxcMDM1XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAzNlxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NVxcMDAwXFwwNDZcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcXG4gICAgXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NVxcMDAwXFwxNDBcXDAwMFxcMDYwXFwwMDBcXDAxM1xcMDAwXFwxNDNcXDAwMFxcXG4gICAgXFwxNDRcXDAwMFxcMTQ1XFwwMDBcXDA0OFxcMDAwXFwxNDdcXDAwMFxcMDQ4XFwwMDBcXDE0OFxcMDAwXFwwMzlcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNjVcXDAwMFxcMDM5XFwwMDBcXDE0OVxcMDAwXFxcbiAgICBcXDE1MFxcMDAwXFwxNTZcXDAwMFxcMDYzXFwwMDBcXDE1N1xcMDAwXFwwNTFcXDAwMFxcMTU4XFwwMDBcXDA1MVxcMDAwXFwxNTlcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcXG4gICAgXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMTU1XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcMTU1XFwwMDBcXDA5MVxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2OFxcMDAwXFwxMDJcXDAwMFxcMTA3XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDEzMVxcMDAwXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMTMzXFwwMDBcXDE2M1xcMDAwXFwwOTRcXDAwMFxcXG4gICAgXFwxNjVcXDAwMFxcMDY4XFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE3MVxcMDAwXFwxMTFcXDAwMFxcMTcyXFwwMDBcXFxuICAgIFxcMTczXFwwMDBcXDIwNlxcMDAwXFwyMDNcXDAwMFxcMjA3XFwwMDBcXDIxMFxcMDAwXFwyMTFcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDEzM1xcMDAwXFwyMTJcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE3XFwwMDBcXDE0MFxcMDAwXFwyMThcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjE5XFwwMDBcXDIyMFxcMDAwXFwxMTlcXDAwMFxcMjIxXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMTMzXFwwMDBcXFxuICAgIFxcMDkxXFwwMDBcXDIwM1xcMDAwXFwwMzRcXDAwMVxcMDYyXFwwMDFcXDIzM1xcMDAwXFwxNTJcXDAwMFxcMDAxXFwwMDFcXDA4MFxcMDAxXFxcbiAgICBcXDI0N1xcMDAwXFwwNjBcXDAwMFxcMjUxXFwwMDBcXDA1NFxcMDAxXFwwNThcXDAwMVxcMDgxXFwwMDFcXDA2OFxcMDAwXFwwNDFcXDAwMVxcXG4gICAgXFwwODJcXDAwMVxcMDgzXFwwMDFcXDAwNlxcMDAxXFwwMjZcXDAwMVxcMDY4XFwwMDBcXDExOVxcMDAwXFwwMzBcXDAwMVxcMDE1XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDA5NFxcMDAwXFwwMTVcXDAwMVxcMDg0XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDcxXFwwMDFcXDA4OFxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwyMDNcXDAwMFxcMDUwXFwwMDFcXDA3MVxcMDAxXFwwNjhcXDAwMFxcMDg5XFwwMDFcXDA2OFxcMDAwXFwwNjhcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwOTdcXDAwMFxcMDc2XFwwMDFcXDExOVxcMDAwXFwwOTBcXDAwMVxcMDYzXFwwMDBcXDAwMVxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDE1MlxcMDAwXFwwNzZcXDAwMVxcMDkzXFwwMDFcXDA5NVxcMDAxXFwwOTdcXDAwMVxcMDk4XFwwMDFcXDA0NVxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OVxcMDAxXFwxNTJcXDAwMFxcXG4gICAgXFwxMDBcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwwMjBcXDAwMVxcMDc2XFwwMDFcXDA2NVxcMDAwXFwwMjBcXDAwMVxcMTAxXFwwMDFcXDEwMlxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDEwNVxcMDAxXFwxMDZcXDAwMVxcMDQ1XFwwMDFcXDAzNlxcMDAxXFwxMDdcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDExMFxcMDAxXFxcbiAgICBcXDAyNlxcMDAxXFwxMjFcXDAwMVxcMTU3XFwwMDFcXDAzMFxcMDAxXFwxNThcXDAwMVxcMDIwXFwwMDFcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDkxXFwwMDBcXDE1OVxcMDAxXFwwNjJcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwyNDdcXDAwMFxcMTYwXFwwMDFcXDI1MVxcMDAwXFxcbiAgICBcXDE2MVxcMDAxXFwwNThcXDAwMVxcMDY4XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA5NFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDM2XFwwMDFcXDA0MVxcMDAxXFwwOTdcXDAwMFxcMTYyXFwwMDFcXFxuICAgIFxcMTYzXFwwMDFcXDExOVxcMDAwXFwwMDFcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwxNjVcXDAwMVxcMDU0XFwwMDFcXDE1MlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwNlxcMDAxXFwxNjZcXDAwMVxcMTY3XFwwMDFcXDE2OFxcMDAxXFwwMTVcXDAwMVxcMTY5XFwwMDFcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDUwXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTMzXFwwMDFcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTU0XFwwMDFcXDEzM1xcMDAxXFwxNzJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTczXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA0NVxcMDAxXFxcbiAgICBcXDE3NFxcMDAxXFwxNzVcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAxXFwxNTRcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTIyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMTQ4XFwwMDFcXDE3N1xcMDAxXFxcbiAgICBcXDAyMFxcMDAxXFwxNzhcXDAwMVxcMDk4XFwwMDBcXDE0OFxcMDAxXFwxNzlcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcXG4gICAgXFwxODNcXDAwMVxcMjE2XFwwMDFcXDE5M1xcMDAxXFwwOTVcXDAwMFxcMTU0XFwwMDFcXDIxNlxcMDAxXFwyMDVcXDAwMVxcMDk4XFwwMDBcXFxuICAgIFxcMjIyXFwwMDFcXDA5NVxcMDAwXFwyMDVcXDAwMVxcMjI5XFwwMDFcXDAwMVxcMDAyXFwwOTVcXDAwMFxcMjE4XFwwMDFcXDAzNlxcMDAxXFxcbiAgICBcXDIxNVxcMDAxXFwyMTVcXDAwMVxcMDAyXFwwMDJcXDIxOFxcMDAxXFwyMTVcXDAwMVxcMDk1XFwwMDBcXDAwNFxcMDAyXFwwMDVcXDAwMlxcXG4gICAgXFwyMTZcXDAwMVxcMDk1XFwwMDBcXDAwNlxcMDAyXFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDIxNVxcMDAxXFxcbiAgICBcXDAwN1xcMDAyXFwxMjJcXDAwMVxcMDA4XFwwMDJcXDAwOVxcMDAyXFwwMTBcXDAwMlxcMDExXFwwMDJcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk4XFwwMDBcXDAxMlxcMDAyXFwyMTVcXDAwMVxcMjQ3XFwwMDFcXFxuICAgIFxcMDEzXFwwMDJcXDAxNFxcMDAyXFwwOThcXDAwMFxcMDE1XFwwMDJcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMDk4XFwwMDBcXDAxNlxcMDAyXFxcbiAgICBcXDIyMFxcMDAxXFwwMTdcXDAwMlxcMjUxXFwwMDFcXDAxOFxcMDAyXFwwMTlcXDAwMlxcMDIwXFwwMDJcXDA5OFxcMDAwXFwxMjFcXDAwMVxcXG4gICAgXFwwMjFcXDAwMlxcMTk0XFwwMDFcXDA5OFxcMDAwXFwwMjJcXDAwMlxcMDk4XFwwMDBcXDA5OFxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIzMVxcMDAxXFwwMjNcXDAwMlxcXG4gICAgXFwyMzhcXDAwMVxcMDI0XFwwMDJcXDI1MVxcMDAxXFwyMzhcXDAwMVxcMDI1XFwwMDJcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjQzXFwwMDFcXDEyNVxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwyMjRcXDAwMVxcMDI2XFwwMDJcXDE5N1xcMDAxXFwwMjdcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMjhcXDAwMlxcMTk0XFwwMDFcXDAyOVxcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDAzMFxcMDAyXFwwMzFcXDAwMlxcMDMyXFwwMDJcXDIwMFxcMDAxXFwyMzFcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwxNzZcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMjU1XFwyNTVcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTg1XFwwMDBcXDIwNVxcMDAxXFwxMjJcXDAwMVxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFxcbiAgICBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTJcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkzXFwwMDFcXDI0N1xcMDAxXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOTlcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwxOTlcXDAwMFxcMTI1XFwwMDFcXDEyOFxcMDAxXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcXG4gICAgXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwyMDRcXDAwMFxcMTk0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDBcXDIyMFxcMDAxXFwyMzhcXDAwMVxcXG4gICAgXFwyNTFcXDAwMVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyNDNcXDAwMVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjRcXDAwMVxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMTk3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDIyOFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFxcbiAgICBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODVcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFxcbiAgICBcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDE5OVxcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjM3XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjZcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwxMTJcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExNVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTVcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXFxuICAgIFxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXFxuICAgIFxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcXG4gICAgXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMjU1XFwyNTVcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDEyNlxcMDAxXFwxMjlcXDAwMVxcMTI2XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyOVxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTg0XFwwMDFcXDEzOFxcMDAxXFwxODRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzOFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXFxuICAgIFxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTU2XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwxODZcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTk4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDFcXDI1NVxcMjU1XFwxODdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTg2XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjAxXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCB0cnVlIClcblxuIyAxMDMyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDMzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgZmFsc2UgKVxuXG4jIDEwMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwMzggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDE5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgTnVsbCApXG5cbiMgMTA0MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA0MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAxOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgXCJOYU5cIlxuICAgICAgICAgICAgICAgIFxuIyAxOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDUzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDU0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyAxOTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxOTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdGxpdCBcIkluZmluaXR5XCJcbiAgICAgICAgICAgICAgICBcbiMgMjA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgXCItSW5maW5pdHlcIlxuICAgICAgICAgICAgICAgIFxuIyAyMTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDc2IFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyAyMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAyMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBTdHJpbmdsaXQgKGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgXG4jIDIxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwODggXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDIyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDIyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiApXG5cbiMgMTA5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgMjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmIClcblxuIyAxMDk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDk4IFwibGliL3JlYWQubWxcIlxuICB8IDkgLT5cblxuIyAyMjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAyMjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdGxpdCAobGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgXG4jIDIyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTA5IFwibGliL3JlYWQubWxcIlxuICB8IDEwIC0+XG5cbiMgMjMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDIzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBBc3NvYyAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExMzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTEgLT5cblxuIyAyNTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICBgTGlzdCAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExNTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTIgLT5cblxuIyAyNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDI3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGBUdXBsZSAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgXG4jIDI4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTc4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTc5IFwibGliL3JlYWQubWxcIlxuICB8IDEzIC0+XG5cbiMgMjkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDI5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyAyOTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBjb25zID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGBWYXJpYW50IChjb25zLCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgXG4jIDMwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTkzIFwibGliL3JlYWQubWxcIlxuICB8IDE0IC0+XG5cbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMTk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTk4IFwibGliL3JlYWQubWxcIlxuICB8IDE1IC0+XG5cbiMgMzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTIwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNiAtPlxuXG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTIwNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIwOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNyAtPlxuXG4jIDMwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTIxMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIxMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxOCAtPlxuXG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEyMTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTkgLT5cblxuIyAzMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcblxuIyAxMjIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjIzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiA1OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDMxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggQnVmZmVyLmNvbnRlbnRzIHYuYnVmIClcblxuIyAxMjM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjM1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDEyNDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNDEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDEyNDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDMxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTI1MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI1MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfc3RyaW5nIHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiA2M1xuYW5kIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBsZXQgYiA9IHYuYnVmIGluXG4gICAgICAgICAgICAgICAgICAgIGYgKEJ1ZmZlci5jb250ZW50cyBiKSAwIChCdWZmZXIubGVuZ3RoIGIpIClcblxuIyAxMjY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjY1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG5cbiMgMTI3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcblxuIyAxMjc2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjc3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzMjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEyODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyODIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIDY4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcblxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICBcbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgY1xuXG4jIDEyOTQgXCJsaWIvcmVhZC5tbFwiXG4jIDEyOTQgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgYyApXG5cbiMgMTI5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcYicgKVxuXG4jIDEzMDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDMzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXDAxMicgKVxuXG4jIDEzMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nIClcblxuIyAxMzEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzE0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyAzMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxyJyApXG5cbiMgMTMxOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMxOSBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgMzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcdCcgKVxuXG4jIDEzMjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxubGV0XG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBhXG5cbiMgMTMyOSBcImxpYi9yZWFkLm1sXCJcbiMgMTMyOSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpXG5hbmRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBiXG5cbiMgMTMzNCBcImxpYi9yZWFkLm1sXCJcbiMgMTMzNCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuXG4jIDEzMzkgXCJsaWIvcmVhZC5tbFwiXG4jIDEzMzkgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG5cbiMgMTM0NCBcImxpYi9yZWFkLm1sXCJcbiMgMTM0NCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpIGluXG5cbiMgMzM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHggPj0gMHhEODAwICYmIHggPD0gMHhEQkZGIHRoZW5cbiAgICAgICAgICAgICBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgdXRmOF9vZl9jb2RlIHYuYnVmIHhcbiAgICAgICAgIClcblxuIyAxMzU1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzU2IFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyAzNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZVwiIHYgbGV4YnVmIClcblxuIyAxMzYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzYxIFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyAzNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEzNjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzNjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIDgyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgYVxuXG4jIDEzNzggXCJsaWIvcmVhZC5tbFwiXG4jIDEzNzggXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcblxuIyAxMzgzIFwibGliL3JlYWQubWxcIlxuIyAxMzgzIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuXG4jIDEzODggXCJsaWIvcmVhZC5tbFwiXG4jIDEzODggXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KVxuYW5kXG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA1KSBpblxuXG4jIDM1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHkgPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB5ID49IDB4REMwMCAmJiB5IDw9IDB4REZGRiB0aGVuXG4gICAgICAgICAgICAgdXRmOF9vZl9zdXJyb2dhdGVfcGFpciB2LmJ1ZiB4IHlcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGxvdyBzdXJyb2dhdGUgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiXG4gICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgKVxuXG4jIDE0MDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIk1pc3NpbmcgZXNjYXBlIHNlcXVlbmNlIHJlcHJlc2VudGluZyBsb3cgc3Vycm9nYXRlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIiB2IGxleGJ1ZiApXG5cbiMgMTQxMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQxMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDkxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgICAgICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIChsZW4rMSkgaW5cbiAgICAgICAgICAgQnl0ZXMuc2V0IHMgMCAnXCInO1xuICAgICAgICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIHMgMSBsZW47XG4gICAgICAgICAgIEJ5dGVzLnRvX3N0cmluZyBzXG4gICAgICAgICApXG5cbiMgMTQzMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQzNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcblxuIyAxNDM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDM5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzNzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDEwMlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzNzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID0gcmVhZF9qc29uIHYgbGV4YnVmIGluXG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWY7XG4gICAgICAgICAgIFNvbWUgeCApXG5cbiMgMTQ1OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ1OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBOb25lIClcblxuIyAxNDYzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDY0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNDY4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDY5IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0NzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgMTA3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAxNDg1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDg2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiAxMTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAxNTA3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTA4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE1MTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTUxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbW1hIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIDExNVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDE1MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTUzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTQwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMTlcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBFZGd5X2JyYWNrZXQgKVxuXG4jIDE1NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBgRG91YmxlX3F1b3RlIClcblxuIyAxNTU3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTU4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYFNxdWFyZV9icmFja2V0IClcblxuIyAxNTYyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTYzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JywgJ1xcXCInIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTU2NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU2OCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE1NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiAxMjVcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMTU4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG5cbiMgMTU4OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU5MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMTU5NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU5NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMTU5OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYwMCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9lb2YgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgMTMxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNjExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjEyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTYxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgMTMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTYyOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYyOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcblxuIyAxNjQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjQ5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIDE0MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggKCkgKVxuXG4jIDE2NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnbnVsbCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE2NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE2NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGxfaWZfcG9zc2libGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiAxNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE2ODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2ODMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNjg3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjg4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ib29sIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgMTUyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTY5OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcwMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNzA0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzA1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTcwOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcxMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNzE0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzE1IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd0cnVlJyBvciAnZmFsc2UnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNzE5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzIwIFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA0NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTcyNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcyNSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiAxNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE3MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxNzQ1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzQ2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50ZWdlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuXG4jIDE3NjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQ3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50ZWdlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTc2OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc2OSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE3NzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50MzIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgMTg1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQzMi5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTc4NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc4OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQzMi5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50MzIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcblxuIyAxODA1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODA2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDMyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxODEwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODExIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTgxNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgxNiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDY0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIDE5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQ5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50NjQub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE4MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50NjQub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDY0IGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG5cbiMgMTg0NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg0OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNTEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQ2NCBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTg1MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg1MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE4NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udW1iZXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIDE5OVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmFuIClcblxuIyAxODY5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODcwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggaW5maW5pdHkgKVxuXG4jIDE4NzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDUxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuZWdfaW5maW5pdHkgKVxuXG4jIDE4NzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4ODAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDUxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmbG9hdF9vZl9zdHJpbmcgKGxleGVtZSBsZXhidWYpIClcblxuIyAxODg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODg1IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA1MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBmbG9hdCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMuICopXG4gICAgICAgICAgICAgICAgICAgIGZsb2F0X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk5hTlwiIC0+IG5hblxuICAgICAgICAgICAgICAgICAgICAgIHwgXCJJbmZpbml0eVwiIC0+IGluZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBcIi1JbmZpbml0eVwiIC0+IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYSBudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgKVxuXG4jIDE5MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDUzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgbnVtYmVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTEyIFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyA1MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTkxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIDIzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTkyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXFxcIicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxOTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTQwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIDIzN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxOTUyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTUzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cbmxldFxuXG4jIDU1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgc1xuXG4jIDE5NTggXCJsaWIvcmVhZC5tbFwiXG4jIDE5NTggXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cblxuIyA1NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcyApXG5cbiMgMTk2MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk2MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTk2NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk2OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX2lkZW50IHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIDI0MlxuYW5kIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcblxuIyAxOTg1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTg2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbWFwX2xleGVtZSBmIGxleGJ1ZiApXG5cbiMgMTk5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTYwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTYwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTk5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIwMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMDEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc2VxdWVuY2UgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcblxuIyAyMDI2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDI3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjAzMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAzMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIwMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiAyNTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcblxuIyAyMDYyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDYzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjA2NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA2OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIwNzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwNzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIDI1NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMjA4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMDg5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDkwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDI1N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIxMDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMDIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDYwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDIxMDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDYwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjExMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjExMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNjA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIxMTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGUgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNjJcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDYxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA2MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFwb3MgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhcG9zICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgICAgICBcbiMgNjM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDIxNTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDYzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMTU1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTU2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjE2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgMjY2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMTcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTczIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIxNzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNzggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIDI2OFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjE5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjAwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjAxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIyMDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDI3MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIyMTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIyMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjIyNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIyOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNjU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIyMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgMjc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMjQ0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjQ1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMjUyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjUzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2NjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjYxIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA2NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyNjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDY3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjcxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgMjgyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcblxuIyAyMzA0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzA1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjMwOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMxMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIzMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sY3VybCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiAyODZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzMxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzMyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjMzNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMzNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIDI5MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAyMzQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzQ5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgMjkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzNjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAyMzcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzcxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDcxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMzgwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzgxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiAyOTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzk4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdHVwbGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiAzMDFcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMjQxNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQxNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDI0MTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQyNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQyNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiAzMDZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjQ0MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ0MiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0NDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDczMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDUxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDUyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ycGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgMzEwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI0NjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDczNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDY4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDY5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ3MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ3NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiAzMTRcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNDg1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDg2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcmJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiAzMThcbmFuZCBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNTA3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTA4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjUxMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUxMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI1MTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIDMyMlxuYW5kIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDc1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNzU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTQ1IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA3NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDc1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgNzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjU1OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU2MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgNzU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDc1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDc1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU2OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU3MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA5IC0+XG5cbiMgNzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDc2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI1OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTAgLT5cblxuIyA3ODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNzg0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNjEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjE0IFwibGliL3JlYWQubWxcIlxuICB8IDExIC0+XG5cbiMgNzk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDc5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA4MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICBcbiMgODE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI2MzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2MzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTIgLT5cblxuIyA4MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDgyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyA4MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjY1MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY1MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMyAtPlxuXG4jIDgzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY1NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY1NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNCAtPlxuXG4jIDgzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTUgLT5cblxuIyA4MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTYgLT5cblxuIyA4MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTcgLT5cblxuIyA4MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNjc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjc2IFwibGliL3JlYWQubWxcIlxuICB8IDE4IC0+XG5cbiMgODM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG5cbiMgMjY4MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY4MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDM3OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMjY5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcblxuIyAyNjk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjk4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI3MDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDM4OVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmIClcblxuIyAyNzE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzE3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAyNzIxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzIyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNzI2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzI3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA4NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI3MzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiAzOTRcbmFuZCBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyNzQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzQ0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI3NDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI3NTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDg1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNzU4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzU5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiAzOTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgODcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcblxuIyAyNzcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzcxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA4NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI3NzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd7JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODAzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA4OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnWyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4MjIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDkxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgOTE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJygnO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIFxuIyA5MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjg0NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg0NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgOTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDkzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA5MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc8JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgOTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDk0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjg2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgOTQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjg3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgOTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4ODAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOSAtPlxuXG4jIDk1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjg4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMCAtPlxuXG4jIDk1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI4ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4OTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTEgLT5cblxuIyA5NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcblxuIyAyODk0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODk1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgNDUwXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcIic7XG4gICAgICAgICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmXG4gICAgICAgICApXG5cbiMgMjkwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgOTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcblxuIyAyOTEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTE0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5NjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI5MTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDQ2MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonO1xuICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfZ3QgdiBsZXhidWYgKVxuXG4jIDI5MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG5cbiMgMjkzOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkzOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjk0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgOTc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTQ5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgNDY2XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI5NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk3OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk3OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG5cbiMgMjk2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjk3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgOTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI5NzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiA0NzFcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDI5OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDI5OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5OTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAzMDA2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDA3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA5OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMzAxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgOTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDMwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgNDc4XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nO1xuICAgICAgcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMzAzMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAzMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDMwMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMzggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiA0ODBcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG5cbiMgMzA0OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA1MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JzsgcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMzA1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTAwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMwNTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDEwMTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMwNjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgNDg1XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAzMDc2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDc3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMzA4MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA4MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDQ4N1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuXG4jIDMwOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwOTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMzA5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTAxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxMDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDEwMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiA0OTJcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJztcbiAgICAgIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMzEyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzEyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDMxMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiA0OTRcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcblxuIyAzMTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTQwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknOyByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDMxNDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTUwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTU1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIDQ5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JyApXG5cbiMgMzE2NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE2NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE3MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE3MiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTAzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzE3NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE3NyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIDUwM1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTA0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuXG4jIDMxODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxODkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwNDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTkzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTk0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzE5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDUwN1xuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTA0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiKi9cIiApXG5cbiMgMzIxMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIxMSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTA0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcblxuIyAzMjE1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjE2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDMyMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDEwNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcblxuIyAzMjI3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjI4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQganVuayBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfanVua19yZWMgbGV4YnVmIDUxM1xuYW5kIF9fb2NhbWxfbGV4X2p1bmtfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTA1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBMZXhpbmcubGV4ZW1lIGxleGJ1ZiApXG5cbiMgMzIzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzI0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2p1bmtfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG5cbiMgMTA1NSBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIFxuIyAxMDU2IFwibGliL3JlYWQubWxsXCJcbiAgbGV0IF8gPSAocmVhZF9qc29uIDogbGV4ZXJfc3RhdGUgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0KVxuXG4gIGxldCByZWFkX3QgPSByZWFkX2pzb25cblxuICBsZXQgKCkgPVxuICAgIHJlYWRfanVuayA6PSBqdW5rXG5cbiAgbGV0IHJlYWRfaW50OCB2IGxleGJ1ZiA9XG4gICAgbGV0IG4gPSByZWFkX2ludCB2IGxleGJ1ZiBpblxuICAgIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlblxuICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQ4IG92ZXJmbG93XCIgdiBsZXhidWZcbiAgICBlbHNlXG4gICAgICBjaGFyX29mX2ludCBuXG5cbiAgbGV0IHJlYWRfbGlzdCByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIExpc3QucmV2IChyZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZilcblxuICBsZXQgYXJyYXlfb2ZfcmV2X2xpc3QgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIFtdIC0+IFt8IHxdXG4gICAgICB8IHggOjogdGwgLT5cbiAgICAgICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICAgIGxldCByID0gcmVmIHRsIGluXG4gICAgICAgICAgZm9yIGkgPSBsZW4gLSAyIGRvd250byAwIGRvXG4gICAgICAgICAgICBhLihpKSA8LSBMaXN0LmhkICFyO1xuICAgICAgICAgICAgciA6PSBMaXN0LnRsICFyXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBhXG5cbiAgbGV0IHJlYWRfYXJyYXkgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBsZXQgbCA9IHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmIGluXG4gICAgYXJyYXlfb2ZfcmV2X2xpc3QgbFxuXG4gICgqIFJlYWQgYSBKU09OIG9iamVjdCwgcmVhZGluZyB0aGUga2V5cyBpbnRvIE9DYW1sIHN0cmluZ3NcbiAgICAgKHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KSAqKVxuICBsZXQgcmVhZF9maWVsZHMgcmVhZF9maWVsZCBpbml0X2FjYyB2ID1cbiAgICByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2lkZW50IHJlYWRfZmllbGQgaW5pdF9hY2MgdlxuXG4gIGxldCBmaW5pc2ggdiBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgaWYgbm90IChyZWFkX2VvZiBsZXhidWYpIHRoZW5cbiAgICAgIGxvbmdfZXJyb3IgXCJKdW5rIGFmdGVyIGVuZCBvZiBKU09OIHZhbHVlOlwiIHYgbGV4YnVmXG5cbiAgbGV0IGluaXRfbGV4ZXIgPSBpbml0X2xleGVyXG5cbiAgbGV0IGZyb21fbGV4YnVmIHYgPyhzdHJlYW0gPSBmYWxzZSkgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuXG4gICAgbGV0IHggPVxuICAgICAgaWYgcmVhZF9lb2YgbGV4YnVmIHRoZW5cbiAgICAgICAgcmFpc2UgRW5kX29mX2lucHV0XG4gICAgICBlbHNlXG4gICAgICAgIHJlYWRfanNvbiB2IGxleGJ1ZlxuICAgIGluXG5cbiAgICBpZiBub3Qgc3RyZWFtIHRoZW5cbiAgICAgIGZpbmlzaCB2IGxleGJ1ZjtcblxuICAgIHhcblxuXG4gIGxldCBmcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggRW5kX29mX2lucHV0IC0+XG4gICAgICBqc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggRW5kX29mX2lucHV0IC0+XG4gICAgICBqc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICB0cnlcbiAgICAgIGxldCB4ID0gZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljIGluXG4gICAgICBjbG9zZV9pbiBpYztcbiAgICAgIHhcbiAgICB3aXRoIGUgLT5cbiAgICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgICAgcmFpc2UgZVxuXG4gIGV4Y2VwdGlvbiBGaW5hbGx5IG9mIGV4biAqIGV4blxuXG4gIGxldCBzZXFfZnJvbV9sZXhidWYgdiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgbGV4YnVmID1cbiAgICBsZXQgc3RyZWFtID0gU29tZSB0cnVlIGluXG4gICAgbGV0IHJlYyBmICgpID1cbiAgICAgIHRyeSBTZXEuQ29ucyAoZnJvbV9sZXhidWYgdiA/c3RyZWFtIGxleGJ1ZiwgZilcbiAgICAgIHdpdGhcbiAgICAgICAgICBFbmRfb2ZfaW5wdXQgLT5cbiAgICAgICAgICAgIGZpbiAoKTtcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgICAodHJ5IGZpbiAoKSB3aXRoIGZpbl9lIC0+IHJhaXNlIChGaW5hbGx5IChlLCBmaW5fZSkpKTtcbiAgICAgICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgIGZcblxuICBsZXQgc2VxX2Zyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxuICBsZXQgc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2ID9maW4gbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiB+ZmluIGxleGJ1ZlxuXG4gIHR5cGUganNvbl9saW5lID0gWyBgSnNvbiBvZiB0IHwgYEV4biBvZiBleG4gXVxuXG4gIGxldCBsaW5lc2VxX2Zyb21fY2hhbm5lbFxuICAgICAgP2J1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgP2ZuYW1lID9sbnVtOihsbnVtMCA9IDEpIGljID1cbiAgICBsZXQgYnVmID1cbiAgICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIChCdWZmZXIuY3JlYXRlIDI1NilcbiAgICAgICAgfCBTb21lIF8gLT4gYnVmXG4gICAgaW5cbiAgICBsZXQgcmVjIGYgbG51bSA9IGZ1biAoKSAtPlxuICAgICAgdHJ5XG4gICAgICAgIGxldCBsaW5lID0gaW5wdXRfbGluZSBpYyBpblxuICAgICAgICBTZXEuQ29ucyAoYEpzb24gKGZyb21fc3RyaW5nID9idWYgP2ZuYW1lIH5sbnVtIGxpbmUpLCBmIChsbnVtICsgMSkpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2ZpbGUgLT4gZmluICgpOyBTZXEuTmlsXG4gICAgICAgIHwgZSAtPiBTZXEuQ29ucyAoYEV4biBlLCBmIChsbnVtICsgMSkpXG4gICAgaW5cbiAgICBmIGxudW0wXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxpbmVzZXFfZnJvbV9jaGFubmVsID9idWYgfmZpbiA/Zm5hbWUgP2xudW0gaWNcblxuICBsZXQgcHJldHRpZnkgP3N0ZCBzID1cbiAgICBwcmV0dHlfdG9fc3RyaW5nID9zdGQgKGZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IGNvbXBhY3QgP3N0ZCBzID1cbiAgICB0b19zdHJpbmcgKGZyb21fc3RyaW5nIHMpXG5cblxuIyAzNDA4IFwibGliL3JlYWQubWxcIlxuIyA5NyBcInlvanNvbi5jcHBvLm1sXCJcbm1vZHVsZSBVdGlsID1cbnN0cnVjdFxuIyAxIFwidXRpbC5tbFwiXG5leGNlcHRpb24gVHlwZV9lcnJvciBvZiBzdHJpbmcgKiB0XG5cbmxldCB0eXBlb2YgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBfIC0+IFwib2JqZWN0XCJcbiAgfCBgQm9vbCBfIC0+IFwiYm9vbFwiXG4gIHwgYEZsb2F0IF8gLT4gXCJmbG9hdFwiXG4gIFxuIyAxMCBcInV0aWwubWxcIlxuICB8IGBMaXN0IF8gLT4gXCJhcnJheVwiXG4gIHwgYE51bGwgLT4gXCJudWxsXCJcbiAgfCBgU3RyaW5nIF8gLT4gXCJzdHJpbmdcIlxuICB8IGBJbnRsaXQgXyAtPiBcImludGxpdFwiXG4gIHwgYEZsb2F0bGl0IF8gLT4gXCJmbG9hdGxpdFwiXG4gIFxuIyAxNiBcInV0aWwubWxcIlxuICB8IGBTdHJpbmdsaXQgXyAtPiBcInN0cmluZ2xpdFwiXG4gIFxuIyAxOCBcInV0aWwubWxcIlxuICB8IGBUdXBsZSBfIC0+IFwidHVwbGVcIlxuICB8IGBWYXJpYW50IF8gLT4gXCJ2YXJpYW50XCJcblxubGV0IHR5cGVyciBtc2cganMgPSByYWlzZSAoVHlwZV9lcnJvciAobXNnIF4gdHlwZW9mIGpzLCBqcykpXG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nICogdFxuXG5sZXQgYXNzb2MgbmFtZSBvYmogPSB0cnkgTGlzdC5hc3NvYyBuYW1lIG9iaiB3aXRoIE5vdF9mb3VuZCAtPiBgTnVsbFxuXG5sZXQgbWVtYmVyIG5hbWUgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gYXNzb2MgbmFtZSBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IG1lbWJlciAnXCIgXiBuYW1lIF4gXCInIG9mIG5vbi1vYmplY3QgdHlwZSBcIikganNcblxubGV0IHJlYyBwYXRoIGwgb2JqID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gU29tZSBvYmpcbiAgfCBrZXkgOjogbCAtPiAoXG4gICAgICBtYXRjaCBvYmogd2l0aFxuICAgICAgfCBgQXNzb2MgYXNzb2MgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Mga2V5IGFzc29jIHdpdGhcbiAgICAgICAgICB8IG9iaiAtPiBwYXRoIGwgb2JqXG4gICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IGluZGV4IGkgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMganMgLT5cbiAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICBsZXQgd3JhcHBlZF9pbmRleCA9IGlmIGkgPCAwIHRoZW4gbGVuICsgaSBlbHNlIGkgaW5cbiAgICAgIGlmIHdyYXBwZWRfaW5kZXggPCAwIHx8IHdyYXBwZWRfaW5kZXggPj0gbGVuIHRoZW5cbiAgICAgICAgcmFpc2UgKFVuZGVmaW5lZCAoXCJJbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG91dCBvZiBib3VuZHNcIiwganMpKVxuICAgICAgZWxzZSBMaXN0Lm50aCBsIHdyYXBwZWRfaW5kZXhcbiAgfCBqcyAtPlxuICAgICAgdHlwZXJyIChcIkNhbid0IGdldCBpbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG9mIG5vbi1hcnJheSB0eXBlIFwiKSBqc1xuXG5sZXQgbWFwIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gYExpc3QgKExpc3QubWFwIGYgbClcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBtYXAgZnVuY3Rpb24gb3ZlciBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgdG9fYXNzb2MgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gb2JqXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgb2JqZWN0LCBnb3QgXCIganNcblxubGV0IHRvX29wdGlvbiBmID0gZnVuY3Rpb24gYE51bGwgLT4gTm9uZSB8IHggLT4gU29tZSAoZiB4KVxubGV0IHRvX2Jvb2wgPSBmdW5jdGlvbiBgQm9vbCBiIC0+IGIgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sLCBnb3QgXCIganNcblxubGV0IHRvX2Jvb2xfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgQm9vbCBiIC0+IFNvbWUgYlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyID0gZnVuY3Rpb25cbiAgXG4jIDc1IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlcl9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgODQgXCJ1dGlsLm1sXCJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvblxuICBcbiMgOTEgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdF9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgOTcgXCJ1dGlsLm1sXCJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICBcbiMgMTA0IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50LCBnb3QgXCIganNcblxubGV0IHRvX2ludF9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgMTEwIFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBgTGlzdCBsIC0+IGwgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBhcnJheSwgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICBcbiMgMTE5IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nLCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZ19vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgMTI1IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZyBvciBudWxsLCBnb3QgXCIganNcblxubGV0IGNvbnZlcnRfZWFjaCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIGYgbFxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IGNvbnZlcnQgZWFjaCBlbGVtZW50IG9mIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCByZWMgcmV2X2ZpbHRlcl9tYXAgZiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZXZfZmlsdGVyX21hcCBmIGFjYyB0bFxuICAgICAgfCBTb21lIHkgLT4gcmV2X2ZpbHRlcl9tYXAgZiAoeSA6OiBhY2MpIHRsKVxuXG5sZXQgZmlsdGVyX21hcCBmIGwgPSBMaXN0LnJldiAocmV2X2ZpbHRlcl9tYXAgZiBbXSBsKVxuXG5sZXQgcmVjIHJldl9mbGF0dGVuIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYExpc3QgbDIgLT4gcmV2X2ZsYXR0ZW4gKExpc3QucmV2X2FwcGVuZCBsMiBhY2MpIHRsXG4gICAgICB8IF8gLT4gcmV2X2ZsYXR0ZW4gYWNjIHRsKVxuXG5sZXQgZmxhdHRlbiBsID0gTGlzdC5yZXYgKHJldl9mbGF0dGVuIFtdIGwpXG5cbmxldCBmaWx0ZXJfaW5kZXggaSBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgTGlzdCBsIC0+ICggdHJ5IFNvbWUgKExpc3QubnRoIGwgaSkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9saXN0IGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgTGlzdCBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxuXG5sZXQgZmlsdGVyX21lbWJlciBrIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBBc3NvYyBsIC0+ICggdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBsKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2Fzc29jIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQXNzb2MgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfYm9vbCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEJvb2wgeCAtPiBTb21lIHggfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfaW50IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICAgIGZ1bmN0aW9uXG4gICAgICBcbiMgMTc0IFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICAgICkgbFxuXG5sZXQgZmlsdGVyX2Zsb2F0IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgXG4jIDE4MyBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfbnVtYmVyIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgXG4jIDE5NSBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfc3RyaW5nIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgXG4jIDIwNCBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBrZXlzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKGtleSwgXykgLT4ga2V5KVxuXG5sZXQgdmFsdWVzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKF8sIHZhbHVlKSAtPiB2YWx1ZSlcblxubGV0IGNvbWJpbmUgKGZpcnN0IDogdCkgKHNlY29uZCA6IHQpID1cbiAgbWF0Y2ggKGZpcnN0LCBzZWNvbmQpIHdpdGhcbiAgfCBgQXNzb2MgYSwgYEFzc29jIGIgLT4gKGBBc3NvYyAoYSBAIGIpIDogdClcbiAgfCBhLCBiIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRXhwZWN0ZWQgdHdvIG9iamVjdHMsIGNoZWNrIGlucHV0c1wiKVxuIyAxMDAgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcbiMgMTA2IFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG4iLCJcbnR5cGUgJ2Egb2NhbWxfYXJyYXkgPSAnYSBhcnJheVxuXG5sZXQgaW5wdXRfZmlsZSBmbmFtZSByZWFkID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZm5hbWUgaW5cbiAgdHJ5XG4gICAgbGV0IHggPSByZWFkIGljIGluXG4gICAgY2xvc2VfaW4gaWM7XG4gICAgeFxuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICByYWlzZSBlXG5cbmxldCBvdXRwdXRfZmlsZSBmbmFtZSB3cml0ZSA9XG4gIGxldCBvYyA9IG9wZW5fb3V0X2JpbiBmbmFtZSBpblxuICB0cnlcbiAgICB3cml0ZSBvYztcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubW9kdWxlIEJpbmlvdSA9XG5zdHJ1Y3RcbiAgdHlwZSAnYSByZWFkZXIgPSBCaV9pbmJ1Zi50IC0+ICdhXG4gIHR5cGUgJ2Egd3JpdGVyID0gQmlfb3V0YnVmLnQgLT4gJ2EgLT4gdW5pdFxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2xlbiA/KHNocmxlbiA9IDApIHJlYWQgaWMgPVxuICAgIGxldCBpYiA9IEJpX2luYnVmLmZyb21fY2hhbm5lbCA/bGVuIH5zaHJsZW4gaWMgaW5cbiAgICByZWFkIGliXG5cbiAgbGV0IGZyb21fZmlsZSA/bGVuID8oc2hybGVuID0gMCkgcmVhZCBmbmFtZSA9XG4gICAgaW5wdXRfZmlsZSBmbmFtZSAoZnVuIGljIC0+IGZyb21fY2hhbm5lbCA/bGVuIH5zaHJsZW4gcmVhZCBpYylcblxuICBsZXQgdG9fY2hhbm5lbCA/bGVuID8oc2hybGVuID0gMCkgd3JpdGUgb2MgeCA9XG4gICAgbGV0IG9iID0gQmlfb3V0YnVmLmNyZWF0ZV9jaGFubmVsX3dyaXRlciA/bGVuIH5zaHJsZW4gb2MgaW5cbiAgICB3cml0ZSBvYiB4O1xuICAgIEJpX291dGJ1Zi5mbHVzaF9jaGFubmVsX3dyaXRlciBvYlxuXG4gIGxldCB0b19maWxlID9sZW4gPyhzaHJsZW4gPSAwKSB3cml0ZSBmbmFtZSB4ID1cbiAgICBvdXRwdXRfZmlsZSBmbmFtZSAoZnVuIG9jIC0+IHRvX2NoYW5uZWwgP2xlbiB+c2hybGVuIHdyaXRlIG9jIHgpXG5lbmRcblxubW9kdWxlIEpzb24gPVxuc3RydWN0XG4gIHR5cGUgJ2EgcmVhZGVyID0gWW9qc29uLlNhZmUubGV4ZXJfc3RhdGUgLT4gTGV4aW5nLmxleGJ1ZiAtPiAnYVxuICB0eXBlICdhIHdyaXRlciA9IEJ1ZmZlci50IC0+ICdhIC0+IHVuaXRcblxuICBsZXQgZmluaXNoIGxzIGxleGJ1ZiA9XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBscyBsZXhidWY7XG4gICAgaWYgbm90IChZb2pzb24uU2FmZS5yZWFkX2VvZiBsZXhidWYpIHRoZW5cbiAgICAgIFlvanNvbi5qc29uX2Vycm9yIFwiSnVuayBhZnRlciBlbmQgb2YgSlNPTiB2YWx1ZVwiXG5cbiAgbGV0IGZyb21fbGV4YnVmID8oc3RyZWFtID0gZmFsc2UpIHJlYWQgbHMgbGV4YnVmID1cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIGxzIGxleGJ1ZjtcblxuICAgIGxldCB4ID1cbiAgICAgIGlmIFlvanNvbi5TYWZlLnJlYWRfZW9mIGxleGJ1ZiB0aGVuXG4gICAgICAgIHJhaXNlIFlvanNvbi5FbmRfb2ZfaW5wdXRcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZCBscyBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggbHMgbGV4YnVmO1xuXG4gICAgeFxuXG4gIGxldCBmcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSByZWFkIHMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcyBpblxuICAgIGxldCBscyA9IFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBmcm9tX2xleGJ1ZiByZWFkIGxzIGxleGJ1ZlxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gcmVhZCBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgbHMgPSBZb2pzb24uU2FmZS5pbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgZnJvbV9sZXhidWYgcmVhZCBscyBsZXhidWZcblxuICBsZXQgZnJvbV9maWxlID9idWYgP2ZuYW1lOnNyYyA/bG51bSByZWFkIGZuYW1lID1cbiAgICBsZXQgZm5hbWUwID1cbiAgICAgIG1hdGNoIHNyYyB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBmbmFtZVxuICAgICAgICB8IFNvbWUgcyAtPiBzXG4gICAgaW5cbiAgICBpbnB1dF9maWxlIGZuYW1lIChmdW4gaWMgLT4gZnJvbV9jaGFubmVsID9idWYgfmZuYW1lOmZuYW1lMCA/bG51bSByZWFkIGljKVxuXG4gICgqIHNlcV91bmZvbGQgaXMgU2VxLnVuZm9sZCwgbmVlZGVkIGZvciBvY2FtbCA8IDQuMTEgKilcbiAgbGV0IHJlYyBzZXFfdW5mb2xkIGYgdSAoKSA9XG4gICAgbWF0Y2ggZiB1IHdpdGhcbiAgICB8IE5vbmUgLT4gU2VxLk5pbFxuICAgIHwgU29tZSAoeCwgdScpIC0+IFNlcS5Db25zICh4LCBzZXFfdW5mb2xkIGYgdScpXG5cbiAgbGV0IHNlcV9mcm9tX2xleGJ1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgcmVhZCBscyBsZXhidWYgPVxuICAgIGxldCBmICgpID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgdiA9IGZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSByZWFkIGxzIGxleGJ1ZiBpblxuICAgICAgICBTb21lICh2LCAoKSlcbiAgICAgIHdpdGhcbiAgICAgICAgICBZb2pzb24uRW5kX29mX2lucHV0IC0+XG4gICAgICAgICAgICBmaW4gKCk7XG4gICAgICAgICAgICBOb25lXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgICAgKHRyeSBmaW4gKCkgd2l0aCBfIC0+ICgpKTtcbiAgICAgICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgICgqIFNlcS51bmZvbGQgaXMgb25seSBhdmFpbGFibGUgZnJvbSBvY2FtbCA0LjExICopXG4gICAgc2VxX3VuZm9sZCBmICgpXG5cbiAgbGV0IHNlcV9mcm9tX3N0cmluZyA/YnVmID9maW4gP2ZuYW1lID9sbnVtIHJlYWQgaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgaWMgaW5cbiAgICBsZXQgbHMgPSBZb2pzb24uU2FmZS5pbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmID9maW4gcmVhZCBscyBsZXhidWZcblxuICBsZXQgc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIHJlYWQgaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IGxzID0gWW9qc29uLlNhZmUuaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiA/ZmluIHJlYWQgbHMgbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2ZpbGUgP2J1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgP2ZuYW1lOnNyYyA/bG51bSByZWFkIGZuYW1lID1cbiAgICBsZXQgZm5hbWUwID1cbiAgICAgIG1hdGNoIHNyYyB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBmbmFtZVxuICAgICAgICB8IFNvbWUgcyAtPiBzXG4gICAgaW5cbiAgICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmbmFtZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbl9ub2VyciBpYzsgZmluICgpIGluXG4gICAgc2VxX2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gfmZuYW1lOmZuYW1lMCA/bG51bSByZWFkIGljXG5cbiAgbGV0IGxpc3RfZnJvbV9zdHJpbmcgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSByZWFkIGljID1cbiAgICBsZXQgc2VxID0gc2VxX2Zyb21fc3RyaW5nID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gcmVhZCBpYyBpblxuICAgIExpc3Qub2Zfc2VxIHNlcVxuXG4gIGxldCBsaXN0X2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIHJlYWQgaWMgPVxuICAgIGxldCBzZXEgPSBzZXFfZnJvbV9jaGFubmVsID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gcmVhZCBpYyBpblxuICAgIExpc3Qub2Zfc2VxIHNlcVxuXG4gIGxldCBsaXN0X2Zyb21fZmlsZSA/YnVmID9mbmFtZTpzcmMgP2xudW0gcmVhZCBmbmFtZSA9XG4gICAgbGV0IGZuYW1lMCA9XG4gICAgICBtYXRjaCBzcmMgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gZm5hbWVcbiAgICAgICAgfCBTb21lIHMgLT4gc1xuICAgIGluXG4gICAgbGV0IGljID0gb3Blbl9pbl9iaW4gZm5hbWUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW5fbm9lcnIgaWMgaW5cbiAgICBsaXN0X2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gfmZuYW1lOmZuYW1lMCA/bG51bSByZWFkIGljXG5cbiAgbGV0IHRvX3N0cmluZyA/KGxlbiA9IDEwMjQpIHdyaXRlIHggPVxuICAgIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgd3JpdGUgb2IgeDtcbiAgICBCdWZmZXIuY29udGVudHMgb2JcblxuICBsZXQgdG9fY2hhbm5lbCA/KGxlbiA9IDEwMjQpIHdyaXRlIG9jIHggPVxuICAgIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgd3JpdGUgb2IgeDtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYlxuXG4gIGxldCB0b19maWxlID9sZW4gd3JpdGUgZm5hbWUgeCA9XG4gICAgb3V0cHV0X2ZpbGUgZm5hbWUgKGZ1biBvYyAtPiB0b19jaGFubmVsID9sZW4gd3JpdGUgb2MgeClcblxuICBsZXQgc2VxX3RvX3N0cmluZyA/KGxlbiA9IDEwMjQpID8obGYgPSBcIlxcblwiKSB3cml0ZSBzZXEgPVxuICAgIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgU2VxLml0ZXIgKGZ1biB4IC0+IHdyaXRlIG9iIHg7IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIGxmKSBzZXE7XG4gICAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbiAgbGV0IHNlcV90b19jaGFubmVsID8obGVuID0gMTAyNCkgPyhsZiA9IFwiXFxuXCIpIHdyaXRlIG9jIHNlcSA9XG4gICAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBTZXEuaXRlciAoZnVuIHggLT4gd3JpdGUgb2IgeDsgQnVmZmVyLmFkZF9zdHJpbmcgb2IgbGYpIHNlcTtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYlxuXG4gIGxldCBzZXFfdG9fZmlsZSA/bGVuID9sZiB3cml0ZSBmbmFtZSBzZXEgPVxuICAgIG91dHB1dF9maWxlIGZuYW1lIChmdW4gb2MgLT4gc2VxX3RvX2NoYW5uZWwgP2xlbiA/bGYgd3JpdGUgb2Mgc2VxKVxuXG4gIGxldCBsaXN0X3RvX3N0cmluZyA/bGVuID9sZiB3cml0ZSBsID1cbiAgICBzZXFfdG9fc3RyaW5nID9sZW4gP2xmIHdyaXRlIChMaXN0LnRvX3NlcSBsKVxuXG4gIGxldCBsaXN0X3RvX2NoYW5uZWwgP2xlbiA/bGYgd3JpdGUgb2MgbCA9XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiA/bGYgd3JpdGUgb2MgKExpc3QudG9fc2VxIGwpXG5cbiAgbGV0IGxpc3RfdG9fZmlsZSA/bGVuID9sZiB3cml0ZSBmbmFtZSAgbCA9XG4gICAgc2VxX3RvX2ZpbGUgP2xlbiA/bGYgd3JpdGUgZm5hbWUgKExpc3QudG9fc2VxIGwpXG5cbiAgbGV0IHByZXNldF91bmtub3duX2ZpZWxkX2hhbmRsZXIgbG9jIG5hbWUgPVxuICAgIGxldCBtc2cgPVxuICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJGb3VuZCB1bmtub3duIEpTT04gZmllbGQgJXMgd2hpbGUgZXhwZWN0aW5nIHR5cGUgZGVmaW5lZCBhdDogJXNcIlxuICAgICAgICBuYW1lIGxvY1xuICAgIGluXG4gICAgZmFpbHdpdGggbXNnXG5cbiAgbGV0IHVua25vd25fZmllbGRfaGFuZGxlciA9IHJlZiBwcmVzZXRfdW5rbm93bl9maWVsZF9oYW5kbGVyXG5lbmRcblxubW9kdWxlIFZhbGlkYXRpb24gPVxuc3RydWN0XG4gIHR5cGUgcGF0aF9lbGVtID0gWyBgRmllbGQgb2Ygc3RyaW5nIHwgYEluZGV4IG9mIGludCBdXG4gIHR5cGUgcGF0aCA9IHBhdGhfZWxlbSBsaXN0XG5cbiAgbGV0IHN0cmluZ19vZl9wYXRoIGwgPVxuICAgIFN0cmluZy5jb25jYXQgXCJcIiAoXG4gICAgICBMaXN0LnJldl9tYXAgKFxuICAgICAgICBmdW5jdGlvblxuICAgICAgICAgIHwgYEZpZWxkIHMgLT4gXCIuXCIgXiBzXG4gICAgICAgICAgfCBgSW5kZXggbiAtPiBcIltcIiBeIHN0cmluZ19vZl9pbnQgbiBeIFwiXVwiXG4gICAgICApIGxcbiAgICApXG5cbiAgdHlwZSBlcnJvciA9IHtcbiAgICBlcnJvcl9wYXRoIDogcGF0aDtcbiAgICBlcnJvcl9tc2cgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGVycm9yID9tc2cgcGF0aCA9IHtcbiAgICBlcnJvcl9wYXRoID0gcGF0aDtcbiAgICBlcnJvcl9tc2cgPSBtc2c7XG4gIH1cblxuICBsZXQgc3RyaW5nX29mX2Vycm9yIHggPVxuICAgIGxldCBwYXRoID0gc3RyaW5nX29mX3BhdGggeC5lcnJvcl9wYXRoIGluXG4gICAgbWF0Y2ggeC5lcnJvcl9tc2cgd2l0aFxuICAgICAgICBOb25lIC0+XG4gICAgICAgICAgXCJWYWxpZGF0aW9uIGVycm9yOyBwYXRoID0gPHJvb3Q+XCIgXiBwYXRoXG4gICAgICB8IFNvbWUgbXNnIC0+XG4gICAgICAgICAgUHJpbnRmLnNwcmludGYgXCJWYWxpZGF0aW9uIGVycm9yOiAlczsgcGF0aCA9IDxyb290PiVzXCIgbXNnIHBhdGhcbmVuZFxuIiwibGV0IHZhbGlkYXRlX2xpc3QgZiBwYXRoIGwgPVxuICBsZXQgcmVjIGxvb3AgZiBwYXRoIGkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBzdWJwYXRoID0gYEluZGV4IGkgOjogcGF0aCBpblxuICAgICAgICBtYXRjaCBmIHN1YnBhdGggeCB3aXRoXG4gICAgICAgICAgICBOb25lIC0+IGxvb3AgZiBwYXRoIChpKzEpIGxcbiAgICAgICAgICB8IGVyciAtPiBlcnJcbiAgaW5cbiAgbG9vcCBmIHBhdGggMCBsXG5cbmxldCB2YWxpZGF0ZV9hcnJheSBmIHBhdGggYSA9XG4gIGxldCByZWMgbG9vcCBmIHBhdGggYSBsZW4gaSA9XG4gICAgaWYgaSA+PSBsZW4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiAoYEluZGV4IGkgOjogcGF0aCkgYS4oaSkgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gbG9vcCBmIHBhdGggYSBsZW4gKGkrMSlcbiAgICAgICAgfCBlcnIgLT4gZXJyXG4gIGluXG4gIGxvb3AgZiBwYXRoIGEgKEFycmF5Lmxlbmd0aCBhKSAwXG5cbmxldCB2YWxpZGF0ZV9vcHRpb24gZiBwYXRoID0gZnVuY3Rpb25cbiAgICBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHggLT4gZiBwYXRoIHhcbiIsIigqXG4gIFJ1bnRpbWUgbGlicmFyeSBmb3IgSlNPTlxuKilcblxub3BlbiBQcmludGZcblxudHlwZSAnYSB3cml0ZSA9IEJ1ZmZlci50IC0+ICdhIC0+IHVuaXRcblxuZXhjZXB0aW9uIEVycm9yIG9mIHN0cmluZ1xuXG4oKlxuICBFcnJvciBtZXNzYWdlc1xuKilcbmxldCBlcnJvciBzID0gcmFpc2UgKEVycm9yIHMpXG5cbmxldCBlcnJvcl93aXRoX2xpbmUgcCBzID1cbiAgbGV0IHMyID1cbiAgICBtYXRjaCBwLllvanNvbi5MZXhlcl9zdGF0ZS5mbmFtZSB3aXRoXG4gICAgICBTb21lIGYgLT4gc3ByaW50ZiBcIkZpbGUgJXMsIGxpbmUgJWk6XFxuJXNcIiBmIHAuWW9qc29uLkxleGVyX3N0YXRlLmxudW0gc1xuICAgIHwgTm9uZSAtPiBzcHJpbnRmIFwiTGluZSAlaTpcXG4lc1wiIHAuWW9qc29uLkxleGVyX3N0YXRlLmxudW0gc1xuICBpblxuICByYWlzZSAoRXJyb3IgczIpXG5cblxubGV0IGxpc3RfaXRlciBmIHNlcCB4IGwgPVxuICBsZXQgcmVjIGF1eCBmIHNlcCB4ID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+ICgpXG4gICAgfCB5IDo6IGwgLT5cbiAgICAgICAgc2VwIHg7XG4gICAgICAgIGYgeCB5O1xuICAgICAgICBhdXggZiBzZXAgeCBsXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICAgICAgW10gLT4gKClcbiAgICB8IHkgOjogbCAtPlxuICAgICAgICBmIHggeTtcbiAgICAgICAgYXV4IGYgc2VwIHggbFxuXG5sZXQgYXJyYXlfaXRlciBmIHNlcCB4IGEgPVxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGlmIG4gPiAwIHRoZW4gKFxuICAgIGYgeCAoQXJyYXkudW5zYWZlX2dldCBhIDApO1xuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgc2VwIHg7XG4gICAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgYSBpKVxuICAgIGRvbmVcbiAgKVxuXG5sZXQgd3JpdGVfY29tbWEgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCB3cml0ZV9saXN0IHdyaXRlX2l0ZW0gb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGxpc3RfaXRlciB3cml0ZV9pdGVtIHdyaXRlX2NvbW1hIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IHdyaXRlX2FycmF5IHdyaXRlX2l0ZW0gb2IgYSA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGFycmF5X2l0ZXIgd3JpdGVfaXRlbSB3cml0ZV9jb21tYSBvYiBhO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCB3cml0ZV9hc3NvY19saXN0IHdyaXRlX2tleSB3cml0ZV9pdGVtIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBsaXN0X2l0ZXIgKFxuICAgIGZ1biBvYiAoaywgdikgLT5cbiAgICAgIHdyaXRlX2tleSBvYiBrO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICAgIHdyaXRlX2l0ZW0gb2IgdlxuICApIHdyaXRlX2NvbW1hIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHdyaXRlX2Fzc29jX2FycmF5IHdyaXRlX2tleSB3cml0ZV9pdGVtIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBhcnJheV9pdGVyIChcbiAgICBmdW4gb2IgKGssIHYpIC0+XG4gICAgICB3cml0ZV9rZXkgb2IgaztcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICB3cml0ZV9pdGVtIG9iIHZcbiAgKSB3cml0ZV9jb21tYSBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cblxubGV0IHdyaXRlX29wdGlvbiB3cml0ZV9pdGVtIG9iID0gZnVuY3Rpb25cbiAgICBOb25lIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiPFxcXCJOb25lXFxcIj5cIlxuICB8IFNvbWUgeCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI8XFxcIlNvbWVcXFwiOlwiO1xuICAgICAgd3JpdGVfaXRlbSBvYiB4O1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI+XCJcblxubGV0IHdyaXRlX3N0ZF9vcHRpb24gd3JpdGVfaXRlbSBvYiA9IGZ1bmN0aW9uXG4gICAgTm9uZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJOb25lXFxcIlwiXG4gIHwgU29tZSB4IC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU29tZVxcXCIsXCI7XG4gICAgICB3cml0ZV9pdGVtIG9iIHg7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIl1cIlxuXG5sZXQgd3JpdGVfbnVsbGFibGUgd3JpdGVfaXRlbSBvYiA9IGZ1bmN0aW9uXG4gICAgTm9uZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuICB8IFNvbWUgeCAtPiB3cml0ZV9pdGVtIG9iIHhcblxubGV0IHdyaXRlX2ludF9hc19zdHJpbmcgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICBZb2pzb24uU2FmZS53cml0ZV9pbnQgb2IgeDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IHdyaXRlX2ludDggb2IgeCA9XG4gIFlvanNvbi5TYWZlLndyaXRlX2ludCBvYiAoaW50X29mX2NoYXIgeClcblxubGV0IHdyaXRlX2ludDhfYXNfc3RyaW5nIG9iIHggPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfaW50OCBvYiB4O1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQgd3JpdGVfaW50MzIgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChJbnQzMi50b19zdHJpbmcgeClcblxubGV0IHdyaXRlX2ludDMyX2FzX3N0cmluZyBvYiB4ID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX2ludDMyIG9iIHg7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCB3cml0ZV9pbnQ2NCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKEludDY0LnRvX3N0cmluZyB4KVxuXG5sZXQgd3JpdGVfaW50NjRfYXNfc3RyaW5nIG9iIHggPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfaW50NjQgb2IgeDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IG1pbl9mbG9hdCA9IGZsb2F0IG1pbl9pbnRcbmxldCBtYXhfZmxvYXQgPSBmbG9hdCBtYXhfaW50XG5cbmxldCB3cml0ZV9mbG9hdF9hc19pbnQgb2IgeCA9XG4gIGlmIHggPj0gbWluX2Zsb2F0ICYmIHggPD0gbWF4X2Zsb2F0IHRoZW5cbiAgICBZb2pzb24uU2FmZS53cml0ZV9pbnQgb2JcbiAgICAgIChpbnRfb2ZfZmxvYXQgKGlmIHggPCAwLiB0aGVuIHggLS4gMC41IGVsc2UgeCArLiAwLjUpKVxuICBlbHNlXG4gICAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgICAgIEZQX25vcm1hbFxuICAgICAgfCBGUF9zdWJub3JtYWxcbiAgICAgIHwgRlBfemVybyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiAoUHJpbnRmLnNwcmludGYgXCIlLjBmXCIgeClcbiAgICAgIHwgRlBfaW5maW5pdGUgLT4gZXJyb3IgXCJDYW5ub3QgY29udmVydCBpbmYgb3IgLWluZiBpbnRvIGEgSlNPTiBpbnRcIlxuICAgICAgfCBGUF9uYW4gLT4gZXJyb3IgXCJDYW5ub3QgY29udmVydCBOYU4gaW50byBhIEpTT04gaW50XCJcblxubGV0IHdyaXRlX2Zsb2F0X2FzX2ludF9zdHJpbmcgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9mbG9hdF9hc19pbnQgb2IgeDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxudHlwZSAnYSByZWFkID0gWW9qc29uLmxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gJ2FcblxubGV0IHJlYWRfbnVsbCBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX251bGwgcCBsYlxuXG5sZXQgcmVhZF9ib29sIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfYm9vbCBwIGxiXG5cbmxldCByZWFkX2ludCBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2ludCBwIGxiXG5cbmxldCByZWFkX2ludDggcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9pbnQ4IHAgbGJcblxubGV0IHJlYWRfaW50MzIgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9pbnQzMiBwIGxiXG5cbmxldCByZWFkX2ludDY0IHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfaW50NjQgcCBsYlxuXG5sZXQgcmVhZF9udW1iZXIgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9udW1iZXIgcCBsYlxuXG5sZXQgcmVhZF9zdHJpbmcgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9zdHJpbmcgcCBsYlxuXG5sZXQgcmVhZF9qc29uIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfanNvbiBwIGxiXG5cbmxldCByZWFkX2xpc3QgcmVhZF9pdGVtIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfbGlzdCByZWFkX2l0ZW0gcCBsYlxuXG5sZXQgcmVhZF9hcnJheSByZWFkX2l0ZW0gcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9hcnJheSByZWFkX2l0ZW0gcCBsYlxuXG5sZXQgcmVhZF9hc3NvY19saXN0X3JldiByZWFkX2tleSByZWFkX2l0ZW0gcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgbGV0IHJlYWQgYWNjIGsgcCBsYiA9IChrLCByZWFkX2l0ZW0gcCBsYikgOjogYWNjIGluXG4gIFlvanNvbi5TYWZlLnJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfa2V5IHJlYWQgW10gcCBsYlxuXG5sZXQgcmVhZF9hc3NvY19saXN0IHJlYWRfa2V5IHJlYWRfaXRlbSBwIGxiID1cbiAgTGlzdC5yZXYgKHJlYWRfYXNzb2NfbGlzdF9yZXYgcmVhZF9rZXkgcmVhZF9pdGVtIHAgbGIpXG5cbmxldCBhcnJheV9vZl9yZXZfbGlzdCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAtPiBbfCB8XVxuICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgZm9yIGkgPSBsZW4gLSAyIGRvd250byAwIGRvXG4gICAgICAgICAgYS4oaSkgPC0gTGlzdC5oZCAhcjtcbiAgICAgICAgICByIDo9IExpc3QudGwgIXJcbiAgICAgICAgZG9uZTtcbiAgICAgICAgYVxuXG5sZXQgcmVhZF9hc3NvY19hcnJheSByZWFkX2tleSByZWFkX2l0ZW0gcCBsYiA9XG4gIGFycmF5X29mX3Jldl9saXN0IChyZWFkX2Fzc29jX2xpc3RfcmV2IHJlYWRfa2V5IHJlYWRfaXRlbSBwIGxiKVxuXG5sZXQgcmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2NvbG9uIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYlxuXG5sZXQgbWlzc2luZ190dXBsZV9maWVsZHMgcCBsZW4gcmVxX2ZpZWxkcyA9XG4gIGxldCBtaXNzaW5nID1cbiAgICBMaXN0LmZvbGRfcmlnaHQgKFxuICAgICAgZnVuIGkgYWNjIC0+IGlmIGkgPj0gbGVuIHRoZW4gaSA6OiBhY2MgZWxzZSBhY2NcbiAgICApIHJlcV9maWVsZHMgW11cbiAgaW5cbiAgZXJyb3Jfd2l0aF9saW5lIHAgKHNwcmludGYgXCJNaXNzaW5nIHR1cGxlIGZpZWxkJXMgJXNcIlxuICAgICAgICAgICAoaWYgTGlzdC5sZW5ndGggbWlzc2luZyA+IDEgdGhlbiBcInNcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgIChTdHJpbmcuY29uY2F0IFwiLCBcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2ludCBtaXNzaW5nKSkpXG5cbmxldCBtaXNzaW5nX2ZpZWxkIHAgZmllbGRfbmFtZSA9XG4gIGVycm9yX3dpdGhfbGluZSBwIChzcHJpbnRmIFwiTWlzc2luZyByZWNvcmQgZmllbGQgJXNcIiBmaWVsZF9uYW1lKVxuXG5sZXQgbWlzc2luZ19maWVsZHMgcCBiaXRfZmllbGRzIGZpZWxkX25hbWVzID1cbiAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICBmb3IgeiA9IEFycmF5Lmxlbmd0aCBmaWVsZF9uYW1lcyAtIDEgZG93bnRvIDAgZG9cbiAgICBsZXQgaSA9IHogLyAzMSBpblxuICAgIGxldCBqID0geiBtb2QgMzEgaW5cbiAgICBpZiBiaXRfZmllbGRzLihpKSBsYW5kICgxIGxzbCBqKSA9IDAgdGhlblxuICAgICAgYWNjIDo9IGZpZWxkX25hbWVzLih6KSA6OiAhYWNjXG4gIGRvbmU7XG4gIGVycm9yX3dpdGhfbGluZSBwIChzcHJpbnRmIFwiTWlzc2luZyByZWNvcmQgZmllbGQlcyAlc1wiXG4gICAgICAgICAgIChpZiBMaXN0Lmxlbmd0aCAhYWNjID4gMSB0aGVuIFwic1wiIGVsc2UgXCJcIilcbiAgICAgICAgICAgKFN0cmluZy5jb25jYXQgXCIsIFwiICFhY2MpKVxuXG5sZXQgaW52YWxpZF92YXJpYW50X3RhZyBwIHMgPVxuICBlcnJvcl93aXRoX2xpbmUgcCAoc3ByaW50ZiBcIlVuc3VwcG9ydGVkIHZhcmlhbnQgJVNcIiBzKVxuXG5sZXQgcmVhZF93aXRoX2FkYXB0ZXIgbm9ybWFsaXplIHJlYWRlciBwIGxiID1cbiAgbGV0IGFzdCA9IFlvanNvbi5TYWZlLnJlYWRfanNvbiBwIGxiIGluXG4gIGxldCBhc3QnID0gbm9ybWFsaXplIGFzdCBpblxuICBsZXQgcycgPSBZb2pzb24uU2FmZS50b19zdHJpbmcgYXN0JyBpblxuICBsZXQgbGInID0gTGV4aW5nLmZyb21fc3RyaW5nIHMnIGluXG4gIHJlYWRlciBwIGxiJ1xuXG5sZXQgd3JpdGVfd2l0aF9hZGFwdGVyIHJlc3RvcmUgd3JpdGVyIG9iIHggPVxuICBsZXQgb2JfdG1wID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIHdyaXRlciBvYl90bXAgeDtcbiAgbGV0IHNfdG1wID0gQnVmZmVyLmNvbnRlbnRzIG9iX3RtcCBpblxuICBsZXQgYXN0ID0gWW9qc29uLlNhZmUuZnJvbV9zdHJpbmcgc190bXAgaW5cbiAgbGV0IGFzdCcgPSByZXN0b3JlIGFzdCBpblxuICBZb2pzb24uU2FmZS50b19idWZmZXIgb2IgYXN0J1xuXG4oKlxuICBDaGVja2luZyBhdCBydW50aW1lIHRoYXQgb3VyIGFzc3VtcHRpb25zIG9uIHVuc3BlY2lmaWVkIGNvbXBpbGVyIGJlaGF2aW9yXG4gIHN0aWxsIGhvbGQuXG4gICBUT0RPOiB3aGF0IGFyZSB0aGVzZSBhc3N1bXB0aW9ucyBhbmQgd2hpY2ggY29tcG9uZW50IG1ha2VzIHRoZW0/XG4qKVxudHlwZSB0ID0ge1xuICBfYSA6IGludCBvcHRpb247XG4gIF9iIDogaW50O1xufVxuXG4oKiBUaGlzIG11c3QgYmUgYSB0ZXN0IGZvciB0aGUgdHlwZSBjaGVja2VyIHNpbmNlIHRoZSBmdW5jdGlvbiBpc24ndCB1c2VkXG4gICBhbnl3aGVyZS4gKilcbmxldCBfdGVzdCAoKSA9XG4gIHsgeyBfYSA9IE5vbmU7IF9iID0gQXJyYXkubGVuZ3RoIFN5cy5hcmd2IH0gd2l0aCBfYSA9IE5vbmUgfVxuIiwiW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuKCpcbiAgUnVudGltZSBsaWJyYXJ5XG4qKVxuXG5vcGVuIFByaW50ZlxuXG5leGNlcHRpb24gRXJyb3Igb2Ygc3RyaW5nXG5cbigqXG4gIEVycm9yIG1lc3NhZ2VzXG4qKVxubGV0IGVycm9yIHMgPSByYWlzZSAoRXJyb3IgcylcblxubGV0IHJlYWRfZXJyb3IgKCkgPVxuICBlcnJvciBcIlJlYWQgZXJyb3JcIlxuXG5sZXQgcmVhZF9lcnJvcl9hdCBpYiA9XG4gIGVycm9yIChzcHJpbnRmIFwiUmVhZCBlcnJvciAoJWkpXCIgaWIuQmlfaW5idWYuaV9wb3MpXG5cbmxldCB0YWdfZXJyb3IgdGFnIHMgPVxuICBlcnJvciAoc3ByaW50ZiBcIkZvdW5kIHdyb25nIHRhZyAlaSBmb3IgJXNcIiB0YWcgcylcblxubGV0IHVuc3VwcG9ydGVkX3ZhcmlhbnQgaCBoYXNfYXJnID1cbiAgZXJyb3IgKHNwcmludGYgXCJVbnN1cHBvcnRlZCB2YXJpYW50IChoYXNoPSVpLCBhcmc9JUIpXCIgaCBoYXNfYXJnKVxuXG5cbmxldCBtaXNzaW5nX3R1cGxlX2ZpZWxkcyBsZW4gcmVxX2ZpZWxkcyA9XG4gIGxldCBtaXNzaW5nID1cbiAgICBMaXN0LmZvbGRfcmlnaHQgKFxuICAgICAgZnVuIGkgYWNjIC0+IGlmIGkgPj0gbGVuIHRoZW4gaSA6OiBhY2MgZWxzZSBhY2NcbiAgICApIHJlcV9maWVsZHMgW11cbiAgaW5cbiAgZXJyb3IgKHNwcmludGYgXCJNaXNzaW5nIHR1cGxlIGZpZWxkJXMgJXNcIlxuICAgICAgICAgICAoaWYgTGlzdC5sZW5ndGggbWlzc2luZyA+IDEgdGhlbiBcInNcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgIChTdHJpbmcuY29uY2F0IFwiLCBcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2ludCBtaXNzaW5nKSkpXG5cblxubGV0IG1pc3NpbmdfZmllbGRzIGJpdF9maWVsZHMgZmllbGRfbmFtZXMgPVxuICBsZXQgYWNjID0gcmVmIFtdIGluXG4gIGZvciB6ID0gQXJyYXkubGVuZ3RoIGZpZWxkX25hbWVzIC0gMSBkb3dudG8gMCBkb1xuICAgIGxldCBpID0geiAvIDMxIGluXG4gICAgbGV0IGogPSB6IG1vZCAzMSBpblxuICAgIGlmIGJpdF9maWVsZHMuKGkpIGxhbmQgKDEgbHNsIGopID0gMCB0aGVuXG4gICAgICBhY2MgOj0gZmllbGRfbmFtZXMuKHopIDo6ICFhY2NcbiAgZG9uZTtcbiAgZXJyb3IgKHNwcmludGYgXCJNaXNzaW5nIHJlY29yZCBmaWVsZCVzICVzXCJcbiAgICAgICAgICAgKGlmIExpc3QubGVuZ3RoICFhY2MgPiAxIHRoZW4gXCJzXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCBcIiwgXCIgIWFjYykpXG5cblxuKCpcbiAgUmVhZGVyc1xuKilcblxubGV0IGdldF91bml0X3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby51bml0X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF91bml0XG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwidW5pdFwiXG5cbmxldCByZWFkX3VuaXQgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLnVuaXRfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX3VuaXQgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9ib29sX3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5ib29sX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9ib29sXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiYm9vbFwiXG5cbmxldCByZWFkX2Jvb2wgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmJvb2xfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2Jvb2wgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9pbnRfcmVhZGVyIHRhZyA9XG4gIG1hdGNoIHRhZyB3aXRoXG4gICAgICAxIC0+IEJpX2lvLnJlYWRfdW50YWdnZWRfaW50OFxuICAgIHwgMiAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDE2XG4gICAgfCAxNiAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX3V2aW50XG4gICAgfCAxNyAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX3N2aW50XG4gICAgfCBfIC0+IHRhZ19lcnJvciB0YWcgXCJpbnRcIlxuXG5sZXQgcmVhZF9pbnQgaWIgPVxuICBtYXRjaCBCaV9pby5yZWFkX3RhZyBpYiB3aXRoXG4gICAgICAxIC0+IEJpX2lvLnJlYWRfdW50YWdnZWRfaW50OCBpYlxuICAgIHwgMiAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDE2IGliXG4gICAgfCAxNiAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX3V2aW50IGliXG4gICAgfCAxNyAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX3N2aW50IGliXG4gICAgfCBfIC0+IHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9jaGFyX3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5pbnQ4X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9jaGFyXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiY2hhclwiXG5cbmxldCByZWFkX2NoYXIgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmludDhfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2NoYXIgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9pbnQxNl9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uaW50MTZfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDE2XG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiaW50MTZcIlxuXG5sZXQgcmVhZF9pbnQxNiBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uaW50MTZfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDE2IGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCBnZXRfaW50MzJfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLmludDMyX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQzMlxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImludDMyXCJcblxubGV0IHJlYWRfaW50MzIgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmludDMyX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQzMiBpYlxuICBlbHNlXG4gICAgcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgZ2V0X2ludDY0X3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5pbnQ2NF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfaW50NjRcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJpbnQ2NFwiXG5cbmxldCByZWFkX2ludDY0IGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5pbnQ2NF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfaW50NjQgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9mbG9hdDMyX3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5mbG9hdDMyX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9mbG9hdDMyXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiZmxvYXQzMlwiXG5cbmxldCBnZXRfZmxvYXQ2NF9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uZmxvYXQ2NF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfZmxvYXQ2NFxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImZsb2F0NjRcIlxuXG5sZXQgZ2V0X2Zsb2F0X3JlYWRlciA9IGdldF9mbG9hdDY0X3JlYWRlclxuXG5sZXQgcmVhZF9mbG9hdDMyIGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5mbG9hdDMyX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9mbG9hdDMyIGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCByZWFkX2Zsb2F0NjQgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmZsb2F0NjRfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2Zsb2F0NjQgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IHJlYWRfZmxvYXQgPSByZWFkX2Zsb2F0NjRcblxubGV0IGdldF9zdHJpbmdfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLnN0cmluZ190YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfc3RyaW5nXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwic3RyaW5nXCJcblxubGV0IHJlYWRfc3RyaW5nIGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5zdHJpbmdfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX3N0cmluZyBpYlxuICBlbHNlXG4gICAgcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgcmVhZF9hcnJheV92YWx1ZSBnZXRfcmVhZGVyIGliID1cbiAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBpZiBsZW4gPSAwIHRoZW4gW3wgfF1cbiAgZWxzZVxuICAgIGxldCByZWFkZXIgPSBnZXRfcmVhZGVyIChCaV9pby5yZWFkX3RhZyBpYikgaW5cbiAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIChyZWFkZXIgaWIpIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQgYSBpIChyZWFkZXIgaWIpXG4gICAgZG9uZTtcbiAgICBhXG5cbmxldCByZWFkX2xpc3RfdmFsdWUgZ2V0X3JlYWRlciBpYiA9XG4gIEFycmF5LnRvX2xpc3QgKHJlYWRfYXJyYXlfdmFsdWUgZ2V0X3JlYWRlciBpYilcblxubGV0IGdldF9hcnJheV9yZWFkZXIgZ2V0X3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5hcnJheV90YWcgdGhlblxuICAgIHJlYWRfYXJyYXlfdmFsdWUgZ2V0X3JlYWRlclxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImFycmF5XCJcblxubGV0IGdldF9saXN0X3JlYWRlciBnZXRfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLmFycmF5X3RhZyB0aGVuXG4gICAgZnVuIGliIC0+IEFycmF5LnRvX2xpc3QgKHJlYWRfYXJyYXlfdmFsdWUgZ2V0X3JlYWRlciBpYilcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJsaXN0XCJcblxubGV0IHJlYWRfYXJyYXkgZ2V0X3JlYWRlciBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uYXJyYXlfdGFnIHRoZW5cbiAgICByZWFkX2FycmF5X3ZhbHVlIGdldF9yZWFkZXIgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IHJlYWRfbGlzdCByZWFkIGliID1cbiAgQXJyYXkudG9fbGlzdCAocmVhZF9hcnJheSByZWFkIGliKVxuXG5cbigqXG4gIFdyaXRlcnNcbiopXG5cbmxldCB3cml0ZV90YWdnZWQgdGFnIHdyaXRlIGJ1ZiB4ID1cbiAgQmlfaW8ud3JpdGVfdGFnIGJ1ZiB0YWc7XG4gIHdyaXRlIGJ1ZiB4XG5cbmxldCB3cml0ZV91bnRhZ2dlZF9vcHRpb24gd3JpdGUgYnVmIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIE5vbmUgLT4gQmlfaW8ud3JpdGVfbnVtdGFnIGJ1ZiAwIGZhbHNlXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQmlfaW8ud3JpdGVfbnVtdGFnIGJ1ZiAwIHRydWU7XG4gICAgICAgIHdyaXRlIGJ1ZiB4XG5cbmxldCB3cml0ZV9vcHRpb24gd3JpdGUgYnVmIHggPVxuICBCaV9pby53cml0ZV90YWcgYnVmIEJpX2lvLm51bV92YXJpYW50X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfb3B0aW9uIHdyaXRlIGJ1ZiB4XG5cbmxldCBhcnJheV9pbml0MiBsZW4geCBmID1cbiAgaWYgbGVuID0gMCB0aGVuIFt8IHxdXG4gIGVsc2VcbiAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIChmIDAgeCkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgQXJyYXkudW5zYWZlX3NldCBhIGkgKGYgaSB4KVxuICAgIGRvbmU7XG4gICAgYVxuXG5sZXQgYXJyYXlfaW5pdDMgbGVuIHggeSBmID1cbiAgaWYgbGVuID0gMCB0aGVuIFt8IHxdXG4gIGVsc2VcbiAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIChmIDAgeCB5KSBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGEgaSAoZiBpIHggeSlcbiAgICBkb25lO1xuICAgIGFcblxubGV0IGFycmF5X2l0ZXIyIGYgeCBhID1cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgIGYgeCAoQXJyYXkudW5zYWZlX2dldCBhIGkpXG4gIGRvbmVcblxubGV0IGFycmF5X2l0ZXIzIGYgeCB5IGEgPVxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgZiB4IHkgKEFycmF5LnVuc2FmZV9nZXQgYSBpKVxuICBkb25lXG5cblxubGV0IHJlYyBsaXN0X2l0ZXIyIGYgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGYgeCB5O1xuICAgICAgbGlzdF9pdGVyMiBmIHggbFxuXG5sZXQgcmVjIGxpc3RfaXRlcjMgZiB4IHkgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeiA6OiBsIC0+XG4gICAgICBmIHggeSB6O1xuICAgICAgbGlzdF9pdGVyMyBmIHggeSBsXG5cblxubGV0IHdyaXRlX3VudGFnZ2VkX2FycmF5IGNlbGxfdGFnIHdyaXRlIGJ1ZiBhID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIEJpX3ZpbnQud3JpdGVfdXZpbnQgYnVmIGxlbjtcbiAgaWYgbGVuID4gMCB0aGVuIChcbiAgICBCaV9pby53cml0ZV90YWcgYnVmIGNlbGxfdGFnO1xuICAgIGFycmF5X2l0ZXIyIHdyaXRlIGJ1ZiBhXG4gIClcblxubGV0IHdyaXRlX2FycmF5IGNlbGxfdGFnIHdyaXRlIGJ1ZiBhID1cbiAgQmlfaW8ud3JpdGVfdGFnIGJ1ZiBCaV9pby5hcnJheV90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2FycmF5IGNlbGxfdGFnIHdyaXRlIGJ1ZiBhXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9saXN0IGNlbGxfdGFnIHdyaXRlIGJ1ZiBsID1cbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgQmlfdmludC53cml0ZV91dmludCBidWYgbGVuO1xuICBpZiBsZW4gPiAwIHRoZW4gKFxuICAgIEJpX2lvLndyaXRlX3RhZyBidWYgY2VsbF90YWc7XG4gICAgbGlzdF9pdGVyMiB3cml0ZSBidWYgbFxuICApXG5cbmxldCB3cml0ZV9saXN0IGNlbGxfdGFnIHdyaXRlIGJ1ZiBsID1cbiAgQmlfaW8ud3JpdGVfdGFnIGJ1ZiBCaV9pby5hcnJheV90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2xpc3QgY2VsbF90YWcgd3JpdGUgYnVmIGxcblxuKCpcbiAgc2hvcnRjdXQgZm9yIGdldHRpbmcgdGhlIHRhZyBvZiBhIHBvbHltb3JwaGljIHZhcmlhbnQgc2luY2VcbiAgYmluaW91IHVzZXMgdGhlIHNhbWUgcmVwcmVzZW50YXRpb25cbiAgKHVzZWZ1bG5lc3M/KVxuKilcbmxldCBnZXRfcG9seV90YWcgKHggOiBbPiBdKSA9XG4gIGxldCByID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmouaXNfYmxvY2sgciB0aGVuXG4gICAgKE9iai5vYmogKE9iai5maWVsZCByIDApIDogaW50KVxuICBlbHNlXG4gICAgKE9iai5vYmogciA6IGludClcblxuKCogV2Ugd2FudCBhbiBpZGVudGl0eSBmdW5jdGlvbiB0aGF0IGlzIG5vdCBpbmxpbmVkICopXG50eXBlIGlkZW50aXR5X3QgPSB7IG11dGFibGUgX2lkZW50aXR5IDogJ2EuICdhIC0+ICdhIH1cbmxldCBpZGVudGl0eV9yZWYgPSB7IF9pZGVudGl0eSA9IChmdW4geCAtPiB4KSB9XG5sZXQgaWRlbnRpdHkgeCA9IGlkZW50aXR5X3JlZi5faWRlbnRpdHkgeFxuXG4oKlxuICBDaGVja2luZyBhdCBydW50aW1lIHRoYXQgb3VyIGFzc3VtcHRpb25zIG9uIHVuc3BlY2lmaWVkIGNvbXBpbGVyIGJlaGF2aW9yXG4gIHN0aWxsIGhvbGQuXG4qKVxuXG50eXBlIHQgPSB7XG4gIF9hIDogaW50IG9wdGlvbjtcbiAgX2IgOiBpbnQ7XG59XG5cbmxldCBjcmVhdGUgKCkgPVxuICB7IHsgX2EgPSBOb25lOyBfYiA9IEFycmF5Lmxlbmd0aCBTeXMuYXJndiB9IHdpdGggX2EgPSBOb25lIH1cblxuKCpcbiAgIFRoaXMgaXMgYSBydW50aW1lIHRlc3QgdGhhdCBjaGVja3Mgd2hldGhlciBvdXIgYXNzdW1wdGlvbnMgYWJvdXRcbiAgIHRoZSBjb21waWxlciBzdGlsbCBob2xkLlxuXG4gICBXZSBnZXQgdGhlIGZvbGxvd2luZyB3YXJuaW5nIHdoZW4gdXNpbmcgYW4gT0NhbWwgY29tcGlsZXIgYnVpbHRcbiAgIHdpdGggdGhlIGZsYW1iZGEgb3B0aW1pemF0aW9uLiBUaGlzIGlzIHByb2JhYmx5IGEgZ29vZCB3YXJuaW5nXG4gICBhbmQgc2hvdWxkbid0IGJlIGlnbm9yZWQgaWYgdGhlIE9DYW1sL2JpbmlvdSBpcyB0byBiZSB1c2VkLlxuICAgVGhpcyB3b24ndCBhZmZlY3QgdGhlIE9DYW1sL0pTT04gYmFja2VuZC5cblxuICAgPiBXYXJuaW5nIDU5IFtmbGFtYmRhLWFzc2lnbm1lbnQtdG8tbm9uLW11dGFibGUtdmFsdWVdOiBBIHBvdGVudGlhbFxuICAgPiBhc3NpZ25tZW50IHRvIGEgbm9uLW11dGFibGUgdmFsdWUgd2FzIGRldGVjdGVkIGluIHRoaXMgc291cmNlIGZpbGUuXG4gICA+IFN1Y2ggYXNzaWdubWVudHMgbWF5IGdlbmVyYXRlIGluY29ycmVjdCBjb2RlIHdoZW4gdXNpbmcgRmxhbWJkYS5cbiopXG5sZXQgdGVzdCAoKSA9XG4gIGxldCByID0gY3JlYXRlICgpIGluXG4gIGxldCB2ID0gU29tZSAxNyBpblxuICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciByKSAwIChPYmoucmVwciB2KTtcbiAgbGV0IHNhZmVfciA9IGlkZW50aXR5IHIgaW5cbiAgKCogci5fYSBpcyBpbmxpbmVkIGJ5IG9jYW1sb3B0IGFuZCBlcXVhbHMgTm9uZVxuICAgICBiZWNhdXNlIHRoZSBmaWVsZCBpcyBzdXBwb3NlZCB0byBiZSBpbW11dGFibGUuICopXG4gIGFzc2VydCAoc2FmZV9yLl9hID0gdilcblxubGV0ICgpID0gdGVzdCAoKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuIiwiKCogSnNvbiBhZGFwdGVycy4gU2VlIC5tbGkuICopXG5cbmxldCBub3JtYWxpemVfdHlwZV9maWVsZCB0eXBlX2ZpZWxkX25hbWUgKHggOiBZb2pzb24uU2FmZS50KSA6IFlvanNvbi5TYWZlLnQgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgQXNzb2MgZmllbGRzIC0+XG4gICAgICAobWF0Y2ggTGlzdC5hc3NvYyB0eXBlX2ZpZWxkX25hbWUgZmllbGRzIHdpdGhcbiAgICAgICB8IGBTdHJpbmcgdHlwZV8gLT4gYExpc3QgWyBgU3RyaW5nIHR5cGVfOyB4IF1cbiAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4geFxuICAgICAgIHwgXyAtPiB4ICgqIG1hbGZvcm1lZCAqKVxuICAgICAgKVxuICB8IGBTdHJpbmcgdHlwZV8gYXMgeCAtPiB4XG4gIHwgbWFsZm9ybWVkIC0+IG1hbGZvcm1lZFxuXG5sZXQgcmVzdG9yZV90eXBlX2ZpZWxkIHR5cGVfZmllbGRfbmFtZSAoeCA6IFlvanNvbi5TYWZlLnQpIDogWW9qc29uLlNhZmUudCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBMaXN0IFsgYFN0cmluZyB0eXBlXzsgYEFzc29jIGZpZWxkcyBdIC0+XG4gICAgICBsZXQgZmllbGRzID1cbiAgICAgICAgKHR5cGVfZmllbGRfbmFtZSwgYFN0cmluZyB0eXBlXykgOjpcbiAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biAoaywgdikgLT4gayA8PiB0eXBlX2ZpZWxkX25hbWUpIGZpZWxkc1xuICAgICAgaW5cbiAgICAgIGBBc3NvYyBmaWVsZHNcbiAgfCBgU3RyaW5nIHR5cGVfIGFzIHggLT4geFxuICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB2YWwgbm9ybWFsaXplIDogWW9qc29uLlNhZmUudCAtPiBZb2pzb24uU2FmZS50XG4gIHZhbCByZXN0b3JlIDogWW9qc29uLlNhZmUudCAtPiBZb2pzb24uU2FmZS50XG5lbmRcblxubW9kdWxlIFR5cGVfZmllbGQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUGFyYW0gPSBzaWdcbiAgICB2YWwgdHlwZV9maWVsZF9uYW1lIDogc3RyaW5nXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChQYXJhbSA6IFBhcmFtKSA6IFMgPSBzdHJ1Y3RcbiAgICBsZXQgbm9ybWFsaXplID0gbm9ybWFsaXplX3R5cGVfZmllbGQgUGFyYW0udHlwZV9maWVsZF9uYW1lXG5cbiAgICBsZXQgcmVzdG9yZSA9IHJlc3RvcmVfdHlwZV9maWVsZCBQYXJhbS50eXBlX2ZpZWxkX25hbWVcbiAgZW5kXG5cbiAgbW9kdWxlIERlZmF1bHRfcGFyYW0gOiBQYXJhbSA9IHN0cnVjdFxuICAgIGxldCB0eXBlX2ZpZWxkX25hbWUgPSBcInR5cGVcIlxuICBlbmRcblxuICBpbmNsdWRlIE1ha2UgKERlZmF1bHRfcGFyYW0pXG5lbmRcblxubW9kdWxlIE9uZV9maWVsZCA9IHN0cnVjdFxuICBvcGVuIFlvanNvbi5TYWZlXG5cbiAgbGV0IG5vcm1hbGl6ZSAoeCA6IHQpIDogdCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgQXNzb2MgW25hbWUsIHZhbHVlXSAtPiBgTGlzdCBbYFN0cmluZyBuYW1lOyB2YWx1ZV1cbiAgICB8IGBTdHJpbmcgXyBhcyB4IC0+IHhcbiAgICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcblxuICBsZXQgcmVzdG9yZSAoeCA6IHQpIDogdCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTGlzdCBbYFN0cmluZyBuYW1lOyB2YWx1ZV0gLT4gYEFzc29jIFtuYW1lLCB2YWx1ZV1cbiAgICB8IGBTdHJpbmcgXyBhcyB4IC0+IHhcbiAgICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcbmVuZFxuXG5tb2R1bGUgVHlwZV9hbmRfdmFsdWVfZmllbGRzID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFBhcmFtID0gc2lnXG4gICAgdmFsIHR5cGVfZmllbGRfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCB2YWx1ZV9maWVsZF9uYW1lIDogc3RyaW5nXG4gICAgdmFsIGtub3duX3RhZ3MgOiAoc3RyaW5nIGxpc3QgKiBzdHJpbmcpIG9wdGlvblxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoUGFyYW0gOiBQYXJhbSkgOiBTID0gc3RydWN0XG4gICAgb3BlbiBZb2pzb24uU2FmZVxuICAgIG9wZW4gUGFyYW1cblxuICAgIGxldCBpc19rbm93bl90YWcgPVxuICAgICAgbWF0Y2gga25vd25fdGFncyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKGZ1biBfIC0+IHRydWUpXG4gICAgICB8IFNvbWUgKGwsIF8pIC0+XG4gICAgICAgICAgbGV0IHRibCA9IEhhc2h0YmwuY3JlYXRlICgyICogTGlzdC5sZW5ndGggbCkgaW5cbiAgICAgICAgICBMaXN0Lml0ZXIgKGZ1biB4IC0+IEhhc2h0YmwuYWRkIHRibCB4ICgpKSBsO1xuICAgICAgICAgIEhhc2h0YmwubWVtIHRibFxuXG4gICAgbGV0IGlzX2NhdGNoX2FsbF90YWcgPVxuICAgICAgbWF0Y2gga25vd25fdGFncyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKGZ1biBfIC0+IGZhbHNlKVxuICAgICAgfCBTb21lIChfLCBzKSAtPiAoKD0pIHMpXG5cbiAgICBsZXQgY2F0Y2hfYWxsX3RhZyAoKSA9XG4gICAgICBtYXRjaCBrbm93bl90YWdzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgU29tZSAoXywgcykgLT4gc1xuXG4gICAgbGV0IHdyYXBfdmFyaWFudCB0eXBlXyB2YWx1ZSA9XG4gICAgICBsZXQgdmFyaWFudCA9IGBMaXN0IFtgU3RyaW5nIHR5cGVfOyB2YWx1ZV0gaW5cbiAgICAgIGlmIGlzX2tub3duX3RhZyB0eXBlXyB0aGVuXG4gICAgICAgIHZhcmlhbnRcbiAgICAgIGVsc2VcbiAgICAgICAgYExpc3QgWyBgU3RyaW5nIChjYXRjaF9hbGxfdGFnICgpKTsgdmFyaWFudCBdXG5cbiAgICBsZXQgd3JhcF9lbnVtIHR5cGVfID1cbiAgICAgIGlmIGlzX2tub3duX3RhZyB0eXBlXyB0aGVuXG4gICAgICAgIGBTdHJpbmcgdHlwZV9cbiAgICAgIGVsc2VcbiAgICAgICAgYExpc3QgWyBgU3RyaW5nIChjYXRjaF9hbGxfdGFnICgpKTsgYE51bGwgXVxuXG4gICAgbGV0IG5vcm1hbGl6ZSAoeCA6IHQpIDogdCA9XG4gICAgICBsZXQgb3BlbiBZb2pzb24uU2FmZS5VdGlsIGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYEFzc29jIGZpZWxkcyAtPlxuICAgICAgICAgIGxldCB0eXBlXyA9IG1lbWJlciB0eXBlX2ZpZWxkX25hbWUgeCB8PiB0b19zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgZm91bmQgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICBsZXQgZmllbGRzID1cbiAgICAgICAgICAgIExpc3QubWFwIChmdW4gKChrLCB2KSBhcyBmaWVsZCkgLT5cbiAgICAgICAgICAgICAgaWYgayA9IHZhbHVlX2ZpZWxkX25hbWUgdGhlbiAoXG4gICAgICAgICAgICAgICAgZm91bmQgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAoaywgd3JhcF92YXJpYW50IHR5cGVfIHYpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGZpZWxkXG4gICAgICAgICAgICApIGZpZWxkc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZpZWxkcyA9XG4gICAgICAgICAgICBpZiAhZm91bmQgdGhlblxuICAgICAgICAgICAgICBmaWVsZHNcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKHZhbHVlX2ZpZWxkX25hbWUsIHdyYXBfZW51bSB0eXBlXykgOjogZmllbGRzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBgQXNzb2MgZmllbGRzXG4gICAgICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcblxuICAgIGxldCB1bndyYXBfdmFsdWUgKHggOiB0KSA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFN0cmluZyB0YWcgLT4gKHRhZywgTm9uZSlcbiAgICAgIHwgYExpc3QgW2BTdHJpbmcgdGFnOyB2XSAtPlxuICAgICAgICAgIGlmIGlzX2NhdGNoX2FsbF90YWcgdGFnIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2ggdiB3aXRoXG4gICAgICAgICAgICB8IGBMaXN0IFtgU3RyaW5nIHJlYWxfdGFnOyBgTnVsbF0gLT4gKHJlYWxfdGFnLCBOb25lKVxuICAgICAgICAgICAgfCBgTGlzdCBbYFN0cmluZyByZWFsX3RhZzsgcmVhbF92XSAtPiAocmVhbF90YWcsIFNvbWUgcmVhbF92KVxuICAgICAgICAgICAgfCBfIC0+IGZhaWx3aXRoIChcIk1hbGZvcm1lZCBqc29uIGZpZWxkIFwiIF4gdmFsdWVfZmllbGRfbmFtZSlcbiAgICAgICAgICApXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKHRhZywgU29tZSB2KVxuICAgICAgfCBtYWxmb3JtZWQgLT4gZmFpbHdpdGggKFwiTWFsZm9ybWVkIGpzb24gZmllbGQgXCIgXiB2YWx1ZV9maWVsZF9uYW1lKVxuXG4gICAgbGV0IHJlc3RvcmUgKHggOiB0KSA6IHQgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBBc3NvYyBmaWVsZHMgLT5cbiAgICAgICAgICBsZXQgdHlwZV8gPSByZWYgTm9uZSBpblxuICAgICAgICAgIGxldCBmaWVsZHMgPVxuICAgICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IChmdW4gKChrLCB0YWdnZWQpIGFzIGZpZWxkKSBhY2MgLT5cbiAgICAgICAgICAgICAgaWYgayA9IHZhbHVlX2ZpZWxkX25hbWUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IHRhZywgb3B0X3ZhbHVlID0gdW53cmFwX3ZhbHVlIHRhZ2dlZCBpblxuICAgICAgICAgICAgICAgIHR5cGVfIDo9IFNvbWUgdGFnO1xuICAgICAgICAgICAgICAgIG1hdGNoIG9wdF92YWx1ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgIHwgU29tZSB2IC0+ICh2YWx1ZV9maWVsZF9uYW1lLCB2KSA6OiBhY2NcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBlbHNlIGlmIGsgPSB0eXBlX2ZpZWxkX25hbWUgdGhlblxuICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZmllbGQgOjogYWNjXG4gICAgICAgICAgICAgICkgZmllbGRzIFtdXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmllbGRzID1cbiAgICAgICAgICAgIG1hdGNoICF0eXBlXyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmllbGRzXG4gICAgICAgICAgICB8IFNvbWUgdGFnIC0+ICh0eXBlX2ZpZWxkX25hbWUsIGBTdHJpbmcgdGFnKSA6OiBmaWVsZHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGBBc3NvYyBmaWVsZHNcbiAgICAgIHwgbWFsZm9ybWVkIC0+IG1hbGZvcm1lZFxuICBlbmRcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIEFycmF5IHdpdGggZHluYW1pYyBzaXplXG5cbiAgICBJdCB1c2VzIGltcGVyYXRpdmUgc3R5bGVzIHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgbW9kdWxlcyAqKVxuXG5tb2R1bGUgRHluQXJyYXkgPVxuZnVuY3RvclxuICAoRyA6IEdlbkFycmF5LkdlbkFycmF5KVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSB7XG4gICAgICAgIG11dGFibGUgYXJyYXk6ICdhIEcudDtcbiAgICAgICAgbXV0YWJsZSBjdXJyZW50X3NpemU6IGludDtcbiAgICAgICAgZGVmYXVsdDogaW50IC0+ICdhO1xuICAgICAgfVxuXG4gICAgICBsZXQgY3JlYXRlIG4gYSA9XG4gICAgICAgIHsgYXJyYXkgPSBHLmNyZWF0ZSBuIGE7IGN1cnJlbnRfc2l6ZSA9IG47IGRlZmF1bHQgPSAoZnVuIF8gLT4gYSkgfVxuXG4gICAgICBsZXQgbGVuZ3RoIGEgPSBhLmN1cnJlbnRfc2l6ZVxuXG4gICAgICBsZXQgZXhwYW5kIHQgPVxuICAgICAgICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gICAgICAgIGxldCBuJyA9IG1heCAobiArIDEpIChuICogMikgaW5cbiAgICAgICAgbGV0IGFycmF5JyA9IEcuaW5pdCBuJyB0LmRlZmF1bHQgaW5cbiAgICAgICAgbGV0ICgpID0gRy5ibGl0IHQuYXJyYXkgMCBhcnJheScgMCBuIGluXG4gICAgICAgIGxldCAoKSA9IHQuYXJyYXkgPC0gYXJyYXknIGluXG4gICAgICAgIHQuY3VycmVudF9zaXplIDwtIG4nXG5cbiAgICAgIGxldCBnZXQgYSBpID1cbiAgICAgICAgaWYgbGVuZ3RoIGEgPiBpIHRoZW5cbiAgICAgICAgICBHLmdldCBhLmFycmF5IGlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGEuZGVmYXVsdCBpXG5cbiAgICAgIGxldCByZWMgc2V0IGEgaSB2ID1cbiAgICAgICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgICAgICBpZiBuID4gaSB0aGVuXG4gICAgICAgICAgRy5zZXQgYS5hcnJheSBpIHZcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gZXhwYW5kIGEgaW5cbiAgICAgICAgICBzZXQgYSBpIHZcbiAgICAgICAgKVxuXG4gICAgICBsZXQgbWFrZSA9IGNyZWF0ZVxuICAgICAgbGV0IGluaXQgbiBmID0geyBhcnJheSA9IEcuaW5pdCBuIGY7IGN1cnJlbnRfc2l6ZSA9IG47IGRlZmF1bHQgPSBmIH1cblxuICAgICAgbGV0IGFwcGVuZCBhIGIgPVxuICAgICAgICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICAgICAgICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICAgICAgICBsZXQgYyA9IGxhICsgbGIgaW5cbiAgICAgICAgaW5pdCBjIChmdW4geCAtPlxuICAgICAgICAgICAgaWYgeCA8IGxhIHRoZW5cbiAgICAgICAgICAgICAgZ2V0IGEgeFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBnZXQgYiAoeCAtIGxhKSlcblxuICAgICAgbGV0IGNvbmNhdCBsID1cbiAgICAgICAgbGV0IGwgPSBMaXN0LmZpbHRlciAoZnVuIHggLT4gbGVuZ3RoIHggPiAwKSBsIGluXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRHluYW1pY0FycmF5LmNvbmNhdFwiKVxuICAgICAgICB8IHQgOjogXyAtPlxuICAgICAgICAgIGxldCBlbHQgPSBnZXQgdCAwIGluXG4gICAgICAgICAgbGV0IGMgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIHNvbCBhIC0+IHNvbCArIGxlbmd0aCBhKSAwIGwgaW5cbiAgICAgICAgICBsZXQgbSA9IGNyZWF0ZSBjIGVsdCBpblxuICAgICAgICAgIGxldCByZWMgYXV4IGsgbCA9XG4gICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgICAgICAgIGxldCBzID0gbGVuZ3RoIHQgaW5cbiAgICAgICAgICAgICAgbGV0IHJlYyBhdXgyIG9mZnNldCBrID1cbiAgICAgICAgICAgICAgICBpZiBvZmZzZXQgPSBzIHRoZW5cbiAgICAgICAgICAgICAgICAgIGF1eCBrIHFcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIHNldCBtIGsgKGdldCB0IG9mZnNldCk7XG4gICAgICAgICAgICAgICAgICBhdXgyIChvZmZzZXQgKyAxKSAoayArIDEpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhdXgyIDAga1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gYXV4IDAgbCBpblxuICAgICAgICAgIG1cblxuICAgICAgbGV0IHN1YiBhIHN0YXJ0IGxlbiA9XG4gICAgICAgIGxldCBzaXplID0gbGVuZ3RoIGEgaW5cbiAgICAgICAgaWYgc3RhcnQgPCAwIHx8IGxlbiA8IDAgfHwgc3RhcnQgKyBsZW4gPiBzaXplIHRoZW5cbiAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkR5bmFtaWNfYXJyYXkuc3ViXCIpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbml0IGxlbiAoZnVuIHggLT4gZ2V0IGEgKHggKyBzdGFydCkpXG5cbiAgICAgIGxldCBjb3B5IGEgPVxuICAgICAgICB7XG4gICAgICAgICAgYXJyYXkgPSBHLmNvcHkgYS5hcnJheTtcbiAgICAgICAgICBjdXJyZW50X3NpemUgPSBhLmN1cnJlbnRfc2l6ZTtcbiAgICAgICAgICBkZWZhdWx0ID0gYS5kZWZhdWx0O1xuICAgICAgICB9XG5cbiAgICAgIGxldCBmaWxsIGEgc3RhcnQgbGVuIHggPVxuICAgICAgICBsZXQgcmVjIGF1eCBrIGkgPVxuICAgICAgICAgIGlmIGsgPCBsZW4gdGhlbiAoXG4gICAgICAgICAgICBsZXQgKCkgPSBzZXQgYSBpIHggaW5cbiAgICAgICAgICAgIGF1eCAoayArIDEpIChpICsgMSlcbiAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzaXplID0gbGVuZ3RoIGEgaW5cbiAgICAgICAgaWYgc3RhcnQgPCAwIHx8IGxlbiA8IDAgfHwgc3RhcnQgKyBsZW4gPiBzaXplIHRoZW5cbiAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkR5bmFtaWNfYXJyYXkuZmlsbFwiKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYXV4IDAgc3RhcnRcblxuICAgICAgbGV0IG9mX2xpc3QgfmRlZmF1bHQgbCA9XG4gICAgICAgIHtcbiAgICAgICAgICBjdXJyZW50X3NpemUgPSBMaXN0Lmxlbmd0aCBsO1xuICAgICAgICAgIGFycmF5ID0gRy5vZl9saXN0IH5kZWZhdWx0IGw7XG4gICAgICAgICAgZGVmYXVsdCA9IChmdW4gXyAtPiBkZWZhdWx0KTtcbiAgICAgICAgfVxuXG4gICAgICBsZXQgaXRlciBmIGEgPSBHLml0ZXIgZiBhLmFycmF5XG4gICAgICBsZXQgaXRlcmkgZiBhID0gRy5pdGVyaSBmIGEuYXJyYXlcbiAgICAgIGxldCBmb2xkX2xlZnRpIGYgYiBhID0gRy5mb2xkX2xlZnRpIGYgYiBhLmFycmF5XG4gICAgICBsZXQgZm9sZF9yaWdodGkgZiBhIGIgPSBHLmZvbGRfcmlnaHRpIGYgYS5hcnJheSBiXG4gICAgICBsZXQgbWFwIGYgYSA9IGluaXQgKGxlbmd0aCBhKSAoZnVuIGkgLT4gZiAoZ2V0IGEgaSkpXG5cbiAgICAgIGxldCBibGl0IGExIG9mczEgYTIgb2ZzMiBsZW4gPVxuICAgICAgICBpZlxuICAgICAgICAgIGxlbiA8IDAgfHwgb2ZzMSA8IDBcbiAgICAgICAgICB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgICAgICAgfHwgb2ZzMiA8IDBcbiAgICAgICAgICB8fCBvZnMyID4gbGVuZ3RoIGEyIC0gbGVuXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyBcIkR5bmFtaWNBcnJheS5ibGl0XCJcbiAgICAgICAgZWxzZSBpZiBvZnMxIDwgb2ZzMiB0aGVuXG4gICAgICAgICAgKCogVG9wLWRvd24gY29weSAqKVxuICAgICAgICAgIGZvciBpID0gbGVuIC0gMSBkb3dudG8gMCBkb1xuICAgICAgICAgICAgRy5zZXQgYTIuYXJyYXkgKG9mczIgKyBpKSAoRy5nZXQgYTEuYXJyYXkgKG9mczEgKyBpKSlcbiAgICAgICAgICBkb25lXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoKiBCb3R0b20tdXAgY29weSAqKVxuICAgICAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgICBHLnNldCBhMi5hcnJheSAob2ZzMiArIGkpIChHLmdldCBhMS5hcnJheSAob2ZzMSArIGkpKVxuICAgICAgICAgIGRvbmVcblxuICAgICAgbGV0IHByaW50ID90cmFpbGluZyBwcl9zIHByX2EgZiBhID0gRy5wcmludCA/dHJhaWxpbmcgcHJfcyBwcl9hIGYgYS5hcnJheVxuICAgIGVuZCA6XG4gICAgICBHZW5BcnJheS5HZW5BcnJheSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IFVuYXJ5IG9mICdhIGFycmF5IHwgQmluYXJ5IG9mICdhIGFycmF5IGFycmF5XG5cbmxldCBtYXhfYXJyYXlfc2l6ZTEgPSBTeXMubWF4X2FycmF5X2xlbmd0aCAoKiA1ICopXG5cbmxldCBtYXhfYXJyYXlfc2l6ZTIgPVxuICBpZiBmbG9hdF9vZl9pbnQgbWF4X2FycmF5X3NpemUxID4gc3FydCAoZmxvYXRfb2ZfaW50IG1heF9pbnQpIHRoZW5cbiAgICBtYXhfaW50XG4gIGVsc2VcbiAgICBtYXhfYXJyYXlfc2l6ZTEgKiBtYXhfYXJyYXlfc2l6ZTFcblxubGV0IGV1Y2xpZGVlbiBwIHEgPSBwIC8gcSwgcCBtb2QgcVxuXG5sZXQgY3JlYXRlIG4gYSA9XG4gIGlmIG4gPD0gbWF4X2FycmF5X3NpemUxIHRoZW5cbiAgICBVbmFyeSAoQXJyYXkubWFrZSBuIGEpXG4gIGVsc2UgaWYgbiA+IG1heF9hcnJheV9zaXplMiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJHZW5BcnJheTogYXJyYXkgdG9vIGxhcmdlXCJcbiAgZWxzZSAoXG4gICAgbGV0IG0gPVxuICAgICAgbGV0IHAsIHEgPSBldWNsaWRlZW4gbiBtYXhfYXJyYXlfc2l6ZTEgaW5cbiAgICAgIGxldCBsID0gQXJyYXkubWFrZSBtYXhfYXJyYXlfc2l6ZTEgYSBpblxuICAgICAgbGV0IG0gPVxuICAgICAgICBBcnJheS5tYWtlXG4gICAgICAgICAgKGlmIHEgPSAwIHRoZW5cbiAgICAgICAgICAgICBwXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBwICsgMSlcbiAgICAgICAgICBsXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBhdXggayA9XG4gICAgICAgIGlmIGsgPSAtMSB0aGVuXG4gICAgICAgICAgbVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtLihrKSA8LSBBcnJheS5tYWtlIG1heF9hcnJheV9zaXplMSBhO1xuICAgICAgICAgIGF1eCAoayAtIDEpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBpZiBxID0gMCB0aGVuXG4gICAgICAgIGF1eCAocCAtIDEpXG4gICAgICBlbHNlIChcbiAgICAgICAgbS4ocCkgPC0gQXJyYXkubWFrZSBxIGE7XG4gICAgICAgIGF1eCAocCAtIDEpXG4gICAgICApXG4gICAgaW5cbiAgICBCaW5hcnkgbVxuICApXG5cbmxldCBsZW5ndGggPSBmdW5jdGlvblxuICB8IFVuYXJ5IGEgLT4gQXJyYXkubGVuZ3RoIGFcbiAgfCBCaW5hcnkgYSAtPlxuICAgIGxldCBwID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICBsZXQgcSA9IEFycmF5Lmxlbmd0aCAoQXJyYXkudW5zYWZlX2dldCBhIChwIC0gMSkpIGluXG4gICAgKChwIC0gMSkgKiBtYXhfYXJyYXlfc2l6ZTEpICsgcVxuXG5sZXQgZ2V0MiBhIHAgcSA9IEFycmF5LnVuc2FmZV9nZXQgKEFycmF5LnVuc2FmZV9nZXQgYSBwKSBxXG5cbmxldCBnZXQgYSBpID1cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgVW5hcnkgYSAtPiBBcnJheS51bnNhZmVfZ2V0IGEgaVxuICB8IEJpbmFyeSBhIC0+XG4gICAgbGV0IHAsIHEgPSBldWNsaWRlZW4gaSBtYXhfYXJyYXlfc2l6ZTEgaW5cbiAgICBnZXQyIGEgcCBxXG5cbmxldCBzZXQyIGEgcCBxIGogPSBBcnJheS51bnNhZmVfc2V0IChBcnJheS51bnNhZmVfZ2V0IGEgcCkgcSBqXG5cbmxldCBzZXQgYSBpIGogPVxuICBtYXRjaCBhIHdpdGhcbiAgfCBVbmFyeSBhIC0+IEFycmF5LnVuc2FmZV9zZXQgYSBpIGpcbiAgfCBCaW5hcnkgYSAtPlxuICAgIGxldCBwLCBxID0gZXVjbGlkZWVuIGkgbWF4X2FycmF5X3NpemUxIGluXG4gICAgc2V0MiBhIHAgcSBqXG5cbmxldCBtYWtlID0gY3JlYXRlXG5cbmxldCBpbml0IG4gZiA9XG4gIGlmIG4gPCAwIHx8IG4gPiBtYXhfYXJyYXlfc2l6ZTIgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcIkJpZ19hcnJheS5pbml0IDogXCIgXiBzdHJpbmdfb2ZfaW50IG4pKVxuICBlbHNlIGlmIG4gPD0gbWF4X2FycmF5X3NpemUxIHRoZW5cbiAgICBVbmFyeSAoQXJyYXkuaW5pdCBuIGYpXG4gIGVsc2UgKFxuICAgIGxldCBtID1cbiAgICAgIGxldCBwLCBxID0gZXVjbGlkZWVuIG4gbWF4X2FycmF5X3NpemUxIGluXG4gICAgICBBcnJheS5pbml0XG4gICAgICAgIChpZiBxID0gMCB0aGVuXG4gICAgICAgICAgIHBcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgcCArIDEpXG4gICAgICAgIChmdW4gcCcgLT5cbiAgICAgICAgICBpZiBwJyA9IHAgdGhlblxuICAgICAgICAgICAgQXJyYXkuaW5pdCBxIChmdW4geCAtPiBmICgocCAqIG1heF9hcnJheV9zaXplMSkgKyB4KSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBcnJheS5pbml0IG1heF9hcnJheV9zaXplMSAoZnVuIHggLT4gZiAoKHAnICogbWF4X2FycmF5X3NpemUxKSArIHgpKSlcbiAgICBpblxuICAgIEJpbmFyeSBtXG4gIClcblxubGV0IGFwcGVuZCBhIGIgPVxuICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICBsZXQgYyA9IGxhICsgbGIgaW5cbiAgaW5pdCBjIChmdW4geCAtPlxuICAgICAgaWYgeCA8IGxhIHRoZW5cbiAgICAgICAgZ2V0IGEgeFxuICAgICAgZWxzZVxuICAgICAgICBnZXQgYiAoeCAtIGxhKSlcblxubGV0IGNvbmNhdCBsID1cbiAgbGV0IGwgPSBMaXN0LmZpbHRlciAoZnVuIHggLT4gbGVuZ3RoIHggPiAwKSBsIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFVuYXJ5IFt8fF1cbiAgfCB0IDo6IF8gLT5cbiAgICBsZXQgZWx0ID0gZ2V0IHQgMCBpblxuICAgIGxldCBjID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBzb2wgYSAtPiBzb2wgKyBsZW5ndGggYSkgMCBsIGluXG4gICAgbGV0IG0gPSBjcmVhdGUgYyBlbHQgaW5cbiAgICBsZXQgcmVjIGF1eCBrIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IG1cbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIGxldCBzID0gbGVuZ3RoIHQgaW5cbiAgICAgICAgbGV0IHJlYyBhdXgyIG9mZnNldCBrID1cbiAgICAgICAgICBpZiBvZmZzZXQgPSBzIHRoZW5cbiAgICAgICAgICAgIGF1eCBrIHFcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIHNldCBtIGsgKGdldCB0IG9mZnNldCk7XG4gICAgICAgICAgICBhdXgyIChvZmZzZXQgKyAxKSAoayArIDEpXG4gICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBhdXgyIDAga1xuICAgIGluXG4gICAgYXV4IDAgbFxuXG5sZXQgc3ViIGEgc3RhcnQgbGVuID1cbiAgbGV0IHNpemUgPSBsZW5ndGggYSBpblxuICBpZiBzdGFydCA8IDAgfHwgbGVuIDwgMCB8fCBzdGFydCArIGxlbiA+IHNpemUgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiQmlnX2FycmF5LnN1YlwiKVxuICBlbHNlIGlmIHNpemUgPSAwIHRoZW5cbiAgICBVbmFyeSBbfHxdXG4gIGVsc2VcbiAgICBpbml0IGxlbiAoZnVuIHggLT4gZ2V0IGEgKHggKyBzdGFydCkpXG5cbmxldCBjb3B5ID0gZnVuY3Rpb25cbiAgfCBVbmFyeSBhIC0+IFVuYXJ5IChBcnJheS5jb3B5IGEpXG4gIHwgQmluYXJ5IGInIC0+XG4gICAgbGV0IHNpemUgPSBBcnJheS5sZW5ndGggYicgaW5cbiAgICBCaW5hcnkgKEFycmF5LmluaXQgc2l6ZSAoZnVuIHggLT4gQXJyYXkuY29weSBiJy4oeCkpKVxuXG5sZXQgZmlsbCBhIHN0YXJ0IGxlbiB4ID1cbiAgbGV0IHNpemUgPSBsZW5ndGggYSBpblxuICBpZiBzdGFydCA8IDAgfHwgbGVuIDwgMCB8fCBzdGFydCArIGxlbiA+IHNpemUgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiQmlnX2FycmF5LmZpbGxcIilcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBhdXggayBpID1cbiAgICAgIGlmIGsgPCBsZW4gdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IHNldCBhIGkgeCBpblxuICAgICAgICBhdXggKGsgKyAxKSAoaSArIDEpXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCBzdGFydFxuICApXG5cbmxldCBvZl9saXN0IH5kZWZhdWx0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBVbmFyeSBbfHxdXG4gIHwgdCA6OiBfIGFzIGwgLT5cbiAgICBsZXQgX2lrbm93d2hhdGltZG9pbmcgPSBkZWZhdWx0IGluXG4gICAgbGV0IHNpemUgPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGEgPSBjcmVhdGUgc2l6ZSB0IGluXG4gICAgbGV0IHJlYyBhdXggayA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFcbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIGxldCAoKSA9IHNldCBhIGsgdCBpblxuICAgICAgICBhdXggKGsgKyAxKSBxXG4gICAgaW5cbiAgICBhdXggMCBsXG5cbmxldCBpdGVyIGYgPSBmdW5jdGlvblxuICB8IFVuYXJ5IGEgLT4gQXJyYXkuaXRlciBmIGFcbiAgfCBCaW5hcnkgYSAtPiBBcnJheS5pdGVyIChBcnJheS5pdGVyIGYpIGFcblxubGV0IGl0ZXJpIGYgPSBmdW5jdGlvblxuICB8IFVuYXJ5IGEgLT4gQXJyYXkuaXRlcmkgZiBhXG4gIHwgQmluYXJ5IGEgLT5cbiAgICBsZXQgZyBrIGsnID0gKGsgKiBtYXhfYXJyYXlfc2l6ZTEpICsgaycgaW5cbiAgICBBcnJheS5pdGVyaSAoZnVuIGsgYSAtPiBBcnJheS5pdGVyaSAoZnVuIGsnIGEgLT4gZiAoZyBrIGsnKSBhKSBhKSBhXG5cbmxldCBnZW4gZzEgZzIgaDEgaDIgZiA9IGZ1bmN0aW9uXG4gIHwgVW5hcnkgYSAtPiBoMSAoZzEgZiBhKVxuICB8IEJpbmFyeSBhIC0+IGgyIChnMiAoZzEgZikgYSlcblxubGV0IG1hcCBmIHggPSBnZW4gQXJyYXkubWFwIEFycmF5Lm1hcCAoZnVuIHggLT4gVW5hcnkgeCkgKGZ1biB4IC0+IEJpbmFyeSB4KSBmIHhcblxuKCpsZXQgZ2VuaSBnMSBnMiBoMSBoMiBmID0gZnVuY3Rpb25cbiAgICAgIHwgVW5hcnkgYSAtPiBoMSAoZzEgZiBhKVxuICAgICAgfCBCaW5hcnkgYiAtPlxuICBoMlxuICAgIChnMlxuICAgICAgIChmdW4gcCBhIC0+XG4gICAgICAgIGxldCBuID0gcCAqIG1heF9hcnJheV9zaXplMSBpblxuICAgICAgICBnMVxuICAgKGZ1biBxIGEgLT4gZiAocSArIG4pIGEpXG4gICBhKVxuICAgICAgIGIpXG5cbiAgICBsZXQgbWFwaSA9XG4gICAgICBnZW5pIEFycmF5Lm1hcGkgQXJyYXkubWFwaSAoZnVuIHggLT4gVW5hcnkgeCkgKGZ1biB4IC0+IEJpbmFyeSB4KSopXG5cbmxldCBibGl0IGExIG9mczEgYTIgb2ZzMiBsZW4gPVxuICBpZlxuICAgIGxlbiA8IDAgfHwgb2ZzMSA8IDBcbiAgICB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgfHwgb2ZzMiA8IDBcbiAgICB8fCBvZnMyID4gbGVuZ3RoIGEyIC0gbGVuXG4gIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkFycmF5LmJsaXRcIlxuICBlbHNlIGlmIG9mczEgPCBvZnMyIHRoZW5cbiAgICAoKiBUb3AtZG93biBjb3B5ICopXG4gICAgZm9yIGkgPSBsZW4gLSAxIGRvd250byAwIGRvXG4gICAgICBzZXQgYTIgKG9mczIgKyBpKSAoZ2V0IGExIChvZnMxICsgaSkpXG4gICAgZG9uZVxuICBlbHNlXG4gICAgKCogQm90dG9tLXVwIGNvcHkgKilcbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgc2V0IGEyIChvZnMyICsgaSkgKGdldCBhMSAob2ZzMSArIGkpKVxuICAgIGRvbmVcblxubGV0IGZvbGRfbGVmdGkgZiBpbml0IGEgPVxuICBsZXQgeSA9IHJlZiBpbml0IGluXG4gIGxldCAoKSA9IGl0ZXJpIChmdW4gaSBlIC0+IHkgOj0gZiBpICF5IGUpIGEgaW5cbiAgIXlcblxubGV0IGZvbGRfcmlnaHQgZiBhIGluaXQgPVxuICBtYXRjaCBhIHdpdGhcbiAgfCBVbmFyeSBhIC0+IEFycmF5LmZvbGRfcmlnaHQgZiBhIGluaXRcbiAgfCBCaW5hcnkgYSAtPiBBcnJheS5mb2xkX3JpZ2h0IChBcnJheS5mb2xkX3JpZ2h0IGYpIGEgaW5pdFxuXG5sZXQgZm9sZF9yaWdodGkgZiBhIGluaXQgPVxuICBsZXQgZyBrIChpLCBjdXJyZW50KSA9IGkgLSAxLCBmIGkgayBjdXJyZW50IGluXG4gIHNuZCAoZm9sZF9yaWdodCBnIGEgKGxlbmd0aCBhIC0gMSwgaW5pdCkpXG5cbmxldCBwcmludCA/KHRyYWlsaW5nID0gZnVuIF8gLT4gKCkpIHByX3NlcCBwcl9lbCBmIGEgPVxuICBsZXQgcmVjIGF1eCBpIGYgPVxuICAgIGlmIGkgPCBsZW5ndGggYSB0aGVuIChcbiAgICAgIGxldCAoKSA9IHByX2VsIGkgZiAoZ2V0IGEgaSkgaW5cbiAgICAgIGlmIGkgPCBsZW5ndGggYSAtIDEgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IHByX3NlcCBmIGluXG4gICAgICAgIGF1eCAoc3VjYyBpKSBmXG4gICAgICApIGVsc2UgaWYgaSA+IDAgdGhlblxuICAgICAgICB0cmFpbGluZyBmXG4gICAgKVxuICBpblxuICBhdXggMCBmXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgZmxvYXRfaXNfemVybyB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gIHwgRlBfemVybyAtPiB0cnVlXG4gIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gZmFsc2VcblxubGV0IHBvdyBpIGogPVxuICBsZXQgKCkgPSBhc3NlcnQgKDAgPD0gaikgaW5cbiAgbGV0IHJlYyBhdXggaSBrIGFjY3UgPVxuICAgIGlmIGsgPSAwIHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIGsgbGFuZCAxID0gMCB0aGVuXG4gICAgICBhdXggaSAoayAvIDIpIGFjY3UgKiBhY2N1XG4gICAgZWxzZVxuICAgICAgYXV4IGkgKGsgLyAyKSAoaSAqIGFjY3UgKiBhY2N1KVxuICBpblxuICBhdXggaSBqIDFcblxubGV0IGZhY3QgaSA9XG4gIGxldCByZWMgYXV4IGkgYWNjdSA9XG4gICAgaWYgaSA8IDIgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2VcbiAgICAgIGF1eCAoaSAtIDEpIChpICogYWNjdSlcbiAgaW5cbiAgYXV4IGkgMVxuXG5sZXQgZ2V0X3Byb2R1Y3RfaW1hZ2Vfb2NjIHN0YXJ0IGNvbWJpbmUgZiBsID1cbiAgbGV0IGwgPSBMaXN0LnNvcnQgY29tcGFyZSBsIGluXG4gIGxldCByZWMgYXV4IGwgb2xkIG9jYyBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IGggOjogdCB3aGVuIGggPSBvbGQgLT4gYXV4IHQgb2xkICgxICsgb2NjKSBhY2N1XG4gICAgfCBfIC0+XG4gICAgICBsZXQgYWNjdSA9IGNvbWJpbmUgYWNjdSAoZiBvY2MpIGluXG4gICAgICAobWF0Y2ggbCB3aXRoXG4gICAgICB8IGggOjogdCAtPiBhdXggdCBoIDEgYWNjdVxuICAgICAgfCBbXSAtPiBhY2N1KVxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiAxXG4gIHwgaCA6OiB0IC0+IGF1eCB0IGggMSBzdGFydFxuXG5sZXQgZ2V0X3Byb2R1Y3RfaW1hZ2Vfb2NjXzIgc3RhcnQgY29tYmluZSBmIGwxIGwyID1cbiAgbGV0IGwxID0gTGlzdC5zb3J0IGNvbXBhcmUgbDEgaW5cbiAgbGV0IGwyID0gTGlzdC5zb3J0IGNvbXBhcmUgbDIgaW5cbiAgbGV0IGNvdW50X2hlYWRfYW5kX2dldF90YWlsIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gW10sIDBcbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IHJlYyBhdXggbCBoIG9jYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IFtdLCBvY2NcbiAgICAgICAgfCBoJyA6OiB0IHdoZW4gaCA9IGgnIC0+IGF1eCB0IGggKG9jYyArIDEpXG4gICAgICAgIHwgXyAtPiBsLCBvY2NcbiAgICAgIGluXG4gICAgICBhdXggdCBoIDFcbiAgaW5cbiAgbGV0IHJlYyBhdXggbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IGgxIDo6IF8sIGgyIDo6IF8gd2hlbiBoMSA9IGgyIC0+XG4gICAgICBsZXQgbDEsIG9jYzEgPSBjb3VudF9oZWFkX2FuZF9nZXRfdGFpbCBsMSBpblxuICAgICAgbGV0IGwyLCBvY2MyID0gY291bnRfaGVhZF9hbmRfZ2V0X3RhaWwgbDIgaW5cbiAgICAgIGF1eCBsMSBsMiAoY29tYmluZSBhY2N1IChmIG9jYzEgb2NjMikpXG4gICAgfCBoMSA6OiBfLCBoMiA6OiBfIHdoZW4gY29tcGFyZSBoMSBoMiA8IDAgLT5cbiAgICAgIGxldCBsMSwgb2NjMSA9IGNvdW50X2hlYWRfYW5kX2dldF90YWlsIGwxIGluXG4gICAgICBhdXggbDEgbDIgKGNvbWJpbmUgYWNjdSAoZiBvY2MxIDApKVxuICAgIHwgXyA6OiBfLCBfIDo6IF8gLT5cbiAgICAgIGxldCBsMiwgb2NjMiA9IGNvdW50X2hlYWRfYW5kX2dldF90YWlsIGwyIGluXG4gICAgICBhdXggbDEgbDIgKGNvbWJpbmUgYWNjdSAoZiAwIG9jYzIpKVxuICAgIHwgW10sIF8gfCBfLCBbXSAtPiBhY2N1XG4gIGluXG4gIGF1eCBsMSBsMiBzdGFydFxuXG5sZXQgZGl2MiB4ID0gSW50NjQuZGl2IHggKEludDY0LmFkZCBJbnQ2NC5vbmUgSW50NjQub25lKVxuXG5sZXQgcG93NjQgeCBuID1cbiAgYXNzZXJ0IChuID49IEludDY0Lnplcm8pO1xuICBsZXQgcmVjIGF1eCBrIGFjY3UgPVxuICAgIGlmIGsgPSBJbnQ2NC56ZXJvIHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIEludDY0LmxvZ2FuZCBrIEludDY0Lm9uZSA9IEludDY0Lnplcm8gdGhlblxuICAgICAgYXV4IChkaXYyIGspIChJbnQ2NC5tdWwgYWNjdSBhY2N1KVxuICAgIGVsc2VcbiAgICAgIGF1eCAoZGl2MiBrKSAoSW50NjQubXVsIHggKEludDY0Lm11bCBhY2N1IGFjY3UpKVxuICBpblxuICBhdXggbiBJbnQ2NC5vbmVcblxubGV0IGNhbnRvcl9wYWlyaW5nIHggeSA9XG4gIGxldCBzID0geCArIHkgaW5cbiAgKHN1Y2MgcyAqIHMgLyAyKSArIHlcblxubGV0IHJlYWRfaW5wdXQgKCkgPVxuICBsZXQgcmVjIHBhcnNlIGFjYyBpbnB1dCA9XG4gICAgbWF0Y2ggU3RyZWFtLm5leHQgaW5wdXQgd2l0aFxuICAgIHwgJ1xcbicgLT4gYWNjXG4gICAgfCBjIC0+IHBhcnNlIChQcmludGYuc3ByaW50ZiBcIiVzJWNcIiBhY2MgYykgaW5wdXRcbiAgaW5cbiAgdHJ5XG4gICAgbGV0IHVzZXJfaW5wdXQgPSBTdHJlYW0ub2ZfY2hhbm5lbCBzdGRpbiBpblxuICAgIHBhcnNlIFwiXCIgdXNlcl9pbnB1dFxuICB3aXRoIFN0cmVhbS5GYWlsdXJlIC0+IGludmFsaWRfYXJnIFwiVG9vbHMuUmVhZF9pbnB1dDogY2Fubm90IHJlYWQgc3RyZWFtXCJcblxubGV0IG5vdF9hbl9pZCBzID1cbiAgU3RyaW5nLmxlbmd0aCBzID0gMFxuICB8fFxuICBsZXQgaSA9IGludF9vZl9jaGFyIHMuWzBdIGluXG4gIChpIDwgNjUgfHwgaSA+IDEyMiB8fCAoaSA+IDkwICYmIChpIDw+IDk1IHx8IFN0cmluZy5sZW5ndGggcyA9IDEpICYmIGkgPCA5NykpXG4gIHx8XG4gIHRyeVxuICAgIFN0cmluZy5pdGVyXG4gICAgICAoZnVuIGMgLT5cbiAgICAgICAgbGV0IGkgPSBpbnRfb2ZfY2hhciBjIGluXG4gICAgICAgIGlmXG4gICAgICAgICAgaSA8IDQ4IHx8IGkgPiAxMjJcbiAgICAgICAgICB8fCAoaSA+IDU3ICYmIChpIDwgNjUgfHwgKGkgPiA5MCAmJiBpIDw+IDk1ICYmIGkgPCA5NykpKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgcztcbiAgICBmYWxzZVxuICB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlXG5cbmxldCBhcnJheV9mb2xkX2xlZnRfbWFwaSBmIHggYSA9XG4gIGxldCB5ID0gcmVmIHggaW5cbiAgbGV0IG8gPVxuICAgIEFycmF5LmluaXQgKEFycmF5Lmxlbmd0aCBhKSAoZnVuIGkgLT5cbiAgICAgICAgbGV0IHknLCBvdXQgPSBmIGkgIXkgYS4oaSkgaW5cbiAgICAgICAgbGV0ICgpID0geSA6PSB5JyBpblxuICAgICAgICBvdXQpXG4gIGluXG4gICF5LCBvXG5cbmxldCBhcnJheV9tYXBfb2ZfbGlzdCA9XG4gIGxldCByZWMgZmlsbCBmIGkgdiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICBBcnJheS51bnNhZmVfc2V0IHYgaSAoZiB4KTtcbiAgICAgIGZpbGwgZiAoc3VjYyBpKSB2IGxcbiAgaW5cbiAgZnVuIGYgLT4gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFt8fF1cbiAgICB8IHggOjogbCAtPlxuICAgICAgbGV0IGxlbiA9IHN1Y2MgKExpc3QubGVuZ3RoIGwpIGluXG4gICAgICBsZXQgYW5zID0gQXJyYXkubWFrZSBsZW4gKGYgeCkgaW5cbiAgICAgIGxldCAoKSA9IGZpbGwgZiAxIGFucyBsIGluXG4gICAgICBhbnNcblxubGV0IGFycmF5X3Jldl9vZl9saXN0ID1cbiAgbGV0IHJlYyBmaWxsIG91dCBpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFzc2VydCAoaSA9IC0xKVxuICAgIHwgaCcgOjogdCcgLT5cbiAgICAgIGxldCAoKSA9IEFycmF5LnVuc2FmZV9zZXQgb3V0IGkgaCcgaW5cbiAgICAgIGZpbGwgb3V0IChwcmVkIGkpIHQnXG4gIGluXG4gIGZ1bmN0aW9uXG4gIHwgW10gLT4gW3x8XVxuICB8IGggOjogdCAtPlxuICAgIGxldCBsID0gc3VjYyAoTGlzdC5sZW5ndGggdCkgaW5cbiAgICBsZXQgb3V0ID0gQXJyYXkubWFrZSBsIGggaW5cbiAgICBsZXQgKCkgPSBmaWxsIG91dCAobCAtIDIpIHQgaW5cbiAgICBvdXRcblxubGV0IGFycmF5X3Jldl9tYXBfb2ZfbGlzdCA9XG4gIGxldCByZWMgZmlsbCBmIG91dCBpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFzc2VydCAoaSA9IC0xKVxuICAgIHwgaCcgOjogdCcgLT5cbiAgICAgIGxldCAoKSA9IEFycmF5LnVuc2FmZV9zZXQgb3V0IGkgKGYgaCcpIGluXG4gICAgICBmaWxsIGYgb3V0IChwcmVkIGkpIHQnXG4gIGluXG4gIGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbfHxdXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCBsID0gc3VjYyAoTGlzdC5sZW5ndGggdCkgaW5cbiAgICAgIGxldCBvdXQgPSBBcnJheS5tYWtlIGwgKGYgaCkgaW5cbiAgICAgIGxldCAoKSA9IGZpbGwgZiBvdXQgKGwgLSAyKSB0IGluXG4gICAgICBvdXRcblxubGV0IGFycmF5X2ZvbGRfbGVmdGkgZiB4IGEgPVxuICBsZXQgeSA9IHJlZiB4IGluXG4gIGxldCAoKSA9IEFycmF5Lml0ZXJpIChmdW4gaSBlIC0+IHkgOj0gZiBpICF5IGUpIGEgaW5cbiAgIXlcblxubGV0IHJlYyBhdXhfZm9sZF9yaWdodGkgaSBmIGEgeCA9XG4gIGlmIGkgPCAwIHRoZW5cbiAgICB4XG4gIGVsc2VcbiAgICBhdXhfZm9sZF9yaWdodGkgKHByZWQgaSkgZiBhIChmIGkgYS4oaSkgeClcblxubGV0IGFycmF5X2ZvbGRfcmlnaHRpIGYgYSB4ID0gYXV4X2ZvbGRfcmlnaHRpIChBcnJheS5sZW5ndGggYSAtIDEpIGYgYSB4XG5cbmxldCBhcnJheV9mb2xkX2xlZnQyaSBmIHggYTEgYTIgPVxuICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhMSBpblxuICBpZiBsIDw+IEFycmF5Lmxlbmd0aCBhMiB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJhcnJheV9mb2xkX2xlZnQyaVwiKVxuICBlbHNlXG4gICAgYXJyYXlfZm9sZF9sZWZ0aSAoZnVuIGkgeCBlIC0+IGYgaSB4IGUgYTIuKGkpKSB4IGExXG5cbmxldCBhcnJheV9maWx0ZXIgZiBhID1cbiAgYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaSBhY2MgeCAtPlxuICAgICAgaWYgZiBpIHggdGhlblxuICAgICAgICBpIDo6IGFjY1xuICAgICAgZWxzZVxuICAgICAgICBhY2MpXG4gICAgW10gYVxuXG5sZXQgYXJyYXlfbWluX2VxdWFsX25vdF9udWxsIGwxIGwyID1cbiAgaWYgQXJyYXkubGVuZ3RoIGwxIDw+IEFycmF5Lmxlbmd0aCBsMiB0aGVuXG4gICAgTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGYgaiA9XG4gICAgICBpZiBqID0gQXJyYXkubGVuZ3RoIGwxIHRoZW5cbiAgICAgICAgU29tZSAoW10sIFtdKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuYjEsIGFnMSA9IGwxLihqKSBpblxuICAgICAgICBsZXQgbmIyLCBhZzIgPSBsMi4oaikgaW5cbiAgICAgICAgaWYgbmIxIDw+IG5iMiB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlIGlmIG5iMSA9IDAgdGhlblxuICAgICAgICAgIGYgKHN1Y2MgailcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlYyBhdXggaSB2YSBvdXQgPVxuICAgICAgICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCBsMSB0aGVuXG4gICAgICAgICAgICAgIFNvbWUgb3V0XG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IG5iMSwgYWcxID0gbDEuKGkpIGluXG4gICAgICAgICAgICAgIGxldCBuYjIsIGFnMiA9IGwyLihpKSBpblxuICAgICAgICAgICAgICBpZiBuYjEgPD4gbmIyIHRoZW5cbiAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVsc2UgaWYgbmIxID4gMCAmJiBuYjEgPCB2YSB0aGVuXG4gICAgICAgICAgICAgICAgYXV4IChzdWNjIGkpIG5iMSAoYWcxLCBhZzIpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBhdXggKHN1Y2MgaSkgdmEgb3V0XG4gICAgICAgICAgICApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggKHN1Y2MgaikgbmIxIChhZzEsIGFnMilcbiAgICAgICAgKVxuICAgICAgKVxuICAgIGluXG4gICAgZiAwXG4gIClcblxubGV0IGFycmF5X2NvbXBhcmUgY29tcGFyZSBhIGIgPVxuICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGxldCBsJyA9IEFycmF5Lmxlbmd0aCBiIGluXG4gIGxldCBkID0gU3RkbGliLmNvbXBhcmUgbCBsJyBpblxuICBsZXQgcmVjIGF1eF9hcnJheV9jb21wYXJlIGsgPVxuICAgIGlmIGsgPj0gbCB0aGVuXG4gICAgICAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbyA9IGNvbXBhcmUgYS4oaykgYi4oaykgaW5cbiAgICAgIGlmIG8gPD4gMCB0aGVuXG4gICAgICAgIG9cbiAgICAgIGVsc2VcbiAgICAgICAgYXV4X2FycmF5X2NvbXBhcmUgKHN1Y2MgaylcbiAgICApXG4gIGluXG4gIGlmIGQgPD4gMCB0aGVuXG4gICAgZFxuICBlbHNlXG4gICAgYXV4X2FycmF5X2NvbXBhcmUgMFxuXG5sZXQgaXRlcmkgZiBpID1cbiAgbGV0IHJlYyBhdXggaiA9XG4gICAgaWYgaiA8IGkgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBmIGogaW5cbiAgICAgIGF1eCAoc3VjYyBqKVxuICAgIClcbiAgaW5cbiAgYXV4IDBcblxubGV0IHJlYyByZWN0aSBmIHggaSA9XG4gIGlmIDAgPCBpIHRoZW4gKFxuICAgIGxldCBpJyA9IHByZWQgaSBpblxuICAgIHJlY3RpIGYgKGYgeCBpJykgaSdcbiAgKSBlbHNlXG4gICAgeFxuXG5sZXQgbWluX3Bvc19pbnRfbm90X3plcm8gKGtleWEsIGRhdGFhKSAoa2V5YiwgZGF0YWIpID1cbiAgaWYga2V5YSA9IDAgdGhlblxuICAgIGtleWIsIGRhdGFiXG4gIGVsc2UgaWYga2V5YiA9IDAgdGhlblxuICAgIGtleWEsIGRhdGFhXG4gIGVsc2UgaWYgY29tcGFyZSBrZXlhIGtleWIgPiAwIHRoZW5cbiAgICBrZXliLCBkYXRhYlxuICBlbHNlXG4gICAga2V5YSwgZGF0YWFcblxubGV0IG1heF9wb3NfaW50X25vdF96ZXJvIChrZXlhLCBkYXRhYSkgKGtleWIsIGRhdGFiKSA9XG4gIGlmIGNvbXBhcmUga2V5YSBrZXliID4gMCB0aGVuXG4gICAga2V5YSwgZGF0YWFcbiAgZWxzZVxuICAgIGtleWIsIGRhdGFiXG5cbmxldCBmb2xkX292ZXJfcGVybXV0YXRpb25zIGYgbCBhY2N1ID1cbiAgbGV0IHJlYyBhdXggdG9fZG8gZGlzY2FyZGVkIHBlcm11dGF0aW9uIGFjY3UgPVxuICAgIG1hdGNoIHRvX2RvLCBkaXNjYXJkZWQgd2l0aFxuICAgIHwgW10sIFtdIC0+IGYgcGVybXV0YXRpb24gYWNjdVxuICAgIHwgW10sIF8gOjogXyAtPiBhY2N1XG4gICAgfCBoIDo6IHQsIF8gLT5cbiAgICAgIGxldCB0b19kbzEgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIGxpc3QgYSAtPiBhIDo6IGxpc3QpIHQgZGlzY2FyZGVkIGluXG4gICAgICBsZXQgYWNjdSA9IGF1eCB0b19kbzEgW10gKGggOjogcGVybXV0YXRpb24pIGFjY3UgaW5cbiAgICAgIGxldCBhY2N1ID0gYXV4IHQgKGggOjogZGlzY2FyZGVkKSBwZXJtdXRhdGlvbiBhY2N1IGluXG4gICAgICBhY2N1XG4gIGluXG4gIGF1eCBsIFtdIFtdIGFjY3VcblxubGV0IGdjZF8yIGEgYiA9XG4gIGxldCByZWMgYXV4IGEgYiA9XG4gICAgaWYgYiA9IDAgdGhlblxuICAgICAgYVxuICAgIGVsc2VcbiAgICAgIGF1eCBiIChhIG1vZCBiKVxuICBpblxuICBsZXQgYSA9IGFicyBhIGluXG4gIGxldCBiID0gYWJzIGIgaW5cbiAgaWYgYSA8IGIgdGhlblxuICAgIGF1eCBiIGFcbiAgZWxzZVxuICAgIGF1eCBhIGJcblxubGV0IGxjbV8yIGEgYiA9IGFicyBhICogYWJzIGIgLyBnY2RfMiBhIGJcblxubGV0IGxjbSBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgW10gLT4gMFxuICB8IGggOjogdCAtPiBMaXN0LmZvbGRfbGVmdCBsY21fMiBoIHRcblxubGV0IGdldF9pbnRlcnZhbF9saXN0IHAgaSBqID1cbiAgbGV0IGFkZCBjdXJyZW50IG91dHB1dCA9XG4gICAgbWF0Y2ggY3VycmVudCB3aXRoXG4gICAgfCBOb25lIC0+IG91dHB1dFxuICAgIHwgU29tZSBwIC0+IHAgOjogb3V0cHV0XG4gIGluXG4gIGxldCBpbnNlcnQgayBjdXJyZW50ID1cbiAgICBtYXRjaCBjdXJyZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSAoaywgaylcbiAgICB8IFNvbWUgKF8sIGopIC0+IFNvbWUgKGssIGopXG4gIGluXG4gIGxldCByZWMgYXV4IHAgayBjdXJyZW50IG91dHB1dCA9XG4gICAgaWYgayA8IGkgdGhlblxuICAgICAgYWRkIGN1cnJlbnQgb3V0cHV0XG4gICAgZWxzZSBpZiBwIGsgdGhlblxuICAgICAgYXV4IHAgKGsgLSAxKSAoaW5zZXJ0IGsgY3VycmVudCkgb3V0cHV0XG4gICAgZWxzZVxuICAgICAgYXV4IHAgKGsgLSAxKSBOb25lIChhZGQgY3VycmVudCBvdXRwdXQpXG4gIGluXG4gIGF1eCBwIGogTm9uZSBbXVxuXG5sZXQgbG93ZXJjYXNlID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaVxubGV0IGNhcGl0YWxpemUgPSBTdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaVxuXG5sZXQgc3RyaW5nX3NwbGl0X29uX2NoYXIgKGRlbGltaXRlciA6IGNoYXIpIChzIDogc3RyaW5nKSA6XG4gICAgc3RyaW5nICogc3RyaW5nIG9wdGlvbiA9XG4gIHRyeVxuICAgIGxldCBpbmRleCA9IFN0cmluZy5pbmRleCBzIGRlbGltaXRlciBpblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBTdHJpbmcuc3ViIHMgMCBpbmRleCwgU29tZSAoU3RyaW5nLnN1YiBzIChpbmRleCArIDEpIChsZW5ndGggLSBpbmRleCAtIDEpKVxuICB3aXRoIE5vdF9mb3VuZCAtPiBzLCBOb25lXG5cbmxldCBzbWFzaF9kdXBsaWNhdGVfaW5fb3JkZXJlZF9saXN0IHAgbCA9XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIEZvcm1hdC5zdGRfZm9ybWF0dGVyIFwiRFVQTCBcXG5cIiBpblxuXG4gIGxldCByZWMgYXV4IHRhaWwgbm9jYyBjdXJyZW50IGFjY3UgPVxuICAgIG1hdGNoIHRhaWwgd2l0aFxuICAgIHwgW10gLT4gKGN1cnJlbnQsIG5vY2MpIDo6IGFjY3VcbiAgICB8IChoLCBuKSA6OiB0IHdoZW4gcCBoIGN1cnJlbnQgPSAwIC0+XG4gICAgICAoKmxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIEZvcm1hdC5zdGRfZm9ybWF0dGVyIFwiRFVQTCAlaVxcblwiIChuK25vY2MpIGluKilcbiAgICAgIGF1eCB0IChuICsgbm9jYykgY3VycmVudCBhY2N1XG4gICAgfCAoaCwgbikgOjogdCAtPiBhdXggdCBuIGggKChjdXJyZW50LCBub2NjKSA6OiBhY2N1KVxuICBpblxuICBtYXRjaCBMaXN0LnJldiBsIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IChoLCBuKSA6OiB0IC0+IGF1eCB0IG4gaCBbXVxuXG5sZXQgY2hvcF9zdWZmaXhfb3JfZXh0ZW5zaW9uIG5hbWUgZXh0ID1cbiAgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IG5hbWUgZXh0IHRoZW5cbiAgICBGaWxlbmFtZS5jaG9wX3N1ZmZpeCBuYW1lIGV4dFxuICBlbHNlXG4gICAgRmlsZW5hbWUucmVtb3ZlX2V4dGVuc2lvbiBuYW1lXG5cbmxldCBmaW5kX2F2YWlsYWJsZV9uYW1lIH5hbHJlYWR5X3RoZXJlIG5hbWUgfmZhY3VsdGF0aXZlIH5leHQgPVxuICBsZXQgZXh0ID1cbiAgICBtYXRjaCBleHQgd2l0aFxuICAgIHwgU29tZSBlIC0+IGVcbiAgICB8IE5vbmUgLT4gRmlsZW5hbWUuZXh0ZW5zaW9uIG5hbWVcbiAgaW5cbiAgbGV0IGJhc2UgPSBjaG9wX3N1ZmZpeF9vcl9leHRlbnNpb24gbmFtZSBleHQgaW5cbiAgaWYgYWxyZWFkeV90aGVyZSAoYmFzZSBeIGV4dCkgdGhlbiAoXG4gICAgbGV0IGJhc2UnID1cbiAgICAgIGlmIGZhY3VsdGF0aXZlIDw+IFwiXCIgdGhlblxuICAgICAgICBiYXNlIF4gXCJfXCIgXiBmYWN1bHRhdGl2ZVxuICAgICAgZWxzZVxuICAgICAgICBiYXNlXG4gICAgaW5cbiAgICBpZiBhbHJlYWR5X3RoZXJlIChiYXNlJyBeIGV4dCkgdGhlbiAoXG4gICAgICBsZXQgdiA9IHJlZiAwIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICB3aGlsZSBhbHJlYWR5X3RoZXJlIChiYXNlJyBeIFwiflwiIF4gc3RyaW5nX29mX2ludCAhdiBeIGV4dCkgZG9cbiAgICAgICAgICBpbmNyIHZcbiAgICAgICAgZG9uZVxuICAgICAgaW5cbiAgICAgIGJhc2UnIF4gXCJ+XCIgXiBzdHJpbmdfb2ZfaW50ICF2IF4gZXh0XG4gICAgKSBlbHNlXG4gICAgICBiYXNlJyBeIGV4dFxuICApIGVsc2VcbiAgICBiYXNlIF4gZXh0XG5cbmxldCBkZWZhdWx0X21lc3NhZ2VfZGVsaW10ZXIgOiBjaGFyID0gJ1xceDFlJyAoKiBcIlxcdFwiICopXG5cbmxldCBnZXRfcmVmIHJlZiA9XG4gIGxldCBpID0gIXJlZiBpblxuICBsZXQgKCkgPSByZWYgOj0gaSArIDEgaW5cbiAgaVxuXG5sZXQgcmVtb3ZlX2RvdWJsZV9lbGVtZW50cyBsID1cbiAgbGV0IGwgPSBMaXN0LnNvcnQgY29tcGFyZSBsIGluXG4gIGxldCByZWMgYXV4IGwgYWNjdSBvbGQgPVxuICAgIG1hdGNoIGwsIG9sZCB3aXRoXG4gICAgfCBbXSwgXyAtPiBhY2N1XG4gICAgfCBoIDo6IHQsIFNvbWUgaCcgd2hlbiBoID0gaCcgLT4gYXV4IHQgYWNjdSBvbGRcbiAgICB8IGggOjogdCwgKE5vbmUgfCBTb21lIF8pIC0+IGF1eCB0IChoIDo6IGFjY3UpIChTb21lIGgpXG4gIGluXG4gIGF1eCBsIFtdIE5vbmVcblxubGV0IGZyb21fbl90b18wIG4gPVxuICBsZXQgcmVjIGF1eCBrIGFjYyA9XG4gICAgaWYgayA+IG4gdGhlblxuICAgICAgYWNjXG4gICAgZWxzZVxuICAgICAgYXV4IChrICsgMSkgKGsgOjogYWNjKVxuICBpblxuICBhdXggMCBbXVxuXG5sZXQgY2xlYXIgYSA9IEFycmF5Lml0ZXJpIChmdW4gaSBfIC0+IGEuKGkpIDwtIFtdKSBhXG5cbmxldCBzb3J0X2J5X3ByaW9yaXR5IGYgbiA9XG4gIGxldCBhID0gQXJyYXkubWFrZSAobiArIDEpIFtdIGluXG4gIGxldCBrZXlzID0gZnJvbV9uX3RvXzAgbiBpblxuICBsZXQgc29ydCBsID1cbiAgICBsZXQgcmVjIGF1eCBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgbGV0IGsgPSBmIGggaW5cbiAgICAgICAgbGV0ICgpID0gYS4oaykgPC0gaCA6OiBhLihrKSBpblxuICAgICAgICBhdXggdFxuICAgIGluXG4gICAgbGV0ICgpID0gYXV4IGwgaW5cbiAgICBsZXQgb3V0cHV0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbGlzdCBrZXkgLT5cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGxpc3QgZWx0IC0+IGVsdCA6OiBsaXN0KSBsaXN0IGEuKGtleSkpXG4gICAgICAgIFtdIGtleXNcbiAgICBpblxuICAgIGxldCAoKSA9IGNsZWFyIGEgaW5cbiAgICBvdXRwdXRcbiAgaW5cbiAgc29ydFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGluaXRpYWxfYnVmZmVyX3NpemUgPSAweDEwMDBcblxubGV0IHdyaXRlX3RvX2NoYW5uZWwgZiBkIHggPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgaW5pdGlhbF9idWZmZXJfc2l6ZSBpblxuICBsZXQgKCkgPSBmIGIgeCBpblxuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBkIGJcblxubGV0IHN0cmluZ19vZl93cml0ZSBmID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIGxldCAoKSA9IGYgb2IgeCBpblxuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHJlYWRfb2Zfc3RyaW5nIGYgeCA9XG4gIGxldCBsZXhfc3QgPSBZb2pzb24uQmFzaWMuaW5pdF9sZXhlciAoKSBpblxuICBsZXQgbGV4X2J1ZiA9IExleGluZy5mcm9tX3N0cmluZyB4IGluXG4gIGYgbGV4X3N0IGxleF9idWZcblxubGV0IHJlYWRfYmV0d2Vlbl9zcGFjZXMgZiBsZXhfc3QgbGV4X2J1ZiA9XG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX3NwYWNlIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCB4ID0gZiBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBsZXhfc3QgbGV4X2J1ZiBpblxuICB4XG5cbmxldCByZWFkX25leHRfaXRlbSBmIHN0IGIgPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBzdCBiIGluXG4gIHJlYWRfYmV0d2Vlbl9zcGFjZXMgZiBzdCBiXG5cbmxldCBidWlsZF9tc2cgcyA9IFwiTm90IGEgY29ycmVjdCBcIiBeIHNcbmxldCBvZl9zdHJpbmcgKHMgOiBzdHJpbmcpID0gYFN0cmluZyBzXG5cbmxldCB0b19zdHJpbmcgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJzdHJpbmdcIikgPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgKHMgOiBzdHJpbmcpIC0+IHNcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgb2ZfaW50IChzIDogaW50KSA9IGBJbnQgc1xuXG5sZXQgdG9faW50ID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwiaW50XCIpID0gZnVuY3Rpb25cbiAgfCBgSW50IChzIDogaW50KSAtPiBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IG9mX2Jvb2wgKHMgOiBib29sKSA9XG4gIGBTdHJpbmdcbiAgICAoaWYgcyB0aGVuXG4gICAgICAgXCJ0cnVlXCJcbiAgICAgZWxzZVxuICAgICAgIFwiZmFsc2VcIilcblxubGV0IHRvX2Jvb2wgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJib29sZWFuXCIpID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBgU3RyaW5nIFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBvZl91bml0ICgpID0gYE51bGxcblxubGV0IHRvX3VuaXQgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJ1bml0XCIpID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiAoKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBvZl9vcHRpb24gdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBgTnVsbFxuICB8IFNvbWUgeCAtPlxuICAgIChtYXRjaCB0b19qc29uIHggd2l0aFxuICAgIHwgYE51bGwgLT4gZmFpbHdpdGggXCJhbWJpZ3VvdXMgSnNvblV0aWwub2Zfb3B0aW9uXCJcbiAgICB8IHggLT4geClcblxubGV0IHRvX29wdGlvbiA9IFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvblxuXG5sZXQgd3JpdGVfb3B0aW9uIGYgb2IgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gWW9qc29uLkJhc2ljLndyaXRlX251bGwgb2IgKClcbiAgfCBTb21lIHggLT4gZiBvYiB4XG5cbmxldCByZWFkX29wdGlvbiBmIHAgbGIgPVxuICBpZiBZb2pzb24uQmFzaWMucmVhZF9udWxsX2lmX3Bvc3NpYmxlIHAgbGIgdGhlblxuICAgIE5vbmVcbiAgZWxzZVxuICAgIFNvbWUgKGYgcCBsYilcblxubGV0IG9mX2xpc3QgdG9fanNvbiBsID0gYExpc3QgKExpc3QucmV2X21hcCB0b19qc29uIChMaXN0LnJldiBsKSlcblxubGV0IHRvX2xpc3QgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJsaXN0XCIpIG9mX2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMgeCAtPlxuICAgICh0cnkgTGlzdC5yZXZfbWFwIG9mX2pzb24gKExpc3QucmV2IGwpXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKSlcbiAgfCBgTnVsbCAtPiBbXVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCB3cml0ZV9jb21tYSBvYiA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyBpdGVyMiBmX2VsdCB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgIHdyaXRlX2NvbW1hIHg7XG4gICAgZl9lbHQgeCB5O1xuICAgIGl0ZXIyIGZfZWx0IHggbFxuXG5sZXQgd3JpdGVfbGlzdCBmIG9iIGwgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgeSA6OiBsIC0+XG4gICAgICBmIG9iIHk7XG4gICAgICBpdGVyMiBmIG9iIGxcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5sZXQgb2ZfYXJyYXkgdG9fanNvbiBhID1cbiAgYExpc3QgKEFycmF5LmZvbGRfcmlnaHQgKGZ1biB4IGFjYyAtPiB0b19qc29uIHggOjogYWNjKSBhIFtdKVxuXG5sZXQgdG9fYXJyYXkgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJhcnJheVwiKSBvZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IG9mX2pzb24gbFxuICB8IGBOdWxsIC0+IFt8fF1cbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgd3JpdGVfYXJyYXkgZiBvYiBsID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICdbJyBpblxuICBsZXQgKCkgPSBpZiBBcnJheS5sZW5ndGggbCA+IDAgdGhlbiBmIG9iIGwuKDApIGluXG4gIGxldCAoKSA9XG4gICAgVG9vbHMuaXRlcmlcbiAgICAgIChmdW4gaSAtPlxuICAgICAgICBsZXQgKCkgPSB3cml0ZV9jb21tYSBvYiBpblxuICAgICAgICBmIG9iIGwuKHN1Y2MgaSkpXG4gICAgICAocHJlZCAoQXJyYXkubGVuZ3RoIGwpKVxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCByZWMgaXRlcl9zZXEgb2IgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgZiA6OiBxIC0+XG4gICAgbGV0ICgpID0gd3JpdGVfY29tbWEgb2IgaW5cbiAgICBsZXQgKCkgPSBmIG9iIGluXG4gICAgaXRlcl9zZXEgb2IgcVxuXG5sZXQgd3JpdGVfc2VxdWVuY2Ugb2IgbCA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnWycgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCBmIDo6IHEgLT5cbiAgICAgIGxldCAoKSA9IGYgb2IgaW5cbiAgICAgIGl0ZXJfc2VxIG9iIHFcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5sZXQgcmVhZF92YXJpYW50IHJlYWRfaWQgcmVhZCBzdCBiID1cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfbGJyIHN0IGIgaW5cbiAgbGV0IGNzdCA9IHJlYWRfYmV0d2Vlbl9zcGFjZXMgcmVhZF9pZCBzdCBiIGluXG4gIGxldCBvdXQgPSByZWFkIHN0IGIgY3N0IGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX3JiciBzdCBiIGluXG4gIG91dFxuXG5sZXQgc21hcnRfYXNzb2MgbCA9XG4gIGBBc3NvY1xuICAgIChMaXN0LnJldlxuICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IF8sIChgTnVsbCB8IGBBc3NvYyBbXSB8IGBMaXN0IFtdKSAtPiBhY2NcbiAgICAgICAgICAgIHwgeCAtPiB4IDo6IGFjYylcbiAgICAgICAgICBbXSBsKSlcblxubGV0IG9mX2Fzc29jIHRvX2pzb24gbCA9IGBBc3NvYyAoTGlzdC5yZXZfbWFwIHRvX2pzb24gKExpc3QucmV2IGwpKVxuXG5sZXQgdG9fYXNzb2MgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJhc3NvY2lhdGlvblwiKSBvZl9qc29uIGpzb24gPVxuICBtYXRjaCBqc29uIHdpdGhcbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeSBMaXN0LnJldl9tYXAgb2ZfanNvbiAoTGlzdC5yZXYgbClcbiAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpKVxuICB8IGBOdWxsIC0+IFtdXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IHdyaXRlX2ZpZWxkIG5hIGYgb2IgeCA9XG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgbmEgaW5cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICc6JyBpblxuICBmIG9iIHhcblxubGV0IG9mX3BhaXIgPyhsYWIxID0gXCJmaXJzdFwiKSA/KGxhYjIgPSBcInNlY29uZFwiKSB0b19qc29uMSB0b19qc29uMiAoYSwgYikgPVxuICBgQXNzb2MgWyBsYWIxLCB0b19qc29uMSBhOyBsYWIyLCB0b19qc29uMiBiIF1cblxubGV0IHRvX3RyaXBsZSA/KGxhYjEgPSBcImZpcnN0XCIpID8obGFiMiA9IFwic2Vjb25kXCIpID8obGFiMyA9IFwidGhpcmRcIilcbiAgICA/KGVycm9yX21zZyA9IGJ1aWxkX21zZyBcInRyaXBsZVwiKSBvZl9qc29uMSBvZl9qc29uMiBvZl9qc29uMyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgKHRyeVxuICAgICAgICggb2ZfanNvbjEgKExpc3QuYXNzb2MgbGFiMSBsKSxcbiAgICAgICAgIG9mX2pzb24yIChMaXN0LmFzc29jIGxhYjIgbCksXG4gICAgICAgICBvZl9qc29uMyAoTGlzdC5hc3NvYyBsYWIzIGwpIClcbiAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBvZl90cmlwbGUgPyhsYWIxID0gXCJmaXJzdFwiKSA/KGxhYjIgPSBcInNlY29uZFwiKSA/KGxhYjMgPSBcInRoaXJkXCIpIHRvX2pzb24xXG4gICAgdG9fanNvbjIgdG9fanNvbjMgKGEsIGIsIGMpID1cbiAgYEFzc29jIFsgbGFiMSwgdG9fanNvbjEgYTsgbGFiMiwgdG9fanNvbjIgYjsgbGFiMywgdG9fanNvbjMgYyBdXG5cbmxldCB0b19wYWlyID8obGFiMSA9IFwiZmlyc3RcIikgPyhsYWIyID0gXCJzZWNvbmRcIikgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJwYWlyXCIpXG4gICAgb2ZfanNvbjEgb2ZfanNvbjIgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMiAtPlxuICAgICh0cnkgb2ZfanNvbjEgKExpc3QuYXNzb2MgbGFiMSBsKSwgb2ZfanNvbjIgKExpc3QuYXNzb2MgbGFiMiBsKVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IHdyaXRlX2NvbXBhY3RfcGFpciBmIGcgb2IgKHgsIHkpID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICdbJyBpblxuICBsZXQgKCkgPSBmIG9iIHggaW5cbiAgbGV0ICgpID0gd3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID0gZyBvYiB5IGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IHJlYWRfY29tcGFjdF9wYWlyIGYgZyBzdCBiID1cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfbGJyIHN0IGIgaW5cbiAgbGV0IHggPSByZWFkX2JldHdlZW5fc3BhY2VzIGYgc3QgYiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBzdCBiIGluXG4gIGxldCB5ID0gcmVhZF9iZXR3ZWVuX3NwYWNlcyBnIHN0IGIgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfcmJyIHN0IGIgaW5cbiAgeCwgeVxuXG5sZXQgY29tcGFjdF90b19wYWlyIGYgZyA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyB4OyB5IF0gLT4gZiB4LCBnIHlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvbXBhY3QgcGFpclwiLCB4KSlcblxubGV0IG9mX21hcCA/KGxhYl9rZXkgPSBcImtleVwiKSA/KGxhYl92YWx1ZSA9IFwidmFsdWVcIikgfmZvbGQga2V5X3RvX2pzb25cbiAgICB2YWx1ZV90b19qc29uIG1hcCA9XG4gIGBMaXN0XG4gICAgKExpc3QucmV2XG4gICAgICAgKGZvbGRcbiAgICAgICAgICAoZnVuIChrZXkgOiAna2V5KSAodmFsdWUgOiAndmFsdWUpIChsaXN0IDogWW9qc29uLkJhc2ljLnQgbGlzdCkgLT5cbiAgICAgICAgICAgIGBBc3NvYyBbIGxhYl9rZXksIGtleV90b19qc29uIGtleTsgbGFiX3ZhbHVlLCB2YWx1ZV90b19qc29uIHZhbHVlIF1cbiAgICAgICAgICAgIDo6IGxpc3QpXG4gICAgICAgICAgbWFwIFtdKSlcblxubGV0IHRvX21hcCA/KGxhYl9rZXkgPSBcImtleVwiKSA/KGxhYl92YWx1ZSA9IFwidmFsdWVcIilcbiAgICA/KGVycm9yX21zZyA9IGJ1aWxkX21zZyBcIm1hcFwiKSB+YWRkIH5lbXB0eSBqc29uX3RvX2tleSBqc29uX3RvX3ZhbHVlID1cbiAgZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gbWFwIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAyIC0+XG4gICAgICAgICAgKHRyeVxuICAgICAgICAgICAgIGFkZFxuICAgICAgICAgICAgICAgKGpzb25fdG9fa2V5IChMaXN0LmFzc29jIGxhYl9rZXkgbCkpXG4gICAgICAgICAgICAgICAoanNvbl90b192YWx1ZSAoTGlzdC5hc3NvYyBsYWJfdmFsdWUgbCkpXG4gICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSkpXG4gICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSkpXG4gICAgICBlbXB0eSBsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IG9mX3VuaXhfbGFiZWwgPSBmdW5jdGlvblxuICB8IFVuaXhMYWJlbHMuRTJCSUcgLT4gYEFzc29jIFsgXCJFMkJJR1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQUNDRVMgLT4gYEFzc29jIFsgXCJFQUNDRVNcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUFHQUlOIC0+IGBBc3NvYyBbIFwiRUFHQUlOXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVCQURGIC0+IGBBc3NvYyBbIFwiRUJBREZcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUJVU1kgLT4gYEFzc29jIFsgXCJFQlVTWVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQ0hJTEQgLT4gYEFzc29jIFsgXCJFQ0hJTERcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRURFQURMSyAtPiBgQXNzb2MgWyBcIkVERUFETEtcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRURPTSAtPiBgQXNzb2MgWyBcIkVET01cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUVYSVNUIC0+IGBBc3NvYyBbIFwiRUVYSVNUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVGQVVMVCAtPiBgQXNzb2MgWyBcIkVGQVVMVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FRkJJRyAtPiBgQXNzb2MgWyBcIkVGQklHXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVJTlRSIC0+IGBBc3NvYyBbIFwiRUlOVFJcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUlOVkFMIC0+IGBBc3NvYyBbIFwiRUlOVkFMXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVJTyAtPiBgQXNzb2MgWyBcIkVJT1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSVNESVIgLT4gYEFzc29jIFsgXCJFSVNESVJcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU1GSUxFIC0+IGBBc3NvYyBbIFwiRU1GSUxFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVNTElOSyAtPiBgQXNzb2MgWyBcIkVNTElOS1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTkFNRVRPT0xPTkcgLT4gYEFzc29jIFsgXCJFTkFNRVRPT0xPTkdcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5GSUxFIC0+IGBBc3NvYyBbIFwiRU5GSUxFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT0RFViAtPiBgQXNzb2MgWyBcIkVOT0RFVlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9FTlQgLT4gYEFzc29jIFsgXCJFTk9FTlRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PRVhFQyAtPiBgQXNzb2MgWyBcIkVOT0VYRUNcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PTENLIC0+IGBBc3NvYyBbIFwiRU5PTENLXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT01FTSAtPiBgQXNzb2MgWyBcIkVOT01FTVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9TUEMgLT4gYEFzc29jIFsgXCJFTk9TUENcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PU1lTIC0+IGBBc3NvYyBbIFwiRU5PU1lTXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT1RESVIgLT4gYEFzc29jIFsgXCJFTk9URElSXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT1RFTVBUWSAtPiBgQXNzb2MgWyBcIkVOT1RFTVBUWVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9UVFkgLT4gYEFzc29jIFsgXCJFTk9UVFlcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5YSU8gLT4gYEFzc29jIFsgXCJFTlhJT1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FUEVSTSAtPiBgQXNzb2MgWyBcIkVQRVJNXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVQSVBFIC0+IGBBc3NvYyBbIFwiRVBJUEVcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVJBTkdFIC0+IGBBc3NvYyBbIFwiRVJBTkdFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVST0ZTIC0+IGBBc3NvYyBbIFwiRVJPRlNcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVNQSVBFIC0+IGBBc3NvYyBbIFwiRVNQSVBFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVTUkNIIC0+IGBBc3NvYyBbIFwiRVNSQ0hcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVhERVYgLT4gYEFzc29jIFsgXCJFWERFVlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FV09VTERCTE9DSyAtPiBgQXNzb2MgWyBcIkVXT1VMREJMT0NLXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVJTlBST0dSRVNTIC0+IGBBc3NvYyBbIFwiRUlOUFJPR1JFU1NcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUFMUkVBRFkgLT4gYEFzc29jIFsgXCJFQUxSRUFEWVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9UU09DSyAtPiBgQXNzb2MgWyBcIkVOT1RTT0NLXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVERVNUQUREUlJFUSAtPiBgQXNzb2MgWyBcIkVERVNUQUREUlJFUVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTVNHU0laRSAtPiBgQXNzb2MgWyBcIkVNU0dTSVpFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVQUk9UT1RZUEUgLT4gYEFzc29jIFsgXCJFUFJPVE9UWVBFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT1BST1RPT1BUIC0+IGBBc3NvYyBbIFwiRU5PUFJPVE9PUFRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVBST1RPTk9TVVBQT1JUIC0+IGBBc3NvYyBbIFwiRVBST1RPTk9TVVBQT1JUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVTT0NLVE5PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVTT0NLVE5PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FT1BOT1RTVVBQIC0+IGBBc3NvYyBbIFwiRU9QTk9UU1VQUFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FUEZOT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFUEZOT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUFGTk9TVVBQT1JUIC0+IGBBc3NvYyBbIFwiRUFGTk9TVVBQT1JUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVBRERSSU5VU0UgLT4gYEFzc29jIFsgXCJFQUREUklOVVNFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVBRERSTk9UQVZBSUwgLT4gYEFzc29jIFsgXCJFQUREUk5PVEFWQUlMXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVORVRET1dOIC0+IGBBc3NvYyBbIFwiRU5FVERPV05cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5FVFVOUkVBQ0ggLT4gYEFzc29jIFsgXCJFTkVUVU5SRUFDSFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTkVUUkVTRVQgLT4gYEFzc29jIFsgXCJFTkVUUkVTRVRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUNPTk5BQk9SVEVEIC0+IGBBc3NvYyBbIFwiRUNPTk5BQk9SVEVEXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVDT05OUkVTRVQgLT4gYEFzc29jIFsgXCJFQ09OTlJFU0VUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT0JVRlMgLT4gYEFzc29jIFsgXCJFTk9CVUZTXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVJU0NPTk4gLT4gYEFzc29jIFsgXCJFSVNDT05OXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT1RDT05OIC0+IGBBc3NvYyBbIFwiRU5PVENPTk5cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVNIVVRET1dOIC0+IGBBc3NvYyBbIFwiRVNIVVRET1dOXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVUT09NQU5ZUkVGUyAtPiBgQXNzb2MgWyBcIkVUT09NQU5ZUkVGU1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FVElNRURPVVQgLT4gYEFzc29jIFsgXCJFVElNRURPVVRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUNPTk5SRUZVU0VEIC0+IGBBc3NvYyBbIFwiRUNPTk5SRUZVU0VEXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVIT1NURE9XTiAtPiBgQXNzb2MgWyBcIkVIT1NURE9XTlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSE9TVFVOUkVBQ0ggLT4gYEFzc29jIFsgXCJFSE9TVFVOUkVBQ0hcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUxPT1AgLT4gYEFzc29jIFsgXCJFTE9PUFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FT1ZFUkZMT1cgLT4gYEFzc29jIFsgXCJFT1ZFUkZMT1dcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVVOS05PV05FUlIgaW50IC0+IGBBc3NvYyBbIFwiRVVOS05PV05FUlJcIiwgb2ZfaW50IGludCBdXG5cbmxldCAodG9fdW5peF9sYWJlbCA6IFlvanNvbi5CYXNpYy50IC0+IFVuaXhMYWJlbHMuZXJyb3IpID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAoXCJFMkJJR1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkUyQklHXG4gIHwgYEFzc29jIFsgKFwiRUFDQ0VTXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUFDQ0VTXG4gIHwgYEFzc29jIFsgKFwiRUFHQUlOXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUFHQUlOXG4gIHwgYEFzc29jIFsgKFwiRUJBREZcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQkFERlxuICB8IGBBc3NvYyBbIChcIkVCVVNZXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUJVU1lcbiAgfCBgQXNzb2MgWyAoXCJFQ0hJTERcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQ0hJTERcbiAgfCBgQXNzb2MgWyAoXCJFREVBRExLXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRURFQURMS1xuICB8IGBBc3NvYyBbIChcIkVET01cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FRE9NXG4gIHwgYEFzc29jIFsgKFwiRUVYSVNUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUVYSVNUXG4gIHwgYEFzc29jIFsgKFwiRUZBVUxUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUZBVUxUXG4gIHwgYEFzc29jIFsgKFwiRUZCSUdcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FRkJJR1xuICB8IGBBc3NvYyBbIChcIkVJTlRSXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlOVFJcbiAgfCBgQXNzb2MgWyAoXCJFSU5WQUxcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FSU5WQUxcbiAgfCBgQXNzb2MgWyAoXCJFSU9cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FSU9cbiAgfCBgQXNzb2MgWyAoXCJFSVNESVJcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FSVNESVJcbiAgfCBgQXNzb2MgWyAoXCJFTUZJTEVcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTUZJTEVcbiAgfCBgQXNzb2MgWyAoXCJFTUxJTktcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTUxJTktcbiAgfCBgQXNzb2MgWyAoXCJFTkFNRVRPT0xPTkdcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTkFNRVRPT0xPTkdcbiAgfCBgQXNzb2MgWyAoXCJFTkZJTEVcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTkZJTEVcbiAgfCBgQXNzb2MgWyAoXCJFTk9ERVZcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9ERVZcbiAgfCBgQXNzb2MgWyAoXCJFTk9FTlRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9FTlRcbiAgfCBgQXNzb2MgWyAoXCJFTk9FWEVDXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PRVhFQ1xuICB8IGBBc3NvYyBbIChcIkVOT0xDS1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT0xDS1xuICB8IGBBc3NvYyBbIChcIkVOT01FTVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT01FTVxuICB8IGBBc3NvYyBbIChcIkVOT1NQQ1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1NQQ1xuICB8IGBBc3NvYyBbIChcIkVOT1NZU1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1NZU1xuICB8IGBBc3NvYyBbIChcIkVOT1RESVJcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9URElSXG4gIHwgYEFzc29jIFsgKFwiRU5PVEVNUFRZXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PVEVNUFRZXG4gIHwgYEFzc29jIFsgKFwiRU5PVFRZXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PVFRZXG4gIHwgYEFzc29jIFsgKFwiRU5YSU9cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTlhJT1xuICB8IGBBc3NvYyBbIChcIkVQRVJNXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVBFUk1cbiAgfCBgQXNzb2MgWyAoXCJFUElQRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVQSVBFXG4gIHwgYEFzc29jIFsgKFwiRVJBTkdFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVJBTkdFXG4gIHwgYEFzc29jIFsgKFwiRVJPRlNcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FUk9GU1xuICB8IGBBc3NvYyBbIChcIkVTUElQRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVTUElQRVxuICB8IGBBc3NvYyBbIChcIkVTUkNIXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVNSQ0hcbiAgfCBgQXNzb2MgWyAoXCJFWERFVlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVYREVWXG4gIHwgYEFzc29jIFsgKFwiRVdPVUxEQkxPQ0tcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FV09VTERCTE9DS1xuICB8IGBBc3NvYyBbIChcIkVJTlBST0dSRVNTXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlOUFJPR1JFU1NcbiAgfCBgQXNzb2MgWyAoXCJFQUxSRUFEWVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVBTFJFQURZXG4gIHwgYEFzc29jIFsgKFwiRU5PVFNPQ0tcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9UU09DS1xuICB8IGBBc3NvYyBbIChcIkVERVNUQUREUlJFUVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVERVNUQUREUlJFUVxuICB8IGBBc3NvYyBbIChcIkVNU0dTSVpFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU1TR1NJWkVcbiAgfCBgQXNzb2MgWyAoXCJFUFJPVE9UWVBFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVBST1RPVFlQRVxuICB8IGBBc3NvYyBbIChcIkVOT1BST1RPT1BUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PUFJPVE9PUFRcbiAgfCBgQXNzb2MgWyAoXCJFUFJPVE9OT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FUFJPVE9OT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFU09DS1ROT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FU09DS1ROT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFT1BOT1RTVVBQXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU9QTk9UU1VQUFxuICB8IGBBc3NvYyBbIChcIkVQRk5PU1VQUE9SVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVQRk5PU1VQUE9SVFxuICB8IGBBc3NvYyBbIChcIkVBRk5PU1VQUE9SVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVBRk5PU1VQUE9SVFxuICB8IGBBc3NvYyBbIChcIkVBRERSSU5VU0VcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQUREUklOVVNFXG4gIHwgYEFzc29jIFsgKFwiRUFERFJOT1RBVkFJTFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVBRERSTk9UQVZBSUxcbiAgfCBgQXNzb2MgWyAoXCJFTkVURE9XTlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVORVRET1dOXG4gIHwgYEFzc29jIFsgKFwiRU5FVFVOUkVBQ0hcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTkVUVU5SRUFDSFxuICB8IGBBc3NvYyBbIChcIkVORVRSRVNFVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVORVRSRVNFVFxuICB8IGBBc3NvYyBbIChcIkVDT05OQUJPUlRFRFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVDT05OQUJPUlRFRFxuICB8IGBBc3NvYyBbIChcIkVDT05OUkVTRVRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQ09OTlJFU0VUXG4gIHwgYEFzc29jIFsgKFwiRU5PQlVGU1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT0JVRlNcbiAgfCBgQXNzb2MgWyAoXCJFSVNDT05OXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlTQ09OTlxuICB8IGBBc3NvYyBbIChcIkVOT1RDT05OXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PVENPTk5cbiAgfCBgQXNzb2MgWyAoXCJFU0hVVERPV05cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FU0hVVERPV05cbiAgfCBgQXNzb2MgWyAoXCJFVE9PTUFOWVJFRlNcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FVE9PTUFOWVJFRlNcbiAgfCBgQXNzb2MgWyAoXCJFVElNRURPVVRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FVElNRURPVVRcbiAgfCBgQXNzb2MgWyAoXCJFQ09OTlJFRlVTRURcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQ09OTlJFRlVTRURcbiAgfCBgQXNzb2MgWyAoXCJFSE9TVERPV05cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FSE9TVERPV05cbiAgfCBgQXNzb2MgWyAoXCJFSE9TVFVOUkVBQ0hcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FSE9TVFVOUkVBQ0hcbiAgfCBgQXNzb2MgWyAoXCJFTE9PUFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVMT09QXG4gIHwgYEFzc29jIFsgKFwiRU9WRVJGTE9XXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU9WRVJGTE9XXG4gIHwgYEFzc29jIFsgKFwiRVVOS05PV05FUlJcIiwgaW50KSBdIC0+IFVuaXhMYWJlbHMuRVVOS05PV05FUlIgKHRvX2ludCBpbnQpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoYnVpbGRfbXNnIFwidW5peCBsYWJlbHMgZXJyb3JcIiwgeCkpXG5cbmxldCBvZl91bml4X2Vycm9yID0gZnVuY3Rpb25cbiAgfCBVbml4LkUyQklHIC0+IGBBc3NvYyBbIFwiRTJCSUdcIiwgYE51bGwgXVxuICB8IFVuaXguRUFDQ0VTIC0+IGBBc3NvYyBbIFwiRUFDQ0VTXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVBR0FJTiAtPiBgQXNzb2MgWyBcIkVBR0FJTlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQkFERiAtPiBgQXNzb2MgWyBcIkVCQURGXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVCVVNZIC0+IGBBc3NvYyBbIFwiRUJVU1lcIiwgYE51bGwgXVxuICB8IFVuaXguRUNISUxEIC0+IGBBc3NvYyBbIFwiRUNISUxEXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVERUFETEsgLT4gYEFzc29jIFsgXCJFREVBRExLXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVET00gLT4gYEFzc29jIFsgXCJFRE9NXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVFWElTVCAtPiBgQXNzb2MgWyBcIkVFWElTVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FRkFVTFQgLT4gYEFzc29jIFsgXCJFRkFVTFRcIiwgYE51bGwgXVxuICB8IFVuaXguRUZCSUcgLT4gYEFzc29jIFsgXCJFRkJJR1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FSU5UUiAtPiBgQXNzb2MgWyBcIkVJTlRSXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVJTlZBTCAtPiBgQXNzb2MgWyBcIkVJTlZBTFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FSU8gLT4gYEFzc29jIFsgXCJFSU9cIiwgYE51bGwgXVxuICB8IFVuaXguRUlTRElSIC0+IGBBc3NvYyBbIFwiRUlTRElSXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVNRklMRSAtPiBgQXNzb2MgWyBcIkVNRklMRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTUxJTksgLT4gYEFzc29jIFsgXCJFTUxJTktcIiwgYE51bGwgXVxuICB8IFVuaXguRU5BTUVUT09MT05HIC0+IGBBc3NvYyBbIFwiRU5BTUVUT09MT05HXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVORklMRSAtPiBgQXNzb2MgWyBcIkVORklMRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9ERVYgLT4gYEFzc29jIFsgXCJFTk9ERVZcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PRU5UIC0+IGBBc3NvYyBbIFwiRU5PRU5UXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT0VYRUMgLT4gYEFzc29jIFsgXCJFTk9FWEVDXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT0xDSyAtPiBgQXNzb2MgWyBcIkVOT0xDS1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9NRU0gLT4gYEFzc29jIFsgXCJFTk9NRU1cIiwgYE51bGwgXVxuICB8IFVuaXguRU5PU1BDIC0+IGBBc3NvYyBbIFwiRU5PU1BDXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT1NZUyAtPiBgQXNzb2MgWyBcIkVOT1NZU1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9URElSIC0+IGBBc3NvYyBbIFwiRU5PVERJUlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9URU1QVFkgLT4gYEFzc29jIFsgXCJFTk9URU1QVFlcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PVFRZIC0+IGBBc3NvYyBbIFwiRU5PVFRZXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOWElPIC0+IGBBc3NvYyBbIFwiRU5YSU9cIiwgYE51bGwgXVxuICB8IFVuaXguRVBFUk0gLT4gYEFzc29jIFsgXCJFUEVSTVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FUElQRSAtPiBgQXNzb2MgWyBcIkVQSVBFXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVSQU5HRSAtPiBgQXNzb2MgWyBcIkVSQU5HRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FUk9GUyAtPiBgQXNzb2MgWyBcIkVST0ZTXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVTUElQRSAtPiBgQXNzb2MgWyBcIkVTUElQRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FU1JDSCAtPiBgQXNzb2MgWyBcIkVTUkNIXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVYREVWIC0+IGBBc3NvYyBbIFwiRVhERVZcIiwgYE51bGwgXVxuICB8IFVuaXguRVdPVUxEQkxPQ0sgLT4gYEFzc29jIFsgXCJFV09VTERCTE9DS1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FSU5QUk9HUkVTUyAtPiBgQXNzb2MgWyBcIkVJTlBST0dSRVNTXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVBTFJFQURZIC0+IGBBc3NvYyBbIFwiRUFMUkVBRFlcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PVFNPQ0sgLT4gYEFzc29jIFsgXCJFTk9UU09DS1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FREVTVEFERFJSRVEgLT4gYEFzc29jIFsgXCJFREVTVEFERFJSRVFcIiwgYE51bGwgXVxuICB8IFVuaXguRU1TR1NJWkUgLT4gYEFzc29jIFsgXCJFTVNHU0laRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FUFJPVE9UWVBFIC0+IGBBc3NvYyBbIFwiRVBST1RPVFlQRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9QUk9UT09QVCAtPiBgQXNzb2MgWyBcIkVOT1BST1RPT1BUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVQUk9UT05PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVQUk9UT05PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FU09DS1ROT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFU09DS1ROT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXguRU9QTk9UU1VQUCAtPiBgQXNzb2MgWyBcIkVPUE5PVFNVUFBcIiwgYE51bGwgXVxuICB8IFVuaXguRVBGTk9TVVBQT1JUIC0+IGBBc3NvYyBbIFwiRVBGTk9TVVBQT1JUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVBRk5PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVBRk5PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQUREUklOVVNFIC0+IGBBc3NvYyBbIFwiRUFERFJJTlVTRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQUREUk5PVEFWQUlMIC0+IGBBc3NvYyBbIFwiRUFERFJOT1RBVkFJTFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTkVURE9XTiAtPiBgQXNzb2MgWyBcIkVORVRET1dOXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVORVRVTlJFQUNIIC0+IGBBc3NvYyBbIFwiRU5FVFVOUkVBQ0hcIiwgYE51bGwgXVxuICB8IFVuaXguRU5FVFJFU0VUIC0+IGBBc3NvYyBbIFwiRU5FVFJFU0VUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVDT05OQUJPUlRFRCAtPiBgQXNzb2MgWyBcIkVDT05OQUJPUlRFRFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQ09OTlJFU0VUIC0+IGBBc3NvYyBbIFwiRUNPTk5SRVNFVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9CVUZTIC0+IGBBc3NvYyBbIFwiRU5PQlVGU1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FSVNDT05OIC0+IGBBc3NvYyBbIFwiRUlTQ09OTlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9UQ09OTiAtPiBgQXNzb2MgWyBcIkVOT1RDT05OXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVTSFVURE9XTiAtPiBgQXNzb2MgWyBcIkVTSFVURE9XTlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FVE9PTUFOWVJFRlMgLT4gYEFzc29jIFsgXCJFVE9PTUFOWVJFRlNcIiwgYE51bGwgXVxuICB8IFVuaXguRVRJTUVET1VUIC0+IGBBc3NvYyBbIFwiRVRJTUVET1VUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVDT05OUkVGVVNFRCAtPiBgQXNzb2MgWyBcIkVDT05OUkVGVVNFRFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FSE9TVERPV04gLT4gYEFzc29jIFsgXCJFSE9TVERPV05cIiwgYE51bGwgXVxuICB8IFVuaXguRUhPU1RVTlJFQUNIIC0+IGBBc3NvYyBbIFwiRUhPU1RVTlJFQUNIXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVMT09QIC0+IGBBc3NvYyBbIFwiRUxPT1BcIiwgYE51bGwgXVxuICB8IFVuaXguRU9WRVJGTE9XIC0+IGBBc3NvYyBbIFwiRU9WRVJGTE9XXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVVTktOT1dORVJSIGludCAtPiBgQXNzb2MgWyBcIkVVTktOT1dORVJSXCIsIG9mX2ludCBpbnQgXVxuXG5sZXQgKHRvX3VuaXhfZXJyb3IgOiBZb2pzb24uQmFzaWMudCAtPiBVbml4LmVycm9yKSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwiRTJCSUdcIiwgYE51bGwpIF0gLT4gVW5peC5FMkJJR1xuICB8IGBBc3NvYyBbIChcIkVBQ0NFU1wiLCBgTnVsbCkgXSAtPiBVbml4LkVBQ0NFU1xuICB8IGBBc3NvYyBbIChcIkVBR0FJTlwiLCBgTnVsbCkgXSAtPiBVbml4LkVBR0FJTlxuICB8IGBBc3NvYyBbIChcIkVCQURGXCIsIGBOdWxsKSBdIC0+IFVuaXguRUJBREZcbiAgfCBgQXNzb2MgWyAoXCJFQlVTWVwiLCBgTnVsbCkgXSAtPiBVbml4LkVCVVNZXG4gIHwgYEFzc29jIFsgKFwiRUNISUxEXCIsIGBOdWxsKSBdIC0+IFVuaXguRUNISUxEXG4gIHwgYEFzc29jIFsgKFwiRURFQURMS1wiLCBgTnVsbCkgXSAtPiBVbml4LkVERUFETEtcbiAgfCBgQXNzb2MgWyAoXCJFRE9NXCIsIGBOdWxsKSBdIC0+IFVuaXguRURPTVxuICB8IGBBc3NvYyBbIChcIkVFWElTVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVFWElTVFxuICB8IGBBc3NvYyBbIChcIkVGQVVMVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVGQVVMVFxuICB8IGBBc3NvYyBbIChcIkVGQklHXCIsIGBOdWxsKSBdIC0+IFVuaXguRUZCSUdcbiAgfCBgQXNzb2MgWyAoXCJFSU5UUlwiLCBgTnVsbCkgXSAtPiBVbml4LkVJTlRSXG4gIHwgYEFzc29jIFsgKFwiRUlOVkFMXCIsIGBOdWxsKSBdIC0+IFVuaXguRUlOVkFMXG4gIHwgYEFzc29jIFsgKFwiRUlPXCIsIGBOdWxsKSBdIC0+IFVuaXguRUlPXG4gIHwgYEFzc29jIFsgKFwiRUlTRElSXCIsIGBOdWxsKSBdIC0+IFVuaXguRUlTRElSXG4gIHwgYEFzc29jIFsgKFwiRU1GSUxFXCIsIGBOdWxsKSBdIC0+IFVuaXguRU1GSUxFXG4gIHwgYEFzc29jIFsgKFwiRU1MSU5LXCIsIGBOdWxsKSBdIC0+IFVuaXguRU1MSU5LXG4gIHwgYEFzc29jIFsgKFwiRU5BTUVUT09MT05HXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5BTUVUT09MT05HXG4gIHwgYEFzc29jIFsgKFwiRU5GSUxFXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5GSUxFXG4gIHwgYEFzc29jIFsgKFwiRU5PREVWXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PREVWXG4gIHwgYEFzc29jIFsgKFwiRU5PRU5UXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PRU5UXG4gIHwgYEFzc29jIFsgKFwiRU5PRVhFQ1wiLCBgTnVsbCkgXSAtPiBVbml4LkVOT0VYRUNcbiAgfCBgQXNzb2MgWyAoXCJFTk9MQ0tcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9MQ0tcbiAgfCBgQXNzb2MgWyAoXCJFTk9NRU1cIiwgYE51bGwpIF0gLT4gVW5peC5FTk9NRU1cbiAgfCBgQXNzb2MgWyAoXCJFTk9TUENcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9TUENcbiAgfCBgQXNzb2MgWyAoXCJFTk9TWVNcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9TWVNcbiAgfCBgQXNzb2MgWyAoXCJFTk9URElSXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PVERJUlxuICB8IGBBc3NvYyBbIChcIkVOT1RFTVBUWVwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1RFTVBUWVxuICB8IGBBc3NvYyBbIChcIkVOT1RUWVwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1RUWVxuICB8IGBBc3NvYyBbIChcIkVOWElPXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5YSU9cbiAgfCBgQXNzb2MgWyAoXCJFUEVSTVwiLCBgTnVsbCkgXSAtPiBVbml4LkVQRVJNXG4gIHwgYEFzc29jIFsgKFwiRVBJUEVcIiwgYE51bGwpIF0gLT4gVW5peC5FUElQRVxuICB8IGBBc3NvYyBbIChcIkVSQU5HRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVSQU5HRVxuICB8IGBBc3NvYyBbIChcIkVST0ZTXCIsIGBOdWxsKSBdIC0+IFVuaXguRVJPRlNcbiAgfCBgQXNzb2MgWyAoXCJFU1BJUEVcIiwgYE51bGwpIF0gLT4gVW5peC5FU1BJUEVcbiAgfCBgQXNzb2MgWyAoXCJFU1JDSFwiLCBgTnVsbCkgXSAtPiBVbml4LkVTUkNIXG4gIHwgYEFzc29jIFsgKFwiRVhERVZcIiwgYE51bGwpIF0gLT4gVW5peC5FWERFVlxuICB8IGBBc3NvYyBbIChcIkVXT1VMREJMT0NLXCIsIGBOdWxsKSBdIC0+IFVuaXguRVdPVUxEQkxPQ0tcbiAgfCBgQXNzb2MgWyAoXCJFSU5QUk9HUkVTU1wiLCBgTnVsbCkgXSAtPiBVbml4LkVJTlBST0dSRVNTXG4gIHwgYEFzc29jIFsgKFwiRUFMUkVBRFlcIiwgYE51bGwpIF0gLT4gVW5peC5FQUxSRUFEWVxuICB8IGBBc3NvYyBbIChcIkVOT1RTT0NLXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PVFNPQ0tcbiAgfCBgQXNzb2MgWyAoXCJFREVTVEFERFJSRVFcIiwgYE51bGwpIF0gLT4gVW5peC5FREVTVEFERFJSRVFcbiAgfCBgQXNzb2MgWyAoXCJFTVNHU0laRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVNU0dTSVpFXG4gIHwgYEFzc29jIFsgKFwiRVBST1RPVFlQRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVQUk9UT1RZUEVcbiAgfCBgQXNzb2MgWyAoXCJFTk9QUk9UT09QVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1BST1RPT1BUXG4gIHwgYEFzc29jIFsgKFwiRVBST1RPTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXguRVBST1RPTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRVNPQ0tUTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXguRVNPQ0tUTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRU9QTk9UU1VQUFwiLCBgTnVsbCkgXSAtPiBVbml4LkVPUE5PVFNVUFBcbiAgfCBgQXNzb2MgWyAoXCJFUEZOT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peC5FUEZOT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFQUZOT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peC5FQUZOT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFQUREUklOVVNFXCIsIGBOdWxsKSBdIC0+IFVuaXguRUFERFJJTlVTRVxuICB8IGBBc3NvYyBbIChcIkVBRERSTk9UQVZBSUxcIiwgYE51bGwpIF0gLT4gVW5peC5FQUREUk5PVEFWQUlMXG4gIHwgYEFzc29jIFsgKFwiRU5FVERPV05cIiwgYE51bGwpIF0gLT4gVW5peC5FTkVURE9XTlxuICB8IGBBc3NvYyBbIChcIkVORVRVTlJFQUNIXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5FVFVOUkVBQ0hcbiAgfCBgQXNzb2MgWyAoXCJFTkVUUkVTRVRcIiwgYE51bGwpIF0gLT4gVW5peC5FTkVUUkVTRVRcbiAgfCBgQXNzb2MgWyAoXCJFQ09OTkFCT1JURURcIiwgYE51bGwpIF0gLT4gVW5peC5FQ09OTkFCT1JURURcbiAgfCBgQXNzb2MgWyAoXCJFQ09OTlJFU0VUXCIsIGBOdWxsKSBdIC0+IFVuaXguRUNPTk5SRVNFVFxuICB8IGBBc3NvYyBbIChcIkVOT0JVRlNcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9CVUZTXG4gIHwgYEFzc29jIFsgKFwiRUlTQ09OTlwiLCBgTnVsbCkgXSAtPiBVbml4LkVJU0NPTk5cbiAgfCBgQXNzb2MgWyAoXCJFTk9UQ09OTlwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1RDT05OXG4gIHwgYEFzc29jIFsgKFwiRVNIVVRET1dOXCIsIGBOdWxsKSBdIC0+IFVuaXguRVNIVVRET1dOXG4gIHwgYEFzc29jIFsgKFwiRVRPT01BTllSRUZTXCIsIGBOdWxsKSBdIC0+IFVuaXguRVRPT01BTllSRUZTXG4gIHwgYEFzc29jIFsgKFwiRVRJTUVET1VUXCIsIGBOdWxsKSBdIC0+IFVuaXguRVRJTUVET1VUXG4gIHwgYEFzc29jIFsgKFwiRUNPTk5SRUZVU0VEXCIsIGBOdWxsKSBdIC0+IFVuaXguRUNPTk5SRUZVU0VEXG4gIHwgYEFzc29jIFsgKFwiRUhPU1RET1dOXCIsIGBOdWxsKSBdIC0+IFVuaXguRUhPU1RET1dOXG4gIHwgYEFzc29jIFsgKFwiRUhPU1RVTlJFQUNIXCIsIGBOdWxsKSBdIC0+IFVuaXguRUhPU1RVTlJFQUNIXG4gIHwgYEFzc29jIFsgKFwiRUxPT1BcIiwgYE51bGwpIF0gLT4gVW5peC5FTE9PUFxuICB8IGBBc3NvYyBbIChcIkVPVkVSRkxPV1wiLCBgTnVsbCkgXSAtPiBVbml4LkVPVkVSRkxPV1xuICB8IGBBc3NvYyBbIChcIkVVTktOT1dORVJSXCIsIGludCkgXSAtPiBVbml4LkVVTktOT1dORVJSICh0b19pbnQgaW50KVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGJ1aWxkX21zZyBcInVuaXggZXJyb3JcIiwgeCkpXG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgWW9qc29uLkJhc2ljLndyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnYikgc3RvcCA9IFN0b3Agb2YgJ2IgfCBTdWNjZXNzIG9mICdhXG5cbmxldCBzdWNjZXNzIGEgPSBTdWNjZXNzIGFcbmxldCBzdG9wIGEgPSBTdG9wIGFcblxubGV0IHN1Y2Nlc3Nfb3Jfc3RvcCBmIGcgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFN1Y2Nlc3MgYSAtPiBmIGFcbiAgfCBTdG9wIGEgLT4gZyBhXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIHByaW50IDogRm9ybWF0LmZvcm1hdHRlciAtPiB0IC0+IHVuaXRcbmVuZFxuXG50eXBlICgncGFyYW1ldGVycywgJ2Vycm9yLCAnYSkgd2l0aF9sb2dfd3JhcCA9XG4gICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24gLT4gZXhuIC0+ICdlcnJvcikgLT5cbiAgJ3BhcmFtZXRlcnMgLT5cbiAgJ2Vycm9yIC0+XG4gICdhXG5cbm1vZHVsZSB0eXBlIFNldCA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuICB2YWwgc2luZ2xldG9uIDogZWx0IC0+IHRcbiAgdmFsIGlzX3NpbmdsZXRvbiA6IHQgLT4gYm9vbFxuICB2YWwgYWRkIDogZWx0IC0+IHQgLT4gdFxuXG4gIHZhbCBhZGRfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgZWx0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCByZW1vdmUgOiBlbHQgLT4gdCAtPiB0XG5cbiAgdmFsIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiB0IC0+ICdlcnJvciAqIGJvb2wgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiB0IC0+ICdlcnJvciAqIGJvb2wgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHJlbW92ZV93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHNwbGl0IDogZWx0IC0+IHQgLT4gdCAqIGJvb2wgKiB0XG4gIHZhbCB1bmlvbiA6IHQgLT4gdCAtPiB0XG4gIHZhbCBkaXNqb2ludF91bmlvbiA6IHQgLT4gdCAtPiB0IG9wdGlvblxuICB2YWwgaW50ZXIgOiB0IC0+IHQgLT4gdFxuXG4gIHZhbCBtaW51cyA6IHQgLT4gdCAtPiB0XG4gICgqKiBbbWludXMgYSBiXSBjb250YWlucyBlbGVtZW50cyBvZiBbYV0gdGhhdCBhcmUgbm90IGluIFtiXSAqKVxuXG4gIHZhbCBkaWZmIDogdCAtPiB0IC0+IHRcbiAgKCoqIFtkaWZmIGEgYl0gPSBbbWludXMgKHVuaW9uIGEgYikgKGludGVyIGEgYildICopXG5cbiAgdmFsIG1pbnVzX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHVuaW9uX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGRpc2pvaW50X3VuaW9uX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGludGVyX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGRpZmZfd2l0aF9sb2dzIDogKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG4gICgqIHZhbCBzcGxpdF93aXRoX2xvZ3M6XG4gICAgICAgICgncGFyYW1ldGVycywnZXJyb3IsZWx0IC0+IHQgLT4gJ2Vycm9yICogKCB0ICogYm9vbCAqIHQpKSB3aXRoX2xvZ193cmFwICopXG5cbiAgdmFsIHNpemUgOiB0IC0+IGludFxuICB2YWwgbWVtIDogZWx0IC0+IHQgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgdmFsIGZpbHRlciA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0XG5cbiAgdmFsIGZpbHRlcl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBmb3JfYWxsIDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgdmFsIHBhcnRpdGlvbiA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0ICogdFxuXG4gIHZhbCBwYXJ0aXRpb25fd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgKGVsdCAtPiBib29sKSAtPiB0IC0+ICdlcnJvciAqIHQgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBzdWJzZXQgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgaXRlciA6IChlbHQgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgZm9sZF9pbnYgOiAoZWx0IC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gIHZhbCBlbGVtZW50cyA6IHQgLT4gZWx0IGxpc3RcbiAgdmFsIHByaW50IDogRm9ybWF0LmZvcm1hdHRlciAtPiB0IC0+IHVuaXRcbiAgdmFsIGNob29zZSA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgcmFuZG9tIDogUmFuZG9tLlN0YXRlLnQgLT4gdCAtPiBlbHQgb3B0aW9uXG4gIHZhbCBtaW5fZWx0IDogdCAtPiBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0IDogdCAtPiBlbHQgb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgTWFwID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgc2V0XG4gIHR5cGUgKydhIHRcblxuICB2YWwgZW1wdHkgOiAnYSB0XG4gIHZhbCBpc19lbXB0eSA6ICdhIHQgLT4gYm9vbFxuICB2YWwgc2l6ZSA6ICdhIHQgLT4gaW50XG4gIHZhbCByb290IDogJ2EgdCAtPiAoZWx0ICogJ2EpIG9wdGlvblxuICB2YWwgbWF4X2tleSA6ICdhIHQgLT4gZWx0IG9wdGlvblxuICB2YWwgYWRkIDogZWx0IC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgcmVtb3ZlIDogZWx0IC0+ICdhIHQgLT4gJ2EgdFxuXG4gIHZhbCBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICBlbHQgLT4gJ2EgLT4gJ2EgdCAtPiAnZXJyb3IgKiBib29sICogJ2EgdCApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2UgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiBib29sICogJ2EgdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBwb3AgOiBlbHQgLT4gJ2EgdCAtPiAnYSBvcHRpb24gKiAnYSB0XG4gIHZhbCBtZXJnZSA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiAoZWx0ICogJ2EpIG9wdGlvblxuICB2YWwgZmluZF9vcHRpb24gOiBlbHQgLT4gJ2EgdCAtPiAnYSBvcHRpb25cbiAgdmFsIGZpbmRfZGVmYXVsdCA6ICdhIC0+IGVsdCAtPiAnYSB0IC0+ICdhXG5cbiAgdmFsIGZpbmRfb3B0aW9uX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIG9wdGlvbikgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBmaW5kX2RlZmF1bHRfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EgLT4gZWx0IC0+ICdhIHQgLT4gJ2Vycm9yICogJ2EpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgbWVtIDogZWx0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgZGlmZiA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0ICogJ2EgdFxuICB2YWwgdW5pb24gOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgdXBkYXRlIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGRpZmZfcHJlZCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdCAqICdhIHRcblxuICB2YWwgYWRkX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiAnYSAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgcmVtb3ZlX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgam9pbl93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAnYSB0IC0+IGVsdCAtPiAnYSAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgc3BsaXRfd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgZWx0IC0+ICdhIHQgLT4gJ2Vycm9yICogKCdhIHQgKiAnYSBvcHRpb24gKiAnYSB0KSApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCB1cGRhdGVfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EgdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgbWFwMl93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+ICdhIC0+ICdlcnJvciAqICdjKSAtPlxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiAnYiAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gJ2EgLT4gJ2IgLT4gJ2Vycm9yICogJ2MpIC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiB0IC0+XG4gICAgICAnZXJyb3IgKiAnYyB0IClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIG1hcDJ6X3dpdGhfbG9ncyA6XG4gICAgKCAncGFyYW1ldGVycyxcbiAgICAgICdlcnJvcixcbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gJ2EgLT4gJ2EgLT4gJ2Vycm9yICogJ2EpIC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnZXJyb3IgKiAnYSB0IClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGZvbGQyel93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IGVsdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICdhIHQgLT5cbiAgICAgICdiIHQgLT5cbiAgICAgICdjIC0+XG4gICAgICAnZXJyb3IgKiAnYyApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBmb2xkMl93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IGVsdCAtPiAnYSAtPiAnYyAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gZWx0IC0+ICdiIC0+ICdjIC0+ICdlcnJvciAqICdjKSAtPlxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiBlbHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2Vycm9yICogJ2MpIC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiB0IC0+XG4gICAgICAnYyAtPlxuICAgICAgJ2Vycm9yICogJ2MgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyA6XG4gICAgKCAncGFyYW1ldGVycyxcbiAgICAgICdlcnJvcixcbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gZWx0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdlcnJvciAqICdjKSAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgdCAtPlxuICAgICAgJ2MgLT5cbiAgICAgICdlcnJvciAqICdjIClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGl0ZXIyX3NwYXJzZV93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IGVsdCAtPiAnYSAtPiAnYiAtPiAnZXJyb3IpIC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiB0IC0+XG4gICAgICAnZXJyb3IgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZGlmZl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCAnYSB0IC0+ICdhIHQgLT4gJ2Vycm9yICogJ2EgdCAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZGlmZl9wcmVkX3dpdGhfbG9ncyA6XG4gICAgKCAncGFyYW1ldGVycyxcbiAgICAgICdlcnJvcixcbiAgICAgICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2Vycm9yICogJ2EgdCAqICdhIHQgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgbWVyZ2Vfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EgdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgdW5pb25fd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EgdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZm9sZF9yZXN0cmljdGlvbl93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoZWx0IC0+ICdhIC0+ICdlcnJvciAqICdiIC0+ICdlcnJvciAqICdiKSAtPlxuICAgICAgc2V0IC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiAtPlxuICAgICAgJ2Vycm9yICogJ2IgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zX3dpdGhfbG9ncyA6XG4gICAgKCAncGFyYW1ldGVycyxcbiAgICAgICdlcnJvcixcbiAgICAgIChlbHQgLT4gJ2EgLT4gJ2Vycm9yICogJ2IgLT4gJ2Vycm9yICogJ2IpIC0+XG4gICAgICAoZWx0IC0+ICdlcnJvciAqICdiIC0+ICdlcnJvciAqICdiKSAtPlxuICAgICAgc2V0IC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiAtPlxuICAgICAgJ2Vycm9yICogJ2IgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgaXRlciA6IChlbHQgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGVsdCAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuXG4gIHZhbCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIDpcbiAgICAoZWx0IC0+ICdhIC0+ICdiIC0+ICgnYiwgJ2MpIFN0b3Auc3RvcCkgLT4gJ2EgdCAtPiAnYiAtPiAoJ2IsICdjKSBTdG9wLnN0b3BcblxuICB2YWwgbW9uYWRpY19mb2xkMiA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgKiAnYykgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+IGVsdCAtPiAnYSAtPiAnYyAtPiAnbWV0aG9kX2hhbmRsZXIgKiAnYykgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+IGVsdCAtPiAnYiAtPiAnYyAtPiAnbWV0aG9kX2hhbmRsZXIgKiAnYykgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgICdjIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogJ2NcblxuICB2YWwgbW9uYWRpY19mb2xkMl9zcGFyc2UgOlxuICAgICdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnYyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAqICdjXG5cbiAgdmFsIG1vbmFkaWNfaXRlcjJfc3BhcnNlIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgICgncGFyYW1ldGVycyAtPiAnbWV0aG9kX2hhbmRsZXIgLT4gZWx0IC0+ICdhIC0+ICdiIC0+ICdtZXRob2RfaGFuZGxlcikgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgICdtZXRob2RfaGFuZGxlclxuXG4gIHZhbCBtb25hZGljX2ZvbGRfcmVzdHJpY3Rpb24gOlxuICAgICdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+ICdtZXRob2RfaGFuZGxlciAtPiBlbHQgLT4gJ2EgLT4gJ2IgLT4gJ21ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgc2V0IC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogJ2JcblxuICB2YWwgbWFwaSA6IChlbHQgLT4gJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICB2YWwgbWFwIDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgdmFsIG1hcDIgOiAoJ2EgLT4gJ2EgLT4gJ2EpIC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBmb3JfYWxsIDogKGVsdCAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGZpbHRlcl9vbmUgOiAoZWx0IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gKGVsdCAqICdhKSBvcHRpb25cbiAgdmFsIGNvbXBhcmUgOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgYmluZGluZ3MgOiAnYSB0IC0+IChlbHQgKiAnYSkgbGlzdFxuXG4gIHZhbCBwcmludCA6XG4gICAgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdCkgLT4gRm9ybWF0LmZvcm1hdHRlciAtPiAnYSB0IC0+IHVuaXRcblxuICB2YWwgb2ZfanNvbiA6XG4gICAgP2xhYl9rZXk6c3RyaW5nIC0+XG4gICAgP2xhYl92YWx1ZTpzdHJpbmcgLT5cbiAgICA/ZXJyb3JfbXNnOnN0cmluZyAtPlxuICAgIChZb2pzb24uQmFzaWMudCAtPiBlbHQpIC0+XG4gICAgKFlvanNvbi5CYXNpYy50IC0+ICd2YWx1ZSkgLT5cbiAgICBZb2pzb24uQmFzaWMudCAtPlxuICAgICd2YWx1ZSB0XG5cbiAgdmFsIHRvX2pzb24gOlxuICAgID9sYWJfa2V5OnN0cmluZyAtPlxuICAgID9sYWJfdmFsdWU6c3RyaW5nIC0+XG4gICAgKGVsdCAtPiBZb2pzb24uQmFzaWMudCkgLT5cbiAgICAoJ3ZhbHVlIC0+IFlvanNvbi5CYXNpYy50KSAtPlxuICAgICd2YWx1ZSB0IC0+XG4gICAgWW9qc29uLkJhc2ljLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZWx0XG5cbiAgbW9kdWxlIFNldCA6IFNldCB3aXRoIHR5cGUgZWx0ID0gZWx0XG4gIG1vZHVsZSBNYXAgOiBNYXAgd2l0aCB0eXBlIGVsdCA9IGVsdCBhbmQgdHlwZSBzZXQgPSBTZXQudFxuZW5kXG5cbmV4Y2VwdGlvbiBEZWFkQ29kZUlzTm90RGVhZCBvZiBzdHJpbmdcblxubW9kdWxlIE1ha2UgKE9yZCA6IE9yZGVyZWRUeXBlKSA6IFMgd2l0aCB0eXBlIGVsdCA9IE9yZC50ID0gc3RydWN0XG4gIHR5cGUgZWx0ID0gT3JkLnRcblxuICBtb2R1bGUgU2V0ID0gc3RydWN0XG4gICAgdHlwZSBlbHQgPSBPcmQudFxuXG4gICAgbW9kdWxlIFByaXZhdGUgOiBzaWdcbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgRW1wdHkgfCBOb2RlIG9mIHQgKiBlbHQgKiB0ICogaW50ICogaW50XG5cbiAgICAgIHZhbCBlbXB0eSA6IHRcbiAgICAgIHZhbCBoZWlnaHQgOiB0IC0+IGludFxuICAgICAgdmFsIHNpemUgOiB0IC0+IGludFxuICAgICAgdmFsIG5vZGUgOiB0IC0+IGVsdCAtPiB0IC0+IHRcbiAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEVtcHR5IHwgTm9kZSBvZiB0ICogZWx0ICogdCAqIGludCAqIGludFxuXG4gICAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuXG4gICAgICBsZXQgc2l6ZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcblxuICAgICAgbGV0IG5vZGUgbGVmdCB2YWx1ZSByaWdodCA9XG4gICAgICAgIGxldCBobCA9IGhlaWdodCBsZWZ0IGluXG4gICAgICAgIGxldCBociA9IGhlaWdodCByaWdodCBpblxuICAgICAgICBOb2RlXG4gICAgICAgICAgKCBsZWZ0LFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgIChpZiBobCA+IGhyIHRoZW5cbiAgICAgICAgICAgICAgIGhsXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgaHIpXG4gICAgICAgICAgICArIDEsXG4gICAgICAgICAgICBzaXplIGxlZnQgKyBzaXplIHJpZ2h0ICsgMSApXG4gICAgZW5kXG5cbiAgICB0eXBlIHQgPSBQcml2YXRlLnRcblxuICAgIGxldCBlbXB0eSA9IFByaXZhdGUuZW1wdHlcbiAgICBsZXQgaGVpZ2h0ID0gUHJpdmF0ZS5oZWlnaHRcbiAgICBsZXQgc2l6ZSA9IFByaXZhdGUuc2l6ZVxuICAgIGxldCBub2RlID0gUHJpdmF0ZS5ub2RlXG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHRydWVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8gLT4gZmFsc2VcblxuICAgIGxldCBzaW5nbGV0b24gdmFsdWUgPSBub2RlIGVtcHR5IHZhbHVlIGVtcHR5XG5cbiAgICBsZXQgaXNfc2luZ2xldG9uIHNldCA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGZhbHNlXG4gICAgICB8IFByaXZhdGUuTm9kZSAoc2V0MSwgXywgc2V0MiwgXywgXykgLT4gaXNfZW1wdHkgc2V0MSAmJiBpc19lbXB0eSBzZXQyXG5cbiAgICBsZXQgYmFsYW5jZSBsZWZ0IHZhbHVlIHJpZ2h0ID1cbiAgICAgIGxldCBoZWlnaHRfbGVmdCA9IGhlaWdodCBsZWZ0IGluXG4gICAgICBsZXQgaGVpZ2h0X3JpZ2h0ID0gaGVpZ2h0IHJpZ2h0IGluXG4gICAgICBpZiBoZWlnaHRfbGVmdCA+IGhlaWdodF9yaWdodCArIDIgdGhlbiAoXG4gICAgICAgIG1hdGNoIGxlZnQgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgMjIyXCIpXG4gICAgICAgICgqIGhlaWdodF9sZWZ0ID4gaGVpZ2h0X3JpZ2h0ICsgMiA+PSAyICopXG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0bGVmdCwgbGVmdHZhbHVlLCBsZWZ0cmlnaHQsIF8sIF8pIC0+XG4gICAgICAgICAgaWYgaGVpZ2h0IGxlZnRsZWZ0ID49IGhlaWdodCBsZWZ0cmlnaHQgdGhlblxuICAgICAgICAgICAgbm9kZSBsZWZ0bGVmdCBsZWZ0dmFsdWUgKG5vZGUgbGVmdHJpZ2h0IHZhbHVlIHJpZ2h0KVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggbGVmdHJpZ2h0IHdpdGhcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiByYWlzZSAoRGVhZENvZGVJc05vdERlYWQgXCJTZXRNYXAgbGluZSAyMjlcIilcbiAgICAgICAgICAgICgqIDAgPD0gaGVpZ2h0IGxlZnRsZWZ0IDwgaGVpZ2h0IGxlZnRyaWdodCAqKVxuICAgICAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnRyaWdodGxlZnQsIGxlZnRyaWdodHZhbHVlLCBsZWZ0cmlnaHRyaWdodCwgXywgXylcbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgICAgIChub2RlIGxlZnRsZWZ0IGxlZnR2YWx1ZSBsZWZ0cmlnaHRsZWZ0KVxuICAgICAgICAgICAgICAgIGxlZnRyaWdodHZhbHVlXG4gICAgICAgICAgICAgICAgKG5vZGUgbGVmdHJpZ2h0cmlnaHQgdmFsdWUgcmlnaHQpXG4gICAgICAgICAgKVxuICAgICAgKSBlbHNlIGlmIGhlaWdodF9yaWdodCA+IGhlaWdodF9sZWZ0ICsgMiB0aGVuIChcbiAgICAgICAgbWF0Y2ggcmlnaHQgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgMjM4XCIpXG4gICAgICAgICgqIGhlaWdodF9yaWdodCA+IGhlaWdodF9sZWZ0ICsgMiA+PSAyICopXG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChyaWdodGxlZnQsIHJpZ2h0dmFsdWUsIHJpZ2h0cmlnaHQsIF8sIF8pIC0+XG4gICAgICAgICAgaWYgaGVpZ2h0IHJpZ2h0cmlnaHQgPj0gaGVpZ2h0IHJpZ2h0bGVmdCB0aGVuXG4gICAgICAgICAgICBub2RlIChub2RlIGxlZnQgdmFsdWUgcmlnaHRsZWZ0KSByaWdodHZhbHVlIHJpZ2h0cmlnaHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIHJpZ2h0bGVmdCB3aXRoXG4gICAgICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgMjQ1XCIpXG4gICAgICAgICAgICAoKiAwIDw9IGhlaWdodCByaWdodHJpZ2h0IDwgaGVpZ2h0IHJpZ2h0bGVmdCAqKVxuICAgICAgICAgICAgfCBQcml2YXRlLk5vZGUgKHJpZ2h0bGVmdGxlZnQsIHJpZ2h0bGVmdHZhbHVlLCByaWdodGxlZnRyaWdodCwgXywgXylcbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgICAgIChub2RlIGxlZnQgdmFsdWUgcmlnaHRsZWZ0bGVmdClcbiAgICAgICAgICAgICAgICByaWdodGxlZnR2YWx1ZVxuICAgICAgICAgICAgICAgIChub2RlIHJpZ2h0bGVmdHJpZ2h0IHJpZ2h0dmFsdWUgcmlnaHRyaWdodClcbiAgICAgICAgICApXG4gICAgICApIGVsc2VcbiAgICAgICAgbm9kZSBsZWZ0IHZhbHVlIHJpZ2h0XG5cbiAgICBsZXQgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQgdmFsdWUgcmlnaHQgPVxuICAgICAgdHJ5IGVycm9yLCBiYWxhbmNlIGxlZnQgdmFsdWUgcmlnaHRcbiAgICAgIHdpdGggRGVhZENvZGVJc05vdERlYWQgbG9jIC0+XG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lIChsb2MgXiBcIiBTZXQgaW52YXJpYW50IGlzIGJyb2tlbiwga2VlcCBvbiB3aXRoIHVuYmFsYW5jZWQgc2V0XCIpKVxuICAgICAgICAgICAgKEZhaWx1cmUgXCJTZXRfYW5kX01hcC5TRVQuYmFsYW5jZVwiKVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbm9kZSBsZWZ0IHZhbHVlIHJpZ2h0XG5cbiAgICAoKiogQmV3YXJlIHNvbWUgY29kZSByZWxpZXMgb24gdGhlIGludmFyaWFudCBbYWRkIHggcyA9PSBzXSBpZmYgW21lbSB4IHNdICopXG4gICAgbGV0IHJlYyBhZGQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCB2LCByLCBfLCBfKSBhcyB0IC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICB0XG4gICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IG8gPSBhZGQgeCBsIGluXG4gICAgICAgICAgaWYgbyA9PSBsIHRoZW5cbiAgICAgICAgICAgIHRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBiYWxhbmNlIG8gdiByXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IG8gPSBhZGQgeCByIGluXG4gICAgICAgICAgaWYgbyA9PSByIHRoZW5cbiAgICAgICAgICAgIHRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBiYWxhbmNlIGwgdiBvXG4gICAgICAgIClcblxuICAgIGxldCByZWMgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBuZXdfdmFsIHNldCA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCB0cnVlLCBzaW5nbGV0b24gbmV3X3ZhbFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlX3NldCwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgbmV3X3ZhbCB2YWx1ZV9zZXQgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgIGVycm9yLCBmYWxzZSwgc2V0XG4gICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBib29sLCBsZWZ0JyA9XG4gICAgICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWwgbGVmdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBzZXQgPVxuICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlX3NldCByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGJvb2wsIHNldFxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgcmlnaHQnID1cbiAgICAgICAgICAgIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbmV3X3ZhbCByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBzZXQgPVxuICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQgdmFsdWVfc2V0IHJpZ2h0J1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGJvb2wsIHNldFxuICAgICAgICApXG5cbiAgICBsZXQgYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbmV3X3ZhbHVlIHNldCA9XG4gICAgICBsZXQgZXJyb3IsIGJvb2wsIHNldCA9XG4gICAgICAgIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbmV3X3ZhbHVlIHNldFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciA9XG4gICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgIGVycm9yXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgKFNvbWUgKFwiU2V0TWFwIGxpbmUgMzAwXCIgXiBcIiBhbiBhbHJlYWR5IGVsdCBoYXMgYmVlbiBhZGRlZCB0byBhIHNldFwiKSlcbiAgICAgICAgICAgIChGYWlsdXJlIFwiU2V0X2FuZF9NYXAuU0VULmFkZFwiKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBzZXRcblxuICAgIGxldCBhZGRfZXZlbl9pZl9pdF9leGlzdHMgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWx1ZSBzZXQgPVxuICAgICAgbGV0IGVycm9yLCBfLCBzZXQgPVxuICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWx1ZSBzZXRcbiAgICAgIGluXG4gICAgICBlcnJvciwgc2V0XG5cbiAgICBsZXQgcmVjIGpvaW4gbGVmdCB2YWx1ZSByaWdodCA9XG4gICAgICBtYXRjaCBsZWZ0LCByaWdodCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gYWRkIHZhbHVlIHJpZ2h0XG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gYWRkIHZhbHVlIGxlZnRcbiAgICAgIHwgKCBQcml2YXRlLk5vZGUgKGxlZnRsZWZ0LCBsZWZ0dmFsdWUsIGxlZnRyaWdodCwgbGVmdGhlaWdodCwgXyksXG4gICAgICAgICAgUHJpdmF0ZS5Ob2RlIChyaWdodGxlZnQsIHJpZ2h0dmFsdWUsIHJpZ2h0cmlnaHQsIHJpZ2h0aGVpZ2h0LCBfKSApIC0+XG4gICAgICAgIGlmIGxlZnRoZWlnaHQgPiByaWdodGhlaWdodCArIDIgdGhlbiAoXG4gICAgICAgICAgbGV0IHJpZ2h0JyA9IGpvaW4gbGVmdHJpZ2h0IHZhbHVlIHJpZ2h0IGluXG4gICAgICAgICAgYmFsYW5jZSBsZWZ0bGVmdCBsZWZ0dmFsdWUgcmlnaHQnXG4gICAgICAgICkgZWxzZSBpZiByaWdodGhlaWdodCA+IGxlZnRoZWlnaHQgKyAyIHRoZW4gKFxuICAgICAgICAgIGxldCBsZWZ0JyA9IGpvaW4gbGVmdCB2YWx1ZSByaWdodGxlZnQgaW5cbiAgICAgICAgICBiYWxhbmNlIGxlZnQnIHJpZ2h0dmFsdWUgcmlnaHRyaWdodFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBub2RlIGxlZnQgdmFsdWUgcmlnaHRcblxuICAgIGxldCByZWMgc2FmZV9leHRyYWN0X21pbl9lbHQgbGVmdCB2YWx1ZSByaWdodCA9XG4gICAgICBtYXRjaCBsZWZ0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiB2YWx1ZSwgcmlnaHRcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0bGVmdCwgbGVmdHZhbHVlLCBsZWZ0cmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBtaW4sIGxlZnQnID0gc2FmZV9leHRyYWN0X21pbl9lbHQgbGVmdGxlZnQgbGVmdHZhbHVlIGxlZnRyaWdodCBpblxuICAgICAgICBtaW4sIGJhbGFuY2UgbGVmdCcgdmFsdWUgcmlnaHRcblxuICAgIGxldCByZWMgbWluX2VsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldCA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+XG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJtaW5fZWx0X3dpdGhfbG9ncywgbGluZSAzMDNcIilcbiAgICAgICAgICAgIE5vdF9mb3VuZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIHYsIF8sIF8sIF8pIC0+IGVycm9yLCBTb21lIHZcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBfLCBfLCBfLCBfKSAtPlxuICAgICAgICBtaW5fZWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdFxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2VsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldCA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+XG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lIFwicmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzLCBsaW5lIDMxMVwiKSBOb3RfZm91bmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAoUHJpdmF0ZS5FbXB0eSwgXywgcmlnaHQsIF8sIF8pIC0+IGVycm9yLCByaWdodFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgcmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0XG4gICAgICAgIGluXG4gICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyB2YWx1ZSByaWdodFxuXG4gICAgbGV0IG1lcmdlIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgXywgUHJpdmF0ZS5Ob2RlIChsZWZ0MiwgdmFsdWUyLCByaWdodDIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBtaW4yLCBzZXQyJyA9IHNhZmVfZXh0cmFjdF9taW5fZWx0IGxlZnQyIHZhbHVlMiByaWdodDIgaW5cbiAgICAgICAgYmFsYW5jZSBzZXQxIG1pbjIgc2V0MidcblxuICAgIGxldCBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBzZXQxXG4gICAgICB8IFByaXZhdGUuTm9kZSBfLCBQcml2YXRlLk5vZGUgXyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxlZnQyID1cbiAgICAgICAgICByZW1vdmVfbWluX2VsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBlbHRfb3B0ID0gbWluX2VsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDIgaW5cbiAgICAgICAgKG1hdGNoIGVsdF9vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJtZXJnZV93aXRoX2xvZ3MsbGluZSAzMzlcIilcbiAgICAgICAgICAgICAgTm90X2ZvdW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgc2V0MVxuICAgICAgICB8IFNvbWUgZWx0IC0+IGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIGVsdCBsZWZ0MilcblxuICAgIGxldCByZWMgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQgdmFsdWUgcmlnaHQgPVxuICAgICAgbWF0Y2ggbGVmdCwgcmlnaHQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGFkZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIHJpZ2h0XG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgbGVmdFxuICAgICAgfCAoIFByaXZhdGUuTm9kZSAobGVmdGxlZnQsIGxlZnR2YWx1ZSwgbGVmdHJpZ2h0LCBsZWZ0aGVpZ2h0LCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKHJpZ2h0bGVmdCwgcmlnaHR2YWx1ZSwgcmlnaHRyaWdodCwgcmlnaHRoZWlnaHQsIF8pICkgLT5cbiAgICAgICAgaWYgbGVmdGhlaWdodCA+IHJpZ2h0aGVpZ2h0ICsgMiB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdHJpZ2h0IHZhbHVlIHJpZ2h0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBiYWxhbmNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdGxlZnQgbGVmdHZhbHVlIHJpZ2h0J1xuICAgICAgICApIGVsc2UgaWYgcmlnaHRoZWlnaHQgPiBsZWZ0aGVpZ2h0ICsgMiB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxlZnQnID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHZhbHVlIHJpZ2h0bGVmdFxuICAgICAgICAgIGluXG4gICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHJpZ2h0dmFsdWUgcmlnaHRyaWdodFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBlcnJvciwgbm9kZSBsZWZ0IHZhbHVlIHJpZ2h0XG5cbiAgICBsZXQgY29uY2F0IHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgXywgUHJpdmF0ZS5Ob2RlIChsZWZ0MiwgdmFsdWUyLCByaWdodDIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBtaW4yLCBzZXQyJyA9IHNhZmVfZXh0cmFjdF9taW5fZWx0IGxlZnQyIHZhbHVlMiByaWdodDIgaW5cbiAgICAgICAgam9pbiBzZXQxIG1pbjIgc2V0MidcblxuICAgIGxldCBjb25jYXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gZXJyb3IsIHNldDJcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgXywgUHJpdmF0ZS5Ob2RlIF8gLT5cbiAgICAgICAgbGV0IGVycm9yLCBsZWZ0MiA9XG4gICAgICAgICAgcmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgZWx0X29wdCA9IG1pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQyIGluXG4gICAgICAgIChtYXRjaCBlbHRfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwiY29uY2F0X3dpdGhfbG9ncyxsaW5lIDM5MFwiKVxuICAgICAgICAgICAgICBOb3RfZm91bmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBzZXQxXG4gICAgICAgIHwgU29tZSBlbHQgLT4gam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgZWx0IGxlZnQyKVxuXG4gICAgbGV0IHJlYyBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNwbGl0X3ZhbCBzZXQgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgKGVtcHR5LCBmYWxzZSwgZW1wdHkpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgc2V0X3ZhbCwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgc3BsaXRfdmFsIHNldF92YWwgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgIGVycm9yLCAobGVmdCwgdHJ1ZSwgcmlnaHQpXG4gICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdGxlZnQsIGJvb2wsIHJpZ2h0bGVmdCkgPVxuICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzcGxpdF92YWwgbGVmdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodHJpZ2h0ID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodGxlZnQgc2V0X3ZhbCByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIChsZWZ0bGVmdCwgYm9vbCwgcmlnaHRyaWdodClcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIChsZWZ0cmlnaHQsIGJvb2wsIHJpZ2h0cmlnaHQpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc3BsaXRfdmFsIHJpZ2h0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxlZnRsZWZ0ID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHNldF92YWwgbGVmdHJpZ2h0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgKGxlZnRsZWZ0LCBib29sLCByaWdodHJpZ2h0KVxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgYXMgc2V0IC0+IHNldFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlX3NldCwgcmlnaHQsIF8sIF8pIGFzIHNldCAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHZhbHVlIHZhbHVlX3NldCBpblxuICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgbWVyZ2UgbGVmdCByaWdodFxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBsZWZ0JyA9IHJlbW92ZSB2YWx1ZSBsZWZ0IGluXG4gICAgICAgICAgaWYgbGVmdCA9PSBsZWZ0JyB0aGVuXG4gICAgICAgICAgICBzZXRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBiYWxhbmNlIGxlZnQnIHZhbHVlX3NldCByaWdodFxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCByaWdodCcgPSByZW1vdmUgdmFsdWUgcmlnaHQgaW5cbiAgICAgICAgICBpZiByaWdodCA9PSByaWdodCcgdGhlblxuICAgICAgICAgICAgc2V0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmFsYW5jZSBsZWZ0IHZhbHVlX3NldCByaWdodCdcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2Ugd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlID1cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgYXMgc2V0IC0+IGVycm9yLCBmYWxzZSwgc2V0XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWVfc2V0LCByaWdodCwgXywgXykgYXMgc2V0IC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdmFsdWUgdmFsdWVfc2V0IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgc2V0ID0gbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHJpZ2h0IGluXG4gICAgICAgICAgZXJyb3IsIHRydWUsIHNldFxuICAgICAgICApIGVsc2UgaWYgYyA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBib29sLCBsZWZ0JyA9XG4gICAgICAgICAgICByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2Ugd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIGxlZnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGxlZnQgPT0gbGVmdCcgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIiAoU29tZSBcIlNldE1hcCBsaW5lIDQ1NFwiKVxuICAgICAgICAgICAgICAgICAgKGZhaWx3aXRoIFwiSW52YXJpYW50IGlzIGJyb2tlblwiKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgc2V0XG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgc2V0ID1cbiAgICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlX3NldCByaWdodFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBib29sLCBzZXRcbiAgICAgICAgICApXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBib29sLCByaWdodCcgPVxuICAgICAgICAgICAgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgcmlnaHQgPT0gcmlnaHQnIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJTZXRNYXAgbGluZSA0NjdcIilcbiAgICAgICAgICAgICAgICAgIE5vdF9mb3VuZFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgc2V0XG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgc2V0ID1cbiAgICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQgdmFsdWVfc2V0IHJpZ2h0J1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBib29sLCBzZXRcbiAgICAgICAgICApXG4gICAgICAgIClcblxuICAgIGxldCByZW1vdmVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBzZXQgPVxuICAgICAgbGV0IGVycm9yLCBib29sLCBzZXQgPVxuICAgICAgICByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2Ugd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIHNldFxuICAgICAgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBlcnJvciwgc2V0XG4gICAgICBlbHNlXG4gICAgICAgICggd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lXG4gICAgICAgICAgICAgICAoXCJTZXRNYXAgbGluZSA0ODFcIlxuICAgICAgICAgICAgICBeIFwiQXR0ZW1wdCB0byByZW1vdmUgYW4gZWx0IHRoYXQgZG9lcyBub3QgZXhpc3RcIikpXG4gICAgICAgICAgICBOb3RfZm91bmQsXG4gICAgICAgICAgc2V0IClcblxuICAgIGxldCByZWMgc3BsaXQgc3BsaXRfdmFsdWUgc2V0ID1cbiAgICAgIG1hdGNoIHNldCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHksIGZhbHNlLCBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHNldF92YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgc3BsaXRfdmFsdWUgc2V0X3ZhbHVlIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICBsZWZ0LCB0cnVlLCByaWdodFxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBsZWZ0bGVmdCwgYm9vbCwgcmlnaHRsZWZ0ID0gc3BsaXQgc3BsaXRfdmFsdWUgbGVmdCBpblxuICAgICAgICAgIGxldCByaWdodHJpZ2h0ID0gam9pbiByaWdodGxlZnQgc2V0X3ZhbHVlIHJpZ2h0IGluXG4gICAgICAgICAgbGVmdGxlZnQsIGJvb2wsIHJpZ2h0cmlnaHRcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgbGVmdHJpZ2h0LCBib29sLCByaWdodHJpZ2h0ID0gc3BsaXQgc3BsaXRfdmFsdWUgcmlnaHQgaW5cbiAgICAgICAgICBsZXQgbGVmdGxlZnQgPSBqb2luIGxlZnQgc2V0X3ZhbHVlIGxlZnRyaWdodCBpblxuICAgICAgICAgIGxlZnRsZWZ0LCBib29sLCByaWdodHJpZ2h0XG4gICAgICAgIClcblxuICAgIGxldCByZWMgdW5pb24gc2V0MSBzZXQyID1cbiAgICAgIG1hdGNoIHNldDEsIHNldDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IHNldDJcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBzZXQxXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIGhlaWdodDEsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBoZWlnaHQyLCBfKSApIC0+XG4gICAgICAgIGlmIGhlaWdodDEgPiBoZWlnaHQyIHRoZW5cbiAgICAgICAgICBpZiBoZWlnaHQyID0gMSB0aGVuXG4gICAgICAgICAgICBhZGQgdmFsdWUyIHNldDFcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBsZWZ0MiwgXywgcmlnaHQyID0gc3BsaXQgdmFsdWUxIHNldDIgaW5cbiAgICAgICAgICAgIGxldCBsZWZ0JyA9IHVuaW9uIGxlZnQxIGxlZnQyIGluXG4gICAgICAgICAgICBsZXQgcmlnaHQnID0gdW5pb24gcmlnaHQxIHJpZ2h0MiBpblxuICAgICAgICAgICAgam9pbiBsZWZ0JyB2YWx1ZTEgcmlnaHQnXG4gICAgICAgICAgKVxuICAgICAgICBlbHNlIGlmIGhlaWdodDEgPSAxIHRoZW5cbiAgICAgICAgICBhZGQgdmFsdWUxIHNldDJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGxlZnQxLCBfLCByaWdodDEgPSBzcGxpdCB2YWx1ZTIgc2V0MSBpblxuICAgICAgICAgIGxldCBsZWZ0JyA9IHVuaW9uIGxlZnQxIGxlZnQyIGluXG4gICAgICAgICAgbGV0IHJpZ2h0JyA9IHVuaW9uIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgICAgICBqb2luIGxlZnQnIHZhbHVlMiByaWdodCdcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyBkaXNqb2ludF91bmlvbiBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gU29tZSBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gU29tZSBzZXQxXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIGhlaWdodDEsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBoZWlnaHQyLCBfKSApIC0+XG4gICAgICAgIGlmIGhlaWdodDEgPiBoZWlnaHQyIHRoZW5cbiAgICAgICAgICBpZiBoZWlnaHQyID0gMSB0aGVuIChcbiAgICAgICAgICAgIGxldCBvdXQgPSBhZGQgdmFsdWUyIHNldDEgaW5cbiAgICAgICAgICAgIGlmIG91dCA9PSBzZXQxIHRoZW5cbiAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBTb21lIG91dFxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbGVmdDIsIF8sIHJpZ2h0MiA9IHNwbGl0IHZhbHVlMSBzZXQyIGluXG4gICAgICAgICAgICBtYXRjaCBkaXNqb2ludF91bmlvbiBsZWZ0MSBsZWZ0MiwgZGlzam9pbnRfdW5pb24gcmlnaHQxIHJpZ2h0MiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgbGVmdCcsIFNvbWUgcmlnaHQnIC0+IFNvbWUgKGpvaW4gbGVmdCcgdmFsdWUxIHJpZ2h0JylcbiAgICAgICAgICAgIHwgXywgXyAtPiBOb25lXG4gICAgICAgICAgKVxuICAgICAgICBlbHNlIGlmIGhlaWdodDEgPSAxIHRoZW4gKFxuICAgICAgICAgIGxldCBvdXQgPSBhZGQgdmFsdWUxIHNldDIgaW5cbiAgICAgICAgICBpZiBzZXQyID09IG91dCB0aGVuXG4gICAgICAgICAgICBOb25lXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgU29tZSBvdXRcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgbGVmdDEsIF8sIHJpZ2h0MSA9IHNwbGl0IHZhbHVlMiBzZXQxIGluXG4gICAgICAgICAgbWF0Y2ggZGlzam9pbnRfdW5pb24gbGVmdDEgbGVmdDIsIGRpc2pvaW50X3VuaW9uIHJpZ2h0MSByaWdodDIgd2l0aFxuICAgICAgICAgIHwgU29tZSBsZWZ0JywgU29tZSByaWdodCcgLT4gU29tZSAoam9pbiBsZWZ0JyB2YWx1ZTIgcmlnaHQnKVxuICAgICAgICAgIHwgXywgXyAtPiBOb25lXG4gICAgICAgIClcblxuICAgIGxldCByZWMgdW5pb25fZ2VuIGFkZF9nZW4gd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBzZXQxXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIGhlaWdodDEsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBoZWlnaHQyLCBfKSApIC0+XG4gICAgICAgIGlmIGhlaWdodDEgPiBoZWlnaHQyIHRoZW5cbiAgICAgICAgICBpZiBoZWlnaHQyID0gMSB0aGVuXG4gICAgICAgICAgICBhZGRfZ2VuIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTIgc2V0MVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIF8sIHJpZ2h0MikgPVxuICAgICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlMSBzZXQyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgICAgIHVuaW9uX2dlbiBhZGRfZ2VuIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MSBsZWZ0MlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgcmlnaHQnID1cbiAgICAgICAgICAgICAgdW5pb25fZ2VuIGFkZF9nZW4gd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUxIHJpZ2h0J1xuICAgICAgICAgIClcbiAgICAgICAgZWxzZSBpZiBoZWlnaHQxID0gMSB0aGVuXG4gICAgICAgICAgYWRkX2dlbiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUxIHNldDJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdDEsIF8sIHJpZ2h0MSkgPVxuICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTIgc2V0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgICB1bmlvbl9nZW4gYWRkX2dlbiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmlnaHQnID1cbiAgICAgICAgICAgIHVuaW9uX2dlbiBhZGRfZ2VuIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodDEgcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUyIHJpZ2h0J1xuICAgICAgICApXG5cbiAgICBsZXQgdW5pb25fd2l0aF9sb2dzIHcgcCBlIHMgcycgPSB1bmlvbl9nZW4gYWRkX2V2ZW5faWZfaXRfZXhpc3RzIHcgcCBlIHMgcydcbiAgICBsZXQgZGlzam9pbnRfdW5pb25fd2l0aF9sb2dzIHcgcCBlIHMgcycgPSB1bmlvbl9nZW4gYWRkX3dpdGhfbG9ncyB3IHAgZSBzIHMnXG5cbiAgICBsZXQgc3V0dXJlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIChsZWZ0MiwgYm9vbCwgcmlnaHQyKSBmID1cbiAgICAgIGxldCBsZWZ0JyA9IGYgbGVmdDEgbGVmdDIgaW5cbiAgICAgIGxldCByaWdodCcgPSBmIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBqb2luIGxlZnQnIHZhbHVlMSByaWdodCdcbiAgICAgIGVsc2VcbiAgICAgICAgY29uY2F0IGxlZnQnIHJpZ2h0J1xuXG4gICAgbGV0IHN1dHVyZV9ub3QgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSkgKGxlZnQyLCBib29sLCByaWdodDIpIGYgPVxuICAgICAgbGV0IGxlZnQnID0gZiBsZWZ0MSBsZWZ0MiBpblxuICAgICAgbGV0IHJpZ2h0JyA9IGYgcmlnaHQxIHJpZ2h0MiBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGNvbmNhdCBsZWZ0JyByaWdodCdcbiAgICAgIGVsc2VcbiAgICAgICAgam9pbiBsZWZ0JyB2YWx1ZTEgcmlnaHQnXG5cbiAgICBsZXQgcmVjIGludGVyIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCB0cmlwbGUyID0gc3BsaXQgdmFsdWUxIHNldDIgaW5cbiAgICAgICAgc3V0dXJlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIHRyaXBsZTIgaW50ZXJcblxuICAgIGxldCBzdXR1cmVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKVxuICAgICAgICAobGVmdDIsIGJvb2wsIHJpZ2h0MikgZiA9XG4gICAgICBsZXQgZXJyb3IsIGxlZnQnID0gZiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDIgaW5cbiAgICAgIGxldCBlcnJvciwgcmlnaHQnID0gZiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MiBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyB2YWx1ZTEgcmlnaHQnXG4gICAgICBlbHNlXG4gICAgICAgIGNvbmNhdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHJpZ2h0J1xuXG4gICAgbGV0IHN1dHVyZV9ub3Rfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKVxuICAgICAgICAobGVmdDIsIGJvb2wsIHJpZ2h0MikgZiA9XG4gICAgICBsZXQgZXJyb3IsIGxlZnQnID0gZiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDIgaW5cbiAgICAgIGxldCBlcnJvciwgcmlnaHQnID0gZiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MiBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGNvbmNhdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHJpZ2h0J1xuICAgICAgZWxzZVxuICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUxIHJpZ2h0J1xuXG4gICAgbGV0IHJlYyBpbnRlcl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgbWgnLCB0cmlwbGUyID0gc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTEgc2V0MiBpblxuICAgICAgICBzdXR1cmVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBtaCcgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSkgdHJpcGxlMlxuICAgICAgICAgIGludGVyX3dpdGhfbG9nc1xuXG4gICAgbGV0IHJlYyBkaWZmIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IHRyaXBsZTIgPSBzcGxpdCB2YWx1ZTEgc2V0MiBpblxuICAgICAgICBzdXR1cmVfbm90IChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIHRyaXBsZTIgZGlmZlxuXG4gICAgbGV0IHJlYyBkaWZmX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc2V0MSBzZXQyID1cbiAgICAgIG1hdGNoIHNldDEsIHNldDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGVycm9yLCBlbXB0eVxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBzZXQxXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgZXJyb3IsIHRyaXBsZTIgPVxuICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUxIHNldDJcbiAgICAgICAgaW5cbiAgICAgICAgc3V0dXJlX25vdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIChsZWZ0MSwgdmFsdWUxLCByaWdodDEpXG4gICAgICAgICAgdHJpcGxlMiBkaWZmX3dpdGhfbG9nc1xuXG4gICAgbGV0IHJlYyBtaW51cyBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gZW1wdHlcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBzZXQxXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgdHJpcGxlMiA9IHNwbGl0IHZhbHVlMSBzZXQyIGluXG4gICAgICAgIHN1dHVyZV9ub3QgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSkgdHJpcGxlMiBtaW51c1xuXG4gICAgbGV0IHJlYyBtaW51c193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgZW1wdHlcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IGVycm9yLCB0cmlwbGUyID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlMSBzZXQyXG4gICAgICAgIGluXG4gICAgICAgIHN1dHVyZV9ub3Rfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKVxuICAgICAgICAgIHRyaXBsZTIgbWludXNfd2l0aF9sb2dzXG5cbiAgICBsZXQgcmVjIG1lbSBzZWFyY2hlZF92YWx1ZSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBzZXRfdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHNlYXJjaGVkX3ZhbHVlIHNldF92YWx1ZSBpblxuICAgICAgICBjID09IDBcbiAgICAgICAgfHwgbWVtIHNlYXJjaGVkX3ZhbHVlXG4gICAgICAgICAgICAgKGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgICAgICBsZWZ0XG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByaWdodClcblxuICAgIGxldCBmaWx0ZXIgcCBzZXQgPVxuICAgICAgbGV0IHJlYyBmaWx0IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gYWNjdVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIGZpbHRcbiAgICAgICAgICAgIChmaWx0XG4gICAgICAgICAgICAgICAoaWYgcCB2YWx1ZSB0aGVuXG4gICAgICAgICAgICAgICAgICBhZGQgdmFsdWUgYWNjdVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGFjY3UpXG4gICAgICAgICAgICAgICBsZWZ0KVxuICAgICAgICAgICAgcmlnaHRcbiAgICAgIGluXG4gICAgICBmaWx0IGVtcHR5IHNldFxuXG4gICAgbGV0IGZpbHRlcl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHAgc2V0ID1cbiAgICAgIGxldCByZWMgZmlsdCBhY2N1IHNldCA9XG4gICAgICAgIG1hdGNoIHNldCB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBhY2N1XG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsaXN0ID0gYWNjdSBpblxuICAgICAgICAgIGZpbHRcbiAgICAgICAgICAgIChmaWx0XG4gICAgICAgICAgICAgICAoaWYgcCB2YWx1ZSB0aGVuXG4gICAgICAgICAgICAgICAgICBhZGRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBsaXN0XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgYWNjdSlcbiAgICAgICAgICAgICAgIGxlZnQpXG4gICAgICAgICAgICByaWdodFxuICAgICAgaW5cbiAgICAgIGZpbHQgKGVycm9yLCBlbXB0eSkgc2V0XG5cbiAgICBsZXQgcGFydGl0aW9uIHAgc2V0ID1cbiAgICAgIGxldCByZWMgcGFydCAoKHQsIGYpIGFzIGFjY3UpID0gZnVuY3Rpb25cbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgICBwYXJ0XG4gICAgICAgICAgICAocGFydFxuICAgICAgICAgICAgICAgKGlmIHAgdmFsdWUgdGhlblxuICAgICAgICAgICAgICAgICAgYWRkIHZhbHVlIHQsIGZcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICB0LCBhZGQgdmFsdWUgZilcbiAgICAgICAgICAgICAgIGxlZnQpXG4gICAgICAgICAgICByaWdodFxuICAgICAgaW5cbiAgICAgIHBhcnQgKGVtcHR5LCBlbXB0eSkgc2V0XG5cbiAgICBsZXQgcGFydGl0aW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcCBzZXQgPVxuICAgICAgbGV0IHJlYyBwYXJ0ICgocmgsIHQsIGYpIGFzIGFjY3UpIHNldCA9XG4gICAgICAgIG1hdGNoIHNldCB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBhY2N1XG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgICAgcGFydFxuICAgICAgICAgICAgKHBhcnRcbiAgICAgICAgICAgICAgIChpZiBwIHZhbHVlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGIgPSBhZGRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyByaCB2YWx1ZSB0IGluXG4gICAgICAgICAgICAgICAgICBhLCBiLCBmXG4gICAgICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgICAgIGxldCBhLCBjID0gYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgcmggdmFsdWUgZiBpblxuICAgICAgICAgICAgICAgICAgYSwgdCwgY1xuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICBsZWZ0KVxuICAgICAgICAgICAgcmlnaHRcbiAgICAgIGluXG4gICAgICBwYXJ0IChlcnJvciwgZW1wdHksIGVtcHR5KSBzZXRcblxuICAgIHR5cGUgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGVsdCAqIHQgKiBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gZW51bSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW51bVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgY29uc19lbnVtIChNb3JlICh2YWx1ZSwgcmlnaHQsIGVudW0pKSBsZWZ0XG5cbiAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgIG1hdGNoIGUxLCBlMiB3aXRoXG4gICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgIHwgRW5kLCBfIC0+IC0xXG4gICAgICB8IF8sIEVuZCAtPiAxXG4gICAgICB8IE1vcmUgKHYxLCByMSwgZTEpLCBNb3JlICh2MiwgcjIsIGUyKSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgIGlmIGMgPD4gMCB0aGVuXG4gICAgICAgICAgY1xuICAgICAgICBlbHNlXG4gICAgICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBlMSByMSkgKGNvbnNfZW51bSBlMiByMilcblxuICAgIGxldCBjb21wYXJlIHNldDEgc2V0MiA9XG4gICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIEVuZCBzZXQxKSAoY29uc19lbnVtIEVuZCBzZXQyKVxuXG4gICAgbGV0IGVxdWFsIHNldDEgc2V0MiA9IGNvbXBhcmUgc2V0MSBzZXQyID09IDBcblxuICAgIGxldCByZWMgc3Vic2V0IHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiB0cnVlXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgKCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksXG4gICAgICAgICAgUHJpdmF0ZS5Ob2RlIChsZWZ0MiwgdmFsdWUyLCByaWdodDIsIF8sIF8pICkgLT5cbiAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2YWx1ZTEgdmFsdWUyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICBzdWJzZXQgbGVmdDEgbGVmdDIgJiYgc3Vic2V0IHJpZ2h0MSByaWdodDJcbiAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgc3Vic2V0IChub2RlIGxlZnQxIHZhbHVlMSBlbXB0eSkgbGVmdDIgJiYgc3Vic2V0IHJpZ2h0MSBzZXQyXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzdWJzZXQgKG5vZGUgZW1wdHkgdmFsdWUxIHJpZ2h0MSkgcmlnaHQyICYmIHN1YnNldCBsZWZ0MSBzZXQyXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gKClcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCAoKSA9IGl0ZXIgZiBsZWZ0IGluXG4gICAgICAgIGxldCAoKSA9IGYgdmFsdWUgaW5cbiAgICAgICAgaXRlciBmIHJpZ2h0XG5cbiAgICBsZXQgcmVjIGZvbGQgZiBzZXQgYWNjdSA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGZvbGQgZiByaWdodCAoZiB2YWx1ZSAoZm9sZCBmIGxlZnQgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvbGRfaW52IGYgcyBhY2N1ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCB2LCByLCBfLCBfKSAtPiBmb2xkX2ludiBmIGwgKGYgdiAoZm9sZF9pbnYgZiByIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHRydWVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIHAgdmFsdWUgJiYgZm9yX2FsbCBwIGxlZnQgJiYgZm9yX2FsbCBwIHJpZ2h0XG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBmYWxzZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgcCB2YWx1ZSB8fCBleGlzdHMgcCBsZWZ0IHx8IGV4aXN0cyBwIHJpZ2h0XG5cbiAgICBsZXQgZWxlbWVudHMgc2V0ID1cbiAgICAgIGxldCByZWMgZWxlbWVudHNfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gYWNjdVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIGVsZW1lbnRzX2F1eCAodmFsdWUgOjogZWxlbWVudHNfYXV4IGFjY3UgcmlnaHQpIGxlZnRcbiAgICAgIGluXG4gICAgICBlbGVtZW50c19hdXggW10gc2V0XG5cbiAgICBsZXQgcmVjIGF1eF9wcmludCBmID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiAoKVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIGtleSwgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWFAXVwiIE9yZC5wcmludCBrZXlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChQcml2YXRlLkVtcHR5LCBrZXksIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYUBdLEAgJWFcIiBPcmQucHJpbnQga2V5IGF1eF9wcmludCByaWdodFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLEAgQFslYUBdXCIgYXV4X3ByaW50IGxlZnQgT3JkLnByaW50IGtleVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSxAIEBbJWFAXSxAICVhXCIgYXV4X3ByaW50IGxlZnQgT3JkLnByaW50IGtleVxuICAgICAgICAgIGF1eF9wcmludCByaWdodFxuXG4gICAgbGV0IHByaW50IGYgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlxceEUyXFx4ODhcXHg4NVwiXG4gICAgICB8IFByaXZhdGUuTm9kZSBfIGFzIG0gLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbeyVhfUBdXCIgYXV4X3ByaW50IG1cblxuICAgIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIHYsIF8sIF8sIF8pIC0+IFNvbWUgdlxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIF8sIF8sIF8sIF8pIC0+IG1pbl9lbHQgbGVmdFxuXG4gICAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgdiwgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT4gU29tZSB2XG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgXywgcmlnaHQsIF8sIF8pIC0+IG1heF9lbHQgcmlnaHRcblxuICAgIGxldCBjaG9vc2UgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChfLCB2LCBfLCBfLCBfKSAtPiBTb21lIHZcblxuICAgIGxldCByZWMgZmluZF9hY2MgYWltX2FjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGwsIGtleSwgciwgXywgYWNjKSAtPlxuICAgICAgICBpZiBhaW1fYWNjID49IGFjYyB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgYWNjX2wgPSBzaXplIGwgaW5cbiAgICAgICAgICBsZXQgYWNjX3IgPSBzaXplIHIgaW5cbiAgICAgICAgICBpZiBhY2NfbCA+IGFpbV9hY2MgdGhlblxuICAgICAgICAgICAgZmluZF9hY2MgYWltX2FjYyBsXG4gICAgICAgICAgZWxzZSBpZiBhY2NfciArIGFjY19sID4gYWltX2FjYyB0aGVuXG4gICAgICAgICAgICBmaW5kX2FjYyAoYWltX2FjYyAtIGFjY19sKSByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgU29tZSBrZXlcbiAgICAgICAgKVxuXG4gICAgKCogbGV0IHJlYyBmaW5kX2FjYyBrIG0gPVxuICAgICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgICAgfCBQcml2YXRlLk5vZGUgKGwsIGtleSwgciwgXywgXykgLT5cbiAgICAgICAgICAgIGxldCBzID0gc2l6ZSBsIGluXG4gICAgICAgICAgICBpZiBrIDwgcyB0aGVuIGZpbmRfYWNjIGsgbFxuICAgICAgICAgICAgICBlbHNlIGlmIGsgPSBzIHRoZW4gU29tZSBrZXlcbiAgICAgICAgICAgICAgZWxzZSBmaW5kX2FjYyAoayAtIHMgLSAxKSByICopXG5cbiAgICBsZXQgcmFuZG9tIHJzIG0gPVxuICAgICAgbGV0IHMgPSBzaXplIG0gaW5cbiAgICAgIGlmIHMgPSAwIHRoZW5cbiAgICAgICAgTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBmaW5kX2FjYyAoUmFuZG9tLlN0YXRlLmludCBycyAoc2l6ZSBtKSkgbVxuXG4gICAgKCogbGV0IGFkZCA9IExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBhZGRfd2l0aF9sb2dzXG4gICAgICAgbGV0IHNwbGl0ID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIHNwbGl0X3dpdGhfbG9nc1xuICAgICAgIGxldCByZW1vdmUgPSAgTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIHJlbW92ZV93aXRoX2xvZ3NcbiAgICAgICBsZXQgdW5pb24gPSBMaWZ0X2Vycm9yX2xvZ3MubGlmdF9nZW5lcmljX2JpbmFyeV9mb3JfS2FTaW0gdW5pb25fd2l0aF9sb2dzXG4gICAgICAgbGV0IGludGVyID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIGludGVyX3dpdGhfbG9nc1xuICAgICAgIGxldCBkaWZmID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIGRpZmZfd2l0aF9sb2dzXG4gICAgICAgbGV0IG1pbnVzID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIG1pbnVzX3dpdGhfbG9nc1xuICAgICAgIGxldCBmaWx0ZXIgPSBMaWZ0X2Vycm9yX2xvZ3MubGlmdF9nZW5lcmljX2JpbmFyeV9mb3JfS2FTaW0gZmlsdGVyX3dpdGhfbG9nc1xuICAgICAgIGxldCBwYXJ0aXRpb24gPSBMaWZ0X2Vycm9yX2xvZ3MubGlmdF9nZW5lcmljX2JpbmFyeV9iaW5hcnlfZm9yX0thU2ltIHBhcnRpdGlvbl93aXRoX2xvZ3NcbiAgICAqKVxuICBlbmRcblxuICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICgqIE1hcCBpbXBsZW1lbnRhdGlvbiopXG5cbiAgbW9kdWxlIE1hcCA9IHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gT3JkLnRcblxuICAgIG1vZHVsZSBQcml2YXRlIDogc2lnXG4gICAgICB0eXBlICsnZGF0YSB0ID0gcHJpdmF0ZVxuICAgICAgICB8IEVtcHR5XG4gICAgICAgIHwgTm9kZSBvZiAnZGF0YSB0ICogZWx0ICogJ2RhdGEgKiAnZGF0YSB0ICogaW50ICogaW50XG5cbiAgICAgIHZhbCBlbXB0eSA6ICdhIHRcbiAgICAgIHZhbCBoZWlnaHQgOiAnYSB0IC0+IGludFxuICAgICAgdmFsIHNpemUgOiAnYSB0IC0+IGludFxuICAgICAgdmFsIG5vZGUgOiAnYSB0IC0+IGVsdCAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgKydkYXRhIHQgPVxuICAgICAgICB8IEVtcHR5XG4gICAgICAgIHwgTm9kZSBvZiAnZGF0YSB0ICogZWx0ICogJ2RhdGEgKiAnZGF0YSB0ICogaW50ICogaW50XG5cbiAgICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBoLCBfKSAtPiBoXG5cbiAgICAgIGxldCBzaXplID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgXywgcykgLT4gc1xuXG4gICAgICBsZXQgbm9kZSBsZWZ0IGtleTAgZGF0YSByaWdodCA9XG4gICAgICAgIGxldCBobCA9IGhlaWdodCBsZWZ0IGluXG4gICAgICAgIGxldCBociA9IGhlaWdodCByaWdodCBpblxuICAgICAgICBOb2RlXG4gICAgICAgICAgKCBsZWZ0LFxuICAgICAgICAgICAga2V5MCxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgICgxXG4gICAgICAgICAgICArXG4gICAgICAgICAgICBpZiBobCA+IGhyIHRoZW5cbiAgICAgICAgICAgICAgaGxcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgaHIpLFxuICAgICAgICAgICAgMSArIHNpemUgbGVmdCArIHNpemUgcmlnaHQgKVxuICAgIGVuZFxuXG4gICAgdHlwZSArJ2EgdCA9ICdhIFByaXZhdGUudFxuXG4gICAgbGV0IGVtcHR5ID0gUHJpdmF0ZS5lbXB0eVxuICAgIGxldCBoZWlnaHQgPSBQcml2YXRlLmhlaWdodFxuICAgIGxldCBzaXplID0gUHJpdmF0ZS5zaXplXG4gICAgbGV0IG5vZGUgPSBQcml2YXRlLm5vZGVcblxuICAgIHR5cGUgc2V0ID0gU2V0LnRcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBQcml2YXRlLk5vZGUgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJvb3QgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChfLCB4LCBkLCBfLCBfLCBfKSAtPiBTb21lICh4LCBkKVxuXG4gICAgbGV0IHJlYyBtYXhfa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgaywgXywgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT4gU29tZSBrXG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgXywgXywgbSwgXywgXykgLT4gbWF4X2tleSBtXG5cbiAgICBsZXQgYmFsYW5jZSBsZWZ0IGtleSBkYXRhIHJpZ2h0ID1cbiAgICAgIGxldCBoZWlnaHRfbGVmdCA9IGhlaWdodCBsZWZ0IGluXG4gICAgICBsZXQgaGVpZ2h0X3JpZ2h0ID0gaGVpZ2h0IHJpZ2h0IGluXG4gICAgICBpZiBoZWlnaHRfbGVmdCA+IGhlaWdodF9yaWdodCArIDIgdGhlbiAoXG4gICAgICAgIG1hdGNoIGxlZnQgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgODI4XCIpXG4gICAgICAgICgqIGhlaWdodF9sZWZ0ID4gaGVpZ2h0X3JpZ2h0ICsgMiA+PSAyICopXG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MCwga2V5MCwgZGF0YTAsIHJpZ2h0MCwgXywgXykgLT5cbiAgICAgICAgICBpZiBoZWlnaHQgbGVmdDAgPj0gaGVpZ2h0IHJpZ2h0MCB0aGVuXG4gICAgICAgICAgICBub2RlIGxlZnQwIGtleTAgZGF0YTAgKG5vZGUgcmlnaHQwIGtleSBkYXRhIHJpZ2h0KVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggcmlnaHQwIHdpdGhcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiByYWlzZSAoRGVhZENvZGVJc05vdERlYWQgXCJTZXRNYXAgbGluZSA4MzVcIilcbiAgICAgICAgICAgICgqIDAgPD0gaGVpZ2h0IGxlZnQwIDwgaGVpZ2h0IHJpZ2h0MCAqKVxuICAgICAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICAgICAgICBub2RlXG4gICAgICAgICAgICAgICAgKG5vZGUgbGVmdDAga2V5MCBkYXRhMCBsZWZ0MSlcbiAgICAgICAgICAgICAgICBrZXkxIGRhdGExXG4gICAgICAgICAgICAgICAgKG5vZGUgcmlnaHQxIGtleSBkYXRhIHJpZ2h0KVxuICAgICAgICAgIClcbiAgICAgICkgZWxzZSBpZiBoZWlnaHRfcmlnaHQgPiBoZWlnaHRfbGVmdCArIDIgdGhlbiAoXG4gICAgICAgIG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDg0NFwiKVxuICAgICAgICAoKiBoZWlnaHRfcmlnaHQgPiBoZWlnaHRfbGVmdCArIDIgPj0gMiAqKVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDAsIGtleTAsIGRhdGEwLCByaWdodDAsIF8sIF8pIC0+XG4gICAgICAgICAgaWYgaGVpZ2h0IHJpZ2h0MCA+PSBoZWlnaHQgbGVmdDAgdGhlblxuICAgICAgICAgICAgbm9kZSAobm9kZSBsZWZ0IGtleSBkYXRhIGxlZnQwKSBrZXkwIGRhdGEwIHJpZ2h0MFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggbGVmdDAgd2l0aFxuICAgICAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDg1MVwiKVxuICAgICAgICAgICAgKCogMCA8PSBoZWlnaHQgcmlnaHQwIDwgaGVpZ2h0IGxlZnQwICopXG4gICAgICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgICAgICAgIG5vZGUgKG5vZGUgbGVmdCBrZXkgZGF0YSBsZWZ0MSkga2V5MSBkYXRhMVxuICAgICAgICAgICAgICAgIChub2RlIHJpZ2h0MSBrZXkwIGRhdGEwIHJpZ2h0MClcbiAgICAgICAgICApXG4gICAgICApIGVsc2VcbiAgICAgICAgbm9kZSBsZWZ0IGtleSBkYXRhIHJpZ2h0XG5cbiAgICBsZXQgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQga2V5IGRhdGEgcmlnaHQgPVxuICAgICAgdHJ5IGVycm9yLCBiYWxhbmNlIGxlZnQga2V5IGRhdGEgcmlnaHRcbiAgICAgIHdpdGggRGVhZENvZGVJc05vdERlYWQgbG9jIC0+XG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lIChsb2MgXiBcIiBNYXAgaW52YXJpYW50IGlzIGJyb2tlbiwga2VlcCBvbiB3aXRoIHVuYmFsYW5jZWQgbWFwXCIpKVxuICAgICAgICAgICAgKEZhaWx1cmUgXCJTZXRfYW5kX01hcC5NYXAuYmFsYW5jZVwiKVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbm9kZSBsZWZ0IGtleSBkYXRhIHJpZ2h0XG5cbiAgICBsZXQgcmVjIGFkZCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gbm9kZSBlbXB0eSBrZXkgZGF0YSBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIGRhdGFfbWFwLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIG5vZGUgbGVmdCBrZXlfbWFwIGRhdGEgcmlnaHRcbiAgICAgICAgZWxzZSBpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICBiYWxhbmNlIChhZGQga2V5IGRhdGEgbGVmdCkga2V5X21hcCBkYXRhX21hcCByaWdodFxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmFsYW5jZSBsZWZ0IGtleV9tYXAgZGF0YV9tYXAgKGFkZCBrZXkgZGF0YSByaWdodClcblxuICAgIGxldCByZWMgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGtleSBkYXRhID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgdHJ1ZSwgbm9kZSBlbXB0eSBrZXkgZGF0YSBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIGRhdGFfbWFwLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIGVycm9yLCBmYWxzZSwgbm9kZSBsZWZ0IGtleV9tYXAgZGF0YSByaWdodFxuICAgICAgICBlbHNlIGlmIGNtcCA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBib29sLCBsZWZ0JyA9XG4gICAgICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5IGRhdGEgbGVmdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBtYXAgPVxuICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3IgbGVmdCcga2V5X21hcCBkYXRhX21hcCByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGJvb2wsIG1hcFxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgcmlnaHQnID1cbiAgICAgICAgICAgIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyB3YXJuIHBhcmFtZXRlciBlcnJvciBrZXkgZGF0YSByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBtYXAgPVxuICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3IgbGVmdCBrZXlfbWFwIGRhdGFfbWFwIHJpZ2h0J1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGJvb2wsIG1hcFxuICAgICAgICApXG5cbiAgICBsZXQgYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlciBlcnJvciBrZXkgZGF0YSBtYXAgPVxuICAgICAgbGV0IGVycm9yLCBib29sLCBtYXAgPVxuICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5IGRhdGEgbWFwXG4gICAgICBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGVycm9yLCBtYXBcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYSwgYiwgXywgXyA9IF9fUE9TX18gaW5cbiAgICAgICAgKCB3YXJuIHBhcmFtZXRlciBlcnJvciBcInNldE1hcC5tbCBcIlxuICAgICAgICAgICAgKFNvbWVcbiAgICAgICAgICAgICAgIChhIF4gXCIgbGluZTogXCIgXiBzdHJpbmdfb2ZfaW50IGJcbiAgICAgICAgICAgICAgXiBcIjogQXR0ZW1wdCB0byBhZGQgYW4gYXNzb2NpYXRpb24gb3ZlciBhIGZvcm1lciBvbmUgaW4gYSBtYXBcIikpXG4gICAgICAgICAgICAoRmFpbHVyZSBcIlNldF9hbmRfTWFwLk1hcC5hZGRcIiksXG4gICAgICAgICAgbWFwIClcbiAgICAgIClcblxuICAgIGxldCByZWMgZXh0cmFjdF9taW5fYmluZGluZyBtYXAga2V5IGRhdGEgbWFwJyA9XG4gICAgICBtYXRjaCBtYXAgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IChrZXksIGRhdGEpLCBtYXAnXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDIsIGtleTIsIGRhdGEyLCByaWdodDIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBtaW4sIGxlZnQnID0gZXh0cmFjdF9taW5fYmluZGluZyBsZWZ0MiBrZXkyIGRhdGEyIHJpZ2h0MiBpblxuICAgICAgICBtaW4sIGJhbGFuY2UgbGVmdCcga2V5IGRhdGEgbWFwJ1xuXG4gICAgbGV0IHJlYyBleHRyYWN0X21pbl9iaW5kaW5nX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbWFwIGtleSBkYXRhXG4gICAgICAgIG1hcCcgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgKChrZXksIGRhdGEpLCBtYXAnKVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQyLCBrZXkyLCBkYXRhMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICBsZXQgZXJyb3IsIChtaW4sIGxlZnQnKSA9XG4gICAgICAgICAgZXh0cmFjdF9taW5fYmluZGluZ193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQyIGtleTIgZGF0YTJcbiAgICAgICAgICAgIHJpZ2h0MlxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgKG1pbiwgYmFsYW5jZSBsZWZ0JyBrZXkgZGF0YSBtYXAnKVxuXG4gICAgbGV0IG1lcmdlIG1hcDEgbWFwMiA9XG4gICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBtYXAyXG4gICAgICB8IFByaXZhdGUuTm9kZSBfIC0+XG4gICAgICAgIChtYXRjaCBtYXAyIHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IG1hcDFcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQyLCBrZXkyLCBkYXRhMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCAoa2V5MywgZGF0YTMpLCBsZWZ0JyA9XG4gICAgICAgICAgICBleHRyYWN0X21pbl9iaW5kaW5nIGxlZnQyIGtleTIgZGF0YTIgcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBiYWxhbmNlIG1hcDEga2V5MyBkYXRhMyBsZWZ0JylcblxuICAgIGxldCBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcDEgbWFwMiA9XG4gICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgbWFwMlxuICAgICAgfCBQcml2YXRlLk5vZGUgXyAtPlxuICAgICAgICAobWF0Y2ggbWFwMiB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgbWFwMVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDIsIGtleTIsIGRhdGEyLCByaWdodDIsIF8sIF8pIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCAoKGtleTMsIGRhdGEzKSwgbGVmdCcpID1cbiAgICAgICAgICAgIGV4dHJhY3RfbWluX2JpbmRpbmdfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MiBrZXkyIGRhdGEyXG4gICAgICAgICAgICAgIHJpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcDEga2V5MyBkYXRhMyBsZWZ0JylcblxuICAgIGxldCByZWMgcmVtb3ZlIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIG1lcmdlIGxlZnQgcmlnaHRcbiAgICAgICAgZWxzZSBpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICBiYWxhbmNlIChyZW1vdmUga2V5IGxlZnQpIGtleV9tYXAgZGF0YSByaWdodFxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmFsYW5jZSBsZWZ0IGtleV9tYXAgZGF0YSAocmVtb3ZlIGtleSByaWdodClcblxuICAgIGxldCByZWMgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkgbWFwID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIGZhbHNlLCBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgY21wID0gT3JkLmNvbXBhcmUga2V5IGtleV9tYXAgaW5cbiAgICAgICAgaWYgY21wID0gMCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIG1hcCA9IG1lcmdlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCByaWdodCBpblxuICAgICAgICAgIGVycm9yLCB0cnVlLCBtYXBcbiAgICAgICAgKSBlbHNlIGlmIGNtcCA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBib29sLCBsZWZ0JyA9XG4gICAgICAgICAgICByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2Ugd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleSBsZWZ0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBsZWZ0JyA9PSBsZWZ0IHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJTZXRNYXAgbGluZSA5NjFcIilcbiAgICAgICAgICAgICAgICAgIChmYWlsd2l0aCBcIkludmFyaWFudCBpcyBicm9rZW5cIilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGJvb2wsIG1hcFxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIG1hcCA9XG4gICAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyBrZXlfbWFwIGRhdGEgcmlnaHRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgbWFwXG4gICAgICAgICAgKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgcmlnaHQnID1cbiAgICAgICAgICAgIHJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5IHJpZ2h0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiByaWdodCcgPT0gcmlnaHQgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIiAoU29tZSBcIlNldE1hcCBsaW5lIDk3OFwiKVxuICAgICAgICAgICAgICAgICAgKGZhaWx3aXRoIFwiSW52YXJpYW50IGlzIGJyb2tlblwiKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgbWFwXG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgbWFwID1cbiAgICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQga2V5X21hcCBkYXRhIHJpZ2h0J1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBib29sLCBtYXBcbiAgICAgICAgICApXG4gICAgICAgIClcblxuICAgIGxldCByZW1vdmVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkgbWFwID1cbiAgICAgIGxldCBlcnJvciwgYm9vbCwgbWFwID1cbiAgICAgICAgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkgbWFwXG4gICAgICBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGVycm9yLCBtYXBcbiAgICAgIGVsc2VcbiAgICAgICAgKCB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgKFNvbWVcbiAgICAgICAgICAgICAgIChcIlNldE1hcCBsaW5lIDk5NFwiXG4gICAgICAgICAgICAgIF4gXCJUcnkgdG8gcmVtb3ZlIGFuIGFzc29jaWF0aW9uIHRoYXQgaXMgbm90IGRlZmluZWQgaW4gTWFwLnJlbW92ZVwiXG4gICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgKGZhaWx3aXRoXG4gICAgICAgICAgICAgICBcIlRyeSB0byByZW1vdmUgYW4gYXNzb2NpYXRpb24gdGhhdCBpcyBub3QgZGVmaW5lZCBpbiBNYXAucmVtb3ZlXCIpLFxuICAgICAgICAgIG1hcCApXG5cbiAgICBsZXQgcmVjIHBvcCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSBhcyBtIC0+IE5vbmUsIG1cbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCB2LCBkLCByLCBfLCBfKSBhcyBtIC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICBTb21lIGQsIG1lcmdlIGwgclxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIG1hdGNoIHBvcCB4IGwgd2l0aFxuICAgICAgICAgIHwgKE5vbmUgYXMgbyksIF8gLT4gbywgbVxuICAgICAgICAgIHwgKFNvbWUgXyBhcyBvKSwgdCAtPiBvLCBiYWxhbmNlIHQgdiBkIHJcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBtYXRjaCBwb3AgeCByIHdpdGhcbiAgICAgICAgICB8IChOb25lIGFzIG8pLCBfIC0+IG8sIG1cbiAgICAgICAgICB8IChTb21lIF8gYXMgbyksIHQgLT4gbywgYmFsYW5jZSBsIHYgZCB0XG4gICAgICAgIClcblxuICAgIGxldCByZWMgam9pbiBsZWZ0IGtleSB2YWx1ZSByaWdodCA9XG4gICAgICBtYXRjaCBiYWxhbmNlIGxlZnQga2V5IHZhbHVlIHJpZ2h0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPlxuICAgICAgICByYWlzZSAoRGVhZENvZGVJc05vdERlYWQgXCJTZXRNYXAgbGluZSAxMDEzXCIpICgqIEJ5IGNhc2UgYW5hbHlzaXMgKilcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0Miwga2V5MiwgZGF0YTIsIHJpZ2h0MiwgXywgXykgYXMgbWFwMiAtPlxuICAgICAgICBsZXQgaCA9IGhlaWdodCBsZWZ0MiAtIGhlaWdodCByaWdodDIgaW5cbiAgICAgICAgaWYgaCA+IDIgfHwgaCA8IC0yIHRoZW5cbiAgICAgICAgICBqb2luIGxlZnQyIGtleTIgZGF0YTIgcmlnaHQyXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXAyXG5cbiAgICBsZXQgcmVjIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IGtleSB2YWx1ZSByaWdodCA9XG4gICAgICBtYXRjaCBiYWxhbmNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCBrZXkgdmFsdWUgcmlnaHQgd2l0aFxuICAgICAgfCBlcnJvciwgUHJpdmF0ZS5FbXB0eSAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAoU29tZVxuICAgICAgICAgICAgICAgXCJNYXAuam9pbl93aXRoX2xvZ3MsIGxpbmUgOTg2LCB0aGUgb3V0cHV0IG9mIGJhbGFuY2Ugc2hvdWxkIG5vdCBcXFxuICAgICAgICAgICAgICAgIGJlIGVtcHR5XCIpXG4gICAgICAgICAgICAoZmFpbHdpdGggXCJ0aGUgb3V0cHV0IG9mIGJhbGFuY2Ugc2hvdWxkIG5vdCBiZSBlbXB0eVwiKVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgZW1wdHlcbiAgICAgIHwgZXJyb3IsIChQcml2YXRlLk5vZGUgKGxlZnQyLCBrZXkyLCBkYXRhMiwgcmlnaHQyLCBfLCBfKSBhcyBtYXAyKSAtPlxuICAgICAgICBsZXQgaCA9IGhlaWdodCBsZWZ0MiAtIGhlaWdodCByaWdodDIgaW5cbiAgICAgICAgaWYgaCA+IDIgfHwgaCA8IC0yIHRoZW5cbiAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDIga2V5MiBkYXRhMiByaWdodDJcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGVycm9yLCBtYXAyXG5cbiAgICBsZXQgcmVjIHNwbGl0IHZhbHVlID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlbXB0eSwgTm9uZSwgZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIHZhbHVlIGtleTEgaW5cbiAgICAgICAgaWYgY21wID0gMCB0aGVuXG4gICAgICAgICAgbGVmdDEsIFNvbWUgZGF0YTEsIHJpZ2h0MVxuICAgICAgICBlbHNlIGlmIGNtcCA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQgdmFsdWUgbGVmdDEgaW5cbiAgICAgICAgICBsZXQgcmlnaHQyJyA9IGpvaW4gcmlnaHQyIGtleTEgZGF0YTEgcmlnaHQxIGluXG4gICAgICAgICAgbGVmdDIsIGRhdGEyLCByaWdodDInXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQgdmFsdWUgcmlnaHQxIGluXG4gICAgICAgICAgbGV0IGxlZnQyJyA9IGpvaW4gbGVmdDEga2V5MSBkYXRhMSBsZWZ0MiBpblxuICAgICAgICAgIGxlZnQyJywgZGF0YTIsIHJpZ2h0MlxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgbWFwID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIChlbXB0eSwgTm9uZSwgZW1wdHkpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSB2YWx1ZSBrZXkxIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIGVycm9yLCAobGVmdDEsIFNvbWUgZGF0YTEsIHJpZ2h0MSlcbiAgICAgICAgZWxzZSBpZiBjbXAgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIGxlZnQxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0MicgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MiBrZXkxIGRhdGExIHJpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MicpXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIGRhdGEyLCByaWdodDIpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgcmlnaHQxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxlZnQyJyA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEga2V5MSBkYXRhMSBsZWZ0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIChsZWZ0MicsIGRhdGEyLCByaWdodDIpXG4gICAgICAgIClcblxuICAgIGxldCByZWMgZGlmZiBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHksIG1hcDJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQga2V5MSBtYXAyIGluXG4gICAgICAgIGxldCBvbGVmdDEsIG9sZWZ0MiA9IGRpZmYgbGVmdDEgbGVmdDIgaW5cbiAgICAgICAgbGV0IG9yaWdodDEsIG9yaWdodDIgPSBkaWZmIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBTb21lIHggd2hlbiB4ID0gZGF0YTEgLT4gbWVyZ2Ugb2xlZnQxIG9yaWdodDEsIG1lcmdlIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGpvaW4gb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MSwgam9pbiBvbGVmdDIga2V5MSBkYXRhMiBvcmlnaHQyXG4gICAgICAgIHwgTm9uZSAtPiBqb2luIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDEsIG1lcmdlIG9sZWZ0MiBvcmlnaHQyKVxuXG4gICAgbGV0IHJlYyB1bmlvbiBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSwgbWFwMiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gbWFwMlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IG1hcDFcbiAgICAgIHwgKCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIGRhdGExLCByaWdodDEsIGhlaWdodDEsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgZGF0YTIsIHJpZ2h0MiwgaGVpZ2h0MiwgXykgKSAtPlxuICAgICAgICBpZiBoZWlnaHQxID49IGhlaWdodDIgdGhlbiAoXG4gICAgICAgICAgbGV0IGxlZnQyLCBvcF9kYXRhMiwgcmlnaHQyID0gc3BsaXQgdmFsdWUxIG1hcDIgaW5cbiAgICAgICAgICBqb2luICh1bmlvbiBsZWZ0MSBsZWZ0MikgdmFsdWUxXG4gICAgICAgICAgICAobWF0Y2ggb3BfZGF0YTIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGExXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gZDIpXG4gICAgICAgICAgICAodW5pb24gcmlnaHQxIHJpZ2h0MilcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgbGVmdDEsIG9wX2RhdGExLCByaWdodDEgPSBzcGxpdCB2YWx1ZTIgbWFwMSBpblxuICAgICAgICAgIGpvaW4gKHVuaW9uIGxlZnQxIGxlZnQyKSB2YWx1ZTFcbiAgICAgICAgICAgIChtYXRjaCBvcF9kYXRhMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZGF0YTJcbiAgICAgICAgICAgIHwgU29tZSBkMSAtPiBkMSlcbiAgICAgICAgICAgICh1bmlvbiByaWdodDEgcmlnaHQyKVxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHVuaW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbWFwMSBtYXAyID1cbiAgICAgIG1hdGNoIG1hcDEsIG1hcDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGVycm9yLCBtYXAyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIG1hcDFcbiAgICAgIHwgKCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIGRhdGExLCByaWdodDEsIGhlaWdodDEsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgZGF0YTIsIHJpZ2h0MiwgaGVpZ2h0MiwgXykgKSAtPlxuICAgICAgICBpZiBoZWlnaHQxID49IGhlaWdodDIgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIG9wX2RhdGEyLCByaWdodDIpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUxIG1hcDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgICAgdW5pb25fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MSBsZWZ0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodCcgPVxuICAgICAgICAgICAgdW5pb25fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodDEgcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUxXG4gICAgICAgICAgICAobWF0Y2ggb3BfZGF0YTIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGExXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gZDIpXG4gICAgICAgICAgICByaWdodCdcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIChsZWZ0MSwgb3BfZGF0YTEsIHJpZ2h0MSkgPVxuICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTIgbWFwMVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgICB1bmlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGxlZnQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9XG4gICAgICAgICAgICB1bmlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyB2YWx1ZTFcbiAgICAgICAgICAgIChtYXRjaCBvcF9kYXRhMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZGF0YTJcbiAgICAgICAgICAgIHwgU29tZSBkMSAtPiBkMSlcbiAgICAgICAgICAgIHJpZ2h0J1xuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHVwZGF0ZSBtYXAxIG1hcDIgPVxuICAgICAgaWYgbWFwMSA9PSBtYXAyIHRoZW5cbiAgICAgICAgbWFwMlxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIG1hcDEgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gbWFwMlxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQga2V5MSBtYXAyIGluXG4gICAgICAgICAgam9pbiAodXBkYXRlIGxlZnQxIGxlZnQyKSBrZXkxXG4gICAgICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGExXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gZDIpXG4gICAgICAgICAgICAodXBkYXRlIHJpZ2h0MSByaWdodDIpXG4gICAgICApXG5cbiAgICBsZXQgcmVjIHVwZGF0ZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcDEgbWFwMiA9XG4gICAgICBpZiBtYXAxID09IG1hcDIgdGhlblxuICAgICAgICBlcnJvciwgbWFwMlxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIG1hcDEgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIG1hcDJcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgbWFwMlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgICB1cGRhdGVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MSBsZWZ0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodCcgPVxuICAgICAgICAgICAgdXBkYXRlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIGtleTFcbiAgICAgICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZGF0YTFcbiAgICAgICAgICAgIHwgU29tZSBkMiAtPiBkMilcbiAgICAgICAgICAgIHJpZ2h0J1xuICAgICAgKVxuXG4gICAgbGV0IHJlYyBkaWZmX3ByZWQgcHJlZCBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHksIG1hcDJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQga2V5MSBtYXAyIGluXG4gICAgICAgIGxldCBvbGVmdDEsIG9sZWZ0MiA9IGRpZmZfcHJlZCBwcmVkIGxlZnQxIGxlZnQyIGluXG4gICAgICAgIGxldCBvcmlnaHQxLCBvcmlnaHQyID0gZGlmZl9wcmVkIHByZWQgcmlnaHQxIHJpZ2h0MiBpblxuICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICB8IFNvbWUgeCB3aGVuIHByZWQgeCBkYXRhMSAtPiBtZXJnZSBvbGVmdDEgb3JpZ2h0MSwgbWVyZ2Ugb2xlZnQyIG9yaWdodDJcbiAgICAgICAgfCBTb21lIGRhdGEyIC0+XG4gICAgICAgICAgam9pbiBvbGVmdDEga2V5MSBkYXRhMSBvcmlnaHQxLCBqb2luIG9sZWZ0MiBrZXkxIGRhdGEyIG9yaWdodDJcbiAgICAgICAgfCBOb25lIC0+IGpvaW4gb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MSwgbWVyZ2Ugb2xlZnQyIG9yaWdodDIpXG5cbiAgICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChQcml2YXRlLkVtcHR5LCBrZXksIGRhdGEsIF8sIF8sIF8pIC0+IFNvbWUgKGtleSwgZGF0YSlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBfLCBfLCBfLCBfLCBfKSAtPiBtaW5fZWx0IGxlZnRcblxuICAgIGxldCByZWMgZmluZF9vcHRpb24ga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5X21hcCwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBTb21lIGRhdGFcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZpbmRfb3B0aW9uIGtleVxuICAgICAgICAgICAgKGlmIGNtcCA8IDAgdGhlblxuICAgICAgICAgICAgICAgbGVmdFxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIHJpZ2h0KVxuXG4gICAgbGV0IHJlYyBmaW5kX2RlZmF1bHQgZCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGRcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIGRhdGFcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZpbmRfZGVmYXVsdCBkIGtleVxuICAgICAgICAgICAgKGlmIGNtcCA8IDAgdGhlblxuICAgICAgICAgICAgICAgbGVmdFxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIHJpZ2h0KVxuXG4gICAgbGV0IHJlYyBmaW5kX29wdGlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJsaW5lIDY1OVwiKSBOb3RfZm91bmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIGVycm9yLCBTb21lIGRhdGFcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZpbmRfb3B0aW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlciBlcnJvciBrZXlcbiAgICAgICAgICAgIChpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICAgICAgIGxlZnRcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICByaWdodClcblxuICAgIGxldCByZWMgZmluZF9kZWZhdWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlciBlcnJvciBkIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT5cbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwibGluZSA2NjlcIikgTm90X2ZvdW5kXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBkXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5X21hcCwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgZGF0YVxuICAgICAgICBlbHNlXG4gICAgICAgICAgZmluZF9kZWZhdWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlciBlcnJvciBkIGtleVxuICAgICAgICAgICAgKGlmIGNtcCA8IDAgdGhlblxuICAgICAgICAgICAgICAgbGVmdFxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIHJpZ2h0KVxuXG4gICAgbGV0IHJlYyBtZW0ga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBmYWxzZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIF8sIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgY21wID0gT3JkLmNvbXBhcmUga2V5IGtleV9tYXAgaW5cbiAgICAgICAgY21wID09IDBcbiAgICAgICAgfHxcbiAgICAgICAgaWYgY21wID4gMCB0aGVuXG4gICAgICAgICAgbWVtIGtleSByaWdodFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWVtIGtleSBsZWZ0XG5cbiAgICBsZXQgcmVjIGZpbHRlcl9vbmUgcCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBpZiBwIGtleSB2YWx1ZSB0aGVuXG4gICAgICAgICAgU29tZSAoa2V5LCB2YWx1ZSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggZmlsdGVyX29uZSBwIGxlZnQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfb25lIHAgcmlnaHRcbiAgICAgICAgICB8IG91dCAtPiBvdXRcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+ICgpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0ICgpID0gaXRlciBmIGxlZnQgaW5cbiAgICAgICAgbGV0ICgpID0gZiBrZXkgZGF0YSBpblxuICAgICAgICBpdGVyIGYgcmlnaHRcblxuICAgIGxldCByZWMgZm9sZCBmIG1hcCB2YWx1ZSA9XG4gICAgICBtYXRjaCBtYXAgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHZhbHVlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgZm9sZCBmIHJpZ2h0IChmIGtleSBkYXRhIChmb2xkIGYgbGVmdCB2YWx1ZSkpXG5cbiAgICBsZXQgcmVjIGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gZiBtYXAgdmFsdWUgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBmYWxzZSwgU3RvcC5zdWNjZXNzIHZhbHVlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IG91dHB1dGwgPSBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIGYgbGVmdCB2YWx1ZSBpblxuICAgICAgICBsZXQgaW50ZXJydXB0ZWQsIHZhbHVlID0gb3V0cHV0bCBpblxuICAgICAgICBpZiBpbnRlcnJ1cHRlZCB0aGVuXG4gICAgICAgICAgb3V0cHV0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgU3RvcC5zdWNjZXNzX29yX3N0b3BcbiAgICAgICAgICAgIChmdW4gdmFsdWUgLT5cbiAgICAgICAgICAgICAgbGV0IHZhbF9vcHQgPVxuICAgICAgICAgICAgICAgIHRyeSBTb21lIChmIGtleSBkYXRhIHZhbHVlKSB3aXRoIFN5cy5CcmVhayAtPiBOb25lXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIHZhbF9vcHQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gdHJ1ZSwgU3RvcC5zdWNjZXNzIHZhbHVlXG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICAgICAgICAgU3RvcC5zdWNjZXNzX29yX3N0b3BcbiAgICAgICAgICAgICAgICAgIChmdW4gdiAtPiBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIGYgcmlnaHQgdilcbiAgICAgICAgICAgICAgICAgIChmdW4gdiAtPiBmYWxzZSwgU3RvcC5zdG9wIHYpXG4gICAgICAgICAgICAgICAgICB2KVxuICAgICAgICAgICAgKGZ1biB4IC0+IGZhbHNlLCBTdG9wLnN0b3AgeClcbiAgICAgICAgICAgIHZhbHVlXG5cbiAgICBsZXQgZm9sZF93aXRoX2ludGVycnVwdGlvbiBmIG1hcCB2YWx1ZSA9XG4gICAgICBzbmQgKGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gZiBtYXAgdmFsdWUpXG5cbiAgICBsZXQgcmVjIG1vbmFkaWNfZm9sZCBwYXJhbSBlcnIgZiBtYXAgdmFsdWUgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnIsIHZhbHVlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycicsIHZhbHVlJyA9IG1vbmFkaWNfZm9sZCBwYXJhbSBlcnIgZiBsZWZ0IHZhbHVlIGluXG4gICAgICAgIGxldCBlcnInJywgdmFsdWUnJyA9IGYgcGFyYW0gZXJyJyBrZXkgZGF0YSB2YWx1ZScgaW5cbiAgICAgICAgbW9uYWRpY19mb2xkIHBhcmFtIGVycicnIGYgcmlnaHQgdmFsdWUnJ1xuXG4gICAgbGV0IHJlYyBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmggZiBnIGggbWFwMSBtYXAyIHJlcyA9XG4gICAgICBtYXRjaCBtYXAxLCBtYXAyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgUHJpdmF0ZS5FbXB0eSAtPiByaCwgcmVzXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gbW9uYWRpY19mb2xkIHBhcmFtZXRlcnMgcmggaCBtYXAyIHJlc1xuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IG1vbmFkaWNfZm9sZCBwYXJhbWV0ZXJzIHJoIGcgbWFwMSByZXNcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQga2V5MSBtYXAyIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCByaCcsIHJlcycgPSBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmggZiBnIGggbGVmdDEgbGVmdDIgcmVzIGluXG4gICAgICAgICAgbGV0IHJoJycsIHJlcycnID0gZyBwYXJhbWV0ZXJzIHJoJyBrZXkxIGRhdGExIHJlcycgaW5cbiAgICAgICAgICBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmgnJyBmIGcgaCByaWdodDEgcmlnaHQyIHJlcycnXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGxldCByaCcsIHJlcycgPSBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmggZiBnIGggbGVmdDEgbGVmdDIgcmVzIGluXG4gICAgICAgICAgbGV0IHJoJycsIHJlcycnID0gZiBwYXJhbWV0ZXJzIHJoJyBrZXkxIGRhdGExIGRhdGEyIHJlcycgaW5cbiAgICAgICAgICBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmgnJyBmIGcgaCByaWdodDEgcmlnaHQyIHJlcycnKVxuXG4gICAgbGV0IG1vbmFkaWNfZm9sZDJfc3BhcnNlIHBhcmFtZXRlcnMgcmggZiBtYXAxIG1hcDIgcmVzID1cbiAgICAgIGxldCBpZCBfIHggXyBfIHkgPSB4LCB5IGluXG4gICAgICBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmggZiBpZCBpZCBtYXAxIG1hcDIgcmVzXG5cbiAgICBsZXQgbW9uYWRpY19pdGVyMl9zcGFyc2UgcGFyYW1ldGVycyByaCBmIG1hcDEgbWFwMiA9XG4gICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgbW9uYWRpY19mb2xkMl9zcGFyc2UgcGFyYW1ldGVycyByaFxuICAgICAgICAgIChmdW4gcCBlIGsgYSBiICgpIC0+IGYgcCBlIGsgYSBiLCAoKSlcbiAgICAgICAgICBtYXAxIG1hcDIgKClcbiAgICAgIGluXG4gICAgICBlcnJvclxuXG4gICAgbGV0IHJlYyBtb25hZGljX2ZvbGRfcmVzdHJpY3Rpb24gcGFyYW1ldGVycyByaCBmIHNldCBtYXAgcmVzID1cbiAgICAgIG1hdGNoIHNldCB3aXRoXG4gICAgICB8IFNldC5Qcml2YXRlLkVtcHR5IC0+IHJoLCByZXNcbiAgICAgIHwgU2V0LlByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQga2V5MSBtYXAgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IHJoJywgcmVzJyA9XG4gICAgICAgICAgICBtb25hZGljX2ZvbGRfcmVzdHJpY3Rpb24gcGFyYW1ldGVycyByaCBmIGxlZnQxIGxlZnQyIHJlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIHBhcmFtZXRlcnMgcmgnIGYgcmlnaHQxIHJpZ2h0MiByZXMnXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGxldCByaCcsIHJlcycgPVxuICAgICAgICAgICAgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIHBhcmFtZXRlcnMgcmggZiBsZWZ0MSBsZWZ0MiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByaCcnLCByZXMnJyA9IGYgcGFyYW1ldGVycyByaCcga2V5MSBkYXRhMiByZXMnIGluXG4gICAgICAgICAgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIHBhcmFtZXRlcnMgcmgnJyBmIHJpZ2h0MSByaWdodDIgcmVzJycpXG5cbiAgICBsZXQgcmVjIG1hcGkgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBub2RlIChtYXBpIGYgbGVmdCkga2V5IChmIGtleSBkYXRhKSAobWFwaSBmIHJpZ2h0KVxuXG4gICAgbGV0IG1hcCBmIHMgPSBtYXBpIChmdW4gXyB4IC0+IGYgeCkgc1xuXG4gICAgbGV0IHJlYyBtYXBfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZiBtYXAgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvcnMsIGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycm9ycywgbGVmdCcgPSBtYXBfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZiBsZWZ0IGluXG4gICAgICAgIGxldCBlcnJvcnMsIGRhdGEnID0gZiBwYXJhbWV0ZXJzIGVycm9ycyBkYXRhIGluXG4gICAgICAgIGxldCBlcnJvciwgcmlnaHQnID0gbWFwX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JzIGYgcmlnaHQgaW5cbiAgICAgICAgZXJyb3IsIG5vZGUgbGVmdCcga2V5IGRhdGEnIHJpZ2h0J1xuXG4gICAgbGV0IHJlYyBtYXAyIGYgbWFwIG1hcCcgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBtYXAnXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwJyBpblxuICAgICAgICBqb2luIChtYXAyIGYgbGVmdDEgbGVmdDIpIGtleTFcbiAgICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBkYXRhMVxuICAgICAgICAgIHwgU29tZSBkMiAtPiBmIGRhdGExIGQyKVxuICAgICAgICAgIChtYXAyIGYgcmlnaHQxIHJpZ2h0MilcblxuICAgIGxldCByZWMgbWFwMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBmIGcgaCBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT5cbiAgICAgICAgKG1hdGNoIG1hcDIgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3JzLCBlbXB0eVxuICAgICAgICB8IFByaXZhdGUuTm9kZSBfIC0+IG1hcF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBnIG1hcDIpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnJvcnMsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MikgPVxuICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JzIGtleTEgbWFwMlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3JzLCBsZWZ0JyA9XG4gICAgICAgICAgbWFwMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBmIGcgaCBsZWZ0MSBsZWZ0MlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9XG4gICAgICAgICAgbWFwMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBmIGcgaCByaWdodDEgcmlnaHQyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgZGF0YScgPVxuICAgICAgICAgIG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZiBwYXJhbWV0ZXJzIGVycm9yIGRhdGExXG4gICAgICAgICAgfCBTb21lIGQyIC0+IGggcGFyYW1ldGVycyBlcnJvcnMgZGF0YTEgZDJcbiAgICAgICAgaW5cbiAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIGtleTEgZGF0YScgcmlnaHQnXG5cbiAgICBsZXQgbWFwMnpfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgPVxuICAgICAgbWFwMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yc1xuICAgICAgICAoZnVuIHBhcmFtZXRlcnMgZXJyb3IgYSAtPlxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgICAoU29tZSBcImxpbmUgMTI0OCwgaW5jb21wYXRpYmxlIG1hcHMgaW4gbWFwMnpfc2FmZVwiKSBOb3RfZm91bmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBhKVxuICAgICAgICAoZnVuIHBhcmFtZXRlcnMgZXJyb3IgYSAtPlxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgICAoU29tZSBcImxpbmUgMTI1MSwgaW5jb21wYXRpYmxlIG1hcHMgaW4gbWFwMnpfc2FmZVwiKSBOb3RfZm91bmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBhKVxuXG4gICAgbGV0IHJlYyBmb2xkMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgZyBoIG1hcDEgbWFwMiByZXMgPVxuICAgICAgbWF0Y2ggbWFwMSwgbWFwMiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIHJlc1xuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IG1vbmFkaWNfZm9sZCBwYXJhbWV0ZXJzIGVycm9yIGcgbWFwMiByZXNcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBtb25hZGljX2ZvbGQgcGFyYW1ldGVycyBlcnJvciBmIG1hcDEgcmVzXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcDJcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnID1cbiAgICAgICAgICAgIGZvbGQyX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBnIGggbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycnID0gZiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgZGF0YTEgcmVzJyBpblxuICAgICAgICAgIGZvbGQyX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBnIGggcmlnaHQxIHJpZ2h0MiByZXMnJ1xuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycgPVxuICAgICAgICAgICAgZm9sZDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIGcgaCBsZWZ0MSBsZWZ0MiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJycgPSBoIHBhcmFtZXRlcnMgZXJyb3IgKGtleTEgOiBlbHQpIGRhdGExIGRhdGEyIHJlcycgaW5cbiAgICAgICAgICBmb2xkMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgZyBoIHJpZ2h0MSByaWdodDIgcmVzJycpXG5cbiAgICBsZXQgZm9sZDJ6X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgPVxuICAgICAgZm9sZDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAoZnVuIHBhcmFtZXRlcnMgZXJyb3IgXyBfIGEgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgICAgKFNvbWUgXCJsaW5lIDEyNDgsIGluY29tcGF0aWJsZSBtYXBzIGluIGZvbGQyel9zYWZlXCIpIE5vdF9mb3VuZFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGEpXG4gICAgICAgIChmdW4gcGFyYW1ldGVycyBlcnJvciBfIF8gYSAtPlxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgICAoU29tZSBcImxpbmUgMTI1MSwgaW5jb21wYXRpYmxlIG1hcHMgaW4gZm9sZDJ6X3NhZmVcIikgTm90X2ZvdW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgYSlcblxuICAgIGxldCByZWMgZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBtYXAxIG1hcDIgcmVzID1cbiAgICAgIG1hdGNoIG1hcDEsIG1hcDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgcmVzXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcDJcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnID1cbiAgICAgICAgICAgIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBmb2xkMl9zcGFyc2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIHJpZ2h0MSByaWdodDIgcmVzJ1xuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycgPVxuICAgICAgICAgICAgZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBsZWZ0MSBsZWZ0MiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJycgPSBmIHBhcmFtZXRlcnMgZXJyb3Iga2V5MSBkYXRhMSBkYXRhMiByZXMnIGluXG4gICAgICAgICAgZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiByaWdodDEgcmlnaHQyIHJlcycnKVxuXG4gICAgbGV0IGl0ZXIyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgbWFwMSBtYXAyID1cbiAgICAgIGxldCBlcnJvciwgXyA9XG4gICAgICAgIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXIgZXJyIGEgYiBjIF8gLT4gZiBwYXIgZXJyIGEgYiBjLCAoKSlcbiAgICAgICAgICBtYXAxIG1hcDIgKClcbiAgICAgIGluXG4gICAgICBlcnJvclxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHRydWVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBwIGtleSBkYXRhICYmIGZvcl9hbGwgcCByaWdodCAmJiBmb3JfYWxsIHAgbGVmdFxuXG4gICAgdHlwZSAnYSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2YgZWx0ICogJ2EgKiAnYSB0ICogJ2EgZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIG0gZSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobCwgdiwgZCwgciwgXywgXykgLT4gY29uc19lbnVtIGwgKE1vcmUgKHYsIGQsIHIsIGUpKVxuXG4gICAgbGV0IGNvbXBhcmUgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICBtYXRjaCBlMSwgZTIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgICAgfCBFbmQsIF8gLT4gLTFcbiAgICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgICB8IE1vcmUgKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSAodjIsIGQyLCByMiwgZTIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMCB0aGVuXG4gICAgICAgICAgICBjXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCBkMSBkMiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW5cbiAgICAgICAgICAgICAgY1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgY21wIG0xIG0yID1cbiAgICAgIGNvbXBhcmVcbiAgICAgICAgKGZ1biB4IHkgLT5cbiAgICAgICAgICBpZiBjbXAgeCB5IHRoZW5cbiAgICAgICAgICAgIDBcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAxKVxuICAgICAgICBtMSBtMlxuICAgICAgPT0gMFxuXG4gICAgbGV0IHJlYyBiaW5kaW5nc19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gYWNjdVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGwsIHYsIGQsIHIsIF8sIF8pIC0+XG4gICAgICAgIGJpbmRpbmdzX2F1eCAoKHYsIGQpIDo6IGJpbmRpbmdzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBiaW5kaW5ncyBzID0gYmluZGluZ3NfYXV4IFtdIHNcblxuICAgIGxldCByZWMgYXV4X3ByaW50IHByIGYgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+ICgpXG4gICAgICB8IFByaXZhdGUuTm9kZSAoUHJpdmF0ZS5FbXB0eSwga2V5LCBkYXRhLCBQcml2YXRlLkVtcHR5LCBfLCBfKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS0+QCwlYUBdXCIgT3JkLnByaW50IGtleSBwciBkYXRhXG4gICAgICB8IFByaXZhdGUuTm9kZSAoUHJpdmF0ZS5FbXB0eSwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEtPiVhQF0sQCAlYVwiIE9yZC5wcmludCBrZXkgcHIgZGF0YSAoYXV4X3ByaW50IHByKVxuICAgICAgICAgIHJpZ2h0XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCBQcml2YXRlLkVtcHR5LCBfLCBfKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEsQCBAWyVhLT4lYUBdXCIgKGF1eF9wcmludCBwcikgbGVmdCBPcmQucHJpbnQga2V5IHByXG4gICAgICAgICAgZGF0YVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSxAIEBbJWEtPiVhQF0sQCAlYVwiIChhdXhfcHJpbnQgcHIpIGxlZnQgT3JkLnByaW50XG4gICAgICAgICAga2V5IHByIGRhdGEgKGF1eF9wcmludCBwcikgcmlnaHRcblxuICAgIGxldCBwcmludCBwciBmID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJcXHhFMlxceDg4XFx4ODVcIlxuICAgICAgfCBQcml2YXRlLk5vZGUgXyBhcyBtIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAW3slYX1AXVwiIChhdXhfcHJpbnQgcHIpIG1cblxuICAgIGxldCByZWMgZGlmZl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcDEgbWFwMiA9XG4gICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgZW1wdHksIG1hcDJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIGRhdGEyLCByaWdodDIpID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgbWFwMlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG9sZWZ0MSwgb2xlZnQyID1cbiAgICAgICAgICBkaWZmX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBvcmlnaHQxLCBvcmlnaHQyID1cbiAgICAgICAgICBkaWZmX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MlxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICB8IFNvbWUgeCB3aGVuIHggPSBkYXRhMSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbzEgPVxuICAgICAgICAgICAgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDEgb3JpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBvMiA9XG4gICAgICAgICAgICBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbzEsIG8yXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbzEgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbzIgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBrZXkxIGRhdGEyIG9yaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBvMSwgbzJcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBvMSA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBvMiA9XG4gICAgICAgICAgICBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbzEsIG8yKVxuXG4gICAgbGV0IHJlYyBkaWZmX3ByZWRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBwcmVkIG1hcDEgbWFwMiA9XG4gICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgZW1wdHksIG1hcDJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIGRhdGEyLCByaWdodDIpID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgbWFwMlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG9sZWZ0MSwgb2xlZnQyID1cbiAgICAgICAgICBkaWZmX3ByZWRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBwcmVkIGxlZnQxIGxlZnQyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgb3JpZ2h0MSwgb3JpZ2h0MiA9XG4gICAgICAgICAgZGlmZl9wcmVkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcHJlZCByaWdodDEgcmlnaHQyXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgU29tZSB4IHdoZW4gcHJlZCB4IGRhdGExIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBvMSA9XG4gICAgICAgICAgICBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MSBvcmlnaHQxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8yID1cbiAgICAgICAgICAgIG1lcmdlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQyIG9yaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBvMSwgbzJcbiAgICAgICAgfCBTb21lIGRhdGEyIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBvMSA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBvMiA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQyIGtleTEgZGF0YTIgb3JpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIG8xLCBvMlxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8xID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDEga2V5MSBkYXRhMSBvcmlnaHQxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8yID1cbiAgICAgICAgICAgIG1lcmdlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQyIG9yaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBvMSwgbzIpXG5cbiAgICBsZXQgcmVjIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9uc193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzXG4gICAgICAgIGVycm9yIGYgZyBzZXQgbWFwIHJlcyA9XG4gICAgICBtYXRjaCBzZXQsIG1hcCB3aXRoXG4gICAgICB8IFNldC5Qcml2YXRlLkVtcHR5LCBfIC0+IGVycm9yLCByZXNcbiAgICAgIHwgU2V0LlByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIGRhdGEyLCByaWdodDIpID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgbWFwXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJyA9XG4gICAgICAgICAgICBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyc1xuICAgICAgICAgICAgICBlcnJvciBmIGcgbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycnID0gZyBrZXkxIChlcnJvciwgcmVzJykgaW5cbiAgICAgICAgICBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyc1xuICAgICAgICAgICAgZXJyb3IgZiBnIHJpZ2h0MSByaWdodDIgcmVzJydcbiAgICAgICAgfCBTb21lIGRhdGEyIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnID1cbiAgICAgICAgICAgIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9uc193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzXG4gICAgICAgICAgICAgIGVycm9yIGYgZyBsZWZ0MSBsZWZ0MiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJycgPSBmIGtleTEgZGF0YTIgKGVycm9yLCByZXMnKSBpblxuICAgICAgICAgIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9uc193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzXG4gICAgICAgICAgICBlcnJvciBmIGcgcmlnaHQxIHJpZ2h0MiByZXMnJylcblxuICAgIGxldCBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBzZXQgbWFwIHJlcyA9XG4gICAgICBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvclxuICAgICAgICBmXG4gICAgICAgIChmdW4gXyB4IC0+IHgpXG4gICAgICAgIHNldCBtYXAgcmVzXG5cbiAgICBsZXQgdG9fanNvbiA/KGxhYl9rZXkgPSBcImtleVwiKSA/KGxhYl92YWx1ZSA9IFwidmFsdWVcIikgPVxuICAgICAgSnNvblV0aWwub2ZfbWFwIH5sYWJfa2V5IH5sYWJfdmFsdWUgfmZvbGRcblxuICAgIGxldCBvZl9qc29uID8obGFiX2tleSA9IFwia2V5XCIpID8obGFiX3ZhbHVlID0gXCJ2YWx1ZVwiKVxuICAgICAgICA/KGVycm9yX21zZyA9IEpzb25VdGlsLmJ1aWxkX21zZyBcIm1hcFwiKSA9XG4gICAgICBKc29uVXRpbC50b19tYXAgfmxhYl9rZXkgfmxhYl92YWx1ZSB+ZXJyb3JfbXNnIH5hZGQgfmVtcHR5XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFByb2plY3Rpb24gPSBzaWdcbiAgdHlwZSBlbHRfYVxuICB0eXBlIGVsdF9iXG4gIHR5cGUgJ2EgbWFwX2FcbiAgdHlwZSAnYSBtYXBfYlxuICB0eXBlIHNldF9hXG4gIHR5cGUgc2V0X2JcblxuICB2YWwgcHJval9tYXAgOlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT4gJ2IgLT4gKCdiIC0+ICdhIC0+ICdiKSAtPiAnYSBtYXBfYSAtPiAnYiBtYXBfYlxuXG4gIHZhbCBwcm9qX21hcF9tb25hZGljIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICAnYiAtPlxuICAgICgncGFyYW1ldGVycyAtPiAnbWV0aG9kX2hhbmRsZXIgLT4gJ2IgLT4gJ2EgLT4gJ21ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgKiAnYiBtYXBfYlxuXG4gIHZhbCBwcm9qX3NldCA6IChlbHRfYSAtPiBlbHRfYikgLT4gc2V0X2EgLT4gc2V0X2JcblxuICB2YWwgcHJval9zZXRfbW9uYWRpYyA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+IGVsdF9hIC0+ICdtZXRob2RfaGFuZGxlciAqIGVsdF9iKSAtPlxuICAgIHNldF9hIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogc2V0X2JcblxuICB2YWwgcGFydGl0aW9uX3NldCA6IChlbHRfYSAtPiBlbHRfYikgLT4gc2V0X2EgLT4gc2V0X2EgbWFwX2JcblxuICB2YWwgcGFydGl0aW9uX3NldF9tb25hZGljIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgICgncGFyYW1ldGVycyAtPiAnbWV0aG9kX2hhbmRsZXIgLT4gZWx0X2EgLT4gJ21ldGhvZF9oYW5kbGVyICogZWx0X2IpIC0+XG4gICAgc2V0X2EgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgKiBzZXRfYSBtYXBfYlxuZW5kXG5cbm1vZHVsZSBQcm9qIChBIDogUykgKEIgOiBTKSA9IHN0cnVjdFxuICBtb2R1bGUgTUEgPSBBLk1hcFxuICBtb2R1bGUgTUIgPSBCLk1hcFxuICBtb2R1bGUgU0EgPSBBLlNldFxuICBtb2R1bGUgU0IgPSBCLlNldFxuXG4gIHR5cGUgZWx0X2EgPSBNQS5lbHRcbiAgdHlwZSBlbHRfYiA9IE1CLmVsdFxuICB0eXBlIHNldF9hID0gU0EudFxuICB0eXBlIHNldF9iID0gU0IudFxuICB0eXBlICdhIG1hcF9hID0gJ2EgTUEudFxuICB0eXBlICdhIG1hcF9iID0gJ2EgTUIudFxuXG4gIGxldCBwcm9qX21hcCBmIGlkZW50aXR5X2VsdCBtZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIG1hcF9iIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgTUIuYWRkIGtleV9iXG4gICAgICAgICAgKG1lcmdlIChNQi5maW5kX2RlZmF1bHQgaWRlbnRpdHlfZWx0IGtleV9iIG1hcF9iKSBkYXRhX2EpXG4gICAgICAgICAgbWFwX2IpXG4gICAgICBtYXAgTUIuZW1wdHlcblxuICBsZXQgcHJval9tYXBfbW9uYWRpYyBwYXJhbWV0ZXIgaGFuZGxlciBmIGlkZW50aXR5X2VsdCBtb25hZGljX21lcmdlIG1hcCA9XG4gICAgTUEuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBkYXRhX2EgKGhhbmRsZXIsIG1hcF9iKSAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIGxldCBoYW5kbGVyLCBkYXRhJyA9XG4gICAgICAgICAgbW9uYWRpY19tZXJnZSBwYXJhbWV0ZXIgaGFuZGxlclxuICAgICAgICAgICAgKE1CLmZpbmRfZGVmYXVsdCBpZGVudGl0eV9lbHQga2V5X2IgbWFwX2IpXG4gICAgICAgICAgICBkYXRhX2FcbiAgICAgICAgaW5cbiAgICAgICAgaGFuZGxlciwgTUIuYWRkIGtleV9iIGRhdGEnIG1hcF9iKVxuICAgICAgbWFwIChoYW5kbGVyLCBNQi5lbXB0eSlcblxuICBsZXQgcHJval9zZXQgZiBzZXRfYSA9IFNBLmZvbGQgKGZ1biBrZXlfYSAtPiBTQi5hZGQgKGYga2V5X2EpKSBzZXRfYSBTQi5lbXB0eVxuXG4gIGxldCBwcm9qX3NldF9tb25hZGljIHBhcmFtZXRlciBoYW5kbGVyIGYgc2V0X2EgPVxuICAgIFNBLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgKGhhbmRsZXIsIHNldF9iKSAtPlxuICAgICAgICBsZXQgaGFuZGxlciwga2V5X2IgPSBmIHBhcmFtZXRlciBoYW5kbGVyIGtleV9hIGluXG4gICAgICAgIGhhbmRsZXIsIFNCLmFkZCBrZXlfYiBzZXRfYilcbiAgICAgIHNldF9hIChoYW5kbGVyLCBTQi5lbXB0eSlcblxuICBsZXQgcGFydGl0aW9uX3NldCBmIHNldF9hID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIG1hcF9iIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgTUIuYWRkIGtleV9iIChTQS5hZGQga2V5X2EgKE1CLmZpbmRfZGVmYXVsdCBTQS5lbXB0eSBrZXlfYiBtYXBfYikpIG1hcF9iKVxuICAgICAgc2V0X2EgTUIuZW1wdHlcblxuICBsZXQgcGFydGl0aW9uX3NldF9tb25hZGljIHBhcmFtZXRlciBoYW5kbGVyIGYgc2V0X2EgPVxuICAgIFNBLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgKGhhbmRsZXIsIG1hcF9iKSAtPlxuICAgICAgICBsZXQgaGFuZGxlciwga2V5X2IgPSBmIHBhcmFtZXRlciBoYW5kbGVyIGtleV9hIGluXG4gICAgICAgICggaGFuZGxlcixcbiAgICAgICAgICBNQi5hZGQga2V5X2JcbiAgICAgICAgICAgIChTQS5hZGQga2V5X2EgKE1CLmZpbmRfZGVmYXVsdCBTQS5lbXB0eSBrZXlfYiBtYXBfYikpXG4gICAgICAgICAgICBtYXBfYiApKVxuICAgICAgc2V0X2EgKGhhbmRsZXIsIE1CLmVtcHR5KVxuZW5kXG4oKiB0b2RvOiBhZGQgdGhlIGZvbGxvd2luZyAgdGVzdCB0byB0aGUgc2FuaXR5IHRlc3RzICopXG5cbigqXG4oKiBmb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgY29kZTogKilcblxubW9kdWxlIEludE1hcCA9IE1ha2Uoc3RydWN0IHR5cGUgdCA9IGludCBsZXQgY29tcGFyZSA9IGNvbXBhcmUgZW5kKVxubW9kdWxlIFAgPSBQcm9qKEludE1hcCkoSW50TWFwKVxuXG5cbmxldCBmID0gTGlzdC5mb2xkX2xlZnRcbihmdW4gbWFwIChhLGIpIC0+IEludE1hcC5NYXAuYWRkIGEgYiBtYXApXG5JbnRNYXAuTWFwLmVtcHR5XG5bMSxbMjszXTsyLFszOzRdOzUsWzY7N107OCxbMTI7MTNdXVxuXG4oKiBiYWQgaW1wbGVtZW50YXRpb24gKHF1YWRyYXRpYyB0aW1lIGNvbXBsZXhpdHkpICopXG5sZXQgZyA9IFAucHJvaiAoZnVuIGkgLT4gaSBtb2QgMikgW10gKExpc3QuYXBwZW5kKSBmXG5cbigqIGdvb2QgaW1wbGVtZW50YXRpb24gKGxpbmVhciB0aW1lIGNvbXBsZXhpdHkpKilcbmxldCBnJyA9IEludE1hcC5NYXAubWFwIExpc3QucmV2IChQLnByb2ogKGZ1biBpIC0+IGkgbW9kIDIpIFtdIChmdW4geCB5IC0+IExpc3QuYXBwZW5kIChMaXN0LnJldiB5KSB4KSBmKVxuXG5cbmxldCBkdW1wIChzOnN0cmluZykgZiA9XG4gIGxldCBfID0gUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiJXM6IFxcblwiIHMgaW5cbiAgbGV0IF8gPSBJbnRNYXAuTWFwLml0ZXJcbihmdW4gYSBsIC0+XG5sZXQgXyA9IFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIiAgJWk6XCIgYSBpblxubGV0IF8gPSBMaXN0Lml0ZXIgKFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIiVpLFwiKSBsIGluXG5sZXQgXyA9IFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIlxcblwiIGluICgpKVxuZiBpblxuICAoKVxubGV0IF8gPSBkdW1wIFwiZlwiIGZcbmxldCBfID0gZHVtcCBcImdcIiBnXG5sZXQgXyA9IGR1bXAgXCJnJ1wiIGcnXG5cbigqIHNob3VsZCBkdW1wOiAqKVxuKCpcblxuZjpcbiAgMToyLDMsXG4gIDI6Myw0LFxuICA1OjYsNyxcbiAgODoxMiwxMyxcbmc6XG4gIDA6Myw0LDEyLDEzLFxuICAxOjIsMyw2LDcsXG4gKilcbiAqKVxuXG5tb2R1bGUgdHlwZSBQcm9qZWN0aW9uMiA9IHNpZ1xuICB0eXBlIGVsdF9hXG4gIHR5cGUgZWx0X2JcbiAgdHlwZSBlbHRfY1xuICB0eXBlICdhIG1hcF9hXG4gIHR5cGUgJ2EgbWFwX2JcbiAgdHlwZSAnYSBtYXBfY1xuXG4gIHZhbCBwcm9qMiA6XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIChlbHRfYSAtPiBlbHRfYykgLT5cbiAgICAnYiAtPlxuICAgICgnYiAtPiAnYSAtPiAnYikgLT5cbiAgICAnYSBtYXBfYSAtPlxuICAgICdiIG1hcF9jIG1hcF9iXG5cbiAgdmFsIHByb2oyX21vbmFkaWMgOlxuICAgICdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIChlbHRfYSAtPiBlbHRfYykgLT5cbiAgICAnYiAtPlxuICAgICgncGFyYW1ldGVycyAtPiAnbWV0aG9kX2hhbmRsZXIgLT4gJ2IgLT4gJ2EgLT4gJ21ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgKiAnYiBtYXBfYyBtYXBfYlxuZW5kXG5cbm1vZHVsZSBQcm9qMiAoQSA6IFMpIChCIDogUykgKEMgOiBTKSA9IHN0cnVjdFxuICBtb2R1bGUgTUEgPSBBLk1hcFxuICBtb2R1bGUgTUIgPSBCLk1hcFxuICBtb2R1bGUgTUMgPSBDLk1hcFxuXG4gIHR5cGUgZWx0X2EgPSBNQS5lbHRcbiAgdHlwZSBlbHRfYiA9IE1CLmVsdFxuICB0eXBlIGVsdF9jID0gTUMuZWx0XG4gIHR5cGUgJ2EgbWFwX2EgPSAnYSBNQS50XG4gIHR5cGUgJ2EgbWFwX2IgPSAnYSBNQi50XG4gIHR5cGUgJ2EgbWFwX2MgPSAnYSBNQy50XG5cbiAgbGV0IHByb2oyIGYgZyBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSBtYXBfYiAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIGxldCBrZXlfYyA9IGcga2V5X2EgaW5cbiAgICAgICAgbGV0IHN1Ym1hcCA9IE1CLmZpbmRfZGVmYXVsdCBNQy5lbXB0eSBrZXlfYiBtYXBfYiBpblxuICAgICAgICBsZXQgc3VibWFwID1cbiAgICAgICAgICBNQy5hZGQga2V5X2NcbiAgICAgICAgICAgIChtZXJnZSAoTUMuZmluZF9kZWZhdWx0IGlkZW50aXR5X2VsdCBrZXlfYyBzdWJtYXApIGRhdGFfYSlcbiAgICAgICAgICAgIHN1Ym1hcFxuICAgICAgICBpblxuICAgICAgICBNQi5hZGQga2V5X2Igc3VibWFwIG1hcF9iKVxuICAgICAgbWFwIE1CLmVtcHR5XG5cbiAgbGV0IHByb2oyX21vbmFkaWMgcGFyYW1ldGVyIGhhbmRsZXIgZiBnIGlkZW50aXR5X2VsdCBtZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIChoYW5kbGVyLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBsZXQga2V5X2MgPSBnIGtleV9hIGluXG4gICAgICAgIGxldCBzdWJtYXAgPSBNQi5maW5kX2RlZmF1bHQgTUMuZW1wdHkga2V5X2IgbWFwX2IgaW5cbiAgICAgICAgbGV0IGhhbmRsZXIsIGRhdGEnID1cbiAgICAgICAgICBtZXJnZSBwYXJhbWV0ZXIgaGFuZGxlclxuICAgICAgICAgICAgKE1DLmZpbmRfZGVmYXVsdCBpZGVudGl0eV9lbHQga2V5X2Mgc3VibWFwKVxuICAgICAgICAgICAgZGF0YV9hXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzdWJtYXAgPSBNQy5hZGQga2V5X2MgZGF0YScgc3VibWFwIGluXG4gICAgICAgIGhhbmRsZXIsIE1CLmFkZCBrZXlfYiBzdWJtYXAgbWFwX2IpXG4gICAgICBtYXAgKGhhbmRsZXIsIE1CLmVtcHR5KVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgaW50X2NvbXBhcmUgKHggOiBpbnQpIHkgPSBTdGRsaWIuY29tcGFyZSB4IHlcblxubGV0IGludF9wYWlyX2NvbXBhcmUgKHAsIHEpIChwJywgcScpID1cbiAgbGV0IG8gPSBpbnRfY29tcGFyZSBwIHAnIGluXG4gIGlmIG8gPSAwIHRoZW5cbiAgICBpbnRfY29tcGFyZSBxIHEnXG4gIGVsc2VcbiAgICBvXG5cbmxldCBzdHJpbmdfcGFpcl9jb21wYXJlIChwLCBxKSAocCcsIHEnKSA9XG4gIGxldCBvID0gU3RyaW5nLmNvbXBhcmUgcCBwJyBpblxuICBpZiBvID0gMCB0aGVuXG4gICAgU3RyaW5nLmNvbXBhcmUgcSBxJ1xuICBlbHNlXG4gICAgb1xuXG5sZXQgcGFpcl9lcXVhbCBlcWEgZXFiICh4YSwgeGIpICh5YSwgeWIpID0gZXFhIHhhIHlhICYmIGVxYiB4YiB5YlxuXG5tb2R1bGUgU3RyaW5nU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmdcblxuICBsZXQgY29tcGFyZSA9IFN0cmluZy5jb21wYXJlXG4gIGxldCBwcmludCA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmdcbmVuZClcblxubW9kdWxlIFN0cmluZ1NldCA9IFN0cmluZ1NldE1hcC5TZXRcbm1vZHVsZSBTdHJpbmdNYXAgPSBTdHJpbmdTZXRNYXAuTWFwXG5cbm1vZHVsZSBTdHJpbmcyU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgKiBzdHJpbmdcblxuICBsZXQgY29tcGFyZSA9IHN0cmluZ19wYWlyX2NvbXBhcmVcbiAgbGV0IHByaW50IGYgKGEsIGIpID0gRm9ybWF0LmZwcmludGYgZiBcIiglcywgJXMpXCIgYSBiXG5lbmQpXG5cbm1vZHVsZSBTdHJpbmcyTWFwID0gU3RyaW5nMlNldE1hcC5NYXBcblxubW9kdWxlIEludFNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IGNvbXBhcmUgPSBpbnRfY29tcGFyZVxuICBsZXQgcHJpbnQgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5lbmQpXG5cbm1vZHVsZSBJbnRTZXQgPSBJbnRTZXRNYXAuU2V0XG5tb2R1bGUgSW50TWFwID0gSW50U2V0TWFwLk1hcFxuXG5tb2R1bGUgSW50MlNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50ICogaW50XG5cbiAgbGV0IGNvbXBhcmUgPSBpbnRfcGFpcl9jb21wYXJlXG4gIGxldCBwcmludCBmIChhLCBiKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIoJWksICVpKVwiIGEgYlxuZW5kKVxuXG5tb2R1bGUgSW50MlNldCA9IEludDJTZXRNYXAuU2V0XG5tb2R1bGUgSW50Mk1hcCA9IEludDJTZXRNYXAuTWFwXG5cbm1vZHVsZSBDaGFyU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBjaGFyXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBwcmludCA9IEZvcm1hdC5wcF9wcmludF9jaGFyXG5lbmQpXG5cbm1vZHVsZSBDaGFyU2V0ID0gQ2hhclNldE1hcC5TZXRcbm1vZHVsZSBDaGFyTWFwID0gQ2hhclNldE1hcC5NYXBcbm1vZHVsZSBEeW5BcnJheSA9IER5bmFtaWNBcnJheS5EeW5BcnJheSAoTGFyZ2VBcnJheSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCB1bnNvbWUgZGVmYXVsdCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBkZWZhdWx0XG4gIHwgU29tZSBhIC0+IGFcblxubGV0IHVuc29tZV9vcl9yYWlzZVxuICAgID8oZXhjZXAgPSBJbnZhbGlkX2FyZ3VtZW50IFwidW5zb21lX29yX3JhaXNlIHdhcyBwYXNzZWQgYSBOb25lXCIpID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IHJhaXNlIGV4Y2VwXG4gIHwgU29tZSBhIC0+IGFcblxubGV0IG1hcCBmID0gZnVuY3Rpb25cbiAgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuICB8IE5vbmUgLT4gTm9uZVxuXG5sZXQgYmluZCBmID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIG8gLT4gZiBvXG5cbmxldCBmb2xkIGYgeCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiB4XG4gIHwgU29tZSB5IC0+IGYgeCB5XG5cbmxldCBlcXVhbCBlcSBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgfCBTb21lIF8sIE5vbmUgfCBOb25lLCBTb21lIF8gLT4gZmFsc2VcbiAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcSB4IHlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgcG9zaXRpb24gPSB7IGNocjogaW50OyBsaW5lOiBpbnQgfVxudHlwZSB0ID0geyBmaWxlOiBzdHJpbmc7IGZyb21fcG9zaXRpb246IHBvc2l0aW9uOyB0b19wb3NpdGlvbjogcG9zaXRpb24gfVxudHlwZSAnYSBhbm5vdGVkID0gJ2EgKiB0XG5cbmxldCB2ICh2LCBfKSA9IHZcbmxldCBnZXRfYW5ub3QgKF8sIGFubm90KSA9IGFubm90XG5sZXQgY29weV9hbm5vdCAoXywgbG9jKSBhID0gYSwgbG9jXG5sZXQgbWFwX2Fubm90IGYgKGEsIGxvYykgPSBmIGEsIGxvY1xuXG5sZXQgb2ZfcG9zIHN0YXJ0X2xvY2F0aW9uIGVuZF9sb2NhdGlvbiA9XG4gIGxldCAoKSA9XG4gICAgYXNzZXJ0IChzdGFydF9sb2NhdGlvbi5MZXhpbmcucG9zX2ZuYW1lID0gZW5kX2xvY2F0aW9uLkxleGluZy5wb3NfZm5hbWUpXG4gIGluXG4gIHtcbiAgICBmaWxlID0gc3RhcnRfbG9jYXRpb24uTGV4aW5nLnBvc19mbmFtZTtcbiAgICBmcm9tX3Bvc2l0aW9uID1cbiAgICAgIHtcbiAgICAgICAgY2hyID0gc3RhcnRfbG9jYXRpb24uTGV4aW5nLnBvc19jbnVtIC0gc3RhcnRfbG9jYXRpb24uTGV4aW5nLnBvc19ib2w7XG4gICAgICAgIGxpbmUgPSBzdGFydF9sb2NhdGlvbi5MZXhpbmcucG9zX2xudW07XG4gICAgICB9O1xuICAgIHRvX3Bvc2l0aW9uID1cbiAgICAgIHtcbiAgICAgICAgY2hyID0gZW5kX2xvY2F0aW9uLkxleGluZy5wb3NfY251bSAtIGVuZF9sb2NhdGlvbi5MZXhpbmcucG9zX2JvbDtcbiAgICAgICAgbGluZSA9IGVuZF9sb2NhdGlvbi5MZXhpbmcucG9zX2xudW07XG4gICAgICB9O1xuICB9XG5cbmxldCBkdW1teV9wb3NpdGlvbiA9XG4gIHtcbiAgICBjaHIgPSBMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfY251bSAtIExleGluZy5kdW1teV9wb3MuTGV4aW5nLnBvc19ib2w7XG4gICAgbGluZSA9IExleGluZy5kdW1teV9wb3MuTGV4aW5nLnBvc19sbnVtO1xuICB9XG5cbmxldCBkdW1teSA9XG4gIHtcbiAgICBmaWxlID0gTGV4aW5nLmR1bW15X3Bvcy5MZXhpbmcucG9zX2ZuYW1lO1xuICAgIGZyb21fcG9zaXRpb24gPSBkdW1teV9wb3NpdGlvbjtcbiAgICB0b19wb3NpdGlvbiA9IGR1bW15X3Bvc2l0aW9uO1xuICB9XG5cbmxldCBhbm5vdF93aXRoX2R1bW15IHggPSB4LCBkdW1teVxuXG5sZXQgaXNfZHVtbXkgbG9jID1cbiAgbG9jLmZpbGUgPSBMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfZm5hbWVcbiAgJiYgbG9jLmZyb21fcG9zaXRpb24gPSBkdW1teV9wb3NpdGlvblxuICAmJiBsb2MudG9fcG9zaXRpb24gPSBkdW1teV9wb3NpdGlvblxuXG5sZXQgaXNfYW5ub3RlZF93aXRoX2R1bW15IChfLCBsb2MpID0gaXNfZHVtbXkgbG9jXG5cbmxldCBwcmludCBmIGxvYyA9XG4gIGxldCBwcl9mIGYgPVxuICAgIGlmIGxvYy5maWxlIDw+IFwiXCIgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiRmlsZSBcXFwiJXNcXFwiLCBcIiBsb2MuZmlsZVxuICBpblxuICBsZXQgcHJfbCBmID1cbiAgICBpZiBsb2MuZnJvbV9wb3NpdGlvbi5saW5lID0gbG9jLnRvX3Bvc2l0aW9uLmxpbmUgdGhlblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcImxpbmUgJWlcIiBsb2MuZnJvbV9wb3NpdGlvbi5saW5lXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcImxpbmVzICVpLSVpXCIgbG9jLmZyb21fcG9zaXRpb24ubGluZSBsb2MudG9fcG9zaXRpb24ubGluZVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiJXQldCwgY2hhcmFjdGVycyAlaS0laTpcIiBwcl9mIHByX2wgbG9jLmZyb21fcG9zaXRpb24uY2hyXG4gICAgbG9jLnRvX3Bvc2l0aW9uLmNoclxuXG5sZXQgdG9fc3RyaW5nIGxvYyA9IEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50IGxvY1xubGV0IHByaW50X2Fubm90ZWQgcHIgZiAoeCwgbCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiJWFAICVhXCIgcHJpbnQgbCBwciB4XG5cbmxldCByZWFkX3Bvc2l0aW9uIHAgbGIgPVxuICBtYXRjaCBZb2pzb24uQmFzaWMuZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHAgbGIgd2l0aFxuICB8IGBBc3NvYyBbIChcImxpbmVcIiwgYEludCBsaW5lKTsgKFwiY2hyXCIsIGBJbnQgY2hyKSBdXG4gIHwgYEFzc29jIFsgKFwiY2hyXCIsIGBJbnQgY2hyKTsgKFwibGluZVwiLCBgSW50IGxpbmUpIF0gLT5cbiAgICB7IGxpbmU7IGNociB9XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHBvc2l0aW9uXCIsIHgpKVxuXG5sZXQgd3JpdGVfcG9zaXRpb24gb2IgeyBsaW5lOyBjaHIgfSA9XG4gIFlvanNvbi53cml0ZV9hc3NvYyBvYiBbIFwibGluZVwiLCBgSW50IGxpbmU7IFwiY2hyXCIsIGBJbnQgY2hyIF1cblxubGV0IHRvX2NvbXBhY3RfeW9qc29uIGRlY2xzIGxvYyA9XG4gIGlmIGlzX2R1bW15IGxvYyB0aGVuXG4gICAgYE51bGxcbiAgZWxzZVxuICAgIGBBc3NvY1xuICAgICAgKChpZiBsb2MuZnJvbV9wb3NpdGlvbi5saW5lIDw+IGxvYy50b19wb3NpdGlvbi5saW5lIHRoZW5cbiAgICAgICAgICBmdW4gbCAtPlxuICAgICAgICAoXCJlbGluZVwiLCBgSW50IGxvYy50b19wb3NpdGlvbi5saW5lKSA6OiBsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmdW4gbCAtPlxuICAgICAgICBsKVxuICAgICAgICAgW1xuICAgICAgICAgICAoIFwiZmlsZVwiLFxuICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICBPcHRpb25fdXRpbC5iaW5kIChNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBsb2MuZmlsZSkgZGVjbHNcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIGkgLT4gYEludCBpXG4gICAgICAgICAgICAgfCBOb25lIC0+IGBTdHJpbmcgbG9jLmZpbGUgKTtcbiAgICAgICAgICAgXCJibGluZVwiLCBgSW50IGxvYy5mcm9tX3Bvc2l0aW9uLmxpbmU7XG4gICAgICAgICAgIFwiYmNoclwiLCBgSW50IGxvYy5mcm9tX3Bvc2l0aW9uLmNocjtcbiAgICAgICAgICAgXCJlY2hyXCIsIGBJbnQgbG9jLnRvX3Bvc2l0aW9uLmNocjtcbiAgICAgICAgIF0pXG5cbmxldCBvZl9jb21wYWN0X3lvanNvbiA/KGZpbGVuYW1lcyA9IFt8fF0pID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBkdW1teVxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsIDw9IDUgLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGZpbGUgPVxuICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBcImZpbGVcIiBsIHdpdGhcbiAgICAgICAgIHwgYFN0cmluZyB4IC0+IHhcbiAgICAgICAgIHwgYEludCBpIC0+IGZpbGVuYW1lcy4oaSlcbiAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGxvY2F0aW9uXCIsIHgpKVxuICAgICAgIGluXG4gICAgICAgbGV0IG9mX2xpbmUgPVxuICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBcImJsaW5lXCIgbCB3aXRoXG4gICAgICAgICB8IGBJbnQgaSAtPiBpXG4gICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBsb2NhdGlvblwiLCB4KSlcbiAgICAgICBpblxuICAgICAgIGxldCBvZl9jaHIgPVxuICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBcImJjaHJcIiBsIHdpdGhcbiAgICAgICAgIHwgYEludCBpIC0+IGlcbiAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGxvY2F0aW9uXCIsIHgpKVxuICAgICAgIGluXG4gICAgICAgbGV0IHRvX2NociA9XG4gICAgICAgICBtYXRjaCBMaXN0LmFzc29jIFwiZWNoclwiIGwgd2l0aFxuICAgICAgICAgfCBgSW50IGkgLT4gaVxuICAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbG9jYXRpb25cIiwgeCkpXG4gICAgICAgaW5cbiAgICAgICBsZXQgdG9fbGluZSA9XG4gICAgICAgICBtYXRjaCBZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJlbGluZVwiIHggd2l0aFxuICAgICAgICAgfCBgTnVsbCAtPiBvZl9saW5lXG4gICAgICAgICB8IGBJbnQgaSAtPiBpXG4gICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBsb2NhdGlvblwiLCB4KSlcbiAgICAgICBpblxuICAgICAgIHtcbiAgICAgICAgIGZpbGU7XG4gICAgICAgICBmcm9tX3Bvc2l0aW9uID0geyBsaW5lID0gb2ZfbGluZTsgY2hyID0gb2ZfY2hyIH07XG4gICAgICAgICB0b19wb3NpdGlvbiA9IHsgbGluZSA9IHRvX2xpbmU7IGNociA9IHRvX2NociB9O1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUIGFycm93X25vdGF0aW9uXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbG9jYXRpb25cIiwgeCkpXG5cbmxldCB5b2pzb25fb2ZfYW5ub3RlZCA/ZmlsZW5hbWVzIGYgKHgsIGwpID1cbiAgbGV0IGpwID0gdG9fY29tcGFjdF95b2pzb24gZmlsZW5hbWVzIGwgaW5cbiAgaWYganAgPSBgTnVsbCB0aGVuXG4gICAgYEFzc29jIFsgXCJ2YWxcIiwgZiB4IF1cbiAgZWxzZVxuICAgIGBBc3NvYyBbIFwidmFsXCIsIGYgeDsgXCJsb2NcIiwganAgXVxuXG5sZXQgYW5ub3RlZF9vZl95b2pzb24gP2ZpbGVuYW1lcyBmID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAoXCJ2YWxcIiwgeCk7IChcImxvY1wiLCBsKSBdIHwgYEFzc29jIFsgKFwibG9jXCIsIGwpOyAoXCJ2YWxcIiwgeCkgXSAtPlxuICAgIGYgeCwgb2ZfY29tcGFjdF95b2pzb24gP2ZpbGVuYW1lcyBsXG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIHgpIF0gLT4gZiB4LCBkdW1teVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBsb2NhdGlvblwiLCB4KSlcblxubGV0IHdyaXRlX3JhbmdlIG9iIGYgPSBZb2pzb24uQmFzaWMudG9fYnVmZmVyIG9iICh0b19jb21wYWN0X3lvanNvbiBOb25lIGYpXG5cbmxldCBzdHJpbmdfb2ZfcmFuZ2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcmFuZ2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCByZWFkX3JhbmdlIHAgbGIgPVxuICBvZl9jb21wYWN0X3lvanNvbiA/ZmlsZW5hbWVzOk5vbmUgKFlvanNvbi5CYXNpYy5mcm9tX2xleGJ1ZiB+c3RyZWFtOnRydWUgcCBsYilcblxubGV0IHJhbmdlX29mX3N0cmluZyBzID1cbiAgcmVhZF9yYW5nZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG5sZXQgaXNfaW5jbHVkZWRfaW4gZmlsZSB7IGxpbmU7IGNociB9IHJhbmdlID1cbiAgZmlsZSA9IHJhbmdlLmZpbGVcbiAgJiYgbGluZSA+PSByYW5nZS5mcm9tX3Bvc2l0aW9uLmxpbmVcbiAgJiYgbGluZSA8PSByYW5nZS50b19wb3NpdGlvbi5saW5lXG4gICYmIChsaW5lIDw+IHJhbmdlLmZyb21fcG9zaXRpb24ubGluZSB8fCBjaHIgPj0gcmFuZ2UuZnJvbV9wb3NpdGlvbi5jaHIpXG4gICYmIChsaW5lIDw+IHJhbmdlLnRvX3Bvc2l0aW9uLmxpbmUgfHwgY2hyIDw9IHJhbmdlLnRvX3Bvc2l0aW9uLmNocilcblxubGV0IG1lcmdlIGIgZSA9XG4gIGxldCAoKSA9IGFzc2VydCAoYi5maWxlID0gZS5maWxlKSBpblxuICB7XG4gICAgZmlsZSA9IGIuZmlsZTtcbiAgICBmcm9tX3Bvc2l0aW9uID0gYi5mcm9tX3Bvc2l0aW9uO1xuICAgIHRvX3Bvc2l0aW9uID0gZS50b19wb3NpdGlvbjtcbiAgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBGb3JtYXRcblxubGV0IGxpc3RpID8odHJhaWxpbmcgPSBmdW4gXyAtPiAoKSkgcHJfc2VwIHByX2VsIGYgbCA9XG4gIGxldCByZWMgYXV4IGFjYyBmID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCBbIGVsIF0gLT5cbiAgICAgIGxldCAoKSA9IHByX2VsIGFjYyBmIGVsIGluXG4gICAgICB0cmFpbGluZyBmXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCAoKSA9IHByX2VsIGFjYyBmIGggaW5cbiAgICAgIGxldCAoKSA9IHByX3NlcCBmIGluXG4gICAgICBhdXggKHN1Y2MgYWNjKSBmIHRcbiAgaW5cbiAgYXV4IDAgZiBsXG5cbmxldCBsaXN0ID90cmFpbGluZyBwcl9zZXAgcHJfZWwgZiBsID1cbiAgbGlzdGkgP3RyYWlsaW5nIHByX3NlcCAoZnVuIF8gZiB4IC0+IHByX2VsIGYgeCkgZiBsXG5cbmxldCBzZXQgP3RyYWlsaW5nIGVsZW1lbnRzIHByX3NlcCBwcl9lbCBmIHNldCA9XG4gIGxpc3QgP3RyYWlsaW5nIHByX3NlcCBwcl9lbCBmIChlbGVtZW50cyBzZXQpXG5cbmxldCBoYXNodGJsIHByX3NlcCBwcl9lbCBmIHRibCA9XG4gIGxpc3QgcHJfc2VwIHByX2VsIGYgKEhhc2h0YmwuZm9sZCAoZnVuIGEgYiBsIC0+IChhLCBiKSA6OiBsKSB0YmwgW10pXG5cbmxldCBib3R0b20gZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlxceEUyXFx4OEFcXHhBNVwiXG5sZXQgbnUgZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlxceENFXFx4QkRcIlxubGV0IGVtcHR5X3NldCBmID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiXFx4RTJcXHg4OFxceDg1XCJcbmxldCBjb21tYSBmID0gZnByaW50ZiBmIFwiLEAgXCJcbmxldCBkb3QgZiA9IGZwcmludGYgZiBcIi5cIlxubGV0IGNvbXBhY3RfY29tbWEgZiA9IGZwcmludGYgZiBcIixALFwiXG5sZXQgY29sb24gZiA9IGZwcmludGYgZiBcIjtAIFwiXG5sZXQgc3BhY2UgZiA9IHBwX3ByaW50X3NwYWNlIGYgKClcbmxldCBjdXQgZiA9IHBwX3ByaW50X2N1dCBmICgpXG5sZXQgZW1wdHkgXyA9ICgpXG5sZXQgdW5pdCBfICgpID0gKClcbmxldCBwYWlyIHBwYSBwcGIgZiAoYSwgYikgPSBmcHJpbnRmIGYgXCIoJWEsICVhKVwiIHBwYSBhIHBwYiBiXG5cbmxldCBvcHRpb24gPyh3aXRoX3NwYWNlID0gdHJ1ZSkgcHIgZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeCAtPlxuICAgIGZwcmludGYgZiBcIiV0JWFcIlxuICAgICAgKGZ1biBmIC0+XG4gICAgICAgIGlmIHdpdGhfc3BhY2UgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zcGFjZSBmICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoKSlcbiAgICAgIHByIHhcblxubGV0IGFycmF5ID8odHJhaWxpbmcgPSBmdW4gXyAtPiAoKSkgcHJfc2VwIHByX2VsIGYgYSA9XG4gIGxldCByZWMgYXV4IGkgZiA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhIHRoZW4gKFxuICAgICAgbGV0ICgpID0gcHJfZWwgaSBmIGEuKGkpIGluXG4gICAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIGEgLSAxIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBwcl9zZXAgZiBpblxuICAgICAgICBhdXggKHN1Y2MgaSkgZlxuICAgICAgKSBlbHNlIGlmIGkgPiAwIHRoZW5cbiAgICAgICAgdHJhaWxpbmcgZlxuICAgIClcbiAgaW5cbiAgYXV4IDAgZlxuXG5sZXQgcGxhaW5fYXJyYXkgcHJfZWwgZiBhID1cbiAgbGV0IHJlYyBhdXggaSBmID1cbiAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIGEgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiJWk6JWFcIiBpIHByX2VsIGEuKGkpIGluXG4gICAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIGEgLSAxIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIjtALCV0XCIgKGF1eCAoc3VjYyBpKSlcbiAgICApXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJbfCV0fF1cIiAoYXV4IDApXG5cbmxldCBlcnJvciBwciB4ID0gZXByaW50ZiBcIiVhQC5cIiAoTG9jLnByaW50X2Fubm90ZWQgcHIpIHhcblxubGV0IGxpc3RfdG9fc3RyaW5nIHByX3NlcCBwcl9lbCAoKSBsID1cbiAgbGV0IHJlYyBhdXggKCkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gXCJcIlxuICAgIHwgWyBlbCBdIC0+IHByX2VsICgpIGVsXG4gICAgfCBoIDo6IHQgLT4gc3ByaW50ZiBcIiVhJXQlYVwiIHByX2VsIGggcHJfc2VwIGF1eCB0XG4gIGluXG4gIGF1eCAoKSBsXG5cbmxldCBzZXRfdG9fc3RyaW5nIGVsZW1lbnRzIHByX3NlcCBwcl9lbCAoKSBzZXQgPVxuICBsaXN0X3RvX3N0cmluZyBwcl9zZXAgcHJfZWwgKCkgKGVsZW1lbnRzIHNldClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUga2V5ID0gaW50XG50eXBlIHQgPSBFbXB0eSB8IE5vZGUgb2YgdCAqIGtleSAqIHQgKiBpbnQgKiBJbnQ2NC50XG4oKk5vZGUobGVmdCxrZXkscmlnaHQsaGVpZ2h0LGFjYykqKVxuXG5sZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwXG4gIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuXG5sZXQgYWNjdmFsID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwTFxuICB8IE5vZGUgKF8sIF8sIF8sIF8sIGFjYykgLT4gYWNjXG5cbmxldCB0b3RhbCA9IGFjY3ZhbFxuXG5sZXQgd2VpZ2h0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwTFxuICB8IE5vZGUgKGwsIF8sIHIsIF8sIGFjYykgLT4gSW50NjQuc3ViIChJbnQ2NC5zdWIgYWNjIChhY2N2YWwgbCkpIChhY2N2YWwgcilcblxubGV0IHJlYyBwcmludCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBQcC5lbXB0eV9zZXQgZlxuICB8IE5vZGUgKGwsIGssIHIsIF8sIGFjYykgYXMgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxob3YgMj48JWQsJUxpKCVMaSk+QCxbJWFALHwlYUAsXVwiIGsgYWNjICh3ZWlnaHQgeClcbiAgICAgIHByaW50IGwgcHJpbnQgclxuXG5sZXQgY3JlYXRlIGwga2V5IGFjYyByID1cbiAgbGV0IGhsID0gaGVpZ2h0IGwgaW5cbiAgbGV0IGhyID0gaGVpZ2h0IHIgaW5cbiAgTm9kZSAobCwga2V5LCByLCBzdWNjIChtaW4gaGwgaHIpLCBhY2MpXG5cbmxldCBiYWwgbCB4IHcgciA9XG4gIGxldCBobCA9IGhlaWdodCBsIGluXG4gIGxldCBociA9IGhlaWdodCByIGluXG4gIGlmIGhsID4gaHIgKyAyIHRoZW4gKFxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJWYWxfbWFwLmJhbFwiXG4gICAgfCBOb2RlIChsbCwgbHYsIGxyLCBfLCBhY2NfbCkgLT5cbiAgICAgIGxldCBhY2NfciA9IGFjY3ZhbCByIGluXG4gICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgY3JlYXRlIGxsIGx2XG4gICAgICAgICAgKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIGFjY19yKVxuICAgICAgICAgIChjcmVhdGUgbHIgeCAoSW50NjQuYWRkIChJbnQ2NC5hZGQgdyAoYWNjdmFsIGxyKSkgYWNjX3IpIHIpXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiVmFsX21hcC5iYWxcIlxuICAgICAgICB8IE5vZGUgKGxybCwgbHJ2LCBscnIsIF8sIF8pIC0+XG4gICAgICAgICAgbGV0IGFjY19scnIgPSBhY2N2YWwgbHJyIGluXG4gICAgICAgICAgY3JlYXRlXG4gICAgICAgICAgICAoY3JlYXRlIGxsIGx2IChJbnQ2NC5zdWIgYWNjX2wgYWNjX2xycikgbHJsKVxuICAgICAgICAgICAgbHJ2XG4gICAgICAgICAgICAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2wgdykgYWNjX3IpXG4gICAgICAgICAgICAoY3JlYXRlIGxyciB4IChJbnQ2NC5hZGQgKEludDY0LmFkZCBhY2NfbHJyIHcpIGFjY19yKSByKVxuICAgICAgKVxuICApIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiAoXG4gICAgbWF0Y2ggciB3aXRoXG4gICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlZhbF9tYXAuYmFsXCJcbiAgICB8IE5vZGUgKHJsLCBydiwgcnIsIF8sIGFjY19yKSAtPlxuICAgICAgbGV0IGFjY19sID0gYWNjdmFsIGwgaW5cbiAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICBjcmVhdGVcbiAgICAgICAgICAoY3JlYXRlIGwgeCAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2wgdykgKGFjY3ZhbCBybCkpIHJsKVxuICAgICAgICAgIHJ2XG4gICAgICAgICAgKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIGFjY19yKVxuICAgICAgICAgIHJyXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiVmFsX21hcC5iYWxcIlxuICAgICAgICB8IE5vZGUgKHJsbCwgcmx2LCBybHIsIF8sIF8pIC0+XG4gICAgICAgICAgbGV0IGFjY19ybGwgPSBhY2N2YWwgcmxsIGluXG4gICAgICAgICAgY3JlYXRlXG4gICAgICAgICAgICAoY3JlYXRlIGwgeCAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2wgdykgYWNjX3JsbCkgcmxsKVxuICAgICAgICAgICAgcmx2XG4gICAgICAgICAgICAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2wgdykgYWNjX3IpXG4gICAgICAgICAgICAoY3JlYXRlIHJsciBydiAoSW50NjQuc3ViIGFjY19yIGFjY19ybGwpIHJyKVxuICAgICAgKVxuICApIGVsc2UgKFxuICAgIGxldCBhY2NfbCA9IGFjY3ZhbCBsIGluXG4gICAgbGV0IGFjY19yID0gYWNjdmFsIHIgaW5cbiAgICBjcmVhdGUgbCB4IChJbnQ2NC5hZGQgKEludDY0LmFkZCBhY2NfbCB3KSBhY2NfcikgclxuICApXG5cbmxldCBlbXB0eSA9IEVtcHR5XG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gdHJ1ZVxuICB8IE5vZGUgXyAtPiBmYWxzZVxuXG5sZXQgcmVjIGFkZCBrZXkgd2VpZ2h0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb2RlIChFbXB0eSwga2V5LCBFbXB0eSwgMSwgSW50NjQub2ZfaW50IHdlaWdodClcbiAgfCBOb2RlIChsLCBrZXknLCByLCBoLCBhY2MpIC0+XG4gICAgaWYga2V5ID0ga2V5JyB0aGVuXG4gICAgICBOb2RlXG4gICAgICAgICggbCxcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgcixcbiAgICAgICAgICBoLFxuICAgICAgICAgIEludDY0LmFkZCAoSW50NjQuYWRkIChJbnQ2NC5vZl9pbnQgd2VpZ2h0KSAoYWNjdmFsIGwpKSAoYWNjdmFsIHIpIClcbiAgICBlbHNlIChcbiAgICAgIGxldCB3ZWlnaHQnID0gSW50NjQuc3ViIChJbnQ2NC5zdWIgYWNjIChhY2N2YWwgbCkpIChhY2N2YWwgcikgaW5cbiAgICAgIGlmIGtleSA8IGtleScgdGhlblxuICAgICAgICBiYWwgKGFkZCBrZXkgd2VpZ2h0IGwpIGtleScgd2VpZ2h0JyByXG4gICAgICBlbHNlXG4gICAgICAgIGJhbCBsIGtleScgd2VpZ2h0JyAoYWRkIGtleSB3ZWlnaHQgcilcbiAgICApXG5cbmxldCByZWMgZmluZF9hY2MgYWltX2FjYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTm9kZSAobCwga2V5LCByLCBfLCBhY2MpIC0+XG4gICAgaWYgYWltX2FjYyA+PSBhY2MgdGhlblxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYWNjX2wgPSBhY2N2YWwgbCBpblxuICAgICAgbGV0IGFjY19yID0gYWNjdmFsIHIgaW5cbiAgICAgIGlmIGFjY19sID4gYWltX2FjYyB0aGVuXG4gICAgICAgIGZpbmRfYWNjIGFpbV9hY2MgbFxuICAgICAgZWxzZSBpZiBJbnQ2NC5hZGQgYWNjX3IgYWNjX2wgPiBhaW1fYWNjIHRoZW5cbiAgICAgICAgZmluZF9hY2MgKEludDY0LnN1YiBhaW1fYWNjIGFjY19sKSByXG4gICAgICBlbHNlXG4gICAgICAgIGtleVxuICAgIClcblxubGV0IHJlYyBtZW0ga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBmYWxzZVxuICB8IE5vZGUgKGwsIGtleScsIHIsIF8sIF8pIC0+XG4gICAgbGV0IGMgPSBNb2RzLmludF9jb21wYXJlIGtleSBrZXknIGluXG4gICAgYyA9IDBcbiAgICB8fCBtZW0ga2V5XG4gICAgICAgICAoaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHIpXG5cbmxldCByZWMgbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IE5vZGUgKEVtcHR5LCB4LCByLCBfLCBhY2MpIC0+IHgsIEludDY0LnN1YiBhY2MgKGFjY3ZhbCByKVxuICB8IE5vZGUgKGwsIF8sIF8sIF8sIF8pIC0+IG1pbl9iaW5kaW5nIGxcblxubGV0IHJlYyByZW1vdmVfbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiVmFsX21hcC5yZW1vdmVfbWluX2VsdFwiXG4gIHwgTm9kZSAoRW1wdHksIF8sIHIsIF8sIF8pIC0+IHJcbiAgfCBOb2RlIChsLCB4LCByLCBfLCBhY2MpIC0+XG4gICAgbGV0IHdlaWdodCA9IEludDY0LnN1YiAoSW50NjQuc3ViIGFjYyAoYWNjdmFsIGwpKSAoYWNjdmFsIHIpIGluXG4gICAgYmFsIChyZW1vdmVfbWluX2JpbmRpbmcgbCkgeCB3ZWlnaHQgclxuXG5sZXQgbWVyZ2UgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IEVtcHR5LCB0IC0+IHRcbiAgfCB0LCBFbXB0eSAtPiB0XG4gIHwgTm9kZSBfLCBOb2RlIF8gLT5cbiAgICBsZXQgeCwgdyA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgYmFsIHQxIHggdyAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG5sZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IE5vZGUgKGwsIHYsIHIsIF8sIGFjYykgLT5cbiAgICBsZXQgYyA9IGNvbXBhcmUgeCB2IGluXG4gICAgaWYgYyA9IDAgdGhlblxuICAgICAgbWVyZ2UgbCByXG4gICAgZWxzZSAoXG4gICAgICBsZXQgd2VpZ2h0ID0gSW50NjQuc3ViIChJbnQ2NC5zdWIgYWNjIChhY2N2YWwgbCkpIChhY2N2YWwgcikgaW5cbiAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgYmFsIChyZW1vdmUgeCBsKSB2IHdlaWdodCByXG4gICAgICBlbHNlXG4gICAgICAgIGJhbCBsIHYgd2VpZ2h0IChyZW1vdmUgeCByKVxuICAgIClcbigqXG5sZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBOb2RlKGwsIHYsIHIsIF8sXykgYXMgeCAtPiBpdGVyIGYgbDsgZiB2ICh3ZWlnaHQgeCk7IGl0ZXIgZiByXG5cbmxldCByZWMgZm9sZCBmIG0gYWNjdSA9XG4gIG1hdGNoIG0gd2l0aFxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBOb2RlKGwsIHYsIHIsIF8sXykgYXMgeCAtPiBmb2xkIGYgciAoZiB2ICh3ZWlnaHQgeCkgKGZvbGQgZiBsIGFjY3UpKVxuKilcblxuKCoqUmV0dXJucyAoa2V5LHZhbHVlKSBhdCByYW5kb20gaW4gdGhlIHRyZWUqKVxubGV0IHJhbmRvbSBzdGF0ZSBtID1cbiAgdHJ5XG4gICAgbGV0IHIgPSBSYW5kb20uU3RhdGUuaW50NjQgc3RhdGUgKGFjY3ZhbCBtKSBpblxuICAgIGZpbmRfYWNjIHIgbVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBpbnZhbGlkX2FyZyBcIlZhbF9tYXAucmFuZG9tX3ZhbFwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0YXR1cyA9XG4gIFsgYE9LXG4gIHwgYEFjY2VwdGVkXG4gIHwgYENyZWF0ZWRcbiAgfCBgQmFkX3JlcXVlc3RcbiAgfCBgQ29uZmxpY3RcbiAgfCBgTm90X2ZvdW5kXG4gIHwgYFJlcXVlc3RfdGltZW91dCBdXG4oKiogVGhlIHN1YnNldCBvZiBbQ29odHRwLkNvZGUuc3RhdHVzXSB3ZSBuZWVkICopXG5cbnR5cGUgbWVzc2FnZSA9IHtcbiAgc2V2ZXJpdHk6IExvZ3MubGV2ZWw7XG4gIHRleHQ6IHN0cmluZzsgKCpzaG91bGQgYmUgYW4gYWxnZWJyYWljIHR5cGUqKVxuICByYW5nZTogTG9jLnQgb3B0aW9uO1xufVxuXG50eXBlICgnYSwgJ2IpIHQgPSB7XG4gIHZhbHVlOiAoJ2EsICdiKSBSZXN1bHQucmVzdWx0O1xuICBzdGF0dXM6IHN0YXR1cztcbiAgbWVzc2FnZXM6IG1lc3NhZ2UgbGlzdDtcbn1cblxubGV0IHdyaXRlX3NldmVyaXR5IG9iIHggPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJyBpblxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiAoTG9ncy5sZXZlbF90b19zdHJpbmcgKFNvbWUgeCkpIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCByZWFkX3NldmVyaXR5IHAgbGIgPVxuICBtYXRjaCBMb2dzLmxldmVsX29mX3N0cmluZyAoWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIpIHdpdGhcbiAgfCBSZXN1bHQuT2sgKFNvbWUgeCkgLT4geFxuICB8IFJlc3VsdC5PayBOb25lIC0+IHJhaXNlIChZb2pzb24uSnNvbl9lcnJvciBcIk1lc3NhZ2Ugb2Ygbm8gc2V2ZXJpdHlcIilcbiAgfCBSZXN1bHQuRXJyb3IgKGBNc2cgeCkgLT5cbiAgICByYWlzZSAoWW9qc29uLkpzb25fZXJyb3IgKFwiV2hpbGUgcmVhZGluZyBzZXZlcml0eTogXCIgXiB4KSlcblxubGV0IHdyaXRlX3N0YXR1cyBvYiA9IGZ1bmN0aW9uXG4gIHwgYE9LIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiMjAwXCJcbiAgfCBgQWNjZXB0ZWQgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIyMDJcIlxuICB8IGBDcmVhdGVkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiMjAxXCJcbiAgfCBgQmFkX3JlcXVlc3QgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI0MDBcIlxuICB8IGBDb25mbGljdCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjQwOVwiXG4gIHwgYE5vdF9mb3VuZCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjQwNFwiXG4gIHwgYFJlcXVlc3RfdGltZW91dCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjQwOFwiXG5cbmxldCByZWFkX3N0YXR1cyBwIGxiID1cbiAgbWF0Y2ggWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGIgd2l0aFxuICB8IDIwMCAtPiBgT0tcbiAgfCAyMDIgLT4gYEFjY2VwdGVkXG4gIHwgMjAxIC0+IGBDcmVhdGVkXG4gIHwgNDAwIC0+IGBCYWRfcmVxdWVzdFxuICB8IDQwOSAtPiBgQ29uZmxpY3RcbiAgfCA0MDQgLT4gYE5vdF9mb3VuZFxuICB8IDQwOCAtPiBgUmVxdWVzdF90aW1lb3V0XG4gIHwgeCAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkpzb25fZXJyb3JcbiAgICAgICAgIChcIlN0YXR1cyBcIiBeIHN0cmluZ19vZl9pbnQgeCBeIFwiIGlzIG91dCBvZiB0aGUgc2NvcGUgb2YgS2FwcGFcIikpXG5cbmxldCB3cml0ZV9tZXNzYWdlIG9iIHsgc2V2ZXJpdHk7IHRleHQ7IHJhbmdlIH0gPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic2V2ZXJpdHlcIiB3cml0ZV9zZXZlcml0eSBvYiBzZXZlcml0eSBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9maWVsZCBcInRleHRcIiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIHRleHQgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCByYW5nZSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHIgLT5cbiAgICAgIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gICAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInJhbmdlXCIgTG9jLndyaXRlX3JhbmdlIG9iIHJcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgcmVhZF9tZXNzYWdlIHAgbGIgPVxuICBsZXQgc2V2ZXJpdHksIHRleHQsIHJhbmdlID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKHMsIHQsIHIpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwic2V2ZXJpdHlcIiB0aGVuXG4gICAgICAgICAgcmVhZF9zZXZlcml0eSBwIGxiLCB0LCByXG4gICAgICAgIGVsc2UgaWYga2V5ID0gXCJ0ZXh0XCIgdGhlblxuICAgICAgICAgIHMsIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCByXG4gICAgICAgIGVsc2UgaWYga2V5ID0gXCJyYW5nZVwiIHRoZW5cbiAgICAgICAgICBzLCB0LCBTb21lIChMb2MucmVhZF9yYW5nZSBwIGxiKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcmFpc2UgKFlvanNvbi5Kc29uX2Vycm9yIChcIk5vIGZpZWxkIFwiIF4ga2V5IF4gXCIgZXhwZWN0ZWQgaW4gbWVzc2FnZVwiKSkpXG4gICAgICAoTG9ncy5BcHAsIFwiXCIsIE5vbmUpIHAgbGJcbiAgaW5cbiAgeyBzZXZlcml0eTsgdGV4dDsgcmFuZ2UgfVxuXG5sZXQgcHJpbnRfbWVzc2FnZSBmIHsgcmFuZ2U7IHRleHQ7IF8gfSA9XG4gIG1hdGNoIHJhbmdlIHdpdGhcbiAgfCBTb21lIHJhbmdlIC0+IExvYy5wcmludF9hbm5vdGVkIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAodGV4dCwgcmFuZ2UpXG4gIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgdGV4dFxuXG5sZXQgd3JpdGVfdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yIG9iID0gZnVuY3Rpb25cbiAgfCB7IHZhbHVlID0gUmVzdWx0Lk9rIHg7IHN0YXR1czsgbWVzc2FnZXMgfSAtPlxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJPa1xcXCIsXCI7XG4gICAgd3JpdGVfX29rIG9iIHg7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICB3cml0ZV9zdGF0dXMgb2Igc3RhdHVzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgSnNvblV0aWwud3JpdGVfbGlzdCB3cml0ZV9tZXNzYWdlIG9iIG1lc3NhZ2VzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgfCB7IHZhbHVlID0gUmVzdWx0LkVycm9yIHg7IHN0YXR1czsgbWVzc2FnZXMgfSAtPlxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJFcnJvclxcXCIsXCI7XG4gICAgd3JpdGVfX2Vycm9yIG9iIHg7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICB3cml0ZV9zdGF0dXMgb2Igc3RhdHVzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgSnNvblV0aWwud3JpdGVfbGlzdCB3cml0ZV9tZXNzYWdlIG9iIG1lc3NhZ2VzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IHN0cmluZ19vZl90IHdyaXRlX19vayB3cml0ZV9fZXJyb3IgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgcmVhZF90X2NvbnRlbnQgZiBwIGxiID1cbiAgbGV0IHYgPSBmIHAgbGIgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBwIGxiIGluXG4gIGxldCBzID0gcmVhZF9zdGF0dXMgcCBsYiBpblxuICBsZXQgKCkgPSBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzIFlvanNvbi5CYXNpYy5yZWFkX2NvbW1hIHAgbGIgaW5cbiAgdiwgcywgWW9qc29uLkJhc2ljLnJlYWRfbGlzdCByZWFkX21lc3NhZ2UgcCBsYlxuXG5sZXQgcmVhZF90IHJlYWRfX29rIHJlYWRfX2Vycm9yIHAgbGIgPVxuICBsZXQgYXV4X3JlYWRfdCBjbG9zaW5nIHAgbGIgPVxuICAgIFlvanNvbi5CYXNpYy5yZWFkX3NwYWNlIHAgbGI7XG4gICAgbGV0IG91dCA9XG4gICAgICBZb2pzb24uQmFzaWMubWFwX2lkZW50IHBcbiAgICAgICAgKGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICBtYXRjaCBTdHJpbmcuc3ViIHMgcG9zIGxlbiB3aXRoXG4gICAgICAgICAgfCBcIk9rXCIgLT5cbiAgICAgICAgICAgIGxldCB2LCBzdGF0dXMsIG1lc3NhZ2VzID0gcmVhZF90X2NvbnRlbnQgcmVhZF9fb2sgcCBsYiBpblxuICAgICAgICAgICAgeyB2YWx1ZSA9IFJlc3VsdC5PayB2OyBzdGF0dXM7IG1lc3NhZ2VzIH1cbiAgICAgICAgICB8IFwiRXJyb3JcIiAtPlxuICAgICAgICAgICAgbGV0IHYsIHN0YXR1cywgbWVzc2FnZXMgPSByZWFkX3RfY29udGVudCByZWFkX19lcnJvciBwIGxiIGluXG4gICAgICAgICAgICB7IHZhbHVlID0gUmVzdWx0LkVycm9yIHY7IHN0YXR1czsgbWVzc2FnZXMgfVxuICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKFlvanNvbi5Kc29uX2Vycm9yXG4gICAgICAgICAgICAgICAgIChcIkZpZWxkIFxcXCJcIiBeIHggXiBcIlxcXCIgZG9lcyBub3QgYmVsb25nIHRvIHRoZSByZXN1bHQgdHlwZVwiKSkpXG4gICAgICAgIGxiXG4gICAgaW5cbiAgICBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBwIGxiO1xuICAgIGNsb3NpbmcgcCBsYjtcbiAgICBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBwIGxiO1xuICAgIG91dFxuICBpblxuICBtYXRjaCBZb2pzb24uQmFzaWMuc3RhcnRfYW55X3ZhcmlhbnQgcCBsYiB3aXRoXG4gIHwgYEVkZ3lfYnJhY2tldCAtPiBhdXhfcmVhZF90IFlvanNvbi5CYXNpYy5yZWFkX2d0IHAgbGJcbiAgfCBgRG91YmxlX3F1b3RlIC0+IHJhaXNlIChZb2pzb24uSnNvbl9lcnJvciBcIk5vdCBvZiByZXN1bHQgdHlwZVwiKVxuICB8IGBTcXVhcmVfYnJhY2tldCAtPiBhdXhfcmVhZF90IFlvanNvbi5CYXNpYy5yZWFkX3JiciBwIGxiXG5cbmxldCB0X29mX3N0cmluZyByZWFkX19vayByZWFkX19lcnJvciBzID1cbiAgcmVhZF90IHJlYWRfX29rIHJlYWRfX2Vycm9yIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbmxldCBsaWZ0ID8ob2tfc3RhdHVzID0gYE9LKSA/KGVycm9yX3N0YXR1cyA9IGBCYWRfcmVxdWVzdCkgPSBmdW5jdGlvblxuICB8IFJlc3VsdC5PayBfIGFzIHZhbHVlIC0+IHsgdmFsdWU7IHN0YXR1cyA9IG9rX3N0YXR1czsgbWVzc2FnZXMgPSBbXSB9XG4gIHwgUmVzdWx0LkVycm9yIF8gYXMgdmFsdWUgLT4geyB2YWx1ZTsgc3RhdHVzID0gZXJyb3Jfc3RhdHVzOyBtZXNzYWdlcyA9IFtdIH1cblxubGV0IGZvbGQgfihvayA6ICdvayAtPiAnYSkgfihlcnJvciA6ICdlcnJvciAtPiAnYSkgOiAoJ29rLCAnZXJyb3IpIHQgLT4gJ2EgPVxuICBmdW5jdGlvblxuICB8IHsgdmFsdWUgPSBSZXN1bHQuT2sgbzsgXyB9IC0+IG9rIG9cbiAgfCB7IHZhbHVlID0gUmVzdWx0LkVycm9yIGU7IF8gfSAtPiBlcnJvciBlXG5cbmxldCBiaW5kIDpcbiAgICB0eXBlIG9rIGEgZXJyLlxuICAgID9vdmVyd3JpdGVfc3RhdHVzOnN0YXR1cyAtPlxuICAgID9lcnJvcl9zdGF0dXM6c3RhdHVzIC0+XG4gICAgKG9rIC0+IChhLCBlcnIpIFJlc3VsdC5yZXN1bHQpIC0+XG4gICAgKG9rLCBlcnIpIHQgLT5cbiAgICAoYSwgZXJyKSB0ID1cbiBmdW4gP292ZXJ3cml0ZV9zdGF0dXMgPyhlcnJvcl9zdGF0dXMgPSBgQmFkX3JlcXVlc3QpIG9rIC0+IGZ1bmN0aW9uXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciBfOyBfIH0gYXMgZSAtPiBlXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5PayBvOyBzdGF0dXM7IG1lc3NhZ2VzIH0gLT5cbiAgICAobWF0Y2ggb2sgbyB3aXRoXG4gICAgfCBSZXN1bHQuRXJyb3IgXyBhcyB2YWx1ZSAtPiB7IHZhbHVlOyBzdGF0dXMgPSBlcnJvcl9zdGF0dXM7IG1lc3NhZ2VzIH1cbiAgICB8IFJlc3VsdC5PayBfIGFzIHZhbHVlIC0+XG4gICAgICAobWF0Y2ggb3ZlcndyaXRlX3N0YXR1cyB3aXRoXG4gICAgICB8IE5vbmUgLT4geyB2YWx1ZTsgc3RhdHVzOyBtZXNzYWdlcyB9XG4gICAgICB8IFNvbWUgc3RhdHVzIC0+IHsgdmFsdWU7IHN0YXR1czsgbWVzc2FnZXMgfSkpXG5cbmxldCBtYXAgOiB0eXBlIG9rIGEgZXJyLiAob2sgLT4gYSkgLT4gKG9rLCBlcnIpIHQgLT4gKGEsIGVycikgdCA9XG4gZnVuIG9rIC0+IGZ1bmN0aW9uXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5PayBvOyBzdGF0dXM7IG1lc3NhZ2VzIH0gLT5cbiAgICB7IHZhbHVlID0gUmVzdWx0Lk9rIChvayBvKTsgc3RhdHVzOyBtZXNzYWdlcyB9XG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciBfOyBfIH0gYXMgZSAtPiBlXG5cbmxldCBtYXAyIDpcbiAgICB0eXBlIGEgYiBvayBlcnIuIChhIC0+IGIgLT4gb2spIC0+IChhLCBlcnIpIHQgLT4gKGIsIGVycikgdCAtPiAob2ssIGVycikgdCA9XG4gZnVuIGYgYSBiIC0+XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8ICggeyB2YWx1ZSA9IFJlc3VsdC5PayBhOyBtZXNzYWdlczsgXyB9LFxuICAgICAgeyB2YWx1ZSA9IFJlc3VsdC5PayBiOyBzdGF0dXM7IG1lc3NhZ2VzID0gbScgfSApIC0+XG4gICAge1xuICAgICAgdmFsdWUgPSBSZXN1bHQuT2sgKGYgYSBiKTtcbiAgICAgIHN0YXR1cztcbiAgICAgIG1lc3NhZ2VzID0gTGlzdC5yZXZfYXBwZW5kIChMaXN0LnJldiBtJykgbWVzc2FnZXM7XG4gICAgfVxuICB8ICh7IHZhbHVlID0gUmVzdWx0LkVycm9yIF87IF8gfSBhcyBlKSwgXyAtPiBlXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5PayBfOyBfIH0sICh7IHZhbHVlID0gUmVzdWx0LkVycm9yIF87IF8gfSBhcyBlKSAtPiBlXG5cbmxldCBlcnJvciA/KHN0YXR1cyA9IGBCYWRfcmVxdWVzdCkgKGVycm9yIDogJ2Vycm9yKSA6ICgnb2ssICdlcnJvcikgdCA9XG4gIHsgdmFsdWUgPSBSZXN1bHQuRXJyb3IgZXJyb3I7IHN0YXR1czsgbWVzc2FnZXMgPSBbXSB9XG5cbmxldCBvayA/KHN0YXR1cyA9IGBPSykgKG9rIDogJ29rKSA6ICgnb2ssICdlcnJvcikgdCA9XG4gIHsgdmFsdWUgPSBSZXN1bHQuT2sgb2s7IHN0YXR1czsgbWVzc2FnZXMgPSBbXSB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leGNlcHRpb24gVW5kZWZpbmVkXG5leGNlcHRpb24gTm90QmlqZWN0aXZlXG5leGNlcHRpb24gQ2xhc2hpbmdcblxubGV0IHNwZWNpYWxfdmFsID0gbWF4X2ludFxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgaW1tZWRpYXRlOiBpbnQgYXJyYXk7XG4gIG11dGFibGUgZGVsYXllZDogKHQgKiB0KSBvcHRpb247XG4gIG11dGFibGUgaXNfaWRlbnRpdHk6IGJvb2w7XG4gIG11dGFibGUgZHN0czogTW9kcy5JbnRTZXQudDtcbn1cblxubGV0IGVtcHR5ICgpID1cbiAge1xuICAgIGltbWVkaWF0ZSA9IFt8fF07XG4gICAgZGVsYXllZCA9IE5vbmU7XG4gICAgaXNfaWRlbnRpdHkgPSB0cnVlO1xuICAgIGRzdHMgPSBNb2RzLkludFNldC5lbXB0eTtcbiAgfVxuXG5sZXQgZHVtbXkgPSBlbXB0eSAoKVxuXG5sZXQgaWRlbnRpdHkgbCA9XG4gIGxldCBtYXggPSBMaXN0LmZvbGRfbGVmdCBtYXggMCBsIGluXG4gIGxldCBpbW1lZGlhdGUgPSBBcnJheS5tYWtlIChzdWNjIG1heCkgc3BlY2lhbF92YWwgaW5cbiAgbGV0ICgpID0gTGlzdC5pdGVyIChmdW4geCAtPiBpbW1lZGlhdGUuKHgpIDwtIHgpIGwgaW5cbiAge1xuICAgIGltbWVkaWF0ZTtcbiAgICBkZWxheWVkID0gTm9uZTtcbiAgICBpc19pZGVudGl0eSA9IHRydWU7XG4gICAgZHN0cyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIG91dCB4IC0+IE1vZHMuSW50U2V0LmFkZCB4IG91dCkgTW9kcy5JbnRTZXQuZW1wdHkgbDtcbiAgfVxuXG5sZXQgaXNfaWRlbnRpdHkgaSA9IGkuaXNfaWRlbnRpdHlcblxubGV0IHJlYyBjb21wdXRlIGsgaSA9XG4gIGxldCB2ID0gaS5pbW1lZGlhdGUuKGspIGluXG4gIGlmIHYgPD4gc3BlY2lhbF92YWwgdGhlblxuICAgIHZcbiAgZWxzZSAoXG4gICAgbWF0Y2ggaS5kZWxheWVkIHdpdGhcbiAgICB8IE5vbmUgLT4gc3BlY2lhbF92YWxcbiAgICB8IFNvbWUgKHgsIHkpIC0+XG4gICAgICBpZiBrID49IEFycmF5Lmxlbmd0aCB4LmltbWVkaWF0ZSB0aGVuXG4gICAgICAgIHNwZWNpYWxfdmFsXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHYnID0gY29tcHV0ZSBrIHggaW5cbiAgICAgICAgaWYgdicgPSBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgICAgc3BlY2lhbF92YWxcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHYnJyA9IGNvbXB1dGUgdicgeSBpblxuICAgICAgICAgIGxldCBvID1cbiAgICAgICAgICAgIGlmIHYnJyA9IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgICAgICAgICAgdidcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgdicnXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBpLmltbWVkaWF0ZS4oaykgPC0gbyBpblxuICAgICAgICAgIG9cbiAgICAgICAgKVxuICAgICAgKVxuICApXG5cbmxldCBmb3JjZSBpID1cbiAgaWYgaS5kZWxheWVkIDw+IE5vbmUgdGhlbiAoXG4gICAgbGV0ICgpID0gQXJyYXkuaXRlcmkgKGZ1biBrIF8gLT4gaWdub3JlIChjb21wdXRlIGsgaSkpIGkuaW1tZWRpYXRlIGluXG4gICAgaS5kZWxheWVkIDwtIE5vbmVcbiAgKVxuXG5sZXQgdG9fbGlzdCBpID1cbiAgbGV0ICgpID0gZm9yY2UgaSBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpIGFjYyB2IC0+XG4gICAgICBpZiB2IDw+IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgICAgKGksIHYpIDo6IGFjY1xuICAgICAgZWxzZVxuICAgICAgICBhY2MpXG4gICAgW10gaS5pbW1lZGlhdGVcbiAgfD4gTGlzdC5yZXZcblxubGV0IGltYWdlIGkgPSBpLmRzdHNcblxubGV0IHVuc2FmZV9mdW5jdGlvbm5hbF9hZGQgeCB5IGkgPVxuICBsZXQgbCA9IG1heCAoQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlKSAoeCArIDEpIGluXG4gIGxldCBpbW1lZGlhdGUgPSBBcnJheS5tYWtlIGwgc3BlY2lhbF92YWwgaW5cbiAgbGV0ICgpID0gQXJyYXkuYmxpdCBpLmltbWVkaWF0ZSAwIGltbWVkaWF0ZSAwIChBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUpIGluXG4gIGxldCAoKSA9IGltbWVkaWF0ZS4oeCkgPC0geSBpblxuICB7XG4gICAgaW1tZWRpYXRlO1xuICAgIGRlbGF5ZWQgPSBpLmRlbGF5ZWQ7XG4gICAgaXNfaWRlbnRpdHkgPSBpLmlzX2lkZW50aXR5ICYmIHggPT0geTtcbiAgICBkc3RzID0gTW9kcy5JbnRTZXQuYWRkIHkgaS5kc3RzO1xuICB9XG5cbmxldCBhZGQgfmRlYnVnX21vZGUgeCB5IGkgPVxuICBsZXQgbm90X29rID1cbiAgICBkZWJ1Z19tb2RlICYmIHggPCBBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUgJiYgaS5pbW1lZGlhdGUuKHgpIDw+IHNwZWNpYWxfdmFsXG4gIGluXG4gIGlmIG5vdF9vayB0aGVuXG4gICAgcmFpc2UgQ2xhc2hpbmdcbiAgZWxzZSAoXG4gICAgbGV0IGknID0gdW5zYWZlX2Z1bmN0aW9ubmFsX2FkZCB4IHkgaSBpblxuICAgIGlmIGkuZHN0cyA9PSBpJy5kc3RzIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBTb21lIGknXG4gIClcblxubGV0IHVuc2FmZV9pbXBlcmF0aXZlX2FkZCB4IHkgaSA9XG4gIGxldCAoKSA9XG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUgaW5cbiAgICBpZiB4ID49IGwgdGhlbiAoXG4gICAgICBsZXQgaW1tZWRpYXRlID0gQXJyYXkubWFrZSAoc3VjYyB4KSBzcGVjaWFsX3ZhbCBpblxuICAgICAgbGV0ICgpID0gQXJyYXkuYmxpdCBpLmltbWVkaWF0ZSAwIGltbWVkaWF0ZSAwIGwgaW5cbiAgICAgIGxldCAoKSA9IGltbWVkaWF0ZS4oeCkgPC0geSBpblxuICAgICAgaS5pbW1lZGlhdGUgPC0gaW1tZWRpYXRlXG4gICAgKSBlbHNlXG4gICAgICBpLmltbWVkaWF0ZS4oeCkgPC0geVxuICBpblxuICBsZXQgKCkgPSBpLmlzX2lkZW50aXR5IDwtIGkuaXNfaWRlbnRpdHkgJiYgeCA9PSB5IGluXG4gIGkuZHN0cyA8LSBNb2RzLkludFNldC5hZGQgeSBpLmRzdHNcblxubGV0IGltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIHggeSBpID1cbiAgbGV0IG5vdF9vayA9XG4gICAgZGVidWdfbW9kZSAmJiB4IDwgQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlICYmIGkuaW1tZWRpYXRlLih4KSA8PiBzcGVjaWFsX3ZhbFxuICBpblxuICBpZiBub3Rfb2sgdGhlblxuICAgIHJhaXNlIENsYXNoaW5nXG4gIGVsc2UgKFxuICAgIGxldCBvcmlnaW4gPSBpLmRzdHMgaW5cbiAgICBsZXQgKCkgPSB1bnNhZmVfaW1wZXJhdGl2ZV9hZGQgeCB5IGkgaW5cbiAgICBub3QgKGkuZHN0cyA9PSBvcmlnaW4pXG4gIClcblxubGV0IHJlYyBjeWNsaWNfcGVybXV0YXRpb25fZnJvbV9pZGVudGl0eSBtYXggaWQgc3Vic3QgcHJlID0gZnVuY3Rpb25cbiAgfCBfIHdoZW4gcHJlID0gaWQgLT4gdW5zYWZlX2ltcGVyYXRpdmVfYWRkIHByZSBtYXggc3Vic3RcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBoIDo6IHQgLT5cbiAgICBsZXQgKCkgPSB1bnNhZmVfaW1wZXJhdGl2ZV9hZGQgcHJlIGggc3Vic3QgaW5cbiAgICBjeWNsaWNfcGVybXV0YXRpb25fZnJvbV9pZGVudGl0eSBtYXggaWQgc3Vic3QgaCB0XG5cbmxldCBjeWNsaWNfcGVybXV0YXRpb25fZnJvbV9saXN0IH5zdG9wX2F0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWlsd2l0aCBcIlJlbmFtaW5nLmN5Y2xpY19wZXJtdXRhdGlvbl9mcm9tX2xpc3RcIlxuICB8IGggOjogdCAtPlxuICAgIGxldCBvdXQgPSBlbXB0eSAoKSBpblxuICAgIGxldCAoKSA9IGN5Y2xpY19wZXJtdXRhdGlvbl9mcm9tX2lkZW50aXR5IGggc3RvcF9hdCBvdXQgaCB0IGluXG4gICAgb3V0XG5cbmxldCBtZW0geCBpID0geCA8IEFycmF5Lmxlbmd0aCBpLmltbWVkaWF0ZSAmJiBjb21wdXRlIHggaSA8PiBzcGVjaWFsX3ZhbFxuXG5sZXQgZm9sZCBmIGkgYWNjID1cbiAgbGV0ICgpID0gZm9yY2UgaSBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpIGFjYyB2IC0+XG4gICAgICBpZiB2ID0gc3BlY2lhbF92YWwgdGhlblxuICAgICAgICBhY2NcbiAgICAgIGVsc2VcbiAgICAgICAgZiBpIHYgYWNjKVxuICAgIGFjYyBpLmltbWVkaWF0ZVxuXG5sZXQgYXBwbHkgfmRlYnVnX21vZGUgaSB4ID1cbiAgaWYgKG5vdCBpLmlzX2lkZW50aXR5KSB8fCBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgIGxldCBjID0gY29tcHV0ZSB4IGkgaW5cbiAgICBpZiBjID0gc3BlY2lhbF92YWwgdGhlblxuICAgICAgcmFpc2UgVW5kZWZpbmVkXG4gICAgZWxzZVxuICAgICAgY1xuICApIGVsc2VcbiAgICB4XG5cbmxldCBjb21wb3NlIH5kZWJ1Z19tb2RlIGV4dGVuc2libGUgaSBpJyA9XG4gIGlmIChub3QgaS5pc19pZGVudGl0eSkgfHwgZXh0ZW5zaWJsZSB8fCBkZWJ1Z19tb2RlIHRoZW5cbiAgICB7XG4gICAgICBpbW1lZGlhdGUgPSBBcnJheS5tYWtlIChBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUpIHNwZWNpYWxfdmFsO1xuICAgICAgZGVsYXllZCA9IFNvbWUgKGksIGknKTtcbiAgICAgIGlzX2lkZW50aXR5ID0gaS5pc19pZGVudGl0eSAmJiBpJy5pc19pZGVudGl0eTtcbiAgICAgIGRzdHMgPVxuICAgICAgICBNb2RzLkludFNldC5mb2xkXG4gICAgICAgICAgKGZ1biB2JyBzZXQgLT5cbiAgICAgICAgICAgIGxldCB2JycgPSBjb21wdXRlIHYnIGknIGluXG4gICAgICAgICAgICBNb2RzLkludFNldC5hZGQgdicnIHNldClcbiAgICAgICAgICBpLmRzdHMgTW9kcy5JbnRTZXQuZW1wdHk7XG4gICAgfVxuICAoKiBsZXQgc2lnbWEsaXNfaWQgPVxuICAgICAgIE1vZHMuSW50TWFwLmZvbGQgKGZ1biB4IHkgKG91dCxpc19pZCkgLT5cbiAgICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24geSBpJy5zaWdtYSB3aXRoXG4gICAgICAgICAgIHwgU29tZSB6IC0+IChNb2RzLkludE1hcC5hZGQgeCB6IG91dCxpc19pZCAmJiB4PT16KVxuICAgICAgICAgICB8IE5vbmUgLT4gKG91dCxpc19pZCAmJiB4PT15KVxuICAgICAgICAgKSBpLnNpZ21hIChpLnNpZ21hLHRydWUpXG4gICAgIGluXG4gICAgIHtzaWdtYT1zaWdtYSA7IGlzX2lkZW50aXR5PWlzX2lkIDsgZHN0cyA9IGknLmRzdHN9XG4gICopXG4gIGVsc2VcbiAgICBpJ1xuXG5sZXQgaW52ZXJzZSBpID1cbiAgaWYgaS5pc19pZGVudGl0eSB0aGVuXG4gICAgaVxuICBlbHNlIChcbiAgICBsZXQgb3V0ID0gZW1wdHkgKCkgaW5cbiAgICBsZXQgKCkgPSBmb3JjZSBpIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4geCB5IC0+XG4gICAgICAgICAgaWYgeSA8PiBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICB5IDwgQXJyYXkubGVuZ3RoIG91dC5pbW1lZGlhdGUgJiYgb3V0LmltbWVkaWF0ZS4oeSkgPD4gc3BlY2lhbF92YWxcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2UgTm90QmlqZWN0aXZlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHVuc2FmZV9pbXBlcmF0aXZlX2FkZCB5IHggb3V0KVxuICAgICAgICBpLmltbWVkaWF0ZVxuICAgIGluXG4gICAgb3V0XG4gIClcblxubGV0IGNvbXBhcmUgaSBpJyA9XG4gIGxldCAoKSA9IGZvcmNlIGkgaW5cbiAgbGV0ICgpID0gZm9yY2UgaScgaW5cbiAgVG9vbHMuYXJyYXlfY29tcGFyZSBNb2RzLmludF9jb21wYXJlIGkuaW1tZWRpYXRlIGknLmltbWVkaWF0ZVxuXG5sZXQgZXF1YWwgaSBpJyA9IGNvbXBhcmUgaSBpJyA9IDBcblxubGV0IG1pbl9lbHQgaSA9XG4gIGxldCBsID0gQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlIGluXG4gIGxldCByZWMgYXV4X21pbl9lbHQgayA9XG4gICAgaWYgayA+PSBsIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIGxldCBvID0gY29tcHV0ZSBrIGkgaW5cbiAgICAgIGlmIG8gPSBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgIGF1eF9taW5fZWx0IChzdWNjIGspXG4gICAgICBlbHNlXG4gICAgICAgIFNvbWUgKGssIG8pXG4gICAgKVxuICBpblxuICBhdXhfbWluX2VsdCAwXG5cbmxldCBwcmludCBmIGkgPVxuICBsZXQgKCkgPSBmb3JjZSBpIGluXG4gIGlnbm9yZVxuICAgIChUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgKGZ1biBzcmMgYiBkc3QgLT5cbiAgICAgICAgIGlmIHNyYyA8PiBkc3QgJiYgZHN0IDw+IHNwZWNpYWxfdmFsIHRoZW4gKFxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVpLT4laVwiXG4gICAgICAgICAgICAgICAoaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICBQcC5jb21tYVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIFBwLmVtcHR5KVxuICAgICAgICAgICAgICAgc3JjIGRzdFxuICAgICAgICAgICBpblxuICAgICAgICAgICB0cnVlXG4gICAgICAgICApIGVsc2VcbiAgICAgICAgICAgYilcbiAgICAgICBmYWxzZSBpLmltbWVkaWF0ZSlcblxubGV0IHByaW50X2Z1bGwgZiBpID1cbiAgbGV0ICgpID0gZm9yY2UgaSBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFsoJWEpQF1cIlxuICAgIChQcC5hcnJheSBQcC5jb21tYSAoZnVuIHNyYyBmIGRzdCAtPlxuICAgICAgICAgaWYgZHN0IDw+IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgICAgICAgaWYgc3JjIDw+IGRzdCB0aGVuXG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVpLT4laVwiIHNyYyBkc3RcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9pbnQgZiBzcmMpKVxuICAgIGkuaW1tZWRpYXRlXG5cbmxldCB0b195b2pzb24gaSA9XG4gIGxldCAoKSA9IGZvcmNlIGkgaW5cbiAgYExpc3RcbiAgICAoVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgIChmdW4gc3JjIGFjYyBkc3QgLT5cbiAgICAgICAgIGlmIGRzdCA8PiBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgICAgIGBMaXN0IFsgYEludCBzcmM7IGBJbnQgZHN0IF0gOjogYWNjXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGFjYylcbiAgICAgICBbXSBpLmltbWVkaWF0ZSlcblxubGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPlxuICAgIGxldCBvdXQgPSBlbXB0eSAoKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBgTGlzdCBbIGBJbnQgc3JjOyBgSW50IGRzdCBdIGFzIHggLT5cbiAgICAgICAgICAgIGlmIG5vdCAoaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGU6ZmFsc2Ugc3JjIGRzdCBvdXQpIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcmVuYW1pbmcgaXRlbVwiLCB4KSlcbiAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCByZW5hbWluZyBpdGVtXCIsIHgpKSlcbiAgICAgICAgbFxuICAgIGluXG4gICAgb3V0XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcmVuYW1pbmdcIiwgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHRyZWUgPSB7XG4gIG1hc2s6IChpbnQsIGludCkgSGFzaHRibC50O1xuICB1bm1hc2s6IChpbnQsIGludCkgSGFzaHRibC50O1xuICBtdXRhYmxlIG5ld19tYXNrOiBpbnQ7XG4gIG11dGFibGUgaW5mX2xpc3Q6IE1vZHMuSW50U2V0LnQ7XG4gIHNpemU6IGludDtcbiAgd2VpZ2h0X29mX25vZGVzOiBmbG9hdCBhcnJheTtcbiAgd2VpZ2h0X29mX3N1YnRyZWVzOiBmbG9hdCBhcnJheTtcbiAgdW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXI6IGludCBsaXN0IGFycmF5O1xuICB1bmJhbGFuY2VkX2V2ZW50czogYm9vbCBhcnJheTtcbiAgbGF5ZXI6IGludCBhcnJheTtcbiAgbXV0YWJsZSBjb25zaXN0ZW50OiBib29sO1xufVxuXG5sZXQgbWFzayB0IGkgPVxuICB0cnkgSGFzaHRibC5maW5kIHQubWFzayBpXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IG0gPSB0Lm5ld19tYXNrIGluXG4gICAgbGV0ICgpID0gdC5uZXdfbWFzayA8LSBtICsgMSBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSB0Lm1hc2sgaSBtIGluXG4gICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIHQudW5tYXNrIG0gaSBpblxuICAgIG1cblxubGV0IHVubWFzayB0IG0gPVxuICB0cnkgSGFzaHRibC5maW5kIHQudW5tYXNrIG1cbiAgd2l0aCBOb3RfZm91bmQgLT4gaW52YWxpZF9hcmcgXCJSYW5kb21fdHJlZTogaW5jb2hlcmVudCBoYXNoXCJcblxubGV0IGlzX2luZmluaXRlIGkgdCA9XG4gIGxldCBpID0gbWFzayB0IGkgaW5cbiAgTW9kcy5JbnRTZXQubWVtIGkgdC5pbmZfbGlzdFxuXG5sZXQgZmluZCBpIHQgPVxuICBsZXQgaSA9IG1hc2sgdCBpIGluXG4gIHQud2VpZ2h0X29mX25vZGVzLihpKVxuXG5sZXQgY29weSB0ID1cbiAge1xuICAgIG1hc2sgPSBIYXNodGJsLmNvcHkgdC5tYXNrO1xuICAgIHVubWFzayA9IEhhc2h0YmwuY29weSB0LnVubWFzaztcbiAgICBuZXdfbWFzayA9IHQubmV3X21hc2s7XG4gICAgc2l6ZSA9IHQuc2l6ZTtcbiAgICAoKlx0dG90YWwgPSB0LnRvdGFsIDsqKVxuICAgIHdlaWdodF9vZl9ub2RlcyA9IEFycmF5LmNvcHkgdC53ZWlnaHRfb2Zfbm9kZXM7XG4gICAgd2VpZ2h0X29mX3N1YnRyZWVzID0gQXJyYXkuY29weSB0LndlaWdodF9vZl9zdWJ0cmVlcztcbiAgICBsYXllciA9IEFycmF5LmNvcHkgdC5sYXllcjtcbiAgICBjb25zaXN0ZW50ID0gdC5jb25zaXN0ZW50O1xuICAgIHVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyID0gQXJyYXkuY29weSB0LnVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyO1xuICAgIHVuYmFsYW5jZWRfZXZlbnRzID0gQXJyYXkuY29weSB0LnVuYmFsYW5jZWRfZXZlbnRzO1xuICAgIGluZl9saXN0ID0gTW9kcy5JbnRTZXQuZW1wdHk7XG4gIH1cblxubGV0IGNvcHlfdmVjdF9pbiB0IHQxID0gQXJyYXkuaXRlcmkgKGZ1biBpIGEgLT4gdDEuKGkpIDwtIGEpIHRcblxubGV0IGNvcHlfaW4gdDEgdDIgPVxuICBsZXQgKCkgPSBjb3B5X3ZlY3RfaW4gdDEud2VpZ2h0X29mX25vZGVzIHQyLndlaWdodF9vZl9ub2RlcyBpblxuICBsZXQgKCkgPSBjb3B5X3ZlY3RfaW4gdDEud2VpZ2h0X29mX3N1YnRyZWVzIHQyLndlaWdodF9vZl9zdWJ0cmVlcyBpblxuICBsZXQgKCkgPSBjb3B5X3ZlY3RfaW4gdDEubGF5ZXIgdDIubGF5ZXIgaW5cbiAgbGV0ICgpID0gY29weV92ZWN0X2luIHQxLnVuYmFsYW5jZWRfZXZlbnRzIHQyLnVuYmFsYW5jZWRfZXZlbnRzIGluXG4gIGxldCAoKSA9XG4gICAgY29weV92ZWN0X2luIHQxLnVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyIHQyLnVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyXG4gIGluXG4gIGxldCAoKSA9IHQyLmNvbnNpc3RlbnQgPC0gdDEuY29uc2lzdGVudCBpblxuICB0MlxuXG5sZXQgaXNfcm9vdCBpID0gaSA9IDFcblxubGV0IGRlY2xhcmVfdW5iYWxhbmNlZCBpIHQgPVxuICBsZXQgKCkgPVxuICAgIGlmIG5vdCB0LnVuYmFsYW5jZWRfZXZlbnRzLihpKSB0aGVuIChcbiAgICAgIGxldCBsID0gdC5sYXllci4oaSkgaW5cbiAgICAgIGxldCAoKSA9IHQudW5iYWxhbmNlZF9ldmVudHMuKGkpIDwtIHRydWUgaW5cbiAgICAgIHQudW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIuKGwpIDwtIGkgOjogdC51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllci4obClcbiAgICApXG4gIGluXG4gIHQuY29uc2lzdGVudCA8LSBmYWxzZVxuXG5sZXQgdXBkYXRlX3N0cnVjdHVyZSB0ID1cbiAgaWYgdC5jb25zaXN0ZW50IHRoZW5cbiAgICB0XG4gIGVsc2UgKFxuICAgIGxldCBuX2xheWVyID0gdC5sYXllci4odC5zaXplKSBpblxuICAgIGxldCB1cGRhdGVfc3RydWN0dXJlX2F1eCBpID1cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHQud2VpZ2h0X29mX3N1YnRyZWVzLihpKSA8LVxuICAgICAgICAgICh0LndlaWdodF9vZl9ub2Rlcy4oaSlcbiAgICAgICAgICArLiAoaWYgMiAqIGkgPiB0LnNpemUgdGhlblxuICAgICAgICAgICAgICAgIDAuXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0LndlaWdodF9vZl9zdWJ0cmVlcy4oMiAqIGkpKVxuICAgICAgICAgICsuXG4gICAgICAgICAgaWYgKDIgKiBpKSArIDEgPiB0LnNpemUgdGhlblxuICAgICAgICAgICAgMC5cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB0LndlaWdodF9vZl9zdWJ0cmVlcy4oKDIgKiBpKSArIDEpKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHQudW5iYWxhbmNlZF9ldmVudHMuKGkpIDwtIGZhbHNlIGluXG4gICAgICBpZiBub3QgKGlzX3Jvb3QgaSkgdGhlbiAoXG4gICAgICAgIGxldCBmYXRoZXIgPSBpIC8gMiBpblxuICAgICAgICBkZWNsYXJlX3VuYmFsYW5jZWQgZmF0aGVyIHRcbiAgICAgIClcbiAgICBpblxuICAgIGxldCByZWMgYXV4IGsgPVxuICAgICAgaWYgayA9IDAgdGhlblxuICAgICAgICAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsID0gdC51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllci4oaykgaW5cbiAgICAgICAgbGV0ICgpID0gdC51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllci4oaykgPC0gW10gaW5cbiAgICAgICAgbGV0ICgpID0gTGlzdC5pdGVyIHVwZGF0ZV9zdHJ1Y3R1cmVfYXV4IGwgaW5cbiAgICAgICAgYXV4IChrIC0gMSlcbiAgICAgIClcbiAgICBpblxuICAgIGxldCAoKSA9IGF1eCBuX2xheWVyIGluXG4gICAgbGV0ICgpID0gdC5jb25zaXN0ZW50IDwtIHRydWUgaW5cbiAgICB0XG4gIClcblxubGV0IGNyZWF0ZSBuID1cbiAgbGV0IHRfbm9kZSA9IEFycmF5Lm1ha2UgKG4gKyAxKSAwLiBpblxuICBsZXQgdF9zdWJ0cmVlID0gQXJyYXkubWFrZSAobiArIDEpIDAuIGluXG4gIGxldCBsYXllciA9IEFycmF5Lm1ha2UgKG4gKyAxKSAwIGluXG4gIGxldCAoKSA9XG4gICAgbGV0IHJlYyBhdXggayBjdXJyZW50X2xheWVyIGxheWVyX2VuZCA9XG4gICAgICBpZiBrIDw9IG4gdGhlblxuICAgICAgICBpZiBrID4gbGF5ZXJfZW5kIHRoZW5cbiAgICAgICAgICBhdXggayAoY3VycmVudF9sYXllciArIDEpICgoMiAqIGxheWVyX2VuZCkgKyAxKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBsYXllci4oaykgPC0gY3VycmVudF9sYXllciBpblxuICAgICAgICAgIGF1eCAoayArIDEpIGN1cnJlbnRfbGF5ZXIgbGF5ZXJfZW5kXG4gICAgICAgIClcbiAgICBpblxuICAgIGF1eCAxIDEgMVxuICBpblxuICBsZXQgdW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIgPSBBcnJheS5tYWtlIChsYXllci4obikgKyAxKSBbXSBpblxuICBsZXQgdW5iYWxhbmNlZF9ldmVudHMgPSBBcnJheS5tYWtlIChuICsgMSkgZmFsc2UgaW5cbiAge1xuICAgIHNpemUgPSBuO1xuICAgICgqXHR0b3RhbCA9IDAuOyopXG4gICAgbmV3X21hc2sgPSAxO1xuICAgIG1hc2sgPSBIYXNodGJsLmNyZWF0ZSAobiArIDEpO1xuICAgIHVubWFzayA9IEhhc2h0YmwuY3JlYXRlIChuICsgMSk7XG4gICAgaW5mX2xpc3QgPSBNb2RzLkludFNldC5lbXB0eTtcbiAgICBjb25zaXN0ZW50ID0gdHJ1ZTtcbiAgICB3ZWlnaHRfb2Zfbm9kZXMgPSB0X25vZGU7XG4gICAgd2VpZ2h0X29mX3N1YnRyZWVzID0gdF9zdWJ0cmVlO1xuICAgIHVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyO1xuICAgIHVuYmFsYW5jZWRfZXZlbnRzO1xuICAgIGxheWVyO1xuICB9XG5cbmxldCBhZGQgaSB3IHQgPVxuICBsZXQgaSA9IG1hc2sgdCBpIGluXG4gIGlmIHcgPCAwLiB0aGVuXG4gICAgZmFpbHdpdGggXCJOZWdhdGl2ZSB2YWx1ZSBmb3JiaWRkZW4gaW4gUmFuZG9tX3RyZWVcIlxuICBlbHNlIChcbiAgICBsZXQgdyA9XG4gICAgICBpZiB3ID0gaW5maW5pdHkgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IHQuaW5mX2xpc3QgPC0gTW9kcy5JbnRTZXQuYWRkIGkgdC5pbmZfbGlzdCBpblxuICAgICAgICAwLlxuICAgICAgKSBlbHNlIChcbiAgICAgICAgbGV0ICgpID0gdC5pbmZfbGlzdCA8LSBNb2RzLkludFNldC5yZW1vdmUgaSB0LmluZl9saXN0IGluXG4gICAgICAgIHdcbiAgICAgIClcbiAgICBpblxuICAgICgqXHRsZXQgdG90YWwgPSB0LnRvdGFsIC0uIHQud2VpZ2h0X29mX25vZGVzLihpKSArLiB3IGluKilcbiAgICBsZXQgKCkgPSB0LndlaWdodF9vZl9ub2Rlcy4oaSkgPC0gdyBpblxuICAgIGxldCAoKSA9IGRlY2xhcmVfdW5iYWxhbmNlZCBpIHQgaW5cbiAgICAoKSAoKnQudG90YWwgPC0gKG1heCAwLjAgdG90YWwpICgqbm90IHNhdGlzZmFjdG9yeSopKilcbiAgKVxuXG5sZXQgdG90YWwgdCA9XG4gIGlmIE1vZHMuSW50U2V0LmlzX2VtcHR5IHQuaW5mX2xpc3QgdGhlbiAoXG4gICAgbGV0IHQgPSB1cGRhdGVfc3RydWN0dXJlIHQgaW5cbiAgICBpZiB0LnNpemUgPSAwIHRoZW5cbiAgICAgIDAuXG4gICAgZWxzZVxuICAgICAgdC53ZWlnaHRfb2Zfc3VidHJlZXMuKDEpXG4gICkgZWxzZVxuICAgIGluZmluaXR5XG5cbmxldCByYW5kb20gcnMgdCA9XG4gIG1hdGNoIE1vZHMuSW50U2V0LnJhbmRvbSBycyB0LmluZl9saXN0IHdpdGhcbiAgfCBTb21lIHggLT4gdW5tYXNrIHQgeCwgaW5maW5pdHlcbiAgfCBOb25lIC0+XG4gICAgbGV0IHQgPSB1cGRhdGVfc3RydWN0dXJlIHQgaW5cbiAgICBsZXQgYSA9IHRvdGFsIHQgaW5cbiAgICBpZiBhIDw9IDAuIHRoZW5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHIgPSBSYW5kb20uU3RhdGUuZmxvYXQgcnMgYSBpblxuICAgICAgbGV0IHJlYyBmaW5kIGkgciA9XG4gICAgICAgIGxldCBub2RlID0gdC53ZWlnaHRfb2Zfbm9kZXMuKGkpIGluXG4gICAgICAgIGlmIHIgPCBub2RlIHRoZW5cbiAgICAgICAgICBpLCBub2RlXG4gICAgICAgIGVsc2UgaWYgMiAqIGkgPiB0LnNpemUgdGhlblxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcicgPSByIC0uIG5vZGUgaW5cbiAgICAgICAgICBsZXQgbHNvbiA9IDIgKiBpIGluXG4gICAgICAgICAgbGV0IHJzb24gPSAoMiAqIGkpICsgMSBpblxuICAgICAgICAgIGxldCBsZWZ0ID0gdC53ZWlnaHRfb2Zfc3VidHJlZXMuKGxzb24pIGluXG4gICAgICAgICAgaWYgcicgPCBsZWZ0IHRoZW5cbiAgICAgICAgICAgIGZpbmQgbHNvbiByJ1xuICAgICAgICAgIGVsc2UgaWYgcnNvbiA+IHQuc2l6ZSB0aGVuXG4gICAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kIHJzb24gKHInIC0uIGxlZnQpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgcmVwLCB3ID0gZmluZCAxIHIgaW5cbiAgICAgIHVubWFzayB0IHJlcCwgd1xuICAgIClcblxuKCogVE9ET1xuICAgIHdlaWdodF9vZl9zdWJ0cmVlczogZmxvYXQgYXJyYXkgO1xuICAgdW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXI6IGludCBsaXN0IGFycmF5IDtcbiopXG5sZXQgZGVidWdfcHJpbnQgZiB0ID1cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslc2NvbnNpc3RlbnQ6QCBbXCJcbiAgICAgIChpZiB0LmNvbnNpc3RlbnQgdGhlblxuICAgICAgICAgXCJcIlxuICAgICAgIGVsc2VcbiAgICAgICAgIFwidW5cIilcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBIYXNodGJsLml0ZXJcbiAgICAgIChmdW4gaSBrIC0+XG4gICAgICAgIGxldCBiYWwgPVxuICAgICAgICAgIGlmIHQudW5iYWxhbmNlZF9ldmVudHMuKGspIHRoZW5cbiAgICAgICAgICAgIFwiIVwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgXCJcIlxuICAgICAgICBpblxuICAgICAgICBsZXQgaW52ID1cbiAgICAgICAgICBpZiBIYXNodGJsLmZpbmQgdC5tYXNrIGsgPSBpIHRoZW5cbiAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBcIiBub3QgaW52b2x1dGl2ZVwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpbmYgPVxuICAgICAgICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHQud2VpZ2h0X29mX25vZGVzLihrKSB3aXRoXG4gICAgICAgICAgfCBGUF9pbmZpbml0ZSB3aGVuIE1vZHMuSW50U2V0Lm1lbSBrIHQuaW5mX2xpc3QgLT4gXCJcIlxuICAgICAgICAgIHwgRlBfaW5maW5pdGUgLT4gXCIgbm90IGluIGluZl9saXN0XCJcbiAgICAgICAgICB8IF8gd2hlbiBub3QgKE1vZHMuSW50U2V0Lm1lbSBrIHQuaW5mX2xpc3QpIC0+IFwiXCJcbiAgICAgICAgICB8IEZQX25vcm1hbCB8IEZQX3plcm8gfCBGUF9uYW4gfCBGUF9zdWJub3JtYWwgLT4gXCIgaW4gaW5mX2xpc3RcIlxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXMlaTolZiVzJXMsQCxcIiBiYWwgaSB0LndlaWdodF9vZl9ub2Rlcy4oaykgaW5mIGludilcbiAgICAgIHQudW5tYXNrXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJdQF1cIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGdyYXBoX3BhZ2UgdGl0bGUgP3N1YnRpdGxlIGRlcHMgaGVhZGVyIGNvcmUgZiA9XG4gIGxldCBkZXBlbmRlbmN5IGYgdCA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIjxzY3JpcHQgc3JjPVxcXCIlc1xcXCIgY2hhcnNldD1cXFwidXRmLThcXFwiPjwvc2NyaXB0PlwiIHRcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+PCFkb2N0eXBlIGh0bWw+QCxALDxodG1sPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48aGVhZD5ALDxtZXRhIGNoYXJzZXQ9XFxcInV0Zi04XFxcIj5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8dGl0bGU+JXQ8L3RpdGxlPkAsXCIgdGl0bGUgaW5cbiAgbGV0ICgpID0gUHAubGlzdCB+dHJhaWxpbmc6UHAuc3BhY2UgUHAuc3BhY2UgZGVwZW5kZW5jeSBmIGRlcHMgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiV0QF1ALDwvaGVhZD5ALFwiIGhlYWRlciBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxib2R5PkAsPGRpdiBjbGFzcz1cXFwiY29udGFpbmVyXFxcIj5ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIjxoMT5AWyV0JXRAXTwvaDE+QCxcIiB0aXRsZSAoZnVuIGYgLT5cbiAgICAgICAgbWF0Y2ggc3VidGl0bGUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIHQgLT4gRm9ybWF0LmZwcmludGYgZiBcIkAsPHNtYWxsPiV0PC9zbWFsbD5cIiB0KVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiJXRALDwvZGl2PkBdQCw8L2JvZHk+QCw8L2h0bWw+QF1ALlwiIGNvcmVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgYmluX2FsZ19vcCA9IE1VTFQgfCBTVU0gfCBESVYgfCBNSU5VUyB8IFBPVyB8IE1PRFVMTyB8IE1JTiB8IE1BWFxudHlwZSB1bl9hbGdfb3AgPSBMT0cgfCBTUVJUIHwgRVhQIHwgU0lOVVMgfCBDT1NJTlVTIHwgVEFOIHwgSU5UIHwgVU1JTlVTXG5cbnR5cGUgc3RhdGVfYWxnX29wID1cbiAgfCBDUFVUSU1FXG4gIHwgVElNRV9WQVJcbiAgfCBFVkVOVF9WQVJcbiAgfCBOVUxMX0VWRU5UX1ZBUlxuICB8IFRNQVhfVkFSXG4gIHwgRU1BWF9WQVJcblxudHlwZSBiaW5fYm9vbF9vcCA9IEFORCB8IE9SXG50eXBlIHVuX2Jvb2xfb3AgPSBOT1RcbnR5cGUgY29tcGFyZV9vcCA9IEdSRUFURVIgfCBTTUFMTEVSIHwgRVFVQUwgfCBESUZGXG50eXBlIHJldl9kZXAgPSBBTEcgb2YgaW50IHwgUlVMRSBvZiBpbnQgfCBNT0RJRiBvZiBpbnRcblxubGV0IGJpbl9hbGdfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBNVUxUIC0+IFwiKlwiXG4gIHwgU1VNIC0+IFwiK1wiXG4gIHwgRElWIC0+IFwiL1wiXG4gIHwgTUlOVVMgLT4gXCItXCJcbiAgfCBQT1cgLT4gXCJeXCJcbiAgfCBNT0RVTE8gLT4gXCJbbW9kXVwiXG4gIHwgTUlOIC0+IFwiW21pbl1cIlxuICB8IE1BWCAtPiBcIlttYXhdXCJcblxubGV0IGJpbl9hbGdfb3BfaXNfcHJlZml4ID0gZnVuY3Rpb25cbiAgfCBNQVggfCBNSU4gLT4gdHJ1ZVxuICB8IE1VTFQgfCBTVU0gfCBESVYgfCBNSU5VUyB8IFBPVyB8IE1PRFVMTyAtPiBmYWxzZVxuXG5sZXQgcHJpbnRfYmluX2FsZ19vcCBmeCB4IGZ5IHkgZiBvcCA9XG4gIGlmIGJpbl9hbGdfb3BfaXNfcHJlZml4IG9wIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXMgKCVhKSAoJWEpXCIgKGJpbl9hbGdfb3BfdG9fc3RyaW5nIG9wKSBmeCB4IGZ5IHlcbiAgZWxzZVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIoJWEgJXMgJWEpXCIgZnggeCAoYmluX2FsZ19vcF90b19zdHJpbmcgb3ApIGZ5IHlcblxubGV0IGJpbl9hbGdfb3BfdG9fanNvbiBvcCA9IGBTdHJpbmcgKGJpbl9hbGdfb3BfdG9fc3RyaW5nIG9wKVxuXG5sZXQgYmluX2FsZ19vcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiKlwiIC0+IE1VTFRcbiAgfCBgU3RyaW5nIFwiK1wiIC0+IFNVTVxuICB8IGBTdHJpbmcgXCIvXCIgLT4gRElWXG4gIHwgYFN0cmluZyBcIi1cIiAtPiBNSU5VU1xuICB8IGBTdHJpbmcgXCJeXCIgLT4gUE9XXG4gIHwgYFN0cmluZyBcIlttb2RdXCIgLT4gTU9EVUxPXG4gIHwgYFN0cmluZyBcIlttaW5dXCIgLT4gTUlOXG4gIHwgYFN0cmluZyBcIlttYXhdXCIgLT4gTUFYXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgYmluX2FsZ19vcFwiLCB4KSlcblxubGV0IHVuX2FsZ19vcF90b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IENPU0lOVVMgLT4gXCJbY29zXVwiXG4gIHwgU0lOVVMgLT4gXCJbc2luXVwiXG4gIHwgVEFOIC0+IFwiW3Rhbl1cIlxuICB8IEVYUCAtPiBcIltleHBdXCJcbiAgfCBTUVJUIC0+IFwiW3NxcnRdXCJcbiAgfCBJTlQgLT4gXCJbaW50XVwiXG4gIHwgTE9HIC0+IFwiW2xvZ11cIlxuICB8IFVNSU5VUyAtPiBcIi1cIlxuXG5sZXQgcHJpbnRfdW5fYWxnX29wIGYgb3AgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHVuX2FsZ19vcF90b19zdHJpbmcgb3ApXG5sZXQgdW5fYWxnX29wX3RvX2pzb24gb3AgPSBgU3RyaW5nICh1bl9hbGdfb3BfdG9fc3RyaW5nIG9wKVxuXG5sZXQgdW5fYWxnX29wX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJbY29zXVwiIC0+IENPU0lOVVNcbiAgfCBgU3RyaW5nIFwiW3Npbl1cIiAtPiBTSU5VU1xuICB8IGBTdHJpbmcgXCJbdGFuXVwiIC0+IFRBTlxuICB8IGBTdHJpbmcgXCJbZXhwXVwiIC0+IEVYUFxuICB8IGBTdHJpbmcgXCJbc3FydF1cIiAtPiBTUVJUXG4gIHwgYFN0cmluZyBcIltpbnRdXCIgLT4gSU5UXG4gIHwgYFN0cmluZyBcIltsb2ddXCIgLT4gTE9HXG4gIHwgYFN0cmluZyBcIi1cIiAtPiBVTUlOVVNcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCB1bl9hbGdfb3BcIiwgeCkpXG5cbmxldCBzdGF0ZV9hbGdfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBDUFVUSU1FIC0+IFwiW1RzaW1dXCJcbiAgfCBUSU1FX1ZBUiAtPiBcIltUXVwiXG4gIHwgRVZFTlRfVkFSIC0+IFwiW0VdXCJcbiAgfCBOVUxMX0VWRU5UX1ZBUiAtPiBcIltFLV1cIlxuICB8IFRNQVhfVkFSIC0+IFwiW1RtYXhdXCJcbiAgfCBFTUFYX1ZBUiAtPiBcIltFbWF4XVwiXG5cbmxldCBwcmludF9zdGF0ZV9hbGdfb3AgZiBvcCA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoc3RhdGVfYWxnX29wX3RvX3N0cmluZyBvcClcblxubGV0IHN0YXRlX2FsZ19vcF90b19qc29uIG9wID0gYFN0cmluZyAoc3RhdGVfYWxnX29wX3RvX3N0cmluZyBvcClcblxubGV0IHN0YXRlX2FsZ19vcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiW1RzaW1dXCIgLT4gQ1BVVElNRVxuICB8IGBTdHJpbmcgXCJbVF1cIiAtPiBUSU1FX1ZBUlxuICB8IGBTdHJpbmcgXCJbRV1cIiAtPiBFVkVOVF9WQVJcbiAgfCBgU3RyaW5nIFwiW0UtXVwiIC0+IE5VTExfRVZFTlRfVkFSXG4gIHwgYFN0cmluZyBcIltUbWF4XVwiIC0+IFRNQVhfVkFSXG4gIHwgYFN0cmluZyBcIltFbWF4XVwiIC0+IEVNQVhfVkFSXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3Qgc3RhdGVfYWxnX29wXCIsIHgpKVxuXG5sZXQgYmluX2Jvb2xfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBBTkQgLT4gXCImJlwiXG4gIHwgT1IgLT4gXCJ8fFwiXG5cbmxldCBwcmludF9iaW5fYm9vbF9vcCBmIG9wID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIChiaW5fYm9vbF9vcF90b19zdHJpbmcgb3ApXG5sZXQgYmluX2Jvb2xfb3BfdG9fanNvbiBvcCA9IGBTdHJpbmcgKGJpbl9ib29sX29wX3RvX3N0cmluZyBvcClcblxubGV0IGJpbl9ib29sX29wX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCImJlwiIC0+IEFORFxuICB8IGBTdHJpbmcgXCJ8fFwiIC0+IE9SXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgYm9vbGVhbiBvcFwiLCB4KSlcblxubGV0IHVuX2Jvb2xfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBOT1QgLT4gXCJbbm90XVwiXG5cbmxldCBwcmludF91bl9ib29sX29wIGYgb3AgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHVuX2Jvb2xfb3BfdG9fc3RyaW5nIG9wKVxubGV0IHVuX2Jvb2xfb3BfdG9fanNvbiBvcCA9IGBTdHJpbmcgKHVuX2Jvb2xfb3BfdG9fc3RyaW5nIG9wKVxuXG5sZXQgdW5fYm9vbF9vcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiW25vdF1cIiAtPiBOT1RcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCBib29sZWFuIG9wXCIsIHgpKVxuXG5sZXQgY29tcGFyZV9vcF90b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IEdSRUFURVIgLT4gXCI+XCJcbiAgfCBTTUFMTEVSIC0+IFwiPFwiXG4gIHwgRVFVQUwgLT4gXCI9XCJcbiAgfCBESUZGIC0+IFwiIT1cIlxuXG5sZXQgcHJpbnRfY29tcGFyZV9vcCBmIG9wID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIChjb21wYXJlX29wX3RvX3N0cmluZyBvcClcbmxldCBjb21wYXJlX29wX3RvX2pzb24gb3AgPSBgU3RyaW5nIChjb21wYXJlX29wX3RvX3N0cmluZyBvcClcblxubGV0IGNvbXBhcmVfb3Bfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIj5cIiAtPiBHUkVBVEVSXG4gIHwgYFN0cmluZyBcIjxcIiAtPiBTTUFMTEVSXG4gIHwgYFN0cmluZyBcIj1cIiAtPiBFUVVBTFxuICB8IGBTdHJpbmcgXCIhPVwiIC0+IERJRkZcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCBjb21wYXJlX29wXCIsIHgpKVxuXG5sZXQgcHJpbnRfcmV2X2RlcCBmID0gZnVuY3Rpb25cbiAgfCBSVUxFIGlkIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJyYXRlX29mX3J1bGUgWyVpXVwiIGlkXG4gICgqXCJyYXRlIG9mIHJ1bGUgJyVhJ1wiIChNb2RlbC5wcmludF9ydWxlIGVudikgaWQqKVxuICB8IEFMRyBpZCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiYWxnZWJyYWljIHZhcmlhYmxlIFslaV1cIiBpZFxuICAoKlwidmFyaWFibGUgJyVhJ1wiIChNb2RlbC5wcmludF9hbGcgZW52KSBpZCopXG4gIHwgTU9ESUYgaWQgLT4gRm9ybWF0LmZwcmludGYgZiBcImludGVydmVudGlvbiBbJWldXCIgaWRcblxubGV0IHJldl9kZXBfdG9feW9qc29uID0gZnVuY3Rpb25cbiAgfCBSVUxFIGlkIC0+IGBMaXN0IFsgYFN0cmluZyBcIlJVTEVcIjsgYEludCBpZCBdXG4gIHwgQUxHIGlkIC0+IGBMaXN0IFsgYFN0cmluZyBcIkFMR1wiOyBgSW50IGlkIF1cbiAgfCBNT0RJRiBpZCAtPiBgTGlzdCBbIGBTdHJpbmcgXCJNT0RJRlwiOyBgSW50IGlkIF1cblxubGV0IHJldl9kZXBfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJSVUxFXCI7IGBJbnQgaWQgXSAtPiBSVUxFIGlkXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiQUxHXCI7IGBJbnQgaWQgXSAtPiBBTEcgaWRcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJNT0RJRlwiOyBgSW50IGlkIF0gLT4gTU9ESUYgaWRcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCByZXZfZGVwXCIsIHgpKVxuXG5tb2R1bGUgRGVwU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSByZXZfZGVwXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBwcmludCA9IHByaW50X3Jldl9kZXBcbmVuZClcblxubW9kdWxlIERlcFNldCA9IERlcFNldE1hcC5TZXRcblxubGV0IGRlcHNldF90b195b2pzb24geCA9XG4gIGBMaXN0IChEZXBTZXQuZm9sZCAoZnVuIHggYSAtPiByZXZfZGVwX3RvX3lvanNvbiB4IDo6IGEpIHggW10pXG5cbmxldCBkZXBzZXRfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBEZXBTZXQuZW1wdHlcbiAgfCBgTGlzdCBsIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIHggLT4gRGVwU2V0LmFkZCAocmV2X2RlcF9vZl95b2pzb24geCkgYWNjKVxuICAgICAgRGVwU2V0LmVtcHR5IGxcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgZGVwc2V0XCIsIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gRiBvZiBmbG9hdCB8IEkgb2YgaW50IHwgSTY0IG9mIEludDY0LnRcblxubGV0IGNhc3RfYmluX29wIH5vcF9mID9vcF9pID9vcF9pNjQgeCB5ID1cbiAgbWF0Y2ggeCwgeSB3aXRoXG4gIHwgRiB4LCBGIHkgLT4gRiAob3BfZiB4IHkpXG4gIHwgSSB4LCBGIHkgLT4gRiAob3BfZiAoZmxvYXRfb2ZfaW50IHgpIHkpXG4gIHwgRiB4LCBJIHkgLT4gRiAob3BfZiB4IChmbG9hdF9vZl9pbnQgeSkpXG4gIHwgSSB4LCBJIHkgLT5cbiAgICAobWF0Y2ggb3BfaSB3aXRoXG4gICAgfCBOb25lIC0+IEYgKG9wX2YgKGZsb2F0X29mX2ludCB4KSAoZmxvYXRfb2ZfaW50IHkpKVxuICAgIHwgU29tZSBvcF9pIC0+IEkgKG9wX2kgeCB5KSlcbiAgfCBJIHgsIEk2NCB5IC0+XG4gICAgKG1hdGNoIG9wX2k2NCB3aXRoXG4gICAgfCBOb25lIC0+IEYgKG9wX2YgKGZsb2F0X29mX2ludCB4KSAoSW50NjQudG9fZmxvYXQgeSkpXG4gICAgfCBTb21lIG9wX2k2NCAtPiBJNjQgKG9wX2k2NCAoSW50NjQub2ZfaW50IHgpIHkpKVxuICB8IEk2NCB4LCBJIHkgLT5cbiAgICAobWF0Y2ggb3BfaTY0IHdpdGhcbiAgICB8IE5vbmUgLT4gRiAob3BfZiAoSW50NjQudG9fZmxvYXQgeCkgKGZsb2F0X29mX2ludCB5KSlcbiAgICB8IFNvbWUgb3BfaTY0IC0+IEk2NCAob3BfaTY0IHggKEludDY0Lm9mX2ludCB5KSkpXG4gIHwgSTY0IHgsIEk2NCB5IC0+XG4gICAgKG1hdGNoIG9wX2k2NCB3aXRoXG4gICAgfCBOb25lIC0+IEYgKG9wX2YgKEludDY0LnRvX2Zsb2F0IHgpIChJbnQ2NC50b19mbG9hdCB5KSlcbiAgICB8IFNvbWUgb3BfaTY0IC0+IEk2NCAob3BfaTY0IHggeSkpXG4gIHwgRiB4LCBJNjQgeSAtPiBGIChvcF9mIHggKEludDY0LnRvX2Zsb2F0IHkpKVxuICB8IEk2NCB4LCBGIHkgLT4gRiAob3BfZiAoSW50NjQudG9fZmxvYXQgeCkgeSlcblxubGV0IGNhc3RfdW5fb3AgP29wX2YgP29wX2kgP29wX2k2NCB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgRiB4IC0+XG4gICAgKG1hdGNoIG9wX2Ygd2l0aFxuICAgIHwgU29tZSBvcF9mIC0+IEYgKG9wX2YgeClcbiAgICB8IE5vbmUgLT5cbiAgICAgIChtYXRjaCBvcF9pIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcImNhc3RfdW5cIlxuICAgICAgfCBTb21lIG9wX2kgLT4gSSAob3BfaSAoaW50X29mX2Zsb2F0IHgpKSkpXG4gIHwgSTY0IHggLT5cbiAgICAobWF0Y2ggb3BfaTY0IHdpdGhcbiAgICB8IFNvbWUgb3BfaTY0IC0+IEk2NCAob3BfaTY0IHgpXG4gICAgfCBOb25lIC0+XG4gICAgICAobWF0Y2ggb3BfZiB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJjYXN0X3VuX29wXCJcbiAgICAgIHwgU29tZSBvcF9mIC0+IEYgKG9wX2YgKEludDY0LnRvX2Zsb2F0IHgpKSkpXG4gIHwgSSB4IC0+XG4gICAgKG1hdGNoIG9wX2kgd2l0aFxuICAgIHwgU29tZSBvcF9pIC0+IEkgKG9wX2kgeClcbiAgICB8IE5vbmUgLT5cbiAgICAgIChtYXRjaCBvcF9mIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcImNhc3RfdW5fb3BcIlxuICAgICAgfCBTb21lIG9wX2YgLT4gRiAob3BfZiAoZmxvYXRfb2ZfaW50IHgpKSkpXG5cbmxldCBjb21wYXJlIG4xIG4yID1cbiAgbWF0Y2ggbjEsIG4yIHdpdGhcbiAgfCBGIHgsIEYgeSAtPiBTdGRsaWIuY29tcGFyZSB4IHlcbiAgfCBJIHgsIEkgeSAtPiBTdGRsaWIuY29tcGFyZSB4IHlcbiAgfCBGIHgsIEkgeSAtPiBTdGRsaWIuY29tcGFyZSB4IChmbG9hdF9vZl9pbnQgeSlcbiAgfCBJIHgsIEYgeSAtPiBTdGRsaWIuY29tcGFyZSAoZmxvYXRfb2ZfaW50IHgpIHlcbiAgfCBJIHgsIEk2NCB5IC0+IFN0ZGxpYi5jb21wYXJlIChJbnQ2NC5vZl9pbnQgeCkgeVxuICB8IEk2NCB4LCBJNjQgeSAtPiBTdGRsaWIuY29tcGFyZSB4IHlcbiAgfCBJNjQgeCwgSSB5IC0+IFN0ZGxpYi5jb21wYXJlIHggKEludDY0Lm9mX2ludCB5KVxuICB8IEYgeCwgSTY0IHkgLT4gU3RkbGliLmNvbXBhcmUgeCAoSW50NjQudG9fZmxvYXQgeSlcbiAgfCBJNjQgeCwgRiB5IC0+IFN0ZGxpYi5jb21wYXJlIChJbnQ2NC50b19mbG9hdCB4KSB5XG5cbmxldCBpc19ncmVhdGVyIG4xIG4yID0gY29tcGFyZSBuMSBuMiA+IDBcbmxldCBpc19zbWFsbGVyIG4xIG4yID0gY29tcGFyZSBuMSBuMiA8IDBcbmxldCBpc19lcXVhbCBuMSBuMiA9IGNvbXBhcmUgbjEgbjIgPSAwXG5sZXQgYWRkIG4xIG4yID0gY2FzdF9iaW5fb3Agfm9wX2Y6KCArLiApIH5vcF9pOiggKyApIH5vcF9pNjQ6SW50NjQuYWRkIG4xIG4yXG5sZXQgc3ViIG4xIG4yID0gY2FzdF9iaW5fb3Agfm9wX2Y6KCAtLiApIH5vcF9pOiggLSApIH5vcF9pNjQ6SW50NjQuc3ViIG4xIG4yXG5sZXQgbXVsdCBuMSBuMiA9IGNhc3RfYmluX29wIH5vcF9mOiggKi4gKSB+b3BfaTooICogKSB+b3BfaTY0OkludDY0Lm11bCBuMSBuMlxubGV0IG1pbiBuMSBuMiA9IGNhc3RfYmluX29wIH5vcF9mOm1pbiB+b3BfaTptaW4gfm9wX2k2NDptaW4gbjEgbjJcbmxldCBtYXggbjEgbjIgPSBjYXN0X2Jpbl9vcCB+b3BfZjptYXggfm9wX2k6bWF4IH5vcF9pNjQ6bWF4IG4xIG4yXG5cbmxldCByZW0gbjEgbjIgPVxuICBjYXN0X2Jpbl9vcCB+b3BfaTooIG1vZCApIH5vcF9pNjQ6SW50NjQucmVtIH5vcF9mOm1vZF9mbG9hdCBuMSBuMlxuXG5sZXQgaW50ZXJuYWxfZGl2IG4xIG4yID1cbiAgY2FzdF9iaW5fb3Agfm9wX2k6KCAvICkgfm9wX2k2NDpJbnQ2NC5kaXYgfm9wX2Y6KCAvLiApIG4xIG4yXG5cbmxldCBzdWNjIG4gPSBjYXN0X3VuX29wIH5vcF9mOigoICsuICkgMS4pIH5vcF9pOnN1Y2Mgfm9wX2k2NDpJbnQ2NC5zdWNjIG5cbmxldCBwcmVkIG4gPSBjYXN0X3VuX29wIH5vcF9mOihmdW4geCAtPiB4IC0uIDEuKSB+b3BfaTpwcmVkIH5vcF9pNjQ6SW50NjQucHJlZCBuXG5sZXQgbmVnIG4gPSBjYXN0X3VuX29wIH5vcF9mOiggfi0uICkgfm9wX2k6KCB+LSApIH5vcF9pNjQ6SW50NjQubmVnIG5cblxubGV0IHRvX2Zsb2F0IG4gPVxuICBtYXRjaCBuIHdpdGhcbiAgfCBJIHggLT4gU29tZSAoZmxvYXRfb2ZfaW50IHgpXG4gIHwgSTY0IHggLT4gU29tZSAoSW50NjQudG9fZmxvYXQgeClcbiAgfCBGIHggLT5cbiAgICAobWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgfCBGUF96ZXJvIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+IFNvbWUgeFxuICAgIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gTm9uZSlcblxubGV0IHRvX2ludCBuID1cbiAgbWF0Y2ggbiB3aXRoXG4gIHwgRiB4IC0+IGludF9vZl9mbG9hdCB4XG4gIHwgSSB4IC0+IHhcbiAgfCBJNjQgeCAtPiBJbnQ2NC50b19pbnQgeCAoKk1pZ2h0IGV4Y2VlZCB0aGViaWdnZXN0IDMyIGJpdHMgaW50ZWdlciopXG5cbmxldCB6ZXJvID0gSSAwXG5cbmxldCBpc196ZXJvID0gZnVuY3Rpb25cbiAgfCBJNjQgeCAtPiB4ID0gSW50NjQuemVyb1xuICB8IEkgeCAtPiB4ID0gMFxuICB8IEYgeCAtPiBUb29scy5mbG9hdF9pc196ZXJvIHhcblxubGV0IG9uZSA9IEkgMVxuXG5sZXQgaXNfc3RyaWN0bHlfcG9zaXRpdmUgPSBmdW5jdGlvblxuICB8IEYgeCAtPiB4ID4gMC5cbiAgfCBJIHggLT4geCA+IDBcbiAgfCBJNjQgeCAtPiB4ID4gSW50NjQuemVyb1xuXG5sZXQgcG9zX3BvdyBuMSBuMiA9XG4gIGNhc3RfYmluX29wIH5vcF9mOiggKiogKSB+b3BfaTpUb29scy5wb3cgfm9wX2k2NDpUb29scy5wb3c2NCBuMSBuMlxuXG5sZXQgcG93IHggbiA9XG4gIGlmIGlzX3plcm8gbiB8fCBpc19zdHJpY3RseV9wb3NpdGl2ZSBuIHRoZW5cbiAgICBwb3NfcG93IHggblxuICBlbHNlIChcbiAgICBtYXRjaCB0b19mbG9hdCB4IHdpdGhcbiAgICB8IFNvbWUgeCAtPiBwb3NfcG93IChGICgxLiAvLiB4KSkgKG5lZyBuKVxuICAgIHwgTm9uZSAtPiBGIG5hblxuICApXG5cbmxldCBwcmludCBmID0gZnVuY3Rpb25cbiAgfCBGIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgKHN0cmluZ19vZl9mbG9hdCB4KVxuICB8IEk2NCB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlTGRcIiB4XG4gIHwgSSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlZFwiIHhcblxubGV0IHByZXR0eV9wcmludCBmID0gZnVuY3Rpb25cbiAgfCBGIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiVnXCIgeFxuICB8IEk2NCB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlTGRcIiB4XG4gIHwgSSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlZFwiIHhcblxubGV0IHByaW50X29wdGlvbiBmID0gZnVuY3Rpb25cbiAgfCBJIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiVkXCIgeFxuICB8IEk2NCB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlTGRcIiB4XG4gIHwgRiB4IC0+XG4gICAgKG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfemVybyB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgKHN0cmluZ19vZl9mbG9hdCB4KVxuICAgIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gKCkpXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IEYgeCAtPiBzdHJpbmdfb2ZfZmxvYXQgeFxuICB8IEk2NCB4IC0+IEludDY0LnRvX3N0cmluZyB4XG4gIHwgSSB4IC0+IHN0cmluZ19vZl9pbnQgeFxuXG5sZXQgcmVjIGl0ZXJpIGYgeCBuID1cbiAgaWYgaXNfc3RyaWN0bHlfcG9zaXRpdmUgbiB0aGVuXG4gICAgaXRlcmkgZiAoZiBuIHgpIChwcmVkIG4pXG4gIGVsc2VcbiAgICB4XG5cbmxldCByZWMgbWF5YmVfaXRlcmkgZiB4IG4gPVxuICBpZiBpc19zdHJpY3RseV9wb3NpdGl2ZSBuIHRoZW4gKFxuICAgIG1hdGNoIGYgbiB4IHdpdGhcbiAgICB8IE5vbmUgLT4geFxuICAgIHwgU29tZSB4JyAtPiBtYXliZV9pdGVyaSBmIHgnIChwcmVkIG4pXG4gICkgZWxzZVxuICAgIHhcblxubGV0IG9mX3N0cmluZyB4ID1cbiAgdHJ5IEkgKGludF9vZl9zdHJpbmcgeCkgd2l0aCBGYWlsdXJlIF8gLT4gRiAoZmxvYXRfb2Zfc3RyaW5nIHgpXG5cbmxldCB0b195b2pzb24gPSBmdW5jdGlvblxuICB8IEkgeCAtPiBgSW50IHhcbiAgfCBJNjQgeCAtPiBgU3RyaW5nIChJbnQ2NC50b19zdHJpbmcgeClcbiAgfCBGIHggLT5cbiAgICAobWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgfCBGUF96ZXJvIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+IGBGbG9hdCB4XG4gICAgfCBGUF9pbmZpbml0ZSB8IEZQX25hbiAtPiBgU3RyaW5nIChzdHJpbmdfb2ZfZmxvYXQgeCkpXG5cbmxldCBvZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBJbnQgeCAtPiBJIHhcbiAgfCBgRmxvYXQgeCAtPiBGIHhcbiAgfCBgU3RyaW5nIG4gYXMgeCAtPlxuICAgICh0cnkgSTY0IChJbnQ2NC5vZl9zdHJpbmcgbilcbiAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAodHJ5IEYgKGZsb2F0X29mX3N0cmluZyBuKVxuICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhbiBOYnJcIiwgeCkpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhbiBOYnJcIiwgeCkpXG5cbmxldCB3cml0ZV90IG9iIGYgPSBZb2pzb24uQmFzaWMudG9fYnVmZmVyIG9iICh0b195b2pzb24gZilcblxubGV0IHN0cmluZ19vZl90ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCByZWFkX3QgcCBsYiA9IG9mX3lvanNvbiAoWW9qc29uLkJhc2ljLmZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSBwIGxiKVxubGV0IHRfb2Zfc3RyaW5nIHMgPSByZWFkX3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxubGV0IG9mX2Jpbl9hbGdfb3AgPSBmdW5jdGlvblxuICB8IE9wZXJhdG9yLk1VTFQgLT4gbXVsdFxuICB8IE9wZXJhdG9yLlNVTSAtPiBhZGRcbiAgfCBPcGVyYXRvci5ESVYgLT5cbiAgICBmdW4geCB5IC0+XG4gICAgICBpZiAobm90IChpc196ZXJvIHkpKSAmJiBpc196ZXJvIChyZW0geCB5KSB0aGVuXG4gICAgICAgIGludGVybmFsX2RpdiB4IHlcbiAgICAgIGVsc2VcbiAgICAgICAgY2FzdF9iaW5fb3Agfm9wX2Y6KCAvLiApIHggeVxuICB8IE9wZXJhdG9yLk1JTlVTIC0+IHN1YlxuICB8IE9wZXJhdG9yLk1PRFVMTyAtPiByZW1cbiAgfCBPcGVyYXRvci5NSU4gLT4gbWluXG4gIHwgT3BlcmF0b3IuTUFYIC0+IG1heFxuICB8IE9wZXJhdG9yLlBPVyAtPiBwb3dcblxubGV0IG9mX3VuX2FsZ19vcCA9IGZ1bmN0aW9uXG4gIHwgT3BlcmF0b3IuTE9HIC0+IGZ1biB4IC0+IGNhc3RfdW5fb3Agfm9wX2Y6bG9nIHhcbiAgfCBPcGVyYXRvci5TUVJUIC0+IGZ1biB4IC0+IGNhc3RfdW5fb3Agfm9wX2Y6c3FydCB4XG4gIHwgT3BlcmF0b3IuRVhQIC0+IGZ1biB4IC0+IGNhc3RfdW5fb3Agfm9wX2Y6ZXhwIHhcbiAgfCBPcGVyYXRvci5TSU5VUyAtPiBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9mOnNpbiB4XG4gIHwgT3BlcmF0b3IuQ09TSU5VUyAtPiBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9mOmNvcyB4XG4gIHwgT3BlcmF0b3IuVEFOIC0+IGZ1biB4IC0+IGNhc3RfdW5fb3Agfm9wX2Y6dGFuIHhcbiAgfCBPcGVyYXRvci5JTlQgLT5cbiAgICBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9pOihmdW4gbiAtPiBuKSB+b3BfaTY0OihmdW4gbiAtPiBuKSB4XG4gIHwgT3BlcmF0b3IuVU1JTlVTIC0+IG5lZ1xuXG5sZXQgb2ZfY29tcGFyZV9vcCA9IGZ1bmN0aW9uXG4gIHwgT3BlcmF0b3IuR1JFQVRFUiAtPiBpc19ncmVhdGVyXG4gIHwgT3BlcmF0b3IuU01BTExFUiAtPiBpc19zbWFsbGVyXG4gIHwgT3BlcmF0b3IuRVFVQUwgLT4gaXNfZXF1YWxcbiAgfCBPcGVyYXRvci5ESUZGIC0+IGZ1biB2IHYnIC0+IG5vdCAoaXNfZXF1YWwgdiB2JylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4Y2VwdGlvbiBTeW50YXhfRXJyb3Igb2Ygc3RyaW5nIExvYy5hbm5vdGVkXG5leGNlcHRpb24gTWFsZm9ybWVkX0RlY2wgb2Ygc3RyaW5nIExvYy5hbm5vdGVkXG5leGNlcHRpb24gSW50ZXJuYWxfRXJyb3Igb2Ygc3RyaW5nIExvYy5hbm5vdGVkXG5cbmxldCB3YXJuaW5nX2J1ZmZlciA6IChMb2MudCBvcHRpb24gKiAoRm9ybWF0LmZvcm1hdHRlciAtPiB1bml0KSkgbGlzdCByZWYgPVxuICByZWYgW11cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IHsgZGVjbHM6IChzdHJpbmcgKiAnYSkgYXJyYXk7IGZpbmRlcjogaW50IE1vZHMuU3RyaW5nTWFwLnQgfVxuXG5sZXQgbmFtZV9tYXBfb2ZfYXJyYXkgP2ZvcmJpZGRlbiBhID1cbiAgbGV0IGJhZCA9XG4gICAgbWF0Y2ggZm9yYmlkZGVuIHdpdGhcbiAgICB8IE5vbmUgLT4gZnVuIF8gLT4gZmFsc2VcbiAgICB8IFNvbWUgcyAtPiBmdW4geCAtPiBNb2RzLlN0cmluZ1NldC5tZW0geCBzXG4gIGluXG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGkgbWFwICgoeCwgcG9zKSwgXykgLT5cbiAgICAgIGlmIGJhZCB4IHx8IE1vZHMuU3RyaW5nTWFwLm1lbSB4IG1hcCB0aGVuXG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoXCJMYWJlbCAnXCIgXiB4IF4gXCInIGFscmVhZHkgZGVmaW5lZFwiLCBwb3MpKVxuICAgICAgZWxzZVxuICAgICAgICBNb2RzLlN0cmluZ01hcC5hZGQgeCBpIG1hcClcbiAgICBNb2RzLlN0cmluZ01hcC5lbXB0eSBhXG5cbmxldCBjcmVhdGUgP2ZvcmJpZGRlbiBhID1cbiAge1xuICAgIGRlY2xzID0gQXJyYXkubWFwIChmdW4gKCh4LCBfKSwgeSkgLT4geCwgeSkgYTtcbiAgICBmaW5kZXIgPSBuYW1lX21hcF9vZl9hcnJheSA/Zm9yYmlkZGVuIGE7XG4gIH1cblxubGV0IGNyZWF0ZV9mcm9tX2xpc3QgP2ZvcmJpZGRlbiBsID0gY3JlYXRlID9mb3JiaWRkZW4gKEFycmF5Lm9mX2xpc3QgbClcblxuKCogVE9ETyBzZWUgaWYgd2Ugc2hvdWxkIGtlZXAgdGhpcyAqKVxubGV0IGNyZWF0ZV9ub19sb2MgP2ZvcmJpZGRlbiBhID1cbiAgQXJyYXkubWFwIChmdW4gKHgsIHkpIC0+ICh4LCBMb2MuZHVtbXkpLCB5KSBhIHw+IGNyZWF0ZSA/Zm9yYmlkZGVuXG5cbmxldCBzaXplIG5kID0gQXJyYXkubGVuZ3RoIG5kLmRlY2xzXG5sZXQgZWx0X25hbWUgbmQgaSA9IGZzdCBuZC5kZWNscy4oaSlcblxubGV0IGVsdF9pZCA/KGtpbmQgPSBcImVsZW1lbnRcIikgbmQgKHMsIHBvcykgPVxuICBtYXRjaCBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBzIG5kLmZpbmRlciB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiXFxcIiVzXFxcIiBpcyBub3QgYSBkZWNsYXJlZCAlcy5cIiBzIGtpbmQsIHBvcykpXG5cbmxldCBwcmludCB+c2VwIHBwIGYgbmQgPVxuICBQcC5hcnJheSBzZXAgKGZ1biBpIGYgKG4sIGVsKSAtPiBwcCBpIG4gZiBlbCkgZiBuZC5kZWNsc1xuXG5sZXQgZGVidWdfcHJpbnQgcHIgZiBuZCA9XG4gIHByaW50IH5zZXA6UHAuc3BhY2VcbiAgICAoZnVuIGkgbiBmIGVsIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVpPiVzOiBAWzwyPiVhQF1AXVwiIGkgbiBwciBlbClcbiAgICBmIG5kXG5cbmxldCBmb2xkIGYgYWNjIG5kID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aSAoZnVuIGkgYWNjIChuYSwgeCkgLT4gZiBpIG5hIGFjYyB4KSBhY2MgbmQuZGVjbHNcblxubGV0IG1hcCBmIG5kID1cbiAgeyBkZWNscyA9IEFycmF5Lm1hcCAoZnVuIChzLCB2KSAtPiBzLCBmIHMgdikgbmQuZGVjbHM7IGZpbmRlciA9IG5kLmZpbmRlciB9XG5cbmxldCBtYXBpIGYgbmQgPVxuICB7XG4gICAgZGVjbHMgPSBBcnJheS5tYXBpIChmdW4gaSAocywgdikgLT4gcywgZiBpIHMgdikgbmQuZGVjbHM7XG4gICAgZmluZGVyID0gbmQuZmluZGVyO1xuICB9XG5cbmxldCBlbHRfdmFsIG5kIGkgPSBzbmQgbmQuZGVjbHMuKGkpXG5cbmxldCB0b19qc29uIGF1eCBuZCA9XG4gIGBMaXN0XG4gICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICh4LCBhKSBhY2MgLT4gYEFzc29jIFsgXCJuYW1lXCIsIGBTdHJpbmcgeDsgXCJkZWNsXCIsIGF1eCBhIF0gOjogYWNjKVxuICAgICAgIG5kLmRlY2xzIFtdKVxuXG5sZXQgb2ZfanNvbiBhdXggPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT5cbiAgICBsZXQgZGVjbHMgPVxuICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIGBTdHJpbmcgeCk7IChcImRlY2xcIiwgYSkgXVxuICAgICAgICAgIHwgYEFzc29jIFsgKFwiZGVjbFwiLCBhKTsgKFwibmFtZVwiLCBgU3RyaW5nIHgpIF0gLT5cbiAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IHgsIGF1eCBhXG4gICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSB2YWxpZCBOYW1lZERlY2wgZWxlbWVudFwiLCB4KSkpXG4gICAgICAgIGxcbiAgICBpblxuICAgIGNyZWF0ZSBkZWNsc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgdmFsaWQgTmFtZWREZWNsXCIsIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IHJlbW92ZV9zdWZmaXhfYWZ0ZXJfbGFzdF9vY2N1cnJlbmNlIHAgbGlzdCA9XG4gIGxldCByZWMgYXV4IGxpc3QgYnVmZmVyIG91dHB1dCA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBoIDo6IHQgd2hlbiBwIGggLT4gYXV4IHQgW10gKChoIDo6IGJ1ZmZlcikgOjogb3V0cHV0KVxuICAgIHwgaCA6OiB0IC0+IGF1eCB0IChoIDo6IGJ1ZmZlcikgb3V0cHV0XG4gICAgfCBbXSAtPiBvdXRwdXRcbiAgaW5cbiAgbGV0IHJldl9jb25jYXQgbGlzdCA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKExpc3QuZm9sZF9sZWZ0IChmdW4gb3V0cHV0IGEgLT4gYSA6OiBvdXRwdXQpKSBbXSBsaXN0XG4gIGluXG4gIHJldl9jb25jYXQgKGF1eCBsaXN0IFtdIFtdKVxuXG5sZXQgcmVjIGxhc3QgPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhaWx3aXRoIFwibGlzdF9sYXN0XCJcbiAgfCBbIHggXSAtPiB4XG4gIHwgXyA6OiBsIC0+IGxhc3QgbFxuXG5sZXQgcmVjIGF1eF9wb3BfbGFzdCBhY2MgPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhaWx3aXRoIFwibGlzdF9wb3BfbGFzdFwiXG4gIHwgWyB4IF0gLT4gTGlzdC5yZXYgYWNjLCB4XG4gIHwgaCA6OiB0IC0+IGF1eF9wb3BfbGFzdCAoaCA6OiBhY2MpIHRcblxubGV0IHBvcF9sYXN0IGwgPSBhdXhfcG9wX2xhc3QgW10gbFxuXG5sZXQgY29uc19vcHRpb24gaCB0ID1cbiAgbWF0Y2ggaCB3aXRoXG4gIHwgU29tZSB4IC0+IHggOjogdFxuICB8IE5vbmUgLT4gdFxuXG5sZXQgcmVjIHNtYXJ0X2ZpbHRlciBmID0gZnVuY3Rpb25cbiAgfCB0IDo6IHEgYXMgbCAtPlxuICAgIGxldCBxJyA9IHNtYXJ0X2ZpbHRlciBmIHEgaW5cbiAgICBpZiBmIHQgdGhlblxuICAgICAgaWYgcSA9PSBxJyB0aGVuXG4gICAgICAgIGxcbiAgICAgIGVsc2VcbiAgICAgICAgdCA6OiBxJ1xuICAgIGVsc2VcbiAgICAgIHEnXG4gIHwgbCAtPiBsXG5cbmxldCByZWMgc21hcnRfbWFwIGYgPSBmdW5jdGlvblxuICB8IHQgOjogcSBhcyBsIC0+XG4gICAgbGV0IHEnID0gc21hcnRfbWFwIGYgcSBpblxuICAgIGxldCB0JyA9IGYgdCBpblxuICAgIGlmIHQnID09IHQgJiYgcScgPT0gcSB0aGVuXG4gICAgICBsXG4gICAgZWxzZVxuICAgICAgdCcgOjogcSdcbiAgfCBsIC0+IGxcblxubGV0IHJldl9tYXBpIGYgbCA9XG4gIGxldCByZWMgYXV4X21hcGkgaSBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoIDo6IHEgLT4gYXV4X21hcGkgKHByZWQgaSkgKGYgaSBoIDo6IGFjYykgcVxuICBpblxuICBhdXhfbWFwaSAoTGlzdC5sZW5ndGggbCAtIDEpIFtdIGxcblxubGV0IHJlYyBtYXBfb3B0aW9uIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgaCA6OiBxIC0+IGNvbnNfb3B0aW9uIChmIGgpIChtYXBfb3B0aW9uIGYgcSlcblxubGV0IGV4aXN0c191bmlxIGYgbCA9XG4gIGxldCByZWMgc2Vjb25kID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHRydWVcbiAgICB8IGggOjogdCAtPiAobm90IChmIGgpKSAmJiBzZWNvbmQgdFxuICBpblxuICBsZXQgcmVjIGZpcnN0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmIGYgaCB0aGVuXG4gICAgICAgIHNlY29uZCB0XG4gICAgICBlbHNlXG4gICAgICAgIGZpcnN0IHRcbiAgaW5cbiAgZmlyc3QgbFxuXG5sZXQgbWVyZ2VfdW5pcSBjbXAgbDEgbDIgPVxuICBsZXQgcmVjIGF1eF9tZXJnZV91bmlxIGwxIGwyIGsgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgXyAtPiBrIGwyXG4gICAgfCBfLCBbXSAtPiBrIGwxXG4gICAgfCBoMSA6OiB0MSwgaDIgOjogdDIgLT5cbiAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgIGF1eF9tZXJnZV91bmlxIHQxIGwyIChmdW4gbyAtPlxuICAgICAgICAgICAgaWYgbyA9PSB0MSB0aGVuXG4gICAgICAgICAgICAgIGsgbDFcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgayAoaDEgOjogbykpXG4gICAgICBlbHNlIGlmIGMgPiAwIHRoZW5cbiAgICAgICAgYXV4X21lcmdlX3VuaXEgbDEgdDIgKGZ1biBvIC0+XG4gICAgICAgICAgICBpZiBvID09IHQyIHRoZW5cbiAgICAgICAgICAgICAgayBsMlxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBrIChoMiA6OiBvKSlcbiAgICAgIGVsc2VcbiAgICAgICAgYXV4X21lcmdlX3VuaXEgdDEgdDIgKGZ1biBvIC0+XG4gICAgICAgICAgICBpZiBvID09IHQxIHRoZW5cbiAgICAgICAgICAgICAgayBsMVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBrIChoMSA6OiBvKSlcbiAgaW5cbiAgYXV4X21lcmdlX3VuaXEgbDEgbDIgKGZ1biB4IC0+IHgpXG5cbmxldCByZWMgcmV2X21hcF9hcHBlbmQgZiBsIGFjYyA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IGggOjogdCAtPiByZXZfbWFwX2FwcGVuZCBmIHQgKGYgaCA6OiBhY2MpXG5cbmxldCByZWMgbWFwX2ZsYXR0ZW4gZiA9IGZ1bmN0aW9uXG4gICgqIGxpc3RfYmluZCAqKVxuICB8IFtdIC0+IFtdXG4gIHwgaCA6OiB0IC0+IExpc3QuYXBwZW5kIChmIGgpIChtYXBfZmxhdHRlbiBmIHQpXG4oKiBMaXN0LnJldlxuICAgKExpc3QuZm9sZF9sZWZ0IChmdW4geCB5IC0+IExpc3QucmV2X2FwcGVuZCB5IHgpIFtdIChMaXN0LnJldl9tYXAgZiBsKSlcbiopXG5cbmxldCByZW1vdmVfY29uc2VjdXRpdmVfZG91YmxlIGwgPVxuICBsZXQgcmVjIGF1eCBsYXN0IGwgYWNjID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IGggOjogcSB3aGVuIGxhc3QgPSBoIC0+IGF1eCBsYXN0IHEgYWNjXG4gICAgfCBoIDo6IHEgLT4gYXV4IGggcSAoaCA6OiBhY2MpXG4gICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBoIDo6IHEgLT4gYXV4IGggcSBbIGggXVxuXG5sZXQgcmVjIGZvbGRfcmlnaHRfbWFwIGYgbCB4ID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW10sIHhcbiAgfCBoIDo6IHQgLT5cbiAgICBsZXQgdCcsIHgnID0gZm9sZF9yaWdodF9tYXAgZiB0IHggaW5cbiAgICBsZXQgaCcsIHgnJyA9IGYgaCB4JyBpblxuICAgIGgnIDo6IHQnLCB4JydcblxubGV0IHJlYyBmb2xkX2xlZnQyIGYgeCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IHhcbiAgfCBbXSwgXyA6OiBfIHwgXyA6OiBfLCBbXSAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImxpc3RfZm9sZF9sZWZ0MlwiKVxuICB8IGgxIDo6IHQxLCBoMiA6OiB0MiAtPiBmb2xkX2xlZnQyIGYgKGYgeCBoMSBoMikgdDEgdDJcblxubGV0IHJhbmRvbSBycyBsID0gTGlzdC5udGggbCAoUmFuZG9tLlN0YXRlLmludCBycyAoTGlzdC5sZW5ndGggbCkpXG5cbmxldCBmaW5kX29wdGlvbiAocCA6ICdhIC0+IGJvb2wpIChsIDogJ2EgbGlzdCkgOiAnYSBvcHRpb24gPVxuICB0cnkgU29tZSAoTGlzdC5maW5kIHAgbCkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggJCQgKSA9IGNvbnNfb3B0aW9uXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHtcbiAgYmFnOiBpbnQgTW9kcy5EeW5BcnJheS50O1xuICBtdXRhYmxlIHNpemU6IGludDtcbiAgZGljdDogKGludCwgaW50KSBIYXNodGJsLnQ7XG59XG5cbmxldCBjcmVhdGUgc2l6ZSA9XG4gIHsgc2l6ZSA9IDA7IGJhZyA9IE1vZHMuRHluQXJyYXkuY3JlYXRlIHNpemUgKC0xKTsgZGljdCA9IEhhc2h0YmwuY3JlYXRlIHNpemUgfVxuXG5sZXQgcHJpbnQgZiBzID1cbiAgaWYgcy5zaXplIDw9IDAgdGhlblxuICAgIFBwLmVtcHR5X3NldCBmXG4gIGVsc2UgKFxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcInsgXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgZm9yIGkgPSAwIHRvIHMuc2l6ZSAtIDIgZG9cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ludCBmIChNb2RzLkR5bkFycmF5LmdldCBzLmJhZyBpKTtcbiAgICAgICAgUHAuY29tbWEgZlxuICAgICAgZG9uZVxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2ludCBmIChNb2RzLkR5bkFycmF5LmdldCBzLmJhZyAocy5zaXplIC0gMSkpIGluXG4gICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIH1cIlxuICApXG5cbmxldCBpc19lbXB0eSBzID0gcy5zaXplID0gMFxuXG5sZXQgYWRkIHggcyA9XG4gIGlmIG5vdCAoSGFzaHRibC5tZW0gcy5kaWN0IHgpIHRoZW4gKFxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHMuYmFnIHMuc2l6ZSB4IGluXG4gICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIHMuZGljdCB4IHMuc2l6ZSBpblxuICAgIHMuc2l6ZSA8LSBzdWNjIHMuc2l6ZVxuICApXG5cbmxldCByZW1vdmUgeCBzID1cbiAgdHJ5XG4gICAgbGV0IHBvcyA9IEhhc2h0YmwuZmluZCBzLmRpY3QgeCBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVtb3ZlIHMuZGljdCB4IGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHBvcyA8IHMuc2l6ZSAtIDEgdGhlbiAoXG4gICAgICAgIGxldCBsYXN0ID0gTW9kcy5EeW5BcnJheS5nZXQgcy5iYWcgKHMuc2l6ZSAtIDEpIGluXG4gICAgICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBzLmRpY3QgbGFzdCBwb3MgaW5cbiAgICAgICAgTW9kcy5EeW5BcnJheS5zZXQgcy5iYWcgcG9zIGxhc3RcbiAgICAgIClcbiAgICBpblxuICAgIHMuc2l6ZSA8LSBwcmVkIHMuc2l6ZVxuICB3aXRoIE5vdF9mb3VuZCAtPiAoKVxuXG5sZXQgc2l6ZSBzID0gcy5zaXplXG5cbmxldCByYW5kb20gcnMgcyA9XG4gIGlmIHMuc2l6ZSA8IDEgdGhlblxuICAgIE5vbmVcbiAgZWxzZVxuICAgIFNvbWUgKE1vZHMuRHluQXJyYXkuZ2V0IHMuYmFnIChSYW5kb20uU3RhdGUuaW50IHJzIHMuc2l6ZSkpXG5cbmxldCBmb2xkIGYgcyBhY2MgPVxuICBUb29scy5yZWN0aSAoZnVuIGFjYyBpIC0+IGYgKE1vZHMuRHluQXJyYXkuZ2V0IHMuYmFnIGkpIGFjYykgYWNjIHMuc2l6ZVxuXG5sZXQgbWVtIHggcyA9IEhhc2h0YmwubWVtIHMuZGljdCB4XG4iLCJ0eXBlICdhIHQgPSAnYSBsaXN0XG5cbmxldCBjcmVhdGUgX2kgX2RlZmF1bHQgPSBbXVxubGV0IGFkZCB4IHQgPSB4IDo6IHRcbmxldCBpdGVyIGYgdCA9IExpc3QuaXRlciBmIChMaXN0LnJldiB0KVxubGV0IGNsZWFuIF8gPSBbXVxuIiwibW9kdWxlIHR5cGUgSGFzaCA9IHNpZ1xuICB0eXBlIGhhc2hlZF9saXN0XG4gIHR5cGUgZWx0XG4gIHR5cGUgY2FjaGVcblxuICB2YWwgaW50X29mX2hhc2hlZF9saXN0IDogaGFzaGVkX2xpc3QgLT4gaW50XG4gIHZhbCBjb21wYXJlIDogaGFzaGVkX2xpc3QgLT4gaGFzaGVkX2xpc3QgLT4gaW50XG4gIHZhbCBpbml0IDogdW5pdCAtPiBjYWNoZVxuICB2YWwgaGFzaCA6IGNhY2hlIC0+IGVsdCBsaXN0IC0+IGNhY2hlICogaGFzaGVkX2xpc3RcbiAgdmFsIGNvbnMgOiBjYWNoZSAtPiBlbHQgLT4gaGFzaGVkX2xpc3QgLT4gY2FjaGUgKiBoYXNoZWRfbGlzdFxuICB2YWwgZW1wdHkgOiBoYXNoZWRfbGlzdFxuICB2YWwgcHJpbnQgOiBGb3JtYXQuZm9ybWF0dGVyIC0+IGhhc2hlZF9saXN0IC0+IHVuaXRcbiAgdmFsIHByaW50X2NhY2hlIDogRm9ybWF0LmZvcm1hdHRlciAtPiBjYWNoZSAtPiB1bml0XG5lbmRcblxubW9kdWxlIE1ha2UgPVxuZnVuY3RvclxuICAoQSA6IFNldE1hcC5PcmRlcmVkVHlwZSlcbiAgLT5cbiAgc3RydWN0XG4gICAgdHlwZSBlbHQgPSBBLnRcbiAgICB0eXBlIGVsdF9pZCA9IGludFxuICAgIHR5cGUgaGFzaGVkX2xpc3QgPSBpbnRcblxuICAgIGxldCBpbnRfb2ZfaGFzaGVkX2xpc3QgKGggOiBoYXNoZWRfbGlzdCkgOiBpbnQgPSBoXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5cbiAgICBtb2R1bGUgU2V0TWFwID0gU2V0TWFwLk1ha2UgKEEpXG5cbiAgICB0eXBlIGNhY2hlID0ge1xuICAgICAgZGljdGlvbmFyeTogZWx0X2lkIFNldE1hcC5NYXAudDtcbiAgICAgIG5leHRfZWx0X2lkOiBlbHRfaWQ7XG4gICAgICBjb25zOiBoYXNoZWRfbGlzdCBvcHRpb24gTW9kcy5EeW5BcnJheS50IG9wdGlvbiBNb2RzLkR5bkFycmF5LnQ7XG4gICAgICBuZXh0X2xpc3RfaWQ6IGhhc2hlZF9saXN0O1xuICAgIH1cblxuICAgIGxldCBmc3RfZWx0X2lkID0gMVxuICAgIGxldCBuZXh0X2VsdF9pZCA9IHN1Y2NcblxuICAgIGxldCBmcmVzaF9lbHRfaWQgY2FjaGUgPVxuICAgICAgKCBjYWNoZS5uZXh0X2VsdF9pZCxcbiAgICAgICAgeyBjYWNoZSB3aXRoIG5leHRfZWx0X2lkID0gbmV4dF9lbHRfaWQgY2FjaGUubmV4dF9lbHRfaWQgfSApXG5cbiAgICBsZXQgZnN0X2xpc3RfaWQgPSAxXG4gICAgbGV0IG5leHRfbGlzdF9pZCA9IHN1Y2NcblxuICAgIGxldCBmcmVzaF9saXN0X2lkIGNhY2hlID1cbiAgICAgICggeyBjYWNoZSB3aXRoIG5leHRfbGlzdF9pZCA9IG5leHRfbGlzdF9pZCBjYWNoZS5uZXh0X2xpc3RfaWQgfSxcbiAgICAgICAgY2FjaGUubmV4dF9saXN0X2lkIClcblxuICAgIGxldCBpbml0ICgpID1cbiAgICAgIHtcbiAgICAgICAgZGljdGlvbmFyeSA9IFNldE1hcC5NYXAuZW1wdHk7XG4gICAgICAgIG5leHRfZWx0X2lkID0gZnN0X2VsdF9pZDtcbiAgICAgICAgY29ucyA9IE1vZHMuRHluQXJyYXkuY3JlYXRlIDAgTm9uZTtcbiAgICAgICAgbmV4dF9saXN0X2lkID0gZnN0X2xpc3RfaWQ7XG4gICAgICB9XG5cbiAgICBsZXQgZW1wdHkgPSAwXG5cbiAgICBsZXQgaGFzaF9lbHQgY2FjaGUgZWx0ID1cbiAgICAgIG1hdGNoIFNldE1hcC5NYXAuZmluZF9vcHRpb24gZWx0IGNhY2hlLmRpY3Rpb25hcnkgd2l0aFxuICAgICAgfCBTb21lIGkgLT4gY2FjaGUsIGlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgaWQsIGNhY2hlID0gZnJlc2hfZWx0X2lkIGNhY2hlIGluXG4gICAgICAgIHsgY2FjaGUgd2l0aCBkaWN0aW9uYXJ5ID0gU2V0TWFwLk1hcC5hZGQgZWx0IGlkIGNhY2hlLmRpY3Rpb25hcnkgfSwgaWRcblxuICAgIGxldCBjb25zIGNhY2hlIGhlYWQgdGFpbCA9XG4gICAgICBsZXQgY2FjaGUsIGhhc2hfaGVhZCA9IGhhc2hfZWx0IGNhY2hlIGhlYWQgaW5cbiAgICAgIGxldCBzdWJ0YWIgPVxuICAgICAgICBtYXRjaCBNb2RzLkR5bkFycmF5LmdldCBjYWNoZS5jb25zIGhhc2hfaGVhZCB3aXRoXG4gICAgICAgIHwgU29tZSBzdWJ0YWIgLT4gc3VidGFiXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBzdWJ0YWIgPSBNb2RzLkR5bkFycmF5LmNyZWF0ZSAwIE5vbmUgaW5cbiAgICAgICAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBjYWNoZS5jb25zIGhhc2hfaGVhZCAoU29tZSBzdWJ0YWIpIGluXG4gICAgICAgICAgc3VidGFiXG4gICAgICBpblxuICAgICAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgc3VidGFiIHRhaWwgd2l0aFxuICAgICAgfCBTb21lIGhhc2ggLT4gY2FjaGUsIGhhc2hcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgY2FjaGUsIGhhc2ggPSBmcmVzaF9saXN0X2lkIGNhY2hlIGluXG4gICAgICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHN1YnRhYiB0YWlsIChTb21lIGhhc2gpIGluXG4gICAgICAgIGNhY2hlLCBoYXNoXG5cbiAgICBsZXQgcmVjIGhhc2ggY2FjaGUgbGlzdCA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgW10gLT4gY2FjaGUsIGVtcHR5XG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICBsZXQgY2FjaGUsIHQgPSBoYXNoIGNhY2hlIHQgaW5cbiAgICAgICAgY29ucyBjYWNoZSBoIHRcblxuICAgIGxldCBwcmludCBmb3JtYXR0ZXIgPSBGb3JtYXQuZnByaW50ZiBmb3JtYXR0ZXIgXCIlaVwiXG5cbiAgICBsZXQgcHJpbnRfY2FjaGUgZm9ybWF0dGVyIGNhY2hlID1cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZvcm1hdHRlclxuICAgICAgICAgIFwiQ2FjaGVcXG4gbmV4dF9mcmVzaF9saXN0X2lkOiAlaTsgbmV4dF9mcmVzaF9lbHRfaWQ6ICVpXFxuXCJcbiAgICAgICAgICBjYWNoZS5uZXh0X2xpc3RfaWQgY2FjaGUubmV4dF9lbHRfaWRcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBTZXRNYXAuTWFwLml0ZXJcbiAgICAgICAgICAoZnVuIGEgaSAtPiBGb3JtYXQuZnByaW50ZiBmb3JtYXR0ZXIgXCJESUM6JWE6JWlcXG5cIiBBLnByaW50IGEgaSlcbiAgICAgICAgICBjYWNoZS5kaWN0aW9uYXJ5XG4gICAgICBpblxuICAgICAgTW9kcy5EeW5BcnJheS5pdGVyaVxuICAgICAgICAoZnVuIGEgb3B0IC0+XG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgb3B0IC0+XG4gICAgICAgICAgICBNb2RzLkR5bkFycmF5Lml0ZXJpXG4gICAgICAgICAgICAgIChmdW4gYiBrIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggayB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBTb21lIGsgLT4gRm9ybWF0LmZwcmludGYgZm9ybWF0dGVyIFwiKCVpLCVpKS0+JWkgXFxuXCIgYSBiIGspXG4gICAgICAgICAgICAgIG9wdClcbiAgICAgICAgY2FjaGUuY29uc1xuICBlbmRcbiIsInR5cGUgdCA9IHsgbnVtOiBpbnQ7IGRlbjogaW50IH1cblxubGV0IHNpZ24gZiA9XG4gIGlmIGYubnVtID0gMCB0aGVuXG4gICAgeyBudW0gPSAwOyBkZW4gPSAxIH1cbiAgZWxzZSBpZiBmLmRlbiA8IDAgdGhlblxuICAgIHsgbnVtID0gLWYubnVtOyBkZW4gPSAtZi5kZW4gfVxuICBlbHNlXG4gICAgZlxuXG5sZXQgc2ltcGxpZnkgZiA9XG4gIGxldCBnY2QgPSBUb29scy5nY2RfMiBmLm51bSBmLmRlbiBpblxuICBzaWduIHsgbnVtID0gZi5udW0gLyBnY2Q7IGRlbiA9IGYuZGVuIC8gZ2NkIH1cblxubGV0IGFkZCBhIGIgPVxuICBzaW1wbGlmeSB7IG51bSA9IChhLm51bSAqIGIuZGVuKSArIChiLm51bSAqIGEuZGVuKTsgZGVuID0gYi5kZW4gKiBhLmRlbiB9XG5cbmxldCBvcCBmID0geyBmIHdpdGggbnVtID0gLWYubnVtIH1cbmxldCBzdWIgYSBiID0gYWRkIGEgKG9wIGIpXG5sZXQgbXVsdCBhIGIgPSBzaW1wbGlmeSB7IG51bSA9IGEubnVtICogYi5udW07IGRlbiA9IGEuZGVuICogYi5kZW4gfVxuXG5sZXQgaW52IGEgPVxuICBpZiBhLm51bSA9IDAgdGhlblxuICAgIE5vbmVcbiAgZWxzZVxuICAgIFNvbWUgeyBudW0gPSBhLmRlbjsgZGVuID0gYS5udW0gfVxuXG5sZXQgZGl2IGEgYiA9XG4gIG1hdGNoIGludiBiIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGJfaW52IC0+IFNvbWUgKG11bHQgYSBiX2ludilcblxubGV0IHplcm8gPSB7IG51bSA9IDA7IGRlbiA9IDEgfVxubGV0IGlzX2VxdWFsIGEgYiA9IGEgPSBiXG5sZXQgb2ZfaW50IGkgPSBzaW1wbGlmeSB7IG51bSA9IGk7IGRlbiA9IDEgfVxubGV0IGlzX3plcm8gYSA9IGEubnVtID0gMFxubGV0IG9uZSA9IG9mX2ludCAxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7IHdhaXRpbmdfZWx0czogJ2EgbGlzdDsgbGlzdDogJ2EgbGlzdCB9XG5cbmxldCBlbXB0eSA9IHsgd2FpdGluZ19lbHRzID0gW107IGxpc3QgPSBbXSB9XG5sZXQgaXNfZW1wdHkgdCA9IHQud2FpdGluZ19lbHRzID0gW10gJiYgdC5saXN0ID0gW11cbmxldCBwdXNoIGEgdCA9IHsgdCB3aXRoIHdhaXRpbmdfZWx0cyA9IGEgOjogdC53YWl0aW5nX2VsdHMgfVxuXG5sZXQgcmVjIHBvcCB0ID1cbiAgbWF0Y2ggdC5saXN0IHdpdGhcbiAgfCBoZWFkIDo6IHRhaWwgLT4geyB0IHdpdGggbGlzdCA9IHRhaWwgfSwgU29tZSBoZWFkXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC53YWl0aW5nX2VsdHMgd2l0aFxuICAgIHwgW10gLT4gdCwgTm9uZVxuICAgIHwgbGlzdCAtPiBwb3AgeyB3YWl0aW5nX2VsdHMgPSBbXTsgbGlzdCA9IExpc3QucmV2IGxpc3QgfSlcbiIsIigqIENvcHlyaWdodCAoYykgMjAxMSwgSm9uYXRoYW4gRGVycXVlIC0gTUlUIGxpY2Vuc2VkICopXG5cbmxldCAoICYmJiApID0gSW50MzIubG9nYW5kXG5sZXQgKCBeXl4gKSA9IEludDMyLmxvZ3hvclxubGV0ICggPj4+ICkgPSBJbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsXG5cbmxldCBjcmNfdGFibGUgPVxuICBbfFxuICAgIDB4MDAwMDAwMDBsO1xuICAgIDB4NzcwNzMwOTZsO1xuICAgIDB4ZWUwZTYxMmNsO1xuICAgIDB4OTkwOTUxYmFsO1xuICAgIDB4MDc2ZGM0MTlsO1xuICAgIDB4NzA2YWY0OGZsO1xuICAgIDB4ZTk2M2E1MzVsO1xuICAgIDB4OWU2NDk1YTNsO1xuICAgIDB4MGVkYjg4MzJsO1xuICAgIDB4NzlkY2I4YTRsO1xuICAgIDB4ZTBkNWU5MWVsO1xuICAgIDB4OTdkMmQ5ODhsO1xuICAgIDB4MDliNjRjMmJsO1xuICAgIDB4N2ViMTdjYmRsO1xuICAgIDB4ZTdiODJkMDdsO1xuICAgIDB4OTBiZjFkOTFsO1xuICAgIDB4MWRiNzEwNjRsO1xuICAgIDB4NmFiMDIwZjJsO1xuICAgIDB4ZjNiOTcxNDhsO1xuICAgIDB4ODRiZTQxZGVsO1xuICAgIDB4MWFkYWQ0N2RsO1xuICAgIDB4NmRkZGU0ZWJsO1xuICAgIDB4ZjRkNGI1NTFsO1xuICAgIDB4ODNkMzg1YzdsO1xuICAgIDB4MTM2Yzk4NTZsO1xuICAgIDB4NjQ2YmE4YzBsO1xuICAgIDB4ZmQ2MmY5N2FsO1xuICAgIDB4OGE2NWM5ZWNsO1xuICAgIDB4MTQwMTVjNGZsO1xuICAgIDB4NjMwNjZjZDlsO1xuICAgIDB4ZmEwZjNkNjNsO1xuICAgIDB4OGQwODBkZjVsO1xuICAgIDB4M2I2ZTIwYzhsO1xuICAgIDB4NGM2OTEwNWVsO1xuICAgIDB4ZDU2MDQxZTRsO1xuICAgIDB4YTI2NzcxNzJsO1xuICAgIDB4M2MwM2U0ZDFsO1xuICAgIDB4NGIwNGQ0NDdsO1xuICAgIDB4ZDIwZDg1ZmRsO1xuICAgIDB4YTUwYWI1NmJsO1xuICAgIDB4MzViNWE4ZmFsO1xuICAgIDB4NDJiMjk4NmNsO1xuICAgIDB4ZGJiYmM5ZDZsO1xuICAgIDB4YWNiY2Y5NDBsO1xuICAgIDB4MzJkODZjZTNsO1xuICAgIDB4NDVkZjVjNzVsO1xuICAgIDB4ZGNkNjBkY2ZsO1xuICAgIDB4YWJkMTNkNTlsO1xuICAgIDB4MjZkOTMwYWNsO1xuICAgIDB4NTFkZTAwM2FsO1xuICAgIDB4YzhkNzUxODBsO1xuICAgIDB4YmZkMDYxMTZsO1xuICAgIDB4MjFiNGY0YjVsO1xuICAgIDB4NTZiM2M0MjNsO1xuICAgIDB4Y2ZiYTk1OTlsO1xuICAgIDB4YjhiZGE1MGZsO1xuICAgIDB4MjgwMmI4OWVsO1xuICAgIDB4NWYwNTg4MDhsO1xuICAgIDB4YzYwY2Q5YjJsO1xuICAgIDB4YjEwYmU5MjRsO1xuICAgIDB4MmY2ZjdjODdsO1xuICAgIDB4NTg2ODRjMTFsO1xuICAgIDB4YzE2MTFkYWJsO1xuICAgIDB4YjY2NjJkM2RsO1xuICAgIDB4NzZkYzQxOTBsO1xuICAgIDB4MDFkYjcxMDZsO1xuICAgIDB4OThkMjIwYmNsO1xuICAgIDB4ZWZkNTEwMmFsO1xuICAgIDB4NzFiMTg1ODlsO1xuICAgIDB4MDZiNmI1MWZsO1xuICAgIDB4OWZiZmU0YTVsO1xuICAgIDB4ZThiOGQ0MzNsO1xuICAgIDB4NzgwN2M5YTJsO1xuICAgIDB4MGYwMGY5MzRsO1xuICAgIDB4OTYwOWE4OGVsO1xuICAgIDB4ZTEwZTk4MThsO1xuICAgIDB4N2Y2YTBkYmJsO1xuICAgIDB4MDg2ZDNkMmRsO1xuICAgIDB4OTE2NDZjOTdsO1xuICAgIDB4ZTY2MzVjMDFsO1xuICAgIDB4NmI2YjUxZjRsO1xuICAgIDB4MWM2YzYxNjJsO1xuICAgIDB4ODU2NTMwZDhsO1xuICAgIDB4ZjI2MjAwNGVsO1xuICAgIDB4NmMwNjk1ZWRsO1xuICAgIDB4MWIwMWE1N2JsO1xuICAgIDB4ODIwOGY0YzFsO1xuICAgIDB4ZjUwZmM0NTdsO1xuICAgIDB4NjViMGQ5YzZsO1xuICAgIDB4MTJiN2U5NTBsO1xuICAgIDB4OGJiZWI4ZWFsO1xuICAgIDB4ZmNiOTg4N2NsO1xuICAgIDB4NjJkZDFkZGZsO1xuICAgIDB4MTVkYTJkNDlsO1xuICAgIDB4OGNkMzdjZjNsO1xuICAgIDB4ZmJkNDRjNjVsO1xuICAgIDB4NGRiMjYxNThsO1xuICAgIDB4M2FiNTUxY2VsO1xuICAgIDB4YTNiYzAwNzRsO1xuICAgIDB4ZDRiYjMwZTJsO1xuICAgIDB4NGFkZmE1NDFsO1xuICAgIDB4M2RkODk1ZDdsO1xuICAgIDB4YTRkMWM0NmRsO1xuICAgIDB4ZDNkNmY0ZmJsO1xuICAgIDB4NDM2OWU5NmFsO1xuICAgIDB4MzQ2ZWQ5ZmNsO1xuICAgIDB4YWQ2Nzg4NDZsO1xuICAgIDB4ZGE2MGI4ZDBsO1xuICAgIDB4NDQwNDJkNzNsO1xuICAgIDB4MzMwMzFkZTVsO1xuICAgIDB4YWEwYTRjNWZsO1xuICAgIDB4ZGQwZDdjYzlsO1xuICAgIDB4NTAwNTcxM2NsO1xuICAgIDB4MjcwMjQxYWFsO1xuICAgIDB4YmUwYjEwMTBsO1xuICAgIDB4YzkwYzIwODZsO1xuICAgIDB4NTc2OGI1MjVsO1xuICAgIDB4MjA2Zjg1YjNsO1xuICAgIDB4Yjk2NmQ0MDlsO1xuICAgIDB4Y2U2MWU0OWZsO1xuICAgIDB4NWVkZWY5MGVsO1xuICAgIDB4MjlkOWM5OThsO1xuICAgIDB4YjBkMDk4MjJsO1xuICAgIDB4YzdkN2E4YjRsO1xuICAgIDB4NTliMzNkMTdsO1xuICAgIDB4MmViNDBkODFsO1xuICAgIDB4YjdiZDVjM2JsO1xuICAgIDB4YzBiYTZjYWRsO1xuICAgIDB4ZWRiODgzMjBsO1xuICAgIDB4OWFiZmIzYjZsO1xuICAgIDB4MDNiNmUyMGNsO1xuICAgIDB4NzRiMWQyOWFsO1xuICAgIDB4ZWFkNTQ3MzlsO1xuICAgIDB4OWRkMjc3YWZsO1xuICAgIDB4MDRkYjI2MTVsO1xuICAgIDB4NzNkYzE2ODNsO1xuICAgIDB4ZTM2MzBiMTJsO1xuICAgIDB4OTQ2NDNiODRsO1xuICAgIDB4MGQ2ZDZhM2VsO1xuICAgIDB4N2E2YTVhYThsO1xuICAgIDB4ZTQwZWNmMGJsO1xuICAgIDB4OTMwOWZmOWRsO1xuICAgIDB4MGEwMGFlMjdsO1xuICAgIDB4N2QwNzllYjFsO1xuICAgIDB4ZjAwZjkzNDRsO1xuICAgIDB4ODcwOGEzZDJsO1xuICAgIDB4MWUwMWYyNjhsO1xuICAgIDB4NjkwNmMyZmVsO1xuICAgIDB4Zjc2MjU3NWRsO1xuICAgIDB4ODA2NTY3Y2JsO1xuICAgIDB4MTk2YzM2NzFsO1xuICAgIDB4NmU2YjA2ZTdsO1xuICAgIDB4ZmVkNDFiNzZsO1xuICAgIDB4ODlkMzJiZTBsO1xuICAgIDB4MTBkYTdhNWFsO1xuICAgIDB4NjdkZDRhY2NsO1xuICAgIDB4ZjliOWRmNmZsO1xuICAgIDB4OGViZWVmZjlsO1xuICAgIDB4MTdiN2JlNDNsO1xuICAgIDB4NjBiMDhlZDVsO1xuICAgIDB4ZDZkNmEzZThsO1xuICAgIDB4YTFkMTkzN2VsO1xuICAgIDB4MzhkOGMyYzRsO1xuICAgIDB4NGZkZmYyNTJsO1xuICAgIDB4ZDFiYjY3ZjFsO1xuICAgIDB4YTZiYzU3NjdsO1xuICAgIDB4M2ZiNTA2ZGRsO1xuICAgIDB4NDhiMjM2NGJsO1xuICAgIDB4ZDgwZDJiZGFsO1xuICAgIDB4YWYwYTFiNGNsO1xuICAgIDB4MzYwMzRhZjZsO1xuICAgIDB4NDEwNDdhNjBsO1xuICAgIDB4ZGY2MGVmYzNsO1xuICAgIDB4YTg2N2RmNTVsO1xuICAgIDB4MzE2ZThlZWZsO1xuICAgIDB4NDY2OWJlNzlsO1xuICAgIDB4Y2I2MWIzOGNsO1xuICAgIDB4YmM2NjgzMWFsO1xuICAgIDB4MjU2ZmQyYTBsO1xuICAgIDB4NTI2OGUyMzZsO1xuICAgIDB4Y2MwYzc3OTVsO1xuICAgIDB4YmIwYjQ3MDNsO1xuICAgIDB4MjIwMjE2YjlsO1xuICAgIDB4NTUwNTI2MmZsO1xuICAgIDB4YzViYTNiYmVsO1xuICAgIDB4YjJiZDBiMjhsO1xuICAgIDB4MmJiNDVhOTJsO1xuICAgIDB4NWNiMzZhMDRsO1xuICAgIDB4YzJkN2ZmYTdsO1xuICAgIDB4YjVkMGNmMzFsO1xuICAgIDB4MmNkOTllOGJsO1xuICAgIDB4NWJkZWFlMWRsO1xuICAgIDB4OWI2NGMyYjBsO1xuICAgIDB4ZWM2M2YyMjZsO1xuICAgIDB4NzU2YWEzOWNsO1xuICAgIDB4MDI2ZDkzMGFsO1xuICAgIDB4OWMwOTA2YTlsO1xuICAgIDB4ZWIwZTM2M2ZsO1xuICAgIDB4NzIwNzY3ODVsO1xuICAgIDB4MDUwMDU3MTNsO1xuICAgIDB4OTViZjRhODJsO1xuICAgIDB4ZTJiODdhMTRsO1xuICAgIDB4N2JiMTJiYWVsO1xuICAgIDB4MGNiNjFiMzhsO1xuICAgIDB4OTJkMjhlOWJsO1xuICAgIDB4ZTVkNWJlMGRsO1xuICAgIDB4N2NkY2VmYjdsO1xuICAgIDB4MGJkYmRmMjFsO1xuICAgIDB4ODZkM2QyZDRsO1xuICAgIDB4ZjFkNGUyNDJsO1xuICAgIDB4NjhkZGIzZjhsO1xuICAgIDB4MWZkYTgzNmVsO1xuICAgIDB4ODFiZTE2Y2RsO1xuICAgIDB4ZjZiOTI2NWJsO1xuICAgIDB4NmZiMDc3ZTFsO1xuICAgIDB4MThiNzQ3NzdsO1xuICAgIDB4ODgwODVhZTZsO1xuICAgIDB4ZmYwZjZhNzBsO1xuICAgIDB4NjYwNjNiY2FsO1xuICAgIDB4MTEwMTBiNWNsO1xuICAgIDB4OGY2NTllZmZsO1xuICAgIDB4Zjg2MmFlNjlsO1xuICAgIDB4NjE2YmZmZDNsO1xuICAgIDB4MTY2Y2NmNDVsO1xuICAgIDB4YTAwYWUyNzhsO1xuICAgIDB4ZDcwZGQyZWVsO1xuICAgIDB4NGUwNDgzNTRsO1xuICAgIDB4MzkwM2IzYzJsO1xuICAgIDB4YTc2NzI2NjFsO1xuICAgIDB4ZDA2MDE2ZjdsO1xuICAgIDB4NDk2OTQ3NGRsO1xuICAgIDB4M2U2ZTc3ZGJsO1xuICAgIDB4YWVkMTZhNGFsO1xuICAgIDB4ZDlkNjVhZGNsO1xuICAgIDB4NDBkZjBiNjZsO1xuICAgIDB4MzdkODNiZjBsO1xuICAgIDB4YTliY2FlNTNsO1xuICAgIDB4ZGViYjllYzVsO1xuICAgIDB4NDdiMmNmN2ZsO1xuICAgIDB4MzBiNWZmZTlsO1xuICAgIDB4YmRiZGYyMWNsO1xuICAgIDB4Y2FiYWMyOGFsO1xuICAgIDB4NTNiMzkzMzBsO1xuICAgIDB4MjRiNGEzYTZsO1xuICAgIDB4YmFkMDM2MDVsO1xuICAgIDB4Y2RkNzA2OTNsO1xuICAgIDB4NTRkZTU3MjlsO1xuICAgIDB4MjNkOTY3YmZsO1xuICAgIDB4YjM2NjdhMmVsO1xuICAgIDB4YzQ2MTRhYjhsO1xuICAgIDB4NWQ2ODFiMDJsO1xuICAgIDB4MmE2ZjJiOTRsO1xuICAgIDB4YjQwYmJlMzdsO1xuICAgIDB4YzMwYzhlYTFsO1xuICAgIDB4NWEwNWRmMWJsO1xuICAgIDB4MmQwMmVmOGRsO1xuICB8XVxuXG5sZXQgc3RyaW5nX2ZvbGRfbGVmdCBmIGFjYyBzdHIgb2Zmc2V0IGxlbmd0aCA9XG4gIGxldCBhY2NfciA9IHJlZiBhY2MgaW5cbiAgZm9yIGkgPSBvZmZzZXQgdG8gb2Zmc2V0ICsgbGVuZ3RoIC0gMSBkb1xuICAgIGFjY19yIDo9IGYgIWFjY19yIChTdHJpbmcuZ2V0IHN0ciBpKVxuICBkb25lO1xuICAhYWNjX3JcblxuKCpsZXQgYmlnc3RyaW5nX2ZvbGRfbGVmdCBmIGFjYyBzdHIgPVxuICBsZXQgYWNjX3IgPSByZWYgYWNjIGluXG4gIGZvciBpID0gMCB0byAoQmlnYXJyYXkuQXJyYXkxLmRpbSBzdHIpIC0gMSBkb1xuICAgIGFjY19yIDo9IGYgIWFjY19yIEBAIEJpZ2FycmF5LkFycmF5MS5nZXQgc3RyIGlcbiAgZG9uZTtcbiAgIWFjY19yXG4qKVxudHlwZSB0ID0gaW50MzJcblxubGV0IHVwZGF0ZV9jcmMgYWNjIGMgPVxuICBsZXQgaW5kZXggPSBJbnQzMi50b19pbnQgKGFjYyBeXl4gSW50MzIub2ZfaW50IChpbnRfb2ZfY2hhciBjKSAmJiYgMHhmZmwpIGluXG4gIGNyY190YWJsZS4oaW5kZXgpIF5eXiAoYWNjID4+PiA4KSAmJiYgMHhmZmZmZmZmZmxcblxubGV0IHN0cmluZyA/KGNyYyA9IDBsKSBzdHIgb2Zmc2V0IGxlbmd0aCA9XG4gIHN0cmluZ19mb2xkX2xlZnQgdXBkYXRlX2NyYyAoY3JjIF5eXiAweGZmZmZmZmZmbCkgc3RyIG9mZnNldCBsZW5ndGhcbiAgXl5eIDB4ZmZmZmZmZmZsXG5cbigqbGV0IGJpZ3N0cmluZyA/KGNyYz0wbCkgc3RyID1cbiAgKGJpZ3N0cmluZ19mb2xkX2xlZnQgdXBkYXRlX2NyYyAoY3JjIF5eXiAweGZmZmZmZmZmbCkgc3RyKSBeXl4gMHhmZmZmZmZmZmxcbiopXG4oKlxubGV0IGRpZ2VzdCAoY3JjIDogdCkgPyhvZmYgPSAwKSA/bGVuIGJ1ZiA9XG4gIGxldCBsZW4gPSBtYXRjaCBsZW4gd2l0aCBTb21lIGxlbiAtPiBsZW4gfCBOb25lIC0+IENzdHJ1Y3QubGVuIGJ1ZiAtIG9mZiBpblxuICBjc3RydWN0IH5jcmM6KGNyYyA6PiBpbnQzMikgKENzdHJ1Y3Quc3ViIGJ1ZiBvZmYgbGVuKVxuXG5sZXQgZGlnZXN0diA9XG4gIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIHYgLT4gZGlnZXN0IGFjYyB2KVxuXG5sZXQgZGlnZXN0YyAoY3JjIDogdCkgYnl0ZSA9XG4gICh1cGRhdGVfY3JjIChjcmMgXl5eIDB4ZmZmZmZmZmZsKSAoQ2hhci5jaHIgYnl0ZSkpIF5eXiAweGZmZmZmZmZmbFxuXG5sZXQgZGlnZXN0cyAoY3JjIDogdCkgPyhvZmYgPSAwKSA/bGVuIGJ1ZiA9XG4gIGxldCBsZW4gPSBtYXRjaCBsZW4gd2l0aCBTb21lIGxlbiAtPiBsZW4gfCBOb25lIC0+IEJ5dGVzLmxlbmd0aCBidWYgLSBvZmYgaW5cbiAgYnl0ZXMgfmNyYzooY3JjIDo+IGludDMyKSBidWYgb2ZmIGxlblxuXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0b19pbnQzMiA6IHQgLT4gaW50MzIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBwcCBwcGYgdiA9IEZtdC5wZiBwcGYgXCIlMDRseFwiICh2IDo+IGludDMyKVxuXG5sZXQgZGVmYXVsdCA9IDBsXG5cbmxldCBlcSA9IEludDMyLmVxdWFsXG5sZXQgbmVxIGEgYiA9IG5vdCAoZXEgYSBiKVxuKilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgY29sb3IgPSBSZWQgfCBHcmV5IHwgTGlnaHRibHVlIHwgQmxhY2tcblxubGV0IHRyaXBsZV9vZl9jb2xvciA9IGZ1bmN0aW9uXG4gIHwgUmVkIC0+IDI1NSwgMCwgMFxuICB8IEdyZXkgLT4gMTI4LCAxMjgsIDEyOFxuICB8IExpZ2h0Ymx1ZSAtPiAwLCAwLCAxMjhcbiAgfCBCbGFjayAtPiAwLCAwLCAwXG4iLCJ0eXBlICdhIHQgPSB7XG4gIHNpemU6IGludDtcbiAgZGVmYXVsdDogJ2E7XG4gIG11dGFibGUgc3RhcnQ6IGludDtcbiAgbXV0YWJsZSBmaW5hbDogaW50O1xuICBjb250ZW50OiAnYSBhcnJheTtcbn1cblxubGV0IGNyZWF0ZSBpIGRlZmF1bHQgPVxuICBsZXQgc2l6ZSA9IG1heCBpIDIgaW5cbiAgeyBzaXplOyBkZWZhdWx0OyBzdGFydCA9IDA7IGZpbmFsID0gMDsgY29udGVudCA9IEFycmF5Lm1ha2Ugc2l6ZSBkZWZhdWx0IH1cblxubGV0IHN1Y2MgaSB0ID1cbiAgaWYgaSA9IHQuc2l6ZSAtIDEgdGhlblxuICAgIDBcbiAgZWxzZVxuICAgIHN1Y2MgaVxuXG5sZXQgZnVsbCB0ID0gc3VjYyB0LmZpbmFsIHQgPSB0LnN0YXJ0XG5sZXQgZnJlZV9vbmUgdCA9IHQuc3RhcnQgPC0gc3VjYyB0LnN0YXJ0IHRcblxubGV0IGFkZCB4IHQgPVxuICBsZXQgKCkgPSBpZiBmdWxsIHQgdGhlbiBmcmVlX29uZSB0IGluXG4gIGxldCAoKSA9IHQuY29udGVudC4odC5maW5hbCkgPC0geCBpblxuICBsZXQgKCkgPSB0LmZpbmFsIDwtIHN1Y2MgdC5maW5hbCB0IGluXG4gIHRcblxubGV0IGl0ZXIgZiB0ID1cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA8PiB0LmZpbmFsIHRoZW4gKFxuICAgICAgbGV0ICgpID0gZiB0LmNvbnRlbnQuKGkpIGluXG4gICAgICBhdXggKHN1Y2MgaSB0KVxuICAgIClcbiAgaW5cbiAgYXV4IHQuc3RhcnRcblxubGV0IGNsZWFuIHQgPVxuICBsZXQgcmVjIGF1eCBrID1cbiAgICBpZiBrID0gdC5zaXplIHRoZW5cbiAgICAgIHRcbiAgICBlbHNlIChcbiAgICAgIGxldCAoKSA9IHQuY29udGVudC4oaykgPC0gdC5kZWZhdWx0IGluXG4gICAgICBhdXggKGsgKyAxKVxuICAgIClcbiAgaW5cbiAgYXV4IDBcbiIsIigqKlxuICAqIGNhY2hlLm1sXG4gICpcbiAgKiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjcvMDMvMjAxMlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAyNy8wMy8yMDEyXG4gICogKlxuICAqXG4gICogSXQgdXNlcyBpbXBlcmF0aXZlIHN0eWxlcyB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIG90aGVyIG1vZHVsZXNcbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIgIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgQ2FjaGUgPSBzaWdcbiAgbW9kdWxlIE8gOiBTZXRNYXAuT3JkZXJlZFR5cGVcblxuICB0eXBlIHRcblxuICB2YWwgbGFzdCA6IHQgLT4gTy50IG9wdGlvblxuICB2YWwgY3JlYXRlIDogaW50IG9wdGlvbiAtPiB0XG4gIHZhbCBhZGQgOiBPLnQgLT4gdCAtPiB0XG4gIHZhbCBmb2xkIDogKE8udCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgaXRlciA6IChPLnQgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIENhY2hlID1cbmZ1bmN0b3JcbiAgKE9PIDogU2V0TWFwLk9yZGVyZWRUeXBlKVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICBtb2R1bGUgTyA9IE9PXG4gICAgICBtb2R1bGUgU00gPSBTZXRNYXAuTWFrZSAoTylcbiAgICAgIG1vZHVsZSBTID0gU00uU2V0XG5cbiAgICAgIHR5cGUgZmluaXRlX2NhY2hlID0ge1xuICAgICAgICBzaXplOiBpbnQ7XG4gICAgICAgIG9mZnNldDogaW50O1xuICAgICAgICBjYWNoZTogTy50IG9wdGlvbiBhcnJheTtcbiAgICAgICAgYmFnOiBTLnQ7XG4gICAgICAgIGxhc3Q6IE8udCBvcHRpb247XG4gICAgICB9XG5cbiAgICAgIGxldCBjcmVhdGVfZmluaXRlIG4gPVxuICAgICAgICB7XG4gICAgICAgICAgc2l6ZSA9IG47XG4gICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICBjYWNoZSA9IEFycmF5Lm1ha2UgbiBOb25lO1xuICAgICAgICAgIGJhZyA9IFMuZW1wdHk7XG4gICAgICAgICAgbGFzdCA9IE5vbmU7XG4gICAgICAgIH1cblxuICAgICAgbGV0IG5leHQgdCA9XG4gICAgICAgIGxldCBvZmZzZXQgPSB0Lm9mZnNldCBpblxuICAgICAgICBpZiBvZmZzZXQgPSB0LnNpemUgLSAxIHRoZW5cbiAgICAgICAgICB7IHQgd2l0aCBvZmZzZXQgPSAwIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIHsgdCB3aXRoIG9mZnNldCA9IG9mZnNldCArIDEgfVxuXG4gICAgICBsZXQgYWRkX2Zpbml0ZSBrZXkgdCA9XG4gICAgICAgIGxldCB0ID0geyB0IHdpdGggbGFzdCA9IFNvbWUga2V5IH0gaW5cbiAgICAgICAgaWYgUy5tZW0ga2V5IHQuYmFnIHRoZW5cbiAgICAgICAgICB0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB0ID0geyB0IHdpdGggYmFnID0gUy5hZGQga2V5IHQuYmFnIH0gaW5cbiAgICAgICAgICBsZXQgdCA9IG5leHQgdCBpblxuICAgICAgICAgIGxldCBvdmVyd3JpdHRlbl92YWx1ZSA9IHQuY2FjaGUuKHQub2Zmc2V0KSBpblxuICAgICAgICAgIGxldCB0ID1cbiAgICAgICAgICAgIG1hdGNoIG92ZXJ3cml0dGVuX3ZhbHVlIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiB0XG4gICAgICAgICAgICB8IFNvbWUgb3ZlcndyaXR0ZW5fdmFsdWUgLT5cbiAgICAgICAgICAgICAgeyB0IHdpdGggYmFnID0gUy5yZW1vdmUgb3ZlcndyaXR0ZW5fdmFsdWUgdC5iYWcgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IF8gPSB0LmNhY2hlLih0Lm9mZnNldCkgPC0gU29tZSBrZXkgaW5cbiAgICAgICAgICB0XG4gICAgICAgIClcblxuICAgICAgbGV0IGxhc3RfZmluaXRlIHQgPSB0Lmxhc3RcblxuICAgICAgdHlwZSBpbmZpbml0ZV9jYWNoZSA9IHsgaW5mX2JhZzogUy50OyBsYXN0OiBPLnQgb3B0aW9uIH1cbiAgICAgIHR5cGUgdCA9IEZpbml0ZSBvZiBmaW5pdGVfY2FjaGUgfCBJbmZpbml0ZSBvZiBpbmZpbml0ZV9jYWNoZVxuXG4gICAgICBsZXQgY3JlYXRlX2luZmluaXRlID0geyBpbmZfYmFnID0gUy5lbXB0eTsgbGFzdCA9IE5vbmUgfVxuXG4gICAgICBsZXQgYWRkX2luZmluaXRlIGtleSB0ID1cbiAgICAgICAgeyBpbmZfYmFnID0gUy5hZGQga2V5IHQuaW5mX2JhZzsgbGFzdCA9IFNvbWUga2V5IH1cblxuICAgICAgbGV0IGNyZWF0ZSBzaXplID1cbiAgICAgICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBJbmZpbml0ZSBjcmVhdGVfaW5maW5pdGVcbiAgICAgICAgfCBTb21lIGEgLT4gRmluaXRlIChjcmVhdGVfZmluaXRlIGEpXG5cbiAgICAgIGxldCBsYXN0IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBGaW5pdGUgdCAtPiBsYXN0X2Zpbml0ZSB0XG4gICAgICAgIHwgSW5maW5pdGUgdCAtPiB0Lmxhc3RcblxuICAgICAgbGV0IGFkZCBrZXkgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEZpbml0ZSB0IC0+IEZpbml0ZSAoYWRkX2Zpbml0ZSBrZXkgdClcbiAgICAgICAgfCBJbmZpbml0ZSB0IC0+IEluZmluaXRlIChhZGRfaW5maW5pdGUga2V5IHQpXG5cbiAgICAgIGxldCBmb2xkIGYgdCBhID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRmluaXRlIHQgLT4gUy5mb2xkIGYgdC5iYWcgYVxuICAgICAgICB8IEluZmluaXRlIHQgLT4gUy5mb2xkIGYgdC5pbmZfYmFnIGFcblxuICAgICAgbGV0IGl0ZXIgZiB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRmluaXRlIHQgLT4gUy5pdGVyIGYgdC5iYWdcbiAgICAgICAgfCBJbmZpbml0ZSB0IC0+IFMuaXRlciBmIHQuaW5mX2JhZ1xuICAgIGVuZCA6XG4gICAgICBDYWNoZSB3aXRoIHR5cGUgTy50ID0gT08udClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRnJvbSkgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgIFBpZXJyZSBXZWlzIGFuZCBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXh0ZW5zaWJsZSBidWZmZXJzICopXG5cbm1vZHVsZSBCQSA9IEJpZ2FycmF5LkFycmF5MVxuXG50eXBlIGJpZ3N0cmluZyA9XG4gIChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbnR5cGUgdCA9IHtcbiAgbXV0YWJsZSBidWZmZXI6IGJpZ3N0cmluZztcbiAgbXV0YWJsZSBwb3NpdGlvbjogaW50O1xuICBtdXRhYmxlIGxlbmd0aDogaW50O1xuICBpbml0aWFsX2J1ZmZlcjogYmlnc3RyaW5nO1xufVxuXG5sZXQgY3JlYXRlIG4gPVxuICBsZXQgbiA9XG4gICAgaWYgbiA8IDEgdGhlblxuICAgICAgMVxuICAgIGVsc2VcbiAgICAgIG5cbiAgaW5cbiAgbGV0IG4gPVxuICAgIGlmIG4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgZWxzZVxuICAgICAgblxuICBpblxuICBsZXQgcyA9IEJBLmNyZWF0ZSBCaWdhcnJheS5jaGFyIEJpZ2FycmF5LmNfbGF5b3V0IG4gaW5cbiAgeyBidWZmZXIgPSBzOyBwb3NpdGlvbiA9IDA7IGxlbmd0aCA9IG47IGluaXRpYWxfYnVmZmVyID0gcyB9XG5cbmxldCBjb250ZW50cyBiID1cbiAgbGV0IG91dCA9IEJBLmNyZWF0ZSBCaWdhcnJheS5jaGFyIEJpZ2FycmF5LmNfbGF5b3V0IGIucG9zaXRpb24gaW5cbiAgbGV0ICgpID0gQkEuYmxpdCAoQkEuc3ViIGIuYnVmZmVyIDAgYi5wb3NpdGlvbikgb3V0IGluXG4gIG91dFxuXG4oKmxldCBzdWIgYiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGIucG9zaXRpb24gLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5zdWJcIlxuICBlbHNlIEJBLnN1YiBiLmJ1ZmZlciBvZnMgbGVuXG4qKVxuKCpcbmxldCBibGl0IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IHNyY29mZiA8IDAgfHwgc3Jjb2ZmID4gc3JjLnBvc2l0aW9uIC0gbGVuXG4gICAgICAgICAgICAgfHwgZHN0b2ZmIDwgMCB8fCBkc3RvZmYgPiAoQnl0ZXMubGVuZ3RoIGRzdCkgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5ibGl0XCJcbiAgZWxzZVxuICAgIEJBLmJsaXQgKHN1YiBzcmMgc3Jjb2ZmIGxlbilcbiAgICAgIChCaWdzdHJpbmcuc3ViIChCaWdzdHJpbmcub2ZfYXJyYXkgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCBkc3QpIGRzdG9mZiBsZW4pXG4qKVxuXG5sZXQgbnRoIGIgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPj0gYi5wb3NpdGlvbiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIubnRoXCJcbiAgZWxzZVxuICAgIEJBLnVuc2FmZV9nZXQgYi5idWZmZXIgb2ZzXG5cbmxldCBsZW5ndGggYiA9IGIucG9zaXRpb25cbmxldCBjbGVhciBiID0gYi5wb3NpdGlvbiA8LSAwXG5cbmxldCByZXNldCBiID1cbiAgYi5wb3NpdGlvbiA8LSAwO1xuICBiLmJ1ZmZlciA8LSBiLmluaXRpYWxfYnVmZmVyO1xuICBiLmxlbmd0aCA8LSBCQS5kaW0gYi5idWZmZXJcblxubGV0IHJlc2l6ZSBiIG1vcmUgPVxuICBsZXQgbGVuID0gYi5sZW5ndGggaW5cbiAgbGV0IG5ld19sZW4gPSByZWYgbGVuIGluXG4gIHdoaWxlIGIucG9zaXRpb24gKyBtb3JlID4gIW5ld19sZW4gZG9cbiAgICBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlblxuICBkb25lO1xuICBpZiAhbmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgaWYgYi5wb3NpdGlvbiArIG1vcmUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgIG5ld19sZW4gOj0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgZWxzZVxuICAgICAgZmFpbHdpdGggXCJCdWZmZXIuYWRkOiBjYW5ub3QgZ3JvdyBidWZmZXJcIjtcbiAgbGV0IG5ld19idWZmZXIgPSBCQS5jcmVhdGUgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCAhbmV3X2xlbiBpblxuICAoKiBQUiM2MTQ4OiBsZXQncyBrZWVwIHVzaW5nIFtibGl0XSByYXRoZXIgdGhhbiBbdW5zYWZlX2JsaXRdIGluXG4gICAgIHRoaXMgdHJpY2t5IGZ1bmN0aW9uIHRoYXQgaXMgc2xvdyBhbnl3YXkuICopXG4gIEJBLmJsaXQgKEJBLnN1YiBiLmJ1ZmZlciAwIGIucG9zaXRpb24pIChCQS5zdWIgbmV3X2J1ZmZlciAwIGIucG9zaXRpb24pO1xuICBiLmJ1ZmZlciA8LSBuZXdfYnVmZmVyO1xuICBiLmxlbmd0aCA8LSAhbmV3X2xlblxuXG5sZXQgYWRkX2NoYXIgYiBjID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMTtcbiAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciBwb3MgYztcbiAgYi5wb3NpdGlvbiA8LSBwb3MgKyAxXG5cbigqXG4gbGV0IGFkZF91dGZfOF91Y2hhciBiIHUgPSBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gfCB1IHdoZW4gdSA8PSAweDAwN0YgLT5cbiAgICAgYWRkX2NoYXIgYiAoQ2hhci51bnNhZmVfY2hyIHUpXG4gfCB1IHdoZW4gdSA8PSAweDA3RkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgMiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMjtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgIClcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweEMwIGxvciAodSBsc3IgNikpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSlcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAodSBsYW5kIDB4M0YpKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgMlxuIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDMgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDM7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHhFMCBsb3IgKHUgbHNyIDEyKSkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICgodSBsc3IgNikgbGFuZCAweDNGKSkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyAzXG4gfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyA0ID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4RjAgbG9yICh1IGxzciAxOCkpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSlcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAoKHUgbHNyIDEyKSBsYW5kIDB4M0YpKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDIpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDMpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDRcbiB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiBsZXQgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSA9IG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAyID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyICh1IGxzciA4KSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpIChDaGFyLnVuc2FmZV9jaHIgKHUgbGFuZCAweEZGKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgMlxuIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgbGV0IGhpID0gMHhEODAwIGxvciAodScgbHNyIDEwKSBpblxuICAgICBsZXQgbG8gPSAweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSBpblxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyA0ID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsc3IgOCkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsYW5kIDB4RkYpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMikgKENoYXIudW5zYWZlX2NociAobG8gbHNyIDgpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMykgKENoYXIudW5zYWZlX2NociAobG8gbGFuZCAweEZGKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgNFxuIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuIGxldCBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1ID0gbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDIgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDI7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApIChDaGFyLnVuc2FmZV9jaHIgKHUgbGFuZCAweEZGKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpIChDaGFyLnVuc2FmZV9jaHIgKHUgbHNyIDgpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyAyXG4gfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICBsZXQgdScgPSB1IC0gMHgxMDAwMCBpblxuICAgICBsZXQgaGkgPSAweEQ4MDAgbG9yICh1JyBsc3IgMTApIGluXG4gICAgIGxldCBsbyA9IDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpIGluXG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDQgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDQ7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApIChDaGFyLnVuc2FmZV9jaHIgKGhpIGxhbmQgMHhGRikpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsc3IgOCkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKSAoQ2hhci51bnNhZmVfY2hyIChsbyBsYW5kIDB4RkYpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMykgKENoYXIudW5zYWZlX2NociAobG8gbHNyIDgpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyA0XG4gfCBfIC0+IGFzc2VydCBmYWxzZVxuKilcblxubGV0IGFkZF9zdWJzdHJpbmcgYiBzIG9mZnNldCBsZW4gPVxuICBpZiBvZmZzZXQgPCAwIHx8IGxlbiA8IDAgfHwgb2Zmc2V0ID4gU3RyaW5nLmxlbmd0aCBzIC0gbGVuIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfc3Vic3RyaW5nL2FkZF9zdWJieXRlc1wiO1xuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIGxlbiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChiLnBvc2l0aW9uICsgaSkgKFN0cmluZy5nZXQgcyAob2Zmc2V0ICsgaSkpXG4gIGRvbmU7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfc3ViYnl0ZXMgYiBzIG9mZnNldCBsZW4gPVxuICBhZGRfc3Vic3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcykgb2Zmc2V0IGxlblxuXG5sZXQgYWRkX3N0cmluZyBiIHMgPSBhZGRfc3Vic3RyaW5nIGIgcyAwIChTdHJpbmcubGVuZ3RoIHMpXG5cbigqXG5sZXQgYWRkX2J5dGVzIGIgcyA9IGFkZF9zdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKVxuXG5sZXQgYWRkX2J1ZmZlciBiIGJzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnMuYnVmZmVyIDAgYnMucG9zaXRpb25cblxuKCogcmVhZCB1cCB0byBbbGVuXSBieXRlcyBmcm9tIFtpY10gaW50byBbYl0uICopXG5sZXQgcmVjIGFkZF9jaGFubmVsX3JlYyBiIGljIGxlbiA9XG4gIGlmIGxlbiA+IDAgdGhlbiAoXG4gICAgbGV0IG4gPSBpbnB1dCBpYyBiLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbiBpblxuICAgIGIucG9zaXRpb24gPC0gYi5wb3NpdGlvbiArIG47XG4gICAgaWYgbiA9IDAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgIGVsc2UgYWRkX2NoYW5uZWxfcmVjIGIgaWMgKGxlbi1uKSAgICgqIG4gPD0gbGVuICopXG4gIClcblxubGV0IGFkZF9jaGFubmVsIGIgaWMgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBsZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiAgICgqIFBSIzUwMDQgKilcbiAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfY2hhbm5lbFwiO1xuICBpZiBiLnBvc2l0aW9uICsgbGVuID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIGFkZF9jaGFubmVsX3JlYyBiIGljIGxlblxuXG5sZXQgb3V0cHV0X2J1ZmZlciBvYyBiID1cbiAgb3V0cHV0IG9jIChMd3RfYnl0ZXMudG9fYnl0ZXMgYi5idWZmZXIpIDAgYi5wb3NpdGlvblxuKilcbigqbGV0IGNsb3NpbmcgPSBmdW5jdGlvblxuICAgIHwgJygnIC0+ICcpJ1xuICAgIHwgJ3snIC0+ICd9J1xuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgICAgczogdGhlIHN0cmluZyB3aGVyZSB3ZSBhcmUgc2VhcmNoaW5nXG4gICAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbiAgbGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgICBsZXQgcmVjIGFkdmFuY2UgayBpIGxpbSA9XG4gICAgICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgICBpZiBzLltpXSA9IG9wZW5pbmcgdGhlbiBhZHZhbmNlIChrICsgMSkgKGkgKyAxKSBsaW0gZWxzZVxuICAgICAgaWYgcy5baV0gPSBjbG9zaW5nIHRoZW5cbiAgICAgICAgaWYgayA9IDAgdGhlbiBpIGVsc2UgYWR2YW5jZSAoayAtIDEpIChpICsgMSkgbGltXG4gICAgICBlbHNlIGFkdmFuY2UgayAoaSArIDEpIGxpbSBpblxuICAgIGFkdmFuY2UgayBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuXG4gIGxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgICAgaWYgaSA+PSBsaW0gdGhlbiBsaW0gZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgfCAnXycgLT4gYWR2YW5jZSAoaSArIDEpIGxpbVxuICAgICAgfCBfIC0+IGkgaW5cbiAgICBhZHZhbmNlIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbiAgKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbiAgbGV0IGZpbmRfaWRlbnQgcyBzdGFydCBsaW0gPVxuICAgIGlmIHN0YXJ0ID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgbWF0Y2ggcy5bc3RhcnRdIHdpdGhcbiAgICAoKiBQYXJlbnRoZXNpemVkIGlkZW50ID8gKilcbiAgICB8ICcoJyB8ICd7JyBhcyBjIC0+XG4gICAgICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19jbG9zaW5nIGMgKGNsb3NpbmcgYykgMCBzIG5ld19zdGFydCBpblxuICAgICAgIFN0cmluZy5zdWIgcyBuZXdfc3RhcnQgKHN0b3AgLSBzdGFydCAtIDEpLCBzdG9wICsgMVxuICAgICgqIFJlZ3VsYXIgaWRlbnQgKilcbiAgICB8IF8gLT5cbiAgICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgKHN0YXJ0ICsgMSkgaW5cbiAgICAgICBTdHJpbmcuc3ViIHMgc3RhcnQgKHN0b3AgLSBzdGFydCksIHN0b3BcblxuICAoKiBTdWJzdGl0dXRlICRpZGVudCwgJChpZGVudCksIG9yICR7aWRlbnR9IGluIHMsXG4gICAgICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbiAgbGV0IGFkZF9zdWJzdGl0dXRlIGIgZiBzID1cbiAgICBsZXQgbGltID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICAgIGlmIGkgPCBsaW0gdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9ICdcXFxcJyAtPlxuICAgICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICAgIHN1YnN0ICcgJyAoaSArIDEpXG4gICAgICAgIHwgJyQnIC0+XG4gICAgICAgICAgIGxldCBqID0gaSArIDEgaW5cbiAgICAgICAgICAgbGV0IGlkZW50LCBuZXh0X2kgPSBmaW5kX2lkZW50IHMgaiBsaW0gaW5cbiAgICAgICAgICAgYWRkX3N0cmluZyBiIChmIGlkZW50KTtcbiAgICAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgICB8IGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9PSAnXFxcXCcgLT5cbiAgICAgICAgICAgYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgICAgfCAnXFxcXCcgYXMgY3VycmVudCAtPlxuICAgICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgICAgfCBjdXJyZW50IC0+XG4gICAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICBlbmQgZWxzZVxuICAgICAgaWYgcHJldmlvdXMgPSAnXFxcXCcgdGhlbiBhZGRfY2hhciBiIHByZXZpb3VzIGluXG4gICAgc3Vic3QgJyAnIDBcblxuICBsZXQgdHJ1bmNhdGUgYiBsZW4gPVxuICAgICAgaWYgbGVuIDwgMCB8fCBsZW4gPiBsZW5ndGggYiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLnRydW5jYXRlXCJcbiAgICAgIGVsc2VcbiAgICAgICAgYi5wb3NpdGlvbiA8LSBsZW5cbiopXG4iLCIoKlxuICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDkgQ2l0cml4IFN5c3RlbXMgSW5jLlxuICogQ29weXJpZ2h0IChjKSAyMDEwIFRob21hcyBHYXphZ25haXJlIDx0aG9tYXNAZ2F6YWduYWlyZS5jb20+XG4gKlxuICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG4gKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlXG4gKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTXG4gKiBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GXG4gKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUlxuICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFU1xuICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOXG4gKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRlxuICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbiAqXG4gKilcblxubGV0IGRlZmF1bHRfYWxwaGFiZXQgPVxuICBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky9cIlxuXG5sZXQgdXJpX3NhZmVfYWxwaGFiZXQgPVxuICBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LV9cIlxuXG5sZXQgcGFkZGluZyA9ICc9J1xuXG5sZXQgb2ZfY2hhciA/KGFscGhhYmV0ID0gZGVmYXVsdF9hbHBoYWJldCkgeCA9XG4gIGlmIHggPSBwYWRkaW5nIHRoZW5cbiAgICAwXG4gIGVsc2VcbiAgICBTdHJpbmcuaW5kZXggYWxwaGFiZXQgeFxuXG5sZXQgdG9fY2hhciA/KGFscGhhYmV0ID0gZGVmYXVsdF9hbHBoYWJldCkgeCA9IGFscGhhYmV0Llt4XVxuXG5sZXQgZGVjb2RlID9hbHBoYWJldCBpbnB1dCA9XG4gIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIGlucHV0IGluXG4gIGxldCBpbnB1dCA9XG4gICAgaWYgbGVuZ3RoIG1vZCA0ID0gMCB0aGVuXG4gICAgICBpbnB1dFxuICAgIGVsc2VcbiAgICAgIGlucHV0IF4gU3RyaW5nLm1ha2UgKDQgLSAobGVuZ3RoIG1vZCA0KSkgcGFkZGluZ1xuICBpblxuICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBpbnB1dCBpblxuICBsZXQgd29yZHMgPSBsZW5ndGggLyA0IGluXG4gIGxldCBwYWRkaW5nID1cbiAgICBtYXRjaCBsZW5ndGggd2l0aFxuICAgIHwgMCAtPiAwXG4gICAgfCBfIHdoZW4gaW5wdXQuW2xlbmd0aCAtIDJdID0gcGFkZGluZyAtPiAyXG4gICAgfCBfIHdoZW4gaW5wdXQuW2xlbmd0aCAtIDFdID0gcGFkZGluZyAtPiAxXG4gICAgfCBfIC0+IDBcbiAgaW5cbiAgbGV0IG91dHB1dCA9XG4gICAgQmlnYXJyYXkuQXJyYXkxLmNyZWF0ZSBCaWdhcnJheS5jaGFyIEJpZ2FycmF5LmNfbGF5b3V0XG4gICAgICAoKHdvcmRzICogMykgLSBwYWRkaW5nKVxuICBpblxuICBmb3IgaSA9IDAgdG8gd29yZHMgLSAxIGRvXG4gICAgbGV0IGEgPSBvZl9jaGFyID9hbHBoYWJldCAoU3RyaW5nLmdldCBpbnB1dCAoKDQgKiBpKSArIDApKVxuICAgIGFuZCBiID0gb2ZfY2hhciA/YWxwaGFiZXQgKFN0cmluZy5nZXQgaW5wdXQgKCg0ICogaSkgKyAxKSlcbiAgICBhbmQgYyA9IG9mX2NoYXIgP2FscGhhYmV0IChTdHJpbmcuZ2V0IGlucHV0ICgoNCAqIGkpICsgMikpXG4gICAgYW5kIGQgPSBvZl9jaGFyID9hbHBoYWJldCAoU3RyaW5nLmdldCBpbnB1dCAoKDQgKiBpKSArIDMpKSBpblxuICAgIGxldCBuID0gKGEgbHNsIDE4KSBsb3IgKGIgbHNsIDEyKSBsb3IgKGMgbHNsIDYpIGxvciBkIGluXG4gICAgbGV0IHggPSAobiBsc3IgMTYpIGxhbmQgMjU1IGFuZCB5ID0gKG4gbHNyIDgpIGxhbmQgMjU1IGFuZCB6ID0gbiBsYW5kIDI1NSBpblxuICAgIEJpZ2FycmF5LkFycmF5MS5zZXQgb3V0cHV0ICgoMyAqIGkpICsgMCkgKGNoYXJfb2ZfaW50IHgpO1xuICAgIGlmIGkgPD4gd29yZHMgLSAxIHx8IHBhZGRpbmcgPCAyIHRoZW5cbiAgICAgIEJpZ2FycmF5LkFycmF5MS5zZXQgb3V0cHV0ICgoMyAqIGkpICsgMSkgKGNoYXJfb2ZfaW50IHkpO1xuICAgIGlmIGkgPD4gd29yZHMgLSAxIHx8IHBhZGRpbmcgPCAxIHRoZW5cbiAgICAgIEJpZ2FycmF5LkFycmF5MS5zZXQgb3V0cHV0ICgoMyAqIGkpICsgMikgKGNoYXJfb2ZfaW50IHopXG4gIGRvbmU7XG4gIG91dHB1dFxuXG5sZXQgZW5jb2RlID8ocGFkID0gdHJ1ZSkgP2FscGhhYmV0IGlucHV0ID1cbiAgbGV0IGxlbmd0aCA9IEJpZ2FycmF5LkFycmF5MS5kaW0gaW5wdXQgaW5cbiAgbGV0IHdvcmRzID0gKGxlbmd0aCArIDIpIC8gMyBpblxuICAoKiByb3VuZGVkIHVwICopXG4gIGxldCBwYWRkaW5nX2xlbiA9XG4gICAgaWYgbGVuZ3RoIG1vZCAzID0gMCB0aGVuXG4gICAgICAwXG4gICAgZWxzZVxuICAgICAgMyAtIChsZW5ndGggbW9kIDMpXG4gIGluXG4gIGxldCBvdXRwdXQgPSBCeXRlcy5tYWtlICh3b3JkcyAqIDQpICdcXDAwMCcgaW5cbiAgbGV0IGdldCBpID1cbiAgICBpZiBpID49IGxlbmd0aCB0aGVuXG4gICAgICAwXG4gICAgZWxzZVxuICAgICAgaW50X29mX2NoYXIgKEJpZ2FycmF5LkFycmF5MS5nZXQgaW5wdXQgaSlcbiAgaW5cbiAgZm9yIGkgPSAwIHRvIHdvcmRzIC0gMSBkb1xuICAgIGxldCB4ID0gZ2V0ICgoMyAqIGkpICsgMClcbiAgICBhbmQgeSA9IGdldCAoKDMgKiBpKSArIDEpXG4gICAgYW5kIHogPSBnZXQgKCgzICogaSkgKyAyKSBpblxuICAgIGxldCBuID0gKHggbHNsIDE2KSBsb3IgKHkgbHNsIDgpIGxvciB6IGluXG4gICAgbGV0IGEgPSAobiBsc3IgMTgpIGxhbmQgNjNcbiAgICBhbmQgYiA9IChuIGxzciAxMikgbGFuZCA2M1xuICAgIGFuZCBjID0gKG4gbHNyIDYpIGxhbmQgNjNcbiAgICBhbmQgZCA9IG4gbGFuZCA2MyBpblxuICAgIEJ5dGVzLnNldCBvdXRwdXQgKCg0ICogaSkgKyAwKSAodG9fY2hhciA/YWxwaGFiZXQgYSk7XG4gICAgQnl0ZXMuc2V0IG91dHB1dCAoKDQgKiBpKSArIDEpICh0b19jaGFyID9hbHBoYWJldCBiKTtcbiAgICBCeXRlcy5zZXQgb3V0cHV0ICgoNCAqIGkpICsgMikgKHRvX2NoYXIgP2FscGhhYmV0IGMpO1xuICAgIEJ5dGVzLnNldCBvdXRwdXQgKCg0ICogaSkgKyAzKSAodG9fY2hhciA/YWxwaGFiZXQgZClcbiAgZG9uZTtcbiAgZm9yIGkgPSAxIHRvIHBhZGRpbmdfbGVuIGRvXG4gICAgQnl0ZXMuc2V0IG91dHB1dCAoQnl0ZXMubGVuZ3RoIG91dHB1dCAtIGkpIHBhZGRpbmdcbiAgZG9uZTtcbiAgaWYgcGFkIHRoZW5cbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIG91dHB1dFxuICBlbHNlXG4gICAgQnl0ZXMuc3ViX3N0cmluZyBvdXRwdXQgMCAoQnl0ZXMubGVuZ3RoIG91dHB1dCAtIHBhZGRpbmdfbGVuKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBsaW5rcyA9XG4gIHwgTElOS1Mgb2YgKChpbnQgKiBpbnQpICogaW50KSBsaXN0XG4gIHwgV0hBVEVWRVJcbiAgfCBTT01FXG4gIHwgVFlQRSBvZiBzdHJpbmcgKiBzdHJpbmdcblxudHlwZSBjY19wb3J0ID0ge1xuICBwb3J0X2xpbmtzOiBsaW5rcztcbiAgcG9ydF9zdGF0ZXM6IHN0cmluZyBsaXN0IG9wdGlvbjsgICgqKiBbTm9uZV0gbWVhbnMgV0hBVEVWRVIgKilcbn1cblxudHlwZSBzaXRlID0gUG9ydCBvZiBjY19wb3J0IHwgQ291bnRlciBvZiBpbnRcbnR5cGUgY2Nfc2l0ZSA9IHsgc2l0ZV9uYW1lOiBzdHJpbmc7IHNpdGVfdHlwZTogc2l0ZSB9XG5cbnR5cGUgY2Nfbm9kZSA9IHtcbiAgbm9kZV90eXBlOiBzdHJpbmc7XG4gIG5vZGVfaWQ6IGludCBvcHRpb247XG4gIG5vZGVfc2l0ZXM6IGNjX3NpdGUgYXJyYXk7XG59XG5cbnR5cGUgY29ubmVjdGVkX2NvbXBvbmVudCA9IGNjX25vZGUgb3B0aW9uIGFycmF5IGFycmF5XG5cbm1vZHVsZSBMaW5rU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSAoaW50ICogaW50KSAqIGludFxuXG4gIGxldCBwcmludCA9XG4gICAgUHAucGFpclxuICAgICAgKFBwLnBhaXIgRm9ybWF0LnBwX3ByaW50X2ludCBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgRm9ybWF0LnBwX3ByaW50X2ludFxuXG4gIGxldCBjb21wYXJlICh4LCB5KSAoeCcsIHknKSA9XG4gICAgbGV0IGMgPSBNb2RzLmludF9wYWlyX2NvbXBhcmUgeCB4JyBpblxuICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgIE1vZHMuaW50X2NvbXBhcmUgeSB5J1xuICAgIGVsc2VcbiAgICAgIGNcbmVuZClcblxubGV0IHByaW50X2xpbmsgKGRhbmdsaW5nLCBmcmVlX2lkKSBwIGYgPSBmdW5jdGlvblxuICB8IFdIQVRFVkVSIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlsjXVwiXG4gIHwgU09NRSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbX11cIlxuICB8IFRZUEUgKHNpLCB0eSkgLT4gRm9ybWF0LmZwcmludGYgZiBcIlslcy4lc11cIiBzaSB0eVxuICB8IExJTktTIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlsuXVwiXG4gIHwgTElOS1MgbCAtPlxuICAgIGxldCBteXNlbGYgPVxuICAgICAgcmVmIChMaW5rU2V0TWFwLk1hcC5maW5kX2RlZmF1bHQgTGlua1NldE1hcC5NYXAuZW1wdHkgcCAhZGFuZ2xpbmcpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlslYV1cIlxuICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgcCcgLT5cbiAgICAgICAgICAgICBsZXQgaSA9XG4gICAgICAgICAgICAgICBpZiBwID0gcCcgdGhlblxuICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAgICAgICAgICAgICAgKExpbmtTZXRNYXAuTWFwLmZpbmRfb3B0aW9uIHApXG4gICAgICAgICAgICAgICAgICAgICAoTGlua1NldE1hcC5NYXAuZmluZF9vcHRpb24gcCcgIWRhbmdsaW5nKVxuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGluY3IgZnJlZV9pZCBpblxuICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG15c2VsZiA6PSBMaW5rU2V0TWFwLk1hcC5hZGQgcCcgIWZyZWVfaWQgIW15c2VsZiBpblxuICAgICAgICAgICAgICAgICAgICFmcmVlX2lkXG4gICAgICAgICAgICAgICAgIHwgU29tZSB2YSAtPiB2YVxuICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVpXCIgaSkpXG4gICAgICAgIGxcbiAgICBpblxuICAgIGRhbmdsaW5nIDo9IExpbmtTZXRNYXAuTWFwLmFkZCBwICFteXNlbGYgIWRhbmdsaW5nXG5cbmxldCBwcmludF9wb3J0IHdpdGhfbGluayBub2RlIHAgaWQgZiA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSVhXCJcbiAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJ7I31cIlxuICAgICAgfCBTb21lIFtdIC0+ICgpXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhfVwiXG4gICAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIGkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgaSkpXG4gICAgICAgICAgbClcbiAgICBwLnBvcnRfc3RhdGVzXG4gICAgKG1hdGNoIHdpdGhfbGluayB3aXRoXG4gICAgfCBTb21lIHBhY2sgLT4gcHJpbnRfbGluayBwYWNrIChub2RlLCBpZClcbiAgICB8IE5vbmUgLT4gZnVuIF8gXyAtPiAoKSlcbiAgICBwLnBvcnRfbGlua3NcblxubGV0IHByaW50X2ludGYgd2l0aF9saW5rIG5vZGUgPVxuICBQcC5hcnJheSBQcC5zcGFjZSAoZnVuIGlkIGYgc2kgLT5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIHNpLnNpdGVfbmFtZSBpblxuICAgICAgbWF0Y2ggc2kuc2l0ZV90eXBlIHdpdGhcbiAgICAgIHwgUG9ydCBwIC0+IHByaW50X3BvcnQgd2l0aF9saW5rIG5vZGUgcCBpZCBmXG4gICAgICB8IENvdW50ZXIgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiez0laX1cIiBpKVxuXG5sZXQgcHJpbnRfYWdlbnQgd2l0aF9pZCBsaW5rIG5vZGUgZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIuXCJcbiAgfCBTb21lIGFnIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhJXMoQFs8aD4lYUBdKVwiXG4gICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ4JWk6XCIgaSkpXG4gICAgICAoaWYgd2l0aF9pZCB0aGVuXG4gICAgICAgICBhZy5ub2RlX2lkXG4gICAgICAgZWxzZVxuICAgICAgICAgTm9uZSlcbiAgICAgIGFnLm5vZGVfdHlwZSAocHJpbnRfaW50ZiBsaW5rIG5vZGUpIGFnLm5vZGVfc2l0ZXNcblxubGV0IHByaW50X2NjIGYgbWl4ID1cbiAgbGV0IGxpbmsgPSBTb21lIChyZWYgTGlua1NldE1hcC5NYXAuZW1wdHksIHJlZiAwKSBpblxuICBQcC5hcnJheVxuICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcXEAgXCIpXG4gICAgKGZ1biBhbCAtPiBQcC5hcnJheSBQcC5jb21tYSAoZnVuIGFyIC0+IHByaW50X2FnZW50IHRydWUgbGluayAoYWwsIGFyKSkpXG4gICAgZiBtaXhcblxubGV0IGdldF9jb2xvciA9XG4gIGxldCBzdG9yZSA9IEhhc2h0YmwuY3JlYXRlIDEwIGluXG4gIGZ1biBpIC0+XG4gICAgdHJ5IEhhc2h0YmwuZmluZCBzdG9yZSBpXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCB2ID1cbiAgICAgICAgRm9ybWF0LnNwcmludGYgXCIjJXgleCV4XCIgKFJhbmRvbS5pbnQgMjU1KSAoUmFuZG9tLmludCAyNTUpXG4gICAgICAgICAgKFJhbmRvbS5pbnQgMjU1KVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEhhc2h0YmwuYWRkIHN0b3JlIGkgdiBpblxuICAgICAgdlxuXG5sZXQgcHJpbnRfZG90X2NjIG5iX2NjIGYgbWl4ID1cbiAgUHAuYXJyYXkgUHAuZW1wdHlcbiAgICAoZnVuIGlsIC0+XG4gICAgICBQcC5hcnJheSBQcC5lbXB0eSAoZnVuIGlyIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBhZyAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgIFwibm9kZSVkXyVkXyVkIFtsYWJlbCA9IFxcXCJAWzxoPiVhQF1cXFwiLCBjb2xvciA9IFxcXCIlc1xcXCIsIFxcXG4gICAgICAgICAgICAgc3R5bGU9ZmlsbGVkXTtALFwiXG4gICAgICAgICAgICBuYl9jYyBpbCBpclxuICAgICAgICAgICAgKHByaW50X2FnZW50IGZhbHNlIE5vbmUgKGlsLCBpcikpXG4gICAgICAgICAgICAoU29tZSBhZykgKGdldF9jb2xvciBhZy5ub2RlX3R5cGUpO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJub2RlJWRfJWRfJWQgLT4gY291bnRlciVkIFtzdHlsZT1pbnZpc107QCxcIiBuYl9jYyBpbFxuICAgICAgICAgICAgaXIgbmJfY2MpKVxuICAgIGYgbWl4O1xuICBpZ25vcmVcbiAgQEAgQXJyYXkuaXRlcmlcbiAgICAgICAoZnVuIGFsIC0+XG4gICAgICAgICBBcnJheS5pdGVyaSAoZnVuIGFyIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICB8IFNvbWUgYWcgLT5cbiAgICAgICAgICAgICBBcnJheS5pdGVyaVxuICAgICAgICAgICAgICAgKGZ1biBzIHNpIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIHNpLnNpdGVfdHlwZSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgQ291bnRlciBfIC0+ICgpXG4gICAgICAgICAgICAgICAgIHwgUG9ydCBwIC0+XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIHAucG9ydF9saW5rcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBXSEFURVZFUiAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB8IFNPTUUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgfCBUWVBFIChfc2ksIF90eSkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgfCBMSU5LUyBsaW5rcyAtPlxuICAgICAgICAgICAgICAgICAgICAgUHAubGlzdCBQcC5lbXB0eVxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgKChhbCcsIGFyJyksIHMnKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBhbCA8IGFsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGFsID0gYWwnICYmIChhciA8IGFyJyB8fCAoYXIgPSBhcicgJiYgcyA8IHMnKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBtaXguKGFsJykuKGFyJykgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGFnJyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJub2RlJWRfJWRfJWQgLT4gbm9kZSVkXyVkXyVkIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWlsbGFiZWw9XFxcIiVzXFxcIiwgaGVhZGxhYmVsPVxcXCIlc1xcXCIsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcj1ub25lXTtALFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmJfY2MgYWwgYXIgbmJfY2MgYWwnIGFyJyBzaS5zaXRlX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZycubm9kZV9zaXRlcy4ocycpLnNpdGVfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgIGYgbGlua3MpKVxuICAgICAgICAgICAgICAgYWcubm9kZV9zaXRlcykpXG4gICAgICAgbWl4XG5cbigqXG50eXBlIGNjX25vZGUgPSB7XG4gIG5vZGVfdHlwZTogc3RyaW5nO1xuICBub2RlX3NpdGVzOiBjY19zaXRlIGFycmF5O1xufVxudHlwZSBjb25uZWN0ZWRfY29tcG9uZW50ID0gY2Nfbm9kZSBhcnJheVxuICopXG5cbmxldCB3cml0ZV9jY19wb3J0IG9iIHAgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJwb3J0X2xpbmtzXCJcbiAgICAgIChmdW4gb2IgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBXSEFURVZFUiAtPiBZb2pzb24uQmFzaWMud3JpdGVfbnVsbCBvYiAoKVxuICAgICAgICB8IFNPTUUgLT4gWW9qc29uLkJhc2ljLndyaXRlX2Jvb2wgb2IgdHJ1ZVxuICAgICAgICB8IFRZUEUgKHNpLCB0eSkgLT5cbiAgICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIntcXFwic2l0ZV9uYW1lXFxcIjpcXFwiXCIgaW5cbiAgICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiBzaSBpblxuICAgICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIixcXFwiYWdlbnRfdHlwZVxcXCI6XFxcIlwiIGluXG4gICAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb2IgdHkgaW5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJ9XCJcbiAgICAgICAgfCBMSU5LUyBsIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpclxuICAgICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfaW50XG4gICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfaW50KVxuICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2ludClcbiAgICAgICAgICAgIG9iIGwpXG4gICAgICBvYiBwLnBvcnRfbGlua3NcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInBvcnRfc3RhdGVzXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9vcHRpb24gKEpzb25VdGlsLndyaXRlX2xpc3QgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZykpXG4gICAgICBvYiBwLnBvcnRfc3RhdGVzXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHdyaXRlX3NpdGUgb2IgZiA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnWycgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBmLnNpdGVfdHlwZSB3aXRoXG4gICAgfCBDb3VudGVyIGkgLT5cbiAgICAgIGxldCAoKSA9IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgXCJjb3VudGVyXCIgaW5cbiAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnLCcgaW5cbiAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9pbnQgb2IgaVxuICAgIHwgUG9ydCBwIC0+XG4gICAgICBsZXQgKCkgPSBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIFwicG9ydFwiIGluXG4gICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJywnIGluXG4gICAgICB3cml0ZV9jY19wb3J0IG9iIHBcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5sZXQgd3JpdGVfY2Nfc2l0ZSBvYiBmID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic2l0ZV9uYW1lXCIgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYiBmLnNpdGVfbmFtZVxuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9maWVsZCBcInNpdGVfdHlwZVwiIHdyaXRlX3NpdGUgb2IgZiBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cbmxldCBsaW5rc19vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IFdIQVRFVkVSXG4gIHwgYEJvb2wgYiAtPlxuICAgIGxldCAoKSA9IGFzc2VydCBiIGluXG4gICAgU09NRVxuICB8IGBBc3NvYyBbIChcInNpdGVfbmFtZVwiLCBgU3RyaW5nIHNpKTsgKFwiYWdlbnRfdHlwZVwiLCBgU3RyaW5nIHR5KSBdXG4gIHwgYEFzc29jIFsgKFwiYWdlbnRfdHlwZVwiLCBgU3RyaW5nIHR5KTsgKFwic2l0ZV9uYW1lXCIsIGBTdHJpbmcgc2kpIF0gLT5cbiAgICBUWVBFIChzaSwgdHkpXG4gIHwgYExpc3QgXyBhcyB4IC0+XG4gICAgbGV0IGVycm9yX21zZyA9IE5vbmUgaW5cbiAgICBMSU5LU1xuICAgICAgKEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgIChKc29uVXRpbC5jb21wYWN0X3RvX3BhaXJcbiAgICAgICAgICAgIChKc29uVXRpbC5jb21wYWN0X3RvX3BhaXJcbiAgICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZylcbiAgICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZykpXG4gICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2cpKVxuICAgICAgICAgeClcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBjY19wb3J0XCIsIHgpKVxuXG5sZXQgcmVhZF9jY19wb3J0IHAgbGIgPVxuICBsZXQgcG9ydF9saW5rcywgcG9ydF9zdGF0ZXMgPVxuICAgIFlvanNvbi5CYXNpYy5yZWFkX2ZpZWxkc1xuICAgICAgKGZ1biAocywgaSkga2V5IHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJwb3J0X2xpbmtzXCIgdGhlblxuICAgICAgICAgIGxpbmtzX29mX3lvanNvbiAoWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiKSwgaVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGtleSA9IFwicG9ydF9zdGF0ZXNcIikgaW5cbiAgICAgICAgICAoIHMsXG4gICAgICAgICAgICBKc29uVXRpbC5yZWFkX29wdGlvblxuICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcpXG4gICAgICAgICAgICAgIHAgbGIgKVxuICAgICAgICApKVxuICAgICAgKExJTktTIFtdLCBTb21lIFtdKSBwIGxiXG4gIGluXG4gIHsgcG9ydF9saW5rczsgcG9ydF9zdGF0ZXMgfVxuXG5sZXQgcmVhZF9zaXRlIHAgbGIgPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9sYnIgcCBsYiBpblxuICBsZXQga2V5ID0gSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBwIGxiIGluXG4gIGxldCBvdXQgPVxuICAgIEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXNcbiAgICAgIChmdW4gcCBsYiAtPlxuICAgICAgICBpZiBrZXkgPSBcImNvdW50ZXJcIiB0aGVuXG4gICAgICAgICAgQ291bnRlciAoWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGIpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJwb3J0XCIpIGluXG4gICAgICAgICAgUG9ydCAocmVhZF9jY19wb3J0IHAgbGIpXG4gICAgICAgICkpXG4gICAgICBwIGxiXG4gIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX3JiciBwIGxiIGluXG4gIG91dFxuXG5sZXQgcmVhZF9jY19zaXRlIHAgbGIgPVxuICBsZXQgc2l0ZV9uYW1lLCBzaXRlX3R5cGUgPVxuICAgIFlvanNvbi5CYXNpYy5yZWFkX2ZpZWxkc1xuICAgICAgKGZ1biAobiwgcykga2V5IHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJzaXRlX25hbWVcIiB0aGVuXG4gICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIsIHNcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcInNpdGVfdHlwZVwiKSBpblxuICAgICAgICAgIG4sIHJlYWRfc2l0ZSBwIGxiXG4gICAgICAgICkpXG4gICAgICAoXCJcIiwgQ291bnRlciAoLTEpKSBwIGxiXG4gIGluXG4gIHsgc2l0ZV9uYW1lOyBzaXRlX3R5cGUgfVxuXG5sZXQgd3JpdGVfY2Nfbm9kZSBvYiB4ID1cbiAgSnNvblV0aWwud3JpdGVfb3B0aW9uXG4gICAgKGZ1biBvYiBmIC0+XG4gICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcIm5vZGVfdHlwZVwiIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2JcbiAgICAgICAgICBmLm5vZGVfdHlwZVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBtYXRjaCBmLm5vZGVfaWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIG5vZGVfaWQgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJub2RlX2lkXCIgWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYiBub2RlX2lkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9jb21tYSBvYlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwibm9kZV9zaXRlc1wiXG4gICAgICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5IHdyaXRlX2NjX3NpdGUpXG4gICAgICAgICAgb2IgZi5ub2RlX3NpdGVzXG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JylcbiAgICBvYiB4XG5cbmxldCByZWFkX2NjX25vZGUgcCBsYiA9XG4gIEpzb25VdGlsLnJlYWRfb3B0aW9uXG4gICAgKGZ1biBwIGxiIC0+XG4gICAgICBsZXQgbm9kZV9pZCwgbm9kZV90eXBlLCBub2RlX3NpdGVzID1cbiAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfZmllbGRzXG4gICAgICAgICAgKGZ1biAoaWQsIG4sIHMpIGtleSBwIGxiIC0+XG4gICAgICAgICAgICBpZiBrZXkgPSBcIm5vZGVfaWRcIiB0aGVuXG4gICAgICAgICAgICAgIFNvbWUgKFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiKSwgbiwgc1xuICAgICAgICAgICAgZWxzZSBpZiBrZXkgPSBcIm5vZGVfdHlwZVwiIHRoZW5cbiAgICAgICAgICAgICAgaWQsIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCBzXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcIm5vZGVfc2l0ZXNcIikgaW5cbiAgICAgICAgICAgICAgaWQsIG4sIFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IHJlYWRfY2Nfc2l0ZSBwIGxiXG4gICAgICAgICAgICApKVxuICAgICAgICAgIChOb25lLCBcIlwiLCBbfHxdKSBwIGxiXG4gICAgICBpblxuICAgICAgeyBub2RlX2lkOyBub2RlX3R5cGU7IG5vZGVfc2l0ZXMgfSlcbiAgICBwIGxiXG5cbmxldCB3cml0ZV9jb25uZWN0ZWRfY29tcG9uZW50IG9iIGYgPVxuICBKc29uVXRpbC53cml0ZV9hcnJheSAoSnNvblV0aWwud3JpdGVfYXJyYXkgd3JpdGVfY2Nfbm9kZSkgb2IgZlxuXG5sZXQgcmVhZF9jb25uZWN0ZWRfY29tcG9uZW50IG9iIGYgPVxuICBZb2pzb24uQmFzaWMucmVhZF9hcnJheSAoWW9qc29uLkJhc2ljLnJlYWRfYXJyYXkgcmVhZF9jY19ub2RlKSBvYiBmXG5cbmxldCBzdHJpbmdfb2ZfY29ubmVjdGVkX2NvbXBvbmVudCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICBsZXQgKCkgPSB3cml0ZV9jb25uZWN0ZWRfY29tcG9uZW50IG9iIHggaW5cbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCBjb25uZWN0ZWRfY29tcG9uZW50X29mX3N0cmluZyBzID1cbiAgcmVhZF9jb25uZWN0ZWRfY29tcG9uZW50IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGNvdW50ZXJfaW5mbyA9IHtcbiAgY291bnRlcl9pbmZvX21pbjogaW50IG9wdGlvbjtcbiAgY291bnRlcl9pbmZvX21heDogaW50IG9wdGlvbjtcbiAgY291bnRlcl9kZWZhdWx0X3ZhbHVlOiBpbnQ7XG59XG5cbnR5cGUgJ2xpbmtzIHNpdGVfc2lnID0ge1xuICBpbnRlcm5hbF9zdGF0ZTogdW5pdCBOYW1lZERlY2xzLnQ7XG4gIGxpbmtzOiAnbGlua3Mgb3B0aW9uO1xuICBjb3VudGVyX2luZm86IGNvdW50ZXJfaW5mbyBvcHRpb247XG59XG5cbnR5cGUgdCA9IGJvb2wgYXJyYXkgYXJyYXkgc2l0ZV9zaWcgTmFtZWREZWNscy50XG5cbmxldCBmb2xkIGYgPSBOYW1lZERlY2xzLmZvbGQgKGZ1biBpIG4gbyBfIC0+IGYgaSBuIG8pXG5cbmxldCBudW1fb2Zfc2l0ZSA/YWdlbnRfbmFtZSBzaXRlX25hbWUgc2lnbmF0dXJlID1cbiAgbGV0IGtpbmQgPVxuICAgIG1hdGNoIGFnZW50X25hbWUgd2l0aFxuICAgIHwgTm9uZSAtPiBcInNpdGUgbmFtZVwiXG4gICAgfCBTb21lIGFnZW50X25hbWUgLT4gXCJzaXRlIG5hbWUgZm9yIGFnZW50IFwiIF4gYWdlbnRfbmFtZVxuICBpblxuICBOYW1lZERlY2xzLmVsdF9pZCB+a2luZCBzaWduYXR1cmUgc2l0ZV9uYW1lXG5cbmxldCBzaXRlX29mX251bSBhZGRyIHNpZ25hdHVyZSA9XG4gIHRyeSBOYW1lZERlY2xzLmVsdF9uYW1lIHNpZ25hdHVyZSBhZGRyXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgbnVtX29mX2ludGVybmFsX3N0YXRlIHNpdGVfaWQgc3RhdGUgc2lnbmF0dXJlID1cbiAgdHJ5XG4gICAgbGV0IHNpdGVfbmFtZSwgc2l0ZV9zaWcgPSBzaWduYXR1cmUuTmFtZWREZWNscy5kZWNscy4oc2l0ZV9pZCkgaW5cbiAgICBOYW1lZERlY2xzLmVsdF9pZFxuICAgICAgfmtpbmQ6KFwiaW50ZXJuYWwgc3RhdGUgZm9yIHNpdGUgXCIgXiBzaXRlX25hbWUpXG4gICAgICBzaXRlX3NpZy5pbnRlcm5hbF9zdGF0ZSBzdGF0ZVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGludGVybmFsX3N0YXRlX29mX3NpdGVfaWQgc2l0ZV9pZCB2YWxfaWQgc2lnbmF0dXJlID1cbiAgdHJ5XG4gICAgbGV0IHNpdGVfc2lnID0gTmFtZWREZWNscy5lbHRfdmFsIHNpZ25hdHVyZSBzaXRlX2lkIGluXG4gICAgTmFtZWREZWNscy5lbHRfbmFtZSBzaXRlX3NpZy5pbnRlcm5hbF9zdGF0ZSB2YWxfaWRcbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBjb3VudGVyX29mX3NpdGVfaWQgc2l0ZV9pZCBzaWduYXR1cmUgPVxuICB0cnkgKE5hbWVkRGVjbHMuZWx0X3ZhbCBzaWduYXR1cmUgc2l0ZV9pZCkuY291bnRlcl9pbmZvXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgaGFzX2NvdW50ZXIgc2lnbmF0dXJlID1cbiAgZm9sZFxuICAgIChmdW4gcF9pZCBfIG9rIC0+XG4gICAgICB0cnlcbiAgICAgICAgbGV0IHNpdGVfc2lnID0gTmFtZWREZWNscy5lbHRfdmFsIHNpZ25hdHVyZSBwX2lkIGluXG4gICAgICAgIG9rIHx8IG5vdCAoc2l0ZV9zaWcuY291bnRlcl9pbmZvID0gTm9uZSlcbiAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICBmYWxzZSBzaWduYXR1cmVcblxuKCpcbmxldCByZWFkX3Bvc2l0aW9uIHAgbGIgPVxuICBtYXRjaCBZb2pzb24uQmFzaWMuZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHAgbGIgd2l0aFxuICB8IGBBc3NvYyBbIChcImxpbmVcIiwgYEludCBsaW5lKTsgKFwiY2hyXCIsIGBJbnQgY2hyKSBdXG4gIHwgYEFzc29jIFsgKFwiY2hyXCIsIGBJbnQgY2hyKTsgKFwibGluZVwiLCBgSW50IGxpbmUpIF0gLT5cbiAgICB7IGxpbmU7IGNociB9XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHBvc2l0aW9uXCIsIHgpKVxuXG5sZXQgd3JpdGVfcG9zaXRpb24gb2IgeyBsaW5lOyBjaHIgfSA9XG4gIFlvanNvbi53cml0ZV9hc3NvYyBvYiBbIFwibGluZVwiLCBgSW50IGxpbmU7IFwiY2hyXCIsIGBJbnQgY2hyIF1cbiopXG5cbmxldCBvbmVfdG9fanNvbiA9XG4gIE5hbWVkRGVjbHMudG9fanNvbiAoZnVuIHNpZ25hdHVyZSAtPlxuICAgICAgYEFzc29jXG4gICAgICAgIFtcbiAgICAgICAgICAoIFwiaW50ZXJuYWxfc3RhdGVcIixcbiAgICAgICAgICAgIE5hbWVkRGVjbHMudG9fanNvbiAoZnVuICgpIC0+IGBOdWxsKSBzaWduYXR1cmUuaW50ZXJuYWxfc3RhdGUgKTtcbiAgICAgICAgICAoIFwibGlua3NcIixcbiAgICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgICAgICAoZnVuIGxpbmtzIC0+XG4gICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAoZnVuIGEgYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGBMaXN0IChBcnJheS5mb2xkX3JpZ2h0IChmdW4gYiBjIC0+IGBCb29sIGIgOjogYykgYSBbXSlcbiAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgICAgICAgbGlua3MgW10pKVxuICAgICAgICAgICAgICBzaWduYXR1cmUubGlua3MgKTtcbiAgICAgICAgICAoIFwiY291bnRlcl9pbmZvXCIsXG4gICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgKGZ1biBjIC0+XG4gICAgICAgICAgICAgICAgYEFzc29jXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICggXCJtaW5cIixcbiAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gKGZ1biB4IC0+IGBJbnQgeCkgYy5jb3VudGVyX2luZm9fbWluICk7XG4gICAgICAgICAgICAgICAgICAgICggXCJtYXhcIixcbiAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gKGZ1biB4IC0+IGBJbnQgeCkgYy5jb3VudGVyX2luZm9fbWF4ICk7XG4gICAgICAgICAgICAgICAgICAgIFwiZGVmYXVsdFwiLCBgSW50IGMuY291bnRlcl9kZWZhdWx0X3ZhbHVlO1xuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgc2lnbmF0dXJlLmNvdW50ZXJfaW5mbyApO1xuICAgICAgICBdKVxuXG5sZXQgb25lX29mX2pzb24gOiBZb2pzb24uQmFzaWMudCAtPiBib29sIGFycmF5IGFycmF5IHNpdGVfc2lnIE5hbWVkRGVjbHMudCA9XG4gIE5hbWVkRGVjbHMub2ZfanNvbiAoZnVuY3Rpb25cbiAgICB8IGBBc3NvYyBbIChcImludGVybmFsX3N0YXRlXCIsIGEpOyAoXCJsaW5rc1wiLCBiKTsgKFwiY291bnRlcl9pbmZvXCIsIGMpIF0gLT5cbiAgICAgIHtcbiAgICAgICAgaW50ZXJuYWxfc3RhdGUgPVxuICAgICAgICAgIE5hbWVkRGVjbHMub2ZfanNvblxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgYE51bGwgLT4gKClcbiAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuICAgICAgICAgICAgYTtcbiAgICAgICAgbGlua3MgPVxuICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgfCBgTGlzdCBsJyAtPlxuICAgICAgICAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgQm9vbCBiIC0+IGJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgbCdcbiAgICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuICAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChcIlByb2JsZW1hdGljIGFnZW50IHNpZ25hdHVyZVwiLCB4KSkpXG4gICAgICAgICAgICBiO1xuICAgICAgICBjb3VudGVyX2luZm8gPVxuICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgYEFzc29jXG4gICAgICAgICAgICAgICAgICBbIChcIm1pblwiLCBjMV9vcHQpOyAoXCJtYXhcIiwgYzJfb3B0KTsgKFwiZGVmYXVsdFwiLCBgSW50IGMzKSBdIC0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgY291bnRlcl9pbmZvX21pbiA9XG4gICAgICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgfCBgSW50IGMgLT4gY1xuICAgICAgICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuICAgICAgICAgICAgICAgICAgICAgIGMxX29wdDtcbiAgICAgICAgICAgICAgICAgIGNvdW50ZXJfaW5mb19tYXggPVxuICAgICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHwgYEludCBjIC0+IGNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcbiAgICAgICAgICAgICAgICAgICAgICBjMl9vcHQ7XG4gICAgICAgICAgICAgICAgICBjb3VudGVyX2RlZmF1bHRfdmFsdWUgPSBjMztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcbiAgICAgICAgICAgIGM7XG4gICAgICB9XG4gICAgfCB4IC0+XG4gICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuXG50eXBlIGNvdW50ZXJfYWdlbnRfaW5mbyA9IHsgaWQ6IGludDsgYXJpdHk6IGludDsgcG9ydHM6IGludCAqIGludCB9XG5cbnR5cGUgcyA9IHtcbiAgYWdlbnRfc2lnczogdCBOYW1lZERlY2xzLnQ7XG4gIGNvdW50ZXJfYWdlbnRfaW5mbzogY291bnRlcl9hZ2VudF9pbmZvIG9wdGlvbjtcbn1cblxubGV0IHNpemUgc2lncyA9IE5hbWVkRGVjbHMuc2l6ZSBzaWdzLmFnZW50X3NpZ3NcbmxldCBnZXQgc2lncyBhZ2VudF9pZCA9IE5hbWVkRGVjbHMuZWx0X3ZhbCBzaWdzLmFnZW50X3NpZ3MgYWdlbnRfaWRcbmxldCBhcml0eSBzaWdzIGFnZW50X2lkID0gTmFtZWREZWNscy5zaXplIChnZXQgc2lncyBhZ2VudF9pZClcblxubGV0IG1heF9hcml0eSBzaWdzID1cbiAgTmFtZWREZWNscy5mb2xkIChmdW4gXyBfIHggYSAtPiBtYXggeCAoTmFtZWREZWNscy5zaXplIGEpKSAwIHNpZ3MuYWdlbnRfc2lnc1xuXG5sZXQgYWdlbnRfb2ZfbnVtIGkgc2lncyA9IE5hbWVkRGVjbHMuZWx0X25hbWUgc2lncy5hZ2VudF9zaWdzIGlcblxubGV0IG51bV9vZl9hZ2VudCBuYW1lIHNpZ3MgPVxuICBOYW1lZERlY2xzLmVsdF9pZCB+a2luZDpcImFnZW50XCIgc2lncy5hZ2VudF9zaWdzIG5hbWVcblxubGV0IGlkX29mX3NpdGUgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ2VudF90eSkgc2l0ZV9uYW1lIHNpZ3MgPVxuICBsZXQgbiA9IG51bV9vZl9hZ2VudCBhZ2VudF90eSBzaWdzIGluXG4gIG51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHNpdGVfbmFtZSAoZ2V0IHNpZ3MgbilcblxubGV0IHNpdGVfb2ZfaWQgYWdlbnRfaWQgc2l0ZV9pZCBzaWdzID0gc2l0ZV9vZl9udW0gc2l0ZV9pZCAoZ2V0IHNpZ3MgYWdlbnRfaWQpXG5cbmxldCBpZF9vZl9pbnRlcm5hbF9zdGF0ZSAoKGFnZW50X25hbWUsIF8pIGFzIGFnZW50X3R5KSBzaXRlX25hbWUgc3RhdGUgc2lncyA9XG4gIGxldCBuID0gbnVtX29mX2FnZW50IGFnZW50X3R5IHNpZ3MgaW5cbiAgbGV0IHNpZ25hdHVyZSA9IGdldCBzaWdzIG4gaW5cbiAgbGV0IHNpdGVfaWQgPSBudW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBzaXRlX25hbWUgc2lnbmF0dXJlIGluXG4gIG51bV9vZl9pbnRlcm5hbF9zdGF0ZSBzaXRlX2lkIHN0YXRlIHNpZ25hdHVyZVxuXG5sZXQgaW50ZXJuYWxfc3RhdGVfb2ZfaWQgYWdlbnRfaWQgaWRfc2l0ZSBpZF9zdGF0ZSBzaWdzID1cbiAgaW50ZXJuYWxfc3RhdGVfb2Zfc2l0ZV9pZCBpZF9zaXRlIGlkX3N0YXRlIChnZXQgc2lncyBhZ2VudF9pZClcblxubGV0IGludGVybmFsX3N0YXRlc19udW1iZXIgYWdlbnRfaWQgc2l0ZV9pZCBzaWdzID1cbiAgdHJ5XG4gICAgbGV0IHNpdGVfc2lnID0gTmFtZWREZWNscy5lbHRfdmFsIChnZXQgc2lncyBhZ2VudF9pZCkgc2l0ZV9pZCBpblxuICAgIE5hbWVkRGVjbHMuc2l6ZSBzaXRlX3NpZy5pbnRlcm5hbF9zdGF0ZVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgYWdlbnRfaWQgc2l0ZV9pZCBzaWdzID1cbiAgdHJ5XG4gICAgbGV0IHNpdGVfc2lnID0gTmFtZWREZWNscy5lbHRfdmFsIChnZXQgc2lncyBhZ2VudF9pZCkgc2l0ZV9pZCBpblxuICAgIGlmIE5hbWVkRGVjbHMuc2l6ZSBzaXRlX3NpZy5pbnRlcm5hbF9zdGF0ZSA9IDAgdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIFNvbWUgMFxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgIGludmFsaWRfYXJnIFwiU2lnbmF0dXJlLmRlZmF1bHRfbnVtX3ZhbHVlOiBpbnZhbGlkIHNpdGUgaWRlbnRpZmllclwiXG5cbmxldCByZWMgYWxsb3dlZF9saW5rIGFnMSBzMSBhZzIgczIgc2lncyA9XG4gIGlmIGFnMSA+IGFnMiB0aGVuXG4gICAgYWxsb3dlZF9saW5rIGFnMiBzMiBhZzEgczEgc2lnc1xuICBlbHNlIChcbiAgICB0cnlcbiAgICAgIG1hdGNoIChOYW1lZERlY2xzLmVsdF92YWwgKGdldCBzaWdzIGFnMSkgczEpLmxpbmtzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICB8IFNvbWUgbCAtPiBsLihhZzIgLSBhZzEpLihzMilcbiAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgaW52YWxpZF9hcmcgXCJTaWduYXR1cmUuYWxsb3dlZF9saW5rOiBpbnZhbGlkIHNpdGUgaWRlbnRpZmllclwiXG4gIClcblxubGV0IGNyZWF0ZSB+Y291bnRlcnNfcGVyX2FnZW50IGFnZW50X3NpZ3MgPVxuICB7XG4gICAgYWdlbnRfc2lncztcbiAgICBjb3VudGVyX2FnZW50X2luZm8gPVxuICAgICAgKGlmIGNvdW50ZXJzX3Blcl9hZ2VudCA9IFtdIHRoZW5cbiAgICAgICAgIE5vbmVcbiAgICAgICBlbHNlXG4gICAgICAgICAoKiBJZiB0aGVyZSBpcyBhIGNvdW50ZXIgYWdlbnQsIHdlIGNob29zZSAwIGZvciBpdHMgYWdlbnQgaWQgYW5kIDAgYW5kIDEgYXMgaXRzIHBvcnQgaWRzICopXG4gICAgICAgICBTb21lIHsgaWQgPSAwOyBhcml0eSA9IDI7IHBvcnRzID0gMCwgMSB9KTtcbiAgfVxuXG5sZXQgaXNfY291bnRlcl9hZ2VudCBzaWdzIGFnZW50X2lkID1cbiAgbWF0Y2ggc2lncy5jb3VudGVyX2FnZW50X2luZm8gd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIGFnZW50X2luZm8gLT4gYWdlbnRfaWQgPSBhZ2VudF9pbmZvLmlkXG5cbmxldCBwb3J0c19pZl9jb3VudGVyX2FnZW50IHNpZ3MgYWdlbnRfaWQgPVxuICBtYXRjaCBzaWdzLmNvdW50ZXJfYWdlbnRfaW5mbyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhZ2VudF9pbmZvIC0+XG4gICAgaWYgYWdlbnRfaWQgPSBhZ2VudF9pbmZvLmlkIHRoZW5cbiAgICAgIFNvbWUgYWdlbnRfaW5mby5wb3J0c1xuICAgIGVsc2VcbiAgICAgIE5vbmVcblxubGV0IHNpdGVfaXNfY291bnRlciBzaWdzIGFnX3R5IGlkID1cbiAgY291bnRlcl9vZl9zaXRlX2lkIGlkIChnZXQgc2lncyBhZ190eSkgPD4gTm9uZVxuXG5sZXQgZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzID1cbiAgbWF0Y2ggc2lncy5jb3VudGVyX2FnZW50X2luZm8gd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJObyBjb3VudGVyIGFnZW50XCJcbiAgfCBTb21lIGNvdW50ZXJfYWdlbnRfaW5mbyAtPiBjb3VudGVyX2FnZW50X2luZm9cblxubGV0IGludmVydGVkX2NvdW50ZXJfc3VmZml4IDogc3RyaW5nID0gXCJfX2ludmVydGVkXCJcblxubGV0IGlzX2ludmVydGVkX2NvdW50ZXIgKGNvdW50ZXJfbmFtZSA6IHN0cmluZykgOiBib29sID1cbiAgU3RyaW5nLmVuZHNfd2l0aCB+c3VmZml4OmludmVydGVkX2NvdW50ZXJfc3VmZml4IGNvdW50ZXJfbmFtZVxuXG5sZXQgcHJpbnRfYWdlbnQgc2lncyBmIGFnX3R5ID1cbiAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIEBAIGFnZW50X29mX251bSBhZ190eSBzaWdzXG5cbmxldCBwcmludF9zaXRlIHNpZ3MgYWdfdHkgZiBpZCA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBAQCBzaXRlX29mX2lkIGFnX3R5IGlkIHNpZ3NcblxubGV0IHByaW50X2ludGVybmFsX3N0YXRlIHNpZ3MgYWdfdHkgc2l0ZSBmIGlkID1cbiAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIEBAIGludGVybmFsX3N0YXRlX29mX2lkIGFnX3R5IHNpdGUgaWQgc2lnc1xuXG5sZXQgcHJpbnRfc2l0ZV9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUgZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBwcmludF9zaXRlIHNpZ3MgYWdfdHkgZiBzaXRlXG4gIHwgU29tZSBpZCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc3slc31cIlxuICAgICAgKHNpdGVfb2ZfaWQgYWdfdHkgc2l0ZSBzaWdzKVxuICAgICAgKGludGVybmFsX3N0YXRlX29mX2lkIGFnX3R5IHNpdGUgaWQgc2lncylcblxubGV0IHByaW50X2NvdW50ZXJfaW5mbyBmID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBjIC0+XG4gICAgKG1hdGNoIGMuY291bnRlcl9pbmZvX21pbiwgYy5jb3VudGVyX2luZm9fbWF4IHdpdGhcbiAgICB8IFNvbWUgaSwgU29tZSBqIHdoZW4gaSA9IGMuY291bnRlcl9kZWZhdWx0X3ZhbHVlIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiez0lZC8rPSVkfVwiIGkgalxuICAgIHwgaV9vcHQsIGpfb3B0IC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiey09JXMvPSVkLys9JXN9XCJcbiAgICAgICAgKG1hdGNoIGlfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiLW9vXCJcbiAgICAgICAgfCBTb21lIGkgLT4gRm9ybWF0LnNwcmludGYgXCIlZFwiIGkpXG4gICAgICAgIGMuY291bnRlcl9kZWZhdWx0X3ZhbHVlXG4gICAgICAgIChtYXRjaCBqX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIi1vb1wiXG4gICAgICAgIHwgU29tZSBpIC0+IEZvcm1hdC5zcHJpbnRmIFwiJWRcIiBpKSlcblxubGV0IHByaW50X2NvdW50ZXIgc2lncyBhZ190eSBmIGlkID1cbiAgcHJpbnRfY291bnRlcl9pbmZvIGYgKGNvdW50ZXJfb2Zfc2l0ZV9pZCBpZCAoZ2V0IHNpZ3MgYWdfdHkpKVxuXG5sZXQgcHJpbnRfb25lID8oc2lncyA6IHMgb3B0aW9uKSAoaSA6IGludCkgKGYgOiBGb3JtYXQuZm9ybWF0dGVyKVxuICAgIChzaWduYXR1cmUgOiB0KSA9XG4gIGxldCBwcF9pbnQgZiB4ID1cbiAgICBpZiBOYW1lZERlY2xzLnNpemUgeCA+IDAgdGhlblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcInslYX1cIlxuICAgICAgICAoTmFtZWREZWNscy5wcmludCB+c2VwOlBwLnNwYWNlIChmdW4gXyBuYSBmICgpIC0+XG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgbmEpKVxuICAgICAgICB4XG4gIGluXG4gIGxldCBwcF9saW5rID1cbiAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICB8IE5vbmUgLT4gZnVuIF8gXyBfIC0+ICgpXG4gICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgIGZ1biBpIGYgLT4gKGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgbGlua3MgLT5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiWyVhXVwiXG4gICAgICAgICAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBhZyAtPlxuICAgICAgICAgICAgICAgICBQcC5hcnJheSBQcC5zcGFjZSAoZnVuIHNpIGYgYiAtPlxuICAgICAgICAgICAgICAgICAgICAgaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKHByaW50X3NpdGUgc2lncyAoaSArIGFnKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICBzaSAocHJpbnRfYWdlbnQgc2lncykgKGkgKyBhZykpKSlcbiAgICAgICAgICAgIGxpbmtzKVxuICBpblxuICAoTmFtZWREZWNscy5wcmludFxuICAgICB+c2VwOihmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLEAsXCIpXG4gICAgIChmdW4gXyBuYW1lIGYgc2l0ZV9zaWcgLT5cbiAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXMlYSVhJWFcIiBuYW1lIHBwX2ludCBzaXRlX3NpZy5pbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgKHBwX2xpbmsgaSkgc2l0ZV9zaWcubGlua3MgcHJpbnRfY291bnRlcl9pbmZvIHNpdGVfc2lnLmNvdW50ZXJfaW5mbykpXG4gICAgZiBzaWduYXR1cmVcblxubGV0IHByaW50IGYgc2lncyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQF1cIlxuICAgIChOYW1lZERlY2xzLnByaW50IH5zZXA6UHAuc3BhY2UgKGZ1biBpIG4gZiBzaSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JSVhZ2VudDogJXMoJWEpQF1cIiBuIChwcmludF9vbmUgfnNpZ3MgaSkgc2kpKVxuICAgIHNpZ3MuYWdlbnRfc2lnc1xuXG5sZXQgdG9fanNvbiBzaWdzID0gTmFtZWREZWNscy50b19qc29uIG9uZV90b19qc29uIHNpZ3MuYWdlbnRfc2lnc1xuXG5sZXQgb2ZfanNvbiB2ID1cbiAgbGV0IGFnZW50X3NpZ3MgOiAnYSBzaXRlX3NpZyBOYW1lZERlY2xzLnQgTmFtZWREZWNscy50ID1cbiAgICBOYW1lZERlY2xzLm9mX2pzb24gb25lX29mX2pzb24gdlxuICBpblxuICBtYXRjaFxuICAgIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIFwiX19jb3VudGVyX2FnZW50XCIgYWdlbnRfc2lncy5OYW1lZERlY2xzLmZpbmRlclxuICB3aXRoXG4gIHwgU29tZSBpZCAtPlxuICAgIGxldCBhZ2VudF9zaWduYXR1cmUgPSBOYW1lZERlY2xzLmVsdF92YWwgYWdlbnRfc2lncyBpZCBpblxuICAgIGxldCBwb3J0cyA9XG4gICAgICAoIG51bV9vZl9zaXRlIChcImFcIiwgTG9jLmR1bW15KSBhZ2VudF9zaWduYXR1cmUsXG4gICAgICAgIG51bV9vZl9zaXRlIChcImJcIiwgTG9jLmR1bW15KSBhZ2VudF9zaWduYXR1cmUgKVxuICAgIGluXG4gICAgeyBhZ2VudF9zaWdzOyBjb3VudGVyX2FnZW50X2luZm8gPSBTb21lIHsgaWQ7IGFyaXR5ID0gMjsgcG9ydHMgfSB9XG4gIHwgTm9uZSAtPiB7IGFnZW50X3NpZ3M7IGNvdW50ZXJfYWdlbnRfaW5mbyA9IE5vbmUgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBjY19zaXRlID0geyBzaXRlX2xpbms6IChpbnQgKiBpbnQpIG9wdGlvbjsgc2l0ZV9zdGF0ZTogaW50IG9wdGlvbiB9XG5cbnR5cGUgY2Nfbm9kZSA9IHtcbiAgbm9kZV90eXBlOiBpbnQ7XG4gIG5vZGVfaWRfaW5fd2l0bmVzczogaW50O1xuICBub2RlX3NpdGVzOiBjY19zaXRlIGFycmF5O1xufVxuXG50eXBlIGNvbm5lY3RlZF9jb21wb25lbnQgPSBjY19ub2RlIGFycmF5XG5cbmxldCByZWMgYWdlbnRzX2FyZV9jb21wYXRpYmxlcyBhIGIgZG9uID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgKHgsIHkpIDo6IHEgLT5cbiAgICBsZXQgbyA9IGEuKHgpIGluXG4gICAgbGV0IHAgPSBiLih5KSBpblxuICAgIG8ubm9kZV90eXBlID0gcC5ub2RlX3R5cGVcbiAgICAmJlxuICAgIGxldCBpX29rID1cbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdDJpXG4gICAgICAgIChmdW4gXyBiIHggeSAtPlxuICAgICAgICAgIGJcbiAgICAgICAgICAmJlxuICAgICAgICAgIG1hdGNoIHguc2l0ZV9zdGF0ZSwgeS5zaXRlX3N0YXRlIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSwgU29tZSBiIC0+IGEgPSBiXG4gICAgICAgICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICAgICAgICB8IChTb21lIF8gfCBOb25lKSwgXyAtPiBmYWxzZSlcbiAgICAgICAgdHJ1ZSBvLm5vZGVfc2l0ZXMgcC5ub2RlX3NpdGVzXG4gICAgaW5cbiAgICBpX29rXG4gICAgJiZcbiAgICAobWF0Y2hcbiAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnQyaVxuICAgICAgICAgKGZ1biBfIGMgeCB5IC0+XG4gICAgICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gY1xuICAgICAgICAgICB8IFNvbWUgdG9kbyAtPlxuICAgICAgICAgICAgIChtYXRjaCB4LnNpdGVfbGluaywgeS5zaXRlX2xpbmsgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gY1xuICAgICAgICAgICAgIHwgU29tZSAoYSwgcyksIFNvbWUgKGIsIHMnKSAtPlxuICAgICAgICAgICAgICAgaWYgcyA8PiBzJyB0aGVuXG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICggTGlzdC5maW5kX2FsbCAoZnVuIChhJywgYicpIC0+IGEgPSBhJyB8fCBiID0gYicpIGRvbixcbiAgICAgICAgICAgICAgICAgICAgIExpc3QuZmluZF9hbGwgKGZ1biAoYScsIGInKSAtPiBhID0gYScgfHwgYiA9IGInKSB0b2RvIClcbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICB8IF8gOjogXyA6OiBfLCBfIHwgXywgXyA6OiBfIDo6IF8gfCBbIF8gXSwgWyBfIF0gLT4gTm9uZVxuICAgICAgICAgICAgICAgICB8IFsgKGEnLCBiJykgXSwgW10gfCBbXSwgWyAoYScsIGInKSBdIC0+XG4gICAgICAgICAgICAgICAgICAgaWYgYSA9IGEnICYmIGIgPSBiJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICBjXG4gICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICB8IFtdLCBbXSAtPiBTb21lICgoYSwgYikgOjogdG9kbylcbiAgICAgICAgICAgICAgICkpKVxuICAgICAgICAgKFNvbWUgcSkgby5ub2RlX3NpdGVzIHAubm9kZV9zaXRlc1xuICAgICB3aXRoXG4gICAgfCBTb21lIHRvZG8nIC0+IGFnZW50c19hcmVfY29tcGF0aWJsZXMgYSBiICgoeCwgeSkgOjogZG9uKSB0b2RvJ1xuICAgIHwgXyAtPiBmYWxzZSlcblxubGV0IGNsYXNzaWZ5X2J5X3R5cGUgc2lncyBtaXggPVxuICBsZXQgbGVuID0gU2lnbmF0dXJlLnNpemUgc2lncyBpblxuICBsZXQgb3V0ID0gQXJyYXkubWFrZSBsZW4gKDAsIFtdKSBpblxuICBsZXQgY2xhc3NpZnkgaWQgYWcgPVxuICAgIGxldCBuYiwgYWdzID0gb3V0LihhZy5ub2RlX3R5cGUpIGluXG4gICAgb3V0LihhZy5ub2RlX3R5cGUpIDwtIHN1Y2MgbmIsIGlkIDo6IGFnc1xuICBpblxuICBsZXQgKCkgPSBBcnJheS5pdGVyaSBjbGFzc2lmeSBtaXggaW5cbiAgb3V0XG5cbmxldCBlcXVhbCBjYnRfYSBhIGNidF9iIGIgPVxuICBtYXRjaCBUb29scy5hcnJheV9taW5fZXF1YWxfbm90X251bGwgY2J0X2EgY2J0X2Igd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIChbXSwgYWdzKSAtPiBhZ3MgPSBbXVxuICB8IFNvbWUgKGgxIDo6IF8sIGFncykgLT5cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBib29sIGFnIC0+IGJvb2wgfHwgYWdlbnRzX2FyZV9jb21wYXRpYmxlcyBhIGIgW10gWyBoMSwgYWcgXSlcbiAgICAgIGZhbHNlIGFnc1xuXG5sZXQgaGFzaF9wcmltZSA9IDI5XG5cbmxldCBjb2Fyc2VfaGFzaCBjYnQgPVxuICBBcnJheS5mb2xkX3JpZ2h0IChmdW4gKGwsIF8pIGFjYyAtPiBsICsgKGhhc2hfcHJpbWUgKiBhY2MpKSBjYnQgMFxuXG50eXBlIHQgPSAoaW50ICogKGludCAqIGludCBsaXN0KSBhcnJheSAqIGNvbm5lY3RlZF9jb21wb25lbnQpIGxpc3QgTW9kcy5JbnRNYXAudFxuXG5sZXQgZW1wdHkgPSBNb2RzLkludE1hcC5lbXB0eVxuXG5sZXQgaW5jcmVtZW50X2luX3NuYXBzaG90IH5yYXcgc2lncyB4IHMgPVxuICBsZXQgY2J0X3ggPSBjbGFzc2lmeV9ieV90eXBlIHNpZ3MgeCBpblxuICBsZXQgaHMgPSBjb2Fyc2VfaGFzaCBjYnRfeCBpblxuICBsZXQgbCA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbXSBocyBzIGluXG4gIGxldCByZWMgYXV4X2luY3JlbWVudCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbIDEsIGNidF94LCB4IF1cbiAgICB8ICgobiwgY2J0X3ksIHkpIGFzIGgpIDo6IHQgLT5cbiAgICAgIGlmIGVxdWFsIGNidF94IHggY2J0X3kgeSB0aGVuXG4gICAgICAgIChzdWNjIG4sIGNidF95LCB5KSA6OiB0XG4gICAgICBlbHNlXG4gICAgICAgIGggOjogYXV4X2luY3JlbWVudCB0XG4gIGluXG4gIE1vZHMuSW50TWFwLmFkZCBoc1xuICAgIChpZiByYXcgdGhlblxuICAgICAgICgxLCBjYnRfeCwgeCkgOjogbFxuICAgICBlbHNlXG4gICAgICAgYXV4X2luY3JlbWVudCBsKVxuICAgIHNcblxubGV0IHJlYyBjb3VudGVyX3ZhbHVlIGNjIChuaWQsIHNpZCkgY291bnQgPVxuICBsZXQgYWcgPSBjYy4obmlkKSBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpZCBhY2Mgc2kgLT5cbiAgICAgIGlmIGlkID0gc2lkIHRoZW5cbiAgICAgICAgYWNjXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggc2kuc2l0ZV9saW5rIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgeCAtPiBjb3VudGVyX3ZhbHVlIGNjIHggKGFjYyArIDEpXG4gICAgICApKVxuICAgIGNvdW50IGFnLm5vZGVfc2l0ZXNcblxubGV0IGNjX3RvX3VzZXJfY2MgPyhrZWVwX2ludmVydGVkX2NvdW50ZXJzIDogYm9vbCA9IGZhbHNlKSB+ZGVidWdfbW9kZSB+cmF3IHNpZ3NcbiAgICBjYyA9XG4gIGxldCByIDogUmVuYW1pbmcudCA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gIGxldCAoY2NfbGlzdF93aXRob3V0X2NvdW50ZXJzLCBpbmRleGVzLCBfKSA6IGNjX25vZGUgbGlzdCAqIFJlbmFtaW5nLnQgKiBpbnQgPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgIChmdW4gaSAoYWNjLCBpbmRleGVzLCBwb3MpIGFnIC0+XG4gICAgICAgIGlmIFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgYWcubm9kZV90eXBlIHRoZW5cbiAgICAgICAgICBhY2MsIGluZGV4ZXMsIHBvc1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgaW5kZXhlcycgPVxuICAgICAgICAgICAgaWYgaSA9IHBvcyB0aGVuXG4gICAgICAgICAgICAgIGluZGV4ZXNcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaSBwb3MgaW5kZXhlcyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiSW5qZWN0aXZpdHkgb2YgcmVuYW1pbmcgaW4gc25hcHNob3RcIikpXG4gICAgICAgICAgICAgIHwgU29tZSByIC0+IHJcbiAgICAgICAgICAgIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGFnIDo6IGFjYywgaW5kZXhlcycsIHBvcyArIDFcbiAgICAgICAgKSlcbiAgICAgIChbXSwgciwgMCkgY2NcbiAgaW5cbiAgbGV0IGNjX3dpdGhvdXRfY291bnRlcnMgOiBjY19ub2RlIGFycmF5ID1cbiAgICBBcnJheS5vZl9saXN0IChMaXN0LnJldiBjY19saXN0X3dpdGhvdXRfY291bnRlcnMpXG4gIGluXG4gIFt8XG4gICAgQXJyYXkubWFwXG4gICAgICAoZnVuIGFnIC0+XG4gICAgICAgIGxldCBub2RlX3NpdGVzX2FsbCA6IFVzZXJfZ3JhcGguY2Nfc2l0ZSBhcnJheSA9XG4gICAgICAgICAgQXJyYXkubWFwaVxuICAgICAgICAgICAgKGZ1biBpZCBzaSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5zaXRlX25hbWUgPVxuICAgICAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZy5ub2RlX3R5cGUpXG4gICAgICAgICAgICAgICAgICAgIGlkO1xuICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID1cbiAgICAgICAgICAgICAgICAgIChsZXQgcG9ydF9zdGF0ZXMgPVxuICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2kuc2l0ZV9zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSBbXVxuICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnLm5vZGVfdHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcztcbiAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBzaS5zaXRlX2xpbmsgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPSBVc2VyX2dyYXBoLkxJTktTIFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9zdGF0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICB8IFNvbWUgKGRuX2lkLCBzKSAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IGRuX2lkJyA9XG4gICAgICAgICAgICAgICAgICAgICAgIHRyeSBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmRleGVzIGRuX2lkXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggUmVuYW1pbmcuVW5kZWZpbmVkIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IGRuX2lkXG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgaWYgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBjYy4oZG5faWQpLm5vZGVfdHlwZVxuICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLkNvdW50ZXIgKGNvdW50ZXJfdmFsdWUgY2MgKGRuX2lkLCBzKSAwKVxuICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLkxJTktTIFsgKDAsIGRuX2lkJyksIHMgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9zdGF0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBhZy5ub2RlX3NpdGVzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBub2RlX3NpdGVzIDogVXNlcl9ncmFwaC5jY19zaXRlIGFycmF5ID1cbiAgICAgICAgICBpZiBrZWVwX2ludmVydGVkX2NvdW50ZXJzIHRoZW5cbiAgICAgICAgICAgIG5vZGVfc2l0ZXNfYWxsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKCogUmVtb3ZlIGludmVydGVkIGNvdW50ZXJzIGZyb20gdXNlciBzbmFwc2hvdCAqKVxuICAgICAgICAgICAgbm9kZV9zaXRlc19hbGwgfD4gQXJyYXkudG9fbGlzdFxuICAgICAgICAgICAgfD4gTGlzdC5maWx0ZXIgKGZ1biAoc2l0ZSA6IFVzZXJfZ3JhcGguY2Nfc2l0ZSkgOiBib29sIC0+XG4gICAgICAgICAgICAgICAgICAgbm90IChTaWduYXR1cmUuaXNfaW52ZXJ0ZWRfY291bnRlciBzaXRlLnNpdGVfbmFtZSkpXG4gICAgICAgICAgICB8PiBBcnJheS5vZl9saXN0XG4gICAgICAgIGluXG5cbiAgICAgICAgU29tZVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFVzZXJfZ3JhcGgubm9kZV9pZCA9XG4gICAgICAgICAgICAgIChpZiByYXcgdGhlblxuICAgICAgICAgICAgICAgICBTb21lIGFnLm5vZGVfaWRfaW5fd2l0bmVzc1xuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBOb25lKTtcbiAgICAgICAgICAgIFVzZXJfZ3JhcGgubm9kZV90eXBlID1cbiAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpIGFnLm5vZGVfdHlwZTtcbiAgICAgICAgICAgIFVzZXJfZ3JhcGgubm9kZV9zaXRlcztcbiAgICAgICAgICB9KVxuICAgICAgY2Nfd2l0aG91dF9jb3VudGVycztcbiAgfF1cblxubGV0IGZvbGQgZiB4IHMgPVxuICBNb2RzLkludE1hcC5mb2xkXG4gICAgKGZ1biBfIGwgYWNjIC0+IExpc3QuZm9sZF9sZWZ0IChmdW4gYSAobmIsIF8sIGNjKSAtPiBmIGEgbmIgY2MpIGFjYyBsKVxuICAgIHMgeFxuXG5sZXQgZXhwb3J0IH5kZWJ1Z19tb2RlIH5yYXcgc2lncyBzID1cbiAgZm9sZCAoZnVuIGEgeCB5IC0+ICh4LCBjY190b191c2VyX2NjIH5kZWJ1Z19tb2RlIH5yYXcgc2lncyB5KSA6OiBhKSBbXSBzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbnQgKiBpbnRcbigqKiBhZ2VudF9pZCAqIGFnZW50X3R5cGUgKilcblxudHlwZSBhZyA9IHRcblxubGV0IG1ha2UgfmlkIH5zb3J0ID0gaWQsIHNvcnRcblxubGV0IHByaW50ID9zaWdzIH53aXRoX2lkIGYgKGksIHR5KSA9XG4gIG1hdGNoIHNpZ3Mgd2l0aFxuICB8IFNvbWUgc2lncyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSV0XCIgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKSB0eSAoZnVuIGYgLT5cbiAgICAgICAgaWYgd2l0aF9pZCB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCIvKiVpKi9cIiBpKVxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIm4laVwiIGlcblxubGV0IHByaW50X3NpdGUgP3NpZ3MgKGksIGFnZW50KSBmIGlkID1cbiAgbWF0Y2ggc2lncyB3aXRoXG4gIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWdlbnQgZiBpZFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIm4laXMlaVwiIGkgaWRcblxubGV0IHByaW50X2ludGVybmFsID9zaWdzIChpLCBhZ2VudCkgc2l0ZSBmIGlkID1cbiAgbWF0Y2ggc2lncyB3aXRoXG4gIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9zaXRlX2ludGVybmFsX3N0YXRlIHNpZ3MgYWdlbnQgc2l0ZSBmIChTb21lIGlkKVxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIm4laXMlaX4laVwiIGkgc2l0ZSBpZFxuXG5sZXQgcHJpbnRfcmF3X2ludGVybmFsID9zaWdzIChpLCBhZ2VudCkgc2l0ZSBmIGlkID1cbiAgbWF0Y2ggc2lncyB3aXRoXG4gIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnZW50IHNpdGUgZiBpZFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIm4laXMlaX4laVwiIGkgc2l0ZSBpZFxuXG5sZXQgcmVuYW1lIH5kZWJ1Z19tb2RlIGluaiAobl9pZCwgbl90eSkgPVxuICBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogbl9pZCwgbl90eVxuXG5sZXQgc29ydCAoXywgdHkpID0gdHlcbmxldCBpZCAoaWQsIF8pID0gaWRcbmxldCBjb21wYXJlIChpZDEsIF8pIChpZDIsIF8pID0gTW9kcy5pbnRfY29tcGFyZSBpZDEgaWQyXG5sZXQganNvbl9kaWN0aW9ubmFyeSA9IFwiXFxcImFnZW50XFxcIjp7XFxcImlkXFxcIjowLFxcXCJ0eXBlXFxcIjoxfVwiXG5cbmxldCB3cml0ZV9qc29uIG9iIGEgPVxuICBKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLndyaXRlX2ludCBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIGFcblxubGV0IHJlYWRfanNvbiBwIGxiID1cbiAgSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfaW50IFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiXG5cbmxldCB0b19qc29uIChpZCwgdHkpID0gYExpc3QgWyBgSW50IGlkOyBgSW50IHR5IF1cblxubGV0IG9mX2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYEludCBpZDsgYEludCB0eSBdIC0+IGlkLCB0eVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhZ2VudFwiLCB4KSlcblxubW9kdWxlIFNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gYWdcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IHByaW50ID0gcHJpbnQgP3NpZ3M6Tm9uZSB+d2l0aF9pZDp0cnVlXG5lbmQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRWRnZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBBZ2VudC50ICogaW50XG4gICgqKiBhZ2VudCAqIHNpdGUgKilcblxuICBsZXQgX2NvbXBhcmUgKChuLCBfKSwgcykgKChuJywgXyksIHMnKSA9XG4gICAgbGV0IGMgPSBNb2RzLmludF9jb21wYXJlIG4gbicgaW5cbiAgICBpZiBjIDw+IDAgdGhlblxuICAgICAgY1xuICAgIGVsc2VcbiAgICAgIE1vZHMuaW50X2NvbXBhcmUgcyBzJ1xuXG4gICgqIGxldCBkdW1teV9saW5rID0gKCgtMSwtMSksLTEpICopXG5lbmRcblxuKCogZnVuY3Rpb25zIHVzaW5nIHRoZSBjYWNoZSBhcmUgcmVzcG9uc2libGUgb2YgcmVzZXRpbmcgdGhlIGNhY2hlIGF0IGV4aXQgKilcbm1vZHVsZSBDYWNoZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgdGVzdHM6IGludCBNb2RzLkR5bkFycmF5LnQ7XG4gICAgYmFnOiBpbnQgTW9kcy5EeW5BcnJheS50O1xuICAgIG11dGFibGUgbGltaXQ6IGludDtcbiAgfVxuXG4gIGxldCBpbnRfbCA9IDMxICgqU3lzLmludF9zaXplKilcblxuICBsZXQgY3JlYXRlICgpID1cbiAgICB7IHRlc3RzID0gTW9kcy5EeW5BcnJheS5tYWtlIDEgMDsgYmFnID0gTW9kcy5EeW5BcnJheS5tYWtlIDEgMDsgbGltaXQgPSAwIH1cblxuICBsZXQgbWFyayB0IGkgPVxuICAgIGxldCB4ID0gaSAvIGludF9sIGluXG4gICAgbGV0IG9sZCA9IE1vZHMuRHluQXJyYXkuZ2V0IHQudGVzdHMgeCBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBvbGQgPSAwIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCB0LmJhZyB0LmxpbWl0IHggaW5cbiAgICAgICAgdC5saW1pdCA8LSBzdWNjIHQubGltaXRcbiAgICAgIClcbiAgICBpblxuICAgIE1vZHMuRHluQXJyYXkuc2V0IHQudGVzdHMgeCAob2xkIGxvciAoMSBsc2wgKGkgbW9kIGludF9sKSkpXG5cbiAgbGV0IHRlc3QgdCBpID1cbiAgICBNb2RzLkR5bkFycmF5LmdldCB0LnRlc3RzIChpIC8gaW50X2wpIGxhbmQgKDEgbHNsIChpIG1vZCBpbnRfbCkpIDw+IDBcblxuICBsZXQgcmVzZXQgdCA9XG4gICAgbGV0ICgpID1cbiAgICAgIFRvb2xzLml0ZXJpXG4gICAgICAgIChmdW4gaSAtPiBNb2RzLkR5bkFycmF5LnNldCB0LnRlc3RzIChNb2RzLkR5bkFycmF5LmdldCB0LmJhZyBpKSAwKVxuICAgICAgICB0LmxpbWl0XG4gICAgaW5cbiAgICB0LmxpbWl0IDwtIDBcblxuICBsZXQgaXRlcmlfcmVzZXQgZiB0ID1cbiAgICBsZXQgKCkgPVxuICAgICAgVG9vbHMuaXRlcmlcbiAgICAgICAgKGZ1biBrIC0+XG4gICAgICAgICAgbGV0IGkgPSBNb2RzLkR5bkFycmF5LmdldCB0LmJhZyBrIGluXG4gICAgICAgICAgbGV0IHYgPSBNb2RzLkR5bkFycmF5LmdldCB0LnRlc3RzIGkgaW5cbiAgICAgICAgICBpZiB2IDw+IDAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgYWNjID0gaW50X2wgKiBpIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBUb29scy5pdGVyaVxuICAgICAgICAgICAgICAgIChmdW4gaiAtPiBpZiB2IGxhbmQgKDEgbHNsIGopIDw+IDAgdGhlbiBmIChhY2MgKyBqKSlcbiAgICAgICAgICAgICAgICBpbnRfbFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIE1vZHMuRHluQXJyYXkuc2V0IHQudGVzdHMgaSAwXG4gICAgICAgICAgKSlcbiAgICAgICAgdC5saW1pdFxuICAgIGluXG4gICAgdC5saW1pdCA8LSAwXG5lbmRcblxubGV0IGdsdWVfY29ubmVjdGVkX2NvbXBvbmVudCBsaW5rcyBjYWNoZSBjY3Mgbm9kZTEgbm9kZTIgPVxuICBsZXQgY2NfaWRfb3AgPSBNb2RzLkR5bkFycmF5LmdldCBjY3Mgbm9kZTIgaW5cbiAgbGV0IHJlYyBleHBsb3JlX3NpdGUgaWQgc2l0ZSBuZXh0ID1cbiAgICBpZiBzaXRlID0gMCB0aGVuXG4gICAgICBuZXh0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpLihwcmVkIHNpdGUpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBleHBsb3JlX3NpdGUgaWQgKHByZWQgc2l0ZSkgbmV4dFxuICAgICAgfCBTb21lICgoaWQnLCBfKSwgXykgLT5cbiAgICAgICAgaWYgTW9kcy5EeW5BcnJheS5nZXQgY2NzIGlkJyA9IGNjX2lkX29wIHx8IENhY2hlLnRlc3QgY2FjaGUgaWQnIHRoZW5cbiAgICAgICAgICBleHBsb3JlX3NpdGUgaWQgKHByZWQgc2l0ZSkgbmV4dFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBDYWNoZS5tYXJrIGNhY2hlIGlkJyBpblxuICAgICAgICAgIGV4cGxvcmVfc2l0ZSBpZCAocHJlZCBzaXRlKSAoaWQnIDo6IG5leHQpXG4gICAgICAgIClcbiAgICApXG4gIGluXG4gIGxldCByZWMgaXNfaW5fY2MgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBpZCA6OiB0b2RvcyAtPlxuICAgICAgaXNfaW5fY2NcbiAgICAgICAgKGV4cGxvcmVfc2l0ZSBpZCAoQXJyYXkubGVuZ3RoIChNb2RzLkR5bkFycmF5LmdldCBsaW5rcyBpZCkpIG5leHQpXG4gICAgICAgIHRvZG9zXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIG5leHQgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBDYWNoZS5pdGVyaV9yZXNldCAoZnVuIGkgLT4gTW9kcy5EeW5BcnJheS5zZXQgY2NzIGkgY2NfaWRfb3ApIGNhY2hlXG4gICAgICB8IF8gLT4gaXNfaW5fY2MgW10gbmV4dClcbiAgaW5cbiAgbGV0ICgpID0gQ2FjaGUubWFyayBjYWNoZSBub2RlMSBpblxuICBpc19pbl9jYyBbXSBbIG5vZGUxIF1cblxubGV0IHNlcGFyYXRlX2Nvbm5lY3RlZF9jb21wb25lbnQgbGlua3MgKGNhY2hlMSwgY2FjaGUyKSBjY3Mgbm9kZTEgbm9kZTIgPVxuICBsZXQgb2xkX2NjX2lkID0gT3B0aW9uX3V0aWwudW5zb21lICgtMSkgKE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBub2RlMSkgaW5cbiAgbGV0IHJlYyBpbnNwZWN0X3NpdGUgY2FjaGUgP2RzdF9jYWNoZSBpZCBzaXRlIG5leHQgPVxuICAgIGlmIHNpdGUgPSAwIHRoZW5cbiAgICAgIFNvbWUgbmV4dFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggKE1vZHMuRHluQXJyYXkuZ2V0IGxpbmtzIGlkKS4ocHJlZCBzaXRlKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW5zcGVjdF9zaXRlIGNhY2hlID9kc3RfY2FjaGUgaWQgKHByZWQgc2l0ZSkgbmV4dFxuICAgICAgfCBTb21lICgoaWQnLCBfKSwgXykgLT5cbiAgICAgICAgaWZcbiAgICAgICAgICBtYXRjaCBkc3RfY2FjaGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgIHwgU29tZSBkYyAtPiBDYWNoZS50ZXN0IGRjIGlkJ1xuICAgICAgICB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlIGlmIENhY2hlLnRlc3QgY2FjaGUgaWQnIHRoZW5cbiAgICAgICAgICBpbnNwZWN0X3NpdGUgY2FjaGUgP2RzdF9jYWNoZSBpZCAocHJlZCBzaXRlKSBuZXh0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IENhY2hlLm1hcmsgY2FjaGUgaWQnIGluXG4gICAgICAgICAgaW5zcGVjdF9zaXRlIGNhY2hlID9kc3RfY2FjaGUgaWQgKHByZWQgc2l0ZSkgKGlkJyA6OiBuZXh0KVxuICAgICAgICApXG4gICAgKVxuICBpblxuICBsZXQgcmVjIG1hcmtfbmV3X2NjIG9yaWcgY2FjaGUgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBpZCA6OiB0b2RvcyAtPlxuICAgICAgKG1hdGNoXG4gICAgICAgICBpbnNwZWN0X3NpdGUgY2FjaGUgaWQgKEFycmF5Lmxlbmd0aCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpKSBuZXh0XG4gICAgICAgd2l0aFxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBTb21lIG5leHQnIC0+IG1hcmtfbmV3X2NjIG9yaWcgY2FjaGUgbmV4dCcgdG9kb3MpXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIG5leHQgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIENhY2hlLml0ZXJpX3Jlc2V0IChmdW4gaSAtPiBNb2RzLkR5bkFycmF5LnNldCBjY3MgaSAoU29tZSBvcmlnKSkgY2FjaGVcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAob2xkX2NjX2lkLCBvcmlnKVxuICAgICAgfCBfIC0+IG1hcmtfbmV3X2NjIG9yaWcgY2FjaGUgW10gbmV4dClcbiAgaW5cbiAgbGV0IHJlYyBpbl9zYW1lX2NjIG90aGVyX29yaWcgb3RoZXJfY2FjaGUgb3RoZXJfbmV4dCB0aGlzX29yaWcgdGhpc19jYWNoZVxuICAgICAgdGhpc19uZXh0ID0gZnVuY3Rpb25cbiAgICB8IGlkIDo6IHRvZG9zIC0+XG4gICAgICAobWF0Y2hcbiAgICAgICAgIGluc3BlY3Rfc2l0ZSB0aGlzX2NhY2hlIH5kc3RfY2FjaGU6b3RoZXJfY2FjaGUgaWRcbiAgICAgICAgICAgKEFycmF5Lmxlbmd0aCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpKVxuICAgICAgICAgICB0aGlzX25leHRcbiAgICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgdGhpc19jYWNoZSBpblxuICAgICAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCBvdGhlcl9jYWNoZSBpblxuICAgICAgICBOb25lXG4gICAgICB8IFNvbWUgbmV4dCcgLT5cbiAgICAgICAgaW5fc2FtZV9jYyBvdGhlcl9vcmlnIG90aGVyX2NhY2hlIG90aGVyX25leHQgdGhpc19vcmlnIHRoaXNfY2FjaGUgbmV4dCdcbiAgICAgICAgICB0b2RvcylcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggdGhpc19uZXh0IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgaWYgQ2FjaGUudGVzdCB0aGlzX2NhY2hlIG9sZF9jY19pZCB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCB0aGlzX2NhY2hlIGluXG4gICAgICAgICAgbWFya19uZXdfY2Mgb3RoZXJfb3JpZyBvdGhlcl9jYWNoZSBbXSBvdGhlcl9uZXh0XG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgb3RoZXJfY2FjaGUgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgQ2FjaGUuaXRlcmlfcmVzZXRcbiAgICAgICAgICAgICAgKGZ1biBpIC0+IE1vZHMuRHluQXJyYXkuc2V0IGNjcyBpIChTb21lIHRoaXNfb3JpZykpXG4gICAgICAgICAgICAgIHRoaXNfY2FjaGVcbiAgICAgICAgICBpblxuICAgICAgICAgIFNvbWUgKG9sZF9jY19pZCwgdGhpc19vcmlnKVxuICAgICAgICApXG4gICAgICB8IF8gLT5cbiAgICAgICAgaW5fc2FtZV9jYyB0aGlzX29yaWcgdGhpc19jYWNoZSB0aGlzX25leHQgb3RoZXJfb3JpZyBvdGhlcl9jYWNoZSBbXVxuICAgICAgICAgIG90aGVyX25leHQpXG4gIGluXG4gIGxldCAoKSA9IENhY2hlLm1hcmsgY2FjaGUxIG5vZGUxIGluXG4gIGxldCAoKSA9IENhY2hlLm1hcmsgY2FjaGUyIG5vZGUyIGluXG4gIGluX3NhbWVfY2Mgbm9kZTEgY2FjaGUxIFsgbm9kZTEgXSBub2RlMiBjYWNoZTIgW10gWyBub2RlMiBdXG5cbnR5cGUgdGFibGVzID0ge1xuICBjb25uZWN0OiBFZGdlLnQgb3B0aW9uIGFycmF5IE1vZHMuRHluQXJyYXkudDtcbiAgc3RhdGU6IGludCBvcHRpb24gYXJyYXkgTW9kcy5EeW5BcnJheS50O1xuICBzb3J0OiBpbnQgb3B0aW9uIE1vZHMuRHluQXJyYXkudDtcbiAgY29ubmVjdGVkX2NvbXBvbmVudDogaW50IG9wdGlvbiBNb2RzLkR5bkFycmF5LnQgb3B0aW9uO1xuICBjYWNoZXM6IENhY2hlLnQgKiBDYWNoZS50O1xufVxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgdGFibGVzOiB0YWJsZXMgb3B0aW9uO1xuICBtaXNzaW5nczogTW9kcy5JbnQyU2V0LnQ7XG4gIGZyZWVfaWQ6IGludCAqIGludCBsaXN0O1xufVxuKCoqIChhZ2VudCxzaXRlIC0+IGJpbmRpbmdfc3RhdGU7IG1pc3NpbmdzKTtcbiAgICBhZ2VudCxzaXRlIC0+IGludGVybmFsX3N0YXRlOyBhZ2VudCAtPiBzb3J0OyBmcmVlX2lkXG4gICAgdGhlIGZyZWUgc2l0ZXMgYXJlIG5laXRoZXIgaW4gbWlzc2luZ3Mgbm9yIGluIGxpbmtpbmdfZGVzdGluYXRpb24gKilcblxubGV0IGVtcHR5IH53aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzID1cbiAge1xuICAgIHRhYmxlcyA9XG4gICAgICBTb21lXG4gICAgICAgIHtcbiAgICAgICAgICBjb25uZWN0ID0gTW9kcy5EeW5BcnJheS5tYWtlIDEgW3x8XTtcbiAgICAgICAgICBzdGF0ZSA9IE1vZHMuRHluQXJyYXkubWFrZSAxIFt8fF07XG4gICAgICAgICAgc29ydCA9IE1vZHMuRHluQXJyYXkubWFrZSAxIE5vbmU7XG4gICAgICAgICAgY29ubmVjdGVkX2NvbXBvbmVudCA9XG4gICAgICAgICAgICAoaWYgd2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyB0aGVuXG4gICAgICAgICAgICAgICBTb21lIChNb2RzLkR5bkFycmF5Lm1ha2UgMSBOb25lKVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIE5vbmUpO1xuICAgICAgICAgIGNhY2hlcyA9IENhY2hlLmNyZWF0ZSAoKSwgQ2FjaGUuY3JlYXRlICgpO1xuICAgICAgICB9O1xuICAgIG1pc3NpbmdzID0gTW9kcy5JbnQyU2V0LmVtcHR5O1xuICAgIGZyZWVfaWQgPSAwLCBbXTtcbiAgfVxuXG5sZXQgY29weSBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIHtcbiAgICAgIHRhYmxlcyA9XG4gICAgICAgIFNvbWVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25uZWN0ID0gTW9kcy5EeW5BcnJheS5tYXAgQXJyYXkuY29weSB0YWJsZXMuY29ubmVjdDtcbiAgICAgICAgICAgIHN0YXRlID0gTW9kcy5EeW5BcnJheS5tYXAgQXJyYXkuY29weSB0YWJsZXMuc3RhdGU7XG4gICAgICAgICAgICBzb3J0ID0gTW9kcy5EeW5BcnJheS5jb3B5IHRhYmxlcy5zb3J0O1xuICAgICAgICAgICAgY29ubmVjdGVkX2NvbXBvbmVudCA9XG4gICAgICAgICAgICAgIChtYXRjaCB0YWJsZXMuY29ubmVjdGVkX2NvbXBvbmVudCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSBjY3MgLT4gU29tZSAoTW9kcy5EeW5BcnJheS5jb3B5IGNjcykpO1xuICAgICAgICAgICAgY2FjaGVzID0gQ2FjaGUuY3JlYXRlICgpLCBDYWNoZS5jcmVhdGUgKCk7XG4gICAgICAgICAgfTtcbiAgICAgIGZyZWVfaWQgPSBncmFwaC5mcmVlX2lkO1xuICAgICAgbWlzc2luZ3MgPSBncmFwaC5taXNzaW5ncztcbiAgICB9XG5cbnR5cGUgc3RhdHMgPSB7IG5iX2FnZW50czogaW50IH1cblxubGV0IHN0YXRzIGdyYXBoID1cbiAgbGV0IHRvcF9pZCwgZnJlZV9pZHMgPSBncmFwaC5mcmVlX2lkIGluXG4gIHsgbmJfYWdlbnRzID0gdG9wX2lkIC0gTGlzdC5sZW5ndGggZnJlZV9pZHMgfVxuXG5sZXQgYWRkX2FnZW50ID9pZCBzaWdzIHR5IGdyYXBoID1cbiAgbGV0IGFyID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgdHkgaW5cbiAgbGV0IGFsID0gQXJyYXkubWFrZSBhciBOb25lIGluXG4gIGxldCBhaSA9IEFycmF5Lm1ha2UgYXIgTm9uZSBpblxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCBoLCBmcmVlX2lkID1cbiAgICAgIG1hdGNoIGlkIHdpdGhcbiAgICAgIHwgU29tZSBpZCAtPlxuICAgICAgICAoIGlkLFxuICAgICAgICAgIGxldCBuZXdfaWQsIGwgPSBncmFwaC5mcmVlX2lkIGluXG4gICAgICAgICAgaWYgaWQgPCBuZXdfaWQgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaCBMaXN0LnBhcnRpdGlvbiAoZnVuIGkgLT4gaSA9IGlkKSBsIHdpdGhcbiAgICAgICAgICAgIHwgWyBfIF0sIHQgLT4gbmV3X2lkLCB0XG4gICAgICAgICAgICB8IF8sIF8gLT5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgICAgICAgIChcIlRyeSB0byBhZGQgYW4gYWdlbnQgd2l0aCBhIHRoZSBmcmVlIGlkIFwiXG4gICAgICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pbnQgaWQpKSlcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICggc3VjYyBpZCxcbiAgICAgICAgICAgICAgVG9vbHMucmVjdGkgKGZ1biBhY2MgayAtPiAoayArIG5ld19pZCkgOjogYWNjKSBsIChpZCAtIG5ld19pZCkgKSApXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIGdyYXBoLmZyZWVfaWQgd2l0aFxuICAgICAgICB8IG5ld19pZCwgaCA6OiB0IC0+IGgsIChuZXdfaWQsIHQpXG4gICAgICAgIHwgbmV3X2lkLCBbXSAtPiBuZXdfaWQsIChzdWNjIG5ld19pZCwgW10pKVxuICAgIGluXG4gICAgbGV0IG1pc3NpbmdzJyA9XG4gICAgICBUb29scy5yZWN0aSAoZnVuIGEgcyAtPiBNb2RzLkludDJTZXQuYWRkIChoLCBzKSBhKSBncmFwaC5taXNzaW5ncyBhclxuICAgIGluXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgdGFibGVzLmNvbm5lY3QgaCBhbCBpblxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHRhYmxlcy5zdGF0ZSBoIGFpIGluXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgdGFibGVzLnNvcnQgaCAoU29tZSB0eSkgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgY2NzIC0+IE1vZHMuRHluQXJyYXkuc2V0IGNjcyBoIChTb21lIGgpXG4gICAgaW5cbiAgICBoLCB7IHRhYmxlcyA9IFNvbWUgdGFibGVzOyBtaXNzaW5ncyA9IG1pc3NpbmdzJzsgZnJlZV9pZCB9XG5cbmxldCBhZGRfZnJlZSBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgKCkgPSAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcpLihzKSA8LSBOb25lIGluXG4gICAge1xuICAgICAgdGFibGVzID0gU29tZSB0YWJsZXM7XG4gICAgICBtaXNzaW5ncyA9IE1vZHMuSW50MlNldC5yZW1vdmUgKGFnLCBzKSBncmFwaC5taXNzaW5ncztcbiAgICAgIGZyZWVfaWQgPSBncmFwaC5mcmVlX2lkO1xuICAgIH1cblxubGV0IGFkZF9pbnRlcm5hbCBhZyBzIGkgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc3RhdGUgYWcpLihzKSA8LSBTb21lIGkgaW5cbiAgICB7IHRhYmxlcyA9IFNvbWUgdGFibGVzOyBtaXNzaW5ncyA9IGdyYXBoLm1pc3NpbmdzOyBmcmVlX2lkID0gZ3JhcGguZnJlZV9pZCB9XG5cbmxldCBhZGRfbGluayAoYWcsIHR5KSBzIChhZycsIHR5JykgcycgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9XG4gICAgICAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcpLihzKSA8LSBTb21lICgoYWcnLCB0eScpLCBzJylcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcnKS4ocycpIDwtIFNvbWUgKChhZywgdHkpLCBzKVxuICAgIGluXG4gICAgbGV0IG91dCA9XG4gICAgICBtYXRjaCB0YWJsZXMuY29ubmVjdGVkX2NvbXBvbmVudCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGNjcyAtPlxuICAgICAgICBsZXQgaSA9IE9wdGlvbl91dGlsLnVuc29tZSAoLTEpIChNb2RzLkR5bkFycmF5LmdldCBjY3MgYWcpIGluXG4gICAgICAgIGxldCBqID0gT3B0aW9uX3V0aWwudW5zb21lICgtMikgKE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBhZycpIGluXG4gICAgICAgIGlmIGkgPSBqIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBnbHVlX2Nvbm5lY3RlZF9jb21wb25lbnQgdGFibGVzLmNvbm5lY3QgKGZzdCB0YWJsZXMuY2FjaGVzKSBjY3MgYWdcbiAgICAgICAgICAgICAgYWcnXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTb21lIChqLCBpKVxuICAgICAgICApXG4gICAgaW5cbiAgICAoIHtcbiAgICAgICAgdGFibGVzID0gU29tZSB0YWJsZXM7XG4gICAgICAgIG1pc3NpbmdzID1cbiAgICAgICAgICBNb2RzLkludDJTZXQucmVtb3ZlIChhZywgcylcbiAgICAgICAgICAgIChNb2RzLkludDJTZXQucmVtb3ZlIChhZycsIHMnKSBncmFwaC5taXNzaW5ncyk7XG4gICAgICAgIGZyZWVfaWQgPSBncmFwaC5mcmVlX2lkO1xuICAgICAgfSxcbiAgICAgIG91dCApXG5cbmxldCByZW1vdmVfYWdlbnQgYWcgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHRhYmxlcy5jb25uZWN0IGFnIFt8fF0gaW5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCB0YWJsZXMuc3RhdGUgYWcgW3x8XSBpblxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHRhYmxlcy5zb3J0IGFnIE5vbmUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgY2NzIC0+IE1vZHMuRHluQXJyYXkuc2V0IGNjcyBhZyBOb25lXG4gICAgaW5cbiAgICB7XG4gICAgICB0YWJsZXMgPSBTb21lIHRhYmxlcztcbiAgICAgIG1pc3NpbmdzID0gTW9kcy5JbnQyU2V0LmZpbHRlciAoZnVuIChhZycsIF8pIC0+IGFnIDw+IGFnJykgZ3JhcGgubWlzc2luZ3M7XG4gICAgICBmcmVlX2lkID1cbiAgICAgICAgKGxldCBuZXdfaWQsIGlkcyA9IGdyYXBoLmZyZWVfaWQgaW5cbiAgICAgICAgIG5ld19pZCwgYWcgOjogaWRzKTtcbiAgICB9XG5cbmxldCByZW1vdmVfZnJlZSBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgKCkgPSBhc3NlcnQgKChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZykuKHMpID0gTm9uZSkgaW5cbiAgICB7XG4gICAgICB0YWJsZXMgPSBTb21lIHRhYmxlcztcbiAgICAgIG1pc3NpbmdzID0gTW9kcy5JbnQyU2V0LmFkZCAoYWcsIHMpIGdyYXBoLm1pc3NpbmdzO1xuICAgICAgZnJlZV9pZCA9IGdyYXBoLmZyZWVfaWQ7XG4gICAgfVxuXG5sZXQgZ2V0X2ludGVybmFsIGFnIHMgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICAobWF0Y2ggKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zdGF0ZSBhZykuKHMpIHdpdGhcbiAgICB8IFNvbWUgaSAtPiBpXG4gICAgfCBOb25lIC0+XG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoXCJTaXRlIFwiIF4gc3RyaW5nX29mX2ludCBzIF4gXCIgb2YgYWdlbnQgXCIgXiBzdHJpbmdfb2ZfaW50IGFnXG4gICAgICAgXiBcIiBoYXMgbm8gaW50ZXJuYWwgc3RhdGUgaW4gdGhlIGN1cnJlbnQgZ3JhcGguXCIpKVxuXG5sZXQgZ2V0X3NpdGVzIGFnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0IGFyciA9IE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zdGF0ZSBhZyBpblxuICAgIEFycmF5Lmxlbmd0aCBhcnJcblxubGV0IGdldF9zb3J0IGFnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgKG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zb3J0IGFnIHdpdGhcbiAgICB8IFNvbWUgdHkgLT4gdHlcbiAgICB8IE5vbmUgLT5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIChcIkFnZW50IFwiIF4gc3RyaW5nX29mX2ludCBhZyBeIFwiIGhhcyBubyB0eXBlIGluIHRoZSBjdXJyZW50IGdyYXBoLlwiKSlcblxubGV0IHJlbW92ZV9pbnRlcm5hbCBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgaSA9IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc3RhdGUgYWcpLihzKSBpblxuICAgIGxldCAoKSA9IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc3RhdGUgYWcpLihzKSA8LSBOb25lIGluXG4gICAgKG1hdGNoIGkgd2l0aFxuICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFNvbWUgaSAtPlxuICAgICAgKCBpLFxuICAgICAgICB7XG4gICAgICAgICAgdGFibGVzID0gU29tZSB0YWJsZXM7XG4gICAgICAgICAgbWlzc2luZ3MgPSBncmFwaC5taXNzaW5ncztcbiAgICAgICAgICBmcmVlX2lkID0gZ3JhcGguZnJlZV9pZDtcbiAgICAgICAgfSApKVxuXG5sZXQgcmVtb3ZlX2xpbmsgYWcgcyBhZycgcycgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZykuKHMpIDwtIE5vbmUgaW5cbiAgICBsZXQgKCkgPSAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcnKS4ocycpIDwtIE5vbmUgaW5cbiAgICBsZXQgb3V0ID1cbiAgICAgIG1hdGNoIHRhYmxlcy5jb25uZWN0ZWRfY29tcG9uZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgY2NzIC0+XG4gICAgICAgIHNlcGFyYXRlX2Nvbm5lY3RlZF9jb21wb25lbnQgdGFibGVzLmNvbm5lY3QgdGFibGVzLmNhY2hlcyBjY3MgYWcgYWcnXG4gICAgaW5cbiAgICAoIHtcbiAgICAgICAgdGFibGVzID0gU29tZSB0YWJsZXM7XG4gICAgICAgIG1pc3NpbmdzID1cbiAgICAgICAgICBNb2RzLkludDJTZXQuYWRkIChhZywgcykgKE1vZHMuSW50MlNldC5hZGQgKGFnJywgcycpIGdyYXBoLm1pc3NpbmdzKTtcbiAgICAgICAgZnJlZV9pZCA9IGdyYXBoLmZyZWVfaWQ7XG4gICAgICB9LFxuICAgICAgb3V0IClcblxubGV0IGlzX2FnZW50IChhZywgdHkpIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludDJTZXQuaXNfZW1wdHkgZ3JhcGgubWlzc2luZ3MpIGluXG4gICAgKG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zb3J0IGFnIHdpdGhcbiAgICB8IFNvbWUgdHknIC0+XG4gICAgICBsZXQgKCkgPSBhc3NlcnQgKHR5ID0gdHknKSBpblxuICAgICAgdHJ1ZVxuICAgIHwgTm9uZSAtPiBmYWxzZSlcblxubGV0IGlzX2FnZW50X2lkIGFnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludDJTZXQuaXNfZW1wdHkgZ3JhcGgubWlzc2luZ3MpIGluXG4gICAgTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnNvcnQgYWcgPD4gTm9uZVxuXG5sZXQgaXNfZnJlZSBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludDJTZXQuaXNfZW1wdHkgZ3JhcGgubWlzc2luZ3MpIGluXG4gICAgbGV0IHQgPSBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZyBpblxuICAgIHQgPD4gW3x8XSAmJiB0LihzKSA9IE5vbmVcblxubGV0IGlzX2ludGVybmFsIGkgYWcgcyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGFzc2VydCAoTW9kcy5JbnQyU2V0LmlzX2VtcHR5IGdyYXBoLm1pc3NpbmdzKSBpblxuICAgIGxldCB0ID0gTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnN0YXRlIGFnIGluXG4gICAgdCA8PiBbfHxdXG4gICAgJiZcbiAgICAobWF0Y2ggdC4ocykgd2l0aFxuICAgIHwgU29tZSBqIC0+IGogPSBpXG4gICAgfCBOb25lIC0+IGZhbHNlKVxuXG5sZXQgbGlua19leGlzdHMgYWcgcyBhZycgcycgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBhc3NlcnQgKE1vZHMuSW50MlNldC5pc19lbXB0eSBncmFwaC5taXNzaW5ncykgaW5cbiAgICBsZXQgdCA9IE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnIGluXG4gICAgdCA8PiBbfHxdXG4gICAgJiZcbiAgICAobWF0Y2ggdC4ocykgd2l0aFxuICAgIHwgU29tZSAoKGFnJycsIF8pLCBzJycpIC0+IGFnJyA9IGFnJycgJiYgcycgPSBzJydcbiAgICB8IE5vbmUgLT4gZmFsc2UpXG5cbmxldCBleGlzdHNfZnJlc2ggYWcgcyB0eSBzJyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGFzc2VydCAoTW9kcy5JbnQyU2V0LmlzX2VtcHR5IGdyYXBoLm1pc3NpbmdzKSBpblxuICAgIGxldCB0ID0gTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcgaW5cbiAgICBpZiB0ID0gW3x8XSB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCB0LihzKSB3aXRoXG4gICAgICB8IFNvbWUgKChhZycsIHR5JyksIHMnJykgLT5cbiAgICAgICAgaWYgdHknID0gdHkgJiYgcycgPSBzJycgdGhlblxuICAgICAgICAgIFNvbWUgYWcnXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgIClcblxubGV0IGxpbmtfZGVzdGluYXRpb24gYWcgcyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPiAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcpLihzKVxuXG5sZXQgaXRlcl9uZWlnaGJvcnMgZiBhZyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCBhZ190YWJsZSA9IE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnIGluXG4gICAgQXJyYXkuaXRlclxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgcyAtPiBmIChmc3QgcykpXG4gICAgICBhZ190YWJsZVxuXG5sZXQgYWxsX2FnZW50c193aGVyZSBmIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0IG91dCA9IEludENvbGxlY3Rpb24uY3JlYXRlIDAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kcy5EeW5BcnJheS5pdGVyaVxuICAgICAgICAoZnVuIGlkIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBTb21lIHR5IHdoZW4gZiAoaWQsIHR5KSAtPiBJbnRDb2xsZWN0aW9uLmFkZCBpZCBvdXRcbiAgICAgICAgICB8IF8gLT4gKCkpXG4gICAgICAgIHRhYmxlcy5zb3J0XG4gICAgaW5cbiAgICBvdXRcblxubGV0IGluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudCBhZyBhZycgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICAobWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgIFwiaW5fc2FtZV9jb25uZWN0ZWRfY29tcG9uZW50IHdoaWxlIG5vdCB0cmFja2luZyBjY3NcIikpXG4gICAgfCBTb21lIGNjcyAtPiBNb2RzLkR5bkFycmF5LmdldCBjY3MgYWcgPSBNb2RzLkR5bkFycmF5LmdldCBjY3MgYWcnKVxuXG5sZXQgZ2V0X2Nvbm5lY3RlZF9jb21wb25lbnQgYWcgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICAobWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgIFwiZ2V0X2Nvbm5lY3RlZF9jb21wb25lbnQgd2hpbGUgbm90IHRyYWNraW5nIGNjc1wiKSlcbiAgICB8IFNvbWUgY2NzIC0+IE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBhZylcblxuKCoqIFRoZSBzbmFwc2hvdCBtYWNoaW5lcnkgKilcbmxldCBvbmVfY29ubmVjdGVkX2NvbXBvbmVudCAoc2lncyA6IFNpZ25hdHVyZS5zKSAodHkgOiBpbnQpIChub2RlIDogaW50KVxuICAgIChncmFwaCA6IHRhYmxlcykgOiBTbmFwc2hvdC5jY19ub2RlIGFycmF5ID1cbiAgbGV0IHJlYyBidWlsZCAoaWQgOiBpbnQpXG4gICAgICAoYWNjIDogKGludCAqIGludCAqIChFZGdlLnQgb3B0aW9uICogaW50IG9wdGlvbikgbGlzdCkgbGlzdClcbiAgICAgIChrbm93biA6IGludCBNb2RzLkludE1hcC50KSA6IChpbnQgKiBpbnQpIGxpc3QgLT4gU25hcHNob3QuY2Nfbm9kZSBhcnJheSA9XG4gICAgZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBUb29scy5hcnJheV9yZXZfbWFwX29mX2xpc3RcbiAgICAgICAgKGZ1biAobm9kZV9pZF9pbl93aXRuZXNzLCBub2RlX3R5cGUsIHNpdGVzKSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFNuYXBzaG90Lm5vZGVfaWRfaW5fd2l0bmVzcztcbiAgICAgICAgICAgIFNuYXBzaG90Lm5vZGVfdHlwZTtcbiAgICAgICAgICAgIFNuYXBzaG90Lm5vZGVfc2l0ZXMgPVxuICAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGxpbmssIHNpdGVfc3RhdGUpIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFNuYXBzaG90LnNpdGVfbGluayA9XG4gICAgICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuICgobiwgXyksIHMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCAoLTEpIG4ga25vd24sIHMpXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rO1xuICAgICAgICAgICAgICAgICAgICBTbmFwc2hvdC5zaXRlX3N0YXRlO1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBzaXRlcztcbiAgICAgICAgICB9KVxuICAgICAgICBhY2NcbiAgICB8IChub2RlLCB0eSkgOjogdG9kb3MgLT5cbiAgICAgIGlmIENhY2hlLnRlc3QgKGZzdCBncmFwaC5jYWNoZXMpIG5vZGUgdGhlblxuICAgICAgICBidWlsZCBpZCBhY2Mga25vd24gdG9kb3NcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBNb2RzLkR5bkFycmF5LmdldCBncmFwaC5zb3J0IG5vZGUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJFZGdlcy5vbmVfY29ubmVjdGVkX2NvbXBvbmVudFwiXG4gICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgbGV0ICgpID0gQ2FjaGUubWFyayAoZnN0IGdyYXBoLmNhY2hlcykgbm9kZSBpblxuICAgICAgICAgIGxldCBrbm93bicgPSBNb2RzLkludE1hcC5hZGQgbm9kZSBpZCBrbm93biBpblxuICAgICAgICAgIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIHR5IGluXG4gICAgICAgICAgbGV0IHRvZG9zJywgcG9ydHMgPVxuICAgICAgICAgICAgVG9vbHMucmVjdGlcbiAgICAgICAgICAgICAgKGZ1biAodG9kb3MsIGFjYykgaSAtPlxuICAgICAgICAgICAgICAgIGxldCBsaW5rID0gKE1vZHMuRHluQXJyYXkuZ2V0IGdyYXBoLmNvbm5lY3Qgbm9kZSkuKGkpIGluXG4gICAgICAgICAgICAgICAgKCAobWF0Y2ggbGluayB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gdG9kb3NcbiAgICAgICAgICAgICAgICAgIHwgU29tZSAoKChuJywgXykgYXMgcCksIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIE1vZHMuSW50TWFwLm1lbSBuJyBrbm93bicgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIHRvZG9zXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBwIDo6IHRvZG9zKSxcbiAgICAgICAgICAgICAgICAgIChsaW5rLCAoTW9kcy5EeW5BcnJheS5nZXQgZ3JhcGguc3RhdGUgbm9kZSkuKGkpKSA6OiBhY2MgKSlcbiAgICAgICAgICAgICAgKHRvZG9zLCBbXSkgYXJpdHlcbiAgICAgICAgICBpblxuICAgICAgICAgIGJ1aWxkIChzdWNjIGlkKSAoKG5vZGUsIHR5LCBwb3J0cykgOjogYWNjKSBrbm93bicgdG9kb3MnXG4gICAgICApXG4gIGluXG4gIGJ1aWxkIDAgW10gTW9kcy5JbnRNYXAuZW1wdHkgWyBub2RlLCB0eSBdXG5cbmxldCBzcGVjaWVzIH5kZWJ1Z19tb2RlIHNpZ3Mgcm9vdCBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCBzcGVjaWUgPVxuICAgICAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnNvcnQgcm9vdCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgIChcIlNvcnQgb2Ygbm9kZSB1bmF2YWlsYWJsZSBcIiBeIHN0cmluZ19vZl9pbnQgcm9vdCkpKVxuICAgICAgfCBTb21lIHR5IC0+XG4gICAgICAgIFNuYXBzaG90LmNjX3RvX3VzZXJfY2MgfmRlYnVnX21vZGUgfnJhdzp0cnVlIHNpZ3NcbiAgICAgICAgICAob25lX2Nvbm5lY3RlZF9jb21wb25lbnQgc2lncyB0eSByb290IHRhYmxlcylcbiAgICBpblxuICAgIGxldCAoKSA9IENhY2hlLnJlc2V0IChmc3QgdGFibGVzLmNhY2hlcykgaW5cbiAgICBzcGVjaWVcblxubGV0IHJlYyBhdXhfYnVpbGRfc25hcHNob3QgKHJhdyA6IGJvb2wpIChzaWdzIDogU2lnbmF0dXJlLnMpICh0YWJsZXMgOiB0YWJsZXMpXG4gICAgKGNjcyA6IFNuYXBzaG90LnQpIChub2RlIDogaW50KSA6IFNuYXBzaG90LnQgPVxuICBpZiBub2RlID0gTW9kcy5EeW5BcnJheS5sZW5ndGggdGFibGVzLnNvcnQgdGhlbiAoXG4gICAgKCogV2Ugd2VudCB0aHJvdWdoIGFsbCBub2Rlcywgd2UgcmV0dXJuIHRoZSBmdWxsIHNuYXBzaG90ICopXG4gICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgKGZzdCB0YWJsZXMuY2FjaGVzKSBpblxuICAgIGNjc1xuICApIGVsc2UgaWYgQ2FjaGUudGVzdCAoZnN0IHRhYmxlcy5jYWNoZXMpIG5vZGUgdGhlblxuICAgICgqIEFscmVhZHkgaW4gY2FjaGUsIHdlIGNvbnRpbnVlIHRvIHRoZSBuZXh0IG5vZGUgKilcbiAgICBhdXhfYnVpbGRfc25hcHNob3QgcmF3IHNpZ3MgdGFibGVzIGNjcyAoc3VjYyBub2RlKVxuICBlbHNlIChcbiAgICBtYXRjaCBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc29ydCBub2RlIHdpdGhcbiAgICB8IE5vbmUgLT4gYXV4X2J1aWxkX3NuYXBzaG90IHJhdyBzaWdzIHRhYmxlcyBjY3MgKHN1Y2Mgbm9kZSlcbiAgICB8IFNvbWUgKHR5IDogaW50KSAtPlxuICAgICAgbGV0IG91dCA9IG9uZV9jb25uZWN0ZWRfY29tcG9uZW50IHNpZ3MgdHkgbm9kZSB0YWJsZXMgaW5cbiAgICAgIGF1eF9idWlsZF9zbmFwc2hvdCByYXcgc2lncyB0YWJsZXNcbiAgICAgICAgKFNuYXBzaG90LmluY3JlbWVudF9pbl9zbmFwc2hvdCB+cmF3IHNpZ3Mgb3V0IGNjcylcbiAgICAgICAgKHN1Y2Mgbm9kZSlcbiAgKVxuXG5sZXQgYnVpbGRfc25hcHNob3QgfihyYXcgOiBib29sKSAoc2lncyA6IFNpZ25hdHVyZS5zKSAoZ3JhcGggOiB0KSA6IFNuYXBzaG90LnQgPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT4gYXV4X2J1aWxkX3NuYXBzaG90IHJhdyBzaWdzIHRhYmxlcyBTbmFwc2hvdC5lbXB0eSAwXG5cbmxldCBidWlsZF91c2VyX3NuYXBzaG90IH4oZGVidWdfbW9kZSA6IGJvb2wpIH4ocmF3IDogYm9vbCkgKHNpZ3MgOiBTaWduYXR1cmUucylcbiAgICAoZ3JhcGggOiB0KSA6IChpbnQgKiBVc2VyX2dyYXBoLmNvbm5lY3RlZF9jb21wb25lbnQpIGxpc3QgPVxuICBTbmFwc2hvdC5leHBvcnQgfmRlYnVnX21vZGUgfnJhdyBzaWdzIChidWlsZF9zbmFwc2hvdCB+cmF3IHNpZ3MgZ3JhcGgpXG5cbmxldCBkZWJ1Z19wcmludCBmIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJPVVREQVRFREAgXCJcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCBwcmludF9zaXRlcyBhZyA9XG4gICAgICBQcC5hcnJheSBQcC5jb21tYSAoZnVuIHMgZiBsIC0+XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVpJXQldFwiIHNcbiAgICAgICAgICAgIChtYXRjaCAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnN0YXRlIGFnKS4ocykgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGludCAtPiBmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwifiVpXCIgaW50XG4gICAgICAgICAgICB8IE5vbmUgLT4gZnVuIF8gLT4gKCkpXG4gICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIGlmIE1vZHMuSW50MlNldC5tZW0gKGFnLCBzKSBncmFwaC5taXNzaW5ncyB0aGVuXG4gICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCI/XCJcbiAgICAgICAgICAgICAgfCBTb21lICgoYWcnLCB0eScpLCBzJykgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLT4laTolaS4laVwiIGFnJyB0eScgcycpKVxuICAgIGluXG4gICAgTW9kcy5EeW5BcnJheS5wcmludCBQcC5lbXB0eVxuICAgICAgKGZ1biBhZyBmIGEgLT5cbiAgICAgICAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnNvcnQgYWcgd2l0aFxuICAgICAgICB8IFNvbWUgdHkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVpOiVpKEBbJWFAXSlAIFwiIGFnIHR5IChwcmludF9zaXRlcyBhZykgYVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBhID0gW3x8XSB0aGVuXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlaTpOT1RZUEUoQFslYUBdKUAgXCIgYWcgKHByaW50X3NpdGVzIGFnKSBhKVxuICAgICAgZiB0YWJsZXMuY29ubmVjdFxuXG50eXBlIHBhdGggPSAoKEFnZW50LnQgKiBpbnQpICogKEFnZW50LnQgKiBpbnQpKSBsaXN0XG4oKiogKChhZ2VudF9pZCwgYWdlbnRfbmFtZSksc2l0ZV9uYW1lKSAqKVxuXG5sZXQgcmVjIHByaW50X3BhdGggP3NpZ3MgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gUHAuZW1wdHlfc2V0IGZcbiAgfCBbICgoYWcsIHMpLCAoYWcnLCBzJykpIF0gLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWFALC0lYS4lYVwiXG4gICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFnXG4gICAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBhZylcbiAgICAgIHNcbiAgICAgIChBZ2VudC5wcmludF9zaXRlID9zaWdzIGFnJylcbiAgICAgIHMnXG4gICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFnJ1xuICB8ICgoYWcsIHMpLCAoKChwJywgXykgYXMgYWcnKSwgcycpKSA6OiAoKCgocCcnLCBfKSwgXyksIF8pIDo6IF8gYXMgbCkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWFALC0lYS4ldCVhXCJcbiAgICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKVxuICAgICAgYWdcbiAgICAgIChBZ2VudC5wcmludF9zaXRlID9zaWdzIGFnKVxuICAgICAgc1xuICAgICAgKEFnZW50LnByaW50X3NpdGUgP3NpZ3MgYWcnKVxuICAgICAgcydcbiAgICAgIChmdW4gZiAtPlxuICAgICAgICBpZiBwJyA8PiBwJycgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSMjXCIgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpIGFnJylcbiAgICAgIChwcmludF9wYXRoID9zaWdzKSBsXG5cbmxldCBlbXB0eV9wYXRoID0gW11cbmxldCBzaW5nbGV0b25fcGF0aCBuIHMgbicgcycgPSBbIChuLCBzKSwgKG4nLCBzJykgXVxubGV0IHJldl9wYXRoIGwgPSBMaXN0LnJldl9tYXAgKGZ1biAoeCwgeSkgLT4geSwgeCkgbFxuXG5sZXQgaXNfdmFsaWRfcGF0aCBwIGdyYXBoID1cbiAgTGlzdC5mb3JfYWxsXG4gICAgKGZ1biAoKChhZywgXyksIHMpLCAoKGFnJywgXyksIHMnKSkgLT4gbGlua19leGlzdHMgYWcgcyBhZycgcycgZ3JhcGgpXG4gICAgcFxuXG5sZXQgYnJlYWR0aF9maXJzdF90cmF2ZXJzYWwgfmxvb3BpbmcgP21heF9kaXN0YW5jZSBzdG9wX29uX2ZpbmQgaXNfaW50ZXJlc3RpbmdcbiAgICBsaW5rcyBjYWNoZSBvdXQgdG9kb3MgPVxuICBsZXQgcmVjIGxvb2tfZWFjaF9zaXRlICgoKChpZCwgXykgYXMgYWcpLCBwYXRoKSBhcyB4KSBzaXRlXG4gICAgICAoKG91dCwgbmV4dCkgYXMgYWNjKSA9XG4gICAgaWYgc2l0ZSA9IDAgdGhlblxuICAgICAgU29tZSAoZmFsc2UsIG91dCwgbmV4dClcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIChNb2RzLkR5bkFycmF5LmdldCBsaW5rcyBpZCkuKHByZWQgc2l0ZSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb2tfZWFjaF9zaXRlIHggKHByZWQgc2l0ZSkgYWNjXG4gICAgICB8IFNvbWUgKCgoKGlkJywgXykgYXMgYWcnKSwgc2l0ZScpIGFzIHkpIC0+XG4gICAgICAgIGlmIGFnJyA9IGZzdCBsb29waW5nICYmIHNpdGUnIDw+IHNuZCBsb29waW5nIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2UgaWYgQ2FjaGUudGVzdCBjYWNoZSBpZCcgdGhlblxuICAgICAgICAgIGxvb2tfZWFjaF9zaXRlIHggKHByZWQgc2l0ZSkgYWNjXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IENhY2hlLm1hcmsgY2FjaGUgaWQnIGluXG4gICAgICAgICAgbGV0IHBhdGgnID0gKHksIChhZywgcHJlZCBzaXRlKSkgOjogcGF0aCBpblxuICAgICAgICAgIGxldCBuZXh0JyA9IChhZycsIHBhdGgnKSA6OiBuZXh0IGluXG4gICAgICAgICAgbGV0IG91dCcsIHN0b3JlID1cbiAgICAgICAgICAgIG1hdGNoIGlzX2ludGVyZXN0aW5nIGFnJyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiAoKHgsIGlkJyksIHBhdGgnKSA6OiBvdXQsIHRydWVcbiAgICAgICAgICAgIHwgTm9uZSAtPiBvdXQsIGZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBzdG9yZSAmJiBzdG9wX29uX2ZpbmQgdGhlblxuICAgICAgICAgICAgU29tZSAodHJ1ZSwgb3V0JywgbmV4dCcpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbG9va19lYWNoX3NpdGUgeCAocHJlZCBzaXRlKSAob3V0JywgbmV4dCcpXG4gICAgICAgIClcbiAgICApXG4gIGluXG4gICgqIGRlcHRoID0gbnVtYmVyIG9mIGVkZ2VzIGJldHdlZW4gcm9vdCBhbmQgbm9kZSAqKVxuICBsZXQgcmVjIGF1eCBkZXB0aCBvdXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCAoKChpZCwgXyksIF8pIGFzIHgpIDo6IHRvZG9zIC0+XG4gICAgICAobWF0Y2hcbiAgICAgICAgIGxvb2tfZWFjaF9zaXRlIHggKEFycmF5Lmxlbmd0aCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpKSAob3V0LCBuZXh0KVxuICAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIChzdG9wLCBvdXQnLCBuZXh0JykgLT5cbiAgICAgICAgaWYgc3RvcCB0aGVuXG4gICAgICAgICAgb3V0J1xuICAgICAgICBlbHNlXG4gICAgICAgICAgYXV4IGRlcHRoIG91dCcgbmV4dCcgdG9kb3MpXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIG5leHQgd2l0aFxuICAgICAgfCBbXSAtPiBvdXRcbiAgICAgICgqIGVuZCB3aGVuIGFsbCBncmFwaCB0cmF2ZXJzZWQgYW5kIHJldHVybiB0aGUgbGlzdCBvZiBwYXRocyAqKVxuICAgICAgfCBfIC0+XG4gICAgICAgIChtYXRjaCBtYXhfZGlzdGFuY2Ugd2l0aFxuICAgICAgICB8IFNvbWUgZCB3aGVuIGQgPD0gZGVwdGggLT4gb3V0XG4gICAgICAgICgqIHN0b3Agd2hlbiB0aGUgbWF4IGRpc3RhbmNlIGlzIHJlYWNoZWQgKilcbiAgICAgICAgfCBTb21lIF8gLT4gYXV4IChkZXB0aCArIDEpIG91dCBbXSBuZXh0XG4gICAgICAgIHwgTm9uZSAtPiBhdXggZGVwdGggb3V0IFtdIG5leHQpKVxuICBpblxuICBhdXggMSBvdXQgW10gdG9kb3NcblxuKCogbm9kZXNfeDogYWdlbnRfaWQgbGlzdCA9IChpbnQgKiBpbnQpIGxpc3RcbiAgIG5vZGVzX3k6IGFkZW50X2lkIGxpc3QgPSBpbnQgbGlzdCAqKVxubGV0IGFyZV9jb25uZWN0ZWQgP21heF9kaXN0YW5jZSBncmFwaCBub2Rlc194IG5vZGVzX3kgPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBpZlxuICAgICAgaW5fc2FtZV9jb25uZWN0ZWRfY29tcG9uZW50XG4gICAgICAgIChmc3QgKExpc3QuaGQgbm9kZXNfeCkpXG4gICAgICAgIChmc3QgKExpc3QuaGQgbm9kZXNfeSkpXG4gICAgICAgIGdyYXBoXG4gICAgdGhlbiAoXG4gICAgICAoKiBsb29rIGZvciB0aGUgY2xvc2VzdCBub2RlIGluIG5vZGVzX3kgKilcbiAgICAgIGxldCBpc19pbl9ub2Rlc195IHogPVxuICAgICAgICBpZiBMaXN0Lm1lbSB6IG5vZGVzX3kgdGhlblxuICAgICAgICAgIFNvbWUgKClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgICAgIGluXG4gICAgICAoKiBicmVhZHRoIGZpcnN0IHNlYXJjaCBpcyBjYWxsZWQgb24gYSBsaXN0IG9mIHNpdGVzO1xuICAgICAgICAgc3RhcnQgdGhlIGJyZWFkdGggZmlyc3Qgc2VhcmNoIHdpdGggdGhlIGJvdW5kYXJpZXMgb2Ygbm9kZXNfeCxcbiAgICAgICAgIHRoYXQgaXMgYWxsIHNpdGVzIHRoYXQgYXJlIGNvbm5lY3RlZCB0byBvdGhlciBub2RlcyBpbiB4XG4gICAgICAgICBhbmQgd2l0aCBhbGwgbm9kZXMgaW4gbm9kZXNfeCBtYXJrZWQgYXMgZG9uZSAqKVxuICAgICAgbGV0IHByZXBhcmUgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjICgoaWQsIF8pIGFzIGFnKSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gQ2FjaGUubWFyayAoZnN0IHRhYmxlcy5jYWNoZXMpIGlkIGluXG4gICAgICAgICAgICAoYWcsIFtdKSA6OiBhY2MpXG4gICAgICAgICAgW10gbm9kZXNfeFxuICAgICAgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIGJyZWFkdGhfZmlyc3RfdHJhdmVyc2FsXG4gICAgICAgICAgfmxvb3Bpbmc6KCgtMSwgLTEpLCAtMSlcbiAgICAgICAgICA/bWF4X2Rpc3RhbmNlIHRydWUgaXNfaW5fbm9kZXNfeSB0YWJsZXMuY29ubmVjdCAoZnN0IHRhYmxlcy5jYWNoZXMpIFtdXG4gICAgICAgICAgcHJlcGFyZVxuICAgICAgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCAoZnN0IHRhYmxlcy5jYWNoZXMpIGluXG4gICAgICAgIE5vbmVcbiAgICAgIHwgWyAoXywgcCkgXSAtPlxuICAgICAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCAoZnN0IHRhYmxlcy5jYWNoZXMpIGluXG4gICAgICAgIFNvbWUgcFxuICAgICAgfCBfIDo6IF8gLT4gZmFpbHdpdGggXCJFZGdlcy5hcmVfdGhleV9jb25uZWN0ZWQgY29tcGxldGVseSBicm9rZW5cIlxuICAgICkgZWxzZVxuICAgICAgTm9uZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBhYnN0cmFjdCA9IEV4aXN0aW5nIG9mIGludCB8IEZyZXNoIG9mIEFnZW50LnRcbnR5cGUgJ2EgcG9ydCA9ICdhICogaW50XG50eXBlICdhIGFycm93ID0gVG9Ob2RlIG9mICdhIHBvcnQgfCBUb05vdGhpbmcgfCBUb0ludGVybmFsIG9mIGludFxudHlwZSAnYSBzdGVwID0gJ2EgcG9ydCAqICdhIGFycm93XG50eXBlICdhIHQgPSAnYSBzdGVwIGxpc3RcblxubGV0IHByaW50X2lkIHNpZ3MgZiA9IGZ1bmN0aW9uXG4gIHwgRXhpc3RpbmcgaWQgLT4gRm9ybWF0LnBwX3ByaW50X2ludCBmIGlkXG4gIHwgRnJlc2ggKGlkLCB0eSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiISVhLSVpXCIgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKSB0eSBpZFxuXG5sZXQgcHJpbnRfaWRfc2l0ZSA/c291cmNlIHNpZ3MgZmluZF90eSBuID1cbiAgbGV0IHR5ID1cbiAgICBtYXRjaCBuIHdpdGhcbiAgICB8IEZyZXNoIChfLCB0eSkgLT4gdHlcbiAgICB8IEV4aXN0aW5nIGlkIC0+XG4gICAgICAobWF0Y2ggc291cmNlIHdpdGhcbiAgICAgIHwgU29tZSAoRnJlc2ggKGlkJywgdHkpKSB3aGVuIGlkID0gaWQnIC0+IHR5XG4gICAgICB8IE5vbmUgfCBTb21lIChGcmVzaCBfIHwgRXhpc3RpbmcgXykgLT4gZmluZF90eSBpZClcbiAgaW5cbiAgU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyB0eVxuXG5sZXQgcHJpbnRfaWRfaW50ZXJuYWxfc3RhdGUgc2lncyBmaW5kX3R5IG4gPVxuICBTaWduYXR1cmUucHJpbnRfc2l0ZV9pbnRlcm5hbF9zdGF0ZSBzaWdzXG4gICAgKG1hdGNoIG4gd2l0aFxuICAgIHwgRXhpc3RpbmcgaWQgLT4gZmluZF90eSBpZFxuICAgIHwgRnJlc2ggKF8sIHR5KSAtPiB0eSlcblxubGV0IGlkX3VwX3RvX2FscGhhX3RvX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgRXhpc3RpbmcgaSAtPiBgSW50IGlcbiAgfCBGcmVzaCBmIC0+IEFnZW50LnRvX2pzb24gZlxuXG5sZXQgaWRfdXBfdG9fYWxwaGFfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gRXhpc3RpbmcgaVxuICB8IHggLT4gRnJlc2ggKEFnZW50Lm9mX2pzb24geClcblxubGV0IHBvcnRfdG9feW9qc29uIChhLCBzKSA9IGBMaXN0IFsgaWRfdXBfdG9fYWxwaGFfdG9feW9qc29uIGE7IGBJbnQgcyBdXG5cbmxldCBwb3J0X29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBhOyBgSW50IHMgXSAtPiBpZF91cF90b19hbHBoYV9vZl95b2pzb24gYSwgc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IG5hdmlnYXRpb24gcG9ydFwiLCB4KSlcblxubGV0IGFycm93X3RvX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgVG9Ob2RlIHAgLT4gcG9ydF90b195b2pzb24gcFxuICB8IFRvTm90aGluZyAtPiBgTnVsbFxuICB8IFRvSW50ZXJuYWwgaSAtPiBgSW50IGlcblxubGV0IGFycm93X29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gVG9Ob3RoaW5nXG4gIHwgYEludCBpIC0+IFRvSW50ZXJuYWwgaVxuICB8IHggLT4gVG9Ob2RlIChwb3J0X29mX3lvanNvbiB4KVxuXG5sZXQgc3RlcF90b195b2pzb24gKHAsIGEpID0gYExpc3QgWyBwb3J0X3RvX3lvanNvbiBwOyBhcnJvd190b195b2pzb24gYSBdXG5cbmxldCBzdGVwX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBwOyBhIF0gLT4gcG9ydF9vZl95b2pzb24gcCwgYXJyb3dfb2ZfeW9qc29uIGFcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBuYXZpZ2F0aW9uIHN0ZXBcIiwgeCkpXG5cbmxldCB0b195b2pzb24gbCA9IGBMaXN0IChMaXN0Lm1hcCBzdGVwX3RvX3lvanNvbiBsKVxuXG5sZXQgb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIHN0ZXBfb2ZfeW9qc29uIGxcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBuYXZpZ2F0aW9uXCIsIHgpKVxuXG5sZXQgZXh0ZW5kIGYgPSBmdW5jdGlvblxuICB8IEV4aXN0aW5nIF8gLT4gZlxuICB8IEZyZXNoIChpZCwgdHkpIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGlmIHggPSBpZCB0aGVuXG4gICAgICAgIHR5XG4gICAgICBlbHNlXG4gICAgICAgIGYgeFxuXG5sZXQgcmVjIHByaW50IHNpZ3MgZmluZF90eSBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8ICgoc291cmNlLCBzaXRlKSwgVG9Ob3RoaW5nKSA6OiB0IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIi0lYSglYVsuXSktPiVhXCIgKHByaW50X2lkIHNpZ3MpIHNvdXJjZVxuICAgICAgKHByaW50X2lkX3NpdGUgc2lncyBmaW5kX3R5IHNvdXJjZSlcbiAgICAgIHNpdGVcbiAgICAgIChwcmludCBzaWdzIChleHRlbmQgZmluZF90eSBzb3VyY2UpKVxuICAgICAgdFxuICB8ICgoc291cmNlLCBzaXRlKSwgVG9Ob2RlIChpZCwgcG9ydCkpIDo6IHQgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiLSVhKCVhWyVhLiVhXSktPiVhXCIgKHByaW50X2lkIHNpZ3MpIHNvdXJjZVxuICAgICAgKHByaW50X2lkX3NpdGUgc2lncyBmaW5kX3R5IHNvdXJjZSlcbiAgICAgIHNpdGVcbiAgICAgIChwcmludF9pZF9zaXRlIH5zb3VyY2Ugc2lncyBmaW5kX3R5IGlkKVxuICAgICAgcG9ydCAocHJpbnRfaWQgc2lncykgaWRcbiAgICAgIChwcmludCBzaWdzIChleHRlbmQgKGV4dGVuZCBmaW5kX3R5IGlkKSBzb3VyY2UpKVxuICAgICAgdFxuICB8ICgoc291cmNlLCBzaXRlKSwgVG9JbnRlcm5hbCBpKSA6OiB0IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIi0lYSglYSktPiVhXCIgKHByaW50X2lkIHNpZ3MpIHNvdXJjZVxuICAgICAgKHByaW50X2lkX2ludGVybmFsX3N0YXRlIHNpZ3MgZmluZF90eSBzb3VyY2Ugc2l0ZSlcbiAgICAgIChTb21lIGkpXG4gICAgICAocHJpbnQgc2lncyAoZXh0ZW5kIGZpbmRfdHkgc291cmNlKSlcbiAgICAgIHRcblxubGV0IGNvbXBhdGlibGVfZnJlc2hfcG9pbnQgfmRlYnVnX21vZGUgZSAoc2lkLCBzdHkpIHNzaXRlIGFycm93ID1cbiAgbWF0Y2ggZSwgYXJyb3cgd2l0aFxuICB8IF8sIFRvTm9kZSAoRXhpc3RpbmcgXywgXykgLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgXCJOYXZpZ2F0aW9uLmNvbXBhdGlibGVfZnJlc2hfcG9pbnQgZG9lcyBub3QgZGVhbCB3aXRoIGV4aXN0aW5nIFxcXG4gICAgICAgICAgICAgYXJyb3dcIikpXG4gIHwgKChGcmVzaCAoaWQsIHR5KSwgc2l0ZSksIHgpLCBUb05vdGhpbmcgLT5cbiAgICBpZiB0eSA9IHN0eSAmJiBzaXRlID0gc3NpdGUgJiYgeCA9IFRvTm90aGluZyB0aGVuIChcbiAgICAgIGxldCBpbmogPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICAgICAgaWYgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQgc2lkIGluaiB0aGVuXG4gICAgICAgIFNvbWUgaW5qXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICApIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoKEZyZXNoIChpZCwgdHkpLCBzaXRlKSwgeCksIFRvSW50ZXJuYWwgaSAtPlxuICAgIGlmIHR5ID0gc3R5ICYmIHNpdGUgPSBzc2l0ZSAmJiB4ID0gVG9JbnRlcm5hbCBpIHRoZW4gKFxuICAgICAgbGV0IGluaiA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gICAgICBpZiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCBzaWQgaW5qIHRoZW5cbiAgICAgICAgU29tZSBpbmpcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgICkgZWxzZVxuICAgICAgTm9uZVxuICB8ICggKChGcmVzaCAoaWQsIHR5KSwgc2l0ZSksIFRvTm9kZSAoRnJlc2ggKGlkJywgdHknKSwgc2l0ZScpKSxcbiAgICAgIFRvTm9kZSAoRnJlc2ggKHNpZCcsIHN0eScpLCBzc2l0ZScpICkgLT5cbiAgICAoKiBsaW5rIGJldHdlZW4gMiBhZ2VudHMgKilcbiAgICBpZiB0eSA9IHN0eSAmJiBzaXRlID0gc3NpdGUgJiYgdHknID0gc3R5JyAmJiBzaXRlJyA9IHNzaXRlJyB0aGVuIChcbiAgICAgIGxldCBpbmogPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICAgICAgaWYgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQgc2lkIGluaiB0aGVuXG4gICAgICAgIGlmIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkJyBzaWQnIGluaiB0aGVuXG4gICAgICAgICAgU29tZSBpbmpcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgICkgZWxzZSBpZiB0eSA9IHN0eScgJiYgc2l0ZSA9IHNzaXRlJyAmJiB0eScgPSBzdHkgJiYgc2l0ZScgPSBzc2l0ZSB0aGVuIChcbiAgICAgIGxldCBpbmogPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICAgICAgaWYgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQgc2lkJyBpbmogdGhlblxuICAgICAgICBpZiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCcgc2lkIGluaiB0aGVuXG4gICAgICAgICAgU29tZSBpbmpcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgICkgZWxzZVxuICAgICAgTm9uZVxuICB8ICggKCAoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb05vZGUgKEZyZXNoIChpZCcsIHR5KSwgc2l0ZScpXG4gICAgICB8IChGcmVzaCAoaWQnLCB0eSksIHNpdGUpLCBUb05vZGUgKEV4aXN0aW5nIGlkLCBzaXRlJykgKSxcbiAgICAgIFRvTm9kZSAoRnJlc2ggKHNpZCcsIHN0eScpLCBzc2l0ZScpICkgLT5cbiAgICAoKiBzZWxmLWxpbmsgaW4gYWdlbnQgKilcbiAgICBpZlxuICAgICAgKChzc2l0ZSA9IHNpdGUgJiYgc3NpdGUnID0gc2l0ZScpIHx8IChzc2l0ZScgPSBzaXRlICYmIHNzaXRlID0gc2l0ZScpKVxuICAgICAgJiYgaWQgPSBpZCcgJiYgc2lkID0gc2lkJyAmJiB0eSA9IHN0eSAmJiBzdHkgPSBzdHknXG4gICAgdGhlbiAoXG4gICAgICBsZXQgaW5qID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgICAgIGlmIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkIHNpZCBpbmogdGhlblxuICAgICAgICBTb21lIGlualxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgKSBlbHNlXG4gICAgICBOb25lXG4gIHwgKChFeGlzdGluZyBfLCBfKSwgXyksIF8gLT4gTm9uZVxuICB8ICgoRnJlc2ggXywgXyksIChUb05vdGhpbmcgfCBUb0ludGVybmFsIF8pKSwgVG9Ob2RlIF8gLT4gTm9uZVxuXG5sZXQgY29tcGF0aWJsZV9wb2ludCB+ZGVidWdfbW9kZSBpbmogZSBlJyA9XG4gIG1hdGNoIGUsIGUnIHdpdGhcbiAgfCAoKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob3RoaW5nKSwgZSAtPlxuICAgIGlmXG4gICAgICBSZW5hbWluZy5tZW0gaWQgaW5qXG4gICAgICAmJiBlID0gKChFeGlzdGluZyAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkKSwgc2l0ZSksIFRvTm90aGluZylcbiAgICB0aGVuXG4gICAgICBTb21lIGlualxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9JbnRlcm5hbCBpKSwgZSAtPlxuICAgIGlmXG4gICAgICBSZW5hbWluZy5tZW0gaWQgaW5qXG4gICAgICAmJiBlID0gKChFeGlzdGluZyAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkKSwgc2l0ZSksIFRvSW50ZXJuYWwgaSlcbiAgICB0aGVuXG4gICAgICBTb21lIGlualxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob2RlIChFeGlzdGluZyBpZCcsIHNpdGUnKSksIGUgLT5cbiAgICBpZlxuICAgICAgUmVuYW1pbmcubWVtIGlkIGluaiAmJiBSZW5hbWluZy5tZW0gaWQnIGlualxuICAgICAgJiYgKGVcbiAgICAgICAgICA9ICggKEV4aXN0aW5nIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQpLCBzaXRlKSxcbiAgICAgICAgICAgICAgVG9Ob2RlIChFeGlzdGluZyAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkJyksIHNpdGUnKSApXG4gICAgICAgICB8fCBlXG4gICAgICAgICAgICA9ICggKEV4aXN0aW5nIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQnKSwgc2l0ZScpLFxuICAgICAgICAgICAgICAgIFRvTm9kZSAoRXhpc3RpbmcgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCksIHNpdGUpICkpXG4gICAgdGhlblxuICAgICAgU29tZSBpbmpcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgKCAoKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob2RlIChGcmVzaCAoaWQnLCB0eSksIHNpdGUnKSksXG4gICAgICAoKEV4aXN0aW5nIHNpZCwgc3NpdGUpLCBUb05vZGUgKEZyZXNoIChzaWQnLCB0eScpLCBzc2l0ZScpKSApXG4gIHwgKCAoKEZyZXNoIChpZCcsIHR5KSwgc2l0ZSksIFRvTm9kZSAoRXhpc3RpbmcgaWQsIHNpdGUnKSksXG4gICAgICAoKEV4aXN0aW5nIHNpZCwgc3NpdGUpLCBUb05vZGUgKEZyZXNoIChzaWQnLCB0eScpLCBzc2l0ZScpKSApXG4gIHwgKCAoKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob2RlIChGcmVzaCAoaWQnLCB0eSksIHNpdGUnKSksXG4gICAgICAoKEZyZXNoIChzaWQnLCB0eScpLCBzc2l0ZSksIFRvTm9kZSAoRXhpc3Rpbmcgc2lkLCBzc2l0ZScpKSApXG4gIHwgKCAoKEZyZXNoIChpZCcsIHR5KSwgc2l0ZSksIFRvTm9kZSAoRXhpc3RpbmcgaWQsIHNpdGUnKSksXG4gICAgICAoKEZyZXNoIChzaWQnLCB0eScpLCBzc2l0ZSksIFRvTm9kZSAoRXhpc3Rpbmcgc2lkLCBzc2l0ZScpKSApIC0+XG4gICAgaWZcbiAgICAgIHR5JyA9IHR5XG4gICAgICAmJiAobm90IChSZW5hbWluZy5tZW0gaWQnIGluaikpXG4gICAgICAmJiAoKHNzaXRlID0gc2l0ZSAmJiBzc2l0ZScgPSBzaXRlJylcbiAgICAgICAgIHx8IChpZCA9IGlkJyAmJiBzc2l0ZSA9IHNpdGUnICYmIHNzaXRlJyA9IHNpdGUpKVxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkJyBzaWQnIGluaiB3aXRoXG4gICAgICB8IFNvbWUgaW5qJ1xuICAgICAgICB3aGVuIFJlbmFtaW5nLm1lbSBpZCBpbmonICYmIHNpZCA9IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgaWQgLT5cbiAgICAgICAgU29tZSBpbmonXG4gICAgICB8IF8gLT4gTm9uZVxuICAgICkgZWxzZVxuICAgICAgTm9uZVxuICB8ICgoRXhpc3RpbmcgXywgXyksIFRvTm9kZSAoRnJlc2ggXywgXykpLCAoKChGcmVzaCBfIHwgRXhpc3RpbmcgXyksIF8pLCBfKSAtPlxuICAgIE5vbmVcbiAgfCAoKEZyZXNoIChpZCwgdHkpLCBzaXRlKSwgVG9Ob3RoaW5nKSwgKChGcmVzaCAoaWQnLCB0eScpLCBzaXRlJyksIHgpIC0+XG4gICAgaWYgdHkgPSB0eScgJiYgc2l0ZSA9IHNpdGUnICYmIHggPSBUb05vdGhpbmcgJiYgbm90IChSZW5hbWluZy5tZW0gaWQgaW5qKVxuICAgIHRoZW5cbiAgICAgIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCBpZCcgaW5qXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8ICgoRnJlc2ggKGlkLCB0eSksIHNpdGUpLCBUb0ludGVybmFsIGkpLCAoKEZyZXNoIChpZCcsIHR5JyksIHNpdGUnKSwgeCkgLT5cbiAgICBpZiB0eSA9IHR5JyAmJiBzaXRlID0gc2l0ZScgJiYgeCA9IFRvSW50ZXJuYWwgaSAmJiBub3QgKFJlbmFtaW5nLm1lbSBpZCBpbmopXG4gICAgdGhlblxuICAgICAgUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkIGlkJyBpbmpcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgKCAoKEZyZXNoIChpZCwgdHkpLCBzaXRlKSwgVG9Ob2RlIChGcmVzaCAoaWQnLCB0eScpLCBzaXRlJykpLFxuICAgICAgKChGcmVzaCAoc2lkLCBzdHkpLCBzc2l0ZSksIFRvTm9kZSAoRnJlc2ggKHNpZCcsIHN0eScpLCBzc2l0ZScpKSApIC0+XG4gICAgaWYgKG5vdCAoUmVuYW1pbmcubWVtIGlkIGluaikpICYmIG5vdCAoUmVuYW1pbmcubWVtIGlkJyBpbmopIHRoZW5cbiAgICAgIGlmIHR5ID0gc3R5ICYmIHNpdGUgPSBzc2l0ZSAmJiB0eScgPSBzdHknICYmIHNpdGUnID0gc3NpdGUnIHRoZW4gKFxuICAgICAgICBtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQgc2lkIGluaiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBpbmonIC0+XG4gICAgICAgICAgKG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCcgc2lkJyBpbmonIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBpbmonJyAtPiBTb21lIGluaicnKVxuICAgICAgKSBlbHNlIGlmIHR5ID0gc3R5JyAmJiBzaXRlID0gc3NpdGUnICYmIHR5JyA9IHN0eSAmJiBzaXRlJyA9IHNzaXRlIHRoZW4gKFxuICAgICAgICBtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQgc2lkJyBpbmogd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgaW5qJyAtPlxuICAgICAgICAgIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQnIHNpZCBpbmonIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBpbmonJyAtPiBTb21lIGluaicnKVxuICAgICAgKSBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgKChGcmVzaCBfLCBfKSwgXyksICgoRnJlc2ggXywgXyksIF8pIC0+IE5vbmVcbiAgfCAoKEZyZXNoIF8sIF8pLCBfKSwgKChFeGlzdGluZyBfLCBfKSwgXykgLT4gTm9uZVxuXG5sZXQgcmVjIGF1eF9zdWIgfmRlYnVnX21vZGUgaW5qIGdvYWwgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgaCA6OiB0IC0+XG4gICAgKG1hdGNoIGNvbXBhdGlibGVfcG9pbnQgfmRlYnVnX21vZGUgaW5qIGggZ29hbCB3aXRoXG4gICAgfCBOb25lIC0+IGF1eF9zdWIgfmRlYnVnX21vZGUgaW5qIGdvYWwgKGggOjogYWNjKSB0XG4gICAgfCBTb21lIGluaicgLT4gU29tZSAoaW5qJywgTGlzdC5yZXZfYXBwZW5kIGFjYyB0KSlcblxubGV0IHJlYyBpc19zdWJuYXZpZ2F0aW9uIH5kZWJ1Z19tb2RlIGluaiBuYXYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFNvbWUgKGluaiwgbmF2KVxuICB8IGggOjogdCAtPlxuICAgIChtYXRjaCBhdXhfc3ViIH5kZWJ1Z19tb2RlIGluaiBoIFtdIG5hdiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKGluaicsIG5hdicpIC0+IGlzX3N1Ym5hdmlnYXRpb24gfmRlYnVnX21vZGUgaW5qJyBuYXYnIHQpXG5cbmxldCByZW5hbWVfaWQgfmRlYnVnX21vZGUgaW5qMmNjID0gZnVuY3Rpb25cbiAgfCBFeGlzdGluZyBuIC0+IGluajJjYywgRXhpc3RpbmcgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluajJjYyBuKVxuICB8IEZyZXNoIChpZCwgdHkpIC0+XG4gICAgbGV0IGltZyA9IFJlbmFtaW5nLmltYWdlIGluajJjYyBpblxuICAgIGxldCBpZCcgPVxuICAgICAgaWYgTW9kcy5JbnRTZXQubWVtIGlkIGltZyB0aGVuIChcbiAgICAgICAgbWF0Y2ggTW9kcy5JbnRTZXQubWF4X2VsdCBpbWcgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gMVxuICAgICAgICB8IFNvbWUgaSAtPiBzdWNjIGlcbiAgICAgICkgZWxzZVxuICAgICAgICBpZFxuICAgIGluXG4gICAgKG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCBpZCcgaW5qMmNjIHdpdGhcbiAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBTb21lIGluaicgLT4gaW5qJywgRnJlc2ggKGlkJywgdHkpKVxuXG5sZXQgcmVjIHJlbmFtZSB+ZGVidWdfbW9kZSBpbmoyY2MgPSBmdW5jdGlvblxuICB8IFtdIC0+IGluajJjYywgW11cbiAgfCAoKHgsIGkpLCAoKFRvTm90aGluZyB8IFRvSW50ZXJuYWwgXykgYXMgYSkpIDo6IHQgLT5cbiAgICBsZXQgaW5qLCB4JyA9IHJlbmFtZV9pZCB+ZGVidWdfbW9kZSBpbmoyY2MgeCBpblxuICAgIGxldCBpbmonLCB0JyA9IHJlbmFtZSB+ZGVidWdfbW9kZSBpbmogdCBpblxuICAgIGluaicsICgoeCcsIGkpLCBhKSA6OiB0J1xuICB8ICgoeCwgaSksIFRvTm9kZSAoeSwgaikpIDo6IHQgLT5cbiAgICBsZXQgaW5qLCB4JyA9IHJlbmFtZV9pZCB+ZGVidWdfbW9kZSBpbmoyY2MgeCBpblxuICAgIGxldCBpbmonLCB5JyA9IHJlbmFtZV9pZCB+ZGVidWdfbW9kZSBpbmogeSBpblxuICAgIGxldCBpbmonJywgdCcgPSByZW5hbWUgfmRlYnVnX21vZGUgaW5qJyB0IGluXG4gICAgaW5qJycsICgoeCcsIGkpLCBUb05vZGUgKHknLCBqKSkgOjogdCdcblxubGV0IGNoZWNrX2VkZ2UgZ3JhcGggPSBmdW5jdGlvblxuICB8IChGcmVzaCAoaWQsIF8pLCBzaXRlKSwgVG9Ob3RoaW5nIC0+IEVkZ2VzLmlzX2ZyZWUgaWQgc2l0ZSBncmFwaFxuICB8IChGcmVzaCAoaWQsIF8pLCBzaXRlKSwgVG9JbnRlcm5hbCBpIC0+IEVkZ2VzLmlzX2ludGVybmFsIGkgaWQgc2l0ZSBncmFwaFxuICB8IChGcmVzaCAoaWQsIF8pLCBzaXRlKSwgVG9Ob2RlIChFeGlzdGluZyBpZCcsIHNpdGUnKSAtPlxuICAgIEVkZ2VzLmxpbmtfZXhpc3RzIGlkIHNpdGUgaWQnIHNpdGUnIGdyYXBoXG4gIHwgKEZyZXNoIChpZCwgXyksIHNpdGUpLCBUb05vZGUgKEZyZXNoIChpZCcsIF8pLCBzaXRlJykgLT5cbiAgICBFZGdlcy5saW5rX2V4aXN0cyBpZCBzaXRlIGlkJyBzaXRlJyBncmFwaFxuICB8IChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm90aGluZyAtPiBFZGdlcy5pc19mcmVlIGlkIHNpdGUgZ3JhcGhcbiAgfCAoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb0ludGVybmFsIGkgLT4gRWRnZXMuaXNfaW50ZXJuYWwgaSBpZCBzaXRlIGdyYXBoXG4gIHwgKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob2RlIChFeGlzdGluZyBpZCcsIHNpdGUnKSAtPlxuICAgIEVkZ2VzLmxpbmtfZXhpc3RzIGlkIHNpdGUgaWQnIHNpdGUnIGdyYXBoXG4gIHwgKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob2RlIChGcmVzaCAoaWQnLCBfKSwgc2l0ZScpIC0+XG4gICAgRWRnZXMubGlua19leGlzdHMgaWQgc2l0ZSBpZCcgc2l0ZScgZ3JhcGhcblxuKCppbmogaXMgdGhlIHBhcnRpYWwgaW5qZWN0aW9uIGJ1aWx0IHNvIGZhcjogaW5qOmFicy0+Y29uY3JldGUqKVxubGV0IGRzdF9pc19va2F5IH5kZWJ1Z19tb2RlIGluaicgZ3JhcGggcm9vdCBzaXRlID0gZnVuY3Rpb25cbiAgfCBUb05vdGhpbmcgLT5cbiAgICBpZiBFZGdlcy5pc19mcmVlIHJvb3Qgc2l0ZSBncmFwaCB0aGVuXG4gICAgICBTb21lIGluaidcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgVG9JbnRlcm5hbCBpIC0+XG4gICAgaWYgRWRnZXMuaXNfaW50ZXJuYWwgaSByb290IHNpdGUgZ3JhcGggdGhlblxuICAgICAgU29tZSBpbmonXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8IFRvTm9kZSAoRXhpc3RpbmcgaWQnLCBzaXRlJykgLT5cbiAgICBpZlxuICAgICAgRWRnZXMubGlua19leGlzdHMgcm9vdCBzaXRlXG4gICAgICAgIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmonIGlkJylcbiAgICAgICAgc2l0ZScgZ3JhcGhcbiAgICB0aGVuXG4gICAgICBTb21lIGluaidcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgVG9Ob2RlIChGcmVzaCAoaWQnLCB0eSksIHNpdGUnKSAtPlxuICAgIChtYXRjaCBFZGdlcy5leGlzdHNfZnJlc2ggcm9vdCBzaXRlIHR5IHNpdGUnIGdyYXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBub2RlIC0+IFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCcgbm9kZSBpbmonKVxuXG5sZXQgaW5qZWN0aW9uX2Zvcl9vbmVfbW9yZV9lZGdlIH5kZWJ1Z19tb2RlID9yb290IGluaiBncmFwaCA9IGZ1bmN0aW9uXG4gIHwgKEV4aXN0aW5nIGlkLCBzaXRlKSwgZHN0IC0+XG4gICAgZHN0X2lzX29rYXkgfmRlYnVnX21vZGUgaW5qIGdyYXBoXG4gICAgICAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkKVxuICAgICAgc2l0ZSBkc3RcbiAgfCAoRnJlc2ggKGlkLCBydHkpLCBzaXRlKSwgZHN0IC0+XG4gICAgKG1hdGNoIHJvb3Qgd2l0aFxuICAgIHwgU29tZSAocm9vdCwgcnR5Jykgd2hlbiBydHkgPSBydHknIC0+XG4gICAgICAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkIHJvb3QgaW5qIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgaW5qJyAtPiBkc3RfaXNfb2theSB+ZGVidWdfbW9kZSBpbmonIGdyYXBoIHJvb3Qgc2l0ZSBkc3QpXG4gICAgfCBfIC0+IE5vbmUpXG5cbmxldCBpbXBlcmF0aXZlX2RzdF9pc19va2F5IH5kZWJ1Z19tb2RlIGluaicgZ3JhcGggcm9vdCBzaXRlID0gZnVuY3Rpb25cbiAgfCBUb05vdGhpbmcgLT4gRWRnZXMuaXNfZnJlZSByb290IHNpdGUgZ3JhcGhcbiAgfCBUb0ludGVybmFsIGkgLT4gRWRnZXMuaXNfaW50ZXJuYWwgaSByb290IHNpdGUgZ3JhcGhcbiAgfCBUb05vZGUgKEV4aXN0aW5nIGlkJywgc2l0ZScpIC0+XG4gICAgRWRnZXMubGlua19leGlzdHMgcm9vdCBzaXRlXG4gICAgICAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qJyBpZCcpXG4gICAgICBzaXRlJyBncmFwaFxuICB8IFRvTm9kZSAoRnJlc2ggKGlkJywgdHkpLCBzaXRlJykgLT5cbiAgICAobWF0Y2ggRWRnZXMuZXhpc3RzX2ZyZXNoIHJvb3Qgc2l0ZSB0eSBzaXRlJyBncmFwaCB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIG5vZGUgLT4gUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQnIG5vZGUgaW5qJylcblxubGV0IGltcGVyYXRpdmVfZWRnZV9pc192YWxpZCB+ZGVidWdfbW9kZSA/cm9vdCBpbmogZ3JhcGggPSBmdW5jdGlvblxuICB8IChFeGlzdGluZyBpZCwgc2l0ZSksIGRzdCAtPlxuICAgIGltcGVyYXRpdmVfZHN0X2lzX29rYXkgfmRlYnVnX21vZGUgaW5qIGdyYXBoXG4gICAgICAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkKVxuICAgICAgc2l0ZSBkc3RcbiAgfCAoRnJlc2ggKGlkLCBydHkpLCBzaXRlKSwgZHN0IC0+XG4gICAgKG1hdGNoIHJvb3Qgd2l0aFxuICAgIHwgU29tZSAocm9vdCwgcnR5Jykgd2hlbiBydHkgPSBydHknIC0+XG4gICAgICBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCByb290IGlualxuICAgICAgJiYgaW1wZXJhdGl2ZV9kc3RfaXNfb2theSB+ZGVidWdfbW9kZSBpbmogZ3JhcGggcm9vdCBzaXRlIGRzdFxuICAgIHwgXyAtPiBmYWxzZSlcblxubGV0IGNvbmNyZXRpemVfcG9ydCB+ZGVidWdfbW9kZSBpbmogPSBmdW5jdGlvblxuICB8IEV4aXN0aW5nIGlkLCBzaXRlIC0+IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCwgc2l0ZVxuICB8IEZyZXNoIChpZCwgXyksIHNpdGUgLT4gUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkLCBzaXRlXG5cbmxldCBjb25jcmV0aXplX2Fycm93IH5kZWJ1Z19tb2RlIGluaiA9IGZ1bmN0aW9uXG4gIHwgKFRvTm90aGluZyB8IFRvSW50ZXJuYWwgXykgYXMgeCAtPiB4XG4gIHwgVG9Ob2RlIHggLT4gVG9Ob2RlIChjb25jcmV0aXplX3BvcnQgfmRlYnVnX21vZGUgaW5qIHgpXG5cbmxldCBjb25jcmV0aXplIH5kZWJ1Z19tb2RlIHJvb3QgZ3JhcGggbmF2ID1cbiAgbGV0IGluaiA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gIGxldCBvdXQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIG91dCAoKHAsIGRzdCkgYXMgc3RlcCkgLT5cbiAgICAgICAgbWF0Y2ggb3V0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG91dFxuICAgICAgICB8IFNvbWUgKHJvb3QsIGFjYykgLT5cbiAgICAgICAgICBpZiBpbXBlcmF0aXZlX2VkZ2VfaXNfdmFsaWQgfmRlYnVnX21vZGUgP3Jvb3QgaW5qIGdyYXBoIHN0ZXAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgc3QgPVxuICAgICAgICAgICAgICAoIGNvbmNyZXRpemVfcG9ydCB+ZGVidWdfbW9kZSBpbmogcCxcbiAgICAgICAgICAgICAgICBjb25jcmV0aXplX2Fycm93IH5kZWJ1Z19tb2RlIGluaiBkc3QgKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFNvbWUgKE5vbmUsIHN0IDo6IGFjYylcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIE5vbmUpXG4gICAgICAoU29tZSAoU29tZSByb290LCBbXSkpXG4gICAgICBuYXZcbiAgaW5cbiAgT3B0aW9uX3V0aWwubWFwIChmdW4gKF8sIGwpIC0+IExpc3QucmV2IGwpIG91dFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBpbnRlcm5hbCA9IGludCBvcHRpb25cbnR5cGUgbGluayA9IEZSRUUgfCBWQUwgb2YgaW50XG50eXBlIGFnZW50ID0geyBhX3R5cGU6IGludDsgYV9wb3J0czogbGluayBhcnJheTsgYV9pbnRzOiBpbnRlcm5hbCBhcnJheSB9XG50eXBlIHQgPSBhZ2VudCBsaXN0XG5cbmxldCBjb3B5X2FnZW50IGFnZW50ID1cbiAge1xuICAgIGFfdHlwZSA9IGFnZW50LmFfdHlwZTtcbiAgICBhX3BvcnRzID0gQXJyYXkuY29weSBhZ2VudC5hX3BvcnRzO1xuICAgIGFfaW50cyA9IEFycmF5LmNvcHkgYWdlbnQuYV9pbnRzO1xuICB9XG5cbnR5cGUgaW5jcl90ID0ge1xuICBmYXRoZXI6IGludCBNb2RzLkR5bkFycmF5LnQ7XG4gIHJhbms6IChpbnQgKiAoYm9vbCAqIGJvb2wpKSBNb2RzLkR5bkFycmF5LnQ7XG59XG5cbmxldCBjcmVhdGUgbiA9XG4gIHtcbiAgICBmYXRoZXIgPSBNb2RzLkR5bkFycmF5LmluaXQgbiAoZnVuIGkgLT4gaSk7XG4gICAgcmFuayA9IE1vZHMuRHluQXJyYXkubWFrZSBuICgxLCAodHJ1ZSwgZmFsc2UpKTtcbiAgfVxuXG5sZXQgcmVjIGZpbmRfYXV4IGEgaSA9XG4gIGxldCBhaSA9XG4gICAgaWYgTW9kcy5EeW5BcnJheS5sZW5ndGggYSA8PSBpIHRoZW5cbiAgICAgIGlcbiAgICBlbHNlXG4gICAgICBNb2RzLkR5bkFycmF5LmdldCBhIGlcbiAgaW5cbiAgaWYgYWkgPT0gaSB0aGVuXG4gICAgaVxuICBlbHNlIChcbiAgICBsZXQgcm9vdCA9IGZpbmRfYXV4IGEgYWkgaW5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBhIGkgcm9vdCBpblxuICAgIHJvb3RcbiAgKVxuXG5sZXQgZmluZCBoIHggPSBmaW5kX2F1eCBoLmZhdGhlciB4XG5sZXQgY29tYmluZV9yYW5rcyAoaXgsIChieCwgXykpIChpeSwgKGJ5LCBfKSkgPSBpeCArIGl5LCAoYnggJiYgYnksIHRydWUpXG5cbmxldCB1bmlvbiBoIHggeSA9XG4gIGxldCByb290X3ggPSBmaW5kIGggeCBpblxuICBsZXQgcm9vdF95ID0gZmluZCBoIHkgaW5cbiAgaWYgcm9vdF94ID09IHJvb3RfeSB0aGVuXG4gICAgKClcbiAgZWxzZSAoXG4gICAgbGV0IHJhbmtfeCA9IE1vZHMuRHluQXJyYXkuZ2V0IGgucmFuayByb290X3ggaW5cbiAgICBsZXQgcmFua195ID0gTW9kcy5EeW5BcnJheS5nZXQgaC5yYW5rIHJvb3RfeSBpblxuICAgIGlmIGZzdCByYW5rX3ggPiBmc3QgcmFua195IHRoZW4gKFxuICAgICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgaC5yYW5rIHJvb3RfeCAoY29tYmluZV9yYW5rcyByYW5rX3ggcmFua195KSBpblxuICAgICAgTW9kcy5EeW5BcnJheS5zZXQgaC5mYXRoZXIgcm9vdF95IHJvb3RfeFxuICAgICkgZWxzZSBpZiBmc3QgcmFua194IDwgZnN0IHJhbmtfeSB0aGVuIChcbiAgICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGgucmFuayByb290X3kgKGNvbWJpbmVfcmFua3MgcmFua194IHJhbmtfeSkgaW5cbiAgICAgIE1vZHMuRHluQXJyYXkuc2V0IGguZmF0aGVyIHJvb3RfeCByb290X3lcbiAgICApIGVsc2UgKFxuICAgICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgaC5yYW5rIHJvb3RfeCAoY29tYmluZV9yYW5rcyByYW5rX3ggcmFua195KSBpblxuICAgICAgTW9kcy5EeW5BcnJheS5zZXQgaC5mYXRoZXIgcm9vdF95IHJvb3RfeFxuICAgIClcbiAgKVxuXG5sZXQgdW5pb25fZmluZF9jb3VudGVycyBzaWdzIG1peCA9XG4gIGxldCB0ID0gY3JlYXRlIDEgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gYWcgLT5cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUucG9ydHNfaWZfY291bnRlcl9hZ2VudCBzaWdzIGFnLmFfdHlwZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIChiZWZvcmUsIGFmdGVyKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBhZy5hX3BvcnRzLihhZnRlcikgaW5cbiAgICAgICAgICAgIGxldCBiID0gYWcuYV9wb3J0cy4oYmVmb3JlKSBpblxuICAgICAgICAgICAgKG1hdGNoIGIgd2l0aFxuICAgICAgICAgICAgfCBGUkVFIC0+ICgpXG4gICAgICAgICAgICB8IFZBTCBsbmtfYiAtPlxuICAgICAgICAgICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgIHwgRlJFRSAtPlxuICAgICAgICAgICAgICAgICgqIGluIHRoaXMgY2FzZSB0aGUgZW5kcG9pbnQgb2YgdGhlIGNoYWluIG9mIGluY3JlbWVudHMgaXMgcmF3OlxuICAgICAgICAgICAgICAgICAgIHRoZSBhZ2VudCBpcyBjcmVhdGVkIHdpdGggYSBjb3VudGVyIHZhbHVlKilcbiAgICAgICAgICAgICAgICBsZXQgcm9vdCA9IGZpbmQgdCBsbmtfYiBpblxuICAgICAgICAgICAgICAgIGxldCBzLCBfID0gTW9kcy5EeW5BcnJheS5nZXQgdC5yYW5rIHJvb3QgaW5cbiAgICAgICAgICAgICAgICBNb2RzLkR5bkFycmF5LnNldCB0LnJhbmsgcm9vdCAocyAtIDEsICh0cnVlLCB0cnVlKSlcbiAgICAgICAgICAgICAgfCBWQUwgbG5rX2EgLT4gdW5pb24gdCBsbmtfYiBsbmtfYSkpKVxuICAgICAgICBtaXhcbiAgaW5cbiAgdFxuXG5sZXQgcHJpbnRfbGluayB+bm9Db3VudGVycyBjb3VudGVyX2FnZW50cyBmID0gZnVuY3Rpb25cbiAgfCBGUkVFIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlsuXVwiXG4gIHwgVkFMIGkgLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IHJvb3QgPSBmaW5kIGNvdW50ZXJfYWdlbnRzIGkgaW5cbiAgICAgICBsZXQgY291bnRlciwgKF8sIGlzX2NvdW50ZXIpID1cbiAgICAgICAgIE1vZHMuRHluQXJyYXkuZ2V0IGNvdW50ZXJfYWdlbnRzLnJhbmsgcm9vdFxuICAgICAgIGluXG4gICAgICAgaWYgaXNfY291bnRlciAmJiBub3Qgbm9Db3VudGVycyB0aGVuXG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiez0lZH1cIiBjb3VudGVyXG4gICAgICAgZWxzZVxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlslaV1cIiBpXG4gICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJbJWldXCIgaSlcblxubGV0IGF1eF9wcF9zaSBzaWdzIGEgcyBmIGkgPVxuICBtYXRjaCBzaWdzIHdpdGhcbiAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X3NpdGVfaW50ZXJuYWxfc3RhdGUgc2lncyBhIHMgZiBpXG4gIHwgTm9uZSAtPlxuICAgIChtYXRjaCBpIHdpdGhcbiAgICB8IFNvbWUgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWl7JWl9XCIgcyBpXG4gICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBzKVxuXG5sZXQgcHJpbnRfaW50ZiB+bm9Db3VudGVycyB3aXRoX2xpbmsgP3NpZ3MgY291bnRlcl9hZ2VudHMgYWdfdHkgZiAocG9ydHMsIGludHMpXG4gICAgPVxuICBsZXQgcmVjIGF1eCBlbXB0eSBpID1cbiAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIHBvcnRzIHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWElYVwiXG4gICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICBQcC5lbXB0eVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgUHAuc3BhY2UpXG4gICAgICAgICAgKGF1eF9wcF9zaSBzaWdzIGFnX3R5IGkpIGludHMuKGkpXG4gICAgICAgICAgKGlmIHdpdGhfbGluayB0aGVuXG4gICAgICAgICAgICAgcHJpbnRfbGluayB+bm9Db3VudGVycyBjb3VudGVyX2FnZW50c1xuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgZnVuIF8gXyAtPlxuICAgICAgICAgICAoKSlcbiAgICAgICAgICBwb3J0cy4oaSlcbiAgICAgIGluXG4gICAgICBhdXggZmFsc2UgKHN1Y2MgaSlcbiAgICApXG4gIGluXG4gIGF1eCB0cnVlIDBcblxubGV0IGF1eF9wcF9hZyBzaWdzIGYgYSA9XG4gIG1hdGNoIHNpZ3Mgd2l0aFxuICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncyBmIGFcbiAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBhXG5cbmxldCBwcmludF9hZ2VudCB+bm9Db3VudGVycyBjcmVhdGVkIGxpbmsgP3NpZ3MgY291bnRlcl9hZ2VudHMgZiBhZyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYShAWzxoPiVhQF0pJXRcIiAoYXV4X3BwX2FnIHNpZ3MpIGFnLmFfdHlwZVxuICAgIChwcmludF9pbnRmIH5ub0NvdW50ZXJzIGxpbmsgP3NpZ3MgY291bnRlcl9hZ2VudHMgYWcuYV90eXBlKVxuICAgIChhZy5hX3BvcnRzLCBhZy5hX2ludHMpIChmdW4gZiAtPlxuICAgICAgaWYgY3JlYXRlZCB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIitcIilcblxubGV0IHByaW50IH5ub0NvdW50ZXJzIH5jcmVhdGVkIH5pbml0aWFsX2NvbW1hID9zaWdzIGYgbWl4ID1cbiAgbGV0IGNvdW50ZXJfYWdlbnRzID0gdW5pb25fZmluZF9jb3VudGVycyBzaWdzIG1peCBpblxuICBsZXQgcmVjIGF1eF9wcmludCBzb21lID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmXG4gICAgICAgIG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgICAgICBTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIGguYV90eXBlICYmIG5vdCBub0NvdW50ZXJzXG4gICAgICB0aGVuXG4gICAgICAgIGF1eF9wcmludCBzb21lIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPSBpZiBzb21lIHRoZW4gUHAuY29tbWEgZiBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHByaW50X2FnZW50IH5ub0NvdW50ZXJzIGNyZWF0ZWQgdHJ1ZSA/c2lncyBjb3VudGVyX2FnZW50cyBmIGhcbiAgICAgICAgaW5cbiAgICAgICAgYXV4X3ByaW50IHRydWUgdFxuICAgICAgKVxuICBpblxuICBhdXhfcHJpbnQgaW5pdGlhbF9jb21tYSBtaXhcblxubGV0IGFnZW50X3RvX2pzb24gYSA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwidHlwZVwiLCBgSW50IGEuYV90eXBlO1xuICAgICAgKCBcInNpdGVzXCIsXG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAoZnVuIHggYWNjIC0+XG4gICAgICAgICAgICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICB8IEZSRUUgLT4gYE51bGxcbiAgICAgICAgICAgICAgIHwgVkFMIGkgLT4gYEludCBpKVxuICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgIGEuYV9wb3J0cyBbXSkgKTtcbiAgICAgICggXCJpbnRlcm5hbHNcIixcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgIChmdW4geCBhY2MgLT5cbiAgICAgICAgICAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBgTnVsbFxuICAgICAgICAgICAgICAgfCBTb21lIGkgLT4gYEludCBpKVxuICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgIGEuYV9pbnRzIFtdKSApO1xuICAgIF1cblxubGV0IGFnZW50X29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcInR5cGVcIiwgYEludCB0KTsgKFwic2l0ZXNcIiwgYExpc3Qgcyk7IChcImludGVybmFsc1wiLCBgTGlzdCBpKSBdXG4gIHwgYEFzc29jIFsgKFwidHlwZVwiLCBgSW50IHQpOyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSk7IChcInNpdGVzXCIsIGBMaXN0IHMpIF1cbiAgfCBgQXNzb2MgWyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSk7IChcInR5cGVcIiwgYEludCB0KTsgKFwic2l0ZXNcIiwgYExpc3QgcykgXVxuICB8IGBBc3NvYyBbIChcImludGVybmFsc1wiLCBgTGlzdCBpKTsgKFwic2l0ZXNcIiwgYExpc3Qgcyk7IChcInR5cGVcIiwgYEludCB0KSBdXG4gIHwgYEFzc29jIFsgKFwic2l0ZXNcIiwgYExpc3Qgcyk7IChcImludGVybmFsc1wiLCBgTGlzdCBpKTsgKFwidHlwZVwiLCBgSW50IHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJzaXRlc1wiLCBgTGlzdCBzKTsgKFwidHlwZVwiLCBgSW50IHQpOyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSkgXSAtPlxuICAgIHtcbiAgICAgIGFfdHlwZSA9IHQ7XG4gICAgICBhX3BvcnRzID1cbiAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYE51bGwgLT4gRlJFRVxuICAgICAgICAgICAgfCBgSW50IHAgLT4gVkFMIHBcbiAgICAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHNpdGUgbGlua1wiLCB4KSkpXG4gICAgICAgICAgcztcbiAgICAgIGFfaW50cyA9XG4gICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBOdWxsIC0+IE5vbmVcbiAgICAgICAgICAgIHwgYEludCBwIC0+IFNvbWUgcFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgaW50ZXJuYWwgc3RhdGVcIiwgeCkpKVxuICAgICAgICAgIGk7XG4gICAgfVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCByYXdfYWdlbnRcIiwgeCkpXG5cbmxldCB0b19qc29uIG0gPSBgTGlzdCAoTGlzdC5tYXAgYWdlbnRfdG9fanNvbiBtKVxuXG5sZXQgb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCBhZ2VudF9vZl9qc29uIGxcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgcmF3X21peHR1cmVcIiwgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHBlcnZhc2l2ZXNfYm9vbCA9IGJvb2xcblxudHlwZSAoJ21peCwgJ2lkKSBlID1cbiAgfCBCSU5fQUxHX09QIG9mXG4gICAgICBPcGVyYXRvci5iaW5fYWxnX29wXG4gICAgICAqICgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWRcbiAgICAgICogKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZFxuICB8IFVOX0FMR19PUCBvZiBPcGVyYXRvci51bl9hbGdfb3AgKiAoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkXG4gIHwgU1RBVEVfQUxHX09QIG9mIE9wZXJhdG9yLnN0YXRlX2FsZ19vcFxuICB8IEFMR19WQVIgb2YgJ2lkXG4gIHwgS0FQUEFfSU5TVEFOQ0Ugb2YgJ21peFxuICB8IFRPS0VOX0lEIG9mICdpZFxuICB8IENPTlNUIG9mIE5ici50XG4gIHwgSUYgb2ZcbiAgICAgICgnbWl4LCAnaWQpIGJvb2wgTG9jLmFubm90ZWRcbiAgICAgICogKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZFxuICAgICAgKiAoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkXG4gIHwgRElGRl9UT0tFTiBvZiAoKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZCAqICdpZClcbiAgfCBESUZGX0tBUFBBX0lOU1RBTkNFIG9mICgoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkICogJ21peClcblxuYW5kICgnbWl4LCAnaWQpIGJvb2wgPVxuICB8IFRSVUVcbiAgfCBGQUxTRVxuICB8IEJJTl9CT09MX09QIG9mXG4gICAgICBPcGVyYXRvci5iaW5fYm9vbF9vcFxuICAgICAgKiAoJ21peCwgJ2lkKSBib29sIExvYy5hbm5vdGVkXG4gICAgICAqICgnbWl4LCAnaWQpIGJvb2wgTG9jLmFubm90ZWRcbiAgfCBVTl9CT09MX09QIG9mIE9wZXJhdG9yLnVuX2Jvb2xfb3AgKiAoJ21peCwgJ2lkKSBib29sIExvYy5hbm5vdGVkXG4gIHwgQ09NUEFSRV9PUCBvZlxuICAgICAgT3BlcmF0b3IuY29tcGFyZV9vcFxuICAgICAgKiAoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkXG4gICAgICAqICgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWRcblxubGV0IHJlYyBlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQgPSBmdW5jdGlvblxuICB8IEJJTl9BTEdfT1AgKG9wLCBhLCBiKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIE9wZXJhdG9yLmJpbl9hbGdfb3BfdG9fanNvbiBvcDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYTtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYjtcbiAgICAgIF1cbiAgfCBVTl9BTEdfT1AgKG9wLCBhKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIE9wZXJhdG9yLnVuX2FsZ19vcF90b19qc29uIG9wO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBhO1xuICAgICAgXVxuICB8IFNUQVRFX0FMR19PUCBvcCAtPiBPcGVyYXRvci5zdGF0ZV9hbGdfb3BfdG9fanNvbiBvcFxuICB8IEFMR19WQVIgaSAtPiBgTGlzdCBbIGBTdHJpbmcgXCJWQVJcIjsgZl9pZCBpIF1cbiAgfCBLQVBQQV9JTlNUQU5DRSBjYyAtPiBgTGlzdCBbIGBTdHJpbmcgXCJNSVhcIjsgZl9taXggY2MgXVxuICB8IFRPS0VOX0lEIGkgLT4gYExpc3QgWyBgU3RyaW5nIFwiVE9LRU5cIjsgZl9pZCBpIF1cbiAgfCBDT05TVCBuIC0+IE5ici50b195b2pzb24gblxuICB8IElGIChjb25kLCB5ZXMsIG5vKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJJRlwiO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgY29uZDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgeWVzO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBubztcbiAgICAgIF1cbiAgfCBESUZGX1RPS0VOIChleHByLCB0b2tlbikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiRElGRl9UT0tFTlwiO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgZXhwcjtcbiAgICAgICAgZl9pZCB0b2tlbjtcbiAgICAgIF1cbiAgfCBESUZGX0tBUFBBX0lOU1RBTkNFIChleHByLCBtaXh0dXJlKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJESUZGX01JWFRVUkVcIjtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGV4cHI7XG4gICAgICAgIGZfbWl4IG1peHR1cmU7XG4gICAgICBdXG5cbmFuZCBib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQgPSBmdW5jdGlvblxuICB8IFRSVUUgLT4gYEJvb2wgdHJ1ZVxuICB8IEZBTFNFIC0+IGBCb29sIGZhbHNlXG4gIHwgVU5fQk9PTF9PUCAob3AsIGEpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgT3BlcmF0b3IudW5fYm9vbF9vcF90b19qc29uIG9wO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgYTtcbiAgICAgIF1cbiAgfCBCSU5fQk9PTF9PUCAob3AsIGEsIGIpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgT3BlcmF0b3IuYmluX2Jvb2xfb3BfdG9fanNvbiBvcDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGE7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGJvb2xfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICBiO1xuICAgICAgXVxuICB8IENPTVBBUkVfT1AgKG9wLCBhLCBiKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIE9wZXJhdG9yLmNvbXBhcmVfb3BfdG9fanNvbiBvcDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYTtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYjtcbiAgICAgIF1cblxubGV0IHJlYyBlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkRJRkZfTUlYVFVSRVwiOyBleHByOyBtaXh0dXJlIF0gLT5cbiAgICBESUZGX0tBUFBBX0lOU1RBTkNFXG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGV4cHIsXG4gICAgICAgIGZfbWl4IG1peHR1cmUgKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkRJRkZfVE9LRU5cIjsgZXhwcjsgdG9rIF0gLT5cbiAgICBESUZGX1RPS0VOXG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGV4cHIsXG4gICAgICAgIGZfaWQgdG9rIClcbiAgfCBgTGlzdCBbIG9wOyBhOyBiIF0gLT5cbiAgICBCSU5fQUxHX09QXG4gICAgICAoIE9wZXJhdG9yLmJpbl9hbGdfb3Bfb2ZfanNvbiBvcCxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYSxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYlxuICAgICAgKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIlZBUlwiOyBpIF0gLT4gQUxHX1ZBUiAoZl9pZCBpKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIlRPS0VOXCI7IGkgXSAtPiBUT0tFTl9JRCAoZl9pZCBpKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIk1JWFwiOyBjYyBdIC0+IEtBUFBBX0lOU1RBTkNFIChmX21peCBjYylcbiAgfCBgTGlzdCBbIG9wOyBhIF0gLT5cbiAgICBVTl9BTEdfT1BcbiAgICAgICggT3BlcmF0b3IudW5fYWxnX29wX29mX2pzb24gb3AsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGFcbiAgICAgIClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJJRlwiOyBjb25kOyB5ZXM7IG5vIF0gLT5cbiAgICBJRlxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgIChib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgY29uZCxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgeWVzLFxuICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBub1xuICAgICAgKVxuICB8IHggLT5cbiAgICAodHJ5IFNUQVRFX0FMR19PUCAoT3BlcmF0b3Iuc3RhdGVfYWxnX29wX29mX2pzb24geClcbiAgICAgd2l0aCBZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIF8gLT5cbiAgICAgICAodHJ5IENPTlNUIChOYnIub2ZfeW9qc29uIHgpXG4gICAgICAgIHdpdGggWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciBfIC0+XG4gICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBBbGdfZXhwclwiLCB4KSkpKVxuXG5hbmQgYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkID0gZnVuY3Rpb25cbiAgfCBgQm9vbCBiIC0+XG4gICAgaWYgYiB0aGVuXG4gICAgICBUUlVFXG4gICAgZWxzZVxuICAgICAgRkFMU0VcbiAgfCBgTGlzdCBbIG9wOyBhIF0gLT5cbiAgICBVTl9CT09MX09QXG4gICAgICAoIE9wZXJhdG9yLnVuX2Jvb2xfb3Bfb2ZfanNvbiBvcCxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGEgKVxuICB8IGBMaXN0IFsgb3A7IGE7IGIgXSBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIEJJTl9CT09MX09QXG4gICAgICAgICAoIE9wZXJhdG9yLmJpbl9ib29sX29wX29mX2pzb24gb3AsXG4gICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKGJvb2xfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICAgICBhLFxuICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgICAgYiApXG4gICAgIHdpdGggWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciBfIC0+XG4gICAgICAgKHRyeVxuICAgICAgICAgIENPTVBBUkVfT1BcbiAgICAgICAgICAgICggT3BlcmF0b3IuY29tcGFyZV9vcF9vZl9qc29uIG9wLFxuICAgICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgICAgICAgYSxcbiAgICAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgICAgICAgIGIgKVxuICAgICAgICB3aXRoIFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgXyAtPlxuICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBib29sIGV4cHJcIiwgeCkpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBib29sX2V4cHJcIiwgeCkpXG5cbmxldCByZWMgcHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIgZiA9IGZ1bmN0aW9uXG4gIHwgQ09OU1QgbiAtPiBOYnIucHJpbnQgZiBuXG4gIHwgQUxHX1ZBUiBsYWIgLT4gcHJfdmFyIGYgbGFiXG4gIHwgS0FQUEFfSU5TVEFOQ0UgYXN0IC0+IHByX21peCBmIGFzdFxuICB8IFRPS0VOX0lEIHRrIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCIgcHJfdG9rIHRrXG4gIHwgU1RBVEVfQUxHX09QIG9wIC0+IE9wZXJhdG9yLnByaW50X3N0YXRlX2FsZ19vcCBmIG9wXG4gIHwgQklOX0FMR19PUCAob3AsIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIE9wZXJhdG9yLnByaW50X2Jpbl9hbGdfb3BcbiAgICAgIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGFcbiAgICAgIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGIgZiBvcFxuICB8IFVOX0FMR19PUCAob3AsIChhLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEoJWEpXCIgT3BlcmF0b3IucHJpbnRfdW5fYWxnX29wIG9wXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBhXG4gIHwgSUYgKChjb25kLCBfKSwgKHllcywgXyksIChubywgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhIFs/XSAlYSBbOl0gJWFcIlxuICAgICAgKHByaW50X2Jvb2wgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBjb25kXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICB5ZXNcbiAgICAgIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIG5vXG4gIHwgRElGRl9UT0tFTiAoKGV4cHIsIF8pLCB0b2spIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcImRpZmYoJWEsJWEpXCIgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKSBleHByIHByX3RvayB0b2tcbiAgfCBESUZGX0tBUFBBX0lOU1RBTkNFICgoZXhwciwgXyksIG1peHR1cmUpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcImRpZmYoJWEsJWEpXCJcbiAgICAgIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGV4cHIgcHJfbWl4IG1peHR1cmVcblxuYW5kIHByaW50X2Jvb2wgcHJfbWl4IHByX3RvayBwcl92YXIgZiA9IGZ1bmN0aW9uXG4gIHwgVFJVRSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiW3RydWVdXCJcbiAgfCBGQUxTRSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiW2ZhbHNlXVwiXG4gIHwgVU5fQk9PTF9PUCAob3AsIChhLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEgKCVhKVwiIE9wZXJhdG9yLnByaW50X3VuX2Jvb2xfb3Agb3BcbiAgICAgIChwcmludF9ib29sIHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYVxuICB8IEJJTl9CT09MX09QIChvcCwgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiglYSAlYSAlYSlcIlxuICAgICAgKHByaW50X2Jvb2wgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBhIE9wZXJhdG9yLnByaW50X2Jpbl9ib29sX29wIG9wXG4gICAgICAocHJpbnRfYm9vbCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGJcbiAgfCBDT01QQVJFX09QIChvcCwgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiglYSAlYSAlYSlcIlxuICAgICAgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYSBPcGVyYXRvci5wcmludF9jb21wYXJlX29wIG9wXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBiXG5cbmxldCBjb25zdCBuID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKENPTlNUIG4pXG5sZXQgaW50IGkgPSBjb25zdCAoTmJyLkkgaSlcbmxldCBmbG9hdCBmID0gY29uc3QgKE5ici5GIGYpXG5sZXQgYWRkIGUxIGUyID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKEJJTl9BTEdfT1AgKE9wZXJhdG9yLlNVTSwgZTEsIGUyKSlcbmxldCBtaW51cyBlMSBlMiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChCSU5fQUxHX09QIChPcGVyYXRvci5NSU5VUywgZTEsIGUyKSlcbmxldCBtdWx0IGUxIGUyID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKEJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIGUxLCBlMikpXG5sZXQgZGl2IGUxIGUyID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKEJJTl9BTEdfT1AgKE9wZXJhdG9yLkRJViwgZTEsIGUyKSlcbmxldCBwb3cgZTEgZTIgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQklOX0FMR19PUCAoT3BlcmF0b3IuUE9XLCBlMSwgZTIpKVxubGV0IGxvZyBlMSA9IExvYy5hbm5vdF93aXRoX2R1bW15IChVTl9BTEdfT1AgKE9wZXJhdG9yLkxPRywgZTEpKVxuXG5sZXQgbG4gZTEgPVxuICAoKiBKRjogSWYgSSByZW1lbW5iZXIgd2VsbCAqKVxuICBkaXYgKGxvZyBlMSkgKGxvZyAoaW50IDEwKSlcblxubGV0IHNpbiBlMSA9IExvYy5hbm5vdF93aXRoX2R1bW15IChVTl9BTEdfT1AgKE9wZXJhdG9yLlNJTlVTLCBlMSkpXG5sZXQgY29zIGUxID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKFVOX0FMR19PUCAoT3BlcmF0b3IuQ09TSU5VUywgZTEpKVxubGV0IHVtaW51cyBlMSA9IExvYy5hbm5vdF93aXRoX2R1bW15IChVTl9BTEdfT1AgKE9wZXJhdG9yLlVNSU5VUywgZTEpKVxubGV0IHNxcnQgZTEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoVU5fQUxHX09QIChPcGVyYXRvci5TUVJULCBlMSkpXG5cbmxldCByZWMgYWRkX2RlcCAoKGluX3QsIGluX2UsIHRva3NfZCwgb3V0KSBhcyB4KSBkID0gZnVuY3Rpb25cbiAgfCBCSU5fQUxHX09QIChfLCBhLCBiKSwgXyAtPiBhZGRfZGVwIChhZGRfZGVwIHggZCBhKSBkIGJcbiAgfCAoVU5fQUxHX09QIChfLCBhKSB8IERJRkZfVE9LRU4gKGEsIF8pIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoYSwgXykpLCBfXG4gICgqIHdoZW4gd2UgZGlmZmVyZW50aWF0ZSBhZ2FpbnN0IGEgdmFyaWFibGUsIHRoZSByZXN1bHQgbWF5IGRlcGVuZCBvbiB0aGlzIHZhcmlhYmxlIG9ubHkgaWYgdGhlIHZhcmlhYmxlIG9jY3VycyBpbiB0aGUgZGlmZmVybnRpYXRlZCBleHByZXNzaW9uICopXG4gICAgLT5cbiAgICBhZGRfZGVwIHggZCBhXG4gIHwgQUxHX1ZBUiBqLCBfIC0+XG4gICAgbGV0ICgpID0gb3V0LihqKSA8LSBPcGVyYXRvci5EZXBTZXQuYWRkIGQgb3V0LihqKSBpblxuICAgIHhcbiAgfCAoS0FQUEFfSU5TVEFOQ0UgXyB8IENPTlNUIF8pLCBfIC0+IHhcbiAgfCBUT0tFTl9JRCBpLCBfIC0+XG4gICAgbGV0ICgpID0gdG9rc19kLihpKSA8LSBPcGVyYXRvci5EZXBTZXQuYWRkIGQgdG9rc19kLihpKSBpblxuICAgIHhcbiAgfCBJRiAoY29uZCwgeWVzLCBubyksIF8gLT5cbiAgICBhZGRfZGVwIChhZGRfZGVwIChhZGRfZGVwX2Jvb2wgeCBkIGNvbmQpIGQgeWVzKSBkIG5vXG4gIHwgU1RBVEVfQUxHX09QIG9wLCBfIC0+XG4gICAgKG1hdGNoIG9wIHdpdGhcbiAgICB8IE9wZXJhdG9yLkVNQVhfVkFSIHwgT3BlcmF0b3IuVE1BWF9WQVIgLT4geFxuICAgIHwgT3BlcmF0b3IuVElNRV9WQVIgLT4gT3BlcmF0b3IuRGVwU2V0LmFkZCBkIGluX3QsIGluX2UsIHRva3NfZCwgb3V0XG4gICAgfCBPcGVyYXRvci5DUFVUSU1FIHwgT3BlcmF0b3IuRVZFTlRfVkFSIHwgT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIgLT5cbiAgICAgIGluX3QsIE9wZXJhdG9yLkRlcFNldC5hZGQgZCBpbl9lLCB0b2tzX2QsIG91dClcblxuYW5kIGFkZF9kZXBfYm9vbCB4IGQgPSBmdW5jdGlvblxuICB8IChUUlVFIHwgRkFMU0UpLCBfIC0+IHhcbiAgfCBVTl9CT09MX09QIChfLCBhKSwgXyAtPiBhZGRfZGVwX2Jvb2wgeCBkIGFcbiAgfCBCSU5fQk9PTF9PUCAoXywgYSwgYiksIF8gLT4gYWRkX2RlcF9ib29sIChhZGRfZGVwX2Jvb2wgeCBkIGEpIGQgYlxuICB8IENPTVBBUkVfT1AgKF8sIGEsIGIpLCBfIC0+IGFkZF9kZXAgKGFkZF9kZXAgeCBkIGEpIGQgYlxuXG5sZXQgcmVjIGhhc19taXggOlxuICAgIHR5cGUgYS4gP3Zhcl9kZWNsczooJ2IgLT4gKCdjLCAnYikgZSkgLT4gKGEsICdiKSBlIC0+IHBlcnZhc2l2ZXNfYm9vbCA9XG4gZnVuID92YXJfZGVjbHMgLT4gZnVuY3Rpb25cbiAgfCBCSU5fQUxHX09QIChfLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBoYXNfbWl4ID92YXJfZGVjbHMgYSB8fCBoYXNfbWl4ID92YXJfZGVjbHMgYlxuICB8IFVOX0FMR19PUCAoXywgKGEsIF8pKVxuICB8IERJRkZfVE9LRU4gKChhLCBfKSwgXylcbiAgfCBESUZGX0tBUFBBX0lOU1RBTkNFICgoYSwgXyksIF8pIC0+XG4gICAgKCogd2hlbiB3ZSBkaWZmZXJlbnRpYXRlIGFnYWluc3QgYSB2YXJpYWJsZSwgdGhlIHJlc3VsdCBtYXkgZGVwZW5kIG9uIHRoaXMgdmFyaWFibGUgb25seSBpZiB0aGUgdmFyaWFibGUgb2NjdXJzIGluIHRoZSBkaWZmZXJudGlhdGVkIGV4cHJlc3Npb24gKilcbiAgICBoYXNfbWl4ID92YXJfZGVjbHMgYVxuICB8IFNUQVRFX0FMR19PUCBfIHwgQ09OU1QgXyAtPiBmYWxzZVxuICB8IFRPS0VOX0lEIF8gfCBLQVBQQV9JTlNUQU5DRSBfIC0+IHRydWVcbiAgfCBJRiAoKGNvbmQsIF8pLCAoeWVzLCBfKSwgKG5vLCBfKSkgLT5cbiAgICBoYXNfbWl4ID92YXJfZGVjbHMgeWVzIHx8IGhhc19taXggP3Zhcl9kZWNscyBub1xuICAgIHx8IGJvb2xfaGFzX21peCA/dmFyX2RlY2xzIGNvbmRcbiAgfCBBTEdfVkFSIGkgLT5cbiAgICAobWF0Y2ggdmFyX2RlY2xzIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgZiAtPiBoYXNfbWl4ID92YXJfZGVjbHMgKGYgaSkpXG5cbmFuZCBib29sX2hhc19taXggOlxuICAgIHR5cGUgYS4gP3Zhcl9kZWNsczooJ2IgLT4gKCdjLCAnYikgZSkgLT4gKGEsICdiKSBib29sIC0+IHBlcnZhc2l2ZXNfYm9vbCA9XG4gZnVuID92YXJfZGVjbHMgLT4gZnVuY3Rpb25cbiAgfCBUUlVFIHwgRkFMU0UgLT4gZmFsc2VcbiAgfCBDT01QQVJFX09QIChfLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBoYXNfbWl4ID92YXJfZGVjbHMgYSB8fCBoYXNfbWl4ID92YXJfZGVjbHMgYlxuICB8IEJJTl9CT09MX09QIChfLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBib29sX2hhc19taXggP3Zhcl9kZWNscyBhIHx8IGJvb2xfaGFzX21peCA/dmFyX2RlY2xzIGJcbiAgfCBVTl9CT09MX09QIChfLCAoYSwgXykpIC0+IGJvb2xfaGFzX21peCA/dmFyX2RlY2xzIGFcblxubGV0IHJlYyBpc19jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgQ09OU1QgXywgXyAtPiB0cnVlXG4gIHwgSUYgKGEsIGIsIGMpLCBfIC0+IGJvb2xfaXNfY29uc3RhbnQgYSAmJiBpc19jb25zdGFudCBiICYmIGlzX2NvbnN0YW50IGNcbiAgfCBCSU5fQUxHX09QIChfLCBhLCBiKSwgXyAtPiBpc19jb25zdGFudCBhICYmIGlzX2NvbnN0YW50IGJcbiAgfCAoVU5fQUxHX09QIChfLCBhKSB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEsIF8pIHwgRElGRl9UT0tFTiAoYSwgXykpLCBfIC0+XG4gICAgaXNfY29uc3RhbnQgYVxuICB8IChBTEdfVkFSIF8gfCBTVEFURV9BTEdfT1AgXyB8IFRPS0VOX0lEIF8gfCBLQVBQQV9JTlNUQU5DRSBfKSwgXyAtPiBmYWxzZVxuXG5hbmQgYm9vbF9pc19jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgKFRSVUUgfCBGQUxTRSksIF8gLT4gdHJ1ZVxuICB8IENPTVBBUkVfT1AgKF8sIGEsIGIpLCBfIC0+IGlzX2NvbnN0YW50IGEgJiYgaXNfY29uc3RhbnQgYlxuICB8IEJJTl9CT09MX09QIChfLCBhLCBiKSwgXyAtPiBib29sX2lzX2NvbnN0YW50IGEgJiYgYm9vbF9pc19jb25zdGFudCBiXG4gIHwgVU5fQk9PTF9PUCAoXywgYSksIF8gLT4gYm9vbF9pc19jb25zdGFudCBhXG5cbmxldCByZWMgaXNfdGltZV9ob21vZ2VuZW91cyA9IGZ1bmN0aW9uXG4gIHwgQ09OU1QgXywgXyAtPiB0cnVlXG4gIHwgSUYgKGEsIGIsIGMpLCBfIC0+XG4gICAgYm9vbF9pc190aW1lX2hvbW9nZW5lb3VzIGEgJiYgaXNfdGltZV9ob21vZ2VuZW91cyBiICYmIGlzX3RpbWVfaG9tb2dlbmVvdXMgY1xuICB8IEJJTl9BTEdfT1AgKF8sIGEsIGIpLCBfIC0+IGlzX3RpbWVfaG9tb2dlbmVvdXMgYSAmJiBpc190aW1lX2hvbW9nZW5lb3VzIGJcbiAgfCAoVU5fQUxHX09QIChfLCBhKSB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEsIF8pIHwgRElGRl9UT0tFTiAoYSwgXykpLCBfIC0+XG4gICAgaXNfdGltZV9ob21vZ2VuZW91cyBhXG4gIHwgKCBTVEFURV9BTEdfT1BcbiAgICAgICAgKCBPcGVyYXRvci5FVkVOVF9WQVIgfCBPcGVyYXRvci5DUFVUSU1FIHwgT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVJcbiAgICAgICAgfCBPcGVyYXRvci5UTUFYX1ZBUiB8IE9wZXJhdG9yLkVNQVhfVkFSICksXG4gICAgICBfIClcbiAgfCBBTEdfVkFSIF8sIF9cbiAgfCBUT0tFTl9JRCBfLCBfXG4gIHwgS0FQUEFfSU5TVEFOQ0UgXywgXyAtPlxuICAgIHRydWVcbiAgfCBTVEFURV9BTEdfT1AgT3BlcmF0b3IuVElNRV9WQVIsIF8gLT4gZmFsc2VcblxuYW5kIGJvb2xfaXNfdGltZV9ob21vZ2VuZW91cyA9IGZ1bmN0aW9uXG4gIHwgKFRSVUUgfCBGQUxTRSksIF8gLT4gdHJ1ZVxuICB8IENPTVBBUkVfT1AgKF8sIGEsIGIpLCBfIC0+IGlzX3RpbWVfaG9tb2dlbmVvdXMgYSAmJiBpc190aW1lX2hvbW9nZW5lb3VzIGJcbiAgfCBCSU5fQk9PTF9PUCAoXywgYSwgYiksIF8gLT5cbiAgICBib29sX2lzX3RpbWVfaG9tb2dlbmVvdXMgYSAmJiBib29sX2lzX3RpbWVfaG9tb2dlbmVvdXMgYlxuICB8IFVOX0JPT0xfT1AgKF8sIGEpLCBfIC0+IGJvb2xfaXNfdGltZV9ob21vZ2VuZW91cyBhXG5cbmxldCByZWMgYXV4X2V4dHJhY3RfY2MgYWNjID0gZnVuY3Rpb25cbiAgfCBCSU5fQUxHX09QIChfLCBhLCBiKSwgXyAtPiBhdXhfZXh0cmFjdF9jYyAoYXV4X2V4dHJhY3RfY2MgYWNjIGEpIGJcbiAgfCAoVU5fQUxHX09QIChfLCBhKSB8IERJRkZfVE9LRU4gKGEsIF8pIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoYSwgXykpLCBfIC0+XG4gICAgYXV4X2V4dHJhY3RfY2MgYWNjIGFcbiAgfCAoQUxHX1ZBUiBfIHwgQ09OU1QgXyB8IFRPS0VOX0lEIF8gfCBTVEFURV9BTEdfT1AgXyksIF8gLT4gYWNjXG4gIHwgS0FQUEFfSU5TVEFOQ0UgaSwgXyAtPiBpIDo6IGFjY1xuICB8IElGIChjb25kLCB5ZXMsIG5vKSwgXyAtPlxuICAgIGF1eF9leHRyYWN0X2NjIChhdXhfZXh0cmFjdF9jYyAoZXh0cmFjdF9jY19ib29sIGFjYyBjb25kKSB5ZXMpIG5vXG5cbmFuZCBleHRyYWN0X2NjX2Jvb2wgYWNjID0gZnVuY3Rpb25cbiAgfCAoVFJVRSB8IEZBTFNFKSwgXyAtPiBhY2NcbiAgfCBCSU5fQk9PTF9PUCAoXywgYSwgYiksIF8gLT4gZXh0cmFjdF9jY19ib29sIChleHRyYWN0X2NjX2Jvb2wgYWNjIGEpIGJcbiAgfCBVTl9CT09MX09QIChfLCBhKSwgXyAtPiBleHRyYWN0X2NjX2Jvb2wgYWNjIGFcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPiBhdXhfZXh0cmFjdF9jYyAoYXV4X2V4dHJhY3RfY2MgYWNjIGEpIGJcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHMgeCA9IGF1eF9leHRyYWN0X2NjIFtdIHhcbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2Jvb2wgeCA9IGV4dHJhY3RfY2NfYm9vbCBbXSB4XG5cbmxldCBzZXR1cF9hbGdfdmFyc19yZXZfZGVwIHRva3MgdmFycyA9XG4gIGxldCBpbl90ID0gT3BlcmF0b3IuRGVwU2V0LmVtcHR5IGluXG4gIGxldCBpbl9lID0gT3BlcmF0b3IuRGVwU2V0LmVtcHR5IGluXG4gIGxldCB0b2tzX2QgPSBBcnJheS5tYWtlIChOYW1lZERlY2xzLnNpemUgdG9rcykgT3BlcmF0b3IuRGVwU2V0LmVtcHR5IGluXG4gIGxldCBvdXQgPSBBcnJheS5tYWtlIChBcnJheS5sZW5ndGggdmFycykgT3BlcmF0b3IuRGVwU2V0LmVtcHR5IGluXG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGkgeCAoXywgeSkgLT4gYWRkX2RlcCB4IChPcGVyYXRvci5BTEcgaSkgeSlcbiAgICAoaW5fdCwgaW5fZSwgdG9rc19kLCBvdXQpIHZhcnNcblxubGV0IHJlYyBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgPVxuICBmdW5jdGlvblxuICB8IChCSU5fQUxHX09QIChvcCwgYSwgYiksIHBvcykgYXMgeCAtPlxuICAgIChtYXRjaFxuICAgICAgICggcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGEsXG4gICAgICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgYlxuICAgICAgIClcbiAgICAgd2l0aFxuICAgIHwgKENPTlNUIGMxLCBfKSwgKENPTlNUIGMyLCBfKSAtPiBDT05TVCAoTmJyLm9mX2Jpbl9hbGdfb3Agb3AgYzEgYzIpLCBwb3NcbiAgICB8ICggKCggKCBCSU5fQUxHX09QIF8gfCBVTl9BTEdfT1AgXyB8IFNUQVRFX0FMR19PUCBfIHwgS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICAgICB8IERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBBTEdfVkFSIF9cbiAgICAgICAgICAgfCBDT05TVCBfIHwgSUYgXyApLFxuICAgICAgICAgICBfICkgYXMgYScpLFxuICAgICAgICAoKCAoIEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfIHwgU1RBVEVfQUxHX09QIF8gfCBLQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgICAgIHwgRElGRl9UT0tFTiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IEFMR19WQVIgX1xuICAgICAgICAgICB8IENPTlNUIF8gfCBJRiBfICksXG4gICAgICAgICAgIF8gKSBhcyBiJykgKSAtPlxuICAgICAgaWYgYSA9PSBhJyAmJiBiID09IGInIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBCSU5fQUxHX09QIChvcCwgYScsIGInKSwgcG9zKVxuICB8IChVTl9BTEdfT1AgKG9wLCBhKSwgcG9zKSBhcyB4IC0+XG4gICAgKG1hdGNoXG4gICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGFcbiAgICAgd2l0aFxuICAgIHwgQ09OU1QgYywgXyAtPiBDT05TVCAoTmJyLm9mX3VuX2FsZ19vcCBvcCBjKSwgcG9zXG4gICAgfCAoICggRElGRl9UT0tFTiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQklOX0FMR19PUCBfIHwgVU5fQUxHX09QIF9cbiAgICAgICAgfCBTVEFURV9BTEdfT1AgXyB8IEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQUxHX1ZBUiBfIHwgSUYgXyApLFxuICAgICAgICBfICkgYXMgYScgLT5cbiAgICAgIGlmIGEgPT0gYScgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIFVOX0FMR19PUCAob3AsIGEnKSwgcG9zKVxuICB8IChESUZGX1RPS0VOIChhLCB0KSwgcG9zKSBhcyB4IC0+XG4gICAgKG1hdGNoXG4gICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGFcbiAgICAgd2l0aFxuICAgIHwgQ09OU1QgXywgXyAtPlxuICAgICAgKCogdGhlIGRlcml2YXRpdmUgb2YgYSBjb25zdGFudCBpcyB6ZXJvICopXG4gICAgICBDT05TVCBOYnIuemVybywgcG9zXG4gICAgfCAoICggRElGRl9UT0tFTiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQklOX0FMR19PUCBfIHwgVU5fQUxHX09QIF9cbiAgICAgICAgfCBJRiBfIHwgU1RBVEVfQUxHX09QIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IEFMR19WQVIgXyApLFxuICAgICAgICBfICkgYXMgYScgLT5cbiAgICAgIGlmIGEgPT0gYScgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIERJRkZfVE9LRU4gKGEnLCB0KSwgcG9zKVxuICB8IChESUZGX0tBUFBBX0lOU1RBTkNFIChhLCBtKSwgcG9zKSBhcyB4IC0+XG4gICAgKG1hdGNoXG4gICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGFcbiAgICAgd2l0aFxuICAgIHwgQ09OU1QgXywgXyAtPlxuICAgICAgKCogdGhlIGRlcml2YXRpdmUgb2YgYSBjb25zdGFudCBpcyB6ZXJvICopXG4gICAgICBDT05TVCBOYnIuemVybywgcG9zXG4gICAgfCAoICggRElGRl9UT0tFTiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQklOX0FMR19PUCBfIHwgVU5fQUxHX09QIF9cbiAgICAgICAgfCBTVEFURV9BTEdfT1AgXyB8IEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQUxHX1ZBUiBfIHwgSUYgXyApLFxuICAgICAgICBfICkgYXMgYScgLT5cbiAgICAgIGlmIGEgPT0gYScgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEnLCBtKSwgcG9zKVxuICB8IFNUQVRFX0FMR19PUCBPcGVyYXRvci5FTUFYX1ZBUiwgcG9zIC0+XG4gICAgKCBDT05TVFxuICAgICAgICAobWF0Y2ggbWF4X2V2ZW50cyB3aXRoXG4gICAgICAgIHwgU29tZSBuIC0+IE5ici5JIG5cbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAgICAgICAgICAgICAgIFwiW0VtYXhdIGNvbnN0YW50IGlzIGV2YWx1YXRlZCB0byBpbmZpbml0eVwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTmJyLkYgaW5maW5pdHkpLFxuICAgICAgcG9zIClcbiAgfCBTVEFURV9BTEdfT1AgT3BlcmF0b3IuVE1BWF9WQVIsIHBvcyAtPlxuICAgICggQ09OU1RcbiAgICAgICAgKG1hdGNoIG1heF90aW1lIHdpdGhcbiAgICAgICAgfCBTb21lIHQgLT4gTmJyLkYgdFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgICAgICAgICAgICAgICAgXCJbVG1heF0gY29uc3RhbnQgaXMgZXZhbHVhdGVkIHRvIGluZmluaXR5XCIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBOYnIuRiBpbmZpbml0eSksXG4gICAgICBwb3MgKVxuICB8ICggU1RBVEVfQUxHX09QXG4gICAgICAgICggT3BlcmF0b3IuQ1BVVElNRSB8IE9wZXJhdG9yLlRJTUVfVkFSIHwgT3BlcmF0b3IuRVZFTlRfVkFSXG4gICAgICAgIHwgT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIgKSxcbiAgICAgIF8gKSBhcyB4IC0+XG4gICAgeFxuICB8IChBTEdfVkFSIGksIHBvcykgYXMgeCAtPlxuICAgIGlmIExpc3QubWVtIGkgdXBkYXRlZF92YXJzIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHZhcnMuKGkpIHdpdGhcbiAgICAgIHwgXywgKCgoQ09OU1QgXyB8IEFMR19WQVIgXykgYXMgeSksIF8pIC0+IHksIHBvc1xuICAgICAgfCAoIF8sXG4gICAgICAgICAgKCAoIEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfIHwgU1RBVEVfQUxHX09QIF8gfCBLQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgICAgICB8IFRPS0VOX0lEIF8gfCBJRiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICB4XG4gICAgKVxuICB8ICgoS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfKSwgXykgYXMgeCAtPiB4XG4gIHwgSUYgKGNvbmQsIHllcywgbm8pLCBwb3MgLT5cbiAgICAobWF0Y2hcbiAgICAgICBwcm9wYWdhdGVfY29uc3RhbnRfYm9vbCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgICAgICAgfnZhcnMgY29uZFxuICAgICB3aXRoXG4gICAgfCBUUlVFLCBfIC0+XG4gICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgeWVzXG4gICAgfCBGQUxTRSwgXyAtPlxuICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIG5vXG4gICAgfCAoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKSBhcyBjb25kJyAtPlxuICAgICAgKCBJRlxuICAgICAgICAgICggY29uZCcsXG4gICAgICAgICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnNcbiAgICAgICAgICAgICAgfnZhcnMgeWVzLFxuICAgICAgICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgICAgICAgICAgIH52YXJzIG5vICksXG4gICAgICAgIHBvcyApKVxuXG5hbmQgcHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgPVxuICBmdW5jdGlvblxuICB8ICgoVFJVRSB8IEZBTFNFKSwgXykgYXMgeCAtPiB4XG4gIHwgVU5fQk9PTF9PUCAob3AsIGEpLCBwb3MgLT5cbiAgICAobWF0Y2hcbiAgICAgICAoIHByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgICAgICAgIH52YXJzIGEsXG4gICAgICAgICBvcCApXG4gICAgIHdpdGhcbiAgICB8IChUUlVFLCBfKSwgT3BlcmF0b3IuTk9UIC0+IEZBTFNFLCBwb3NcbiAgICB8IChGQUxTRSwgXyksIE9wZXJhdG9yLk5PVCAtPiBUUlVFLCBwb3NcbiAgICB8ICgoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKSBhcyBhJyksIF8gLT5cbiAgICAgIFVOX0JPT0xfT1AgKG9wLCBhJyksIHBvcylcbiAgfCBCSU5fQk9PTF9PUCAob3AsIGEsIGIpLCBwb3MgLT5cbiAgICAobWF0Y2hcbiAgICAgICAoIHByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgICAgICAgIH52YXJzIGEsXG4gICAgICAgICBvcCApXG4gICAgIHdpdGhcbiAgICB8IChUUlVFLCBfKSwgT3BlcmF0b3IuT1IgLT4gVFJVRSwgcG9zXG4gICAgfCAoRkFMU0UsIF8pLCBPcGVyYXRvci5BTkQgLT4gRkFMU0UsIHBvc1xuICAgIHwgKFRSVUUsIF8pLCBPcGVyYXRvci5BTkQgfCAoRkFMU0UsIF8pLCBPcGVyYXRvci5PUiAtPlxuICAgICAgcHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnNcbiAgICAgICAgYlxuICAgIHwgKCgoQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyB8IFVOX0JPT0xfT1AgXyksIF8pIGFzIGEnKSwgXyAtPlxuICAgICAgKG1hdGNoXG4gICAgICAgICAoIHByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgICAgICAgICAgfnZhcnMgYixcbiAgICAgICAgICAgb3AgKVxuICAgICAgIHdpdGhcbiAgICAgIHwgKFRSVUUsIF8pLCBPcGVyYXRvci5PUiAtPiBUUlVFLCBwb3NcbiAgICAgIHwgKEZBTFNFLCBfKSwgT3BlcmF0b3IuQU5EIC0+IEZBTFNFLCBwb3NcbiAgICAgIHwgKFRSVUUsIF8pLCBPcGVyYXRvci5BTkQgfCAoRkFMU0UsIF8pLCBPcGVyYXRvci5PUiAtPiBhJ1xuICAgICAgfCAoKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXykgYXMgYicpLCBfIC0+XG4gICAgICAgIEJJTl9CT09MX09QIChvcCwgYScsIGInKSwgcG9zKSlcbiAgfCBDT01QQVJFX09QIChvcCwgYSwgYiksIHBvcyAtPlxuICAgIGxldCBhJyA9XG4gICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgYVxuICAgIGluXG4gICAgbGV0IGInID1cbiAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBiXG4gICAgaW5cbiAgICAobWF0Y2ggYScsIGInIHdpdGhcbiAgICB8IChDT05TVCBuMSwgXyksIChDT05TVCBuMiwgXykgLT5cbiAgICAgIGlmIE5ici5vZl9jb21wYXJlX29wIG9wIG4xIG4yIHRoZW5cbiAgICAgICAgVFJVRSwgcG9zXG4gICAgICBlbHNlXG4gICAgICAgIEZBTFNFLCBwb3NcbiAgICB8ICggKCAoIERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IERJRkZfVE9LRU4gXyB8IEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfXG4gICAgICAgICAgfCBTVEFURV9BTEdfT1AgXyB8IEFMR19WQVIgXyB8IEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQ09OU1QgX1xuICAgICAgICAgIHwgSUYgXyApLFxuICAgICAgICAgIF8gKSxcbiAgICAgICAgXyApIC0+XG4gICAgICBDT01QQVJFX09QIChvcCwgYScsIGInKSwgcG9zKVxuXG5sZXQgcmVjIGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSAoKGluX3QsIF8sIF8sIGRlcHMpIGFzIHZhcnNfZGVwcykgPSBmdW5jdGlvblxuICB8IEJJTl9BTEdfT1AgKF8sIGEsIGIpLCBfIC0+XG4gICAgaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBhXG4gICAgfHwgaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBiXG4gIHwgKFVOX0FMR19PUCAoXywgYSkgfCBESUZGX1RPS0VOIChhLCBfKSB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEsIF8pKSwgXyAtPlxuICAgIGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYVxuICB8IChLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8pLCBfIC0+IGZhbHNlXG4gIHwgU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRJTUVfVkFSLCBfIC0+IHRydWVcbiAgfCBTVEFURV9BTEdfT1AgT3BlcmF0b3IuRVZFTlRfVkFSLCBfIC0+IG5vdCBvbmx5X3RpbWVcbiAgfCAoIFNUQVRFX0FMR19PUFxuICAgICAgICAoIE9wZXJhdG9yLkNQVVRJTUUgfCBPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUiB8IE9wZXJhdG9yLkVNQVhfVkFSXG4gICAgICAgIHwgT3BlcmF0b3IuVE1BWF9WQVIgKSxcbiAgICAgIF8gKSAtPlxuICAgIGZhbHNlXG4gIHwgQUxHX1ZBUiBpLCBfIC0+XG4gICAgbGV0IHJlYyBhdXggaiA9XG4gICAgICBPcGVyYXRvci5EZXBTZXQubWVtIChPcGVyYXRvci5BTEcgaikgaW5fdFxuICAgICAgfHwgT3BlcmF0b3IuRGVwU2V0LmV4aXN0c1xuICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IE9wZXJhdG9yLkFMRyBrIC0+IGF1eCBrXG4gICAgICAgICAgICAgfCBPcGVyYXRvci5SVUxFIF8gfCBPcGVyYXRvci5NT0RJRiBfIC0+IGZhbHNlKVxuICAgICAgICAgICBkZXBzLihqKVxuICAgIGluXG4gICAgYXV4IGlcbiAgfCBJRiAoY29uZCwgeWVzLCBubyksIF8gLT5cbiAgICBib29sX2hhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgY29uZFxuICAgIHx8IGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgeWVzXG4gICAgfHwgaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBub1xuXG5hbmQgYm9vbF9oYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzID0gZnVuY3Rpb25cbiAgfCAoVFJVRSB8IEZBTFNFKSwgXyAtPiBmYWxzZVxuICB8IENPTVBBUkVfT1AgKF8sIGEsIGIpLCBfIC0+XG4gICAgaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBhXG4gICAgfHwgaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBiXG4gIHwgQklOX0JPT0xfT1AgKF8sIGEsIGIpLCBfIC0+XG4gICAgYm9vbF9oYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGFcbiAgICB8fCBib29sX2hhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYlxuICB8IFVOX0JPT0xfT1AgKF8sIGEpLCBfIC0+IGJvb2xfaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBhXG5cbmxldCByZWMgaXNfZXF1YWxpdHlfdGVzdF90aW1lIHZhcnNfZGVwcyA9IGZ1bmN0aW9uXG4gIHwgVFJVRSB8IEZBTFNFIC0+IGZhbHNlXG4gIHwgVU5fQk9PTF9PUCAoT3BlcmF0b3IuTk9ULCAoYSwgXykpIC0+IGlzX2VxdWFsaXR5X3Rlc3RfdGltZSB2YXJzX2RlcHMgYVxuICB8IEJJTl9CT09MX09QIChfLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBpc19lcXVhbGl0eV90ZXN0X3RpbWUgdmFyc19kZXBzIGEgfHwgaXNfZXF1YWxpdHlfdGVzdF90aW1lIHZhcnNfZGVwcyBiXG4gIHwgQ09NUEFSRV9PUCAob3AsIGEsIGIpIC0+XG4gICAgbGV0IG9ubHlfdGltZSA9IHRydWUgaW5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuRVFVQUxcbiAgICAgIHdoZW4gaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBhXG4gICAgICAgICAgIHx8IGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYiAtPlxuICAgICAgdHJ1ZVxuICAgIHwgT3BlcmF0b3IuRVFVQUwgfCBPcGVyYXRvci5TTUFMTEVSIHwgT3BlcmF0b3IuR1JFQVRFUiB8IE9wZXJhdG9yLkRJRkYgLT5cbiAgICAgIGZhbHNlKVxuXG5sZXQgcmVjIG1hcF9vbl9taXh0dXJlIGYgPSBmdW5jdGlvblxuICB8IEtBUFBBX0lOU1RBTkNFIGksIHAgLT4gZiBpLCBwXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfLCBfIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIFwiQWxnX2V4cHIubWFwX29uX21peHR1cmUgZG9lc24ndCBrbm93IHdoYXQgdG8gZG8gb2YgRElGRl9LQVBQQV9JTlNUQU5DRVwiXG4gIHwgKENPTlNUIF8sIF8pIGFzIHggLT4geFxuICB8IChBTEdfVkFSIF8sIF8pIGFzIHggLT4geFxuICB8IChUT0tFTl9JRCBfLCBfKSBhcyB4IC0+IHhcbiAgfCBESUZGX1RPS0VOIChhLCBpKSwgcCAtPiBESUZGX1RPS0VOIChtYXBfb25fbWl4dHVyZSBmIGEsIGkpLCBwXG4gIHwgKFNUQVRFX0FMR19PUCBfLCBfKSBhcyB4IC0+IHhcbiAgfCBCSU5fQUxHX09QIChvLCB4LCB5KSwgcCAtPlxuICAgIEJJTl9BTEdfT1AgKG8sIG1hcF9vbl9taXh0dXJlIGYgeCwgbWFwX29uX21peHR1cmUgZiB5KSwgcFxuICB8IFVOX0FMR19PUCAobywgeCksIHAgLT4gVU5fQUxHX09QIChvLCBtYXBfb25fbWl4dHVyZSBmIHgpLCBwXG4gIHwgSUYgKGIsIHgsIHkpLCBwIC0+XG4gICAgSUYgKG1hcF9ib29sX29uX21peHR1cmUgZiBiLCBtYXBfb25fbWl4dHVyZSBmIHgsIG1hcF9vbl9taXh0dXJlIGYgeSksIHBcblxuYW5kIG1hcF9ib29sX29uX21peHR1cmUgZiA9IGZ1bmN0aW9uXG4gIHwgKFRSVUUsIF8pIGFzIHggLT4geFxuICB8IChGQUxTRSwgXykgYXMgeCAtPiB4XG4gIHwgQklOX0JPT0xfT1AgKG8sIHgsIHkpLCBwIC0+XG4gICAgQklOX0JPT0xfT1AgKG8sIG1hcF9ib29sX29uX21peHR1cmUgZiB4LCBtYXBfYm9vbF9vbl9taXh0dXJlIGYgeSksIHBcbiAgfCBVTl9CT09MX09QIChvLCB4KSwgcCAtPiBVTl9CT09MX09QIChvLCBtYXBfYm9vbF9vbl9taXh0dXJlIGYgeCksIHBcbiAgfCBDT01QQVJFX09QIChvLCB4LCB5KSwgcCAtPlxuICAgIENPTVBBUkVfT1AgKG8sIG1hcF9vbl9taXh0dXJlIGYgeCwgbWFwX29uX21peHR1cmUgZiB5KSwgcFxuXG5sZXQgcmVjIGZvbGRfb25fbWl4dHVyZSBmIHggPSBmdW5jdGlvblxuICB8IEtBUFBBX0lOU1RBTkNFIGksIF8gLT4gZiB4IGlcbiAgfCBESUZGX0tBUFBBX0lOU1RBTkNFIF8sIF8gLT5cbiAgICBmYWlsd2l0aFxuICAgICAgXCJBbGdfZXhwci5mb2xkX29uX21peHR1cmUgZG9lc24ndCBrbm93IHdoYXQgdG8gZG8gb2YgRElGRl9LQVBQQV9JTlNUQU5DRVwiXG4gIHwgQ09OU1QgXywgXyAtPiB4XG4gIHwgQUxHX1ZBUiBfLCBfIC0+IHhcbiAgfCBUT0tFTl9JRCBfLCBfIC0+IHhcbiAgfCBESUZGX1RPS0VOIChhLCBfKSwgXyAtPiBmb2xkX29uX21peHR1cmUgZiB4IGFcbiAgfCBTVEFURV9BTEdfT1AgXywgXyAtPiB4XG4gIHwgQklOX0FMR19PUCAoXywgYSwgYiksIF8gLT4gZm9sZF9vbl9taXh0dXJlIGYgKGZvbGRfb25fbWl4dHVyZSBmIHggYSkgYlxuICB8IFVOX0FMR19PUCAoXywgYSksIF8gLT4gZm9sZF9vbl9taXh0dXJlIGYgeCBhXG4gIHwgSUYgKGIsIHUsIHYpLCBfIC0+XG4gICAgZm9sZF9ib29sX29uX21peHR1cmUgZiAoZm9sZF9vbl9taXh0dXJlIGYgKGZvbGRfb25fbWl4dHVyZSBmIHggdSkgdikgYlxuXG5hbmQgZm9sZF9ib29sX29uX21peHR1cmUgZiB4ID0gZnVuY3Rpb25cbiAgfCBUUlVFLCBfIC0+IHhcbiAgfCBGQUxTRSwgXyAtPiB4XG4gIHwgQklOX0JPT0xfT1AgKF8sIGEsIGIpLCBfIC0+XG4gICAgZm9sZF9ib29sX29uX21peHR1cmUgZiAoZm9sZF9ib29sX29uX21peHR1cmUgZiB4IGEpIGJcbiAgfCBVTl9CT09MX09QIChfLCBhKSwgXyAtPiBmb2xkX2Jvb2xfb25fbWl4dHVyZSBmIHggYVxuICB8IENPTVBBUkVfT1AgKF8sIGEsIGIpLCBfIC0+IGZvbGRfb25fbWl4dHVyZSBmIChmb2xkX29uX21peHR1cmUgZiB4IGEpIGJcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCAoQklOX0FMR19PUCAob3BhLCBhMSwgYTIpLCBfKSwgKEJJTl9BTEdfT1AgKG9wYiwgYjEsIGIyKSwgXykgLT5cbiAgICBvcGEgPSBvcGIgJiYgZXF1YWwgYTEgYjEgJiYgZXF1YWwgYTIgYjJcbiAgfCAoIChCSU5fQUxHX09QIF8sIF8pLFxuICAgICAgKCAoIFVOX0FMR19PUCBfIHwgU1RBVEVfQUxHX09QIF8gfCBBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfICksXG4gICAgICAgIF8gKSApXG4gIHwgKCAoICggVU5fQUxHX09QIF8gfCBTVEFURV9BTEdfT1AgXyB8IEFMR19WQVIgXyB8IEtBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgfCBUT0tFTl9JRCBfIHwgQ09OU1QgXyB8IElGIF8gKSxcbiAgICAgICAgXyApLFxuICAgICAgKEJJTl9BTEdfT1AgXywgXykgKSAtPlxuICAgIGZhbHNlXG4gIHwgKFVOX0FMR19PUCAob3BhLCBhMSksIF8pLCAoVU5fQUxHX09QIChvcGIsIGIxKSwgXykgLT5cbiAgICBvcGEgPSBvcGIgJiYgZXF1YWwgYTEgYjFcbiAgfCAoIChVTl9BTEdfT1AgXywgXyksXG4gICAgICAoICggU1RBVEVfQUxHX09QIF8gfCBBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF9cbiAgICAgICAgfCBJRiBfICksXG4gICAgICAgIF8gKSApXG4gIHwgKCAoICggU1RBVEVfQUxHX09QIF8gfCBBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF9cbiAgICAgICAgfCBJRiBfICksXG4gICAgICAgIF8gKSxcbiAgICAgIChVTl9BTEdfT1AgXywgXykgKSAtPlxuICAgIGZhbHNlXG4gIHwgKFNUQVRFX0FMR19PUCBvcGEsIF8pLCAoU1RBVEVfQUxHX09QIG9wYiwgXykgLT4gb3BhID0gb3BiXG4gIHwgKCAoU1RBVEVfQUxHX09QIF8sIF8pLFxuICAgICAgKChBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfKSwgXykgKVxuICB8ICggKChBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfKSwgXyksXG4gICAgICAoU1RBVEVfQUxHX09QIF8sIF8pICkgLT5cbiAgICBmYWxzZVxuICB8IChBTEdfVkFSIGlkMSwgXyksIChBTEdfVkFSIGlkMiwgXykgLT4gaWQxID0gaWQyXG4gIHwgKEFMR19WQVIgXywgXyksICgoS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyksIF8pXG4gIHwgKChLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfKSwgXyksIChBTEdfVkFSIF8sIF8pIC0+XG4gICAgZmFsc2VcbiAgfCAoS0FQUEFfSU5TVEFOQ0UgbWl4MSwgXyksIChLQVBQQV9JTlNUQU5DRSBtaXgyLCBfKSAtPiBtaXgxID0gbWl4MlxuICB8IChLQVBQQV9JTlNUQU5DRSBfLCBfKSwgKChUT0tFTl9JRCBfIHwgQ09OU1QgXyB8IElGIF8pLCBfKVxuICB8ICgoVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfKSwgXyksIChLQVBQQV9JTlNUQU5DRSBfLCBfKSAtPlxuICAgIGZhbHNlXG4gIHwgKFRPS0VOX0lEIGlkMSwgXyksIChUT0tFTl9JRCBpZDIsIF8pIC0+IGlkMSA9IGlkMlxuICB8IChUT0tFTl9JRCBfLCBfKSwgKChDT05TVCBfIHwgSUYgXyksIF8pXG4gIHwgKChDT05TVCBfIHwgSUYgXyksIF8pLCAoVE9LRU5fSUQgXywgXykgLT5cbiAgICBmYWxzZVxuICB8IChDT05TVCBjMSwgXyksIChDT05TVCBjMiwgXykgLT4gTmJyLmlzX2VxdWFsIGMxIGMyXG4gIHwgKENPTlNUIF8sIF8pLCAoSUYgXywgXykgfCAoSUYgXywgXyksIChDT05TVCBfLCBfKSAtPiBmYWxzZVxuICB8IChJRiAoY29uZGEsIGExLCBhMiksIF8pLCAoSUYgKGNvbmRiLCBiMSwgYjIpLCBfKSAtPlxuICAgIGVxdWFsX2Jvb2wgY29uZGEgY29uZGIgJiYgZXF1YWwgYTEgYjEgJiYgZXF1YWwgYTIgYjJcbiAgfCAoKERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyksIF8pLCBfXG4gIHwgXywgKChESUZGX1RPS0VOIF8gfCBESUZGX0tBUFBBX0lOU1RBTkNFIF8pLCBfKSAtPlxuICAgIGFzc2VydCBmYWxzZVxuXG5hbmQgZXF1YWxfYm9vbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCAoVFJVRSwgXyksIChUUlVFLCBfKSAtPiB0cnVlXG4gIHwgKFRSVUUsIF8pLCAoKEZBTFNFIHwgQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyB8IFVOX0JPT0xfT1AgXyksIF8pXG4gIHwgKChGQUxTRSB8IEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKSwgKFRSVUUsIF8pIC0+XG4gICAgZmFsc2VcbiAgfCAoRkFMU0UsIF8pLCAoRkFMU0UsIF8pIC0+IHRydWVcbiAgfCAoRkFMU0UsIF8pLCAoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKVxuICB8ICgoQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyB8IFVOX0JPT0xfT1AgXyksIF8pLCAoRkFMU0UsIF8pIC0+XG4gICAgZmFsc2VcbiAgfCAoVU5fQk9PTF9PUCAob3BhLCBhKSwgXyksIChVTl9CT09MX09QIChvcGIsIGIpLCBfKSAtPlxuICAgIG9wYSA9IG9wYiAmJiBlcXVhbF9ib29sIGEgYlxuICB8IChVTl9CT09MX09QIF8sIF8pLCAoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8pLCBfKVxuICB8ICgoQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyksIF8pLCAoVU5fQk9PTF9PUCBfLCBfKSAtPlxuICAgIGZhbHNlXG4gIHwgKEJJTl9CT09MX09QIChvcGEsIGExLCBhMiksIF8pLCAoQklOX0JPT0xfT1AgKG9wYiwgYjEsIGIyKSwgXykgLT5cbiAgICBvcGEgPSBvcGIgJiYgZXF1YWxfYm9vbCBhMSBiMSAmJiBlcXVhbF9ib29sIGEyIGIyXG4gIHwgKEJJTl9CT09MX09QIF8sIF8pLCAoQ09NUEFSRV9PUCBfLCBfKSB8IChDT01QQVJFX09QIF8sIF8pLCAoQklOX0JPT0xfT1AgXywgXylcbiAgICAtPlxuICAgIGZhbHNlXG4gIHwgKENPTVBBUkVfT1AgKG9wYSwgYTEsIGEyKSwgXyksIChDT01QQVJFX09QIChvcGIsIGIxLCBiMiksIF8pIC0+XG4gICAgb3BhID0gb3BiICYmIGVxdWFsIGExIGIxICYmIGVxdWFsIGEyIGIyXG4iLCIoKipcbiAgKiBjb250YWN0X21hcC5tbFxuICAqIG9wZW5rYXBwYVxuICAqIErDqXLDtG1lIEZlcmV0ICYgTHkgS2ltIFF1eWVuLCBwcm9qZWN0IEFudGlxdWUsIElOUklBIFBhcmlzXG4gICpcbiAgKiBDcmVhdGlvbjogMjAxNywgdGhlIDIzcmQgb2YgSnVuZVxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SnVsIDA1IDIwMTc+XG4gICpcbiAgKiBDb21wdXRlIHN0cm9uZ2x5IGNvbm5lY3RlZCBjb21wb25lbnQgaW4gY29udGFjdCBtYXBcbiAgKlxuICAqIENvcHlyaWdodCAyMDEwLDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNSwyMDE2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZVxuICAqIGVuIEluZm9ybWF0aXF1ZSBldCBlbiBBdXRvbWF0aXF1ZS5cbiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgdCA9IChNb2RzLkludFNldC50ICogTW9kcy5JbnQyU2V0LnQpIGFycmF5IGFycmF5XG5cbmxldCB0b195b2pzb24gYSA9XG4gIGxldCBpbnRsc190b19qc29uIGEgPVxuICAgIGBMaXN0IChNb2RzLkludFNldC5mb2xkIChmdW4gYiBhY2MgLT4gYEludCBiIDo6IGFjYykgYSBbXSlcbiAgaW5cbiAgbGV0IHBhaXJsc190b19qc29uIGEgPVxuICAgIGBMaXN0XG4gICAgICAoTW9kcy5JbnQyU2V0LmZvbGRcbiAgICAgICAgIChmdW4gKGIsIGMpIGFjYyAtPiBgTGlzdCBbIGBJbnQgYjsgYEludCBjIF0gOjogYWNjKVxuICAgICAgICAgYSBbXSlcbiAgaW5cbiAgbGV0IGFycmF5X3RvX2pzb24gYSA9XG4gICAgYExpc3RcbiAgICAgIChBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgIChmdW4gYWNjIChhLCBiKSAtPiBgTGlzdCBbIGludGxzX3RvX2pzb24gYTsgcGFpcmxzX3RvX2pzb24gYiBdIDo6IGFjYylcbiAgICAgICAgIFtdIGEpXG4gIGluXG4gIGBMaXN0IChBcnJheS5mb2xkX2xlZnQgKGZ1biBhY2MgdCAtPiBhcnJheV90b19qc29uIHQgOjogYWNjKSBbXSBhKVxuXG5sZXQgb2ZfeW9qc29uIChhIDogWW9qc29uLkJhc2ljLnQpID1cbiAgbGV0IGludGxzX29mX2pzb24gYSA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgYEludCBiIC0+IE1vZHMuSW50U2V0LmFkZCBiIGFjY1xuICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiYmxhMVwiLCB4KSkpXG4gICAgICBNb2RzLkludFNldC5lbXB0eSBhXG4gIGluXG4gIGxldCBwYWlybHNfb2ZfanNvbiBhID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBgTGlzdCBbIGBJbnQgYjsgYEludCBjIF0gLT4gTW9kcy5JbnQyU2V0LmFkZCAoYiwgYykgYWNjXG4gICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJibGEyXCIsIHgpKSlcbiAgICAgIE1vZHMuSW50MlNldC5lbXB0eSBhXG4gIGluXG4gIGxldCBhcnJheV9vZl9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBMaXN0IGxzIC0+XG4gICAgICAobWF0Y2ggbHMgd2l0aFxuICAgICAgfCBbIGBMaXN0IGE7IGBMaXN0IGIgXSAtPiBpbnRsc19vZl9qc29uIGEsIHBhaXJsc19vZl9qc29uIGJcbiAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcImJsYTNcIiwgeCkpXG4gIGluXG4gIG1hdGNoIGEgd2l0aFxuICB8IGBMaXN0IGFycmF5MSAtPlxuICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBgTGlzdCBhcnJheTIgLT4gVG9vbHMuYXJyYXlfbWFwX29mX2xpc3QgYXJyYXlfb2ZfanNvbiBhcnJheTJcbiAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcImJsYTRcIiwgeCkpKVxuICAgICAgYXJyYXkxXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGNvbnRhY3QgbWFwXCIsIHgpKVxuXG5sZXQgcHJpbnRfa2FwcGEgfm5vQ291bnRlcnMgc2lncyBmIGMgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUBdXCJcbiAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBhZyBmIGludGYgLT5cbiAgICAgICAgIGlmIChub3QgKFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgYWcpKSB8fCBub0NvdW50ZXJzIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+JSVhZ2VudDpAICVhKEBbJWFAXSlAXVwiXG4gICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgIGFnXG4gICAgICAgICAgICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gcyBmIChpcywgbHMpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBTaWduYXR1cmUuc2l0ZV9pc19jb3VudGVyIHNpZ3MgYWcgcyAmJiBub3Qgbm9Db3VudGVycyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhJWFAXVwiXG4gICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWcpXG4gICAgICAgICAgICAgICAgICAgICAgc1xuICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfY291bnRlciBzaWdzIGFnKVxuICAgICAgICAgICAgICAgICAgICAgIHNcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEldCV0QF1cIlxuICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnKVxuICAgICAgICAgICAgICAgICAgICAgIHNcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCAoTW9kcy5JbnRTZXQuaXNfZW1wdHkgaXMpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIntAWyVhQF19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHAuc2V0IE1vZHMuSW50U2V0LmVsZW1lbnRzIFBwLnNwYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnIHMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IChNb2RzLkludDJTZXQuaXNfZW1wdHkgbHMpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkAsW0BbJWFAXV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcC5zZXQgTW9kcy5JbnQyU2V0LmVsZW1lbnRzIFBwLnNwYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBmIChhZCwgc2QpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbHMpKSlcbiAgICAgICAgICAgICBpbnRmKSlcbiAgICBjXG5cbmxldCBjdXRfYXQgaSBzJyBsID1cbiAgbGV0IHJlYyBhdXhfY3V0X2F0IG8gPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgKCgoaiwgcyksIF8pIGFzIGgpIDo6IHQgLT5cbiAgICAgIGlmIGkgPSBqIHRoZW5cbiAgICAgICAgaWYgcyA+PSBzJyB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU29tZSAoaCA6OiBvKVxuICAgICAgZWxzZVxuICAgICAgICBhdXhfY3V0X2F0IChoIDo6IG8pIHRcbiAgaW5cbiAgYXV4X2N1dF9hdCBbXSBsXG5cbmxldCBnZXRfY3ljbGVzIGNvbnRhY3RfbWFwID1cbiAgbGV0IHJlYyBkZnMgKChrbm93biwgb3V0KSBhcyBhY2MpIHBhdGggaSBsYXN0X3MgPVxuICAgIGlmIE1vZHMuSW50U2V0Lm1lbSBpIGtub3duIHRoZW4gKFxuICAgICAgbWF0Y2ggY3V0X2F0IGkgbGFzdF9zIHBhdGggd2l0aFxuICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgfCBTb21lIHggLT4ga25vd24sIHggOjogb3V0XG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBrbm93bicgPSBNb2RzLkludFNldC5hZGQgaSBrbm93biBpblxuICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAoZnVuIHMgYWNjIChfLCBsKSAtPlxuICAgICAgICAgIGlmIHMgPSBsYXN0X3MgdGhlblxuICAgICAgICAgICAgYWNjXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTW9kcy5JbnQyU2V0LmZvbGRcbiAgICAgICAgICAgICAgKGZ1biAoKHR5LCBzJykgYXMgeCkgYWNjIC0+IGRmcyBhY2MgKCgoaSwgcyksIHgpIDo6IHBhdGgpIHR5IHMnKVxuICAgICAgICAgICAgICBsIGFjYylcbiAgICAgICAgKGtub3duJywgb3V0KSBjb250YWN0X21hcC4oaSlcbiAgICApXG4gIGluXG4gIGxldCByZWMgc2NhbiAoKGtub3duLCBvdXQpIGFzIGFjYykgaSA9XG4gICAgaWYgaSA8IDAgdGhlblxuICAgICAgb3V0XG4gICAgZWxzZVxuICAgICAgc2NhblxuICAgICAgICAoaWYgTW9kcy5JbnRTZXQubWVtIGkga25vd24gdGhlblxuICAgICAgICAgICBhY2NcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZGZzIGFjYyBbXSBpICgtMSkpXG4gICAgICAgIChwcmVkIGkpXG4gIGluXG4gIHNjYW4gKE1vZHMuSW50U2V0LmVtcHR5LCBbXSkgKEFycmF5Lmxlbmd0aCBjb250YWN0X21hcCAtIDEpXG5cbmxldCBwcmludF9jeWNsZXMgc2lncyBmb3JtIGNvbnRhY3RfbWFwID1cbiAgbGV0IG8gPSBnZXRfY3ljbGVzIGNvbnRhY3RfbWFwIGluXG4gIFBwLmxpc3QgUHAuc3BhY2VcbiAgICAoUHAubGlzdCBQcC5lbXB0eSAoZnVuIGYgKChhZywgcyksIChhZycsIHMnKSkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYS0lYS5cIlxuICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgIGFnXG4gICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnKVxuICAgICAgICAgICBzXG4gICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnJylcbiAgICAgICAgICAgcycpKVxuICAgIGZvcm0gb1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIzIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzaGFyaW5nX2xldmVsID0gTm9fc2hhcmluZyB8IENvbXBhdGlibGVfcGF0dGVybnMgfCBNYXhfc2hhcmluZ1xuXG5sZXQgc2hhcmluZ19sZXZlbF9vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJub19zaGFyaW5nXCIgLT4gTm9fc2hhcmluZ1xuICB8IGBTdHJpbmcgXCJjb21wYXRpYmxlX3BhdHRlcm5zXCIgLT4gQ29tcGF0aWJsZV9wYXR0ZXJuc1xuICB8IGBTdHJpbmcgXCJtYXhfc2hhcmluZ1wiIC0+IE1heF9zaGFyaW5nXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3Qgc2hhcmluZ19sZXZlbFwiLCB4KSlcblxubGV0IHdyaXRlX3NoYXJpbmdfbGV2ZWwgb2IgPSBmdW5jdGlvblxuICB8IE5vX3NoYXJpbmcgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYiBcIm5vX3NoYXJpbmdcIlxuICB8IENvbXBhdGlibGVfcGF0dGVybnMgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYiBcImNvbXBhdGlibGVfcGF0dGVybnNcIlxuICB8IE1heF9zaGFyaW5nIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgXCJtYXhfc2hhcmluZ1wiXG5cbmxldCBzdHJpbmdfb2Zfc2hhcmluZ19sZXZlbCA/bGVuOihfID0gMTAyNCkgPSBmdW5jdGlvblxuICB8IE5vX3NoYXJpbmcgLT4gXCJcXFwibm9fc2hhcmluZ1xcXCJcIlxuICB8IENvbXBhdGlibGVfcGF0dGVybnMgLT4gXCJcXFwiY29tcGF0aWJsZV9wYXR0ZXJuc1xcXCJcIlxuICB8IE1heF9zaGFyaW5nIC0+IFwiXFxcIm1heF9zaGFyaW5nXFxcIlwiXG5cbmxldCByZWFkX3NoYXJpbmdfbGV2ZWwgcCBsYiA9XG4gIHNoYXJpbmdfbGV2ZWxfb2ZfeW9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHAgbGIpXG5cbmxldCBzaGFyaW5nX2xldmVsX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaGFyaW5nX2xldmVsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbnR5cGUgbGluayA9IFVuU3BlYyB8IEZyZWUgfCBMaW5rIG9mIGludCAqIGludCAgKCoqIG5vZGVfaWQsIHNpdGVfaWQgKilcblxudHlwZSBjYyA9IHtcbiAgbm9kZXNfYnlfdHlwZTogaW50IGxpc3QgYXJyYXk7XG4gIG5vZGVzOiAobGluayAqIGludCkgYXJyYXkgTW9kcy5JbnRNYXAudDtcbiAgKCpwYXR0ZXJuIGdyYXBoIGlkIC0+IFt8Li4uIChsaW5rX2osc3RhdGVfaikuLi58XSBpLmUgYWdlbnRfaWQgb24gc2l0ZV9qIGhhc1xuICAgIGEgbGluayBsaW5rX2ogYW5kIGludGVybmFsIHN0YXRlIHN0YXRlX2ogKC0xIG1lYW5zIGFueSkgKilcbiAgcmVjb2duX25hdjogTmF2aWdhdGlvbi5hYnN0cmFjdCBOYXZpZ2F0aW9uLnQ7XG59XG4oKiogVGhlIGxpbmsgb2Ygc2l0ZSBrIG9mIG5vZGUgaSBpcyBbZnN0IG5vZGVzKGkpLihrKV0uXG5cbiAgICBUaGUgaW50ZXJuYWwgc3RhdGUgb2Ygc2l0ZSBrIG9mIG5vZGUgaSBpcyBbc25kIG5vZGVzKGkpLihrKV0uIEFcbiAgICBuZWdhdGl2ZSBudW1iZXIgbWVhbnMgVW5TcGVjLiAqKVxuXG50eXBlIHQgPSBjY1xudHlwZSBpZCA9IGludFxuXG5sZXQgZGVidWdfcHJpbnRfaWQgZm10IGlkID0gRm9ybWF0LmZwcmludGYgZm10IFwiJWRcIiBpZFxubGV0IHNpemVfb2ZfY2MgY2MgPSBNb2RzLkludE1hcC5zaXplIGNjLm5vZGVzXG5sZXQgY29tcGFyZV9jYW5vbmljYWxzIGNjIGNjJyA9IE1vZHMuaW50X2NvbXBhcmUgY2MgY2MnXG5sZXQgaXNfZXF1YWxfY2Fub25pY2FscyBjYyBjYycgPSBjb21wYXJlX2Nhbm9uaWNhbHMgY2MgY2MnID0gMFxubGV0IGhhc2hfcHJpbWUgPSAyOVxuXG5sZXQgY29hcnNlX2hhc2ggY2MgPVxuICBsZXQgcGx1c19pbnRlcm5hbCBhY2MgcyBpID1cbiAgICBpZiBpIDwgMCB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlXG4gICAgICBUb29scy5jYW50b3JfcGFpcmluZyAoc3VjYyBzKSAoc3VjYyBpKSArIGFjY1xuICBpblxuICBsZXQgbm9kZV9zaGFwZSA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBuIGUgYWNjIC0+XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAoZnVuIHMgYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IFVuU3BlYywgaSAtPiBwbHVzX2ludGVybmFsIGFjYyBzIGlcbiAgICAgICAgICAgIHwgRnJlZSwgaSAtPiBwbHVzX2ludGVybmFsICgzICsgKHMgKiAzKSArIGFjYykgcyBpXG4gICAgICAgICAgICB8IExpbmsgKG4nLCBzJyksIGkgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYycgPSBwbHVzX2ludGVybmFsIGFjYyBzIGkgaW5cbiAgICAgICAgICAgICAgbGV0IGV4dHJhID0gVG9vbHMuY2FudG9yX3BhaXJpbmcgKDEgKyBtaW4gcyBzJykgKDEgKyBtYXggcyBzJykgaW5cbiAgICAgICAgICAgICAgaWYgKG4gPSBuJyAmJiBzIDwgcycpIHx8IG4gPCBuJyB0aGVuXG4gICAgICAgICAgICAgICAgKGV4dHJhICogNykgKyBhY2MnXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBhY2MnKVxuICAgICAgICAgIGFjYyBlKVxuICAgICAgY2Mubm9kZXMgMFxuICBpblxuICBBcnJheS5mb2xkX3JpZ2h0XG4gICAgKGZ1biBsIGFjYyAtPiBMaXN0Lmxlbmd0aCBsICsgKGhhc2hfcHJpbWUgKiBhY2MpKVxuICAgIGNjLm5vZGVzX2J5X3R5cGUgbm9kZV9zaGFwZVxuXG5sZXQgaWRfdG9feW9qc29uIGNjID0gYEludCBjY1xuXG5sZXQgaWRfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgSW50IGNjIC0+IGNjXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBwYXR0ZXJuIGlkXCIsIHgpKVxuXG5tb2R1bGUgU2V0ID0gTW9kcy5JbnRTZXRcbm1vZHVsZSBNYXAgPSBNb2RzLkludE1hcFxuXG5tb2R1bGUgT2JzTWFwID0gc3RydWN0XG4gIGluY2x1ZGUgTW9kcy5EeW5BcnJheVxuXG4gIGxldCBkdW1teSB4ID0gbWFrZSAwIHhcbmVuZFxuXG5sZXQgZW1wdHlfY2Mgc2lncyA9XG4gIGxldCBuYnQgPSBBcnJheS5tYWtlIChTaWduYXR1cmUuc2l6ZSBzaWdzKSBbXSBpblxuICB7IG5vZGVzX2J5X3R5cGUgPSBuYnQ7IHJlY29nbl9uYXYgPSBbXTsgbm9kZXMgPSBNb2RzLkludE1hcC5lbXB0eSB9XG5cbmxldCByYXdfZmluZF90eSB0eXMgaWQgPVxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBhc3NlcnQgKGkgPj0gMCk7XG4gICAgaWYgTGlzdC5tZW0gaWQgdHlzLihpKSB0aGVuXG4gICAgICBpXG4gICAgZWxzZVxuICAgICAgYXV4IChwcmVkIGkpXG4gIGluXG4gIGF1eCAoQXJyYXkubGVuZ3RoIHR5cyAtIDEpXG5cbmxldCBmaW5kX3R5IGNjIGlkID0gcmF3X2ZpbmRfdHkgY2Mubm9kZXNfYnlfdHlwZSBpZFxuXG5sZXQgYWRkX29yaWdpbiBkZXBzID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGRlcHNcbiAgfCBTb21lIHggLT4gT3BlcmF0b3IuRGVwU2V0LmFkZCB4IGRlcHNcblxubGV0IHJlY29uc3RydWN0aW9uX25hdmlnYXRpb24gY2MgPSBjYy5yZWNvZ25fbmF2XG5cbigqKiBFcnJvcnMgKilcbmxldCBhbHJlYWR5X3NwZWNpZmllZCA/c2lncyB4IGkgPVxuICBFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIlNpdGUgJWEgb2YgYWdlbnQgJWEgYWxyZWFkeSBzcGVjaWZpZWRcIlxuICAgICAgICAgIChBZ2VudC5wcmludF9zaXRlID9zaWdzIHgpIGlcbiAgICAgICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6ZmFsc2UpXG4gICAgICAgICAgeCkpXG5cbmxldCBkYW5nbGluZ19ub2RlIH5zaWdzIHR5cyB4ID1cbiAgRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJDYW5ub3QgcHJvY2VlZCBiZWNhdXNlIGxhc3QgZGVjbGFyZWQgYWdlbnQgJWEvKiVpKi8lYVwiXG4gICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgIChyYXdfZmluZF90eSB0eXMgeCkgeCBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG4gICAgICAgICAgXCIgaXMgbm90IGxpbmtlZCB0byBpdHMgY29ubmVjdGVkIGNvbXBvbmVudC5cIikpXG5cbmxldCBpZGVudGl0eV9pbmplY3Rpb24gY2MgPVxuICBSZW5hbWluZy5pZGVudGl0eVxuICAgIChBcnJheS5mb2xkX2xlZnQgKGZ1biB4IHkgLT4gTGlzdC5yZXZfYXBwZW5kIHkgeCkgW10gY2Mubm9kZXNfYnlfdHlwZSlcblxuKCoqIHBpY2sgYSByb290IGluIHRoZSBDQy4gQW55IHJvb3Qgd29ya3MuXG4gICAgSW4gdGhpcyBjYXNlIHBpY2sgdGhlIGZpcnN0IG5vZGUgb2Ygc21hbGxlc3QgdHlwZSAqKVxubGV0IHJhd19maW5kX3Jvb3Qgbm9kZXNfYnlfdHlwZSA9XG4gIGxldCByZWMgYXV4IHR5ID1cbiAgICBpZiB0eSA9IEFycmF5Lmxlbmd0aCBub2Rlc19ieV90eXBlIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5vZGVzX2J5X3R5cGUuKHR5KSB3aXRoXG4gICAgICB8IFtdIC0+IGF1eCAoc3VjYyB0eSlcbiAgICAgIHwgaCA6OiBfIC0+IFNvbWUgKGgsIHR5KVxuICAgIClcbiAgaW5cbiAgYXV4IDBcblxubGV0IGZpbmRfcm9vdCBjYyA9IHJhd19maW5kX3Jvb3QgY2Mubm9kZXNfYnlfdHlwZVxuXG5sZXQgd2VpZ2h0IGNjID1cbiAgbGV0IGxpbmtzLCBkb3VibGUgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gXyAtPlxuICAgICAgICBBcnJheS5mb2xkX3JpZ2h0IChmdW4gKGksIHMpIChsLCBkKSAtPlxuICAgICAgICAgICAgaWYgaSA8PiBVblNwZWMgdGhlblxuICAgICAgICAgICAgICAoIHN1Y2NcbiAgICAgICAgICAgICAgICAgIChpZiBzIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgIHN1Y2MgbFxuICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIGwpLFxuICAgICAgICAgICAgICAgIGlmIGkgPD4gRnJlZSB0aGVuXG4gICAgICAgICAgICAgICAgICBzdWNjIGRcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBkIClcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKCAoaWYgcyA8PiAtMSB0aGVuXG4gICAgICAgICAgICAgICAgICAgc3VjYyBsXG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICBsKSxcbiAgICAgICAgICAgICAgICBkICkpKVxuICAgICAgY2Mubm9kZXMgKDAsIDApXG4gIGluXG4gIGxpbmtzIC0gKGRvdWJsZSAvIDIpXG5cbmxldCBhcmVfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSA/cG9zc2liaWxpdGllcyB+c3RyaWN0IHJvb3QxIGNjMSByb290MiBjYzIgPVxuICBsZXQgdGljayB4ID1cbiAgICBtYXRjaCBwb3NzaWJpbGl0aWVzIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgcyAtPiBzIDo9IE1vZHMuSW50MlNldC5yZW1vdmUgeCAhc1xuICBpblxuICBsZXQgcmVjIGF1eCBhdF9sZWFzdF9vbmVfZWRnZSByZW5hbWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGlmIGF0X2xlYXN0X29uZV9lZGdlIHRoZW5cbiAgICAgICAgU29tZSByZW5hbWUsIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZSwgTm9uZVxuICAgIHwgKChvLCBwKSBhcyBwYWlyKSA6OiB0b2RvcyAtPlxuICAgICAgbGV0ICgpID0gdGljayBwYWlyIGluXG4gICAgICAobWF0Y2hcbiAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdDJpXG4gICAgICAgICAgIChmdW4gaSBjIChseCwgaXgpIChseSwgaXkpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lLCBfIC0+IGNcbiAgICAgICAgICAgICB8IFNvbWUgKG9uZV9lZGdlLCB0b2RvLCByZW4pLCBfIC0+XG4gICAgICAgICAgICAgICBpZiAoKG5vdCBzdHJpY3QpICYmIChpeCA9IC0xIHx8IGl5ID0gLTEpKSB8fCBpeCA9IGl5IHRoZW4gKFxuICAgICAgICAgICAgICAgICBtYXRjaCBseCwgbHkgd2l0aFxuICAgICAgICAgICAgICAgICB8IExpbmsgXywgRnJlZSB8IEZyZWUsIExpbmsgXyAtPlxuICAgICAgICAgICAgICAgICAgIE5vbmUsIFNvbWUgKGNjMSwgbywgY2MyLCBwLCBpLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAgfCBVblNwZWMsIEZyZWUgfCBGcmVlLCBVblNwZWMgfCBMaW5rIF8sIFVuU3BlYyB8IFVuU3BlYywgTGluayBfXG4gICAgICAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgICAgICBpZiBzdHJpY3QgdGhlblxuICAgICAgICAgICAgICAgICAgICAgTm9uZSwgU29tZSAoY2MxLCBvLCBjYzIsIHAsIGksIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIFNvbWUgKG9uZV9lZGdlIHx8IChpeCA8PiAtMSAmJiBpeCA9IGl5KSwgdG9kbywgcmVuKSwgTm9uZVxuICAgICAgICAgICAgICAgICB8IFVuU3BlYywgVW5TcGVjIC0+XG4gICAgICAgICAgICAgICAgICAgU29tZSAob25lX2VkZ2UgfHwgKGl4IDw+IC0xICYmIGl4ID0gaXkpLCB0b2RvLCByZW4pLCBOb25lXG4gICAgICAgICAgICAgICAgIHwgRnJlZSwgRnJlZSAtPiBTb21lICh0cnVlLCB0b2RvLCByZW4pLCBOb25lXG4gICAgICAgICAgICAgICAgIHwgTGluayAobjEsIHMxKSwgTGluayAobjIsIHMyKSAtPlxuICAgICAgICAgICAgICAgICAgIGlmIHMxID0gczIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgaWYgUmVuYW1pbmcubWVtIG4xIHJlbiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgIGlmIFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIHJlbiBuMSA9IG4yIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBTb21lICh0cnVlLCB0b2RvLCByZW4pLCBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBTb21lIChjYzEsIG8sIGNjMiwgcCwgaSwgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIG4xIG4yIHJlbiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lLCBTb21lIChjYzEsIG8sIGNjMiwgcCwgaSwgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSByJyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbmRfdHkgY2MxIG4xID0gZmluZF90eSBjYzIgbjIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSAodHJ1ZSwgKG4xLCBuMikgOjogdG9kbywgcicpLCBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgU29tZSAoY2MxLCBvLCBjYzIsIHAsIGksIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIE5vbmUsIFNvbWUgKGNjMSwgbywgY2MyLCBwLCBpLCBmYWxzZSlcbiAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICBOb25lLCBTb21lIChjYzEsIG8sIGNjMiwgcCwgaSwgdHJ1ZSkpXG4gICAgICAgICAgIChTb21lIChhdF9sZWFzdF9vbmVfZWRnZSwgdG9kb3MsIHJlbmFtZSksIE5vbmUpXG4gICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBvIGNjMS5ub2RlcylcbiAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHAgY2MyLm5vZGVzKVxuICAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSwgY29uZmxpY3QgLT4gTm9uZSwgY29uZmxpY3RcbiAgICAgIHwgU29tZSAob25lX2VkZ2VzJywgdG9kb3MnLCByZW4nKSwgXyAtPiBhdXggb25lX2VkZ2VzJyByZW4nIHRvZG9zJylcbiAgaW5cbiAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIHJvb3QxIHJvb3QyIChSZW5hbWluZy5lbXB0eSAoKSkgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSByIC0+XG4gICAgbGV0IGFfc2luZ2xlX2FnZW50ID1cbiAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGIgKGwsIGkpIC0+IGIgJiYgaSA9IC0xICYmIGwgPSBVblNwZWMpXG4gICAgICAgIHRydWVcbiAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHJvb3QxIGNjMS5ub2RlcylcbiAgICAgIHx8IEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAoZnVuIGIgKGwsIGkpIC0+IGIgJiYgaSA9IC0xICYmIGwgPSBVblNwZWMpXG4gICAgICAgICAgIHRydWVcbiAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHJvb3QyIGNjMi5ub2RlcylcbiAgICBpblxuICAgIGF1eCBhX3NpbmdsZV9hZ2VudCByIFsgcm9vdDEsIHJvb3QyIF1cblxuKCoqIEByZXR1cm4gaW5qZWN0aW9uIGZyb20gYSB0byBiICopXG5sZXQgZXF1YWwgfmRlYnVnX21vZGUgYSBiID1cbiAgbWF0Y2hcbiAgICBUb29scy5hcnJheV9taW5fZXF1YWxfbm90X251bGxcbiAgICAgIChBcnJheS5tYXAgKGZ1biB4IC0+IExpc3QubGVuZ3RoIHgsIHgpIGEubm9kZXNfYnlfdHlwZSlcbiAgICAgIChBcnJheS5tYXAgKGZ1biB4IC0+IExpc3QubGVuZ3RoIHgsIHgpIGIubm9kZXNfYnlfdHlwZSlcbiAgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKFtdLCBhZ3MpIC0+XG4gICAgaWYgYWdzID0gW10gdGhlblxuICAgICAgU29tZSAoUmVuYW1pbmcuZW1wdHkgKCkpXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8IFNvbWUgKGgxIDo6IF8sIGFncykgLT5cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBib29sIGFnIC0+XG4gICAgICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgICAgICB8IFNvbWUgXyAtPiBib29sXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCByZW5hbWUsIF8gPSBhcmVfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSB+c3RyaWN0OnRydWUgaDEgYSBhZyBiIGluXG4gICAgICAgICAgcmVuYW1lKVxuICAgICAgTm9uZSBhZ3NcblxubGV0IGF1dG9tb3JwaGlzbXMgfmRlYnVnX21vZGUgYSA9XG4gIG1hdGNoXG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyB4IC0+IFRvb2xzLm1pbl9wb3NfaW50X25vdF96ZXJvIGFjYyAoTGlzdC5sZW5ndGggeCwgeCkpXG4gICAgICAoMCwgW10pIGEubm9kZXNfYnlfdHlwZVxuICB3aXRoXG4gIHwgXywgW10gLT4gWyBSZW5hbWluZy5lbXB0eSAoKSBdXG4gIHwgXywgKGggOjogXyBhcyBsKSAtPlxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBhZyAtPlxuICAgICAgICBtYXRjaCBhcmVfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSB+c3RyaWN0OnRydWUgaCBhIGFnIGEgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gLT4gYWNjXG4gICAgICAgIHwgU29tZSByLCBfIC0+IHIgOjogYWNjKVxuICAgICAgW10gbFxuXG5sZXQgcG90ZW50aWFsX3BhaXJpbmcgc2lncyA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdDJpXG4gICAgKGZ1biB4IGFjYyBsYSBsYiAtPlxuICAgICAgaWYgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyB4IHRoZW5cbiAgICAgICAgYWNjXG4gICAgICBlbHNlXG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBhY2MgYiAtPlxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgYSAtPiBNb2RzLkludDJTZXQuYWRkIChhLCBiKSBhY2MpIGFjYyBsYSlcbiAgICAgICAgICBhY2MgbGIpXG4gICAgTW9kcy5JbnQyU2V0LmVtcHR5XG5cbmxldCBtYXRjaGluZ3MgfmRlYnVnX21vZGUgc2lncyBhIGIgPVxuICBsZXQgcG9zc2liaWxpdGllcyA9XG4gICAgcmVmIChwb3RlbnRpYWxfcGFpcmluZyBzaWdzIGEubm9kZXNfYnlfdHlwZSBiLm5vZGVzX2J5X3R5cGUpXG4gIGluXG4gIGxldCByZWMgZm9yX29uZV9yb290IGFjYyA9XG4gICAgbWF0Y2ggTW9kcy5JbnQyU2V0LmNob29zZSAhcG9zc2liaWxpdGllcyB3aXRoXG4gICAgfCBOb25lIC0+IGFjY1xuICAgIHwgU29tZSAoeCwgeSkgLT5cbiAgICAgIChtYXRjaFxuICAgICAgICAgYXJlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgfnBvc3NpYmlsaXRpZXMgfnN0cmljdDpmYWxzZSB4IGEgeSBiXG4gICAgICAgd2l0aFxuICAgICAgfCBOb25lLCBfIC0+IGZvcl9vbmVfcm9vdCBhY2NcbiAgICAgIHwgU29tZSByLCBfIC0+IGZvcl9vbmVfcm9vdCAociA6OiBhY2MpKVxuICBpblxuICBmb3Jfb25lX3Jvb3QgW11cblxuKCp0dXJucyBhIGNjIGludG8gYSBwYXRoKDpsaXN0KSBpbiB0aGUgZG9tYWluKilcbmxldCByYXdfdG9fbmF2aWdhdGlvbiAoZnVsbCA6IGJvb2wpIG5vZGVzX2J5X3R5cGUgbm9kZXMgPVxuICBsZXQgcmVjIGJ1aWxkX2ZvciAoZmlyc3QsIG91dCkgZG9uID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IExpc3QucmV2IG91dFxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgZmlyc3QnLCBvdXQnLCB0b2RvID1cbiAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgIChmdW4gaSAoKGZpcnN0LCBhbnMsIHJlKSBhcyBhY2MpIChsLCBzKSAtPlxuICAgICAgICAgICAgbGV0ICgoZmlyc3QnLCBhbnMnLCBfKSBhcyBhY2MnKSA9XG4gICAgICAgICAgICAgIGlmIChmdWxsIHx8IGZpcnN0KSAmJiBzID49IDAgdGhlblxuICAgICAgICAgICAgICAgICggZmFsc2UsXG4gICAgICAgICAgICAgICAgICAoICggKGlmIGZpcnN0IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLkZyZXNoIChoLCByYXdfZmluZF90eSBub2Rlc19ieV90eXBlIGgpXG4gICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLkV4aXN0aW5nIGgpLFxuICAgICAgICAgICAgICAgICAgICAgIGkgKSxcbiAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5Ub0ludGVybmFsIHMgKVxuICAgICAgICAgICAgICAgICAgOjogYW5zLFxuICAgICAgICAgICAgICAgICAgcmUgKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICB8IFVuU3BlYyAtPiBhY2MnXG4gICAgICAgICAgICB8IEZyZWUgLT5cbiAgICAgICAgICAgICAgaWYgZnVsbCB8fCBmaXJzdCcgdGhlblxuICAgICAgICAgICAgICAgICggZmFsc2UsXG4gICAgICAgICAgICAgICAgICAoICggKGlmIGZpcnN0JyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5GcmVzaCAoaCwgcmF3X2ZpbmRfdHkgbm9kZXNfYnlfdHlwZSBoKVxuICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5FeGlzdGluZyBoKSxcbiAgICAgICAgICAgICAgICAgICAgICBpICksXG4gICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uVG9Ob3RoaW5nIClcbiAgICAgICAgICAgICAgICAgIDo6IGFucycsXG4gICAgICAgICAgICAgICAgICByZSApXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBhY2MnXG4gICAgICAgICAgICB8IExpbmsgKG4sIGwpIC0+XG4gICAgICAgICAgICAgIGlmIExpc3QubWVtIG4gZG9uIHx8IChuID0gaCAmJiBpID4gbCkgdGhlblxuICAgICAgICAgICAgICAgIGFjYydcbiAgICAgICAgICAgICAgZWxzZSBpZiBuID0gaCB8fCBMaXN0Lm1lbSBuIHJlIHRoZW5cbiAgICAgICAgICAgICAgICBpZiBmdWxsIHx8IGZpcnN0JyB0aGVuXG4gICAgICAgICAgICAgICAgICAoIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAoICggKGlmIGZpcnN0JyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLkZyZXNoIChoLCByYXdfZmluZF90eSBub2Rlc19ieV90eXBlIGgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5FeGlzdGluZyBoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGkgKSxcbiAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5FeGlzdGluZyBuLCBsKSApXG4gICAgICAgICAgICAgICAgICAgIDo6IGFucycsXG4gICAgICAgICAgICAgICAgICAgIHJlIClcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBhY2MnXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAoIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgKCAoIChpZiBmaXJzdCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uRnJlc2ggKGgsIHJhd19maW5kX3R5IG5vZGVzX2J5X3R5cGUgaClcbiAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uRXhpc3RpbmcgaCksXG4gICAgICAgICAgICAgICAgICAgICAgaSApLFxuICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZVxuICAgICAgICAgICAgICAgICAgICAgIChOYXZpZ2F0aW9uLkZyZXNoIChuLCByYXdfZmluZF90eSBub2Rlc19ieV90eXBlIG4pLCBsKSApXG4gICAgICAgICAgICAgICAgICA6OiBhbnMnLFxuICAgICAgICAgICAgICAgICAgbiA6OiByZSApKVxuICAgICAgICAgIChmaXJzdCwgb3V0LCB0KVxuICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBoIG5vZGVzKVxuICAgICAgaW5cbiAgICAgIGJ1aWxkX2ZvciAoZmlyc3QnLCBvdXQnKSAoaCA6OiBkb24pIHRvZG9cbiAgaW5cbiAgbWF0Y2ggcmF3X2ZpbmRfcm9vdCBub2Rlc19ieV90eXBlIHdpdGhcbiAgfCBOb25lIC0+IFtdICgqZW1wdHkgcGF0aCBmb3IgeDAqKVxuICB8IFNvbWUgKHgsIF8pIC0+XG4gICAgKCooYWdfc29ydCxhZ19pZCkqKVxuICAgIGJ1aWxkX2ZvciAodHJ1ZSwgW10pICgqd2lwKikgW10gKCphbHJlYWR5X2RvbmUqKSBbIHggXVxuKCp0b2RvKilcblxubGV0IHJlYyBzdWJfbWluaW1pemVfcmVuYW1pbmcgfmRlYnVnX21vZGUgciA9IGZ1bmN0aW9uXG4gIHwgW10sIF8gLT4gclxuICB8IF8gOjogXywgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgKHggOjogcSBhcyBsKSwgeSA6OiBxJyAtPlxuICAgIGlmIHggPSB5IHRoZW4gKFxuICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIHggeSByIHdpdGhcbiAgICAgIHwgU29tZSByJyAtPiBzdWJfbWluaW1pemVfcmVuYW1pbmcgfmRlYnVnX21vZGUgcicgKHEsIHEnKVxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZnN0cywgbHN0ID0gTGlzdF91dGlsLnBvcF9sYXN0IGwgaW5cbiAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBsc3QgeSByIHdpdGhcbiAgICAgIHwgU29tZSByJyAtPiBzdWJfbWluaW1pemVfcmVuYW1pbmcgfmRlYnVnX21vZGUgcicgKGZzdHMsIHEnKVxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgIClcblxubGV0IG1pbmltaXplX3JlbmFtaW5nIH5kZWJ1Z19tb2RlIGRzdF9uYnQgcmVmX25idCA9XG4gIGxldCByZSA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIHR5IHIgaWRzIC0+IHN1Yl9taW5pbWl6ZV9yZW5hbWluZyB+ZGVidWdfbW9kZSByIChpZHMsIHJlZl9uYnQuKHR5KSkpXG4gICAgcmUgZHN0X25idFxuXG5sZXQgbWluaW1pemUgfmRlYnVnX21vZGUgY2FuZF9uYnQgY2FuZF9ub2RlcyByZWZfbmJ0ID1cbiAgbGV0IHJlID0gbWluaW1pemVfcmVuYW1pbmcgfmRlYnVnX21vZGUgY2FuZF9uYnQgcmVmX25idCBpblxuICBsZXQgcmVfaW1nID0gUmVuYW1pbmcuaW1hZ2UgcmUgaW5cbiAgbGV0IG5vZGVzX2J5X3R5cGUgPVxuICAgIEFycmF5Lm1hcCAoTGlzdC5maWx0ZXIgKGZ1biBhIC0+IE1vZHMuSW50U2V0Lm1lbSBhIHJlX2ltZykpIHJlZl9uYnRcbiAgaW5cbiAgbGV0IG5vZGVzID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIGlkIHNpdGVzIGFjYyAtPlxuICAgICAgICBsZXQgc2l0ZXMnID1cbiAgICAgICAgICBBcnJheS5tYXBcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IExpbmsgKG4sIHMpLCBpIC0+IExpbmsgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIHJlIG4sIHMpLCBpXG4gICAgICAgICAgICAgIHwgKChVblNwZWMgfCBGcmVlKSwgXykgYXMgeCAtPiB4KVxuICAgICAgICAgICAgc2l0ZXNcbiAgICAgICAgaW5cbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSByZSBpZCkgc2l0ZXMnIGFjYylcbiAgICAgIGNhbmRfbm9kZXMgTW9kcy5JbnRNYXAuZW1wdHlcbiAgaW5cbiAge1xuICAgIG5vZGVzX2J5X3R5cGU7XG4gICAgbm9kZXM7XG4gICAgcmVjb2duX25hdiA9IHJhd190b19uYXZpZ2F0aW9uIGZhbHNlIG5vZGVzX2J5X3R5cGUgbm9kZXM7XG4gIH1cblxuKCogcmV0dXJucyBhIGxpc3Qgb2YgY2Mgd2hlcmUgZWFjaCBjYyBpcyBpbmNsdWRlZCBpbiBjYzEqKVxubGV0IGluZnMgfmRlYnVnX21vZGUgc2lncyBjYzEgY2MyID1cbiAgbGV0IHBvc3NpYmlsaXRpZXMgPVxuICAgIHJlZiAocG90ZW50aWFsX3BhaXJpbmcgc2lncyBjYzEubm9kZXNfYnlfdHlwZSBjYzIubm9kZXNfYnlfdHlwZSlcbiAgaW5cbiAgbGV0IHJlYyBhdXggcmVuYW1lIG5vZGVzID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IG5vZGVzXG4gICAgfCAoKG8sIHApIGFzIHBhaXIpIDo6IHRvZG9zIC0+XG4gICAgICBsZXQgKCkgPSBwb3NzaWJpbGl0aWVzIDo9IE1vZHMuSW50MlNldC5yZW1vdmUgcGFpciAhcG9zc2liaWxpdGllcyBpblxuICAgICAgbGV0IGxuazEgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBvIGNjMS5ub2RlcyBpblxuICAgICAgbGV0ICh0b2RvcycsIHJlbicpLCBvdXRsID1cbiAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0X21hcGlcbiAgICAgICAgICAoZnVuIGsgKCh0b2RvLCByZW4pIGFzIGFjYykgKGx5LCBpeSkgLT5cbiAgICAgICAgICAgIGxldCBseCwgaXggPSBsbmsxLihrKSBpblxuICAgICAgICAgICAgbWF0Y2ggbHgsIGx5IHdpdGhcbiAgICAgICAgICAgIHwgTGluayBfLCBGcmVlXG4gICAgICAgICAgICB8IEZyZWUsIExpbmsgX1xuICAgICAgICAgICAgfCBMaW5rIF8sIFVuU3BlY1xuICAgICAgICAgICAgfCBVblNwZWMsIExpbmsgX1xuICAgICAgICAgICAgfCBVblNwZWMsIEZyZWVcbiAgICAgICAgICAgIHwgRnJlZSwgVW5TcGVjXG4gICAgICAgICAgICB8IFVuU3BlYywgVW5TcGVjIC0+XG4gICAgICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgICAgICggVW5TcGVjLFxuICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGl5XG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIC0xICkgKVxuICAgICAgICAgICAgfCBGcmVlLCBGcmVlIC0+XG4gICAgICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgICAgICggRnJlZSxcbiAgICAgICAgICAgICAgICAgIGlmIGl4ID0gaXkgdGhlblxuICAgICAgICAgICAgICAgICAgICBpeVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAtMSApIClcbiAgICAgICAgICAgIHwgKExpbmsgKG4xLCBzMSkgYXMgeCksIExpbmsgKG4yLCBzMikgLT5cbiAgICAgICAgICAgICAgaWYgczEgPSBzMiB0aGVuXG4gICAgICAgICAgICAgICAgaWYgUmVuYW1pbmcubWVtIG4xIHJlbiB0aGVuXG4gICAgICAgICAgICAgICAgICAoIGFjYyxcbiAgICAgICAgICAgICAgICAgICAgKCAoaWYgUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgcmVuIG4xID0gbjIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIFVuU3BlYyksXG4gICAgICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBpeVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC0xICkgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIG4xIG4yIHJlbiB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgKCBhY2MsXG4gICAgICAgICAgICAgICAgICAgICAgKCBVblNwZWMsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBpeCA9IGl5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTEgKSApXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgcicgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgZmluZF90eSBjYzEgbjEgPSBmaW5kX3R5IGNjMiBuMiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKCAoKG4xLCBuMikgOjogdG9kbywgcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKCB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpeCA9IGl5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpeVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEgKSApXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoIGFjYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICggVW5TcGVjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpeCA9IGl5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpeVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEgKSApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgKCBhY2MsXG4gICAgICAgICAgICAgICAgICAoIFVuU3BlYyxcbiAgICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIC0xICkgKSlcbiAgICAgICAgICAodG9kb3MsIHJlbmFtZSlcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gcCBjYzIubm9kZXMpXG4gICAgICBpblxuICAgICAgaWYgQXJyYXkuZm9sZF9sZWZ0IChmdW4gYiAobCwgaSkgLT4gYiAmJiBsID0gVW5TcGVjICYmIGkgPCAwKSB0cnVlIG91dGxcbiAgICAgIHRoZW5cbiAgICAgICAgYXV4IHJlbicgbm9kZXMgdG9kb3MnXG4gICAgICBlbHNlXG4gICAgICAgIGF1eCByZW4nIChNb2RzLkludE1hcC5hZGQgbyBvdXRsIG5vZGVzKSB0b2RvcydcbiAgaW5cblxuICBsZXQgcmVjIGZvcl9vbmVfcm9vdCBhY2MgPVxuICAgIG1hdGNoIE1vZHMuSW50MlNldC5jaG9vc2UgIXBvc3NpYmlsaXRpZXMgd2l0aFxuICAgIHwgTm9uZSAtPiBhY2NcbiAgICB8IFNvbWUgKHJvb3QxLCByb290MikgLT5cbiAgICAgIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgcm9vdDEgcm9vdDIgKFJlbmFtaW5nLmVtcHR5ICgpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IFNvbWUgciAtPlxuICAgICAgICBsZXQgbm9kZXMgPSBhdXggciBNb2RzLkludE1hcC5lbXB0eSBbIHJvb3QxLCByb290MiBdIGluXG4gICAgICAgIGxldCBhY2MnID1cbiAgICAgICAgICBpZiBNb2RzLkludE1hcC5pc19lbXB0eSBub2RlcyB0aGVuXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBub2Rlc19ieV90eXBlID1cbiAgICAgICAgICAgICAgQXJyYXkubWFwXG4gICAgICAgICAgICAgICAgKExpc3QuZmlsdGVyIChmdW4gYSAtPiBNb2RzLkludE1hcC5tZW0gYSBub2RlcykpXG4gICAgICAgICAgICAgICAgY2MxLm5vZGVzX2J5X3R5cGVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtaW5pbWl6ZSB+ZGVidWdfbW9kZSBub2Rlc19ieV90eXBlIG5vZGVzIGNjMS5ub2Rlc19ieV90eXBlIDo6IGFjY1xuICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgZm9yX29uZV9yb290IGFjYycpXG4gIGluXG4gIGZvcl9vbmVfcm9vdCBbXVxuXG4oKiByZW5hbWluZyBpcyBhIHRvdGFsIG1vcnBoaXNtIGZyb20gY2MxJyB0byBjYzI7IGNjMScgaXMgaW5jbHVkZWQgaW4gY2MxICopXG5sZXQgaW50ZXJzZWN0aW9uIHJlbmFtaW5nIGNjMSBjYzIgPVxuICBsZXQgbm9kZXMsIGltYWdlID1cbiAgICBSZW5hbWluZy5mb2xkXG4gICAgICAoZnVuIGkgaiAoKGFjY24sIGwpIGFzIGFjYykgLT5cbiAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBjYzEubm9kZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSBub2RlczEgLT5cbiAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaiBjYzIubm9kZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICB8IFNvbWUgbm9kZXMyIC0+XG4gICAgICAgICAgICBsZXQgb3V0ID1cbiAgICAgICAgICAgICAgQXJyYXkubWFwaVxuICAgICAgICAgICAgICAgIChmdW4gayAobDIsIGkyKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGwxLCBpMSA9IG5vZGVzMS4oaykgaW5cbiAgICAgICAgICAgICAgICAgICggKGlmIGwxID0gVW5TcGVjIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgVW5TcGVjXG4gICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgIGwyKSxcbiAgICAgICAgICAgICAgICAgICAgaWYgaTEgPSAtMSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGkyICkpXG4gICAgICAgICAgICAgICAgbm9kZXMyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGogb3V0IGFjY24sIGogOjogbCkpXG4gICAgICByZW5hbWluZyAoTW9kcy5JbnRNYXAuZW1wdHksIFtdKVxuICBpblxuICBsZXQgbm9kZXNfYnlfdHlwZSA9XG4gICAgQXJyYXkubWFwIChMaXN0LmZpbHRlciAoZnVuIGEgLT4gTGlzdC5tZW0gYSBpbWFnZSkpIGNjMi5ub2Rlc19ieV90eXBlXG4gIGluXG4gIHtcbiAgICBub2Rlc19ieV90eXBlO1xuICAgIG5vZGVzO1xuICAgIHJlY29nbl9uYXYgPSByYXdfdG9fbmF2aWdhdGlvbiBmYWxzZSBub2Rlc19ieV90eXBlIG5vZGVzO1xuICB9XG5cbnR5cGUgZXh0cmVtaXR5ID0gT3BlbiB8IENsb3NlZFxuXG5sZXQgZmV0Y2hfZXhpdF9zaXRlIF9zaWdzIHNpZCA9IHNpZCsxXG5sZXQgcmVjIGNvdW50ZXJfdmFsdWUgc2lncyBub2RlcyAobmlkLCBzaWQpIGNvdW50ID1cbiAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gbmlkIG5vZGVzIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwicGVuZGluZyBib25kcyBlbmNvdW50ZXJlZCB3aGVuIGNvbXB1dGluZyB0aGUgbGVuZ3RoIG9mIGEgY2hhaW4gKGNvdW50ZXJzKVwiXG4gIHwgU29tZSBhZyAtPlxuICAgIGxldCBvdGhlciA9IGZldGNoX2V4aXRfc2l0ZSBzaWdzIHNpZCBpblxuICAgIGxldCAoZWwsXykgPSBhZy4ob3RoZXIpIGluXG4gICAgbWF0Y2ggZWwgd2l0aFxuICAgICAgfCBVblNwZWMgLT4gY291bnQsIE9wZW5cbiAgICAgIHwgRnJlZSAtPiBjb3VudCwgQ2xvc2VkXG4gICAgICB8IExpbmsgKGRuLCBkaSkgLT5cbiAgICAgICAgICAgICBjb3VudGVyX3ZhbHVlIHNpZ3Mgbm9kZXMgKGRuLCBkaSkgKGNvdW50ICsgMSlcblxubGV0IGNvdW50ZXJfdmFsdWUgc2lncyBub2RlcyAobmlkLCBzaWQpID1cbiAgY291bnRlcl92YWx1ZSBzaWdzIG5vZGVzIChuaWQsIHNpZCkgMFxuXG5sZXQgY291bnRlcl92YWx1ZV9jYyBzaWdzIGNjIChuaWQsIHNpZCkgPVxuICBsZXQgbm9kZXMgPSBjYy5ub2RlcyBpblxuICBsZXQgY291bnQsIGV4dHJlbWl0eSA9IGNvdW50ZXJfdmFsdWUgc2lncyBub2RlcyAobmlkLCBzaWQpIGluXG4gIGxldCAoKSA9IG1hdGNoIGV4dHJlbWl0eSB3aXRoIE9wZW4gLT4gZmFpbHdpdGggXCJwZW5kaW5nIGJvbmRzIGVuY291bnRlcmVkIHdoZW4gY29tcHV0aW5nIHRoZSBsZW5ndGggb2YgYSBjaGFpbiAoY291bnRlcnMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2xvc2VkIC0+ICgpXG4gIGluIGNvdW50XG5cbmxldCBkb3Rjb21tYSBkb3RuZXQgPVxuICBpZiBkb3RuZXQgdGhlblxuICAgIGZ1biBmbXQgLT5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiLFwiXG4gIGVsc2VcbiAgICBQcC5zcGFjZVxuXG5sZXQgcHJpbnRfY2Mgfm5vQ291bnRlcnMgPyhkb3RuZXQgPSBmYWxzZSkgPyhmdWxsX3NwZWNpZXMgPSBmYWxzZSkgP3NpZ3MgP2NjX2lkXG4gICAgfndpdGhfaWQgZiBjYyA9XG4gIGxldCBwcmludF9pbnRmICgoYWdfaSwgXykgYXMgYWcpIGxpbmtfaWRzIG5laWdoID1cbiAgICBzbmRcbiAgICAgIChUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAoZnVuIHAgKG5vdF9lbXB0eSwgKChmcmVlLCBsaW5rX2lkcykgYXMgb3V0KSkgKGVsLCBzdCkgLT5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBpZiBzdCA+PSAwIHRoZW5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhXCJcbiAgICAgICAgICAgICAgICAgKGlmIG5vdF9lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGRvdGNvbW1hIGRvdG5ldFxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBQcC5lbXB0eSlcbiAgICAgICAgICAgICAgICAgKEFnZW50LnByaW50X2ludGVybmFsID9zaWdzIGFnIHApXG4gICAgICAgICAgICAgICAgIHN0XG4gICAgICAgICAgICAgZWxzZSBpZiBlbCA8PiBVblNwZWMgdGhlblxuICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWFcIlxuICAgICAgICAgICAgICAgICAoaWYgbm90X2VtcHR5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZG90Y29tbWEgZG90bmV0XG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIFBwLmVtcHR5KVxuICAgICAgICAgICAgICAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBhZylcbiAgICAgICAgICAgICAgICAgcFxuICAgICAgICAgICBpblxuICAgICAgICAgICBtYXRjaCBlbCB3aXRoXG4gICAgICAgICAgIHwgVW5TcGVjIC0+XG4gICAgICAgICAgICAgaWYgc3QgPj0gMCB0aGVuIChcbiAgICAgICAgICAgICAgIGxldCAoKSA9IGlmIGZ1bGxfc3BlY2llcyB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlsuXVwiIGluXG4gICAgICAgICAgICAgICB0cnVlLCBvdXRcbiAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgIG5vdF9lbXB0eSwgb3V0XG4gICAgICAgICAgIHwgRnJlZSAtPlxuICAgICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlsuXVwiIGluXG4gICAgICAgICAgICAgdHJ1ZSwgb3V0XG4gICAgICAgICAgIHwgTGluayAoZHN0X2EsIGRzdF9wKSAtPlxuICAgICAgICAgICAgIGxldCBkc3RfdHkgPSBmaW5kX3R5IGNjIGRzdF9hIGluXG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgIG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgICAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgICAgICAgICAgICBTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIGRzdF90eSAmJiBub3Qgbm9Db3VudGVyc1xuICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgbGV0IChjb3VudGVyLGtpbmQpID0gY291bnRlcl92YWx1ZSBzaWdzIGNjLm5vZGVzIChkc3RfYSwgZHN0X3ApIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInslcyVkfVwiXG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBraW5kIHdpdGggQ2xvc2VkIC0+IFwiPVwiIHwgT3BlbiAtPiBcIj49XCIpXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICB0cnVlLCBvdXRcbiAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgbGV0IGksIG91dCcgPVxuICAgICAgICAgICAgICAgICBtYXRjaCBNb2RzLkludDJNYXAuZmluZF9vcHRpb24gKGRzdF9hLCBkc3RfcCkgbGlua19pZHMgd2l0aFxuICAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB4LCBvdXRcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgZnJlZSwgKHN1Y2MgZnJlZSwgTW9kcy5JbnQyTWFwLmFkZCAoYWdfaSwgcCkgZnJlZSBsaW5rX2lkcylcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiWyVpXVwiIGkgaW5cbiAgICAgICAgICAgICAgIHRydWUsIG91dCdcbiAgICAgICAgICAgICApKVxuICAgICAgICAgKGZhbHNlLCBsaW5rX2lkcykgbmVpZ2gpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggY2NfaWQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBjY19pZCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLypjYyVpKi9AIFwiIGNjX2lkXG4gIGluXG4gIGxldCBfLCBfID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIHggZWwgKG5vdF9lbXB0eSwgbGlua19pZHMpIC0+XG4gICAgICAgIGxldCBhZ194ID0geCwgZmluZF90eSBjYyB4IGluXG4gICAgICAgIGlmXG4gICAgICAgICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgICAgICAgKG5vdCAoU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyAoc25kIGFnX3gpKSkgfHwgbm9Db3VudGVyc1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0QFs8aD4lYShcIlxuICAgICAgICAgICAgICAoaWYgbm90X2VtcHR5IHRoZW5cbiAgICAgICAgICAgICAgICAgaWYgZG90bmV0IHRoZW5cbiAgICAgICAgICAgICAgICAgICBmdW4gZm10IC0+XG4gICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIi5cIlxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgUHAuY29tbWFcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgUHAuZW1wdHkpXG4gICAgICAgICAgICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZClcbiAgICAgICAgICAgICAgYWdfeFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG91dCA9IHByaW50X2ludGYgYWdfeCBsaW5rX2lkcyBlbCBpblxuICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIpQF1cIiBpblxuICAgICAgICAgIHRydWUsIG91dFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBub3RfZW1wdHksIGxpbmtfaWRzKVxuICAgICAgY2Mubm9kZXNcbiAgICAgIChmYWxzZSwgKDEsIE1vZHMuSW50Mk1hcC5lbXB0eSkpXG4gIGluXG4gICgpXG5cbmxldCBwcmludF9jY19hc19pZCBzaWdzIGYgY2MgPVxuICBsZXQgcHJpbnRfaW50ZiAoKGFnX2ksIF8pIGFzIGFnKSBsaW5rX2lkcyBuZWlnaCA9XG4gICAgc25kXG4gICAgICAoVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgKGZ1biBwIChub3RfZW1wdHksICgoZnJlZSwgbGlua19pZHMpIGFzIG91dCkpIChlbCwgc3QpIC0+XG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgaWYgZWwgPD4gVW5TcGVjIHx8IHN0ID49IDAgdGhlblxuICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWFcIlxuICAgICAgICAgICAgICAgICAoaWYgbm90X2VtcHR5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIl9cIlxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBQcC5lbXB0eSlcbiAgICAgICAgICAgICAgICAgKEFnZW50LnByaW50X3NpdGUgfnNpZ3MgYWcpXG4gICAgICAgICAgICAgICAgIHBcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBpZiBzdCA+PSAwIHRoZW5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ+JWFcIiAoQWdlbnQucHJpbnRfcmF3X2ludGVybmFsIH5zaWdzIGFnIHApIHN0XG4gICAgICAgICAgIGluXG4gICAgICAgICAgIG1hdGNoIGVsIHdpdGhcbiAgICAgICAgICAgfCBVblNwZWMgLT4gbm90X2VtcHR5IHx8IHN0ID49IDAsIG91dFxuICAgICAgICAgICB8IEZyZWUgLT4gdHJ1ZSwgb3V0XG4gICAgICAgICAgIHwgTGluayAoZHN0X2EsIGRzdF9wKSAtPlxuICAgICAgICAgICAgIGxldCBkc3RfdHkgPSBmaW5kX3R5IGNjIGRzdF9hIGluXG4gICAgICAgICAgICAgaWYgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBkc3RfdHkgdGhlbiAoXG4gICAgICAgICAgICAgICBsZXQgY291bnRlcixleHRyZW1pdHkgID0gY291bnRlcl92YWx1ZSBzaWdzIGNjLm5vZGVzIChkc3RfYSwgZHN0X3ApICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID0gbWF0Y2ggZXh0cmVtaXR5IHdpdGggT3BlbiAtPiBmYWlsd2l0aCAoXCJib25kcyBzaG91bGQgbm90IGJlIG9wZW5lZFwiKSB8IENsb3NlZCAtPiAoKSBpblxuICAgICAgICAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIn4rJWRcIiBjb3VudGVyIGluXG4gICAgICAgICAgICAgICB0cnVlLCBvdXRcbiAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgbGV0IGksIG91dCcgPVxuICAgICAgICAgICAgICAgICBtYXRjaCBNb2RzLkludDJNYXAuZmluZF9vcHRpb24gKGRzdF9hLCBkc3RfcCkgbGlua19pZHMgd2l0aFxuICAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB4LCBvdXRcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgZnJlZSwgKHN1Y2MgZnJlZSwgTW9kcy5JbnQyTWFwLmFkZCAoYWdfaSwgcCkgZnJlZSBsaW5rX2lkcylcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwifiVpXCIgaSBpblxuICAgICAgICAgICAgICAgdHJ1ZSwgb3V0J1xuICAgICAgICAgICAgICkpXG4gICAgICAgICAoZmFsc2UsIGxpbmtfaWRzKSBuZWlnaClcbiAgaW5cbiAgbGV0IF8sIF8gPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4geCBlbCAobm90X2VtcHR5LCBsaW5rX2lkcykgLT5cbiAgICAgICAgbGV0IGFnX3ggPSB4LCBmaW5kX3R5IGNjIHggaW5cbiAgICAgICAgaWYgbm90IChTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIChzbmQgYWdfeCkpIHRoZW4gKFxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXRAWzxoPiVhX19cIlxuICAgICAgICAgICAgICAoaWYgbm90X2VtcHR5IHRoZW5cbiAgICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIl9fXCJcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgUHAuZW1wdHkpXG4gICAgICAgICAgICAgIChBZ2VudC5wcmludCB+c2lncyB+d2l0aF9pZDpmYWxzZSlcbiAgICAgICAgICAgICAgYWdfeFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG91dCA9IHByaW50X2ludGYgYWdfeCBsaW5rX2lkcyBlbCBpblxuICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAXVwiIGluXG4gICAgICAgICAgdHJ1ZSwgb3V0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIG5vdF9lbXB0eSwgbGlua19pZHMpXG4gICAgICBjYy5ub2Rlc1xuICAgICAgKGZhbHNlLCAoMSwgTW9kcy5JbnQyTWFwLmVtcHR5KSlcbiAgaW5cbiAgKClcblxubGV0IHRvX3lvanNvbiBjYyA9XG4gIG1hdGNoIE1vZHMuSW50TWFwLm1heF9rZXkgY2Mubm9kZXMgd2l0aFxuICB8IE5vbmUgLT4gYE51bGxcbiAgfCBTb21lIG0gLT5cbiAgICBsZXQgcyA9IHN1Y2MgbSBpblxuICAgIGxldCBzb3J0cyA9IEFycmF5Lm1ha2UgcyBOb25lIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4gdHkgLT4gTGlzdC5pdGVyIChmdW4gaWQgLT4gc29ydHMuKGlkKSA8LSBTb21lIHR5KSlcbiAgICAgICAgY2Mubm9kZXNfYnlfdHlwZVxuICAgIGluXG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgICggXCJzb3J0c1wiLFxuICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgKGZ1biB4IGFjYyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBgTnVsbFxuICAgICAgICAgICAgICAgICB8IFNvbWUgaSAtPiBgSW50IGkpXG4gICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgIHNvcnRzIFtdKSApO1xuICAgICAgICAoIFwibm9kZXNcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKFRvb2xzLnJlY3RpXG4gICAgICAgICAgICAgICAoZnVuIGFjYyBpIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIGNjLm5vZGVzIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGBOdWxsXG4gICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChsLCBzKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZyZWUgLT4gYEJvb2wgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMaW5rIChuLCBzKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgQXNzb2MgWyBcIm5vZGVcIiwgYEludCBuOyBcInNpdGVcIiwgYEludCBzIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVW5TcGVjIC0+IGBCb29sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzIDwgMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgTnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBJbnQgcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICBhIFtdKSlcbiAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgW10gcykgKTtcbiAgICAgIF1cblxubGV0IG9mX3lvanNvbiBzaWdfZGVjbCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwic29ydHNcIiwgYExpc3Qgcyk7IChcIm5vZGVzXCIsIGBMaXN0IG4pIF1cbiAgfCBgQXNzb2MgWyAoXCJub2Rlc1wiLCBgTGlzdCBuKTsgKFwic29ydHNcIiwgYExpc3QgcykgXSAtPlxuICAgIGxldCBfLCBub2RlcyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChpLCBhY2MpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBgTnVsbCAtPiBzdWNjIGksIGFjY1xuICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgKCBzdWNjIGksXG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBpXG4gICAgICAgICAgICAgICAgKFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICB8IGBMaXN0IFsgYEJvb2wgYjsgYE51bGwgXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoIChpZiBiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVblNwZWMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgIC0xIClcbiAgICAgICAgICAgICAgICAgICAgIHwgYExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGBBc3NvYyBbIChcIm5vZGVcIiwgYEludCBuKTsgKFwic2l0ZVwiLCBgSW50IHMpIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYEFzc29jIFsgKFwic2l0ZVwiLCBgSW50IHMpOyAoXCJub2RlXCIsIGBJbnQgbikgXSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYE51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBMaW5rIChuLCBzKSwgLTFcbiAgICAgICAgICAgICAgICAgICAgIHwgYExpc3QgWyBgQm9vbCBiOyBgSW50IHMgXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoIChpZiBiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVblNwZWMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHMgKVxuICAgICAgICAgICAgICAgICAgICAgfCBgTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggYEFzc29jIFsgKFwibm9kZVwiLCBgSW50IG4pOyAoXCJzaXRlXCIsIGBJbnQgcykgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgQXNzb2MgWyAoXCJzaXRlXCIsIGBJbnQgcyk7IChcIm5vZGVcIiwgYEludCBuKSBdICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBgSW50IHN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTGluayAobiwgcyksIHN0XG4gICAgICAgICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBub2RlXCIsIHgpKSlcbiAgICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgICAgICAgIGFjYyApXG4gICAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbm9kZSBsaW5rc1wiLCB4KSkpXG4gICAgICAgICgwLCBNb2RzLkludE1hcC5lbXB0eSkgblxuICAgIGluXG4gICAgbGV0IG5vZGVzX2J5X3R5cGUgPSBBcnJheS5tYWtlIChTaWduYXR1cmUuc2l6ZSBzaWdfZGVjbCkgW10gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyaVxuICAgICAgICAoZnVuIGkgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IGBOdWxsIC0+ICgpXG4gICAgICAgICAgfCBgSW50IHR5IC0+IG5vZGVzX2J5X3R5cGUuKHR5KSA8LSBpIDo6IG5vZGVzX2J5X3R5cGUuKHR5KVxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJXcm9uZyBub2RlIHR5cGVcIiwgeCkpKVxuICAgICAgICBzXG4gICAgaW5cbiAgICB7XG4gICAgICBub2Rlc19ieV90eXBlO1xuICAgICAgbm9kZXM7XG4gICAgICByZWNvZ25fbmF2ID0gcmF3X3RvX25hdmlnYXRpb24gZmFsc2Ugbm9kZXNfYnlfdHlwZSBub2RlcztcbiAgICB9XG4gIHwgYE51bGwgLT4gZW1wdHlfY2Mgc2lnX2RlY2xcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIHBhdHRlcm5cIiwgeCkpXG5cbmxldCBtZXJnZV9jb21wYXRpYmxlIH5kZWJ1Z19tb2RlIHJlc2VydmVkX2lkcyBmcmVlX2lkIGluajFfdG9fMiBjYzEgY2MyID1cbiAgbGV0IGltZyA9IFJlbmFtaW5nLmltYWdlIGluajFfdG9fMiBpblxuICBsZXQgYXZhaWxhYmxlX2lkcyA9XG4gICAgQXJyYXkubWFwXG4gICAgICAoTGlzdC5maWx0ZXIgKGZ1biBpZCAtPiBub3QgKE1vZHMuSW50U2V0Lm1lbSBpZCBpbWcpKSlcbiAgICAgIHJlc2VydmVkX2lkc1xuICBpblxuICBsZXQgdXNlZF9pZHMgPVxuICAgIEFycmF5Lm1hcFxuICAgICAgKExpc3RfdXRpbC5tYXBfb3B0aW9uIChmdW4gaWQgLT5cbiAgICAgICAgICAgaWYgUmVuYW1pbmcubWVtIGlkIGluajFfdG9fMiB0aGVuXG4gICAgICAgICAgICAgU29tZSAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qMV90b18yIGlkKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgTm9uZSkpXG4gICAgICBjYzEubm9kZXNfYnlfdHlwZVxuICBpblxuICBsZXQgYXZhaWxhYmxlX2luX2NjMSA9XG4gICAgQXJyYXkubWFwaVxuICAgICAgKGZ1biBpIGwgLT5cbiAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biB4IC0+IG5vdCAoTGlzdC5tZW0geCBjYzEubm9kZXNfYnlfdHlwZS4oaSkpKSBsKVxuICAgICAgcmVzZXJ2ZWRfaWRzXG4gIGluXG4gIGxldCBmcmVlX2lkX2Zvcl9jYzEgPSByZWYgZnJlZV9pZCBpblxuXG4gIGxldCBnZXRfY2MyIGogKCgoaW5qMSwgZnJlZV9pZCksIGluajIsICh0b2RvczEsIHRvZG9zMikpIGFzIHBhY2spID1cbiAgICBpZiBSZW5hbWluZy5tZW0gaiBpbmoyIHRoZW5cbiAgICAgIFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluajIgaiwgcGFja1xuICAgIGVsc2UgKFxuICAgICAgbGV0IHR5ID0gZmluZF90eSBjYzIgaiBpblxuICAgICAgbGV0IGltZywgZnJlZV9pZCcgPVxuICAgICAgICBtYXRjaCBhdmFpbGFibGVfaWRzLih0eSkgd2l0aFxuICAgICAgICB8IFtdIC0+IGZyZWVfaWQsIHN1Y2MgZnJlZV9pZFxuICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgIGxldCAoKSA9IGF2YWlsYWJsZV9pZHMuKHR5KSA8LSB0IGluXG4gICAgICAgICAgaCwgZnJlZV9pZFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHVzZWRfaWRzLih0eSkgPC0gaW1nIDo6IHVzZWRfaWRzLih0eSkgaW5cbiAgICAgIGxldCBvID1cbiAgICAgICAgbWF0Y2ggYXZhaWxhYmxlX2luX2NjMS4odHkpIHdpdGhcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIGxldCB4ID0gIWZyZWVfaWRfZm9yX2NjMSBpblxuICAgICAgICAgIGxldCAoKSA9IGluY3IgZnJlZV9pZF9mb3JfY2MxIGluXG4gICAgICAgICAgeFxuICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgIGxldCAoKSA9IGF2YWlsYWJsZV9pbl9jYzEuKHR5KSA8LSB0IGluXG4gICAgICAgICAgaFxuICAgICAgaW5cbiAgICAgICggaW1nLFxuICAgICAgICAoICggKG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBvIGltZyBpbmoxIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2UpLFxuICAgICAgICAgICAgZnJlZV9pZCcgKSxcbiAgICAgICAgICAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGogaW1nIGluajIgd2l0aFxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICAodG9kb3MxLCAoaiwgaW1nKSA6OiB0b2RvczIpICkgKVxuICAgIClcbiAgaW5cblxuICBsZXQgZ2V0X2NjMSBpICgoKGluajEsIGZyZWVfaWQpLCBpbmoyLCAodG9kb3MxLCB0b2RvczIpKSBhcyBwYWNrKSA9XG4gICAgaWYgUmVuYW1pbmcubWVtIGkgaW5qMSB0aGVuXG4gICAgICBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmoxIGksIHBhY2tcbiAgICBlbHNlIChcbiAgICAgIGxldCB0eSA9IGZpbmRfdHkgY2MxIGkgaW5cbiAgICAgIGxldCBpbWcsIGZyZWVfaWQnID1cbiAgICAgICAgbWF0Y2ggYXZhaWxhYmxlX2lkcy4odHkpIHdpdGhcbiAgICAgICAgfCBbXSAtPiBmcmVlX2lkLCBzdWNjIGZyZWVfaWRcbiAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICBsZXQgKCkgPSBhdmFpbGFibGVfaWRzLih0eSkgPC0gdCBpblxuICAgICAgICAgIGgsIGZyZWVfaWRcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSB1c2VkX2lkcy4odHkpIDwtIGltZyA6OiB1c2VkX2lkcy4odHkpIGluXG4gICAgICAoIGltZyxcbiAgICAgICAgKCAoIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaSBpbWcgaW5qMSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICAgIGZyZWVfaWQnICksXG4gICAgICAgICAgaW5qMixcbiAgICAgICAgICAoKGksIGltZykgOjogdG9kb3MxLCB0b2RvczIpICkgKVxuICAgIClcbiAgaW5cbiAgbGV0IHBhY2snLCBub2RlcyA9XG4gICAgbGV0IHJlYyBnbHVlIHBhY2sgaW5qMiBub2RlcyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdLCBbXSAtPiBwYWNrLCBub2Rlc1xuICAgICAgfCBbXSwgKGksIGopIDo6IHRvZG9zMiAtPlxuICAgICAgICBsZXQgbm9kZXNpID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gaSBjYzIubm9kZXMgaW5cbiAgICAgICAgbGV0IG5vZGVzbyA9IEFycmF5LmNvcHkgbm9kZXNpIGluXG4gICAgICAgIGxldCBwYWNrJywgaW5qMicsIHRvZG9zJyA9XG4gICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgKGZ1biBrIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICB8IChVblNwZWMgfCBGcmVlKSwgXyAtPiBhY2NcbiAgICAgICAgICAgICAgfCBMaW5rIChuLCBzKSwgc3QgLT5cbiAgICAgICAgICAgICAgICBsZXQgbicsIGFjYycgPSBnZXRfY2MyIG4gYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gbm9kZXNvLihrKSA8LSBMaW5rIChuJywgcyksIHN0IGluXG4gICAgICAgICAgICAgICAgYWNjJylcbiAgICAgICAgICAgIChwYWNrLCBpbmoyLCAoW10sIHRvZG9zMikpXG4gICAgICAgICAgICBub2Rlc2lcbiAgICAgICAgaW5cbiAgICAgICAgZ2x1ZSBwYWNrJyBpbmoyJyAoTW9kcy5JbnRNYXAuYWRkIGogbm9kZXNvIG5vZGVzKSB0b2RvcydcbiAgICAgIHwgKGksIGopIDo6IHRvZG9zMSwgdG9kb3MyIC0+XG4gICAgICAgIGxldCBub2Rlc2kgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBpIGNjMS5ub2RlcyBpblxuICAgICAgICBsZXQgbm9kZXNvID0gQXJyYXkuY29weSBub2Rlc2kgaW5cbiAgICAgICAgbGV0IHBhY2snLCBpbmoyJywgdG9kb3MnID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBqIGNjMi5ub2RlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgICAgIChmdW4gayBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IChVblNwZWMgfCBGcmVlKSwgXyAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IExpbmsgKG4sIHMpLCBzdCAtPlxuICAgICAgICAgICAgICAgICAgbGV0IG4nLCBhY2MnID0gZ2V0X2NjMSBuIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gbm9kZXNvLihrKSA8LSBMaW5rIChuJywgcyksIHN0IGluXG4gICAgICAgICAgICAgICAgICBhY2MnKVxuICAgICAgICAgICAgICAocGFjaywgaW5qMiwgKHRvZG9zMSwgdG9kb3MyKSlcbiAgICAgICAgICAgICAgbm9kZXNpXG4gICAgICAgICAgfCBTb21lIG5vZGVzaiAtPlxuICAgICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgICAoZnVuIGsgYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBGcmVlLCBfIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgXywgc3RqID0gbm9kZXNqLihrKSBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gaWYgc3RqIDw+IC0xIHRoZW4gbm9kZXNvLihrKSA8LSBGcmVlLCBzdGogaW5cbiAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgIHwgTGluayAobiwgcyksIHN0aSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IF8sIHN0aiA9IG5vZGVzai4oaykgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBzdG8gPVxuICAgICAgICAgICAgICAgICAgICBpZiBzdGogPD4gLTEgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIHN0alxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgc3RpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IG4nLCBhY2MnID0gZ2V0X2NjMSBuIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gbm9kZXNvLihrKSA8LSBMaW5rIChuJywgcyksIHN0byBpblxuICAgICAgICAgICAgICAgICAgYWNjJ1xuICAgICAgICAgICAgICAgIHwgVW5TcGVjLCBzdGkgLT5cbiAgICAgICAgICAgICAgICAgIChtYXRjaCBub2Rlc2ouKGspIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgVW5TcGVjLCBzdGogLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gaWYgc3RqIDw+IC0xIHRoZW4gbm9kZXNvLihrKSA8LSBVblNwZWMsIHN0aiBpblxuICAgICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICAgIHwgRnJlZSwgc3RqIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgbm9kZXNvLihrKSA8LVxuICAgICAgICAgICAgICAgICAgICAgICAgKCBGcmVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdGogPD4gLTEgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0alxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpIClcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgICB8IExpbmsgKG4sIHMpLCBzdGogLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0byA9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgc3RqIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0alxuICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0aVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbicsIGFjYycgPSBnZXRfY2MyIG4gYWNjIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG5vZGVzby4oaykgPC0gTGluayAobicsIHMpLCBzdG8gaW5cbiAgICAgICAgICAgICAgICAgICAgYWNjJykpXG4gICAgICAgICAgICAgIChwYWNrLCBpbmoyLCAodG9kb3MxLCB0b2RvczIpKVxuICAgICAgICAgICAgICBub2Rlc2lcbiAgICAgICAgaW5cbiAgICAgICAgZ2x1ZSBwYWNrJyBpbmoyJyAoTW9kcy5JbnRNYXAuYWRkIGogbm9kZXNvIG5vZGVzKSB0b2RvcydcbiAgICBpblxuICAgIGdsdWUgKGluajFfdG9fMiwgZnJlZV9pZClcbiAgICAgIChSZW5hbWluZy5pZGVudGl0eSAoTW9kcy5JbnRTZXQuZWxlbWVudHMgaW1nKSlcbiAgICAgIE1vZHMuSW50TWFwLmVtcHR5XG4gICAgICAoUmVuYW1pbmcudG9fbGlzdCBpbmoxX3RvXzIsIFtdKVxuICBpblxuICBsZXQgbm9kZXNfYnlfdHlwZSA9IEFycmF5Lm1hcCAoTGlzdC5zb3J0IE1vZHMuaW50X2NvbXBhcmUpIHVzZWRfaWRzIGluXG4gIGxldCAoKSA9XG4gICAgQXJyYXkuaXRlcmlcbiAgICAgIChmdW4gaSB4IC0+XG4gICAgICAgIHJlc2VydmVkX2lkcy4oaSkgPC1cbiAgICAgICAgICBMaXN0X3V0aWwubWVyZ2VfdW5pcSBNb2RzLmludF9jb21wYXJlIG5vZGVzX2J5X3R5cGUuKGkpIHgpXG4gICAgICBhdmFpbGFibGVfaWRzXG4gIGluXG4gICggcGFjaycsXG4gICAge1xuICAgICAgbm9kZXNfYnlfdHlwZTtcbiAgICAgIG5vZGVzO1xuICAgICAgcmVjb2duX25hdiA9IHJhd190b19uYXZpZ2F0aW9uIGZhbHNlIG5vZGVzX2J5X3R5cGUgbm9kZXM7XG4gICAgfSApXG5cbmxldCBidWlsZF9uYXZpZ2F0aW9uX2JldHdlZW4gfmRlYnVnX21vZGUgaW5qX2RfdG9fbyBjY19vIGNjX2QgPVxuICBsZXQgcmVjIGhhbmRsZV9saW5rcyBkaXNjb3ZlcmVkIG5leHRfcm91bmQgcmVjb2duIGludGVybiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgaWYgbmV4dF9yb3VuZCA9IFtdIHRoZW5cbiAgICAgICAgTGlzdC5yZXZfYXBwZW5kIHJlY29nbiBpbnRlcm5cbiAgICAgIGVsc2VcbiAgICAgICAgaGFuZGxlX2xpbmtzIGRpc2NvdmVyZWQgW10gcmVjb2duIGludGVybiBuZXh0X3JvdW5kXG4gICAgfCAoKChpLCBqLCBzKSwgKG4nLCBzJykpIGFzIGgpIDo6IHRvZG9zIC0+XG4gICAgICBsZXQgbiA9IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGlual9kX3RvX28gbicgaW5cbiAgICAgIChtYXRjaCBNb2RzLkludFNldC5tZW0gaiBkaXNjb3ZlcmVkLCBNb2RzLkludFNldC5tZW0gbicgZGlzY292ZXJlZCB3aXRoXG4gICAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgICBoYW5kbGVfbGlua3MgZGlzY292ZXJlZCAoaCA6OiBuZXh0X3JvdW5kKSByZWNvZ24gaW50ZXJuIHRvZG9zXG4gICAgICB8IHRydWUsIHRydWUgLT5cbiAgICAgICAgbGV0IGludGVybicgPVxuICAgICAgICAgICggKE5hdmlnYXRpb24uRXhpc3RpbmcgaSwgcyksXG4gICAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5FeGlzdGluZyBuLCBzJykgKVxuICAgICAgICAgIDo6IGludGVyblxuICAgICAgICBpblxuICAgICAgICBoYW5kbGVfbGlua3MgZGlzY292ZXJlZCBuZXh0X3JvdW5kIHJlY29nbiBpbnRlcm4nIHRvZG9zXG4gICAgICB8IHRydWUsIGZhbHNlIC0+XG4gICAgICAgIGxldCByZWNvZ24nID1cbiAgICAgICAgICAoIChOYXZpZ2F0aW9uLkV4aXN0aW5nIGksIHMpLFxuICAgICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRnJlc2ggKG4sIGZpbmRfdHkgY2NfZCBuJyksIHMnKSApXG4gICAgICAgICAgOjogcmVjb2duXG4gICAgICAgIGluXG4gICAgICAgIGhhbmRsZV9saW5rc1xuICAgICAgICAgIChNb2RzLkludFNldC5hZGQgbicgZGlzY292ZXJlZClcbiAgICAgICAgICBuZXh0X3JvdW5kIHJlY29nbicgaW50ZXJuIHRvZG9zXG4gICAgICB8IGZhbHNlLCB0cnVlIC0+XG4gICAgICAgIGxldCByZWNvZ24nID1cbiAgICAgICAgICAoIChOYXZpZ2F0aW9uLkV4aXN0aW5nIG4sIHMnKSxcbiAgICAgICAgICAgIE5hdmlnYXRpb24uVG9Ob2RlIChOYXZpZ2F0aW9uLkZyZXNoIChpLCBmaW5kX3R5IGNjX2QgaiksIHMpIClcbiAgICAgICAgICA6OiByZWNvZ25cbiAgICAgICAgaW5cbiAgICAgICAgaGFuZGxlX2xpbmtzXG4gICAgICAgICAgKE1vZHMuSW50U2V0LmFkZCBqIGRpc2NvdmVyZWQpXG4gICAgICAgICAgbmV4dF9yb3VuZCByZWNvZ24nIGludGVybiB0b2RvcylcbiAgaW5cbiAgbGV0IGRpc2NvdiwgYWxsX2xpbmtzLCBpbnRlcm4gPVxuICAgIFJlbmFtaW5nLmZvbGRcbiAgICAgIChmdW4gaiBpIChkaXNjLCBsaW5rcywgaW50ZXIpIC0+XG4gICAgICAgIGxldCBub2Rlc2QgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBqIGNjX2Qubm9kZXMgaW5cbiAgICAgICAgbGV0IGRpc2MnLCBub2Rlc28gPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgY2Nfby5ub2RlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGRpc2MsIEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCBub2Rlc2QpIChVblNwZWMsIC0xKVxuICAgICAgICAgIHwgU29tZSBub2Rlc28gLT4gTW9kcy5JbnRTZXQuYWRkIGogZGlzYywgbm9kZXNvXG4gICAgICAgIGluXG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdDJpXG4gICAgICAgICAgKGZ1biBzICgoZGlzLCBsaSwgaW50KSBhcyBhY2MpIChvbCwgb3MpIChkbCwgZHMpIC0+XG4gICAgICAgICAgICBsZXQgKChfLCBfLCBpbnQnKSBhcyBhY2MnKSA9XG4gICAgICAgICAgICAgIGlmIG9zID0gLTEgJiYgZHMgPD4gLTEgdGhlblxuICAgICAgICAgICAgICAgICggZGlzLFxuICAgICAgICAgICAgICAgICAgbGksXG4gICAgICAgICAgICAgICAgICAoKE5hdmlnYXRpb24uRXhpc3RpbmcgaSwgcyksIE5hdmlnYXRpb24uVG9JbnRlcm5hbCBkcykgOjogaW50XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgb2wgPD4gVW5TcGVjIHRoZW5cbiAgICAgICAgICAgICAgYWNjJ1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoIGRsIHdpdGhcbiAgICAgICAgICAgICAgfCBVblNwZWMgLT4gYWNjJ1xuICAgICAgICAgICAgICB8IEZyZWUgLT5cbiAgICAgICAgICAgICAgICAoIGRpcyxcbiAgICAgICAgICAgICAgICAgIGxpLFxuICAgICAgICAgICAgICAgICAgKChOYXZpZ2F0aW9uLkV4aXN0aW5nIGksIHMpLCBOYXZpZ2F0aW9uLlRvTm90aGluZykgOjogaW50JyApXG4gICAgICAgICAgICAgIHwgTGluayAobiwgcycpIC0+XG4gICAgICAgICAgICAgICAgaWYgbiA+ICgqbGEqKSBqIHx8IChuID0gaiAmJiBzID4gcycpIHRoZW5cbiAgICAgICAgICAgICAgICAgIGFjYydcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBkaXMsICgoaSwgaiwgcyksIChuLCBzJykpIDo6IGxpLCBpbnQnXG4gICAgICAgICAgICApKVxuICAgICAgICAgIChkaXNjJywgbGlua3MsIGludGVyKSBub2Rlc28gbm9kZXNkKVxuICAgICAgaW5qX2RfdG9fb1xuICAgICAgKE1vZHMuSW50U2V0LmVtcHR5LCBbXSwgW10pXG4gIGluXG4gIGhhbmRsZV9saW5rcyBkaXNjb3YgW10gW10gaW50ZXJuIGFsbF9saW5rc1xuXG5tb2R1bGUgRW52IDogc2lnXG4gIHR5cGUgdHJhbnNpdGlvbiA9IHtcbiAgICBuZXh0OiBOYXZpZ2F0aW9uLmFic3RyYWN0IE5hdmlnYXRpb24udDtcbiAgICBkc3Q6IGlkOyAoKiBpZCBvZiBjYyBhbmQgYWxzbyBhZGRyZXNzIGluIHRoZSBFbnYuZG9tYWluIG1hcCopXG4gICAgaW5qOiBSZW5hbWluZy50OyAoKiBGcm9tIGRzdCBUbyAoXCJ0aGlzXCIgY2MgKyBleHRyYSBlZGdlKSAqKVxuICB9XG5cbiAgdHlwZSBwb2ludCA9IHtcbiAgICBjb250ZW50OiBjYztcbiAgICByb290czogKGludCBsaXN0ICgqaWRzKikgKiBpbnQgKCp0eSopKSBvcHRpb247XG4gICAgZGVwczogT3BlcmF0b3IuRGVwU2V0LnQ7XG4gICAgbXV0YWJsZSBzb25zOiB0cmFuc2l0aW9uIGxpc3Q7XG4gIH1cblxuICB2YWwgY29udGVudCA6IHBvaW50IC0+IGNjXG4gIHZhbCByb290cyA6IHBvaW50IC0+IChpbnQgbGlzdCAoKmlkcyopICogaW50ICgqdHkqKSkgb3B0aW9uXG4gIHZhbCBkZXBzIDogcG9pbnQgLT4gT3BlcmF0b3IuRGVwU2V0LnRcbiAgdmFsIHNvbnMgOiBwb2ludCAtPiB0cmFuc2l0aW9uIGxpc3RcblxuICB0eXBlIHQgPSB7XG4gICAgc2lnX2RlY2w6IFNpZ25hdHVyZS5zO1xuICAgIGlkX2J5X3R5cGU6IGludCBsaXN0IGFycmF5O1xuICAgIG1heF9vYnM6IGludDtcbiAgICBkb21haW46IHBvaW50IGFycmF5O1xuICAgIGVsZW1lbnRhcmllczogKE5hdmlnYXRpb24uYWJzdHJhY3QgTmF2aWdhdGlvbi5zdGVwICogaWQpIGxpc3QgYXJyYXkgYXJyYXk7XG4gICAgc2luZ2xlX2FnZW50X3BvaW50czogKGlkICogT3BlcmF0b3IuRGVwU2V0LnQpIG9wdGlvbiBhcnJheTtcbiAgfVxuXG4gIHZhbCBnZXQgOiB0IC0+IGlkIC0+IHBvaW50XG4gIHZhbCBnZXRfc2luZ2xlX2FnZW50IDogaW50IC0+IHQgLT4gKGlkICogT3BlcmF0b3IuRGVwU2V0LnQpIG9wdGlvblxuICB2YWwgdG9fbmF2aWdhdGlvbiA6IHQgLT4gaWQgLT4gTmF2aWdhdGlvbi5hYnN0cmFjdCBOYXZpZ2F0aW9uLnRcblxuICB2YWwgZ2V0X2VsZW1lbnRhcnkgOlxuICAgIGRlYnVnX21vZGU6Ym9vbCAtPlxuICAgIHQgLT5cbiAgICBBZ2VudC50IC0+XG4gICAgaW50IC0+XG4gICAgTmF2aWdhdGlvbi5hYnN0cmFjdCBOYXZpZ2F0aW9uLmFycm93IC0+XG4gICAgKGlkICogcG9pbnQgKiBSZW5hbWluZy50KSBvcHRpb25cblxuICB2YWwgc2lnbmF0dXJlcyA6IHQgLT4gU2lnbmF0dXJlLnNcbiAgdmFsIG5ld19vYnNfbWFwIDogdCAtPiAoaWQgLT4gJ2EpIC0+ICdhIE9ic01hcC50XG4gIHZhbCBwcmludCA6IG5vQ291bnRlcnM6Ym9vbCAtPiBGb3JtYXQuZm9ybWF0dGVyIC0+IHQgLT4gdW5pdFxuICB2YWwgdG9feW9qc29uIDogdCAtPiBZb2pzb24uQmFzaWMudFxuICB2YWwgb2ZfeW9qc29uIDogWW9qc29uLkJhc2ljLnQgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdHJhbnNpdGlvbiA9IHtcbiAgICBuZXh0OiBOYXZpZ2F0aW9uLmFic3RyYWN0IE5hdmlnYXRpb24udDtcbiAgICBkc3Q6IGlkOyAoKiBpZCBvZiBjYyBhbmQgYWxzbyBhZGRyZXNzIGluIHRoZSBFbnYuZG9tYWluIG1hcCopXG4gICAgaW5qOiBSZW5hbWluZy50OyAoKiBGcm9tIGRzdCBUbyAoXCJ0aGlzXCIgY2MgKyBleHRyYSBlZGdlKSAqKVxuICB9XG5cbiAgdHlwZSBwb2ludCA9IHtcbiAgICBjb250ZW50OiBjYztcbiAgICByb290czogKGludCBsaXN0ICgqaWRzKikgKiBpbnQgKCp0eSopKSBvcHRpb247XG4gICAgZGVwczogT3BlcmF0b3IuRGVwU2V0LnQ7XG4gICAgbXV0YWJsZSBzb25zOiB0cmFuc2l0aW9uIGxpc3Q7XG4gIH1cblxuICBsZXQgY29udGVudCBwID0gcC5jb250ZW50XG4gIGxldCByb290cyBwID0gcC5yb290c1xuICBsZXQgZGVwcyBwID0gcC5kZXBzXG4gIGxldCBzb25zIHAgPSBwLnNvbnNcblxuICB0eXBlIHQgPSB7XG4gICAgc2lnX2RlY2w6IFNpZ25hdHVyZS5zO1xuICAgIGlkX2J5X3R5cGU6IGludCBsaXN0IGFycmF5O1xuICAgIG1heF9vYnM6IGludDtcbiAgICBkb21haW46IHBvaW50IGFycmF5O1xuICAgIGVsZW1lbnRhcmllczogKE5hdmlnYXRpb24uYWJzdHJhY3QgTmF2aWdhdGlvbi5zdGVwICogaWQpIGxpc3QgYXJyYXkgYXJyYXk7XG4gICAgc2luZ2xlX2FnZW50X3BvaW50czogKGlkICogT3BlcmF0b3IuRGVwU2V0LnQpIG9wdGlvbiBhcnJheTtcbiAgfVxuXG4gIGxldCBzaWduYXR1cmVzIGVudiA9IGVudi5zaWdfZGVjbFxuXG4gIGxldCBwcmludCB+bm9Db3VudGVycyBmIGVudiA9XG4gICAgbGV0IHBwX3BvaW50IHBfaWQgZiBwID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxob3YgMj5AWzxoPiVhQF1AICV0LT4gQFsoJWEpQF1AXVwiXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIHByaW50X2NjIH5ub0NvdW50ZXJzIH5zaWdzOmVudi5zaWdfZGVjbCB+Y2NfaWQ6cF9pZCB+d2l0aF9pZDp0cnVlIHgpXG4gICAgICAgIHAuY29udGVudFxuICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICBpZiBwLnJvb3RzIDw+IE5vbmUgdGhlblxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbWyVhXUBdQCBcIlxuICAgICAgICAgICAgICAoUHAuc2V0IE9wZXJhdG9yLkRlcFNldC5lbGVtZW50cyBQcC5zcGFjZSBPcGVyYXRvci5wcmludF9yZXZfZGVwKVxuICAgICAgICAgICAgICBwLmRlcHMpXG4gICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiBzIC0+XG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEoJWEpQCAlaUBdXCJcbiAgICAgICAgICAgICAgIChOYXZpZ2F0aW9uLnByaW50IGVudi5zaWdfZGVjbCAoZmluZF90eSBwLmNvbnRlbnQpKVxuICAgICAgICAgICAgICAgcy5uZXh0IFJlbmFtaW5nLnByaW50IHMuaW5qIHMuZHN0KSlcbiAgICAgICAgcC5zb25zXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUBdXCIgKFBwLmFycmF5IFBwLnNwYWNlIHBwX3BvaW50KSBlbnYuZG9tYWluXG5cbiAgbGV0IGdldF9zaW5nbGVfYWdlbnQgdHkgZW52ID0gZW52LnNpbmdsZV9hZ2VudF9wb2ludHMuKHR5KVxuICBsZXQgZ2V0IGVudiBjY19pZCA9IGVudi5kb21haW4uKGNjX2lkKVxuXG4gIGxldCB0b19uYXZpZ2F0aW9uIGVudiBpZCA9XG4gICAgbGV0IGNjID0gKGdldCBlbnYgaWQpLmNvbnRlbnQgaW5cbiAgICByYXdfdG9fbmF2aWdhdGlvbiB0cnVlIGNjLm5vZGVzX2J5X3R5cGUgY2Mubm9kZXNcblxuICBsZXQgdHJhbnNpdGlvbl90b195b2pzb24gdCA9XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiZHN0XCIsIGBJbnQgdC5kc3Q7XG4gICAgICAgIFwiaW5qXCIsIFJlbmFtaW5nLnRvX3lvanNvbiB0LmluajtcbiAgICAgICAgXCJuYXZcIiwgTmF2aWdhdGlvbi50b195b2pzb24gdC5uZXh0O1xuICAgICAgXVxuXG4gIGxldCB0cmFuc2l0aW9uX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgWyAoXCJkc3RcIiwgYEludCBkc3QpOyAoXCJpbmpcIiwgcik7IChcIm5hdlwiLCBuKSBdXG4gICAgfCBgQXNzb2MgWyAoXCJkc3RcIiwgYEludCBkc3QpOyAoXCJuYXZcIiwgbik7IChcImlualwiLCByKSBdXG4gICAgfCBgQXNzb2MgWyAoXCJpbmpcIiwgcik7IChcIm5hdlwiLCBuKTsgKFwiZHN0XCIsIGBJbnQgZHN0KSBdXG4gICAgfCBgQXNzb2MgWyAoXCJuYXZcIiwgbik7IChcImlualwiLCByKTsgKFwiZHN0XCIsIGBJbnQgZHN0KSBdXG4gICAgfCBgQXNzb2MgWyAoXCJpbmpcIiwgcik7IChcImRzdFwiLCBgSW50IGRzdCk7IChcIm5hdlwiLCBuKSBdXG4gICAgfCBgQXNzb2MgWyAoXCJuYXZcIiwgbik7IChcImRzdFwiLCBgSW50IGRzdCk7IChcImlualwiLCByKSBdIC0+XG4gICAgICB7IGRzdDsgaW5qID0gUmVuYW1pbmcub2ZfeW9qc29uIHI7IG5leHQgPSBOYXZpZ2F0aW9uLm9mX3lvanNvbiBuIH1cbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHRyYW5zaXRpb25cIiwgeCkpXG5cbiAgbGV0IHBvaW50X3RvX3lvanNvbiBwID1cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJjb250ZW50XCIsIHRvX3lvanNvbiBwLmNvbnRlbnQ7XG4gICAgICAgICggXCJyb290c1wiLFxuICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgICAgKGZ1biAoaWRzLCB0eSkgLT5cbiAgICAgICAgICAgICAgYExpc3QgWyBgTGlzdCAoTGlzdC5tYXAgSnNvblV0aWwub2ZfaW50IGlkcyk7IGBJbnQgdHkgXSlcbiAgICAgICAgICAgIHAucm9vdHMgKTtcbiAgICAgICAgXCJkZXBzXCIsIE9wZXJhdG9yLmRlcHNldF90b195b2pzb24gcC5kZXBzO1xuICAgICAgICBcInNvbnNcIiwgYExpc3QgKExpc3QubWFwIHRyYW5zaXRpb25fdG9feW9qc29uIHAuc29ucyk7XG4gICAgICBdXG5cbiAgbGV0IHBvaW50X29mX3lvanNvbiBzaWdfZGVjbCA9IGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDQgLT5cbiAgICAgICh0cnlcbiAgICAgICAgIHtcbiAgICAgICAgICAgY29udGVudCA9IG9mX3lvanNvbiBzaWdfZGVjbCAoTGlzdC5hc3NvYyBcImNvbnRlbnRcIiBsKTtcbiAgICAgICAgICAgcm9vdHMgPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwicm9vdHNcIiBsIHdpdGhcbiAgICAgICAgICAgICB8IGBOdWxsIC0+IE5vbmVcbiAgICAgICAgICAgICB8IGBMaXN0IFsgYExpc3QgaWRzOyBgSW50IHR5IF0gLT5cbiAgICAgICAgICAgICAgIFNvbWUgKExpc3QubWFwIFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCBpZHMsIHR5KVxuICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgICBkZXBzID0gT3BlcmF0b3IuZGVwc2V0X29mX3lvanNvbiAoTGlzdC5hc3NvYyBcImRlcHNcIiBsKTtcbiAgICAgICAgICAgc29ucyA9XG4gICAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJzb25zXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgTGlzdCBsIC0+IExpc3QubWFwIHRyYW5zaXRpb25fb2ZfeW9qc29uIGxcbiAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgIH1cbiAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGRvbWFpbiBwb2ludFwiLCB4KSkpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBkb21haW4gcG9pbnRcIiwgeCkpXG5cbiAgbGV0IHRvX3lvanNvbiBlbnYgPVxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcInNpZ25hdHVyZXNcIiwgU2lnbmF0dXJlLnRvX2pzb24gZW52LnNpZ19kZWNsO1xuICAgICAgICAoIFwic2luZ2xlX2FnZW50c1wiLFxuICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgKGZ1biB4IGFjYyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBgTnVsbFxuICAgICAgICAgICAgICAgICB8IFNvbWUgKGlkLCBfZGVwcykgLT4gYEludCBpZClcbiAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgZW52LnNpbmdsZV9hZ2VudF9wb2ludHMgW10pICk7XG4gICAgICAgICggXCJlbGVtZW50YXJpZXNcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT5cbiAgICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChzdCwgZCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgTGlzdCBbIE5hdmlnYXRpb24uc3RlcF90b195b2pzb24gc3Q7IGBJbnQgZCBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4KVxuICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgICAgICAgIHggW10pXG4gICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgIGVudi5lbGVtZW50YXJpZXMgW10pICk7XG4gICAgICAgICggXCJkYWdcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT4gcG9pbnRfdG9feW9qc29uIHggOjogYWNjKVxuICAgICAgICAgICAgICAgZW52LmRvbWFpbiBbXSkgKTtcbiAgICAgICAgKCBcImlkX2J5X3R5cGVcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT4gYExpc3QgKExpc3QubWFwIChmdW4gaSAtPiBgSW50IGkpIHgpIDo6IGFjYylcbiAgICAgICAgICAgICAgIGVudi5pZF9ieV90eXBlIFtdKSApO1xuICAgICAgICBcIm1heF9vYnNcIiwgYEludCBlbnYubWF4X29icztcbiAgICAgIF1cblxuICBsZXQgb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gNiAtPlxuICAgICAgbGV0IHNpZ19kZWNsID0gU2lnbmF0dXJlLm9mX2pzb24gKExpc3QuYXNzb2MgXCJzaWduYXR1cmVzXCIgbCkgaW5cbiAgICAgICh0cnlcbiAgICAgICAgIHtcbiAgICAgICAgICAgc2lnX2RlY2w7XG4gICAgICAgICAgIHNpbmdsZV9hZ2VudF9wb2ludHMgPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwic2luZ2xlX2FnZW50c1wiIGwgd2l0aFxuICAgICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvbiAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICB8IGBJbnQgaSAtPiBpLCBPcGVyYXRvci5EZXBTZXQuZW1wdHlcbiAgICAgICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIldyb25nIHNpbmdsZV9hZ2VudFwiLCB4KSkpKVxuICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICAgIGVsZW1lbnRhcmllcyA9XG4gICAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJlbGVtZW50YXJpZXNcIiBsIHdpdGhcbiAgICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBgTGlzdCBsIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBMaXN0IFsgczsgYEludCBkIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uc3RlcF9vZl95b2pzb24gcywgZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgICBkb21haW4gPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwiZGFnXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgTGlzdCBsIC0+IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IChwb2ludF9vZl95b2pzb24gc2lnX2RlY2wpIGxcbiAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgICAgaWRfYnlfdHlwZSA9XG4gICAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJpZF9ieV90eXBlXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgTGlzdCBsIC0+XG4gICAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgYEludCBpIC0+IGlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgICBtYXhfb2JzID1cbiAgICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcIm1heF9vYnNcIiBsIHdpdGhcbiAgICAgICAgICAgICB8IGBJbnQgaSAtPiBpXG4gICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICB9XG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCB1cGRhdGUgZG9tYWluXCIsIHgpKSlcbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHVwZGF0ZSBkb21haW5cIiwgeCkpXG5cbiAgbGV0IG5ld19vYnNfbWFwIGVudiBmID0gTW9kcy5EeW5BcnJheS5pbml0IGVudi5tYXhfb2JzIGZcblxuICBsZXQgZ2V0X2VsZW1lbnRhcnkgfmRlYnVnX21vZGUgZG9tYWluICgoXywgdHkpIGFzIG5vZGUpIHMgYXJyb3cgPVxuICAgIGxldCBzYSA9IGRvbWFpbi5lbGVtZW50YXJpZXMuKHR5KSBpblxuICAgIGxldCByZWMgZmluZF9nb29kX2VkZ2UgPSBmdW5jdGlvblxuICAgICAgKCpvbmUgc2hvdWxkIHVzZSBhIGhhc2ggaGVyZSopXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgKHN0LCBjY19pZCkgOjogdGFpbCAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgTmF2aWdhdGlvbi5jb21wYXRpYmxlX2ZyZXNoX3BvaW50IH5kZWJ1Z19tb2RlIHN0IG5vZGUgcyBhcnJvd1xuICAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmluZF9nb29kX2VkZ2UgdGFpbFxuICAgICAgICB8IFNvbWUgaW5qJyAtPlxuICAgICAgICAgIGxldCBkc3QgPSBnZXQgZG9tYWluIGNjX2lkIGluXG4gICAgICAgICAgU29tZSAoY2NfaWQsIGRzdCwgaW5qJykpXG4gICAgaW5cbiAgICBmaW5kX2dvb2RfZWRnZSBzYS4ocylcbmVuZFxuXG5sZXQgcHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZCBmIGlkID1cbiAgbWF0Y2ggZG9tYWluIHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBpZFxuICB8IFNvbWUgZW52IC0+XG4gICAgbGV0IGNjX2lkID1cbiAgICAgIGlmIHdpdGhfaWQgdGhlblxuICAgICAgICBTb21lIGlkXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBpblxuICAgIHByaW50X2NjIH5ub0NvdW50ZXJzIH5zaWdzOihFbnYuc2lnbmF0dXJlcyBlbnYpID9jY19pZCB+d2l0aF9pZCBmXG4gICAgICBlbnYuRW52LmRvbWFpbi4oaWQpLkVudi5jb250ZW50XG5cbmxldCBlbWJlZGRpbmdzX3RvX2Z1bGx5X3NwZWNpZmllZCB+ZGVidWdfbW9kZSBkb21haW4gYV9pZCBiID1cbiAgbGV0IGEgPSBkb21haW4uRW52LmRvbWFpbi4oYV9pZCkuRW52LmNvbnRlbnQgaW5cbiAgbWF0Y2ggZmluZF9yb290IGEgd2l0aFxuICB8IE5vbmUgLT4gWyBSZW5hbWluZy5lbXB0eSAoKSBdXG4gIHwgU29tZSAoaCwgdHkpIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIGFnIC0+XG4gICAgICAgIG1hdGNoIGFyZV9jb21wYXRpYmxlIH5kZWJ1Z19tb2RlIH5zdHJpY3Q6ZmFsc2UgaCBhIGFnIGIgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gLT4gYWNjXG4gICAgICAgIHwgU29tZSByLCBfIC0+IHIgOjogYWNjKVxuICAgICAgW10gYi5ub2Rlc19ieV90eXBlLih0eSlcblxudHlwZSBwcmVwb2ludCA9IHtcbiAgcF9pZDogaWQ7XG4gIGVsZW1lbnQ6IGNjO1xuICBkZXBlbmRpbmc6IE9wZXJhdG9yLkRlcFNldC50O1xuICByb290czogKGludCBsaXN0ICgqaWRzKikgKiBpbnQgKCp0eSopKSBvcHRpb247XG59XG5cbnR5cGUgd29yayA9IHtcbiAgc2lnczogU2lnbmF0dXJlLnM7XG4gIGNjX2VudjogcHJlcG9pbnQgbGlzdCBNb2RzLkludE1hcC50IE1vZHMuSW50TWFwLnQ7XG4gIHJlc2VydmVkX2lkOiBpbnQgbGlzdCBhcnJheTtcbiAgdXNlZF9pZDogaW50IGxpc3QgYXJyYXk7XG4gIGZyZWVfaWQ6IGludDtcbiAgY2Nfbm9kZXM6IChsaW5rICogaW50KSBhcnJheSBNb2RzLkludE1hcC50O1xuICBkYW5nbGluZzogaW50OyAoKiBub2RlX2lkICopXG59XG5cbm1vZHVsZSBQcmVFbnYgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHNpZ19kZWNsOiBTaWduYXR1cmUucztcbiAgICBpZF9ieV90eXBlOiBpbnQgbGlzdCBhcnJheTtcbiAgICBuYl9pZDogaW50O1xuICAgIGRvbWFpbjogcHJlcG9pbnQgbGlzdCBNb2RzLkludE1hcC50IE1vZHMuSW50TWFwLnQ7XG4gICAgbXV0YWJsZSB1c2VkX2J5X2FfYmVnaW5fbmV3OiBib29sO1xuICB9XG5cbiAgdHlwZSBzdGF0ID0geyBzdGF0X25vZGVzOiBpbnQ7IHN0YXRfbmF2X3N0ZXBzOiBpbnQgfVxuXG4gIGxldCBmcmVzaCBzaWdzIGlkX2J5X3R5cGUgbmJfaWQgZG9tYWluID1cbiAgICB7IHNpZ19kZWNsID0gc2lnczsgaWRfYnlfdHlwZTsgbmJfaWQ7IGRvbWFpbjsgdXNlZF9ieV9hX2JlZ2luX25ldyA9IGZhbHNlIH1cblxuICBsZXQgZW1wdHkgc2lncyA9XG4gICAgbGV0IG5idCcgPSBBcnJheS5tYWtlIChTaWduYXR1cmUuc2l6ZSBzaWdzKSBbXSBpblxuICAgIGZyZXNoIHNpZ3MgbmJ0JyAxIE1vZHMuSW50TWFwLmVtcHR5XG5cbiAgbGV0IGNoZWNrX3ZpdGFsaXR5IGVudiA9IGFzc2VydCAoZW52LnVzZWRfYnlfYV9iZWdpbl9uZXcgPSBmYWxzZSlcblxuICBsZXQgdG9fd29yayBlbnYgPVxuICAgIGxldCAoKSA9IGNoZWNrX3ZpdGFsaXR5IGVudiBpblxuICAgIGxldCAoKSA9IGVudi51c2VkX2J5X2FfYmVnaW5fbmV3IDwtIHRydWUgaW5cbiAgICB7XG4gICAgICBzaWdzID0gZW52LnNpZ19kZWNsO1xuICAgICAgY2NfZW52ID0gZW52LmRvbWFpbjtcbiAgICAgIHJlc2VydmVkX2lkID0gZW52LmlkX2J5X3R5cGU7XG4gICAgICB1c2VkX2lkID0gQXJyYXkubWFrZSAoQXJyYXkubGVuZ3RoIGVudi5pZF9ieV90eXBlKSBbXTtcbiAgICAgIGZyZWVfaWQgPSBlbnYubmJfaWQ7XG4gICAgICBjY19ub2RlcyA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgICAgZGFuZ2xpbmcgPSAwO1xuICAgIH1cblxuICBsZXQgc2lncyBlbnYgPSBlbnYuc2lnX2RlY2xcblxuICBsZXQgZW1wdHlfcG9pbnQgc2lncyA9XG4gICAge1xuICAgICAgRW52LmNvbnRlbnQgPSBlbXB0eV9jYyBzaWdzO1xuICAgICAgRW52LnJvb3RzID0gTm9uZTtcbiAgICAgIEVudi5kZXBzID0gT3BlcmF0b3IuRGVwU2V0LmVtcHR5O1xuICAgICAgRW52LnNvbnMgPSBbXTtcbiAgICB9XG5cbiAgbGV0IGZpbGxfZWxlbSBzaWdzIGJvdHRvbSA9XG4gICAgbGV0IGVsZW1lbnRhcmllcyA9XG4gICAgICBBcnJheS5pbml0IChTaWduYXR1cmUuc2l6ZSBzaWdzKSAoZnVuIGkgLT5cbiAgICAgICAgICBBcnJheS5tYWtlIChTaWduYXR1cmUuYXJpdHkgc2lncyBpKSBbXSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBNb2RzLkludE1hcC5pdGVyXG4gICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgIExpc3QuaXRlciAoZnVuIHAgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggcC5lbGVtZW50LnJlY29nbl9uYXYgd2l0aFxuICAgICAgICAgICAgICB8IFtdIHwgKChOYXZpZ2F0aW9uLkV4aXN0aW5nIF8sIF8pLCBfKSA6OiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICB8ICgoTmF2aWdhdGlvbi5GcmVzaCBfLCBfKSwgXykgOjogXyA6OiBfIC0+ICgpXG4gICAgICAgICAgICAgIHwgWyAoKChOYXZpZ2F0aW9uLkZyZXNoIChfLCB0eTEpLCBzMSksIGFycikgYXMgc3RlcCkgXSAtPlxuICAgICAgICAgICAgICAgIGxldCBzYTEgPSBlbGVtZW50YXJpZXMuKHR5MSkgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBzYTEuKHMxKSA8LSAoc3RlcCwgcC5wX2lkKSA6OiBzYTEuKHMxKSBpblxuICAgICAgICAgICAgICAgIChtYXRjaCBhcnIgd2l0aFxuICAgICAgICAgICAgICAgIHwgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRnJlc2ggKF8sIHR5MiksIHMyKSAtPlxuICAgICAgICAgICAgICAgICAgaWYgdHkxID0gdHkyICYmIHMxIDw+IHMyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgc2ExLihzMikgPC0gKHN0ZXAsIHAucF9pZCkgOjogc2ExLihzMilcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgc2EyID0gZWxlbWVudGFyaWVzLih0eTIpIGluXG4gICAgICAgICAgICAgICAgICAgIHNhMi4oczIpIDwtIChzdGVwLCBwLnBfaWQpIDo6IHNhMi4oczIpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfCBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5FeGlzdGluZyBfLCBzMikgLT5cbiAgICAgICAgICAgICAgICAgIHNhMS4oczIpIDwtIChzdGVwLCBwLnBfaWQpIDo6IHNhMS4oczIpXG4gICAgICAgICAgICAgICAgfCBOYXZpZ2F0aW9uLlRvTm90aGluZyB8IE5hdmlnYXRpb24uVG9JbnRlcm5hbCBfIC0+ICgpKSkpXG4gICAgICAgIGJvdHRvbVxuICAgIGluXG4gICAgZWxlbWVudGFyaWVzXG5cbiAgbGV0IHByZXNlbnRfaW5fZHN0IH5kZWJ1Z19tb2RlIGRzdCBpbmoyZHN0IG5hdiA9XG4gICAgbGV0IHJlYyBhdXhfcHJlc2VudF9pbl9kc3QgaW5qJyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFNvbWUgaW5qJ1xuICAgICAgfCAoKE5hdmlnYXRpb24uRnJlc2ggXywgXyksIF8pIDo6IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8ICgoTmF2aWdhdGlvbi5FeGlzdGluZyBhZywgc2kpLCBOYXZpZ2F0aW9uLlRvTm90aGluZykgOjogdCAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgTW9kcy5JbnRNYXAuZmluZF9vcHRpb25cbiAgICAgICAgICAgICAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qJyBhZylcbiAgICAgICAgICAgICBkc3Qubm9kZXNcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IFNvbWUgbiAtPlxuICAgICAgICAgIGlmIGZzdCBuLihzaSkgPSBGcmVlIHRoZW5cbiAgICAgICAgICAgIGF1eF9wcmVzZW50X2luX2RzdCBpbmonIHRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBOb25lKVxuICAgICAgfCAoKE5hdmlnYXRpb24uRXhpc3RpbmcgYWcsIHNpKSwgTmF2aWdhdGlvbi5Ub0ludGVybmFsIGkpIDo6IHQgLT5cbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgYWcpXG4gICAgICAgICAgICAgZHN0Lm5vZGVzXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICBpZiBzbmQgbi4oc2kpID0gaSB0aGVuXG4gICAgICAgICAgICBhdXhfcHJlc2VudF9pbl9kc3QgaW5qJyB0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTm9uZSlcbiAgICAgIHwgKCAoTmF2aWdhdGlvbi5FeGlzdGluZyBhZywgc2kpLFxuICAgICAgICAgIE5hdmlnYXRpb24uVG9Ob2RlIChOYXZpZ2F0aW9uLkV4aXN0aW5nIGFnJywgc2knKSApXG4gICAgICAgIDo6IHQgLT5cbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgYWcpXG4gICAgICAgICAgICAgZHN0Lm5vZGVzXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICBpZiBmc3Qgbi4oc2kpID0gTGluayAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qJyBhZycsIHNpJykgdGhlblxuICAgICAgICAgICAgYXV4X3ByZXNlbnRfaW5fZHN0IGluaicgdFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE5vbmUpXG4gICAgICB8ICggKE5hdmlnYXRpb24uRXhpc3RpbmcgYWcsIHNpKSxcbiAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5GcmVzaCAoYWcnLCB0eScpLCBzaScpIClcbiAgICAgICAgOjogdCAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgTW9kcy5JbnRNYXAuZmluZF9vcHRpb25cbiAgICAgICAgICAgICAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qJyBhZylcbiAgICAgICAgICAgICBkc3Qubm9kZXNcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IFNvbWUgbiAtPlxuICAgICAgICAgIChtYXRjaCBuLihzaSkgd2l0aFxuICAgICAgICAgIHwgTGluayAoYWdsLCBzaWwpLCBfIC0+XG4gICAgICAgICAgICBpZiBMaXN0Lm1lbSBhZ2wgZHN0Lm5vZGVzX2J5X3R5cGUuKHR5JykgJiYgc2knID0gc2lsIHRoZW4gKFxuICAgICAgICAgICAgICBtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgYWcnIGFnbCBpbmonIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIGluaicgLT4gYXV4X3ByZXNlbnRfaW5fZHN0IGluaicgdFxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICB8IChGcmVlIHwgVW5TcGVjKSwgXyAtPiBOb25lKSlcbiAgICBpblxuICAgIGF1eF9wcmVzZW50X2luX2RzdCBpbmoyZHN0IG5hdlxuXG4gIGxldCByZWMgaW5zZXJ0X25hdmlnYXRpb24gfmRlYnVnX21vZGUgaWRfYnlfdHlwZSBuYl9pZCBkb21haW4gZHN0X2lkIGRzdFxuICAgICAgaW5qMmRzdCBwX2lkID1cbiAgICBpZiBwX2lkID0gZHN0X2lkIHRoZW5cbiAgICAgIDBcbiAgICBlbHNlIChcbiAgICAgIGxldCBwb2ludCA9IGRvbWFpbi4ocF9pZCkgaW5cbiAgICAgIGxldCByZWMgaW5zZXJ0X25hdl9zb25zID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIGxldCAoaW5qX2Uyc3VwLCBfKSwgc3VwID1cbiAgICAgICAgICAgIG1lcmdlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgaWRfYnlfdHlwZSBuYl9pZCBpbmoyZHN0XG4gICAgICAgICAgICAgIHBvaW50LkVudi5jb250ZW50IGRzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgKG1hdGNoIGVxdWFsIH5kZWJ1Z19tb2RlIHN1cCBkc3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IFNvbWUgaW5qX3N1cDJkc3QgLT5cbiAgICAgICAgICAgIGxldCBpbmpfZHN0MnAgPVxuICAgICAgICAgICAgICBSZW5hbWluZy5pbnZlcnNlXG4gICAgICAgICAgICAgICAgKFJlbmFtaW5nLmNvbXBvc2UgfmRlYnVnX21vZGUgZmFsc2UgaW5qX2Uyc3VwIGlual9zdXAyZHN0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBuYXYgPVxuICAgICAgICAgICAgICBidWlsZF9uYXZpZ2F0aW9uX2JldHdlZW4gfmRlYnVnX21vZGUgaW5qX2RzdDJwIHBvaW50LkVudi5jb250ZW50XG4gICAgICAgICAgICAgICAgZHN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgcG9pbnQuRW52LnNvbnMgPC1cbiAgICAgICAgICAgICAgICB7IEVudi5kc3QgPSBkc3RfaWQ7IEVudi5pbmogPSBpbmpfZHN0MnA7IEVudi5uZXh0ID0gbmF2IH1cbiAgICAgICAgICAgICAgICA6OiBwb2ludC5FbnYuc29uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIExpc3QubGVuZ3RoIG5hdilcbiAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAobWF0Y2ggcHJlc2VudF9pbl9kc3QgfmRlYnVnX21vZGUgZHN0IGluajJkc3QgaC5FbnYubmV4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGluc2VydF9uYXZfc29ucyB0XG4gICAgICAgICAgfCBTb21lIGlual9wJzJkc3QgLT5cbiAgICAgICAgICAgIGluc2VydF9uYXZpZ2F0aW9uIH5kZWJ1Z19tb2RlIGlkX2J5X3R5cGUgbmJfaWQgZG9tYWluIGRzdF9pZCBkc3RcbiAgICAgICAgICAgICAgKFJlbmFtaW5nLmNvbXBvc2UgfmRlYnVnX21vZGUgZmFsc2UgaC5FbnYuaW5qIGlual9wJzJkc3QpXG4gICAgICAgICAgICAgIGguRW52LmRzdClcbiAgICAgIGluXG4gICAgICBpbnNlcnRfbmF2X3NvbnMgcG9pbnQuRW52LnNvbnNcbiAgICApXG5cbiAgbGV0IGFkZF9jYyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWwgP29yaWdpbiBlbnYgcF9pZCBlbGVtZW50ID1cbiAgICBsZXQgdyA9IHdlaWdodCBlbGVtZW50IGluXG4gICAgbGV0IGhhc2ggPSBjb2Fyc2VfaGFzaCBlbGVtZW50IGluXG4gICAgbGV0IHJlYyBhdXggPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgcm9vdHMgPVxuICAgICAgICAgIGlmIHRvcGxldmVsIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2ggZmluZF9yb290IGVsZW1lbnQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSAocmlkLCBydHkpIC0+XG4gICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAoIExpc3Quc29ydCBNb2RzLmludF9jb21wYXJlXG4gICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuIHIgLT4gUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgciByaWQpXG4gICAgICAgICAgICAgICAgICAgICAgIChhdXRvbW9ycGhpc21zIH5kZWJ1Z19tb2RlIGVsZW1lbnQpKSxcbiAgICAgICAgICAgICAgICAgIHJ0eSApXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBOb25lXG4gICAgICAgIGluXG4gICAgICAgICggW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwX2lkO1xuICAgICAgICAgICAgICBlbGVtZW50O1xuICAgICAgICAgICAgICByb290cztcbiAgICAgICAgICAgICAgZGVwZW5kaW5nID0gYWRkX29yaWdpbiBPcGVyYXRvci5EZXBTZXQuZW1wdHkgb3JpZ2luO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBdLFxuICAgICAgICAgIGlkZW50aXR5X2luamVjdGlvbiBlbGVtZW50LFxuICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgcF9pZCApXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICAobWF0Y2ggZXF1YWwgfmRlYnVnX21vZGUgZWxlbWVudCBoLmVsZW1lbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgYSwgYiwgYywgZCA9IGF1eCB0IGluXG4gICAgICAgICAgaCA6OiBhLCBiLCBjLCBkXG4gICAgICAgIHwgU29tZSByIC0+XG4gICAgICAgICAgbGV0IHJvb3RzID1cbiAgICAgICAgICAgIGlmIGgucm9vdHMgPD4gTm9uZSB8fCBub3QgdG9wbGV2ZWwgdGhlblxuICAgICAgICAgICAgICBoLnJvb3RzXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbWF0Y2ggZmluZF9yb290IGVsZW1lbnQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgKHJpZCwgcnR5KSAtPlxuICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICggTGlzdC5zb3J0IE1vZHMuaW50X2NvbXBhcmVcbiAgICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIHIgLT4gUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgciByaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGF1dG9tb3JwaGlzbXMgfmRlYnVnX21vZGUgZWxlbWVudCkpLFxuICAgICAgICAgICAgICAgICAgICBydHkgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCB7XG4gICAgICAgICAgICAgIHBfaWQgPSBoLnBfaWQ7XG4gICAgICAgICAgICAgIGVsZW1lbnQgPSBoLmVsZW1lbnQ7XG4gICAgICAgICAgICAgIGRlcGVuZGluZyA9IGFkZF9vcmlnaW4gaC5kZXBlbmRpbmcgb3JpZ2luO1xuICAgICAgICAgICAgICByb290cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDo6IHQsXG4gICAgICAgICAgICByLFxuICAgICAgICAgICAgaC5lbGVtZW50LFxuICAgICAgICAgICAgaC5wX2lkICkpXG4gICAgaW5cbiAgICBsZXQgZW52X3cgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRNYXAuZW1wdHkgdyBlbnYgaW5cbiAgICBsZXQgZW52X3dfaCwgciwgb3V0LCBvdXRfaWQgPVxuICAgICAgYXV4IChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW10gaGFzaCBlbnZfdylcbiAgICBpblxuICAgIE1vZHMuSW50TWFwLmFkZCB3IChNb2RzLkludE1hcC5hZGQgaGFzaCBlbnZfd19oIGVudl93KSBlbnYsIHIsIG91dCwgb3V0X2lkXG5cbiAgbGV0IHJlYyBzYXR1cmF0ZV9vbmUgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyB0aGlzIG1heF9sIGxldmVsXG4gICAgICAoKF8sIGRvbWFpbikgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgaWYgbGV2ZWwgPCBtYXhfbCB0aGVuXG4gICAgICAgIHNhdHVyYXRlX29uZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIHRoaXMgbWF4X2wgKHN1Y2MgbGV2ZWwpIGFjY1xuICAgICAgICAgIChNb2RzLkludE1hcC5mb2xkXG4gICAgICAgICAgICAgKGZ1biBfIC0+IExpc3QucmV2X2FwcGVuZClcbiAgICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50TWFwLmVtcHR5IChzdWNjIGxldmVsKSBkb21haW4pXG4gICAgICAgICAgICAgW10pXG4gICAgICBlbHNlXG4gICAgICAgIGFjY1xuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgbmV3cyA9XG4gICAgICAgIG1hdGNoIHNoYXJpbmcgd2l0aFxuICAgICAgICB8IE5vX3NoYXJpbmcgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgTWF4X3NoYXJpbmcgLT4gaW5mcyBzaWdzIH5kZWJ1Z19tb2RlIHRoaXMuZWxlbWVudCBoLmVsZW1lbnRcbiAgICAgICAgfCBDb21wYXRpYmxlX3BhdHRlcm5zIC0+XG4gICAgICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAgICAoZnVuIHIgLT4gaW50ZXJzZWN0aW9uIHIgdGhpcy5lbGVtZW50IGguZWxlbWVudClcbiAgICAgICAgICAgIChtYXRjaGluZ3MgfmRlYnVnX21vZGUgc2lncyB0aGlzLmVsZW1lbnQgaC5lbGVtZW50KVxuICAgICAgaW5cbiAgICAgIGxldCBhY2MnID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChtaWQsIGFjYykgY2MgLT5cbiAgICAgICAgICAgIGxldCBpZCcgPSBzdWNjIG1pZCBpblxuICAgICAgICAgICAgbGV0IHgsIF8sIF8sIGlkID0gYWRkX2NjIH5kZWJ1Z19tb2RlIH50b3BsZXZlbDpmYWxzZSBhY2MgaWQnIGNjIGluXG4gICAgICAgICAgICAoIChpZiBpZCA9IGlkJyB0aGVuXG4gICAgICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIG1pZCksXG4gICAgICAgICAgICAgIHggKSlcbiAgICAgICAgICBhY2MgbmV3c1xuICAgICAgaW5cbiAgICAgIHNhdHVyYXRlX29uZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIHRoaXMgbWF4X2wgbGV2ZWwgYWNjJyB0XG5cbiAgbGV0IHJlYyBzYXR1cmF0ZV9sZXZlbCB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIG1heF9sIGxldmVsXG4gICAgICAoKF8sIGRvbWFpbikgYXMgYWNjKSA9XG4gICAgaWYgbGV2ZWwgPCAyIHRoZW5cbiAgICAgIGFjY1xuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gbGV2ZWwgZG9tYWluIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBzYXR1cmF0ZV9sZXZlbCB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIG1heF9sIChwcmVkIGxldmVsKSBhY2NcbiAgICAgIHwgU29tZSBsaXN0IC0+XG4gICAgICAgIGxldCByZWMgYXV4IGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgc2F0dXJhdGVfbGV2ZWwgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyBtYXhfbCAocHJlZCBsZXZlbCkgYWNjXG4gICAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAgIGF1eCAoc2F0dXJhdGVfb25lIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgaCBtYXhfbCBsZXZlbCBhY2MgdCkgdFxuICAgICAgICBpblxuICAgICAgICBhdXggYWNjIChNb2RzLkludE1hcC5mb2xkIChmdW4gXyAtPiBMaXN0LnJldl9hcHBlbmQpIGxpc3QgW10pXG4gICAgKVxuXG4gIGxldCBzYXR1cmF0ZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIGRvbWFpbiA9XG4gICAgbWF0Y2ggTW9kcy5JbnRNYXAubWF4X2tleSBkb21haW4gd2l0aFxuICAgIHwgTm9uZSAtPiAwLCBkb21haW5cbiAgICB8IFNvbWUgbCAtPlxuICAgICAgbGV0IHNpID1cbiAgICAgICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgICAgTW9kcy5JbnRNYXAuZm9sZCAoZnVuIF8gbCBtIC0+XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBtIHAgLT4gbWF4IG0gcC5wX2lkKSBtIGwpKVxuICAgICAgICAgIGRvbWFpbiAwXG4gICAgICBpblxuICAgICAgKG1hdGNoIHNoYXJpbmcgd2l0aFxuICAgICAgfCBOb19zaGFyaW5nIC0+IHNpLCBkb21haW5cbiAgICAgIHwgQ29tcGF0aWJsZV9wYXR0ZXJucyB8IE1heF9zaGFyaW5nIC0+XG4gICAgICAgIHNhdHVyYXRlX2xldmVsIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgbCBsIChzaSwgZG9tYWluKSlcblxuICBsZXQgb2ZfZW52IGVudiA9XG4gICAgbGV0IGFkZF9jYyBhY2MgcCA9XG4gICAgICBsZXQgdyA9IHdlaWdodCBwLmVsZW1lbnQgaW5cbiAgICAgIGxldCBoYXNoID0gY29hcnNlX2hhc2ggcC5lbGVtZW50IGluXG4gICAgICBsZXQgYWNjX3cgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRNYXAuZW1wdHkgdyBhY2MgaW5cbiAgICAgIE1vZHMuSW50TWFwLmFkZCB3XG4gICAgICAgIChNb2RzLkludE1hcC5hZGQgaGFzaFxuICAgICAgICAgICAocCA6OiBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW10gaGFzaCBhY2NfdylcbiAgICAgICAgICAgYWNjX3cpXG4gICAgICAgIGFjY1xuICAgIGluXG4gICAgbGV0IGRvbWFpbicgPVxuICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAoZnVuIHBfaWQgYWNjIHAgLT5cbiAgICAgICAgICBhZGRfY2MgYWNjXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHBfaWQ7XG4gICAgICAgICAgICAgIGVsZW1lbnQgPSBwLkVudi5jb250ZW50O1xuICAgICAgICAgICAgICBkZXBlbmRpbmcgPSBwLkVudi5kZXBzO1xuICAgICAgICAgICAgICByb290cyA9IHAuRW52LnJvb3RzO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgTW9kcy5JbnRNYXAuZW1wdHkgZW52LkVudi5kb21haW5cbiAgICBpblxuICAgIHtcbiAgICAgIHNpZ19kZWNsID0gZW52LkVudi5zaWdfZGVjbDtcbiAgICAgIG5iX2lkID0gc3VjYyAoQXJyYXkuZm9sZF9sZWZ0IChMaXN0LmZvbGRfbGVmdCBtYXgpIDAgZW52LkVudi5pZF9ieV90eXBlKTtcbiAgICAgIGlkX2J5X3R5cGUgPSBlbnYuRW52LmlkX2J5X3R5cGU7XG4gICAgICBkb21haW4gPSBkb21haW4nO1xuICAgICAgdXNlZF9ieV9hX2JlZ2luX25ldyA9IGZhbHNlO1xuICAgIH1cblxuICBsZXQgZGVidWdfcHJpbnQgZiBlbnYgPVxuICAgIFBwLmFycmF5IFBwLmNvbW1hXG4gICAgICAoZnVuIHR5IGYgbCAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWQ6ICV0XCIgdHkgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiW1wiO1xuICAgICAgICAgICAgUHAubGlzdCBQcC5jb21tYSAoZnVuIGYgYSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWRcIiBhKSBmIGw7XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiXVwiKSlcbiAgICAgIGYgZW52LmlkX2J5X3R5cGU7XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInVzZWRfYnlfYV9iZWdpbl9uZXcgPSAlQkAuXCIgZW52LnVzZWRfYnlfYV9iZWdpbl9uZXdcbmVuZFxuXG4oKiogT3BlcmF0aW9uIHRvIGNyZWF0ZSBjYyAqKVxubGV0IGNoZWNrX2RhbmdsaW5nIHdrID1cbiAgaWYgd2suZGFuZ2xpbmcgPD4gMCB0aGVuXG4gICAgcmFpc2UgKGRhbmdsaW5nX25vZGUgfnNpZ3M6d2suc2lncyB3ay51c2VkX2lkIHdrLmRhbmdsaW5nKVxuXG5sZXQgYmVnaW5fbmV3IGVudiA9IFByZUVudi50b193b3JrIGVudlxuXG5sZXQgZnJlc2hfY2NfaWQgZG9tYWluID1cbiAgc3VjY1xuICAgIChNb2RzLkludE1hcC5mb2xkXG4gICAgICAgKGZ1biBfIC0+XG4gICAgICAgICBNb2RzLkludE1hcC5mb2xkIChmdW4gXyB4IGFjYyAtPlxuICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIHAgLT4gbWF4IGFjYyBwLnBfaWQpIGFjYyB4KSlcbiAgICAgICBkb21haW4gMClcblxubGV0IHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbCA/b3JpZ2luIHdrID1cbiAgbGV0ICgpID0gY2hlY2tfZGFuZ2xpbmcgd2sgaW5cbiAgKCogcmVidWlsZCBlbnYgKilcbiAgbGV0ICgpID1cbiAgICBUb29scy5pdGVyaVxuICAgICAgKGZ1biBpIC0+XG4gICAgICAgIHdrLnJlc2VydmVkX2lkLihpKSA8LSBMaXN0LnJldl9hcHBlbmQgd2sudXNlZF9pZC4oaSkgd2sucmVzZXJ2ZWRfaWQuKGkpKVxuICAgICAgKEFycmF5Lmxlbmd0aCB3ay51c2VkX2lkKVxuICBpblxuICBsZXQgbm9kZXNfYnlfdHlwZSA9IEFycmF5Lm1hcCBMaXN0LnJldiB3ay51c2VkX2lkIGluXG4gIGxldCBjY19jYW5kaWRhdGUgPVxuICAgIHtcbiAgICAgIG5vZGVzX2J5X3R5cGU7XG4gICAgICBub2RlcyA9IHdrLmNjX25vZGVzO1xuICAgICAgcmVjb2duX25hdiA9IHJhd190b19uYXZpZ2F0aW9uIGZhbHNlIG5vZGVzX2J5X3R5cGUgd2suY2Nfbm9kZXM7XG4gICAgfVxuICBpblxuICBsZXQgcHJlZW52LCByLCBvdXQsIG91dF9pZCA9XG4gICAgUHJlRW52LmFkZF9jYyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWwgP29yaWdpbiB3ay5jY19lbnZcbiAgICAgIChmcmVzaF9jY19pZCB3ay5jY19lbnYpIGNjX2NhbmRpZGF0ZVxuICBpblxuICBQcmVFbnYuZnJlc2ggd2suc2lncyB3ay5yZXNlcnZlZF9pZCB3ay5mcmVlX2lkIHByZWVudiwgciwgb3V0LCBvdXRfaWRcblxubGV0IGZpbmlzaF9uZXcgfmRlYnVnX21vZGUgP29yaWdpbiB3ayA9XG4gIHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbDp0cnVlID9vcmlnaW4gd2tcblxubGV0IG5ld19saW5rIHdrICgoKHgsIF8pIGFzIG4xKSwgaSkgKCgoeSwgXykgYXMgbjIpLCBqKSA9XG4gIGxldCB4X24gPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSB4IHdrLmNjX25vZGVzIGluXG4gIGxldCB5X24gPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSB5IHdrLmNjX25vZGVzIGluXG4gIG1hdGNoIHhfbi4oaSksIHlfbi4oaikgd2l0aFxuICB8IChVblNwZWMsIHN0eCksIChVblNwZWMsIHN0eSkgLT5cbiAgICBsZXQgKCkgPSB4X24uKGkpIDwtIExpbmsgKHksIGopLCBzdHggaW5cbiAgICBsZXQgKCkgPSB5X24uKGopIDwtIExpbmsgKHgsIGkpLCBzdHkgaW5cbiAgICBpZiB3ay5kYW5nbGluZyA9IHggfHwgd2suZGFuZ2xpbmcgPSB5IHRoZW5cbiAgICAgIHsgd2sgd2l0aCBkYW5nbGluZyA9IDAgfVxuICAgIGVsc2VcbiAgICAgIHdrXG4gIHwgKChGcmVlIHwgTGluayBfKSwgXyksIF8gLT4gcmFpc2UgKGFscmVhZHlfc3BlY2lmaWVkIH5zaWdzOndrLnNpZ3MgbjEgaSlcbiAgfCBfLCAoKEZyZWUgfCBMaW5rIF8pLCBfKSAtPiByYWlzZSAoYWxyZWFkeV9zcGVjaWZpZWQgfnNpZ3M6d2suc2lncyBuMiBqKVxuXG5sZXQgbmV3X2ZyZWUgd2sgKCgoeCwgXykgYXMgbiksIGkpID1cbiAgbGV0IHhfbiA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHggd2suY2Nfbm9kZXMgaW5cbiAgbWF0Y2ggeF9uLihpKSB3aXRoXG4gIHwgVW5TcGVjLCBzdCAtPlxuICAgIGxldCAoKSA9IHhfbi4oaSkgPC0gRnJlZSwgc3QgaW5cbiAgICB3a1xuICB8IChGcmVlIHwgTGluayBfKSwgXyAtPiByYWlzZSAoYWxyZWFkeV9zcGVjaWZpZWQgfnNpZ3M6d2suc2lncyBuIGkpXG5cbmxldCBuZXdfaW50ZXJuYWxfc3RhdGUgd2sgKCgoeCwgXykgYXMgbiksIGkpIHZhID1cbiAgbGV0IHhfbiA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHggd2suY2Nfbm9kZXMgaW5cbiAgbGV0IGwsIHMgPSB4X24uKGkpIGluXG4gIGlmIHMgPj0gMCB0aGVuXG4gICAgcmFpc2UgKGFscmVhZHlfc3BlY2lmaWVkIH5zaWdzOndrLnNpZ3MgbiBpKVxuICBlbHNlIChcbiAgICBsZXQgKCkgPSB4X24uKGkpIDwtIGwsIHZhIGluXG4gICAgd2tcbiAgKVxuXG5sZXQgbmV3X25vZGUgd2sgdHlwZV9pZCA9XG4gIGxldCAoKSA9IGNoZWNrX2RhbmdsaW5nIHdrIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSB3ay5zaWdzIHR5cGVfaWQgaW5cbiAgbWF0Y2ggd2sucmVzZXJ2ZWRfaWQuKHR5cGVfaWQpIHdpdGhcbiAgfCBoIDo6IHQgLT5cbiAgICBsZXQgKCkgPSB3ay51c2VkX2lkLih0eXBlX2lkKSA8LSBoIDo6IHdrLnVzZWRfaWQuKHR5cGVfaWQpIGluXG4gICAgbGV0ICgpID0gd2sucmVzZXJ2ZWRfaWQuKHR5cGVfaWQpIDwtIHQgaW5cbiAgICBsZXQgbm9kZSA9IGgsIHR5cGVfaWQgaW5cbiAgICAoIG5vZGUsXG4gICAgICB7XG4gICAgICAgIHNpZ3MgPSB3ay5zaWdzO1xuICAgICAgICBjY19lbnYgPSB3ay5jY19lbnY7XG4gICAgICAgIHJlc2VydmVkX2lkID0gd2sucmVzZXJ2ZWRfaWQ7XG4gICAgICAgIHVzZWRfaWQgPSB3ay51c2VkX2lkO1xuICAgICAgICBmcmVlX2lkID0gd2suZnJlZV9pZDtcbiAgICAgICAgZGFuZ2xpbmcgPVxuICAgICAgICAgIChpZiBNb2RzLkludE1hcC5pc19lbXB0eSB3ay5jY19ub2RlcyB0aGVuXG4gICAgICAgICAgICAgMFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgaCk7XG4gICAgICAgIGNjX25vZGVzID0gTW9kcy5JbnRNYXAuYWRkIGggKEFycmF5Lm1ha2UgYXJpdHkgKFVuU3BlYywgLTEpKSB3ay5jY19ub2RlcztcbiAgICAgIH0gKVxuICB8IFtdIC0+XG4gICAgbGV0ICgpID0gd2sudXNlZF9pZC4odHlwZV9pZCkgPC0gd2suZnJlZV9pZCA6OiB3ay51c2VkX2lkLih0eXBlX2lkKSBpblxuICAgIGxldCBub2RlID0gd2suZnJlZV9pZCwgdHlwZV9pZCBpblxuICAgICggbm9kZSxcbiAgICAgIHtcbiAgICAgICAgc2lncyA9IHdrLnNpZ3M7XG4gICAgICAgIGNjX2VudiA9IHdrLmNjX2VudjtcbiAgICAgICAgcmVzZXJ2ZWRfaWQgPSB3ay5yZXNlcnZlZF9pZDtcbiAgICAgICAgdXNlZF9pZCA9IHdrLnVzZWRfaWQ7XG4gICAgICAgIGZyZWVfaWQgPSBzdWNjIHdrLmZyZWVfaWQ7XG4gICAgICAgIGRhbmdsaW5nID1cbiAgICAgICAgICAoaWYgTW9kcy5JbnRNYXAuaXNfZW1wdHkgd2suY2Nfbm9kZXMgdGhlblxuICAgICAgICAgICAgIDBcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIHdrLmZyZWVfaWQpO1xuICAgICAgICBjY19ub2RlcyA9XG4gICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHdrLmZyZWVfaWQgKEFycmF5Lm1ha2UgYXJpdHkgKFVuU3BlYywgLTEpKSB3ay5jY19ub2RlcztcbiAgICAgIH0gKVxuXG5sZXQgbWluaW1hbF9lbnYgfmRlYnVnX21vZGUgZW52IGNvbnRhY3RfbWFwID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gdHkgLT5cbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgKGZ1biBzIGFjYyAoaW50cywgbGlua3MpIC0+XG4gICAgICAgICAgbGV0IHcgPSBiZWdpbl9uZXcgYWNjIGluXG4gICAgICAgICAgbGV0IG4sIHcgPSBuZXdfbm9kZSB3IHR5IGluXG4gICAgICAgICAgbGV0IHcgPSBuZXdfZnJlZSB3IChuLCBzKSBpblxuICAgICAgICAgIGxldCBhY2MnLCBfLCBfLCBfID0gcmF3X2ZpbmlzaF9uZXcgfmRlYnVnX21vZGUgfnRvcGxldmVsOmZhbHNlIHcgaW5cbiAgICAgICAgICBsZXQgYWNjJycgPVxuICAgICAgICAgICAgTW9kcy5JbnRTZXQuZm9sZFxuICAgICAgICAgICAgICAoZnVuIGkgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IHcgPSBiZWdpbl9uZXcgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IG4sIHcgPSBuZXdfbm9kZSB3IHR5IGluXG4gICAgICAgICAgICAgICAgbGV0IHcgPSBuZXdfaW50ZXJuYWxfc3RhdGUgdyAobiwgcykgaSBpblxuICAgICAgICAgICAgICAgIGxldCBvdXQsIF8sIF8sIF8gPVxuICAgICAgICAgICAgICAgICAgcmF3X2ZpbmlzaF9uZXcgfmRlYnVnX21vZGUgfnRvcGxldmVsOmZhbHNlIHdcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG91dClcbiAgICAgICAgICAgICAgaW50cyBhY2MnXG4gICAgICAgICAgaW5cbiAgICAgICAgICBNb2RzLkludDJTZXQuZm9sZFxuICAgICAgICAgICAgKGZ1biAodHknLCBzJykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCB3ID0gYmVnaW5fbmV3IGFjYyBpblxuICAgICAgICAgICAgICBsZXQgbiwgdyA9IG5ld19ub2RlIHcgdHkgaW5cbiAgICAgICAgICAgICAgbGV0IG4nLCB3ID0gbmV3X25vZGUgdyB0eScgaW5cbiAgICAgICAgICAgICAgbGV0IHcgPSBuZXdfbGluayB3IChuLCBzKSAobicsIHMnKSBpblxuICAgICAgICAgICAgICBsZXQgb3V0LCBfLCBfLCBfID0gcmF3X2ZpbmlzaF9uZXcgfmRlYnVnX21vZGUgfnRvcGxldmVsOmZhbHNlIHcgaW5cbiAgICAgICAgICAgICAgaWYgdHkgPSB0eScgJiYgcyA8IHMnIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCB3ID0gYmVnaW5fbmV3IG91dCBpblxuICAgICAgICAgICAgICAgIGxldCBuLCB3ID0gbmV3X25vZGUgdyB0eSBpblxuICAgICAgICAgICAgICAgIGxldCB3ID0gbmV3X2xpbmsgdyAobiwgcykgKG4sIHMnKSBpblxuICAgICAgICAgICAgICAgIGxldCBvdXQnLCBfLCBfLCBfID1cbiAgICAgICAgICAgICAgICAgIHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbDpmYWxzZSB3XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBvdXQnXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIG91dClcbiAgICAgICAgICAgIGxpbmtzIGFjYycnKSlcbiAgICBlbnYgY29udGFjdF9tYXBcblxubGV0IGZvbGRfYnlfdHlwZSBmIGNjIGFjYyA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGFnZW50X3R5cGUgYWNjIGxpc3RfcG9zIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGFjYyBwb3MgLT5cbiAgICAgICAgICBsZXQgaW50ZiA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHBvcyBjYy5ub2RlcyBpblxuICAgICAgICAgIGYgfnBvcyB+YWdlbnRfdHlwZSBpbnRmIGFjYylcbiAgICAgICAgYWNjIGxpc3RfcG9zKVxuICAgIGFjYyBjYy5ub2Rlc19ieV90eXBlXG5cbmxldCBmb2xkIGYgY2MgYWNjID0gTW9kcy5JbnRNYXAuZm9sZCBmIGNjLm5vZGVzIGFjY1xuXG5sZXQgZmluYWxpemUgfmRlYnVnX21vZGUgfnNoYXJpbmcgZW52IGNvbnRhY3RfbWFwID1cbiAgbGV0IHNpZ3MgPSBQcmVFbnYuc2lncyBlbnYgaW5cbiAgbGV0IGVudiA9IG1pbmltYWxfZW52IH5kZWJ1Z19tb2RlIGVudiBjb250YWN0X21hcCBpblxuICBsZXQgc2ksIGNvbXBsZXRlX2RvbWFpbiA9XG4gICAgUHJlRW52LnNhdHVyYXRlIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgZW52LlByZUVudi5kb21haW5cbiAgaW5cbiAgbGV0IGRvbWFpbiA9IEFycmF5Lm1ha2UgKHN1Y2Mgc2kpIChQcmVFbnYuZW1wdHlfcG9pbnQgZW52LlByZUVudi5zaWdfZGVjbCkgaW5cbiAgbGV0IHNpbmdsZXMgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRNYXAuZW1wdHkgMSBjb21wbGV0ZV9kb21haW4gaW5cbiAgbGV0IGVsZW1lbnRhcmllcyA9IFByZUVudi5maWxsX2VsZW0gZW52LlByZUVudi5zaWdfZGVjbCBzaW5nbGVzIGluXG4gIGxldCAoKSA9XG4gICAgTW9kcy5JbnRNYXAuaXRlclxuICAgICAgKGZ1biBfIC0+XG4gICAgICAgIExpc3QuaXRlciAoZnVuIHggLT5cbiAgICAgICAgICAgIGRvbWFpbi4oeC5wX2lkKSA8LVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgRW52LmNvbnRlbnQgPSB4LmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgRW52LnNvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICBFbnYuZGVwcyA9IHguZGVwZW5kaW5nO1xuICAgICAgICAgICAgICAgIEVudi5yb290cyA9IHgucm9vdHM7XG4gICAgICAgICAgICAgIH0pKVxuICAgICAgc2luZ2xlc1xuICBpblxuICBsZXQgc3RhdF9uYXZfc3RlcHMgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gbGV2ZWwgZG9tYWluX2xldmVsIGFjY19sZXZlbCAtPlxuICAgICAgICBpZiBsZXZlbCA8PSAxIHRoZW5cbiAgICAgICAgICBhY2NfbGV2ZWxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgICAgICAgIChmdW4gXyBsIGFjYyAtPlxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gYWNjIHggLT5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIGRvbWFpbi4oeC5wX2lkKSA8LVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudi5jb250ZW50ID0geC5lbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgRW52LnNvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudi5yb290cyA9IHgucm9vdHM7XG4gICAgICAgICAgICAgICAgICAgICAgICBFbnYuZGVwcyA9IHguZGVwZW5kaW5nO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAgICAgICAgICAgICAgIChmdW4gXyBsbCBhY2NsIC0+XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjIGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGluZ3MgfmRlYnVnX21vZGUgc2lncyBlLmVsZW1lbnQgeC5lbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmpzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjIGlual9lX3ggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlRW52Lmluc2VydF9uYXZpZ2F0aW9uIH5kZWJ1Z19tb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LlByZUVudi5pZF9ieV90eXBlIGVudi5QcmVFbnYubmJfaWQgZG9tYWluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wX2lkIHguZWxlbWVudCBpbmpfZV94IGUucF9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGFjYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyBpbmpzKVxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjbCBsbClcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlcyBhY2MpXG4gICAgICAgICAgICAgICAgYWNjIGwpXG4gICAgICAgICAgICBkb21haW5fbGV2ZWwgYWNjX2xldmVsKVxuICAgICAgY29tcGxldGVfZG9tYWluIDBcbiAgaW5cbiAgbGV0IGxldmVsMCA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludE1hcC5lbXB0eSAwIGNvbXBsZXRlX2RvbWFpbiBpblxuICBsZXQgc2luZ2xlX2FnZW50X3BvaW50cyA9XG4gICAgQXJyYXkubWFrZSAoQXJyYXkubGVuZ3RoIGVudi5QcmVFbnYuaWRfYnlfdHlwZSkgTm9uZVxuICBpblxuICBsZXQgKCkgPVxuICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgIChmdW4gXyAtPlxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biBwIC0+XG4gICAgICAgICAgICBtYXRjaCBmaW5kX3Jvb3QgcC5lbGVtZW50IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIChfLCB0eSkgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBkb21haW4uKHAucF9pZCkgPC1cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgRW52LmNvbnRlbnQgPSBwLmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIEVudi5yb290cyA9IHAucm9vdHM7XG4gICAgICAgICAgICAgICAgICAgIEVudi5kZXBzID0gcC5kZXBlbmRpbmc7XG4gICAgICAgICAgICAgICAgICAgIEVudi5zb25zID0gW107XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNpbmdsZV9hZ2VudF9wb2ludHMuKHR5KSA8LSBTb21lIChwLnBfaWQsIHAuZGVwZW5kaW5nKSkpXG4gICAgICBsZXZlbDBcbiAgaW5cbiAgKCB7XG4gICAgICBFbnYuc2lnX2RlY2wgPSBlbnYuUHJlRW52LnNpZ19kZWNsO1xuICAgICAgRW52LmlkX2J5X3R5cGUgPSBlbnYuUHJlRW52LmlkX2J5X3R5cGU7XG4gICAgICBFbnYubWF4X29icyA9IGZyZXNoX2NjX2lkIGVudi5QcmVFbnYuZG9tYWluO1xuICAgICAgRW52LmRvbWFpbjtcbiAgICAgIEVudi5lbGVtZW50YXJpZXM7XG4gICAgICBFbnYuc2luZ2xlX2FnZW50X3BvaW50cztcbiAgICB9LFxuICAgIHsgc3RhdF9ub2RlcyA9IHNpOyBQcmVFbnYuc3RhdF9uYXZfc3RlcHMgfSApXG5cbmxldCBtZXJnZV9vbl9pbmYgfmRlYnVnX21vZGUgZW52IG0gZzEgZzIgPVxuICBsZXQgbV9saXN0ID0gUmVuYW1pbmcudG9fbGlzdCBtIGluXG4gIGxldCByb290MSwgcm9vdDIgPSBMaXN0LmhkIG1fbGlzdCBpblxuICBsZXQgcGFpcmluZyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIChhLCBiKSAtPiBNb2RzLkludDJTZXQuYWRkIChhLCBiKSBhY2MpXG4gICAgICBNb2RzLkludDJTZXQuZW1wdHkgbV9saXN0XG4gIGluXG4gIGxldCBwb3NzaWJpbGl0aWVzID0gcmVmIHBhaXJpbmcgaW5cbiAgbWF0Y2hcbiAgICBhcmVfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSB+cG9zc2liaWxpdGllcyB+c3RyaWN0OmZhbHNlIHJvb3QxIGcxIHJvb3QyIGcyXG4gIHdpdGhcbiAgfCBTb21lIG0nLCBfIC0+XG4gICAgbGV0IF8sIHB1c2hvdXQgPVxuICAgICAgbWVyZ2VfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSBlbnYuUHJlRW52LmlkX2J5X3R5cGUgZW52LlByZUVudi5uYl9pZCBtJyBnMVxuICAgICAgICBnMlxuICAgIGluXG4gICAgU29tZSBwdXNob3V0LCBOb25lXG4gIHwgTm9uZSwgY29uZmxpY3QgLT4gTm9uZSwgY29uZmxpY3RcblxubGV0IGxlbmd0aCBjYyA9IE1vZHMuSW50TWFwLnNpemUgY2Mubm9kZXNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IFJlbmFtaW5nLnQgTW9kcy5JbnRNYXAudCAqIE1vZHMuSW50U2V0LnRcbigqIChtYXAsc2V0KVxuICAgbWFwOiBwb2ludF9pIC0+IChub2RlX2ooaSkgLT4gaWRfbm9kZV9ncmFwaF9pbl9jdXJyZW50X21hdGNoaW5nKVxuICAgc2V0OmNvZG9tYWluIG9mIGN1cnJlbnQgbWF0Y2hpbmcgKilcblxudHlwZSBtYXRjaGluZyA9IHRcblxubGV0IGVtcHR5ID0gTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50U2V0LmVtcHR5XG5cbmxldCBhZGRfY2MgKGluaiwgY28pIGlkIHIgPVxuICBsZXQgYyA9IFJlbmFtaW5nLmltYWdlIHIgaW5cbiAgbWF0Y2ggTW9kcy5JbnRTZXQuZGlzam9pbnRfdW5pb24gY28gYyB3aXRoXG4gIHwgU29tZSBjbycgLT4gU29tZSAoTW9kcy5JbnRNYXAuYWRkIGlkIHIgaW5qLCBjbycpXG4gIHwgTm9uZSAtPiBOb25lXG5cbmxldCBkZWJ1Z19wcmludCBmIChtLCBfY28pID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbKCVhKUBdXCJcbiAgICAoUHAuc2V0IE1vZHMuSW50TWFwLmJpbmRpbmdzIFBwLmNvbW1hIChmdW4gZiAoY2NpZCwgbm0pIC0+XG4gICAgICAgICBQcC5zZXQgUmVuYW1pbmcudG9fbGlzdCBQcC5jb21tYVxuICAgICAgICAgICAoZnVuIGYgKG5vZGUsIGRzdCkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVpOiVpLT4laVwiIGNjaWQgbm9kZSBkc3QpXG4gICAgICAgICAgIGYgbm0pKVxuICAgIG1cblxubGV0IHJlY29uc3RydWN0X3JlbmFtaW5nIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBjY19pZCByb290ID1cbiAgbGV0IHBvaW50ID0gUGF0dGVybi5FbnYuZ2V0IGRvbWFpbiBjY19pZCBpblxuICBtYXRjaCBQYXR0ZXJuLkVudi5yb290cyBwb2ludCB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIk1hdGNoaW5nLnJlY29uc3RydWN0IGNjIGVycm9yXCJcbiAgKCotIHJtIC0gYWRkIDogaW50IC0+IGludCAtPiBSZW5hbWluZy50IC0+IFJlbmFtaW5nLnQgKilcbiAgfCBTb21lIChyaWRzLCBydHkpIC0+XG4gICAgbGV0IGluaiA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gICAgbGV0IF8sIGluamVjdGl2ZSA9XG4gICAgICBtYXRjaCBQYXR0ZXJuLnJlY29uc3RydWN0aW9uX25hdmlnYXRpb24gKFBhdHRlcm4uRW52LmNvbnRlbnQgcG9pbnQpIHdpdGhcbiAgICAgIHwgXyA6OiBfIGFzIG5hdiAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKHJvb3QsIGluamVjdGl2ZSkgbmF2IC0+XG4gICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgIGluamVjdGl2ZVxuICAgICAgICAgICAgICAmJiBOYXZpZ2F0aW9uLmltcGVyYXRpdmVfZWRnZV9pc192YWxpZCB+ZGVidWdfbW9kZSA/cm9vdCBpbmogZ3JhcGhcbiAgICAgICAgICAgICAgICAgICBuYXYgKSlcbiAgICAgICAgICAoU29tZSAocm9vdCwgcnR5KSwgdHJ1ZSlcbiAgICAgICAgICBuYXZcbiAgICAgICgqLSBybSAtIGZpbmRfcm9vdDogY2MgLT4gKHR5cGUsIG5vZGUpIG9wdGlvbiAqKVxuICAgICAgfCBbXSAtPlxuICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgKG1hdGNoIHJpZHMgd2l0aFxuICAgICAgICAgIHwgWyByaWQgXSAtPiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSByaWQgcm9vdCBpbmpcbiAgICAgICAgICB8IF8gLT4gZmFsc2UpIClcbiAgICBpblxuICAgIGlmIGluamVjdGl2ZSB0aGVuXG4gICAgICBpbmpcbiAgICBlbHNlXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoXCJNYXRjaGluZy5yZWNvbnN0cnVjdCByZW5hbWluZyBlcnJvciBhdCByb290IFwiIF4gc3RyaW5nX29mX2ludCByb290KVxuXG4oKiByZWNvbnN0cnVjdDogUGF0dGVybi5FbnYudCAtPiBFZGdlcy50IC0+IHQgLT4gaW50IC0+IFBhdHRlcm4uaWQgLT5cbiAgIGludCAtPiB0IG9wdGlvbiopXG5sZXQgcmVjb25zdHJ1Y3QgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGluaiBpZCBjY19pZCByb290ID1cbiAgbGV0IHJlbmFtZSA9IHJlY29uc3RydWN0X3JlbmFtaW5nIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBjY19pZCByb290IGluXG4gIG1hdGNoIE1vZHMuSW50U2V0LmRpc2pvaW50X3VuaW9uIChSZW5hbWluZy5pbWFnZSByZW5hbWUpIChzbmQgaW5qKSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBjbyAtPiBTb21lIChNb2RzLkludE1hcC5hZGQgaWQgcmVuYW1lIChmc3QgaW5qKSwgY28pXG5cbmxldCByZWMgYXV4X2lzX3Jvb3Rfb2YgfmRlYnVnX21vZGUgZ3JhcGggcm9vdCBpbmogPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBoIDo6IHQgLT5cbiAgICBOYXZpZ2F0aW9uLmltcGVyYXRpdmVfZWRnZV9pc192YWxpZCB+ZGVidWdfbW9kZSA/cm9vdCBpbmogZ3JhcGggaFxuICAgICYmIGF1eF9pc19yb290X29mIH5kZWJ1Z19tb2RlIGdyYXBoIE5vbmUgaW5qIHRcblxubGV0IGlzX3Jvb3Rfb2YgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoICgoXywgcnR5KSBhcyByb290KSBjY19pZCA9XG4gIGxldCBwb2ludCA9IFBhdHRlcm4uRW52LmdldCBkb21haW4gY2NfaWQgaW5cbiAgbWF0Y2ggUGF0dGVybi5yZWNvbnN0cnVjdGlvbl9uYXZpZ2F0aW9uIChQYXR0ZXJuLkVudi5jb250ZW50IHBvaW50KSB3aXRoXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggUGF0dGVybi5FbnYucm9vdHMgcG9pbnQgd2l0aFxuICAgIHwgU29tZSAoXywgcnR5JykgLT4gcnR5ID0gcnR5J1xuICAgIHwgTm9uZSAtPiBmYWxzZSlcbiAgfCBuYXYgLT4gYXV4X2lzX3Jvb3Rfb2YgfmRlYnVnX21vZGUgZ3JhcGggKFNvbWUgcm9vdCkgKFJlbmFtaW5nLmVtcHR5ICgpKSBuYXZcblxubGV0IHJvb3RzX29mIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBjYyA9XG4gIEVkZ2VzLmFsbF9hZ2VudHNfd2hlcmVcbiAgICAoZnVuIHggLT4gaXNfcm9vdF9vZiB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggeCBjYylcbiAgICBncmFwaFxuXG4oKiBnZXQgOiAoQ29udGVudEFnZW50LnQgKiBpbnQpIC0+IHQgLT4gaW50ICopXG5sZXQgZ2V0IH5kZWJ1Z19tb2RlICgobm9kZSwgXyksIGlkKSAodCwgXykgPVxuICBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFJlbmFtaW5nLmR1bW15IGlkIHQpIG5vZGVcblxubGV0IGVsZW1lbnRzX3dpdGhfdHlwZXMgZG9tYWluIGNjcyAodCwgXykgPVxuICBsZXQgb3V0ID0gQXJyYXkubWFrZSAoTW9kcy5JbnRNYXAuc2l6ZSB0KSBbXSBpblxuICBsZXQgKCkgPVxuICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgIChmdW4gaWQgbWFwIC0+XG4gICAgICAgIG91dC4oaWQpIDwtXG4gICAgICAgICAgUmVuYW1pbmcuZm9sZFxuICAgICAgICAgICAgKGZ1biBpIG91dCBhY2MgLT5cbiAgICAgICAgICAgICAgKCBvdXQsXG4gICAgICAgICAgICAgICAgUGF0dGVybi5maW5kX3R5XG4gICAgICAgICAgICAgICAgICAoUGF0dGVybi5FbnYuY29udGVudCAoUGF0dGVybi5FbnYuZ2V0IGRvbWFpbiBjY3MuKGlkKSkpXG4gICAgICAgICAgICAgICAgICBpIClcbiAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgbWFwIFtdKVxuICAgICAgdFxuICBpblxuICBvdXRcblxubW9kdWxlIENhY2hlID0gc3RydWN0XG4gIHR5cGUgdCA9IFBhdHRlcm4uaWQgKiAoaW50ICogaW50KSBvcHRpb25cblxuICBsZXQgY29tcGFyZSAoYSwgYScpIChiLCBiJykgPVxuICAgIGxldCBjID0gUGF0dGVybi5jb21wYXJlX2Nhbm9uaWNhbHMgYSBiIGluXG4gICAgaWYgYyA9IDAgdGhlbiAoXG4gICAgICBtYXRjaCBhJywgYicgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IDBcbiAgICAgIHwgTm9uZSwgU29tZSBfIC0+IDFcbiAgICAgIHwgU29tZSBfLCBOb25lIC0+IC0xXG4gICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IE1vZHMuaW50X3BhaXJfY29tcGFyZSB4IHlcbiAgICApIGVsc2VcbiAgICAgIGNcblxuICBsZXQgcHJpbnQgZiAoYSwgYScpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWElYVwiXG4gICAgICAoUGF0dGVybi5wcmludCB+bm9Db3VudGVyczp0cnVlID9kb21haW46Tm9uZSB+d2l0aF9pZDp0cnVlKVxuICAgICAgYVxuICAgICAgKFBwLm9wdGlvbiAoUHAucGFpciBGb3JtYXQucHBfcHJpbnRfaW50IEZvcm1hdC5wcF9wcmludF9pbnQpKVxuICAgICAgYSdcbmVuZFxuXG5tb2R1bGUgQ2FjaGVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoQ2FjaGUpXG5cbnR5cGUgY2FjaGUgPSBDYWNoZVNldE1hcC5TZXQudFxuXG5sZXQgZW1wdHlfY2FjaGUgPSBDYWNoZVNldE1hcC5TZXQuZW1wdHlcblxubGV0IHN1cnZpdmVfbmF2IH5kZWJ1Z19tb2RlIGluaiBncmFwaCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBpbmogc3RlcCAtPlxuICAgICAgbWF0Y2ggaW5qIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbmpcbiAgICAgIHwgU29tZSBpbmogLT5cbiAgICAgICAgTmF2aWdhdGlvbi5pbmplY3Rpb25fZm9yX29uZV9tb3JlX2VkZ2UgfmRlYnVnX21vZGUgaW5qIGdyYXBoIHN0ZXApXG4gICAgKFNvbWUgaW5qKVxuXG4oKmVkZ2VzOiBsaXN0IG9mIGNvbmNyZXRlIGVkZ2VzLFxuICAgIHJldHVybnMgdGhlIHJvb3RzIG9mIG9ic2VydmFibGVzIHRoYXQgYXJlIGFib3ZlIGluIHRoZSBkb21haW4qKVxubGV0IGZyb21fZWRnZSB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggKChvdXQsIGNhY2hlKSBhcyBhY2MpIG5vZGUgc2l0ZSBhcnJvdyA9XG4gIGxldCByZWMgYXV4X2Zyb21fZWRnZXMgY2FjaGUgKChvYnMsIHJldl9kZXBzKSBhcyBhY2MpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjYywgY2FjaGVcbiAgICB8IChwaWQsIHBvaW50LCBpbmpfcG9pbnQyZ3JhcGgpIDo6IHJlbWFpbnMgLT5cbiAgICAgIGxldCBhY2MnID1cbiAgICAgICAgbWF0Y2ggUGF0dGVybi5FbnYucm9vdHMgcG9pbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSAoaWRzLCB0eSkgLT5cbiAgICAgICAgICAoIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gYWNjIGlkIC0+XG4gICAgICAgICAgICAgICAgKHBpZCwgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGlual9wb2ludDJncmFwaCBpZCwgdHkpKVxuICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgb2JzIGlkcyxcbiAgICAgICAgICAgIE9wZXJhdG9yLkRlcFNldC51bmlvbiByZXZfZGVwcyAoUGF0dGVybi5FbnYuZGVwcyBwb2ludCkgKVxuICAgICAgaW5cbiAgICAgIGxldCByZW1haW5zJywgY2FjaGUnID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuICgocmUsIGNhKSBhcyBwYWlyKSBzb24gLT5cbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIHN1cnZpdmVfbmF2IH5kZWJ1Z19tb2RlIGlual9wb2ludDJncmFwaCBncmFwaCBzb24uUGF0dGVybi5FbnYubmV4dFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHBhaXJcbiAgICAgICAgICAgIHwgU29tZSBpbmonIC0+XG4gICAgICAgICAgICAgIGxldCByZW5hbWUgPVxuICAgICAgICAgICAgICAgIFJlbmFtaW5nLmNvbXBvc2UgfmRlYnVnX21vZGUgZmFsc2Ugc29uLlBhdHRlcm4uRW52LmluaiBpbmonXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBjYScgPVxuICAgICAgICAgICAgICAgIENhY2hlU2V0TWFwLlNldC5hZGRcbiAgICAgICAgICAgICAgICAgIChzb24uUGF0dGVybi5FbnYuZHN0LCBSZW5hbWluZy5taW5fZWx0IHJlbmFtZSlcbiAgICAgICAgICAgICAgICAgIGNhXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGlmIGNhID09IGNhJyB0aGVuXG4gICAgICAgICAgICAgICAgcGFpclxuICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICBsZXQgcCcgPSBQYXR0ZXJuLkVudi5nZXQgZG9tYWluIHNvbi5QYXR0ZXJuLkVudi5kc3QgaW5cbiAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IHNvbi5QYXR0ZXJuLkVudi5kc3QsIHAnLCByZW5hbWUgaW5cbiAgICAgICAgICAgICAgICBuZXh0IDo6IHJlLCBjYSdcbiAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAocmVtYWlucywgY2FjaGUpIChQYXR0ZXJuLkVudi5zb25zIHBvaW50KVxuICAgICAgaW5cbiAgICAgIGF1eF9mcm9tX2VkZ2VzIGNhY2hlJyBhY2MnIHJlbWFpbnMnXG4gIGluXG4gIG1hdGNoIFBhdHRlcm4uRW52LmdldF9lbGVtZW50YXJ5IH5kZWJ1Z19tb2RlIGRvbWFpbiBub2RlIHNpdGUgYXJyb3cgd2l0aFxuICB8IE5vbmUgLT4gYWNjXG4gIHwgU29tZSB4IC0+XG4gICAgYXV4X2Zyb21fZWRnZXNcbiAgICAgICgqKCp1bm5lY2Vzc2FyeSopQ2FjaGVTZXRNYXAuU2V0LmFkZCAoY2NfaWQsUmVuYW1pbmcubWluX2VsdCBpbmonKSopXG4gICAgICBjYWNoZSBvdXQgWyB4IF1cblxubGV0IG9ic2VydmFibGVzX2Zyb21fYWdlbnQgZG9tYWluIGdyYXBoICgoKG9icywgcmRlcHMpLCBjYWNoZSkgYXMgYWNjKVxuICAgICgoXywgdHkpIGFzIG5vZGUpID1cbiAgaWYgRWRnZXMuaXNfYWdlbnQgbm9kZSBncmFwaCB0aGVuIChcbiAgICBtYXRjaCBQYXR0ZXJuLkVudi5nZXRfc2luZ2xlX2FnZW50IHR5IGRvbWFpbiB3aXRoXG4gICAgfCBTb21lIChjYywgZGVwcykgLT5cbiAgICAgICgoY2MsIG5vZGUpIDo6IG9icywgT3BlcmF0b3IuRGVwU2V0LnVuaW9uIHJkZXBzIGRlcHMpLCBjYWNoZVxuICAgIHwgTm9uZSAtPiBhY2NcbiAgKSBlbHNlXG4gICAgYWNjXG5cbmxldCBvYnNlcnZhYmxlc19mcm9tX2ZyZWUgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGFjYyBub2RlIHNpdGUgPVxuICBmcm9tX2VkZ2UgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGFjYyBub2RlIHNpdGUgTmF2aWdhdGlvbi5Ub05vdGhpbmdcblxubGV0IG9ic2VydmFibGVzX2Zyb21faW50ZXJuYWwgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGFjYyBub2RlIHNpdGUgaWQgPVxuICBmcm9tX2VkZ2UgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGFjYyBub2RlIHNpdGUgKE5hdmlnYXRpb24uVG9JbnRlcm5hbCBpZClcblxubGV0IG9ic2VydmFibGVzX2Zyb21fbGluayB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggYWNjIG4gc2l0ZSBuJyBzaXRlJyA9XG4gIGZyb21fZWRnZSBkb21haW4gfmRlYnVnX21vZGUgZ3JhcGggYWNjIG4gc2l0ZVxuICAgIChOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5GcmVzaCBuJywgc2l0ZScpKVxuXG5tb2R1bGUgQWdlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRXhpc3Rpbmcgb2YgQWdlbnQudCAqIGludCB8IEZyZXNoIG9mIGludCAqIGludCAoKiB0eXBlLCBpZCAqKVxuXG4gIGxldCByZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIChuLCBpZCcpIGFzIHggLT5cbiAgICAgIGlmIGlkIDw+IGlkJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbicgPSBBZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaW5qIG4gaW5cbiAgICAgICAgaWYgbiA9PSBuJyB0aGVuXG4gICAgICAgICAgeFxuICAgICAgICBlbHNlXG4gICAgICAgICAgRXhpc3RpbmcgKG4nLCBpZCcpXG4gICAgICApXG4gICAgfCBGcmVzaCBfIGFzIHggLT4geFxuXG4gIGxldCBwcmludCA/c2lncyBmID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIChuLCBpZCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS8qJWkqL1wiIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKSBuIGlkXG4gICAgfCBGcmVzaCAodHksIGkpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEvKiV0ICVpKi9cIlxuICAgICAgICAobWF0Y2ggc2lncyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50XG4gICAgICAgIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICB0eSBQcC5udSBpXG5cbiAgbGV0IHByaW50X3NpdGUgP3NpZ3MgcGxhY2UgZiBzaXRlID1cbiAgICBtYXRjaCBwbGFjZSB3aXRoXG4gICAgfCBFeGlzdGluZyAobiwgXykgLT4gQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBuIGYgc2l0ZVxuICAgIHwgRnJlc2ggKHR5LCBfKSAtPlxuICAgICAgKG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBzaXRlXG4gICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIHR5IGYgc2l0ZSlcblxuICBsZXQgcHJpbnRfaW50ZXJuYWwgP3NpZ3MgcGxhY2Ugc2l0ZSBmIGlkID1cbiAgICBtYXRjaCBwbGFjZSB3aXRoXG4gICAgfCBFeGlzdGluZyAobiwgXykgLT4gQWdlbnQucHJpbnRfaW50ZXJuYWwgP3NpZ3MgbiBzaXRlIGYgaWRcbiAgICB8IEZyZXNoICh0eSwgXykgLT5cbiAgICAgIChtYXRjaCBzaWdzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWl+JWlcIiBzaXRlIGlkXG4gICAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgICBTaWduYXR1cmUucHJpbnRfc2l0ZV9pbnRlcm5hbF9zdGF0ZSBzaWdzIHR5IHNpdGUgZiAoU29tZSBpZCkpXG5cbiAgbGV0IGdldF90eXBlID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIChuLCBfKSAtPiBBZ2VudC5zb3J0IG5cbiAgICB8IEZyZXNoIChpLCBfKSAtPiBpXG5cbiAgbGV0IGdldF9pZCA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyAobiwgXykgLT4gQWdlbnQuaWQgblxuICAgIHwgRnJlc2ggKF8sIGkpIC0+IGlcblxuICBsZXQgaXNfZnJlc2ggPSBmdW5jdGlvblxuICAgIHwgRXhpc3RpbmcgXyAtPiBmYWxzZVxuICAgIHwgRnJlc2ggXyAtPiB0cnVlXG5cbiAgbGV0IGNvbmNyZXRpemUgfmRlYnVnX21vZGUgKGlual9ub2RlcywgaW5qX2ZyZXNoKSA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyAobiwgaWQpIC0+IGdldCB+ZGVidWdfbW9kZSAobiwgaWQpIGlual9ub2RlcywgQWdlbnQuc29ydCBuXG4gICAgfCBGcmVzaCAodHksIGlkKSAtPlxuICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIGlual9mcmVzaCB3aXRoXG4gICAgICB8IFNvbWUgeCAtPiB4LCB0eVxuICAgICAgfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZClcblxuICBsZXQgdG9feW9qc29uID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIChuLCB0eSkgLT5cbiAgICAgIChgQXNzb2NcbiAgICAgICAgIFtcbiAgICAgICAgICAgKCBcIkV4aXN0aW5nXCIsXG4gICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgYEFzc29jIFsgXCJhZ2VudFwiLCBBZ2VudC50b19qc29uIG4gXTsgYEFzc29jIFsgXCJ0eXBlXCIsIGBJbnQgdHkgXTtcbiAgICAgICAgICAgICAgIF0gKTtcbiAgICAgICAgIF1cbiAgICAgICAgOiBZb2pzb24uQmFzaWMudClcbiAgICB8IEZyZXNoIChpZCwgdHkpIC0+XG4gICAgICBgQXNzb2MgWyBcIkZyZXNoXCIsIGBBc3NvYyBbIFwiaWRcIiwgYEludCBpZDsgXCJ0eXBlXCIsIGBJbnQgdHkgXSBdXG5cbiAgbGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgWyAoXCJFeGlzdGluZ1wiLCBgTGlzdCBsaXN0KSBdIC0+XG4gICAgICAobWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IFsgYEFzc29jIFsgKFwiYWdlbnRcIiwgYSkgXTsgYEFzc29jIFsgKFwidHlwZVwiLCBgSW50IHR5KSBdIF0gLT5cbiAgICAgICAgRXhpc3RpbmcgKEFnZW50Lm9mX2pzb24gYSwgdHkpXG4gICAgICB8IHggOjogXyAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFnZW50XCIsIHgpKVxuICAgICAgfCBbXSAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFnZW50XCIsIGBOdWxsKSkpXG4gICAgfCBgQXNzb2MgWyAoXCJGcmVzaFwiLCBhKSBdIC0+XG4gICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICB8IGBBc3NvYyBbIChcImlkXCIsIGBJbnQgaWQpOyAoXCJ0eXBlXCIsIGBJbnQgdHkpIF0gLT4gRnJlc2ggKGlkLCB0eSlcbiAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFnZW50XCIsIHgpKSlcbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhZ2VudFwiLCB4KSlcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBhZ2VudF9uYW1lID0gaW50XG50eXBlIHNpdGVfbmFtZSA9IGludFxudHlwZSBpbnRlcm5hbF9zdGF0ZSA9IGludFxudHlwZSBiaW5kaW5nX3R5cGUgPSBhZ2VudF9uYW1lICogc2l0ZV9uYW1lXG50eXBlIGFic3RyYWN0ID0gTWF0Y2hpbmcuQWdlbnQudFxudHlwZSBjb25jcmV0ZSA9IEFnZW50LnRcbnR5cGUgJ2Egc2l0ZSA9ICdhICogc2l0ZV9uYW1lXG5cbnR5cGUgJ2EgdGVzdCA9XG4gIHwgSXNfSGVyZSBvZiAnYVxuICB8IEhhc19JbnRlcm5hbCBvZiAnYSBzaXRlICogaW50ZXJuYWxfc3RhdGVcbiAgfCBJc19GcmVlIG9mICdhIHNpdGVcbiAgfCBJc19Cb3VuZCBvZiAnYSBzaXRlXG4gIHwgSGFzX0JpbmRpbmdfdHlwZSBvZiAnYSBzaXRlICogYmluZGluZ190eXBlXG4gIHwgSXNfQm91bmRfdG8gb2YgJ2Egc2l0ZSAqICdhIHNpdGVcblxudHlwZSAnYSBhY3Rpb24gPVxuICB8IENyZWF0ZSBvZiAnYSAqIChzaXRlX25hbWUgKiBpbnRlcm5hbF9zdGF0ZSBvcHRpb24pIGxpc3QgKCogcG91cnF1b2kgw6dhICopXG4gIHwgTW9kX2ludGVybmFsIG9mICdhIHNpdGUgKiBpbnRlcm5hbF9zdGF0ZVxuICB8IEJpbmQgb2YgJ2Egc2l0ZSAqICdhIHNpdGVcbiAgfCBCaW5kX3RvIG9mICdhIHNpdGUgKiAnYSBzaXRlXG4gIHwgRnJlZSBvZiAnYSBzaXRlXG4gIHwgUmVtb3ZlIG9mICdhXG5cbigqIFRoZSBzZW1hbnRpY3Mgb2YgY29uY3JldGUgYWN0aW9ucyBzZWVtcyB0byBiZSB0aGUgZm9sbG93aW5nIG9uZS5cblxuICAgLSBXaGVuIGFuIGFnZW50IGlzIHJlbW92ZWQsIG5vIG90aGVyIGFjdGlvbiBpcyBzdG9yZWQgYWJvdXQgaXQgKGluY2x1ZGluZyBib25kIHJlbGVhc2luZykuXG4gICAtIENyZWF0ZWQgYWdlbnRzIGFyZSBjcmVhdGVkIHdpdGhvdXQgZGVmYXVsdCBiaW5kaW5nL2ludGVybmFsIHN0YXRlcy5cbiAgIC0gQm9uZHMgYXJlIGluc2VydGVkIHRoYW5rcyB0byB0d28gc3ltbWV0cmljIGFjdGlvbnMgKEJpbmRfdG8gLi4uKSAqKVxuXG5sZXQgd2VpZ2h0IGFjdGlvbiA9XG4gIG1hdGNoIGFjdGlvbiB3aXRoXG4gIHwgQ3JlYXRlIF8gLT4gMVxuICB8IE1vZF9pbnRlcm5hbCBfIHwgQmluZCBfIHwgQmluZF90byBfIHwgRnJlZSBfIC0+IDJcbiAgfCBSZW1vdmUgXyAtPiAwXG5cbmxldCB3ZWlnaHRfcmV2ZXJzZSBhY3Rpb24gPVxuICBtYXRjaCBhY3Rpb24gd2l0aFxuICB8IENyZWF0ZSBfIC0+IDFcbiAgfCBNb2RfaW50ZXJuYWwgXyB8IEJpbmQgXyB8IEJpbmRfdG8gXyB8IEZyZWUgXyAtPiAwXG4gIHwgUmVtb3ZlIF8gLT4gMlxuXG5sZXQgc29ydF9jb25jcmV0ZV9hY3Rpb25fbGlzdCA9IFRvb2xzLnNvcnRfYnlfcHJpb3JpdHkgd2VpZ2h0IDJcbmxldCBzb3J0X2NvbmNyZXRlX2FjdGlvbl9saXN0X3JldmVyc2UgPSBUb29scy5zb3J0X2J5X3ByaW9yaXR5IHdlaWdodF9yZXZlcnNlIDJcbmxldCBzb3J0X2Fic3RyYWN0X2FjdGlvbl9saXN0ID0gVG9vbHMuc29ydF9ieV9wcmlvcml0eSB3ZWlnaHQgMlxubGV0IHNvcnRfYWJzdHJhY3RfYWN0aW9uX2xpc3RfcmV2ZXJzZSA9IFRvb2xzLnNvcnRfYnlfcHJpb3JpdHkgd2VpZ2h0X3JldmVyc2UgMlxuXG50eXBlICdhIGJpbmRpbmdfc3RhdGUgPVxuICB8IEFOWVxuICB8IEZSRUVcbiAgfCBCT1VORFxuICB8IEJPVU5EX1RZUEUgb2YgYmluZGluZ190eXBlXG4gIHwgQk9VTkRfdG8gb2YgJ2Egc2l0ZVxuXG50eXBlICdhIGV2ZW50ID0ge1xuICB0ZXN0czogJ2EgdGVzdCBsaXN0IGxpc3Q7XG4gIGFjdGlvbnM6ICdhIGFjdGlvbiBsaXN0O1xuICBzaWRlX2VmZmVjdHNfc3JjOiAoJ2Egc2l0ZSAqICdhIGJpbmRpbmdfc3RhdGUpIGxpc3Q7XG4gIHNpZGVfZWZmZWN0c19kc3Q6ICdhIHNpdGUgbGlzdDtcbiAgY29ubmVjdGl2aXR5X3Rlc3RzOiAnYSB0ZXN0IGxpc3Q7XG59XG5cbmxldCBlbXB0eV9ldmVudCA9XG4gIHtcbiAgICB0ZXN0cyA9IFtdO1xuICAgIGFjdGlvbnMgPSBbXTtcbiAgICBzaWRlX2VmZmVjdHNfc3JjID0gW107XG4gICAgc2lkZV9lZmZlY3RzX2RzdCA9IFtdO1xuICAgIGNvbm5lY3Rpdml0eV90ZXN0cyA9IFtdO1xuICB9XG5cbmxldCBjb25jcmV0aXplX2JpbmRpbmdfc3RhdGUgfmRlYnVnX21vZGUgaW5qMmdyYXBoID0gZnVuY3Rpb25cbiAgfCBBTlkgLT4gQU5ZXG4gIHwgRlJFRSAtPiBGUkVFXG4gIHwgQk9VTkQgLT4gQk9VTkRcbiAgfCBCT1VORF9UWVBFIGJ0IC0+IEJPVU5EX1RZUEUgYnRcbiAgfCBCT1VORF90byAocGwsIHMpIC0+XG4gICAgQk9VTkRfdG8gKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKVxuXG5sZXQgY29uY3JldGl6ZV90ZXN0IH5kZWJ1Z19tb2RlIGluajJncmFwaCA9IGZ1bmN0aW9uXG4gIHwgSXNfSGVyZSBwbCAtPiBJc19IZXJlIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbClcbiAgfCBIYXNfSW50ZXJuYWwgKChwbCwgcyksIGkpIC0+XG4gICAgSGFzX0ludGVybmFsICgoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpLCBpKVxuICB8IElzX0ZyZWUgKHBsLCBzKSAtPlxuICAgIElzX0ZyZWUgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKVxuICB8IElzX0JvdW5kIChwbCwgcykgLT5cbiAgICBJc19Cb3VuZCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpXG4gIHwgSGFzX0JpbmRpbmdfdHlwZSAoKHBsLCBzKSwgdCkgLT5cbiAgICBIYXNfQmluZGluZ190eXBlICgoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpLCB0KVxuICB8IElzX0JvdW5kX3RvICgocGwsIHMpLCAocGwnLCBzJykpIC0+XG4gICAgSXNfQm91bmRfdG9cbiAgICAgICggKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSxcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsJywgcycpIClcblxubGV0IGNvbmNyZXRpemVfYWN0aW9uIH5kZWJ1Z19tb2RlIGluajJncmFwaCA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlIChwbCwgaSkgLT5cbiAgICBDcmVhdGUgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBpKVxuICB8IE1vZF9pbnRlcm5hbCAoKHBsLCBzKSwgaSkgLT5cbiAgICBNb2RfaW50ZXJuYWwgKChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcyksIGkpXG4gIHwgQmluZCAoKHBsLCBzKSwgKHBsJywgcycpKSAtPlxuICAgIEJpbmRcbiAgICAgICggKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSxcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsJywgcycpIClcbiAgfCBCaW5kX3RvICgocGwsIHMpLCAocGwnLCBzJykpIC0+XG4gICAgQmluZF90b1xuICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpLFxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwnLCBzJykgKVxuICB8IEZyZWUgKHBsLCBzKSAtPiBGcmVlIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcylcbiAgfCBSZW1vdmUgcGwgLT4gUmVtb3ZlIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbClcblxubGV0IHRyeV9jb25jcmV0aXplX2FjdGlvbiB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggYWN0aW9ucyA9XG4gIHRyeSBTb21lIChjb25jcmV0aXplX2FjdGlvbiB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggYWN0aW9ucylcbiAgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuKCogVGhlIGFjdGlvbiBpcyBkZWFsaW5nIHdpdGggYSBmcmVzaCBhZ2VudCAqKVxuXG5sZXQgY29uY3JldGl6ZV9ldmVudCB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggZSA9XG4gIHtcbiAgICB0ZXN0cyA9XG4gICAgICBMaXN0Lm1hcCAoTGlzdC5yZXZfbWFwIChjb25jcmV0aXplX3Rlc3QgfmRlYnVnX21vZGUgaW5qMmdyYXBoKSkgZS50ZXN0cztcbiAgICBhY3Rpb25zID1cbiAgICAgICgqIGFjdGlvbnMgYXJlIHJlb3JkZXJlZCB0aGUgZm9sbG93aW5nIHdheTpcbiAgICAgICAgIDEpIFJlbW92ZSBhY3Rpb25zXG4gICAgICAgICAyKSBDcmVhdGlvbiBhY3Rpb25zXG4gICAgICAgICAzKSBBbnl0aGluZyBlbHNlLiopXG4gICAgICBzb3J0X2Fic3RyYWN0X2FjdGlvbl9saXN0XG4gICAgICAgIChMaXN0LnJldl9tYXAgKGNvbmNyZXRpemVfYWN0aW9uIH5kZWJ1Z19tb2RlIGluajJncmFwaCkgZS5hY3Rpb25zKTtcbiAgICBzaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAoZnVuICgocGwsIHMpLCBiKSAtPlxuICAgICAgICAgICggKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSxcbiAgICAgICAgICAgIGNvbmNyZXRpemVfYmluZGluZ19zdGF0ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggYiApKVxuICAgICAgICBlLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgc2lkZV9lZmZlY3RzX2RzdCA9XG4gICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgKGZ1biAocGwsIHMpIC0+IE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKVxuICAgICAgICBlLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgIExpc3QucmV2X21hcCAoY29uY3JldGl6ZV90ZXN0IH5kZWJ1Z19tb2RlIGluajJncmFwaCkgZS5jb25uZWN0aXZpdHlfdGVzdHM7XG4gIH1cblxubGV0IG1hcF90ZXN0IGYgPSBmdW5jdGlvblxuICB8IElzX0hlcmUgYVxuICB8IEhhc19JbnRlcm5hbCAoKGEsIF8pLCBfKVxuICB8IElzX0ZyZWUgKGEsIF8pXG4gIHwgSXNfQm91bmQgKGEsIF8pXG4gIHwgSGFzX0JpbmRpbmdfdHlwZSAoKGEsIF8pLCBfKVxuICB8IElzX0JvdW5kX3RvICgoYSwgXyksIF8pIC0+XG4gICAgZiBhXG5cbmxldCBtYXBfYWN0aW9uIGYgPSBmdW5jdGlvblxuICB8IENyZWF0ZSAoYSwgXylcbiAgfCBNb2RfaW50ZXJuYWwgKChhLCBfKSwgXylcbiAgfCBCaW5kICgoYSwgXyksIF8pXG4gIHwgQmluZF90byAoKGEsIF8pLCBfKVxuICB8IEZyZWUgKGEsIF8pXG4gIHwgUmVtb3ZlIGEgLT5cbiAgICBmIGFcblxubGV0IG1hdGNoX3Rlc3RzID0gZnVuY3Rpb25cbiAgKCogYWJzdHJhY3QsIGNvbmNyZXRlKilcbiAgfCBJc19IZXJlIGEsIElzX0hlcmUgYiAtPiBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiXG4gIHwgSGFzX0ludGVybmFsICgoYSwgcyksIGkpLCBIYXNfSW50ZXJuYWwgKChiLCB0KSwgaikgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiICYmIHMgPSB0ICYmIGkgPSBqXG4gIHwgSGFzX0JpbmRpbmdfdHlwZSAoKGEsIHMpLCBjKSwgSGFzX0JpbmRpbmdfdHlwZSAoKGIsIHQpLCBkKSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGIgJiYgcyA9IHQgJiYgYyA9IGRcbiAgfCBJc19GcmVlIChhLCBzKSwgSXNfRnJlZSAoYiwgdCkgfCBJc19Cb3VuZCAoYSwgcyksIElzX0JvdW5kIChiLCB0KSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGIgJiYgcyA9IHRcbiAgfCBJc19Cb3VuZF90byAoKGEsIHMpLCAoYywgdSkpLCBJc19Cb3VuZF90byAoKGIsIHQpLCAoZCwgdikpIC0+XG4gICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYlxuICAgICYmIHMgPSB0XG4gICAgJiYgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYyA9IEFnZW50LnNvcnQgZFxuICAgICYmIHUgPSB2XG4gIHwgSXNfSGVyZSBfLCBfXG4gIHwgSGFzX0ludGVybmFsIF8sIF9cbiAgfCBJc19GcmVlIF8sIF9cbiAgfCBJc19Cb3VuZCBfLCBfXG4gIHwgSXNfQm91bmRfdG8gXywgX1xuICB8IEhhc19CaW5kaW5nX3R5cGUgXywgXyAtPlxuICAgIGZhbHNlXG5cbmxldCBtYXRjaF9hY3Rpb25zID0gZnVuY3Rpb25cbiAgKCogYWJzdHJhY3QsIGNvbmNyZXRlKilcbiAgfCBDcmVhdGUgKGEsIGFscyksIENyZWF0ZSAoYiwgYmxzKSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGJcbiAgICAmJiBMaXN0LmZvbGRfbGVmdDJcbiAgICAgICAgIChmdW4gb2sgKHMsIGkpICh0LCBqKSAtPiBvayAmJiBzID0gdCAmJiBpID0gailcbiAgICAgICAgIHRydWUgYWxzIGJsc1xuICB8IE1vZF9pbnRlcm5hbCAoKGEsIHMpLCBpKSwgTW9kX2ludGVybmFsICgoYiwgdCksIGopIC0+XG4gICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYiAmJiBzID0gdCAmJiBpID0galxuICB8IEJpbmQgKChhLCBzKSwgKGMsIHUpKSwgQmluZCAoKGIsIHQpLCAoZCwgdikpXG4gIHwgQmluZF90byAoKGEsIHMpLCAoYywgdSkpLCBCaW5kX3RvICgoYiwgdCksIChkLCB2KSkgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiXG4gICAgJiYgcyA9IHRcbiAgICAmJiBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBjID0gQWdlbnQuc29ydCBkXG4gICAgJiYgdSA9IHZcbiAgfCBGcmVlIChhLCBzKSwgRnJlZSAoYiwgdCkgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiICYmIHMgPSB0XG4gIHwgUmVtb3ZlIGEsIFJlbW92ZSBiIC0+IE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGJcbiAgfCBDcmVhdGUgXywgX1xuICB8IE1vZF9pbnRlcm5hbCBfLCBfXG4gIHwgQmluZCBfLCBfXG4gIHwgQmluZF90byBfLCBfXG4gIHwgRnJlZSBfLCBfXG4gIHwgUmVtb3ZlIF8sIF8gLT5cbiAgICBmYWxzZVxuXG5sZXQgZ2V0X2lkcyBmIGF1eCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgYSAtPlxuICAgICAgbGV0IGlkID0gZiBhIGluXG4gICAgICBpZiBMaXN0Lm1lbSBpZCBhY2MgdGhlblxuICAgICAgICBhY2NcbiAgICAgIGVsc2VcbiAgICAgICAgaWQgOjogYWNjKVxuICAgIGF1eFxuXG5sZXQgcmVjIG1hdGNoX3F1YXJrcyBhX3F1YXJrcyBjX3F1YXJrcyBmbWF0Y2ggPVxuICBtYXRjaCBhX3F1YXJrcyB3aXRoXG4gIHwgYXEgOjogYXFzIC0+XG4gICAgbGV0IGNxcywgcmVzdCA9IExpc3QucGFydGl0aW9uIChmdW4gY3EgLT4gZm1hdGNoIChhcSwgY3EpKSBjX3F1YXJrcyBpblxuICAgIGlmIGNxcyA9IFtdIHRoZW5cbiAgICAgIGZhbHNlXG4gICAgZWxzZVxuICAgICAgbWF0Y2hfcXVhcmtzIGFxcyByZXN0IGZtYXRjaFxuICB8IFtdIC0+IGNfcXVhcmtzID0gW11cblxubGV0IHJlYyBmaW5kX21hdGNoIHRlc3RzIGFjdGlvbnMgY3Rlc3RzIGNhY3Rpb25zID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiYWJzdHJhY3QgYW5kIGNvbmNyZXQgcXVhcmtzIGRvbid0IG1hdGNoXCIpKVxuICB8IGNpZCA6OiB0bCAtPlxuICAgIGxldCBjdGVzdHMnID1cbiAgICAgIExpc3QuZmlsdGVyIChmdW4gdGVzdCAtPiBtYXBfdGVzdCAoZnVuIGEgLT4gQWdlbnQuaWQgYSA9IGNpZCkgdGVzdCkgY3Rlc3RzXG4gICAgaW5cbiAgICBsZXQgY2FjdGlvbnMnID1cbiAgICAgIExpc3QuZmlsdGVyXG4gICAgICAgIChmdW4gYWN0IC0+IG1hcF9hY3Rpb24gKGZ1biBhIC0+IEFnZW50LmlkIGEgPSBjaWQpIGFjdClcbiAgICAgICAgY2FjdGlvbnNcbiAgICBpblxuICAgIGlmXG4gICAgICBtYXRjaF9xdWFya3MgdGVzdHMgY3Rlc3RzJyBtYXRjaF90ZXN0c1xuICAgICAgJiYgbWF0Y2hfcXVhcmtzIGFjdGlvbnMgY2FjdGlvbnMnIG1hdGNoX2FjdGlvbnNcbiAgICB0aGVuXG4gICAgICBjaWRcbiAgICBlbHNlXG4gICAgICBmaW5kX21hdGNoIHRlc3RzIGFjdGlvbnMgY3Rlc3RzIGNhY3Rpb25zIHRsXG5cbmxldCBtYXRjaGluZ19hYnN0cmFjdF9jb25jcmV0ZSB+ZGVidWdfbW9kZSBhZSBjZSA9XG4gIGxldCBhZV90ZXN0cyA9IExpc3QuZmxhdHRlbiBhZS50ZXN0cyBpblxuICBsZXQgY2VfdGVzdHMgPSBMaXN0LmZsYXR0ZW4gY2UudGVzdHMgaW5cbiAgbGV0IGFic3RyYWN0X2lkcyA9XG4gICAgZ2V0X2lkc1xuICAgICAgKG1hcF9hY3Rpb24gTWF0Y2hpbmcuQWdlbnQuZ2V0X2lkKVxuICAgICAgKGdldF9pZHMgKG1hcF90ZXN0IE1hdGNoaW5nLkFnZW50LmdldF9pZCkgW10gYWVfdGVzdHMpXG4gICAgICBhZS5hY3Rpb25zXG4gIGluXG4gIGxldCBjb25jcmV0ZV9pZHMgPVxuICAgIGdldF9pZHMgKG1hcF9hY3Rpb24gQWdlbnQuaWQpXG4gICAgICAoZ2V0X2lkcyAobWFwX3Rlc3QgQWdlbnQuaWQpIFtdIGNlX3Rlc3RzKVxuICAgICAgY2UuYWN0aW9uc1xuICBpblxuICBsZXQgYXZhaWxhYmxlX2lkcyB1c2VkID1cbiAgICBMaXN0LmZpbHRlclxuICAgICAgKGZ1biBpIC0+IG5vdCAoTW9kcy5JbnRTZXQubWVtIGkgKFJlbmFtaW5nLmltYWdlIHVzZWQpKSlcbiAgICAgIGNvbmNyZXRlX2lkc1xuICBpblxuICBsZXQgcGFydGl0aW9uIGZtYXAgaSA9XG4gICAgTGlzdC5wYXJ0aXRpb24gKGZ1biBxIC0+IGZtYXAgKGZ1biBhIC0+IE1hdGNoaW5nLkFnZW50LmdldF9pZCBhID0gaSkgcSlcbiAgaW5cbiAgbGV0IG1hdGNoaW5nID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgbGV0IGluamVjdGl2ZSA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIGkgLT5cbiAgICAgICAgYWNjXG4gICAgICAgICYmXG4gICAgICAgIGxldCB0ZXN0cywgXyA9IHBhcnRpdGlvbiBtYXBfdGVzdCBpIGFlX3Rlc3RzIGluXG4gICAgICAgIGxldCBhY3Rpb25zLCBfID0gcGFydGl0aW9uIG1hcF9hY3Rpb24gaSBhZS5hY3Rpb25zIGluXG4gICAgICAgIGxldCBqID1cbiAgICAgICAgICBmaW5kX21hdGNoIHRlc3RzIGFjdGlvbnMgY2VfdGVzdHMgY2UuYWN0aW9ucyAoYXZhaWxhYmxlX2lkcyBtYXRjaGluZylcbiAgICAgICAgaW5cbiAgICAgICAgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaSBqIG1hdGNoaW5nKVxuICAgICAgdHJ1ZSBhYnN0cmFjdF9pZHNcbiAgaW5cbiAgaWYgaW5qZWN0aXZlIHRoZW5cbiAgICBTb21lIG1hdGNoaW5nXG4gIGVsc2VcbiAgICBOb25lXG5cbmxldCBzdWJzdF9tYXBfY29uY3JldGVfYWdlbnQgZiAoKGlkLCBuYSkgYXMgYWdlbnQpID1cbiAgdHJ5XG4gICAgaWYgZiBpZCA9PSBpZCB0aGVuXG4gICAgICBhZ2VudFxuICAgIGVsc2VcbiAgICAgIGYgaWQsIG5hXG4gIHdpdGggTm90X2ZvdW5kIC0+IGFnZW50XG5cbmxldCBzdWJzdF9tYXBfc2l0ZSBmICgoYWcsIHMpIGFzIHNpdGUpID1cbiAgbGV0IGFnJyA9IGYgYWcgaW5cbiAgaWYgYWcgPT0gYWcnIHRoZW5cbiAgICBzaXRlXG4gIGVsc2VcbiAgICBhZycsIHNcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl90ZXN0IGYgPSBmdW5jdGlvblxuICB8IElzX0hlcmUgYWdlbnQgYXMgeCAtPlxuICAgIGxldCBhZ2VudCcgPSBmIGFnZW50IGluXG4gICAgaWYgYWdlbnQgPT0gYWdlbnQnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBJc19IZXJlIGFnZW50J1xuICB8IEhhc19JbnRlcm5hbCAoc2l0ZSwgaW50ZXJuYWxfc3RhdGUpIGFzIHggLT5cbiAgICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUgaW5cbiAgICBpZiBzaXRlID09IHNpdGUnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBIYXNfSW50ZXJuYWwgKHNpdGUnLCBpbnRlcm5hbF9zdGF0ZSlcbiAgfCBJc19GcmVlIHNpdGUgYXMgeCAtPlxuICAgIGxldCBzaXRlJyA9IHN1YnN0X21hcF9zaXRlIGYgc2l0ZSBpblxuICAgIGlmIHNpdGUgPT0gc2l0ZScgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIElzX0ZyZWUgc2l0ZSdcbiAgfCBJc19Cb3VuZCBzaXRlIGFzIHggLT5cbiAgICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUgaW5cbiAgICBpZiBzaXRlID09IHNpdGUnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBJc19Cb3VuZCBzaXRlJ1xuICB8IEhhc19CaW5kaW5nX3R5cGUgKHNpdGUsIGJpbmRpbmdfdHlwZSkgYXMgeCAtPlxuICAgIGxldCBzaXRlJyA9IHN1YnN0X21hcF9zaXRlIGYgc2l0ZSBpblxuICAgIGlmIHNpdGUgPT0gc2l0ZScgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIEhhc19CaW5kaW5nX3R5cGUgKHNpdGUnLCBiaW5kaW5nX3R5cGUpXG4gIHwgSXNfQm91bmRfdG8gKHNpdGUxLCBzaXRlMikgYXMgeCAtPlxuICAgIGxldCBzaXRlMScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUxIGluXG4gICAgbGV0IHNpdGUyJyA9IHN1YnN0X21hcF9zaXRlIGYgc2l0ZTIgaW5cbiAgICBpZiBzaXRlMSA9PSBzaXRlMScgJiYgc2l0ZTIgPT0gc2l0ZTInIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBJc19Cb3VuZF90byAoc2l0ZTEnLCBzaXRlMicpXG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGVzdCBmIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYpIHhcblxubGV0IHN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3Rlc3QgaWQgaWQnIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGVzdFxuICAgIChmdW4gaiAtPlxuICAgICAgaWYgaiA9IGlkIHRoZW5cbiAgICAgICAgaWQnXG4gICAgICBlbHNlXG4gICAgICAgIGopXG4gICAgeFxuXG5sZXQgcmVuYW1lX2Fic3RyYWN0X3Rlc3QgfmRlYnVnX21vZGUgaWQgaW5qIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCAoTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaikgeFxuXG5sZXQgc3Vic3RfbWFwMl9hZ2VudF9pbl9hY3Rpb24gZiBmJyA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlIChhZ2VudCwgbGlzdCkgYXMgeCAtPlxuICAgIGxldCBhZ2VudCcgPSBmJyBhZ2VudCBpblxuICAgIGlmIGFnZW50ID09IGFnZW50JyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgQ3JlYXRlIChhZ2VudCcsIGxpc3QpXG4gIHwgTW9kX2ludGVybmFsIChzaXRlLCBpKSBhcyB4IC0+XG4gICAgbGV0IHNpdGUnID0gc3Vic3RfbWFwX3NpdGUgZicgc2l0ZSBpblxuICAgIGlmIHNpdGUgPT0gc2l0ZScgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIE1vZF9pbnRlcm5hbCAoc2l0ZScsIGkpXG4gIHwgQmluZCAoczEsIHMyKSBhcyB4IC0+XG4gICAgbGV0IHMxJyA9IHN1YnN0X21hcF9zaXRlIGYnIHMxIGluXG4gICAgbGV0IHMyJyA9IHN1YnN0X21hcF9zaXRlIGYnIHMyIGluXG4gICAgaWYgczEgPT0gczEnICYmIHMyID09IHMyJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgQmluZCAoczEnLCBzMicpXG4gIHwgQmluZF90byAoczEsIHMyKSBhcyB4IC0+XG4gICAgbGV0IHMxJyA9IHN1YnN0X21hcF9zaXRlIGYnIHMxIGluXG4gICAgbGV0IHMyJyA9IHN1YnN0X21hcF9zaXRlIGYnIHMyIGluXG4gICAgaWYgczEgPT0gczEnICYmIHMyID09IHMyJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgQmluZF90byAoczEnLCBzMicpXG4gIHwgRnJlZSBzaXRlIGFzIHggLT5cbiAgICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmJyBzaXRlIGluXG4gICAgaWYgc2l0ZSA9PSBzaXRlJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgRnJlZSBzaXRlJ1xuICB8IFJlbW92ZSBhZ2VudCBhcyB4IC0+XG4gICAgbGV0IGFnZW50JyA9IGYgYWdlbnQgaW5cbiAgICBpZiBhZ2VudCA9PSBhZ2VudCcgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIFJlbW92ZSBhZ2VudCdcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl9hY3Rpb24gZiB4ID0gc3Vic3RfbWFwMl9hZ2VudF9pbl9hY3Rpb24gZiBmIHhcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24gZiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2FjdGlvbiAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYpIHhcblxubGV0IHN1YnN0X2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiBpZCBpZCcgeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb25cbiAgICAoZnVuIGogLT5cbiAgICAgIGlmIGogPSBpZCB0aGVuXG4gICAgICAgIGlkJ1xuICAgICAgZWxzZVxuICAgICAgICBqKVxuICAgIHhcblxubGV0IHJlbmFtZV9hYnN0cmFjdF9hY3Rpb24gfmRlYnVnX21vZGUgaWQgaW5qIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fYWN0aW9uIChNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qKSB4XG5cbmxldCBzdWJzdF9tYXBfYmluZGluZ19zdGF0ZSBmID0gZnVuY3Rpb25cbiAgfCAoQU5ZIHwgRlJFRSB8IEJPVU5EIHwgQk9VTkRfVFlQRSBfKSBhcyB4IC0+IHhcbiAgfCBCT1VORF90byAoYWcsIHMpIGFzIHggLT5cbiAgICBsZXQgYWcnID0gZiBhZyBpblxuICAgIGlmIGFnID09IGFnJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgQk9VTkRfdG8gKGFnJywgcylcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl9zaWRlX2VmZmVjdCBmICgoc2l0ZSwgYnN0YXRlKSBhcyB4KSA9XG4gIGxldCBzaXRlJyA9IHN1YnN0X21hcF9zaXRlIGYgc2l0ZSBpblxuICBsZXQgYnN0YXRlJyA9IHN1YnN0X21hcF9iaW5kaW5nX3N0YXRlIGYgYnN0YXRlIGluXG4gIGlmIHNpdGUgPT0gc2l0ZScgJiYgYnN0YXRlID09IGJzdGF0ZScgdGhlblxuICAgIHhcbiAgZWxzZVxuICAgIHNpdGUnLCBic3RhdGUnXG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfc2lkZV9lZmZlY3QgZiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX3NpZGVfZWZmZWN0IChzdWJzdF9tYXBfY29uY3JldGVfYWdlbnQgZikgeFxuXG5sZXQgc3Vic3RfYWdlbnRfaW5fY29uY3JldGVfc2lkZV9lZmZlY3QgaWQgaWQnIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfc2lkZV9lZmZlY3RcbiAgICAoZnVuIGogLT5cbiAgICAgIGlmIGogPSBpZCB0aGVuXG4gICAgICAgIGlkJ1xuICAgICAgZWxzZVxuICAgICAgICBqKVxuICAgIHhcblxubGV0IHJlbmFtZV9hYnN0cmFjdF9zaWRlX2VmZmVjdCB+ZGVidWdfbW9kZSBpZCBpbmogeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9zaWRlX2VmZmVjdCAoTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaikgeFxuXG5sZXQgc3Vic3RfbWFwX2FnZW50X2luX2V2ZW50IGYgZSA9XG4gIHtcbiAgICB0ZXN0cyA9XG4gICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgIChMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCBmKSlcbiAgICAgICAgZS50ZXN0cztcbiAgICBhY3Rpb25zID0gTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX2FjdGlvbiBmKSBlLmFjdGlvbnM7XG4gICAgc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICBMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fc2lkZV9lZmZlY3QgZikgZS5zaWRlX2VmZmVjdHNfc3JjO1xuICAgIHNpZGVfZWZmZWN0c19kc3QgPSBMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfc2l0ZSBmKSBlLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgIExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcF9hZ2VudF9pbl90ZXN0IGYpIGUuY29ubmVjdGl2aXR5X3Rlc3RzO1xuICB9XG5cbmxldCBzdWJzdF9tYXAyX2FnZW50X2luX2V2ZW50IGYgZicgZSA9XG4gIHtcbiAgICB0ZXN0cyA9XG4gICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgIChMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCBmKSlcbiAgICAgICAgZS50ZXN0cztcbiAgICBhY3Rpb25zID0gTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwMl9hZ2VudF9pbl9hY3Rpb24gZiBmJykgZS5hY3Rpb25zO1xuICAgIHNpZGVfZWZmZWN0c19zcmMgPVxuICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX3NpZGVfZWZmZWN0IGYpIGUuc2lkZV9lZmZlY3RzX3NyYztcbiAgICBzaWRlX2VmZmVjdHNfZHN0ID0gTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX3NpdGUgZikgZS5zaWRlX2VmZmVjdHNfZHN0O1xuICAgIGNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICBMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCBmKSBlLmNvbm5lY3Rpdml0eV90ZXN0cztcbiAgfVxuXG5sZXQgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IGYgeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9ldmVudCAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYpIHhcblxubGV0IHN1YnN0X21hcDJfYWdlbnRfaW5fY29uY3JldGVfZXZlbnQgZiBmJyB4ID1cbiAgc3Vic3RfbWFwMl9hZ2VudF9pbl9ldmVudFxuICAgIChzdWJzdF9tYXBfY29uY3JldGVfYWdlbnQgZilcbiAgICAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYnKVxuICAgIHhcblxubGV0IHN1YnN0X2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IGlkIGlkJyB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50XG4gICAgKGZ1biBqIC0+XG4gICAgICBpZiBqID0gaWQgdGhlblxuICAgICAgICBpZCdcbiAgICAgIGVsc2VcbiAgICAgICAgailcbiAgICB4XG5cbmxldCByZW5hbWVfYWJzdHJhY3RfZXZlbnQgfmRlYnVnX21vZGUgaWQgaW5qIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fZXZlbnQgKE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmopIHhcblxubGV0IHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MgZiAoYWdlbnQsIGlkKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYVwiXG4gICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpXG4gICAgYWdlbnRcbiAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBhZ2VudClcbiAgICBpZFxuXG5sZXQgcHJpbnRfY29uY3JldGVfdGVzdCA/c2lncyBmID0gZnVuY3Rpb25cbiAgfCBJc19IZXJlIGFnZW50IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIklzX0hlcmUoJWEpXCIgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpIGFnZW50XG4gIHwgSGFzX0ludGVybmFsICgoYWcsIGlkKSwgaW50KSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJIYXNfSW50ZXJuYWwoJWEuJWEpXCJcbiAgICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKVxuICAgICAgYWdcbiAgICAgIChBZ2VudC5wcmludF9pbnRlcm5hbCA/c2lncyBhZyBpZClcbiAgICAgIGludFxuICB8IElzX0ZyZWUgc2l0ZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJc19GcmVlKCVhKVwiIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKSBzaXRlXG4gIHwgSXNfQm91bmQgc2l0ZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJc19Cb3VuZCglYSlcIiAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncykgc2l0ZVxuICB8IEhhc19CaW5kaW5nX3R5cGUgKHNpdGUsICh0eSwgc2lkKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQnR5cGUoJWEsJXQpXCIgKHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MpIHNpdGVcbiAgICAgIChmdW4gZiAtPlxuICAgICAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaS4laVwiIHR5IHNpZFxuICAgICAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYVwiXG4gICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgICB0eVxuICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgdHkpXG4gICAgICAgICAgICBzaWQpXG4gIHwgSXNfQm91bmRfdG8gKHNpdGUxLCBzaXRlMikgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiSXNfQm91bmQoJWEsJWEpXCJcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTFcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTJcblxubGV0IHByaW50X2NvbmNyZXRlX2FjdGlvbiA/c2lncyBmID0gZnVuY3Rpb25cbiAgfCBDcmVhdGUgKCgoXywgdHkpIGFzIGFnZW50KSwgbGlzdCkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQ3JlYXRlKCVhW0BbPGg+JWFAXV0pXCJcbiAgICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKVxuICAgICAgYWdlbnRcbiAgICAgIChQcC5saXN0IFBwLmNvbW1hIChmdW4gZiAoeCwgeSkgLT5cbiAgICAgICAgICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgICAgICAgIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9zaXRlX2ludGVybmFsX3N0YXRlIHNpZ3MgdHkgeCBmIHlcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgKG1hdGNoIHkgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgeFxuICAgICAgICAgICAgIHwgU29tZSB5IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaS4laVwiIHggeSkpKVxuICAgICAgbGlzdFxuICB8IE1vZF9pbnRlcm5hbCAoKGFnLCBpZCksIGludCkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiTW9kKCVhLiVhKVwiXG4gICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFnXG4gICAgICAoQWdlbnQucHJpbnRfaW50ZXJuYWwgP3NpZ3MgYWcgaWQpXG4gICAgICBpbnRcbiAgfCBCaW5kIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkJpbmQoJWEsJWEpXCJcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTFcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTJcbiAgfCBCaW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkJpbmRfdG8oJWEsJWEpXCJcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTFcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTJcbiAgfCBGcmVlIHNpdGUgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiRnJlZSglYSlcIiAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncykgc2l0ZVxuICB8IFJlbW92ZSBhZ2VudCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJSZW1vdmUoJWEpXCIgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpIGFnZW50XG5cbmxldCBwcmludF9jb25jcmV0ZV9iaW5kaW5nX3N0YXRlID9zaWdzIGYgPSBmdW5jdGlvblxuICB8IEFOWSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIqXCJcbiAgfCBGUkVFIC0+ICgpXG4gIHwgQk9VTkQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIV9cIlxuICB8IEJPVU5EX1RZUEUgKHMsIGEpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiElYS4lYVwiXG4gICAgICAobWF0Y2ggc2lncyB3aXRoXG4gICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIHNcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgYVxuICAgICAgKG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3NcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgc1xuICB8IEJPVU5EX3RvICgoYWdfaWQsIGFnKSwgcykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiISVhXyVpLiVhXCJcbiAgICAgIChtYXRjaCBzaWdzIHdpdGhcbiAgICAgIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgIGFnIGFnX2lkXG4gICAgICAobWF0Y2ggc2lncyB3aXRoXG4gICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgIHNcblxubGV0IGpzb25fZGljdGlvbm5hcnkgPVxuICBcIlxcXCJiaW5kaW5nX3R5cGVcXFwiOntcXFwidHlwZVxcXCI6MCxcXFwic2l0ZVxcXCI6MX0sXFxcInF1YXJrXFxcIjp7XFxcImFnZW50XFxcIjowLFxcXCJzaXRlXFxcIjoxfSxcXFwidGVzdFxcXCI6W1xcXCJJc19oZXJlXFxcIixcXFwiSGFzX0ludGVybmFsXFxcIixcXFwiSXNfRnJlZVxcXCIsXFxcIklzX0JvdW5kXFxcIixcXFwiSGFzX0JpbmRpbmdfdHlwZVxcXCIsXFxcIklzX0JvdW5kX3RvXFxcIl0sXFxcImFjdGlvbnNcXFwiOltcXFwiQ3JlYXRlXFxcIixcXFwiTW9kX2ludGVybmFsXFxcIixcXFwiQmluZFxcXCIsXFxcIkJpbmRfdG9cXFwiLFxcXCJGcmVlXFxcIixcXFwiUmVtb3ZlXFxcIl0sXFxcImJpbmRpbmdfc3RhdGVcXFwiOltcXFwiQU5ZXFxcIixcXFwiRlJFRVxcXCIsXFxcIkJPVU5EXFxcIixcXFwiQk9VTkRfVFlQRVxcXCIsXFxcIkJPVU5EX3RvXFxcIl0sXFxcImV2ZW50XFxcIjp7XFxcInRlc3RzXFxcIjowLFxcXCJhY3Rpb25zXFxcIjoxLFxcXCJzaWRlX2VmZmVjdF9zcmNcXFwiOjIsXFxcInNpZGVfZWZmZWN0X2RzdFxcXCI6MyxcXFwiY29ubmVjdGl2aXR5X3Rlc3RzXFxcIjo0fVwiXG5cbmxldCB3cml0ZV9iaW5kaW5nX3R5cGUgb2IgYSA9XG4gIEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfaW50IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgb2IgYVxuXG5sZXQgcmVhZF9iaW5kaW5nX3R5cGUgcCBsYiA9XG4gIEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX2ludCBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYlxuXG5sZXQgYmluZGluZ190eXBlX3RvX2pzb24gKHR5LCBzKSA9IGBMaXN0IFsgYEludCB0eTsgYEludCBzIF1cblxubGV0IGJpbmRpbmdfdHlwZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBJbnQgdHk7IGBJbnQgcyBdIC0+IHR5LCBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBiaW5kaW5nX3R5cGVcIiwgeCkpXG5cbmxldCB3cml0ZV9xdWFyayBmIG9iIGEgPVxuICBKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgZiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIGFcblxubGV0IHJlYWRfcXVhcmsgZiBwIGxiID0gSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgZiBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYlxubGV0IHF1YXJrX3RvX2pzb24gZiAoYWcsIHMpID0gYExpc3QgWyBmIGFnOyBgSW50IHMgXVxuXG5sZXQgcXVhcmtfb2ZfanNvbiBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGFnOyBgSW50IHMgXSAtPiBmIGFnLCBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcXVhcmtcIiwgeCkpXG5cbmxldCB3cml0ZV90ZXN0IGYgb2IgdCA9XG4gIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIG9iXG4gICAgKG1hdGNoIHQgd2l0aFxuICAgIHwgSXNfSGVyZSBhIC0+IFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAwKTsgKGZ1biBvIC0+IGYgbyBhKSBdXG4gICAgfCBIYXNfSW50ZXJuYWwgKHMsIGkpIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMSk7XG4gICAgICAgIChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gcyk7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gaSk7XG4gICAgICBdXG4gICAgfCBJc19GcmVlIHMgLT5cbiAgICAgIFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAyKTsgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzKSBdXG4gICAgfCBJc19Cb3VuZCBzIC0+XG4gICAgICBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMyk7IChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gcykgXVxuICAgIHwgSGFzX0JpbmRpbmdfdHlwZSAocywgYikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIDQpO1xuICAgICAgICAoZnVuIG9iIC0+IHdyaXRlX3F1YXJrIGYgb2Igcyk7XG4gICAgICAgIChmdW4gb2IgLT4gd3JpdGVfYmluZGluZ190eXBlIG9iIGIpO1xuICAgICAgXVxuICAgIHwgSXNfQm91bmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIDUpO1xuICAgICAgICAoZnVuIG9iIC0+IHdyaXRlX3F1YXJrIGYgb2IgczEpO1xuICAgICAgICAoZnVuIG9iIC0+IHdyaXRlX3F1YXJrIGYgb2IgczIpO1xuICAgICAgXSlcblxubGV0IHJlYWRfdGVzdCBmIHN0IGIgPVxuICBKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgKGZ1biBzdCBiIC0+IGZ1bmN0aW9uXG4gICAgICB8IDAgLT5cbiAgICAgICAgbGV0IHkgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBmIHN0IGIgaW5cbiAgICAgICAgSXNfSGVyZSB5XG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IHMgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIGxldCBpID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGIgaW5cbiAgICAgICAgSGFzX0ludGVybmFsIChzLCBpKVxuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCBzID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBJc19GcmVlIHNcbiAgICAgIHwgMyAtPlxuICAgICAgICBsZXQgcyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgSXNfQm91bmQgc1xuICAgICAgfCA0IC0+XG4gICAgICAgIGxldCBzID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBsZXQgYmkgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSByZWFkX2JpbmRpbmdfdHlwZSBzdCBiIGluXG4gICAgICAgIEhhc19CaW5kaW5nX3R5cGUgKHMsIGJpKVxuICAgICAgfCA1IC0+XG4gICAgICAgIGxldCBzMSA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgbGV0IHMyID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBJc19Cb3VuZF90byAoczEsIHMyKVxuICAgICAgfCBfIC0+IFlvanNvbi5qc29uX2Vycm9yIFwiV3JvbmcgdGVzdFwiICgqc3QgYiopKVxuICAgIHN0IGJcblxubGV0IHRlc3RfdG9fanNvbiBmID0gZnVuY3Rpb25cbiAgfCBJc19IZXJlIGEgLT4gYExpc3QgWyBgSW50IDA7IGYgYSBdXG4gIHwgSGFzX0ludGVybmFsIChzLCBpKSAtPiBgTGlzdCBbIGBJbnQgMTsgcXVhcmtfdG9fanNvbiBmIHM7IGBJbnQgaSBdXG4gIHwgSXNfRnJlZSBzIC0+IGBMaXN0IFsgYEludCAyOyBxdWFya190b19qc29uIGYgcyBdXG4gIHwgSXNfQm91bmQgcyAtPiBgTGlzdCBbIGBJbnQgMzsgcXVhcmtfdG9fanNvbiBmIHMgXVxuICB8IEhhc19CaW5kaW5nX3R5cGUgKHMsIGIpIC0+XG4gICAgYExpc3QgWyBgSW50IDQ7IHF1YXJrX3RvX2pzb24gZiBzOyBiaW5kaW5nX3R5cGVfdG9fanNvbiBiIF1cbiAgfCBJc19Cb3VuZF90byAoczEsIHMyKSAtPlxuICAgIGBMaXN0IFsgYEludCA1OyBxdWFya190b19qc29uIGYgczE7IHF1YXJrX3RvX2pzb24gZiBzMiBdXG5cbmxldCB0ZXN0X29mX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgSW50IDA7IGEgXSAtPiBJc19IZXJlIChmIGEpXG4gIHwgYExpc3QgWyBgSW50IDE7IHM7IGBJbnQgaSBdIC0+IEhhc19JbnRlcm5hbCAocXVhcmtfb2ZfanNvbiBmIHMsIGkpXG4gIHwgYExpc3QgWyBgSW50IDI7IHMgXSAtPiBJc19GcmVlIChxdWFya19vZl9qc29uIGYgcylcbiAgfCBgTGlzdCBbIGBJbnQgMzsgcyBdIC0+IElzX0JvdW5kIChxdWFya19vZl9qc29uIGYgcylcbiAgfCBgTGlzdCBbIGBJbnQgNDsgczsgYiBdIC0+XG4gICAgSGFzX0JpbmRpbmdfdHlwZSAocXVhcmtfb2ZfanNvbiBmIHMsIGJpbmRpbmdfdHlwZV9vZl9qc29uIGIpXG4gIHwgYExpc3QgWyBgSW50IDU7IHMxOyBzMiBdIC0+XG4gICAgSXNfQm91bmRfdG8gKHF1YXJrX29mX2pzb24gZiBzMSwgcXVhcmtfb2ZfanNvbiBmIHMyKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiV3JvbmcgdGVzdFwiLCB4KSlcblxubGV0IHdyaXRlX2FjdGlvbiBmIG9iIGEgPVxuICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgIChtYXRjaCBhIHdpdGhcbiAgICB8IENyZWF0ZSAoYWcsIGluZm8pIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMCk7XG4gICAgICAgIChmdW4gbyAtPiBmIG8gYWcpO1xuICAgICAgICAoZnVuIG8gLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy53cml0ZV9pbnRcbiAgICAgICAgICAgICAgIChKc29uVXRpbC53cml0ZV9vcHRpb24gWW9qc29uLkJhc2ljLndyaXRlX2ludCkpXG4gICAgICAgICAgICBvIGluZm8pO1xuICAgICAgXVxuICAgIHwgTW9kX2ludGVybmFsIChzLCBpKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDEpO1xuICAgICAgICAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIGkpO1xuICAgICAgXVxuICAgIHwgQmluZCAoczEsIHMyKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDIpO1xuICAgICAgICAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMxKTtcbiAgICAgICAgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzMik7XG4gICAgICBdXG4gICAgfCBCaW5kX3RvIChzMSwgczIpIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMyk7XG4gICAgICAgIChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gczEpO1xuICAgICAgICAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMyKTtcbiAgICAgIF1cbiAgICB8IEZyZWUgcyAtPlxuICAgICAgWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDQpOyAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMpIF1cbiAgICB8IFJlbW92ZSBhIC0+IFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyA1KTsgKGZ1biBvIC0+IGYgbyBhKSBdKVxuXG5sZXQgcmVhZF9hY3Rpb24gZiBzdCBiID1cbiAgSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgIChmdW4gc3QgYiAtPiBmdW5jdGlvblxuICAgICAgfCAwIC0+XG4gICAgICAgIGxldCBhZyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIGYgc3QgYiBpblxuICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0XG4gICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9vcHRpb24gWW9qc29uLkJhc2ljLnJlYWRfaW50KSkpXG4gICAgICAgICAgICBzdCBiXG4gICAgICAgIGluXG4gICAgICAgIENyZWF0ZSAoYWcsIGluZm8pXG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IHMgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIGxldCBpID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGIgaW5cbiAgICAgICAgTW9kX2ludGVybmFsIChzLCBpKVxuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCBzMSA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgbGV0IHMyID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBCaW5kIChzMSwgczIpXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IHMxID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBsZXQgczIgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIEJpbmRfdG8gKHMxLCBzMilcbiAgICAgIHwgNCAtPlxuICAgICAgICBsZXQgcyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgRnJlZSBzXG4gICAgICB8IDUgLT5cbiAgICAgICAgbGV0IGEgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBmIHN0IGIgaW5cbiAgICAgICAgUmVtb3ZlIGFcbiAgICAgIHwgXyAtPiBZb2pzb24uanNvbl9lcnJvciBcIldyb25nIGFjdGlvblwiICgqc3QgYiopKVxuICAgIHN0IGJcblxubGV0IGFjdGlvbl90b19qc29uIGYgPSBmdW5jdGlvblxuICB8IENyZWF0ZSAoYWcsIGluZm8pIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYEludCAwO1xuICAgICAgICBmIGFnO1xuICAgICAgICBgTGlzdFxuICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgIChmdW4gKHMsIGkpIC0+XG4gICAgICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICAgICAoYEludCBzXG4gICAgICAgICAgICAgICAgIDo6XG4gICAgICAgICAgICAgICAgIChtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICAgIHwgU29tZSBpIC0+IFsgYEludCBpIF0pKSlcbiAgICAgICAgICAgICBpbmZvKTtcbiAgICAgIF1cbiAgfCBNb2RfaW50ZXJuYWwgKHMsIGkpIC0+IGBMaXN0IFsgYEludCAxOyBxdWFya190b19qc29uIGYgczsgYEludCBpIF1cbiAgfCBCaW5kIChzMSwgczIpIC0+IGBMaXN0IFsgYEludCAyOyBxdWFya190b19qc29uIGYgczE7IHF1YXJrX3RvX2pzb24gZiBzMiBdXG4gIHwgQmluZF90byAoczEsIHMyKSAtPiBgTGlzdCBbIGBJbnQgMzsgcXVhcmtfdG9fanNvbiBmIHMxOyBxdWFya190b19qc29uIGYgczIgXVxuICB8IEZyZWUgcyAtPiBgTGlzdCBbIGBJbnQgNDsgcXVhcmtfdG9fanNvbiBmIHMgXVxuICB8IFJlbW92ZSBhIC0+IGBMaXN0IFsgYEludCA1OyBmIGEgXVxuXG5sZXQgYWN0aW9uX29mX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgSW50IDA7IGFnOyBgTGlzdCBpbmZvIF0gLT5cbiAgICBDcmVhdGVcbiAgICAgICggZiBhZyxcbiAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYExpc3QgWyBgSW50IHMgXSAtPiBzLCBOb25lXG4gICAgICAgICAgICB8IGBMaXN0IFsgYEludCBzOyBgSW50IGkgXSAtPiBzLCBTb21lIGlcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFjdGlvbiBpbmZvXCIsIHgpKSlcbiAgICAgICAgICBpbmZvIClcbiAgfCBgTGlzdCBbIGBJbnQgMTsgczsgYEludCBpIF0gLT4gTW9kX2ludGVybmFsIChxdWFya19vZl9qc29uIGYgcywgaSlcbiAgfCBgTGlzdCBbIGBJbnQgMjsgczE7IHMyIF0gLT4gQmluZCAocXVhcmtfb2ZfanNvbiBmIHMxLCBxdWFya19vZl9qc29uIGYgczIpXG4gIHwgYExpc3QgWyBgSW50IDM7IHMxOyBzMiBdIC0+IEJpbmRfdG8gKHF1YXJrX29mX2pzb24gZiBzMSwgcXVhcmtfb2ZfanNvbiBmIHMyKVxuICB8IGBMaXN0IFsgYEludCA0OyBzIF0gLT4gRnJlZSAocXVhcmtfb2ZfanNvbiBmIHMpXG4gIHwgYExpc3QgWyBgSW50IDU7IGEgXSAtPiBSZW1vdmUgKGYgYSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIldyb25nIGFjdGlvblwiLCB4KSlcblxubGV0IHdyaXRlX2JpbmRpbmdfc3RhdGUgZiBvYiBiZiA9XG4gIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIG9iXG4gICAgKG1hdGNoIGJmIHdpdGhcbiAgICB8IEFOWSAtPiBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMCkgXVxuICAgIHwgRlJFRSAtPiBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMSkgXVxuICAgIHwgQk9VTkQgLT4gWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDIpIF1cbiAgICB8IEJPVU5EX1RZUEUgYiAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDMpOyAoZnVuIG8gLT4gd3JpdGVfYmluZGluZ190eXBlIG8gYik7XG4gICAgICBdXG4gICAgfCBCT1VORF90byBzIC0+XG4gICAgICBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gNCk7IChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gcykgXSlcblxubGV0IHJlYWRfYmluZGluZ19zdGF0ZSBmIHN0IGIgPVxuICBKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgKGZ1biBzdCBiIC0+IGZ1bmN0aW9uXG4gICAgICB8IDAgLT4gQU5ZXG4gICAgICB8IDEgLT4gRlJFRVxuICAgICAgfCAyIC0+IEJPVU5EXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGIgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSByZWFkX2JpbmRpbmdfdHlwZSBzdCBiIGluXG4gICAgICAgIEJPVU5EX1RZUEUgYlxuICAgICAgfCA0IC0+XG4gICAgICAgIGxldCBzID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBCT1VORF90byBzXG4gICAgICB8IF8gLT4gWW9qc29uLmpzb25fZXJyb3IgXCJXcm9uZyBiaW5kaW5nIHN0YXRlXCIgKCpzdCBiKikpXG4gICAgc3QgYlxuXG5sZXQgYmluZGluZ19zdGF0ZV90b19qc29uIGYgPSBmdW5jdGlvblxuICB8IEFOWSAtPiBgTGlzdCBbIGBJbnQgMCBdXG4gIHwgRlJFRSAtPiBgTGlzdCBbIGBJbnQgMSBdXG4gIHwgQk9VTkQgLT4gYExpc3QgWyBgSW50IDIgXVxuICB8IEJPVU5EX1RZUEUgYiAtPiBgTGlzdCBbIGBJbnQgMzsgYmluZGluZ190eXBlX3RvX2pzb24gYiBdXG4gIHwgQk9VTkRfdG8gcyAtPiBgTGlzdCBbIGBJbnQgNDsgcXVhcmtfdG9fanNvbiBmIHMgXVxuXG5sZXQgYmluZGluZ19zdGF0ZV9vZl9qc29uIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYEludCAwIF0gLT4gQU5ZXG4gIHwgYExpc3QgWyBgSW50IDEgXSAtPiBGUkVFXG4gIHwgYExpc3QgWyBgSW50IDIgXSAtPiBCT1VORFxuICB8IGBMaXN0IFsgYEludCAzOyBgTGlzdCBbIGBJbnQgdHk7IGBJbnQgcyBdIF0gLT4gQk9VTkRfVFlQRSAodHksIHMpXG4gIHwgYExpc3QgWyBgSW50IDQ7IGBMaXN0IFsgYWc7IGBJbnQgcyBdIF0gLT4gQk9VTkRfdG8gKGYgYWcsIHMpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgYmluZGluZ19zdGF0ZVwiLCB4KSlcblxubGV0IHdyaXRlX2V2ZW50IGYgb2IgZSA9XG4gIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIG9iXG4gICAgW1xuICAgICAgKGZ1biBvIC0+XG4gICAgICAgIEpzb25VdGlsLndyaXRlX2xpc3QgKEpzb25VdGlsLndyaXRlX2xpc3QgKHdyaXRlX3Rlc3QgZikpIG8gZS50ZXN0cyk7XG4gICAgICAoZnVuIG8gLT4gSnNvblV0aWwud3JpdGVfbGlzdCAod3JpdGVfYWN0aW9uIGYpIG8gZS5hY3Rpb25zKTtcbiAgICAgIChmdW4gbyAtPlxuICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciAod3JpdGVfcXVhcmsgZikgKHdyaXRlX2JpbmRpbmdfc3RhdGUgZikpXG4gICAgICAgICAgbyBlLnNpZGVfZWZmZWN0c19zcmMpO1xuICAgICAgKGZ1biBvIC0+IEpzb25VdGlsLndyaXRlX2xpc3QgKHdyaXRlX3F1YXJrIGYpIG8gZS5zaWRlX2VmZmVjdHNfZHN0KTtcbiAgICAgIChmdW4gbyAtPiBKc29uVXRpbC53cml0ZV9saXN0ICh3cml0ZV90ZXN0IGYpIG8gZS5jb25uZWN0aXZpdHlfdGVzdHMpO1xuICAgIF1cblxubGV0IHJlYWRfZXZlbnQgZiBzdCBiID1cbiAgSnNvblV0aWwucmVhZF92YXJpYW50XG4gICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgKHJlYWRfdGVzdCBmKSkpXG4gICAgKGZ1biBzdCBiIHRlc3RzIC0+XG4gICAgICBsZXQgYWN0aW9ucyA9XG4gICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChZb2pzb24uQmFzaWMucmVhZF9saXN0IChyZWFkX2FjdGlvbiBmKSkgc3QgYlxuICAgICAgaW5cbiAgICAgIGxldCBzaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdFxuICAgICAgICAgICAgIChKc29uVXRpbC5yZWFkX2NvbXBhY3RfcGFpciAocmVhZF9xdWFyayBmKSAocmVhZF9iaW5kaW5nX3N0YXRlIGYpKSlcbiAgICAgICAgICBzdCBiXG4gICAgICBpblxuICAgICAgbGV0IHNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCAocmVhZF9xdWFyayBmKSkgc3QgYlxuICAgICAgaW5cbiAgICAgIGxldCBjb25uZWN0aXZpdHlfdGVzdHMgPVxuICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCAocmVhZF90ZXN0IGYpKSBzdCBiXG4gICAgICBpblxuICAgICAgeyB0ZXN0czsgYWN0aW9uczsgc2lkZV9lZmZlY3RzX3NyYzsgc2lkZV9lZmZlY3RzX2RzdDsgY29ubmVjdGl2aXR5X3Rlc3RzIH0pXG4gICAgc3QgYlxuXG5sZXQgZXZlbnRfdG9fanNvbiBmIGUgPVxuICBgTGlzdFxuICAgIFtcbiAgICAgIGBMaXN0XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIGNjdCAtPiBgTGlzdCAoTGlzdC5tYXAgKHRlc3RfdG9fanNvbiBmKSBjY3QpKSBlLnRlc3RzKTtcbiAgICAgIGBMaXN0IChMaXN0Lm1hcCAoYWN0aW9uX3RvX2pzb24gZikgZS5hY3Rpb25zKTtcbiAgICAgIGBMaXN0XG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIChzLCBiKSAtPlxuICAgICAgICAgICAgIGBMaXN0IFsgcXVhcmtfdG9fanNvbiBmIHM7IGJpbmRpbmdfc3RhdGVfdG9fanNvbiBmIGIgXSlcbiAgICAgICAgICAgZS5zaWRlX2VmZmVjdHNfc3JjKTtcbiAgICAgIGBMaXN0IChMaXN0Lm1hcCAocXVhcmtfdG9fanNvbiBmKSBlLnNpZGVfZWZmZWN0c19kc3QpO1xuICAgICAgYExpc3QgKExpc3QubWFwICh0ZXN0X3RvX2pzb24gZikgZS5jb25uZWN0aXZpdHlfdGVzdHMpO1xuICAgIF1cblxubGV0IGV2ZW50X29mX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgTGlzdCB0OyBgTGlzdCBhOyBgTGlzdCBzX2Vfc3JjOyBgTGlzdCBzX2VfZHN0OyBgTGlzdCBjX3QgXSBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIHRlc3RzID1cbiAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgYExpc3QgY2NsIC0+IExpc3QubWFwICh0ZXN0X29mX2pzb24gZikgY2NsXG4gICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgIHQ7XG4gICAgICAgICBhY3Rpb25zID0gTGlzdC5tYXAgKGFjdGlvbl9vZl9qc29uIGYpIGE7XG4gICAgICAgICBzaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgYExpc3QgWyBzOyBiIF0gLT4gcXVhcmtfb2ZfanNvbiBmIHMsIGJpbmRpbmdfc3RhdGVfb2ZfanNvbiBmIGJcbiAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgc19lX3NyYztcbiAgICAgICAgIHNpZGVfZWZmZWN0c19kc3QgPSBMaXN0Lm1hcCAocXVhcmtfb2ZfanNvbiBmKSBzX2VfZHN0O1xuICAgICAgICAgY29ubmVjdGl2aXR5X3Rlc3RzID0gTGlzdC5tYXAgKHRlc3Rfb2ZfanNvbiBmKSBjX3Q7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBldmVudFwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgZXZlbnRcIiwgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgVHJhbnNmb3JtYXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEFnZW50IG9mICdhXG4gICAgfCBGcmVlZCBvZiAnYSBJbnN0YW50aWF0aW9uLnNpdGVcbiAgICB8IExpbmtlZCBvZiAnYSBJbnN0YW50aWF0aW9uLnNpdGUgKiAnYSBJbnN0YW50aWF0aW9uLnNpdGVcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgb2YgJ2EgSW5zdGFudGlhdGlvbi5zaXRlXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCBvZlxuICAgICAgICAnYSAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lICogSW5zdGFudGlhdGlvbi5pbnRlcm5hbF9zdGF0ZVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgb2YgJ2EgSW5zdGFudGlhdGlvbi5zaXRlXG5cbiAgbGV0IHRvX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBBZ2VudCBhIC0+IGBBc3NvYyBbIFwiQWdlbnRcIiwgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGEgXVxuICAgIHwgRnJlZWQgKGEsIHMpIC0+XG4gICAgICBgQXNzb2MgWyBcIkZyZWVkXCIsIGBMaXN0IFsgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGE7IGBJbnQgcyBdIF1cbiAgICB8IExpbmtlZCAoKGEsIHMpLCAoYiwgdCkpIC0+XG4gICAgICBgQXNzb2NcbiAgICAgICAgW1xuICAgICAgICAgICggXCJMaW5rZWRcIixcbiAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBNYXRjaGluZy5BZ2VudC50b195b2pzb24gYTtcbiAgICAgICAgICAgICAgICBgSW50IHM7XG4gICAgICAgICAgICAgICAgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGI7XG4gICAgICAgICAgICAgICAgYEludCB0O1xuICAgICAgICAgICAgICBdICk7XG4gICAgICAgIF1cbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKGEsIHMpIC0+XG4gICAgICBgQXNzb2NcbiAgICAgICAgWyBcIk5lZ2F0aXZlV2hhdEV2ZXJcIiwgYExpc3QgWyBNYXRjaGluZy5BZ2VudC50b195b2pzb24gYTsgYEludCBzIF0gXVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMsIGkpIC0+XG4gICAgICBgQXNzb2NcbiAgICAgICAgW1xuICAgICAgICAgICggXCJQb3NpdGl2ZUludGVybmFsaXplZFwiLFxuICAgICAgICAgICAgYExpc3QgWyBNYXRjaGluZy5BZ2VudC50b195b2pzb24gYTsgYEludCBzOyBgSW50IGkgXSApO1xuICAgICAgICBdXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAoYSwgcykgLT5cbiAgICAgIGBBc3NvY1xuICAgICAgICBbIFwiTmVnYXRpdmVJbnRlcm5hbGl6ZWRcIiwgYExpc3QgWyBNYXRjaGluZy5BZ2VudC50b195b2pzb24gYTsgYEludCBzIF0gXVxuXG4gIGxldCBvZl95b2pzb24gPSBmdW5jdGlvblxuICAgIHwgYEFzc29jIFsgKFwiQWdlbnRcIiwgYSkgXSAtPiBBZ2VudCAoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGEpXG4gICAgfCBgQXNzb2MgWyAoXCJGcmVlZFwiLCBgTGlzdCBbIGE7IGBJbnQgcyBdKSBdIC0+XG4gICAgICBGcmVlZCAoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGEsIHMpXG4gICAgfCBgQXNzb2MgWyAoXCJMaW5rZWRcIiwgYExpc3QgWyBhOyBgSW50IHM7IGI7IGBJbnQgdCBdKSBdIC0+XG4gICAgICBMaW5rZWQgKChNYXRjaGluZy5BZ2VudC5vZl95b2pzb24gYSwgcyksIChNYXRjaGluZy5BZ2VudC5vZl95b2pzb24gYiwgdCkpXG4gICAgfCBgQXNzb2MgWyAoXCJOZWdhdGl2ZVdoYXRFdmVyXCIsIGBMaXN0IFsgYTsgYEludCBzIF0pIF0gLT5cbiAgICAgIE5lZ2F0aXZlV2hhdEV2ZXIgKE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbiBhLCBzKVxuICAgIHwgYEFzc29jIFsgKFwiUG9zaXRpdmVJbnRlcm5hbGl6ZWRcIiwgYExpc3QgWyBhOyBgSW50IHM7IGBJbnQgaSBdKSBdIC0+XG4gICAgICBQb3NpdGl2ZUludGVybmFsaXplZCAoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGEsIHMsIGkpXG4gICAgfCBgQXNzb2MgWyAoXCJOZWdhdGl2ZUludGVybmFsaXplZFwiLCBgTGlzdCBbIGE7IGBJbnQgcyBdKSBdIC0+XG4gICAgICBOZWdhdGl2ZUludGVybmFsaXplZCAoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGEsIHMpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgYWdlbnRcIiwgeCkpXG5cbiAgbGV0IHJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogPSBmdW5jdGlvblxuICAgIHwgRnJlZWQgKHAsIHMpIGFzIHggLT5cbiAgICAgIGxldCBwJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcCBpblxuICAgICAgaWYgcCA9PSBwJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgRnJlZWQgKHAnLCBzKVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAocCwgcykgYXMgeCAtPlxuICAgICAgbGV0IHAnID0gTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiBwIGluXG4gICAgICBpZiBwID09IHAnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBOZWdhdGl2ZVdoYXRFdmVyIChwJywgcylcbiAgICB8IExpbmtlZCAoKHAxLCBzMSksIChwMiwgczIpKSBhcyB4IC0+XG4gICAgICBsZXQgcDEnID0gTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiBwMSBpblxuICAgICAgbGV0IHAyJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcDIgaW5cbiAgICAgIGlmIHAxID09IHAxJyAmJiBwMiA9PSBwMicgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIExpbmtlZCAoKHAxJywgczEpLCAocDInLCBzMikpXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCAocCwgcywgaSkgYXMgeCAtPlxuICAgICAgbGV0IHAnID0gTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiBwIGluXG4gICAgICBpZiBwID09IHAnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBQb3NpdGl2ZUludGVybmFsaXplZCAocCcsIHMsIGkpXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAocCwgcykgYXMgeCAtPlxuICAgICAgbGV0IHAnID0gTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiBwIGluXG4gICAgICBpZiBwID09IHAnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBOZWdhdGl2ZUludGVybmFsaXplZCAocCcsIHMpXG4gICAgfCBBZ2VudCBwIGFzIHggLT5cbiAgICAgIGxldCBwJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcCBpblxuICAgICAgaWYgcCA9PSBwJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgQWdlbnQgcCdcblxuICBsZXQgY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggPSBmdW5jdGlvblxuICAgIHwgQWdlbnQgbiAtPiBBZ2VudCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbilcbiAgICB8IEZyZWVkIChuLCBzKSAtPlxuICAgICAgRnJlZWQgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4sIHMpXG4gICAgfCBMaW5rZWQgKChuLCBzKSwgKG4nLCBzJykpIC0+XG4gICAgICBMaW5rZWRcbiAgICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbiwgcyksXG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4nLCBzJykgKVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAobiwgcykgLT5cbiAgICAgIE5lZ2F0aXZlV2hhdEV2ZXIgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4sIHMpXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCAobiwgcywgaSkgLT5cbiAgICAgIFBvc2l0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuLCBzLCBpKVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKG4sIHMpIC0+XG4gICAgICBOZWdhdGl2ZUludGVybmFsaXplZCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbiwgcylcblxuICBsZXQgbWFwX2ZvbGRfYWdlbnQgZiB4IGFjYyA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBZ2VudCBhIC0+XG4gICAgICBsZXQgYScsIGFjYycgPSBmIGEgYWNjIGluXG4gICAgICBBZ2VudCBhJywgYWNjJ1xuICAgIHwgRnJlZWQgKGEsIHMpIC0+XG4gICAgICBsZXQgYScsIGFjYycgPSBmIGEgYWNjIGluXG4gICAgICBGcmVlZCAoYScsIHMpLCBhY2MnXG4gICAgfCBMaW5rZWQgKChhMSwgczEpLCAoYTIsIHMyKSkgLT5cbiAgICAgIGxldCBhMScsIGFjYycgPSBmIGExIGFjYyBpblxuICAgICAgbGV0IGEyJywgYWNjJycgPSBmIGEyIGFjYycgaW5cbiAgICAgIExpbmtlZCAoKGExJywgczEpLCAoYTInLCBzMikpLCBhY2MnJ1xuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAoYSwgcykgLT5cbiAgICAgIGxldCBhJywgYWNjJyA9IGYgYSBhY2MgaW5cbiAgICAgIE5lZ2F0aXZlV2hhdEV2ZXIgKGEnLCBzKSwgYWNjJ1xuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMsIGkpIC0+XG4gICAgICBsZXQgYScsIGFjYycgPSBmIGEgYWNjIGluXG4gICAgICBQb3NpdGl2ZUludGVybmFsaXplZCAoYScsIHMsIGkpLCBhY2MnXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAoYSwgcykgLT5cbiAgICAgIGxldCBhJywgYWNjJyA9IGYgYSBhY2MgaW5cbiAgICAgIE5lZ2F0aXZlSW50ZXJuYWxpemVkIChhJywgcyksIGFjYydcblxuICBsZXQgbWFwX2FnZW50IGYgPSBmdW5jdGlvblxuICAgIHwgQWdlbnQgYSAtPiBBZ2VudCAoZiBhKVxuICAgIHwgRnJlZWQgKGEsIHMpIC0+IEZyZWVkIChmIGEsIHMpXG4gICAgfCBMaW5rZWQgKChhMSwgczEpLCAoYTIsIHMyKSkgLT4gTGlua2VkICgoZiBhMSwgczEpLCAoZiBhMiwgczIpKVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAoYSwgcykgLT4gTmVnYXRpdmVXaGF0RXZlciAoZiBhLCBzKVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMsIGkpIC0+IFBvc2l0aXZlSW50ZXJuYWxpemVkIChmIGEsIHMsIGkpXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAoYSwgcykgLT4gTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKGYgYSwgcylcblxuICBsZXQgZm9sZF9hZ2VudCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBBZ2VudCBhIC0+IGYgYWNjIGFcbiAgICB8IEZyZWVkIChhLCBfKSAtPiBmIGFjYyBhXG4gICAgfCBMaW5rZWQgKChhMSwgXyksIChhMiwgXykpIC0+IGYgKGYgYWNjIGExKSBhMlxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAoYSwgXykgLT4gZiBhY2MgYVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIF8sIF8pIC0+IGYgYWNjIGFcbiAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIChhLCBfKSAtPiBmIGFjYyBhXG5cbiAgbGV0IGVxdWFsIGYgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IEFnZW50IGEsIEFnZW50IGEnIC0+IGYgYSBhJ1xuICAgIHwgKCBBZ2VudCBfLFxuICAgICAgICAoIEZyZWVkIF8gfCBMaW5rZWQgXyB8IE5lZ2F0aXZlV2hhdEV2ZXIgXyB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIF9cbiAgICAgICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCBfICkgKVxuICAgIHwgXywgQWdlbnQgXyAtPlxuICAgICAgZmFsc2VcbiAgICB8IEZyZWVkIChhLCBzKSwgRnJlZWQgKGEnLCBzJykgLT4gcyA9IHMnICYmIGYgYSBhJ1xuICAgIHwgKCBGcmVlZCBfLFxuICAgICAgICAoIExpbmtlZCBfIHwgTmVnYXRpdmVXaGF0RXZlciBfIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgX1xuICAgICAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIF8gKSApXG4gICAgfCBfLCBGcmVlZCBfIC0+XG4gICAgICBmYWxzZVxuICAgIHwgTGlua2VkICgoYTEsIHMxKSwgKGEyLCBzMikpLCBMaW5rZWQgKChhMScsIHMxJyksIChhMicsIHMyJykpIC0+XG4gICAgICAoczEgPSBzMScgJiYgczIgPSBzMicgJiYgZiBhMSBhMScgJiYgZiBhMiBhMicpXG4gICAgICB8fCAoczEgPSBzMicgJiYgczIgPSBzMScgJiYgZiBhMSBhMicgJiYgZiBhMiBhMScpXG4gICAgfCAoIExpbmtlZCBfLFxuICAgICAgICAoTmVnYXRpdmVXaGF0RXZlciBfIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgXyB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIF8pIClcbiAgICB8IF8sIExpbmtlZCBfIC0+XG4gICAgICBmYWxzZVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAoYSwgcyksIE5lZ2F0aXZlV2hhdEV2ZXIgKGEnLCBzJykgLT4gcyA9IHMnICYmIGYgYSBhJ1xuICAgIHwgTmVnYXRpdmVXaGF0RXZlciBfLCAoUG9zaXRpdmVJbnRlcm5hbGl6ZWQgXyB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIF8pXG4gICAgfCBfLCBOZWdhdGl2ZVdoYXRFdmVyIF8gLT5cbiAgICAgIGZhbHNlXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAoYSwgcyksIE5lZ2F0aXZlSW50ZXJuYWxpemVkIChhJywgcycpIC0+XG4gICAgICBzID0gcycgJiYgZiBhIGEnXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCBfLCBQb3NpdGl2ZUludGVybmFsaXplZCBfXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCBfLCBOZWdhdGl2ZUludGVybmFsaXplZCBfIC0+XG4gICAgICBmYWxzZVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMsIGkpLCBQb3NpdGl2ZUludGVybmFsaXplZCAoYScsIHMnLCBpJykgLT5cbiAgICAgIGkgPSBpJyAmJiBzID0gcycgJiYgZiBhIGEnXG5cbiAgbGV0IHByaW50ID9zaWdzIGYgPSBmdW5jdGlvblxuICAgIHwgQWdlbnQgcCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFslYUBdXCIgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKSBwXG4gICAgfCBGcmVlZCAocCwgcykgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhLiVhID0gJXRAXVwiXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludCA/c2lncylcbiAgICAgICAgcFxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBwKVxuICAgICAgICBzIFBwLmJvdHRvbVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAocCwgcykgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhLiVhID0gPz8/QF1cIlxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpXG4gICAgICAgIHBcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50X3NpdGUgP3NpZ3MgcClcbiAgICAgICAgc1xuICAgIHwgTGlua2VkICgocDEsIHMxKSwgKHAyLCBzMikpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS4lYSA9ICVhLiVhQF1cIlxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpXG4gICAgICAgIHAxXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludF9zaXRlID9zaWdzIHAxKVxuICAgICAgICBzMVxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpXG4gICAgICAgIHAyXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludF9zaXRlID9zaWdzIHAyKVxuICAgICAgICBzMlxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKHAsIHMsIGkpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS4lYSA9QF1cIlxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpXG4gICAgICAgIHBcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50X2ludGVybmFsID9zaWdzIHAgcylcbiAgICAgICAgaVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHAsIHMpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS4lYX4gPUBdXCJcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKVxuICAgICAgICBwXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludF9zaXRlID9zaWdzIHApXG4gICAgICAgIHNcblxuICBsZXQgZ2V0X25lZ2F0aXZlX3BhcnQgY3JlYXRlZF9hZ2VudHMgbG5rX2RzdCAoKChhLCBfKSwgXykgYXMgcCkgKGRvbiwgb3V0KSA9XG4gICAgaWYgTGlzdC5tZW0gcCBkb24gfHwgTGlzdC5tZW0gYSBjcmVhdGVkX2FnZW50cyB0aGVuXG4gICAgICBkb24sIG91dFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbG5rX2RzdCBwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBwIDo6IGRvbiwgRnJlZWQgcCA6OiBvdXRcbiAgICAgIHwgU29tZSBwJyAtPiBwIDo6IHAnIDo6IGRvbiwgTGlua2VkIChwLCBwJykgOjogb3V0XG4gICAgKVxuXG4gIGxldCBhZ2VudHNfY3JlYXRlZF9ieV9hY3Rpb24gPSBmdW5jdGlvblxuICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKChhZ19pZCwgXyksIF8pIC0+IFNvbWUgYWdfaWRcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZCBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF8gfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gX1xuICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgXyB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIF8gLT5cbiAgICAgIE5vbmVcblxuICBsZXQgYWdlbnRzX2NyZWF0ZWRfYnlfYWN0aW9ucyBhY3Rpb25zID1cbiAgICBMaXN0X3V0aWwubWFwX29wdGlvbiBhZ2VudHNfY3JlYXRlZF9ieV9hY3Rpb24gYWN0aW9uc1xuXG4gIGxldCBuZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbnNfb2ZfYWN0aW9ucyBzaWdzIGxua19kc3QgYWN0aW9ucyA9XG4gICAgbGV0IGNyZWF0ZWRfYWdlbnRzID0gYWdlbnRzX2NyZWF0ZWRfYnlfYWN0aW9ucyBhY3Rpb25zIGluXG4gICAgc25kXG4gICAgICAoTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgICAoZnVuIHggKChkb24sIG91dCkgYXMgYWNjKSAtPlxuICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoXywgXykgLT4gYWNjXG4gICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKCgoKGlkLCBfKSwgXykgYXMgcCksIF8pIC0+XG4gICAgICAgICAgICAgaWYgTGlzdC5tZW0gaWQgY3JlYXRlZF9hZ2VudHMgdGhlblxuICAgICAgICAgICAgICAgZG9uLCBvdXRcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBkb24sIE5lZ2F0aXZlSW50ZXJuYWxpemVkIHAgOjogb3V0XG4gICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChwMSwgcDIpIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIChwMSwgcDIpIC0+XG4gICAgICAgICAgICAgZ2V0X25lZ2F0aXZlX3BhcnQgY3JlYXRlZF9hZ2VudHMgbG5rX2RzdCBwMVxuICAgICAgICAgICAgICAgKGdldF9uZWdhdGl2ZV9wYXJ0IGNyZWF0ZWRfYWdlbnRzIGxua19kc3QgcDIgYWNjKVxuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBwIC0+XG4gICAgICAgICAgICAgZ2V0X25lZ2F0aXZlX3BhcnQgY3JlYXRlZF9hZ2VudHMgbG5rX2RzdCBwIGFjY1xuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlICgoXywgdHkpIGFzIGEpIC0+XG4gICAgICAgICAgICAgVG9vbHMucmVjdGlcbiAgICAgICAgICAgICAgIChmdW4gc3QgcyAtPiBnZXRfbmVnYXRpdmVfcGFydCBjcmVhdGVkX2FnZW50cyBsbmtfZHN0IChhLCBzKSBzdClcbiAgICAgICAgICAgICAgIChkb24sIEFnZW50IGEgOjogb3V0KVxuICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5hcml0eSBzaWdzIHR5KSlcbiAgICAgICAgIGFjdGlvbnMgKFtdLCBbXSkpXG5cbiAgbGV0IHBvc2l0aXZlX3RyYW5zZm9ybWF0aW9uc19vZl9hY3Rpb25zIHNpZ3Mgc2lkZV9lZmZlY3RfZHN0cyBhY3Rpb25zID1cbiAgICBsZXQgcmVtLCByZXYgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoKHJlbSwgb3V0KSBhcyBhY2MpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoKChfLCB0eSkgYXMgYSksIF8pIC0+XG4gICAgICAgICAgICAoIFRvb2xzLnJlY3RpXG4gICAgICAgICAgICAgICAgKGZ1biBzdCBzIC0+IChhLCBzKSA6OiBzdClcbiAgICAgICAgICAgICAgICByZW0gKFNpZ25hdHVyZS5hcml0eSBzaWdzIHR5KSxcbiAgICAgICAgICAgICAgQWdlbnQgYSA6OiBvdXQgKVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKChhLCBzKSwgaSkgLT5cbiAgICAgICAgICAgIHJlbSwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMsIGkpIDo6IG91dFxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChwMSwgcDIpIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIChwMSwgcDIpIC0+XG4gICAgICAgICAgICAoIExpc3QuZmlsdGVyIChmdW4gcCAtPiBwIDw+IHAxICYmIHAgPD4gcDIpIHJlbSxcbiAgICAgICAgICAgICAgTGlua2VkIChwMSwgcDIpIDo6IG91dCApXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcCAtPlxuICAgICAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biBwJyAtPiBwJyA8PiBwKSByZW0sIEZyZWVkIHAgOjogb3V0XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfIC0+IGFjYylcbiAgICAgICAgKFtdLCBbXSkgYWN0aW9uc1xuICAgIGluXG4gICAgTGlzdC5yZXZfYXBwZW5kIHJldlxuICAgICAgKExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZFxuICAgICAgICAgKGZ1biBwIC0+IEZyZWVkIHApXG4gICAgICAgICByZW1cbiAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHAgLT4gRnJlZWQgcCkgc2lkZV9lZmZlY3RfZHN0cykpXG5lbmRcblxudHlwZSBhbGdfZXhwciA9IChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuZVxuXG50eXBlIGVsZW1lbnRhcnlfcnVsZSA9IHtcbiAgcmF0ZTogYWxnX2V4cHIgTG9jLmFubm90ZWQ7XG4gIHVuYXJ5X3JhdGU6IChhbGdfZXhwciBMb2MuYW5ub3RlZCAqIGFsZ19leHByIG9wdGlvbikgb3B0aW9uO1xuICBjb25uZWN0ZWRfY29tcG9uZW50czogUGF0dGVybi5pZCBhcnJheTsgKCppZCAtPiBjYyopXG4gIHJlbW92ZWQ6IEluc3RhbnRpYXRpb24uYWJzdHJhY3QgVHJhbnNmb3JtYXRpb24udCBsaXN0O1xuICBpbnNlcnRlZDogSW5zdGFudGlhdGlvbi5hYnN0cmFjdCBUcmFuc2Zvcm1hdGlvbi50IGxpc3Q7XG4gIGRlbHRhX3Rva2VuczogKGFsZ19leHByIExvYy5hbm5vdGVkICogaW50KSBsaXN0O1xuICBzeW50YWN0aWNfcnVsZTogaW50OyAgKCoqIFswXSBtZWFucyBnZW5lcmF0ZWQgZm9yIHBlcnR1cmJhdGlvbi4gKilcbiAgaW5zdGFudGlhdGlvbnM6IEluc3RhbnRpYXRpb24uYWJzdHJhY3QgSW5zdGFudGlhdGlvbi5ldmVudDtcbn1cblxubGV0IGV4dHJhY3RfY2NfaWRzIHIgPSByLmNvbm5lY3RlZF9jb21wb25lbnRzXG5sZXQgZXh0cmFjdF9hYnN0cmFjdF9ldmVudCByID0gci5pbnN0YW50aWF0aW9uc1xuXG5sZXQgYWxnX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgPVxuICBBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKEpzb25VdGlsLm9mX2xpc3QgKEpzb25VdGlsLm9mX2FycmF5IFBhdHRlcm4uaWRfdG9feW9qc29uKSlcbiAgICBKc29uVXRpbC5vZl9pbnRcblxubGV0IGFsZ19leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC50b19saXN0IChKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvbikpXG4gICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpXG5cbmxldCBydWxlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIHIgPVxuICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgIFtcbiAgICAgICggXCJyYXRlXCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgci5yYXRlXG4gICAgICApO1xuICAgICAgKCBcInVuYXJ5X3JhdGVcIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGFsZ19leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykpKVxuICAgICAgICAgIHIudW5hcnlfcmF0ZSApO1xuICAgICAgKCBcImNvbm5lY3RlZF9jb21wb25lbnRzXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2FycmF5IFBhdHRlcm4uaWRfdG9feW9qc29uIHIuY29ubmVjdGVkX2NvbXBvbmVudHMgKTtcbiAgICAgIFwicmVtb3ZlZFwiLCBKc29uVXRpbC5vZl9saXN0IFRyYW5zZm9ybWF0aW9uLnRvX3lvanNvbiByLnJlbW92ZWQ7XG4gICAgICBcImluc2VydGVkXCIsIEpzb25VdGlsLm9mX2xpc3QgVHJhbnNmb3JtYXRpb24udG9feW9qc29uIHIuaW5zZXJ0ZWQ7XG4gICAgICAoIFwiZGVsdGFfdG9rZW5zXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpciB+bGFiMTpcInZhbFwiIH5sYWIyOlwidG9rXCJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGFsZ19leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICBKc29uVXRpbC5vZl9pbnQpXG4gICAgICAgICAgci5kZWx0YV90b2tlbnMgKTtcbiAgICAgIFwic3ludGFjdGljX3J1bGVcIiwgYEludCByLnN5bnRhY3RpY19ydWxlO1xuICAgICAgKCBcImluc3RhbnRpYXRpb25zXCIsXG4gICAgICAgIEluc3RhbnRpYXRpb24uZXZlbnRfdG9fanNvbiBNYXRjaGluZy5BZ2VudC50b195b2pzb24gci5pbnN0YW50aWF0aW9ucyApO1xuICAgIF1cblxubGV0IHJ1bGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgciA9XG4gIG1hdGNoIHIgd2l0aFxuICB8IChgQXNzb2MgbCA6IFlvanNvbi5CYXNpYy50KSBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIHJhdGUgPVxuICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChhbGdfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInJhdGVcIiBsKTtcbiAgICAgICAgIHVuYXJ5X3JhdGUgPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChhbGdfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykpXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpKSlcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwidW5hcnlfcmF0ZVwiIHgpO1xuICAgICAgICAgY29ubmVjdGVkX2NvbXBvbmVudHMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvblxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJjb25uZWN0ZWRfY29tcG9uZW50c1wiIHgpO1xuICAgICAgICAgcmVtb3ZlZCA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3QgVHJhbnNmb3JtYXRpb24ub2ZfeW9qc29uXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInJlbW92ZWRcIiB4KTtcbiAgICAgICAgIGluc2VydGVkID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdCBUcmFuc2Zvcm1hdGlvbi5vZl95b2pzb25cbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiaW5zZXJ0ZWRcIiB4KTtcbiAgICAgICAgIGRlbHRhX3Rva2VucyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpciB+bGFiMTpcInZhbFwiIH5sYWIyOlwidG9rXCJcbiAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKSlcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZGVsdGFfdG9rZW5zXCIgeCk7XG4gICAgICAgICBzeW50YWN0aWNfcnVsZSA9IEpzb25VdGlsLnRvX2ludCAoTGlzdC5hc3NvYyBcInN5bnRhY3RpY19ydWxlXCIgbCk7XG4gICAgICAgICBpbnN0YW50aWF0aW9ucyA9XG4gICAgICAgICAgIEluc3RhbnRpYXRpb24uZXZlbnRfb2ZfanNvbiBNYXRjaGluZy5BZ2VudC5vZl95b2pzb25cbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImluc3RhbnRpYXRpb25zXCIgbCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZWxlbWVudGFyeSBydWxlXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlbGVtZW50YXJ5IHJ1bGVcIiwgeCkpXG5cbmxldCBmdWxseV9zcGVjaWZpZWRfcGF0dGVybl90b19wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbnMgY2MgPVxuICBsZXQgXywgdHIgPVxuICAgIFBhdHRlcm4uZm9sZF9ieV90eXBlXG4gICAgICAoZnVuIH5wb3MgfmFnZW50X3R5cGUgaW50ZiAoZW1iLCBnKSAtPlxuICAgICAgICBsZXQgYSA9IHBvcywgYWdlbnRfdHlwZSBpblxuICAgICAgICBsZXQgZycgPSBUcmFuc2Zvcm1hdGlvbi5BZ2VudCBhIDo6IGcgaW5cbiAgICAgICAgbGV0IGVtYicgPSBNb2RzLkludE1hcC5hZGQgcG9zIGEgZW1iIGluXG4gICAgICAgICggZW1iJyxcbiAgICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgICAoZnVuIHNpdGUgYWNjIChsLCBpKSAtPlxuICAgICAgICAgICAgICBsZXQgYWNjJyA9XG4gICAgICAgICAgICAgICAgaWYgaSA8PiAtMSB0aGVuXG4gICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCAoYSwgc2l0ZSwgaSkgOjogYWNjXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFBhdHRlcm4uVW5TcGVjIHwgUGF0dGVybi5GcmVlIC0+XG4gICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb24uRnJlZWQgKGEsIHNpdGUpIDo6IGFjYydcbiAgICAgICAgICAgICAgfCBQYXR0ZXJuLkxpbmsgKHgnLCBzJykgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24geCcgZW1iJyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjYydcbiAgICAgICAgICAgICAgICB8IFNvbWUgYWcnIC0+XG4gICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChhLCBzaXRlKSwgKGFnJywgcycpKSA6OiBhY2MnKSlcbiAgICAgICAgICAgIGcnIGludGYgKSlcbiAgICAgIGNjIChNb2RzLkludE1hcC5lbXB0eSwgW10pXG4gIGluXG4gIExpc3QucmV2IHRyXG5cbnR5cGUgJ2FsZ19leHByIHByaW50X2V4cHIgPVxuICB8IFN0cl9wZXhwciBvZiBzdHJpbmcgTG9jLmFubm90ZWRcbiAgfCBBbGdfcGV4cHIgb2YgJ2FsZ19leHByIExvYy5hbm5vdGVkXG5cbmxldCBwcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBTdHJfcGV4cHIgcyAtPiBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9zdHJpbmcgc1xuICB8IEFsZ19wZXhwciBhIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgICggXCJBXCIsXG4gICAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgICAgYSApO1xuICAgICAgXVxuXG5sZXQgcHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhciB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYEFzc29jIFsgKFwiQVwiLCB4KSBdIC0+XG4gICAgKHRyeVxuICAgICAgIEFsZ19wZXhwclxuICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICAgIHgpXG4gICAgIHdpdGggWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciBfIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHByaW50IGV4cHJcIiwgeCkpKVxuICB8IHggLT5cbiAgICAodHJ5XG4gICAgICAgU3RyX3BleHByXG4gICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgICAgeClcbiAgICAgd2l0aCBZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIF8gLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcHJpbnQgZXhwclwiLCB4KSkpXG5cbmxldCBtYXBfZXhwcl9wcmludCBmIHggPVxuICBMaXN0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBTdHJfcGV4cHIgXyBhcyB4IC0+IHhcbiAgICAgIHwgQWxnX3BleHByIGUgLT4gQWxnX3BleHByIChmIGUpKVxuICAgIHhcblxubGV0IGZvbGRfZXhwcl9wcmludCBmIGFjYyB4ID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgfCBTdHJfcGV4cHIgXyAtPiBhY2NcbiAgICAgIHwgQWxnX3BleHByIGUgLT4gZiBhY2MgZSlcbiAgICBhY2MgeFxuXG50eXBlIGRpbl9raW5kID0gQUJTT0xVVEUgfCBSRUxBVElWRSB8IFBST0JBQklMSVRZXG5cbmxldCBkaW5fa2luZF90b195b2pzb24gPSBmdW5jdGlvblxuICB8IEFCU09MVVRFIC0+IGBTdHJpbmcgXCJBQlNPTFVURVwiXG4gIHwgUkVMQVRJVkUgLT4gYFN0cmluZyBcIlJFTEFUSVZFXCJcbiAgfCBQUk9CQUJJTElUWSAtPiBgU3RyaW5nIFwiUFJPQkFCSUxJVFlcIlxuXG5sZXQgZGluX2tpbmRfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiQUJTT0xVVEVcIiAtPiBBQlNPTFVURVxuICB8IGBTdHJpbmcgXCJSRUxBVElWRVwiIC0+IFJFTEFUSVZFXG4gIHwgYFN0cmluZyBcIlBST0JBQklMSVRZXCIgLT4gUFJPQkFCSUxJVFlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBkaW5fa2luZFwiLCB4KSlcblxubGV0IHdyaXRlX2Rpbl9raW5kIG9iIGYgPSBZb2pzb24uQmFzaWMudG9fYnVmZmVyIG9iIChkaW5fa2luZF90b195b2pzb24gZilcblxubGV0IHN0cmluZ19vZl9kaW5fa2luZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9kaW5fa2luZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHJlYWRfZGluX2tpbmQgcCBsYiA9XG4gIGRpbl9raW5kX29mX3lvanNvbiAoWW9qc29uLkJhc2ljLmZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSBwIGxiKVxuXG5sZXQgZGluX2tpbmRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Rpbl9raW5kIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbnR5cGUgbW9kaWZpY2F0aW9uID1cbiAgfCBJVEVSX1JVTEUgb2YgYWxnX2V4cHIgTG9jLmFubm90ZWQgKiBlbGVtZW50YXJ5X3J1bGVcbiAgfCBVUERBVEUgb2YgaW50ICogYWxnX2V4cHIgTG9jLmFubm90ZWRcbiAgfCBTTkFQU0hPVCBvZiBib29sICogYWxnX2V4cHIgcHJpbnRfZXhwciBsaXN0XG4gIHwgU1RPUCBvZiBhbGdfZXhwciBwcmludF9leHByIGxpc3RcbiAgfCBDRkxPVyBvZlxuICAgICAgc3RyaW5nIG9wdGlvblxuICAgICAgKiBQYXR0ZXJuLmlkIGFycmF5XG4gICAgICAqIEluc3RhbnRpYXRpb24uYWJzdHJhY3QgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3QgbGlzdFxuICB8IERJTiBvZiBkaW5fa2luZCAqIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuICB8IERJTk9GRiBvZiBhbGdfZXhwciBwcmludF9leHByIGxpc3RcbiAgfCBDRkxPV09GRiBvZiBzdHJpbmcgb3B0aW9uICogUGF0dGVybi5pZCBhcnJheVxuICB8IFBMT1RFTlRSWVxuICB8IFBSSU5UIG9mIGFsZ19leHByIHByaW50X2V4cHIgbGlzdCAqIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuICB8IFNQRUNJRVMgb2ZcbiAgICAgIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuICAgICAgKiBQYXR0ZXJuLmlkIGFycmF5XG4gICAgICAqIEluc3RhbnRpYXRpb24uYWJzdHJhY3QgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3QgbGlzdFxuICB8IFNQRUNJRVNfT0ZGIG9mIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuXG5sZXQgcHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgcHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbikpXG4gICAgSnNvblV0aWwub2ZfaW50XG5cbmxldCBwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgPVxuICBwcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKEpzb25VdGlsLnRvX2xpc3QgKEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uKSlcbiAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSlcblxubGV0IG1vZGlmaWNhdGlvbl90b195b2pzb24gfmZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgSVRFUl9SVUxFIChuLCByKSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiSVRFUlwiO1xuICAgICAgICAoIFwicmVwZWF0c1wiLFxuICAgICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgbiApO1xuICAgICAgICBcInJ1bGVcIiwgcnVsZV90b195b2pzb24gfmZpbGVuYW1lcyByO1xuICAgICAgXVxuICB8IFVQREFURSAodiwgZSkgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIlVQREFURVwiO1xuICAgICAgICBcInZhclwiLCBgSW50IHY7XG4gICAgICAgICggXCJ2YWx1ZVwiLFxuICAgICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZSApO1xuICAgICAgXVxuICB8IFNOQVBTSE9UIChyYXcsIGYpIC0+XG4gICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCI7XG4gICAgICAgIFwicmF3XCIsIGBCb29sIHJhdztcbiAgICAgICAgXCJmaWxlXCIsIEpzb25VdGlsLm9mX2xpc3QgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZjtcbiAgICAgIF1cbiAgfCBTVE9QIGYgLT5cbiAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiU1RPUFwiO1xuICAgICAgICBcImZpbGVcIiwgSnNvblV0aWwub2ZfbGlzdCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBmO1xuICAgICAgXVxuICB8IENGTE9XIChuYW1lLCBpZHMsIHRlc3RzKSAtPlxuICAgIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJDRkxPV1wiO1xuICAgICAgICBcIm5hbWVcIiwgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX3N0cmluZyBuYW1lO1xuICAgICAgICBcInBhdHRlcm5cIiwgSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24gaWRzO1xuICAgICAgICAoIFwidGVzdHNcIixcbiAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAoSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24udGVzdF90b19qc29uIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbikpXG4gICAgICAgICAgICB0ZXN0cyApO1xuICAgICAgXVxuICB8IENGTE9XT0ZGIChuYW1lLCBpZHMpIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJDRkxPV09GRlwiO1xuICAgICAgICBcIm5hbWVcIiwgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX3N0cmluZyBuYW1lO1xuICAgICAgICBcInBhdHRlcm5cIiwgSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24gaWRzO1xuICAgICAgXVxuICB8IERJTiAoa2luZCwgZikgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTlwiO1xuICAgICAgICBcImtpbmRcIiwgZGluX2tpbmRfdG9feW9qc29uIGtpbmQ7XG4gICAgICAgIFwiZmlsZVwiLCBgTGlzdCAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZik7XG4gICAgICBdXG4gIHwgRElOT0ZGIGYgLT5cbiAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOT0ZGXCI7XG4gICAgICAgIFwiZmlsZVwiLCBKc29uVXRpbC5vZl9saXN0IChwcmludF90X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIGY7XG4gICAgICBdXG4gIHwgUExPVEVOVFJZIC0+IGBBc3NvYyBbIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQTE9UTk9XXCIgXVxuICB8IFBSSU5UIChmLCB0KSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIjtcbiAgICAgICAgXCJ0ZXh0XCIsIGBMaXN0IChMaXN0Lm1hcCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSB0KTtcbiAgICAgICAgXCJmaWxlXCIsIGBMaXN0IChMaXN0Lm1hcCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBmKTtcbiAgICAgIF1cbiAgfCBTUEVDSUVTIChmLCBpZHMsIHRlc3RzKSAtPlxuICAgIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTUEVDSUVTXCI7XG4gICAgICAgIFwiZmlsZVwiLCBgTGlzdCAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZik7XG4gICAgICAgIFwicGF0dGVyblwiLCBKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbiBpZHM7XG4gICAgICAgICggXCJ0ZXN0c1wiLFxuICAgICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAgIChKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi50ZXN0X3RvX2pzb24gTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uKSlcbiAgICAgICAgICAgIHRlc3RzICk7XG4gICAgICBdXG4gIHwgU1BFQ0lFU19PRkYgZiAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiU1BFQ0lFU19PRkZcIjtcbiAgICAgICAgXCJmaWxlXCIsIGBMaXN0IChMaXN0Lm1hcCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBmKTtcbiAgICAgIF1cblxubGV0IG1vZGlmaWNhdGlvbl9vZl95b2pzb24gfmZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwidGV4dFwiLCBgTGlzdCB0KSBdXG4gIHwgYEFzc29jIFsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiZmlsZVwiLCBgTGlzdCBmKSBdXG4gIHwgYEFzc29jIFsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwiZmlsZVwiLCBgTGlzdCBmKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwidGV4dFwiLCBgTGlzdCB0KSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKSBdXG4gICAgLT5cbiAgICBQUklOVFxuICAgICAgKCBMaXN0Lm1hcCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBmLFxuICAgICAgICBMaXN0Lm1hcCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSB0IClcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwidGV4dFwiLCBgTGlzdCB0KSBdXG4gIHwgYEFzc29jIFsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcInRleHRcIiwgYExpc3QgdCk7IChcImZpbGVcIiwgYE51bGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJ0ZXh0XCIsIGBMaXN0IHQpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcInRleHRcIiwgYExpc3QgdCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJ0ZXh0XCIsIGBMaXN0IHQpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJ0ZXh0XCIsIGBMaXN0IHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJ0ZXh0XCIsIGBMaXN0IHQpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpIF0gLT5cbiAgICBQUklOVCAoW10sIExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIHQpXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5cIik7IChcImZpbGVcIiwgYExpc3QgZik7IChcImtpbmRcIiwga2luZCkgXVxuICB8IGBBc3NvYyBbIChcImtpbmRcIiwga2luZCk7IChcImZpbGVcIiwgYExpc3QgZik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTlwiKTsgKFwia2luZFwiLCBraW5kKTsgKFwiZmlsZVwiLCBgTGlzdCBmKSBdXG4gIHwgYEFzc29jIFsgKFwia2luZFwiLCBraW5kKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5cIik7IChcImZpbGVcIiwgYExpc3QgZikgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYExpc3QgZik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOXCIpOyAoXCJraW5kXCIsIGtpbmQpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBMaXN0IGYpOyAoXCJraW5kXCIsIGtpbmQpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTlwiKSBdIC0+XG4gICAgRElOIChkaW5fa2luZF9vZl95b2pzb24ga2luZCwgTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgZilcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlVQREFURVwiKTsgKFwidmFyXCIsIGBJbnQgdik7IChcInZhbHVlXCIsIGUpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YXJcIiwgYEludCB2KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJVUERBVEVcIik7IChcInZhbHVlXCIsIGUpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlVQREFURVwiKTsgKFwidmFsdWVcIiwgZSk7IChcInZhclwiLCBgSW50IHYpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YXJcIiwgYEludCB2KTsgKFwidmFsdWVcIiwgZSk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiVVBEQVRFXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YWx1ZVwiLCBlKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJVUERBVEVcIik7IChcInZhclwiLCBgSW50IHYpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YWx1ZVwiLCBlKTsgKFwidmFyXCIsIGBJbnQgdik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiVVBEQVRFXCIpIF0gLT5cbiAgICBVUERBVEVcbiAgICAgICh2LCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGUpXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJJVEVSXCIpOyAoXCJyZXBlYXRzXCIsIG4pOyAoXCJydWxlXCIsIHIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIklURVJcIik7IChcInJ1bGVcIiwgcik7IChcInJlcGVhdHNcIiwgbikgXVxuICB8IGBBc3NvYyBbIChcInJlcGVhdHNcIiwgbik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiSVRFUlwiKTsgKFwicnVsZVwiLCByKSBdXG4gIHwgYEFzc29jIFsgKFwicnVsZVwiLCByKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJJVEVSXCIpOyAoXCJyZXBlYXRzXCIsIG4pIF1cbiAgfCBgQXNzb2MgWyAoXCJyZXBlYXRzXCIsIG4pOyAoXCJydWxlXCIsIHIpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIklURVJcIikgXVxuICB8IGBBc3NvYyBbIChcInJ1bGVcIiwgcik7IChcInJlcGVhdHNcIiwgbik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiSVRFUlwiKSBdIC0+XG4gICAgSVRFUl9SVUxFXG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChhbGdfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgbixcbiAgICAgICAgcnVsZV9vZl95b2pzb24gfmZpbGVuYW1lcyByIClcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBMT1ROT1dcIikgXSAtPiBQTE9URU5UUllcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTk9GRlwiKTsgKFwiZmlsZVwiLCBgTGlzdCBsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTGlzdCBsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5PRkZcIikgXSAtPlxuICAgIERJTk9GRiAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgbClcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTk9GRlwiKTsgKFwiZmlsZVwiLCBgTnVsbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTk9GRlwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5PRkZcIikgXSAtPlxuICAgIERJTk9GRiBbXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcImZpbGVcIiwgYExpc3QgbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYExpc3QgbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXSAtPlxuICAgIFNOQVBTSE9UIChmYWxzZSwgTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgbClcbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcImZpbGVcIiwgYExpc3QgbCkgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiZmlsZVwiLCBgTGlzdCBsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJmaWxlXCIsIGBMaXN0IGwpIF1cbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwiZmlsZVwiLCBgTGlzdCBsKTsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGwpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImZpbGVcIiwgYExpc3QgbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcInJhd1wiLCBgQm9vbCByYXcpIF1cbiAgICAtPlxuICAgIFNOQVBTSE9UIChyYXcsIExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGwpXG4gIHwgYEFzc29jXG4gICAgICBbIChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcImZpbGVcIiwgYE51bGwpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KSBdXG4gIHwgYEFzc29jIFsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcInJhd1wiLCBgQm9vbCByYXcpIF0gLT5cbiAgICBTTkFQU0hPVCAocmF3LCBbXSlcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXSAtPlxuICAgIFNOQVBTSE9UIChmYWxzZSwgW10pXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTVE9QXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBMaXN0IGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNUT1BcIikgXSAtPlxuICAgIFNUT1AgKExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGwpXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTVE9QXCIpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU1RPUFwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTVE9QXCIpIF0gLT5cbiAgICBTVE9QIFtdXG4gIHwgYEFzc29jIF8gYXMgbCB3aGVuIFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImFjdGlvblwiIGwgPSBgU3RyaW5nIFwiQ0ZMT1dcIiAtPlxuICAgIENGTE9XXG4gICAgICAoIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJuYW1lXCIgbCksXG4gICAgICAgIEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInBhdHRlcm5cIiBsKSxcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgKEluc3RhbnRpYXRpb24udGVzdF9vZl9qc29uIE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbikpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInRlc3RzXCIgbCkgKVxuICB8IGBBc3NvYyBfIGFzIGwgd2hlbiBZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJhY3Rpb25cIiBsID0gYFN0cmluZyBcIkNGTE9XT0ZGXCJcbiAgICAtPlxuICAgIENGTE9XT0ZGXG4gICAgICAoIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJuYW1lXCIgbCksXG4gICAgICAgIEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInBhdHRlcm5cIiBsKSApXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTUEVDSUVTX09GRlwiKTsgKFwiZmlsZVwiLCBwKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBwKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTUEVDSUVTX09GRlwiKSBdIC0+XG4gICAgU1BFQ0lFU19PRkYgKEpzb25VdGlsLnRvX2xpc3QgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgcClcbiAgfCBgQXNzb2MgXyBhcyBsIHdoZW4gWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiYWN0aW9uXCIgbCA9IGBTdHJpbmcgXCJTUEVDSUVTXCJcbiAgICAtPlxuICAgIFNQRUNJRVNcbiAgICAgICggSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImZpbGVcIiBsKSxcbiAgICAgICAgSnNvblV0aWwudG9fYXJyYXkgUGF0dGVybi5pZF9vZl95b2pzb25cbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwicGF0dGVyblwiIGwpLFxuICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi50ZXN0X29mX2pzb24gTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uKSlcbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwidGVzdHNcIiBsKSApXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIG1vZGlmaWNhdGlvblwiLCB4KSlcblxudHlwZSBwZXJ0dXJiYXRpb24gPSB7XG4gIGFsYXJtOiBOYnIudCBvcHRpb247XG4gIHByZWNvbmRpdGlvbjogKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkO1xuICBlZmZlY3Q6IG1vZGlmaWNhdGlvbiBsaXN0O1xuICByZXBlYXQ6IChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZDtcbiAgbmVlZHNfYmFja3RyYWNrOiBib29sO1xufVxuXG5sZXQgYm9vbF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgQWxnX2V4cHIuYm9vbF90b195b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbikpXG4gICAgSnNvblV0aWwub2ZfaW50XG5cbmxldCBib29sX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgPVxuICBBbGdfZXhwci5ib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKEpzb25VdGlsLnRvX2xpc3QgKEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uKSlcbiAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSlcblxubGV0IHBlcnR1cmJhdGlvbl90b195b2pzb24gfmZpbGVuYW1lcyBwID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgXCJhbGFybVwiLCBKc29uVXRpbC5vZl9vcHRpb24gKGZ1biBuIC0+IE5ici50b195b2pzb24gbikgcC5hbGFybTtcbiAgICAgICggXCJjb25kaXRpb25cIixcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgIHAucHJlY29uZGl0aW9uICk7XG4gICAgICBcImVmZmVjdFwiLCBKc29uVXRpbC5vZl9saXN0IChtb2RpZmljYXRpb25fdG9feW9qc29uIH5maWxlbmFtZXMpIHAuZWZmZWN0O1xuICAgICAgKCBcInJlcGVhdFwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChib29sX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgcC5yZXBlYXQgKTtcbiAgICAgIFwibmVlZHNfYmFja3RyYWNrXCIsIGBCb29sIHAubmVlZHNfYmFja3RyYWNrO1xuICAgIF1cblxubGV0IHBlcnR1cmJhdGlvbl9vZl95b2pzb24gfmZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA1IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIGFsYXJtID0gSnNvblV0aWwudG9fb3B0aW9uIE5ici5vZl95b2pzb24gKExpc3QuYXNzb2MgXCJhbGFybVwiIGwpO1xuICAgICAgICAgcHJlY29uZGl0aW9uID1cbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoYm9vbF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwiY29uZGl0aW9uXCIgbCk7XG4gICAgICAgICBlZmZlY3QgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgKG1vZGlmaWNhdGlvbl9vZl95b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImVmZmVjdFwiIGwpO1xuICAgICAgICAgcmVwZWF0ID1cbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoYm9vbF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwicmVwZWF0XCIgbCk7XG4gICAgICAgICBuZWVkc19iYWNrdHJhY2sgPVxuICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IGBCb29sIGIgLT4gYlxuICAgICAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgYm9vbFwiLCB4KSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJuZWVkc19iYWNrdHJhY2tcIiBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBwZXJ0dXJiYXRpb25cIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBwZXJ0dXJiYXRpb25cIiwgeCkpXG5cbmxldCBleGlzdHNfbW9kaWZpY2F0aW9uIGNoZWNrIGwgPVxuICBBcnJheS5mb2xkX2xlZnQgKGZ1biBhY2MgcCAtPiBhY2MgfHwgTGlzdC5leGlzdHMgY2hlY2sgcC5lZmZlY3QpIGZhbHNlIGxcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhY2MgZSA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIGEgLT4gTGlzdC5yZXZfYXBwZW5kIChBcnJheS50b19saXN0IGEpIGFjYykpXG4gICAgYWNjXG4gICAgKEFsZ19leHByLmV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHMgZSlcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfYm9vbCBlID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgYSAtPiBMaXN0LnJldl9hcHBlbmQgKEFycmF5LnRvX2xpc3QgYSkgYWNjKSlcbiAgICBbXVxuICAgIChBbGdfZXhwci5leHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2Jvb2wgZSlcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcnVsZSBhY2MgciA9XG4gIGxldCBhID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgKHgsIF8pIC0+IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhY2MgeClcbiAgICAgIGFjYyByLmRlbHRhX3Rva2Vuc1xuICBpblxuICBsZXQgYiA9XG4gICAgbWF0Y2ggci51bmFyeV9yYXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gYVxuICAgIHwgU29tZSAoeCwgXykgLT4gZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19leHByIGEgeFxuICBpblxuICBsZXQgYyA9IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBiIHIucmF0ZSBpblxuICBMaXN0LnJldl9hcHBlbmQgKEFycmF5LnRvX2xpc3Qgci5jb25uZWN0ZWRfY29tcG9uZW50cykgY1xuXG5sZXQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19wcmludCBhY2MgeCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgIHwgU3RyX3BleHByIF8gLT4gYWNjXG4gICAgICB8IEFsZ19wZXhwciBlIC0+IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhY2MgZSlcbiAgICBhY2MgeFxuXG5sZXQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19tb2RpZmljYXRpb24gYWNjID0gZnVuY3Rpb25cbiAgfCBJVEVSX1JVTEUgKGUsIHIpIC0+XG4gICAgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19ydWxlXG4gICAgICAoZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19leHByIGFjYyBlKVxuICAgICAgclxuICB8IFVQREFURSAoXywgZSkgLT4gZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19leHByIGFjYyBlXG4gIHwgU05BUFNIT1QgKF8sIHApIHwgU1RPUCBwIHwgU1BFQ0lFU19PRkYgcCB8IERJTiAoXywgcCkgfCBESU5PRkYgcCAtPlxuICAgIGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcHJpbnQgYWNjIHBcbiAgfCBQUklOVCAoZm4sIHApIC0+XG4gICAgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19wcmludFxuICAgICAgKGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcHJpbnQgYWNjIHApXG4gICAgICBmblxuICB8IENGTE9XIChfLCB4LCBfKSB8IENGTE9XT0ZGIChfLCB4KSB8IFNQRUNJRVMgKF8sIHgsIF8pIC0+XG4gICAgTGlzdC5yZXZfYXBwZW5kIChBcnJheS50b19saXN0IHgpIGFjY1xuICB8IFBMT1RFTlRSWSAtPiBhY2NcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfbW9kaWZpY2F0aW9ucyBsID1cbiAgTGlzdC5mb2xkX2xlZnQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19tb2RpZmljYXRpb24gW10gbFxuXG5sZXQgbWFwX2V4cHJfcnVsZSBmIHggPVxuICB7XG4gICAgcmF0ZSA9IGYgeC5yYXRlO1xuICAgIHVuYXJ5X3JhdGUgPSBPcHRpb25fdXRpbC5tYXAgKGZ1biAoeCwgZCkgLT4gZiB4LCBkKSB4LnVuYXJ5X3JhdGU7XG4gICAgY29ubmVjdGVkX2NvbXBvbmVudHMgPSB4LmNvbm5lY3RlZF9jb21wb25lbnRzO1xuICAgIHJlbW92ZWQgPSB4LnJlbW92ZWQ7XG4gICAgaW5zZXJ0ZWQgPSB4Lmluc2VydGVkO1xuICAgIGRlbHRhX3Rva2VucyA9IExpc3QubWFwIChmdW4gKHgsIHQpIC0+IGYgeCwgdCkgeC5kZWx0YV90b2tlbnM7XG4gICAgc3ludGFjdGljX3J1bGUgPSB4LnN5bnRhY3RpY19ydWxlO1xuICAgIGluc3RhbnRpYXRpb25zID0geC5pbnN0YW50aWF0aW9ucztcbiAgfVxuXG5sZXQgZm9sZF9leHByX3J1bGUgZiB4IHIgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjICh5LCBfKSAtPiBmIGFjYyB5KVxuICAgIChPcHRpb25fdXRpbC5mb2xkIChmdW4gYSAoZSwgXykgLT4gZiBhIGUpIChmIHggci5yYXRlKSByLnVuYXJ5X3JhdGUpXG4gICAgci5kZWx0YV90b2tlbnNcblxubGV0IG1hcF9leHByX21vZGlmaWNhdGlvbiBmID0gZnVuY3Rpb25cbiAgfCBJVEVSX1JVTEUgKGUsIHIpIC0+IElURVJfUlVMRSAoZiBlLCBtYXBfZXhwcl9ydWxlIGYgcilcbiAgfCBVUERBVEUgKGksIGUpIC0+IFVQREFURSAoaSwgZiBlKVxuICB8IFNOQVBTSE9UIChyYXcsIHApIC0+IFNOQVBTSE9UIChyYXcsIG1hcF9leHByX3ByaW50IGYgcClcbiAgfCBTVE9QIHAgLT4gU1RPUCAobWFwX2V4cHJfcHJpbnQgZiBwKVxuICB8IFBSSU5UIChmbiwgcCkgLT4gUFJJTlQgKG1hcF9leHByX3ByaW50IGYgZm4sIG1hcF9leHByX3ByaW50IGYgcClcbiAgfCBESU4gKGIsIHApIC0+IERJTiAoYiwgbWFwX2V4cHJfcHJpbnQgZiBwKVxuICB8IERJTk9GRiBwIC0+IERJTk9GRiAobWFwX2V4cHJfcHJpbnQgZiBwKVxuICB8IChDRkxPVyBfIHwgQ0ZMT1dPRkYgXyB8IFNQRUNJRVNfT0ZGIF8gfCBQTE9URU5UUlkpIGFzIHggLT4geFxuICB8IFNQRUNJRVMgKHAsIHgsIHQpIC0+IFNQRUNJRVMgKG1hcF9leHByX3ByaW50IGYgcCwgeCwgdClcblxubGV0IGZvbGRfZXhwcl9tb2RpZmljYXRpb24gZiB4ID0gZnVuY3Rpb25cbiAgfCBJVEVSX1JVTEUgKGUsIHIpIC0+IGZvbGRfZXhwcl9ydWxlIGYgKGYgeCBlKSByXG4gIHwgVVBEQVRFIChfLCBlKSAtPiBmIHggZVxuICB8IFNOQVBTSE9UIChfLCBwKSAtPiBmb2xkX2V4cHJfcHJpbnQgZiB4IHBcbiAgfCBTVE9QIHAgLT4gZm9sZF9leHByX3ByaW50IGYgeCBwXG4gIHwgUFJJTlQgKGZuLCBwKSAtPiBmb2xkX2V4cHJfcHJpbnQgZiAoZm9sZF9leHByX3ByaW50IGYgeCBwKSBmblxuICB8IERJTiAoXywgcCkgLT4gZm9sZF9leHByX3ByaW50IGYgeCBwXG4gIHwgRElOT0ZGIHAgLT4gZm9sZF9leHByX3ByaW50IGYgeCBwXG4gIHwgQ0ZMT1cgXyB8IENGTE9XT0ZGIF8gfCBTUEVDSUVTX09GRiBfIHwgUExPVEVOVFJZIC0+IHhcbiAgfCBTUEVDSUVTIChwLCBfLCBfKSAtPiBmb2xkX2V4cHJfcHJpbnQgZiB4IHBcblxubGV0IG1hcF9leHByX3BlcnR1cmJhdGlvbiBmX2FsZyBmX2Jvb2wgeCA9XG4gIHtcbiAgICBhbGFybSA9IHguYWxhcm07XG4gICAgcHJlY29uZGl0aW9uID0gZl9ib29sIHgucHJlY29uZGl0aW9uO1xuICAgIGVmZmVjdCA9IExpc3QubWFwIChtYXBfZXhwcl9tb2RpZmljYXRpb24gZl9hbGcpIHguZWZmZWN0O1xuICAgIHJlcGVhdCA9IGZfYm9vbCB4LnJlcGVhdDtcbiAgICBuZWVkc19iYWNrdHJhY2sgPSB4Lm5lZWRzX2JhY2t0cmFjaztcbiAgfVxuXG5sZXQgZm9sZF9leHByX3BlcnR1cmJhdGlvbiBmX2FsZyBmX2Jvb2wgYWNjIHggPVxuICBsZXQgYTEgPSBmX2Jvb2wgYWNjIHgucHJlY29uZGl0aW9uIGluXG4gIGxldCBhMiA9IExpc3QuZm9sZF9sZWZ0IChmb2xkX2V4cHJfbW9kaWZpY2F0aW9uIGZfYWxnKSBhMSB4LmVmZmVjdCBpblxuICBmX2Jvb2wgYTIgeC5yZXBlYXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnYW5ub3QpIGxpbmsgPVxuICB8IEFOWV9GUkVFXG4gIHwgTE5LX1ZBTFVFIG9mIGludCAqICdhbm5vdFxuICB8IExOS19GUkVFXG4gIHwgTE5LX0FOWVxuICB8IExOS19TT01FXG4gIHwgTE5LX1RZUEUgb2YgJ2EgKiAnYSAgKCoqIHBvcnQgKiBhZ2VudF90eXBlICopXG5cbnR5cGUgc3dpdGNoaW5nID0gTGlua2VkIG9mIGludCB8IEZyZWVkIHwgTWFpbnRhaW5lZCB8IEVyYXNlZFxuXG50eXBlIHJ1bGVfaW50ZXJuYWwgPVxuICB8IElfQU5ZXG4gIHwgSV9BTllfQ0hBTkdFRCBvZiBpbnRcbiAgfCBJX0FOWV9FUkFTRURcbiAgfCBJX1ZBTF9DSEFOR0VEIG9mIGludCAqIGludFxuICB8IElfVkFMX0VSQVNFRCBvZiBpbnRcblxudHlwZSBydWxlX2FnZW50ID0ge1xuICByYV90eXBlOiBpbnQ7XG4gIHJhX2VyYXNlZDogYm9vbDtcbiAgcmFfcG9ydHM6ICgoaW50LCBpbnQgKiBpbnQpIGxpbmsgTG9jLmFubm90ZWQgKiBzd2l0Y2hpbmcpIGFycmF5O1xuICByYV9pbnRzOiBydWxlX2ludGVybmFsIGFycmF5O1xuICByYV9zeW50YXg6XG4gICAgKCgoaW50LCBpbnQgKiBpbnQpIGxpbmsgTG9jLmFubm90ZWQgKiBzd2l0Y2hpbmcpIGFycmF5XG4gICAgKiBydWxlX2ludGVybmFsIGFycmF5KVxuICAgIG9wdGlvbjtcbn1cblxudHlwZSBydWxlX21peHR1cmUgPSBydWxlX2FnZW50IGxpc3RcblxudHlwZSBydWxlID0ge1xuICByX21peDogcnVsZV9taXh0dXJlO1xuICByX2NyZWF0ZWQ6IFJhd19taXh0dXJlLnQ7XG4gIHJfZGVsdGFfdG9rZW5zOiAoKHJ1bGVfbWl4dHVyZSwgaW50KSBBbGdfZXhwci5lIExvYy5hbm5vdGVkICogaW50KSBsaXN0O1xuICByX3JhdGU6IChydWxlX21peHR1cmUsIGludCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZDtcbiAgcl91bl9yYXRlOlxuICAgICgocnVsZV9taXh0dXJlLCBpbnQpIEFsZ19leHByLmUgTG9jLmFubm90ZWRcbiAgICAqIChydWxlX21peHR1cmUsIGludCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCBvcHRpb24pXG4gICAgb3B0aW9uO1xuICByX2VkaXRfc3R5bGU6IGJvb2w7XG59XG5cbmxldCBwcmludF9saW5rIHByX3BvcnQgcHJfdHlwZSBwcl9hbm5vdCBmID0gZnVuY3Rpb25cbiAgfCBBTllfRlJFRSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIjXCJcbiAgfCBMTktfVFlQRSAocCwgYSkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVhLiVhXCIgKHByX3BvcnQgYSkgcCBwcl90eXBlIGFcbiAgfCBMTktfQU5ZIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiNcIlxuICB8IExOS19GUkVFIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi5cIlxuICB8IExOS19TT01FIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIl9cIlxuICB8IExOS19WQUxVRSAoaSwgYSkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVpJWFcIiBpIHByX2Fubm90IGFcblxubGV0IGxpbmtfdG9fanNvbiBwb3J0X3RvX2pzb24gdHlwZV90b19qc29uIGFubm90X3RvX2pzb24gPSBmdW5jdGlvblxuICB8IEFOWV9GUkVFIC0+IGBTdHJpbmcgXCJBTllfRlJFRVwiXG4gIHwgTE5LX0ZSRUUgLT4gYFN0cmluZyBcIkZSRUVcIlxuICB8IExOS19UWVBFIChwLCBhKSAtPiBgTGlzdCBbIHBvcnRfdG9fanNvbiBhIHA7IHR5cGVfdG9fanNvbiBhIF1cbiAgfCBMTktfQU5ZIC0+IGBOdWxsXG4gIHwgTE5LX1NPTUUgLT4gYFN0cmluZyBcIlNPTUVcIlxuICB8IExOS19WQUxVRSAoaSwgYSkgLT4gYExpc3QgKGBJbnQgaSA6OiBhbm5vdF90b19qc29uIGEpXG5cbmxldCBsaW5rX29mX2pzb24gcG9ydF9vZl9qc29uIHR5cGVfb2ZfanNvbiBhbm5vdGVkX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJBTllfRlJFRVwiIC0+IEFOWV9GUkVFXG4gIHwgYFN0cmluZyBcIkZSRUVcIiAtPiBMTktfRlJFRVxuICB8IGBMaXN0IFsgcDsgYSBdIC0+XG4gICAgbGV0IHggPSB0eXBlX29mX2pzb24gYSBpblxuICAgIExOS19UWVBFIChwb3J0X29mX2pzb24geCBwLCB4KVxuICB8IGBOdWxsIC0+IExOS19BTllcbiAgfCBgU3RyaW5nIFwiU09NRVwiIC0+IExOS19TT01FXG4gIHwgYExpc3QgKGBJbnQgaSA6OiAoKFtdIHwgXyA6OiBfIDo6IF8pIGFzIGEpKSAtPlxuICAgIExOS19WQUxVRSAoaSwgYW5ub3RlZF9vZl9qc29uIGEpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgbGlua1wiLCB4KSlcblxubGV0IHByaW50X2xpbmtfYW5ub3Qgfmx0eXBlcyBzaWdzIGYgKHMsIGEpID1cbiAgaWYgbHR5cGVzIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiLyolYS4lYSovXCJcbiAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGEpXG4gICAgICBzXG4gICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICBhXG5cbmxldCBwcmludF9ydWxlX2ludGVybmFsIHNpZ3MgfnNob3dfZXJhc2VkIGFnX3R5IHNpdGUgZiA9IGZ1bmN0aW9uXG4gIHwgSV9BTlkgLT4gKClcbiAgfCBJX0FOWV9DSEFOR0VEIGogLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwieyMvJWF9XCIgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpIGpcbiAgfCBJX0FOWV9FUkFTRUQgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwieyMldH1cIiAoZnVuIGYgLT5cbiAgICAgICAgaWYgc2hvd19lcmFzZWQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCItLVwiKVxuICB8IElfVkFMX0NIQU5HRUQgKGksIGopIC0+XG4gICAgaWYgaSA8PiBqIHRoZW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWEvJWF9XCJcbiAgICAgICAgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpXG4gICAgICAgIGlcbiAgICAgICAgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpXG4gICAgICAgIGpcbiAgICBlbHNlXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhfVwiIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlKSBpXG4gIHwgSV9WQUxfRVJBU0VEIGkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhJXR9XCIgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpIGlcbiAgICAgIChmdW4gZiAtPiBpZiBzaG93X2VyYXNlZCB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi0tXCIpXG5cbmxldCBydWxlX2ludGVybmFsX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IElfQU5ZIC0+IGBOdWxsXG4gIHwgSV9BTllfQ0hBTkdFRCBqIC0+IGBMaXN0IFsgYFN0cmluZyBcIkFOWVwiOyBgSW50IGogXVxuICB8IElfQU5ZX0VSQVNFRCAtPiBgU3RyaW5nIFwiRVJBU0VEXCJcbiAgfCBJX1ZBTF9DSEFOR0VEIChpLCBqKSAtPiBgTGlzdCBbIGBJbnQgaTsgYEludCBqIF1cbiAgfCBJX1ZBTF9FUkFTRUQgaSAtPiBgTGlzdCBbIGBJbnQgaTsgYFN0cmluZyBcIkVSQVNFRFwiIF1cblxubGV0IHJ1bGVfaW50ZXJuYWxfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gSV9BTllcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJBTllcIjsgYEludCBqIF0gLT4gSV9BTllfQ0hBTkdFRCBqXG4gIHwgYFN0cmluZyBcIkVSQVNFRFwiIC0+IElfQU5ZX0VSQVNFRFxuICB8IGBMaXN0IFsgYEludCBpOyBgSW50IGogXSAtPiBJX1ZBTF9DSEFOR0VEIChpLCBqKVxuICB8IGBMaXN0IFsgYEludCBpOyBgU3RyaW5nIFwiRVJBU0VEXCIgXSAtPiBJX1ZBTF9FUkFTRUQgaVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiVW5jb3JyZWN0IHJ1bGVfaW50ZXJuYWxcIiwgeCkpXG5cbmxldCBwcmludF9zd2l0Y2hpbmcgfnNob3dfZXJhc2VkIGYgPSBmdW5jdGlvblxuICB8IExpbmtlZCBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIvJWlcIiBpXG4gIHwgRnJlZWQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLy5cIlxuICB8IE1haW50YWluZWQgLT4gKClcbiAgfCBFcmFzZWQgLT4gaWYgc2hvd19lcmFzZWQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCItLVwiXG5cbmxldCBzd2l0Y2hpbmdfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgRnJlZWQgLT4gYFN0cmluZyBcIkZyZWVkXCJcbiAgfCBNYWludGFpbmVkIC0+IGBTdHJpbmcgXCJNYWludGFpbmVkXCJcbiAgfCBFcmFzZWQgLT4gYFN0cmluZyBcIkVyYXNlZFwiXG4gIHwgTGlua2VkIGkgLT4gSnNvblV0aWwub2ZfaW50IGlcblxubGV0IHN3aXRjaGluZ19vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiRnJlZWRcIiAtPiBGcmVlZFxuICB8IGBTdHJpbmcgXCJNYWludGFpbmVkXCIgLT4gTWFpbnRhaW5lZFxuICB8IGBTdHJpbmcgXCJFcmFzZWRcIiAtPiBFcmFzZWRcbiAgfCB4IC0+IExpbmtlZCAoSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2c6XCJJbnZhbGlkIFN3aXRjaGluZ1wiIHgpXG5cbmxldCBwcmludF9ydWxlX2xpbmsgc2lncyB+c2hvd19lcmFzZWQgfmx0eXBlcyBmICgoZSwgXyksIHMpID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIlslYSVhXVwiXG4gICAgKHByaW50X2xpbmtcbiAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncylcbiAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgKHByaW50X2xpbmtfYW5ub3Qgfmx0eXBlcyBzaWdzKSlcbiAgICBlXG4gICAgKHByaW50X3N3aXRjaGluZyB+c2hvd19lcmFzZWQpXG4gICAgc1xuXG5sZXQgcHJpbnRfY291bnRlcl90ZXN0IGYgPSBmdW5jdGlvblxuICB8IGMsIHRydWUgLT4gRm9ybWF0LmZwcmludGYgZiBcIj0laVwiIGNcbiAgfCBjLCBmYWxzZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiPj0laVwiIGNcblxubGV0IHByaW50X2NvdW50ZXJfZGVsdGEgY291bnRlcnMgaiBmIHN3aXRjaCA9XG4gIG1hdGNoIHN3aXRjaCB3aXRoXG4gIHwgTGlua2VkIGkgLT5cbiAgICBsZXQgcm9vdCA9IFJhd19taXh0dXJlLmZpbmQgY291bnRlcnMgaSBpblxuICAgIGxldCBzLCAoXywgaXNfY291bnRlcikgPSBNb2RzLkR5bkFycmF5LmdldCBjb3VudGVycy5SYXdfbWl4dHVyZS5yYW5rIHJvb3QgaW5cbiAgICBsZXQgZGVsdGEgPVxuICAgICAgaWYgaXNfY291bnRlciB0aGVuXG4gICAgICAgIHMgLSAxXG4gICAgICBlbHNlXG4gICAgICAgIGogLSBpXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiLys9JWRcIiBkZWx0YVxuICB8IEZyZWVkIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJDYW5ub3QgZXJhc2UgYWxsIGluY3JlbWVudCBhZ2VudHNcIikpXG4gIHwgTWFpbnRhaW5lZCAtPiAoKVxuICB8IEVyYXNlZCAtPiAoKVxuXG5sZXQgcHJpbnRfcnVsZV9pbnRmIH5ub0NvdW50ZXJzIHNpZ3MgfnNob3dfZXJhc2VkIH5sdHlwZXMgYWdfdHkgZlxuICAgIChwb3J0cywgaW50cywgY291bnRlcnMsIGNyZWF0ZWRfY291bnRlcnMpID1cbiAgbGV0IHJlYyBhdXggZW1wdHkgaSA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuXG4gICAgICBpZlxuICAgICAgICBtYXRjaCBwb3J0cy4oaSkgd2l0aFxuICAgICAgICB8IChMTktfQU5ZLCBfKSwgTWFpbnRhaW5lZCAtPiBpbnRzLihpKSA8PiBJX0FOWVxuICAgICAgICB8IChMTktfQU5ZLCBfKSwgKEVyYXNlZCB8IEZyZWVkIHwgTGlua2VkIF8pXG4gICAgICAgIHwgKChMTktfU09NRSB8IEFOWV9GUkVFIHwgTE5LX0ZSRUUgfCBMTktfVFlQRSBfIHwgTE5LX1ZBTFVFIF8pLCBfKSwgXyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgKGUsIF8pLCBzd2l0Y2ggPSBwb3J0cy4oaSkgaW5cbiAgICAgICAgbGV0IGlzX2NvdW50ZXIgPVxuICAgICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICAgIHwgQU5ZX0ZSRUUgfCBMTktfRlJFRSB8IExOS19BTlkgfCBMTktfVFlQRSBfIHwgTE5LX1NPTUUgLT4gZmFsc2VcbiAgICAgICAgICB8IExOS19WQUxVRSAoaiwgXykgLT5cbiAgICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgIGxldCByb290ID0gUmF3X21peHR1cmUuZmluZCBjb3VudGVycyBqIGluXG4gICAgICAgICAgICAgICBsZXQgYywgKGVxLCBpc19jb3VudGVyJykgPVxuICAgICAgICAgICAgICAgICBNb2RzLkR5bkFycmF5LmdldCBjb3VudGVycy5SYXdfbWl4dHVyZS5yYW5rIHJvb3RcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBpZiBpc19jb3VudGVyJyAmJiBub3Qgbm9Db3VudGVycyB0aGVuIChcbiAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWF7JWElYX1cIlxuICAgICAgICAgICAgICAgICAgIChpZiBlbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgUHAuZW1wdHlcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIFBwLnNwYWNlKVxuICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnX3R5KVxuICAgICAgICAgICAgICAgICAgIGkgcHJpbnRfY291bnRlcl90ZXN0XG4gICAgICAgICAgICAgICAgICAgKGMgLSAxLCBlcSlcbiAgICAgICAgICAgICAgICAgICAocHJpbnRfY291bnRlcl9kZWx0YSBjcmVhdGVkX2NvdW50ZXJzIGopXG4gICAgICAgICAgICAgICAgICAgc3dpdGNoO1xuICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBmYWxzZSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBub3QgaXNfY291bnRlciB0aGVuXG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXQlYSVhJWFcIlxuICAgICAgICAgICAgICAoaWYgZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgICBQcC5lbXB0eVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBQcC5zcGFjZSlcbiAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWdfdHkpXG4gICAgICAgICAgICAgIGlcbiAgICAgICAgICAgICAgKHByaW50X3J1bGVfaW50ZXJuYWwgc2lncyB+c2hvd19lcmFzZWQgYWdfdHkgaSlcbiAgICAgICAgICAgICAgaW50cy4oaSlcbiAgICAgICAgICAgICAgKHByaW50X3J1bGVfbGluayBzaWdzIH5zaG93X2VyYXNlZCB+bHR5cGVzKVxuICAgICAgICAgICAgICBwb3J0cy4oaSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBhdXggZmFsc2UgKHN1Y2MgaSlcbiAgICAgICkgZWxzZVxuICAgICAgICBhdXggZW1wdHkgKHN1Y2MgaSlcbiAgaW5cbiAgYXV4IHRydWUgMFxuXG5sZXQgdW5pb25fZmluZF9jb3VudGVycyBzaWdzIG1peCA9XG4gIGxldCB0ID0gUmF3X21peHR1cmUuY3JlYXRlIDEgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gYWcgLT5cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUucG9ydHNfaWZfY291bnRlcl9hZ2VudCBzaWdzIGFnLnJhX3R5cGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSAoYmVmb3JlLCBhZnRlcikgLT5cbiAgICAgICAgICAgIGxldCAoYSwgXyksIF8gPSBhZy5yYV9wb3J0cy4oYWZ0ZXIpIGluXG4gICAgICAgICAgICBsZXQgKGIsIF8pLCBfID0gYWcucmFfcG9ydHMuKGJlZm9yZSkgaW5cbiAgICAgICAgICAgIChtYXRjaCBiIHdpdGhcbiAgICAgICAgICAgIHwgQU5ZX0ZSRUUgfCBMTktfRlJFRSB8IExOS19BTlkgfCBMTktfVFlQRSBfIHwgTE5LX1NPTUUgLT4gKClcbiAgICAgICAgICAgIHwgTE5LX1ZBTFVFIChsbmtfYiwgXykgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgICAgICAgICB8IExOS19WQUxVRSAobG5rX2EsIF8pIC0+IFJhd19taXh0dXJlLnVuaW9uIHQgbG5rX2IgbG5rX2FcbiAgICAgICAgICAgICAgfCBBTllfRlJFRSB8IExOS19GUkVFIC0+XG4gICAgICAgICAgICAgICAgbGV0IHJvb3QgPSBSYXdfbWl4dHVyZS5maW5kIHQgbG5rX2IgaW5cbiAgICAgICAgICAgICAgICBsZXQgcywgXyA9IE1vZHMuRHluQXJyYXkuZ2V0IHQuUmF3X21peHR1cmUucmFuayByb290IGluXG4gICAgICAgICAgICAgICAgTW9kcy5EeW5BcnJheS5zZXQgdC5SYXdfbWl4dHVyZS5yYW5rIHJvb3QgKHMsICh0cnVlLCB0cnVlKSlcbiAgICAgICAgICAgICAgfCBMTktfQU5ZIC0+XG4gICAgICAgICAgICAgICAgbGV0IHJvb3QgPSBSYXdfbWl4dHVyZS5maW5kIHQgbG5rX2IgaW5cbiAgICAgICAgICAgICAgICBsZXQgcywgXyA9IE1vZHMuRHluQXJyYXkuZ2V0IHQuUmF3X21peHR1cmUucmFuayByb290IGluXG4gICAgICAgICAgICAgICAgTW9kcy5EeW5BcnJheS5zZXQgdC5SYXdfbWl4dHVyZS5yYW5rIHJvb3QgKHMsIChmYWxzZSwgdHJ1ZSkpXG4gICAgICAgICAgICAgIHwgTE5LX1RZUEUgXyB8IExOS19TT01FIC0+XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiUG9ydCBhIG9mIF9fY291bnRlcl9hZ2VudCBhZ2VudCBub3Qgd2VsbCBzcGVjaWZpZWRcIikpKSkpXG4gICAgICAgIG1peFxuICBpblxuICB0XG5cbmxldCBwcmludF9ydWxlX2FnZW50IH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlcyBjb3VudGVycyBjcmVhdGVkX2NvdW50ZXJzIGYgYWcgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEoQFs8aD4lYUBdKSV0XCIgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKSBhZy5yYV90eXBlXG4gICAgKHByaW50X3J1bGVfaW50ZiB+bm9Db3VudGVycyBzaWdzIH5zaG93X2VyYXNlZDpmYWxzZSB+bHR5cGVzIGFnLnJhX3R5cGUpXG4gICAgKGFnLnJhX3BvcnRzLCBhZy5yYV9pbnRzLCBjb3VudGVycywgY3JlYXRlZF9jb3VudGVycykgKGZ1biBmIC0+XG4gICAgICBpZiBhZy5yYV9lcmFzZWQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCItXCIpXG5cbmxldCBwcmludF9ydWxlX21peHR1cmUgfm5vQ291bnRlcnMgc2lncyB+bHR5cGVzIGNyZWF0ZWQgZiBtaXggPVxuICBsZXQgY291bnRlcl9hZ2VudHMgPSB1bmlvbl9maW5kX2NvdW50ZXJzIChTb21lIHNpZ3MpIG1peCBpblxuICBsZXQgY3JlYXRlZF9pbmNyID0gUmF3X21peHR1cmUudW5pb25fZmluZF9jb3VudGVycyAoU29tZSBzaWdzKSBjcmVhdGVkIGluXG4gIGxldCByZWMgYXV4X3ByaW50IHNvbWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWYgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBoLnJhX3R5cGUgJiYgbm90IG5vQ291bnRlcnMgdGhlblxuICAgICAgICBhdXhfcHJpbnQgc29tZSB0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0ICgpID0gaWYgc29tZSB0aGVuIFBwLmNvbW1hIGYgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBwcmludF9ydWxlX2FnZW50IH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlcyBjb3VudGVyX2FnZW50cyBjcmVhdGVkX2luY3JcbiAgICAgICAgICAgIGYgaFxuICAgICAgICBpblxuICAgICAgICBhdXhfcHJpbnQgdHJ1ZSB0XG4gICAgICApXG4gIGluXG4gIGF1eF9wcmludCBmYWxzZSBtaXhcblxubGV0IHByaW50X2ludGVybmFsX2xocyBzaWdzIGFnX3R5IHNpdGUgZiA9IGZ1bmN0aW9uXG4gIHwgSV9BTlkgLT4gKClcbiAgfCBJX0FOWV9DSEFOR0VEIF8gfCBJX0FOWV9FUkFTRUQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwieyN9XCJcbiAgfCBJX1ZBTF9DSEFOR0VEIChpLCBfKSB8IElfVkFMX0VSQVNFRCBpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInslYX1cIiAoU2lnbmF0dXJlLnByaW50X2ludGVybmFsX3N0YXRlIHNpZ3MgYWdfdHkgc2l0ZSkgaVxuXG5sZXQgcHJpbnRfaW50ZXJuYWxfcmhzIHNpZ3MgYWdfdHkgc2l0ZSBmID0gZnVuY3Rpb25cbiAgfCBJX0FOWSAtPiAoKVxuICB8IElfQU5ZX0NIQU5HRUQgaiB8IElfVkFMX0NIQU5HRUQgKF8sIGopIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInslYX1cIiAoU2lnbmF0dXJlLnByaW50X2ludGVybmFsX3N0YXRlIHNpZ3MgYWdfdHkgc2l0ZSkgalxuICB8IElfQU5ZX0VSQVNFRCB8IElfVkFMX0VSQVNFRCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcHJpbnRfbGlua19saHMgfmx0eXBlcyBzaWdzIGYgKChlLCBfKSwgXykgPVxuICBwcmludF9saW5rXG4gICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MpXG4gICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgIChwcmludF9saW5rX2Fubm90IH5sdHlwZXMgc2lncylcbiAgICBmIGVcblxubGV0IHByaW50X2xpbmtfcmhzIH5sdHlwZXMgc2lncyBmICgoZSwgXyksIHMpID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgTGlua2VkIGkgLT5cbiAgICBwcmludF9saW5rXG4gICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncylcbiAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgIChmdW4gXyAoKSAtPiAoKSlcbiAgICAgIGZcbiAgICAgIChMTktfVkFMVUUgKGksICgpKSlcbiAgfCBGcmVlZCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIuXCJcbiAgfCBNYWludGFpbmVkIC0+XG4gICAgcHJpbnRfbGlua1xuICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MpXG4gICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAocHJpbnRfbGlua19hbm5vdCB+bHR5cGVzIHNpZ3MpXG4gICAgICBmIGVcbiAgfCBFcmFzZWQgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBwcmludF9pbnRmX2xocyB+bHR5cGVzIHNpZ3MgYWdfdHkgZiAocG9ydHMsIGludHMpID1cbiAgbGV0IHJlYyBhdXggZW1wdHkgaSA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuXG4gICAgICBpZlxuICAgICAgICBtYXRjaCBwb3J0cy4oaSkgd2l0aFxuICAgICAgICB8ICgoTE5LX1NPTUUgfCBMTktfRlJFRSB8IEFOWV9GUkVFIHwgTE5LX1RZUEUgXyB8IExOS19WQUxVRSBfKSwgXyksIF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgKExOS19BTlksIF8pLCBfIC0+XG4gICAgICAgICAgKG1hdGNoIGludHMuKGkpIHdpdGhcbiAgICAgICAgICB8IElfQU5ZIHwgSV9BTllfRVJBU0VEIHwgSV9BTllfQ0hBTkdFRCBfIC0+IGZhbHNlXG4gICAgICAgICAgfCBJX1ZBTF9DSEFOR0VEIF8gfCBJX1ZBTF9FUkFTRUQgXyAtPiB0cnVlKVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWElYVslYV1cIlxuICAgICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgUHAuc3BhY2UpXG4gICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ190eSlcbiAgICAgICAgICAgIGlcbiAgICAgICAgICAgIChwcmludF9pbnRlcm5hbF9saHMgc2lncyBhZ190eSBpKVxuICAgICAgICAgICAgaW50cy4oaSlcbiAgICAgICAgICAgIChwcmludF9saW5rX2xocyB+bHR5cGVzIHNpZ3MpXG4gICAgICAgICAgICBwb3J0cy4oaSlcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGZhbHNlIChzdWNjIGkpXG4gICAgICApIGVsc2VcbiAgICAgICAgYXV4IGVtcHR5IChzdWNjIGkpXG4gIGluXG4gIGF1eCB0cnVlIDBcblxubGV0IHByaW50X2ludGZfcmhzIH5sdHlwZXMgc2lncyBhZ190eSBmIChwb3J0cywgaW50cykgPVxuICBsZXQgcmVjIGF1eCBlbXB0eSBpID1cbiAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIHBvcnRzIHRoZW5cbiAgICAgIGlmXG4gICAgICAgIG1hdGNoIHBvcnRzLihpKSB3aXRoXG4gICAgICAgIHwgKChMTktfU09NRSB8IExOS19GUkVFIHwgQU5ZX0ZSRUUgfCBMTktfVFlQRSBfIHwgTE5LX1ZBTFVFIF8pLCBfKSwgXyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgICAgfCAoTE5LX0FOWSwgXyksIChFcmFzZWQgfCBGcmVlZCB8IExpbmtlZCBfKSAtPiB0cnVlXG4gICAgICAgIHwgKExOS19BTlksIF8pLCBNYWludGFpbmVkIC0+XG4gICAgICAgICAgKG1hdGNoIGludHMuKGkpIHdpdGhcbiAgICAgICAgICB8IElfQU5ZIC0+IGZhbHNlXG4gICAgICAgICAgfCBJX1ZBTF9DSEFOR0VEIChpLCBqKSAtPiBpIDw+IGpcbiAgICAgICAgICB8IElfQU5ZX0VSQVNFRCB8IElfQU5ZX0NIQU5HRUQgXyB8IElfVkFMX0VSQVNFRCBfIC0+IHRydWUpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXQlYSVhWyVhXVwiXG4gICAgICAgICAgICAoaWYgZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgUHAuZW1wdHlcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBQcC5zcGFjZSlcbiAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnX3R5KVxuICAgICAgICAgICAgaVxuICAgICAgICAgICAgKHByaW50X2ludGVybmFsX3JocyBzaWdzIGFnX3R5IGkpXG4gICAgICAgICAgICBpbnRzLihpKVxuICAgICAgICAgICAgKHByaW50X2xpbmtfcmhzIH5sdHlwZXMgc2lncylcbiAgICAgICAgICAgIHBvcnRzLihpKVxuICAgICAgICBpblxuICAgICAgICBhdXggZmFsc2UgKHN1Y2MgaSlcbiAgICAgICkgZWxzZVxuICAgICAgICBhdXggZW1wdHkgKHN1Y2MgaSlcbiAgaW5cbiAgYXV4IHRydWUgMFxuXG5sZXQgcHJpbnRfYWdlbnRfbGhzIH5sdHlwZXMgc2lncyBmIGFnID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhKEBbPGg+JWFAXSlcIlxuICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICBhZy5yYV90eXBlXG4gICAgKHByaW50X2ludGZfbGhzIH5sdHlwZXMgc2lncyBhZy5yYV90eXBlKVxuICAgIChhZy5yYV9wb3J0cywgYWcucmFfaW50cylcblxubGV0IHByaW50X2FnZW50X3JocyB+bHR5cGVzIHNpZ3MgZiBhZyA9XG4gIGlmIG5vdCBhZy5yYV9lcmFzZWQgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYShAWzxoPiVhQF0pXCJcbiAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgIGFnLnJhX3R5cGVcbiAgICAgIChwcmludF9pbnRmX3JocyB+bHR5cGVzIHNpZ3MgYWcucmFfdHlwZSlcbiAgICAgIChhZy5yYV9wb3J0cywgYWcucmFfaW50cylcblxubGV0IHByaW50X3JocyB+bm9Db3VudGVycyB+bHR5cGVzIHNpZ3MgY3JlYXRlZCBmIG1peCA9XG4gIGxldCByZWMgYXV4IGVtcHR5ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBSYXdfbWl4dHVyZS5wcmludCB+bm9Db3VudGVycyB+aW5pdGlhbF9jb21tYToobm90IGVtcHR5KSB+Y3JlYXRlZDpmYWxzZVxuICAgICAgICB+c2lncyBmIGNyZWF0ZWRcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWYgaC5yYV9lcmFzZWQgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0LlwiXG4gICAgICAgICAgICAoaWYgZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgUHAuZW1wdHlcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBQcC5jb21tYSlcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGZhbHNlIHRcbiAgICAgICkgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWFcIlxuICAgICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgUHAuY29tbWEpXG4gICAgICAgICAgICAocHJpbnRfYWdlbnRfcmhzIH5sdHlwZXMgc2lncylcbiAgICAgICAgICAgIGhcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGZhbHNlIHRcbiAgICAgIClcbiAgaW5cbiAgYXV4IHRydWUgbWl4XG5cbmxldCBwcmludF9yYXRlcyB+bm9Db3VudGVycyBzaWdzIHByX3RvayBwcl92YXIgZiByID1cbiAgbGV0IGx0eXBlcyA9IGZhbHNlIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIgQEAgJWEldFwiXG4gICAgKEFsZ19leHByLnByaW50XG4gICAgICAgKGZ1biBmIG0gLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCJcbiAgICAgICAgICAgKHByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXMgW10pXG4gICAgICAgICAgIG0pXG4gICAgICAgcHJfdG9rIHByX3ZhcilcbiAgICAoZnN0IHIucl9yYXRlKVxuICAgIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggci5yX3VuX3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKChyYSwgXyksIG1heF9kaXN0KSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiIHslYSVhfVwiXG4gICAgICAgICAgKEFsZ19leHByLnByaW50XG4gICAgICAgICAgICAgKGZ1biBmIG0gLT5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCJcbiAgICAgICAgICAgICAgICAgKHByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXMgW10pXG4gICAgICAgICAgICAgICAgIG0pXG4gICAgICAgICAgICAgcHJfdG9rIHByX3ZhcilcbiAgICAgICAgICByYVxuICAgICAgICAgIChQcC5vcHRpb24gKGZ1biBmIChtZCwgXykgLT5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI6JWFcIlxuICAgICAgICAgICAgICAgICAoQWxnX2V4cHIucHJpbnRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBmIG0gLT5cbiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAocHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlcyBbXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIG0pXG4gICAgICAgICAgICAgICAgICAgIHByX3RvayBwcl92YXIpXG4gICAgICAgICAgICAgICAgIG1kKSlcbiAgICAgICAgICBtYXhfZGlzdClcblxubGV0IHByaW50X3J1bGUgfm5vQ291bnRlcnMgfmZ1bGwgc2lncyBwcl90b2sgcHJfdmFyIGYgciA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiV0JXQlYSV0QF1cIlxuICAgIChmdW4gZiAtPlxuICAgICAgaWYgZnVsbCB8fCByLnJfZWRpdF9zdHlsZSB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSVhXCJcbiAgICAgICAgICAocHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlczpmYWxzZSByLnJfY3JlYXRlZClcbiAgICAgICAgICByLnJfbWl4XG4gICAgICAgICAgKFJhd19taXh0dXJlLnByaW50IH5ub0NvdW50ZXJzIH5jcmVhdGVkOnRydWVcbiAgICAgICAgICAgICB+aW5pdGlhbF9jb21tYTooci5yX21peCA8PiBbXSkgfnNpZ3MpXG4gICAgICAgICAgci5yX2NyZWF0ZWRcbiAgICAgIGVsc2VcbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhJXQlYSAtPiAlYVwiXG4gICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKHByaW50X2FnZW50X2xocyB+bHR5cGVzOmZhbHNlIHNpZ3MpKVxuICAgICAgICAgIHIucl9taXhcbiAgICAgICAgICAoZnVuIGYgLT4gaWYgci5yX21peCA8PiBbXSAmJiByLnJfY3JlYXRlZCA8PiBbXSB0aGVuIFBwLmNvbW1hIGYpXG4gICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKGZ1biBmIF8gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLlwiKSlcbiAgICAgICAgICByLnJfY3JlYXRlZFxuICAgICAgICAgIChwcmludF9yaHMgfm5vQ291bnRlcnMgfmx0eXBlczpmYWxzZSBzaWdzIHIucl9jcmVhdGVkKVxuICAgICAgICAgIHIucl9taXgpXG4gICAgKGZ1biBmIC0+XG4gICAgICBtYXRjaCByLnJfZGVsdGFfdG9rZW5zIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgXyA6OiBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiB8IFwiKVxuICAgIChQcC5saXN0IFBwLmNvbW1hIChmdW4gZiAoKG5iLCBfKSwgdGspIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEgJWFcIlxuICAgICAgICAgICAoQWxnX2V4cHIucHJpbnRcbiAgICAgICAgICAgICAgKGZ1biBmIG0gLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiXG4gICAgICAgICAgICAgICAgICAocHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlczpmYWxzZSBbXSlcbiAgICAgICAgICAgICAgICAgIG0pXG4gICAgICAgICAgICAgIHByX3RvayBwcl92YXIpXG4gICAgICAgICAgIG5iIHByX3RvayB0aykpXG4gICAgci5yX2RlbHRhX3Rva2Vuc1xuICAgIChmdW4gZiAtPiBpZiBmdWxsIHRoZW4gcHJpbnRfcmF0ZXMgfm5vQ291bnRlcnMgc2lncyBwcl90b2sgcHJfdmFyIGYgcilcblxubGV0IHJ1bGVfYWdlbnRfdG9fanNvbiBmaWxlbmFtZXMgYSA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwidHlwZVwiLCBgSW50IGEucmFfdHlwZTtcbiAgICAgICggXCJiaW5kaW5nc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biAoZSwgcykgYyAtPlxuICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgICAobGlua190b19qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF8gaSAtPiBgSW50IGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGkgLT4gYEludCBpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocywgYSkgLT4gWyBgSW50IHM7IGBJbnQgYSBdKSlcbiAgICAgICAgICAgICAgICAgICAgIGU7XG4gICAgICAgICAgICAgICAgICAgc3dpdGNoaW5nX3RvX2pzb24gcztcbiAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgOjogYylcbiAgICAgICAgICAgICBhLnJhX3BvcnRzIFtdKSApO1xuICAgICAgKCBcInN0YXRlc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biB4IGMgLT4gcnVsZV9pbnRlcm5hbF90b19qc29uIHggOjogYylcbiAgICAgICAgICAgICBhLnJhX2ludHMgW10pICk7XG4gICAgICBcImVyYXNlZFwiLCBgQm9vbCBhLnJhX2VyYXNlZDtcbiAgICBdXG5cbmxldCBydWxlX2FnZW50X29mX2pzb24gZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDQgLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IHBvcnRzID1cbiAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgXCJiaW5kaW5nc1wiIGwgd2l0aFxuICAgICAgICAgfCBgTGlzdCBzIC0+XG4gICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IGBMaXN0IFsgZTsgcyBdIC0+XG4gICAgICAgICAgICAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgIChsaW5rX29mX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gXyAtPiBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFsgYEludCBzOyBgSW50IGEgXSAtPiBzLCBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpKVxuICAgICAgICAgICAgICAgICAgICAgZSxcbiAgICAgICAgICAgICAgICAgICBzd2l0Y2hpbmdfb2ZfanNvbiBzIClcbiAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgc1xuICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgIGluXG4gICAgICAgbGV0IGludHMgPVxuICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBcInN0YXRlc1wiIGwgd2l0aFxuICAgICAgICAgfCBgTGlzdCBzIC0+IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IHJ1bGVfaW50ZXJuYWxfb2ZfanNvbiBzXG4gICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgaW5cbiAgICAgICB7XG4gICAgICAgICByYV90eXBlID0gWW9qc29uLkJhc2ljLlV0aWwudG9faW50IChMaXN0LmFzc29jIFwidHlwZVwiIGwpO1xuICAgICAgICAgcmFfcG9ydHMgPSBwb3J0cztcbiAgICAgICAgIHJhX2ludHMgPSBpbnRzO1xuICAgICAgICAgcmFfZXJhc2VkID0gWW9qc29uLkJhc2ljLlV0aWwudG9fYm9vbCAoTGlzdC5hc3NvYyBcImVyYXNlZFwiIGwpO1xuICAgICAgICAgcmFfc3ludGF4ID0gU29tZSAocG9ydHMsIGludHMpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHJ1bGVfYWdlbnRcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBydWxlX2FnZW50XCIsIHgpKVxuXG5sZXQgcnVsZV9taXh0dXJlX3RvX2pzb24gZmlsZW5hbWVzID1cbiAgSnNvblV0aWwub2ZfbGlzdCAocnVsZV9hZ2VudF90b19qc29uIGZpbGVuYW1lcylcblxubGV0IHJ1bGVfbWl4dHVyZV9vZl9qc29uIGZpbGVuYW1lcyA9XG4gIEpzb25VdGlsLnRvX2xpc3QgKHJ1bGVfYWdlbnRfb2ZfanNvbiBmaWxlbmFtZXMpXG5cbmxldCBsYWxnX2V4cHJfdG9fanNvbiBmaWxlbmFtZXMgPVxuICBBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKHJ1bGVfbWl4dHVyZV90b19qc29uIGZpbGVuYW1lcylcbiAgICBKc29uVXRpbC5vZl9pbnRcblxubGV0IGxhbGdfZXhwcl9vZl9qc29uIGZpbGVuYW1lcyA9XG4gIEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAocnVsZV9taXh0dXJlX29mX2pzb24gZmlsZW5hbWVzKVxuICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKVxuXG5sZXQgcnVsZV90b19qc29uIH5maWxlbmFtZXMgciA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwibWl4dHVyZVwiLCBydWxlX21peHR1cmVfdG9fanNvbiBmaWxlbmFtZXMgci5yX21peDtcbiAgICAgIFwiY3JlYXRlZFwiLCBSYXdfbWl4dHVyZS50b19qc29uIHIucl9jcmVhdGVkO1xuICAgICAgKCBcImRlbHRhX3Rva2Vuc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6XCJ2YWxcIiB+bGFiMjpcInRva1wiXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChsYWxnX2V4cHJfdG9fanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgICAgIEpzb25VdGlsLm9mX2ludClcbiAgICAgICAgICByLnJfZGVsdGFfdG9rZW5zICk7XG4gICAgICAoIFwicmF0ZVwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAobGFsZ19leHByX3RvX2pzb24gZmlsZW5hbWVzKSByLnJfcmF0ZVxuICAgICAgKTtcbiAgICAgICggXCJ1bmFyeV9yYXRlXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChsYWxnX2V4cHJfdG9fanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGxhbGdfZXhwcl90b19qc29uIGZpbGVuYW1lcykpKSlcbiAgICAgICAgICByLnJfdW5fcmF0ZSApO1xuICAgICAgXCJlZGl0X3N0eWxlXCIsIGBCb29sIHIucl9lZGl0X3N0eWxlO1xuICAgIF1cblxubGV0IHJ1bGVfb2ZfanNvbiB+ZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA8IDcgLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgcl9taXggPSBydWxlX21peHR1cmVfb2ZfanNvbiBmaWxlbmFtZXMgKExpc3QuYXNzb2MgXCJtaXh0dXJlXCIgbCk7XG4gICAgICAgICByX2NyZWF0ZWQgPSBSYXdfbWl4dHVyZS5vZl9qc29uIChMaXN0LmFzc29jIFwiY3JlYXRlZFwiIGwpO1xuICAgICAgICAgcl9kZWx0YV90b2tlbnMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6XCJ2YWxcIiB+bGFiMjpcInRva1wiXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChsYWxnX2V4cHJfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImRlbHRhX3Rva2Vuc1wiIGwpO1xuICAgICAgICAgcl9yYXRlID1cbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAobGFsZ19leHByX29mX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwicmF0ZVwiIGwpO1xuICAgICAgICAgcl91bl9yYXRlID1cbiAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgIChsYWxnX2V4cHJfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIChsYWxnX2V4cHJfb2ZfanNvbiBmaWxlbmFtZXMpKSkpXG4gICAgICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJ1bmFyeV9yYXRlXCIgbClcbiAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IE5vbmUpO1xuICAgICAgICAgcl9lZGl0X3N0eWxlID0gWW9qc29uLkJhc2ljLlV0aWwudG9fYm9vbCAoTGlzdC5hc3NvYyBcImVkaXRfc3R5bGVcIiBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHJ1bGVcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHJ1bGVcIiwgeCkpXG5cbmxldCByYWlzZV9pZl9tb2RpZmljYXRpb24gcG9zID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgXyAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAoXCJBIG1vZGlmaWNhdGlvbiBpcyBmb3JiaWRkZW4gaGVyZS5cIiwgcG9zKSlcblxubGV0IHJhaXNlX3NldmVyYWxfaW50ZXJuYWxfc3RhdGVzIHBvcyA9XG4gIHJhaXNlXG4gICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAoXCJJbiBhIHBhdHRlcm4sIGEgc2l0ZSBjYW5ub3QgaGF2ZSBzZXZlcmFsIGludGVybmFsIHN0YXRlcy5cIiwgcG9zKSlcblxubGV0IHJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXMgfnNpZGUgYWdlbnRfbmFtZSAobmEsIHBvcykgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgKCBcIlRoZSBcIiBeIHN0YXR1cyBeIFwiIHN0YXRlIG9mIGFnZW50ICdcIiBeIGFnZW50X25hbWUgXiBcIicsIHNpdGUgJ1wiIF4gbmFcbiAgICAgICAgIF4gXCInIG9uIHRoZSBcIiBeIHNpZGUgXiBcIiBoYW5kIHNpZGUgaXMgdW5kZXJzcGVjaWZpZWRcIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgcmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIChuYSwgcG9zKSA9XG4gIHJhaXNlXG4gICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAoIFwiU2l0ZSAnXCIgXiBuYSBeIFwiJyBvY2N1cnMgbW9yZSB0aGFuIG9uY2UgaW4gdGhpcyBhZ2VudCAnXCIgXiBhZ2VudF9uYW1lXG4gICAgICAgICBeIFwiJ1wiLFxuICAgICAgICAgcG9zICkpXG5cbmxldCByYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSAobmEsIHBvcykgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgKCBcIlNpdGUgJ1wiIF4gbmEgXiBcIicgb2NjdXJzIGJvdGggYXMgcG9ydCBhbmQgYXMgY291bnRlciBpbiAnXCJcbiAgICAgICAgIF4gYWdlbnRfbmFtZSBeIFwiJ1wiLFxuICAgICAgICAgcG9zICkpXG5cbmxldCByYWlzZV9saW5rX29ubHlfb25lX29jY3VyZW5jZSBpIHBvcyA9XG4gIHJhaXNlXG4gICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAoIFwiVGhlIGxpbmsgJ1wiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgICAgICBeIFwiJyBvY2N1cnMgb25seSBvbmUgdGltZSBpbiB0aGUgbWl4dHVyZS5cIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgcmFpc2VfbGlua19zaG91bGRfYmVfcmVtb3ZlZCBpIGFnZW50X25hbWUgKG5hLCBwb3MpID1cbiAgcmFpc2VcbiAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICggXCJUaGUgbGluayAnXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIicgc2hvdWxkIGJlIG1hZGUgZnJlZSBpbiB0aGUgc2l0ZSAnXCJcbiAgICAgICAgIF4gbmEgXiBcIicgb2YgYWdlbnQgJ1wiIF4gYWdlbnRfbmFtZVxuICAgICAgICAgXiBcIicsIHNpbmNlIGl0IHdpbGwgbWFkZSBiZSBmcmVlIGJ5IHNpZGUtZWZmZWN0LlwiLFxuICAgICAgICAgcG9zICkpXG5cbmxldCBjb3B5X3J1bGVfYWdlbnQgYSA9XG4gIGxldCBwID0gQXJyYXkuY29weSBhLnJhX3BvcnRzIGluXG4gIGxldCBpID0gQXJyYXkuY29weSBhLnJhX2ludHMgaW5cbiAge1xuICAgIHJhX3R5cGUgPSBhLnJhX3R5cGU7XG4gICAgcmFfZXJhc2VkID0gYS5yYV9lcmFzZWQ7XG4gICAgcmFfcG9ydHMgPSBwO1xuICAgIHJhX2ludHMgPSBpO1xuICAgIHJhX3N5bnRheCA9XG4gICAgICBPcHRpb25fdXRpbC5tYXAgKGZ1biBfIC0+IEFycmF5LmNvcHkgcCwgQXJyYXkuY29weSBpKSBhLnJhX3N5bnRheDtcbiAgfVxuXG5sZXQgYWdlbnRfdG9fZXJhc2VkIHNpZ3MgciA9XG4gIGxldCByYV9wb3J0cyA9IEFycmF5Lm1hcCAoZnVuIChhLCBfKSAtPiBhLCBFcmFzZWQpIHIucmFfcG9ydHMgaW5cbiAgbGV0IHJhX2ludHMgPVxuICAgIEFycmF5Lm1hcGlcbiAgICAgIChmdW4gaiAtPiBmdW5jdGlvblxuICAgICAgICB8IElfVkFMX0NIQU5HRUQgKGksIF8pIHwgSV9WQUxfRVJBU0VEIGkgLT4gSV9WQUxfRVJBU0VEIGlcbiAgICAgICAgfCBJX0FOWSB8IElfQU5ZX0NIQU5HRUQgXyB8IElfQU5ZX0VSQVNFRCAtPlxuICAgICAgICAgIChtYXRjaCBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSByLnJhX3R5cGUgaiBzaWdzIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXyAtPiBJX0FOWV9FUkFTRURcbiAgICAgICAgICB8IE5vbmUgLT4gSV9BTlkpKVxuICAgICAgci5yYV9pbnRzXG4gIGluXG4gIHtcbiAgICByYV90eXBlID0gci5yYV90eXBlO1xuICAgIHJhX2VyYXNlZCA9IHRydWU7XG4gICAgcmFfcG9ydHM7XG4gICAgcmFfaW50cztcbiAgICByYV9zeW50YXggPVxuICAgICAgKG1hdGNoIHIucmFfc3ludGF4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgXyAtPiBTb21lIChBcnJheS5jb3B5IHJhX3BvcnRzLCBBcnJheS5jb3B5IHJhX2ludHMpKTtcbiAgfVxuXG5sZXQgdG9fZXJhc2VkIChzaWdzIDogU2lnbmF0dXJlLnMpICh4IDogcnVsZV9taXh0dXJlKSA6IHJ1bGVfbWl4dHVyZSA9XG4gIExpc3QubWFwIChhZ2VudF90b19lcmFzZWQgc2lncykgeFxuXG5sZXQgdG9fbWFpbnRhaW5lZCAoeCA6IHJ1bGVfbWl4dHVyZSkgOiBydWxlX21peHR1cmUgPVxuICBMaXN0Lm1hcFxuICAgIChmdW4gciAtPlxuICAgICAgbGV0IHBvcnRzID0gQXJyYXkubWFwIChmdW4gKGEsIF8pIC0+IGEsIE1haW50YWluZWQpIHIucmFfcG9ydHMgaW5cbiAgICAgIGxldCBpbnRzID1cbiAgICAgICAgQXJyYXkubWFwXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IElfVkFMX0NIQU5HRUQgKGksIF8pIHwgSV9WQUxfRVJBU0VEIGkgLT4gSV9WQUxfQ0hBTkdFRCAoaSwgaSlcbiAgICAgICAgICAgIHwgSV9BTlkgfCBJX0FOWV9DSEFOR0VEIF8gfCBJX0FOWV9FUkFTRUQgLT4gSV9BTlkpXG4gICAgICAgICAgci5yYV9pbnRzXG4gICAgICBpblxuICAgICAge1xuICAgICAgICByYV90eXBlID0gci5yYV90eXBlO1xuICAgICAgICByYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgICAgcmFfcG9ydHMgPSBwb3J0cztcbiAgICAgICAgcmFfaW50cyA9IGludHM7XG4gICAgICAgIHJhX3N5bnRheCA9XG4gICAgICAgICAgKG1hdGNoIHIucmFfc3ludGF4IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBfIC0+IFNvbWUgKHBvcnRzLCBpbnRzKSk7XG4gICAgICB9KVxuICAgIHhcblxubGV0IHRvX3Jhd19taXh0dXJlIHNpZ3MgeCA9XG4gIExpc3QubWFwXG4gICAgKGZ1biByIC0+XG4gICAgICBsZXQgaW50ZXJuYWxzID1cbiAgICAgICAgQXJyYXkubWFwaVxuICAgICAgICAgIChmdW4gaiAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBJX1ZBTF9DSEFOR0VEIChpLCBfKSB8IElfVkFMX0VSQVNFRCBpIC0+IFNvbWUgaVxuICAgICAgICAgICAgfCBJX0FOWSB8IElfQU5ZX0NIQU5HRUQgXyB8IElfQU5ZX0VSQVNFRCAtPlxuICAgICAgICAgICAgICBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSByLnJhX3R5cGUgaiBzaWdzKVxuICAgICAgICAgIHIucmFfaW50c1xuICAgICAgaW5cbiAgICAgIGxldCBwb3J0cyA9XG4gICAgICAgIEFycmF5Lm1hcGlcbiAgICAgICAgICAoZnVuIGogLT4gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgKExOS19TT01FLCBwb3MgfCBMTktfVFlQRSBfLCBwb3MpLCBfIC0+XG4gICAgICAgICAgICAgIGxldCBhZ2VudF9uYW1lID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncykgci5yYV90eXBlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBwb3J0X25hbWUgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3Mgci5yYV90eXBlKSBqXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICBhZ2VudF9uYW1lIChwb3J0X25hbWUsIHBvcylcbiAgICAgICAgICAgIHwgKExOS19WQUxVRSAoaSwgXyksIF8pLCBfIC0+IFJhd19taXh0dXJlLlZBTCBpXG4gICAgICAgICAgICB8ICgoTE5LX0FOWSB8IEFOWV9GUkVFIHwgTE5LX0ZSRUUpLCBfKSwgXyAtPiBSYXdfbWl4dHVyZS5GUkVFKVxuICAgICAgICAgIHIucmFfcG9ydHNcbiAgICAgIGluXG4gICAgICB7XG4gICAgICAgIFJhd19taXh0dXJlLmFfdHlwZSA9IHIucmFfdHlwZTtcbiAgICAgICAgUmF3X21peHR1cmUuYV9wb3J0cyA9IHBvcnRzO1xuICAgICAgICBSYXdfbWl4dHVyZS5hX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgICB9KVxuICAgIHhcblxubGV0IG1heF9saW5rX2lkIHIgPVxuICBsZXQgbWF4X3MgbSA9IGZ1bmN0aW9uXG4gICAgfCBMaW5rZWQgaSAtPiBtYXggaSBtXG4gICAgfCBGcmVlZCB8IE1haW50YWluZWQgfCBFcmFzZWQgLT4gbVxuICBpblxuICBsZXQgbWF4X2xpbmtfaWRfc2l0ZXMgbWF4X2lkIGFnID1cbiAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgIChmdW4gbWF4X2lkIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgKExOS19WQUxVRSAoaiwgXyksIF8pLCBzIC0+IG1heF9zIChtYXggaiBtYXhfaWQpIHNcbiAgICAgICAgfCAoKExOS19UWVBFIF8gfCBMTktfU09NRSB8IExOS19GUkVFIHwgTE5LX0FOWSB8IEFOWV9GUkVFKSwgXyksIHMgLT5cbiAgICAgICAgICBtYXhfcyBtYXhfaWQgcylcbiAgICAgIG1heF9pZCBhZy5yYV9wb3J0c1xuICBpblxuICBMaXN0LmZvbGRfbGVmdCBtYXhfbGlua19pZF9zaXRlcyAwIHJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBsaW5rX29jY3VyZW5jZV9mYWlsdXJlIGtleSBwb3MgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgKCBcIkJ1ZzogTGluayBcIiBeIHN0cmluZ19vZl9pbnQga2V5XG4gICAgICAgICBeIFwiIGlzIHByb2JsZW1hdGljISBMS2FwcGEgaXMgZWl0aGVyIGJyb2tlblwiXG4gICAgICAgICBeIFwiIG9yIHVudXNlZCEgUGxlYXNlIHJlcG9ydC5cIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgcG9ydHNfZnJvbV9jb250YWN0X21hcCBjb250YWN0X21hcCB0eV9pZCBwX2lkID1cbiAgc25kIGNvbnRhY3RfbWFwLih0eV9pZCkuKHBfaWQpXG5cbmxldCBmaW5kX2ltcGxpY2l0X2luZm9zIGNvbnRhY3RfbWFwIGFncyA9XG4gIGxldCBuZXdfc3dpdGNoID0gZnVuY3Rpb25cbiAgICB8IExLYXBwYS5NYWludGFpbmVkIC0+IExLYXBwYS5NYWludGFpbmVkXG4gICAgfCBMS2FwcGEuRnJlZWQgfCBMS2FwcGEuTGlua2VkIF8gfCBMS2FwcGEuRXJhc2VkIC0+IExLYXBwYS5GcmVlZFxuICBpblxuICBsZXQgcmVjIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgcG9ydHMgaSA9XG4gICAgbGV0IHR5X2lkID0gYWcuTEthcHBhLnJhX3R5cGUgaW5cbiAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHBvcnRzIHRoZW4gKFxuICAgICAgbGV0IGN1cnJlbnQnID1cbiAgICAgICAge1xuICAgICAgICAgIExLYXBwYS5yYV90eXBlID0gYWcuTEthcHBhLnJhX3R5cGU7XG4gICAgICAgICAgTEthcHBhLnJhX3BvcnRzID0gcG9ydHM7XG4gICAgICAgICAgTEthcHBhLnJhX2ludHMgPSBhZy5MS2FwcGEucmFfaW50cztcbiAgICAgICAgICBMS2FwcGEucmFfZXJhc2VkID0gYWcuTEthcHBhLnJhX2VyYXNlZDtcbiAgICAgICAgICBMS2FwcGEucmFfc3ludGF4ID0gYWcuTEthcHBhLnJhX3N5bnRheDtcbiAgICAgICAgfVxuICAgICAgICA6OiBjdXJyZW50XG4gICAgICBpblxuICAgICAgYXV4X2FncyBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQnIHRvZG9zIGFnX3RhaWxcbiAgICApIGVsc2UgKFxuICAgICAgbWF0Y2ggcG9ydHMuKGkpIHdpdGhcbiAgICAgIHwgKExLYXBwYS5MTktfVFlQRSAocCwgYSksIF8pLCBzIC0+XG4gICAgICAgIGxldCBvcl90eSA9IGksIHR5X2lkIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgcG9ydHMuKGkpIDwtXG4gICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAoZnJlZV9pZCwgKHAsIGEpKSksIHNcbiAgICAgICAgaW5cbiAgICAgICAgYXV4X29uZSAoc3VjYyBmcmVlX2lkKSBwcmV2aW91cyBjdXJyZW50XG4gICAgICAgICAgKChmcmVlX2lkLCAocCwgYSksIG9yX3R5LCBuZXdfc3dpdGNoIHMpIDo6IHRvZG9zKVxuICAgICAgICAgIGFnX3RhaWwgYWcgcG9ydHMgKHN1Y2MgaSlcbiAgICAgIHwgKExLYXBwYS5MTktfU09NRSwgXyksIHMgLT5cbiAgICAgICAgbGV0IG9yX3R5ID0gaSwgdHlfaWQgaW5cbiAgICAgICAgTW9kcy5JbnQyU2V0LmZvbGRcbiAgICAgICAgICAoZnVuIChhLCBwKSBwcmV2JyAtPlxuICAgICAgICAgICAgbGV0IHBvcnRzJyA9IEFycmF5LmNvcHkgcG9ydHMgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIHBvcnRzJy4oaSkgPC1cbiAgICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAoZnJlZV9pZCwgKHAsIGEpKSksIHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgdG9kb3MnID0gKGZyZWVfaWQsIChwLCBhKSwgb3JfdHksIG5ld19zd2l0Y2ggcykgOjogdG9kb3MgaW5cbiAgICAgICAgICAgIGF1eF9vbmUgKHN1Y2MgZnJlZV9pZCkgcHJldicgY3VycmVudCB0b2RvcycgYWdfdGFpbCBhZyBwb3J0cydcbiAgICAgICAgICAgICAgKHN1Y2MgaSkpXG4gICAgICAgICAgKHBvcnRzX2Zyb21fY29udGFjdF9tYXAgY29udGFjdF9tYXAgdHlfaWQgaSlcbiAgICAgICAgICBwcmV2aW91c1xuICAgICAgfCAoTEthcHBhLkxOS19WQUxVRSBfLCBfKSwgXyAtPlxuICAgICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICB8IChMS2FwcGEuTE5LX0ZSRUUsIHBvcyksICgoTEthcHBhLk1haW50YWluZWQgfCBMS2FwcGEuRXJhc2VkKSBhcyBzKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICgqIERvIG5vdCBtYWtlIHRlc3QgaWYgYmVpbmcgZnJlZSBpcyB0aGUgb25seSBwb3NzaWJpbGl0eSAqKVxuICAgICAgICAgIGlmIE1vZHMuSW50MlNldC5pc19lbXB0eSAocG9ydHNfZnJvbV9jb250YWN0X21hcCBjb250YWN0X21hcCB0eV9pZCBpKVxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIHBvcnRzLihpKSA8LSAoTEthcHBhLkxOS19BTlksIHBvcyksIHNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICB8IChMS2FwcGEuTE5LX0ZSRUUsIF8pLCBMS2FwcGEuRnJlZWQgLT5cbiAgICAgICAgZmFpbHdpdGggXCJBIGZyZWUgc2l0ZSBjYW5ub3QgYmUgZnJlZWRcIlxuICAgICAgfCAoTEthcHBhLkxOS19GUkVFLCBfKSwgTEthcHBhLkxpbmtlZCBfIC0+XG4gICAgICAgIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgcG9ydHMgKHN1Y2MgaSlcbiAgICAgIHwgKChMS2FwcGEuTE5LX0FOWSB8IExLYXBwYS5BTllfRlJFRSksIF8pLCBMS2FwcGEuTWFpbnRhaW5lZCAtPlxuICAgICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICB8ICggKChMS2FwcGEuTE5LX0FOWSB8IExLYXBwYS5BTllfRlJFRSksIHBvcyksXG4gICAgICAgICAgKChMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfIHwgTEthcHBhLkZyZWVkKSBhcyBzKSApIC0+XG4gICAgICAgIGlmXG4gICAgICAgICAgTW9kcy5JbnQyU2V0LmlzX2VtcHR5IChwb3J0c19mcm9tX2NvbnRhY3RfbWFwIGNvbnRhY3RfbWFwIHR5X2lkIGkpXG4gICAgICAgICAgJiYgcyA9IExLYXBwYS5GcmVlZFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBEbyBub3QgbWFrZSB0ZXN0IGlzIGJlaW5nIGZyZWUgaXMgdGhlIG9ubHkgcG9zc2liaWxpdHkgKilcbiAgICAgICAgICBsZXQgKCkgPSBwb3J0cy4oaSkgPC0gKExLYXBwYS5MTktfQU5ZLCBwb3MpLCBMS2FwcGEuTWFpbnRhaW5lZCBpblxuICAgICAgICAgIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgcG9ydHMgKHN1Y2MgaSlcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgYXV4X29uZSBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQgdG9kb3MgYWdfdGFpbCBhZyBwb3J0cyAoc3VjYyBpKVxuICAgIClcbiAgYW5kIGF1eF9hZ3MgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IChMaXN0LnJldiBjdXJyZW50LCB0b2RvcykgOjogcHJldmlvdXNcbiAgICB8IGFnIDo6IGFnX3RhaWwgLT5cbiAgICAgIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgYWcuTEthcHBhLnJhX3BvcnRzIDBcbiAgaW5cbiAgYXV4X2FncyAoc3VjYyAoTEthcHBhLm1heF9saW5rX2lkIGFncykpIFtdIFtdIFtdIGFnc1xuXG5sZXQgY29tcGxldGVfd2l0aF9jYW5kaWRhdGUgb3V0cyBwcmV2cyBhZyBhZ190YWlsIGlkIHRvZG8gcF9pZCBkc3RfaW5mbyBwX3N3aXRjaFxuICAgID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaSBhY2MgcG9ydCAtPlxuICAgICAgaWYgaSA8PiBwX2lkIHRoZW5cbiAgICAgICAgYWNjXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcG9ydCB3aXRoXG4gICAgICAgIHwgKChMS2FwcGEuTE5LX0FOWSB8IExLYXBwYS5BTllfRlJFRSksIF8pLCBzIC0+XG4gICAgICAgICAgaWYgcyA9IExLYXBwYS5NYWludGFpbmVkIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHBvcnRzJyA9IEFycmF5LmNvcHkgYWcuTEthcHBhLnJhX3BvcnRzIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBwb3J0cycuKGkpIDwtXG4gICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGlkLCBkc3RfaW5mbykpLCBwX3N3aXRjaFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggTGlzdC5yZXZfYXBwZW5kIHByZXZzXG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfdHlwZSA9IGFnLkxLYXBwYS5yYV90eXBlO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9wb3J0cyA9IHBvcnRzJztcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfaW50cyA9IGFnLkxLYXBwYS5yYV9pbnRzO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9lcmFzZWQgPSBhZy5MS2FwcGEucmFfZXJhc2VkO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9zeW50YXggPSBhZy5MS2FwcGEucmFfc3ludGF4O1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOjogYWdfdGFpbCksXG4gICAgICAgICAgICAgIHRvZG8gKVxuICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgKSBlbHNlIGlmIHMgPSBMS2FwcGEuRXJhc2VkICYmIHBfc3dpdGNoID0gTEthcHBhLkZyZWVkIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHBvcnRzJyA9IEFycmF5LmNvcHkgYWcuTEthcHBhLnJhX3BvcnRzIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBwb3J0cycuKGkpIDwtXG4gICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGlkLCBkc3RfaW5mbykpLCBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBMaXN0LnJldl9hcHBlbmQgcHJldnNcbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV90eXBlID0gYWcuTEthcHBhLnJhX3R5cGU7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX3BvcnRzID0gcG9ydHMnO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9pbnRzID0gYWcuTEthcHBhLnJhX2ludHM7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX2VyYXNlZCA9IGFnLkxLYXBwYS5yYV9lcmFzZWQ7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX3N5bnRheCA9IGFnLkxLYXBwYS5yYV9zeW50YXg7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6OiBhZ190YWlsKSxcbiAgICAgICAgICAgICAgdG9kbyApXG4gICAgICAgICAgICA6OiBhY2NcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IChMS2FwcGEuTE5LX1ZBTFVFIChrLCB4KSwgXyksIHMgLT5cbiAgICAgICAgICBpZiB4ID0gZHN0X2luZm8gdGhlbiAoXG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAgICAgICAgIChmdW4gKGosIF8sIChwJywgYScpLCBzdycpIC0+XG4gICAgICAgICAgICAgICAgICBqID0gayAmJiBpID0gcCcgJiYgYScgPSBhZy5MS2FwcGEucmFfdHlwZSAmJiBzdycgPSBwX3N3aXRjaClcbiAgICAgICAgICAgICAgICB0b2RvXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFsgXyBdLCB0b2RvJyAtPlxuICAgICAgICAgICAgICBsZXQgcG9ydHMnID0gQXJyYXkuY29weSBhZy5MS2FwcGEucmFfcG9ydHMgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBwb3J0cycuKGkpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChpZCwgeCkpLCBzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggTGlzdC5yZXZfYXBwZW5kIHByZXZzXG4gICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZy5MS2FwcGEucmFfdHlwZTtcbiAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9wb3J0cyA9IHBvcnRzJztcbiAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9pbnRzID0gYWcuTEthcHBhLnJhX2ludHM7XG4gICAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfZXJhc2VkID0gYWcuTEthcHBhLnJhX2VyYXNlZDtcbiAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9zeW50YXggPSBhZy5MS2FwcGEucmFfc3ludGF4O1xuICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDo6IGFnX3RhaWwpLFxuICAgICAgICAgICAgICAgIHRvZG8nIClcbiAgICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgICB8IFtdLCBfIC0+IGFjY1xuICAgICAgICAgICAgfCBfIDo6IF8gOjogXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8ICgoTEthcHBhLkxOS19UWVBFIF8gfCBMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuTE5LX1NPTUUpLCBfKSwgXyAtPiBhY2NcbiAgICAgICkpXG4gICAgb3V0cyBhZy5MS2FwcGEucmFfcG9ydHNcblxubGV0IG5ld19hZ2VudF93aXRoX29uZV9saW5rIHNpZ3MgdHlfaWQgcG9ydCBsaW5rIGRzdF9pbmZvIHN3aXRjaCA9XG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIHR5X2lkIGluXG4gIGxldCBwb3J0cyA9XG4gICAgQXJyYXkubWFrZSBhcml0eSAoTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19BTlksIExLYXBwYS5NYWludGFpbmVkKVxuICBpblxuICBsZXQgaW50ZXJuYWxzID0gQXJyYXkubWFrZSBhcml0eSBMS2FwcGEuSV9BTlkgaW5cbiAgbGV0ICgpID1cbiAgICBwb3J0cy4ocG9ydCkgPC1cbiAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChsaW5rLCBkc3RfaW5mbykpLCBzd2l0Y2hcbiAgaW5cbiAge1xuICAgIExLYXBwYS5yYV90eXBlID0gdHlfaWQ7XG4gICAgTEthcHBhLnJhX3BvcnRzID0gcG9ydHM7XG4gICAgTEthcHBhLnJhX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgTEthcHBhLnJhX2VyYXNlZCA9IGZhbHNlO1xuICAgIExLYXBwYS5yYV9zeW50YXggPSBOb25lO1xuICB9XG5cbmxldCByZWMgYWRkX29uZV9pbXBsaWNpdF9pbmZvIHNpZ3MgaWQgKCgocG9ydCwgdHlfaWQpLCBkc3RfaW5mbywgcykgYXMgaW5mbykgYWNjXG4gICAgb3V0IHRvZG8gPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgKCBMaXN0LnJldl9hcHBlbmQgYWNjXG4gICAgICAgIFsgbmV3X2FnZW50X3dpdGhfb25lX2xpbmsgc2lncyB0eV9pZCBwb3J0IGlkIGRzdF9pbmZvIHMgXSxcbiAgICAgIHRvZG8gKVxuICAgIDo6IG91dFxuICB8IGFnIDo6IGFnX3RhaWwgLT5cbiAgICBsZXQgb3V0X3RhaWwgPVxuICAgICAgYWRkX29uZV9pbXBsaWNpdF9pbmZvIHNpZ3MgaWQgaW5mbyAoYWcgOjogYWNjKSBvdXQgdG9kbyBhZ190YWlsXG4gICAgaW5cbiAgICBpZiB0eV9pZCA9IGFnLkxLYXBwYS5yYV90eXBlIHRoZW5cbiAgICAgIGNvbXBsZXRlX3dpdGhfY2FuZGlkYXRlIG91dF90YWlsIGFjYyBhZyBhZ190YWlsIGlkIHRvZG8gcG9ydCBkc3RfaW5mbyBzXG4gICAgZWxzZVxuICAgICAgb3V0X3RhaWxcblxubGV0IGFkZF9pbXBsaWNpdF9pbmZvcyBzaWdzIGwgPVxuICBsZXQgcmVjIGF1eCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCAobSwgW10pIDo6IHQgLT4gYXV4IChtIDo6IGFjYykgdFxuICAgIHwgKG0sIChpZCwgaW5mbywgZHN0X2luZm8sIHMpIDo6IHRvZG8nKSA6OiB0IC0+XG4gICAgICBhdXggYWNjIChhZGRfb25lX2ltcGxpY2l0X2luZm8gc2lncyBpZCAoaW5mbywgZHN0X2luZm8sIHMpIFtdIHQgdG9kbycgbSlcbiAgaW5cbiAgYXV4IFtdIGxcblxubGV0IGlzX2xpbmtlZF9vbl9wb3J0IG1lIGkgaWQgPSBmdW5jdGlvblxuICB8IChMS2FwcGEuTE5LX1ZBTFVFIChqLCBfKSwgXyksIF8gd2hlbiBpID0gaiAtPiBpZCA8PiBtZVxuICB8ICggKCAoIExLYXBwYS5MTktfVkFMVUUgXyB8IExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5MTktfVFlQRSBfXG4gICAgICAgIHwgTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuTE5LX1NPTUUgfCBMS2FwcGEuQU5ZX0ZSRUUgKSxcbiAgICAgICAgXyApLFxuICAgICAgXyApIC0+XG4gICAgZmFsc2VcblxubGV0IGlzX2xpbmtlZF9vbiBpIGFnID1cbiAgVG9vbHMuYXJyYXlfZmlsdGVyIChpc19saW5rZWRfb25fcG9ydCAoLTEpIGkpIGFnLkxLYXBwYS5yYV9wb3J0cyA8PiBbXVxuXG5sZXQgZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24gKChyZW1vdmVkLCBhZGRlZCkgYXMgdHJhbnNmKSBsaW5rc190cmFuc2YgcGxhY2VcbiAgICBzaXRlIChjYW5kLCBfKSBzd2l0Y2ggPVxuICBtYXRjaCBzd2l0Y2ggd2l0aFxuICB8IExLYXBwYS5GcmVlZCAtPlxuICAgICggKGNhbmQgOjogcmVtb3ZlZCwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAocGxhY2UsIHNpdGUpIDo6IGFkZGVkKSxcbiAgICAgIGxpbmtzX3RyYW5zZiApXG4gIHwgTEthcHBhLk1haW50YWluZWQgLT4gdHJhbnNmLCBsaW5rc190cmFuc2ZcbiAgfCBMS2FwcGEuRXJhc2VkIC0+IChjYW5kIDo6IHJlbW92ZWQsIGFkZGVkKSwgbGlua3NfdHJhbnNmXG4gIHwgTEthcHBhLkxpbmtlZCBpIC0+XG4gICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgbGlua3NfdHJhbnNmIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBsaW5rc190cmFuc2YnID0gTW9kcy5JbnRNYXAuYWRkIGkgKHBsYWNlLCBzaXRlKSBsaW5rc190cmFuc2YgaW5cbiAgICAgIChjYW5kIDo6IHJlbW92ZWQsIGFkZGVkKSwgbGlua3NfdHJhbnNmJ1xuICAgIHwgU29tZSBkc3QnIC0+XG4gICAgICBsZXQgbGlua3NfdHJhbnNmJyA9IE1vZHMuSW50TWFwLnJlbW92ZSBpIGxpbmtzX3RyYW5zZiBpblxuICAgICAgKCAoIGNhbmQgOjogcmVtb3ZlZCxcbiAgICAgICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKHBsYWNlLCBzaXRlKSwgZHN0JykgOjogYWRkZWQgKSxcbiAgICAgICAgbGlua3NfdHJhbnNmJyApKVxuXG5sZXQgZGVmaW5lX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uICgocmVtb3ZlZCwgYWRkZWQpIGFzIHRyYW5zZikgbGlua3NfdHJhbnNmXG4gICAgcGxhY2Ugc2l0ZSBzd2l0Y2ggPVxuICBtYXRjaCBzd2l0Y2ggd2l0aFxuICB8IExLYXBwYS5GcmVlZCAtPlxuICAgICggKHJlbW92ZWQsIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKHBsYWNlLCBzaXRlKSA6OiBhZGRlZCksXG4gICAgICBsaW5rc190cmFuc2YgKVxuICB8IExLYXBwYS5FcmFzZWQgLT4gdHJhbnNmLCBsaW5rc190cmFuc2ZcbiAgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiB0cmFuc2YsIGxpbmtzX3RyYW5zZlxuICB8IExLYXBwYS5MaW5rZWQgaSAtPlxuICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIGxpbmtzX3RyYW5zZiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgbGlua3NfdHJhbnNmJyA9IE1vZHMuSW50TWFwLmFkZCBpIChwbGFjZSwgc2l0ZSkgbGlua3NfdHJhbnNmIGluXG4gICAgICB0cmFuc2YsIGxpbmtzX3RyYW5zZidcbiAgICB8IFNvbWUgZHN0JyAtPlxuICAgICAgbGV0IGxpbmtzX3RyYW5zZicgPSBNb2RzLkludE1hcC5yZW1vdmUgaSBsaW5rc190cmFuc2YgaW5cbiAgICAgICggKCByZW1vdmVkLFxuICAgICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgocGxhY2UsIHNpdGUpLCBkc3QnKSA6OiBhZGRlZCApLFxuICAgICAgICBsaW5rc190cmFuc2YnICkpXG5cbmxldCBhZGRfaW5zdGFudGlhdGlvbl9mcmVlIGFjdGlvbnMgcGwgcyA9IGZ1bmN0aW9uXG4gIHwgTEthcHBhLkZyZWVkIC0+IEluc3RhbnRpYXRpb24uRnJlZSAocGwsIHMpIDo6IGFjdGlvbnNcbiAgfCBMS2FwcGEuTGlua2VkIF8gfCBMS2FwcGEuTWFpbnRhaW5lZCB8IExLYXBwYS5FcmFzZWQgLT4gYWN0aW9uc1xuXG5sZXQgYWRkX3NpZGVfc2l0ZSBzaWRlX3NpdGVzIGJ0IHBsIHMgPSBmdW5jdGlvblxuICB8IExLYXBwYS5GcmVlZCB8IExLYXBwYS5MaW5rZWQgXyB8IExLYXBwYS5FcmFzZWQgLT5cbiAgICAoKHBsLCBzKSwgYnQpIDo6IHNpZGVfc2l0ZXNcbiAgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiBzaWRlX3NpdGVzXG5cbmxldCBhZGRfZnJlZWRfc2lkZV9lZmZlY3Qgc2lkZV9lZmZlY3RzIHBsIHMgPSBmdW5jdGlvblxuICB8IChMS2FwcGEuTE5LX1ZBTFVFIF8sIF8pLCBMS2FwcGEuRnJlZWQgLT4gKHBsLCBzKSA6OiBzaWRlX2VmZmVjdHNcbiAgfCAoIChMS2FwcGEuTE5LX1ZBTFVFIF8sIF8pLFxuICAgICAgKExLYXBwYS5NYWludGFpbmVkIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXykgKVxuICB8ICggKCAoIExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkxOS19UWVBFIF9cbiAgICAgICAgfCBMS2FwcGEuQU5ZX0ZSRUUgKSxcbiAgICAgICAgXyApLFxuICAgICAgXyApIC0+XG4gICAgc2lkZV9lZmZlY3RzXG5cbmxldCBhZGRfZXh0cmFfc2lkZV9lZmZlY3RzIHNpZGVfZWZmZWN0cyBwbGFjZSByZWZpbmVkID1cbiAgbGV0IHJlYyBhdXggc2lkZV9lZmZlY3RzIHNpdGVfaWQgPVxuICAgIGlmIHNpdGVfaWQgPCAwIHRoZW5cbiAgICAgIHNpZGVfZWZmZWN0c1xuICAgIGVsc2VcbiAgICAgIGF1eFxuICAgICAgICAoYWRkX2ZyZWVkX3NpZGVfZWZmZWN0IHNpZGVfZWZmZWN0cyBwbGFjZSBzaXRlX2lkIHJlZmluZWQuKHNpdGVfaWQpKVxuICAgICAgICAocHJlZCBzaXRlX2lkKVxuICBpblxuICBhdXggc2lkZV9lZmZlY3RzIChwcmVkIChBcnJheS5sZW5ndGggcmVmaW5lZCkpXG5cbigqIERlYWxzIHdpdGggdGVzdHMsIGVyYXN1cmUgaW50ZXJuYWwgc3RhdGUgY2hhbmdlIGFuZCByZWxlYXNlIChidXRcbiAgIG5vdCBiaW5kaW5nKSopXG5sZXQgbWFrZV9pbnN0YW50aWF0aW9uIHBsYWNlIGxpbmtzIGV2ZW50IHJlZl9wb3J0cyBpc19lcmFzZWQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT5cbiAgICB7XG4gICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gZXZlbnQuSW5zdGFudGlhdGlvbi50ZXN0cztcbiAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGV2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9ucztcbiAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYyA9IGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdCA9XG4gICAgICAgIGFkZF9leHRyYV9zaWRlX2VmZmVjdHMgZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0IHBsYWNlXG4gICAgICAgICAgcmVmX3BvcnRzO1xuICAgICAgSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgPSBldmVudC5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cztcbiAgICB9XG4gIHwgU29tZSAocG9ydHMsIGludHMpIC0+XG4gICAgKG1hdGNoIGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHMgd2l0aFxuICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCB0aGlzX2NjX3Rlc3RzIDo6IG9fY2NfdGVzdHMgLT5cbiAgICAgIGxldCByZWMgYXV4IHNpdGVfaWQgdGVzdHMgYWN0aW9ucyBzaWRlX2VmZmVjdHNfc3JjIHNpZGVfZWZmZWN0c19kc3QgbGlua3NcbiAgICAgICAgICA9XG4gICAgICAgIGlmIHNpdGVfaWQgPj0gQXJyYXkubGVuZ3RoIHBvcnRzIHRoZW5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gdGVzdHMgOjogb19jY190ZXN0cztcbiAgICAgICAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucztcbiAgICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdDtcbiAgICAgICAgICAgIEluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgICAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHM7XG4gICAgICAgICAgfVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgdGVzdHMnLCBhY3Rpb25zJyA9XG4gICAgICAgICAgICBtYXRjaCBpbnRzLihzaXRlX2lkKSB3aXRoXG4gICAgICAgICAgICB8IExLYXBwYS5JX0FOWSB8IExLYXBwYS5JX0FOWV9FUkFTRUQgLT4gdGVzdHMsIGFjdGlvbnNcbiAgICAgICAgICAgIHwgTEthcHBhLklfQU5ZX0NIQU5HRUQgaiAtPlxuICAgICAgICAgICAgICB0ZXN0cywgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKChwbGFjZSwgc2l0ZV9pZCksIGopIDo6IGFjdGlvbnNcbiAgICAgICAgICAgIHwgTEthcHBhLklfVkFMX0NIQU5HRUQgKGksIGopIC0+XG4gICAgICAgICAgICAgICggSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgKChwbGFjZSwgc2l0ZV9pZCksIGkpIDo6IHRlc3RzLFxuICAgICAgICAgICAgICAgIGlmIGkgPD4gaiB0aGVuXG4gICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoKHBsYWNlLCBzaXRlX2lkKSwgaikgOjogYWN0aW9uc1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGFjdGlvbnMgKVxuICAgICAgICAgICAgfCBMS2FwcGEuSV9WQUxfRVJBU0VEIGkgLT5cbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgKChwbGFjZSwgc2l0ZV9pZCksIGkpIDo6IHRlc3RzLCBhY3Rpb25zXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdGVzdHMnJywgYWN0aW9ucycnLCBzaWRlX3NpdGVzJywgc2lkZV9lZmZlY3RzJywgbGlua3MnID1cbiAgICAgICAgICAgIG1hdGNoIHBvcnRzLihzaXRlX2lkKSB3aXRoXG4gICAgICAgICAgICB8ICgoTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSwgcyAtPlxuICAgICAgICAgICAgICBsZXQgc2lkZV9lZmZlY3RzJyA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPlxuICAgICAgICAgICAgICAgICAgYWRkX2ZyZWVkX3NpZGVfZWZmZWN0IHNpZGVfZWZmZWN0c19kc3QgcGxhY2Ugc2l0ZV9pZFxuICAgICAgICAgICAgICAgICAgICByZWZfcG9ydHMuKHNpdGVfaWQpXG4gICAgICAgICAgICAgICAgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfIHwgTEthcHBhLkZyZWVkIC0+XG4gICAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfZHN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggdGVzdHMnLFxuICAgICAgICAgICAgICAgIGFkZF9pbnN0YW50aWF0aW9uX2ZyZWUgYWN0aW9ucycgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgIGFkZF9zaWRlX3NpdGUgc2lkZV9lZmZlY3RzX3NyYyBJbnN0YW50aWF0aW9uLkFOWSBwbGFjZSBzaXRlX2lkIHMsXG4gICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzJyxcbiAgICAgICAgICAgICAgICBsaW5rcyApXG4gICAgICAgICAgICB8IChMS2FwcGEuTE5LX0ZSRUUsIF8pLCBzIC0+XG4gICAgICAgICAgICAgICggSW5zdGFudGlhdGlvbi5Jc19GcmVlIChwbGFjZSwgc2l0ZV9pZCkgOjogdGVzdHMnLFxuICAgICAgICAgICAgICAgIGFkZF9pbnN0YW50aWF0aW9uX2ZyZWUgYWN0aW9ucycgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19zcmMsXG4gICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX2RzdCxcbiAgICAgICAgICAgICAgICBsaW5rcyApXG4gICAgICAgICAgICB8IChMS2FwcGEuTE5LX1NPTUUsIF8pLCBzIC0+XG4gICAgICAgICAgICAgICggSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCAocGxhY2UsIHNpdGVfaWQpIDo6IHRlc3RzJyxcbiAgICAgICAgICAgICAgICBhZGRfaW5zdGFudGlhdGlvbl9mcmVlIGFjdGlvbnMnIHBsYWNlIHNpdGVfaWQgcyxcbiAgICAgICAgICAgICAgICBhZGRfc2lkZV9zaXRlIHNpZGVfZWZmZWN0c19zcmMgSW5zdGFudGlhdGlvbi5CT1VORCBwbGFjZSBzaXRlX2lkXG4gICAgICAgICAgICAgICAgICBzLFxuICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19kc3QsXG4gICAgICAgICAgICAgICAgbGlua3MgKVxuICAgICAgICAgICAgfCAoTEthcHBhLkxOS19UWVBFIChiLCBhKSwgXyksIHMgLT5cbiAgICAgICAgICAgICAgKCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKChwbGFjZSwgc2l0ZV9pZCksIChhLCBiKSlcbiAgICAgICAgICAgICAgICA6OiB0ZXN0cycsXG4gICAgICAgICAgICAgICAgYWRkX2luc3RhbnRpYXRpb25fZnJlZSBhY3Rpb25zJyBwbGFjZSBzaXRlX2lkIHMsXG4gICAgICAgICAgICAgICAgYWRkX3NpZGVfc2l0ZSBzaWRlX2VmZmVjdHNfc3JjXG4gICAgICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5CT1VORF9UWVBFIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIHBsYWNlIHNpdGVfaWQgcyxcbiAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfZHN0LFxuICAgICAgICAgICAgICAgIGxpbmtzIClcbiAgICAgICAgICAgIHwgKExLYXBwYS5MTktfVkFMVUUgKGksIF8pLCBfKSwgcyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBsaW5rcyB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICAgICAgKCB4IDo6IHRlc3RzJyxcbiAgICAgICAgICAgICAgICAgIGFkZF9pbnN0YW50aWF0aW9uX2ZyZWUgYWN0aW9ucycgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX3NyYyxcbiAgICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19kc3QsXG4gICAgICAgICAgICAgICAgICBNb2RzLkludE1hcC5yZW1vdmUgaSBsaW5rcyApXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICggdGVzdHMnLFxuICAgICAgICAgICAgICAgICAgYWRkX2luc3RhbnRpYXRpb25fZnJlZSBhY3Rpb25zJyBwbGFjZSBzaXRlX2lkIHMsXG4gICAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfc3JjLFxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX2RzdCxcbiAgICAgICAgICAgICAgICAgIGxpbmtzICkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggKHN1Y2Mgc2l0ZV9pZCkgdGVzdHMnJyBhY3Rpb25zJycgc2lkZV9zaXRlcycgc2lkZV9lZmZlY3RzJyBsaW5rcydcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCAwXG4gICAgICAgIChJbnN0YW50aWF0aW9uLklzX0hlcmUgcGxhY2UgOjogdGhpc19jY190ZXN0cylcbiAgICAgICAgKGlmIGlzX2VyYXNlZCB0aGVuXG4gICAgICAgICAgIEluc3RhbnRpYXRpb24uUmVtb3ZlIHBsYWNlIDo6IGV2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgICAgICAgZWxzZVxuICAgICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnMpXG4gICAgICAgIGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyY1xuICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3QgbGlua3MpXG5cbmxldCByZWMgYWRkX2FnZW50c19pbl9jYyBzaWdzIGlkIHdrIHJlZ2lzdGVyZWRfbGlua3NcbiAgICAoKHJlbW92ZWQsIGFkZGVkKSBhcyB0cmFuc2YpIGxpbmtzX3RyYW5zZiBpbnN0YW50aWF0aW9ucyByZW1haW5zID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIChtYXRjaCBNb2RzLkludE1hcC5yb290IHJlZ2lzdGVyZWRfbGlua3Mgd2l0aFxuICAgIHwgTm9uZSAtPiB3aywgdHJhbnNmLCBsaW5rc190cmFuc2YsIGluc3RhbnRpYXRpb25zLCByZW1haW5zXG4gICAgfCBTb21lIChrZXksIF8pIC0+IGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUga2V5IExvYy5kdW1teSlcbiAgfCBhZyA6OiBhZ19sIC0+XG4gICAgbGV0IG5vZGUsIHdrID0gUGF0dGVybi5uZXdfbm9kZSB3ayBhZy5MS2FwcGEucmFfdHlwZSBpblxuICAgIGxldCBwbGFjZSA9IE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nIChub2RlLCBpZCkgaW5cbiAgICBsZXQgdHJhbnNmJyA9XG4gICAgICBpZiBhZy5MS2FwcGEucmFfZXJhc2VkIHRoZW5cbiAgICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBwbGFjZSA6OiByZW1vdmVkLCBhZGRlZFxuICAgICAgZWxzZVxuICAgICAgICB0cmFuc2ZcbiAgICBpblxuICAgIGxldCByZWMgaGFuZGxlX3BvcnRzIHdrIHJfbCBjX2wgKHJlbW92ZWQsIGFkZGVkKSBsX3QgcmUgYWNjIHNpdGVfaWQgPVxuICAgICAgaWYgc2l0ZV9pZCA9IEFycmF5Lmxlbmd0aCBhZy5MS2FwcGEucmFfcG9ydHMgdGhlbiAoXG4gICAgICAgIGxldCBpbnN0YW50aWF0aW9ucycgPVxuICAgICAgICAgIG1ha2VfaW5zdGFudGlhdGlvbiBwbGFjZSBjX2wgaW5zdGFudGlhdGlvbnMgYWcuTEthcHBhLnJhX3BvcnRzXG4gICAgICAgICAgICBhZy5MS2FwcGEucmFfZXJhc2VkIGFnLkxLYXBwYS5yYV9zeW50YXhcbiAgICAgICAgaW5cbiAgICAgICAgYWRkX2FnZW50c19pbl9jYyBzaWdzIGlkIHdrIHJfbCAocmVtb3ZlZCwgYWRkZWQpIGxfdCBpbnN0YW50aWF0aW9ucycgcmVcbiAgICAgICAgICBhY2NcbiAgICAgICkgZWxzZSAoXG4gICAgICAgIGxldCB0cmFuc2YsIHdrJyA9XG4gICAgICAgICAgbWF0Y2ggYWcuTEthcHBhLnJhX2ludHMuKHNpdGVfaWQpIHdpdGhcbiAgICAgICAgICB8IExLYXBwYS5JX0FOWSAtPiAocmVtb3ZlZCwgYWRkZWQpLCB3a1xuICAgICAgICAgIHwgTEthcHBhLklfQU5ZX0VSQVNFRCAtPlxuICAgICAgICAgICAgKCAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHBsYWNlLCBzaXRlX2lkKVxuICAgICAgICAgICAgICAgIDo6IHJlbW92ZWQsXG4gICAgICAgICAgICAgICAgYWRkZWQgKSxcbiAgICAgICAgICAgICAgd2sgKVxuICAgICAgICAgIHwgTEthcHBhLklfQU5ZX0NIQU5HRUQgaiAtPlxuICAgICAgICAgICAgKCAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHBsYWNlLCBzaXRlX2lkKVxuICAgICAgICAgICAgICAgIDo6IHJlbW92ZWQsXG4gICAgICAgICAgICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZFxuICAgICAgICAgICAgICAgICAgKHBsYWNlLCBzaXRlX2lkLCBqKVxuICAgICAgICAgICAgICAgIDo6IGFkZGVkICksXG4gICAgICAgICAgICAgIHdrIClcbiAgICAgICAgICB8IExLYXBwYS5JX1ZBTF9DSEFOR0VEIChpLCBqKSAtPlxuICAgICAgICAgICAgKCAoaWYgaSA9IGogdGhlblxuICAgICAgICAgICAgICAgICByZW1vdmVkLCBhZGRlZFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWRcbiAgICAgICAgICAgICAgICAgICAgIChwbGFjZSwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICAgICA6OiByZW1vdmVkLFxuICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWRcbiAgICAgICAgICAgICAgICAgICAgIChwbGFjZSwgc2l0ZV9pZCwgailcbiAgICAgICAgICAgICAgICAgICA6OiBhZGRlZCApKSxcbiAgICAgICAgICAgICAgUGF0dGVybi5uZXdfaW50ZXJuYWxfc3RhdGUgd2sgKG5vZGUsIHNpdGVfaWQpIGkgKVxuICAgICAgICAgIHwgTEthcHBhLklfVkFMX0VSQVNFRCBpIC0+XG4gICAgICAgICAgICAoICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCAocGxhY2UsIHNpdGVfaWQpXG4gICAgICAgICAgICAgICAgOjogcmVtb3ZlZCxcbiAgICAgICAgICAgICAgICBhZGRlZCApLFxuICAgICAgICAgICAgICBQYXR0ZXJuLm5ld19pbnRlcm5hbF9zdGF0ZSB3ayAobm9kZSwgc2l0ZV9pZCkgaSApXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGFnLkxLYXBwYS5yYV9wb3J0cy4oc2l0ZV9pZCkgd2l0aFxuICAgICAgICB8ICgoTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBwb3MpLCBzIC0+XG4gICAgICAgICAgbGV0IHRyYW5zZicsIGxfdCcgPVxuICAgICAgICAgICAgZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24gdHJhbnNmIGxfdCBwbGFjZSBzaXRlX2lkXG4gICAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyIChwbGFjZSwgc2l0ZV9pZCksXG4gICAgICAgICAgICAgICAgU29tZSBwb3MgKVxuICAgICAgICAgICAgICBzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBoYW5kbGVfcG9ydHMgd2snIHJfbCBjX2wgdHJhbnNmJyBsX3QnIHJlIGFjYyAoc3VjYyBzaXRlX2lkKVxuICAgICAgICB8IChMS2FwcGEuTE5LX0ZSRUUsIF8pLCBzIC0+XG4gICAgICAgICAgbGV0IHdrJycgPSBQYXR0ZXJuLm5ld19mcmVlIHdrJyAobm9kZSwgc2l0ZV9pZCkgaW5cbiAgICAgICAgICBsZXQgdHJhbnNmJywgbF90JyA9XG4gICAgICAgICAgICBkZWZpbmVfZnVsbF90cmFuc2Zvcm1hdGlvbiB0cmFuc2YgbF90IHBsYWNlIHNpdGVfaWRcbiAgICAgICAgICAgICAgKFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKHBsYWNlLCBzaXRlX2lkKSwgTm9uZSlcbiAgICAgICAgICAgICAgc1xuICAgICAgICAgIGluXG4gICAgICAgICAgaGFuZGxlX3BvcnRzIHdrJycgcl9sIGNfbCB0cmFuc2YnIGxfdCcgcmUgYWNjIChzdWNjIHNpdGVfaWQpXG4gICAgICAgIHwgKChMS2FwcGEuTE5LX1NPTUUgfCBMS2FwcGEuTE5LX1RZUEUgXyksIF8pLCBfIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgIFwiVHJ5IHRvIGNyZWF0ZSB0aGUgY29ubmVjdGVkIGNvbXBvbmVudHMgb2YgYW4gYW1iaWd1b3VzIFxcXG4gICAgICAgICAgICAgICAgICAgbWl4dHVyZS5cIikpXG4gICAgICAgIHwgKExLYXBwYS5MTktfVkFMVUUgKGksIF8pLCBwb3MpLCBzIC0+XG4gICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgcl9sIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKChub2RlJywgc2l0ZScpIGFzIGRzdCkgLT5cbiAgICAgICAgICAgIGxldCBkc3RfcGxhY2UgPSBNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAobm9kZScsIGlkKSwgc2l0ZScgaW5cbiAgICAgICAgICAgIGxldCB3aycnID0gUGF0dGVybi5uZXdfbGluayB3aycgKG5vZGUsIHNpdGVfaWQpIGRzdCBpblxuICAgICAgICAgICAgbGV0IGNfbCcgPVxuICAgICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgaVxuICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvICgocGxhY2UsIHNpdGVfaWQpLCBkc3RfcGxhY2UpKVxuICAgICAgICAgICAgICAgIGNfbFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCB0cmFuc2YnLCBsX3QnID1cbiAgICAgICAgICAgICAgZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24gdHJhbnNmIGxfdCBwbGFjZSBzaXRlX2lkXG4gICAgICAgICAgICAgICAgKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKHBsYWNlLCBzaXRlX2lkKSwgZHN0X3BsYWNlKSxcbiAgICAgICAgICAgICAgICAgIFNvbWUgcG9zIClcbiAgICAgICAgICAgICAgICBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaGFuZGxlX3BvcnRzIHdrJycgKE1vZHMuSW50TWFwLnJlbW92ZSBpIHJfbCkgY19sJyB0cmFuc2YnIGxfdCcgcmVcbiAgICAgICAgICAgICAgYWNjIChzdWNjIHNpdGVfaWQpXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X2ZpbHRlclxuICAgICAgICAgICAgICAgICAoaXNfbGlua2VkX29uX3BvcnQgc2l0ZV9pZCBpKVxuICAgICAgICAgICAgICAgICBhZy5MS2FwcGEucmFfcG9ydHNcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFsgc2l0ZV9pZCcgXVxuICAgICAgICAgICAgKCogbGluayBiZXR3ZWVuIDIgc2l0ZXMgb2YgMSBhZ2VudCAqKVxuICAgICAgICAgICAgICB3aGVuIExpc3QuZm9yX2FsbCAoZnVuIHggLT4gbm90IChpc19saW5rZWRfb24gaSB4KSkgYWNjXG4gICAgICAgICAgICAgICAgICAgJiYgTGlzdC5mb3JfYWxsIChmdW4geCAtPiBub3QgKGlzX2xpbmtlZF9vbiBpIHgpKSByZSAtPlxuICAgICAgICAgICAgICBsZXQgd2snJywgKHRyYW5zZicsIGxfdCcpID1cbiAgICAgICAgICAgICAgICBpZiBzaXRlX2lkJyA+IHNpdGVfaWQgdGhlblxuICAgICAgICAgICAgICAgICAgKCBQYXR0ZXJuLm5ld19saW5rIHdrJyAobm9kZSwgc2l0ZV9pZCkgKG5vZGUsIHNpdGVfaWQnKSxcbiAgICAgICAgICAgICAgICAgICAgZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24gdHJhbnNmIGxfdCBwbGFjZSBzaXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBsYWNlLCBzaXRlX2lkKSwgKHBsYWNlLCBzaXRlX2lkJykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBwb3MgKVxuICAgICAgICAgICAgICAgICAgICAgIHMgKVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIHdrJywgZGVmaW5lX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIHRyYW5zZiBsX3QgcGxhY2Ugc2l0ZV9pZCBzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBjX2wnID1cbiAgICAgICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgaVxuICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG9cbiAgICAgICAgICAgICAgICAgICAgICgocGxhY2UsIHNpdGVfaWQpLCAocGxhY2UsIHNpdGVfaWQnKSkpXG4gICAgICAgICAgICAgICAgICBjX2xcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgaGFuZGxlX3BvcnRzIHdrJycgcl9sIGNfbCcgdHJhbnNmJyBsX3QnIHJlIGFjYyAoc3VjYyBzaXRlX2lkKVxuICAgICAgICAgICAgfCBfIDo6IF8gLT4gbGlua19vY2N1cmVuY2VfZmFpbHVyZSBpIHBvc1xuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAoKiBsaW5rIGJldHdlZW4gMiBhZ2VudHMgKilcbiAgICAgICAgICAgICAgbGV0IHJfbCcgPSBNb2RzLkludE1hcC5hZGQgaSAobm9kZSwgc2l0ZV9pZCkgcl9sIGluXG4gICAgICAgICAgICAgIGxldCB0cmFuc2YnLCBsX3QnID1cbiAgICAgICAgICAgICAgICBkZWZpbmVfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb24gdHJhbnNmIGxfdCBwbGFjZSBzaXRlX2lkIHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIExpc3QucGFydGl0aW9uIChpc19saW5rZWRfb24gaSkgcmUgd2l0aFxuICAgICAgICAgICAgICB8IFtdLCByZScgLT5cbiAgICAgICAgICAgICAgICBpZiBMaXN0X3V0aWwuZXhpc3RzX3VuaXEgKGlzX2xpbmtlZF9vbiBpKSBhY2MgdGhlblxuICAgICAgICAgICAgICAgICAgaGFuZGxlX3BvcnRzIHdrJyByX2wnIGNfbCB0cmFuc2YnIGxfdCcgcmUnIGFjYyAoc3VjYyBzaXRlX2lkKVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUgaSBwb3NcbiAgICAgICAgICAgICAgfCBbIG4gXSwgcmUnXG4gICAgICAgICAgICAgICAgd2hlbiBMaXN0LmZvcl9hbGwgKGZ1biB4IC0+IG5vdCAoaXNfbGlua2VkX29uIGkgeCkpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGhhbmRsZV9wb3J0cyB3aycgcl9sJyBjX2wgdHJhbnNmJyBsX3QnIHJlJyAobiA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICAoc3VjYyBzaXRlX2lkKVxuICAgICAgICAgICAgICB8IF8sIF8gLT4gbGlua19vY2N1cmVuY2VfZmFpbHVyZSBpIHBvcykpKVxuICAgICAgKVxuICAgIGluXG4gICAgaGFuZGxlX3BvcnRzIHdrIHJlZ2lzdGVyZWRfbGlua3MgTW9kcy5JbnRNYXAuZW1wdHkgdHJhbnNmJyBsaW5rc190cmFuc2ZcbiAgICAgIHJlbWFpbnMgYWdfbCAwXG5cbmxldCByZWMgY29tcGxldGVfd2l0aF9jcmVhdGlvbiBzaWdzIChyZW1vdmVkLCBhZGRlZCkgbGlua3NfdHJhbnNmIGNyZWF0ZV9hY3Rpb25zXG4gICAgYWN0aW9ucyBmcmVzaCA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggTW9kcy5JbnRNYXAucm9vdCBsaW5rc190cmFuc2Ygd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgTGlzdC5yZXZfYXBwZW5kIGFjdGlvbnMgY3JlYXRlX2FjdGlvbnMsIChMaXN0LnJldiByZW1vdmVkLCBMaXN0LnJldiBhZGRlZClcbiAgICB8IFNvbWUgKGksIF8pIC0+IGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUgaSBMb2MuZHVtbXkpXG4gIHwgYWcgOjogYWdfbCAtPlxuICAgIGxldCBwbGFjZSA9IE1hdGNoaW5nLkFnZW50LkZyZXNoIChhZy5SYXdfbWl4dHVyZS5hX3R5cGUsIGZyZXNoKSBpblxuICAgIGxldCByZWMgaGFuZGxlX3BvcnRzIGFkZGVkIGxfdCBhY3Rpb25zIGludGYgc2l0ZV9pZCA9XG4gICAgICBpZiBzaXRlX2lkID0gQXJyYXkubGVuZ3RoIGFnLlJhd19taXh0dXJlLmFfcG9ydHMgdGhlbiAoXG4gICAgICAgIGxldCBjcmVhdGVfYWN0aW9ucycgPVxuICAgICAgICAgIEluc3RhbnRpYXRpb24uQ3JlYXRlIChwbGFjZSwgTGlzdC5yZXYgaW50ZikgOjogY3JlYXRlX2FjdGlvbnNcbiAgICAgICAgaW5cbiAgICAgICAgY29tcGxldGVfd2l0aF9jcmVhdGlvbiBzaWdzIChyZW1vdmVkLCBhZGRlZCkgbF90IGNyZWF0ZV9hY3Rpb25zJyBhY3Rpb25zXG4gICAgICAgICAgKHN1Y2MgZnJlc2gpIGFnX2xcbiAgICAgICkgZWxzZSAoXG4gICAgICAgIGxldCBhZGRlZCcsIGFjdGlvbnMnLCBwb2ludCA9XG4gICAgICAgICAgbWF0Y2ggYWcuUmF3X21peHR1cmUuYV9pbnRzLihzaXRlX2lkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFkZGVkLCBhY3Rpb25zLCAoc2l0ZV9pZCwgTm9uZSlcbiAgICAgICAgICB8IFNvbWUgaSAtPlxuICAgICAgICAgICAgKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkIChwbGFjZSwgc2l0ZV9pZCwgaSlcbiAgICAgICAgICAgICAgOjogYWRkZWQsXG4gICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsICgocGxhY2UsIHNpdGVfaWQpLCBpKSA6OiBhY3Rpb25zLFxuICAgICAgICAgICAgICAoc2l0ZV9pZCwgU29tZSBpKSApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhZGRlZCcnLCBhY3Rpb25zJycsIGxfdCcgPVxuICAgICAgICAgIG1hdGNoIGFnLlJhd19taXh0dXJlLmFfcG9ydHMuKHNpdGVfaWQpIHdpdGhcbiAgICAgICAgICB8IFJhd19taXh0dXJlLkZSRUUgLT5cbiAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAocGxhY2UsIHNpdGVfaWQpIDo6IGFkZGVkJyxcbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5GcmVlIChwbGFjZSwgc2l0ZV9pZCkgOjogYWN0aW9ucycsXG4gICAgICAgICAgICAgIGxfdCApXG4gICAgICAgICAgfCBSYXdfbWl4dHVyZS5WQUwgaSAtPlxuICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLnBvcCBpIGxfdCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgZHN0LCBsX3QnIC0+XG4gICAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChwbGFjZSwgc2l0ZV9pZCksIGRzdClcbiAgICAgICAgICAgICAgICA6OiBhZGRlZCcsXG4gICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5CaW5kX3RvICgocGxhY2UsIHNpdGVfaWQpLCBkc3QpXG4gICAgICAgICAgICAgICAgOjogSW5zdGFudGlhdGlvbi5CaW5kX3RvIChkc3QsIChwbGFjZSwgc2l0ZV9pZCkpXG4gICAgICAgICAgICAgICAgOjogYWN0aW9ucycsXG4gICAgICAgICAgICAgICAgbF90JyApXG4gICAgICAgICAgICB8IE5vbmUsIGxfdCAtPlxuICAgICAgICAgICAgICBsZXQgbF90JyA9IE1vZHMuSW50TWFwLmFkZCBpIChwbGFjZSwgc2l0ZV9pZCkgbF90IGluXG4gICAgICAgICAgICAgIGFkZGVkJywgYWN0aW9ucycsIGxfdCcpXG4gICAgICAgIGluXG4gICAgICAgIGhhbmRsZV9wb3J0cyBhZGRlZCcnIGxfdCcgYWN0aW9ucycnIChwb2ludCA6OiBpbnRmKSAoc3VjYyBzaXRlX2lkKVxuICAgICAgKVxuICAgIGluXG4gICAgaGFuZGxlX3BvcnRzXG4gICAgICAoUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBwbGFjZSA6OiBhZGRlZClcbiAgICAgIGxpbmtzX3RyYW5zZiBhY3Rpb25zIFtdIDBcblxubGV0IGluY3Jfb3JpZ2luID0gZnVuY3Rpb25cbiAgfCAoT3BlcmF0b3IuQUxHIF8gfCBPcGVyYXRvci5NT0RJRiBfKSBhcyB4IC0+IHhcbiAgfCBPcGVyYXRvci5SVUxFIGkgLT4gT3BlcmF0b3IuUlVMRSAoc3VjYyBpKVxuXG5sZXQgY29ubmVjdGVkX2NvbXBvbmVudHNfb2ZfbWl4dHVyZSB+ZGVidWdfbW9kZSBjcmVhdGVkIG1peCAoZW52LCBvcmlnaW4pID1cbiAgbGV0IHNpZ3MgPSBQYXR0ZXJuLlByZUVudi5zaWdzIGVudiBpblxuICBsZXQgcmVjIGF1eCBlbnYgdHJhbnNmb3JtYXRpb25zIGluc3RhbnRpYXRpb25zIGxpbmtzX3RyYW5zZiBhY2MgaWQgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGxldCByZW1vdmVkLCBhZGRlZCA9IHRyYW5zZm9ybWF0aW9ucyBpblxuICAgICAgbGV0IGFjdGlvbnMnID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIGFjcyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKChheCwgXykgYXMgeCksICgoYXksIF8pIGFzIHkpKVxuICAgICAgICAgICAgICB3aGVuIE1hdGNoaW5nLkFnZW50LmlzX2ZyZXNoIGF4IHx8IE1hdGNoaW5nLkFnZW50LmlzX2ZyZXNoIGF5IC0+XG4gICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uQmluZF90byAoeCwgeSkgOjogYWNzXG4gICAgICAgICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICh4LCB5KSAtPlxuICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLkJpbmQgKHgsIHkpIDo6IGFjc1xuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIF9cbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyIF9cbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCBfXG4gICAgICAgICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgX1xuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IF8gLT5cbiAgICAgICAgICAgICAgYWNzKVxuICAgICAgICAgIGluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24uYWN0aW9ucyBhZGRlZFxuICAgICAgaW5cbiAgICAgIGxldCB0cmFuc2Zvcm1hdGlvbnMnID0gTGlzdC5yZXYgcmVtb3ZlZCwgTGlzdC5yZXYgYWRkZWQgaW5cbiAgICAgIGxldCBhY3Rpb25zJycsIHRyYW5zZm9ybWF0aW9ucycnID1cbiAgICAgICAgY29tcGxldGVfd2l0aF9jcmVhdGlvbiBzaWdzIHRyYW5zZm9ybWF0aW9ucycgbGlua3NfdHJhbnNmIFtdIGFjdGlvbnMnIDBcbiAgICAgICAgICBjcmVhdGVkXG4gICAgICBpblxuICAgICAgKCAoIG9yaWdpbixcbiAgICAgICAgICBUb29scy5hcnJheV9yZXZfb2ZfbGlzdCBhY2MsXG4gICAgICAgICAgeyBpbnN0YW50aWF0aW9ucyB3aXRoIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGFjdGlvbnMnJyB9LFxuICAgICAgICAgIHRyYW5zZm9ybWF0aW9ucycnICksXG4gICAgICAgIChlbnYsIE9wdGlvbl91dGlsLm1hcCBpbmNyX29yaWdpbiBvcmlnaW4pIClcbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IHdrID0gUGF0dGVybi5iZWdpbl9uZXcgZW52IGluXG4gICAgICBsZXQgaW5zdGFudGlhdGlvbnMnID1cbiAgICAgICAge1xuICAgICAgICAgIEluc3RhbnRpYXRpb24udGVzdHMgPSBbXSA6OiBpbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLnRlc3RzO1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24uYWN0aW9ucztcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmMgPVxuICAgICAgICAgICAgaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjO1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdCA9XG4gICAgICAgICAgICBpbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgPVxuICAgICAgICAgICAgaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHM7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgd2tfb3V0LCAocmVtb3ZlZCwgYWRkZWQpLCBsX3QsIGV2ZW50LCByZW1haW5zID1cbiAgICAgICAgYWRkX2FnZW50c19pbl9jYyBzaWdzIGlkIHdrIE1vZHMuSW50TWFwLmVtcHR5IHRyYW5zZm9ybWF0aW9uc1xuICAgICAgICAgIGxpbmtzX3RyYW5zZiBpbnN0YW50aWF0aW9ucycgdCBbIGggXVxuICAgICAgaW5cbiAgICAgIGxldCBlbnYnLCBpbmosIGNjLCBjY19pZCA9XG4gICAgICAgIFBhdHRlcm4uZmluaXNoX25ldyB+ZGVidWdfbW9kZSA/b3JpZ2luIHdrX291dFxuICAgICAgaW5cbiAgICAgIGxldCBhZGRlZCcgPVxuICAgICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgKFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24ucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluailcbiAgICAgICAgICBhZGRlZFxuICAgICAgaW5cbiAgICAgIGxldCByZW1vdmVkJyA9XG4gICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAoUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qKVxuICAgICAgICAgIHJlbW92ZWRcbiAgICAgIGluXG4gICAgICBsZXQgZXZlbnQnID1cbiAgICAgICAgSW5zdGFudGlhdGlvbi5yZW5hbWVfYWJzdHJhY3RfZXZlbnQgfmRlYnVnX21vZGUgaWQgaW5qIGV2ZW50XG4gICAgICBpblxuICAgICAgbGV0IGxfdCcgPVxuICAgICAgICBNb2RzLkludE1hcC5tYXBcbiAgICAgICAgICAoZnVuICgocCwgcykgYXMgeCkgLT5cbiAgICAgICAgICAgIGxldCBwJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcCBpblxuICAgICAgICAgICAgaWYgcCA9PSBwJyB0aGVuXG4gICAgICAgICAgICAgIHhcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgcCcsIHMpXG4gICAgICAgICAgbF90XG4gICAgICBpblxuICAgICAgYXV4IGVudicgKHJlbW92ZWQnLCBhZGRlZCcpIGV2ZW50JyBsX3QnICgoY2NfaWQsIGNjKSA6OiBhY2MpIChzdWNjIGlkKVxuICAgICAgICByZW1haW5zXG4gIGluXG4gIGF1eCBlbnYgKFtdLCBbXSkgSW5zdGFudGlhdGlvbi5lbXB0eV9ldmVudCBNb2RzLkludE1hcC5lbXB0eSBbXSAwIG1peFxuXG5sZXQgcnVsZV9taXh0dXJlc19vZl9hbWJpZ3VvdXNfcnVsZSBjb250YWN0X21hcCBzaWdzIHByZWNvbXBfbWl4cyA9XG4gIGFkZF9pbXBsaWNpdF9pbmZvcyBzaWdzXG4gICAgKGZpbmRfaW1wbGljaXRfaW5mb3MgY29udGFjdF9tYXBcbiAgICAgICAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBMS2FwcGEuY29weV9ydWxlX2FnZW50IHByZWNvbXBfbWl4cykpKVxuXG5sZXQgY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19ydWxlIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb25cbiAgICBjb250YWN0X21hcCBlbnYgP29yaWdpbiBwcmVjb21wX21peHMgY3JlYXRlZCA9XG4gIGxldCBub0NvdW50ZXJzID0gZGVidWdfbW9kZSBpblxuICBsZXQgc2lncyA9IFBhdHRlcm4uUHJlRW52LnNpZ3MgZW52IGluXG4gIGxldCBhbGxfbWl4cyA9XG4gICAgcnVsZV9taXh0dXJlc19vZl9hbWJpZ3VvdXNfcnVsZSBjb250YWN0X21hcCBzaWdzIHByZWNvbXBfbWl4c1xuICBpblxuICBsZXQgKCkgPVxuICAgIGlmIGNvbXBpbGVfbW9kZV9vbiB0aGVuXG4gICAgICBGb3JtYXQuZXByaW50ZiBcIkBbPHY+X19fX18oJWkpQCwlYUBdQC5cIiAoTGlzdC5sZW5ndGggYWxsX21peHMpXG4gICAgICAgIChQcC5saXN0IFBwLmN1dCAoZnVuIGYgeCAtPlxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhJWFAXVwiXG4gICAgICAgICAgICAgICAoTEthcHBhLnByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXM6dHJ1ZSBjcmVhdGVkKVxuICAgICAgICAgICAgICAgeFxuICAgICAgICAgICAgICAgKFJhd19taXh0dXJlLnByaW50IH5ub0NvdW50ZXJzIH5jcmVhdGVkOnRydWVcbiAgICAgICAgICAgICAgICAgIH5pbml0aWFsX2NvbW1hOih4IDw+IFtdKSB+c2lncylcbiAgICAgICAgICAgICAgIChMaXN0LnJldiBjcmVhdGVkKSkpXG4gICAgICAgIGFsbF9taXhzXG4gIGluXG4gIExpc3RfdXRpbC5mb2xkX3JpZ2h0X21hcFxuICAgIChjb25uZWN0ZWRfY29tcG9uZW50c19vZl9taXh0dXJlIH5kZWJ1Z19tb2RlIGNyZWF0ZWQpXG4gICAgYWxsX21peHMgKGVudiwgb3JpZ2luKVxuXG5sZXQgY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19taXh0dXJlIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb25cbiAgICBjb250YWN0X21hcCBlbnYgP29yaWdpbiBtaXggPVxuICBsZXQgcnVsZXMsIChjY19lbnYsIF8pID1cbiAgICBjb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW1iaWd1b3VzX3J1bGUgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgY29udGFjdF9tYXAgZW52ID9vcmlnaW4gbWl4IFtdXG4gIGluXG4gICggY2NfZW52LFxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgXywgbCwgZXZlbnQsIChbXSwgW10pIC0+IGwsIGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHNcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgIHJ1bGVzIClcblxubGV0IGF1eF9sa2FwcGFfb2ZfcGF0dGVybiBmcmVlX2lkIHAgPVxuICBQYXR0ZXJuLmZvbGRfYnlfdHlwZVxuICAgIChmdW4gfnBvcyB+YWdlbnRfdHlwZSBpbnRmIChhY2MsIGxua19wYWNrKSAtPlxuICAgICAgbGV0IHJhX3BvcnRzID1cbiAgICAgICAgQXJyYXkubWFrZSAoQXJyYXkubGVuZ3RoIGludGYpXG4gICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgICAgIGluXG4gICAgICBsZXQgcmFfaW50cyA9IEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCBpbnRmKSBMS2FwcGEuSV9BTlkgaW5cbiAgICAgIGxldCBvdXQgPVxuICAgICAgICB7XG4gICAgICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZ2VudF90eXBlO1xuICAgICAgICAgIExLYXBwYS5yYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgICAgICBMS2FwcGEucmFfc3ludGF4ID0gTm9uZTtcbiAgICAgICAgICBMS2FwcGEucmFfcG9ydHM7XG4gICAgICAgICAgTEthcHBhLnJhX2ludHM7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgYWNjJyA9IE1vZHMuSW50TWFwLmFkZCBwb3Mgb3V0IGFjYyBpblxuICAgICAgbGV0IGxua19wYWNrJyA9XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAoZnVuIHNpdGUgKChmcmVlX2lkLCBrbm93bl9zcmMpIGFzIHBhY2spIChsaW5rLCBpbnQpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBpZiBpbnQgPD4gLTEgdGhlbiByYV9pbnRzLihzaXRlKSA8LSBMS2FwcGEuSV9WQUxfQ0hBTkdFRCAoaW50LCBpbnQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggbGluayB3aXRoXG4gICAgICAgICAgICB8IFBhdHRlcm4uVW5TcGVjIC0+IHBhY2tcbiAgICAgICAgICAgIHwgUGF0dGVybi5GcmVlIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgcmFfcG9ydHMuKHNpdGUpIDwtXG4gICAgICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIExLYXBwYS5NYWludGFpbmVkXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHBhY2tcbiAgICAgICAgICAgIHwgUGF0dGVybi5MaW5rIChkc3RfYSwgZHN0X3MpIC0+XG4gICAgICAgICAgICAgIGxldCBzcmNfaW5mbyA9IHNpdGUsIGFnZW50X3R5cGUgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50Mk1hcC5maW5kX29wdGlvbiAoZHN0X2EsIGRzdF9zKSBrbm93bl9zcmMgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgKGlkLCBkc3RfaW5mbykgLT5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgcmFfcG9ydHMuKHNpdGUpIDwtXG4gICAgICAgICAgICAgICAgICAgICggTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGlkLCBkc3RfaW5mbykpLFxuICAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkIClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IG91dCBkc3RfYSBhY2MnKS5MS2FwcGEucmFfcG9ydHMuKGRzdF9zKSA8LVxuICAgICAgICAgICAgICAgICAgICAoIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChpZCwgc3JjX2luZm8pKSxcbiAgICAgICAgICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZCApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBwYWNrXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICggc3VjYyBmcmVlX2lkLFxuICAgICAgICAgICAgICAgICAgTW9kcy5JbnQyTWFwLmFkZCAocG9zLCBzaXRlKSAoZnJlZV9pZCwgc3JjX2luZm8pIGtub3duX3NyYyApKSlcbiAgICAgICAgICBsbmtfcGFjayBpbnRmXG4gICAgICBpblxuICAgICAgYWNjJywgbG5rX3BhY2snKVxuICAgIHBcbiAgICAoTW9kcy5JbnRNYXAuZW1wdHksIChmcmVlX2lkLCBNb2RzLkludDJNYXAuZW1wdHkpKVxuXG5sZXQgcmVnaXN0ZXJfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb25zIHNpZ3MgbWl4cyBmcmVlX2lkIHRyYW5zZnMgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gKChmaWQsIGZyKSBhcyBwYWNrKSAtPiBmdW5jdGlvblxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlV2hhdEV2ZXIgX1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkIF9cbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgXykgLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgKE1hdGNoaW5nLkFnZW50LkZyZXNoIChhX3R5cGUsIGlkKSkgLT5cbiAgICAgICAgbGV0IHNpID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYV90eXBlIGluXG4gICAgICAgIGxldCBuID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBSYXdfbWl4dHVyZS5hX3R5cGU7XG4gICAgICAgICAgICBSYXdfbWl4dHVyZS5hX3BvcnRzID0gQXJyYXkubWFrZSBzaSBSYXdfbWl4dHVyZS5GUkVFO1xuICAgICAgICAgICAgUmF3X21peHR1cmUuYV9pbnRzID0gQXJyYXkubWFrZSBzaSBOb25lO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgZmlkLCBNb2RzLkludE1hcC5hZGQgaWQgbiBmclxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoaWQsIF8pLCBjY19pZCksIHMsIGkpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQgbWl4cy4oY2NfaWQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgIChtYXRjaCBhLkxLYXBwYS5yYV9pbnRzLihzKSB3aXRoXG4gICAgICAgICAgICB8IExLYXBwYS5JX0FOWV9DSEFOR0VEIF8gfCBMS2FwcGEuSV9BTllfRVJBU0VEXG4gICAgICAgICAgICB8IExLYXBwYS5JX1ZBTF9FUkFTRUQgXyAtPlxuICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgTEthcHBhLklfVkFMX0NIQU5HRUQgKGosIGspIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoaiA9IGspIGluXG4gICAgICAgICAgICAgIGEuTEthcHBhLnJhX2ludHMuKHMpIDwtIExLYXBwYS5JX1ZBTF9DSEFOR0VEIChqLCBpKVxuICAgICAgICAgICAgfCBMS2FwcGEuSV9BTlkgLT4gYS5MS2FwcGEucmFfaW50cy4ocykgPC0gTEthcHBhLklfQU5ZX0NIQU5HRUQgaSlcbiAgICAgICAgaW5cbiAgICAgICAgcGFja1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkZyZXNoIChfLCBpZCksIHMsIGkpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQgZnIgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+IGEuUmF3X21peHR1cmUuYV9pbnRzLihzKSA8LSBTb21lIGlcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgcGFja1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChNYXRjaGluZy5BZ2VudC5GcmVzaCBfLCBfKSAtPiBmaWQsIGZyXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWRcbiAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKChpZCwgXyksIGNjX2lkKSwgcykgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBtaXhzLihjY19pZCkgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICBsZXQgdGVzdCwgZWRpdCA9IGEuTEthcHBhLnJhX3BvcnRzLihzKSBpblxuICAgICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChlZGl0ID0gTEthcHBhLk1haW50YWluZWQpIGluXG4gICAgICAgICAgICBhLkxLYXBwYS5yYV9wb3J0cy4ocykgPC0gdGVzdCwgTEthcHBhLkZyZWVkXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBwYWNrXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkXG4gICAgICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKChpZDEsIF8pLCBjY19pZDEpLCBzMSksXG4gICAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKChpZDIsIF8pLCBjY19pZDIpLCBzMikgKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkMSBtaXhzLihjY19pZDEpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgbGV0IHRlc3QsIGVkaXQgPSBhLkxLYXBwYS5yYV9wb3J0cy4oczEpIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGVkaXQgPSBMS2FwcGEuTWFpbnRhaW5lZCkgaW5cbiAgICAgICAgICAgIGEuTEthcHBhLnJhX3BvcnRzLihzMSkgPC0gdGVzdCwgTEthcHBhLkxpbmtlZCBmaWRcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQyIG1peHMuKGNjX2lkMikgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICBsZXQgdGVzdCwgZWRpdCA9IGEuTEthcHBhLnJhX3BvcnRzLihzMikgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoZWRpdCA9IExLYXBwYS5NYWludGFpbmVkKSBpblxuICAgICAgICAgICAgYS5MS2FwcGEucmFfcG9ydHMuKHMyKSA8LSB0ZXN0LCBMS2FwcGEuTGlua2VkIGZpZFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgc3VjYyBmaWQsIGZyXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkXG4gICAgICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggKF8sIGlkKSwgczEpLFxuICAgICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoZWlkLCBfKSwgY2NfaWQpLCBzMikgKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICggKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoZWlkLCBfKSwgY2NfaWQpLCBzMiksXG4gICAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggKF8sIGlkKSwgczEpICkgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBmciB3aXRoXG4gICAgICAgICAgfCBTb21lIGEgLT4gYS5SYXdfbWl4dHVyZS5hX3BvcnRzLihzMSkgPC0gUmF3X21peHR1cmUuVkFMIGZpZFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBlaWQgbWl4cy4oY2NfaWQpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgbGV0IHRlc3QsIGVkaXQgPSBhLkxLYXBwYS5yYV9wb3J0cy4oczIpIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGVkaXQgPSBMS2FwcGEuTWFpbnRhaW5lZCkgaW5cbiAgICAgICAgICAgIGEuTEthcHBhLnJhX3BvcnRzLihzMikgPC0gdGVzdCwgTEthcHBhLkxpbmtlZCBmaWRcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIHN1Y2MgZmlkLCBmclxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICggKE1hdGNoaW5nLkFnZW50LkZyZXNoIChfLCBpZDEpLCBzMSksXG4gICAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggKF8sIGlkMiksIHMyKSApIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQxIGZyIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhLlJhd19taXh0dXJlLmFfcG9ydHMuKHMxKSA8LSBSYXdfbWl4dHVyZS5WQUwgZmlkXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkMiBmciB3aXRoXG4gICAgICAgICAgfCBTb21lIGEgLT4gYS5SYXdfbWl4dHVyZS5hX3BvcnRzLihzMikgPC0gUmF3X21peHR1cmUuVkFMIGZpZFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgc3VjYyBmaWQsIGZyKVxuICAgIChmcmVlX2lkLCBNb2RzLkludE1hcC5lbXB0eSlcbiAgICB0cmFuc2ZzXG4gIHw+IHNuZFxuXG5sZXQgYWRkX25lZ2F0aXZlX3RyYW5zZm9ybWF0aW9ucyBzaWdzIG1peHMgdHJhbnNmcyA9XG4gIExpc3QuaXRlclxuICAgIChmdW5jdGlvblxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IChNYXRjaGluZy5BZ2VudC5GcmVzaCBfKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkZyZXNoIF8sIF8pXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgX1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKE1hdGNoaW5nLkFnZW50LkZyZXNoIF8sIF8pLCBfKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoXywgKE1hdGNoaW5nLkFnZW50LkZyZXNoIF8sIF8pKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChNYXRjaGluZy5BZ2VudC5GcmVzaCBfLCBfKSAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyIF9cbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyBfLCBfKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICgoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgXywgXyksIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyBfLCBfKSlcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgXywgXykgLT5cbiAgICAgICAgKClcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAoKGlkLCBfKSwgY2NfaWQpKSAtPlxuICAgICAgICBsZXQgYWcgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIG1peHMuKGNjX2lkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgU29tZSBhIC0+IGFcbiAgICAgICAgaW5cbiAgICAgICAgbWl4cy4oY2NfaWQpIDwtXG4gICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGlkIChMS2FwcGEuYWdlbnRfdG9fZXJhc2VkIHNpZ3MgYWcpIG1peHMuKGNjX2lkKSlcbiAgICB0cmFuc2ZzXG5cbmxldCBsa2FwcGFfb2ZfZWxlbWVudGFyeV9ydWxlIHNpZ3MgZG9tYWluIHIgPVxuICBsZXQgbmJfY2MgPSBBcnJheS5sZW5ndGggci5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzIGluXG4gIGxldCBtaXhzID0gQXJyYXkubWFrZSBuYl9jYyBNb2RzLkludE1hcC5lbXB0eSBpblxuICBsZXQgZnJlZV9pZCA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBjY19pZCBmcmVlX2lkIGNjIC0+XG4gICAgICAgIGxldCBvdXQsIChmcmVlX2lkJywgXykgPVxuICAgICAgICAgIGF1eF9sa2FwcGFfb2ZfcGF0dGVybiBmcmVlX2lkXG4gICAgICAgICAgICAoUGF0dGVybi5FbnYuY29udGVudCAoUGF0dGVybi5FbnYuZ2V0IGRvbWFpbiBjYykpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IG1peHMuKGNjX2lkKSA8LSBvdXQgaW5cbiAgICAgICAgZnJlZV9pZCcpXG4gICAgICAxIHIuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50c1xuICBpblxuICBsZXQgbmV3cyA9XG4gICAgcmVnaXN0ZXJfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb25zIHNpZ3MgbWl4cyBmcmVlX2lkIHIuUHJpbWl0aXZlcy5pbnNlcnRlZFxuICBpblxuICBsZXQgKCkgPSBhZGRfbmVnYXRpdmVfdHJhbnNmb3JtYXRpb25zIHNpZ3MgbWl4cyByLlByaW1pdGl2ZXMucmVtb3ZlZCBpblxuICBsZXQgcl9taXggPVxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhIGIgLT4gTW9kcy5JbnRNYXAuZm9sZCAoZnVuIF8geCBhY2MgLT4geCA6OiBhY2MpIGIgYSlcbiAgICAgIFtdIG1peHNcbiAgICB8PiBMaXN0LnJldlxuICBpblxuICBsZXQgcl9jcmVhdGVkID1cbiAgICBNb2RzLkludE1hcC5mb2xkIChmdW4gXyB4IGFjYyAtPiB4IDo6IGFjYykgbmV3cyBbXSB8PiBMaXN0LnJldlxuICBpblxuICByX21peCwgcl9jcmVhdGVkXG4oKntcbiAgTEthcHBhLnJfbWl4OyBMS2FwcGEucl9jcmVhdGVkOyBMS2FwcGEucl9lZGl0X3N0eWxlID0gdHJ1ZTtcbiAgTEthcHBhLnJfcmF0ZSA9IHIuUHJpbWl0aXZlcy5yYXRlO1xuICBMS2FwcGEucl91bl9yYXRlID0gci5QcmltaXRpdmVzLnVuYXJ5X3JhdGU7XG4gIExLYXBwYS5yX2RlbHRhX3Rva2VucyA9IHIuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnM7XG4gIH0qKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IG9mX3NuYXBzaG90IGcgPVxuICBsZXQgb3V0LCBfID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIG5vZGUgKGFjYywgcGFjaykgYWcgLT5cbiAgICAgICAgbGV0IHJhX3R5cGUgPSBhZy5TbmFwc2hvdC5ub2RlX3R5cGUgaW5cbiAgICAgICAgbGV0IGFyID0gQXJyYXkubGVuZ3RoIGFnLlNuYXBzaG90Lm5vZGVfc2l0ZXMgaW5cbiAgICAgICAgbGV0IHJhX3BvcnRzID1cbiAgICAgICAgICBBcnJheS5tYWtlIGFyIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIExLYXBwYS5NYWludGFpbmVkKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmFfaW50cyA9IEFycmF5Lm1ha2UgYXIgTEthcHBhLklfQU5ZIGluXG4gICAgICAgIGxldCBwYWNrJyA9XG4gICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgKGZ1biBpZCAoKGRhbmdsaW5nLCBmcmVlX2lkKSBhcyBwYWNrKSBwIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcC5TbmFwc2hvdC5zaXRlX3N0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICAgICB8IFNvbWUgaSAtPiByYV9pbnRzLihpZCkgPC0gTEthcHBhLklfVkFMX0NIQU5HRUQgKGksIGkpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIHAuU25hcHNob3Quc2l0ZV9saW5rIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHBhY2tcbiAgICAgICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnQyTWFwLnBvcCBzIGRhbmdsaW5nIHdpdGhcbiAgICAgICAgICAgICAgICB8IFNvbWUgdmEsIGRhbmdsaW5nJyAtPlxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgcmFfcG9ydHMuKGlkKSA8LVxuICAgICAgICAgICAgICAgICAgICAgICggTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKHZhLCAoLTEsIC0xKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgTEthcHBhLk1haW50YWluZWQgKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGRhbmdsaW5nJywgZnJlZV9pZFxuICAgICAgICAgICAgICAgIHwgTm9uZSwgZGFuZ2xpbmcnIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICByYV9wb3J0cy4oaWQpIDwtXG4gICAgICAgICAgICAgICAgICAgICAgKCBMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTEthcHBhLkxOS19WQUxVRSAoZnJlZV9pZCwgKC0xLCAtMSkpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkIClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBNb2RzLkludDJNYXAuYWRkIChub2RlLCBpZCkgZnJlZV9pZCBkYW5nbGluZycsIHN1Y2MgZnJlZV9pZCkpXG4gICAgICAgICAgICBwYWNrIGFnLlNuYXBzaG90Lm5vZGVfc2l0ZXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJhID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBMS2FwcGEucmFfdHlwZTtcbiAgICAgICAgICAgIHJhX2VyYXNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgcmFfcG9ydHM7XG4gICAgICAgICAgICByYV9pbnRzO1xuICAgICAgICAgICAgcmFfc3ludGF4ID0gU29tZSAoQXJyYXkuY29weSByYV9wb3J0cywgQXJyYXkuY29weSByYV9pbnRzKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIHJhIDo6IGFjYywgcGFjaycpXG4gICAgICAoW10sIChNb2RzLkludDJNYXAuZW1wdHksIDEpKVxuICAgICAgZ1xuICBpblxuICBvdXRcblxubGV0IHBhdHRlcm5zX29mX21peHR1cmUgfmRlYnVnX21vZGUgY29udGFjdF9tYXAgc2lncyBwcmVfZW52IGUgPVxuICBsZXQgc25hcCA9IEVkZ2VzLmJ1aWxkX3NuYXBzaG90IH5yYXc6ZmFsc2Ugc2lncyBlIGluXG4gIGxldCBwcmVfZW52JywgYWNjID1cbiAgICBTbmFwc2hvdC5mb2xkXG4gICAgICAoZnVuIChjY19jYWNoZSwgYWNjKSBpIG0gLT5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBQYXR0ZXJuX2NvbXBpbGVyLmNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfbWl4dHVyZVxuICAgICAgICAgICAgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbjpmYWxzZSBjb250YWN0X21hcCBjY19jYWNoZVxuICAgICAgICAgICAgKG9mX3NuYXBzaG90IG0pXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBjY19jYWNoZScsIFsgKFt8IChfLCB4KSB8XSwgXykgXSAtPlxuICAgICAgICAgIGNjX2NhY2hlJywgVG9vbHMucmVjdGkgKGZ1biBhIF8gLT4geCA6OiBhKSBhY2MgaVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgKHByZV9lbnYsIFtdKSBzbmFwXG4gIGluXG4gIHByZV9lbnYnLCBhY2NcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHtcbiAgZmlsZW5hbWVzOiBzdHJpbmcgbGlzdDtcbiAgZG9tYWluOiBQYXR0ZXJuLkVudi50O1xuICB0b2tlbnM6IHVuaXQgTmFtZWREZWNscy50O1xuICBhbGdzOiBQcmltaXRpdmVzLmFsZ19leHByIExvYy5hbm5vdGVkIE5hbWVkRGVjbHMudDtcbiAgb2JzZXJ2YWJsZXM6IFByaW1pdGl2ZXMuYWxnX2V4cHIgTG9jLmFubm90ZWQgYXJyYXk7XG4gIGFzdF9ydWxlczogKHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gKiBMS2FwcGEucnVsZSBMb2MuYW5ub3RlZCkgYXJyYXk7XG4gIHJ1bGVzOiBQcmltaXRpdmVzLmVsZW1lbnRhcnlfcnVsZSBhcnJheTtcbiAgaW50ZXJ2ZW50aW9uczogUHJpbWl0aXZlcy5wZXJ0dXJiYXRpb24gYXJyYXk7XG4gIGRlcGVuZGVuY2llc19pbl90aW1lOiBPcGVyYXRvci5EZXBTZXQudDtcbiAgZGVwZW5kZW5jaWVzX2luX2V2ZW50OiBPcGVyYXRvci5EZXBTZXQudDtcbiAgYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llczogT3BlcmF0b3IuRGVwU2V0LnQgYXJyYXk7XG4gIHRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llczogT3BlcmF0b3IuRGVwU2V0LnQgYXJyYXk7XG4gIGNvbnRhY3RfbWFwOiBDb250YWN0X21hcC50O1xufVxuXG5sZXQgaW5pdCB+ZmlsZW5hbWVzIGRvbWFpbiB0b2tlbnMgYWxncyAoZGVwc19pbl90LCBkZXBzX2luX2UsIHRva19yZCwgYWxnX3JkKVxuICAgIChhc3RfcnVsZXMsIHJ1bGVzKSBvYnNlcnZhYmxlcyBpbnRlcnZlbnRpb25zIGNvbnRhY3RfbWFwID1cbiAge1xuICAgIGZpbGVuYW1lcztcbiAgICBkb21haW47XG4gICAgdG9rZW5zO1xuICAgIGFzdF9ydWxlcztcbiAgICBydWxlcztcbiAgICBhbGdzO1xuICAgIG9ic2VydmFibGVzO1xuICAgIGFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgPSBhbGdfcmQ7XG4gICAgdG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzID0gdG9rX3JkO1xuICAgIGRlcGVuZGVuY2llc19pbl90aW1lID0gZGVwc19pbl90O1xuICAgIGRlcGVuZGVuY2llc19pbl9ldmVudCA9IGRlcHNfaW5fZTtcbiAgICBpbnRlcnZlbnRpb25zO1xuICAgIGNvbnRhY3RfbWFwO1xuICB9XG5cbmxldCBkZWNvbnN0cnVjdCBlbnYgPVxuICAoIGVudi5maWxlbmFtZXMsXG4gICAgZW52LmRvbWFpbixcbiAgICBlbnYudG9rZW5zLFxuICAgIGVudi5hbGdzLFxuICAgICggZW52LmRlcGVuZGVuY2llc19pbl90aW1lLFxuICAgICAgZW52LmRlcGVuZGVuY2llc19pbl9ldmVudCxcbiAgICAgIGVudi50b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXMsXG4gICAgICBlbnYuYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llcyApLFxuICAgIChlbnYuYXN0X3J1bGVzLCBlbnYucnVsZXMpLFxuICAgIGVudi5vYnNlcnZhYmxlcyxcbiAgICBlbnYuaW50ZXJ2ZW50aW9ucyxcbiAgICBlbnYuY29udGFjdF9tYXAgKVxuXG5sZXQgZG9tYWluIGVudiA9IGVudi5kb21haW5cbmxldCBnZXRfb2JzIGVudiA9IGVudi5vYnNlcnZhYmxlc1xubGV0IGdldF9ydWxlcyBlbnYgPSBlbnYucnVsZXNcbmxldCBuZXdfZG9tYWluIGRvbWFpbiBlbnYgPSB7IGVudiB3aXRoIGRvbWFpbiB9XG5sZXQgc2lnbmF0dXJlcyBlbnYgPSBQYXR0ZXJuLkVudi5zaWduYXR1cmVzIGVudi5kb21haW5cbmxldCB0b2tlbnNfZmluZGVyIGVudiA9IGVudi50b2tlbnMuTmFtZWREZWNscy5maW5kZXJcbmxldCBhbGdzX2ZpbmRlciBlbnYgPSBlbnYuYWxncy5OYW1lZERlY2xzLmZpbmRlclxubGV0IGNvbnRhY3RfbWFwIGVudiA9IGVudi5jb250YWN0X21hcFxubGV0IG51bV9vZl9hZ2VudCBubWUgZW52ID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBubWUgKHNpZ25hdHVyZXMgZW52KVxuXG5sZXQgZm9sZF9ydWxlcyBmIHggZW52ID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aSAoZnVuIGkgeCBydWxlIC0+IGYgaSB4IHJ1bGUpIHggZW52LnJ1bGVzXG5cbmxldCBmb2xkX3BlcnR1cmJhdGlvbnMgZiB4IGVudiA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgKGZ1biBpIHggcCAtPiBmIGkgeCBwKSB4IGVudi5pbnRlcnZlbnRpb25zXG5cbmxldCBnZXRfcnVsZSBlbnYgaSA9IGVudi5ydWxlcy4oaSlcbmxldCBnZXRfYXN0X3J1bGVfd2l0aF9sYWJlbCBlbnYgaSA9IGVudi5hc3RfcnVsZXMuKGkgLSAxKVxubGV0IGdldF9hc3RfcnVsZSBlbnYgaSA9IGZzdCAoc25kIChnZXRfYXN0X3J1bGVfd2l0aF9sYWJlbCBlbnYgaSkpXG5cbmxldCBmb2xkX2FzdF9ydWxlcyBmIHggZW52ID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaSB4IChfLCBfcnVsZSkgLT5cbiAgICAgIGxldCBsa2FwcGFfcnVsZSA9IGdldF9hc3RfcnVsZSBlbnYgaSBpblxuICAgICAgZiBpIHggbGthcHBhX3J1bGUpXG4gICAgeCBlbnYuYXN0X3J1bGVzXG5cbmxldCBnZXRfYXN0X3J1bGVfcmF0ZV9wb3MgfnVuYXJ5IGVudiBpID1cbiAgaWYgdW5hcnkgdGhlbiAoXG4gICAgbWF0Y2ggKGZzdCAoc25kIGVudi5hc3RfcnVsZXMuKGkgLSAxKSkpLkxLYXBwYS5yX3VuX3JhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIk5vIHVuYXJ5IHJhdGUgdG8gZ2V0IHBvc2l0aW9uIG9mXCJcbiAgICB8IFNvbWUgKChfLCBwb3MpLCBfKSAtPiBwb3NcbiAgKSBlbHNlXG4gICAgc25kIChmc3QgKHNuZCBlbnYuYXN0X3J1bGVzLihpIC0gMSkpKS5MS2FwcGEucl9yYXRlXG5cbmxldCBuYl9ydWxlcyBlbnYgPSBBcnJheS5sZW5ndGggZW52LnJ1bGVzXG5cbmxldCBudW1zX29mX3J1bGUgbmFtZSBlbnYgPVxuICBmb2xkX3J1bGVzXG4gICAgKGZ1biBpIGFjYyByIC0+XG4gICAgICBtYXRjaCBlbnYuYXN0X3J1bGVzLihwcmVkIHIuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZSkgd2l0aFxuICAgICAgfCBTb21lICh4LCBfKSwgXyAtPlxuICAgICAgICBpZiB4ID0gbmFtZSB0aGVuXG4gICAgICAgICAgaSA6OiBhY2NcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFjY1xuICAgICAgfCBOb25lLCBfIC0+IGFjYylcbiAgICBbXSBlbnZcblxubGV0IG5iX3N5bnRhY3RpY19ydWxlcyBlbnYgPSBBcnJheS5sZW5ndGggZW52LmFzdF9ydWxlc1xubGV0IG51bV9vZl9hbGcgcyBlbnYgPSBOYW1lZERlY2xzLmVsdF9pZCB+a2luZDpcInZhcmlhYmxlXCIgZW52LmFsZ3Mgc1xubGV0IGdldF9hbGcgZW52IGkgPSBmc3QgQEAgTmFtZWREZWNscy5lbHRfdmFsIGVudi5hbGdzIGlcbmxldCBnZXRfYWxncyBlbnYgPSBlbnYuYWxncy5OYW1lZERlY2xzLmRlY2xzXG5sZXQgbmJfYWxncyBlbnYgPSBOYW1lZERlY2xzLnNpemUgZW52LmFsZ3NcbmxldCBudW1fb2ZfdG9rZW4gc3RyIGVudiA9IE5hbWVkRGVjbHMuZWx0X2lkIH5raW5kOlwidG9rZW5cIiBlbnYudG9rZW5zIHN0clxubGV0IG5iX3Rva2VucyBlbnYgPSBOYW1lZERlY2xzLnNpemUgZW52LnRva2Vuc1xubGV0IGdldF9wZXJ0dXJiYXRpb24gZW52IGkgPSBlbnYuaW50ZXJ2ZW50aW9ucy4oaSlcbmxldCBuYl9wZXJ0dXJiYXRpb25zIGVudiA9IEFycmF5Lmxlbmd0aCBlbnYuaW50ZXJ2ZW50aW9uc1xubGV0IGdldF9hbGdfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgZW52IGkgPSBlbnYuYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llcy4oaSlcbmxldCBnZXRfdG9rZW5fcmV2ZXJzZV9kZXBlbmRlbmNpZXMgZW52IGkgPSBlbnYudG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzLihpKVxuXG5sZXQgYWxsX2RlcGVuZGVuY2llcyBlbnYgPVxuICAoIGVudi5kZXBlbmRlbmNpZXNfaW5fdGltZSxcbiAgICBlbnYuZGVwZW5kZW5jaWVzX2luX2V2ZW50LFxuICAgIGVudi50b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXMsXG4gICAgZW52LmFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgKVxuXG5sZXQgcHJpbnRfYWdlbnQgP2VudiBmIGkgPVxuICBtYXRjaCBlbnYgd2l0aFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIl9fYWdlbnRfJWlcIiBpXG4gIHwgU29tZSBlbnYgLT4gU2lnbmF0dXJlLnByaW50X2FnZW50IChzaWduYXR1cmVzIGVudikgZiBpXG5cbmxldCBwcmludF9hbGcgP2VudiBmIGlkID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJfX2FsZ18laVwiIGlkXG4gIHwgU29tZSBlbnYgLT5cbiAgICBsZXQgbmFtZSA9IE5hbWVkRGVjbHMuZWx0X25hbWUgZW52LmFsZ3MgaWQgaW5cbiAgICBsZXQgc3BlY2lhbCA9IFRvb2xzLm5vdF9hbl9pZCBuYW1lIGluXG4gICAgbGV0ICgpID0gaWYgc3BlY2lhbCB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIidcIiBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBuYW1lIGluXG4gICAgaWYgc3BlY2lhbCB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIidcIlxuXG5sZXQgcHJpbnRfdG9rZW4gP2VudiBmIGlkID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJfX3Rva2VuXyVpXCIgaWRcbiAgfCBTb21lIGVudiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJXNcIiAoTmFtZWREZWNscy5lbHRfbmFtZSBlbnYudG9rZW5zIGlkKVxuXG5sZXQgcHJpbnRfYXN0X3J1bGUgfm5vQ291bnRlcnMgP2VudiBmIGkgPVxuICBtYXRjaCBlbnYgd2l0aFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIl9fYXN0X3J1bGVfJWlcIiBpXG4gIHwgU29tZSBlbnYgLT5cbiAgICBsZXQgc2lncyA9IHNpZ25hdHVyZXMgZW52IGluXG4gICAgaWYgaSA9IDAgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiSW50ZXJ2ZW50aW9uc1wiXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBlbnYuYXN0X3J1bGVzLihwcmVkIGkpIHdpdGhcbiAgICAgIHwgU29tZSAobmEsIF8pLCBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBuYVxuICAgICAgfCBOb25lLCAociwgXykgLT5cbiAgICAgICAgTEthcHBhLnByaW50X3J1bGUgfm5vQ291bnRlcnMgfmZ1bGw6ZmFsc2Ugc2lncyAocHJpbnRfdG9rZW4gfmVudilcbiAgICAgICAgICAocHJpbnRfYWxnIH5lbnYpIGYgclxuICAgIClcblxubGV0IHByaW50X3J1bGUgfm5vQ291bnRlcnMgP2VudiBmIGlkID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJfX3J1bGVfJWlcIiBpZFxuICB8IFNvbWUgZW52IC0+XG4gICAgcHJpbnRfYXN0X3J1bGUgfm5vQ291bnRlcnMgfmVudiBmIGVudi5ydWxlcy4oaWQpLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGVcblxubGV0IG1hcF9vYnNlcnZhYmxlcyBmIGVudiA9IEFycmF5Lm1hcCAoZnVuICh4LCBfKSAtPiBmIHgpIGVudi5vYnNlcnZhYmxlc1xuXG5sZXQgcHJpbnRfa2FwcGEgfm5vQ291bnRlcnMgcHJfYWxnID9wcl9ydWxlIHByX3BlcnQgZiBlbnYgPVxuICBsZXQgc2lncyA9IHNpZ25hdHVyZXMgZW52IGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQCwlYSV0QCwlYSV0JWFALCV0JXQlYUBdXCJcbiAgICAoQ29udGFjdF9tYXAucHJpbnRfa2FwcGEgfm5vQ291bnRlcnMgc2lncylcbiAgICBlbnYuY29udGFjdF9tYXBcbiAgICAoTmFtZWREZWNscy5wcmludCB+c2VwOlBwLnNwYWNlIChmdW4gXyBuIGYgKCkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJXRva2VuOiAlc1wiIG4pKVxuICAgIGVudi50b2tlbnNcbiAgICAoZnVuIGYgLT4gaWYgZW52LnRva2Vucy5OYW1lZERlY2xzLmRlY2xzIDw+IFt8fF0gdGhlbiBQcC5zcGFjZSBmKVxuICAgIChOYW1lZERlY2xzLnByaW50IH5zZXA6UHAuc3BhY2UgKGZ1biBpIG4gZiAoZSwgXykgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiUldmFyOi8qJWkqLyAnJXMnICVhQF1cIiBpIG4gKHByX2FsZyBlbnYpIGUpKVxuICAgIGVudi5hbGdzXG4gICAgKGZ1biBmIC0+IGlmIGVudi5hbGdzLk5hbWVkRGVjbHMuZGVjbHMgPD4gW3x8XSB0aGVuIFBwLnNwYWNlIGYpXG4gICAgKFBwLmFycmF5IFBwLnNwYWNlIH50cmFpbGluZzpQcC5zcGFjZSAoZnVuIF8gZiAoZSwgXykgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiUlcGxvdDogJWFAXVwiIChwcl9hbGcgZW52KSBlKSlcbiAgICBlbnYub2JzZXJ2YWJsZXNcbiAgICAoZnVuIGYgLT5cbiAgICAgIG1hdGNoIHByX3J1bGUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIFBwLmFycmF5IFBwLnNwYWNlIH50cmFpbGluZzpQcC5zcGFjZVxuICAgICAgICAgIChmdW4gXyBmIChuYSwgKGUsIF8pKSAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhJWFcIlxuICAgICAgICAgICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiAobmEsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiclcycgXCIgbmEpKVxuICAgICAgICAgICAgICBuYVxuICAgICAgICAgICAgICAoTEthcHBhLnByaW50X3J1bGUgfm5vQ291bnRlcnMgfmZ1bGw6dHJ1ZSBzaWdzIChwcmludF90b2tlbiB+ZW52KVxuICAgICAgICAgICAgICAgICAocHJpbnRfYWxnIH5lbnYpKVxuICAgICAgICAgICAgICBlKVxuICAgICAgICAgIGYgZW52LmFzdF9ydWxlc1xuICAgICAgfCBTb21lIHByX3J1bGUgLT5cbiAgICAgICAgUHAuYXJyYXkgUHAuc3BhY2UgfnRyYWlsaW5nOlBwLnNwYWNlXG4gICAgICAgICAgKGZ1biBfIGYgciAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFs8Mj4lYUBdXCIgKHByX3J1bGUgZW52KSByKVxuICAgICAgICAgIGYgZW52LnJ1bGVzKVxuICAgIChmdW4gZiAtPiBpZiBlbnYuaW50ZXJ2ZW50aW9ucyA8PiBbfHxdIHRoZW4gUHAuc3BhY2UgZilcbiAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBpIGYgcCAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+LyolaSovJWFAXVwiIGkgKHByX3BlcnQgZW52KSBwKSlcbiAgICBlbnYuaW50ZXJ2ZW50aW9uc1xuXG5sZXQgcHJpbnQgfm5vQ291bnRlcnMgcHJfYWxnIHByX3J1bGUgcHJfcGVydCBmIGVudiA9XG4gIGxldCAoKSA9IHByaW50X2thcHBhIH5ub0NvdW50ZXJzIHByX2FsZyBwcl9wZXJ0IGYgZW52IGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJALEBbPHY+QFs8diAyPlJ1bGVzOkAsJWFAXUBdXCJcbiAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBpIGYgciAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPDI+JWk6QCAlYUBdXCIgaSAocHJfcnVsZSBlbnYpIHIpKVxuICAgIGVudi5ydWxlc1xuXG5sZXQgY2hlY2tfaWZfY291bnRlcl9pc19maWxsZWRfZW5vdWdoIHggPVxuICBpZlxuICAgIG5vdFxuICAgIEBAIFByaW1pdGl2ZXMuZXhpc3RzX21vZGlmaWNhdGlvblxuICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgUHJpbWl0aXZlcy5TVE9QIF8gLT4gdHJ1ZVxuICAgICAgICAgICB8IFByaW1pdGl2ZXMuSVRFUl9SVUxFIF8gfCBQcmltaXRpdmVzLlVQREFURSBfXG4gICAgICAgICAgIHwgUHJpbWl0aXZlcy5TTkFQU0hPVCBfIHwgUHJpbWl0aXZlcy5DRkxPVyBfIHwgUHJpbWl0aXZlcy5ESU4gX1xuICAgICAgICAgICB8IFByaW1pdGl2ZXMuRElOT0ZGIF8gfCBQcmltaXRpdmVzLkNGTE9XT0ZGIF8gfCBQcmltaXRpdmVzLlBMT1RFTlRSWVxuICAgICAgICAgICB8IFByaW1pdGl2ZXMuUFJJTlQgXyB8IFByaW1pdGl2ZXMuU1BFQ0lFUyBfXG4gICAgICAgICAgIHwgUHJpbWl0aXZlcy5TUEVDSUVTX09GRiBfIC0+XG4gICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICB4LmludGVydmVudGlvbnNcbiAgdGhlblxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiVGhlcmUgaXMgbm8gd2F5IGZvciB0aGUgc2ltdWxhdGlvbiB0byBzdG9wLlwiKSlcblxubGV0IG92ZXJ3cml0ZV92YXJzIGFsZ19vdmVyd3JpdGUgZW52ID1cbiAgbGV0IGFsZ3MnID1cbiAgICBBcnJheS5tYXBcbiAgICAgIChmdW4gKHgsIHkpIC0+IExvYy5hbm5vdF93aXRoX2R1bW15IHgsIHkpXG4gICAgICBlbnYuYWxncy5OYW1lZERlY2xzLmRlY2xzXG4gIGluXG4gIGxldCAoKSA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIChpLCB2KSAtPiBhbGdzJy4oaSkgPC0gZnN0IGFsZ3MnLihpKSwgTG9jLmFubm90X3dpdGhfZHVtbXkgdilcbiAgICAgIGFsZ19vdmVyd3JpdGVcbiAgaW5cbiAgeyBlbnYgd2l0aCBhbGdzID0gTmFtZWREZWNscy5jcmVhdGUgYWxncycgfVxuXG5sZXQgZm9sZF9hbGdfZXhwciBmX2FsZyBmX2Jvb2wgeCBlbnYgPVxuICBsZXQgeDEgPVxuICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIGFjYyAoXywgeSkgLT4gZl9hbGcgYWNjIHkpIHggZW52LmFsZ3MuTmFtZWREZWNscy5kZWNsc1xuICBpblxuICBsZXQgeDIgPSBBcnJheS5mb2xkX2xlZnQgZl9hbGcgeDEgZW52Lm9ic2VydmFibGVzIGluXG4gIGxldCB4MyA9IEFycmF5LmZvbGRfbGVmdCAoUHJpbWl0aXZlcy5mb2xkX2V4cHJfcnVsZSBmX2FsZykgeDIgZW52LnJ1bGVzIGluXG4gIEFycmF5LmZvbGRfbGVmdFxuICAgIChQcmltaXRpdmVzLmZvbGRfZXhwcl9wZXJ0dXJiYXRpb24gZl9hbGcgZl9ib29sKVxuICAgIHgzIGVudi5pbnRlcnZlbnRpb25zXG5cbmxldCBmb2xkX21peHR1cmVfaW5fZXhwciBmID1cbiAgZm9sZF9hbGdfZXhwciAoQWxnX2V4cHIuZm9sZF9vbl9taXh0dXJlIGYpIChBbGdfZXhwci5mb2xkX2Jvb2xfb25fbWl4dHVyZSBmKVxuXG5sZXQgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgfmFsZ19vdmVyd3JpdGUgeCA9XG4gIGxldCBhbGdzJyA9XG4gICAgQXJyYXkubWFwIChmdW4gKHgsIHkpIC0+IExvYy5hbm5vdF93aXRoX2R1bW15IHgsIHkpIHguYWxncy5OYW1lZERlY2xzLmRlY2xzXG4gIGluXG4gIGxldCAoKSA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIChpLCB2KSAtPiBhbGdzJy4oaSkgPC0gZnN0IGFsZ3MnLihpKSwgTG9jLmFubm90X3dpdGhfZHVtbXkgdilcbiAgICAgIGFsZ19vdmVyd3JpdGVcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBBcnJheS5pdGVyaVxuICAgICAgKGZ1biBpIChuYSwgdikgLT5cbiAgICAgICAgYWxncycuKGkpIDwtXG4gICAgICAgICAgKCBuYSxcbiAgICAgICAgICAgIEFsZ19leHByLnByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHNcbiAgICAgICAgICAgICAgfnVwZGF0ZWRfdmFycyB+dmFyczphbGdzJyB2ICkpXG4gICAgICBhbGdzJ1xuICBpblxuICB7XG4gICAgZmlsZW5hbWVzID0geC5maWxlbmFtZXM7XG4gICAgZG9tYWluID0geC5kb21haW47XG4gICAgdG9rZW5zID0geC50b2tlbnM7XG4gICAgYWxncyA9IE5hbWVkRGVjbHMuY3JlYXRlIGFsZ3MnO1xuICAgIG9ic2VydmFibGVzID1cbiAgICAgIEFycmF5Lm1hcFxuICAgICAgICAoQWxnX2V4cHIucHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50c1xuICAgICAgICAgICB+dXBkYXRlZF92YXJzIH52YXJzOmFsZ3MnKVxuICAgICAgICB4Lm9ic2VydmFibGVzO1xuICAgIGFzdF9ydWxlcyA9IHguYXN0X3J1bGVzO1xuICAgIHJ1bGVzID1cbiAgICAgIEFycmF5Lm1hcFxuICAgICAgICAoUHJpbWl0aXZlcy5tYXBfZXhwcl9ydWxlXG4gICAgICAgICAgIChBbGdfZXhwci5wcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzXG4gICAgICAgICAgICAgIH51cGRhdGVkX3ZhcnMgfnZhcnM6YWxncycpKVxuICAgICAgICB4LnJ1bGVzO1xuICAgIGludGVydmVudGlvbnMgPVxuICAgICAgQXJyYXkubWFwXG4gICAgICAgIChQcmltaXRpdmVzLm1hcF9leHByX3BlcnR1cmJhdGlvblxuICAgICAgICAgICAoQWxnX2V4cHIucHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50c1xuICAgICAgICAgICAgICB+dXBkYXRlZF92YXJzIH52YXJzOmFsZ3MnKVxuICAgICAgICAgICAoQWxnX2V4cHIucHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzXG4gICAgICAgICAgICAgIH51cGRhdGVkX3ZhcnMgfnZhcnM6YWxncycpKVxuICAgICAgICB4LmludGVydmVudGlvbnM7XG4gICAgZGVwZW5kZW5jaWVzX2luX3RpbWUgPSB4LmRlcGVuZGVuY2llc19pbl90aW1lO1xuICAgIGRlcGVuZGVuY2llc19pbl9ldmVudCA9IHguZGVwZW5kZW5jaWVzX2luX2V2ZW50O1xuICAgIGFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgPSB4LmFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXM7XG4gICAgdG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzID0geC50b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXM7XG4gICAgY29udGFjdF9tYXAgPSB4LmNvbnRhY3RfbWFwO1xuICB9XG5cbmxldCBrYXBwYV9pbnN0YW5jZV90b195b2pzb24gPVxuICBKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbilcblxubGV0IHRvX3lvanNvbiBlbnYgPVxuICBsZXQgZmlsZXMgPVxuICAgIEFycmF5Lm9mX2xpc3QgKExleGluZy5kdW1teV9wb3MuTGV4aW5nLnBvc19mbmFtZSA6OiBlbnYuZmlsZW5hbWVzKVxuICBpblxuICBsZXQgZmlsZW5hbWVzID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIGkgbWFwIHggLT4gTW9kcy5TdHJpbmdNYXAuYWRkIHggaSBtYXApXG4gICAgICBNb2RzLlN0cmluZ01hcC5lbXB0eSBmaWxlc1xuICBpblxuICBgQXNzb2NcbiAgICBbXG4gICAgICBcImZpbGVuYW1lc1wiLCBKc29uVXRpbC5vZl9hcnJheSBKc29uVXRpbC5vZl9zdHJpbmcgZmlsZXM7XG4gICAgICBcInVwZGF0ZVwiLCBQYXR0ZXJuLkVudi50b195b2pzb24gKGRvbWFpbiBlbnYpO1xuICAgICAgXCJ0b2tlbnNcIiwgTmFtZWREZWNscy50b19qc29uIChmdW4gKCkgLT4gYE51bGwpIGVudi50b2tlbnM7XG4gICAgICAoIFwiYWxnc1wiLFxuICAgICAgICBOYW1lZERlY2xzLnRvX2pzb25cbiAgICAgICAgICAoZnVuICh4LCBfKSAtPlxuICAgICAgICAgICAgQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBrYXBwYV9pbnN0YW5jZV90b195b2pzb25cbiAgICAgICAgICAgICAgSnNvblV0aWwub2ZfaW50IHgpXG4gICAgICAgICAgZW52LmFsZ3MgKTtcbiAgICAgICggXCJvYnNlcnZhYmxlc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biAoeCwgXykgbCAtPlxuICAgICAgICAgICAgICAgQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBrYXBwYV9pbnN0YW5jZV90b195b2pzb25cbiAgICAgICAgICAgICAgICAgSnNvblV0aWwub2ZfaW50IHhcbiAgICAgICAgICAgICAgIDo6IGwpXG4gICAgICAgICAgICAgZW52Lm9ic2VydmFibGVzIFtdKSApO1xuICAgICAgKCBcImFzdF9ydWxlc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biAobiwgKHIsIF8pKSBsIC0+XG4gICAgICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIG4gd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBgTnVsbFxuICAgICAgICAgICAgICAgICAgIHwgU29tZSAobiwgXykgLT4gYFN0cmluZyBuKTtcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucnVsZV90b19qc29uIH5maWxlbmFtZXMgcjtcbiAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgOjogbClcbiAgICAgICAgICAgICBlbnYuYXN0X3J1bGVzIFtdKSApO1xuICAgICAgKCBcImVsZW1lbnRhcnlfcnVsZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfYXJyYXkgKFByaW1pdGl2ZXMucnVsZV90b195b2pzb24gfmZpbGVuYW1lcykgZW52LnJ1bGVzICk7XG4gICAgICBcImNvbnRhY3RfbWFwXCIsIENvbnRhY3RfbWFwLnRvX3lvanNvbiBlbnYuY29udGFjdF9tYXA7XG4gICAgICAoIFwiaW50ZXJ2ZW50aW9uc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9hcnJheVxuICAgICAgICAgIChQcmltaXRpdmVzLnBlcnR1cmJhdGlvbl90b195b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICBlbnYuaW50ZXJ2ZW50aW9ucyApO1xuICAgICAgXCJkZXBlbmRlbmNpZXNfaW5fdGltZVwiLCBPcGVyYXRvci5kZXBzZXRfdG9feW9qc29uIGVudi5kZXBlbmRlbmNpZXNfaW5fdGltZTtcbiAgICAgICggXCJkZXBlbmRlbmNpZXNfaW5fZXZlbnRcIixcbiAgICAgICAgT3BlcmF0b3IuZGVwc2V0X3RvX3lvanNvbiBlbnYuZGVwZW5kZW5jaWVzX2luX2V2ZW50ICk7XG4gICAgICAoIFwiYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9hcnJheSBPcGVyYXRvci5kZXBzZXRfdG9feW9qc29uXG4gICAgICAgICAgZW52LmFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgKTtcbiAgICAgICggXCJ0b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfYXJyYXkgT3BlcmF0b3IuZGVwc2V0X3RvX3lvanNvblxuICAgICAgICAgIGVudi50b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgKTtcbiAgICBdXG5cbmxldCBrYXBwYV9pbnN0YW5jZV9vZl95b2pzb24gPVxuICBKc29uVXRpbC50b19saXN0IChKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvbilcblxubGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAxMyAtPlxuICAgICh0cnlcbiAgICAgICBsZXQgZmlsZW5hbWVzID1cbiAgICAgICAgIEpzb25VdGlsLnRvX2FycmF5XG4gICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgICAoTGlzdC5hc3NvYyBcImZpbGVuYW1lc1wiIGwpXG4gICAgICAgaW5cbiAgICAgICB7XG4gICAgICAgICBmaWxlbmFtZXMgPSBMaXN0LnRsIChBcnJheS50b19saXN0IGZpbGVuYW1lcyk7XG4gICAgICAgICBkb21haW4gPSBQYXR0ZXJuLkVudi5vZl95b2pzb24gKExpc3QuYXNzb2MgXCJ1cGRhdGVcIiBsKTtcbiAgICAgICAgIHRva2VucyA9IE5hbWVkRGVjbHMub2ZfanNvbiAoZnVuIF8gLT4gKCkpIChMaXN0LmFzc29jIFwidG9rZW5zXCIgbCk7XG4gICAgICAgICBhbGdzID1cbiAgICAgICAgICAgTmFtZWREZWNscy5vZl9qc29uXG4gICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBrYXBwYV9pbnN0YW5jZV9vZl95b2pzb25cbiAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpXG4gICAgICAgICAgICAgICAgICAgIHgpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwiYWxnc1wiIGwpO1xuICAgICAgICAgb2JzZXJ2YWJsZXMgPVxuICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcIm9ic2VydmFibGVzXCIgbCB3aXRoXG4gICAgICAgICAgIHwgYExpc3QgbyAtPlxuICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBrYXBwYV9pbnN0YW5jZV9vZl95b2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICB4KSlcbiAgICAgICAgICAgICAgIG9cbiAgICAgICAgICAgfCBgTnVsbCAtPiBbfHxdXG4gICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgYXN0X3J1bGVzID1cbiAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJhc3RfcnVsZXNcIiBsIHdpdGhcbiAgICAgICAgICAgfCBgTGlzdCBvIC0+XG4gICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICB8IGBMaXN0IFsgYE51bGw7IHIgXSAtPlxuICAgICAgICAgICAgICAgICAgIE5vbmUsIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEucnVsZV9vZl9qc29uIH5maWxlbmFtZXMgcilcbiAgICAgICAgICAgICAgICAgfCBgTGlzdCBbIGBTdHJpbmcgbjsgciBdIC0+XG4gICAgICAgICAgICAgICAgICAgKCBTb21lIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBuKSxcbiAgICAgICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEucnVsZV9vZl9qc29uIH5maWxlbmFtZXMgcikgKVxuICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgICAgb1xuICAgICAgICAgICB8IGBOdWxsIC0+IFt8fF1cbiAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICBydWxlcyA9XG4gICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwiZWxlbWVudGFyeV9ydWxlc1wiIGwgd2l0aFxuICAgICAgICAgICB8IGBMaXN0IG8gLT5cbiAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdCAoUHJpbWl0aXZlcy5ydWxlX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBvXG4gICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgaW50ZXJ2ZW50aW9ucyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2FycmF5XG4gICAgICAgICAgICAgKFByaW1pdGl2ZXMucGVydHVyYmF0aW9uX29mX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJpbnRlcnZlbnRpb25zXCIgeCk7XG4gICAgICAgICBkZXBlbmRlbmNpZXNfaW5fdGltZSA9XG4gICAgICAgICAgIE9wZXJhdG9yLmRlcHNldF9vZl95b2pzb25cbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZGVwZW5kZW5jaWVzX2luX3RpbWVcIiB4KTtcbiAgICAgICAgIGRlcGVuZGVuY2llc19pbl9ldmVudCA9XG4gICAgICAgICAgIE9wZXJhdG9yLmRlcHNldF9vZl95b2pzb25cbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZGVwZW5kZW5jaWVzX2luX2V2ZW50XCIgeCk7XG4gICAgICAgICBhbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fYXJyYXkgT3BlcmF0b3IuZGVwc2V0X29mX3lvanNvblxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJhbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzXCIgeCk7XG4gICAgICAgICB0b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19hcnJheSBPcGVyYXRvci5kZXBzZXRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llc1wiIHgpO1xuICAgICAgICAgY29udGFjdF9tYXAgPSBDb250YWN0X21hcC5vZl95b2pzb24gKExpc3QuYXNzb2MgXCJjb250YWN0X21hcFwiIGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVudmlyb25tZW50XCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZW52aXJvbm1lbnRcIiwgeCkpXG5cbmxldCB1bmFyeV9wYXR0ZXJucyBlbnYgPVxuICBmb2xkX3J1bGVzXG4gICAgKGZ1biBfIGFjYyByIC0+XG4gICAgICBtYXRjaCByLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICB8IFNvbWUgXyAtPlxuICAgICAgICBQYXR0ZXJuLlNldC5hZGRcbiAgICAgICAgICByLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDApXG4gICAgICAgICAgKFBhdHRlcm4uU2V0LmFkZCByLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDEpIGFjYykpXG4gICAgUGF0dGVybi5TZXQuZW1wdHkgZW52XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY2NfbWl4IH5ub0NvdW50ZXJzID9lbnYgZiBtaXggPVxuICBsZXQgZG9tYWluID1cbiAgICBtYXRjaCBlbnYgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGUgLT4gU29tZSAoTW9kZWwuZG9tYWluIGUpXG4gIGluXG4gIG1hdGNoIG1peCB3aXRoXG4gIHwgW10gLT4gRm9ybWF0LmZwcmludGYgZiBcIjBcIlxuICB8IF8gLT5cbiAgICBQcC5saXN0XG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiArQCBcIilcbiAgICAgIChmdW4gZiBjY3MgLT5cbiAgICAgICAgUHAuYXJyYXlcbiAgICAgICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIipcIilcbiAgICAgICAgICAoZnVuIF8gZiBjYyAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIlxuICAgICAgICAgICAgICAoUGF0dGVybi5wcmludCB+bm9Db3VudGVycyA/ZG9tYWluIH53aXRoX2lkOmZhbHNlKVxuICAgICAgICAgICAgICBjYylcbiAgICAgICAgICBmIGNjcylcbiAgICAgIGYgbWl4XG5cbmxldCBhbGdfZXhwciB+bm9Db3VudGVycyA/ZW52ID1cbiAgQWxnX2V4cHIucHJpbnQgKGNjX21peCB+bm9Db3VudGVycyA/ZW52KSAoTW9kZWwucHJpbnRfdG9rZW4gP2VudilcbiAgICAoTW9kZWwucHJpbnRfYWxnID9lbnYpXG5cbmxldCBib29sX2V4cHIgfm5vQ291bnRlcnMgP2VudiA9XG4gIEFsZ19leHByLnByaW50X2Jvb2wgKGNjX21peCB+bm9Db3VudGVycyA/ZW52KVxuICAgIChmdW4gZiBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCIgKE1vZGVsLnByaW50X3Rva2VuID9lbnYpIGkpXG4gICAgKE1vZGVsLnByaW50X2FsZyA/ZW52KVxuXG5sZXQgcHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52IGYgPVxuICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0ciwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCIlc1xcXCJcIiBzdHJcbiAgICB8IFByaW1pdGl2ZXMuQWxnX3BleHByIChhbGcsIF8pIC0+IGFsZ19leHByIH5ub0NvdW50ZXJzID9lbnYgZiBhbGdcbiAgaW5cbiAgZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IFsgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0ciwgXykgXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcIiVzXFxcIlwiIHN0clxuICB8IChbIFByaW1pdGl2ZXMuQWxnX3BleHByIF8gXSB8IF8gOjogXyA6OiBfKSBhcyBlIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiglYSlcIiAoUHAubGlzdCAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIi5cIikgYXV4KSBlXG5cbmxldCBwcmludF9leHByX3ZhbCBhbGdfdmFsIGYgZSA9XG4gIGxldCBhdXggZiA9IGZ1bmN0aW9uXG4gICAgfCBQcmltaXRpdmVzLlN0cl9wZXhwciAoc3RyLCBfKSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgc3RyXG4gICAgfCBQcmltaXRpdmVzLkFsZ19wZXhwciAoYWxnLCBfKSAtPiBOYnIucHJpbnQgZiAoYWxnX3ZhbCBhbGcpXG4gIGluXG4gIFBwLmxpc3QgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9jdXQgZiAoKSkgYXV4IGYgZVxuXG5sZXQgZGVjb21waWxlZF9ydWxlIH5ub0NvdW50ZXJzIH5mdWxsIGVudiBmIHIgPVxuICBsZXQgc2lncyA9IE1vZGVsLnNpZ25hdHVyZXMgZW52IGluXG4gIGxldCByX21peCwgcl9jcmVhdGVkID1cbiAgICBQYXR0ZXJuX2NvbXBpbGVyLmxrYXBwYV9vZl9lbGVtZW50YXJ5X3J1bGUgc2lncyAoTW9kZWwuZG9tYWluIGVudikgclxuICBpblxuICBsZXQgcHJfYWxnIGYgKGEsIF8pID0gYWxnX2V4cHIgfm5vQ291bnRlcnMgfmVudiBmIGEgaW5cbiAgbGV0IHByX3RvayBmICh2YSwgdG9rKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhICVhXCIgcHJfYWxnIHZhIChNb2RlbC5wcmludF90b2tlbiB+ZW52KSB0b2tcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhJWEldCVhJXRcIlxuICAgIChMS2FwcGEucHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlczpmYWxzZSByX2NyZWF0ZWQpXG4gICAgcl9taXhcbiAgICAoUmF3X21peHR1cmUucHJpbnQgfm5vQ291bnRlcnMgfmNyZWF0ZWQ6dHJ1ZSB+aW5pdGlhbF9jb21tYToocl9taXggPD4gW10pXG4gICAgICAgfnNpZ3MpXG4gICAgcl9jcmVhdGVkXG4gICAgKGlmIHIuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnMgPD4gW10gdGhlblxuICAgICAgIGZ1biBmIC0+XG4gICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ8QCBcIlxuICAgICBlbHNlXG4gICAgICAgUHAuZW1wdHkpXG4gICAgKFBwLmxpc3QgUHAuY29tbWEgcHJfdG9rKSByLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zXG4gICAgKGZ1biBmIC0+XG4gICAgICBpZiBmdWxsIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkAgQEAgJWEldFwiIHByX2FsZyByLlByaW1pdGl2ZXMucmF0ZSAoZnVuIGYgLT5cbiAgICAgICAgICAgIG1hdGNoIHIuUHJpbWl0aXZlcy51bmFyeV9yYXRlIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIChyYXRlLCBkaXN0KSAtPlxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiIHslYSVhfVwiIHByX2FsZyByYXRlXG4gICAgICAgICAgICAgICAgKFBwLm9wdGlvbiAoZnVuIGYgbWQgLT5cbiAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI6JWFcIiAoYWxnX2V4cHIgfm5vQ291bnRlcnMgfmVudikgbWQpKVxuICAgICAgICAgICAgICAgIGRpc3QpKVxuXG5sZXQgZWxlbWVudGFyeV9ydWxlIH5ub0NvdW50ZXJzID9lbnYgZiByID1cbiAgbGV0IGRvbWFpbiwgc2lncyA9XG4gICAgbWF0Y2ggZW52IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSwgTm9uZVxuICAgIHwgU29tZSBlIC0+IFNvbWUgKE1vZGVsLmRvbWFpbiBlKSwgU29tZSAoTW9kZWwuc2lnbmF0dXJlcyBlKVxuICBpblxuICBsZXQgcHJfYWxnIGYgKGEsIF8pID0gYWxnX2V4cHIgfm5vQ291bnRlcnMgP2VudiBmIGEgaW5cbiAgbGV0IHByX3RvayBmICh2YSwgdG9rKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhICVhXCIgcHJfYWxnIHZhIChNb2RlbC5wcmludF90b2tlbiA/ZW52KSB0b2tcbiAgaW5cbiAgbGV0IHByX3RyYW5zIGYgdCA9IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24ucHJpbnQgP3NpZ3MgZiB0IGluXG4gIGxldCBib3hlZF9jYyBpIGYgY2MgPVxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9vcGVuX2JveCBmIDIgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfaW50IGYgaSBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIjogXCIgaW5cbiAgICBsZXQgKCkgPSBQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQ6dHJ1ZSBmIGNjIGluXG4gICAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmICgpXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIoYXN0OiAlaSlAIEBbQFslYUBdJXRAWyVhQF1AXUAgLS0gQFslYUBdQCArKyBAWyVhQF1AIEBAJWEldFwiXG4gICAgci5QcmltaXRpdmVzLnN5bnRhY3RpY19ydWxlXG4gICAgKFBwLmFycmF5IFBwLmNvbW1hIGJveGVkX2NjKVxuICAgIHIuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50c1xuICAgIChpZiByLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zIDw+IFtdIHRoZW5cbiAgICAgICBmdW4gZiAtPlxuICAgICBGb3JtYXQuZnByaW50ZiBmIFwifEAgXCJcbiAgICAgZWxzZVxuICAgICAgIFBwLmVtcHR5KVxuICAgIChQcC5saXN0IFBwLmNvbW1hIHByX3Rvaykgci5QcmltaXRpdmVzLmRlbHRhX3Rva2Vuc1xuICAgIChQcC5saXN0IFBwLmNvbW1hIHByX3RyYW5zKVxuICAgIHIuUHJpbWl0aXZlcy5yZW1vdmVkXG4gICAgKFBwLmxpc3QgUHAuY29tbWEgcHJfdHJhbnMpXG4gICAgci5QcmltaXRpdmVzLmluc2VydGVkIHByX2FsZyByLlByaW1pdGl2ZXMucmF0ZVxuICAgIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggci5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKHJhdGUsIGRpc3QpIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgeyVhJWF9XCIgcHJfYWxnIHJhdGVcbiAgICAgICAgICAoUHAub3B0aW9uIChmdW4gZiBtZCAtPlxuICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjolYVwiIChhbGdfZXhwciB+bm9Db3VudGVycyA/ZW52KSBtZCkpXG4gICAgICAgICAgZGlzdClcblxubGV0IG1vZGlmaWNhdGlvbiB+bm9Db3VudGVycyA/ZW52IGYgbSA9XG4gIGxldCBkb21haW4gPVxuICAgIG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgZSAtPiBTb21lIChNb2RlbC5kb21haW4gZSlcbiAgaW5cbiAgbWF0Y2ggbSB3aXRoXG4gIHwgUHJpbWl0aXZlcy5QUklOVCAobm1lLCB2YSkgLT5cbiAgICBpZiBubWUgPD4gW10gdGhlblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiRQUklOVEYgJWEgPiAlYVwiXG4gICAgICAgIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpXG4gICAgICAgIHZhXG4gICAgICAgIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpXG4gICAgICAgIG5tZVxuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkUFJJTlRGICVhXCIgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudikgdmFcbiAgfCBQcmltaXRpdmVzLlBMT1RFTlRSWSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIkUExPVEVOVFJZXCJcbiAgfCBQcmltaXRpdmVzLklURVJfUlVMRSAoKG4sIF8pLCBydWxlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkQVBQTFkgJWEgJWFcIlxuICAgICAgKGFsZ19leHByIH5ub0NvdW50ZXJzID9lbnYpXG4gICAgICBuXG4gICAgICAobWF0Y2ggZW52IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbGVtZW50YXJ5X3J1bGUgfm5vQ291bnRlcnMgP2VudlxuICAgICAgfCBTb21lIGVudiAtPiBkZWNvbXBpbGVkX3J1bGUgfm5vQ291bnRlcnMgfmZ1bGw6ZmFsc2UgZW52KVxuICAgICAgcnVsZVxuICB8IFByaW1pdGl2ZXMuVVBEQVRFIChpZCwgKHZhLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFVQREFURSAlYSAlYVwiIChNb2RlbC5wcmludF9hbGcgP2VudikgaWRcbiAgICAgIChhbGdfZXhwciB+bm9Db3VudGVycyA/ZW52KVxuICAgICAgdmFcbiAgfCBQcmltaXRpdmVzLlNOQVBTSE9UIChyYXcsIGZuKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkU05BUFNIT1QgJWEldFwiIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpIGZuIChmdW4gZiAtPlxuICAgICAgICBpZiByYXcgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIgW3RydWVdXCIpXG4gIHwgUHJpbWl0aXZlcy5TVE9QIGZuIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRTVE9QICVhXCIgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudikgZm5cbiAgfCBQcmltaXRpdmVzLkRJTiAoa2luZCwgZm4pIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRESU4gJWEgJXRbdHJ1ZV1cIiAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KSBmblxuICAgICAgKGZ1biBmIC0+XG4gICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICB8IFByaW1pdGl2ZXMuQUJTT0xVVEUgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJhYnNvbHV0ZVxcXCIgXCJcbiAgICAgICAgfCBQcmltaXRpdmVzLlJFTEFUSVZFIC0+ICgpXG4gICAgICAgIHwgUHJpbWl0aXZlcy5QUk9CQUJJTElUWSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcInByb2JhYmlsaXR5XFxcIiBcIilcbiAgfCBQcmltaXRpdmVzLkRJTk9GRiBmbiAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkRElOICVhIFtmYWxzZV1cIiAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KSBmblxuICB8IFByaW1pdGl2ZXMuQ0ZMT1cgKF9uYW1lLCBjYywgXykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFRSQUNLIEBbJWFAXSBbdHJ1ZV1cIlxuICAgICAgKFBwLmFycmF5IFBwLmNvbW1hIChmdW4gXyAtPlxuICAgICAgICAgICBQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQ6ZmFsc2UpKVxuICAgICAgY2NcbiAgfCBQcmltaXRpdmVzLkNGTE9XT0ZGIChfLCBjYykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFRSQUNLICVhIFtmYWxzZV1cIlxuICAgICAgKFBwLmFycmF5IFBwLmNvbW1hIChmdW4gXyAtPlxuICAgICAgICAgICBQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQ6ZmFsc2UpKVxuICAgICAgY2NcbiAgfCBQcmltaXRpdmVzLlNQRUNJRVMgKGZuLCBjYywgXykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFNQRUNJRVNfT0YgQFslYUBdIFt0cnVlXSA+ICVhXCJcbiAgICAgIChQcC5hcnJheSBQcC5jb21tYSAoZnVuIF8gLT5cbiAgICAgICAgICAgUGF0dGVybi5wcmludCB+bm9Db3VudGVycyA/ZG9tYWluIH53aXRoX2lkOmZhbHNlKSlcbiAgICAgIGNjXG4gICAgICAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KVxuICAgICAgZm5cbiAgfCBQcmltaXRpdmVzLlNQRUNJRVNfT0ZGIGZuIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRTUEVDSUVTX09GIFtmYWxzZV0gPiAlYVwiIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpIGZuXG5cbmxldCBwZXJ0dXJiYXRpb24gfm5vQ291bnRlcnMgP2VudiBmIHBlcnQgPVxuICBsZXQgYXV4X2FsYXJtIGYgPVxuICAgIG1hdGNoIHBlcnQuUHJpbWl0aXZlcy5hbGFybSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG4gLT4gRm9ybWF0LmZwcmludGYgZiBcImFsYXJtICVhIFwiIE5ici5wcmludCBuXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlJW1vZDogJXQlYSBkbyAlYXJlcGVhdCAlYVwiIGF1eF9hbGFybVxuICAgIChib29sX2V4cHIgfm5vQ291bnRlcnMgP2VudilcbiAgICAoZnN0IHBlcnQuUHJpbWl0aXZlcy5wcmVjb25kaXRpb24pXG4gICAgKFBwLmxpc3QgfnRyYWlsaW5nOlBwLmNvbG9uIFBwLmNvbG9uIChtb2RpZmljYXRpb24gfm5vQ291bnRlcnMgP2VudikpXG4gICAgcGVydC5QcmltaXRpdmVzLmVmZmVjdFxuICAgIChib29sX2V4cHIgfm5vQ291bnRlcnMgP2VudilcbiAgICAoZnN0IHBlcnQuUHJpbWl0aXZlcy5yZXBlYXQpXG5cbmxldCBlbnYgfm5vQ291bnRlcnMgZiBlbnYgPVxuICBNb2RlbC5wcmludCB+bm9Db3VudGVyc1xuICAgIChmdW4gZW52IC0+IGFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgKGZ1biBlbnYgLT4gZWxlbWVudGFyeV9ydWxlIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgKGZ1biBlbnYgLT4gcGVydHVyYmF0aW9uIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgZiBlbnZcblxubGV0IGVudl9rYXBwYSB+bm9Db3VudGVycyBmIGVudiA9XG4gIE1vZGVsLnByaW50X2thcHBhIH5ub0NvdW50ZXJzXG4gICAgKGZ1biBlbnYgLT4gYWxnX2V4cHIgfm5vQ291bnRlcnMgfmVudilcbiAgICAoZnVuIGVudiAtPiBwZXJ0dXJiYXRpb24gfm5vQ291bnRlcnMgfmVudilcbiAgICBmIGVudlxuXG5sZXQgZGVjb21waWxlZF9lbnYgfm5vQ291bnRlcnMgZiBlbnYgPVxuICBNb2RlbC5wcmludF9rYXBwYSB+bm9Db3VudGVyc1xuICAgIChmdW4gZW52IC0+IGFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgfnByX3J1bGU6KGRlY29tcGlsZWRfcnVsZSB+bm9Db3VudGVycyB+ZnVsbDp0cnVlKVxuICAgIChmdW4gZW52IC0+IHBlcnR1cmJhdGlvbiB+bm9Db3VudGVycyB+ZW52KVxuICAgIGYgZW52XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHBlcmlvZCA9IERFIG9mIGludCB8IERUIG9mIGZsb2F0XG5cbnR5cGUgdCA9IHtcbiAgcHJvZ3Jlc3NTaXplOiBpbnQ7XG4gIHByb2dyZXNzQ2hhcjogY2hhcjtcbiAgZHVtcElmRGVhZGxvY2tlZDogYm9vbDtcbiAgaW5pdGlhbDogZmxvYXQgb3B0aW9uO1xuICBtYXhDb25zZWN1dGl2ZUNsYXNoOiBpbnQ7XG4gIG91dHB1dEZpbGVOYW1lOiBzdHJpbmcgb3B0aW9uO1xuICBwbG90UGVyaW9kOiBwZXJpb2Qgb3B0aW9uO1xuICBzZWVkOiBpbnQgb3B0aW9uO1xuICB0cmFjZUZpbGVOYW1lOiBzdHJpbmcgb3B0aW9uO1xuICBkZWx0YUFjdGl2aXRpZXNGaWxlTmFtZTogc3RyaW5nIG9wdGlvbjtcbn1cblxubGV0IGVtcHR5ID1cbiAge1xuICAgIHByb2dyZXNzU2l6ZSA9IDcwO1xuICAgIHByb2dyZXNzQ2hhciA9ICcjJztcbiAgICBkdW1wSWZEZWFkbG9ja2VkID0gdHJ1ZTtcbiAgICBpbml0aWFsID0gTm9uZTtcbiAgICBtYXhDb25zZWN1dGl2ZUNsYXNoID0gMztcbiAgICBzZWVkID0gTm9uZTtcbiAgICB0cmFjZUZpbGVOYW1lID0gTm9uZTtcbiAgICBwbG90UGVyaW9kID0gTm9uZTtcbiAgICBvdXRwdXRGaWxlTmFtZSA9IE5vbmU7XG4gICAgZGVsdGFBY3Rpdml0aWVzRmlsZU5hbWUgPSBOb25lO1xuICB9XG5cbmxldCBwYXJzZSByZXN1bHQgPVxuICBsZXQgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgZiA9XG4gICAgbWF0Y2ggdmFsdWVfbGlzdCB3aXRoXG4gICAgfCBbICh2LCBwb3MpIF0gLT4gZiB2IHBvc1xuICAgIHwgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgcGFyYW1ldGVyIFwiIF4gcGFyYW0sIHBvc19wKSlcbiAgaW5cbiAgbGV0IGdldF9ib29sX3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgPVxuICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gdmFsdWUgcG9zX3YgLT5cbiAgICAgICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgICB8IFwidHJ1ZVwiIHwgXCJ5ZXNcIiAtPiB0cnVlXG4gICAgICAgIHwgXCJmYWxzZVwiIHwgXCJub1wiIC0+IGZhbHNlXG4gICAgICAgIHwgXyBhcyBlcnJvciAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiBlcnJvciBeIFwiIHNob3VsZCBiZSBlaXRoZXIgXFxcInllc1xcXCIgb3IgXFxcIm5vXFxcIlwiLCBwb3NfdikpKVxuICBpblxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gKGNvbmYsIHN0b3J5X2NvbXByZXNzaW9uLCBmb3JtYXRDZmxvdywgY2Zsb3dGaWxlKVxuICAgICAgICAgKChwYXJhbSwgcG9zX3ApLCB2YWx1ZV9saXN0KSAtPlxuICAgICAgbWF0Y2ggcGFyYW0gd2l0aFxuICAgICAgfCBcImRpc3BsYXlDb21wcmVzc2lvblwiIC0+XG4gICAgICAgIGxldCByZWMgcGFyc2UgKGEsIGIsIGMpIGwgPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgKFwic3Ryb25nXCIsIF8pIDo6IHRsIC0+IHBhcnNlIChhLCBiLCB0cnVlKSB0bFxuICAgICAgICAgIHwgKFwid2Vha1wiLCBfKSA6OiB0bCAtPiBwYXJzZSAoYSwgdHJ1ZSwgYykgdGxcbiAgICAgICAgICB8IChcIm5vbmVcIiwgXykgOjogdGwgLT4gcGFyc2UgKHRydWUsIGIsIGMpIHRsXG4gICAgICAgICAgfCBbXSAtPiBjb25mLCAoYSwgYiwgYyksIGZvcm1hdENmbG93LCBjZmxvd0ZpbGVcbiAgICAgICAgICB8IChlcnJvciwgcG9zKSA6OiBfIC0+XG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAoXCJVbmtub3duIHZhbHVlIFwiIF4gZXJyb3IgXiBcIiBmb3IgY29tcHJlc3Npb24gbW9kZVwiLCBwb3MpKVxuICAgICAgICBpblxuICAgICAgICBwYXJzZSBzdG9yeV9jb21wcmVzc2lvbiB2YWx1ZV9saXN0XG4gICAgICB8IFwiY2Zsb3dGaWxlTmFtZVwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4geCBfIC0+XG4gICAgICAgICAgICBjb25mLCBzdG9yeV9jb21wcmVzc2lvbiwgZm9ybWF0Q2Zsb3csIFNvbWUgeClcbiAgICAgIHwgXCJzZWVkXCIgLT5cbiAgICAgICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biBzIHAgLT5cbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIHNlZWQgPSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpIH0sXG4gICAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHMgXiBcIiBzaG91bGQgYmUgYW4gaW50ZWdlclwiLCBwKSkpXG4gICAgICB8IFwiVDBcIiAtPlxuICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHMgcCAtPlxuICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICggeyBjb25mIHdpdGggaW5pdGlhbCA9IFNvbWUgKGZsb2F0X29mX3N0cmluZyBzKSB9LFxuICAgICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiBzIF4gXCIgc2hvdWxkIGJlIGEgZmxvYXRcIiwgcCkpKVxuICAgICAgfCBcInBsb3RQZXJpb2RcIiAtPlxuICAgICAgICAobWF0Y2ggdmFsdWVfbGlzdCB3aXRoXG4gICAgICAgIHwgWyAocywgcCkgXSAtPlxuICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIHBsb3RQZXJpb2QgPSBTb21lIChEVCAoZmxvYXRfb2Zfc3RyaW5nIHMpKSB9LFxuICAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHMgXiBcIiBzaG91bGQgYmUgYSBmbG9hdFwiLCBwKSkpXG4gICAgICAgIHwgWyAocywgc3ApOyAodSwgdXApIF0gLT5cbiAgICAgICAgICBpZlxuICAgICAgICAgICAgdSA9IFwiZVwiIHx8IHUgPSBcImV2ZW50XCIgfHwgdSA9IFwiZXZlbnRzXCIgfHwgdSA9IFwiRXZlbnRcIlxuICAgICAgICAgICAgfHwgdSA9IFwiRXZlbnRzXCJcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIHBsb3RQZXJpb2QgPSBTb21lIChERSAoaW50X29mX3N0cmluZyBzKSkgfSxcbiAgICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgIChcIlZhbHVlIFwiIF4gcyBeIFwiIHNob3VsZCBiZSBhbiBpbnRlZ2VyXCIsIHNwKSlcbiAgICAgICAgICApIGVsc2UgaWZcbiAgICAgICAgICAgICAgdSA9IFwidC51LlwiIHx8IHUgPSBcInRpbWUgdW5pdHNcIiB8fCB1ID0gXCJUaW1lIHVuaXRzXCJcbiAgICAgICAgICAgICAgfHwgdSA9IFwidGltZSB1bml0XCIgfHwgdSA9IFwiVGltZSB1bml0XCJcbiAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICggeyBjb25mIHdpdGggcGxvdFBlcmlvZCA9IFNvbWUgKERUIChmbG9hdF9vZl9zdHJpbmcgcykpIH0sXG4gICAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHMgXiBcIiBzaG91bGQgYmUgYSBmbG9hdFwiLCBzcCkpXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAoXCJJbmNvcnJlY3QgdW5pdCBcIiBeIHUsIHVwKSlcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoXCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBwYXJhbWV0ZXIgXCIgXiBwYXJhbSwgcG9zX3ApKSlcbiAgICAgIHwgXCJvdXRwdXRGaWxlTmFtZVwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gcyBfIC0+XG4gICAgICAgICAgICAoIHsgY29uZiB3aXRoIG91dHB1dEZpbGVOYW1lID0gU29tZSBzIH0sXG4gICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgY2Zsb3dGaWxlICkpXG4gICAgICB8IFwidHJhY2VGaWxlTmFtZVwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gcyBfIC0+XG4gICAgICAgICAgICAoIHsgY29uZiB3aXRoIHRyYWNlRmlsZU5hbWUgPSBTb21lIHMgfSxcbiAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgICAgICBjZmxvd0ZpbGUgKSlcbiAgICAgIHwgXCJkZWx0YUFjdGl2aXRpZXNGaWxlTmFtZVwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gcyBfIC0+XG4gICAgICAgICAgICAoIHsgY29uZiB3aXRoIGRlbHRhQWN0aXZpdGllc0ZpbGVOYW1lID0gU29tZSBzIH0sXG4gICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgY2Zsb3dGaWxlICkpXG4gICAgICB8IFwicHJvZ3Jlc3NCYXJTaXplXCIgLT5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBjb25mIHdpdGhcbiAgICAgICAgICAgIHByb2dyZXNzU2l6ZSA9XG4gICAgICAgICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gdiBwIC0+XG4gICAgICAgICAgICAgICAgICB0cnkgaW50X29mX3N0cmluZyB2XG4gICAgICAgICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiB2IF4gXCIgc2hvdWxkIGJlIGFuIGludGVnZXJcIiwgcCkpKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICB8IFwicHJvZ3Jlc3NCYXJTeW1ib2xcIiAtPlxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGNvbmYgd2l0aFxuICAgICAgICAgICAgcHJvZ3Jlc3NDaGFyID1cbiAgICAgICAgICAgICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biB2IHAgLT5cbiAgICAgICAgICAgICAgICAgIHRyeSBTdHJpbmcudW5zYWZlX2dldCB2IDBcbiAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiB2IF4gXCIgc2hvdWxkIGJlIGEgY2hhcmFjdGVyXCIsIHApKSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgfCBcImR1bXBJZkRlYWRsb2NrZWRcIiAtPlxuICAgICAgICAoIHsgY29uZiB3aXRoIGR1bXBJZkRlYWRsb2NrZWQgPSBnZXRfYm9vbF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IH0sXG4gICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgIHwgXCJtYXhDb25zZWN1dGl2ZUNsYXNoXCIgLT5cbiAgICAgICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biB2IHAgLT5cbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIG1heENvbnNlY3V0aXZlQ2xhc2ggPSBpbnRfb2Zfc3RyaW5nIHYgfSxcbiAgICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHYgXiBcIiBzaG91bGQgYmUgYW4gaW50ZWdlclwiLCBwKSkpXG4gICAgICB8IFwiZG90Q2Zsb3dzXCIgLT5cbiAgICAgICAgbGV0IGZvcm1hdENmbG93ID0gZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biB2IF8gLT4gdikgaW5cbiAgICAgICAgY29uZiwgc3RvcnlfY29tcHJlc3Npb24sIGZvcm1hdENmbG93LCBjZmxvd0ZpbGVcbiAgICAgICgqIGlmIGdldF9ib29sX3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgdGhlblxuICAgICAgICAgKHN0b3J5X2NvbXByZXNzaW9uLCBEb3QpIGVsc2VcbiAgICAgICAgIChzdG9yeV9jb21wcmVzc2lvbiwgSHRtbCkqKVxuICAgICAgfCBfIGFzIGVycm9yIC0+XG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKFwiVW5rbm93biBwYXJhbWV0ZXIgXCIgXiBlcnJvciwgcG9zX3ApKSlcbiAgICAoZW1wdHksIChmYWxzZSwgZmFsc2UsIGZhbHNlKSwgXCJkb3RcIiwgTm9uZSlcbiAgICByZXN1bHRcblxubGV0IHByaW50IGYgY29uZiA9XG4gIGxldCAoKSA9IEZvcm1hdC5wcF9vcGVuX3Zib3ggZiAwIGluXG4gIGxldCAoKSA9XG4gICAgUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlXG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwic2VlZFxcXCIgXFxcIiVpXFxcIkAsXCIpXG4gICAgICBmIGNvbmYuc2VlZFxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcImR1bXBJZkRlYWRsb2NrZWRcXFwiIFxcXCIlYlxcXCJALFwiXG4gICAgICBjb25mLmR1bXBJZkRlYWRsb2NrZWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJtYXhDb25zZWN1dGl2ZUNsYXNoXFxcIiBcXFwiJWlcXFwiQCxcIlxuICAgICAgY29uZi5tYXhDb25zZWN1dGl2ZUNsYXNoXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwicHJvZ3Jlc3NCYXJTaXplXFxcIiBcXFwiJWlcXFwiQCxcIiBjb25mLnByb2dyZXNzU2l6ZVxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcInByb2dyZXNzQmFyU3ltYm9sXFxcIiBcXFwiJWNcXFwiQCxcIiBjb25mLnByb2dyZXNzQ2hhclxuICBpblxuICBsZXQgKCkgPVxuICAgIFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZVxuICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcIlQwXFxcIiBcXFwiJWdcXFwiQCxcIilcbiAgICAgIGYgY29uZi5pbml0aWFsXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlXG4gICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBERSBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcInBsb3RQZXJpb2RcXFwiIFxcXCIlaVxcXCIgXFxcImV2ZW50c1xcXCJALFwiIGlcbiAgICAgICAgfCBEVCB0IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcInBsb3RQZXJpb2RcXFwiIFxcXCIlZ1xcXCIgXFxcInQudS5cXFwiQCxcIiB0KVxuICAgICAgZiBjb25mLnBsb3RQZXJpb2RcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2VcbiAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJvdXRwdXRGaWxlTmFtZVxcXCIgXFxcIiVzXFxcIkAsXCIpXG4gICAgICBmIGNvbmYub3V0cHV0RmlsZU5hbWVcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2VcbiAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJ0cmFjZUZpbGVOYW1lXFxcIiBcXFwiJXNcXFwiQCxcIilcbiAgICAgIGYgY29uZi50cmFjZUZpbGVOYW1lXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlXG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwiZGVsdGFBY3Rpdml0aWVzRmlsZU5hbWVcXFwiIFxcXCIlc1xcXCJALFwiKVxuICAgICAgZiBjb25mLmRlbHRhQWN0aXZpdGllc0ZpbGVOYW1lXG4gIGluXG4gIEZvcm1hdC5wcF9jbG9zZV9ib3ggZiAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGRpdmlkZV9leHByX2J5X2ludCBlIGkgPVxuICBMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgIChBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgKE9wZXJhdG9yLkRJViwgZSwgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIChOYnIuSSBpKSkpKVxuXG50eXBlICgnYSwgJ2IpIGNvcnJlY3RlZF9yYXRlX2NvbnN0ID0ge1xuICBudW06IE5ici50O1xuICBkZW46IE5ici50O1xuICB2YXI6ICgnYSwgJ2IpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uO1xufVxuXG5sZXQgcmVjIHNpbXBsaWZ5ID8ocm9vdF9vbmx5ID0gZmFsc2UpIGV4cHIgPVxuICBtYXRjaCBleHByIHdpdGhcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYyAtPlxuICAgIGxldCBhLCBiID1cbiAgICAgIGlmIHJvb3Rfb25seSB0aGVuXG4gICAgICAgIGEsIGJcbiAgICAgIGVsc2VcbiAgICAgICAgc2ltcGxpZnkgYSwgc2ltcGxpZnkgYlxuICAgIGluXG4gICAgbGV0IHJvb3Rfb25seSA9IHRydWUgaW5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuU1VNIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhLCBfKSwgKEFsZ19leHByLkNPTlNUIGIsIF8pIC0+XG4gICAgICAgIEFsZ19leHByLkNPTlNUIChOYnIuYWRkIGEgYiksIGxvY1xuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIF8gd2hlbiBOYnIuaXNfemVybyBhIC0+IGJcbiAgICAgIHwgXywgKEFsZ19leHByLkNPTlNUIGIsIF8pIHdoZW4gTmJyLmlzX3plcm8gYiAtPiBhXG4gICAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgICB8IE9wZXJhdG9yLk1JTlVTIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhLCBfKSwgKEFsZ19leHByLkNPTlNUIGIsIF8pIC0+XG4gICAgICAgIEFsZ19leHByLkNPTlNUIChOYnIuc3ViIGEgYiksIGxvY1xuICAgICAgfCBfLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgd2hlbiBOYnIuaXNfemVybyBiIC0+IGFcbiAgICAgIHwgKCAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuTVVMVCAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKSAtPlxuICAgICAgICBBbGdfZXhwci5DT05TVCAoTmJyLm11bHQgYSBiKSwgbG9jXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhJywgXyksIF8gd2hlbiBOYnIuaXNfZXF1YWwgYScgTmJyLnplcm8gLT4gYVxuICAgICAgfCBfLCAoQWxnX2V4cHIuQ09OU1QgYicsIF8pIHdoZW4gTmJyLmlzX2VxdWFsIGInIE5ici56ZXJvIC0+IGJcbiAgICAgIHwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCBfIHdoZW4gTmJyLmlzX2VxdWFsIGEgTmJyLm9uZSAtPiBiXG4gICAgICB8IF8sIChBbGdfZXhwci5DT05TVCBiLCBfKSB3aGVuIE5ici5pc19lcXVhbCBiIE5ici5vbmUgLT4gYVxuICAgICAgfCAoIChBbGdfZXhwci5DT05TVCBhLCBsb2NfY3N0KSxcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIChBbGdfZXhwci5DT05TVCBiLCBfKSwgYyksIF9cbiAgICAgICAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIGMsIChBbGdfZXhwci5DT05TVCBiLCBfKSksIF8gKSApXG4gICAgICB8ICggKCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCAoQWxnX2V4cHIuQ09OU1QgYiwgXyksIGMpLCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCBjLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykpLCBfICksXG4gICAgICAgICAgKEFsZ19leHByLkNPTlNUIGEsIGxvY19jc3QpICkgLT5cbiAgICAgICAgKCogYSooYipjKSAtPiAoYSpiKSpjIGlmIGEgJiBiIGFyZSBjb25zdGFudCAqKVxuICAgICAgICBzaW1wbGlmeSB+cm9vdF9vbmx5XG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgIChPcGVyYXRvci5NVUxULCAoQWxnX2V4cHIuQ09OU1QgKE5ici5tdWx0IGEgYiksIGxvY19jc3QpLCBjKSxcbiAgICAgICAgICAgIGxvYyApXG4gICAgICB8ICggKEFsZ19leHByLkNPTlNUIGEsIGxvY19jc3QpLFxuICAgICAgICAgIChBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIChBbGdfZXhwci5DT05TVCBiLCBfKSwgYyksIF8pIClcbiAgICAgIHwgKCAoQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuRElWLCAoQWxnX2V4cHIuQ09OU1QgYiwgXyksIGMpLCBfKSxcbiAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgYSwgbG9jX2NzdCkgKSAtPlxuICAgICAgICAoKiBhKihiL2MpIC0+IChhKmIpL2MgaWYgYSAmIGIgYXJlIGNvbnN0YW50ICopXG4gICAgICAgIHNpbXBsaWZ5IH5yb290X29ubHlcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgKE9wZXJhdG9yLkRJViwgKEFsZ19leHByLkNPTlNUIChOYnIubXVsdCBhIGIpLCBsb2NfY3N0KSwgYyksXG4gICAgICAgICAgICBsb2MgKVxuICAgICAgfCAoIChBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIGIsIChBbGdfZXhwci5DT05TVCBjLCBfKSksIF8pLFxuICAgICAgICAgIChBbGdfZXhwci5DT05TVCBhLCBsb2NfY3N0KSApXG4gICAgICB8ICggKEFsZ19leHByLkNPTlNUIGEsIGxvY19jc3QpLFxuICAgICAgICAgIChBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIGIsIChBbGdfZXhwci5DT05TVCBjLCBfKSksIF8pIClcbiAgICAgICAgd2hlbiAobm90IChOYnIuaXNfemVybyBjKSkgJiYgTmJyLmlzX3plcm8gKE5ici5yZW0gYSBjKSAtPlxuICAgICAgICAoKiBhKihiL2MpIC0+ICgoYS9jKSpiKSBpZiBhICYgYyBhcmUgY29uc3RhbnQgIGFuZCBjfGEgKilcbiAgICAgICAgc2ltcGxpZnkgfnJvb3Rfb25seVxuICAgICAgICAgICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAoIE9wZXJhdG9yLk1VTFQsXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLkNPTlNUIChOYnIuaW50ZXJuYWxfZGl2IGEgYyksIGxvY19jc3QpLFxuICAgICAgICAgICAgICAgIGIgKSxcbiAgICAgICAgICAgIGxvYyApXG4gICAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAgICggKCBPcGVyYXRvci5ESVYgfCBPcGVyYXRvci5NVUxUIHwgT3BlcmF0b3IuU1VNIHwgT3BlcmF0b3IuTUlOVVNcbiAgICAgICAgICAgICAgICAgIHwgT3BlcmF0b3IuUE9XIHwgT3BlcmF0b3IuTU9EVUxPIHwgT3BlcmF0b3IuTUlOIHwgT3BlcmF0b3IuTUFYXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBfLFxuICAgICAgICAgICAgICAgICAgXyApXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApLFxuICAgICAgICAgICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5ESVYgLT5cbiAgICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgXywgKEFsZ19leHByLkNPTlNUIGIsIF8pIHdoZW4gTmJyLmlzX2VxdWFsIGIgTmJyLm9uZSAtPiBhXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhLCBfKSwgKEFsZ19leHByLkNPTlNUIGIsIF8pXG4gICAgICAgIHdoZW4gKG5vdCAoTmJyLmlzX3plcm8gYikpICYmIE5ici5pc196ZXJvIChOYnIucmVtIGEgYikgLT5cbiAgICAgICAgQWxnX2V4cHIuQ09OU1QgKE5ici5pbnRlcm5hbF9kaXYgYSBiKSwgbG9jXG4gICAgICB8ICggKCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIGIpLFxuICAgICAgICAgICAgbG9jX2JpbiApLFxuICAgICAgICAgIChBbGdfZXhwci5DT05TVCBjLCBfKSApXG4gICAgICAgIHdoZW4gTmJyLmlzX3plcm8gKE5ici5yZW0gYSBjKSAtPlxuICAgICAgICAoKiAoYSpiL2MpICYgY3xhIC0+ICgoYy9hKSpiKSopXG4gICAgICAgIHNpbXBsaWZ5IH5yb290X29ubHlcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgKCBPcGVyYXRvci5NVUxULFxuICAgICAgICAgICAgICAgIChBbGdfZXhwci5DT05TVCAoTmJyLmludGVybmFsX2RpdiBjIGEpLCBsb2NfYmluKSxcbiAgICAgICAgICAgICAgICBiICksXG4gICAgICAgICAgICBsb2MgKVxuICAgICAgfCAoICggQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuTVVMVCwgYiwgKEFsZ19leHByLkNPTlNUIGEsIF8pKSxcbiAgICAgICAgICAgIGxvY19iaW4gKSxcbiAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgYywgXykgKVxuICAgICAgICB3aGVuIE5ici5pc196ZXJvIChOYnIucmVtIGEgYykgLT5cbiAgICAgICAgKCogKGIqYS9jKSAmIGN8YSAtPiAoKGMvYSkqYikqKVxuICAgICAgICBzaW1wbGlmeSB+cm9vdF9vbmx5XG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgICggT3BlcmF0b3IuTVVMVCxcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgKE5ici5pbnRlcm5hbF9kaXYgYyBhKSwgbG9jX2JpbiksXG4gICAgICAgICAgICAgICAgYiApLFxuICAgICAgICAgICAgbG9jIClcbiAgICAgIHwgKCBhLFxuICAgICAgICAgICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAoT3BlcmF0b3IuRElWLCAoQWxnX2V4cHIuQ09OU1QgYiwgXyksIChBbGdfZXhwci5DT05TVCBjLCBfKSksXG4gICAgICAgICAgICBsb2NkaXYgKSApIC0+XG4gICAgICAgICgqIChhL2IvYykgLT4gYS8oYipjKSAqKVxuICAgICAgICBzaW1wbGlmeSB+cm9vdF9vbmx5XG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgIChPcGVyYXRvci5ESVYsIGEsIEFsZ19leHByLihDT05TVCAoTmJyLm11bHQgYiBjKSwgbG9jZGl2KSksXG4gICAgICAgICAgICBsb2MgKVxuICAgICAgfCAoICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgICAoICggT3BlcmF0b3IuRElWIHwgT3BlcmF0b3IuTVVMVCB8IE9wZXJhdG9yLlNVTSB8IE9wZXJhdG9yLk1JTlVTXG4gICAgICAgICAgICAgICAgICB8IE9wZXJhdG9yLlBPVyB8IE9wZXJhdG9yLk1PRFVMTyB8IE9wZXJhdG9yLk1JTiB8IE9wZXJhdG9yLk1BWFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgXyxcbiAgICAgICAgICAgICAgICAgIF8gKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuUE9XIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IF8sIChBbGdfZXhwci5DT05TVCBiLCBfKSB3aGVuIE5ici5pc19lcXVhbCBiIE5ici5vbmUgLT4gYVxuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKVxuICAgICAgICB3aGVuIE5ici5pc19zbWFsbGVyIGEgKE5ici5JIDExKVxuICAgICAgICAgICAgICYmIE5ici5pc19ncmVhdGVyIGIgTmJyLnplcm9cbiAgICAgICAgICAgICAmJiBOYnIuaXNfc21hbGxlciBiIChOYnIuSSAxMSkgLT5cbiAgICAgICAgQWxnX2V4cHIuQ09OU1QgKE5ici5wb3cgYSBiKSwgbG9jXG4gICAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgICB8IE9wZXJhdG9yLk1PRFVMTyAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCBfLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgd2hlbiBOYnIuaXNfZXF1YWwgYiBOYnIub25lIC0+IGFcbiAgICAgIHwgKCAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuTUlOIHwgT3BlcmF0b3IuTUFYIC0+IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICB8IEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEpLCBsb2MgLT5cbiAgICBsZXQgYSA9IHNpbXBsaWZ5IGEgaW5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuVU1JTlVTIC0+XG4gICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICB8IEFsZ19leHByLkNPTlNUIGEsIF8gLT4gQWxnX2V4cHIuQ09OU1QgKE5ici5uZWcgYSksIGxvY1xuICAgICAgfCAoICggQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfIHwgQWxnX2V4cHIuVU5fQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF8gfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgIF8gKSAtPlxuICAgICAgICBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuQ09TSU5VUyB8IE9wZXJhdG9yLkVYUCAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgfCBBbGdfZXhwci5DT05TVCBhLCBfIHdoZW4gTmJyLmlzX3plcm8gYSAtPiBBbGdfZXhwci5DT05TVCBOYnIub25lLCBsb2NcbiAgICAgIHwgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgXyApIC0+XG4gICAgICAgIEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5TSU5VUyB8IE9wZXJhdG9yLlRBTiAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgfCBBbGdfZXhwci5DT05TVCBhLCBfIHdoZW4gTmJyLmlzX2VxdWFsIGEgTmJyLm9uZSAtPlxuICAgICAgICBBbGdfZXhwci5DT05TVCBOYnIuemVybywgbG9jXG4gICAgICB8ICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgIF8gKSAtPlxuICAgICAgICBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuU1FSVCB8IE9wZXJhdG9yLkxPRyB8IE9wZXJhdG9yLklOVCAtPlxuICAgICAgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSksIGxvYylcbiAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIChleHByLCBtaXgpLCBsb2MgLT5cbiAgICBsZXQgZXhwciA9IHNpbXBsaWZ5IGV4cHIgaW5cbiAgICAobWF0Y2ggZXhwciB3aXRoXG4gICAgfCBBbGdfZXhwci5DT05TVCBfLCBfIC0+IEFsZ19leHByLkNPTlNUIE5ici56ZXJvLCBsb2NcbiAgICB8ICggKCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF8gfCBBbGdfZXhwci5VTl9BTEdfT1AgX1xuICAgICAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgIF8gKSAtPlxuICAgICAgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgbWl4KSwgbG9jKVxuICB8IEFsZ19leHByLkRJRkZfVE9LRU4gKGV4cHIsIHRva2VuKSwgbG9jIC0+XG4gICAgbGV0IGV4cHIgPSBzaW1wbGlmeSBleHByIGluXG4gICAgKG1hdGNoIGV4cHIgd2l0aFxuICAgIHwgQWxnX2V4cHIuQ09OU1QgXywgXyAtPiBBbGdfZXhwci5DT05TVCBOYnIuemVybywgbG9jXG4gICAgfCAoICggQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfIHwgQWxnX2V4cHIuVU5fQUxHX09QIF9cbiAgICAgICAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgXyB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICBfICkgLT5cbiAgICAgIEFsZ19leHByLkRJRkZfVE9LRU4gKGV4cHIsIHRva2VuKSwgbG9jKVxuICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfLCBfXG4gIHwgQWxnX2V4cHIuQUxHX1ZBUiBfLCBfXG4gIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXywgX1xuICB8IEFsZ19leHByLlRPS0VOX0lEIF8sIF9cbiAgfCBBbGdfZXhwci5DT05TVCBfLCBfIC0+XG4gICAgZXhwclxuICB8IEFsZ19leHByLklGIChjb25kLCB5ZXMsIG5vKSwgbG9jIC0+XG4gICAgbGV0IGNvbmQsIHllcywgbm8gPSBzaW1wbGlmeV9ib29sIGNvbmQsIHNpbXBsaWZ5IHllcywgc2ltcGxpZnkgbm8gaW5cbiAgICAobWF0Y2ggY29uZCB3aXRoXG4gICAgfCBBbGdfZXhwci5UUlVFLCBfIC0+IHllc1xuICAgIHwgQWxnX2V4cHIuRkFMU0UsIF8gLT4gbm9cbiAgICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKF8sIF8pLCBfXG4gICAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgXywgXyksIF9cbiAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKF8sIF8sIF8pLCBfIC0+XG4gICAgICBBbGdfZXhwci5JRiAoY29uZCwgeWVzLCBubyksIGxvYylcblxuYW5kIHNpbXBsaWZ5X2Jvb2wgZXhwcl9ib29sID1cbiAgbWF0Y2ggZXhwcl9ib29sIHdpdGhcbiAgfCBBbGdfZXhwci5UUlVFLCBfIHwgQWxnX2V4cHIuRkFMU0UsIF8gLT4gZXhwcl9ib29sXG4gIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIGEpLCBsb2MgLT5cbiAgICAobWF0Y2ggc2ltcGxpZnlfYm9vbCBhIHdpdGhcbiAgICB8IEFsZ19leHByLlRSVUUsIF8gLT4gQWxnX2V4cHIuRkFMU0UsIGxvY1xuICAgIHwgQWxnX2V4cHIuRkFMU0UsIF8gLT4gQWxnX2V4cHIuVFJVRSwgbG9jXG4gICAgfCAoIEFsZ19leHByLkJJTl9CT09MX09QIChfLCBfLCBfKSwgX1xuICAgICAgfCBBbGdfZXhwci5DT01QQVJFX09QIChfLCBfLCBfKSwgX1xuICAgICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChfLCBfKSwgXyApIGFzIGEnIC0+XG4gICAgICBBbGdfZXhwci5VTl9CT09MX09QIChvcCwgYScpLCBsb2MpXG4gIHwgQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCBhLCBiKSwgbG9jIC0+XG4gICAgbGV0IGEsIGIgPSBzaW1wbGlmeV9ib29sIGEsIHNpbXBsaWZ5X2Jvb2wgYiBpblxuICAgIChtYXRjaCBvcCB3aXRoXG4gICAgfCBPcGVyYXRvci5BTkQgLT5cbiAgICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgKEFsZ19leHByLlRSVUUsIF8pLCBfIC0+IGJcbiAgICAgIHwgKEFsZ19leHByLkZBTFNFLCBfKSwgXyAtPiBhXG4gICAgICB8IF8sIChBbGdfZXhwci5UUlVFLCBfKSAtPiBhXG4gICAgICB8IF8sIChBbGdfZXhwci5GQUxTRSwgXykgLT4gYlxuICAgICAgfCAoICggKCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAoXywgXykgKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQklOX0JPT0xfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKF8sIF8pICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIGEsIGIpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5PUiAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCAoQWxnX2V4cHIuVFJVRSwgXyksIF8gLT4gYVxuICAgICAgfCAoQWxnX2V4cHIuRkFMU0UsIF8pLCBfIC0+IGJcbiAgICAgIHwgXywgKEFsZ19leHByLlRSVUUsIF8pIC0+IGJcbiAgICAgIHwgXywgKEFsZ19leHByLkZBTFNFLCBfKSAtPiBhXG4gICAgICB8ICggKCAoIEFsZ19leHByLkJJTl9CT09MX09QIChfLCBfLCBfKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5DT01QQVJFX09QIChfLCBfLCBfKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChfLCBfKSApLFxuICAgICAgICAgICAgXyApLFxuICAgICAgICAgICggKCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAoXywgXykgKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgYSwgYiksIGxvYykpXG4gIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIGEsIGIpLCBsb2MgLT5cbiAgICBsZXQgYSwgYiA9IHNpbXBsaWZ5IGEsIHNpbXBsaWZ5IGIgaW5cbiAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKSAtPlxuICAgICAgKG1hdGNoIG9wIHdpdGhcbiAgICAgIHwgT3BlcmF0b3IuR1JFQVRFUiAtPlxuICAgICAgICBpZiBOYnIuaXNfZ3JlYXRlciBhIGIgdGhlblxuICAgICAgICAgIEFsZ19leHByLlRSVUUsIGxvY1xuICAgICAgICBlbHNlXG4gICAgICAgICAgQWxnX2V4cHIuRkFMU0UsIGxvY1xuICAgICAgfCBPcGVyYXRvci5TTUFMTEVSIC0+XG4gICAgICAgIGlmIE5ici5pc19zbWFsbGVyIGEgYiB0aGVuXG4gICAgICAgICAgQWxnX2V4cHIuVFJVRSwgbG9jXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBBbGdfZXhwci5GQUxTRSwgbG9jXG4gICAgICB8IE9wZXJhdG9yLkVRVUFMIC0+XG4gICAgICAgIGlmIE5ici5pc19lcXVhbCBhIGIgdGhlblxuICAgICAgICAgIEFsZ19leHByLlRSVUUsIGxvY1xuICAgICAgICBlbHNlXG4gICAgICAgICAgQWxnX2V4cHIuRkFMU0UsIGxvY1xuICAgICAgfCBPcGVyYXRvci5ESUZGIC0+XG4gICAgICAgIGlmIE5ici5pc19lcXVhbCBhIGIgdGhlblxuICAgICAgICAgIEFsZ19leHByLkZBTFNFLCBsb2NcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEFsZ19leHByLlRSVUUsIGxvYylcbiAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfICksXG4gICAgICAgICAgXyApLFxuICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gKSxcbiAgICAgICAgICBfICkgKSAtPlxuICAgICAgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIGEsIGIpLCBsb2MpXG5cbmxldCBzaW1wbGlmeSBleHByID1cbiAgbGV0IHJvb3Rfb25seSA9IGZhbHNlIGluXG4gIHNpbXBsaWZ5IH5yb290X29ubHkgZXhwclxuXG5sZXQgcmVjIGNsZWFuIGV4cHIgPVxuICBsZXQgZXhwciA9IGZzdCBleHByIGluXG4gIG1hdGNoIGV4cHIgd2l0aFxuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgY2xlYW4gYSwgY2xlYW4gYikpXG4gIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSkgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgY2xlYW4gYSkpXG4gIHwgQWxnX2V4cHIuRElGRl9UT0tFTiAoZXhwciwgZHQpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkRJRkZfVE9LRU4gKGNsZWFuIGV4cHIsIGR0KSlcbiAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIChleHByLCBkdCkgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoY2xlYW4gZXhwciwgZHQpKVxuICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgX1xuICB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5DT05TVCBfIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgZXhwclxuICB8IEFsZ19leHByLklGIChjb25kLCB5ZXMsIG5vKSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5JRiAoY2xlYW5fYm9vbCBjb25kLCBjbGVhbiB5ZXMsIGNsZWFuIG5vKSlcblxuYW5kIGNsZWFuX2Jvb2wgZXhwcl9ib29sID1cbiAgbGV0IGV4cHIgPSBmc3QgZXhwcl9ib29sIGluXG4gIG1hdGNoIGV4cHIgd2l0aFxuICB8IEFsZ19leHByLlRSVUUgfCBBbGdfZXhwci5GQUxTRSAtPiBMb2MuYW5ub3Rfd2l0aF9kdW1teSBleHByXG4gIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIGEpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCBjbGVhbl9ib29sIGEpKVxuICB8IEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgYSwgYikgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCBjbGVhbl9ib29sIGEsIGNsZWFuX2Jvb2wgYikpXG4gIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIGEsIGIpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCBjbGVhbiBhLCBjbGVhbiBiKSlcblxubGV0IHJlYyBnZXRfY29ycmVjdGVkX3JhdGUgZSA9XG4gIG1hdGNoIGUgd2l0aFxuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIChBbGdfZXhwci5DT05TVCBjc3QsIF8pLCBlKSwgX1xuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIGUsIChBbGdfZXhwci5DT05TVCBjc3QsIF8pKSwgXyAtPlxuICAgIChtYXRjaCBnZXRfY29ycmVjdGVkX3JhdGUgZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgY29ycmVjdGVkX3JhdGUgLT5cbiAgICAgIFNvbWUgeyBjb3JyZWN0ZWRfcmF0ZSB3aXRoIG51bSA9IE5ici5tdWx0IGNzdCBjb3JyZWN0ZWRfcmF0ZS5udW0gfSlcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIGUsIChBbGdfZXhwci5DT05TVCBjc3QsIF8pKSwgXyAtPlxuICAgIChtYXRjaCBnZXRfY29ycmVjdGVkX3JhdGUgZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgY29ycmVjdGVkX3JhdGUgLT5cbiAgICAgIFNvbWUgeyBjb3JyZWN0ZWRfcmF0ZSB3aXRoIGRlbiA9IE5ici5tdWx0IGNzdCBjb3JyZWN0ZWRfcmF0ZS5kZW4gfSlcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5TVU0sIGUxLCBlMiksIF8gLT5cbiAgICAobWF0Y2ggZ2V0X2NvcnJlY3RlZF9yYXRlIGUxIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBjb3JyZWN0ZWRfcmF0ZTEgLT5cbiAgICAgIChtYXRjaCBnZXRfY29ycmVjdGVkX3JhdGUgZTIgd2l0aFxuICAgICAgfCBTb21lIGNvcnJlY3RlZF9yYXRlMlxuICAgICAgICB3aGVuIGNvbXBhcmUgY29ycmVjdGVkX3JhdGUxLnZhciBjb3JyZWN0ZWRfcmF0ZTIudmFyID0gMFxuICAgICAgICAgICAgICYmIE5ici5pc19lcXVhbCBjb3JyZWN0ZWRfcmF0ZTEuZGVuIGNvcnJlY3RlZF9yYXRlMi5kZW4gLT5cbiAgICAgICAgU29tZVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvcnJlY3RlZF9yYXRlMSB3aXRoXG4gICAgICAgICAgICBudW0gPSBOYnIuYWRkIGNvcnJlY3RlZF9yYXRlMS5udW0gY29ycmVjdGVkX3JhdGUyLm51bTtcbiAgICAgICAgICB9XG4gICAgICB8IFNvbWUgY29ycmVjdGVkX3JhdGUyXG4gICAgICAgIHdoZW4gY29tcGFyZSBjb3JyZWN0ZWRfcmF0ZTEudmFyIGNvcnJlY3RlZF9yYXRlMi52YXIgPSAwIC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb3JyZWN0ZWRfcmF0ZTEgd2l0aFxuICAgICAgICAgICAgbnVtID1cbiAgICAgICAgICAgICAgTmJyLmFkZFxuICAgICAgICAgICAgICAgIChOYnIubXVsdCBjb3JyZWN0ZWRfcmF0ZTIuZGVuIGNvcnJlY3RlZF9yYXRlMS5udW0pXG4gICAgICAgICAgICAgICAgKE5ici5tdWx0IGNvcnJlY3RlZF9yYXRlMS5kZW4gY29ycmVjdGVkX3JhdGUyLm51bSk7XG4gICAgICAgICAgICBkZW4gPSBOYnIubXVsdCBjb3JyZWN0ZWRfcmF0ZTEuZGVuIGNvcnJlY3RlZF9yYXRlMi5kZW47XG4gICAgICAgICAgfVxuICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpKVxuICB8ICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAoICggT3BlcmF0b3IuTVVMVCB8IE9wZXJhdG9yLkRJViB8IE9wZXJhdG9yLk1JTlVTIHwgT3BlcmF0b3IuUE9XXG4gICAgICAgICAgfCBPcGVyYXRvci5NT0RVTE8gfCBPcGVyYXRvci5NQVggfCBPcGVyYXRvci5NSU4gKSxcbiAgICAgICAgICBfLFxuICAgICAgICAgIF8gKSxcbiAgICAgIF8gKVxuICB8ICggKCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfXG4gICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLklGIF8gKSxcbiAgICAgIF8gKSAtPlxuICAgIE5vbmVcbiAgfCBBbGdfZXhwci5BTEdfVkFSIF8sIF8gLT4gU29tZSB7IHZhciA9IFNvbWUgZTsgbnVtID0gTmJyLm9uZTsgZGVuID0gTmJyLm9uZSB9XG4gIHwgQWxnX2V4cHIuQ09OU1QgY3N0LCBfIC0+IFNvbWUgeyB2YXIgPSBOb25lOyBudW0gPSBjc3Q7IGRlbiA9IE5ici5vbmUgfVxuXG5sZXQgZ2V0X2NvcnJlY3RlZF9yYXRlIGUgPSBnZXRfY29ycmVjdGVkX3JhdGUgKGNsZWFuIGUpXG5cbmxldCBwcmludCBwcl92YXIgZiBjb3JyZWN0ZWRfcmF0ZV9jb25zdCA9XG4gIG1hdGNoIGNvcnJlY3RlZF9yYXRlX2NvbnN0IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJOb25lXCJcbiAgfCBTb21lIGEgLT5cbiAgICAobWF0Y2ggYS52YXIgd2l0aFxuICAgIHwgU29tZSBfIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiKCVhLyVhKS4lYVwiIE5ici5wcmludCBhLm51bSBOYnIucHJpbnQgYS5kZW4gcHJfdmFyIGEudmFyXG4gICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIoJWEvJWEpXCIgTmJyLnByaW50IGEubnVtIE5ici5wcmludCBhLmRlbilcblxubGV0IG5lY2Vzc2FyaWx5X2VxdWFsIGFfb3B0IGJfb3B0ID1cbiAgbWF0Y2ggYV9vcHQsIGJfb3B0IHdpdGhcbiAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgYSwgU29tZSBiIC0+XG4gICAgT3B0aW9uX3V0aWwuZXF1YWwgQWxnX2V4cHIuZXF1YWwgYS52YXIgYi52YXJcbiAgICAmJiBOYnIuaXNfZXF1YWwgKE5ici5tdWx0IGEubnVtIGIuZGVuKSAoTmJyLm11bHQgYS5kZW4gYi5udW0pXG5cbmxldCBkZXAgZW1wdHkgYWRkX21peHR1cmUgYWRkX3Rva2VuIHVuaW9uIGRlcF9lbnYgP3RpbWVfdmFyIGV4cHIgPVxuICBsZXQgcmVjIGF1eCBhZGRfbWl4dHVyZSBhZGRfdG9rZW4gdW5pb24gZGVwX2VudiBleHByIGFjY3UgPVxuICAgIG1hdGNoIGZzdCBleHByIHdpdGhcbiAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKF8sIGUxLCBlMikgfCBBbGdfZXhwci5JRiAoXywgZTEsIGUyKSAtPlxuICAgICAgYXV4IGFkZF9taXh0dXJlIGFkZF90b2tlbiB1bmlvbiBkZXBfZW52IGUxXG4gICAgICAgIChhdXggYWRkX21peHR1cmUgYWRkX3Rva2VuIHVuaW9uIGRlcF9lbnYgZTIgYWNjdSlcbiAgICB8IEFsZ19leHByLlVOX0FMR19PUCAoXywgZSlcbiAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gKGUsIF8pXG4gICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIChlLCBfKSAtPlxuICAgICAgYXV4IGFkZF9taXh0dXJlIGFkZF90b2tlbiB1bmlvbiBkZXBfZW52IGUgYWNjdVxuICAgIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRJTUVfVkFSIC0+XG4gICAgICAobWF0Y2ggdGltZV92YXIgd2l0aFxuICAgICAgfCBTb21lIGlkIC0+IGFkZF9taXh0dXJlIGlkIGFjY3VcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgKCBcIkEgdmFyaWFibGUgZm9yIHRpbWUgc2hhbGwgYmUgcHJvdmlkZWQgdG8gYW5hbHlzZSB0aGUgXFxcbiAgICAgICAgICAgICAgICBkZXBlbmRlbmNlcyBpbiBhIHRpbWUtZGVwZW5kZW50IGV4cHJlc3Npb25cIixcbiAgICAgICAgICAgICAgIHNuZCBleHByICkpKVxuICAgIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QXG4gICAgICAgICggT3BlcmF0b3IuQ1BVVElNRSB8IE9wZXJhdG9yLkVWRU5UX1ZBUiB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSXG4gICAgICAgIHwgT3BlcmF0b3IuVE1BWF9WQVIgfCBPcGVyYXRvci5FTUFYX1ZBUiApIC0+XG4gICAgICBhY2N1XG4gICAgfCBBbGdfZXhwci5BTEdfVkFSIGlkIC0+IHVuaW9uIChkZXBfZW52IGlkKSBhY2N1XG4gICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBtaXggLT4gYWRkX21peHR1cmUgbWl4IGFjY3VcbiAgICB8IEFsZ19leHByLlRPS0VOX0lEIGlkIC0+IGFkZF90b2tlbiBpZCBhY2N1XG4gICAgfCBBbGdfZXhwci5DT05TVCBfIC0+IGFjY3VcbiAgaW5cbiAgYXV4IGFkZF9taXh0dXJlIGFkZF90b2tlbiB1bmlvbiBkZXBfZW52IGV4cHIgZW1wdHlcblxubGV0IHJlYyBkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZXhwciA9XG4gIG1hdGNoIGZzdCBleHByIHdpdGhcbiAgfCBBbGdfZXhwci5JRiAoYiwgZTEsIGUyKSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAoQWxnX2V4cHIuSUZcbiAgICAgICAgICggYixcbiAgICAgICAgICAgZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxLFxuICAgICAgICAgICBkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTIgKSlcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgZTEsIGUyKSAtPlxuICAgIChtYXRjaCBvcCB3aXRoXG4gICAgfCBPcGVyYXRvci5TVU0gLT5cbiAgICAgIEFsZ19leHByLmFkZFxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxKVxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUyKVxuICAgIHwgT3BlcmF0b3IuTVVMVCAtPlxuICAgICAgQWxnX2V4cHIuYWRkXG4gICAgICAgIChBbGdfZXhwci5tdWx0IGUxIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTIpKVxuICAgICAgICAoQWxnX2V4cHIubXVsdCBlMiAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxKSlcbiAgICB8IE9wZXJhdG9yLk1JTlVTIC0+XG4gICAgICBBbGdfZXhwci5taW51c1xuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxKVxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUyKVxuICAgIHwgT3BlcmF0b3IuTUlOIHwgT3BlcmF0b3IuTUFYIC0+IEFsZ19leHByLmludCAwXG4gICAgfCBPcGVyYXRvci5NT0RVTE8gLT4gZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxXG4gICAgfCBPcGVyYXRvci5ESVYgLT5cbiAgICAgIEFsZ19leHByLmRpdlxuICAgICAgICAoQWxnX2V4cHIubWludXNcbiAgICAgICAgICAgKEFsZ19leHByLm11bHQgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMSkgZTIpXG4gICAgICAgICAgIChBbGdfZXhwci5tdWx0IChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTIpIGUxKSlcbiAgICAgICAgKEFsZ19leHByLnBvdyBlMiAoQWxnX2V4cHIuaW50IDIpKVxuICAgIHwgT3BlcmF0b3IuUE9XIC0+XG4gICAgICAoKiAodV52KSoodicqbG4odSkrdip1Jy91KSAqKVxuICAgICAgQWxnX2V4cHIubXVsdCAoQWxnX2V4cHIucG93IGUxIGUyKVxuICAgICAgICAoQWxnX2V4cHIuYWRkXG4gICAgICAgICAgIChBbGdfZXhwci5tdWx0XG4gICAgICAgICAgICAgIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTIpXG4gICAgICAgICAgICAgIChBbGdfZXhwci5sbiBlMSkpXG4gICAgICAgICAgIChBbGdfZXhwci5kaXZcbiAgICAgICAgICAgICAgKEFsZ19leHByLm11bHQgZTIgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMSkpXG4gICAgICAgICAgICAgIGUxKSkpXG4gIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgZSkgLT5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuVU1JTlVTIC0+XG4gICAgICBBbGdfZXhwci51bWludXMgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlKVxuICAgIHwgT3BlcmF0b3IuQ09TSU5VUyAtPlxuICAgICAgQWxnX2V4cHIubXVsdFxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUpXG4gICAgICAgIChBbGdfZXhwci51bWludXMgKEFsZ19leHByLnNpbiBlKSlcbiAgICB8IE9wZXJhdG9yLlNJTlVTIC0+XG4gICAgICBBbGdfZXhwci5tdWx0IChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSkgKEFsZ19leHByLmNvcyBlKVxuICAgIHwgT3BlcmF0b3IuTE9HIC0+XG4gICAgICBBbGdfZXhwci5tdWx0XG4gICAgICAgIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSlcbiAgICAgICAgKEFsZ19leHByLmRpdiAoQWxnX2V4cHIuaW50IDEpIGUpXG4gICAgfCBPcGVyYXRvci5TUVJUIC0+XG4gICAgICBBbGdfZXhwci5tdWx0XG4gICAgICAgIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSlcbiAgICAgICAgKEFsZ19leHByLmRpdiAoQWxnX2V4cHIuaW50ICgtMSkpIChBbGdfZXhwci5zcXJ0IGUpKVxuICAgIHwgT3BlcmF0b3IuRVhQIC0+IEFsZ19leHByLm11bHQgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlKSBlXG4gICAgfCBPcGVyYXRvci5UQU4gLT5cbiAgICAgIEFsZ19leHByLm11bHRcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlKVxuICAgICAgICAoQWxnX2V4cHIuYWRkIChBbGdfZXhwci5pbnQgMSkgKEFsZ19leHByLnBvdyBlIChBbGdfZXhwci5pbnQgMikpKVxuICAgIHwgT3BlcmF0b3IuSU5UIC0+IEFsZ19leHByLmludCAwKVxuICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBPcGVyYXRvci5USU1FX1ZBUiAtPiBmX3RpbWUgKClcbiAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1BcbiAgICAgICggT3BlcmF0b3IuQ1BVVElNRSB8IE9wZXJhdG9yLkVWRU5UX1ZBUiB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSXG4gICAgICB8IE9wZXJhdG9yLlRNQVhfVkFSIHwgT3BlcmF0b3IuRU1BWF9WQVIgKSAtPlxuICAgIEFsZ19leHByLmludCAwXG4gIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgbWl4IC0+IGZfbWl4IG1peFxuICB8IEFsZ19leHByLlRPS0VOX0lEIGlkIC0+IGZfdG9rZW4gaWRcbiAgfCBBbGdfZXhwci5DT05TVCBfIC0+IEFsZ19leHByLmludCAwXG4gIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfXG4gICAgLT5cbiAgICBmX3N5bWIgZXhwclxuXG5sZXQgZGlmZl90b2tlbiBleHByIHRva2VuID1cbiAgbGV0IGZfbWl4IF8gPSBBbGdfZXhwci5pbnQgMCBpblxuICBsZXQgZl90b2tlbiBhID1cbiAgICBpZiBhID0gdG9rZW4gdGhlblxuICAgICAgQWxnX2V4cHIuaW50IDFcbiAgICBlbHNlXG4gICAgICBBbGdfZXhwci5pbnQgMFxuICBpblxuICBsZXQgZl9zeW1iIGV4cHIgPSBBbGdfZXhwci5ESUZGX1RPS0VOIChleHByLCB0b2tlbiksIExvYy5kdW1teSBpblxuICBsZXQgZl90aW1lIF8gPSBBbGdfZXhwci5pbnQgMCBpblxuICBkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZXhwclxuXG5sZXQgZGlmZl9taXh0dXJlID90aW1lX3ZhciBleHByIG1peHR1cmUgPVxuICBsZXQgZl9taXggYSA9XG4gICAgaWYgYSA9IG1peHR1cmUgdGhlblxuICAgICAgQWxnX2V4cHIuaW50IDFcbiAgICBlbHNlXG4gICAgICBBbGdfZXhwci5pbnQgMFxuICBpblxuICBsZXQgZl90b2tlbiBfID0gQWxnX2V4cHIuaW50IDAgaW5cbiAgbGV0IGZfc3ltYiBleHByID0gQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgbWl4dHVyZSksIExvYy5kdW1teSBpblxuICBsZXQgZl90aW1lICgpID1cbiAgICBtYXRjaCB0aW1lX3ZhciB3aXRoXG4gICAgfCBTb21lIGIgd2hlbiBtaXh0dXJlID0gYiAtPiBBbGdfZXhwci5pbnQgMVxuICAgIHwgU29tZSBfIC0+IEFsZ19leHByLmludCAwXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoIFwiQSB0aW1lLWRlcGVuZGVudCBleHByZXNzaW9uIGNhbm5vdCBiZSBkaWZmZXJlbnRpYXRlZCB3aXRob3V0IFxcXG4gICAgICAgICAgICAgIHNwZWNpZnlpbmcgYSB2YXJpYWJsZSBmb3IgdGltZSBwcm9ncmVzc1wiLFxuICAgICAgICAgICAgIExvYy5kdW1teSApKVxuICBpblxuICBkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZXhwclxuXG5sZXQgZm9sZF9vdmVyX21peF9pbl9saXN0IGYgbWl4IGFjY3UgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjdSBhcnJheV9pZCAtPlxuICAgICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gYWNjdSBwaWQgLT4gZiBwaWQgYWNjdSkgYWNjdSBhcnJheV9pZClcbiAgICBhY2N1IG1peFxuXG5sZXQgZm9sZF9vdmVyX21peF9pbl9hbGdfZXhwciBmIGV4cHIgYWNjdSA9XG4gIGxldCBsID0gQWxnX2V4cHIuZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50cyBleHByIGluXG4gIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjdSBtaXggLT4gZm9sZF9vdmVyX21peF9pbl9saXN0IGYgbWl4IGFjY3UpIGFjY3UgbFxuXG5sZXQgZm9sZF9vdmVyX21peHR1cmVzX2luX2FsZ19leHBycyBmIG1vZGVsIGFjY3UgPVxuICBsZXQgYWxnc19leHByID0gTW9kZWwuZ2V0X2FsZ3MgbW9kZWwgaW5cbiAgbGV0IG9ic2VydmFibGVzID0gTW9kZWwuZ2V0X29icyBtb2RlbCBpblxuICAoKmFsZ3MqKVxuICBsZXQgYWNjdSA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjY3UgKF8sIG1peCkgLT4gZm9sZF9vdmVyX21peF9pbl9hbGdfZXhwciBmIG1peCBhY2N1KVxuICAgICAgYWNjdSBhbGdzX2V4cHJcbiAgaW5cbiAgKCpvYnNlcnZhdGlvbnMqKVxuICBsZXQgYWNjdSA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjY3UgbWl4IC0+IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiBtaXggYWNjdSlcbiAgICAgIGFjY3Ugb2JzZXJ2YWJsZXNcbiAgaW5cbiAgKCpydWxlcyopXG4gIGxldCBydWxlcyA9IE1vZGVsLmdldF9ydWxlcyBtb2RlbCBpblxuICAoKnJhdGUqKVxuICBsZXQgYWNjdSA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjY3UgZWxlbWVudGFyeV9ydWxlIC0+XG4gICAgICAgIGxldCByYXRlID0gZWxlbWVudGFyeV9ydWxlLlByaW1pdGl2ZXMucmF0ZSBpblxuICAgICAgICBsZXQgYWNjdSA9IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiByYXRlIGFjY3UgaW5cbiAgICAgICAgKCp1bmFyeV9yYXRlKilcbiAgICAgICAgbGV0IHVuYXJ5X3JhdGUgPSBlbGVtZW50YXJ5X3J1bGUuUHJpbWl0aXZlcy51bmFyeV9yYXRlIGluXG4gICAgICAgIGxldCBhY2N1ID1cbiAgICAgICAgICBtYXRjaCB1bmFyeV9yYXRlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYWNjdVxuICAgICAgICAgIHwgU29tZSAoZXhwciwgXykgLT4gZm9sZF9vdmVyX21peF9pbl9hbGdfZXhwciBmIGV4cHIgYWNjdVxuICAgICAgICBpblxuICAgICAgICAoKmRlbHRhIHRva2VucyopXG4gICAgICAgIGxldCBkZWx0YV90b2tlbnMgPSBlbGVtZW50YXJ5X3J1bGUuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnMgaW5cbiAgICAgICAgbGV0IGFjY3UgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGFjY3UgKGV4cHIsIF8pIC0+IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiBleHByIGFjY3UpXG4gICAgICAgICAgICBhY2N1IGRlbHRhX3Rva2Vuc1xuICAgICAgICBpblxuICAgICAgICBhY2N1KVxuICAgICAgYWNjdSBydWxlc1xuICBpblxuICBhY2N1XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgU2ltdWxhdGlvbl9pbmZvID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IHtcbiAgICBzdG9yeV9pZDogaW50O1xuICAgIHN0b3J5X3RpbWU6IGZsb2F0O1xuICAgIHN0b3J5X2V2ZW50OiBpbnQ7XG4gICAgcHJvZmlsaW5nX2luZm86ICdhO1xuICB9XG4gICgqIHR5cGUgb2YgZGF0YSB0byBiZSBnaXZlbiB3aXRoIG9ic2VydmFibGVzIGZvciBzdG9yeSBjb21wcmVzc2lvblxuICAgICAoc3VjaCBhcyBkYXRlIHdoZW4gdGhlIG9icyBpcyB0cmlnZ2VyZWQqKVxuXG4gIGxldCB1cGRhdGVfcHJvZmlsaW5nX2luZm8gYSBpbmZvID1cbiAgICB7XG4gICAgICBzdG9yeV9pZCA9IGluZm8uc3RvcnlfaWQ7XG4gICAgICBzdG9yeV90aW1lID0gaW5mby5zdG9yeV90aW1lO1xuICAgICAgc3RvcnlfZXZlbnQgPSBpbmZvLnN0b3J5X2V2ZW50O1xuICAgICAgcHJvZmlsaW5nX2luZm8gPSBhO1xuICAgIH1cblxuICBsZXQgZXZlbnQgYSA9IGEuc3RvcnlfZXZlbnRcbiAgbGV0IHN0b3J5X2lkIGEgPSBhLnN0b3J5X2lkXG4gIGxldCBjb21wYXJlX2J5X3N0b3J5X2lkIHggeSA9IE1vZHMuaW50X2NvbXBhcmUgeC5zdG9yeV9pZCB5LnN0b3J5X2lkXG5cbiAgbGV0IGR1bW15IGEgPVxuICAgIHsgc3RvcnlfaWQgPSAwOyBzdG9yeV90aW1lID0gMC47IHN0b3J5X2V2ZW50ID0gMDsgcHJvZmlsaW5nX2luZm8gPSBhIH1cblxuICBsZXQganNvbl9kaWN0aW9ubmFyeSA9XG4gICAgXCJcXFwic2ltdWxhdGlvbl9pbmZvXFxcIjp7XFxcImlkXFxcIjowLFxcXCJ0aW1lXFxcIjoxLFxcXCJldmVudFxcXCI6MixcXFwicHJvZmlsaW5nXFxcIjozfVwiXG5cbiAgbGV0IHRvX2pzb24gZiB4ID1cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgSW50IHguc3RvcnlfaWQ7XG4gICAgICAgIGBGbG9hdCB4LnN0b3J5X3RpbWU7XG4gICAgICAgIGBJbnQgeC5zdG9yeV9ldmVudDtcbiAgICAgICAgZiB4LnByb2ZpbGluZ19pbmZvO1xuICAgICAgXVxuXG4gIGxldCBvZl9qc29uIGYgPSBmdW5jdGlvblxuICAgIHwgYExpc3QgWyBgSW50IHN0b3J5X2lkOyBgRmxvYXQgc3RvcnlfdGltZTsgYEludCBzdG9yeV9ldmVudDsgaW5mbyBdIC0+XG4gICAgICB7IHN0b3J5X2lkOyBzdG9yeV90aW1lOyBzdG9yeV9ldmVudDsgcHJvZmlsaW5nX2luZm8gPSBmIGluZm8gfVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBzaW11bGF0aW9uX2luZm9cIiwgeCkpXG5cbiAgbGV0IHdyaXRlX2pzb24gZiBvYiB4ID1cbiAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIHguc3RvcnlfaWQpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2Zsb2F0IG8geC5zdG9yeV90aW1lKTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyB4LnN0b3J5X2V2ZW50KTtcbiAgICAgICAgKGZ1biBvIC0+IGYgbyB4LnByb2ZpbGluZ19pbmZvKTtcbiAgICAgIF1cblxuICBsZXQgcmVhZF9qc29uIGYgc3QgYiA9XG4gICAgSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgICAgKGZ1biBzdCBiIHN0b3J5X2lkIC0+XG4gICAgICAgIGxldCBzdG9yeV90aW1lID1cbiAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9udW1iZXIgc3QgYlxuICAgICAgICBpblxuICAgICAgICBsZXQgc3RvcnlfZXZlbnQgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYiBpblxuICAgICAgICBsZXQgcHJvZmlsaW5nX2luZm8gPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBmIHN0IGIgaW5cbiAgICAgICAgeyBzdG9yeV9pZDsgc3RvcnlfdGltZTsgc3RvcnlfZXZlbnQ7IHByb2ZpbGluZ19pbmZvIH0pXG4gICAgICBzdCBiXG5lbmRcblxudHlwZSBldmVudF9raW5kID1cbiAgfCBSVUxFIG9mIGludFxuICB8IElOSVQgb2YgaW50IGxpc3QgKCogdGhlIGFnZW50cyAqKVxuICB8IFBFUlQgb2Ygc3RyaW5nICgqIHRoZSBydWxlICopXG5cbmxldCBwcmludF9ldmVudF9raW5kID9lbnYgZiB4ID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgKG1hdGNoIHggd2l0aFxuICAgIHwgUlVMRSBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJSVUxFKCVpKVwiIGlcbiAgICB8IElOSVQgbCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIklOSVQoJWEpXCIgKFBwLmxpc3QgUHAuY29tbWEgRm9ybWF0LnBwX3ByaW50X2ludCkgbFxuICAgIHwgUEVSVCBzIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJQRVJUKCVzKVwiIHMpXG4gIHwgU29tZSBlbnYgLT5cbiAgICAobWF0Y2ggeCB3aXRoXG4gICAgfCBQRVJUIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHNcbiAgICB8IFJVTEUgcl9pZCAtPiBNb2RlbC5wcmludF9ydWxlIH5ub0NvdW50ZXJzOmZhbHNlIH5lbnYgZiByX2lkXG4gICAgfCBJTklUIHMgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJbnRybyBAWzxoPiVhQF1cIlxuICAgICAgICAoUHAubGlzdCBQcC5jb21tYSAoTW9kZWwucHJpbnRfYWdlbnQgfmVudikpXG4gICAgICAgIHMpXG5cbmxldCBwcmludF9ldmVudF9raW5kX2RvdF9hbm5vdCBlbnYgZiA9IGZ1bmN0aW9uXG4gIHwgUlVMRSByX2lkIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIltsYWJlbD1cXFwiJWFcXFwiLCBzaGFwZT0lcywgc3R5bGU9JXMsIGZpbGxjb2xvciA9ICVzXVwiXG4gICAgICAoTW9kZWwucHJpbnRfcnVsZSB+bm9Db3VudGVyczpmYWxzZSB+ZW52KVxuICAgICAgcl9pZCBcImludmhvdXNlXCIgXCJmaWxsZWRcIiBcImxpZ2h0Ymx1ZVwiXG4gIHwgSU5JVCBzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCJbbGFiZWw9XFxcIkludHJvIEBbPGg+JWFAXVxcXCIsIHNoYXBlPSVzLCBzdHlsZT0lcywgZmlsbGNvbG9yPWdyZWVuXVwiXG4gICAgICAoUHAubGlzdCBQcC5jb21tYSAoTW9kZWwucHJpbnRfYWdlbnQgfmVudikpXG4gICAgICBzIFwiaG91c2VcIiBcImZpbGxlZFwiXG4gIHwgUEVSVCBzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIltsYWJlbD1cXFwiJXNcXFwiLCBzaGFwZT0lcywgc3R5bGU9JXMsIGZpbGxjb2xvciA9ICVzXVwiIHNcbiAgICAgIFwiaW52aG91c2VcIiBcImZpbGxlZFwiIFwiZ3JlZW5cIlxuXG50eXBlIHN0ZXAgPVxuICB8IFN1YnMgb2YgaW50ICogaW50XG4gIHwgUnVsZSBvZlxuICAgICAgaW50ICogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmV2ZW50ICogdW5pdCBTaW11bGF0aW9uX2luZm8udFxuICB8IFBlcnQgb2ZcbiAgICAgIHN0cmluZ1xuICAgICAgKiBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uZXZlbnRcbiAgICAgICogdW5pdCBTaW11bGF0aW9uX2luZm8udFxuICB8IEluaXQgb2YgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmFjdGlvbiBsaXN0XG4gIHwgT2JzIG9mXG4gICAgICBzdHJpbmdcbiAgICAgICogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCBsaXN0XG4gICAgICAqIHVuaXQgU2ltdWxhdGlvbl9pbmZvLnRcbiAgfCBEdW1teSBvZiBzdHJpbmdcblxudHlwZSB0ID0gc3RlcCBsaXN0XG5cbmxldCBzdWJzX3N0ZXAgYSBiID0gU3VicyAoYSwgYilcbmxldCBkdW1teV9zdGVwIHggPSBEdW1teSB4XG5sZXQgcHJpbnRfc3VicyBfZiAoX2EsIF9iKSA9ICgpXG5cbmxldCBwcmludF9zaXRlID9lbnYgZiAoKGFnX2lkLCBhZyksIHMpID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhXyVpLiVhXCIgKE1vZGVsLnByaW50X2FnZW50ID9lbnYpIGFnIGFnX2lkXG4gICAgKG1hdGNoIGVudiB3aXRoXG4gICAgfCBTb21lIGVudiAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZSAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpIGFnXG4gICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQpXG4gICAgc1xuXG5sZXQgcHJpbnRfaW5pdCB+Y29tcGFjdCA/ZW52IGxvZyBhY3Rpb25zID1cbiAgbGV0IHNpZ3MgPVxuICAgIG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgZW52IC0+IFNvbWUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KVxuICBpblxuICBpZiBjb21wYWN0IHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBsb2cgXCJJTklUXCJcbiAgZWxzZVxuICAgIEZvcm1hdC5mcHJpbnRmIGxvZyBcIioqKkBbPDE+SU5JVDolYUBdKioqXCJcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2FjdGlvbiA/c2lncykpXG4gICAgICBhY3Rpb25zXG5cbmxldCBwcmludF9zaWRlX2VmZmVjdHMgP2VudiA9XG4gIFBwLmxpc3RcbiAgICAoZnVuIGYgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIFwiKVxuICAgIChmdW4gZiAoc2l0ZSwgc3RhdGUpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiU2lkZV9lZmZlY3RzKCVhLCVhKVwiIChwcmludF9zaXRlID9lbnYpIHNpdGVcbiAgICAgICAgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfYmluZGluZ19zdGF0ZVxuICAgICAgICAgICA/c2lnczooT3B0aW9uX3V0aWwubWFwIE1vZGVsLnNpZ25hdHVyZXMgZW52KSlcbiAgICAgICAgc3RhdGUpXG5cbmxldCBwcmludF9ldmVudCB+Y29tcGFjdCA/ZW52IGxvZyAoZXZfa2luZCwgZSkgPVxuICBsZXQgc2lncyA9XG4gICAgbWF0Y2ggZW52IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBlbnYgLT4gU29tZSAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpXG4gIGluXG4gIGlmIGNvbXBhY3QgdGhlblxuICAgIHByaW50X2V2ZW50X2tpbmQgP2VudiBsb2cgZXZfa2luZFxuICBlbHNlXG4gICAgRm9ybWF0LmZwcmludGYgbG9nXG4gICAgICBcIkBbKioqUmVmaW5lZCBldmVudDoqKipALCogS2FwcGFfcnVsZSAlYSBTdG9yeSBlbmNvZGluZzolYSVhJWFAXVwiXG4gICAgICAocHJpbnRfZXZlbnRfa2luZCA/ZW52KSBldl9raW5kXG4gICAgICAoUHAubGlzdCBQcC5lbXB0eVxuICAgICAgICAgKFBwLmxpc3QgUHAuZW1wdHkgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfdGVzdCA/c2lncykpKVxuICAgICAgKGUuSW5zdGFudGlhdGlvbi50ZXN0cyBAIFsgZS5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyBdKVxuICAgICAgKFBwLmxpc3QgUHAuZW1wdHkgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfYWN0aW9uID9zaWdzKSlcbiAgICAgIGUuSW5zdGFudGlhdGlvbi5hY3Rpb25zIChwcmludF9zaWRlX2VmZmVjdHMgP2VudilcbiAgICAgIGUuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjXG5cbmxldCBwcmludF9vYnMgfmNvbXBhY3QgP2VudiBmIChldl9raW5kLCB0ZXN0cywgXykgPVxuICBsZXQgc2lncyA9XG4gICAgbWF0Y2ggZW52IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBlbnYgLT4gU29tZSAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpXG4gIGluXG4gIGlmIGNvbXBhY3QgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJPQlMgJXNcIiBldl9raW5kXG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiKioqQFs8MT5PQlMgJXM6JWFAXSoqKlwiIGV2X2tpbmRcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlXG4gICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSAoSW5zdGFudGlhdGlvbi5wcmludF9jb25jcmV0ZV90ZXN0ID9zaWdzKSkpXG4gICAgICB0ZXN0c1xuXG5sZXQgcHJpbnRfc3RlcCA/KGNvbXBhY3QgPSBmYWxzZSkgP2VudiBmID0gZnVuY3Rpb25cbiAgfCBTdWJzIChhLCBiKSAtPiBwcmludF9zdWJzIGYgKGEsIGIpXG4gIHwgUnVsZSAoeCwgeSwgX3opIC0+IHByaW50X2V2ZW50IH5jb21wYWN0ID9lbnYgZiAoUlVMRSB4LCB5KVxuICB8IFBlcnQgKHgsIHksIF96KSAtPiBwcmludF9ldmVudCB+Y29tcGFjdCA/ZW52IGYgKFBFUlQgeCwgeSlcbiAgfCBJbml0IGEgLT4gcHJpbnRfaW5pdCB+Y29tcGFjdCA/ZW52IGYgYVxuICB8IE9icyAoYSwgYiwgYykgLT4gcHJpbnRfb2JzIH5jb21wYWN0ID9lbnYgZiAoYSwgYiwgYylcbiAgfCBEdW1teSBfIC0+ICgpXG5cbmxldCBnZXRfdHlwZXNfZnJvbV9pbml0IGEgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIGFjdGlvbiAtPlxuICAgICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKChfLCBhdHlwZSksIF8pIC0+IGF0eXBlIDo6IGFjY1xuICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5CaW5kIF9cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF8gfCBJbnN0YW50aWF0aW9uLkZyZWUgXyB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF9cbiAgICAgICAgLT5cbiAgICAgICAgYWNjKVxuICAgIFtdIGFcblxubGV0IHByaW50X2xhYmVsX29mX3N0ZXAgP2VudiBmIHggPVxuICBtYXRjaCBlbnYgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAobWF0Y2ggeCB3aXRoXG4gICAgfCBTdWJzIF8gLT4gKClcbiAgICB8IFJ1bGUgKHgsIF8sIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaVwiIHhcbiAgICB8IFBlcnQgKHgsIF8sIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIHhcbiAgICB8IEluaXQgYSAtPlxuICAgICAgbGV0IGwgPSBnZXRfdHlwZXNfZnJvbV9pbml0IGEgaW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJTklUKCVhKVwiIChQcC5saXN0IFBwLmNvbW1hIEZvcm1hdC5wcF9wcmludF9pbnQpIGxcbiAgICB8IE9icyAoeCwgXywgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgeFxuICAgIHwgRHVtbXkgXyAtPiAoKSlcbiAgfCBTb21lIGVudiAtPlxuICAgIChtYXRjaCB4IHdpdGhcbiAgICB8IFN1YnMgXyAtPiAoKVxuICAgIHwgUnVsZSAoeCwgXywgXykgLT4gTW9kZWwucHJpbnRfcnVsZSB+bm9Db3VudGVyczpmYWxzZSB+ZW52IGYgeFxuICAgIHwgUGVydCAoeCwgXywgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHhcbiAgICB8IEluaXQgYSAtPlxuICAgICAgbGV0IGwgPSBnZXRfdHlwZXNfZnJvbV9pbml0IGEgaW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJbnRybyBAWzxoPiVhQF1cIlxuICAgICAgICAoUHAubGlzdCBQcC5jb21tYSAoTW9kZWwucHJpbnRfYWdlbnQgfmVudikpXG4gICAgICAgIGxcbiAgICB8IE9icyAoeCwgXywgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHhcbiAgICB8IER1bW15IF8gLT4gKCkpXG5cbmxldCBqc29uX2RpY3Rpb25uYXJ5ID1cbiAgXCJcXFwic3RlcFxcXCI6W1xcXCJTdWJzXFxcIixcXFwiUnVsZVxcXCIsXFxcIlBlcnRcXFwiLFxcXCJJbml0XFxcIixcXFwiT2JzXFxcIixcXFwiRHVtbXlcXFwiXVwiXG5cbmxldCB3cml0ZV9zdGVwIG9iIHMgPVxuICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgIChtYXRjaCBzIHdpdGhcbiAgICB8IFN1YnMgKGEsIGIpIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMCk7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gYSk7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gYik7XG4gICAgICBdXG4gICAgfCBSdWxlICh4LCB5LCB6KSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDEpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIHgpO1xuICAgICAgICAoZnVuIG8gLT4gSW5zdGFudGlhdGlvbi53cml0ZV9ldmVudCBBZ2VudC53cml0ZV9qc29uIG8geSk7XG4gICAgICAgIChmdW4gbyAtPiBTaW11bGF0aW9uX2luZm8ud3JpdGVfanNvbiBZb2pzb24uQmFzaWMud3JpdGVfbnVsbCBvIHopO1xuICAgICAgXVxuICAgIHwgUGVydCAoeCwgeSwgeikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAyKTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgbyB4KTtcbiAgICAgICAgKGZ1biBvIC0+IEluc3RhbnRpYXRpb24ud3JpdGVfZXZlbnQgQWdlbnQud3JpdGVfanNvbiBvIHkpO1xuICAgICAgICAoZnVuIG8gLT4gU2ltdWxhdGlvbl9pbmZvLndyaXRlX2pzb24gWW9qc29uLkJhc2ljLndyaXRlX251bGwgbyB6KTtcbiAgICAgIF1cbiAgICB8IEluaXQgYSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDMpO1xuICAgICAgICAoZnVuIG8gLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0IChJbnN0YW50aWF0aW9uLndyaXRlX2FjdGlvbiBBZ2VudC53cml0ZV9qc29uKSBvIGEpO1xuICAgICAgXVxuICAgIHwgT2JzICh4LCB5LCB6KSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDQpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvIHgpO1xuICAgICAgICAoZnVuIG8gLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfbGlzdCAoSW5zdGFudGlhdGlvbi53cml0ZV90ZXN0IEFnZW50LndyaXRlX2pzb24pKVxuICAgICAgICAgICAgbyB5KTtcbiAgICAgICAgKGZ1biBvIC0+IFNpbXVsYXRpb25faW5mby53cml0ZV9qc29uIFlvanNvbi5CYXNpYy53cml0ZV9udWxsIG8geik7XG4gICAgICBdXG4gICAgfCBEdW1teSBfIC0+IFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyA1KSBdKVxuXG5sZXQgcmVhZF9zdGVwIHN0IGIgPVxuICBKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgKGZ1biBzdCBiIC0+IGZ1bmN0aW9uXG4gICAgICB8IDAgLT5cbiAgICAgICAgbGV0IGEgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYiBpblxuICAgICAgICBsZXQgYiA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2ludCBzdCBiIGluXG4gICAgICAgIFN1YnMgKGEsIGIpXG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IHggPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYiBpblxuICAgICAgICBsZXQgeSA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnJlYWRfZXZlbnQgQWdlbnQucmVhZF9qc29uKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBsZXQgeiA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChTaW11bGF0aW9uX2luZm8ucmVhZF9qc29uIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG4gICAgICAgICAgICBzdCBiXG4gICAgICAgIGluXG4gICAgICAgIFJ1bGUgKHgsIHksIHopXG4gICAgICB8IDIgLT5cbiAgICAgICAgbGV0IHggPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYiBpblxuICAgICAgICBsZXQgeSA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnJlYWRfZXZlbnQgQWdlbnQucmVhZF9qc29uKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBsZXQgeiA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChTaW11bGF0aW9uX2luZm8ucmVhZF9qc29uIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG4gICAgICAgICAgICBzdCBiXG4gICAgICAgIGluXG4gICAgICAgIFBlcnQgKHgsIHksIHopXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGwgPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdF9yZXZcbiAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnJlYWRfYWN0aW9uIEFnZW50LnJlYWRfanNvbikpXG4gICAgICAgICAgICBzdCBiXG4gICAgICAgIGluXG4gICAgICAgIEluaXQgKExpc3QucmV2IGwpXG4gICAgICB8IDQgLT5cbiAgICAgICAgbGV0IHggPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYiBpblxuICAgICAgICBsZXQgeSA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0XG4gICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdFxuICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24ucmVhZF90ZXN0IEFnZW50LnJlYWRfanNvbikpKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBsZXQgeiA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChTaW11bGF0aW9uX2luZm8ucmVhZF9qc29uIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG4gICAgICAgICAgICBzdCBiXG4gICAgICAgIGluXG4gICAgICAgIE9icyAoeCwgeSwgeilcbiAgICAgIHwgNSAtPiBEdW1teSBcIlwiXG4gICAgICB8IF8gLT4gcmFpc2UgKFlvanNvbi5qc29uX2Vycm9yIFwiSW52YWxpZCBzdGVwXCIpXG4gICAgICAoKnN0IGIqKSlcbiAgICBzdCBiXG5cbmxldCBzdGVwX3RvX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgU3VicyAoYSwgYikgLT4gYExpc3QgWyBgSW50IDA7IGBJbnQgYTsgYEludCBiIF1cbiAgfCBSdWxlICh4LCB5LCB6KSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBJbnQgMTtcbiAgICAgICAgYEludCB4O1xuICAgICAgICBJbnN0YW50aWF0aW9uLmV2ZW50X3RvX2pzb24gQWdlbnQudG9fanNvbiB5O1xuICAgICAgICBTaW11bGF0aW9uX2luZm8udG9fanNvbiAoZnVuICgpIC0+IGBOdWxsKSB6O1xuICAgICAgXVxuICB8IFBlcnQgKHgsIHksIHopIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYEludCAyO1xuICAgICAgICBgU3RyaW5nIHg7XG4gICAgICAgIEluc3RhbnRpYXRpb24uZXZlbnRfdG9fanNvbiBBZ2VudC50b19qc29uIHk7XG4gICAgICAgIFNpbXVsYXRpb25faW5mby50b19qc29uIChmdW4gKCkgLT4gYE51bGwpIHo7XG4gICAgICBdXG4gIHwgSW5pdCBhIC0+XG4gICAgbGV0IHJldl9hY3Rpb25zID1cbiAgICAgIExpc3QucmV2X21hcCAoSW5zdGFudGlhdGlvbi5hY3Rpb25fdG9fanNvbiBBZ2VudC50b19qc29uKSBhXG4gICAgaW5cbiAgICBgTGlzdCBbIGBJbnQgMzsgYExpc3QgKExpc3QucmV2IHJldl9hY3Rpb25zKSBdXG4gIHwgT2JzICh4LCB5LCB6KSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBJbnQgNDtcbiAgICAgICAgYFN0cmluZyB4O1xuICAgICAgICBgTGlzdFxuICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgIChmdW4geiAtPlxuICAgICAgICAgICAgICAgYExpc3QgKExpc3QubWFwIChJbnN0YW50aWF0aW9uLnRlc3RfdG9fanNvbiBBZ2VudC50b19qc29uKSB6KSlcbiAgICAgICAgICAgICB5KTtcbiAgICAgICAgU2ltdWxhdGlvbl9pbmZvLnRvX2pzb24gKGZ1biAoKSAtPiBgTnVsbCkgejtcbiAgICAgIF1cbiAgfCBEdW1teSBfIC0+IGBMaXN0IFsgYEludCA1IF1cblxubGV0IHdyaXRlX2pzb24gPSBKc29uVXRpbC53cml0ZV9saXN0IHdyaXRlX3N0ZXBcbmxldCByZWFkX2pzb24gc3QgYiA9IExpc3QucmV2IChZb2pzb24uQmFzaWMucmVhZF9saXN0X3JldiByZWFkX3N0ZXAgc3QgYilcblxubGV0IHN0cmluZ19vZl9zdGVwID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3N0ZXAgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCBzdGVwX29mX3N0cmluZyBzID1cbiAgcmVhZF9zdGVwIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbmxldCBzdGVwX2lzX29icyA9IGZ1bmN0aW9uXG4gIHwgT2JzIF8gLT4gdHJ1ZVxuICB8IFJ1bGUgXyB8IFBlcnQgXyB8IFN1YnMgXyB8IER1bW15IF8gfCBJbml0IF8gLT4gZmFsc2VcblxubGV0IHN0ZXBfaXNfaW5pdCA9IGZ1bmN0aW9uXG4gIHwgSW5pdCBfIC0+IHRydWVcbiAgfCBSdWxlIF8gfCBQZXJ0IF8gfCBTdWJzIF8gfCBEdW1teSBfIHwgT2JzIF8gLT4gZmFsc2VcblxubGV0IHN0ZXBfaXNfc3VicyA9IGZ1bmN0aW9uXG4gIHwgU3VicyBfIC0+IHRydWVcbiAgfCBSdWxlIF8gfCBQZXJ0IF8gfCBJbml0IF8gfCBEdW1teSBfIHwgT2JzIF8gLT4gZmFsc2VcblxubGV0IHN0ZXBfaXNfcnVsZSA9IGZ1bmN0aW9uXG4gIHwgUnVsZSBfIC0+IHRydWVcbiAgfCBQZXJ0IF8gfCBJbml0IF8gfCBTdWJzIF8gfCBEdW1teSBfIHwgT2JzIF8gLT4gZmFsc2VcblxubGV0IHN0ZXBfaXNfcGVydCA9IGZ1bmN0aW9uXG4gIHwgUGVydCBfIC0+IHRydWVcbiAgfCBSdWxlIF8gfCBJbml0IF8gfCBTdWJzIF8gfCBEdW1teSBfIHwgT2JzIF8gLT4gZmFsc2VcblxubGV0IHNpbXVsYXRpb25faW5mb19vZl9zdGVwID0gZnVuY3Rpb25cbiAgfCBPYnMgKF8sIF8sIGluZm8pIHwgUnVsZSAoXywgXywgaW5mbykgfCBQZXJ0IChfLCBfLCBpbmZvKSAtPiBTb21lIGluZm9cbiAgfCBJbml0IF8gLT4gU29tZSAoU2ltdWxhdGlvbl9pbmZvLmR1bW15ICgpKVxuICB8IFN1YnMgXyB8IER1bW15IF8gLT4gTm9uZVxuXG5sZXQgY3JlYXRpb25fb2ZfYWN0aW9ucyBvcCBhY3Rpb25zID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGwgLT4gZnVuY3Rpb25cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKHgsIF8pIC0+IG9wIHggOjogbFxuICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5CaW5kIF9cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF8gfCBJbnN0YW50aWF0aW9uLkZyZWUgXyB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF9cbiAgICAgICAgLT5cbiAgICAgICAgbClcbiAgICBbXSBhY3Rpb25zXG5cbmxldCBjcmVhdGlvbl9vZl9zdGVwID0gZnVuY3Rpb25cbiAgfCBSdWxlIChfLCB7IEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGFjOyBfIH0sIF8pXG4gIHwgUGVydCAoXywgeyBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBhYzsgXyB9LCBfKVxuICB8IEluaXQgYWMgLT5cbiAgICBjcmVhdGlvbl9vZl9hY3Rpb25zIGZzdCBhY1xuICB8IE9icyBfIHwgRHVtbXkgXyB8IFN1YnMgXyAtPiBbXVxuXG5sZXQgaGFzX2NyZWF0aW9uX29mX3N0ZXAgeCA9IGNyZWF0aW9uX29mX3N0ZXAgeCA8PiBbXVxuXG5sZXQgdGVzdHNfb2Zfc3RlcCA9IGZ1bmN0aW9uXG4gIHwgU3VicyBfIC0+IFtdXG4gIHwgUnVsZSAoXywgZSwgXykgfCBQZXJ0IChfLCBlLCBfKSAtPlxuICAgIExpc3QuZm9sZF9yaWdodCBMaXN0LmFwcGVuZCBlLkluc3RhbnRpYXRpb24udGVzdHNcbiAgICAgIGUuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHNcbiAgfCBJbml0IF8gLT4gW11cbiAgfCBPYnMgKF8sIHgsIF8pIC0+IExpc3QuY29uY2F0IHhcbiAgfCBEdW1teSBfIC0+IFtdXG5cbmxldCBhY3Rpb25zX29mX3N0ZXAgPSBmdW5jdGlvblxuICB8IFN1YnMgXyAtPiBbXSwgW11cbiAgfCBSdWxlIChfLCBlLCBfKSB8IFBlcnQgKF8sIGUsIF8pIC0+XG4gICAgZS5JbnN0YW50aWF0aW9uLmFjdGlvbnMsIGUuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjXG4gIHwgSW5pdCB5IC0+IHksIFtdXG4gIHwgT2JzIChfLCBfLCBfKSAtPiBbXSwgW11cbiAgfCBEdW1teSBfIC0+IFtdLCBbXVxuXG5sZXQgc2lkZV9lZmZlY3RzX29mX3N0ZXAgPSBmdW5jdGlvblxuICB8IFJ1bGUgKF8sIGUsIF8pIHwgUGVydCAoXywgZSwgXykgLT4gZS5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3RcbiAgfCBTdWJzIF8gfCBPYnMgXyB8IER1bW15IF8gfCBJbml0IF8gLT4gW11cblxubGV0IGluaXRfdHJhY2VfZmlsZSB+dXVpZCBlbnYgZGVzYyA9XG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBcIntcXG5cXFwidXVpZFxcXCIgOiBcXFwiXCIgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIChzdHJpbmdfb2ZfaW50IHV1aWQpIGluXG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBcIlxcXCIsXFxuXFxcImRpY3RcXFwiOntcIiBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgQWdlbnQuanNvbl9kaWN0aW9ubmFyeSBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCIsXCIgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIEluc3RhbnRpYXRpb24uanNvbl9kaWN0aW9ubmFyeSBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCIsXCIgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIFNpbXVsYXRpb25faW5mby5qc29uX2RpY3Rpb25uYXJ5IGluXG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBcIixcIiBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MganNvbl9kaWN0aW9ubmFyeSBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCJ9LFxcblxcXCJtb2RlbFxcXCI6XCIgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnRvX2NoYW5uZWwgZGVzYyAoTW9kZWwudG9feW9qc29uIGVudikgaW5cbiAgb3V0cHV0X3N0cmluZyBkZXNjIFwiLFxcblxcXCJ0cmFjZVxcXCI6W1wiXG5cbmxldCBhc3NlcnRfZmllbGQgaWRlbnQgeCA9XG4gIGlmIGlkZW50IDw+IHggdGhlblxuICAgIFlvanNvbi5qc29uX2Vycm9yXG4gICAgICAoXCJ0cmFjZSBsYWNrcyB0aGUgZmllbGQgXFxcIlwiIF4geCBeIFwiXFxcIiAoYXQgdGhlIHJpZ2h0IHBsYWNlKVwiKVxuXG5sZXQgcmVhZF90cmFjZV9oZWFkZXJzIGxleF9zdCBsZXhfYnVmID1cbiAgbGV0IGlkZW50ID1cbiAgICBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzIFlvanNvbi5CYXNpYy5yZWFkX2lkZW50IGxleF9zdCBsZXhfYnVmXG4gIGluXG4gIGxldCBpZGVudCcsIHV1aWQgPVxuICAgIGlmIGlkZW50ID0gXCJ1dWlkXCIgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb2xvbiBsZXhfc3QgbGV4X2J1ZiBpblxuICAgICAgbGV0IHV1aWQgPVxuICAgICAgICBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBsZXhfc3QgbGV4X2J1ZlxuICAgICAgaW5cbiAgICAgIGxldCB1dWlkID0gdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgdXVpZCkgd2l0aCBfIC0+IE5vbmUgaW5cbiAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2lkZW50IGxleF9zdCBsZXhfYnVmLCB1dWlkXG4gICAgKSBlbHNlXG4gICAgICBpZGVudCwgTm9uZVxuICBpblxuICBsZXQgKCkgPSBhc3NlcnRfZmllbGQgaWRlbnQnIFwiZGljdFwiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2NvbG9uIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgWW9qc29uLkJhc2ljLnNraXBfanNvbiBsZXhfc3QgbGV4X2J1ZiBpblxuICB1dWlkXG5cbmxldCBmb2xkX3RyYWNlIGYgaW5pdCBsZXhfc3QgbGV4X2J1ZiA9XG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2xjdXJsIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCBfID0gcmVhZF90cmFjZV9oZWFkZXJzIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCBpZGVudCA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2lkZW50IGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCAoKSA9IGFzc2VydF9maWVsZCBpZGVudCBcIm1vZGVsXCIgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfY29sb24gbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0IGVudiA9XG4gICAgTW9kZWwub2ZfeW9qc29uXG4gICAgICAoSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9qc29uIGxleF9zdCBsZXhfYnVmKVxuICBpblxuICBsZXQgaWRlbnQgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pZGVudCBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBhc3NlcnRfZmllbGQgaWRlbnQgXCJ0cmFjZVwiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2NvbG9uIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCBvdXQgPVxuICAgIEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXNcbiAgICAgIChZb2pzb24uQmFzaWMucmVhZF9zZXF1ZW5jZVxuICAgICAgICAgKGZ1biBhY2MgeCB5IC0+IGYgZW52IGFjYyAocmVhZF9zdGVwIHggeSkpXG4gICAgICAgICAoaW5pdCBlbnYpKVxuICAgICAgbGV4X3N0IGxleF9idWZcbiAgaW5cbiAgbGV0ICgpID1cbiAgICB0cnkgWW9qc29uLkJhc2ljLnJlYWRfb2JqZWN0X2VuZCBsZXhfYnVmIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKClcbiAgaW5cbiAgZW52LCBvdXRcblxubGV0IGZvbGRfdHJhY2VfZmlsZSBmIGluaXQgZm5hbWUgPVxuICBsZXQgZGVzYyA9IG9wZW5faW4gZm5hbWUgaW5cbiAgbGV0IGxleF9idWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGRlc2MgaW5cbiAgbGV0IGxleF9zdCA9IFlvanNvbi5pbml0X2xleGVyIH5mbmFtZSAoKSBpblxuICBsZXQgb3V0ID0gSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyAoZm9sZF90cmFjZSBmIGluaXQpIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCAoKSA9IGNsb3NlX2luIGRlc2MgaW5cbiAgb3V0XG5cbmxldCBnZXRfaGVhZGVyc19mcm9tX2ZpbGUgZm5hbWUgPVxuICBsZXQgZGVzYyA9IG9wZW5faW4gZm5hbWUgaW5cbiAgbGV0IGxleF9idWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGRlc2MgaW5cbiAgbGV0IGxleF9zdCA9IFlvanNvbi5pbml0X2xleGVyIH5mbmFtZSAoKSBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9sY3VybCBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgdXVpZCA9IHJlYWRfdHJhY2VfaGVhZGVycyBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgaWRlbnQgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pZGVudCBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBhc3NlcnRfZmllbGQgaWRlbnQgXCJtb2RlbFwiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2NvbG9uIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCBlbnYgPVxuICAgIE1vZGVsLm9mX3lvanNvblxuICAgICAgKEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBsZXhfc3QgbGV4X2J1ZilcbiAgaW5cbiAgbGV0ICgpID0gY2xvc2VfaW4gZGVzYyBpblxuICB1dWlkLCBlbnZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBFZmZpY2llbmN5IDogc2lnXG4gIHR5cGUgdCA9IHtcbiAgICBjb25zZWN1dGl2ZTogaW50IGFycmF5O1xuICAgIG11dGFibGUgY29uc2VjdXRpdmVfYmxvY2tlZDogaW50O1xuICAgIG11dGFibGUgbm9fbW9yZV9iaW5hcnk6IGludDtcbiAgICBtdXRhYmxlIG5vX21vcmVfdW5hcnk6IGludDtcbiAgICBtdXRhYmxlIGNsYXNoaW5nX2luc3RhbmNlOiBpbnQ7XG4gICAgbXV0YWJsZSB0aW1lX2NvcnJlY3Rpb246IGludDtcbiAgfVxuXG4gIHZhbCBpbml0IDogaW50IC0+IHRcbiAgdmFsIG5iIDogdCAtPiBpbnRcbiAgdmFsIG5iX2NvbnNlY3V0aXZlIDogcnVsZV9pZDppbnQgLT4gdCAtPiBpbnRcbiAgdmFsIG5iX2NvbnNlY3V0aXZlX2Jsb2NrZWQgOiB0IC0+IGludFxuICB2YWwgcHJpbnRfZGV0YWlsIDogY3VycmVudF9ldmVudDppbnQgLT4gRm9ybWF0LmZvcm1hdHRlciAtPiB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0X2NvbnNlY3V0aXZlIDogcnVsZV9pZDppbnQgLT4gdCAtPiB0XG4gIHZhbCByZXNldF9jb25zZWN1dGl2ZV9ibG9ja2VkIDogdCAtPiB0XG4gIHZhbCBpbmNyX25vX21vcmVfYmluYXJ5IDogcnVsZV9pZDppbnQgLT4gdCAtPiB0XG4gIHZhbCBpbmNyX25vX21vcmVfdW5hcnkgOiBydWxlX2lkOmludCAtPiB0IC0+IHRcbiAgdmFsIGluY3JfY2xhc2hpbmdfaW5zdGFuY2UgOiBydWxlX2lkOmludCAtPiB0IC0+IHRcbiAgdmFsIGluY3JfdGltZV9jb3JyZWN0aW9uIDogdCAtPiB0XG4gIHZhbCBpbmNyX2NvbnNlY3V0aXZlX2Jsb2NrZWQgOiB0IC0+IHRcbiAgdmFsIHdyaXRlX3QgOiBCdWZmZXIudCAtPiB0IC0+IHVuaXRcbiAgdmFsIHN0cmluZ19vZl90IDogP2xlbjppbnQgLT4gdCAtPiBzdHJpbmdcbiAgdmFsIHJlYWRfdCA6IFlvanNvbi5TYWZlLmxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gdFxuICB2YWwgdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBjb25zZWN1dGl2ZTogaW50IGFycmF5O1xuICAgIG11dGFibGUgY29uc2VjdXRpdmVfYmxvY2tlZDogaW50O1xuICAgIG11dGFibGUgbm9fbW9yZV9iaW5hcnk6IGludDtcbiAgICBtdXRhYmxlIG5vX21vcmVfdW5hcnk6IGludDtcbiAgICBtdXRhYmxlIGNsYXNoaW5nX2luc3RhbmNlOiBpbnQ7XG4gICAgbXV0YWJsZSB0aW1lX2NvcnJlY3Rpb246IGludDtcbiAgfVxuXG4gIGxldCBpbml0IHNpemUgPVxuICAgIHtcbiAgICAgIGNvbnNlY3V0aXZlID0gQXJyYXkubWFrZSBzaXplIDA7XG4gICAgICBjb25zZWN1dGl2ZV9ibG9ja2VkID0gMDtcbiAgICAgIG5vX21vcmVfYmluYXJ5ID0gMDtcbiAgICAgIG5vX21vcmVfdW5hcnkgPSAwO1xuICAgICAgY2xhc2hpbmdfaW5zdGFuY2UgPSAwO1xuICAgICAgdGltZV9jb3JyZWN0aW9uID0gMDtcbiAgICB9XG5cbiAgbGV0IG5iIHQgPVxuICAgIHQubm9fbW9yZV9iaW5hcnkgKyB0Lm5vX21vcmVfdW5hcnkgKyB0LmNsYXNoaW5nX2luc3RhbmNlICsgdC50aW1lX2NvcnJlY3Rpb25cblxuICBsZXQgbmJfY29uc2VjdXRpdmUgfnJ1bGVfaWQgdCA9IHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpXG4gIGxldCBuYl9jb25zZWN1dGl2ZV9ibG9ja2VkIHQgPSB0LmNvbnNlY3V0aXZlX2Jsb2NrZWRcblxuICBsZXQgcmVzZXRfY29uc2VjdXRpdmUgfnJ1bGVfaWQgdCA9XG4gICAgbGV0ICgpID0gdC5jb25zZWN1dGl2ZS4ocnVsZV9pZCkgPC0gMCBpblxuICAgIHRcblxuICBsZXQgcmVzZXRfY29uc2VjdXRpdmVfYmxvY2tlZCB0ID1cbiAgICBsZXQgKCkgPSB0LmNvbnNlY3V0aXZlX2Jsb2NrZWQgPC0gMCBpblxuICAgIHRcblxuICBsZXQgaW5jcl9jb25zZWN1dGl2ZV9ibG9ja2VkIHQgPVxuICAgIGxldCAoKSA9IHQuY29uc2VjdXRpdmVfYmxvY2tlZCA8LSBzdWNjIHQuY29uc2VjdXRpdmVfYmxvY2tlZCBpblxuICAgIHRcblxuICBsZXQgaW5jcl9ub19tb3JlX2JpbmFyeSB+cnVsZV9pZCB0ID1cbiAgICBsZXQgKCkgPSB0Lm5vX21vcmVfYmluYXJ5IDwtIHN1Y2MgdC5ub19tb3JlX2JpbmFyeSBpblxuICAgIGxldCAoKSA9IHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpIDwtIHN1Y2MgdC5jb25zZWN1dGl2ZS4ocnVsZV9pZCkgaW5cbiAgICB0XG5cbiAgbGV0IGluY3Jfbm9fbW9yZV91bmFyeSB+cnVsZV9pZCB0ID1cbiAgICBsZXQgKCkgPSB0Lm5vX21vcmVfdW5hcnkgPC0gc3VjYyB0Lm5vX21vcmVfdW5hcnkgaW5cbiAgICBsZXQgKCkgPSB0LmNvbnNlY3V0aXZlLihydWxlX2lkKSA8LSBzdWNjIHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpIGluXG4gICAgdFxuXG4gIGxldCBpbmNyX2NsYXNoaW5nX2luc3RhbmNlIH5ydWxlX2lkIHQgPVxuICAgIGxldCAoKSA9IHQuY2xhc2hpbmdfaW5zdGFuY2UgPC0gc3VjYyB0LmNsYXNoaW5nX2luc3RhbmNlIGluXG4gICAgbGV0ICgpID0gdC5jb25zZWN1dGl2ZS4ocnVsZV9pZCkgPC0gc3VjYyB0LmNvbnNlY3V0aXZlLihydWxlX2lkKSBpblxuICAgIHRcblxuICBsZXQgaW5jcl90aW1lX2NvcnJlY3Rpb24gdCA9XG4gICAgbGV0ICgpID0gdC50aW1lX2NvcnJlY3Rpb24gPC0gc3VjYyB0LnRpbWVfY29ycmVjdGlvbiBpblxuICAgIHRcblxuICBsZXQgcHJpbnRfZGV0YWlsIH5jdXJyZW50X2V2ZW50IGYgdCA9XG4gICAgbGV0IGFsbCA9IGZsb2F0X29mX2ludCAobmIgdCkgaW5cbiAgICBsZXQgZXZlbnRzID0gZmxvYXRfb2ZfaW50IGN1cnJlbnRfZXZlbnQgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfb3Blbl92Ym94IGYgMCBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBhbGwgPiAwLiB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIkBbJS4yZiUlIG9mIGV2ZW50IGxvb3BzIHdlcmUgcHJvZHVjdGl2ZS5AIE51bGwgZXZlbnQgY2F1c2U6QF1ALFwiXG4gICAgICAgICAgKDEwMC4gKi4gZXZlbnRzIC8uIChhbGwgKy4gZXZlbnRzKSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiB0Lm5vX21vcmVfdW5hcnkgPiAwIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiXFx0VmFsaWQgZW1iZWRkaW5nIGJ1dCBubyBsb25nZXIgdW5hcnkgd2hlbiByZXF1aXJlZDogJS4yZiUlQCxcIlxuICAgICAgICAgICgxMDAuICouIGZsb2F0X29mX2ludCB0Lm5vX21vcmVfdW5hcnkgLy4gYWxsKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHQubm9fbW9yZV9iaW5hcnkgPiAwIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiXFx0VmFsaWQgZW1iZWRkaW5nIGJ1dCBub3QgYmluYXJ5IHdoZW4gcmVxdWlyZWQ6ICUuMmYlJUAsXCJcbiAgICAgICAgICAoMTAwLiAqLiBmbG9hdF9vZl9pbnQgdC5ub19tb3JlX2JpbmFyeSAvLiBhbGwpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgdC5jbGFzaGluZ19pbnN0YW5jZSA+IDAgdGhlblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiXFx0Q2xhc2hpbmcgaW5zdGFuY2U6ICUuMmYlJUAsXCJcbiAgICAgICAgICAoMTAwLiAqLiBmbG9hdF9vZl9pbnQgdC5jbGFzaGluZ19pbnN0YW5jZSAvLiBhbGwpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgdC50aW1lX2NvcnJlY3Rpb24gPiAwIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlxcdFBlcnR1cmJhdGlvbiBpbnRlcnJ1cHRpbmcgdGltZSBhZHZhbmNlOiAlLjJmJSVALFwiXG4gICAgICAgICAgKDEwMC4gKi4gZmxvYXRfb2ZfaW50IHQudGltZV9jb3JyZWN0aW9uIC8uIGFsbClcbiAgICBpblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAXVwiXG5cbiAgbGV0IHRvX3lvanNvbiB0ID1cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJjb25zZWN1dGl2ZVwiLCBKc29uVXRpbC5vZl9hcnJheSBKc29uVXRpbC5vZl9pbnQgdC5jb25zZWN1dGl2ZTtcbiAgICAgICAgXCJjb25zZWN1dGl2ZV9ibG9ja2VkXCIsIGBJbnQgdC5jb25zZWN1dGl2ZV9ibG9ja2VkO1xuICAgICAgICBcIm5vX21vcmVfYmluYXJ5XCIsIGBJbnQgdC5ub19tb3JlX2JpbmFyeTtcbiAgICAgICAgXCJub19tb3JlX3VuYXJ5XCIsIGBJbnQgdC5ub19tb3JlX3VuYXJ5O1xuICAgICAgICBcImNsYXNoaW5nX2luc3RhbmNlXCIsIGBJbnQgdC5jbGFzaGluZ19pbnN0YW5jZTtcbiAgICAgICAgXCJ0aW1lX2NvcnJlY3Rpb25cIiwgYEludCB0LnRpbWVfY29ycmVjdGlvbjtcbiAgICAgIF1cblxuICBsZXQgb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gNiAtPlxuICAgICAge1xuICAgICAgICBjb25zZWN1dGl2ZSA9XG4gICAgICAgICAgKEpzb25VdGlsLnRvX2FycmF5IFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludClcbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJjb25zZWN1dGl2ZVwiIHgpO1xuICAgICAgICBjb25zZWN1dGl2ZV9ibG9ja2VkID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19pbnRcbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJjb25zZWN1dGl2ZV9ibG9ja2VkXCIgeCk7XG4gICAgICAgIG5vX21vcmVfYmluYXJ5ID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcIm5vX21vcmVfYmluYXJ5XCIgeCk7XG4gICAgICAgIG5vX21vcmVfdW5hcnkgPVxuICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwibm9fbW9yZV91bmFyeVwiIHgpO1xuICAgICAgICBjbGFzaGluZ19pbnN0YW5jZSA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9faW50XG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiY2xhc2hpbmdfaW5zdGFuY2VcIiB4KTtcbiAgICAgICAgdGltZV9jb3JyZWN0aW9uID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19pbnRcbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJ0aW1lX2NvcnJlY3Rpb25cIiB4KTtcbiAgICAgIH1cbiAgICB8IHggLT5cbiAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgc2ltdWxhdGlvbiBlZmZpY2llbmN5XCIsIHgpKVxuXG4gIGxldCB3cml0ZV90IG9iIGYgPSBZb2pzb24uQmFzaWMudG9fYnVmZmVyIG9iICh0b195b2pzb24gZilcblxuICBsZXQgc3RyaW5nX29mX3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIHdyaXRlX3Qgb2IgeDtcbiAgICBCdWZmZXIuY29udGVudHMgb2JcblxuICBsZXQgcmVhZF90IHAgbGIgPSBvZl95b2pzb24gKFlvanNvbi5CYXNpYy5mcm9tX2xleGJ1ZiB+c3RyZWFtOnRydWUgcCBsYilcbiAgbGV0IHRfb2Zfc3RyaW5nIHMgPSByZWFkX3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmVuZFxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgdGltZTogZmxvYXQ7XG4gIG11dGFibGUgZXZlbnRzOiBpbnQ7XG4gIG11dGFibGUgc3RvcmllczogaW50O1xuICBtdXRhYmxlIGxhc3RfcG9pbnQ6IGludDtcbiAgbXV0YWJsZSBzdGF0X251bGw6IEVmZmljaWVuY3kudDtcbiAgaW5pdF90aW1lOiBmbG9hdDtcbiAgaW5pdF9ldmVudDogaW50O1xuICBtdXRhYmxlIHBsb3RfcGVyaW9kOiBDb25maWd1cmF0aW9uLnBlcmlvZDtcbiAgbXV0YWJsZSBtYXhfdGltZTogZmxvYXQgb3B0aW9uO1xuICBtdXRhYmxlIG1heF9ldmVudDogaW50IG9wdGlvbjtcbn1cblxubGV0IGN1cnJlbnRfc3RvcnkgYyA9IGMuc3Rvcmllc1xubGV0IGN1cnJlbnRfdGltZSBjID0gYy50aW1lXG5sZXQgY3VycmVudF9ldmVudCBjID0gYy5ldmVudHNcbmxldCBuYl9udWxsX2V2ZW50IGMgPSBFZmZpY2llbmN5Lm5iIGMuc3RhdF9udWxsXG5cbmxldCBjb25zZWN1dGl2ZV9udWxsX2V2ZW50IH5ydWxlX2lkIGMgPVxuICBFZmZpY2llbmN5Lm5iX2NvbnNlY3V0aXZlIH5ydWxlX2lkIGMuc3RhdF9udWxsXG5cbmxldCBjb25zZWN1dGl2ZV9ibG9ja2VkIGMgPSBFZmZpY2llbmN5Lm5iX2NvbnNlY3V0aXZlX2Jsb2NrZWQgYy5zdGF0X251bGxcbmxldCBpbmNfc3RvcmllcyBjID0gYy5zdG9yaWVzIDwtIGMuc3RvcmllcyArIDFcbmxldCBpbmNfZXZlbnRzIGMgPSBjLmV2ZW50cyA8LSBjLmV2ZW50cyArIDFcblxubGV0IGNoZWNrX3RpbWUgYyA9XG4gIG1hdGNoIGMubWF4X3RpbWUgd2l0aFxuICB8IE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgbWF4IC0+IGMudGltZSA8PSBtYXhcblxubGV0IGNoZWNrX291dHB1dF90aW1lIGMgb3QgPVxuICBtYXRjaCBjLm1heF90aW1lIHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIG1heCAtPiBvdCA8PSBtYXhcblxubGV0IGNoZWNrX2V2ZW50cyBjID1cbiAgbWF0Y2ggYy5tYXhfZXZlbnQgd2l0aFxuICB8IE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgbWF4IC0+IGMuZXZlbnRzIDwgbWF4XG5cbmxldCBvbmVfdGltZV9hZHZhbmNlIGMgZHQgPVxuICBsZXQgKCkgPSBjLnRpbWUgPC0gYy50aW1lICsuIGR0IGluXG4gIGNoZWNrX3RpbWUgY1xuXG5sZXQgb25lX2NvbnN0cnVjdGl2ZV9ldmVudCB+cnVsZV9pZCBjID1cbiAgbGV0ICgpID0gYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5yZXNldF9jb25zZWN1dGl2ZSB+cnVsZV9pZCBjLnN0YXRfbnVsbCBpblxuICBsZXQgKCkgPSBjLnN0YXRfbnVsbCA8LSBFZmZpY2llbmN5LnJlc2V0X2NvbnNlY3V0aXZlX2Jsb2NrZWQgYy5zdGF0X251bGwgaW5cbiAgbGV0ICgpID0gaW5jX2V2ZW50cyBjIGluXG4gIGNoZWNrX3RpbWUgYyAmJiBjaGVja19ldmVudHMgY1xuXG5sZXQgb25lX25vX21vcmVfYmluYXJ5X2V2ZW50IH5ydWxlX2lkIGMgPVxuICBsZXQgKCkgPSBjLnN0YXRfbnVsbCA8LSBFZmZpY2llbmN5LmluY3Jfbm9fbW9yZV9iaW5hcnkgfnJ1bGVfaWQgYy5zdGF0X251bGwgaW5cbiAgY2hlY2tfdGltZSBjICYmIGNoZWNrX2V2ZW50cyBjXG5cbmxldCBvbmVfbm9fbW9yZV91bmFyeV9ldmVudCB+cnVsZV9pZCBjID1cbiAgbGV0ICgpID0gYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5pbmNyX25vX21vcmVfdW5hcnkgfnJ1bGVfaWQgYy5zdGF0X251bGwgaW5cbiAgY2hlY2tfdGltZSBjICYmIGNoZWNrX2V2ZW50cyBjXG5cbmxldCBvbmVfY2xhc2hpbmdfaW5zdGFuY2VfZXZlbnQgfnJ1bGVfaWQgYyA9XG4gIGxldCAoKSA9XG4gICAgYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5pbmNyX2NsYXNoaW5nX2luc3RhbmNlIH5ydWxlX2lkIGMuc3RhdF9udWxsXG4gIGluXG4gIGNoZWNrX3RpbWUgYyAmJiBjaGVja19ldmVudHMgY1xuXG5sZXQgb25lX3RpbWVfY29ycmVjdGlvbl9ldmVudCA/dGkgYyA9XG4gIG1hdGNoIE9wdGlvbl91dGlsLmJpbmQgTmJyLnRvX2Zsb2F0IHRpIHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSB0aSAtPlxuICAgIGxldCAoKSA9IGMudGltZSA8LSB0aSBpblxuICAgIGxldCAoKSA9IGMuc3RhdF9udWxsIDwtIEVmZmljaWVuY3kuaW5jcl90aW1lX2NvcnJlY3Rpb24gYy5zdGF0X251bGwgaW5cbiAgICBjaGVja190aW1lIGMgJiYgY2hlY2tfZXZlbnRzIGNcblxubGV0IG9uZV9ibG9ja2VkX2V2ZW50IGMgPVxuICBsZXQgKCkgPSBjLnN0YXRfbnVsbCA8LSBFZmZpY2llbmN5LmluY3JfY29uc2VjdXRpdmVfYmxvY2tlZCBjLnN0YXRfbnVsbCBpblxuICBjaGVja190aW1lIGMgJiYgY2hlY2tfZXZlbnRzIGNcblxubGV0IGdldF9lZmZpY2llbmN5IGMgPSBjLnN0YXRfbnVsbFxuXG5sZXQgcHJpbnRfZWZmaWNpZW5jeSBmIGMgPVxuICBFZmZpY2llbmN5LnByaW50X2RldGFpbCB+Y3VycmVudF9ldmVudDooY3VycmVudF9ldmVudCBjKSBmIGMuc3RhdF9udWxsXG5cbmxldCBpbml0X3RpbWUgYyA9IGMuaW5pdF90aW1lXG5sZXQgbWF4X3RpbWUgYyA9IGMubWF4X3RpbWVcbmxldCBtYXhfZXZlbnRzIGMgPSBjLm1heF9ldmVudFxubGV0IHBsb3RfcGVyaW9kIGMgPSBjLnBsb3RfcGVyaW9kXG5cbmxldCB0aW1lX3JhdGlvIHQgPVxuICBtYXRjaCB0Lm1heF90aW1lIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHRtYXggLT5cbiAgICBpZiB0bWF4ID4gdC5pbml0X3RpbWUgdGhlblxuICAgICAgU29tZSAoKHQudGltZSAtLiB0LmluaXRfdGltZSkgLy4gKHRtYXggLS4gdC5pbml0X3RpbWUpKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxubGV0IGV2ZW50X3JhdGlvIHQgPVxuICBtYXRjaCB0Lm1heF9ldmVudCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBlbWF4IC0+XG4gICAgaWYgZW1heCA9IDAgdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIFNvbWVcbiAgICAgICAgKGZsb2F0X29mX2ludCAodC5ldmVudHMgLSB0LmluaXRfZXZlbnQpXG4gICAgICAgIC8uIGZsb2F0X29mX2ludCAoZW1heCAtIHQuaW5pdF9ldmVudCkpXG5cbmxldCBzZXRfbWF4X3RpbWUgYyB0ID0gYy5tYXhfdGltZSA8LSB0XG5sZXQgc2V0X21heF9ldmVudHMgYyBlID0gYy5tYXhfZXZlbnQgPC0gZVxuXG5sZXQgdHJhY2tlZF9ldmVudHMgKGNvdW50ZXIgOiB0KSA6IGludCBvcHRpb24gPVxuICBpZiBjb3VudGVyLnN0b3JpZXMgPj0gMCB0aGVuXG4gICAgU29tZSBjb3VudGVyLnN0b3JpZXNcbiAgZWxzZVxuICAgIE5vbmVcblxubGV0IHNldF9wbG90X3BlcmlvZCAodCA6IHQpIHBsb3RfcGVyaW9kIDogdW5pdCA9IHQucGxvdF9wZXJpb2QgPC0gcGxvdF9wZXJpb2RcblxubGV0IGNyZWF0ZSA/KGluaXRfdCA9IDAuKSA/KGluaXRfZSA9IDApID9tYXhfdGltZSA/bWF4X2V2ZW50IH5wbG90X3BlcmlvZFxuICAgIH5uYl9ydWxlcyAoKSA9XG4gIHtcbiAgICB0aW1lID0gaW5pdF90O1xuICAgIGV2ZW50cyA9IGluaXRfZTtcbiAgICBzdG9yaWVzID0gLTE7XG4gICAgc3RhdF9udWxsID0gRWZmaWNpZW5jeS5pbml0IG5iX3J1bGVzO1xuICAgIHBsb3RfcGVyaW9kO1xuICAgIGluaXRfdGltZSA9IGluaXRfdDtcbiAgICBpbml0X2V2ZW50ID0gaW5pdF9lO1xuICAgIG1heF90aW1lO1xuICAgIG1heF9ldmVudDtcbiAgICBsYXN0X3BvaW50ID0gMDtcbiAgfVxuXG5sZXQgcmVpbml0aWFsaXplIGNvdW50ZXIgPVxuICBjb3VudGVyLnRpbWUgPC0gY291bnRlci5pbml0X3RpbWU7XG4gIGNvdW50ZXIuZXZlbnRzIDwtIGNvdW50ZXIuaW5pdF9ldmVudDtcbiAgY291bnRlci5zdG9yaWVzIDwtIC0xO1xuICBjb3VudGVyLmxhc3RfcG9pbnQgPC0gMDtcbiAgY291bnRlci5zdGF0X251bGwgPC1cbiAgICBFZmZpY2llbmN5LmluaXQgKEFycmF5Lmxlbmd0aCBjb3VudGVyLnN0YXRfbnVsbC5FZmZpY2llbmN5LmNvbnNlY3V0aXZlKVxuXG5sZXQgbmV4dF9zdGVwX3NpbXVsYXRpb25faW5mbyBjID1cbiAge1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCA9IGN1cnJlbnRfc3RvcnkgYztcbiAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZSA9IGN1cnJlbnRfdGltZSBjO1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudCA9IGN1cnJlbnRfZXZlbnQgYyArIDE7XG4gICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnByb2ZpbGluZ19pbmZvID0gKCk7XG4gIH1cblxubGV0IGN1cnJlbnRfc2ltdWxhdGlvbl9pbmZvIGMgPVxuICB7XG4gICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2lkID0gY3VycmVudF9zdG9yeSBjO1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lID0gY3VycmVudF90aW1lIGM7XG4gICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2V2ZW50ID0gY3VycmVudF9ldmVudCBjO1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5wcm9maWxpbmdfaW5mbyA9ICgpO1xuICB9XG5cbmxldCBuZXh0X3N0b3J5IGMgPVxuICBsZXQgKCkgPSBpbmNfc3RvcmllcyBjIGluXG4gIG5leHRfc3RlcF9zaW11bGF0aW9uX2luZm8gY1xuXG5sZXQgcG9zaXRpdmVfcGxvdF9wZXJpb2QgY291bnRlciA9XG4gIG1hdGNoIHBsb3RfcGVyaW9kIGNvdW50ZXIgd2l0aFxuICB8IENvbmZpZ3VyYXRpb24uREUgZSAtPiBlID4gMFxuICB8IENvbmZpZ3VyYXRpb24uRFQgdCAtPiB0ID4gMC5cblxubGV0IG5leHRfcG9pbnQgY291bnRlciBkdCA9XG4gIG1hdGNoIGNvdW50ZXIucGxvdF9wZXJpb2Qgd2l0aFxuICB8IENvbmZpZ3VyYXRpb24uRFQgZFQgLT5cbiAgICBpZiBkVCA8PSAwLiB0aGVuXG4gICAgICAwXG4gICAgZWxzZVxuICAgICAgaW50X29mX2Zsb2F0XG4gICAgICAgICgobWluXG4gICAgICAgICAgICAoT3B0aW9uX3V0aWwudW5zb21lIGluZmluaXR5IChtYXhfdGltZSBjb3VudGVyKSlcbiAgICAgICAgICAgIChkdCArLiBjdXJyZW50X3RpbWUgY291bnRlcilcbiAgICAgICAgIC0uIGNvdW50ZXIuaW5pdF90aW1lKVxuICAgICAgICAvLiBkVClcbiAgfCBDb25maWd1cmF0aW9uLkRFIGRFIC0+XG4gICAgaWYgZEUgPD0gMCB0aGVuXG4gICAgICAwXG4gICAgZWxzZVxuICAgICAgKGN1cnJlbnRfZXZlbnQgY291bnRlciAtIGNvdW50ZXIuaW5pdF9ldmVudCkgLyBkRVxuXG5sZXQgdG9fcGxvdF9wb2ludHMgY291bnRlciBkdCA9XG4gIGxldCBuZXh0ID0gbmV4dF9wb2ludCBjb3VudGVyIGR0IGluXG4gIGxldCBsYXN0ID0gY291bnRlci5sYXN0X3BvaW50IGluXG4gIGxldCAoKSA9IGNvdW50ZXIubGFzdF9wb2ludCA8LSBuZXh0IGluXG4gIGxldCBuID0gbmV4dCAtIGxhc3QgaW5cbiAgbWF0Y2ggY291bnRlci5wbG90X3BlcmlvZCB3aXRoXG4gIHwgQ29uZmlndXJhdGlvbi5EVCBkVCAtPlxuICAgICggc25kXG4gICAgICAgIChUb29scy5yZWN0aVxuICAgICAgICAgICAoZnVuICh0aW1lLCBhY2MpIF8gLT5cbiAgICAgICAgICAgICAoIHRpbWUgLS4gZFQsXG4gICAgICAgICAgICAgICBpZiBjaGVja19vdXRwdXRfdGltZSBjb3VudGVyIHRpbWUgdGhlblxuICAgICAgICAgICAgICAgICB0aW1lIDo6IGFjY1xuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBhY2MgKSlcbiAgICAgICAgICAgKGNvdW50ZXIuaW5pdF90aW1lICsuIChmbG9hdF9vZl9pbnQgbmV4dCAqLiBkVCksIFtdKVxuICAgICAgICAgICBuKSxcbiAgICAgIGNvdW50ZXIgKVxuICB8IENvbmZpZ3VyYXRpb24uREUgXyAtPlxuICAgIGlmIG4gPSAxIHRoZW5cbiAgICAgIFsgY291bnRlci50aW1lIF0sIGNvdW50ZXJcbiAgICBlbHNlIGlmIG4gPSAwIHRoZW5cbiAgICAgIFtdLCBjb3VudGVyXG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdcbiAgICAgICAgKFwiQ291bnRlci50b19wbG90X3BvaW50czogaW52YWxpZCBpbmNyZW1lbnQgXCIgXiBzdHJpbmdfb2ZfaW50IG4pXG5cbmxldCBmaWxsIH5vdXRwdXRzIGNvdW50ZXIgfmR0ID1cbiAgbGV0IHBvaW50cywgY291bnRlcicgPSB0b19wbG90X3BvaW50cyBjb3VudGVyIGR0IGluXG4gIExpc3QuaXRlciAoZnVuIHRpbWUgLT4gb3V0cHV0cyBjb3VudGVyJyB0aW1lKSBwb2ludHNcblxubGV0IGZha2VfdGltZSB0IHRpbWUgPSB7IHQgd2l0aCB0aW1lIH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBwcmludF9pbml0aWFsX2lucHV0cyA/dXVpZCBjb25mIGVudiBpbnB1dHNfZm9ybSBpbml0ID1cbiAgbGV0IG5vQ291bnRlcnMgPSBmYWxzZSBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIHV1aWQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB1dWlkIC0+IEZvcm1hdC5mcHJpbnRmIGlucHV0c19mb3JtIFwiLy8gXFxcInV1aWRcXFwiIDogXFxcIiVpXFxcIkAuXCIgdXVpZFxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGlucHV0c19mb3JtIFwiJWFALiVhQC5cIiBDb25maWd1cmF0aW9uLnByaW50IGNvbmZcbiAgICAgIChLYXBwYV9wcmludGVyLmVudl9rYXBwYSB+bm9Db3VudGVycylcbiAgICAgIGVudlxuICBpblxuICBsZXQgc2lncyA9IE1vZGVsLnNpZ25hdHVyZXMgZW52IGluXG4gIEZvcm1hdC5mcHJpbnRmIGlucHV0c19mb3JtIFwiQC5AWzx2PiVhQF1ALlwiXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIChuLCByKSAtPlxuICAgICAgICAgbGV0IF8sIGluc19mcmVzaCA9XG4gICAgICAgICAgIFBhdHRlcm5fY29tcGlsZXIubGthcHBhX29mX2VsZW1lbnRhcnlfcnVsZSBzaWdzIChNb2RlbC5kb21haW4gZW52KSByXG4gICAgICAgICBpblxuICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgaWYgaW5zX2ZyZXNoIDw+IFtdIHRoZW4gKFxuICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aG92IDI+JSVpbml0OkAgQFslYUBdQCBAWyVhQF1AXVwiXG4gICAgICAgICAgICAgICAgIChLYXBwYV9wcmludGVyLmFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgICAgKFJhd19taXh0dXJlLnByaW50IH5ub0NvdW50ZXJzIH5jcmVhdGVkOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH5pbml0aWFsX2NvbW1hOmZhbHNlIH5zaWdzKVxuICAgICAgICAgICAgICAgICBpbnNfZnJlc2hcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGlmIHIuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnMgPD4gW10gdGhlbiBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZiAoKVxuICAgICAgICAgICApXG4gICAgICAgICBpblxuICAgICAgICAgUHAubGlzdCBQcC5zcGFjZVxuICAgICAgICAgICAoZnVuIGYgKG5iLCB0aykgLT5cbiAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aG92IDI+JSVpbml0OkAgQFslYUBdQCAlYUBdXCJcbiAgICAgICAgICAgICAgIChLYXBwYV9wcmludGVyLmFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgICAgICAgICAgICAoZnN0IChBbGdfZXhwci5tdWx0IChMb2MuYW5ub3Rfd2l0aF9kdW1teSBuKSBuYikpXG4gICAgICAgICAgICAgICAoTW9kZWwucHJpbnRfdG9rZW4gfmVudikgdGspXG4gICAgICAgICAgIGYgci5QcmltaXRpdmVzLmRlbHRhX3Rva2VucykpXG4gICAgaW5pdFxuXG50eXBlIHNuYXBzaG90ID0ge1xuICBzbmFwc2hvdF9ldmVudDogaW50O1xuICBzbmFwc2hvdF90aW1lOiBmbG9hdDtcbiAgc25hcHNob3RfYWdlbnRzOiAoaW50ICogVXNlcl9ncmFwaC5jb25uZWN0ZWRfY29tcG9uZW50KSBsaXN0O1xuICBzbmFwc2hvdF90b2tlbnM6IChzdHJpbmcgKiBOYnIudCkgYXJyYXk7XG59XG5cbmxldCBwcmludF9zbmFwc2hvdCA/dXVpZCBmIHMgPVxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2Pi8vIFNuYXBzaG90IFtFdmVudDogJWRdQCxcIlxuICAgICAgKCpcIiwgVGltZTogJWZcIiopIHMuc25hcHNob3RfZXZlbnRcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhJSVkZWY6IFxcXCJUMFxcXCIgXFxcIiVzXFxcIkAsQCwlYUAsJWFAXUAuXCJcbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiB4IC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLy8gXFxcInV1aWRcXFwiIDogXFxcIiVpXFxcIkAsXCIgeCkpXG4gICAgdXVpZFxuICAgIChKc29uVXRpbC5zdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgcy5zbmFwc2hvdF90aW1lKVxuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoaSwgbWl4KSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGhvdiAyPiUlaW5pdDogJWkgLyolaSBhZ2VudHMqLyAlYUBdXCIgaVxuICAgICAgICAgICAoQXJyYXkuZm9sZF9sZWZ0IChmdW4gcyBlIC0+IHMgKyBBcnJheS5sZW5ndGggZSkgMCBtaXgpXG4gICAgICAgICAgIFVzZXJfZ3JhcGgucHJpbnRfY2MgbWl4KSlcbiAgICBzLnNuYXBzaG90X2FnZW50c1xuICAgIChQcC5hcnJheSBQcC5zcGFjZSAoZnVuIF8gZiAobmEsIGVsKSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiUlaW5pdDogJWEgJXNcIiBOYnIucHJpbnQgZWwgbmEpKVxuICAgIHMuc25hcHNob3RfdG9rZW5zXG5cbmxldCBwcmludF9kb3Rfc25hcHNob3QgP3V1aWQgZiBzID1cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4vLyBTbmFwc2hvdCBbRXZlbnQ6ICVkXUAsXCJcbiAgICAgICgqXCIsIFRpbWU6ICVmXCIqKSBzLnNuYXBzaG90X2V2ZW50XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYWRpZ3JhcGggR3tALCVhQCwlYX1AXUAuXCJcbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiB4IC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLy8gXFxcInV1aWRcXFwiIDogXFxcIiVpXFxcIkAsXCIgeCkpXG4gICAgdXVpZFxuICAgIChQcC5saXN0aSBQcC5jdXQgKGZ1biBpIGYgKG5iLCBtaXgpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPnN1YmdyYXBoIGNsdXN0ZXIlZHtALFwiIGk7XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgIFwiY291bnRlciVkIFtsYWJlbCA9IFxcXCIlZCBpbnN0YW5jZShzKVxcXCIsIHNoYXBlPW5vbmVdO0AsJWF9QF1cIiBpIG5iXG4gICAgICAgICAgIChVc2VyX2dyYXBoLnByaW50X2RvdF9jYyBpKVxuICAgICAgICAgICBtaXgpKVxuICAgIHMuc25hcHNob3RfYWdlbnRzXG4gICAgKFBwLmFycmF5IFBwLmN1dCAoZnVuIGkgZiAobmEsIGVsKSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInRva2VuXyVkIFtsYWJlbCA9IFxcXCIlcyAoJWEpXFxcIiAsIHNoYXBlPW5vbmVdXCIgaSBuYVxuICAgICAgICAgICBOYnIucHJpbnQgZWwpKVxuICAgIHMuc25hcHNob3RfdG9rZW5zXG5cbmxldCB3cml0ZV9zbmFwc2hvdCBvYiBzID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic25hcHNob3RfZXZlbnRcIiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iXG4gICAgICBzLnNuYXBzaG90X2V2ZW50XG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJzbmFwc2hvdF90aW1lXCIgWW9qc29uLkJhc2ljLndyaXRlX2Zsb2F0IG9iXG4gICAgICBzLnNuYXBzaG90X3RpbWVcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInNuYXBzaG90X2FnZW50c1wiXG4gICAgICAoSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfaW50XG4gICAgICAgICAgICBVc2VyX2dyYXBoLndyaXRlX2Nvbm5lY3RlZF9jb21wb25lbnQpKVxuICAgICAgb2Igcy5zbmFwc2hvdF9hZ2VudHNcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInNuYXBzaG90X3Rva2Vuc1wiXG4gICAgICAoSnNvblV0aWwud3JpdGVfYXJyYXlcbiAgICAgICAgIChKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBOYnIud3JpdGVfdCkpXG4gICAgICBvYiBzLnNuYXBzaG90X3Rva2Vuc1xuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cbmxldCByZWFkX3NuYXBzaG90IHAgbGIgPVxuICBsZXQgc25hcHNob3RfZXZlbnQsIHNuYXBzaG90X3RpbWUsIHNuYXBzaG90X2FnZW50cywgc25hcHNob3RfdG9rZW5zID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKGUsIHRpLCBhLCB0KSBrZXkgcCBsYiAtPlxuICAgICAgICBpZiBrZXkgPSBcInNuYXBzaG90X2V2ZW50XCIgdGhlblxuICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiLCB0aSwgYSwgdFxuICAgICAgICBlbHNlIGlmIGtleSA9IFwic25hcHNob3RfdGltZVwiIHRoZW5cbiAgICAgICAgICBlLCBZb2pzb24uQmFzaWMucmVhZF9udW1iZXIgcCBsYiwgYSwgdFxuICAgICAgICBlbHNlIGlmIGtleSA9IFwic25hcHNob3RfYWdlbnRzXCIgdGhlblxuICAgICAgICAgICggZSxcbiAgICAgICAgICAgIHRpLFxuICAgICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfbGlzdFxuICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucmVhZF9jb25uZWN0ZWRfY29tcG9uZW50KVxuICAgICAgICAgICAgICBwIGxiLFxuICAgICAgICAgICAgdCApXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJzbmFwc2hvdF90b2tlbnNcIikgaW5cbiAgICAgICAgICAoIGUsXG4gICAgICAgICAgICB0aSxcbiAgICAgICAgICAgIGEsXG4gICAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9hcnJheVxuICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIE5ici5yZWFkX3QpXG4gICAgICAgICAgICAgIHAgbGIgKVxuICAgICAgICApKVxuICAgICAgKC0xLCBuYW4sIFtdLCBbfHxdKSBwIGxiXG4gIGluXG4gIHsgc25hcHNob3RfZXZlbnQ7IHNuYXBzaG90X3RpbWU7IHNuYXBzaG90X2FnZW50czsgc25hcHNob3RfdG9rZW5zIH1cblxubGV0IHN0cmluZ19vZl9zbmFwc2hvdCA9IEpzb25VdGlsLnN0cmluZ19vZl93cml0ZSB3cml0ZV9zbmFwc2hvdFxuXG5sZXQgc25hcHNob3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbnR5cGUgZGluX2RhdGEgPSB7XG4gIGRpbl9raW5kOiBQcmltaXRpdmVzLmRpbl9raW5kO1xuICBkaW5fc3RhcnQ6IGZsb2F0O1xuICBkaW5faGl0czogaW50IGFycmF5O1xuICBkaW5fZmx1eHM6IGZsb2F0IGFycmF5IGFycmF5O1xufVxuXG50eXBlIGRpbiA9IHsgZGluX3J1bGVzOiBzdHJpbmcgYXJyYXk7IGRpbl9kYXRhOiBkaW5fZGF0YTsgZGluX2VuZDogZmxvYXQgfVxuXG5sZXQgd3JpdGVfZGluIG9iIGYgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaW5fa2luZFwiIFByaW1pdGl2ZXMud3JpdGVfZGluX2tpbmQgb2JcbiAgICAgIGYuZGluX2RhdGEuZGluX2tpbmRcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcImRpbl9zdGFydFwiIFlvanNvbi5CYXNpYy53cml0ZV9mbG9hdCBvYlxuICAgICAgZi5kaW5fZGF0YS5kaW5fc3RhcnRcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcImRpbl9lbmRcIiBZb2pzb24uQmFzaWMud3JpdGVfZmxvYXQgb2IgZi5kaW5fZW5kXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaW5fcnVsZXNcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcpXG4gICAgICBvYiBmLmRpbl9ydWxlc1xuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiZGluX2hpdHNcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5IFlvanNvbi5CYXNpYy53cml0ZV9pbnQpXG4gICAgICBvYiBmLmRpbl9kYXRhLmRpbl9oaXRzXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaW5fZmx1eHNcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5IChKc29uVXRpbC53cml0ZV9hcnJheSBZb2pzb24uQmFzaWMud3JpdGVfZmxvYXQpKVxuICAgICAgb2IgZi5kaW5fZGF0YS5kaW5fZmx1eHNcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgcmVhZF9kaW4gcCBsYiA9XG4gIGxldCBkaW5fa2luZCwgZGluX3N0YXJ0LCBkaW5faGl0cywgZGluX2ZsdXhzLCBkaW5fcnVsZXMsIGRpbl9lbmQgPVxuICAgIFlvanNvbi5CYXNpYy5yZWFkX2ZpZWxkc1xuICAgICAgKGZ1biAoaywgcywgaCwgZiwgciwgZSkga2V5IHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJkaW5fa2luZFwiIHRoZW5cbiAgICAgICAgICBQcmltaXRpdmVzLnJlYWRfZGluX2tpbmQgcCBsYiwgcywgaCwgZiwgciwgZVxuICAgICAgICBlbHNlIGlmIGtleSA9IFwiZGluX3N0YXJ0XCIgdGhlblxuICAgICAgICAgIGssIFlvanNvbi5CYXNpYy5yZWFkX251bWJlciBwIGxiLCBoLCBmLCByLCBlXG4gICAgICAgIGVsc2UgaWYga2V5ID0gXCJkaW5faGl0c1wiIHRoZW5cbiAgICAgICAgICBrLCBzLCBZb2pzb24uQmFzaWMucmVhZF9hcnJheSBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYiwgZiwgciwgZVxuICAgICAgICBlbHNlIGlmIGtleSA9IFwiZGluX2ZsdXhzXCIgdGhlblxuICAgICAgICAgICggayxcbiAgICAgICAgICAgIHMsXG4gICAgICAgICAgICBoLFxuICAgICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfYXJyYXlcbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IFlvanNvbi5CYXNpYy5yZWFkX251bWJlcilcbiAgICAgICAgICAgICAgcCBsYixcbiAgICAgICAgICAgIHIsXG4gICAgICAgICAgICBlIClcbiAgICAgICAgZWxzZSBpZiBrZXkgPSBcImRpbl9lbmRcIiB0aGVuXG4gICAgICAgICAgaywgcywgaCwgZiwgciwgWW9qc29uLkJhc2ljLnJlYWRfbnVtYmVyIHAgbGJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcImRpbl9ydWxlc1wiKSBpblxuICAgICAgICAgIGssIHMsIGgsIGYsIFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCBlXG4gICAgICAgICkpXG4gICAgICAoUHJpbWl0aXZlcy5BQlNPTFVURSwgbmFuLCBbfHxdLCBbfHxdLCBbfHxdLCBuYW4pXG4gICAgICBwIGxiXG4gIGluXG4gIHtcbiAgICBkaW5fcnVsZXM7XG4gICAgZGluX2VuZDtcbiAgICBkaW5fZGF0YSA9IHsgZGluX2tpbmQ7IGRpbl9zdGFydDsgZGluX2hpdHM7IGRpbl9mbHV4cyB9O1xuICB9XG5cbmxldCBzdHJpbmdfb2ZfZGluID0gSnNvblV0aWwuc3RyaW5nX29mX3dyaXRlIHdyaXRlX2RpblxuXG5sZXQgZGluX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW4gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxubGV0IHByaW50X2RvdF9kaW4gP3V1aWQgZGVzYyBmbHV4ID1cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiQFs8dj4lYVwiXG4gICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiB4IC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBcXFwidXVpZFxcXCIgOiBcXFwiJWlcXFwiLEAsXCIgeCkpXG4gICAgICB1dWlkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZGVzY1xuICAgICAgXCJkaWdyYXBoIEd7IGxhYmVsPVxcXCJEeW5hbWljIGluZmx1ZW5jZSBuZXR3b3JrXFxcIiA7IGxhYmVsbG9jPVxcXCJ0XFxcIiA7IFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIm5vZGUgW3NoYXBlPWJveCxzdHlsZT1maWxsZWQsZmlsbGNvbG9yPWxpZ2h0c2t5Ymx1ZV1ALFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAuYXJyYXlcbiAgICAgIChmdW4gXyAtPiAoKSlcbiAgICAgIChmdW4gcyAtPlxuICAgICAgICBQcC5hcnJheSBQcC5lbXB0eSAoZnVuIGQgZiB2IC0+XG4gICAgICAgICAgICBpZiB2ID0gMC4gdGhlblxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBjb2xvciwgYXJyb3doZWFkID1cbiAgICAgICAgICAgICAgICBpZiB2IDwgMC4gdGhlblxuICAgICAgICAgICAgICAgICAgXCJyZWQzXCIsIFwidGVlXCJcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBcImdyZWVuM1wiLCBcIm5vcm1hbFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICBcIkBbPGg+XFxcIiVzXFxcIiAtPiBcXFwiJXNcXFwiIFxcXG4gICAgICAgICAgICAgICAgIFt3ZWlnaHQ9JWQsbGFiZWw9XFxcIiUuM2ZcXFwiLGNvbG9yPSVzLGFycm93aGVhZD0lc107QF1ALFwiXG4gICAgICAgICAgICAgICAgZmx1eC5kaW5fcnVsZXMuKHMpIGZsdXguZGluX3J1bGVzLihkKVxuICAgICAgICAgICAgICAgIChhYnMgKGludF9vZl9mbG9hdCB2KSlcbiAgICAgICAgICAgICAgICB2IGNvbG9yIGFycm93aGVhZFxuICAgICAgICAgICAgKSkpXG4gICAgICBkZXNjIGZsdXguZGluX2RhdGEuZGluX2ZsdXhzXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGRlc2MgXCJ9QF1ALlwiXG5cbmxldCBwcmludF9odG1sX2RpbiBkZXNjIGZsdXggPVxuICBQcF9odG1sLmdyYXBoX3BhZ2VcbiAgICAoZnVuIGYgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiRHluYW1pYyBpbmZsdWVuY2UgbWFwXCIpXG4gICAgfnN1YnRpdGxlOihmdW4gZiAtPlxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmXG4gICAgICAgIFwiYmV0d2VlbiB0ID0gPHNwYW4gaWQ9XFxcImJlZ2luX3RpbWVcXFwiPjwvc3Bhbj5zIGFuZCB0ID0gPHNwYW4gXFxcbiAgICAgICAgIGlkPVxcXCJlbmRfdGltZVxcXCI+PC9zcGFuPnMgKDxzcGFuIGlkPVxcXCJuYl9ldmVudHNcXFwiPjwvc3Bhbj4gZXZlbnRzKVwiKVxuICAgIFtcbiAgICAgIFwiaHR0cDovL2QzanMub3JnL2QzLnY0Lm1pbi5qc1wiO1xuICAgICAgXCJodHRwczovL2NvZGUuanF1ZXJ5LmNvbS9qcXVlcnktMy4zLjEubWluLmpzXCI7XG4gICAgXVxuICAgIChmdW4gZiAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48c3R5bGU+QCwuY2hvcmQgcGF0aCB7QCBmaWxsLW9wYWNpdHk6IC42NztAIFwiXG4gICAgICBpblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcInN0cm9rZTogIzAwMDtAIHN0cm9rZS13aWR0aDogLjVweDtAIH1AXUAsPC9zdHlsZT5cIilcbiAgICAoZnVuIGYgLT5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8ZGl2IGlkPVxcXCJmbHV4X2NvbnRhaW5lclxcXCI+PC9kaXY+QCxcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+PGZvcm0+QCxcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5ALFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPGxhYmVsIGZvcj1cXFwiY29ycmVjdGlvblxcXCI+Q29ycmVjdGlvbjwvbGFiZWw+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIjxzZWxlY3QgaWQ9XFxcInNlbGVjdF9jb3JyZWN0aW9uXFxcIiBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIiBcXFxuICAgICAgICAgICBpZD1cXFwiY29ycmVjdGlvblxcXCI+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8b3B0aW9uIHZhbHVlPVxcXCJub25lXFxcIj5Ob25lPC9vcHRpb24+QCxcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjxvcHRpb24gdmFsdWU9XFxcImhpdHNcXFwiPlJ1bGUgb2NjdXJlbmNlczwvb3B0aW9uPkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCI8b3B0aW9uIHZhbHVlPVxcXCJ0aW1lXFxcIj5UaW1lPC9vcHRpb24+QF1ALDwvc2VsZWN0PkAsPC9kaXY+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIjxpbnB1dCBpZD1cXFwidG9nZ2xlX3NlbGVjdGVkX3J1bGVzXFxcIiB0eXBlPVxcXCJidXR0b25cXFwiIHZhbHVlPVxcXCJUb2dnbGUgXFxcbiAgICAgICAgICAgc2VsZWN0ZWQgcnVsZXNcXFwiPkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxsYWJlbCBjbGFzcz1cXFwiY2hlY2tib3gtaW5saW5lXFxcIj5ALFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCI8aW5wdXQgaWQ9XFxcImNoZWNrYm94X3NlbGZfaW5mbHVlbmNlXFxcIiB0eXBlPVxcXCJjaGVja2JveFxcXCI+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJSdWxlcyBzZWxmIGluZmx1ZW5jZUBdQCw8L2xhYmVsPkBdQCw8L2Zvcm0+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8Zm9ybSBpZD1cXFwibWVudVxcXCI+PC9mb3JtPkAsXCIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PHNjcmlwdD5ALCVzQCw8L3NjcmlwdD5AXUAsXCJcbiAgICAgICAgICBSZXNvdXJjZV9zdHJpbmdzLmNvbW1vbl9qc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PHNjcmlwdD5ALCVzQCw8L3NjcmlwdD5AXUAsXCJcbiAgICAgICAgICBSZXNvdXJjZV9zdHJpbmdzLmZsdXhfanNcbiAgICAgIGluXG5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIkBbPHYgMj48c2NyaXB0PkAsXFxcInVzZSBzdHJpY3RcXFwiQCxAW3ZhciBmbHV4ID1AICVzO0BdQCxcIlxuICAgICAgICAgIChzdHJpbmdfb2ZfZGluIGZsdXgpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInZhciBpZHMgPSB7QFtALFwiIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiXFxcImJlZ2luVGltZUlkXFxcIiA6IFxcXCJiZWdpbl90aW1lXFxcIixAIFwiIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiXFxcImVuZFRpbWVJZFxcXCIgOiBcXFwiZW5kX3RpbWVcXFwiLEAgXCIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwic2VsZWN0Q29ycmVjdGlvbklkXFxcIiA6IFxcXCJzZWxlY3RfY29ycmVjdGlvblxcXCIsQCBcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwibmJFdmVudHNJZFxcXCIgOiBcXFwibmJfZXZlbnRzXFxcIixAIFwiIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiXFxcInJ1bGVzQ2hlY2tib3hlc0lkXFxcIiA6IFxcXCJtZW51XFxcIixAIFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiXFxcInRvZ2dsZVJ1bGVzSWRcXFwiIDogXFxcInRvZ2dsZV9zZWxlY3RlZF9ydWxlc1xcXCIsQCBcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIlxcXCJjaGVja2JveFNlbGZJbmZsdWVuY2VJZFxcXCIgOiBcXFwiY2hlY2tib3hfc2VsZl9pbmZsdWVuY2VcXFwifTtAXUAgXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwid2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCl7IEBbQCxcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInZhciBmbHV4X21hcCA9IG5ldyBmbHV4TWFwKGlkcyk7QCBcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcImZsdXhfbWFwLnNldEZsdXgoZmx1eCk7IH07IEBdQCxcIiBpblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBdQCw8L3NjcmlwdD5cIilcbiAgICBkZXNjXG5cbnR5cGUgcGxvdCA9IHsgcGxvdF9sZWdlbmQ6IHN0cmluZyBhcnJheTsgcGxvdF9zZXJpZXM6IGZsb2F0IG9wdGlvbiBhcnJheSBsaXN0IH1cblxubGV0IGFkZF9wbG90X2xpbmUgbmV3X29ic2VydmFibGVzIHBsb3QgPVxuICBsZXQgbmV3X3ZhbHVlcyA9IEFycmF5Lm1hcCAoZnVuIG5iciAtPiBOYnIudG9fZmxvYXQgbmJyKSBuZXdfb2JzZXJ2YWJsZXMgaW5cbiAge1xuICAgIHBsb3RfbGVnZW5kID0gcGxvdC5wbG90X2xlZ2VuZDtcbiAgICBwbG90X3NlcmllcyA9IG5ld192YWx1ZXMgOjogcGxvdC5wbG90X3NlcmllcztcbiAgfVxuXG5sZXQgaW5pdF9wbG90IGVudiA9XG4gIGxldCBub0NvdW50ZXJzID0gZmFsc2UgaW5cbiAgbGV0IHBsb3RfbGVnZW5kID1cbiAgICBNb2RlbC5tYXBfb2JzZXJ2YWJsZXNcbiAgICAgIChmdW4gbyAtPlxuICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIiAoS2FwcGFfcHJpbnRlci5hbGdfZXhwciB+bm9Db3VudGVycyB+ZW52KSBvKVxuICAgICAgZW52XG4gIGluXG4gIHsgcGxvdF9sZWdlbmQ7IHBsb3Rfc2VyaWVzID0gW10gfVxuXG5sZXQgd3JpdGVfcGxvdCBvYiBmID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwibGVnZW5kXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9hcnJheSBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nKVxuICAgICAgb2IgZi5wbG90X2xlZ2VuZFxuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic2VyaWVzXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAoSnNvblV0aWwud3JpdGVfYXJyYXkgKEpzb25VdGlsLndyaXRlX29wdGlvbiBZb2pzb24uQmFzaWMud3JpdGVfZmxvYXQpKSlcbiAgICAgIG9iIGYucGxvdF9zZXJpZXNcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgcmVhZF9wbG90IHAgbGIgPVxuICBsZXQgcGxvdF9sZWdlbmQsIHBsb3Rfc2VyaWVzID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKGwsIHMpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwic2VyaWVzXCIgdGhlblxuICAgICAgICAgICggbCxcbiAgICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2xpc3RcbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2FycmF5XG4gICAgICAgICAgICAgICAgIChKc29uVXRpbC5yZWFkX29wdGlvbiBZb2pzb24uQmFzaWMucmVhZF9udW1iZXIpKVxuICAgICAgICAgICAgICBwIGxiIClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcImxlZ2VuZFwiKSBpblxuICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCBzXG4gICAgICAgICkpXG4gICAgICAoW3x8XSwgW10pIHAgbGJcbiAgaW5cbiAgeyBwbG90X2xlZ2VuZDsgcGxvdF9zZXJpZXMgfVxuXG5sZXQgc3RyaW5nX29mX3Bsb3QgPSBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGUgd3JpdGVfcGxvdFxuXG5sZXQgcGxvdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcGxvdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG5sZXQgcHJpbnRfcGxvdF9zZXAgaXNfdHN2IGYgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAoaWYgaXNfdHN2IHRoZW5cbiAgICAgICBcIlxcdFwiXG4gICAgIGVsc2VcbiAgICAgICBcIixcIilcblxubGV0IHByaW50X3Bsb3RfbGVnZW5kIH5pc190c3YgZiBhID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JWFAXUAuXCJcbiAgICAoUHAuYXJyYXkgKHByaW50X3Bsb3Rfc2VwIGlzX3RzdikgKGZ1biBfIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcIiVzXFxcIlwiIHgpKVxuICAgIGFcblxubGV0IHByaW50X3Bsb3RfbGluZSB+aXNfdHN2IHBwIGYgbCA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiVhQF1ALlwiXG4gICAgKFBwLmFycmF5IChwcmludF9wbG90X3NlcCBpc190c3YpIChmdW4gXyAtPiBwcCkpXG4gICAgbFxuXG5sZXQgZXhwb3J0X3Bsb3QgfmlzX3RzdiBwbG90ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWElYVwiXG4gICAgKHByaW50X3Bsb3RfbGVnZW5kIH5pc190c3YpXG4gICAgcGxvdC5wbG90X2xlZ2VuZFxuICAgIChQcC5saXN0IFBwLmVtcHR5XG4gICAgICAgKHByaW50X3Bsb3RfbGluZSB+aXNfdHN2IChQcC5vcHRpb24gKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlZVwiKSkpKVxuICAgIChMaXN0LnJldiBwbG90LnBsb3Rfc2VyaWVzKVxuXG5sZXQgcHJpbnRfd2FybmluZyA/cG9zIGYgbXNnID1cbiAgbGV0IHByIGYgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiV2FybmluZzogQFsldEBdXCIgbXNnIGluXG4gIG1hdGNoIHBvcyB3aXRoXG4gIHwgU29tZSBwb3MgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFAXUAuXCIgKExvYy5wcmludF9hbm5vdGVkIHByKSAoKCksIHBvcylcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhQF1ALlwiIHByICgpXG5cbnR5cGUgZmlsZV9saW5lID0geyBmaWxlX2xpbmVfbmFtZTogc3RyaW5nIG9wdGlvbjsgZmlsZV9saW5lX3RleHQ6IHN0cmluZyB9XG5cbnR5cGUgdCA9XG4gIHwgRElOIG9mIHN0cmluZyAqIGRpblxuICB8IERlbHRhQWN0aXZpdGllcyBvZiBpbnQgKiAoaW50ICogKGZsb2F0ICogZmxvYXQpKSBsaXN0XG4gIHwgUGxvdCBvZiBOYnIudCBhcnJheSAgKCoqIE11c3QgaGF2ZSBsZW5ndGggPj0gMSAoYXQgbGVhc3QgW1RdIG9yIFtFXSkgKilcbiAgfCBQcmludCBvZiBmaWxlX2xpbmVcbiAgfCBUcmFjZVN0ZXAgb2YgVHJhY2Uuc3RlcFxuICB8IFNuYXBzaG90IG9mIHN0cmluZyAqIHNuYXBzaG90XG4gIHwgTG9nIG9mIHN0cmluZ1xuICB8IFNwZWNpZXMgb2Ygc3RyaW5nICogZmxvYXQgKiBVc2VyX2dyYXBoLmNvbm5lY3RlZF9jb21wb25lbnRcbiAgfCBXYXJuaW5nIG9mIExvYy50IG9wdGlvbiAqIChGb3JtYXQuZm9ybWF0dGVyIC0+IHVuaXQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY3JlYXRlX2ZsdXggZW52IGNvdW50ZXIgZGluX2tpbmQgPVxuICBsZXQgc2l6ZSA9IE1vZGVsLm5iX3N5bnRhY3RpY19ydWxlcyBlbnYgKyAxIGluXG4gIHtcbiAgICBEYXRhLmRpbl9raW5kO1xuICAgIERhdGEuZGluX3N0YXJ0ID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcjtcbiAgICBEYXRhLmRpbl9oaXRzID0gQXJyYXkubWFrZSBzaXplIDA7XG4gICAgRGF0YS5kaW5fZmx1eHMgPSBBcnJheS5tYWtlX21hdHJpeCBzaXplIHNpemUgMC47XG4gIH1cblxubGV0IGluY3JfZmx1eF9mbHV4IG9mX3J1bGUgb25fcnVsZSB2IGZsdXggPVxuICBmbHV4LkRhdGEuZGluX2ZsdXhzLihvZl9ydWxlKS4ob25fcnVsZSkgPC1cbiAgICBmbHV4LkRhdGEuZGluX2ZsdXhzLihvZl9ydWxlKS4ob25fcnVsZSkgKy4gdlxuXG5sZXQgaW5jcl9mbHV4X2hpdCBvZl9ydWxlIGZsdXggPVxuICBmbHV4LkRhdGEuZGluX2hpdHMuKG9mX3J1bGUpIDwtIHN1Y2MgZmx1eC5EYXRhLmRpbl9oaXRzLihvZl9ydWxlKVxuXG5sZXQgc3RvcF9mbHV4IGVudiBjb3VudGVyIGRpbl9kYXRhID1cbiAgbGV0IHNpemUgPSBNb2RlbC5uYl9zeW50YWN0aWNfcnVsZXMgZW52ICsgMSBpblxuICBsZXQgZGluX3J1bGVzID1cbiAgICBBcnJheS5pbml0IHNpemUgKGZ1biB4IC0+XG4gICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKE1vZGVsLnByaW50X2FzdF9ydWxlIH5ub0NvdW50ZXJzOmZhbHNlIH5lbnYpIHgpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggZGluX2RhdGEuRGF0YS5kaW5fa2luZCB3aXRoXG4gICAgfCBQcmltaXRpdmVzLkFCU09MVVRFIC0+ICgpXG4gICAgfCBQcmltaXRpdmVzLlJFTEFUSVZFIHwgUHJpbWl0aXZlcy5QUk9CQUJJTElUWSAtPlxuICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgKGZ1biBpIC0+XG4gICAgICAgICAgQXJyYXkuaXRlcmkgKGZ1biBqIHggLT5cbiAgICAgICAgICAgICAgZGluX2RhdGEuRGF0YS5kaW5fZmx1eHMuKGkpLihqKSA8LVxuICAgICAgICAgICAgICAgIChpZiBkaW5fZGF0YS5EYXRhLmRpbl9oaXRzLihpKSA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgIHhcbiAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgIHggLy4gZmxvYXRfb2ZfaW50IGRpbl9kYXRhLkRhdGEuZGluX2hpdHMuKGkpKSkpXG4gICAgICAgIGRpbl9kYXRhLkRhdGEuZGluX2ZsdXhzXG4gIGluXG4gIHsgRGF0YS5kaW5fcnVsZXM7IERhdGEuZGluX2RhdGE7IERhdGEuZGluX2VuZCA9IENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0ge1xuICAoKiBwYXQgLT4gc2V0IG9mIHJvb3RzICopXG4gIG9mX3BhdHRlcm5zOiBJbnRDb2xsZWN0aW9uLnQgUGF0dGVybi5PYnNNYXAudDtcbiAgKCogcGF0IC0+IGNjIC0+IHNldCBvZiByb290cyAqKVxuICBvZl91bmFyeV9wYXR0ZXJuczogTW9kcy5JbnRTZXQudCBNb2RzLkludE1hcC50IFBhdHRlcm4uT2JzTWFwLnQ7XG59XG5cbnR5cGUgbW9kX2Njc19jYWNoZSA9IChpbnQsIHVuaXQpIEhhc2h0YmwudFxuXG5sZXQgZW1wdHkgZW52ID1cbiAge1xuICAgIG9mX3BhdHRlcm5zID1cbiAgICAgIFBhdHRlcm4uRW52Lm5ld19vYnNfbWFwIChNb2RlbC5kb21haW4gZW52KSAoZnVuIF8gLT5cbiAgICAgICAgICBJbnRDb2xsZWN0aW9uLmNyZWF0ZSA2NCk7XG4gICAgb2ZfdW5hcnlfcGF0dGVybnMgPVxuICAgICAgUGF0dGVybi5FbnYubmV3X29ic19tYXAgKE1vZGVsLmRvbWFpbiBlbnYpIChmdW4gXyAtPiBNb2RzLkludE1hcC5lbXB0eSk7XG4gIH1cblxubGV0IGluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gc3RhdGUgcGF0dGVybiBtYXRjaGluZ3MgPVxuICBpZiBJbnRDb2xsZWN0aW9uLmlzX2VtcHR5IChQYXR0ZXJuLk9ic01hcC5nZXQgc3RhdGUub2ZfcGF0dGVybnMgcGF0dGVybikgdGhlblxuICAgIFBhdHRlcm4uT2JzTWFwLnNldCBzdGF0ZS5vZl9wYXR0ZXJucyBwYXR0ZXJuIG1hdGNoaW5nc1xuXG5sZXQgYWRkX2ludHNldF9pbl9pbnRtYXAgaWQgc2V0IG1hcCA9XG4gIGlmIE1vZHMuSW50U2V0LmlzX2VtcHR5IHNldCB0aGVuXG4gICAgTW9kcy5JbnRNYXAucmVtb3ZlIGlkIG1hcFxuICBlbHNlXG4gICAgTW9kcy5JbnRNYXAuYWRkIGlkIHNldCBtYXBcblxuKCogQnJlYWsgYXBhcnQgY29ubmVjdGVkIGNvbXBvbmVudDpcbiAgIFVwZGF0ZSBcInJvb3RzIG9mIHVuYXJ5IHBhdHRlcm5zXCJcbiAgIEVhc3ksIEkgc2hvdWxkIG5vdCBoYXZlIHRvIHJld3JpdGUgdGhpcy5cbiAgIFNob3VsZCBjYWNoZXMgYmUgaGFuZGxlZCBhdCB0aGlzIGxldmVsID8gSSBkbyBudCB0aGluayBzb1xuICAgYW5kIEkgd2lsbCBwcm9iYWJseSBjbGVhbiB0aGlzLlxuKilcbmxldCBicmVha19hcGFydF9jYyBzdGF0ZSBlZGdlcyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgKG9yaWdpbl9jYywgbmV3X2NjKSAtPlxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBtb2RfY29ubmVjdGl2aXR5X3N0b3JlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIG1vZF9jb25uIC0+XG4gICAgICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBtb2RfY29ubiBuZXdfY2MgKCkgaW5cbiAgICAgICAgSGFzaHRibC5yZXBsYWNlIG1vZF9jb25uIG9yaWdpbl9jYyAoKVxuICAgIGluXG4gICAgUGF0dGVybi5PYnNNYXAuaXRlcmlcbiAgICAgIChmdW4gY2NfaWQgY2NfbWFwIC0+XG4gICAgICAgIGxldCBvc2V0ID1cbiAgICAgICAgICBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgb3JpZ2luX2NjIGNjX21hcFxuICAgICAgICBpblxuICAgICAgICBpZiBub3QgKE1vZHMuSW50U2V0LmlzX2VtcHR5IG9zZXQpIHRoZW4gKFxuICAgICAgICAgIGxldCBuc2V0LCBvc2V0JyA9XG4gICAgICAgICAgICBNb2RzLkludFNldC5wYXJ0aXRpb25cbiAgICAgICAgICAgICAgKGZ1biB4IC0+IEVkZ2VzLmdldF9jb25uZWN0ZWRfY29tcG9uZW50IHggZWRnZXMgPSBTb21lIG5ld19jYylcbiAgICAgICAgICAgICAgb3NldFxuICAgICAgICAgIGluXG4gICAgICAgICAgUGF0dGVybi5PYnNNYXAuc2V0IHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zIGNjX2lkXG4gICAgICAgICAgICAoYWRkX2ludHNldF9pbl9pbnRtYXAgbmV3X2NjIG5zZXRcbiAgICAgICAgICAgICAgIChhZGRfaW50c2V0X2luX2ludG1hcCBvcmlnaW5fY2Mgb3NldCcgY2NfbWFwKSlcbiAgICAgICAgKSlcbiAgICAgIHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zXG5cbigqIFNhbWU6IG5vdCB2ZXJ5IHN1YnRsZS4gWW91IGp1c3QgcHJvcGFnYXRlLiAqKVxubGV0IG1lcmdlX2NjIHN0YXRlID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSAoY2MxLCBjYzIpIC0+XG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIG1vZF9jb25uZWN0aXZpdHlfc3RvcmUgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgbW9kX2Nvbm5lY3Rpdml0eSAtPlxuICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbW9kX2Nvbm5lY3Rpdml0eSBjYzIgKCkgaW5cbiAgICAgICAgSGFzaHRibC5yZXBsYWNlIG1vZF9jb25uZWN0aXZpdHkgY2MxICgpXG4gICAgaW5cbiAgICBQYXR0ZXJuLk9ic01hcC5pdGVyaVxuICAgICAgKGZ1biBjY19pZCBjY19tYXAgLT5cbiAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAucG9wIGNjMiBjY19tYXAgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gLT4gKClcbiAgICAgICAgfCBTb21lIHNldDIsIGNjX21hcCcgLT5cbiAgICAgICAgICBsZXQgc2V0MSA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBjYzEgY2NfbWFwIGluXG4gICAgICAgICAgUGF0dGVybi5PYnNNYXAuc2V0IHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zIGNjX2lkXG4gICAgICAgICAgICAoYWRkX2ludHNldF9pbl9pbnRtYXAgY2MxIChNb2RzLkludFNldC51bmlvbiBzZXQxIHNldDIpIGNjX21hcCcpKVxuICAgICAgc3RhdGUub2ZfdW5hcnlfcGF0dGVybnNcblxuKCogTW9zdCBvZiB0aGUgY29kZSBpcyB0byBkZWFsIHdpdGggdW5hcnlfaW5zdGFuY2VzLlxuICAgRG9lcyBub3RoaW5nIGZhbmN5LlxuICAgQWxzbyB0YWtlcyB0aGUgY2FjaGUgYXMgYW4gYXJndW1lbnQgKilcbmxldCB1cGRhdGVfcm9vdHMgc3RhdGUgaXNfYWRkIHVuYXJ5X2NjcyBlZGdlcyBtb2RfY29ubmVjdGl2aXR5IHBhdHRlcm4gcm9vdCA9XG4gIGxldCB2YSA9IFBhdHRlcm4uT2JzTWFwLmdldCBzdGF0ZS5vZl9wYXR0ZXJucyBwYXR0ZXJuIGluXG4gIGxldCAoKSA9XG4gICAgKGlmIGlzX2FkZCB0aGVuXG4gICAgICAgSW50Q29sbGVjdGlvbi5hZGRcbiAgICAgZWxzZVxuICAgICAgIEludENvbGxlY3Rpb24ucmVtb3ZlKVxuICAgICAgcm9vdCB2YVxuICBpblxuICBpZiBQYXR0ZXJuLlNldC5tZW0gcGF0dGVybiB1bmFyeV9jY3MgdGhlbiAoXG4gICAgbGV0IGNjX21hcCA9IFBhdHRlcm4uT2JzTWFwLmdldCBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJucyBwYXR0ZXJuIGluXG4gICAgbGV0IGNjX2lkID1cbiAgICAgICgqIFRoZSBvbmx5IGNhc2Ugd2hlcmUgZ2V0X2Nvbm5lY3RlZF9jb21wb25lbnQgaXMgTm9uZSBpcyB3aGVuXG4gICAgICAgICBbbm90IGlzX2FkZF0gYW5kIFtyb290XSBoYXMganVzdCBiZWVuIGVyYXNlZCEgQnV0LCBqdXN0XG4gICAgICAgICBiZWZvcmUgYmVpbmcgZXJhc2VkLCB3ZSBrbm93IHRoYXQgYW4gYWdlbnQgaXMgaW4gaXRzIG93blxuICAgICAgICAgY29ubmVjdGVkIGNvbXBvbmVudC4uLiAqKVxuICAgICAgT3B0aW9uX3V0aWwudW5zb21lIHJvb3QgKEVkZ2VzLmdldF9jb25uZWN0ZWRfY29tcG9uZW50IHJvb3QgZWRnZXMpXG4gICAgaW5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbW9kX2Nvbm5lY3Rpdml0eSBjY19pZCAoKSBpblxuICAgIGxldCBzZXQgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgY2NfaWQgY2NfbWFwIGluXG4gICAgbGV0IHNldCcgPVxuICAgICAgKGlmIGlzX2FkZCB0aGVuXG4gICAgICAgICBNb2RzLkludFNldC5hZGRcbiAgICAgICBlbHNlXG4gICAgICAgICBNb2RzLkludFNldC5yZW1vdmUpXG4gICAgICAgIHJvb3Qgc2V0XG4gICAgaW5cbiAgICBsZXQgY2NfbWFwJyA9IGFkZF9pbnRzZXRfaW5faW50bWFwIGNjX2lkIHNldCcgY2NfbWFwIGluXG4gICAgUGF0dGVybi5PYnNNYXAuc2V0IHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zIHBhdHRlcm4gY2NfbWFwJ1xuICApXG5cbmxldCBudW1iZXIgciBwYXQgPSBJbnRDb2xsZWN0aW9uLnNpemUgKFBhdHRlcm4uT2JzTWFwLmdldCByLm9mX3BhdHRlcm5zIHBhdClcblxubGV0IHByaW50X2luamVjdGlvbnMgfm5vQ291bnRlcnMgP2RvbWFpbiBmIHJvb3RzX29mX3BhdHRlcm5zID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFAXVwiXG4gICAgKFBhdHRlcm4uT2JzTWFwLnByaW50IFBwLnNwYWNlIChmdW4gcGF0dGVybiBmIHJvb3RzIC0+XG4gICAgICAgICBpZiBJbnRDb2xsZWN0aW9uLnNpemUgcm9vdHMgPiAwIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbIyBAWyVhQF0gPT0+QCBAWyVhQF1AXVwiXG4gICAgICAgICAgICAgKFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZDp0cnVlKVxuICAgICAgICAgICAgIHBhdHRlcm4gSW50Q29sbGVjdGlvbi5wcmludCByb290cykpXG4gICAgcm9vdHNfb2ZfcGF0dGVybnNcblxubGV0IHByaW50X3VuYXJ5X2luamVjdGlvbnMgfm5vQ291bnRlcnMgP2RvbWFpbiBmIHJvb3RzX29mX3BhdHRlcm5zID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGhvdj4lYUBdXCJcbiAgICAoUGF0dGVybi5PYnNNYXAucHJpbnQgUHAuc3BhY2UgKGZ1biBwYXR0ZXJuIGYgcm9vdF9tYXBzIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFsjIEBbJWFAXSA9PT5AIEBbJWFAXUBdXCJcbiAgICAgICAgICAgKFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZDp0cnVlKVxuICAgICAgICAgICBwYXR0ZXJuXG4gICAgICAgICAgIChQcC5zZXQgTW9kcy5JbnRNYXAuYmluZGluZ3MgUHAuc3BhY2UgKGZ1biBmIChfY2NfaWQsIHJvb3RzKSAtPlxuICAgICAgICAgICAgICAgIE1vZHMuSW50U2V0LnByaW50IGYgcm9vdHMpKVxuICAgICAgICAgICByb290X21hcHMpKVxuICAgIHJvb3RzX29mX3BhdHRlcm5zXG5cbmxldCBkZWJ1Z19wcmludCBmIHN0YXRlID1cbiAgbGV0IG5vQ291bnRlcnMgPSB0cnVlIGluXG4gIGxldCBkb21haW4gPSBOb25lIGluXG4gIGxldCAoKSA9IHByaW50X2luamVjdGlvbnMgfm5vQ291bnRlcnMgP2RvbWFpbiBmIHN0YXRlLm9mX3BhdHRlcm5zIGluXG4gIHByaW50X3VuYXJ5X2luamVjdGlvbnMgfm5vQ291bnRlcnMgP2RvbWFpbiBmIHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zXG5cbigqIFVzZWZ1bCBzaG9ydGN1dHMgKilcblxubGV0IG9mX3BhdHRlcm4gcGF0X2lkIHN0YXRlID1cbiAgdHJ5IFBhdHRlcm4uT2JzTWFwLmdldCBzdGF0ZS5vZl9wYXR0ZXJucyBwYXRfaWRcbiAgd2l0aCBOb3RfZm91bmQgLT4gSW50Q29sbGVjdGlvbi5jcmVhdGUgMVxuXG5sZXQgb2ZfdW5hcnlfcGF0dGVybiBwYXRfaWQgc3RhdGUgPVxuICB0cnkgUGF0dGVybi5PYnNNYXAuZ2V0IHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zIHBhdF9pZFxuICB3aXRoIE5vdF9mb3VuZCAtPiBNb2RzLkludE1hcC5lbXB0eVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0ge1xuICAoKiBGb3IgY291bnRlcmZhY3R1YWwgc2ltdWxhdGlvbiwgdGhlcmUgd291bGQgYmUgdHdvIG9mIHRoZXNlLiAqKVxuICByb290czogUm9vdHMudDtcbn1cblxudHlwZSBtZXNzYWdlID0gdW5pdFxuXG5sZXQgcmVjZWl2ZV9tZXNzYWdlIF8gc3QgPSBzdFxubGV0IGVtcHR5IGVudiA9IHsgcm9vdHMgPSBSb290cy5lbXB0eSBlbnYgfVxuXG5sZXQgaW5jb3Jwb3JhdGVfZXh0cmFfcGF0dGVybiBzdGF0ZSBwYXR0ZXJuIG1hdGNoaW5ncyA9XG4gIFJvb3RzLmluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gc3RhdGUucm9vdHMgcGF0dGVybiBtYXRjaGluZ3NcblxubGV0IGJyZWFrX2FwYXJ0X2NjIHN0YXRlIGVkZ2VzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlIGNjcyA9XG4gIFJvb3RzLmJyZWFrX2FwYXJ0X2NjIHN0YXRlLnJvb3RzIGVkZ2VzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlIGNjc1xuXG5sZXQgbWVyZ2VfY2Mgc3RhdGUgP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgY2NzID1cbiAgUm9vdHMubWVyZ2VfY2Mgc3RhdGUucm9vdHMgP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgY2NzXG5cbmxldCB1cGRhdGVfcm9vdHMgc3RhdGUgaXNfYWRkIHVuYXJ5X2NjcyBlZGdlcyBtb2RfY29ubmVjdGl2aXR5IHBhdHRlcm4gcm9vdCA9XG4gIFJvb3RzLnVwZGF0ZV9yb290cyBzdGF0ZS5yb290cyBpc19hZGQgdW5hcnlfY2NzIGVkZ2VzIG1vZF9jb25uZWN0aXZpdHkgcGF0dGVyblxuICAgIHJvb3RcblxuKCoqIHsyIENoZWNraW5nIGluc3RhbmNlc30gKilcblxubGV0IGlzX3ZhbGlkIHN0YXRlIHBhdCByb290ID1cbiAgSW50Q29sbGVjdGlvbi5tZW0gcm9vdCAoUm9vdHMub2ZfcGF0dGVybiBwYXQgc3RhdGUucm9vdHMpXG5cbigqKiB7MiBDb21wdXRlIHRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIH0gKilcblxubGV0IG51bWJlcl9vZl9pbnN0YW5jZXMgP3J1bGVfaWQ6XyBzdCBwYXRzID1cbiAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgcGF0dGVybiAtPiBhY2MgKiBSb290cy5udW1iZXIgc3Qucm9vdHMgcGF0dGVybilcbiAgICAxIHBhdHNcblxubGV0IG51bWJlcl9vZl91bmFyeV9pbnN0YW5jZXNfaW5fY2MgP3J1bGVfaWQ6XyBzdCAocGF0MSwgcGF0MikgPVxuICBsZXQgbWFwMSA9IFJvb3RzLm9mX3VuYXJ5X3BhdHRlcm4gcGF0MSBzdC5yb290cyBpblxuICBsZXQgbWFwMiA9IFJvb3RzLm9mX3VuYXJ5X3BhdHRlcm4gcGF0MiBzdC5yb290cyBpblxuICBmdW4gY2MgLT5cbiAgICBsZXQgc2V0MSA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBjYyBtYXAxIGluXG4gICAgbGV0IHNldDIgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgY2MgbWFwMiBpblxuICAgIE1vZHMuSW50U2V0LnNpemUgc2V0MSAqIE1vZHMuSW50U2V0LnNpemUgc2V0MlxuXG4oKiB7NiBQaWNrIGluc3RhbmNlcyB9ICopXG5cbmxldCBwaWNrX3VuYXJ5X2luc3RhbmNlX2luX2NjID9ydWxlX2lkOl8gc3QgcmFuZG9tX3N0YXRlIChwYXQxLCBwYXQyKSA9XG4gIGxldCBtYXAxID0gUm9vdHMub2ZfdW5hcnlfcGF0dGVybiBwYXQxIHN0LnJvb3RzIGluXG4gIGxldCBtYXAyID0gUm9vdHMub2ZfdW5hcnlfcGF0dGVybiBwYXQyIHN0LnJvb3RzIGluXG4gIGZ1biBjYyAtPlxuICAgIGxldCByb290MSA9XG4gICAgICBPcHRpb25fdXRpbC51bnNvbWUgKC0xKVxuICAgICAgICAoTW9kcy5JbnRTZXQucmFuZG9tIHJhbmRvbV9zdGF0ZVxuICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGNjIG1hcDEpKVxuICAgIGluXG4gICAgbGV0IHJvb3QyID1cbiAgICAgIE9wdGlvbl91dGlsLnVuc29tZSAoLTEpXG4gICAgICAgIChNb2RzLkludFNldC5yYW5kb20gcmFuZG9tX3N0YXRlXG4gICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgY2MgbWFwMikpXG4gICAgaW5cbiAgICByb290MSwgcm9vdDJcblxuKCogV2UgcHJvdmlkZSBhIGN1c3RvbSBtb25hZGljIGZvbGQgZnVuY3Rpb24gdG8gYmVcbiAgIGxhenkgaW4gZHJhd2luZyByYW5kb20gbnVtYmVycyAqKVxubGV0IGZvbGRfcGlja2VkX2luc3RhbmNlID9ydWxlX2lkOl8gc3QgcmFuZG9tX3N0YXRlIHBhdHMgfmluaXQgZiA9XG4gIGxldCByZWMgYXV4IGkgYWNjID1cbiAgICBpZiBpID49IEFycmF5Lmxlbmd0aCBwYXRzIHRoZW5cbiAgICAgIGFjY1xuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYWNjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgYWNjIC0+XG4gICAgICAgIGxldCBwYXQgPSBwYXRzLihpKSBpblxuICAgICAgICBsZXQgcm9vdF9vcHQgPVxuICAgICAgICAgIEludENvbGxlY3Rpb24ucmFuZG9tIHJhbmRvbV9zdGF0ZSAoUm9vdHMub2ZfcGF0dGVybiBwYXQgc3Qucm9vdHMpXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCByb290X29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSByb290IC0+XG4gICAgICAgICAgbGV0IGFjYyA9IGYgaSBwYXQgcm9vdCBhY2MgaW5cbiAgICAgICAgICBhdXggKGkgKyAxKSBhY2MpXG4gICAgKVxuICBpblxuICBhdXggMCAoU29tZSBpbml0KVxuXG4oKiogezYgRW51bWVyYXRlIGluc3RhbmNlc30gKilcblxubGV0IHByb2Nlc3NfZXhjcCA9XG4gIGxldCBub19ub19ubyBfID0gZmFsc2UgaW5cbiAgZnVuIHBhdHMgLT4gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gbm9fbm9fbm8sIC0xXG4gICAgfCBTb21lIChwYXQsIHJvb3QpIC0+XG4gICAgICBsZXQgc2VudF90b19maXhlZF9yb290IGogPSBQYXR0ZXJuLmlzX2VxdWFsX2Nhbm9uaWNhbHMgcGF0IHBhdHMuKGopIGluXG4gICAgICBzZW50X3RvX2ZpeGVkX3Jvb3QsIHJvb3RcblxuKCogVGhpcyBpcyB0aGUgbGVnaXRpbWF0ZSBhbmQgZWZmaWNpZW50IHZlcnNpb24uICopXG5sZXQgZm9sZF9pbnN0YW5jZXMgP3J1bGVfaWQ6XyA/ZXhjcCBzdCBwYXRzIH5pbml0IGYgPVxuICBsZXQgc2VudF90b19leGNwX3Jvb3QsIGV4Y3Bfcm9vdCA9IHByb2Nlc3NfZXhjcCBwYXRzIGV4Y3AgaW5cblxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBwYXRzIGluXG4gIGxldCB0YWIgPSBBcnJheS5tYWtlIG4gKC0xKSBpblxuICBsZXQgcmVjIGF1eCBpIGFjYyA9XG4gICAgaWYgaSA+PSBuIHRoZW5cbiAgICAgIGYgdGFiIGFjY1xuICAgIGVsc2UgaWYgc2VudF90b19leGNwX3Jvb3QgaSB0aGVuIChcbiAgICAgIHRhYi4oaSkgPC0gZXhjcF9yb290O1xuICAgICAgYXV4IChpICsgMSkgYWNjXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBpdGhfcm9vdHMgPSBSb290cy5vZl9wYXR0ZXJuIHBhdHMuKGkpIHN0LnJvb3RzIGluXG4gICAgICBJbnRDb2xsZWN0aW9uLmZvbGRcbiAgICAgICAgKGZ1biByIGFjYyAtPlxuICAgICAgICAgIHRhYi4oaSkgPC0gcjtcbiAgICAgICAgICBhdXggKGkgKyAxKSBhY2MpXG4gICAgICAgIGl0aF9yb290cyBhY2NcbiAgICApXG4gIGluXG4gIGF1eCAwIGluaXRcblxubGV0IG1hcF9mb2xkMiBtYXAxIG1hcDIgfmluaXQgZiA9XG4gIE1vZHMuSW50TWFwLm1vbmFkaWNfZm9sZDJfc3BhcnNlICgpICgpXG4gICAgKGZ1biAoKSAoKSBrZXkgeDEgeDIgYWNjIC0+ICgpLCBmIGtleSB4MSB4MiBhY2MpXG4gICAgbWFwMSBtYXAyIGluaXRcbiAgfD4gc25kXG5cbmxldCBmb2xkX3VuYXJ5X2luc3RhbmNlcyA/cnVsZV9pZDpfIHN0IChwYXQxLCBwYXQyKSB+aW5pdCBmID1cbiAgbGV0IG1hcDEgPSBSb290cy5vZl91bmFyeV9wYXR0ZXJuIHBhdDEgc3Qucm9vdHMgaW5cbiAgbGV0IG1hcDIgPSBSb290cy5vZl91bmFyeV9wYXR0ZXJuIHBhdDIgc3Qucm9vdHMgaW5cbiAgbWFwX2ZvbGQyIG1hcDEgbWFwMiB+aW5pdCAoZnVuIF8gc2V0MSBzZXQyIGFjYyAtPlxuICAgICAgTW9kcy5JbnRTZXQuZm9sZFxuICAgICAgICAoZnVuIHJvb3QxIGFjYyAtPlxuICAgICAgICAgIE1vZHMuSW50U2V0LmZvbGQgKGZ1biByb290MiBhY2MgLT4gZiAocm9vdDEsIHJvb3QyKSBhY2MpIHNldDIgYWNjKVxuICAgICAgICBzZXQxIGFjYylcblxuKCoqIHs2IERlYnVnIGZ1bmN0aW9uc30gKilcblxubGV0IGRlYnVnX3ByaW50IGYgc3RhdGUgPSBSb290cy5kZWJ1Z19wcmludCBmIHN0YXRlLnJvb3RzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgdmFsdWVfc3RhdGVfYWxnX29wIGNvdW50ZXIgPyh0aW1lID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcikgPSBmdW5jdGlvblxuICB8IE9wZXJhdG9yLkNQVVRJTUUgLT4gTmJyLkYgKFN5cy50aW1lICgpKVxuICB8IE9wZXJhdG9yLlRJTUVfVkFSIC0+IE5ici5GIHRpbWVcbiAgfCBPcGVyYXRvci5FVkVOVF9WQVIgLT4gTmJyLkkgKENvdW50ZXIuY3VycmVudF9ldmVudCBjb3VudGVyKVxuICB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSIC0+IE5ici5JIChDb3VudGVyLm5iX251bGxfZXZlbnQgY291bnRlcilcbiAgfCBPcGVyYXRvci5FTUFYX1ZBUiAtPlxuICAgIChtYXRjaCBDb3VudGVyLm1heF9ldmVudHMgY291bnRlciB3aXRoXG4gICAgfCBTb21lIG4gLT4gTmJyLkkgblxuICAgIHwgTm9uZSAtPiBOYnIuRiBpbmZpbml0eSlcbiAgfCBPcGVyYXRvci5UTUFYX1ZBUiAtPlxuICAgIChtYXRjaCBDb3VudGVyLm1heF90aW1lIGNvdW50ZXIgd2l0aFxuICAgIHwgU29tZSB0IC0+IE5ici5GIHRcbiAgICB8IE5vbmUgLT4gTmJyLkYgaW5maW5pdHkpXG5cbnR5cGUgKF8sIF8pIHN0YWNrID1cbiAgfCBSRVRVUk4gOiAoJ2EsICdhKSBzdGFja1xuICB8IFRPX0VYRUNfQUxHIDpcbiAgICAgIE9wZXJhdG9yLmJpbl9hbGdfb3AgKiBQcmltaXRpdmVzLmFsZ19leHByICogKE5ici50LCAnYSkgc3RhY2tcbiAgICAgIC0+IChOYnIudCwgJ2EpIHN0YWNrXG4gIHwgVE9fRVhFQ19DT01QIDpcbiAgICAgIE9wZXJhdG9yLmNvbXBhcmVfb3AgKiBQcmltaXRpdmVzLmFsZ19leHByICogKGJvb2wsICdhKSBzdGFja1xuICAgICAgLT4gKE5ici50LCAnYSkgc3RhY2tcbiAgfCBUT19FWEVDX0lGIDpcbiAgICAgIFByaW1pdGl2ZXMuYWxnX2V4cHIgKiBQcmltaXRpdmVzLmFsZ19leHByICogKE5ici50LCAnYSkgc3RhY2tcbiAgICAgIC0+IChib29sLCAnYSkgc3RhY2tcbiAgfCBUT19FWEVDX0JPT0wgOlxuICAgICAgT3BlcmF0b3IuYmluX2Jvb2xfb3BcbiAgICAgICogKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5ib29sXG4gICAgICAqIChib29sLCAnYSkgc3RhY2tcbiAgICAgIC0+IChib29sLCAnYSkgc3RhY2tcbiAgfCBUT19DT01QVVRFX0FMRyA6XG4gICAgICBPcGVyYXRvci5iaW5fYWxnX29wICogTmJyLnQgKiAoTmJyLnQsICdhKSBzdGFja1xuICAgICAgLT4gKE5ici50LCAnYSkgc3RhY2tcbiAgfCBUT19DT01QVVRFX0NPTVAgOlxuICAgICAgT3BlcmF0b3IuY29tcGFyZV9vcCAqIE5ici50ICogKGJvb2wsICdhKSBzdGFja1xuICAgICAgLT4gKE5ici50LCAnYSkgc3RhY2tcbiAgfCBUT19DT01QVVRFX1VOIDogT3BlcmF0b3IudW5fYWxnX29wICogKE5ici50LCAnYSkgc3RhY2sgLT4gKE5ici50LCAnYSkgc3RhY2tcbiAgfCBUT19DT01QVVRFX0JPT0wgOiBPcGVyYXRvci51bl9ib29sX29wICogKGJvb2wsICdhKSBzdGFjayAtPiAoYm9vbCwgJ2EpIHN0YWNrXG5cbmxldCByZWMgZXhlY19hbGcgOlxuICAgIHR5cGUgYS5cbiAgICBDb3VudGVyLnQgLT5cbiAgICA/dGltZTpmbG9hdCAtPlxuICAgIGdldF9hbGc6KGludCAtPiBQcmltaXRpdmVzLmFsZ19leHByKSAtPlxuICAgIGdldF9taXg6KFBhdHRlcm4uaWQgYXJyYXkgbGlzdCAtPiBOYnIudCkgLT5cbiAgICBnZXRfdG9rOihpbnQgLT4gTmJyLnQpIC0+XG4gICAgKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5lIC0+XG4gICAgKE5ici50LCBhKSBzdGFjayAtPlxuICAgIGEgPVxuIGZ1biBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFsZyBzayAtPlxuICBtYXRjaCBhbGcgd2l0aFxuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFcbiAgICAgIChUT19FWEVDX0FMRyAob3AsIGIsIHNrKSlcbiAgfCBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCAoYSwgXykpIC0+XG4gICAgZXhlY19hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhIChUT19DT01QVVRFX1VOIChvcCwgc2spKVxuICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBvcCAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3Rva1xuICAgICAgKHZhbHVlX3N0YXRlX2FsZ19vcCBjb3VudGVyID90aW1lIG9wKVxuICAgICAgc2tcbiAgfCBBbGdfZXhwci5BTEdfVkFSIGkgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIChnZXRfYWxnIGkpIHNrXG4gIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgY2NzIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIChnZXRfbWl4IGNjcykgc2tcbiAgfCBBbGdfZXhwci5UT0tFTl9JRCBpIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIChnZXRfdG9rIGkpIHNrXG4gIHwgQWxnX2V4cHIuQ09OU1QgbiAtPiB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgbiBza1xuICB8IEFsZ19leHByLklGICgoY29uZCwgXyksICh5ZXMsIF8pLCAobm8sIF8pKSAtPlxuICAgIGV4ZWNfYm9vbCBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGNvbmRcbiAgICAgIChUT19FWEVDX0lGICh5ZXMsIG5vLCBzaykpXG4gIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoXCJDYW5ub3QgZXZhbHV0YXRlIGRlcml2YXRpdmVzIGluIGV4cHJlc3Npb25cIiwgTG9jLmR1bW15KSlcblxuYW5kIGV4ZWNfYm9vbCA6XG4gICAgdHlwZSBhLlxuICAgIENvdW50ZXIudCAtPlxuICAgID90aW1lOmZsb2F0IC0+XG4gICAgZ2V0X2FsZzooaW50IC0+IFByaW1pdGl2ZXMuYWxnX2V4cHIpIC0+XG4gICAgZ2V0X21peDooUGF0dGVybi5pZCBhcnJheSBsaXN0IC0+IE5ici50KSAtPlxuICAgIGdldF90b2s6KGludCAtPiBOYnIudCkgLT5cbiAgICAoUGF0dGVybi5pZCBhcnJheSBsaXN0LCBpbnQpIEFsZ19leHByLmJvb2wgLT5cbiAgICAoYm9vbCwgYSkgc3RhY2sgLT5cbiAgICBhID1cbiBmdW4gY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBleHByIHNrIC0+XG4gIG1hdGNoIGV4cHIgd2l0aFxuICB8IEFsZ19leHByLlRSVUUgLT4gd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIHRydWUgc2tcbiAgfCBBbGdfZXhwci5GQUxTRSAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBmYWxzZSBza1xuICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCAoYSwgXykpIC0+XG4gICAgZXhlY19ib29sIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYVxuICAgICAgKFRPX0NPTVBVVEVfQk9PTCAob3AsIHNrKSlcbiAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIGV4ZWNfYm9vbCBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFcbiAgICAgIChUT19FWEVDX0JPT0wgKG9wLCBiLCBzaykpXG4gIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIGV4ZWNfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYVxuICAgICAgKFRPX0VYRUNfQ09NUCAob3AsIGIsIHNrKSlcblxuYW5kIHdpdGhfdmFsdWUgOlxuICAgIHR5cGUgYSBiLlxuICAgIENvdW50ZXIudCAtPlxuICAgID90aW1lOmZsb2F0IC0+XG4gICAgZ2V0X2FsZzooaW50IC0+IFByaW1pdGl2ZXMuYWxnX2V4cHIpIC0+XG4gICAgZ2V0X21peDooUGF0dGVybi5pZCBhcnJheSBsaXN0IC0+IE5ici50KSAtPlxuICAgIGdldF90b2s6KGludCAtPiBOYnIudCkgLT5cbiAgICBhIC0+XG4gICAgKGEsIGIpIHN0YWNrIC0+XG4gICAgYiA9XG4gZnVuIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgbiAtPiBmdW5jdGlvblxuICB8IFJFVFVSTiAtPiBuXG4gIHwgVE9fRVhFQ19BTEcgKG9wLCBhbGcsIHNrKSAtPlxuICAgIGV4ZWNfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYWxnXG4gICAgICAoVE9fQ09NUFVURV9BTEcgKG9wLCBuLCBzaykpXG4gIHwgVE9fQ09NUFVURV9BTEcgKG9wLCBuMSwgc2spIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rXG4gICAgICAoTmJyLm9mX2Jpbl9hbGdfb3Agb3AgbjEgbilcbiAgICAgIHNrXG4gIHwgVE9fQ09NUFVURV9VTiAob3AsIHNrKSAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayAoTmJyLm9mX3VuX2FsZ19vcCBvcCBuKVxuICAgICAgc2tcbiAgfCBUT19FWEVDX0NPTVAgKG9wLCBhbGcsIHNrKSAtPlxuICAgIGV4ZWNfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYWxnXG4gICAgICAoVE9fQ09NUFVURV9DT01QIChvcCwgbiwgc2spKVxuICB8IFRPX0NPTVBVVEVfQ09NUCAob3AsIG4xLCBzaykgLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2tcbiAgICAgIChOYnIub2ZfY29tcGFyZV9vcCBvcCBuMSBuKVxuICAgICAgc2tcbiAgfCBUT19FWEVDX0lGICh5ZXMsIG5vLCBzaykgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rXG4gICAgICAoaWYgbiB0aGVuXG4gICAgICAgICB5ZXNcbiAgICAgICBlbHNlXG4gICAgICAgICBubylcbiAgICAgIHNrXG4gIHwgVE9fRVhFQ19CT09MIChPcGVyYXRvci5PUiwgXywgc2spIHdoZW4gbiAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayB0cnVlIHNrXG4gIHwgVE9fRVhFQ19CT09MIChPcGVyYXRvci5BTkQsIF8sIHNrKSB3aGVuIG5vdCBuIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGZhbHNlIHNrXG4gIHwgVE9fRVhFQ19CT09MICgoT3BlcmF0b3IuT1IgfCBPcGVyYXRvci5BTkQpLCBleHByLCBzaykgLT5cbiAgICBleGVjX2Jvb2wgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBleHByIHNrXG4gIHwgVE9fQ09NUFVURV9CT09MIChPcGVyYXRvci5OT1QsIHNrKSAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayAobm90IG4pIHNrXG5cbmxldCB2YWx1ZV9ib29sIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgZXhwciA9XG4gIGV4ZWNfYm9vbCBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGV4cHIgUkVUVVJOXG5cbmxldCB2YWx1ZV9hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhbGcgPVxuICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFsZyBSRVRVUk5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgcHJlY29tcHV0ZWQgPSB7XG4gIHVuYXJ5X3BhdHRlcm5zOiBQYXR0ZXJuLlNldC50O1xuICBhbHdheXNfb3V0ZGF0ZWQ6IE9wZXJhdG9yLkRlcFNldC50O1xufVxuXG5tb2R1bGUgTWFrZSAoSW5zdGFuY2VzIDogSW5zdGFuY2VzX3NpZy5TKSA9IHN0cnVjdFxuICB0eXBlIGV2ZW50X3ByZWRpY2F0ZSA9XG4gICAgaW50IG9wdGlvbiAtPlxuICAgIE1hdGNoaW5nLnQgLT5cbiAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24udGVzdCBsaXN0IC0+XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmFjdGlvbiBsaXN0IC0+XG4gICAgYm9vbFxuXG4gIHR5cGUgaW1wZXJhdGl2ZV9maWVsZHMgPSB7XG4gICAgcHJlY29tcHV0ZWQ6IHByZWNvbXB1dGVkO1xuICAgIGluc3RhbmNlczogSW5zdGFuY2VzLnQ7XG4gICAgdmFyaWFibGVzX2NhY2hlOiBOYnIudCBhcnJheTtcbiAgICB2YXJpYWJsZXNfb3ZlcndyaXRlOiBQcmltaXRpdmVzLmFsZ19leHByIG9wdGlvbiBhcnJheTtcbiAgICB0b2tlbnM6IE5ici50IGFycmF5O1xuICAgIGFjdGl2aXRpZXM6IFJhbmRvbV90cmVlLnRyZWU7XG4gICAgICAgICgqIHBhaXIgbnVtYmVycyBhcmUgcmVndWxhciBydWxlLCBvZGQgdW5hcnkgaW5zdGFuY2VzICopXG4gICAgcmFuZG9tX3N0YXRlOiBSYW5kb20uU3RhdGUudDtcbiAgICBzdG9yeV9tYWNoaW5lcnk6XG4gICAgICAoc3RyaW5nICgqb2JzIG5hbWUqKVxuICAgICAgKiBQYXR0ZXJuLmlkIGFycmF5XG4gICAgICAqIEluc3RhbnRpYXRpb24uYWJzdHJhY3QgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3QgbGlzdClcbiAgICAgIGxpc3RcbiAgICAgIFBhdHRlcm4uT2JzTWFwLnRcbiAgICAgICgqY3VycmVudGx5IHRyYWNrZWQgY2NzICopXG4gICAgICBvcHRpb247XG4gICAgc3BlY2llczpcbiAgICAgIChzdHJpbmcgKCpmaWxlbmFtZSopXG4gICAgICAqIFBhdHRlcm4uaWQgYXJyYXkgKCp3aXRoIG9ubHkgb25lIHBhdHRlcm4qKVxuICAgICAgKiBJbnN0YW50aWF0aW9uLmFic3RyYWN0IEluc3RhbnRpYXRpb24udGVzdCBsaXN0IGxpc3QpXG4gICAgICBsaXN0XG4gICAgICBQYXR0ZXJuLk9ic01hcC50O1xuICAgIGNoYW5nZWRfY29ubmVjdGl2aXR5OiAoaW50LCB1bml0KSBIYXNodGJsLnQ7XG4gICAgICAgICgqIHNldCBvZiBjY3MgdGhhdCBoYXZlIGNoYW5nZWQgKilcbiAgfVxuXG4gIHR5cGUgaW5zdGFuY2UgPVxuICAgIGJvb2xcbiAgICAqIGludFxuICAgICogKEthcHBhX3Rlcm1zLk1hdGNoaW5nLnQgKiBpbnQgbGlzdCAqIEthcHBhX3NpdGVfZ3JhcGhzLkVkZ2VzLnBhdGggb3B0aW9uKVxuICAgICAgb3B0aW9uXG5cbiAgdHlwZSB0ID0ge1xuICAgIG11dGFibGUgb3V0ZGF0ZWQ6IGJvb2w7XG4gICAgKCogV2l0aG91dCByZWN0YW5ndWxhciBhcHByb3hpbWF0aW9uICopXG4gICAgbWF0Y2hpbmdzX29mX3J1bGU6IChNYXRjaGluZy50ICogaW50IGxpc3QpIGxpc3QgTW9kcy5JbnRNYXAudDtcbiAgICB1bmFyeV9jYW5kaWRhdGVzOlxuICAgICAgKCogcnVsZV9pZCAtPiBsaXN0IG9mIG1hdGNoaW5ncyAqKVxuICAgICAgKE1hdGNoaW5nLnQgKiBpbnQgbGlzdCAqIEVkZ2VzLnBhdGggb3B0aW9uKSBsaXN0IE1vZHMuSW50TWFwLnQ7XG4gICAgKCogcnVsZSAtPiBjYyAtPiBudW1iZXJfaW5zdGFuY2VzIChhY3Rpdml0eSBwZXIgY2MpICopXG4gICAgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjOiBWYWxNYXAudCBNb2RzLkludE1hcC50O1xuICAgIGVkZ2VzOiBFZGdlcy50O1xuICAgIGltcDogaW1wZXJhdGl2ZV9maWVsZHM7XG4gICAgb3V0ZGF0ZWRfZWxlbWVudHM6IE9wZXJhdG9yLkRlcFNldC50O1xuICAgIGV2ZW50c190b19ibG9jazogZXZlbnRfcHJlZGljYXRlIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBnZXRfZWRnZXMgc3QgPSBzdC5lZGdlc1xuXG4gIGxldCBzdW1faW5zdGFuY2VzX251bWJlcnMgP3J1bGVfaWQgaW5zdHMgbCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWMgeCAtPiBhYyArIEluc3RhbmNlcy5udW1iZXJfb2ZfaW5zdGFuY2VzID9ydWxlX2lkIGluc3RzIHgpXG4gICAgICAwIGxcblxuICB0eXBlIHJlc3VsdCA9IENsYXNoIHwgQ29ycmVjdGVkIHwgQmxvY2tlZCB8IFN1Y2Nlc3Mgb2YgdFxuXG4gIGxldCByYXdfZ2V0X2FsZyBlbnYgb3ZlcndyIGkgPVxuICAgIG1hdGNoIG92ZXJ3ci4oaSkgd2l0aFxuICAgIHwgTm9uZSAtPiBNb2RlbC5nZXRfYWxnIGVudiBpXG4gICAgfCBTb21lIGV4cHIgLT4gZXhwclxuXG4gIGxldCB2YWx1ZV9ib29sIGNvdW50ZXIgc3RhdGUgZXhwciA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgRXhwcl9pbnRlcnByZXRlci52YWx1ZV9ib29sIGNvdW50ZXJcbiAgICAgIH5nZXRfYWxnOihmdW4gaSAtPiBBbGdfZXhwci5DT05TVCBzdGF0ZS5pbXAudmFyaWFibGVzX2NhY2hlLihpKSlcbiAgICAgIH5nZXRfbWl4OihmdW4gcGF0dGVybnMgLT5cbiAgICAgICAgTmJyLkkgKHN1bV9pbnN0YW5jZXNfbnVtYmVycyBzdGF0ZS5pbXAuaW5zdGFuY2VzIHBhdHRlcm5zKSlcbiAgICAgIH5nZXRfdG9rOihmdW4gaSAtPiBzdGF0ZS5pbXAudG9rZW5zLihpKSlcbiAgICAgIGV4cHJcblxuICBsZXQgdmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgYWxnID1cbiAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICBFeHByX2ludGVycHJldGVyLnZhbHVlX2FsZyBjb3VudGVyXG4gICAgICB+Z2V0X2FsZzooZnVuIGkgLT4gQWxnX2V4cHIuQ09OU1Qgc3RhdGUuaW1wLnZhcmlhYmxlc19jYWNoZS4oaSkpXG4gICAgICB+Z2V0X21peDooZnVuIHBhdHRlcm5zIC0+XG4gICAgICAgIE5ici5JIChzdW1faW5zdGFuY2VzX251bWJlcnMgc3RhdGUuaW1wLmluc3RhbmNlcyBwYXR0ZXJucykpXG4gICAgICB+Z2V0X3RvazooZnVuIGkgLT4gc3RhdGUuaW1wLnRva2Vucy4oaSkpXG4gICAgICBhbGdcblxuICBsZXQgcmVjb21wdXRlIGVudiBjb3VudGVyIHN0YXRlIGkgPVxuICAgIHN0YXRlLmltcC52YXJpYWJsZXNfY2FjaGUuKGkpIDwtXG4gICAgICB2YWx1ZV9hbGcgY291bnRlciBzdGF0ZSAocmF3X2dldF9hbGcgZW52IHN0YXRlLmltcC52YXJpYWJsZXNfb3ZlcndyaXRlIGkpXG5cbiAgbGV0IGFjdGl2aXR5IHN0YXRlID0gUmFuZG9tX3RyZWUudG90YWwgc3RhdGUuaW1wLmFjdGl2aXRpZXNcbiAgbGV0IGdldF9hY3Rpdml0eSBydWxlIHN0YXRlID0gUmFuZG9tX3RyZWUuZmluZCBydWxlIHN0YXRlLmltcC5hY3Rpdml0aWVzXG4gIGxldCBzZXRfYWN0aXZpdHkgcnVsZSB2IHN0YXRlID0gUmFuZG9tX3RyZWUuYWRkIHJ1bGUgdiBzdGF0ZS5pbXAuYWN0aXZpdGllc1xuICBsZXQgcGlja19ydWxlIHJ0IHN0YXRlID0gZnN0IChSYW5kb21fdHJlZS5yYW5kb20gcnQgc3RhdGUuaW1wLmFjdGl2aXRpZXMpXG5cbiAgbGV0IGluaXRpYWxfYWN0aXZpdHkgfm91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgPVxuICAgIE1vZGVsLmZvbGRfcnVsZXNcbiAgICAgIChmdW4gaSAoKSBydWxlIC0+XG4gICAgICAgIGlmIEFycmF5Lmxlbmd0aCBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgPSAwIHRoZW4gKFxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBOYnIudG9fZmxvYXQgQEAgdmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgKGZzdCBydWxlLlByaW1pdGl2ZXMucmF0ZSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAgICAgKCBTb21lIChzbmQgcnVsZS5QcmltaXRpdmVzLnJhdGUpLFxuICAgICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9Db3VudGVycyA9IGZhbHNlIGluXG5cbiAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJQcm9ibGVtYXRpYyBydWxlIHJhdGUgcmVwbGFjZWQgYnkgMFwiO1xuICAgICAgICAgICAgICAgICAgICAgS2FwcGFfcHJpbnRlci5lbGVtZW50YXJ5X3J1bGUgfmVudiB+bm9Db3VudGVycyBmIHJ1bGUgKSlcbiAgICAgICAgICB8IFNvbWUgcmF0ZSAtPiBzZXRfYWN0aXZpdHkgKDIgKiBpKSByYXRlIHN0YXRlXG4gICAgICAgICkpXG4gICAgICAoKSBlbnZcblxuICBsZXQgZW1wdHkgfm91dHB1dHMgfndpdGhfdHJhY2UgcmFuZG9tX3N0YXRlIGVudiBjb3VudGVyID1cbiAgICBsZXQgYWN0aXZpdHlfdHJlZSA9IFJhbmRvbV90cmVlLmNyZWF0ZSAoMiAqIE1vZGVsLm5iX3J1bGVzIGVudikgaW5cbiAgICBsZXQgdW5hcnlfcGF0dGVybnMgPSBNb2RlbC51bmFyeV9wYXR0ZXJucyBlbnYgaW5cbiAgICBsZXQgYWx3YXlzX291dGRhdGVkID1cbiAgICAgIGxldCBkZXBzX2luX3QsIGRlcHNfaW5fZSwgXywgXyA9IE1vZGVsLmFsbF9kZXBlbmRlbmNpZXMgZW52IGluXG4gICAgICBPcGVyYXRvci5EZXBTZXQudW5pb24gZGVwc19pbl90IGRlcHNfaW5fZVxuICAgIGluXG4gICAgbGV0IHdpdGhfY29ubmVjdGVkX2NvbXBvbmVudHMgPSBub3QgKFBhdHRlcm4uU2V0LmlzX2VtcHR5IHVuYXJ5X3BhdHRlcm5zKSBpblxuICAgIGxldCB2YXJpYWJsZXNfb3ZlcndyaXRlID0gQXJyYXkubWFrZSAoTW9kZWwubmJfYWxncyBlbnYpIE5vbmUgaW5cbiAgICBsZXQgdmFyaWFibGVzX2NhY2hlID0gQXJyYXkubWFrZSAoTW9kZWwubmJfYWxncyBlbnYpIE5ici56ZXJvIGluXG4gICAgbGV0IGNhbmQgPVxuICAgICAge1xuICAgICAgICBpbXAgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGl2aXRpZXMgPSBhY3Rpdml0eV90cmVlO1xuICAgICAgICAgICAgcHJlY29tcHV0ZWQgPSB7IHVuYXJ5X3BhdHRlcm5zOyBhbHdheXNfb3V0ZGF0ZWQgfTtcbiAgICAgICAgICAgIGluc3RhbmNlcyA9IEluc3RhbmNlcy5lbXB0eSBlbnY7XG4gICAgICAgICAgICB2YXJpYWJsZXNfb3ZlcndyaXRlO1xuICAgICAgICAgICAgdmFyaWFibGVzX2NhY2hlO1xuICAgICAgICAgICAgdG9rZW5zID0gQXJyYXkubWFrZSAoTW9kZWwubmJfdG9rZW5zIGVudikgTmJyLnplcm87XG4gICAgICAgICAgICByYW5kb21fc3RhdGU7XG4gICAgICAgICAgICBzdG9yeV9tYWNoaW5lcnkgPVxuICAgICAgICAgICAgICAoaWYgd2l0aF90cmFjZSB0aGVuXG4gICAgICAgICAgICAgICAgIFNvbWUgKFBhdHRlcm4uRW52Lm5ld19vYnNfbWFwIChNb2RlbC5kb21haW4gZW52KSAoZnVuIF8gLT4gW10pKVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBOb25lKTtcbiAgICAgICAgICAgIHNwZWNpZXMgPSBQYXR0ZXJuLkVudi5uZXdfb2JzX21hcCAoTW9kZWwuZG9tYWluIGVudikgKGZ1biBfIC0+IFtdKTtcbiAgICAgICAgICAgIGNoYW5nZWRfY29ubmVjdGl2aXR5ID0gSGFzaHRibC5jcmVhdGUgMzI7XG4gICAgICAgICAgfTtcbiAgICAgICAgb3V0ZGF0ZWQgPSBmYWxzZTtcbiAgICAgICAgbWF0Y2hpbmdzX29mX3J1bGUgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICAgICAgdW5hcnlfY2FuZGlkYXRlcyA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgICAgICBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICAgICAgZWRnZXMgPSBFZGdlcy5lbXB0eSB+d2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cztcbiAgICAgICAgb3V0ZGF0ZWRfZWxlbWVudHMgPSBhbHdheXNfb3V0ZGF0ZWQ7XG4gICAgICAgIGV2ZW50c190b19ibG9jayA9IE5vbmU7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgKCkgPSBUb29scy5pdGVyaSAocmVjb21wdXRlIGVudiBjb3VudGVyIGNhbmQpIChNb2RlbC5uYl9hbGdzIGVudikgaW5cbiAgICBsZXQgKCkgPSBpbml0aWFsX2FjdGl2aXR5IH5vdXRwdXRzIGVudiBjb3VudGVyIGNhbmQgaW5cbiAgICBjYW5kXG5cbiAgbGV0IGNvbmNyZXRlX2FjdGlvbnNfZm9yX2luY29tcGxldGVfaW5qIH5kZWJ1Z19tb2RlIHJ1bGUgbWF0Y2hpbmcgPVxuICAgIGxldCBhYnN0cmFjdF9hY3Rpb25zID1cbiAgICAgIHJ1bGUuUHJpbWl0aXZlcy5pbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICBpblxuICAgIGxldCBpbmogPSBtYXRjaGluZywgTW9kcy5JbnRNYXAuZW1wdHkgaW5cbiAgICBMaXN0X3V0aWwubWFwX29wdGlvblxuICAgICAgKEluc3RhbnRpYXRpb24udHJ5X2NvbmNyZXRpemVfYWN0aW9uIH5kZWJ1Z19tb2RlIGluailcbiAgICAgIGFic3RyYWN0X2FjdGlvbnNcblxuICBsZXQgY29uY3JldGVfdGVzdHMgfmRlYnVnX21vZGUgcnVsZSBtYXRjaGluZyA9XG4gICAgbGV0IGFic3RyYWN0X3Rlc3RzID1cbiAgICAgIHJ1bGUuUHJpbWl0aXZlcy5pbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLnRlc3RzIHw+IExpc3QuY29uY2F0XG4gICAgaW5cbiAgICBsZXQgaW5qID0gbWF0Y2hpbmcsIE1vZHMuSW50TWFwLmVtcHR5IGluXG4gICAgTGlzdC5tYXAgKEluc3RhbnRpYXRpb24uY29uY3JldGl6ZV90ZXN0IH5kZWJ1Z19tb2RlIGluaikgYWJzdHJhY3RfdGVzdHNcblxuICBsZXQgaXNfYmxvY2tlZCB+ZGVidWdfbW9kZSBzdGF0ZSA/cnVsZV9pZCBydWxlIG1hdGNoaW5nID1cbiAgICBtYXRjaCBzdGF0ZS5ldmVudHNfdG9fYmxvY2sgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSB0b19ibG9jayAtPlxuICAgICAgbGV0IGFjdGlvbnMgPVxuICAgICAgICBjb25jcmV0ZV9hY3Rpb25zX2Zvcl9pbmNvbXBsZXRlX2luaiB+ZGVidWdfbW9kZSBydWxlIG1hdGNoaW5nXG4gICAgICBpblxuICAgICAgbGV0IHRlc3RzID0gY29uY3JldGVfdGVzdHMgfmRlYnVnX21vZGUgcnVsZSBtYXRjaGluZyBpblxuICAgICAgdG9fYmxvY2sgcnVsZV9pZCBtYXRjaGluZyB0ZXN0cyBhY3Rpb25zXG5cbiAgbGV0IHNldF9ldmVudHNfdG9fYmxvY2sgcHJlZGljYXRlIHN0YXRlID1cbiAgICB7XG4gICAgICBzdGF0ZSB3aXRoXG4gICAgICBldmVudHNfdG9fYmxvY2sgPSBwcmVkaWNhdGU7XG4gICAgICBtYXRjaGluZ3Nfb2ZfcnVsZSA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgICAgdW5hcnlfY2FuZGlkYXRlcyA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgIH1cblxuICBsZXQgaW5zdGFuY2VfdG9fbWF0Y2hpbmcgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGluc3RhbmNlIHBhdHRlcm5zID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIGkgbWF0Y2hpbmcgcm9vdCAtPlxuICAgICAgICBtYXRjaCBtYXRjaGluZyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBtYXRjaGluZyAtPlxuICAgICAgICAgIE1hdGNoaW5nLnJlY29uc3RydWN0IH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBtYXRjaGluZyBpIHBhdHRlcm5zLihpKVxuICAgICAgICAgICAgcm9vdClcbiAgICAgIChTb21lIE1hdGNoaW5nLmVtcHR5KSBpbnN0YW5jZVxuXG4gIGxldCBhbGxfaW5qZWN0aW9ucyB+ZGVidWdfbW9kZSA/ZXhjcCA/dW5hcnlfcmF0ZSA/cnVsZV9pZCBzdGF0ZV9pbnN0cyBkb21haW5cbiAgICAgIGVkZ2VzIHBhdHRlcm5hID1cbiAgICBsZXQgb3V0ID1cbiAgICAgIEluc3RhbmNlcy5mb2xkX2luc3RhbmNlcyA/ZXhjcCA/cnVsZV9pZCBzdGF0ZV9pbnN0cyBwYXR0ZXJuYSB+aW5pdDpbXVxuICAgICAgICAoZnVuIGluc3RhbmNlIGFjYyAtPlxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBpbnN0YW5jZV90b19tYXRjaGluZyB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgaW5zdGFuY2UgcGF0dGVybmFcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgIHwgU29tZSBtYXRjaGluZyAtPlxuICAgICAgICAgICAgbGV0IHJldl9yb290cyA9IEFycmF5LmZvbGRfbGVmdCAoZnVuIHQgaCAtPiBoIDo6IHQpIFtdIGluc3RhbmNlIGluXG4gICAgICAgICAgICAobWF0Y2hpbmcsIHJldl9yb290cykgOjogYWNjKVxuICAgIGluXG4gICAgbWF0Y2ggdW5hcnlfcmF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IG91dFxuICAgIHwgU29tZSAoXywgTm9uZSkgLT5cbiAgICAgIExpc3QuZmlsdGVyXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgXywgWyByMTsgcjIgXSAtPiBub3QgKEVkZ2VzLmluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudCByMSByMiBlZGdlcylcbiAgICAgICAgICB8IF8sIF8gLT4gZmFsc2UpXG4gICAgICAgIG91dFxuICAgIHwgU29tZSAoXywgKFNvbWUgXyBhcyBtYXhfZGlzdGFuY2UpKSAtPlxuICAgICAgTGlzdC5maWx0ZXJcbiAgICAgICAgKGZ1biAoaW5qLCBfKSAtPlxuICAgICAgICAgIGxldCBub2RlcyA9IE1hdGNoaW5nLmVsZW1lbnRzX3dpdGhfdHlwZXMgZG9tYWluIHBhdHRlcm5hIGluaiBpblxuICAgICAgICAgIE5vbmUgPSBFZGdlcy5hcmVfY29ubmVjdGVkID9tYXhfZGlzdGFuY2UgZWRnZXMgbm9kZXMuKDApIG5vZGVzLigxKSlcbiAgICAgICAgb3V0XG5cbiAgbGV0IHBvcF9leGFjdF9tYXRjaGluZ3MgbWF0Y2hpbmdzX29mX3J1bGUgcnVsZSA9XG4gICAgc25kIChNb2RzLkludE1hcC5wb3AgcnVsZSBtYXRjaGluZ3Nfb2ZfcnVsZSlcblxuICBsZXQgcGlja19hX3J1bGVfaW5zdGFuY2UgfmRlYnVnX21vZGUgc3RhdGUgcmFuZG9tX3N0YXRlIGRvbWFpbiBlZGdlcyA/cnVsZV9pZFxuICAgICAgcnVsZSA9XG4gICAgbGV0IGZyb21fcGF0dGVybnMgKCkgPVxuICAgICAgbGV0IHBhdHMgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgaW5cbiAgICAgIEluc3RhbmNlcy5mb2xkX3BpY2tlZF9pbnN0YW5jZSA/cnVsZV9pZCBzdGF0ZS5pbXAuaW5zdGFuY2VzIHJhbmRvbV9zdGF0ZVxuICAgICAgICBwYXRzIH5pbml0OihNYXRjaGluZy5lbXB0eSwgW10sIE5vbmUpXG4gICAgICAgIChmdW4gaWQgcGF0dGVybiByb290IChpbmosIHJldl9yb290cywgXykgLT5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTWF0Y2hpbmcucmVjb25zdHJ1Y3QgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGluaiBpZCBwYXR0ZXJuIHJvb3RcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgaW5qJyAtPiBTb21lIChpbmonLCByb290IDo6IHJldl9yb290cywgTm9uZSkpXG4gICAgaW5cbiAgICBtYXRjaCBydWxlX2lkIHdpdGhcbiAgICB8IE5vbmUgLT4gZnJvbV9wYXR0ZXJucyAoKVxuICAgIHwgU29tZSBpZCAtPlxuICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIHN0YXRlLm1hdGNoaW5nc19vZl9ydWxlIHdpdGhcbiAgICAgIHwgU29tZSBbXSAtPiBOb25lXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBsZXQgYSwgYiA9IExpc3RfdXRpbC5yYW5kb20gcmFuZG9tX3N0YXRlIGwgaW5cbiAgICAgICAgU29tZSAoYSwgYiwgTm9uZSlcbiAgICAgIHwgTm9uZSAtPiBmcm9tX3BhdHRlcm5zICgpKVxuXG4gIGxldCBhZGp1c3RfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgP3VuYXJ5X3JhdGUgc3RhdGUgZG9tYWluIGVkZ2VzXG4gICAgICBjY3MgcnVsZSA9XG4gICAgbGV0IG1hdGNoZXMgPVxuICAgICAgYWxsX2luamVjdGlvbnMgfmRlYnVnX21vZGUgP3VuYXJ5X3JhdGUgfnJ1bGVfaWQgc3RhdGUuaW1wLmluc3RhbmNlcyBkb21haW5cbiAgICAgICAgZWRnZXMgY2NzXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hlcyA9XG4gICAgICBpZiBzdGF0ZS5ldmVudHNfdG9fYmxvY2sgPSBOb25lIHRoZW5cbiAgICAgICAgbWF0Y2hlc1xuICAgICAgZWxzZVxuICAgICAgICBtYXRjaGVzXG4gICAgICAgIHw+IExpc3QuZmlsdGVyIChmdW4gKG1hdGNoaW5nLCBfKSAtPlxuICAgICAgICAgICAgICAgbm90IChpc19ibG9ja2VkIH5kZWJ1Z19tb2RlIHN0YXRlIH5ydWxlX2lkIHJ1bGUgbWF0Y2hpbmcpKVxuICAgIGluXG4gICAgKCBMaXN0Lmxlbmd0aCBtYXRjaGVzLFxuICAgICAge1xuICAgICAgICBzdGF0ZSB3aXRoXG4gICAgICAgIG1hdGNoaW5nc19vZl9ydWxlID1cbiAgICAgICAgICBNb2RzLkludE1hcC5hZGQgcnVsZV9pZCBtYXRjaGVzIHN0YXRlLm1hdGNoaW5nc19vZl9ydWxlO1xuICAgICAgfSApXG5cbiAgKCogV2l0aCByZWN0YW5ndWxhciBhcHByb3hpbWF0aW9uICopXG4gIGxldCBjb21wdXRlX3VuYXJ5X251bWJlciBpbnN0YW5jZXNcbiAgICAgIChuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MsIHVuYXJ5X2NhbmRpZGF0ZXMpIG1vZGlmaWVkX2NjcyBydWxlXG4gICAgICBydWxlX2lkID1cbiAgICBsZXQgcGF0MSA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMCkgaW5cbiAgICBsZXQgcGF0MiA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMSkgaW5cblxuICAgIGxldCBudW1iZXJfb2ZfdW5hcnlfaW5zdGFuY2VzX2luX2NjID1cbiAgICAgIEluc3RhbmNlcy5udW1iZXJfb2ZfdW5hcnlfaW5zdGFuY2VzX2luX2NjIH5ydWxlX2lkIGluc3RhbmNlcyAocGF0MSwgcGF0MilcbiAgICBpblxuXG4gICAgbGV0IG9sZF9wYWNrID1cbiAgICAgIE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBWYWxNYXAuZW1wdHkgcnVsZV9pZFxuICAgICAgICBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2NcbiAgICBpblxuICAgIGxldCBuZXdfcGFjayA9XG4gICAgICBIYXNodGJsLmZvbGRcbiAgICAgICAgKGZ1biBjYyAoKSBpX2luc3QgLT5cbiAgICAgICAgICBsZXQgbmV3X3YgPSBudW1iZXJfb2ZfdW5hcnlfaW5zdGFuY2VzX2luX2NjIGNjIGluXG4gICAgICAgICAgaWYgbmV3X3YgPSAwIHRoZW5cbiAgICAgICAgICAgIFZhbE1hcC5yZW1vdmUgY2MgaV9pbnN0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgVmFsTWFwLmFkZCBjYyBuZXdfdiBpX2luc3QpXG4gICAgICAgIG1vZGlmaWVkX2NjcyBvbGRfcGFja1xuICAgIGluXG4gICAgbGV0IHZhID0gVmFsTWFwLnRvdGFsIG5ld19wYWNrIGluXG4gICAgbGV0IG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYycgPVxuICAgICAgaWYgdmEgPSAwTCB0aGVuXG4gICAgICAgIE1vZHMuSW50TWFwLnJlbW92ZSBydWxlX2lkIG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jY1xuICAgICAgZWxzZVxuICAgICAgICBNb2RzLkludE1hcC5hZGQgcnVsZV9pZCBuZXdfcGFjayBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2NcbiAgICBpblxuICAgIGxldCBfLCB1bmFyeV9jYW5kaWRhdGVzJyA9XG4gICAgICAoKiBJbnZhbGlkYXRlcyB0aGUgY2FjaGUgKilcbiAgICAgIE1vZHMuSW50TWFwLnBvcCBydWxlX2lkIHVuYXJ5X2NhbmRpZGF0ZXNcbiAgICBpblxuICAgIHZhLCAobmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjJywgdW5hcnlfY2FuZGlkYXRlcycpXG5cbiAgbGV0IHBpY2tfYV91bmFyeV9ydWxlX2luc3RhbmNlIH5kZWJ1Z19tb2RlIHN0YXRlIHJhbmRvbV9zdGF0ZSBkb21haW4gZWRnZXNcbiAgICAgIH5ydWxlX2lkIHJ1bGUgPVxuICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHJ1bGVfaWQgc3RhdGUudW5hcnlfY2FuZGlkYXRlcyB3aXRoXG4gICAgfCBTb21lIGwgLT5cbiAgICAgIGxldCBpbmosIHJvb3RzLCBwYXRoID0gTGlzdF91dGlsLnJhbmRvbSByYW5kb21fc3RhdGUgbCBpblxuICAgICAgU29tZSAoaW5qLCByb290cywgcGF0aClcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBwYXQxID0gcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzLigwKSBpblxuICAgICAgbGV0IHBhdDIgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDEpIGluXG4gICAgICBsZXQgcGlja191bmFyeV9pbnN0YW5jZV9pbl9jYyA9XG4gICAgICAgIEluc3RhbmNlcy5waWNrX3VuYXJ5X2luc3RhbmNlX2luX2NjIH5ydWxlX2lkIHN0YXRlLmltcC5pbnN0YW5jZXNcbiAgICAgICAgICByYW5kb21fc3RhdGUgKHBhdDEsIHBhdDIpXG4gICAgICBpblxuICAgICAgbGV0IGNjX2lkID1cbiAgICAgICAgVmFsTWFwLnJhbmRvbSByYW5kb21fc3RhdGVcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFZhbE1hcC5lbXB0eSBydWxlX2lkXG4gICAgICAgICAgICAgc3RhdGUubmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjKVxuICAgICAgaW5cbiAgICAgIGxldCByb290MSwgcm9vdDIgPSBwaWNrX3VuYXJ5X2luc3RhbmNlX2luX2NjIGNjX2lkIGluXG5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiBGb3JtYXQucHJpbnRmIFwiQFtPbiByb290czpAICVpQCAlaUBdQC5cIiByb290MSByb290MlxuICAgICAgaW5cbiAgICAgIGxldCBwYXR0ZXJuMSA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMCkgaW5cbiAgICAgIGxldCBwYXR0ZXJuMiA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMSkgaW5cbiAgICAgIGxldCBpbmoxID1cbiAgICAgICAgTWF0Y2hpbmcucmVjb25zdHJ1Y3QgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIE1hdGNoaW5nLmVtcHR5IDAgcGF0dGVybjFcbiAgICAgICAgICByb290MVxuICAgICAgaW5cbiAgICAgIChtYXRjaCBpbmoxIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgaW5qIC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBNYXRjaGluZy5yZWNvbnN0cnVjdCB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgaW5qIDEgcGF0dGVybjIgcm9vdDJcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGlual9vdXQgLT4gU29tZSAoaW5qX291dCwgWyByb290Mjsgcm9vdDEgXSwgTm9uZSkpKVxuXG4gIGxldCBhZGp1c3RfdW5hcnlfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgP21heF9kaXN0YW5jZSBzdGF0ZVxuICAgICAgZG9tYWluIGdyYXBoIHBhdHMgcnVsZSA9XG4gICAgbGV0IHBhdHRlcm4xID0gcGF0cy4oMCkgaW5cbiAgICBsZXQgcGF0dGVybjIgPSBwYXRzLigxKSBpblxuICAgIGxldCBjYW5kcywgbGVuID1cbiAgICAgIEluc3RhbmNlcy5mb2xkX3VuYXJ5X2luc3RhbmNlcyB+cnVsZV9pZCBzdGF0ZS5pbXAuaW5zdGFuY2VzXG4gICAgICAgIChwYXR0ZXJuMSwgcGF0dGVybjIpIH5pbml0OihbXSwgMClcbiAgICAgICAgKGZ1biAocm9vdDEsIHJvb3QyKSAoKGxpc3QsIGxlbikgYXMgb3V0KSAtPlxuICAgICAgICAgIGxldCBpbmoxID1cbiAgICAgICAgICAgIE1hdGNoaW5nLnJlY29uc3RydWN0IH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBNYXRjaGluZy5lbXB0eSAwXG4gICAgICAgICAgICAgIHBhdHRlcm4xIHJvb3QxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBpbmoxIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gb3V0XG4gICAgICAgICAgfCBTb21lIGluaiAtPlxuICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICBNYXRjaGluZy5yZWNvbnN0cnVjdCB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggaW5qIDEgcGF0dGVybjJcbiAgICAgICAgICAgICAgICAgcm9vdDJcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gb3V0XG4gICAgICAgICAgICB8IFNvbWUgaW5qJyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbWF4X2Rpc3RhbmNlIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IChpbmonLCBbIHJvb3QyOyByb290MSBdLCBOb25lKSA6OiBsaXN0LCBzdWNjIGxlblxuICAgICAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAgIGxldCBub2RlcyA9IE1hdGNoaW5nLmVsZW1lbnRzX3dpdGhfdHlwZXMgZG9tYWluIHBhdHMgaW5qJyBpblxuICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgIEVkZ2VzLmFyZV9jb25uZWN0ZWQgP21heF9kaXN0YW5jZSBncmFwaCBub2Rlcy4oMCkgbm9kZXMuKDEpXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gb3V0XG4gICAgICAgICAgICAgICAgfCBTb21lIF8gYXMgcCAtPlxuICAgICAgICAgICAgICAgICAgaWYgaXNfYmxvY2tlZCB+ZGVidWdfbW9kZSBzdGF0ZSB+cnVsZV9pZCBydWxlIGluaicgdGhlblxuICAgICAgICAgICAgICAgICAgICBvdXRcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKGluaicsIFsgcm9vdDI7IHJvb3QxIF0sIHApIDo6IGxpc3QsIHN1Y2MgbGVuKSkpKVxuICAgIGluXG4gICAgbGV0IHVuYXJ5X2NhbmRpZGF0ZXMgPVxuICAgICAgaWYgbGVuID0gMCB0aGVuXG4gICAgICAgIE1vZHMuSW50TWFwLnJlbW92ZSBydWxlX2lkIHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXNcbiAgICAgIGVsc2VcbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHJ1bGVfaWQgY2FuZHMgc3RhdGUudW5hcnlfY2FuZGlkYXRlc1xuICAgIGluXG4gICAgbGVuLCB7IHN0YXRlIHdpdGggdW5hcnlfY2FuZGlkYXRlcyB9XG5cbiAgbGV0IHByaW50IGVudiBmIHN0YXRlID1cbiAgICBsZXQgc2lncyA9IE1vZGVsLnNpZ25hdHVyZXMgZW52IGluXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIChpLCBtaXgpIC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWluaXQ6ICVpIEBbPGg+JWFAXVwiIGkgVXNlcl9ncmFwaC5wcmludF9jYyBtaXgpKVxuICAgICAgKEVkZ2VzLmJ1aWxkX3VzZXJfc25hcHNob3QgfmRlYnVnX21vZGU6ZmFsc2UgfnJhdzpmYWxzZSBzaWdzIHN0YXRlLmVkZ2VzKVxuICAgICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gaSBmIGVsIC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWluaXQ6ICVhICVhXCIgTmJyLnByaW50IGVsXG4gICAgICAgICAgICAgKE1vZGVsLnByaW50X3Rva2VuIH5lbnYpIGkpKVxuICAgICAgc3RhdGUuaW1wLnRva2Vuc1xuXG4gIGxldCBkZWJ1Z19wcmludCBmIHN0YXRlID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUAsJWFALCVhQF1cIiBFZGdlcy5kZWJ1Z19wcmludCBzdGF0ZS5lZGdlc1xuICAgICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gaSBmIGVsIC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSB0b2tlbl8laVwiIE5ici5wcmludCBlbCBpKSlcbiAgICAgIHN0YXRlLmltcC50b2tlbnMgSW5zdGFuY2VzLmRlYnVnX3ByaW50IHN0YXRlLmltcC5pbnN0YW5jZXNcblxuICB0eXBlIHN0YXRzID0geyBtaXh0dXJlX3N0YXRzOiBFZGdlcy5zdGF0cyB9XG5cbiAgbGV0IHN0YXRzIHN0YXRlID0geyBtaXh0dXJlX3N0YXRzID0gRWRnZXMuc3RhdHMgc3RhdGUuZWRnZXMgfVxuXG4gIGxldCBwcmludF9zdGF0cyBmIHN0YXRlID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWkgYWdlbnRzXCIgKHN0YXRzIHN0YXRlKS5taXh0dXJlX3N0YXRzLkVkZ2VzLm5iX2FnZW50c1xuXG4gIGxldCBuZXdfcGxhY2UgZnJlZV9pZCAoaW5qX25vZGVzLCBpbmpfZnJlc2gpID0gZnVuY3Rpb25cbiAgICB8IE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nIF8gLT4gZmFpbHdpdGggXCJSdWxlX2ludGVycHJldGVyLm5ld19wbGFjZVwiXG4gICAgfCBNYXRjaGluZy5BZ2VudC5GcmVzaCAoXywgaWQpIC0+XG4gICAgICBpbmpfbm9kZXMsIE1vZHMuSW50TWFwLmFkZCBpZCBmcmVlX2lkIGlual9mcmVzaFxuXG4gIGxldCBhcHBseV9uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbiA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBpbnN0YW5jZXNcbiAgICAgIChzaWRlX2VmZmVjdHMsIGVkZ2VzKSA9IGZ1bmN0aW9uXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IChpZCwgXykgLT5cbiAgICAgIGxldCBlZGdlcycgPSBFZGdlcy5yZW1vdmVfYWdlbnQgaWQgZWRnZXMgaW5cbiAgICAgIHNpZGVfZWZmZWN0cywgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkICgoaWQsIF8pLCBzKSAtPlxuICAgICAgKCoobixzKS1ib3R0b20qKVxuICAgICAgbGV0IGVkZ2VzJyA9IEVkZ2VzLnJlbW92ZV9mcmVlIGlkIHMgZWRnZXMgaW5cbiAgICAgIHNpZGVfZWZmZWN0cywgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKChpZCwgXyksIHMpLCAoKGlkJywgXyksIHMnKSkgLT5cbiAgICAgIGxldCBlZGdlcycsIGNjX21vZGlmID0gRWRnZXMucmVtb3ZlX2xpbmsgaWQgcyBpZCcgcycgZWRnZXMgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEluc3RhbmNlcy5icmVha19hcGFydF9jYyBpbnN0YW5jZXMgZWRnZXMnID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICAgICAgY2NfbW9kaWZcbiAgICAgIGluXG4gICAgICBzaWRlX2VmZmVjdHMsIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyICgoKGlkLCBfKSwgcykgYXMgbikgLT5cbiAgICAgIChtYXRjaCBMaXN0LnBhcnRpdGlvbiAoZnVuIHggLT4geCA9IG4pIHNpZGVfZWZmZWN0cyB3aXRoXG4gICAgICB8IF8gOjogXywgc2lkZV9lZmZlY3RzJyAtPiBzaWRlX2VmZmVjdHMnLCBlZGdlc1xuICAgICAgfCBbXSwgXyAtPlxuICAgICAgICAobWF0Y2ggRWRnZXMubGlua19kZXN0aW5hdGlvbiBpZCBzIGVkZ2VzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHNpZGVfZWZmZWN0cywgRWRnZXMucmVtb3ZlX2ZyZWUgaWQgcyBlZGdlc1xuICAgICAgICB8IFNvbWUgKCgoaWQnLCBfKSBhcyBuYycpLCBzJykgLT5cbiAgICAgICAgICBsZXQgZWRnZXMnLCBjY19tb2RpZiA9IEVkZ2VzLnJlbW92ZV9saW5rIGlkIHMgaWQnIHMnIGVkZ2VzIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEluc3RhbmNlcy5icmVha19hcGFydF9jYyBpbnN0YW5jZXMgZWRnZXMnID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICAgICAgICAgIGNjX21vZGlmXG4gICAgICAgICAgaW5cbiAgICAgICAgICAobmMnLCBzJykgOjogc2lkZV9lZmZlY3RzLCBlZGdlcycpKVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJQb3NpdGl2ZUludGVybmFsaXplZCBpbiBuZWdhdGl2ZSB1cGRhdGVcIikpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkICgoaWQsIF8pLCBzKSAtPlxuICAgICAgbGV0IF8sIGVkZ2VzJyA9IEVkZ2VzLnJlbW92ZV9pbnRlcm5hbCBpZCBzIGVkZ2VzIGluXG4gICAgICBzaWRlX2VmZmVjdHMsIGVkZ2VzJ1xuXG4gIGxldCBhcHBseV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZSBzaWdzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICBpbnN0YW5jZXMgKGluajJncmFwaCwgc2lkZV9lZmZlY3RzLCBlZGdlcykgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBuIC0+XG4gICAgICBsZXQgbmMsIGluajJncmFwaCcsIGVkZ2VzJyA9XG4gICAgICAgIGxldCB0eSA9IE1hdGNoaW5nLkFnZW50LmdldF90eXBlIG4gaW5cbiAgICAgICAgbGV0IGlkLCBlZGdlcycgPSBFZGdlcy5hZGRfYWdlbnQgc2lncyB0eSBlZGdlcyBpblxuICAgICAgICAoaWQsIHR5KSwgbmV3X3BsYWNlIGlkIGluajJncmFwaCBuLCBlZGdlcydcbiAgICAgIGluXG4gICAgICAoaW5qMmdyYXBoJywgc2lkZV9lZmZlY3RzLCBlZGdlcycpLCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IG5jXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChuLCBzKSAtPlxuICAgICAgKCoobixzKS1ib3R0b20qKVxuICAgICAgbGV0ICgoaWQsIF8pIGFzIG5jKSA9IE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4gaW5cbiAgICAgICgqKEEsMjMpKilcbiAgICAgIGxldCBlZGdlcycgPSBFZGdlcy5hZGRfZnJlZSBpZCBzIGVkZ2VzIGluXG4gICAgICBsZXQgc2lkZV9lZmZlY3RzJyA9XG4gICAgICAgIExpc3RfdXRpbC5zbWFydF9maWx0ZXIgKGZ1biB4IC0+IHggPD4gKG5jLCBzKSkgc2lkZV9lZmZlY3RzXG4gICAgICBpblxuICAgICAgKGluajJncmFwaCwgc2lkZV9lZmZlY3RzJywgZWRnZXMnKSwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAobmMsIHMpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKG4sIHMpLCAobicsIHMnKSkgLT5cbiAgICAgIGxldCBuYyA9IE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4gaW5cbiAgICAgIGxldCBuYycgPSBNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuJyBpblxuICAgICAgbGV0IGVkZ2VzJywgbW9kaWZfY2MgPSBFZGdlcy5hZGRfbGluayBuYyBzIG5jJyBzJyBlZGdlcyBpblxuICAgICAgbGV0IHNpZGVfZWZmZWN0cycgPVxuICAgICAgICBMaXN0X3V0aWwuc21hcnRfZmlsdGVyXG4gICAgICAgICAgKGZ1biB4IC0+IHggPD4gKG5jLCBzKSAmJiB4IDw+IChuYycsIHMnKSlcbiAgICAgICAgICBzaWRlX2VmZmVjdHNcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBJbnN0YW5jZXMubWVyZ2VfY2MgaW5zdGFuY2VzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlIG1vZGlmX2NjIGluXG4gICAgICAoIChpbmoyZ3JhcGgsIHNpZGVfZWZmZWN0cycsIGVkZ2VzJyksXG4gICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgobmMsIHMpLCAobmMnLCBzJykpIClcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJOZWdhdGl2ZVdoYXRFdmVyIGluIHBvc2l0aXZlIHVwZGF0ZVwiKSlcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKG4sIHMsIGkpIC0+XG4gICAgICBsZXQgKChpZCwgXykgYXMgbmMpID0gTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbiBpblxuICAgICAgbGV0IGVkZ2VzJyA9IEVkZ2VzLmFkZF9pbnRlcm5hbCBpZCBzIGkgZWRnZXMgaW5cbiAgICAgICggKGluajJncmFwaCwgc2lkZV9lZmZlY3RzLCBlZGdlcycpLFxuICAgICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkIChuYywgcywgaSkgKVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJOZWdhdGl2ZUludGVybmFsaXplZCBpbiBwb3NpdGl2ZSB1cGRhdGVcIikpXG5cbiAgbGV0IGFwcGx5X2NvbmNyZXRlX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIHNpZ3MgP21vZF9jb25uZWN0aXZpdHlfc3RvcmVcbiAgICAgIGluc3RhbmNlcyBlZGdlcyA9IGZ1bmN0aW9uXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IChpZCwgdHkpIC0+XG4gICAgICBsZXQgXywgZWRnZXMnID0gRWRnZXMuYWRkX2FnZW50IH5pZCBzaWdzIHR5IGVkZ2VzIGluXG4gICAgICBlZGdlcydcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKChpZCwgXyksIHMpIC0+XG4gICAgICAoKihuLHMpLWJvdHRvbSopXG4gICAgICBsZXQgZWRnZXMnID0gRWRnZXMuYWRkX2ZyZWUgaWQgcyBlZGdlcyBpblxuICAgICAgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKG5jLCBzKSwgKG5jJywgcycpKSAtPlxuICAgICAgbGV0IGVkZ2VzJywgbW9kaWZfY2MgPSBFZGdlcy5hZGRfbGluayBuYyBzIG5jJyBzJyBlZGdlcyBpblxuICAgICAgbGV0ICgpID0gSW5zdGFuY2VzLm1lcmdlX2NjIGluc3RhbmNlcyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBtb2RpZl9jYyBpblxuICAgICAgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlV2hhdEV2ZXIgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiTmVnYXRpdmVXaGF0RXZlciBpbiBwb3NpdGl2ZSB1cGRhdGVcIikpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkICgoaWQsIF8pLCBzLCBpKSAtPlxuICAgICAgbGV0IGVkZ2VzJyA9IEVkZ2VzLmFkZF9pbnRlcm5hbCBpZCBzIGkgZWRnZXMgaW5cbiAgICAgIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJOZWdhdGl2ZUludGVybmFsaXplZCBpbiBwb3NpdGl2ZSB1cGRhdGVcIikpXG5cbiAgbGV0IG9ic19mcm9tX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBuYyAtPlxuICAgICAgTWF0Y2hpbmcub2JzZXJ2YWJsZXNfZnJvbV9hZ2VudCBkb21haW4gZWRnZXMgYWNjIG5jXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChuYywgcykgLT5cbiAgICAgICgqKG4scyktYm90dG9tKilcbiAgICAgIE1hdGNoaW5nLm9ic2VydmFibGVzX2Zyb21fZnJlZSB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjIG5jIHNcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgobmMsIHMpLCAobmMnLCBzJykpIC0+XG4gICAgICBNYXRjaGluZy5vYnNlcnZhYmxlc19mcm9tX2xpbmsgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGFjYyBuYyBzIG5jJyBzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCAobmMsIHMsIGkpIC0+XG4gICAgICBNYXRjaGluZy5vYnNlcnZhYmxlc19mcm9tX2ludGVybmFsIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgbmMgcyBpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkICgoKGlkLCBfKSBhcyBuYyksIHMpIC0+XG4gICAgICBsZXQgaSA9IEVkZ2VzLmdldF9pbnRlcm5hbCBpZCBzIGVkZ2VzIGluXG4gICAgICBNYXRjaGluZy5vYnNlcnZhYmxlc19mcm9tX2ludGVybmFsIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgbmMgcyBpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlV2hhdEV2ZXIgKCgoaWQsIF8pIGFzIG5jKSwgcykgLT5cbiAgICAgIChtYXRjaCBFZGdlcy5saW5rX2Rlc3RpbmF0aW9uIGlkIHMgZWRnZXMgd2l0aFxuICAgICAgfCBOb25lIC0+IE1hdGNoaW5nLm9ic2VydmFibGVzX2Zyb21fZnJlZSB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjIG5jIHNcbiAgICAgIHwgU29tZSAobmMnLCBzJykgLT5cbiAgICAgICAgTWF0Y2hpbmcub2JzZXJ2YWJsZXNfZnJvbV9saW5rIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgbmMgcyBuYycgcycpXG5cbiAgbGV0IG9ic19mcm9tX3RyYW5zZm9ybWF0aW9ucyB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgdHJhbnMgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAob2JzX2Zyb21fdHJhbnNmb3JtYXRpb24gfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzKVxuICAgICAgKChbXSwgT3BlcmF0b3IuRGVwU2V0LmVtcHR5KSwgTWF0Y2hpbmcuZW1wdHlfY2FjaGUpXG4gICAgICB0cmFuc1xuICAgIHw+IGZzdFxuXG4gIGxldCBwYXRoX3Rlc3RzIHBhdGggdGVzdHMgPVxuICAgIGxldCBrbm93bl9hZ2VudHMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIChpZCwgXykgLT4gTW9kcy5JbnRTZXQuYWRkIGlkIGFjY1xuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gXyB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgX1xuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIF8gfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgX1xuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSBfIC0+XG4gICAgICAgICAgICAgYWNjKSlcbiAgICAgICAgTW9kcy5JbnRTZXQuZW1wdHkgdGVzdHNcbiAgICBpblxuICAgIGxldCBwcmV0ZXN0cyA9XG4gICAgICBMaXN0X3V0aWwubWFwX29wdGlvblxuICAgICAgICAoZnVuICh4LCB5KSAtPlxuICAgICAgICAgIGlmXG4gICAgICAgICAgICBMaXN0LmZvcl9hbGxcbiAgICAgICAgICAgICAgKExpc3QuZm9yX2FsbCAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICB4IDw+IGEgJiYgeCA8PiBiICYmIHkgPD4gYSAmJiB5IDw+IGJcbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIF8gfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgX1xuICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBfIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIF9cbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBfIC0+XG4gICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgdGVzdHNcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBTb21lIChJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvICh4LCB5KSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBOb25lKVxuICAgICAgICBwYXRoXG4gICAgaW5cbiAgICBsZXQgXywgcGF0aF90ZXN0cyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChhZywgdGUpICgoKChpZCwgXykgYXMgYSksIF8pLCAoKChpZCcsIF8pIGFzIGEnKSwgXykpIC0+XG4gICAgICAgICAgbGV0IGFnJywgdGUnID1cbiAgICAgICAgICAgIGlmIE1vZHMuSW50U2V0Lm1lbSBpZCBhZyB0aGVuXG4gICAgICAgICAgICAgIGFnLCB0ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBNb2RzLkludFNldC5hZGQgaWQgYWcsIEluc3RhbnRpYXRpb24uSXNfSGVyZSBhIDo6IHRlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBNb2RzLkludFNldC5tZW0gaWQnIGFnJyB0aGVuXG4gICAgICAgICAgICBhZycsIHRlJ1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE1vZHMuSW50U2V0LmFkZCBpZCcgYWcnLCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYScgOjogdGUnKVxuICAgICAgICAoa25vd25fYWdlbnRzLCBwcmV0ZXN0cykgcGF0aFxuICAgIGluXG4gICAgcGF0aF90ZXN0c1xuXG4gIGxldCBzdGVwX29mX2V2ZW50IGNvdW50ZXIgPSBmdW5jdGlvblxuICAgIHwgVHJhY2UuSU5JVCBfLCBlIC0+IFRyYWNlLkluaXQgZS5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICB8IFRyYWNlLlJVTEUgciwgeCAtPlxuICAgICAgVHJhY2UuUnVsZSAociwgeCwgQ291bnRlci5uZXh0X3N0ZXBfc2ltdWxhdGlvbl9pbmZvIGNvdW50ZXIpXG4gICAgfCBUcmFjZS5QRVJUIHAsIHggLT5cbiAgICAgIFRyYWNlLlBlcnQgKHAsIHgsIENvdW50ZXIuY3VycmVudF9zaW11bGF0aW9uX2luZm8gY291bnRlcilcblxuICBsZXQgc3RvcmVfZXZlbnQgfmRlYnVnX21vZGUgY291bnRlciBpbmoyZ3JhcGggbmV3X3RyYWNrZWRfb2JzX2luc3RhbmNlc1xuICAgICAgZXZlbnRfa2luZCA/cGF0aCBleHRyYV9zaWRlX2VmZmVjdHMgcnVsZSBvdXRwdXRzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgXyAtPlxuICAgICAgbGV0IGNldmVudCA9XG4gICAgICAgIEluc3RhbnRpYXRpb24uY29uY3JldGl6ZV9ldmVudCB+ZGVidWdfbW9kZSBpbmoyZ3JhcGhcbiAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuaW5zdGFudGlhdGlvbnNcbiAgICAgIGluXG4gICAgICBsZXQgZnVsbF9jb25jcmV0ZV9ldmVudCA9XG4gICAgICAgIHtcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gY2V2ZW50Lkluc3RhbnRpYXRpb24udGVzdHM7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5hY3Rpb25zID0gY2V2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9ucztcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmMgPSBjZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjO1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdCA9XG4gICAgICAgICAgICBMaXN0LnJldl9hcHBlbmQgZXh0cmFfc2lkZV9lZmZlY3RzXG4gICAgICAgICAgICAgIGNldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgPVxuICAgICAgICAgICAgKG1hdGNoIHBhdGggd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICB8IFNvbWUgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgU29tZSAoU29tZSBwYXRoKSAtPiBwYXRoX3Rlc3RzIHBhdGggY2V2ZW50Lkluc3RhbnRpYXRpb24udGVzdHMpO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgb3V0cHV0c1xuICAgICAgICAgIChEYXRhLlRyYWNlU3RlcFxuICAgICAgICAgICAgIChzdGVwX29mX2V2ZW50IGNvdW50ZXIgKGV2ZW50X2tpbmQsIGZ1bGxfY29uY3JldGVfZXZlbnQpKSlcbiAgICAgIGluXG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAoaSwgeCkgLT5cbiAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAoRGF0YS5UcmFjZVN0ZXAgKFRyYWNlLk9icyAoaSwgeCwgQ291bnRlci5uZXh0X3N0b3J5IGNvdW50ZXIpKSkpXG4gICAgICAgIG5ld190cmFja2VkX29ic19pbnN0YW5jZXNcblxuICBsZXQgZ2V0X3NwZWNpZXNfb2JzIH5kZWJ1Z19tb2RlIHNpZ3MgZWRnZXMgb2JzIGFjYyB0cmFja2VkID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgKHBhdHRlcm4sIChyb290LCBfKSkgLT5cbiAgICAgICAgdHJ5XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gYWNjIChmbiwgcGF0dGVybnMsIF8pIC0+XG4gICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIG9rIHBpZCAtPlxuICAgICAgICAgICAgICAgICAgICBQYXR0ZXJuLmNvbXBhcmVfY2Fub25pY2FscyBwaWQgcGF0dGVybiA9IDAgfHwgb2spXG4gICAgICAgICAgICAgICAgICBmYWxzZSBwYXR0ZXJuc1xuICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgc3BlYyA9IEVkZ2VzLnNwZWNpZXMgfmRlYnVnX21vZGUgc2lncyByb290IGVkZ2VzIGluXG4gICAgICAgICAgICAgICAgKGZuLCBwYXR0ZXJucywgc3BlYykgOjogYWNjXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgKFBhdHRlcm4uT2JzTWFwLmdldCB0cmFja2VkIHBhdHRlcm4pXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGFjYylcbiAgICAgIGFjYyBvYnNcblxuICBsZXQgc3RvcmVfb2JzIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBpbnN0YW5jZXMgb2JzIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IGFjY1xuICAgIHwgU29tZSB0cmFja2VkIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGFjYyAocGF0dGVybiwgKHJvb3QsIF8pKSAtPlxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biBhY2MgKGV2LCBwYXR0ZXJucywgdGVzdHMpIC0+XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gYWNjIChpbmosIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZXN0cycgPVxuICAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLmNvbmNyZXRpemVfdGVzdCB+ZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluaiwgTW9kcy5JbnRNYXAuZW1wdHkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIChldiwgdGVzdHMnKSA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICAgIChhbGxfaW5qZWN0aW9ucyB+ZGVidWdfbW9kZSBpbnN0YW5jZXMgfmV4Y3A6KHBhdHRlcm4sIHJvb3QpXG4gICAgICAgICAgICAgICAgICAgICBkb21haW4gZWRnZXMgcGF0dGVybnMpKVxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgKFBhdHRlcm4uT2JzTWFwLmdldCB0cmFja2VkIHBhdHRlcm4pXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gYWNjKVxuICAgICAgICBhY2Mgb2JzXG5cbiAgbGV0IHVwZGF0ZV9lZGdlcyB+ZGVidWdfbW9kZSBvdXRwdXRzIGNvdW50ZXIgZG9tYWluIGlual9ub2RlcyBzdGF0ZSBldmVudF9raW5kXG4gICAgICA/cGF0aCBydWxlIHNpZ3MgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIGxldCAoKSA9IHN0YXRlLm91dGRhdGVkIDwtIHRydWUgaW5cbiAgICBsZXQgbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSA9IHN0YXRlLmltcC5jaGFuZ2VkX2Nvbm5lY3Rpdml0eSBpblxuICAgICgqTmVnYXRpdmUgdXBkYXRlKilcbiAgICBsZXQgY29uY3JldGVfcmVtb3ZlZCA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5jb25jcmV0aXplIH5kZWJ1Z19tb2RlXG4gICAgICAgICAgIChpbmpfbm9kZXMsIE1vZHMuSW50TWFwLmVtcHR5KSlcbiAgICAgICAgcnVsZS5QcmltaXRpdmVzLnJlbW92ZWRcbiAgICBpblxuICAgIGxldCAoZGVsX29icywgZGVsX2RlcHMpLCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZSBkb21haW4gc3RhdGUuZWRnZXMpXG4gICAgICAgICgoW10sIE9wZXJhdG9yLkRlcFNldC5lbXB0eSksIE1hdGNoaW5nLmVtcHR5X2NhY2hlKVxuICAgICAgICBjb25jcmV0ZV9yZW1vdmVkXG4gICAgaW5cbiAgICBsZXQgc2lkZV9lZmZlY3RzLCBlZGdlc19hZnRlcl9uZWcgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGFwcGx5X25lZ2F0aXZlX3RyYW5zZm9ybWF0aW9uIH5tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICAgICAgIHN0YXRlLmltcC5pbnN0YW5jZXMpXG4gICAgICAgIChbXSwgc3RhdGUuZWRnZXMpIGNvbmNyZXRlX3JlbW92ZWRcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAocGF0LCAocm9vdCwgXykpIC0+XG4gICAgICAgICAgSW5zdGFuY2VzLnVwZGF0ZV9yb290cyBzdGF0ZS5pbXAuaW5zdGFuY2VzIGZhbHNlXG4gICAgICAgICAgICBzdGF0ZS5pbXAucHJlY29tcHV0ZWQudW5hcnlfcGF0dGVybnMgZWRnZXNfYWZ0ZXJfbmVnXG4gICAgICAgICAgICBtb2RfY29ubmVjdGl2aXR5X3N0b3JlIHBhdCByb290KVxuICAgICAgICBkZWxfb2JzXG4gICAgaW5cbiAgICAoKlBvc2l0aXZlIHVwZGF0ZSopXG4gICAgbGV0IChmaW5hbF9pbmoyZ3JhcGgsIHJlbWFpbmluZ19zaWRlX2VmZmVjdHMsIGVkZ2VzJyksIGNvbmNyZXRlX2luc2VydGVkID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKHgsIHApIGggLT5cbiAgICAgICAgICBsZXQgeCcsIGgnID1cbiAgICAgICAgICAgIGFwcGx5X3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlXG4gICAgICAgICAgICAgIChQYXR0ZXJuLkVudi5zaWduYXR1cmVzIGRvbWFpbilcbiAgICAgICAgICAgICAgfm1vZF9jb25uZWN0aXZpdHlfc3RvcmUgc3RhdGUuaW1wLmluc3RhbmNlcyB4IGhcbiAgICAgICAgICBpblxuICAgICAgICAgIHgnLCBoJyA6OiBwKVxuICAgICAgICAoKChpbmpfbm9kZXMsIE1vZHMuSW50TWFwLmVtcHR5KSwgc2lkZV9lZmZlY3RzLCBlZGdlc19hZnRlcl9uZWcpLCBbXSlcbiAgICAgICAgcnVsZS5QcmltaXRpdmVzLmluc2VydGVkXG4gICAgaW5cbiAgICBsZXQgZWRnZXMnJywgY29uY3JldGVfaW5zZXJ0ZWQnID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGUsIGkpICgoKGlkLCBfKSBhcyBuYyksIHMpIC0+XG4gICAgICAgICAgRWRnZXMuYWRkX2ZyZWUgaWQgcyBlLCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChuYywgcykgOjogaSlcbiAgICAgICAgKGVkZ2VzJywgY29uY3JldGVfaW5zZXJ0ZWQpXG4gICAgICAgIHJlbWFpbmluZ19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIGxldCAobmV3X29icywgbmV3X2RlcHMpLCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMnJylcbiAgICAgICAgKChbXSwgT3BlcmF0b3IuRGVwU2V0LmVtcHR5KSwgTWF0Y2hpbmcuZW1wdHlfY2FjaGUpXG4gICAgICAgIGNvbmNyZXRlX2luc2VydGVkJ1xuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChwYXQsIChyb290LCBfKSkgLT5cbiAgICAgICAgICBJbnN0YW5jZXMudXBkYXRlX3Jvb3RzIHN0YXRlLmltcC5pbnN0YW5jZXMgdHJ1ZVxuICAgICAgICAgICAgc3RhdGUuaW1wLnByZWNvbXB1dGVkLnVuYXJ5X3BhdHRlcm5zIGVkZ2VzJycgbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgICAgICAgcGF0IHJvb3QpXG4gICAgICAgIG5ld19vYnNcbiAgICBpblxuICAgICgqU3RvcmUgZXZlbnQqKVxuICAgIGxldCBuZXdfdHJhY2tlZF9vYnNfaW5zdGFuY2VzID1cbiAgICAgIHN0b3JlX29icyB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMnJyBzdGF0ZS5pbXAuaW5zdGFuY2VzIG5ld19vYnMgW11cbiAgICAgICAgc3RhdGUuaW1wLnN0b3J5X21hY2hpbmVyeVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIHN0b3JlX2V2ZW50IH5kZWJ1Z19tb2RlIGNvdW50ZXIgZmluYWxfaW5qMmdyYXBoIG5ld190cmFja2VkX29ic19pbnN0YW5jZXNcbiAgICAgICAgZXZlbnRfa2luZCA/cGF0aCByZW1haW5pbmdfc2lkZV9lZmZlY3RzIHJ1bGUgb3V0cHV0c1xuICAgICAgICBzdGF0ZS5pbXAuc3RvcnlfbWFjaGluZXJ5XG4gICAgaW5cbiAgICAoKlByaW50IHNwZWNpZXMqKVxuICAgIGxldCBzcGVjaWVzID1cbiAgICAgIGdldF9zcGVjaWVzX29icyB+ZGVidWdfbW9kZSBzaWdzIGVkZ2VzJycgbmV3X29icyBbXSBzdGF0ZS5pbXAuc3BlY2llc1xuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChmaWxlLCBfLCBtaXh0dXJlKSAtPlxuICAgICAgICAgIG91dHB1dHMgKERhdGEuU3BlY2llcyAoZmlsZSwgQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlciwgbWl4dHVyZSkpKVxuICAgICAgICBzcGVjaWVzXG4gICAgaW5cbiAgICBsZXQgcmV2X2RlcHMgPVxuICAgICAgT3BlcmF0b3IuRGVwU2V0LnVuaW9uIHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzXG4gICAgICAgIChPcGVyYXRvci5EZXBTZXQudW5pb24gZGVsX2RlcHMgbmV3X2RlcHMpXG4gICAgaW5cbiAgICB7XG4gICAgICBvdXRkYXRlZCA9IGZhbHNlO1xuICAgICAgaW1wID0gc3RhdGUuaW1wO1xuICAgICAgbWF0Y2hpbmdzX29mX3J1bGUgPSBzdGF0ZS5tYXRjaGluZ3Nfb2ZfcnVsZTtcbiAgICAgIHVuYXJ5X2NhbmRpZGF0ZXMgPSBzdGF0ZS51bmFyeV9jYW5kaWRhdGVzO1xuICAgICAgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjID0gc3RhdGUubmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjO1xuICAgICAgZWRnZXMgPSBlZGdlcycnO1xuICAgICAgb3V0ZGF0ZWRfZWxlbWVudHMgPSByZXZfZGVwcztcbiAgICAgIGV2ZW50c190b19ibG9jayA9IHN0YXRlLmV2ZW50c190b19ibG9jaztcbiAgICB9XG5cbiAgbGV0IHVwZGF0ZV9lZGdlc19mcm9tX2FjdGlvbnMgfmRlYnVnX21vZGUgfm91dHB1dHMgc2lncyBjb3VudGVyIGRvbWFpbiBzdGF0ZVxuICAgICAgKGFjdGlvbnMsIHNpZGVfZWZmZWN0X2RzdCkgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIGxldCAoKSA9IHN0YXRlLm91dGRhdGVkIDwtIHRydWUgaW5cbiAgICBsZXQgbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSA9IHN0YXRlLmltcC5jaGFuZ2VkX2Nvbm5lY3Rpdml0eSBpblxuICAgICgqTmVnYXRpdmUgdXBkYXRlKilcbiAgICBsZXQgbG5rX2RzdCAoKGEsIF8pLCBzKSA9IEVkZ2VzLmxpbmtfZGVzdGluYXRpb24gYSBzIHN0YXRlLmVkZ2VzIGluXG4gICAgbGV0IGNvbmNyZXRlX3JlbW92ZWQgPVxuICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbnNfb2ZfYWN0aW9ucyBzaWdzIGxua19kc3RcbiAgICAgICAgYWN0aW9uc1xuICAgIGluXG4gICAgbGV0IChkZWxfb2JzLCBkZWxfZGVwcyksIF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKG9ic19mcm9tX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlIGRvbWFpbiBzdGF0ZS5lZGdlcylcbiAgICAgICAgKChbXSwgT3BlcmF0b3IuRGVwU2V0LmVtcHR5KSwgTWF0Y2hpbmcuZW1wdHlfY2FjaGUpXG4gICAgICAgIGNvbmNyZXRlX3JlbW92ZWRcbiAgICBpblxuICAgIGxldCBfc2lkZV9lZmZlY3RzLCBlZGdlc19hZnRlcl9uZWcgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGFwcGx5X25lZ2F0aXZlX3RyYW5zZm9ybWF0aW9uIH5tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICAgICAgIHN0YXRlLmltcC5pbnN0YW5jZXMpXG4gICAgICAgIChbXSwgc3RhdGUuZWRnZXMpIGNvbmNyZXRlX3JlbW92ZWRcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAocGF0LCAocm9vdCwgXykpIC0+XG4gICAgICAgICAgSW5zdGFuY2VzLnVwZGF0ZV9yb290cyBzdGF0ZS5pbXAuaW5zdGFuY2VzIGZhbHNlXG4gICAgICAgICAgICBzdGF0ZS5pbXAucHJlY29tcHV0ZWQudW5hcnlfcGF0dGVybnMgZWRnZXNfYWZ0ZXJfbmVnXG4gICAgICAgICAgICBtb2RfY29ubmVjdGl2aXR5X3N0b3JlIHBhdCByb290KVxuICAgICAgICBkZWxfb2JzXG4gICAgaW5cbiAgICAoKlBvc2l0aXZlIHVwZGF0ZSopXG4gICAgbGV0IGNvbmNyZXRlX2luc2VydGVkID1cbiAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24ucG9zaXRpdmVfdHJhbnNmb3JtYXRpb25zX29mX2FjdGlvbnMgc2lnc1xuICAgICAgICBzaWRlX2VmZmVjdF9kc3QgYWN0aW9uc1xuICAgIGluXG4gICAgbGV0IGVkZ2VzJyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHggaCAtPlxuICAgICAgICAgIGFwcGx5X2NvbmNyZXRlX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uXG4gICAgICAgICAgICAoUGF0dGVybi5FbnYuc2lnbmF0dXJlcyBkb21haW4pXG4gICAgICAgICAgICB+bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBzdGF0ZS5pbXAuaW5zdGFuY2VzIHggaClcbiAgICAgICAgZWRnZXNfYWZ0ZXJfbmVnIGNvbmNyZXRlX2luc2VydGVkXG4gICAgaW5cbiAgICBsZXQgKG5ld19vYnMsIG5ld19kZXBzKSwgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAob2JzX2Zyb21fdHJhbnNmb3JtYXRpb24gfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzJylcbiAgICAgICAgKChbXSwgT3BlcmF0b3IuRGVwU2V0LmVtcHR5KSwgTWF0Y2hpbmcuZW1wdHlfY2FjaGUpXG4gICAgICAgIGNvbmNyZXRlX2luc2VydGVkXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKHBhdCwgKHJvb3QsIF8pKSAtPlxuICAgICAgICAgIEluc3RhbmNlcy51cGRhdGVfcm9vdHMgc3RhdGUuaW1wLmluc3RhbmNlcyB0cnVlXG4gICAgICAgICAgICBzdGF0ZS5pbXAucHJlY29tcHV0ZWQudW5hcnlfcGF0dGVybnMgZWRnZXMnIG1vZF9jb25uZWN0aXZpdHlfc3RvcmVcbiAgICAgICAgICAgIHBhdCByb290KVxuICAgICAgICBuZXdfb2JzXG4gICAgaW5cbiAgICAoKlByaW50IHNwZWNpZXMqKVxuICAgIGxldCBzcGVjaWVzID1cbiAgICAgIGdldF9zcGVjaWVzX29icyB+ZGVidWdfbW9kZSBzaWdzIGVkZ2VzJyBuZXdfb2JzIFtdIHN0YXRlLmltcC5zcGVjaWVzXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKGZpbGUsIF8sIG1peHR1cmUpIC0+XG4gICAgICAgICAgb3V0cHV0cyAoRGF0YS5TcGVjaWVzIChmaWxlLCBDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyLCBtaXh0dXJlKSkpXG4gICAgICAgIHNwZWNpZXNcbiAgICBpblxuICAgIGxldCByZXZfZGVwcyA9XG4gICAgICBPcGVyYXRvci5EZXBTZXQudW5pb24gc3RhdGUub3V0ZGF0ZWRfZWxlbWVudHNcbiAgICAgICAgKE9wZXJhdG9yLkRlcFNldC51bmlvbiBkZWxfZGVwcyBuZXdfZGVwcylcbiAgICBpblxuICAgIHtcbiAgICAgIG91dGRhdGVkID0gZmFsc2U7XG4gICAgICBpbXAgPSBzdGF0ZS5pbXA7XG4gICAgICBtYXRjaGluZ3Nfb2ZfcnVsZSA9IHN0YXRlLm1hdGNoaW5nc19vZl9ydWxlO1xuICAgICAgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjID0gc3RhdGUubmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjO1xuICAgICAgdW5hcnlfY2FuZGlkYXRlcyA9IHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXM7XG4gICAgICBlZGdlcyA9IGVkZ2VzJztcbiAgICAgIG91dGRhdGVkX2VsZW1lbnRzID0gcmV2X2RlcHM7XG4gICAgICBldmVudHNfdG9fYmxvY2sgPSBzdGF0ZS5ldmVudHNfdG9fYmxvY2s7XG4gICAgfVxuXG4gIGxldCBtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZSBkID0gTmJyLnRvX2ludCAodmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgZClcblxuICAoKiBjY192YSBpcyB0aGUgbnVtYmVyIG9mIGVtYmVkZGluZ3MuIEl0IG9ubHkgaGFzXG4gICAgIHRvIGJlIG11bHRpcGxpZWQgYnkgdGhlIHJhdGUgY29uc3RhbnQgb2YgdGhlIHJ1bGUgKilcbiAgbGV0IHN0b3JlX2FjdGl2aXR5IH5kZWJ1Z19tb2RlIHN0b3JlIGVudiBjb3VudGVyIHN0YXRlIGlkIHN5bnRheF9pZCByYXRlIGNjX3ZhXG4gICAgICA9XG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlblxuICAgICAgICBGb3JtYXQucHJpbnRmIFwiQFslc3VsZSAlYSBoYXMgbm93ICVpIGluc3RhbmNlcy5AXUAuXCJcbiAgICAgICAgICAoaWYgaWQgbW9kIDIgPSAxIHRoZW5cbiAgICAgICAgICAgICBcIlVuYXJ5IHJcIlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgXCJSXCIpXG4gICAgICAgICAgKE1vZGVsLnByaW50X3J1bGUgfm5vQ291bnRlcnM6dHJ1ZSB+ZW52KVxuICAgICAgICAgIChpZCAvIDIpIGNjX3ZhXG4gICAgaW5cbiAgICBsZXQgYWN0ID1cbiAgICAgIG1hdGNoIE5ici50b19mbG9hdCBAQCB2YWx1ZV9hbGcgY291bnRlciBzdGF0ZSByYXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBpZiBjY192YSA9IDAgdGhlblxuICAgICAgICAgIDAuXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbmZpbml0eVxuICAgICAgfCBTb21lIHJhdGUgLT4gcmF0ZSAqLiBmbG9hdF9vZl9pbnQgY2NfdmFcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBhY3QgPCAwLiB0aGVuIChcbiAgICAgICAgbGV0IHVuYXJ5ID0gaWQgbW9kIDIgPSAxIGluXG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoIEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcIkF0IHQ9JS4yZiAlc2N0aXZpdHkgb2YgcnVsZSAlYSBoYXMgYmVjb21lIG5lZ2F0aXZlICglZilcIlxuICAgICAgICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcilcbiAgICAgICAgICAgICAgICAgKGlmIHVuYXJ5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgXCJVbmFyeSBcIlxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBcIlwiKVxuICAgICAgICAgICAgICAgICAoTW9kZWwucHJpbnRfcnVsZSB+bm9Db3VudGVyczpkZWJ1Z19tb2RlIH5lbnYpXG4gICAgICAgICAgICAgICAgIGlkIGFjdCxcbiAgICAgICAgICAgICAgIE1vZGVsLmdldF9hc3RfcnVsZV9yYXRlX3BvcyB+dW5hcnkgZW52IHN5bnRheF9pZCApKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IG9sZF9hY3QgPSBnZXRfYWN0aXZpdHkgaWQgc3RhdGUgaW5cbiAgICBsZXQgKCkgPSBzZXRfYWN0aXZpdHkgaWQgYWN0IHN0YXRlIGluXG4gICAgc3RvcmUgc3ludGF4X2lkIG9sZF9hY3QgYWN0XG5cbiAgbGV0IHVwZGF0ZV9vdXRkYXRlZF9hY3Rpdml0aWVzIH5kZWJ1Z19tb2RlIHN0b3JlIGVudiBjb3VudGVyIHN0YXRlIGtub3duX3BlcnRzXG4gICAgICA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbGV0IHVuYXJ5X3J1bGVfdXBkYXRlIG1vZGlmaWVkX2NjIGluc3RhbmNlcyBpIHBhY2sgcnVsZSA9XG4gICAgICBtYXRjaCBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gcGFja1xuICAgICAgfCBTb21lICh1bnJhdGUsIF8pIC0+XG4gICAgICAgIGxldCB2YSwgcGFjaycgPVxuICAgICAgICAgIGNvbXB1dGVfdW5hcnlfbnVtYmVyIGluc3RhbmNlcyBwYWNrIG1vZGlmaWVkX2NjIHJ1bGUgaVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHN0b3JlX2FjdGl2aXR5IH5kZWJ1Z19tb2RlIHN0b3JlIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICAgICAgICAoKDIgKiBpKSArIDEpXG4gICAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUgKGZzdCB1bnJhdGUpIChJbnQ2NC50b19pbnQgdmEpXG4gICAgICAgIGluXG4gICAgICAgIHBhY2snXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eCBkZXAgYWNjID1cbiAgICAgIE9wZXJhdG9yLkRlcFNldC5mb2xkXG4gICAgICAgIChmdW4gZGVwICgoZXhhY3RfbWF0Y2hpbmdzLCBwZXJ0cykgYXMgYWNjKSAtPlxuICAgICAgICAgIG1hdGNoIGRlcCB3aXRoXG4gICAgICAgICAgfCBPcGVyYXRvci5BTEcgaiAtPlxuICAgICAgICAgICAgbGV0ICgpID0gcmVjb21wdXRlIGVudiBjb3VudGVyIHN0YXRlIGogaW5cbiAgICAgICAgICAgIGF1eCAoTW9kZWwuZ2V0X2FsZ19yZXZlcnNlX2RlcGVuZGVuY2llcyBlbnYgaikgYWNjXG4gICAgICAgICAgfCBPcGVyYXRvci5NT0RJRiBwIC0+IGV4YWN0X21hdGNoaW5ncywgcCA6OiBwZXJ0c1xuICAgICAgICAgIHwgT3BlcmF0b3IuUlVMRSBpIC0+XG4gICAgICAgICAgICBsZXQgcnVsZSA9IE1vZGVsLmdldF9ydWxlIGVudiBpIGluXG4gICAgICAgICAgICBsZXQgcGF0dGVybl92YSA9XG4gICAgICAgICAgICAgIEluc3RhbmNlcy5udW1iZXJfb2ZfaW5zdGFuY2VzIH5ydWxlX2lkOmkgc3RhdGUuaW1wLmluc3RhbmNlc1xuICAgICAgICAgICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50c1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIHN0b3JlX2FjdGl2aXR5IH5kZWJ1Z19tb2RlIHN0b3JlIGVudiBjb3VudGVyIHN0YXRlICgyICogaSlcbiAgICAgICAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUgKGZzdCBydWxlLlByaW1pdGl2ZXMucmF0ZSlcbiAgICAgICAgICAgICAgICBwYXR0ZXJuX3ZhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcG9wX2V4YWN0X21hdGNoaW5ncyBleGFjdF9tYXRjaGluZ3MgaSwgcGVydHMpXG4gICAgICAgIGRlcCBhY2NcbiAgICBpblxuICAgIGxldCBtYXRjaGluZ3Nfb2ZfcnVsZSwgcGVydHMgPVxuICAgICAgYXV4IHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzIChzdGF0ZS5tYXRjaGluZ3Nfb2ZfcnVsZSwga25vd25fcGVydHMpXG4gICAgaW5cbiAgICBsZXQgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjLCB1bmFyeV9jYW5kaWRhdGVzID1cbiAgICAgIGlmIEhhc2h0YmwubGVuZ3RoIHN0YXRlLmltcC5jaGFuZ2VkX2Nvbm5lY3Rpdml0eSA9IDAgdGhlblxuICAgICAgICBzdGF0ZS5uYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MsIHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXNcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgb3V0ID1cbiAgICAgICAgICBNb2RlbC5mb2xkX3J1bGVzXG4gICAgICAgICAgICAodW5hcnlfcnVsZV91cGRhdGUgc3RhdGUuaW1wLmNoYW5nZWRfY29ubmVjdGl2aXR5XG4gICAgICAgICAgICAgICBzdGF0ZS5pbXAuaW5zdGFuY2VzKVxuICAgICAgICAgICAgKHN0YXRlLm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYywgc3RhdGUudW5hcnlfY2FuZGlkYXRlcylcbiAgICAgICAgICAgIGVudlxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlc2V0IHN0YXRlLmltcC5jaGFuZ2VkX2Nvbm5lY3Rpdml0eSBpblxuICAgICAgICBvdXRcbiAgICAgIClcbiAgICBpblxuICAgICgge1xuICAgICAgICBvdXRkYXRlZCA9IGZhbHNlO1xuICAgICAgICBpbXAgPSBzdGF0ZS5pbXA7XG4gICAgICAgIGVkZ2VzID0gc3RhdGUuZWRnZXM7XG4gICAgICAgIGV2ZW50c190b19ibG9jayA9IHN0YXRlLmV2ZW50c190b19ibG9jaztcbiAgICAgICAgbWF0Y2hpbmdzX29mX3J1bGU7XG4gICAgICAgIG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYztcbiAgICAgICAgdW5hcnlfY2FuZGlkYXRlcztcbiAgICAgICAgb3V0ZGF0ZWRfZWxlbWVudHMgPSBzdGF0ZS5pbXAucHJlY29tcHV0ZWQuYWx3YXlzX291dGRhdGVkO1xuICAgICAgfSxcbiAgICAgIHBlcnRzIClcblxuICBsZXQgb3ZlcndyaXRlX3ZhciBpIGNvdW50ZXIgc3RhdGUgZXhwciA9XG4gICAgbGV0ICgpID1cbiAgICAgIHN0YXRlLmltcC52YXJpYWJsZXNfb3ZlcndyaXRlLihpKSA8LVxuICAgICAgICBTb21lIChBbGdfZXhwci5DT05TVCAodmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgZXhwcikpXG4gICAgaW5cbiAgICB7XG4gICAgICBzdGF0ZSB3aXRoXG4gICAgICBvdXRkYXRlZF9lbGVtZW50cyA9XG4gICAgICAgIE9wZXJhdG9yLkRlcFNldC5hZGQgKE9wZXJhdG9yLkFMRyBpKSBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50cztcbiAgICB9XG5cbiAgbGV0IHVwZGF0ZV90b2tlbnMgZW52IGNvdW50ZXIgc3RhdGUgaW5qZWN0ZWQgPVxuICAgIGxldCBpbmplY3RlZCcgPVxuICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgIChmdW4gKChleHByLCBfKSwgaSkgLT4gdmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgZXhwciwgaSlcbiAgICAgICAgaW5qZWN0ZWRcbiAgICBpblxuICAgIHtcbiAgICAgIHN0YXRlIHdpdGhcbiAgICAgIG91dGRhdGVkX2VsZW1lbnRzID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIHJkZXBzICh2YSwgaSkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IHN0YXRlLmltcC50b2tlbnMuKGkpIDwtIE5ici5hZGQgc3RhdGUuaW1wLnRva2Vucy4oaSkgdmEgaW5cbiAgICAgICAgICAgIGxldCBkZXBzJyA9IE1vZGVsLmdldF90b2tlbl9yZXZlcnNlX2RlcGVuZGVuY2llcyBlbnYgaSBpblxuICAgICAgICAgICAgaWYgT3BlcmF0b3IuRGVwU2V0LmlzX2VtcHR5IGRlcHMnIHRoZW5cbiAgICAgICAgICAgICAgcmRlcHNcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgT3BlcmF0b3IuRGVwU2V0LnVuaW9uIHJkZXBzIGRlcHMnKVxuICAgICAgICAgIHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzIGluamVjdGVkJztcbiAgICB9XG5cbiAgbGV0IHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZSBldmVudF9raW5kID9wYXRoXG4gICAgICBydWxlID9ydWxlX2lkIGluaiA9XG4gICAgaWYgaXNfYmxvY2tlZCB+ZGVidWdfbW9kZSBzdGF0ZSA/cnVsZV9pZCBydWxlIGluaiB0aGVuXG4gICAgICBCbG9ja2VkXG4gICAgZWxzZSAoXG4gICAgICBsZXQgc3RhdGUgPVxuICAgICAgICB1cGRhdGVfdG9rZW5zIGVudiBjb3VudGVyIHN0YXRlIHJ1bGUuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnNcbiAgICAgIGluXG4gICAgICBsZXQgc3RhdGUgPVxuICAgICAgICB1cGRhdGVfZWRnZXMgfmRlYnVnX21vZGUgb3V0cHV0cyBjb3VudGVyIChNb2RlbC5kb21haW4gZW52KSBpbmogc3RhdGVcbiAgICAgICAgICBldmVudF9raW5kID9wYXRoIHJ1bGUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KVxuICAgICAgaW5cbiAgICAgIFN1Y2Nlc3Mgc3RhdGVcbiAgICApXG5cbiAgbGV0IGFwcGx5X2dpdmVuX3VuYXJ5X2luc3RhbmNlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICBldmVudF9raW5kIHJ1bGUgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBDbGFzaFxuICAgIHwgU29tZSAoaW5qLCBfcmV2X3Jvb3RzLCBwYXRoKSAtPlxuICAgICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgICBsZXQgc3RhdGUnID1cbiAgICAgICAge1xuICAgICAgICAgIHN0YXRlIHdpdGhcbiAgICAgICAgICBvdXRkYXRlZF9lbGVtZW50cyA9XG4gICAgICAgICAgICBPcGVyYXRvci5EZXBTZXQuYWRkIChPcGVyYXRvci5SVUxFIHJ1bGVfaWQpIHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgKG1hdGNoIHBhdGggd2l0aFxuICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgdHJhbnNmb3JtX2J5X2FfcnVsZSB+ZGVidWdfbW9kZSBvdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlJyBldmVudF9raW5kXG4gICAgICAgICAgfnBhdGggcnVsZSB+cnVsZV9pZCBpbmpcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgbWF4X2Rpc3RhbmNlID1cbiAgICAgICAgICBtYXRjaCBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgKF8sIGRpc3Rfb3B0KSAtPlxuICAgICAgICAgICAgKG1hdGNoIGRpc3Rfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgZCAtPiBTb21lIChtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZScgZCkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgICAgIGxldCBub2RlcyA9XG4gICAgICAgICAgTWF0Y2hpbmcuZWxlbWVudHNfd2l0aF90eXBlcyBkb21haW5cbiAgICAgICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBpbmpcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbWF4X2Rpc3RhbmNlID0gTm9uZSAmJiBzdGF0ZS5pbXAuc3RvcnlfbWFjaGluZXJ5ID0gTm9uZSB0aGVuXG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIEVkZ2VzLmluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudFxuICAgICAgICAgICAgICAoZnN0IChMaXN0LmhkIG5vZGVzLigwKSkpXG4gICAgICAgICAgICAgIChmc3QgKExpc3QuaGQgbm9kZXMuKDEpKSlcbiAgICAgICAgICAgICAgc3RhdGUuZWRnZXNcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUnXG4gICAgICAgICAgICAgIGV2ZW50X2tpbmQgfnBhdGg6Tm9uZSBydWxlIH5ydWxlX2lkIGlualxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIENvcnJlY3RlZFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgRWRnZXMuYXJlX2Nvbm5lY3RlZCA/bWF4X2Rpc3RhbmNlIHN0YXRlLmVkZ2VzIG5vZGVzLigwKSBub2Rlcy4oMSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IENvcnJlY3RlZFxuICAgICAgICAgIHwgU29tZSBfIGFzIHBhdGggLT5cbiAgICAgICAgICAgIHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZSdcbiAgICAgICAgICAgICAgZXZlbnRfa2luZCB+cGF0aCBydWxlIH5ydWxlX2lkIGlualxuICAgICAgICApKVxuXG4gIGxldCBhcHBseV9naXZlbl9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyA/cnVsZV9pZCBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgZXZlbnRfa2luZCBydWxlID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gQ2xhc2hcbiAgICB8IFNvbWUgKGluaiwgcmV2X3Jvb3RzLCBfcGF0aCkgLT5cbiAgICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICBsZXQgcm9vdHMgPSBUb29scy5hcnJheV9yZXZfb2ZfbGlzdCByZXZfcm9vdHMgaW5cbiAgICAgICAgICBGb3JtYXQucHJpbnRmIFwiQFtPbiByb290czpAIEBbJWFAXUBdQC5cIlxuICAgICAgICAgICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gXyAtPiBGb3JtYXQucHBfcHJpbnRfaW50KSlcbiAgICAgICAgICAgIHJvb3RzXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICAobWF0Y2ggcnVsZS5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZSBldmVudF9raW5kXG4gICAgICAgICAgcnVsZSA/cnVsZV9pZCBpbmpcbiAgICAgIHwgU29tZSAoXywgbWF4X2Rpc3RhbmNlKSAtPlxuICAgICAgICAobWF0Y2ggbWF4X2Rpc3RhbmNlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHJldl9yb290cyB3aXRoXG4gICAgICAgICAgfCBbIHJvb3QxOyByb290MCBdIC0+XG4gICAgICAgICAgICBpZiBFZGdlcy5pbl9zYW1lX2Nvbm5lY3RlZF9jb21wb25lbnQgcm9vdDAgcm9vdDEgc3RhdGUuZWRnZXMgdGhlblxuICAgICAgICAgICAgICBDb3JyZWN0ZWRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgdHJhbnNmb3JtX2J5X2FfcnVsZSB+ZGVidWdfbW9kZSBvdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICAgICAgICAgICAgZXZlbnRfa2luZCBydWxlID9ydWxlX2lkIGlualxuICAgICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcImFwcGx5X2dpdmVuX3J1bGUgdW5hcnkgcnVsZSB3aXRob3V0IDIgcGF0dGVybnNcIilcbiAgICAgICAgfCBTb21lIGRpc3QgLT5cbiAgICAgICAgICBsZXQgZG9tYWluID0gTW9kZWwuZG9tYWluIGVudiBpblxuICAgICAgICAgIGxldCBkaXN0JyA9IFNvbWUgKG1heF9kaXN0X3RvX2ludCBjb3VudGVyIHN0YXRlIGRpc3QpIGluXG4gICAgICAgICAgbGV0IG5vZGVzID1cbiAgICAgICAgICAgIE1hdGNoaW5nLmVsZW1lbnRzX3dpdGhfdHlwZXMgZG9tYWluXG4gICAgICAgICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBpbmpcbiAgICAgICAgICBpblxuICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgIEVkZ2VzLmFyZV9jb25uZWN0ZWQgP21heF9kaXN0YW5jZTpkaXN0JyBzdGF0ZS5lZGdlcyBub2Rlcy4oMClcbiAgICAgICAgICAgICAgIG5vZGVzLigxKVxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgZXZlbnRfa2luZFxuICAgICAgICAgICAgICBydWxlID9ydWxlX2lkIGlualxuICAgICAgICAgIHwgU29tZSBfIC0+IENvcnJlY3RlZCkpKVxuXG4gIGxldCBhcHBseV9naXZlbl9ydWxlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzID9ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICBldmVudF9raW5kIHJ1bGUgPVxuICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgbGV0IGluc3QgPVxuICAgICAgcGlja19hX3J1bGVfaW5zdGFuY2UgfmRlYnVnX21vZGUgc3RhdGUgc3RhdGUuaW1wLnJhbmRvbV9zdGF0ZSBkb21haW5cbiAgICAgICAgc3RhdGUuZWRnZXMgP3J1bGVfaWQgcnVsZVxuICAgIGluXG4gICAgYXBwbHlfZ2l2ZW5faW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgP3J1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGVcbiAgICAgIGV2ZW50X2tpbmQgcnVsZSBpbnN0XG5cbiAgbGV0IGZvcmNlX3J1bGUgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgZXZlbnRfa2luZCA/cnVsZV9pZCBydWxlXG4gICAgICA9XG4gICAgbWF0Y2hcbiAgICAgIGFwcGx5X2dpdmVuX3J1bGUgfmRlYnVnX21vZGUgfm91dHB1dHMgP3J1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGVcbiAgICAgICAgZXZlbnRfa2luZCBydWxlXG4gICAgd2l0aFxuICAgIHwgU3VjY2VzcyBvdXQgLT4gU29tZSBvdXRcbiAgICB8IENvcnJlY3RlZCB8IEJsb2NrZWQgfCBDbGFzaCAtPlxuICAgICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgICBsZXQgdW5hcnlfcmF0ZSA9XG4gICAgICAgIG1hdGNoIHJ1bGUuUHJpbWl0aXZlcy51bmFyeV9yYXRlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIChsb2MsIGRpc3Rfb3B0KSAtPlxuICAgICAgICAgIChtYXRjaCBkaXN0X29wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFNvbWUgKGxvYywgTm9uZSlcbiAgICAgICAgICB8IFNvbWUgZCAtPiBTb21lIChsb2MsIFNvbWUgKG1heF9kaXN0X3RvX2ludCBjb3VudGVyIHN0YXRlIGQpKSlcbiAgICAgIGluXG4gICAgICAobWF0Y2hcbiAgICAgICAgIGFsbF9pbmplY3Rpb25zIH5kZWJ1Z19tb2RlID9ydWxlX2lkID91bmFyeV9yYXRlIHN0YXRlLmltcC5pbnN0YW5jZXNcbiAgICAgICAgICAgKE1vZGVsLmRvbWFpbiBlbnYpIHN0YXRlLmVkZ2VzIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50c1xuICAgICAgIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkF0IHQ9JWYsICVhIGRvZXMgbm90IGFwcGx5IChhbnltb3JlKVwiXG4gICAgICAgICAgICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcilcbiAgICAgICAgICAgICAgICAgICAgIChUcmFjZS5wcmludF9ldmVudF9raW5kIH5lbnYpXG4gICAgICAgICAgICAgICAgICAgICBldmVudF9raW5kICkpXG4gICAgICAgIGluXG4gICAgICAgIE5vbmVcbiAgICAgIHwgbCAtPlxuICAgICAgICBsZXQgaCwgXyA9IExpc3RfdXRpbC5yYW5kb20gc3RhdGUuaW1wLnJhbmRvbV9zdGF0ZSBsIGluXG4gICAgICAgIGxldCBvdXQgPVxuICAgICAgICAgIHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZSBldmVudF9raW5kXG4gICAgICAgICAgICBydWxlID9ydWxlX2lkIGhcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIG91dCB3aXRoXG4gICAgICAgIHwgU3VjY2VzcyBvdXQgLT4gU29tZSBvdXRcbiAgICAgICAgfCBCbG9ja2VkIC0+IE5vbmVcbiAgICAgICAgfCBDbGFzaCB8IENvcnJlY3RlZCAtPiBhc3NlcnQgZmFsc2UpKVxuXG4gIGxldCBhZGp1c3RfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGUgcnVsZSA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgICBsZXQgdW5hcnlfcmF0ZSA9XG4gICAgICBtYXRjaCBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIChsb2MsIGRpc3Rfb3B0KSAtPlxuICAgICAgICAobWF0Y2ggZGlzdF9vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSAobG9jLCBOb25lKVxuICAgICAgICB8IFNvbWUgZCAtPiBTb21lIChsb2MsIFNvbWUgKG1heF9kaXN0X3RvX2ludCBjb3VudGVyIHN0YXRlIGQpKSlcbiAgICBpblxuICAgIGxldCBhY3QsIHN0YXRlID1cbiAgICAgIGFkanVzdF9ydWxlX2luc3RhbmNlcyB+ZGVidWdfbW9kZSB+cnVsZV9pZCA/dW5hcnlfcmF0ZSBzdGF0ZSBkb21haW5cbiAgICAgICAgc3RhdGUuZWRnZXMgcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzIHJ1bGVcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBzdG9yZV9hY3Rpdml0eSB+ZGVidWdfbW9kZVxuICAgICAgICAoZnVuIF8gXyBfIC0+ICgpKVxuICAgICAgICBlbnYgY291bnRlciBzdGF0ZSAoMiAqIHJ1bGVfaWQpIHJ1bGUuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZVxuICAgICAgICAoZnN0IHJ1bGUuUHJpbWl0aXZlcy5yYXRlKSBhY3RcbiAgICBpblxuICAgIHN0YXRlXG5cbiAgKCogUmVkZWZpbmVzIGBhZGp1c3RfdW5hcnlfcnVsZV9pbnN0YW5jZXNgICopXG4gIGxldCBhZGp1c3RfdW5hcnlfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGUgcnVsZSA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgICBsZXQgbWF4X2Rpc3RhbmNlID1cbiAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgKGZ1biAoXywgZGlzdF9vcHQpIC0+XG4gICAgICAgICAgT3B0aW9uX3V0aWwubWFwIChtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZSkgZGlzdF9vcHQpXG4gICAgICAgIHJ1bGUuUHJpbWl0aXZlcy51bmFyeV9yYXRlXG4gICAgaW5cbiAgICBsZXQgYWN0LCBzdGF0ZSA9XG4gICAgICBhZGp1c3RfdW5hcnlfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgP21heF9kaXN0YW5jZSBzdGF0ZVxuICAgICAgICBkb21haW4gc3RhdGUuZWRnZXMgcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzIHJ1bGVcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IFNvbWUgKHVucmF0ZSwgXykgLT5cbiAgICAgICAgc3RvcmVfYWN0aXZpdHkgfmRlYnVnX21vZGVcbiAgICAgICAgICAoZnVuIF8gXyBfIC0+ICgpKVxuICAgICAgICAgIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICAgICAgKCgyICogcnVsZV9pZCkgKyAxKVxuICAgICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZSAoZnN0IHVucmF0ZSkgYWN0XG4gICAgaW5cbiAgICBzdGF0ZVxuXG4gIGxldCBpbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIH5kZWJ1Z19tb2RlIGRvbWFpbiBzdGF0ZSBwYXR0ZXJuID1cbiAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgSW5zdGFuY2VzLmluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gc3RhdGUuaW1wLmluc3RhbmNlcyBwYXR0ZXJuXG4gICAgICAgIChNYXRjaGluZy5yb290c19vZiB+ZGVidWdfbW9kZSBkb21haW4gc3RhdGUuZWRnZXMgcGF0dGVybilcbiAgICBpblxuICAgIHsgc3RhdGUgd2l0aCBvdXRkYXRlZCA9IGZhbHNlIH1cblxuICBsZXQgc25hcHNob3QgfmRlYnVnX21vZGUgfnJhdyBlbnYgY291bnRlciBzdGF0ZSA9XG4gICAge1xuICAgICAgRGF0YS5zbmFwc2hvdF9ldmVudCA9IENvdW50ZXIuY3VycmVudF9ldmVudCBjb3VudGVyO1xuICAgICAgRGF0YS5zbmFwc2hvdF90aW1lID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcjtcbiAgICAgIERhdGEuc25hcHNob3RfYWdlbnRzID1cbiAgICAgICAgRWRnZXMuYnVpbGRfdXNlcl9zbmFwc2hvdCB+ZGVidWdfbW9kZSB+cmF3IChNb2RlbC5zaWduYXR1cmVzIGVudilcbiAgICAgICAgICBzdGF0ZS5lZGdlcztcbiAgICAgIERhdGEuc25hcHNob3RfdG9rZW5zID1cbiAgICAgICAgQXJyYXkubWFwaVxuICAgICAgICAgIChmdW4gaSB4IC0+IEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKE1vZGVsLnByaW50X3Rva2VuIH5lbnYpIGksIHgpXG4gICAgICAgICAgc3RhdGUuaW1wLnRva2VucztcbiAgICB9XG5cbiAgbGV0IHBpY2tfYW5faW5zdGFuY2UgfmRlYnVnX21vZGUgZW52IHN0YXRlID1cbiAgICBsZXQgY2hvaWNlID0gcGlja19ydWxlIHN0YXRlLmltcC5yYW5kb21fc3RhdGUgc3RhdGUgaW5cbiAgICBsZXQgcnVsZV9pZCA9IGNob2ljZSAvIDIgaW5cbiAgICBsZXQgcnVsZSA9IE1vZGVsLmdldF9ydWxlIGVudiBydWxlX2lkIGluXG4gICAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgICAoIGNob2ljZSBtb2QgMiA9IDEsXG4gICAgICBydWxlX2lkLFxuICAgICAgaWYgY2hvaWNlIG1vZCAyID0gMSB0aGVuXG4gICAgICAgIHBpY2tfYV91bmFyeV9ydWxlX2luc3RhbmNlIH5kZWJ1Z19tb2RlIHN0YXRlIHN0YXRlLmltcC5yYW5kb21fc3RhdGVcbiAgICAgICAgICBkb21haW4gc3RhdGUuZWRnZXMgfnJ1bGVfaWQgcnVsZVxuICAgICAgZWxzZVxuICAgICAgICBwaWNrX2FfcnVsZV9pbnN0YW5jZSB+ZGVidWdfbW9kZSBzdGF0ZSBzdGF0ZS5pbXAucmFuZG9tX3N0YXRlIGRvbWFpblxuICAgICAgICAgIHN0YXRlLmVkZ2VzIH5ydWxlX2lkIHJ1bGUgKVxuXG4gIGxldCBpc19jb3JyZWN0X2luc3RhbmNlIGVudiBncmFwaCAoaXNfdW5hcnksIHJ1bGVfaWQsIGluc3RhbmNlKSA9XG4gICAgbWF0Y2ggaW5zdGFuY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIChfaW5qLCBpbnZfcm9vdHMsIHBhdGgpIC0+XG4gICAgICBsZXQgcnVsZSA9IE1vZGVsLmdldF9ydWxlIGVudiBydWxlX2lkIGluXG4gICAgICBsZXQgcGF0cyA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBpblxuICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0MmlcbiAgICAgICAgKGZ1biBfIGIgY2MgciAtPiBiICYmIEluc3RhbmNlcy5pc192YWxpZCBncmFwaC5pbXAuaW5zdGFuY2VzIGNjIHIpXG4gICAgICAgIHRydWUgcGF0c1xuICAgICAgICAoVG9vbHMuYXJyYXlfcmV2X29mX2xpc3QgaW52X3Jvb3RzKVxuICAgICAgJiYgKChub3QgaXNfdW5hcnkpXG4gICAgICAgICB8fFxuICAgICAgICAgbWF0Y2ggcGF0aCB3aXRoXG4gICAgICAgICB8IFNvbWUgcCAtPiBFZGdlcy5pc192YWxpZF9wYXRoIHAgZ3JhcGguZWRnZXNcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAobWF0Y2ggaW52X3Jvb3RzIHdpdGhcbiAgICAgICAgICAgfCBbIHg7IHkgXSAtPiBFZGdlcy5pbl9zYW1lX2Nvbm5lY3RlZF9jb21wb25lbnQgeCB5IGdyYXBoLmVkZ2VzXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuXG4gIGxldCBhcHBseV9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyA/bWF4Q29uc2VjdXRpdmVCbG9ja2VkXG4gICAgICB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnYgY291bnRlciBncmFwaCAoaXNfdW5hcnksIHJ1bGVfaWQsIGluc3RhbmNlKSA9XG4gICAgbGV0IGNhdXNlID0gVHJhY2UuUlVMRSBydWxlX2lkIGluXG4gICAgbGV0IHJ1bGUgPSBNb2RlbC5nZXRfcnVsZSBlbnYgcnVsZV9pZCBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBkZWJ1Z19tb2RlIHRoZW5cbiAgICAgICAgRm9ybWF0LnByaW50ZiBcIkBbPHY+QFtBcHBsaWVkQCAldCVpOkBdQCBAWyVhQF1AXUAuXCJcbiAgICAgICAgICAoZnVuIGYgLT4gaWYgaXNfdW5hcnkgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwidW5hcnlAIFwiKVxuICAgICAgICAgIHJ1bGVfaWRcbiAgICAgICAgICAoS2FwcGFfcHJpbnRlci5kZWNvbXBpbGVkX3J1bGUgfm5vQ291bnRlcnM6dHJ1ZSB+ZnVsbDp0cnVlIGVudilcbiAgICAgICAgICBydWxlXG4gICAgICAoKlJ1bGVfaW50ZXJwcmV0ZXIucHJpbnRfZGlzdCBlbnYgZ3JhcGggcnVsZV9pZCopXG4gICAgaW5cbiAgICBsZXQgYXBwbHlfZ2l2ZW4gPVxuICAgICAgaWYgaXNfdW5hcnkgdGhlblxuICAgICAgICBhcHBseV9naXZlbl91bmFyeV9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+cnVsZV9pZFxuICAgICAgZWxzZVxuICAgICAgICBhcHBseV9naXZlbl9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+cnVsZV9pZFxuICAgIGluXG4gICAgbWF0Y2ggYXBwbHlfZ2l2ZW4gZW52IGNvdW50ZXIgZ3JhcGggY2F1c2UgcnVsZSBpbnN0YW5jZSB3aXRoXG4gICAgfCBTdWNjZXNzIGdyYXBoJyAtPlxuICAgICAgbGV0IGZpbmFsX3N0ZXAgPSBub3QgKENvdW50ZXIub25lX2NvbnN0cnVjdGl2ZV9ldmVudCB+cnVsZV9pZCBjb3VudGVyKSBpblxuICAgICAgU29tZSBydWxlLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUsIGZpbmFsX3N0ZXAsIGdyYXBoJ1xuICAgIHwgKENsYXNoIHwgQ29ycmVjdGVkIHwgQmxvY2tlZCkgYXMgb3V0IC0+XG4gICAgICBsZXQgY29udGludWUgPVxuICAgICAgICBpZiBvdXQgPSBDbGFzaCB0aGVuXG4gICAgICAgICAgQ291bnRlci5vbmVfY2xhc2hpbmdfaW5zdGFuY2VfZXZlbnQgfnJ1bGVfaWQgY291bnRlclxuICAgICAgICBlbHNlIGlmIG91dCA9IEJsb2NrZWQgdGhlblxuICAgICAgICAgIENvdW50ZXIub25lX2Jsb2NrZWRfZXZlbnQgY291bnRlclxuICAgICAgICBlbHNlIGlmIGlzX3VuYXJ5IHRoZW5cbiAgICAgICAgICBDb3VudGVyLm9uZV9ub19tb3JlX3VuYXJ5X2V2ZW50IH5ydWxlX2lkIGNvdW50ZXJcbiAgICAgICAgZWxzZVxuICAgICAgICAgIENvdW50ZXIub25lX25vX21vcmVfYmluYXJ5X2V2ZW50IH5ydWxlX2lkIGNvdW50ZXJcbiAgICAgIGluXG4gICAgICBpZlxuICAgICAgICBDb3VudGVyLmNvbnNlY3V0aXZlX251bGxfZXZlbnQgfnJ1bGVfaWQgY291bnRlciA8IG1heENvbnNlY3V0aXZlQ2xhc2hcbiAgICAgICAgJiZcbiAgICAgICAgbWF0Y2ggbWF4Q29uc2VjdXRpdmVCbG9ja2VkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIG4gLT4gQ291bnRlci5jb25zZWN1dGl2ZV9ibG9ja2VkIGNvdW50ZXIgPCBuXG4gICAgICB0aGVuXG4gICAgICAgIE5vbmUsIG5vdCBjb250aW51ZSwgZ3JhcGhcbiAgICAgIGVsc2VcbiAgICAgICAgKCBOb25lLFxuICAgICAgICAgIG5vdCBjb250aW51ZSxcbiAgICAgICAgICBpZiBpc191bmFyeSB0aGVuXG4gICAgICAgICAgICBhZGp1c3RfdW5hcnlfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgZW52IGNvdW50ZXIgZ3JhcGhcbiAgICAgICAgICAgICAgcnVsZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGFkanVzdF9ydWxlX2luc3RhbmNlcyB+ZGVidWdfbW9kZSB+cnVsZV9pZCBlbnYgY291bnRlciBncmFwaCBydWxlIClcblxuICBsZXQgYXV4X2FkZF90cmFja2VkIHBhdHRlcm5zIG5hbWUgdGVzdHMgc3RhdGUgdHBhdHRlcm4gPVxuICAgIGxldCAoKSA9IHN0YXRlLm91dGRhdGVkIDwtIHRydWUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIHBhdHRlcm4gLT5cbiAgICAgICAgICBsZXQgYWNjID0gUGF0dGVybi5PYnNNYXAuZ2V0IHRwYXR0ZXJuIHBhdHRlcm4gaW5cbiAgICAgICAgICBQYXR0ZXJuLk9ic01hcC5zZXQgdHBhdHRlcm4gcGF0dGVybiAoKG5hbWUsIHBhdHRlcm5zLCB0ZXN0cykgOjogYWNjKSlcbiAgICAgICAgcGF0dGVybnNcbiAgICBpblxuICAgIHsgc3RhdGUgd2l0aCBvdXRkYXRlZCA9IGZhbHNlIH1cblxuICBsZXQgYWRkX3RyYWNrZWQgfm91dHB1dHMgcGF0dGVybnMgbmFtZSB0ZXN0cyBzdGF0ZSA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbWF0Y2ggc3RhdGUuaW1wLnN0b3J5X21hY2hpbmVyeSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgKERhdGEuV2FybmluZ1xuICAgICAgICAgICAgICggTm9uZSxcbiAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgICBcIk9ic2VydmFibGUgJXMgc2hvdWxkIGJlIHRyYWNrZWQgYnV0IHRoZSB0cmFjZSBpcyBub3Qgc3RvcmVkXCJcbiAgICAgICAgICAgICAgICAgICBuYW1lICkpXG4gICAgICBpblxuICAgICAgc3RhdGVcbiAgICB8IFNvbWUgdHBhdHRlcm4gLT4gYXV4X2FkZF90cmFja2VkIHBhdHRlcm5zIG5hbWUgdGVzdHMgc3RhdGUgdHBhdHRlcm5cblxuICBsZXQgcmVtb3ZlX3RyYWNrZWQgcGF0dGVybnMgbmFtZSBzdGF0ZSA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbWF0Y2ggc3RhdGUuaW1wLnN0b3J5X21hY2hpbmVyeSB3aXRoXG4gICAgfCBOb25lIC0+IHN0YXRlXG4gICAgfCBTb21lIHRwYXR0ZXJuIC0+XG4gICAgICAobWF0Y2ggbmFtZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0ICgpID0gc3RhdGUub3V0ZGF0ZWQgPC0gdHJ1ZSBpblxuICAgICAgICBsZXQgdGVzdGVyIChfLCBlbCwgXykgPVxuICAgICAgICAgIG5vdFxuICAgICAgICAgIEBAIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgICAgIChmdW4gaSBiIHggLT4gYiAmJiBQYXR0ZXJuLmlzX2VxdWFsX2Nhbm9uaWNhbHMgeCBlbC4oaSkpXG4gICAgICAgICAgICAgICB0cnVlIHBhdHRlcm5zXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgQXJyYXkuaXRlclxuICAgICAgICAgICAgKGZ1biBwYXR0ZXJuIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBQYXR0ZXJuLk9ic01hcC5nZXQgdHBhdHRlcm4gcGF0dGVybiBpblxuICAgICAgICAgICAgICBQYXR0ZXJuLk9ic01hcC5zZXQgdHBhdHRlcm4gcGF0dGVybiAoTGlzdC5maWx0ZXIgdGVzdGVyIGFjYykpXG4gICAgICAgICAgICBwYXR0ZXJuc1xuICAgICAgICBpblxuICAgICAgICB7IHN0YXRlIHdpdGggb3V0ZGF0ZWQgPSBmYWxzZSB9XG4gICAgICB8IFNvbWUgbmFtZSAtPlxuICAgICAgICBsZXQgKCkgPSBzdGF0ZS5vdXRkYXRlZCA8LSB0cnVlIGluXG4gICAgICAgIGxldCB0ZXN0ZXIgKG4sIF8sIF8pID0gbm90IChTdHJpbmcuY29tcGFyZSBuYW1lIG4gPSAwKSBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIFBhdHRlcm4uT2JzTWFwLml0ZXJpXG4gICAgICAgICAgICAoZnVuIGNjX2lkIHBsaXN0IC0+XG4gICAgICAgICAgICAgIFBhdHRlcm4uT2JzTWFwLnNldCB0cGF0dGVybiBjY19pZCAoTGlzdC5maWx0ZXIgdGVzdGVyIHBsaXN0KSlcbiAgICAgICAgICAgIHRwYXR0ZXJuXG4gICAgICAgIGluXG4gICAgICAgIHsgc3RhdGUgd2l0aCBvdXRkYXRlZCA9IGZhbHNlIH0pXG5cbiAgbGV0IGFkZF90cmFja2VkX3NwZWNpZXMgcGF0dGVybnMgbmFtZSB0ZXN0cyBzdGF0ZSA9XG4gICAgYXV4X2FkZF90cmFja2VkIHBhdHRlcm5zIG5hbWUgdGVzdHMgc3RhdGUgc3RhdGUuaW1wLnNwZWNpZXNcblxuICBsZXQgcmVtb3ZlX3RyYWNrZWRfc3BlY2llcyBuYW1lIHN0YXRlID1cbiAgICBsZXQgKCkgPSBzdGF0ZS5vdXRkYXRlZCA8LSB0cnVlIGluXG4gICAgbGV0IHRlc3RlciAobiwgXywgXykgPSBub3QgKFN0cmluZy5jb21wYXJlIG5hbWUgbiA9IDApIGluXG4gICAgbGV0ICgpID1cbiAgICAgIFBhdHRlcm4uT2JzTWFwLml0ZXJpXG4gICAgICAgIChmdW4gY2NfaWQgcGxpc3QgLT5cbiAgICAgICAgICBQYXR0ZXJuLk9ic01hcC5zZXQgc3RhdGUuaW1wLnNwZWNpZXMgY2NfaWQgKExpc3QuZmlsdGVyIHRlc3RlciBwbGlzdCkpXG4gICAgICAgIHN0YXRlLmltcC5zcGVjaWVzXG4gICAgaW5cbiAgICB7IHN0YXRlIHdpdGggb3V0ZGF0ZWQgPSBmYWxzZSB9XG5cbiAgbGV0IGdldF9yYW5kb21fc3RhdGUgc3RhdGUgPSBzdGF0ZS5pbXAucmFuZG9tX3N0YXRlXG5cbiAgbGV0IHNlbmRfaW5zdGFuY2VzX21lc3NhZ2UgbXNnIHN0YXRlID1cbiAgICB7XG4gICAgICBzdGF0ZSB3aXRoXG4gICAgICBpbXAgPVxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGUuaW1wIHdpdGhcbiAgICAgICAgICBpbnN0YW5jZXMgPSBJbnN0YW5jZXMucmVjZWl2ZV9tZXNzYWdlIG1zZyBzdGF0ZS5pbXAuaW5zdGFuY2VzO1xuICAgICAgICB9O1xuICAgIH1cblxuICBsZXQgYWRkX291dGRhdGVkX2RlcGVuZGVuY2llcyBuZXdfZGVwcyBzdGF0ZSA9XG4gICAgbGV0IG91dGRhdGVkX2VsZW1lbnRzID1cbiAgICAgIE9wZXJhdG9yLkRlcFNldC51bmlvbiBuZXdfZGVwcyBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50c1xuICAgIGluXG4gICAgeyBzdGF0ZSB3aXRoIG91dGRhdGVkX2VsZW1lbnRzIH1cblxuICBsZXQgZGVidWdfcHJpbnRfaW5zdGFuY2VzIGYgc3QgPSBJbnN0YW5jZXMuZGVidWdfcHJpbnQgZiBzdC5pbXAuaW5zdGFuY2VzXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHtcbiAgaW5pdF9zdG9wcGluZ190aW1lczogKE5ici50ICogaW50KSBsaXN0O1xuICBtdXRhYmxlIHN0b3BwaW5nX3RpbWVzOiAoTmJyLnQgKiBpbnQpIGxpc3Q7XG4gIHBlcnR1cmJhdGlvbnNfYWxpdmU6IGJvb2wgYXJyYXk7XG4gIHRpbWVfZGVwZW5kZW50X3BlcnRzOiBpbnQgbGlzdDtcbiAgbXV0YWJsZSBmb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnM6IGludCBsaXN0O1xuICBwZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldDogYm9vbCBhcnJheTtcbiAgKCogaW50ZXJuYWwgYXJyYXkgZm9yIHBlcnR1cmJhdGUgZnVuY3Rpb24gKGdsb2JhbCB0byBhdm9pZCB1c2VsZXNzIGFsbG9jKSAqKVxuICBtdXRhYmxlIGZsdXg6IChzdHJpbmcgKiBEYXRhLmRpbl9kYXRhKSBsaXN0O1xuICB3aXRoX2RlbHRhX2FjdGl2aXRpZXM6IGJvb2w7XG59XG5cbmxldCBjb21wYXJlX3N0b3BzICh0MSwgcDEpICh0MiwgcDIpID1cbiAgbGV0IHQgPSBOYnIuY29tcGFyZSB0MSB0MiBpblxuICBpZiB0ID0gMCB0aGVuXG4gICAgY29tcGFyZSBwMSBwMlxuICBlbHNlXG4gICAgdFxuXG5sZXQgZW1wdHkgfndpdGhfZGVsdGFfYWN0aXZpdGllcyBjb3VudGVyIGVudiA9XG4gIGxldCB0MCA9IENvdW50ZXIuaW5pdF90aW1lIGNvdW50ZXIgaW5cbiAgbGV0IHN0b3BwaW5nX3RpbWVzID1cbiAgICBsZXQgYWxnc19kZXBzID0gTW9kZWwuYWxsX2RlcGVuZGVuY2llcyBlbnYgaW5cbiAgICBNb2RlbC5mb2xkX3BlcnR1cmJhdGlvbnNcbiAgICAgIChmdW4gaSBhY2MgeCAtPlxuICAgICAgICBtYXRjaCB4LlByaW1pdGl2ZXMuYWxhcm0gd2l0aFxuICAgICAgICB8IFNvbWUgbiAtPlxuICAgICAgICAgIGxldCBrID0gMS4gKy4gZmxvb3IgKHQwIC8uIE9wdGlvbl91dGlsLnVuc29tZSAwLiAoTmJyLnRvX2Zsb2F0IG4pKSBpblxuICAgICAgICAgIChOYnIubXVsdCAoTmJyLkYgaykgbiwgaSkgOjogYWNjXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBBbGdfZXhwci5pc19lcXVhbGl0eV90ZXN0X3RpbWUgYWxnc19kZXBzXG4gICAgICAgICAgICAgICAgKGZzdCB4LlByaW1pdGl2ZXMucHJlY29uZGl0aW9uKVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKCBcIkVxdWFsaXR5IHRlc3Qgb24gdGltZSByZXF1aXJlcyBhbiBhbGFybVwiLFxuICAgICAgICAgICAgICAgICAgICAgc25kIHguUHJpbWl0aXZlcy5wcmVjb25kaXRpb24gKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBBbGdfZXhwci5pc19lcXVhbGl0eV90ZXN0X3RpbWUgYWxnc19kZXBzIChmc3QgeC5QcmltaXRpdmVzLnJlcGVhdClcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICggXCJFcXVhbGl0eSB0ZXN0IG9uIHRpbWUgcmVxdWlyZXMgYW4gYWxhcm1cIixcbiAgICAgICAgICAgICAgICAgICAgIHNuZCB4LlByaW1pdGl2ZXMucmVwZWF0ICkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhY2MpXG4gICAgICBbXSBlbnZcbiAgaW5cbiAgbGV0IHN0b3BzID0gTGlzdC5zb3J0IGNvbXBhcmVfc3RvcHMgc3RvcHBpbmdfdGltZXMgaW5cbiAgbGV0IHRpbWVfZGVwZW5kZW50X3BlcnRzID1cbiAgICBsZXQgcmVjIGF1eCBkZXAgYWNjID1cbiAgICAgIE9wZXJhdG9yLkRlcFNldC5mb2xkXG4gICAgICAgIChmdW4gZGVwIHBlcnRzIC0+XG4gICAgICAgICAgbWF0Y2ggZGVwIHdpdGhcbiAgICAgICAgICB8IE9wZXJhdG9yLkFMRyBqIC0+XG4gICAgICAgICAgICBhdXggKE1vZGVsLmdldF9hbGdfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgZW52IGopIHBlcnRzXG4gICAgICAgICAgfCBPcGVyYXRvci5NT0RJRiBwIC0+XG4gICAgICAgICAgICBMaXN0X3V0aWwubWVyZ2VfdW5pcSBNb2RzLmludF9jb21wYXJlIFsgcCBdIHBlcnRzXG4gICAgICAgICAgfCBPcGVyYXRvci5SVUxFIF8gLT4gcGVydHMpXG4gICAgICAgIGRlcCBhY2NcbiAgICBpblxuICAgIGF1eFxuICAgICAgKGxldCB4LCBfLCBfLCBfID0gTW9kZWwuYWxsX2RlcGVuZGVuY2llcyBlbnYgaW5cbiAgICAgICB4KVxuICAgICAgW11cbiAgaW5cbiAge1xuICAgIGluaXRfc3RvcHBpbmdfdGltZXMgPSBzdG9wcztcbiAgICBzdG9wcGluZ190aW1lcyA9IHN0b3BzO1xuICAgIHBlcnR1cmJhdGlvbnNfYWxpdmUgPSBBcnJheS5tYWtlIChNb2RlbC5uYl9wZXJ0dXJiYXRpb25zIGVudikgdHJ1ZTtcbiAgICBmb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnMgPSBbXTtcbiAgICB0aW1lX2RlcGVuZGVudF9wZXJ0cztcbiAgICBwZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldCA9IEFycmF5Lm1ha2UgKE1vZGVsLm5iX3BlcnR1cmJhdGlvbnMgZW52KSB0cnVlO1xuICAgIGZsdXggPSBbXTtcbiAgICB3aXRoX2RlbHRhX2FjdGl2aXRpZXM7XG4gIH1cblxubGV0IG9ic2VydmFibGVzX3ZhbHVlcyBlbnYgZ3JhcGggY291bnRlciA9XG4gIE1vZGVsLm1hcF9vYnNlcnZhYmxlcyAoUnVsZV9pbnRlcnByZXRlci52YWx1ZV9hbGcgY291bnRlciBncmFwaCkgZW52XG5cbmxldCBkb19tb2RpZmljYXRpb24gfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgZXh0cmFcbiAgICBtb2RpZmljYXRpb24gPVxuICBsZXQgcHJpbnRfZXhwcl92YWwgPVxuICAgIEthcHBhX3ByaW50ZXIucHJpbnRfZXhwcl92YWwgKFJ1bGVfaW50ZXJwcmV0ZXIudmFsdWVfYWxnIGNvdW50ZXIgZ3JhcGgpXG4gIGluXG4gIG1hdGNoIG1vZGlmaWNhdGlvbiB3aXRoXG4gIHwgUHJpbWl0aXZlcy5JVEVSX1JVTEUgKCh2LCBfKSwgcikgLT5cbiAgICBsZXQgdGV4dCA9XG4gICAgICBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIlxuICAgICAgICAoS2FwcGFfcHJpbnRlci5tb2RpZmljYXRpb24gfm5vQ291bnRlcnM6ZGVidWdfbW9kZSB+ZW52KVxuICAgICAgICBtb2RpZmljYXRpb25cbiAgICBpblxuICAgIGxldCBncmFwaCcgPVxuICAgICAgTmJyLm1heWJlX2l0ZXJpXG4gICAgICAgIChmdW4gXyBnIC0+XG4gICAgICAgICAgUnVsZV9pbnRlcnByZXRlci5mb3JjZV9ydWxlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdcbiAgICAgICAgICAgIChUcmFjZS5QRVJUIHRleHQpIHIpXG4gICAgICAgIGdyYXBoXG4gICAgICAgIChSdWxlX2ludGVycHJldGVyLnZhbHVlX2FsZyBjb3VudGVyIGdyYXBoIHYpXG4gICAgaW5cbiAgICBsZXQgZ3JhcGgnJywgZXh0cmEnID1cbiAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIudXBkYXRlX291dGRhdGVkX2FjdGl2aXRpZXMgfmRlYnVnX21vZGVcbiAgICAgICAgKGZ1biBfIF8gXyAtPiAoKSlcbiAgICAgICAgZW52IGNvdW50ZXIgZ3JhcGgnIGV4dHJhXG4gICAgaW5cbiAgICBmYWxzZSwgZ3JhcGgnJywgc3RhdGUsIGV4dHJhJ1xuICB8IFByaW1pdGl2ZXMuVVBEQVRFIChpLCAoZXhwciwgXykpIC0+XG4gICAgbGV0IGdyYXBoJyA9IFJ1bGVfaW50ZXJwcmV0ZXIub3ZlcndyaXRlX3ZhciBpIGNvdW50ZXIgZ3JhcGggZXhwciBpblxuICAgIGxldCBncmFwaCcnLCBleHRyYScgPVxuICAgICAgUnVsZV9pbnRlcnByZXRlci51cGRhdGVfb3V0ZGF0ZWRfYWN0aXZpdGllcyB+ZGVidWdfbW9kZVxuICAgICAgICAoZnVuIF8gXyBfIC0+ICgpKVxuICAgICAgICBlbnYgY291bnRlciBncmFwaCcgZXh0cmFcbiAgICBpblxuICAgIGZhbHNlLCBncmFwaCcnLCBzdGF0ZSwgZXh0cmEnXG4gIHwgUHJpbWl0aXZlcy5TVE9QIHBleHByIC0+XG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHBleHByIDw+IFtdIHRoZW4gKFxuICAgICAgICBsZXQgZmlsZSA9IEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIHBleHByIGluXG4gICAgICAgIG91dHB1dHNcbiAgICAgICAgICAoRGF0YS5TbmFwc2hvdFxuICAgICAgICAgICAgICggZmlsZSxcbiAgICAgICAgICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuc25hcHNob3QgfmRlYnVnX21vZGUgfnJhdzpmYWxzZSBlbnYgY291bnRlclxuICAgICAgICAgICAgICAgICBncmFwaCApKVxuICAgICAgKVxuICAgIGluXG4gICAgdHJ1ZSwgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuUFJJTlQgKHBlX2ZpbGUsIHBlX2V4cHIpIC0+XG4gICAgbGV0IGZpbGVfb3B0ID1cbiAgICAgIG1hdGNoIHBlX2ZpbGUgd2l0aFxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IF8gLT4gU29tZSAoRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgcGVfZmlsZSlcbiAgICBpblxuICAgIGxldCBsaW5lID0gRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgcGVfZXhwciBpblxuICAgIGxldCAoKSA9XG4gICAgICBvdXRwdXRzXG4gICAgICAgIChEYXRhLlByaW50XG4gICAgICAgICAgIHsgRGF0YS5maWxlX2xpbmVfbmFtZSA9IGZpbGVfb3B0OyBEYXRhLmZpbGVfbGluZV90ZXh0ID0gbGluZSB9KVxuICAgIGluXG4gICAgZmFsc2UsIGdyYXBoLCBzdGF0ZSwgZXh0cmFcbiAgfCBQcmltaXRpdmVzLlBMT1RFTlRSWSAtPlxuICAgIGxldCAoKSA9IG91dHB1dHMgKERhdGEuUGxvdCAob2JzZXJ2YWJsZXNfdmFsdWVzIGVudiBncmFwaCBjb3VudGVyKSkgaW5cbiAgICBmYWxzZSwgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuU05BUFNIT1QgKHJhdywgcGV4cHIpIC0+XG4gICAgbGV0IGZpbGUgPVxuICAgICAgaWYgcGV4cHIgPSBbXSB0aGVuXG4gICAgICAgIFwic25hcC5rYVwiXG4gICAgICBlbHNlXG4gICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIHBleHByXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgb3V0cHV0c1xuICAgICAgICAoRGF0YS5TbmFwc2hvdFxuICAgICAgICAgICAoZmlsZSwgUnVsZV9pbnRlcnByZXRlci5zbmFwc2hvdCB+ZGVidWdfbW9kZSB+cmF3IGVudiBjb3VudGVyIGdyYXBoKSlcbiAgICBpblxuICAgIGZhbHNlLCBncmFwaCwgc3RhdGUsIGV4dHJhXG4gIHwgUHJpbWl0aXZlcy5DRkxPVyAobmFtZSwgY2MsIHRlc3RzKSAtPlxuICAgIGxldCBuYW1lID1cbiAgICAgIG1hdGNoIG5hbWUgd2l0aFxuICAgICAgfCBTb21lIHMgLT4gc1xuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiXG4gICAgICAgICAgKFBwLmFycmF5IFBwLmNvbW1hIChmdW4gXyAtPlxuICAgICAgICAgICAgICAgUGF0dGVybi5wcmludCB+bm9Db3VudGVyczpkZWJ1Z19tb2RlIH5kb21haW4gfndpdGhfaWQ6ZmFsc2UpKVxuICAgICAgICAgIGNjXG4gICAgaW5cbiAgICAoIGZhbHNlLFxuICAgICAgUnVsZV9pbnRlcnByZXRlci5hZGRfdHJhY2tlZCB+b3V0cHV0cyBjYyBuYW1lIHRlc3RzIGdyYXBoLFxuICAgICAgc3RhdGUsXG4gICAgICBleHRyYSApXG4gIHwgUHJpbWl0aXZlcy5DRkxPV09GRiAobmFtZSwgY2MpIC0+XG4gICAgZmFsc2UsIFJ1bGVfaW50ZXJwcmV0ZXIucmVtb3ZlX3RyYWNrZWQgY2MgbmFtZSBncmFwaCwgc3RhdGUsIGV4dHJhXG4gIHwgUHJpbWl0aXZlcy5TUEVDSUVTX09GRiBmbiAtPlxuICAgIGxldCBmaWxlID0gRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgZm4gaW5cbiAgICBmYWxzZSwgUnVsZV9pbnRlcnByZXRlci5yZW1vdmVfdHJhY2tlZF9zcGVjaWVzIGZpbGUgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuRElOIChyZWwsIHMpIC0+XG4gICAgbGV0IGZpbGUgPSBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludF9leHByX3ZhbCBzIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmXG4gICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgKGZ1biAobmFtZSwgeCkgLT4gZmlsZSA9IG5hbWUgJiYgeC5EYXRhLmRpbl9raW5kID0gcmVsKVxuICAgICAgICAgIHN0YXRlLmZsdXhcbiAgICAgIHRoZW5cbiAgICAgICAgb3V0cHV0c1xuICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgXCJBdCB0PSVmLCBlPSVpOiB0cmFja2luZyBESU4gaW50byBcXFwiJXNcXFwiIHdhcyBhbHJlYWR5IG9uXCJcbiAgICAgICAgICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcilcbiAgICAgICAgICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X2V2ZW50IGNvdW50ZXIpXG4gICAgICAgICAgICAgICAgICAgZmlsZSApKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIHN0YXRlLmZsdXggPC0gKGZpbGUsIEZsdXhtYXAuY3JlYXRlX2ZsdXggZW52IGNvdW50ZXIgcmVsKSA6OiBzdGF0ZS5mbHV4XG4gICAgaW5cbiAgICBmYWxzZSwgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuRElOT0ZGIHMgLT5cbiAgICBsZXQgZmlsZSA9IEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIHMgaW5cbiAgICBsZXQgdGhlc2UsIG90aGVycyA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiAoZnVuIChuYW1lLCBfKSAtPiBuYW1lID0gZmlsZSkgc3RhdGUuZmx1eFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChuYW1lLCB4KSAtPlxuICAgICAgICAgIG91dHB1dHMgKERhdGEuRElOIChuYW1lLCBGbHV4bWFwLnN0b3BfZmx1eCBlbnYgY291bnRlciB4KSkpXG4gICAgICAgIHRoZXNlXG4gICAgaW5cbiAgICBsZXQgKCkgPSBzdGF0ZS5mbHV4IDwtIG90aGVycyBpblxuICAgIGZhbHNlLCBncmFwaCwgc3RhdGUsIGV4dHJhXG4gIHwgUHJpbWl0aXZlcy5TUEVDSUVTIChzLCBjYywgdGVzdHMpIC0+XG4gICAgbGV0IGZpbGUgPSBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludF9leHByX3ZhbCBzIGluXG4gICAgKCBmYWxzZSxcbiAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuYWRkX3RyYWNrZWRfc3BlY2llcyBjYyBmaWxlIHRlc3RzIGdyYXBoLFxuICAgICAgc3RhdGUsXG4gICAgICBleHRyYSApXG5cbmxldCByZWMgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm0gZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICBtaXhfY2hhbmdlZCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2UsIGdyYXBoLCBzdGF0ZSwgbWl4X2NoYW5nZWRcbiAgfCBpIDo6IHRhaWwgLT5cbiAgICBsZXQgcGVydCA9IE1vZGVsLmdldF9wZXJ0dXJiYXRpb24gZW52IGkgaW5cbiAgICBsZXQgbW9kX2FsYXJtID1cbiAgICAgIG1hdGNoIHBlcnQuUHJpbWl0aXZlcy5hbGFybSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgfCBTb21lIF8gLT4gaXNfYWxhcm1cbiAgICBpblxuICAgIGlmXG4gICAgICBzdGF0ZS5wZXJ0dXJiYXRpb25zX2FsaXZlLihpKVxuICAgICAgJiYgc3RhdGUucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQuKGkpXG4gICAgICAmJiBSdWxlX2ludGVycHJldGVyLnZhbHVlX2Jvb2wgY291bnRlciBncmFwaFxuICAgICAgICAgICAoZnN0IHBlcnQuUHJpbWl0aXZlcy5wcmVjb25kaXRpb24pXG4gICAgICAmJiBtb2RfYWxhcm1cbiAgICB0aGVuIChcbiAgICAgIGxldCBtaXhfY2hhbmdlZCA9IG1peF9jaGFuZ2VkICYmIHBlcnQuUHJpbWl0aXZlcy5uZWVkc19iYWNrdHJhY2sgaW5cbiAgICAgIGxldCBzdG9wLCBncmFwaCwgc3RhdGUsIHRhaWwnID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuICgoc3RvcCwgZ3JhcGgsIHN0YXRlLCBleHRyYSkgYXMgYWNjKSBlZmZlY3QgLT5cbiAgICAgICAgICAgIGlmIHN0b3AgdGhlblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZG9fbW9kaWZpY2F0aW9uIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlIGV4dHJhXG4gICAgICAgICAgICAgICAgZWZmZWN0KVxuICAgICAgICAgIChmYWxzZSwgZ3JhcGgsIHN0YXRlLCB0YWlsKVxuICAgICAgICAgIHBlcnQuUHJpbWl0aXZlcy5lZmZlY3RcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBzdGF0ZS5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldC4oaSkgPC0gZmFsc2UgaW5cbiAgICAgIGxldCBhbGl2ZSA9XG4gICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIudmFsdWVfYm9vbCBjb3VudGVyIGdyYXBoIChmc3QgcGVydC5QcmltaXRpdmVzLnJlcGVhdClcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBhbGl2ZSAmJiBwZXJ0LlByaW1pdGl2ZXMuYWxhcm0gPSBOb25lIHRoZW5cbiAgICAgICAgICBzdGF0ZS5mb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnMgPC0gaSA6OiBzdGF0ZS5mb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnNcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBzdGF0ZS5wZXJ0dXJiYXRpb25zX2FsaXZlLihpKSA8LSBhbGl2ZSBpblxuICAgICAgbGV0IG1peF9jaGFuZ2VkJyA9IG1peF9jaGFuZ2VkIHx8IHBlcnQuUHJpbWl0aXZlcy5uZWVkc19iYWNrdHJhY2sgaW5cbiAgICAgIGlmIHN0b3AgdGhlblxuICAgICAgICBzdG9wLCBncmFwaCwgc3RhdGUsIG1peF9jaGFuZ2VkJ1xuICAgICAgZWxzZVxuICAgICAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTpmYWxzZSBlbnYgY291bnRlciBncmFwaCBzdGF0ZVxuICAgICAgICAgIG1peF9jaGFuZ2VkJyB0YWlsJ1xuICAgICkgZWxzZVxuICAgICAgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm06ZmFsc2UgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICAgICAgbWl4X2NoYW5nZWQgdGFpbFxuXG5sZXQgZG9fbW9kaWZpY2F0aW9ucyB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBncmFwaCBzdGF0ZSBsaXN0ID1cbiAgbGV0IHN0b3AsIGdyYXBoLCBzdGF0ZSwgZXh0cmEgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuICgoc3RvcCwgZ3JhcGgsIHN0YXRlLCBleHRyYSkgYXMgYWNjKSBlZmZlY3QgLT5cbiAgICAgICAgaWYgc3RvcCB0aGVuXG4gICAgICAgICAgYWNjXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBkb19tb2RpZmljYXRpb24gfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgZXh0cmFcbiAgICAgICAgICAgIGVmZmVjdClcbiAgICAgIChmYWxzZSwgZ3JhcGgsIHN0YXRlLCBbXSkgbGlzdFxuICBpblxuICBpZiBzdG9wIHRoZW5cbiAgICBzdG9wLCBncmFwaCwgc3RhdGUsIGZhbHNlXG4gIGVsc2VcbiAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTpmYWxzZSBlbnYgY291bnRlciBncmFwaCBzdGF0ZVxuICAgICAgZmFsc2UgZXh0cmFcblxubGV0IGluaXRpYWxpemUgfmJpbmQgfnJldHVybiB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBncmFwaDAgc3RhdGUwXG4gICAgaW5pdF9sID1cbiAgbGV0IG1ncmFwaCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gbXN0YXRlIChhbGcsIGNvbXBpbGVkX3J1bGUpIC0+XG4gICAgICAgIGJpbmQgbXN0YXRlIChmdW4gKHN0b3AsIHN0YXRlLCBzdGF0ZTApIC0+XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBSdWxlX2ludGVycHJldGVyLnZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIGFsZyBpblxuICAgICAgICAgICAgbGV0IGFjdGlvbnMgPVxuICAgICAgICAgICAgICBjb21waWxlZF9ydWxlLlByaW1pdGl2ZXMuaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGNyZWF0aW9uc19zb3J0ID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGwgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKHgsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIHggOjogbFxuICAgICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5CaW5kIF9cbiAgICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF8gfCBJbnN0YW50aWF0aW9uLkZyZWUgX1xuICAgICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgICAgICAgW10gYWN0aW9uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAoIHN0b3AsXG4gICAgICAgICAgICAgICAgTmJyLml0ZXJpXG4gICAgICAgICAgICAgICAgICAoZnVuIF8gcyAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuYXBwbHlfZ2l2ZW5fcnVsZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgcyAoVHJhY2UuSU5JVCBjcmVhdGlvbnNfc29ydCkgY29tcGlsZWRfcnVsZVxuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUnVsZV9pbnRlcnByZXRlci5TdWNjZXNzIHMgLT4gc1xuICAgICAgICAgICAgICAgICAgICB8IFJ1bGVfaW50ZXJwcmV0ZXIuQ2xhc2ggfCBSdWxlX2ludGVycHJldGVyLkNvcnJlY3RlZFxuICAgICAgICAgICAgICAgICAgICB8IFJ1bGVfaW50ZXJwcmV0ZXIuQmxvY2tlZCAtPlxuICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiQnVnZ2VkIGluaXRpYWwgcnVsZVwiKSkpXG4gICAgICAgICAgICAgICAgICBzdGF0ZSB2YWx1ZSxcbiAgICAgICAgICAgICAgICBzdGF0ZTAgKSkpXG4gICAgICAocmV0dXJuIChmYWxzZSwgZ3JhcGgwLCBzdGF0ZTApKVxuICAgICAgaW5pdF9sXG4gIGluXG4gIGJpbmQgbWdyYXBoIChmdW4gKF8sIGdyYXBoLCBzdGF0ZTApIC0+XG4gICAgICBsZXQgbWlkX2dyYXBoLCBfID1cbiAgICAgICAgUnVsZV9pbnRlcnByZXRlci51cGRhdGVfb3V0ZGF0ZWRfYWN0aXZpdGllcyB+ZGVidWdfbW9kZVxuICAgICAgICAgIChmdW4gXyBfIF8gLT4gKCkpXG4gICAgICAgICAgZW52IGNvdW50ZXIgZ3JhcGggW11cbiAgICAgIGluXG4gICAgICBsZXQgc3RvcCwgZ3JhcGgsIHN0YXRlLCBfID1cbiAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgIChmdW4gaSAoKHN0b3AsIGdyYXBoLCBzdGF0ZSwgbWl4X2NoYW5nZWQpIGFzIGFjYykgXyAtPlxuICAgICAgICAgICAgaWYgc3RvcCB0aGVuXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTp0cnVlIGVudiBjb3VudGVyIGdyYXBoXG4gICAgICAgICAgICAgICAgc3RhdGUgbWl4X2NoYW5nZWQgWyBpIF0pXG4gICAgICAgICAgKGZhbHNlLCBtaWRfZ3JhcGgsIHN0YXRlMCwgZmFsc2UpXG4gICAgICAgICAgc3RhdGUwLnBlcnR1cmJhdGlvbnNfYWxpdmVcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBBcnJheS5pdGVyaVxuICAgICAgICAgIChmdW4gaSBfIC0+IHN0YXRlMC5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldC4oaSkgPC0gdHJ1ZSlcbiAgICAgICAgICBzdGF0ZTAucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXRcbiAgICAgIGluXG4gICAgICByZXR1cm4gKHN0b3AsIGdyYXBoLCBzdGF0ZSkpXG5cbmxldCBvbmVfcnVsZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnYgY291bnRlciBncmFwaCBzdGF0ZVxuICAgIGluc3RhbmNlID1cbiAgbGV0IHByZXZfYWN0aXZpdHkgPSBSdWxlX2ludGVycHJldGVyLmFjdGl2aXR5IGdyYXBoIGluXG4gIGxldCBhY3Rfc3RhY2sgPSByZWYgW10gaW5cbiAgbGV0IGZpbmFsaXplX3JlZ2lzdHJhdGlvbiBteV9zeW50YXhfcmRfaWQgPVxuICAgIG1hdGNoIHN0YXRlLmZsdXgsIHN0YXRlLndpdGhfZGVsdGFfYWN0aXZpdGllcyB3aXRoXG4gICAgfCBbXSwgZmFsc2UgLT4gKClcbiAgICB8IGwsIF8gLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIHN0YXRlLndpdGhfZGVsdGFfYWN0aXZpdGllcyB0aGVuXG4gICAgICAgICAgb3V0cHV0cyAoRGF0YS5EZWx0YUFjdGl2aXRpZXMgKG15X3N5bnRheF9yZF9pZCwgIWFjdF9zdGFjaykpXG4gICAgICBpblxuICAgICAgbGV0IG5fYWN0aXZpdHkgPSBSdWxlX2ludGVycHJldGVyLmFjdGl2aXR5IGdyYXBoIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIChfLCBmbCkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IEZsdXhtYXAuaW5jcl9mbHV4X2hpdCBteV9zeW50YXhfcmRfaWQgZmwgaW5cbiAgICAgICAgICAgIG1hdGNoIGZsLkRhdGEuZGluX2tpbmQgd2l0aFxuICAgICAgICAgICAgfCBQcmltaXRpdmVzLkFCU09MVVRFIHwgUHJpbWl0aXZlcy5SRUxBVElWRSAtPiAoKVxuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlBST0JBQklMSVRZIC0+XG4gICAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAgIChmdW4gKHN5bnRheF9yZF9pZCwgKF8sIG5ld19hY3QpKSAtPlxuICAgICAgICAgICAgICAgICAgRmx1eG1hcC5pbmNyX2ZsdXhfZmx1eCBteV9zeW50YXhfcmRfaWQgc3ludGF4X3JkX2lkXG4gICAgICAgICAgICAgICAgICAgIChsZXQgY2FuZCA9IG5ld19hY3QgLy4gbl9hY3Rpdml0eSBpblxuICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgY2FuZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IEZQX25hbiB8IEZQX2luZmluaXRlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN0ID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlciBpblxuICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggTm9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFuIGluZmluaXRlIChvciBOYU4pIGFjdGl2aXR5IHZhcmlhdGlvbiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcyBiZWVuIGlnbm9yZWQgYXQgdD0lZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdCApKVxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAwLlxuICAgICAgICAgICAgICAgICAgICAgfCBGUF96ZXJvIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+IGNhbmQpXG4gICAgICAgICAgICAgICAgICAgIGZsKVxuICAgICAgICAgICAgICAgICFhY3Rfc3RhY2spXG4gICAgICAgICAgbFxuICAgICAgaW5cbiAgICAgIGFjdF9zdGFjayA6PSBbXVxuICBpblxuICAoKiBsZXQgKCkgPSAqKVxuICAoKiAgIEZvcm1hdC5lcHJpbnRmIFwiJWFALlwiIChSdWxlX2ludGVycHJldGVyLnByaW50X2luamVjdGlvbnMgZW52KSBncmFwaCBpbiAqKVxuICBsZXQgYXBwbGllZF9yaWRfc3ludGF4LCBmaW5hbF9zdGVwLCBncmFwaCcgPVxuICAgIFJ1bGVfaW50ZXJwcmV0ZXIuYXBwbHlfaW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgfm1heENvbnNlY3V0aXZlQ2xhc2hcbiAgICAgIGVudiBjb3VudGVyIGdyYXBoIGluc3RhbmNlXG4gIGluXG4gIG1hdGNoIGFwcGxpZWRfcmlkX3N5bnRheCB3aXRoXG4gIHwgTm9uZSAtPiBmaW5hbF9zdGVwLCBncmFwaCcsIHN0YXRlXG4gIHwgU29tZSBzeW50YXhfcmlkIC0+XG4gICAgbGV0IHJlZ2lzdGVyX25ld19hY3Rpdml0eSBzeW50YXhfcmRfaWQgb2xkX2FjdCBuZXdfYWN0ID1cbiAgICAgIG1hdGNoIHN0YXRlLmZsdXgsIHN0YXRlLndpdGhfZGVsdGFfYWN0aXZpdGllcyB3aXRoXG4gICAgICB8IFtdLCBmYWxzZSAtPiAoKVxuICAgICAgfCBsLCBfIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgYWN0X3N0YWNrIDo9IChzeW50YXhfcmRfaWQsIChvbGRfYWN0LCBuZXdfYWN0KSkgOjogIWFjdF9zdGFja1xuICAgICAgICBpblxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIChfLCBmbCkgLT5cbiAgICAgICAgICAgIEZsdXhtYXAuaW5jcl9mbHV4X2ZsdXggc3ludGF4X3JpZCBzeW50YXhfcmRfaWRcbiAgICAgICAgICAgICAgKGxldCBjYW5kID1cbiAgICAgICAgICAgICAgICAgbWF0Y2ggZmwuRGF0YS5kaW5fa2luZCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5BQlNPTFVURSAtPiBuZXdfYWN0IC0uIG9sZF9hY3RcbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlBST0JBQklMSVRZIC0+IC0uKG9sZF9hY3QgLy4gcHJldl9hY3Rpdml0eSlcbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlJFTEFUSVZFIC0+XG4gICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IG9sZF9hY3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBGUF96ZXJvIHwgRlBfbmFuIHwgRlBfaW5maW5pdGUgLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAobmV3X2FjdCAtLiBvbGRfYWN0KSAvLiBvbGRfYWN0XG4gICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgbmV3X2FjdCAtLiBvbGRfYWN0XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgY2FuZCB3aXRoXG4gICAgICAgICAgICAgICB8IEZQX25hbiB8IEZQX2luZmluaXRlIC0+XG4gICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgbGV0IGN0ID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlciBpblxuICAgICAgICAgICAgICAgICAgIG91dHB1dHNcbiAgICAgICAgICAgICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICggTm9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFuIGluZmluaXRlIChvciBOYU4pIGFjdGl2aXR5IHZhcmlhdGlvbiBoYXMgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWVuIGlnbm9yZWQgYXQgdD0lZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdCApKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAwLlxuICAgICAgICAgICAgICAgfCBGUF96ZXJvIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+IGNhbmQpXG4gICAgICAgICAgICAgIGZsKVxuICAgICAgICAgIGxcbiAgICBpblxuICAgIGxldCBmb3JjZV90ZXN0ZWQgPSBzdGF0ZS5mb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnMgaW5cbiAgICBsZXQgKCkgPSBzdGF0ZS5mb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnMgPC0gW10gaW5cbiAgICBsZXQgZ3JhcGgnJywgZXh0cmFfcGVydCA9XG4gICAgICBSdWxlX2ludGVycHJldGVyLnVwZGF0ZV9vdXRkYXRlZF9hY3Rpdml0aWVzIH5kZWJ1Z19tb2RlXG4gICAgICAgIHJlZ2lzdGVyX25ld19hY3Rpdml0eSBlbnYgY291bnRlciBncmFwaCcgZm9yY2VfdGVzdGVkXG4gICAgaW5cbiAgICBsZXQgKCkgPSBmaW5hbGl6ZV9yZWdpc3RyYXRpb24gc3ludGF4X3JpZCBpblxuICAgIGxldCBzdG9wLCBncmFwaCcnJywgc3RhdGUnLCBfbWl4X2NoYW5nZWQgPVxuICAgICAgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm06ZmFsc2UgZW52IGNvdW50ZXIgZ3JhcGgnJyBzdGF0ZVxuICAgICAgICBmYWxzZSBleHRyYV9wZXJ0XG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgKGZ1biBpIF8gLT4gc3RhdGUucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQuKGkpIDwtIHRydWUpXG4gICAgICAgIHN0YXRlLnBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0XG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgZGVidWdfbW9kZSB0aGVuXG4gICAgICAgIEZvcm1hdC5wcmludGYgXCJAWzx2Pk9idGFpbmVkQCAlYUBdQC5cIlxuICAgICAgICAgIChSdWxlX2ludGVycHJldGVyLnByaW50IGVudilcbiAgICAgICAgICBncmFwaCcnJ1xuICAgIGluXG4gICAgZmluYWxfc3RlcCB8fCBzdG9wLCBncmFwaCcnJywgc3RhdGUnXG5cbmxldCByZWMgcGVydHVyYmF0ZV91bnRpbF9maXJzdF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgZW52IGNvdW50ZXIgfm91dHB1dHNcbiAgICAoc3RvcCwgZ3JhcGgsIHN0YXRlLCBkdCkgPVxuICBtYXRjaCBzdGF0ZS5zdG9wcGluZ190aW1lcyB3aXRoXG4gIHwgW10gLT4gc3RvcCwgZ3JhcGgsIHN0YXRlLCBkdCwgZmFsc2VcbiAgfCAodGksIHBlKSA6OiB0YWlsIC0+XG4gICAgaWYgTmJyLmlzX3NtYWxsZXIgdGkgKE5ici5GIChDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyICsuIGR0KSkgdGhlbiAoXG4gICAgICBsZXQgcGVydCA9IE1vZGVsLmdldF9wZXJ0dXJiYXRpb24gZW52IHBlIGluXG4gICAgICBpZiBub3QgcGVydC5QcmltaXRpdmVzLm5lZWRzX2JhY2t0cmFjayB0aGVuIChcbiAgICAgICAgbGV0IHN0b3AnLCBncmFwaCcsIHN0YXRlJywgZHQnID1cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTmJyLnRvX2Zsb2F0IChOYnIuc3ViIHRpIChOYnIuRiAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcikpKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmFsc2UsIGdyYXBoLCBzdGF0ZSwgZHRcbiAgICAgICAgICB8IFNvbWUgZHRpIC0+XG4gICAgICAgICAgICBsZXQgZHQnID0gZHQgLS4gZHRpIGluXG4gICAgICAgICAgICAoKnNldCB0aW1lIGZvciBwZXJ0dXJiYXRlICopXG4gICAgICAgICAgICBpZiBDb3VudGVyLm9uZV90aW1lX2FkdmFuY2UgY291bnRlciBkdGkgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBzdG9wJywgZ3JhcGgnLCBzdGF0ZScsIF8gPVxuICAgICAgICAgICAgICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOnRydWUgZW52IGNvdW50ZXIgZ3JhcGhcbiAgICAgICAgICAgICAgICAgIHN0YXRlIGZhbHNlIFsgcGUgXVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgdGFpbCcgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHBlcnQuUHJpbWl0aXZlcy5hbGFybSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IHRhaWxcbiAgICAgICAgICAgICAgICB8IFNvbWUgbiAtPlxuICAgICAgICAgICAgICAgICAgaWYgc3RhdGUucGVydHVyYmF0aW9uc19hbGl2ZS4ocGUpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgTGlzdF91dGlsLm1lcmdlX3VuaXEgY29tcGFyZV9zdG9wcyBbIE5ici5hZGQgdGkgbiwgcGUgXSB0YWlsXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRhaWxcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gc3RhdGUnLnN0b3BwaW5nX3RpbWVzIDwtIHRhaWwnIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHN0YXRlJy5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldC4ocGUpIDwtIHRydWUgaW5cbiAgICAgICAgICAgICAgKCogQXJndW1lbnQgdG8gcmVzZXQgb25seSBwZSBhbmQgbm90IGFsbCBwZXJ0cyBpcyBcImlmXG4gICAgICAgICAgICAgICAgIHlvdSdyZSBub3QgYmFja3RyYWNraW5nLCBub3RoaW5nIGRlcGVuZHMgdXBvblxuICAgICAgICAgICAgICAgICB5b3VcIi4uLiBXZSdkIGJldHRlciBnZXQgc3VyZSBvZiB0aGF0IDotKSAqKVxuICAgICAgICAgICAgICBzdG9wJywgZ3JhcGgnLCBzdGF0ZScsIGR0J1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIHRydWUsIGdyYXBoLCBzdGF0ZSwgZHQnXG4gICAgICAgIGluXG5cbiAgICAgICAgcGVydHVyYmF0ZV91bnRpbF9maXJzdF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgZW52IGNvdW50ZXIgfm91dHB1dHNcbiAgICAgICAgICAoc3RvcCcsIGdyYXBoJywgc3RhdGUnLCBkdCcpXG4gICAgICAgICgqIGlmIHNvbWUgcGVydHVyYmF0aW9uIG5lZWRzIGJhY2t0cmFjaywgcmV0dXJuIHRoZSBwZXJ0dXJiYXRpb24gKilcbiAgICAgICkgZWxzZVxuICAgICAgICBzdG9wLCBncmFwaCwgc3RhdGUsIGR0LCB0cnVlXG4gICAgKSBlbHNlXG4gICAgICBzdG9wLCBncmFwaCwgc3RhdGUsIGR0LCBmYWxzZVxuXG5sZXQgcGVydHVyYmF0ZV93aXRoX2JhY2t0cmFjayB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBncmFwaCBzdGF0ZSA9XG4gIGZ1bmN0aW9uXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgKHRpLCBwZSkgOjogdGFpbCAtPlxuICAgIGxldCB0YWlsJyA9XG4gICAgICBtYXRjaCAoTW9kZWwuZ2V0X3BlcnR1cmJhdGlvbiBlbnYgcGUpLlByaW1pdGl2ZXMuYWxhcm0gd2l0aFxuICAgICAgfCBOb25lIC0+IHRhaWxcbiAgICAgIHwgU29tZSBuIC0+IExpc3RfdXRpbC5tZXJnZV91bmlxIGNvbXBhcmVfc3RvcHMgWyBOYnIuYWRkIHRpIG4sIHBlIF0gdGFpbFxuICAgIGluXG4gICAgbGV0ICgpID0gc3RhdGUuc3RvcHBpbmdfdGltZXMgPC0gdGFpbCcgaW5cbiAgICBpZiBDb3VudGVyLm9uZV90aW1lX2NvcnJlY3Rpb25fZXZlbnQgfnRpIGNvdW50ZXIgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBsZXQgb3V0cHV0cyBjb3VudGVyJyB0aW1lID1cbiAgICAgICAgICBsZXQgY2FuZCA9XG4gICAgICAgICAgICBvYnNlcnZhYmxlc192YWx1ZXMgZW52IGdyYXBoIChDb3VudGVyLmZha2VfdGltZSBjb3VudGVyJyB0aW1lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGNhbmQgPiAxIHRoZW4gb3V0cHV0cyAoRGF0YS5QbG90IGNhbmQpXG4gICAgICAgIGluXG4gICAgICAgIENvdW50ZXIuZmlsbCB+b3V0cHV0cyBjb3VudGVyIH5kdDowLlxuICAgICAgaW5cbiAgICAgIGxldCBzdG9wLCBncmFwaCcsIHN0YXRlJywgXyA9XG4gICAgICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOnRydWUgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICAgICAgICBmYWxzZSBbIHBlIF1cbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBBcnJheS5pdGVyaVxuICAgICAgICAgIChmdW4gaSBfIC0+IHN0YXRlJy5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldC4oaSkgPC0gdHJ1ZSlcbiAgICAgICAgICBzdGF0ZScucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXRcbiAgICAgIGluXG4gICAgICBzdG9wLCBncmFwaCcsIHN0YXRlJ1xuICAgICkgZWxzZVxuICAgICAgdHJ1ZSwgZ3JhcGgsIHN0YXRlXG5cbmxldCByZWd1bGFyX2xvb3BfYm9keSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnYgY291bnRlclxuICAgIGdyYXBoIHN0YXRlIGR0ID1cbiAgbGV0ICgpID1cbiAgICBsZXQgb3V0cHV0cyBjb3VudGVyJyB0aW1lID1cbiAgICAgIGxldCBjYW5kID1cbiAgICAgICAgb2JzZXJ2YWJsZXNfdmFsdWVzIGVudiBncmFwaCAoQ291bnRlci5mYWtlX3RpbWUgY291bnRlcicgdGltZSlcbiAgICAgIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggY2FuZCA+IDEgdGhlbiBvdXRwdXRzIChEYXRhLlBsb3QgY2FuZClcbiAgICBpblxuICAgIENvdW50ZXIuZmlsbCB+b3V0cHV0cyBjb3VudGVyIH5kdFxuICBpblxuICBsZXQgY29udGludWUgPSBDb3VudGVyLm9uZV90aW1lX2FkdmFuY2UgY291bnRlciBkdCBpblxuICBsZXQgcGlja2VkX2luc3RhbmNlID1cbiAgICBSdWxlX2ludGVycHJldGVyLnBpY2tfYW5faW5zdGFuY2UgfmRlYnVnX21vZGUgZW52IGdyYXBoXG4gIGluXG4gIGxldCBzdG9wLCBncmFwaCcsIHN0YXRlJywgbWl4X2NoYW5nZWQgPVxuICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOmZhbHNlIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlXG4gICAgICBmYWxzZSBzdGF0ZS50aW1lX2RlcGVuZGVudF9wZXJ0c1xuICBpblxuICBpZiAobm90IGNvbnRpbnVlKSB8fCBzdG9wIHRoZW5cbiAgICB0cnVlLCBncmFwaCcsIHN0YXRlJ1xuICBlbHNlIGlmXG4gICAgKG5vdCBtaXhfY2hhbmdlZClcbiAgICB8fCBSdWxlX2ludGVycHJldGVyLmlzX2NvcnJlY3RfaW5zdGFuY2UgZW52IGdyYXBoJyBwaWNrZWRfaW5zdGFuY2VcbiAgdGhlblxuICAgIG9uZV9ydWxlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5tYXhDb25zZWN1dGl2ZUNsYXNoIGVudiBjb3VudGVyIGdyYXBoJyBzdGF0ZSdcbiAgICAgIHBpY2tlZF9pbnN0YW5jZVxuICBlbHNlXG4gICAgQ291bnRlci5vbmVfdGltZV9jb3JyZWN0aW9uX2V2ZW50IGNvdW50ZXIsIGdyYXBoJywgc3RhdGUnXG5cbmxldCBhX2xvb3AgfmRlYnVnX21vZGUgfm91dHB1dHMgfmR1bXBJZkRlYWRsb2NrZWQgfm1heENvbnNlY3V0aXZlQ2xhc2ggZW52XG4gICAgY291bnRlciBncmFwaCBzdGF0ZSA9XG4gIGxldCBhY3Rpdml0eSA9IFJ1bGVfaW50ZXJwcmV0ZXIuYWN0aXZpdHkgZ3JhcGggaW5cbiAgbGV0IHJkID0gUmFuZG9tLlN0YXRlLmZsb2F0IChSdWxlX2ludGVycHJldGVyLmdldF9yYW5kb21fc3RhdGUgZ3JhcGgpIDEuMCBpblxuICBsZXQgZHQgPSBhYnNfZmxvYXQgKGxvZyByZCAvLiBhY3Rpdml0eSkgaW5cblxuICBsZXQgb3V0ID1cbiAgICAoKkFjdGl2aXR5IGlzIG51bGwgb3IgZHQgaXMgaW5maW5pdGUqKVxuICAgIGlmIChub3QgKGFjdGl2aXR5ID4gMC4pKSB8fCBjbGFzc2lmeV9mbG9hdCBkdCA9IEZQX2luZmluaXRlIHRoZW5cbiAgICAgIGlmXG4gICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgKGZ1biAoXywgcGUpIC0+XG4gICAgICAgICAgICAoTW9kZWwuZ2V0X3BlcnR1cmJhdGlvbiBlbnYgcGUpLlByaW1pdGl2ZXMubmVlZHNfYmFja3RyYWNrKVxuICAgICAgICAgIHN0YXRlLnN0b3BwaW5nX3RpbWVzXG4gICAgICB0aGVuXG4gICAgICAgIHBlcnR1cmJhdGVfd2l0aF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICAgICAgICBzdGF0ZS5zdG9wcGluZ190aW1lc1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgZHVtcElmRGVhZGxvY2tlZCB0aGVuXG4gICAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAgIChEYXRhLlNuYXBzaG90XG4gICAgICAgICAgICAgICAgICggXCJkZWFkbG9jay5rYVwiLFxuICAgICAgICAgICAgICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuc25hcHNob3QgfmRlYnVnX21vZGUgfnJhdzpmYWxzZSBlbnYgY291bnRlclxuICAgICAgICAgICAgICAgICAgICAgZ3JhcGggKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgICAgXCJBIGRlYWRsb2NrIHdhcyByZWFjaGVkIGFmdGVyICVkIGV2ZW50cyBhbmQgJUVzIChBY3Rpdml0eSBcXFxuICAgICAgICAgICAgICAgICAgICAgID0gJS41ZilcIlxuICAgICAgICAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF9ldmVudCBjb3VudGVyKVxuICAgICAgICAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIpXG4gICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eSApKVxuICAgICAgICBpblxuICAgICAgICB0cnVlLCBncmFwaCwgc3RhdGVcbiAgICAgIClcbiAgICBlbHNlIChcbiAgICAgICgqYWN0aXZpdHkgaXMgcG9zaXRpdmUqKVxuICAgICAgbWF0Y2ggc3RhdGUuc3RvcHBpbmdfdGltZXMgd2l0aFxuICAgICAgfCAodGksIF8pIDo6IF9cbiAgICAgICAgd2hlbiBOYnIuaXNfc21hbGxlciB0aSAoTmJyLkYgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIgKy4gZHQpKSAtPlxuICAgICAgICBsZXQgc3RvcCwgZ3JhcGgnLCBzdGF0ZScsIGR0JywgbmVlZHNfYmFja3RyYWNrID1cbiAgICAgICAgICBwZXJ0dXJiYXRlX3VudGlsX2ZpcnN0X2JhY2t0cmFjayB+ZGVidWdfbW9kZSBlbnYgY291bnRlciB+b3V0cHV0c1xuICAgICAgICAgICAgKGZhbHNlLCBncmFwaCwgc3RhdGUsIGR0KVxuICAgICAgICBpblxuICAgICAgICBpZiBuZWVkc19iYWNrdHJhY2sgdGhlblxuICAgICAgICAgIHBlcnR1cmJhdGVfd2l0aF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGgnXG4gICAgICAgICAgICBzdGF0ZScgc3RhdGUnLnN0b3BwaW5nX3RpbWVzXG4gICAgICAgIGVsc2UgaWYgc3RvcCB0aGVuXG4gICAgICAgICAgc3RvcCwgZ3JhcGgnLCBzdGF0ZSdcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJlZ3VsYXJfbG9vcF9ib2R5IH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5tYXhDb25zZWN1dGl2ZUNsYXNoIGVudlxuICAgICAgICAgICAgY291bnRlciBncmFwaCcgc3RhdGUnIGR0J1xuICAgICAgfCBfIC0+XG4gICAgICAgIHJlZ3VsYXJfbG9vcF9ib2R5IH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5tYXhDb25zZWN1dGl2ZUNsYXNoIGVudiBjb3VudGVyXG4gICAgICAgICAgZ3JhcGggc3RhdGUgZHRcbiAgICApXG4gIGluXG4gIG91dFxuXG5sZXQgZW5kX29mX3NpbXVsYXRpb24gfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgPVxuICBsZXQgXyA9IHN0YXRlLmluaXRfc3RvcHBpbmdfdGltZXMgaW5cbiAgbGV0ICgpID1cbiAgICBsZXQgb3V0cHV0cyBjb3VudGVyJyB0aW1lID1cbiAgICAgIGxldCBjYW5kID1cbiAgICAgICAgb2JzZXJ2YWJsZXNfdmFsdWVzIGVudiBncmFwaCAoQ291bnRlci5mYWtlX3RpbWUgY291bnRlcicgdGltZSlcbiAgICAgIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggY2FuZCA+IDEgdGhlbiBvdXRwdXRzIChEYXRhLlBsb3QgY2FuZClcbiAgICBpblxuICAgIENvdW50ZXIuZmlsbCB+b3V0cHV0cyBjb3VudGVyIH5kdDowLlxuICBpblxuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChuYW1lLCBlKSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgb3V0cHV0c1xuICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgXCJUcmFja2luZyBESU4gaW50byBcXFwiJXNcXFwiIHdhcyBub3Qgc3RvcHBlZCBiZWZvcmUgZW5kIG9mIFxcXG4gICAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb25cIlxuICAgICAgICAgICAgICAgICAgIG5hbWUgKSlcbiAgICAgIGluXG4gICAgICBvdXRwdXRzIChEYXRhLkRJTiAobmFtZSwgRmx1eG1hcC5zdG9wX2ZsdXggZW52IGNvdW50ZXIgZSkpKVxuICAgIHN0YXRlLmZsdXhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc3RhdGUgPSB7XG4gIGdyYXBoOiBFZGdlcy50O1xuICB0aW1lOiBmbG9hdDtcbiAgZXZlbnQ6IGludDtcbiAgY29ubmVjdGVkX2NvbXBvbmVudHM6IEFnZW50LlNldE1hcC5TZXQudCBNb2RzLkludE1hcC50IG9wdGlvbjtcbn1cblxudHlwZSBzdW1tYXJ5ID0geyB1bmFyeV9kaXN0YW5jZXM6IChpbnQgKiBpbnQpIG9wdGlvbiB9XG5cbmxldCBpbml0X3N0YXRlIH53aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzID1cbiAge1xuICAgIGdyYXBoID0gRWRnZXMuZW1wdHkgfndpdGhfY29ubmVjdGVkX2NvbXBvbmVudHM7XG4gICAgdGltZSA9IDAuO1xuICAgIGV2ZW50ID0gMDtcbiAgICBjb25uZWN0ZWRfY29tcG9uZW50cyA9XG4gICAgICAoaWYgd2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyB0aGVuXG4gICAgICAgICBTb21lIE1vZHMuSW50TWFwLmVtcHR5XG4gICAgICAgZWxzZVxuICAgICAgICAgTm9uZSk7XG4gIH1cblxubGV0IGNjX29mX2FnZW50IGFnIGUgd29yayA9XG4gIGxldCByZWMgZm9sZF9hcml0eV9saXN0IGYgeCBhcml0eSBhY2MgPVxuICAgIGlmIHggPSBhcml0eSB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlXG4gICAgICBmb2xkX2FyaXR5X2xpc3QgZiAoc3VjYyB4KSBhcml0eSAoZiBhY2MgeClcbiAgaW5cblxuICBsZXQgYWRkX2FnZW50IGEgZSAod29yaywgbW9ycGhpc20sIHRvZG9zKSA9XG4gICAgbGV0IGFpZCA9IEFnZW50LmlkIGEgaW5cbiAgICBsZXQgYXR5cGUgPSBBZ2VudC5zb3J0IGEgaW5cbiAgICBsZXQgYXJpdHkgPSBFZGdlcy5nZXRfc2l0ZXMgYWlkIGUgaW5cbiAgICBsZXQgd19hZ2VudCwgd29yaycgPSBQYXR0ZXJuLm5ld19ub2RlIHdvcmsgYXR5cGUgaW5cbiAgICBsZXQgdG9kb3MnID0gZm9sZF9hcml0eV9saXN0IChmdW4gYWNjIHggLT4gKGFpZCwgeCkgOjogYWNjKSAwIGFyaXR5IHRvZG9zIGluXG4gICAgbGV0IHdvcmsnJyA9XG4gICAgICBmb2xkX2FyaXR5X2xpc3RcbiAgICAgICAgKGZ1biB3IHggLT5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBpbnRlcm5hbCA9IEVkZ2VzLmdldF9pbnRlcm5hbCBhaWQgeCBlIGluXG4gICAgICAgICAgICBQYXR0ZXJuLm5ld19pbnRlcm5hbF9zdGF0ZSB3ICh3X2FnZW50LCB4KSBpbnRlcm5hbFxuICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IHcpXG4gICAgICAgIDAgYXJpdHkgd29yaydcbiAgICBpblxuICAgIHdfYWdlbnQsIHdvcmsnJywgKGFpZCwgd19hZ2VudCkgOjogbW9ycGhpc20sIHRvZG9zJ1xuICBpblxuXG4gIGxldCBhZGRfbGlua3MgKHdvcmssIG1vcnBoaXNtLCB0b2RvcykgKGFpZCwgeCkgZSA9XG4gICAgbGV0IF8sIHdfYWdlbnQgPSBMaXN0LmZpbmQgKGZ1biAoaWQsIF8pIC0+IGlkID0gYWlkKSBtb3JwaGlzbSBpblxuICAgIGxldCBub3RfYWdlbnQgKGlkLCBzKSA9IG5vdCAoaWQgPSBhaWQgJiYgeCA9IHMpIGluXG4gICAgbWF0Y2ggRWRnZXMubGlua19kZXN0aW5hdGlvbiBhaWQgeCBlIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCB3b3JrJyA9IFBhdHRlcm4ubmV3X2ZyZWUgd29yayAod19hZ2VudCwgeCkgaW5cbiAgICAgIGxldCB0b2RvcycgPSBMaXN0LmZpbHRlciBub3RfYWdlbnQgdG9kb3MgaW5cbiAgICAgIHdvcmsnLCBtb3JwaGlzbSwgdG9kb3MnXG4gICAgfCBTb21lIChiLCB5KSAtPlxuICAgICAgbGV0IGJpZCA9IEFnZW50LmlkIGIgaW5cbiAgICAgIGxldCBub3RfYWdlbnRzIChpZCwgcykgPVxuICAgICAgICBub3RfYWdlbnQgKGlkLCBzKSAmJiBub3QgKGlkID0gQWdlbnQuaWQgYiAmJiBzID0geSlcbiAgICAgIGluXG4gICAgICAodHJ5XG4gICAgICAgICBsZXQgXywgd2JfYWdlbnQgPSBMaXN0LmZpbmQgKGZ1biAoaWQsIF8pIC0+IGlkID0gYmlkKSBtb3JwaGlzbSBpblxuICAgICAgICAgbGV0IHdvcmsnID0gUGF0dGVybi5uZXdfbGluayB3b3JrICh3X2FnZW50LCB4KSAod2JfYWdlbnQsIHkpIGluXG4gICAgICAgICBsZXQgdG9kb3MnID0gTGlzdC5maWx0ZXIgbm90X2FnZW50cyB0b2RvcyBpblxuICAgICAgICAgd29yaycsIG1vcnBoaXNtLCB0b2RvcydcbiAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgbGV0IHdiX2FnZW50LCB3b3JrJywgbW9ycGhpc20nLCB0b2RvcycgPVxuICAgICAgICAgICBhZGRfYWdlbnQgYiBlICh3b3JrLCBtb3JwaGlzbSwgdG9kb3MpXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IHdvcmsnJyA9IFBhdHRlcm4ubmV3X2xpbmsgd29yaycgKHdfYWdlbnQsIHgpICh3Yl9hZ2VudCwgeSkgaW5cbiAgICAgICAgIGxldCB0b2RvcycnID0gTGlzdC5maWx0ZXIgbm90X2FnZW50cyB0b2RvcycgaW5cbiAgICAgICAgIHdvcmsnJywgbW9ycGhpc20nLCB0b2RvcycnKVxuICBpblxuXG4gIGxldCByZWMgd29ya2luZ190b2RvICh3b3JrLCBtb3JwaGlzbSwgdG9kbykgPVxuICAgIG1hdGNoIHRvZG8gd2l0aFxuICAgIHwgW10gLT4gbW9ycGhpc20sIHdvcmtcbiAgICB8IHBvcnQgOjogXyAtPlxuICAgICAgbGV0IHdvcmsnLCBtb3JwaGlzbScsIHRvZG8nID0gYWRkX2xpbmtzICh3b3JrLCBtb3JwaGlzbSwgdG9kbykgcG9ydCBlIGluXG4gICAgICB3b3JraW5nX3RvZG8gKHdvcmsnLCBtb3JwaGlzbScsIHRvZG8nKVxuICBpblxuXG4gIGxldCBfLCB3LCBtLCB0ID0gYWRkX2FnZW50IGFnIGUgKHdvcmssIFtdLCBbXSkgaW5cbiAgd29ya2luZ190b2RvICh3LCBtLCB0KVxuXG5sZXQgY2Nfb2Zfc3RhdGUgfmRlYnVnX21vZGUgcyBlbnYgPVxuICBsZXQgY2Nfb2Zfcm9vdCBhZ2VudCBlJyA9XG4gICAgbGV0IHdvcmsgPSBQYXR0ZXJuLmJlZ2luX25ldyBlJyBpblxuICAgIGxldCBtb3JwaGlzbSwgd29yaycgPSBjY19vZl9hZ2VudCBhZ2VudCBzLmdyYXBoIHdvcmsgaW5cbiAgICBsZXQgZW4sIF8sIGMsIGkgPSBQYXR0ZXJuLmZpbmlzaF9uZXcgfmRlYnVnX21vZGUgd29yaycgaW5cbiAgICBlbiwgTGlzdC5tYXAgKGZ1biAoY2lkLCAoYWlkLCBfKSkgLT4gY2lkLCBhaWQpIG1vcnBoaXNtLCBjLCBpXG4gIGluXG4gIG1hdGNoIHMuY29ubmVjdGVkX2NvbXBvbmVudHMgd2l0aFxuICB8IFNvbWUgY2NfbWFwcyAtPlxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gcm9vdCBjY19tYXAgKGUsIGFjYykgLT5cbiAgICAgICAgQWdlbnQuU2V0TWFwLlNldC5mb2xkXG4gICAgICAgICAgKGZ1biBhZ2VudCAoZScsIGFjYycpIC0+XG4gICAgICAgICAgICBpZiBBZ2VudC5pZCBhZ2VudCA9IHJvb3QgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBlbiwgciwgYywgaSA9IGNjX29mX3Jvb3QgYWdlbnQgZScgaW5cbiAgICAgICAgICAgICAgZW4sIChyLCBjLCBpKSA6OiBhY2MnXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZScsIGFjYycpXG4gICAgICAgICAgY2NfbWFwIChlLCBhY2MpKVxuICAgICAgY2NfbWFwcyAoZW52LCBbXSlcbiAgfCBOb25lIC0+IGVudiwgW11cblxubGV0IGJyZWFrX2FwYXJ0X2NjIGdyYXBoIGNjcyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBjY3NcbiAgfCBTb21lIChvcmlnaW5fY2MsIG5ld19jYykgLT5cbiAgICBsZXQgc2V0ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IEFnZW50LlNldE1hcC5TZXQuZW1wdHkgb3JpZ2luX2NjIGNjcyBpblxuICAgIGlmIEFnZW50LlNldE1hcC5TZXQuaXNfZW1wdHkgc2V0IHRoZW5cbiAgICAgIGNjc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IG5zZXQsIG9zZXQnID1cbiAgICAgICAgQWdlbnQuU2V0TWFwLlNldC5wYXJ0aXRpb25cbiAgICAgICAgICAoZnVuICh4LCBfKSAtPiBFZGdlcy5nZXRfY29ubmVjdGVkX2NvbXBvbmVudCB4IGdyYXBoID0gU29tZSBuZXdfY2MpXG4gICAgICAgICAgc2V0XG4gICAgICBpblxuICAgICAgTW9kcy5JbnRNYXAuYWRkIG5ld19jYyBuc2V0IChNb2RzLkludE1hcC5hZGQgb3JpZ2luX2NjIG9zZXQnIGNjcylcbiAgICApXG5cbmxldCBtZXJnZV9jYyBjY3MgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gY2NzXG4gIHwgU29tZSAoY2MxLCBjYzIpIC0+XG4gICAgbGV0IHNldDEgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgQWdlbnQuU2V0TWFwLlNldC5lbXB0eSBjYzEgY2NzIGluXG4gICAgKG1hdGNoIE1vZHMuSW50TWFwLnBvcCBjYzIgY2NzIHdpdGhcbiAgICB8IE5vbmUsIF8gLT4gY2NzXG4gICAgfCBTb21lIHNldDIsIGNjcycgLT5cbiAgICAgIE1vZHMuSW50TWFwLmFkZCBjYzEgKEFnZW50LlNldE1hcC5TZXQudW5pb24gc2V0MSBzZXQyKSBjY3MnKVxuXG5sZXQgZG9fbmVnYXRpdmVfcGFydCAoKGEsIF8pLCBzKSAoZ3JhcGgsIGNjcykgPVxuICBtYXRjaCBFZGdlcy5saW5rX2Rlc3RpbmF0aW9uIGEgcyBncmFwaCB3aXRoXG4gIHwgTm9uZSAtPiBFZGdlcy5yZW1vdmVfZnJlZSBhIHMgZ3JhcGgsIGNjc1xuICB8IFNvbWUgKChhJywgXyksIHMnKSAtPlxuICAgIGxldCBncmFwaCcsIGNjX2NoYW5nZSA9IEVkZ2VzLnJlbW92ZV9saW5rIGEgcyBhJyBzJyBncmFwaCBpblxuICAgICggZ3JhcGgnLFxuICAgICAgKG1hdGNoIGNjcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGNjcyAtPiBTb21lIChicmVha19hcGFydF9jYyBncmFwaCcgY2NzIGNjX2NoYW5nZSkpIClcblxubGV0IGRvX2FjdGlvbiBzaWdzICgoZ3JhcGgsIGNjcykgYXMgcGFjaykgPSBmdW5jdGlvblxuICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICgoKGlkLCB0eSkgYXMgYWcpLCBfZ3JhcGhzKSAtPlxuICAgICggc25kIEBAIEVkZ2VzLmFkZF9hZ2VudCB+aWQgc2lncyB0eSBncmFwaCxcbiAgICAgIE9wdGlvbl91dGlsLm1hcCAoTW9kcy5JbnRNYXAuYWRkIGlkIChBZ2VudC5TZXRNYXAuU2V0LnNpbmdsZXRvbiBhZykpIGNjcyApXG4gIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKCgoYSwgXyksIHMpLCBpKSAtPlxuICAgIEVkZ2VzLmFkZF9pbnRlcm5hbCBhIHMgaSBncmFwaCwgY2NzXG4gIHwgSW5zdGFudGlhdGlvbi5CaW5kICgoKGExLCBzMSkgYXMgeDEpLCAoKGEyLCBzMikgYXMgeDIpKVxuICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoKChhMSwgczEpIGFzIHgxKSwgKChhMiwgczIpIGFzIHgyKSkgLT5cbiAgICBsZXQgZ3JhcGgnLCBjY3MnID0gZG9fbmVnYXRpdmVfcGFydCB4MiAoZG9fbmVnYXRpdmVfcGFydCB4MSBwYWNrKSBpblxuICAgIGxldCBncmFwaCcnLCBjY19jaGFuZ2UgPSBFZGdlcy5hZGRfbGluayBhMSBzMSBhMiBzMiBncmFwaCcgaW5cbiAgICAoIGdyYXBoJycsXG4gICAgICAobWF0Y2ggY2NzJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGNjcycgLT4gU29tZSAobWVyZ2VfY2MgY2NzJyBjY19jaGFuZ2UpKSApXG4gIHwgSW5zdGFudGlhdGlvbi5GcmVlICgoKGEsIF8pLCBzKSBhcyB4KSAtPlxuICAgIGxldCBncmFwaCcsIGNjcycgPSBkb19uZWdhdGl2ZV9wYXJ0IHggcGFjayBpblxuICAgIEVkZ2VzLmFkZF9mcmVlIGEgcyBncmFwaCcsIGNjcydcbiAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSAoKGlkLCB0eSkgYXMgYSkgLT5cbiAgICBsZXQgZ3JhcGgnLCBjY3MnID1cbiAgICAgIFRvb2xzLnJlY3RpXG4gICAgICAgIChmdW4gc3QgcyAtPiBkb19uZWdhdGl2ZV9wYXJ0IChhLCBzKSBzdClcbiAgICAgICAgcGFjayAoU2lnbmF0dXJlLmFyaXR5IHNpZ3MgdHkpXG4gICAgaW5cbiAgICAobWF0Y2ggY2NzJyB3aXRoXG4gICAgfCBOb25lIC0+IEVkZ2VzLnJlbW92ZV9hZ2VudCBpZCBncmFwaCcsIE5vbmVcbiAgICB8IFNvbWUgY2NzJyAtPlxuICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLnBvcCBpZCBjY3MnIHdpdGhcbiAgICAgIHwgTm9uZSwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgU29tZSB4LCBjY3MnJyAtPlxuICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKEFnZW50LlNldE1hcC5TZXQuaXNfc2luZ2xldG9uIHgpIGluXG4gICAgICAgIEVkZ2VzLnJlbW92ZV9hZ2VudCBpZCBncmFwaCcsIFNvbWUgY2NzJycpKVxuXG5sZXQgaW52b2x2ZWRfYWdlbnRzIGwgPVxuICBMaXN0X3V0aWwubWFwX29wdGlvblxuICAgIChmdW5jdGlvblxuICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYSAtPiBTb21lIGFcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIF8gfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCBfXG4gICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgXyB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gX1xuICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgXyAtPlxuICAgICAgICBOb25lKVxuICAgIGxcblxubGV0IHN0b3JlX2Rpc3RhbmNlcyByIGdyYXBoID0gZnVuY3Rpb25cbiAgfCBbXSB8IFsgXyBdIHwgXyA6OiBfIDo6IF8gOjogXyAtPiBOb25lXG4gIHwgWyBjYzE7IGNjMiBdIC0+XG4gICAgbGV0IGNjMV9hZ3MgPSBpbnZvbHZlZF9hZ2VudHMgY2MxIGluXG4gICAgbGV0IGNjMl9hZ3MgPSBpbnZvbHZlZF9hZ2VudHMgY2MyIGluXG4gICAgKG1hdGNoIEVkZ2VzLmFyZV9jb25uZWN0ZWQgZ3JhcGggY2MxX2FncyBjYzJfYWdzIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBwYXRoIC0+IFNvbWUgKHIsIExpc3QubGVuZ3RoIHBhdGgpKVxuXG5sZXQgdGVzdF9wYXNzX29uIGdyYXBoID0gZnVuY3Rpb25cbiAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYWcgLT4gRWRnZXMuaXNfYWdlbnQgYWcgZ3JhcGhcbiAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoKGFnLCBzKSwgc3QpIC0+XG4gICAgRWRnZXMuaXNfYWdlbnQgYWcgZ3JhcGggJiYgRWRnZXMuaXNfaW50ZXJuYWwgc3QgKEFnZW50LmlkIGFnKSBzIGdyYXBoXG4gIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIChhZywgcykgLT5cbiAgICBFZGdlcy5pc19hZ2VudCBhZyBncmFwaCAmJiBFZGdlcy5pc19mcmVlIChBZ2VudC5pZCBhZykgcyBncmFwaFxuICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgKGFnLCBzKSAtPlxuICAgIEVkZ2VzLmlzX2FnZW50IGFnIGdyYXBoICYmIG5vdCAoRWRnZXMuaXNfZnJlZSAoQWdlbnQuaWQgYWcpIHMgZ3JhcGgpXG4gIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoKGFnLCBzKSwgKGFnJywgcycpKSAtPlxuICAgIEVkZ2VzLmlzX2FnZW50IGFnIGdyYXBoICYmIEVkZ2VzLmlzX2FnZW50IGFnJyBncmFwaFxuICAgICYmIEVkZ2VzLmxpbmtfZXhpc3RzIChBZ2VudC5pZCBhZykgcyAoQWdlbnQuaWQgYWcnKSBzJyBncmFwaFxuICB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSAoKGFnLCBzKSwgKGFnX3R5LCBzJykpIC0+XG4gICAgRWRnZXMuaXNfYWdlbnQgYWcgZ3JhcGhcbiAgICAmJlxuICAgIChtYXRjaCBFZGdlcy5saW5rX2Rlc3RpbmF0aW9uIChBZ2VudC5pZCBhZykgcyBncmFwaCB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lICgoXywgZHN0X2FnX3R5KSwgZHN0X3MpIC0+IGRzdF9hZ190eSA9IGFnX3R5ICYmIGRzdF9zID0gcycpXG5cbmxldCB0ZXN0c19wYXNzX29uIGdyYXBoIHRlc3RzID1cbiAgTGlzdC5mb3JfYWxsICh0ZXN0X3Bhc3Nfb24gZ3JhcGgpIChMaXN0LmNvbmNhdCB0ZXN0cylcblxubGV0IGlzX3N0ZXBfdHJpZ2dlcmFibGVfb25fZWRnZXMgZ3JhcGggPSBmdW5jdGlvblxuICB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkluaXQgXyB8IFRyYWNlLlBlcnQgXyB8IFRyYWNlLkR1bW15IF8gLT4gdHJ1ZVxuICB8IFRyYWNlLlJ1bGUgKF9yLCBldmVudCwgX2luZm8pIC0+XG4gICAgdGVzdHNfcGFzc19vbiBncmFwaCBldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzXG4gIHwgVHJhY2UuT2JzIChfLCB0ZXN0cywgXykgLT4gdGVzdHNfcGFzc19vbiBncmFwaCB0ZXN0c1xuXG5sZXQgaXNfc3RlcF90cmlnZ2VyYWJsZSBzdGF0ZSA9IGlzX3N0ZXBfdHJpZ2dlcmFibGVfb25fZWRnZXMgc3RhdGUuZ3JhcGhcblxuKCogVGhlcmUgaXMgYSBzdWJ0ZWx0eSB3aGVuIGV4ZWN1dGluZyBhIHNlcXVlbmNlIG9mIGFjdGlvbnMuIEluZGVlZCxcbiAgIHdoZW5ldmVyIGEgcnVsZSBib3RoIGNyZWF0ZXMgYW5kIHJlbW92ZXMgYWdlbnRzLCB0aGVyZSBpcyBjdXJyZW50bHlcbiAgIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBjcmVhdGlvbiBhY3Rpb25zIGFyZSBwbGFjZWQgYmVmb3JlIHRoZSByZW1vdmFsXG4gICBhY3Rpb25zIGluIFtldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNdLiBUaGlzIGNhbiBiZSBhbiBpc3N1ZSBpbiBhXG4gICBjYXNlIHdoZXJlIGFuIGV2ZW50IHBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgdHdvIGFjdGlvbnMgZm9yIGV4YW1wbGU6XG4gICBbXCJjcmVhdGUgYWdlbnQgd2l0aCBpZCA4XCIsIFwicmVtb3ZlIGFnZW50IHdpdGggaWQgOFwiXS4gSW4gdGhpcyBjYXNlLFxuICAgYWdlbnQgaWQgOCBpcyBub3QgYXZhaWxhYmxlIHdoZW4gdGhlIGNyZWF0aW9uIGFjdGlvbiBpcyBwZXJmb3JtZWQgYW5kXG4gICBzbyB0aGUgW0VkZ2VzXSBtb2R1bGUgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cblxuICAgQXMgYSB0ZW1wb3JhcnkgZml4LCB3ZSBtYWtlIHN1cmUgdGhhdCBhbGwgZGVsZXRpb24gYWN0aW9ucyBhcmVcbiAgIGV4ZWN1dGVkIGZpcnN0LiBUaGlzIGltcGxpY2l0bHkgYXNzdW1lcyB0aGF0IGEgc3RlcCBkZWxldGluZyBhbiBhZ2VudFxuICAgY2Fubm90IHBlcmZvcm0gYW55IG90aGVyIGFjdGlvbiBpbnZvbHZpbmcgdGhpcyBhZ2VudC5cblxuICAgVE9ETzogU2hvdWxkbid0IHdlIHJhdGhlciBlbnN1cmUgdGhhdCBhY3Rpb25zIGFyZSBwcm9wZXJseSBzb3J0ZWQgaW5cbiAgIHRoZSB0cmFjZSBmaWxlIGluIHRoZSBmaXJzdCBwbGFjZT8gKilcbmxldCBkb19hY3Rpb25zIHNpZ3Mgc3QgYWN0aW9ucyA9XG4gIGxldCBpc19yZW1vdmFsID1cbiAgICBsZXQgb3BlbiBJbnN0YW50aWF0aW9uIGluXG4gICAgZnVuY3Rpb25cbiAgICB8IFJlbW92ZSBfIC0+IHRydWVcbiAgICB8IENyZWF0ZSBfIHwgTW9kX2ludGVybmFsIF8gfCBCaW5kIF8gfCBCaW5kX3RvIF8gfCBGcmVlIF8gLT4gZmFsc2VcbiAgaW5cbiAgbGV0IHJlbW92YWxzLCBvdGhlcnMgPSBMaXN0LnBhcnRpdGlvbiBpc19yZW1vdmFsIGFjdGlvbnMgaW5cbiAgbGV0IGRvX2luX29yZGVyIGFjdGlvbnMgc3QgPSBMaXN0LmZvbGRfbGVmdCAoZG9fYWN0aW9uIHNpZ3MpIHN0IGFjdGlvbnMgaW5cbiAgc3QgfD4gZG9faW5fb3JkZXIgcmVtb3ZhbHMgfD4gZG9faW5fb3JkZXIgb3RoZXJzXG5cbmxldCBkb19zdGVwIHNpZ3Mgc3RhdGUgPSBmdW5jdGlvblxuICB8IFRyYWNlLlN1YnMgXyAtPiBzdGF0ZSwgeyB1bmFyeV9kaXN0YW5jZXMgPSBOb25lIH1cbiAgfCBUcmFjZS5SdWxlIChraW5kLCBldmVudCwgaW5mbykgLT5cbiAgICBsZXQgdW5hcnlfZGlzdGFuY2VzID1cbiAgICAgIGlmIHN0YXRlLmNvbm5lY3RlZF9jb21wb25lbnRzID0gTm9uZSB0aGVuXG4gICAgICAgIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgc3RvcmVfZGlzdGFuY2VzIGtpbmQgc3RhdGUuZ3JhcGggZXZlbnQuSW5zdGFudGlhdGlvbi50ZXN0c1xuICAgIGluXG4gICAgbGV0IHByZWdyYXBoLCBjb25uZWN0ZWRfY29tcG9uZW50cyA9XG4gICAgICBkb19hY3Rpb25zIHNpZ3NcbiAgICAgICAgKHN0YXRlLmdyYXBoLCBzdGF0ZS5jb25uZWN0ZWRfY29tcG9uZW50cylcbiAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgaW5cbiAgICBsZXQgZ3JhcGggPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBncmFwaCAoKGlkLCBfKSwgcykgLT4gRWRnZXMuYWRkX2ZyZWUgaWQgcyBncmFwaClcbiAgICAgICAgcHJlZ3JhcGggZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0XG4gICAgaW5cbiAgICAoIHtcbiAgICAgICAgZ3JhcGg7XG4gICAgICAgIGNvbm5lY3RlZF9jb21wb25lbnRzO1xuICAgICAgICB0aW1lID0gaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZTtcbiAgICAgICAgZXZlbnQgPSBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudDtcbiAgICAgIH0sXG4gICAgICB7IHVuYXJ5X2Rpc3RhbmNlcyB9IClcbiAgfCBUcmFjZS5QZXJ0IChfLCBldmVudCwgaW5mbykgLT5cbiAgICBsZXQgcHJlZ3JhcGgsIGNvbm5lY3RlZF9jb21wb25lbnRzID1cbiAgICAgIGRvX2FjdGlvbnMgc2lnc1xuICAgICAgICAoc3RhdGUuZ3JhcGgsIHN0YXRlLmNvbm5lY3RlZF9jb21wb25lbnRzKVxuICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICBpblxuICAgIGxldCBncmFwaCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGdyYXBoICgoaWQsIF8pLCBzKSAtPiBFZGdlcy5hZGRfZnJlZSBpZCBzIGdyYXBoKVxuICAgICAgICBwcmVncmFwaCBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3RcbiAgICBpblxuICAgICgge1xuICAgICAgICBncmFwaDtcbiAgICAgICAgY29ubmVjdGVkX2NvbXBvbmVudHM7XG4gICAgICAgIHRpbWUgPSBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lO1xuICAgICAgICBldmVudCA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2V2ZW50O1xuICAgICAgfSxcbiAgICAgIHsgdW5hcnlfZGlzdGFuY2VzID0gTm9uZSB9IClcbiAgfCBUcmFjZS5Jbml0IGFjdGlvbnMgLT5cbiAgICBsZXQgZ3JhcGgsIGNvbm5lY3RlZF9jb21wb25lbnRzID1cbiAgICAgIGRvX2FjdGlvbnMgc2lncyAoc3RhdGUuZ3JhcGgsIHN0YXRlLmNvbm5lY3RlZF9jb21wb25lbnRzKSBhY3Rpb25zXG4gICAgaW5cbiAgICAoIHsgZ3JhcGg7IGNvbm5lY3RlZF9jb21wb25lbnRzOyB0aW1lID0gc3RhdGUudGltZTsgZXZlbnQgPSBzdGF0ZS5ldmVudCB9LFxuICAgICAgeyB1bmFyeV9kaXN0YW5jZXMgPSBOb25lIH0gKVxuICB8IFRyYWNlLk9icyAoXywgXywgaW5mbykgLT5cbiAgICAoIHtcbiAgICAgICAgZ3JhcGggPSBzdGF0ZS5ncmFwaDtcbiAgICAgICAgdGltZSA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWU7XG4gICAgICAgIGV2ZW50ID0gaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQ7XG4gICAgICAgIGNvbm5lY3RlZF9jb21wb25lbnRzID0gc3RhdGUuY29ubmVjdGVkX2NvbXBvbmVudHM7XG4gICAgICB9LFxuICAgICAgeyB1bmFyeV9kaXN0YW5jZXMgPSBOb25lIH0gKVxuICB8IFRyYWNlLkR1bW15IF8gLT4gc3RhdGUsIHsgdW5hcnlfZGlzdGFuY2VzID0gTm9uZSB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN5bnRheF92ZXJzaW9uID0gVjMgfCBWNFxuXG5sZXQgbWVyZ2VfdmVyc2lvbiBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBWNCwgXyB8IF8sIFY0IC0+IFY0XG4gIHwgVjMsIFYzIC0+IFYzXG5cbnR5cGUgaW50ZXJuYWwgPSBzdHJpbmcgb3B0aW9uIExvYy5hbm5vdGVkIGxpc3RcblxudHlwZSBwb3J0ID0ge1xuICBwb3J0X25hbWU6IHN0cmluZyBMb2MuYW5ub3RlZDtcbiAgcG9ydF9pbnQ6IGludGVybmFsO1xuICBwb3J0X2ludF9tb2Q6IHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb247XG4gIHBvcnRfbGluazogKHN0cmluZyBMb2MuYW5ub3RlZCwgdW5pdCkgTEthcHBhLmxpbmsgTG9jLmFubm90ZWQgbGlzdDtcbiAgcG9ydF9saW5rX21vZDogaW50IExvYy5hbm5vdGVkIG9wdGlvbiBvcHRpb247XG59XG5cbigqIFRPRE8gY2hhbmdlIG5hbWUsIENWQVIgaXMgbm90IGEgdGVzdD8gKilcbigqIFRPRE8gZGlzY3JpbWluYXRlIGJldHdlZW4gY291bnRlciBkZWZpbml0aW9uIGFuZCBjb3VudGVyIHRlc3QgPyAqKVxuKCogVE9ETzogY2hhbmdlIHRoaXMgdG8gQ1RZUEUgPSBDVEVTVCAoQ1RFU1RUWVBFICogaW50KSB8IENWQVIgc3RyaW5nPyAqKVxuXG50eXBlIGNvdW50ZXJfdGVzdCA9IENFUSBvZiBpbnQgfCBDR1RFIG9mIGludCB8IENMVEUgb2YgaW50IHwgQ1ZBUiBvZiBzdHJpbmdcblxudHlwZSBjb3VudGVyID0ge1xuICBjb3VudGVyX25hbWU6IHN0cmluZyBMb2MuYW5ub3RlZDtcbiAgY291bnRlcl90ZXN0OiBjb3VudGVyX3Rlc3QgTG9jLmFubm90ZWQgb3B0aW9uO1xuICAgICAgKCoqIEluIGEgcnVsZTogd2hhdCB0ZXN0IGlzIGRvbmUsIGluIGFuIGFnZW50IGRlY2xhcmF0aW9uOiB0aGUgbWluIHZhbHVlLCBpbiBhbiBpbml0IGRlY2xhcmF0aW9uOiB0aGUgaW5pdCB2YWx1ZSwgTm9uZSBpZiBhYnNlbnQgKilcbiAgY291bnRlcl9kZWx0YTogaW50IExvYy5hbm5vdGVkO1xuICAgICAgKCoqIEluIGEgcnVsZTogY2hhbmdlIGluIGNvdW50ZXIgdmFsdWUsIGluIGFuIGFnZW50IGRlY2xhcmF0aW9uOiBtYXggdmFsdWUgb2YgdGhlIGNvdW50ZXIsIDAgaWYgYWJzZW50ICopXG59XG5cbnR5cGUgdHJhbnNsYXRlX2ludCA9IEJBU0lTX01JTlVTX0lOUFVUIG9mIGludFxuXG5sZXQgYXBwbHlfaW50IHQgaSA9XG4gIG1hdGNoIHQgd2l0aFxuICAgIHwgQkFTSVNfTUlOVVNfSU5QVVQgZCAtPiBkIC0gaVxuXG5sZXQgcmVvcmRlcl9ib3VuZHMgdCAoaSxqKSA9XG4gIG1hdGNoIHQgd2l0aFxuICAgIHwgQkFTSVNfTUlOVVNfSU5QVVQgXyAtPiBqLGlcblxudHlwZSBjb252ZXJzaW9uX2luZm8gPVxuICAgICAge1xuICAgICAgICBmcm9tX3NpZ19uYW1lOiBzdHJpbmcgTG9jLmFubm90ZWQ7XG4gICAgICAgIGNvbnZlcnRfdmFsdWU6IHRyYW5zbGF0ZV9pbnQ7XG4gICAgICAgIGNvbnZlcnRfZGVsdGE6IHRyYW5zbGF0ZV9pbnQ7XG4gICAgICB9XG4oKiogQ291bnRlciBzeW50YXggZnJvbSBBU1QsIHByZXNlbnQgaW4gMyBjb250ZXh0cyB3aXRoIGRpZmZlcmVudCBtZWFuaW5nczogYWdlbnQgZGVmaW5pdGlvbiwgc3BlY2llcyBpbml0IGRlY2xhcmF0aW9uLCBydWxlICopXG5cbnR5cGUgb3JpZ2luZSA9IEZyb21fb3JpZ2luYWxfYXN0IHwgRnJvbV9jbHRlX2VsaW1pbmF0aW9uIG9mIGNvbnZlcnNpb25faW5mb1xuXG50eXBlIGNvdW50ZXJfc2lnID0ge1xuICBjb3VudGVyX3NpZ19uYW1lOiBzdHJpbmcgTG9jLmFubm90ZWQ7XG4gIGNvdW50ZXJfc2lnX21pbjogaW50IG9wdGlvbiBMb2MuYW5ub3RlZCBvcHRpb247XG4gIGNvdW50ZXJfc2lnX21heDogaW50IG9wdGlvbiBMb2MuYW5ub3RlZCBvcHRpb247XG4gIGNvdW50ZXJfc2lnX3Zpc2libGU6IG9yaWdpbmU7XG4gIGNvdW50ZXJfc2lnX2RlZmF1bHQ6IGludDtcbn1cblxubGV0IGNvdW50ZXJfc2lnX29mX2NvdW50ZXIgKGMgOiBjb3VudGVyKSA6IGNvdW50ZXJfc2lnID1cbiAgbGV0IChjb3VudGVyX3NpZ19taW4sIGNvdW50ZXJfc2lnX2RlZmF1bHQpIDogKGludCBvcHRpb24gKiBMb2MudCkgb3B0aW9uICogaW50XG4gICAgICA9XG4gICAgbWF0Y2ggYy5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgIHwgU29tZSAoQ0VRIGksIGxvYykgLT4gU29tZSAoU29tZSBpLCBsb2MpLCBpXG4gICAgfCBOb25lIHwgU29tZSAoKENHVEUgXyB8IENMVEUgXyB8IENWQVIgXyksIF8pIC0+IE5vbmUsIDBcbiAgaW5cbiAgbGV0IGNvdW50ZXJfc2lnX21heCA9XG4gICAgbWF0Y2ggYy5jb3VudGVyX2RlbHRhIHdpdGhcbiAgICB8IGksIGxvYyAtPiBTb21lIChTb21lIGksIGxvYylcbiAgaW5cbiAge1xuICAgIGNvdW50ZXJfc2lnX25hbWUgPSBjLmNvdW50ZXJfbmFtZTtcbiAgICBjb3VudGVyX3NpZ19taW47XG4gICAgY291bnRlcl9zaWdfbWF4O1xuICAgIGNvdW50ZXJfc2lnX2RlZmF1bHQ7XG4gICAgY291bnRlcl9zaWdfdmlzaWJsZSA9IEZyb21fb3JpZ2luYWxfYXN0O1xuICB9XG5cbmxldCBtYWtlX2ludmVydGVkX2NvdW50ZXJfc2lnIChjb3VudGVyIDogY291bnRlcl9zaWcpXG4gICAgKGNvdW50ZXJfc2lnX25hbWUgOiBzdHJpbmcgTG9jLmFubm90ZWQpIDogY291bnRlcl9zaWcgPVxuICBsZXQgZl9pbnQgPVxuICAgIG1hdGNoIGNvdW50ZXIuY291bnRlcl9zaWdfbWF4LCBjb3VudGVyLmNvdW50ZXJfc2lnX21pbiB3aXRoXG4gICAgfCBTb21lIChTb21lIG1heCwgXyksIFNvbWUgKFNvbWUgbWluLCBfKSAtPlxuICAgICAgQkFTSVNfTUlOVVNfSU5QVVQgKG1heCttaW4pXG4gICAgfCAoTm9uZSB8IFNvbWUgKE5vbmUsIF8pKSwgXyB8IF8sIChOb25lIHwgU29tZSAoTm9uZSwgXykpIC0+XG4gICAgICBmYWlsd2l0aCBcInVuYm91bmRlZCBjb3VudGVycyBub3QgaW1wbGVtZW50ZWQgeWV0XCJcbiAgaW5cbiAgbGV0IGZfb3AgPSBCQVNJU19NSU5VU19JTlBVVCAwIGluXG4gIHtcbiAgICBjb3VudGVyIHdpdGhcbiAgICBjb3VudGVyX3NpZ19uYW1lO1xuICAgIGNvdW50ZXJfc2lnX3Zpc2libGUgPVxuICAgICAgRnJvbV9jbHRlX2VsaW1pbmF0aW9uXG4gICAgICB7XG4gICAgICAgIGZyb21fc2lnX25hbWU9Y291bnRlci5jb3VudGVyX3NpZ19uYW1lO1xuICAgICAgICBjb252ZXJ0X3ZhbHVlPWZfaW50O1xuICAgICAgICBjb252ZXJ0X2RlbHRhPWZfb3A7XG4gICAgICB9XG4gICAgO1xuICAgIGNvdW50ZXJfc2lnX2RlZmF1bHQgPVxuICAgICAgYXBwbHlfaW50IGZfaW50IGNvdW50ZXIuY291bnRlcl9zaWdfZGVmYXVsdFxuXG4gIH1cblxudHlwZSAnY291bnRlciBzaXRlID0gUG9ydCBvZiBwb3J0IHwgQ291bnRlciBvZiAnY291bnRlclxuXG5sZXQgbWFwX2NvdW50ZXJzX2luX3NpdGUgZiA9IGZ1bmN0aW9uXG4gIHwgUG9ydCBfIGFzIHggLT4geFxuICB8IENvdW50ZXIgY28gLT4gQ291bnRlciAoZiBjbylcblxudHlwZSBhZ2VudF9tb2QgPSBOb01vZCB8IEVyYXNlIHwgQ3JlYXRlXG5cbnR5cGUgJ2NvdW50ZXIgcGFyYW1ldHJpY19hZ2VudCA9XG4gIHwgUHJlc2VudCBvZiBzdHJpbmcgTG9jLmFubm90ZWQgKiAnY291bnRlciBzaXRlIGxpc3QgKiBhZ2VudF9tb2RcbiAgfCBBYnNlbnQgb2YgTG9jLnRcblxudHlwZSBhZ2VudCA9IGNvdW50ZXIgcGFyYW1ldHJpY19hZ2VudFxudHlwZSBhZ2VudF9zaWcgPSBjb3VudGVyX3NpZyBwYXJhbWV0cmljX2FnZW50XG5cbigqIFRPRE86IGRvY3VtZW50IHdoeSBsaXN0IGxpc3QgKilcbnR5cGUgbWl4dHVyZSA9IGFnZW50IGxpc3QgbGlzdFxuXG50eXBlIGVkaXRfbm90YXRpb24gPSB7XG4gIG1peDogbWl4dHVyZTtcbiAgZGVsdGFfdG9rZW46XG4gICAgKChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgKiBzdHJpbmcgTG9jLmFubm90ZWQpIGxpc3Q7XG59XG5cbnR5cGUgYXJyb3dfbm90YXRpb24gPSB7XG4gIGxoczogbWl4dHVyZTtcbiAgcm1fdG9rZW46XG4gICAgKChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgKiBzdHJpbmcgTG9jLmFubm90ZWQpIGxpc3Q7XG4gIHJoczogbWl4dHVyZTtcbiAgYWRkX3Rva2VuOlxuICAgICgobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkICogc3RyaW5nIExvYy5hbm5vdGVkKSBsaXN0O1xufVxuXG50eXBlIHJ1bGVfY29udGVudCA9IEVkaXQgb2YgZWRpdF9ub3RhdGlvbiB8IEFycm93IG9mIGFycm93X25vdGF0aW9uXG5cbnR5cGUgcnVsZSA9IHtcbiAgcmV3cml0ZTogcnVsZV9jb250ZW50O1xuICBiaWRpcmVjdGlvbmFsOiBib29sO1xuICBrX2RlZjogKG1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZDtcbiAga191bjpcbiAgICAoKG1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZFxuICAgICogKG1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCBvcHRpb24pXG4gICAgb3B0aW9uO1xuICAoKmtfMTpyYWRpdXNfb3B0KilcbiAga19vcDogKG1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCBvcHRpb247XG4gIGtfb3BfdW46XG4gICAgKChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWRcbiAgICAqIChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uKVxuICAgIG9wdGlvbjtcbiAgICAgICgqcmF0ZSBmb3IgYmFja3dhcmQgcnVsZSopXG59XG5cbmxldCBmbGlwX2xhYmVsIHN0ciA9IHN0ciBeIFwiX29wXCJcblxudHlwZSAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBtb2RpZl9leHByID1cbiAgfCBBUFBMWSBvZiAoKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgKiAncnVsZSBMb2MuYW5ub3RlZClcbiAgfCBVUERBVEUgb2YgKCdpZCBMb2MuYW5ub3RlZCAqICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkKVxuICB8IFNUT1Agb2YgKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgUHJpbWl0aXZlcy5wcmludF9leHByIGxpc3RcbiAgfCBTTkFQU0hPVCBvZiBib29sICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgUHJpbWl0aXZlcy5wcmludF9leHByIGxpc3RcbiAgfCBQUklOVCBvZlxuICAgICAgKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgUHJpbWl0aXZlcy5wcmludF9leHByIGxpc3RcbiAgICAgICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgUHJpbWl0aXZlcy5wcmludF9leHByIGxpc3RcbiAgfCBQTE9URU5UUllcbiAgfCBDRkxPV0xBQkVMIG9mIChib29sICogc3RyaW5nIExvYy5hbm5vdGVkKVxuICB8IENGTE9XTUlYIG9mIChib29sICogJ3BhdHRlcm4gTG9jLmFubm90ZWQpXG4gIHwgRElOIG9mXG4gICAgICBQcmltaXRpdmVzLmRpbl9raW5kXG4gICAgICAqICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gIHwgRElOT0ZGIG9mICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gIHwgU1BFQ0lFU19PRiBvZlxuICAgICAgYm9vbFxuICAgICAgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBQcmltaXRpdmVzLnByaW50X2V4cHIgbGlzdFxuICAgICAgKiAncGF0dGVybiBMb2MuYW5ub3RlZFxuXG50eXBlICgncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIHBlcnR1cmJhdGlvbiA9XG4gIChOYnIudCBvcHRpb25cbiAgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZCBvcHRpb25cbiAgKiAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBtb2RpZl9leHByIGxpc3RcbiAgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZCBvcHRpb24pXG4gIExvYy5hbm5vdGVkXG5cbnR5cGUgY29uZmlndXJhdGlvbiA9IHN0cmluZyBMb2MuYW5ub3RlZCAqIHN0cmluZyBMb2MuYW5ub3RlZCBsaXN0XG5cbnR5cGUgKCdwYXR0ZXJuLCAnaWQpIHZhcmlhYmxlX2RlZiA9XG4gIHN0cmluZyBMb2MuYW5ub3RlZCAqICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkXG5cbnR5cGUgKCdtaXh0dXJlLCAnaWQpIGluaXRfdCA9XG4gIHwgSU5JVF9NSVggb2YgJ21peHR1cmUgTG9jLmFubm90ZWRcbiAgfCBJTklUX1RPSyBvZiAnaWQgTG9jLmFubm90ZWQgbGlzdFxuXG50eXBlICgncGF0dGVybiwgJ21peHR1cmUsICdpZCkgaW5pdF9zdGF0ZW1lbnQgPVxuICAoKiAgc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbiAqICgqdm9sdW1lKikqKVxuICAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCAqICgnbWl4dHVyZSwgJ2lkKSBpbml0X3RcblxudHlwZSAoJ2FnZW50LCAnYWdlbnRfaWQsICdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgaW5zdHJ1Y3Rpb24gPVxuICB8IFNJRyBvZiAnYWdlbnRfaWRcbiAgfCBUT0tFTlNJRyBvZiBzdHJpbmcgTG9jLmFubm90ZWRcbiAgfCBWT0xTSUcgb2Ygc3RyaW5nICogZmxvYXQgKiBzdHJpbmcgKCogdHlwZSwgdm9sdW1lLCBwYXJhbWV0ZXIqKVxuICB8IElOSVQgb2YgKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkKSBpbml0X3N0YXRlbWVudFxuICAoKnZvbHVtZSwgaW5pdCwgcG9zaXRpb24gKilcbiAgfCBERUNMQVJFIG9mICgncGF0dGVybiwgJ2lkKSB2YXJpYWJsZV9kZWZcbiAgfCBPQlMgb2YgKCdwYXR0ZXJuLCAnaWQpIHZhcmlhYmxlX2RlZiAoKmZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KilcbiAgfCBQTE9UIG9mICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkXG4gIHwgUEVSVCBvZiAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBwZXJ0dXJiYXRpb25cbiAgfCBDT05GSUcgb2YgY29uZmlndXJhdGlvblxuICB8IFJVTEUgb2YgKHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gKiAncnVsZSBMb2MuYW5ub3RlZClcblxudHlwZSAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBjb21tYW5kID1cbiAgfCBSVU4gb2YgKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWRcbiAgfCBNT0RJRlkgb2YgKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgbW9kaWZfZXhwciBsaXN0XG4gIHwgUVVJVFxuXG50eXBlICgnYWdlbnQsICdhZ2VudF9zaWcsICdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgY29tcGlsID0ge1xuICBmaWxlbmFtZXM6IHN0cmluZyBsaXN0O1xuICB2YXJpYWJsZXM6ICgncGF0dGVybiwgJ2lkKSB2YXJpYWJsZV9kZWYgbGlzdDtcbiAgICAgICgqKiBwYXR0ZXJuIGRlY2xhcmF0aW9uIGZvciByZXVzaW5nIGFzIHZhcmlhYmxlIGluIHBlcnR1cmJhdGlvbnNcbiAgICBvciBraW5ldGljIHJhdGUgKilcbiAgc2lnbmF0dXJlczogJ2FnZW50X3NpZyBsaXN0OyAgKCoqIGFnZW50IHNpZ25hdHVyZSBkZWNsYXJhdGlvbiAqKVxuICBydWxlczogKHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gKiAncnVsZSBMb2MuYW5ub3RlZCkgbGlzdDtcbiAgICAgICgqKiBydWxlcyAocG9zc2libHkgbmFtZWQpOiBbbmFtZV9vcHRpb24gKiBydWxlX2RlZmluaXRpb25dICopXG4gIG9ic2VydmFibGVzOiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCBsaXN0O1xuICAgICAgKCoqIGxpc3Qgb2YgcGF0dGVybnMgdG8gcGxvdCAqKVxuICBpbml0OiAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQpIGluaXRfc3RhdGVtZW50IGxpc3Q7XG4gICAgICAoKiogaW5pdGlhbCBncmFwaCBkZWNsYXJhdGlvbiAqKVxuICBwZXJ0dXJiYXRpb25zOiAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBwZXJ0dXJiYXRpb24gbGlzdDtcbiAgY29uZmlndXJhdGlvbnM6IGNvbmZpZ3VyYXRpb24gbGlzdDtcbiAgdG9rZW5zOiBzdHJpbmcgTG9jLmFubm90ZWQgbGlzdDtcbiAgdm9sdW1lczogKHN0cmluZyAqIGZsb2F0ICogc3RyaW5nKSBsaXN0O1xufVxuXG50eXBlIHBhcnNpbmdfY29tcGlsID0gKGFnZW50LCBhZ2VudF9zaWcsIG1peHR1cmUsIG1peHR1cmUsIHN0cmluZywgcnVsZSkgY29tcGlsXG5cbnR5cGUgcGFyc2luZ19pbnN0cnVjdGlvbiA9XG4gIChhZ2VudCwgYWdlbnRfc2lnLCBtaXh0dXJlLCBtaXh0dXJlLCBzdHJpbmcsIHJ1bGUpIGluc3RydWN0aW9uXG5cbmxldCBub19tb3JlX3NpdGVfb25fcmlnaHQgZXJyb3IgbGVmdCByaWdodCA9XG4gIExpc3QuZm9yX2FsbFxuICAgIChmdW5jdGlvblxuICAgICAgfCBDb3VudGVyIF8gLT4gdHJ1ZVxuICAgICAgfCBQb3J0IHAgLT5cbiAgICAgICAgTGlzdC5leGlzdHNcbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgQ291bnRlciBfIC0+IGZhbHNlXG4gICAgICAgICAgICB8IFBvcnQgcCcgLT4gZnN0IHAucG9ydF9uYW1lID0gZnN0IHAnLnBvcnRfbmFtZSlcbiAgICAgICAgICBsZWZ0XG4gICAgICAgIHx8XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgZXJyb3IgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKCBcIlNpdGUgJ1wiIF4gZnN0IHAucG9ydF9uYW1lXG4gICAgICAgICAgICAgICAgICAgXiBcIicgd2FzIG5vdCBtZW50aW9ubmVkIGluIHRoZSBsZWZ0LWhhbmQgc2lkZS5cIixcbiAgICAgICAgICAgICAgICAgICBzbmQgcC5wb3J0X25hbWUgKSlcbiAgICAgICAgaW5cbiAgICAgICAgZmFsc2UpXG4gICAgcmlnaHRcblxubGV0IGVtcHR5X2NvbXBpbCA9XG4gIHtcbiAgICBmaWxlbmFtZXMgPSBbXTtcbiAgICB2YXJpYWJsZXMgPSBbXTtcbiAgICBzaWduYXR1cmVzID0gW107XG4gICAgcnVsZXMgPSBbXTtcbiAgICBpbml0ID0gW107XG4gICAgb2JzZXJ2YWJsZXMgPSBbXTtcbiAgICBwZXJ0dXJiYXRpb25zID0gW107XG4gICAgY29uZmlndXJhdGlvbnMgPSBbXTtcbiAgICB0b2tlbnMgPSBbXTtcbiAgICB2b2x1bWVzID0gW107XG4gIH1cblxuKCpcbiAgbGV0IHJldmVyc2UgcmVzID1cbiAgbGV0IGxfcGF0ID0gTGlzdC5yZXYgIXJlcy5wYXR0ZXJuc1xuICBhbmQgbF9zaWcgPSBMaXN0LnJldiAhcmVzLnNpZ25hdHVyZXNcbiAgYW5kIGxfcnVsID0gTGlzdC5yZXYgIXJlcy5ydWxlc1xuICBhbmQgbF9pbmkgPSBMaXN0LnJldiAhcmVzLmluaXRcbiAgYW5kIGxfb2JzID0gTGlzdC5yZXYgIXJlcy5vYnNlcnZhYmxlc1xuICBpblxuICByZXM6PXtwYXR0ZXJucz1sX3BhdCA7IHNpZ25hdHVyZXM9bF9zaWcgO1xuICAgICAgICBydWxlcz1sX3J1bCA7IGluaXQgPSBsX2luaSA7IG9ic2VydmFibGVzID0gbF9vYnN9XG4qKVxuXG5sZXQgcHJpbnRfYXN0X2xpbmsgbW9kX2wgZiBsID1cbiAgaWYgbCA8PiBbXSB8fCBtb2RfbCA8PiBOb25lIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiWyVhJWFdXCJcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoeCwgXykgLT5cbiAgICAgICAgICAgTEthcHBhLnByaW50X2xpbmtcbiAgICAgICAgICAgICAoZnVuIF8gZiAoeCwgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHgpXG4gICAgICAgICAgICAgKGZ1biBmICh4LCBfKSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgeClcbiAgICAgICAgICAgICAoZnVuIF8gKCkgLT4gKCkpXG4gICAgICAgICAgICAgZiB4KSlcbiAgICAgIGxcbiAgICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2UgKGZ1biBmIHggLT5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIi8lYVwiXG4gICAgICAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IFNvbWUgKGwsIF8pIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBsXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLlwiKVxuICAgICAgICAgICAgIHgpKVxuICAgICAgbW9kX2xcblxubGV0IHByaW50X2FzdF9pbnRlcm5hbCBtb2RfaSBmIGwgPVxuICBpZiBsIDw+IFtdIHx8IG1vZF9pIDw+IE5vbmUgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWElYX1cIlxuICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICB8IFNvbWUgeCwgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgeFxuICAgICAgICAgfCBOb25lLCBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiNcIikpXG4gICAgICBsXG4gICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiAoaSwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIi8lc1wiIGkpKVxuICAgICAgbW9kX2lcblxubGV0IHByaW50X2FzdF9wb3J0IGYgcCA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlcyVhJWFcIiAoZnN0IHAucG9ydF9uYW1lKVxuICAgIChwcmludF9hc3RfaW50ZXJuYWwgcC5wb3J0X2ludF9tb2QpXG4gICAgcC5wb3J0X2ludFxuICAgIChwcmludF9hc3RfbGluayBwLnBvcnRfbGlua19tb2QpXG4gICAgcC5wb3J0X2xpbmtcblxubGV0IHByaW50X2NvdW50ZXJfdGVzdCBmID0gZnVuY3Rpb25cbiAgfCBDRVEgeCwgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiPSVpXCIgeFxuICB8IENHVEUgeCwgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiPj0laVwiIHhcbiAgfCBDTFRFIHgsIF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIjw9JWlcIiB4XG4gIHwgQ1ZBUiB4LCBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI9JXNcIiB4XG5cbmxldCBwcmludF9jb3VudGVyX21pbiBmICh4LCBfKSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFNvbWUgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiPSVkXCIgeFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIj0tb29cIlxuXG5sZXQgcHJpbnRfY291bnRlcl9tYXggZiAoeCwgXykgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTb21lIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIi8lZFwiIHhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIvK29vXCJcblxubGV0IHByaW50X2NvdW50ZXJfZGVmYXVsdCBtaW4gZiB4ID1cbiAgbWF0Y2ggbWluIHdpdGhcbiAgfCBTb21lIChTb21lIGksIF8pIHdoZW4gaSA9IHggLT4gKClcbiAgfCBOb25lIHwgU29tZSBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIoJWQpXCIgeFxuXG5sZXQgcHJpbnRfY291bnRlcl9kZWx0YSB0ZXN0IGYgKGRlbHRhLCBfKSA9XG4gIGlmIGRlbHRhIDw+IDAgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSs9JWRcIlxuICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIvXCIpKVxuICAgICAgdGVzdCBkZWx0YVxuXG5sZXQgcHJpbnRfY291bnRlciBmIGMgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJXN7JWElYX1cIiAoZnN0IGMuY291bnRlcl9uYW1lKVxuICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2UgcHJpbnRfY291bnRlcl90ZXN0KVxuICAgIGMuY291bnRlcl90ZXN0XG4gICAgKHByaW50X2NvdW50ZXJfZGVsdGEgYy5jb3VudGVyX3Rlc3QpXG4gICAgYy5jb3VudGVyX2RlbHRhXG5cbmxldCBwcmludF9jb3VudGVyX3NpZyBmIGMgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJXN7JWElYX0lYVwiIChmc3QgYy5jb3VudGVyX3NpZ19uYW1lKVxuICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2UgcHJpbnRfY291bnRlcl9taW4pXG4gICAgYy5jb3VudGVyX3NpZ19taW5cbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIHByaW50X2NvdW50ZXJfbWF4KVxuICAgIGMuY291bnRlcl9zaWdfbWF4XG4gICAgKHByaW50X2NvdW50ZXJfZGVmYXVsdCBjLmNvdW50ZXJfc2lnX21pbilcbiAgICBjLmNvdW50ZXJfc2lnX2RlZmF1bHRcblxubGV0IHByaW50X2FzdF9zaXRlIH5wcmludF9jb3VudGVyIGYgPSBmdW5jdGlvblxuICB8IFBvcnQgcCAtPiBwcmludF9hc3RfcG9ydCBmIHBcbiAgfCBDb3VudGVyIGMgLT4gcHJpbnRfY291bnRlciBmIGNcblxubGV0IHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcyA9XG4gIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX3N0cmluZ1xuXG5sZXQgc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMgPVxuICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcblxubGV0IHN0cmluZ19vcHRpb25fYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMgPVxuICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX3N0cmluZylcblxubGV0IHN0cmluZ19vcHRpb25fYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcyA9XG4gIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKEpzb25VdGlsLnRvX29wdGlvbiAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkpXG5cbmxldCBjb3VudGVyX3Rlc3RfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgQ0VRIHggLT4gYEFzc29jIFsgXCJ0ZXN0XCIsIGBTdHJpbmcgXCJlcVwiOyBcInZhbFwiLCBgSW50IHggXVxuICB8IENHVEUgeCAtPiBgQXNzb2MgWyBcInRlc3RcIiwgYFN0cmluZyBcImd0ZVwiOyBcInZhbFwiLCBgSW50IHggXVxuICB8IENMVEUgeCAtPiBgQXNzb2MgWyBcInRlc3RcIiwgYFN0cmluZyBcImx0ZVwiOyBcInZhbFwiLCBgSW50IHggXVxuICB8IENWQVIgeCAtPiBgQXNzb2MgWyBcInRlc3RcIiwgYFN0cmluZyBcImVxXCI7IFwidmFsXCIsIGBTdHJpbmcgeCBdXG5cbmxldCBjb3VudGVyX3Rlc3Rfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwidGVzdFwiLCBgU3RyaW5nIFwiZXFcIik7IChcInZhbFwiLCBgSW50IHgpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YWxcIiwgYEludCB4KTsgKFwidGVzdFwiLCBgU3RyaW5nIFwiZXFcIikgXSAtPlxuICAgIENFUSB4XG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIGBJbnQgeCk7IChcInRlc3RcIiwgYFN0cmluZyBcImd0ZVwiKSBdXG4gIHwgYEFzc29jIFsgKFwidGVzdFwiLCBgU3RyaW5nIFwiZ3RlXCIpOyAoXCJ2YWxcIiwgYEludCB4KSBdIC0+XG4gICAgQ0dURSB4XG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIGBJbnQgeCk7IChcInRlc3RcIiwgYFN0cmluZyBcImx0ZVwiKSBdXG4gIHwgYEFzc29jIFsgKFwidGVzdFwiLCBgU3RyaW5nIFwibHRlXCIpOyAoXCJ2YWxcIiwgYEludCB4KSBdIC0+XG4gICAgQ0xURSB4XG4gIHwgYEFzc29jIFsgKFwidGVzdFwiLCBgU3RyaW5nIFwiZXFcIik7IChcInZhbFwiLCBgU3RyaW5nIHgpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YWxcIiwgYFN0cmluZyB4KTsgKFwidGVzdFwiLCBgU3RyaW5nIFwiZXFcIikgXSAtPlxuICAgIENWQVIgeFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGNvdW50ZXIgdGVzdFwiLCB4KSlcblxubGV0IHBvcnRfdG9fanNvbiBmaWxlbmFtZXMgcCA9XG4gIGxldCBtb2RfbCA9XG4gICAgSnNvblV0aWwub2Zfb3B0aW9uIChmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IGBTdHJpbmcgXCJGUkVFXCJcbiAgICAgIHwgU29tZSB4IC0+IExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX2ludCB4KVxuICBpblxuICBsZXQgbW9kX2kgPVxuICAgIEpzb25VdGlsLm9mX29wdGlvbiAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgSnNvblV0aWwub2Zfc3RyaW5nKVxuICBpblxuICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgIFtcbiAgICAgIFwicG9ydF9uYW1lXCIsIHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcyBwLnBvcnRfbmFtZTtcbiAgICAgICggXCJwb3J0X2ludFwiLFxuICAgICAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgICAgIFtcbiAgICAgICAgICAgICggXCJzdGF0ZVwiLFxuICAgICAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAgICAgKHN0cmluZ19vcHRpb25fYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgcC5wb3J0X2ludCApO1xuICAgICAgICAgICAgXCJtb2RcIiwgbW9kX2kgcC5wb3J0X2ludF9tb2Q7XG4gICAgICAgICAgXSApO1xuICAgICAgKCBcInBvcnRfbGlua1wiLFxuICAgICAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgICAgIFtcbiAgICAgICAgICAgICggXCJzdGF0ZVwiLFxuICAgICAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKExLYXBwYS5saW5rX3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIF8gLT4gc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSkpKVxuICAgICAgICAgICAgICAgIHAucG9ydF9saW5rICk7XG4gICAgICAgICAgICBcIm1vZFwiLCBtb2RfbCBwLnBvcnRfbGlua19tb2Q7XG4gICAgICAgICAgXSApO1xuICAgIF1cblxubGV0IGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBpIGwgPVxuICBsZXQgbW9kX2wgPVxuICAgIEpzb25VdGlsLnRvX29wdGlvbiAoZnVuY3Rpb25cbiAgICAgIHwgYFN0cmluZyBcIkZSRUVcIiAtPiBOb25lXG4gICAgICB8IHggLT5cbiAgICAgICAgU29tZVxuICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSkgeCkpXG4gIGluXG4gIGxldCBtb2RfaSA9XG4gICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpKVxuICBpblxuICBsZXQgcG9ydF9pbnQsIHBvcnRfaW50X21vZCA9XG4gICAgbWF0Y2ggaSB3aXRoXG4gICAgfCBgQXNzb2MgW10gfCBgTnVsbCAtPiBbXSwgTm9uZVxuICAgIHwgYEFzc29jIFsgKFwic3RhdGVcIiwgaSkgXSAtPlxuICAgICAgSnNvblV0aWwudG9fbGlzdCAoc3RyaW5nX29wdGlvbl9hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKSBpLCBOb25lXG4gICAgfCBgQXNzb2MgWyAoXCJtb2RcIiwgbSkgXSAtPiBbXSwgbW9kX2kgbVxuICAgIHwgYEFzc29jIFsgKFwic3RhdGVcIiwgaSk7IChcIm1vZFwiLCBtKSBdIHwgYEFzc29jIFsgKFwibW9kXCIsIG0pOyAoXCJzdGF0ZVwiLCBpKSBdXG4gICAgICAtPlxuICAgICAgSnNvblV0aWwudG9fbGlzdCAoc3RyaW5nX29wdGlvbl9hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKSBpLCBtb2RfaSBtXG4gICAgfCBfIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBpbnRlcm5hbCBzdGF0ZXNcIiwgaSkpXG4gIGluXG4gIGxldCBwb3J0X2xpbmssIHBvcnRfbGlua19tb2QgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgYEFzc29jIFtdIHwgYE51bGwgLT4gW10sIE5vbmVcbiAgICB8IGBBc3NvYyBbIChcInN0YXRlXCIsIGwpIF0gLT5cbiAgICAgICggSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChMS2FwcGEubGlua19vZl9qc29uXG4gICAgICAgICAgICAgICAgKGZ1biBfIC0+IHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAoZnVuIF8gLT4gKCkpKSlcbiAgICAgICAgICBsLFxuICAgICAgICBOb25lIClcbiAgICB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKSBdIC0+IFtdLCBtb2RfbCBtXG4gICAgfCBgQXNzb2MgWyAoXCJzdGF0ZVwiLCBsKTsgKFwibW9kXCIsIG0pIF0gfCBgQXNzb2MgWyAoXCJtb2RcIiwgbSk7IChcInN0YXRlXCIsIGwpIF1cbiAgICAgIC0+XG4gICAgICAoIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoTEthcHBhLmxpbmtfb2ZfanNvblxuICAgICAgICAgICAgICAgIChmdW4gXyAtPiBzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgKGZ1biBfIC0+ICgpKSkpXG4gICAgICAgICAgbCxcbiAgICAgICAgbW9kX2wgbSApXG4gICAgfCBfIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBsaW5rIHN0YXRlc1wiLCBpKSlcbiAgaW5cbiAgUG9ydFxuICAgIHtcbiAgICAgIHBvcnRfbmFtZSA9IHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzIG47XG4gICAgICBwb3J0X2ludDtcbiAgICAgIHBvcnRfaW50X21vZDtcbiAgICAgIHBvcnRfbGluaztcbiAgICAgIHBvcnRfbGlua19tb2Q7XG4gICAgfVxuXG5sZXQgc2l0ZV9zaWdfb2ZfanNvbiBmaWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgXSAtPlxuICAgIENvdW50ZXJcbiAgICAgIHtcbiAgICAgICAgY291bnRlcl9zaWdfbmFtZSA9XG4gICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgWW9qc29uLkJhc2ljLlV0aWwudG9fc3RyaW5nIG47XG4gICAgICAgIGNvdW50ZXJfc2lnX21pbiA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb24gWW9qc29uLkJhc2ljLlV0aWwudG9faW50KSlcbiAgICAgICAgICAgIG1pbjtcbiAgICAgICAgY291bnRlcl9zaWdfbWF4ID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvbiBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQpKVxuICAgICAgICAgICAgbWF4O1xuICAgICAgICBjb3VudGVyX3NpZ19kZWZhdWx0ID0gWW9qc29uLkJhc2ljLlV0aWwudG9faW50IGRlZmF1bHQ7XG4gICAgICAgIGNvdW50ZXJfc2lnX3Zpc2libGUgPSBGcm9tX29yaWdpbmFsX2FzdDtcbiAgICAgIH1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X2xpbmtcIiwgbCkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X2ludFwiLCBpKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9saW5rXCIsIGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2xpbmtcIiwgbCk7IChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9pbnRcIiwgaSkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X2xpbmtcIiwgbCk7IChcInBvcnRfbmFtZVwiLCBuKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9uYW1lXCIsIG4pIF0gLT5cbiAgICBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gaSBsXG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2ludFwiLCBpKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbmFtZVwiLCBuKSBdIC0+XG4gICAgYnVpbGRfcG9ydF9vZl9qc29uIGZpbGVuYW1lcyBuIGkgYE51bGxcbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfbGlua1wiLCBsKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X25hbWVcIiwgbikgXSAtPlxuICAgIGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBgTnVsbCBsXG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pIF0gLT4gYnVpbGRfcG9ydF9vZl9qc29uIGZpbGVuYW1lcyBuIGBOdWxsIGBOdWxsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYW4gQVNUIGFnZW50XCIsIHgpKVxuXG5sZXQgc2l0ZV9vZl9qc29uIGZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwiY291bnRlcl9uYW1lXCIsIG4pOyAoXCJjb3VudGVyX3Rlc3RcIiwgdCk7IChcImNvdW50ZXJfZGVsdGFcIiwgZCkgXVxuICB8IGBBc3NvYyBbIChcImNvdW50ZXJfbmFtZVwiLCBuKTsgKFwiY291bnRlcl9kZWx0YVwiLCBkKTsgKFwiY291bnRlcl90ZXN0XCIsIHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJjb3VudGVyX3Rlc3RcIiwgdCk7IChcImNvdW50ZXJfbmFtZVwiLCBuKTsgKFwiY291bnRlcl9kZWx0YVwiLCBkKSBdXG4gIHwgYEFzc29jIFsgKFwiY291bnRlcl90ZXN0XCIsIHQpOyAoXCJjb3VudGVyX2RlbHRhXCIsIGQpOyAoXCJjb3VudGVyX25hbWVcIiwgbikgXVxuICB8IGBBc3NvYyBbIChcImNvdW50ZXJfZGVsdGFcIiwgZCk7IChcImNvdW50ZXJfbmFtZVwiLCBuKTsgKFwiY291bnRlcl90ZXN0XCIsIHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJjb3VudGVyX2RlbHRhXCIsIGQpOyAoXCJjb3VudGVyX3Rlc3RcIiwgdCk7IChcImNvdW50ZXJfbmFtZVwiLCBuKSBdIC0+XG4gICAgQ291bnRlclxuICAgICAge1xuICAgICAgICBjb3VudGVyX25hbWUgPVxuICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIFlvanNvbi5CYXNpYy5VdGlsLnRvX3N0cmluZyBuO1xuICAgICAgICBjb3VudGVyX3Rlc3QgPVxuICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIGNvdW50ZXJfdGVzdF9vZl9qc29uKVxuICAgICAgICAgICAgdDtcbiAgICAgICAgY291bnRlcl9kZWx0YSA9XG4gICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgWW9qc29uLkJhc2ljLlV0aWwudG9faW50IGQ7XG4gICAgICB9XG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9saW5rXCIsIGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9pbnRcIiwgaSkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfbGlua1wiLCBsKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfaW50XCIsIGkpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X25hbWVcIiwgbikgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbmFtZVwiLCBuKSBdIC0+XG4gICAgYnVpbGRfcG9ydF9vZl9qc29uIGZpbGVuYW1lcyBuIGkgbFxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9pbnRcIiwgaSkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X25hbWVcIiwgbikgXSAtPlxuICAgIGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBpIGBOdWxsXG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2xpbmtcIiwgbCkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9uYW1lXCIsIG4pIF0gLT5cbiAgICBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gYE51bGwgbFxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKSBdIC0+IGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBgTnVsbCBgTnVsbFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGFuIEFTVCBhZ2VudFwiLCB4KSlcblxubGV0IGNvdW50ZXJfdG9fanNvbiB+ZmlsZW5hbWVzIGMgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIFwiY291bnRlcl9uYW1lXCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX3N0cmluZyBjLmNvdW50ZXJfbmFtZSApO1xuICAgICAgKCBcImNvdW50ZXJfdGVzdFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgY291bnRlcl90ZXN0X3RvX2pzb24pXG4gICAgICAgICAgYy5jb3VudGVyX3Rlc3QgKTtcbiAgICAgICggXCJjb3VudGVyX2RlbHRhXCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX2ludCBjLmNvdW50ZXJfZGVsdGEgKTtcbiAgICBdXG5cbmxldCBjb3VudGVyX3NpZ190b19qc29uIH5maWxlbmFtZXMgYyA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggXCJjb3VudGVyX3NpZ19uYW1lXCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX3N0cmluZyBjLmNvdW50ZXJfc2lnX25hbWUgKTtcbiAgICAgICggXCJjb3VudGVyX21pblwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludCkpXG4gICAgICAgICAgYy5jb3VudGVyX3NpZ19taW4gKTtcbiAgICAgICggXCJjb3VudGVyX21heFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludCkpXG4gICAgICAgICAgYy5jb3VudGVyX3NpZ19tYXggKTtcbiAgICAgIFwiY291bnRlcl9kZWZhdWx0XCIsIEpzb25VdGlsLm9mX2ludCBjLmNvdW50ZXJfc2lnX2RlZmF1bHQ7XG4gICAgXVxuXG5sZXQgc2l0ZV90b19qc29uIH5jb3VudGVyX3RvX2pzb24gZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBQb3J0IHAgLT4gcG9ydF90b19qc29uIGZpbGVuYW1lcyBwXG4gIHwgQ291bnRlciBjIC0+IGNvdW50ZXJfdG9fanNvbiB+ZmlsZW5hbWVzIGNcblxubGV0IHByaW50X2FnZW50X21vZCBmID0gZnVuY3Rpb25cbiAgfCBDcmVhdGUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiK1wiXG4gIHwgRXJhc2UgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLVwiXG4gIHwgTm9Nb2QgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiXCJcblxubGV0IHByaW50X2FzdF9hZ2VudCB+cHJpbnRfY291bnRlciBmID0gZnVuY3Rpb25cbiAgfCBBYnNlbnQgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIuXCJcbiAgfCBQcmVzZW50ICgoYWdlbnRfbmFtZSwgXyksIGwsIG0pIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVzKCVhKSVhXCIgYWdlbnRfbmFtZVxuICAgICAgKFBwLmxpc3QgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgXCIpIChwcmludF9hc3Rfc2l0ZSB+cHJpbnRfY291bnRlcikpXG4gICAgICBsIHByaW50X2FnZW50X21vZCBtXG5cbmxldCBhZ2VudF9tb2RfdG9feW9qc29uID0gZnVuY3Rpb25cbiAgfCBDcmVhdGUgLT4gYFN0cmluZyBcImNyZWF0ZWRcIlxuICB8IEVyYXNlIC0+IGBTdHJpbmcgXCJlcmFzZVwiXG4gIHwgTm9Nb2QgLT4gYFN0cmluZyBcIm5vX21vZFwiXG5cbmxldCBhZ2VudF9tb2Rfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiY3JlYXRlZFwiIC0+IENyZWF0ZVxuICB8IGBTdHJpbmcgXCJlcmFzZVwiIC0+IEVyYXNlXG4gIHwgYFN0cmluZyBcIm5vX21vZFwiIC0+IE5vTW9kXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBhZ2VudCBtb2RpZmljYXRpb25cIiwgeCkpXG5cbmxldCBhZ2VudF90b19qc29uIH5jb3VudGVyX3RvX2pzb24gZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBBYnNlbnQgXyAtPiBgTnVsbFxuICB8IFByZXNlbnQgKG5hLCBsLCBtKSAtPlxuICAgIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgICBbXG4gICAgICAgIFwibmFtZVwiLCBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9zdHJpbmcgbmE7XG4gICAgICAgIFwic2lnXCIsXG4gICAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgKHNpdGVfdG9fanNvbiB+Y291bnRlcl90b19qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgIGw7XG4gICAgICAgIFwibW9kXCIsIGFnZW50X21vZF90b195b2pzb24gbTtcbiAgICAgIF1cblxubGV0IGFnZW50X29mX2pzb24gfnNpdGVfb2ZfanNvbiBmaWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEFic2VudCBMb2MuZHVtbXlcbiAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIG4pOyAoXCJzaWdcIiwgcyk7IChcIm1vZFwiLCBtKSBdXG4gIHwgYEFzc29jIFsgKFwic2lnXCIsIHMpOyAoXCJuYW1lXCIsIG4pOyAoXCJtb2RcIiwgbSkgXVxuICB8IGBBc3NvYyBbIChcIm5hbWVcIiwgbik7IChcIm1vZFwiLCBtKTsgKFwic2lnXCIsIHMpIF1cbiAgfCBgQXNzb2MgWyAoXCJzaWdcIiwgcyk7IChcIm1vZFwiLCBtKTsgKFwibmFtZVwiLCBuKSBdXG4gIHwgYEFzc29jIFsgKFwibW9kXCIsIG0pOyAoXCJuYW1lXCIsIG4pOyAoXCJzaWdcIiwgcykgXVxuICB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKTsgKFwic2lnXCIsIHMpOyAoXCJuYW1lXCIsIG4pIF0gLT5cbiAgICBQcmVzZW50XG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSBuLFxuICAgICAgICBKc29uVXRpbC50b19saXN0IChzaXRlX29mX2pzb24gZmlsZW5hbWVzKSBzLFxuICAgICAgICBhZ2VudF9tb2Rfb2ZfeW9qc29uIG0gKVxuICB8IGBBc3NvYyBbIChcIm5hbWVcIiwgbik7IChcIm1vZFwiLCBtKSBdIHwgYEFzc29jIFsgKFwibW9kXCIsIG0pOyAoXCJuYW1lXCIsIG4pIF0gLT5cbiAgICBQcmVzZW50XG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSBuLFxuICAgICAgICBbXSxcbiAgICAgICAgYWdlbnRfbW9kX29mX3lvanNvbiBtIClcbiAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIG4pOyAoXCJzaWdcIiwgcykgXSB8IGBBc3NvYyBbIChcInNpZ1wiLCBzKTsgKFwibmFtZVwiLCBuKSBdIC0+XG4gICAgUHJlc2VudFxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkgbixcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdCAoc2l0ZV9vZl9qc29uIGZpbGVuYW1lcykgcyxcbiAgICAgICAgTm9Nb2QgKVxuICB8IGBBc3NvYyBbIChcIm5hbWVcIiwgbikgXSAtPlxuICAgIFByZXNlbnRcbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpIG4sXG4gICAgICAgIFtdLFxuICAgICAgICBOb01vZCApXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYW4gQVNUIGFnZW50XCIsIHgpKVxuXG5sZXQgYWdlbnRfc2lnX29mX2pzb24gPSBhZ2VudF9vZl9qc29uIH5zaXRlX29mX2pzb246c2l0ZV9zaWdfb2ZfanNvblxuXG4oKiBUTyBETyBUcmFuc2ZlciBiYWNrIGludmVydGVkIGNvdW50ZXJzICopXG5sZXQgYWdlbnRfc2lnX3RvX2pzb24gPVxuICBhZ2VudF90b19qc29uIH5jb3VudGVyX3RvX2pzb246Y291bnRlcl9zaWdfdG9fanNvblxuXG5sZXQgYWdlbnRfb2ZfanNvbiA9IGFnZW50X29mX2pzb24gfnNpdGVfb2ZfanNvblxubGV0IGFnZW50X3RvX2pzb24gPSBhZ2VudF90b19qc29uIH5jb3VudGVyX3RvX2pzb25cblxubGV0IHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXIgPVxuICBQcC5saXN0XG4gICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFxcQCBcIilcbiAgICAoUHAubGlzdCBQcC5jb21tYSAocHJpbnRfYXN0X2FnZW50IH5wcmludF9jb3VudGVyKSlcblxubGV0IHRvX2VyYXNlZF9taXh0dXJlID1cbiAgTGlzdC5tYXBcbiAgICAoTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgICB8IEFic2VudCBwb3MgLT4gQWJzZW50IHBvc1xuICAgICAgfCBQcmVzZW50IChuLCBzLCBfKSAtPiBQcmVzZW50IChuLCBzLCBFcmFzZSkpKVxuXG5sZXQgdG9fY3JlYXRlZF9taXh0dXJlID1cbiAgTGlzdC5tYXBcbiAgICAoTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgICB8IEFic2VudCBwb3MgLT4gQWJzZW50IHBvc1xuICAgICAgfCBQcmVzZW50IChuLCBzLCBfKSAtPiBQcmVzZW50IChuLCBzLCBDcmVhdGUpKSlcblxubGV0IHRvX2R1bW15X3VzZXJfbGluayA9IGZ1bmN0aW9uXG4gIHwgW10gfCBbIChMS2FwcGEuTE5LX0FOWSwgXykgXSAtPiBVc2VyX2dyYXBoLldIQVRFVkVSXG4gIHwgWyAoTEthcHBhLkFOWV9GUkVFLCBfKSBdIC0+IFVzZXJfZ3JhcGguTElOS1MgW11cbiAgfCBbIChMS2FwcGEuTE5LX1ZBTFVFICh4LCBfKSwgXykgXSAtPiBVc2VyX2dyYXBoLkxJTktTIFsgKC0xLCAtMSksIHggXVxuICB8IFsgKExLYXBwYS5MTktfRlJFRSwgXykgXSAtPiBVc2VyX2dyYXBoLkxJTktTIFtdXG4gIHwgWyAoTEthcHBhLkxOS19TT01FLCBfKSBdIC0+IFVzZXJfZ3JhcGguU09NRVxuICB8IFsgKExLYXBwYS5MTktfVFlQRSAoKHR5LCBfKSwgKHNpLCBfKSksIF8pIF0gLT4gVXNlcl9ncmFwaC5UWVBFICh0eSwgc2kpXG4gIHwgXyA6OiBfIDo6IF8gLT4gYXNzZXJ0IGZhbHNlICgqIFRPRE8gKilcblxubGV0IHRvX2R1bW15X3VzZXJfaW50ZXJuYWwgPSBmdW5jdGlvblxuICB8IFtdIC0+IFNvbWUgW11cbiAgfCBbIChOb25lLCBfKSBdIC0+IE5vbmVcbiAgfCBbIChTb21lIHN0LCBfKSBdIC0+IFNvbWUgWyBzdCBdXG4gIHwgXyA6OiBfIDo6IF8gYXMgbCAtPiBTb21lIChMaXN0X3V0aWwubWFwX29wdGlvbiBmc3QgbClcblxubGV0IHRvX2R1bW15X3VzZXJfc2l0ZSA9IGZ1bmN0aW9uXG4gIHwgUG9ydCB7IHBvcnRfbmFtZTsgcG9ydF9pbnQ7IHBvcnRfaW50X21vZCA9IF87IHBvcnRfbGluazsgcG9ydF9saW5rX21vZCA9IF8gfVxuICAgIC0+XG4gICAge1xuICAgICAgVXNlcl9ncmFwaC5zaXRlX25hbWUgPSBmc3QgcG9ydF9uYW1lO1xuICAgICAgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPVxuICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICB7XG4gICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPSB0b19kdW1teV91c2VyX2xpbmsgcG9ydF9saW5rO1xuICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X3N0YXRlcyA9IHRvX2R1bW15X3VzZXJfaW50ZXJuYWwgcG9ydF9pbnQ7XG4gICAgICAgICAgfTtcbiAgICB9XG4gIHwgQ291bnRlciB7IGNvdW50ZXJfbmFtZTsgY291bnRlcl90ZXN0ID0gXzsgY291bnRlcl9kZWx0YSA9IF8gfSAtPlxuICAgIHtcbiAgICAgIFVzZXJfZ3JhcGguc2l0ZV9uYW1lID0gZnN0IGNvdW50ZXJfbmFtZTtcbiAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID0gVXNlcl9ncmFwaC5Db3VudGVyICgtMSk7XG4gICAgICAoKiBUT0RPICopXG4gICAgfVxuXG5sZXQgdG9fZHVtbXlfdXNlcl9hZ2VudCA9IGZ1bmN0aW9uXG4gIHwgQWJzZW50IF8gLT4gTm9uZVxuICB8IFByZXNlbnQgKChuYSwgXyksIHMsIF9tb2RzKSAtPlxuICAgIFNvbWVcbiAgICAgIHtcbiAgICAgICAgVXNlcl9ncmFwaC5ub2RlX3R5cGUgPSBuYTtcbiAgICAgICAgVXNlcl9ncmFwaC5ub2RlX2lkID0gTm9uZTtcbiAgICAgICAgVXNlcl9ncmFwaC5ub2RlX3NpdGVzID0gVG9vbHMuYXJyYXlfbWFwX29mX2xpc3QgdG9fZHVtbXlfdXNlcl9zaXRlIHM7XG4gICAgICB9XG5cbmxldCBzZXR1cF9saW5rIG0gKChsaW5lLCByb3cpLCBzaXRlKSB2YSA9XG4gIG1hdGNoIG0uKGxpbmUpLihyb3cpIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB7IFVzZXJfZ3JhcGgubm9kZV9zaXRlczsgXyB9IC0+XG4gICAgbGV0IHMgPSBub2RlX3NpdGVzLihzaXRlKSBpblxuICAgIChtYXRjaCBzLlVzZXJfZ3JhcGguc2l0ZV90eXBlIHdpdGhcbiAgICB8IFVzZXJfZ3JhcGguQ291bnRlciBfIC0+ICgpXG4gICAgfCBVc2VyX2dyYXBoLlBvcnQgcCAtPlxuICAgICAgbm9kZV9zaXRlcy4oc2l0ZSkgPC1cbiAgICAgICAge1xuICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV9uYW1lID0gcy5Vc2VyX2dyYXBoLnNpdGVfbmFtZTtcbiAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9XG4gICAgICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9saW5rcyA9IFVzZXJfZ3JhcGguTElOS1MgWyB2YSBdO1xuICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9zdGF0ZXMgPSBwLlVzZXJfZ3JhcGgucG9ydF9zdGF0ZXM7XG4gICAgICAgICAgICAgIH07XG4gICAgICAgIH0pXG5cbmxldCBtaXh0dXJlX3RvX3VzZXJfZ3JhcGggbSA9XG4gIGxldCBvdXQgPVxuICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0IChUb29scy5hcnJheV9tYXBfb2ZfbGlzdCB0b19kdW1teV91c2VyX2FnZW50KSBtXG4gIGluXG4gIGxldCBhY2MgPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgIChmdW4gbGluZSAtPlxuICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpIChmdW4gcm93IGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICB8IFNvbWUgeyBVc2VyX2dyYXBoLm5vZGVfc2l0ZXM7IF8gfSAtPlxuICAgICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgICAoZnVuIHNpdGUgYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID1cbiAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID0gVXNlcl9ncmFwaC5MSU5LUyBbXTsgXyB9O1xuICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID1cbiAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID0gVXNlcl9ncmFwaC5MSU5LUyAoXyA6OiBfIDo6IF8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9saW5rcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBVc2VyX2dyYXBoLldIQVRFVkVSIHwgVXNlcl9ncmFwaC5TT01FXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBVc2VyX2dyYXBoLlRZUEUgKF8sIF8pICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgfCB7IFVzZXJfZ3JhcGguc2l0ZV90eXBlID0gVXNlcl9ncmFwaC5Db3VudGVyIF87IF8gfSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPVxuICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguUG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPSBVc2VyX2dyYXBoLkxJTktTIFsgKF8sIGlkKSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5wb3AgaWQgYWNjIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSwgYWNjJyAtPiBNb2RzLkludE1hcC5hZGQgaWQgKChsaW5lLCByb3cpLCBzaXRlKSBhY2MnXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgdmEsIGFjYycgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhJyA9IChsaW5lLCByb3cpLCBzaXRlIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IHNldHVwX2xpbmsgb3V0IHZhIHZhJyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBzZXR1cF9saW5rIG91dCB2YScgdmEgaW5cbiAgICAgICAgICAgICAgICAgICAgYWNjJykpXG4gICAgICAgICAgICAgIGFjYyBub2RlX3NpdGVzKSlcbiAgICAgIE1vZHMuSW50TWFwLmVtcHR5IG91dFxuICBpblxuICBsZXQgKCkgPSBhc3NlcnQgKE1vZHMuSW50TWFwLmlzX2VtcHR5IGFjYykgaW5cbiAgb3V0XG5cbmxldCBpbml0X3RvX2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgSU5JVF9NSVggbSAtPlxuICAgIGBMaXN0IFsgYFN0cmluZyBcIm1peHR1cmVcIjsgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgZl9taXggbSBdXG4gIHwgSU5JVF9UT0sgdCAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJ0b2tlblwiO1xuICAgICAgICBKc29uVXRpbC5vZl9saXN0IChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBmX3ZhcikgdDtcbiAgICAgIF1cblxubGV0IGluaXRfb2ZfanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJtaXh0dXJlXCI7IG0gXSAtPlxuICAgIElOSVRfTUlYIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBtKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcInRva2VuXCI7IHQgXSAtPlxuICAgIElOSVRfVE9LXG4gICAgICAoSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiSU5JVF9UT0tcIilcbiAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX3ZhcilcbiAgICAgICAgIHQpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIEFzdCBpbml0IHN0YXRlbWVudFwiLCB4KSlcblxubGV0IHByaW50X3RvayBwcl9taXggcHJfdG9rIHByX3ZhciBmICgobmIsIF8pLCAobiwgXykpID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhICVhXCIgKEFsZ19leHByLnByaW50IHByX21peCBwcl90b2sgcHJfdmFyKSBuYiBwcl90b2sgblxuXG5sZXQgcHJpbnRfb25lX3NpemUgdGsgZiBtaXggPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEldCVhXCJcbiAgICAocHJpbnRfYXN0X21peCB+cHJpbnRfY291bnRlcilcbiAgICBtaXhcbiAgICAoZnVuIGYgLT5cbiAgICAgIG1hdGNoIHRrIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgXyA6OiBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiB8IFwiKVxuICAgIChQcC5saXN0XG4gICAgICAgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiArIFwiKVxuICAgICAgIChwcmludF90b2tcbiAgICAgICAgICAoZnVuIGYgbSAtPiBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiIChwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyKSBtKVxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmdcbiAgICAgICAgICAoZnVuIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJyVzJ1wiIHgpKSlcbiAgICB0a1xuXG5sZXQgcHJpbnRfYXJyb3cgZiBiaWRpciA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgIChpZiBiaWRpciB0aGVuXG4gICAgICAgXCI8LT5cIlxuICAgICBlbHNlXG4gICAgICAgXCItPlwiKVxuXG5sZXQgcHJpbnRfcmF3X3JhdGUgcHJfbWl4IHByX3RvayBwcl92YXIgb3AgZiAoZGVmLCBfKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSV0XCIgKEFsZ19leHByLnByaW50IHByX21peCBwcl90b2sgcHJfdmFyKSBkZWYgKGZ1biBmIC0+XG4gICAgICBtYXRjaCBvcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSAoZCwgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiwgJWFcIiAoQWxnX2V4cHIucHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpIGQpXG5cbmxldCBwcmludF9hc3RfYWxnX2V4cHIgPVxuICBBbGdfZXhwci5wcmludFxuICAgIChmdW4gZiBtIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCIgKHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXIpIG0pXG4gICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZ1xuICAgIChmdW4gZiB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCInJXMnXCIgeClcblxubGV0IHByaW50X3JhdGVzX29uZV9kaXIgdW4gZiBkZWYgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEldFwiXG4gICAgKHByaW50X3Jhd19yYXRlXG4gICAgICAgKGZ1biBmIG0gLT4gRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIiAocHJpbnRfYXN0X21peCB+cHJpbnRfY291bnRlcikgbSlcbiAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG4gICAgICAgKGZ1biBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiclcydcIiB4KVxuICAgICAgIE5vbmUpXG4gICAgZGVmXG4gICAgKGZ1biBmIC0+XG4gICAgICBtYXRjaCB1biB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSAoKGQsIF8pLCBtYXhfZGlzdCkgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiB7JWEldH1cIiBwcmludF9hc3RfYWxnX2V4cHIgZCAoZnVuIGYgLT5cbiAgICAgICAgICAgIFBwLm9wdGlvblxuICAgICAgICAgICAgICAoZnVuIGYgKG1kLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiOiVhXCIgcHJpbnRfYXN0X2FsZ19leHByIG1kKVxuICAgICAgICAgICAgICBmIG1heF9kaXN0KSlcblxubGV0IHByaW50X3J1bGVfY29udGVudCB+YmlkaXJlY3Rpb25hbCBmID0gZnVuY3Rpb25cbiAgfCBFZGl0IHIgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JWEgQF1cIiAocHJpbnRfb25lX3NpemUgci5kZWx0YV90b2tlbikgci5taXhcbiAgfCBBcnJvdyByIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JWEgJWFAICVhQF1cIlxuICAgICAgKHByaW50X29uZV9zaXplIHIucm1fdG9rZW4pXG4gICAgICByLmxocyBwcmludF9hcnJvdyBiaWRpcmVjdGlvbmFsXG4gICAgICAocHJpbnRfb25lX3NpemUgci5hZGRfdG9rZW4pXG4gICAgICByLnJoc1xuXG5sZXQgcHJpbnRfYXN0X3J1bGUgZiByID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JWEgQEAgJWEldEBdXCJcbiAgICAocHJpbnRfcnVsZV9jb250ZW50IH5iaWRpcmVjdGlvbmFsOnIuYmlkaXJlY3Rpb25hbCkgci5yZXdyaXRlXG4gICAgKHByaW50X3JhdGVzX29uZV9kaXIgci5rX3VuKSByLmtfZGVmIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggci5rX29wLCByLmtfb3BfdW4gd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+ICgpXG4gICAgICB8IE5vbmUsIF8gLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiAsICVhXCJcbiAgICAgICAgICAocHJpbnRfcmF0ZXNfb25lX2RpciByLmtfb3BfdW4pXG4gICAgICAgICAgKEFsZ19leHByLmNvbnN0IE5ici56ZXJvKVxuICAgICAgfCBTb21lIGEsIF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIiAsICVhXCIgKHByaW50X3JhdGVzX29uZV9kaXIgci5rX29wX3VuKSBhKVxuXG5sZXQgcHJpbnRfY29uZmlndXJhdGlvbiBmICgobiwgXyksIGwpID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSVkZWY6IFxcXCIlc1xcXCIgQFslYUBdQF1cIiBuXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmICh4LCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcIiVzXFxcIlwiIHgpKVxuICAgIGxcblxubGV0IHByaW50X2luaXQgZiA9IGZ1bmN0aW9uXG4gIHwgKG4sIF8pLCBJTklUX01JWCAobSwgXykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslJWluaXQ6IEBbJWFAXUAgQFslYUBdQF1cIiBwcmludF9hc3RfYWxnX2V4cHIgblxuICAgICAgKHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXIpXG4gICAgICBtXG4gIHwgKG4sIF8pLCBJTklUX1RPSyB0IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSVpbml0OiAlYSAlYUBdXCIgcHJpbnRfYXN0X2FsZ19leHByIG5cbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoeCwgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHgpKVxuICAgICAgdFxuXG5sZXQgcHJpbnRfYXN0X2Jvb2xfZXhwciA9XG4gIEFsZ19leHByLnByaW50X2Jvb2xcbiAgICAoZnVuIGYgbSAtPiBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiIChwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyKSBtKVxuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmdcbiAgICAoZnVuIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJyVzJ1wiIHgpXG5cbmxldCBwcmludF9wcmludF9leHByIGYgPVxuICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0ciwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCIlc1xcXCJcIiBzdHJcbiAgICB8IFByaW1pdGl2ZXMuQWxnX3BleHByIChhbGcsIF8pIC0+IHByaW50X2FzdF9hbGdfZXhwciBmIGFsZ1xuICBpblxuICBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgWyBQcmltaXRpdmVzLlN0cl9wZXhwciAoc3RyLCBfKSBdIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgXFxcIiVzXFxcIlwiIHN0clxuICB8IChbIFByaW1pdGl2ZXMuQWxnX3BleHByIF8gXSB8IF8gOjogXyA6OiBfKSBhcyBlIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkAgKEBbJWFAXSlcIlxuICAgICAgKFBwLmxpc3QgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIuXCIpIGF1eClcbiAgICAgIGVcblxubGV0IHByaW50X21vZGlmIGYgPSBmdW5jdGlvblxuICB8IEFQUExZICgobiwgXyksIChyLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJEFQUExZIEBbJWFAXSBAWyVhQF07XCIgcHJpbnRfYXN0X2FsZ19leHByIG5cbiAgICAgIChwcmludF9ydWxlX2NvbnRlbnQgfmJpZGlyZWN0aW9uYWw6ZmFsc2UpXG4gICAgICByLnJld3JpdGVcbiAgfCBVUERBVEUgKChzLCBfKSwgKG4sIF8pKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkVVBEQVRFICclc0AnIEBbJWFAXTtcIiBzIHByaW50X2FzdF9hbGdfZXhwciBuXG4gIHwgU1RPUCBwIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIkU1RPUCVhO1wiIHByaW50X3ByaW50X2V4cHIgcFxuICB8IFNOQVBTSE9UIChyYXcsIHApIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRTTkFQU0hPVCVhJXQ7XCIgcHJpbnRfcHJpbnRfZXhwciBwIChmdW4gZiAtPlxuICAgICAgICBpZiByYXcgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIgW3RydWVdXCIpXG4gIHwgUFJJTlQgKFtdLCB4KSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJFBSSU5URiVhXCIgcHJpbnRfcHJpbnRfZXhwciB4XG4gIHwgUFJJTlQgKGZpbGUsIHgpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRQUklOVEYlYSA+JWFcIiBwcmludF9wcmludF9leHByIHggcHJpbnRfcHJpbnRfZXhwciBmaWxlXG4gIHwgUExPVEVOVFJZIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiRQTE9UTk9XO1wiXG4gIHwgQ0ZMT1dMQUJFTCAob24sIChzLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFRSQUNLICclcycgJXM7XCIgc1xuICAgICAgKGlmIG9uIHRoZW5cbiAgICAgICAgIFwiW3RydWVdXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcIltmYWxzZV1cIilcbiAgfCBDRkxPV01JWCAob24sIChwLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFRSQUNLIEBbJWFAXSAlcztcIlxuICAgICAgKHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXIpXG4gICAgICBwXG4gICAgICAoaWYgb24gdGhlblxuICAgICAgICAgXCJbdHJ1ZV1cIlxuICAgICAgIGVsc2VcbiAgICAgICAgIFwiW2ZhbHNlXVwiKVxuICB8IERJTiAoaywgcCkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJERJTiVhICV0W3RydWVdXCIgcHJpbnRfcHJpbnRfZXhwciBwIChmdW4gZiAtPlxuICAgICAgICBtYXRjaCBrIHdpdGhcbiAgICAgICAgfCBQcmltaXRpdmVzLkFCU09MVVRFIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwiYWJzb2x1dGVcXFwiIFwiXG4gICAgICAgIHwgUHJpbWl0aXZlcy5SRUxBVElWRSAtPiAoKVxuICAgICAgICB8IFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJwcm9iYWJpbGl0eVxcXCIgXCIpXG4gIHwgRElOT0ZGIHAgLT4gRm9ybWF0LmZwcmludGYgZiBcIiRESU4lYSBbZmFsc2VdXCIgcHJpbnRfcHJpbnRfZXhwciBwXG4gIHwgU1BFQ0lFU19PRiAob24sIHAsIChtLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFNQRUNJRVNfT0YgQFslYUBdICVzID4lYTtcIlxuICAgICAgKHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXIpXG4gICAgICBtXG4gICAgICAoaWYgb24gdGhlblxuICAgICAgICAgXCJbdHJ1ZV1cIlxuICAgICAgIGVsc2VcbiAgICAgICAgIFwiW2ZhbHNlXVwiKVxuICAgICAgcHJpbnRfcHJpbnRfZXhwciBwXG5cbmxldCBwcmludF9wZXJ0dXJiYXRpb24gZiAoKGFsYXJtLCBjb25kLCBtb2RpZiwgcmVwKSwgXykgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFslJW1vZDolYSVhIGRvQCBAWyVhQF0lYUBdXCJcbiAgICAoUHAub3B0aW9uIChmdW4gZiBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJhbGFybSAlYVwiIE5ici5wcmludCBpKSlcbiAgICBhbGFybVxuICAgIChQcC5vcHRpb24gKGZ1biBmIChyLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFslYUBdXCIgcHJpbnRfYXN0X2Jvb2xfZXhwciByKSlcbiAgICBjb25kXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgcHJpbnRfbW9kaWYpXG4gICAgbW9kaWZcbiAgICAoUHAub3B0aW9uIChmdW4gZiAociwgXykgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJyZXBlYXQgQFslYUBdXCIgcHJpbnRfYXN0X2Jvb2xfZXhwciByKSlcbiAgICByZXBcblxubGV0IHByaW50X3BhcnNpbmdfY29tcGlsX2thcHBhIGYgYyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQCxALCVhQCwlYUAsQCwlYUAsQCwlYUAsJWFALEAsJWFALEAsJWFAXUAuXCJcbiAgICAoUHAubGlzdCBQcC5zcGFjZSBwcmludF9jb25maWd1cmF0aW9uKVxuICAgIGMuY29uZmlndXJhdGlvbnNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgYSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSVhZ2VudDpAIEBbJWFAXUBdXCJcbiAgICAgICAgICAgKHByaW50X2FzdF9hZ2VudCB+cHJpbnRfY291bnRlcjpwcmludF9jb3VudGVyX3NpZylcbiAgICAgICAgICAgYSkpXG4gICAgYy5zaWduYXR1cmVzXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIChzLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSV0b2tlbjogJXNcIiBzKSlcbiAgICBjLnRva2Vuc1xuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoKHMsIF8pLCAoYSwgXykpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslJXZhcjogJyVzJ0AgQFslYUBdQF1cIiBzIHByaW50X2FzdF9hbGdfZXhwciBhKSlcbiAgICBjLnZhcmlhYmxlc1xuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoYSwgXykgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyUlcGxvdDpAIEBbJWFAXUBdXCIgcHJpbnRfYXN0X2FsZ19leHByIGEpKVxuICAgIGMub2JzZXJ2YWJsZXNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKHMsIChyLCBfKSkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAW0BbJWElYUBdQF1cIlxuICAgICAgICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiAocywgXykgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJyVzJ0AgXCIgcykpXG4gICAgICAgICAgIHMgcHJpbnRfYXN0X3J1bGUgcikpXG4gICAgYy5ydWxlc1xuICAgIChQcC5saXN0IFBwLnNwYWNlIHByaW50X3BlcnR1cmJhdGlvbilcbiAgICBjLnBlcnR1cmJhdGlvbnNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSBwcmludF9pbml0KVxuICAgIGMuaW5pdFxuXG5sZXQgYXJyb3dfbm90YXRpb25fdG9feW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciByID1cbiAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICBbXG4gICAgICBcImxoc1wiLCBmX21peCByLmxocztcbiAgICAgICggXCJybV90b2tlblwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgKHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgci5ybV90b2tlbiApO1xuICAgICAgXCJyaHNcIiwgZl9taXggci5yaHM7XG4gICAgICAoIFwiYWRkX3Rva2VuXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICByLmFkZF90b2tlbiApO1xuICAgIF1cblxubGV0IGFycm93X25vdGF0aW9uX29mX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsIDw9IDQgLT5cbiAgICB7XG4gICAgICBsaHMgPSBmX21peCAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwibGhzXCIgeCk7XG4gICAgICBybV90b2tlbiA9XG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJybV90b2tlblwiIHgpO1xuICAgICAgcmhzID0gZl9taXggKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInJoc1wiIHgpO1xuICAgICAgYWRkX3Rva2VuID1cbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImFkZF90b2tlblwiIHgpO1xuICAgIH1cbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBhcnJvd19ub3RhdGlvblwiLCB4KSlcblxubGV0IGVkaXRfbm90YXRpb25fdG9feW9qc29uIGZpbGVuYW1lcyByID1cbiAgbGV0IG1peF90b19qc29uID1cbiAgICBKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9saXN0IChhZ2VudF90b19qc29uIGZpbGVuYW1lcykpXG4gIGluXG4gIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgW1xuICAgICAgXCJtaXhcIiwgbWl4X3RvX2pzb24gci5taXg7XG4gICAgICAoIFwiZGVsdGFfdG9rZW5cIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb24gSnNvblV0aWwub2Zfc3RyaW5nKSlcbiAgICAgICAgICAgICAoc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICByLmRlbHRhX3Rva2VuICk7XG4gICAgXVxuXG5sZXQgZWRpdF9ub3RhdGlvbl9vZl95b2pzb24gZmlsZW5hbWVzIHIgPVxuICBsZXQgbWl4X29mX2pzb24gPVxuICAgIEpzb25VdGlsLnRvX2xpc3QgKEpzb25VdGlsLnRvX2xpc3QgKGFnZW50X29mX2pzb24gZmlsZW5hbWVzKSlcbiAgaW5cbiAgbWF0Y2ggciB3aXRoXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPCAzIC0+XG4gICAge1xuICAgICAgbWl4ID0gbWl4X29mX2pzb24gKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcIm1peFwiIHgpO1xuICAgICAgZGVsdGFfdG9rZW4gPVxuICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBtaXhfb2ZfanNvblxuICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSkpXG4gICAgICAgICAgICAgKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZGVsdGFfdG9rZW5cIiB4KTtcbiAgICB9XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUIGVkaXRfbm90YXRpb25cIiwgeCkpXG5cbmxldCBydWxlX2NvbnRlbnRfdG9feW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgRWRpdCByIC0+IGBMaXN0IFsgYFN0cmluZyBcImVkaXRcIjsgZWRpdF9ub3RhdGlvbl90b195b2pzb24gZmlsZW5hbWVzIHIgXVxuICB8IEFycm93IHIgLT5cbiAgICBgTGlzdCBbIGBTdHJpbmcgXCJhcnJvd1wiOyBhcnJvd19ub3RhdGlvbl90b195b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyIHIgXVxuXG5sZXQgcnVsZV9jb250ZW50X29mX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYFN0cmluZyBcImVkaXRcIjsgciBdIC0+IEVkaXQgKGVkaXRfbm90YXRpb25fb2ZfeW9qc29uIGZpbGVuYW1lcyByKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcImFycm93XCI7IHIgXSAtPlxuICAgIEFycm93IChhcnJvd19ub3RhdGlvbl9vZl95b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyIHIpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUIHJ1bGUgY29udGVudFwiLCB4KSlcblxubGV0IHJ1bGVfdG9fanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgciA9XG4gIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgW1xuICAgICAgXCJyZXdyaXRlXCIsIHJ1bGVfY29udGVudF90b195b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyIHIucmV3cml0ZTtcbiAgICAgIFwiYmlkaXJlY3Rpb25hbFwiLCBgQm9vbCByLmJpZGlyZWN0aW9uYWw7XG4gICAgICAoIFwia19kZWZcIixcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICByLmtfZGVmICk7XG4gICAgICAoIFwia191blwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKSkpXG4gICAgICAgICAgci5rX3VuICk7XG4gICAgICAoIFwia19vcFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgci5rX29wICk7XG4gICAgICAoIFwia19vcF91blwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKSkpXG4gICAgICAgICAgci5rX29wX3VuICk7XG4gICAgXVxuXG5sZXQgcnVsZV9vZl9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPD0gNiAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICByZXdyaXRlID1cbiAgICAgICAgICAgcnVsZV9jb250ZW50X29mX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXJcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwicmV3cml0ZVwiIHgpO1xuICAgICAgICAgYmlkaXJlY3Rpb25hbCA9XG4gICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX2Jvb2xcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiYmlkaXJlY3Rpb25hbFwiIHgpO1xuICAgICAgICAga19kZWYgPVxuICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJrX2RlZlwiIHgpO1xuICAgICAgICAga191biA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpKSlcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwia191blwiIHgpO1xuICAgICAgICAga19vcCA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwia19vcFwiIHgpO1xuICAgICAgICAga19vcF91biA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpKSlcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwia19vcF91blwiIHgpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUIHJ1bGVcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBydWxlXCIsIHgpKVxuXG5sZXQgbW9kaWZfdG9fanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IEFQUExZIChhbGcsIHIpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIkFQUExZXCI7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgYWxnO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAocnVsZV90b19qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhcikgcjtcbiAgICAgIF1cbiAgfCBVUERBVEUgKGlkLCBhbGcpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIlVQREFURVwiO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBmX3ZhciBpZDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBhbGc7XG4gICAgICBdXG4gIHwgU1RPUCBsIC0+XG4gICAgYExpc3RcbiAgICAgIChgU3RyaW5nIFwiU1RPUFwiXG4gICAgICA6OiBMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBsKVxuICB8IFNOQVBTSE9UIChyYXcsIGwpIC0+XG4gICAgYExpc3RcbiAgICAgIChgU3RyaW5nXG4gICAgICAgICAoaWYgcmF3IHRoZW5cbiAgICAgICAgICAgIFwiUkFXX1NOQVBTSE9UXCJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBcIlNOQVBTSE9UXCIpXG4gICAgICA6OiBMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBsKVxuICB8IFBSSU5UIChmaWxlLCBleHByKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJQUklOVFwiO1xuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBmaWxlO1xuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBleHByO1xuICAgICAgXVxuICB8IFBMT1RFTlRSWSAtPiBgU3RyaW5nIFwiUExPVEVOVFJZXCJcbiAgfCBDRkxPV0xBQkVMIChiLCBpZCkgLT5cbiAgICBgTGlzdCBbIGBTdHJpbmcgXCJDRkxPV0xBQkVMXCI7IGBCb29sIGI7IHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcyBpZCBdXG4gIHwgQ0ZMT1dNSVggKGIsIG0pIC0+XG4gICAgYExpc3QgWyBgU3RyaW5nIFwiQ0ZMT1dcIjsgYEJvb2wgYjsgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgZl9taXggbSBdXG4gIHwgRElOIChiLCBmaWxlKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJESU5cIjtcbiAgICAgICAgUHJpbWl0aXZlcy5kaW5fa2luZF90b195b2pzb24gYjtcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgZmlsZTtcbiAgICAgIF1cbiAgfCBESU5PRkYgZmlsZSAtPlxuICAgIGBMaXN0XG4gICAgICAoYFN0cmluZyBcIkRJTk9GRlwiXG4gICAgICA6OiBMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBmaWxlXG4gICAgICApXG4gIHwgU1BFQ0lFU19PRiAoYiwgbCwgbSkgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiU1BFQ0lFU19PRlwiO1xuICAgICAgICBgQm9vbCBiO1xuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBsO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBmX21peCBtO1xuICAgICAgXVxuXG5sZXQgbW9kaWZfb2ZfanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkFQUExZXCI7IGFsZzsgbWl4IF0gLT5cbiAgICBBUFBMWVxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGFsZyxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAocnVsZV9vZl9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBtaXggKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIlVQREFURVwiOyBpZDsgYWxnIF0gLT5cbiAgICBVUERBVEVcbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl92YXIgaWQsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgYWxnIClcbiAgfCBgTGlzdCAoYFN0cmluZyBcIlNUT1BcIiA6OiBsKSAtPlxuICAgIFNUT1AgKExpc3QubWFwIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpIGwpXG4gIHwgYExpc3QgKGBTdHJpbmcgXCJTTkFQU0hPVFwiIDo6IGwpIC0+XG4gICAgU05BUFNIT1RcbiAgICAgICggZmFsc2UsXG4gICAgICAgIExpc3QubWFwIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpIGwgKVxuICB8IGBMaXN0IChgU3RyaW5nIFwiUkFXX1NOQVBTSE9UXCIgOjogbCkgLT5cbiAgICBTTkFQU0hPVFxuICAgICAgKHRydWUsIExpc3QubWFwIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpIGwpXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiUFJJTlRcIjsgZmlsZTsgZXhwciBdIC0+XG4gICAgUFJJTlRcbiAgICAgICggSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgZmlsZSxcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgZXhwciApXG4gIHwgYFN0cmluZyBcIlBMT1RFTlRSWVwiIC0+IFBMT1RFTlRSWVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkNGTE9XTEFCRUxcIjsgYEJvb2wgYjsgaWQgXSAtPlxuICAgIENGTE9XTEFCRUwgKGIsIHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzIGlkKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkNGTE9XXCI7IGBCb29sIGI7IG0gXSAtPlxuICAgIENGTE9XTUlYIChiLCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBtKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkRJTlwiOyBiOyBmaWxlIF0gLT5cbiAgICBESU5cbiAgICAgICggUHJpbWl0aXZlcy5kaW5fa2luZF9vZl95b2pzb24gYixcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgZmlsZSApXG4gIHwgYExpc3QgKGBTdHJpbmcgXCJESU5PRkZcIiA6OiBmaWxlKSAtPlxuICAgIERJTk9GRlxuICAgICAgKExpc3QubWFwIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpIGZpbGUpXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiU1BFQ0lFU19PRlwiOyBgQm9vbCBiOyBmaWxlOyBtIF0gLT5cbiAgICBTUEVDSUVTX09GXG4gICAgICAoIGIsXG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGZpbGUsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IG0gKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBtb2RpZmljYXRpb25cIiwgeCkpXG5cbmxldCBtZXJnZV9pbnRlcm5hbF9tb2QgYWNjID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGFjY1xuICB8IFNvbWUgKHgsIHBvcykgLT5cbiAgICBsZXQgeF9vcCA9IFNvbWUgeCBpblxuICAgIGlmIExpc3QuZXhpc3RzIChmdW4gKHgnLCBfKSAtPiB4X29wID0geCcpIGFjYyB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlXG4gICAgICAoeF9vcCwgcG9zKSA6OiBhY2NcblxubGV0IG1lcmdlX2ludGVybmFscyA9XG4gIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjICgoeCwgXykgYXMgeSkgLT5cbiAgICAgIGlmXG4gICAgICAgIHggPSBOb25lXG4gICAgICAgIHx8IExpc3QuZXhpc3RzXG4gICAgICAgICAgICAgKGZ1biAoeCcsIF8pIC0+XG4gICAgICAgICAgICAgICBPcHRpb25fdXRpbC5lcXVhbCAoZnVuIHggeCcgLT4gU3RyaW5nLmNvbXBhcmUgeCB4JyA9IDApIHggeCcpXG4gICAgICAgICAgICAgYWNjXG4gICAgICB0aGVuXG4gICAgICAgIGFjY1xuICAgICAgZWxzZVxuICAgICAgICB5IDo6IGFjYylcblxubGV0IHJlYyBtZXJnZV9zaXRlc19jb3VudGVyIGMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFsgQ291bnRlciBjIF1cbiAgfCBDb3VudGVyIGMnIDo6IF8gYXMgbCB3aGVuIGZzdCBjLmNvdW50ZXJfc2lnX25hbWUgPSBmc3QgYycuY291bnRlcl9zaWdfbmFtZVxuICAgIC0+XG4gICAgbFxuICB8ICgoUG9ydCBfIHwgQ291bnRlciBfKSBhcyBoKSA6OiB0IC0+IGggOjogbWVyZ2Vfc2l0ZXNfY291bnRlciBjIHRcblxubGV0IHJlYyBtZXJnZV9zaXRlc19wb3J0IHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IFsgUG9ydCB7IHAgd2l0aCBwb3J0X2xpbmsgPSBbXSB9IF1cbiAgfCBQb3J0IGggOjogdCB3aGVuIGZzdCBwLnBvcnRfbmFtZSA9IGZzdCBoLnBvcnRfbmFtZSAtPlxuICAgIFBvcnRcbiAgICAgIHtcbiAgICAgICAgaCB3aXRoXG4gICAgICAgIHBvcnRfaW50ID1cbiAgICAgICAgICBtZXJnZV9pbnRlcm5hbF9tb2RcbiAgICAgICAgICAgIChtZXJnZV9pbnRlcm5hbHMgaC5wb3J0X2ludCBwLnBvcnRfaW50KVxuICAgICAgICAgICAgcC5wb3J0X2ludF9tb2Q7XG4gICAgICB9XG4gICAgOjogdFxuICB8ICgoUG9ydCBfIHwgQ291bnRlciBfKSBhcyBoKSA6OiB0IC0+IGggOjogbWVyZ2Vfc2l0ZXNfcG9ydCBwIHRcblxubGV0IG1lcmdlX3NpdGVzID1cbiAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICB8IFBvcnQgcCAtPiBtZXJnZV9zaXRlc19wb3J0IHAgYWNjXG4gICAgfCBDb3VudGVyIGMgLT4gbWVyZ2Vfc2l0ZXNfY291bnRlciAoY291bnRlcl9zaWdfb2ZfY291bnRlciBjKSBhY2MpXG5cbmxldCBtZXJnZV9hZ2VudHMgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIChhY2MgOiBhZ2VudF9zaWcgbGlzdCkgLT4gZnVuY3Rpb25cbiAgICAgICB8IEFic2VudCBfIC0+IGFjY1xuICAgICAgIHwgUHJlc2VudCAoKChuYSwgXykgYXMgeCksIChzIDogY291bnRlciBzaXRlIGxpc3QpLCBfKSAtPlxuICAgICAgICAgbGV0IHJlYyBhdXggPSBmdW5jdGlvblxuICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgUHJlc2VudFxuICAgICAgICAgICAgICAgICAoIHgsXG4gICAgICAgICAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICB8IFBvcnQgcCAtPiBQb3J0IHsgcCB3aXRoIHBvcnRfbGluayA9IFtdIH1cbiAgICAgICAgICAgICAgICAgICAgICAgfCBDb3VudGVyIF8gYXMgeCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hcF9jb3VudGVyc19pbl9zaXRlIGNvdW50ZXJfc2lnX29mX2NvdW50ZXIgeClcbiAgICAgICAgICAgICAgICAgICAgIHMsXG4gICAgICAgICAgICAgICAgICAgTm9Nb2QgKTtcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgIHwgUHJlc2VudCAoKG5hJywgXyksIHMnLCBfKSA6OiB0IHdoZW4gU3RyaW5nLmNvbXBhcmUgbmEgbmEnID0gMCAtPlxuICAgICAgICAgICAgIFByZXNlbnQgKHgsIG1lcmdlX3NpdGVzIHMnIHMsIE5vTW9kKSA6OiB0XG4gICAgICAgICAgIHwgKChQcmVzZW50IF8gfCBBYnNlbnQgXykgYXMgaCkgOjogdCAtPiBoIDo6IGF1eCB0XG4gICAgICAgICBpblxuICAgICAgICAgYXV4IGFjYykpXG5cbmxldCBtZXJnZV90b2tlbnMgPVxuICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyAoXywgKChuYSwgXykgYXMgdG9rKSkgLT5cbiAgICAgIGxldCByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBbIHRvayBdXG4gICAgICAgIHwgKG5hJywgXykgOjogXyBhcyBsIHdoZW4gU3RyaW5nLmNvbXBhcmUgbmEgbmEnID0gMCAtPiBsXG4gICAgICAgIHwgaCA6OiB0IGFzIGwgLT5cbiAgICAgICAgICBsZXQgbyA9IGF1eCB0IGluXG4gICAgICAgICAgaWYgdCA9PSBvIHRoZW5cbiAgICAgICAgICAgIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBoIDo6IG9cbiAgICAgIGluXG4gICAgICBhdXggYWNjKVxuXG5sZXQgc2lnX2Zyb21faW5pdHMgPVxuICBMaXN0LmZvbGRfbGVmdCAoZnVuIChhZ3MsIHRva3MpIC0+IGZ1bmN0aW9uXG4gICAgfCBfLCBJTklUX01JWCAobSwgXykgLT4gbWVyZ2VfYWdlbnRzIGFncyBtLCB0b2tzXG4gICAgfCBuYSwgSU5JVF9UT0sgbCAtPiBhZ3MsIG1lcmdlX3Rva2VucyB0b2tzIChMaXN0Lm1hcCAoZnVuIHggLT4gbmEsIHgpIGwpKVxuXG5sZXQgc2lnX2Zyb21fcnVsZSAoYWdzLCB0b2tzKSByID1cbiAgbWF0Y2ggci5yZXdyaXRlIHdpdGhcbiAgfCBFZGl0IGUgLT4gbWVyZ2VfYWdlbnRzIGFncyBlLm1peCwgbWVyZ2VfdG9rZW5zIHRva3MgZS5kZWx0YV90b2tlblxuICB8IEFycm93IGEgLT5cbiAgICBsZXQgYWdzJywgdG9rcycgPVxuICAgICAgaWYgci5iaWRpcmVjdGlvbmFsIHRoZW5cbiAgICAgICAgbWVyZ2VfYWdlbnRzIGFncyBhLnJocywgbWVyZ2VfdG9rZW5zIHRva3MgYS5hZGRfdG9rZW5cbiAgICAgIGVsc2VcbiAgICAgICAgYWdzLCB0b2tzXG4gICAgaW5cbiAgICBtZXJnZV9hZ2VudHMgYWdzJyBhLmxocywgbWVyZ2VfdG9rZW5zIHRva3MnIGEucm1fdG9rZW5cblxubGV0IHNpZ19mcm9tX3J1bGVzID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBwIChfLCAociwgXykpIC0+IHNpZ19mcm9tX3J1bGUgcCByKVxuXG5sZXQgc2lnX2Zyb21fcGVydHMgPVxuICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyAoKF8sIF8sIHAsIF8pLCBfKSAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBwIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBBUFBMWSAoXywgKHIsIF8pKSAtPiBzaWdfZnJvbV9ydWxlIHAgclxuICAgICAgICAgIHwgVVBEQVRFIF8gfCBTVE9QIF8gfCBTTkFQU0hPVCBfIHwgUFJJTlQgXyB8IFBMT1RFTlRSWSB8IENGTE9XTEFCRUwgX1xuICAgICAgICAgIHwgQ0ZMT1dNSVggXyB8IERJTiBfIHwgRElOT0ZGIF8gfCBTUEVDSUVTX09GIF8gLT5cbiAgICAgICAgICAgIHApXG4gICAgICAgIGFjYyBwKVxuXG5sZXQgaW5mZXJfYWdlbnRfc2lnbmF0dXJlcyByID1cbiAgbGV0IGFjYyA9IHNpZ19mcm9tX2luaXRzIChyLnNpZ25hdHVyZXMsIHIudG9rZW5zKSByLmluaXQgaW5cbiAgbGV0IGFjYycgPSBzaWdfZnJvbV9ydWxlcyBhY2Mgci5ydWxlcyBpblxuICBsZXQgYWdzLCB0b2tzID0gc2lnX2Zyb21fcGVydHMgYWNjJyByLnBlcnR1cmJhdGlvbnMgaW5cbiAgeyByIHdpdGggc2lnbmF0dXJlcyA9IGFnczsgdG9rZW5zID0gdG9rcyB9XG5cbmxldCBzcGxpdF9taXh0dXJlIG0gPVxuICBMaXN0LmZvbGRfcmlnaHRcbiAgICAoZnVuIGwgKGxocywgcmhzKSAtPlxuICAgICAgbGV0IGxsLCByciA9XG4gICAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICAgIChmdW4gYWcgKChsaHMsIHJocykgYXMgcGFjaykgLT5cbiAgICAgICAgICAgIG1hdGNoIGFnIHdpdGhcbiAgICAgICAgICAgIHwgQWJzZW50IF8gLT4gcGFja1xuICAgICAgICAgICAgfCBQcmVzZW50ICgoKF8sIHBvcykgYXMgbmEpLCBpbnRmLCBtb2RpZikgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG1vZGlmIHdpdGhcbiAgICAgICAgICAgICAgfCBDcmVhdGUgLT4gQWJzZW50IHBvcyA6OiBsaHMsIFByZXNlbnQgKG5hLCBpbnRmLCBOb01vZCkgOjogcmhzXG4gICAgICAgICAgICAgIHwgRXJhc2UgLT4gUHJlc2VudCAobmEsIGludGYsIE5vTW9kKSA6OiBsaHMsIEFic2VudCBwb3MgOjogcmhzXG4gICAgICAgICAgICAgIHwgTm9Nb2QgLT5cbiAgICAgICAgICAgICAgICBsZXQgaW50ZmwsIGludGZyID1cbiAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKGwsIHIpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgfCBQb3J0IHAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggUG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbmFtZSA9IHAucG9ydF9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9pbnQgPSBwLnBvcnRfaW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9pbnRfbW9kID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbGluayA9IHAucG9ydF9saW5rO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9saW5rX21vZCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBQb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9uYW1lID0gcC5wb3J0X25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2ludCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBwLnBvcnRfaW50X21vZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBwLnBvcnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoeCwgcG9zKSAtPiBbIFNvbWUgeCwgcG9zIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9pbnRfbW9kID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbGluayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBwLnBvcnRfbGlua19tb2Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gcC5wb3J0X2xpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSAoaSwgcG9zKSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9saW5rX21vZCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6OiByIClcbiAgICAgICAgICAgICAgICAgICAgICB8IENvdW50ZXIgYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBDb3VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjIHdpdGggY291bnRlcl9kZWx0YSA9IExvYy5hbm5vdF93aXRoX2R1bW15IDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudGVyIHsgYyB3aXRoIGNvdW50ZXJfdGVzdCA9IE5vbmUgfSA6OiByICkpXG4gICAgICAgICAgICAgICAgICAgIChbXSwgW10pIGludGZcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICggUHJlc2VudCAobmEsIGludGZsLCBOb01vZCkgOjogbGhzLFxuICAgICAgICAgICAgICAgICAgUHJlc2VudCAobmEsIGludGZyLCBOb01vZCkgOjogcmhzICkpKVxuICAgICAgICAgIGwgKFtdLCBbXSlcbiAgICAgIGluXG4gICAgICBsbCA6OiBsaHMsIHJyIDo6IHJocylcbiAgICBtIChbXSwgW10pXG5cbmxldCBjb21waWxfdG9fanNvbiBjID1cbiAgbGV0IGZpbGVzID1cbiAgICBBcnJheS5vZl9saXN0IChMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfZm5hbWUgOjogYy5maWxlbmFtZXMpXG4gIGluXG4gIGxldCBmaWxlbmFtZXMgPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgIChmdW4gaSBtYXAgeCAtPiBNb2RzLlN0cmluZ01hcC5hZGQgeCBpIG1hcClcbiAgICAgIE1vZHMuU3RyaW5nTWFwLmVtcHR5IGZpbGVzXG4gIGluXG4gIGxldCBtaXhfdG9fanNvbiA9XG4gICAgSnNvblV0aWwub2ZfbGlzdCAoSnNvblV0aWwub2ZfbGlzdCAoYWdlbnRfdG9fanNvbiBmaWxlbmFtZXMpKVxuICBpblxuICBsZXQgdmFyX3RvX2pzb24gPSBKc29uVXRpbC5vZl9zdHJpbmcgaW5cbiAgYEFzc29jXG4gICAgW1xuICAgICAgXCJmaWxlbmFtZXNcIiwgSnNvblV0aWwub2ZfYXJyYXkgSnNvblV0aWwub2Zfc3RyaW5nIGZpbGVzO1xuICAgICAgXCJzaWduYXR1cmVzXCIsIEpzb25VdGlsLm9mX2xpc3QgKGFnZW50X3NpZ190b19qc29uIGZpbGVuYW1lcykgYy5zaWduYXR1cmVzO1xuICAgICAgXCJ0b2tlbnNcIiwgSnNvblV0aWwub2ZfbGlzdCAoc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKSBjLnRva2VucztcbiAgICAgICggXCJ2YXJpYWJsZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBtaXhfdG9fanNvbiB2YXJfdG9fanNvbikpKVxuICAgICAgICAgIGMudmFyaWFibGVzICk7XG4gICAgICAoIFwicnVsZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiAoc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAocnVsZV90b19qc29uIGZpbGVuYW1lcyBtaXhfdG9fanNvbiB2YXJfdG9fanNvbikpKVxuICAgICAgICAgIGMucnVsZXMgKTtcbiAgICAgICggXCJvYnNlcnZhYmxlc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb24gdmFyX3RvX2pzb24pKVxuICAgICAgICAgIGMub2JzZXJ2YWJsZXMgKTtcbiAgICAgICggXCJpbml0XCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uIHZhcl90b19qc29uKSlcbiAgICAgICAgICAgICAoaW5pdF90b19qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb24gdmFyX3RvX2pzb24pKVxuICAgICAgICAgIGMuaW5pdCApO1xuICAgICAgKCBcInBlcnR1cmJhdGlvbnNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoZnVuIChhbGFybSwgcHJlLCBtb2RpZiwgcG9zdCkgLT5cbiAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gTmJyLnRvX3lvanNvbiBhbGFybTtcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmJvb2xfdG9feW9qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcl90b19qc29uKSlcbiAgICAgICAgICAgICAgICAgICAgIHByZTtcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAobW9kaWZfdG9fanNvbiBmaWxlbmFtZXMgbWl4X3RvX2pzb24gdmFyX3RvX2pzb24pXG4gICAgICAgICAgICAgICAgICAgICBtb2RpZjtcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmJvb2xfdG9feW9qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcl90b19qc29uKSlcbiAgICAgICAgICAgICAgICAgICAgIHBvc3Q7XG4gICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIGMucGVydHVyYmF0aW9ucyApO1xuICAgICAgKCBcImNvbmZpZ3VyYXRpb25zXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX2xpc3QgKHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcykpKVxuICAgICAgICAgIGMuY29uZmlndXJhdGlvbnMgKTtcbiAgICBdXG5cbmxldCBjb21waWxfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA5IC0+XG4gICAgbGV0IHZhcl9vZl9qc29uID0gSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSBpblxuICAgICh0cnlcbiAgICAgICBsZXQgZmlsZW5hbWVzID1cbiAgICAgICAgIEpzb25VdGlsLnRvX2FycmF5XG4gICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgICAoTGlzdC5hc3NvYyBcImZpbGVuYW1lc1wiIGwpXG4gICAgICAgaW5cbiAgICAgICBsZXQgbWl4X29mX2pzb24gPVxuICAgICAgICAgSnNvblV0aWwudG9fbGlzdCAoSnNvblV0aWwudG9fbGlzdCAoYWdlbnRfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgIGluXG4gICAgICAge1xuICAgICAgICAgZmlsZW5hbWVzID0gTGlzdC50bCAoQXJyYXkudG9fbGlzdCBmaWxlbmFtZXMpO1xuICAgICAgICAgc2lnbmF0dXJlcyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJBU1Qgc2lnbmF0dXJlXCIpXG4gICAgICAgICAgICAgKGFnZW50X3NpZ19vZl9qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInNpZ25hdHVyZXNcIiBsKTtcbiAgICAgICAgIHRva2VucyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJBU1QgdG9rZW4gc2lnXCIpXG4gICAgICAgICAgICAgKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwidG9rZW5zXCIgbCk7XG4gICAgICAgICB2YXJpYWJsZXMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiQVNUIHZhcmlhYmxlc1wiKVxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uIHZhcl9vZl9qc29uKSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJ2YXJpYWJsZXNcIiBsKTtcbiAgICAgICAgIHJ1bGVzID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcIkFTVCBydWxlc1wiKVxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChydWxlX29mX2pzb24gZmlsZW5hbWVzIG1peF9vZl9qc29uIHZhcl9vZl9qc29uKSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJydWxlc1wiIGwpO1xuICAgICAgICAgb2JzZXJ2YWJsZXMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiQVNUIG9ic2VydmFibGVzXCIpXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgbWl4X29mX2pzb24gdmFyX29mX2pzb24pKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwib2JzZXJ2YWJsZXNcIiBsKTtcbiAgICAgICAgIGluaXQgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiQVNUIGluaXRcIilcbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uIHZhcl9vZl9qc29uKSlcbiAgICAgICAgICAgICAgICAoaW5pdF9vZl9qc29uIH5maWxlbmFtZXMgbWl4X29mX2pzb24gdmFyX29mX2pzb24pKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwiaW5pdFwiIGwpO1xuICAgICAgICAgcGVydHVyYmF0aW9ucyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJBU1QgcGVydHVyYmF0aW9uc1wiKVxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgYExpc3QgWyBhbGFybTsgcHJlOyBtb2RpZjsgcG9zdCBdIC0+XG4gICAgICAgICAgICAgICAgICggSnNvblV0aWwudG9fb3B0aW9uIE5ici5vZl95b2pzb24gYWxhcm0sXG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5ib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfb2ZfanNvbikpXG4gICAgICAgICAgICAgICAgICAgICBwcmUsXG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgICAgICAgICAgKG1vZGlmX29mX2pzb24gZmlsZW5hbWVzIG1peF9vZl9qc29uIHZhcl9vZl9qc29uKVxuICAgICAgICAgICAgICAgICAgICAgbW9kaWYsXG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5ib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfb2ZfanNvbikpXG4gICAgICAgICAgICAgICAgICAgICBwb3N0IClcbiAgICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBwZXJ0dXJiYXRpb25cIiwgeCkpKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInBlcnR1cmJhdGlvbnNcIiBsKTtcbiAgICAgICAgIGNvbmZpZ3VyYXRpb25zID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcIkFTVCBjb25maWd1cmF0aW9uXCIpXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAgICAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3QgKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJjb25maWd1cmF0aW9uc1wiIGwpO1xuICAgICAgICAgdm9sdW1lcyA9IFtdO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBBU1RcIiwgeCkpXG5cbmxldCB3cml0ZV9wYXJzaW5nX2NvbXBpbCBiIGFzdCA9IFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGIgKGNvbXBpbF90b19qc29uIGFzdClcbmxldCByZWFkX3BhcnNpbmdfY29tcGlsIHAgbGIgPSBjb21waWxfb2ZfanNvbiAoWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiKVxubGV0IHByaW50X2FzdF9taXggPSBwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHdpdGhfYWdlbnRfY291bnRlcnMgPSB7XG4gIGFnZW50OiAnYTtcbiAgY291bnRlcnM6IChBc3QuY291bnRlciAqIExLYXBwYS5zd2l0Y2hpbmcpIG9wdGlvbiBhcnJheTtcbn1cblxudHlwZSBydWxlX21peHR1cmVfd2l0aF9hZ2VudF9jb3VudGVycyA9XG4gIExLYXBwYS5ydWxlX2FnZW50IHdpdGhfYWdlbnRfY291bnRlcnMgbGlzdFxuXG50eXBlIHJhd19taXh0dXJlX3dpdGhfYWdlbnRfY291bnRlcnMgPVxuICBSYXdfbWl4dHVyZS5hZ2VudCB3aXRoX2FnZW50X2NvdW50ZXJzIGxpc3RcblxudHlwZSBjdmFyX3ZhbHVlID0geyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBpbnQgfVxuXG4oKiogW2NvbWJpbmF0aW9uc19vZl92YXJfc2V0dXAgbHMxIGxzMl1cbiAqIEVhY2ggZWxlbWVudCBvZiBbbHMxXSBkZXNjcmliZXMgYSBzZXR1cCBvZiBjb3VudGVyIHZhcmlhYmxlcywgd2l0aCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgdHVwbGUgYmVpbmcgdGhlIGxpc3Qgb2YgZW50aXRpZXMgdG8gYmUgdXNlZCBpbiB0aGUgbW9kZWwsIHdoZXJlIHZhcmlhYmxlcyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIGNvdW50ZXJzLCBhbmQgdGhlIHNlY29uZCBvbmUgdGhlIG1hcHBpbmcgb2YgdmFyaWFibGVzIHRvIHRoZWlyIHZhbHVlcywgdGhhdCBhbGxvd3MgdG8ga25vdyB3aGljaCBpbnN0YW5jZSBvZiBtb2RlbCBlbnRpdGllcyB3b3VsZCBiZSBjaG9zZW4gaW4gdGhpcyBnaXZlbiBzZXR1cC5cbiAqIFtsczJdIGFkZHMgYSBuZXcgZW50aXR5IHdpdGggZGlmZmVyZW50IGtpbmRzIGFjY29yZGluZyB0byB0aGUgdmFyaWFibGUgdmFsdWVzIGdpdmVuIGluIHRoZSBsaXN0IGFzIHNlY29uZCBtZW1iZXIgb2YgdGhlIHR1cGxlLCB3aGljaCBpcyB0aGVuIGNvbWJpbmVkIGluIHRoaXMgZnVuY3Rpb24gd2l0aCB0aGUgb3RoZXIgc2V0dXBzLCBjb21iaW5pbmcgdGhlIGRpZmZlcmVudCB2YXJpYWJsZSB2YWx1ZXMgd2hpY2ggdGhvc2UgYWxyZWFkeSBkZWZpbmVkLlxuICogTm8gY2hlY2sgaXMgZG9uZSBvbiB0aGUgdW5pY2l0eSBvZiB0aGUgZGVzY3JpYmVkIHZhcmlhYmxlcyBhbmQgdGhlaXIgdmFsdWVzICopXG5sZXQgY29tYmluYXRpb25zX29mX3Zhcl9zZXR1cCAobHMxIDogKCdhIGxpc3QgKiAnYiBsaXN0KSBsaXN0KVxuICAgIChsczIgOiAoJ2EgKiAnYiBsaXN0KSBsaXN0KSA6ICgnYSBsaXN0ICogJ2IgbGlzdCkgbGlzdCA9XG4gIGlmIGxzMSA9IFtdIHRoZW5cbiAgICByYWlzZSBFeGl0ICgqTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgKGIsIGRzKSAtPiAoWyBiIF0sIGRzKSA6OiBhY2MpIFtdIGxzMiopXG4gIGVsc2VcbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgKGEsIGNzKSAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYycgKGIsIGRzKSAtPiAoYiA6OiBhLCBkcyBAIGNzKSA6OiBhY2MnKSBhY2MgbHMyKVxuICAgICAgW10gbHMxXG5cbmxldCB1cGRhdGVfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgKGssIGEpID1cbiAgbGV0IHVwZGF0ZV9pZCBzIGsgPVxuICAgIGxldCBjb3VudGVyc19tYXRjaGluZ19zLCBfID1cbiAgICAgIExpc3QucGFydGl0aW9uXG4gICAgICAgIChmdW4gdmFyX3ZhbHVlIC0+IFN0cmluZy5jb21wYXJlIHMgdmFyX3ZhbHVlLm5hbWUgPSAwKVxuICAgICAgICBjb3VudGVyX3Zhcl92YWx1ZXNcbiAgICBpblxuICAgIG1hdGNoIGNvdW50ZXJzX21hdGNoaW5nX3Mgd2l0aFxuICAgIHwgWyB2YXJfdmFsdWUgXSAtPiBBbGdfZXhwci5DT05TVCAoTmJyLkkgdmFyX3ZhbHVlLnZhbHVlKVxuICAgIHwgW10gLT4ga1xuICAgIHwgXyA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJDb3VudGVyIHZhcmlhYmxlIFwiIF4gcyBeIFwiIGFwcGVhcnMgdHdpY2UgaW4gcnVsZVwiLCBMb2MuZHVtbXkpKVxuICBpblxuICBsZXQgcmVjIHVwZGF0ZV9ib29sX2V4cHIgayA9XG4gICAgbWF0Y2ggayB3aXRoXG4gICAgfCBBbGdfZXhwci5UUlVFIHwgQWxnX2V4cHIuRkFMU0UgLT4ga1xuICAgIHwgQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCAoazEsIGExKSwgKGsyLCBhMikpIC0+XG4gICAgICBBbGdfZXhwci5CSU5fQk9PTF9PUFxuICAgICAgICAob3AsICh1cGRhdGVfYm9vbF9leHByIGsxLCBhMSksICh1cGRhdGVfYm9vbF9leHByIGsyLCBhMikpXG4gICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChvcCwgKGssIGEpKSAtPlxuICAgICAgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsICh1cGRhdGVfYm9vbF9leHByIGssIGEpKVxuICAgIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIChrMSwgYTEpLCAoazIsIGEyKSkgLT5cbiAgICAgIEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCAodXBkYXRlX2V4cHIgazEsIGExKSwgKHVwZGF0ZV9leHByIGsyLCBhMikpXG4gIGFuZCB1cGRhdGVfZXhwciBrID1cbiAgICBtYXRjaCBrIHdpdGhcbiAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCAoazEsIGExKSwgKGsyLCBhMikpIC0+XG4gICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgKHVwZGF0ZV9leHByIGsxLCBhMSksICh1cGRhdGVfZXhwciBrMiwgYTIpKVxuICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgKGsxLCBhMSkpIC0+XG4gICAgICBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCAodXBkYXRlX2V4cHIgazEsIGExKSlcbiAgICB8IEFsZ19leHByLklGICgoazEsIGExKSwgKGsyLCBhMiksIChrMywgYTMpKSAtPlxuICAgICAgQWxnX2V4cHIuSUZcbiAgICAgICAgKCh1cGRhdGVfYm9vbF9leHByIGsxLCBhMSksICh1cGRhdGVfZXhwciBrMiwgYTIpLCAodXBkYXRlX2V4cHIgazMsIGEzKSlcbiAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gKChrMSwgYTEpLCBrMikgLT5cbiAgICAgIEFsZ19leHByLkRJRkZfVE9LRU4gKCh1cGRhdGVfZXhwciBrMSwgYTEpLCBrMilcbiAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKChrLCBhKSwgbSkgLT5cbiAgICAgIEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKCh1cGRhdGVfZXhwciBrLCBhKSwgbSlcbiAgICB8IEFsZ19leHByLkFMR19WQVIgaWQgfCBBbGdfZXhwci5UT0tFTl9JRCBpZCAtPiB1cGRhdGVfaWQgaWQga1xuICAgIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF8gfCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyAtPlxuICAgICAga1xuICBpblxuICB1cGRhdGVfZXhwciBrLCBhXG5cbmxldCBjb2xsZWN0X2lkcyBleHByX2xpc3QgOiBNb2RzLlN0cmluZ1NldC50ID1cbiAgbGV0IHJlYyBhdXhfZXhwciBleHByIGFjYyA9XG4gICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChfLCAoazEsIF8pLCAoazIsIF8pKSAtPiBhdXhfZXhwciBrMiAoYXV4X2V4cHIgazEgYWNjKVxuICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIChfLCAoazEsIF8pKVxuICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiAoKGsxLCBfKSwgXylcbiAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKChrMSwgXyksIF8pIC0+XG4gICAgICBhdXhfZXhwciBrMSBhY2NcbiAgICB8IEFsZ19leHByLklGICgoazEsIF8pLCAoazIsIF8pLCAoazMsIF8pKSAtPlxuICAgICAgYXV4X2V4cHIgazMgKGF1eF9leHByIGsyIChhdXhfYm9vbCBrMSBhY2MpKVxuICAgIHwgQWxnX2V4cHIuQUxHX1ZBUiBpZCB8IEFsZ19leHByLlRPS0VOX0lEIGlkIC0+IGF1eF9pZCBpZCBhY2NcbiAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gLT5cbiAgICAgIGFjY1xuICBhbmQgYXV4X2lkIGlkIGFjYyA9IE1vZHMuU3RyaW5nU2V0LmFkZCBpZCBhY2NcbiAgYW5kIGF1eF9ib29sIGV4cHIgYWNjID1cbiAgICBtYXRjaCBleHByIHdpdGhcbiAgICB8IEFsZ19leHByLlRSVUUgfCBBbGdfZXhwci5GQUxTRSAtPiBhY2NcbiAgICB8IEFsZ19leHByLkJJTl9CT09MX09QIChfLCAoazEsIF8pLCAoazIsIF8pKSAtPlxuICAgICAgYXV4X2Jvb2wgazIgKGF1eF9ib29sIGsxIGFjYylcbiAgICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKF8sIChrLCBfKSkgLT4gYXV4X2Jvb2wgayBhY2NcbiAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKF8sIChrMSwgXyksIChrMiwgXykpIC0+IGF1eF9leHByIGsyIChhdXhfZXhwciBrMSBhY2MpXG4gIGluXG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgZXhwcl9vcHQgLT5cbiAgICAgIG1hdGNoIGV4cHJfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgIHwgU29tZSAoZXhwciwgXykgLT4gYXV4X2V4cHIgZXhwciBhY2MpXG4gICAgTW9kcy5TdHJpbmdTZXQuZW1wdHkgZXhwcl9saXN0XG5cbmxldCBuYW1lX21hdGNoIChzLCBfKSAocycsIF8pID0gU3RyaW5nLmNvbXBhcmUgcyBzJyA9IDBcblxubGV0IHByZXBhcmVfYWdlbnQgcnNpdGVzIGxzaXRlcyA9XG4gIGxldCByZWMgcHJlcGFyZV9zaXRlIHNpdGVzIGMgPVxuICAgIG1hdGNoIHNpdGVzIHdpdGhcbiAgICB8IFtdIC0+IFsgQXN0LkNvdW50ZXIgYyBdXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgKG1hdGNoIGhkIHdpdGhcbiAgICAgIHwgQXN0LkNvdW50ZXIgYycgd2hlbiBuYW1lX21hdGNoIGMuQXN0LmNvdW50ZXJfbmFtZSBjJy5Bc3QuY291bnRlcl9uYW1lIC0+XG4gICAgICAgIEFzdC5Db3VudGVyIHsgYycgd2l0aCBBc3QuY291bnRlcl9kZWx0YSA9IGMuQXN0LmNvdW50ZXJfZGVsdGEgfSA6OiB0bFxuICAgICAgfCBBc3QuQ291bnRlciBfIHwgQXN0LlBvcnQgXyAtPiBoZCA6OiBwcmVwYXJlX3NpdGUgdGwgYylcbiAgaW5cbiAgbGV0IGNvdW50ZXJzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MnIHJzaXRlIC0+XG4gICAgICAgIG1hdGNoIHJzaXRlIHdpdGhcbiAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGFjYydcbiAgICAgICAgfCBBc3QuQ291bnRlciBjIC0+IGMgOjogYWNjJylcbiAgICAgIFtdIHJzaXRlc1xuICBpblxuICBMaXN0LmZvbGRfbGVmdCBwcmVwYXJlX3NpdGUgbHNpdGVzIGNvdW50ZXJzXG5cbigqIC0gYWRkIGluIHRoZSBsaHMgOiAoaSkgY291bnRlcnMgb25seSBtZW50aW9uZWQgaW4gdGhlIHJocyBhbmQgKGlpKSB0aGUgZGVsdGFzXG4gICAtIHN5bnRhY3RpYyBjaGVja3Mgb2Ygbm8gdGVzdCBpbiByaHM7IG5vIG1vZGlmIGluIGxocyAqKVxubGV0IHByZXBhcmVfY291bnRlcnMgcnVsZXMgPVxuICBsZXQgY2hlY2tfc3ludGF4IHNpdGVzIGYgZXJyb3IgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgQXN0LlBvcnQgXyAtPiAoKVxuICAgICAgICB8IEFzdC5Db3VudGVyIGMgLT5cbiAgICAgICAgICBpZiBmIGMgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKCBcIkNvdW50ZXIgXCIgXiBMb2MudiBjLkFzdC5jb3VudGVyX25hbWUgXiBlcnJvcixcbiAgICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGMuQXN0LmNvdW50ZXJfbmFtZSApKSlcbiAgICAgIHNpdGVzXG4gIGluXG5cbiAgbGV0IHJlYyBwcmVwYXJlX2xoc19ydWxlIHJocyBsaHMgPVxuICAgIG1hdGNoIHJocywgbGhzIHdpdGhcbiAgICB8IEFzdC5QcmVzZW50IChybmEsIHJzaXRlcywgXykgOjogciwgQXN0LlByZXNlbnQgKGxuYSwgbHNpdGVzLCBiKSA6OiBsIC0+XG4gICAgICBjaGVja19zeW50YXggbHNpdGVzXG4gICAgICAgIChmdW4gYyAtPiBub3QgKExvYy52IGMuY291bnRlcl9kZWx0YSA9IDApKVxuICAgICAgICBcIiBoYXMgYSBtb2RpZiBpbiB0aGUgbGhzXCI7XG4gICAgICBjaGVja19zeW50YXggcnNpdGVzXG4gICAgICAgIChmdW4gYyAtPiBub3QgKGMuY291bnRlcl90ZXN0ID0gTm9uZSkpXG4gICAgICAgIFwiIGhhcyBhIHRlc3QgaW4gdGhlIHJoc1wiO1xuICAgICAgaWYgU3RyaW5nLmNvbXBhcmUgKExvYy52IHJuYSkgKExvYy52IGxuYSkgPSAwIHRoZW4gKFxuICAgICAgICBsZXQgbHNpdGVzJyA9IHByZXBhcmVfYWdlbnQgcnNpdGVzIGxzaXRlcyBpblxuICAgICAgICBBc3QuUHJlc2VudCAobG5hLCBsc2l0ZXMnLCBiKSA6OiBwcmVwYXJlX2xoc19ydWxlIHIgbFxuICAgICAgKSBlbHNlXG4gICAgICAgIGxoc1xuICAgICAgKCpUT0RPIHdlIHN0b3Agb3VyIGpvYiBoZXJlLiBMS2FwcGFfY29tcGlsZXIgd2lsbCBkZXRlY3RcbiAgICAgICAgbGF0ZXIgdGhhdCB0aGVyZSBpcyBhIHByb2JsZW0gKilcbiAgICB8IF8gOjogciwgKEFzdC5BYnNlbnQgXyBhcyBsYWdlbnQpIDo6IGwgLT5cbiAgICAgICgqY3JlYXRlZCBhZ2VudCopXG4gICAgICAoKiBUT0RPIE1heWJlIHNvbWUgc3ludGF4IGNoZWNrIG9uIHJocyBhcmUgbmVjZXNzYXJ5IGhlcmUgKilcbiAgICAgIGxhZ2VudCA6OiBwcmVwYXJlX2xoc19ydWxlIHIgbFxuICAgIHwgQXN0LkFic2VudCBfIDo6IHIsIChBc3QuUHJlc2VudCAoXywgbHNpdGVzLCBfKSBhcyBsYWdlbnQpIDo6IGwgLT5cbiAgICAgICgqZGVsZXRlZCAgYWdlbnQqKVxuICAgICAgY2hlY2tfc3ludGF4IGxzaXRlc1xuICAgICAgICAoZnVuIGMgLT4gbm90IChMb2MudiBjLkFzdC5jb3VudGVyX2RlbHRhID0gMCkpXG4gICAgICAgIFwiIGhhcyBhIG1vZGlmIGluIHRoZSBsaHNcIjtcbiAgICAgIGxhZ2VudCA6OiBwcmVwYXJlX2xoc19ydWxlIHIgbFxuICAgIHwgW10sIHggLT5cbiAgICAgIHhcbiAgICAgICgqIFRPRE8geCBtdXN0IGJlIFtdIGJ1dCBpdCBpcyBmb3Igbm93IExLYXBwYV9jb21waWxlclxuICAgICAgICAgZHV0eSB0byBjb21wbGFpbiAqKVxuICAgIHwgX3gsIFtdIC0+ICgqVE9ETyBsZXQgKCkgPSBhc3NlcnQgKF94ID0gW10pIGluKikgW11cbiAgaW5cblxuICBsZXQgYXV4IChydWxlIDogQXN0LnJ1bGUpIDogQXN0LnJ1bGUgPVxuICAgIG1hdGNoIHJ1bGUucmV3cml0ZSB3aXRoXG4gICAgfCBBc3QuRWRpdCBfIC0+IHJ1bGVcbiAgICB8IEFzdC5BcnJvdyBjb250ZW50IC0+XG4gICAgICB7XG4gICAgICAgIHJ1bGUgd2l0aFxuICAgICAgICByZXdyaXRlID1cbiAgICAgICAgICBBc3QuQXJyb3dcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29udGVudCB3aXRoXG4gICAgICAgICAgICAgIEFzdC5saHMgPVxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIHByZXBhcmVfbGhzX3J1bGUgKExpc3QuZmxhdHRlbiBjb250ZW50LnJocylcbiAgICAgICAgICAgICAgICAgICAgKExpc3QuZmxhdHRlbiBjb250ZW50Lmxocyk7XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH07XG4gICAgICB9XG4gIGluXG4gIExpc3QubWFwIChmdW4gKHMsIChyLCBhKSkgLT4gcywgKGF1eCByLCBhKSkgcnVsZXNcblxubGV0IGNvdW50ZXJzX3NpZ25hdHVyZSBzIGFnZW50cyA9XG4gIG1hdGNoXG4gICAgTGlzdC5maW5kXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBBc3QuQWJzZW50IF8gLT4gZmFsc2VcbiAgICAgICAgfCBBc3QuUHJlc2VudCAocycsIF8sIF8pIC0+IG5hbWVfbWF0Y2ggcyBzJylcbiAgICAgIGFnZW50c1xuICB3aXRoXG4gIHwgQXN0LkFic2VudCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IEFzdC5QcmVzZW50IChfLCBzaXRlcycsIF8pIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIHMgLT5cbiAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIHwgQXN0LkNvdW50ZXIgYyAtPiBjIDo6IGFjY1xuICAgICAgICB8IEFzdC5Qb3J0IF8gLT4gYWNjKVxuICAgICAgW10gc2l0ZXMnXG5cbigqKiBbc3BsaXRfY3Zhcl9jb3VudGVyX2luX3J1bGVzX3Blcl92YWx1ZSB2YXJfbmFtZSBhbm5vdCBjb3VudGVyX2RlbHRhIGNvdW50ZXJfZGVmXSB0cmFuc2xhdGVzIGEgY291bnRlciBDVkFSIHdob3NlIHZhbHVlIGFjdHMgdXBvbiB0aGUgcmF0ZSBleHByZXNzaW9uIGludG8gYSBydWxlIHBlciBwb3NzaWJsZSB2YWx1ZSwgdGhhdCBhcmUgc2VsZWN0ZWQgYnkgYSBDRVHCoGV4cHJlc3Npb24uXG4gKiAqKVxubGV0IHNwbGl0X2N2YXJfY291bnRlcl9pbl9ydWxlc19wZXJfdmFsdWUgKHZhcl9uYW1lIDogc3RyaW5nKSAoYW5ub3QgOiBMb2MudClcbiAgICAoY291bnRlcl9kZWx0YSA6IGludCBMb2MuYW5ub3RlZCkgKGNvdW50ZXJfZGVmIDogQXN0LmNvdW50ZXJfc2lnKSA6XG4gICAgKEFzdC5jb3VudGVyIEFzdC5zaXRlICogY3Zhcl92YWx1ZSBsaXN0KSBsaXN0ID1cbiAgbGV0IChtaW5fdmFsdWUsIG1heF92YWx1ZSkgOiBpbnQgKiBpbnQgPVxuICAgIG1hdGNoIGNvdW50ZXJfZGVmLmNvdW50ZXJfc2lnX21pbiwgY291bnRlcl9kZWYuY291bnRlcl9zaWdfbWF4IHdpdGhcbiAgICB8IFNvbWUgKFNvbWUgbWluX2xvYywgXyksIFNvbWUgKFNvbWUgbWF4X2xvYywgXykgLT4gbWluX2xvYywgbWF4X2xvY1xuICAgIHwgKE5vbmUgfCBTb21lIChOb25lLCBfKSksIF8gfCBfLCAoTm9uZSB8IFNvbWUgKE5vbmUsIF8pKSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKCBcIkludmFsaWQgY291bnRlciBzaWduYXR1cmUgLSBoYXZlIHRvIHNwZWNpZnkgbWluL21heCBib3VuZFwiLFxuICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgY291bnRlcl9kZWYuY291bnRlcl9zaWdfbmFtZSApKVxuICBpblxuICAoKiBNYWtlIENFUSBjb3VudGVycyB3aXRoIGFsbCBwb3NzaWJsZSB2YWx1ZXMgb2YgdmFyaWFibGUgKilcbiAgbGV0IHJlYyBtYWtlX2NlcV9jb3VudGVyc19mcm9tX3Zhcl92YWx1ZXMgKHZhbHVlIDogaW50KSA6XG4gICAgICAoQXN0LmNvdW50ZXIgQXN0LnNpdGUgKiBjdmFyX3ZhbHVlIGxpc3QpIGxpc3QgPVxuICAgIGlmIHZhbHVlID4gbWF4X3ZhbHVlIHRoZW5cbiAgICAgIFtdXG4gICAgZWxzZSBpZlxuICAgICAgdmFsdWUgKyBMb2MudiBjb3VudGVyX2RlbHRhIDw9IG1heF92YWx1ZVxuICAgICAgJiYgdmFsdWUgKyBMb2MudiBjb3VudGVyX2RlbHRhID49IDBcbiAgICB0aGVuXG4gICAgICAoIEFzdC5Db3VudGVyXG4gICAgICAgICAge1xuICAgICAgICAgICAgQXN0LmNvdW50ZXJfbmFtZSA9IGNvdW50ZXJfZGVmLmNvdW50ZXJfc2lnX25hbWU7XG4gICAgICAgICAgICBjb3VudGVyX3Rlc3QgPSBTb21lIChBc3QuQ0VRIHZhbHVlLCBhbm5vdCk7XG4gICAgICAgICAgICBjb3VudGVyX2RlbHRhO1xuICAgICAgICAgIH0sXG4gICAgICAgIFsgeyBuYW1lID0gdmFyX25hbWU7IHZhbHVlIH0gXSApXG4gICAgICA6OiBtYWtlX2NlcV9jb3VudGVyc19mcm9tX3Zhcl92YWx1ZXMgKHZhbHVlICsgMSlcbiAgICBlbHNlXG4gICAgICBtYWtlX2NlcV9jb3VudGVyc19mcm9tX3Zhcl92YWx1ZXMgKHZhbHVlICsgMSlcbiAgaW5cbiAgbWFrZV9jZXFfY291bnRlcnNfZnJvbV92YXJfdmFsdWVzIG1pbl92YWx1ZVxuXG5sZXQgaGFzX2NvdW50ZXJzIGNvbXBpbCA9XG4gIExpc3QuZXhpc3RzXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEFzdC5BYnNlbnQgXyAtPiBmYWxzZVxuICAgICAgfCBBc3QuUHJlc2VudCAoXywgc2l0ZXMsIF8pIC0+XG4gICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEFzdC5Db3VudGVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGZhbHNlKVxuICAgICAgICAgIHNpdGVzKVxuICAgIGNvbXBpbC5Bc3Quc2lnbmF0dXJlc1xuXG4oKiogW3NwbGl0X2NvdW50ZXJfdmFyaWFibGVzX2ludG9fc2VwYXJhdGVfcnVsZXNdIH53YXJuaW5nIHJ1bGVzIHNpZ25hdHVyZXNdIHJlcGxhY2VzIGNvdW50ZXJzIHdpdGggQ1ZBUiBjb250cmFpbnRzIHdpdGggY291bnRlcnMgd2l0aCBDRVEgY29udHJhaW50cyBpbiBbcnVsZXNdLCBpbiBsaXN0cyB3aXRoIHRoZSB2YXJpYWJsZSB2YWx1ZXMgYXNzb2NpYXRlZCwgc28gdGhhdCBpbiBzaW11bGF0aW9uLCBjb3JyZWN0IGNvdW50ZXIgY29uZGl0aW9ucyBhcmUgYmVpbmcgc2VsZWN0ZWQuIFRoZSBtYWluIG9wZXJhdGlvbiBoYXBwZW5zIGluIFtzcGxpdF9jdmFyX2NvdW50ZXJfaW5fcnVsZXNfcGVyX3ZhbHVlXSAqKVxubGV0IHNwbGl0X2NvdW50ZXJfdmFyaWFibGVzX2ludG9fc2VwYXJhdGVfcnVsZXMgfndhcm5pbmcgcnVsZXMgc2lnbmF0dXJlcyA9XG4gIGxldCBzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9zaXRlIGlkcyBjb3VudGVyX2RlZnMgPSBmdW5jdGlvblxuICAgIHwgQXN0LlBvcnQgcCAtPiBbIEFzdC5Qb3J0IHAsIFtdIF1cbiAgICB8IEFzdC5Db3VudGVyIGMgLT5cbiAgICAgIGxldCBkZWx0YSA9IExvYy52IGMuQXN0LmNvdW50ZXJfZGVsdGEgaW5cbiAgICAgIChtYXRjaCBjLmNvdW50ZXJfdGVzdCB3aXRoXG4gICAgICB8IFNvbWUgKEFzdC5DRVEgdmFsdWUsIF8pIC0+XG4gICAgICAgIGlmIGRlbHRhID4gMCB8fCBhYnMgZGVsdGEgPD0gdmFsdWUgdGhlblxuICAgICAgICAgIFsgQXN0LkNvdW50ZXIgYywgW10gXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoIFwiQ291bnRlciBcIiBeIExvYy52IGMuY291bnRlcl9uYW1lIF4gXCIgYmVjb21lcyBuZWdhdGl2ZVwiLFxuICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGMuY291bnRlcl9uYW1lICkpXG4gICAgICB8IFNvbWUgKEFzdC5DTFRFIF92YWx1ZSwgX2Fubm90KSAtPlxuICAgICAgICBmYWlsd2l0aCBcIm5vdCBpbXBsZW1lbnRlZFwiICgqIFRPRE/CoE5PVyAqKVxuICAgICAgfCBTb21lIChBc3QuQ0dURSB2YWx1ZSwgYW5ub3QpIC0+XG4gICAgICAgIGlmIHZhbHVlICsgZGVsdGEgPCAwIHRoZW5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICggXCJDb3VudGVyIFwiIF4gTG9jLnYgYy5jb3VudGVyX25hbWUgXiBcIiBiZWNvbWVzIG5lZ2F0aXZlXCIsXG4gICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgYy5jb3VudGVyX25hbWUgKSk7XG4gICAgICAgIGlmIHZhbHVlID0gMCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IgPSBcIkNvdW50ZXIgXCIgXiBMb2MudiBjLmNvdW50ZXJfbmFtZSBeIFwiOj4wIGFsd2F5cyBob2xkc1wiIGluXG4gICAgICAgICAgd2FybmluZyB+cG9zOmFubm90IChmdW4gZiAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgZXJyb3IpXG4gICAgICAgICk7XG4gICAgICAgIFsgQXN0LkNvdW50ZXIgYywgW10gXVxuICAgICAgfCBTb21lIChBc3QuQ1ZBUiB2YXJfbmFtZSwgYW5ub3QpIHdoZW4gTW9kcy5TdHJpbmdTZXQubWVtIHZhcl9uYW1lIGlkcyAtPlxuICAgICAgICAoKiBJZiB0aGUgdmFyaWFibGUgaXMgcHJlc2VudCBpbiBhbiByYXRlIGRlZmluaXRpb24gZXhwcmVzc2lvbiAqKVxuICAgICAgICBsZXQgY291bnRlcl9kZWYgOiBBc3QuY291bnRlcl9zaWcgPVxuICAgICAgICAgIExpc3QuZmluZFxuICAgICAgICAgICAgKGZ1biBjb3VudGVyIC0+XG4gICAgICAgICAgICAgIG5hbWVfbWF0Y2ggYy5Bc3QuY291bnRlcl9uYW1lIGNvdW50ZXIuQXN0LmNvdW50ZXJfc2lnX25hbWUpXG4gICAgICAgICAgICBjb3VudGVyX2RlZnNcbiAgICAgICAgaW5cblxuICAgICAgICBzcGxpdF9jdmFyX2NvdW50ZXJfaW5fcnVsZXNfcGVyX3ZhbHVlIHZhcl9uYW1lIGFubm90IGMuY291bnRlcl9kZWx0YVxuICAgICAgICAgIGNvdW50ZXJfZGVmXG4gICAgICB8IE5vbmUgfCBTb21lIChBc3QuQ1ZBUiBfLCBfKSAtPlxuICAgICAgICBpZiBkZWx0YSA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGNvdW50ZXJfZGVsdGEgOiBBc3QuY291bnRlciA9XG4gICAgICAgICAgICB7IGMgd2l0aCBjb3VudGVyX3Rlc3QgPSBTb21lIChBc3QuQ0dURSAoYWJzIGRlbHRhKSwgTG9jLmR1bW15KSB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBbIEFzdC5Db3VudGVyIGNvdW50ZXJfZGVsdGEsIFtdIF1cbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKCBBc3QuQ291bnRlciB7IGMgd2l0aCBjb3VudGVyX3Rlc3QgPSBTb21lIChBc3QuQ0dURSAwLCBMb2MuZHVtbXkpIH0sXG4gICAgICAgICAgICAgIFtdICk7XG4gICAgICAgICAgXSlcbiAgaW5cblxuICBsZXQgcmVjIHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3NpdGVzIChpZHMgOiBNb2RzLlN0cmluZ1NldC50KVxuICAgICAgKGNvdW50ZXJfZGVmcyA6IEFzdC5jb3VudGVyX3NpZyBsaXN0KSA6XG4gICAgICBBc3QuY291bnRlciBBc3Quc2l0ZSBsaXN0IC0+XG4gICAgICAoQXN0LmNvdW50ZXIgQXN0LnNpdGUgbGlzdCAqIGN2YXJfdmFsdWUgbGlzdCkgbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbIFtdLCBbXSBdXG4gICAgfCBzIDo6IHQgLT5cbiAgICAgIGNvbWJpbmF0aW9uc19vZl92YXJfc2V0dXBcbiAgICAgICAgKHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3NpdGVzIGlkcyBjb3VudGVyX2RlZnMgdClcbiAgICAgICAgKHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3NpdGUgaWRzIGNvdW50ZXJfZGVmcyBzKVxuICBpblxuICBsZXQgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfYWdlbnQgKGlkcyA6IE1vZHMuU3RyaW5nU2V0LnQpIDpcbiAgICAgIEFzdC5hZ2VudCAtPiAoQXN0LmFnZW50ICogY3Zhcl92YWx1ZSBsaXN0KSBsaXN0ID0gZnVuY3Rpb25cbiAgICB8IEFzdC5BYnNlbnQgbCAtPiBbIEFzdC5BYnNlbnQgbCwgW10gXVxuICAgIHwgQXN0LlByZXNlbnQgKGFnZW50X25hbWUsIHNpdGVzLCBtb2RpZikgLT5cbiAgICAgIGxldCBjb3VudGVyX2RlZnMgPSBjb3VudGVyc19zaWduYXR1cmUgYWdlbnRfbmFtZSBzaWduYXR1cmVzIGluXG4gICAgICBsZXQgc2l0ZXNfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVzID1cbiAgICAgICAgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfc2l0ZXMgaWRzIGNvdW50ZXJfZGVmcyBzaXRlc1xuICAgICAgaW5cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4gKHNpdGVzJywgdmFyX3ZhbHVlcykgLT5cbiAgICAgICAgICBBc3QuUHJlc2VudCAoYWdlbnRfbmFtZSwgc2l0ZXMnLCBtb2RpZiksIHZhcl92YWx1ZXMpXG4gICAgICAgIHNpdGVzX2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlc1xuICBpblxuICBsZXQgcmVjIHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX21peHR1cmUgKGlkcyA6IE1vZHMuU3RyaW5nU2V0LnQpIDpcbiAgICAgIEFzdC5hZ2VudCBsaXN0IC0+IChBc3QuYWdlbnQgbGlzdCAqIGN2YXJfdmFsdWUgbGlzdCkgbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbIFtdLCBbXSBdXG4gICAgfCBhc3RfYWdlbnQgOjogdCAtPlxuICAgICAgY29tYmluYXRpb25zX29mX3Zhcl9zZXR1cFxuICAgICAgICAoc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfbWl4dHVyZSBpZHMgdClcbiAgICAgICAgKHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX2FnZW50IGlkcyBhc3RfYWdlbnQpXG4gIGluXG5cbiAgbGV0IHVwZGF0ZV9vcHRfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHIgLT4gU29tZSAodXBkYXRlX3JhdGUgY291bnRlcl92YXJfdmFsdWVzIHIpXG4gIGluXG4gIGxldCB1cGRhdGVfcGFpcl9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKHIxLCByMikgLT5cbiAgICAgIFNvbWVcbiAgICAgICAgKCB1cGRhdGVfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgcjEsXG4gICAgICAgICAgdXBkYXRlX29wdF9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyByMiApXG4gIGluXG5cbiAgKCogVE9ETyBbc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfcnVsZV0gcnVsZSBldmFsdWVzIHRvIGEgbGlzdCBvZiBydWxlcyB3aXRoIHRoZWlyIG5hbWVzICopXG4gIGxldCBzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9ydWxlXG4gICAgICAocnVsZV9uYW1lIDogc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbilcbiAgICAgICgocnVsZSwgYW5ub3QpIDogQXN0LnJ1bGUgTG9jLmFubm90ZWQpIDpcbiAgICAgIChzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uICogQXN0LnJ1bGUgTG9jLmFubm90ZWQpIGxpc3QgPVxuICAgIGxldCBtaXhfbGhzID1cbiAgICAgIG1hdGNoIHJ1bGUucmV3cml0ZSB3aXRoXG4gICAgICB8IEFzdC5FZGl0IGNvbnRlbnQgLT4gY29udGVudC5taXhcbiAgICAgIHwgQXN0LkFycm93IGNvbnRlbnQgLT4gY29udGVudC5saHNcbiAgICBpblxuXG4gICAgKCogRmV0Y2ggaWRzIGZyb20gcnVsZSByYXRlcyAqKVxuICAgIGxldCBleHByc19mcm9tX3JhdGVzIDpcbiAgICAgICAgKEFzdC5taXh0dXJlLCBzdHJpbmcpIEthcHBhX3Rlcm1zLkFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uIGxpc3QgPVxuICAgICAgWyBTb21lIHJ1bGUua19kZWY7IHJ1bGUua19vcCBdXG4gICAgICBAIChtYXRjaCBydWxlLmtfdW4gd2l0aFxuICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgfCBTb21lIHJfa3VuX3JhdGVzIC0+IFsgU29tZSAoZnN0IHJfa3VuX3JhdGVzKTsgc25kIHJfa3VuX3JhdGVzIF0pXG4gICAgICBAXG4gICAgICBtYXRjaCBydWxlLmtfb3BfdW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgcl9rX29wX3VuX3JhdGVzIC0+XG4gICAgICAgIFsgU29tZSAoZnN0IHJfa19vcF91bl9yYXRlcyk7IHNuZCByX2tfb3BfdW5fcmF0ZXMgXVxuICAgIGluXG4gICAgbGV0IGlkcyA9IGNvbGxlY3RfaWRzIGV4cHJzX2Zyb21fcmF0ZXMgaW5cblxuICAgIGxldCBtaXh0dXJlX2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlIDpcbiAgICAgICAgKEFzdC5hZ2VudCBsaXN0ICogY3Zhcl92YWx1ZSBsaXN0KSBsaXN0ID1cbiAgICAgIHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX21peHR1cmUgaWRzIChMaXN0LmZsYXR0ZW4gbWl4X2xocylcbiAgICBpblxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIChsaHMsIGNvdW50ZXJfdmFyX3ZhbHVlcykgLT5cbiAgICAgICAgKCogQXBwbHkgY291bnRlciB2YXIgdmFsdWVzIHRvIHJhdGVzICopXG4gICAgICAgIGxldCBrX2RlZiA9IHVwZGF0ZV9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyBydWxlLmtfZGVmIGluXG4gICAgICAgIGxldCBrX3VuID0gdXBkYXRlX3BhaXJfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgcnVsZS5rX3VuIGluXG4gICAgICAgIGxldCBrX29wID0gdXBkYXRlX29wdF9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyBydWxlLmtfb3AgaW5cbiAgICAgICAgbGV0IGtfb3BfdW4gPSB1cGRhdGVfcGFpcl9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyBydWxlLmtfb3BfdW4gaW5cbiAgICAgICAgbGV0IGxocyA9IFsgbGhzIF0gaW5cbiAgICAgICAgbGV0IG5ld19ydWxlX25hbWUgOiBzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uID1cbiAgICAgICAgICBpZiBjb3VudGVyX3Zhcl92YWx1ZXMgPSBbXSB0aGVuXG4gICAgICAgICAgICBydWxlX25hbWVcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICgqIEJ1aWxkIGNvdW50ZXJzX2lkc19hc19zdHJpbmcsIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGJ1aWxkIG5ldyBydWxlIG5hbWVzICopXG4gICAgICAgICAgICBsZXQgY291bnRlcnNfaWRzX2FzX3N0cmluZyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKCogVE9ETyBzaG91bGQgd2UgYWRkIGEgc2VwYXJhdG9yLiBtYXliZSBhbHNvIGFkZCBuYW1lIG9mIHZhcmlhYmxlPyAqKVxuICAgICAgICAgICAgICAgICAgKGZ1biBhY2MgdmFyX3ZhbHVlIC0+IHN0cmluZ19vZl9pbnQgdmFyX3ZhbHVlLnZhbHVlIF4gYWNjKVxuICAgICAgICAgICAgICAgIFwiXCIgY291bnRlcl92YXJfdmFsdWVzXG4gICAgICAgICAgICBpblxuXG4gICAgICAgICAgICBtYXRjaCBydWxlX25hbWUgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmUgKCogTm8gcnVsZSBuYW1lLCBuZXcgcnVsZXMgd2lsbCBoYXZlIG5vIG5hbWUgdG9vICopXG4gICAgICAgICAgICB8IFNvbWUgKHJ1bGVfbmFtZV9zdHJpbmcsIGxvY2FsaXR5KSAtPlxuICAgICAgICAgICAgICAoKiBNYWtlIGEgbmV3IG5hbWUgZm9yIG5ldyBydWxlIGluY2x1ZGluZyBjb3VudGVyX3Zhcl92YWx1ZXMgaW5mbyAqKVxuICAgICAgICAgICAgICBTb21lIChydWxlX25hbWVfc3RyaW5nIF4gXCJfX1wiIF4gY291bnRlcnNfaWRzX2FzX3N0cmluZywgbG9jYWxpdHkpXG4gICAgICAgICAgKVxuICAgICAgICBpblxuXG4gICAgICAgICggbmV3X3J1bGVfbmFtZSxcbiAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgQXN0LnJld3JpdGUgPVxuICAgICAgICAgICAgICAgIChtYXRjaCBydWxlLnJld3JpdGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgQXN0LkVkaXQgY29udGVudCAtPiBBc3QuRWRpdCB7IGNvbnRlbnQgd2l0aCBBc3QubWl4ID0gbGhzIH1cbiAgICAgICAgICAgICAgICB8IEFzdC5BcnJvdyBjb250ZW50IC0+IEFzdC5BcnJvdyB7IGNvbnRlbnQgd2l0aCBBc3QubGhzIH0pO1xuICAgICAgICAgICAgICBiaWRpcmVjdGlvbmFsID0gcnVsZS5iaWRpcmVjdGlvbmFsO1xuICAgICAgICAgICAgICBrX2RlZjtcbiAgICAgICAgICAgICAga191bjtcbiAgICAgICAgICAgICAga19vcDtcbiAgICAgICAgICAgICAga19vcF91bjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhbm5vdCApICkpXG4gICAgICBtaXh0dXJlX2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlXG4gIGluXG5cbiAgbGV0IHJ1bGVzID0gcHJlcGFyZV9jb3VudGVycyBydWxlcyBpblxuXG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgKHJ1bGVfbmFtZSwgcnVsZV9hbm5vdGVkKSAtPlxuICAgICAgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfcnVsZSBydWxlX25hbWUgcnVsZV9hbm5vdGVkIEAgYWNjKVxuICAgIFtdIHJ1bGVzXG4gICgqIFRPRE86IGlzIHJldiByZWxldmFudCBoZXJlPyAqKVxuICB8PiBMaXN0LnJldlxuXG5sZXQgc3BsaXRfY291bnRlcl92YXJpYWJsZXNfaW50b19zZXBhcmF0ZV9ydWxlcyB+d2FybmluZyB+ZGVidWdfbW9kZVxuICAgIChjb21waWwgOiBBc3QucGFyc2luZ19jb21waWwpID1cbiAgbGV0IHJ1bGVzID1cbiAgICBzcGxpdF9jb3VudGVyX3ZhcmlhYmxlc19pbnRvX3NlcGFyYXRlX3J1bGVzIH53YXJuaW5nIGNvbXBpbC5ydWxlc1xuICAgICAgY29tcGlsLnNpZ25hdHVyZXNcbiAgaW5cbiAgKCogRGVidWcgcHJpbnRpbmcgKilcbiAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICBGb3JtYXQucHJpbnRmIFwiQC5hc3QgcnVsZXNALlwiO1xuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAocywgKHIsIF8pKSAtPlxuICAgICAgICBsZXQgbGFiZWwgPVxuICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgfCBTb21lIChsLCBfKSAtPiBsXG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5wcmludGYgXCJALiVzID0gJWFcIiBsYWJlbCBBc3QucHJpbnRfYXN0X3J1bGUgcilcbiAgICAgIHJ1bGVzXG4gICk7XG4gIHsgY29tcGlsIHdpdGggQXN0LnJ1bGVzIH1cblxubGV0IG1ha2VfY291bnRlcl9hZ2VudCBzaWdzIChpc19maXJzdCwgKGRzdCwgcmFfZXJhc2VkKSkgKGlzX2xhc3QsIGVxdWFsKSBpIGpcbiAgICBsb2MgKGNyZWF0ZWQgOiBib29sKSA6IExLYXBwYS5ydWxlX2FnZW50ID1cbiAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgbGV0IHBvcnRfYiwgcG9ydF9hID0gY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gIGxldCByYV90eXBlID0gY291bnRlcl9hZ2VudF9pbmZvLmlkIGluXG5cbiAgbGV0IHJhX3BvcnRzID1cbiAgICBBcnJheS5tYWtlIGNvdW50ZXJfYWdlbnRfaW5mby5hcml0eVxuICAgICAgKChMS2FwcGEuTE5LX0ZSRUUsIGxvYyksIExLYXBwYS5NYWludGFpbmVkKVxuICBpblxuICBsZXQgYmVmb3JlX3N3aXRjaCA9XG4gICAgaWYgaXNfZmlyc3QgdGhlblxuICAgICAgaWYgY3JlYXRlZCB0aGVuXG4gICAgICAgIExLYXBwYS5MaW5rZWQgaVxuICAgICAgZWxzZSBpZiByYV9lcmFzZWQgdGhlblxuICAgICAgICBMS2FwcGEuRXJhc2VkXG4gICAgICBlbHNlXG4gICAgICAgIExLYXBwYS5NYWludGFpbmVkXG4gICAgZWxzZVxuICAgICAgTEthcHBhLk1haW50YWluZWRcbiAgaW5cbiAgbGV0IGJlZm9yZSA9XG4gICAgaWYgaXNfZmlyc3QgdGhlblxuICAgICAgTEthcHBhLkxOS19WQUxVRSAoaSwgZHN0KSwgbG9jXG4gICAgZWxzZVxuICAgICAgTEthcHBhLkxOS19WQUxVRSAoaSwgKHJhX3R5cGUsIHBvcnRfYSkpLCBsb2NcbiAgaW5cbiAgbGV0ICgpID0gcmFfcG9ydHMuKHBvcnRfYikgPC0gYmVmb3JlLCBiZWZvcmVfc3dpdGNoIGluXG4gIGxldCBhZnRlciA9XG4gICAgaWYgaXNfbGFzdCAmJiBlcXVhbCB0aGVuXG4gICAgICBMS2FwcGEuTE5LX0ZSRUUsIGxvY1xuICAgIGVsc2UgaWYgaXNfbGFzdCB0aGVuXG4gICAgICBMS2FwcGEuTE5LX0FOWSwgbG9jXG4gICAgZWxzZVxuICAgICAgTEthcHBhLkxOS19WQUxVRSAoaiwgKHJhX3R5cGUsIHBvcnRfYikpLCBsb2NcbiAgaW5cbiAgbGV0ICgpID1cbiAgICByYV9wb3J0cy4ocG9ydF9hKSA8LVxuICAgICAgKCBhZnRlcixcbiAgICAgICAgaWYgcmFfZXJhc2VkIHRoZW5cbiAgICAgICAgICBMS2FwcGEuRXJhc2VkXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZCApXG4gIGluXG4gIGxldCByYV9pbnRzID0gQXJyYXkubWFrZSBjb3VudGVyX2FnZW50X2luZm8uYXJpdHkgTEthcHBhLklfQU5ZIGluXG4gIHtcbiAgICBMS2FwcGEucmFfdHlwZTtcbiAgICByYV9lcmFzZWQ7XG4gICAgcmFfcG9ydHM7XG4gICAgcmFfaW50cztcbiAgICByYV9zeW50YXggPSBTb21lIChBcnJheS5jb3B5IHJhX3BvcnRzLCBBcnJheS5jb3B5IHJhX2ludHMpO1xuICB9XG5cbmxldCByYXdfY291bnRlcl9hZ2VudCAoaXNfZmlyc3QsIGZpcnN0X2xpbmspIChpc19sYXN0LCBsYXN0X2xpbmspIGkgaiBzaWdzIGVxdWFsXG4gICAgOiBSYXdfbWl4dHVyZS5hZ2VudCA9XG4gIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gIGxldCBwb3J0X2IsIHBvcnRfYSA9IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICBsZXQgcG9ydHMgPSBBcnJheS5tYWtlIGNvdW50ZXJfYWdlbnRfaW5mby5hcml0eSBSYXdfbWl4dHVyZS5GUkVFIGluXG4gIGxldCBpbnRlcm5hbHMgPVxuICAgIEFycmF5LmluaXQgY291bnRlcl9hZ2VudF9pbmZvLmFyaXR5IChmdW4gaSAtPlxuICAgICAgICBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSBjb3VudGVyX2FnZW50X2luZm8uaWQgaSBzaWdzKVxuICBpblxuICBsZXQgYmVmb3JlID1cbiAgICBpZiBpc19maXJzdCB0aGVuXG4gICAgICBSYXdfbWl4dHVyZS5WQUwgZmlyc3RfbGlua1xuICAgIGVsc2VcbiAgICAgIFJhd19taXh0dXJlLlZBTCBpXG4gIGluXG4gIGxldCAoKSA9IHBvcnRzLihwb3J0X2IpIDwtIGJlZm9yZSBpblxuICBsZXQgYWZ0ZXIgPVxuICAgIGlmIGlzX2xhc3QgJiYgZXF1YWwgdGhlblxuICAgICAgUmF3X21peHR1cmUuRlJFRVxuICAgIGVsc2UgaWYgaXNfbGFzdCB0aGVuXG4gICAgICBSYXdfbWl4dHVyZS5WQUwgbGFzdF9saW5rXG4gICAgZWxzZVxuICAgICAgUmF3X21peHR1cmUuVkFMIGpcbiAgaW5cbiAgbGV0ICgpID0gcG9ydHMuKHBvcnRfYSkgPC0gYWZ0ZXIgaW5cbiAge1xuICAgIFJhd19taXh0dXJlLmFfdHlwZSA9IGNvdW50ZXJfYWdlbnRfaW5mby5pZDtcbiAgICBSYXdfbWl4dHVyZS5hX3BvcnRzID0gcG9ydHM7XG4gICAgUmF3X21peHR1cmUuYV9pbnRzID0gaW50ZXJuYWxzO1xuICB9XG5cbmxldCByZWMgYWRkX2luY3IgKGkgOiBpbnQpIChmaXJzdF9saW5rIDogaW50KSAobGFzdF9saW5rIDogaW50KSAoZGVsdGEgOiBpbnQpXG4gICAgKGVxdWFsIDogYm9vbCkgKHNpZ3MgOiBTaWduYXR1cmUucykgOiBSYXdfbWl4dHVyZS5hZ2VudCBsaXN0ID1cbiAgaWYgaSA9IGRlbHRhIHRoZW5cbiAgICBbXVxuICBlbHNlIChcbiAgICBsZXQgaXNfZmlyc3QgPSBpID0gMCBpblxuICAgIGxldCBpc19sYXN0ID0gaSA9IGRlbHRhIC0gMSBpblxuICAgIGxldCByYXdfaW5jciA9XG4gICAgICByYXdfY291bnRlcl9hZ2VudCAoaXNfZmlyc3QsIGZpcnN0X2xpbmspIChpc19sYXN0LCBsYXN0X2xpbmspXG4gICAgICAgIChmaXJzdF9saW5rICsgaSlcbiAgICAgICAgKGZpcnN0X2xpbmsgKyBpICsgMSlcbiAgICAgICAgc2lncyBlcXVhbFxuICAgIGluXG4gICAgcmF3X2luY3IgOjogYWRkX2luY3IgKGkgKyAxKSBmaXJzdF9saW5rIGxhc3RfbGluayBkZWx0YSBlcXVhbCBzaWdzXG4gIClcblxubGV0IHJlYyBsaW5rX2luY3IgKHNpZ3MgOiBTaWduYXR1cmUucykgKGkgOiBpbnQpIChuYiA6IGludClcbiAgICAoYWdfaW5mbyA6IChpbnQgKiBpbnQpICogYm9vbCkgKGVxdWFsIDogYm9vbCkgKGxpbmsgOiBpbnQpIChsb2MgOiBMb2MudClcbiAgICAoZGVsdGEgOiBpbnQpIDogTEthcHBhLnJ1bGVfbWl4dHVyZSA9XG4gIGlmIGkgPSBuYiB0aGVuXG4gICAgW11cbiAgZWxzZSAoXG4gICAgbGV0IGlzX2ZpcnN0ID0gaSA9IDAgaW5cbiAgICBsZXQgaXNfbGFzdCA9IGkgPSBuYiAtIDEgaW5cbiAgICBsZXQgcmFfYWdlbnQgPVxuICAgICAgbWFrZV9jb3VudGVyX2FnZW50IHNpZ3MgKGlzX2ZpcnN0LCBhZ19pbmZvKSAoaXNfbGFzdCwgZXF1YWwpIChsaW5rICsgaSlcbiAgICAgICAgKGxpbmsgKyBpICsgMSlcbiAgICAgICAgbG9jIChkZWx0YSA+IDApXG4gICAgaW5cbiAgICByYV9hZ2VudCA6OiBsaW5rX2luY3Igc2lncyAoaSArIDEpIG5iIGFnX2luZm8gZXF1YWwgbGluayBsb2MgZGVsdGFcbiAgKVxuXG5sZXQgcmVjIGVyYXNlX2luY3IgKHNpZ3MgOiBTaWduYXR1cmUucykgKGkgOiBpbnQpIChpbmNycyA6IExLYXBwYS5ydWxlX21peHR1cmUpXG4gICAgKGRlbHRhIDogaW50KSAobGluayA6IGludCkgOiBMS2FwcGEucnVsZV9taXh0dXJlID1cbiAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgbGV0IHBvcnRfYiA9IGZzdCBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgbWF0Y2ggaW5jcnMgd2l0aFxuICB8IGluY3IgOjogaW5jcl9zIC0+XG4gICAgaWYgaSA9IGFicyBkZWx0YSB0aGVuIChcbiAgICAgIGxldCBiZWZvcmUsIF8gPSBpbmNyLkxLYXBwYS5yYV9wb3J0cy4ocG9ydF9iKSBpblxuICAgICAgaW5jci5MS2FwcGEucmFfcG9ydHMuKHBvcnRfYikgPC0gYmVmb3JlLCBMS2FwcGEuTGlua2VkIGxpbms7XG4gICAgICBpbmNyIDo6IGluY3Jfc1xuICAgICkgZWxzZSAoXG4gICAgICBBcnJheS5pdGVyaVxuICAgICAgICAoZnVuIGkgKGEsIF8pIC0+IGluY3IuTEthcHBhLnJhX3BvcnRzLihpKSA8LSBhLCBMS2FwcGEuRXJhc2VkKVxuICAgICAgICBpbmNyLkxLYXBwYS5yYV9wb3J0cztcbiAgICAgIGxldCBydWxlX2FnZW50ID0geyBpbmNyIHdpdGggTEthcHBhLnJhX2VyYXNlZCA9IHRydWUgfSBpblxuICAgICAgcnVsZV9hZ2VudCA6OiBlcmFzZV9pbmNyIHNpZ3MgKGkgKyAxKSBpbmNyX3MgZGVsdGEgbGlua1xuICAgIClcbiAgfCBbXSAtPiBbXVxuXG4oKiogUmV0dXJucyBtaXh0dXJlcyBmb3IgYWdlbnQgd2l0aCBzaXRlIGNoYW5nZWQgZnJvbSBjb3VudGVyIHRvIHBvcnQsIGFzIHdlbGwgYXMgbmV3IFtsaW5rX25iXSBhZnRlciBwcmV2aW91cyBhZGRpdGlvbnNcbiAqIFVzZWQgYnkgW2NvbXBpbGVfY291bnRlcl9pbl9ydWxlX2FnZW50XSopXG5sZXQgY291bnRlcl9iZWNvbWVzX3BvcnQgKHNpZ3MgOiBTaWduYXR1cmUucykgKHJhIDogTEthcHBhLnJ1bGVfYWdlbnQpXG4gICAgKHBvcnRfaWQgOiBpbnQpIChjb3VudGVyIDogQXN0LmNvdW50ZXIpIChzdGFydF9saW5rX25iIDogaW50KSA6XG4gICAgKExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50KSAqIGludCA9XG4gICgqIFJldHVybnMgcG9zaXRpdmUgcGFydCBvZiB2YWx1ZSAqKVxuICBsZXQgcG9zaXRpdmVfcGFydCAoaSA6IGludCkgOiBpbnQgPVxuICAgIGlmIGkgPCAwIHRoZW5cbiAgICAgIDBcbiAgICBlbHNlXG4gICAgICBpXG4gIGluXG5cbiAgbGV0IGxvYyA6IExvYy50ID0gTG9jLmdldF9hbm5vdCBjb3VudGVyLkFzdC5jb3VudGVyX25hbWUgaW5cbiAgbGV0IChkZWx0YSwgbG9jX2RlbHRhKSA6IGludCAqIExvYy50ID0gY291bnRlci5Bc3QuY291bnRlcl9kZWx0YSBpblxuICBsZXQgY291bnRlcl90ZXN0IDogQXN0LmNvdW50ZXJfdGVzdCBMb2MuYW5ub3RlZCA9XG4gICAgT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlXG4gICAgICB+ZXhjZXA6XG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICggXCJDb3VudGVyIFwiXG4gICAgICAgICAgICAgXiBMb2MudiBjb3VudGVyLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgICAgICBeIFwiIHNob3VsZCBoYXZlIGEgdGVzdCBieSBub3dcIixcbiAgICAgICAgICAgICBsb2MgKSlcbiAgICAgIGNvdW50ZXIuQXN0LmNvdW50ZXJfdGVzdFxuICBpblxuICBsZXQgKHRlc3QsIGVxdWFsKSA6IGludCAqIGJvb2wgPVxuICAgIG1hdGNoIExvYy52IGNvdW50ZXJfdGVzdCB3aXRoXG4gICAgfCBBc3QuQ1ZBUiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoIFwiQ291bnRlciBcIlxuICAgICAgICAgICAgIF4gTG9jLnYgY291bnRlci5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgICAgICAgXiBcIiBkZWZpbmVzIGEgdmFyaWFibGUsIHdoaWNoIHNob3VsZCBoYXZlIGJlZW4gcmVwbGFjZWQgYnkgQ0VRIFxcXG4gICAgICAgICAgICAgICAgY29uZGl0aW9ucyBhZnRlciBydWxlIHNwbGl0dGluZ1wiLFxuICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgY291bnRlcl90ZXN0ICkpXG4gICAgfCBBc3QuQ0VRIGogLT4gaiwgdHJ1ZVxuICAgIHwgQXN0LkNHVEUgaiAtPiBqLCBmYWxzZVxuICAgIHwgQXN0LkNMVEUgX2ogLT4gZmFpbHdpdGggXCJub3QgaW1wbGVtZW50ZWRcIiAoKiBUT0RPwqBub3cgKilcbiAgaW5cbiAgbGV0IHN0YXJ0X2xpbmtfZm9yX2NyZWF0ZWQgOiBpbnQgPSBzdGFydF9saW5rX25iICsgdGVzdCArIDEgaW5cbiAgbGV0IGxpbmtfZm9yX2VyYXNlZCA6IGludCA9IHN0YXJ0X2xpbmtfbmIgKyBhYnMgZGVsdGEgaW5cbiAgbGV0IGFnX2luZm8gOiAoaW50ICogaW50KSAqIGJvb2wgPVxuICAgIChwb3J0X2lkLCByYS5MS2FwcGEucmFfdHlwZSksIHJhLkxLYXBwYS5yYV9lcmFzZWRcbiAgaW5cblxuICBsZXQgdGVzdF9pbmNyIDogTEthcHBhLnJ1bGVfbWl4dHVyZSA9XG4gICAgbGlua19pbmNyIHNpZ3MgMCAodGVzdCArIDEpIGFnX2luZm8gZXF1YWwgc3RhcnRfbGlua19uYiBsb2MgZGVsdGFcbiAgaW5cbiAgbGV0IGFkanVzdF9kZWx0YSA6IExLYXBwYS5ydWxlX21peHR1cmUgPVxuICAgIGlmIGRlbHRhIDwgMCB0aGVuXG4gICAgICBlcmFzZV9pbmNyIHNpZ3MgMCB0ZXN0X2luY3IgZGVsdGEgbGlua19mb3JfZXJhc2VkXG4gICAgZWxzZVxuICAgICAgdGVzdF9pbmNyXG4gIGluXG4gIGxldCBjcmVhdGVkIDogUmF3X21peHR1cmUudCA9XG4gICAgaWYgZGVsdGEgPiAwIHRoZW5cbiAgICAgIGFkZF9pbmNyIDAgc3RhcnRfbGlua19mb3JfY3JlYXRlZCBzdGFydF9saW5rX25iIGRlbHRhIGZhbHNlIHNpZ3NcbiAgICBlbHNlXG4gICAgICBbXVxuICBpblxuXG4gIGlmIHRlc3QgKyBkZWx0YSA8IDAgdGhlblxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKFwiQ291bnRlciB0ZXN0IHNob3VsZCBiZSBncmVhdGVyIHRoZW4gYWJzKGRlbHRhKVwiLCBsb2NfZGVsdGEpKTtcblxuICBsZXQgc3dpdGNoIDogTEthcHBhLnN3aXRjaGluZyA9XG4gICAgaWYgZGVsdGEgPSAwIHRoZW5cbiAgICAgIGlmIHJhLkxLYXBwYS5yYV9lcmFzZWQgdGhlblxuICAgICAgICBMS2FwcGEuRXJhc2VkXG4gICAgICBlbHNlXG4gICAgICAgIExLYXBwYS5NYWludGFpbmVkXG4gICAgZWxzZSBpZiBkZWx0YSA+IDAgdGhlblxuICAgICAgTEthcHBhLkxpbmtlZCBzdGFydF9saW5rX2Zvcl9jcmVhdGVkXG4gICAgZWxzZVxuICAgICAgTEthcHBhLkxpbmtlZCBsaW5rX2Zvcl9lcmFzZWRcbiAgaW5cbiAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgbGV0IHBvcnRfYiA6IGludCA9IGZzdCBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgcmEuTEthcHBhLnJhX3BvcnRzLihwb3J0X2lkKSA8LVxuICAgICggKExLYXBwYS5MTktfVkFMVUUgKHN0YXJ0X2xpbmtfbmIsIChwb3J0X2IsIGNvdW50ZXJfYWdlbnRfaW5mby5pZCkpLCBsb2MpLFxuICAgICAgc3dpdGNoICk7XG4gIGxldCBuZXdfbGlua19uYiA6IGludCA9IHN0YXJ0X2xpbmtfbmIgKyAxICsgdGVzdCArIHBvc2l0aXZlX3BhcnQgZGVsdGEgaW5cblxuICAoYWRqdXN0X2RlbHRhLCBjcmVhdGVkKSwgbmV3X2xpbmtfbmJcblxuKCoqIENvbXBpbGVzIHRoZSBjb3VudGVyIHByZWNvbmRpdGlvbiBpbiBhIGxlZnQgaGFuZCBzaWRlIG1peHR1cmUgb2YgYSBydWxlIGludG8gYSBtaXh0dXJlIHdoaWNoIHRlc3RzIGR1bW15IHBvc2l0aW9uc1xuICogcnVsZV9hZ2VudF8gLSBhZ2VudCB3aXRoIGNvdW50ZXJzIGluIGEgcnVsZVxuICAgbG5rX25iIC0gdGhlIG1heCBsaW5rIG51bWJlciB1c2VkIGluIHRoZSBydWxlO1xuICAgc2lncy5jb3VudGVyX2FnZW50X2luZm8gLSBpbmZvIG9uIHRoZSBjb3VudGVyIGFnZW50XG4gICByZXR1cm5zOiBhZ2VudCB3aXRoIGV4cGxpY2l0IGNvdW50ZXJzOyBjcmVhdGVkIGluY3IgYWdlbnRzO1xuICAgICAgICAgICAgdGhlIG5leHQgbGluayBudW1iZXIgdG8gdXNlICopXG5sZXQgY29tcGlsZV9jb3VudGVyX2luX3J1bGVfYWdlbnQgKHNpZ3MgOiBTaWduYXR1cmUucylcbiAgICAocnVsZV9hZ2VudF8gOiBMS2FwcGEucnVsZV9hZ2VudCB3aXRoX2FnZW50X2NvdW50ZXJzKSAobG5rX25iIDogaW50KSA6XG4gICAgTEthcHBhLnJ1bGVfbWl4dHVyZSAqIFJhd19taXh0dXJlLnQgKiBpbnQgPVxuICBsZXQgKGluY3JzLCBsbmtfbmInKSA6IChMS2FwcGEucnVsZV9taXh0dXJlICogUmF3X21peHR1cmUudCkgbGlzdCAqIGludCA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBpZCAoYWNjX2luY3JzLCBsbmtfbmIpIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBhY2NfaW5jcnMsIGxua19uYlxuICAgICAgICB8IFNvbWUgKGNvdW50ZXIsIF8pIC0+XG4gICAgICAgICAgbGV0IG5ld19pbmNycywgbmV3X2xua19uYiA9XG4gICAgICAgICAgICBjb3VudGVyX2JlY29tZXNfcG9ydCBzaWdzIHJ1bGVfYWdlbnRfLmFnZW50IGlkIGNvdW50ZXIgbG5rX25iXG4gICAgICAgICAgaW5cbiAgICAgICAgICBuZXdfaW5jcnMgOjogYWNjX2luY3JzLCBuZXdfbG5rX25iXG4gICAgICAgICgqIEpGOiBsaW5rIGlkcyB3ZXJlIGNvbGxpZGluZyBhZnRlciBjb3VudGVyIGRlY3JlbWVudGF0aW9ucyAtPiBJIGRvIG5vdCB0aGluayB0aGF0IHdlIHNob3VsZCBhZGQgZGVsdGEgd2hlbiBuZWdhdGl2ZSAqKSlcbiAgICAgIChbXSwgbG5rX25iKSBydWxlX2FnZW50Xy5jb3VudGVyc1xuICBpblxuICBsZXQgKGFscywgYmxzKSA6IExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50ID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIChhbHMsIGJscykgKGEsIGIpIC0+IGEgQCBhbHMsIGIgQCBibHMpIChbXSwgW10pIGluY3JzXG4gIGluXG4gIGFscywgYmxzLCBsbmtfbmInXG5cbigqKiBDb21waWxlcyB0aGUgY291bnRlciB2YWx1ZSBjaGFuZ2UgaW4gdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiBhIHJ1bGUgaW50byBkdW1teSBjaGFpbiBjaGFuZ2VzICopXG5sZXQgY29tcGlsZV9jb3VudGVyX2luX3Jhd19hZ2VudCAoc2lncyA6IFNpZ25hdHVyZS5zKVxuICAgIChyYXdfYWdlbnRfIDogUmF3X21peHR1cmUuYWdlbnQgd2l0aF9hZ2VudF9jb3VudGVycykgKGxua19uYiA6IGludCkgOlxuICAgIFJhd19taXh0dXJlLmFnZW50IGxpc3QgKiBpbnQgPVxuICBsZXQgcmF3X2FnZW50IDogUmF3X21peHR1cmUuYWdlbnQgPSByYXdfYWdlbnRfLmFnZW50IGluXG4gIGxldCBwb3J0cyA6IFJhd19taXh0dXJlLmxpbmsgYXJyYXkgPSByYXdfYWdlbnQuUmF3X21peHR1cmUuYV9wb3J0cyBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBwb3J0X2lkIChhY2MsIGxua19uYikgLT4gZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBhY2MsIGxua19uYlxuICAgICAgfCBTb21lIChjLCBfKSAtPlxuICAgICAgICAobWF0Y2ggYy5Bc3QuY291bnRlcl90ZXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGFnZW50X25hbWUgPVxuICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCJcbiAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgICByYXdfYWdlbnQuUmF3X21peHR1cmUuYV90eXBlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImNvdW50ZXJcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICAgICAgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgfCBTb21lICh0ZXN0LCBfKSAtPlxuICAgICAgICAgIChtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IEFzdC5DR1RFIF8gfCBBc3QuQ0xURSBfIHwgQXN0LkNWQVIgXyAtPlxuICAgICAgICAgICAgbGV0IGFnZW50X25hbWUgPVxuICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIlxuICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAgICAgICByYXdfYWdlbnQuUmF3X21peHR1cmUuYV90eXBlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJjb3VudGVyXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICAgICAgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgICB8IEFzdC5DRVEgaiAtPlxuICAgICAgICAgICAgbGV0IHAgPSBSYXdfbWl4dHVyZS5WQUwgbG5rX25iIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocG9ydF9pZCkgPC0gcCBpblxuICAgICAgICAgICAgbGV0IGluY3JzID0gYWRkX2luY3IgMCBsbmtfbmIgKGxua19uYiArIGopIChqICsgMSkgdHJ1ZSBzaWdzIGluXG4gICAgICAgICAgICBhY2MgQCBpbmNycywgbG5rX25iICsgaiArIDEpKSlcbiAgICAoW10sIGxua19uYikgcmF3X2FnZW50Xy5jb3VudGVyc1xuXG5sZXQgcmF3X2FnZW50X2hhc19jb3VudGVycyAoYWdfIDogJ2Egd2l0aF9hZ2VudF9jb3VudGVycykgOiBib29sID1cbiAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gb2sgeCAtPiB4IDw+IE5vbmUgfHwgb2spIGZhbHNlIGFnXy5jb3VudGVyc1xuXG5sZXQgcnVsZV9hZ2VudF9oYXNfY291bnRlcnMgKHJ1bGVfYWdlbnQgOiBMS2FwcGEucnVsZV9hZ2VudClcbiAgICAoc2lncyA6IFNpZ25hdHVyZS5zKSA6IGJvb2wgPVxuICBTaWduYXR1cmUuaGFzX2NvdW50ZXIgKFNpZ25hdHVyZS5nZXQgc2lncyBydWxlX2FnZW50LnJhX3R5cGUpXG5cbigqKiBbY29tcGlsZV9jb3VudGVyX2luX3J1bGUgc2lncyBtaXggY3JlYXRlZF0gdGFrZXMgdGhlIGludGlhbCBtaXh0dXJlIGZyb20gYSBydWxlIFttaXhdLFxuICogYW5kIHRoZSBtaXh0dXJlIG9idGFpbmVkIGZyb20gdGhlIGFwcGxpY2F0aW9uIG9mIHRoZSBydWxlIFtjcmVhdGVkXSxcbiAqIGJvdGggd2l0aCBjb3VudGVyIGluZm9ybWF0aW9uLCBhbmQgcmV0dXJucyB0d28gbWl4dHVyZXMgZm9yIGEgbmV3IHJ1bGUgd2l0aG91dCBjb3VudGVycywgaGF2aW5nIGNvbXBpbGVkIHRoZSBjb3VudGVyIGxvZ2ljIGluc2lkZSB0aGUgcnVsZS5cbiAqXG4gKiAtIGFkZHMgaW5jcmVtZW50IGFnZW50cyB0byB0aGUgcnVsZV9hZ2VudCBtaXh0dXJlXG4gICAtIGFkZHMgaW5jcmVtZW50IGFnZW50cyB0byB0aGUgcmF3IG1peHR1cmVcbiAgIC0gbGlua3MgdGhlIGFnZW50cyBpbiB0aGUgbWl4dHVyZShsaHMscmhzLG1peCkgb3IgaW4gdGhlIHJhdyBtaXh0dXJlKGNyZWF0ZWQpXG4gICAgIHRvIHRoZSBpbmNyZW1lbnRzICopXG5sZXQgY29tcGlsZV9jb3VudGVyX2luX3J1bGUgKHNpZ3MgOiBTaWduYXR1cmUucylcbiAgICAobWl4IDogcnVsZV9taXh0dXJlX3dpdGhfYWdlbnRfY291bnRlcnMpXG4gICAgKGNyZWF0ZWQgOiByYXdfbWl4dHVyZV93aXRoX2FnZW50X2NvdW50ZXJzKSA6XG4gICAgTEthcHBhLnJ1bGVfbWl4dHVyZSAqIFJhd19taXh0dXJlLnQgPVxuICBsZXQgaGFzX2NvdW50ZXJzIDogYm9vbCA9XG4gICAgTGlzdC5leGlzdHNcbiAgICAgIChmdW4gcnVsZV9hZ2VudF8gLT4gcnVsZV9hZ2VudF9oYXNfY291bnRlcnMgcnVsZV9hZ2VudF8uYWdlbnQgc2lncylcbiAgICAgIG1peFxuICAgIHx8IExpc3QuZXhpc3RzIChmdW4gcmF3X2FnZW50XyAtPiByYXdfYWdlbnRfaGFzX2NvdW50ZXJzIHJhd19hZ2VudF8pIGNyZWF0ZWRcbiAgaW5cbiAgaWYgaGFzX2NvdW50ZXJzIHRoZW4gKFxuICAgIGxldCBsbmtfbmIgOiBpbnQgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAobSA6IGludCkgcnVsZV9hZ2VudF8gLT5cbiAgICAgICAgICBtYXggbSAoTEthcHBhLm1heF9saW5rX2lkIFsgcnVsZV9hZ2VudF8uYWdlbnQgXSkpXG4gICAgICAgIDAgbWl4XG4gICAgaW5cblxuICAgIGxldCAoaW5jcnMsIGluY3JzX2NyZWF0ZWQsIGxua19uYicpIDpcbiAgICAgICAgTEthcHBhLnJ1bGVfbWl4dHVyZSAqIFJhd19taXh0dXJlLnQgKiBpbnQgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAobWl4X2luY3IsIGNyZWF0ZWRfaW5jciwgbG5rX25iKSBydWxlX2FnZW50XyAtPlxuICAgICAgICAgIGxldCBtaXhfaW5jcl9uZXcsIGNyZWF0ZWRfaW5jcl9uZXcsIGxua19uYicgPVxuICAgICAgICAgICAgY29tcGlsZV9jb3VudGVyX2luX3J1bGVfYWdlbnQgc2lncyBydWxlX2FnZW50XyBsbmtfbmJcbiAgICAgICAgICBpblxuICAgICAgICAgIG1peF9pbmNyX25ldyBAIG1peF9pbmNyLCBjcmVhdGVkX2luY3JfbmV3IEAgY3JlYXRlZF9pbmNyLCBsbmtfbmInICsgMSlcbiAgICAgICAgKFtdLCBbXSwgbG5rX25iICsgMSlcbiAgICAgICAgbWl4XG4gICAgaW5cbiAgICBsZXQgaW5jcnNfY3JlYXRlZCcgOiBSYXdfbWl4dHVyZS50ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGNyZWF0ZWRfaW5jciwgbG5rX25iKSByYXdfYWdlbnRfIC0+XG4gICAgICAgICAgbGV0IGNyZWF0ZWRfaW5jcl9uZXcsIGxua19uYicnID1cbiAgICAgICAgICAgIGNvbXBpbGVfY291bnRlcl9pbl9yYXdfYWdlbnQgc2lncyByYXdfYWdlbnRfIGxua19uYlxuICAgICAgICAgIGluXG4gICAgICAgICAgY3JlYXRlZF9pbmNyX25ldyBAIGNyZWF0ZWRfaW5jciwgbG5rX25iJycpXG4gICAgICAgIChbXSwgbG5rX25iJyArIDEpXG4gICAgICAgIGNyZWF0ZWRcbiAgICAgIHw+IGZzdFxuICAgICAgKCogV2UgZHJvcCB0aGUgbG5rX25iIGFzIHdlIGRvbid0IG5lZWQgaW4gdGhlIGZvbGxvd2luZyAqKVxuICAgIGluXG5cbiAgICAoKiBSZXR1cm4gaW5pdGlhbCBtaXh0dXJlcyB3aXRoIG5ldyBhZ2VudHMgaW4gcnVsZSBmcm9tIGNvdW50ZXIgY29tcGlsYXRpb24gKilcbiAgICBsZXQgcnVsZV9hZ2VudF9taXggOiBMS2FwcGEucnVsZV9taXh0dXJlID1cbiAgICAgIExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZCAoZnVuIHJ1bGVfYWdlbnRfIC0+IHJ1bGVfYWdlbnRfLmFnZW50KSBtaXggaW5jcnNcbiAgICBpblxuICAgIGxldCByYXdfbWl4IDogUmF3X21peHR1cmUudCA9XG4gICAgICBMaXN0X3V0aWwucmV2X21hcF9hcHBlbmRcbiAgICAgICAgKGZ1biByYXdfYWdlbnRfIC0+IHJhd19hZ2VudF8uYWdlbnQpXG4gICAgICAgIGNyZWF0ZWRcbiAgICAgICAgKGluY3JzX2NyZWF0ZWQgQCBpbmNyc19jcmVhdGVkJylcbiAgICBpblxuICAgIHJ1bGVfYWdlbnRfbWl4LCByYXdfbWl4XG4gICkgZWxzZVxuICAgICggTGlzdC5yZXZfbWFwIChmdW4gcnVsZV9hZ2VudF8gLT4gcnVsZV9hZ2VudF8uYWdlbnQpIChMaXN0LnJldiBtaXgpLFxuICAgICAgTGlzdC5yZXZfbWFwIChmdW4gcmF3X2FnZW50XyAtPiByYXdfYWdlbnRfLmFnZW50KSAoTGlzdC5yZXYgY3JlYXRlZCkgKVxuXG5sZXQgcnVsZV9hZ2VudF93aXRoX21heF9jb3VudGVyIHNpZ3MgYyAoKGFnZW50X25hbWUsIGxvY19hZykgYXMgYWdlbnRfdHlwZSkgOlxuICAgIExLYXBwYS5ydWxlX21peHR1cmUgPVxuICBsZXQgYWdfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnZW50X3R5cGUgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcG9ydHMgPVxuICAgIEFycmF5Lm1ha2UgYXJpdHkgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgaW5cbiAgbGV0IGludGVybmFscyA9IEFycmF5Lm1ha2UgYXJpdHkgTEthcHBhLklfQU5ZIGluXG4gIGxldCBjX25hID0gYy5Bc3QuY291bnRlcl9zaWdfbmFtZSBpblxuICBsZXQgY19pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBjX25hIHNpZ24gaW5cbiAgbGV0IG1heF92YWwsIGxvYyA9XG4gICAgbWF0Y2ggYy5Bc3QuY291bnRlcl9zaWdfbWF4IHdpdGhcbiAgICB8IFNvbWUgKFNvbWUgbWF4LCBsb2MpIC0+IG1heCwgbG9jXG4gICAgfCBOb25lIHwgU29tZSAoTm9uZSwgXykgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICggXCJDb3VudGVyIFwiIF4gZnN0IGNfbmEgXiBcIiBpbiBcIiBeIGFnZW50X25hbWVcbiAgICAgICAgICAgICBeIFwiIHNob3VsZCBoYXZlIGFuIHVwcGVyIGJvdW5kXCIsXG4gICAgICAgICAgICAgbG9jX2FnICkpXG4gIGluXG4gIGxldCBtYXhfdmFsJyA9IG1heF92YWwgKyAxIGluXG4gIGxldCBpbmNycyA9XG4gICAgbGlua19pbmNyIHNpZ3MgMCAobWF4X3ZhbCcgKyAxKSAoKGNfaWQsIGFnX2lkKSwgZmFsc2UpIGZhbHNlIDEgbG9jICgtMSlcbiAgaW5cbiAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgbGV0IHBvcnRfYiA9IGZzdCBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgbGV0IHAgPSBMS2FwcGEuTE5LX1ZBTFVFICgxLCAocG9ydF9iLCBjb3VudGVyX2FnZW50X2luZm8uaWQpKSwgbG9jIGluXG4gIHBvcnRzLihjX2lkKSA8LSBwLCBMS2FwcGEuTWFpbnRhaW5lZDtcbiAgbGV0IHJhIDogTEthcHBhLnJ1bGVfYWdlbnQgPVxuICAgIHtcbiAgICAgIExLYXBwYS5yYV90eXBlID0gYWdfaWQ7XG4gICAgICByYV9wb3J0cyA9IHBvcnRzO1xuICAgICAgcmFfaW50cyA9IGludGVybmFscztcbiAgICAgIHJhX2VyYXNlZCA9IGZhbHNlO1xuICAgICAgcmFfc3ludGF4ID0gU29tZSAoQXJyYXkuY29weSBwb3J0cywgQXJyYXkuY29weSBpbnRlcm5hbHMpO1xuICAgIH1cbiAgaW5cbiAgcmEgOjogaW5jcnNcblxubGV0IGNvdW50ZXJfcGVydHVyYmF0aW9uIHNpZ3MgYyBhZ2VudF90eXBlID1cbiAgbGV0IGFubm90ID0gTG9jLmdldF9hbm5vdCBjLkFzdC5jb3VudGVyX3NpZ19uYW1lIGluXG4gIGxldCBmaWxlbmFtZSA9IFsgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKFwiY291bnRlcl9wZXJ0dXJiYXRpb24ua2FcIiwgYW5ub3QpIF0gaW5cbiAgbGV0IHN0b3BfbWVzc2FnZSA9XG4gICAgXCJDb3VudGVyIFwiXG4gICAgXiBMb2MudiBjLkFzdC5jb3VudGVyX3NpZ19uYW1lXG4gICAgXiBcIiBvZiBhZ2VudCBcIiBeIExvYy52IGFnZW50X3R5cGUgXiBcIiByZWFjaGVkIG1heGltdW1cIlxuICBpblxuICBsZXQgbW9kcyA9XG4gICAgW1xuICAgICAgQXN0LlBSSU5UIChbXSwgWyBQcmltaXRpdmVzLlN0cl9wZXhwciAoXCJcIiwgYW5ub3QpIF0pO1xuICAgICAgQXN0LlBSSU5UIChbXSwgWyBQcmltaXRpdmVzLlN0cl9wZXhwciAoc3RvcF9tZXNzYWdlLCBhbm5vdCkgXSk7XG4gICAgICBBc3QuU1RPUCBmaWxlbmFtZTtcbiAgICBdXG4gIGluXG4gIGxldCB2YWxfb2ZfY291bnRlciA9XG4gICAgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgKHJ1bGVfYWdlbnRfd2l0aF9tYXhfY291bnRlciBzaWdzIGMgYWdlbnRfdHlwZSlcbiAgaW5cbiAgbGV0IHByZSA9XG4gICAgQWxnX2V4cHIuQ09NUEFSRV9PUFxuICAgICAgKCBPcGVyYXRvci5FUVVBTCxcbiAgICAgICAgKHZhbF9vZl9jb3VudGVyLCBhbm5vdCksXG4gICAgICAgIChBbGdfZXhwci5DT05TVCAoTmJyLkkgMSksIGFubm90KSApXG4gIGluXG4gICggTm9uZSxcbiAgICBTb21lIChwcmUsIExvYy5nZXRfYW5ub3QgYWdlbnRfdHlwZSksXG4gICAgbW9kcyxcbiAgICBTb21lIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBBbGdfZXhwci5GQUxTRSkgKVxuXG5sZXQgY291bnRlcnNfcGVydHVyYmF0aW9ucyBzaWdzIGFzdF9zaWdzID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBhY2NcbiAgICAgICB8IEFzdC5QcmVzZW50IChhZ2VudF90eXBlLCBzaXRlcywgXykgLT5cbiAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgIChmdW4gYWNjJyBzaXRlIC0+XG4gICAgICAgICAgICAgbWF0Y2ggc2l0ZSB3aXRoXG4gICAgICAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGFjYydcbiAgICAgICAgICAgICB8IEFzdC5Db3VudGVyIGMgLT5cbiAgICAgICAgICAgICAgIChjb3VudGVyX3BlcnR1cmJhdGlvbiBzaWdzIGMgYWdlbnRfdHlwZSwgTG9jLmdldF9hbm5vdCBhZ2VudF90eXBlKVxuICAgICAgICAgICAgICAgOjogYWNjJylcbiAgICAgICAgICAgYWNjIHNpdGVzKSlcbiAgICBbXSBhc3Rfc2lnc1xuXG5sZXQgbWFrZV9jb3VudGVyIGkgbmFtZSA9XG4gIHtcbiAgICBBc3QuY291bnRlcl9uYW1lID0gTG9jLmFubm90X3dpdGhfZHVtbXkgbmFtZTtcbiAgICBjb3VudGVyX3Rlc3QgPSBTb21lIChMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQXN0LkNFUSBpKSk7XG4gICAgY291bnRlcl9kZWx0YSA9IExvYy5hbm5vdF93aXRoX2R1bW15IDA7XG4gIH1cblxubGV0IGFkZF9jb3VudGVyX3RvX2NvbnRhY3RfbWFwIHNpZ3MgYWRkX2xpbmtfY29udGFjdF9tYXAgPVxuICBsZXQgY291bnRlcl9hZ2VudF9pbmZvID0gU2lnbmF0dXJlLmdldF9jb3VudGVyX2FnZW50X2luZm8gc2lncyBpblxuICBsZXQgcG9ydF9iLCBwb3J0X2EgPSBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgYWRkX2xpbmtfY29udGFjdF9tYXAgY291bnRlcl9hZ2VudF9pbmZvLmlkIHBvcnRfYSBjb3VudGVyX2FnZW50X2luZm8uaWQgcG9ydF9iXG5cbmxldCByYWlzZV9pZl9tb2RpZmljYXRpb24gKGRlbHRhLCBsb2MpID1cbiAgaWYgZGVsdGEgIT0gMCB0aGVuIExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb24gbG9jIChTb21lIGRlbHRhKVxuXG5sZXQgYW5ub3RhdGVfZHJvcHBlZF9jb3VudGVycyBzaWduIGFzdF9jb3VudGVycyByYSBhcml0eSBhZ2VudF9uYW1lIGF1eCA9XG4gIGxldCByYV9jb3VudGVycyA9IEFycmF5Lm1ha2UgYXJpdHkgTm9uZSBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gcHNldCBjIC0+XG4gICAgICAgIGxldCBwb3J0X25hbWUgPSBjLkFzdC5jb3VudGVyX25hbWUgaW5cbiAgICAgICAgbGV0IHBvcnRfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIHNpZ24gaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBvcnRfaWQgc2lnbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IExLYXBwYS5yYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcG9ydF9pZCBwc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIGMuQXN0LmNvdW50ZXJfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSByYWlzZV9pZl9tb2RpZmljYXRpb24gYy5Bc3QuY291bnRlcl9kZWx0YSBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF1eCB3aXRoXG4gICAgICAgICAgfCBTb21lIGYgLT4gZiBwb3J0X2lkXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIHJhX2NvdW50ZXJzLihwb3J0X2lkKSA8LSBTb21lIChjLCBMS2FwcGEuRXJhc2VkKTtcbiAgICAgICAgcHNldCcpXG4gICAgICBNb2RzLkludFNldC5lbXB0eSBhc3RfY291bnRlcnNcbiAgaW5cbiAgeyBhZ2VudCA9IHJhOyBjb3VudGVycyA9IHJhX2NvdW50ZXJzIH1cblxubGV0IGFubm90YXRlX2VkaXRfY291bnRlcnMgc2lncyAoKGFnZW50X25hbWUsIF8pIGFzIGFnZW50X3R5cGUpIGNvdW50ZXJzIHJhXG4gICAgYWRkX2xpbmtfY29udGFjdF9tYXAgPVxuICBsZXQgYWdfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnZW50X3R5cGUgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcmFfY291bnRlcnMgPSBBcnJheS5tYWtlIGFyaXR5IE5vbmUgaW5cbiAgbGV0IHJlZ2lzdGVyX2NvdW50ZXJfbW9kaWYgY19pZCA9XG4gICAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgICBsZXQgcG9ydF9iID0gZnN0IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICAgIGFkZF9saW5rX2NvbnRhY3RfbWFwIGFnX2lkIGNfaWQgY291bnRlcl9hZ2VudF9pbmZvLmlkIHBvcnRfYlxuICBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gcHNldCBjIC0+XG4gICAgICAgIGxldCBwb3J0X25hbWUgPSBjLkFzdC5jb3VudGVyX25hbWUgaW5cbiAgICAgICAgbGV0IHBvcnRfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIHNpZ24gaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBvcnRfaWQgc2lnbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IExLYXBwYS5yYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcG9ydF9pZCBwc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIGMuQXN0LmNvdW50ZXJfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSByZWdpc3Rlcl9jb3VudGVyX21vZGlmIHBvcnRfaWQgaW5cbiAgICAgICAgbGV0ICgpID0gcmFfY291bnRlcnMuKHBvcnRfaWQpIDwtIFNvbWUgKGMsIExLYXBwYS5NYWludGFpbmVkKSBpblxuICAgICAgICBwc2V0JylcbiAgICAgIE1vZHMuSW50U2V0LmVtcHR5IGNvdW50ZXJzXG4gIGluXG4gIHsgYWdlbnQgPSByYTsgY291bnRlcnMgPSByYV9jb3VudGVycyB9XG5cbmxldCBhbm5vdGF0ZV9jb3VudGVyc193aXRoX2RpZmYgc2lncyAoKGFnZW50X25hbWUsIGxvYykgYXMgYWdlbnRfdHlwZSkgbGMgcmMgcmFcbiAgICBhZGRfbGlua19jb250YWN0X21hcCA9XG4gIGxldCBhZ19pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdlbnRfdHlwZSBzaWdzIGluXG4gIGxldCBzaWduID0gU2lnbmF0dXJlLmdldCBzaWdzIGFnX2lkIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFnX2lkIGluXG4gIGxldCByZWdpc3Rlcl9jb3VudGVyX21vZGlmIGMgY19pZCA9XG4gICAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgICBsZXQgcG9ydF9iID0gZnN0IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICAgIGxldCAoKSA9IGFkZF9saW5rX2NvbnRhY3RfbWFwIGFnX2lkIGNfaWQgY291bnRlcl9hZ2VudF9pbmZvLmlkIHBvcnRfYiBpblxuICAgIGMsIExLYXBwYS5NYWludGFpbmVkXG4gIGluXG4gIGxldCByYV9jb3VudGVycyA9IEFycmF5Lm1ha2UgYXJpdHkgTm9uZSBpblxuICBsZXQgcmNfciwgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKHJjLCBjc2V0KSBjIC0+XG4gICAgICAgIGxldCAoKG5hLCBfKSBhcyBjb3VudGVyX25hbWUpID0gYy5Bc3QuY291bnRlcl9uYW1lIGluXG4gICAgICAgIGxldCBjX2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIGNvdW50ZXJfbmFtZSBzaWduIGluXG4gICAgICAgIGxldCBjc2V0JyA9IE1vZHMuSW50U2V0LmFkZCBjX2lkIGNzZXQgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBjc2V0ID09IGNzZXQnIHRoZW5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgY291bnRlcl9uYW1lXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjJywgcmMnID1cbiAgICAgICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAgICAgKGZ1biBwIC0+IFN0cmluZy5jb21wYXJlIChMb2MudiBwLkFzdC5jb3VudGVyX25hbWUpIG5hID0gMClcbiAgICAgICAgICAgIHJjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjJycgPVxuICAgICAgICAgIG1hdGNoIGMnIHdpdGhcbiAgICAgICAgICB8IF8gOjogW10gfCBbXSAtPiByZWdpc3Rlcl9jb3VudGVyX21vZGlmIGMgY19pZFxuICAgICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIGNvdW50ZXJfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSByYV9jb3VudGVycy4oY19pZCkgPC0gU29tZSBjJycgaW5cbiAgICAgICAgcmMnLCBjc2V0JylcbiAgICAgIChyYywgTW9kcy5JbnRTZXQuZW1wdHkpIGxjXG4gIGluXG4gIGxldCBfID1cbiAgICAoKiB0ZXN0IGlmIGNvdW50ZXIgb2YgcmhzIGlzIGluIHRoZSBzaWduYXR1cmUgKilcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biBjIC0+IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWUgc2lnbilcbiAgICAgIHJjX3JcbiAgaW5cbiAgaWYgKG5vdCAocmMgPSBbXSkpICYmIG5vdCAocmNfciA9IFtdKSB0aGVuXG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoXCJDb3VudGVycyBpbiBcIiBeIGFnZW50X25hbWUgXiBcIiBzaG91bGQgaGF2ZSB0ZXN0cyBieSBub3dcIiwgbG9jKSk7XG4gIHsgYWdlbnQgPSByYTsgY291bnRlcnMgPSByYV9jb3VudGVycyB9XG5cbmxldCBhbm5vdGF0ZV9jcmVhdGVkX2NvdW50ZXJzIHNpZ3MgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ2VudF90eXBlKSBjb3VudGVyX2xpc3RcbiAgICBhZGRfbGlua19jb250YWN0X21hcCByYSA9XG4gIGxldCBhZ2VudF9pZCA6IGludCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdlbnRfdHlwZSBzaWdzIGluXG4gIGxldCBhZ2VudF9zaWduYXR1cmUgOiBTaWduYXR1cmUudCA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ2VudF9pZCBpblxuICBsZXQgYXJpdHkgOiBpbnQgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ2VudF9pZCBpblxuICBsZXQgcmFfY291bnRlcnMgOiAoQXN0LmNvdW50ZXIgKiBMS2FwcGEuc3dpdGNoaW5nKSBvcHRpb24gYXJyYXkgPVxuICAgIEFycmF5Lm1ha2UgYXJpdHkgTm9uZVxuICBpblxuXG4gICgqIHJlZ2lzdGVyIGFsbCBjb3VudGVycyAoc3BlY2lmaWVkIG9yIG5vdCkgd2l0aCBkZWZhdWx0IHZhbHVlICopXG4gIEFycmF5Lml0ZXJpXG4gICAgKGZ1biBwb3J0X2lkIF8gLT5cbiAgICAgIG1hdGNoIFNpZ25hdHVyZS5jb3VudGVyX29mX3NpdGVfaWQgcG9ydF9pZCBhZ2VudF9zaWduYXR1cmUgd2l0aFxuICAgICAgfCBTb21lIGNvdW50ZXJfaW5mbyAtPlxuICAgICAgICBsZXQgY291bnRlcl9uYW1lID0gU2lnbmF0dXJlLnNpdGVfb2ZfbnVtIHBvcnRfaWQgYWdlbnRfc2lnbmF0dXJlIGluXG4gICAgICAgICh0cnlcbiAgICAgICAgICAgKCogZmluZCBjb3VudGVyIG1hdGNoaW5nIHBvcnQgKilcbiAgICAgICAgICAgbGV0IGMgOiBBc3QuY291bnRlciA9XG4gICAgICAgICAgICAgTGlzdC5maW5kXG4gICAgICAgICAgICAgICAoZnVuIGMnIC0+XG4gICAgICAgICAgICAgICAgIFN0cmluZy5jb21wYXJlIChMb2MudiBjJy5Bc3QuY291bnRlcl9uYW1lKSBjb3VudGVyX25hbWUgPSAwKVxuICAgICAgICAgICAgICAgY291bnRlcl9saXN0XG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHJhX2NvdW50ZXJzLihwb3J0X2lkKSA8LVxuICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX25hbWUgPSBjLkFzdC5jb3VudGVyX25hbWU7XG4gICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfdGVzdCA9IGMuQXN0LmNvdW50ZXJfdGVzdDtcbiAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9kZWx0YSA9IDAsIExvYy5kdW1teTtcbiAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgTEthcHBhLk1haW50YWluZWQgKVxuICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgcmFfY291bnRlcnMuKHBvcnRfaWQpIDwtXG4gICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfbmFtZSA9IGNvdW50ZXJfbmFtZSB8PiBMb2MuYW5ub3Rfd2l0aF9kdW1teTtcbiAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl90ZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5DRVEgY291bnRlcl9pbmZvLmNvdW50ZXJfZGVmYXVsdF92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIHw+IExvYy5hbm5vdF93aXRoX2R1bW15KTtcbiAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9kZWx0YSA9IDAsIExvYy5kdW1teTtcbiAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgTEthcHBhLk1haW50YWluZWQgKSlcbiAgICAgIHwgTm9uZSAtPiAoKSlcbiAgICByYV9jb3VudGVycztcblxuICBsZXQgcmVnaXN0ZXJfY291bnRlcl9tb2RpZiBjX2lkID1cbiAgICBsZXQgY291bnRlcl9hZ2VudF9pbmZvID0gU2lnbmF0dXJlLmdldF9jb3VudGVyX2FnZW50X2luZm8gc2lncyBpblxuICAgIGxldCBwb3J0X2IgPSBmc3QgY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gICAgYWRkX2xpbmtfY29udGFjdF9tYXAgYWdlbnRfaWQgY19pZCBjb3VudGVyX2FnZW50X2luZm8uaWQgcG9ydF9iXG4gIGluXG4gIGxldCBfIDogTW9kcy5JbnRTZXQudCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gcHNldCBjIC0+XG4gICAgICAgIGxldCBwb3J0X25hbWUgPSBjLkFzdC5jb3VudGVyX25hbWUgaW5cbiAgICAgICAgbGV0IHBvcnRfaWQgPVxuICAgICAgICAgIFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwb3J0X25hbWUgYWdlbnRfc2lnbmF0dXJlXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIFNpZ25hdHVyZS5jb3VudGVyX29mX3NpdGVfaWQgcG9ydF9pZCBhZ2VudF9zaWduYXR1cmUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTEthcHBhLnJhaXNlX2NvdW50ZXJfbWlzdXNlZCBhZ2VudF9uYW1lIGMuQXN0LmNvdW50ZXJfbmFtZVxuICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICgpO1xuICAgICAgICAgIGxldCBwc2V0JyA9IE1vZHMuSW50U2V0LmFkZCBwb3J0X2lkIHBzZXQgaW5cbiAgICAgICAgICBpZiBwc2V0ID09IHBzZXQnIHRoZW5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lO1xuICAgICAgICAgIHJlZ2lzdGVyX2NvdW50ZXJfbW9kaWYgcG9ydF9pZDtcbiAgICAgICAgICByYV9jb3VudGVycy4ocG9ydF9pZCkgPC0gU29tZSAoYywgTEthcHBhLk1haW50YWluZWQpO1xuICAgICAgICAgIHBzZXQnKVxuICAgICAgTW9kcy5JbnRTZXQuZW1wdHkgY291bnRlcl9saXN0XG4gIGluXG4gIHsgYWdlbnQgPSByYTsgY291bnRlcnMgPSByYV9jb3VudGVycyB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgbWFwX29wdCBmIG9wdCA9IG1hdGNoIG9wdCB3aXRoIHwgTm9uZSAtPiBOb25lIHwgU29tZSBhIC0+IFNvbWUgKGYgYSlcblxuKCogVE9ETyBvcmlnaW5hbGx5X2Zyb20gdGVybS9sS2FwcGEubWwsIHNlZSBpZiBpdCBtYWtlcyBzZW5zZSBoZXJlICopXG5sZXQgcmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IChwb3MgOiBMb2MudCkgPSBmdW5jdGlvblxuICB8IEFzdC5Ob01vZCAtPiAoKVxuICB8IEFzdC5FcmFzZSB8IEFzdC5DcmVhdGUgLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKFwiQSBtb2RpZmljYXRpb24gaXMgZm9yYmlkZGVuIGhlcmUuXCIsIHBvcykpXG5cbmxldCBidWlsZF9sX3R5cGUgc2lncyBwb3MgZHN0X3R5IGRzdF9wIHN3aXRjaCA9XG4gIGxldCB0eV9pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgZHN0X3R5IHNpZ3MgaW5cbiAgbGV0IHBfaWQgPSBTaWduYXR1cmUuaWRfb2Zfc2l0ZSBkc3RfdHkgZHN0X3Agc2lncyBpblxuICAoTEthcHBhLkxOS19UWVBFIChwX2lkLCB0eV9pZCksIHBvcyksIHN3aXRjaFxuXG5sZXQgYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwIHN0eSBzcCBkdHkgZHAgPVxuICBtYXRjaCBjb250YWN0X21hcCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgY29udGFjdF9tYXAgLT5cbiAgICBsZXQgc2ksIHNsID0gY29udGFjdF9tYXAuKHN0eSkuKHNwKSBpblxuICAgIGxldCBkaSwgZGwgPSBjb250YWN0X21hcC4oZHR5KS4oZHApIGluXG4gICAgbGV0ICgpID0gY29udGFjdF9tYXAuKHN0eSkuKHNwKSA8LSBzaSwgTW9kcy5JbnQyU2V0LmFkZCAoZHR5LCBkcCkgc2wgaW5cbiAgICBjb250YWN0X21hcC4oZHR5KS4oZHApIDwtIGRpLCBNb2RzLkludDJTZXQuYWRkIChzdHksIHNwKSBkbFxuXG5sZXQgcnVsZV9pbmR1Y2VzX2xpbmtfcGVybXV0YXRpb24gfndhcm5pbmcgfnBvcyA/ZHN0X3R5IHNpZ3Mgc29ydCBzaXRlID1cbiAgbGV0IHdhcm5pbmdfZm9yX2NvdW50ZXJzID1cbiAgICBpZiBTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIHNvcnQgdGhlblxuICAgICAgdHJ1ZVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZHN0X3R5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIHMgLT4gU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBzXG4gICAgKVxuICBpblxuXG4gIGlmIG5vdCB3YXJuaW5nX2Zvcl9jb3VudGVycyB0aGVuXG4gICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCJydWxlIGluZHVjZXMgYSBsaW5rIHBlcm11dGF0aW9uIG9uIHNpdGUgJyVhJyBvZiBhZ2VudCAnJWEnXCJcbiAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBzb3J0KVxuICAgICAgICAgIHNpdGVcbiAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgc29ydClcblxubGV0IHNpdGVfc2hvdWxkX21hZGVfYmVfZnJlZSBpIHNpZ3MgYWdfdHkgcF9pZCBwb3MgPVxuICBMS2FwcGEucmFpc2VfbGlua19zaG91bGRfYmVfcmVtb3ZlZCBpXG4gICAgKGxldCAoKSA9XG4gICAgICAgRm9ybWF0LmZwcmludGYgRm9ybWF0LnN0cl9mb3JtYXR0ZXIgXCIlYVwiXG4gICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICBhZ190eVxuICAgICBpblxuICAgICBGb3JtYXQuZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSlcbiAgICAoIChsZXQgKCkgPVxuICAgICAgICAgRm9ybWF0LmZwcmludGYgRm9ybWF0LnN0cl9mb3JtYXR0ZXIgXCIlYVwiXG4gICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnX3R5KVxuICAgICAgICAgICBwX2lkXG4gICAgICAgaW5cbiAgICAgICBGb3JtYXQuZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSksXG4gICAgICBwb3MgKVxuXG5sZXQgYnVpbGRfbGluayA/d2Fybl9vbl9zd2FwIHNpZ3MgP2NvbnRhY3RfbWFwIHBvcyBpIGFnX3R5IHBfaWQgc3dpdGNoXG4gICAgKGxpbmtzX29uZSwgbGlua3NfdHdvKSA9XG4gIGlmIE1vZHMuSW50TWFwLm1lbSBpIGxpbmtzX3R3byB0aGVuXG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAoIFwiVGhpcyBpcyB0aGUgdGhpcmQgb2NjdXJlbmNlIG9mIGxpbmsgJ1wiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgICAgICAgIF4gXCInIGluIHRoZSBzYW1lIG1peHR1cmUuXCIsXG4gICAgICAgICAgIHBvcyApKVxuICBlbHNlIChcbiAgICBtYXRjaCBNb2RzLkludE1hcC5wb3AgaSBsaW5rc19vbmUgd2l0aFxuICAgIHwgTm9uZSwgb25lJyAtPlxuICAgICAgbGV0IG5ld19saW5rID1cbiAgICAgICAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgICAgICAgfCBMS2FwcGEuTGlua2VkIGogLT4gU29tZSBqXG4gICAgICAgIHwgTEthcHBhLkZyZWVkIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5NYWludGFpbmVkIC0+IE5vbmVcbiAgICAgIGluXG4gICAgICAoICgoTEthcHBhLkxOS19WQUxVRSAoaSwgKC0xLCAtMSkpLCBwb3MpLCBzd2l0Y2gpLFxuICAgICAgICAoTW9kcy5JbnRNYXAuYWRkIGkgKGFnX3R5LCBwX2lkLCBuZXdfbGluaywgcG9zLCBzd2l0Y2gpIG9uZScsIGxpbmtzX3R3bylcbiAgICAgIClcbiAgICB8IFNvbWUgKGRzdF90eSwgZHN0X3AsIGRzdF9pZCwgcG9zJywgc3dpdGNoJyksIG9uZScgLT5cbiAgICAgIGlmIFNpZ25hdHVyZS5hbGxvd2VkX2xpbmsgYWdfdHkgcF9pZCBkc3RfdHkgZHN0X3Agc2lncyB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwIGFnX3R5IHBfaWQgZHN0X3R5IGRzdF9wIGluXG4gICAgICAgIGxldCBtYWludGFpbmVkID1cbiAgICAgICAgICBtYXRjaCBzd2l0Y2ggd2l0aFxuICAgICAgICAgIHwgTEthcHBhLkxpbmtlZCBqIC0+XG4gICAgICAgICAgICBsZXQgbGlua19zd2FwID0gU29tZSBqIDw+IGRzdF9pZCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgaWYgbGlua19zd2FwIHRoZW4gKFxuICAgICAgICAgICAgICAgIG1hdGNoIHdhcm5fb25fc3dhcCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBTb21lIHdhcm5pbmcgLT5cbiAgICAgICAgICAgICAgICAgIHJ1bGVfaW5kdWNlc19saW5rX3Blcm11dGF0aW9uIH53YXJuaW5nIH5wb3MgfmRzdF90eSBzaWdzIGFnX3R5XG4gICAgICAgICAgICAgICAgICAgIHBfaWRcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG5vdCBsaW5rX3N3YXBcbiAgICAgICAgICB8IExLYXBwYS5GcmVlZCB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgX2NoZWNrX2NvbXBhdGliaWx0eSA9XG4gICAgICAgICAgbWF0Y2ggc3dpdGNoLCBzd2l0Y2gnIHdpdGhcbiAgICAgICAgICB8IExLYXBwYS5NYWludGFpbmVkLCBMS2FwcGEuTWFpbnRhaW5lZCAtPiAoKVxuICAgICAgICAgIHwgTEthcHBhLk1haW50YWluZWQsIChMS2FwcGEuRnJlZWQgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfKVxuICAgICAgICAgICAgLT5cbiAgICAgICAgICAgIHNpdGVfc2hvdWxkX21hZGVfYmVfZnJlZSBpIHNpZ3MgYWdfdHkgcF9pZCBwb3NcbiAgICAgICAgICB8IChMS2FwcGEuRnJlZWQgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfKSwgTEthcHBhLk1haW50YWluZWRcbiAgICAgICAgICAgIC0+XG4gICAgICAgICAgICBzaXRlX3Nob3VsZF9tYWRlX2JlX2ZyZWUgaSBzaWdzIGRzdF90eSBkc3RfcCBwb3MnXG4gICAgICAgICAgfCAoIChMS2FwcGEuRnJlZWQgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfKSxcbiAgICAgICAgICAgICAgKExLYXBwYS5GcmVlZCB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuTGlua2VkIF8pICkgLT5cbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgICggKCAoTEthcHBhLkxOS19WQUxVRSAoaSwgKGRzdF9wLCBkc3RfdHkpKSwgcG9zKSxcbiAgICAgICAgICAgIGlmIG1haW50YWluZWQgdGhlblxuICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBzd2l0Y2ggKSxcbiAgICAgICAgICAob25lJywgTW9kcy5JbnRNYXAuYWRkIGkgKGFnX3R5LCBwX2lkLCBtYWludGFpbmVkKSBsaW5rc190d28pIClcbiAgICAgICkgZWxzZVxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKCBGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgXCJGb3JiaWRkZW4gbGluayB0byBhICVhLiVhIGZyb20gc2lnbmF0dXJlIGRlY2xhcmF0aW9uXCJcbiAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgZHN0X3R5KVxuICAgICAgICAgICAgICAgICBkc3RfcFxuICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgICAgICAgIGRzdF90eSxcbiAgICAgICAgICAgICAgIHBvcyApKVxuICApXG5cbmxldCBhbm5vdGF0ZV9kcm9wcGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+cl9lZGl0X3N0eWxlIHNpZ3NcbiAgICBsaW5rc19hbm5vdCAoKGFnZW50X25hbWUsIF8pIGFzIGFnX3R5KSBzaW1wbGVfcG9ydF9saXN0IGNvdW50ZXJfbGlzdCA9XG4gIGxldCBhZ19pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdfdHkgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcG9ydHMgPVxuICAgIEFycmF5Lm1ha2UgYXJpdHkgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuRXJhc2VkKVxuICBpblxuICBsZXQgaW50ZXJuYWxzID1cbiAgICBBcnJheS5pbml0IGFyaXR5IChmdW4gaSAtPlxuICAgICAgICBtYXRjaCBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSBhZ19pZCBpIHNpZ3Mgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTEthcHBhLklfQU5ZXG4gICAgICAgIHwgU29tZSBfIC0+IExLYXBwYS5JX0FOWV9FUkFTRUQpXG4gIGluXG4gIGxldCBsYW5ub3QsIF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChsYW5ub3QsIHBzZXQpIHAgLT5cbiAgICAgICAgbGV0ICgoXywgcF9wb3MpIGFzIHBvcnRfbmFtZSkgPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgICAgbGV0IHBfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIHNpZ24gaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBfaWQgc2lnbiB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT4gTEthcHBhLnJhaXNlX2NvdW50ZXJfbWlzdXNlZCBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcF9pZCBwc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIHAuQXN0LnBvcnRfbGlua19tb2QsIHAuQXN0LnBvcnRfbGluayB3aXRoXG4gICAgICAgICAgfCBOb25lLCBfIC0+ICgpXG4gICAgICAgICAgfCBTb21lIE5vbmUsIFsgKExLYXBwYS5MTktfVkFMVUUgKF8sICgpKSwgXykgXVxuICAgICAgICAgICgqIFtpLy5dIGlzIGFsbG93ZWQgaW4gZGVncmFkZWQgYWdlbnQuXG4gICAgICAgICAgICAgSXQgd2lsbCBiZSBjaGVja2VkIGxhdGVyIHRoYXQgdGhlIG90aGVyIHNpdGUgd2l0aCBsaW5rIGlkIGkgaXMgYWxzbyBmcmVlZCBpbiB0aGUgcnVsZSAqKVxuICAgICAgICAgICgqIFBsZWFzZSBub3RlIHRoYXQgYSBydWxlIHdyaXR0ZW4gYXMgQSh4WzFdKS0sQih4WzEvLl0pLSBpcyBhbGxvd2VkICopXG4gICAgICAgICAgICAtPlxuICAgICAgICAgICAgKClcbiAgICAgICAgICB8ICggU29tZSAoTm9uZSB8IFNvbWUgXyksXG4gICAgICAgICAgICAgICggW11cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuTE5LX1ZBTFVFIChfLCAoKSksIF8pIF1cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF1cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuTE5LX0ZSRUUsIF8pIF1cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgXykgXVxuICAgICAgICAgICAgICB8IFsgKExLYXBwYS5MTktfU09NRSwgXykgXVxuICAgICAgICAgICAgICB8IFsgKExLYXBwYS5MTktfVFlQRSAoXywgXyksIF8pIF1cbiAgICAgICAgICAgICAgfCBfIDo6IF8gOjogXyApICkgLT5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb24gcF9wb3MgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfaW50X21vZCBpblxuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggcC5Bc3QucG9ydF9pbnQgd2l0aFxuICAgICAgICAgIHwgW10gfCBbIChOb25lLCBfKSBdIC0+ICgpXG4gICAgICAgICAgfCBbIChTb21lIHZhLCBwb3MpIF0gLT5cbiAgICAgICAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgICAgICAgTEthcHBhLklfVkFMX0VSQVNFRFxuICAgICAgICAgICAgICAgIChTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgKHZhLCBwb3MpIHNpZ24pXG4gICAgICAgICAgfCBfIDo6IChfLCBwb3MpIDo6IF8gLT4gTEthcHBhLnJhaXNlX3NldmVyYWxfaW50ZXJuYWxfc3RhdGVzIHBvc1xuICAgICAgICBpblxuICAgICAgICBtYXRjaCBwLkFzdC5wb3J0X2xpbmsgd2l0aFxuICAgICAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBwb3MpIF0gLT5cbiAgICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5BTllfRlJFRSwgcG9zKSwgTEthcHBhLkVyYXNlZCBpblxuICAgICAgICAgIGxhbm5vdCwgcHNldCdcbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSBdIC0+XG4gICAgICAgICAgbGV0IHBvcnRfbmFtZSwgcG9zID0gcC5Bc3QucG9ydF9uYW1lIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCJcbiAgICAgICAgICAgICAgICAgIHBvcnRfbmFtZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluayksIExLYXBwYS5FcmFzZWQgaW5cbiAgICAgICAgICBsYW5ub3QsIHBzZXQnXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19UWVBFIChkc3RfcCwgZHN0X3R5KSwgcG9zX2xpbmspIF0gLT5cbiAgICAgICAgICBsZXQgcG9ydF9uYW1lLCBwb3MgPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIlxuICAgICAgICAgICAgICAgICAgcG9ydF9uYW1lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHBvcnRzLihwX2lkKSA8LVxuICAgICAgICAgICAgICBidWlsZF9sX3R5cGUgc2lncyBwb3NfbGluayBkc3RfdHkgZHN0X3AgTEthcHBhLkVyYXNlZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGFubm90LCBwc2V0J1xuICAgICAgICB8IChbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF0gfCBbXSkgd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuRXJhc2VkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsYW5ub3QsIHBzZXQnXG4gICAgICAgIHwgWyAoTEthcHBhLkFOWV9GUkVFLCBfKSBdIHwgW10gLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5BTllfRlJFRSwgTEthcHBhLkVyYXNlZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGFubm90LCBwc2V0J1xuICAgICAgICB8IFsgKExLYXBwYS5MTktfRlJFRSwgXykgXSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuRXJhc2VkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsYW5ub3QsIHBzZXQnXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MpIF0gLT5cbiAgICAgICAgICBsZXQgdmEsIGxhbm5vdCcgPVxuICAgICAgICAgICAgbGV0IHdhcm5fb25fc3dhcCA9XG4gICAgICAgICAgICAgIGlmIHJfZWRpdF9zdHlsZSB0aGVuXG4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgU29tZSB3YXJuaW5nXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYnVpbGRfbGluayA/d2Fybl9vbl9zd2FwIHNpZ3MgcG9zIGkgYWdfaWQgcF9pZCBMS2FwcGEuRXJhc2VkIGxhbm5vdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIHZhIGluXG4gICAgICAgICAgbGFubm90JywgcHNldCdcbiAgICAgICAgfCBfIDo6IChfLCBwb3MpIDo6IF8gLT5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgIChcIlNldmVyYWwgbGluayBzdGF0ZSBmb3IgYSBzaW5nbGUgc2l0ZVwiLCBwb3MpKSlcbiAgICAgIChsaW5rc19hbm5vdCwgTW9kcy5JbnRTZXQuZW1wdHkpXG4gICAgICBzaW1wbGVfcG9ydF9saXN0XG4gIGluXG4gIGxldCByYSA9XG4gICAge1xuICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZ19pZDtcbiAgICAgIHJhX3BvcnRzID0gcG9ydHM7XG4gICAgICByYV9pbnRzID0gaW50ZXJuYWxzO1xuICAgICAgcmFfZXJhc2VkID0gdHJ1ZTtcbiAgICAgIHJhX3N5bnRheCA9IFNvbWUgKEFycmF5LmNvcHkgcG9ydHMsIEFycmF5LmNvcHkgaW50ZXJuYWxzKTtcbiAgICB9XG4gIGluXG4gICggQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfZHJvcHBlZF9jb3VudGVycyBzaWduIGNvdW50ZXJfbGlzdCByYSBhcml0eVxuICAgICAgYWdlbnRfbmFtZSBOb25lLFxuICAgIGxhbm5vdCApXG5cbmxldCBhbm5vdGF0ZV9jcmVhdGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+cl9lZGl0X3N0eWxlIHNpZ3NcbiAgICA/Y29udGFjdF9tYXAgcmFubm90ICgoYWdlbnRfbmFtZSwgXykgYXMgYWdfdHkpIHNpbXBsZV9wb3J0X2xpc3QgPVxuICBsZXQgYWdfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnX3R5IHNpZ3MgaW5cbiAgbGV0IHNpZ24gPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IGFyaXR5ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IHBvcnRzID0gQXJyYXkubWFrZSBhcml0eSBSYXdfbWl4dHVyZS5GUkVFIGluXG4gIGxldCBpbnRlcm5hbHMgPVxuICAgIEFycmF5LmluaXQgYXJpdHkgKGZ1biBpIC0+IFNpZ25hdHVyZS5kZWZhdWx0X2ludGVybmFsX3N0YXRlIGFnX2lkIGkgc2lncylcbiAgaW5cbiAgbGV0IF8sIHJhbm5vdCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKHBzZXQsIHJhbm5vdCkgcCAtPlxuICAgICAgICBsZXQgKChfLCBwX3BvcykgYXMgcG9ydF9uYW1lKSA9IHAuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgICBsZXQgcF9pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwb3J0X25hbWUgc2lnbiBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIFNpZ25hdHVyZS5jb3VudGVyX29mX3NpdGVfaWQgcF9pZCBzaWduIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXyAtPiBMS2FwcGEucmFpc2VfY291bnRlcl9taXN1c2VkIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwc2V0JyA9IE1vZHMuSW50U2V0LmFkZCBwX2lkIHBzZXQgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwc2V0ID09IHBzZXQnIHRoZW5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb24gcF9wb3MgcC5Bc3QucG9ydF9saW5rX21vZCBpblxuICAgICAgICBsZXQgKCkgPSBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfaW50X21vZCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIHAuQXN0LnBvcnRfaW50IHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBbIChOb25lLCBfKSBdIC0+XG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImludGVybmFsXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICAgICAgYWdlbnRfbmFtZSBwb3J0X25hbWVcbiAgICAgICAgICB8IFsgKFNvbWUgdmEsIHBvcykgXSAtPlxuICAgICAgICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LVxuICAgICAgICAgICAgICBTb21lIChTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgKHZhLCBwb3MpIHNpZ24pXG4gICAgICAgICAgfCBfIDo6IChfLCBwb3MpIDo6IF8gLT4gTEthcHBhLnJhaXNlX3NldmVyYWxfaW50ZXJuYWxfc3RhdGVzIHBvc1xuICAgICAgICBpblxuICAgICAgICBtYXRjaCBwLkFzdC5wb3J0X2xpbmsgd2l0aFxuICAgICAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBfKSBdXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19TT01FLCBfKSBdXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19UWVBFIF8sIF8pIF1cbiAgICAgICAgfCBfIDo6IF8gOjogXyAtPlxuICAgICAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwibGlua2luZ1wiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgICAgICBhZ2VudF9uYW1lIHBvcnRfbmFtZVxuICAgICAgICB8IFsgKExLYXBwYS5BTllfRlJFRSwgXykgXSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlY0IC0+XG4gICAgICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICAgIGFnZW50X25hbWUgcG9ydF9uYW1lXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MpIF0gLT5cbiAgICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gUmF3X21peHR1cmUuVkFMIGkgaW5cbiAgICAgICAgICBsZXQgXywgcmFubm90JyA9XG4gICAgICAgICAgICBsZXQgd2Fybl9vbl9zd2FwID1cbiAgICAgICAgICAgICAgaWYgcl9lZGl0X3N0eWxlIHRoZW5cbiAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBTb21lIHdhcm5pbmdcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBidWlsZF9saW5rID93YXJuX29uX3N3YXAgc2lncyA/Y29udGFjdF9tYXAgcG9zIGkgYWdfaWQgcF9pZFxuICAgICAgICAgICAgICBMS2FwcGEuRnJlZWQgcmFubm90XG4gICAgICAgICAgaW5cbiAgICAgICAgICBwc2V0JywgcmFubm90J1xuICAgICAgICB8IFsgKChMS2FwcGEuQU5ZX0ZSRUUgfCBMS2FwcGEuTE5LX0ZSRUUpLCBfKSBdIHwgW10gLT4gcHNldCcsIHJhbm5vdClcbiAgICAgIChNb2RzLkludFNldC5lbXB0eSwgcmFubm90KVxuICAgICAgc2ltcGxlX3BvcnRfbGlzdFxuICBpblxuICAoIHJhbm5vdCxcbiAgICB7XG4gICAgICBSYXdfbWl4dHVyZS5hX3R5cGUgPSBhZ19pZDtcbiAgICAgIFJhd19taXh0dXJlLmFfcG9ydHMgPSBwb3J0cztcbiAgICAgIFJhd19taXh0dXJlLmFfaW50cyA9IGludGVybmFscztcbiAgICB9IClcblxubGV0IHRyYW5zbGF0ZV9tb2RpZmljYXRpb24gfndhcm5pbmcgc2lncyA/Y29udGFjdF9tYXAgYWdfaWQgcF9pZCA/d2Fybl9pbmZvXG4gICAgKChsaHNfbGlua3MsIHJoc19saW5rcykgYXMgbGlua3NfYW5ub3QpID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IExLYXBwYS5NYWludGFpbmVkLCBsaW5rc19hbm5vdFxuICB8IFNvbWUgeCAtPlxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCB3YXJuX2luZm8gd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKHNpdGVfbmFtZSwgcG9zKSAtPlxuICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIlxuICAgICAgICAgICAgICBzaXRlX25hbWUpXG4gICAgaW5cbiAgICAobWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IExLYXBwYS5GcmVlZCwgbGlua3NfYW5ub3RcbiAgICB8IFNvbWUgKGosIHBvc19qKSAtPlxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rID93YXJuX29uX3N3YXA6Tm9uZSBzaWdzID9jb250YWN0X21hcCBwb3NfaiBqIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgTEthcHBhLkxpbmtlZCBqLCAobGhzX2xpbmtzLCByaHNfbGlua3MnKSlcblxubGV0IGFubm90YXRlX2VkaXRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5pc19ydWxlIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ190eSkgbGlua3NfYW5ub3Qgc2ltcGxlX3BvcnRfbGlzdCBjb3VudGVyX2xpc3QgPVxuICBsZXQgYWdfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnX3R5IHNpZ3MgaW5cbiAgbGV0IHNpZ24gPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IGFyaXR5ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IHBvcnRzID1cbiAgICBBcnJheS5tYWtlIGFyaXR5IChMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSwgTEthcHBhLk1haW50YWluZWQpXG4gIGluXG4gIGxldCBpbnRlcm5hbHMgPSBBcnJheS5tYWtlIGFyaXR5IExLYXBwYS5JX0FOWSBpblxuICBsZXQgc2Nhbl9wb3J0IChsaW5rc19hbm5vdCwgcHNldCkgcCA9XG4gICAgbGV0IHBvcnRfbmFtZSwgXyA9IHAuQXN0LnBvcnRfbmFtZSBpblxuICAgIGxldCBwX2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZSBzaWduIGluXG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIFNpZ25hdHVyZS5jb3VudGVyX29mX3NpdGVfaWQgcF9pZCBzaWduIHdpdGhcbiAgICAgIHwgU29tZSBfIC0+IExLYXBwYS5yYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSBwLkFzdC5wb3J0X25hbWVcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgIGluXG4gICAgbGV0IHBzZXQnID0gTW9kcy5JbnRTZXQuYWRkIHBfaWQgcHNldCBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBwc2V0ID09IHBzZXQnIHRoZW5cbiAgICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSBwLkFzdC5wb3J0X25hbWVcbiAgICBpblxuICAgIGxldCBsaW5rc19hbm5vdCcgPVxuICAgICAgbWF0Y2ggcC5Bc3QucG9ydF9saW5rIHdpdGhcbiAgICAgIHwgWyAoKExLYXBwYS5MTktfU09NRSwgcG9zKSBhcyB4KSBdIC0+XG4gICAgICAgIGxldCBtb2RpZiwgbGlua3NfYW5ub3QnID1cbiAgICAgICAgICB0cmFuc2xhdGVfbW9kaWZpY2F0aW9uIH53YXJuaW5nIH53YXJuX2luZm86KHBvcnRfbmFtZSwgcG9zKSBzaWdzXG4gICAgICAgICAgICA/Y29udGFjdF9tYXAgYWdfaWQgcF9pZCBsaW5rc19hbm5vdCBwLkFzdC5wb3J0X2xpbmtfbW9kXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSB4LCBtb2RpZiBpblxuICAgICAgICBsaW5rc19hbm5vdCdcbiAgICAgIHwgWyAoTEthcHBhLkxOS19BTlksIHBvcykgXSAtPlxuICAgICAgICBsZXQgbW9kaWYsIGxpbmtzX2Fubm90JyA9XG4gICAgICAgICAgdHJhbnNsYXRlX21vZGlmaWNhdGlvbiB+d2FybmluZyB+d2Fybl9pbmZvOihwb3J0X25hbWUsIHBvcykgc2lnc1xuICAgICAgICAgICAgP2NvbnRhY3RfbWFwIGFnX2lkIHBfaWQgbGlua3NfYW5ub3QgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5BTllfRlJFRSwgcG9zKSwgbW9kaWYgaW5cbiAgICAgICAgbGlua3NfYW5ub3QnXG4gICAgICB8IChbXSB8IFsgKExLYXBwYS5BTllfRlJFRSwgXykgXSkgd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgICBsZXQgbW9kaWYsIGxpbmtzX2Fubm90JyA9XG4gICAgICAgICAgdHJhbnNsYXRlX21vZGlmaWNhdGlvbiB+d2FybmluZyA/d2Fybl9pbmZvOk5vbmUgc2lncyA/Y29udGFjdF9tYXBcbiAgICAgICAgICAgIGFnX2lkIHBfaWQgbGlua3NfYW5ub3QgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBtb2RpZiBpblxuICAgICAgICBsaW5rc19hbm5vdCdcbiAgICAgIHwgW10gd2hlbiBwLkFzdC5wb3J0X2xpbmtfbW9kID0gTm9uZSAtPiBsaW5rc19hbm5vdFxuICAgICAgfCBbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF0gfCBbXSAtPlxuICAgICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImxpbmtpbmdcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICAgIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgICB8IFsgKExLYXBwYS5MTktfRlJFRSwgXykgXSAtPlxuICAgICAgICBsZXQgbW9kaWYsIGxpbmtzX2Fubm90JyA9XG4gICAgICAgICAgdHJhbnNsYXRlX21vZGlmaWNhdGlvbiB+d2FybmluZyA/d2Fybl9pbmZvOk5vbmUgc2lncyA/Y29udGFjdF9tYXBcbiAgICAgICAgICAgIGFnX2lkIHBfaWQgbGlua3NfYW5ub3QgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBtb2RpZiBpblxuICAgICAgICBsaW5rc19hbm5vdCdcbiAgICAgIHwgWyAoTEthcHBhLkxOS19UWVBFIChkc3RfcCwgZHN0X3R5KSwgcG9zKSBdIC0+XG4gICAgICAgIGxldCBtb2RpZiwgbGlua3NfYW5ub3QnID1cbiAgICAgICAgICB0cmFuc2xhdGVfbW9kaWZpY2F0aW9uIH53YXJuaW5nIH53YXJuX2luZm86KHBvcnRfbmFtZSwgcG9zKSBzaWdzXG4gICAgICAgICAgICA/Y29udGFjdF9tYXAgYWdfaWQgcF9pZCBsaW5rc19hbm5vdCBwLkFzdC5wb3J0X2xpbmtfbW9kXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSBidWlsZF9sX3R5cGUgc2lncyBwb3MgZHN0X3R5IGRzdF9wIG1vZGlmIGluXG4gICAgICAgIGxpbmtzX2Fubm90J1xuICAgICAgfCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSAtPlxuICAgICAgICBsZXQgbW9kaWYsIChsaHNfbGlua3MsIHJoc19saW5rcykgPVxuICAgICAgICAgIHRyYW5zbGF0ZV9tb2RpZmljYXRpb24gfndhcm5pbmcgP3dhcm5faW5mbzpOb25lIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgICAgICAgICBhZ19pZCBwX2lkIGxpbmtzX2Fubm90IHAuQXN0LnBvcnRfbGlua19tb2RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHZhLCBsaHNfbGlua3MnID1cbiAgICAgICAgICBidWlsZF9saW5rIHNpZ3NcbiAgICAgICAgICAgID9jb250YWN0X21hcDpcbiAgICAgICAgICAgICAgKGlmIGlzX3J1bGUgdGhlblxuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGNvbnRhY3RfbWFwKVxuICAgICAgICAgICAgP3dhcm5fb25fc3dhcDpOb25lIHBvcyBpIGFnX2lkIHBfaWQgbW9kaWYgbGhzX2xpbmtzXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSB2YSBpblxuICAgICAgICBsaHNfbGlua3MnLCByaHNfbGlua3NcbiAgICAgIHwgXyA6OiAoXywgcG9zKSA6OiBfIC0+XG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoXCJTZXZlcmFsIGxpbmsgc3RhdGUgZm9yIGEgc2luZ2xlIHNpdGVcIiwgcG9zKSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBwLkFzdC5wb3J0X2ludCwgcC5Bc3QucG9ydF9pbnRfbW9kIHdpdGhcbiAgICAgIHwgKFsgKE5vbmUsIF8pIF0gfCBbXSksIE5vbmUgLT4gKClcbiAgICAgIHwgWyAoU29tZSB2YSwgcG9zKSBdLCBTb21lIHZhJyAtPlxuICAgICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtXG4gICAgICAgICAgTEthcHBhLklfVkFMX0NIQU5HRURcbiAgICAgICAgICAgICggU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YSwgcG9zKSBzaWduLFxuICAgICAgICAgICAgICBTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgdmEnIHNpZ24gKVxuICAgICAgfCBbXSwgU29tZSAoKF8sIHBvcykgYXMgdmEpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgdGhlblxuICAgICAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgIFwiaW50ZXJuYWwgc3RhdGUgb2Ygc2l0ZSAnJXMnIG9mIGFnZW50ICclcycgaXMgbW9kaWZpZWQgXFxcbiAgICAgICAgICAgICAgICAgICBhbHRob3VnaCBpdCBpcyBsZWZ0IHVucGVjaWZpZWQgaW4gdGhlIGxlZnQgaGFuZCBzaWRlXCJcbiAgICAgICAgICAgICAgICAgIHBvcnRfbmFtZSBhZ2VudF9uYW1lKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgIChcIk1vZGlmaWVkIGludGVybmFsIHN0YXRlIG11c3QgYXBwZWFyIG9uIHRoZSBsZWZ0XCIsIHBvcykpXG4gICAgICAgIGluXG4gICAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgICBMS2FwcGEuSV9BTllfQ0hBTkdFRCAoU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkIHZhIHNpZ24pXG4gICAgICB8IFsgKE5vbmUsIF8pIF0sIFNvbWUgdmEgLT5cbiAgICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LVxuICAgICAgICAgIExLYXBwYS5JX0FOWV9DSEFOR0VEIChTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgdmEgc2lnbilcbiAgICAgIHwgWyAoU29tZSB2YSwgcG9zKSBdLCBOb25lIC0+XG4gICAgICAgIGxldCBpX2lkID0gU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YSwgcG9zKSBzaWduIGluXG4gICAgICAgIGludGVybmFscy4ocF9pZCkgPC0gTEthcHBhLklfVkFMX0NIQU5HRUQgKGlfaWQsIGlfaWQpXG4gICAgICB8IF8gOjogKF8sIHBvcykgOjogXywgXyAtPiBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9pbnRlcm5hbF9zdGF0ZXMgcG9zXG4gICAgaW5cbiAgICBsaW5rc19hbm5vdCcsIHBzZXQnXG4gIGluXG4gIGxldCBhbm5vdGVkJywgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnQgc2Nhbl9wb3J0IChsaW5rc19hbm5vdCwgTW9kcy5JbnRTZXQuZW1wdHkpIHNpbXBsZV9wb3J0X2xpc3RcbiAgaW5cbiAgbGV0IHJhID1cbiAgICB7XG4gICAgICBMS2FwcGEucmFfdHlwZSA9IGFnX2lkO1xuICAgICAgcmFfcG9ydHMgPSBwb3J0cztcbiAgICAgIHJhX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgICByYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgIHJhX3N5bnRheCA9IFNvbWUgKEFycmF5LmNvcHkgcG9ydHMsIEFycmF5LmNvcHkgaW50ZXJuYWxzKTtcbiAgICB9XG4gIGluXG4gICggQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfZWRpdF9jb3VudGVycyBzaWdzIGFnX3R5IGNvdW50ZXJfbGlzdCByYVxuICAgICAgKGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcCksXG4gICAgYW5ub3RlZCcgKVxuXG5sZXQgYW5ub3RhdGVfYWdlbnRfd2l0aF9kaWZmIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzID9jb250YWN0X21hcFxuICAgICgoYWdlbnRfbmFtZSwgXykgYXMgYWdfdHkpIGxpbmtzX2Fubm90IGxwIHJwIGxjIHJjID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ190eSBzaWdzIGluXG4gIGxldCBzaWduID0gU2lnbmF0dXJlLmdldCBzaWdzIGFnX2lkIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFnX2lkIGluXG4gIGxldCBwb3J0cyA9XG4gICAgQXJyYXkubWFrZSBhcml0eSAoTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19BTlksIExLYXBwYS5NYWludGFpbmVkKVxuICBpblxuICBsZXQgaW50ZXJuYWxzID0gQXJyYXkubWFrZSBhcml0eSBMS2FwcGEuSV9BTlkgaW5cbiAgbGV0IHJlZ2lzdGVyX3BvcnRfbW9kaWYgcF9pZCBsbmsxIHAnICgobGhzX2xpbmtzLCByaHNfbGlua3MpIGFzIGxpbmtzX2Fubm90KSA9XG4gICAgbGV0ICgpID1cbiAgICAgIExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb25cbiAgICAgICAgKExvYy5nZXRfYW5ub3QgcCcuQXN0LnBvcnRfbmFtZSlcbiAgICAgICAgcCcuQXN0LnBvcnRfbGlua19tb2RcbiAgICBpblxuICAgIG1hdGNoIGxuazEsIHAnLkFzdC5wb3J0X2xpbmsgd2l0aFxuICAgIHwgWyAoTEthcHBhLkxOS19BTlksIHBvcykgXSwgWyAoTEthcHBhLkxOS19BTlksIF8pIF0gLT5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkFOWV9GUkVFLCBwb3MpLCBMS2FwcGEuTWFpbnRhaW5lZCBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8IFsgKExLYXBwYS5MTktfU09NRSwgcG9zKSBdLCBbIChMS2FwcGEuTE5LX1NPTUUsIF8pIF0gLT5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19TT01FLCBwb3MpLCBMS2FwcGEuTWFpbnRhaW5lZCBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8ICggW1xuICAgICAgICAgICggTEthcHBhLkxOS19UWVBFICgoKGRzdF9wJycsIF8pIGFzIGRzdF9wKSwgKChkc3RfdHknJywgXykgYXMgZHN0X3R5KSksXG4gICAgICAgICAgICBwb3MgKTtcbiAgICAgICAgXSxcbiAgICAgICAgWyAoTEthcHBhLkxOS19UWVBFICgoZHN0X3AnLCBfKSwgKGRzdF90eScsIF8pKSwgXykgXSApXG4gICAgICB3aGVuIGRzdF9wJycgPSBkc3RfcCcgJiYgZHN0X3R5JycgPSBkc3RfdHknIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gYnVpbGRfbF90eXBlIHNpZ3MgcG9zIGRzdF90eSBkc3RfcCBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIF8sXG4gICAgICAgICggWyAoTEthcHBhLkxOS19BTlksIF8pIF1cbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIF8pIF1cbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX1RZUEUgXywgXykgXSApICkgLT5cbiAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwibGlua2luZ1wiIH5zaWRlOlwicmlnaHRcIlxuICAgICAgICBhZ2VudF9uYW1lIHAnLkFzdC5wb3J0X25hbWVcbiAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBwb3MpIF0sIFtdIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19BTlksIHBvcyksIExLYXBwYS5GcmVlZCBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBwb3MpIF0sIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdIC0+XG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfQU5ZLCBwb3MpLCBMS2FwcGEuRnJlZWQgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIFsgKExLYXBwYS5MTktfU09NRSwgcG9zX2xpbmspIF0sXG4gICAgICAgIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdICkgLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCIgbmEpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSwgTEthcHBhLkZyZWVkIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCBbIChMS2FwcGEuTE5LX1RZUEUgKGRzdF9wLCBkc3RfdHkpLCBwb3NfbGluaykgXSxcbiAgICAgICAgWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0gKSAtPlxuICAgICAgbGV0IG5hLCBwb3MgPSBwJy5Bc3QucG9ydF9uYW1lIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIiBuYSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gYnVpbGRfbF90eXBlIHNpZ3MgcG9zX2xpbmsgZHN0X3R5IGRzdF9wIExLYXBwYS5GcmVlZFxuICAgICAgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSBdLCBbXSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiIG5hKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluayksIExLYXBwYS5GcmVlZCBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8IFsgKExLYXBwYS5MTktfVFlQRSAoZHN0X3AsIGRzdF90eSksIHBvc19saW5rKSBdLCBbXVxuICAgICAgd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgbGV0IG5hLCBwb3MgPSBwJy5Bc3QucG9ydF9uYW1lIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIiBuYSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gYnVpbGRfbF90eXBlIHNpZ3MgcG9zX2xpbmsgZHN0X3R5IGRzdF9wIExLYXBwYS5GcmVlZFxuICAgICAgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIChbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSB8IFtdKSxcbiAgICAgICAgKFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdIHwgW10pIClcbiAgICAgIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIExLYXBwYS5NYWludGFpbmVkXG4gICAgICBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8ICggWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0sXG4gICAgICAgIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdICkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIExLYXBwYS5NYWludGFpbmVkXG4gICAgICBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8IFtdLCBbXSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdLFxuICAgICAgICBbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSApIC0+XG4gICAgICBsZXQgdmEsIGxoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nIHBvcyBpIGFnX2lkIHBfaWQgTEthcHBhLkZyZWVkXG4gICAgICAgICAgbGhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIHZhIGluXG4gICAgICBsaHNfbGlua3MnLCByaHNfbGlua3NcbiAgICB8IFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdLCBbXSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgdmEsIGxoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nIHBvcyBpIGFnX2lkIHBfaWQgTEthcHBhLkZyZWVkXG4gICAgICAgICAgbGhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIHZhIGluXG4gICAgICBsaHNfbGlua3MnLCByaHNfbGlua3NcbiAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBwb3NfbGluaykgXSwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MpIF0gLT5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19BTlksIHBvc19saW5rKSwgTEthcHBhLkxpbmtlZCBpIGluXG4gICAgICBsZXQgXywgcmhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgP2NvbnRhY3RfbWFwIHBvcyBpIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGhzX2xpbmtzLCByaHNfbGlua3MnXG4gICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSBdLCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcycpIF0gLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCIgbmEpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSwgTEthcHBhLkxpbmtlZCBpIGluXG4gICAgICBsZXQgXywgcmhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgP2NvbnRhY3RfbWFwIHBvcycgaSBhZ19pZCBwX2lkXG4gICAgICAgICAgTEthcHBhLkZyZWVkIHJoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxoc19saW5rcywgcmhzX2xpbmtzJ1xuICAgIHwgKCBbIChMS2FwcGEuTE5LX1RZUEUgKGRzdF9wLCBkc3RfdHkpLCBwb3NfbGluaykgXSxcbiAgICAgICAgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MnKSBdICkgLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCIgbmEpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtXG4gICAgICAgICAgYnVpbGRfbF90eXBlIHNpZ3MgcG9zX2xpbmsgZHN0X3R5IGRzdF9wIChMS2FwcGEuTGlua2VkIGkpXG4gICAgICBpblxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nID9jb250YWN0X21hcCBwb3MnIGkgYWdfaWQgcF9pZFxuICAgICAgICAgIExLYXBwYS5GcmVlZCByaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBsaHNfbGlua3MsIHJoc19saW5rcydcbiAgICB8ICggWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0sXG4gICAgICAgIFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdICkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIExLYXBwYS5MaW5rZWQgaVxuICAgICAgaW5cbiAgICAgIGxldCBfLCByaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyA/Y29udGFjdF9tYXAgcG9zIGkgYWdfaWQgcF9pZFxuICAgICAgICAgIExLYXBwYS5GcmVlZCByaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBsaHNfbGlua3MsIHJoc19saW5rcydcbiAgICB8IFtdLCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTGlua2VkIGlcbiAgICAgIGluXG4gICAgICBsZXQgXywgcmhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgP2NvbnRhY3RfbWFwIHBvcyBpIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGhzX2xpbmtzLCByaHNfbGlua3MnXG4gICAgfCAoIFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zX2kpIF0sXG4gICAgICAgIFsgKExLYXBwYS5MTktfVkFMVUUgKGosICgpKSwgcG9zX2opIF0gKSAtPlxuICAgICAgbGV0IHZhLCBsaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyBwb3NfaSBpIGFnX2lkIHBfaWRcbiAgICAgICAgICAoTEthcHBhLkxpbmtlZCBqKSBsaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBsZXQgXywgcmhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgP2NvbnRhY3RfbWFwIHBvc19qIGogYWdfaWQgcF9pZFxuICAgICAgICAgIExLYXBwYS5GcmVlZCByaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gdmEgaW5cbiAgICAgIGxoc19saW5rcycsIHJoc19saW5rcydcbiAgICB8ICggW1xuICAgICAgICAgICggKCBMS2FwcGEuTE5LX1ZBTFVFIChfLCAoKSlcbiAgICAgICAgICAgIHwgTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFXG4gICAgICAgICAgICB8IExLYXBwYS5MTktfVFlQRSAoXywgXylcbiAgICAgICAgICAgIHwgTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkxOS19BTlkgKSxcbiAgICAgICAgICAgIF8gKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10gKSAtPlxuICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJyaWdodFwiXG4gICAgICAgIGFnZW50X25hbWUgcCcuQXN0LnBvcnRfbmFtZVxuICAgIHwgW10sIFsgKChMS2FwcGEuQU5ZX0ZSRUUgfCBMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuTE5LX1ZBTFVFIChfLCBfKSksIF8pIF1cbiAgICAgIC0+XG4gICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImxpbmtpbmdcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICBhZ2VudF9uYW1lIHAnLkFzdC5wb3J0X25hbWVcbiAgICB8IF8gOjogKF8sIHBvcykgOjogXywgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiU2V2ZXJhbCBsaW5rIHN0YXRlIGZvciBhIHNpbmdsZSBzaXRlXCIsIHBvcykpXG4gICAgfCBfLCBfIDo6IChfLCBwb3MpIDo6IF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIlNldmVyYWwgbGluayBzdGF0ZSBmb3IgYSBzaW5nbGUgc2l0ZVwiLCBwb3MpKVxuICBpblxuICBsZXQgcmVnaXN0ZXJfaW50ZXJuYWxfbW9kaWYgcF9pZCBpbnQxIHAnID1cbiAgICBsZXQgKCkgPVxuICAgICAgTEthcHBhLnJhaXNlX2lmX21vZGlmaWNhdGlvblxuICAgICAgICAoTG9jLmdldF9hbm5vdCBwJy5Bc3QucG9ydF9uYW1lKVxuICAgICAgICBwJy5Bc3QucG9ydF9pbnRfbW9kXG4gICAgaW5cbiAgICBtYXRjaCBpbnQxLCBwJy5Bc3QucG9ydF9pbnQgd2l0aFxuICAgIHwgW10sIFtdIHwgWyAoTm9uZSwgXykgXSwgWyAoTm9uZSwgXykgXSAtPiAoKVxuICAgIHwgWyAoU29tZSB2YSwgcG9zKSBdLCBbIChTb21lIHZhJywgcG9zJykgXSAtPlxuICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LVxuICAgICAgICBMS2FwcGEuSV9WQUxfQ0hBTkdFRFxuICAgICAgICAgICggU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YSwgcG9zKSBzaWduLFxuICAgICAgICAgICAgU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YScsIHBvcycpIHNpZ24gKVxuICAgIHwgW10sIFsgKFNvbWUgdmEsIHZhcG9zKSBdIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImludGVybmFsIHN0YXRlIG9mIHNpdGUgJyVzJyBvZiBhZ2VudCAnJXMnIGlzIG1vZGlmaWVkIGFsdGhvdWdoIFxcXG4gICAgICAgICAgICAgICBpdCBpcyBsZWZ0IHVucGVjaWZpZWQgaW4gdGhlIGxlZnQgaGFuZCBzaWRlXCJcbiAgICAgICAgICAgICAgbmEgYWdlbnRfbmFtZSlcbiAgICAgIGluXG4gICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtXG4gICAgICAgIExLYXBwYS5JX0FOWV9DSEFOR0VEXG4gICAgICAgICAgKFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHZhcG9zKSBzaWduKVxuICAgIHwgWyAoTm9uZSwgXykgXSwgWyAoU29tZSB2YSwgdmFwb3MpIF0gLT5cbiAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgTEthcHBhLklfQU5ZX0NIQU5HRURcbiAgICAgICAgICAoU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YSwgdmFwb3MpIHNpZ24pXG4gICAgfCBbXSwgWyBfIF0gLT5cbiAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwiaW50ZXJuYWxcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICBhZ2VudF9uYW1lIHAnLkFzdC5wb3J0X25hbWVcbiAgICB8IFsgXyBdLCAoWyAoTm9uZSwgXykgXSB8IFtdKSAtPlxuICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJpbnRlcm5hbFwiIH5zaWRlOlwicmlnaHRcIlxuICAgICAgICBhZ2VudF9uYW1lIHAnLkFzdC5wb3J0X25hbWVcbiAgICB8IF8gOjogKF8sIHBvcykgOjogXywgXyB8IF8sIF8gOjogKF8sIHBvcykgOjogXyAtPlxuICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfaW50ZXJuYWxfc3RhdGVzIHBvc1xuICBpblxuICBsZXQgZmluZF9pbl9yIChuYSwgcG9zKSBycCA9XG4gICAgbGV0IHAnLCByID1cbiAgICAgIExpc3QucGFydGl0aW9uIChmdW4gcCAtPiBTdHJpbmcuY29tcGFyZSAoTG9jLnYgcC5Bc3QucG9ydF9uYW1lKSBuYSA9IDApIHJwXG4gICAgaW5cbiAgICBtYXRjaCBwJyB3aXRoXG4gICAgfCBbIHAnIF0gLT4gcCcsIHJcbiAgICB8IFtdIC0+XG4gICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImxpbmtpbmdcIiB+c2lkZTpcInJpZ2h0XCJcbiAgICAgICAgYWdlbnRfbmFtZSAobmEsIHBvcylcbiAgICB8IF8gOjogXyAtPiBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIChuYSwgcG9zKVxuICBpblxuICBsZXQgcnBfciwgYW5ub3RlZCwgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKHJwLCBhbm5vdGVkLCBwc2V0KSBwIC0+XG4gICAgICAgIGxldCAoKF8sIHBfcG9zKSBhcyBwb3J0X25hbWUpID0gcC5Bc3QucG9ydF9uYW1lIGluXG4gICAgICAgIGxldCBwX2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHBvcnRfbmFtZSBzaWduIGluXG4gICAgICAgIGxldCBwc2V0JyA9IE1vZHMuSW50U2V0LmFkZCBwX2lkIHBzZXQgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwc2V0ID09IHBzZXQnIHRoZW5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb24gcF9wb3MgcC5Bc3QucG9ydF9saW5rX21vZCBpblxuICAgICAgICBsZXQgKCkgPSBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfaW50X21vZCBpblxuXG4gICAgICAgIGxldCBwJywgcnAnID0gZmluZF9pbl9yIHBvcnRfbmFtZSBycCBpblxuICAgICAgICBsZXQgYW5ub3RlZCcgPSByZWdpc3Rlcl9wb3J0X21vZGlmIHBfaWQgcC5Bc3QucG9ydF9saW5rIHAnIGFubm90ZWQgaW5cbiAgICAgICAgbGV0ICgpID0gcmVnaXN0ZXJfaW50ZXJuYWxfbW9kaWYgcF9pZCBwLkFzdC5wb3J0X2ludCBwJyBpblxuICAgICAgICBycCcsIGFubm90ZWQnLCBwc2V0JylcbiAgICAgIChycCwgbGlua3NfYW5ub3QsIE1vZHMuSW50U2V0LmVtcHR5KVxuICAgICAgbHBcbiAgaW5cbiAgbGV0IGFubm90ZWQnID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhbm5vdGVkIHAgLT5cbiAgICAgICAgbGV0IHBvcnRfbmFtZSA9IHAuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgICBsZXQgcF9pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwb3J0X25hbWUgc2lnbiBpblxuICAgICAgICBsZXQgKCkgPSByZWdpc3Rlcl9pbnRlcm5hbF9tb2RpZiBwX2lkIFtdIHAgaW5cbiAgICAgICAgcmVnaXN0ZXJfcG9ydF9tb2RpZiBwX2lkXG4gICAgICAgICAgWyBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSBdXG4gICAgICAgICAgcCBhbm5vdGVkKVxuICAgICAgYW5ub3RlZCBycF9yXG4gIGluXG5cbiAgbGV0IHJhID1cbiAgICB7XG4gICAgICBMS2FwcGEucmFfdHlwZSA9IGFnX2lkO1xuICAgICAgcmFfcG9ydHMgPSBwb3J0cztcbiAgICAgIHJhX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgICByYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgIHJhX3N5bnRheCA9IFNvbWUgKEFycmF5LmNvcHkgcG9ydHMsIEFycmF5LmNvcHkgaW50ZXJuYWxzKTtcbiAgICB9XG4gIGluXG4gICggQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfY291bnRlcnNfd2l0aF9kaWZmIHNpZ3MgYWdfdHkgbGMgcmMgcmFcbiAgICAgIChhZGRfbGlua19jb250YWN0X21hcCA/Y29udGFjdF9tYXApLFxuICAgIGFubm90ZWQnIClcblxubGV0IHJlZmVyX2xpbmtzX2Fubm90ID93YXJuaW5nIHNpZ3MgbGlua3NfYW5ub3QgbWl4ID1cbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAocmFfIDogTEthcHBhLnJ1bGVfYWdlbnQgQ291bnRlcnNfY29tcGlsZXIud2l0aF9hZ2VudF9jb3VudGVycykgLT5cbiAgICAgIGxldCByYSA9IHJhXy5hZ2VudCBpblxuICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgKGZ1biBpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCAoTEthcHBhLkxOS19WQUxVRSAoaiwgKC0xLCAtMSkpLCBwb3MpLCBtb2RzIC0+XG4gICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaiBsaW5rc19hbm5vdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSAoZHN0X3R5LCBkc3RfcCwgbWFpbnRhaW5lZCkgLT5cbiAgICAgICAgICAgICAgbGV0IG1vZHMnID1cbiAgICAgICAgICAgICAgICBpZiBtYWludGFpbmVkIHRoZW5cbiAgICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbW9kc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIG1hdGNoIG1vZHMnIHdpdGhcbiAgICAgICAgICAgICAgICB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuRnJlZWQgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiAoKVxuICAgICAgICAgICAgICAgIHwgTEthcHBhLkxpbmtlZCBfIC0+XG4gICAgICAgICAgICAgICAgICAobWF0Y2ggd2FybmluZyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICAgICAgIHwgU29tZSB3YXJuaW5nIC0+XG4gICAgICAgICAgICAgICAgICAgIHJ1bGVfaW5kdWNlc19saW5rX3Blcm11dGF0aW9uIH53YXJuaW5nIH5wb3MgfmRzdF90eSBzaWdzXG4gICAgICAgICAgICAgICAgICAgICAgcmEuTEthcHBhLnJhX3R5cGUgaSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgcmEuTEthcHBhLnJhX3BvcnRzLihpKSA8LVxuICAgICAgICAgICAgICAgIChMS2FwcGEuTE5LX1ZBTFVFIChqLCAoZHN0X3AsIGRzdF90eSkpLCBwb3MpLCBtb2RzJylcbiAgICAgICAgICB8ICggKCAoIExLYXBwYS5MTktfVkFMVUUgXyB8IExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkxOS19TT01FXG4gICAgICAgICAgICAgICAgfCBMS2FwcGEuTE5LX1RZUEUgXyB8IExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSApLFxuICAgICAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAgICAgXyApIC0+XG4gICAgICAgICAgICAoKSlcbiAgICAgICAgcmEuTEthcHBhLnJhX3BvcnRzKVxuICAgIG1peFxuXG5sZXQgc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgbHMgPVxuICBsZXQgYSwgYiA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKHBzLCBjcykgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBBc3QuUG9ydCBwIC0+IHAgOjogcHMsIGNzXG4gICAgICAgIHwgQXN0LkNvdW50ZXIgYyAtPiBwcywgYyA6OiBjcylcbiAgICAgIChbXSwgW10pIGxzXG4gIGluXG4gIExpc3QucmV2IGEsIGJcblxubGV0IGZpbmFsX3J1bGVfc2FuaXR5ID93YXJuaW5nIHNpZ3NcbiAgICAoKGxoc19saW5rc19vbmUsIGxoc19saW5rc190d28pLCAocmhzX2xpbmtzX29uZSwgXykpIG1peCA9XG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggTW9kcy5JbnRNYXAucm9vdCBsaHNfbGlua3Nfb25lIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgKGksIChfLCBfLCBfLCBwb3MsIF8pKSAtPiBMS2FwcGEucmFpc2VfbGlua19vbmx5X29uZV9vY2N1cmVuY2UgaSBwb3NcbiAgaW5cbiAgbGV0ICgpID0gcmVmZXJfbGlua3NfYW5ub3QgP3dhcm5pbmcgc2lncyBsaHNfbGlua3NfdHdvIG1peCBpblxuICBtYXRjaCBNb2RzLkludE1hcC5yb290IHJoc19saW5rc19vbmUgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIChpLCAoXywgXywgXywgcG9zLCBfKSkgLT4gTEthcHBhLnJhaXNlX2xpbmtfb25seV9vbmVfb2NjdXJlbmNlIGkgcG9zXG5cbigqXG5JcyByZXNwb25zaWJsZSBmb3IgdGhlIGNoZWNrIHRoYXQ6XG4tIGFnZW50IGV4aXN0c1xuLSBzaXRlcyBleGlzdFxuLSB1bmlxdWUgc2l0ZSBvY2N1cmVuY2UgLyBhZ2VudFxuLSBpbnRlcm5hbF9zdGF0ZXMgZXhpc3Rcbi0gdW5pcXVlIGludGVybmFsX3N0YXRlIC8gc2l0ZVxuLSBsaW5rcyBhcHBlYXIgZXhhY3RseSB0d2ljZVxuKilcbmxldCBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmX3YzIH53YXJuaW5nIHNpZ3MgP2NvbnRhY3RfbWFwIGxocyByaHMgPVxuICBsZXQgc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgaW5cbiAgbGV0IHJlYyBhdXggbGlua3NfYW5ub3QgYWNjIGxocyByaHMgPVxuICAgIG1hdGNoIGxocywgcmhzIHdpdGhcbiAgICB8IEFzdC5BYnNlbnQgcG9zIDo6IF8sIF8gfCAoQXN0LlByZXNlbnQgXyA6OiBfIHwgW10pLCBBc3QuQWJzZW50IHBvcyA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAoXCJBYnNlbnQgYWdlbnQgYXJlIEthU2ltID4gMyBzeW50YXhcIiwgcG9zKSlcbiAgICB8ICggQXN0LlByZXNlbnQgKCgobGFnZW50X25hbWUsIGxwb3MpIGFzIGFnX3R5KSwgbGFnX3MsIGxtb2QpIDo6IGx0LFxuICAgICAgICBBc3QuUHJlc2VudCAoKHJhZ2VudF9uYW1lLCBycG9zKSwgcmFnX3MsIHJtb2QpIDo6IHJ0IClcbiAgICAgIHdoZW4gU3RyaW5nLmNvbXBhcmUgbGFnZW50X25hbWUgcmFnZW50X25hbWUgPSAwXG4gICAgICAgICAgICYmIEFzdC5ub19tb3JlX3NpdGVfb25fcmlnaHQgdHJ1ZSBsYWdfcyByYWdfcyAtPlxuICAgICAgcmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IGxwb3MgbG1vZDtcbiAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBycG9zIHJtb2Q7XG4gICAgICBsZXQgbGFnX3AsIGxhZ19jID0gc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgbGFnX3MgaW5cbiAgICAgIGxldCByYWdfcCwgcmFnX2MgPSBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyByYWdfcyBpblxuICAgICAgbGV0IHJhLCBsaW5rc19hbm5vdCcgPVxuICAgICAgICBhbm5vdGF0ZV9hZ2VudF93aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgICAgICAgYWdfdHkgbGlua3NfYW5ub3QgbGFnX3AgcmFnX3AgbGFnX2MgcmFnX2NcbiAgICAgIGluXG4gICAgICBhdXggbGlua3NfYW5ub3QnIChyYSA6OiBhY2MpIGx0IHJ0XG4gICAgfCAoKEFzdC5QcmVzZW50IF8gOjogXyB8IFtdKSBhcyBlcmFzZWQpLCBhZGRlZCAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgYWRkZWQgPD4gW10gdGhlblxuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgQXN0LkFic2VudCBfIC0+ICgpXG4gICAgICAgICAgICAgIHwgQXN0LlByZXNlbnQgKChsYWcsIHBvcyksIGxhZ19wLCBfKSAtPlxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHwgQXN0LlByZXNlbnQgKChyYWcsIF8pLCByYWdfcCwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy5jb21wYXJlIGxhZyByYWcgPSAwXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBBc3Qubm9fbW9yZV9zaXRlX29uX3JpZ2h0IGZhbHNlIGxhZ19wIHJhZ19wKVxuICAgICAgICAgICAgICAgICAgICBhZGRlZFxuICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlJ1bGUgaW5kdWNlZCBkZWxldGlvbiBBTkQgY3JlYXRpb24gb2YgdGhlIGFnZW50ICVzXCIgbGFnKSlcbiAgICAgICAgICAgIGVyYXNlZFxuICAgICAgaW5cbiAgICAgIGxldCBtaXgsIGxsaW5rcyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAoYWNjLCBsYW5ub3QpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEFzdC5BYnNlbnQgcG9zIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJBYnNlbnQgYWdlbnQgYXJlIEthU2ltID4gMyBzeW50YXhcIiwgcG9zKSlcbiAgICAgICAgICAgIHwgQXN0LlByZXNlbnQgKCgoXywgcG9zKSBhcyBhZ2VudF9uYW1lKSwgc2l0ZXMsIG1vZGlmKSAtPlxuICAgICAgICAgICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgcG9zIG1vZGlmO1xuICAgICAgICAgICAgICBsZXQgc2ltcGxlX3BvcnRfbGlzdCwgY291bnRlcl9saXN0ID1cbiAgICAgICAgICAgICAgICBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBzaXRlc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgcmEsIGxhbm5vdCcgPVxuICAgICAgICAgICAgICAgIGFubm90YXRlX2Ryb3BwZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uXG4gICAgICAgICAgICAgICAgICB+cl9lZGl0X3N0eWxlOmZhbHNlIHNpZ3MgbGFubm90IGFnZW50X25hbWUgc2ltcGxlX3BvcnRfbGlzdFxuICAgICAgICAgICAgICAgICAgY291bnRlcl9saXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHJhIDo6IGFjYywgbGFubm90JylcbiAgICAgICAgICAoYWNjLCBmc3QgbGlua3NfYW5ub3QpXG4gICAgICAgICAgZXJhc2VkXG4gICAgICBpblxuICAgICAgbGV0IGNtaXgsIHJsaW5rcyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAoYWNjLCByYW5ub3QpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEFzdC5BYnNlbnQgcG9zIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJBYnNlbnQgYWdlbnQgYXJlIEthU2ltID4gMyBzeW50YXhcIiwgcG9zKSlcbiAgICAgICAgICAgIHwgQXN0LlByZXNlbnQgKCgoXywgcG9zKSBhcyBhZ2VudF9uYW1lKSwgc2l0ZXMsIG1vZGlmKSAtPlxuICAgICAgICAgICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgcG9zIG1vZGlmO1xuICAgICAgICAgICAgICBsZXQgc2ltcGxlX3BvcnRfbGlzdCwgY291bnRlcl9saXN0ID1cbiAgICAgICAgICAgICAgICBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBzaXRlc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgcmFubm90JywgeCcgPVxuICAgICAgICAgICAgICAgIGFubm90YXRlX2NyZWF0ZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uXG4gICAgICAgICAgICAgICAgICB+cl9lZGl0X3N0eWxlOmZhbHNlIHNpZ3MgP2NvbnRhY3RfbWFwIHJhbm5vdCBhZ2VudF9uYW1lXG4gICAgICAgICAgICAgICAgICBzaW1wbGVfcG9ydF9saXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCB4JycgPVxuICAgICAgICAgICAgICAgIENvdW50ZXJzX2NvbXBpbGVyLmFubm90YXRlX2NyZWF0ZWRfY291bnRlcnMgc2lncyBhZ2VudF9uYW1lXG4gICAgICAgICAgICAgICAgICBjb3VudGVyX2xpc3RcbiAgICAgICAgICAgICAgICAgIChhZGRfbGlua19jb250YWN0X21hcCA/Y29udGFjdF9tYXApXG4gICAgICAgICAgICAgICAgICB4J1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICB4JycgOjogYWNjLCByYW5ub3QnKVxuICAgICAgICAgIChbXSwgc25kIGxpbmtzX2Fubm90KVxuICAgICAgICAgIGFkZGVkXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gZmluYWxfcnVsZV9zYW5pdHkgfndhcm5pbmcgc2lncyAobGxpbmtzLCBybGlua3MpIG1peCBpblxuICAgICAgTGlzdC5yZXYgbWl4LCBMaXN0LnJldiBjbWl4XG4gIGluXG4gIGF1eFxuICAgICggKE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludE1hcC5lbXB0eSksXG4gICAgICAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSApXG4gICAgW10gKExpc3QuZmxhdHRlbiBsaHMpIChMaXN0LmZsYXR0ZW4gcmhzKVxuXG5sZXQgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZl92NCB+d2FybmluZyBzaWdzID9jb250YWN0X21hcCBsaHMgcmhzID1cbiAgbGV0IHN5bnRheF92ZXJzaW9uID0gQXN0LlY0IGluXG4gIGxldCByZWMgYXV4IGxpbmtzX2Fubm90IG1peCBjbWl4IGxocyByaHMgPVxuICAgIG1hdGNoIGxocywgcmhzIHdpdGhcbiAgICB8IFtdLCBbXSAtPiBsaW5rc19hbm5vdCwgbWl4LCBjbWl4XG4gICAgfCBBc3QuQWJzZW50IF8gOjogbHQsIEFzdC5BYnNlbnQgXyA6OiBydCAtPiBhdXggbGlua3NfYW5ub3QgbWl4IGNtaXggbHQgcnRcbiAgICB8ICggQXN0LlByZXNlbnQgKCgoXywgcG9zKSBhcyBhZ2VudF90eXBlKSwgc2l0ZXMsIGxtb2QpIDo6IGx0LFxuICAgICAgICBBc3QuQWJzZW50IF8gOjogcnQgKSAtPlxuICAgICAgcmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IHBvcyBsbW9kO1xuICAgICAgbGV0IHNpbXBsZV9wb3J0X2xpc3QsIGNvdW50ZXJfbGlzdCA9XG4gICAgICAgIHNlcGFyYXRlX3NpbXBsZV9wb3J0c19mcm9tX2NvdW50ZXJzIHNpdGVzXG4gICAgICBpblxuICAgICAgbGV0IHJhLCBsYW5ub3QnID1cbiAgICAgICAgYW5ub3RhdGVfZHJvcHBlZF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfnJfZWRpdF9zdHlsZTpmYWxzZSBzaWdzXG4gICAgICAgICAgKGZzdCBsaW5rc19hbm5vdCkgYWdlbnRfdHlwZSBzaW1wbGVfcG9ydF9saXN0IGNvdW50ZXJfbGlzdFxuICAgICAgaW5cbiAgICAgIGF1eCAobGFubm90Jywgc25kIGxpbmtzX2Fubm90KSAocmEgOjogbWl4KSBjbWl4IGx0IHJ0XG4gICAgfCAoIEFzdC5BYnNlbnQgXyA6OiBsdCxcbiAgICAgICAgQXN0LlByZXNlbnQgKCgoXywgcG9zKSBhcyBhZ2VudF90eXBlKSwgc2l0ZXMsIHJtb2QpIDo6IHJ0ICkgLT5cbiAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBwb3Mgcm1vZDtcbiAgICAgIGxldCBzaW1wbGVfcG9ydF9saXN0LCBjb3VudGVyX2xpc3QgPVxuICAgICAgICBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBzaXRlc1xuICAgICAgaW5cbiAgICAgIGxldCByYW5ub3QnLCB4JyA9XG4gICAgICAgIGFubm90YXRlX2NyZWF0ZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5yX2VkaXRfc3R5bGU6ZmFsc2Ugc2lnc1xuICAgICAgICAgID9jb250YWN0X21hcCAoc25kIGxpbmtzX2Fubm90KSBhZ2VudF90eXBlIHNpbXBsZV9wb3J0X2xpc3RcbiAgICAgIGluXG4gICAgICBsZXQgeCcnID1cbiAgICAgICAgQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfY3JlYXRlZF9jb3VudGVycyBzaWdzIGFnZW50X3R5cGUgY291bnRlcl9saXN0XG4gICAgICAgICAgKGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcClcbiAgICAgICAgICB4J1xuICAgICAgaW5cbiAgICAgIGF1eCAoZnN0IGxpbmtzX2Fubm90LCByYW5ub3QnKSBtaXggKHgnJyA6OiBjbWl4KSBsdCBydFxuICAgIHwgKCBBc3QuUHJlc2VudCAoKChsYWdlbnRfbmFtZSwgbHBvcykgYXMgYWdfdHkpLCBsYWdfcywgbG1vZCkgOjogbHQsXG4gICAgICAgIEFzdC5QcmVzZW50ICgocmFnZW50X25hbWUsIHJwb3MpLCByYWdfcywgcm1vZCkgOjogcnQgKSAtPlxuICAgICAgaWZcbiAgICAgICAgU3RyaW5nLmNvbXBhcmUgbGFnZW50X25hbWUgcmFnZW50X25hbWUgPSAwXG4gICAgICAgICYmIEFzdC5ub19tb3JlX3NpdGVfb25fcmlnaHQgdHJ1ZSBsYWdfcyByYWdfc1xuICAgICAgdGhlbiAoXG4gICAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBscG9zIGxtb2Q7XG4gICAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBycG9zIHJtb2Q7XG4gICAgICAgIGxldCBsYWdfcCwgbGFnX2MgPSBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBsYWdfcyBpblxuICAgICAgICBsZXQgcmFnX3AsIHJhZ19jID0gc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgcmFnX3MgaW5cbiAgICAgICAgbGV0IHJhLCBsaW5rc19hbm5vdCcgPVxuICAgICAgICAgIGFubm90YXRlX2FnZW50X3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXBcbiAgICAgICAgICAgIGFnX3R5IGxpbmtzX2Fubm90IGxhZ19wIHJhZ19wIGxhZ19jIHJhZ19jXG4gICAgICAgIGluXG4gICAgICAgIGF1eCBsaW5rc19hbm5vdCcgKHJhIDo6IG1peCkgY21peCBsdCBydFxuICAgICAgKSBlbHNlXG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoXCJMZWZ0IGhhbmQgc2lkZS9yaWdodCBoYW5kIHNpZGUgYWdlbnQgbWlzbWF0Y2hcIiwgcnBvcykpXG4gICAgfCAoQXN0LlByZXNlbnQgKChfLCBwb3MpLCBfLCBfKSB8IEFzdC5BYnNlbnQgcG9zKSA6OiBfLCBbXVxuICAgIHwgW10sIChBc3QuUHJlc2VudCAoKF8sIHBvcyksIF8sIF8pIHwgQXN0LkFic2VudCBwb3MpIDo6IF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIkxlZnQgaGFuZCBzaWRlL3JpZ2h0IGhhbmQgc2lkZSBhZ2VudCBtaXNtYXRjaFwiLCBwb3MpKVxuICBpblxuICBsZXQgcmVjIGF1eF9saW5lIGxpbmtzX2Fubm90IG1peCBjbWl4IGxocyByaHMgPVxuICAgIG1hdGNoIGxocywgcmhzIHdpdGhcbiAgICB8IFtdLCBbXSAtPlxuICAgICAgbGV0ICgpID0gZmluYWxfcnVsZV9zYW5pdHkgfndhcm5pbmcgc2lncyBsaW5rc19hbm5vdCBtaXggaW5cbiAgICAgIExpc3QucmV2IG1peCwgTGlzdC5yZXYgY21peFxuICAgIHwgaGwgOjogdGwsIGhyIDo6IHRyIC0+XG4gICAgICBsZXQgbGlua3NfYW5ub3QnLCBtaXgnLCBjbWl4JyA9IGF1eCBsaW5rc19hbm5vdCBtaXggY21peCBobCBociBpblxuICAgICAgYXV4X2xpbmUgbGlua3NfYW5ub3QnIG1peCcgY21peCcgdGwgdHJcbiAgICB8ICgoQXN0LlByZXNlbnQgKChfLCBwb3MpLCBfLCBfKSB8IEFzdC5BYnNlbnQgcG9zKSA6OiBfKSA6OiBfLCBbXVxuICAgIHwgW10sICgoQXN0LlByZXNlbnQgKChfLCBwb3MpLCBfLCBfKSB8IEFzdC5BYnNlbnQgcG9zKSA6OiBfKSA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJMZWZ0IGhhbmQgc2lkZS9yaWdodCBoYW5kIHNpZGUgYWdlbnQgbWlzbWF0Y2hcIiwgcG9zKSlcbiAgICB8IFtdIDo6IF8sIFtdIHwgW10sIFtdIDo6IF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIkludmFyaWFudCB2aW9sYXRpb24gaW4gYW5ub3RhdGVfbGhzX3dpdGguLi5cIikpXG4gIGluXG4gIGF1eF9saW5lXG4gICAgKCAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSxcbiAgICAgIChNb2RzLkludE1hcC5lbXB0eSwgTW9kcy5JbnRNYXAuZW1wdHkpIClcbiAgICBbXSBbXSBsaHMgcmhzXG5cbmxldCBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzID9jb250YWN0X21hcCBsaHMgcmhzID1cbiAgbWF0Y2ggc3ludGF4X3ZlcnNpb24gd2l0aFxuICB8IEFzdC5WMyAtPiBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmX3YzIH53YXJuaW5nIHNpZ3MgP2NvbnRhY3RfbWFwIGxocyByaHNcbiAgfCBBc3QuVjQgLT4gYW5ub3RhdGVfbGhzX3dpdGhfZGlmZl92NCB+d2FybmluZyBzaWdzID9jb250YWN0X21hcCBsaHMgcmhzXG5cbmxldCBhbm5vdGF0ZV9lZGl0X21peHR1cmUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5pc19ydWxlIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgKG0gOiBBc3QubWl4dHVyZSkgOlxuICAgIENvdW50ZXJzX2NvbXBpbGVyLnJ1bGVfbWl4dHVyZV93aXRoX2FnZW50X2NvdW50ZXJzXG4gICAgKiBDb3VudGVyc19jb21waWxlci5yYXdfbWl4dHVyZV93aXRoX2FnZW50X2NvdW50ZXJzID1cbiAgKCogbWl4IGlzIHRoZSBtaXh0dXJlIGZyb20gaW5pdGlhbCBzdGF0ZSBvZiB0aGUgcnVsZSwgY21peCBpcyB0aGUgbWl4dHVyZSBhZnRlciB0aGUgcnVsZSB3YXMgYXBwbGllZCAqKVxuICBsZXQgbGlua3NfYW5ub3QsIG1peCwgY21peCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIChsYW5ub3QsIGFjYywgbmV3cykgLT4gZnVuY3Rpb25cbiAgICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGxhbm5vdCwgYWNjLCBuZXdzXG4gICAgICAgICB8IEFzdC5QcmVzZW50IChhZ2VudF90eXBlLCBzaXRlcywgbW9kaWYpIC0+XG4gICAgICAgICAgIGxldCBzaW1wbGVfcG9ydF9saXN0LCBjb3VudGVyX2xpc3QgPVxuICAgICAgICAgICAgIHNlcGFyYXRlX3NpbXBsZV9wb3J0c19mcm9tX2NvdW50ZXJzIHNpdGVzXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIChtYXRjaCBtb2RpZiB3aXRoXG4gICAgICAgICAgIHwgQXN0Lk5vTW9kIC0+XG4gICAgICAgICAgICAgbGV0IGEsIGxhbm5vdCcgPVxuICAgICAgICAgICAgICAgYW5ub3RhdGVfZWRpdF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfmlzX3J1bGUgc2lnc1xuICAgICAgICAgICAgICAgICA/Y29udGFjdF9tYXAgYWdlbnRfdHlwZSBsYW5ub3Qgc2ltcGxlX3BvcnRfbGlzdCBjb3VudGVyX2xpc3RcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxhbm5vdCcsIGEgOjogYWNjLCBuZXdzXG4gICAgICAgICAgIHwgQXN0LkNyZWF0ZSAtPlxuICAgICAgICAgICAgIGxldCByYW5ub3QnLCB4JyA9XG4gICAgICAgICAgICAgICBhbm5vdGF0ZV9jcmVhdGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgICAgICAgICB+cl9lZGl0X3N0eWxlOnRydWUgc2lncyA/Y29udGFjdF9tYXAgKHNuZCBsYW5ub3QpIGFnZW50X3R5cGVcbiAgICAgICAgICAgICAgICAgc2ltcGxlX3BvcnRfbGlzdFxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0IHgnJyA9XG4gICAgICAgICAgICAgICBDb3VudGVyc19jb21waWxlci5hbm5vdGF0ZV9jcmVhdGVkX2NvdW50ZXJzIHNpZ3MgYWdlbnRfdHlwZVxuICAgICAgICAgICAgICAgICBjb3VudGVyX2xpc3RcbiAgICAgICAgICAgICAgICAgKGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcClcbiAgICAgICAgICAgICAgICAgeCdcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIChmc3QgbGFubm90LCByYW5ub3QnKSwgYWNjLCB4JycgOjogbmV3c1xuICAgICAgICAgICB8IEFzdC5FcmFzZSAtPlxuICAgICAgICAgICAgIGxldCByYSwgbGFubm90JyA9XG4gICAgICAgICAgICAgICBhbm5vdGF0ZV9kcm9wcGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgICAgICAgICB+cl9lZGl0X3N0eWxlOnRydWUgc2lncyAoZnN0IGxhbm5vdCkgYWdlbnRfdHlwZVxuICAgICAgICAgICAgICAgICBzaW1wbGVfcG9ydF9saXN0IGNvdW50ZXJfbGlzdFxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKGxhbm5vdCcsIHNuZCBsYW5ub3QpLCByYSA6OiBhY2MsIG5ld3MpKSlcbiAgICAgICggKCAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSxcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSApLFxuICAgICAgICBbXSxcbiAgICAgICAgW10gKVxuICAgICAgbVxuICBpblxuICBmaW5hbF9ydWxlX3Nhbml0eSA/d2FybmluZzpOb25lIHNpZ3MgbGlua3NfYW5ub3QgbWl4O1xuICBMaXN0LnJldiBtaXgsIExpc3QucmV2IGNtaXhcblxubGV0IGFubm90YXRlX2NyZWF0ZWRfbWl4dHVyZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXBcbiAgICAobSA6IEFzdC5taXh0dXJlKSA6XG4gICAgUmF3X21peHR1cmUuYWdlbnQgQ291bnRlcnNfY29tcGlsZXIud2l0aF9hZ2VudF9jb3VudGVycyBsaXN0ID1cbiAgbGV0IChyaHNfbGlua3Nfb25lLCBfKSwgY21peCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIChyYW5ub3QsIG5ld3MpIC0+IGZ1bmN0aW9uXG4gICAgICAgICB8IEFzdC5BYnNlbnQgcG9zIC0+XG4gICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAoXCJBYnNlbnQgYWdlbnQgY2Fubm90IG9jY3VycyBpbiBjcmVhdGVkIG1peHR1cmVzXCIsIHBvcykpXG4gICAgICAgICB8IEFzdC5QcmVzZW50IChhZ2VudF90eXBlLCBzaXRlcywgX21vZGlmKSAtPlxuICAgICAgICAgICBsZXQgc2ltcGxlX3BvcnRfbGlzdCwgY291bnRlcl9saXN0ID1cbiAgICAgICAgICAgICBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBzaXRlc1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgcmFubm90JywgeCcgPVxuICAgICAgICAgICAgIGFubm90YXRlX2NyZWF0ZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5yX2VkaXRfc3R5bGU6dHJ1ZVxuICAgICAgICAgICAgICAgc2lncyA/Y29udGFjdF9tYXAgcmFubm90IGFnZW50X3R5cGUgc2ltcGxlX3BvcnRfbGlzdFxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgeCcnID1cbiAgICAgICAgICAgICBDb3VudGVyc19jb21waWxlci5hbm5vdGF0ZV9jcmVhdGVkX2NvdW50ZXJzIHNpZ3MgYWdlbnRfdHlwZVxuICAgICAgICAgICAgICAgY291bnRlcl9saXN0XG4gICAgICAgICAgICAgICAoYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwKVxuICAgICAgICAgICAgICAgeCdcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgcmFubm90JywgeCcnIDo6IG5ld3MpKVxuICAgICAgKChNb2RzLkludE1hcC5lbXB0eSwgTW9kcy5JbnRNYXAuZW1wdHkpLCBbXSlcbiAgICAgIG1cbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBNb2RzLkludE1hcC5yb290IHJoc19saW5rc19vbmUgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSAoaSwgKF8sIF8sIF8sIHBvcywgXykpIC0+IExLYXBwYS5yYWlzZV9saW5rX29ubHlfb25lX29jY3VyZW5jZSBpIHBvc1xuICBpblxuICBMaXN0LnJldiBjbWl4XG5cbmxldCBnaXZlX3J1bGVfbGFiZWwgYmlkaXJlY3Rpb25hbCAoaWQsIHNldCkgcHJpbnRlciByID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IChzdWNjIGlkLCBzZXQpLCBGb3JtYXQuYXNwcmludGYgXCJyJWk6ICVhXCIgaWQgcHJpbnRlciByXG4gIHwgU29tZSAobGFiLCBwb3MpIC0+XG4gICAgbGV0IHNldCcgPSBNb2RzLlN0cmluZ1NldC5hZGQgbGFiIHNldCBpblxuICAgIGlmIHNldCA9PSBzZXQnIHRoZW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIkEgcnVsZSBuYW1lZCAnXCIgXiBsYWIgXiBcIicgYWxyZWFkeSBleGlzdHMuXCIsIHBvcykpXG4gICAgZWxzZSBpZiBiaWRpcmVjdGlvbmFsIHRoZW4gKFxuICAgICAgbGV0IHNldCcnID0gTW9kcy5TdHJpbmdTZXQuYWRkIChBc3QuZmxpcF9sYWJlbCBsYWIpIHNldCcgaW5cbiAgICAgIGlmIHNldCcgPT0gc2V0JycgdGhlblxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKFwiQSBydWxlIG5hbWVkICdcIiBeIEFzdC5mbGlwX2xhYmVsIGxhYiBeIFwiJyBhbHJlYWR5IGV4aXN0cy5cIiwgcG9zKSlcbiAgICAgIGVsc2VcbiAgICAgICAgKGlkLCBzZXQnJyksIGxhYlxuICAgICkgZWxzZVxuICAgICAgKGlkLCBzZXQnKSwgbGFiXG5cbmxldCBtaXh0dXJlX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXAgKHBvcyA6IExvYy50KVxuICAgIChtaXggOiBBc3QubWl4dHVyZSkgPVxuICBtYXRjaFxuICAgIGFubm90YXRlX2VkaXRfbWl4dHVyZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfmlzX3J1bGU6ZmFsc2Ugc2lnc1xuICAgICAgP2NvbnRhY3RfbWFwIG1peFxuICB3aXRoXG4gIHwgciwgW10gLT4gZnN0IChDb3VudGVyc19jb21waWxlci5jb21waWxlX2NvdW50ZXJfaW5fcnVsZSBzaWdzIHIgW10pXG4gIHwgXywgXyAtPlxuICAgIHJhaXNlIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yIChcIkEgbWl4dHVyZSBjYW5ub3QgY3JlYXRlIGFnZW50c1wiLCBwb3MpKVxuXG5sZXQgcmF3X21peHR1cmVfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzID9jb250YWN0X21hcFxuICAgIChtaXggOiBBc3QubWl4dHVyZSkgPVxuICBsZXQgYiA9XG4gICAgYW5ub3RhdGVfY3JlYXRlZF9taXh0dXJlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzID9jb250YWN0X21hcCBtaXhcbiAgaW5cbiAgc25kIChDb3VudGVyc19jb21waWxlci5jb21waWxlX2NvdW50ZXJfaW5fcnVsZSBzaWdzIFtdIGIpXG5cbmxldCBjb252ZXJ0X2FsZ192YXIgP21heF9hbGxvd2VkX3ZhciBhbGdzIGxhYiBwb3MgPVxuICBsZXQgaSA9XG4gICAgbWF0Y2ggTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gbGFiIGFsZ3Mgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIChsYWIgXiBcIiBpcyBub3QgYSBkZWNsYXJlZCB2YXJpYWJsZVwiLCBwb3MpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIG1heF9hbGxvd2VkX3ZhciB3aXRoXG4gICAgfCBTb21lIGogd2hlbiBqIDwgaSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiUmVmZXJlbmNlIHRvIG5vdCB5ZXQgZGVmaW5lZCAnXCIgXiBsYWIgXiBcIicgaXMgZm9yYmlkZGVuLlwiLCBwb3MpKVxuICAgIHwgTm9uZSB8IFNvbWUgXyAtPiAoKVxuICBpblxuICBpXG5cbmxldCBjb252ZXJ0X3Rva2VuX25hbWUgdGtfbmFtZSB0b2sgcG9zID1cbiAgbWF0Y2ggTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gdGtfbmFtZSB0b2sgd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAodGtfbmFtZSBeIFwiIGlzIG5vdCBhIGRlY2xhcmVkIHRva2VuXCIsIHBvcykpXG5cbmxldCByZWMgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzID9tYXhfYWxsb3dlZF92YXJcbiAgICAoYWxnLCBwb3MpID1cbiAgKCAobWF0Y2ggYWxnIHdpdGhcbiAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIGFzdCAtPlxuICAgICAgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0VcbiAgICAgICAgKG1peHR1cmVfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHBvcyBhc3QpXG4gICAgfCBBbGdfZXhwci5BTEdfVkFSIGxhYiAtPlxuICAgICAgQWxnX2V4cHIuQUxHX1ZBUiAoY29udmVydF9hbGdfdmFyID9tYXhfYWxsb3dlZF92YXIgYWxncyBsYWIgcG9zKVxuICAgIHwgQWxnX2V4cHIuVE9LRU5fSUQgdGtfbmFtZSAtPlxuICAgICAgQWxnX2V4cHIuVE9LRU5fSUQgKGNvbnZlcnRfdG9rZW5fbmFtZSB0a19uYW1lIHRvayBwb3MpXG4gICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIChleHByLCBhc3QpIC0+XG4gICAgICBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFXG4gICAgICAgICggYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIGV4cHIsXG4gICAgICAgICAgbWl4dHVyZV9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgcG9zIGFzdCApXG4gICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIChleHByLCB0a19uYW1lKSAtPlxuICAgICAgQWxnX2V4cHIuRElGRl9UT0tFTlxuICAgICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciBleHByLFxuICAgICAgICAgIGNvbnZlcnRfdG9rZW5fbmFtZSB0a19uYW1lIHRvayBwb3MgKVxuICAgIHwgKEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuQ09OU1QgXykgYXMgeCAtPiB4XG4gICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYikgLT5cbiAgICAgIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgKCBvcCxcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgYSxcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgYiApXG4gICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSAtPlxuICAgICAgQWxnX2V4cHIuVU5fQUxHX09QXG4gICAgICAgICggb3AsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIGEgKVxuICAgIHwgQWxnX2V4cHIuSUYgKGNvbmQsIHllcywgbm8pIC0+XG4gICAgICBBbGdfZXhwci5JRlxuICAgICAgICAoIGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgY29uZCxcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgeWVzLFxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciBubyApKSxcbiAgICBwb3MgKVxuXG5hbmQgYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyA/bWF4X2FsbG93ZWRfdmFyID1cbiAgZnVuY3Rpb25cbiAgfCAoKEFsZ19leHByLlRSVUUgfCBBbGdfZXhwci5GQUxTRSksIF8pIGFzIHggLT4geFxuICB8IEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgeCwgeSksIHBvcyAtPlxuICAgICggQWxnX2V4cHIuQklOX0JPT0xfT1BcbiAgICAgICAgKCBvcCxcbiAgICAgICAgICBib29sX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIHgsXG4gICAgICAgICAgYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB5ICksXG4gICAgICBwb3MgKVxuICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCB4KSwgcG9zIC0+XG4gICAgKCBBbGdfZXhwci5VTl9CT09MX09QXG4gICAgICAgICggb3AsXG4gICAgICAgICAgYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB4ICksXG4gICAgICBwb3MgKVxuICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCB4LCB5KSwgcG9zIC0+XG4gICAgKCBBbGdfZXhwci5DT01QQVJFX09QXG4gICAgICAgICggb3AsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIHgsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIHkgKSxcbiAgICAgIHBvcyApXG5cbmxldCBwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyA9IGZ1bmN0aW9uXG4gIHwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgXyBhcyB4IC0+IHhcbiAgfCBQcmltaXRpdmVzLkFsZ19wZXhwciB4IC0+XG4gICAgUHJpbWl0aXZlcy5BbGdfcGV4cHJcbiAgICAgIChhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgeClcblxuKCogSW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0aW9uIGZvciBhIHJ1bGUsIHVzZWQgYmV0d2VlbiBpbnRlcm5hbCB0cmFuc2xhdGlvbnMgKilcbnR5cGUgcnVsZV9pbnRlcl9yZXAgPSB7XG4gIGxhYmVsX29wdDogKHN0cmluZyAqIExvYy50KSBvcHRpb247XG4gIGJpZGlyZWN0aW9uYWw6IGJvb2w7ICgqIFRPRE8gY2hlY2sgKilcbiAgbWl4dHVyZTogTEthcHBhLnJ1bGVfYWdlbnQgQ291bnRlcnNfY29tcGlsZXIud2l0aF9hZ2VudF9jb3VudGVycyBsaXN0O1xuICBjcmVhdGVkX21peDogUmF3X21peHR1cmUuYWdlbnQgQ291bnRlcnNfY29tcGlsZXIud2l0aF9hZ2VudF9jb3VudGVycyBsaXN0O1xuICBybV90b2tlbjpcbiAgICAoKChBc3QubWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lICogTG9jLnQpICogKHN0cmluZyAqIExvYy50KSkgbGlzdDtcbiAgYWRkX3Rva2VuOlxuICAgICgoKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgKiBMb2MudCkgKiAoc3RyaW5nICogTG9jLnQpKSBsaXN0O1xuICBrX2RlZjogKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgKiBMb2MudDtcbiAga191bjpcbiAgICAoKChBc3QubWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lICogTG9jLnQpXG4gICAgKiAoKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgKiBMb2MudCkgb3B0aW9uKVxuICAgIG9wdGlvbjtcbiAgcG9zOiBMb2MudDtcbn1cbigqKiBJbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24gZm9yIHJ1bGUgdHlwZSAqKVxuXG4oKiogW2Fzc2VtYmxlX3J1bGVdIHRyYW5zbGF0ZXMgYSBydWxlX2ludGVyX3JlcCBpbnRvIGEgTEthcHBhLnJ1bGUgKilcbmxldCBhc3NlbWJsZV9ydWxlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiAocnVsZSA6IHJ1bGVfaW50ZXJfcmVwKVxuICAgIChzaWdzIDogU2lnbmF0dXJlLnMpICh0b2sgOiBpbnQgTW9kcy5TdHJpbmdNYXAudClcbiAgICAoYWxncyA6IGludCBNb2RzLlN0cmluZ01hcC50KSA6IExLYXBwYS5ydWxlID1cbiAgbGV0IChyX21peCwgcl9jcmVhdGVkKSA6IExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50ID1cbiAgICBDb3VudGVyc19jb21waWxlci5jb21waWxlX2NvdW50ZXJfaW5fcnVsZSBzaWdzIHJ1bGUubWl4dHVyZSBydWxlLmNyZWF0ZWRfbWl4XG4gIGluXG4gIGxldCByX2RlbHRhX3Rva2VucyA9XG4gICAgTGlzdC5yZXZfbWFwXG4gICAgICAoZnVuIChhbCwgKHRrLCBwb3MpKSAtPlxuICAgICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5VTl9BTEdfT1AgKE9wZXJhdG9yLlVNSU5VUywgYWwpKSksXG4gICAgICAgICAgY29udmVydF90b2tlbl9uYW1lIHRrIHRvayBwb3MgKSlcbiAgICAgIHJ1bGUucm1fdG9rZW5cbiAgICB8PiBMaXN0X3V0aWwucmV2X21hcF9hcHBlbmRcbiAgICAgICAgIChmdW4gKGFsLCAodGssIHBvcykpIC0+XG4gICAgICAgICAgICggYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzIGFsLFxuICAgICAgICAgICAgIGNvbnZlcnRfdG9rZW5fbmFtZSB0ayB0b2sgcG9zICkpXG4gICAgICAgICBydWxlLmFkZF90b2tlblxuICAgIHw+IExpc3QucmV2XG4gIGluXG4gIGxldCByX3JhdGUgPVxuICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyBydWxlLmtfZGVmXG4gIGluXG4gIGxldCByX3VuX3JhdGUgPVxuICAgIGxldCByX2Rpc3QgZCA9XG4gICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgP21heF9hbGxvd2VkX3ZhcjpOb25lIGRcbiAgICBpblxuICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgKGZ1biAodW5fcmF0ZScsIGRpc3QpIC0+XG4gICAgICAgIGxldCB1bl9yYXRlJycgPVxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhcjpOb25lIHVuX3JhdGUnXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGRpc3Qgd2l0aFxuICAgICAgICB8IFNvbWUgZCAtPiB1bl9yYXRlJycsIFNvbWUgKHJfZGlzdCBkKVxuICAgICAgICB8IE5vbmUgLT4gdW5fcmF0ZScnLCBOb25lKVxuICAgICAgcnVsZS5rX3VuXG4gIGluXG4gIHtcbiAgICBMS2FwcGEucl9taXg7XG4gICAgcl9jcmVhdGVkO1xuICAgIHJfZWRpdF9zdHlsZSA9IHJ1bGUuYmlkaXJlY3Rpb25hbDtcbiAgICByX2RlbHRhX3Rva2VucztcbiAgICByX3JhdGU7XG4gICAgcl91bl9yYXRlO1xuICB9XG5cbmxldCBtb2RpZl9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyBjb250YWN0X21hcCBtb2RpZlxuICAgIGFjYyA9XG4gIG1hdGNoIG1vZGlmIHdpdGhcbiAgfCBBc3QuQVBQTFkgKG5iLCAoYXN0X3J1bGUsIHBvcykpIC0+XG4gICAgbGV0IHJ1bGUgOiBydWxlX2ludGVyX3JlcCA9XG4gICAgICBtYXRjaCBhc3RfcnVsZS5Bc3QucmV3cml0ZSB3aXRoXG4gICAgICB8IEFzdC5FZGl0IHJ1bGVfY29udGVudCAtPlxuICAgICAgICBsZXQgbWl4dHVyZSwgY3JlYXRlZF9taXggPVxuICAgICAgICAgIGFubm90YXRlX2VkaXRfbWl4dHVyZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb246QXN0LlY0IH5pc19ydWxlOnRydWVcbiAgICAgICAgICAgIHNpZ3MgfmNvbnRhY3RfbWFwIHJ1bGVfY29udGVudC5taXhcbiAgICAgICAgaW5cbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsX29wdCA9IE5vbmU7XG4gICAgICAgICAgYmlkaXJlY3Rpb25hbCA9IHRydWU7XG4gICAgICAgICAgbWl4dHVyZTtcbiAgICAgICAgICBjcmVhdGVkX21peDtcbiAgICAgICAgICBybV90b2tlbiA9IFtdO1xuICAgICAgICAgIGFkZF90b2tlbiA9IHJ1bGVfY29udGVudC5kZWx0YV90b2tlbjtcbiAgICAgICAgICBrX2RlZiA9IGFzdF9ydWxlLmtfZGVmO1xuICAgICAgICAgIGtfdW4gPSBhc3RfcnVsZS5rX3VuO1xuICAgICAgICAgIHBvcztcbiAgICAgICAgfVxuICAgICAgfCBBc3QuQXJyb3cgcnVsZV9jb250ZW50IC0+XG4gICAgICAgIGxldCBtaXh0dXJlLCBjcmVhdGVkX21peCA9XG4gICAgICAgICAgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB+Y29udGFjdF9tYXBcbiAgICAgICAgICAgIHJ1bGVfY29udGVudC5saHMgcnVsZV9jb250ZW50LnJoc1xuICAgICAgICBpblxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWxfb3B0ID0gTm9uZTtcbiAgICAgICAgICBiaWRpcmVjdGlvbmFsID0gZmFsc2U7XG4gICAgICAgICAgbWl4dHVyZTtcbiAgICAgICAgICBjcmVhdGVkX21peDtcbiAgICAgICAgICBybV90b2tlbiA9IHJ1bGVfY29udGVudC5ybV90b2tlbjtcbiAgICAgICAgICBhZGRfdG9rZW4gPSBydWxlX2NvbnRlbnQuYWRkX3Rva2VuO1xuICAgICAgICAgIGtfZGVmID0gYXN0X3J1bGUua19kZWY7XG4gICAgICAgICAga191biA9IGFzdF9ydWxlLmtfdW47XG4gICAgICAgICAgcG9zO1xuICAgICAgICB9XG4gICAgaW5cbiAgICAoIEFzdC5BUFBMWVxuICAgICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyBuYixcbiAgICAgICAgICAoYXNzZW1ibGVfcnVsZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gcnVsZSBzaWdzIHRvayBhbGdzLCBwb3MpICksXG4gICAgICBhY2MgKVxuICB8IEFzdC5VUERBVEUgKChsYWIsIHBvcyksIGhvdykgLT5cbiAgICBsZXQgaSA9XG4gICAgICBPcHRpb25fdXRpbC51bnNvbWVfb3JfcmFpc2VcbiAgICAgICAgfmV4Y2VwOlxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKFwiVmFyaWFibGUgXCIgXiBsYWIgXiBcIiBpcyBub3QgZGVmaW5lZFwiLCBwb3MpKVxuICAgICAgICAoTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gbGFiIGFsZ3MpXG4gICAgaW5cbiAgICAoIEFzdC5VUERBVEVcbiAgICAgICAgKChpLCBwb3MpLCBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgaG93KSxcbiAgICAgIGkgOjogYWNjIClcbiAgfCBBc3QuU1RPUCBwIC0+XG4gICAgKCBBc3QuU1RPUFxuICAgICAgICAoTGlzdC5tYXAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzKSBwKSxcbiAgICAgIGFjYyApXG4gIHwgQXN0LlNOQVBTSE9UIChyYXcsIHApIC0+XG4gICAgKCBBc3QuU05BUFNIT1RcbiAgICAgICAgKCByYXcsXG4gICAgICAgICAgTGlzdC5tYXAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzKSBwXG4gICAgICAgICksXG4gICAgICBhY2MgKVxuICB8IEFzdC5ESU4gKHJlbCwgcCkgLT5cbiAgICAoIEFzdC5ESU5cbiAgICAgICAgKCByZWwsXG4gICAgICAgICAgTGlzdC5tYXAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzKSBwXG4gICAgICAgICksXG4gICAgICBhY2MgKVxuICB8IEFzdC5ESU5PRkYgcCAtPlxuICAgICggQXN0LkRJTk9GRlxuICAgICAgICAoTGlzdC5tYXAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzKSBwKSxcbiAgICAgIGFjYyApXG4gIHwgKEFzdC5QTE9URU5UUlkgfCBBc3QuQ0ZMT1dMQUJFTCAoXywgXykpIGFzIHggLT4geCwgYWNjXG4gIHwgQXN0LlBSSU5UIChwLCBwJykgLT5cbiAgICAoIEFzdC5QUklOVFxuICAgICAgICAoIExpc3QubWFwIChwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncykgcCxcbiAgICAgICAgICBMaXN0Lm1hcCAocHJpbnRfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MpIHAnXG4gICAgICAgICksXG4gICAgICBhY2MgKVxuICB8IEFzdC5DRkxPV01JWCAoYiwgKG0sIHBvcykpIC0+XG4gICAgKCBBc3QuQ0ZMT1dNSVggKGIsIChtaXh0dXJlX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBwb3MgbSwgcG9zKSksXG4gICAgICBhY2MgKVxuICB8IEFzdC5TUEVDSUVTX09GIChiLCBwLCAobSwgcG9zKSkgLT5cbiAgICAoIEFzdC5TUEVDSUVTX09GXG4gICAgICAgICggYixcbiAgICAgICAgICBMaXN0Lm1hcCAocHJpbnRfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MpIHAsXG4gICAgICAgICAgKG1peHR1cmVfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHBvcyBtLCBwb3MpICksXG4gICAgICBhY2MgKVxuXG5sZXQgcGVydHVyYmF0aW9uX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyBjb250YWN0X21hcFxuICAgICgoYWxhcm0sIHByZSwgbW9kcywgcG9zdCksIHBvcykgdXBfdmFycyA6XG4gICAgKF8sIF8sIF8sIF8pIEFzdC5wZXJ0dXJiYXRpb24gKiBpbnQgbGlzdCA9XG4gIGxldCBtb2RzJywgdXBfdmFycycgPVxuICAgIExpc3RfdXRpbC5mb2xkX3JpZ2h0X21hcFxuICAgICAgKG1vZGlmX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzIGNvbnRhY3RfbWFwKVxuICAgICAgbW9kcyB1cF92YXJzXG4gIGluXG4gIGxldCBtYXhfYWxsb3dlZF92YXIgPSBOb25lIGluXG4gICggKCAoIGFsYXJtLFxuICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAoYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIpXG4gICAgICAgICAgcHJlLFxuICAgICAgICBtb2RzJyxcbiAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgKGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyKVxuICAgICAgICAgIHBvc3QgKSxcbiAgICAgIHBvcyApLFxuICAgIHVwX3ZhcnMnIClcblxubGV0IGluaXRfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBjb250YWN0X21hcCA9IGZ1bmN0aW9uXG4gIHwgQXN0LklOSVRfTUlYICh3aG8sIHBvcykgLT5cbiAgICBBc3QuSU5JVF9NSVhcbiAgICAgIChyYXdfbWl4dHVyZV9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgfmNvbnRhY3RfbWFwIHdobywgcG9zKVxuICB8IEFzdC5JTklUX1RPSyBsYWIgLT5cbiAgICBBc3QuSU5JVF9UT0tcbiAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgKGZ1biAobGFiLCBwb3MpIC0+XG4gICAgICAgICAgIG1hdGNoIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIGxhYiB0b2sgd2l0aFxuICAgICAgICAgICB8IFNvbWUgeCAtPiB4LCBwb3NcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAobGFiIF4gXCIgaXMgbm90IGEgZGVjbGFyZWQgdG9rZW5cIiwgcG9zKSkpXG4gICAgICAgICBsYWIpXG5cbmxldCBhZGRfdW5fdmFyaWFibGUga191biBhY2MgcmF0ZV92YXIgPVxuICBtYXRjaCBrX3VuIHdpdGhcbiAgfCBOb25lIC0+IGFjYywgTm9uZVxuICB8IFNvbWUgKGssIGRpc3QpIC0+XG4gICAgbGV0IGFjY191biwgaycgPVxuICAgICAgaWYgQWxnX2V4cHIuaGFzX21peCAoTG9jLnYgaykgdGhlblxuICAgICAgICAoIChMb2MuYW5ub3Rfd2l0aF9kdW1teSByYXRlX3ZhciwgaykgOjogYWNjLFxuICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5BTEdfVkFSIHJhdGVfdmFyKSApXG4gICAgICBlbHNlXG4gICAgICAgIGFjYywga1xuICAgIGluXG4gICAgYWNjX3VuLCBTb21lIChrJywgZGlzdClcblxudHlwZSBhY2NfZnVuY3Rpb25fcnVsZXMgPSB7XG4gIHJ1bGVfbmFtZXM6IGludCAqIE1vZHMuU3RyaW5nU2V0LnQ7XG4gIGV4dHJhX3ZhcnM6XG4gICAgKHN0cmluZyBMb2MuYW5ub3RlZCAqIChBc3QubWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkKSBsaXN0O1xuICBjbGVhbmVkX3J1bGVzOiBydWxlX2ludGVyX3JlcCBsaXN0O1xufVxuXG4oKiogW25hbWVfYW5kX3B1cmlmeV0gY29tcGlsZXMgdGhlIHJ1bGVzIGZyb20gQXN0LnJ1bGVzIGludG8gcnVsZV9pbnRlcl9yZXAsIGNhbGxlZCBpbiBhIGZvbGQgKilcbmxldCBuYW1lX2FuZF9wdXJpZnlfcnVsZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB+Y29udGFjdF9tYXBcbiAgICAoYWNjIDogYWNjX2Z1bmN0aW9uX3J1bGVzKVxuICAgICgobGFiZWxfb3B0LCAoYXN0X3J1bGUsIHJfcG9zKSkgOlxuICAgICAgc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbiAqIEFzdC5ydWxlIExvYy5hbm5vdGVkKSA6IGFjY19mdW5jdGlvbl9ydWxlcyA9XG4gIGxldCBydWxlX25hbWVzJywgcnVsZV9sYWJlbCA9XG4gICAgZ2l2ZV9ydWxlX2xhYmVsIGFzdF9ydWxlLmJpZGlyZWN0aW9uYWwgYWNjLnJ1bGVfbmFtZXMgQXN0LnByaW50X2FzdF9ydWxlXG4gICAgICBhc3RfcnVsZSBsYWJlbF9vcHRcbiAgaW5cbiAgbGV0IGFjYycsIGtfZGVmID1cbiAgICBpZiBBbGdfZXhwci5oYXNfbWl4IChMb2MudiBhc3RfcnVsZS5rX2RlZikgdGhlbiAoXG4gICAgICBsZXQgcmF0ZV92YXIgPSBydWxlX2xhYmVsIF4gXCJfcmF0ZVwiIGluXG4gICAgICAoIChMb2MuYW5ub3Rfd2l0aF9kdW1teSByYXRlX3ZhciwgYXN0X3J1bGUua19kZWYpIDo6IGFjYy5leHRyYV92YXJzLFxuICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQUxHX1ZBUiByYXRlX3ZhcikgKVxuICAgICkgZWxzZVxuICAgICAgYWNjLmV4dHJhX3ZhcnMsIGFzdF9ydWxlLkFzdC5rX2RlZlxuICBpblxuICBsZXQgYWNjJycsIGtfdW4gPVxuICAgIGFkZF91bl92YXJpYWJsZSBhc3RfcnVsZS5rX3VuIGFjYycgKHJ1bGVfbGFiZWwgXiBcIl91bl9yYXRlXCIpXG4gIGluXG4gIG1hdGNoIGFzdF9ydWxlLnJld3JpdGUgd2l0aFxuICB8IEFzdC5FZGl0IGUgLT5cbiAgICBpZlxuICAgICAgYXN0X3J1bGUuYmlkaXJlY3Rpb25hbCB8fCBhc3RfcnVsZS5rX29wIDw+IE5vbmVcbiAgICAgIHx8IGFzdF9ydWxlLmtfb3BfdW4gPD4gTm9uZVxuICAgIHRoZW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIlJ1bGVzIGluIGVkaXQgbm90YXRpb24gY2Fubm90IGJlIGJpZGlyZWN0aW9uYWxcIiwgcl9wb3MpKTtcbiAgICBsZXQgbWl4dHVyZSwgY3JlYXRlZF9taXggPVxuICAgICAgYW5ub3RhdGVfZWRpdF9taXh0dXJlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+aXNfcnVsZTp0cnVlIHNpZ3NcbiAgICAgICAgfmNvbnRhY3RfbWFwIGUuQXN0Lm1peFxuICAgIGluXG4gICAge1xuICAgICAgcnVsZV9uYW1lcyA9IHJ1bGVfbmFtZXMnO1xuICAgICAgZXh0cmFfdmFycyA9IGFjYycnO1xuICAgICAgY2xlYW5lZF9ydWxlcyA9XG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbF9vcHQ7XG4gICAgICAgICAgYmlkaXJlY3Rpb25hbCA9IHRydWU7XG4gICAgICAgICAgbWl4dHVyZTtcbiAgICAgICAgICBjcmVhdGVkX21peDtcbiAgICAgICAgICBybV90b2tlbiA9IFtdO1xuICAgICAgICAgIGFkZF90b2tlbiA9IGUuQXN0LmRlbHRhX3Rva2VuO1xuICAgICAgICAgIGtfZGVmO1xuICAgICAgICAgIGtfdW47XG4gICAgICAgICAgcG9zID0gcl9wb3M7XG4gICAgICAgIH1cbiAgICAgICAgOjogYWNjLmNsZWFuZWRfcnVsZXM7XG4gICAgfVxuICB8IEFzdC5BcnJvdyBhIC0+XG4gICAgbGV0IG1peHR1cmUsIGNyZWF0ZWRfbWl4ID1cbiAgICAgIGFubm90YXRlX2xoc193aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgfmNvbnRhY3RfbWFwXG4gICAgICAgIGEuQXN0LmxocyBhLkFzdC5yaHNcbiAgICBpblxuICAgIGxldCBydWxlcycgPVxuICAgICAge1xuICAgICAgICBsYWJlbF9vcHQ7XG4gICAgICAgIGJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgbWl4dHVyZTtcbiAgICAgICAgY3JlYXRlZF9taXg7XG4gICAgICAgIHJtX3Rva2VuID0gYS5Bc3Qucm1fdG9rZW47XG4gICAgICAgIGFkZF90b2tlbiA9IGEuQXN0LmFkZF90b2tlbjtcbiAgICAgICAga19kZWY7XG4gICAgICAgIGtfdW47XG4gICAgICAgIHBvcyA9IHJfcG9zO1xuICAgICAgfVxuICAgICAgOjogYWNjLmNsZWFuZWRfcnVsZXNcbiAgICBpblxuICAgIGxldCBhY2MnJycsIHJ1bGVzJycgPVxuICAgICAgbWF0Y2ggYXN0X3J1bGUuYmlkaXJlY3Rpb25hbCwgYXN0X3J1bGUua19vcCB3aXRoXG4gICAgICB8IHRydWUsIFNvbWUgayB3aGVuIEFsZ19leHByLmhhc19taXggKExvYy52IGspIC0+XG4gICAgICAgIGxldCByYXRlX3ZhciA9IEFzdC5mbGlwX2xhYmVsIHJ1bGVfbGFiZWwgXiBcIl9yYXRlXCIgaW5cbiAgICAgICAgbGV0IHJhdGVfdmFyX3VuID0gQXN0LmZsaXBfbGFiZWwgcnVsZV9sYWJlbCBeIFwiX3VuX3JhdGVcIiBpblxuICAgICAgICBsZXQgYWNjX3VuLCBrX29wX3VuID1cbiAgICAgICAgICBhZGRfdW5fdmFyaWFibGUgYXN0X3J1bGUua19vcF91biBhY2MnJyByYXRlX3Zhcl91blxuICAgICAgICBpblxuICAgICAgICBsZXQgbWl4dHVyZSwgY3JlYXRlZF9taXggPVxuICAgICAgICAgIGFubm90YXRlX2xoc193aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgfmNvbnRhY3RfbWFwXG4gICAgICAgICAgICBhLkFzdC5yaHMgYS5Bc3QubGhzXG4gICAgICAgIGluXG4gICAgICAgICggKExvYy5hbm5vdF93aXRoX2R1bW15IHJhdGVfdmFyLCBrKSA6OiBhY2NfdW4sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWxfb3B0ID1cbiAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwIChmdW4gKGwsIHApIC0+IEFzdC5mbGlwX2xhYmVsIGwsIHApIGxhYmVsX29wdDtcbiAgICAgICAgICAgIGJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgICAgIG1peHR1cmU7XG4gICAgICAgICAgICBjcmVhdGVkX21peDtcbiAgICAgICAgICAgIHJtX3Rva2VuID0gYS5Bc3QuYWRkX3Rva2VuO1xuICAgICAgICAgICAgYWRkX3Rva2VuID0gYS5Bc3Qucm1fdG9rZW47XG4gICAgICAgICAgICBrX2RlZiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5BTEdfVkFSIHJhdGVfdmFyKTtcbiAgICAgICAgICAgIGtfdW4gPSBrX29wX3VuO1xuICAgICAgICAgICAgcG9zID0gcl9wb3M7XG4gICAgICAgICAgfVxuICAgICAgICAgIDo6IHJ1bGVzJyApXG4gICAgICB8IHRydWUsIFNvbWUgcmF0ZSAtPlxuICAgICAgICBsZXQgcmF0ZV92YXJfdW4gPSBBc3QuZmxpcF9sYWJlbCBydWxlX2xhYmVsIF4gXCJfdW5fcmF0ZVwiIGluXG4gICAgICAgIGxldCBhY2NfdW4sIGtfb3BfdW4gPVxuICAgICAgICAgIGFkZF91bl92YXJpYWJsZSBhc3RfcnVsZS5rX29wX3VuIGFjYycnIHJhdGVfdmFyX3VuXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtaXh0dXJlLCBjcmVhdGVkX21peCA9XG4gICAgICAgICAgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB+Y29udGFjdF9tYXBcbiAgICAgICAgICAgIGEuQXN0LnJocyBhLkFzdC5saHNcbiAgICAgICAgaW5cbiAgICAgICAgKCBhY2NfdW4sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWxfb3B0ID1cbiAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwIChmdW4gKGwsIHApIC0+IEFzdC5mbGlwX2xhYmVsIGwsIHApIGxhYmVsX29wdDtcbiAgICAgICAgICAgIGJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgICAgIG1peHR1cmU7XG4gICAgICAgICAgICBjcmVhdGVkX21peDtcbiAgICAgICAgICAgIHJtX3Rva2VuID0gYS5Bc3QuYWRkX3Rva2VuO1xuICAgICAgICAgICAgYWRkX3Rva2VuID0gYS5Bc3Qucm1fdG9rZW47XG4gICAgICAgICAgICBrX2RlZiA9IHJhdGU7XG4gICAgICAgICAgICBrX3VuID0ga19vcF91bjtcbiAgICAgICAgICAgIHBvcyA9IHJfcG9zO1xuICAgICAgICAgIH1cbiAgICAgICAgICA6OiBydWxlcycgKVxuICAgICAgfCBmYWxzZSwgTm9uZSAtPiBhY2MnJywgcnVsZXMnXG4gICAgICB8IGZhbHNlLCBTb21lIF8gfCB0cnVlLCBOb25lIC0+XG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoIFwiSW5jb21wYXRpYmxlIGFycm93IGFuZCBraW5lY3RpYyByYXRlIGZvciBpbnZlcnNlIGRlZmluaXRpb25cIixcbiAgICAgICAgICAgICAgIHJfcG9zICkpXG4gICAgaW5cbiAgICB7IHJ1bGVfbmFtZXMgPSBydWxlX25hbWVzJzsgZXh0cmFfdmFycyA9IGFjYycnJzsgY2xlYW5lZF9ydWxlcyA9IHJ1bGVzJycgfVxuXG50eXBlIHNpdGVfc2lnX3dpdGhfbGlua3NfYXNfbGlzdHMgPVxuICAoc3RyaW5nIExvYy5hbm5vdGVkICogc3RyaW5nIExvYy5hbm5vdGVkKSBsaXN0IFNpZ25hdHVyZS5zaXRlX3NpZ1xuKCoqIFRlbXBvcmFyeSB0eXBlIHRvIHN0b3JlIHNpdGUgc2lnbmF0dXJlIHdpdGggbGlzdCBsaW5rcyBpbnN0ZWFkIG9mIGFycmF5IGFycmF5IGxpbmtzICopXG5cbigqKiBbcHJlcGFyZV9hZ2VudF9zaWcgfnNpdGVzIGV2YWx1YXRlcyB0byAoc2l0ZV9zaWdzLCBjb3VudGVyX2xpc3QpIHdoaWNoIGRlc2NyaWJlIGRhdGEgdGhhdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSBTaWduYXR1cmUudCBmb3IgYSBzaW5nbGUgYWdlbnQqKVxubGV0IHByZXBhcmVfYWdlbnRfc2lnIH4oc2l0ZXMgOiBBc3QuY291bnRlcl9zaWcgQXN0LnNpdGUgbGlzdCkgOlxuICAgIHNpdGVfc2lnX3dpdGhfbGlua3NfYXNfbGlzdHMgTmFtZWREZWNscy50ICogc3RyaW5nIExvYy5hbm5vdGVkIGxpc3QgPVxuICBsZXQgKCAoc2l0ZV9zaWdzX3ByZV9uYW1lZGRlY2xzIDpcbiAgICAgICAgICAoc3RyaW5nIExvYy5hbm5vdGVkICogc2l0ZV9zaWdfd2l0aF9saW5rc19hc19saXN0cykgbGlzdCksXG4gICAgICAgIChjb3VudGVyX25hbWVzIDogc3RyaW5nIExvYy5hbm5vdGVkIGxpc3QpICkgPVxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biBzaXRlIChhY2Nfc2l0ZV9zaWdzLCBhY2NfY291bnRlcl9uYW1lcykgLT5cbiAgICAgICAgbWF0Y2ggc2l0ZSB3aXRoXG4gICAgICAgICgqIFRPRE8gc2VlIGlmIGNhbiByZW1vdmUgQXN0IGhlcmUgKilcbiAgICAgICAgfCBBc3QuUG9ydCBwIC0+XG4gICAgICAgICAgKCAoIHAucG9ydF9uYW1lLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgU2lnbmF0dXJlLmludGVybmFsX3N0YXRlID1cbiAgICAgICAgICAgICAgICAgIE5hbWVkRGVjbHMuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgIChUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgeCwgcG9zIC0+ICh4LCBwb3MpLCAoKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSwgcG9zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiRm9yYmlkZGVuIGludGVybmFsIHN0YXRlIGluc2lkZSBzaWduYXR1cmUgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgcC5wb3J0X2ludCk7XG4gICAgICAgICAgICAgICAgbGlua3MgPVxuICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBhY2NfbGlua3MnIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCAoIChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUgfCBMS2FwcGEuTE5LX0FOWSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjX2xpbmtzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgIHwgKExLYXBwYS5MTktfU09NRSB8IExLYXBwYS5MTktfVkFMVUUgXyksIHBvcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIkZvcmJpZGRlbiBsaW5rIHN0YXR1cyBpbnNpZGUgc2lnbmF0dXJlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IExLYXBwYS5MTktfVFlQRSAoYSwgYiksIF8gLT4gKGEsIGIpIDo6IGFjY19saW5rcycpXG4gICAgICAgICAgICAgICAgICAgICAgIFtdIHAucG9ydF9saW5rKTtcbiAgICAgICAgICAgICAgICBjb3VudGVyX2luZm8gPSBOb25lO1xuICAgICAgICAgICAgICB9IClcbiAgICAgICAgICAgIDo6IGFjY19zaXRlX3NpZ3MsXG4gICAgICAgICAgICBhY2NfY291bnRlcl9uYW1lcyApXG4gICAgICAgIHwgQ291bnRlciBjIC0+XG4gICAgICAgICAgKCogV2UgYXJlIHJlYWRpbmcgaGVyZSBhIHNpZ25hdHVyZSwgb25seSBDRVEgdGVzdHMgYXJlIGFjY2VwdGVkICopXG4gICAgICAgICAgKCAoIGMuQXN0LmNvdW50ZXJfc2lnX25hbWUsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpbnRlcm5hbF9zdGF0ZSA9IE5hbWVkRGVjbHMuY3JlYXRlIFt8fF07XG4gICAgICAgICAgICAgICAgKCogQWdlbnQgd2l0aCBjb3VudGVyIGNhbiBsaW5rIHRvIHBvcnQgW2JdIG9uIGNvdW50ZXIgYWdlbnQgW19fY291bnRlcl9hZ2VudF0gKilcbiAgICAgICAgICAgICAgICBsaW5rcyA9XG4gICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAoIExvYy5hbm5vdF93aXRoX2R1bW15IFwiYlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgXCJfX2NvdW50ZXJfYWdlbnRcIiApO1xuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIGNvdW50ZXJfaW5mbyA9XG4gICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2luZm9fbWluID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjLkFzdC5jb3VudGVyX3NpZ19taW4gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChTb21lIGksIF8pIC0+IFNvbWUgaVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoTm9uZSwgXykgLT4gTm9uZSk7XG4gICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9pbmZvX21heCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYy5Bc3QuY291bnRlcl9zaWdfbWF4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSBpLCBfKSAtPiBTb21lIGlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgKE5vbmUsIF8pIC0+IE5vbmUpO1xuICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfZGVmYXVsdF92YWx1ZSA9IGMuQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH0gKVxuICAgICAgICAgICAgOjogYWNjX3NpdGVfc2lncyxcbiAgICAgICAgICAgIGMuY291bnRlcl9zaWdfbmFtZSA6OiBhY2NfY291bnRlcl9uYW1lcyApKVxuICAgICAgc2l0ZXMgKFtdLCBbXSlcbiAgaW5cbiAgTmFtZWREZWNscy5jcmVhdGVfZnJvbV9saXN0IHNpdGVfc2lnc19wcmVfbmFtZWRkZWNscywgY291bnRlcl9uYW1lc1xuXG4oKiogW21ha2VfY291bnRlcl9hZ2VudF9zaXRlX3NpZ3MgY291bnRlcnNfcGVyX2FnZW50XSBldmFsdWF0ZXMgdG9cbiAgKGNvdW50ZXJfYWdlbnRfbmFtZSwgc2l0ZV9zaWdzX2NvdW50ZXJfYWdlbnQpIHdoaWNoIGRlc2NyaWJlIHRoZSBjb3VudGVyXG4gICAgICBhZ2VudCBhbmQgaXRzIHNpdGUgc2lnbmF0dXJlcyB3aXRoIHBvc3NpYmxlIGxpbmtzIHRvIG90aGVyIGFnZW50cy5cbiAgICAgIFtjb3VudGVyX2luZm9dIGFzc29jaWF0ZXMgZWFjaCBhZ2VudCB0byBhIGxpc3Qgb2YgY291bnRlciBwb3J0cywgb25lIGZvciBlYWNoIGRlZmluZWQgY291bnRlciAqKVxubGV0IG1ha2VfY291bnRlcl9hZ2VudF9zaXRlX3NpZ3NcbiAgICAoY291bnRlcnNfcGVyX2FnZW50IDogKChzdHJpbmcgKiBMb2MudCkgKiAoc3RyaW5nICogTG9jLnQpIGxpc3QpIGxpc3QpIDpcbiAgICAoc3RyaW5nICogTG9jLnQpXG4gICAgKiAoKHN0cmluZyAqIExvYy50KSAqIChzdHJpbmcgKiBMb2MudCkpIGxpc3QgU2lnbmF0dXJlLnNpdGVfc2lnIE5hbWVkRGVjbHMudFxuICAgID1cbiAgbGV0IGNvdW50ZXJfYWdlbnRfbmFtZSA9IFwiX19jb3VudGVyX2FnZW50XCIsIExvYy5kdW1teSBpblxuICBsZXQgYV9wb3J0X25hbWUgPSBcImFcIiwgTG9jLmR1bW15IGluXG4gICgqIGFmdGVyIHBvcnQgKilcbiAgbGV0IGJfcG9ydF9uYW1lID0gXCJiXCIsIExvYy5kdW1teSBpblxuXG4gICgqIGJlZm9yZSBwb3J0ICopXG5cbiAgKCogUG9ydCBbYV0gY2FuIGxpbmsgdG8gcG9ydCBiIG9mIGFnZW50IG9mIHR5cGUgY291bnRlciBhZ2VudCAqKVxuICBsZXQgYV9wb3J0X3NpZyA9XG4gICAge1xuICAgICAgU2lnbmF0dXJlLmludGVybmFsX3N0YXRlID0gTmFtZWREZWNscy5jcmVhdGUgW3x8XTtcbiAgICAgIGxpbmtzID0gU29tZSBbIGJfcG9ydF9uYW1lLCBjb3VudGVyX2FnZW50X25hbWUgXTtcbiAgICAgIGNvdW50ZXJfaW5mbyA9IE5vbmU7XG4gICAgfVxuICBpblxuICAoKiBQb3J0IFtiXSBjYW4gbGluayB0byBwb3J0IGEgb2YgYWdlbnQgb2YgdHlwZSBjb3VudGVyIGFnZW50XG4gICAqIE9SIGZvciBlYWNoIGFnZW50IFthZ2VudF9uYW1lXSB3aXRoIGNvdW50ZXJzLCB0byB0aGVpciBwb3J0c1xuICAgKiBbYWdlbnRfY291bnRlcl9wb3J0X25hbWVdICopXG4gIGxldCBiX2xpbmtzID1cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKGFnZW50X25hbWUsIGNvdW50ZXJzX2Zyb21fYWdlbnQpIGFjYyAtPlxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gYWdlbnRfY291bnRlcl9wb3J0X25hbWUgLT4gYWdlbnRfY291bnRlcl9wb3J0X25hbWUsIGFnZW50X25hbWUpXG4gICAgICAgICAgY291bnRlcnNfZnJvbV9hZ2VudFxuICAgICAgICBAIGFjYylcbiAgICAgIGNvdW50ZXJzX3Blcl9hZ2VudFxuICAgICAgWyBhX3BvcnRfbmFtZSwgY291bnRlcl9hZ2VudF9uYW1lIF1cbiAgaW5cbiAgbGV0IGJfcG9ydF9zaWcgPVxuICAgIHtcbiAgICAgIFNpZ25hdHVyZS5pbnRlcm5hbF9zdGF0ZSA9IE5hbWVkRGVjbHMuY3JlYXRlIFt8fF07XG4gICAgICBsaW5rcyA9IFNvbWUgYl9saW5rcztcbiAgICAgIGNvdW50ZXJfaW5mbyA9IE5vbmU7XG4gICAgfVxuICBpblxuICBsZXQgc2l0ZV9zaWdzX2NvdW50ZXJfYWdlbnQgPVxuICAgIE5hbWVkRGVjbHMuY3JlYXRlIFt8IGFfcG9ydF9uYW1lLCBhX3BvcnRfc2lnOyBiX3BvcnRfbmFtZSwgYl9wb3J0X3NpZyB8XVxuICBpblxuICBjb3VudGVyX2FnZW50X25hbWUsIHNpdGVfc2lnc19jb3VudGVyX2FnZW50XG5cbmxldCBhZ2VudF9zaWdzX29mX2FnZW50X3NpZ3Nfd2l0aF9saW5rc19hc19saXN0cyB+KGJ1aWxkX2NvbnRhY3RfbWFwIDogYm9vbClcbiAgICAoYWdlbnRfc2lnc19wcmUgOiBzaXRlX3NpZ193aXRoX2xpbmtzX2FzX2xpc3RzIE5hbWVkRGVjbHMudCBOYW1lZERlY2xzLnQpIDpcbiAgICBTaWduYXR1cmUudCBOYW1lZERlY2xzLnQgPVxuICBsZXQgc2l6ZV9zaWdzID0gTmFtZWREZWNscy5zaXplIGFnZW50X3NpZ3NfcHJlIGluXG4gIE5hbWVkRGVjbHMubWFwaVxuICAgIChmdW4gYWdfaWQgYWdfbmFtZSAtPlxuICAgICAgTmFtZWREZWNscy5tYXAgKGZ1biBzaXRlX25hbWVfYWcxIHNpdGVfc2lnIC0+XG4gICAgICAgICAgaWYgbm90IGJ1aWxkX2NvbnRhY3RfbWFwIHRoZW5cbiAgICAgICAgICAgIHsgc2l0ZV9zaWcgd2l0aCBTaWduYXR1cmUubGlua3MgPSBOb25lIH1cbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICgqIFVwZGF0ZSBsaW5rcyAqKVxuICAgICAgICAgICAgKCogVE9ETyBpbXByb3ZlIGNvbW1lbnQgYWJvdmUgKilcbiAgICAgICAgICAgIGxldCBzaXRlX2xpbmtzID1cbiAgICAgICAgICAgICAgQXJyYXkuaW5pdCAoc2l6ZV9zaWdzIC0gYWdfaWQpIChmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgQXJyYXkubWFrZVxuICAgICAgICAgICAgICAgICAgICAoTmFtZWREZWNscy5zaXplXG4gICAgICAgICAgICAgICAgICAgICAgIChOYW1lZERlY2xzLmVsdF92YWwgYWdlbnRfc2lnc19wcmUgKGkgKyBhZ19pZCkpKVxuICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgKGZ1biAoKChzaXRlX25hbWVfYWcyLCBwb3MpIGFzIHNpdGVfbmFtZSksICgoYWcyX25hbWUsIF8pIGFzIGFnKSkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYWcyX2lkID0gTmFtZWREZWNscy5lbHRfaWQgfmtpbmQ6XCJhZ1wiIGFnZW50X3NpZ3NfcHJlIGFnIGluXG4gICAgICAgICAgICAgICAgbGV0IHNpdGVfaWQgPVxuICAgICAgICAgICAgICAgICAgTmFtZWREZWNscy5lbHRfaWQgfmtpbmQ6XCJzaXRlIG5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAoTmFtZWREZWNscy5lbHRfdmFsIGFnZW50X3NpZ3NfcHJlIGFnMl9pZClcbiAgICAgICAgICAgICAgICAgICAgc2l0ZV9uYW1lXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBpZiBhZzJfaWQgPj0gYWdfaWQgdGhlblxuICAgICAgICAgICAgICAgICAgc2l0ZV9saW5rcy4oYWcyX2lkIC0gYWdfaWQpLihzaXRlX2lkKSA8LSB0cnVlO1xuICAgICAgICAgICAgICAgIGxldCBzaG91bGRfcmFpc2VfZm9yX21pc3NpbmdfbGluayA9XG4gICAgICAgICAgICAgICAgICBub3RcbiAgICAgICAgICAgICAgICAgICAgKExpc3QuZXhpc3RzXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gKCh4LCBfKSwgKHksIF8pKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBzaXRlX25hbWVfYWcxICYmIHkgPSBhZ19uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAoKE5hbWVkRGVjbHMuZWx0X3ZhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5hbWVkRGVjbHMuZWx0X3ZhbCBhZ2VudF9zaWdzX3ByZSBhZzJfaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXRlX2lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAubGlua3MgfD4gT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGlmIHNob3VsZF9yYWlzZV9mb3JfbWlzc2luZ19saW5rIHRoZW5cbiAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICggRm9ybWF0LmFzcHJpbnRmIFwiTm8gbGluayB0byAlcy4lcyBmcm9tICVzLiVzLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXRlX25hbWVfYWcxIGFnX25hbWUgc2l0ZV9uYW1lX2FnMiBhZzJfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKSkpXG4gICAgICAgICAgICAgIChPcHRpb25fdXRpbC51bnNvbWVfb3JfcmFpc2Ugc2l0ZV9zaWcubGlua3MpO1xuICAgICAgICAgICAgeyBzaXRlX3NpZyB3aXRoIFNpZ25hdHVyZS5saW5rcyA9IFNvbWUgc2l0ZV9saW5rcyB9XG4gICAgICAgICAgKSkpXG4gICAgYWdlbnRfc2lnc19wcmVcblxubGV0IGNyZWF0ZV9zaWdzIChsIDogQXN0LmFnZW50X3NpZyBsaXN0KSA6IFNpZ25hdHVyZS5zID1cbiAgKCogQ29udGFjdCBtYXAgc2hvdWxkIGJlIGJ1aWx0IG9ubHkgaWYgYSBzcGVjaWZpYyBsaW5rIGlzIGRlc2NyaWJlZCBpbiB0aGUgZGVmaW5pdGlvbiBvZiBzaWduYXR1cmUgKilcbiAgbGV0IGJ1aWxkX2NvbnRhY3RfbWFwIDogYm9vbCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjMCAtPiBmdW5jdGlvblxuICAgICAgICB8IEFzdC5BYnNlbnQgcG9zIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoXCJBYnNlbnQgYWdlbnQgYXJlIGZvcmJpZGRlbiBpbiBzaWduYXR1cmVcIiwgcG9zKSlcbiAgICAgICAgfCBBc3QuUHJlc2VudCAoXywgc2l0ZXMsIF8pIC0+XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gYWNjMSBzaXRlIC0+XG4gICAgICAgICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAgICAgICB8IEFzdC5Db3VudGVyIF8gLT4gYWNjMVxuICAgICAgICAgICAgICB8IEFzdC5Qb3J0IHAgLT5cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBhY2MyIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgIHwgKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSB8IExLYXBwYS5MTktfQU5ZKSwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGFjYzJcbiAgICAgICAgICAgICAgICAgICAgfCAoTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkxOS19WQUxVRSBfKSwgcG9zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiRm9yYmlkZGVuIGxpbmsgc3RhdHVzIGluc2lkZSBhIGRlZmluaXRpb24gb2YgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKSlcbiAgICAgICAgICAgICAgICAgICAgfCBMS2FwcGEuTE5LX1RZUEUgKF8sIF8pLCBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICBhY2MxIHAuQXN0LnBvcnRfbGluaylcbiAgICAgICAgICAgIGFjYzAgc2l0ZXMpXG4gICAgICBmYWxzZSBsXG4gIGluXG5cbiAgbGV0ICggKHNpZ3Nfd2l0aF9saW5rc19hc19saXN0cyA6XG4gICAgICAgICAgKHN0cmluZyBMb2MuYW5ub3RlZCAqIHNpdGVfc2lnX3dpdGhfbGlua3NfYXNfbGlzdHMgTmFtZWREZWNscy50KSBsaXN0KSxcbiAgICAgICAgKGNvdW50ZXJzX3Blcl9hZ2VudCA6XG4gICAgICAgICAgKHN0cmluZyBMb2MuYW5ub3RlZCAqIHN0cmluZyBMb2MuYW5ub3RlZCBsaXN0KSBsaXN0KSApID1cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gYWdlbnQgKGFjY19zaWdzLCBhY2NfY291bnRlcnNfcGVyX2FnZW50KSAtPlxuICAgICAgICBtYXRjaCBhZ2VudCB3aXRoXG4gICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGFjY19zaWdzLCBhY2NfY291bnRlcnNfcGVyX2FnZW50XG4gICAgICAgIHwgQXN0LlByZXNlbnQgKGFnZW50X25hbWUsIHNpdGVzLCBfKSAtPlxuICAgICAgICAgIGxldCBzaXRlX3NpZ3NfbmQsIGNvdW50ZXJzX2FnZW50ID0gcHJlcGFyZV9hZ2VudF9zaWcgfnNpdGVzIGluXG4gICAgICAgICAgbGV0IGNvdW50ZXJzJyA9XG4gICAgICAgICAgICBpZiBjb3VudGVyc19hZ2VudCA9IFtdIHRoZW5cbiAgICAgICAgICAgICAgYWNjX2NvdW50ZXJzX3Blcl9hZ2VudFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoYWdlbnRfbmFtZSwgY291bnRlcnNfYWdlbnQpIDo6IGFjY19jb3VudGVyc19wZXJfYWdlbnRcbiAgICAgICAgICBpblxuICAgICAgICAgIChhZ2VudF9uYW1lLCBzaXRlX3NpZ3NfbmQpIDo6IGFjY19zaWdzLCBjb3VudGVycycpXG4gICAgICBsIChbXSwgW10pXG4gIGluXG5cbiAgbGV0IGFnZW50X3NpZ3MgOiBTaWduYXR1cmUudCBOYW1lZERlY2xzLnQgPVxuICAgIChpZiBjb3VudGVyc19wZXJfYWdlbnQgPSBbXSB0aGVuXG4gICAgICAgc2lnc193aXRoX2xpbmtzX2FzX2xpc3RzXG4gICAgIGVsc2VcbiAgICAgICBtYWtlX2NvdW50ZXJfYWdlbnRfc2l0ZV9zaWdzIGNvdW50ZXJzX3Blcl9hZ2VudFxuICAgICAgIDo6IHNpZ3Nfd2l0aF9saW5rc19hc19saXN0cylcbiAgICB8PiBOYW1lZERlY2xzLmNyZWF0ZV9mcm9tX2xpc3RcbiAgICB8PiBhZ2VudF9zaWdzX29mX2FnZW50X3NpZ3Nfd2l0aF9saW5rc19hc19saXN0cyB+YnVpbGRfY29udGFjdF9tYXBcbiAgaW5cblxuICAoKiBUT0RPIHNlZSBhZ2VudF9zaWdzIG5hbWluZ3MgKilcbiAgU2lnbmF0dXJlLmNyZWF0ZSB+Y291bnRlcnNfcGVyX2FnZW50IGFnZW50X3NpZ3NcblxubGV0IGluaXRfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvbnRhY3RfbWFwIHRvayBhbGdzIGluaXRzID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuIChleHByLCBpbmkpIC0+XG4gICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyBleHByLFxuICAgICAgICBpbml0X29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgY29udGFjdF9tYXAgaW5pICkpXG4gICAgaW5pdHNcblxudHlwZSBhc3RfY29tcGlsZWRfZGF0YSA9IHtcbiAgYWdlbnRzX3NpZzogU2lnbmF0dXJlLnM7XG4gIGNvbnRhY3RfbWFwOiBDb250YWN0X21hcC50O1xuICB0b2tlbl9uYW1lczogdW5pdCBOYW1lZERlY2xzLnQ7XG4gIGFsZ192YXJzX2ZpbmRlcjogaW50IE1vZHMuU3RyaW5nTWFwLnQ7XG4gIHVwZGF0ZWRfYWxnX3ZhcnM6IGludCBsaXN0O1xuICByZXN1bHQ6XG4gICAgKCBBc3QuYWdlbnQsXG4gICAgICBBc3QuYWdlbnRfc2lnLFxuICAgICAgTEthcHBhLnJ1bGVfbWl4dHVyZSxcbiAgICAgIFJhd19taXh0dXJlLnQsXG4gICAgICBpbnQsXG4gICAgICBMS2FwcGEucnVsZSApXG4gICAgQXN0LmNvbXBpbDtcbiAgICAgICgqKiBDb21waWxlZCBkYXRhIHdoZXJlIGlkZW50aWZpZXJzIGFyZSBpIEFzdC5jb21waWwgd2hlcmUgaWRlbnRpZmllcnNcbiAgICAgKiBhcmUgaW50ZWdlcnMgYW5kIG5vdCBzdHJpbmcsIHN5bnRhY3RpYyBzdWdhciBvbiBydWxlcyBhcmUgZXhwYW5zZWRcbiAgICAgKiAoc3ludGFjdGljIHN1Z2FyIG9uIG1peHR1cmUgYXJlIG5vdCkgKilcbn1cblxubGV0IGludmVydGVkX2NvdW50ZXJfbmFtZSAobmFtZSA6IHN0cmluZykgOiBzdHJpbmcgPVxuICBuYW1lIF4gU2lnbmF0dXJlLmludmVydGVkX2NvdW50ZXJfc3VmZml4XG5cbigqKiBFdmFsdWF0ZXMgdG8gYSBhc3RfY29tcGlsIHdoZXJlIGNsdGUgdGVzdHMgaGF2ZSBiZWVuIGNoYW5nZWQgdG8gY2d0ZSB0ZXN0cy5cbiAqIEZvciB0aGlzLCBmb3IgZWFjaCBjb3VudGVyIHdoZXJlIGEgQ0xURSB0ZXN0IGlzIHByZXNlbnQsIHdob3NlIHZhbHVlcyBhcmUgaW4gW1xcW2EsIGJcXF1dLCBpbml0aWFsaXplZCBhdCBbaV0gYW5kIGFkZCBhIG5ldyBjb3VudGVyIGJlbG9uZ2luZyBpbiBbYSwgYl0gaW5pdGlhbGl6ZWQgYXQgW2ErYi1pXS5cbiAqIEVhY2ggdGVzdCBbPiB2YWx1ZV0gaXMgdGhlbiB0cmFuc2xhdGVkIGludG8gYSB0ZXN0IHRvIHRoZSBcImludmVydGVkXCIgY291bnRlciBhcyBbPCBhK2ItdmFsdWVdLlxuICogRWFjaCBkZWx0YSBbKyBkZWx0YV0gaXMgdHJhbnNsYXRlZCBpbnRvIGEgWy0gZGVsdGFdICopXG5cblxuXG5cbmxldCB0cmFuc2xhdGVfY2x0ZV9pbnRvX2NndGUgKGFzdF9jb21waWwgOiBBc3QucGFyc2luZ19jb21waWwpID1cbiAgbGV0IGNvdW50ZXJfZm9sZF9pbl9taXh0dXJlIGYgYWNjIG1peHR1cmUgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYzIgYWdlbnRfbGlzdCAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjMyBhZ2VudCAtPlxuICAgICAgICAgICAgbWF0Y2ggYWdlbnQgd2l0aFxuICAgICAgICAgICAgfCBBc3QuQWJzZW50IF8gLT4gYWNjM1xuICAgICAgICAgICAgfCBBc3QuUHJlc2VudCAoYWdlbnRfbmFtZSwgc2l0ZV9saXN0LCBfKSAtPlxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gYWNjNCBzaXRlIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBzaXRlIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgQXN0LlBvcnQgXyAtPiBhY2M0XG4gICAgICAgICAgICAgICAgICB8IENvdW50ZXIgY291bnRlciAtPiBmIGFjYzQgKExvYy52IGFnZW50X25hbWUpIGNvdW50ZXIpXG4gICAgICAgICAgICAgIGFjYzMgc2l0ZV9saXN0KVxuICAgICAgICBhY2MyIGFnZW50X2xpc3QpXG4gICAgICBhY2MgbWl4dHVyZVxuICBpblxuICBsZXQgcmVjIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGV4cHIgPVxuICAgIG1hdGNoIExvYy52IGV4cHIgd2l0aFxuICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUCAoXywgZTEsIGUyKSAtPlxuICAgICAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIChjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlMSkgZTJcbiAgICB8IFVOX0FMR19PUCAoXywgZSkgfCBESUZGX1RPS0VOIChlLCBfKSAtPlxuICAgICAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlXG4gICAgfCBTVEFURV9BTEdfT1AgXyB8IEFMR19WQVIgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIC0+IGFjY1xuICAgIHwgS0FQUEFfSU5TVEFOQ0UgbWl4dHVyZSAtPlxuICAgICAgICBjb3VudGVyX2ZvbGRfaW5fbWl4dHVyZSBmIGFjYyBtaXh0dXJlXG4gICAgfCBJRiAoZWIsIGUxLCBlMikgLT5cbiAgICAgICAgY291bnRlcl9mb2xkX2luX2JleHByIGYgKGNvdW50ZXJfZm9sZF9pbl9leHByIGYgKGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGUxKSBlMikgZWJcbiAgICB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGUsIG1peHR1cmUpIC0+XG4gICAgICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgKGNvdW50ZXJfZm9sZF9pbl9taXh0dXJlIGYgYWNjIG1peHR1cmUpIGVcbiAgYW5kIGNvdW50ZXJfZm9sZF9pbl9iZXhwciBmIGFjYyBiZXhwciA9XG4gICAgbWF0Y2ggTG9jLnYgYmV4cHIgd2l0aFxuICAgIHwgVFJVRSB8IEZBTFNFIC0+IGFjY1xuICAgIHwgQklOX0JPT0xfT1AgKF8sIGJlMSwgYmUyKSAtPlxuICAgICAgICBjb3VudGVyX2ZvbGRfaW5fYmV4cHIgZiAoY291bnRlcl9mb2xkX2luX2JleHByIGYgYWNjIGJlMSkgYmUyXG4gICAgfCBVTl9CT09MX09QIChfLCBiZSkgLT5cbiAgICAgICAgY291bnRlcl9mb2xkX2luX2JleHByIGYgYWNjIGJlXG4gICAgfCBDT01QQVJFX09QIChfLCBlMSwgZTIpIC0+XG4gICAgICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgKGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGUxKSBlMlxuICBpblxuICBsZXQgY291bnRlcl9mb2xkX2luX2JleHByX29wdCBmIGFjYyBiZXhwciA9XG4gICAgbWF0Y2ggYmV4cHIgd2l0aFxuICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgfCBTb21lIGUgLT4gY291bnRlcl9mb2xkX2luX2JleHByIGYgYWNjIGVcbiAgaW5cbiAgbGV0IGNvdW50ZXJfZm9sZF9pbl9ydWxlIGYgYWNjIHJ1bGUgPVxuICAgIGxldCBydWxlIDogQXN0LnJ1bGUgPSBydWxlIHw+IExvYy52IGluXG4gICAgbGV0IGFjYyA9XG4gICAgICBtYXRjaCBydWxlLnJld3JpdGUgd2l0aFxuICAgICAgfCBBc3QuRWRpdCBfIC0+IGFjYyAoKiBubyBjb3VudGVyIHRlc3QgYWxsb3dlZCBpbiBlZGl0IHJ1bGUgKikgKCogdG8gZG8gKilcbiAgICAgIHwgQXN0LkFycm93IGNvbnRlbnQgLT4gY291bnRlcl9mb2xkX2luX21peHR1cmUgZiBhY2MgY29udGVudC5saHNcbiAgICBpblxuICAgIGxldCBhY2MgPVxuICAgICAgbWF0Y2ggcnVsZS5rX3VuIHdpdGggTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIChlLCBTb21lIGUnKSAtPlxuICAgICAgICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgKGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGUnICkgZVxuICAgICAgICB8IFNvbWUgKGUsIE5vbmUpIC0+IGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGVcbiAgICBpblxuICAgIGxldCBhY2MgPSBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBydWxlLmtfZGVmIGluXG4gICAgbGV0IGFjYyA9XG4gICAgICBtYXRjaCBydWxlLmtfb3BfdW4gd2l0aCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgKGUsIFNvbWUgZScpIC0+XG4gICAgICAgICAgY291bnRlcl9mb2xkX2luX2V4cHIgZiAoY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgZScgKSBlXG4gICAgICAgIHwgU29tZSAoZSwgTm9uZSkgLT4gY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgZVxuICAgIGluXG4gICAgbGV0IGFjYz1cbiAgICAgIG1hdGNoIHJ1bGUua19vcCB3aXRoIE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSBlIC0+IGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGVcbiAgICBpblxuICAgIGFjY1xuICBpblxuICBsZXQgY291bnRlcl9mb2xkX2luX3ZhcmlhYmxlIGYgYWNjIHZhcmlhYmxlX2RlZiA9XG4gICAgY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgKHNuZCB2YXJpYWJsZV9kZWYpXG4gIGluXG4gIGxldCBjb3VudGVyX2ZvbGRfaW5fb2JzZXJ2YWJsZSBmIGFjYyBvYnNfZGVmID1cbiAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBvYnNfZGVmXG4gIGluXG4gIGxldCBjb3VudGVyX2ZvbGRfaW5faW5pdCBmIGFjYyBpbml0ID1cbiAgICBsZXQgZSxfID0gaW5pdCBpblxuICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGVcbiAgaW5cbiAgbGV0IGNvdW50ZXJfZm9sZF9pbl9wcmludCBmIGFjYyBwID1cbiAgICBtYXRjaCBwIHdpdGhcbiAgICB8IFByaW1pdGl2ZXMuU3RyX3BleHByIF8gLT4gYWNjXG4gICAgfCBBbGdfcGV4cHIgZSAtPiBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlXG4gIGluXG4gIGxldCBjb3VudGVyX2ZvbGRfaW5fbW9kIGYgYWNjIG1vZF9kZWYgPVxuICAgIG1hdGNoIG1vZF9kZWYgd2l0aFxuICAgIHwgQXN0LkFQUExZIChlLHIpIC0+XG4gICAgICAgY291bnRlcl9mb2xkX2luX2V4cHIgZiAoY291bnRlcl9mb2xkX2luX3J1bGUgZiBhY2MgcikgZVxuICAgIHwgVVBEQVRFIChfLGUpIC0+XG4gICAgICAgY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgZVxuICAgIHwgU1RPUCBsIHwgU05BUFNIT1QgKF8sbCkgfCBESU4gKF8sIGwpIHwgRElOT0ZGIGwgLT5cbiAgICAgICBMaXN0LmZvbGRfbGVmdCAoY291bnRlcl9mb2xkX2luX3ByaW50IGYpIGFjYyBsXG4gICAgfCBQUklOVCAobCwgbCcpIC0+XG4gICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoY291bnRlcl9mb2xkX2luX3ByaW50IGYpXG4gICAgICAgICAgKChMaXN0LmZvbGRfbGVmdCAoY291bnRlcl9mb2xkX2luX3ByaW50IGYpIGFjYyBsJykpXG4gICAgICAgICAgIGxcbiAgICB8IFBMT1RFTlRSWVxuICAgIHwgQ0ZMT1dMQUJFTCBfIC0+IGFjY1xuICAgIHwgQ0ZMT1dNSVggKF8sIHApIC0+XG4gICAgICBjb3VudGVyX2ZvbGRfaW5fbWl4dHVyZSBmIGFjYyAoTG9jLnYgcClcbiAgICB8IFNQRUNJRVNfT0YgKF8sIGwsIG0pIC0+XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoY291bnRlcl9mb2xkX2luX3ByaW50IGYpXG4gICAgICAgICAgICAoY291bnRlcl9mb2xkX2luX21peHR1cmUgZiBhY2MgKExvYy52IG0pKVxuICAgICAgICAgICAgbFxuICBpblxuICBsZXQgY291bnRlcl9mb2xkX2luX3BlcnR1cmJhdGlvbiBmIGFjYyBwZXJ0dXJiYXRpb24gPVxuICAgIGxldCAoXyxiMV9vcHQsbW9kX2xpc3QsYjJfb3B0KSA9IExvYy52IHBlcnR1cmJhdGlvbiAgaW5cbiAgICBjb3VudGVyX2ZvbGRfaW5fYmV4cHJfb3B0IGZcbiAgICAgIChjb3VudGVyX2ZvbGRfaW5fYmV4cHJfb3B0IGZcbiAgICAgICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGNvdW50ZXJfZm9sZF9pbl9tb2QgZilcbiAgICAgICAgICAgICAgYWNjIG1vZF9saXN0KVxuICAgICAgICAgIGIyX29wdClcbiAgICAgIGIxX29wdFxuICBpblxuICBsZXQgY291bnRlcl9mb2xkIGYgaW5pdCAgPVxuICAgIGxldCBsMSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGFjYyByIC0+IGNvdW50ZXJfZm9sZF9pbl9ydWxlIGYgYWNjIChzbmQgcikpXG4gICAgICAgIGluaXQgYXN0X2NvbXBpbC5ydWxlc1xuICAgIGluXG4gICAgbGV0IGwyID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGNvdW50ZXJfZm9sZF9pbl92YXJpYWJsZSBmKVxuICAgICAgICAgIGwxIGFzdF9jb21waWwudmFyaWFibGVzXG4gICAgaW5cbiAgICBsZXQgbDMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoY291bnRlcl9mb2xkX2luX29ic2VydmFibGUgZilcbiAgICAgICAgICBsMiBhc3RfY29tcGlsLm9ic2VydmFibGVzXG4gICAgaW5cbiAgICBsZXQgbDQgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoY291bnRlcl9mb2xkX2luX2luaXQgZilcbiAgICAgICAgICBsMyBhc3RfY29tcGlsLmluaXRcbiAgICBpblxuICAgIGxldCBsNSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChjb3VudGVyX2ZvbGRfaW5fcGVydHVyYmF0aW9uIGYpXG4gICAgICAgICAgbDQgYXN0X2NvbXBpbC5wZXJ0dXJiYXRpb25zXG4gICAgaW5cbiAgICBsNVxuICBpblxuICAoKiBGaW5kIGNvdW50ZXJzIHRoYXQgaGF2ZSBDTFRFIHRlc3RzLCBhbmQgYnVpbGQgbGlzdDogYWdlbnRfbmFtZSwgY291bnRlcl9uYW1lLCBzdW1fYm91bmRzX3JlZiBsaXN0LlxuICAgKiBzdW1fYm91bmRzX3JlZiBpcyB0aGVuIGZpbGxlZCB3aGVuIHJlYWRpbmcgdGhlIHNpZ25hdHVyZSBhbmQgdXNlZCB0byBzcGVjaWZ5IGZvciBpbnZlcnRlZCBjb3VudGVyIGluaXQgdmFsdWUgb3IgdGVzdCB2YWx1ZSBhcyBbc3VtX2JvdW5kc19yZWYgLSB2YWx1ZV0gKilcbiAgbGV0IGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0cyA6XG4gICAgTW9kcy5TdHJpbmdTZXQudCBNb2RzLlN0cmluZ01hcC50ID1cbiAgICBjb3VudGVyX2ZvbGQgKGZ1biBtYXAgYWdlbnRfbmFtZSBjb3VudGVyIC0+XG4gICAgICAgIGxldCBjb3VudGVyX25hbWUgPSBMb2MudiBjb3VudGVyLmNvdW50ZXJfbmFtZSBpblxuICAgICAgICAoKiBGb3JiaWQgcHJlZml4IHRvIGF2b2lkIG5vbnNlbnNlIGluIGNvdW50ZXIgZGVmaW5pdGlvbiAqKVxuICAgICAgICBpZiBTaWduYXR1cmUuaXNfaW52ZXJ0ZWRfY291bnRlciBjb3VudGVyX25hbWUgdGhlblxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKCBcImNhbm5vdCBlbmQgY291bnRlciBuYW1lIGJ5IFxcXCJcIlxuICAgICAgICAgICAgICAgICBeIFNpZ25hdHVyZS5pbnZlcnRlZF9jb3VudGVyX3N1ZmZpeCBeIFwiXFxcIlwiLFxuICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGNvdW50ZXIuY291bnRlcl9uYW1lICkpO1xuICAgICAgICAoKiBSZXR1cm4gY291bnRlciBuYW1lIGFsb25nIHdpdGggbWF0Y2hpbmcgYWdlbnRfbmFtZSAqKVxuICAgICAgICBtYXRjaCBPcHRpb25fdXRpbC5tYXAgTG9jLnYgY291bnRlci5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgICAgICB8IFNvbWUgKEFzdC5DTFRFIF8pIC0+XG4gICAgICAgICAgbGV0IHNpdGVzID0gTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0IE1vZHMuU3RyaW5nU2V0LmVtcHR5IGFnZW50X25hbWUgbWFwIGluXG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIE1vZHMuU3RyaW5nU2V0Lm1lbSBjb3VudGVyX25hbWUgc2l0ZXNcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBtYXBcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5hZGQgYWdlbnRfbmFtZVxuICAgICAgICAgICAgICAgIChNb2RzLlN0cmluZ1NldC5hZGQgY291bnRlcl9uYW1lIHNpdGVzKVxuICAgICAgICAgICAgICAgIG1hcFxuICAgICAgICB8IFNvbWUgKEFzdC5DRVEgXykgfCBTb21lIChBc3QuQ0dURSBfKSB8IFNvbWUgKEFzdC5DVkFSIF8pIHwgTm9uZSAtPiBtYXApIE1vZHMuU3RyaW5nTWFwLmVtcHR5XG4gIGluXG4gIGxldCBhZGQgKHgseSkgZGF0YSBtYXAgPVxuICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkXG4gICAgICAgIHhcbiAgICAgICAgKE1vZHMuU3RyaW5nTWFwLmFkZCB5IGRhdGFcbiAgICAgICAgICAgICAgKE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBNb2RzLlN0cmluZ01hcC5lbXB0eSB4IG1hcCkpXG4gICAgICAgIG1hcFxuICBpblxuICAoKiBDcmVhdGUgb3Bwb3NpdGUgY291bnRlcnMgdGhhdCBoYXZlIHRoZSBzYW1lIHRlc3RzICopXG4gIGxldCAoc2lnbmF0dXJlcyA6IEFzdC5hZ2VudF9zaWcgbGlzdCksXG4gICAgICAoY291bnRlcl9jb252ZXJzaW9uX2luZm9fbWFwIDogQXN0LmNvbnZlcnNpb25faW5mbyBNb2RzLlN0cmluZ01hcC50IE1vZHMuU3RyaW5nTWFwLnQpPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChhY2MsbWFwKSBhZ2VudCAtPlxuICAgICAgICBtYXRjaCBhZ2VudCB3aXRoXG4gICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGFnZW50OjphY2MsIG1hcFxuICAgICAgICB8IFByZXNlbnQgKGFnZW50X25hbWVfLCBzaXRlX2xpc3QsIGFnZW50X21vZCkgLT5cbiAgICAgICAgICBsZXQgYWdlbnRfbmFtZSA9IExvYy52IGFnZW50X25hbWVfIGluXG4gICAgICAgICAgbGV0IGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tX2FnZW50IDpcbiAgICAgICAgICAgICAgTW9kcy5TdHJpbmdTZXQudCAgPVxuICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0XG4gICAgICAgICAgICAgIE1vZHMuU3RyaW5nU2V0LmVtcHR5ICBhZ2VudF9uYW1lIGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IChuZXdfY291bnRlcl9zaXRlcyA6IEFzdC5jb3VudGVyX3NpZyBBc3Quc2l0ZSBsaXN0KSxcbiAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICA9XG4gICAgICAgICAgICBNb2RzLlN0cmluZ1NldC5mb2xkXG4gICAgICAgICAgICAgIChmdW4gY291bnRlcl9uYW1lIChhY2MsbWFwKSAtPlxuICAgICAgICAgICAgICAgICgqIEZpbmQgY291bnRlciB0byBpbnZlcnQgKilcbiAgICAgICAgICAgICAgICBsZXQgY291bnRlcl9vcmlnIDogQXN0LmNvdW50ZXJfc2lnID1cbiAgICAgICAgICAgICAgICAgIExpc3QuZmluZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBzaXRlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBBc3QuUG9ydCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICB8IENvdW50ZXIgY291bnRlciAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgTG9jLnYgY291bnRlci5Bc3QuY291bnRlcl9zaWdfbmFtZSA9IGNvdW50ZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lIGNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICAgICAgICAgICAgc2l0ZV9saXN0XG4gICAgICAgICAgICAgICAgICB8PiBPcHRpb25fdXRpbC51bnNvbWVfb3JfcmFpc2VcbiAgICAgICAgICAgICAgICBpblxuXG4gICAgICAgICAgICAgICAgKCogTWFrZSBpbnZlcnRlZCBjb3VudGVyIGRlY2xhcmF0aW9uICopXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfc2lnX25hbWUgOiBzdHJpbmcgTG9jLmFubm90ZWQgPVxuICAgICAgICAgICAgICAgICAgTG9jLm1hcF9hbm5vdFxuICAgICAgICAgICAgICAgICAgICAoZnVuIG5hbWUgLT4gaW52ZXJ0ZWRfY291bnRlcl9uYW1lIG5hbWUpXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19uYW1lXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgX2NvdW50ZXJfc2lnX2RlZmF1bHQsIGluZl9ib3VuZCwgc3VwX2JvdW5kID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19taW4sIGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19tYXhcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSBtaW4sIF8pLCBTb21lIChTb21lIG1heCwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF4ICsgbWluIC0gY291bnRlcl9vcmlnLmNvdW50ZXJfc2lnX2RlZmF1bHQsIG1pbiwgbWF4XG4gICAgICAgICAgICAgICAgICB8IChOb25lIHwgU29tZSAoTm9uZSwgXykpLCBfIHwgXywgKE5vbmUgfCBTb21lIChOb25lLCBfKSkgLT5cbiAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICggXCJDYW5ub3QgdGFrZSB0aGUgb3Bwb3NpdGUgb2YgYW4gdW5ib3VuZGVkIGNvdW50ZXJzICBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgY291bnRlcl9vcmlnLmNvdW50ZXJfc2lnX25hbWUgKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBjb252ZXJ0X3ZhbHVlID0gQXN0LkJBU0lTX01JTlVTX0lOUFVUIChpbmZfYm91bmQgKyBzdXBfYm91bmQpIGluXG4gICAgICAgICAgICAgICAgbGV0IGNvbnZlcnRfZGVsdGEgPSBBc3QuQkFTSVNfTUlOVVNfSU5QVVQgMCBpblxuICAgICAgICAgICAgICAgIGxldCB1cGRhdGUgeCA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIChOb25lLGxvYykgLT4gU29tZSAoTm9uZSxsb2MpXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSBpLGxvYykgLT4gU29tZSAoU29tZSAoQXN0LmFwcGx5X2ludCBjb252ZXJ0X3ZhbHVlIGkpLCBsb2MpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgcmVmX21pbixyZWZfbWF4ID1cbiAgICAgICAgICAgICAgICAgICAgQXN0LnJlb3JkZXJfYm91bmRzIGNvbnZlcnRfdmFsdWUgKGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19taW4sY291bnRlcl9vcmlnLmNvdW50ZXJfc2lnX21heCkgaW5cbiAgICAgICAgICAgICAgICBsZXQgY291bnRlcl9zaWdfbWluID0gdXBkYXRlIHJlZl9taW4gaW5cbiAgICAgICAgICAgICAgICBsZXQgY291bnRlcl9zaWdfbWF4ID0gdXBkYXRlIHJlZl9tYXggaW5cbiAgICAgICAgICAgICAgICBsZXQgY291bnRlcl9zaWdfZGVmYXVsdCA9XG4gICAgICAgICAgICAgICAgICAgIEFzdC5hcHBseV9pbnQgY29udmVydF92YWx1ZSBjb3VudGVyX29yaWcuY291bnRlcl9zaWdfZGVmYXVsdCBpblxuICAgICAgICAgICAgICAgIGxldCBjb252ZXJ0X2luZm8gPVxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBBc3QuZnJvbV9zaWdfbmFtZSA9IGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19uYW1lO1xuICAgICAgICAgICAgICAgICAgICBjb252ZXJ0X3ZhbHVlIDtcbiAgICAgICAgICAgICAgICAgICAgY29udmVydF9kZWx0YSA7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgY291bnRlcl9zaWdfdmlzaWJsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgQXN0LkZyb21fY2x0ZV9lbGltaW5hdGlvbiBjb252ZXJ0X2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICgqIFdyaXRlIGluIHN1bV9ib3VuZHNfcmVmIHRoZSBzdW0gb2YgdGhlIGNvdW50ZXIgYm91bmRzIGFib3ZlICopXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXIgPVxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21pbjtcbiAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21heDtcbiAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKEFzdC5Db3VudGVyIGNvdW50ZXIpOjphY2MsXG4gICAgICAgICAgICAgICAgYWRkXG4gICAgICAgICAgICAgICAgICAoYWdlbnRfbmFtZSxMb2MudiBjb3VudGVyX29yaWcuY291bnRlcl9zaWdfbmFtZSlcbiAgICAgICAgICAgICAgICAgIGNvbnZlcnRfaW5mbyBtYXApXG4gICAgICAgICAgICAgIGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tX2FnZW50XG4gICAgICAgICAgICAgIChbXSxtYXApXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoQXN0LlByZXNlbnQgKGFnZW50X25hbWVfLCBzaXRlX2xpc3QgQCBuZXdfY291bnRlcl9zaXRlcywgYWdlbnRfbW9kKSk6OmFjYyxcbiAgICAgICAgICAgbWFwKVxuICAgICAgKFtdLCBNb2RzLlN0cmluZ01hcC5lbXB0eSkgKExpc3QucmV2IGFzdF9jb21waWwuc2lnbmF0dXJlcylcbiAgaW5cblxuICAoKiBJbiBydWxlcywgd2UgbmVlZCB0byByZXBsYWNlIHRoZSBjb3VudGVyIHRlc3RzIGFuZCB0aGUgY291bnRlciBtb2RpZmljYXRpb25zICopXG5cbiAgbGV0IHJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQgKG1peCA6IEFzdC5taXh0dXJlKSA6IEFzdC5taXh0dXJlID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biBhZ2VudF9saXN0IC0+XG4gICAgICAgIExpc3QubWFwXG4gICAgICAgICAgKGZ1biBhZ2VudCAtPlxuICAgICAgICAgICAgbWF0Y2ggYWdlbnQgd2l0aFxuICAgICAgICAgICAgfCBBc3QuQWJzZW50IF8gLT4gYWdlbnRcbiAgICAgICAgICAgIHwgUHJlc2VudCAoYWdlbnRfbmFtZV8sIHNpdGVfbGlzdCwgYWdlbnRfbW9kKSAtPlxuICAgICAgICAgICAgICBsZXQgYWdlbnRfbmFtZSA6IHN0cmluZyA9IExvYy52IGFnZW50X25hbWVfIGluXG4gICAgICAgICAgICAgIGxldCBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudCA6XG4gICAgICAgICAgICAgICAgQXN0LmNvbnZlcnNpb25faW5mbyBNb2RzLlN0cmluZ01hcC50ID1cbiAgICAgICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLmVtcHR5IGFnZW50X25hbWUgY291bnRlcl9jb252ZXJzaW9uX2luZm9fbWFwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIEFkZCBkZWx0YSB0byBjb3VudGVyIGFzIG9wcG9zaXRlIGRlbHRhcyB0byBjb3VudGVyX2RlbHRhICopXG4gICAgICAgICAgICAgIGxldCAoYWRkZWRfc2l0ZXMsIHNpdGVfbGlzdF93aXRoX29wcG9zaXRlX2RlbHRhcykgOlxuICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXIgQXN0LnNpdGUgbGlzdCAqIEFzdC5jb3VudGVyIEFzdC5zaXRlIGxpc3QgPVxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0X21hcFxuICAgICAgICAgICAgICAgICAgKGZ1biBhY2Mgc2l0ZSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXRlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGFjYywgc2l0ZVxuICAgICAgICAgICAgICAgICAgICB8IENvdW50ZXIgY291bnRlciAtPlxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMb2MudiBjb3VudGVyLkFzdC5jb3VudGVyX25hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tX2FnZW50XG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjLCBzaXRlXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGNvbnZlcnRfaW5mbyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCogQXMgd2Uga25vdyB0aGF0IHRoaXMgY291bnRlciB1c2VzIGEgQ0xURSB0ZXN0LCBXZSBpbnRyb2R1Y2UgdGhlIGludmVydGVkIGNvdW50ZXIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICgqIFtjbHRlX3ZhbHVlX29yX25vbmVdIGRpc2NyaW1pbmF0ZXMgdGhlIGNhc2Ugd2hlcmUgdGhpcyBzaXRlIGluIHRoaXMgZXhwcmVzc2lvbiBoYXMgYSBDTFRFIHRlc3QgKilcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjbHRlX3ZhbHVlX29yX25vbmUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBjb3VudGVyLmNvdW50ZXJfdGVzdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSB0ZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIExvYy52IHRlc3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXN0LkNFUSBfIHwgQ0dURSBfIHwgQ1ZBUiBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5DTFRFIHZhbHVlIC0+IFNvbWUgdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNsdGVfdmFsdWVfb3Jfbm9uZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogSWYgdGhlcmUgaXMgYSB0ZXN0LCBpdCBkb2Vzbid0IG5lZWQgaW52ZXJzaW9uOiB3ZSBhZGQgaW52ZXJ0ZWQgY291bnRlciB3aXRob3V0IHRlc3QgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTG9jLnYgY291bnRlci5jb3VudGVyX2RlbHRhID09IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYywgc2l0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBJZiB0aGUgY291bnRlciB2YWx1ZSBpcyBjaGFuZ2luZywgd2UgbmVlZCB0byBhZGQgaXQgdG8gdGhlIGludmVydGVkIGNvdW50ZXIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW52ZXJ0ZWRfY291bnRlcl9zaXRlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9uYW1lID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5tYXBfYW5ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52ZXJ0ZWRfY291bnRlcl9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuY291bnRlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX3Rlc3QgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX2RlbHRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5tYXBfYW5ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5hcHBseV9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRfaW5mby5Bc3QuY29udmVydF9kZWx0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuY291bnRlcl9kZWx0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52ZXJ0ZWRfY291bnRlcl9zaXRlIDo6IGFjYywgc2l0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVGhlIHRlc3QgaXMgQ0xURSwgd2UgaW52ZXJ0IGl0ICopXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogU2l0ZSB3aXRoIGludmVydGVkIGNvdW50ZXIgd2l0aCBDR1RFIHRlc3QgaW5zdGVhZCBvZiBDTFRFIHRlc3QgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld19zaXRlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuQ291bnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9uYW1lID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MubWFwX2Fubm90IGludmVydGVkX2NvdW50ZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlci5jb3VudGVyX25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX3Rlc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuQ0dURSAoQXN0LmFwcGx5X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRfaW5mby5Bc3QuY29udmVydF92YWx1ZSB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHw+IExvYy5jb3B5X2Fubm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25fdXRpbC51bnNvbWVfb3JfcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlci5jb3VudGVyX3Rlc3QpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfZGVsdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5tYXBfYW5ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuYXBwbHlfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydF9pbmZvLkFzdC5jb252ZXJ0X2RlbHRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuY291bnRlcl9kZWx0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTG9jLnYgY291bnRlci5jb3VudGVyX2RlbHRhID09IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYywgbmV3X3NpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogSWYgdGhlIGNvdW50ZXIgdmFsdWUgaXMgY2hhbmdpbmcsIHdlIG5lZWQgdG8gYWRkIGl0IHRvIHRoZSBvcmlnaW5hbCBjb3VudGVyIHRvbyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW5hbF9jb3VudGVyX3NpdGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LkNvdW50ZXIgeyBjb3VudGVyIHdpdGggY291bnRlcl90ZXN0ID0gTm9uZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbF9jb3VudGVyX3NpdGUgOjogYWNjLCBuZXdfc2l0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICApKSkpXG4gICAgICAgICAgICAgICAgICBbXSBzaXRlX2xpc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG5ld19zaXRlX2xpc3QgOiBBc3QuY291bnRlciBBc3Quc2l0ZSBsaXN0ID1cbiAgICAgICAgICAgICAgICBzaXRlX2xpc3Rfd2l0aF9vcHBvc2l0ZV9kZWx0YXMgQCBhZGRlZF9zaXRlc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBBc3QuUHJlc2VudCAoYWdlbnRfbmFtZV8sIG5ld19zaXRlX2xpc3QsIGFnZW50X21vZCkpXG4gICAgICAgICAgYWdlbnRfbGlzdClcbiAgICAgIG1peFxuICBpblxuICBsZXQgYWRkX2ludmVydGVkX2NvdW50ZXJfdG9faW5pdF9taXh0dXJlIChtaXggOiBBc3QubWl4dHVyZSkgOiBBc3QubWl4dHVyZSA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gYWdlbnRfbGlzdCAtPlxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gYWdlbnQgLT5cbiAgICAgICAgICAgIG1hdGNoIGFnZW50IHdpdGhcbiAgICAgICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGFnZW50XG4gICAgICAgICAgICB8IFByZXNlbnQgKGFnZW50X25hbWVfLCBzaXRlX2xpc3QsIGFnZW50X21vZCkgLT5cbiAgICAgICAgICAgICAgbGV0IGFnZW50X25hbWUgOiBzdHJpbmcgPSBMb2MudiBhZ2VudF9uYW1lXyBpblxuICAgICAgICAgICAgICAgIGxldCBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudCA6XG4gICAgICAgICAgICAgICAgQXN0LmNvbnZlcnNpb25faW5mbyBNb2RzLlN0cmluZ01hcC50ID1cbiAgICAgICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLmVtcHR5IGFnZW50X25hbWUgY291bnRlcl9jb252ZXJzaW9uX2luZm9fbWFwXG4gICAgICAgICAgICAgIGluXG4oKlxuICAgICAgbGV0IGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tX2FnZW50IDpcbiAgICAgICAgICAgICAgICAgIChzdHJpbmcgKiBzdHJpbmcgKiBpbnQgcmVmKSBsaXN0ID1cbiAgICAgICAgICAgICAgICBMaXN0LmZpbHRlclxuICAgICAgICAgICAgICAgICAgKGZ1biAoYWdlbnRfbmFtZV9jb3VudGVyLCBfLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBhZ2VudF9uYW1lID0gYWdlbnRfbmFtZV9jb3VudGVyKVxuICAgICAgICAgICAgICAgICAgKGZzdCBjb3VudGVyc193aXRoX2NsdGVfdGVzdHMpXG4gICAgICAgICAgICAgIGluKilcbiAgICAgICAgICAgICAgKCogQWRkIGRlbHRhIHRvIGNvdW50ZXIgYXMgb3Bwb3NpdGUgZGVsdGFzIHRvIGNvdW50ZXJfZGVsdGEgKilcbiAgICAgICAgICAgICAgbGV0IGFkZGVkX3NpdGVzIDogQXN0LmNvdW50ZXIgQXN0LnNpdGUgbGlzdCA9XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gYWNjIHNpdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgQXN0LlBvcnQgXyAtPiBhY2NcbiAgICAgICAgICAgICAgICAgICAgfCBDb3VudGVyIGNvdW50ZXIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKExvYy52IGNvdW50ZXIuQXN0LmNvdW50ZXJfbmFtZSkgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzX2Zyb21fYWdlbnRcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBpbmZvICAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCogQXMgd2Uga25vdyB0aGF0IHRoaXMgY291bnRlciB1c2VzIGEgQ0xURSB0ZXN0LCBXZSBpbnRyb2R1Y2UgdGhlIGludmVydGVkIGNvdW50ZXIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjb3VudGVyLmNvdW50ZXJfdGVzdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXCJDb3VudGVyIHNob3VsZCBoYXZlIENFUSB0ZXN0IHZhbHVlIGluIGluaXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgY291bnRlci5jb3VudGVyX25hbWUgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSB0ZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBMb2MudiB0ZXN0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBc3QuQ0dURSBfIHwgQ0xURSBfIHwgQ1ZBUiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiQ291bnRlciBzaG91bGQgaGF2ZSBDRVEgdGVzdCB2YWx1ZSBpbiBpbml0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLmdldF9hbm5vdCB0ZXN0ICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXN0LkNFUSB2YWx1ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIExvYy52IGNvdW50ZXIuY291bnRlcl9kZWx0YSA8PiAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXCJDb3VudGVyIGRlbHRhIHNob3VsZCBiZSAwIGluIGluaXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLmdldF9hbm5vdCB0ZXN0ICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LkNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX25hbWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLm1hcF9hbm5vdCBpbnZlcnRlZF9jb3VudGVyX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlci5Bc3QuY291bnRlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX3Rlc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTG9jLmNvcHlfYW5ub3QgdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LkNFUSAoQXN0LmFwcGx5X2ludCBpbmZvLkFzdC5jb252ZXJ0X3ZhbHVlIHZhbHVlKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX2RlbHRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuQXN0LmNvdW50ZXJfZGVsdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIDAgd2l0aCBhbm5vdCBhcyB0ZXN0ZWQgYWJvdmUgKik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGFjYykpKSlcbiAgICAgICAgICAgICAgICAgIFtdIHNpdGVfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbmV3X3NpdGVfbGlzdCA6IEFzdC5jb3VudGVyIEFzdC5zaXRlIGxpc3QgPVxuICAgICAgICAgICAgICAgIHNpdGVfbGlzdCBAIGFkZGVkX3NpdGVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEFzdC5QcmVzZW50IChhZ2VudF9uYW1lXywgbmV3X3NpdGVfbGlzdCwgYWdlbnRfbW9kKSlcbiAgICAgICAgICBhZ2VudF9saXN0KVxuICAgICAgbWl4XG4gIGluXG5cbiAgbGV0IG1hcF9leHByIGV4cHIgPVxuICAgICAgQWxnX2V4cHIubWFwX29uX21peHR1cmVcbiAgICAgICAgKGZ1biB4IC0+IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIChyZXBsYWNlX2NvdW50ZXJfYnlfaW52ZXJ0IHgpKVxuICAgICAgICBleHByXG4gIGluXG4gIGxldCBtYXBfYmV4cHIgZXhwciA9XG4gICAgICBBbGdfZXhwci5tYXBfYm9vbF9vbl9taXh0dXJlXG4gICAgICAgIChmdW4geCAtPiBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSAocmVwbGFjZV9jb3VudGVyX2J5X2ludmVydCB4KSlcbiAgICAgICAgZXhwclxuICBpblxuICBsZXQgbWFwX3J1bGUgcnVsZSA9XG4gICAgbGV0IHJld3JpdGUgPVxuICAgICAgbWF0Y2ggcnVsZS5Bc3QucmV3cml0ZSB3aXRoXG4gICAgICB8IEVkaXQgY29udGVudCAtPlxuICAgICAgICBBc3QuRWRpdFxuICAgICAgICAgIHsgY29udGVudCB3aXRoIG1peCA9IHJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQgY29udGVudC5taXggfVxuICAgICAgfCBBcnJvdyBjb250ZW50IC0+XG4gICAgICAgIEFycm93XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29udGVudCB3aXRoXG4gICAgICAgICAgICBsaHMgPSByZXBsYWNlX2NvdW50ZXJfYnlfaW52ZXJ0IGNvbnRlbnQubGhzO1xuICAgICAgICAgICAgcmhzID0gcmVwbGFjZV9jb3VudGVyX2J5X2ludmVydCBjb250ZW50LnJocztcbiAgICAgICAgICB9XG4gICAgaW5cbiAgICBsZXQga19kZWYgPSBtYXBfZXhwciBydWxlLmtfZGVmIGluXG4gICAgbGV0IGtfb3AgPSBtYXBfb3B0IG1hcF9leHByIHJ1bGUua19vcCBpblxuICAgIGxldCBrX3VuID0gbWFwX29wdCAoZnVuIChhLGIpIC0+IG1hcF9leHByIGEsIG1hcF9vcHQgbWFwX2V4cHIgYikgcnVsZS5rX3VuIGluXG4gICAgbGV0IGtfb3BfdW4gPSBtYXBfb3B0IChmdW4gKGEsYikgLT4gbWFwX2V4cHIgYSwgbWFwX29wdCBtYXBfZXhwciBiKSBydWxlLmtfb3BfdW4gaW5cbiAgICB7IHJ1bGUgd2l0aCByZXdyaXRlIDsga19kZWYgOyBrX29wIDsga191biA7IGtfb3BfdW59XG4gIGluXG4gIGxldCBydWxlcyA6IChzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uICogQXN0LnJ1bGUgTG9jLmFubm90ZWQpIGxpc3QgPVxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1biBydWxlX2RlZiAtPlxuICAgICAgICAgZnN0IHJ1bGVfZGVmLFxuICAgICAgICAgIExvYy5tYXBfYW5ub3QgbWFwX3J1bGUgKHNuZCBydWxlX2RlZikpXG4gICAgICAoTGlzdC5yZXYgYXN0X2NvbXBpbC5ydWxlcylcbiAgaW5cblxuICBsZXQgaW5pdCA6IChBc3QubWl4dHVyZSwgQXN0Lm1peHR1cmUsIHN0cmluZykgQXN0LmluaXRfc3RhdGVtZW50IGxpc3QgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIChxdWFudGl0eV9hbGdfZXhwciwgaW5pdF9raW5kKSAtPlxuICAgICAgICAoIHF1YW50aXR5X2FsZ19leHByLFxuICAgICAgICAgIG1hdGNoIGluaXRfa2luZCB3aXRoXG4gICAgICAgICAgfCBBc3QuSU5JVF9UT0sgXyAtPiBpbml0X2tpbmRcbiAgICAgICAgICB8IElOSVRfTUlYIG1peF8gLT5cbiAgICAgICAgICAgIElOSVRfTUlYIChMb2MubWFwX2Fubm90IGFkZF9pbnZlcnRlZF9jb3VudGVyX3RvX2luaXRfbWl4dHVyZSBtaXhfKSApKVxuICAgICAgYXN0X2NvbXBpbC5pbml0XG4gIGluXG4gIGxldCB2YXJpYWJsZXMgPVxuICAgIExpc3QucmV2X21hcFxuICAgICAgICAoZnVuIChhLCBiKSAtPiAoYSwgbWFwX2V4cHIgYikpXG4gICAgICAgIChMaXN0LnJldiBhc3RfY29tcGlsLnZhcmlhYmxlcylcbiAgaW5cbiAgbGV0IG9ic2VydmFibGVzID0gTGlzdC5yZXZfbWFwIG1hcF9leHByIChMaXN0LnJldiBhc3RfY29tcGlsLm9ic2VydmFibGVzKSBpblxuICBsZXQgbWFwX3ByaW50IGEgPVxuICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICB8IFByaW1pdGl2ZXMuU3RyX3BleHByIF8gLT4gYVxuICAgICAgfCBBbGdfcGV4cHIgZSAtPiBBbGdfcGV4cHIgKG1hcF9leHByIGUpXG4gIGluXG4gIGxldCBtYXBfbW9kaWYgbW9kaWYgPVxuICAgICAgbWF0Y2ggbW9kaWYgd2l0aFxuICAgICAgfCBBc3QuQVBQTFkgKGEscikgLT4gQXN0LkFQUExZIChtYXBfZXhwciBhLExvYy5tYXBfYW5ub3QgbWFwX3J1bGUgciApXG4gICAgICB8IFVQREFURSAoYSxlKSAtPiBVUERBVEUgKGEsbWFwX2V4cHIgZSlcbiAgICAgIHwgU1RPUCBsIC0+IFNUT1AgKExpc3QucmV2X21hcCBtYXBfcHJpbnQgKExpc3QucmV2IGwpKVxuICAgICAgfCBTTkFQU0hPVCAoYixsKSAtPiBTTkFQU0hPVCAoYixMaXN0LnJldl9tYXAgbWFwX3ByaW50IChMaXN0LnJldiBsKSlcbiAgICAgIHwgUFJJTlQgKGwsbCcpIC0+XG4gICAgICAgICAgUFJJTlQoTGlzdC5yZXZfbWFwIG1hcF9wcmludCAoTGlzdC5yZXYgbCksTGlzdC5yZXZfbWFwIG1hcF9wcmludCAoTGlzdC5yZXYgbCcpKVxuICAgICAgfCBQTE9URU5UUllcbiAgICAgIHwgQ0ZMT1dMQUJFTCBfIC0+IG1vZGlmXG4gICAgICB8IENGTE9XTUlYIChiLG1peHR1cmUpIC0+IENGTE9XTUlYKGIsXG4gICAgICAgIExvYy5tYXBfYW5ub3QgcmVwbGFjZV9jb3VudGVyX2J5X2ludmVydCBtaXh0dXJlKVxuICAgICAgfCBESU4gKGEsIGwpIC0+IERJTihhLCBMaXN0LnJldl9tYXAgbWFwX3ByaW50IChMaXN0LnJldiBsKSlcbiAgICAgIHwgRElOT0ZGIGwgLT4gRElOT0ZGKExpc3QucmV2X21hcCBtYXBfcHJpbnQgKExpc3QucmV2IGwpKVxuICAgICAgfCBTUEVDSUVTX09GIChiLGwsbSkgLT5cbiAgICAgICAgU1BFQ0lFU19PRihiLExpc3QucmV2X21hcCBtYXBfcHJpbnQgbCxMb2MubWFwX2Fubm90IHJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQgbSlcbiAgaW5cbiAgbGV0IHBlcnR1cmJhdGlvbnMgPVxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1biAoKGEsYixjLGQpLCBleHQpLT4gKGEsbWFwX29wdCBtYXBfYmV4cHIgYixMaXN0LnJldl9tYXAgbWFwX21vZGlmIChMaXN0LnJldiBjKSxtYXBfb3B0IG1hcF9iZXhwciBkICksZXh0KVxuICAgICAgKExpc3QucmV2IGFzdF9jb21waWwucGVydHVyYmF0aW9ucylcbiAgaW5cbiAge2FzdF9jb21waWwgd2l0aCBzaWduYXR1cmVzOyBydWxlczsgaW5pdDsgdmFyaWFibGVzOyBvYnNlcnZhYmxlczsgcGVydHVyYmF0aW9uc31cblxubGV0IGNvbXBpbF9vZl9hc3Qgfndhcm5pbmcgfmRlYnVnX21vZGUgfnN5bnRheF92ZXJzaW9uIH52YXJfb3ZlcndyaXRlIGFzdF9jb21waWxcbiAgICA9XG4gICgqIFRPRE8gdGVzdCB0aGlzICopXG4gICgqIFRyYW5zbGF0ZSBDTFRFIHRlc3RzIGluIGFzdF9jb21waWwgaW50byBDR1RFIHRlc3RzICopXG4gIGxldCBhc3RfY29tcGlsID0gdHJhbnNsYXRlX2NsdGVfaW50b19jZ3RlIGFzdF9jb21waWwgaW5cblxuICBsZXQgaGFzX2NvdW50ZXJzID0gQ291bnRlcnNfY29tcGlsZXIuaGFzX2NvdW50ZXJzIGFzdF9jb21waWwgaW5cbiAgbGV0IGFnZW50X3NpZ19pc19pbXBsaWNpdCA9XG4gICAgYXN0X2NvbXBpbC5Bc3Quc2lnbmF0dXJlcyA9IFtdICYmIGFzdF9jb21waWwuQXN0LnRva2VucyA9IFtdXG4gIGluXG4gICgqIEluZmVyIGFnZW50IHNpZ25hdHVyZXMgaWYgdGhlIHNpZ25hdHVyZSBpcyBpbXBsaWNpdCAqKVxuICBsZXQgYXN0X2NvbXBpbCA9XG4gICAgaWYgYWdlbnRfc2lnX2lzX2ltcGxpY2l0ICYmIGhhc19jb3VudGVycyB0aGVuXG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJpbXBsaWNpdCBzaWduYXR1cmUgaXMgaW5jb21wYXRpYmxlIHdpdGggY291bnRlcnNcIiwgTG9jLmR1bW15KSlcbiAgICBlbHNlIGlmIGFnZW50X3NpZ19pc19pbXBsaWNpdCB0aGVuXG4gICAgICBBc3QuaW5mZXJfYWdlbnRfc2lnbmF0dXJlcyBhc3RfY29tcGlsXG4gICAgZWxzZVxuICAgICAgYXN0X2NvbXBpbFxuICBpblxuICAoKiBSZW1vdmUgY291bnRlciBlcXVhbGl0eSB0ZXN0IHdpdGggYSB2YXJpYWJsZSBieSBzcGxpdHRpbmcgaW4gb25lIHJ1bGUgcGVyIHZhcmlhYmxlIHZhbHVlICopXG4gIGxldCBhc3RfY29tcGlsID1cbiAgICBpZiBoYXNfY291bnRlcnMgdGhlblxuICAgICAgQ291bnRlcnNfY29tcGlsZXIuc3BsaXRfY291bnRlcl92YXJpYWJsZXNfaW50b19zZXBhcmF0ZV9ydWxlcyB+d2FybmluZ1xuICAgICAgICB+ZGVidWdfbW9kZSBhc3RfY29tcGlsXG4gICAgZWxzZVxuICAgICAgYXN0X2NvbXBpbFxuICBpblxuXG4gIGxldCBhZ2VudHNfc2lnIDogU2lnbmF0dXJlLnMgPSBjcmVhdGVfc2lncyBhc3RfY29tcGlsLkFzdC5zaWduYXR1cmVzIGluXG4gICgqIFNldCBhbiBlbXB0eSBjb250YWN0IG1hcCAqKVxuICBsZXQgY29udGFjdF9tYXAgOiAoTW9kcy5JbnRTZXQudCAqIE1vZHMuSW50MlNldC50KSBhcnJheSBhcnJheSA9XG4gICAgQXJyYXkuaW5pdCAoU2lnbmF0dXJlLnNpemUgYWdlbnRzX3NpZykgKGZ1biBpIC0+XG4gICAgICAgIEFycmF5LmluaXQgKFNpZ25hdHVyZS5hcml0eSBhZ2VudHNfc2lnIGkpIChmdW4gcyAtPlxuICAgICAgICAgICAgKCBUb29scy5yZWN0aVxuICAgICAgICAgICAgICAgIChmdW4gYSBrIC0+IE1vZHMuSW50U2V0LmFkZCBrIGEpXG4gICAgICAgICAgICAgICAgTW9kcy5JbnRTZXQuZW1wdHlcbiAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLmludGVybmFsX3N0YXRlc19udW1iZXIgaSBzIGFnZW50c19zaWcpLFxuICAgICAgICAgICAgICBNb2RzLkludDJTZXQuZW1wdHkgKSkpXG4gIGluXG4gIGxldCBydWxlX25hbWVzLCBleHRyYV92YXJzLCBjbGVhbmVkX3J1bGVzID1cbiAgICBsZXQgYWNjID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChuYW1lX2FuZF9wdXJpZnlfcnVsZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gYWdlbnRzX3NpZyB+Y29udGFjdF9tYXApXG4gICAgICAgIHtcbiAgICAgICAgICBydWxlX25hbWVzID0gMCwgTW9kcy5TdHJpbmdTZXQuZW1wdHk7XG4gICAgICAgICAgZXh0cmFfdmFycyA9IFtdO1xuICAgICAgICAgIGNsZWFuZWRfcnVsZXMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBhc3RfY29tcGlsLkFzdC5ydWxlc1xuICAgIGluXG4gICAgc25kIGFjYy5ydWxlX25hbWVzLCBhY2MuZXh0cmFfdmFycywgYWNjLmNsZWFuZWRfcnVsZXNcbiAgaW5cbiAgbGV0IG92ZXJ3cml0ZV92YXJzICh2YXJfb3ZlcndyaXRlIDogKHN0cmluZyAqIE5ici50KSBsaXN0KVxuICAgICAgKHZhcnMgOiAoQXN0Lm1peHR1cmUsIHN0cmluZykgQXN0LnZhcmlhYmxlX2RlZiBsaXN0KSA6XG4gICAgICAoc3RyaW5nICogTmJyLnQpIGxpc3QgKiAoQXN0Lm1peHR1cmUsIHN0cmluZykgQXN0LnZhcmlhYmxlX2RlZiBsaXN0ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAob3ZlcndyaXRlX3ZhcnNfcmVtYWluaW5nLCBhY2NfdmFycykgKCgoeCwgXyksIF8pIGFzIHZhcikgLT5cbiAgICAgICAgbGV0IG1hdGNocywgb3RoZXJfb3ZlcndyaXRlX3ZhcnMgPVxuICAgICAgICAgIExpc3QucGFydGl0aW9uIChmdW4gKHgnLCBfKSAtPiB4ID0geCcpIG92ZXJ3cml0ZV92YXJzX3JlbWFpbmluZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjX3ZhcnNfd2l0aF94X3Jld3JpdHRlbl9pZl9wcmVzZW50ID1cbiAgICAgICAgICBtYXRjaCBtYXRjaHMgd2l0aFxuICAgICAgICAgIHwgW10gLT4gdmFyIDo6IGFjY192YXJzXG4gICAgICAgICAgfCBbICh4LCB2KSBdIC0+IChMb2MuYW5ub3Rfd2l0aF9kdW1teSB4LCBBbGdfZXhwci5jb25zdCB2KSA6OiBhY2NfdmFyc1xuICAgICAgICAgIHwgKHgsIF8pIDo6IF8gOjogXyAtPlxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKCBcInZhcmlhYmxlICdcIiBeIHggXiBcIicgaXMgb3ZlcndyaXR0ZW4gbW9yZSB0aGFuIG9uY2VcIixcbiAgICAgICAgICAgICAgICAgICBMb2MuZHVtbXkgKSlcbiAgICAgICAgaW5cblxuICAgICAgICBvdGhlcl9vdmVyd3JpdGVfdmFycywgYWNjX3ZhcnNfd2l0aF94X3Jld3JpdHRlbl9pZl9wcmVzZW50KVxuICAgICAgKHZhcl9vdmVyd3JpdGUsIFtdKSB2YXJzXG4gICAgfD4gZnVuICh2YXJfb3ZlcndyaXRlX25vdF9hcHBsaWVkLCByZXZfYWxnX3ZhcnMpIC0+XG4gICAgdmFyX292ZXJ3cml0ZV9ub3RfYXBwbGllZCwgTGlzdC5yZXYgcmV2X2FsZ192YXJzXG4gIGluXG4gIGxldCB2YXJfb3ZlcndyaXRlX25vdF9hcHBsaWVkLCBhbGdfdmFyc193aXRoX3Jld3JpdHRlbl92YXJzID1cbiAgICBvdmVyd3JpdGVfdmFycyB2YXJfb3ZlcndyaXRlIChhc3RfY29tcGlsLkFzdC52YXJpYWJsZXMgQCBleHRyYV92YXJzKVxuICBpblxuICBsZXQgYWxnX3ZhcnNfYXJyYXkgPVxuICAgIExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZFxuICAgICAgKGZ1biAoeCwgdikgLT4gTG9jLmFubm90X3dpdGhfZHVtbXkgeCwgQWxnX2V4cHIuY29uc3QgdilcbiAgICAgIHZhcl9vdmVyd3JpdGVfbm90X2FwcGxpZWQgYWxnX3ZhcnNfd2l0aF9yZXdyaXR0ZW5fdmFyc1xuICAgIHw+IEFycmF5Lm9mX2xpc3RcbiAgaW5cbiAgbGV0IGFsZ192YXJzX2ZpbmRlciA9XG4gICAgYWxnX3ZhcnNfYXJyYXkgfD4gTmFtZWREZWNscy5jcmVhdGUgfmZvcmJpZGRlbjpydWxlX25hbWVzIHw+IGZ1biBuZCAtPlxuICAgIG5kLk5hbWVkRGVjbHMuZmluZGVyXG4gIGluXG4gIGxldCB0b2tlbl9uYW1lcyA9XG4gICAgYXN0X2NvbXBpbC5Bc3QudG9rZW5zXG4gICAgfD4gVG9vbHMuYXJyYXlfbWFwX29mX2xpc3QgKGZ1biB4IC0+IHgsICgpKVxuICAgIHw+IE5hbWVkRGVjbHMuY3JlYXRlXG4gIGluXG4gIGxldCB0b2tlbnNfZmluZGVyID0gdG9rZW5fbmFtZXMuTmFtZWREZWNscy5maW5kZXIgaW5cblxuICBpZiBoYXNfY291bnRlcnMgdGhlblxuICAgIENvdW50ZXJzX2NvbXBpbGVyLmFkZF9jb3VudGVyX3RvX2NvbnRhY3RfbWFwIGFnZW50c19zaWdcbiAgICAgIChhZGRfbGlua19jb250YWN0X21hcCB+Y29udGFjdF9tYXApO1xuXG4gIGxldCBwZXJ0dWJhdGlvbnNfd2l0aG91dF9jb3VudGVycywgdXBkYXRlZF9hbGdfdmFycyA9XG4gICAgTGlzdF91dGlsLmZvbGRfcmlnaHRfbWFwXG4gICAgICAocGVydHVyYmF0aW9uX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gYWdlbnRzX3NpZyB0b2tlbnNfZmluZGVyXG4gICAgICAgICBhbGdfdmFyc19maW5kZXIgY29udGFjdF9tYXApXG4gICAgICBhc3RfY29tcGlsLkFzdC5wZXJ0dXJiYXRpb25zIFtdXG4gIGluXG4gIGxldCBwZXJ0dXJiYXRpb25zID1cbiAgICBpZiBoYXNfY291bnRlcnMgdGhlblxuICAgICAgQ291bnRlcnNfY29tcGlsZXIuY291bnRlcnNfcGVydHVyYmF0aW9ucyBhZ2VudHNfc2lnXG4gICAgICAgIFsgYXN0X2NvbXBpbC5Bc3Quc2lnbmF0dXJlcyBdXG4gICAgICBAIHBlcnR1YmF0aW9uc193aXRob3V0X2NvdW50ZXJzXG4gICAgZWxzZVxuICAgICAgcGVydHViYXRpb25zX3dpdGhvdXRfY291bnRlcnNcbiAgaW5cblxuICBsZXQgcnVsZXMgPVxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1biAocnVsZSA6IHJ1bGVfaW50ZXJfcmVwKSAtPlxuICAgICAgICAoIHJ1bGUubGFiZWxfb3B0LFxuICAgICAgICAgICggYXNzZW1ibGVfcnVsZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gcnVsZSBhZ2VudHNfc2lnIHRva2Vuc19maW5kZXJcbiAgICAgICAgICAgICAgYWxnX3ZhcnNfZmluZGVyLFxuICAgICAgICAgICAgcnVsZS5wb3MgKSApKVxuICAgICAgY2xlYW5lZF9ydWxlc1xuICBpblxuXG4gIGxldCB2YXJpYWJsZXMgPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfcmlnaHRpXG4gICAgICAoZnVuIGkgKGxhYiwgZXhwcikgYWNjIC0+XG4gICAgICAgICggbGFiLFxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfm1heF9hbGxvd2VkX3ZhcjoocHJlZCBpKVxuICAgICAgICAgICAgYWdlbnRzX3NpZyB0b2tlbnNfZmluZGVyIGFsZ192YXJzX2ZpbmRlciBleHByIClcbiAgICAgICAgOjogYWNjKVxuICAgICAgYWxnX3ZhcnNfYXJyYXkgW11cbiAgaW5cbiAgbGV0IG9ic2VydmFibGVzID1cbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChmdW4gZXhwciAtPlxuICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIGFnZW50c19zaWcgdG9rZW5zX2ZpbmRlclxuICAgICAgICAgIGFsZ192YXJzX2ZpbmRlciBleHByKVxuICAgICAgKExpc3QucmV2IGFzdF9jb21waWwub2JzZXJ2YWJsZXMpXG4gIGluXG4gIGxldCBpbml0ID1cbiAgICBpbml0X29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gYWdlbnRzX3NpZyBjb250YWN0X21hcCB0b2tlbnNfZmluZGVyXG4gICAgICBhbGdfdmFyc19maW5kZXIgYXN0X2NvbXBpbC5pbml0XG4gIGluXG5cbiAge1xuICAgIGFnZW50c19zaWc7XG4gICAgY29udGFjdF9tYXA7XG4gICAgdG9rZW5fbmFtZXM7XG4gICAgYWxnX3ZhcnNfZmluZGVyO1xuICAgIHVwZGF0ZWRfYWxnX3ZhcnM7XG4gICAgcmVzdWx0ID1cbiAgICAgIHtcbiAgICAgICAgZmlsZW5hbWVzID0gYXN0X2NvbXBpbC5maWxlbmFtZXM7XG4gICAgICAgIHZhcmlhYmxlcztcbiAgICAgICAgcnVsZXM7XG4gICAgICAgIG9ic2VydmFibGVzO1xuICAgICAgICBpbml0O1xuICAgICAgICBwZXJ0dXJiYXRpb25zO1xuICAgICAgICB2b2x1bWVzID0gYXN0X2NvbXBpbC52b2x1bWVzO1xuICAgICAgICB0b2tlbnMgPSBhc3RfY29tcGlsLnRva2VucztcbiAgICAgICAgc2lnbmF0dXJlcyA9IGFzdF9jb21waWwuc2lnbmF0dXJlcztcbiAgICAgICAgY29uZmlndXJhdGlvbnMgPSBhc3RfY29tcGlsLmNvbmZpZ3VyYXRpb25zO1xuICAgICAgfTtcbiAgfVxuIiwidHlwZSB0b2tlbiA9XG4gIHwgRU9GXG4gIHwgQ09NTUFcbiAgfCBET1RcbiAgfCBPUF9QQVJcbiAgfCBDTF9QQVJcbiAgfCBPUF9DVVJcbiAgfCBDTF9DVVJcbiAgfCBPUF9CUkFcbiAgfCBDTF9CUkFcbiAgfCBBVFxuICB8IFNFTUlDT0xPTlxuICB8IFBMVVNcbiAgfCBNSU5VU1xuICB8IE1VTFRcbiAgfCBESVZcbiAgfCBNT0RcbiAgfCBNQVhcbiAgfCBNSU5cbiAgfCBTSU5VU1xuICB8IENPU0lOVVNcbiAgfCBUQU5cbiAgfCBQT1dcbiAgfCBBQlNcbiAgfCBTUVJUXG4gIHwgRVhQT05FTlRcbiAgfCBMT0dcbiAgfCBPUlxuICB8IEFORFxuICB8IE5PVFxuICB8IFRIRU5cbiAgfCBFTFNFXG4gIHwgRElGRlxuICB8IEVRVUFMXG4gIHwgU01BTExFUlxuICB8IEdSRUFURVJcbiAgfCBUUlVFXG4gIHwgRkFMU0VcbiAgfCBJTkZJTklUWVxuICB8IFNIQVJQXG4gIHwgVU5ERVJTQ09SRVxuICB8IFBJUEVcbiAgfCBSQVJcbiAgfCBMUkFSXG4gIHwgTEFSXG4gIHwgRU1BWFxuICB8IFRNQVhcbiAgfCBDUFVUSU1FXG4gIHwgVElNRVxuICB8IEVWRU5UXG4gIHwgTlVMTF9FVkVOVFxuICB8IENPTE9OXG4gIHwgTkVXTElORVxuICB8IEJBQ0tTTEFTSFxuICB8IFNJR05BVFVSRVxuICB8IFRPS0VOXG4gIHwgSU5JVFxuICB8IE9CU1xuICB8IFBMT1RcbiAgfCBQRVJUXG4gIHwgQ09ORklHXG4gIHwgQVBQTFlcbiAgfCBERUxFVEVcbiAgfCBJTlRST1xuICB8IFNOQVBTSE9UXG4gIHwgU1RPUFxuICB8IEZMVVhcbiAgfCBUUkFDS1xuICB8IEFTU0lHTlxuICB8IFBSSU5URlxuICB8IFBMT1RFTlRSWVxuICB8IFNQRUNJRVNfT0ZcbiAgfCBET1xuICB8IFJFUEVBVFxuICB8IEFMQVJNXG4gIHwgUlVOXG4gIHwgTEVUXG4gIHwgSU5UIG9mIChpbnQpXG4gIHwgRkxPQVQgb2YgKGZsb2F0KVxuICB8IElEIG9mIChzdHJpbmcpXG4gIHwgTEFCRUwgb2YgKHN0cmluZylcbiAgfCBTVFJJTkcgb2YgKHN0cmluZylcbiAgfCBTUEFDRSBvZiAoc3RyaW5nKVxuICB8IENPTU1FTlQgb2YgKHN0cmluZylcblxub3BlbiBQYXJzaW5nOztcbmxldCBfID0gcGFyc2VfZXJyb3I7O1xuIyAxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICBsZXQgYWRkX3BvcyBlIHggPVxuICAgICh4LFxuICAgIExvYy5vZl9wb3MgKFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSkgKFBhcnNpbmcucmhzX2VuZF9wb3MgZSkpXG4gIGxldCByaHNfcG9zIGkgPVxuICAgIExvYy5vZl9wb3MgKFBhcnNpbmcucmhzX3N0YXJ0X3BvcyBpKSAoUGFyc2luZy5yaHNfZW5kX3BvcyBpKVxuICBsZXQgZW5kX3BvcyA9IFBhcnNpbmcucmhzX2VuZF9wb3NcbiAgbGV0IHN0YXJ0X3BvcyA9IFBhcnNpbmcucmhzX3N0YXJ0X3Bvc1xuXG4gIGxldCBpbnRlcm5hbF9tZW1vcnkgPSByZWYgW11cbiAgbGV0IGFkZCB4ID0gaW50ZXJuYWxfbWVtb3J5IDo9IHggOjogIWludGVybmFsX21lbW9yeVxuICBsZXQgb3V0cHV0ICgpID1cbiAgICBsZXQgbyA9IExpc3QucmV2ICFpbnRlcm5hbF9tZW1vcnkgaW4gbGV0ICgpID0gaW50ZXJuYWxfbWVtb3J5IDo9IFtdIGluIG9cbiMgMTAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbmxldCB5eXRyYW5zbF9jb25zdCA9IFt8XG4gICAgMCAoKiBFT0YgKik7XG4gIDI1NyAoKiBDT01NQSAqKTtcbiAgMjU4ICgqIERPVCAqKTtcbiAgMjU5ICgqIE9QX1BBUiAqKTtcbiAgMjYwICgqIENMX1BBUiAqKTtcbiAgMjYxICgqIE9QX0NVUiAqKTtcbiAgMjYyICgqIENMX0NVUiAqKTtcbiAgMjYzICgqIE9QX0JSQSAqKTtcbiAgMjY0ICgqIENMX0JSQSAqKTtcbiAgMjY1ICgqIEFUICopO1xuICAyNjYgKCogU0VNSUNPTE9OICopO1xuICAyNjcgKCogUExVUyAqKTtcbiAgMjY4ICgqIE1JTlVTICopO1xuICAyNjkgKCogTVVMVCAqKTtcbiAgMjcwICgqIERJViAqKTtcbiAgMjcxICgqIE1PRCAqKTtcbiAgMjcyICgqIE1BWCAqKTtcbiAgMjczICgqIE1JTiAqKTtcbiAgMjc0ICgqIFNJTlVTICopO1xuICAyNzUgKCogQ09TSU5VUyAqKTtcbiAgMjc2ICgqIFRBTiAqKTtcbiAgMjc3ICgqIFBPVyAqKTtcbiAgMjc4ICgqIEFCUyAqKTtcbiAgMjc5ICgqIFNRUlQgKik7XG4gIDI4MCAoKiBFWFBPTkVOVCAqKTtcbiAgMjgxICgqIExPRyAqKTtcbiAgMjgyICgqIE9SICopO1xuICAyODMgKCogQU5EICopO1xuICAyODQgKCogTk9UICopO1xuICAyODUgKCogVEhFTiAqKTtcbiAgMjg2ICgqIEVMU0UgKik7XG4gIDI4NyAoKiBESUZGICopO1xuICAyODggKCogRVFVQUwgKik7XG4gIDI4OSAoKiBTTUFMTEVSICopO1xuICAyOTAgKCogR1JFQVRFUiAqKTtcbiAgMjkxICgqIFRSVUUgKik7XG4gIDI5MiAoKiBGQUxTRSAqKTtcbiAgMjkzICgqIElORklOSVRZICopO1xuICAyOTQgKCogU0hBUlAgKik7XG4gIDI5NSAoKiBVTkRFUlNDT1JFICopO1xuICAyOTYgKCogUElQRSAqKTtcbiAgMjk3ICgqIFJBUiAqKTtcbiAgMjk4ICgqIExSQVIgKik7XG4gIDI5OSAoKiBMQVIgKik7XG4gIDMwMCAoKiBFTUFYICopO1xuICAzMDEgKCogVE1BWCAqKTtcbiAgMzAyICgqIENQVVRJTUUgKik7XG4gIDMwMyAoKiBUSU1FICopO1xuICAzMDQgKCogRVZFTlQgKik7XG4gIDMwNSAoKiBOVUxMX0VWRU5UICopO1xuICAzMDYgKCogQ09MT04gKik7XG4gIDMwNyAoKiBORVdMSU5FICopO1xuICAzMDggKCogQkFDS1NMQVNIICopO1xuICAzMDkgKCogU0lHTkFUVVJFICopO1xuICAzMTAgKCogVE9LRU4gKik7XG4gIDMxMSAoKiBJTklUICopO1xuICAzMTIgKCogT0JTICopO1xuICAzMTMgKCogUExPVCAqKTtcbiAgMzE0ICgqIFBFUlQgKik7XG4gIDMxNSAoKiBDT05GSUcgKik7XG4gIDMxNiAoKiBBUFBMWSAqKTtcbiAgMzE3ICgqIERFTEVURSAqKTtcbiAgMzE4ICgqIElOVFJPICopO1xuICAzMTkgKCogU05BUFNIT1QgKik7XG4gIDMyMCAoKiBTVE9QICopO1xuICAzMjEgKCogRkxVWCAqKTtcbiAgMzIyICgqIFRSQUNLICopO1xuICAzMjMgKCogQVNTSUdOICopO1xuICAzMjQgKCogUFJJTlRGICopO1xuICAzMjUgKCogUExPVEVOVFJZICopO1xuICAzMjYgKCogU1BFQ0lFU19PRiAqKTtcbiAgMzI3ICgqIERPICopO1xuICAzMjggKCogUkVQRUFUICopO1xuICAzMjkgKCogQUxBUk0gKik7XG4gIDMzMCAoKiBSVU4gKik7XG4gIDMzMSAoKiBMRVQgKik7XG4gICAgMHxdXG5cbmxldCB5eXRyYW5zbF9ibG9jayA9IFt8XG4gIDMzMiAoKiBJTlQgKik7XG4gIDMzMyAoKiBGTE9BVCAqKTtcbiAgMzM0ICgqIElEICopO1xuICAzMzUgKCogTEFCRUwgKik7XG4gIDMzNiAoKiBTVFJJTkcgKik7XG4gIDMzNyAoKiBTUEFDRSAqKTtcbiAgMzM4ICgqIENPTU1FTlQgKik7XG4gICAgMHxdXG5cbmxldCB5eWxocyA9IFwiXFwyNTVcXDI1NVxcXG5cXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG5cXDAxMVxcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxNFxcMDAwXFwwMTRcXDAwMFxcXG5cXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTdcXDAwMFxcXG5cXDAxN1xcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG5cXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG5cXDAyMVxcMDAwXFwwMjFcXDAwMFxcMDIxXFwwMDBcXDAyMVxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcXG5cXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjVcXDAwMFxcXG5cXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcXG5cXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI4XFwwMDBcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMDI4XFwwMDBcXDAyOFxcMDAwXFwwMjhcXDAwMFxcXG5cXDAyOFxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcXG5cXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG5cXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcXG5cXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDM2XFwwMDBcXDAzNlxcMDAwXFwwMzdcXDAwMFxcMDM3XFwwMDBcXDAzN1xcMDAwXFwwMzdcXDAwMFxcXG5cXDAzOFxcMDAwXFwwMzhcXDAwMFxcMDM4XFwwMDBcXDAzOFxcMDAwXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzVcXDAwMFxcXG5cXDAzNVxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQxXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcXG5cXDA0MlxcMDAwXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcXG5cXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ1XFwwMDBcXDA0NVxcMDAwXFwwNDVcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDdcXDAwMFxcXG5cXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG5cXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcXG5cXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcXG5cXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcXG5cXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcXG5cXDA1NVxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcXG5cXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcXG5cXDA2MFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwNjNcXDAwMFxcXG5cXDA2M1xcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcXG5cXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcXG5cXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5bGVuID0gXCJcXDAwMlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFxcblxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDA1XFwwMDBcXDAwN1xcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFxcblxcMDA0XFwwMDBcXDAwOFxcMDAwXFwwMTBcXDAwMFxcMDA2XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA1XFwwMDBcXDAwNlxcMDAwXFxcblxcMDA1XFwwMDBcXDAwMlxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA1XFwwMDBcXDAwMlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwN1xcMDAwXFwwMTFcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFxcblxcMDA3XFwwMDBcXDAxMVxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwNVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwOFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFxcblxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDA3XFwwMDBcXDAwMVxcMDAwXFxcblxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDA2XFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwNVxcMDAwXFxcblxcMDAyXFwwMDBcXDAwNlxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwNVxcMDAwXFxcblxcMDA1XFwwMDBcXDAwNlxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFxcblxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDA3XFwwMDBcXDAwNVxcMDAwXFwwMDRcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA1XFwwMDBcXDAwM1xcMDAwXFxcblxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDVcXDAwMFxcMDA3XFwwMDBcXDAwM1xcMDAwXFxcblxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwNVxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAyXFwwMDBcXDAwNVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwNVxcMDAwXFxcblxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcIlxuXG5sZXQgeXlkZWZyZWQgPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjQ0XFwwMDBcXDAwMFxcMDAwXFwyNDNcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyMTFcXDAwMFxcMjQ2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMjQ3XFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwyMzZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTMyXFwwMDBcXDEzM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNFxcMDAwXFwwMDBcXDAwMFxcMjM3XFwwMDBcXDI0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5N1xcMDAwXFwxOThcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMThcXDAwMFxcMTE5XFwwMDBcXFxuXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDgyXFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA2XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDc5XFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjMzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTNcXDAwMFxcMDAwXFwwMDBcXDE1MlxcMDAwXFwyMzVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQxXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTMwXFwwMDBcXDEyMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMzhcXDAwMFxcMjI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDAwMFxcMDAwXFwxNjVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzJcXDAwMFxcMTU4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMxXFwwMDBcXFxuXFwyMjlcXDAwMFxcMjI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcMDcxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODZcXDAwMFxcMDAwXFwwMDBcXDE4NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3NVxcMDAwXFwxNzBcXDAwMFxcMTE1XFwwMDBcXDExNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwOTZcXDAwMFxcMDk3XFwwMDBcXDA5OFxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDA5NVxcMDAwXFwxMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDAwMFxcMDAwXFwyMjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTYxXFwwMDBcXFxuXFwxNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwxMzlcXDAwMFxcMTM3XFwwMDBcXFxuXFwxNDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgyXFwwMDBcXDE4NVxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTkwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDE5NVxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDBcXFxuXFwwOTBcXDAwMFxcMTE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNVxcMDAwXFwxMjRcXDAwMFxcMTIzXFwwMDBcXFxuXFwxMjJcXDAwMFxcMTI3XFwwMDBcXDEyOVxcMDAwXFwwMDBcXDAwMFxcMDc1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTdcXDAwMFxcMTU1XFwwMDBcXDE1NlxcMDAwXFwxNTRcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM0XFwwMDBcXFxuXFwwNThcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTc5XFwwMDBcXDE3NlxcMDAwXFwxNzdcXDAwMFxcMDAwXFwwMDBcXDE5OVxcMDAwXFwxOTRcXDAwMFxcMDkzXFwwMDBcXFxuXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwxMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTY0XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwyMjFcXDAwMFxcMjE3XFwwMDBcXDIxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3M1xcMDAwXFwwMDBcXDAwMFxcMTc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjBcXDAwMFxcMjE4XFwwMDBcXDE2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUxXFwwMDBcXFxuXFwxNzFcXDAwMFxcMTcyXFwwMDBcXDE4MVxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2MlxcMDAwXFwwMDBcXDAwMFxcMTYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXFxuXFwyMDVcXDAwMFxcMjE1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTM1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMFxcMDIxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwMzBcXDAwMFxcMDA4XFwwMDBcXDAxMlxcMDAwXFwwMTBcXDAwMFxcMDA5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDBcXFxuXFwxNDdcXDAwMFxcMTQ4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDAwMFxcMDAwXFwxMTRcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDM2XFwwMDBcXDAzOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjRcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMTVcXDAwMFxcMDAwXFwwMDBcXDAyOVxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXFxuXFwwMzVcXDAwMFxcMDM4XFwwMDBcXDAzN1xcMDAwXFwwMjVcXDAwMFxcMDI3XFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuXFwwMTZcXDAwMFxcMDE4XFwwMDBcXDAxOVxcMDAwXFwwNTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDZcXDAwMFxcMDQ1XFwwMDBcXDAzNFxcMDAwXFwwMDBcXDAwMFxcMDQ0XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0M1xcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA1XFwwMDBcXFxuXFwwMTBcXDAwMFxcMDEzXFwwMDBcXDAxNlxcMDAwXFwwMThcXDAwMFxcMTMxXFwwMDBcXDA5M1xcMDAwXFwyNDJcXDAwMVxcMjQzXFwwMDFcXFxuXFwwMTVcXDAwMlxcMjMwXFwwMDFcXDIzMVxcMDAxXFwwMDhcXDAwMlxcMjA1XFwwMDFcXDIzMlxcMDAxXFwyMzNcXDAwMVxcMjM0XFwwMDFcXFxuXFwyMzVcXDAwMVxcMDIwXFwwMDJcXDE2MlxcMDAxXFwwOTlcXDAwMVxcMTAwXFwwMDFcXDE2M1xcMDAxXFwxNzlcXDAwMVxcMDM4XFwwMDBcXFxuXFwxODFcXDAwMFxcMDM5XFwwMDBcXDA5NFxcMDAwXFwwOTVcXDAwMFxcMDk2XFwwMDBcXDIzNlxcMDAwXFwwOTdcXDAwMFxcMDk4XFwwMDBcXFxuXFwwOTlcXDAwMFxcMTg2XFwwMDBcXDE4N1xcMDAwXFwyMjNcXDAwMFxcMTAyXFwwMDBcXDEwM1xcMDAwXFwxMDRcXDAwMFxcMDQwXFwwMDBcXFxuXFwxNzdcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwxNDlcXDAwMVxcMDM2XFwwMDFcXDEyNlxcMDAwXFwwNDNcXDAwMFxcMTkyXFwwMDBcXFxuXFwwMTdcXDAwMVxcMTg4XFwwMDBcXDA5NlxcMDAxXFwyMTlcXDAwMFxcMjIwXFwwMDBcXDEzMlxcMDAwXFwwNjJcXDAwMFxcMDYzXFwwMDBcXFxuXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA5MlxcMDAxXFwwOTNcXDAwMVxcMTEzXFwwMDBcXDEzOFxcMDAxXFwxMzlcXDAwMVxcMTE0XFwwMDBcXFxuXFwwNDRcXDAwMFxcMDQ1XFwwMDBcIlxuXG5sZXQgeXlzaW5kZXggPSBcIlxcMTE0XFwwMDJcXFxuXFwwNjVcXDI1NVxcMTI5XFwyNTVcXDEzMlxcMjU1XFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAxOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMTFcXDAwN1xcMDAwXFwwMDBcXDA0N1xcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAzNlxcMjU1XFwwMTRcXDI1NVxcMTgzXFwwMDBcXFxuXFwwMzlcXDAwMFxcMTk2XFwyNTVcXDAwMFxcMDAwXFwwMThcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDA3MlxcMjU1XFwxODNcXDAwMFxcMTQ4XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgwXFwyNTVcXFxuXFwxNDlcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTc4XFwyNTVcXDAzOVxcMDAxXFwxNjBcXDAwMlxcMjA0XFwwMDBcXDE4M1xcMDAwXFwyMjNcXDI1NVxcMjM4XFwyNTVcXFxuXFwwMDBcXDAwMFxcMDYxXFwwMTFcXDI0MVxcMjU1XFwxOTlcXDI1NVxcMTE1XFwwMDlcXDA2M1xcMjU1XFwxODNcXDAwOVxcMDU1XFwwMDBcXFxuXFwyMDlcXDAxMlxcMDAwXFwwMDBcXDAzMVxcMDAwXFwwNjNcXDI1NVxcMjE3XFwyNTVcXDIxMVxcMDAyXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMjE2XFwyNTVcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkzXFwwMTRcXFxuXFwyNTFcXDAwOVxcMDYzXFwwMTBcXDA0NlxcMDEyXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDA0NlxcMDEyXFwxNzRcXDI1NVxcMTM1XFwwMDFcXFxuXFwwODBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMjU1XFwwMjNcXDAxM1xcMDAwXFwwMDBcXDExMVxcMDA3XFwwMDBcXDAwMFxcMDk1XFwwMDBcXFxuXFwxODNcXDAwMFxcMDAwXFwwMDBcXDA5M1xcMDE0XFwxODdcXDAxNFxcMTg3XFwwMTRcXDE4N1xcMDE0XFwxODdcXDAxNFxcMTg3XFwwMTRcXFxuXFwxODdcXDAxNFxcMTg3XFwwMTRcXDE4N1xcMDE0XFwxODdcXDAxNFxcMTg3XFwwMTRcXDI0OVxcMDAxXFwxMDRcXDI1NVxcMTQ2XFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMTMzXFwwMDBcXFxuXFwwMDRcXDAwMFxcMTYwXFwwMDJcXDE2NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4NFxcMjU1XFwxODNcXDAwMFxcMTI2XFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDQ3XFwyNTVcXDA0N1xcMjU1XFwxMTFcXDAxMVxcMDAwXFwwMDBcXFxuXFwyMTZcXDI1NVxcMDcwXFwwMTNcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDQ3XFwyNTVcXDAwMFxcMDAwXFwwNDdcXDI1NVxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTAyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDQzXFwyNTVcXFxuXFwxODNcXDAwMFxcMDcwXFwwMDFcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDA3MFxcMDAxXFwwMDBcXDAwMFxcMjE3XFwwMDBcXFxuXFwyMTZcXDAwMFxcMjAzXFwyNTVcXDExMVxcMDA3XFwyMzVcXDAwMFxcMDc2XFwyNTVcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDIwNVxcMDAwXFwxODNcXDAwMFxcMTg3XFwwMTRcXDE4N1xcMDE0XFwxODdcXDAxNFxcMTg3XFwwMTRcXFxuXFwxODdcXDAxNFxcMDkzXFwwMTRcXDA5M1xcMDE0XFwwOTNcXDAxNFxcMDkzXFwwMTRcXDA5M1xcMDE0XFwwOTNcXDAxNFxcMDkzXFwwMTRcXFxuXFwxNzJcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMjU1XFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDEzMVxcMDEwXFwxOTlcXDAxMFxcMDAwXFwwMDBcXDIxMFxcMDAwXFwxMDZcXDAwOVxcMTgzXFwwMDBcXFxuXFwxNzRcXDAwMFxcMjEyXFwyNTVcXDE3OVxcMDAwXFwwOTNcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAxN1xcMDAxXFwwMjVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMTFcXFxuXFwwMzVcXDAwMVxcMTgzXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDA3MFxcMDAxXFwxODNcXDAwMFxcMDkzXFwwMTRcXFxuXFwwOTNcXDAxNFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwOTNcXDAxNFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4N1xcMDE0XFwxODdcXDAxNFxcMDkzXFwwMTRcXDA5NlxcMDAzXFwwMDBcXDAwMFxcMTg3XFwwMTRcXFxuXFwwMDBcXDAwMFxcMTc4XFwyNTVcXDE3OFxcMjU1XFwwMzlcXDAwMVxcMDM5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDkzXFwwMTRcXFxuXFwwNDdcXDI1NVxcMTY0XFwwMDJcXDA5M1xcMDE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMDQ3XFwwMDFcXDA3NFxcMDAxXFwwMDdcXDAwMVxcMDA3XFwwMDFcXDEwNlxcMDA5XFwxODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDA2MVxcMjU1XFwxMDRcXDAwMVxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwOTNcXDAxNFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAzN1xcMDAzXFwxMTdcXDAwMVxcMTgzXFwwMDBcXDA0NlxcMDEyXFwwNzBcXDAwMVxcMDAwXFwwMDBcXFxuXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTIxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMzXFwwMDFcXDAwMVxcMDAwXFwwNzNcXDAwMVxcMDAwXFwwMDBcXFxuXFwxNTVcXDAwMVxcMTgzXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMTExXFwwMDdcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMVxcMDA3XFwwMDFcXDE3NFxcMDAwXFwyMThcXDI1NVxcMTgzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4MVxcMDAxXFwxMzZcXDAwMVxcMjA1XFwwMDFcXDA5M1xcMDE0XFwwNzBcXDAxM1xcMDM1XFwwMDFcXFxuXFwxODNcXDAwMFxcMDQ2XFwwMTJcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwxODNcXDAwMFxcMDcwXFwwMDBcXDIyOFxcMDAxXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE3MFxcMDAxXFwxODNcXDAwMFxcMjQ3XFwwMDFcXFxuXFwwMTNcXDAwNFxcMTExXFwwMDdcXDA5M1xcMDE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwyMTJcXDI1NVxcMTY5XFwwMDFcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwyNDhcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg3XFwwMTRcXDExOVxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwxODNcXDAwMFxcMDA1XFwwMDJcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDE4N1xcMDE0XFwxODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFwwNDRcXDAwMVxcMTgzXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwyMTJcXDI1NVxcMDkzXFwwMTRcXDA5M1xcMDE0XFwxODNcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAxMlxcMDAyXFwxODNcXDAwMFxcMDA3XFwwMDJcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwwMTZcXDAwMlxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAzNFxcMDAyXFwwMTRcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXFxuXFwwMTdcXDAwMlxcMDIzXFwwMDJcXDE0M1xcMjU1XFwwMjRcXDAwMlxcMDI2XFwwMDJcXDA2OFxcMDAwXFwxODNcXDAwMFxcMTUwXFwwMDJcXFxuXFwxNTlcXDAwMlxcMTUxXFwwMDJcXDIzMlxcMDAwXFwxMzlcXDAwMFxcMTk4XFwwMDJcXDE4M1xcMDAwXFwxNjFcXDAwMlxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMTYzXFwwMDJcXDE2NlxcMDAyXFwwMDBcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTU0XFwwMDBcXDAwMFxcMDAwXFwxNzBcXDI1NVxcMDAwXFwwMDBcXDA5N1xcMDAyXFwxNjlcXDAwMlxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTYxXFwyNTVcXDEwOVxcMDAyXFwxMTBcXDAwMlxcMTExXFwwMDJcXDE2OFxcMjU1XFwwMDBcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMTE3XFwwMDJcXDExNlxcMDAzXFwwMDBcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTcwXFwyNTVcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU0XFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTIwXFwwMDJcXFxuXFwxOTFcXDAwMlxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDE4M1xcMDAwXFwyMDNcXDAwMlxcMTgzXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5cmluZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMTIyXFwwMDhcXDAxOFxcMDA2XFwxNzRcXDAwOVxcMDExXFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDJcXDA2OFxcMDAyXFxcblxcMDY4XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5M1xcMDA2XFxcblxcMTYxXFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTIzXFwwMDBcXDEzMlxcMDAyXFwwMTFcXDAxMVxcMTA3XFwyNTVcXDAxMVxcMDExXFxcblxcMTQwXFwwMTJcXDE0MVxcMDAyXFwxMDdcXDI1NVxcMTQ5XFwwMDFcXDA3MlxcMDAzXFwxODhcXDAwNlxcMjA4XFwwMDJcXDA1MlxcMDAxXFxcblxcMTI3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMTRcXDAxMVxcMDExXFxcblxcMDExXFwwMTFcXDI0M1xcMDAxXFwwMzlcXDAwNVxcMDkzXFwwMTJcXDI0M1xcMjU1XFwxNTFcXDAwMVxcMjE3XFwwMDRcXDA0MVxcMDAwXFxcblxcMTEwXFwyNTVcXDExN1xcMDEzXFwwMDBcXDAwMFxcMTc0XFwwMDlcXDE3OVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAxNFxcMjM0XFwwMTRcXDIzNFxcMDE0XFwyMzRcXDAxNFxcMjM0XFwwMTRcXDIzNFxcMDE0XFxcblxcMjM0XFwwMTRcXDIzNFxcMDE0XFwyMzRcXDAxNFxcMjM0XFwwMTRcXDIzNFxcMDE0XFwwMTVcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExMFxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2MlxcMDAxXFxcblxcMDAwXFwwMDBcXDIyOFxcMDAyXFwyMzVcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDZcXDAwNlxcMjU1XFwwMDZcXDA2MlxcMDA3XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2NFxcMDEzXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEwXFwyNTVcXDExMFxcMjU1XFxcblxcMTYxXFwwMTFcXDAwMFxcMDAwXFwyMDNcXDAwNFxcMDAwXFwwMDBcXDIzM1xcMDEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODVcXDAwMFxcMDQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDIwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0OFxcMDAyXFxcblxcMjM0XFwwMTRcXDIzNFxcMDE0XFwyMzRcXDAxNFxcMjM0XFwwMTRcXDIzNFxcMDE0XFwxNDBcXDAxNFxcMTQwXFwwMTRcXDE0MFxcMDE0XFxcblxcMTQwXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMTRcXDE0MFxcMDE0XFwwMDBcXDAwMFxcMTQwXFwwMTRcXDEzMlxcMDAyXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjJcXDAwOFxcMTQ5XFwwMDFcXDAwMFxcMDAwXFwxMjJcXDAwOFxcMDAwXFwwMDBcXDAyM1xcMDA5XFxcblxcMDAwXFwwMDBcXDA5NlxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAxMVxcMDExXFwwMTFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjRcXDAwMVxcMTc0XFwwMDlcXDAwMFxcMDAwXFwxNDFcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDk5XFwyNTVcXDEzMlxcMDAyXFwxNDBcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMDExXFxcblxcMDM4XFwwMDBcXDAyMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAyXFwwMDJcXDAwMFxcMDAwXFwxNDBcXDAxNFxcMTQwXFwwMTRcXDAzOVxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE0MFxcMDE0XFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM0XFwwMTRcXDIzNFxcMDE0XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDE0XFxcblxcMDAwXFwwMDBcXDIwNFxcMDAzXFwwMDBcXDAwMFxcMjM0XFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDE0XFwxMTBcXDI1NVxcMTA4XFwwMDdcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE0MFxcMDE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3NFxcMDA5XFxcblxcMDAwXFwwMDBcXDIyMVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE0MFxcMDE0XFwyMzZcXDAwN1xcMTI5XFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDUwXFwwMDBcXDA5M1xcMDEyXFwwMDBcXDAwMFxcMDAyXFwwMDJcXDA0MVxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMlxcMDAwXFwwMDBcXDA4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA1MlxcMDAzXFwxNTVcXDAwM1xcMDU5XFwwMDRcXDEzOVxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwOTlcXDI1NVxcMTMyXFwwMDJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE3MFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNFxcMDE0XFxcblxcMTc0XFwwMDlcXDAwMFxcMDAwXFwxNzJcXDAwMlxcMDAwXFwwMDBcXDIwMFxcMDA4XFwwMDBcXDAwMFxcMTMwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE1M1xcMDAxXFwyMjFcXDAwMlxcMDAwXFwwMDBcXDI0MlxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDE0XFxcblxcMjMzXFwwMTNcXDI0NVxcMDAyXFwyNTJcXDAwMlxcMDAwXFwwMDBcXDA5M1xcMDEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDQxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNVxcMDAzXFwwMDVcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEzMlxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTRcXDAwNVxcMTEzXFwwMDZcXDE0MFxcMDE0XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDA4XFwyMzBcXDAwOFxcMDE4XFwyNTVcXDA5OVxcMjU1XFxcblxcMDAwXFwwMDBcXDA2NVxcMDA2XFwwMDBcXDAwMFxcMDA0XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDE1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwNVxcMjM0XFwwMTRcXDAwMFxcMDAwXFxcblxcMTUzXFwwMDFcXDAwNVxcMDAzXFwwMDBcXDAwMFxcMjQyXFwwMDJcXDEyMlxcMDA4XFwwMDBcXDAwMFxcMjM0XFwwMTRcXDAwMFxcMDAwXFxcblxcMjI3XFwwMDdcXDE5NVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM4XFwwMDFcXDEzMVxcMDAxXFxcblxcMjIxXFwwMDJcXDE2MFxcMDA2XFwwMDBcXDAwMFxcMDk5XFwyNTVcXDE0MFxcMDE0XFwxNDBcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDI1NVxcMDk5XFwyNTVcXDAwMFxcMDAwXFxcblxcMTU3XFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg2XFwwMDdcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyMlxcMDAxXFwwMDBcXDAwMFxcMDkzXFwwMDZcXDA5M1xcMDA2XFxcblxcMjIxXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDhcXDAwMFxcMDAwXFwyMjFcXDAwMFxcMTMxXFwwMDFcXDAwNVxcMDAzXFxcblxcMDAwXFwwMDBcXDA5OVxcMjU1XFwxNzBcXDAwOFxcMjM4XFwwMDVcXDAyMVxcMDA4XFwwMDBcXDAwMFxcMjM5XFwwMDJcXDIzOVxcMDAyXFxcblxcMTE4XFwwMDBcXDIzOVxcMDAyXFwyMzlcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTBcXDAwMlxcMDEwXFwwMDNcXDE3OFxcMDAxXFxcblxcMDExXFwwMDNcXDAyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDA1XFwwMDFcXDA1OVxcMDAzXFwwMTNcXDAwM1xcMDEwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjIyXFwwMDFcXDAwMFxcMDAwXFwwMDVcXDAwM1xcMDAwXFwwMDBcXDA3OVxcMDA4XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODVcXDAwMVxcMDk5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMjU1XFwyNDJcXDAwMFxcMDAwXFwwMDBcXDE5OFxcMjU1XFxcblxcMDY1XFwwMDZcXDE5OVxcMDAyXFwxNzhcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFxcblxcMTk5XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk5XFwwMDJcXDE5OVxcMDAyXFwxOTRcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEzMVxcMDAxXFwyMzVcXDAwMVxcMjM1XFwwMDFcXDAyOFxcMDAyXFwwMDBcXDAwMFxcMTMyXFwwMDJcXDEyNFxcMDAzXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDJcXDE5OFxcMjU1XFxcblxcMTU3XFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAzXFxcblxcMjM1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNVxcMDAzXFxcblxcMDE1XFwwMDNcXDIzNVxcMDAxXFwwMjZcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk5XFwwMDJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDNcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzVcXDAwMVxcMjM1XFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIzNVxcMDAxXFwwMjhcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM1XFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwM1xcMDAwXFwwMDBcXDIzNVxcMDAxXFwwMDBcXDAwMFwiXG5cbmxldCB5eWdpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDEyXFwwMDNcXDAwMFxcMDAwXFwwMjdcXDI1NFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg2XFwyNTRcXDAwMFxcMDAwXFwwNjZcXDI1NFxcMjA4XFwyNTVcXDAyNFxcMjU0XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjJcXDI1NFxcMTM4XFwyNTRcXDA3N1xcMjU0XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMTA3XFwwMDFcXDA0NVxcMjU1XFwwNDhcXDAwMlxcXG5cXDA1M1xcMDAyXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDEyM1xcMjU1XFwxMzNcXDAwM1xcMDAwXFwwMDBcXDAzMFxcMDAzXFwyNTJcXDAwM1xcXG5cXDA1M1xcMjU1XFwxNDlcXDI1NVxcMDgzXFwwMDNcXDE0NlxcMDAyXFwxNDdcXDAwMlxcMDAwXFwwMDBcXDE3OVxcMDAzXFwxODVcXDAwM1xcXG5cXDEzNlxcMDAyXFwwMDBcXDAwMFxcMTg2XFwwMDJcXDEzNFxcMjU1XFwwMzVcXDAwM1xcMjE0XFwyNTVcXDI1MlxcMjU1XFwwNDFcXDI1NVxcXG5cXDAwMFxcMDAwXFwxMjVcXDI1NVxcMjM4XFwwMDJcXDIyMFxcMjU0XFwwMDBcXDAwMFxcMTE1XFwyNTVcXDE5MlxcMDAyXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMzZcXDAwNFwiXG5cbmxldCB5eXRhYmxlc2l6ZSA9IDQxNTNcbmxldCB5eXRhYmxlID0gXCJcXDAxMVxcMDAwXFxcblxcMDE0XFwwMDBcXDAxN1xcMDAwXFwwMTlcXDAwMFxcMDMyXFwwMDFcXDE0NVxcMDAxXFwwMjBcXDAwMFxcMDIxXFwwMDBcXDAyMlxcMDAwXFxcblxcMTMzXFwwMDBcXDA1OVxcMDAwXFwyMzNcXDAwMFxcMjI0XFwwMDBcXDEzN1xcMDAwXFwyMTdcXDAwMVxcMjA4XFwwMDBcXDEwMFxcMDAwXFxcblxcMTAxXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMjAxXFwwMDBcXDE2OVxcMDAwXFwwNTZcXDAwMFxcMTA1XFwwMDBcXDEwNlxcMDAwXFxcblxcMjUyXFwwMDFcXDAwMVxcMDAwXFwxMDdcXDAwMFxcMTA4XFwwMDBcXDEwOVxcMDAwXFwxMTBcXDAwMFxcMTExXFwwMDBcXDExMlxcMDAwXFxcblxcMTE1XFwwMDBcXDExNlxcMDAwXFwxMTdcXDAwMFxcMTE4XFwwMDBcXDExOVxcMDAwXFwwMDFcXDAwMFxcMTIyXFwwMDBcXDA0MVxcMDAyXFxcblxcMDAxXFwwMDBcXDA2NVxcMDAxXFwxODdcXDAwMFxcMTkyXFwwMDFcXDIwMFxcMDAwXFwxMjhcXDAwMFxcMTI5XFwwMDBcXDEzMFxcMDAwXFxcblxcMDI0XFwwMDBcXDE2OFxcMDAwXFwxMzRcXDAwMFxcMTM1XFwwMDBcXDEzNlxcMDAwXFwxMjFcXDAwMFxcMTM4XFwwMDBcXDEzOVxcMDAwXFxcblxcMTQwXFwwMDBcXDE0MVxcMDAxXFwxNDJcXDAwMFxcMTQ0XFwwMDBcXDA5N1xcMDAxXFwxNDRcXDAwMVxcMTg5XFwwMDBcXDA5MVxcMDAxXFxcblxcMDA2XFwwMDBcXDE0N1xcMDAwXFwxNDhcXDAwMFxcMTQ5XFwwMDBcXDE1MFxcMDAwXFwxNTFcXDAwMFxcMTUyXFwwMDBcXDE1M1xcMDAwXFxcblxcMTU0XFwwMDBcXDE1NVxcMDAwXFwxNTZcXDAwMFxcMTU3XFwwMDBcXDE1OFxcMDAwXFwyMjFcXDAwMFxcMjIyXFwwMDBcXDA1OFxcMDAxXFxcblxcMTU5XFwwMDBcXDE0MVxcMDAwXFwyMDZcXDAwMVxcMDc5XFwwMDJcXDE3NFxcMDAwXFwwMTRcXDAwMFxcMDAxXFwwMDBcXDEyMFxcMDAwXFxcblxcMDgxXFwwMDJcXDE0NVxcMDAwXFwwNDVcXDAwMVxcMDE0XFwwMDBcXDA0N1xcMDAxXFwwNDVcXDAwMlxcMTYwXFwwMDBcXDA1NlxcMDAwXFxcblxcMDUxXFwwMDFcXDI1M1xcMDAxXFwwMDFcXDAwMFxcMDU3XFwwMDJcXDE3MVxcMDAwXFwwMzNcXDAwMVxcMDAxXFwwMDBcXDA1NlxcMDAxXFxcblxcMDE4XFwwMDFcXDAyNFxcMDAwXFwwMDFcXDAwMFxcMTc2XFwwMDBcXDEyNFxcMDAxXFwxMDBcXDAwMFxcMTk3XFwwMDBcXDAwMVxcMDAwXFxcblxcMDUwXFwwMDBcXDA1MFxcMDAwXFwyNDdcXDAwMVxcMDA3XFwwMDBcXDA1MFxcMDAwXFwyMDVcXDAwMFxcMjA2XFwwMDBcXDIwN1xcMDAwXFxcblxcMDk5XFwwMDJcXDIwOVxcMDAwXFwwNDRcXDAwMVxcMjEwXFwwMDBcXDAzNlxcMDAwXFwwNzBcXDAwMlxcMTQ0XFwwMDBcXDIxOFxcMDAwXFxcblxcMDEyXFwwMDBcXDAwMVxcMDAwXFwyMThcXDAwMFxcMDE1XFwwMDBcXDIwMFxcMDAxXFwwODZcXDAwMlxcMDkxXFwwMDFcXDAyMlxcMDAyXFxcblxcMTAwXFwwMDBcXDIzMlxcMDAwXFwwOThcXDAwMVxcMTQyXFwwMDBcXDE5MFxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDIzNVxcMDAwXFxcblxcMjM3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMTQzXFwwMDBcXDE0NlxcMDAwXFwyMzhcXDAwMFxcMjM5XFwwMDBcXDI0MFxcMDAwXFxcblxcMjQxXFwwMDBcXDI0MlxcMDAwXFwyNDNcXDAwMFxcMjQ0XFwwMDBcXDI0NVxcMDAwXFwyNDZcXDAwMFxcMjQ3XFwwMDBcXDI1M1xcMDAwXFxcblxcMjU0XFwwMDBcXDI1NVxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFxcblxcMTEzXFwwMDFcXDIyMlxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDA3MVxcMDAyXFwwMDhcXDAwMVxcMDA5XFwwMDFcXDAyNFxcMDAwXFxcblxcMDAxXFwwMDBcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDA3XFwwMDBcXDAxMlxcMDAxXFwyNTBcXDAwMFxcMDA3XFwwMDBcXDAyMVxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNTBcXDAwMVxcMDAxXFwwMDBcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDUwXFwwMDBcXDAzMVxcMDAyXFxcblxcMTYxXFwwMDBcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMTI0XFwwMDBcXDAyNVxcMDAxXFwwMDFcXDAwMFxcMDA3XFwwMDBcXDAyNlxcMDAxXFxcblxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwNTRcXDAwMVxcMTcwXFwwMDBcXDEyNVxcMDAwXFwyMjhcXDAwMVxcMTM3XFwwMDFcXDIyOFxcMDAxXFxcblxcMTc2XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDk3XFwwMDFcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMjAwXFwwMDBcXDAyNFxcMDAwXFwwMjZcXDAwMlxcMjAxXFwwMDBcXDAyN1xcMDAyXFwwNDNcXDAwMVxcMTc1XFwwMDFcXDA0NlxcMDAxXFxcblxcMTc2XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDc3XFwwMDFcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDc4XFwwMDFcXDAwMVxcMDAwXFxcblxcMDU1XFwwMDFcXDE1NlxcMDAxXFwwMDdcXDAwMFxcMDAxXFwwMDBcXDA3MlxcMDAyXFwwNTlcXDAwMVxcMDYwXFwwMDFcXDA3NlxcMDAyXFxcblxcMTc4XFwwMDBcXDIxM1xcMDAxXFwxNzlcXDAwMFxcMTU1XFwwMDFcXDAwMVxcMDAwXFwyMjlcXDAwMVxcMDYxXFwwMDFcXDIyOVxcMDAxXFxcblxcMDYyXFwwMDFcXDE3MlxcMDAwXFwwNjRcXDAwMVxcMDM2XFwwMDBcXDIyNVxcMDAwXFwwMDdcXDAwMFxcMTcyXFwwMDFcXDAyNVxcMDAwXFxcblxcMTYwXFwwMDFcXDE2OFxcMDAxXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDA3NVxcMDAxXFwwMjRcXDAwMFxcMDE0XFwwMDFcXDE3M1xcMDAwXFxcblxcMDA4XFwwMDBcXDAwOVxcMDAwXFwyMDJcXDAwMFxcMDgwXFwwMDFcXDA4MVxcMDAxXFwwODJcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDgzXFwwMDFcXDAyM1xcMDAwXFwwOTBcXDAwMVxcMDAxXFwwMDBcXDE4MlxcMDAwXFwwNzlcXDAwMVxcMDk0XFwwMDFcXDIwMVxcMDAwXFxcblxcMTY5XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMDFcXDAwMFxcMTY5XFwwMDBcXDE4NlxcMDAxXFxcblxcMTAzXFwwMDFcXDA5OFxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEwN1xcMDAxXFwwMzZcXDAwMFxcMjAxXFwwMDFcXDAwMVxcMDAwXFxcblxcMTEwXFwwMDFcXDAwMVxcMDAwXFwxMTFcXDAwMVxcMTEyXFwwMDFcXDAwMVxcMDAwXFwxMTRcXDAwMVxcMTg3XFwwMDBcXDAwMVxcMDAwXFxcblxcMjAwXFwwMDBcXDExN1xcMDAxXFwwMDFcXDAwMFxcMTE4XFwwMDFcXDE4N1xcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDE2OVxcMDAwXFxcblxcMTY5XFwwMDBcXDEwMFxcMDAwXFwxMjJcXDAwMVxcMTY4XFwwMDBcXDEyMFxcMDAxXFwxMjFcXDAwMVxcMTgwXFwwMDBcXDIyMlxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAzMFxcMDAyXFwxNjBcXDAwMVxcMTkxXFwwMDFcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMjVcXDAwMVxcMDQ2XFwwMDBcXDEyNlxcMDAxXFwxMjdcXDAwMVxcMTYxXFwwMDFcXDAyNlxcMDAwXFxcblxcMDI3XFwwMDBcXDAxNVxcMDAxXFwwNTVcXDAwMlxcMTY4XFwwMDBcXDE2OFxcMDAwXFwxNjhcXDAwMFxcMTMyXFwwMDFcXDEzM1xcMDAxXFxcblxcMTc0XFwwMDBcXDA5MFxcMDAxXFwwMDFcXDAwMFxcMjAxXFwwMDBcXDE2OVxcMDAwXFwxNDJcXDAwMVxcMTc0XFwwMDBcXDAxOFxcMDAyXFxcblxcMTQzXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTQ3XFwwMDFcXDE2OVxcMDAwXFwyMjhcXDAwMVxcMTUwXFwwMDFcXDE1MVxcMDAxXFxcblxcMTUyXFwwMDFcXDIyOFxcMDAxXFwyMThcXDAwMFxcMTU0XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTk4XFwwMDBcXDE1N1xcMDAxXFxcblxcMDAxXFwwMDBcXDIyOVxcMDAwXFwxODdcXDAwMFxcMTg4XFwwMDFcXDIwMFxcMDAwXFwwMDFcXDAwMFxcMTc0XFwwMDBcXDE3NFxcMDAwXFxcblxcMTc0XFwwMDBcXDE2OFxcMDAwXFwwMDFcXDAwMFxcMjE0XFwwMDFcXDAwMVxcMDAwXFwyMTVcXDAwMVxcMTQ0XFwwMDBcXDE5NVxcMDAwXFxcblxcMTY2XFwwMDFcXDE2OFxcMDAwXFwxNDRcXDAwMFxcMDAxXFwwMDBcXDE2OVxcMDAxXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE0NFxcMDAwXFxcblxcMTQ0XFwwMDBcXDIzNFxcMDAwXFwwMzhcXDAwMlxcMTQyXFwwMDBcXDAzOVxcMDAyXFwyMjlcXDAwMVxcMTc3XFwwMDFcXDE0MlxcMDAwXFxcblxcMTc4XFwwMDFcXDIyOVxcMDAxXFwxOTFcXDAwMFxcMTYxXFwwMDFcXDE0MlxcMDAwXFwxNDJcXDAwMFxcMjE4XFwwMDBcXDE4NVxcMDAxXFxcblxcMTkxXFwwMDBcXDA2M1xcMDAyXFwxODdcXDAwMVxcMDY0XFwwMDJcXDE3NFxcMDAwXFwxODlcXDAwMVxcMDAxXFwwMDBcXDE5MFxcMDAxXFxcblxcMDU2XFwwMDJcXDAwMVxcMDAwXFwxOTRcXDAwMVxcMTk1XFwwMDFcXDA5MFxcMDAxXFwxOThcXDAwMVxcMjUyXFwwMDBcXDEwMFxcMDAwXFxcblxcMjAyXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMDNcXDAwMVxcMjA0XFwwMDFcXDAxM1xcMDAxXFxcblxcMDAxXFwwMDBcXDIyNlxcMDAwXFwyMDlcXDAwMVxcMjEwXFwwMDFcXDIxMVxcMDAxXFwyMzBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMTZcXDAwMVxcMTc2XFwwMDBcXDE3OFxcMDAxXFxcblxcMDE4XFwwMDFcXDAwMVxcMDAwXFwyMTlcXDAwMVxcMDAxXFwwMDBcXDAyNFxcMDAxXFwyMjFcXDAwMVxcMTQ0XFwwMDBcXDIyMFxcMDAxXFxcblxcMDAxXFwwMDBcXDI1MVxcMDAwXFwwMTlcXDAwMlxcMjQ0XFwwMDFcXDAwMVxcMDAwXFwyNDVcXDAwMVxcMjQ2XFwwMDFcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTBcXDAwMVxcMTQyXFwwMDBcXDI1MVxcMDAxXFwyMDRcXDAwMVxcMTkxXFwwMDBcXDE4NVxcMDAwXFxcblxcMjU0XFwwMDFcXDE5NFxcMDAwXFwyNTVcXDAwMVxcMDUzXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMlxcMDAyXFwwMDJcXDAwM1xcMDAyXFxcblxcMDA0XFwwMDJcXDAwNVxcMDAyXFwwNTJcXDAwMVxcMDE2XFwwMDFcXDAwNlxcMDAyXFwwNjVcXDAwMlxcMDA5XFwwMDJcXDAxMFxcMDAyXFxcblxcMDExXFwwMDJcXDAwN1xcMDAwXFwyMTFcXDAwMFxcMjEzXFwwMDBcXDIxNVxcMDAwXFwwMzZcXDAwMlxcMDU3XFwwMDFcXDAxMlxcMDAyXFxcblxcMDEzXFwwMDJcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA2M1xcMDAxXFwwMzdcXDAwMlxcMDgxXFwwMDBcXDAyOVxcMDAxXFxcblxcMDMwXFwwMDFcXDA3NlxcMDAxXFwwMjFcXDAwMlxcMDY2XFwwMDJcXDAwMVxcMDAwXFwwOTVcXDAwMVxcMDIzXFwwMDJcXDAzOFxcMDAxXFxcblxcMTAxXFwwMDFcXDAzOVxcMDAxXFwwMDFcXDAwMFxcMDkwXFwwMDJcXDAwMVxcMDAwXFwwMzJcXDAwMlxcMDAxXFwwMDBcXDAwOFxcMDAwXFxcblxcMDA5XFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDkxXFwwMDJcXDA0MlxcMDAyXFwwNTNcXDAwMFxcMDQ0XFwwMDJcXDE3OFxcMDAxXFxcblxcMDQ2XFwwMDJcXDA0N1xcMDAyXFwwMDFcXDAwMFxcMDI0XFwwMDBcXDA4N1xcMDAyXFwxMDRcXDAwMVxcMDUwXFwwMDJcXDA1MVxcMDAyXFxcblxcMDAxXFwwMDBcXDEwNVxcMDAxXFwwNTJcXDAwMlxcMDUzXFwwMDJcXDA1NFxcMDAyXFwwODlcXDAwMFxcMDkwXFwwMDBcXDAwMVxcMDAwXFxcblxcMjA0XFwwMDFcXDA1OFxcMDAyXFwwNTlcXDAwMlxcMDYwXFwwMDJcXDEwOVxcMDAxXFwwNjFcXDAwMlxcMDYyXFwwMDJcXDAwMVxcMDAwXFxcblxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwMDFcXDAwMFxcMjM2XFwwMDFcXDA1NFxcMDAwXFwyMzdcXDAwMVxcMDY5XFwwMDJcXDE3OFxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTYyXFwwMDBcXDE2M1xcMDAwXFwwMDFcXDAwMFxcMDc3XFwwMDJcXDA3OFxcMDAyXFxcblxcMTM0XFwwMDFcXDAyNVxcMDAwXFwwMjZcXDAwMFxcMDI3XFwwMDBcXDAzNVxcMDAxXFwwMDFcXDAwMFxcMDgyXFwwMDJcXDA4M1xcMDAyXFxcblxcMDg0XFwwMDJcXDA4NVxcMDAyXFwyMDRcXDAwMVxcMDAxXFwwMDBcXDIyMlxcMDAxXFwwODhcXDAwMlxcMDI4XFwwMDBcXDAyOVxcMDAwXFxcblxcMDMwXFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzNFxcMDAwXFwwODlcXDAwMlxcMTM2XFwwMDFcXDIyM1xcMDAxXFxcblxcMjI0XFwwMDFcXDIzOFxcMDAxXFwyMzlcXDAwMVxcMTM1XFwwMDFcXDA5MlxcMDAyXFwwOTNcXDAwMlxcMDAxXFwwMDBcXDA1M1xcMDAwXFxcblxcMDk2XFwwMDJcXDA5N1xcMDAyXFwwMjNcXDAwMFxcMDAxXFwwMDBcXDAzNVxcMDAwXFwwOThcXDAwMlxcMDAxXFwwMDBcXDAzNlxcMDAwXFxcblxcMDM3XFwwMDBcXDEwMFxcMDAyXFwwMjNcXDAwMFxcMTAyXFwwMDJcXDIyNVxcMDAxXFwyMjZcXDAwMVxcMjI3XFwwMDFcXDA0MlxcMDAxXFxcblxcMjIxXFwwMDBcXDIyMlxcMDAwXFwyMjhcXDAwMVxcMTQ2XFwwMDFcXDA3MFxcMDAxXFwwNzFcXDAwMVxcMDcyXFwwMDFcXDA3M1xcMDAxXFxcblxcMTY0XFwwMDBcXDE2NVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDU0XFwwMDBcXDI0MFxcMDAxXFxcblxcMTUzXFwwMDFcXDI0MVxcMDAxXFwxNThcXDAwMVxcMTI5XFwwMDFcXDA1OFxcMDAxXFwwODVcXDAwMVxcMDg3XFwwMDFcXDA0N1xcMDAwXFxcblxcMDQ3XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDQ3XFwwMDBcXDAwMVxcMDAwXFwxNTlcXDAwMVxcMTAyXFwwMDFcXDA0N1xcMDAwXFxcblxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFxcblxcMDU2XFwwMDBcXDA1N1xcMDAwXFwyMjlcXDAwMVxcMTAzXFwwMDBcXDAwMVxcMDAwXFwwNThcXDAwMFxcMTY0XFwwMDFcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTY1XFwwMDFcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDExOVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxNjdcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjA3XFwwMDFcXDIwOFxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE4MFxcMDAxXFxcblxcMDAxXFwwMDBcXDE4MVxcMDAxXFwxMjhcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMzFcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAyNFxcMDAwXFwwNDdcXDAwMFxcMDAxXFwwMDBcXDEzNlxcMDAwXFxcblxcMDAxXFwwMDBcXDE0OFxcMDAxXFwxODJcXDAwMVxcMDAxXFwwMDBcXDIyN1xcMDAwXFwyMjhcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIyM1xcMDAxXFxcblxcMjI0XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTA3XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE5M1xcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMjVcXDAwMFxcMDI2XFwwMDBcXDAyN1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE5NlxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxOTlcXDAwMVxcMjQ4XFwwMDBcXDAwMVxcMDAwXFwyMTJcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMTQ4XFwwMDFcXDAzNVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIxOFxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEzMFxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDJcXDAwMVxcMDAwXFwwMTZcXDAwMlxcMDAxXFwwMDBcXDA3OFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDM2XFwwMDBcXDAxN1xcMDAyXFwwMDFcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwMDdcXDAwMlxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA0OFxcMDAwXFwwNjZcXDAwMVxcMDY3XFwwMDFcXDAxNFxcMDAyXFxcblxcMDI0XFwwMDJcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTA4XFwwMDBcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDI1XFwwMDJcXDAyOFxcMDAyXFxcblxcMDAxXFwwMDBcXDAyOVxcMDAyXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI0OFxcMDAxXFwyNDlcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDQ4XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFxcblxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDlcXDAwMFxcMDMzXFwwMDJcXDAzNVxcMDAyXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFxcblxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMjAwXFwwMDBcXDEzMFxcMDAxXFwwMzRcXDAwMlxcMjAxXFwwMDBcXDA0OFxcMDAyXFxcblxcMDQzXFwwMDJcXDA0OVxcMDAyXFwxNjRcXDAwMFxcMTY1XFwwMDBcXDA2N1xcMDAyXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDA2OFxcMDAyXFxcblxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFxcblxcMDczXFwwMDJcXDA3NFxcMDAyXFwwNzVcXDAwMlxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTY2XFwwMDBcXDE2N1xcMDAwXFxcblxcMTY4XFwwMDBcXDE2OVxcMDAwXFwwODBcXDAwMlxcMDk0XFwwMDJcXDA5NVxcMDAyXFwxMDNcXDAwMFxcMDQwXFwwMDJcXDIzN1xcMDAxXFxcblxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEzNlxcMDAwXFxcblxcMTAxXFwwMDJcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTM2XFwwMDBcXDAyNFxcMDAwXFwyMDJcXDAwMFxcMTM0XFwwMDBcXDAwMVxcMDAwXFxcblxcMTM2XFwwMDBcXDEzNlxcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTAzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDU3XFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFxcblxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMTBcXDAwMFxcMjM4XFwwMDFcXDIzOVxcMDAxXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFxcblxcMTA3XFwwMDBcXDEwN1xcMDAwXFwyMDNcXDAwMFxcMjA0XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMTM2XFwwMDBcXDEzNlxcMDAwXFwwMjVcXDAwMFxcMDI2XFwwMDBcXDAyN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDExM1xcMDAwXFxcblxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFxcblxcMDYxXFwwMDBcXDE0NVxcMDAwXFwyMDNcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcMDAxXFwwMDBcXDAyNlxcMDAwXFxcblxcMDAxXFwwMDBcXDI0MFxcMDAxXFwwMDFcXDAwMFxcMjQxXFwwMDFcXDAxN1xcMDAwXFwxMDdcXDAwMFxcMDAxXFwwMDBcXDEzNlxcMDAwXFxcblxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDAwMVxcMDAwXFxcblxcMDM2XFwwMDBcXDA4OFxcMDAxXFwyNDlcXDAwMFxcMDc0XFwwMDFcXDEyM1xcMDAwXFwwMzdcXDAwMVxcMDQyXFwwMDFcXDE4M1xcMDAxXFxcblxcMjA0XFwwMDBcXDE4NFxcMDAxXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDE5OVxcMDAwXFwxOTdcXDAwMVxcMTA3XFwwMDBcXDE2NFxcMDAwXFxcblxcMTY1XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFxcblxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMTFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFxcblxcMTA4XFwwMDBcXDEwOFxcMDAwXFwwMDFcXDAwMFxcMTY2XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDE3NFxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMDhcXDAwMVxcMTQwXFwwMDFcXDE3M1xcMDAxXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEyN1xcMDAwXFxcblxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDhcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMTA4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDEyM1xcMDAxXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIzOFxcMDAxXFwyMzlcXDAwMVxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFxcblxcMTA5XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFxcblxcMTA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDEwOVxcMDAwXFxcblxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDI0MFxcMDAxXFxcblxcMDAwXFwwMDBcXDI0MVxcMDAxXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEwOVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDEwOVxcMDAwXFxcblxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFxcblxcMTM0XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFxcblxcMTEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFxcblxcMTM0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMDAwXFwwMDBcXDExMFxcMDAwXFxcblxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDA4OVxcMDAxXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDExMFxcMDAwXFxcblxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFxcblxcMTExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDAwMFxcMDAwXFxcblxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFxcblxcMDU1XFwwMDBcXDA1NlxcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFxcblxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExM1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFxcblxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFxcblxcMTEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFxcblxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFxcblxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTEzXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFxcblxcMTEzXFwwMDBcXDExM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFxcblxcMTEzXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcblxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDAxXFwwMDBcXDA3OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcblxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFxcblxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcMTQ5XFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMTI2XFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFxcblxcMTI2XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFxcblxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFxcblxcMTI2XFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFxcblxcMDAxXFwwMDBcXDEyOFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFxcblxcMDAwXFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMjhcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2MFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFxcblxcMTI4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDE1OVxcMDAwXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFxcblxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDU2XFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIxNlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIwOFxcMDAwXFwxNjZcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE0OVxcMDAwXFwxNDlcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ5XFwwMDBcXDE0OVxcMDAwXFwxNDlcXDAwMFxcMjA2XFwwMDBcXDIwOFxcMDAwXFxcblxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTQ5XFwwMDBcXDE0OVxcMDAwXFwxNDlcXDAwMFxcMTQ5XFwwMDBcXDE0OVxcMDAwXFwxNDlcXDAwMFxcMTQ5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE0OVxcMDAwXFwxNDlcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMDZcXDAwMFxcMjA2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMDZcXDAwMFxcMjA2XFwwMDBcXDIwNlxcMDAwXFwyMDZcXDAwMFxcMjA2XFwwMDBcXDIwNlxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMjA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwxNTBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTUwXFwwMDBcXDE1MFxcMDAwXFwxNTBcXDAwMFxcMTU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxNTBcXDAwMFxcMTUwXFwwMDBcXDE1MFxcMDAwXFxcblxcMTUwXFwwMDBcXDE1MFxcMDAwXFwxNTBcXDAwMFxcMTUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDIxNlxcMDAwXFwwMDBcXDAwMFxcMTUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUwXFwwMDBcXDE1MFxcMDAwXFxcblxcMDAwXFwwMDBcXDE1OVxcMDAwXFwxNTlcXDAwMFxcMTU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDBcXDE1OVxcMDAwXFxcblxcMTU5XFwwMDBcXDE1OVxcMDAwXFwxNTlcXDAwMFxcMTU5XFwwMDBcXDE1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2NlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNlxcMDAwXFxcblxcMjE2XFwwMDBcXDIxNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OVxcMDAwXFxcblxcMTU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNlxcMDAwXFwyMTZcXDAwMFxcMjE2XFwwMDBcXDIxNlxcMDAwXFxcblxcMjE2XFwwMDBcXDIxNlxcMDAwXFwyMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjZcXDAwMFxcMTY2XFwwMDBcXDE2NlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTZcXDAwMFxcMjE2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDg1XFwwMDBcXDA4NVxcMDAwXFwxNjZcXDAwMFxcMTY2XFwwMDBcXDE2NlxcMDAwXFwxNjZcXDAwMFxcMTY2XFwwMDBcXDE2NlxcMDAwXFxcblxcMTY2XFwwMDBcXDA4NVxcMDAwXFwwODVcXDAwMFxcMDg1XFwwMDBcXDA4NVxcMDAwXFwwODVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDAwMFxcMDAwXFxcblxcMTY2XFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMTY2XFwwMDBcXDE2NlxcMDAwXFwwODVcXDAwMFxcMDg1XFwwMDBcXDA4NVxcMDAwXFxcblxcMDg1XFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFxcblxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFxcblxcMDAwXFwwMDBcXDA4NVxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NVxcMDAwXFxcblxcMDg1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFxcblxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFxcblxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDU2XFwwMDBcXDA1N1xcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXDA2MVxcMDAwXFxcblxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcblxcMTg0XFwwMDBcXDA5MlxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFxcblxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFxcblxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcblxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFxcblxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFxcblxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg2XFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcblxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFxcblxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE3NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3NVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFxcblxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDMxXFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE3NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFxcblxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFxcblxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFxcblxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFxcblxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFxcblxcMDg4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDEwNlxcMDAxXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMjE2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFxcblxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwyMTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDY3XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFxcblxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFxcblxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NlxcMDAwXFxcblxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFxcblxcMjMxXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFxcblxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFxcblxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFxcblxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjEyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDBcXDIxMlxcMDAwXFwyMTJcXDAwMFxcMjEyXFwwMDBcXDIxMlxcMDAwXFxcblxcMDAwXFwwMDBcXDIxMlxcMDAwXFwyMTJcXDAwMFxcMjEyXFwwMDBcXDIxMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDBcXDIxMlxcMDAwXFxcblxcMjEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAwXFxcblxcMjEyXFwwMDBcXDIxMlxcMDAwXFwyMTJcXDAwMFxcMjEyXFwwMDBcXDIxMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAwXFxcblxcMjEyXFwwMDBcXDIxMlxcMDAwXFwyMTJcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDA2N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFxcblxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFxcblxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFxcblxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcblxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcIlxuXG5sZXQgeXljaGVjayA9IFwiXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDIwN1xcMDAwXFwwOTlcXDAwMVxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcXG5cXDA1MVxcMDAwXFwwMTRcXDAwMFxcMTQyXFwwMDBcXDEzNFxcMDAwXFwwNTVcXDAwMFxcMTkzXFwwMDFcXDEyMlxcMDAwXFwwMTlcXDAwMFxcXG5cXDAxOVxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDFcXDAyNFxcMDAwXFwwMjVcXDAwMFxcXG5cXDIxNVxcMDAxXFwwMDBcXDAwMFxcMDI4XFwwMDBcXDAyOVxcMDAwXFwwMzBcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcXG5cXDAzNFxcMDAwXFwwMzVcXDAwMFxcMDM2XFwwMDBcXDAzN1xcMDAwXFwwMDFcXDAwMVxcMDAwXFwwMDBcXDA0MFxcMDAwXFwwMTNcXDAwMlxcXG5cXDAwMFxcMDAwXFwyNTNcXDAwMFxcMDAwXFwwMDBcXDE2MlxcMDAxXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcXG5cXDAwMlxcMDAxXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDQwXFwwMDFcXDA1NlxcMDAwXFwwNTdcXDAwMFxcXG5cXDA1OFxcMDAwXFwwOTRcXDAwMVxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMjNcXDAwMVxcXG5cXDAwMFxcMDAxXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcXG5cXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNzhcXDAwMFxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMDRcXDAwMVxcXG5cXDA4MlxcMDAwXFwwMTBcXDAwMVxcMTc3XFwwMDFcXDA2MFxcMDAyXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDAwMFxcMDAwXFwwNTJcXDAwMVxcXG5cXDA2MlxcMDAyXFwwMTBcXDAwMVxcMjI0XFwwMDBcXDAxNFxcMDAxXFwyMjZcXDAwMFxcMDE3XFwwMDJcXDA5NlxcMDAwXFwwNzhcXDAwMVxcXG5cXDIzMFxcMDAwXFwyMTZcXDAwMVxcMDAwXFwwMDFcXDAzNFxcMDAyXFwxMDJcXDAwMFxcMjA5XFwwMDBcXDAwNFxcMDAxXFwyMzVcXDAwMFxcXG5cXDAyOVxcMDAxXFwwMDJcXDAwMVxcMDAwXFwwMDFcXDEwNlxcMDAwXFwwNjRcXDAwMVxcMTEzXFwwMDBcXDExM1xcMDAwXFwwMDJcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMjA5XFwwMDFcXDA1MVxcMDAxXFwwMDRcXDAwMVxcMTE5XFwwMDBcXDEyMFxcMDAwXFwxMjFcXDAwMFxcXG5cXDA5N1xcMDAyXFwxMjNcXDAwMFxcMDgwXFwwMDFcXDEyNVxcMDAwXFwwNzhcXDAwMVxcMDQ5XFwwMDJcXDAwMFxcMDAwXFwxMzFcXDAwMFxcXG5cXDAwMFxcMDAxXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAxXFwxNjlcXDAwMVxcMDY4XFwwMDJcXDA5NFxcMDAxXFwyNTRcXDAwMVxcXG5cXDE0MFxcMDAwXFwxNDBcXDAwMFxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAwMFxcMDAwXFwxNDVcXDAwMFxcXG5cXDE0N1xcMDAwXFwwODFcXDAwMVxcMDgyXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMTQ4XFwwMDBcXDE0OVxcMDAwXFwxNTBcXDAwMFxcXG5cXDE1MVxcMDAwXFwxNTJcXDAwMFxcMTUzXFwwMDBcXDE1NFxcMDAwXFwxNTVcXDAwMFxcMTU2XFwwMDBcXDE1N1xcMDAwXFwxNjFcXDAwMFxcXG5cXDE2MlxcMDAwXFwxNjNcXDAwMFxcMTY0XFwwMDBcXDE2NVxcMDAwXFwxNjZcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcXG5cXDA0NlxcMDAxXFwwMDBcXDAwMVxcMTcyXFwwMDBcXDE3M1xcMDAwXFwwMTJcXDAwMVxcMTc1XFwwMDBcXDE3NlxcMDAwXFwwMDJcXDAwMVxcXG5cXDA3OFxcMDAxXFwxNzlcXDAwMFxcMTgwXFwwMDBcXDA1MVxcMDAxXFwxODJcXDAwMFxcMDc4XFwwMDFcXDA1MVxcMDAxXFwwMDBcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjI5XFwwMDBcXDA3OFxcMDAxXFwxOTBcXDAwMFxcMTkxXFwwMDBcXDA3OFxcMDAxXFwwMDZcXDAwMlxcXG5cXDAxNVxcMDAxXFwxOTVcXDAwMFxcMTk2XFwwMDBcXDAwMFxcMDAxXFwxOThcXDAwMFxcMDAwXFwwMDFcXDA1MVxcMDAxXFwyMDFcXDAwMFxcXG5cXDIwMlxcMDAwXFwyMDNcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDlcXDAwMVxcMDM4XFwwMDFcXDA5MlxcMDAxXFwwMzhcXDAwMVxcXG5cXDIwN1xcMDAwXFwwODFcXDAwMVxcMDgyXFwwMDFcXDAwMFxcMDAxXFwwODFcXDAwMVxcMDgyXFwwMDFcXDIxNlxcMDAwXFwyMTdcXDAwMFxcXG5cXDAwMFxcMDAxXFwwMDJcXDAwMVxcMDc2XFwwMDFcXDAwM1xcMDAxXFwwNzhcXDAwMVxcMjIzXFwwMDBcXDAwNVxcMDAxXFwyMjVcXDAwMFxcXG5cXDAwN1xcMDAxXFwyMjdcXDAwMFxcMjI4XFwwMDBcXDAwMFxcMDAxXFwwODFcXDAwMVxcMDgyXFwwMDFcXDAwM1xcMDAxXFwwMzhcXDAwMVxcXG5cXDIzNFxcMDAwXFwxMTFcXDAwMVxcMDUxXFwwMDFcXDAzOFxcMDAxXFwwNzZcXDAwMVxcMjM5XFwwMDBcXDI0MFxcMDAwXFwwNTRcXDAwMlxcXG5cXDAwMFxcMDAxXFwxODlcXDAwMVxcMDAyXFwwMDFcXDExMFxcMDAxXFwwMDJcXDAwMVxcMDc4XFwwMDFcXDI0OFxcMDAwXFwwNzhcXDAwMVxcXG5cXDI1MFxcMDAwXFwwMjdcXDAwMVxcMjUyXFwwMDBcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDUxXFwwMDFcXDE0MFxcMDAxXFwwNDBcXDAwMVxcXG5cXDAwMFxcMDAxXFwxMzNcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDdcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMjZcXDAwMVxcXG5cXDA4MVxcMDAxXFwwODJcXDAwMVxcMDUwXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDE1XFwwMDFcXDAwMFxcMDAwXFwwNzhcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMDBcXDAwMFxcMDIzXFwwMDFcXDA3OFxcMDAxXFwwNzhcXDAwMVxcMDUwXFwwMDFcXDAyNFxcMDAxXFwwMDRcXDAwMVxcXG5cXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDA4MVxcMDAxXFwwODJcXDAwMVxcMDA0XFwwMDFcXDAxMFxcMDAxXFwxNTRcXDAwMVxcXG5cXDAzNFxcMDAxXFwwNzhcXDAwMVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwwNDBcXDAwMVxcMDc4XFwwMDFcXDE3MFxcMDAxXFwwMDJcXDAwMVxcXG5cXDA0MlxcMDAxXFwwMDRcXDAwMVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwMDRcXDAwMVxcMDQ3XFwwMDFcXDAwNFxcMDAxXFwwMTBcXDAwMVxcXG5cXDAwNFxcMDAxXFwwNTFcXDAwMVxcMDEwXFwwMDFcXDA1M1xcMDAxXFwwMTBcXDAwMVxcMDA0XFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcXG5cXDAzNlxcMDAxXFwwNjFcXDAwMVxcMDYxXFwwMDFcXDAxMFxcMDAxXFwwNTlcXDAwMVxcMDYwXFwwMDFcXDA3OFxcMDAxXFwwMDBcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMzRcXDAwMVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDc2XFwwMDFcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA3OFxcMDAxXFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwwNzhcXDAwMVxcMDAwXFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDA4OFxcMDAxXFwwODlcXDAwMVxcXG5cXDAwNFxcMDAxXFwwOTRcXDAwMVxcMDA0XFwwMDFcXDA3MlxcMDAxXFwwNzJcXDAwMVxcMDk1XFwwMDFcXDAxMFxcMDAxXFwwMzJcXDAwMVxcXG5cXDA5OFxcMDAxXFwwNzJcXDAwMVxcMDAwXFwwMDFcXDEwMVxcMDAxXFwwODBcXDAwMVxcMDM4XFwwMDFcXDEwNFxcMDAxXFwxMDVcXDAwMVxcXG5cXDEwNlxcMDAxXFwwMzhcXDAwMVxcMTEwXFwwMDFcXDEwOVxcMDAxXFwwMTJcXDAwMVxcMDcyXFwwMDFcXDA4MFxcMDAxXFwxMTNcXDAwMVxcXG5cXDA3MlxcMDAxXFwwMzRcXDAwMVxcMDcyXFwwMDFcXDE1OFxcMDAxXFwwNzJcXDAwMVxcMDgwXFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcXG5cXDAzNlxcMDAxXFwwNzJcXDAwMVxcMDAwXFwwMDFcXDAwNVxcMDAxXFwwMDJcXDAwMVxcMDA3XFwwMDFcXDAwMFxcMDAxXFwwNzNcXDAwMVxcXG5cXDEzMFxcMDAxXFwwODBcXDAwMVxcMDA0XFwwMDFcXDAwMlxcMDAxXFwxMzRcXDAwMVxcMTM1XFwwMDFcXDEzNlxcMDAxXFwwMDlcXDAwMVxcXG5cXDAxMFxcMDAxXFwwNDNcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDJcXDAwMVxcMDc4XFwwMDFcXDE0NFxcMDAxXFwwMDRcXDAwMVxcXG5cXDE0NlxcMDAxXFwwNzhcXDAwMVxcMDA0XFwwMDFcXDA3OFxcMDAxXFwwMDlcXDAwMVxcMDEwXFwwMDFcXDE1NFxcMDAxXFwxNTNcXDAwMVxcXG5cXDAxMFxcMDAxXFwwMDBcXDAwMVxcMTU2XFwwMDFcXDAwMlxcMDAxXFwwNzJcXDAwMVxcMTU5XFwwMDFcXDA3MlxcMDAxXFwxNjFcXDAwMVxcXG5cXDA3OFxcMDAxXFwwMDBcXDAwMFxcMTY0XFwwMDFcXDE2NVxcMDAxXFwxNjlcXDAwMVxcMTY3XFwwMDFcXDAyMVxcMDAxXFwxNzFcXDAwMVxcXG5cXDE3MVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNzZcXDAwMVxcMTc1XFwwMDFcXDE3NlxcMDAxXFwwNDNcXDAwMVxcXG5cXDA3OFxcMDAxXFwxMzVcXDAwMFxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcMTM5XFwwMDBcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMTkxXFwwMDFcXDE4OVxcMDAxXFwxOTNcXDAwMVxcXG5cXDAyOVxcMDAxXFwwNzZcXDAwMVxcMTk2XFwwMDFcXDA3OFxcMDAxXFwwNzFcXDAwMVxcMTk5XFwwMDFcXDA3MlxcMDAxXFwxOThcXDAwMVxcXG5cXDA3OFxcMDAxXFwxNTlcXDAwMFxcMjUxXFwwMDFcXDIwNVxcMDAxXFwwNzVcXDAwMVxcMjA3XFwwMDFcXDIwOFxcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwODBcXDAwMVxcMjEyXFwwMDFcXDA3MlxcMDAxXFwyMTRcXDAwMVxcMjE1XFwwMDFcXDA3MlxcMDAxXFwxMDlcXDAwMFxcXG5cXDIxOFxcMDAxXFwxMTFcXDAwMFxcMjIwXFwwMDFcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMjIzXFwwMDFcXDIyNFxcMDAxXFwyMjVcXDAwMVxcXG5cXDIyNlxcMDAxXFwyMjdcXDAwMVxcMDEwXFwwMDFcXDE4NVxcMDAwXFwyMzBcXDAwMVxcMDc2XFwwMDFcXDIzMlxcMDAxXFwyMzNcXDAwMVxcXG5cXDIzNFxcMDAxXFwwNTFcXDAwMVxcMTI4XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcMDA2XFwwMDFcXDAwNFxcMDAxXFwyNDFcXDAwMVxcXG5cXDI0MlxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMlxcMDAxXFwwNDBcXDAwMVxcMDE0XFwwMDFcXDAzN1xcMDAxXFwyMDVcXDAwMFxcXG5cXDIwNlxcMDAwXFwwNzhcXDAwMVxcMjUyXFwwMDFcXDA0NFxcMDAyXFwwMzJcXDAwMVxcMDgwXFwwMDFcXDAwMFxcMDAyXFwyMTNcXDAwMFxcXG5cXDA3OFxcMDAxXFwyMTVcXDAwMFxcMDM4XFwwMDFcXDAwNlxcMDAxXFwwMDBcXDAwMVxcMDA3XFwwMDJcXDAwMlxcMDAxXFwwODFcXDAwMVxcXG5cXDA4MlxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAxNFxcMDAxXFwwMTRcXDAwMlxcMDA0XFwwMDFcXDAxNlxcMDAyXFwwMTdcXDAwMlxcXG5cXDAxOFxcMDAyXFwwMTlcXDAwMlxcMDA0XFwwMDFcXDAwMlxcMDAxXFwwNjlcXDAwMlxcMDA1XFwwMDFcXDAyNFxcMDAyXFwwMjVcXDAwMlxcXG5cXDAxMFxcMDAxXFwwMDFcXDAwMVxcMDI4XFwwMDJcXDAyOVxcMDAyXFwwMzBcXDAwMlxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMDZcXDAwMVxcXG5cXDAzNFxcMDAyXFwwMzVcXDAwMlxcMDM2XFwwMDJcXDAzN1xcMDAyXFwwMDJcXDAwMVxcMDM5XFwwMDJcXDA0MFxcMDAyXFwwMTRcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDc4XFwwMDFcXDAwMFxcMDAxXFwwMDRcXDAwMVxcMDAyXFwwMDFcXDA0OFxcMDAyXFwwNDlcXDAwMlxcXG5cXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDAyXFwwMDFcXDA1NlxcMDAyXFwwNTdcXDAwMlxcXG5cXDAxMFxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyMTBcXDAwMFxcMDc2XFwwMDFcXDA2NFxcMDAyXFwwNjVcXDAwMlxcXG5cXDA2NlxcMDAyXFwwNjdcXDAwMlxcMDY4XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDcxXFwwMDJcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDc5XFwwMDJcXDA3MlxcMDAxXFwwMTFcXDAwMVxcXG5cXDAxMlxcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDAxMFxcMDAxXFwwODZcXDAwMlxcMDg3XFwwMDJcXDA3MlxcMDAxXFwwNzhcXDAwMVxcXG5cXDA5MFxcMDAyXFwwOTFcXDAwMlxcMDA2XFwwMDFcXDA0MFxcMDAxXFwwNzVcXDAwMVxcMDk1XFwwMDJcXDA4MFxcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwOTlcXDAwMlxcMDE0XFwwMDFcXDEwMVxcMDAyXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFwwMDJcXDAwMVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM4XFwwMDFcXDAwNFxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcXG5cXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDA3OFxcMDAxXFwwNzZcXDAwMVxcXG5cXDAwNFxcMDAxXFwwNzhcXDAwMVxcMDM0XFwwMDFcXDA4MVxcMDAxXFwwMDRcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwNzhcXDAwMVxcMDAwXFwwMDFcXDAwNFxcMDAxXFwwMDJcXDAwMVxcMDAxXFwwMDFcXDAyOFxcMDAxXFwwNjBcXDAwMVxcXG5cXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcXG5cXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDc0XFwwMDFcXDA3OFxcMDAxXFwwMDNcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNFxcMDAxXFwwMDdcXDAwMVxcXG5cXDAzN1xcMDAxXFwwNTVcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcXG5cXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDMwXFwwMDFcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcXG5cXDAxNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDA0XFwwMDFcXDAyMVxcMDAxXFwwMDNcXDAwMVxcXG5cXDAwN1xcMDAxXFwwNTBcXDAwMVxcMDgwXFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDgzXFwwMDFcXDAyOVxcMDAxXFwwMzBcXDAwMVxcXG5cXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDA1MFxcMDAxXFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMDJcXDAwMVxcMDc4XFwwMDFcXDA3NlxcMDAxXFwwMDBcXDAwMFxcXG5cXDA3OFxcMDAxXFwxMDNcXDAwMVxcMDA2XFwwMDFcXDA1MFxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMTFcXDAwMVxcXG5cXDAxMlxcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA3OFxcMDAxXFwwMDRcXDAwMVxcXG5cXDA3MVxcMDAxXFwwNzJcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwNzVcXDAwMVxcMDAwXFwwMDFcXDAwNFxcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwODBcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwNzhcXDAwMVxcXG5cXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDA0XFwwMDFcXDAwM1xcMDAxXFwwMTBcXDAwMVxcMDA2XFwwMDFcXDAxMlxcMDAxXFwwNzhcXDAwMVxcXG5cXDE1MFxcMDAxXFwxNTFcXDAwMVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMDNcXDAwMVxcXG5cXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwMDFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcXG5cXDAxMFxcMDAxXFwwMDNcXDAwMVxcMDA1XFwwMDFcXDAzOFxcMDAxXFwwMjhcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcXG5cXDA3OFxcMDAxXFwwMDRcXDAwMVxcMDQwXFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDE0XFwwMDFcXDA0NFxcMDAxXFwwNDVcXDAwMVxcXG5cXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDI4XFwwMDFcXDA3OFxcMDAxXFwwMDRcXDAwMVxcMjU0XFwwMDBcXDI1NVxcMDAwXFwwMTRcXDAwMVxcXG5cXDAzMlxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAzMlxcMDAxXFwwMzJcXDAwMVxcXG5cXDA3OFxcMDAxXFwwMzJcXDAwMVxcMDcyXFwwMDFcXDA3OFxcMDAxXFwyMTBcXDAwMVxcMjExXFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcXG5cXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwOFxcMDAxXFwwMDlcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcXG5cXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDE1XFwwMDFcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDAyMVxcMDAxXFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcXG5cXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDUwXFwwMDFcXDA3OFxcMDAxXFwwNTJcXDAwMVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwNjBcXDAwMVxcXG5cXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcXG5cXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwwNzNcXDAwMVxcMDc0XFwwMDFcXDA3NVxcMDAxXFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcXG5cXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDBcXDAwNlxcMDAxXFwwMDZcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcXG5cXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDE1XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDA3XFwwMDFcXDAwM1xcMDAxXFwwMDVcXDAwMVxcXG5cXDAwOFxcMDAxXFwwMDRcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFwwNzZcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwMDdcXDAwMVxcXG5cXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDA3NlxcMDAxXFwwNzZcXDAwMVxcMDc2XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcXG5cXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDc4XFwwMDFcXDA3NlxcMDAxXFwwMDZcXDAwMVxcMDUwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDBcXDAwMVxcXG5cXDAwNlxcMDAxXFwwNzhcXDAwMVxcMDAxXFwwMDFcXDAwNFxcMDAxXFwwMDJcXDAwMVxcMDUwXFwwMDFcXDAwMFxcMDAwXFwwMDZcXDAwMVxcXG5cXDAwOVxcMDAxXFwwMTBcXDAwMVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwwODBcXDAwMVxcMDQzXFwwMDFcXDA3NVxcMDAxXFwwMTRcXDAwMVxcXG5cXDAwNFxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcXG5cXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDBcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcXG5cXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDMyXFwwMDFcXDA3MlxcMDAxXFwwMDNcXDAwMVxcMDM0XFwwMDFcXDAwMlxcMDAxXFwwMzhcXDAwMVxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwMDRcXDAwMVxcXG5cXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAwNFxcMDAxXFwwMDZcXDAwMVxcMDcyXFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAzMlxcMDAxXFwwMDZcXDAwMVxcXG5cXDAwNlxcMDAxXFwwNzZcXDAwMVxcMDc2XFwwMDFcXDA3OFxcMDAxXFwwMDhcXDAwMVxcMDUwXFwwMDFcXDAwOFxcMDAxXFwwNzJcXDAwMVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OFxcMDAxXFwwMjJcXDAwMVxcMTU4XFwwMDBcXDAwNlxcMDAxXFwwNDFcXDAwMFxcMjExXFwwMDBcXDAwMlxcMDAxXFwxNTBcXDAwMVxcXG5cXDExOFxcMDAwXFwxNTFcXDAwMVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwxMTZcXDAwMFxcMTY2XFwwMDFcXDA3NVxcMDAxXFwwMTFcXDAwMVxcXG5cXDAxMlxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcXG5cXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcXG5cXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDA4XFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFwxNDJcXDAwMVxcXG5cXDAxNFxcMDAxXFwwMDJcXDAwMVxcMDQwXFwwMDFcXDA5NFxcMDAxXFwxNDFcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwNDRcXDAwMFxcXG5cXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMVxcXG5cXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1NVxcMjU1XFwwMzJcXDAwMVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwNDBcXDAwMVxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMDAyXFwwMDFcXDA3NVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNDBcXDAwMVxcXG5cXDA3OFxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMzhcXDAwMVxcMDM5XFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcXG5cXDAwNlxcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDI1NVxcMjU1XFwwMTBcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcXG5cXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFwwMjlcXDAwMVxcXG5cXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwNzZcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwNTBcXDAwMVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwwNTNcXDAwMVxcXG5cXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDAwMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMVxcXG5cXDAxMFxcMDAxXFwwNzFcXDAwMVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcXG5cXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwMTBcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1NVxcMjU1XFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFwwMjlcXDAwMVxcXG5cXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwwNTNcXDAwMVxcXG5cXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcXG5cXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcXG5cXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFwwMjlcXDAwMVxcXG5cXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMDBcXDAwMFxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcXG5cXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcXG5cXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFwwMjlcXDAwMVxcXG5cXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcXG5cXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDcyXFwwMDFcXDAwOVxcMDAxXFwwMTBcXDAwMVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDFcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDAwXFwwMDBcXDAyMlxcMDAxXFwwMjNcXDAwMVxcXG5cXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcXG5cXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDA4MFxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxMFxcMDAxXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFwwMjlcXDAwMVxcMDMwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcXG5cXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwNzJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcXG5cXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMTBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcXG5cXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXDAzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcXG5cXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDlcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcXG5cXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDAwNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcXG5cXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcXG5cXDAzNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcXG5cXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcXG5cXDAwOVxcMDAxXFwwMTBcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwNjBcXDAwMVxcMDYxXFwwMDFcXDA2MlxcMDAxXFwwNjNcXDAwMVxcXG5cXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDA3MlxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMDAyXFwwMDFcXDA3OFxcMDAxXFwwMDRcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMDlcXDAwMVxcMDEwXFwwMDFcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcXG5cXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwwNzJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMVxcXG5cXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcXG5cXDAxMFxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcXG5cXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAxXFwwMDRcXDAwMVxcXG5cXDAyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcXG5cXDA1OVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcXG5cXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMVxcXG5cXDA3NVxcMDAxXFwwMDRcXDAwMVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDcxXFwwMDFcXDI1NVxcMjU1XFwwMTBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwNjBcXDAwMVxcXG5cXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcXG5cXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDI5XFwwMDFcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDNcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcXG5cXDA1OVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMTFcXDAwMVxcXG5cXDAxMlxcMDAxXFwwMDBcXDAwMFxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA2NFxcMDAxXFwwNjVcXDAwMVxcXG5cXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAwMlxcMDAxXFwwNzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMDBcXDAwMFxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMDJcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNzVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAwMlxcMDAxXFwwNTNcXDAwMVxcXG5cXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcXG5cXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAxXFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwyNTVcXDI1NVxcMDAyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcXG5cXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcXG5cXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcXG5cXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcXG5cXDA1OVxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDE1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDA3NVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcXG5cXDAzNFxcMDAxXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNTFcXDAwMVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODFcXDAwMVxcXG5cXDA4MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcXG5cXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcXG5cXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcXG5cXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwwNzhcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNjBcXDAwMVxcMDYxXFwwMDFcXDA2MlxcMDAxXFwwNjNcXDAwMVxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcXG5cXDA2N1xcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDA3OFxcMDAxXFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcXG5cXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcXG5cXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcXG5cXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcXG5cXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcXG5cXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcXG5cXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcXG5cXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcXG5cXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcXG5cXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcXG5cXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcXG5cXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcXG5cXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDAwM1xcMDAxXFwwNzNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcXG5cXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcXG5cXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDAxMFxcMDAxXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcXG5cXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjhcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcXG5cXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAyOFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcXG5cXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcXG5cXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcXG5cXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcXG5cXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcXG5cXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcXG5cXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcXG5cXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwMDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcXG5cXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcXG5cXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcXG5cXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzdcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcXG5cXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcXG5cXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcXG5cXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXCJcblxubGV0IHl5bmFtZXNfY29uc3QgPSBcIlxcXG4gIEVPRlxcMDAwXFxcbiAgQ09NTUFcXDAwMFxcXG4gIERPVFxcMDAwXFxcbiAgT1BfUEFSXFwwMDBcXFxuICBDTF9QQVJcXDAwMFxcXG4gIE9QX0NVUlxcMDAwXFxcbiAgQ0xfQ1VSXFwwMDBcXFxuICBPUF9CUkFcXDAwMFxcXG4gIENMX0JSQVxcMDAwXFxcbiAgQVRcXDAwMFxcXG4gIFNFTUlDT0xPTlxcMDAwXFxcbiAgUExVU1xcMDAwXFxcbiAgTUlOVVNcXDAwMFxcXG4gIE1VTFRcXDAwMFxcXG4gIERJVlxcMDAwXFxcbiAgTU9EXFwwMDBcXFxuICBNQVhcXDAwMFxcXG4gIE1JTlxcMDAwXFxcbiAgU0lOVVNcXDAwMFxcXG4gIENPU0lOVVNcXDAwMFxcXG4gIFRBTlxcMDAwXFxcbiAgUE9XXFwwMDBcXFxuICBBQlNcXDAwMFxcXG4gIFNRUlRcXDAwMFxcXG4gIEVYUE9ORU5UXFwwMDBcXFxuICBMT0dcXDAwMFxcXG4gIE9SXFwwMDBcXFxuICBBTkRcXDAwMFxcXG4gIE5PVFxcMDAwXFxcbiAgVEhFTlxcMDAwXFxcbiAgRUxTRVxcMDAwXFxcbiAgRElGRlxcMDAwXFxcbiAgRVFVQUxcXDAwMFxcXG4gIFNNQUxMRVJcXDAwMFxcXG4gIEdSRUFURVJcXDAwMFxcXG4gIFRSVUVcXDAwMFxcXG4gIEZBTFNFXFwwMDBcXFxuICBJTkZJTklUWVxcMDAwXFxcbiAgU0hBUlBcXDAwMFxcXG4gIFVOREVSU0NPUkVcXDAwMFxcXG4gIFBJUEVcXDAwMFxcXG4gIFJBUlxcMDAwXFxcbiAgTFJBUlxcMDAwXFxcbiAgTEFSXFwwMDBcXFxuICBFTUFYXFwwMDBcXFxuICBUTUFYXFwwMDBcXFxuICBDUFVUSU1FXFwwMDBcXFxuICBUSU1FXFwwMDBcXFxuICBFVkVOVFxcMDAwXFxcbiAgTlVMTF9FVkVOVFxcMDAwXFxcbiAgQ09MT05cXDAwMFxcXG4gIE5FV0xJTkVcXDAwMFxcXG4gIEJBQ0tTTEFTSFxcMDAwXFxcbiAgU0lHTkFUVVJFXFwwMDBcXFxuICBUT0tFTlxcMDAwXFxcbiAgSU5JVFxcMDAwXFxcbiAgT0JTXFwwMDBcXFxuICBQTE9UXFwwMDBcXFxuICBQRVJUXFwwMDBcXFxuICBDT05GSUdcXDAwMFxcXG4gIEFQUExZXFwwMDBcXFxuICBERUxFVEVcXDAwMFxcXG4gIElOVFJPXFwwMDBcXFxuICBTTkFQU0hPVFxcMDAwXFxcbiAgU1RPUFxcMDAwXFxcbiAgRkxVWFxcMDAwXFxcbiAgVFJBQ0tcXDAwMFxcXG4gIEFTU0lHTlxcMDAwXFxcbiAgUFJJTlRGXFwwMDBcXFxuICBQTE9URU5UUllcXDAwMFxcXG4gIFNQRUNJRVNfT0ZcXDAwMFxcXG4gIERPXFwwMDBcXFxuICBSRVBFQVRcXDAwMFxcXG4gIEFMQVJNXFwwMDBcXFxuICBSVU5cXDAwMFxcXG4gIExFVFxcMDAwXFxcbiAgXCJcblxubGV0IHl5bmFtZXNfYmxvY2sgPSBcIlxcXG4gIElOVFxcMDAwXFxcbiAgRkxPQVRcXDAwMFxcXG4gIElEXFwwMDBcXFxuICBMQUJFTFxcMDAwXFxcbiAgU1RSSU5HXFwwMDBcXFxuICBTUEFDRVxcMDAwXFxcbiAgQ09NTUVOVFxcMDAwXFxcbiAgXCJcblxubGV0IHl5YWN0ID0gW3xcbiAgKGZ1biBfIC0+IGZhaWx3aXRoIFwicGFyc2VyXCIpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIFtdIClcbiMgMTY1NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbm5vdGVkKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBcIlxcblwiOjpfMiApXG4jIDE2NjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYW5ub3RlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICggXzE6Ol8yIClcbiMgMTY3MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbm5vdGVkKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAoIF8xOjpfMiApXG4jIDE2ODAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYW5ub3RlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAoIE5ici5GIGluZmluaXR5IClcbiMgMTY4NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICduYnIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGZsb2F0KSBpblxuICAgIE9iai5yZXByKFxuIyA2MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggTmJyLkYgXzEgKVxuIyAxNjkzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ25icikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA2MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoIE5ici5JIF8xIClcbiMgMTcwMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICduYnIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDY1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICggYWRkX3BvcyAxIExLYXBwYS5MTktfRlJFRSApXG4jIDE3MDYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA2NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoIGFkZF9wb3MgMSAoTEthcHBhLkxOS19WQUxVRSAoXzEsKCkpKSApXG4jIDE3MTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICggYWRkX3BvcyAxIExLYXBwYS5MTktfU09NRSApXG4jIDE3MTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgNjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgNSAoTEthcHBhLkxOS19UWVBFICgoXzEscmhzX3BvcyAxKSwoXzUscmhzX3BvcyA1KSkpIClcbiMgMTcyOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA3MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggYWRkX3BvcyAxIExLYXBwYS5MTktfQU5ZIClcbiMgMTczNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDMgXCJpbmNvbXBsZXRlIGxpbmsgc3RhdGVcIikpIClcbiMgMTc0MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICggW18xXSApXG4jIDE3NTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdsaW5rX3N0YXRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVzKSBpblxuICAgIE9iai5yZXByKFxuIyA3NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIDo6IF8zIClcbiMgMTc2MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlcykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVzKSBpblxuICAgIE9iai5yZXByKFxuIyA3OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzEgOjogXzUgKVxuIyAxNzcwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA4MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggTm9uZSApXG4jIDE3NzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA4MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggU29tZSBOb25lIClcbiMgMTc4NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogaW50KSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgODQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgKFNvbWUgKF8zLCByaHNfcG9zIDMpKSApXG4jIDE3OTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDg2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJpbmNvbXBsZXRlIGxpbmsgbW9kaWZpY2F0aW9uXCIpKSApXG4jIDE4MDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyA5MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICggYWRkX3BvcyAxIChTb21lIF8xKSApXG4jIDE4MDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDkyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBhZGRfcG9zIDEgTm9uZSApXG4jIDE4MTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDk2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIFtfMV0gKVxuIyAxODIyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlcykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVybmFsX3N0YXRlcykgaW5cbiAgICBPYmoucmVwcihcbiMgOTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIDo6IF8zIClcbiMgMTgzMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9zdGF0ZXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJuYWxfc3RhdGVzKSBpblxuICAgIE9iai5yZXByKFxuIyA5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfNSApXG4jIDE4NDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIE5vbmUgKVxuIyAxODQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgKF8zLCByaHNfcG9zIDMpIClcbiMgMTg1NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiaW5jb21wbGV0ZSBsaW5rIG1vZGlmaWNhdGlvblwiKSkgKVxuIyAxODY0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2xpbmtfc3RhdGVzKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbGlua19tb2RpZikgaW5cbiAgICBPYmoucmVwcihcbiMgMTEwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChfMiwgXzMpIClcbiMgMTg3MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2xpbmspKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKFwiaW52YWxpZCBsaW5raW5nIHN0YXRlIG9yIG1pc3NpbmcgJ10nXCIscmhzX3BvcyAyKSkgKVxuIyAxODgxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfbGluaykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVybmFsX3N0YXRlcykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2ludGVybmFsX21vZGlmKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF8xLCBfMikgKVxuIyAxODg5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfaW50ZXJuYWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDExOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoXCJpbnZhbGlkIGludGVybmFsIHN0YXRlIG9yIG1pc3NpbmcgJ30nXCIscmhzX3BvcyAzKSkgKVxuIyAxODk2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfaW50ZXJuYWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoXzUsIHJoc19wb3MgNSkgKVxuIyAxOTA1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTI1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoLSBfNywgcmhzX3BvcyA3KSApXG4jIDE5MTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEyNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoLSBfNSwgcmhzX3BvcyA1KSApXG4jIDE5MjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTMwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCAoQXN0LkNFUSBfMyxyaHNfcG9zIDMpIClcbiMgMTkzMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMzEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoQXN0LkNHVEUgXzUscmhzX3BvcyA1KSApXG4jIDE5NDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl90ZXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTMyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKEFzdC5DTFRFIF81LHJoc19wb3MgNSkgKVxuIyAxOTUwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfdGVzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMTMzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAoIChBc3QuQ1ZBUiBfMyxyaHNfcG9zIDMpIClcbiMgMTk1OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdjb3VudGVyX21vZGlmKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChOb25lLCBfMSkgKVxuIyAxOTY3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfY291bnRlcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2NvdW50ZXJfdGVzdCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxMzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChTb21lIF8xLCBMb2MuYW5ub3Rfd2l0aF9kdW1teSAwKSApXG4jIDE5NzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9jb3VudGVyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDcgOiAnY291bnRlcl90ZXN0KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDYgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdjb3VudGVyX21vZGlmKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzggPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE0MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggKFNvbWUgXzEsXzUpIClcbiMgMTk4OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2NvdW50ZXIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgOCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDcgOiBpbnQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzcgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2NvdW50ZXJfbW9kaWYpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMTAgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE0NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCBTb21lIChTb21lIChfMykscmhzX3BvcyAzKSxtYXRjaCBfNyB3aXRoIChhLGxvYykgLT4gU29tZSAoU29tZSAoYSksbG9jKSApXG4jIDIwMDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9jb3VudGVyX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IGludCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxNDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBTb21lIChTb21lIChfMykscmhzX3BvcyAzKSxOb25lIClcbiMgMjAxMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2NvdW50ZXJfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDggOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnc2l0ZV9saW5rKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzcgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX2ludGVybmFsKSBpblxuICAgIGxldCBfOSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTUyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9IF80IGluXG4gICAgICAgIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSBfOCBpblxuICAgICAgICBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gKVxuIyAyMDI4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDggOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3NpdGVfaW50ZXJuYWwpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9saW5rKSBpblxuICAgIGxldCBfOSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTU4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSBfNSBpblxuICAgICAgICBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSBfOCBpblxuICAgICAgICBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gKVxuIyAyMDQ1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9saW5rKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTY0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9IF80IGluXG4gICAgICAgIEFzdC5Qb3J0XG4gICAgICAgICAgeyBBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9W107XG4gICAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kPU5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IClcbiMgMjA1OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX2ludGVybmFsKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTY5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSBfNSBpblxuICAgICAgICBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdO1xuICAgICAgICAgICAgQXN0LnBvcnRfaW50OyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZD1Ob25lOyB9IClcbiMgMjA3MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzaXRlX2NvdW50ZXJfc2lnKSBpblxuICAgIE9iai5yZXByKFxuIyAxNzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggbGV0IChjb3VudGVyX3NpZ19taW4sY291bnRlcl9zaWdfbWF4KSA9IF81IGluXG4gICAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgICAgeyBBc3QuY291bnRlcl9zaWdfbmFtZT0oXzEscmhzX3BvcyAxKTtcbiAgICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19taW47XG4gICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWF4O1xuICAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQ9XG4gICAgICAgICAgICAgICAgKG1hdGNoIGNvdW50ZXJfc2lnX21pbiB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lIChOb25lLCBfKS0+IDBcbiAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSBpLF8pIC0+IGkgKTtcbiAgICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlPUFzdC5Gcm9tX29yaWdpbmFsX2FzdDtcbiAgICAgICAgICAgIH0gKVxuIyAyMDkyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxODYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggQXN0LlBvcnRcbiAgICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgICAgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZD1Ob25lOyB9IClcbiMgMjEwMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA4IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDcgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ3NpdGVfbGluaykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9pbnRlcm5hbCkgaW5cbiAgICBsZXQgXzkgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE5MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gXzQgaW5cbiAgICAgIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSBfOCBpblxuICAgICAgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ7XG4gICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gKVxuIyAyMTE5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgOCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnc2l0ZV9pbnRlcm5hbCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX2xpbmspIGluXG4gICAgbGV0IF85ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxOTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSBfNSBpblxuICAgICAgbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gXzggaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IClcbiMgMjEzNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9saW5rKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjA1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSBfNCBpblxuICAgICAgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9W107XG4gICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZDsgfSApXG4jIDIxNDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX2ludGVybmFsKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjEwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gXzUgaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdO1xuICAgICAgICAgIEFzdC5wb3J0X2ludDsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q9Tm9uZTsgfSApXG4jIDIxNjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzaXRlX2NvdW50ZXIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIxNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChjb3VudGVyX3Rlc3QsY291bnRlcl9kZWx0YSkgPSBfNSBpblxuICAgICAgQXN0LkNvdW50ZXJcbiAgICAgICAgeyBBc3QuY291bnRlcl9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QuY291bnRlcl90ZXN0OyBBc3QuY291bnRlcl9kZWx0YSB9IClcbiMgMjE3NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyMTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdOyBBc3QucG9ydF9pbnQ9W107XG4gICAgICAgICAgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZD1Ob25lOyB9IClcbiMgMjE4NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyMjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIFtdIClcbiMgMjE5MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIyNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAxIChcIk1hbGZvcm1lZCBzaXRlIGV4cHJlc3Npb25cIikpKSApXG4jIDIxOTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVyZmFjZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMjI5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfMiApXG4jIDIyMDYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnc2l0ZSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcmZhY2UpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfNCApXG4jIDIyMTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyMzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggW10gKVxuIyAyMjIxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIzNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgMSAoXCJNYWxmb3JtZWQgc2l0ZSBleHByZXNzaW9uXCIpKSkgKVxuIyAyMjI4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX3NpZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVyZmFjZV9zaWcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIzOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIDo6IF8yIClcbiMgMjIzNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2Vfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnc2l0ZV9zaWcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJmYWNlX3NpZykgaW5cbiAgICBPYmoucmVwcihcbiMgMjM5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfNCApXG4jIDIyNDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgKCBBc3QuTm9Nb2Qsc3RhcnRfcG9zIDEsXzEgKVxuIyAyMjUyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggQXN0LkNyZWF0ZSxlbmRfcG9zIDIsXzMgKVxuIyAyMjYwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIEFzdC5FcmFzZSxlbmRfcG9zIDIsXzMgKVxuIyAyMjY4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjQ5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgKCAoQXN0LkFic2VudCAocmhzX3BvcyAxKSxlbmRfcG9zIDEsXzIpIClcbiMgMjI3NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA2IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcmZhY2UpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhZ2VudF9tb2RpZikgaW5cbiAgICBPYmoucmVwcihcbiMgMjUxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgbW9kaWYscGVuZCxhbiA9IF83IGluXG4gICAgICAoQXN0LlByZXNlbnQgKChfMSxyaHNfcG9zIDEpLCBfNSwgbW9kaWYpLHBlbmQsYW4pIClcbiMgMjI4NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxMCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA5IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDYgOiBzdHJpbmcpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzkgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVyZmFjZSkgaW5cbiAgICBsZXQgXzExID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhZ2VudF9tb2RpZikgaW5cbiAgICBPYmoucmVwcihcbiMgMjU0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgbW9kaWYscGVuZCxhbiA9IF8xMSBpblxuICAgICAgKEFzdC5QcmVzZW50ICgoXzUscmhzX3BvcyA1KSwgXzksIG1vZGlmKSxwZW5kLGFuKSApXG4jIDIzMDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI1NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeXzFeXCInXCIpKSkgKVxuIyAyMzExIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjYyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAoIChBc3QuQWJzZW50IChyaHNfcG9zIDEpLGVuZF9wb3MgMSxfMikgKVxuIyAyMzE4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA2IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcmZhY2Vfc2lnKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnRfbW9kaWYpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI2NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCBsZXQgbW9kaWYscGVuZCxhbiA9IF83IGluXG4gICAgICAgIChBc3QuUHJlc2VudCAoKF8xLHJoc19wb3MgMSksIF81LCBtb2RpZikscGVuZCxhbikgKVxuIyAyMzMwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxMCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA5IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDYgOiBzdHJpbmcpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzkgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVyZmFjZV9zaWcpIGluXG4gICAgbGV0IF8xMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnRfbW9kaWYpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI2NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCBsZXQgbW9kaWYscGVuZCxhbiA9IF8xMSBpblxuICAgICAgICAoQXN0LlByZXNlbnQgKChfNSxyaHNfcG9zIDUpLCBfOSwgbW9kaWYpLHBlbmQsYW4pIClcbiMgMjM0NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI3MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgMyAoXCJNYWxmb3JtZWQgYWdlbnQgJ1wiXl8xXlwiJ1wiKSkpIClcbiMgMjM1NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhZ2VudCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiggbGV0ICh4LF8sXykgPSBfMSBpblxuICBtYXRjaCBfNCB3aXRoXG4gIHwgKHk6OnoscGVuZCxwKSAtPiAoKHg6OnkpOjp6LHBlbmQscClcbiAgfCAoW10sXyxfKSAtPlxuICAgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAoYWRkX3BvcyA0IChcImFzc2VydGlvbiBmYWlsdXJlIGluIHBhdHRlcm4gcGFyc2luZ1wiKSkpIClcbiMgMjM2OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWdlbnQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgMjgyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4oIGxldCAoeCxfLF8pID0gXzEgaW4gbGV0ICh5LHBlbmQscCkgPSBfNCBpbiAoW3hdOjp5LHBlbmQscCkgKVxuIyAyMzc3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhdHRlcm4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhZ2VudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjgzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBsZXQgKHgscGVuZCxwKSA9IF8xIGluIChbW3hdXSxwZW5kLHApIClcbiMgMjM4NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbmJyKSBpblxuICAgIE9iai5yZXByKFxuIyAyODcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLkNPTlNUIF8xKSApXG4jIDIzOTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI4OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRU1BWF9WQVIpKSApXG4jIDIzOTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI4OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVE1BWF9WQVIpKSApXG4jIDI0MDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI5MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuQ1BVVElNRSkpIClcbiMgMjQwOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb25zdGFudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI5NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBhZGRfcG9zIDUgKEFsZ19leHByLlRPS0VOX0lEIChfMykpIClcbiMgMjQxOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyAyOTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocCxfLF8pID0gXzMgaW4gYWRkX3BvcyA0IChBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBwKSApXG4jIDI0MjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMjk3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLkFMR19WQVIgKF8xKSkgKVxuIyAyNDMzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5BTEdfVkFSIChfMSkpIClcbiMgMjQ0MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjk5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAoIGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5USU1FX1ZBUikpIClcbiMgMjQ0NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzAwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRVZFTlRfVkFSKSkgKVxuIyAyNDUyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzMDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUikpIClcbiMgMjQ1OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzA2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0ICh4LF8sXykgPSBfMyBpbiB4IClcbiMgMjQ2NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvbnN0YW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzMDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAoIF8xIClcbiMgMjQ3MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhcmlhYmxlKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAoIF8xIClcbiMgMjQ4MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzEwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDUgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUFYLF8zLF81KSkgKVxuIyAyNDkwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgNSAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU4sXzMsXzUpKSApXG4jIDI1MDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMxNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuRVhQLF8zKSkgKVxuIyAyNTA4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNJTlVTLF8zKSkgKVxuIyAyNTE2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkNPU0lOVVMsXzMpKSApXG4jIDI1MjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuVEFOLF8zKSkgKVxuIyAyNTMyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLklOVCxfMykpIClcbiMgMjU0MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzI0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TUVJULF8zKSkgKVxuIyAyNTQ4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkxPRyxfMykpIClcbiMgMjU1NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzI4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5VTUlOVVMsXzMpKSApXG4jIDI1NjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMzMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoXzEsZW5kX3BvcyAxLF8yKSApXG4jIDI1NzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fbW9kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzM0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHgseSx6KSA9IF81IGluXG4gICAgICAoYWRkX3BvcyA0IChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlBPVyxfMSx4KSkseSx6KSApXG4jIDI1ODMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fbW9kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyAzMzkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI1OTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fcHJvZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX3Byb2QpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyAzNDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1PRFVMTyx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNjAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX3Byb2QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19wcm9kKSBpblxuICAgIE9iai5yZXByKFxuIyAzNDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAyNjEwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX3N1bSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX3N1bSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19wcm9kKSBpblxuICAgIE9iai5yZXByKFxuIyAzNTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTVVMVCx4LHkpLFxuICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI2MjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX3Byb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM1NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5ESVYseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjYzNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19zdW0pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19zdW0pIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjY0MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19pZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX3N1bSkgaW5cbiAgICBPYmoucmVwcihcbiMgMzY3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlNVTSx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNjU2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX2lmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjY2OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19pZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIE9iai5yZXByKFxuIyAzODAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjY3NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzggPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChpLF8sXykgPSBfMSBpblxuICAgICAgbGV0ICh0LF8sXykgPSBfNCBpblxuICAoKEFsZ19leHByLklGKGksdCxfNyksXG4gICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIChlbmRfcG9zIDcpKSxlbmRfcG9zIDcsXzgpIClcbiMgMjY5MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzg5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAoIHRydWUgKVxuIyAyNjk3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xlYW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM5MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggZmFsc2UgKVxuIyAyNzAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xlYW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzOTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0ICh4LF8sXykgPSBfMyBpbiB4IClcbiMgMjcxMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9ib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM5NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCBhZGRfcG9zIDEgQWxnX2V4cHIuVFJVRSApXG4jIDI3MTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzOTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIGFkZF9wb3MgMSBBbGdfZXhwci5GQUxTRSApXG4jIDI3MjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzk4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0JPT0xfT1AoT3BlcmF0b3IuTk9ULF8zKSkgKVxuIyAyNzMxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NtYWxsX2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF8xLGVuZF9wb3MgMSwgXzIpIClcbiMgMjczOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHJfY29tcCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuR1JFQVRFUix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNzUyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcl9jb21wKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5TTUFMTEVSLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI3NjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX2NvbXApKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDE2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkVRVUFMLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI3NzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX2NvbXApKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDIyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkRJRkYseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjc5MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHJfY29tcCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcl9jb21wKSBpblxuICAgIE9iai5yZXByKFxuIyA0MzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjc5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHJfbm9fb3IpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdib29sX2V4cHJfY29tcCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHJfbm9fb3IpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQzMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuQU5ELHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI4MTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX25vX29yKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByX25vX29yKSBpblxuICAgIE9iai5yZXByKFxuIyA0NDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI4MTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYm9vbF9leHByX25vX29yKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDQyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQk9PTF9PUChPcGVyYXRvci5PUix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyODMxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ1MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoeCxfLF8pID0gXzIgaW4geCApXG4jIDI4MzkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsc3RyaW5nKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDUyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDIgXCJQcm9ibGVtYXRpYyBib29sZWFuIGV4cHJlc3Npb25cIikpIClcbiMgMjg0NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxzdHJpbmcpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQ1NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoZmFsc2UpXG4jIDI4NTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYXJyb3cpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQ1OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKHRydWUpXG4jIDI4NTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYXJyb3cpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFsoXzEsKF8zLHJoc19wb3MgMykpXSxlbmRfcG9zIDMsXzQgKVxuIyAyODY5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA2IDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChsLHBlbmQsYW4pID0gXzcgaW4gKF8xLChfMyxyaHNfcG9zIDMpKSA6OiBsLHBlbmQsYW4gKVxuIyAyODgxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgKCBsZXQgKHAscGVuZCxhbikgPSBfMSBpbiAocCxbXSxwZW5kLGFuKSApXG4jIDI4ODggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9zaWRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwLF8sXykgPSBfMSBpblxuICAgICAgbGV0ICh0LHBlbmQsYW4pID0gXzQgaW4gKHAsIHQsIHBlbmQsIGFuKSApXG4jIDI4OTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9zaWRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3N1bV90b2tlbikgaW5cbiAgICBPYmoucmVwcihcbiMgNDcyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAodCxwZW5kLGFuKSA9IF8zIGluIChbXSwgdCwgcGVuZCwgYW4pIClcbiMgMjkwNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX3NpZGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDc0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0KGFkZF9wb3MgNCBcIk1hbGZvcm1lZCB0b2tlbiBleHByZXNzaW9uLCBJIHdhcyBleHBlY3RpbmcgYV8wIHRfMCwgLi4uIFxcXG4sIGFfbiB0X24gd2hlcmUgdF9pIGFyZSB0b2tlbnMgYW5kIGFfaSBhbnkgYWxnZWJyYWljIGZvcm11bGFcIikpIClcbiMgMjkxNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX3NpZGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA0NzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIHRva2VuIGV4cHJlc3Npb24sIEkgd2FzIGV4cGVjdGluZyBhXzAgdF8wLCAuLi4gXFxcbiwgYV9uIHRfbiB3aGVyZSB0X2kgYXJlIHRva2VucyBhbmQgYV9pIGFueSBhbGdlYnJhaWMgZm9ybXVsYVwiKSkgKVxuIyAyOTI1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfc2lkZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3J1bGVfc2lkZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fycm93KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGVfc2lkZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNDg1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGxocyxybV90b2tlbixfLF8pID0gXzEgaW5cbiAgICAgIGxldCAocmhzLGFkZF90b2tlbixwZW5kLGFuKSA9IF80IGluXG4gICAgICAoQXN0LkFycm93IHtBc3QubGhzOyBBc3Qucm1fdG9rZW47IEFzdC5yaHM7IEFzdC5hZGRfdG9rZW59LF8yLHBlbmQsYW4pIClcbiMgMjkzNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdydWxlX3NpZGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhcnJvdykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ4OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChsaHMscm1fdG9rZW4sXyxfKSA9IF8xIGluXG4gICAgICAoQXN0LkFycm93IHtBc3QubGhzOyBBc3Qucm1fdG9rZW47IEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW49W119LF8yLGVuZF9wb3MgMixfMykgKVxuIyAyOTQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fycm93KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGVfc2lkZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNDkyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHJocyxhZGRfdG9rZW4scGVuZCxhbikgPSBfMyBpblxuICAgICAgKEFzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuPVtdOyBBc3QucmhzOyBBc3QuYWRkX3Rva2VufSxfMSxwZW5kLGFuKSApXG4jIDI5NTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncnVsZV9zaWRlKSBpblxuICAgIE9iai5yZXByKFxuIyA0OTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobWl4LGRlbHRhX3Rva2VuLHBlbmQsYW4pID0gXzEgaW5cbiAgICAgIChBc3QuRWRpdCB7QXN0Lm1peDsgQXN0LmRlbHRhX3Rva2VufSxmYWxzZSxwZW5kLGFuKSApXG4jIDI5NjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUwMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICggbGV0ICh4LF8sXykgPSBfMSBpbiAoeCxOb25lKSApXG4jIDI5NzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX3dpdGhfcmFkaXVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUwMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh4LF8sXykgPSBfMSBpbiBsZXQgKHksXyxfKSA9IF80IGluICh4LCBTb21lIHkpIClcbiMgMjk4MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfd2l0aF9yYWRpdXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX3dpdGhfcmFkaXVzKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1MDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoYixwZW5kLGFuKSA9IF82IGluIChiLFNvbWUgXzMscGVuZCxhbikgKVxuIyAyOTkxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3JhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfd2l0aF9yYWRpdXMpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1MDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeCxfLF8pID0gXzEgaW4gKHgsU29tZSBfNCxlbmRfcG9zIDUsXzYpIClcbiMgMzAwMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICggbGV0IChhLHBlbmQsYW4pID0gXzEgaW4gKGEsTm9uZSxwZW5kLGFuKSApXG4jIDMwMDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdyYXRlKSBpblxuICAgIE9iai5yZXByKFxuIyA1MTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGsyLGsxLHBlbmQsYW4pID0gXzMgaW4gKGsyLGsxLE5vbmUsTm9uZSxwZW5kLGFuKSApXG4jIDMwMTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYmlyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3JhdGUpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncmF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNTE2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGsyLGsxLF8sXykgPSBfMyBpblxuICAgICAgbGV0IChrYmFjayxrYmFjazEscGVuZCxhbikgPSBfNiBpblxuICAgICAgKGsyLGsxLFNvbWUga2JhY2ssa2JhY2sxLHBlbmQsYW4pIClcbiMgMzAyOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdiaXJhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdydWxlX2NvbnRlbnQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdiaXJhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUyMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChrX2RlZixrX3VuLGtfb3Asa19vcF91bixwb3NfZW5kLF9hbm5vdCkgPSBfMiBpblxuICAgICAgbGV0IChyZXdyaXRlLGJpZGlyZWN0aW9uYWwsXyxfKSA9IF8xIGluXG4gICAgICAoe1xuICAgICAgICBBc3QucmV3cml0ZTtBc3QuYmlkaXJlY3Rpb25hbDtcbiAgICAgICAgQXN0LmtfZGVmOyBBc3Qua191bjsgQXN0Lmtfb3A7IEFzdC5rX29wX3VuO1xuICAgICAgfSxMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcG9zX2VuZCkgKVxuIyAzMDQxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdydWxlX2NvbnRlbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDIgXCJydWxlIHJhdGUgZXhwZWN0ZWRcIikpIClcbiMgMzA0OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHYscGVuZCxhbikgPSBfMyBpbiAoKF8xLHJoc19wb3MgMSksdixwZW5kLGFuKSApXG4jIDMwNTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNTM1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAodixwZW5kLGFuKSA9IF8zIGluICgoXzEscmhzX3BvcyAxKSx2LHBlbmQsYW4pIClcbiMgMzA2NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTM3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgKFwiSWxsZWdhbCBkZWZpbml0aW9uIG9mIHZhcmlhYmxlICdcIl5fMV5cIidcIikpKSApXG4jIDMwNzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU0MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIklsbGVnYWwgZGVmaW5pdGlvbiBvZiB2YXJpYWJsZSAnXCJeXzFeXCInXCIpKSkgKVxuIyAzMDg0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1NDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAxIChcImxhYmVsIGV4cGVjdGVkXCIpKSkgKVxuIyAzMDkwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1NDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICggWyBfMSxyaHNfcG9zIDEgXSApXG4jIDMwOTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaWRfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpZF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA1NDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChfMSxyaHNfcG9zIDEpIDo6IF81IClcbiMgMzEwOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpZF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyA1NTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLF8pID0gXzEgaW5cbiAgICAgIGxldCAocCxwZW5kLF8pID0gXzIgaW5cbiAgICAgICh2LEFzdC5JTklUX01JWCAocCxMb2Mub2ZfcG9zIChzdGFydF9wb3MgMikgcGVuZCkpIClcbiMgMzExOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU1NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh2LF8sXykgPSBfMSBpblxuICAgICAgbGV0IChwLHBlbmQsXykgPSBfNCBpblxuICAgICAgKHYsQXN0LklOSVRfTUlYIChwLExvYy5vZl9wb3MgKHN0YXJ0X3BvcyA0KSBwZW5kKSkgKVxuIyAzMTMwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2lkX2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU2MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh2LF8sXykgPSBfMSBpbiAodixBc3QuSU5JVF9UT0sgXzIpIClcbiMgMzEzOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU2NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh2LF8sXykgPSBfNCBpbiAodixBc3QuSU5JVF9UT0sgW18xLHJoc19wb3MgMV0pKVxuIyAzMTQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU2OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAxIFwiTWFsZm9ybWVkIGluaXRpYWwgY29uZGl0aW9uXCIpKSApXG4jIDMxNTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTc0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgKFtfMSwgcmhzX3BvcyAxXSlcbiMgMzE2MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YWx1ZV9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFsdWVfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTc1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF8xLHJoc19wb3MgMSk6Ol8zKVxuIyAzMTcxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhbHVlX2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU4MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggKFtQcmltaXRpdmVzLlN0cl9wZXhwciAoYWRkX3BvcyAxIF8xKV0sZW5kX3BvcyAxLF8yKSApXG4jIDMxNzkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIE9iai5yZXByKFxuIyA1ODIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoYSxwZW5kLHApID0gXzEgaW4gKFtQcmltaXRpdmVzLkFsZ19wZXhwciBhXSxwZW5kLHApIClcbiMgMzE4NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcl9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA1ODMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDMxOTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwcmludF9leHByX2xpc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1ODUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLGFuKSA9IF8zIGluICh2LGVuZF9wb3MgNCxhbiBAIF81KSApXG4jIDMyMDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1OTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobCxwZW5kLHApID0gXzUgaW4gKFByaW1pdGl2ZXMuU3RyX3BleHByIChfMSwgcmhzX3BvcyAxKTo6bCxwZW5kLHApIClcbiMgMzIxMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwcmludF9leHByX2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1OTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobCxwZW5kLHApID0gXzQgaW5cbiAgICAgIGxldCAodixfLF8pID0gXzEgaW5cbiAgICAgIChQcmltaXRpdmVzLkFsZ19wZXhwciB2OjpsLHBlbmQscCkgKVxuIyAzMjIzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ByaW50X2V4cHJfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgKCAoW10sc3RhcnRfcG9zIDEsXzEpIClcbiMgMzIzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU5OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8yIClcbiMgMzIzOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2MDQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoYSxwZW5kLHApID0gXzUgaW4gKEFzdC5VUERBVEUgKChfMyxyaHNfcG9zIDMpLGEpLHBlbmQscCkgKVxuIyAzMjQ4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjA2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGEscGVuZCxwKSA9IF81IGluIChBc3QuVVBEQVRFICgoXzMscmhzX3BvcyAzKSxhKSxwZW5kLHApIClcbiMgMzI1OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYwOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggKEFzdC5DRkxPV0xBQkVMIChfNSwoXzMscmhzX3BvcyAzKSksZW5kX3BvcyA1LF82KSApXG4jIDMyNjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sZWFuKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjEwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHBhdCxlcGF0LF8pID0gXzMgaW5cbiAgICAgIChBc3QuQ0ZMT1dNSVggKF80LChwYXQsTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDMpIGVwYXQpKSxlbmRfcG9zIDQsIF81KSApXG4jIDMyODAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sZWFuKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjEzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHAsXyxfKSA9IF8zIGluXG4gICAgICAoKGlmIF80IHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSxwKSBlbHNlIEFzdC5ESU5PRkYgcCksXG4gICAgICAgZW5kX3BvcyA0LF81KSApXG4jIDMyOTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sZWFuKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjE3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHAsXyxfKSA9IF8zIGluXG4gICAgICBpZiBfNiAmJiBfNCA9IFwiYWJzb2x1dGVcIiB0aGVuXG4gICAgICAgIChBc3QuRElOIChQcmltaXRpdmVzLkFCU09MVVRFLHApLGVuZF9wb3MgNixfNylcbiAgICAgIGVsc2UgaWYgXzYgJiYgXzQgPSBcInByb2JhYmlsaXR5XCIgdGhlblxuICAgICAgICAoQXN0LkRJTiAoUHJpbWl0aXZlcy5QUk9CQUJJTElUWSxwKSxlbmRfcG9zIDYsXzcpXG4gICAgICBlbHNlIGlmIF82ICYmIF80ID0gXCJyZWxhdGl2ZVwiIHRoZW5cbiAgICAgICAgKEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUscCksZW5kX3BvcyA2LF83KVxuICAgICAgZWxzZSByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgKFwiSW5jb3JyZWN0IERJTiBleHByZXNzaW9uXCIscmhzX3BvcyA0KSkgKVxuIyAzMzEyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGVfY29udGVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjI3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHJld3JpdGUsXyxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHYsXyxfKSA9IF8zIGluXG4gICAgICBBc3QuQVBQTFkodixcbiAgICAgICAgICAgICAgICAoeyBBc3QucmV3cml0ZTsgQXN0LmJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87QXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxcbiAgICAgICAgICAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDMpIHBlbmQpKSxcbiAgICAgIHBlbmQsYW5cbiAgICApXG4jIDMzMjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgNjM3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKG0scGVuZCxwKSA9IF80IGluXG4gICAgICBsZXQgKHYsXyxfKSA9IF8zIGluXG4gICAgICAoQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCAgIEFzdC5FZGl0IHtBc3QubWl4PUFzdC50b19jcmVhdGVkX21peHR1cmUgbTtcbiAgICAgICAgICAgICAgICAgICAgIEFzdC5kZWx0YV90b2tlbj1bXTt9O1xuXHRcdCAgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxcbiAgICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyA0KSBwZW5kKSksXG4gICAgICAgcGVuZCxwKSApXG4jIDMzNDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjQ5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgaW50ZXJ2ZW50aW9uIGluc3RydWN0aW9uLCBJIHdhcyBleHBlY3RpbmcgXFxcbickQUREIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKSApXG4jIDMzNTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgNjUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKG0scGVuZCxwKSA9IF80IGluXG4gICAgICBsZXQgKHYsXyxfKSA9IF8zIGluXG4gICAgICAoQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgQXN0LkVkaXQge0FzdC5taXg9QXN0LnRvX2VyYXNlZF9taXh0dXJlIG07XG4gICAgICAgICAgICAgICAgICAgQXN0LmRlbHRhX3Rva2VuPVtdO307XG5cdFx0IEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LFxuICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyA0KSBwZW5kKSksXG4gICAgICAgcGVuZCxwKSApXG4jIDMzNzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjY1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIFxcXG5leHBlY3RpbmcgJyRERUwgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpIClcbiMgMzM4NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2NjggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChzLHBlbmQscCkgPSBfMiBpbiAoQXN0LlNOQVBTSE9UIChmYWxzZSxzKSxwZW5kLHApIClcbiMgMzM5MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwcmludF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY2OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChzLF8sXykgPSBfMiBpbiAoQXN0LlNOQVBTSE9UIChfMyxzKSxlbmRfcG9zIDMsXzQpIClcbiMgMzQwMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2NzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHMscGVuZCxwKSA9IF8yIGluIChBc3QuU1RPUCBzLHBlbmQscCkgKVxuIyAzNDA4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2NzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoZixwZW5kLHApID0gXzQgaW4gbGV0IChjLF8sXykgPSBfMiBpbiAoQXN0LlBSSU5UIChmLGMpLHBlbmQscCkgKVxuIyAzNDE2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY3MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggbGV0IChjLHBlbmQscCkgPSBfMiBpbiAoQXN0LlBSSU5UIChbXSxjKSxwZW5kLHApIClcbiMgMzQyMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2NzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIChBc3QuUExPVEVOVFJZLGVuZF9wb3MgMSxfMikgKVxuIyAzNDMwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2NzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoXG4gICAgICBsZXQgKGZpbGUscGVuZCxwKSA9IF83IGluXG4gICAgICBsZXQgKHBhdCxwZW5kcCxfKSA9IF8zIGluXG4gICAgICAoQXN0LlNQRUNJRVNfT0YgKF80LGZpbGUsKHBhdCwgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDMpIHBlbmRwKSksXG4gICAgICAgcGVuZCxwKSApXG4jIDM0NDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2ODQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICBsZXQgKHYscGVuZCxwKSA9IF81IGluXG4gICBsZXQgdGsgPSAoXzEscmhzX3BvcyAxKSBpblxuICAgIChBc3QuQVBQTFkoQWxnX2V4cHIuY29uc3QgTmJyLm9uZSxcbiAgICAgICAgKHtBc3QucmV3cml0ZSA9XG4gICAgICAgICAgICAgIEFzdC5FZGl0XG4gICAgICAgICAgICAgICAgICB7QXN0Lm1peD1bXTtcbiAgICAgICAgICAgICAgICAgICBBc3QuZGVsdGFfdG9rZW4gPVxuICAgICAgICAgICAgICAgICAgICAgIFsoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUyx2LChBbGdfZXhwci5UT0tFTl9JRCBfMSxyaHNfcG9zIDEpKSxyaHNfcG9zIDEpLHRrXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAgNCkgcGVuZCkpLHBlbmQscClcbiAgIClcbiMgMzQ2OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpZGluKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2OTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgXFxcbmV4cGVjdGluZyAnSUQgPC0gYWxnX2V4cHJlc3Npb24nXCIpKSApXG4jIDM0NzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyA3MDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAyIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgXFxcbiAgIGV4cGVjdGluZyAnSUQgPC0gYWxnX2V4cHJlc3Npb24nXCIpKSApXG4jIDM0ODcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2VmZmVjdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzA5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgIChfMSlcbiMgMzQ5NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3Rfb3JfaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2lkaW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDcxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKF8xKVxuIyAzNTAxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9vcl9pZGluKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzMgKVxuIyAzNTEwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdlZmZlY3Rfb3JfaWRpbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcxNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChlLF8sXykgPSBfMSBpbiAoW2VdLGVuZF9wb3MgMixfMykgKVxuIyAzNTE4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdlZmZlY3Rfb3JfaWRpbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzE1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgKCBsZXQgKGUscCxhKSA9IF8xIGluIChbZV0scCxhKSApXG4jIDM1MjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGFydGlhbF9lZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2VmZmVjdF9vcl9pZGluKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcxNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChlLF8sXykgPSBfMSBpbiBsZXQgKGwscGVuZCxhKSA9IF80IGluIChlOjpsLHBlbmQsYSkgKVxuIyAzNTM0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpZGluKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzIwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGUsXyxfKSA9IF8xIGluIChbZV0sZW5kX3BvcyAyLF8zKSApXG4jIDM1NDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGFydGlhbF9lZmZlY3RfbGlzdF9hdF9sZWFzdF9vbmVfaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2lkaW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDcyMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICggbGV0IChlLHAsYSkgPSBfMSBpbiAoW2VdLHAsYSkgKVxuIyAzNTQ5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdpZGluKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcyMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggbGV0IChlLF8sXykgPSBfMSBpbiBsZXQgKGwscGVuZCxhKSA9IF80IGluIChlOjpsLHBlbmQsYSkgKVxuIyAzNTU4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncGFydGlhbF9lZmZlY3RfbGlzdCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcyNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMyApXG4jIDM1NjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAncGFydGlhbF9lZmZlY3RfbGlzdCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKGUsXyxfKSA9ICBfMyBpbiBlLGVuZF9wb3MgNixfNyApXG4jIDM1NzcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdlZmZlY3QpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MjggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGUsXyxfKSA9IF8xIGluIChbZV0sZW5kX3BvcyAyLF8zKSApXG4jIDM1ODUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdlZmZlY3QpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDczMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChlLF8sXykgPSBfMSBpbiBsZXQgKGwscGVuZCxhKSA9IF80IGluIChlOjpsLHBlbmQsYSkgKVxuIyAzNTk0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDczNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGUsXyxfKSA9IF8yIGluIGUgKVxuIyAzNjAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNzM2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMSBcIlByb2JsZW1hdGljIGVmZmVjdCBsaXN0XCIpKSApXG4jIDM2MDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QubW9kaWZfZXhwciBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzQwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAoIE5vbmUgKVxuIyAzNjE1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbmJyKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzQxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggU29tZSBfNCApXG4jIDM2MjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2FsYXJtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzQzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMyBcImFsYXJtIHRha2VzIGEgbnVtYmVyIGFzIGFyZ3VtZW50XCIpKSApXG4jIDM2MzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2FsYXJtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNzQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChiLHBlbmQscCkgPSBfMyBpbiAoU29tZSBiLHBlbmQscCkgKVxuIyAzNjQwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9wb3N0X2Nsb3NlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNzUwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCAoTm9uZSwgUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpLFtdKSApXG4jIDM2NDYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX3Bvc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc1MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzEpXG4jIDM2NTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX3Bvc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzU2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHByZSxfLF8pID0gXzIgaW5cbiAgICAgIGxldCAoZSxfLF8pID0gXzUgaW5cbiAgICAgIGxldCAocG9zdCxfLF8pID0gXzYgaW5cbiAgICAgIChfMSxTb21lIHByZSxlLHBvc3QpIClcbiMgMzY2NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzYxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGUsXyxfKSA9IF80IGluIGxldCAocG9zdCxfLF8pID0gXzUgaW4gKF8xLE5vbmUsZSxwb3N0KSApXG4jIDM2NzcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4pIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc2NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwcmUsXyxfKSA9IF8yIGluXG4gICAgICBsZXQgKGUsXyxfKSA9IF81IGluXG4gICAgICBsZXQgKHBvc3QsXyxfKSA9IF82IGluXG4gICAgICAoXzEsU29tZSBwcmUsZSxwb3N0KSApXG4jIDM2OTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4pIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc2OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoIGxldCAoZSxfLF8pID0gXzQgaW5cbiAgICAgICAgICBsZXQgKHBvc3QsXyxfKSA9IF81IGluXG4gICAgICAgICAgKF8xLE5vbmUsZSxwb3N0KSApXG4jIDM3MDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncnVsZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNzc2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGQgKEFzdC5SVUxFKFNvbWUgKF8xLCByaHNfcG9zIDEpLF8zKSkgKVxuIyAzNzEyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA3NzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLF8pID0gXzUgaW4gYWRkIChBc3QuREVDTEFSRSAoKF8xLHJoc19wb3MgMSksdikpIClcbiMgMzcyMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc3OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCBhZGQgKEFzdC5SVUxFIChOb25lLF8xKSkgKVxuIyAzNzI5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FnZW50X3NpZykgaW5cbiAgICBPYmoucmVwcihcbiMgNzgwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChhLF8sXykgPSBfMyBpbiBhZGQgKEFzdC5TSUcgYSkgKVxuIyAzNzM3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzgyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBhZ2VudCBzaWduYXR1cmVcIikpIClcbiMgMzc0NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc4NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGFkZCAoQXN0LlRPS0VOU0lHIChfMyxyaHNfcG9zIDMpKSApXG4jIDM3NTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc4NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAodixfLF8pID0gXzMgaW4gYWRkIChBc3QuUExPVCB2KSApXG4jIDM3NjIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3ODcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgM1xuICAgICAgICAgICAgICAgICAgXCJNYWxmb3JtZWQgcGxvdCBpbnN0cnVjdGlvbiwgXFxcbmFuIGFsZ2VicmFpYyBleHByZXNzaW9uIGlzIGV4cGVjdGVkXCIpKSApXG4jIDM3NzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDc5MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChpLHYsXyxfKSA9IF8zIGluIGFkZCAoQXN0LkRFQ0xBUkUgKGksdikpIClcbiMgMzc4MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzkzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGksdixfLF8pID0gXzMgaW4gYWRkIChBc3QuT0JTIChpLHYpKSApXG4jIDM3ODggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW5pdF9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzk1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGFsZyxpbml0KSA9IF8zIGluIGFkZCAoQXN0LklOSVQgKGFsZyxpbml0KSkgKVxuIyAzNzk2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA3OTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGFkZCAoQXN0LlBFUlQgKF8yLCByaHNfcG9zIDIpKSApXG4jIDM4MDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFsdWVfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzk4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGQgKEFzdC5DT05GSUcgKChfMyxyaHNfcG9zIDMpLF81KSkgKVxuIyAzODEzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2VudGVuY2UpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtb2RlbF9ib2R5KSBpblxuICAgIE9iai5yZXByKFxuIyA4MDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggXzIgKVxuIyAzODIxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ21vZGVsX2JvZHkpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDgwMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoIG91dHB1dCAoKSApXG4jIDM4MjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbW9kZWxfYm9keSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtb2RlbF9ib2R5KSBpblxuICAgIE9iai5yZXByKFxuIyA4MDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKCBfMiApXG4jIDM4MzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19pbnN0cnVjdGlvbiBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA4MDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMSBcIkluY29ycmVjdCBiZWdpbm5pbmcgb2Ygc2VudGVuY2UgISEhXCIpKSApXG4jIDM4NDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19pbnN0cnVjdGlvbiBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDgxNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggQXN0LlJVTiAoTG9jLmFubm90X3dpdGhfZHVtbXkgQWxnX2V4cHIuRkFMU0UpIClcbiMgMzg1MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDgxNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAocGF1c2UsXyxfKSA9IF80IGluIEFzdC5SVU4gcGF1c2UgKVxuIyAzODU5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0KSBpblxuICAgIE9iai5yZXByKFxuIyA4MTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGVmZixfLF8pID0gXzIgaW4gQXN0Lk1PRElGWSBbZWZmXSApXG4jIDM4NjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDgxNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICggQXN0LlFVSVQgKVxuIyAzODc0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDgxOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDEgXCJVbnJlY29nbml6ZWQgY29tbWFuZFwiKSkgKVxuIyAzODgwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuKCogRW50cnkgbW9kZWwgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgaW50ZXJhY3RpdmVfY29tbWFuZCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzdGFuZGFsb25lX2VmZmVjdF9saXN0ICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHN0YW5kYWxvbmVfYm9vbF9leHByICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbnxdXG5sZXQgeXl0YWJsZXMgPVxuICB7IFBhcnNpbmcuYWN0aW9ucz15eWFjdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9jb25zdD15eXRyYW5zbF9jb25zdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9ibG9jaz15eXRyYW5zbF9ibG9jaztcbiAgICBQYXJzaW5nLmxocz15eWxocztcbiAgICBQYXJzaW5nLmxlbj15eWxlbjtcbiAgICBQYXJzaW5nLmRlZnJlZD15eWRlZnJlZDtcbiAgICBQYXJzaW5nLmRnb3RvPXl5ZGdvdG87XG4gICAgUGFyc2luZy5zaW5kZXg9eXlzaW5kZXg7XG4gICAgUGFyc2luZy5yaW5kZXg9eXlyaW5kZXg7XG4gICAgUGFyc2luZy5naW5kZXg9eXlnaW5kZXg7XG4gICAgUGFyc2luZy50YWJsZXNpemU9eXl0YWJsZXNpemU7XG4gICAgUGFyc2luZy50YWJsZT15eXRhYmxlO1xuICAgIFBhcnNpbmcuY2hlY2s9eXljaGVjaztcbiAgICBQYXJzaW5nLmVycm9yX2Z1bmN0aW9uPXBhcnNlX2Vycm9yO1xuICAgIFBhcnNpbmcubmFtZXNfY29uc3Q9eXluYW1lc19jb25zdDtcbiAgICBQYXJzaW5nLm5hbWVzX2Jsb2NrPXl5bmFtZXNfYmxvY2sgfVxubGV0IG1vZGVsIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAxIGxleGZ1biBsZXhidWYgOiBBc3QucGFyc2luZ19pbnN0cnVjdGlvbiBsaXN0KVxubGV0IGludGVyYWN0aXZlX2NvbW1hbmQgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDIgbGV4ZnVuIGxleGJ1ZiA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKVxubGV0IHN0YW5kYWxvbmVfZWZmZWN0X2xpc3QgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDMgbGV4ZnVuIGxleGJ1ZiA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5tb2RpZl9leHByIGxpc3QpXG5sZXQgc3RhbmRhbG9uZV9ib29sX2V4cHIgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDQgbGV4ZnVuIGxleGJ1ZiA6IChBc3QubWl4dHVyZSxzdHJpbmcpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQpXG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICovXG4vKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICovXG4vKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4le1xuICBsZXQgYWRkX3BvcyBlIHggPVxuICAgICh4LFxuICAgIExvYy5vZl9wb3MgKFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSkgKFBhcnNpbmcucmhzX2VuZF9wb3MgZSkpXG4gIGxldCByaHNfcG9zIGkgPVxuICAgIExvYy5vZl9wb3MgKFBhcnNpbmcucmhzX3N0YXJ0X3BvcyBpKSAoUGFyc2luZy5yaHNfZW5kX3BvcyBpKVxuICBsZXQgZW5kX3BvcyA9IFBhcnNpbmcucmhzX2VuZF9wb3NcbiAgbGV0IHN0YXJ0X3BvcyA9IFBhcnNpbmcucmhzX3N0YXJ0X3Bvc1xuXG4gIGxldCBpbnRlcm5hbF9tZW1vcnkgPSByZWYgW11cbiAgbGV0IGFkZCB4ID0gaW50ZXJuYWxfbWVtb3J5IDo9IHggOjogIWludGVybmFsX21lbW9yeVxuICBsZXQgb3V0cHV0ICgpID1cbiAgICBsZXQgbyA9IExpc3QucmV2ICFpbnRlcm5hbF9tZW1vcnkgaW4gbGV0ICgpID0gaW50ZXJuYWxfbWVtb3J5IDo9IFtdIGluIG9cbiV9XG5cbiV0b2tlbiBFT0YgQ09NTUEgRE9UIE9QX1BBUiBDTF9QQVIgT1BfQ1VSIENMX0NVUiBPUF9CUkEgQ0xfQlJBIEFUIFNFTUlDT0xPTlxuJXRva2VuIFBMVVMgTUlOVVMgTVVMVCBESVYgTU9EIE1BWCBNSU4gU0lOVVMgQ09TSU5VUyBUQU4gUE9XIEFCUyBTUVJUIEVYUE9ORU5UXG4ldG9rZW4gTE9HIE9SIEFORCBOT1QgVEhFTiBFTFNFIERJRkYgRVFVQUwgU01BTExFUiBHUkVBVEVSIFRSVUUgRkFMU0UgSU5GSU5JVFlcbiV0b2tlbiBTSEFSUCBVTkRFUlNDT1JFIFBJUEUgUkFSIExSQVIgTEFSIEVNQVggVE1BWCBDUFVUSU1FIFRJTUUgRVZFTlQgTlVMTF9FVkVOVFxuJXRva2VuIENPTE9OIE5FV0xJTkUgQkFDS1NMQVNIIFNJR05BVFVSRSBUT0tFTiBJTklUIE9CUyBQTE9UIFBFUlQgQ09ORklHIEFQUExZXG4ldG9rZW4gREVMRVRFIElOVFJPIFNOQVBTSE9UIFNUT1AgRkxVWCBUUkFDSyBBU1NJR04gUFJJTlRGIFBMT1RFTlRSWSBTUEVDSUVTX09GXG4ldG9rZW4gRE8gUkVQRUFUIEFMQVJNIFJVTiBMRVRcbiV0b2tlbiA8aW50PiBJTlRcbiV0b2tlbiA8ZmxvYXQ+IEZMT0FUXG4ldG9rZW4gPHN0cmluZz4gSUQgTEFCRUwgU1RSSU5HXG4ldG9rZW4gPHN0cmluZz4gU1BBQ0UgQ09NTUVOVFxuXG4lc3RhcnQgbW9kZWxcbiV0eXBlIDxBc3QucGFyc2luZ19pbnN0cnVjdGlvbiBsaXN0PiBtb2RlbFxuXG4lc3RhcnQgaW50ZXJhY3RpdmVfY29tbWFuZFxuJXR5cGUgPChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kPiBpbnRlcmFjdGl2ZV9jb21tYW5kXG5cbiVzdGFydCBzdGFuZGFsb25lX2VmZmVjdF9saXN0XG4ldHlwZVxuICA8KEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdD4gc3RhbmRhbG9uZV9lZmZlY3RfbGlzdFxuXG4lc3RhcnQgc3RhbmRhbG9uZV9ib29sX2V4cHJcbiV0eXBlIDwoQXN0Lm1peHR1cmUsc3RyaW5nKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkPiBzdGFuZGFsb25lX2Jvb2xfZXhwclxuXG4lJVxuXG5hbm5vdGVkOlxuICB8IHsgW10gfVxuICB8IE5FV0xJTkUgYW5ub3RlZCB7IFwiXFxuXCI6OiQyIH1cbiAgfCBTUEFDRSBhbm5vdGVkIHsgJDE6OiQyIH1cbiAgfCBDT01NRU5UIGFubm90ZWQgeyAkMTo6JDIgfVxuICA7XG5cbm5icjpcbiAgfCBJTkZJTklUWSB7IE5ici5GIGluZmluaXR5IH1cbiAgfCBGTE9BVCB7IE5ici5GICQxIH1cbiAgfCBJTlQgeyBOYnIuSSAkMSB9XG4gIDtcblxubGlua19zdGF0ZTpcbiAgfCBET1QgeyBhZGRfcG9zIDEgTEthcHBhLkxOS19GUkVFIH1cbiAgfCBJTlQgeyBhZGRfcG9zIDEgKExLYXBwYS5MTktfVkFMVUUgKCQxLCgpKSkgfVxuICB8IFVOREVSU0NPUkUgeyBhZGRfcG9zIDEgTEthcHBhLkxOS19TT01FIH1cbiAgfCBJRCBhbm5vdGVkIERPVCBhbm5vdGVkIElEXG4gICAgeyBhZGRfcG9zIDUgKExLYXBwYS5MTktfVFlQRSAoKCQxLHJoc19wb3MgMSksKCQ1LHJoc19wb3MgNSkpKSB9XG4gIHwgU0hBUlAgeyBhZGRfcG9zIDEgTEthcHBhLkxOS19BTlkgfVxuICB8IElEIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAzIFwiaW5jb21wbGV0ZSBsaW5rIHN0YXRlXCIpKSB9XG4gIDtcblxubGlua19zdGF0ZXM6XG4gIHwgbGlua19zdGF0ZSBhbm5vdGVkIHsgWyQxXSB9XG4gIHwgbGlua19zdGF0ZSBhbm5vdGVkIGxpbmtfc3RhdGVzIHsgJDEgOjogJDMgfVxuICB8IGxpbmtfc3RhdGUgYW5ub3RlZCBDT01NQSBhbm5vdGVkIGxpbmtfc3RhdGVzIHsgJDEgOjogJDUgfVxuICA7XG5cbmxpbmtfbW9kaWY6XG4gIHwgeyBOb25lIH1cbiAgfCBESVYgYW5ub3RlZCBET1QgYW5ub3RlZCB7IFNvbWUgTm9uZSB9XG4gIHwgRElWIGFubm90ZWQgSU5UIGFubm90ZWQgeyBTb21lIChTb21lICgkMywgcmhzX3BvcyAzKSkgfVxuICB8IERJViBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJpbmNvbXBsZXRlIGxpbmsgbW9kaWZpY2F0aW9uXCIpKSB9XG4gIDtcblxuaW50ZXJuYWxfc3RhdGU6XG4gIHwgSUQgeyBhZGRfcG9zIDEgKFNvbWUgJDEpIH1cbiAgfCBTSEFSUCB7IGFkZF9wb3MgMSBOb25lIH1cbiAgO1xuXG5pbnRlcm5hbF9zdGF0ZXM6XG4gIHwgaW50ZXJuYWxfc3RhdGUgYW5ub3RlZCB7IFskMV0gfVxuICB8IGludGVybmFsX3N0YXRlIGFubm90ZWQgaW50ZXJuYWxfc3RhdGVzIHsgJDEgOjogJDMgfVxuICB8IGludGVybmFsX3N0YXRlIGFubm90ZWQgQ09NTUEgYW5ub3RlZCBpbnRlcm5hbF9zdGF0ZXMgeyAkMSA6OiAkNSB9XG4gIDtcblxuaW50ZXJuYWxfbW9kaWY6XG4gIHwgeyBOb25lIH1cbiAgfCBESVYgYW5ub3RlZCBJRCBhbm5vdGVkIHsgU29tZSAoJDMsIHJoc19wb3MgMykgfVxuICB8IERJViBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJpbmNvbXBsZXRlIGxpbmsgbW9kaWZpY2F0aW9uXCIpKSB9XG4gIDtcblxuc2l0ZV9saW5rOlxuICB8IGFubm90ZWQgbGlua19zdGF0ZXMgbGlua19tb2RpZiBDTF9CUkEgeyAoJDIsICQzKSB9XG4gIHwgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoXCJpbnZhbGlkIGxpbmtpbmcgc3RhdGUgb3IgbWlzc2luZyAnXSdcIixyaHNfcG9zIDIpKSB9XG4gIDtcblxuc2l0ZV9pbnRlcm5hbDpcbiAgfCBpbnRlcm5hbF9zdGF0ZXMgaW50ZXJuYWxfbW9kaWYgQ0xfQ1VSIHsgKCQxLCAkMikgfVxuICB8IGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChcImludmFsaWQgaW50ZXJuYWwgc3RhdGUgb3IgbWlzc2luZyAnfSdcIixyaHNfcG9zIDMpKSB9XG4gIDtcblxuY291bnRlcl9tb2RpZjpcbiAgfCBQTFVTIGFubm90ZWQgRVFVQUwgYW5ub3RlZCBJTlQgeyAoJDUsIHJoc19wb3MgNSkgfVxuICB8IFBMVVMgYW5ub3RlZCBFUVVBTCBhbm5vdGVkIE1JTlVTIGFubm90ZWQgSU5UIHsgKC0gJDcsIHJoc19wb3MgNykgfVxuICB8IE1JTlVTIGFubm90ZWQgRVFVQUwgYW5ub3RlZCBJTlQgeyAoLSAkNSwgcmhzX3BvcyA1KSB9XG4gIDtcblxuY291bnRlcl90ZXN0OlxuICB8IEVRVUFMIGFubm90ZWQgSU5UIHsgKEFzdC5DRVEgJDMscmhzX3BvcyAzKSB9XG4gIHwgR1JFQVRFUiBhbm5vdGVkIEVRVUFMIGFubm90ZWQgSU5UIHsgKEFzdC5DR1RFICQ1LHJoc19wb3MgNSkgfVxuICB8IFNNQUxMRVIgYW5ub3RlZCBFUVVBTCBhbm5vdGVkIElOVCB7IChBc3QuQ0xURSAkNSxyaHNfcG9zIDUpIH1cbiAgfCBFUVVBTCBhbm5vdGVkIElEIHsgKEFzdC5DVkFSICQzLHJoc19wb3MgMykgfVxuICA7XG5cbnNpdGVfY291bnRlcjpcbiAgfCBjb3VudGVyX21vZGlmIGFubm90ZWQgQ0xfQ1VSIGFubm90ZWQgeyAoTm9uZSwgJDEpIH1cbiAgfCBjb3VudGVyX3Rlc3QgYW5ub3RlZCBDTF9DVVIgYW5ub3RlZCB7IChTb21lICQxLCBMb2MuYW5ub3Rfd2l0aF9kdW1teSAwKSB9XG4gIHwgY291bnRlcl90ZXN0IGFubm90ZWQgRElWIGFubm90ZWQgY291bnRlcl9tb2RpZiBhbm5vdGVkIENMX0NVUiBhbm5vdGVkXG4gICAgeyAoU29tZSAkMSwkNSkgfVxuICA7XG5cbnNpdGVfY291bnRlcl9zaWc6XG4gICAgfCBFUVVBTCBhbm5vdGVkIElOVCAgYW5ub3RlZCBESVYgYW5ub3RlZCBjb3VudGVyX21vZGlmIGFubm90ZWQgQ0xfQ1VSIGFubm90ZWRcbiAgICAgIHsgU29tZSAoU29tZSAoJDMpLHJoc19wb3MgMyksbWF0Y2ggJDcgd2l0aCAoYSxsb2MpIC0+IFNvbWUgKFNvbWUgKGEpLGxvYykgfVxuICAgIHwgRVFVQUwgYW5ub3RlZCBJTlQgIGFubm90ZWQgQ0xfQ1VSIGFubm90ZWRcbiAgICAgICAgeyBTb21lIChTb21lICgkMykscmhzX3BvcyAzKSxOb25lIH1cbiAgICA7XG5cbiAgc2l0ZV9zaWc6XG4gICAgfCBJRCBhbm5vdGVkIE9QX0JSQSBzaXRlX2xpbmsgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2ludGVybmFsIGFubm90ZWRcbiAgICAgIHsgbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gJDQgaW5cbiAgICAgICAgbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9ICQ4IGluXG4gICAgICAgIEFzdC5Qb3J0XG4gICAgICAgICAgeyBBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ7XG4gICAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZDsgfSB9XG4gICAgfCBJRCBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIHNpdGVfaW50ZXJuYWwgYW5ub3RlZCBPUF9CUkEgc2l0ZV9saW5rIGFubm90ZWRcbiAgICAgIHsgbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9ICQ1IGluXG4gICAgICAgIGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9ICQ4IGluXG4gICAgICAgIEFzdC5Qb3J0XG4gICAgICAgICAgeyBBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ7XG4gICAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZDsgfSB9XG4gICAgfCBJRCBhbm5vdGVkIE9QX0JSQSBzaXRlX2xpbmsgYW5ub3RlZFxuICAgICAgeyBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSAkNCBpblxuICAgICAgICBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZDsgfSB9XG4gICAgfCBJRCBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIHNpdGVfaW50ZXJuYWwgYW5ub3RlZFxuICAgICAgeyBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gJDUgaW5cbiAgICAgICAgQXN0LlBvcnRcbiAgICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTtcbiAgICAgICAgICAgIEFzdC5wb3J0X2ludDsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q9Tm9uZTsgfSB9XG4gICAgfCBJRCBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIHNpdGVfY291bnRlcl9zaWdcbiAgICAgIHsgbGV0IChjb3VudGVyX3NpZ19taW4sY291bnRlcl9zaWdfbWF4KSA9ICQ1IGluXG4gICAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgICAgeyBBc3QuY291bnRlcl9zaWdfbmFtZT0oJDEscmhzX3BvcyAxKTtcbiAgICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19taW47XG4gICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWF4O1xuICAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQ9XG4gICAgICAgICAgICAgICAgKG1hdGNoIGNvdW50ZXJfc2lnX21pbiB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lIChOb25lLCBfKS0+IDBcbiAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSBpLF8pIC0+IGkgKTtcbiAgICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlPUFzdC5Gcm9tX29yaWdpbmFsX2FzdDtcbiAgICAgICAgICAgIH0gfVxuICAgIHwgSUQgYW5ub3RlZFxuICAgICAgeyBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdOyBBc3QucG9ydF9pbnQ9W107XG4gICAgICAgICAgICBBc3QucG9ydF9pbnRfbW9kPU5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kPU5vbmU7IH0gfVxuICAgIDtcblxuc2l0ZTpcbiAgfCBJRCBhbm5vdGVkIE9QX0JSQSBzaXRlX2xpbmsgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2ludGVybmFsIGFubm90ZWRcbiAgICB7IGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9ICQ0IGluXG4gICAgICBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gJDggaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IH1cbiAgfCBJRCBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIHNpdGVfaW50ZXJuYWwgYW5ub3RlZCBPUF9CUkEgc2l0ZV9saW5rIGFubm90ZWRcbiAgICB7IGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSAkNSBpblxuICAgICAgbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gJDggaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IH1cbiAgfCBJRCBhbm5vdGVkIE9QX0JSQSBzaXRlX2xpbmsgYW5ub3RlZFxuICAgIHsgbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gJDQgaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q9Tm9uZTsgQXN0LnBvcnRfbGlua19tb2Q7IH0gfVxuICB8IElEIGFubm90ZWQgT1BfQ1VSIGFubm90ZWQgc2l0ZV9pbnRlcm5hbCBhbm5vdGVkXG4gICAgeyBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gJDUgaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdO1xuICAgICAgICAgIEFzdC5wb3J0X2ludDsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q9Tm9uZTsgfSB9XG4gIHwgSUQgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2NvdW50ZXJcbiAgICB7IGxldCAoY291bnRlcl90ZXN0LGNvdW50ZXJfZGVsdGEpID0gJDUgaW5cbiAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgIHsgQXN0LmNvdW50ZXJfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LmNvdW50ZXJfdGVzdDsgQXN0LmNvdW50ZXJfZGVsdGEgfSB9XG4gIHwgSUQgYW5ub3RlZFxuICAgIHsgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpO0FzdC5wb3J0X2xpbms9W107IEFzdC5wb3J0X2ludD1bXTtcbiAgICAgICAgICBBc3QucG9ydF9pbnRfbW9kPU5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kPU5vbmU7IH0gfVxuICA7XG5cbmludGVyZmFjZTpcbiAgfCB7IFtdIH1cbiAgfCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAxIChcIk1hbGZvcm1lZCBzaXRlIGV4cHJlc3Npb25cIikpKSB9XG4gIHwgc2l0ZSBpbnRlcmZhY2UgeyAkMSA6OiAkMiB9XG4gIHwgc2l0ZSBDT01NQSBhbm5vdGVkIGludGVyZmFjZSB7ICQxIDo6ICQ0IH1cbiAgO1xuXG5pbnRlcmZhY2Vfc2lnOlxuICAgIHwgeyBbXSB9XG4gICAgfCBlcnJvclxuICAgICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgMSAoXCJNYWxmb3JtZWQgc2l0ZSBleHByZXNzaW9uXCIpKSkgfVxuICAgIHwgc2l0ZV9zaWcgaW50ZXJmYWNlX3NpZyB7ICQxIDo6ICQyIH1cbiAgICB8IHNpdGVfc2lnIENPTU1BIGFubm90ZWQgaW50ZXJmYWNlX3NpZyB7ICQxIDo6ICQ0IH1cbiAgICA7XG5cbmFnZW50X21vZGlmOlxuICB8IGFubm90ZWQgeyBBc3QuTm9Nb2Qsc3RhcnRfcG9zIDEsJDEgfVxuICB8IGFubm90ZWQgUExVUyBhbm5vdGVkIHsgQXN0LkNyZWF0ZSxlbmRfcG9zIDIsJDMgfVxuICB8IGFubm90ZWQgTUlOVVMgYW5ub3RlZCB7IEFzdC5FcmFzZSxlbmRfcG9zIDIsJDMgfVxuICA7XG5cbmFnZW50OlxuICB8IERPVCBhbm5vdGVkIHsgKEFzdC5BYnNlbnQgKHJoc19wb3MgMSksZW5kX3BvcyAxLCQyKSB9XG4gIHwgSUQgYW5ub3RlZCBPUF9QQVIgYW5ub3RlZCBpbnRlcmZhY2UgQ0xfUEFSIGFnZW50X21vZGlmXG4gICAgeyBsZXQgbW9kaWYscGVuZCxhbiA9ICQ3IGluXG4gICAgICAoQXN0LlByZXNlbnQgKCgkMSxyaHNfcG9zIDEpLCAkNSwgbW9kaWYpLHBlbmQsYW4pIH1cbiAgfCBJRCBhbm5vdGVkIENPTE9OIGFubm90ZWQgSUQgYW5ub3RlZCBPUF9QQVIgYW5ub3RlZCBpbnRlcmZhY2UgQ0xfUEFSIGFnZW50X21vZGlmXG4gICAgeyBsZXQgbW9kaWYscGVuZCxhbiA9ICQxMSBpblxuICAgICAgKEFzdC5QcmVzZW50ICgoJDUscmhzX3BvcyA1KSwgJDksIG1vZGlmKSxwZW5kLGFuKSB9XG4gIHwgSUQgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeJDFeXCInXCIpKSkgfVxuICA7XG5cbmFnZW50X3NpZzpcbiAgICB8IERPVCBhbm5vdGVkIHsgKEFzdC5BYnNlbnQgKHJoc19wb3MgMSksZW5kX3BvcyAxLCQyKSB9XG4gICAgfCBJRCBhbm5vdGVkIE9QX1BBUiBhbm5vdGVkIGludGVyZmFjZV9zaWcgQ0xfUEFSIGFnZW50X21vZGlmXG4gICAgICB7IGxldCBtb2RpZixwZW5kLGFuID0gJDcgaW5cbiAgICAgICAgKEFzdC5QcmVzZW50ICgoJDEscmhzX3BvcyAxKSwgJDUsIG1vZGlmKSxwZW5kLGFuKSB9XG4gICAgfCBJRCBhbm5vdGVkIENPTE9OIGFubm90ZWQgSUQgYW5ub3RlZCBPUF9QQVIgYW5ub3RlZCBpbnRlcmZhY2Vfc2lnIENMX1BBUiBhZ2VudF9tb2RpZlxuICAgICAgeyBsZXQgbW9kaWYscGVuZCxhbiA9ICQxMSBpblxuICAgICAgICAoQXN0LlByZXNlbnQgKCgkNSxyaHNfcG9zIDUpLCAkOSwgbW9kaWYpLHBlbmQsYW4pIH1cbiAgICB8IElEIGFubm90ZWQgZXJyb3JcbiAgICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIDMgKFwiTWFsZm9ybWVkIGFnZW50ICdcIl4kMV5cIidcIikpKSB9XG4gICAgO1xucGF0dGVybjpcbiAgfCBhZ2VudCBDT01NQSBhbm5vdGVkIHBhdHRlcm5cbnsgbGV0ICh4LF8sXykgPSAkMSBpblxuICBtYXRjaCAkNCB3aXRoXG4gIHwgKHk6OnoscGVuZCxwKSAtPiAoKHg6OnkpOjp6LHBlbmQscClcbiAgfCAoW10sXyxfKSAtPlxuICAgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAoYWRkX3BvcyA0IChcImFzc2VydGlvbiBmYWlsdXJlIGluIHBhdHRlcm4gcGFyc2luZ1wiKSkpIH1cbiAgfCBhZ2VudCBCQUNLU0xBU0ggYW5ub3RlZCBwYXR0ZXJuXG57IGxldCAoeCxfLF8pID0gJDEgaW4gbGV0ICh5LHBlbmQscCkgPSAkNCBpbiAoW3hdOjp5LHBlbmQscCkgfVxuICB8IGFnZW50IHsgbGV0ICh4LHBlbmQscCkgPSAkMSBpbiAoW1t4XV0scGVuZCxwKSB9XG4gIDtcblxuY29uc3RhbnQ6XG4gIHwgbmJyIHsgYWRkX3BvcyAxIChBbGdfZXhwci5DT05TVCAkMSkgfVxuICB8IEVNQVggeyBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRU1BWF9WQVIpKSB9XG4gIHwgVE1BWCB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5UTUFYX1ZBUikpIH1cbiAgfCBDUFVUSU1FIHsgYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkNQVVRJTUUpKSB9XG4gIDtcblxudmFyaWFibGU6XG4gIHwgUElQRSBhbm5vdGVkIElEIGFubm90ZWQgUElQRSB7IGFkZF9wb3MgNSAoQWxnX2V4cHIuVE9LRU5fSUQgKCQzKSkgfVxuICB8IFBJUEUgYW5ub3RlZCBwYXR0ZXJuIFBJUEVcbiAgICB7IGxldCAocCxfLF8pID0gJDMgaW4gYWRkX3BvcyA0IChBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBwKSB9XG4gIHwgSUQgeyBhZGRfcG9zIDEgKEFsZ19leHByLkFMR19WQVIgKCQxKSkgfVxuICB8IExBQkVMIHsgYWRkX3BvcyAxIChBbGdfZXhwci5BTEdfVkFSICgkMSkpIH1cbiAgfCBUSU1FIHsgYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLlRJTUVfVkFSKSkgfVxuICB8IEVWRU5UIHsgYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVWRU5UX1ZBUikpIH1cbiAgfCBOVUxMX0VWRU5UXG4gICAgeyBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIpKSB9XG4gIDtcblxuc21hbGxfYWxnX2V4cHI6XG4gIHwgT1BfUEFSIGFubm90ZWQgYWxnX2V4cHIgQ0xfUEFSIHsgbGV0ICh4LF8sXykgPSAkMyBpbiB4IH1cbiAgfCBjb25zdGFudCB7ICQxIH1cbiAgfCB2YXJpYWJsZSB7ICQxIH1cbiAgfCBNQVggYW5ub3RlZCBzbWFsbF9hbGdfZXhwciBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDUgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUFYLCQzLCQ1KSkgfVxuICB8IE1JTiBhbm5vdGVkIHNtYWxsX2FsZ19leHByIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgNSAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU4sJDMsJDUpKSB9XG4gIHwgRVhQT05FTlQgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuRVhQLCQzKSkgfVxuICB8IFNJTlVTIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNJTlVTLCQzKSkgfVxuICB8IENPU0lOVVMgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuQ09TSU5VUywkMykpIH1cbiAgfCBUQU4gYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuVEFOLCQzKSkgfVxuICB8IEFCUyBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5JTlQsJDMpKSB9XG4gIHwgU1FSVCBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TUVJULCQzKSkgfVxuICB8IExPRyBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5MT0csJDMpKSB9XG4gIHwgTUlOVVMgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuVU1JTlVTLCQzKSkgfVxuICA7XG5cbmFsZ19leHByX3VwX3RvX21vZDpcbiAgfCBzbWFsbF9hbGdfZXhwciBhbm5vdGVkIHsgKCQxLGVuZF9wb3MgMSwkMikgfVxuICB8IHNtYWxsX2FsZ19leHByIGFubm90ZWQgUE9XIGFubm90ZWQgYWxnX2V4cHJfdXBfdG9fbW9kXG4gICAgeyBsZXQgKHgseSx6KSA9ICQ1IGluXG4gICAgICAoYWRkX3BvcyA0IChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlBPVywkMSx4KSkseSx6KSB9XG4gIDtcblxuYWxnX2V4cHJfdXBfdG9fcHJvZDpcbiAgfCBhbGdfZXhwcl91cF90b19tb2QgeyAkMSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9fcHJvZCBNT0QgYW5ub3RlZCBhbGdfZXhwcl91cF90b19tb2RcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1PRFVMTyx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICA7XG5cbmFsZ19leHByX3VwX3RvX3N1bTpcbiAgfCBhbGdfZXhwcl91cF90b19wcm9kIHsgJDEgfVxuICB8IGFsZ19leHByX3VwX3RvX3N1bSBNVUxUIGFubm90ZWQgYWxnX2V4cHJfdXBfdG9fcHJvZFxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NVUxULHgseSksXG4gICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgfCBhbGdfZXhwcl91cF90b19zdW0gRElWIGFubm90ZWQgYWxnX2V4cHJfdXBfdG9fcHJvZFxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5ESVYseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgO1xuXG5hbGdfZXhwcl91cF90b19pZjpcbiAgfCBhbGdfZXhwcl91cF90b19zdW0geyAkMSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgUExVUyBhbm5vdGVkIGFsZ19leHByX3VwX3RvX3N1bVxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5TVU0seCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgfCBhbGdfZXhwcl91cF90b19pZiBNSU5VUyBhbm5vdGVkIGFsZ19leHByX3VwX3RvX3N1bVxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUyx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuXG5hbGdfZXhwcjpcbiAgfCBhbGdfZXhwcl91cF90b19pZiB7ICQxIH1cbiAgfCBib29sX2V4cHIgVEhFTiBhbm5vdGVkIGFsZ19leHByIEVMU0UgYW5ub3RlZCBzbWFsbF9hbGdfZXhwciBhbm5vdGVkXG4gICAgeyBsZXQgKGksXyxfKSA9ICQxIGluXG4gICAgICBsZXQgKHQsXyxfKSA9ICQ0IGluXG4gICgoQWxnX2V4cHIuSUYoaSx0LCQ3KSxcbiAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgKGVuZF9wb3MgNykpLGVuZF9wb3MgNywkOCkgfVxuICA7XG5cbmJvb2xlYW46XG4gIHwgVFJVRSB7IHRydWUgfVxuICB8IEZBTFNFIHsgZmFsc2UgfVxuICA7XG5cbnNtYWxsX2Jvb2xfZXhwcjpcbiAgfCBPUF9QQVIgYW5ub3RlZCBib29sX2V4cHIgQ0xfUEFSIHsgbGV0ICh4LF8sXykgPSAkMyBpbiB4IH1cbiAgfCBUUlVFIHsgYWRkX3BvcyAxIEFsZ19leHByLlRSVUUgfVxuICB8IEZBTFNFIHsgYWRkX3BvcyAxIEFsZ19leHByLkZBTFNFIH1cbiAgfCBOT1QgYW5ub3RlZCBzbWFsbF9ib29sX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQk9PTF9PUChPcGVyYXRvci5OT1QsJDMpKSB9XG4gIDtcblxuYm9vbF9leHByX2NvbXA6XG4gIHwgc21hbGxfYm9vbF9leHByIGFubm90ZWQgeyAoJDEsZW5kX3BvcyAxLCAkMikgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIEdSRUFURVIgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5HUkVBVEVSLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgU01BTExFUiBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLlNNQUxMRVIseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgfCBhbGdfZXhwcl91cF90b19pZiBFUVVBTCBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkVRVUFMLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgRElGRiBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkRJRkYseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgO1xuXG5ib29sX2V4cHJfbm9fb3I6XG4gIHwgYm9vbF9leHByX2NvbXAgeyAkMSB9XG4gIHwgYm9vbF9leHByX2NvbXAgQU5EIGFubm90ZWQgYm9vbF9leHByX25vX29yXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQk9PTF9PUChPcGVyYXRvci5BTkQseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgO1xuXG5ib29sX2V4cHI6XG4gIHwgYm9vbF9leHByX25vX29yIHsgJDEgfVxuICB8IGJvb2xfZXhwcl9ub19vciBPUiBhbm5vdGVkIGJvb2xfZXhwclxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuT1IseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgO1xuXG5zdGFuZGFsb25lX2Jvb2xfZXhwcjpcbiAgfCBhbm5vdGVkIGJvb2xfZXhwciBFT0YgeyBsZXQgKHgsXyxfKSA9ICQyIGluIHggfVxuICB8IGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMiBcIlByb2JsZW1hdGljIGJvb2xlYW4gZXhwcmVzc2lvblwiKSkgfVxuICA7XG5cbmFycm93OlxuICB8IFJBUiB7ZmFsc2V9XG4gIHwgTFJBUiB7dHJ1ZX1cbiAgO1xuXG5zdW1fdG9rZW46XG4gIHwgc21hbGxfYWxnX2V4cHIgYW5ub3RlZCBJRCBhbm5vdGVkIHsgWygkMSwoJDMscmhzX3BvcyAzKSldLGVuZF9wb3MgMywkNCB9XG4gIHwgc21hbGxfYWxnX2V4cHIgYW5ub3RlZCBJRCBhbm5vdGVkIENPTU1BIGFubm90ZWQgc3VtX3Rva2VuXG4gICAgeyBsZXQgKGwscGVuZCxhbikgPSAkNyBpbiAoJDEsKCQzLHJoc19wb3MgMykpIDo6IGwscGVuZCxhbiB9XG4gIDtcblxucnVsZV9zaWRlOlxuICB8IHBhdHRlcm4geyBsZXQgKHAscGVuZCxhbikgPSAkMSBpbiAocCxbXSxwZW5kLGFuKSB9XG4gIHwgcGF0dGVybiBQSVBFIGFubm90ZWQgc3VtX3Rva2VuXG4gICAgeyBsZXQgKHAsXyxfKSA9ICQxIGluXG4gICAgICBsZXQgKHQscGVuZCxhbikgPSAkNCBpbiAocCwgdCwgcGVuZCwgYW4pIH1cbiAgfCBQSVBFIGFubm90ZWQgc3VtX3Rva2VuIHsgbGV0ICh0LHBlbmQsYW4pID0gJDMgaW4gKFtdLCB0LCBwZW5kLCBhbikgfVxuICB8IHBhdHRlcm4gUElQRSBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0KGFkZF9wb3MgNCBcIk1hbGZvcm1lZCB0b2tlbiBleHByZXNzaW9uLCBJIHdhcyBleHBlY3RpbmcgYV8wIHRfMCwgLi4uIFxcXG4sIGFfbiB0X24gd2hlcmUgdF9pIGFyZSB0b2tlbnMgYW5kIGFfaSBhbnkgYWxnZWJyYWljIGZvcm11bGFcIikpIH1cbiAgfCBQSVBFIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIHRva2VuIGV4cHJlc3Npb24sIEkgd2FzIGV4cGVjdGluZyBhXzAgdF8wLCAuLi4gXFxcbiwgYV9uIHRfbiB3aGVyZSB0X2kgYXJlIHRva2VucyBhbmQgYV9pIGFueSBhbGdlYnJhaWMgZm9ybXVsYVwiKSkgfVxuICA7XG5cbnJ1bGVfY29udGVudDpcbiAgfCBydWxlX3NpZGUgYXJyb3cgYW5ub3RlZCBydWxlX3NpZGVcbiAgICB7IGxldCAobGhzLHJtX3Rva2VuLF8sXykgPSAkMSBpblxuICAgICAgbGV0IChyaHMsYWRkX3Rva2VuLHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIChBc3QuQXJyb3cge0FzdC5saHM7IEFzdC5ybV90b2tlbjsgQXN0LnJoczsgQXN0LmFkZF90b2tlbn0sJDIscGVuZCxhbikgfVxuICB8IHJ1bGVfc2lkZSBhcnJvdyBhbm5vdGVkXG4gICAgeyBsZXQgKGxocyxybV90b2tlbixfLF8pID0gJDEgaW5cbiAgICAgIChBc3QuQXJyb3cge0FzdC5saHM7IEFzdC5ybV90b2tlbjsgQXN0LnJocz1bXTsgQXN0LmFkZF90b2tlbj1bXX0sJDIsZW5kX3BvcyAyLCQzKSB9XG4gIHwgYXJyb3cgYW5ub3RlZCBydWxlX3NpZGVcbiAgICB7IGxldCAocmhzLGFkZF90b2tlbixwZW5kLGFuKSA9ICQzIGluXG4gICAgICAoQXN0LkFycm93IHtBc3QubGhzPVtdOyBBc3Qucm1fdG9rZW49W107IEFzdC5yaHM7IEFzdC5hZGRfdG9rZW59LCQxLHBlbmQsYW4pIH1cbiAgfCBydWxlX3NpZGVcbiAgICB7IGxldCAobWl4LGRlbHRhX3Rva2VuLHBlbmQsYW4pID0gJDEgaW5cbiAgICAgIChBc3QuRWRpdCB7QXN0Lm1peDsgQXN0LmRlbHRhX3Rva2VufSxmYWxzZSxwZW5kLGFuKSB9XG4gIDtcblxuYWxnX3dpdGhfcmFkaXVzOlxuICB8IGFsZ19leHByIHsgbGV0ICh4LF8sXykgPSAkMSBpbiAoeCxOb25lKSB9XG4gIHwgYWxnX2V4cHIgQ09MT04gYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh4LF8sXykgPSAkMSBpbiBsZXQgKHksXyxfKSA9ICQ0IGluICh4LCBTb21lIHkpIH1cbiAgO1xuXG5yYXRlOlxuICB8IE9QX0NVUiBhbm5vdGVkIGFsZ193aXRoX3JhZGl1cyBDTF9DVVIgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0IChiLHBlbmQsYW4pID0gJDYgaW4gKGIsU29tZSAkMyxwZW5kLGFuKSB9XG4gIHwgYWxnX2V4cHIgT1BfQ1VSIGFubm90ZWQgYWxnX3dpdGhfcmFkaXVzIENMX0NVUiBhbm5vdGVkXG4gICAgeyBsZXQgKHgsXyxfKSA9ICQxIGluICh4LFNvbWUgJDQsZW5kX3BvcyA1LCQ2KSB9XG4gIHwgYWxnX2V4cHIgeyBsZXQgKGEscGVuZCxhbikgPSAkMSBpbiAoYSxOb25lLHBlbmQsYW4pIH1cbiAgO1xuXG5iaXJhdGU6XG4gIHwgQVQgYW5ub3RlZCByYXRlIHsgbGV0IChrMixrMSxwZW5kLGFuKSA9ICQzIGluIChrMixrMSxOb25lLE5vbmUscGVuZCxhbikgfVxuICB8IEFUIGFubm90ZWQgcmF0ZSBDT01NQSBhbm5vdGVkIHJhdGVcbiAgICB7IGxldCAoazIsazEsXyxfKSA9ICQzIGluXG4gICAgICBsZXQgKGtiYWNrLGtiYWNrMSxwZW5kLGFuKSA9ICQ2IGluXG4gICAgICAoazIsazEsU29tZSBrYmFjayxrYmFjazEscGVuZCxhbikgfVxuICA7XG5cbnJ1bGU6XG4gIHwgcnVsZV9jb250ZW50IGJpcmF0ZVxuICAgIHsgbGV0IChrX2RlZixrX3VuLGtfb3Asa19vcF91bixwb3NfZW5kLF9hbm5vdCkgPSAkMiBpblxuICAgICAgbGV0IChyZXdyaXRlLGJpZGlyZWN0aW9uYWwsXyxfKSA9ICQxIGluXG4gICAgICAoe1xuICAgICAgICBBc3QucmV3cml0ZTtBc3QuYmlkaXJlY3Rpb25hbDtcbiAgICAgICAgQXN0LmtfZGVmOyBBc3Qua191bjsgQXN0Lmtfb3A7IEFzdC5rX29wX3VuO1xuICAgICAgfSxMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcG9zX2VuZCkgfVxuICB8IHJ1bGVfY29udGVudCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDIgXCJydWxlIHJhdGUgZXhwZWN0ZWRcIikpIH1cbiAgO1xuXG52YXJpYWJsZV9kZWNsYXJhdGlvbjpcbiAgfCBMQUJFTCBhbm5vdGVkIGFsZ19leHByIHsgbGV0ICh2LHBlbmQsYW4pID0gJDMgaW4gKCgkMSxyaHNfcG9zIDEpLHYscGVuZCxhbikgfVxuICB8IElEIGFubm90ZWQgYWxnX2V4cHIgeyBsZXQgKHYscGVuZCxhbikgPSAkMyBpbiAoKCQxLHJoc19wb3MgMSksdixwZW5kLGFuKSB9XG4gIHwgTEFCRUwgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIklsbGVnYWwgZGVmaW5pdGlvbiBvZiB2YXJpYWJsZSAnXCJeJDFeXCInXCIpKSkgfVxuICB8IElEIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyAoXCJJbGxlZ2FsIGRlZmluaXRpb24gb2YgdmFyaWFibGUgJ1wiXiQxXlwiJ1wiKSkpIH1cbiAgfCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDEgKFwibGFiZWwgZXhwZWN0ZWRcIikpKSB9XG4gIDtcblxuaWRfbGlzdDpcbiAgfCBJRCBhbm5vdGVkIHsgWyAkMSxyaHNfcG9zIDEgXSB9XG4gIHwgSUQgYW5ub3RlZCBDT01NQSBhbm5vdGVkIGlkX2xpc3QgeyAoJDEscmhzX3BvcyAxKSA6OiAkNSB9XG4gIDtcblxuaW5pdF9kZWNsYXJhdGlvbjpcbiAgfCBhbGdfZXhwciBwYXR0ZXJuXG4gICAgeyBsZXQgKHYsXyxfKSA9ICQxIGluXG4gICAgICBsZXQgKHAscGVuZCxfKSA9ICQyIGluXG4gICAgICAodixBc3QuSU5JVF9NSVggKHAsTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDIpIHBlbmQpKSB9XG4gIHwgYWxnX2V4cHIgT1BfUEFSIGFubm90ZWQgcGF0dGVybiBDTF9QQVIgYW5ub3RlZFxuICAgIHsgbGV0ICh2LF8sXykgPSAkMSBpblxuICAgICAgbGV0IChwLHBlbmQsXykgPSAkNCBpblxuICAgICAgKHYsQXN0LklOSVRfTUlYIChwLExvYy5vZl9wb3MgKHN0YXJ0X3BvcyA0KSBwZW5kKSkgfVxuICB8IGFsZ19leHByIGlkX2xpc3RcbiAgICB7IGxldCAodixfLF8pID0gJDEgaW4gKHYsQXN0LklOSVRfVE9LICQyKSB9XG4vKlxuICB8IElEIGFubm90ZWQgT1BfQ1VSIGFubm90ZWQgaW5pdF9kZWNsYXJhdGlvbiBDTF9DVVIgYW5ub3RlZFxuICAgIHsgbGV0IChfLGFsZyxpbml0KSA9ICQ1IGluIChTb21lICgkMSxyaHNfcG9zIDEpLGFsZyxpbml0KSB9XG4qL1xuICB8IElEIExBUiBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKHYsXyxfKSA9ICQ0IGluICh2LEFzdC5JTklUX1RPSyBbJDEscmhzX3BvcyAxXSl9XG4gIHwgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMSBcIk1hbGZvcm1lZCBpbml0aWFsIGNvbmRpdGlvblwiKSkgfVxuICA7XG5cbnZhbHVlX2xpc3Q6XG4gIHwgU1RSSU5HIGFubm90ZWQge1skMSwgcmhzX3BvcyAxXX1cbiAgfCBTVFJJTkcgYW5ub3RlZCB2YWx1ZV9saXN0IHsoJDEscmhzX3BvcyAxKTo6JDN9XG4gIDtcblxubm9uZW1wdHlfcHJpbnRfZXhwcjpcbiAgfCBTVFJJTkcgYW5ub3RlZFxuICAgIHsgKFtQcmltaXRpdmVzLlN0cl9wZXhwciAoYWRkX3BvcyAxICQxKV0sZW5kX3BvcyAxLCQyKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9faWZcbiAgICB7IGxldCAoYSxwZW5kLHApID0gJDEgaW4gKFtQcmltaXRpdmVzLkFsZ19wZXhwciBhXSxwZW5kLHApIH1cbiAgfCBwcmludF9leHByX2xpc3QgeyAkMSB9XG4gIHwgT1BfUEFSIGFubm90ZWQgcHJpbnRfZXhwcl9saXN0IENMX1BBUiBhbm5vdGVkXG4gICAgeyBsZXQgKHYsXyxhbikgPSAkMyBpbiAodixlbmRfcG9zIDQsYW4gQCAkNSkgfVxuICA7XG5cbnByaW50X2V4cHJfbGlzdDpcbiAgfCBTVFJJTkcgYW5ub3RlZCBET1QgYW5ub3RlZCBub25lbXB0eV9wcmludF9leHByXG4gICAgeyBsZXQgKGwscGVuZCxwKSA9ICQ1IGluIChQcmltaXRpdmVzLlN0cl9wZXhwciAoJDEsIHJoc19wb3MgMSk6OmwscGVuZCxwKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgRE9UIGFubm90ZWQgbm9uZW1wdHlfcHJpbnRfZXhwclxuICAgIHsgbGV0IChsLHBlbmQscCkgPSAkNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSAkMSBpblxuICAgICAgKFByaW1pdGl2ZXMuQWxnX3BleHByIHY6OmwscGVuZCxwKSB9XG4gIDtcblxucHJpbnRfZXhwcjpcbiAgfCBhbm5vdGVkIHsgKFtdLHN0YXJ0X3BvcyAxLCQxKSB9XG4gIHwgYW5ub3RlZCBub25lbXB0eV9wcmludF9leHByIHsgJDIgfVxuICA7XG5cbmVmZmVjdDpcbiAgfCBBU1NJR04gYW5ub3RlZCBJRCBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKGEscGVuZCxwKSA9ICQ1IGluIChBc3QuVVBEQVRFICgoJDMscmhzX3BvcyAzKSxhKSxwZW5kLHApIH1cbiAgfCBBU1NJR04gYW5ub3RlZCBMQUJFTCBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKGEscGVuZCxwKSA9ICQ1IGluIChBc3QuVVBEQVRFICgoJDMscmhzX3BvcyAzKSxhKSxwZW5kLHApIH1cbiAgfCBUUkFDSyBhbm5vdGVkIExBQkVMIGFubm90ZWQgYm9vbGVhbiBhbm5vdGVkXG4gICAgeyAoQXN0LkNGTE9XTEFCRUwgKCQ1LCgkMyxyaHNfcG9zIDMpKSxlbmRfcG9zIDUsJDYpIH1cbiAgfCBUUkFDSyBhbm5vdGVkIHBhdHRlcm4gYm9vbGVhbiBhbm5vdGVkXG4gICAgeyBsZXQgKHBhdCxlcGF0LF8pID0gJDMgaW5cbiAgICAgIChBc3QuQ0ZMT1dNSVggKCQ0LChwYXQsTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDMpIGVwYXQpKSxlbmRfcG9zIDQsICQ1KSB9XG4gIHwgRkxVWCBhbm5vdGVkIG5vbmVtcHR5X3ByaW50X2V4cHIgYm9vbGVhbiBhbm5vdGVkXG4gICAgeyBsZXQgKHAsXyxfKSA9ICQzIGluXG4gICAgICAoKGlmICQ0IHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSxwKSBlbHNlIEFzdC5ESU5PRkYgcCksXG4gICAgICAgZW5kX3BvcyA0LCQ1KSB9XG4gIHwgRkxVWCBhbm5vdGVkIG5vbmVtcHR5X3ByaW50X2V4cHIgU1RSSU5HIGFubm90ZWQgYm9vbGVhbiBhbm5vdGVkXG4gICAgeyBsZXQgKHAsXyxfKSA9ICQzIGluXG4gICAgICBpZiAkNiAmJiAkNCA9IFwiYWJzb2x1dGVcIiB0aGVuXG4gICAgICAgIChBc3QuRElOIChQcmltaXRpdmVzLkFCU09MVVRFLHApLGVuZF9wb3MgNiwkNylcbiAgICAgIGVsc2UgaWYgJDYgJiYgJDQgPSBcInByb2JhYmlsaXR5XCIgdGhlblxuICAgICAgICAoQXN0LkRJTiAoUHJpbWl0aXZlcy5QUk9CQUJJTElUWSxwKSxlbmRfcG9zIDYsJDcpXG4gICAgICBlbHNlIGlmICQ2ICYmICQ0ID0gXCJyZWxhdGl2ZVwiIHRoZW5cbiAgICAgICAgKEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUscCksZW5kX3BvcyA2LCQ3KVxuICAgICAgZWxzZSByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgKFwiSW5jb3JyZWN0IERJTiBleHByZXNzaW9uXCIscmhzX3BvcyA0KSkgfVxuICB8IEFQUExZIGFubm90ZWQgYWxnX2V4cHIgcnVsZV9jb250ZW50XG4gICAgeyBsZXQgKHJld3JpdGUsXyxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHYsXyxfKSA9ICQzIGluXG4gICAgICBBc3QuQVBQTFkodixcbiAgICAgICAgICAgICAgICAoeyBBc3QucmV3cml0ZTsgQXN0LmJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87QXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxcbiAgICAgICAgICAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDMpIHBlbmQpKSxcbiAgICAgIHBlbmQsYW5cbiAgICB9XG4gIHwgSU5UUk8gYW5ub3RlZCBhbGdfZXhwciBwYXR0ZXJuXG4gICAgeyBsZXQgKG0scGVuZCxwKSA9ICQ0IGluXG4gICAgICBsZXQgKHYsXyxfKSA9ICQzIGluXG4gICAgICAoQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCAgIEFzdC5FZGl0IHtBc3QubWl4PUFzdC50b19jcmVhdGVkX21peHR1cmUgbTtcbiAgICAgICAgICAgICAgICAgICAgIEFzdC5kZWx0YV90b2tlbj1bXTt9O1xuXHRcdCAgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxcbiAgICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyA0KSBwZW5kKSksXG4gICAgICAgcGVuZCxwKSB9XG4gIHwgSU5UUk8gYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgZXhwZWN0aW5nIFxcXG4nJEFERCBhbGdfZXhwcmVzc2lvbiBrYXBwYV9leHByZXNzaW9uJ1wiKSkgfVxuICB8IERFTEVURSBhbm5vdGVkIGFsZ19leHByIHBhdHRlcm5cbiAgICB7IGxldCAobSxwZW5kLHApID0gJDQgaW5cbiAgICAgIGxldCAodixfLF8pID0gJDMgaW5cbiAgICAgIChBc3QuQVBQTFkodixcbiAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCBBc3QuRWRpdCB7QXN0Lm1peD1Bc3QudG9fZXJhc2VkX21peHR1cmUgbTtcbiAgICAgICAgICAgICAgICAgICBBc3QuZGVsdGFfdG9rZW49W107fTtcblx0XHQgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sXG4gICAgICAgICAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDQpIHBlbmQpKSxcbiAgICAgICBwZW5kLHApIH1cbiAgfCBERUxFVEUgYW5ub3RlZCBlcnJvclxuICAgICAgICAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgaW50ZXJ2ZW50aW9uIGluc3RydWN0aW9uLCBJIHdhcyBcXFxuZXhwZWN0aW5nICckREVMIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKSB9XG4gIHwgU05BUFNIT1QgcHJpbnRfZXhwciB7IGxldCAocyxwZW5kLHApID0gJDIgaW4gKEFzdC5TTkFQU0hPVCAoZmFsc2UscykscGVuZCxwKSB9XG4gIHwgU05BUFNIT1QgcHJpbnRfZXhwciBib29sZWFuIGFubm90ZWQgeyBsZXQgKHMsXyxfKSA9ICQyIGluIChBc3QuU05BUFNIT1QgKCQzLHMpLGVuZF9wb3MgMywkNCkgfVxuICB8IFNUT1AgcHJpbnRfZXhwciB7IGxldCAocyxwZW5kLHApID0gJDIgaW4gKEFzdC5TVE9QIHMscGVuZCxwKSB9XG4gIHwgUFJJTlRGIHByaW50X2V4cHIgR1JFQVRFUiBwcmludF9leHByXG4gICAgeyBsZXQgKGYscGVuZCxwKSA9ICQ0IGluIGxldCAoYyxfLF8pID0gJDIgaW4gKEFzdC5QUklOVCAoZixjKSxwZW5kLHApIH1cbiAgfCBQUklOVEYgcHJpbnRfZXhwciB7IGxldCAoYyxwZW5kLHApID0gJDIgaW4gKEFzdC5QUklOVCAoW10sYykscGVuZCxwKSB9XG4gIHwgUExPVEVOVFJZIGFubm90ZWQgeyAoQXN0LlBMT1RFTlRSWSxlbmRfcG9zIDEsJDIpIH1cbiAgfCBTUEVDSUVTX09GIGFubm90ZWQgcGF0dGVybiBib29sZWFuIGFubm90ZWQgR1JFQVRFUiBwcmludF9leHByXG4gICAge1xuICAgICAgbGV0IChmaWxlLHBlbmQscCkgPSAkNyBpblxuICAgICAgbGV0IChwYXQscGVuZHAsXykgPSAkMyBpblxuICAgICAgKEFzdC5TUEVDSUVTX09GICgkNCxmaWxlLChwYXQsIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAzKSBwZW5kcCkpLFxuICAgICAgIHBlbmQscCkgfVxuICA7XG5cbmlkaW46XG58IElEIGFubm90ZWQgTEFSIGFubm90ZWQgYWxnX2V4cHIge1xuICAgbGV0ICh2LHBlbmQscCkgPSAkNSBpblxuICAgbGV0IHRrID0gKCQxLHJoc19wb3MgMSkgaW5cbiAgICAoQXN0LkFQUExZKEFsZ19leHByLmNvbnN0IE5ici5vbmUsXG4gICAgICAgICh7QXN0LnJld3JpdGUgPVxuICAgICAgICAgICAgICBBc3QuRWRpdFxuICAgICAgICAgICAgICAgICAge0FzdC5taXg9W107XG4gICAgICAgICAgICAgICAgICAgQXN0LmRlbHRhX3Rva2VuID1cbiAgICAgICAgICAgICAgICAgICAgICBbKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMsdiwoQWxnX2V4cHIuVE9LRU5fSUQgJDEscmhzX3BvcyAxKSkscmhzX3BvcyAxKSx0a107XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LCBMb2Mub2ZfcG9zIChzdGFydF9wb3MgIDQpIHBlbmQpKSxwZW5kLHApXG4gICB9XG58IElEIGFubm90ZWQgTEFSIGVycm9yXG4gICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIFxcXG5leHBlY3RpbmcgJ0lEIDwtIGFsZ19leHByZXNzaW9uJ1wiKSkgfVxufCBJRCBlcnJvclxuICAgICAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIDIgXCJNYWxmb3JtZWQgaW50ZXJ2ZW50aW9uIGluc3RydWN0aW9uLCBJIHdhcyBcXFxuICAgZXhwZWN0aW5nICdJRCA8LSBhbGdfZXhwcmVzc2lvbidcIikpIH07XG47XG5cbmVmZmVjdF9vcl9pZGluOlxuICB8IGVmZmVjdCB7JDF9XG4gIHwgaWRpbiB7JDF9XG5cbnBhcnRpYWxfZWZmZWN0X2xpc3Q6XG4gIHwgT1BfUEFSIGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdCBDTF9QQVIgYW5ub3RlZCB7ICQzIH1cbiAgfCBlZmZlY3Rfb3JfaWRpbiBTRU1JQ09MT04gYW5ub3RlZCB7IGxldCAoZSxfLF8pID0gJDEgaW4gKFtlXSxlbmRfcG9zIDIsJDMpIH1cbiAgfCBlZmZlY3Rfb3JfaWRpbiB7IGxldCAoZSxwLGEpID0gJDEgaW4gKFtlXSxwLGEpIH1cbiAgfCBlZmZlY3Rfb3JfaWRpbiBTRU1JQ09MT04gYW5ub3RlZCBwYXJ0aWFsX2VmZmVjdF9saXN0XG4gICAgeyBsZXQgKGUsXyxfKSA9ICQxIGluIGxldCAobCxwZW5kLGEpID0gJDQgaW4gKGU6OmwscGVuZCxhKSB9XG5cbnBhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW46XG4gICAgICB8IGlkaW4gU0VNSUNPTE9OIGFubm90ZWQgeyBsZXQgKGUsXyxfKSA9ICQxIGluIChbZV0sZW5kX3BvcyAyLCQzKSB9XG4gICAgICB8IGlkaW4geyBsZXQgKGUscCxhKSA9ICQxIGluIChbZV0scCxhKSB9XG4gICAgICB8IGlkaW4gU0VNSUNPTE9OIGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdFxuICAgICAgICAgIHsgbGV0IChlLF8sXykgPSAkMSBpbiBsZXQgKGwscGVuZCxhKSA9ICQ0IGluIChlOjpsLHBlbmQsYSkgfVxuXG5lZmZlY3RfbGlzdDpcbiAgfCBPUF9QQVIgYW5ub3RlZCBwYXJ0aWFsX2VmZmVjdF9saXN0IENMX1BBUiBhbm5vdGVkIHsgJDMgfVxuICB8IE9QX1BBUiBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3QgQ0xfUEFSIGFubm90ZWQgU0VNSUNPTE9OIGFubm90ZWQge2xldCAoZSxfLF8pID0gICQzIGluIGUsZW5kX3BvcyA2LCQ3IH1cbiAgfCBlZmZlY3QgU0VNSUNPTE9OIGFubm90ZWQgeyBsZXQgKGUsXyxfKSA9ICQxIGluIChbZV0sZW5kX3BvcyAyLCQzKSB9XG4gIHwgZWZmZWN0IFNFTUlDT0xPTiBhbm5vdGVkIGVmZmVjdF9saXN0XG4gICAgeyBsZXQgKGUsXyxfKSA9ICQxIGluIGxldCAobCxwZW5kLGEpID0gJDQgaW4gKGU6OmwscGVuZCxhKSB9XG4gIDtcblxuc3RhbmRhbG9uZV9lZmZlY3RfbGlzdDpcbiAgfCBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3QgRU9GIHsgbGV0IChlLF8sXykgPSAkMiBpbiBlIH1cbiAgfCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDEgXCJQcm9ibGVtYXRpYyBlZmZlY3QgbGlzdFwiKSkgfVxuICA7XG5cbnBlcnR1cmJhdGlvbl9hbGFybTpcbiAgfCBhbm5vdGVkIHsgTm9uZSB9XG4gIHwgYW5ub3RlZCBBTEFSTSBhbm5vdGVkIG5iciBhbm5vdGVkIHsgU29tZSAkNCB9XG4gIHwgYW5ub3RlZCBBTEFSTSBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDMgXCJhbGFybSB0YWtlcyBhIG51bWJlciBhcyBhcmd1bWVudFwiKSkgfVxuICA7XG5cbnBlcnR1cmJhdGlvbl9wb3N0X2Nsb3NlZDpcbiAgfCBSRVBFQVQgYW5ub3RlZCBib29sX2V4cHIgeyBsZXQgKGIscGVuZCxwKSA9ICQzIGluIChTb21lIGIscGVuZCxwKSB9XG5cbnBlcnR1cmJhdGlvbl9wb3N0OlxuICB8IHsgKE5vbmUsIFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSxbXSkgfVxuICB8IHBlcnR1cmJhdGlvbl9wb3N0X2Nsb3NlZCB7JDF9XG4gIDtcblxucGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uOlxuICB8IHBlcnR1cmJhdGlvbl9hbGFybSBib29sX2V4cHIgRE8gYW5ub3RlZCBlZmZlY3RfbGlzdCBwZXJ0dXJiYXRpb25fcG9zdFxuICAgIHsgbGV0IChwcmUsXyxfKSA9ICQyIGluXG4gICAgICBsZXQgKGUsXyxfKSA9ICQ1IGluXG4gICAgICBsZXQgKHBvc3QsXyxfKSA9ICQ2IGluXG4gICAgICAoJDEsU29tZSBwcmUsZSxwb3N0KSB9XG4gIHwgcGVydHVyYmF0aW9uX2FsYXJtIERPIGFubm90ZWQgZWZmZWN0X2xpc3QgcGVydHVyYmF0aW9uX3Bvc3RcbiAgICB7IGxldCAoZSxfLF8pID0gJDQgaW4gbGV0IChwb3N0LF8sXykgPSAkNSBpbiAoJDEsTm9uZSxlLHBvc3QpIH1cblxuICB8IHBlcnR1cmJhdGlvbl9hbGFybSBib29sX2V4cHIgRE8gYW5ub3RlZCBwYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluIHBlcnR1cmJhdGlvbl9wb3N0X2Nsb3NlZFxuICAgIHsgbGV0IChwcmUsXyxfKSA9ICQyIGluXG4gICAgICBsZXQgKGUsXyxfKSA9ICQ1IGluXG4gICAgICBsZXQgKHBvc3QsXyxfKSA9ICQ2IGluXG4gICAgICAoJDEsU29tZSBwcmUsZSxwb3N0KSB9XG4gIHwgcGVydHVyYmF0aW9uX2FsYXJtIERPIGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdF9hdF9sZWFzdF9vbmVfaWRpbiBwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWRcbiAgICAgICAgeyBsZXQgKGUsXyxfKSA9ICQ0IGluXG4gICAgICAgICAgbGV0IChwb3N0LF8sXykgPSAkNSBpblxuICAgICAgICAgICgkMSxOb25lLGUscG9zdCkgfVxuICA7XG5cbnNlbnRlbmNlOlxuICB8IExBQkVMIGFubm90ZWQgcnVsZVxuICAgIHsgYWRkIChBc3QuUlVMRShTb21lICgkMSwgcmhzX3BvcyAxKSwkMykpIH1cbiAgfCBMQUJFTCBhbm5vdGVkIEVRVUFMIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAodixfLF8pID0gJDUgaW4gYWRkIChBc3QuREVDTEFSRSAoKCQxLHJoc19wb3MgMSksdikpIH1cbiAgfCBydWxlIHsgYWRkIChBc3QuUlVMRSAoTm9uZSwkMSkpIH1cbiAgfCBTSUdOQVRVUkUgYW5ub3RlZCBhZ2VudF9zaWcgeyBsZXQgKGEsXyxfKSA9ICQzIGluIGFkZCAoQXN0LlNJRyBhKSB9XG4gIHwgU0lHTkFUVVJFIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGFnZW50IHNpZ25hdHVyZVwiKSkgfVxuICB8IFRPS0VOIGFubm90ZWQgSUQgYW5ub3RlZCB7IGFkZCAoQXN0LlRPS0VOU0lHICgkMyxyaHNfcG9zIDMpKSB9XG4gIHwgUExPVCBhbm5vdGVkIGFsZ19leHByIHsgbGV0ICh2LF8sXykgPSAkMyBpbiBhZGQgKEFzdC5QTE9UIHYpIH1cbiAgfCBQTE9UIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgM1xuICAgICAgICAgICAgICAgICAgXCJNYWxmb3JtZWQgcGxvdCBpbnN0cnVjdGlvbiwgXFxcbmFuIGFsZ2VicmFpYyBleHByZXNzaW9uIGlzIGV4cGVjdGVkXCIpKSB9XG4gIHwgTEVUIGFubm90ZWQgdmFyaWFibGVfZGVjbGFyYXRpb25cbiAgICB7IGxldCAoaSx2LF8sXykgPSAkMyBpbiBhZGQgKEFzdC5ERUNMQVJFIChpLHYpKSB9XG4gIHwgT0JTIGFubm90ZWQgdmFyaWFibGVfZGVjbGFyYXRpb24geyBsZXQgKGksdixfLF8pID0gJDMgaW4gYWRkIChBc3QuT0JTIChpLHYpKSB9XG4gIHwgSU5JVCBhbm5vdGVkIGluaXRfZGVjbGFyYXRpb25cbiAgICB7IGxldCAoYWxnLGluaXQpID0gJDMgaW4gYWRkIChBc3QuSU5JVCAoYWxnLGluaXQpKSB9XG4gIHwgUEVSVCBwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24geyBhZGQgKEFzdC5QRVJUICgkMiwgcmhzX3BvcyAyKSkgfVxuICB8IENPTkZJRyBhbm5vdGVkIFNUUklORyBhbm5vdGVkIHZhbHVlX2xpc3RcbiAgICB7IGFkZCAoQXN0LkNPTkZJRyAoKCQzLHJoc19wb3MgMyksJDUpKSB9XG4gIDtcblxubW9kZWxfYm9keTpcbiAgfCBzZW50ZW5jZSBtb2RlbF9ib2R5IHsgJDIgfVxuICB8IEVPRiB7IG91dHB1dCAoKSB9XG4gIDtcblxubW9kZWw6XG4gIHwgYW5ub3RlZCBtb2RlbF9ib2R5IHsgJDIgfVxuICB8IGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDEgXCJJbmNvcnJlY3QgYmVnaW5uaW5nIG9mIHNlbnRlbmNlICEhIVwiKSkgfVxuICA7XG5cbmludGVyYWN0aXZlX2NvbW1hbmQ6XG4gIHwgYW5ub3RlZCBSVU4gYW5ub3RlZCBTRU1JQ09MT04geyBBc3QuUlVOIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBBbGdfZXhwci5GQUxTRSkgfVxuICB8IGFubm90ZWQgUlVOIGFubm90ZWQgYm9vbF9leHByIFNFTUlDT0xPTiB7IGxldCAocGF1c2UsXyxfKSA9ICQ0IGluIEFzdC5SVU4gcGF1c2UgfVxuICB8IGFubm90ZWQgZWZmZWN0IFNFTUlDT0xPTiB7IGxldCAoZWZmLF8sXykgPSAkMiBpbiBBc3QuTU9ESUZZIFtlZmZdIH1cbiAgfCBhbm5vdGVkIEVPRiB7IEFzdC5RVUlUIH1cbiAgfCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDEgXCJVbnJlY29nbml6ZWQgY29tbWFuZFwiKSkgfVxuICA7XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgYXBwZW5kX3RvX2FzdF9jb21waWwgcmV2X2luc3RyIGNvbXBpbCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biByIC0+IGZ1bmN0aW9uXG4gICAgICB8IEFzdC5SVUxFIHJ1IC0+IHsgciB3aXRoIEFzdC5ydWxlcyA9IHJ1IDo6IHIuQXN0LnJ1bGVzIH1cbiAgICAgIHwgQXN0LlNJRyBhZyAtPiB7IHIgd2l0aCBBc3Quc2lnbmF0dXJlcyA9IGFnIDo6IHIuQXN0LnNpZ25hdHVyZXMgfVxuICAgICAgfCBBc3QuVE9LRU5TSUcgc3RyX3BvcyAtPiB7IHIgd2l0aCBBc3QudG9rZW5zID0gc3RyX3BvcyA6OiByLkFzdC50b2tlbnMgfVxuICAgICAgfCBBc3QuVk9MU0lHICh2b2xfdHlwZSwgdm9sLCB2b2xfcGFyYW0pIC0+XG4gICAgICAgIHsgciB3aXRoIEFzdC52b2x1bWVzID0gKHZvbF90eXBlLCB2b2wsIHZvbF9wYXJhbSkgOjogci5Bc3Qudm9sdW1lcyB9XG4gICAgICB8IEFzdC5JTklUIChhbGcsIGluaXRfdCkgLT5cbiAgICAgICAgeyByIHdpdGggQXN0LmluaXQgPSAoYWxnLCBpbml0X3QpIDo6IHIuQXN0LmluaXQgfVxuICAgICAgfCBBc3QuREVDTEFSRSB2YXIgLT4geyByIHdpdGggQXN0LnZhcmlhYmxlcyA9IHZhciA6OiByLkFzdC52YXJpYWJsZXMgfVxuICAgICAgfCBBc3QuT0JTICgoKGxibCwgcG9zKSwgXykgYXMgdmFyKSAtPlxuICAgICAgICAoKmZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCBzaG9ydGN1dCBmb3IgJXZhciArICVwbG90KilcbiAgICAgICAge1xuICAgICAgICAgIHIgd2l0aFxuICAgICAgICAgIEFzdC52YXJpYWJsZXMgPSB2YXIgOjogci5Bc3QudmFyaWFibGVzO1xuICAgICAgICAgIEFzdC5vYnNlcnZhYmxlcyA9IChBbGdfZXhwci5BTEdfVkFSIGxibCwgcG9zKSA6OiByLkFzdC5vYnNlcnZhYmxlcztcbiAgICAgICAgfVxuICAgICAgfCBBc3QuUExPVCBleHByIC0+IHsgciB3aXRoIEFzdC5vYnNlcnZhYmxlcyA9IGV4cHIgOjogci5Bc3Qub2JzZXJ2YWJsZXMgfVxuICAgICAgfCBBc3QuUEVSVCAoKGFsYXJtLCBwcmUsIGVmZmVjdCwgb3B0KSwgcG9zKSAtPlxuICAgICAgICB7XG4gICAgICAgICAgciB3aXRoXG4gICAgICAgICAgQXN0LnBlcnR1cmJhdGlvbnMgPVxuICAgICAgICAgICAgKChhbGFybSwgcHJlLCBlZmZlY3QsIG9wdCksIHBvcykgOjogci5Bc3QucGVydHVyYmF0aW9ucztcbiAgICAgICAgfVxuICAgICAgfCBBc3QuQ09ORklHIChwYXJhbV9uYW1lLCB2YWx1ZV9saXN0KSAtPlxuICAgICAgICB7XG4gICAgICAgICAgciB3aXRoXG4gICAgICAgICAgQXN0LmNvbmZpZ3VyYXRpb25zID0gKHBhcmFtX25hbWUsIHZhbHVlX2xpc3QpIDo6IHIuQXN0LmNvbmZpZ3VyYXRpb25zO1xuICAgICAgICB9KVxuICAgIGNvbXBpbCAoTGlzdC5yZXYgcmV2X2luc3RyKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxue1xub3BlbiBLcGFyc2VyNFxuXG4gbGV0IGtleXdvcmRfb3JfaWQgPVxuIGxldCBrZXl3b3JkcyA9IEhhc2h0YmwuY3JlYXRlIDE1IGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJkb1wiIERPIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJyZXBlYXRcIiBSRVBFQVQgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcIklORlwiIElORklOSVRZIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJpbmZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiYWxhcm1cIiBBTEFSTSBpblxuIGZ1biB4IC0+XG4gdHJ5IEhhc2h0YmwuZmluZCBrZXl3b3JkcyB4IHdpdGggTm90X2ZvdW5kIC0+IElEIHhcblxufVxuXG5sZXQgZW9sID0gJ1xccic/ICdcXG4nXG5sZXQgYmxhbmsgPSBbJyAnICdcXHQnXVxubGV0IGludGVnZXIgPSBbJzAnLSc5J10rXG5sZXQgcmVhbCA9XG4gIChbJzAnLSc5J10rIFsnZScgJ0UnXSBbJysnICctJ10/IFsnMCctJzknXSspIHxcbiAgKCgoWycwJy0nOSddKyAnLicgWycwJy0nOSddKikgfCAoJy4nIFsnMCctJzknXSspKVxuICAgIChbJ2UnICdFJ10gWycrJyAnLSddPyBbJzAnLSc5J10rKT8pXG5sZXQgaWQgPSBbJ18nICd+J10gWydhJy0neicgJ0EnLSdaJyAnMCctJzknICdfJyAnficgJy0nICcrJ10rIHxcbiAgICAgICAgIFsnYSctJ3onICdBJy0nWiddIFsnYSctJ3onICdBJy0nWicgJzAnLSc5JyAnXycgJ34nICctJyAnKyddKlxuXG5ydWxlIHRva2VuID0gcGFyc2VcbiAgfCAnLycgJy8nIChbXidcXHInJ1xcbiddKiBhcyBzKSAoZW9sIHwgZW9mKSB7TGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgQ09NTUVOVCBzfVxuICB8ICcvJyAnKicge0NPTU1FTlQgKGlubGluZV9jb21tZW50IFtdIGxleGJ1Zil9XG4gIHwgZW9sIHsgTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgTkVXTElORSB9XG4gIHwgYmxhbmsgKyBhcyB4IHsgU1BBQ0UgeCB9XG4gIHwgJyMnIHsgU0hBUlAgfVxuICB8IFwiJiZcIiB7IEFORCB9XG4gIHwgXCJ8fFwiIHsgT1IgfVxuICB8IFwiPC0+XCIgeyBMUkFSIH1cbiAgfCBcIjwtXCIge0xBUn1cbiAgfCBcIi0+XCIgeyBSQVIgfVxuICB8IFwiPD5cIiB7IERJRkYgfVxuICB8ICc6JyB7IENPTE9OIH1cbiAgfCAnOycgeyBTRU1JQ09MT04gfVxuICB8ICdAJyB7IEFUIH1cbiAgfCAnLCcgeyBDT01NQSB9XG4gIHwgJ1xcXFwnIHtCQUNLU0xBU0h9XG4gIHwgJygnIHsgT1BfUEFSIH1cbiAgfCAnKScgeyBDTF9QQVIgfVxuICB8ICdbJyB7IE9QX0JSQSB9XG4gIHwgJ10nIHsgQ0xfQlJBIH1cbiAgfCAneycgeyBPUF9DVVIgfVxuICB8ICd9JyB7IENMX0NVUiB9XG4gIHwgJ3wnIHsgUElQRSB9XG4gIHwgJy4nIHsgRE9UIH1cbiAgfCAnXycgeyBVTkRFUlNDT1JFIH1cbiAgfCAnKycgeyBQTFVTIH1cbiAgfCAnKicgeyBNVUxUIH1cbiAgfCAnLScgeyBNSU5VUyB9XG4gIHwgJ14nIHsgUE9XIH1cbiAgfCAnLycgeyBESVYgfVxuICB8ICc8JyB7IFNNQUxMRVIgfVxuICB8ICc+JyB7IEdSRUFURVIgfVxuICB8ICc9JyB7IEVRVUFMIH1cbiAgfCBpbnRlZ2VyIGFzIG4geyBJTlQgKGludF9vZl9zdHJpbmcgbikgfVxuICB8IHJlYWwgYXMgZiB7IEZMT0FUIChmbG9hdF9vZl9zdHJpbmcgZikgfVxuICB8ICdcXCcnIChbXidcXG4nICdcXCcnXSsgYXMgeCkgJ1xcJyd7IExBQkVMKHgpIH1cbiAgfCAnXFxcIicgKFteJ1xcbicgJ1xcXCInXSogYXMgeCkgJ1xcXCIneyBTVFJJTkcoeCkgfVxuICB8ICdcXCcnIChbXidcXG4nICdcXCcnXSsgYXMgcykgKGVvZiB8ICdcXG4nKVxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbnRlcm1pbmF0ZWQgbGFiZWw6IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKX1cbiAgfCAnXFxcIicgKFteJ1xcbicgJ1xcXCInXSsgYXMgcykgKGVvZiB8ICdcXG4nKVxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbnRlcm1pbmF0ZWQgc3RyaW5nOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSl9XG4gIHwgaWQgYXMgc3RyIHsga2V5d29yZF9vcl9pZCBzdHIgfVxuICB8ICclJyAoaWQgYXMgbGFiKSAnOicge1xuICAgIG1hdGNoIGxhYiB3aXRoXG4gICAgfCBcImFnZW50XCIgLT4gU0lHTkFUVVJFXG4gICAgfCBcImluaXRcIiAtPiBJTklUXG4gICAgfCBcInZhclwiIC0+IExFVFxuICAgIHwgXCJwbG90XCIgLT4gUExPVFxuICAgIHwgXCJtb2RcIiAtPiBQRVJUXG4gICAgfCBcIm9ic1wiIC0+IE9CU1xuICAgIHwgXCJkZWZcIiAtPiBDT05GSUdcbiAgICB8IFwidG9rZW5cIiAtPiBUT0tFTlxuICAgIHwgXyBhcyBzIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBkaXJlY3RpdmU6IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuICAgIH1cbiAgfCAnWycgYmxhbmsqICc/JyBibGFuayogJ10nIHsgVEhFTiB9XG4gIHwgJ1snIGJsYW5rKiAnOicgYmxhbmsqICddJyB7IEVMU0UgfVxuICB8ICdbJyBibGFuayogKGlkIGFzIGxhYikgYmxhbmsqICddJyB7XG4gICAgbWF0Y2ggbGFiIHdpdGhcbiAgICB8IFwiRVwiIC0+IEVWRU5UXG4gICAgfCBcIkUtXCIgLT4gTlVMTF9FVkVOVFxuICAgIHwgXCJUXCIgLT4gVElNRVxuICAgIHwgXCJUc2ltXCIgLT4gQ1BVVElNRVxuICAgIHwgXCJsb2dcIiAtPiBMT0dcbiAgICB8IFwic2luXCIgLT4gU0lOVVNcbiAgICB8IFwiY29zXCIgLT4gQ09TSU5VU1xuICAgIHwgXCJ0YW5cIiAtPiBUQU5cbiAgICB8IFwiZXhwXCIgLT4gRVhQT05FTlRcbiAgICB8IFwiaW50XCIgLT4gQUJTXG4gICAgfCBcIm1vZFwiIC0+IE1PRFxuICAgIHwgXCJzcXJ0XCIgLT4gU1FSVFxuICAgIHwgXCJ0cnVlXCIgLT4gVFJVRVxuICAgIHwgXCJmYWxzZVwiIC0+IEZBTFNFXG4gICAgfCBcInBpXCIgLT4gRkxPQVQgKDMuMTQxNTkyNjUpXG4gICAgfCBcIm1heFwiIC0+IE1BWFxuICAgIHwgXCJtaW5cIiAtPiBNSU5cbiAgICB8IFwiRW1heFwiIC0+IEVNQVhcbiAgICB8IFwiVG1heFwiIC0+IFRNQVhcbiAgICB8IFwibm90XCIgLT4gTk9UXG4gICAgfCBfIGFzIHMgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIHByaW1pdGl2ZTogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG4gICAgfVxuICB8ICckJyAoaWQgYXMgcykge1xuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgXCJBUFBMWVwiIC0+IEFQUExZXG4gICAgfCBcIkRFTFwiIC0+IERFTEVURVxuICAgIHwgXCJBRERcIiAtPiBJTlRST1xuICAgIHwgXCJTTkFQU0hPVFwiIC0+IFNOQVBTSE9UXG4gICAgfCBcIlNUT1BcIiAtPiBTVE9QXG4gICAgfCBcIkRJTlwiIC0+IEZMVVhcbiAgICB8IFwiVFJBQ0tcIiAtPiBUUkFDS1xuICAgIHwgXCJVUERBVEVcIiAtPiBBU1NJR05cbiAgICB8IFwiUFJJTlRcIiAtPiBQUklOVEZcbiAgICB8IFwiUFJJTlRGXCIgLT4gUFJJTlRGXG4gICAgfCBcIlBMT1RFTlRSWVwiIC0+IFBMT1RFTlRSWVxuICAgIHwgXCJSVU5cIiAtPiBSVU5cbiAgICB8IFwiU1BFQ0lFU19PRlwiIC0+IFNQRUNJRVNfT0ZcbiAgICB8IHMgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIGludGVydmVudGlvbjogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG4gICAgfVxuICB8IGVvZiB7IGxleGJ1Zi5MZXhpbmcubGV4X2VvZl9yZWFjaGVkIDwtIHRydWU7IEVPRiB9XG4gIHwgXyBhcyBjIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIGNoYXJhY3RlcjogXCJeU3RyaW5nLm1ha2UgMSBjLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSkgfVxuXG5hbmQgaW5saW5lX2NvbW1lbnQgYWNjID0gcGFyc2VcbiAgfCAoW14nXFxuJyAnKicgJ1xcXCInICcvJ10gKikgYXMgeCB7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiB9XG4gIHwgKCcvJyAnLycgW14nXFxyJydcXG4nXSogYXMgeCkgZW9sXG4gICAgeyBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgfVxuICB8IGVvbCBhcyB4IHsgTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIH1cbiAgfCAoJyonIFteJy8nICdcXG4nICdcXFwiJ10pIGFzIHggeyBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgfVxuICB8ICgnLycgW14nKicgJ1xcbicgJ1xcXCInXSkgYXMgeCB7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiB9XG4gIHwgJyonICcvJyB7IFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXYgYWNjKSB9XG4gIHwgZW9mIHsgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldiBhY2MpIH1cbiAgfCAnKicgJ1xcbicgeyBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCAoXCIqXFxuXCI6OmFjYykgbGV4YnVmIH1cbiAgfCAoKCcqJyB8ICcvJyk/ICdcXFwiJyBbXidcXG4nICdcXFwiJ10rICdcXFwiJykgYXMgeFxuICAgIHsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIH1cbiAgfCAoKCcqJyB8ICcvJyk/ICdcXFwiJyBbXidcXG4nICdcXFwiJ10rIChlb2YgfCAnXFxuJykpIGFzIHhcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW50ZXJtaW5hdGVkIHN0cmluZyBpbiBjb21tZW50OiBcIl54LFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSl9XG4gIHwgJy8nICcqJ1xuICAgIHsgaW5saW5lX2NvbW1lbnQgKFwiKi9cIjo6KGlubGluZV9jb21tZW50IFtcIi8qXCJdIGxleGJ1Zik6OiBhY2MpIGxleGJ1ZiB9XG4gIHwgJy8nICdcXG4nIHsgTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKFwiL1xcblwiOjphY2MpIGxleGJ1ZiB9XG5cbmFuZCByZWNvdmVyeSA9IHBhcnNlXG4gIHwgW14nXFxyJydcXG4nXSogKGVvbCB8IGVvZikge0xleGluZy5uZXdfbGluZSBsZXhidWZ9XG5cbntcbiAgbGV0IHJlYyBhdXhfbW9kZWwgZXJyIGxleCA9XG4gIHRyeSBsZXQgb3V0ID0gS3BhcnNlcjQubW9kZWwgdG9rZW4gbGV4IGluIChvdXQsIExpc3QucmV2IGVycilcbiAgd2l0aCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciBlIC0+XG4gICAgbGV0ICgpID0gcmVjb3ZlcnkgbGV4IGluXG4gICAgYXV4X21vZGVsIChlOjplcnIpIGxleFxuXG4gIGxldCBtb2RlbCBsZXggPSBhdXhfbW9kZWwgW10gbGV4XG5cbiAgbGV0IGNvbXBpbGUgbG9nZ2VyIGNvbXBpbCBmaWMgPVxuICAgIGxldCBkID0gb3Blbl9pbiBmaWMgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkIGluXG4gICAgbGV0ICgpID0gbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIDwtXG4gICAgICB7bGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIHdpdGggTGV4aW5nLnBvc19mbmFtZSA9IGZpY30gaW5cbiAgICBsZXQgY29tcGlsID0geyBjb21waWwgd2l0aCBBc3QuZmlsZW5hbWVzID0gZmljIDo6IGNvbXBpbC5Bc3QuZmlsZW5hbWVzIH0gaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJQYXJzaW5nICVzLi4uQC5cIiBmaWMgaW5cbiAgICBsZXQgKG91dCxlcnIpID0gbW9kZWwgbGV4YnVmIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nZ2VyIFwiZG9uZUAuXCIgaW5cbiAgICBsZXQgKCkgPSBtYXRjaCBlcnIgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCAobXNnLHBvcyk6Ol8gLT5cbiAgICAgICAgbGV0ICgpID0gUHAuZXJyb3IgRm9ybWF0LnBwX3ByaW50X3N0cmluZyAobXNnLHBvcykgaW5cbiAgICAgICAgZXhpdCAzIGluXG4gICAgbGV0ICgpID0gY2xvc2VfaW4gZCBpblxuICAgIENzdC5hcHBlbmRfdG9fYXN0X2NvbXBpbCBvdXQgY29tcGlsXG59XG4iLCIjIDkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuIFxub3BlbiBLcGFyc2VyNFxuXG4gbGV0IGtleXdvcmRfb3JfaWQgPVxuIGxldCBrZXl3b3JkcyA9IEhhc2h0YmwuY3JlYXRlIDE1IGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJkb1wiIERPIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJyZXBlYXRcIiBSRVBFQVQgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcIklORlwiIElORklOSVRZIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJpbmZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiYWxhcm1cIiBBTEFSTSBpblxuIGZ1biB4IC0+XG4gdHJ5IEhhc2h0YmwuZmluZCBrZXl3b3JkcyB4IHdpdGggTm90X2ZvdW5kIC0+IElEIHhcblxuXG4jIDE3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjA5XFwyNTVcXDIxMFxcMjU1XFwwNjJcXDAwMFxcMTI0XFwwMDBcXDIwOVxcMDAwXFwwMzNcXDAwMVxcMjM3XFwwMDBcXFxuICAgIFxcMTc2XFwwMDBcXDExMlxcMDAxXFwyMjNcXDI1NVxcMjI0XFwyNTVcXDIyN1xcMjU1XFwyMjlcXDI1NVxcMjMwXFwyNTVcXDE3M1xcMDAxXFxcbiAgICBcXDEzNFxcMDAxXFwyMzRcXDI1NVxcMjM1XFwyNTVcXDIzNlxcMjU1XFwwMzFcXDAwMlxcMjM4XFwyNTVcXDIzOVxcMjU1XFwyNDBcXDI1NVxcXG4gICAgXFwyNDFcXDI1NVxcMjQyXFwyNTVcXDI0M1xcMjU1XFwyNDRcXDI1NVxcMDAxXFwwMDBcXDIwNlxcMDAwXFwwMjlcXDAwMFxcMDU4XFwwMDBcXFxuICAgIFxcMjUxXFwyNTVcXDI0MFxcMDAwXFwyNTNcXDI1NVxcMDAxXFwwMDBcXDIwNlxcMDAwXFwyNTRcXDI1NVxcMDExXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwyNTBcXDI1NVxcMjQ5XFwyNTVcXDI0NVxcMjU1XFwwOTJcXDAwMFxcMjQ4XFwyNTVcXDI0NlxcMjU1XFwxNDVcXDAwMlxcXG4gICAgXFwyMjVcXDAwMlxcMTcxXFwwMDFcXDAzMlxcMDAyXFwwODNcXDAwM1xcMjE0XFwyNTVcXDIxM1xcMjU1XFwxOTdcXDAwM1xcMjEyXFwyNTVcXFxuICAgIFxcMDYzXFwwMDJcXDA3M1xcMDAzXFwyNTVcXDAwMVxcMTQ0XFwwMDFcXDAyNVxcMDAyXFwwMjFcXDAwNFxcMTAwXFwwMDRcXDExNVxcMDAyXFxcbiAgICBcXDEzMFxcMDAyXFwwNDhcXDAwM1xcMTc3XFwwMDBcXDIxOFxcMjU1XFwyMjBcXDI1NVxcMjE5XFwyNTVcXDA4M1xcMDAzXFwyMTdcXDI1NVxcXG4gICAgXFwxMzdcXDAwNFxcMjE3XFwwMDRcXDA0MVxcMDA1XFwyMTVcXDI1NVxcMTIxXFwwMDVcXDIwMVxcMDA1XFwwMjVcXDAwNlxcMTk3XFwwMDNcXFxuICAgIFxcMDg0XFwwMDNcXDI0OVxcMjU1XFwxMzRcXDAwNFxcMjUzXFwyNTVcXDEzOFxcMDA2XFwxMzlcXDAwNlxcMTQwXFwwMDZcXDI0NFxcMjU1XFxcbiAgICBcXDI0NVxcMjU1XFwyNTFcXDI1NVxcMDEzXFwwMDBcXDI1NFxcMjU1XFwwMDRcXDAwMFxcMDE3XFwwMDBcXDI0OFxcMjU1XFwyNTBcXDI1NVxcXG4gICAgXFwyNTJcXDI1NVxcMTk4XFwwMDNcXDI0NlxcMjU1XFwyNDdcXDI1NVxcMjA3XFwwMDBcXDI1NVxcMjU1XFwwMDVcXDAwMFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDM5XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI0XFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMDMwXFwwMDBcXDAyMlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwNDZcXDAwMFxcMDI5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDM0XFwwMDBcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMjU1XFwyNTVcXDAzOVxcMDAwXFwwMzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDM0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMFxcMjU1XFwyNTVcXDA0NFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MFxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4NVxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDk2XFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDg1XFwwMDBcXDA4NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5M1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA5M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzlcXDAwMFxcMDM1XFwwMDBcXDA5MVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMDAwXFwwMDBcXDAwMFxcMDkxXFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAwMFxcMDAwXFwwOTJcXDAwMFxcMDkxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAzM1xcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAzMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAzMVxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwwMjJcXDAwMFxcMDIxXFwwMDBcXDAxM1xcMDAwXFwwMTRcXDAwMFxcMDI0XFwwMDBcXDAyOFxcMDAwXFwwMTZcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDI3XFwwMDBcXDAyNlxcMDAwXFwwMjlcXDAwMFxcMDEwXFwwMDBcXDAxMVxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwMjVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMjBcXDAwMFxcMDIzXFwwMDBcXDAxOVxcMDAwXFwwMTJcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDQxXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDE4XFwwMDBcXDAzMFxcMDAwXFwwMTdcXDAwMFxcMDA2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNDJcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNjdcXDAwMFxcMDc3XFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDY4XFwwMDBcXDEwMVxcMDAwXFwwMDBcXDAwMFxcMDczXFwwMDBcXDEwMlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAzN1xcMDAwXFwwMzNcXDAwMFxcMDczXFwwMDBcXDA0NFxcMDAwXFwwMDVcXDAwMFxcMDM4XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDM5XFwwMDBcXDA0M1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2OVxcMDAwXFxcbiAgICBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYyXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNjNcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1OVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA1NlxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDBcXDA1NlxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA0OFxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDUxXFwwMDBcXDA3MVxcMDAwXFwyNTVcXDI1NVxcMDU0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTFcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNThcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDU4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA1NlxcMDAwXFwwODNcXDAwMFxcXG4gICAgXFwwOThcXDAwMFxcMDQ4XFwwMDBcXDA4NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwOTVcXDAwMFxcMDcyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDA4MVxcMDAwXFwwOThcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1OFxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA4N1xcMDAwXFwyNTVcXDI1NVxcMDgzXFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDkwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDBcXDA0MFxcMDAwXFwwMDBcXDAwMFxcMDkyXFwwMDBcXDEwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwOTBcXDAwMFxcXG4gICAgXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDA5MFxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOTNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyOFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAzMFxcMDAwXFwwNDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDA2NlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMTAwXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMTAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDM2XFwwMDBcXDAzM1xcMDAwXFwwMDRcXDAwMFxcMDI5XFwwMDBcXDAwNVxcMDAwXFwwMzZcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMzhcXDAwMFxcMDI5XFwwMDBcXDA5MFxcMDAwXFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMDMzXFwwMDBcXDA5M1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDhcXDAwMFxcMDY2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDAwOVxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXFxuICAgIFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDUwXFwwMDBcXDA1OFxcMDAwXFwwMTVcXDAwMFxcMDU4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU4XFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDU2XFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFxcbiAgICBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDIwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDU2XFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMFxcMDIwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwwNTZcXDAwMFxcMDIwXFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNTFcXDAwMFxcMDcwXFwwMDBcXDA4MFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwyNTVcXDI1NVxcMDcwXFwwMDBcXDA4MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDU0XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwNTFcXDAwMFxcMDc5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA3OVxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDc5XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzBcXDAwMFxcMDgwXFwwMDBcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2MVxcMDAwXFwyNTVcXDI1NVxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA4MlxcMDAwXFwwNjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcyXFwwMDBcXDA4MlxcMDAwXFwwNzJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwyNTVcXDI1NVxcMDc5XFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDYyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDcyXFwwMDBcXDI1NVxcMjU1XFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwyNTVcXDI1NVxcMDczXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA3M1xcMDAwXFwyNTVcXDI1NVxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzRcXDAwMFxcMjU1XFwyNTVcXDA3NFxcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNzRcXDAwMFxcMjU1XFwyNTVcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc2XFwwMDBcXDI1NVxcMjU1XFwwNzZcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDc2XFwwMDBcXDI1NVxcMjU1XFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFxcbiAgICBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFxcbiAgICBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzhcXDAwMFxcMjU1XFwyNTVcXDA3OFxcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNzhcXDAwMFxcMjU1XFwyNTVcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAxNlxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwxNjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDJcXDAwMVxcMDE5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5M1xcMDAwXFwwMjdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMDBcXDAwMFxcMDM2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTNcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEzXFwwMDBcXFxuICAgIFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDA2NlxcMDAwXFwwMzhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDA3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDhcXDAwMFxcMjU1XFwyNTVcXDA5MFxcMDAwXFwwNjZcXDAwMFxcMjU1XFwyNTVcXDA5MFxcMDAwXFwwOTNcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDg0XFwwMDBcXDA5M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA3MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAzOFxcMDAwXFwwNDhcXDAwMFxcMDY2XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMjU1XFwyNTVcXDA5M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDcwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlxcMjU1XFwwMDJcXDI1NVxcMjU1XFwwMDZcXDI1NVxcMjU1XFwwMDVcXDI1NVxcMjU1XFwwMDRcXDI1NVxcMjU1XFwwMDNcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAzXFwyNTVcXDAwMFxcMDAyXFwwMDFcXDAwNFxcMjU1XFwwMDBcXDAwNVxcMjU1XFwwMDBcXDAwNlxcMjU1XFwwMDFcXDI1NVxcXG4gICAgXFwyNTVcXDAwMFxcMDAxXFwyNTVcIjtcbn1cblxubGV0IHJlYyB0b2tlbiBsZXhidWYgPVxuICBsZXhidWYuTGV4aW5nLmxleF9tZW0gPC0gQXJyYXkubWFrZSA3ICgtMSk7IF9fb2NhbWxfbGV4X3Rva2VuX3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3Rva2VuX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcubmV3X2VuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDM1IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc1xuIyA3NTkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMikgbGV4YnVmLkxleGluZy5sZXhfbWVtLigwKSBpblxuIyAzNSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBDT01NRU5UIHMpXG4jIDc2MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDEgLT5cbiMgMzYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgKENPTU1FTlQgKGlubGluZV9jb21tZW50IFtdIGxleGJ1ZikpXG4jIDc2OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDIgLT5cbiMgMzcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIExleGluZy5uZXdfbGluZSBsZXhidWY7IE5FV0xJTkUgKVxuIyA3NzMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzIC0+XG5sZXRcbiMgMzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgeFxuIyA3NzkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIFNQQUNFIHggKVxuIyA3ODMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0IC0+XG4jIDM5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBTSEFSUCApXG4jIDc4OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDUgLT5cbiMgNDAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgKCBBTkQgKVxuIyA3OTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA2IC0+XG4jIDQxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICggT1IgKVxuIyA3OTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA3IC0+XG4jIDQyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAoIExSQVIgKVxuIyA4MDMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA4IC0+XG4jIDQzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgIChMQVIpXG4jIDgwOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDkgLT5cbiMgNDQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgKCBSQVIgKVxuIyA4MTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxMCAtPlxuIyA0NSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAoIERJRkYgKVxuIyA4MTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxMSAtPlxuIyA0NiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggQ09MT04gKVxuIyA4MjMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxMiAtPlxuIyA0NyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggU0VNSUNPTE9OIClcbiMgODI4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTMgLT5cbiMgNDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIEFUIClcbiMgODMzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTQgLT5cbiMgNDkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIENPTU1BIClcbiMgODM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTUgLT5cbiMgNTAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgKEJBQ0tTTEFTSClcbiMgODQzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTYgLT5cbiMgNTEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIE9QX1BBUiApXG4jIDg0OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDE3IC0+XG4jIDUyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBDTF9QQVIgKVxuIyA4NTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxOCAtPlxuIyA1MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggT1BfQlJBIClcbiMgODU4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTkgLT5cbiMgNTQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIENMX0JSQSApXG4jIDg2MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDIwIC0+XG4jIDU1IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBPUF9DVVIgKVxuIyA4NjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyMSAtPlxuIyA1NiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggQ0xfQ1VSIClcbiMgODczIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjIgLT5cbiMgNTcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFBJUEUgKVxuIyA4NzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyMyAtPlxuIyA1OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggRE9UIClcbiMgODgzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjQgLT5cbiMgNTkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFVOREVSU0NPUkUgKVxuIyA4ODggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyNSAtPlxuIyA2MCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggUExVUyApXG4jIDg5MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDI2IC0+XG4jIDYxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBNVUxUIClcbiMgODk4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjcgLT5cbiMgNjIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIE1JTlVTIClcbiMgOTAzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjggLT5cbiMgNjMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFBPVyApXG4jIDkwOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDI5IC0+XG4jIDY0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBESVYgKVxuIyA5MTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzMCAtPlxuIyA2NSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggU01BTExFUiApXG4jIDkxOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDMxIC0+XG4jIDY2IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBHUkVBVEVSIClcbiMgOTIzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzIgLT5cbiMgNjcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIEVRVUFMIClcbiMgOTI4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzMgLT5cbmxldFxuIyA2OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICBuXG4jIDkzNCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA2OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICggSU5UIChpbnRfb2Zfc3RyaW5nIG4pIClcbiMgOTM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzQgLT5cbmxldFxuIyA2OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICBmXG4jIDk0NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA2OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICggRkxPQVQgKGZsb2F0X29mX3N0cmluZyBmKSApXG4jIDk0OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM1IC0+XG5sZXRcbiMgNzAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyA5NTQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgKGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zICsgLTEpIGluXG4jIDcwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIExBQkVMKHgpIClcbiMgOTU4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzYgLT5cbmxldFxuIyA3MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDk2NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSAobGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgKyAtMSkgaW5cbiMgNzEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggU1RSSU5HKHgpIClcbiMgOTY4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzcgLT5cbmxldFxuIyA3MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzXG4jIDk3NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSBsZXhidWYuTGV4aW5nLmxleF9tZW0uKDApIGluXG4jIDczIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW50ZXJtaW5hdGVkIGxhYmVsOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSkpXG4jIDk4MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM4IC0+XG5sZXRcbiMgNzcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc1xuIyA5ODcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgbGV4YnVmLkxleGluZy5sZXhfbWVtLigwKSBpblxuIyA3OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVudGVybWluYXRlZCBzdHJpbmc6IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKSlcbiMgOTk0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzkgLT5cbmxldFxuIyA4MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgc3RyXG4jIDEwMDAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgODIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAoIGtleXdvcmRfb3JfaWQgc3RyIClcbiMgMTAwNCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDQwIC0+XG5sZXRcbiMgODMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgbGFiXG4jIDEwMTAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgKGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zICsgLTEpIGluXG4jIDgzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBtYXRjaCBsYWIgd2l0aFxuICAgIHwgXCJhZ2VudFwiIC0+IFNJR05BVFVSRVxuICAgIHwgXCJpbml0XCIgLT4gSU5JVFxuICAgIHwgXCJ2YXJcIiAtPiBMRVRcbiAgICB8IFwicGxvdFwiIC0+IFBMT1RcbiAgICB8IFwibW9kXCIgLT4gUEVSVFxuICAgIHwgXCJvYnNcIiAtPiBPQlNcbiAgICB8IFwiZGVmXCIgLT4gQ09ORklHXG4gICAgfCBcInRva2VuXCIgLT4gVE9LRU5cbiAgICB8IF8gYXMgcyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVua25vd24gZGlyZWN0aXZlOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcbiAgICApXG4jIDEwMjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0MSAtPlxuIyA5OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFRIRU4gKVxuIyAxMDMzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNDIgLT5cbiMgOTkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBFTFNFIClcbiMgMTAzOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDQzIC0+XG5sZXRcbiMgMTAwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBsYWJcbiMgMTA0NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMCkgbGV4YnVmLkxleGluZy5sZXhfbWVtLigxKSBpblxuIyAxMDAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgbWF0Y2ggbGFiIHdpdGhcbiAgICB8IFwiRVwiIC0+IEVWRU5UXG4gICAgfCBcIkUtXCIgLT4gTlVMTF9FVkVOVFxuICAgIHwgXCJUXCIgLT4gVElNRVxuICAgIHwgXCJUc2ltXCIgLT4gQ1BVVElNRVxuICAgIHwgXCJsb2dcIiAtPiBMT0dcbiAgICB8IFwic2luXCIgLT4gU0lOVVNcbiAgICB8IFwiY29zXCIgLT4gQ09TSU5VU1xuICAgIHwgXCJ0YW5cIiAtPiBUQU5cbiAgICB8IFwiZXhwXCIgLT4gRVhQT05FTlRcbiAgICB8IFwiaW50XCIgLT4gQUJTXG4gICAgfCBcIm1vZFwiIC0+IE1PRFxuICAgIHwgXCJzcXJ0XCIgLT4gU1FSVFxuICAgIHwgXCJ0cnVlXCIgLT4gVFJVRVxuICAgIHwgXCJmYWxzZVwiIC0+IEZBTFNFXG4gICAgfCBcInBpXCIgLT4gRkxPQVQgKDMuMTQxNTkyNjUpXG4gICAgfCBcIm1heFwiIC0+IE1BWFxuICAgIHwgXCJtaW5cIiAtPiBNSU5cbiAgICB8IFwiRW1heFwiIC0+IEVNQVhcbiAgICB8IFwiVG1heFwiIC0+IFRNQVhcbiAgICB8IFwibm90XCIgLT4gTk9UXG4gICAgfCBfIGFzIHMgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIHByaW1pdGl2ZTogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG4gICAgKVxuIyAxMDc0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNDQgLT5cbmxldFxuIyAxMjcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgc1xuIyAxMDgwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDEyNyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAoXG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBcIkFQUExZXCIgLT4gQVBQTFlcbiAgICB8IFwiREVMXCIgLT4gREVMRVRFXG4gICAgfCBcIkFERFwiIC0+IElOVFJPXG4gICAgfCBcIlNOQVBTSE9UXCIgLT4gU05BUFNIT1RcbiAgICB8IFwiU1RPUFwiIC0+IFNUT1BcbiAgICB8IFwiRElOXCIgLT4gRkxVWFxuICAgIHwgXCJUUkFDS1wiIC0+IFRSQUNLXG4gICAgfCBcIlVQREFURVwiIC0+IEFTU0lHTlxuICAgIHwgXCJQUklOVFwiIC0+IFBSSU5URlxuICAgIHwgXCJQUklOVEZcIiAtPiBQUklOVEZcbiAgICB8IFwiUExPVEVOVFJZXCIgLT4gUExPVEVOVFJZXG4gICAgfCBcIlJVTlwiIC0+IFJVTlxuICAgIHwgXCJTUEVDSUVTX09GXCIgLT4gU1BFQ0lFU19PRlxuICAgIHwgcyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVua25vd24gaW50ZXJ2ZW50aW9uOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcbiAgICApXG4jIDExMDMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0NSAtPlxuIyAxNDcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIGxleGJ1Zi5MZXhpbmcubGV4X2VvZl9yZWFjaGVkIDwtIHRydWU7IEVPRiApXG4jIDExMDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0NiAtPlxubGV0XG4jIDE0OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICBjXG4jIDExMTQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuIyAxNDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBjaGFyYWN0ZXI6IFwiXlN0cmluZy5tYWtlIDEgYyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpIClcbiMgMTEyMSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfdG9rZW5fcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgaW5saW5lX2NvbW1lbnQgYWNjIGxleGJ1ZiA9XG4gIGxleGJ1Zi5MZXhpbmcubGV4X21lbSA8LSBBcnJheS5tYWtlIDIgKC0xKTsgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGFjYyBsZXhidWYgNzlcbmFuZCBfX29jYW1sX2xleF9pbmxpbmVfY29tbWVudF9yZWMgYWNjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5uZXdfZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgMTU0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyAxMTM0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE1NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgKVxuIyAxMTM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMSAtPlxubGV0XG4jIDE1NSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTE0NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9tZW0uKDApIGluXG4jIDE1NiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgKCBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgKVxuIyAxMTQ4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMiAtPlxubGV0XG4jIDE1NyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgIHhcbiMgMTE1NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNTcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICggTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIClcbiMgMTE1OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDMgLT5cbmxldFxuIyAxNTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyAxMTY0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKSBpblxuIyAxNTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiApXG4jIDExNjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0IC0+XG5sZXRcbiMgMTU5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTE3NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMikgaW5cbiMgMTU5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgKVxuIyAxMTc4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNSAtPlxuIyAxNjAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgKCBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2IGFjYykgKVxuIyAxMTgzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNiAtPlxuIyAxNjEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXYgYWNjKSApXG4jIDExODggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA3IC0+XG4jIDE2MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgKCBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCAoXCIqXFxuXCI6OmFjYykgbGV4YnVmIClcbiMgMTE5MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDggLT5cbmxldFxuIyAxNjMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTE5OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNjQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICggaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIClcbiMgMTIwMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDkgLT5cbmxldFxuIyAxNjUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyAxMjA5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE2NiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVudGVybWluYXRlZCBzdHJpbmcgaW4gY29tbWVudDogXCJeeCxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpKVxuIyAxMjE2IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTAgLT5cbiMgMTcxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAoIGlubGluZV9jb21tZW50IChcIiovXCI6OihpbmxpbmVfY29tbWVudCBbXCIvKlwiXSBsZXhidWYpOjogYWNjKSBsZXhidWYgKVxuIyAxMjIxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTEgLT5cbiMgMTcyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAoIExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50IChcIi9cXG5cIjo6YWNjKSBsZXhidWYgKVxuIyAxMjI2IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9pbmxpbmVfY29tbWVudF9yZWMgYWNjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVjb3ZlcnkgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlY292ZXJ5X3JlYyBsZXhidWYgMTAwXG5hbmQgX19vY2FtbF9sZXhfcmVjb3ZlcnlfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTc1IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWYpXG4jIDEyMzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlY292ZXJ5X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxNzcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuIFxuICBsZXQgcmVjIGF1eF9tb2RlbCBlcnIgbGV4ID1cbiAgdHJ5IGxldCBvdXQgPSBLcGFyc2VyNC5tb2RlbCB0b2tlbiBsZXggaW4gKG91dCwgTGlzdC5yZXYgZXJyKVxuICB3aXRoIEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIGUgLT5cbiAgICBsZXQgKCkgPSByZWNvdmVyeSBsZXggaW5cbiAgICBhdXhfbW9kZWwgKGU6OmVycikgbGV4XG5cbiAgbGV0IG1vZGVsIGxleCA9IGF1eF9tb2RlbCBbXSBsZXhcblxuICBsZXQgY29tcGlsZSBsb2dnZXIgY29tcGlsIGZpYyA9XG4gICAgbGV0IGQgPSBvcGVuX2luIGZpYyBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGQgaW5cbiAgICBsZXQgKCkgPSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgPC1cbiAgICAgIHtsZXhidWYuTGV4aW5nLmxleF9jdXJyX3Agd2l0aCBMZXhpbmcucG9zX2ZuYW1lID0gZmljfSBpblxuICAgIGxldCBjb21waWwgPSB7IGNvbXBpbCB3aXRoIEFzdC5maWxlbmFtZXMgPSBmaWMgOjogY29tcGlsLkFzdC5maWxlbmFtZXMgfSBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcIlBhcnNpbmcgJXMuLi5ALlwiIGZpYyBpblxuICAgIGxldCAob3V0LGVycikgPSBtb2RlbCBsZXhidWYgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJkb25lQC5cIiBpblxuICAgIGxldCAoKSA9IG1hdGNoIGVyciB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IChtc2cscG9zKTo6XyAtPlxuICAgICAgICBsZXQgKCkgPSBQcC5lcnJvciBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIChtc2cscG9zKSBpblxuICAgICAgICBleGl0IDMgaW5cbiAgICBsZXQgKCkgPSBjbG9zZV9pbiBkIGluXG4gICAgQ3N0LmFwcGVuZF90b19hc3RfY29tcGlsIG91dCBjb21waWxcblxuIyAxMjcyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxudHlwZSBpdGVtID0geyByYW5rOiBpbnQ7IGNvbnRlbnQ6IHN0cmluZyB9XG5cbnR5cGUgY2F0YWxvZyA9IHtcbiAgZWxlbWVudHM6IChzdHJpbmcsIGl0ZW0pIEhhc2h0YmwudDtcbiAgaW5kZXg6IHN0cmluZyBvcHRpb24gTW9kcy5EeW5BcnJheS50O1xuICBhc3Q6IEFzdC5wYXJzaW5nX2NvbXBpbCBvcHRpb24gcmVmO1xufVxuXG50eXBlIGNhdGFsb2dfaXRlbSA9IHsgcG9zaXRpb246IGludDsgaWQ6IHN0cmluZyB9XG5cbmxldCB3cml0ZV9jYXRhbG9nX2l0ZW0gb2IgeyBwb3NpdGlvbjsgaWQgfSA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfZmllbGQgXCJpZFwiIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgaWQgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfZmllbGQgXCJwb3NpdGlvblwiIFlvanNvbi5CYXNpYy53cml0ZV9pbnQgb2IgcG9zaXRpb24gaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgcmVhZF9jYXRhbG9nX2l0ZW0gcCBsYiA9XG4gIGxldCBwb3NpdGlvbiwgaWQsIGNvdW50ID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKHBvcywgaSwgYykga2V5IHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJwb3NpdGlvblwiIHRoZW5cbiAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYiwgaSwgc3VjYyBjXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJpZFwiKSBpblxuICAgICAgICAgIHBvcywgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIsIHN1Y2MgY1xuICAgICAgICApKVxuICAgICAgKC0xLCBcIlwiLCAwKSBwIGxiXG4gIGluXG4gIGxldCAoKSA9IGFzc2VydCAoY291bnQgPSAyKSBpblxuICB7IHBvc2l0aW9uOyBpZCB9XG5cbmxldCBjcmVhdGUgKCkgPVxuICB7XG4gICAgZWxlbWVudHMgPSBIYXNodGJsLmNyZWF0ZSAxO1xuICAgIGluZGV4ID0gTW9kcy5EeW5BcnJheS5jcmVhdGUgMSBOb25lO1xuICAgIGFzdCA9IHJlZiBOb25lO1xuICB9XG5cbmxldCBwdXQgfnBvc2l0aW9uOnJhbmsgfmlkIH5jb250ZW50IGNhdGFsb2cgPVxuICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgY2F0YWxvZy5lbGVtZW50cyBpZCB7IHJhbms7IGNvbnRlbnQgfSBpblxuICBtYXRjaCBNb2RzLkR5bkFycmF5LmdldCBjYXRhbG9nLmluZGV4IHJhbmsgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBjYXRhbG9nLmluZGV4IHJhbmsgKFNvbWUgaWQpIGluXG4gICAgbGV0ICgpID0gY2F0YWxvZy5hc3QgOj0gTm9uZSBpblxuICAgIFJlc3VsdC5PayAoKVxuICB8IFNvbWUgYWllIC0+XG4gICAgUmVzdWx0LkVycm9yXG4gICAgICAoXCJTbG90IFwiIF4gc3RyaW5nX29mX2ludCByYW5rIF4gXCIgaXMgbm90IGF2YWlsYWJsZS4gVGhlcmUgaXMgYWxyZWFkeSBcIlxuICAgICBeIGFpZSlcblxubGV0IGZpbGVfY3JlYXRlIH5wb3NpdGlvbiB+aWQgfmNvbnRlbnQgY2F0YWxvZyA9XG4gIGlmIEhhc2h0YmwubWVtIGNhdGFsb2cuZWxlbWVudHMgaWQgdGhlblxuICAgIFJlc3VsdC5FcnJvclxuICAgICAgKFwiQSBmaWxlIGNhbGxlZCBcXFwiXCIgXiBpZCBeIFwiXFxcIiBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGNhdGFsb2dcIilcbiAgZWxzZVxuICAgIHB1dCB+cG9zaXRpb24gfmlkIH5jb250ZW50IGNhdGFsb2dcblxubGV0IGZpbGVfbW92ZSB+cG9zaXRpb24gfmlkIGNhdGFsb2cgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYWxsIGNhdGFsb2cuZWxlbWVudHMgaWQgd2l0aFxuICB8IFtdIC0+IFJlc3VsdC5FcnJvciAoXCJNaXNzaW5nIGZpbGUgXFxcIlwiIF4gaWQgXiBcIlxcXCIgaW4gdGhlIGNhdGFsb2dcIilcbiAgfCBfIDo6IF8gOjogXyAtPiBSZXN1bHQuRXJyb3IgXCJGaWxlIGNhdGFsb2cgaGFzIHNlcmlvdXMgcHJvYmxlbXNcIlxuICB8IFsgeyByYW5rOyBjb250ZW50IH0gXSAtPlxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGNhdGFsb2cuaW5kZXggcmFuayBOb25lIGluXG4gICAgcHV0IH5wb3NpdGlvbiB+aWQgfmNvbnRlbnQgY2F0YWxvZ1xuXG5sZXQgZmlsZV9wYXRjaCB+aWQgY29udGVudCBjYXRhbG9nID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kX2FsbCBjYXRhbG9nLmVsZW1lbnRzIGlkIHdpdGhcbiAgfCBbXSAtPiBSZXN1bHQuRXJyb3IgKFwiVW5rbm93biBmaWxlIFxcXCJcIiBeIGlkIF4gXCJcXFwiXCIpXG4gIHwgXyA6OiBfIDo6IF8gLT4gUmVzdWx0LkVycm9yIFwiU2VyaW91cyBwcm9ibGVtcyBpbiBmaWxlIGNhdGFsb2dcIlxuICB8IFsgeyByYW5rOyBfIH0gXSAtPlxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBjYXRhbG9nLmVsZW1lbnRzIGlkIHsgcmFuazsgY29udGVudCB9IGluXG4gICAgbGV0ICgpID0gY2F0YWxvZy5hc3QgOj0gTm9uZSBpblxuICAgIFJlc3VsdC5PayAoKVxuXG5sZXQgZmlsZV9kZWxldGUgfmlkIGNhdGFsb2cgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYWxsIGNhdGFsb2cuZWxlbWVudHMgaWQgd2l0aFxuICB8IFtdIC0+IFJlc3VsdC5FcnJvciAoXCJObyBmaWxlIFxcXCJcIiBeIGlkIF4gXCJcXFwiXCIpXG4gIHwgXyA6OiBfIDo6IF8gLT4gZmFpbHdpdGggXCJCaWcgdHJvdWJsZXMgaW4gZmlsZSBjYXRhbG9nXCJcbiAgfCBbIHsgcmFuazsgXyB9IF0gLT5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBjYXRhbG9nLmluZGV4IHJhbmsgTm9uZSBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVtb3ZlIGNhdGFsb2cuZWxlbWVudHMgaWQgaW5cbiAgICBsZXQgKCkgPSBjYXRhbG9nLmFzdCA6PSBOb25lIGluXG4gICAgUmVzdWx0Lk9rICgpXG5cbmxldCBmaWxlX2dldCB+aWQgY2F0YWxvZyA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZF9hbGwgY2F0YWxvZy5lbGVtZW50cyBpZCB3aXRoXG4gIHwgW10gLT4gUmVzdWx0LkVycm9yIChcIkZpbGUgXFxcIlwiIF4gaWQgXiBcIlxcXCIgZG9lcyBub3QgZXhpc3RcIilcbiAgfCBfIDo6IF8gOjogXyAtPiBSZXN1bHQuRXJyb3IgXCJDb3JydXB0ZWQgZmlsZSBjYXRhbG9nXCJcbiAgfCBbIHsgcmFuazsgY29udGVudCB9IF0gLT4gUmVzdWx0Lk9rIChjb250ZW50LCByYW5rKVxuXG5sZXQgY2F0YWxvZyBjYXRhbG9nID1cbiAgTW9kcy5EeW5BcnJheS5mb2xkX3JpZ2h0aVxuICAgIChmdW4gcG9zaXRpb24geCBhY2MgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgfCBTb21lIGlkIC0+IHsgcG9zaXRpb247IGlkIH0gOjogYWNjKVxuICAgIGNhdGFsb2cuaW5kZXggW11cblxubGV0IHBhcnNlIHlpZWxkIGNhdGFsb2cgPVxuICBtYXRjaCAhKGNhdGFsb2cuYXN0KSB3aXRoXG4gIHwgU29tZSBjb21waWxlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGNvbXBpbGUpXG4gIHwgTm9uZSAtPlxuICAgIE1vZHMuRHluQXJyYXkuZm9sZF9yaWdodGlcbiAgICAgIChmdW4gXyB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgIGxldCBmaWxlID0gSGFzaHRibC5maW5kIGNhdGFsb2cuZWxlbWVudHMgeCBpblxuICAgICAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgZmlsZS5jb250ZW50IGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCA8LVxuICAgICAgICAgICAgICB7IGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCB3aXRoIExleGluZy5wb3NfZm5hbWUgPSB4IH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGFjYyA+Pj0gZnVuIChjb21waWxlLCBlcnIpIC0+XG4gICAgICAgICAgbGV0IGNvbXBpbGUgPVxuICAgICAgICAgICAgeyBjb21waWxlIHdpdGggQXN0LmZpbGVuYW1lcyA9IHggOjogY29tcGlsZS5Bc3QuZmlsZW5hbWVzIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIEx3dC5jYXRjaFxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBMd3Qud3JhcDEgS2xleGVyNC5tb2RlbCBsZXhidWYgPj49IGZ1biAoaW5zdHMsIGVycicpIC0+XG4gICAgICAgICAgICAgIHlpZWxkICgpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoQ3N0LmFwcGVuZF90b19hc3RfY29tcGlsIGluc3RzIGNvbXBpbGUsIGVycicgQCBlcnIpKVxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKG1lc3NhZ2UsIHJhbmdlKVxuICAgICAgICAgICAgICB8IEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKG1lc3NhZ2UsIHJhbmdlKVxuICAgICAgICAgICAgICB8IEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3IgKG1lc3NhZ2UsIHJhbmdlKSAtPlxuICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKGNvbXBpbGUsIChtZXNzYWdlLCByYW5nZSkgOjogZXJyKVxuICAgICAgICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgZXJyb3IgLT5cbiAgICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgICAoIGNvbXBpbGUsXG4gICAgICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChcIlJ1bnRpbWUgZXJyb3IgXCIgXiBlcnJvcikgOjogZXJyIClcbiAgICAgICAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAgICAgICBsZXQgbWVzc2FnZSA9IFByaW50ZXhjLnRvX3N0cmluZyBleG4gaW5cbiAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChjb21waWxlLCBMb2MuYW5ub3Rfd2l0aF9kdW1teSBtZXNzYWdlIDo6IGVycikpKVxuICAgICAgY2F0YWxvZy5pbmRleFxuICAgICAgKEx3dC5yZXR1cm4gKEFzdC5lbXB0eV9jb21waWwsIFtdKSlcbiAgICA+Pj0gKCBmdW5jdGlvblxuICAgIHwgY29tcGlsZSwgW10gLT5cbiAgICAgIGxldCAoKSA9IGNhdGFsb2cuYXN0IDo9IFNvbWUgY29tcGlsZSBpblxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgY29tcGlsZSlcbiAgICB8IF8sIGVyciAtPlxuICAgICAgbGV0IGVyciA9XG4gICAgICAgIExpc3QubWFwXG4gICAgICAgICAgKGZ1biAoKHRleHQsIHApIGFzIHgpIC0+XG4gICAgICAgICAgICBsZXQgcmFuZ2UgPVxuICAgICAgICAgICAgICBpZiBMb2MuaXNfYW5ub3RlZF93aXRoX2R1bW15IHggdGhlblxuICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIFNvbWUgcFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLkVycm9yOyByYW5nZTsgdGV4dCB9KVxuICAgICAgICAgIGVyclxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIGVycikgKVxuXG5sZXQgb3ZlcndyaXRlIGZpbGVuYW1lIGFzdCBjYXRhbG9nID1cbiAgbGV0IGNvbnRlbnQgPSBGb3JtYXQuYXNwcmludGYgXCIlYVwiIEFzdC5wcmludF9wYXJzaW5nX2NvbXBpbF9rYXBwYSBhc3QgaW5cbiAgbGV0IGl0ID0geyByYW5rID0gMDsgY29udGVudCB9IGluXG4gIGxldCAoKSA9IEhhc2h0YmwucmVzZXQgY2F0YWxvZy5lbGVtZW50cyBpblxuICBsZXQgKCkgPSBIYXNodGJsLmFkZCBjYXRhbG9nLmVsZW1lbnRzIGZpbGVuYW1lIGl0IGluXG4gIGxldCAoKSA9XG4gICAgTW9kcy5EeW5BcnJheS5pdGVyaVxuICAgICAgKGZ1biBpIF8gLT4gTW9kcy5EeW5BcnJheS5zZXQgY2F0YWxvZy5pbmRleCBpIE5vbmUpXG4gICAgICBjYXRhbG9nLmluZGV4XG4gIGluXG4gIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGNhdGFsb2cuaW5kZXggMCAoU29tZSBmaWxlbmFtZSkgaW5cbiAgY2F0YWxvZy5hc3QgOj0gU29tZSBhc3RcbiIsInR5cGUgdG9rZW4gPVxuICB8IEVPRlxuICB8IE5FV0xJTkVcbiAgfCBTRU1JQ09MT05cbiAgfCBDT01NQVxuICB8IERPVFxuICB8IE9QX1BBUlxuICB8IENMX1BBUlxuICB8IE9QX0NVUlxuICB8IENMX0NVUlxuICB8IEFUXG4gIHwgVFlQRVxuICB8IExBUlxuICB8IENQVVRJTUVcbiAgfCBFTUFYXG4gIHwgVE1BWFxuICB8IFBMT1RFTlRSWVxuICB8IERFTEVURVxuICB8IElOVFJPXG4gIHwgVFJBQ0tcbiAgfCBET1xuICB8IFNFVFxuICB8IFJFUEVBVFxuICB8IFNQRUNJRVNfT0ZcbiAgfCBVTlRJTFxuICB8IExPR1xuICB8IFBMVVNcbiAgfCBNVUxUXG4gIHwgTUlOVVNcbiAgfCBNQVhcbiAgfCBNSU5cbiAgfCBESVZcbiAgfCBTSU5VU1xuICB8IENPU0lOVVNcbiAgfCBUQU5cbiAgfCBQT1dcbiAgfCBBQlNcbiAgfCBNT0RVTE9cbiAgfCBTUVJUXG4gIHwgRVhQT05FTlRcbiAgfCBJTkZJTklUWVxuICB8IFRJTUVcbiAgfCBFVkVOVFxuICB8IE5VTExfRVZFTlRcbiAgfCBQSVBFXG4gIHwgRVFVQUxcbiAgfCBBTkRcbiAgfCBPUlxuICB8IE5PVFxuICB8IEdSRUFURVJcbiAgfCBTTUFMTEVSXG4gIHwgVFJVRVxuICB8IEZBTFNFXG4gIHwgRElGRlxuICB8IEtBUFBBX1JBUlxuICB8IEtBUFBBX0xSQVJcbiAgfCBLQVBQQV9MTktcbiAgfCBTSUdOQVRVUkVcbiAgfCBJTklUXG4gIHwgTEVUXG4gIHwgUExPVFxuICB8IFBFUlRcbiAgfCBPQlNcbiAgfCBUT0tFTlxuICB8IENPTkZJR1xuICB8IEtBUFBBX1dMRFxuICB8IEtBUFBBX1NFTUlcbiAgfCBGTFVYXG4gIHwgQVNTSUdOXG4gIHwgUFJJTlRGXG4gIHwgU1RPUFxuICB8IFNOQVBTSE9UXG4gIHwgUlVOXG4gIHwgVEhFTlxuICB8IEVMU0VcbiAgfCBBTEFSTVxuICB8IEFQUExZXG4gIHwgSU5UIG9mIChpbnQpXG4gIHwgSUQgb2YgKHN0cmluZylcbiAgfCBLQVBQQV9NUksgb2YgKHN0cmluZylcbiAgfCBMQUJFTCBvZiAoc3RyaW5nKVxuICB8IEZMT0FUIG9mIChmbG9hdClcbiAgfCBTVFJJTkcgb2YgKHN0cmluZylcblxub3BlbiBQYXJzaW5nOztcbmxldCBfID0gcGFyc2VfZXJyb3I7O1xuIyAxMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICBsZXQgYWRkX3BvcyB4ID1cbiAgICAoeCxMb2Mub2ZfcG9zIChQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkpIChQYXJzaW5nLnN5bWJvbF9lbmRfcG9zICgpKSlcbiAgbGV0IHJoc19wb3MgaSA9XG4gIExvYy5vZl9wb3MgKFBhcnNpbmcucmhzX3N0YXJ0X3BvcyBpKSAoUGFyc2luZy5yaHNfZW5kX3BvcyBpKVxuIyA5MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG5sZXQgeXl0cmFuc2xfY29uc3QgPSBbfFxuICAgIDAgKCogRU9GICopO1xuICAyNTcgKCogTkVXTElORSAqKTtcbiAgMjU4ICgqIFNFTUlDT0xPTiAqKTtcbiAgMjU5ICgqIENPTU1BICopO1xuICAyNjAgKCogRE9UICopO1xuICAyNjEgKCogT1BfUEFSICopO1xuICAyNjIgKCogQ0xfUEFSICopO1xuICAyNjMgKCogT1BfQ1VSICopO1xuICAyNjQgKCogQ0xfQ1VSICopO1xuICAyNjUgKCogQVQgKik7XG4gIDI2NiAoKiBUWVBFICopO1xuICAyNjcgKCogTEFSICopO1xuICAyNjggKCogQ1BVVElNRSAqKTtcbiAgMjY5ICgqIEVNQVggKik7XG4gIDI3MCAoKiBUTUFYICopO1xuICAyNzEgKCogUExPVEVOVFJZICopO1xuICAyNzIgKCogREVMRVRFICopO1xuICAyNzMgKCogSU5UUk8gKik7XG4gIDI3NCAoKiBUUkFDSyAqKTtcbiAgMjc1ICgqIERPICopO1xuICAyNzYgKCogU0VUICopO1xuICAyNzcgKCogUkVQRUFUICopO1xuICAyNzggKCogU1BFQ0lFU19PRiAqKTtcbiAgMjc5ICgqIFVOVElMICopO1xuICAyODAgKCogTE9HICopO1xuICAyODEgKCogUExVUyAqKTtcbiAgMjgyICgqIE1VTFQgKik7XG4gIDI4MyAoKiBNSU5VUyAqKTtcbiAgMjg0ICgqIE1BWCAqKTtcbiAgMjg1ICgqIE1JTiAqKTtcbiAgMjg2ICgqIERJViAqKTtcbiAgMjg3ICgqIFNJTlVTICopO1xuICAyODggKCogQ09TSU5VUyAqKTtcbiAgMjg5ICgqIFRBTiAqKTtcbiAgMjkwICgqIFBPVyAqKTtcbiAgMjkxICgqIEFCUyAqKTtcbiAgMjkyICgqIE1PRFVMTyAqKTtcbiAgMjkzICgqIFNRUlQgKik7XG4gIDI5NCAoKiBFWFBPTkVOVCAqKTtcbiAgMjk1ICgqIElORklOSVRZICopO1xuICAyOTYgKCogVElNRSAqKTtcbiAgMjk3ICgqIEVWRU5UICopO1xuICAyOTggKCogTlVMTF9FVkVOVCAqKTtcbiAgMjk5ICgqIFBJUEUgKik7XG4gIDMwMCAoKiBFUVVBTCAqKTtcbiAgMzAxICgqIEFORCAqKTtcbiAgMzAyICgqIE9SICopO1xuICAzMDMgKCogTk9UICopO1xuICAzMDQgKCogR1JFQVRFUiAqKTtcbiAgMzA1ICgqIFNNQUxMRVIgKik7XG4gIDMwNiAoKiBUUlVFICopO1xuICAzMDcgKCogRkFMU0UgKik7XG4gIDMwOCAoKiBESUZGICopO1xuICAzMDkgKCogS0FQUEFfUkFSICopO1xuICAzMTAgKCogS0FQUEFfTFJBUiAqKTtcbiAgMzExICgqIEtBUFBBX0xOSyAqKTtcbiAgMzEyICgqIFNJR05BVFVSRSAqKTtcbiAgMzEzICgqIElOSVQgKik7XG4gIDMxNCAoKiBMRVQgKik7XG4gIDMxNSAoKiBQTE9UICopO1xuICAzMTYgKCogUEVSVCAqKTtcbiAgMzE3ICgqIE9CUyAqKTtcbiAgMzE4ICgqIFRPS0VOICopO1xuICAzMTkgKCogQ09ORklHICopO1xuICAzMjAgKCogS0FQUEFfV0xEICopO1xuICAzMjEgKCogS0FQUEFfU0VNSSAqKTtcbiAgMzIyICgqIEZMVVggKik7XG4gIDMyMyAoKiBBU1NJR04gKik7XG4gIDMyNCAoKiBQUklOVEYgKik7XG4gIDMyNSAoKiBTVE9QICopO1xuICAzMjYgKCogU05BUFNIT1QgKik7XG4gIDMyNyAoKiBSVU4gKik7XG4gIDMyOCAoKiBUSEVOICopO1xuICAzMjkgKCogRUxTRSAqKTtcbiAgMzMwICgqIEFMQVJNICopO1xuICAzMzEgKCogQVBQTFkgKik7XG4gICAgMHxdXG5cbmxldCB5eXRyYW5zbF9ibG9jayA9IFt8XG4gIDMzMiAoKiBJTlQgKik7XG4gIDMzMyAoKiBJRCAqKTtcbiAgMzM0ICgqIEtBUFBBX01SSyAqKTtcbiAgMzM1ICgqIExBQkVMICopO1xuICAzMzYgKCogRkxPQVQgKik7XG4gIDMzNyAoKiBTVFJJTkcgKik7XG4gICAgMHxdXG5cbmxldCB5eWxocyA9IFwiXFwyNTVcXDI1NVxcXG5cXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTNcXDAwMFxcXG5cXDAxM1xcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMDE3XFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcXG5cXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDAzXFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG5cXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG5cXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjNcXDAwMFxcXG5cXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDIxXFwwMDBcXDAyMVxcMDAwXFwwMTFcXDAwMFxcXG5cXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMDI4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcXG5cXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAwNFxcMDAwXFwwMjlcXDAwMFxcXG5cXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMjVcXDAwMFxcXG5cXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDA2XFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG5cXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMzRcXDAwMFxcXG5cXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcXG5cXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcXG5cXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcXG5cXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzVcXDAwMFxcXG5cXDAzNVxcMDAwXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMDM2XFwwMDBcXDAzNlxcMDAwXFwwMjJcXDAwMFxcXG5cXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDE0XFwwMDBcXDAxNFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMDlcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMzdcXDAwMFxcMDM3XFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDAzOFxcMDAwXFwwMzhcXDAwMFxcXG5cXDAzOFxcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFwwNDJcXDAwMFxcXG5cXDA0MlxcMDAwXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDA0MVxcMDAwXFwwNDFcXDAwMFxcXG5cXDA0MVxcMDAwXFwwNDFcXDAwMFxcMDQxXFwwMDBcXDA0MVxcMDAwXFwwNDFcXDAwMFxcMDQxXFwwMDBcXDA0MVxcMDAwXFwwNDRcXDAwMFxcXG5cXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ1XFwwMDBcXDA0NVxcMDAwXFwwNDVcXDAwMFxcMDQ1XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG5cXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5bGVuID0gXCJcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDA1XFwwMDBcXDAwNFxcMDAwXFxcblxcMDA2XFwwMDBcXDAwNFxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwNVxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcblxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDA1XFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFxcblxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFxcblxcMDAyXFwwMDBcXDAwNVxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwNVxcMDAwXFxcblxcMDA2XFwwMDBcXDAwNFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNlxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFxcblxcMDA1XFwwMDBcXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcIlxuXG5sZXQgeXlkZWZyZWQgPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTUwXFwwMDBcXDE1MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMFxcMjAyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTAzXFwwMDBcXDEwMVxcMDAwXFwxMDJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDEwOFxcMDAwXFwxMDlcXDAwMFxcMTEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXFxuXFwwNzBcXDAwMFxcMDk5XFwwMDBcXDEwNlxcMDAwXFwxMDdcXDAwMFxcMDk4XFwwMDBcXDIwN1xcMDAwXFwwMDBcXDAwMFxcMTAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTI0XFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMTEyXFwwMDBcXDExM1xcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcXFxuXFwwMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMFxcMDE3XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMThcXDAwMFxcMDAwXFwwMDBcXDAxNVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwOTRcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDUxXFwwMDBcXFxuXFwxOTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAxXFwwMDBcXDAwMFxcMDAwXFwwMzVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTIyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAwXFwxMThcXDAwMFxcMTE5XFwwMDBcXFxuXFwxMjBcXDAwMFxcMTIxXFwwMDBcXDExNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDAwMFxcMDAwXFwwMjdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTFcXDAwMFxcMTQ1XFwwMDBcXDE1NVxcMDAwXFwwMDBcXDAwMFxcMDM2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDA0NlxcMDAwXFwwNjJcXDAwMFxcMDYzXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDBcXFxuXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAzOFxcMDAwXFwxMTFcXDAwMFxcMDY4XFwwMDBcXDExNFxcMDAwXFwxMTVcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMDRcXDAwMFxcMTA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjVcXDAwMFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNThcXDAwMFxcMDU1XFwwMDBcXDA1OVxcMDAwXFwwNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODVcXDAwMFxcMTg2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDIxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAwXFwwMDBcXDAwMFxcMDM0XFwwMDBcXFxuXFwwODhcXDAwMFxcMDAwXFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1NFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMFxcMDg3XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2MlxcMDAwXFwxNjVcXDAwMFxcMDAwXFwwMDBcXDE4NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTk1XFwwMDBcXDE3NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDMxXFwwMDBcXDAwMFxcMDAwXFwxMzdcXDAwMFxcMTM2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxNjZcXDAwMFxcMDAwXFwwMDBcXDE2MFxcMDAwXFwwMDBcXDAwMFxcMTYzXFwwMDBcXDE2NFxcMDAwXFwwMDBcXDAwMFxcMTc5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMTkwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk2XFwwMDBcXDE5MVxcMDAwXFwxOTNcXDAwMFxcMTkyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3NlxcMDAwXFwxOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTY3XFwwMDBcXDE0OFxcMDAwXFwxODBcXDAwMFxcMDAwXFwwMDBcXDE4MVxcMDAwXFwxODhcXDAwMFxcMTg5XFwwMDBcXFxuXFwxNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzFcXDAwMFxcMDAwXFwwMDBcXDE3MlxcMDAwXFwxNjhcXDAwMFxcMDAwXFwwMDBcXFxuXFwxODJcXDAwMFxcMTc4XFwwMDBcXDE5NFxcMDAwXFwxNzNcXDAwMFxcMTY5XFwwMDBcIlxuXG5sZXQgeXlkZ290byA9IFwiXFwwMDVcXDAwMFxcXG5cXDAyMlxcMDAwXFwwNDdcXDAwMFxcMDUwXFwwMDBcXDA3OFxcMDAwXFwwMjNcXDAwMFxcMDI0XFwwMDBcXDA3OVxcMDAwXFwwMjVcXDAwMFxcXG5cXDA5NlxcMDAwXFwxMDBcXDAwMFxcMTAzXFwwMDBcXDEwOFxcMDAwXFwyMDNcXDAwMFxcMTY1XFwwMDBcXDEwOVxcMDAwXFwwODBcXDAwMFxcXG5cXDA0NlxcMDAxXFwwOTJcXDAwMFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwyMjJcXDAwMFxcMDI2XFwwMDBcXDE0MVxcMDAwXFwwODJcXDAwMFxcXG5cXDAyN1xcMDAwXFwxNDJcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwMjhcXDAwMFxcMDkzXFwwMDBcXDEyNFxcMDAwXFwxMjFcXDAwMFxcXG5cXDA4NVxcMDAwXFwwODZcXDAwMFxcMjEwXFwwMDBcXDAxN1xcMDAxXFwwMjlcXDAwMFxcMDIzXFwwMDFcXDAzMFxcMDAwXFwwMDRcXDAwMVxcXG5cXDAwNVxcMDAxXFwwMjRcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNzVcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXCJcblxubGV0IHl5c2luZGV4ID0gXCJcXDAwM1xcMDAyXFxcblxcMDg1XFwwMDJcXDE2MFxcMDAyXFwxNDRcXDI1NVxcMjM0XFwwMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NVxcMDAyXFxcblxcMTgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDRcXDAzMlxcMjU1XFwxNDdcXDAwNFxcMjMzXFwyNTRcXDIwMVxcMDA0XFxcblxcMDA0XFwyNTVcXDIzM1xcMjU0XFwyMTVcXDI1NFxcMjE3XFwyNTRcXDIxMlxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFxcblxcMDE2XFwwMDBcXDAwNlxcMjU1XFwxMzhcXDI1NVxcMTcyXFwwMDBcXDA4OVxcMjU1XFwyMzJcXDI1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTQ0XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDAwNFxcMDUzXFwwMDVcXDA2NFxcMjU1XFwyMTVcXDAwNVxcMjE1XFwwMDVcXDEwNlxcMjU1XFxcblxcMjE1XFwwMDVcXDIxNVxcMDA1XFwyMTVcXDAwNVxcMTYxXFwwMDVcXDE0MFxcMDA3XFwwNjhcXDI1NVxcMDAwXFwwMDBcXDA1OVxcMjU1XFxcblxcMTM3XFwyNTVcXDAwMFxcMDAwXFwxMjdcXDAwMFxcMjM0XFwwMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NlxcMDA3XFxcblxcMDg2XFwwMDdcXDE0MFxcMDA3XFwxNDBcXDAwN1xcMDg2XFwwMDdcXDA4NlxcMDA3XFwwODZcXDAwN1xcMDg2XFwwMDdcXDA4NlxcMDA3XFxcblxcMDg2XFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODBcXDI1NVxcMTQxXFwyNTVcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDFcXDAwMFxcMDAwXFxcblxcMDIyXFwwMDBcXDAwMFxcMDAwXFwwMzdcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MFxcMjU1XFxcblxcMDAwXFwwMDBcXDAzMlxcMDA3XFwwMTVcXDAwMVxcMjUwXFwyNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUwXFwyNTVcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIxOVxcMjU1XFwwNzZcXDI1NVxcMDAwXFwwMDBcXDIzNFxcMDA2XFwxMDdcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgzXFwwMDFcXDIzNFxcMDA2XFwxMjlcXDI1NVxcMDAwXFwwMDBcXDAxOFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2MFxcMjU1XFxcblxcMjM0XFwwMDZcXDAxNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDA0XFwxNzJcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDA2XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk1XFwwMDBcXDE4MlxcMDAxXFwyNDRcXDI1NVxcMjUxXFwyNTVcXDAwMFxcMDAwXFxcblxcMDA0XFwwMDFcXDAwMFxcMDAwXFwwMDRcXDAwMVxcMTgwXFwwMDBcXDE4MFxcMDAwXFwyMzRcXDAwNlxcMDk2XFwwMDBcXDI0NVxcMjU1XFxcblxcMTYyXFwwMDNcXDA5MFxcMjU1XFwyMzRcXDAwNlxcMjM0XFwwMDZcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA0OVxcMjU1XFwxMDFcXDAwMVxcMjM0XFwwMDZcXDAwMFxcMDAwXFwxNDRcXDI1NVxcMDAwXFwwMDBcXDE3NFxcMjU1XFxcblxcMDQyXFwyNTVcXDAwMFxcMDAwXFwxODBcXDAwMVxcMTQwXFwwMDdcXDE0MFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM5XFwyNTVcXDA5OVxcMDAwXFwyMzRcXDAwNlxcMDAwXFwwMDBcXDIzNFxcMDA2XFxcblxcMjM0XFwwMDZcXDIzNFxcMDA2XFwyMzRcXDAwNlxcMDAwXFwwMDBcXDIzNFxcMDA2XFwyMzRcXDAwNlxcMjM0XFwwMDZcXDA4NlxcMDA3XFxcblxcMDg2XFwwMDdcXDA4NlxcMDA3XFwwODZcXDAwN1xcMDg2XFwwMDdcXDA4NlxcMDA3XFwwMDBcXDAwMFxcMTI1XFwyNTVcXDExMVxcMDAwXFxcblxcMDgwXFwwMDBcXDE2MVxcMDAwXFwwMDBcXDAwMFxcMTIxXFwwMDBcXDIzNFxcMDA2XFwyNDVcXDI1NVxcMjA2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDgzXFwwMDFcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMDgzXFwwMDFcXDAwMFxcMDAwXFwxNzBcXDI1NVxcMDAwXFwwMDBcXDE0NFxcMjU1XFxcblxcMDkxXFwyNTVcXDE2MFxcMjU1XFwwMDBcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk1XFwwMDBcXDIzNFxcMDA2XFxcblxcMTc1XFwwMDBcXDIxOFxcMDAwXFwwMDZcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUxXFwwMDBcXDAwMFxcMDAwXFxcblxcMjA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNVxcMDA1XFxcblxcMTgwXFwwMDBcXDIxNVxcMDA1XFwxODBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAxXFwwODNcXDAwMVxcMjE1XFwwMDVcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMVxcMDgzXFwwMDFcXDA4M1xcMDAxXFwwODNcXDAwMVxcMjA3XFwwMDBcXDAwMFxcMjU1XFxcblxcMDg5XFwwMDFcXDE4MFxcMDAxXFwwNjVcXDAwMFxcMTgwXFwwMDFcXDA2NVxcMDAwXFwwMTZcXDAwMVxcMDE2XFwwMDFcXDAwMFxcMDAwXFxcblxcMDI2XFwwMDFcXDAzMlxcMDA3XFwwMDhcXDI1NVxcMDQzXFwwMDFcXDA1MlxcMDAxXFwwODNcXDAwMVxcMDgwXFwwMDFcXDE0NFxcMjU1XFxcblxcMTE3XFwwMDBcXDE0NFxcMjU1XFwxNDRcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDZcXDI1NVxcMDAwXFwwMDBcXDA5NVxcMDAwXFxcblxcMDUwXFwwMDFcXDIzNFxcMDA2XFwxMjZcXDAwNlxcMDcyXFwwMDZcXDAwMFxcMDAwXFwwMjdcXDI1NVxcMDgxXFwwMDFcXDA5N1xcMDAxXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAxXFwxMTlcXDAwMVxcMTQwXFwwMDdcXDAzMlxcMDA3XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzZcXDI1NVxcMDg1XFwwMDFcXDAwN1xcMjU1XFwxMDVcXDAwMVxcMTQyXFwyNTVcXDAwMFxcMDAwXFxcblxcMTIxXFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMVxcMjM0XFwwMDZcXDIzNFxcMDA2XFwwMDBcXDAwMFxcMTE3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIzNFxcMDA2XFwwMDBcXDAwMFxcMTMwXFwwMDFcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMDAwXFwwMDBcXDA5NlxcMDAxXFxcblxcMTIwXFwwMDFcXDIzN1xcMDAwXFwwMDBcXDAwMFxcMTUxXFwwMDBcXDAwMFxcMDAwXFwxNjNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDkxXFwwMDFcXDA5MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNFxcMjU1XFwwMDBcXDAwMFxcMTI1XFwwMDFcXDAxMlxcMjU1XFxcblxcMDMxXFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQzXFwwMDFcXDE0MFxcMjU1XFwwMDBcXDAwMFxcMjM0XFwwMDZcXDI1MFxcMjU0XFxcblxcMjUwXFwyNTRcXDAwMFxcMDAwXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTBcXDI1NVxcMTMzXFwwMDFcXDAyMVxcMjU1XFxcblxcMDAwXFwwMDBcXDE0M1xcMDAxXFwwMDBcXDAwMFxcMTgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDAwMFxcMDAwXFxcblxcMDU3XFwyNTVcXDAwMFxcMDAwXFwwMjJcXDI1NVxcMDI0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTc3XFwwMDFcXDAzOFxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MFxcMjU0XFwxMzVcXDAwMVxcMDAwXFwwMDBcXDExOFxcMjU1XFxcblxcMDI0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE0M1xcMDAxXFwxMzhcXDAwMVxcMDAwXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0M1xcMDAxXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5cmluZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMTY2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2NlxcMDAxXFxcblxcMTQ0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTgwXFwwMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2MFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0OFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTY5XFwwMDFcXDA5NlxcMDAyXFwwOTZcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTMyXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDhcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIwMlxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDM0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzNcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUyXFwwMDBcXDE0NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ0XFwwMDJcXDAwMFxcMDAwXFxcblxcMDU3XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2OFxcMDAzXFwwMDBcXDAwMFxcMjE2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwM1xcMDU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDU4XFwwMDBcXDA2MlxcMDAwXFwxNjFcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE5XFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4NVxcMDAyXFwwMzhcXDAwM1xcMTc4XFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE3OVxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxOVxcMDAxXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMlxcMTk4XFwwMDJcXDIxM1xcMDAyXFwyNDFcXDAwMlxcMDA2XFwwMDNcXDA3NFxcMDAzXFxcblxcMDAwXFwwMDBcXDE1MVxcMDAxXFwxNjRcXDAwMFxcMjMyXFwwMDFcXDI0NVxcMDAwXFwwMDFcXDAwMFxcMDgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDk2XFwwMDNcXDAwMFxcMDAwXFwxMjZcXDI1NVxcMDAwXFwwMDBcXDIyM1xcMDAxXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDY0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjFcXDAwM1xcMDAwXFwwMDBcXDE0MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwxMjZcXDI1NVxcMDAwXFwwMDBcXDI0MVxcMDAxXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMjU1XFwyMjhcXDI1NVxcMjM3XFwyNTVcXDAwMFxcMDAwXFxcblxcMjE2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDczXFwwMDBcXDIzN1xcMjU1XFwwMDBcXDAwMFxcMjE5XFwwMDFcXDAwMFxcMDAwXFwxMjJcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM3XFwyNTVcXDE0NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFxcblxcMDcxXFwwMDBcXDAwMFxcMDAwXFwxNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIzN1xcMjU1XFwwMDBcXDAwMFxcMTQ0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM3XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjM3XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIzN1xcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzN1xcMjU1XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5Z2luZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMjQyXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyMjhcXDAwMlxcMTIzXFwwMDRcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzZcXDAwMlxcMDAwXFwwMDBcXDA1NlxcMDAyXFwyMDBcXDI1NVxcMDAwXFwwMDBcXDE1OVxcMDAyXFxcblxcMjIxXFwwMDFcXDAxM1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDEzM1xcMjU1XFwyNDdcXDI1NVxcMjMxXFwyNTVcXDIxN1xcMjU1XFxcblxcMTMyXFwwMDJcXDIxOFxcMjU1XFwxODhcXDAwNFxcMjE2XFwwMDJcXDIzM1xcMjU1XFwxNjhcXDI1NVxcMTcxXFwwMDJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMlxcMDI4XFwwMDFcXDAwMFxcMDAwXFwwNDZcXDI1NVxcMDAwXFwwMDBcXDI1MFxcMDAxXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTVcXDAwMlxcMTk4XFwyNTVcXDA1NFxcMjU1XFwwNjVcXDI1NVxcMDAwXFwwMDBcIlxuXG5sZXQgeXl0YWJsZXNpemUgPSAyMjY4XG5sZXQgeXl0YWJsZSA9IFwiXFwwODhcXDAwMFxcXG5cXDEyOVxcMDAwXFwxODRcXDAwMFxcMTE4XFwwMDBcXDE0M1xcMDAwXFwxNDRcXDAwMFxcMTQ3XFwwMDBcXDAzNFxcMDAxXFwwMzRcXDAwMVxcXG5cXDE0MVxcMDAwXFwyMjNcXDAwMFxcMDUxXFwwMDBcXDA5OFxcMDAxXFwxMzZcXDAwMFxcMTM4XFwwMDBcXDIyOFxcMDAwXFwwMDdcXDAwMFxcXG5cXDA4MVxcMDAwXFwwMzVcXDAwMVxcMTU2XFwwMDBcXDE1N1xcMDAwXFwwOThcXDAwMVxcMTcyXFwwMDBcXDExNVxcMDAwXFwxMTZcXDAwMFxcXG5cXDEwNlxcMDAwXFwxMTlcXDAwMVxcMDM0XFwwMDFcXDEzM1xcMDAwXFwyMDZcXDAwMFxcMDMwXFwwMDFcXDEwMVxcMDAxXFwwOTRcXDAwMFxcXG5cXDAzNlxcMDAxXFwwMTZcXDAwMFxcMTAyXFwwMDFcXDExMVxcMDAwXFwwMzVcXDAwMVxcMDk4XFwwMDFcXDE3M1xcMDAwXFwxNzRcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMTJcXDAwMFxcMTkyXFwwMDBcXDI0MFxcMDAwXFwxNzNcXDAwMFxcMTk3XFwwMDBcXDAyM1xcMDAwXFwyMzdcXDAwMFxcXG5cXDExN1xcMDAwXFwyMzJcXDAwMFxcMDk1XFwwMDFcXDA1NlxcMDAxXFwxMjZcXDAwMFxcMTAxXFwwMDBcXDA2NlxcMDAwXFwxMDJcXDAwMFxcXG5cXDE0NlxcMDAwXFwxMzhcXDAwMFxcMDY1XFwwMDBcXDE0OVxcMDAwXFwwMjRcXDAwMFxcMTMzXFwwMDBcXDAyMlxcMDAwXFwwMjhcXDAwMFxcXG5cXDE1M1xcMDAwXFwxNzVcXDAwMFxcMDk5XFwwMDFcXDE0MVxcMDAwXFwwMDlcXDAwMFxcMDI5XFwwMDBcXDAzMFxcMDAwXFwxNzVcXDAwMFxcXG5cXDIxOFxcMDAwXFwwMzNcXDAwMFxcMjE5XFwwMDBcXDA5OVxcMDAxXFwxMTBcXDAwMVxcMTA3XFwwMDBcXDE0OFxcMDAwXFwyMjVcXDAwMFxcXG5cXDE5MFxcMDAwXFwyNDFcXDAwMFxcMTMwXFwwMDBcXDExN1xcMDAxXFwwMzdcXDAwMVxcMDM3XFwwMDFcXDE3M1xcMDAwXFwxNzRcXDAwMFxcXG5cXDAxMFxcMDAwXFwxMDBcXDAwMVxcMDExXFwwMDBcXDEyNVxcMDAwXFwwOTlcXDAwMVxcMTczXFwwMDBcXDE3NFxcMDAwXFwxMDNcXDAwMVxcXG5cXDAwN1xcMDAwXFwxMjBcXDAwMVxcMTEzXFwwMDFcXDA5NlxcMDAxXFwyMTJcXDAwMFxcMDI2XFwwMDFcXDE1M1xcMDAwXFwwMjhcXDAwMVxcXG5cXDAzN1xcMDAxXFwwOTFcXDAwMVxcMTA0XFwwMDFcXDEwNVxcMDAxXFwwOTVcXDAwMFxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwODlcXDAwMVxcXG5cXDIwNVxcMDAwXFwxNzVcXDAwMFxcMjExXFwwMDBcXDIxM1xcMDAwXFwyMzhcXDAwMFxcMjM5XFwwMDBcXDE5OFxcMDAwXFwxNjhcXDAwMFxcXG5cXDE3NVxcMDAwXFwyMDFcXDAwMFxcMDkwXFwwMDFcXDE2OVxcMDAwXFwxNzBcXDAwMFxcMTExXFwwMDFcXDE1MVxcMDAwXFwxNzFcXDAwMFxcXG5cXDE4NFxcMDAwXFwxMDdcXDAwMVxcMjM2XFwwMDBcXDE4NFxcMDAwXFwxMThcXDAwMVxcMDA3XFwwMDFcXDE4NVxcMDAwXFwxNzNcXDAwMFxcXG5cXDE3NFxcMDAwXFwxMTlcXDAwMFxcMTUwXFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTA4XFwwMDFcXDEzMlxcMDAwXFwxMTRcXDAwMVxcXG5cXDEyNVxcMDAxXFwxNjZcXDAwMFxcMTIwXFwwMDBcXDE5OFxcMDAwXFwwMzNcXDAwMFxcMTg3XFwwMDBcXDE5OFxcMDAwXFwwODBcXDAwMFxcXG5cXDE5MVxcMDAwXFwxMjFcXDAwMVxcMTg4XFwwMDBcXDE4NFxcMDAwXFwxNjRcXDAwMFxcMjM1XFwwMDBcXDAzNFxcMDAwXFwwMzVcXDAwMFxcXG5cXDAzNlxcMDAwXFwwMzdcXDAwMFxcMTc1XFwwMDBcXDEyNVxcMDAwXFwxMjJcXDAwMVxcMDM4XFwwMDBcXDEyN1xcMDAxXFwwNjZcXDAwMFxcXG5cXDE2OFxcMDAwXFwwMzNcXDAwMVxcMjI3XFwwMDBcXDA3MlxcMDAxXFwxNjlcXDAwMFxcMTcwXFwwMDBcXDE5OFxcMDAwXFwxMzBcXDAwMVxcXG5cXDE3MVxcMDAwXFwxMjhcXDAwMVxcMTUzXFwwMDBcXDIzNlxcMDAwXFwxODRcXDAwMFxcMTMzXFwwMDFcXDEzOVxcMDAwXFwwMTVcXDAwMVxcXG5cXDE0MFxcMDAwXFwyNDdcXDAwMFxcMjQ4XFwwMDBcXDAyMVxcMDAxXFwwMDhcXDAwMVxcMTg0XFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcXG5cXDAyOVxcMDAxXFwxMjZcXDAwMVxcMDczXFwwMDFcXDE4MlxcMDAwXFwwNzNcXDAwMVxcMDE0XFwwMDFcXDAyNVxcMDAxXFwwNjRcXDAwMVxcXG5cXDAyN1xcMDAxXFwxODZcXDAwMFxcMDEzXFwwMDFcXDA3NFxcMDAxXFwwNzRcXDAwMFxcMDc0XFwwMDFcXDEwNlxcMDAwXFwwMDlcXDAwMVxcXG5cXDA3N1xcMDAwXFwwMzlcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDE3M1xcMDAwXFwxNzRcXDAwMFxcXG5cXDAwOVxcMDAwXFwxNjhcXDAwMFxcMDQ1XFwwMDBcXDA1OFxcMDAxXFwwNDZcXDAwMFxcMTY5XFwwMDBcXDE3MFxcMDAwXFwwNjVcXDAwMVxcXG5cXDA2NlxcMDAxXFwxNzFcXDAwMFxcMTA2XFwwMDBcXDEwNlxcMDAwXFwxMDZcXDAwMFxcMTg5XFwwMDBcXDE4M1xcMDAwXFwxMDZcXDAwMFxcXG5cXDA5MlxcMDAwXFwxODNcXDAwMFxcMDcwXFwwMDFcXDEwNlxcMDAwXFwwMTBcXDAwMFxcMTA2XFwwMDBcXDAxMVxcMDAwXFwxODdcXDAwMFxcXG5cXDIwMlxcMDAwXFwxNzVcXDAwMFxcMTg3XFwwMDBcXDIxNFxcMDAwXFwxMjdcXDAwMFxcMTA2XFwwMDBcXDA0OVxcMDAxXFwwNjNcXDAwMVxcXG5cXDIxNVxcMDAwXFwxMDZcXDAwMFxcMTA2XFwwMDBcXDA2N1xcMDAxXFwwNjhcXDAwMVxcMTA2XFwwMDBcXDAxMlxcMDAwXFwxMTNcXDAwMFxcXG5cXDIxNlxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcXG5cXDEyOVxcMDAwXFwxNDFcXDAwMFxcMTI5XFwwMDBcXDE0MVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwwNDNcXDAwMVxcXG5cXDAwOFxcMDAwXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEwNlxcMDAwXFwxMjlcXDAwMFxcXG5cXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcXG5cXDEyOVxcMDAwXFwxMjlcXDAwMFxcMDE2XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcXG5cXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwwMjNcXDAwMFxcXG5cXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwwNjZcXDAwMFxcXG5cXDA4MFxcMDAxXFwwODFcXDAwMVxcMTM4XFwwMDBcXDA2NVxcMDAwXFwxMzhcXDAwMFxcMDI0XFwwMDBcXDEzM1xcMDAwXFwwMjJcXDAwMFxcXG5cXDAyOFxcMDAwXFwyMTdcXDAwMFxcMTczXFwwMDBcXDE3NFxcMDAwXFwxNDFcXDAwMFxcMTIzXFwwMDBcXDAyOVxcMDAwXFwwMzBcXDAwMFxcXG5cXDEyOVxcMDAwXFwxMjlcXDAwMFxcMDMzXFwwMDBcXDE3NFxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDE3NFxcMDAwXFwxMjlcXDAwMFxcXG5cXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTE1XFwwMDFcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEwOVxcMDAxXFwxMzBcXDAwMFxcMTc1XFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDEzMFxcMDAwXFwwMDhcXDAwMFxcMTgwXFwwMDBcXDIyNFxcMDAwXFwxODFcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDA1MFxcMDAxXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwwMDBcXDAwMVxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDEzMFxcMDAwXFwyMzFcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDEzMFxcMDAwXFwwNDRcXDAwMVxcMTY4XFwwMDBcXDA0NVxcMDAxXFwxNjhcXDAwMFxcMjQyXFwwMDBcXDE2OVxcMDAwXFwxNzBcXDAwMFxcXG5cXDE2OVxcMDAwXFwxNzBcXDAwMFxcMTcxXFwwMDBcXDE0MlxcMDAwXFwxNzFcXDAwMFxcMTQyXFwwMDBcXDEyNlxcMDAwXFwwODBcXDAwMFxcXG5cXDA4MFxcMDAwXFwwODBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwwMDFcXDAwMVxcMDgwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDA4MFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwwODBcXDAwMFxcMTI1XFwwMDBcXDA4MFxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTQzXFwwMDBcXDAxOFxcMDAxXFwxNDNcXDAwMFxcMDE5XFwwMDFcXDEyNVxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNVxcMDAwXFwwMDJcXDAwMVxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMDAzXFwwMDFcXDEyNVxcMDAwXFwwMDlcXDAwMFxcXG5cXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNVxcMDAwXFwxMjVcXDAwMFxcMjQwXFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTY4XFwwMDBcXDAxMFxcMDAwXFwwMjBcXDAwMVxcMDExXFwwMDBcXDE2OVxcMDAwXFwxNzBcXDAwMFxcXG5cXDEyMlxcMDAwXFwxMjNcXDAwMFxcMTcxXFwwMDBcXDAyMlxcMDAxXFwxNDlcXDAwMFxcMjIwXFwwMDBcXDIyMVxcMDAwXFwxMjhcXDAwMFxcXG5cXDA5MlxcMDAwXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTE3XFwwMDBcXDA5MlxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNVxcMDAwXFwwOTJcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMDkyXFwwMDBcXDEyN1xcMDAwXFwwOTJcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwxMjdcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMjdcXDAwMFxcMDg4XFwwMDFcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDE3NVxcMDAwXFwxMjdcXDAwMFxcXG5cXDE4NVxcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDA3M1xcMDAxXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDA1NlxcMDAwXFwwNzRcXDAwMVxcMDUyXFwwMDFcXDA1NFxcMDAxXFwxNjhcXDAwMFxcXG5cXDA0MFxcMDAxXFwxODBcXDAwMFxcMDMyXFwwMDFcXDE2OVxcMDAwXFwxNzBcXDAwMFxcMTA2XFwwMDFcXDA0MVxcMDAxXFwxNzFcXDAwMFxcXG5cXDA1N1xcMDAwXFwwNTFcXDAwMVxcMTY4XFwwMDBcXDA4MFxcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDE2OVxcMDAwXFwxNzBcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTcxXFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcXG5cXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDA3M1xcMDAxXFwxMjNcXDAwMFxcXG5cXDIxN1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwMDdcXDAwMFxcMDQyXFwwMDFcXDA1OVxcMDAxXFwwNzRcXDAwMVxcXG5cXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDE4NlxcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwNjBcXDAwMFxcXG5cXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDA2MFxcMDAxXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwNjFcXDAwMVxcXG5cXDEyM1xcMDAwXFwwMDlcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcXG5cXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwNzdcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcXG5cXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwNjJcXDAwMVxcMDEwXFwwMDBcXDE2OFxcMDAwXFwwMTFcXDAwMFxcXG5cXDA2OVxcMDAxXFwwNzFcXDAwMVxcMTY5XFwwMDBcXDE3MFxcMDAwXFwxNjhcXDAwMFxcMDc5XFwwMDFcXDE3MVxcMDAwXFwwODRcXDAwMVxcXG5cXDE2OVxcMDAwXFwxNzBcXDAwMFxcMDg1XFwwMDFcXDA4NlxcMDAxXFwxNzFcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwMTJcXDAwMFxcXG5cXDA4N1xcMDAxXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEzMVxcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjZcXDAwMFxcXG5cXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwwMzJcXDAwMFxcXG5cXDEyNlxcMDAwXFwwMzFcXDAwMVxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMDkyXFwwMDFcXDA5M1xcMDAxXFwwOTRcXDAwMVxcXG5cXDA5N1xcMDAxXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMDZcXDAwMVxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcXG5cXDExMlxcMDAxXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjNcXDAwMVxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcXG5cXDAzOVxcMDAwXFwxMjZcXDAwMFxcMDA5XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcXG5cXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMDc1XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcXG5cXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTc3XFwwMDBcXDAxMFxcMDAwXFwxMTZcXDAwMVxcXG5cXDAxMVxcMDAwXFwxNzlcXDAwMFxcMTI0XFwwMDFcXDEyOVxcMDAxXFwwNzZcXDAwMFxcMTgwXFwwMDBcXDEzMVxcMDAxXFwxODFcXDAwMFxcXG5cXDEzMlxcMDAxXFwwNjBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwxNDlcXDAwMFxcMTU2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcXG5cXDE1OVxcMDAwXFwwNjBcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxNThcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcXG5cXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDA3OFxcMDAwXFwxMjhcXDAwMFxcMTQ5XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDE2MVxcMDAwXFwxNDZcXDAwMFxcXG5cXDExNFxcMDAwXFwwODdcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTEwXFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDEyOFxcMDAwXFwwMTJcXDAwMVxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMDczXFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDEyOFxcMDAwXFwxOTlcXDAwMFxcMTI4XFwwMDBcXDA4MlxcMDAxXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDIzM1xcMDAwXFwxMjhcXDAwMFxcXG5cXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDE2N1xcMDAwXFwwOTNcXDAwMFxcXG5cXDIwN1xcMDAwXFwwNTVcXDAwMVxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwNTdcXDAwMVxcMDQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcXG5cXDEyOFxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDEyOFxcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA1NlxcMDAwXFwwODBcXDAwMFxcMDU2XFwwMDBcXDA4NFxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcXG5cXDA4MFxcMDAwXFwxMDZcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwMDZcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwODZcXDAwMFxcXG5cXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG5cXDA4MFxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDc3XFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA1NlxcMDAwXFwxNDdcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzN1xcMDAwXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwwNzdcXDAwMFxcXG5cXDA3N1xcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTNcXDAwMFxcMDE0XFwwMDBcXDAxNVxcMDAwXFwwMTZcXDAwMFxcXG5cXDAxN1xcMDAwXFwwMThcXDAwMFxcMDE5XFwwMDBcXDAyMFxcMDAwXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDEzMVxcMDAwXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcXG5cXDA4MFxcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDAyMVxcMDAwXFwwMzNcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAwXFwxMzFcXDAwMFxcXG5cXDEzMVxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzNFxcMDAwXFwwMzVcXDAwMFxcXG5cXDAzNlxcMDAwXFwwMzdcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAwMFxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMDAwXFwxMzFcXDAwMFxcXG5cXDEzMVxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXDA3NVxcMDAwXFwxMzFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NVxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDEzMVxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDEzMVxcMDAwXFwwMzlcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFwwNzZcXDAwMFxcXG5cXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc1XFwwMDBcXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwxNDZcXDAwMFxcXG5cXDE0NlxcMDAwXFwxNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE0NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3M1xcMDAwXFwxNDZcXDAwMFxcMDc1XFwwMDBcXDE0NlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOTNcXDAwMFxcXG5cXDA5M1xcMDAwXFwwOTNcXDAwMFxcMTQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkzXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcXG5cXDA5M1xcMDAwXFwxNDZcXDAwMFxcMTQ2XFwwMDBcXDA0MFxcMDAwXFwxNDZcXDAwMFxcMTQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwOTNcXDAwMFxcMDAwXFwwMDBcXDA5M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDQwXFwwMDBcXDAwMFxcMDAwXFwwNDBcXDAwMFxcMTc2XFwwMDBcXDE3N1xcMDAwXFwxNzhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc5XFwwMDBcXDA4NFxcMDAwXFwwODRcXDAwMFxcMDg0XFwwMDBcXDE4MFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE4MVxcMDAwXFwwODRcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA2XFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwODZcXDAwMFxcXG5cXDA4NlxcMDAwXFwwODZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4NlxcMDAwXFwwMDBcXDAwMFxcMTA2XFwwMDBcXDEwNlxcMDAwXFwxMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAwXFwwODZcXDAwMFxcMTA2XFwwMDBcXDA4NlxcMDAwXFwwNzRcXDAwMFxcXG5cXDA4NFxcMDAwXFwwODRcXDAwMFxcMTQ3XFwwMDBcXDE0N1xcMDAwXFwwMDBcXDAwMFxcMTA2XFwwMDBcXDAwMFxcMDAwXFwxNDdcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMDZcXDAwMFxcMTA2XFwwMDBcXDAwMFxcMDAwXFwwMzdcXDAwMFxcMTA2XFwwMDBcXDA5MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA5OVxcMDAwXFwwMzdcXDAwMFxcMTA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDE0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAzN1xcMDAwXFwwMDBcXDAwMFxcMDM3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI5XFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwxNDdcXDAwMFxcMjI2XFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDE0N1xcMDAwXFwxNDdcXDAwMFxcMDAwXFwwMDBcXDE1MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwODBcXDAwMFxcXG5cXDA1MFxcMDAwXFwwMDBcXDAwMFxcMTc2XFwwMDBcXDE3N1xcMDAwXFwxNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzlcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4MFxcMDAwXFwwMDBcXDAwMFxcMTgxXFwwMDBcXDAwMFxcMDAwXFwwNTBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcXG5cXDE5NlxcMDAwXFwxMzdcXDAwMFxcMTM3XFwwMDBcXDAwMFxcMDAwXFwxMzdcXDAwMFxcMTM3XFwwMDBcXDEzN1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDE1NFxcMDAwXFwxNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMFxcXG5cXDE1OVxcMDAwXFwxNjBcXDAwMFxcMTYxXFwwMDBcXDE2MlxcMDAwXFwxNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI5XFwwMDBcXDIzMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzNFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA5MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcXG5cXDA1NFxcMDAwXFwwNTVcXDAwMFxcMjQzXFwwMDBcXDI0NFxcMDAwXFwyNDVcXDAwMFxcMjQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyNDlcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcXG5cXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDZcXDAwMVxcXG5cXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcXG5cXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MFxcMDAwXFwyNTFcXDAwMFxcMjUyXFwwMDBcXDI1M1xcMDAwXFwyNTRcXDAwMFxcXG5cXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMVxcMDE2XFwwMDFcXDIwOVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkxXFwwMDBcXDEzN1xcMDAwXFwwMDBcXDAwMFxcMTM3XFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcXG5cXDA1NVxcMDAwXFwwMDBcXDAwMFxcMTM3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMVxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcXG5cXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDEwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwOThcXDAwMFxcXG5cXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcXG5cXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcXG5cXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcXG5cXDA3N1xcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcXG5cXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNTdcXDAwMFxcXG5cXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcXG5cXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcXG5cXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwxOTVcXDAwMFxcXG5cXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcXG5cXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcXG5cXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcXG5cXDA3N1xcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcXG5cXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwyMDBcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwxMzVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcXG5cXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcXG5cXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcXG5cXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcXG5cXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcXG5cXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcXG5cXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcXG5cXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjZcXDAwMFxcXG5cXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDAyNlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcXG5cXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjZcXDAwMFxcXG5cXDAyNlxcMDAwXFwwNTZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcXG5cXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcXG5cXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcXG5cXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcXG5cXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcXG5cXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcXG5cXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDEzNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcXG5cXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwNThcXDAwMFxcXG5cXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcXG5cXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXCJcblxubGV0IHl5Y2hlY2sgPSBcIlxcMDA5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDkwXFwwMDBcXDAyNlxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXFxuXFwwMDBcXDAwMFxcMTMzXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMVxcMDM4XFwwMDBcXDAzOVxcMDAwXFwxMzhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDEwXFwwMDFcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMjRcXDAwMFxcMDI1XFwwMDBcXFxuXFwwMjFcXDAwMVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMzdcXDAwMFxcMTE3XFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXFxuXFwwMjVcXDAwMVxcMDAwXFwwMDBcXDAwNFxcMDAxXFwwNzdcXDAwMVxcMDEwXFwwMDFcXDAwMFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXFxuXFwwMzNcXDAwMFxcMDgxXFwwMDFcXDA5OVxcMDAwXFwwMDVcXDAwMVxcMDQ1XFwwMDFcXDEwMlxcMDAwXFwwMDBcXDAwMFxcMDA2XFwwMDFcXFxuXFwwNDNcXDAwMVxcMDAxXFwwMDFcXDAyN1xcMDAxXFwwMjVcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDc5XFwwMDFcXFxuXFwwNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTJcXDAwMFxcMDcyXFwwMDFcXDA1NVxcMDAxXFwwMDBcXDAwMFxcMDA1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDFcXFxuXFwxMjlcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAwXFwwNTVcXDAwMVxcMDI3XFwwMDFcXDA3NFxcMDAxXFwwMTFcXDAwMVxcMTM2XFwwMDBcXFxuXFwwMDVcXDAwMVxcMDQzXFwwMDFcXDAwMFxcMDAwXFwwMjdcXDAwMVxcMDc4XFwwMDFcXDA3OFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXFxuXFwwMjVcXDAwMVxcMDc4XFwwMDFcXDAyN1xcMDAxXFwwMDNcXDAwMVxcMDU1XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDY1XFwwMDFcXFxuXFwwMDBcXDAwMFxcMDc2XFwwMDFcXDA3OFxcMDAxXFwwNzZcXDAwMVxcMTI0XFwwMDBcXDIyNVxcMDAwXFwwOTBcXDAwMFxcMjI3XFwwMDBcXFxuXFwwNzhcXDAwMVxcMDYwXFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDU4XFwwMDFcXFxuXFwxMTRcXDAwMFxcMDcyXFwwMDFcXDEyNFxcMDAwXFwxMjVcXDAwMFxcMTU2XFwwMDBcXDE1N1xcMDAwXFwxMDZcXDAwMFxcMDQ0XFwwMDFcXFxuXFwwNzJcXDAwMVxcMTA5XFwwMDBcXDA1OFxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA3NlxcMDAxXFwwMDBcXDAwMFxcMDUyXFwwMDFcXFxuXFwwMDNcXDAwMVxcMDc2XFwwMDFcXDAwNlxcMDAxXFwwMDZcXDAwMVxcMDc2XFwwMDFcXDE5MFxcMDAwXFwwMTBcXDAwMVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMDAwXFwwMDFcXDAwMlxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDA3N1xcMDAxXFwwNzlcXDAwMVxcMDkwXFwwMDFcXFxuXFwwMjdcXDAwMVxcMDA1XFwwMDFcXDAwOVxcMDAxXFwwMDNcXDAwMVxcMDA1XFwwMDFcXDAwMFxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDBcXFxuXFwwNzdcXDAwMVxcMTAwXFwwMDFcXDAwNVxcMDAxXFwwMzBcXDAwMVxcMDc3XFwwMDFcXDE1MFxcMDAwXFwwMTVcXDAwMVxcMDE2XFwwMDFcXFxuXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMTAwXFwwMDFcXDAyMlxcMDAxXFwxMTNcXDAwMVxcMDM5XFwwMDFcXFxuXFwwNDRcXDAwMVxcMDAyXFwwMDFcXDA4MVxcMDAxXFwwMzBcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMzBcXDAwMVxcMTIyXFwwMDFcXFxuXFwwNTJcXDAwMVxcMTEzXFwwMDFcXDE2NlxcMDAwXFwwMDZcXDAwMVxcMDU1XFwwMDFcXDEyOFxcMDAxXFwwNzdcXDAwMVxcMjA3XFwwMDBcXFxuXFwwNzlcXDAwMVxcMTczXFwwMDBcXDE3NFxcMDAwXFwyMTFcXDAwMFxcMDE5XFwwMDFcXDA2NFxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXFxuXFwyMzFcXDAwMFxcMDc2XFwwMDFcXDA1NVxcMDAxXFwwMDZcXDAwMVxcMDU1XFwwMDFcXDIwN1xcMDAwXFwyMjRcXDAwMFxcMDMyXFwwMDFcXFxuXFwyMjZcXDAwMFxcMDc3XFwwMDFcXDIwNFxcMDAwXFwwNjRcXDAwMVxcMDc2XFwwMDFcXDA2NFxcMDAxXFwwMDVcXDAwMVxcMjAwXFwwMDBcXFxuXFwwODBcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXFxuXFwwMDVcXDAwMVxcMDQ0XFwwMDFcXDA3NVxcMDAxXFwwMjJcXDAwMVxcMDc3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDQ4XFwwMDFcXFxuXFwwNDlcXDAwMVxcMDUyXFwwMDFcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDAxMVxcMDAxXFwwMDNcXDAwMVxcMDMwXFwwMDFcXFxuXFwwMDBcXDAwMFxcMDA2XFwwMDFcXDAzN1xcMDAxXFwwMzRcXDAwMVxcMDI1XFwwMDFcXDAzNlxcMDAxXFwwMjdcXDAwMVxcMDAzXFwwMDFcXFxuXFwwODFcXDAwMVxcMDcyXFwwMDFcXDAwNlxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDA0NFxcMDAxXFwwMTRcXDAwMVxcMDMxXFwwMDFcXFxuXFwwMDVcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA1MlxcMDAxXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXFxuXFwwMDZcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXFxuXFwwMDhcXDAwMVxcMDAxXFwwMDFcXDAxMFxcMDAxXFwwMDNcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDA4XFwwMDFcXFxuXFwwMDFcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAyMVxcMDAxXFwwNzdcXDAwMVxcMDIzXFwwMDFcXFxuXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXFxuXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAwMVxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXFxuXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDAxXFwwMDFcXFxuXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDAxXFwwMDFcXFxuXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDAwMVxcMDAxXFwwMDFcXDAwMVxcMDAzXFwwMDFcXDAwMVxcMDAxXFwwMDFcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDc3XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDAxXFwwMDFcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDFcXFxuXFwwNzJcXDAwMVxcMDczXFwwMDFcXDAwMVxcMDAxXFwwMDNcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMDZcXDAwMVxcMDc5XFwwMDFcXFxuXFwwODBcXDAwMVxcMDgxXFwwMDFcXDA5MlxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXFxuXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwOFxcMDAxXFwwNzlcXDAwMVxcMDEwXFwwMDFcXDA3MlxcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXFxuXFwwMTRcXDAwMVxcMDAxXFwwMDFcXDAzNFxcMDAxXFwwMDRcXDAwMVxcMDM2XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDIxXFwwMDFcXFxuXFwwMTBcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXFxuXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDA2XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXFxuXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMDQ5XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwNTJcXDAwMVxcMDUzXFwwMDFcXFxuXFwwNTRcXDAwMVxcMDIxXFwwMDFcXDA0NFxcMDAxXFwwMjNcXDAwMVxcMDQ0XFwwMDFcXDA0M1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MlxcMDAxXFwwMDZcXDAwMVxcMDUyXFwwMDFcXDAwOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDA3MlxcMDAxXFwwNzNcXDAwMVxcMDc3XFwwMDFcXDAwNlxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXFxuXFwwMDlcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwODFcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXFxuXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMDIxXFwwMDFcXDAxMFxcMDAxXFwwMjNcXDAwMVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAwNlxcMDAxXFwwMDVcXDAwMVxcMDA4XFwwMDFcXDAwN1xcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXFxuXFwwMjFcXDAwMVxcMDI1XFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXFxuXFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDA3N1xcMDAxXFwwMzVcXDAwMVxcMDA1XFwwMDFcXFxuXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXFxuXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAwNVxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDUyXFwwMDFcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA0NFxcMDAxXFwwMjVcXDAwMVxcMDAzXFwwMDFcXDAyN1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1MlxcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwNzJcXDAwMVxcMDczXFwwMDFcXDA0M1xcMDAxXFwwMDZcXDAwMVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMDA5XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDgxXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXFxuXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA4XFwwMDFcXDAyMVxcMDAxXFwwMTBcXDAwMVxcMDIzXFwwMDFcXFxuXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDE5XFwwMDFcXFxuXFwwMjBcXDAwMVxcMDIxXFwwMDFcXDAzMFxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXFxuXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwNzJcXDAwMVxcMDM1XFwwMDFcXFxuXFwwMTBcXDAwMVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXFxuXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNTVcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXFxuXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwMDBcXDAwMFxcMDY0XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDQ0XFwwMDFcXFxuXFwwMDZcXDAwMVxcMDM0XFwwMDFcXDAyNVxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAzMFxcMDAxXFwwMDNcXDAwMVxcMDUyXFwwMDFcXFxuXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDA0NFxcMDAxXFwwMDBcXDAwMFxcMDcyXFwwMDFcXDA3M1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA1MlxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDA4MVxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXFxuXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwOFxcMDAxXFwwNTVcXDAwMVxcMDEwXFwwMDFcXFxuXFwwNzdcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDAwXFwwMDBcXDAwNlxcMDAxXFwwMDZcXDAwMVxcMDY0XFwwMDFcXFxuXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAyMVxcMDAxXFwwNzdcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwwMDNcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDQ4XFwwMDFcXFxuXFwwMzVcXDAwMVxcMDA1XFwwMDFcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXFxuXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDAwXFwwMDBcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDUwXFwwMDFcXFxuXFwwNTFcXDAwMVxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDA2XFwwMDFcXDAyNVxcMDAxXFwwNDRcXDAwMVxcMDI3XFwwMDFcXFxuXFwwNDRcXDAwMVxcMDI1XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDQ0XFwwMDFcXDAyM1xcMDAxXFwwNTJcXDAwMVxcMDA2XFwwMDFcXFxuXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwOFxcMDAxXFwwNDRcXDAwMVxcMDUyXFwwMDFcXDA3MlxcMDAxXFwwNzNcXDAwMVxcMDQzXFwwMDFcXFxuXFwwMjVcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwODFcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMTBcXDAwMVxcMDczXFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAwM1xcMDAxXFwwNzZcXDAwMVxcMDc2XFwwMDFcXFxuXFwwNDRcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMjFcXDAwMVxcMDMwXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXFxuXFwwNDRcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMDA0XFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXFxuXFwwMDBcXDAwMFxcMDM1XFwwMDFcXDAwNVxcMDAxXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXFxuXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAwMFxcMDAwXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDAyNlxcMDAxXFwwMjVcXDAwMVxcMDc2XFwwMDFcXFxuXFwwMjdcXDAwMVxcMDMwXFwwMDFcXDA3NlxcMDAxXFwwNzZcXDAwMVxcMDAwXFwwMDBcXDAzNFxcMDAxXFwwNzdcXDAwMVxcMDM2XFwwMDFcXFxuXFwwNzZcXDAwMVxcMDQ5XFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDc3XFwwMDFcXDAwNlxcMDAxXFwwNzJcXDAwMVxcMDczXFwwMDFcXFxuXFwwMDZcXDAwMVxcMDQ4XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDA2XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDgxXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA4XFwwMDFcXFxuXFwwMDBcXDAwMFxcMDEwXFwwMDFcXDA3N1xcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMjFcXDAwMFxcMDA4XFwwMDBcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDIxXFwwMDFcXDAxOFxcMDAwXFwwMjNcXDAwMVxcMDI0XFwwMDFcXFxuXFwwMjVcXDAwMVxcMjAyXFwwMDBcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDAwMFxcMDAwXFwwMzFcXDAwMVxcMDMyXFwwMDFcXFxuXFwwMzNcXDAwMVxcMTA3XFwwMDBcXDAzNVxcMDAxXFwwNDdcXDAwMVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXFxuXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwxNDdcXDAwMFxcMDQ4XFwwMDFcXFxuXFwwNDlcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNzFcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMThcXDAwMFxcMDIwXFwwMDFcXDA0MVxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDcyXFwwMDFcXFxuXFwwNzNcXDAwMVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDgwXFwwMDFcXFxuXFwwODFcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDZcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMjFcXDAwMVxcMDA2XFwwMDFcXDAyM1xcMDAxXFwwMDBcXDAwMFxcMDA5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAxXFwyNTVcXDI1NVxcMDIzXFwwMDFcXFxuXFwwMjFcXDAwMVxcMDAwXFwwMDBcXDAyM1xcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMDI3XFwwMDFcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDFcXDAwMVxcMDAxXFwwMjNcXDAwMVxcMjU1XFwyNTVcXFxuXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMDgxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDE5XFwwMDFcXFxuXFwwMjBcXDAwMVxcMDgxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXFxuXFwwNjBcXDAwMVxcMDYxXFwwMDFcXDA2MlxcMDAxXFwwNjNcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMjU1XFwyNTVcXDAxMFxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDFcXFxuXFwwMDBcXDAwMFxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNzlcXDAwMVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwwMTlcXDAwMVxcMDIwXFwwMDFcXFxuXFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMVxcMDE2XFwwMDFcXFxuXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMDQ0XFwwMDFcXFxuXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDI1NVxcMjU1XFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMDUyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMjU1XFwyNTVcXDAyMVxcMDAxXFwyNTVcXDI1NVxcMDIzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAwNlxcMDAxXFwwNzJcXDAwMVxcMDczXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzdcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwNzFcXDAwMVxcMDE5XFwwMDFcXFxuXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAxXFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDlcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMDIxXFwwMDFcXDA3MlxcMDAxXFwwMjNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcyXFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXFxuXFwwMDlcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwMDZcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcMjU1XFwyNTVcXFxuXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDAyMVxcMDAxXFwyNTVcXDI1NVxcMDIzXFwwMDFcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMzRcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzZcXDAwMVxcMDA2XFwwMDFcXDAwMVxcMDAxXFwyNTVcXDI1NVxcMDA5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFwyNTVcXDI1NVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDlcXDAwMVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMDIxXFwwMDFcXDAzNlxcMDAxXFwwMjNcXDAwMVxcMDQ2XFwwMDFcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwyNTVcXDI1NVxcMDA2XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMDAxXFwwMDFcXDA1MlxcMDAxXFwwMTJcXDAwMFxcMjU1XFwyNTVcXFxuXFwwMTRcXDAwMFxcMDA2XFwwMDFcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMjNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMzZcXDAwMFxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDQzXFwwMDFcXDAwNFxcMDAxXFwwMDZcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDA5XFwwMDFcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwwNTJcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAyMVxcMDAxXFwyNTVcXDI1NVxcMDIzXFwwMDFcXFxuXFwwMDZcXDAwMVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjU1XFwyNTVcXDAzNlxcMDAxXFwyNTVcXDI1NVxcMDIxXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDIzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDkwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTAxXFwwMDBcXFxuXFwxMDJcXDAwMFxcMDM4XFwwMDBcXDAzOVxcMDAwXFwyNTVcXDI1NVxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTE3XFwwMDBcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyMFxcMDAwXFwwNTZcXDAwMFxcMDU3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYwXFwwMDBcXFxuXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDA2M1xcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwxMzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzOVxcMDAwXFwxNDBcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDhcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMTcwXFwwMDBcXDE3MVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMTc1XFwwMDBcXDI1NVxcMjU1XFwwMjRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjdcXDAwMVxcMDI4XFwwMDFcXFxuXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMTg5XFwwMDBcXFxuXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwODBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNzZcXDAwMFxcMTc3XFwwMDBcXDE3OFxcMDAwXFwxNzlcXDAwMFxcMTgwXFwwMDBcXFxuXFwxODFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMlxcMDAxXFwyMjRcXDAwMFxcMjU1XFwyNTVcXDIyNlxcMDAwXFwwMTJcXDAwMVxcMDEzXFwwMDFcXFxuXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDIzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNFxcMDAxXFwyNTVcXDI1NVxcMDUwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXFxuXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXFxuXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXFxuXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXFxuXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXFxuXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXFxuXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXFxuXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXFxuXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXFxuXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXFxuXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXFxuXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXFxuXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXFxuXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXFxuXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDE5XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDgxXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDI0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXFxuXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwwMDdcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXFxuXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXFxuXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXFxuXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXFxuXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXFxuXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXFxuXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXFxuXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXFxuXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXFxuXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXFxuXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXFxuXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXFxuXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXFxuXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwyNTVcXDI1NVxcMDI4XFwwMDFcXFxuXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwODBcXDAwMVwiXG5cbmxldCB5eW5hbWVzX2NvbnN0ID0gXCJcXFxuICBFT0ZcXDAwMFxcXG4gIE5FV0xJTkVcXDAwMFxcXG4gIFNFTUlDT0xPTlxcMDAwXFxcbiAgQ09NTUFcXDAwMFxcXG4gIERPVFxcMDAwXFxcbiAgT1BfUEFSXFwwMDBcXFxuICBDTF9QQVJcXDAwMFxcXG4gIE9QX0NVUlxcMDAwXFxcbiAgQ0xfQ1VSXFwwMDBcXFxuICBBVFxcMDAwXFxcbiAgVFlQRVxcMDAwXFxcbiAgTEFSXFwwMDBcXFxuICBDUFVUSU1FXFwwMDBcXFxuICBFTUFYXFwwMDBcXFxuICBUTUFYXFwwMDBcXFxuICBQTE9URU5UUllcXDAwMFxcXG4gIERFTEVURVxcMDAwXFxcbiAgSU5UUk9cXDAwMFxcXG4gIFRSQUNLXFwwMDBcXFxuICBET1xcMDAwXFxcbiAgU0VUXFwwMDBcXFxuICBSRVBFQVRcXDAwMFxcXG4gIFNQRUNJRVNfT0ZcXDAwMFxcXG4gIFVOVElMXFwwMDBcXFxuICBMT0dcXDAwMFxcXG4gIFBMVVNcXDAwMFxcXG4gIE1VTFRcXDAwMFxcXG4gIE1JTlVTXFwwMDBcXFxuICBNQVhcXDAwMFxcXG4gIE1JTlxcMDAwXFxcbiAgRElWXFwwMDBcXFxuICBTSU5VU1xcMDAwXFxcbiAgQ09TSU5VU1xcMDAwXFxcbiAgVEFOXFwwMDBcXFxuICBQT1dcXDAwMFxcXG4gIEFCU1xcMDAwXFxcbiAgTU9EVUxPXFwwMDBcXFxuICBTUVJUXFwwMDBcXFxuICBFWFBPTkVOVFxcMDAwXFxcbiAgSU5GSU5JVFlcXDAwMFxcXG4gIFRJTUVcXDAwMFxcXG4gIEVWRU5UXFwwMDBcXFxuICBOVUxMX0VWRU5UXFwwMDBcXFxuICBQSVBFXFwwMDBcXFxuICBFUVVBTFxcMDAwXFxcbiAgQU5EXFwwMDBcXFxuICBPUlxcMDAwXFxcbiAgTk9UXFwwMDBcXFxuICBHUkVBVEVSXFwwMDBcXFxuICBTTUFMTEVSXFwwMDBcXFxuICBUUlVFXFwwMDBcXFxuICBGQUxTRVxcMDAwXFxcbiAgRElGRlxcMDAwXFxcbiAgS0FQUEFfUkFSXFwwMDBcXFxuICBLQVBQQV9MUkFSXFwwMDBcXFxuICBLQVBQQV9MTktcXDAwMFxcXG4gIFNJR05BVFVSRVxcMDAwXFxcbiAgSU5JVFxcMDAwXFxcbiAgTEVUXFwwMDBcXFxuICBQTE9UXFwwMDBcXFxuICBQRVJUXFwwMDBcXFxuICBPQlNcXDAwMFxcXG4gIFRPS0VOXFwwMDBcXFxuICBDT05GSUdcXDAwMFxcXG4gIEtBUFBBX1dMRFxcMDAwXFxcbiAgS0FQUEFfU0VNSVxcMDAwXFxcbiAgRkxVWFxcMDAwXFxcbiAgQVNTSUdOXFwwMDBcXFxuICBQUklOVEZcXDAwMFxcXG4gIFNUT1BcXDAwMFxcXG4gIFNOQVBTSE9UXFwwMDBcXFxuICBSVU5cXDAwMFxcXG4gIFRIRU5cXDAwMFxcXG4gIEVMU0VcXDAwMFxcXG4gIEFMQVJNXFwwMDBcXFxuICBBUFBMWVxcMDAwXFxcbiAgXCJcblxubGV0IHl5bmFtZXNfYmxvY2sgPSBcIlxcXG4gIElOVFxcMDAwXFxcbiAgSURcXDAwMFxcXG4gIEtBUFBBX01SS1xcMDAwXFxcbiAgTEFCRUxcXDAwMFxcXG4gIEZMT0FUXFwwMDBcXFxuICBTVFJJTkdcXDAwMFxcXG4gIFwiXG5cbmxldCB5eWFjdCA9IFt8XG4gIChmdW4gXyAtPiBmYWlsd2l0aCBcInBhcnNlclwiKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAxMDc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25ld2xpbmUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgKGZ1biBjIC0+IGMpXG4jIDEwODEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbmV3bGluZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25ld2xpbmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgIChfMSlcbiMgMTA4OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3J1bGVfZXhwcmVzc2lvbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25ld2xpbmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgIChsZXQgb3V0ID0gKFNvbWUgKF8xLCByaHNfcG9zIDEpLF8yKSBpblxuXHRmdW4gYyAtPiBsZXQgciA9IF8zIGMgaW4ge3Igd2l0aCBBc3QucnVsZXMgPSBvdXQ6OnIuQXN0LnJ1bGVzfSlcbiMgMTA5OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdydWxlX2V4cHJlc3Npb24pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduZXdsaW5lKSBpblxuICAgIE9iai5yZXByKFxuIyA2NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAoZnVuIGMgLT4gbGV0IHIgPSBfMiBjIGluIHtyIHdpdGggQXN0LnJ1bGVzID0gKE5vbmUsXzEpOjpyLkFzdC5ydWxlc30pXG4jIDExMDYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25ld2xpbmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgIChsZXQgb3V0ID0gKChfMSxyaHNfcG9zIDEpLF8zKSBpblxuXHRmdW4gYyAtPiBsZXQgciA9IF80IGMgaW4ge3Igd2l0aCBBc3QudmFyaWFibGVzID0gb3V0OjpyLkFzdC52YXJpYWJsZXN9KVxuIyAxMTE2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2luc3RydWN0aW9uKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbmV3bGluZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIGZ1biBjIC0+IGxldCByID0gXzIgYyBpblxuXHRcdCAgICAgIG1hdGNoIF8xIHdpdGhcblx0XHQgICAgICB8IEFzdC5SVUxFIHJ1IC0+XG5cdFx0XHQge3Igd2l0aCBBc3QucnVsZXMgPSBydTo6ci5Bc3QucnVsZXN9XG5cdFx0ICAgICAgfCBBc3QuU0lHIGFnIC0+XG5cdFx0XHQge3Igd2l0aCBBc3Quc2lnbmF0dXJlcz1hZzo6ci5Bc3Quc2lnbmF0dXJlc31cblx0XHQgICAgICB8IEFzdC5UT0tFTlNJRyAoc3RyX3BvcykgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC50b2tlbnM9c3RyX3Bvczo6ci5Bc3QudG9rZW5zfVxuXHRcdCAgICAgIHwgQXN0LlZPTFNJRyAodm9sX3R5cGUsdm9sLHZvbF9wYXJhbSkgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC52b2x1bWVzPSh2b2xfdHlwZSx2b2wsdm9sX3BhcmFtKTo6ci5Bc3Qudm9sdW1lc31cblx0XHQgICAgICB8IEFzdC5JTklUIChhbGcsaW5pdF90KSAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LmluaXQ9KGFsZyxpbml0X3QpOjpyLkFzdC5pbml0fVxuXHRcdCAgICAgIHwgQXN0LkRFQ0xBUkUgdmFyIC0+XG5cdFx0XHQge3Igd2l0aCBBc3QudmFyaWFibGVzID0gdmFyOjpyLkFzdC52YXJpYWJsZXN9XG5cdFx0ICAgICAgfCBBc3QuT0JTICgobGJsLHBvcyksXyBhcyB2YXIpIC0+XG5cdFx0XHQgKCpmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgc2hvcnRjdXQgZm9yICV2YXIgKyAlcGxvdCopXG5cdFx0XHQgICB7ciB3aXRoXG5cdFx0XHQgICAgIEFzdC52YXJpYWJsZXMgPSB2YXI6OnIuQXN0LnZhcmlhYmxlcztcblx0XHRcdCAgICAgQXN0Lm9ic2VydmFibGVzID0gKEFsZ19leHByLkFMR19WQVIgbGJsLHBvcylcblx0XHRcdFx0XHRcdCA6OnIuQXN0Lm9ic2VydmFibGVzfVxuXHRcdCAgICAgIHwgQXN0LlBMT1QgZXhwciAtPlxuXHRcdFx0IHtyIHdpdGggQXN0Lm9ic2VydmFibGVzID0gZXhwcjo6ci5Bc3Qub2JzZXJ2YWJsZXN9XG5cdFx0ICAgICAgfCBBc3QuUEVSVCAoKGFsYXJtLHByZSxlZmZlY3Qsb3B0KSxwb3MpIC0+XG5cdFx0XHQge3Igd2l0aFxuXHRcdFx0ICBBc3QucGVydHVyYmF0aW9ucyA9XG5cdFx0XHQgICAoKGFsYXJtLHByZSxlZmZlY3Qsb3B0KSxwb3MpOjpyLkFzdC5wZXJ0dXJiYXRpb25zfVxuXHRcdCAgICAgIHwgQXN0LkNPTkZJRyAocGFyYW1fbmFtZSx2YWx1ZV9saXN0KSAtPlxuXHRcdFx0IHtyIHdpdGhcblx0XHRcdCAgQXN0LmNvbmZpZ3VyYXRpb25zID0gKHBhcmFtX25hbWUsdmFsdWVfbGlzdCk6OnIuQXN0LmNvbmZpZ3VyYXRpb25zfVxuXHRcdCAgKVxuIyAxMTUzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTAwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyBcIlN5bnRheCBlcnJvclwiKSkpXG4jIDExNTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnRfZXhwcmVzc2lvbl9zaWcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuU0lHIF8yKVxuIyAxMTY2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgKEFzdC5UT0tFTlNJRyAoXzIscmhzX3BvcyAyKSlcbiMgMTE3MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTA2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0XHQoYWRkX3BvcyBcIk1hbGZvcm1lZCBhZ2VudCBzaWduYXR1cmUsIEkgd2FzIGV4cGVjdGluZyBzb21ldGhpbmcgb2YgdGhlIGZvcm0gJyVhZ2VudDogQSh4LHl+dX52LHopJ1wiKSkpXG4jIDExODAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbml0X2RlY2xhcmF0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyAxMDkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LklOSVQgXzIpXG4jIDExODcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDExMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAgKGFkZF9wb3MgXCJNYWxmb3JtZWQgaW5pdGlhbCBjb25kaXRpb25cIikpKVxuIyAxMTk0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDExNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuREVDTEFSRSBfMilcbiMgMTIwMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0Lk9CUyBfMilcbiMgMTIwOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKEFzdC5QTE9UIF8yKVxuIyAxMjE1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0ICAgKGFkZF9wb3MgXCJNYWxmb3JtZWQgcGxvdCBpbnN0cnVjdGlvbiwgYW4gYWxnZWJyYWljIGV4cHJlc3Npb24gaXMgZXhwZWN0ZWRcIikpKVxuIyAxMjIyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuUEVSVCAoYWRkX3BvcyBfMikpXG4jIDEyMjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhbHVlX2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEyMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKEFzdC5DT05GSUcgKChfMixyaHNfcG9zIDIpLF8zKSlcbiMgMTIzNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uX2VtcHR5X21peHR1cmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEyNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggKF8xLEFzdC5JTklUX01JWCAoXzIscmhzX3BvcyAyKSkgKVxuIyAxMjQ1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ25vbl9lbXB0eV9taXh0dXJlKSBpblxuICAgIE9iai5yZXByKFxuIyAxMjggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIChfMSxBc3QuSU5JVF9NSVggKF8zLCByaHNfcG9zIDMpKSApXG4jIDEyNTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEyOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICgoXzMsQXN0LklOSVRfVE9LIFtfMSxyaHNfcG9zIDFdKSlcbiMgMTI2MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMTMwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAoKF8xLEFzdC5JTklUX1RPSyBbXzIscmhzX3BvcyAyXSkpXG4jIDEyNjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAxMzQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAoW18xLCByaHNfcG9zIDFdKVxuIyAxMjc2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhbHVlX2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhbHVlX2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKChfMSxyaHNfcG9zIDEpOjpfMilcbiMgMTI4NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YWx1ZV9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMzkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKE5vbmUpXG4jIDEyOTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2FsYXJtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbmJyKSBpblxuICAgIE9iai5yZXByKFxuIyAxNDAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgKFNvbWUgXzIpXG4jIDEyOTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2FsYXJtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxNDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKE5vbmUpXG4jIDEzMDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX3Bvc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE0NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgKFNvbWUgXzIpXG4jIDEzMTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX3Bvc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE0NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoIFNvbWUgKGFkZF9wb3MgKEFsZ19leHByLlVOX0JPT0xfT1AgKE9wZXJhdG9yLk5PVCxfMikpKSlcbiMgMTMxNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fcG9zdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3BlcnR1cmJhdGlvbl9hbGFybSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX3Bvc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE1MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggKF8xLFNvbWUgXzIsXzQsXzUpIClcbiMgMTMyNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIChfMSxOb25lLF8zLF80KSApXG4jIDEzMzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE1NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgKCAoTm9uZSxTb21lIF8yLF80LFNvbWUgKGFkZF9wb3MgKEFsZ19leHByLlVOX0JPT0xfT1AgKE9wZXJhdG9yLk5PVCxfNikpKSkpXG4jIDEzNDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE1OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoIChfMSxTb21lIF8yLF80LE5vbmUpKVxuIyAxMzU0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNjIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzEpXG4jIDEzNjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QubW9kaWZfZXhwciBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE2NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzIpXG4jIDEzNjggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdlZmZlY3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgIChbXzFdKVxuIyAxMzc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnZWZmZWN0KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE2NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzE6Ol8zKVxuIyAxMzgzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMTcyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoQXN0LlVQREFURSAoKF8yLHJoc19wb3MgMiksXzMpKVxuIyAxMzkxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE3NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKEFzdC5VUERBVEUgKChfMixyaHNfcG9zIDIpLF8zKSlcbiMgMTM5OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xlYW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDE3NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAoQXN0LkNGTE9XTEFCRUwgKF8zLChfMixyaHNfcG9zIDIpKSlcbiMgMTQwNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbGVhbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTc4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgIChBc3QuQ0ZMT1dNSVggKF8zLChbXzJdLHJoc19wb3MgMikpKVxuIyAxNDE1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sZWFuKSBpblxuICAgIE9iai5yZXByKFxuIyAxODAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoaWYgXzMgdGhlbiBBc3QuRElOIChQcmltaXRpdmVzLlJFTEFUSVZFLF8yKSBlbHNlIEFzdC5ESU5PRkYgXzIpXG4jIDE0MjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbGVhbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTgyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKGlmIF80ICYmIF8zID0gXCJhYnNvbHV0ZVwiIHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5BQlNPTFVURSxfMilcblx0ICAgZWxzZSBpZiBfNCAmJiBfMyA9IFwicHJvYmFiaWxpdHlcIiB0aGVuXG5cdCAgICAgQXN0LkRJTiAoUHJpbWl0aXZlcy5QUk9CQUJJTElUWSxfMilcblx0ICAgZWxzZSBpZiBfNCAmJiBfMyA9IFwicmVsYXRpdmVcIiB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUsXzIpXG5cdCAgICAgZWxzZSByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0ICAgICAgIChcIkluY29ycmVjdCBESU4gZXhwcmVzc2lvblwiLHJoc19wb3MgMykpKVxuIyAxNDM3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncnVsZV9jb250ZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxODkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICggQXN0LkFQUExZKFxuXHRcdCAgIF8yLFxuXHRcdCAgICh7IEFzdC5yZXdyaXRlID0gZnN0IF8zO1xuXHRcdCAgICAgIEFzdC5iaWRpcmVjdGlvbmFsID0gZmFsc2U7XG5cdFx0ICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvO0FzdC5rX3VuPU5vbmU7XG5cdFx0ICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0scmhzX3BvcyAzKSlcblx0XHQgKVxuIyAxNDUxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uX2VtcHR5X21peHR1cmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE5NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAoIEFzdC5BUFBMWShfMixcbiAgICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgIEFzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuID0gW107XG4gICAgICAgICAgICAgICAgICBBc3QucmhzPV8zOyBBc3QuYWRkX3Rva2VuID0gW107fTtcblx0XHQgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0scmhzX3BvcyAzKSlcbiAgICAgICAgKVxuIyAxNDY2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjA2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIk1hbGZvcm1lZCBwZXJ0dXJiYXRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIGV4cGVjdGluZyAnJEFERCBhbGdfZXhwcmVzc2lvbiBrYXBwYV9leHByZXNzaW9uJ1wiKSkpXG4jIDE0NzMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25fZW1wdHlfbWl4dHVyZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMjA5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgKCBBc3QuQVBQTFkoXzIsXG4gICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgQXN0LkFycm93IHtBc3QubGhzPV8zOyBBc3Qucm1fdG9rZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgQXN0LnJocz1bXTsgQXN0LmFkZF90b2tlbiA9IFtdO307XG5cdFx0IEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LHJoc19wb3MgMykpXG4gICAgICAgKVxuIyAxNDg4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjE5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIk1hbGZvcm1lZCBwZXJ0dXJiYXRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIGV4cGVjdGluZyAnJERFTCBhbGdfZXhwcmVzc2lvbiBrYXBwYV9leHByZXNzaW9uJ1wiKSkpXG4jIDE0OTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjIyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgKFxuICAgICAgIGxldCB0ayA9IChfMSxyaHNfcG9zIDEpIGluXG4gICAgICAgIEFzdC5BUFBMWShBbGdfZXhwci5jb25zdCBOYnIub25lLFxuICAgICAgICAgICBhZGRfcG9zXG4gICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgQXN0LkVkaXRcblx0XHQge0FzdC5taXg9W107XG5cdFx0ICBBc3QuZGVsdGFfdG9rZW4gPVxuXHRcdCAgWyhBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTlVTLF8zLChBbGdfZXhwci5UT0tFTl9JRCBfMSxyaHNfcG9zIDEpKSxyaHNfcG9zIDEpLHRrXTtcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9KSlcbiAgICAgICApXG4jIDE1MTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjM2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuU05BUFNIT1QgKGZhbHNlLF8yKSlcbiMgMTUyMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyMzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoQXN0LlNUT1AgXzIpXG4jIDE1MzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAncHJpbnRfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIzOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBBc3QuUFJJTlQgKF8yLF80KSApXG4jIDE1MzggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyMzkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAoIEFzdC5QTE9URU5UUlkgKVxuIyAxNTQ0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdub25fZW1wdHlfbWl4dHVyZSkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xlYW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBBc3QuU1BFQ0lFU19PRiAoXzQsXzIsKF8zLCByaHNfcG9zIDMpKSlcbiMgMTU1MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMjQ0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgKFtQcmltaXRpdmVzLlN0cl9wZXhwciAoYWRkX3BvcyBfMSldKVxuIyAxNTYwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgIChbUHJpbWl0aXZlcy5BbGdfcGV4cHIgXzFdKVxuIyAxNTY3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmltaXRpdmVzLlN0cl9wZXhwciAoXzEsIHJoc19wb3MgMSk6Ol8zKVxuIyAxNTc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJpbWl0aXZlcy5BbGdfcGV4cHIgXzE6Ol8zKVxuIyAxNTgzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI1MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAoW10pXG4jIDE1ODkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI1MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoXzEpXG4jIDE1OTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjU0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICh0cnVlKVxuIyAxNjAyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xlYW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI1NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKGZhbHNlKVxuIyAxNjA4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xlYW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbl9lbXB0eV9taXh0dXJlKSBpblxuICAgIE9iai5yZXByKFxuIyAyNjAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoICgoXzEscmhzX3BvcyAxKSwoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXzIscmhzX3BvcyAyKSkpXG4jIDE2MTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICgoKF8xLHJoc19wb3MgMSksXzIpKVxuIyAxNjI0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjYyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAoKChfMSxyaHNfcG9zIDEpLF8yKSlcbiMgMTYzMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAyNjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgKHJhaXNlXG5cdCAgICAgICAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgIChhZGRfcG9zIChcIklsbGVnYWwgZGVmaW5pdGlvbiBvZiB2YXJpYWJsZSAnXCJeXzFeXCInXCIpKSlcblx0ICAgIClcbiMgMTY0MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjcxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzIpXG4jIDE2NDkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyNzIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgKGFkZF9wb3MgQWxnX2V4cHIuVFJVRSlcbiMgMTY1NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9ib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI3MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKGFkZF9wb3MgQWxnX2V4cHIuRkFMU0UpXG4jIDE2NjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMTY2OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9ib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI3NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQk9PTF9PUChPcGVyYXRvci5OT1QsXzIpKSlcbiMgMTY3NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI3OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLkFORCxfMSxfMykpKVxuIyAxNjgzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjc5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQk9PTF9PUChPcGVyYXRvci5PUixfMSxfMykpKVxuIyAxNjkxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI4MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuR1JFQVRFUixfMSxfMykpKVxuIyAxNjk5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuU01BTExFUixfMSxfMykpKVxuIyAxNzA3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI4NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuRVFVQUwsXzEsXzMpKSlcbiMgMTcxNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyODcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChhZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkRJRkYsXzEsXzMpKSlcbiMgMTcyMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI5MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xKVxuIyAxNzMwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLHN0cmluZykgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjkzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoW10pXG4jIDE3MzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndG9rZW5fZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3N1bV90b2tlbikgaW5cbiAgICBPYmoucmVwcihcbiMgMjk0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAoXzIpXG4jIDE3NDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndG9rZW5fZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjk2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgKGFkZF9wb3MgIFwiTWFsZm9ybWVkIHRva2VuIGV4cHJlc3Npb24sIEkgd2FzIGV4cGVjdGluZyBhXzAgdF8wICsgLi4uICsgYV9uIHRfbiwgd2hlcmUgdF9pIGFyZSB0b2tlbnMgYW5kIGFfaSBhbnkgYWxnZWJyYWljIGZvcm11bGFcIikpKVxuIyAxNzUwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Rva2VuX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDMwMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAxNzU3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMwMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgKFsoXzEsKF8yLHJoc19wb3MgMikpXSlcbiMgMTc2NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzdW1fdG9rZW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbCA9IF80IGluIChfMSwoXzIscmhzX3BvcyAyKSk6OmwpXG4jIDE3NzQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc3VtX3Rva2VuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMzA0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChbKF8xLChfMyxyaHNfcG9zIDMpKV0pXG4jIDE3ODIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc3VtX3Rva2VuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3N1bV90b2tlbikgaW5cbiAgICBPYmoucmVwcihcbiMgMzA1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbCA9IF81IGluIChfMSwoXzMscmhzX3BvcyAzKSk6OmwpXG4jIDE3OTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc3VtX3Rva2VuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhcnJvdykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd0b2tlbl9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoQXN0LkFycm93IHtBc3QubGhzPVtfMV07IEFzdC5ybV90b2tlbiA9IF8yOyBBc3QucmhzPVtfNF07IEFzdC5hZGRfdG9rZW4gPSBfNX0sXG4gICAgIF8zKVxuIyAxODAzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICd0b2tlbl9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYXJyb3cpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd0b2tlbl9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoQXN0LkFycm93IHtBc3QubGhzPVtfMV07IEFzdC5ybV90b2tlbiA9IF8yOyBBc3QucmhzPVtdOyBBc3QuYWRkX3Rva2VuID0gXzR9LFxuICAgICBfMylcbiMgMTgxNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICd0b2tlbl9leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYXJyb3cpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndG9rZW5fZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzE1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKEFzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuID0gXzE7IEFzdC5yaHM9W18zXTsgQXN0LmFkZF90b2tlbiA9IF80fSxcbiAgICAgXzIpXG4jIDE4MjUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAndG9rZW5fZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fycm93KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndG9rZW5fZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzE4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKEFzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuID0gXzE7IEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW4gPSBfM30sXG4gICAgIF8yKVxuIyAxODM1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd0b2tlbl9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIEFzdC5FZGl0IHtBc3QubWl4ID0gW18xXTsgQXN0LmRlbHRhX3Rva2VuID0gXzJ9LGZhbHNlIClcbiMgMTg0MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggQXN0LkVkaXQge0FzdC5taXggPSBbXTsgQXN0LmRlbHRhX3Rva2VuID0gXzJ9LGZhbHNlIClcbiMgMTg1MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdydWxlX2NvbnRlbnQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdiaXJhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggbGV0IChrX2RlZixrX3VuLGtfb3Asa19vcF91bikgPSBfMiBpblxuICAgICAgbGV0IHJld3JpdGUsYmlkaXJlY3Rpb25hbCA9IF8xIGluXG4gICAgICBhZGRfcG9zIHtcbiAgICAgICAgQXN0LnJld3JpdGU7QXN0LmJpZGlyZWN0aW9uYWw7XG4gICAgICAgIEFzdC5rX2RlZjsgQXN0LmtfdW47IEFzdC5rX29wOyBBc3Qua19vcF91bjtcbiAgICAgIH0gKVxuIyAxODYzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzM1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgKGZhbHNlKVxuIyAxODY5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fycm93KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzMzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgKHRydWUpXG4jIDE4NzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYXJyb3cpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM0MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgKCBOYnIuRiBpbmZpbml0eSApXG4jIDE4ODEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbmJyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBmbG9hdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzQxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoIE5ici5GIF8xIClcbiMgMTg4OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICduYnIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzQyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgKCBOYnIuSSBfMSApXG4jIDE4OTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbmJyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbmJyKSBpblxuICAgIE9iai5yZXByKFxuIyAzNDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQ09OU1QgXzEpKVxuIyAxOTAyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNDYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRU1BWF9WQVIpKSlcbiMgMTkwOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb25zdGFudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzQ3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLlRNQVhfVkFSKSkpXG4jIDE5MTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM0OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5DUFVUSU1FKSkpXG4jIDE5MjAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMzUyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlRPS0VOX0lEIChfMikpKVxuIyAxOTI3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbm9uX2VtcHR5X21peHR1cmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM1MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggYWRkX3BvcyAoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXzIpIClcbiMgMTkzNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzNTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5BTEdfVkFSIChfMSkpKVxuIyAxOTQxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM1NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkFMR19WQVIgKF8xKSkpXG4jIDE5NDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM1NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5USU1FX1ZBUikpKVxuIyAxOTU0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVWRU5UX1ZBUikpKVxuIyAxOTYwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIpKSlcbiMgMTk2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNjIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAxOTczIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnY29uc3RhbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgKF8xKVxuIyAxOTgwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFyaWFibGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgKF8xKVxuIyAxOTg3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzY2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NQVgsXzIsXzMpKSlcbiMgMTk5NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOLF8yLF8zKSkpXG4jIDIwMDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuRVhQLF8yKSkpXG4jIDIwMTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuU0lOVVMsXzIpKSlcbiMgMjAxNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzcxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkNPU0lOVVMsXzIpKSlcbiMgMjAyNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzcyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuVEFOLF8yKSkpXG4jIDIwMzEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLklOVCxfMikpKVxuIyAyMDM4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuU1FSVCxfMikpKVxuIyAyMDQ1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5MT0csXzIpKSlcbiMgMjA1MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzc5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBhZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuVU1JTlVTLF8yKSkgKVxuIyAyMDU5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21pZF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzODAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAyMDY2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21pZF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzgxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTVVMVCxfMSxfMykpKVxuIyAyMDc0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21pZF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzgyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuU1VNLF8xLF8zKSkpXG4jIDIwODIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbWlkX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzODMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLkRJVixfMSxfMykpKVxuIyAyMDkwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21pZF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzg0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTlVTLF8xLF8zKSkpXG4jIDIwOTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbWlkX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzODUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlBPVyxfMSxfMykpKVxuIyAyMTA2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21pZF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzg2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NT0RVTE8sXzEsXzMpKSlcbiMgMjExNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgIChfMSlcbiMgMjEyMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM5MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuSUYoXzEsXzMsXzUpKSlcbiMgMjEzMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3JhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM5MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAobGV0IChrMixrMSkgPSBfMiBpbiAoazIsazEsTm9uZSxOb25lKSlcbiMgMjEzNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdiaXJhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdyYXRlKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncmF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMzk0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoazIsazEpID0gXzIgaW5cblx0XHRcdCAgbGV0IChrYmFjayxrYmFjazEpID0gXzQgaW5cblx0XHRcdCAgKGsyLGsxLFNvbWUga2JhY2ssa2JhY2sxKSlcbiMgMjE0NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdiaXJhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM5NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyBcInJ1bGUgcmF0ZSBleHBlY3RlZFwiKSkpXG4jIDIxNTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYmlyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfd2l0aF9yYWRpdXMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfMSxTb21lIF8zKSlcbiMgMjE2MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfd2l0aF9yYWRpdXMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoXzEsU29tZSBfMykgKVxuIyAyMTY5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3JhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDAzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAoKF8xLE5vbmUpKVxuIyAyMTc2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3JhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfd2l0aF9yYWRpdXMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKChMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQ09OU1QgTmJyLnplcm8pLFNvbWUgXzIpKVxuIyAyMTgzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3JhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDA3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoKF8xLFNvbWUgKExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5DT05TVCBOYnIuemVybyksTm9uZSkpKVxuIyAyMTkwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3JhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQwOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyBcIm1pc3NpbmcgcnVsZSByYXRlXCIpKSlcbiMgMjE5NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQxMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgKChfMSxOb25lKSlcbiMgMjIwMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfd2l0aF9yYWRpdXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfMSwgU29tZSBfMykpXG4jIDIyMTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX3dpdGhfcmFkaXVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgNDE3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAyMjE4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhdHRlcm4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhZ2VudF9leHByZXNzaW9uKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgNDE4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xIDo6IF8zKVxuIyAyMjI2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhdHRlcm4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhZ2VudF9leHByZXNzaW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA0MTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKFtfMV0pXG4jIDIyMzMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGF0dGVybikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQyNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggW1tBc3QuUHJlc2VudCAoKF8xLHJoc19wb3MgMSksIF8zLCBBc3QuTm9Nb2QpXV0gKVxuIyAyMjQxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbl9lbXB0eV9taXh0dXJlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbikgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQyNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggW0FzdC5QcmVzZW50ICgoXzEscmhzX3BvcyAxKSwgXzMsIEFzdC5Ob01vZCkgOjogXzZdKVxuIyAyMjUwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbl9lbXB0eV9taXh0dXJlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0MzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICggQXN0Lk5vTW9kIClcbiMgMjI1NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtb2RfYWdlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQzMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAoIEFzdC5DcmVhdGUgKVxuIyAyMjYyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21vZF9hZ2VudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNDMyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAoIEFzdC5FcmFzZSApXG4jIDIyNjggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbW9kX2FnZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbl9zaWcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQzNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuUHJlc2VudCAoKF8xLHJoc19wb3MgMSksIF8zLCBBc3QuTm9Nb2QpKVxuIyAyMjc2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQzNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgKGFkZF9wb3MgKFwiTWFsZm9ybWVkIGFnZW50ICdcIl5fMV5cIidcIikpKSlcbiMgMjI4NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ21vZF9hZ2VudCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ0MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoQXN0LlByZXNlbnQgKChfMixyaHNfcG9zIDIpLCBfNCwgXzEpKVxuIyAyMjkzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtb2RfYWdlbnQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgNDQzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAgIChhZGRfcG9zIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeXzJeXCInXCIpKSkpXG4jIDIzMDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNDQ4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgIChbXSlcbiMgMjMwOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwb3J0X2V4cHJlc3Npb25fc2lnKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb25fc2lnKSBpblxuICAgIE9iai5yZXByKFxuIyA0NDkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMTo6XzMpXG4jIDIzMTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncG9ydF9leHByZXNzaW9uX3NpZykgaW5cbiAgICBPYmoucmVwcihcbiMgNDUwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbXzFdKVxuIyAyMzIzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNDU0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoW10pXG4jIDIzMjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwb3J0X2V4cHJlc3Npb24pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNDU1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xOjpfMylcbiMgMjMzNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BvcnRfZXhwcmVzc2lvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNDU2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKFtfMV0pXG4jIDIzNDQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDYwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICggU29tZSAoQXN0LkNFUSBfMixyaHNfcG9zIDIpKVxuIyAyMzUxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfdGVzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgKEFzdC5DR1RFIF8zLHJoc19wb3MgMykpXG4jIDIzNTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl90ZXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggU29tZSAoQXN0LkNMVEUgXzMscmhzX3BvcyAzKSlcbiMgMjM2NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgNDYzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgKCBTb21lIChBc3QuQ1ZBUiBfMixyaHNfcG9zIDIpKVxuIyAyMzcyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfdGVzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDY3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1bXTtcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBOb25lOyBBc3QucG9ydF9saW5rX21vZCA9IF8zOyB9IClcbiMgMjM4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVfbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyA0NzEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKCBBc3QuUG9ydFxuXHQgICB7QXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PV8yOyBBc3QucG9ydF9saW5rPV8zO1xuXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IE5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzQ7IH0gKVxuIyAyMzk1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVfbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyA0NzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKCBBc3QuUG9ydFxuXHQgICB7QXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PV8yOyBBc3QucG9ydF9saW5rPVtdO1xuXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IFNvbWUoXzQscmhzX3BvcyA0KTsgQXN0LnBvcnRfbGlua19tb2QgPSBfNTsgfSApXG4jIDI0MDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVfbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyA0NzkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKCBBc3QuUG9ydFxuXHQgICB7QXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PV8yOyBBc3QucG9ydF9saW5rPV81O1xuXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IFNvbWUoXzQscmhzX3BvcyA0KTsgQXN0LnBvcnRfbGlua19tb2QgPSBfNjsgfSApXG4jIDI0MjAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDgzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAoIEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gTm9uZTtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAoXzQscmhzX3BvcyA0KX0gKVxuIyAyNDMxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ4OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKCBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9IE5vbmU7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKC1fNSxyaHNfcG9zIDUpfSApXG4jIDI0NDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDkzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAoIEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gXzI7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKF81LHJoc19wb3MgNSl9IClcbiMgMjQ1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2NvdW50ZXJfdGVzdCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0OTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICggQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKF8xLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSBfMjtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAoLSBfNixyaHNfcG9zIDYpfSApXG4jIDI0NjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUwMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKCBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9IF8yO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9IExvYy5hbm5vdF93aXRoX2R1bW15IDB9IClcbiMgMjQ3NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZV9tb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKCBBc3QuUG9ydFxuICAgIFx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1bXTtcbiAgICBcdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSBfMzsgfSApXG4jIDI0ODggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdsaW5rX3N0YXRlKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZV9tb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKCBBc3QuUG9ydFxuICAgIFx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1fMztcbiAgICBcdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSBfNDsgfSApXG4jIDI1MDAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVfbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyA1MTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICggQXN0LlBvcnRcbiAgICBcdCAgIHtBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9XzI7IEFzdC5wb3J0X2xpbms9W107XG4gICAgXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IFNvbWUoXzQscmhzX3BvcyA0KTsgQXN0LnBvcnRfbGlua19tb2QgPSBfNTsgfSApXG4jIDI1MTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTIzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoIEFzdC5Qb3J0XG4gICAgXHQgICB7QXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PV8yOyBBc3QucG9ydF9saW5rPV81O1xuICAgIFx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBTb21lKF80LHJoc19wb3MgNCk7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzY7IH0gKVxuIyAyNTI1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1MjcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAoIEFzdC5Db3VudGVyXG4gICAgXHQgICB7IEFzdC5jb3VudGVyX3NpZ19uYW1lID0gKF8xLHJoc19wb3MgMSk7XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19taW4gPSBOb25lO1xuICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWF4ID0gU29tZSAoU29tZSBfNCwgcmhzX3BvcyA0KTtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQgPSBfNDtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX3Zpc2libGUgPSBBc3QuRnJvbV9vcmlnaW5hbF9hc3R9KVxuIyAyNTM4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1MzQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgKEFzdC5Db3VudGVyXG4gIHsgQXN0LmNvdW50ZXJfc2lnX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcbiAgICBBc3QuY291bnRlcl9zaWdfbWluID0gTm9uZTtcbiAgICBBc3QuY291bnRlcl9zaWdfbWF4ID0gU29tZSAoU29tZSAoLV81KSwgcmhzX3BvcyA1KTtcbiAgICBBc3QuY291bnRlcl9zaWdfZGVmYXVsdCA9IC1fNTtcbiAgICBBc3QuY291bnRlcl9zaWdfdmlzaWJsZSA9IEFzdC5Gcm9tX29yaWdpbmFsX2FzdH0pXG4jIDI1NTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnY291bnRlcl90ZXN0KSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU0MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICggbGV0IG1pbiA9XG4gICAgICAgICAgICBtYXRjaCBfMiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChBc3QuQ0VRIGksXykgLT4gaVxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgKChDR1RFIF98Q0xURSBffENWQVIgXyksIF8pIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiSXNzdWUgY291bnRlcnMgaW4gc2lnbmF0dXJlXCIpKVxuICAgICAgICBpbiBBc3QuQ291bnRlclxuICAgICAgICAgeyBBc3QuY291bnRlcl9zaWdfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWluID0gU29tZSAoU29tZSBtaW4sIHJoc19wb3MgMik7XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19tYXggPSBTb21lIChTb21lIF81LCByaHNfcG9zIDUpO1xuICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfZGVmYXVsdCA9IG1pbjtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX3Zpc2libGUgPSBBc3QuRnJvbV9vcmlnaW5hbF9hc3R9KVxuIyAyNTcwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2NvdW50ZXJfdGVzdCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1NTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICggbGV0IG1pbiA9XG4gICAgICAgICAgIG1hdGNoIF8yIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoQXN0LkNFUSBpLF8pIC0+IGlcbiAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgKChDR1RFIF98Q0xURSBffENWQVIgXyksIF8pIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJJc3N1ZSBjb3VudGVycyBpbiBzaWduYXR1cmVcIikpXG4gICAgICAgaW5cbiAgICAgICAgQXN0LkNvdW50ZXJcbiAgICAgICAgeyBBc3QuY291bnRlcl9zaWdfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19taW4gPSBTb21lIChTb21lIG1pbiwgcmhzX3BvcyAyKTtcbiAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWF4ID0gU29tZSAoU29tZSAoLV82KSwgcmhzX3BvcyA2KTtcbiAgICAgICAgICBBc3QuY291bnRlcl9zaWdfZGVmYXVsdCA9IG1pbiA7XG4gICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX3Zpc2libGUgPSBBc3QuRnJvbV9vcmlnaW5hbF9hc3R9KVxuIyAyNTkwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvdW50ZXJfdGVzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTY2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoIGxldCBtaW4gPVxuICAgICAgICAgICBtYXRjaCBfMiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKEFzdC5DRVEgaSxfKSAtPiBpXG4gICAgICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lICgoQ0dURSBffENMVEUgX3xDVkFSIF8pLCBfKSAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiSXNzdWUgY291bnRlcnMgaW4gc2lnbmF0dXJlXCIpKVxuICAgICAgIGluXG4gICAgICAgQXN0LkNvdW50ZXJcbiAgeyBBc3QuY291bnRlcl9zaWdfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuICAgIEFzdC5jb3VudGVyX3NpZ19taW4gPSBTb21lIChTb21lIG1pbiwgcmhzX3BvcyAyKTtcbiAgICBBc3QuY291bnRlcl9zaWdfbWF4ID0gTm9uZTtcbiAgICBBc3QuY291bnRlcl9zaWdfZGVmYXVsdCA9IG1pbjtcbiAgICBBc3QuY291bnRlcl9zaWdfdmlzaWJsZSA9IEFzdC5Gcm9tX29yaWdpbmFsX2FzdH0pXG4jIDI2MDkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTgxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoW10pXG4jIDI2MTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIE9iai5yZXByKFxuIyA1ODIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNvbWUgXzEscmhzX3BvcyAxKTo6XzIpXG4jIDI2MjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU4NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAoYWRkX3BvcyBcIklzc3VlIGFmdGVyIGludGVybmFsIHN0YXRlXCIpKSlcbiMgMjYzMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTg5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAoTm9uZSlcbiMgMjYzNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlX21vZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTkwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAoU29tZSBOb25lKVxuIyAyNjQyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGVfbW9kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU5MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgKFNvbWUgKFNvbWUgKF8zLHJoc19wb3MgMykpKVxuIyAyNjQ5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGVfbW9kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1OTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdCAgKGFkZF9wb3MgXCJJbmNvcnJlY3QgbGluayBtb2RpZmljYXRpb25cIikpKVxuIyAyNjU2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGVfbW9kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1OTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKChMS2FwcGEuTE5LX0ZSRUUscmhzX3BvcyAyKSlcbiMgMjY2MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhX2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTk5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICgoTEthcHBhLkxOS19WQUxVRSAoXzIsKCkpLHJoc19wb3MgMikpXG4jIDI2NjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYV9saW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2MDAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTEthcHBhLkxOS19TT01FLHJoc19wb3MgMikpXG4jIDI2NzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYV9saW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgNjAxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChMS2FwcGEuTE5LX1RZUEVcblx0XHRcdFx0ICAgICAgKChfMixyaHNfcG9zIDIpLChfNCxyaHNfcG9zIDQpKSkpXG4jIDI2ODQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYV9saW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2MDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAoYWRkX3BvcyBMS2FwcGEuTE5LX0FOWSlcbiMgMjY5MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhX2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDYwNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgIChhZGRfcG9zIFwiSW52YWxpZCBsaW5rIHN0YXRlXCIpKSlcbiMgMjY5NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhX2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhX2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlKSBpblxuICAgIE9iai5yZXByKFxuIyA2MTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMTo6XzIpXG4jIDI3MDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FfbGlua19zdGF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNjExIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgKFtfMV0pXG4jIDI3MTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjE0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAoQXN0LlJVTiAoTG9jLmFubm90X3dpdGhfZHVtbXkgQWxnX2V4cHIuRkFMU0UpKVxuIyAyNzE4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuUlVOIF8yKVxuIyAyNzI1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjE2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChBc3QuTU9ESUZZIF8xKVxuIyAyNzMyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDYxNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgIChBc3QuUVVJVClcbiMgMjczOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2MTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIFwiVW5yZWNvZ25pemVkIGNvbW1hbmRcIikpKVxuIyAyNzQ0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuKCogRW50cnkgc3RhcnRfcnVsZSAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBpbnRlcmFjdGl2ZV9jb21tYW5kICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHN0YW5kYWxvbmVfZWZmZWN0X2xpc3QgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc3RhbmRhbG9uZV9ib29sX2V4cHIgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxufF1cbmxldCB5eXRhYmxlcyA9XG4gIHsgUGFyc2luZy5hY3Rpb25zPXl5YWN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2NvbnN0PXl5dHJhbnNsX2NvbnN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2Jsb2NrPXl5dHJhbnNsX2Jsb2NrO1xuICAgIFBhcnNpbmcubGhzPXl5bGhzO1xuICAgIFBhcnNpbmcubGVuPXl5bGVuO1xuICAgIFBhcnNpbmcuZGVmcmVkPXl5ZGVmcmVkO1xuICAgIFBhcnNpbmcuZGdvdG89eXlkZ290bztcbiAgICBQYXJzaW5nLnNpbmRleD15eXNpbmRleDtcbiAgICBQYXJzaW5nLnJpbmRleD15eXJpbmRleDtcbiAgICBQYXJzaW5nLmdpbmRleD15eWdpbmRleDtcbiAgICBQYXJzaW5nLnRhYmxlc2l6ZT15eXRhYmxlc2l6ZTtcbiAgICBQYXJzaW5nLnRhYmxlPXl5dGFibGU7XG4gICAgUGFyc2luZy5jaGVjaz15eWNoZWNrO1xuICAgIFBhcnNpbmcuZXJyb3JfZnVuY3Rpb249cGFyc2VfZXJyb3I7XG4gICAgUGFyc2luZy5uYW1lc19jb25zdD15eW5hbWVzX2NvbnN0O1xuICAgIFBhcnNpbmcubmFtZXNfYmxvY2s9eXluYW1lc19ibG9jayB9XG5sZXQgc3RhcnRfcnVsZSAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMSBsZXhmdW4gbGV4YnVmIDogQXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbClcbmxldCBpbnRlcmFjdGl2ZV9jb21tYW5kIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAyIGxleGZ1biBsZXhidWYgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZClcbmxldCBzdGFuZGFsb25lX2VmZmVjdF9saXN0IChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAzIGxleGZ1biBsZXhidWYgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QubW9kaWZfZXhwciBsaXN0KVxubGV0IHN0YW5kYWxvbmVfYm9vbF9leHByIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyA0IGxleGZ1biBsZXhidWYgOiAoQXN0Lm1peHR1cmUsc3RyaW5nKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkKVxuOztcbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKi9cbi8qIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKi9cbi8qIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiV7XG4gIGxldCBhZGRfcG9zIHggPVxuICAgICh4LExvYy5vZl9wb3MgKFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSkgKFBhcnNpbmcuc3ltYm9sX2VuZF9wb3MgKCkpKVxuICBsZXQgcmhzX3BvcyBpID1cbiAgTG9jLm9mX3BvcyAoUGFyc2luZy5yaHNfc3RhcnRfcG9zIGkpIChQYXJzaW5nLnJoc19lbmRfcG9zIGkpXG4lfVxuXG4ldG9rZW4gRU9GIE5FV0xJTkUgU0VNSUNPTE9OIENPTU1BIERPVCBPUF9QQVIgQ0xfUEFSIE9QX0NVUiBDTF9DVVIgQVQgVFlQRSBMQVJcbiV0b2tlbiBDUFVUSU1FIEVNQVggVE1BWCBQTE9URU5UUlkgREVMRVRFIElOVFJPIFRSQUNLIERPIFNFVCBSRVBFQVQgU1BFQ0lFU19PRlxuJXRva2VuIFVOVElMIExPRyBQTFVTIE1VTFQgTUlOVVMgTUFYIE1JTiBESVYgU0lOVVMgQ09TSU5VUyBUQU4gUE9XIEFCUyBNT0RVTE9cbiV0b2tlbiBTUVJUIEVYUE9ORU5UIElORklOSVRZIFRJTUUgRVZFTlQgTlVMTF9FVkVOVCBQSVBFIEVRVUFMIEFORCBPUiBOT1RcbiV0b2tlbiBHUkVBVEVSIFNNQUxMRVIgVFJVRSBGQUxTRSBESUZGIEtBUFBBX1JBUiBLQVBQQV9MUkFSIEtBUFBBX0xOS1xuJXRva2VuIFNJR05BVFVSRSBJTklUIExFVCBQTE9UIFBFUlQgT0JTIFRPS0VOIENPTkZJRyBLQVBQQV9XTEQgS0FQUEFfU0VNSVxuJXRva2VuIEZMVVggQVNTSUdOIFBSSU5URiBTVE9QIFNOQVBTSE9UIFJVTiBUSEVOIEVMU0UgQUxBUk0gQVBQTFlcbiV0b2tlbiA8aW50PiBJTlRcbiV0b2tlbiA8c3RyaW5nPiBJRFxuJXRva2VuIDxzdHJpbmc+IEtBUFBBX01SSyBMQUJFTFxuJXRva2VuIDxmbG9hdD4gRkxPQVRcbiV0b2tlbiA8c3RyaW5nPiBTVFJJTkdcblxuJWxlZnQgTUlOVVMgUExVU1xuJWxlZnQgTVVMVCBESVZcbiVsZWZ0IE1PRFVMT1xuJXJpZ2h0IFBPV1xuJW5vbmFzc29jIExPRyBTUVJUIEVYUE9ORU5UIFNJTlVTIENPU0lOVVMgQUJTIFRBTlxuXG4lbGVmdCBPUlxuJWxlZnQgQU5EXG5cbiVub25hc3NvYyBUSEVOXG5cbiVzdGFydCBzdGFydF9ydWxlXG4ldHlwZSA8QXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbD4gc3RhcnRfcnVsZVxuXG4lc3RhcnQgaW50ZXJhY3RpdmVfY29tbWFuZFxuJXR5cGUgPChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kPiBpbnRlcmFjdGl2ZV9jb21tYW5kXG5cbiVzdGFydCBzdGFuZGFsb25lX2VmZmVjdF9saXN0XG4ldHlwZSA8KEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdD4gc3RhbmRhbG9uZV9lZmZlY3RfbGlzdFxuXG4lc3RhcnQgc3RhbmRhbG9uZV9ib29sX2V4cHJcbiV0eXBlIDwoQXN0Lm1peHR1cmUsc3RyaW5nKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkPiBzdGFuZGFsb25lX2Jvb2xfZXhwclxuXG4lJSAvKkdyYW1tYXIgcnVsZXMqL1xuXG5uZXdsaW5lOlxuICAgIHwgTkVXTElORSBzdGFydF9ydWxlIHskMn1cbiAgICB8IEVPRiB7ZnVuIGMgLT4gY307XG5cbnN0YXJ0X3J1bGU6XG4gICAgfCBuZXdsaW5lIHskMX1cbiAgICB8IExBQkVMIHJ1bGVfZXhwcmVzc2lvbiBuZXdsaW5lXG4gICAgICAgIHtsZXQgb3V0ID0gKFNvbWUgKCQxLCByaHNfcG9zIDEpLCQyKSBpblxuXHRmdW4gYyAtPiBsZXQgciA9ICQzIGMgaW4ge3Igd2l0aCBBc3QucnVsZXMgPSBvdXQ6OnIuQXN0LnJ1bGVzfX1cbiAgICB8IHJ1bGVfZXhwcmVzc2lvbiBuZXdsaW5lXG4gICAgICAgIHtmdW4gYyAtPiBsZXQgciA9ICQyIGMgaW4ge3Igd2l0aCBBc3QucnVsZXMgPSAoTm9uZSwkMSk6OnIuQXN0LnJ1bGVzfX1cbiAgICB8IExBQkVMIEVRVUFMIGFsZ19leHByIG5ld2xpbmVcbiAgICAgICAge2xldCBvdXQgPSAoKCQxLHJoc19wb3MgMSksJDMpIGluXG5cdGZ1biBjIC0+IGxldCByID0gJDQgYyBpbiB7ciB3aXRoIEFzdC52YXJpYWJsZXMgPSBvdXQ6OnIuQXN0LnZhcmlhYmxlc319XG4gICAgfCBpbnN0cnVjdGlvbiBuZXdsaW5lXG5cdFx0ICB7IGZ1biBjIC0+IGxldCByID0gJDIgYyBpblxuXHRcdCAgICAgIG1hdGNoICQxIHdpdGhcblx0XHQgICAgICB8IEFzdC5SVUxFIHJ1IC0+XG5cdFx0XHQge3Igd2l0aCBBc3QucnVsZXMgPSBydTo6ci5Bc3QucnVsZXN9XG5cdFx0ICAgICAgfCBBc3QuU0lHIGFnIC0+XG5cdFx0XHQge3Igd2l0aCBBc3Quc2lnbmF0dXJlcz1hZzo6ci5Bc3Quc2lnbmF0dXJlc31cblx0XHQgICAgICB8IEFzdC5UT0tFTlNJRyAoc3RyX3BvcykgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC50b2tlbnM9c3RyX3Bvczo6ci5Bc3QudG9rZW5zfVxuXHRcdCAgICAgIHwgQXN0LlZPTFNJRyAodm9sX3R5cGUsdm9sLHZvbF9wYXJhbSkgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC52b2x1bWVzPSh2b2xfdHlwZSx2b2wsdm9sX3BhcmFtKTo6ci5Bc3Qudm9sdW1lc31cblx0XHQgICAgICB8IEFzdC5JTklUIChhbGcsaW5pdF90KSAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LmluaXQ9KGFsZyxpbml0X3QpOjpyLkFzdC5pbml0fVxuXHRcdCAgICAgIHwgQXN0LkRFQ0xBUkUgdmFyIC0+XG5cdFx0XHQge3Igd2l0aCBBc3QudmFyaWFibGVzID0gdmFyOjpyLkFzdC52YXJpYWJsZXN9XG5cdFx0ICAgICAgfCBBc3QuT0JTICgobGJsLHBvcyksXyBhcyB2YXIpIC0+XG5cdFx0XHQgKCpmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgc2hvcnRjdXQgZm9yICV2YXIgKyAlcGxvdCopXG5cdFx0XHQgICB7ciB3aXRoXG5cdFx0XHQgICAgIEFzdC52YXJpYWJsZXMgPSB2YXI6OnIuQXN0LnZhcmlhYmxlcztcblx0XHRcdCAgICAgQXN0Lm9ic2VydmFibGVzID0gKEFsZ19leHByLkFMR19WQVIgbGJsLHBvcylcblx0XHRcdFx0XHRcdCA6OnIuQXN0Lm9ic2VydmFibGVzfVxuXHRcdCAgICAgIHwgQXN0LlBMT1QgZXhwciAtPlxuXHRcdFx0IHtyIHdpdGggQXN0Lm9ic2VydmFibGVzID0gZXhwcjo6ci5Bc3Qub2JzZXJ2YWJsZXN9XG5cdFx0ICAgICAgfCBBc3QuUEVSVCAoKGFsYXJtLHByZSxlZmZlY3Qsb3B0KSxwb3MpIC0+XG5cdFx0XHQge3Igd2l0aFxuXHRcdFx0ICBBc3QucGVydHVyYmF0aW9ucyA9XG5cdFx0XHQgICAoKGFsYXJtLHByZSxlZmZlY3Qsb3B0KSxwb3MpOjpyLkFzdC5wZXJ0dXJiYXRpb25zfVxuXHRcdCAgICAgIHwgQXN0LkNPTkZJRyAocGFyYW1fbmFtZSx2YWx1ZV9saXN0KSAtPlxuXHRcdFx0IHtyIHdpdGhcblx0XHRcdCAgQXN0LmNvbmZpZ3VyYXRpb25zID0gKHBhcmFtX25hbWUsdmFsdWVfbGlzdCk6OnIuQXN0LmNvbmZpZ3VyYXRpb25zfVxuXHRcdCAgfVxuICAgIHwgZXJyb3Jcblx0e3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyBcIlN5bnRheCBlcnJvclwiKSl9XG4gICAgO1xuXG5pbnN0cnVjdGlvbjpcbiAgICB8IFNJR05BVFVSRSBhZ2VudF9leHByZXNzaW9uX3NpZyB7QXN0LlNJRyAkMn1cbiAgICB8IFRPS0VOIElEIHtBc3QuVE9LRU5TSUcgKCQyLHJoc19wb3MgMil9XG4gICAgfCBTSUdOQVRVUkUgZXJyb3Ige3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0XHQoYWRkX3BvcyBcIk1hbGZvcm1lZCBhZ2VudCBzaWduYXR1cmUsIEkgd2FzIGV4cGVjdGluZyBzb21ldGhpbmcgb2YgdGhlIGZvcm0gJyVhZ2VudDogQSh4LHl+dX52LHopJ1wiKSl9XG5cbiAgICB8IElOSVQgaW5pdF9kZWNsYXJhdGlvbiB7QXN0LklOSVQgJDJ9XG4gICAgfCBJTklUIGVycm9yXG5cdHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAgKGFkZF9wb3MgXCJNYWxmb3JtZWQgaW5pdGlhbCBjb25kaXRpb25cIikpfVxuXG4gICAgfCBMRVQgdmFyaWFibGVfZGVjbGFyYXRpb24ge0FzdC5ERUNMQVJFICQyfVxuICAgIHwgT0JTIHZhcmlhYmxlX2RlY2xhcmF0aW9uIHtBc3QuT0JTICQyfVxuICAgIHwgUExPVCBhbGdfZXhwciB7QXN0LlBMT1QgJDJ9XG4gICAgfCBQTE9UIGVycm9yIHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIHBsb3QgaW5zdHJ1Y3Rpb24sIGFuIGFsZ2VicmFpYyBleHByZXNzaW9uIGlzIGV4cGVjdGVkXCIpKX1cbiAgICB8IFBFUlQgcGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uIHtBc3QuUEVSVCAoYWRkX3BvcyAkMil9XG4gICAgfCBDT05GSUcgU1RSSU5HIHZhbHVlX2xpc3Rcblx0ICAgICB7QXN0LkNPTkZJRyAoKCQyLHJoc19wb3MgMiksJDMpfVxuICAgIDtcblxuaW5pdF9kZWNsYXJhdGlvbjpcbiAgICB8IGFsZ19leHByIG5vbl9lbXB0eV9taXh0dXJlXG4gICAgeyAoJDEsQXN0LklOSVRfTUlYICgkMixyaHNfcG9zIDIpKSB9XG4gICAgfCBhbGdfZXhwciBPUF9QQVIgbm9uX2VtcHR5X21peHR1cmUgQ0xfUEFSXG4gICAgeyAoJDEsQXN0LklOSVRfTUlYICgkMywgcmhzX3BvcyAzKSkgfVxuICAgIHwgSUQgTEFSIGFsZ19leHByIHsoJDMsQXN0LklOSVRfVE9LIFskMSxyaHNfcG9zIDFdKX1cbiAgICB8IGFsZ19leHByIElEIHsoJDEsQXN0LklOSVRfVE9LIFskMixyaHNfcG9zIDJdKX1cbiAgICA7XG5cbnZhbHVlX2xpc3Q6XG4gICAgfCBTVFJJTkcge1skMSwgcmhzX3BvcyAxXX1cbiAgICB8IFNUUklORyB2YWx1ZV9saXN0IHsoJDEscmhzX3BvcyAxKTo6JDJ9XG4gICAgO1xuXG5wZXJ0dXJiYXRpb25fYWxhcm06XG4gIHtOb25lfVxuICB8IEFMQVJNIG5iciB7U29tZSAkMn1cblxucGVydHVyYmF0aW9uX3Bvc3Q6XG4gIHtOb25lfVxuICB8IFJFUEVBVCBib29sX2V4cHIge1NvbWUgJDJ9XG4gIHwgVU5USUwgYm9vbF9leHByXG4gICAvKiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5ICovXG5cdCB7IFNvbWUgKGFkZF9wb3MgKEFsZ19leHByLlVOX0JPT0xfT1AgKE9wZXJhdG9yLk5PVCwkMikpKX1cblxuXG5wZXJ0dXJiYXRpb25fZGVjbGFyYXRpb246XG4gICAgfCBwZXJ0dXJiYXRpb25fYWxhcm0gYm9vbF9leHByIERPIGVmZmVjdF9saXN0IHBlcnR1cmJhdGlvbl9wb3N0XG4gICAgeyAoJDEsU29tZSAkMiwkNCwkNSkgfVxuICAgIHwgcGVydHVyYmF0aW9uX2FsYXJtIERPIGVmZmVjdF9saXN0IHBlcnR1cmJhdGlvbl9wb3N0XG4gICAgeyAoJDEsTm9uZSwkMywkNCkgfVxuICAgIHwgUkVQRUFUIGJvb2xfZXhwciBETyBlZmZlY3RfbGlzdCBVTlRJTCBib29sX2V4cHJcbiAgICAgICAvKiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5ICovXG5cdCAgeyAoTm9uZSxTb21lICQyLCQ0LFNvbWUgKGFkZF9wb3MgKEFsZ19leHByLlVOX0JPT0xfT1AgKE9wZXJhdG9yLk5PVCwkNikpKSl9XG4gICAgIHwgcGVydHVyYmF0aW9uX2FsYXJtIGJvb2xfZXhwciBTRVQgZWZmZWN0X2xpc3Rcblx0XHR7ICgkMSxTb21lICQyLCQ0LE5vbmUpfSAvKkZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Ki9cbiAgICA7XG5cbnN0YW5kYWxvbmVfZWZmZWN0X2xpc3Q6IGVmZmVjdF9saXN0IEVPRiB7JDF9XG5cbmVmZmVjdF9saXN0OlxuICAgIHwgT1BfUEFSIGVmZmVjdF9saXN0IENMX1BBUiB7JDJ9XG4gICAgfCBlZmZlY3Qge1skMV19XG4gICAgfCBlZmZlY3QgU0VNSUNPTE9OIGVmZmVjdF9saXN0IHskMTo6JDN9XG4gICAgO1xuXG5lZmZlY3Q6XG4gICAgfCBBU1NJR04gSUQgYWxnX2V4cHIgLyp1cGRhdGluZyB0aGUgcmF0ZSBvZiBhIHJ1bGUqL1xuXHRcdFx0XHRcdFx0ICAgICAge0FzdC5VUERBVEUgKCgkMixyaHNfcG9zIDIpLCQzKX1cbiAgICB8IEFTU0lHTiBMQUJFTCBhbGdfZXhwciAvKnVwZGF0aW5nIHRoZSByYXRlIG9mIGEgcnVsZSovXG5cdFx0XHRcdFx0XHQgICAgICB7QXN0LlVQREFURSAoKCQyLHJoc19wb3MgMiksJDMpfVxuICAgIHwgVFJBQ0sgTEFCRUwgYm9vbGVhblxuXHQgICAge0FzdC5DRkxPV0xBQkVMICgkMywoJDIscmhzX3BvcyAyKSl9XG4gICAgfCBUUkFDSyBwYXR0ZXJuIGJvb2xlYW5cblx0ICAgIHtBc3QuQ0ZMT1dNSVggKCQzLChbJDJdLHJoc19wb3MgMikpfVxuICAgIHwgRkxVWCBub25lbXB0eV9wcmludF9leHByIGJvb2xlYW5cblx0ICAge2lmICQzIHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSwkMikgZWxzZSBBc3QuRElOT0ZGICQyfVxuICAgIHwgRkxVWCBub25lbXB0eV9wcmludF9leHByIFNUUklORyBib29sZWFuXG5cdCAgIHtpZiAkNCAmJiAkMyA9IFwiYWJzb2x1dGVcIiB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuQUJTT0xVVEUsJDIpXG5cdCAgIGVsc2UgaWYgJDQgJiYgJDMgPSBcInByb2JhYmlsaXR5XCIgdGhlblxuXHQgICAgIEFzdC5ESU4gKFByaW1pdGl2ZXMuUFJPQkFCSUxJVFksJDIpXG5cdCAgIGVsc2UgaWYgJDQgJiYgJDMgPSBcInJlbGF0aXZlXCIgdGhlbiBBc3QuRElOIChQcmltaXRpdmVzLlJFTEFUSVZFLCQyKVxuXHQgICAgIGVsc2UgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdCAgICAgICAoXCJJbmNvcnJlY3QgRElOIGV4cHJlc3Npb25cIixyaHNfcG9zIDMpKX1cbiAgICB8IEFQUExZIHNtYWxsX2FsZ19leHByIHJ1bGVfY29udGVudFxuXHRcdCB7IEFzdC5BUFBMWShcblx0XHQgICAkMixcblx0XHQgICAoeyBBc3QucmV3cml0ZSA9IGZzdCAkMztcblx0XHQgICAgICBBc3QuYmlkaXJlY3Rpb25hbCA9IGZhbHNlO1xuXHRcdCAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybztBc3Qua191bj1Ob25lO1xuXHRcdCAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LHJoc19wb3MgMykpXG5cdFx0IH1cbiAgICB8IElOVFJPIGFsZ19leHByIG5vbl9lbXB0eV9taXh0dXJlXG4gICAgICAgIHsgQXN0LkFQUExZKCQyLFxuICAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCAgQXN0LkFycm93IHtBc3QubGhzPVtdOyBBc3Qucm1fdG9rZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgIEFzdC5yaHM9JDM7IEFzdC5hZGRfdG9rZW4gPSBbXTt9O1xuXHRcdCAgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxyaHNfcG9zIDMpKVxuICAgICAgICB9XG4gICAgfCBJTlRSTyBlcnJvclxuICAgICAgIHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJNYWxmb3JtZWQgcGVydHVyYmF0aW9uIGluc3RydWN0aW9uLCBJIHdhcyBleHBlY3RpbmcgJyRBREQgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpfVxuICAgIHwgREVMRVRFIGFsZ19leHByIG5vbl9lbXB0eV9taXh0dXJlXG4gICAgICAgeyBBc3QuQVBQTFkoJDIsXG4gICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgQXN0LkFycm93IHtBc3QubGhzPSQzOyBBc3Qucm1fdG9rZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgQXN0LnJocz1bXTsgQXN0LmFkZF90b2tlbiA9IFtdO307XG5cdFx0IEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LHJoc19wb3MgMykpXG4gICAgICAgfVxuXG4gICAgfCBERUxFVEUgZXJyb3JcbiAgICAgICB7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIHBlcnR1cmJhdGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgZXhwZWN0aW5nICckREVMIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKX1cbiAgICB8IElEIExBUiBhbGdfZXhwciAvKnVwZGF0aW5nIHRoZSB2YWx1ZSBvZiBhIHRva2VuKi9cbiAgICAgICB7XG4gICAgICAgbGV0IHRrID0gKCQxLHJoc19wb3MgMSkgaW5cbiAgICAgICAgQXN0LkFQUExZKEFsZ19leHByLmNvbnN0IE5ici5vbmUsXG4gICAgICAgICAgIGFkZF9wb3NcbiAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCBBc3QuRWRpdFxuXHRcdCB7QXN0Lm1peD1bXTtcblx0XHQgIEFzdC5kZWx0YV90b2tlbiA9XG5cdFx0ICBbKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMsJDMsKEFsZ19leHByLlRPS0VOX0lEICQxLHJoc19wb3MgMSkpLHJoc19wb3MgMSksdGtdO1xuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0pKVxuICAgICAgIH1cbiAgICB8IFNOQVBTSE9UIHByaW50X2V4cHIge0FzdC5TTkFQU0hPVCAoZmFsc2UsJDIpfVxuICAgIHwgU1RPUCBwcmludF9leHByIHtBc3QuU1RPUCAkMn1cbiAgICB8IFBSSU5URiBwcmludF9leHByIFNNQUxMRVIgcHJpbnRfZXhwciBHUkVBVEVSIHsgQXN0LlBSSU5UICgkMiwkNCkgfVxuICAgIHwgUExPVEVOVFJZIHsgQXN0LlBMT1RFTlRSWSB9XG4gICAgfCBTUEVDSUVTX09GIG5vbmVtcHR5X3ByaW50X2V4cHIgbm9uX2VtcHR5X21peHR1cmUgYm9vbGVhbiB7IEFzdC5TUEVDSUVTX09GICgkNCwkMiwoJDMsIHJoc19wb3MgMykpfVxuICAgIDtcblxubm9uZW1wdHlfcHJpbnRfZXhwcjpcbiAgICB8IFNUUklORyB7W1ByaW1pdGl2ZXMuU3RyX3BleHByIChhZGRfcG9zICQxKV19XG4gICAgfCBtaWRfYWxnX2V4cHIge1tQcmltaXRpdmVzLkFsZ19wZXhwciAkMV19XG4gICAgfCBTVFJJTkcgRE9UIG5vbmVtcHR5X3ByaW50X2V4cHIge1ByaW1pdGl2ZXMuU3RyX3BleHByICgkMSwgcmhzX3BvcyAxKTo6JDN9XG4gICAgfCBtaWRfYWxnX2V4cHIgRE9UIG5vbmVtcHR5X3ByaW50X2V4cHIge1ByaW1pdGl2ZXMuQWxnX3BleHByICQxOjokM31cbiAgICA7XG5wcmludF9leHByOlxuICAgIC8qZW1wdHkqLyB7W119XG4gICAgfCBub25lbXB0eV9wcmludF9leHByIHskMX1cblxuYm9vbGVhbjpcbiAgICB8IFRSVUUge3RydWV9XG4gICAgfCBGQUxTRSB7ZmFsc2V9XG4gICAgO1xuXG52YXJpYWJsZV9kZWNsYXJhdGlvbjpcbiAgICB8IExBQkVMIG5vbl9lbXB0eV9taXh0dXJlXG5cdCAgIHsgKCgkMSxyaHNfcG9zIDEpLChBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSAkMixyaHNfcG9zIDIpKX1cbiAgICB8IExBQkVMIGFsZ19leHByIHsoKCQxLHJoc19wb3MgMSksJDIpfVxuICAgIHwgSUQgYWxnX2V4cHIgeygoJDEscmhzX3BvcyAxKSwkMil9XG4gICAgfCBMQUJFTCBlcnJvclxuXHQgICAge3JhaXNlXG5cdCAgICAgICAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgIChhZGRfcG9zIChcIklsbGVnYWwgZGVmaW5pdGlvbiBvZiB2YXJpYWJsZSAnXCJeJDFeXCInXCIpKSlcblx0ICAgIH1cbiAgICA7XG5cbnNtYWxsX2Jvb2xfZXhwcjpcbiAgICB8IE9QX1BBUiBib29sX2V4cHIgQ0xfUEFSIHskMn1cbiAgICB8IFRSVUUge2FkZF9wb3MgQWxnX2V4cHIuVFJVRX1cbiAgICB8IEZBTFNFIHthZGRfcG9zIEFsZ19leHByLkZBTFNFfVxuXG5ib29sX2V4cHI6XG4gICAgfCBzbWFsbF9ib29sX2V4cHIgeyAkMSB9XG4gICAgfCBOT1Qgc21hbGxfYm9vbF9leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QKE9wZXJhdG9yLk5PVCwkMikpfVxuICAgIHwgYm9vbF9leHByIEFORCBib29sX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLkFORCwkMSwkMykpfVxuICAgIHwgYm9vbF9leHByIE9SIGJvb2xfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuT1IsJDEsJDMpKX1cbiAgICB8IGFsZ19leHByIEdSRUFURVIgYWxnX2V4cHJcbiAgICAgIHthZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkdSRUFURVIsJDEsJDMpKX1cbiAgICB8IGFsZ19leHByIFNNQUxMRVIgYWxnX2V4cHJcbiAgICAgIHthZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLlNNQUxMRVIsJDEsJDMpKX1cbiAgICB8IGFsZ19leHByIEVRVUFMIGFsZ19leHByXG4gICAgICB7YWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5FUVVBTCwkMSwkMykpfVxuICAgIHwgYWxnX2V4cHIgRElGRiBhbGdfZXhwclxuICAgICAge2FkZF9wb3MgKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuRElGRiwkMSwkMykpfVxuICAgIDtcblxuc3RhbmRhbG9uZV9ib29sX2V4cHI6IGJvb2xfZXhwciBFT0YgeyQxfVxuXG50b2tlbl9leHByOlxuICAvKmVtcHR5Ki8ge1tdfVxuICAgIHwgUElQRSBzdW1fdG9rZW4geyQyfVxuICAgIHwgUElQRSBlcnJvclxuXHR7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAoYWRkX3BvcyAgXCJNYWxmb3JtZWQgdG9rZW4gZXhwcmVzc2lvbiwgSSB3YXMgZXhwZWN0aW5nIGFfMCB0XzAgKyAuLi4gKyBhX24gdF9uLCB3aGVyZSB0X2kgYXJlIHRva2VucyBhbmQgYV9pIGFueSBhbGdlYnJhaWMgZm9ybXVsYVwiKSl9XG4gICAgO1xuXG5zdW1fdG9rZW46XG4gICAgfCBPUF9QQVIgc3VtX3Rva2VuIENMX1BBUiB7JDJ9XG4gICAgfCBhbGdfZXhwciBJRCB7WygkMSwoJDIscmhzX3BvcyAyKSldfVxuICAgIHwgYWxnX2V4cHIgSUQgUExVUyBzdW1fdG9rZW4ge2xldCBsID0gJDQgaW4gKCQxLCgkMixyaHNfcG9zIDIpKTo6bH1cbiAgICB8IGFsZ19leHByIFRZUEUgSUQge1soJDEsKCQzLHJoc19wb3MgMykpXX1cbiAgICB8IGFsZ19leHByIFRZUEUgSUQgUExVUyBzdW1fdG9rZW4ge2xldCBsID0gJDUgaW4gKCQxLCgkMyxyaHNfcG9zIDMpKTo6bH1cblxucnVsZV9jb250ZW50OlxuICB8IHBhdHRlcm4gdG9rZW5fZXhwciBhcnJvdyBwYXR0ZXJuIHRva2VuX2V4cHJcbiAgICB7QXN0LkFycm93IHtBc3QubGhzPVskMV07IEFzdC5ybV90b2tlbiA9ICQyOyBBc3QucmhzPVskNF07IEFzdC5hZGRfdG9rZW4gPSAkNX0sXG4gICAgICQzfVxuICB8IHBhdHRlcm4gdG9rZW5fZXhwciBhcnJvdyB0b2tlbl9leHByXG4gICAge0FzdC5BcnJvdyB7QXN0Lmxocz1bJDFdOyBBc3Qucm1fdG9rZW4gPSAkMjsgQXN0LnJocz1bXTsgQXN0LmFkZF90b2tlbiA9ICQ0fSxcbiAgICAgJDN9XG4gIHwgdG9rZW5fZXhwciBhcnJvdyBwYXR0ZXJuIHRva2VuX2V4cHJcbiAgICB7QXN0LkFycm93IHtBc3QubGhzPVtdOyBBc3Qucm1fdG9rZW4gPSAkMTsgQXN0LnJocz1bJDNdOyBBc3QuYWRkX3Rva2VuID0gJDR9LFxuICAgICAkMn1cbiAgfCB0b2tlbl9leHByIGFycm93IHRva2VuX2V4cHJcbiAgICB7QXN0LkFycm93IHtBc3QubGhzPVtdOyBBc3Qucm1fdG9rZW4gPSAkMTsgQXN0LnJocz1bXTsgQXN0LmFkZF90b2tlbiA9ICQzfSxcbiAgICAgJDJ9XG4gIHwgcGF0dGVybiB0b2tlbl9leHByXG4gICAgeyBBc3QuRWRpdCB7QXN0Lm1peCA9IFskMV07IEFzdC5kZWx0YV90b2tlbiA9ICQyfSxmYWxzZSB9O1xuICB8IFBJUEUgc3VtX3Rva2VuXG4gICAgeyBBc3QuRWRpdCB7QXN0Lm1peCA9IFtdOyBBc3QuZGVsdGFfdG9rZW4gPSAkMn0sZmFsc2UgfTtcblxucnVsZV9leHByZXNzaW9uOlxuICB8IHJ1bGVfY29udGVudCBiaXJhdGVcbiAgICB7IGxldCAoa19kZWYsa191bixrX29wLGtfb3BfdW4pID0gJDIgaW5cbiAgICAgIGxldCByZXdyaXRlLGJpZGlyZWN0aW9uYWwgPSAkMSBpblxuICAgICAgYWRkX3BvcyB7XG4gICAgICAgIEFzdC5yZXdyaXRlO0FzdC5iaWRpcmVjdGlvbmFsO1xuICAgICAgICBBc3Qua19kZWY7IEFzdC5rX3VuOyBBc3Qua19vcDsgQXN0Lmtfb3BfdW47XG4gICAgICB9IH07XG5cbmFycm93OlxuICAgIHwgS0FQUEFfUkFSIHtmYWxzZX1cbiAgICB8IEtBUFBBX0xSQVIge3RydWV9XG4gICAgO1xuXG5uYnI6XG4gICAgfCBJTkZJTklUWSB7IE5ici5GIGluZmluaXR5IH1cbiAgICB8IEZMT0FUIHsgTmJyLkYgJDEgfVxuICAgIHwgSU5UIHsgTmJyLkkgJDEgfVxuXG5jb25zdGFudDpcbiAgICB8IG5iciB7YWRkX3BvcyAoQWxnX2V4cHIuQ09OU1QgJDEpfVxuICAgIHwgRU1BWCB7YWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FTUFYX1ZBUikpfVxuICAgIHwgVE1BWCB7YWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5UTUFYX1ZBUikpfVxuICAgIHwgQ1BVVElNRSB7YWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5DUFVUSU1FKSl9XG4gICAgO1xuXG52YXJpYWJsZTpcbiAgICB8IFBJUEUgSUQgUElQRSB7YWRkX3BvcyAoQWxnX2V4cHIuVE9LRU5fSUQgKCQyKSl9XG4gICAgfCBQSVBFIG5vbl9lbXB0eV9taXh0dXJlIFBJUEUgeyBhZGRfcG9zIChBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSAkMikgfVxuICAgIHwgSUQge2FkZF9wb3MgKEFsZ19leHByLkFMR19WQVIgKCQxKSl9XG4gICAgfCBMQUJFTCB7YWRkX3BvcyAoQWxnX2V4cHIuQUxHX1ZBUiAoJDEpKX1cbiAgICB8IFRJTUUge2FkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVElNRV9WQVIpKX1cbiAgICB8IEVWRU5UIHthZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVWRU5UX1ZBUikpfVxuICAgIHwgTlVMTF9FVkVOVCB7YWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUikpfVxuICAgIDtcblxuc21hbGxfYWxnX2V4cHI6XG4gICAgfCBPUF9QQVIgYWxnX2V4cHIgQ0xfUEFSIHskMn1cbiAgICB8IGNvbnN0YW50IHskMX1cbiAgICB8IHZhcmlhYmxlIHskMX1cbiAgICB8IE1BWCBzbWFsbF9hbGdfZXhwciBzbWFsbF9hbGdfZXhwclxuXHQgIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1BWCwkMiwkMykpfVxuICAgIHwgTUlOIHNtYWxsX2FsZ19leHByIHNtYWxsX2FsZ19leHByXG5cdCAge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOLCQyLCQzKSl9XG4gICAgfCBFWFBPTkVOVCBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5FWFAsJDIpKX1cbiAgICB8IFNJTlVTIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNJTlVTLCQyKSl9XG4gICAgfCBDT1NJTlVTIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkNPU0lOVVMsJDIpKX1cbiAgICB8IFRBTiBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5UQU4sJDIpKX1cbiAgICB8IEFCUyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5JTlQsJDIpKX1cbiAgICB8IFNRUlQgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuU1FSVCwkMikpfVxuICAgIHwgTE9HIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkxPRywkMikpfVxuICAgIDtcblxubWlkX2FsZ19leHByOlxuICAgIHwgTUlOVVMgbWlkX2FsZ19leHByIHsgYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlVNSU5VUywkMikpIH1cbiAgICB8IHNtYWxsX2FsZ19leHByIHsgJDEgfVxuICAgIHwgbWlkX2FsZ19leHByIE1VTFQgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1VTFQsJDEsJDMpKX1cbiAgICB8IG1pZF9hbGdfZXhwciBQTFVTIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5TVU0sJDEsJDMpKX1cbiAgICB8IG1pZF9hbGdfZXhwciBESVYgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLkRJViwkMSwkMykpfVxuICAgIHwgbWlkX2FsZ19leHByIE1JTlVTIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUywkMSwkMykpfVxuICAgIHwgbWlkX2FsZ19leHByIFBPVyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuUE9XLCQxLCQzKSl9XG4gICAgfCBtaWRfYWxnX2V4cHIgTU9EVUxPIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NT0RVTE8sJDEsJDMpKX1cblxuYWxnX2V4cHI6XG4gICAgfCBtaWRfYWxnX2V4cHIgeyQxfVxuICAgIHwgYm9vbF9leHByIFRIRU4gYWxnX2V4cHIgRUxTRSBzbWFsbF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuSUYoJDEsJDMsJDUpKX1cblxuYmlyYXRlOlxuICAgIHwgQVQgcmF0ZSB7bGV0IChrMixrMSkgPSAkMiBpbiAoazIsazEsTm9uZSxOb25lKX1cbiAgICB8IEFUIHJhdGUgQ09NTUEgcmF0ZSB7bGV0IChrMixrMSkgPSAkMiBpblxuXHRcdFx0ICBsZXQgKGtiYWNrLGtiYWNrMSkgPSAkNCBpblxuXHRcdFx0ICAoazIsazEsU29tZSBrYmFjayxrYmFjazEpfVxuICAgIHwgZXJyb3Ige3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyBcInJ1bGUgcmF0ZSBleHBlY3RlZFwiKSl9XG4gICAgO1xuXG5yYXRlOlxuICAgIHwgYWxnX2V4cHIgT1BfQ1VSIGFsZ193aXRoX3JhZGl1cyBDTF9DVVIgeygkMSxTb21lICQzKX1cbiAgICB8IGFsZ19leHByIE9QX1BBUiBhbGdfd2l0aF9yYWRpdXMgQ0xfUEFSIHsgKCQxLFNvbWUgJDMpIH1cbiAgICB8IGFsZ19leHByIHsoJDEsTm9uZSl9XG4gICAgfCBPUF9DVVIgYWxnX3dpdGhfcmFkaXVzIENMX0NVUlxuICAgICAgeyhMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQ09OU1QgTmJyLnplcm8pLFNvbWUgJDIpfVxuICAgIHwgYWxnX2V4cHIgT1BfQ1VSIENMX0NVUlxuICAgICAgeygkMSxTb21lIChMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQ09OU1QgTmJyLnplcm8pLE5vbmUpKX1cbiAgICB8IHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJtaXNzaW5nIHJ1bGUgcmF0ZVwiKSl9XG4gICAgO1xuXG5hbGdfd2l0aF9yYWRpdXM6XG4gICAgfCBhbGdfZXhwciB7KCQxLE5vbmUpfVxuICAgIHwgYWxnX2V4cHIgVFlQRSBhbGdfZXhwciB7KCQxLCBTb21lICQzKX1cbiAgICA7XG5cbnBhdHRlcm46XG4gICAgfCBPUF9QQVIgcGF0dGVybiBDTF9QQVIgeyQyfVxuICAgIHwgYWdlbnRfZXhwcmVzc2lvbiBDT01NQSBwYXR0ZXJuIHskMSA6OiAkM31cbiAgICB8IGFnZW50X2V4cHJlc3Npb24ge1skMV19XG47XG5cbm5vbl9lbXB0eV9taXh0dXJlOlxuICAgIHwgSUQgT1BfUEFSIGludGVyZmFjZV9leHByZXNzaW9uIENMX1BBUlxuICAgIHsgW1tBc3QuUHJlc2VudCAoKCQxLHJoc19wb3MgMSksICQzLCBBc3QuTm9Nb2QpXV0gfVxuICAgIHwgSUQgT1BfUEFSIGludGVyZmFjZV9leHByZXNzaW9uIENMX1BBUiBDT01NQSBwYXR0ZXJuXG4gICAgeyBbQXN0LlByZXNlbnQgKCgkMSxyaHNfcG9zIDEpLCAkMywgQXN0Lk5vTW9kKSA6OiAkNl19XG4gICAgO1xuXG5tb2RfYWdlbnQ6XG5cdHwgeyBBc3QuTm9Nb2QgfVxuXHR8IFBMVVMgeyBBc3QuQ3JlYXRlIH1cblx0fCBNSU5VUyB7IEFzdC5FcmFzZSB9O1xuXG5hZ2VudF9leHByZXNzaW9uX3NpZzpcbiAgfCBJRCBPUF9QQVIgaW50ZXJmYWNlX2V4cHJlc3Npb25fc2lnIENMX1BBUiB7QXN0LlByZXNlbnQgKCgkMSxyaHNfcG9zIDEpLCAkMywgQXN0Lk5vTW9kKX1cbiAgfCBJRCBlcnJvciB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgIChhZGRfcG9zIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeJDFeXCInXCIpKSl9XG5cbmFnZW50X2V4cHJlc3Npb246XG4gICAgfCBtb2RfYWdlbnQgSUQgT1BfUEFSIGludGVyZmFjZV9leHByZXNzaW9uIENMX1BBUlxuXHQge0FzdC5QcmVzZW50ICgoJDIscmhzX3BvcyAyKSwgJDQsICQxKX1cbiAgICB8IG1vZF9hZ2VudCBJRCBlcnJvclxuXHQgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgICAgKGFkZF9wb3MgKFwiTWFsZm9ybWVkIGFnZW50ICdcIl4kMl5cIidcIikpKX1cbiAgICA7XG5cbmludGVyZmFjZV9leHByZXNzaW9uX3NpZzpcbiAgICAvKmVtcHR5Ki8ge1tdfVxuICAgIHwgcG9ydF9leHByZXNzaW9uX3NpZyBDT01NQSBpbnRlcmZhY2VfZXhwcmVzc2lvbl9zaWcgeyQxOjokM31cbiAgICB8IHBvcnRfZXhwcmVzc2lvbl9zaWcge1skMV19XG4gICAgO1xuXG5pbnRlcmZhY2VfZXhwcmVzc2lvbjpcbiAgLyplbXB0eSovIHtbXX1cbiAgICB8IHBvcnRfZXhwcmVzc2lvbiBDT01NQSBpbnRlcmZhY2VfZXhwcmVzc2lvbiB7JDE6OiQzfVxuICAgIHwgcG9ydF9leHByZXNzaW9uIHtbJDFdfVxuICAgIDtcblxuY291bnRlcl90ZXN0OlxuICAgfCBUWVBFIElOVCB7IFNvbWUgKEFzdC5DRVEgJDIscmhzX3BvcyAyKX1cbiAgIHwgVFlQRSBHUkVBVEVSIElOVCB7IFNvbWUgKEFzdC5DR1RFICQzLHJoc19wb3MgMyl9XG4gICB8IFRZUEUgU01BTExFUiBJTlQgeyBTb21lIChBc3QuQ0xURSAkMyxyaHNfcG9zIDMpfVxuICAgfCBUWVBFIElEIHsgU29tZSAoQXN0LkNWQVIgJDIscmhzX3BvcyAyKX1cblxucG9ydF9leHByZXNzaW9uOlxuICAgIHwgSUQgaW50ZXJuYWxfc3RhdGUgbGlua19zdGF0ZV9tb2Rcblx0IHsgQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD0kMjsgQXN0LnBvcnRfbGluaz1bXTtcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBOb25lOyBBc3QucG9ydF9saW5rX21vZCA9ICQzOyB9IH1cbiAgICB8IElEIGludGVybmFsX3N0YXRlIGxpbmtfc3RhdGUgbGlua19zdGF0ZV9tb2Rcblx0IHsgQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD0kMjsgQXN0LnBvcnRfbGluaz0kMztcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBOb25lOyBBc3QucG9ydF9saW5rX21vZCA9ICQ0OyB9IH1cbiAgICB8IElEIGludGVybmFsX3N0YXRlIERJViBLQVBQQV9NUksgbGlua19zdGF0ZV9tb2Rcblx0IHsgQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD0kMjsgQXN0LnBvcnRfbGluaz1bXTtcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBTb21lKCQ0LHJoc19wb3MgNCk7IEFzdC5wb3J0X2xpbmtfbW9kID0gJDU7IH0gfVxuICAgIHwgSUQgaW50ZXJuYWxfc3RhdGUgRElWIEtBUFBBX01SSyBsaW5rX3N0YXRlIGxpbmtfc3RhdGVfbW9kXG5cdCB7IEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9JDU7XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gU29tZSgkNCxyaHNfcG9zIDQpOyBBc3QucG9ydF9saW5rX21vZCA9ICQ2OyB9IH1cbiAgICB8IElEIFBMVVMgRVFVQUwgSU5UXG4gICAgICAgICB7IEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gTm9uZTtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAoJDQscmhzX3BvcyA0KX0gfVxuICAgIHwgSUQgUExVUyBFUVVBTCBNSU5VUyBJTlRcbiAgICAgICAgIHsgQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKCQxLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSBOb25lO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9ICgtJDUscmhzX3BvcyA1KX0gfVxuICAgIHwgSUQgY291bnRlcl90ZXN0IFBMVVMgRVFVQUwgSU5UXG4gICAgICAgICB7IEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gJDI7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKCQ1LHJoc19wb3MgNSl9IH1cbiAgIHwgSUQgY291bnRlcl90ZXN0IFBMVVMgRVFVQUwgTUlOVVMgSU5UXG4gICAgICAgICB7IEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gJDI7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKC0gJDYscmhzX3BvcyA2KX0gfVxuICAgfCBJRCBjb3VudGVyX3Rlc3RcbiAgICAgICAgIHsgQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKCQxLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSAkMjtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAwfSB9XG4gICAgO1xuXG5wb3J0X2V4cHJlc3Npb25fc2lnOlxuICAgfCBJRCBpbnRlcm5hbF9zdGF0ZSBsaW5rX3N0YXRlX21vZFxuICAgIFx0IHsgQXN0LlBvcnRcbiAgICBcdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9W107XG4gICAgXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IE5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kID0gJDM7IH0gfVxuICB8IElEIGludGVybmFsX3N0YXRlIGxpbmtfc3RhdGUgbGlua19zdGF0ZV9tb2RcbiAgICBcdCB7IEFzdC5Qb3J0XG4gICAgXHQgICB7QXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PSQyOyBBc3QucG9ydF9saW5rPSQzO1xuICAgIFx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBOb25lOyBBc3QucG9ydF9saW5rX21vZCA9ICQ0OyB9IH1cbiAgfCBJRCBpbnRlcm5hbF9zdGF0ZSBESVYgS0FQUEFfTVJLIGxpbmtfc3RhdGVfbW9kXG4gICAgXHQgeyBBc3QuUG9ydFxuICAgIFx0ICAge0FzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD0kMjsgQXN0LnBvcnRfbGluaz1bXTtcbiAgICBcdCAgICBBc3QucG9ydF9pbnRfbW9kID0gU29tZSgkNCxyaHNfcG9zIDQpOyBBc3QucG9ydF9saW5rX21vZCA9ICQ1OyB9IH1cbiAgfCBJRCBpbnRlcm5hbF9zdGF0ZSBESVYgS0FQUEFfTVJLIGxpbmtfc3RhdGUgbGlua19zdGF0ZV9tb2RcbiAgICBcdCB7IEFzdC5Qb3J0XG4gICAgXHQgICB7QXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PSQyOyBBc3QucG9ydF9saW5rPSQ1O1xuICAgIFx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBTb21lKCQ0LHJoc19wb3MgNCk7IEFzdC5wb3J0X2xpbmtfbW9kID0gJDY7IH0gfVxuICB8IElEIFBMVVMgRVFVQUwgSU5UXG4gICAgICAgICAgICAgeyBBc3QuQ291bnRlclxuICAgIFx0ICAgeyBBc3QuY291bnRlcl9zaWdfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWluID0gTm9uZTtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21heCA9IFNvbWUgKFNvbWUgJDQsIHJoc19wb3MgNCk7XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19kZWZhdWx0ID0gJDQ7XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlID0gQXN0LkZyb21fb3JpZ2luYWxfYXN0fX1cbiAgfCBJRCBQTFVTIEVRVUFMIE1JTlVTIElOVFxuICAgICAgICB7QXN0LkNvdW50ZXJcbiAgeyBBc3QuY291bnRlcl9zaWdfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuICAgIEFzdC5jb3VudGVyX3NpZ19taW4gPSBOb25lO1xuICAgIEFzdC5jb3VudGVyX3NpZ19tYXggPSBTb21lIChTb21lICgtJDUpLCByaHNfcG9zIDUpO1xuICAgIEFzdC5jb3VudGVyX3NpZ19kZWZhdWx0ID0gLSQ1O1xuICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlID0gQXN0LkZyb21fb3JpZ2luYWxfYXN0fX1cbiAgfCBJRCBjb3VudGVyX3Rlc3QgUExVUyBFUVVBTCBJTlRcbiAgICAgICB7IGxldCBtaW4gPVxuICAgICAgICAgICAgbWF0Y2ggJDIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoQXN0LkNFUSBpLF8pIC0+IGlcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lICgoQ0dURSBffENMVEUgX3xDVkFSIF8pLCBfKSAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIklzc3VlIGNvdW50ZXJzIGluIHNpZ25hdHVyZVwiKSlcbiAgICAgICAgaW4gQXN0LkNvdW50ZXJcbiAgICAgICAgIHsgQXN0LmNvdW50ZXJfc2lnX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21pbiA9IFNvbWUgKFNvbWUgbWluLCByaHNfcG9zIDIpO1xuICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWF4ID0gU29tZSAoU29tZSAkNSwgcmhzX3BvcyA1KTtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQgPSBtaW47XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlID0gQXN0LkZyb21fb3JpZ2luYWxfYXN0fX1cbiAgfCBJRCBjb3VudGVyX3Rlc3QgUExVUyBFUVVBTCBNSU5VUyBJTlRcbiAgICAgIHsgbGV0IG1pbiA9XG4gICAgICAgICAgIG1hdGNoICQyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoQXN0LkNFUSBpLF8pIC0+IGlcbiAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgKChDR1RFIF98Q0xURSBffENWQVIgXyksIF8pIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJJc3N1ZSBjb3VudGVycyBpbiBzaWduYXR1cmVcIikpXG4gICAgICAgaW5cbiAgICAgICAgQXN0LkNvdW50ZXJcbiAgICAgICAgeyBBc3QuY291bnRlcl9zaWdfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19taW4gPSBTb21lIChTb21lIG1pbiwgcmhzX3BvcyAyKTtcbiAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWF4ID0gU29tZSAoU29tZSAoLSQ2KSwgcmhzX3BvcyA2KTtcbiAgICAgICAgICBBc3QuY291bnRlcl9zaWdfZGVmYXVsdCA9IG1pbiA7XG4gICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX3Zpc2libGUgPSBBc3QuRnJvbV9vcmlnaW5hbF9hc3R9fVxuICB8IElEIGNvdW50ZXJfdGVzdFxuICAgICAgeyBsZXQgbWluID1cbiAgICAgICAgICAgbWF0Y2ggJDIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChBc3QuQ0VRIGksXykgLT4gaVxuICAgICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoKENHVEUgX3xDTFRFIF98Q1ZBUiBfKSwgXykgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIklzc3VlIGNvdW50ZXJzIGluIHNpZ25hdHVyZVwiKSlcbiAgICAgICBpblxuICAgICAgIEFzdC5Db3VudGVyXG4gIHsgQXN0LmNvdW50ZXJfc2lnX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcbiAgICBBc3QuY291bnRlcl9zaWdfbWluID0gU29tZSAoU29tZSBtaW4sIHJoc19wb3MgMik7XG4gICAgQXN0LmNvdW50ZXJfc2lnX21heCA9IE5vbmU7XG4gICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQgPSBtaW47XG4gICAgQXN0LmNvdW50ZXJfc2lnX3Zpc2libGUgPSBBc3QuRnJvbV9vcmlnaW5hbF9hc3R9fVxuXG5cbmludGVybmFsX3N0YXRlOlxuICAvKmVtcHR5Ki8ge1tdfVxuICAgIHwgS0FQUEFfTVJLIGludGVybmFsX3N0YXRlIHsoU29tZSAkMSxyaHNfcG9zIDEpOjokMn1cbiAgICB8IGVycm9yXG4gICAgICAge3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgIChhZGRfcG9zIFwiSXNzdWUgYWZ0ZXIgaW50ZXJuYWwgc3RhdGVcIikpfVxuICAgIDtcblxubGlua19zdGF0ZV9tb2Q6XG5cdHwge05vbmV9XG5cdHwgRElWIEtBUFBBX0xOSyBET1Qge1NvbWUgTm9uZX1cblx0fCBESVYgS0FQUEFfTE5LIElOVCB7U29tZSAoU29tZSAoJDMscmhzX3BvcyAzKSl9XG5cdHwgRElWIGVycm9yXG5cdHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0ICAoYWRkX3BvcyBcIkluY29ycmVjdCBsaW5rIG1vZGlmaWNhdGlvblwiKSl9O1xuXG5cbmFfbGlua19zdGF0ZTpcbiAgICB8IEtBUFBBX0xOSyBET1QgeyhMS2FwcGEuTE5LX0ZSRUUscmhzX3BvcyAyKX1cbiAgICB8IEtBUFBBX0xOSyBJTlQgeyhMS2FwcGEuTE5LX1ZBTFVFICgkMiwoKSkscmhzX3BvcyAyKX1cbiAgICB8IEtBUFBBX0xOSyBLQVBQQV9TRU1JIHsoTEthcHBhLkxOS19TT01FLHJoc19wb3MgMil9XG4gICAgfCBLQVBQQV9MTksgSUQgRE9UIElEIHthZGRfcG9zIChMS2FwcGEuTE5LX1RZUEVcblx0XHRcdFx0ICAgICAgKCgkMixyaHNfcG9zIDIpLCgkNCxyaHNfcG9zIDQpKSl9XG4gICAgfCBLQVBQQV9XTEQge2FkZF9wb3MgTEthcHBhLkxOS19BTll9XG4gICAgfCBLQVBQQV9MTksgZXJyb3Jcblx0e3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgKGFkZF9wb3MgXCJJbnZhbGlkIGxpbmsgc3RhdGVcIikpfVxuO1xuXG5saW5rX3N0YXRlOlxuXHR8IGFfbGlua19zdGF0ZSBsaW5rX3N0YXRlIHskMTo6JDJ9XG5cdHwgYV9saW5rX3N0YXRlIHtbJDFdfTtcblxuaW50ZXJhY3RpdmVfY29tbWFuZDpcblx0fCBSVU4gTkVXTElORSB7QXN0LlJVTiAoTG9jLmFubm90X3dpdGhfZHVtbXkgQWxnX2V4cHIuRkFMU0UpfVxuXHR8IFJVTiBib29sX2V4cHIgTkVXTElORSB7QXN0LlJVTiAkMn1cblx0fCBlZmZlY3RfbGlzdCBORVdMSU5FIHtBc3QuTU9ESUZZICQxfVxuXHR8IEVPRiB7QXN0LlFVSVR9XG5cdHwgZXJyb3Jcblx0e3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyBcIlVucmVjb2duaXplZCBjb21tYW5kXCIpKX1cbiUlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG57XG4gIG9wZW4gTGV4aW5nXG4gIG9wZW4gS2FwcGFQYXJzZXJcblxuICBsZXQgcmVhY2hfZW9mIGxleGJ1ZiA9XG4gICAgbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlXG5cbiBsZXQgcmVzZXRfZW9mIGxleGJ1ZiA9XG4gICBsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIGZhbHNlXG5cbiBsZXQgcG9zaXRpb24gbGV4YnVmID1cbiAgIGxldCBwb3MgPSBsZXhidWYubGV4X2N1cnJfcCBpblxuICAgKHBvcy5wb3NfZm5hbWUsIHBvcy5wb3NfbG51bSwgcG9zLnBvc19jbnVtIC0gcG9zLnBvc19ib2wpXG5cbiBsZXQga2V5d29yZF9vcl9pZCA9XG4gbGV0IGtleXdvcmRzID0gSGFzaHRibC5jcmVhdGUgMTUgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImRvXCIgRE8gaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcInNldFwiIFNFVCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwicmVwZWF0XCIgUkVQRUFUIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJ1bnRpbFwiIFVOVElMIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJJTkZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiaW5mXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImFsYXJtXCIgQUxBUk0gaW5cbiBmdW4geCAtPlxuIHRyeSBIYXNodGJsLmZpbmQga2V5d29yZHMgeCB3aXRoIE5vdF9mb3VuZCAtPiBJRCB4XG5cbmxldCBzcGFjZV9jaGFycyA9IFsnICc7J1xcbic7J1xcdCddXG59XG5cbmxldCBlb2wgPSAnXFxyJz8gJ1xcbidcbmxldCBibGFuayA9IFsnICcgJ1xcdCddXG5sZXQgaW50ZWdlciA9IChbJzAnLSc5J10rKVxubGV0IHJlYWwgPVxuICAgICAoKCgoWycwJy0nOSddKyAoJy4nIFsnMCctJzknXSopPykgfCAoJy4nIFsnMCctJzknXSspKVxuXHRbJ2UnICdFJ10gWycrJyAnLSddPyBbJzAnLSc5J10rKVxuICB8ICgoWycwJy0nOSddKyAnLicgWycwJy0nOSddKiApIHwgKFsnMCctJzknXSogJy4nIFsnMCctJzknXSspKSlcbmxldCBpZCA9ICgnXycqIFsnYSctJ3onICdBJy0nWiddIFsnYSctJ3onICdBJy0nWicgJzAnLSc5JyAnXycgJy0nICcrJ10qIClcbmxldCBpbnRlcm5hbF9zdGF0ZSA9ICd+JyAoWycwJy0nOScgJ2EnLSd6JyAnQSctJ1onICdfJyAnLScgJysnXSspXG5sZXQgcGVydCA9ICckJyBpZFxuXG5ydWxlIHRva2VuID0gcGFyc2Vcblx0IHwgJ1xcXFwnIGJsYW5rKiBlb2wge0xleGluZy5uZXdfbGluZSBsZXhidWYgOyB0b2tlbiBsZXhidWZ9XG5cdCB8IFwiJiZcIiB7QU5EfVxuXHQgfCBcInx8XCIge09SfVxuXHQgfCBcIjwtPlwiIHtLQVBQQV9MUkFSfVxuXHQgfCBcIi0+XCIge0tBUFBBX1JBUn1cblx0IHwgXCI8LVwiIHtMQVJ9XG5cdCB8IFwiPD5cIiB7RElGRn1cblx0IHwgcGVydCBhcyBzIHttYXRjaCBzIHdpdGhcblx0XHQgICAgICB8IFwiJERFTFwiIC0+IERFTEVURVxuXHRcdCAgICAgIHwgXCIkQUREXCIgLT4gSU5UUk9cblx0XHQgICAgICB8IFwiJEFQUExZXCIgLT4gQVBQTFlcblx0XHQgICAgICB8IFwiJFNOQVBTSE9UXCIgLT4gU05BUFNIT1Rcblx0XHQgICAgICB8IFwiJFNUT1BcIiAtPiBTVE9QXG5cdFx0ICAgICAgfCBcIiRGTFVYXCIgLT4gRkxVWFxuXHRcdCAgICAgIHwgXCIkVFJBQ0tcIiAtPiBUUkFDS1xuXHRcdCAgICAgIHwgXCIkVVBEQVRFXCIgLT4gQVNTSUdOXG5cdFx0ICAgICAgfCBcIiRQUklOVFwiIC0+IFBSSU5URlxuXHRcdCAgICAgIHwgXCIkUFJJTlRGXCIgLT4gUFJJTlRGXG5cdFx0ICAgICAgfCBcIiRQTE9URU5UUllcIiAtPiBQTE9URU5UUllcblx0XHQgICAgICB8IFwiJFJVTlwiIC0+IFJVTlxuXHRcdCAgICAgIHwgXCIkU1BFQ0lFU19PRlwiIC0+IFNQRUNJRVNfT0Zcblx0XHQgICAgICB8IHMgLT5cblx0XHRcdCByYWlzZVxuXHRcdFx0ICAgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAgICAoXCJQZXJ0dXJiYXRpb24gZWZmZWN0IFxcXCJcIl5zXlwiXFxcIiBpcyBub3QgZGVmaW5lZFwiLFxuXHRcdFx0ICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHRcdChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHRcdCAgICAgfVxuXHQgfCAnWycgYmxhbmsqIChpZCBhcyBsYWIpIGJsYW5rKiAnXScge1xuXHRcdG1hdGNoIGxhYiB3aXRoXG5cdFx0fCBcIkVcIiAtPiBFVkVOVFxuXHRcdHwgXCJFLVwiIC0+IE5VTExfRVZFTlRcblx0XHR8IFwiVFwiIC0+IFRJTUVcblx0XHR8IFwiVHNpbVwiIC0+IENQVVRJTUVcblx0XHR8IFwibG9nXCIgLT4gTE9HXG5cdFx0fCBcInNpblwiIC0+IFNJTlVTXG5cdFx0fCBcImNvc1wiIC0+IENPU0lOVVNcblx0XHR8IFwidGFuXCIgLT4gVEFOXG5cdFx0fCBcImV4cFwiIC0+IEVYUE9ORU5UXG5cdFx0fCBcImludFwiIC0+IEFCU1xuXHRcdHwgXCJtb2RcIiAtPiBNT0RVTE9cblx0XHR8IFwic3FydFwiIC0+IFNRUlRcblx0XHR8IFwidHJ1ZVwiIC0+IFRSVUVcblx0XHR8IFwiZmFsc2VcIiAtPiBGQUxTRVxuXHRcdHwgXCJwaVwiIC0+IEZMT0FUICgzLjE0MTU5MjY1KVxuXHRcdHwgXCJtYXhcIiAtPiBNQVhcblx0XHR8IFwibWluXCIgLT4gTUlOXG5cdFx0fCBcIkVtYXhcIiAtPiBFTUFYXG5cdFx0fCBcIlRtYXhcIiAtPiBUTUFYXG5cdFx0fCBcIj9cIiAtPiBUSEVOXG5cdFx0fCBcIjpcIiAtPiBFTFNFXG5cdFx0fCBcIm5vdFwiIC0+IE5PVFxuXHRcdHwgXyBhcyBzIC0+XG5cdFx0ICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAgKFwiU3ltYm9sIFxcXCJcIl5zXlwiXFxcIiBpcyBub3QgZGVmaW5lZFwiLFxuXHRcdFx0ICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdFx0ICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG5cdCAgICAgICB9XG5cdCB8ICc6JyB7VFlQRX1cblx0IHwgJzsnIHtTRU1JQ09MT059XG5cdCB8ICdcXFwiJyB7bGV0IHN0ciA9IHJlYWRfbGFiZWwgW10gWydcXFwiJ10gbGV4YnVmIGluXG5cdFx0IFNUUklORyBzdHJ9XG5cdCB8IGVvbCB7TGV4aW5nLm5ld19saW5lIGxleGJ1ZiA7IE5FV0xJTkV9XG5cdCB8ICcjJyB7Y29tbWVudCBsZXhidWZ9XG5cdCB8ICcvJyAnKicge2lubGluZV9jb21tZW50IGxleGJ1ZjsgdG9rZW4gbGV4YnVmfVxuXHQgfCBpbnRlZ2VyIGFzIG4ge3RyeSBJTlQgKGludF9vZl9zdHJpbmcgbilcblx0IHdpdGggRmFpbHVyZSBfIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQgKG5eXCIgaXMgYSBpbmNvcnJlY3QgaW50ZWdlclwiLFxuXHQgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0ICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpfVxuXG5cdCB8IHJlYWwgYXMgZiB7RkxPQVQgKGZsb2F0X29mX3N0cmluZyBmKX1cblx0IHwgJ1xcJycgKFteJ1xcbicnXFwnJ10rIGFzIHgpICdcXCcne0xBQkVMKHgpfVxuXHQgfCBpZCBhcyBzdHIge2tleXdvcmRfb3JfaWQgc3RyfVxuXHQgfCAnQCcge0FUfVxuXHQgfCAnLCcge0NPTU1BfVxuXHQgfCAnKCcge09QX1BBUn1cblx0IHwgJyknIHtDTF9QQVJ9XG5cdCB8ICd7JyB7T1BfQ1VSfVxuXHQgfCAnfScge0NMX0NVUn1cblx0IHwgJ3wnIHtQSVBFfVxuXHQgfCAnLicge0RPVH1cblx0IHwgJysnIHtQTFVTfVxuXHQgfCAnKicge01VTFR9XG5cdCB8ICctJyB7TUlOVVN9XG5cdCB8ICdeJyB7UE9XfVxuXHQgfCAnLycge0RJVn1cblx0IHwgJzwnIHtTTUFMTEVSfVxuXHQgfCAnPicge0dSRUFURVJ9XG5cdCB8ICc9JyB7RVFVQUx9XG5cdCB8ICclJyAoaWQgYXMgbGFiKSAnOicge1xuXHRcdG1hdGNoIGxhYiB3aXRoXG5cdFx0fCBcImFnZW50XCIgLT4gU0lHTkFUVVJFXG5cdFx0fCBcImluaXRcIiAtPiBJTklUXG5cdFx0fCBcInZhclwiIC0+IExFVFxuXHRcdHwgXCJwbG90XCIgLT4gUExPVFxuXHRcdHwgXCJtb2RcIiAtPiBQRVJUXG5cdFx0fCBcIm9ic1wiIC0+IE9CU1xuXHRcdHwgXCJkZWZcIiAtPiBDT05GSUdcblx0XHR8IFwidG9rZW5cIiAtPiBUT0tFTlxuXHRcdHwgXyBhcyBzIC0+XG5cdFx0ICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAgKFwiSW5zdHJ1Y3Rpb24gXFxcIlwiXnNeXCJcXFwiIG5vdCByZWNvZ25pemVkXCIsXG5cdFx0XHRcdFx0TG9jLm9mX3Bvc1xuXHRcdFx0XHRcdChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdFx0XHRcdCAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0ICAgICAgIH1cblx0IHwgJyEnIHtLQVBQQV9MTkt9XG5cdCB8IGludGVybmFsX3N0YXRlIGFzIHMge2xldCBpID0gU3RyaW5nLmluZGV4IHMgJ34nIGluXG5cdFx0XHRcdGxldCByID0gU3RyaW5nLnN1YiBzIChpKzEpIChTdHJpbmcubGVuZ3RoIHMtaS0xKSBpblxuXHRcdFx0XHRLQVBQQV9NUksgclxuXHRcdFx0ICAgICAgIH1cblx0IHwgJz8nIHtLQVBQQV9XTER9XG5cdCB8ICdfJyB7S0FQUEFfU0VNSX1cblx0IHwgYmxhbmsgIHt0b2tlbiBsZXhidWZ9XG5cdCB8IGVvZiB7cmVhY2hfZW9mIGxleGJ1ZjsgRU9GfVxuXHQgfCBfIGFzIGMge1xuXHRcdCAgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgICAgKFwiaW52YWxpZCB1c2Ugb2YgY2hhcmFjdGVyIFwiXiBTdHJpbmcubWFrZSAxIGMsXG5cdFx0XHQgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdFx0ICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHRcdCAgfVxuXG5hbmQgcmVhZF9sYWJlbCBhY2MgY2hhcl9saXN0ID1cbiAgcGFyc2VcbiAgfCBlb2Yge1N0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXZfbWFwIChmdW4geCAtPiBTdHJpbmcubWFrZSAxIHgpIGFjYyl9XG4gIHwgJ1xcXFwnIGJsYW5rKiBlb2wge0xleGluZy5uZXdfbGluZSBsZXhidWYgOyByZWFkX2xhYmVsIGFjYyBjaGFyX2xpc3QgbGV4YnVmfVxuICB8IF8gYXMgYyB7aWYgTGlzdC5tZW0gYyBjaGFyX2xpc3Rcblx0ICAgIHRoZW4gU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldl9tYXAgKGZ1biB4IC0+IFN0cmluZy5tYWtlIDEgeCkgYWNjKVxuXHQgICAgZWxzZSByZWFkX2xhYmVsIChjOjphY2MpIGNoYXJfbGlzdCBsZXhidWZ9XG5cbmFuZCBjb21tZW50ID0gcGFyc2Vcblx0ICAgIHwgZW9sIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgTkVXTElORX1cblx0ICAgIHwgJ1xcXFwnIGJsYW5rKiBlb2wge0xleGluZy5uZXdfbGluZSBsZXhidWY7IHRva2VuIGxleGJ1Zn1cblx0ICAgIHwgZW9mIHtFT0Z9XG5cdCAgICB8IF8ge2NvbW1lbnQgbGV4YnVmfVxuXG5hbmQgaW5saW5lX2NvbW1lbnQgPSBwYXJzZVxuXHRcdCAgIHwgZW9sIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCBsZXhidWZ9XG5cdFx0ICAgfCAnKicgJy8nIHsgKCkgfVxuXHRcdCAgIHwgJ1xcXCInXG5cdFx0ICAgICAgIHtpZ25vcmUgKHJlYWRfbGFiZWwgW10gWydcXFwiJ10gbGV4YnVmKTtcblx0XHRcdGlubGluZV9jb21tZW50IGxleGJ1Zn1cblx0XHQgICB8ICcvJyAnKicge2lubGluZV9jb21tZW50IGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgbGV4YnVmfVxuXHRcdCAgIHwgXyB7aW5saW5lX2NvbW1lbnQgbGV4YnVmfVxue1xuICBsZXQgY29tcGlsZSBsb2dnZXIgY29tcGlsIGZpbGUgPVxuICAgIGxldCBkID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgZCBpblxuICAgIGxldCAoKSA9IGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHtsZXhidWYubGV4X2N1cnJfcCB3aXRoIHBvc19mbmFtZSA9IGZpbGV9IGluXG4gICAgbGV0IGNvbXBpbCA9IHsgY29tcGlsIHdpdGggQXN0LmZpbGVuYW1lcyA9IGZpbGUgOjogY29tcGlsLkFzdC5maWxlbmFtZXMgfSBpblxuICAgIHRyeVxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nZ2VyIFwiUGFyc2luZyAlcy4uLkAuXCIgZmlsZSBpblxuICAgICAgbGV0IG91dCA9IEthcHBhUGFyc2VyLnN0YXJ0X3J1bGUgdG9rZW4gbGV4YnVmIGNvbXBpbCBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nZ2VyIFwiZG9uZUAuXCIgaW5cbiAgICAgIGxldCAoKSA9IGNsb3NlX2luIGQgaW4gb3V0XG4gICAgd2l0aCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAobXNnLHBvcykgLT5cbiAgICAgIGxldCAoKSA9IGNsb3NlX2luIGQgaW5cbiAgICAgIGxldCAoKSA9IFBwLmVycm9yIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgKG1zZyxwb3MpIGluXG4gICAgICBleGl0IDNcbn1cbiIsIiMgOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gXG4gIG9wZW4gTGV4aW5nXG4gIG9wZW4gS2FwcGFQYXJzZXJcblxuICBsZXQgcmVhY2hfZW9mIGxleGJ1ZiA9XG4gICAgbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlXG5cbiBsZXQgcmVzZXRfZW9mIGxleGJ1ZiA9XG4gICBsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIGZhbHNlXG5cbiBsZXQgcG9zaXRpb24gbGV4YnVmID1cbiAgIGxldCBwb3MgPSBsZXhidWYubGV4X2N1cnJfcCBpblxuICAgKHBvcy5wb3NfZm5hbWUsIHBvcy5wb3NfbG51bSwgcG9zLnBvc19jbnVtIC0gcG9zLnBvc19ib2wpXG5cbiBsZXQga2V5d29yZF9vcl9pZCA9XG4gbGV0IGtleXdvcmRzID0gSGFzaHRibC5jcmVhdGUgMTUgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImRvXCIgRE8gaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcInNldFwiIFNFVCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwicmVwZWF0XCIgUkVQRUFUIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJ1bnRpbFwiIFVOVElMIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJJTkZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiaW5mXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImFsYXJtXCIgQUxBUk0gaW5cbiBmdW4geCAtPlxuIHRyeSBIYXNodGJsLmZpbmQga2V5d29yZHMgeCB3aXRoIE5vdF9mb3VuZCAtPiBJRCB4XG5cbmxldCBzcGFjZV9jaGFycyA9IFsnICc7J1xcbic7J1xcdCddXG5cbiMgMzEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyMTNcXDI1NVxcMjE0XFwyNTVcXDIxNVxcMjU1XFwyMTdcXDI1NVxcMDg0XFwwMDBcXDIxOVxcMjU1XFwxNjBcXDAwMFxcXG4gICAgXFwyMjFcXDI1NVxcMjIyXFwyNTVcXDIyNVxcMjU1XFwyMjdcXDI1NVxcMjI4XFwyNTVcXDIzMVxcMjU1XFwyMzJcXDI1NVxcMjMzXFwyNTVcXFxuICAgIFxcMjM0XFwyNTVcXDIzNVxcMjU1XFwyMzZcXDI1NVxcMjQwXFwwMDBcXDA0MlxcMDAxXFwxMzZcXDAwMFxcMTU5XFwwMDBcXDExOVxcMDAxXFxcbiAgICBcXDA1MVxcMDAwXFwyNDJcXDI1NVxcMjQzXFwyNTVcXDAwMVxcMDAwXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDI0NlxcMjU1XFwxNTdcXDAwMVxcXG4gICAgXFwyMTVcXDAwMVxcMDM0XFwwMDBcXDA4M1xcMDAwXFwwMDZcXDAwMFxcMDkzXFwwMDBcXDE2OFxcMDAxXFwyNTVcXDI1NVxcMDAyXFwwMDBcXFxuICAgIFxcMTcwXFwwMDFcXDI1NFxcMjU1XFwyNTNcXDI1NVxcMjQ5XFwyNTVcXDA4MFxcMDAwXFwyNTJcXDI1NVxcMjUxXFwyNTVcXDAzOVxcMDAyXFxcbiAgICBcXDA5N1xcMDAyXFwyMTFcXDAwMlxcMDEzXFwwMDNcXDEyN1xcMDAzXFwyNDdcXDI1NVxcMjEyXFwwMDJcXDI0MVxcMjU1XFwxNDJcXDAwMVxcXG4gICAgXFwwODlcXDAwM1xcMTU1XFwwMDFcXDE3NFxcMDAyXFwxMTdcXDAwM1xcMTM4XFwwMDBcXDIzOFxcMjU1XFwxODVcXDAwM1xcMDA5XFwwMDRcXFxuICAgIFxcMDY3XFwwMDRcXDIyMFxcMjU1XFwxNDdcXDAwNFxcMjQ3XFwwMDFcXDI1M1xcMjU1XFwyMjNcXDAwMlxcMjU1XFwyNTVcXDI1NFxcMjU1XFxcbiAgICBcXDAwNFxcMDAwXFwyMjVcXDAwMlxcMTc4XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjM5XFwwMDJcXDI1NVxcMjU1XFwwMDVcXDAwMFxcXG4gICAgXFwyNTRcXDI1NVxcMDA2XFwwMDBcXDE0M1xcMDAzXFwwMDRcXDAwNVxcMjUxXFwyNTVcXDEwMVxcMDAwXFwyNTNcXDI1NVxcMDk3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwN1xcMDAwXFwyNTRcXDI1NVxcMjUyXFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MlxcMDAwXFwyNTVcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOFxcMDAwXFwwMzlcXDAwMFxcMDQyXFwwMDBcXDAyNlxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMDQyXFwwMDBcXDAyOVxcMDAwXFwwMzJcXDAwMFxcMDI1XFwwMDBcXDA0MlxcMDAwXFwwNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNjhcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAzOFxcMDAwXFwwMjdcXDAwMFxcMDcxXFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwNlxcMDAwXFwwMjhcXDAwMFxcMDI1XFwwMDBcXDAzMlxcMDAwXFwwMDdcXDAwMFxcMDM2XFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDAxNlxcMDAwXFwwMTVcXDAwMFxcMDExXFwwMDBcXDAxMlxcMDAwXFwwMTdcXDAwMFxcMDMzXFwwMDBcXDAyMlxcMDAwXFwwMjRcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMzBcXDAwMFxcMDI5XFwwMDBcXDAzNFxcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAzMVxcMDAwXFwwMzdcXDAwMFxcMDU0XFwwMDBcXDAxMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTRcXDAwMFxcMDM1XFwwMDBcXDAxM1xcMDAwXFwwMDVcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA2NlxcMDAwXFwwNDJcXDAwMFxcMDQxXFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA0NVxcMDAwXFwwOTFcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDQzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDAwMFxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA1OVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwNTZcXDAwMFxcMDUxXFwwMDBcXDAyM1xcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMDQwXFwwMDBcXDAzOFxcMDAwXFwwNDBcXDAwMFxcMDM4XFwwMDBcXDAzOVxcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMDU4XFwwMDBcXDA1NVxcMDAwXFwwNTFcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDAwXFwwMDBcXDA0MFxcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA2OVxcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDcxXFwwMDBcXDA3M1xcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFxcbiAgICBcXDA4MlxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDc3XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcXG4gICAgXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgyXFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDY2XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDAwMFxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODdcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyN1xcMDAwXFwwMzlcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDg5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDMzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAzNFxcMDAwXFwwMDVcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwNDRcXDAwMFxcMDg1XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDAzNFxcMDAwXFwwMjFcXDAwMFxcMjU1XFwyNTVcXDA2MFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNjBcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMjJcXDAwMFxcXG4gICAgXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyMVxcMDAwXFwwMjBcXDAwMFxcMDYwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIzXFwwMDBcXDAzMVxcMDAwXFwwMjNcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDAzN1xcMDAwXFwwMzdcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwMzdcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNTVcXDAwMFxcMjU1XFwyNTVcXDA1NVxcMDAwXFwwMjNcXDAwMFxcMDMxXFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDM3XFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIzXFwwMDBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDA0N1xcMDAwXFwwNjdcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA3NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDUzXFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXFxuICAgIFxcMDY5XFwwMDBcXDA2OVxcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA2OVxcMDAwXFwyNTVcXDI1NVxcMDczXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc3XFwwMDBcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDY5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA3M1xcMDAwXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDA3NFxcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDQ5XFwwMDBcXDA1M1xcMDAwXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMFxcMjU1XFwyNTVcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXFxuICAgIFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA4MlxcMDAwXFwwODJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODJcXDAwMFxcMjU1XFwyNTVcXDA1NlxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjJcXDAwMFxcMjU1XFwyNTVcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY0XFwwMDBcXDI1NVxcMjU1XFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNjZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAwXFwyNTVcXDI1NVxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwODNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA4M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDgzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4M1xcMDAwXCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDgwXFwwMDBcXDEzOFxcMDAwXFwyNTJcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0OVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlxcMjU1XFwwMDJcXDI1NVxcMjU1XFwwMDNcXDI1NVxcMjU1XFwwMDBcXDAwMlxcMDAxXFwwMDNcXDI1NVwiO1xufVxuXG5sZXQgcmVjIHRva2VuIGxleGJ1ZiA9XG4gIGxleGJ1Zi5MZXhpbmcubGV4X21lbSA8LSBBcnJheS5tYWtlIDQgKC0xKTsgX19vY2FtbF9sZXhfdG9rZW5fcmVjIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfdG9rZW5fcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5uZXdfZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWYgOyB0b2tlbiBsZXhidWYpXG4jIDY0MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgNTEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKEFORClcbiMgNjQ1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxuIyA1MiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAoT1IpXG4jIDY1MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDMgLT5cbiMgNTMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgIChLQVBQQV9MUkFSKVxuIyA2NTUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA0IC0+XG4jIDU0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChLQVBQQV9SQVIpXG4jIDY2MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDUgLT5cbiMgNTUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKExBUilcbiMgNjY1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgNiAtPlxuIyA1NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAoRElGRilcbiMgNjcwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgNyAtPlxubGV0XG4jIDU3IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgIHNcbiMgNjc2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDU3IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgKG1hdGNoIHMgd2l0aFxuXHRcdCAgICAgIHwgXCIkREVMXCIgLT4gREVMRVRFXG5cdFx0ICAgICAgfCBcIiRBRERcIiAtPiBJTlRST1xuXHRcdCAgICAgIHwgXCIkQVBQTFlcIiAtPiBBUFBMWVxuXHRcdCAgICAgIHwgXCIkU05BUFNIT1RcIiAtPiBTTkFQU0hPVFxuXHRcdCAgICAgIHwgXCIkU1RPUFwiIC0+IFNUT1Bcblx0XHQgICAgICB8IFwiJEZMVVhcIiAtPiBGTFVYXG5cdFx0ICAgICAgfCBcIiRUUkFDS1wiIC0+IFRSQUNLXG5cdFx0ICAgICAgfCBcIiRVUERBVEVcIiAtPiBBU1NJR05cblx0XHQgICAgICB8IFwiJFBSSU5UXCIgLT4gUFJJTlRGXG5cdFx0ICAgICAgfCBcIiRQUklOVEZcIiAtPiBQUklOVEZcblx0XHQgICAgICB8IFwiJFBMT1RFTlRSWVwiIC0+IFBMT1RFTlRSWVxuXHRcdCAgICAgIHwgXCIkUlVOXCIgLT4gUlVOXG5cdFx0ICAgICAgfCBcIiRTUEVDSUVTX09GXCIgLT4gU1BFQ0lFU19PRlxuXHRcdCAgICAgIHwgcyAtPlxuXHRcdFx0IHJhaXNlXG5cdFx0XHQgICAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgICAgIChcIlBlcnR1cmJhdGlvbiBlZmZlY3QgXFxcIlwiXnNeXCJcXFwiIGlzIG5vdCBkZWZpbmVkXCIsXG5cdFx0XHQgICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdFx0KExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG5cdFx0ICAgICApXG4jIDcwMCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDggLT5cbmxldFxuIyA3OCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGFiXG4jIDcwNiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMCkgbGV4YnVmLkxleGluZy5sZXhfbWVtLigxKSBpblxuIyA3OCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcblx0XHRtYXRjaCBsYWIgd2l0aFxuXHRcdHwgXCJFXCIgLT4gRVZFTlRcblx0XHR8IFwiRS1cIiAtPiBOVUxMX0VWRU5UXG5cdFx0fCBcIlRcIiAtPiBUSU1FXG5cdFx0fCBcIlRzaW1cIiAtPiBDUFVUSU1FXG5cdFx0fCBcImxvZ1wiIC0+IExPR1xuXHRcdHwgXCJzaW5cIiAtPiBTSU5VU1xuXHRcdHwgXCJjb3NcIiAtPiBDT1NJTlVTXG5cdFx0fCBcInRhblwiIC0+IFRBTlxuXHRcdHwgXCJleHBcIiAtPiBFWFBPTkVOVFxuXHRcdHwgXCJpbnRcIiAtPiBBQlNcblx0XHR8IFwibW9kXCIgLT4gTU9EVUxPXG5cdFx0fCBcInNxcnRcIiAtPiBTUVJUXG5cdFx0fCBcInRydWVcIiAtPiBUUlVFXG5cdFx0fCBcImZhbHNlXCIgLT4gRkFMU0Vcblx0XHR8IFwicGlcIiAtPiBGTE9BVCAoMy4xNDE1OTI2NSlcblx0XHR8IFwibWF4XCIgLT4gTUFYXG5cdFx0fCBcIm1pblwiIC0+IE1JTlxuXHRcdHwgXCJFbWF4XCIgLT4gRU1BWFxuXHRcdHwgXCJUbWF4XCIgLT4gVE1BWFxuXHRcdHwgXCI/XCIgLT4gVEhFTlxuXHRcdHwgXCI6XCIgLT4gRUxTRVxuXHRcdHwgXCJub3RcIiAtPiBOT1Rcblx0XHR8IF8gYXMgcyAtPlxuXHRcdCAgIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0ICAgIChcIlN5bWJvbCBcXFwiXCJec15cIlxcXCIgaXMgbm90IGRlZmluZWRcIixcblx0XHRcdCAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdCAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHQgICAgICAgKVxuIyA3MzkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA5IC0+XG4jIDEwOCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChUWVBFKVxuIyA3NDQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxMCAtPlxuIyAxMDkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoU0VNSUNPTE9OKVxuIyA3NDkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxMSAtPlxuIyAxMTAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKGxldCBzdHIgPSByZWFkX2xhYmVsIFtdIFsnXFxcIiddIGxleGJ1ZiBpblxuXHRcdCBTVFJJTkcgc3RyKVxuIyA3NTUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxMiAtPlxuIyAxMTIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoTGV4aW5nLm5ld19saW5lIGxleGJ1ZiA7IE5FV0xJTkUpXG4jIDc2MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDEzIC0+XG4jIDExMyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChjb21tZW50IGxleGJ1ZilcbiMgNzY1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTQgLT5cbiMgMTE0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgIChpbmxpbmVfY29tbWVudCBsZXhidWY7IHRva2VuIGxleGJ1ZilcbiMgNzcwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTUgLT5cbmxldFxuIyAxMTUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgblxuIyA3NzYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTE1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgKHRyeSBJTlQgKGludF9vZl9zdHJpbmcgbilcblx0IHdpdGggRmFpbHVyZSBfIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQgKG5eXCIgaXMgYSBpbmNvcnJlY3QgaW50ZWdlclwiLFxuXHQgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0ICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpKVxuIyA3ODQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxNiAtPlxubGV0XG4jIDEyMSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICBmXG4jIDc5MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxMjEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAoRkxPQVQgKGZsb2F0X29mX3N0cmluZyBmKSlcbiMgNzk0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTcgLT5cbmxldFxuIyAxMjIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDgwMCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSAobGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgKyAtMSkgaW5cbiMgMTIyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMQUJFTCh4KSlcbiMgODA0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTggLT5cbmxldFxuIyAxMjMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgIHN0clxuIyA4MTAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTIzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgKGtleXdvcmRfb3JfaWQgc3RyKVxuIyA4MTQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxOSAtPlxuIyAxMjQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoQVQpXG4jIDgxOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIwIC0+XG4jIDEyNSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChDT01NQSlcbiMgODI0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjEgLT5cbiMgMTI2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKE9QX1BBUilcbiMgODI5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjIgLT5cbiMgMTI3IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKENMX1BBUilcbiMgODM0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjMgLT5cbiMgMTI4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKE9QX0NVUilcbiMgODM5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjQgLT5cbiMgMTI5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKENMX0NVUilcbiMgODQ0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjUgLT5cbiMgMTMwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKFBJUEUpXG4jIDg0OSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDI2IC0+XG4jIDEzMSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChET1QpXG4jIDg1NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDI3IC0+XG4jIDEzMiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChQTFVTKVxuIyA4NTkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyOCAtPlxuIyAxMzMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoTVVMVClcbiMgODY0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjkgLT5cbiMgMTM0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKE1JTlVTKVxuIyA4NjkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzMCAtPlxuIyAxMzUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoUE9XKVxuIyA4NzQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzMSAtPlxuIyAxMzYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoRElWKVxuIyA4NzkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzMiAtPlxuIyAxMzcgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoU01BTExFUilcbiMgODg0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzMgLT5cbiMgMTM4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKEdSRUFURVIpXG4jIDg4OSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDM0IC0+XG4jIDEzOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChFUVVBTClcbiMgODk0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzUgLT5cbmxldFxuIyAxNDAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgbGFiXG4jIDkwMCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSAobGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgKyAtMSkgaW5cbiMgMTQwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChcblx0XHRtYXRjaCBsYWIgd2l0aFxuXHRcdHwgXCJhZ2VudFwiIC0+IFNJR05BVFVSRVxuXHRcdHwgXCJpbml0XCIgLT4gSU5JVFxuXHRcdHwgXCJ2YXJcIiAtPiBMRVRcblx0XHR8IFwicGxvdFwiIC0+IFBMT1Rcblx0XHR8IFwibW9kXCIgLT4gUEVSVFxuXHRcdHwgXCJvYnNcIiAtPiBPQlNcblx0XHR8IFwiZGVmXCIgLT4gQ09ORklHXG5cdFx0fCBcInRva2VuXCIgLT4gVE9LRU5cblx0XHR8IF8gYXMgcyAtPlxuXHRcdCAgIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgIChcIkluc3RydWN0aW9uIFxcXCJcIl5zXlwiXFxcIiBub3QgcmVjb2duaXplZFwiLFxuXHRcdFx0XHRcdExvYy5vZl9wb3Ncblx0XHRcdFx0XHQoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdFx0XHQgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG5cdCAgICAgICApXG4jIDkyMCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDM2IC0+XG4jIDE1NyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChLQVBQQV9MTkspXG4jIDkyNSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDM3IC0+XG5sZXRcbiMgMTU4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzXG4jIDkzMSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNTggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBpID0gU3RyaW5nLmluZGV4IHMgJ34nIGluXG5cdFx0XHRcdGxldCByID0gU3RyaW5nLnN1YiBzIChpKzEpIChTdHJpbmcubGVuZ3RoIHMtaS0xKSBpblxuXHRcdFx0XHRLQVBQQV9NUksgclxuXHRcdFx0ICAgICAgIClcbiMgOTM4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzggLT5cbiMgMTYyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKEtBUFBBX1dMRClcbiMgOTQzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzkgLT5cbiMgMTYzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKEtBUFBBX1NFTUkpXG4jIDk0OCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDQwIC0+XG4jIDE2NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICh0b2tlbiBsZXhidWYpXG4jIDk1MyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDQxIC0+XG4jIDE2NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChyZWFjaF9lb2YgbGV4YnVmOyBFT0YpXG4jIDk1OCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDQyIC0+XG5sZXRcbiMgMTY2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIGNcbiMgOTY0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cbiMgMTY2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgKFxuXHRcdCAgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgICAgKFwiaW52YWxpZCB1c2Ugb2YgY2hhcmFjdGVyIFwiXiBTdHJpbmcubWFrZSAxIGMsXG5cdFx0XHQgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdFx0ICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHRcdCAgKVxuIyA5NzMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3Rva2VuX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGFiZWwgYWNjIGNoYXJfbGlzdCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sYWJlbF9yZWMgYWNjIGNoYXJfbGlzdCBsZXhidWYgNjdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xhYmVsX3JlYyBhY2MgY2hhcl9saXN0IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTc1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXZfbWFwIChmdW4geCAtPiBTdHJpbmcubWFrZSAxIHgpIGFjYykpXG4jIDk4NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgMTc2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWYgOyByZWFkX2xhYmVsIGFjYyBjaGFyX2xpc3QgbGV4YnVmKVxuIyA5OTAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyIC0+XG5sZXRcbiMgMTc3IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIGNcbiMgOTk2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cbiMgMTc3IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgKGlmIExpc3QubWVtIGMgY2hhcl9saXN0XG5cdCAgICB0aGVuIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXZfbWFwIChmdW4geCAtPiBTdHJpbmcubWFrZSAxIHgpIGFjYylcblx0ICAgIGVsc2UgcmVhZF9sYWJlbCAoYzo6YWNjKSBjaGFyX2xpc3QgbGV4YnVmKVxuIyAxMDAyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xhYmVsX3JlYyBhY2MgY2hhcl9saXN0IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgY29tbWVudCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfY29tbWVudF9yZWMgbGV4YnVmIDc0XG5hbmQgX19vY2FtbF9sZXhfY29tbWVudF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxODIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAoTGV4aW5nLm5ld19saW5lIGxleGJ1ZiA7IE5FV0xJTkUpXG4jIDEwMTQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDE4MyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyB0b2tlbiBsZXhidWYpXG4jIDEwMTkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyIC0+XG4jIDE4NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgIChFT0YpXG4jIDEwMjQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzIC0+XG4jIDE4NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAoY29tbWVudCBsZXhidWYpXG4jIDEwMjkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2NvbW1lbnRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgaW5saW5lX2NvbW1lbnQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2lubGluZV9jb21tZW50X3JlYyBsZXhidWYgODNcbmFuZCBfX29jYW1sX2xleF9pbmxpbmVfY29tbWVudF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxODggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAoTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgbGV4YnVmKVxuIyAxMDQxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyAxODkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgKCAoKSApXG4jIDEwNDYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyIC0+XG4jIDE5MSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAoaWdub3JlIChyZWFkX2xhYmVsIFtdIFsnXFxcIiddIGxleGJ1Zik7XG5cdFx0XHRpbmxpbmVfY29tbWVudCBsZXhidWYpXG4jIDEwNTIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzIC0+XG4jIDE5MyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAoaW5saW5lX2NvbW1lbnQgbGV4YnVmOyBpbmxpbmVfY29tbWVudCBsZXhidWYpXG4jIDEwNTcgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA0IC0+XG4jIDE5NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAoaW5saW5lX2NvbW1lbnQgbGV4YnVmKVxuIyAxMDYyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9pbmxpbmVfY29tbWVudF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTk1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiBcbiAgbGV0IGNvbXBpbGUgbG9nZ2VyIGNvbXBpbCBmaWxlID1cbiAgICBsZXQgZCA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGQgaW5cbiAgICBsZXQgKCkgPSBsZXhidWYubGV4X2N1cnJfcCA8LSB7bGV4YnVmLmxleF9jdXJyX3Agd2l0aCBwb3NfZm5hbWUgPSBmaWxlfSBpblxuICAgIGxldCBjb21waWwgPSB7IGNvbXBpbCB3aXRoIEFzdC5maWxlbmFtZXMgPSBmaWxlIDo6IGNvbXBpbC5Bc3QuZmlsZW5hbWVzIH0gaW5cbiAgICB0cnlcbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcIlBhcnNpbmcgJXMuLi5ALlwiIGZpbGUgaW5cbiAgICAgIGxldCBvdXQgPSBLYXBwYVBhcnNlci5zdGFydF9ydWxlIHRva2VuIGxleGJ1ZiBjb21waWwgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcImRvbmVALlwiIGluXG4gICAgICBsZXQgKCkgPSBjbG9zZV9pbiBkIGluIG91dFxuICAgIHdpdGggRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKG1zZyxwb3MpIC0+XG4gICAgICBsZXQgKCkgPSBjbG9zZV9pbiBkIGluXG4gICAgICBsZXQgKCkgPSBQcC5lcnJvciBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIChtc2cscG9zKSBpblxuICAgICAgZXhpdCAzXG5cbiMgMTA4NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBjYXRhbG9nID0gS2ZpbGVzLmNyZWF0ZSAoKVxuXG50eXBlIF8gaGFuZGxlID1cbiAgfCBOb3RoaW5nIDogdW5pdCBoYW5kbGVcbiAgfCBDYXRhbG9nIDogS2ZpbGVzLmNhdGFsb2dfaXRlbSBsaXN0IGhhbmRsZVxuICB8IEluZm8gOiAoc3RyaW5nICogaW50KSBoYW5kbGVcbiAgfCBBc3QgOiBBc3QucGFyc2luZ19jb21waWwgaGFuZGxlXG5cbnR5cGUgYm94ID1cbiAgfCBCIDogJ2EgaGFuZGxlICogaW50ICogKCdhLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgLT4gYm94XG5cbmxldCByZXBseSBwb3N0IHdyaXRlX3YgaWQgdiA9XG4gIGxldCBtZXNzYWdlID1cbiAgICBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGVcbiAgICAgIChmdW4gYiAoKSAtPlxuICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgYiBpZCk7XG4gICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgUmVzdWx0X3V0aWwud3JpdGVfdCB3cml0ZV92XG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2xpc3QgUmVzdWx0X3V0aWwud3JpdGVfbWVzc2FnZSlcbiAgICAgICAgICAgICAgICBiIHYpO1xuICAgICAgICAgIF0pXG4gICAgICAoKVxuICBpblxuICBwb3N0IG1lc3NhZ2VcblxubGV0IHdyaXRlX2NhdGFsb2dfaXRlbXMgPSBKc29uVXRpbC53cml0ZV9saXN0IEtmaWxlcy53cml0ZV9jYXRhbG9nX2l0ZW1cblxubGV0IGxpZnRfYW5zd2VyID0gZnVuY3Rpb25cbiAgfCBSZXN1bHQuT2sgeCAtPiBSZXN1bHRfdXRpbC5vayB4XG4gIHwgUmVzdWx0LkVycm9yIHRleHQgLT5cbiAgICBSZXN1bHRfdXRpbC5lcnJvclxuICAgICAgWyB7IFJlc3VsdF91dGlsLnJhbmdlID0gTm9uZTsgc2V2ZXJpdHkgPSBMb2dzLkVycm9yOyB0ZXh0IH0gXVxuXG5sZXQgb25fbWVzc2FnZSB5aWVsZCBwb3N0ID1cbiAgbGV0IGN1cnJlbnRfaWQgPSByZWYgTm9uZSBpblxuICBmdW4gdGV4dCAtPlxuICAgIHRyeVxuICAgICAgTHd0LmJpbmRcbiAgICAgICAgKEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nXG4gICAgICAgICAgIChKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50IChmdW4gc3QgYiBtc2dfaWQgLT5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBjdXJyZW50X2lkIDo9IFNvbWUgbXNnX2lkIGluXG4gICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIChmdW4gc3QgYiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgfCBcIkZpbGVDYXRhbG9nXCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IG91dCA9IEtmaWxlcy5jYXRhbG9nIGNhdGFsb2cgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQiAoQ2F0YWxvZywgbXNnX2lkLCBSZXN1bHRfdXRpbC5vayBvdXQpKVxuICAgICAgICAgICAgICAgICAgICAgfCBcIkZpbGVDcmVhdGVcIiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgcG9zaXRpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2ludCBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBpZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBvdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEtmaWxlcy5maWxlX2NyZWF0ZSB+cG9zaXRpb24gfmlkIH5jb250ZW50IGNhdGFsb2dcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQiAoTm90aGluZywgbXNnX2lkLCBsaWZ0X2Fuc3dlciBvdXQpKVxuICAgICAgICAgICAgICAgICAgICAgfCBcIkZpbGVHZXRcIiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBvdXQgPSBLZmlsZXMuZmlsZV9nZXQgfmlkIGNhdGFsb2cgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQiAoSW5mbywgbXNnX2lkLCBsaWZ0X2Fuc3dlciBvdXQpKVxuICAgICAgICAgICAgICAgICAgICAgfCBcIkZpbGVNb3ZlXCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBvdXQgPSBLZmlsZXMuZmlsZV9tb3ZlIH5wb3NpdGlvbiB+aWQgY2F0YWxvZyBpblxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChCIChOb3RoaW5nLCBtc2dfaWQsIGxpZnRfYW5zd2VyIG91dCkpXG4gICAgICAgICAgICAgICAgICAgICB8IFwiRmlsZVVwZGF0ZVwiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBpZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBvdXQgPSBLZmlsZXMuZmlsZV9wYXRjaCB+aWQgY29udGVudCBjYXRhbG9nIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKE5vdGhpbmcsIG1zZ19pZCwgbGlmdF9hbnN3ZXIgb3V0KSlcbiAgICAgICAgICAgICAgICAgICAgIHwgXCJGaWxlRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3V0ID0gS2ZpbGVzLmZpbGVfZGVsZXRlIH5pZCBjYXRhbG9nIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKE5vdGhpbmcsIG1zZ19pZCwgbGlmdF9hbnN3ZXIgb3V0KSlcbiAgICAgICAgICAgICAgICAgICAgIHwgXCJQcm9qZWN0UGFyc2VcIiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBMd3QuYmluZCAoS2ZpbGVzLnBhcnNlIHlpZWxkIGNhdGFsb2cpIChmdW4gb3V0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChCIChBc3QsIG1zZ19pZCwgb3V0KSkpXG4gICAgICAgICAgICAgICAgICAgICB8IFwiUHJvamVjdE92ZXJ3cml0ZVwiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBpZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIEFzdC5yZWFkX3BhcnNpbmdfY29tcGlsIHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gS2ZpbGVzLm92ZXJ3cml0ZSBpZCBjb250ZW50IGNhdGFsb2cgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQiAoTm90aGluZywgbXNnX2lkLCBSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgICAgICAgIChCXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBOb3RoaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5FcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSBcIkludmFsaWQgZGlyZWN0aXZlOiBcIiBeIHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSApKSkpXG4gICAgICAgICAgICAgICAgICBzdCBiKSlcbiAgICAgICAgICAgdGV4dClcbiAgICAgICAgKGZ1biBhbnN3ZXIgLT5cbiAgICAgICAgICBsZXQgKCkgPSBjdXJyZW50X2lkIDo9IE5vbmUgaW5cbiAgICAgICAgICBtYXRjaCBhbnN3ZXIgd2l0aFxuICAgICAgICAgIHwgQiAoQ2F0YWxvZywgbXNnX2lkLCB4KSAtPiByZXBseSBwb3N0IHdyaXRlX2NhdGFsb2dfaXRlbXMgbXNnX2lkIHhcbiAgICAgICAgICB8IEIgKE5vdGhpbmcsIG1zZ19pZCwgeCkgLT5cbiAgICAgICAgICAgIHJlcGx5IHBvc3QgWW9qc29uLkJhc2ljLndyaXRlX251bGwgbXNnX2lkIHhcbiAgICAgICAgICB8IEIgKEFzdCwgbXNnX2lkLCB4KSAtPiByZXBseSBwb3N0IEFzdC53cml0ZV9wYXJzaW5nX2NvbXBpbCBtc2dfaWQgeFxuICAgICAgICAgIHwgQiAoSW5mbywgbXNnX2lkLCB4KSAtPlxuICAgICAgICAgICAgcmVwbHkgcG9zdFxuICAgICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmdcbiAgICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2ludClcbiAgICAgICAgICAgICAgbXNnX2lkIHgpXG4gICAgd2l0aCBlIC0+XG4gICAgICAobWF0Y2ggIWN1cnJlbnRfaWQgd2l0aFxuICAgICAgfCBTb21lIG1zZ19pZCAtPlxuICAgICAgICByZXBseSBwb3N0IFlvanNvbi5CYXNpYy53cml0ZV9udWxsIG1zZ19pZFxuICAgICAgICAgIChSZXN1bHRfdXRpbC5lcnJvclxuICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLkVycm9yO1xuICAgICAgICAgICAgICAgICByYW5nZSA9IE5vbmU7XG4gICAgICAgICAgICAgICAgIHRleHQgPSBcIkV4Y2VwdGlvbiByYWlzZWQ6IFwiIF4gUHJpbnRleGMudG9fc3RyaW5nIGU7XG4gICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgIF0pXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIGUgd2l0aFxuICAgICAgICB8IFlvanNvbi5Kc29uX2Vycm9yIHggLT5cbiAgICAgICAgICBwb3N0XG4gICAgICAgICAgICAoWW9qc29uLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgKGBTdHJpbmdcbiAgICAgICAgICAgICAgICAgKHggXiBcIlxcbk1lc3NhZ2UgZm9ybWF0IG11c3QgYmUgWyBpZCwgW1xcXCJSZXF1ZXN0XFxcIiwgLi4uIF0gXVwiKSkpXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgIHBvc3RcbiAgICAgICAgICAgIChZb2pzb24udG9fc3RyaW5nXG4gICAgICAgICAgICAgICAoYFN0cmluZ1xuICAgICAgICAgICAgICAgICAoXCJ1bmV4cGVjdGVkIGV4Y2VwdGlvbjogXCIgXiBQcmludGV4Yy50b19zdHJpbmcgZVxuICAgICAgICAgICAgICAgIF4gXCJcXG5NZXNzYWdlIGZvcm1hdCBtdXN0IGJlIFsgaWQsIFtcXFwiUmVxdWVzdFxcXCIsIC4uLiBdIF1cIikpKSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEFzdFxuXG5sZXQgcmVjIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluIChhbGcsIHBvcykgPVxuICBtYXRjaCBhbGcgd2l0aFxuICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIGFzdCAtPlxuICAgIChtYXRjaCBkb21haW4gd2l0aFxuICAgIHwgU29tZSAob3JpZ2luLCBjb250YWN0X21hcCwgZG9tYWluKSAtPlxuICAgICAgbGV0IGRvbWFpbicsIGNjcyA9XG4gICAgICAgIFBhdHRlcm5fY29tcGlsZXIuY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19taXh0dXJlXG4gICAgICAgICAgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gP29yaWdpbiBhc3RcbiAgICAgIGluXG4gICAgICBsZXQgb3V0X2NjcyA9IExpc3QubWFwIChmdW4gKHgsIF8pIC0+IEFycmF5Lm1hcCBmc3QgeCkgY2NzIGluXG4gICAgICBTb21lIChvcmlnaW4sIGNvbnRhY3RfbWFwLCBkb21haW4nKSwgKEFsZ19leHByLktBUFBBX0lOU1RBTkNFIG91dF9jY3MsIHBvcylcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgIChcIlRoZW9yaXRpY2FsbHkgcHVyZSBhbGdfZXhwciBoYXMgYSBtaXh0dXJlXCIsIHBvcykpKVxuICB8IEFsZ19leHByLkFMR19WQVIgaSAtPiBkb21haW4sIChBbGdfZXhwci5BTEdfVkFSIGksIHBvcylcbiAgfCBBbGdfZXhwci5UT0tFTl9JRCBpIC0+IGRvbWFpbiwgKEFsZ19leHByLlRPS0VOX0lEIGksIHBvcylcbiAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1Agb3AgLT4gZG9tYWluLCAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIG9wLCBwb3MpXG4gIHwgQWxnX2V4cHIuQ09OU1QgbiAtPiBkb21haW4sIChBbGdfZXhwci5DT05TVCBuLCBwb3MpXG4gIHwgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpIC0+XG4gICAgbGV0IGRvbWFpbicsIGEnID0gY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gYSBpblxuICAgIGxldCBkb21haW4nJywgYicgPSBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbicgYiBpblxuICAgIGRvbWFpbicnLCAoQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEnLCBiJyksIHBvcylcbiAgfCBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSAtPlxuICAgIGxldCBkb21haW4nLCBhJyA9IGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluIGEgaW5cbiAgICBkb21haW4nLCAoQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYScpLCBwb3MpXG4gIHwgQWxnX2V4cHIuSUYgKGNvbmQsIHllcywgbm8pIC0+XG4gICAgbGV0IGRvbWFpbicsIGNvbmQnID1cbiAgICAgIGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbiBjb25kXG4gICAgaW5cbiAgICBsZXQgZG9tYWluJycsIHllcycgPSBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbicgeWVzIGluXG4gICAgbGV0IGRvbWFpbicnJywgbm8nID0gY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4nJyBubyBpblxuICAgIGRvbWFpbicnJywgKEFsZ19leHByLklGIChjb25kJywgeWVzJywgbm8nKSwgcG9zKVxuICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKFwiQ2Fubm90IGRlYWwgd2l0aCBkZXJpdmF0aXZlIGluIGV4cHJlc3Npb25zXCIsIHBvcykpXG5cbmFuZCBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gPSBmdW5jdGlvblxuICB8IEFsZ19leHByLlRSVUUsIHBvcyAtPiBkb21haW4sIChBbGdfZXhwci5UUlVFLCBwb3MpXG4gIHwgQWxnX2V4cHIuRkFMU0UsIHBvcyAtPiBkb21haW4sIChBbGdfZXhwci5GQUxTRSwgcG9zKVxuICB8IEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgYSwgYiksIHBvcyAtPlxuICAgIGxldCBkb21haW4nLCBhJyA9IGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbiBhIGluXG4gICAgbGV0IGRvbWFpbicnLCBiJyA9IGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbicgYiBpblxuICAgIGRvbWFpbicnLCAoQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCBhJywgYicpLCBwb3MpXG4gIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIGEpLCBwb3MgLT5cbiAgICBsZXQgZG9tYWluJywgYScgPSBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gYSBpblxuICAgIGRvbWFpbicsIChBbGdfZXhwci5VTl9CT09MX09QIChvcCwgYScpLCBwb3MpXG4gIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIGEsIGIpLCBwb3MgLT5cbiAgICBsZXQgZG9tYWluJywgYScgPSBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbiBhIGluXG4gICAgbGV0IGRvbWFpbicnLCBiJyA9IGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluJyBiIGluXG4gICAgZG9tYWluJycsIChBbGdfZXhwci5DT01QQVJFX09QIChvcCwgYScsIGInKSwgcG9zKVxuXG5sZXQgY29tcGlsZV9wdXJlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIChhbGcsIHBvcykgPVxuICBzbmQgQEAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBOb25lIChhbGcsIHBvcylcblxubGV0IGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gP29yaWdpbiBjb250YWN0X21hcCBkb21haW5cbiAgICAoYWxnLCBwb3MpID1cbiAgbWF0Y2hcbiAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uXG4gICAgICAoU29tZSAob3JpZ2luLCBjb250YWN0X21hcCwgZG9tYWluKSlcbiAgICAgIChhbGcsIHBvcylcbiAgd2l0aFxuICB8IFNvbWUgKF8sIF8sIGRvbWFpbiksIGFsZyAtPiBkb21haW4sIGFsZ1xuICB8IE5vbmUsIF8gLT4gZmFpbHdpdGggXCJkb21haW4gaGFzIGJlZW4gbG9zdCBpbiBFeHByLmNvbXBpbGVfYWxnXCJcblxubGV0IGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uID9vcmlnaW4gY29udGFjdF9tYXAgZG9tYWluXG4gICAgKGFsZywgcG9zKSA9XG4gIG1hdGNoXG4gICAgY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb25cbiAgICAgIChTb21lIChvcmlnaW4sIGNvbnRhY3RfbWFwLCBkb21haW4pKVxuICAgICAgKGFsZywgcG9zKVxuICB3aXRoXG4gIHwgU29tZSAoXywgXywgZG9tYWluKSwgYWxnIC0+IGRvbWFpbiwgYWxnXG4gIHwgTm9uZSwgXyAtPiBmYWlsd2l0aCBcImRvbWFpbiBoYXMgYmVlbiBsb3N0IGluIEV4cHIuY29tcGlsZV9hbGdcIlxuXG5sZXQgdG9rZW5pZnkgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gbCA9XG4gIExpc3QuZm9sZF9yaWdodFxuICAgIChmdW4gKGFsZ19leHByLCBpZCkgKGRvbWFpbiwgb3V0KSAtPlxuICAgICAgbGV0IGRvbWFpbicsIGFsZyA9XG4gICAgICAgIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGFsZ19leHByXG4gICAgICBpblxuICAgICAgZG9tYWluJywgKGFsZywgaWQpIDo6IG91dClcbiAgICBsIChkb21haW4sIFtdKVxuXG4oKiB0cmFuc2Zvcm0gYW4gTEthcHBhIHJ1bGUgaW50byBhIFByaW1pdGl2ZXMgcnVsZSAqKVxubGV0IHJ1bGVzX29mX2FzdCB+ZGVidWdfbW9kZSB+d2FybmluZyA/ZGVwc19tYWNoaW5lcnkgfmNvbXBpbGVfbW9kZV9vblxuICAgIGNvbnRhY3RfbWFwIGRvbWFpbiB+c3ludGF4X3JlZiAocnVsZSwgXykgPVxuICBsZXQgZG9tYWluJywgZGVsdGFfdG9rcyA9XG4gICAgdG9rZW5pZnkgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW5cbiAgICAgIHJ1bGUuTEthcHBhLnJfZGVsdGFfdG9rZW5zXG4gIGluXG4gICgqIGxldCBvbmVfc2lkZSBzeW50YXhfcmVmIGxhYmVsIChkb21haW4sZGVwc19tYWNoaW5lcnksdW5hcnlfY2NzLGFjYylcbiAgICAgICByYXRlIHVuYXJ5X3JhdGUgbGhzIHJocyBybSBhZGQgPSopXG4gIGxldCBvcmlnaW4sIGRlcHMgPVxuICAgIG1hdGNoIGRlcHNfbWFjaGluZXJ5IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSwgTm9uZVxuICAgIHwgU29tZSAobywgZCkgLT4gU29tZSBvLCBTb21lIGRcbiAgaW5cbiAgbGV0IHVuYXJ5X2luZm9zID1cbiAgICBsZXQgY3JwID1cbiAgICAgIGNvbXBpbGVfcHVyZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBydWxlLkxLYXBwYS5yX3JhdGVcbiAgICBpblxuICAgIG1hdGNoIHJ1bGUuTEthcHBhLnJfdW5fcmF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IGZ1biBfIC0+IGNycCwgTm9uZVxuICAgIHwgU29tZSAoKChfLCBwb3MpIGFzIHJhdGUpLCBkaXN0KSAtPlxuICAgICAgbGV0IGRpc3QnID1cbiAgICAgICAgbWF0Y2ggZGlzdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBkIC0+XG4gICAgICAgICAgbGV0IGQnLCBfID0gY29tcGlsZV9wdXJlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGQgaW5cbiAgICAgICAgICBTb21lIGQnXG4gICAgICBpblxuICAgICAgbGV0IHVucmF0ZSA9IGNvbXBpbGVfcHVyZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiByYXRlIGluXG4gICAgICBmdW4gY2NzIC0+XG4gICAgICAgIChtYXRjaCBBcnJheS5sZW5ndGggY2NzIHdpdGhcbiAgICAgICAgfCAwIHwgMSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3RleHQgZlxuICAgICAgICAgICAgICAgICAgXCJVc2VsZXNzIG1vbGVjdWxhciBhbWJpZ3VpdHksIHRoZSBydWxlcyBpcyBhbHdheXMgY29uc2lkZXJlZCBcXFxuICAgICAgICAgICAgICAgICAgIGFzIHVuYXJ5LlwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdW5yYXRlLCBOb25lXG4gICAgICAgIHwgMiAtPiBjcnAsIFNvbWUgKHVucmF0ZSwgZGlzdCcpXG4gICAgICAgIHwgbiAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKCBcIlVuYXJ5IHJ1bGUgZG9lcyBub3QgZGVhbCB3aXRoIFwiIF4gc3RyaW5nX29mX2ludCBuXG4gICAgICAgICAgICAgICAgIF4gXCIgY29ubmVjdGVkIGNvbXBvbmVudHMuXCIsXG4gICAgICAgICAgICAgICAgIHBvcyApKSlcbiAgaW5cbiAgbGV0IGJ1aWxkIGRlcHMgKG9yaWdpbiwgY2NzLCBzeW50YXgsIChuZWcsIHBvcykpID1cbiAgICBsZXQgY2NzJyA9IEFycmF5Lm1hcCBmc3QgY2NzIGluXG4gICAgbGV0IHJhdGUsIHVucmF0ZSA9IHVuYXJ5X2luZm9zIGNjcycgaW5cbiAgICAoIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgb3JpZ2luID1cbiAgICAgICAgICAgIG1hdGNoIG9yaWdpbiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgbyAtPiBvXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJ1Z2x5IEV2YWwucnVsZV9vZl9hc3RcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHgnID1cbiAgICAgICAgICAgIG1hdGNoIHVucmF0ZSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4geFxuICAgICAgICAgICAgfCBTb21lICh1ciwgXykgLT4gQWxnX2V4cHIuYWRkX2RlcCB4IG9yaWdpbiB1clxuICAgICAgICAgIGluXG4gICAgICAgICAgQWxnX2V4cHIuYWRkX2RlcCB4JyBvcmlnaW4gcmF0ZSlcbiAgICAgICAgZGVwcyxcbiAgICAgIHtcbiAgICAgICAgUHJpbWl0aXZlcy51bmFyeV9yYXRlID0gdW5yYXRlO1xuICAgICAgICBQcmltaXRpdmVzLnJhdGU7XG4gICAgICAgIFByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgPSBjY3MnO1xuICAgICAgICBQcmltaXRpdmVzLnJlbW92ZWQgPSBuZWc7XG4gICAgICAgIFByaW1pdGl2ZXMuaW5zZXJ0ZWQgPSBwb3M7XG4gICAgICAgIFByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zID0gZGVsdGFfdG9rcztcbiAgICAgICAgUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZSA9IHN5bnRheF9yZWY7XG4gICAgICAgIFByaW1pdGl2ZXMuaW5zdGFudGlhdGlvbnMgPSBzeW50YXg7XG4gICAgICB9IClcbiAgaW5cbiAgbGV0IHJ1bGVfbWl4dHVyZXMsIChkb21haW4nLCBvcmlnaW4nKSA9XG4gICAgUGF0dGVybl9jb21waWxlci5jb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW1iaWd1b3VzX3J1bGUgfmRlYnVnX21vZGVcbiAgICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluJyA/b3JpZ2luIHJ1bGUuTEthcHBhLnJfbWl4XG4gICAgICBydWxlLkxLYXBwYS5yX2NyZWF0ZWRcbiAgaW5cbiAgbGV0IGRlcHNfYWxncycsIHJ1bGVzX2wgPVxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biByIChkZXBzX2FsZ3MsIG91dCkgLT5cbiAgICAgICAgbGV0IGRlcHNfYWxncycsIHInJyA9IGJ1aWxkIGRlcHNfYWxncyByIGluXG4gICAgICAgIGRlcHNfYWxncycsIHInJyA6OiBvdXQpXG4gICAgICBydWxlX21peHR1cmVzIChkZXBzLCBbXSlcbiAgaW5cbiAgKCBkb21haW4nLFxuICAgIChtYXRjaCBvcmlnaW4nIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBvIC0+XG4gICAgICBTb21lXG4gICAgICAgICggbyxcbiAgICAgICAgICBtYXRjaCBkZXBzX2FsZ3MnIHdpdGhcbiAgICAgICAgICB8IFNvbWUgZCAtPiBkXG4gICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwidWdseSBFdmFsLnJ1bGVfb2ZfYXN0XCIgKSksXG4gICAgcnVsZXNfbCApXG5cbmxldCBvYnNfb2ZfcmVzdWx0IH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGFsZ19kZXBzIHJlcyA9XG4gIGxldCBkb21haW4sIG91dCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGRvbWFpbiwgY29udCkgYWxnX2V4cHIgLT5cbiAgICAgICAgbGV0IGRvbWFpbicsIGFsZ19wb3MgPVxuICAgICAgICAgIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGFsZ19leHByXG4gICAgICAgIGluXG4gICAgICAgIGRvbWFpbicsIGFsZ19wb3MgOjogY29udClcbiAgICAgIChkb21haW4sIFtdKSByZXMub2JzZXJ2YWJsZXNcbiAgaW5cbiAgaWYgTGlzdC5leGlzdHMgKEFsZ19leHByLmhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZTpmYWxzZSBhbGdfZGVwcykgb3V0IHRoZW5cbiAgICBkb21haW4sIExpc3QucmV2IG91dFxuICBlbHNlXG4gICAgKCBkb21haW4sXG4gICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRJTUVfVkFSKVxuICAgICAgOjogTGlzdC5yZXYgb3V0IClcblxubGV0IGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBleCA9XG4gIExpc3QuZm9sZF9yaWdodFxuICAgIChmdW4gZWwgKGRvbWFpbiwgb3V0KSAtPlxuICAgICAgbWF0Y2ggZWwgd2l0aFxuICAgICAgfCBQcmltaXRpdmVzLlN0cl9wZXhwciBzIC0+IGRvbWFpbiwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgcyA6OiBvdXRcbiAgICAgIHwgUHJpbWl0aXZlcy5BbGdfcGV4cHIgYXN0X2FsZyAtPlxuICAgICAgICBsZXQgZG9tYWluJywgYWxnID1cbiAgICAgICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhc3RfYWxnXG4gICAgICAgIGluXG4gICAgICAgIGRvbWFpbicsIFByaW1pdGl2ZXMuQWxnX3BleHByIGFsZyA6OiBvdXQpXG4gICAgZXggKGRvbWFpbiwgW10pXG5cbmxldCBjZmxvd3Nfb2ZfbGFiZWwgfmRlYnVnX21vZGUgb3JpZ2luIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIG9uXG4gICAgYWxncyBydWxlcyAobGFiZWwsIHBvcykgcmV2X2VmZmVjdHMgPVxuICBsZXQgYWRkcyB0ZXN0cyBsIHggPVxuICAgIGlmIG9uIHRoZW5cbiAgICAgIFByaW1pdGl2ZXMuQ0ZMT1cgKFNvbWUgbGFiZWwsIHgsIHRlc3RzKSA6OiBsXG4gICAgZWxzZVxuICAgICAgUHJpbWl0aXZlcy5DRkxPV09GRiAoU29tZSBsYWJlbCwgeCkgOjogbFxuICBpblxuICBsZXQgbWl4ID1cbiAgICB0cnlcbiAgICAgIGxldCBfLCAocnVsZSwgXykgPVxuICAgICAgICBMaXN0LmZpbmRcbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgTm9uZSwgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBTb21lIChsLCBfKSwgXyAtPiBsID0gbGFiZWwpXG4gICAgICAgICAgcnVsZXNcbiAgICAgIGluXG4gICAgICBMS2FwcGEudG9fbWFpbnRhaW5lZCBydWxlLkxLYXBwYS5yX21peFxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAodHJ5XG4gICAgICAgICBsZXQgXywgKHZhciwgXykgPSBMaXN0LmZpbmQgKGZ1biAoKGwsIF8pLCBfKSAtPiBsID0gbGFiZWwpIGFsZ3MgaW5cbiAgICAgICAgIG1hdGNoIHZhciB3aXRoXG4gICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIG1peCAtPiBtaXhcbiAgICAgICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfIHwgQWxnX2V4cHIuVU5fQUxHX09QIF9cbiAgICAgICAgIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfXG4gICAgICAgICB8IEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5JRiBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfXG4gICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyAtPlxuICAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgKCBcIkxhYmVsICdcIiBeIGxhYmVsXG4gICAgICAgICAgICAgICAgXiBcIicgZG9lcyBub3QgcmVmZXIgdG8gYSBub24gYW1iaWd1b3VzIEthcHBhIGV4cHJlc3Npb25cIixcbiAgICAgICAgICAgICAgICBwb3MgKSkpXG4gIGluXG4gIGxldCBkb21haW4nLCBjY3MgPVxuICAgIFBhdHRlcm5fY29tcGlsZXIuY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19taXh0dXJlIH5kZWJ1Z19tb2RlXG4gICAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiB+b3JpZ2luIG1peFxuICBpblxuICAoIGRvbWFpbicsXG4gICAgTGlzdC5mb2xkX2xlZnQgKGZ1biB4ICh5LCB0KSAtPiBhZGRzIHQgeCAoQXJyYXkubWFwIGZzdCB5KSkgcmV2X2VmZmVjdHMgY2NzXG4gIClcblxubGV0IGVmZmVjdHNfb2ZfbW9kaWYgfmRlYnVnX21vZGUgfndhcm5pbmcgYXN0X2FsZ3MgYXN0X3J1bGVzIG9yaWdpblxuICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgKGRvbWFpbiwgcmV2X2VmZmVjdHMpID0gZnVuY3Rpb25cbiAgfCBBUFBMWSAoYWxnX2V4cHIsICgoXywgcG9zKSBhcyBwYWNrKSkgLT5cbiAgICBsZXQgZG9tYWluJywgYWxnX3BvcyA9XG4gICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhbGdfZXhwclxuICAgIGluXG4gICAgbGV0IGRvbWFpbicnLCBfLCBlbGVtX3J1bGVzID1cbiAgICAgIHJ1bGVzX29mX2FzdCB+ZGVidWdfbW9kZSB+d2FybmluZyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbidcbiAgICAgICAgfnN5bnRheF9yZWY6MCBwYWNrXG4gICAgaW5cbiAgICBsZXQgZWxlbV9ydWxlID1cbiAgICAgIG1hdGNoIGVsZW1fcnVsZXMgd2l0aFxuICAgICAgfCBbIHIgXSAtPiByXG4gICAgICB8IF8gLT5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgIChcIkFtYmlndW91cyBydWxlIGluIG1vZGlmaXRpb24gaXMgaW1wb3NzaWJsZVwiLCBwb3MpKVxuICAgIGluXG4gICAgZG9tYWluJycsIFByaW1pdGl2ZXMuSVRFUl9SVUxFIChhbGdfcG9zLCBlbGVtX3J1bGUpIDo6IHJldl9lZmZlY3RzXG4gIHwgVVBEQVRFICgoaSwgXyksIGFsZ19leHByKSAtPlxuICAgIGxldCBkb21haW4nLCBhbGdfcG9zID1cbiAgICAgIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGFsZ19leHByXG4gICAgaW5cbiAgICBkb21haW4nLCBQcmltaXRpdmVzLlVQREFURSAoaSwgYWxnX3BvcykgOjogcmV2X2VmZmVjdHNcbiAgfCBTTkFQU0hPVCAocmF3LCBwZXhwcikgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgKCp3aGVuIHNwZWNpYWxpemluZyBzbmFwc2hvdHMgdG8gcGFydGljdWxhciBtaXh0dXJlcywgYWRkIHZhcmlhYmxlcyBiZWxvdyopXG4gICAgZG9tYWluJywgUHJpbWl0aXZlcy5TTkFQU0hPVCAocmF3LCBwZXhwcicpIDo6IHJldl9lZmZlY3RzXG4gIHwgU1RPUCBwZXhwciAtPlxuICAgIGxldCBkb21haW4nLCBwZXhwcicgPVxuICAgICAgY29tcGlsZV9wcmludF9leHByIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIHBleHByXG4gICAgaW5cbiAgICBkb21haW4nLCBQcmltaXRpdmVzLlNUT1AgcGV4cHInIDo6IHJldl9lZmZlY3RzXG4gIHwgQ0ZMT1dMQUJFTCAob24sIGxhYikgLT5cbiAgICBjZmxvd3Nfb2ZfbGFiZWwgfmRlYnVnX21vZGUgb3JpZ2luIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIG9uXG4gICAgICBhc3RfYWxncyBhc3RfcnVsZXMgbGFiIHJldl9lZmZlY3RzXG4gIHwgQ0ZMT1dNSVggKG9uLCAoYXN0LCBfKSkgLT5cbiAgICBsZXQgYWRkcyB0ZXN0cyBsIHggPVxuICAgICAgaWYgb24gdGhlblxuICAgICAgICBQcmltaXRpdmVzLkNGTE9XIChOb25lLCB4LCB0ZXN0cykgOjogbFxuICAgICAgZWxzZVxuICAgICAgICBQcmltaXRpdmVzLkNGTE9XT0ZGIChOb25lLCB4KSA6OiBsXG4gICAgaW5cbiAgICBsZXQgZG9tYWluJywgY2NzID1cbiAgICAgIFBhdHRlcm5fY29tcGlsZXIuY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19taXh0dXJlIH5kZWJ1Z19tb2RlXG4gICAgICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIH5vcmlnaW4gYXN0XG4gICAgaW5cbiAgICAoIGRvbWFpbicsXG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHggKHksIHQpIC0+IGFkZHMgdCB4IChBcnJheS5tYXAgZnN0IHkpKVxuICAgICAgICByZXZfZWZmZWN0cyBjY3MgKVxuICB8IERJTiAocmVsLCBwZXhwcikgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgZG9tYWluJywgUHJpbWl0aXZlcy5ESU4gKHJlbCwgcGV4cHInKSA6OiByZXZfZWZmZWN0c1xuICB8IERJTk9GRiBwZXhwciAtPlxuICAgIGxldCBkb21haW4nLCBwZXhwcicgPVxuICAgICAgY29tcGlsZV9wcmludF9leHByIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIHBleHByXG4gICAgaW5cbiAgICBkb21haW4nLCBQcmltaXRpdmVzLkRJTk9GRiBwZXhwcicgOjogcmV2X2VmZmVjdHNcbiAgfCBBc3QuUFJJTlQgKHBleHByLCBwcmludCkgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgbGV0IGRvbWFpbicnLCBwcmludCcgPVxuICAgICAgY29tcGlsZV9wcmludF9leHByIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluJyBwcmludFxuICAgIGluXG4gICAgZG9tYWluJycsIFByaW1pdGl2ZXMuUFJJTlQgKHBleHByJywgcHJpbnQnKSA6OiByZXZfZWZmZWN0c1xuICB8IFBMT1RFTlRSWSAtPiBkb21haW4sIFByaW1pdGl2ZXMuUExPVEVOVFJZIDo6IHJldl9lZmZlY3RzXG4gIHwgU1BFQ0lFU19PRiAob24sIHBleHByLCAoYXN0LCBwb3MpKSAtPlxuICAgIGxldCBkb21haW4nLCBwZXhwcicgPVxuICAgICAgY29tcGlsZV9wcmludF9leHByIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIHBleHByXG4gICAgaW5cbiAgICBsZXQgYWRkcyB0ZXN0cyBsIHggPVxuICAgICAgaWYgb24gdGhlblxuICAgICAgICBQcmltaXRpdmVzLlNQRUNJRVMgKHBleHByJywgeCwgdGVzdHMpIDo6IGxcbiAgICAgIGVsc2VcbiAgICAgICAgUHJpbWl0aXZlcy5TUEVDSUVTX09GRiBwZXhwcicgOjogbFxuICAgIGluXG4gICAgbGV0IGRvbWFpbicnLCBjY3MgPVxuICAgICAgUGF0dGVybl9jb21waWxlci5jb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW1iaWd1b3VzX21peHR1cmUgfmRlYnVnX21vZGVcbiAgICAgICAgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4nIH5vcmlnaW4gYXN0XG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKGFyciwgXykgLT5cbiAgICAgICAgICBpZiBBcnJheS5sZW5ndGggYXJyID4gMSB0aGVuXG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAoIFwiU1BFQ0lFU19PRiBjYW4gb25seSBiZSBhcHBsaWVkIHRvIG9uZSBjb25uZWN0ZWQgY29tcG9uZW50XCIsXG4gICAgICAgICAgICAgICAgICAgcG9zICkpKVxuICAgICAgICBjY3NcbiAgICBpblxuICAgICggZG9tYWluJycsXG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHggKHksIHQpIC0+IGFkZHMgdCB4IChBcnJheS5tYXAgZnN0IHkpKVxuICAgICAgICByZXZfZWZmZWN0cyBjY3MgKVxuXG5sZXQgZWZmZWN0c19vZl9tb2RpZnMgfmRlYnVnX21vZGUgfndhcm5pbmcgYXN0X2FsZ3MgYXN0X3J1bGVzIG9yaWdpblxuICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGwgPVxuICBsZXQgZG9tYWluJywgcmV2X2VmZmVjdHMgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZWZmZWN0c19vZl9tb2RpZiB+ZGVidWdfbW9kZSB+d2FybmluZyBhc3RfYWxncyBhc3RfcnVsZXMgb3JpZ2luXG4gICAgICAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwKVxuICAgICAgKGRvbWFpbiwgW10pIGxcbiAgaW5cbiAgZG9tYWluJywgTGlzdC5yZXYgcmV2X2VmZmVjdHNcblxubGV0IGNvbXBpbGVfbW9kaWZpY2F0aW9uc19ub190cmFjayA9XG4gIGVmZmVjdHNfb2ZfbW9kaWZzIFtdIFtdIChPcGVyYXRvci5NT0RJRiAoLTEpKVxuXG4oKiBpbnRlcnZlbnRpb25zIHdpdGhvdXQgcHJlIGFuZCBwb3N0LCBidXQgd2l0aCBhbGFybSBhcmUgbm90IGFwcGxpZWRcbiAgIGF0IGluaXRpYWxpc2F0aW9uICopXG5sZXQgcGVydF9ub3RfaW5pdCBvdmVyd3JpdGVfdDAgeCB5IHogPVxuICBtYXRjaCB4LCB5LCB6IHdpdGhcbiAgfCBfLCBTb21lIHAsIF8gLT4gcFxuICB8IFNvbWUgXywgTm9uZSwgTm9uZSAtPlxuICAgIGxldCB0X3ZhciA9XG4gICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRJTUVfVkFSKVxuICAgIGluXG4gICAgbGV0IHQwID0gT3B0aW9uX3V0aWwuZm9sZCAoZnVuIF8geCAtPiBOYnIuRiB4KSBOYnIuemVybyBvdmVyd3JpdGVfdDAgaW5cbiAgICBsZXQgaW5pdF90ID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIHQwKSBpblxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5DT01QQVJFX09QIChPcGVyYXRvci5HUkVBVEVSLCB0X3ZhciwgaW5pdF90KSlcbiAgfCBOb25lLCBOb25lLCBOb25lIHwgU29tZSBfLCBOb25lLCBTb21lIF8gfCBOb25lLCBOb25lLCBTb21lIF8gLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSBBbGdfZXhwci5UUlVFXG5cbmxldCBwZXJ0X29mX3Jlc3VsdCB+ZGVidWdfbW9kZSB+d2FybmluZyA/b3ZlcndyaXRlX3QwIGFzdF9hbGdzIGFzdF9ydWxlc1xuICAgIGFsZ19kZXBzIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIHJlcyA9XG4gIGxldCBkb21haW4sIG91dF9hbGdfZGVwcywgXywgbHBlcnQsIHRyYWNraW5nX2VuYWJsZWQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChkb21haW4sIGFsZ19kZXBzLCBwX2lkLCBscGVydCwgdHJhY2tpbmdfZW5hYmxlZClcbiAgICAgICAgICAgKChhbGFybSwgcHJlX2V4cHIsIG1vZGlmX2V4cHJfbGlzdCwgb3B0X3Bvc3QpLCBwb3MpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggYWxhcm0gd2l0aFxuICAgICAgICAgIHwgU29tZSBuIC0+XG4gICAgICAgICAgICBpZiBOYnIuY29tcGFyZSBuIE5ici56ZXJvIDw9IDAgdGhlblxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiYWxhcm0gaGFzIHRvIGJlIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiAwLjBcIiwgcG9zKSlcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG9yaWdpbiA9IE9wZXJhdG9yLk1PRElGIHBfaWQgaW5cbiAgICAgICAgbGV0IHByZV9leHByJyA9IHBlcnRfbm90X2luaXQgb3ZlcndyaXRlX3QwIGFsYXJtIHByZV9leHByIG9wdF9wb3N0IGluXG4gICAgICAgIGxldCBkb21haW4nLCBwcmUgPVxuICAgICAgICAgIGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIH5vcmlnaW4gY29udGFjdF9tYXAgZG9tYWluXG4gICAgICAgICAgICBwcmVfZXhwcidcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFsZ19kZXBzJyA9XG4gICAgICAgICAgbWF0Y2ggYWxhcm0gd2l0aFxuICAgICAgICAgIHwgU29tZSBfIC0+IGFsZ19kZXBzXG4gICAgICAgICAgfCBOb25lIC0+IEFsZ19leHByLmFkZF9kZXBfYm9vbCBhbGdfZGVwcyBvcmlnaW4gcHJlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBkb21haW4sIGVmZmVjdHMgPVxuICAgICAgICAgIGVmZmVjdHNfb2ZfbW9kaWZzIH5kZWJ1Z19tb2RlIH53YXJuaW5nIGFzdF9hbGdzIGFzdF9ydWxlcyBvcmlnaW5cbiAgICAgICAgICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluJyBtb2RpZl9leHByX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGRvbWFpbiwgb3B0ID1cbiAgICAgICAgICBtYXRjaCBvcHRfcG9zdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGRvbWFpbiwgTm9uZVxuICAgICAgICAgIHwgU29tZSBwb3N0X2V4cHIgLT5cbiAgICAgICAgICAgIGxldCBkb21haW4nLCAocG9zdCwgcG9zdF9wb3MpID1cbiAgICAgICAgICAgICAgY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluXG4gICAgICAgICAgICAgICAgcG9zdF9leHByXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZG9tYWluJywgU29tZSAocG9zdCwgcG9zdF9wb3MpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBoYXNfdHJhY2tpbmcgPVxuICAgICAgICAgIHRyYWNraW5nX2VuYWJsZWRcbiAgICAgICAgICB8fCBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5DRkxPVyBfIHwgUHJpbWl0aXZlcy5TUEVDSUVTIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuQ0ZMT1dPRkYgXyB8IFByaW1pdGl2ZXMuUFJJTlQgX1xuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuVVBEQVRFIF8gfCBQcmltaXRpdmVzLlNOQVBTSE9UIF9cbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLkRJTiBfIHwgUHJpbWl0aXZlcy5ESU5PRkYgXyB8IFByaW1pdGl2ZXMuUExPVEVOVFJZXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5TVE9QIF8gfCBQcmltaXRpdmVzLklURVJfUlVMRSBfXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5TUEVDSUVTX09GRiBfIC0+XG4gICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICBlZmZlY3RzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBuZWVkc19iYWNrdHJhY2sgPVxuICAgICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlVQREFURSBfIHwgUHJpbWl0aXZlcy5TVE9QIF8gfCBQcmltaXRpdmVzLklURVJfUlVMRSBfXG4gICAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5DRkxPVyBfIHwgUHJpbWl0aXZlcy5TUEVDSUVTIF9cbiAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLkNGTE9XT0ZGIF8gfCBQcmltaXRpdmVzLlBSSU5UIF9cbiAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlNOQVBTSE9UIF8gfCBQcmltaXRpdmVzLkRJTiBfIHwgUHJpbWl0aXZlcy5ESU5PRkYgX1xuICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuUExPVEVOVFJZIHwgUHJpbWl0aXZlcy5TUEVDSUVTX09GRiBfIC0+XG4gICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICBlZmZlY3RzXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZXBlYXQgPVxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IExvYy5hbm5vdF93aXRoX2R1bW15IEFsZ19leHByLkZBTFNFXG4gICAgICAgICAgfCBTb21lIHAgLT4gcFxuICAgICAgICBpblxuICAgICAgICBsZXQgcGVydCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgUHJpbWl0aXZlcy5hbGFybTtcbiAgICAgICAgICAgIFByaW1pdGl2ZXMucHJlY29uZGl0aW9uID0gcHJlO1xuICAgICAgICAgICAgUHJpbWl0aXZlcy5lZmZlY3QgPSBlZmZlY3RzO1xuICAgICAgICAgICAgUHJpbWl0aXZlcy5yZXBlYXQ7XG4gICAgICAgICAgICBQcmltaXRpdmVzLm5lZWRzX2JhY2t0cmFjaztcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGRvbWFpbiwgYWxnX2RlcHMnLCBzdWNjIHBfaWQsIHBlcnQgOjogbHBlcnQsIGhhc190cmFja2luZylcbiAgICAgIChkb21haW4sIGFsZ19kZXBzLCAwLCBbXSwgZmFsc2UpXG4gICAgICByZXMucGVydHVyYmF0aW9uc1xuICBpblxuICBkb21haW4sIG91dF9hbGdfZGVwcywgTGlzdC5yZXYgbHBlcnQsIHRyYWNraW5nX2VuYWJsZWRcblxubGV0IGNvbXBpbGVfaW5pdHMgfmRlYnVnX21vZGUgfndhcm5pbmcgP3Jlc2NhbGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBlbnZcbiAgICBpbml0cyA9XG4gIGxldCBpbml0X2wsIF8gPVxuICAgIExpc3RfdXRpbC5mb2xkX3JpZ2h0X21hcFxuICAgICAgKGZ1biAoYWxnLCBpbml0X3QpIHByZWVudiAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIEFsZ19leHByLmhhc19taXggfnZhcl9kZWNsczooTW9kZWwuZ2V0X2FsZyBlbnYpIChmc3QgYWxnKSB0aGVuXG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAoIFwiSW5pdGlhbCBxdWFudGl0aWVzIGNhbm5vdCBkZXBlbmQgb24gYSBudW1iZXIgb2Ygb2NjdXJlbmNlXCIsXG4gICAgICAgICAgICAgICAgICAgc25kIGFsZyApKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWxnID1cbiAgICAgICAgICBtYXRjaCByZXNjYWxlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYWxnXG4gICAgICAgICAgfCBTb21lIHIgLT4gQWxnX2V4cHIubXVsdCBhbGcgKEFsZ19leHByLmZsb2F0IHIpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGluaXRfdCB3aXRoXG4gICAgICAgIHwgSU5JVF9NSVggKHJhd19taXgsIG1peF9wb3MpIC0+XG4gICAgICAgICAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGVudiBpblxuICAgICAgICAgIGxldCBwcmVlbnYnLCBhbGcnID1cbiAgICAgICAgICAgIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgcHJlZW52IGFsZ1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZha2VfcnVsZSA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIExLYXBwYS5yX21peCA9IFtdO1xuICAgICAgICAgICAgICBMS2FwcGEucl9jcmVhdGVkID0gcmF3X21peDtcbiAgICAgICAgICAgICAgTEthcHBhLnJfZGVsdGFfdG9rZW5zID0gW107XG4gICAgICAgICAgICAgIExLYXBwYS5yX3JhdGUgPSBBbGdfZXhwci5jb25zdCBOYnIuemVybztcbiAgICAgICAgICAgICAgTEthcHBhLnJfdW5fcmF0ZSA9IE5vbmU7XG4gICAgICAgICAgICAgIExLYXBwYS5yX2VkaXRfc3R5bGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHByZWVudicnLCBzdGF0ZScgPVxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgcnVsZXNfb2ZfYXN0IH5kZWJ1Z19tb2RlIH53YXJuaW5nIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXBcbiAgICAgICAgICAgICAgICBwcmVlbnYnIH5zeW50YXhfcmVmOjAgKGZha2VfcnVsZSwgbWl4X3BvcylcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgZG9tYWluJycsIF8sIFsgY29tcGlsZWRfcnVsZSBdIC0+XG4gICAgICAgICAgICAgIChmc3QgYWxnJywgY29tcGlsZWRfcnVsZSksIGRvbWFpbicnXG4gICAgICAgICAgICB8IF8sIF8sIF8gLT5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICggRm9ybWF0LmFzcHJpbnRmIFwiaW5pdGlhbCBtaXh0dXJlICVhIGlzIHBhcnRpYWxseSBkZWZpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKFJhd19taXh0dXJlLnByaW50IH5ub0NvdW50ZXJzOmRlYnVnX21vZGUgfmNyZWF0ZWQ6dHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB+aW5pdGlhbF9jb21tYTpmYWxzZSB+c2lncylcbiAgICAgICAgICAgICAgICAgICAgICAgcmF3X21peCxcbiAgICAgICAgICAgICAgICAgICAgIG1peF9wb3MgKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIHByZWVudicnLCBzdGF0ZSdcbiAgICAgICAgfCBJTklUX1RPSyB0a19sIC0+XG4gICAgICAgICAgbGV0IHJfZGVsdGFfdG9rZW5zID1cbiAgICAgICAgICAgIExpc3QubWFwIChmdW4gKHRrX2lkLCBfcG9zX3RrKSAtPiBhbGcsIHRrX2lkKSB0a19sXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmFrZV9ydWxlID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgTEthcHBhLnJfbWl4ID0gW107XG4gICAgICAgICAgICAgIExLYXBwYS5yX2NyZWF0ZWQgPSBbXTtcbiAgICAgICAgICAgICAgTEthcHBhLnJfZGVsdGFfdG9rZW5zO1xuICAgICAgICAgICAgICBMS2FwcGEucl9yYXRlID0gQWxnX2V4cHIuY29uc3QgTmJyLnplcm87XG4gICAgICAgICAgICAgIExLYXBwYS5yX3VuX3JhdGUgPSBOb25lO1xuICAgICAgICAgICAgICBMS2FwcGEucl9lZGl0X3N0eWxlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICBydWxlc19vZl9hc3QgfmRlYnVnX21vZGUgfndhcm5pbmcgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcFxuICAgICAgICAgICAgICAgcHJlZW52IH5zeW50YXhfcmVmOjBcbiAgICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBmYWtlX3J1bGUpXG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGRvbWFpbicnLCBfLCBbIGNvbXBpbGVkX3J1bGUgXSAtPlxuICAgICAgICAgICAgKEFsZ19leHByLkNPTlNUIE5ici5vbmUsIGNvbXBpbGVkX3J1bGUpLCBkb21haW4nJ1xuICAgICAgICAgIHwgXywgXywgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgaW5pdHNcbiAgICAgIChQYXR0ZXJuLlByZUVudi5lbXB0eSAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpKVxuICBpblxuICBpbml0X2xcblxubGV0IGNvbXBpbGVfYWxnX3ZhcnMgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gdmFycyA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdF9tYXBpXG4gICAgKGZ1biBpIGRvbWFpbiAobGJsX3BvcywgYXN0KSAtPlxuICAgICAgbGV0IGRvbWFpbicsIGFsZyA9XG4gICAgICAgIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gfm9yaWdpbjooT3BlcmF0b3IuQUxHIGkpXG4gICAgICAgICAgY29udGFjdF9tYXAgZG9tYWluIGFzdFxuICAgICAgaW5cbiAgICAgIGRvbWFpbicsIChsYmxfcG9zLCBhbGcpKVxuICAgIGRvbWFpbiAoQXJyYXkub2ZfbGlzdCB2YXJzKVxuXG5sZXQgY29tcGlsZV9ydWxlcyB+ZGVidWdfbW9kZSB+d2FybmluZyBhbGdfZGVwcyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwXG4gICAgZG9tYWluIHJ1bGVzID1cbiAgbWF0Y2hcbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZG9tYWluLCBzeW50YXhfcmVmLCBkZXBzX21hY2hpbmVyeSwgYWNjKSAoXywgcnVsZSkgLT5cbiAgICAgICAgbGV0IGRvbWFpbicsIG9yaWdpbicsIGNyID1cbiAgICAgICAgICBydWxlc19vZl9hc3QgfmRlYnVnX21vZGUgfndhcm5pbmcgP2RlcHNfbWFjaGluZXJ5IH5jb21waWxlX21vZGVfb25cbiAgICAgICAgICAgIGNvbnRhY3RfbWFwIGRvbWFpbiB+c3ludGF4X3JlZiBydWxlXG4gICAgICAgIGluXG4gICAgICAgIGRvbWFpbicsIHN1Y2Mgc3ludGF4X3JlZiwgb3JpZ2luJywgTGlzdC5hcHBlbmQgY3IgYWNjKVxuICAgICAgKGRvbWFpbiwgMSwgU29tZSAoT3BlcmF0b3IuUlVMRSAwLCBhbGdfZGVwcyksIFtdKVxuICAgICAgcnVsZXNcbiAgd2l0aFxuICB8IGZkb21haW4sIF8sIFNvbWUgKF8sIGZhbGdfZGVwcyksIGZydWxlcyAtPlxuICAgIGZkb21haW4sIGZhbGdfZGVwcywgTGlzdC5yZXYgZnJ1bGVzXG4gIHwgXywgXywgTm9uZSwgXyAtPiBmYWlsd2l0aCBcIlRoZSBvcmlnaW4gb2YgRXZhbC5jb21waWxlX3J1bGVzIGhhcyBiZWVuIGxvc3RcIlxuXG4oKmxldCB0cmFuc2xhdGVfY29udGFjdF9tYXAgc2lncyBrYXNhX2NvbnRhY3RfbWFwID1cbiAgICBsZXQgd2RsID0gTG9jLmFubm90X3dpdGhfZHVtbXkgaW5cbiAgICBsZXQgc29sID0gQXJyYXkuaW5pdFxuICAgICAgICAoU2lnbmF0dXJlLnNpemUgc2lncylcbiAgICAgICAgKGZ1biBpIC0+IEFycmF5Lm1ha2UgKFNpZ25hdHVyZS5hcml0eSBzaWdzIGkpIChbXSxbXSkpIGluXG4gICAgbGV0ICgpID1cbiAgICAgIE1vZHMuU3RyaW5nTWFwLml0ZXJcbiAgICAgICAgKGZ1biBhZ2VudF9uYW1lIHNpdGVzIC0+XG4gICAgICAgICAgIGxldCBpZF9hID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCAod2RsIGFnZW50X25hbWUpIHNpZ3MgaW5cbiAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuaXRlclxuICAgICAgICAgICAgIChmdW4gc2l0ZV9uYW1lIChzdGF0ZXMsbGlua3MpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGlkX3MgPVxuICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlLm51bV9vZl9zaXRlXG4gICAgICAgICAgICAgICAgICAgIH5hZ2VudF9uYW1lICh3ZGwgc2l0ZV9uYW1lKSAoU2lnbmF0dXJlLmdldCBzaWdzIGlkX2EpIGluXG4gICAgICAgICAgICAgICAgc29sLihpZF9hKS4oaWRfcykgPC1cbiAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgKGZ1biBzdGF0ZSAtPiBTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgaWRfcyAod2RsIHN0YXRlKSAoU2lnbmF0dXJlLmdldCBzaWdzIGlkX2EpKVxuICAgICAgICAgICAgICAgICAgICAgc3RhdGVzLFxuICAgICAgICAgICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAoZnVuIChhZ2VudF9uYW1lLGIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWRfYSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgKHdkbCBhZ2VudF9uYW1lKSBzaWdzIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWRfYiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZS5udW1fb2Zfc2l0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5hZ2VudF9uYW1lICh3ZGwgYikgKFNpZ25hdHVyZS5nZXQgc2lncyBpZF9hKSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgKGlkX2EsaWRfYikpXG4gICAgICAgICAgICAgICAgICAgICBsaW5rcykpIHNpdGVzKSBrYXNhX2NvbnRhY3RfbWFwIGluXG4gICAgc29sXG5cbiAgbGV0IGluaXRfa2FzYSBjYWxsZWRfZnJvbSBzaWdzIHJlc3VsdCA9XG4gICAgbGV0IHByZV9rYXNhX3N0YXRlID0gRXhwb3J0X3RvX0thU2ltLmluaXQgfmNvbXBpbDpyZXN1bHQgfmNhbGxlZF9mcm9tICgpIGluXG4gICAgbGV0IGthc2Ffc3RhdGUsY29udGFjdF9tYXAgPSBFeHBvcnRfdG9fS2FTaW0uZ2V0X2NvbnRhY3RfbWFwIHByZV9rYXNhX3N0YXRlIGluXG4gICAgbGV0ICgpID0gRXhwb3J0X3RvX0thU2ltLmR1bXBfZXJyb3JzX2xpZ2h0IGthc2Ffc3RhdGUgaW5cbiAgICB0cmFuc2xhdGVfY29udGFjdF9tYXAgc2lncyBjb250YWN0X21hcCxcbiAgICBFeHBvcnRfdG9fS2FTaW0uZmx1c2hfZXJyb3JzIGthc2Ffc3RhdGVcbiopXG5sZXQgY29tcGlsZSB+b3V0cHV0cyB+cGF1c2UgfnJldHVybiB+c2hhcmluZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uXG4gICAgP292ZXJ3cml0ZV9pbml0ID9vdmVyd3JpdGVfdDAgP3Jlc2NhbGVfaW5pdCBzaWdzX25kIHRrX25kIGNvbnRhY3RfbWFwIHJlc3VsdFxuICAgID1cbiAgbGV0IHdhcm5pbmcgfnBvcyBtc2cgPSBvdXRwdXRzIChEYXRhLldhcm5pbmcgKFNvbWUgcG9zLCBtc2cpKSBpblxuICBvdXRwdXRzIChEYXRhLkxvZyBcIisgQnVpbGRpbmcgaW5pdGlhbCBzaW11bGF0aW9uIGNvbmRpdGlvbnMuLi5cIik7XG4gIGxldCBwcmVlbnYgPSBQYXR0ZXJuLlByZUVudi5lbXB0eSBzaWdzX25kIGluXG4gIG91dHB1dHMgKERhdGEuTG9nIFwiXFx0IC12YXJpYWJsZSBkZWNsYXJhdGlvbnNcIik7XG4gIGxldCBwcmVlbnYnLCBhbGdfYSA9XG4gICAgY29tcGlsZV9hbGdfdmFycyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIHByZWVudlxuICAgICAgcmVzdWx0LkFzdC52YXJpYWJsZXNcbiAgaW5cbiAgbGV0IGFsZ19uZCA9IE5hbWVkRGVjbHMuY3JlYXRlIGFsZ19hIGluXG4gIGxldCBhbGdfZGVwcyA9IEFsZ19leHByLnNldHVwX2FsZ192YXJzX3Jldl9kZXAgdGtfbmQgYWxnX2EgaW5cblxuICBwYXVzZSBAQCBmdW4gKCkgLT5cbiAgb3V0cHV0cyAoRGF0YS5Mb2cgXCJcXHQgLXJ1bGVzXCIpO1xuICBsZXQgcHJlZW52JywgYWxnX2RlcHMnLCBjb21waWxlZF9ydWxlcyA9XG4gICAgY29tcGlsZV9ydWxlcyB+ZGVidWdfbW9kZSB+d2FybmluZyBhbGdfZGVwcyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwXG4gICAgICBwcmVlbnYnIHJlc3VsdC5Bc3QucnVsZXNcbiAgaW5cbiAgbGV0IHJ1bGVfbmQgPSBBcnJheS5vZl9saXN0IGNvbXBpbGVkX3J1bGVzIGluXG5cbiAgcGF1c2UgQEAgZnVuICgpIC0+XG4gIG91dHB1dHMgKERhdGEuTG9nIFwiXFx0IC1pbnRlcnZlbnRpb25zXCIpO1xuICBsZXQgcHJlZW52LCBhbGdfZGVwcycnLCBwZXJ0LCBoYXNfdHJhY2tpbmcgPVxuICAgIHBlcnRfb2ZfcmVzdWx0IH5kZWJ1Z19tb2RlIH53YXJuaW5nID9vdmVyd3JpdGVfdDAgcmVzdWx0LnZhcmlhYmxlc1xuICAgICAgcmVzdWx0LnJ1bGVzIGFsZ19kZXBzJyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIHByZWVudicgcmVzdWx0XG4gIGluXG5cbiAgcGF1c2UgQEAgZnVuICgpIC0+XG4gIG91dHB1dHMgKERhdGEuTG9nIFwiXFx0IC1vYnNlcnZhYmxlc1wiKTtcbiAgbGV0IHByZWVudiwgb2JzID1cbiAgICBvYnNfb2ZfcmVzdWx0IH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgcHJlZW52IGFsZ19kZXBzXG4gICAgICByZXN1bHRcbiAgaW5cbiAgb3V0cHV0cyAoRGF0YS5Mb2cgXCJcXHQgLXVwZGF0ZV9kb21haW4gY29uc3RydWN0aW9uXCIpO1xuICBwYXVzZSBAQCBmdW4gKCkgLT5cbiAgbGV0IGRvbWFpbiwgZG9tX3N0YXRzID1cbiAgICBQYXR0ZXJuLmZpbmFsaXplIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHByZWVudiBjb250YWN0X21hcFxuICBpblxuICBvdXRwdXRzXG4gICAgKERhdGEuTG9nXG4gICAgICAgKFwiXFx0IFwiXG4gICAgICAgXiBzdHJpbmdfb2ZfaW50IGRvbV9zdGF0cy5QYXR0ZXJuLlByZUVudi5zdGF0X25vZGVzXG4gICAgICAgXiBcIiAoc3ViKW9ic2VydmFibGVzIFwiXG4gICAgICAgXiBzdHJpbmdfb2ZfaW50IGRvbV9zdGF0cy5QYXR0ZXJuLlByZUVudi5zdGF0X25hdl9zdGVwc1xuICAgICAgIF4gXCIgbmF2aWdhdGlvbiBzdGVwc1wiKSk7XG5cbiAgbGV0IGVudiA9XG4gICAgTW9kZWwuaW5pdCB+ZmlsZW5hbWVzOnJlc3VsdC5maWxlbmFtZXMgZG9tYWluIHRrX25kIGFsZ19uZCBhbGdfZGVwcycnXG4gICAgICAoQXJyYXkub2ZfbGlzdCByZXN1bHQucnVsZXMsIHJ1bGVfbmQpXG4gICAgICAoQXJyYXkub2ZfbGlzdCBvYnMpIChBcnJheS5vZl9saXN0IHBlcnQpIGNvbnRhY3RfbWFwXG4gIGluXG5cbiAgb3V0cHV0cyAoRGF0YS5Mb2cgXCJcXHQgLWluaXRpYWwgY29uZGl0aW9uc1wiKTtcbiAgcGF1c2UgQEAgZnVuICgpIC0+XG4gIGxldCBpbml0X2wgPVxuICAgIGNvbXBpbGVfaW5pdHMgfmRlYnVnX21vZGUgfndhcm5pbmcgP3Jlc2NhbGU6cmVzY2FsZV9pbml0IH5jb21waWxlX21vZGVfb25cbiAgICAgIGNvbnRhY3RfbWFwIGVudlxuICAgICAgKE9wdGlvbl91dGlsLnVuc29tZSByZXN1bHQuQXN0LmluaXQgb3ZlcndyaXRlX2luaXQpXG4gIGluXG4gIHJldHVybiAoZW52LCBoYXNfdHJhY2tpbmcsIGluaXRfbClcblxubGV0IGJ1aWxkX2luaXRpYWxfc3RhdGUgfmJpbmQgfnJldHVybiB+ZGVidWdfbW9kZSB+b3V0cHV0cyBjb3VudGVyIGVudlxuICAgIH53aXRoX3RyYWNlIH53aXRoX2RlbHRhX2FjdGl2aXRpZXMgcmFuZG9tX3N0YXRlIGluaXRfbCA9XG4gIGxldCBncmFwaDAgPVxuICAgIFJ1bGVfaW50ZXJwcmV0ZXIuZW1wdHkgfm91dHB1dHMgfndpdGhfdHJhY2UgcmFuZG9tX3N0YXRlIGVudiBjb3VudGVyXG4gIGluXG4gIGxldCBzdGF0ZTAgPSBTdGF0ZV9pbnRlcnByZXRlci5lbXB0eSB+d2l0aF9kZWx0YV9hY3Rpdml0aWVzIGNvdW50ZXIgZW52IGluXG4gIFN0YXRlX2ludGVycHJldGVyLmluaXRpYWxpemUgfmJpbmQgfnJldHVybiB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlclxuICAgIGdyYXBoMCBzdGF0ZTAgaW5pdF9sXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgZG9faW50ZXJhY3RpdmVfZGlyZWN0aXZlcyB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+c2hhcmluZyB+c3ludGF4X3ZlcnNpb25cbiAgICBjb250YWN0X21hcCBlbnYgY291bnRlciBncmFwaCBzdGF0ZSBlID1cbiAgbGV0IHdhcm5pbmcgfnBvcyBtc2cgPSBvdXRwdXRzIChEYXRhLldhcm5pbmcgKFNvbWUgcG9zLCBtc2cpKSBpblxuICBsZXQgY2NfcHJlZW52ID0gUGF0dGVybi5QcmVFbnYub2ZfZW52IChNb2RlbC5kb21haW4gZW52KSBpblxuICBsZXQgY29udGFjdF9tYXAnID0gQXJyYXkubWFwIEFycmF5LmNvcHkgY29udGFjdF9tYXAgaW5cbiAgbGV0IGUnLCBfID1cbiAgICBMaXN0X3V0aWwuZm9sZF9yaWdodF9tYXBcbiAgICAgIChMS2FwcGFfY29tcGlsZXIubW9kaWZfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uXG4gICAgICAgICAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpIChNb2RlbC50b2tlbnNfZmluZGVyIGVudilcbiAgICAgICAgIChNb2RlbC5hbGdzX2ZpbmRlciBlbnYpIGNvbnRhY3RfbWFwJylcbiAgICAgIGUgW11cbiAgaW5cbiAgbGV0ICgpID1cbiAgICBpZlxuICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAoZnVuIG4gLT5cbiAgICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpIChmdW4gcyBiIHggLT4gYiB8fCB4ICE9IGNvbnRhY3RfbWFwLihuKS4ocykpKVxuICAgICAgICBmYWxzZSBjb250YWN0X21hcCdcbiAgICB0aGVuXG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJDcmVhdGluZyBuZXcgbGluayB0eXBlIGlzIGZvcmJpZGRlblwiKSlcbiAgaW5cbiAgbGV0IGNjX3ByZWVudicsIGUnJyA9XG4gICAgRXZhbC5jb21waWxlX21vZGlmaWNhdGlvbnNfbm9fdHJhY2sgfmRlYnVnX21vZGUgfndhcm5pbmdcbiAgICAgIH5jb21waWxlX21vZGVfb246ZmFsc2UgY29udGFjdF9tYXAgY2NfcHJlZW52IGUnXG4gIGluXG4gIGxldCBlbnYnLCBncmFwaCcgPVxuICAgIGlmIGNjX3ByZWVudiA9PSBjY19wcmVlbnYnIHRoZW5cbiAgICAgIGVudiwgZ3JhcGhcbiAgICBlbHNlIChcbiAgICAgIGxldCBmZW52LCBfID1cbiAgICAgICAgUGF0dGVybi5maW5hbGl6ZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBjY19wcmVlbnYnIGNvbnRhY3RfbWFwXG4gICAgICBpblxuICAgICAgKCBNb2RlbC5uZXdfZG9tYWluIGZlbnYgZW52LFxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChSdWxlX2ludGVycHJldGVyLmluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gfmRlYnVnX21vZGUgZmVudilcbiAgICAgICAgICBncmFwaFxuICAgICAgICAgIChQcmltaXRpdmVzLmV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfbW9kaWZpY2F0aW9ucyBlJycpIClcbiAgICApXG4gIGluXG4gIGxldCBvc3RvcCwgb2dyYXBoLCBvc3RhdGUsIF8gPVxuICAgIFN0YXRlX2ludGVycHJldGVyLmRvX21vZGlmaWNhdGlvbnMgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52JyBjb3VudGVyIGdyYXBoJ1xuICAgICAgc3RhdGUgZScnXG4gIGluXG4gIGUnJywgKGVudicsIChvc3RvcCwgb2dyYXBoLCBvc3RhdGUpKVxuXG5sZXQgZ2V0X3BhdXNlX2NyaXRlcmlhIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5zaGFyaW5nIH5zeW50YXhfdmVyc2lvbiBjb250YWN0X21hcFxuICAgIGVudiBncmFwaCBiID1cbiAgbGV0IHdhcm5pbmcgfnBvcyBtc2cgPSBvdXRwdXRzIChEYXRhLldhcm5pbmcgKFNvbWUgcG9zLCBtc2cpKSBpblxuICBsZXQgY2NfcHJlZW52ID0gUGF0dGVybi5QcmVFbnYub2ZfZW52IChNb2RlbC5kb21haW4gZW52KSBpblxuICBsZXQgYicgPVxuICAgIExLYXBwYV9jb21waWxlci5ib29sX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSAoTW9kZWwudG9rZW5zX2ZpbmRlciBlbnYpIChNb2RlbC5hbGdzX2ZpbmRlciBlbnYpIGJcbiAgaW5cbiAgbGV0IGNjX3ByZWVudicsICgoYicnLCBwb3NfYicnKSBhcyBicG9zJycpID1cbiAgICBFdmFsLmNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uOmZhbHNlIGNvbnRhY3RfbWFwIGNjX3ByZWVudlxuICAgICAgYidcbiAgaW5cbiAgbGV0IGVudicsIGdyYXBoJyA9XG4gICAgaWYgY2NfcHJlZW52ID09IGNjX3ByZWVudicgdGhlblxuICAgICAgZW52LCBncmFwaFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGZlbnYsIF8gPVxuICAgICAgICBQYXR0ZXJuLmZpbmFsaXplIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIGNjX3ByZWVudicgY29udGFjdF9tYXBcbiAgICAgIGluXG4gICAgICAoIE1vZGVsLm5ld19kb21haW4gZmVudiBlbnYsXG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKFJ1bGVfaW50ZXJwcmV0ZXIuaW5jb3Jwb3JhdGVfZXh0cmFfcGF0dGVybiB+ZGVidWdfbW9kZSBmZW52KVxuICAgICAgICAgIGdyYXBoXG4gICAgICAgICAgKFByaW1pdGl2ZXMuZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19ib29sIGJwb3MnJykgKVxuICAgIClcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBpZiBBbGdfZXhwci5pc19lcXVhbGl0eV90ZXN0X3RpbWUgKE1vZGVsLmFsbF9kZXBlbmRlbmNpZXMgZW52KSBiJycgdGhlblxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiW1RdIGNhbiBvbmx5IGJlIHVzZWQgaW4gaW5lcXVhbGl0aWVzXCIsIHBvc19iJycpKVxuICBpblxuICBlbnYnLCBncmFwaCcsIGInJ1xuXG5sZXQgZmluZF9hbGxfZW1iZWRkaW5ncyB+ZGVidWdfbW9kZSBlbnYgdHIgPVxuICBsZXQgZG9tYWluID0gTW9kZWwuZG9tYWluIGVudiBpblxuICBsZXQgZHVtbXlfaW5zdGFuY2VzID0gSW5zdGFuY2VzLmVtcHR5IGVudiBpblxuICBsZXQgZ3JhcGggPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoUnVsZV9pbnRlcnByZXRlci5hcHBseV9jb25jcmV0ZV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvblxuICAgICAgICAgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZTpOb25lIGR1bW15X2luc3RhbmNlcylcbiAgICAgIChFZGdlcy5lbXB0eSB+d2l0aF9jb25uZWN0ZWRfY29tcG9uZW50czpmYWxzZSlcbiAgICAgIHRyXG4gIGluXG4gIGxldCBvdXQsIF8gPVxuICAgIFJ1bGVfaW50ZXJwcmV0ZXIub2JzX2Zyb21fdHJhbnNmb3JtYXRpb25zIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCB0clxuICBpblxuICBMaXN0Lm1hcFxuICAgIChmdW4gKHAsIChyb290LCBfKSkgLT5cbiAgICAgIHAsIE1hdGNoaW5nLnJlY29uc3RydWN0X3JlbmFtaW5nIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBwIHJvb3QpXG4gICAgb3V0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKioqKioqKioqKioqKiopXG4oKiBKU29uIGxhYmVscyopXG4oKioqKioqKioqKioqKiopXG5cbmxldCBhZ2VudCA9IFwiYWdlbnQgbmFtZVwiXG5sZXQgY29udGFjdG1hcCA9IFwiY29udGFjdCBtYXBcIlxubGV0IGFjY3VyYWN5X3N0cmluZyA9IFwiYWNjdXJhY3lcIlxubGV0IGRlYWRfcnVsZXMgPSBcImRlYWQgcnVsZXNcIlxubGV0IGRlYWRfYWdlbnRzID0gXCJkZWFkIGFnZW50c1wiXG5sZXQgbWFwID0gXCJtYXBcIlxubGV0IGludGVyZmFjZSA9IFwiaW50ZXJmYWNlXCJcbmxldCBzaXRlID0gXCJzaXRlIG5hbWVcIlxubGV0IHN0YXRlc2xpc3QgPSBcInN0YXRlcyBsaXN0XCJcbmxldCBzaXRlbmFtZSA9IFwic2l0ZV9uYW1lXCJcbmxldCBzaXRldHlwZSA9IFwic2l0ZV90eXBlXCJcbmxldCBzaXRlbGlua3MgPSBcInBvcnRfbGlua3NcIlxubGV0IHNpdGVzdGF0ZXMgPSBcInBvcnRfc3RhdGVzXCJcbmxldCBzaXRlbm9kZW5hbWUgPSBcIm5vZGVfdHlwZVwiXG5sZXQgc2l0ZW5vZGVpZCA9IFwibm9kZV9pZFwiXG5sZXQgc2l0ZW5vZGVzaXRlcyA9IFwibm9kZV9zaXRlc1wiXG5sZXQgaHlwID0gXCJzaXRlIGdyYXBoXCJcbmxldCByZWZpbmVtZW50ID0gXCJzaXRlIGdyYXBoIGxpc3RcIlxubGV0IGRvbWFpbl9uYW1lID0gXCJkb21haW4gbmFtZVwiXG5sZXQgcmVmaW5lbWVudHNfbGlzdCA9IFwicmVmaW5lbWVudHMgbGlzdFwiXG5sZXQgcmVmaW5lbWVudF9sZW1tYXMgPSBcInJlZmluZW1lbnQgbGVtbWFzXCJcbmxldCBydWxlX2lkID0gXCJpZFwiXG5sZXQgYWdlbnRfaWQgPSBcImlkXCJcbmxldCBsYWJlbCA9IFwibGFiZWxcIlxubGV0IGFzdCA9IFwiYXN0XCJcbmxldCBwb3NpdGlvbiA9IFwibG9jYXRpb25cIlxubGV0IHBvc2l0aW9uX2xpc3QgPSBcImxvY2F0aW9uIGxpc3RcIlxubGV0IHZhcmlhYmxlID0gXCJ2YXJpYWJsZVwiXG5sZXQgcnVsZSA9IFwicnVsZVwiXG5sZXQgZGlyZWN0ID0gXCJkaXJlY3RcIlxubGV0IHNpZGVfZWZmZWN0ID0gXCJzaWRlIGVmZmVjdFwiXG5sZXQgc291cmNlID0gXCJzb3VyY2VcIlxubGV0IHRhcmdldF9tYXAgPSBcInRhcmdldCBtYXBcIlxubGV0IHRhcmdldCA9IFwidGFyZ2V0XCJcbmxldCBsb2NhdGlvbl9wYWlyX2xpc3QgPSBcImxvY2F0aW9uIHBhaXIgbGlzdFwiXG5sZXQgcmhzID0gXCJSSFNcIlxubGV0IGxocyA9IFwiTEhTXCJcbmxldCBpbmZsdWVuY2VtYXAgPSBcImluZmx1ZW5jZSBtYXBcIlxubGV0IG5vZGVzb2ZpbmZsdWVuY2VtYXAgPSBcIm5vZGVzIG9mIGluZmx1ZW5jZSBtYXBcIlxubGV0IHdha2V1cCA9IFwid2FrZS11cCBtYXBcIlxubGV0IGluaGliaXRpb24gPSBcImluaGliaXRpb24gbWFwXCJcbmxldCBub2RlcyA9IFwibm9kZXNcIlxubGV0IHRvdGFsX3N0cmluZyA9IFwidG90YWxcIlxubGV0IGZ3ZF9zdHJpbmcgPSBcImZ3ZFwiXG5sZXQgYndkX3N0cmluZyA9IFwiYndkXCJcbmxldCBvcmlnaW4gPSBcIm9yaWdpblwiXG5sZXQgZGlyZWN0aW9uID0gXCJkaXJlY3Rpb25cIlxubGV0IHJ1bGVfaGlkZGVuID0gXCJoaWRkZW5cIlxubGV0IHNjYyA9IFwic2NjXCJcbmxldCBhY2N1cmFjeV9jbSA9IFwiYWNjdXJhY3lfY21cIlxubGV0IGFjY3VyYWN5X3NjYyA9IFwiYWNjdXJhY3lfc2NjXCJcbmxldCBjb250YWN0bWFwc2NjID0gXCJjb250YWN0IG1hcCBzY2NcIlxubGV0IGNvdW50ZXIgPSBcImNvdW50ZXJcIlxubGV0IGluZiA9IFwibWluXCJcbmxldCBzdXAgPSBcIm1heFwiXG5sZXQga2V5ID0gXCJrZXlcIlxubGV0IGxvY2FsaXR5ID0gXCJsb2NhbGl0eVwiXG5cbigqKioqKioqKioqKioqKioqKioqKVxuKCogQWNjdXJhY3kgbGV2ZWxzICopXG4oKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBhY2N1cmFjeV9sZXZlbCA9IExvdyB8IE1lZGl1bSB8IEhpZ2ggfCBGdWxsXG5cbmxldCBhY2N1cmFjeV9sZXZlbHMgPSBbIExvdzsgTWVkaXVtOyBIaWdoOyBGdWxsIF1cbmxldCBjb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbHMgPSBbIExvdzsgSGlnaCBdXG5sZXQgaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbHMgPSBbIExvdzsgTWVkaXVtOyBIaWdoIF1cbmxldCByZWR1Y3Rpb25fYWNjdXJhY3lfbGV2ZWxzID0gWyBMb3c7IEhpZ2ggXVxuXG5sZXQgYWNjdXJhY3lfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBMb3cgLT4gXCJsb3dcIlxuICB8IE1lZGl1bSAtPiBcIm1lZGl1bVwiXG4gIHwgSGlnaCAtPiBcImhpZ2hcIlxuICB8IEZ1bGwgLT4gXCJmdWxsXCJcblxubGV0IGFjY3VyYWN5X3RvX2pzb24geCA9IEpzb25VdGlsLm9mX3N0cmluZyAoYWNjdXJhY3lfdG9fc3RyaW5nIHgpXG5cbmxldCBhY2N1cmFjeV9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwibG93XCIgLT4gU29tZSBMb3dcbiAgfCBcIm1lZGl1bVwiIC0+IFNvbWUgTWVkaXVtXG4gIHwgXCJoaWdoXCIgLT4gU29tZSBIaWdoXG4gIHwgXCJmdWxsXCIgLT4gU29tZSBGdWxsXG4gIHwgXyAtPiBOb25lXG5cbmxldCBhY2N1cmFjeV9vZl9qc29uIGpzb24gPVxuICBtYXRjaCBhY2N1cmFjeV9vZl9zdHJpbmcgKEpzb25VdGlsLnRvX3N0cmluZyBqc29uKSB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJhY2N1cmFjeSBsZXZlbFwiLCBqc29uKSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFjY3VyYWN5U2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBhY2N1cmFjeV9sZXZlbFxuXG4gIGxldCBjb21wYXJlIGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBMb3csIExvdyAtPiAwXG4gICAgfCBMb3csIF8gLT4gLTFcbiAgICB8IF8sIExvdyAtPiAxXG4gICAgfCBNZWRpdW0sIE1lZGl1bSAtPiAwXG4gICAgfCBNZWRpdW0sIF8gLT4gLTFcbiAgICB8IF8sIE1lZGl1bSAtPiAxXG4gICAgfCBIaWdoLCBIaWdoIC0+IDBcbiAgICB8IEhpZ2gsIF8gLT4gLTFcbiAgICB8IF8sIEhpZ2ggLT4gMVxuICAgIHwgRnVsbCwgRnVsbCAtPiAwXG5cbiAgbGV0IHByaW50IGYgPSBmdW5jdGlvblxuICAgIHwgRnVsbCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiRnVsbFwiXG4gICAgfCBIaWdoIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJIaWdoXCJcbiAgICB8IE1lZGl1bSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiTWVkaXVtXCJcbiAgICB8IExvdyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiTG93XCJcbmVuZClcblxubW9kdWxlIEFjY3VyYWN5TWFwID0gQWNjdXJhY3lTZXRNYXAuTWFwXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKioqKioqKioqKioqKiopXG4oKiBDb250YWN0IG1hcCAqKVxuKCoqKioqKioqKioqKioqKilcblxudHlwZSBjb250YWN0X21hcCA9IFVzZXJfZ3JhcGguY29ubmVjdGVkX2NvbXBvbmVudFxuXG5sZXQgc2l0ZV90eXBlX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IFVzZXJfZ3JhcGguQ291bnRlciBpIC0+IGBMaXN0IFsgYFN0cmluZyBcImNvdW50ZXJcIjsgYEludCBpIF1cbiAgfCBVc2VyX2dyYXBoLlBvcnQgcCAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJwb3J0XCI7XG4gICAgICAgIGBBc3NvY1xuICAgICAgICAgIFtcbiAgICAgICAgICAgICggc2l0ZWxpbmtzLFxuICAgICAgICAgICAgICBtYXRjaCBwLlVzZXJfZ3JhcGgucG9ydF9saW5rcyB3aXRoXG4gICAgICAgICAgICAgIHwgVXNlcl9ncmFwaC5MSU5LUyBsIC0+XG4gICAgICAgICAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgKGZ1biAoKHhsLCB4ciksIHkpIC0+XG4gICAgICAgICAgICAgICAgICAgIGBMaXN0IFsgYExpc3QgWyBgSW50IHhsOyBgSW50IHhyIF07IGBJbnQgeSBdKVxuICAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgICB8IFVzZXJfZ3JhcGguV0hBVEVWRVIgLT4gYE51bGxcbiAgICAgICAgICAgICAgfCBVc2VyX2dyYXBoLlNPTUUgLT4gYEJvb2wgdHJ1ZVxuICAgICAgICAgICAgICB8IFVzZXJfZ3JhcGguVFlQRSAoc2ksIHR5KSAtPlxuICAgICAgICAgICAgICAgIGBBc3NvYyBbIFwic2l0ZV9uYW1lXCIsIGBTdHJpbmcgc2k7IFwicG9ydF9uYW1lXCIsIGBTdHJpbmcgdHkgXSApO1xuICAgICAgICAgICAgKCBzaXRlc3RhdGVzLFxuICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgICAoSnNvblV0aWwub2ZfbGlzdCBKc29uVXRpbC5vZl9zdHJpbmcpXG4gICAgICAgICAgICAgICAgcC5Vc2VyX2dyYXBoLnBvcnRfc3RhdGVzICk7XG4gICAgICAgICAgXTtcbiAgICAgIF1cblxubGV0IHNpdGVfdG9fanNvbiBzaXRlID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgc2l0ZW5hbWUsIEpzb25VdGlsLm9mX3N0cmluZyBzaXRlLlVzZXJfZ3JhcGguc2l0ZV9uYW1lO1xuICAgICAgc2l0ZXR5cGUsIHNpdGVfdHlwZV90b19qc29uIHNpdGUuVXNlcl9ncmFwaC5zaXRlX3R5cGU7XG4gICAgXVxuXG5sZXQgc2l0ZV90eXBlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYFN0cmluZyBcImNvdW50ZXJcIjsgYEludCBpIF0gLT4gVXNlcl9ncmFwaC5Db3VudGVyIGlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJwb3J0XCI7IGBBc3NvYyBsIF0gYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQgcG9ydF9saW5rcyA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgc2l0ZWxpbmtzIGwgaW5cbiAgICAgICAgIFVzZXJfZ3JhcGgubGlua3Nfb2ZfeW9qc29uIGpzb25cbiAgICAgICBpblxuICAgICAgIGxldCBwb3J0X3N0YXRlcyA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgc2l0ZXN0YXRlcyBsIGluXG4gICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcInN0YXRlIGxpc3RcIlxuICAgICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJzdGF0ZVwiKSlcbiAgICAgICAgICAganNvblxuICAgICAgIGluXG4gICAgICAgVXNlcl9ncmFwaC5Qb3J0IHsgVXNlcl9ncmFwaC5wb3J0X2xpbmtzOyBVc2VyX2dyYXBoLnBvcnRfc3RhdGVzIH1cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJzaXRlIG5vZGUgdHlwZVwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwic2l0ZSBub2RlIHR5cGVcIiwgeCkpXG5cbmxldCBzaXRlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IHNpdGVfbmFtZSA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgc2l0ZW5hbWUgbCBpblxuICAgICAgICAgSnNvblV0aWwudG9fc3RyaW5nIGpzb25cbiAgICAgICBpblxuICAgICAgIGxldCBzaXRlX3R5cGUgPVxuICAgICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIHNpdGV0eXBlIGwgaW5cbiAgICAgICAgIHNpdGVfdHlwZV9vZl9qc29uIGpzb25cbiAgICAgICBpblxuICAgICAgIHsgVXNlcl9ncmFwaC5zaXRlX25hbWU7IFVzZXJfZ3JhcGguc2l0ZV90eXBlIH1cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcInNpdGUgbm9kZVwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJzaXRlIG5vZGVcIiwgeCkpXG5cbmxldCBzaXRlX25vZGVfc2l0ZXNfdG9fanNvbiBsaXN0ID0gSnNvblV0aWwub2ZfYXJyYXkgc2l0ZV90b19qc29uIGxpc3RcblxubGV0IHNpdGVfbm9kZV9zaXRlc19vZl9qc29uID1cbiAgSnNvblV0aWwudG9fYXJyYXkgfmVycm9yX21zZzpcInNpdGUgbm9kZSBzaXRlc1wiIHNpdGVfb2ZfanNvblxuXG5sZXQgc2l0ZV9ub2RlX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gYE51bGxcbiAgfCBTb21lIG5vZGUgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgc2l0ZW5vZGVuYW1lLCBKc29uVXRpbC5vZl9zdHJpbmcgbm9kZS5Vc2VyX2dyYXBoLm5vZGVfdHlwZTtcbiAgICAgICAgc2l0ZW5vZGVzaXRlcywgc2l0ZV9ub2RlX3NpdGVzX3RvX2pzb24gbm9kZS5Vc2VyX2dyYXBoLm5vZGVfc2l0ZXM7XG4gICAgICBdXG5cbmxldCBzaXRlX25vZGVfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQgbm9kZV9pZCA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Nfb3B0IHNpdGVub2RlaWQgbCBpblxuICAgICAgICAgT3B0aW9uX3V0aWwubWFwIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKSBqc29uXG4gICAgICAgaW5cbiAgICAgICBsZXQgbm9kZV90eXBlID1cbiAgICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBzaXRlbm9kZW5hbWUgbCBpblxuICAgICAgICAgSnNvblV0aWwudG9fc3RyaW5nIGpzb25cbiAgICAgICBpblxuICAgICAgIGxldCBub2RlX3NpdGVzID1cbiAgICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBzaXRlbm9kZXNpdGVzIGwgaW5cbiAgICAgICAgIHNpdGVfbm9kZV9zaXRlc19vZl9qc29uIGpzb25cbiAgICAgICBpblxuICAgICAgIFNvbWUgeyBVc2VyX2dyYXBoLm5vZGVfdHlwZTsgVXNlcl9ncmFwaC5ub2RlX2lkOyBVc2VyX2dyYXBoLm5vZGVfc2l0ZXMgfVxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwic2l0ZSBub2RlXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcInNpdGUgbm9kZVwiLCB4KSlcblxubGV0IGNvbnRhY3RfbWFwX3RvX2pzb24gY29udGFjdF9tYXAgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIGNvbnRhY3RtYXAsXG4gICAgICAgIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6YWNjdXJhY3lfc3RyaW5nIH5sYWIyOm1hcCBhY2N1cmFjeV90b19qc29uXG4gICAgICAgICAgKEpzb25VdGlsLm9mX2FycmF5IChKc29uVXRpbC5vZl9hcnJheSBzaXRlX25vZGVfdG9fanNvbikpXG4gICAgICAgICAgY29udGFjdF9tYXAgKTtcbiAgICBdXG5cbmxldCBjb250YWN0X21hcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBjb250YWN0bWFwIGwgaW5cbiAgICAgICBKc29uVXRpbC50b19wYWlyIH5sYWIxOmFjY3VyYWN5X3N0cmluZyB+bGFiMjptYXBcbiAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImNvbnRhY3QgbWFwXCIpXG4gICAgICAgICBhY2N1cmFjeV9vZl9qc29uXG4gICAgICAgICAoSnNvblV0aWwudG9fYXJyYXlcbiAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcInNpdGUgbm9kZXMgbGlzdFwiKVxuICAgICAgICAgICAgKEpzb25VdGlsLnRvX2FycmF5XG4gICAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJzaXRlIG5vZGVzIGxpc3RcIilcbiAgICAgICAgICAgICAgIHNpdGVfbm9kZV9vZl9qc29uKSlcbiAgICAgICAgIGpzb25cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJjb250YWN0IG1hcFwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJjb250YWN0IG1hcFwiLCB4KSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKnN0cm9uZ2x5IGNvbm5lY3RlZCBjb21wb25lbnQqKVxuXG50eXBlIHNjYyA9ICgoc3RyaW5nICogc3RyaW5nKSAqIChzdHJpbmcgKiBzdHJpbmcpKSBsaXN0IGxpc3RcblxubGV0IHN0cmluZ19wYWlyX3RvX2pzb24gKGEsIGIpID1cbiAgSnNvblV0aWwub2ZfcGFpciB+bGFiMTphZ2VudCB+bGFiMjpzaXRlbmFtZSBKc29uVXRpbC5vZl9zdHJpbmdcbiAgICBKc29uVXRpbC5vZl9zdHJpbmcgKGEsIGIpXG5cbmxldCBzdHJpbmdfcGFpcl9vZl9qc29uIChqc29uIDogWW9qc29uLkJhc2ljLnQpIDogc3RyaW5nICogc3RyaW5nID1cbiAgSnNvblV0aWwudG9fcGFpciB+bGFiMTphZ2VudCB+bGFiMjpzaXRlbmFtZSB+ZXJyb3JfbXNnOlwic2l0ZVwiXG4gICAgKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwiYWdlbnQgbmFtZVwiKVxuICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcInNpdGVfbmFtZVwiKVxuICAgIGpzb25cblxubGV0IHN0cmluZ19wYWlyX3BhaXJfdG9fanNvbiAoYSwgYikgPVxuICBKc29uVXRpbC5vZl9wYWlyIHN0cmluZ19wYWlyX3RvX2pzb24gc3RyaW5nX3BhaXJfdG9fanNvbiAoYSwgYilcblxubGV0IHN0cmluZ19wYWlyX3BhaXJfb2ZfanNvbiBqc29uIDogKHN0cmluZyAqIHN0cmluZykgKiAoc3RyaW5nICogc3RyaW5nKSA9XG4gIEpzb25VdGlsLnRvX3BhaXIgfmVycm9yX21zZzpcImJvbmRcIiBzdHJpbmdfcGFpcl9vZl9qc29uIHN0cmluZ19wYWlyX29mX2pzb25cbiAgICBqc29uXG5cbmxldCBzdHJpbmdfcGFpcl9wYWlyX2xpc3RfdG9fanNvbiBsID1cbiAgSnNvblV0aWwub2ZfbGlzdCBzdHJpbmdfcGFpcl9wYWlyX3RvX2pzb24gbFxuXG5sZXQgc3RyaW5nX3BhaXJfcGFpcl9saXN0X29mX2pzb24ganNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcImxpc3Rfb2ZfYm9uZHNcIiBzdHJpbmdfcGFpcl9wYWlyX29mX2pzb24ganNvblxuXG5sZXQgc3RyaW5nX3BhaXJfcGFpcl9saXN0X2xpc3RfdG9fanNvbiBsID1cbiAgSnNvblV0aWwub2ZfbGlzdCBzdHJpbmdfcGFpcl9wYWlyX2xpc3RfdG9fanNvbiBsXG5cbmxldCBzdHJpbmdfcGFpcl9wYWlyX2xpc3RfbGlzdF9vZl9qc29uIGpzb24gPVxuICBKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJsaXN0X29mX2xpc3RzX29mX2JvbmRzXCJcbiAgICBzdHJpbmdfcGFpcl9wYWlyX2xpc3Rfb2ZfanNvbiBqc29uXG5cbmxldCBzY2NfdG9fanNvbiAoY21fYWNjLCBzY2NfYWNjLCBzY2MpID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBjb250YWN0bWFwc2NjLFxuICAgICAgICBKc29uVXRpbC5vZl90cmlwbGUgfmxhYjE6YWNjdXJhY3lfY20gfmxhYjI6YWNjdXJhY3lfc2NjIH5sYWIzOm1hcFxuICAgICAgICAgIGFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3lfdG9fanNvbiBzdHJpbmdfcGFpcl9wYWlyX2xpc3RfbGlzdF90b19qc29uXG4gICAgICAgICAgKGNtX2FjYywgc2NjX2FjYywgc2NjKSApO1xuICAgIF1cblxubGV0IHNjY19vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBjb250YWN0bWFwc2NjIGwgaW5cbiAgICAgICBKc29uVXRpbC50b190cmlwbGUgfmxhYjE6YWNjdXJhY3lfY20gfmxhYjI6YWNjdXJhY3lfc2NjIH5sYWIzOm1hcFxuICAgICAgICAgfmVycm9yX21zZzpcInNjYyBkZWNvbXBvc2l0aW9uXCIgYWNjdXJhY3lfb2ZfanNvbiBhY2N1cmFjeV9vZl9qc29uXG4gICAgICAgICBzdHJpbmdfcGFpcl9wYWlyX2xpc3RfbGlzdF9vZl9qc29uIGpzb25cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwic2NjIGRlY29tcG9zaXRpb25cIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcInNjYyBkZWNvbXBvc2l0aW9uXCIsIHgpKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKioqKioqKioqKioqKiopXG4oKiBkZWFkIHJ1bGVzICopXG4oKioqKioqKioqKioqKiopXG5cbnR5cGUgcnVsZV9kaXJlY3Rpb24gPVxuICB8IERpcmVjdF9ydWxlXG4gIHwgUmV2ZXJzZV9ydWxlXG4gIHwgQm90aF9kaXJlY3Rpb25zXG4gIHwgRHVtbXlfcnVsZV9kaXJlY3Rpb25cbiAgfCBWYXJpYWJsZVxuXG50eXBlIHJ1bGUgPSB7XG4gIHJ1bGVfaWQ6IGludDtcbiAgcnVsZV9sYWJlbDogc3RyaW5nO1xuICBydWxlX2FzdDogc3RyaW5nO1xuICBydWxlX3Bvc2l0aW9uOiBMb2MudDtcbiAgcnVsZV9kaXJlY3Rpb246IHJ1bGVfZGlyZWN0aW9uO1xuICBydWxlX2hpZGRlbjogYm9vbDtcbn1cblxubGV0IGRpcmVjdGlvbl90b19qc29uIGQgPVxuICBtYXRjaCBkIHdpdGhcbiAgfCBEaXJlY3RfcnVsZSAtPiBgU3RyaW5nIFwiZGlyZWN0XCJcbiAgfCBSZXZlcnNlX3J1bGUgLT4gYFN0cmluZyBcInJldmVyc2VcIlxuICB8IEJvdGhfZGlyZWN0aW9ucyAtPiBgU3RyaW5nIFwiYm90aFwiXG4gIHwgRHVtbXlfcnVsZV9kaXJlY3Rpb24gLT4gYFN0cmluZyBcImR1bW15XCJcbiAgfCBWYXJpYWJsZSAtPiBgU3RyaW5nIFwidmFyaWFibGVcIlxuXG5sZXQganNvbl90b19kaXJlY3Rpb24gcyA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IGBTdHJpbmcgXCJkaXJlY3RcIiAtPiBEaXJlY3RfcnVsZVxuICB8IGBTdHJpbmcgXCJyZXZlcnNlXCIgLT4gUmV2ZXJzZV9ydWxlXG4gIHwgYFN0cmluZyBcImJvdGhcIiAtPiBCb3RoX2RpcmVjdGlvbnNcbiAgfCBgU3RyaW5nIFwiZHVtbXlcIiAtPiBEdW1teV9ydWxlX2RpcmVjdGlvblxuICB8IGBTdHJpbmcgXCJ2YXJpYWJsZVwiIC0+IFZhcmlhYmxlXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJydWxlIGRpcmVjdGlvblwiLCB4KSlcblxubGV0IHJ1bGVfdG9fanNvbiBydWxlID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgcnVsZV9pZCwgSnNvblV0aWwub2ZfaW50IHJ1bGUucnVsZV9pZDtcbiAgICAgIGxhYmVsLCBKc29uVXRpbC5vZl9zdHJpbmcgcnVsZS5ydWxlX2xhYmVsO1xuICAgICAgYXN0LCBKc29uVXRpbC5vZl9zdHJpbmcgcnVsZS5ydWxlX2FzdDtcbiAgICAgIHBvc2l0aW9uLCBMb2MueW9qc29uX29mX2Fubm90ZWQgSnNvblV0aWwub2ZfdW5pdCAoKCksIHJ1bGUucnVsZV9wb3NpdGlvbik7XG4gICAgICBkaXJlY3Rpb24sIGRpcmVjdGlvbl90b19qc29uIHJ1bGUucnVsZV9kaXJlY3Rpb247XG4gICAgICBydWxlX2hpZGRlbiwgSnNvblV0aWwub2ZfYm9vbCBydWxlLnJ1bGVfaGlkZGVuO1xuICAgIF1cblxubGV0IGpzb25fdG9fcnVsZSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA2IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIHJ1bGVfaWQgPSBKc29uVXRpbC50b19pbnQgKExpc3QuYXNzb2MgcnVsZV9pZCBsKTtcbiAgICAgICAgIHJ1bGVfbGFiZWwgPSBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgbGFiZWwgbCk7XG4gICAgICAgICBydWxlX2FzdCA9IEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBhc3QgbCk7XG4gICAgICAgICBydWxlX3Bvc2l0aW9uID1cbiAgICAgICAgICAgc25kXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvblxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b191bml0IH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImxvY2FsaXR5XCIpKVxuICAgICAgICAgICAgICAgIChMaXN0LmFzc29jIHBvc2l0aW9uIGwpKTtcbiAgICAgICAgIHJ1bGVfZGlyZWN0aW9uID0ganNvbl90b19kaXJlY3Rpb24gKExpc3QuYXNzb2MgZGlyZWN0aW9uIGwpO1xuICAgICAgICAgcnVsZV9oaWRkZW4gPSBKc29uVXRpbC50b19ib29sIChMaXN0LmFzc29jIHJ1bGVfaGlkZGVuIGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiIHJ1bGVcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwicnVsZVwiLCB4KSlcblxudHlwZSB2YXIgPSB7XG4gIHZhcl9pZDogaW50O1xuICB2YXJfbGFiZWw6IHN0cmluZztcbiAgdmFyX2FzdDogc3RyaW5nO1xuICB2YXJfcG9zaXRpb246IExvYy50O1xufVxuXG5sZXQgdmFyX3RvX2pzb24gdmFyID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgcnVsZV9pZCwgSnNvblV0aWwub2ZfaW50IHZhci52YXJfaWQ7XG4gICAgICBsYWJlbCwgSnNvblV0aWwub2Zfc3RyaW5nIHZhci52YXJfbGFiZWw7XG4gICAgICBhc3QsIEpzb25VdGlsLm9mX3N0cmluZyB2YXIudmFyX2FzdDtcbiAgICAgIHBvc2l0aW9uLCBMb2MueW9qc29uX29mX2Fubm90ZWQgSnNvblV0aWwub2ZfdW5pdCAoKCksIHZhci52YXJfcG9zaXRpb24pO1xuICAgIF1cblxubGV0IGpzb25fdG9fdmFyID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDQgLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgdmFyX2lkID0gSnNvblV0aWwudG9faW50IChMaXN0LmFzc29jIHJ1bGVfaWQgbCk7XG4gICAgICAgICB2YXJfbGFiZWwgPSBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgbGFiZWwgbCk7XG4gICAgICAgICB2YXJfYXN0ID0gSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIGFzdCBsKTtcbiAgICAgICAgIHZhcl9wb3NpdGlvbiA9XG4gICAgICAgICAgIHNuZFxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb25cbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fdW5pdCB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJsb2NhbGl0eVwiKSlcbiAgICAgICAgICAgICAgICAoTGlzdC5hc3NvYyBwb3NpdGlvbiBsKSk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCIgdmFyXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcInZhclwiLCB4KSlcblxudHlwZSAoJ3J1bGUsICd2YXIpIGluZmx1ZW5jZV9ub2RlID0gUnVsZSBvZiAncnVsZSB8IFZhciBvZiAndmFyXG50eXBlIHBvc19vZl9ydWxlc19hbmRfdmFycyA9ICgoaW50LCBpbnQpIGluZmx1ZW5jZV9ub2RlICogTG9jLnQpIGxpc3RcblxubGV0IGluZmx1ZW5jZV9ub2RlX3RvX2pzb24gcnVsZV90b19qc29uIHZhcl90b19qc29uIGEgPVxuICBtYXRjaCBhIHdpdGhcbiAgfCBWYXIgaSAtPiBgQXNzb2MgWyB2YXJpYWJsZSwgdmFyX3RvX2pzb24gaSBdXG4gIHwgUnVsZSBpIC0+IGBBc3NvYyBbIHJ1bGUsIHJ1bGVfdG9fanNvbiBpIF1cblxubGV0IGluZmx1ZW5jZV9ub2RlX29mX2pzb24ganNvbl90b19ydWxlIGpzb25fdG9fdmFyID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAocywganNvbikgXSB3aGVuIHMgPSB2YXJpYWJsZSAtPiBWYXIgKGpzb25fdG9fdmFyIGpzb24pXG4gIHwgYEFzc29jIFsgKHMsIGpzb24pIF0gd2hlbiBzID0gcnVsZSAtPiBSdWxlIChqc29uX3RvX3J1bGUganNvbilcbiAgfCB4IC0+XG4gICAgbGV0IGVycm9yX21zZyA9IFwiTm90IGEgY29ycmVjdCBpbmZsdWVuY2Ugbm9kZVwiIGluXG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBzaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uID1cbiAgaW5mbHVlbmNlX25vZGVfdG9fanNvbiBKc29uVXRpbC5vZl9pbnQgSnNvblV0aWwub2ZfaW50XG5cbmxldCBzaG9ydF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uID1cbiAgaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgIChKc29uVXRpbC50b19pbnQgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwicnVsZSBpZFwiKSlcbiAgICAoSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcInZhciBpZFwiKSlcblxubGV0IHBvc19vZl9ydWxlc19hbmRfdmFyc190b19qc29uID1cbiAgSnNvblV0aWwub2ZfbGlzdFxuICAgIChKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmtleSB+bGFiMjpsb2NhbGl0eSBzaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgICAgKGZ1biBsb2MgLT4gTG9jLnlvanNvbl9vZl9hbm5vdGVkIEpzb25VdGlsLm9mX3VuaXQgKCgpLCBsb2MpKSlcblxubGV0IHBvc19vZl9ydWxlc19hbmRfdmFyc19vZl9qc29uID1cbiAgSnNvblV0aWwudG9fbGlzdFxuICAgIChKc29uVXRpbC50b19wYWlyIH5sYWIxOmtleSB+bGFiMjpsb2NhbGl0eSBzaG9ydF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgICAgKGZ1biB4IC0+XG4gICAgICAgICBzbmRcbiAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvblxuICAgICAgICAgICAgICAoSnNvblV0aWwudG9fdW5pdCB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJsb2NhbGl0eVwiKSlcbiAgICAgICAgICAgICAgeCkpKVxuXG5sZXQgcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV90b19qc29uID1cbiAgaW5mbHVlbmNlX25vZGVfdG9fanNvbiBydWxlX3RvX2pzb24gdmFyX3RvX2pzb25cblxubGV0IHJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiA9XG4gIGluZmx1ZW5jZV9ub2RlX29mX2pzb24ganNvbl90b19ydWxlIGpzb25fdG9fdmFyXG5cbmxldCBzaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSA9IGZ1bmN0aW9uXG4gIHwgUnVsZSBydWxlIC0+IFJ1bGUgcnVsZS5ydWxlX2lkXG4gIHwgVmFyIHZhciAtPiBWYXIgdmFyLnZhcl9pZFxuXG5sZXQgcG9zaXRpb25fb2ZfcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZSA9IGZ1bmN0aW9uXG4gIHwgUnVsZSByIC0+IHIucnVsZV9wb3NpdGlvblxuICB8IFZhciB2IC0+IHYudmFyX3Bvc2l0aW9uXG5cbm1vZHVsZSBJbmZsdWVuY2VOb2RlU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSAoaW50LCBpbnQpIGluZmx1ZW5jZV9ub2RlXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5cbiAgbGV0IHByaW50IGYgPSBmdW5jdGlvblxuICAgIHwgUnVsZSByIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJSdWxlICVpXCIgclxuICAgIHwgVmFyIHIgLT4gRm9ybWF0LmZwcmludGYgZiBcIlZhciAlaVwiIHJcbmVuZClcblxubW9kdWxlIEluZmx1ZW5jZU5vZGVNYXAgPSBJbmZsdWVuY2VOb2RlU2V0TWFwLk1hcFxuXG4oKiBSZWxhdGlvbnMgKilcblxudHlwZSAnYSBwYWlyID0gJ2EgKiAnYVxudHlwZSBsb2NhdGlvbiA9IERpcmVjdCBvZiBpbnQgfCBTaWRlX2VmZmVjdCBvZiBpbnRcblxubGV0IGR1bXBfbG9jYXRpb24gZm10ID0gZnVuY3Rpb25cbiAgfCBEaXJlY3QgaW50IC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVpXCIgaW50XG4gIHwgU2lkZV9lZmZlY3QgaW50IC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVpKlwiIGludFxuXG5sZXQgZHVtcF9sb2NhdGlvbl9wYWlyIGZtdCAoYSwgYikgPVxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoJWEsJWEpXCIgZHVtcF9sb2NhdGlvbiBhIGR1bXBfbG9jYXRpb24gYlxuXG5sZXQgZHVtcF9sb2NhdGlvbl9wYWlyX2xpc3QgZm10IGwgPVxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCJbJWFdXCJcbiAgICAoUHAubGlzdCAoZnVuIGZtdCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIjtcIikgZHVtcF9sb2NhdGlvbl9wYWlyKVxuICAgIGxcblxubGV0IHN0cmluZ19vZl9sYWJlbF9saXN0IGwgPSBGb3JtYXQuYXNwcmludGYgXCIlYVwiIGR1bXBfbG9jYXRpb25fcGFpcl9saXN0IGxcblxudHlwZSBoYWxmX2luZmx1ZW5jZV9tYXAgPVxuICBsb2NhdGlvbiBwYWlyIGxpc3QgSW5mbHVlbmNlTm9kZU1hcC50IEluZmx1ZW5jZU5vZGVNYXAudFxuXG50eXBlIGluZmx1ZW5jZV9tYXAgPSB7XG4gIG5vZGVzOiAocnVsZSwgdmFyKSBpbmZsdWVuY2Vfbm9kZSBsaXN0O1xuICBwb3NpdGl2ZTogaGFsZl9pbmZsdWVuY2VfbWFwO1xuICBuZWdhdGl2ZTogaGFsZl9pbmZsdWVuY2VfbWFwO1xufVxuXG4oKiBMb2NhdGlvbiBsYWJlbHMgKilcbmxldCBsb2NhdGlvbl90b19qc29uIGEgPVxuICBtYXRjaCBhIHdpdGhcbiAgfCBEaXJlY3QgaSAtPiBgQXNzb2MgWyBkaXJlY3QsIEpzb25VdGlsLm9mX2ludCBpIF1cbiAgfCBTaWRlX2VmZmVjdCBpIC0+IGBBc3NvYyBbIHNpZGVfZWZmZWN0LCBKc29uVXRpbC5vZl9pbnQgaSBdXG5cbmxldCBsb2NhdGlvbl9vZl9qc29uID8oZXJyb3JfbXNnID0gXCJOb3QgYSBjb3JyZWN0IGxvY2F0aW9uXCIpID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAocywganNvbikgXSB3aGVuIHMgPSBkaXJlY3QgLT4gRGlyZWN0IChKc29uVXRpbC50b19pbnQganNvbilcbiAgfCBgQXNzb2MgWyAocywganNvbikgXSB3aGVuIHMgPSBzaWRlX2VmZmVjdCAtPlxuICAgIFNpZGVfZWZmZWN0IChKc29uVXRpbC50b19pbnQganNvbilcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgaGFsZl9pbmZsdWVuY2VfbWFwX3RvX2pzb24gPVxuICBJbmZsdWVuY2VOb2RlTWFwLnRvX2pzb24gfmxhYl9rZXk6c291cmNlIH5sYWJfdmFsdWU6dGFyZ2V0X21hcFxuICAgIHNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAoSW5mbHVlbmNlTm9kZU1hcC50b19qc29uIH5sYWJfa2V5OnRhcmdldCB+bGFiX3ZhbHVlOmxvY2F0aW9uX3BhaXJfbGlzdFxuICAgICAgIHNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAgICAoSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyIH5sYWIxOnJocyB+bGFiMjpsaHMgbG9jYXRpb25fdG9fanNvblxuICAgICAgICAgICAgIGxvY2F0aW9uX3RvX2pzb24pKSlcblxubGV0IGhhbGZfaW5mbHVlbmNlX21hcF9vZl9qc29uID1cbiAgSW5mbHVlbmNlTm9kZU1hcC5vZl9qc29uXG4gICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiYWN0aXZhdGlvbiBvciBpbmhpYml0aW9uIG1hcFwiKVxuICAgIH5sYWJfa2V5OnNvdXJjZSB+bGFiX3ZhbHVlOnRhcmdldF9tYXAgc2hvcnRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgIChJbmZsdWVuY2VOb2RlTWFwLm9mX2pzb24gfmxhYl9rZXk6dGFyZ2V0IH5sYWJfdmFsdWU6bG9jYXRpb25fcGFpcl9saXN0XG4gICAgICAgfmVycm9yX21zZzpcIm1hcCBvZiBsaXN0cyBvZiBwYWlycyBvZiBsb2NhdGlvbnNcIlxuICAgICAgIHNob3J0X2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAgICAoSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwibGlzdCBvZiBwYWlyIG9mIGxvY2F0aW9uc1wiXG4gICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXIgfmVycm9yX21zZzpcIlwiIH5sYWIxOnJocyB+bGFiMjpsaHNcbiAgICAgICAgICAgICAobG9jYXRpb25fb2ZfanNvbiB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJsb2NhdGlvblwiKSlcbiAgICAgICAgICAgICAobG9jYXRpb25fb2ZfanNvbiB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJsb2NhdGlvblwiKSkpKSlcblxuKCogSW5mbHVlbmNlIG1hcCAqKVxuXG5sZXQgbm9kZXNfbGlzdF90b19qc29uID0gSnNvblV0aWwub2ZfbGlzdCByZWZpbmVkX2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbmxldCBub2Rlc19saXN0X29mX2pzb24gPSBKc29uVXRpbC50b19saXN0IHJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuXG5sZXQgaW5mbHVlbmNlX21hcF90b19qc29uIGluZmx1ZW5jZV9tYXAgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIGluZmx1ZW5jZW1hcCxcbiAgICAgICAgSnNvblV0aWwub2ZfcGFpciB+bGFiMTphY2N1cmFjeV9zdHJpbmcgfmxhYjI6bWFwIGFjY3VyYWN5X3RvX2pzb25cbiAgICAgICAgICAoZnVuIGluZmx1ZW5jZV9tYXAgLT5cbiAgICAgICAgICAgIGBBc3NvY1xuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgbm9kZXMsIG5vZGVzX2xpc3RfdG9fanNvbiBpbmZsdWVuY2VfbWFwLm5vZGVzO1xuICAgICAgICAgICAgICAgIHdha2V1cCwgaGFsZl9pbmZsdWVuY2VfbWFwX3RvX2pzb24gaW5mbHVlbmNlX21hcC5wb3NpdGl2ZTtcbiAgICAgICAgICAgICAgICBpbmhpYml0aW9uLCBoYWxmX2luZmx1ZW5jZV9tYXBfdG9fanNvbiBpbmZsdWVuY2VfbWFwLm5lZ2F0aXZlO1xuICAgICAgICAgICAgICBdKVxuICAgICAgICAgIGluZmx1ZW5jZV9tYXAgKTtcbiAgICBdXG5cbmxldCBub2Rlc19vZl9pbmZsdWVuY2VfbWFwX3RvX2pzb24gbm9kZXNfbGlzdCA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggbm9kZXNvZmluZmx1ZW5jZW1hcCxcbiAgICAgICAgSnNvblV0aWwub2ZfcGFpciB+bGFiMTphY2N1cmFjeV9zdHJpbmcgfmxhYjI6bWFwIGFjY3VyYWN5X3RvX2pzb25cbiAgICAgICAgICAoZnVuIG5vZGVzX2xpc3QgLT4gYEFzc29jIFsgbm9kZXMsIG5vZGVzX2xpc3RfdG9fanNvbiBub2Rlc19saXN0IF0pXG4gICAgICAgICAgbm9kZXNfbGlzdCApO1xuICAgIF1cblxubGV0IG5vZGVzX29mX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgbm9kZXNvZmluZmx1ZW5jZW1hcCBsIGluXG4gICAgICAgSnNvblV0aWwudG9fcGFpciB+bGFiMTphY2N1cmFjeV9zdHJpbmcgfmxhYjI6bWFwXG4gICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJub2RlcyBvZiBpbmZsdWVuY2UgbWFwMVwiKVxuICAgICAgICAgYWNjdXJhY3lfb2ZfanNvblxuICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAxIC0+XG4gICAgICAgICAgICAgKHRyeSBub2Rlc19saXN0X29mX2pzb24gKExpc3QuYXNzb2Mgbm9kZXMgbClcbiAgICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJub2RlcyBvZiBpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwibm9kZXMgb2YgaW5mbHVlbmNlIG1hcFwiLCB4KSkpXG4gICAgICAgICBqc29uXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcIm5vZGVzIG9mIGluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJub2RlcyBvZiBpbmZsdWVuY2UgbWFwXCIsIHgpKVxuXG5sZXQgbG9jYWxfaW5mbHVlbmNlX21hcF90b19qc29uIGluZmx1ZW5jZV9tYXAgPVxuICBsZXQgYWNjdXJhY3ksIHRvdGFsLCBid2QsIGZ3ZCwgb3JpZ2luX29wdCwgaW5mbHVlbmNlX21hcCA9IGluZmx1ZW5jZV9tYXAgaW5cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBpbmZsdWVuY2VtYXAsXG4gICAgICAgIGBBc3NvY1xuICAgICAgICAgIFtcbiAgICAgICAgICAgIGFjY3VyYWN5X3N0cmluZywgYWNjdXJhY3lfdG9fanNvbiBhY2N1cmFjeTtcbiAgICAgICAgICAgIHRvdGFsX3N0cmluZywgSnNvblV0aWwub2ZfaW50IHRvdGFsO1xuICAgICAgICAgICAgZndkX3N0cmluZywgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludCBmd2Q7XG4gICAgICAgICAgICBid2Rfc3RyaW5nLCBKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2ZfaW50IGJ3ZDtcbiAgICAgICAgICAgIG9yaWdpbiwgSnNvblV0aWwub2Zfb3B0aW9uIHJlZmluZWRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiBvcmlnaW5fb3B0O1xuICAgICAgICAgICAgKCBtYXAsXG4gICAgICAgICAgICAgIChmdW4gaW5mbHVlbmNlX21hcCAtPlxuICAgICAgICAgICAgICAgIGBBc3NvY1xuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBub2Rlcywgbm9kZXNfbGlzdF90b19qc29uIGluZmx1ZW5jZV9tYXAubm9kZXM7XG4gICAgICAgICAgICAgICAgICAgIHdha2V1cCwgaGFsZl9pbmZsdWVuY2VfbWFwX3RvX2pzb24gaW5mbHVlbmNlX21hcC5wb3NpdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgKCBpbmhpYml0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgIGhhbGZfaW5mbHVlbmNlX21hcF90b19qc29uIGluZmx1ZW5jZV9tYXAubmVnYXRpdmUgKTtcbiAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgaW5mbHVlbmNlX21hcCApO1xuICAgICAgICAgIF0gKTtcbiAgICBdXG5cbmxldCBpbmZsdWVuY2VfbWFwX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIGluZmx1ZW5jZW1hcCBsIGluXG4gICAgICAgSnNvblV0aWwudG9fcGFpciB+bGFiMTphY2N1cmFjeV9zdHJpbmcgfmxhYjI6bWFwXG4gICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJpbmZsdWVuY2UgbWFwMVwiKVxuICAgICAgICAgYWNjdXJhY3lfb2ZfanNvblxuICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5vZGVzID0gbm9kZXNfbGlzdF9vZl9qc29uIChMaXN0LmFzc29jIG5vZGVzIGwpO1xuICAgICAgICAgICAgICAgICAgcG9zaXRpdmUgPSBoYWxmX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiAoTGlzdC5hc3NvYyB3YWtldXAgbCk7XG4gICAgICAgICAgICAgICAgICBuZWdhdGl2ZSA9XG4gICAgICAgICAgICAgICAgICAgIGhhbGZfaW5mbHVlbmNlX21hcF9vZl9qc29uIChMaXN0LmFzc29jIGluaGliaXRpb24gbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcImluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgICAgICAgIGpzb25cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImluZmx1ZW5jZSBtYXBcIiwgeCkpXG5cbmxldCBsb2NhbF9pbmZsdWVuY2VfbWFwX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIGluZmx1ZW5jZW1hcCBsIGluXG4gICAgICAgbWF0Y2gganNvbiB3aXRoXG4gICAgICAgfCBgQXNzb2MgbCcgLT5cbiAgICAgICAgIGxldCBhY2N1cmFjeSA9IGFjY3VyYWN5X29mX2pzb24gKExpc3QuYXNzb2MgYWNjdXJhY3lfc3RyaW5nIGwnKSBpblxuICAgICAgICAgbGV0IHRvdGFsID0gSnNvblV0aWwudG9faW50IChMaXN0LmFzc29jIHRvdGFsX3N0cmluZyBsJykgaW5cbiAgICAgICAgIGxldCBlcnJvcl9tc2cgPSBKc29uVXRpbC5idWlsZF9tc2cgXCJmd2QgcmFkaXVzXCIgaW5cbiAgICAgICAgIGxldCBmd2QgPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2cpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgZndkX3N0cmluZyBsJylcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgZXJyb3JfbXNnID0gSnNvblV0aWwuYnVpbGRfbXNnIFwiYndkIHJhZGl1c1wiIGluXG4gICAgICAgICBsZXQgYndkID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX2ludCB+ZXJyb3JfbXNnKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIGJ3ZF9zdHJpbmcgbCcpXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IG9yaWdpbiA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvbiByZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBvcmlnaW4gbCcpXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IGluZmx1ZW5jZV9tYXAgPVxuICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBub2RlcyA9IG5vZGVzX2xpc3Rfb2ZfanNvbiAoTGlzdC5hc3NvYyBub2RlcyBsKTtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpdmUgPSBoYWxmX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiAoTGlzdC5hc3NvYyB3YWtldXAgbCk7XG4gICAgICAgICAgICAgICAgICAgIG5lZ2F0aXZlID1cbiAgICAgICAgICAgICAgICAgICAgICBoYWxmX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiAoTGlzdC5hc3NvYyBpbmhpYml0aW9uIGwpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYWwgaW5mbHVlbmNlIG1hcFwiLCB4KSkpXG4gICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYWwgaW5mbHVlbmNlIG1hcFwiLCB4KSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgbWFwIGwnKVxuICAgICAgICAgaW5cbiAgICAgICAgIGFjY3VyYWN5LCB0b3RhbCwgZndkLCBid2QsIG9yaWdpbiwgaW5mbHVlbmNlX21hcFxuICAgICAgIHwgXyAtPlxuICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImluZmx1ZW5jZSBtYXBcIiwgeCkpXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiaW5mbHVlbmNlIG1hcFwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJpbmZsdWVuY2UgbWFwXCIsIHgpKVxuXG4oKioqKioqKioqKioqKioqKVxuKCogZGVhZCBydWxlcyAgKilcbigqKioqKioqKioqKioqKiopXG5cbnR5cGUgZGVhZF9ydWxlcyA9IHJ1bGUgbGlzdFxuXG5sZXQgZGVhZF9ydWxlc190b19qc29uIGpzb24gPVxuICBgQXNzb2MgWyBkZWFkX3J1bGVzLCBKc29uVXRpbC5vZl9saXN0IHJ1bGVfdG9fanNvbiBqc29uIF1cblxubGV0IGRlYWRfcnVsZXNfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKHMsIGpzb24pIF0gYXMgeCB3aGVuIHMgPSBkZWFkX3J1bGVzIC0+XG4gICAgKHRyeSBKc29uVXRpbC50b19saXN0IGpzb25fdG9fcnVsZSBqc29uXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBkZWFkX3J1bGVzLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIGRlYWRfcnVsZXMsIHgpKVxuXG4oKioqKioqKioqKioqKioqKVxuKCogZGVhZCBhZ2VudHMgKilcbigqKioqKioqKioqKioqKiopXG5cbnR5cGUgYWdlbnRfa2luZCA9IHtcbiAgYWdlbnRfaWQ6IGludDtcbiAgYWdlbnRfYXN0OiBzdHJpbmc7XG4gIGFnZW50X3Bvc2l0aW9uOiBMb2MudCBsaXN0O1xufVxuXG5sZXQganNvbl90b19hZ2VudF9raW5kID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDMgLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgYWdlbnRfaWQgPSBKc29uVXRpbC50b19pbnQgKExpc3QuYXNzb2MgYWdlbnRfaWQgbCk7XG4gICAgICAgICBhZ2VudF9hc3QgPSBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgYXN0IGwpO1xuICAgICAgICAgYWdlbnRfcG9zaXRpb24gPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYWxpdHkgbGlzdFwiKVxuICAgICAgICAgICAgIChmdW4ganNvbiAtPlxuICAgICAgICAgICAgICAgc25kXG4gICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb25cbiAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3VuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYWxpdHlcIikpXG4gICAgICAgICAgICAgICAgICAgIGpzb24pKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIHBvc2l0aW9uX2xpc3QgbCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJhZ2VudCBraW5kXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcImFnZW50IGtpbmRcIiwgeCkpXG5cbmxldCBhZ2VudF9raW5kX3RvX2pzb24gYWdlbnRfa2luZCA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIGFnZW50X2lkLCBKc29uVXRpbC5vZl9pbnQgYWdlbnRfa2luZC5hZ2VudF9pZDtcbiAgICAgIGFzdCwgSnNvblV0aWwub2Zfc3RyaW5nIGFnZW50X2tpbmQuYWdlbnRfYXN0O1xuICAgICAgKCBwb3NpdGlvbl9saXN0LFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKGZ1biBhIC0+IExvYy55b2pzb25fb2ZfYW5ub3RlZCBKc29uVXRpbC5vZl91bml0ICgoKSwgYSkpXG4gICAgICAgICAgYWdlbnRfa2luZC5hZ2VudF9wb3NpdGlvbiApO1xuICAgIF1cblxudHlwZSBkZWFkX2FnZW50cyA9IGFnZW50X2tpbmQgbGlzdFxuXG5sZXQganNvbl9vZl9kZWFkX2FnZW50cyBqc29uID1cbiAgYEFzc29jIFsgZGVhZF9hZ2VudHMsIEpzb25VdGlsLm9mX2xpc3QgYWdlbnRfa2luZF90b19qc29uIGpzb24gXVxuXG5sZXQganNvbl90b19kZWFkX2FnZW50cyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKHMsIGpzb24pIF0gYXMgeCB3aGVuIHMgPSBkZWFkX2FnZW50cyAtPlxuICAgICh0cnkgSnNvblV0aWwudG9fbGlzdCBqc29uX3RvX2FnZW50X2tpbmQganNvblxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgZGVhZF9hZ2VudHMsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBkZWFkX2FnZW50cywgeCkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogbm9uIHdlYWtseSByZXZlcnNpYmxlIHRyYW5zaXRpb25zICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzZXBhcmF0aW5nX3RyYW5zaXRpb25zID0gKHJ1bGUgKiAoc3RyaW5nICogc3RyaW5nKSBsaXN0KSBsaXN0XG5cbmxldCBzZXBhcmF0aW5nX3RyYW5zaXRpb25zX3RvX2pzb24gPVxuICBKc29uVXRpbC5vZl9saXN0XG4gICAgKEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6XCJydWxlXCIgfmxhYjI6XCJwb3RlbnRpYWwtY29udGV4dHNcIiBydWxlX3RvX2pzb25cbiAgICAgICAoSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyIH5sYWIxOlwiczFcIiB+bGFiMjpcInMyXCIgSnNvblV0aWwub2Zfc3RyaW5nXG4gICAgICAgICAgICAgSnNvblV0aWwub2Zfc3RyaW5nKSkpXG5cbmxldCBzZXBhcmF0aW5nX3RyYW5zaXRpb25zX29mX2pzb24gPVxuICBKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJzZXBhcmF0aW5nIHRyYW5zaXRpb25zIGxpc3RcIlxuICAgIChKc29uVXRpbC50b19wYWlyIH5lcnJvcl9tc2c6XCJzZXBhcmF0aW5nIHRyYW5zaXRpb25cIiB+bGFiMTpcInJ1bGVcIlxuICAgICAgIH5sYWIyOlwicG90ZW50aWFsLWNvbnRleHRzXCIganNvbl90b19ydWxlXG4gICAgICAgKEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcInNlcGFyYXRpbmcgdHJhbnNpdGlvbnNcIlxuICAgICAgICAgIChKc29uVXRpbC50b19wYWlyIH5lcnJvcl9tc2c6XCJ0cmFuc2l0aW9uXCIgfmxhYjE6XCJzMVwiIH5sYWIyOlwiczJcIlxuICAgICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSkpKVxuXG4oKioqKioqKioqKioqKioqKVxuKCogQ29uc3RyYWludHMgKilcbigqKioqKioqKioqKioqKiopXG5cbnR5cGUgYmluZGluZ19zdGF0ZSA9XG4gIHwgRnJlZVxuICB8IFdpbGRjYXJkXG4gIHwgQm91bmRfdG9fdW5rbm93blxuICB8IEJvdW5kX3RvIG9mIGludFxuICB8IEJpbmRpbmdfdHlwZSBvZiBzdHJpbmcgKiBzdHJpbmdcblxudHlwZSBhZ2VudCA9XG4gIHN0cmluZ1xuICAqIChzdHJpbmdcbiAgICAqIHN0cmluZyBvcHRpb25cbiAgICAqIGJpbmRpbmdfc3RhdGUgb3B0aW9uXG4gICAgKiAoaW50IG9wdGlvbiAqIGludCBvcHRpb24pIG9wdGlvbilcbiAgICBsaXN0XG5cbnR5cGUgJ3NpdGVfZ3JhcGggbGVtbWEgPSB7IGh5cDogJ3NpdGVfZ3JhcGg7IHJlZmluZW1lbnQ6ICdzaXRlX2dyYXBoIGxpc3QgfVxudHlwZSAnc2l0ZV9ncmFwaCBwb2x5X2NvbnN0cmFpbnRzX2xpc3QgPSAoc3RyaW5nICogJ3NpdGVfZ3JhcGggbGVtbWEgbGlzdCkgbGlzdFxuXG5sZXQgbGVtbWFfdG9fanNvbiBzaXRlX2dyYXBoX3RvX2pzb24ganNvbiA9XG4gIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6aHlwIH5sYWIyOnJlZmluZW1lbnQgc2l0ZV9ncmFwaF90b19qc29uXG4gICAgKEpzb25VdGlsLm9mX2xpc3Qgc2l0ZV9ncmFwaF90b19qc29uKVxuICAgIChqc29uLmh5cCwganNvbi5yZWZpbmVtZW50KVxuXG5sZXQgbGVtbWFfb2ZfanNvbiBzaXRlX2dyYXBoX29mX2pzb24ganNvbiA9XG4gIGxldCBhLCBiID1cbiAgICBKc29uVXRpbC50b19wYWlyIH5sYWIxOmh5cCB+bGFiMjpyZWZpbmVtZW50IH5lcnJvcl9tc2c6XCJsZW1tYVwiXG4gICAgICBzaXRlX2dyYXBoX29mX2pzb25cbiAgICAgIChKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJyZWZpbmVtZW50cyBsaXN0XCIgc2l0ZV9ncmFwaF9vZl9qc29uKVxuICAgICAganNvblxuICBpblxuICB7IGh5cCA9IGE7IHJlZmluZW1lbnQgPSBiIH1cblxubGV0IGdldF9oeXAgaCA9IGguaHlwXG5sZXQgZ2V0X3JlZmluZW1lbnQgciA9IHIucmVmaW5lbWVudFxubGV0IGZyZWUgPSBcIlwiXG5sZXQgd2lsZGNhcmQgPSBcIj9cIlxubGV0IGJvdW5kID0gXCIhX1wiXG5sZXQgYm9uZF9pZCA9IFwiYm9uZCBpZFwiXG5sZXQgYm91bmRfdG8gPSBcImJvdW5kIHRvXCJcbmxldCBiaW5kaW5nX3R5cGUgPSBcImJpbmRpbmcgdHlwZVwiXG5sZXQgcHJvcCA9IFwicHJvcGVydHkgc3RhdGVcIlxubGV0IGJpbmQgPSBcImJpbmRpbmcgc3RhdGVcIlxubGV0IGJpbmRpbmdfdHlwZV9iYWNrZW5kX3N5bWJvbCA9IFwiLlwiXG5sZXQgZnJlZV9iYWNrZW5kX3N5bWJvbCA9IFwiLlwiXG5sZXQgbWlzc2luZ19iaW5kaW5nX3NpdGVfYmFja2VuZF9zeW1ib2wgPSBcIlwiXG5sZXQgd2lsZGNhcmRfYmFja2VuZF9zeW1ib2wgPSBcIiNcIlxubGV0IGJvdW5kX3RvX3Vua25vd25fYmFja2VuZF9zeW1ib2wgPSBcIl9cIlxubGV0IGludGVybmFsX3N0YXRlX2ludHJvZHVjdGlvbl9iYWNrZW5kX3N5bWJvbCA9IFwiflwiXG5sZXQgaW50ZXJuYWxfc3RhdGVfZGVsaW1pdGVyX2JhY2tlbmRfc3ltYm9sID0gXCIsXCJcbmxldCBiaW5kaW5nX3N0YXRlX2RlbGltaXRlcl9iYWNrZW5kX3N5bWJvbCA9IFwiLFwiXG5sZXQgYmluZGluZ19zdGF0ZV9vcGVuaW5nX2JhY2tlbmRfc3ltYm9sID0gXCJbXCJcbmxldCBiaW5kaW5nX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF9zeW1ib2wgPSBcIl1cIlxubGV0IGludGVybmFsX3N0YXRlX29wZW5pbmdfYmFja2VuZF9zeW1ib2wgPSBcIntcIlxubGV0IGludGVybmFsX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF9zeW1ib2wgPSBcIn1cIlxubGV0IGNvdW50ZXJfc3RhdGVfb3BlbmluZ19iYWNrZW5kX3N5bWJvbCA9IFwie1wiXG5sZXQgY291bnRlcl9zdGF0ZV9jbG9zaW5nX2JhY2tlbmRfc3ltYm9sID0gXCJ9XCJcbmxldCBjb3VudGVyX3N0YXRlX3JhbmdlX2JhY2tlbmRfc3ltYm9sID0gXCIgLi4gXCJcbmxldCBvcGVuX2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wgPSBcIltcIlxubGV0IGNsb3NlX2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wgPSBcIl1cIlxubGV0IG9wZW5faW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCA9IFwiXVwiXG5sZXQgY2xvc2VfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCA9IFwiW1wiXG5sZXQgcGx1c19pbmZpbml0eV9zeW1ib2wgPSBcIitvb1wiXG5sZXQgbWludXNfaW5maW5pdHlfc3ltYm9sID0gXCItb29cIlxuXG5sZXQgc3RyaW5nX29mX2JpbmRpbmdfdHlwZSA/KGJpbmRpbmdfdHlwZV9zeW1ib2wgPSBcIi5cIikgfmFnZW50X25hbWUgfnNpdGVfbmFtZVxuICAgICgpID1cbiAgRm9ybWF0LnNwcmludGYgXCIlcyVzJXNcIiBzaXRlX25hbWUgYmluZGluZ190eXBlX3N5bWJvbCBhZ2VudF9uYW1lXG5cbmxldCBiaW5kaW5nX3N0YXRlX2xpZ2h0X29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChzLCBgTnVsbCkgXSB3aGVuIHMgPSBmcmVlIC0+IEZyZWVcbiAgfCBgQXNzb2MgWyAocywgYE51bGwpIF0gd2hlbiBzID0gd2lsZGNhcmQgLT4gV2lsZGNhcmRcbiAgfCBgQXNzb2MgWyAocywgYE51bGwpIF0gd2hlbiBzID0gYm91bmRfdG8gLT4gQm91bmRfdG9fdW5rbm93blxuICB8IGBBc3NvYyBbIChzLCBqKSBdIHdoZW4gcyA9IGJvbmRfaWQgLT5cbiAgICBsZXQgaSA9IEpzb25VdGlsLnRvX2ludCB+ZXJyb3JfbXNnOlwid3JvbmcgYmluZGluZyBpZFwiIGogaW5cbiAgICBsZXQgYm9uZF9pbmRleCA9IGkgaW5cbiAgICBCb3VuZF90byBib25kX2luZGV4XG4gIHwgYEFzc29jIFsgKHMsIGopIF0gd2hlbiBzID0gYmluZGluZ190eXBlIC0+XG4gICAgbGV0IGFnZW50X25hbWUsIHNpdGVfbmFtZSA9XG4gICAgICBKc29uVXRpbC50b19wYWlyIH5sYWIxOlwiYWdlbnRcIiB+bGFiMjpcInNpdGVcIiB+ZXJyb3JfbXNnOlwiYmluZGluZyB0eXBlXCJcbiAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwiYWdlbnQgbmFtZVwiKVxuICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJzaXRlIG5hbWVcIilcbiAgICAgICAgalxuICAgIGluXG4gICAgQmluZGluZ190eXBlIChhZ2VudF9uYW1lLCBzaXRlX25hbWUpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJ3cm9uZyBiaW5kaW5nIHN0YXRlXCIsIHgpKVxuXG5sZXQgYmluZGluZ19zdGF0ZV9saWdodF90b19qc29uID0gZnVuY3Rpb25cbiAgfCBGcmVlIC0+IGBBc3NvYyBbIGZyZWUsIGBOdWxsIF1cbiAgfCBXaWxkY2FyZCAtPiBgQXNzb2MgWyB3aWxkY2FyZCwgYE51bGwgXVxuICB8IEJvdW5kX3RvX3Vua25vd24gLT4gYEFzc29jIFsgYm91bmRfdG8sIGBOdWxsIF1cbiAgfCBCb3VuZF90byBib25kX2luZGV4IC0+IGBBc3NvYyBbIGJvbmRfaWQsIEpzb25VdGlsLm9mX2ludCBib25kX2luZGV4IF1cbiAgfCBCaW5kaW5nX3R5cGUgKGFnZW50X25hbWUsIHNpdGVfbmFtZSkgLT5cbiAgICBsZXQgaiA9XG4gICAgICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOlwiYWdlbnRcIiB+bGFiMjpcInNpdGVcIiBKc29uVXRpbC5vZl9zdHJpbmdcbiAgICAgICAgSnNvblV0aWwub2Zfc3RyaW5nIChhZ2VudF9uYW1lLCBzaXRlX25hbWUpXG4gICAgaW5cbiAgICBgQXNzb2MgWyBiaW5kaW5nX3R5cGUsIGogXVxuXG5sZXQgY291bnRlcl9zdGF0ZV9saWdodF9vZl9qc29uID1cbiAgSnNvblV0aWwudG9fcGFpciB+bGFiMTppbmYgfmxhYjI6c3VwIH5lcnJvcl9tc2c6XCJ3cm9uZyBjb3VudGVyIHN0YXRlXCJcbiAgICAoSnNvblV0aWwudG9fb3B0aW9uIChKc29uVXRpbC50b19pbnQgfmVycm9yX21zZzpjb3VudGVyKSlcbiAgICAoSnNvblV0aWwudG9fb3B0aW9uIChKc29uVXRpbC50b19pbnQgfmVycm9yX21zZzpjb3VudGVyKSlcblxubGV0IGNvdW50ZXJfc3RhdGVfbGlnaHRfdG9fanNvbiA9XG4gIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6aW5mIH5sYWIyOnN1cFxuICAgIChKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2ZfaW50KVxuICAgIChKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2ZfaW50KVxuXG5sZXQgaW50ZXJmYWNlX2xpZ2h0X3RvX2pzb24gaW50ZiA9XG4gIEpzb25VdGlsLm9mX21hcCB+bGFiX2tleTpzaXRlIH5sYWJfdmFsdWU6c3RhdGVzbGlzdFxuICAgIH5mb2xkOihmdW4gZiBhIHggLT5cbiAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbGlzdCAoaywgYSwgYiwgYykgLT4gZiBrIChhLCBiLCBjKSBsaXN0KSB4IGEpXG4gICAgKCpqc29uIC0+IGVsdCopXG4gICAgICAoZnVuIHNpdGUgLT4gSnNvblV0aWwub2Zfc3RyaW5nIHNpdGUpXG4gICAgKCpqc29uIC0+ICd2YWx1ZSopXG4gICAgKEpzb25VdGlsLm9mX3RyaXBsZSB+bGFiMTpwcm9wIH5sYWIyOmJpbmQgfmxhYjM6Y291bnRlclxuICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2Zfc3RyaW5nKVxuICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gYmluZGluZ19zdGF0ZV9saWdodF90b19qc29uKVxuICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gY291bnRlcl9zdGF0ZV9saWdodF90b19qc29uKSlcbiAgICBpbnRmXG5cbmxldCBpbnRlcmZhY2VfbGlnaHRfb2ZfanNvbiBqc29uID1cbiAgSnNvblV0aWwudG9fbWFwIH5sYWJfa2V5OnNpdGUgfmxhYl92YWx1ZTpzdGF0ZXNsaXN0IH5lcnJvcl9tc2c6aW50ZXJmYWNlXG4gICAgfmVtcHR5OltdXG4gICAgfmFkZDooZnVuIGsgKGEsIGIsIGMpIGxpc3QgLT4gKGssIGEsIGIsIGMpIDo6IGxpc3QpXG4gICAgKCpqc29uIC0+IGVsdCopXG4gICAgICAoZnVuIGpzb24gLT4gSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6c2l0ZSBqc29uKVxuICAgICgqanNvbiAtPiAndmFsdWUqKVxuICAgIChKc29uVXRpbC50b190cmlwbGUgfmxhYjE6cHJvcCB+bGFiMjpiaW5kIH5sYWIzOmNvdW50ZXJcbiAgICAgICB+ZXJyb3JfbXNnOlwid3JvbmcgYmluZGluZyBzdGF0ZVwiXG4gICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6cHJvcCkpXG4gICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiBiaW5kaW5nX3N0YXRlX2xpZ2h0X29mX2pzb24pXG4gICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiBjb3VudGVyX3N0YXRlX2xpZ2h0X29mX2pzb24pKVxuICAgIGpzb25cblxubGV0IGFnZW50X2dlbl9vZl9qc29uIGludGVyZmFjZV9vZl9qc29uID1cbiAgSnNvblV0aWwudG9fcGFpciB+bGFiMTphZ2VudCB+bGFiMjppbnRlcmZhY2UgfmVycm9yX21zZzpcImFnZW50XCJcbiAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJhZ2VudCBuYW1lXCIpXG4gICAgaW50ZXJmYWNlX29mX2pzb25cblxubGV0IHBvbHlfY29uc3RyYWludHNfbGlzdF9vZl9qc29uIHNpdGVfZ3JhcGhfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3RcbiAgICAoSnNvblV0aWwudG9fcGFpciB+ZXJyb3JfbXNnOlwiY29uc3RyYWludHMgbGlzdFwiIH5sYWIxOmRvbWFpbl9uYW1lXG4gICAgICAgfmxhYjI6cmVmaW5lbWVudHNfbGlzdFxuICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcImFic3RyYWN0IGRvbWFpblwiKVxuICAgICAgIChKc29uVXRpbC50b19saXN0IChsZW1tYV9vZl9qc29uIHNpdGVfZ3JhcGhfb2ZfanNvbikpKVxuXG5sZXQgbGVtbWFzX2xpc3Rfb2ZfanNvbl9nZW4gaW50ZXJmYWNlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIHJlZmluZW1lbnRfbGVtbWFzIGwgaW5cbiAgICAgICBwb2x5X2NvbnN0cmFpbnRzX2xpc3Rfb2ZfanNvblxuICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcInNpdGUgZ3JhcGhcIlxuICAgICAgICAgICAgKGFnZW50X2dlbl9vZl9qc29uIGludGVyZmFjZV9vZl9qc29uKSlcbiAgICAgICAgIGpzb25cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwicmVmaW5lbWVudCBsZW1tYXMgbGlzdFwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcInJlZmluZW1lbnQgbGVtbWFzIGxpc3RcIiwgeCkpXG5cbmxldCBsZW1tYXNfbGlzdF9vZl9qc29uIGpzb24gPVxuICBsZW1tYXNfbGlzdF9vZl9qc29uX2dlbiBpbnRlcmZhY2VfbGlnaHRfb2ZfanNvbiBqc29uXG5cbmxldCBhZ2VudF9nZW5fdG9fanNvbiBpbnRlcmZhY2VfdG9fanNvbiA9XG4gIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6YWdlbnQgfmxhYjI6aW50ZXJmYWNlIEpzb25VdGlsLm9mX3N0cmluZ1xuICAgIGludGVyZmFjZV90b19qc29uXG5cbmxldCBwb2x5X2NvbnN0cmFpbnRzX2xpc3RfdG9fanNvbiBzaXRlX2dyYXBoX3RvX2pzb24gY29uc3RyYWludHMgPVxuICBKc29uVXRpbC5vZl9saXN0XG4gICAgKEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6ZG9tYWluX25hbWUgfmxhYjI6cmVmaW5lbWVudHNfbGlzdFxuICAgICAgIEpzb25VdGlsLm9mX3N0cmluZ1xuICAgICAgIChKc29uVXRpbC5vZl9saXN0IChsZW1tYV90b19qc29uIHNpdGVfZ3JhcGhfdG9fanNvbikpKVxuICAgIGNvbnN0cmFpbnRzXG5cbmxldCBsZW1tYXNfbGlzdF90b19qc29uX2dlbiBpbnRlcmZhY2VfdG9fanNvbiBjb25zdHJhaW50cyA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggcmVmaW5lbWVudF9sZW1tYXMsXG4gICAgICAgIHBvbHlfY29uc3RyYWludHNfbGlzdF90b19qc29uXG4gICAgICAgICAgKEpzb25VdGlsLm9mX2xpc3QgKGFnZW50X2dlbl90b19qc29uIGludGVyZmFjZV90b19qc29uKSlcbiAgICAgICAgICBjb25zdHJhaW50cyApO1xuICAgIF1cblxubGV0IGxlbW1hc19saXN0X3RvX2pzb24gY29uc3RyYWludHMgPVxuICBsZW1tYXNfbGlzdF90b19qc29uX2dlbiBpbnRlcmZhY2VfbGlnaHRfdG9fanNvbiBjb25zdHJhaW50c1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IHJhd192ZXJzaW9uX3N0cmluZyA9IFwiJEZvcm1hdDolRCRcIlxuXG5sZXQgZXh0cmFjdF90YWdfcmUgPVxuICBSZS5jb21waWxlXG4gICAgKFJlLnNlcSBbIFJlLnN0ciBcInRhZzogXCI7IFJlLmdyb3VwIChSZS5yZXAgKFJlLmNvbXBsIFsgUmUuY2hhciAnLCcgXSkpIF0pXG5cbmxldCB2ZXJzaW9uX3N0cmluZyA9XG4gIG1hdGNoIFJlLmV4ZWNfb3B0IGV4dHJhY3RfdGFnX3JlIHJhd192ZXJzaW9uX3N0cmluZyB3aXRoXG4gIHwgU29tZSBnciAtPiBSZS5Hcm91cC5nZXQgZ3IgMVxuICB8IE5vbmUgLT4gR2l0X3ZlcnNpb24udFxuXG5sZXQgdmVyc2lvbl9tc2cgPSBcIkthcHBhIFNpbXVsYXRvcjogXCIgXiB2ZXJzaW9uX3N0cmluZ1xubGV0IHZlcnNpb25fa2FzYV9mdWxsX25hbWUgPSBcIkthcHBhIFN0YXRpYyBBbmFseXplciAoXCIgXiB2ZXJzaW9uX3N0cmluZyBeIFwiKVwiXG5sZXQgdmVyc2lvbl9rYWRlX2Z1bGxfbmFtZSA9IFwiS2FERSAoXCIgXiB2ZXJzaW9uX3N0cmluZyBeIFwiKVwiXG5sZXQgdGtfaXNfaW5pdGlhbGl6ZWQgPSByZWYgZmFsc2VcbiIsIigqIFNpbWlsYXIgdG8gT0NhbWwncyBzdGFuZGFyZCBBcmcgbW9kdWxlIGJ1dCB3aXRoIHNvbWUgaW1wcm92ZW1lbnRzOlxuICAgLSBvcHRpb25zIGFyZSBjbGFzc2lmaWVkIHdpdGggcmVzcGVjdCB0byBjYXRlZ29yaWVzXG4gICAtIG5lb3BoeXRlIC8gZXhwZXJ0IG1vZGVzXG4gICAtIGhpZGRlbiBvcHRpb25zXG5cbiAgIE5vdGUgdGhhdCB0aGUgc3BlYyB0eXBlIGlzIHJlYWxseSBkaWZmZXJlbnQuXG5cbiAgIENvcHlyaWdodCAoQykgQW50b2luZSBNaW5lJyAyMDA2XG4qKVxuXG5sZXQgZXhwZXJ0X21vZGUgPSByZWYgZmFsc2UgKCogc2hvd3MgZXhwZXJ0IG9wdGlvbnMgKilcbmxldCBkZXZfbW9kZSA9IHJlZiBmYWxzZSAoKiBhY2NlcHQgX0FMTF8gb3B0aW9ucyAqKVxuXG4oKiBUeXBlcyAqKVxuKCogKioqKiogKilcblxudHlwZSBrZXkgPSBzdHJpbmcgKCogY29tbWFuZC1saW5lIGFyZ3VtZW50ICopXG50eXBlIG1zZyA9IHN0cmluZyAoKiBoZWxwIG1lc3NhZ2UgKilcblxuKCogdHlwZSBvZiBvcHRpb24gKilcbnR5cGUgbGV2ZWwgPVxuICB8IE5vcm1hbCAoKiBhbHdheXMgc2hvd24gJiBhY2NlcHRlZCAqKVxuICB8IEV4cGVydCAoKiBzaG93biBpbiBleHBlcnQgb3IgZGV2ZWxvcHBlciBtb2RlLCBhbHdheXMgYWNjZXB0ZWQgKilcbiAgfCBEZXZlbG9wcGVyICgqIG9ubHkgc2hvd24gJiBhY2NlcHRlZCBpbiBkZXZlbG9wcGVyIG1vZGUgKilcbiAgfCBIaWRkZW4gKCogbmV2ZXIgc2hvd24gKilcblxubW9kdWxlIFN0cmluZ0ludCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgKiBpbnQgKiBsZXZlbCBvcHRpb25cblxuICBsZXQgY29tcGFyZSAoYSwgYiwgXykgKGMsIGQsIF8pID1cbiAgICBsZXQgY21wID0gY29tcGFyZSBiIGQgaW5cbiAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgIGNvbXBhcmUgYSBjXG4gICAgZWxzZVxuICAgICAgY21wXG5cbiAgbGV0IHByaW50IGZtdCAoYSwgYiwgXykgPSBGb3JtYXQuZnByaW50ZiBmbXQgXCIlczolaVwiIGEgYlxuZW5kXG5cbm1vZHVsZSBTdHJpbmdJbnRTZXRNYXAgPSBTZXRNYXAuTWFrZSAoU3RyaW5nSW50KVxubW9kdWxlIFN0cmluZ0ludE1hcCA9IFN0cmluZ0ludFNldE1hcC5NYXBcbm1vZHVsZSBTdHJpbmdJbnRTZXQgPSBTdHJpbmdJbnRTZXRNYXAuU2V0XG5tb2R1bGUgU3RyaW5nU2V0TWFwID0gTW9kcy5TdHJpbmdTZXRNYXBcbm1vZHVsZSBTdHJpbmdTZXQgPSBTdHJpbmdTZXRNYXAuU2V0XG5tb2R1bGUgU3RyaW5nTWFwID0gU3RyaW5nU2V0TWFwLk1hcFxuXG5sZXQgbWluX2xldmVsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IE5vcm1hbCwgXyB8IF8sIE5vcm1hbCAtPiBOb3JtYWxcbiAgfCBFeHBlcnQsIF8gfCBfLCBFeHBlcnQgLT4gRXhwZXJ0XG4gIHwgRGV2ZWxvcHBlciwgXyB8IF8sIERldmVsb3BwZXIgLT4gRGV2ZWxvcHBlclxuICB8IEhpZGRlbiwgSGlkZGVuIC0+IEhpZGRlblxuXG5sZXQgbWF4X2xldmVsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IEhpZGRlbiwgXyB8IF8sIEhpZGRlbiAtPiBIaWRkZW5cbiAgfCBEZXZlbG9wcGVyLCBfIHwgXywgRGV2ZWxvcHBlciAtPiBEZXZlbG9wcGVyXG4gIHwgRXhwZXJ0LCBfIHwgXywgRXhwZXJ0IC0+IEV4cGVydFxuICB8IE5vcm1hbCwgTm9ybWFsIC0+IE5vcm1hbFxuXG5sZXQgbWF4X2xldmVsX29wdCBhIGIgPVxuICBtYXRjaCBiIHdpdGhcbiAgfCBOb25lIC0+IGFcbiAgfCBTb21lIGIgLT4gbWF4X2xldmVsIGEgYlxuXG50eXBlIHBvc2l0aW9uID0gaW50XG50eXBlIGNhdGVnb3J5ID0gc3RyaW5nICogcG9zaXRpb24gKiBsZXZlbCBvcHRpb25cblxudHlwZSBzcGVjID1cbiAgfCBWb2lkICgqIFRvIHNraXAgYSBsaW5lICopXG4gIHwgQm9vbCBvZiBib29sIHJlZiAoKiBTZXRzIGEgYm9vbGVhbiB2YWx1ZSAqKVxuICB8IEludCBvZiBpbnQgcmVmICgqIFNldHMgYW4gaW50ZWdlciB2YWx1ZSAqKVxuICB8IEludF9vcHQgb2YgaW50IG9wdGlvbiByZWYgKCogU2V0cyBhbiBvcHRpb25hbCBpbnRlZ2VyIHZhbHVlICopXG4gIHwgU3RyaW5nIG9mIHN0cmluZyByZWYgKCogU2V0cyBhIHN0cmluZyB2YWx1ZSAqKVxuICB8IFN0cmluZ19vcHQgb2Ygc3RyaW5nIG9wdGlvbiByZWYgKCogU2V0cyBhbiBvcHRpb25hbCBzdHJpbmcgdmFsdWUgKilcbiAgfCBTdHJpbmdfbGlzdCBvZiBzdHJpbmcgbGlzdCByZWYgKCogU2V0cyBhIGxpc3Qgb2Ygc3RyaW5ncyAqKVxuICB8IFN0cmluZ05icl9saXN0IG9mXG4gICAgICAoc3RyaW5nICogc3RyaW5nKSBsaXN0IHJlZiAoKiBTZXRzIGEgbGlzdCBvZiBwYWlycyBvZiBzdHJpbmdzICopXG4gIHwgRmxvYXQgb2YgZmxvYXQgcmVmICgqIFNldHMgYSBmbG9hdCB2YWx1ZSAqKVxuICB8IEZsb2F0X29wdCBvZiBmbG9hdCBvcHRpb24gcmVmICgqIFNldHMgYW4gb3B0aW9uYWwgIGZsb2F0IHZhbHVlICopXG4gICgqIG9uZSBvciBzZXZlcmFsIG9wdGlvbnMgYW1vbmcgYSBsaXN0ICopXG4gIHwgQ2hvaWNlIG9mIChrZXkgKiBtc2cpIGxpc3QgKiBrZXkgbGlzdCAqIGtleSByZWZcbiAgfCBDaG9pY2VfbGlzdCBvZiAoa2V5ICogbXNnKSBsaXN0ICoga2V5IGxpc3QgcmVmXG4gICgqIG1ldGEtb3B0aW9ucyB0byBzZXQgc2V2ZXJhbCBvcHRpb25zIGF0IG9uY2U6XG4gICAgIC0gMXN0IG9wdGlvbiBsaXN0IGlzIGFwcGVuZGVkIGFzLWlzIHdoZW4gdGhlIG9wdGlvbiBpcyB1c2VkXG4gICAgIC0gd2hlbiAyLXN0IGxpc3QgaXMgbm90IGVtcHR5LCB0aGUgbWV0YSBvcHRpb24gdGFrZXMgYW4gYXJndW1lbnQgdGhhdFxuICAgICBpcyBwYXNzZWQgdG8gZWFjaCBvcHRpb24gaW4gdGhlIGxpc3RcbiAgICAgLSB0aGUga2V5cyBpbiBib3RoIGxpc3RzIG11c3QgYXBwZWFyIGFzIHJlZ3VsYXIgb3B0aW9ucyBhcyB3ZWxsIVxuICAqKVxuICB8IE11bHRpIG9mIGtleSBsaXN0ICoga2V5IGxpc3RcbiAgICAoKiBtZXRhLW9wdGlvbnMsIHRha2UgYSBsaXN0IG9mIChrLGV4dCk6a2V5KnN0cmluZyBhbmQgZ2l2ZSB0byB0aGUgb3B0aW9uIGsgdGhlIHBhcmFtZXRlciBzXmV4dCAqKVxuICB8IE11bHRpRXh0IG9mIChrZXkgKiBzdHJpbmcpIGxpc3RcblxudHlwZSB0ID0gKGtleSAqIHNwZWMgKiBtc2cgKiAoY2F0ZWdvcnkgKiBwb3NpdGlvbikgbGlzdCAqIGxldmVsKSBsaXN0XG5cbigqIFV0aWxpdGllcyAqKVxuKCogKioqKioqKioqICopXG5cbmxldCBzaG93X2xldmVsIChsdmwgOiBsZXZlbCkgOiBib29sID1cbiAgbWF0Y2ggbHZsIHdpdGhcbiAgfCBOb3JtYWwgLT4gdHJ1ZVxuICB8IEV4cGVydCAtPiAhZXhwZXJ0X21vZGVcbiAgfCBEZXZlbG9wcGVyIC0+ICFkZXZfbW9kZSAmJiAhZXhwZXJ0X21vZGVcbiAgfCBIaWRkZW4gLT4gZmFsc2VcblxubGV0IHNob3dfbGV2ZWxfb3B0IChsdmxfb3B0IDogbGV2ZWwgb3B0aW9uKSA6IGJvb2wgPVxuICBtYXRjaCBsdmxfb3B0IHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIGx2bCAtPiBzaG93X2xldmVsIGx2bFxuXG5sZXQgYWNjZXB0X2xldmVsX2Rpc3BsYXkgKGx2bCA6IGxldmVsKSA6IGJvb2wgPVxuICBtYXRjaCBsdmwgd2l0aFxuICB8IE5vcm1hbCB8IEV4cGVydCAtPiB0cnVlXG4gIHwgRGV2ZWxvcHBlciAtPiAhZGV2X21vZGVcbiAgfCBIaWRkZW4gLT4gZmFsc2VcblxubGV0IGFjY2VwdF9sZXZlbF91c2UgKGx2bCA6IGxldmVsKSA6IGJvb2wgPVxuICBtYXRjaCBsdmwgd2l0aFxuICB8IE5vcm1hbCB8IEV4cGVydCB8IEhpZGRlbiAtPiB0cnVlXG4gIHwgRGV2ZWxvcHBlciAtPiAhZGV2X21vZGVcblxubGV0IGlza2V5IChrIDoga2V5KSA9IFN0cmluZy5sZW5ndGggayA+IDIgJiYgay5bMF0gPSAnLScgJiYgay5bMV0gPSAnLSdcblxuKCogLS1YWFggPT4gLS1uby1YWFggKilcbmxldCBub2tleSAoayA6IGtleSkgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGsgPiAyICYmIGsuWzBdID0gJy0nICYmIGsuWzFdID0gJy0nIHRoZW5cbiAgICBcIi0tbm8tXCIgXiBTdHJpbmcuc3ViIGsgMiAoU3RyaW5nLmxlbmd0aCBrIC0gMilcbiAgZWxzZSBpZiBTdHJpbmcubGVuZ3RoIGsgPiAxICYmIGsuWzBdID0gJy0nIHRoZW5cbiAgICBcIi1uby1cIiBeIFN0cmluZy5zdWIgayAxIChTdHJpbmcubGVuZ3RoIGsgLSAxKVxuICBlbHNlXG4gICAgZmFpbHdpdGggKGsgXiBcIiBvcHRpb24gKG5vKSBkb2VzIG5vdCBiZWdpbiB3aXRoIC0tIG5vciAtXCIpXG5cbigqIC0tWFhYID0+IC0tKG5vLSlYWFggKilcbmxldCBhbHRrZXkgKGsgOiBrZXkpID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBrID4gMiAmJiBrLlswXSA9ICctJyAmJiBrLlsxXSA9ICctJyB0aGVuXG4gICAgXCItLShuby0pXCIgXiBTdHJpbmcuc3ViIGsgMiAoU3RyaW5nLmxlbmd0aCBrIC0gMilcbiAgZWxzZSBpZiBTdHJpbmcubGVuZ3RoIGsgPiAxICYmIGsuWzBdID0gJy0nIHRoZW5cbiAgICBcIi0obm8tKVwiIF4gU3RyaW5nLnN1YiBrIDEgKFN0cmluZy5sZW5ndGggayAtIDEpXG4gIGVsc2VcbiAgICBmYWlsd2l0aCAoayBeIFwiIG9wdGlvbiAoYWx0KSBkb2VzIG5vdCBiZWdpbiB3aXRoIC0tIG5vdCAtIFwiKVxuXG4oKiBjdXRzIGEgc3RyaW5nIGludG8gc3BhY2Utc2VwYXJhdGVkIHN1Yi1zdHJpbmdzICopXG5sZXQgY3V0X2xpc3QgKHMgOiBzdHJpbmcpIDogc3RyaW5nIGxpc3QgPVxuICBsZXQgcmVjIGRvaXQgYWNjdW0gcG9zID1cbiAgICB0cnlcbiAgICAgIGxldCBpID0gU3RyaW5nLmluZGV4X2Zyb20gcyBwb3MgJyAnIGluXG4gICAgICBpZiBpID0gcG9zIHRoZW5cbiAgICAgICAgZG9pdCBhY2N1bSAoaSArIDEpXG4gICAgICBlbHNlXG4gICAgICAgIGRvaXQgKFN0cmluZy5zdWIgcyBwb3MgKGkgLSBwb3MpIDo6IGFjY3VtKSAoaSArIDEpXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGlmIHBvcyA8IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgIFN0cmluZy5zdWIgcyBwb3MgKFN0cmluZy5sZW5ndGggcyAtIHBvcykgOjogYWNjdW1cbiAgICAgIGVsc2VcbiAgICAgICAgYWNjdW1cbiAgaW5cbiAgTGlzdC5yZXYgKGRvaXQgW10gMClcblxuKCogb3JkZXIgYnkgY2F0ZWdvcnkgKilcbmxldCBwIChfLCBfLCBfLCBsLCBfKSAoXywgXywgXywgbCcsIF8pID1cbiAgbWF0Y2ggbCwgbCcgd2l0aFxuICB8IFsgKF8sIGkpIF0sIFsgKF8sIGknKSBdIC0+IGNvbXBhcmUgaSBpJ1xuICB8IChbXSB8IF8gOjogXyA6OiBfKSwgXyB8IF8sIChbXSB8IF8gOjogXyA6OiBfKSAtPiBhc3NlcnQgZmFsc2VcblxubGV0IG9yZGVyIChhIDogdCkgPVxuICBsZXQgb3JkZXJlZCA9IHJlZiBTdHJpbmdJbnRNYXAuZW1wdHkgaW5cbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAoYSwgYiwgYywgY2F0LCBsdmwpIC0+XG4gICAgICBpZiBhY2NlcHRfbGV2ZWxfdXNlIGx2bCB0aGVuXG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gKGNhdCwgaSkgLT5cbiAgICAgICAgICAgIGxldCBhc3NvLCBvbGRfbHZsID1cbiAgICAgICAgICAgICAgU3RyaW5nSW50TWFwLmZpbmRfZGVmYXVsdCAoW10sIEhpZGRlbikgY2F0ICFvcmRlcmVkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgb3JkZXJlZCA6PVxuICAgICAgICAgICAgICBTdHJpbmdJbnRNYXAuYWRkIGNhdFxuICAgICAgICAgICAgICAgICgoYSwgYiwgYywgWyBjYXQsIGkgXSwgbHZsKSA6OiBhc3NvLCBtaW5fbGV2ZWwgbHZsIG9sZF9sdmwpXG4gICAgICAgICAgICAgICAgIW9yZGVyZWQpXG4gICAgICAgICAgY2F0KVxuICAgIGE7XG4gIG9yZGVyZWQgOj0gU3RyaW5nSW50TWFwLm1hcCAoZnVuIChhLCBiKSAtPiBMaXN0LnNvcnQgcCBhLCBiKSAhb3JkZXJlZDtcbiAgIW9yZGVyZWRcblxuKCogc2FuaXR5IGNoZWNraW5nICopXG5sZXQgY2hlY2sgKGEgOiB0KSA9XG4gICgqIGNoZWNrIGR1cGxpY2F0ZXMgJiBjb21wdXRlIG9wdGlvbiBsaXN0ICopXG4gIGxldCBvcHRzID0gcmVmIFN0cmluZ1NldC5lbXB0eSBpblxuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChrZXksIGIsIF8sIF8sIF8pIC0+XG4gICAgICBpZiBiID0gVm9pZCB0aGVuXG4gICAgICAgICgpXG4gICAgICBlbHNlIGlmIFN0cmluZ1NldC5tZW0ga2V5ICFvcHRzIHx8IFN0cmluZ1NldC5tZW0gKG5va2V5IGtleSkgIW9wdHMgdGhlblxuICAgICAgICBmYWlsd2l0aCAoXCJEdXBsaWNhdGUgb3B0aW9uIFwiIF4ga2V5KTtcbiAgICAgIG9wdHMgOj0gU3RyaW5nU2V0LmFkZCBrZXkgIW9wdHM7XG4gICAgICBvcHRzIDo9IFN0cmluZ1NldC5hZGQgKG5va2V5IGtleSkgIW9wdHMpXG4gICAgYTtcbiAgKCogY2hlY2sgc3ViLW9wdGlvbnMgaW4gTXVsaS1vcHRpb25zICopXG4gIExpc3QuaXRlclxuICAgIChmdW4gKGtleSwgdCwgXywgXywgXykgLT5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBNdWx0aSAoYSwgYikgLT5cbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIExpc3QuaXRlciAoZnVuIHMgLT5cbiAgICAgICAgICAgICAgaWYgaXNrZXkgcyAmJiBub3QgKFN0cmluZ1NldC5tZW0gcyAhb3B0cykgdGhlblxuICAgICAgICAgICAgICAgIGZhaWx3aXRoIChcIlVua25vd24gb3B0aW9uIFwiIF4gcyBeIFwiIGluIG11bHRpLW9wdGlvbiBcIiBeIGtleSkpXG4gICAgICAgIGluXG4gICAgICAgIGYgYTtcbiAgICAgICAgZiBiXG4gICAgICB8IFZvaWQgfCBJbnQgXyB8IEZsb2F0IF8gfCBDaG9pY2UgXyB8IEJvb2wgXyB8IEludF9vcHQgXyB8IFN0cmluZyBfXG4gICAgICB8IFN0cmluZ05icl9saXN0IF8gfCBTdHJpbmdfb3B0IF8gfCBTdHJpbmdfbGlzdCBfIHwgRmxvYXRfb3B0IF9cbiAgICAgIHwgQ2hvaWNlX2xpc3QgKF8sIF8pXG4gICAgICB8IE11bHRpRXh0IF8gLT5cbiAgICAgICAgKCkpXG4gICAgYVxuXG4oKiBDb21tYW5kLWxpbmUgaW50ZXJmYWNlICopXG4oKiAqKioqKioqKioqKioqKioqKioqKioqICopXG5cbigqIHByaW50cyBhIHN0cmluZyB3aXRoIGJyZWFrcyBpbnN0ZWFkIG9mIHNwYWNlICopXG5sZXQgcHJpbnRfbXNnIGYgKHMgOiBzdHJpbmcpID1cbiAgUHAubGlzdCBQcC5zcGFjZSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKGN1dF9saXN0IHMpXG5cbigqIGRvY3VtZW50IHRoZSBvcHRpb25zIG9uIHRoZSBzdGFuZGFyZCBvdXRwdXQhICopXG5sZXQgcHJpbnRfb3B0aW9uIHZlcmJvc2UgZiAoa2V5LCBzcGVjLCBtc2csIF9jYXQsIF9sdmwpID1cbiAgbGV0IGtleTIgPSBhbHRrZXkga2V5IGluXG4gIChtYXRjaCBzcGVjIHdpdGhcbiAgfCBCb29sIHIgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyAgICAoZGVmYXVsdDogJXMpQC5cIiBrZXkyXG4gICAgICAoaWYgIXIgdGhlblxuICAgICAgICAgXCJlbmFibGVkXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcImRpc2FibGVkXCIpXG4gIHwgVm9pZCAtPiAoKVxuICB8IEludCByIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxpbnQ+ICAgKGRlZmF1bHQ6ICVpKUAuXCIga2V5ICFyXG4gIHwgSW50X29wdCByIC0+XG4gICAgKG1hdGNoICFyIHdpdGhcbiAgICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPGludD4gICAoZGVmYXVsdDogZGlzYWJsZWQpQC5cIiBrZXkyXG4gICAgfCBTb21lIGkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPGludD4gICAoZGVmYXVsdDogJWkpQC5cIiBrZXkyIGkpXG4gIHwgU3RyaW5nIHIgLT5cbiAgICAobWF0Y2ggIXIgd2l0aFxuICAgIHwgXCJcIiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZT4gICAoZGVmYXVsdDogZGlzYWJsZWQpQC5cIiBrZXlcbiAgICB8IHMgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPG5hbWU+ICAgKGRlZmF1bHQ6ICVzKUAuXCIga2V5IHMpXG4gIHwgU3RyaW5nX29wdCByIC0+XG4gICAgKG1hdGNoICFyIHdpdGhcbiAgICB8IE5vbmUgfCBTb21lIFwiXCIgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxuYW1lPiAgIChkZWZhdWx0OiBkaXNhYmxlZClALlwiIGtleTJcbiAgICB8IFNvbWUgcyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZT4gICAoZGVmYXVsdCAlcylALlwiIGtleTIgcylcbiAgfCBTdHJpbmdfbGlzdCByIC0+XG4gICAgKG1hdGNoICFyIHdpdGhcbiAgICB8IFtdIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxuYW1lcz4gLi4uICAgKGRlZmF1bHQ6IGRpc2FibGVkKUAuXCIga2V5MlxuICAgIHwgbCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPG5hbWVzPiAuLi4gICAoZGVmYXVsdCAlYSlALlwiIGtleTJcbiAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgRm9ybWF0LnBwX3ByaW50X3N0cmluZylcbiAgICAgICAgbClcbiAgfCBTdHJpbmdOYnJfbGlzdCByIC0+XG4gICAgKG1hdGNoICFyIHdpdGhcbiAgICB8IFtdIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxuYW1lcz4gPC4uLiAgIChkZWZhdWx0OiBkaXNhYmxlZClALlwiIGtleTJcbiAgICB8IGwgLT5cbiAgICAgIGxldCByZWMgYXV4IGxpc3QgPVxuICAgICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgfCAoaDEsIGgyKSA6OiB0YWlsIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxuYW1lcz4gPHZhbHVlPiAoZGVmYXVsdCAlcyAlcylcIiBrZXkyIGgxIGgyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggdGFpbFxuICAgICAgICB8IFtdIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJALlwiXG4gICAgICBpblxuICAgICAgYXV4IGwpXG4gIHwgRmxvYXQgciAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8ZmxvYXQ+ICAgKGRlZmF1bHQgJWYpQC5cIiBrZXkgIXJcbiAgfCBGbG9hdF9vcHQgciAtPlxuICAgIChtYXRjaCAhciB3aXRoXG4gICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxmbG9hdD4gICAoZGVmYXVsdDogZGlzYWJsZWQpQC5cIiBrZXkyXG4gICAgfCBTb21lIHYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPGZsb2F0PiAgIChkZWZhdWx0OiAlZilALlwiIGtleTIgdilcbiAgfCBDaG9pY2UgKGwsIF8sIHIpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgQFslYUBdIEAgIChkZWZhdWx0OiAlcylALlwiIGtleVxuICAgICAgKFBwLmxpc3RcbiAgICAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiIHxAIFwiKVxuICAgICAgICAgKGZ1biBmIChrZXksIF9tc2cpIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBrZXkpKVxuICAgICAgbCAhclxuICB8IENob2ljZV9saXN0IChsLCByKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIEBbJWFAXUAuXCIga2V5MlxuICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIChrZXksIF9tc2cpIC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbJXMlc11cIiBrZXlcbiAgICAgICAgICAgICAoaWYgTGlzdC5tZW0ga2V5ICFyIHRoZW5cbiAgICAgICAgICAgICAgICBcIiAoZGVmYXVsdClcIlxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgXCJcIikpKVxuICAgICAgbFxuICB8IE11bHRpIChfLCBbXSkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXNALlwiIGtleVxuICB8IE11bHRpIF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPHZhbHVlPkAuXCIga2V5XG4gIHwgTXVsdGlFeHQgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8dmFsdWU+QC5cIiBrZXkpO1xuXG4gICgqIHNob3dzIGRlc2NyaXB0aW9uIGlmIGluIHZlcmJvc2UgbW9kZSAqKVxuICBpZiB2ZXJib3NlICYmIG1zZyA8PiBcIlwiIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIiAgICAgIEBbJWFAXUAuXCIgcHJpbnRfbXNnIG1zZ1xuXG5sZXQgcHJpbnRfaGVscCAoaGVhZGVyIDogYm9vbCkgKHZlcmJvc2UgOiBib29sKSBmIChhIDogdCkgPVxuICBsZXQgbmIgPSByZWYgMCBpblxuXG4gICgqIGdlbmVyYWwgb3B0aW9ucyAqKVxuICBpZiBoZWFkZXIgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiQC5HZW5lcmFsIG9wdGlvbnNALlwiO1xuICBGb3JtYXQuZnByaW50ZiBmIFwiICAtLWhlbHAgICAgICAgICAgICBWZXJib3NlIGhlbHBALlwiO1xuICBpbmNyIG5iO1xuICBGb3JtYXQuZnByaW50ZiBmIFwiICAgLWggICAgICAgICAgICAgICBTaG9ydCBoZWxwQC5cIjtcbiAgaW5jciBuYjtcbiAgRm9ybWF0LmZwcmludGYgZiBcIiAgLS12ZXJzaW9uICAgICAgICAgU2hvdyB2ZXJzaW9uIG51bWJlckAuXCI7XG4gIGluY3IgbmI7XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIgIC0tZ3VpICAgICAgICAgICAgIEdVSSB0byBzZWxlY3RALlwiO1xuICBpbmNyIG5iO1xuICBGb3JtYXQuZnByaW50ZiBmIFwiICAtLShuby0pZXhwZXJ0ICAgICBFeHBlcnQgbW9kZSAobW9yZSBvcHRpb25zKUAuXCI7XG4gIGluY3IgbmI7XG4gIGlmIHZlcmJvc2UgJiYgaGVhZGVyIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIkAuXCI7XG5cbiAgKCogZHVtcCAqKVxuICBTdHJpbmdJbnRNYXAuaXRlclxuICAgIChmdW4gKGNhdCwgXywgbHZsX29wdCkgKGwsIGx2bCkgLT5cbiAgICAgIGlmIHNob3dfbGV2ZWxfb3B0IGx2bF9vcHQgJiYgc2hvd19sZXZlbCBsdmwgdGhlbiAoXG4gICAgICAgIGlmIGhlYWRlciB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCIlc0AuXCIgY2F0O1xuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuICgoXywgXywgXywgXywgbHZsKSBhcyB4KSAtPlxuICAgICAgICAgICAgaWYgc2hvd19sZXZlbCBsdmwgdGhlbiAoXG4gICAgICAgICAgICAgIGluY3IgbmI7XG4gICAgICAgICAgICAgIHByaW50X29wdGlvbiB2ZXJib3NlIGYgeFxuICAgICAgICAgICAgKSlcbiAgICAgICAgICBsO1xuICAgICAgICBpZiBoZWFkZXIgJiYgdmVyYm9zZSB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCJALlwiXG4gICAgICApKVxuICAgIChvcmRlciBhKTtcblxuICBGb3JtYXQuZnByaW50ZiBmIFwiKCVpIG9wdGlvbnMpQC5cIiAhbmJcblxuKCogcGFyc2UgdGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMsIGdpdmVuIGFzIGEgbGlzdCBvZiBzdHJpbmdzLFxuICAgcmV0dXJucyB0aGUgbGlzdCBvZiBub24tb3B0aW9ucyAoZmlsZW5hbWVzKSBpbiByZXZlcnNlIG9yZGVyKVxuKilcbmxldCBwYXJzZV9saXN0IH53aXRoX3RrID90aXRsZSAoYSA6IHQpIChsIDogc3RyaW5nIGxpc3QpIDogc3RyaW5nIGxpc3QgPVxuICBsZXQgbG9uZ19oZWxwID0gcmVmIGZhbHNlXG4gIGFuZCBzaG9ydF9oZWxwID0gcmVmIGZhbHNlXG4gIGFuZCBzaG93X3ZlcnNpb24gPSByZWYgZmFsc2UgaW5cblxuICBsZXQgcmVjIGRvaXQgYWNjdW0gPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdW1cbiAgICB8IG9wdCA6OiByZW0gLT5cbiAgICAgICgqIC0gbWVhbnMgbm8gbW9yZSBvcHRpb25zOiB0aGUgcmVzdCBhcmUgZmlsZW5hbWVzICopXG4gICAgICBpZiBvcHQgPSBcIi1cIiB0aGVuXG4gICAgICAgIExpc3QucmV2X2FwcGVuZCByZW0gYWNjdW1cbiAgICAgICgqIGhlbHAgb3B0aW9ucyAqKVxuICAgICAgZWxzZSBpZiBvcHQgPSBcIi1oZWxwXCIgfHwgb3B0ID0gXCItLWhlbHBcIiB0aGVuIChcbiAgICAgICAgbG9uZ19oZWxwIDo9IHRydWU7XG4gICAgICAgIGRvaXQgYWNjdW0gcmVtXG4gICAgICApIGVsc2UgaWYgb3B0ID0gXCItaFwiIHRoZW4gKFxuICAgICAgICAoKiBzaG9ydGVyIGxpc3QgKilcbiAgICAgICAgc2hvcnRfaGVscCA6PSB0cnVlO1xuICAgICAgICBkb2l0IGFjY3VtIHJlbSAoKiB2ZXJzaW9uIG51bWJlciAqKVxuICAgICAgKSBlbHNlIGlmIG9wdCA9IFwiLS12ZXJzaW9uXCIgdGhlbiAoXG4gICAgICAgIHNob3dfdmVyc2lvbiA6PSB0cnVlO1xuICAgICAgICBkb2l0IGFjY3VtIHJlbSAoKiBleHBlcnQgKilcbiAgICAgICkgZWxzZSBpZiBvcHQgPSBcIi0tZXhwZXJ0XCIgdGhlbiAoXG4gICAgICAgIGV4cGVydF9tb2RlIDo9IHRydWU7XG4gICAgICAgIGRvaXQgYWNjdW0gcmVtXG4gICAgICApIGVsc2UgaWYgb3B0ID0gXCItLW5vLWV4cGVydFwiIHRoZW4gKFxuICAgICAgICBleHBlcnRfbW9kZSA6PSBmYWxzZTtcbiAgICAgICAgZG9pdCBhY2N1bSByZW0gKCogcmVndWxhciBvcHRpb24sIHN0YXJ0aW5nIHdpdGggXCItXCIgKilcbiAgICAgICkgZWxzZSBpZiBTdHJpbmcubGVuZ3RoIG9wdCA+IDEgJiYgb3B0LlswXSA9ICctJyB0aGVuIChcbiAgICAgICAgbGV0ICgoa2V5LCBzcGVjLCBfLCBfLCBfKSBhcyBhYSkgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgTGlzdC5maW5kXG4gICAgICAgICAgICAgIChmdW4gKGtleSwgX3NwZWMsIF9tc2csIF9jYXQsIGx2bCkgLT5cbiAgICAgICAgICAgICAgICBhY2NlcHRfbGV2ZWxfdXNlIGx2bCAmJiAob3B0ID0ga2V5IHx8IG9wdCA9IG5va2V5IGtleSkpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgRm9ybWF0LnByaW50ZlxuICAgICAgICAgICAgICBcIkhlcmUgaXMgdGhlIGxpc3Qgb2YgcmVjb2duaXplZCBvcHRpb25zQC4lYUAuVW5yZWNvZ25pemVkIFxcXG4gICAgICAgICAgICAgICBvcHRpb246ICVzQC5ALlwiXG4gICAgICAgICAgICAgIChwcmludF9oZWxwIHRydWUgZmFsc2UpIGEgb3B0O1xuICAgICAgICAgICAgZmFpbHdpdGggXCJiYWQgb3B0aW9uXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlbSA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBtYXRjaCBzcGVjLCByZW0gd2l0aFxuICAgICAgICAgICAgfCBCb29sIHIsIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IG9wdCA9IGtleTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEludCByLCBcIlwiIDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IDA7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBJbnQgciwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSBpbnRfb2Zfc3RyaW5nIHY7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBJbnRfb3B0IHIsIFwiXCIgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gTm9uZTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEludF9vcHQgciwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSBTb21lIChpbnRfb2Zfc3RyaW5nIHYpO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgSW50X29wdCByLCByZW0gLT5cbiAgICAgICAgICAgICAgciA6PSBOb25lO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nIHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gdjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZyByLCByZW0gLT5cbiAgICAgICAgICAgICAgciA6PSBcIlwiO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nX29wdCByLCBcIlwiIDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IE5vbmU7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdfb3B0IHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gU29tZSB2O1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nX29wdCByLCByZW0gLT5cbiAgICAgICAgICAgICAgciA6PSBOb25lO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nX2xpc3QgXywgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT4gcmVtXG4gICAgICAgICAgICB8IFN0cmluZ19saXN0IHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gdiA6OiAhcjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ19saXN0IHIsIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IFtdO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nTmJyX2xpc3QgXywgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT4gcmVtXG4gICAgICAgICAgICB8IFN0cmluZ05icl9saXN0IF8sIFsgXyBdIHdoZW4gb3B0ID0ga2V5IC0+IGZhaWx3aXRoIFwiaW52YWxpZCBwYWlyXCJcbiAgICAgICAgICAgIHwgU3RyaW5nTmJyX2xpc3QgciwgdicgOjogdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSAodiwgdicpIDo6ICFyO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nTmJyX2xpc3QgciwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gW107XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBGbG9hdCByLCBcIlwiIDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IDAuO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgRmxvYXQgciwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSBmbG9hdF9vZl9zdHJpbmcgdjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEZsb2F0X29wdCByLCBcIlwiIDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IE5vbmU7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBGbG9hdF9vcHQgciwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSBTb21lIChmbG9hdF9vZl9zdHJpbmcgdik7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBGbG9hdF9vcHQgciwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gTm9uZTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IENob2ljZSAobCwgbCcsIHIpLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgIChub3QgKExpc3QuZXhpc3RzIChmdW4gKGssIF8pIC0+IHYgPSBrKSBsKSlcbiAgICAgICAgICAgICAgICAmJiBub3QgKExpc3QuZXhpc3RzIChmdW4gayAtPiB2ID0gaykgbCcpXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBmYWlsd2l0aCBcImludmFsaWQgY2hvaWNlXCI7XG4gICAgICAgICAgICAgIHIgOj0gdjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IENob2ljZV9saXN0IChsLCByKSwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgaWYgbm90IChMaXN0LmV4aXN0cyAoZnVuIChrLCBfKSAtPiB2ID0gaykgbCkgdGhlblxuICAgICAgICAgICAgICAgIGZhaWx3aXRoIFwiaW52YWxpZCBjaG9pY2VcIjtcbiAgICAgICAgICAgICAgciA6PSB2IDo6ICFyO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgQ2hvaWNlX2xpc3QgKF9sLCByKSwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gW107XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBNdWx0aSAoeCwgW10pLCByZW0gLT5cbiAgICAgICAgICAgICAgaWdub3JlIChkb2l0IFtdIHgpO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgTXVsdGkgKHgsIHkpLCB2IDo6IHJlbSAtPlxuICAgICAgICAgICAgICBpZ25vcmUgKGRvaXQgW10geCk7XG4gICAgICAgICAgICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnQgKGZ1biBfIGwgLT4gZG9pdCBbXSBbIGw7IHYgXSkgYWNjdW0geSk7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBNdWx0aUV4dCBsLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBfIChsLCBzKSAtPiBkb2l0IFtdIFsgbDsgdiBeIHMgXSkgYWNjdW0gbCk7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBNdWx0aUV4dCBsLCByZW0gLT5cbiAgICAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgKGZ1biBfIChsLCBzKSAtPiBkb2l0IFtdIFsgbm9rZXkgbDsgcyBdKVxuICAgICAgICAgICAgICAgICAgIGFjY3VtIGwpO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgTXVsdGkgXywgW10gfCAoVm9pZCB8IEludCBfIHwgRmxvYXQgXyB8IENob2ljZSBfKSwgXyAtPlxuICAgICAgICAgICAgICBmYWlsd2l0aCBcImludmFsaWQgb3B0aW9uIG9yIGFyZ3VtZW50XCJcbiAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgIEZvcm1hdC5wcmludGYgXCJXcm9uZyBvcHRpb24gb3IgYXJndW1lbnQgZm9yICVzQC4lYVwiIG9wdFxuICAgICAgICAgICAgICAocHJpbnRfb3B0aW9uIGZhbHNlKSBhYTtcbiAgICAgICAgICAgIGZhaWx3aXRoIFwiYmFkIG9wdGlvblwiXG4gICAgICAgIGluXG4gICAgICAgIGRvaXQgYWNjdW0gcmVtXG4gICAgICAgICgqIGRvZXMgbm90IHN0YXJ0IHdpdGggLSA9PiB0aGlzIGlzIGZpbGVuYW1lICopXG4gICAgICApIGVsc2VcbiAgICAgICAgZG9pdCAob3B0IDo6IGFjY3VtKSByZW1cbiAgaW5cblxuICBsZXQgZmlsZW5hbWVzID0gZG9pdCBbXSBsIGluXG4gIGlmICFzaG93X3ZlcnNpb24gdGhlbiAoXG4gICAgRm9ybWF0LnByaW50ZiBcIiVzIEAuKHdpdGglcyBUayBpbnRlcmZhY2UpQC5cIlxuICAgICAgKG1hdGNoIHRpdGxlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBWZXJzaW9uLnZlcnNpb25fa2FzYV9mdWxsX25hbWVcbiAgICAgIHwgU29tZSB4IC0+IHgpXG4gICAgICAoaWYgd2l0aF90ayB0aGVuXG4gICAgICAgICBcIlwiXG4gICAgICAgZWxzZVxuICAgICAgICAgXCJvdXRcIik7XG4gICAgZXhpdCAwXG4gICkgZWxzZSBpZiAhbG9uZ19oZWxwIHRoZW4gKFxuICAgIEZvcm1hdC5wcmludGYgXCIlYVwiIChwcmludF9oZWxwIHRydWUgdHJ1ZSkgYTtcbiAgICBleGl0IDBcbiAgKSBlbHNlIGlmICFzaG9ydF9oZWxwIHRoZW4gKFxuICAgIEZvcm1hdC5wcmludGYgXCIlYVwiIChwcmludF9oZWxwIHRydWUgZmFsc2UpIGE7XG4gICAgZXhpdCAwXG4gICk7XG4gICgqIExpc3QuY29uY2F0KikgZmlsZW5hbWVzICgqKExpc3QubWFwIFdvcmRleHAud29yZGV4cCBmaWxlbmFtZXMpKilcbiIsIigqIExhYmxUSyBHVUkgZm9yIG9wdGlvbiBzZWxlY3Rpb24gU3VwZXJhcmcuXG5cbiAgIENvcHlyaWdodCAoQykgQW50b2luZSBNaW5lJyAyMDA2XG4gICBMaWdodCBWZXJzaW9uIChKZXJvbWUgRmVyZXQpXG4gICBUaGlzIExJR0hUIHZlcnNpb24gZG9lcyBub3QgcmVxdWlyZSBsYWJsdGtcbiopXG5cbmV4Y2VwdGlvbiBFeGl0IG9mIHN0cmluZyBsaXN0XG5cbigqIE1BSU4gKilcbigqICoqKiogKilcblxubGV0IHBhcnNlID90aXRsZSAoYSA6IFN1cGVyYXJnLnQpIChkZWYgOiBzdHJpbmcgbGlzdCByZWYpID1cbiAgU3VwZXJhcmcuY2hlY2sgYTtcbiAgKCogZHJvcCB0aGUgZmlyc3QgY29tbWFuZC1saW5lIGFyZ3VtZW50OiBpdCBpcyB0aGUgZXhlY3V0YWJsZSBuYW1lICopXG4gIGxldCBhcmdzID0gTGlzdC50bCAoQXJyYXkudG9fbGlzdCBTeXMuYXJndikgaW5cbiAgKCogaWYgbm8gYXJndW1lbnQgb3IgXCItLWd1aVwiIGdpdmVuLCBsYXVuY2ggdGhlIGd1aSwgb3RoZXJ3aXNlLCBwYXJzZSBhcmdzICopXG4gIGxldCByZW0gPVxuICAgIGlmXG4gICAgICBhcmdzID0gW10gfHwgYXJncyA9IFsgXCItLWV4cGVydFwiIF0gfHwgYXJncyA9IFsgXCItLW5vLWV4cGVydFwiIF1cbiAgICAgIHx8IExpc3QuZXhpc3RzICgoID0gKSBcIi0tZ3VpXCIpIGFyZ3NcbiAgICB0aGVuXG4gICAgICBTdXBlcmFyZy5wYXJzZV9saXN0IH53aXRoX3RrOmZhbHNlID90aXRsZSBhXG4gICAgICAgIChpZiBMaXN0LmV4aXN0cyAoKCA9ICkgXCItLWV4cGVydFwiKSBhcmdzIHRoZW5cbiAgICAgICAgICAgWyBcIi0taGVscFwiOyBcIi0tZXhwZXJ0XCIgXVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBbIFwiLS1oZWxwXCIgXSlcbiAgICBlbHNlXG4gICAgICBTdXBlcmFyZy5wYXJzZV9saXN0IH53aXRoX3RrOmZhbHNlID90aXRsZSBhIGFyZ3NcbiAgaW5cbiAgaWYgcmVtIDw+IFtdIHRoZW4gZGVmIDo9IHJlbVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGRhdGFfc2V0ID0gXCJEYXRhIHNldFwiLCAwLCBOb25lXG5sZXQgb3V0cHV0ID0gXCJPdXRwdXRcIiwgMSwgTm9uZVxubGV0IHNlbWFudGljcyA9IFwiU2VtYW50aWNzXCIsIDIsIE5vbmVcbmxldCBpbnRlZ3JhdGlvbl9zZXR0aW5ncyA9IFwiSW50ZWdyYXRpb24gc2V0dGluZ3NcIiwgMywgTm9uZVxubGV0IG1vZGVsX3JlZHVjdGlvbiA9IFwiTW9kZWwgcmVkdWN0aW9uXCIsIDQsIE5vbmVcbmxldCBzdGF0aWNfYW5hbHlzaXMgPSBcIlN0YXRpYyBhbmFseXNpc1wiLCA1LCBTb21lIFN1cGVyYXJnLkV4cGVydFxubGV0IGRlYnVnX21vZGUgPSBcIkRlYnVnIG1vZGVcIiwgNiwgU29tZSBTdXBlcmFyZy5FeHBlcnRcblxudHlwZSB0ID0geyBtdXRhYmxlIGJhY2t0cmFjZTogYm9vbDsgbXV0YWJsZSBkZWJ1ZzogYm9vbCB9XG5cbnR5cGUgdF9ndWkgPSB7XG4gIGJhY2t0cmFjZV9ndWk6IGJvb2wgcmVmO1xuICBkZWJ1Z19ndWk6IGJvb2wgcmVmO1xuICB2ZXJzaW9uX2d1aTogYm9vbCByZWY7XG4gIGdsdXR0b255X2d1aTogYm9vbCByZWY7XG59XG5cbmxldCBkZWZhdWx0IDogdCA9IHsgYmFja3RyYWNlID0gZmFsc2U7IGRlYnVnID0gZmFsc2UgfVxuXG5sZXQgZGVmYXVsdF9ndWkgPVxuICB7XG4gICAgYmFja3RyYWNlX2d1aSA9IHJlZiBmYWxzZTtcbiAgICBkZWJ1Z19ndWkgPSByZWYgZmFsc2U7XG4gICAgdmVyc2lvbl9ndWkgPSByZWYgZmFsc2U7XG4gICAgZ2x1dHRvbnlfZ3VpID0gcmVmIGZhbHNlO1xuICB9XG5cbmxldCBkb192ZXJzaW9uICgpID1cbiAgRm9ybWF0LnByaW50X3N0cmluZyBWZXJzaW9uLnZlcnNpb25fbXNnO1xuICBGb3JtYXQucHJpbnRfbmV3bGluZSAoKTtcbiAgZXhpdCAwXG5cbmxldCBkb19nbHV0dG9ueSAoKSA9XG4gIEdjLnNldCB7IChHYy5nZXQgKCkpIHdpdGggR2Muc3BhY2Vfb3ZlcmhlYWQgPSA1MDAgKCpkZWZhdWx0IDgwKikgfVxuXG5sZXQgZ2V0X2Zyb21fZ3VpIHRfZ3VpID1cbiAgbGV0ICgpID0gaWYgISh0X2d1aS52ZXJzaW9uX2d1aSkgdGhlbiBkb192ZXJzaW9uICgpIGluXG4gIGxldCAoKSA9IGlmICEodF9ndWkuZ2x1dHRvbnlfZ3VpKSB0aGVuIGRvX2dsdXR0b255ICgpIGluXG4gIHsgYmFja3RyYWNlID0gISh0X2d1aS5iYWNrdHJhY2VfZ3VpKTsgZGVidWcgPSAhKHRfZ3VpLmRlYnVnX2d1aSkgfVxuXG5sZXQgY29weV9mcm9tX2d1aSB0X2d1aSB0ID1cbiAgbGV0IHRfdG1wID0gZ2V0X2Zyb21fZ3VpIHRfZ3VpIGluXG4gIHQuYmFja3RyYWNlIDwtIHRfdG1wLmJhY2t0cmFjZTtcbiAgdC5kZWJ1ZyA8LSB0X3RtcC5kZWJ1Z1xuXG5sZXQgb3B0aW9uc19nZW4gdCB0X2d1aSA6XG4gICAgKHN0cmluZ1xuICAgICogQXJnLnNwZWNcbiAgICAqIFN1cGVyYXJnLnNwZWNcbiAgICAqIHN0cmluZ1xuICAgICogKFN1cGVyYXJnLmNhdGVnb3J5ICogU3VwZXJhcmcucG9zaXRpb24pIGxpc3RcbiAgICAqIFN1cGVyYXJnLmxldmVsKVxuICAgIGxpc3QgPVxuICBbXG4gICAgKCBcIi0tdmVyc2lvblwiLFxuICAgICAgQXJnLlVuaXQgZG9fdmVyc2lvbixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdF9ndWkudmVyc2lvbl9ndWksXG4gICAgICBcImRpc3BsYXkgdmVyc2lvbiBudW1iZXJcIixcbiAgICAgIFtdLFxuICAgICAgU3VwZXJhcmcuSGlkZGVuICk7XG4gICAgKCBcIi0tZGVidWdcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gdC5kZWJ1ZyA8LSB0cnVlKSxcbiAgICAgIFN1cGVyYXJnLkJvb2wgdF9ndWkuZGVidWdfZ3VpLFxuICAgICAgXCJFbmFibGUgZGVidWcgbW9kZVwiLFxuICAgICAgWyBkZWJ1Z19tb2RlLCAxIF0sXG4gICAgICBTdXBlcmFyZy5FeHBlcnQgKTtcbiAgICAoIFwiLS1iYWNrdHJhY2VcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gdC5iYWNrdHJhY2UgPC0gdHJ1ZSksXG4gICAgICBTdXBlcmFyZy5Cb29sIHRfZ3VpLmJhY2t0cmFjZV9ndWksXG4gICAgICBcIkJhY2t0cmFjaW5nIGV4Y2VwdGlvbnNcIixcbiAgICAgIFsgZGVidWdfbW9kZSwgMiBdLFxuICAgICAgU3VwZXJhcmcuRXhwZXJ0ICk7XG4gICAgKCBcIi0tZ2x1dHRvbnlcIixcbiAgICAgIEFyZy5Vbml0IGRvX2dsdXR0b255LFxuICAgICAgU3VwZXJhcmcuQm9vbCB0X2d1aS5nbHV0dG9ueV9ndWksXG4gICAgICBcIkxvd2VyIGdjIGFjdGl2aXR5IGZvciBhIGZhc3RlciBidXQgbWVtb3J5IGludGVuc2l2ZSBzaW11bGF0aW9uXCIsXG4gICAgICBbIGRlYnVnX21vZGUsIDMgXSxcbiAgICAgIFN1cGVyYXJnLkV4cGVydCApO1xuICBdXG5cbmxldCBvcHRpb25zIHQgPVxuICBMaXN0LnJldl9tYXBcbiAgICAoZnVuIChhLCBiLCBfLCBjLCBfLCBfKSAtPiBhLCBiLCBjKVxuICAgIChMaXN0LnJldiAob3B0aW9uc19nZW4gdCBkZWZhdWx0X2d1aSkpXG5cbmxldCBvcHRpb25zX2d1aSB0X2d1aSA9XG4gIExpc3QucmV2X21hcFxuICAgIChmdW4gKGEsIF8sIGIsIGMsIGQsIGUpIC0+IGEsIGIsIGMsIGQsIGUpXG4gICAgKExpc3QucmV2IChvcHRpb25zX2dlbiBkZWZhdWx0IHRfZ3VpKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHtcbiAgbXV0YWJsZSBpbnB1dEthcHBhRmlsZU5hbWVzOiBzdHJpbmcgbGlzdDtcbiAgbXV0YWJsZSBtaW5WYWx1ZTogZmxvYXQgb3B0aW9uO1xuICBtdXRhYmxlIG1heFZhbHVlOiBmbG9hdCBvcHRpb247XG4gIG11dGFibGUgcGxvdFBlcmlvZDogZmxvYXQgb3B0aW9uO1xuICBtdXRhYmxlIG91dHB1dERhdGFGaWxlOiBzdHJpbmcgb3B0aW9uO1xuICBtdXRhYmxlIG91dHB1dERpcmVjdG9yeTogc3RyaW5nO1xuICBtdXRhYmxlIGJhdGNobW9kZTogYm9vbDtcbiAgbXV0YWJsZSBpbnRlcmFjdGl2ZTogYm9vbDtcbiAgbXV0YWJsZSBzeW50YXhWZXJzaW9uOiBBc3Quc3ludGF4X3ZlcnNpb247XG59XG5cbnR5cGUgdF9ndWkgPSB7XG4gIGlucHV0S2FwcGFGaWxlTmFtZXNfZ3VpOiBzdHJpbmcgbGlzdCByZWY7XG4gIG1pblZhbHVlX2d1aTogZmxvYXQgb3B0aW9uIHJlZjtcbiAgbWF4VmFsdWVfZ3VpOiBmbG9hdCBvcHRpb24gcmVmO1xuICBwbG90UGVyaW9kX2d1aTogZmxvYXQgb3B0aW9uIHJlZjtcbiAgb3V0cHV0RGF0YUZpbGVfZ3VpOiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgb3V0cHV0RGlyZWN0b3J5X2d1aTogc3RyaW5nIHJlZjtcbiAgc3ludGF4VmVyc2lvbl9ndWk6IHN0cmluZyByZWY7XG4gIGJhdGNobW9kZV9ndWk6IHN0cmluZyByZWY7XG59XG5cbmxldCBkZWZhdWx0IDogdCA9XG4gIHtcbiAgICBpbnB1dEthcHBhRmlsZU5hbWVzID0gW107XG4gICAgbWluVmFsdWUgPSBOb25lO1xuICAgIG1heFZhbHVlID0gTm9uZTtcbiAgICBwbG90UGVyaW9kID0gTm9uZTtcbiAgICBvdXRwdXREYXRhRmlsZSA9IE5vbmU7XG4gICAgb3V0cHV0RGlyZWN0b3J5ID0gXCIuXCI7XG4gICAgc3ludGF4VmVyc2lvbiA9IEFzdC5WNDtcbiAgICBiYXRjaG1vZGUgPSBmYWxzZTtcbiAgICBpbnRlcmFjdGl2ZSA9IGZhbHNlO1xuICB9XG5cbmxldCBkZWZhdWx0X2d1aSA9XG4gIHtcbiAgICBpbnB1dEthcHBhRmlsZU5hbWVzX2d1aSA9IHJlZiBbXTtcbiAgICBtaW5WYWx1ZV9ndWkgPSByZWYgKFNvbWUgMC4pO1xuICAgIG1heFZhbHVlX2d1aSA9IHJlZiAoU29tZSAxLik7XG4gICAgcGxvdFBlcmlvZF9ndWkgPSByZWYgKFNvbWUgMC4wMSk7XG4gICAgb3V0cHV0RGF0YUZpbGVfZ3VpID0gcmVmIChTb21lIFwiZGF0YS5jc3ZcIik7XG4gICAgb3V0cHV0RGlyZWN0b3J5X2d1aSA9IHJlZiBcIi5cIjtcbiAgICBzeW50YXhWZXJzaW9uX2d1aSA9IHJlZiBcIjRcIjtcbiAgICBiYXRjaG1vZGVfZ3VpID0gcmVmIFwiaW50ZXJhY3RpdmVcIjtcbiAgfVxuXG5sZXQgcmVjIGF1eCBsIGFjY3UgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCAodiwgdmFyX3ZhbCkgOjogdGFpbCAtPlxuICAgIGF1eCB0YWlsXG4gICAgICAoKCB2LFxuICAgICAgICAgdHJ5IE5ici5vZl9zdHJpbmcgdmFyX3ZhbFxuICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgcmFpc2UgKEFyZy5CYWQgKFwiXFxcIlwiIF4gdmFyX3ZhbCBeIFwiXFxcIiBpcyBub3QgYSB2YWxpZCB2YWx1ZVwiKSkgKVxuICAgICAgOjogYWNjdSlcbiAgfCBbXSAtPiBhY2N1XG5cbmxldCBnZXRfZnJvbV9ndWkgdF9ndWkgPVxuICB7XG4gICAgbWluVmFsdWUgPSAhKHRfZ3VpLm1pblZhbHVlX2d1aSk7XG4gICAgbWF4VmFsdWUgPSAhKHRfZ3VpLm1heFZhbHVlX2d1aSk7XG4gICAgcGxvdFBlcmlvZCA9ICEodF9ndWkucGxvdFBlcmlvZF9ndWkpO1xuICAgIGlucHV0S2FwcGFGaWxlTmFtZXMgPSAhKHRfZ3VpLmlucHV0S2FwcGFGaWxlTmFtZXNfZ3VpKTtcbiAgICBvdXRwdXREYXRhRmlsZSA9ICEodF9ndWkub3V0cHV0RGF0YUZpbGVfZ3VpKTtcbiAgICBvdXRwdXREaXJlY3RvcnkgPSAhKHRfZ3VpLm91dHB1dERpcmVjdG9yeV9ndWkpO1xuICAgIHN5bnRheFZlcnNpb24gPVxuICAgICAgKG1hdGNoICEodF9ndWkuc3ludGF4VmVyc2lvbl9ndWkpIHdpdGhcbiAgICAgIHwgXCIzXCIgfCBcInYzXCIgfCBcIlYzXCIgLT4gQXN0LlYzXG4gICAgICB8IFwiNFwiIHwgXCJ2NFwiIHwgXCJWNFwiIC0+IEFzdC5WNFxuICAgICAgfCBfcyAtPiBBc3QuVjQpO1xuICAgIGJhdGNobW9kZSA9IFRvb2xzLmxvd2VyY2FzZSAhKHRfZ3VpLmJhdGNobW9kZV9ndWkpID0gXCJiYXRjaFwiO1xuICAgIGludGVyYWN0aXZlID0gVG9vbHMubG93ZXJjYXNlICEodF9ndWkuYmF0Y2htb2RlX2d1aSkgPSBcImludGVyYWN0aXZlXCI7XG4gIH1cblxubGV0IGNvcHlfZnJvbV9ndWkgdF9ndWkgdCA9XG4gIGxldCB0X3RtcCA9IGdldF9mcm9tX2d1aSB0X2d1aSBpblxuICB0Lm1pblZhbHVlIDwtIHRfdG1wLm1pblZhbHVlO1xuICB0Lm1heFZhbHVlIDwtIHRfdG1wLm1heFZhbHVlO1xuICB0LnBsb3RQZXJpb2QgPC0gdF90bXAucGxvdFBlcmlvZDtcbiAgdC5pbnB1dEthcHBhRmlsZU5hbWVzIDwtIHRfdG1wLmlucHV0S2FwcGFGaWxlTmFtZXM7XG4gIHQub3V0cHV0RGF0YUZpbGUgPC0gdF90bXAub3V0cHV0RGF0YUZpbGU7XG4gIHQub3V0cHV0RGlyZWN0b3J5IDwtIHRfdG1wLm91dHB1dERpcmVjdG9yeTtcbiAgdC5zeW50YXhWZXJzaW9uIDwtIHRfdG1wLnN5bnRheFZlcnNpb247XG4gIHQuYmF0Y2htb2RlIDwtIHRfdG1wLmJhdGNobW9kZTtcbiAgdC5pbnRlcmFjdGl2ZSA8LSB0X3RtcC5pbnRlcmFjdGl2ZVxuXG5sZXQgb3B0aW9uc19nZW4gKHQgOiB0KSAodF9ndWkgOiB0X2d1aSkgOlxuICAgIChzdHJpbmdcbiAgICAqIEFyZy5zcGVjXG4gICAgKiBTdXBlcmFyZy5zcGVjXG4gICAgKiBzdHJpbmdcbiAgICAqIChTdXBlcmFyZy5jYXRlZ29yeSAqIFN1cGVyYXJnLnBvc2l0aW9uKSBsaXN0XG4gICAgKiBTdXBlcmFyZy5sZXZlbClcbiAgICBsaXN0ID1cbiAgW1xuICAgICggXCItaVwiLFxuICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAoZnVuIGZpYyAtPiB0LmlucHV0S2FwcGFGaWxlTmFtZXMgPC0gZmljIDo6IHQuaW5wdXRLYXBwYUZpbGVOYW1lcyksXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfbGlzdCB0X2d1aS5pbnB1dEthcHBhRmlsZU5hbWVzX2d1aSxcbiAgICAgIFwibmFtZSBvZiBhIGthcHBhIGZpbGUgdG8gdXNlIGFzIGlucHV0IChjYW4gYmUgdXNlZCBtdWx0aXBsZSB0aW1lcyBmb3IgXFxcbiAgICAgICBtdWx0aXBsZSBpbnB1dCBmaWxlcylcIixcbiAgICAgIFtdLFxuICAgICAgU3VwZXJhcmcuSGlkZGVuICk7XG4gICAgKCBcIi1pbml0aWFsXCIsXG4gICAgICBBcmcuRmxvYXQgKGZ1biB0aW1lIC0+IHQubWluVmFsdWUgPC0gU29tZSB0aW1lKSxcbiAgICAgIFN1cGVyYXJnLkZsb2F0X29wdCB0X2d1aS5taW5WYWx1ZV9ndWksXG4gICAgICBcIk1pbiB0aW1lIG9mIHNpbXVsYXRpb24gKGFyYml0cmFyeSB0aW1lIHVuaXQpXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLmRhdGFfc2V0LCAwOyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMCBdLFxuICAgICAgU3VwZXJhcmcuTm9ybWFsICk7XG4gICAgKCBcIi1sXCIsXG4gICAgICBBcmcuRmxvYXQgKGZ1biB0aW1lIC0+IHQubWF4VmFsdWUgPC0gU29tZSB0aW1lKSxcbiAgICAgIFN1cGVyYXJnLkZsb2F0X29wdCB0X2d1aS5tYXhWYWx1ZV9ndWksXG4gICAgICBcIkxpbWl0IG9mIHRoZSBzaW11bGF0aW9uXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLmRhdGFfc2V0LCAxOyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMSBdLFxuICAgICAgU3VwZXJhcmcuTm9ybWFsICk7XG4gICAgKCBcIi10XCIsXG4gICAgICBBcmcuRmxvYXRcbiAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChBcmcuQmFkXG4gICAgICAgICAgICAgICAoXCJPcHRpb24gJy10JyBoYXMgYmVlbiByZXBsYWNlIGJ5ICdbLXUgdGltZV0gLWwgXCJcbiAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfZmxvYXQgZiBeIFwiJ1wiKSkpLFxuICAgICAgU3VwZXJhcmcuRmxvYXRfb3B0IHRfZ3VpLm1heFZhbHVlX2d1aSxcbiAgICAgIFwiRGVwcmVjYXRlZCBvcHRpb25cIixcbiAgICAgIFtdLFxuICAgICAgU3VwZXJhcmcuSGlkZGVuICk7XG4gICAgKCBcIi1wXCIsXG4gICAgICBBcmcuRmxvYXQgKGZ1biBwb2ludE51bWJlclZhbHVlIC0+IHQucGxvdFBlcmlvZCA8LSBTb21lIHBvaW50TnVtYmVyVmFsdWUpLFxuICAgICAgU3VwZXJhcmcuRmxvYXRfb3B0IHRfZ3VpLnBsb3RQZXJpb2RfZ3VpLFxuICAgICAgXCJwbG90IHBlcmlvZDogdGltZSBpbnRlcnZhbCBiZXR3ZWVuIHBvaW50cyBpbiBwbG90IChkZWZhdWx0OiAxLjApXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLmRhdGFfc2V0LCAyOyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMiBdLFxuICAgICAgU3VwZXJhcmcuTm9ybWFsICk7XG4gICAgKCBcIi1vXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gb3V0cHV0RGF0YUZpbGUgLT4gdC5vdXRwdXREYXRhRmlsZSA8LSBTb21lIG91dHB1dERhdGFGaWxlKSxcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdF9ndWkub3V0cHV0RGF0YUZpbGVfZ3VpLFxuICAgICAgXCJmaWxlIG5hbWUgZm9yIGRhdGEgb3V0cHV0XCIsXG4gICAgICBbXG4gICAgICAgIENvbW1vbl9hcmdzLmRhdGFfc2V0LCAzO1xuICAgICAgICBDb21tb25fYXJncy5vdXRwdXQsIDM7XG4gICAgICAgIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAzO1xuICAgICAgXSxcbiAgICAgIFN1cGVyYXJnLkhpZGRlbiApO1xuICAgICggXCItZFwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIG91dHB1dERpcmVjdG9yeSAtPiB0Lm91dHB1dERpcmVjdG9yeSA8LSBvdXRwdXREaXJlY3RvcnkpLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nIHRfZ3VpLm91dHB1dERpcmVjdG9yeV9ndWksXG4gICAgICBcIlNwZWNpZmllcyBkaXJlY3RvcnkgbmFtZSB3aGVyZSBvdXRwdXQgZmlsZShzKSBzaG91bGQgYmUgc3RvcmVkXCIsXG4gICAgICBbXG4gICAgICAgIENvbW1vbl9hcmdzLmRhdGFfc2V0LCAxMDA7XG4gICAgICAgIENvbW1vbl9hcmdzLm91dHB1dCwgMTAwO1xuICAgICAgICBDb21tb25fYXJncy5zZW1hbnRpY3MsIDEwMDtcbiAgICAgICAgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDEwMDtcbiAgICAgICAgQ29tbW9uX2FyZ3MubW9kZWxfcmVkdWN0aW9uLCAxMDA7XG4gICAgICAgIENvbW1vbl9hcmdzLnN0YXRpY19hbmFseXNpcywgMTAwO1xuICAgICAgICBDb21tb25fYXJncy5kZWJ1Z19tb2RlLCAxMDA7XG4gICAgICBdLFxuICAgICAgU3VwZXJhcmcuTm9ybWFsICk7XG4gICAgKCBcIi1tb2RlXCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW4gbSAtPlxuICAgICAgICAgIGlmIG0gPSBcImJhdGNoXCIgdGhlblxuICAgICAgICAgICAgdC5iYXRjaG1vZGUgPC0gdHJ1ZVxuICAgICAgICAgIGVsc2UgaWYgbSA9IFwiaW50ZXJhY3RpdmVcIiB0aGVuXG4gICAgICAgICAgICB0LmludGVyYWN0aXZlIDwtIHRydWUpLFxuICAgICAgU3VwZXJhcmcuQ2hvaWNlXG4gICAgICAgICggWyBcImJhdGNoXCIsIFwiYmF0Y2ggbW9kZVwiOyBcImludGVyYWN0aXZlXCIsIFwiaW50ZXJhY3RpdmUgbW9kZVwiIF0sXG4gICAgICAgICAgW10sXG4gICAgICAgICAgdF9ndWkuYmF0Y2htb2RlX2d1aSApLFxuICAgICAgXCJlaXRoZXIgXFxcImJhdGNoXFxcIiB0byBuZXZlciBhc2sgYW55dGhpbmcgdG8gdGhlIHVzZXIgb3IgXFxcImludGVyYWN0aXZlXFxcIiBcXFxuICAgICAgIHRvIGFzayBzb21ldGhpbmcgYmVmb3JlIGRvaW5nIGFueXRoaW5nXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgNzsgQ29tbW9uX2FyZ3MuZGVidWdfbW9kZSwgNyBdLFxuICAgICAgU3VwZXJhcmcuRXhwZXJ0ICk7XG4gICAgKCBcIi1zeW50YXhcIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgXCIzXCIgfCBcInYzXCIgfCBcIlYzXCIgLT4gdC5zeW50YXhWZXJzaW9uIDwtIEFzdC5WM1xuICAgICAgICB8IFwiNFwiIHwgXCJ2NFwiIHwgXCJWNFwiIC0+IHQuc3ludGF4VmVyc2lvbiA8LSBBc3QuVjRcbiAgICAgICAgfCBzIC0+IHJhaXNlIChBcmcuQmFkIChcIlxcXCJcIiBeIHMgXiBcIlxcXCIgaXMgbm90IGEgdmFsaWQgc3ludGF4IHZlcnNpb25cIikpKSxcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFtcbiAgICAgICAgICAgIFwiM1wiLCBcIm9sZFwiO1xuICAgICAgICAgICAgXCJ2M1wiLCBcIm9sZFwiO1xuICAgICAgICAgICAgXCJWM1wiLCBcIm9sZFwiO1xuICAgICAgICAgICAgXCI0XCIsIFwibmV3XCI7XG4gICAgICAgICAgICBcInY0XCIsIFwibmV3XCI7XG4gICAgICAgICAgICBcIlY0XCIsIFwibmV3XCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXSxcbiAgICAgICAgICB0X2d1aS5zeW50YXhWZXJzaW9uX2d1aSApLFxuICAgICAgXCJVc2UgZXhwbGljaXQgbm90YXRpb24gZm9yIGZyZWUgc2l0ZVwiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDggXSxcbiAgICAgIFN1cGVyYXJnLk5vcm1hbCApO1xuICBdXG5cbmxldCBvcHRpb25zIHQgPVxuICBMaXN0LnJldl9tYXBcbiAgICAoZnVuIChhLCBiLCBfLCBjLCBfLCBfKSAtPiBhLCBiLCBjKVxuICAgIChMaXN0LnJldiAob3B0aW9uc19nZW4gdCBkZWZhdWx0X2d1aSkpXG5cbmxldCBvcHRpb25zX2d1aSB0X2d1aSA9XG4gIExpc3QucmV2X21hcFxuICAgIChmdW4gKGEsIF8sIGIsIGMsIGQsIGUpIC0+IGEsIGIsIGMsIGQsIGUpXG4gICAgKExpc3QucmV2IChvcHRpb25zX2dlbiBkZWZhdWx0IHRfZ3VpKSlcbiAgQCBbXG4gICAgICAoIFwiLS1vdXRwdXQtcGxvdFwiLFxuICAgICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHRfZ3VpLm91dHB1dERhdGFGaWxlX2d1aSxcbiAgICAgICAgXCJmaWxlIG5hbWUgZm9yIGRhdGEgb3V0cHV0XCIsXG4gICAgICAgIFtcbiAgICAgICAgICBDb21tb25fYXJncy5vdXRwdXQsIDE7XG4gICAgICAgICAgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCAxO1xuICAgICAgICAgIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAxO1xuICAgICAgICBdLFxuICAgICAgICBTdXBlcmFyZy5Ob3JtYWwgKTtcbiAgICAgICggXCItLWRhdGEtZmlsZVwiLFxuICAgICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHRfZ3VpLm91dHB1dERhdGFGaWxlX2d1aSxcbiAgICAgICAgXCJmaWxlIG5hbWUgZm9yIGRhdGEgb3V0cHV0XCIsXG4gICAgICAgIFtcbiAgICAgICAgICBDb21tb25fYXJncy5vdXRwdXQsIDE7XG4gICAgICAgICAgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCAyO1xuICAgICAgICAgIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAzO1xuICAgICAgICBdLFxuICAgICAgICBTdXBlcmFyZy5IaWRkZW4gKTtcbiAgICBdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGJhciA9IHsgbXV0YWJsZSB0aWNrczogaW50OyBiYXJfc2l6ZTogaW50OyBiYXJfY2hhcjogY2hhciB9XG5cbnR5cGUgdGV4dCA9IHtcbiAgbXV0YWJsZSBsYXN0X2xlbmd0aDogaW50O1xuICBtdXRhYmxlIGxhc3RfZXZlbnRfbmI6IGludDtcbiAgbXV0YWJsZSBsYXN0X3RpbWU6IGZsb2F0O1xufVxuXG50eXBlIHQgPSBCYXIgb2YgYmFyIHwgVGV4dCBvZiB0ZXh0XG5cbmxldCBpbmNfdGljayBjID0gYy50aWNrcyA8LSBjLnRpY2tzICsgMVxuXG5sZXQgY3JlYXRlIGJhcl9zaXplIGJhcl9jaGFyID1cbiAgaWYgVW5peC5pc2F0dHkgVW5peC5zdGRvdXQgdGhlblxuICAgIFRleHQgeyBsYXN0X2xlbmd0aCA9IDA7IGxhc3RfdGltZSA9IC01LjsgbGFzdF9ldmVudF9uYiA9IDAgfVxuICBlbHNlIChcbiAgICBsZXQgKCkgPVxuICAgICAgZm9yIF8gPSBiYXJfc2l6ZSBkb3dudG8gMSBkb1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIEZvcm1hdC5zdGRfZm9ybWF0dGVyIFwiX1wiXG4gICAgICBkb25lXG4gICAgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfbmV3bGluZSBGb3JtYXQuc3RkX2Zvcm1hdHRlciAoKSBpblxuICAgIEJhciB7IHRpY2tzID0gMDsgYmFyX3NpemU7IGJhcl9jaGFyIH1cbiAgKVxuXG5sZXQgcHBfbm90X251bGwgZiB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgU29tZSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgKCUuMmYlJSlcIiAoeCAqLiAxMDAuKVxuICB8IE5vbmUgLT4gKClcblxubGV0IHBwX3RleHQgZGVsdGFfdCB0aW1lIHRfciBldmVudCBlX3IgZiBzID1cbiAgbGV0IHN0cmluZyA9XG4gICAgRm9ybWF0LmFzcHJpbnRmIFwiJS4yZiB0aW1lIHVuaXRzJWEgaW4gJWkgZXZlbnRzJWEldFwiIHRpbWUgcHBfbm90X251bGwgdF9yXG4gICAgICBldmVudCBwcF9ub3RfbnVsbCBlX3IgKGZ1biBmIC0+XG4gICAgICAgIG1hdGNoIGRlbHRhX3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIGR0IC0+XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiAoanVzdCBkaWQgJS4xZiBldmVudHMvcylcIlxuICAgICAgICAgICAgKGZsb2F0X29mX2ludCAoZXZlbnQgLSBzLmxhc3RfZXZlbnRfbmIpIC8uIGR0KSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXMlcyVzQD9cIlxuICAgICAgKFN0cmluZy5tYWtlIHMubGFzdF9sZW5ndGggJ1xcYicpXG4gICAgICBzdHJpbmdcbiAgICAgIChTdHJpbmcubWFrZSAobWF4IDAgKHMubGFzdF9sZW5ndGggLSBTdHJpbmcubGVuZ3RoIHN0cmluZykpICcgJylcbiAgaW5cbiAgcy5sYXN0X2xlbmd0aCA8LSBTdHJpbmcubGVuZ3RoIHN0cmluZ1xuXG5sZXQgcmVjIGF1eF90aWNrIHNvbWV0aGluZyBzIG4gPVxuICBpZiBuIDw9IDAgdGhlblxuICAgIGlmIHNvbWV0aGluZyB0aGVuXG4gICAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgKClcbiAgICBlbHNlXG4gICAgICAoKVxuICBlbHNlIChcbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfY2hhciBGb3JtYXQuc3RkX2Zvcm1hdHRlciBzLmJhcl9jaGFyIGluXG4gICAgbGV0ICgpID0gaW5jX3RpY2sgcyBpblxuICAgIGF1eF90aWNrIHRydWUgcyAocHJlZCBuKVxuICApXG5cbmxldCB0aWNrIH5lZmZpY2llbmN5IHRpbWUgdF9yIGV2ZW50IGVfciA9IGZ1bmN0aW9uXG4gIHwgQmFyIHMgLT5cbiAgICBsZXQgbl90ID0gT3B0aW9uX3V0aWwudW5zb21lIDAuIHRfciAqLiBmbG9hdF9vZl9pbnQgcy5iYXJfc2l6ZSBpblxuICAgIGxldCBuX2UgPSBPcHRpb25fdXRpbC51bnNvbWUgMC4gZV9yICouIGZsb2F0X29mX2ludCBzLmJhcl9zaXplIGluXG4gICAgYXV4X3RpY2sgZmFsc2UgcyAoaW50X29mX2Zsb2F0IChtYXggbl90IG5fZSkgLSBzLnRpY2tzKVxuICB8IFRleHQgcyAtPlxuICAgIGxldCBydW4gPSBTeXMudGltZSAoKSBpblxuICAgIGxldCBkdCA9IHJ1biAtLiBzLmxhc3RfdGltZSBpblxuICAgIGlmIGR0ID4gMC41IHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcHBfdGV4dFxuICAgICAgICAgIChpZiBlZmZpY2llbmN5IHRoZW5cbiAgICAgICAgICAgICBTb21lIGR0XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgIHRpbWUgdF9yIGV2ZW50IGVfciBGb3JtYXQuc3RkX2Zvcm1hdHRlciBzXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcy5sYXN0X2V2ZW50X25iIDwtIGV2ZW50IGluXG4gICAgICBzLmxhc3RfdGltZSA8LSBTeXMudGltZSAoKVxuICAgIClcblxubGV0IGNvbXBsZXRlX3Byb2dyZXNzX2JhciB0aW1lIGV2ZW50IHQgPVxuICAobWF0Y2ggdCB3aXRoXG4gIHwgQmFyIHQgLT4gYXV4X3RpY2sgZmFsc2UgdCAodC5iYXJfc2l6ZSAtIHQudGlja3MpXG4gIHwgVGV4dCBzIC0+IHBwX3RleHQgTm9uZSB0aW1lIE5vbmUgZXZlbnQgTm9uZSBGb3JtYXQuc3RkX2Zvcm1hdHRlciBzKTtcbiAgRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBvdXRwdXREaXJOYW1lID0gcmVmIFwiXCJcbmxldCBtYXJzaGFsaXplZE91dEZpbGUgPSByZWYgXCJcIlxubGV0IGNmbG93RmlsZU5hbWUgPSByZWYgXCJjZmxvdy5kb3RcIlxubGV0IGJyYW5jaF9hbmRfY3V0X2VuZ2luZV9wcm9maWxpbmdOYW1lID0gcmVmIFwiY29tcHJlc3Npb25fc3RhdHVzLnR4dFwiXG5sZXQgdGFza3NfcHJvZmlsaW5nTmFtZSA9IHJlZiBcInByb2ZpbGluZy5odG1sXCJcbmxldCBmbHV4RmlsZU5hbWUgPSByZWYgXCJcIlxuXG5sZXQgbWtfZGlyX3IgZCA9XG4gIGxldCByZWMgYXV4IGQgPVxuICAgIGlmIG5vdCAoU3lzLmZpbGVfZXhpc3RzIGQpIHRoZW4gKFxuICAgICAgbGV0ICgpID0gYXV4IChGaWxlbmFtZS5kaXJuYW1lIGQpIGluXG4gICAgICBVbml4Lm1rZGlyIGQgMG83NzVcbiAgICApXG4gIGluXG4gIFVuaXguaGFuZGxlX3VuaXhfZXJyb3IgYXV4IGRcblxubGV0IG92ZXJ3cml0ZV9wZXJtaXNzaW9uID0gcmVmIGZhbHNlXG5cbmxldCBwYXRoIGYgPVxuICBpZiBGaWxlbmFtZS5pc19pbXBsaWNpdCBmIHRoZW5cbiAgICBGaWxlbmFtZS5jb25jYXQgIW91dHB1dERpck5hbWUgZlxuICBlbHNlXG4gICAgZlxuXG5sZXQgb3Blbl9vdXQgZiA9XG4gIGxldCB4ID0gcGF0aCBmIGluXG4gIGxldCAoKSA9IG1rX2Rpcl9yIChGaWxlbmFtZS5kaXJuYW1lIHgpIGluXG4gIG9wZW5fb3V0IHhcblxubGV0IHJlYyBhdXhfb3Blbl9vdXRfZnJlc2ggYmFzZSB2IGV4dCA9XG4gIHRyeVxuICAgIG9wZW5fb3V0X2dlblxuICAgICAgWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl9leGNsOyBPcGVuX3RleHQgXVxuICAgICAgMG82NjZcbiAgICAgIChiYXNlIF4gXCJ+XCIgXiBzdHJpbmdfb2ZfaW50IHYgXiBleHQpXG4gIHdpdGggU3lzX2Vycm9yIF8gLT4gYXV4X29wZW5fb3V0X2ZyZXNoIGJhc2UgKHN1Y2MgdikgZXh0XG5cbmxldCBvcGVuX291dF9mcmVzaCBuYW1lIGNvbmNhdF9saXN0IGZhY3VsdGF0aXZlIGV4dCA9XG4gIGxldCBuYW1lID0gcGF0aCBuYW1lIGluXG4gIGxldCAoKSA9IG1rX2Rpcl9yIChGaWxlbmFtZS5kaXJuYW1lIG5hbWUpIGluXG4gIGxldCB0bXBfbmFtZSA9IFRvb2xzLmNob3Bfc3VmZml4X29yX2V4dGVuc2lvbiBuYW1lIGV4dCBpblxuICBsZXQgYmFzZSA9IFN0cmluZy5jb25jYXQgXCJfXCIgKHRtcF9uYW1lIDo6IGNvbmNhdF9saXN0KSBpblxuICBsZXQgb3Zlcl9mbGFnID1cbiAgICBpZiAhb3ZlcndyaXRlX3Blcm1pc3Npb24gdGhlblxuICAgICAgT3Blbl90cnVuY1xuICAgIGVsc2VcbiAgICAgIE9wZW5fZXhjbFxuICBpblxuICBsZXQgZmxhZ3MgPSBbIE9wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBvdmVyX2ZsYWc7IE9wZW5fdGV4dCBdIGluXG4gIHRyeSBvcGVuX291dF9nZW4gZmxhZ3MgMG82NjYgKGJhc2UgXiBleHQpXG4gIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICBsZXQgYmFzZScgPVxuICAgICAgaWYgZmFjdWx0YXRpdmUgPD4gXCJcIiB0aGVuXG4gICAgICAgIGJhc2UgXiBcIl9cIiBeIGZhY3VsdGF0aXZlXG4gICAgICBlbHNlXG4gICAgICAgIGJhc2VcbiAgICBpblxuICAgICh0cnkgb3Blbl9vdXRfZ2VuIGZsYWdzIDBvNjY2IChiYXNlJyBeIGV4dClcbiAgICAgd2l0aCBTeXNfZXJyb3IgXyAtPiBhdXhfb3Blbl9vdXRfZnJlc2ggYmFzZScgMCBleHQpXG5cbmxldCBzZXQgbmFtZSBleHRfb3B0ID1cbiAgaWYgIW5hbWUgPD4gXCJcIiB0aGVuIChcbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZXh0X29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gIW5hbWVcbiAgICAgIHwgU29tZSBleHQgLT5cbiAgICAgICAgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4ICFuYW1lIGV4dCB0aGVuXG4gICAgICAgICAgIW5hbWVcbiAgICAgICAgZWxzZVxuICAgICAgICAgICFuYW1lIF4gXCIuXCIgXiBleHRcbiAgICBpblxuICAgIG5hbWUgOj0gZm5hbWVcbiAgKVxuXG5sZXQgc2V0T3V0cHV0TmFtZSAoKSA9XG4gIHNldCBmbHV4RmlsZU5hbWUgKFNvbWUgXCJkb3RcIik7XG4gIHNldCBtYXJzaGFsaXplZE91dEZpbGUgTm9uZVxuXG5sZXQgY2hlY2tfbm90X2V4aXN0cyA9IGZ1bmN0aW9uXG4gIHwgXCJcIiAtPiAoKVxuICB8IGZpbGUgLT5cbiAgICBsZXQgZmlsZSA9IHBhdGggZmlsZSBpblxuICAgIGlmIFN5cy5maWxlX2V4aXN0cyBmaWxlIHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmVwcmludGYgXCJGaWxlICclcycgYWxyZWFkeSBleGlzdHMgZG8geW91IHdhbnQgdG8gZXJhc2UgKHkvTik/QC5cIlxuICAgICAgICAgIGZpbGVcbiAgICAgIGluXG4gICAgICBsZXQgYW5zd2VyID0gVG9vbHMucmVhZF9pbnB1dCAoKSBpblxuICAgICAgaWZcbiAgICAgICAgYW5zd2VyIDw+IFwieVwiICYmIGFuc3dlciA8PiBcIllcIiAmJiBhbnN3ZXIgPD4gXCJ5ZXNcIiAmJiBhbnN3ZXIgPD4gXCJZRVNcIlxuICAgICAgICAmJiBhbnN3ZXIgPD4gXCJZZXNcIlxuICAgICAgdGhlblxuICAgICAgICBleGl0IDFcbiAgICAgIGVsc2VcbiAgICAgICAgb3ZlcndyaXRlX3Blcm1pc3Npb24gOj0gdHJ1ZVxuICAgIClcblxubGV0IHNldENoZWNrRmlsZUV4aXN0cyB+YmF0Y2htb2RlIG91dHB1dEZpbGUgPVxuICBsZXQgKCkgPSBzZXRPdXRwdXROYW1lICgpIGluXG4gIGlmIGJhdGNobW9kZSB0aGVuXG4gICAgb3ZlcndyaXRlX3Blcm1pc3Npb24gOj0gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgKCkgPSBjaGVja19ub3RfZXhpc3RzICFmbHV4RmlsZU5hbWUgaW5cbiAgICBsZXQgKCkgPSBjaGVja19ub3RfZXhpc3RzICFtYXJzaGFsaXplZE91dEZpbGUgaW5cbiAgICBjaGVja19ub3RfZXhpc3RzIG91dHB1dEZpbGVcbiAgKVxuXG5sZXQgd2l0aF9jaGFubmVsIHN0ciBmID1cbiAgaWYgc3RyIDw+IFwiXCIgdGhlbiAoXG4gICAgbGV0IGRlc2MgPSBvcGVuX291dCBzdHIgaW5cbiAgICBsZXQgKCkgPSBmIGRlc2MgaW5cbiAgICBjbG9zZV9vdXQgZGVzY1xuICApXG5cbmxldCB3cmFwX2Zvcm1hdHRlciBmIGRlc2MgPVxuICBsZXQgZnIgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGRlc2MgaW5cbiAgbGV0ICgpID0gZiBmciBpblxuICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZnIgKClcblxubGV0IHNldF9kaXIgcyA9XG4gIGxldCAoKSA9XG4gICAgdHJ5XG4gICAgICBpZiBub3QgKFN5cy5pc19kaXJlY3RvcnkgcykgdGhlbiAoXG4gICAgICAgIEZvcm1hdC5lcHJpbnRmIFwiJyVzJyBpcyBub3QgYSBkaXJlY3RvcnlALlwiIHM7XG4gICAgICAgIGV4aXQgMVxuICAgICAgKVxuICAgIHdpdGggU3lzX2Vycm9yIF8gLT4gbWtfZGlyX3Igc1xuICBpblxuICBvdXRwdXREaXJOYW1lIDo9IHNcblxubGV0IGdldF9kaXIgKCkgPSAhb3V0cHV0RGlyTmFtZVxubGV0IHNldF9tYXJzaGFsaXplZCBmID0gbWFyc2hhbGl6ZWRPdXRGaWxlIDo9IGZcblxubGV0IHdpdGhfbWFyc2hhbGl6ZWQgZiA9XG4gIG1hdGNoICFtYXJzaGFsaXplZE91dEZpbGUgd2l0aFxuICB8IFwiXCIgLT4gKClcbiAgfCBmaWxlIC0+XG4gICAgbGV0IHggPSBwYXRoIGZpbGUgaW5cbiAgICBsZXQgKCkgPSBta19kaXJfciAoRmlsZW5hbWUuZGlybmFtZSB4KSBpblxuICAgIGxldCBkID0gb3Blbl9vdXRfYmluIHggaW5cbiAgICBsZXQgKCkgPSBmIGQgaW5cbiAgICBjbG9zZV9vdXQgZFxuXG5sZXQgc2V0X2NmbG93IHMgPSBjZmxvd0ZpbGVOYW1lIDo9IHNcblxubGV0IHdpdGhfY2Zsb3dfZmlsZSBsIGUgZiA9XG4gIGxldCBkZXNjID0gb3Blbl9vdXRfZnJlc2ggIWNmbG93RmlsZU5hbWUgbCBcIlwiIGUgaW5cbiAgbGV0ICgpID0gd3JhcF9mb3JtYXR0ZXIgZiBkZXNjIGluXG4gIGNsb3NlX291dCBkZXNjXG5cbmxldCBvcGVuX3Rhc2tzX3Byb2ZpbGluZyAoKSA9IG9wZW5fb3V0ICF0YXNrc19wcm9maWxpbmdOYW1lXG5cbmxldCBvcGVuX2JyYW5jaF9hbmRfY3V0X2VuZ2luZV9wcm9maWxpbmcgKCkgPVxuICBvcGVuX291dCAhYnJhbmNoX2FuZF9jdXRfZW5naW5lX3Byb2ZpbGluZ05hbWVcblxubGV0IHNldF9mbHV4IG5tZSBldmVudCA9XG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggbm1lIHdpdGhcbiAgICB8IFwiXCIgLT4gZmx1eEZpbGVOYW1lIDo9IFwiZmx1eFwiIF4gXCJfXCIgXiBzdHJpbmdfb2ZfaW50IGV2ZW50XG4gICAgfCBfIC0+IGZsdXhGaWxlTmFtZSA6PSBubWVcbiAgaW5cbiAgc2V0IGZsdXhGaWxlTmFtZSAoU29tZSBcImRvdFwiKVxuXG5sZXQgd2l0aF9mbHV4IHN0ciBmID1cbiAgd2l0aF9jaGFubmVsXG4gICAgKG1hdGNoIHN0ciB3aXRoXG4gICAgfCBcIlwiIC0+ICFmbHV4RmlsZU5hbWVcbiAgICB8IF8gLT4gc3RyKVxuICAgIGZcblxubGV0IHdpdGhfc25hcHNob3Qgc3RyIGV4dCBldmVudCBmID1cbiAgbGV0IGRlc2MgPSBvcGVuX291dF9mcmVzaCBzdHIgW10gKHN0cmluZ19vZl9pbnQgZXZlbnQpIGV4dCBpblxuICBsZXQgKCkgPSBmIGRlc2MgaW5cbiAgY2xvc2Vfb3V0IGRlc2NcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc3RvcmUgPSB7XG4gIGZpbGU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3I6IHN0cmluZztcbiAgbGVnZW5kOiBzdHJpbmcgYXJyYXk7XG4gIG11dGFibGUgcG9pbnRzOiBOYnIudCBhcnJheSBsaXN0O1xufVxuXG5sZXQgbmV3X2ZpbGUgbmFtZSA9XG4gIGxldCBjaGFuID0gS2FwcGFfZmlsZXMub3Blbl9vdXQgbmFtZSBpblxuICBsZXQgZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgY2hhbiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj48P3htbCB2ZXJzaW9uPVxcXCIxLjBcXFwiPz5ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPD48IURPQ1RZUEVAIHN2Z0AgUFVCTElDQCBcXFwiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU5cXFwiQCBcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiXFxcImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZFxcXCI+QF1ALEAsXCJcbiAgaW5cbiAgZiwgY2hhblxuXG5sZXQgY2xvc2VfZmlsZSBmb3JtIGNoYW4gPVxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmb3JtIFwiQF1ALlwiIGluXG4gIGNsb3NlX291dCBjaGFuXG5cbmxldCBzdHlsZSBmID1cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxzdHlsZSB0eXBlPVxcXCJ0ZXh0L2Nzc1xcXCIgPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjwhW0NEQVRBW0AsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+I2xlZ2VuZCB0ZXh0IHtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ0ZXh0LWFuY2hvcjplbmQ7QCBiYXNlbGluZS1zaGlmdDotLjRlbTtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ9QF1ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPiNheGlzX3QgdGV4dCB7QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwidGV4dC1hbmNob3I6bWlkZGxlO0AgYmFzZWxpbmUtc2hpZnQ6LTFlbTtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ9QF1ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPiNheGlzX3ZhIHRleHQge0AsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInRleHQtYW5jaG9yOmVuZDtAIGJhc2VsaW5lLXNoaWZ0Oi0uNGVtO0AsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIn1AXUAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj4jYXhlcyB7QCxjb2xvcjpibGFjaztALHN0cm9rZTpjdXJyZW50Q29sb3I7XCJcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkAsc3Ryb2tlLXNpemU6MXB4O0AsfUBdQCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiQFs8aHYgMj4jYXhlcyB0ZXh0IHtALHN0cm9rZTpub25lO0AsZmlsbDpjdXJyZW50Q29sb3I7QCx9QF1ALFwiXG4gIGluXG4gICgqIGxldCAoKSA9XG4gICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPiNkYXRhIHVzZTpob3ZlciB7QCxmaWxsOmdyZWVuO0AsfUBdQCxcIiBpbiopXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJdXT5ALDwvc3R5bGU+QCxALFwiXG5cbmxldCBjb2xvcnMgPSBbfCBcInBlcnVcIjsgXCJibHVlXCI7IFwicHVycGxlXCI7IFwiZ3JlZW5cIiB8XVxubGV0IHN0eWxlcyA9IFt8IFwicG9pbnRcIjsgXCJwbHVzXCI7IFwiY3Jvc3NcIiB8XVxuXG5sZXQgZGVmcyBmID1cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxkZWZzPkAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiPHBhdGggaWQ9XFxcInBsdXNcXFwiIGNsYXNzPVxcXCJwb2ludFxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiXCJcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiBkPVxcXCJNLTMuNSwwIGg3IE0wLC0zLjUgdjdcXFwiLz5ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCI8cGF0aCBpZD1cXFwiY3Jvc3NcXFwiIGNsYXNzPVxcXCJwb2ludFxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiXCJcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiIGQ9XFxcIk0tMy41LC0zLjUgTDMuNSwzLjUgTTMuNSwtMy41IEwtMy41LDMuNVxcXCIvPkAsXCJcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxjaXJjbGUgaWQ9XFxcInBvaW50XFxcIiBjbGFzcz1cXFwicG9pbnRcXFwiIHI9XFxcIjIuNVxcXCJcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiIHN0cm9rZT1cXFwibm9uZVxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+QCxcIiBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiPC9kZWZzPkAsQCxcIlxuXG5sZXQgbGVnZW5kIHcgZiBhID1cbiAgbGV0IHBwX2xpbmUgaScgZiBzID1cbiAgICBpZiBpJyA+IDAgdGhlbiAoXG4gICAgICBsZXQgaSA9IHByZWQgaScgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPjx0ZXh0IHg9XFxcIiVpXFxcIiB5PVxcXCIlaVxcXCI+JXM8L3RleHQ+QF1ALFwiICh3IC0gMTUpXG4gICAgICAgICAgKDEwICsgKGkgKiAxNSkpXG4gICAgICAgICAgc1xuICAgICAgaW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCI8dXNlIHhsaW5rOmhyZWY9XFxcIiMlc1xcXCIgc3R5bGU9XFxcImNvbG9yOiVzXFxcIiB4PVxcXCIlaVxcXCIgeT1cXFwiJWlcXFwiLz5cIlxuICAgICAgICBzdHlsZXMuKGknIG1vZCBBcnJheS5sZW5ndGggc3R5bGVzKVxuICAgICAgICBjb2xvcnMuKGknIG1vZCBBcnJheS5sZW5ndGggY29sb3JzKVxuICAgICAgICAodyAtIDcpXG4gICAgICAgICgxMCArIChpICogMTUpKVxuICAgIClcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+PGcgaWQ9XFxcImxlZ2VuZFxcXCI+QCwlYUBdQCw8L2c+QCxALFwiXG4gICAgKFBwLmFycmF5IFBwLmN1dCBwcF9saW5lKSBhXG5cbmxldCBnZXRfbGltaXRzIGwgPVxuICBsZXQgZHVtbXlfdmFsdWVzID0gMC4sIC0xLiwgMS4gaW5cbiAgbGV0IHJlYyBhdXggdF9tYXggdmFfbWluIHZhX21heCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgaWYgdmFfbWluID0gdmFfbWF4IHRoZW5cbiAgICAgICAgdF9tYXgsIHZhX21pbiAtLiAxLiwgdmFfbWF4ICsuIDEuXG4gICAgICBlbHNlXG4gICAgICAgIHRfbWF4LCBtaW4gdmFfbWluIDAuLCB2YV9tYXhcbiAgICB8IHZhIDo6IHEgLT5cbiAgICAgIGF1eFxuICAgICAgICAobWF4IChPcHRpb25fdXRpbC51bnNvbWUgMC4gKE5ici50b19mbG9hdCB2YS4oMCkpKSB0X21heClcbiAgICAgICAgKFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgKGZ1biBpIGEgeCAtPlxuICAgICAgICAgICAgIG1hdGNoIE5ici50b19mbG9hdCB4IHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgeCB3aGVuIGkgPD4gMCAtPiBtaW4gYSB4XG4gICAgICAgICAgICAgfCBfIC0+IGEpXG4gICAgICAgICAgIHZhX21pbiB2YSlcbiAgICAgICAgKFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgKGZ1biBpIGEgeCAtPlxuICAgICAgICAgICAgIG1hdGNoIE5ici50b19mbG9hdCB4IHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgeCB3aGVuIGkgPD4gMCAtPiBtYXggYSB4XG4gICAgICAgICAgICAgfCBfIC0+IGEpXG4gICAgICAgICAgIHZhX21heCB2YSlcbiAgICAgICAgcVxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBkdW1teV92YWx1ZXNcbiAgfCB2YSA6OiBfIHdoZW4gQXJyYXkubGVuZ3RoIHZhIDwgMiAtPiBkdW1teV92YWx1ZXNcbiAgfCBsIC0+IGF1eCAwLiBpbmZpbml0eSAwLiBsXG5cbmxldCBkcmF3X2luX2RhdGEgKCh0X21heCwgdmFfbWluLCB2YV9tYXgpLCAoemVyb193LCB6ZXJvX2gsIGRyYXdfdywgZHJhd19oKSkgPVxuICBsZXQgZGVsdGFfdmEgPSB2YV9tYXggLS4gdmFfbWluIGluXG4gIGxldCB6ZXJvX3cnID0gZmxvYXRfb2ZfaW50IHplcm9fdyBpblxuICBsZXQgemVyb19oJyA9IGZsb2F0X29mX2ludCB6ZXJvX2ggaW5cbiAgbGV0IGRyYXdfdycgPSBmbG9hdF9vZl9pbnQgZHJhd193IGluXG4gIGxldCBkcmF3X2gnID0gZmxvYXRfb2ZfaW50IGRyYXdfaCBpblxuICBmdW4gZiB4IHkgLT5cbiAgICBtYXRjaCBOYnIudG9fZmxvYXQgeSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHknIC0+XG4gICAgICBmXG4gICAgICAgICh6ZXJvX3cnXG4gICAgICAgICsuICgoT3B0aW9uX3V0aWwudW5zb21lIDAuIEBAIE5ici50b19mbG9hdCB4KSAqLiBkcmF3X3cnIC8uIHRfbWF4KSlcbiAgICAgICAgKHplcm9faCcgLS4gKCh5JyAtLiB2YV9taW4pICouIGRyYXdfaCcgLy4gZGVsdGFfdmEpKVxuXG5sZXQgZ3JhZHVhdGlvbl9zdGVwIGRyYXdfbCBtaW5fZ3JhZF9sIHZhX21pbiB2YV9tYXggPVxuICBsZXQgbmJyX2RlbHRhID0gdmFfbWF4IC0uIHZhX21pbiBpblxuICBsZXQgZGVsdGFfdmEgPVxuICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IG5icl9kZWx0YSB3aXRoXG4gICAgfCBGUF96ZXJvIC0+IDEuXG4gICAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgfCBGUF9pbmZpbml0ZSB8IEZQX25hbiAtPiBuYnJfZGVsdGFcbiAgaW5cbiAgbGV0IG5iX2dyYWQgPSBjZWlsIChmbG9hdCBkcmF3X2wgLy4gZmxvYXQgbWluX2dyYWRfbCkgaW5cbiAgbGV0IGV4YWN0X3N0ZXAgPSBkZWx0YV92YSAvLiBuYl9ncmFkIGluXG4gIGxldCBkZWx0YV9ncmFkID0gMTAuICoqIGxvZzEwIGV4YWN0X3N0ZXAgaW5cbiAgbGV0IHZhX21pbicgPSBkZWx0YV9ncmFkICouIGZsb29yICh2YV9taW4gLy4gZXhhY3Rfc3RlcCkgaW5cbiAgbGV0IHZhX21heCcgPVxuICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IG5icl9kZWx0YSB3aXRoXG4gICAgfCBGUF96ZXJvIC0+IHZhX21pbicgKy4gMS5cbiAgICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+XG4gICAgICBkZWx0YV9ncmFkICouIGNlaWwgKHZhX21heCAvLiBleGFjdF9zdGVwKVxuICBpblxuICB2YV9taW4nLCBpbnRfb2ZfZmxvYXQgbmJfZ3JhZCwgZGVsdGFfZ3JhZCwgdmFfbWF4J1xuXG5sZXQgYXhpcyAodywgaCkgKGJfb3AsIGJfdywgYl9oKSBmIGwgPVxuICBsZXQgdF9tYXgsIHZhX21pbiwgdmFfbWF4ID0gZ2V0X2xpbWl0cyBsIGluXG4gIGxldCBkYXRhX3cgPSB3IC0gKGJfb3AgKyBiX3cpIGluXG4gIGxldCBkYXRhX2ggPSBoIC0gKGJfb3AgKyBiX2gpIGluXG4gIGxldCBfLCBuYl93LCBncmFkX3csIHRfbWF4JyA9IGdyYWR1YXRpb25fc3RlcCBkYXRhX3cgYl93IDAuIHRfbWF4IGluXG4gIGxldCB2YV9taW4nLCBuYl9oLCBncmFkX2gsIHZhX21heCcgPVxuICAgIGdyYWR1YXRpb25fc3RlcCBkYXRhX2ggYl93IHZhX21pbiB2YV9tYXhcbiAgaW5cbiAgbGV0IGRyYXdfZnVuID1cbiAgICBkcmF3X2luX2RhdGEgKCh0X21heCcsIHZhX21pbicsIHZhX21heCcpLCAoYl93LCBoIC0gYl9oLCBkYXRhX3csIGRhdGFfaCkpXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8ZyBpZD1cXFwiYXhlc1xcXCI+QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj48ZyBpZD1cXFwiYXhpc192YVxcXCI+QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHRpdGxlPk9ic2VydmFibGUgdmFsdWVzPC90aXRsZT5ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPD48cGF0aCBkPVxcXCJNICVpLCVpIEwgJWksJWlcXFwiLz5AXUAsXCIgYl93IGJfb3AgYl93XG4gICAgICAoZGF0YV9oICsgYl9vcClcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBUb29scy5pdGVyaVxuICAgICAgKGZ1biBpIC0+XG4gICAgICAgIGxldCB2ID0gZ3JhZF9oICouIGZsb2F0IGkgaW5cbiAgICAgICAgZHJhd19mdW5cbiAgICAgICAgICAoZnVuIHggeSAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjx0ZXh0IHg9XFxcIiVmXFxcIiB5PVxcXCIlZlxcXCI+JS4zZzwvdGV4dD5ALFwiICh4IC0uIDguKVxuICAgICAgICAgICAgICAgIHkgdlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8bGluZSB4MT1cXFwiJWZcXFwiIHkxPVxcXCIlZlxcXCIgeDI9XFxcIiVmXFxcIiB5Mj1cXFwiJWZcXFwiLz5ALFwiXG4gICAgICAgICAgICAgICh4IC0uIDUuKSB5ICh4ICsuIDUuKSB5KVxuICAgICAgICAgIE5ici56ZXJvIChOYnIuRiB2KSlcbiAgICAgIChzdWNjIG5iX2gpXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAXTwvZz5ALEBbPGh2IDI+PGcgaWQ9XFxcImF4aXNfdFxcXCI+QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHRpdGxlPlRpbWUgKGFyYml0cmFyeSB1bml0KTwvdGl0bGU+QCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzw+PHBhdGggZD1cXFwiTSAlaSwlaSBMICVpLCVpXFxcIi8+QF1ALFwiIGJfdyAoaCAtIGJfaClcbiAgICAgICh3IC0gYl9vcCkgKGggLSBiX2gpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgVG9vbHMuaXRlcmlcbiAgICAgIChmdW4gaSAtPlxuICAgICAgICBsZXQgdiA9IGdyYWRfdyAqLiBmbG9hdCBpIGluXG4gICAgICAgIGRyYXdfZnVuXG4gICAgICAgICAgKGZ1biB4IHkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8dGV4dCB4PVxcXCIlZlxcXCIgeT1cXFwiJWZcXFwiPiUuM2c8L3RleHQ+QCxcIiB4XG4gICAgICAgICAgICAgICAgKHkgKy4gOC4pIHZcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPGxpbmUgeDE9XFxcIiVmXFxcIiB5MT1cXFwiJWZcXFwiIHgyPVxcXCIlZlxcXCIgeTI9XFxcIiVmXFxcIi8+QCxcIlxuICAgICAgICAgICAgICB4ICh5IC0uIDUuKSB4ICh5ICsuIDUuKSlcbiAgICAgICAgICAoTmJyLkYgdikgKE5ici5GIHZhX21pbicpKVxuICAgICAgKHN1Y2MgbmJfdylcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBdPC9nPkAsPC9nPkAsQCxcIiBpblxuICBkcmF3X2Z1blxuXG5sZXQgZGF0YSBkcmF3X2Z1biBsIGYgcCA9XG4gIGxldCBvbmVfcG9pbnQgcyB0IGkgZiB2YSA9XG4gICAgZHJhd19mdW5cbiAgICAgIChmdW4geCB5IC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPD48dXNlIHhsaW5rOmhyZWY9XFxcIiMlc1xcXCIgeD1cXFwiJWZcXFwiIHk9XFxcIiVmXFxcIj5ALFwiXG4gICAgICAgICAgICBzdHlsZXMuKGkgbW9kIEFycmF5Lmxlbmd0aCBzdHlsZXMpXG4gICAgICAgICAgICB4IHlcbiAgICAgICAgaW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjx0aXRsZT4lcyB0PSVhIHY9JWE8L3RpdGxlPkAsPC91c2U+QF1ALFwiIHNcbiAgICAgICAgICBOYnIucHJldHR5X3ByaW50IHQgTmJyLnByaW50IHZhKVxuICAgICAgdCB2YVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiPGcgaWQ9XFxcImRhdGFcXFwiPkAsJWE8L2c+QCxALFwiXG4gICAgKFBwLmFycmF5IFBwLmVtcHR5IChmdW4gaSBmIHMgLT5cbiAgICAgICAgIGlmIGkgPiAwIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgIFwiQFs8aHYgMj48ZyBpZD1cXFwiZGF0YV8laVxcXCIgc3R5bGU9XFxcImNvbG9yOiVzXFxcIj5ALCVhQF08L2c+QCxcIlxuICAgICAgICAgICAgIChwcmVkIGkpXG4gICAgICAgICAgICAgY29sb3JzLihpIG1vZCBBcnJheS5sZW5ndGggY29sb3JzKVxuICAgICAgICAgICAgIChQcC5saXN0IFBwLmVtcHR5IChmdW4gZiBlIC0+IG9uZV9wb2ludCBzIGUuKDApIGkgZiBlLihpKSkpXG4gICAgICAgICAgICAgcCkpXG4gICAgbFxuXG5sZXQgZHJhdyAoKHcsIGgpIGFzIHNpemUpIGJvcmRlciBmIHMgPVxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzw+PHN2Z0AgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIkAgXCJcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInhtbG5zOnhsaW5rPVxcXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXFxcIkAgXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIndpZHRoPVxcXCIlaVxcXCJAIGhlaWdodD1cXFwiJWlcXFwiPkBdQCxcIiB3IGggaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiPHRpdGxlPiVzPC90aXRsZT5ALDxkZXNjcj4lczwvZGVzY3I+QCxALFwiIHMudGl0bGUgcy5kZXNjclxuICBpblxuICBsZXQgKCkgPSBzdHlsZSBmIGluXG4gIGxldCAoKSA9IGRlZnMgZiBpblxuICBsZXQgZHJhd19mdW4gPSBheGlzIHNpemUgYm9yZGVyIGYgcy5wb2ludHMgaW5cbiAgbGV0ICgpID0gbGVnZW5kIHcgZiBzLmxlZ2VuZCBpblxuICBsZXQgKCkgPSBkYXRhIGRyYXdfZnVuIHMubGVnZW5kIGYgcy5wb2ludHMgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIjwvc3ZnPlwiXG5cbmxldCB0b19zdHJpbmcgPyh3aWR0aCA9IDgwMCkgcyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIGxldCBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgc2l6ZSA9IHdpZHRoLCBpbnRfb2ZfZmxvYXQgKGZsb2F0IHdpZHRoIC8uIHNxcnQgMi4pIGluXG4gIGxldCBib3JkZXIgPSAxMCwgNzAsIDI1IGluXG4gIGxldCAoKSA9IGRyYXcgc2l6ZSBib3JkZXIgZiBzIGluXG4gIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9uZXdsaW5lIGYgKCkgaW5cbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IHRvX2ZpbGUgcyA9XG4gIGxldCBmb3JtLCBjaGFuID0gbmV3X2ZpbGUgcy5maWxlIGluXG4gIGxldCBzaXplID0gODAwLCA2MDAgaW5cbiAgbGV0IGJvcmRlciA9IDEwLCA3MCwgMjUgaW5cbiAgbGV0ICgpID0gZHJhdyBzaXplIGJvcmRlciBmb3JtIHMgaW5cbiAgY2xvc2VfZmlsZSBmb3JtIGNoYW5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqRXhwZXJ0IG1vZGUgdmFsdWVzKilcbmxldCBkZWZhdWx0RXh0QXJyYXlTaXplID0gcmVmIDVcbmxldCBkZWZhdWx0R3JhcGhTaXplID0gcmVmIDVcbmxldCBkZWZhdWx0TGlmdFNldFNpemUgPSByZWYgNVxubGV0IGRlZmF1bHRIZWFwU2l6ZSA9IHJlZiA1XG5sZXQgZGVidWdfbW9kZU9uID0gcmVmIGZhbHNlXG5cbigqIGV4cGVydCBvcHRpb24gZm9yIHN0b3JpZXMgKilcblxuKCogTnVtYmVyIG9mIHBvdGVudGlhbCBzdGF0ZXMgdGhhdCBhcmUgcHV0IGluIHRoZSBjYWNoZSBwZXIgYmluZGluZyBzaXRlLCBzbyBhcyB0byBoYW5kbGVyIHdpdGggc2lkZSBlZmZlY3RzIGluIHN0b3JpZXMuIE5vbmUgLT4gVW5saW1pdGVkIGNhY2hlICopXG5cbigqKiBNZW1vcnkgKiopXG5sZXQgY2FjaGVfc2l6ZSA9IHJlZiAoTm9uZSA6IGludCBvcHRpb24pXG5cbigqIEN1dCBjb25jdXJyZW50IGV2ZW50cyAoZm9yIGFsbCBvYnNlcnZhYmxlcykgYmVmb3JlIGdlbmVyYXRpbmcgdGhlIGJsYWNrYm9hcmQgKilcblxuKCoqIFByZWNvbXB1dGF0aW9uICoqKVxubGV0IGRvX2dsb2JhbF9jdXQgPSB0cnVlXG5cbigqIEN1dCBwc2V1ZG8taW52ZXJzZSBldmVudHMgKilcbmxldCBjdXRfcHNldWRvX2ludmVyc2VfZXZlbnQgPSB0cnVlXG5cbigqIEN1dCBjb25jdXJyZW50IGV2ZW50cyAoZm9yIHRoZSBjdXJyZW50IG9ic2VydmFsZSkgYmVmb3JlIGdlbmVyYXRpbmcgdGhlIGJsYWNrYm9hcmQgKilcbmxldCBkb19sb2NhbF9jdXQgPSB0cnVlXG5cbigqIEN1dCBzZXBhcmFibGUgY29tcG9uZW50cyAqKVxubGV0IGRvX2RldGVjdF9zZXBhcmFibGVfY29tcG9uZW50cyA9IHRydWVcblxuKCogV2hlbmV2ZXIgd2UgZG8gbm90IGtub3cgd2hldGhlciBhbiBldmVudCBoYXMgdG8gYmUgc2VsZWN0ZWQgb3IsIG5vdCwgY2hlY2sgd2hldGhlciB0aGlzIGlzIG5vdCB0aGUgbGFzdCBvbmUgdGhhdCBjYW4gcGFyZm9ybSBhIHJlcXVlc3RlZCBhY3Rpb24gKilcblxuKCoqIFByb3BhZ2F0aW9uIGhldXJpc3RpY3MgKiopXG5sZXQgbG9va191cF9mb3JfYmV0dGVyX2N1dCA9IHRydWVcblxuKCogV2hlbmV2ZXIgYW4gZXZlbnQgaXMgcmVtb3ZlZCwgY2hlY2tlZCB3aGV0aGVyIHRoZXJlIGlzIG5vdCBvbmx5IG9uZSBsZWZ0IHRvIHBlcmZvcm0gYSByZXF1aXJlZCBhY3Rpb24gKilcbmxldCBsb29rX2Rvd25fZm9yX2JldHRlcl9jdXQgPSB0cnVlXG5sZXQgbG9nX251bWJlcl9vZl9jYXVzYWxfZmxvd3MgPSB0cnVlXG5cbigqVXNlciBkZWZpbmFibGUgdmFsdWVzKilcbmxldCB0aW1lX2luZGVwZW5kZW50ID0gcmVmIGZhbHNlXG5sZXQgYmxhY2tsaXN0X2V2ZW50cyA9IHJlZiBmYWxzZVxuXG4oKlhMUyBvdXRwdXQgZm9yIHRoZSBncmlkcyBkdXJpbmcgY29tcHJlc3Npb24qKVxubGV0IGR1bXBfZ3JpZF9iZWZvcmVfd2Vha19jb21wcmVzc2lvbiA9IGZhbHNlXG5sZXQgZHVtcF9ncmlkX2JlZm9yZV9zdHJvbmdfY29tcHJlc3Npb24gPSBmYWxzZVxubGV0IGR1bXBfZ3JpZF9hZnRlcl9icmFuY2hpbmdfZHVyaW5nX3dlYWtfY29tcHJlc3Npb24gPSBmYWxzZVxubGV0IGR1bXBfZ3JpZF9hZnRlcl9icmFuY2hpbmdfZHVyaW5nX3N0cm9uZ19jb21wcmVzc2lvbiA9IGZhbHNlXG5sZXQgeGxzd2Vha0ZpbGVOYW1lID0gXCJncmlkX3dlYWtfY29tcHJlc3Npb25cIlxubGV0IHhsc3N0cm9uZ0ZpbGVOYW1lID0gXCJncmlkX3N0cm9uZ19jb21wcmVzc2lvblwiXG5sZXQgZ2V0X2NhY2hlX3NpemUgKCkgPSAhY2FjaGVfc2l6ZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IHByaW50X2Rlc2MgOiAoc3RyaW5nLCBvdXRfY2hhbm5lbCAqIEZvcm1hdC5mb3JtYXR0ZXIpIEhhc2h0YmwudCA9XG4gIEhhc2h0YmwuY3JlYXRlIDJcblxubGV0IHNwZWNpZXNfZGVzYyA6IChzdHJpbmcsIG91dF9jaGFubmVsICogRm9ybWF0LmZvcm1hdHRlcikgSGFzaHRibC50ID1cbiAgSGFzaHRibC5jcmVhdGUgMlxuXG5sZXQgdXVpZCA9IFJhbmRvbS5TdGF0ZS5iaXRzIChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkpXG5cbmxldCBnZXRfZGVzYyBmaWxlIHRibCA9XG4gIHRyeSBzbmQgKEhhc2h0YmwuZmluZCB0YmwgZmlsZSlcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgZF9jaGFuID0gS2FwcGFfZmlsZXMub3Blbl9vdXQgZmlsZSBpblxuICAgIGxldCBkID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBkX2NoYW4gaW5cbiAgICBIYXNodGJsLmFkZCB0YmwgZmlsZSAoZF9jaGFuLCBkKTtcbiAgICBkXG5cbmxldCBjbG9zZV9kZXNjICgpID1cbiAgSGFzaHRibC5pdGVyIChmdW4gX2ZpbGUgKGRfY2hhbiwgX2QpIC0+IGNsb3NlX291dCBkX2NoYW4pIHByaW50X2Rlc2M7XG4gIEhhc2h0YmwuaXRlciAoZnVuIF9maWxlIChkX2NoYW4sIF9kKSAtPiBjbG9zZV9vdXQgZF9jaGFuKSBzcGVjaWVzX2Rlc2NcblxubGV0IG91dHB1dF9mbHV4IGRpbl9uYW1lIGZsdXggPVxuICBLYXBwYV9maWxlcy53aXRoX2ZsdXggZGluX25hbWVcbiAgICAoaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IGRpbl9uYW1lIFwiLmh0bWxcIiB0aGVuXG4gICAgICAgS2FwcGFfZmlsZXMud3JhcF9mb3JtYXR0ZXIgKGZ1biBmIC0+IERhdGEucHJpbnRfaHRtbF9kaW4gZiBmbHV4KVxuICAgICBlbHNlIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBkaW5fbmFtZSBcIi5qc29uXCIgdGhlblxuICAgICAgIGZ1biBkIC0+XG4gICAgIEpzb25VdGlsLndyaXRlX3RvX2NoYW5uZWwgRGF0YS53cml0ZV9kaW4gZCBmbHV4XG4gICAgIGVsc2VcbiAgICAgICBLYXBwYV9maWxlcy53cmFwX2Zvcm1hdHRlciAoZnVuIGYgLT4gRGF0YS5wcmludF9kb3RfZGluIH51dWlkIGYgZmx1eCkpXG5cbmxldCBhY3RzRGVzY3IgPSByZWYgTm9uZVxubGV0IGVtcHR5QWN0cyA9IHJlZiB0cnVlXG5cbmxldCBpbml0X2FjdGl2aXRpZXMgZW52ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBzIC0+XG4gICAgbGV0IG5vQ291bnRlcnMgPSAhUGFyYW1ldGVyLmRlYnVnX21vZGVPbiBpblxuICAgIGxldCBkZXNjID0gS2FwcGFfZmlsZXMub3Blbl9vdXQgcyBpblxuICAgIGxldCBmb3JtID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBkZXNjIGluXG4gICAgbGV0IG5iX3IgPSBNb2RlbC5uYl9zeW50YWN0aWNfcnVsZXMgZW52IGluXG4gICAgbGV0ICgpID0gYWN0c0Rlc2NyIDo9IFNvbWUgKGRlc2MsIGZvcm0sIG5iX3IpIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZm9ybSBcIkBbPHY+e0AscnVsZXM6QFtbXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgVG9vbHMuaXRlcmlcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm9ybSBcIlxcXCIlYVxcXCIsQCxcIlxuICAgICAgICAgICAgKE1vZGVsLnByaW50X2FzdF9ydWxlIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgICAgICAgICB4KVxuICAgICAgICBuYl9yXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwiXFxcIiVhXFxcIl1AXSxALGRhdGE6W0AsXCJcbiAgICAgIChNb2RlbC5wcmludF9hc3RfcnVsZSB+bm9Db3VudGVycyB+ZW52KVxuICAgICAgbmJfclxuXG5sZXQgY2xvc2VfYWN0aXZpdGllcyAoKSA9XG4gIG1hdGNoICFhY3RzRGVzY3Igd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIChjLCBmLCBfKSAtPlxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJALF19QF1ALlwiIGluXG4gICAgY2xvc2Vfb3V0IGNcblxubGV0IG91dHB1dF9hY3Rpdml0aWVzIHIgZmx1eCA9XG4gIG1hdGNoICFhY3RzRGVzY3Igd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIChfLCBmLCBsYXN0KSAtPlxuICAgIGxldCAoKSA9XG4gICAgICBpZiAhZW1wdHlBY3RzIHRoZW5cbiAgICAgICAgZW1wdHlBY3RzIDo9IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIsQCxcIlxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbWyVpXCIgciBpblxuICAgIGxldCAoKSA9XG4gICAgICBmb3IgaSA9IDAgdG8gbGFzdCBkb1xuICAgICAgICBsZXQgaywgaycgPSB0cnkgTGlzdC5hc3NvYyBpIGZsdXggd2l0aCBOb3RfZm91bmQgLT4gMC4sIDAuIGluXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIsJWZcIiAoaycgLS4gaylcbiAgICAgIGRvbmVcbiAgICBpblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJdQF1cIlxuXG50eXBlIGZkID0geyBkZXNjOiBvdXRfY2hhbm5lbDsgZm9ybTogRm9ybWF0LmZvcm1hdHRlcjsgaXNfdHN2OiBib29sIH1cblxudHlwZSBmb3JtYXQgPVxuICB8IFN0YW5kQnkgb2YgKHN0cmluZyAqIHN0cmluZyAqIHN0cmluZyBhcnJheSlcbiAgfCBSYXcgb2YgZmRcbiAgfCBTdmcgb2YgUHBfc3ZnLnN0b3JlXG5cbmxldCBwbG90RGVzY3IgPSByZWYgTm9uZVxuXG5sZXQgY2xvc2VfcGxvdCAoKSA9XG4gIG1hdGNoICFwbG90RGVzY3Igd2l0aFxuICB8IE5vbmUgfCBTb21lIChTdGFuZEJ5IF8pIC0+ICgpXG4gIHwgU29tZSAoUmF3IHBsb3QpIC0+IGNsb3NlX291dCBwbG90LmRlc2NcbiAgfCBTb21lIChTdmcgcykgLT4gUHBfc3ZnLnRvX2ZpbGUgc1xuXG5sZXQgdHJhY2VEZXNjciA9IHJlZiBOb25lXG5sZXQgdHJhY2VOb3RFbXB0eSA9IHJlZiBmYWxzZVxuXG5sZXQgY2xvc2VfdHJhY2UgKCkgPVxuICBtYXRjaCAhdHJhY2VEZXNjciB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZGVzYyAtPlxuICAgIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBcIl1cXG59XFxuXCIgaW5cbiAgICBsZXQgKCkgPSBjbG9zZV9vdXQgZGVzYyBpblxuICAgIHRyYWNlRGVzY3IgOj0gTm9uZVxuXG5sZXQgaW5pdGlhbGl6ZSBhY3Rpdml0aWVzX2ZpbGUgdHJhY2VfZmlsZSBwbG90UGFjayBlbnYgPVxuICBsZXQgKCkgPVxuICAgIG1hdGNoIHRyYWNlX2ZpbGUgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBzIC0+XG4gICAgICBsZXQgZGVzYyA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0IHMgaW5cbiAgICAgIGxldCAoKSA9IFRyYWNlLmluaXRfdHJhY2VfZmlsZSB+dXVpZCBlbnYgZGVzYyBpblxuICAgICAgdHJhY2VEZXNjciA6PSBTb21lIGRlc2NcbiAgaW5cbiAgbGV0ICgpID0gaW5pdF9hY3Rpdml0aWVzIGVudiBhY3Rpdml0aWVzX2ZpbGUgaW5cbiAgbWF0Y2ggcGxvdFBhY2sgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHBhY2sgLT4gcGxvdERlc2NyIDo9IFNvbWUgKFN0YW5kQnkgcGFjaylcblxubGV0IGxhdW5jaF9wbG90IChmaWxlbmFtZSwgdGl0bGUsIGhlYWQpID1cbiAgbGV0IGZvcm1hdCA9XG4gICAgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IGZpbGVuYW1lIFwiLnN2Z1wiIHRoZW5cbiAgICAgIFN2Z1xuICAgICAgICB7XG4gICAgICAgICAgUHBfc3ZnLmZpbGUgPSBmaWxlbmFtZTtcbiAgICAgICAgICBQcF9zdmcudGl0bGU7XG4gICAgICAgICAgUHBfc3ZnLmRlc2NyID0gXCJcXFwidXVpZFxcXCIgOiBcXFwiXCIgXiBzdHJpbmdfb2ZfaW50IHV1aWQgXiBcIlxcXCJcIjtcbiAgICAgICAgICBQcF9zdmcubGVnZW5kID0gaGVhZDtcbiAgICAgICAgICBQcF9zdmcucG9pbnRzID0gW107XG4gICAgICAgIH1cbiAgICBlbHNlIChcbiAgICAgIGxldCBkX2NoYW4gPSBLYXBwYV9maWxlcy5vcGVuX291dCBmaWxlbmFtZSBpblxuICAgICAgbGV0IGQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGRfY2hhbiBpblxuICAgICAgbGV0IGlzX3RzdiA9IEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmaWxlbmFtZSBcIi50c3ZcIiBpblxuICAgICAgbGV0ICgpID0gaWYgbm90IGlzX3RzdiB0aGVuIEZvcm1hdC5mcHJpbnRmIGQgXCIjICVzQC5cIiB0aXRsZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgbm90IGlzX3RzdiB0aGVuIEZvcm1hdC5mcHJpbnRmIGQgXCIjIFxcXCJ1dWlkXFxcIiA6IFxcXCIlaVxcXCJALlwiIHV1aWRcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBEYXRhLnByaW50X3Bsb3RfbGVnZW5kIH5pc190c3YgZCBoZWFkIGluXG4gICAgICBSYXcgeyBkZXNjID0gZF9jaGFuOyBmb3JtID0gZDsgaXNfdHN2IH1cbiAgICApXG4gIGluXG4gIHBsb3REZXNjciA6PSBTb21lIGZvcm1hdFxuXG5sZXQgcmVjIHBsb3Rfbm93IGwgPVxuICBtYXRjaCAhcGxvdERlc2NyIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgKFN0YW5kQnkgcCkgLT5cbiAgICBsZXQgKCkgPSBsYXVuY2hfcGxvdCBwIGluXG4gICAgcGxvdF9ub3cgbFxuICB8IFNvbWUgKFJhdyBmZCkgLT5cbiAgICBEYXRhLnByaW50X3Bsb3RfbGluZSB+aXNfdHN2OmZkLmlzX3RzdiBOYnIucHJpbnRfb3B0aW9uIGZkLmZvcm0gbFxuICB8IFNvbWUgKFN2ZyBzKSAtPiBzLlBwX3N2Zy5wb2ludHMgPC0gbCA6OiBzLlBwX3N2Zy5wb2ludHNcblxubGV0IHNuYXBzaG90IGZpbGUgcyA9XG4gIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmaWxlIFwiLmRvdFwiIHRoZW5cbiAgICBLYXBwYV9maWxlcy53aXRoX3NuYXBzaG90IGZpbGUgXCIuZG90XCIgcy5EYXRhLnNuYXBzaG90X2V2ZW50XG4gICAgICAoS2FwcGFfZmlsZXMud3JhcF9mb3JtYXR0ZXIgKGZ1biBmIC0+IERhdGEucHJpbnRfZG90X3NuYXBzaG90IH51dWlkIGYgcykpXG4gIGVsc2UgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IGZpbGUgXCIuanNvblwiIHRoZW5cbiAgICBLYXBwYV9maWxlcy53aXRoX3NuYXBzaG90IGZpbGUgXCIuanNvblwiIHMuRGF0YS5zbmFwc2hvdF9ldmVudCAoZnVuIGQgLT5cbiAgICAgICAgSnNvblV0aWwud3JpdGVfdG9fY2hhbm5lbCBEYXRhLndyaXRlX3NuYXBzaG90IGQgcylcbiAgZWxzZVxuICAgIEthcHBhX2ZpbGVzLndpdGhfc25hcHNob3QgZmlsZSBcIi5rYVwiIHMuRGF0YS5zbmFwc2hvdF9ldmVudFxuICAgICAgKEthcHBhX2ZpbGVzLndyYXBfZm9ybWF0dGVyIChmdW4gZiAtPiBEYXRhLnByaW50X3NuYXBzaG90IH51dWlkIGYgcykpXG5cbmxldCBwcmludF9zcGVjaWVzIHRpbWUgZiBtaXh0dXJlID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVnOiBAWzxoPiVhQF1ALlwiIHRpbWUgVXNlcl9ncmFwaC5wcmludF9jYyBtaXh0dXJlXG5cbmxldCB3YXJuaW5nX2J1ZmZlciA6IChMb2MudCBvcHRpb24gKiAoRm9ybWF0LmZvcm1hdHRlciAtPiB1bml0KSkgbGlzdCByZWYgPVxuICByZWYgW11cblxubGV0IGdvID0gZnVuY3Rpb25cbiAgfCBEYXRhLlNuYXBzaG90IChmLCBzKSAtPiBzbmFwc2hvdCBmIHNcbiAgfCBEYXRhLkRJTiAobiwgZikgLT4gb3V0cHV0X2ZsdXggbiBmXG4gIHwgRGF0YS5EZWx0YUFjdGl2aXRpZXMgKHIsIGZsdXgpIC0+IG91dHB1dF9hY3Rpdml0aWVzIHIgZmx1eFxuICB8IERhdGEuUGxvdCB4IC0+IHBsb3Rfbm93IHhcbiAgfCBEYXRhLlByaW50IHAgLT5cbiAgICBsZXQgZGVzYyA9XG4gICAgICBtYXRjaCBwLkRhdGEuZmlsZV9saW5lX25hbWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgc3Rkb3V0XG4gICAgICB8IFNvbWUgZmlsZSAtPiBnZXRfZGVzYyBmaWxlIHByaW50X2Rlc2NcbiAgICBpblxuICAgIEZvcm1hdC5mcHJpbnRmIGRlc2MgXCIlc0AuXCIgcC5EYXRhLmZpbGVfbGluZV90ZXh0XG4gIHwgRGF0YS5Mb2cgcyAtPiBGb3JtYXQucHJpbnRmIFwiJXNALlwiIHNcbiAgfCBEYXRhLldhcm5pbmcgKHBvcywgbXNnKSAtPiB3YXJuaW5nX2J1ZmZlciA6PSAocG9zLCBtc2cpIDo6ICF3YXJuaW5nX2J1ZmZlclxuICB8IERhdGEuVHJhY2VTdGVwIHN0ZXAgLT5cbiAgICAobWF0Y2ggIXRyYWNlRGVzY3Igd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBkIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiAhdHJhY2VOb3RFbXB0eSB0aGVuXG4gICAgICAgICAgb3V0cHV0X2NoYXIgZCAnLCdcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRyYWNlTm90RW1wdHkgOj0gdHJ1ZVxuICAgICAgaW5cbiAgICAgIEpzb25VdGlsLndyaXRlX3RvX2NoYW5uZWwgVHJhY2Uud3JpdGVfc3RlcCBkIHN0ZXApXG4gIHwgRGF0YS5TcGVjaWVzIChmaWxlLCB0aW1lLCBtaXh0dXJlKSAtPlxuICAgIGxldCBkZXNjID0gZ2V0X2Rlc2MgZmlsZSBzcGVjaWVzX2Rlc2MgaW5cbiAgICBwcmludF9zcGVjaWVzIHRpbWUgZGVzYyBtaXh0dXJlXG5cbmxldCBpbnB1dHNEZXNjID0gcmVmIE5vbmVcblxubGV0IGZsdXNoX3dhcm5pbmcgKCkgPVxuICBsZXQgbCA9IExpc3QucmV2ICF3YXJuaW5nX2J1ZmZlciBpblxuICBsZXQgKCkgPSB3YXJuaW5nX2J1ZmZlciA6PSBbXSBpblxuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChwb3MsIG1zZykgLT4gRGF0YS5wcmludF93YXJuaW5nID9wb3MgRm9ybWF0LmVycl9mb3JtYXR0ZXIgbXNnKVxuICAgIGxcblxubGV0IGNsb3NlX2lucHV0ID9ldmVudCAoKSA9XG4gIG1hdGNoICFpbnB1dHNEZXNjIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBpbnB1dHMgLT5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggZXZlbnQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgZXZlbnQgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGZcbiAgICAgICAgICAoRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBpbnB1dHMpXG4gICAgICAgICAgXCJALiUlbW9kOiBbRV0gPSAlaSBkbyAkU1RPUDtALlwiIGV2ZW50XG4gICAgaW5cbiAgICBjbG9zZV9vdXQgaW5wdXRzXG5cbmxldCBjbG9zZSA/ZXZlbnQgKCkgPVxuICBsZXQgKCkgPSBjbG9zZV9wbG90ICgpIGluXG4gIGxldCAoKSA9IGNsb3NlX3RyYWNlICgpIGluXG4gIGxldCAoKSA9IGNsb3NlX2FjdGl2aXRpZXMgKCkgaW5cbiAgbGV0ICgpID0gZmx1c2hfd2FybmluZyAoKSBpblxuICBsZXQgKCkgPSBjbG9zZV9pbnB1dCA/ZXZlbnQgKCkgaW5cbiAgY2xvc2VfZGVzYyAoKVxuXG5sZXQgaW5pdGlhbF9pbnB1dHMgY29uZiBlbnYgaW5pdCB+ZmlsZW5hbWUgPVxuICBsZXQgaW5wdXRzID0gS2FwcGFfZmlsZXMub3Blbl9vdXRfZnJlc2ggZmlsZW5hbWUgW10gXCJcIiBcIi5rYVwiIGluXG4gIGxldCBpbnB1dHNfZm9ybSA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgaW5wdXRzIGluXG4gIGxldCAoKSA9IERhdGEucHJpbnRfaW5pdGlhbF9pbnB1dHMgfnV1aWQgY29uZiBlbnYgaW5wdXRzX2Zvcm0gaW5pdCBpblxuICBpbnB1dHNEZXNjIDo9IFNvbWUgaW5wdXRzXG5cbmxldCBpbnB1dF9tb2RpZmljYXRpb25zIGVudiBldmVudCBtb2RzID1cbiAgbWF0Y2ggIWlucHV0c0Rlc2Mgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGlucHV0cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmXG4gICAgICAoRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBpbnB1dHMpXG4gICAgICBcIiUlbW9kOiBbRV0gPSAlaSBkbyAlYUAuXCIgZXZlbnRcbiAgICAgIChQcC5saXN0IH50cmFpbGluZzpQcC5jb2xvbiBQcC5jb2xvblxuICAgICAgICAgKEthcHBhX3ByaW50ZXIubW9kaWZpY2F0aW9uIH5ub0NvdW50ZXJzOiFQYXJhbWV0ZXIuZGVidWdfbW9kZU9uIH5lbnYpKVxuICAgICAgbW9kc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBkaXJlY3RpdmVfdW5pdCA9IFRpbWUgfCBFdmVudFxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgYWxnX3Zhcl9vdmVyd3JpdGU6IChzdHJpbmcgKiBOYnIudCkgbGlzdDtcbiAgbXV0YWJsZSBtYXJzaGFsaXplZEluRmlsZTogc3RyaW5nO1xuICBtdXRhYmxlIGluaXRpYWxNaXg6IHN0cmluZyBvcHRpb247XG4gIG11dGFibGUgcmVzY2FsZTogZmxvYXQgb3B0aW9uO1xuICBtdXRhYmxlIHNlZWRWYWx1ZTogaW50IG9wdGlvbjtcbiAgbXV0YWJsZSB1bml0OiBkaXJlY3RpdmVfdW5pdDtcbiAgbXV0YWJsZSBtYXJzaGFsaXplT3V0RmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgbXV0YWJsZSBkb21haW5PdXRwdXRGaWxlOiBzdHJpbmcgb3B0aW9uO1xuICBtdXRhYmxlIHRyYWNlRmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgbXV0YWJsZSBsb2dGaWxlOiBzdHJpbmcgb3B0aW9uO1xuICBtdXRhYmxlIGNvbXBpbGVfbW9kZTogYm9vbDtcbiAgbXV0YWJsZSBzaGFyaW5nOiBQYXR0ZXJuLnNoYXJpbmdfbGV2ZWw7XG4gIG11dGFibGUgc2hvd0VmZmljaWVuY3k6IGJvb2w7XG4gIG11dGFibGUgdGltZUluZGVwZW5kZW50OiBib29sO1xufVxuXG5sZXQgZGVmYXVsdCA6IHQgPVxuICB7XG4gICAgYWxnX3Zhcl9vdmVyd3JpdGUgPSBbXTtcbiAgICByZXNjYWxlID0gTm9uZTtcbiAgICBtYXJzaGFsaXplZEluRmlsZSA9IFwiXCI7XG4gICAgaW5pdGlhbE1peCA9IE5vbmU7XG4gICAgc2VlZFZhbHVlID0gTm9uZTtcbiAgICB1bml0ID0gVGltZTtcbiAgICBtYXJzaGFsaXplT3V0RmlsZSA9IE5vbmU7XG4gICAgZG9tYWluT3V0cHV0RmlsZSA9IE5vbmU7XG4gICAgdHJhY2VGaWxlID0gTm9uZTtcbiAgICBsb2dGaWxlID0gU29tZSBcImlucHV0c1wiO1xuICAgIGNvbXBpbGVfbW9kZSA9IGZhbHNlO1xuICAgIHNoYXJpbmcgPSBQYXR0ZXJuLkNvbXBhdGlibGVfcGF0dGVybnM7XG4gICAgc2hvd0VmZmljaWVuY3kgPSBmYWxzZTtcbiAgICB0aW1lSW5kZXBlbmRlbnQgPSBmYWxzZTtcbiAgfVxuXG5sZXQgb3B0aW9ucyAodCA6IHQpIDogKHN0cmluZyAqIEFyZy5zcGVjICogc3RyaW5nKSBsaXN0ID1cbiAgW1xuICAgICggXCItbWl4dHVyZVwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIGZpYyAtPiB0LmluaXRpYWxNaXggPC0gU29tZSBmaWMpLFxuICAgICAgXCJUYWtlIHRoZSBpbml0aWFsIHN0YXRlIGZyb20gdGhpcyBmaWxlIChpZ25vcmUgJWluaXQgZnJvbSBvdGhlciBmaWxlcylcIiApO1xuICAgICggXCItdmFyXCIsXG4gICAgICBBcmcuVHVwbGVcbiAgICAgICAgKGxldCB0bXBfdmFyX25hbWUgPSByZWYgXCJcIiBpblxuICAgICAgICAgW1xuICAgICAgICAgICBBcmcuU3RyaW5nIChmdW4gbmFtZSAtPiB0bXBfdmFyX25hbWUgOj0gbmFtZSk7XG4gICAgICAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgICAgICAoZnVuIHZhcl92YWwgLT5cbiAgICAgICAgICAgICAgIHQuYWxnX3Zhcl9vdmVyd3JpdGUgPC1cbiAgICAgICAgICAgICAgICAgKCAhdG1wX3Zhcl9uYW1lLFxuICAgICAgICAgICAgICAgICAgIHRyeSBOYnIub2Zfc3RyaW5nIHZhcl92YWxcbiAgICAgICAgICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgKEFyZy5CYWQgKFwiXFxcIlwiIF4gdmFyX3ZhbCBeIFwiXFxcIiBpcyBub3QgYSB2YWxpZCB2YWx1ZVwiKSkgKVxuICAgICAgICAgICAgICAgICA6OiB0LmFsZ192YXJfb3ZlcndyaXRlKTtcbiAgICAgICAgIF0pLFxuICAgICAgXCJTZXQgYSB2YXJpYWJsZSB0byBhIGdpdmVuIHZhbHVlXCIgKTtcbiAgICAoIFwiLWxvYWQtc2ltXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gZmlsZSAtPiB0Lm1hcnNoYWxpemVkSW5GaWxlIDwtIGZpbGUpLFxuICAgICAgXCJsb2FkIHNpbXVsYXRpb24gcGFja2FnZSBpbnN0ZWFkIG9mIGthcHBhIGZpbGVzXCIgKTtcbiAgICAoIFwiLXJlc2NhbGVcIixcbiAgICAgIEFyZy5GbG9hdCAoZnVuIGkgLT4gdC5yZXNjYWxlIDwtIFNvbWUgaSksXG4gICAgICBcIkFwcGx5IHJlc2NhbGluZyBmYWN0b3IgdG8gaW5pdGlhbCBjb25kaXRpb25cIiApO1xuICAgICggXCItdVwiLFxuICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBcInRpbWVcIiB8IFwiVGltZVwiIHwgXCJ0XCIgLT4gdC51bml0IDwtIFRpbWVcbiAgICAgICAgfCBcImV2ZW50XCIgfCBcImV2ZW50c1wiIHwgXCJlXCIgfCBcIkV2ZW50XCIgfCBcIkV2ZW50c1wiIC0+IHQudW5pdCA8LSBFdmVudFxuICAgICAgICB8IHMgLT4gcmFpc2UgKEFyZy5CYWQgKFwiVW5yZWNvZ25pemVkIHVuaXQ6IFwiIF4gcykpKSxcbiAgICAgIFwidW5pdCAodGltZS9ldmVudCkgaW4gd2hpY2ggbGltaXQgYW5kIHBsb3QgcGVyaW9kIGFyZSBzcGVjaWZpZWRcIiApO1xuICAgICggXCItZVwiLFxuICAgICAgQXJnLkludFxuICAgICAgICAoZnVuIGUgLT5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEFyZy5CYWRcbiAgICAgICAgICAgICAgIChcIk9wdGlvbiAnLWUnIGhhcyBiZWVuIHJlcGxhY2UgYnkgJy11IGV2ZW50IC1sIFwiXG4gICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBlIF4gXCInXCIpKSksXG4gICAgICBcIkRlcHJlY2F0ZWQgb3B0aW9uXCIgKTtcbiAgICAoIFwiLW1ha2Utc2ltXCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW4gbWFyc2hhbGl6ZU91dEZpbGUgLT4gdC5tYXJzaGFsaXplT3V0RmlsZSA8LSBTb21lIG1hcnNoYWxpemVPdXRGaWxlKSxcbiAgICAgIFwic2F2ZSBrYXBwYSBmaWxlcyBhcyBhIHNpbXVsYXRpb24gcGFja2FnZVwiICk7XG4gICAgKCBcIi1kdW1wLWNjXCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW4gZG9tYWluT3V0cHV0RmlsZSAtPiB0LmRvbWFpbk91dHB1dEZpbGUgPC0gU29tZSBkb21haW5PdXRwdXRGaWxlKSxcbiAgICAgIFwiZmlsZSBuYW1lIGZvciBkdW1waW5nIHRoZSBkb21haW4gb2Ygb2JzZXJ2YWJsZXNcIiApO1xuICAgICggXCItdHJhY2VcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biB0cmFjZUZpbGUgLT4gdC50cmFjZUZpbGUgPC0gU29tZSB0cmFjZUZpbGUpLFxuICAgICAgXCJmaWxlIG5hbWUgZm9yIGR1bXBpbmcgdGhlIHNpbXVsYXRpb24gdHJhY2VcIiApO1xuICAgICggXCItLXRpbWUtaW5kZXBlbmRlbnRcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gdC50aW1lSW5kZXBlbmRlbnQgPC0gdHJ1ZSksXG4gICAgICBcIkRpc2FibGUgdGhlIHVzZSBvZiB0aW1lIGlzIHN0b3J5IGhldXJpdGljcyAoZm9yIHRlc3Qgc3VpdGUpXCIgKTtcbiAgICAoIFwiLXNlZWRcIixcbiAgICAgIEFyZy5JbnQgKGZ1biBpIC0+IHQuc2VlZFZhbHVlIDwtIFNvbWUgaSksXG4gICAgICBcIlNlZWQgZm9yIHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvclwiICk7XG4gICAgKCBcIi0tcHJpbnQtZWZmaWNpZW5jeVwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiB0LnNob3dFZmZpY2llbmN5IDwtIHRydWUpLFxuICAgICAgXCJLYVNpbSB0ZWxscyBob3cgZmFzdCBpdCBydW5zXCIgKTtcbiAgICAoIFwiLXNoYXJpbmdcIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgXCJub1wiIHwgXCJub25lXCIgfCBcIk5vbmVcIiAtPiB0LnNoYXJpbmcgPC0gUGF0dGVybi5Ob19zaGFyaW5nXG4gICAgICAgIHwgXCJDb21wYXRpYmxlXCIgLT4gdC5zaGFyaW5nIDwtIFBhdHRlcm4uTWF4X3NoYXJpbmdcbiAgICAgICAgfCBcIm1heFwiIHwgXCJNYXhcIiAtPiB0LnNoYXJpbmcgPC0gUGF0dGVybi5NYXhfc2hhcmluZ1xuICAgICAgICB8IHMgLT4gcmFpc2UgKEFyZy5CYWQgKFwiVW5yZWNvZ25pemVkIHNoYXJpbmcgbGV2ZWw6IFwiIF4gcykpKSxcbiAgICAgIFwiTGV2ZWwgb2Ygc2hhcmluZyBjb21wdXRlZCBiZXR3ZWVuIHBhdHRlcm5zIGR1cmluZyBpbml0aWFsaXphdGlvbiBcXFxuICAgICAgIChOb25lL0NvbXBhdGlibGUvTWF4KVwiICk7XG4gICAgKCBcIi0tY29tcGlsZVwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiB0LmNvbXBpbGVfbW9kZSA8LSB0cnVlKSxcbiAgICAgIFwiRGlzcGxheSBydWxlIGNvbXBpbGF0aW9uIGFzIGFjdGlvbiBsaXN0XCIgKTtcbiAgICAoIFwiLWxvZ1wiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIGxvZ0ZpbGUgLT4gdC5sb2dGaWxlIDwtIFNvbWUgbG9nRmlsZSksXG4gICAgICBcImZpbGUgbmFtZSBvZiB0aGUgZmlsZSB0byByZWdlbmVyYXRlIHRoZSBleGFjdCBzYW1lIHNpbXVsYXRpb25cIiApO1xuICAgICggXCItLW5vLWxvZ1wiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiB0LmxvZ0ZpbGUgPC0gTm9uZSksXG4gICAgICBcIkRvIG5vdCBnZW5lcmF0ZSBhIGZpbGUgdG8gcmVkbyB0aGUgZXhhY3Qgc2FtZSBzaW11bGF0aW9uXCIgKTtcbiAgXVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBwcmVwcm9jZXNzZWRfYXN0ID0ge1xuICBjb25mOiBDb25maWd1cmF0aW9uLnQ7XG4gIHN0b3J5X2NvbXByZXNzaW9uOiBib29sICogYm9vbCAqIGJvb2w7XG4gIGZvcm1hdENmbG93OiBzdHJpbmc7XG4gIGNmbG93RmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgYXN0X2NvbXBpbGVkX2RhdGE6IExLYXBwYV9jb21waWxlci5hc3RfY29tcGlsZWRfZGF0YTtcbiAgb3ZlcndyaXRlX2luaXQ6XG4gICAgKExLYXBwYS5ydWxlX21peHR1cmUsIFJhd19taXh0dXJlLnQsIGludCkgQXN0LmluaXRfc3RhdGVtZW50IGxpc3Qgb3B0aW9uO1xuICBvdmVyd3JpdGVfdDA6IGZsb2F0IG9wdGlvbjtcbn1cblxudHlwZSBjb21waWxhdGlvbl9yZXN1bHQgPSB7XG4gIGNvbmY6IENvbmZpZ3VyYXRpb24udDtcbiAgZW52OiBNb2RlbC50O1xuICBjb250YWN0X21hcDogQ29udGFjdF9tYXAudDtcbiAgdXBkYXRlZF9hbGdfdmFyczogaW50IGxpc3Q7XG4gIHN0b3J5X2NvbXByZXNzaW9uOiAoYm9vbCAqIGJvb2wgKiBib29sKSBvcHRpb247XG4gIGZvcm1hdENmbG93OiBzdHJpbmc7XG4gIGNmbG93RmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgaW5pdF9sOiAoUHJpbWl0aXZlcy5hbGdfZXhwciAqIFByaW1pdGl2ZXMuZWxlbWVudGFyeV9ydWxlKSBsaXN0O1xuICBjb3VudGVyX29wdDogQ291bnRlci50IG9wdGlvbjtcbn1cblxubGV0IHByZXByb2Nlc3NfYXN0IH53YXJuaW5nIH5kZWJ1Z19tb2RlID9rYXNpbV9hcmdzIGNsaV9hcmdzXG4gICAgKGFzdCA6IChfLCBfLCBfLCBfLCBfLCBfKSBBc3QuY29tcGlsKSA6IHByZXByb2Nlc3NlZF9hc3QgPVxuICBsZXQgKCkgPSBGb3JtYXQucHJpbnRmIFwiKyBzaW11bGF0aW9uIHBhcmFtZXRlcnNALlwiIGluXG4gIGxldCBjb25mLCBzdG9yeV9jb21wcmVzc2lvbiwgZm9ybWF0Q2Zsb3csIGNmbG93RmlsZSA9XG4gICAgQ29uZmlndXJhdGlvbi5wYXJzZSBhc3QuQXN0LmNvbmZpZ3VyYXRpb25zXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5wcmludGYgXCIrIFNhbml0eSBjaGVja3NALlwiIGluXG4gIGxldCBzeW50YXhfdmVyc2lvbiA9IGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5zeW50YXhWZXJzaW9uIGluXG4gIGxldCB2YXJfb3ZlcndyaXRlLCBpbml0aWFsTWl4ID1cbiAgICBtYXRjaCBrYXNpbV9hcmdzIHdpdGhcbiAgICB8IE5vbmUgLT4gW10sIE5vbmVcbiAgICB8IFNvbWUga2FzaW1fYXJncyAtPlxuICAgICAga2FzaW1fYXJncy5LYXNpbV9hcmdzLmFsZ192YXJfb3ZlcndyaXRlLCBrYXNpbV9hcmdzLkthc2ltX2FyZ3MuaW5pdGlhbE1peFxuICBpblxuICBsZXQgYXN0X2NvbXBpbGVkX2RhdGEgOiBMS2FwcGFfY29tcGlsZXIuYXN0X2NvbXBpbGVkX2RhdGEgPVxuICAgIExLYXBwYV9jb21waWxlci5jb21waWxfb2ZfYXN0IH53YXJuaW5nIH5kZWJ1Z19tb2RlIH5zeW50YXhfdmVyc2lvblxuICAgICAgfnZhcl9vdmVyd3JpdGUgYXN0XG4gIGluXG4gIGxldCBvdmVyd3JpdGVfaW5pdCwgb3ZlcndyaXRlX3QwID1cbiAgICBtYXRjaCBpbml0aWFsTWl4IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSwgTm9uZVxuICAgIHwgU29tZSBmaWxlIC0+XG4gICAgICBsZXQgY29tcGlsID1cbiAgICAgICAgbWF0Y2ggc3ludGF4X3ZlcnNpb24gd2l0aFxuICAgICAgICB8IEFzdC5WNCAtPiBLbGV4ZXI0LmNvbXBpbGUgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgQXN0LmVtcHR5X2NvbXBpbCBmaWxlXG4gICAgICAgIHwgQXN0LlYzIC0+XG4gICAgICAgICAgS2FwcGFMZXhlci5jb21waWxlIEZvcm1hdC5zdGRfZm9ybWF0dGVyIEFzdC5lbXB0eV9jb21waWwgZmlsZVxuICAgICAgaW5cbiAgICAgIGxldCBjb25mLCBfLCBfLCBfID0gQ29uZmlndXJhdGlvbi5wYXJzZSBjb21waWwuQXN0LmNvbmZpZ3VyYXRpb25zIGluXG4gICAgICAoIFNvbWVcbiAgICAgICAgICAoTEthcHBhX2NvbXBpbGVyLmluaXRfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgICAgIGFzdF9jb21waWxlZF9kYXRhLmFnZW50c19zaWcgYXN0X2NvbXBpbGVkX2RhdGEuY29udGFjdF9tYXBcbiAgICAgICAgICAgICBhc3RfY29tcGlsZWRfZGF0YS50b2tlbl9uYW1lcy5OYW1lZERlY2xzLmZpbmRlclxuICAgICAgICAgICAgIGFzdF9jb21waWxlZF9kYXRhLmFsZ192YXJzX2ZpbmRlciBjb21waWwuQXN0LmluaXQpLFxuICAgICAgICBjb25mLkNvbmZpZ3VyYXRpb24uaW5pdGlhbCApXG4gIGluXG4gIHtcbiAgICBjb25mO1xuICAgIHN0b3J5X2NvbXByZXNzaW9uO1xuICAgIGZvcm1hdENmbG93O1xuICAgIGNmbG93RmlsZTtcbiAgICBhc3RfY29tcGlsZWRfZGF0YTtcbiAgICBvdmVyd3JpdGVfaW5pdDtcbiAgICBvdmVyd3JpdGVfdDA7XG4gIH1cblxubGV0IGdldF9hc3RfZnJvbV9saXN0X29mX2ZpbGVzIHN5bnRheF92ZXJzaW9uIGZpbGVfbGlzdCA9XG4gIGxldCBjb21waWxpbmdfZnVuY3Rpb24gPVxuICAgIG1hdGNoIHN5bnRheF92ZXJzaW9uIHdpdGhcbiAgICB8IEFzdC5WNCAtPiBLbGV4ZXI0LmNvbXBpbGUgRm9ybWF0LnN0ZF9mb3JtYXR0ZXJcbiAgICB8IEFzdC5WMyAtPiBLYXBwYUxleGVyLmNvbXBpbGUgRm9ybWF0LnN0ZF9mb3JtYXR0ZXJcbiAgaW5cbiAgTGlzdC5mb2xkX2xlZnQgY29tcGlsaW5nX2Z1bmN0aW9uIEFzdC5lbXB0eV9jb21waWwgZmlsZV9saXN0XG5cbmxldCBnZXRfYXN0X2Zyb21fY2xpX2FyZ3MgY2xpX2FyZ3MgPVxuICBnZXRfYXN0X2Zyb21fbGlzdF9vZl9maWxlcyBjbGlfYXJncy5SdW5fY2xpX2FyZ3Muc3ludGF4VmVyc2lvblxuICAgIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5pbnB1dEthcHBhRmlsZU5hbWVzXG5cbmxldCBnZXRfcHJlcHJvY2Vzc2VkX2FzdF9mcm9tX2NsaV9hcmdzIH53YXJuaW5nIH5kZWJ1Z19tb2RlXG4gICAgPyhrYXNpbV9hcmdzID0gS2FzaW1fYXJncy5kZWZhdWx0KSBjbGlfYXJncyA9XG4gIGxldCBhc3QgOlxuICAgICAgKCBBc3QuYWdlbnQsXG4gICAgICAgIEFzdC5hZ2VudF9zaWcsXG4gICAgICAgIEFzdC5taXh0dXJlLFxuICAgICAgICBBc3QubWl4dHVyZSxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICBBc3QucnVsZSApXG4gICAgICBBc3QuY29tcGlsID1cbiAgICBnZXRfYXN0X2Zyb21fbGlzdF9vZl9maWxlcyBjbGlfYXJncy5SdW5fY2xpX2FyZ3Muc3ludGF4VmVyc2lvblxuICAgICAgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLmlucHV0S2FwcGFGaWxlTmFtZXNcbiAgaW5cbiAgcHJlcHJvY2Vzc19hc3Qgfndhcm5pbmcgfmRlYnVnX21vZGUgY2xpX2FyZ3Mgfmthc2ltX2FyZ3MgYXN0XG5cbnR5cGUgY29tcGlsYXRpb25fcGFjayA9IHtcbiAgY29tcGlsYXRpb25fcmVzdWx0OiBjb21waWxhdGlvbl9yZXN1bHQ7XG4gIGFsZ19vdmVyd3JpdGU6IChpbnQgKiBQcmltaXRpdmVzLmFsZ19leHByKSBsaXN0O1xuICBvdmVyd3JpdGVfdDA6IGZsb2F0IG9wdGlvbjtcbn1cblxubGV0IGdldF9wYWNrX2Zyb21fcHJlcHJvY2Vzc2VkX2FzdCBrYXNpbV9hcmdzIH4oY29tcGlsZV9tb2RlX29uIDogYm9vbClcbiAgICAocHJlcHJvY2Vzc2VkX2FzdCA6IHByZXByb2Nlc3NlZF9hc3QpIDogY29tcGlsYXRpb25fcGFjayA9XG4gIGxldCBuLCB3LCBzID0gcHJlcHJvY2Vzc2VkX2FzdC5zdG9yeV9jb21wcmVzc2lvbiBpblxuICBsZXQgKCkgPSBGb3JtYXQucHJpbnRmIFwiKyBDb21waWxpbmcuLi5ALlwiIGluXG4gIGxldCBlbnYsIGhhc190cmFja2luZywgaW5pdF9sID1cbiAgICBFdmFsLmNvbXBpbGUgfm91dHB1dHM6T3V0cHV0cy5nb1xuICAgICAgfnBhdXNlOihmdW4gZiAtPiBmICgpKVxuICAgICAgfnJldHVybjooZnVuIHggLT4geClcbiAgICAgIH5kZWJ1Z19tb2RlOiFQYXJhbWV0ZXIuZGVidWdfbW9kZU9uIH5zaGFyaW5nOmthc2ltX2FyZ3MuS2FzaW1fYXJncy5zaGFyaW5nXG4gICAgICA/cmVzY2FsZV9pbml0Omthc2ltX2FyZ3MuS2FzaW1fYXJncy5yZXNjYWxlXG4gICAgICA/b3ZlcndyaXRlX2luaXQ6cHJlcHJvY2Vzc2VkX2FzdC5vdmVyd3JpdGVfaW5pdFxuICAgICAgP292ZXJ3cml0ZV90MDpwcmVwcm9jZXNzZWRfYXN0Lm92ZXJ3cml0ZV90MCB+Y29tcGlsZV9tb2RlX29uXG4gICAgICBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLmFnZW50c19zaWdcbiAgICAgIHByZXByb2Nlc3NlZF9hc3QuYXN0X2NvbXBpbGVkX2RhdGEudG9rZW5fbmFtZXNcbiAgICAgIHByZXByb2Nlc3NlZF9hc3QuYXN0X2NvbXBpbGVkX2RhdGEuY29udGFjdF9tYXBcbiAgICAgIHByZXByb2Nlc3NlZF9hc3QuYXN0X2NvbXBpbGVkX2RhdGEucmVzdWx0XG4gIGluXG4gIGxldCBzdG9yeV9jb21wcmVzc2lvbiA9XG4gICAgaWYgaGFzX3RyYWNraW5nICYmIChuIHx8IHcgfHwgcykgdGhlblxuICAgICAgU29tZSBwcmVwcm9jZXNzZWRfYXN0LnN0b3J5X2NvbXByZXNzaW9uXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICBpblxuICB7XG4gICAgY29tcGlsYXRpb25fcmVzdWx0ID1cbiAgICAgIHtcbiAgICAgICAgY29uZiA9IHByZXByb2Nlc3NlZF9hc3QuY29uZjtcbiAgICAgICAgZW52O1xuICAgICAgICBjb250YWN0X21hcCA9IHByZXByb2Nlc3NlZF9hc3QuYXN0X2NvbXBpbGVkX2RhdGEuY29udGFjdF9tYXA7XG4gICAgICAgIHVwZGF0ZWRfYWxnX3ZhcnMgPSBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLnVwZGF0ZWRfYWxnX3ZhcnM7XG4gICAgICAgIHN0b3J5X2NvbXByZXNzaW9uO1xuICAgICAgICBmb3JtYXRDZmxvdyA9IHByZXByb2Nlc3NlZF9hc3QuZm9ybWF0Q2Zsb3c7XG4gICAgICAgIGNmbG93RmlsZSA9IHByZXByb2Nlc3NlZF9hc3QuY2Zsb3dGaWxlO1xuICAgICAgICBpbml0X2w7XG4gICAgICAgIGNvdW50ZXJfb3B0ID0gTm9uZTtcbiAgICAgIH07XG4gICAgYWxnX292ZXJ3cml0ZSA9IFtdO1xuICAgIG92ZXJ3cml0ZV90MCA9IHByZXByb2Nlc3NlZF9hc3Qub3ZlcndyaXRlX3QwO1xuICB9XG5cbmxldCBnZXRfcGFja19mcm9tX21hcnNoYWxpemVkZmlsZSB+d2FybmluZyBrYXNpbV9hcmdzIGNsaV9hcmdzIG1hcnNoYWxpemVkX2ZpbGVcbiAgICA6IGNvbXBpbGF0aW9uX3BhY2sgPVxuICBhc3NlcnQgKG1hcnNoYWxpemVkX2ZpbGUgPD4gXCJcIik7XG4gIHRyeVxuICAgIGxldCBkID0gb3Blbl9pbl9iaW4gbWFyc2hhbGl6ZWRfZmlsZSBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBjbGlfYXJncy5SdW5fY2xpX2FyZ3MuaW5wdXRLYXBwYUZpbGVOYW1lcyA8PiBbXSB0aGVuXG4gICAgICAgIHdhcm5pbmcgfnBvczpMb2MuZHVtbXkgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAgICAgICAgICAgXCJTaW11bGF0aW9uIHBhY2thZ2UgbG9hZGVkLCBhbGwga2FwcGEgZmlsZXMgYXJlIGlnbm9yZWRcIilcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQucHJpbnRmIFwiKyBMb2FkaW5nIHNpbXVsYXRpb24gcGFja2FnZSAlcy4uLkAuXCIgbWFyc2hhbGl6ZWRfZmlsZVxuICAgIGluXG4gICAgbGV0IGNvbXBpbGF0aW9uX3Jlc3VsdCA6IGNvbXBpbGF0aW9uX3Jlc3VsdCA9IE1hcnNoYWwuZnJvbV9jaGFubmVsIGQgaW5cbiAgICBsZXQgKCkgPSBTdGRsaWIuY2xvc2VfaW4gZCBpblxuICAgIGxldCBhbGdfb3ZlcndyaXRlID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4gKHMsIHYpIC0+XG4gICAgICAgICAgKCBNb2RlbC5udW1fb2ZfYWxnIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBzKSBjb21waWxhdGlvbl9yZXN1bHQuZW52LFxuICAgICAgICAgICAgQWxnX2V4cHIuQ09OU1QgdiApKVxuICAgICAgICBrYXNpbV9hcmdzLkthc2ltX2FyZ3MuYWxnX3Zhcl9vdmVyd3JpdGVcbiAgICBpblxuICAgIG1hdGNoIGthc2ltX2FyZ3MuS2FzaW1fYXJncy5pbml0aWFsTWl4IHdpdGhcbiAgICB8IE5vbmUgLT4geyBjb21waWxhdGlvbl9yZXN1bHQ7IGFsZ19vdmVyd3JpdGU7IG92ZXJ3cml0ZV90MCA9IE5vbmUgfVxuICAgIHwgU29tZSBmaWxlIC0+XG4gICAgICBsZXQgY29tcGlsID1cbiAgICAgICAgZ2V0X2FzdF9mcm9tX2xpc3Rfb2ZfZmlsZXMgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLnN5bnRheFZlcnNpb24gWyBmaWxlIF1cbiAgICAgIGluXG4gICAgICBsZXQgb3ZlcndyaXRlX3QwIDogZmxvYXQgb3B0aW9uID1cbiAgICAgICAgKENvbmZpZ3VyYXRpb24ucGFyc2UgY29tcGlsLkFzdC5jb25maWd1cmF0aW9ucyB8PiBmdW4gKGEsIF8sIF8sIF8pIC0+IGEpXG4gICAgICAgIHw+IGZ1biBjb25mIC0+IGNvbmYuQ29uZmlndXJhdGlvbi5pbml0aWFsXG4gICAgICBpblxuXG4gICAgICBsZXQgcmF3X2luaXRzID1cbiAgICAgICAgTEthcHBhX2NvbXBpbGVyLmluaXRfb2ZfYXN0IH53YXJuaW5nXG4gICAgICAgICAgfnN5bnRheF92ZXJzaW9uOmNsaV9hcmdzLlJ1bl9jbGlfYXJncy5zeW50YXhWZXJzaW9uXG4gICAgICAgICAgKE1vZGVsLnNpZ25hdHVyZXMgY29tcGlsYXRpb25fcmVzdWx0LmVudilcbiAgICAgICAgICBjb21waWxhdGlvbl9yZXN1bHQuY29udGFjdF9tYXBcbiAgICAgICAgICAoTW9kZWwudG9rZW5zX2ZpbmRlciBjb21waWxhdGlvbl9yZXN1bHQuZW52KVxuICAgICAgICAgIChNb2RlbC5hbGdzX2ZpbmRlciBjb21waWxhdGlvbl9yZXN1bHQuZW52KVxuICAgICAgICAgIGNvbXBpbC5Bc3QuaW5pdFxuICAgICAgaW5cbiAgICAgIGxldCBpbml0X2wgPVxuICAgICAgICBFdmFsLmNvbXBpbGVfaW5pdHMgfmRlYnVnX21vZGU6IVBhcmFtZXRlci5kZWJ1Z19tb2RlT24gfndhcm5pbmdcbiAgICAgICAgICA/cmVzY2FsZTprYXNpbV9hcmdzLkthc2ltX2FyZ3MucmVzY2FsZSB+Y29tcGlsZV9tb2RlX29uOmZhbHNlXG4gICAgICAgICAgY29tcGlsYXRpb25fcmVzdWx0LmNvbnRhY3RfbWFwIGNvbXBpbGF0aW9uX3Jlc3VsdC5lbnYgcmF3X2luaXRzXG4gICAgICBpblxuICAgICAge1xuICAgICAgICBjb21waWxhdGlvbl9yZXN1bHQgPSB7IGNvbXBpbGF0aW9uX3Jlc3VsdCB3aXRoIGluaXRfbCB9O1xuICAgICAgICBhbGdfb3ZlcndyaXRlO1xuICAgICAgICBvdmVyd3JpdGVfdDA7XG4gICAgICB9XG4gIHdpdGhcbiAgfCBFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIF8gYXMgZSAtPiByYWlzZSBlXG4gIHwgX2V4biAtPlxuICAgIEZvcm1hdC5wcmludGZcbiAgICAgIFwiU2ltdWxhdGlvbiBwYWNrYWdlIHNlZW1zIHRvIGhhdmUgYmVlbiBjcmVhdGVkIHdpdGggYSBkaWZmZXJlbnQgdmVyc2lvbiBcXFxuICAgICAgIG9mIEthU2ltLCBhYm9ydGluZy4uLlwiO1xuICAgIGV4aXQgMVxuXG5sZXQgZ2V0X2NvbXBpbGF0aW9uX2Zyb21fcGFjayB+d2FybmluZyBrYXNpbV9hcmdzIGNsaV9hcmdzXG4gICAgKHBhY2sgOiBjb21waWxhdGlvbl9wYWNrKSA6IGNvbXBpbGF0aW9uX3Jlc3VsdCA9XG4gIGxldCBpbml0X3RfZnJvbV9maWxlcyA9XG4gICAgT3B0aW9uX3V0aWwudW5zb21lXG4gICAgICAoT3B0aW9uX3V0aWwudW5zb21lIDAuIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmNvbmYuQ29uZmlndXJhdGlvbi5pbml0aWFsKVxuICAgICAgcGFjay5vdmVyd3JpdGVfdDBcbiAgaW5cbiAgbGV0IGluaXRfdCwgbWF4X3RpbWUsIGluaXRfZSwgbWF4X2V2ZW50LCBwbG90X3BlcmlvZCA9XG4gICAgbWF0Y2gga2FzaW1fYXJncy5LYXNpbV9hcmdzLnVuaXQgd2l0aFxuICAgIHwgS2FzaW1fYXJncy5UaW1lIC0+XG4gICAgICAoIE9wdGlvbl91dGlsLnVuc29tZSBpbml0X3RfZnJvbV9maWxlcyBjbGlfYXJncy5SdW5fY2xpX2FyZ3MubWluVmFsdWUsXG4gICAgICAgIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5tYXhWYWx1ZSxcbiAgICAgICAgTm9uZSxcbiAgICAgICAgTm9uZSxcbiAgICAgICAgKG1hdGNoIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5wbG90UGVyaW9kIHdpdGhcbiAgICAgICAgfCBTb21lIGEgLT4gQ29uZmlndXJhdGlvbi5EVCBhXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIE9wdGlvbl91dGlsLnVuc29tZSAoQ29uZmlndXJhdGlvbi5EVCAxLilcbiAgICAgICAgICAgIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmNvbmYuQ29uZmlndXJhdGlvbi5wbG90UGVyaW9kKSApXG4gICAgfCBLYXNpbV9hcmdzLkV2ZW50IC0+XG4gICAgICAoIGluaXRfdF9mcm9tX2ZpbGVzLFxuICAgICAgICBOb25lLFxuICAgICAgICBTb21lXG4gICAgICAgICAgKGludF9vZl9mbG9hdCAoT3B0aW9uX3V0aWwudW5zb21lIDAuIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5taW5WYWx1ZSkpLFxuICAgICAgICBPcHRpb25fdXRpbC5tYXAgaW50X29mX2Zsb2F0IGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5tYXhWYWx1ZSxcbiAgICAgICAgKG1hdGNoIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5wbG90UGVyaW9kIHdpdGhcbiAgICAgICAgfCBTb21lIGEgLT4gQ29uZmlndXJhdGlvbi5ERSAoaW50X29mX2Zsb2F0IChjZWlsIGEpKVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBPcHRpb25fdXRpbC51bnNvbWUgKENvbmZpZ3VyYXRpb24uREUgMSlcbiAgICAgICAgICAgIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmNvbmYuQ29uZmlndXJhdGlvbi5wbG90UGVyaW9kKSApXG4gIGluXG4gIGxldCBjb3VudGVyID1cbiAgICBDb3VudGVyLmNyZWF0ZSB+aW5pdF90ID9pbml0X2UgP21heF90aW1lID9tYXhfZXZlbnQgfnBsb3RfcGVyaW9kXG4gICAgICB+bmJfcnVsZXM6KE1vZGVsLm5iX3J1bGVzIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmVudilcbiAgICAgICgpXG4gIGluXG4gIGxldCBlbnYgPVxuICAgIGlmXG4gICAgICBjbGlfYXJncy5SdW5fY2xpX2FyZ3MuYmF0Y2htb2RlXG4gICAgICAmJiBrYXNpbV9hcmdzLkthc2ltX2FyZ3MubWFyc2hhbGl6ZU91dEZpbGUgPSBOb25lXG4gICAgdGhlblxuICAgICAgTW9kZWwucHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZTooQ291bnRlci5tYXhfdGltZSBjb3VudGVyKVxuICAgICAgICA/bWF4X2V2ZW50czooQ291bnRlci5tYXhfZXZlbnRzIGNvdW50ZXIpXG4gICAgICAgIH51cGRhdGVkX3ZhcnM6cGFjay5jb21waWxhdGlvbl9yZXN1bHQudXBkYXRlZF9hbGdfdmFyc1xuICAgICAgICB+YWxnX292ZXJ3cml0ZTpwYWNrLmFsZ19vdmVyd3JpdGUgcGFjay5jb21waWxhdGlvbl9yZXN1bHQuZW52XG4gICAgZWxzZVxuICAgICAgTW9kZWwub3ZlcndyaXRlX3ZhcnMgcGFjay5hbGdfb3ZlcndyaXRlIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmVudlxuICBpblxuICB7IHBhY2suY29tcGlsYXRpb25fcmVzdWx0IHdpdGggZW52OyBjb3VudGVyX29wdCA9IFNvbWUgY291bnRlciB9XG5cbmxldCBnZXRfY29tcGlsYXRpb25fZnJvbV9wcmVwcm9jZXNzZWRfYXN0IH53YXJuaW5nID8oY29tcGlsZV9tb2RlX29uID0gZmFsc2UpXG4gICAgPyhrYXNpbV9hcmdzID0gS2FzaW1fYXJncy5kZWZhdWx0KSBjbGlfYXJncyBwcmVwcm9jZXNzZWRfYXN0IDpcbiAgICBjb21waWxhdGlvbl9yZXN1bHQgPVxuICBsZXQgcGFjayA9XG4gICAgZ2V0X3BhY2tfZnJvbV9wcmVwcm9jZXNzZWRfYXN0IGthc2ltX2FyZ3MgfmNvbXBpbGVfbW9kZV9vbiBwcmVwcm9jZXNzZWRfYXN0XG4gIGluXG4gIGdldF9jb21waWxhdGlvbl9mcm9tX3BhY2sgfndhcm5pbmcga2FzaW1fYXJncyBjbGlfYXJncyBwYWNrXG5cbmxldCBnZXRfY29tcGlsYXRpb24gfndhcm5pbmcgfmRlYnVnX21vZGUgPyhjb21waWxlX21vZGVfb24gPSBmYWxzZSlcbiAgICA/KGthc2ltX2FyZ3MgPSBLYXNpbV9hcmdzLmRlZmF1bHQpIGNsaV9hcmdzIDogY29tcGlsYXRpb25fcmVzdWx0ID1cbiAgbGV0IChwYWNrIDogY29tcGlsYXRpb25fcGFjaykgPVxuICAgIG1hdGNoIGthc2ltX2FyZ3MuS2FzaW1fYXJncy5tYXJzaGFsaXplZEluRmlsZSB3aXRoXG4gICAgfCBcIlwiIC0+XG4gICAgICBsZXQgcHJlcHJvY2Vzc2VkX2FzdCA9XG4gICAgICAgIGdldF9wcmVwcm9jZXNzZWRfYXN0X2Zyb21fY2xpX2FyZ3Mgfndhcm5pbmcgfmRlYnVnX21vZGUgY2xpX2FyZ3NcbiAgICAgIGluXG4gICAgICBnZXRfcGFja19mcm9tX3ByZXByb2Nlc3NlZF9hc3Qga2FzaW1fYXJncyB+Y29tcGlsZV9tb2RlX29uXG4gICAgICAgIHByZXByb2Nlc3NlZF9hc3RcbiAgICB8IG1hcnNoYWxpemVkX2ZpbGUgLT5cbiAgICAgIGdldF9wYWNrX2Zyb21fbWFyc2hhbGl6ZWRmaWxlIH53YXJuaW5nIGthc2ltX2FyZ3MgY2xpX2FyZ3NcbiAgICAgICAgbWFyc2hhbGl6ZWRfZmlsZVxuICBpblxuICBnZXRfY29tcGlsYXRpb25fZnJvbV9wYWNrIH53YXJuaW5nIGthc2ltX2FyZ3MgY2xpX2FyZ3MgcGFja1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0geyBtdXRhYmxlIGRlbGltaXRlcjogY2hhciB9XG5cbmxldCBkZWZhdWx0IDogdCA9IHsgZGVsaW1pdGVyID0gVG9vbHMuZGVmYXVsdF9tZXNzYWdlX2RlbGltdGVyIH1cblxubGV0IG9wdGlvbnMgKHQgOiB0KSA6IChzdHJpbmcgKiBBcmcuc3BlYyAqIHN0cmluZykgbGlzdCA9XG4gIFtcbiAgICAoIFwiLS1kZWxpbWl0ZXJcIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1biBkIC0+XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZCA9IFNjYW5mLnVuZXNjYXBlZCBkIGluXG4gICAgICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgICAgIGlmIDEgPSBTdHJpbmcubGVuZ3RoIGQgdGhlblxuICAgICAgICAgICAgICAgIFN0cmluZy5nZXQgZCAwXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKEFyZy5CYWRcbiAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcImRlbGltZXRlciBoYXMgbXVsdGlwbGUgY2hhcmFjdGVycyAnJXMnXCIgZCkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gdC5kZWxpbWl0ZXIgPC0gZCBpblxuICAgICAgICAgICAgKClcbiAgICAgICAgICB3aXRoIFNjYW5mLlNjYW5fZmFpbHVyZSBfIC0+XG4gICAgICAgICAgICByYWlzZSAoQXJnLkJhZCAoRm9ybWF0LnNwcmludGYgXCJmYWlsZWQgdG8gcGFyc2UgZGVsaW1ldGVyICclcydcIiBkKSkpLFxuICAgICAgXCJEZWxpbWl0ZXIgZm9yIG1lc3NhZ2UgcGFzc2luZ1wiICk7XG4gIF1cbiIsIigqKlxuICAqIGxvZ2dlcnMubWxcbiAgKlxuICAqIGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQW50aXF1ZSwgSU5SSUEgUGFyaXNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjYvMDEvMjAxNlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAyNS8wNS8yMDE2XG4gICogKlxuICAqXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxNiAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIGVuY29kaW5nID1cbiAgfCBNYXRyaXhcbiAgfCBIVE1MX0dyYXBoXG4gIHwgSnNfR3JhcGhcbiAgfCBIVE1MXG4gIHwgSFRNTF9UYWJ1bGFyXG4gIHwgRE9UXG4gIHwgVFhUXG4gIHwgVFhUX1RhYnVsYXJcbiAgfCBYTFNcbiAgfCBPY3RhdmVcbiAgfCBNYXRsYWJcbiAgfCBNYXBsZVxuICB8IE1hdGhlbWF0aWNhXG4gIHwgU0JNTFxuICB8IERPVE5FVFxuICB8IEpzb25cbiAgfCBHRVBISVxuXG5tb2R1bGUgdHlwZSBGb3JtYXRNYXAgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGFkZCA6IGVuY29kaW5nIC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgZmluZCA6IGVuY29kaW5nIC0+ICdhIHQgLT4gJ2FcbiAgdmFsIGVtcHR5IDogJ2EgdFxuZW5kXG5cbm1vZHVsZSBGb3JtYXRNYXAgPSBNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGVuY29kaW5nXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5lbmQpXG5cbnR5cGUgdG9rZW4gPSBTdHJpbmcgb2Ygc3RyaW5nIHwgQnJlYWthYmxlX3NwYWNlIHwgQnJlYWthYmxlX2hpbnRcblxudHlwZSBsb2dnZXIgPVxuICB8IERFVk5VTFxuICB8IEZvcm1hdHRlciBvZiBGb3JtYXQuZm9ybWF0dGVyXG4gIHwgQ2lyY3VsYXJfYnVmZmVyIG9mIHN0cmluZyBDaXJjdWxhcl9idWZmZXJzLnQgcmVmXG4gIHwgSW5maW5pdGVfYnVmZmVyIG9mIHN0cmluZyBJbmZpbml0ZV9idWZmZXJzLnQgcmVmXG5cbmxldCBicmVha2FibGUgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IEhUTUxfVGFidWxhciB8IEhUTUwgfCBIVE1MX0dyYXBoIHwgSnNfR3JhcGggfCBUWFQgLT4gdHJ1ZVxuICB8IE1hdHJpeCB8IEpzb24gfCBNYXRoZW1hdGljYSB8IE1hdGxhYiB8IE9jdGF2ZSB8IE1hcGxlIHwgU0JNTCB8IERPVE5FVCB8IERPVFxuICB8IEdFUEhJIHwgVFhUX1RhYnVsYXIgfCBYTFMgLT5cbiAgICBmYWxzZVxuXG50eXBlIHQgPSB7XG4gIGVuY29kaW5nOiBlbmNvZGluZztcbiAgbG9nZ2VyOiBsb2dnZXI7XG4gIGNoYW5uZWxfb3B0OiBvdXRfY2hhbm5lbCBvcHRpb247XG4gIG11dGFibGUgY3VycmVudF9saW5lOiB0b2tlbiBsaXN0O1xufVxuXG5sZXQgZ2V0X2VuY29kaW5nX2Zvcm1hdCB0ID0gdC5lbmNvZGluZ1xuXG5sZXQgZHVtbXlfaHRtbF9sb2dnZXIgPVxuICB7XG4gICAgKCogIGlkX21hcCA9IHJlZiBTdHJpbmdNYXAuZW1wdHkgOyopXG4gICAgZW5jb2RpbmcgPSBIVE1MO1xuICAgIGxvZ2dlciA9IERFVk5VTDtcbiAgICBjaGFubmVsX29wdCA9IE5vbmU7XG4gICAgY3VycmVudF9saW5lID0gW107XG4gICAgKCogZnJlc2hfaWQgPSByZWYgMTtcbiAgICAgICBub2RlcyA9IHJlZiBbXTtcbiAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgZWRnZXNfbWFwID0gcmVmIE1vZHMuU3RyaW5nMk1hcC5lbXB0eTsqKVxuICB9XG5cbmxldCBkdW1teV90eHRfbG9nZ2VyID1cbiAge1xuICAgICgqICBpZF9tYXAgPSByZWYgU3RyaW5nTWFwLmVtcHR5IDsqKVxuICAgIGVuY29kaW5nID0gVFhUO1xuICAgIGNoYW5uZWxfb3B0ID0gTm9uZTtcbiAgICBsb2dnZXIgPSBERVZOVUw7XG4gICAgY3VycmVudF9saW5lID0gW107XG4gICAgKCogZnJlc2hfaWQgPSByZWYgMTtcbiAgICAgICBub2RlcyA9IHJlZiBbXTtcbiAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgZWRnZXNfbWFwID0gcmVmIE1vZHMuU3RyaW5nMk1hcC5lbXB0eTsqKVxuICB9XG5cbigqIFdhcm5pbmcsIHdlIGhhdmUgdG8ga2VlcCB0aGUgY2hhcmFjdGVyIEAgd2hlbiBpdCBpcyBmb2xsb3dlZCBieSBhIGNoYXJhY3RlciBmb2xsb3dlZCBieSBhIGxldHRlciBvciBhIGRpZ2l0IHNob3VsZCBiZSBwcmVzZXJ2ZWQgKilcblxubGV0IGR1bXBfY2xlYW5fc3RyaW5nIGZtdCA9XG4gIFN0cmluZy5pdGVyIChmdW4gYSAtPlxuICAgICAgaWYgYSA9ICdcXG4nIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2VcbiAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJWNcIiBhKVxuXG5sZXQgY2xlYW5fc3RyaW5nIHMgPVxuICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSAwIGluXG4gIGxldCBmbXRfYnVmZmVyID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmZmVyIGluXG4gIGxldCAoKSA9IGR1bXBfY2xlYW5fc3RyaW5nIGZtdF9idWZmZXIgcyBpblxuICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10X2J1ZmZlciAoKSBpblxuICBCdWZmZXIuY29udGVudHMgYnVmZmVyXG5cbmxldCBjbGVhbiBmbXQgPVxuICBsZXQgcyA9IEJ1ZmZlci5jcmVhdGUgMCBpblxuICBsZXQgZm10X2J1ZmZlciA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIHMgaW5cbiAgRm9ybWF0LmtmcHJpbnRmXG4gICAgKGZ1biBfIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10X2J1ZmZlciAoKSBpblxuICAgICAgZHVtcF9jbGVhbl9zdHJpbmcgZm10IChCdWZmZXIuY29udGVudHMgcykpXG4gICAgZm10X2J1ZmZlclxuXG5sZXQgZnByaW50ZiA/KGZwcmludG5ld2xpbmUgPSBmYWxzZSkgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciwgZnByaW50bmV3bGluZSB8fCBicmVha2FibGUgbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgfCBERVZOVUwsIF8gLT4gRm9ybWF0LmlmcHJpbnRmIEZvcm1hdC5zdGRfZm9ybWF0dGVyXG4gIHwgRm9ybWF0dGVyIGZtdCwgdHJ1ZSAtPiBGb3JtYXQuZnByaW50ZiBmbXRcbiAgfCBGb3JtYXR0ZXIgZm10LCBmYWxzZSAtPiBjbGVhbiBmbXRcbiAgfCBDaXJjdWxhcl9idWZmZXIgXywgYm9vbCB8IEluZmluaXRlX2J1ZmZlciBfLCBib29sIC0+XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDAgaW5cbiAgICBsZXQgZm10X2J1ZmZlciA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgICBGb3JtYXQua2ZwcmludGZcbiAgICAgIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10X2J1ZmZlciAoKSBpblxuICAgICAgICBsZXQgc3RyID0gQnVmZmVyLmNvbnRlbnRzIGIgaW5cbiAgICAgICAgbG9nZ2VyLmN1cnJlbnRfbGluZSA8LVxuICAgICAgICAgIFN0cmluZ1xuICAgICAgICAgICAgKGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgc3RyXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgY2xlYW5fc3RyaW5nIHN0cilcbiAgICAgICAgICA6OiBsb2dnZXIuY3VycmVudF9saW5lKVxuICAgICAgZm10X2J1ZmZlclxuXG5sZXQgcHJpbnRfYnJlYWthYmxlX3NwYWNlIGxvZ2dlciA9XG4gIGlmIGJyZWFrYWJsZSBsb2dnZXIuZW5jb2RpbmcgdGhlbiAoXG4gICAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gICAgfCBERVZOVUwgfCBGb3JtYXR0ZXIgXyAtPiBmcHJpbnRmIGxvZ2dlciBcIkAgXCJcbiAgICB8IENpcmN1bGFyX2J1ZmZlciBfIHwgSW5maW5pdGVfYnVmZmVyIF8gLT5cbiAgICAgIGxvZ2dlci5jdXJyZW50X2xpbmUgPC0gQnJlYWthYmxlX3NwYWNlIDo6IGxvZ2dlci5jdXJyZW50X2xpbmVcbiAgKSBlbHNlXG4gICAgZnByaW50ZiBsb2dnZXIgXCIgXCJcblxubGV0IHByaW50X2JyZWFrYWJsZV9oaW50IGxvZ2dlciA9XG4gIGlmIGJyZWFrYWJsZSBsb2dnZXIuZW5jb2RpbmcgdGhlbiAoXG4gICAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gICAgfCBERVZOVUwgfCBGb3JtYXR0ZXIgXyAtPiBmcHJpbnRmIGxvZ2dlciBcIkAsXCJcbiAgICB8IENpcmN1bGFyX2J1ZmZlciBfIHwgSW5maW5pdGVfYnVmZmVyIF8gLT5cbiAgICAgIGxvZ2dlci5jdXJyZW50X2xpbmUgPC0gQnJlYWthYmxlX2hpbnQgOjogbG9nZ2VyLmN1cnJlbnRfbGluZVxuICApIGVsc2VcbiAgICBmcHJpbnRmIGxvZ2dlciBcIlwiXG5cbmxldCBlbmRfb2ZfbGluZV9zeW1ib2wgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgfCBIVE1MIHwgSFRNTF9HcmFwaCB8IEpzX0dyYXBoIC0+IFwiPEJyPlwiXG4gIHwgTWF0cml4IHwgTWF0bGFiIHwgTWF0aGVtYXRpY2EgfCBPY3RhdmUgfCBNYXBsZSB8IFNCTUwgfCBET1RORVQgfCBKc29uXG4gIHwgR0VQSEkgfCBIVE1MX1RhYnVsYXIgfCBET1QgfCBUWFQgfCBUWFRfVGFidWxhciB8IFhMUyAtPlxuICAgIFwiXCJcblxubGV0IGR1bXBfdG9rZW4gZiB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgU3RyaW5nIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHNcbiAgfCBCcmVha2FibGVfc3BhY2UgLT4gRm9ybWF0LmZwcmludGYgZiBcIkAgXCJcbiAgfCBCcmVha2FibGVfaGludCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQCxcIlxuXG5sZXQgcHJpbnRfbmV3bGluZSBsb2dnZXIgPVxuICBsZXQgKCkgPVxuICAgIGZwcmludGYgfmZwcmludG5ld2xpbmU6dHJ1ZSBsb2dnZXIgXCIlcyV0XCIgKGVuZF9vZl9saW5lX3N5bWJvbCBsb2dnZXIpXG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgZiAoKSlcbiAgaW5cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gIHwgREVWTlVMIHwgRm9ybWF0dGVyIF8gLT4gKClcbiAgfCBDaXJjdWxhcl9idWZmZXIgYmYgLT5cbiAgICBsZXQgYmYnID1cbiAgICAgIENpcmN1bGFyX2J1ZmZlcnMuYWRkXG4gICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgIChQcC5saXN0IChmdW4gXyAtPiAoKSkgZHVtcF90b2tlbilcbiAgICAgICAgICAgKExpc3QucmV2IGxvZ2dlci5jdXJyZW50X2xpbmUpKVxuICAgICAgICAhYmZcbiAgICBpblxuICAgIGxldCAoKSA9IGJmIDo9IGJmJyBpblxuICAgIGxldCAoKSA9IGxvZ2dlci5jdXJyZW50X2xpbmUgPC0gW10gaW5cbiAgICAoKVxuICB8IEluZmluaXRlX2J1ZmZlciBiZiAtPlxuICAgIGxldCBiZicgPVxuICAgICAgSW5maW5pdGVfYnVmZmVycy5hZGRcbiAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgKFBwLmxpc3QgKGZ1biBfIC0+ICgpKSBkdW1wX3Rva2VuKVxuICAgICAgICAgICAoTGlzdC5yZXYgbG9nZ2VyLmN1cnJlbnRfbGluZSkpXG4gICAgICAgICFiZlxuICAgIGluXG4gICAgbGV0ICgpID0gYmYgOj0gYmYnIGluXG4gICAgbGV0ICgpID0gbG9nZ2VyLmN1cnJlbnRfbGluZSA8LSBbXSBpblxuICAgICgpXG5cbmxldCBwcmludF9jZWxsIGxvZ2dlciBzID1cbiAgbGV0IG9wZW5fY2VsbF9zeW1ib2wsIGNsb3NlX2NlbGxfc3ltYm9sID1cbiAgICBtYXRjaCBsb2dnZXIuZW5jb2Rpbmcgd2l0aFxuICAgIHwgSFRNTF9UYWJ1bGFyIC0+IFwiPFREPlwiLCBcIjwvVEQ+XCJcbiAgICB8IFRYVF9UYWJ1bGFyIC0+IFwiXCIsIFwiXFx0XCJcbiAgICB8IE1hdHJpeCB8IEdFUEhJIHwgSnNvbiB8IE1hdGhlbWF0aWNhIHwgTWF0bGFiIHwgT2N0YXZlIHwgTWFwbGUgfCBTQk1MXG4gICAgfCBET1RORVQgfCBIVE1MX0dyYXBoIHwgSnNfR3JhcGggfCBIVE1MIHwgRE9UIHwgVFhUIHwgWExTIC0+XG4gICAgICBcIlwiLCBcIlwiXG4gIGluXG4gIGZwcmludGYgbG9nZ2VyIFwiJXMlcyVzXCIgb3Blbl9jZWxsX3N5bWJvbCBzIGNsb3NlX2NlbGxfc3ltYm9sXG5cbmxldCBmbHVzaF9sb2dnZXIgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gIHwgREVWTlVMIC0+ICgpXG4gIHwgRm9ybWF0dGVyIGZtdCAtPiBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10ICgpXG4gIHwgQ2lyY3VsYXJfYnVmZmVyIF8gfCBJbmZpbml0ZV9idWZmZXIgXyAtPiAoKVxuXG5sZXQgY2xvc2VfbG9nZ2VyIGxvZ2dlciA9XG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgICB8IEhUTUwgLT4gZnByaW50ZiBsb2dnZXIgXCI8L2Rpdj5cXG48L2JvZHk+XFxuXCJcbiAgICB8IEhUTUxfVGFidWxhciAtPiBmcHJpbnRmIGxvZ2dlciBcIjwvVEFCTEU+XFxuPC9kaXY+XFxuPC9ib2R5PlwiXG4gICAgfCBNYXRyaXggLT4gZnByaW50ZiBsb2dnZXIgXCJ9XFxuXCJcbiAgICB8IEdFUEhJIHwgSnNvbiB8IE1hdGxhYiB8IE1hdGhlbWF0aWNhIHwgT2N0YXZlIHwgTWFwbGUgfCBTQk1MIHwgRE9UTkVUXG4gICAgfCBIVE1MX0dyYXBoIHwgSnNfR3JhcGggfCBET1QgfCBUWFQgfCBUWFRfVGFidWxhciB8IFhMUyAtPlxuICAgICAgKClcbiAgaW5cbiAgbGV0ICgpID0gZmx1c2hfbG9nZ2VyIGxvZ2dlciBpblxuICAoKVxuXG5sZXQgcHJpbnRfcHJlYW1ibGUgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgfCBIVE1MIC0+IGZwcmludGYgbG9nZ2VyIFwiPGJvZHk+XFxuPGRpdj5cXG5cIlxuICB8IEhUTUxfVGFidWxhciAtPiBmcHJpbnRmIGxvZ2dlciBcIjxib2R5PlxcbjxkaXY+XFxuPFRBQkxFPlxcblwiXG4gIHwgTWF0cml4IC0+XG4gICAgbGV0ICgpID0gZnByaW50ZiBsb2dnZXIgXCJ7XCIgaW5cbiAgICBsZXQgKCkgPSBwcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9IGZwcmludGYgbG9nZ2VyIFwiXFxcImJpb0JlZ2luVGltZVxcXCIgOiAwLjAwMDAwMGUrMDAsXCIgaW5cbiAgICBsZXQgKCkgPSBwcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9IGZwcmludGYgbG9nZ2VyIFwiXFxcImJpb0VuZFRpbWVcXFwiIDogMC4wMDAwMDBlKzAwLFwiIGluXG4gICAgbGV0ICgpID0gcHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICAoKVxuICB8IEdFUEhJIHwgSnNvbiB8IE1hdGxhYiB8IE1hdGhlbWF0aWNhIHwgT2N0YXZlIHwgTWFwbGUgfCBTQk1MIHwgRE9UTkVUXG4gIHwgSFRNTF9HcmFwaCB8IEpzX0dyYXBoIHwgRE9UIHwgVFhUIHwgVFhUX1RhYnVsYXIgfCBYTFMgLT5cbiAgICAoKVxuXG5sZXQgb3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsID8obW9kZSA9IFRYVCkgY2hhbm5lbCA9XG4gIGxldCBmb3JtYXR0ZXIgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGNoYW5uZWwgaW5cbiAgbGV0IGxvZ2dlciA9XG4gICAge1xuICAgICAgKCogaWRfbWFwID0gcmVmIFN0cmluZ01hcC5lbXB0eTtcbiAgICAgICAgIGZyZXNoX2lkID0gcmVmIDE7KilcbiAgICAgIGxvZ2dlciA9IEZvcm1hdHRlciBmb3JtYXR0ZXI7XG4gICAgICBjaGFubmVsX29wdCA9IFNvbWUgY2hhbm5lbDtcbiAgICAgIGVuY29kaW5nID0gbW9kZTtcbiAgICAgIGN1cnJlbnRfbGluZSA9IFtdO1xuICAgICAgKCogbm9kZXMgPSByZWYgW107XG4gICAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgICBlZGdlc19tYXAgPSByZWYgTW9kcy5TdHJpbmcyTWFwLmVtcHR5OyopXG4gICAgfVxuICBpblxuICBsZXQgKCkgPSBwcmludF9wcmVhbWJsZSBsb2dnZXIgaW5cbiAgbG9nZ2VyXG5cbmxldCBvcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciA/KG1vZGUgPSBUWFQpIGZvcm1hdHRlciA9XG4gIGxldCBsb2dnZXIgPVxuICAgIHtcbiAgICAgICgqIGlkX21hcCA9IHJlZiBTdHJpbmdNYXAuZW1wdHk7XG4gICAgICAgICBmcmVzaF9pZCA9IHJlZiAxOyopXG4gICAgICBsb2dnZXIgPSBGb3JtYXR0ZXIgZm9ybWF0dGVyO1xuICAgICAgY2hhbm5lbF9vcHQgPSBOb25lO1xuICAgICAgZW5jb2RpbmcgPSBtb2RlO1xuICAgICAgY3VycmVudF9saW5lID0gW107XG4gICAgICAoKiBub2RlcyA9IHJlZiBbXTtcbiAgICAgICAgIGVkZ2VzID0gcmVmIFtdO1xuICAgICAgICAgICAgIGVkZ2VzX21hcCA9IHJlZiBNb2RzLlN0cmluZzJNYXAuZW1wdHk7KilcbiAgICB9XG4gIGluXG4gIGxldCAoKSA9IHByaW50X3ByZWFtYmxlIGxvZ2dlciBpblxuICBsb2dnZXJcblxubGV0IG9wZW5fY2lyY3VsYXJfYnVmZmVyID8obW9kZSA9IFRYVCkgPyhzaXplID0gMTApICgpID1cbiAge1xuICAgICgqIGlkX21hcCA9IHJlZiBTdHJpbmdNYXAuZW1wdHk7XG4gICAgICAgZnJlc2hfaWQgPSByZWYgMTsqKVxuICAgIGxvZ2dlciA9IENpcmN1bGFyX2J1ZmZlciAocmVmIChDaXJjdWxhcl9idWZmZXJzLmNyZWF0ZSBzaXplIFwiXCIpKTtcbiAgICBjaGFubmVsX29wdCA9IE5vbmU7XG4gICAgZW5jb2RpbmcgPSBtb2RlO1xuICAgIGN1cnJlbnRfbGluZSA9IFtdO1xuICAgICgqIG5vZGVzID0gcmVmIFtdO1xuICAgICAgIGVkZ2VzID0gcmVmIFtdO1xuICAgICAgICAgICBlZGdlc19tYXAgPSByZWYgTW9kcy5TdHJpbmcyTWFwLmVtcHR5OyopXG4gIH1cblxubGV0IG9wZW5faW5maW5pdGVfYnVmZmVyID8obW9kZSA9IFRYVCkgKCkgPVxuICBsZXQgbG9nZ2VyID1cbiAgICB7XG4gICAgICAoKiBpZF9tYXAgPSByZWYgU3RyaW5nTWFwLmVtcHR5O1xuICAgICAgICAgZnJlc2hfaWQgPSByZWYgMTsqKVxuICAgICAgbG9nZ2VyID0gSW5maW5pdGVfYnVmZmVyIChyZWYgKEluZmluaXRlX2J1ZmZlcnMuY3JlYXRlIDAgXCJcIikpO1xuICAgICAgY2hhbm5lbF9vcHQgPSBOb25lO1xuICAgICAgZW5jb2RpbmcgPSBtb2RlO1xuICAgICAgY3VycmVudF9saW5lID0gW107XG4gICAgICAoKiBub2RlcyA9IHJlZiBbXTtcbiAgICAgICAgIGVkZ2VzID0gcmVmIFtdO1xuICAgICAgICAgICAgIGVkZ2VzX21hcCA9IHJlZiBNb2RzLlN0cmluZzJNYXAuZW1wdHk7KilcbiAgICB9XG4gIGluXG4gIGxldCAoKSA9IHByaW50X3ByZWFtYmxlIGxvZ2dlciBpblxuICBsb2dnZXJcblxubGV0IG9wZW5fcm93IGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gIHwgSFRNTF9UYWJ1bGFyIC0+IGZwcmludGYgbG9nZ2VyIFwiPHRyPlwiXG4gIHwgTWF0cml4IC0+IGZwcmludGYgbG9nZ2VyIFwiW1wiXG4gIHwgSnNvbiB8IE1hdGxhYiB8IE9jdGF2ZSB8IE1hdGhlbWF0aWNhIHwgTWFwbGUgfCBTQk1MIHwgRE9UTkVUIHwgSFRNTF9HcmFwaFxuICB8IEpzX0dyYXBoIHwgWExTIHwgSFRNTCB8IERPVCB8IFRYVCB8IFRYVF9UYWJ1bGFyIHwgR0VQSEkgLT5cbiAgICAoKVxuXG5sZXQgY2xvc2Vfcm93IGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gIHwgSFRNTF9UYWJ1bGFyIC0+IGZwcmludGYgbG9nZ2VyIFwiPHRyPkAuXCJcbiAgfCBNYXRyaXggLT4gZnByaW50ZiBsb2dnZXIgXCJdXFxuXCJcbiAgfCBKc29uIHwgTWF0bGFiIHwgT2N0YXZlIHwgTWFwbGUgfCBNYXRoZW1hdGljYSB8IFNCTUwgfCBET1RORVQgfCBIVE1MX0dyYXBoXG4gIHwgSnNfR3JhcGggfCBYTFMgfCBIVE1MIHwgRE9UIHwgVFhUIHwgVFhUX1RhYnVsYXIgfCBHRVBISSAtPlxuICAgIGZwcmludGYgbG9nZ2VyIFwiQC5cIlxuXG5sZXQgZm9ybWF0dGVyX29mX2xvZ2dlciBsb2dnZXIgPVxuICBtYXRjaCBsb2dnZXIubG9nZ2VyIHdpdGhcbiAgfCBGb3JtYXR0ZXIgZm10IC0+IFNvbWUgZm10XG4gIHwgREVWTlVMIHwgQ2lyY3VsYXJfYnVmZmVyIF8gfCBJbmZpbml0ZV9idWZmZXIgXyAtPiBOb25lXG5cbmxldCByZWRpcmVjdCBsb2dnZXIgZm10ID0geyBsb2dnZXIgd2l0aCBsb2dnZXIgPSBGb3JtYXR0ZXIgZm10IH1cbmxldCBwcmludF9hc19sb2dnZXIgbG9nZ2VyIGYgPSBmcHJpbnRmIGxvZ2dlciBcIiV0XCIgZlxuXG5sZXQgZmx1c2hfYnVmZmVyIGxvZ2dlciBmbXQgPVxuICBtYXRjaCBsb2dnZXIubG9nZ2VyIHdpdGhcbiAgfCBERVZOVUwgfCBGb3JtYXR0ZXIgXyAtPiAoKVxuICB8IENpcmN1bGFyX2J1ZmZlciBhIC0+IENpcmN1bGFyX2J1ZmZlcnMuaXRlciAoRm9ybWF0LmZwcmludGYgZm10IFwiJXNcIikgIWFcbiAgfCBJbmZpbml0ZV9idWZmZXIgYiAtPiBJbmZpbml0ZV9idWZmZXJzLml0ZXIgKEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzXCIpICFiXG5cbmxldCBmbHVzaF9hbmRfY2xlYW4gbG9nZ2VyIGZtdCA9XG4gIGxldCAoKSA9IGZsdXNoX2J1ZmZlciBsb2dnZXIgZm10IGluXG4gIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICB8IERFVk5VTCB8IEZvcm1hdHRlciBfIC0+ICgpXG4gIHwgQ2lyY3VsYXJfYnVmZmVyIGEgLT4gYSA6PSBDaXJjdWxhcl9idWZmZXJzLmNsZWFuICFhXG4gIHwgSW5maW5pdGVfYnVmZmVyIGIgLT4gYiA6PSBJbmZpbml0ZV9idWZmZXJzLmNsZWFuICFiXG5cbmxldCBmcHJpbnRmIGxvZ2dlciA9IGZwcmludGYgfmZwcmludG5ld2xpbmU6ZmFsc2UgbG9nZ2VyXG5sZXQgY2hhbm5lbF9vZl9sb2dnZXIgbG9nZ2VyID0gbG9nZ2VyLmNoYW5uZWxfb3B0XG5cbmxldCBwcmludF9iaW5kaW5nX3R5cGUgdCA/KGJpbmRpbmdfdHlwZV9zeW1ib2wgPSBcIi5cIikgfmFnZW50X25hbWUgfnNpdGVfbmFtZSAoKVxuICAgID1cbiAgZnByaW50ZiB0IFwiJXNcIlxuICAgIChQdWJsaWNfZGF0YS5zdHJpbmdfb2ZfYmluZGluZ190eXBlIH5iaW5kaW5nX3R5cGVfc3ltYm9sIH5hZ2VudF9uYW1lXG4gICAgICAgfnNpdGVfbmFtZSAoKSlcblxubGV0IGR1bXBfanNvbiBsb2dnZXIganNvbiA9XG4gIGxldCBjaGFubmVsX29wdCA9IGNoYW5uZWxfb2ZfbG9nZ2VyIGxvZ2dlciBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGNoYW5uZWxfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgY2hhbm5lbCAtPlxuICAgICAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnRvX2NoYW5uZWwgY2hhbm5lbCBqc29uIGluXG4gICAgICAoKVxuICBpblxuICAoKVxuXG5sZXQgbGluZV90b19qc29uIGxpbmUgPSBgQXNzb2MgWyBcImxpbmVcIiwgSnNvblV0aWwub2Zfc3RyaW5nIGxpbmUgXVxuXG5sZXQgbGluZV9vZl9qc29uIGpzb24gPVxuICBtYXRjaCBqc29uIHdpdGhcbiAgfCBgQXNzb2MgWyAoXCJsaW5lXCIsIGBTdHJpbmcgcykgXSAtPiBzXG4gIHwgXyAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwibGluZVwiLCBqc29uKSlcblxubGV0IGdlbl9pdGVyIGl0ZXIgbGlzdCA9XG4gIGxldCBvdXRwdXQgPSByZWYgW10gaW5cbiAgbGV0ICgpID0gaXRlciAoZnVuIGxpbmUgLT4gb3V0cHV0IDo9IGxpbmUgOjogIW91dHB1dCkgbGlzdCBpblxuICBKc29uVXRpbC5vZl9saXN0IGxpbmVfdG9fanNvbiAoTGlzdC5yZXYgIW91dHB1dClcblxubGV0IG9mX2pzb24gPSBKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJsaW5lIGxpc3RcIiBsaW5lX29mX2pzb25cblxubGV0IHRvX2pzb24gbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gIHwgREVWTlVMIHwgRm9ybWF0dGVyIF8gLT4gYExpc3QgW11cbiAgfCBDaXJjdWxhcl9idWZmZXIgYSAtPiBnZW5faXRlciBDaXJjdWxhcl9idWZmZXJzLml0ZXIgIWFcbiAgfCBJbmZpbml0ZV9idWZmZXIgYiAtPiBnZW5faXRlciBJbmZpbml0ZV9idWZmZXJzLml0ZXIgIWJcbiIsImxldCBzdHJpbmdfb2ZfdW5fb3AgbG9nZ2VyIG9wID1cbiAgbGV0IGZvcm1hdCA9IExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCBsb2dnZXIgaW5cbiAgbWF0Y2ggb3Agd2l0aFxuICB8IE9wZXJhdG9yLlVNSU5VUyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPG1pbnVzLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCItXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLkxPRyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGxvZy8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwibG9nXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLlNRUlQgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxyb290Lz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJzcXJ0XCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLkVYUCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGV4cC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwiZXhwXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLlNJTlVTIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8c2luLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJzaW5cIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXhcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuQ09TSU5VUyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGNvcy8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwiY29zXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLlRBTiAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPHRhbi8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwidGFuXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLklOVCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGZsb29yLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJmbG9vclwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcblxubGV0IHN0cmluZ19vZl9jb21wYXJlX29wIGxvZ2dlciBvcCA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgbG9nZ2VyIGluXG4gIG1hdGNoIG9wIHdpdGhcbiAgfCBPcGVyYXRvci5FUVVBTCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGVxLz5cIlxuICAgIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiAtPiBcIj09XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT4gXCI9XCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLkRJRkYgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxuZXEvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIiE9XCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLlNNQUxMRVIgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxsdC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwiPFwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5HUkVBVEVSIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8Z3QvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIj5cIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG5cbmxldCBzdHJpbmdfb2ZfYmluX29wIGxvZ2dlciBvcCA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgbG9nZ2VyIGluXG4gIG1hdGNoIG9wIHdpdGhcbiAgfCBPcGVyYXRvci5NT0RVTE8gLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxyZW0vPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIm1vZFwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5NQVggLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxtYXgvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIm1heFwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5NSU4gLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxtaW4vPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIm1pblwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5ESVYgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxkaXZpZGUvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcIi9cIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuU1VNIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8cGx1cy8+XCJcbiAgICB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiK1wiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5NSU5VUyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPG1pbnVzLz5cIlxuICAgIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLk1hdGxhYiAtPlxuICAgICAgXCItXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLk1VTFQgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjx0aW1lcy8+XCJcbiAgICB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiKlwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5QT1cgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxwb3dlci8+XCJcbiAgICB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiKipcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuSFRNTF9HcmFwaFxuICAgIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG5cbmxldCBzdHJpbmdfb2ZfYmluX2Jvb2xfb3AgbG9nZ2VyIG9wID1cbiAgbGV0IGZvcm1hdCA9IExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCBsb2dnZXIgaW5cbiAgbWF0Y2ggb3Agd2l0aFxuICB8IE9wZXJhdG9yLkFORCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGFuZC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiJlwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX0dyYXBoXG4gICAgfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5PUiAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPG9yLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLk1hdGxhYiAtPlxuICAgICAgXCJ8XCJcbiAgICB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuXG5sZXQgc3RyaW5nX29mX3VuX2Jvb2xfb3AgbG9nZ2VyIG9wID1cbiAgbGV0IGZvcm1hdCA9IExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCBsb2dnZXIgaW5cbiAgbWF0Y2ggb3Agd2l0aFxuICB8IE9wZXJhdG9yLk5PVCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPG5vdC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiIVwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX0dyYXBoXG4gICAgfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiIsIigqKlxuICAqIGdyYXBoX2xvZ2dlcnNfc2lnLm1sXG4gICpcbiAgKiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFudGlxdWUsIElOUklBIFBhcmlzXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDIzLzA1LzIwMTZcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMjUvMDUvMjAxNlxuICAqICpcbiAgKlxuICAqXG4gICogQ29weXJpZ2h0IDIwMTYgIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBkaXJlY3Rpb24gPSBEaXJlY3QgfCBSZXZlcnNlIHwgVW5kaXJlY3RlZCB8IEJvdGhcbnR5cGUgc2hhcGUgPSBJbnZpc2libGUgfCBIb3VzZSB8IFJlY3QgfCBFbGxpcHNlIHwgQ2lyY2xlIHwgSW52aG91c2VcbnR5cGUgaGVhZGtpbmQgPSBOb3JtYWwgfCBWZWUgfCBUZWUgfCBOb19oZWFkXG50eXBlIGxpbmVzdHlsZSA9IFBsYWluIHwgRG90dGVkIHwgRGFzaGVkXG5cbnR5cGUgY29sb3IgPVxuICB8IFJlZFxuICB8IEdyZWVuXG4gIHwgV2hpdGVcbiAgfCBCbHVlXG4gIHwgQmxhY2tcbiAgfCBMaWdodFNreUJsdWVcbiAgfCBQYWxlR3JlZW5cbiAgfCBCcm93blxuICB8IFllbGxvd1xuICB8IEdyZXlcblxudHlwZSBvcHRpb25zID1cbiAgfCBDb2xvciBvZiBjb2xvclxuICB8IEZpbGxDb2xvciBvZiBjb2xvclxuICB8IExhYmVsIG9mIHN0cmluZ1xuICB8IFdpZHRoIG9mIGludCAoKnBpeGVsKilcbiAgfCBIZWlnaHQgb2YgaW50ICgqcGl4ZWwqKVxuICB8IERpcmVjdGlvbiBvZiBkaXJlY3Rpb25cbiAgfCBTaGFwZSBvZiBzaGFwZVxuICB8IEFycm93SGVhZCBvZiBoZWFka2luZFxuICB8IEFycm93VGFpbCBvZiBoZWFka2luZFxuICB8IExpbmVTdHlsZSBvZiBsaW5lc3R5bGVcbiAgfCBPbkNsaWNrIG9mIFlvanNvbi5CYXNpYy50XG4gIHwgQ29udGV4dHVhbF9oZWxwIG9mIHN0cmluZ1xuICB8IFBvc2l0aW9uIG9mIExvYy50IGxpc3RcblxudHlwZSBncmFwaCA9XG4gIChzdHJpbmcgKiBvcHRpb25zIGxpc3QpIGxpc3QgKiAoc3RyaW5nICogc3RyaW5nICogb3B0aW9ucyBsaXN0KSBsaXN0XG5cbnR5cGUgdCA9IHtcbiAgbG9nZ2VyOiBMb2dnZXJzLnQ7XG4gIGlkX21hcDogaW50IE1vZHMuU3RyaW5nTWFwLnQgcmVmO1xuICBmcmVzaF9pZDogaW50IHJlZjtcbiAgbm9kZXM6IChzdHJpbmcgKiBvcHRpb25zIGxpc3QpIGxpc3QgcmVmO1xuICBlZGdlczogKHN0cmluZyAqIHN0cmluZyAqIG9wdGlvbnMgbGlzdCkgbGlzdCByZWY7XG4gIGVkZ2VzX21hcDogb3B0aW9ucyBsaXN0IGxpc3QgTW9kcy5TdHJpbmcyTWFwLnQgcmVmO1xufVxuXG5sZXQgbGlmdCB0ID0gdC5sb2dnZXJcblxubGV0IGV4dGVuZF9sb2dnZXIgbG9nZ2VyID1cbiAge1xuICAgIGxvZ2dlcjtcbiAgICBpZF9tYXAgPSByZWYgTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gICAgZnJlc2hfaWQgPSByZWYgMTtcbiAgICBub2RlcyA9IHJlZiBbXTtcbiAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICBlZGdlc19tYXAgPSByZWYgTW9kcy5TdHJpbmcyTWFwLmVtcHR5O1xuICB9XG5cbmxldCByZWZyZXNoX2lkIHQgPVxuICBsZXQgKCkgPSB0LmlkX21hcCA6PSBNb2RzLlN0cmluZ01hcC5lbXB0eSBpblxuICBsZXQgKCkgPSB0Lm5vZGVzIDo9IFtdIGluXG4gIGxldCAoKSA9IHQuZWRnZXMgOj0gW10gaW5cbiAgbGV0ICgpID0gdC5mcmVzaF9pZCA6PSAxIGluXG4gICgpXG5cbmxldCBhZGRfbm9kZSB0IHMgZCA9IHQubm9kZXMgOj0gKHMsIGQpIDo6ICEodC5ub2RlcylcblxubGV0IGFkZF9lZGdlIHQgczEgczIgZCA9XG4gIGxldCAoKSA9IHQuZWRnZXMgOj0gKHMxLCBzMiwgZCkgOjogISh0LmVkZ2VzKSBpblxuICBsZXQgbWFwID0gISh0LmVkZ2VzX21hcCkgaW5cbiAgbGV0IG9sZF9saXN0ID1cbiAgICBtYXRjaCBNb2RzLlN0cmluZzJNYXAuZmluZF9vcHRpb24gKHMxLCBzMikgbWFwIHdpdGhcbiAgICB8IFNvbWUgbCAtPiBsXG4gICAgfCBOb25lIC0+IFtdXG4gIGluXG4gIGxldCAoKSA9IHQuZWRnZXNfbWFwIDo9IE1vZHMuU3RyaW5nMk1hcC5hZGQgKHMxLCBzMikgKGQgOjogb2xkX2xpc3QpIG1hcCBpblxuICAoKVxuXG5sZXQgZ3JhcGhfb2ZfbG9nZ2VyIGxvZ2dlciA9IExpc3QucmV2ICEobG9nZ2VyLm5vZGVzKSwgTGlzdC5yZXYgIShsb2dnZXIuZWRnZXMpXG5sZXQgZ2V0X2VkZ2VfbWFwIHQgPSAhKHQuZWRnZXNfbWFwKVxubGV0IGdldF9ub2RlcyB0ID0gISh0Lm5vZGVzKVxubGV0IGZyZXNoX2lkIGxvZ2dlciA9IFRvb2xzLmdldF9yZWYgbG9nZ2VyLmZyZXNoX2lkXG5cbmxldCBpbnRfb2Zfc3RyaW5nX2lkIGxvZ2dlciBzdHJpbmcgPVxuICBtYXRjaCBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBzdHJpbmcgIShsb2dnZXIuaWRfbWFwKSB3aXRoXG4gIHwgU29tZSBhIC0+IGFcbiAgfCBOb25lIC0+XG4gICAgbGV0IGkgPSBmcmVzaF9pZCBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBsb2dnZXIuaWRfbWFwIDo9IE1vZHMuU3RyaW5nTWFwLmFkZCBzdHJpbmcgaSAhKGxvZ2dlci5pZF9tYXApIGluXG4gICAgaVxuIiwiKCoqXG4gICogZ3JhcGhfbG9nZ2Vycy5tbFxuICAqXG4gICogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBbnRpcXVlLCBJTlJJQSBQYXJpc1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyMy8wNS8yMDE2XG4gICogTGFzdCBtb2RpZmljYXRpb246IDI1LzA1LzIwMTZcbiAgKiAqXG4gICpcbiAgKlxuICAqIENvcHlyaWdodCAyMDE2ICBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBkb3RfY29sb3JfZW5jb2RpbmcgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlllbGxvdyAtPiBcInllbGxvd1wiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JleSAtPiBcImdyZXlcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlZCAtPiBcInJlZFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW4gLT4gXCJncmVlblwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2hpdGUgLT4gXCJ3aGl0ZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmx1ZSAtPiBcImJsdWVcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJsYWNrIC0+IFwiYmxhY2tcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZSAtPiBcIiM4N2NlZWJcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBhbGVHcmVlbiAtPiBcIiM5OGZiOThcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duIC0+IFwiYnJvd25cIlxuXG5sZXQgc3ZnX2NvbG9yX2VuY29kaW5nIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5ZZWxsb3cgLT4gXCIjZmYzXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5HcmV5IC0+IFwiI2FhYVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkIC0+IFwiI2YwMFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW4gLT4gXCIjMGYwXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5XaGl0ZSAtPiBcIiNmZmZcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJsdWUgLT4gXCIjMDBmXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbGFjayAtPiBcIiMwMDBcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZSAtPiBcIiM4Y2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBhbGVHcmVlbiAtPiBcIiM5ZjlcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duIC0+IFwiI2ZjOVwiXG5cbnR5cGUgbm9kZV9hdHRyaWJ1dGUgPSB7XG4gIG5vZGVfY29sb3I6IEdyYXBoX2xvZ2dlcnNfc2lnLmNvbG9yIG9wdGlvbjtcbiAgbm9kZV9maWxsY29sb3I6IEdyYXBoX2xvZ2dlcnNfc2lnLmNvbG9yIG9wdGlvbjtcbiAgbm9kZV9sYWJlbDogc3RyaW5nIG9wdGlvbjtcbiAgbm9kZV93aWR0aDogaW50IG9wdGlvbjtcbiAgbm9kZV9oZWlnaHQ6IGludCBvcHRpb247XG4gIG5vZGVfc2hhcGU6IEdyYXBoX2xvZ2dlcnNfc2lnLnNoYXBlIG9wdGlvbjtcbiAgbm9kZV9wb3NpdGlvbnM6IExvYy50IGxpc3Q7XG4gIG5vZGVfY29udGV4dHVhbF9oZWxwOiBzdHJpbmcgb3B0aW9uO1xuICBub2RlX29uX2NsaWNrOiBZb2pzb24uQmFzaWMudCBvcHRpb247XG59XG5cbnR5cGUgZWRnZV9hdHRyaWJ1dGUgPSB7XG4gIGVkZ2VfY29sb3I6IEdyYXBoX2xvZ2dlcnNfc2lnLmNvbG9yIG9wdGlvbjtcbiAgZWRnZV9sYWJlbDogc3RyaW5nIGxpc3Qgb3B0aW9uO1xuICBlZGdlX3N0eWxlOiBHcmFwaF9sb2dnZXJzX3NpZy5saW5lc3R5bGU7XG4gIGVkZ2VfZGlyZWN0aW9uOiBHcmFwaF9sb2dnZXJzX3NpZy5kaXJlY3Rpb247XG4gIGVkZ2VfYXJyb3doZWFkOiBHcmFwaF9sb2dnZXJzX3NpZy5oZWFka2luZDtcbiAgZWRnZV9hcnJvd3RhaWw6IEdyYXBoX2xvZ2dlcnNfc2lnLmhlYWRraW5kO1xuICBlZGdlX3Bvc2l0aW9uczogTG9jLnQgbGlzdDtcbiAgZWRnZV9jb250ZXh0dWFsX2hlbHA6IHN0cmluZyBvcHRpb247XG4gIGVkZ2Vfb25fY2xpY2s6IFlvanNvbi5CYXNpYy50IG9wdGlvbjtcbn1cblxubGV0IGR1bW15X25vZGUgPVxuICB7XG4gICAgbm9kZV9jb2xvciA9IE5vbmU7XG4gICAgbm9kZV9maWxsY29sb3IgPSBOb25lO1xuICAgIG5vZGVfbGFiZWwgPSBOb25lO1xuICAgIG5vZGVfd2lkdGggPSBOb25lO1xuICAgIG5vZGVfaGVpZ2h0ID0gTm9uZTtcbiAgICBub2RlX3NoYXBlID0gTm9uZTtcbiAgICBub2RlX3Bvc2l0aW9ucyA9IFtdO1xuICAgIG5vZGVfb25fY2xpY2sgPSBOb25lO1xuICAgIG5vZGVfY29udGV4dHVhbF9oZWxwID0gTm9uZTtcbiAgfVxuXG5sZXQgZHVtbXlfZWRnZSA9XG4gIHtcbiAgICBlZGdlX2NvbG9yID0gTm9uZTtcbiAgICBlZGdlX2xhYmVsID0gTm9uZTtcbiAgICBlZGdlX3N0eWxlID0gR3JhcGhfbG9nZ2Vyc19zaWcuUGxhaW47XG4gICAgZWRnZV9kaXJlY3Rpb24gPSBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Q7XG4gICAgZWRnZV9hcnJvd2hlYWQgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWw7XG4gICAgZWRnZV9hcnJvd3RhaWwgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWw7XG4gICAgZWRnZV9wb3NpdGlvbnMgPSBbXTtcbiAgICBlZGdlX29uX2NsaWNrID0gTm9uZTtcbiAgICBlZGdlX2NvbnRleHR1YWxfaGVscCA9IE5vbmU7XG4gIH1cblxubGV0IGlzX25vX25vZGVfYXR0cmlidXRlcyBub2RlX2F0dHJpYnV0ZSA9IG5vZGVfYXR0cmlidXRlID0gZHVtbXlfbm9kZVxuXG5sZXQgaXNfbm9fZWRnZV9hdHRyaWJ1dGVzIGVkZ2VfYXR0cmlidXRlID1cbiAgZHVtbXlfZWRnZVxuICA9IHtcbiAgICAgIGVkZ2VfYXR0cmlidXRlIHdpdGhcbiAgICAgIGVkZ2VfZGlyZWN0aW9uID0gR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0O1xuICAgICAgZWRnZV9hcnJvd2hlYWQgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWw7XG4gICAgICBlZGdlX2Fycm93dGFpbCA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbDtcbiAgICB9XG5cbmxldCBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sID1cbiAgaWYgYm9vbCB0aGVuXG4gICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIgXCJcbiAgZWxzZVxuICAgICgpXG5cbmxldCBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgYm9vbCA9XG4gIGlmIGJvb2wgdGhlblxuICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiLCBcIlxuICBlbHNlXG4gICAgKClcblxubGV0IGh0bWxfZGVwcyA9XG4gIFtcbiAgICBcImh0dHA6Ly9kM2pzLm9yZy9kMy52My5taW4uanNcIjtcbiAgICBcImh0dHA6Ly9jcGV0dGl0dC5naXRodWIuaW8vcHJvamVjdC9kYWdyZS1kMy9sYXRlc3QvZGFncmUtZDMubWluLmpzXCI7XG4gIF1cblxubGV0IHNoYWxsX0lfZG9faXQgZm9ybWF0IGZpbHRlcl9pbiBmaWx0ZXJfb3V0ID1cbiAgbGV0IGIxID1cbiAgICBtYXRjaCBmaWx0ZXJfaW4gd2l0aFxuICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIGwgLT4gTGlzdC5tZW0gZm9ybWF0IGxcbiAgaW5cbiAgYjEgJiYgbm90IChMaXN0Lm1lbSBmb3JtYXQgZmlsdGVyX291dClcblxubGV0IHByaW50X3ByZWFtYmxlX3NoYXJlZF9odG1sX2pzIGYgdGl0bGUgPVxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGRpdiBjbGFzcz1cXFwiY29udGFpbmVyXFxcIj5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8aDE+QFslc0BdPC9oMT5ALFwiIHRpdGxlIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8c3ZnIHdpZHRoPTk2MCBoZWlnaHQ9NjAwPjxnLz48L3N2Zz5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8c2NyaXB0PkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi8vIENyZWF0ZSBhIG5ldyBkaXJlY3RlZCBncmFwaEAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwidmFyIGcgPSBuZXcgZGFncmVEMy5ncmFwaGxpYi5HcmFwaCgpLnNldEdyYXBoKHt9KTtALFwiXG4gIGluXG5cbiAgKClcblxubGV0IHByaW50X2dyYXBoX3ByZWFtYmxlIGxvZ2dlciA/KGZpbHRlcl9pbiA9IE5vbmUpID8oZmlsdGVyX291dCA9IFtdKVxuICAgID8oaGVhZGVyID0gW10pIHRpdGxlID1cbiAgbGV0IGZvcm1hdCA9IExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gIGlmIHNoYWxsX0lfZG9faXQgZm9ybWF0IGZpbHRlcl9pbiBmaWx0ZXJfb3V0IHRoZW4gKFxuICAgIG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLkRPVCAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiMlc1wiIHggaW5cbiAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAgICAgICAoKSlcbiAgICAgICAgICBoZWFkZXJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcImRpZ3JhcGggR3tcIiBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICgpXG4gICAgfCBMb2dnZXJzLkpzX0dyYXBoIC0+XG4gICAgICAoKiBJTiBQUk9HRVNTICopXG4gICAgICBsZXQgZl9vcHQgPSBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXIgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgKG1hdGNoIGZfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGYgLT4gcHJpbnRfcHJlYW1ibGVfc2hhcmVkX2h0bWxfanMgZiB0aXRsZSlcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCAtPlxuICAgICAgbGV0IGZfb3B0ID0gTG9nZ2Vycy5mb3JtYXR0ZXJfb2ZfbG9nZ2VyIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgIChtYXRjaCBmX29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiPCEtLUAsXCIgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzXCIgeCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgICAgICAgICAoKSlcbiAgICAgICAgICAgIGhlYWRlclxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIi0tPkAsXCIgaW5cbiAgICAgICAgbGV0IGRlcGVuZGVuY3kgZiB0ID1cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPHNjcmlwdCBzcmM9XFxcIiVzXFxcIiBjaGFyc2V0PVxcXCJ1dGYtOFxcXCI+PC9zY3JpcHQ+XCIgdFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj48IWRvY3R5cGUgaHRtbD5ALEAsPGh0bWw+QCxcIiBpblxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxoZWFkPkAsPG1ldGEgY2hhcnNldD1cXFwidXRmLThcXFwiPkAsXCIgaW5cbiAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjx0aXRsZT4lczwvdGl0bGU+QCxcIiB0aXRsZSBpblxuICAgICAgICBsZXQgKCkgPSBQcC5saXN0IH50cmFpbGluZzpQcC5zcGFjZSBQcC5zcGFjZSBkZXBlbmRlbmN5IGYgaHRtbF9kZXBzIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0QF1ALDwvaGVhZD5ALFwiIChmdW4gZiAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxzdHlsZT5ALFwiIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcImR0IHtmbG9hdDogbGVmdDsgY2xlYXI6IGxlZnQ7IHdpZHRoOiAyMGVtO31ALFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcImRkIHtmb250LXdlaWdodDogYm9sZDsgbWFyZ2luOiAwIDAgMCAyMWVtO31ALFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIi5ub2RlIHJlY3Qge3N0cm9rZTogIzMzMzsgZmlsbDogI2ZmZjt9QCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgIFwiLmVkZ2VQYXRoIHBhdGgge3N0cm9rZTogIzMzMzsgZmlsbDogIzMzMzsgc3Ryb2tlLXdpZHRoOiBcXFxuICAgICAgICAgICAgICAgICAgIDEuNXB4O31cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQF1ALDwvc3R5bGU+XCIpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PGJvZHk+QCxcIiBpblxuICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVhbWJsZV9zaGFyZWRfaHRtbF9qcyBmIHRpdGxlIGluXG4gICAgICAgICgpKVxuICAgIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRoZW1hdGljYVxuICAgIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5TQk1MIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVFxuICAgIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICAoKVxuICApXG5cbmxldCBzdHJpbmdfb2ZfYXJyb3dfaW5faHRtbCBsb2dnZXIgYm9vbCB0aXRsZSBzdHlsZSA9XG4gIG1hdGNoIHN0eWxlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5UZWUgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gYm9vbFxuICAoKnwgVGVlIC0+XG4gICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciBib29sIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIiVzOiBcXFwidGVlXFxcIlwiIHRpdGxlXG4gICAgICAgIGluXG4gICAgICAgIHRydWUqKVxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPlxuICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciBib29sIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXM6IFxcXCJ2ZWVcXFwiXCIgdGl0bGVcbiAgICBpblxuICAgIHRydWVcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+XG4gICAgKCogbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2h0bWwgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICBsZXQgKCkgPVxuICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIlczogXFxcIm5vbmVcXFwiXCIgdGl0bGVcbiAgICAgICBpblxuICAgICAgIHRydWUqKVxuICAgIGJvb2xcblxubGV0IG1lcmdlIHMgcycgPVxuICBpZiBzID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCB0aGVuXG4gICAgcydcbiAgZWxzZVxuICAgIHNcblxubGV0IG1hdHJpeF9zdHJpbmdfb2Zfb3B0aW9ucyBsID1cbiAgbGV0IGkgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBpIGwgLT5cbiAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgeCAtPlxuICAgICAgICAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duIC0+IGkgKiA3XG4gICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbGFjayAtPiBpXG4gICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbiAtPiBpICogM1xuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkIC0+IGkgKiAtMVxuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmx1ZSAtPiBpICogNVxuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2hpdGUgLT4gaVxuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGlnaHRTa3lCbHVlIC0+IGkgKiAxMVxuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUGFsZUdyZWVuIC0+IGkgKiAxM1xuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JleSAtPiBpICogMTdcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlllbGxvdyAtPiBpICogMTkpXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb24gXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBfXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIF9cbiAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd1RhaWwgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBfXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIF9cbiAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdGlvbiBfXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSBfIC0+XG4gICAgICAgICAgICAgaSkpXG4gICAgICAxIGxcbiAgaW5cbiAgc3RyaW5nX29mX2ludCBpXG5cbmxldCBwcmludF9mb290X3NoYXJlZF9odG1sX2pzIGxvZ2dlciA9XG4gIGxldCAoKSA9XG4gICAgTW9kcy5TdHJpbmcyTWFwLml0ZXJcbiAgICAgIChmdW4gKGlkMSwgaWQyKSBsaXN0IC0+XG4gICAgICAgIGxldCBsaXN0ID0gTGlzdC5yZXYgbGlzdCBpblxuICAgICAgICBsZXQgaWQxX2ludCA9IEdyYXBoX2xvZ2dlcnNfc2lnLmludF9vZl9zdHJpbmdfaWQgbG9nZ2VyIGlkMSBpblxuICAgICAgICBsZXQgaWQyX2ludCA9IEdyYXBoX2xvZ2dlcnNfc2lnLmludF9vZl9zdHJpbmdfaWQgbG9nZ2VyIGlkMiBpblxuICAgICAgICBsZXQgYXR0cmlidXRlcyA9IGR1bW15X2VkZ2UgaW5cbiAgICAgICAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGF0dHJpYnV0ZXMgb3B0aW9uX2xpc3QgLT5cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGF0dHJpYnV0ZXMgb3B0aW9uIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBzIC0+XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfbGFiZWwgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4geyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9sYWJlbCA9IFNvbWUgWyBzIF0gfVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgcycgLT5cbiAgICAgICAgICAgICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2xhYmVsID0gU29tZSAocyA6OiBcIixcIiA6OiBzJykgfSlcbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgcyAtPlxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYXR0cmlidXRlcy5lZGdlX2NvbG9yIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfY29sb3IgPSBTb21lIHMgfVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgcycgd2hlbiBzID0gcycgLT4gYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZWRnZV9jb2xvciA9IFNvbWUgR3JhcGhfbG9nZ2Vyc19zaWcuQnJvd247XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9zdHlsZSA9IHMgfVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gcyAtPlxuICAgICAgICAgICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2RpcmVjdGlvbiA9IHMgfVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd1RhaWwgcyAtPlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgZWRnZV9hcnJvd3RhaWwgPSBtZXJnZSBzIGF0dHJpYnV0ZXMuZWRnZV9hcnJvd3RhaWw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIHMgLT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGVkZ2VfYXJyb3doZWFkID0gbWVyZ2UgcyBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3doZWFkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBvc2l0aW9uIHAgLT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGVkZ2VfcG9zaXRpb25zID0gcCBAIGF0dHJpYnV0ZXMuZWRnZV9wb3NpdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29udGV4dHVhbF9oZWxwIHMgLT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGVkZ2VfY29udGV4dHVhbF9oZWxwID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfY29udGV4dHVhbF9oZWxwIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBTb21lIHNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBzJyAtPiBTb21lIChzJyBeIHMpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb24gLT5cbiAgICAgICAgICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9vbl9jbGljayA9IFNvbWUganNvbiB9XG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCBfXG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIF9cbiAgICAgICAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIG9wdGlvbl9saXN0KVxuICAgICAgICAgICAgYXR0cmlidXRlcyBsaXN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICBcImcuc2V0RWRnZSglaSwlaSx7IFwiIGlkMV9pbnQgaWQyX2ludFxuICAgICAgICBpblxuICAgICAgICBsZXQgYXR0cmlidXRlcyA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2RpcmVjdGlvbiB3aXRoXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5VbmRpcmVjdGVkIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICBlZGdlX2Fycm93aGVhZCA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQ7XG4gICAgICAgICAgICAgIGVkZ2VfYXJyb3d0YWlsID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdCAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9hcnJvd3RhaWwgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJldmVyc2UgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfYXJyb3doZWFkID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Cb3RoIC0+IGF0dHJpYnV0ZXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPSBmYWxzZSBpblxuICAgICAgICBsZXQgYm9vbCwgc19vcHQgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9sYWJlbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2wsIE5vbmVcbiAgICAgICAgICB8IFNvbWUgc3RyaW5nX2xpc3QgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwibGFiZWw6IFxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzID1cbiAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICAgICAgICAgICAgICAgIChmdW4gZm10IC0+IExpc3QuaXRlciAoRm9ybWF0LmZwcmludGYgZm10IFwiJXNcIikpXG4gICAgICAgICAgICAgICAgKExpc3QucmV2IHN0cmluZ19saXN0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzX29wdCwgcycgPVxuICAgICAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPiAxMDAgdGhlblxuICAgICAgICAgICAgICAgIFNvbWUgcywgU3RyaW5nLnN1YiBzIDAgMTAwIF4gXCIuLi5cIlxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgTm9uZSwgc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXNcXFwiXCIgcydcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlLCBzX29wdFxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2NvbG9yIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0IGNvbG9yID0gc3ZnX2NvbG9yX2VuY29kaW5nIHMgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcInN0eWxlOiBcXFwic3Ryb2tlOiAlczsgZmlsbDogd2hpdGVcXFwiLCBhcnJvd2hlYWRTdHlsZTogXFxcImZpbGw6IFxcXG4gICAgICAgICAgICAgICAgICVzOyBzdHJva2U6ICVzXFxcIlwiXG4gICAgICAgICAgICAgICAgY29sb3IgY29sb3IgY29sb3JcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBzdHJpbmdfb2ZfYXJyb3dfaW5faHRtbCBsb2dnZXIgYm9vbCBcImFycm93aGVhZFwiXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3doZWFkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBzdHJpbmdfb2ZfYXJyb3dfaW5faHRtbCBsb2dnZXIgYm9vbCBcImFycm93dGFpbFwiXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3d0YWlsXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiIH0pO0AsXCIgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBzX29wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiPCEtLSVzLS0+XFxuXCIgc1xuICAgICAgICBpblxuICAgICAgICAoKSlcbiAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5nZXRfZWRnZV9tYXAgbG9nZ2VyKVxuICBpblxuICBsZXQgZl9vcHQgPSBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXIgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICBtYXRjaCBmX29wdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZiAtPlxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwidmFyIHN2ZyA9IGQzLnNlbGVjdChcXFwic3ZnXFxcIiksaW5uZXIgPSBzdmcuc2VsZWN0KFxcXCJnXFxcIik7QCxcIlxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi8vIFNldCB1cCB6b29tIHN1cHBvcnRALFwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCJ2YXIgem9vbSA9IGQzLmJlaGF2aW9yLnpvb20oKS5vbihcXFwiem9vbVxcXCIsIGZ1bmN0aW9uKCkge0AsXCJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwiaW5uZXIuYXR0cihcXFwidHJhbnNmb3JtXFxcIiwgXFxcInRyYW5zbGF0ZShcXFwiICsgZDMuZXZlbnQudHJhbnNsYXRlICsgXFxcIilcXFwiIFxcXG4gICAgICAgICArQCxcIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCJcXFwic2NhbGUoXFxcIiArIGQzLmV2ZW50LnNjYWxlICsgXFxcIilcXFwiKTtALH0pO0Asc3ZnLmNhbGwoem9vbSk7XCJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwiLy8gQ3JlYXRlIHRoZSByZW5kZXJlckAsIHZhciByZW5kZXIgPSBuZXcgZGFncmVEMy5yZW5kZXIoKTtALFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcIi8vIFJ1biB0aGUgcmVuZGVyZXIuIFRoaXMgaXMgd2hhdCBkcmF3cyB0aGUgZmluYWwgZ3JhcGguQCxcIlxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInJlbmRlcihpbm5lciwgZyk7QCxcIiBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLy8gQ2VudGVyIHRoZSBncmFwaEAsdmFyIGluaXRpYWxTY2FsZSA9IDAuNzU7QCxcIlxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInpvb21ALFwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCIudHJhbnNsYXRlKFsoc3ZnLmF0dHIoXFxcIndpZHRoXFxcIikgLSBnLmdyYXBoKCkud2lkdGggKiBpbml0aWFsU2NhbGUpIC8gXFxcbiAgICAgICAgIDIsIDIwXSlALFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiLnNjYWxlKGluaXRpYWxTY2FsZSlALC5ldmVudChzdmcpO0AsXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcInN2Zy5hdHRyKCdoZWlnaHQnLCBnLmdyYXBoKCkuaGVpZ2h0ICogaW5pdGlhbFNjYWxlICsgNDApO1wiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQCw8L3NjcmlwdD5cIiBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJALDwvZGl2PlwiIGluXG4gICAgKClcblxubGV0IHByaW50X2dyYXBoX2Zvb3QgbG9nZ2VyID1cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuRE9UIC0+XG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJ9XCIgaW5cbiAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICB8IExvZ2dlcnMuTWF0cml4IC0+XG4gICAgbGV0IG5vZGVzID0gR3JhcGhfbG9nZ2Vyc19zaWcuZ2V0X25vZGVzIGxvZ2dlciBpblxuICAgIGxldCBlZGdlcyA9IEdyYXBoX2xvZ2dlcnNfc2lnLmdldF9lZGdlX21hcCBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcXCJydWxlc1xcXCIgOlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLm9wZW5fcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHNlcCAocywgXykgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1xcXCIlc1xcXCJcIiBzZXAgc1xuICAgICAgICAgIGluXG4gICAgICAgICAgXCIsIFwiKVxuICAgICAgICBcIlwiIG5vZGVzXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmNsb3NlX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIsXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFxcImhpdHNcXFwiIDpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5vcGVuX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0IF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBzZXAgXyAtPlxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXMxXCIgc2VwIGluXG4gICAgICAgICAgXCIsIFwiKVxuICAgICAgICBcIlwiIG5vZGVzXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmNsb3NlX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIsXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFxcImZsdXhzXFxcIiA6XCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMub3Blbl9yb3cgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gYiAoczEsIF8pIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIGlmIGIgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiLFwiIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLm9wZW5fcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIHNlcCAoczIsIF8pIC0+XG4gICAgICAgICAgICAgICAgbGV0IGNvbG9yX3ZhbHVlID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIE1vZHMuU3RyaW5nMk1hcC5maW5kX29wdGlvbiAoczEsIHMyKSBlZGdlcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gXCIwXCJcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBvcHRpb25zIC0+IG1hdHJpeF9zdHJpbmdfb2Zfb3B0aW9ucyBvcHRpb25zXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICAgICAgXCIlcyVzXCIgc2VwIGNvbG9yX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBcIiwgXCIpXG4gICAgICAgICAgICAgIFwiXCIgbm9kZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuY2xvc2Vfcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICAgICB0cnVlKVxuICAgICAgICBmYWxzZSBub2Rlc1xuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5jbG9zZV9yb3cgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgKClcbiAgfCBMb2dnZXJzLkpzX0dyYXBoIC0+IHByaW50X2Zvb3Rfc2hhcmVkX2h0bWxfanMgbG9nZ2VyXG4gIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIC0+XG4gICAgbGV0IGZfb3B0ID0gTG9nZ2Vycy5mb3JtYXR0ZXJfb2ZfbG9nZ2VyIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAobWF0Y2ggZl9vcHQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBmIC0+XG4gICAgICBsZXQgKCkgPSBwcmludF9mb290X3NoYXJlZF9odG1sX2pzIGxvZ2dlciBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkAsPC9ib2R5PkBdQCw8L2h0bWw+QF1ALlwiIGluXG4gICAgICAoKSlcbiAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuTWFwbGVcbiAgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLlNCTUxcbiAgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhclxuICB8IExvZ2dlcnMuWExTIC0+XG4gICAgKClcblxubGV0IHByaW50X2NvbW1lbnQgbG9nZ2VyID8oZmlsdGVyX2luID0gTm9uZSkgPyhmaWx0ZXJfb3V0ID0gW10pIHN0cmluZyA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICBpZiBzaGFsbF9JX2RvX2l0IGZvcm1hdCBmaWx0ZXJfaW4gZmlsdGVyX291dCB0aGVuIChcbiAgICBtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5ET1QgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiIyVzXCIgc3RyaW5nXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzXCIgc3RyaW5nXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyXG4gICAgfCBMb2dnZXJzLlhMUyB8IExvZ2dlcnMuR0VQSEkgLT5cbiAgICAgICgpXG4gIClcblxubGV0IG9wZW5fYXNzbyBsb2dnZXIgPVxuICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPlxuICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFx0PHA+PGRsPlxcblwiXG4gIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuTWFwbGVcbiAgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdHJpeFxuICB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVFxuICB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyB8IExvZ2dlcnMuR0VQSEkgLT5cbiAgICAoKVxuXG5sZXQgY2xvc2VfYXNzbyBsb2dnZXIgPVxuICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPlxuICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFx0XFx0PC9kbD48L3A+XFxuXCJcbiAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk1hcGxlXG4gIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuTWF0cml4XG4gIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUXG4gIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIHwgTG9nZ2Vycy5HRVBISSAtPlxuICAgICgpXG5cbmxldCBwcmludF9hc3NvIGxvZ2dlciBzdHJpbmcxIHN0cmluZzIgPVxuICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gIHwgTG9nZ2Vycy5ET1QgLT5cbiAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIi8qJXMgJXMqL1wiIHN0cmluZzEgc3RyaW5nMlxuICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggLT5cbiAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgIFwiXFx0XFx0XFx0PGR0PiVzPC9kdD48ZGQ+JXM8L2RkPlwiIHN0cmluZzEgc3RyaW5nMlxuICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLlNCTUxcbiAgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2FcbiAgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhclxuICB8IExvZ2dlcnMuWExTIHwgTG9nZ2Vycy5HRVBISSAtPlxuICAgICgpXG5cbmxldCBzaGFwZV9pbl9kb3Qgc2hhcGUgPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aXNpYmxlIC0+IFwic3R5bGU9aW52aXNcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkludmhvdXNlIC0+IFwic2hhcGU9aW52aG91c2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhvdXNlIC0+IFwic2hhcGU9aG91c2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlY3QgLT4gXCJzaGFwZT1ib3hcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2UgLT4gXCJzaGFwZT1lbGxpcHNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5DaXJjbGUgLT4gXCJzaGFwZT1jaXJjbGVcIlxuXG5sZXQgc2hhcGVfaW5faHRtbCBzaGFwZSA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5JbnZpc2libGUgLT4gU29tZSBcInN0eWxlOiBcXFwidmlzaWJpbGl0eTpoaWRkZW5cXFwiXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZSAtPiBTb21lIFwic2hhcGU6IFxcXCJpbnZob3VzZVxcXCJcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhvdXNlIC0+IFNvbWUgXCJzaGFwZTogXFxcImhvdXNlXFxcIlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmVjdCAtPiBTb21lIFwic2hhcGU6IFxcXCJyZWN0XFxcIlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRWxsaXBzZSAtPiBTb21lIFwic2hhcGU6IFxcXCJlbGxpcHNlXFxcIlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ2lyY2xlIC0+IFNvbWUgXCJzaGFwZTogXFxcImVsbGlwc2VcXFwiXCJcblxubGV0IHN0cmluZ19vbmVfb2ZfbGluZXN0eWxlX2luX2RvdCBfID0gXCItXCJcbmxldCBzdHJpbmdfdHdvX29mX2xpbmVzdHlsZV9pbl9kb3QgXyA9IFwiLS1cIlxuXG5sZXQgc3RyaW5nX29mX2Fycm93X2hlYWRfaW5fZG90IHN0eWxlID1cbiAgbWF0Y2ggc3R5bGUgd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbCAtPiBcIj5cIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPiBcInw+XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5UZWUgLT4gXCJ8XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+IFwiXCJcblxubGV0IHN0cmluZ19vZl9hcnJvd190YWlsX2luX2RvdCBzdHlsZSA9XG4gIG1hdGNoIHN0eWxlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gXCI8XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5WZWUgLT4gXCI8fFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIC0+IFwifFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCAtPiBcIlwiXG5cbmxldCBwcmludF9ub2RlIGxvZ2dlciA/KGRpcmVjdGl2ZXMgPSBbXSkgaWQgPVxuICBsZXQgYXR0cmlidXRlcyA9IGR1bW15X25vZGUgaW5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIG1hdGNoIExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIHdpdGhcbiAgICB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuVFhUXG4gICAgfCBMb2dnZXJzLkdFUEhJIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGF0dHJpYnV0ZXMgb3B0aW9uIC0+XG4gICAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIHMgLT4geyBhdHRyaWJ1dGVzIHdpdGggbm9kZV9sYWJlbCA9IFNvbWUgcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBzIC0+IHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfY29sb3IgPSBTb21lIHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIHMgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfZmlsbGNvbG9yID0gU29tZSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIGkgLT4geyBhdHRyaWJ1dGVzIHdpdGggbm9kZV93aWR0aCA9IFNvbWUgaSB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgaSAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggbm9kZV9oZWlnaHQgPSBTb21lIGkgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgcyAtPiB7IGF0dHJpYnV0ZXMgd2l0aCBub2RlX3NoYXBlID0gU29tZSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBvc2l0aW9uIHAgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfcG9zaXRpb25zID0gcCBAIGF0dHJpYnV0ZXMubm9kZV9wb3NpdGlvbnMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBqc29uIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBub2RlX29uX2NsaWNrID0gU29tZSBqc29uIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBzIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICBub2RlX2NvbnRleHR1YWxfaGVscCA9XG4gICAgICAgICAgICAgICAgKG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9jb250ZXh0dWFsX2hlbHAgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBTb21lIHNcbiAgICAgICAgICAgICAgICB8IFNvbWUgcycgLT4gU29tZSAocycgXiBzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdGlvbiBfXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd1RhaWwgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCBfIC0+XG4gICAgICAgICAgICBhdHRyaWJ1dGVzKVxuICAgICAgICBhdHRyaWJ1dGVzIGRpcmVjdGl2ZXNcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdGhlbWF0aWNhXG4gICAgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuU0JNTFxuICAgIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLkhUTUwgLT5cbiAgICAgIGF0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuRE9UIC0+XG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJcXFwiJXNcXFwiXCIgaWQgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgaXNfbm9fbm9kZV9hdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgdGhlblxuICAgICAgICAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiIFtcIiBpblxuICAgICAgICBsZXQgYm9vbCA9IGZhbHNlIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfbGFiZWwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIHN0cmluZyAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwibGFiZWw9XFxcIiVzXFxcIlwiIHN0cmluZ1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9zaGFwZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2xcbiAgICAgICAgICB8IFNvbWUgc2hhcGUgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcIiVzXCIgKHNoYXBlX2luX2RvdCBzaGFwZSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfd2lkdGggd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIGkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwid2lkdGg9XFxcIiVpcHhcXFwiXCIgaVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9oZWlnaHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIGkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImhlaWdodD1cXFwiJWlweFxcXCJcIiBpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX2NvbG9yIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJjb2xvcj1cXFwiJXNcXFwiXCIgKGRvdF9jb2xvcl9lbmNvZGluZyBzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9maWxsY29sb3Igd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImZpbGxjb2xvcj1cXFwiJXNcXFwiIHN0eWxlPWZpbGxlZFwiIChkb3RfY29sb3JfZW5jb2RpbmcgcylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IGlmIGJvb2wgdGhlbiAoKSBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIl07XCIgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgICgpXG4gIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIC0+XG4gICAgbGV0IGlkX2ludCA9IEdyYXBoX2xvZ2dlcnNfc2lnLmludF9vZl9zdHJpbmdfaWQgbG9nZ2VyIGlkIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiZy5zZXROb2RlKCVpLCB7IFwiIGlkX2ludFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGlzX25vX25vZGVfYXR0cmlidXRlcyBhdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc3RyaW5nID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfbGFiZWwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZFxuICAgICAgICAgIHwgU29tZSBzdHJpbmcgLT4gc3RyaW5nXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzdHJpbmcgPSBTdHJpbmcuZXNjYXBlZCBzdHJpbmcgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcImxhYmVsOiBcXFwiJXNcXFwiXCIgc3RyaW5nXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX3NoYXBlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc2hhcGUgLT5cbiAgICAgICAgICAgIChtYXRjaCBzaGFwZV9pbl9odG1sIHNoYXBlIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIHNoYXBlIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciB0cnVlIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1wiIHNoYXBlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV93aWR0aCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIGkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciB0cnVlIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIndpZHRoOiBcXFwiJWlcXFwiXCIgaVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX2hlaWdodCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIGkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciB0cnVlIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcImhlaWdodDogXFxcIiVpXFxcIlwiIGlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9jb2xvciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciB0cnVlIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJjb2xvcjogXFxcIiVzXFxcIlwiIChzdmdfY29sb3JfZW5jb2RpbmcgcylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9maWxsY29sb3Igd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgdHJ1ZSBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwic3R5bGU6IFxcXCJmaWxsOiAlc1xcXCIgXCIgKHN2Z19jb2xvcl9lbmNvZGluZyBzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgICgpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiB9KTtALFwiIGluXG4gICAgKClcbiAgfCBMb2dnZXJzLlRYVCAtPlxuICAgIChtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfbGFiZWwgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJOb2RlOiAlc1wiIGlkIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgKClcbiAgICB8IFNvbWUgbGFiZWwgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICBcIk5vZGU6JXMsIExhYmVsOiVzXCIgaWQgbGFiZWxcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgKCkpXG4gIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSnNvbiAtPlxuICAgIEdyYXBoX2xvZ2dlcnNfc2lnLmFkZF9ub2RlIGxvZ2dlciBpZCBkaXJlY3RpdmVzXG4gIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0bGFiXG4gIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhclxuICB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICgpXG5cbmxldCBwcmludF9lZGdlIGxvZ2dlciA/KGRpcmVjdGl2ZXMgPSBbXSkgPyhwcmVmaXggPSBcIlwiKSBpZDEgaWQyID1cbiAgbGV0IGF0dHJpYnV0ZXMgPSBkdW1teV9lZGdlIGluXG4gIGxldCBhdHRyaWJ1dGVzID1cbiAgICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gICAgfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaFxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkdFUEhJIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGF0dHJpYnV0ZXMgb3B0aW9uIC0+XG4gICAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIHMgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfbGFiZWwgPSBTb21lIFsgcyBdIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIHMgLT4geyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9jb2xvciA9IFNvbWUgcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgcyAtPiB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX3N0eWxlID0gcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gcyAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9kaXJlY3Rpb24gPSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93VGFpbCBzIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2Fycm93dGFpbCA9IHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIHMgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfYXJyb3doZWFkID0gcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvbiBwIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX3Bvc2l0aW9ucyA9IHAgQCBhdHRyaWJ1dGVzLmVkZ2VfcG9zaXRpb25zIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBzIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICBlZGdlX2NvbnRleHR1YWxfaGVscCA9XG4gICAgICAgICAgICAgICAgKG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9jb250ZXh0dWFsX2hlbHAgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBTb21lIHNcbiAgICAgICAgICAgICAgICB8IFNvbWUgcycgLT4gU29tZSAocycgXiBzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb24gLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2Vfb25fY2xpY2sgPSBTb21lIGpzb24gfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIF9cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIF8gLT5cbiAgICAgICAgICAgIGF0dHJpYnV0ZXMpXG4gICAgICAgIGF0dHJpYnV0ZXMgZGlyZWN0aXZlc1xuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0bGFiXG4gICAgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMU1xuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgLT5cbiAgICAgIGF0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuRE9UIC0+XG4gICAgbGV0IGRpcmVjdGlvbiA9XG4gICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfZGlyZWN0aW9uIHdpdGhcbiAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0IC0+XG4gICAgICAgIHN0cmluZ19vbmVfb2ZfbGluZXN0eWxlX2luX2RvdCBhdHRyaWJ1dGVzLmVkZ2Vfc3R5bGVcbiAgICAgICAgXiBzdHJpbmdfb2ZfYXJyb3dfaGVhZF9pbl9kb3QgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsXG4gICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlVuZGlyZWN0ZWQgLT5cbiAgICAgICAgc3RyaW5nX3R3b19vZl9saW5lc3R5bGVfaW5fZG90IGF0dHJpYnV0ZXMuZWRnZV9zdHlsZVxuICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Cb3RoIC0+XG4gICAgICAgIHN0cmluZ19vZl9hcnJvd190YWlsX2luX2RvdCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcbiAgICAgICAgXiBzdHJpbmdfb25lX29mX2xpbmVzdHlsZV9pbl9kb3QgYXR0cmlidXRlcy5lZGdlX3N0eWxlXG4gICAgICAgIF4gc3RyaW5nX29mX2Fycm93X2hlYWRfaW5fZG90IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbFxuICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZXZlcnNlIC0+XG4gICAgICAgIHN0cmluZ19vZl9hcnJvd190YWlsX2luX2RvdCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcbiAgICAgICAgXiBzdHJpbmdfb25lX29mX2xpbmVzdHlsZV9pbl9kb3QgYXR0cmlidXRlcy5lZGdlX3N0eWxlXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgXCJcXFwiJXNcXFwiICVzIFxcXCIlc1xcXCJcIiBpZDEgZGlyZWN0aW9uIGlkMlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGlzX25vX2VkZ2VfYXR0cmlidXRlcyBhdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiBbXCIgaW5cbiAgICAgICAgbGV0IGJvb2wgPSBmYWxzZSBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2xhYmVsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzdHJpbmdfbGlzdCAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJsYWJlbD1cXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAoTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1wiKVxuICAgICAgICAgICAgICAgIChMaXN0LnJldiBzdHJpbmdfbGlzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcXCJcIiBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX3N0eWxlIHdpdGhcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluIC0+IGJvb2xcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRvdHRlZCAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJzdHlsZT1cXFwiZG90dGVkXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGFzaGVkIC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcInN0eWxlPVxcXCJkYXNoZWRcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfY29sb3Igd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImNvbG9yPVxcXCIlc1xcXCJcIiAoZG90X2NvbG9yX2VuY29kaW5nIHMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2Fycm93aGVhZCB3aXRoXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gYm9vbFxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJhcnJvd2hlYWQ9XFxcInRlZVxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiYXJyb3doZWFkPVxcXCJ2ZWVcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJhcnJvd2hlYWQ9XFxcIm5vbmVcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3d0YWlsIHdpdGhcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbCAtPiBib29sXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5UZWUgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImFycm93dGFpbD1cXFwidGVlXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVmVlIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJhcnJvd3RhaWw9XFxcInZlZVxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImFycm93dGFpbD1cXFwibm9uZVxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gaWYgYm9vbCB0aGVuICgpIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXTtcIiBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgICAoKVxuICAgICAgKVxuICAgIGluXG4gICAgKClcbiAgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuSFRNTCAtPlxuICAgIGxldCBsYWJlbCA9XG4gICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfbGFiZWwgd2l0aFxuICAgICAgfCBOb25lIC0+IFsgXCJcIiBdXG4gICAgICB8IFNvbWUgeCAtPiB4XG4gICAgaW5cbiAgICBsZXQgYXJyb3cgPVxuICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2Fycm93aGVhZCB3aXRoXG4gICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgLT4gXCItLVwiXG4gICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbCB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPiBcIi0+XCJcbiAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIC0+IFwiLXxcIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgIFwiJXMlcyAlcyAlc1wiIHByZWZpeCBpZDEgYXJyb3cgaWQyXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzXCIpXG4gICAgICAgIChMaXN0LnJldiBsYWJlbClcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgKClcbiAgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkhUTUxfR3JhcGhcbiAgfCBMb2dnZXJzLkpzX0dyYXBoIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuYWRkX2VkZ2UgbG9nZ2VyIGlkMSBpZDIgZGlyZWN0aXZlc1xuICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGxhYlxuICB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5TQk1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyXG4gIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAoKVxuXG5sZXQgcHJpbnRfb25lX3RvX25fcmVsYXRpb24gbG9nZ2VyID8oZGlyZWN0aXZlcyA9IFtdKVxuICAgID8oc3R5bGVfb25lID0gR3JhcGhfbG9nZ2Vyc19zaWcuUGxhaW4pID8oc3R5bGVfbiA9IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluKVxuICAgIGlkIGlkbGlzdCA9XG4gIGxldCBmaWN0aXRpb3VzID0gXCJGaWN0aXRpb3VzX1wiIF4gaWQgaW5cbiAgbGV0IGRpcmVjdGl2ZXNfZmljdCA9XG4gICAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIC0+XG4gICAgICBMaXN0LnJldlxuICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgXCJcIlxuICAgICAgIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIEdyYXBoX2xvZ2dlcnNfc2lnLkNpcmNsZVxuICAgICAgIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIDAgOjogR3JhcGhfbG9nZ2Vyc19zaWcuSGVpZ2h0IDBcbiAgICAgICA6OiBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgR3JhcGhfbG9nZ2Vyc19zaWcuQmxhY2tcbiAgICAgICA6OiBMaXN0LnJldiBkaXJlY3RpdmVzKVxuICAgIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5ET1RcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBMaXN0LnJldlxuICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgXCJcIlxuICAgICAgIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIEdyYXBoX2xvZ2dlcnNfc2lnLkludmlzaWJsZVxuICAgICAgIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIDAgOjogR3JhcGhfbG9nZ2Vyc19zaWcuSGVpZ2h0IDBcbiAgICAgICA6OiBMaXN0LnJldiBkaXJlY3RpdmVzKVxuICBpblxuICBsZXQgZGlyZWN0aXZlc19vbmUgPVxuICAgIGlmIHN0eWxlX29uZSA9IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluIHRoZW5cbiAgICAgIGRpcmVjdGl2ZXNcbiAgICBlbHNlXG4gICAgICBMaXN0LnJldiAoR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIHN0eWxlX29uZSA6OiBMaXN0LnJldiBkaXJlY3RpdmVzKVxuICBpblxuICBsZXQgZGlyZWN0aXZlc19uID1cbiAgICBpZiBzdHlsZV9uID0gR3JhcGhfbG9nZ2Vyc19zaWcuUGxhaW4gdGhlblxuICAgICAgZGlyZWN0aXZlc1xuICAgIGVsc2VcbiAgICAgIExpc3QucmV2IChHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgc3R5bGVfbiA6OiBMaXN0LnJldiBkaXJlY3RpdmVzKVxuICBpblxuICBsZXQgXyA9IHByaW50X25vZGUgbG9nZ2VyIGZpY3RpdGlvdXMgfmRpcmVjdGl2ZXM6ZGlyZWN0aXZlc19maWN0IGluXG4gIGxldCBfID0gcHJpbnRfZWRnZSBsb2dnZXIgfmRpcmVjdGl2ZXM6ZGlyZWN0aXZlc19vbmUgZmljdGl0aW91cyBpZCBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIGlkJyAtPiBwcmludF9lZGdlIGxvZ2dlciB+ZGlyZWN0aXZlczpkaXJlY3RpdmVzX24gZmljdGl0aW91cyBpZCcpXG4gICAgICBpZGxpc3RcbiAgaW5cbiAgKClcblxubGV0IF8gPVxuICBsZXQgZiB0IHQnID0gdC5lZGdlX29uX2NsaWNrLCB0Jy5ub2RlX29uX2NsaWNrIGluXG4gIGZcbiIsIigqKlxuICAqIGdyYXBoX2pzLm1sXG4gICpcbiAgKiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFudGlxdWUsIElOUklBIFBhcmlzXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDIzLzA1LzIwMTZcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMjUvMDUvMjAxNlxuICAqICpcbiAgKlxuICAqXG4gICogQ29weXJpZ2h0IDIwMTYgIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGRpcmVjdGlvbl90b19qc29uIGRpcmVjdGlvbiA9XG4gIG1hdGNoIGRpcmVjdGlvbiB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0IC0+IGBTdHJpbmcgXCJEaXJlY3RcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJldmVyc2UgLT4gYFN0cmluZyBcIlJldmVyc2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlVuZGlyZWN0ZWQgLT4gYFN0cmluZyBcIlVuZGlyZWN0ZWRcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJvdGggLT4gYFN0cmluZyBcIkJvdGhcIlxuXG5sZXQgc2hhcGVfdG9fanNvbiBzaGFwZSA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5JbnZpc2libGUgLT4gYFN0cmluZyBcIkludmlzaWJsZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSG91c2UgLT4gYFN0cmluZyBcIkhvdXNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZSAtPiBgU3RyaW5nIFwiSW52aG91c2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlY3QgLT4gYFN0cmluZyBcInJlY3RcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2UgLT4gYFN0cmluZyBcImVsbGlwc2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNpcmNsZSAtPiBgU3RyaW5nIFwiY2lyY2xlXCJcblxubGV0IGhlYWRraW5kX3RvX2pzb24gaGVhZGtpbmQgPVxuICBtYXRjaCBoZWFka2luZCB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVmVlIC0+IGBTdHJpbmcgXCJ2ZWVcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlRlZSAtPiBgU3RyaW5nIFwiVGVlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+IGBTdHJpbmcgXCJ1bmRpcmVjdGVkXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gYFN0cmluZyBcIm5vcm1hbFwiXG5cbmxldCBsaW5lc3R5bGVfdG9fanNvbiBsaW5lc3R5bGUgPVxuICBtYXRjaCBsaW5lc3R5bGUgd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluIC0+IGBTdHJpbmcgXCJQbGFpblwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRG90dGVkIC0+IGBTdHJpbmcgXCJEb3R0ZWRcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRhc2hlZCAtPiBgU3RyaW5nIFwiRGFzaGVkXCJcblxubGV0IGNvbG9yX3RvX2pzb24gY29sb3IgPVxuICBtYXRjaCBjb2xvciB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkIC0+IGBTdHJpbmcgXCJyZWRcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuIC0+IGBTdHJpbmcgXCJncmVlblwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2hpdGUgLT4gYFN0cmluZyBcIndoaXRlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbHVlIC0+IGBTdHJpbmcgXCJibHVlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbGFjayAtPiBgU3RyaW5nIFwiYmxhY2tcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZSAtPiBgU3RyaW5nIFwibGlnaHRza3libHVlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5QYWxlR3JlZW4gLT4gYFN0cmluZyBcInBhbGVncmVlblwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQnJvd24gLT4gYFN0cmluZyBcImJyb3duXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5ZZWxsb3cgLT4gYFN0cmluZyBcInllbGxvd1wiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JleSAtPiBgU3RyaW5nIFwiZ3JleVwiXG5cbmxldCBkaXJlY3RpdmVfdG9fanNvbiBvcHRpb24gPVxuICBtYXRjaCBvcHRpb24gd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIGNvbG9yIC0+IFwiY29sb3JcIiwgY29sb3JfdG9fanNvbiBjb2xvclxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBjb2xvciAtPiBcImZpbGxjb2xvclwiLCBjb2xvcl90b19qc29uIGNvbG9yXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgc3RyaW5nIC0+IFwibGFiZWxcIiwgYFN0cmluZyBzdHJpbmdcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCBpbnQgLT4gXCJ3aWR0aFwiLCBgSW50IGludFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCBpbnQgLT4gXCJoZWlnaHRcIiwgYEludCBpbnRcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gZGlyZWN0aW9uIC0+XG4gICAgXCJkaXJlY3Rpb25cIiwgZGlyZWN0aW9uX3RvX2pzb24gZGlyZWN0aW9uXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgc2hhcGUgLT4gXCJzaGFwZVwiLCBzaGFwZV90b19qc29uIHNoYXBlXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIGhlYWRraW5kIC0+XG4gICAgXCJhcnJvd2hlYWRcIiwgaGVhZGtpbmRfdG9fanNvbiBoZWFka2luZFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93VGFpbCBoZWFka2luZCAtPlxuICAgIFwiYXJyb3d0YWlsXCIsIGhlYWRraW5kX3RvX2pzb24gaGVhZGtpbmRcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgbGluZXN0eWxlIC0+XG4gICAgXCJsaW5lc3R5bGVcIiwgbGluZXN0eWxlX3RvX2pzb24gbGluZXN0eWxlXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb24gcCAtPlxuICAgICggXCJwb3NpdGlvblwiLFxuICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAoZnVuIGpzb24gLT4gTG9jLnlvanNvbl9vZl9hbm5vdGVkIEpzb25VdGlsLm9mX3VuaXQgKCgpLCBqc29uKSlcbiAgICAgICAgcCApXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29udGV4dHVhbF9oZWxwIHMgLT5cbiAgICBcImNvbnRleHR1YWwgaGVscFwiLCBKc29uVXRpbC5vZl9zdHJpbmcgc1xuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk9uQ2xpY2sganNvbiAtPiBcIm9uX2NsaWNrXCIsIGpzb25cblxubGV0IGRpcmVjdGl2ZXNfdG9fanNvbiA9IEpzb25VdGlsLm9mX2Fzc29jIGRpcmVjdGl2ZV90b19qc29uXG5cbmxldCBub2RlX3RvX2pzb24gKGlkLCBkaXJlY3RpdmVzKSA9XG4gIGBBc3NvYyBbIFwiaWRcIiwgYFN0cmluZyBpZDsgXCJkaXJlY3RpdmVzXCIsIGRpcmVjdGl2ZXNfdG9fanNvbiBkaXJlY3RpdmVzIF1cblxubGV0IGVkZ2VfdG9fanNvbiAoaWQxLCBpZDIsIGRpcmVjdGl2ZXMpID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgXCJzb3VyY2VcIiwgYFN0cmluZyBpZDE7XG4gICAgICBcInRhcmdldFwiLCBgU3RyaW5nIGlkMjtcbiAgICAgIFwiZGlyZWN0aXZlc1wiLCBkaXJlY3RpdmVzX3RvX2pzb24gZGlyZWN0aXZlcztcbiAgICBdXG5cbmxldCBub2Rlc190b19qc29uID0gSnNvblV0aWwub2ZfbGlzdCBub2RlX3RvX2pzb25cbmxldCBlZGdlc190b19qc29uID0gSnNvblV0aWwub2ZfbGlzdCBlZGdlX3RvX2pzb25cblxubGV0IHRvX2pzb24gZ3JhcGggOiBZb2pzb24uQmFzaWMudCA9XG4gIGBBc3NvY1xuICAgIFsgXCJub2Rlc1wiLCBub2Rlc190b19qc29uIChmc3QgZ3JhcGgpOyBcImVkZ2VzXCIsIGVkZ2VzX3RvX2pzb24gKHNuZCBncmFwaCkgXVxuXG5sZXQgbGluZXN0eWxlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJQbGFpblwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluXG4gIHwgYFN0cmluZyBcIkRvdHRlZFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkRvdHRlZFxuICB8IGBTdHJpbmcgXCJEYXNoZWRcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5EYXNoZWRcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgaGVhZGtpbmRcIiwgeCkpXG5cbmxldCBoZWFka2luZF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwidmVlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuVmVlXG4gIHwgYFN0cmluZyBcIlRlZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlRlZVxuICB8IGBTdHJpbmcgXCJ1bmRpcmVjdGVkXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZFxuICB8IGBTdHJpbmcgXCJub3JtYWxcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgaGVhZGtpbmRcIiwgeCkpXG5cbmxldCBzaGFwZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiSW52aXNpYmxlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuSW52aXNpYmxlXG4gIHwgYFN0cmluZyBcIkhvdXNlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuSG91c2VcbiAgfCBgU3RyaW5nIFwiSW52aG91c2VcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZVxuICB8IGBTdHJpbmcgXCJyZWN0XCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuUmVjdFxuICB8IGBTdHJpbmcgXCJlbGxpcHNlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuRWxsaXBzZVxuICB8IGBTdHJpbmcgXCJjaXJjbGVcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5DaXJjbGVcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3Qgc2hhcGVcIiwgeCkpXG5cbmxldCBkaXJlY3Rpb25fb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIkRpcmVjdFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdFxuICB8IGBTdHJpbmcgXCJSZXZlcnNlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuUmV2ZXJzZVxuICB8IGBTdHJpbmcgXCJVbmRpcmVjdGVkXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuVW5kaXJlY3RlZFxuICB8IGBTdHJpbmcgXCJCb3RoXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuQm90aFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBkaXJlY3Rpb25cIiwgeCkpXG5cbmxldCBjb2xvcl9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiZ3JleVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZXlcbiAgfCBgU3RyaW5nIFwieWVsbG93XCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuWWVsbG93XG4gIHwgYFN0cmluZyBcInJlZFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlJlZFxuICB8IGBTdHJpbmcgXCJncmVlblwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuXG4gIHwgYFN0cmluZyBcIndoaXRlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuV2hpdGVcbiAgfCBgU3RyaW5nIFwiYmx1ZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkJsdWVcbiAgfCBgU3RyaW5nIFwiYmxhY2tcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5CbGFja1xuICB8IGBTdHJpbmcgXCJsaWdodHNreWJsdWVcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5MaWdodFNreUJsdWVcbiAgfCBgU3RyaW5nIFwicGFsZWdyZWVuXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuUGFsZUdyZWVuXG4gIHwgYFN0cmluZyBcImJyb3duXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuQnJvd25cbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgY29sb3JcIiwgeCkpXG5cbmxldCBkaXJlY3RpdmVfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgXCJjb2xvclwiLCBjb2xvciAtPiBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciAoY29sb3Jfb2ZfanNvbiBjb2xvcilcbiAgfCBcImZpbGxjb2xvclwiLCBjb2xvciAtPiBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgKGNvbG9yX29mX2pzb24gY29sb3IpXG4gIHwgXCJsYWJlbFwiLCBgU3RyaW5nIHN0cmluZyAtPiBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBzdHJpbmdcbiAgfCBcIndpZHRoXCIsIGBJbnQgaW50IC0+IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIGludFxuICB8IFwiaGVpZ2h0XCIsIGBJbnQgaW50IC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCBpbnRcbiAgfCBcImRpcmVjdGlvblwiLCBkaXJlY3Rpb24gLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gKGRpcmVjdGlvbl9vZl9qc29uIGRpcmVjdGlvbilcbiAgfCBcInNoYXBlXCIsIHNoYXBlIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIChzaGFwZV9vZl9qc29uIHNoYXBlKVxuICB8IFwiYXJyb3doZWFkXCIsIGhlYWRraW5kIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIChoZWFka2luZF9vZl9qc29uIGhlYWRraW5kKVxuICB8IFwiYXJyb3d0YWlsXCIsIGhlYWRraW5kIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dUYWlsIChoZWFka2luZF9vZl9qc29uIGhlYWRraW5kKVxuICB8IFwibGluZXN0eWxlXCIsIGxpbmVzdHlsZSAtPlxuICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSAobGluZXN0eWxlX29mX2pzb24gbGluZXN0eWxlKVxuICB8IFwicG9zaXRpb25cIiwgcG9zX2xpc3QgLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvblxuICAgICAgKEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgIChmdW4ganNvbiAtPlxuICAgICAgICAgICBzbmRcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3VuaXRcbiAgICAgICAgICAgICAgICAgICA/ZXJyb3JfbXNnOihTb21lIChKc29uVXRpbC5idWlsZF9tc2cgXCJwb3NpdGlvblwiKSkpXG4gICAgICAgICAgICAgICAganNvbikpXG4gICAgICAgICBwb3NfbGlzdClcbiAgfCBcImNvbnRleHR1YWwgaGVscFwiLCBjb250ZXh0dWFsX2hlbHAgLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgKEpzb25VdGlsLnRvX3N0cmluZyBjb250ZXh0dWFsX2hlbHApXG4gIHwgXCJvbl9jbGlja1wiLCBqc29uIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLk9uQ2xpY2sganNvblxuICB8IF8sIHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBkaXJlY3RpdmVcIiwgeCkpXG5cbmxldCBkaXJlY3RpdmVzX29mX2pzb24gZGlyZWN0aXZlcyA9XG4gIEpzb25VdGlsLnRvX2Fzc29jXG4gICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibGlzdCBvZiBkaXJlY3RpdmVzXCIpXG4gICAgZGlyZWN0aXZlX29mX2pzb24gZGlyZWN0aXZlc1xuXG5sZXQgaWRfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBzdHJpbmcgLT4gc3RyaW5nXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGlkXCIsIHgpKVxuXG5sZXQgbm9kZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDIgLT5cbiAgICAodHJ5XG4gICAgICAgKCBpZF9vZl9qc29uIChMaXN0LmFzc29jIFwiaWRcIiBsKSxcbiAgICAgICAgIGRpcmVjdGl2ZXNfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImRpcmVjdGl2ZXNcIiBsKSApXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBub2RlXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3Qgbm9kZVwiLCB4KSlcblxubGV0IGVkZ2Vfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgKHRyeVxuICAgICAgICggaWRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInNvdXJjZVwiIGwpLFxuICAgICAgICAgaWRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInRhcmdldFwiIGwpLFxuICAgICAgICAgZGlyZWN0aXZlc19vZl9qc29uIChMaXN0LmFzc29jIFwiZGlyZWN0aXZlc1wiIGwpIClcbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVkZ2VcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlZGdlXCIsIHgpKVxuXG5sZXQgbm9kZXNfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibm9kZSBsaXN0XCIpIG5vZGVfb2ZfanNvblxuXG5sZXQgZWRnZXNfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiZWRnZSBsaXN0XCIpIGVkZ2Vfb2ZfanNvblxuXG5sZXQgb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAyIC0+XG4gICAgKHRyeVxuICAgICAgICggbm9kZXNfb2ZfanNvbiAoTGlzdC5hc3NvYyBcIm5vZGVzXCIgbCksXG4gICAgICAgICBlZGdlc19vZl9qc29uIChMaXN0LmFzc29jIFwiZWRnZXNcIiBsKSApXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlbnZpcm9ubWVudFwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVudmlyb25tZW50XCIsIHgpKVxuIiwidHlwZSBicmVha19oaW50ID0gU3BhY2UgfCBOb19zcGFjZVxuXG50eXBlIHN5bWJvbF90YWJsZSA9IHtcbiAgYWdlbnRfb3Blbjogc3RyaW5nO1xuICBhZ2VudF9jbG9zZTogc3RyaW5nO1xuICBhZ2VudF9zZXBfY29tbWE6IHN0cmluZyAqIGJyZWFrX2hpbnQ7XG4gIGFnZW50X3NlcF9kb3Q6IHN0cmluZyAqIGJyZWFrX2hpbnQ7XG4gIGFnZW50X3NlcF9wbHVzOiBzdHJpbmcgKiBicmVha19oaW50O1xuICBnaG9zdF9hZ2VudDogc3RyaW5nO1xuICBzaG93X2dob3N0OiBib29sO1xuICBpbnRlcm5hbF9zdGF0ZV9zeW1ib2w6IHN0cmluZztcbiAgb3Blbl9pbnRlcm5hbF9zdGF0ZTogc3RyaW5nO1xuICBjbG9zZV9pbnRlcm5hbF9zdGF0ZTogc3RyaW5nO1xuICBvcGVuX2ludGVybmFsX3N0YXRlX21vZDogc3RyaW5nO1xuICBjbG9zZV9pbnRlcm5hbF9zdGF0ZV9tb2Q6IHN0cmluZztcbiAgaW50ZXJuYWxfc3RhdGVfbW9kX3N5bWJvbDogc3RyaW5nO1xuICBpbnRlcm5hbF9zdGF0ZV9hbnk6IHN0cmluZztcbiAgb3Blbl9iaW5kaW5nX3N0YXRlOiBzdHJpbmc7XG4gIGNsb3NlX2JpbmRpbmdfc3RhdGU6IHN0cmluZztcbiAgbWlzc2luZ19iaW5kaW5nX3N0YXRlOiBzdHJpbmc7XG4gIG9wZW5fYmluZGluZ19zdGF0ZV9tb2Q6IHN0cmluZztcbiAgYmluZGluZ19zdGF0ZV9tb2Rfc3ltYm9sOiBzdHJpbmc7XG4gIGNsb3NlX2JpbmRpbmdfc3RhdGVfbW9kOiBzdHJpbmc7XG4gIGZyZWU6IHN0cmluZztcbiAgYm91bmQ6IHN0cmluZztcbiAgbGlua190b19hbnk6IHN0cmluZztcbiAgbGlua190b19zb21lOiBzdHJpbmc7XG4gIGF0OiBzdHJpbmc7XG4gIHNpdGVfc2VwOiBzdHJpbmcgKiBicmVha19oaW50O1xuICBidHlwZV9zZXA6IHN0cmluZztcbiAgdW5pX2Fycm93OiBzdHJpbmc7XG4gIHJldl9hcnJvdzogc3RyaW5nO1xuICBiaV9hcnJvdzogc3RyaW5nO1xuICB1bmlfYXJyb3dfbm9wb2x5OiBzdHJpbmc7XG4gIHJldl9hcnJvd19ub3BvbHk6IHN0cmluZztcbiAgYmlfYXJyb3dfbm9wb2x5OiBzdHJpbmc7XG4gIGJyZWFrYWJsZTogYm9vbDtcbiAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlOiBzdHJpbmc7XG4gIG9wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2ZTogc3RyaW5nO1xuICBvcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eTogc3RyaW5nO1xuICBjbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlOiBzdHJpbmc7XG4gIGNsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpdmU6IHN0cmluZztcbiAgY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5OiBzdHJpbmc7XG4gIGludF9pbnRlcnZhbF9zZXBhcmF0b3I6IHN0cmluZztcbiAgcGx1c19pbmZpbml0eTogc3RyaW5nO1xuICBtaW51c19pbmZpbml0eTogc3RyaW5nO1xuICBvcGVuX2NvdW50ZXJfc3RhdGU6IHN0cmluZztcbiAgb3Blbl9jb3VudGVyY2VxOiBzdHJpbmc7XG4gIG9wZW5fY291bnRlcmNndGU6IHN0cmluZztcbiAgb3Blbl9jb3VudGVyY3Zhcjogc3RyaW5nO1xuICBvcGVuX2NvdW50ZXJkZWx0YTogc3RyaW5nO1xuICBvcGVuX2NvdW50ZXJ2YWw6IHN0cmluZztcbiAgY2xvc2VfY291bnRlcl9zdGF0ZTogc3RyaW5nO1xuICBjbG9zZV9jb3VudGVyY2VxOiBzdHJpbmc7XG4gIGNsb3NlX2NvdW50ZXJjZ3RlOiBzdHJpbmc7XG4gIGNsb3NlX2NvdW50ZXJjdmFyOiBzdHJpbmc7XG4gIGNsb3NlX2NvdW50ZXJkZWx0YTogc3RyaW5nO1xuICBjbG9zZV9jb3VudGVydmFsOiBzdHJpbmc7XG4gIGNvdW50ZXJjZXFfc3ltYm9sOiBzdHJpbmc7XG4gIGNvdW50ZXJjZ3RlX3N5bWJvbDogc3RyaW5nO1xuICBjb3VudGVyY3Zhcl9zeW1ib2w6IHN0cmluZztcbiAgY291bnRlcmRlbHRhcGx1c19zeW1ib2w6IHN0cmluZztcbiAgY291bnRlcmRlbHRhbWludXNfc3ltYm9sOiBzdHJpbmc7XG4gIGNvdW50ZXJ2YWxfc3ltYm9sOiBzdHJpbmc7XG59XG5cbmxldCBzeW1ib2xfdGFibGVfVjMgPVxuICB7XG4gICAgYm91bmQgPSBcIiFcIjtcbiAgICBvcGVuX2JpbmRpbmdfc3RhdGUgPSBcIlwiO1xuICAgIGNsb3NlX2JpbmRpbmdfc3RhdGUgPSBcIlwiO1xuICAgIG1pc3NpbmdfYmluZGluZ19zdGF0ZSA9IFwiP1wiO1xuICAgIGxpbmtfdG9fYW55ID0gXCI/XCI7XG4gICAgbGlua190b19zb21lID0gXCIhX1wiO1xuICAgIGludGVybmFsX3N0YXRlX3N5bWJvbCA9IFwiflwiO1xuICAgIG9wZW5faW50ZXJuYWxfc3RhdGUgPSBcIlwiO1xuICAgIGNsb3NlX2ludGVybmFsX3N0YXRlID0gXCJcIjtcbiAgICBvcGVuX2ludGVybmFsX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgY2xvc2VfaW50ZXJuYWxfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBpbnRlcm5hbF9zdGF0ZV9tb2Rfc3ltYm9sID0gXCIvXCI7XG4gICAgaW50ZXJuYWxfc3RhdGVfYW55ID0gXCJcIjtcbiAgICBvcGVuX2JpbmRpbmdfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBjbG9zZV9iaW5kaW5nX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgYmluZGluZ19zdGF0ZV9tb2Rfc3ltYm9sID0gXCJcIjtcbiAgICBmcmVlID0gXCJcIjtcbiAgICBhdCA9IFwiLlwiO1xuICAgIGFnZW50X29wZW4gPSBcIihcIjtcbiAgICBhZ2VudF9jbG9zZSA9IFwiKVwiO1xuICAgIGFnZW50X3NlcF9jb21tYSA9IFwiLFwiLCBTcGFjZTtcbiAgICBhZ2VudF9zZXBfcGx1cyA9IFwiLFwiLCBTcGFjZTtcbiAgICBhZ2VudF9zZXBfZG90ID0gXCIsXCIsIFNwYWNlO1xuICAgIGJ0eXBlX3NlcCA9IFwiLlwiO1xuICAgIHNpdGVfc2VwID0gXCIsXCIsIE5vX3NwYWNlO1xuICAgIGdob3N0X2FnZW50ID0gXCIuXCI7XG4gICAgc2hvd19naG9zdCA9IGZhbHNlO1xuICAgIHVuaV9hcnJvdyA9IFwiLT5cIjtcbiAgICByZXZfYXJyb3cgPSBcIjwtXCI7XG4gICAgYmlfYXJyb3cgPSBcIjwtPlwiO1xuICAgIHVuaV9hcnJvd19ub3BvbHkgPSBcIi0hLT5cIjtcbiAgICByZXZfYXJyb3dfbm9wb2x5ID0gXCI8LSEtXCI7XG4gICAgYmlfYXJyb3dfbm9wb2x5ID0gXCI8LSEtPlwiO1xuICAgIGJyZWFrYWJsZSA9IHRydWU7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlID0gXCJbXCI7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlID0gXCJdXCI7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHkgPSBcIl1cIjtcbiAgICBwbHVzX2luZmluaXR5ID0gXCIrb29cIjtcbiAgICBtaW51c19pbmZpbml0eSA9IFwiLW9vXCI7XG4gICAgY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2l2ZSA9IFwiXVwiO1xuICAgIGNsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpdmUgPSBcIltcIjtcbiAgICBjbG9zZV9pbnRfaW50ZXJ2YWxfaW5maW5pdHkgPSBcIltcIjtcbiAgICBpbnRfaW50ZXJ2YWxfc2VwYXJhdG9yID0gXCIgLi4gXCI7XG4gICAgb3Blbl9jb3VudGVyX3N0YXRlID0gXCJ7XCI7XG4gICAgb3Blbl9jb3VudGVyY2VxID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJjZ3RlID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJjdmFyID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJkZWx0YSA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVydmFsID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyX3N0YXRlID0gXCJ9XCI7XG4gICAgY2xvc2VfY291bnRlcmNlcSA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcmNndGUgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJjdmFyID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyZGVsdGEgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJ2YWwgPSBcIlwiO1xuICAgIGNvdW50ZXJjZXFfc3ltYm9sID0gXCI9XCI7XG4gICAgY291bnRlcmNndGVfc3ltYm9sID0gXCI+PVwiO1xuICAgIGNvdW50ZXJjdmFyX3N5bWJvbCA9IFwiOlwiO1xuICAgIGNvdW50ZXJ2YWxfc3ltYm9sID0gXCI6PVwiO1xuICAgIGNvdW50ZXJkZWx0YXBsdXNfc3ltYm9sID0gXCIrXCI7XG4gICAgY291bnRlcmRlbHRhbWludXNfc3ltYm9sID0gXCItXCI7XG4gIH1cblxubGV0IGxpZ2h0ZW4gc3ltYm9sX3RhYmxlID1cbiAgeyBzeW1ib2xfdGFibGUgd2l0aCBzaXRlX3NlcCA9IFwiIFwiLCBzbmQgc3ltYm9sX3RhYmxlLnNpdGVfc2VwIH1cblxubGV0IHRvX2RvdG5ldCBzeW1ib2xfdGFibGUgPVxuICB7XG4gICAgc3ltYm9sX3RhYmxlIHdpdGhcbiAgICBhZ2VudF9zZXBfcGx1cyA9IFwiICtcIiwgc25kIHN5bWJvbF90YWJsZS5hZ2VudF9zZXBfcGx1cztcbiAgICBhZ2VudF9zZXBfZG90ID0gXCIuXCIsIE5vX3NwYWNlO1xuICB9XG5cbmxldCBzeW1ib2xfdGFibGVfVjQgPVxuICB7XG4gICAgYm91bmQgPSBcIlwiO1xuICAgIG9wZW5fYmluZGluZ19zdGF0ZSA9IFwiW1wiO1xuICAgIGNsb3NlX2JpbmRpbmdfc3RhdGUgPSBcIl1cIjtcbiAgICBtaXNzaW5nX2JpbmRpbmdfc3RhdGUgPSBcIlwiO1xuICAgIGxpbmtfdG9fYW55ID0gXCIjXCI7XG4gICAgbGlua190b19zb21lID0gXCJfXCI7XG4gICAgaW50ZXJuYWxfc3RhdGVfc3ltYm9sID0gXCJcIjtcbiAgICBvcGVuX2ludGVybmFsX3N0YXRlID0gXCJ7XCI7XG4gICAgY2xvc2VfaW50ZXJuYWxfc3RhdGUgPSBcIn1cIjtcbiAgICBpbnRlcm5hbF9zdGF0ZV9hbnkgPSBcInsjfVwiO1xuICAgIG9wZW5faW50ZXJuYWxfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBjbG9zZV9pbnRlcm5hbF9zdGF0ZV9tb2QgPSBcIlwiO1xuICAgIGludGVybmFsX3N0YXRlX21vZF9zeW1ib2wgPSBcIi9cIjtcbiAgICBvcGVuX2JpbmRpbmdfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBjbG9zZV9iaW5kaW5nX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgYmluZGluZ19zdGF0ZV9tb2Rfc3ltYm9sID0gXCJcIjtcbiAgICBmcmVlID0gXCIuXCI7XG4gICAgYXQgPSBcIi5cIjtcbiAgICBhZ2VudF9vcGVuID0gXCIoXCI7XG4gICAgYWdlbnRfY2xvc2UgPSBcIilcIjtcbiAgICBhZ2VudF9zZXBfY29tbWEgPSBcIixcIiwgU3BhY2U7XG4gICAgYWdlbnRfc2VwX3BsdXMgPSBcIixcIiwgU3BhY2U7XG4gICAgYWdlbnRfc2VwX2RvdCA9IFwiLFwiLCBTcGFjZTtcbiAgICBidHlwZV9zZXAgPSBcIi5cIjtcbiAgICBzaXRlX3NlcCA9IFwiLFwiLCBOb19zcGFjZTtcbiAgICBnaG9zdF9hZ2VudCA9IFwiLlwiO1xuICAgIHNob3dfZ2hvc3QgPSB0cnVlO1xuICAgIHVuaV9hcnJvdyA9IFwiLT5cIjtcbiAgICByZXZfYXJyb3cgPSBcIjwtXCI7XG4gICAgYmlfYXJyb3cgPSBcIjwtPlwiO1xuICAgIHVuaV9hcnJvd19ub3BvbHkgPSBcIi0hLT5cIjtcbiAgICByZXZfYXJyb3dfbm9wb2x5ID0gXCI8LSEtXCI7XG4gICAgYmlfYXJyb3dfbm9wb2x5ID0gXCI8LSEtPlwiO1xuICAgIGJyZWFrYWJsZSA9IHRydWU7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlID0gXCJbXCI7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlID0gXCJdXCI7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHkgPSBcIl1cIjtcbiAgICBwbHVzX2luZmluaXR5ID0gXCIrb29cIjtcbiAgICBtaW51c19pbmZpbml0eSA9IFwiLW9vXCI7XG4gICAgb3Blbl9jb3VudGVyX3N0YXRlID0gXCJ7XCI7XG4gICAgY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2l2ZSA9IFwiXVwiO1xuICAgIGNsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpdmUgPSBcIltcIjtcbiAgICBjbG9zZV9pbnRfaW50ZXJ2YWxfaW5maW5pdHkgPSBcIltcIjtcbiAgICBpbnRfaW50ZXJ2YWxfc2VwYXJhdG9yID0gXCIgLi4gXCI7XG4gICAgb3Blbl9jb3VudGVyY2VxID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJjZ3RlID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJjdmFyID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJkZWx0YSA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVydmFsID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyX3N0YXRlID0gXCJ9XCI7XG4gICAgY2xvc2VfY291bnRlcmNlcSA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcmNndGUgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJjdmFyID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyZGVsdGEgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJ2YWwgPSBcIlwiO1xuICAgIGNvdW50ZXJjZXFfc3ltYm9sID0gXCI9XCI7XG4gICAgY291bnRlcmNndGVfc3ltYm9sID0gXCI+PVwiO1xuICAgIGNvdW50ZXJjdmFyX3N5bWJvbCA9IFwiOlwiO1xuICAgIGNvdW50ZXJ2YWxfc3ltYm9sID0gXCI6PVwiO1xuICAgIGNvdW50ZXJkZWx0YXBsdXNfc3ltYm9sID0gXCIrXCI7XG4gICAgY291bnRlcmRlbHRhbWludXNfc3ltYm9sID0gXCItXCI7XG4gIH1cblxubGV0IG5vdF9icmVha2FibGUgc3ltYm9sX3RhYmxlID0geyBzeW1ib2xfdGFibGUgd2l0aCBicmVha2FibGUgPSBmYWxzZSB9XG5sZXQgc3ltYm9sX3RhYmxlX1YzX2xpZ2h0ID0gbGlnaHRlbiBzeW1ib2xfdGFibGVfVjNcbmxldCBzeW1ib2xfdGFibGVfZG90bmV0ID0gdG9fZG90bmV0IHN5bWJvbF90YWJsZV9WM1xubGV0IHVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WMyA9IG5vdF9icmVha2FibGUgc3ltYm9sX3RhYmxlX1YzXG5sZXQgdW5icmVha2FibGVfc3ltYm9sX3RhYmxlX1Y0ID0gbm90X2JyZWFrYWJsZSBzeW1ib2xfdGFibGVfVjRcbmxldCB1bmJyZWFrYWJsZV9zeW1ib2xfdGFibGVfVjNfbGlnaHQgPSBub3RfYnJlYWthYmxlIHN5bWJvbF90YWJsZV9WM19saWdodFxubGV0IHVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9kb3RuZXQgPSBub3RfYnJlYWthYmxlIHN5bWJvbF90YWJsZV9kb3RuZXRcblxubGV0IHdpdGhfZG90X2FuZF9wbHVzIHN5bWJvbF90YWJsZSA9XG4gIHtcbiAgICBzeW1ib2xfdGFibGUgd2l0aFxuICAgIGFnZW50X3NlcF9wbHVzID0gdW5icmVha2FibGVfc3ltYm9sX3RhYmxlX2RvdG5ldC5hZ2VudF9zZXBfcGx1cztcbiAgICBhZ2VudF9zZXBfZG90ID0gdW5icmVha2FibGVfc3ltYm9sX3RhYmxlX2RvdG5ldC5hZ2VudF9zZXBfZG90O1xuICB9XG4iLCIoKipcbiAgICAqIHJlbWFuZW50X3N0YXRlX3NpZ25hdHVyZS5tbFxuICAgICpcbiAgICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgICpcbiAgICAqIENyZWF0aW9uOiAxMi8xMC8yMDEwXG4gICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPE5vdiAyOCAyMDE4PlxuICAgICogKlxuICAgICogU2lnbmF0dXJlIGZvciB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgbWVtb3J5XG4gICAgKlxuICAgICogQ29weXJpZ2h0IDIwMTAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAgICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBydWxlX2tleSA9IGludFxuXG50eXBlIGVuZ2luZV9zdGF0ZSA9IHtcbiAgY29tbWFuZF9saW5lOiBzdHJpbmcgb3B0aW9uO1xuICB3YWtlX3VwX21hcDogKHJ1bGVfa2V5IC0+IHJ1bGVfa2V5IGxpc3QpIG9wdGlvbjtcbn1cblxubGV0IGVtcHR5X2VuZ2luZV9zdGF0ZSA9IHsgY29tbWFuZF9saW5lID0gTm9uZTsgd2FrZV91cF9tYXAgPSBOb25lIH1cbmxldCB3YWtlX3VwX21hcCBlcnJvciBlbmdpbmVfc3RhdGUgPSBlcnJvciwgZW5naW5lX3N0YXRlLndha2VfdXBfbWFwXG4iLCIoKipcbiAgICAqIGV4Y2VwdGlvbi5tbFxuICAgICogb3BlbmthcHBhXG4gICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICAqXG4gICAgKiBDcmVhdGlvbjogMDgvMDMvMjAxMFxuICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxOb3YgMDQgMjAxOD5cbiAgICAqICpcbiAgICAqIFRoaXMgbGlicmFyeSBkZWNsYXJlcyBleGNlcHRpb25zXG4gICAgKlxuICAgICogQ29weXJpZ2h0IDIwMTAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAgICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAgKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgdW5jYXVnaHRfZXhjZXB0aW9uID0ge1xuICBmaWxlX25hbWU6IHN0cmluZyBvcHRpb247XG4gIG1lc3NhZ2U6IHN0cmluZyBvcHRpb247XG4gIGFsYXJtOiBleG47XG59XG5cbnR5cGUgY2F1Z2h0X2V4Y2VwdGlvbiA9IHtcbiAgdW5jYXVnaHRfZXhjZXB0aW9uOiB1bmNhdWdodF9leGNlcHRpb247XG4gIGNhbGxpbmdfc3RhY2s6IHN0cmluZyBsaXN0O1xufVxuXG5leGNlcHRpb24gVW5jYXVnaHRfZXhjZXB0aW9uIG9mIHVuY2F1Z2h0X2V4Y2VwdGlvblxuZXhjZXB0aW9uIENhdWdodF9leGNlcHRpb24gb2YgY2F1Z2h0X2V4Y2VwdGlvblxuXG5sZXQgcmVjIGV4bl90b19qc29uID0gZnVuY3Rpb25cbiAgfCBFeGl0IC0+IGBBc3NvYyBbIFwiRXhpdFwiLCBgTnVsbCBdXG4gIHwgTm90X2ZvdW5kIC0+IGBBc3NvYyBbIFwiTm90X2ZvdW5kXCIsIGBOdWxsIF1cbiAgfCBBcmcuQmFkIHggLT4gYEFzc29jIFsgXCJBcmcuQmFkXCIsIEpzb25VdGlsLm9mX3N0cmluZyB4IF1cbiAgfCBTeXMuQnJlYWsgLT4gYEFzc29jIFsgXCJTeXMuQnJlYWtcIiwgYE51bGwgXVxuICB8IFN0YWNrLkVtcHR5IC0+IGBBc3NvYyBbIFwiU3RhY2suRW1wdHlcIiwgYE51bGwgXVxuICB8IFF1ZXVlLkVtcHR5IC0+IGBBc3NvYyBbIFwiUXVldWUuRW1wdHlcIiwgYE51bGwgXVxuICB8IFN0cmVhbS5FcnJvciB4IC0+IGBBc3NvYyBbIFwiU3RyZWFtLkVycm9yXCIsIEpzb25VdGlsLm9mX3N0cmluZyB4IF1cbiAgfCBTdHJlYW0uRmFpbHVyZSAtPiBgQXNzb2MgWyBcIlN0cmVhbS5GYWlsdXJlXCIsIGBOdWxsIF1cbiAgfCBBcmcuSGVscCB4IC0+IGBBc3NvYyBbIFwiQXJnLkhlbHBcIiwgSnNvblV0aWwub2Zfc3RyaW5nIHggXVxuICB8IFBhcnNpbmcuUGFyc2VfZXJyb3IgLT4gYEFzc29jIFsgXCJQYXJzaW5nLlBhcnNlX2Vycm9yXCIsIGBOdWxsIF1cbiAgfCBTY2FuZi5TY2FuX2ZhaWx1cmUgeCAtPiBgQXNzb2MgWyBcIlNjYW5fZmFpbHVyZVwiLCBKc29uVXRpbC5vZl9zdHJpbmcgeCBdXG4gIHwgTGF6eS5VbmRlZmluZWQgLT4gYEFzc29jIFsgXCJMYXp5LlVuZGVmaW5lZFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5Vbml4X2Vycm9yIChhLCBiLCBjKSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoIFwiVW5peExhYmVscy5Vbml4X2Vycm9yXCIsXG4gICAgICAgICAgYEFzc29jXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFwiZnN0XCIsIEpzb25VdGlsLm9mX3VuaXhfbGFiZWwgYTtcbiAgICAgICAgICAgICAgXCJzbmRcIiwgSnNvblV0aWwub2Zfc3RyaW5nIGI7XG4gICAgICAgICAgICAgIFwidHJkXCIsIEpzb25VdGlsLm9mX3N0cmluZyBjO1xuICAgICAgICAgICAgXSApO1xuICAgICAgXVxuICB8IFVuaXguVW5peF9lcnJvciAoYSwgYiwgYykgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKCBcIlVuaXguVW5peC5lcnJvclwiLFxuICAgICAgICAgIGBBc3NvY1xuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBcImZzdFwiLCBKc29uVXRpbC5vZl91bml4X2Vycm9yIGE7XG4gICAgICAgICAgICAgIFwic25kXCIsIEpzb25VdGlsLm9mX3N0cmluZyBiO1xuICAgICAgICAgICAgICBcInRyZFwiLCBKc29uVXRpbC5vZl9zdHJpbmcgYztcbiAgICAgICAgICAgIF0gKTtcbiAgICAgIF1cbiAgfCBGYWlsdXJlIHggLT4gYEFzc29jIFsgXCJGYWlsdXJlXCIsIEpzb25VdGlsLm9mX3N0cmluZyB4IF1cbiAgfCBTdGFja19vdmVyZmxvdyAtPiBgQXNzb2MgWyBcIlN0YWNrX292ZXJmbG93XCIsIGBOdWxsIF1cbiAgfCBDYXVnaHRfZXhjZXB0aW9uIHggLT4gYEFzc29jIFsgXCJDYXVnaHRcIiwgY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uIHggXVxuICB8IFVuY2F1Z2h0X2V4Y2VwdGlvbiB4IC0+IGBBc3NvYyBbIFwiVW5jYXVnaHRcIiwgdW5jYXVnaHRfZXhjZXB0aW9uX3RvX2pzb24geCBdXG4gIHwgXyAtPiBgQXNzb2MgWyBcIlVua25vd25cIiwgYE51bGwgXVxuXG5hbmQgdW5jYXVnaHRfZXhjZXB0aW9uX3RvX2pzb24gdW5jYXVnaHQgPVxuICBKc29uVXRpbC5vZl90cmlwbGUgfmxhYjE6XCJmaWxlX25hbWVcIiB+bGFiMjpcIm1lc3NhZ2VcIiB+bGFiMzpcImV4blwiXG4gICAgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9zdHJpbmcpXG4gICAgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9zdHJpbmcpXG4gICAgZXhuX3RvX2pzb25cbiAgICAodW5jYXVnaHQuZmlsZV9uYW1lLCB1bmNhdWdodC5tZXNzYWdlLCB1bmNhdWdodC5hbGFybSlcblxuYW5kIGNhdWdodF9leGNlcHRpb25fdG9fanNvbiBjYXVnaHQgPVxuICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOlwidW5jYXVnaHRfZXhjZXB0aW9uXCIgfmxhYjI6XCJjYWxsaW5nX3N0YWNrXCJcbiAgICB1bmNhdWdodF9leGNlcHRpb25fdG9fanNvblxuICAgIChKc29uVXRpbC5vZl9saXN0IEpzb25VdGlsLm9mX3N0cmluZylcbiAgICAoY2F1Z2h0LnVuY2F1Z2h0X2V4Y2VwdGlvbiwgY2F1Z2h0LmNhbGxpbmdfc3RhY2spXG5cbmxldCByZWMgZXhuX29mX2pzb24gKGpzb24gOiBZb2pzb24uQmFzaWMudCkgPVxuICBtYXRjaCBqc29uIHdpdGhcbiAgfCBgQXNzb2MgWyAoXCJFeGl0XCIsIGBOdWxsKSBdIC0+IEV4aXRcbiAgfCBgQXNzb2MgWyAoXCJOb3RfZm91bmRcIiwgYE51bGwpIF0gLT4gTm90X2ZvdW5kXG4gIHwgYEFzc29jIFsgKFwiQXJnLkJhZFwiLCB4KSBdIC0+IEFyZy5CYWQgKEpzb25VdGlsLnRvX3N0cmluZyB4KVxuICB8IGBBc3NvYyBbIChcIlN5cy5CcmVha1wiLCBgTnVsbCkgXSAtPiBTeXMuQnJlYWtcbiAgfCBgQXNzb2MgWyAoXCJTdGFjay5FbXB0eVwiLCBgTnVsbCkgXSAtPiBTdGFjay5FbXB0eVxuICB8IGBBc3NvYyBbIChcIlF1ZXVlLkVtcHR5XCIsIGBOdWxsKSBdIC0+IFF1ZXVlLkVtcHR5XG4gIHwgYEFzc29jIFsgKFwiU3RyZWFtLkVycm9yXCIsIHgpIF0gLT4gU3RyZWFtLkVycm9yIChKc29uVXRpbC50b19zdHJpbmcgeClcbiAgfCBgQXNzb2MgWyAoXCJTdHJlYW0uRmFpbHVyZVwiLCBgTnVsbCkgXSAtPiBTdHJlYW0uRmFpbHVyZVxuICB8IGBBc3NvYyBbIChcIkFyZy5IZWxwXCIsIHgpIF0gLT4gQXJnLkhlbHAgKEpzb25VdGlsLnRvX3N0cmluZyB4KVxuICB8IGBBc3NvYyBbIChcIlBhcnNpbmcuUGFyc2VfZXJyb3JcIiwgYE51bGwpIF0gLT4gUGFyc2luZy5QYXJzZV9lcnJvclxuICB8IGBBc3NvYyBbIChcIlNjYW5fZmFpbHVyZVwiLCB4KSBdIC0+IFNjYW5mLlNjYW5fZmFpbHVyZSAoSnNvblV0aWwudG9fc3RyaW5nIHgpXG4gIHwgYEFzc29jIFsgKFwiTGF6eS5VbmRlZmluZWRcIiwgYE51bGwpIF0gLT4gTGF6eS5VbmRlZmluZWRcbiAgfCBgQXNzb2MgWyAoXCJVbml4TGFiZWxzLlVuaXhfZXJyb3JcIiwgYEFzc29jIGwpIF0gd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICh0cnlcbiAgICAgICBVbml4TGFiZWxzLlVuaXhfZXJyb3JcbiAgICAgICAgICggSnNvblV0aWwudG9fdW5peF9sYWJlbCAoTGlzdC5hc3NvYyBcImZzdFwiIGwpLFxuICAgICAgICAgICBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgXCJzbmRcIiBsKSxcbiAgICAgICAgICAgSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIFwidHJkXCIgbCkgKVxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJ1bml4IGxhYmVscyBlcnJvclwiLCBqc29uKSkpXG4gIHwgYEFzc29jIFsgKFwiVW5peC5Vbml4X2Vycm9yXCIsIGBBc3NvYyBsKSBdIHdoZW4gTGlzdC5sZW5ndGggbCA9IDMgLT5cbiAgICAodHJ5XG4gICAgICAgVW5peC5Vbml4X2Vycm9yXG4gICAgICAgICAoIEpzb25VdGlsLnRvX3VuaXhfbGFiZWwgKExpc3QuYXNzb2MgXCJmc3RcIiBsKSxcbiAgICAgICAgICAgSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIFwic25kXCIgbCksXG4gICAgICAgICAgIEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBcInRyZFwiIGwpIClcbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJ1bml4IGVycm9yXCIsIGpzb24pKSlcbiAgfCBgQXNzb2MgWyAoXCJGYWlsdXJlXCIsIHgpIF0gLT4gRmFpbHVyZSAoSnNvblV0aWwudG9fc3RyaW5nIHgpXG4gIHwgYEFzc29jIFsgKFwiU3RhY2tfb3ZlcmZsb3dcIiwgYE51bGwpIF0gLT4gU3RhY2tfb3ZlcmZsb3dcbiAgfCBgQXNzb2MgWyAoXCJDYXVnaHRcIiwgeCkgXSAtPiBDYXVnaHRfZXhjZXB0aW9uIChjYXVnaHRfZXhjZXB0aW9uX29mX2pzb24geClcbiAgfCBgQXNzb2MgWyAoXCJVbmNhdWdodFwiLCB4KSBdIC0+XG4gICAgVW5jYXVnaHRfZXhjZXB0aW9uICh1bmNhdWdodF9leGNlcHRpb25fb2ZfanNvbiB4KVxuICB8IGBBc3NvYyBbIChcIlVua25vd25cIiwgYE51bGwpIF0gLT4gRmFpbHVyZSBcIlVua25vd25cIlxuICB8IF8gLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiZXhjZXB0aW9uXCIsIGpzb24pKVxuXG5hbmQgdW5jYXVnaHRfZXhjZXB0aW9uX29mX2pzb24ganNvbiA9XG4gIGxldCBhLCBiLCBjID1cbiAgICBKc29uVXRpbC50b190cmlwbGUgfmxhYjE6XCJmaWxlX25hbWVcIiB+bGFiMjpcIm1lc3NhZ2VcIiB+bGFiMzpcImV4blwiXG4gICAgICAoSnNvblV0aWwudG9fb3B0aW9uIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcImZpbGVfbmFtZVwiKSlcbiAgICAgIChKc29uVXRpbC50b19vcHRpb24gKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwibWVzc2FnZVwiKSlcbiAgICAgIGV4bl9vZl9qc29uIGpzb25cbiAgaW5cbiAgeyBmaWxlX25hbWUgPSBhOyBtZXNzYWdlID0gYjsgYWxhcm0gPSBjIH1cblxuYW5kIGNhdWdodF9leGNlcHRpb25fb2ZfanNvbiBqc29uID1cbiAgbGV0IGEsIGIgPVxuICAgIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6XCJ1bmNhdWdodF9leGNlcHRpb25cIiB+bGFiMjpcImNhbGxpbmdfc3RhY2tcIlxuICAgICAgdW5jYXVnaHRfZXhjZXB0aW9uX29mX2pzb25cbiAgICAgIChKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJjYWxsaW5nIHN0YWNrXCJcbiAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcInN0YWNrIGVsdFwiKSlcbiAgICAgIGpzb25cbiAgaW5cbiAgeyB1bmNhdWdodF9leGNlcHRpb24gPSBhOyBjYWxsaW5nX3N0YWNrID0gYiB9XG5cbmxldCBidWlsZF91bmNhdWdodF9leGNlcHRpb24gP2ZpbGVfbmFtZSA/bWVzc2FnZSBleG4gPVxuICB7IGZpbGVfbmFtZTsgbWVzc2FnZTsgYWxhcm0gPSBleG4gfVxuXG5sZXQgYnVpbGRfY2F1Z2h0X2V4Y2VwdGlvbiBmaWxlX25hbWUgbWVzc2FnZSBleG4gc3RhY2sgPVxuICB7XG4gICAgdW5jYXVnaHRfZXhjZXB0aW9uID0gYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uID9maWxlX25hbWUgP21lc3NhZ2UgZXhuO1xuICAgIGNhbGxpbmdfc3RhY2sgPSBzdGFjaztcbiAgfVxuXG5sZXQgcmFpc2VfZXhjZXB0aW9uIGZpbGVfbmFtZSBfa2V5IG1lc3NhZ2UgZXhuID1cbiAgcmFpc2UgKFVuY2F1Z2h0X2V4Y2VwdGlvbiB7IGZpbGVfbmFtZTsgbWVzc2FnZTsgYWxhcm0gPSBleG4gfSlcblxubGV0IHJlYyBwcF9leGNlcHRpb24gZiA9IGZ1bmN0aW9uXG4gIHwgRXhpdCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJFeGl0XCJcbiAgfCBOb3RfZm91bmQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiTm90X2ZvdW5kXCJcbiAgfCBBcmcuQmFkIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIkFyZy5CYWQoJXMpXCIgeFxuICB8IFN5cy5CcmVhayAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJTeXMuQnJlYWtcIlxuICB8IFN0YWNrLkVtcHR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlN0YWNrLkVtcHR5XCJcbiAgfCBRdWV1ZS5FbXB0eSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJRdWV1ZS5FbXB0eVwiXG4gIHwgU3RyZWFtLkVycm9yIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIlN0cmVhbS5FcnJvciAlc1wiIHhcbiAgfCBTdHJlYW0uRmFpbHVyZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJTdHJlYW0uRmFpbHVyZVwiXG4gIHwgQXJnLkhlbHAgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQXJnLkhlbHAoJXMpXCIgeFxuICB8IFBhcnNpbmcuUGFyc2VfZXJyb3IgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiUGFyc2luZy5QYXJzZV9lcnJvclwiXG4gIHwgU2NhbmYuU2Nhbl9mYWlsdXJlIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIlNjYW5mLlNjYW4uZmFpbHVyZSglcylcIiB4XG4gIHwgTGF6eS5VbmRlZmluZWQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiTGF6eS5VbmRlZmluZWRcIlxuICB8IFVuaXhMYWJlbHMuVW5peF9lcnJvciAoZXIsIHgsIHkpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIlVuaXhMYWJlbHMuVW5peF9lcnJvciglcywlcywlcylcIlxuICAgICAgKFVuaXhMYWJlbHMuZXJyb3JfbWVzc2FnZSBlcilcbiAgICAgIHggeVxuICB8IFVuaXguVW5peF9lcnJvciAoZXIsIHgsIHkpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIlVuaXguVW5peF9lcnJvciglcywlcywlcylcIiAoVW5peC5lcnJvcl9tZXNzYWdlIGVyKSB4IHlcbiAgfCBGYWlsdXJlIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIkZhaWx1cmUoJXMpXCIgeFxuICB8IFN0YWNrX292ZXJmbG93IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlN0YWNrX292ZXJmbG93XCJcbiAgfCBVbmNhdWdodF9leGNlcHRpb24geCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJVbmNhdWdodF9leGNlcHRpb24oJWEpXCIgcHBfdW5jYXVnaHQgeFxuICB8IENhdWdodF9leGNlcHRpb24geCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQ2F1Z2h0X2V4Y2VwdGlvbiglYSlcIiBwcF9jYXVnaHQgeFxuICB8IGV4YyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKFByaW50ZXhjLnRvX3N0cmluZyBleGMpXG5cbmFuZCBwcF91bmNhdWdodCBmIHggPVxuICBsZXQgd2l0aF9zcGFjZSA9IGZhbHNlIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiVhJWFleGNlcHRpb246QCAlYUBdXCJcbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlIChmdW4gZiB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJmaWxlX25hbWU6ICVzOyBcIiB4KSlcbiAgICB4LmZpbGVfbmFtZVxuICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2UgKGZ1biBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIm1lc3NhZ2U6ICVzOyBcIiB4KSlcbiAgICB4Lm1lc3NhZ2UgcHBfZXhjZXB0aW9uIHguYWxhcm1cblxuYW5kIHBwX2NhdWdodCBmIHggPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD5jYWxsaW5nX3N0YWNrOiAlYTsgJWFAXVwiXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgRm9ybWF0LnBwX3ByaW50X3N0cmluZylcbiAgICB4LmNhbGxpbmdfc3RhY2sgcHBfdW5jYXVnaHQgeC51bmNhdWdodF9leGNlcHRpb25cblxubGV0IHJlYyBzdHJpbmdsaXN0X29mX2V4Y2VwdGlvbiB4IHN0YWNrID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgRXhpdCAtPiBcIkV4aXRcIiA6OiBzdGFja1xuICB8IE5vdF9mb3VuZCAtPiBcIk5vdF9mb3VuZFwiIDo6IHN0YWNrXG4gIHwgQXJnLkJhZCB4IC0+IFwiQXJnLkJhZChcIiA6OiB4IDo6IFwiKVwiIDo6IHN0YWNrXG4gIHwgU3lzLkJyZWFrIC0+IFwiU3lzLkJyZWFrXCIgOjogc3RhY2tcbiAgfCBTdGFjay5FbXB0eSAtPiBcIlN0YWNrLkVtcHR5XCIgOjogc3RhY2tcbiAgfCBRdWV1ZS5FbXB0eSAtPiBcIlF1ZXVlLkVtcHR5XCIgOjogc3RhY2tcbiAgfCBTdHJlYW0uRXJyb3IgeCAtPiBcIlN0cmVhbS5FcnJvclwiIDo6IHggOjogc3RhY2tcbiAgfCBTdHJlYW0uRmFpbHVyZSAtPiBcIlN0cmVhbS5GYWlsdXJlXCIgOjogc3RhY2tcbiAgfCBBcmcuSGVscCB4IC0+IFwiQXJnLkhlbHAoXCIgOjogeCA6OiBcIilcIiA6OiBzdGFja1xuICB8IFBhcnNpbmcuUGFyc2VfZXJyb3IgLT4gXCJQYXJzaW5nLlBhcnNlX2Vycm9yXCIgOjogc3RhY2tcbiAgfCBTY2FuZi5TY2FuX2ZhaWx1cmUgeCAtPiBcIlNjYW5mLlNjYW4uZmFpbHVyZShcIiA6OiB4IDo6IFwiKVwiIDo6IHN0YWNrXG4gIHwgTGF6eS5VbmRlZmluZWQgLT4gXCJMYXp5LlVuZGVmaW5lZFwiIDo6IHN0YWNrXG4gIHwgVW5peExhYmVscy5Vbml4X2Vycm9yIF8gLT4gXCJVbml4TGFiZWxzLlVuaXhfZXJyb3JcIiA6OiBzdGFja1xuICB8IFVuaXguVW5peF9lcnJvciBfIC0+IFwiVW5peC5Vbml4LmVycm9yXCIgOjogc3RhY2tcbiAgfCBGYWlsdXJlIHggLT4gXCJGYWlsdXJlKFwiIDo6IHggOjogXCIpXCIgOjogc3RhY2tcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBcIlN0YWNrX292ZXJmbG93XCIgOjogc3RhY2tcbiAgfCBDYXVnaHRfZXhjZXB0aW9uIHggLT5cbiAgICBcIkNhdWdodF9leGNlcHRpb24oXCIgOjogc3RyaW5nbGlzdF9vZl9jYXVnaHQgeCAoXCIpXCIgOjogc3RhY2spXG4gIHwgVW5jYXVnaHRfZXhjZXB0aW9uIHggLT5cbiAgICBcIlVuY2F1Z2h0X2V4Y2VwdGlvbihcIiA6OiBzdHJpbmdsaXN0X29mX3VuY2F1Z2h0IHggKFwiKVwiIDo6IHN0YWNrKVxuICB8IF8gLT4gXCJVbmtub3duXCIgOjogc3RhY2tcblxuYW5kIHN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHQgeCBzdGFjayA9XG4gIChtYXRjaCB4LmZpbGVfbmFtZSB3aXRoXG4gIHwgTm9uZSAtPiBcIlwiXG4gIHwgU29tZSBmaWxlX25hbWUgLT4gXCJmaWxlX25hbWU6IFwiIF4gZmlsZV9uYW1lIF4gXCI7IFwiKVxuICA6OiAobWF0Y2ggeC5tZXNzYWdlIHdpdGhcbiAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgfCBTb21lIG1lc3NhZ2UgLT4gXCJtZXNzYWdlOiBcIiBeIG1lc3NhZ2UgXiBcIjsgXCIpXG4gIDo6IFwiZXhjZXB0aW9uOlwiXG4gIDo6IHN0cmluZ2xpc3Rfb2ZfZXhjZXB0aW9uIHguYWxhcm0gc3RhY2tcblxuYW5kIHN0cmluZ2xpc3Rfb2ZfY2F1Z2h0IHggc3RhY2sgPVxuICBcImNhbGxpbmdfc3RhY2s6IFwiXG4gIDo6IChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHNvbCBzdHJpbmcgLT4gc3RyaW5nIDo6IFwiLCBcIiA6OiBzb2wpXG4gICAgICAgIChcIjsgXCIgOjogc3RyaW5nbGlzdF9vZl91bmNhdWdodCB4LnVuY2F1Z2h0X2V4Y2VwdGlvbiAoXCI7IFwiIDo6IHN0YWNrKSkpXG4gICAgICAgeC5jYWxsaW5nX3N0YWNrXG5cbmFuZCBzdHJpbmdsaXN0X29mX3VuY2F1Z2h0X2xpZ2h0IHggc3RhY2sgPVxuICAobWF0Y2ggeC5maWxlX25hbWUgd2l0aFxuICB8IE5vbmUgLT4gXCJcIlxuICB8IFNvbWUgZmlsZV9uYW1lIC0+IFwiZmlsZV9uYW1lOiBcIiBeIGZpbGVfbmFtZSBeIFwiOyBcIilcbiAgOjogKG1hdGNoIHgubWVzc2FnZSB3aXRoXG4gICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgIHwgU29tZSBtZXNzYWdlIC0+IFwibWVzc2FnZTogXCIgXiBtZXNzYWdlIF4gXCI7IFwiKVxuICA6OiBcImV4Y2VwdGlvbjpcIlxuICA6OiBzdHJpbmdsaXN0X29mX2V4Y2VwdGlvbiB4LmFsYXJtIHN0YWNrXG5cbmFuZCBzdHJpbmdsaXN0X29mX2NhdWdodF9saWdodCB4IHN0YWNrID1cbiAgXCJjYWxsaW5nX3N0YWNrOiBcIlxuICA6OiAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBzb2wgc3RyaW5nIC0+IHN0cmluZyA6OiBcIiwgXCIgOjogc29sKVxuICAgICAgICAoXCI7IFwiXG4gICAgICAgIDo6IHN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHRfbGlnaHQgeC51bmNhdWdodF9leGNlcHRpb24gKFwiOyBcIiA6OiBzdGFjaykpKVxuICAgICAgIHguY2FsbGluZ19zdGFja1xuXG50eXBlIG1ldGhvZF9oYW5kbGVyID0ge1xuICBtaF9jYXVnaHRfZXJyb3JfbGlzdDogY2F1Z2h0X2V4Y2VwdGlvbiBsaXN0O1xuICBtaF9jYXVnaHRfZXJyb3JfbGlzdF90b191aTogY2F1Z2h0X2V4Y2VwdGlvbiBsaXN0O1xuICBtaF91bmNhdWdodF9lcnJvcl9saXN0OiB1bmNhdWdodF9leGNlcHRpb24gbGlzdDtcbiAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aTogdW5jYXVnaHRfZXhjZXB0aW9uIGxpc3Q7XG59XG5cbmxldCB0b19qc29uIG1ldGhvZF9oYW5kbGVyID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcImNhdWdodFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0IGNhdWdodF9leGNlcHRpb25fdG9fanNvblxuICAgICAgICAgIG1ldGhvZF9oYW5kbGVyLm1oX2NhdWdodF9lcnJvcl9saXN0ICk7XG4gICAgICAoIFwiY2F1Z2h0XCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3QgY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uXG4gICAgICAgICAgbWV0aG9kX2hhbmRsZXIubWhfY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWkgKTtcbiAgICAgICggXCJ1bmNhdWdodFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0IHVuY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uXG4gICAgICAgICAgbWV0aG9kX2hhbmRsZXIubWhfdW5jYXVnaHRfZXJyb3JfbGlzdCApO1xuICAgICAgKCBcInVuY2F1Z2h0X3RvX3VpXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3QgdW5jYXVnaHRfZXhjZXB0aW9uX3RvX2pzb25cbiAgICAgICAgICBtZXRob2RfaGFuZGxlci5taF91bmNhdWdodF9lcnJvcl9saXN0X3RvX3VpICk7XG4gICAgXVxuXG5sZXQgb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAyIC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBjYXVnaHQgPVxuICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3QgY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uKSAoTGlzdC5hc3NvYyBcImNhdWdodFwiIGwpXG4gICAgICAgaW5cbiAgICAgICBsZXQgY2F1Z2h0X3RvX3VpID1cbiAgICAgICAgIChKc29uVXRpbC50b19saXN0IGNhdWdodF9leGNlcHRpb25fb2ZfanNvbilcbiAgICAgICAgICAgKExpc3QuYXNzb2MgXCJjYXVnaHRfdG9fdWlcIiBsKVxuICAgICAgIGluXG4gICAgICAgbGV0IHVuY2F1Z2h0ID1cbiAgICAgICAgIChKc29uVXRpbC50b19saXN0IHVuY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uKSAoTGlzdC5hc3NvYyBcInVuY2F1Z2h0XCIgbClcbiAgICAgICBpblxuICAgICAgIGxldCB1bmNhdWdodF90b191aSA9XG4gICAgICAgICAoSnNvblV0aWwudG9fbGlzdCB1bmNhdWdodF9leGNlcHRpb25fb2ZfanNvbilcbiAgICAgICAgICAgKExpc3QuYXNzb2MgXCJ1bmNhdWdodF90b191aVwiIGwpXG4gICAgICAgaW5cbiAgICAgICB7XG4gICAgICAgICBtaF9jYXVnaHRfZXJyb3JfbGlzdCA9IGNhdWdodDtcbiAgICAgICAgIG1oX2NhdWdodF9lcnJvcl9saXN0X3RvX3VpID0gY2F1Z2h0X3RvX3VpO1xuICAgICAgICAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdCA9IHVuY2F1Z2h0O1xuICAgICAgICAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aSA9IHVuY2F1Z2h0X3RvX3VpO1xuICAgICAgIH1cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJlcnJvciBoYW5kbGVyXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImVycm9yIGhhbmRsZXJcIiwgeCkpXG5cbmxldCBlbXB0eV9lcnJvcl9oYW5kbGVyID1cbiAge1xuICAgIG1oX2NhdWdodF9lcnJvcl9saXN0ID0gW107XG4gICAgbWhfY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWkgPSBbXTtcbiAgICBtaF91bmNhdWdodF9lcnJvcl9saXN0ID0gW107XG4gICAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aSA9IFtdO1xuICB9XG5cbmxldCBhZGRfdW5jYXVnaHRfZXJyb3JfdG9fdWkgdW5jYXVnaHQgZXJyb3IgPVxuICB7XG4gICAgZXJyb3Igd2l0aFxuICAgIG1oX3VuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWkgPVxuICAgICAgdW5jYXVnaHQgOjogZXJyb3IubWhfdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aTtcbiAgfVxuXG5sZXQgYWRkX3VuY2F1Z2h0X2Vycm9yX3RvX290aGVycyB1bmNhdWdodCBlcnJvciA9XG4gIHtcbiAgICBlcnJvciB3aXRoXG4gICAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdCA9IHVuY2F1Z2h0IDo6IGVycm9yLm1oX3VuY2F1Z2h0X2Vycm9yX2xpc3Q7XG4gIH1cblxubGV0IGFkZF91bmNhdWdodF9lcnJvciA/dG9fdWkgdW5jYXVnaHQgZXJyb3IgPVxuICBsZXQgZXJyb3IgPVxuICAgIG1hdGNoIHRvX3VpIHdpdGhcbiAgICB8IFNvbWUgZmFsc2UgfCBOb25lIC0+IGVycm9yXG4gICAgfCBTb21lIHRydWUgLT4gYWRkX3VuY2F1Z2h0X2Vycm9yX3RvX3VpIHVuY2F1Z2h0IGVycm9yXG4gIGluXG4gIGFkZF91bmNhdWdodF9lcnJvcl90b19vdGhlcnMgdW5jYXVnaHQgZXJyb3JcblxubGV0IGdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3QgZXJyb3IgPSBlcnJvci5taF9jYXVnaHRfZXJyb3JfbGlzdFxubGV0IGdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3RfdG9fdWkgZXJyb3IgPSBlcnJvci5taF9jYXVnaHRfZXJyb3JfbGlzdF90b191aVxubGV0IGdldF91bmNhdWdodF9leGNlcHRpb25fbGlzdCBlcnJvciA9IGVycm9yLm1oX3VuY2F1Z2h0X2Vycm9yX2xpc3RcbmxldCBnZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3RfdG9fdWkgZXJyb3IgPSBlcnJvci5taF91bmNhdWdodF9lcnJvcl9saXN0X3RvX3VpXG5cbmxldCBpc19lbXB0eV9lcnJvcl9oYW5kbGVyIHggPVxuICB4Lm1oX2NhdWdodF9lcnJvcl9saXN0ID0gW10gJiYgeC5taF91bmNhdWdodF9lcnJvcl9saXN0ID0gW11cbiIsIigqKlxuICAqIGNvbmZpZy5tbFxuICAqIG9wZW5rYXBwYVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24vQW50aXF1ZSwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICpcbiAgKiBDcmVhdGlvbjogMDgvMDMvMjAxMFxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8Tm92IDI4IDIwMTg+XG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVyc1xuICAqIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTAsMjAxMSwyMDEyLDIwMTMsMjAxNCwyMDE1XG4gICogSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG4oKiogaWYgdW5zYWZlID0gdHJ1ZSwgdGhlbiB3aGVuZXZlciBhbiBleGNlcHRpb24gaXMgcmFpc2VkLCBhIGRlZmF1bHQgdmFsdWUgaXMgb3V0cHV0LCBhbmQgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCopXG5cbmxldCBkYXRlID0gXCI8MjAxNS4wMS4yM1wiXG5sZXQgdmVyc2lvbiA9IFwiNC4wMVwiXG5sZXQgb3V0cHV0X2RpcmVjdG9yeSA9IHJlZiBcIm91dHB1dFwiXG5sZXQgb3V0cHV0X2NtX2RpcmVjdG9yeSA9IHJlZiBcIm91dHB1dFwiXG5sZXQgb3V0cHV0X2ltX2RpcmVjdG9yeSA9IHJlZiBcIm91dHB1dFwiXG5sZXQgb3V0cHV0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeSA9IHJlZiBcIm91dHB1dFwiXG5sZXQgdW5zYWZlID0gcmVmIHRydWVcbmxldCB0cmFjZSA9IHJlZiBmYWxzZVxubGV0IHN5bnRheF92ZXJzaW9uID0gcmVmIFwiVjRcIlxubGV0IGR1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyID0gcmVmIGZhbHNlXG5sZXQgbG9nID0gcmVmIHN0ZG91dFxubGV0IGZvcm1hdHRlciA9IHJlZiBGb3JtYXQuc3RkX2Zvcm1hdHRlclxubGV0IGZpbGUgPSByZWYgKE5vbmUgOiBzdHJpbmcgb3B0aW9uKVxubGV0IGxpbmtfbW9kZSA9IHJlZiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Cb3VuZF9pbmRpY2VzXG5cbigqKiBpbmZsdWVuY2UgbWFwICopXG5sZXQgZG9faW5mbHVlbmNlX21hcCA9IHJlZiB0cnVlXG5cbmxldCBydWxlX3NoYXBlID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLlJlY3RcblxubGV0IHJ1bGVfY29sb3IgPVxuICByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuTGlnaHRTa3lCbHVlICgqXCIjODdjZWViXCIgKCogbGlnaHQgc2t5IGJsdWUgKikqKVxuXG5sZXQgdmFyaWFibGVfc2hhcGUgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuRWxsaXBzZVxuXG5sZXQgdmFyaWFibGVfY29sb3IgPVxuICByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuUGFsZUdyZWVuICgqIFwiIzk4ZmI5OFwiICgqUGFsZSBncmVlbiopKilcblxubGV0IGNlbnRlcl9jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5SZWRcbmxldCB3YWtlX3VwX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuICgqXCIjMDBmZjAwXCIgKCpHcmVlbiAqKSopXG5sZXQgaW5oaWJpdGlvbl9jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5SZWQgKCpcIiNmZjAwMDBcIiAoKnJlZCopKilcbmxldCB3YWtlX3VwX2Fycm93ID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbFxubGV0IGluaGliaXRpb25fYXJyb3cgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlXG5sZXQgaW5mbHVlbmNlX21hcF9maWxlID0gcmVmIFwiaW5mbHVlbmNlXCJcbmxldCBpbmZsdWVuY2VfbWFwX2Zvcm1hdCA9IHJlZiBcIkRPVFwiXG5sZXQgcHJvbXB0X2Z1bGxfdmFyX2RlZiA9IHJlZiBmYWxzZVxubGV0IHByb21wdF9mdWxsX3J1bGVfZGVmID0gcmVmIGZhbHNlXG5cbmxldCBtYWtlX2xhYmVsc19jb21wYXRpYmxlX3dpdGhfZG90ID1cbiAgcmVmIFsgJ1xcXCInLCBbICdcXFxcJzsgJ1xcXCInIF07ICdcXFxcJywgWyAnXFxcXCc7ICdcXFxcJyBdIF1cblxuKCoqIGNvbnRhY3QgbWFwKilcbmxldCBkb19jb250YWN0X21hcCA9IHJlZiB0cnVlXG5cbmxldCBkb19zY2MgPSByZWYgZmFsc2VcbmxldCBwdXJlX2NvbnRhY3QgPSByZWYgZmFsc2VcbmxldCBjb250YWN0X21hcF9maWxlID0gcmVmIFwiY29udGFjdFwiXG5sZXQgY29udGFjdF9tYXBfZm9ybWF0ID0gcmVmIFwiRE9UXCJcbmxldCBiaW5kaW5nX3NpdGVfc2hhcGUgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuQ2lyY2xlXG5sZXQgYmluZGluZ19zaXRlX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLlllbGxvd1xubGV0IGludGVybmFsX3NpdGVfc2hhcGUgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuRWxsaXBzZVxubGV0IGludGVybmFsX3NpdGVfY29sb3IgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW5cbmxldCBjb3VudGVyX3NpdGVfc2hhcGUgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuSG91c2VcbmxldCBjb3VudGVyX3NpdGVfY29sb3IgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuR3JleVxubGV0IGFnZW50X3NoYXBlX2FycmF5ID0gcmVmIChbfHxdIDogR3JhcGhfbG9nZ2Vyc19zaWcuc2hhcGUgb3B0aW9uIGFycmF5KVxubGV0IGFnZW50X2NvbG9yX2FycmF5ID0gcmVmIChbfHxdIDogR3JhcGhfbG9nZ2Vyc19zaWcuY29sb3Igb3B0aW9uIGFycmF5KVxubGV0IGFnZW50X3NoYXBlX2RlZiA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5SZWN0XG5sZXQgYWdlbnRfY29sb3JfZGVmID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkJsdWVcbmxldCBsaW5rX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkJsYWNrXG5sZXQgaW5mbHVlbmNlX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLlJlZFxubGV0IGluZmx1ZW5jZV9hcnJvdyA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcblxuKCoqZmxvdyBvZiBpbmZvcm1hdGlvbjogaW50ZXJuYWw7IGV4dGVybmFsIGZsb3cqKVxubGV0IGRvX09ERV9mbG93X29mX2luZm9ybWF0aW9uID0gcmVmIGZhbHNlXG5cbmxldCBkb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb24gPSByZWYgZmFsc2VcblxuKCpjb3ZlcmluZyBjbGFzc2VzOiB0aGlzIHBhcmFtZXRlciBkb2VzIG5vdCBtYXR0ZXIgaWYgaXQgaXMgdHJ1ZS9mYWxzZSopXG5sZXQgZG9fc2l0ZV9kZXBlbmRlbmNpZXMgPSByZWYgZmFsc2VcblxuKCpzZXQgdG8gdHJ1ZSBpZiBvbmUgd2FudHMgdG8gcHJpbnQgY292ZXJpbmcgY2xhc3NlcyopXG5sZXQgZHVtcF9zaXRlX2RlcGVuZGVuY2llcyA9IHJlZiBmYWxzZVxuXG4oKlJFTUFSSzogb25lIG5lZWRzIHRvIHNldCBkb19yZWFjaGFiaWxpdHlfYW5hbHlzaXMgdG8gdHJ1ZSBmaXJzdCB0byBiZVxuICBhYmxlIHRvIGFjdGl2ZSBkaWZmZXJlbnQgb3V0cHV0ICopXG5sZXQgZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzID0gcmVmIHRydWVcbmxldCB2ZXJib3NpdHlfbGV2ZWxfZm9yX3JlYWNoYWJpbGl0eV9hbmFseXNpcyA9IHJlZiBcIkxvd1wiXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcmVzdWx0ID0gcmVmIHRydWVcbmxldCBkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19jb3ZlcmluZ19jbGFzc2VzID0gcmVmIGZhbHNlXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfaXRlcmF0aW9uID0gcmVmIGZhbHNlXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfc3RhdGljID0gcmVmIGZhbHNlXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluYW1pYyA9IHJlZiBmYWxzZVxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmYgPSByZWYgZmFsc2VcbmxldCBkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bCA9IHJlZiBmYWxzZVxubGV0IGhpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzID0gcmVmIHRydWVcbmxldCBoaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uID0gcmVmIHRydWVcbmxldCBzbWFzaF9yZWxhdGlvbnMgPSByZWYgdHJ1ZVxubGV0IHVzZV9uYXR1cmFsX2xhbmd1YWdlID0gcmVmIFwia2FwcGFcIlxubGV0IGNvbXB1dGVfbG9jYWxfdHJhY2VzID0gcmVmIGZhbHNlXG5sZXQgc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3RyYWNlcyA9IHJlZiB0cnVlXG5sZXQgdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzID0gcmVmIGZhbHNlXG5sZXQgYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzID0gcmVmIGZhbHNlXG5sZXQgYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzID0gcmVmIGZhbHNlXG5sZXQgZG9fbm90X2NvbXByZXNzX3RyaXZpYWxfbG9zYW5nZXMgPSByZWYgZmFsc2VcbmxldCBsb2NhbF90cmFjZV9wcmVmaXggPSByZWYgXCJBZ2VudF90cmFjZV9cIlxubGV0IGxvY2FsX3RyYWNlX2Zvcm1hdCA9IHJlZiBcIkRPVFwiXG5sZXQgY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zID0gcmVmIGZhbHNlXG5cbigqKiBhY2N1cmFjeSAqKVxuXG5sZXQgd2l0aF92aWV3c19hbmFseXNpcyA9IHJlZiB0cnVlXG5sZXQgd2l0aF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcyA9IHJlZiB0cnVlXG5sZXQgd2l0aF9wYXJhbGxlbF9ib25kc19hbmFseXNpcyA9IHJlZiB0cnVlXG5sZXQgd2l0aF9keW5hbWljX2NvbnRhY3RfbWFwID0gcmVmIFwiZHluYW1pY1wiXG5sZXQgd2l0aF9jb3VudGVyc19hbmFseXNpcyA9IHJlZiB0cnVlXG5sZXQgY291bnRlcl9hbmFseXNpc19kb21haW4gPSByZWYgXCJtaVwiXG5sZXQgdmlld19hY2N1cmFjeV9sZXZlbCA9IHJlZiBcIkhpZ2hcIlxubGV0IGluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwgPSByZWYgXCJEaXJlY3RcIlxubGV0IGNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsID0gcmVmIFwiTG93XCJcbmxldCBzY2NfYWNjdXJhY3lfbGV2ZWwgPSByZWYgXCJIaWdoXCJcblxuKCogU3ltbWV0cmllcyAqKVxubGV0IGRvX3N5bW1ldHJpZXMgPSByZWYgZmFsc2VcbmxldCByYXRlX2NvbnZlbnRpb24gPSByZWYgXCJiaW9jaGVtaXN0XCJcblxuKCogQmFja2Rvb3JzIC0gc3RhdHMgZm9yIGJlbmNobWFya2luZyAqKVxubGV0IHByaW50X2VmZmljaWVuY3kgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2Zfc2NjID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjYyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX25icl9vZl9jb25zdHJhaW50cyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50cyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX3J1bGVzID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfdGltaW5nID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfZmlsZSA9IHJlZiBcImJlbmNobWFyay50ZXhcIlxubGV0IGJhY2tkb29yX2RpcmVjdG9yeSA9IHJlZiBcIlwiXG4iLCIoKipcbiAgKiBwYXJhbWV0ZXJzLm1sXG4gICogb3BlbmthcHBhXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbi9BbnRpcXVlLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKlxuICAqIENyZWF0aW9uOiAyMDEwLCB0aGUgMTl0aCBvZiBEZWNlbWJlclxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SmFuIDA4IDIwMjA+XG4gICogKlxuICAqIENvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyB3aGljaCBhcmUgcGFzc2VkIHRocm91Z2ggZnVuY3Rpb25zIGNvbXB1dGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMCwyMDExLDIwMTIsMjAxMywyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxuKCoqIGlmIHVuc2FmZSA9IHRydWUsIHRoZW4gd2hlbmV2ZXIgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYSBkZWZhdWx0IHZhbHVlIGlzIG91dHB1dCwgYW5kIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQqKVxuXG5sZXQgYWRkX2V4dGVuc2lvbl9pZl9ub3RfYWxyZWFkeV9tZW50aW9uZWQgYSBleHQgPVxuICBsZXQgc2l6ZV9hID0gU3RyaW5nLmxlbmd0aCBhIGluXG4gIGxldCBzaXplX2V4dCA9IFN0cmluZy5sZW5ndGggZXh0IGluXG4gIHRyeVxuICAgIGlmIHNpemVfYSA8IHNpemVfZXh0IHx8IFN0cmluZy5zdWIgYSAoc2l6ZV9hIC0gc2l6ZV9leHQpIHNpemVfZXh0ID0gZXh0IHRoZW5cbiAgICAgIGFcbiAgICBlbHNlXG4gICAgICBhIF4gZXh0XG4gIHdpdGggXyAtPiBhIF4gZXh0XG5cbmxldCBvcGVuX291dCBhIGV4dCA9XG4gICgqIGl0IHdvdWxkIGJlIGVhc2llciB3aXRoIE9DYW1sIDMuMDQgKilcbiAgbGV0IGEgPSBhZGRfZXh0ZW5zaW9uX2lmX25vdF9hbHJlYWR5X21lbnRpb25lZCBhIGV4dCBpblxuICBsZXQgZCA9IEZpbGVuYW1lLmRpcm5hbWUgYSBpblxuICBsZXQgKCkgPVxuICAgIHRyeVxuICAgICAgaWYgbm90IChTeXMuaXNfZGlyZWN0b3J5IGQpIHRoZW4gKFxuICAgICAgICBGb3JtYXQuZXByaW50ZiBcIiclcycgaXMgbm90IGEgZGlyZWN0b3J5QC5cIiBkO1xuICAgICAgICBleGl0IDFcbiAgICAgIClcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+IEthcHBhX2ZpbGVzLm1rX2Rpcl9yIGRcbiAgaW5cbiAgb3Blbl9vdXQgYVxuXG5sZXQgb3Blbl9hcHBlbmQgYSBleHQgPVxuICBsZXQgYSA9IGFkZF9leHRlbnNpb25faWZfbm90X2FscmVhZHlfbWVudGlvbmVkIGEgZXh0IGluXG4gIGxldCBkID0gRmlsZW5hbWUuZGlybmFtZSBhIGluXG4gIGxldCAoKSA9XG4gICAgdHJ5XG4gICAgICBpZiBub3QgKFN5cy5pc19kaXJlY3RvcnkgZCkgdGhlbiAoXG4gICAgICAgIEZvcm1hdC5lcHJpbnRmIFwiJyVzJyBpcyBub3QgYSBkaXJlY3RvcnlALlwiIGQ7XG4gICAgICAgIGV4aXQgMVxuICAgICAgKVxuICAgIHdpdGggU3lzX2Vycm9yIF8gLT4gS2FwcGFfZmlsZXMubWtfZGlyX3IgZFxuICBpblxuICB0cnkgb3Blbl9vdXRfZ2VuIFsgT3Blbl9hcHBlbmQgXSA1MTEgYSB3aXRoIF8gLT4gb3Blbl9vdXQgYSBleHRcblxubGV0IGNvbXBvc2UgZiBnIHggPSBmIChnIHgpXG5cbmxldCBleHRfZm9ybWF0IHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ET1QgLT4gXCIuZG90XCJcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5IVE1MIC0+IFwiLmh0bWxcIlxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRJTSAtPiBcIi5kaW0uanNvblwiXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuR0VQSEkgLT4gXCIuZ2V4ZlwiXG5cbmxldCBmZXRjaF9sZXZlbF9nZW4gcyByID1cbiAgbWF0Y2ggVG9vbHMubG93ZXJjYXNlICFyIHdpdGhcbiAgfCBcIm11dGVcIiB8IFwibm9uZVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vbmVcbiAgfCBcImxvd1wiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkxvd1xuICB8IFwibWVkaXVtXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTWVkaXVtXG4gIHwgXCJoaWdoXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSGlnaFxuICB8IFwiY29tcGxldGVcIiB8IFwiZnVsbFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkZ1bGxcbiAgfCB4IC0+XG4gICAgbGV0ICgpID0gUHJpbnRmLmVwcmludGYgXCIlczogJXMgaXMgbm90IGEgdmFsaWQgbGV2ZWwgISEhXCIgcyB4IGluXG4gICAgcmFpc2UgRXhpdFxuXG5sZXQgZmV0Y2hfZ3JhcGhfZm9ybWF0IGYgPVxuICBtYXRjaCBUb29scy5sb3dlcmNhc2UgIWYgd2l0aFxuICB8IFwiZG90XCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRE9UXG4gIHwgXCJodG1sXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSFRNTFxuICB8IFwiZGltXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRElNXG4gIHwgXCJnZXBoaVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkdFUEhJXG4gIHwgeCAtPlxuICAgIGxldCAoKSA9IFByaW50Zi5lcHJpbnRmIFwiJXMgaXMgbm90IGEgdmFsaWQgZ3JhcGggZm9ybWF0ICEhIVwiIHggaW5cbiAgICByYWlzZSBFeGl0XG5cbmxldCBmZXRjaF9hY2N1cmFjeV9sZXZlbCByID0gZmV0Y2hfbGV2ZWxfZ2VuIFwiYW4gYWNjdXJhY3lcIiByXG5sZXQgZmV0Y2hfdmVyYm9zaXR5X2xldmVsIHIgPSBmZXRjaF9sZXZlbF9nZW4gXCJhIHZlcmJvc2l0eVwiIHJcblxubGV0IGZldGNoX3JhdGVfY29udmVudGlvbiBmID1cbiAgbWF0Y2ggVG9vbHMubG93ZXJjYXNlICFmIHdpdGhcbiAgfCBcImthc2ltXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTm9fY29ycmVjdGlvblxuICB8IFwiZGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIiAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXG4gIHwgXCJiaW9jaGVtaXN0XCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuQmlvY2hlbWlzdFxuICB8IHggLT5cbiAgICBsZXQgKCkgPSBQcmludGYuZXByaW50ZiBcIiVzIGlzIG5vdCBhIHZhbGlkIHJhdGUgY29udmVudGlvbiAhISFcIiB4IGluXG4gICAgcmFpc2UgRXhpdFxuXG5sZXQgZ2V0X3N5bnRheF92ZXJzaW9uICgpID1cbiAgbWF0Y2ggIUNvbmZpZy5zeW50YXhfdmVyc2lvbiB3aXRoXG4gIHwgXCI0XCIgfCBcInY0XCIgfCBcIlY0XCIgLT4gQXN0LlY0XG4gIHwgXCIzXCIgfCBcInYzXCIgfCBcIlYzXCIgLT4gQXN0LlYzXG4gIHwgXyAtPiBmYWlsd2l0aCBcIlN5bnRheCB2ZXJzaW9uIHNob3VsZCBiZSBlaXRoZXIgVjMgb3IgVjRcIlxuXG5sZXQgZ2V0X3N5bWJvbHMgKCkgPVxuICBtYXRjaCBnZXRfc3ludGF4X3ZlcnNpb24gKCkgd2l0aFxuICB8IEFzdC5WMyAtPiBTeW1ib2xfdGFibGUuc3ltYm9sX3RhYmxlX1YzXG4gIHwgQXN0LlY0IC0+IFN5bWJvbF90YWJsZS5zeW1ib2xfdGFibGVfVjRcblxubGV0IGdldF9pbmZsdWVuY2VfbWFwICgpID1cbiAge1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmltX2Zvcm1hdCA9XG4gICAgICBmZXRjaF9ncmFwaF9mb3JtYXQgQ29uZmlnLmluZmx1ZW5jZV9tYXBfZm9ybWF0O1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmltX2ZpbGUgPVxuICAgICAgKG1hdGNoICFDb25maWcuaW5mbHVlbmNlX21hcF9maWxlIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBOb25lXG4gICAgICB8IHggLT4gU29tZSB4KTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbV9kaXJlY3RvcnkgPVxuICAgICAgKG1hdGNoICFDb25maWcub3V0cHV0X2ltX2RpcmVjdG9yeSB3aXRoXG4gICAgICB8IFwiXCIgLT4gU29tZSBcIlwiXG4gICAgICB8IHggLT4gU29tZSAoeCBeIFwiL1wiKSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucnVsZV9zaGFwZSA9ICFDb25maWcucnVsZV9zaGFwZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ydWxlX2NvbG9yID0gIUNvbmZpZy5ydWxlX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZhcmlhYmxlX3NoYXBlID0gIUNvbmZpZy52YXJpYWJsZV9zaGFwZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52YXJpYWJsZV9jb2xvciA9ICFDb25maWcudmFyaWFibGVfY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcud2FrZV91cF9jb2xvciA9ICFDb25maWcud2FrZV91cF9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmhpYml0aW9uX2NvbG9yID0gIUNvbmZpZy5pbmhpYml0aW9uX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLndha2VfdXBfYXJyb3cgPSAhQ29uZmlnLndha2VfdXBfYXJyb3c7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5oaWJpdGlvbl9hcnJvdyA9ICFDb25maWcuaW5oaWJpdGlvbl9hcnJvdztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9tcHRfZnVsbF92YXJfZGVmID0gIUNvbmZpZy5wcm9tcHRfZnVsbF92YXJfZGVmO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByb21wdF9mdWxsX3J1bGVfZGVmID0gIUNvbmZpZy5wcm9tcHRfZnVsbF9ydWxlX2RlZjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYWtlX2xhYmVsc19jb21wYXRpYmxlID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChhLCBsKSAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5DaGFyTWFwLmFkZCBhIGwgbWFwKVxuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5DaGFyTWFwLmVtcHR5XG4gICAgICAgICFDb25maWcubWFrZV9sYWJlbHNfY29tcGF0aWJsZV93aXRoX2RvdDtcbiAgfVxuXG5sZXQgZ2V0X2NvbnRhY3RfbWFwICgpID1cbiAge1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNtX2Zvcm1hdCA9XG4gICAgICBmZXRjaF9ncmFwaF9mb3JtYXQgQ29uZmlnLmNvbnRhY3RfbWFwX2Zvcm1hdDtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jbV9maWxlID1cbiAgICAgIChtYXRjaCAhQ29uZmlnLmNvbnRhY3RfbWFwX2ZpbGUgd2l0aFxuICAgICAgfCBcIlwiIC0+IE5vbmVcbiAgICAgIHwgeCAtPiBTb21lIHgpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNtX2RpcmVjdG9yeSA9XG4gICAgICAobWF0Y2ggIUNvbmZpZy5vdXRwdXRfY21fZGlyZWN0b3J5IHdpdGhcbiAgICAgIHwgXCJcIiAtPiBTb21lIFwiXCJcbiAgICAgIHwgeCAtPiBTb21lICh4IF4gXCIvXCIpKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wdXJlX2NvbnRhY3QgPSAhQ29uZmlnLnB1cmVfY29udGFjdDtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iaW5kaW5nX3NpdGVfc2hhcGUgPSAhQ29uZmlnLmJpbmRpbmdfc2l0ZV9zaGFwZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iaW5kaW5nX3NpdGVfY29sb3IgPSAhQ29uZmlnLmJpbmRpbmdfc2l0ZV9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbnRlcm5hbF9zaXRlX3NoYXBlID0gIUNvbmZpZy5pbnRlcm5hbF9zaXRlX3NoYXBlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmludGVybmFsX3NpdGVfY29sb3IgPSAhQ29uZmlnLmludGVybmFsX3NpdGVfY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcl9zaXRlX3NoYXBlID0gIUNvbmZpZy5jb3VudGVyX3NpdGVfc2hhcGU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcl9zaXRlX2NvbG9yID0gIUNvbmZpZy5jb3VudGVyX3NpdGVfY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfc2hhcGVfYXJyYXkgPSAhQ29uZmlnLmFnZW50X3NoYXBlX2FycmF5O1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFnZW50X2NvbG9yX2FycmF5ID0gIUNvbmZpZy5hZ2VudF9jb2xvcl9hcnJheTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9zaGFwZV9kZWYgPSAhQ29uZmlnLmFnZW50X3NoYXBlX2RlZjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9jb2xvcl9kZWYgPSAhQ29uZmlnLmFnZW50X2NvbG9yX2RlZjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5saW5rX2NvbG9yID0gIUNvbmZpZy5saW5rX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluZmx1ZW5jZV9jb2xvciA9ICFDb25maWcuaW5mbHVlbmNlX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluZmx1ZW5jZV9hcnJvdyA9ICFDb25maWcuaW5mbHVlbmNlX2Fycm93O1xuICB9XG5cbmxldCByZWFjaGFiaWxpdHlfbWFwXzAgPVxuICB7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcmVzdWx0ID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfaXRlcmF0aW9uID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZGlmZiA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3dsID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfY292ZXJpbmdfY2xhc3NlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpYyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uID1cbiAgICAgIGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXB1dGVfbG9jYWxfdHJhY2VzID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3RyYWNlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmlnbm9yZV90cml2aWFsX2xvc2FuZ2VzID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc21hc2hfcmVsYXRpb25zID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlbF9mcm9tX2RlYWRfcnVsZXMgPVxuICAgICAgdHJ1ZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51c2VfbmF0dXJhbF9sYW5ndWFnZSA9IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthcHBhO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmZvcm1hdF9mb3JfbG9jYWxfdHJhY2VzID1cbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRPVDtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZV9wcmVmaXggPSBcIkFnZW50X3RyYWNlX1wiO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlX2RpcmVjdG9yeSA9XG4gICAgICAobWF0Y2ggIUNvbmZpZy5vdXRwdXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5IHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHggLT4geCBeIFwiL1wiKTtcbiAgfVxuXG5sZXQgcmVhY2hhYmlsaXR5X21hcF8xID1cbiAge1xuICAgIHJlYWNoYWJpbGl0eV9tYXBfMCB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcmVzdWx0ID0gdHJ1ZTtcbiAgfVxuXG5sZXQgcmVhY2hhYmlsaXR5X21hcF8yID1cbiAge1xuICAgIHJlYWNoYWJpbGl0eV9tYXBfMSB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfaXRlcmF0aW9uID0gdHJ1ZTtcbiAgfVxuXG5sZXQgcmVhY2hhYmlsaXR5X21hcF8zID1cbiAge1xuICAgIHJlYWNoYWJpbGl0eV9tYXBfMiB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZGlmZiA9IHRydWU7XG4gIH1cblxubGV0IHJlYWNoYWJpbGl0eV9tYXBfNCA9XG4gIHtcbiAgICByZWFjaGFiaWxpdHlfbWFwXzMgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3dsID0gdHJ1ZTtcbiAgfVxuXG5sZXQgYWRkX2RlYnVnZ2luZ19wYXJhbWV0ZXJzX3RvX3JlYWNoYWJpbGl0eV9tYXAgcmVhY2hhYmlsaXR5ID1cbiAgbGV0IHRyYWNlID0gIUNvbmZpZy50cmFjZSBpblxuICBsZXQgcmVhY2hhYmlsaXR5ID1cbiAgICB7XG4gICAgICByZWFjaGFiaWxpdHkgd2l0aFxuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlbF9mcm9tX2RlYWRfcnVsZXMgPVxuICAgICAgICAhQ29uZmlnLmhpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbiA9XG4gICAgICAgICFDb25maWcuaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbjtcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNtYXNoX3JlbGF0aW9ucyA9ICFDb25maWcuc21hc2hfcmVsYXRpb25zO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX25hdHVyYWxfbGFuZ3VhZ2UgPVxuICAgICAgICAobWF0Y2ggIUNvbmZpZy51c2VfbmF0dXJhbF9sYW5ndWFnZSB3aXRoXG4gICAgICAgIHwgXCJyYXdcIiB8IFwiUkFXXCIgfCBcIlJhd1wiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLlJhd1xuICAgICAgICB8IFwia2FwcGFcIiB8IFwiS0FQUEFcIiB8IFwiS2FwcGFcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYXBwYVxuICAgICAgICB8IFwiRW5nbGlzaFwiIHwgXCJFTkdMSVNIXCIgfCBcImVuZ2xpc2hcIiAtPlxuICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5hdHVyYWxfbGFuZ3VhZ2VcbiAgICAgICAgfCBfIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthcHBhKTtcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXB1dGVfbG9jYWxfdHJhY2VzID1cbiAgICAgICAgIUNvbmZpZy5jb21wdXRlX2xvY2FsX3RyYWNlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyA9XG4gICAgICAgICFDb25maWcuY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaWdub3JlX3RyaXZpYWxfbG9zYW5nZXMgPVxuICAgICAgICAhQ29uZmlnLmRvX25vdF9jb21wcmVzc190cml2aWFsX2xvc2FuZ2VzO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzID1cbiAgICAgICAgIUNvbmZpZy5hZGRfc2luZ3VsYXJfbWFjcm9zdGF0ZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXMgPVxuICAgICAgICAhQ29uZmlnLmFkZF9zaW5ndWxhcl9taWNyb3N0YXRlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXMgPVxuICAgICAgICAhQ29uZmlnLnNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXMgPVxuICAgICAgICAhQ29uZmlnLnVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmZvcm1hdF9mb3JfbG9jYWxfdHJhY2VzID1cbiAgICAgICAgZmV0Y2hfZ3JhcGhfZm9ybWF0IENvbmZpZy5sb2NhbF90cmFjZV9mb3JtYXQ7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZV9wcmVmaXggPSAhQ29uZmlnLmxvY2FsX3RyYWNlX3ByZWZpeDtcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlX2RpcmVjdG9yeSA9XG4gICAgICAgIChtYXRjaCAhQ29uZmlnLm91dHB1dF9sb2NhbF90cmFjZV9kaXJlY3Rvcnkgd2l0aFxuICAgICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgICB8IHggLT4geCBeIFwiL1wiKTtcbiAgICB9XG4gIGluXG4gIGlmIHRyYWNlIHRoZW5cbiAgICB7XG4gICAgICByZWFjaGFiaWxpdHkgd2l0aFxuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfY292ZXJpbmdfY2xhc3NlcyA9XG4gICAgICAgICFDb25maWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfY292ZXJpbmdfY2xhc3NlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpYyA9XG4gICAgICAgICFDb25maWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfc3RhdGljO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluYW1pYyA9XG4gICAgICAgICFDb25maWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluYW1pYztcbiAgICB9XG4gIGVsc2VcbiAgICByZWFjaGFiaWxpdHlcblxubGV0IGdldF9yZWFjaGFiaWxpdHlfbWFwICgpID1cbiAgYWRkX2RlYnVnZ2luZ19wYXJhbWV0ZXJzX3RvX3JlYWNoYWJpbGl0eV9tYXBcbiAgICAobWF0Y2hcbiAgICAgICBmZXRjaF92ZXJib3NpdHlfbGV2ZWwgQ29uZmlnLnZlcmJvc2l0eV9sZXZlbF9mb3JfcmVhY2hhYmlsaXR5X2FuYWx5c2lzXG4gICAgIHdpdGhcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vbmUgLT4gcmVhY2hhYmlsaXR5X21hcF8wXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Mb3cgLT4gcmVhY2hhYmlsaXR5X21hcF8xXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5NZWRpdW0gLT4gcmVhY2hhYmlsaXR5X21hcF8yXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5IaWdoIC0+IHJlYWNoYWJpbGl0eV9tYXBfM1xuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRnVsbCAtPiByZWFjaGFiaWxpdHlfbWFwXzQpXG5cbmxldCBnZXRfcmVhY2hhYmlsaXR5X3BhcmFtZXRlcnMgKCkgPVxuICB7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmlld3MgPSAhQ29uZmlnLndpdGhfdmlld3NfYW5hbHlzaXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2l0ZV9hY3Jvc3NfYm9uZHMgPVxuICAgICAgIUNvbmZpZy53aXRoX3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFsbGVsX2JvbmRzID1cbiAgICAgICFDb25maWcud2l0aF9wYXJhbGxlbF9ib25kc19hbmFseXNpcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb3VudGVycyA9ICFDb25maWcud2l0aF9jb3VudGVyc19hbmFseXNpcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5keW5hbWljX2NvbnRhY3RfbWFwID1cbiAgICAgIChtYXRjaCBUb29scy5sb3dlcmNhc2UgIUNvbmZpZy53aXRoX2R5bmFtaWNfY29udGFjdF9tYXAgd2l0aFxuICAgICAgfCBcImR5bmFtaWNcIiAtPiB0cnVlXG4gICAgICB8IFwic3RhdGljXCIgLT4gZmFsc2VcbiAgICAgIHwgXyAtPiB0cnVlKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb3VudGVyX2RvbWFpbiA9XG4gICAgICAobWF0Y2ggVG9vbHMubG93ZXJjYXNlICFDb25maWcuY291bnRlcl9hbmFseXNpc19kb21haW4gd2l0aFxuICAgICAgfCBcIm1pXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTWlcbiAgICAgIHwgXCJvY3RhZ29uXCIgfCBcIm9jdFwiIHwgXCJvY3RvXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuT2N0YWdvbnNcbiAgICAgIHwgXCJhYnN0cmFjdC1tdWx0aXNldFwiIHwgXCJhbVwiIHwgXCJhYnN0cmFjdF9tdWx0aXNldFwiIC0+XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkFic3RyYWN0X211bHRpc2V0XG4gICAgICB8IFwibm9uLXJlbGF0aW9uYWxcIiB8IFwibnJcIiB8IFwibm9uLXJlbFwiIHwgXCJub25fcmVsXCIgfCBcIm5vbl9yZWxhdGlvbmFsXCIgLT5cbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTm9uX3JlbGF0aW9uYWxcbiAgICAgIHwgXyAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5NaSk7XG4gIH1cblxubGV0IG9wZW5fdGFza3NfcHJvZmlsaW5nID1cbiAgbGV0IGNhY2hlID0gcmVmIE5vbmUgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggIWNhY2hlIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBjaGFubmVsID0gS2FwcGFfZmlsZXMub3Blbl90YXNrc19wcm9maWxpbmcgKCkgaW5cbiAgICAgIGxldCAoKSA9IGNhY2hlIDo9IFNvbWUgY2hhbm5lbCBpblxuICAgICAgY2hhbm5lbFxuICAgIHwgU29tZSBjaGFubmVsIC0+IGNoYW5uZWxcblxubGV0IGZldGNoX2JhY2tkb29ycyAoKSA9XG4gIHtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2Zfc2NjID0gIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2Zfc2NjO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2MgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9jb25zdHJhaW50cyA9XG4gICAgICAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9jb25zdHJhaW50cztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyA9XG4gICAgICAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9ydWxlcyA9XG4gICAgICAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ydWxlcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZ1xuICAgIC5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfdGltaW5nID0gIUNvbmZpZy5iYWNrZG9vcl90aW1pbmc7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfZmlsZSA9ICFDb25maWcuYmFja2Rvb3JfZmlsZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9kaXJlY3RvcnkgPSAhQ29uZmlnLmJhY2tkb29yX2RpcmVjdG9yeTtcbiAgfVxuXG5sZXQgZ2V0X3BhcmFtZXRlcnMgPyhodG1sX21vZGUgPSB0cnVlKSB+Y2FsbGVkX2Zyb20gKCkgPVxuICBsZXQgY2hhbm5lbCwgY2hhbm5lbF9lcnIsIGNoYW5uZWxfYmFja2Rvb3IsIGh0bWxfbW9kZSwgY29tbWFuZCA9XG4gICAgbWF0Y2ggY2FsbGVkX2Zyb20gd2l0aFxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuU2VydmVyIC0+XG4gICAgICBOb25lLCBOb25lLCBOb25lLCBmYWxzZSB8fCBodG1sX21vZGUsIFt8IFwiS2FTYVwiOyBcIihJbnRlcnJhY3RpdmUgbW9kZSlcIiB8XVxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSW50ZXJuYWxpc2VkIC0+XG4gICAgICAoIFNvbWUgc3Rkb3V0LFxuICAgICAgICBTb21lIEZvcm1hdC5lcnJfZm9ybWF0dGVyLFxuICAgICAgICBTb21lIHN0ZG91dCxcbiAgICAgICAgZmFsc2UgfHwgaHRtbF9tb2RlLFxuICAgICAgICBTeXMuYXJndiApXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNpbSAtPlxuICAgICAgU29tZSAob3Blbl90YXNrc19wcm9maWxpbmcgKCkpLCBOb25lLCBOb25lLCBmYWxzZSB8fCBodG1sX21vZGUsIFN5cy5hcmd2XG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNhIC0+XG4gICAgICAoIChtYXRjaFxuICAgICAgICAgICAhQ29uZmlnLm91dHB1dF9kaXJlY3RvcnksIFwicHJvZmlsaW5nXCIsIFwiLmh0bWxcIlxuICAgICAgICAgICAoKnRlbXBvcmFyeSwgdG8gZG86IHByb3ZpZGUgYSBwYXJhbWV0ZXJpc2FibGUgZmlsZW5hbWUqKVxuICAgICAgICAgd2l0aFxuICAgICAgICB8IF8sIFwiXCIsIF8gLT4gU29tZSBzdGRvdXRcbiAgICAgICAgfCBcIlwiLCBhLCBleHQgLT4gU29tZSAob3Blbl9vdXQgYSBleHQpXG4gICAgICAgIHwgYSwgYiwgZXh0IC0+IFNvbWUgKG9wZW5fb3V0IChhIF4gXCIvXCIgXiBiKSBleHQpKSxcbiAgICAgICAgU29tZSBGb3JtYXQuZXJyX2Zvcm1hdHRlcixcbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICggIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9zY2NcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2NcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnXG4gICAgICAgICAgICAgICAgIC5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9jb25zdHJhaW50c1xuICAgICAgICAgICAgIHx8ICFDb25maWcuYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl90aW1pbmdcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzLFxuICAgICAgICAgICAgICFDb25maWcuYmFja2Rvb3JfZGlyZWN0b3J5LFxuICAgICAgICAgICAgICFDb25maWcuYmFja2Rvb3JfZmlsZSxcbiAgICAgICAgICAgICBcIi50ZXhcIiApXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgZmFsc2UsIF8sIF8sIF8gLT4gTm9uZVxuICAgICAgICB8IF8sIF8sIFwiXCIsIF8gLT4gU29tZSBzdGRvdXRcbiAgICAgICAgfCBfLCBcIlwiLCBhLCBleHQgLT4gU29tZSAob3Blbl9hcHBlbmQgYSBleHQpXG4gICAgICAgIHwgXywgYSwgYiwgZXh0IC0+IFNvbWUgKG9wZW5fYXBwZW5kIChhIF4gXCIvXCIgXiBiKSBleHQpKSxcbiAgICAgICAgZmFsc2UgfHwgaHRtbF9tb2RlLFxuICAgICAgICBTeXMuYXJndiApXG4gIGluXG4gIHtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnMgPVxuICAgICAge1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zeW50YXhfdmVyc2lvbiA9IGdldF9zeW50YXhfdmVyc2lvbiAoKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fY29udGFjdF9tYXAgPSAhQ29uZmlnLmRvX2NvbnRhY3RfbWFwO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zY2MgPSAhQ29uZmlnLmRvX3NjYztcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9faW5mbHVlbmNlX21hcCA9ICFDb25maWcuZG9faW5mbHVlbmNlX21hcDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb24gPVxuICAgICAgICAgICFDb25maWcuZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb247XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdGlvbiA9XG4gICAgICAgICAgIUNvbmZpZy5kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb247XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3NpdGVfZGVwZW5kZW5jaWVzID1cbiAgICAgICAgICAhQ29uZmlnLmRvX3NpdGVfZGVwZW5kZW5jaWVzO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zeW1tZXRyaWVzX2FuYWx5c2lzID0gIUNvbmZpZy5kb19zeW1tZXRyaWVzO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yYXRlX2NvbnZlbnRpb24gPVxuICAgICAgICAgIGZldGNoX3JhdGVfY29udmVudGlvbiBDb25maWcucmF0ZV9jb252ZW50aW9uO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3NpdGVfZGVwZW5kZW5jaWVzID1cbiAgICAgICAgICAhQ29uZmlnLmR1bXBfc2l0ZV9kZXBlbmRlbmNpZXM7XG4gICAgICAgICgqZGlmZmVyZW50IHJlYWNoYWJpbGl0eSBvdXRwdXQqKVxuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXMgPVxuICAgICAgICAgICFDb25maWcuZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzO1xuICAgICAgICAoKkdFVCBTWU1CT0xTKilcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZmlsZSA9ICFDb25maWcuZmlsZTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc3ltYm9scyA9IGdldF9zeW1ib2xzICgpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfbWFwX291dHB1dCA9IGdldF9pbmZsdWVuY2VfbWFwICgpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb250YWN0X21hcF9vdXRwdXQgPSBnZXRfY29udGFjdF9tYXAgKCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0ID1cbiAgICAgICAgICBnZXRfcmVhY2hhYmlsaXR5X21hcCAoKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnMgPVxuICAgICAgICAgIGdldF9yZWFjaGFiaWxpdHlfcGFyYW1ldGVycyAoKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudW5zYWZlID0gIUNvbmZpZy51bnNhZmU7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlID0gIUNvbmZpZy50cmFjZTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjdXIgPVxuICAgICAgICAgICFDb25maWcuZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjdXI7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByZWZpeCA9IFwiXCI7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNhbGxfc3RhY2sgPSBbXTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubGlua19tb2RlID0gIUNvbmZpZy5saW5rX21vZGU7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmthc2Ffc3RhdGUgPVxuICAgICAgICAgIFJlbWFuZW50X3N0YXRlX3NpZ25hdHVyZS5lbXB0eV9lbmdpbmVfc3RhdGU7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxhdW5jaGluZ19kYXRlID1cbiAgICAgICAgICBVbml4LmxvY2FsdGltZSAoVW5peC5nZXR0aW1lb2ZkYXkgKCkpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50aW1lX3NoaWZ0ID1cbiAgICAgICAgICAobGV0IHggPSBVbml4LmdldHRpbWVvZmRheSAoKSBpblxuICAgICAgICAgICAoVW5peC5sb2NhbHRpbWUgeCkuVW5peC50bV9ob3VyIC0gKFVuaXguZ210aW1lIHgpLlVuaXgudG1faG91cik7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhvc3RuYW1lID1cbiAgICAgICAgICAodHJ5IFVuaXguZ2V0aG9zdG5hbWUgKCkgd2l0aCBfIC0+IFwiamF2YXNjcmlwdFwiKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tbWFuZF9saW5lID0gY29tbWFuZDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2hvcnRfdmVyc2lvbiA9IFZlcnNpb24udmVyc2lvbl9zdHJpbmc7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZlcnNpb24gPSBWZXJzaW9uLnZlcnNpb25fa2FzYV9mdWxsX25hbWU7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRrX2ludGVyZmFjZSA9ICFWZXJzaW9uLnRrX2lzX2luaXRpYWxpemVkO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsID1cbiAgICAgICAgICAobWF0Y2ggVG9vbHMubG93ZXJjYXNlICFDb25maWcuaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCB3aXRoXG4gICAgICAgICAgfCBcImluZGlyZWN0XCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTG93XG4gICAgICAgICAgfCBcImRpcmVjdFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk1lZGl1bVxuICAgICAgICAgIHwgXCJyZWFsaXNhYmxlXCIgfCBcInJlYWxpemFibGVcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5IaWdoXG4gICAgICAgICAgfCBfIC0+IGZldGNoX2FjY3VyYWN5X2xldmVsIENvbmZpZy5pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwgPVxuICAgICAgICAgIGZldGNoX2FjY3VyYWN5X2xldmVsIENvbmZpZy5jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2NjX2FjY3VyYWN5X2xldmVsID1cbiAgICAgICAgICBmZXRjaF9hY2N1cmFjeV9sZXZlbCBDb25maWcuc2NjX2FjY3VyYWN5X2xldmVsO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52aWV3X2FjY3VyYWN5X2xldmVsID1cbiAgICAgICAgICBmZXRjaF9hY2N1cmFjeV9sZXZlbCBDb25maWcudmlld19hY2N1cmFjeV9sZXZlbDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY2FsbGVkX2Zyb207XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmh0bWxfbW9kZTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZW1wdHlfaGFzaHRibF9zaXplID0gMTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JzID0gZmV0Y2hfYmFja2Rvb3JzICgpO1xuICAgICAgfTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2Vycm9yX2xpc3QgPSAoZnVuIF8gLT4gKCkpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfcHJvZ3Jlc3NfYmFyID0gKGZ1biBfIC0+ICgpKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9wcm9ncmVzc19iYXIgPSAoZnVuIF8gLT4gKCkpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfY3VycmVudF9waGFzZV90aXRsZSA9IChmdW4gXyAtPiAoKSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVzZXRfY3VycmVudF9waGFzZV90aXRsZSA9IChmdW4gXyAtPiAoKSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubG9nZ2VyID1cbiAgICAgIChtYXRjaCBjaGFubmVsIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXJcbiAgICAgIHwgU29tZSBfIC0+IExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXIgIUNvbmZpZy5mb3JtYXR0ZXIpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlcl9lcnIgPVxuICAgICAgKG1hdGNoIGNoYW5uZWxfZXJyIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXJcbiAgICAgIHwgU29tZSBmbXQgLT4gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciBmbXQpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlcl9iYWNrZG9vciA9XG4gICAgICAobWF0Y2ggY2hhbm5lbF9iYWNrZG9vciB3aXRoXG4gICAgICB8IE5vbmUgLT4gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyXG4gICAgICB8IFNvbWUgY2hhbm5lbCAtPiBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fY2hhbm5lbCBjaGFubmVsKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wcmVzc2lvbl9zdGF0dXMgPSBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXI7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJpbnRfZWZmaWNpZW5jeSA9ICFDb25maWcucHJpbnRfZWZmaWNpZW5jeTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9maWxlciA9XG4gICAgICAobWF0Y2ggY2hhbm5lbCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyXG4gICAgICB8IFNvbWUgYSAtPiBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fY2hhbm5lbCB+bW9kZTpMb2dnZXJzLkhUTUxfVGFidWxhciBhKTtcbiAgfVxuXG5sZXQgZHVtbXlfcGFyYW1ldGVycyB+Y2FsbGVkX2Zyb20gPVxuICBsZXQgY2FjaGUgPSByZWYgTm9uZSBpblxuICBmdW4gKCkgLT5cbiAgICBtYXRjaCAhY2FjaGUgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IHAgPSBnZXRfcGFyYW1ldGVycyB+Y2FsbGVkX2Zyb20gKCkgaW5cbiAgICAgIGxldCAoKSA9IGNhY2hlIDo9IFNvbWUgcCBpblxuICAgICAgcFxuICAgIHwgU29tZSBwIC0+IHBcblxubGV0IGdldF9ib3VuZF9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmJvdW5kXG5sZXQgZ2V0X29wZW5fYmluZGluZ19zdGF0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9iaW5kaW5nX3N0YXRlXG5sZXQgZ2V0X2Nsb3NlX2JpbmRpbmdfc3RhdGVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2JpbmRpbmdfc3RhdGVcblxubGV0IGdldF9taXNzaW5nX2JpbmRpbmdfc3RhdGVfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLm1pc3NpbmdfYmluZGluZ19zdGF0ZVxuXG5sZXQgZ2V0X2xpbmtfdG9fYW55XzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5saW5rX3RvX2FueVxubGV0IGdldF9saW5rX3RvX3NvbWVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmxpbmtfdG9fc29tZVxuXG5sZXQgZ2V0X2ludGVybmFsX3N0YXRlX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuaW50ZXJuYWxfc3RhdGVfc3ltYm9sXG5cbmxldCBnZXRfb3Blbl9pbnRlcm5hbF9zdGF0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9pbnRlcm5hbF9zdGF0ZVxubGV0IGdldF9jbG9zZV9pbnRlcm5hbF9zdGF0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfaW50ZXJuYWxfc3RhdGVcbmxldCBnZXRfZnJlZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuZnJlZVxubGV0IGdldF9hdF9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmF0XG5sZXQgZ2V0X2FnZW50X29wZW5fc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5hZ2VudF9vcGVuXG5sZXQgZ2V0X2FnZW50X2Nsb3NlX3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuYWdlbnRfY2xvc2VcblxubGV0IGdldF9hZ2VudF9zZXBfY29tbWFfc3ltYm9sXzEgc3ltYm9sID1cbiAgZnN0IHN5bWJvbC5TeW1ib2xfdGFibGUuYWdlbnRfc2VwX2NvbW1hXG5cbmxldCBnZXRfYWdlbnRfc2VwX3BsdXNfc3ltYm9sXzEgc3ltYm9sID0gZnN0IHN5bWJvbC5TeW1ib2xfdGFibGUuYWdlbnRfc2VwX3BsdXNcbmxldCBnZXRfYWdlbnRfc2VwX2RvdF9zeW1ib2xfMSBzeW1ib2wgPSBmc3Qgc3ltYm9sLlN5bWJvbF90YWJsZS5hZ2VudF9zZXBfZG90XG5sZXQgZ2V0X2J0eXBlX3NlcF9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmJ0eXBlX3NlcFxubGV0IGdldF9zaXRlX3NlcF9jb21tYV9zeW1ib2xfMSBzeW1ib2wgPSBmc3Qgc3ltYm9sLlN5bWJvbF90YWJsZS5zaXRlX3NlcFxubGV0IGdldF9naG9zdF9hZ2VudF9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmdob3N0X2FnZW50XG5sZXQgZ2V0X2RvX3dlX3Nob3dfZ2hvc3RfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLnNob3dfZ2hvc3RcbmxldCBnZXRfdW5pX2Fycm93X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUudW5pX2Fycm93XG5sZXQgZ2V0X3Jldl9hcnJvd19zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLnJldl9hcnJvd1xubGV0IGdldF9iaV9hcnJvd19zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmJpX2Fycm93XG5sZXQgZ2V0X2JpX2Fycm93X25vX3BvbHlfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5iaV9hcnJvd19ub3BvbHlcbmxldCBnZXRfdW5pX2Fycm93X25vX3BvbHlfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS51bmlfYXJyb3dfbm9wb2x5XG5sZXQgZ2V0X3Jldl9hcnJvd19ub19wb2x5X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUucmV2X2Fycm93X25vcG9seVxuXG5sZXQgZ2V0X29wZW5faW50X2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5faW50X2ludGVydmFsX2luY2x1c2l2ZVxuXG5sZXQgZ2V0X29wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2ZVxuXG5sZXQgZ2V0X29wZW5faW50X2ludGVydmFsX2luZmluaXR5X3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHlcblxubGV0IGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2l2ZVxuXG5sZXQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlXG5cbmxldCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5X3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5XG5cbmxldCBnZXRfcGx1c19pbmZpbml0eV9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLnBsdXNfaW5maW5pdHlcbmxldCBnZXRfbWludXNfaW5maW5pdHlfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5taW51c19pbmZpbml0eVxuXG5sZXQgZ2V0X2ludF9pbnRlcnZhbF9zZXBhcmF0b3Jfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5pbnRfaW50ZXJ2YWxfc2VwYXJhdG9yXG5cbmxldCBnZXRfb3Blbl9jb3VudGVyX3N0YXRlXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2NvdW50ZXJfc3RhdGVcbmxldCBnZXRfb3Blbl9jb3VudGVyY2VxXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2NvdW50ZXJjZXFcbmxldCBnZXRfb3Blbl9jb3VudGVyY3Zhcl8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9jb3VudGVyY3ZhclxubGV0IGdldF9vcGVuX2NvdW50ZXJjZ3RlXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2NvdW50ZXJjZ3RlXG5sZXQgZ2V0X29wZW5fY291bnRlcmRlbHRhXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2NvdW50ZXJkZWx0YVxubGV0IGdldF9vcGVuX2NvdW50ZXJ2YWxfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5fY291bnRlcnZhbFxubGV0IGdldF9jbG9zZV9jb3VudGVyX3N0YXRlXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVyX3N0YXRlXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJjZXFfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2NvdW50ZXJjZXFcbmxldCBnZXRfY2xvc2VfY291bnRlcmN2YXJfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2NvdW50ZXJjdmFyXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJjZ3RlXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVyY2d0ZVxubGV0IGdldF9jbG9zZV9jb3VudGVyZGVsdGFfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2NvdW50ZXJkZWx0YVxubGV0IGdldF9jbG9zZV9jb3VudGVydmFsXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVydmFsXG5sZXQgZ2V0X2NvdW50ZXJjZXFfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jb3VudGVyY2VxX3N5bWJvbFxubGV0IGdldF9jb3VudGVyY3Zhcl9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNvdW50ZXJjdmFyX3N5bWJvbFxubGV0IGdldF9jb3VudGVyY2d0ZV9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNvdW50ZXJjZ3RlX3N5bWJvbFxuXG5sZXQgZ2V0X2NvdW50ZXJkZWx0YXBsdXNfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5jb3VudGVyZGVsdGFwbHVzX3N5bWJvbFxuXG5sZXQgZ2V0X2NvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuY291bnRlcmRlbHRhbWludXNfc3ltYm9sXG5cbmxldCBnZXRfY291bnRlcnZhbF9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNvdW50ZXJ2YWxfc3ltYm9sXG5cbigqSW5mbHVlbmNlKilcbmxldCBnZXRfaW1fZm9ybWF0XzEgaW5mbHVlbmNlID0gaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmltX2Zvcm1hdFxubGV0IGdldF9pbV9maWxlXzEgaW5mbHVlbmNlID0gaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmltX2ZpbGVcblxubGV0IGdldF9pbV9kaXJlY3RvcnlfMSBpbmZsdWVuY2UgPVxuICBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW1fZGlyZWN0b3J5XG5cbmxldCBnZXRfcnVsZV9zaGFwZV8xIGluZmx1ZW5jZSA9IGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ydWxlX3NoYXBlXG5sZXQgZ2V0X3J1bGVfY29sb3JfMSBpbmZsdWVuY2UgPSBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucnVsZV9jb2xvclxuXG5sZXQgZ2V0X3ZhcmlhYmxlX3NoYXBlXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZhcmlhYmxlX3NoYXBlXG5cbmxldCBnZXRfdmFyaWFibGVfY29sb3JfMSBpbmZsdWVuY2UgPVxuICBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmFyaWFibGVfY29sb3JcblxubGV0IGdldF93YWtlX3VwX2NvbG9yXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLndha2VfdXBfY29sb3JcblxubGV0IGdldF9pbmhpYml0aW9uX2NvbG9yXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluaGliaXRpb25fY29sb3JcblxubGV0IGdldF93YWtlX3VwX2Fycm93XzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLndha2VfdXBfYXJyb3dcblxubGV0IGdldF9pbmhpYml0aW9uX2Fycm93XzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluaGliaXRpb25fYXJyb3dcblxubGV0IGdldF9wcm9tcHRfZnVsbF92YXJfZGVmXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByb21wdF9mdWxsX3Zhcl9kZWZcblxubGV0IGdldF9wcm9tcHRfZnVsbF9ydWxlX2RlZl8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9tcHRfZnVsbF9ydWxlX2RlZlxuXG5sZXQgZ2V0X21ha2VfbGFiZWxzX2NvbXBhdGlibGVfMSBpbmZsdWVuY2UgPVxuICBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFrZV9sYWJlbHNfY29tcGF0aWJsZVxuXG5sZXQgZ2V0X3B1cmVfY29udGFjdF8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHVyZV9jb250YWN0XG5sZXQgZ2V0X2NtX2Zvcm1hdF8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY21fZm9ybWF0XG5sZXQgZ2V0X2NtX2ZpbGVfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNtX2ZpbGVcbmxldCBnZXRfY21fZGlyZWN0b3J5XzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jbV9kaXJlY3RvcnlcbmxldCBnZXRfYmluZGluZ19zaXRlX3NoYXBlXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iaW5kaW5nX3NpdGVfc2hhcGVcbmxldCBnZXRfYmluZGluZ19zaXRlX2NvbG9yXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iaW5kaW5nX3NpdGVfY29sb3JcblxubGV0IGdldF9pbnRlcm5hbF9zaXRlX3NoYXBlXzEgY20gPVxuICBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbnRlcm5hbF9zaXRlX3NoYXBlXG5cbmxldCBnZXRfaW50ZXJuYWxfc2l0ZV9jb2xvcl8xIGNtID1cbiAgY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW50ZXJuYWxfc2l0ZV9jb2xvclxuXG5sZXQgZ2V0X2NvdW50ZXJfc2l0ZV9zaGFwZV8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcl9zaXRlX3NoYXBlXG5sZXQgZ2V0X2NvdW50ZXJfc2l0ZV9jb2xvcl8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcl9zaXRlX2NvbG9yXG5sZXQgZ2V0X2FnZW50X3NoYXBlX2FycmF5XzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9zaGFwZV9hcnJheVxubGV0IGdldF9hZ2VudF9jb2xvcl9hcnJheV8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfY29sb3JfYXJyYXlcbmxldCBnZXRfYWdlbnRfc2hhcGVfZGVmXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9zaGFwZV9kZWZcbmxldCBnZXRfYWdlbnRfY29sb3JfZGVmXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9jb2xvcl9kZWZcbmxldCBnZXRfbGlua19jb2xvcl8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubGlua19jb2xvclxubGV0IGdldF9pbmZsdWVuY2VfY29sb3JfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluZmx1ZW5jZV9jb2xvclxubGV0IGdldF9pbmZsdWVuY2VfYXJyb3dfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluZmx1ZW5jZV9hcnJvd1xuXG4oKmFkZCByZWFjaGFiaWxpdHkqKVxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdF8xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdFxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvbl8xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvblxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpY18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpY1xuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW5hbWljXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZGlmZl8xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmZcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bF8xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3dsXG5cbmxldCBnZXRfc21hc2hfcmVsYXRpb25zXzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc21hc2hfcmVsYXRpb25zXG5cbmxldCBnZXRfaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbl8xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb25cblxubGV0IGdldF9oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzXG5cbmxldCBnZXRfcG9zdF9wcm9jZXNzaW5nXzEgciA9XG4gIG1hdGNoIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX25hdHVyYWxfbGFuZ3VhZ2Ugd2l0aFxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLlJhdyAtPiBmYWxzZVxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthcHBhIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTmF0dXJhbF9sYW5ndWFnZSAtPlxuICAgIHRydWVcblxubGV0IGdldF9iYWNrZW5kX21vZGVfMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51c2VfbmF0dXJhbF9sYW5ndWFnZVxuXG5sZXQgZ2V0X2xvY2FsX3RyYWNlX2Zvcm1hdF8xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmZvcm1hdF9mb3JfbG9jYWxfdHJhY2VzXG5cbmxldCBnZXRfY29tcHV0ZV9sb2NhbF90cmFjZXNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX2xvY2FsX3RyYWNlc1xuXG5sZXQgZ2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9uc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9uc1xuXG5sZXQgc2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9uc18xIHIgYiA9XG4gIHsgciB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyA9IGIgfVxuXG5sZXQgc2V0X3VzZV9tYWNyb3RyYW5zaXRpb25faW5fbG9jYWxfdHJhY2VzXzEgciBiID1cbiAgeyByIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzID0gYiB9XG5cbmxldCBnZXRfaWdub3JlX3RyaXZpYWxfbG9zYW5nZXNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pZ25vcmVfdHJpdmlhbF9sb3Nhbmdlc1xuXG5sZXQgZ2V0X3Nob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzXG5cbmxldCBnZXRfdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzXG5cbmxldCBnZXRfYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzXG5cbmxldCBnZXRfYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzXG5cbmxldCBnZXRfbG9jYWxfdHJhY2VfcHJlZml4XzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudHJhY2VfcHJlZml4XG5sZXQgZ2V0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeV8xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlX2RpcmVjdG9yeVxubGV0IGdldF92aWV3X2FuYWx5c2lzXzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmlld3NcblxubGV0IGdldF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNpdGVfYWNyb3NzX2JvbmRzXG5cbmxldCBnZXRfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXNfMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbGxlbF9ib25kc1xubGV0IGdldF9keW5hbWljX2NvbnRhY3RfbWFwXzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHluYW1pY19jb250YWN0X21hcFxubGV0IGdldF9jb3VudGVyc19hbmFseXNpc18xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJzXG5sZXQgZ2V0X2NvdW50ZXJzX2RvbWFpbl8xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJfZG9tYWluXG5cbmxldCBnZXRfY29tcHV0ZV9zeW1tZXRyaWVzXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fc3ltbWV0cmllc19hbmFseXNpc1xuXG5sZXQgZ2V0X3JhdGVfY29udmVudGlvbl8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJhdGVfY29udmVudGlvblxuXG5sZXQgZ2V0X2VtcHR5X2hhc2h0Ymxfc2l6ZV8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmVtcHR5X2hhc2h0Ymxfc2l6ZVxuXG5sZXQgZ2V0X3N5bWJvbHNfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zeW1ib2xzXG5sZXQgZ2V0X2ZpbGVfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5maWxlXG5cbmxldCBnZXRfaW5mbHVlbmNlX21hcF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluZmx1ZW5jZV9tYXBfb3V0cHV0XG5cbmxldCBnZXRfY29udGFjdF9tYXBfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb250YWN0X21hcF9vdXRwdXRcblxuKCphZGQgcmVhY2hhYmlsaXR5KilcbmxldCBnZXRfcmVhY2hhYmlsaXR5X21hcF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0XG5cbmxldCBnZXRfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc1xuXG5sZXQgZ2V0X3Vuc2FmZV8xIG1hcnNoYWxpc2FibGUgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVuc2FmZVxubGV0IGdldF90cmFjZV8xIG1hcnNoYWxpc2FibGUgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlXG5cbmxldCBnZXRfZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjdXJfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX2Vycm9yX2FzX3Nvb25fYXNfdGhleV9vY2N1clxuXG5sZXQgZ2V0X3ByZWZpeF8xIG1hcnNoYWxpc2FibGUgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByZWZpeFxuXG5sZXQgZ2V0X2NhbGxfc3RhY2tfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jYWxsX3N0YWNrXG5cbmxldCBnZXRfbGlua19tb2RlXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubGlua19tb2RlXG5cbmxldCBnZXRfa2FzYV9zdGF0ZV8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmthc2Ffc3RhdGVcblxubGV0IGdldF9kb19jb250YWN0X21hcF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX2NvbnRhY3RfbWFwXG5cbmxldCBnZXRfc3ludGF4X3ZlcnNpb25fMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zeW50YXhfdmVyc2lvblxuXG5sZXQgZ2V0X2RvX3NjY18xIG1hcnNoYWxpc2FibGUgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3NjY1xuXG5sZXQgZ2V0X2RvX2luZmx1ZW5jZV9tYXBfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19pbmZsdWVuY2VfbWFwXG5cbmxldCBnZXRfZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb25fMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19PREVfZmxvd19vZl9pbmZvcm1hdGlvblxuXG5sZXQgZ2V0X2RvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdGlvbl8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdGlvblxuXG5sZXQgZ2V0X2RvX3NpdGVfZGVwZW5kZW5jaWVzXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fc2l0ZV9kZXBlbmRlbmNpZXNcblxubGV0IGdldF9kdW1wX3NpdGVfZGVwZW5kZW5jaWVzXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9zaXRlX2RlcGVuZGVuY2llc1xuXG4oKnJlYWNoYWJpbGl0eSBkaWZmZXJlbnQgb3V0cHV0KilcbmxldCBnZXRfZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzXG5cbigqKilcbmxldCBnZXRfaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWxcblxubGV0IGdldF9jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsXG5cbmxldCBnZXRfc2NjX2FjY3VyYWN5X2xldmVsXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2NjX2FjY3VyYWN5X2xldmVsXG5cbmxldCBnZXRfdmlld19hY2N1cmFjeV9sZXZlbF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZpZXdfYWNjdXJhY3lfbGV2ZWxcblxubGV0IGdldF9sYXVuY2hpbmdfZGF0ZV8xIG1hcnNoYWxpc2FibGUgPVxuICBsZXQgdCA9IG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubGF1bmNoaW5nX2RhdGUgaW5cbiAgbGV0IGdtdCA9IG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudGltZV9zaGlmdCBpblxuICBQcmludGYuc3ByaW50ZiBcIkFuYWx5c2lzIGxhdW5jaGVkIGF0ICUwNGkvJTAyaS8lMDJpICUwMmk6JTAyaTolMDJpIChHTVQlK2kpXCJcbiAgICAodC5Vbml4LnRtX3llYXIgKyAxOTAwKSAodC5Vbml4LnRtX21vbiArIDEpIHQuVW5peC50bV9tZGF5IHQuVW5peC50bV9ob3VyXG4gICAgdC5Vbml4LnRtX21pbiB0LlVuaXgudG1fc2VjIGdtdFxuXG5sZXQgZ2V0X3Nob3J0X3ZlcnNpb25fMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52ZXJzaW9uXG5cbmxldCBnZXRfZnVsbF92ZXJzaW9uXzEgbWFyc2hhbGlzYWJsZSA9XG4gIFByaW50Zi5zcHJpbnRmIFwiJXMgKHdpdGglcyBUayBpbnRlcmZhY2UpXCJcbiAgICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZlcnNpb25cbiAgICAoaWYgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50a19pbnRlcmZhY2UgdGhlblxuICAgICAgIFwiXCJcbiAgICAgZWxzZVxuICAgICAgIFwib3V0XCIpXG5cbmxldCBnZXRfbGF1bmNoZWRfd2hlcmVfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ob3N0bmFtZVxuXG5sZXQgZ2V0X2NvbW1hbmRfbGluZV8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbW1hbmRfbGluZVxuXG5sZXQgZ2V0X21hcnNoYWxpc2FibGUgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVyc1xuXG5sZXQgZ2V0X2xvZ2dlciBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubG9nZ2VyXG5sZXQgZ2V0X2xvZ2dlcl9lcnIgcGFyYW1ldGVyID0gcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlcl9lcnJcblxubGV0IGdldF9sb2dnZXJfYmFja2Rvb3IgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlcl9iYWNrZG9vclxuXG4oKmxldCBnZXRfZm9ybWF0dGVyIHBhcmFtZXRlciA9IHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5mb3JtYXR0ZXJcbiAgbGV0IHNldF9mb3JtYXR0ZXIgcGFyYW1ldGVyIGxvZ2dlciA9IHtwYXJhbWV0ZXIgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5mb3JtYXR0ZXIgPSBsb2dnZXJ9KilcblxubGV0IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGYgPSBjb21wb3NlIGYgZ2V0X21hcnNoYWxpc2FibGVcbmxldCBnZXRfY29tbWFuZF9saW5lID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2NvbW1hbmRfbGluZV8xXG5sZXQgZ2V0X3Nob3J0X3ZlcnNpb24gPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfc2hvcnRfdmVyc2lvbl8xXG5sZXQgZ2V0X2xhdW5jaGVkX3doZXJlID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2xhdW5jaGVkX3doZXJlXzFcbmxldCBnZXRfZnVsbF92ZXJzaW9uID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2Z1bGxfdmVyc2lvbl8xXG5sZXQgZ2V0X2xhdW5jaGluZ19kYXRlID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2xhdW5jaGluZ19kYXRlXzFcblxubGV0IGdldF9sYXVuY2hlZF93aGVuX2FuZF93aGVyZSBwYXJhbWV0ZXJzID1cbiAgUHJpbnRmLnNwcmludGYgXCIlcyBvbiAlc1wiXG4gICAgKGdldF9sYXVuY2hpbmdfZGF0ZSBwYXJhbWV0ZXJzKVxuICAgIChnZXRfbGF1bmNoZWRfd2hlcmUgcGFyYW1ldGVycylcblxubGV0IGdldF9kb19jb250YWN0X21hcCA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kb19jb250YWN0X21hcF8xXG5sZXQgZ2V0X3N5bnRheF92ZXJzaW9uID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3N5bnRheF92ZXJzaW9uXzFcbmxldCBnZXRfZG9fc2NjID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2RvX3NjY18xXG5sZXQgZ2V0X2RvX2luZmx1ZW5jZV9tYXAgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZG9faW5mbHVlbmNlX21hcF8xXG5cbmxldCBnZXRfZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb24gPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb25fMVxuXG5sZXQgZ2V0X2RvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdGlvbiA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb25fMVxuXG5sZXQgZ2V0X2RvX3NpdGVfZGVwZW5kZW5jaWVzID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2RvX3NpdGVfZGVwZW5kZW5jaWVzXzFcblxubGV0IGdldF9kdW1wX3NpdGVfZGVwZW5kZW5jaWVzID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2R1bXBfc2l0ZV9kZXBlbmRlbmNpZXNfMVxuKCpyZWFjaGFiaWxpdHkgYW5hbHlzaXMgaW4gZGlmZmVyZW50IG91dHB1dCopXG5cbigqKilcbmxldCBnZXRfc3ltYm9scyA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9zeW1ib2xzXzFcbmxldCBnZXRfZmlsZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9maWxlXzFcbmxldCBnZXRfY29tcHV0ZV9zeW1tZXRyaWVzID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2NvbXB1dGVfc3ltbWV0cmllc18xXG5sZXQgZ2V0X3JhdGVfY29udmVudGlvbiA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9yYXRlX2NvbnZlbnRpb25fMVxubGV0IGdldF9pbmZsdWVuY2VfbWFwID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2luZmx1ZW5jZV9tYXBfMVxubGV0IGdldF9jb250YWN0X21hcCA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9jb250YWN0X21hcF8xXG5cbigqYWRkIHJlYWNoYWJpbGl0eSopXG5sZXQgZ2V0X3JlYWNoYWJpbGl0eV9tYXAgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfcmVhY2hhYmlsaXR5X21hcF8xXG5cbmxldCBnZXRfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnMgPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNfMVxuXG5sZXQgZ2V0X3Vuc2FmZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF91bnNhZmVfMVxubGV0IGdldF90cmFjZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF90cmFjZV8xXG5cbmxldCBnZXRfZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjdXIgPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjdXJfMVxuXG5sZXQgZ2V0X3ByZWZpeCA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9wcmVmaXhfMVxubGV0IGdldF9jYWxsX3N0YWNrID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2NhbGxfc3RhY2tfMVxubGV0IGdldF9saW5rX21vZGUgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfbGlua19tb2RlXzFcblxubGV0IGdldF9jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbF8xXG5cbmxldCBnZXRfc2NjX2FjY3VyYWN5X2xldmVsID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3NjY19hY2N1cmFjeV9sZXZlbF8xXG5cbmxldCBnZXRfaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsXzFcblxubGV0IGdldF92aWV3X2FjY3VyYWN5X2xldmVsID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3ZpZXdfYWNjdXJhY3lfbGV2ZWxfMVxuXG5sZXQgZ2V0X2VtcHR5X2hhc2h0Ymxfc2l6ZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9lbXB0eV9oYXNodGJsX3NpemVfMVxubGV0IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGYgPSBjb21wb3NlIGYgZ2V0X2luZmx1ZW5jZV9tYXBcbmxldCB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZiA9IGNvbXBvc2UgZiBnZXRfY29udGFjdF9tYXBcbmxldCB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBmID0gY29tcG9zZSBmIGdldF9zeW1ib2xzXG5cbigqYWRkIHJlYWNoYWJpbGl0eSopXG5sZXQgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZiA9IGNvbXBvc2UgZiBnZXRfcmVhY2hhYmlsaXR5X21hcFxuXG5sZXQgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkIGYgPVxuICBjb21wb3NlIGYgZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzXG5cbigqc3ltYm9scyopXG5sZXQgZ2V0X2JvdW5kX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9ib3VuZF9zeW1ib2xfMVxubGV0IGdldF9vcGVuX2JpbmRpbmdfc3RhdGUgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9iaW5kaW5nX3N0YXRlXzFcblxubGV0IGdldF9jbG9zZV9iaW5kaW5nX3N0YXRlID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2JpbmRpbmdfc3RhdGVfMVxuXG5sZXQgZ2V0X21pc3NpbmdfYmluZGluZ19zdGF0ZSA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9taXNzaW5nX2JpbmRpbmdfc3RhdGVfMVxuXG5sZXQgZ2V0X2ludGVybmFsX3N0YXRlX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9pbnRlcm5hbF9zdGF0ZV9zeW1ib2xfMVxuXG5sZXQgZ2V0X29wZW5faW50ZXJuYWxfc3RhdGUgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9pbnRlcm5hbF9zdGF0ZV8xXG5cbmxldCBnZXRfY2xvc2VfaW50ZXJuYWxfc3RhdGUgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfaW50ZXJuYWxfc3RhdGVfMVxuXG5sZXQgZ2V0X2xpbmtfdG9fYW55ID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2xpbmtfdG9fYW55XzFcbmxldCBnZXRfbGlua190b19zb21lID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2xpbmtfdG9fc29tZV8xXG5sZXQgZ2V0X2ZyZWVfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2ZyZWVfMVxubGV0IGdldF9hdF9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYXRfc3ltYm9sXzFcbmxldCBnZXRfYWdlbnRfb3Blbl9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYWdlbnRfb3Blbl9zeW1ib2xfMVxubGV0IGdldF9hZ2VudF9jbG9zZV9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYWdlbnRfY2xvc2Vfc3ltYm9sXzFcblxubGV0IGdldF9hZ2VudF9zZXBfY29tbWFfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2FnZW50X3NlcF9jb21tYV9zeW1ib2xfMVxuXG5sZXQgZ2V0X2FnZW50X3NlcF9wbHVzX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9hZ2VudF9zZXBfcGx1c19zeW1ib2xfMVxuXG5sZXQgZ2V0X2FnZW50X3NlcF9kb3Rfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2FnZW50X3NlcF9kb3Rfc3ltYm9sXzFcblxubGV0IGdldF9idHlwZV9zZXBfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2J0eXBlX3NlcF9zeW1ib2xfMVxuXG5sZXQgZ2V0X3NpdGVfc2VwX2NvbW1hX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9zaXRlX3NlcF9jb21tYV9zeW1ib2xfMVxuXG5sZXQgZ2V0X2dob3N0X2FnZW50X3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9naG9zdF9hZ2VudF9zeW1ib2xfMVxubGV0IGdldF9kb193ZV9zaG93X2dob3N0ID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2RvX3dlX3Nob3dfZ2hvc3RfMVxubGV0IGdldF91bmlfYXJyb3dfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X3VuaV9hcnJvd19zeW1ib2xfMVxubGV0IGdldF9yZXZfYXJyb3dfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X3Jldl9hcnJvd19zeW1ib2xfMVxubGV0IGdldF9iaV9hcnJvd19zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYmlfYXJyb3dfc3ltYm9sXzFcblxubGV0IGdldF9iaV9hcnJvd19ub19wb2x5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9iaV9hcnJvd19ub19wb2x5X3N5bWJvbF8xXG5cbmxldCBnZXRfcmV2X2Fycm93X25vX3BvbHlfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X3Jldl9hcnJvd19ub19wb2x5X3N5bWJvbF8xXG5cbmxldCBnZXRfdW5pX2Fycm93X25vX3BvbHlfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X3VuaV9hcnJvd19ub19wb2x5X3N5bWJvbF8xXG5cbmxldCBnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sXzFcblxubGV0IGdldF9vcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2xfMVxuXG5sZXQgZ2V0X29wZW5faW50X2ludGVydmFsX2luZmluaXR5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eV9zeW1ib2xfMVxuXG5sZXQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sXzFcblxubGV0IGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbF8xXG5cbmxldCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5maW5pdHlfc3ltYm9sXzFcblxubGV0IGdldF9wbHVzX2luZmluaXR5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9wbHVzX2luZmluaXR5X3N5bWJvbF8xXG5cbmxldCBnZXRfbWludXNfaW5maW5pdHlfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X21pbnVzX2luZmluaXR5X3N5bWJvbF8xXG5cbmxldCBnZXRfaW50X2ludGVydmFsX3NlcGFyYXRvcl9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfaW50X2ludGVydmFsX3NlcGFyYXRvcl9zeW1ib2xfMVxuXG5sZXQgZ2V0X29wZW5fY291bnRlcl9zdGF0ZSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2NvdW50ZXJfc3RhdGVfMVxubGV0IGdldF9vcGVuX2NvdW50ZXJjZXEgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVyY2VxXzFcbmxldCBnZXRfb3Blbl9jb3VudGVyY2d0ZSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2NvdW50ZXJjZ3RlXzFcbmxldCBnZXRfb3Blbl9jb3VudGVyY3ZhciA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2NvdW50ZXJjdmFyXzFcbmxldCBnZXRfb3Blbl9jb3VudGVyZGVsdGEgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVyZGVsdGFfMVxubGV0IGdldF9vcGVuX2NvdW50ZXJ2YWwgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVydmFsXzFcblxubGV0IGdldF9jbG9zZV9jb3VudGVyX3N0YXRlID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2NvdW50ZXJfc3RhdGVfMVxuXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJjZXEgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfY291bnRlcmNlcV8xXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJjZ3RlID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2NvdW50ZXJjZ3RlXzFcbmxldCBnZXRfY2xvc2VfY291bnRlcmN2YXIgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfY291bnRlcmN2YXJfMVxubGV0IGdldF9jbG9zZV9jb3VudGVyZGVsdGEgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfY291bnRlcmRlbHRhXzFcbmxldCBnZXRfY2xvc2VfY291bnRlcnZhbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9jb3VudGVydmFsXzFcbmxldCBnZXRfY291bnRlcmNlcV9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY291bnRlcmNlcV9zeW1ib2xfMVxubGV0IGdldF9jb3VudGVyY2d0ZV9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY291bnRlcmNndGVfc3ltYm9sXzFcbmxldCBnZXRfY291bnRlcmN2YXJfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2NvdW50ZXJjdmFyX3N5bWJvbF8xXG5cbmxldCBnZXRfY291bnRlcmRlbHRhcGx1c19zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY291bnRlcmRlbHRhcGx1c19zeW1ib2xfMVxuXG5sZXQgZ2V0X2NvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jb3VudGVyZGVsdGFtaW51c19zeW1ib2xfMVxuXG5sZXQgZ2V0X2NvdW50ZXJ2YWxfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2NvdW50ZXJ2YWxfc3ltYm9sXzFcbmxldCBnZXRfaW1fZm9ybWF0ID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X2ltX2Zvcm1hdF8xXG5sZXQgZ2V0X2ltX2ZpbGUgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfaW1fZmlsZV8xXG5sZXQgZ2V0X2ltX2RpcmVjdG9yeSA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9pbV9kaXJlY3RvcnlfMVxubGV0IGdldF9ydWxlX3NoYXBlID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3J1bGVfc2hhcGVfMVxubGV0IGdldF9ydWxlX2NvbG9yID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3J1bGVfY29sb3JfMVxubGV0IGdldF92YXJpYWJsZV9zaGFwZSA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF92YXJpYWJsZV9zaGFwZV8xXG5sZXQgZ2V0X3ZhcmlhYmxlX2NvbG9yID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3ZhcmlhYmxlX2NvbG9yXzFcbmxldCBnZXRfd2FrZV91cF9jb2xvciA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF93YWtlX3VwX2NvbG9yXzFcblxubGV0IGdldF9pbmhpYml0aW9uX2NvbG9yID1cbiAgdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X2luaGliaXRpb25fY29sb3JfMVxuXG5sZXQgZ2V0X3dha2VfdXBfYXJyb3cgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfd2FrZV91cF9hcnJvd18xXG5cbmxldCBnZXRfaW5oaWJpdGlvbl9hcnJvdyA9XG4gIHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9pbmhpYml0aW9uX2Fycm93XzFcblxubGV0IGdldF9wcm9tcHRfZnVsbF92YXJfZGVmID1cbiAgdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3Byb21wdF9mdWxsX3Zhcl9kZWZfMVxuXG5sZXQgZ2V0X3Byb21wdF9mdWxsX3J1bGVfZGVmID1cbiAgdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3Byb21wdF9mdWxsX3J1bGVfZGVmXzFcblxubGV0IGdldF9tYWtlX2xhYmVsc19jb21wYXRpYmxlX3dpdGhfZG90ID1cbiAgdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X21ha2VfbGFiZWxzX2NvbXBhdGlibGVfMVxuXG5sZXQgZ2V0X3B1cmVfY29udGFjdCA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfcHVyZV9jb250YWN0XzFcbmxldCBnZXRfY21fZm9ybWF0ID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9jbV9mb3JtYXRfMVxubGV0IGdldF9jbV9maWxlID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9jbV9maWxlXzFcbmxldCBnZXRfY21fZGlyZWN0b3J5ID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9jbV9kaXJlY3RvcnlfMVxuXG5sZXQgZ2V0X2JpbmRpbmdfc2l0ZV9zaGFwZSA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfYmluZGluZ19zaXRlX3NoYXBlXzFcblxubGV0IGdldF9iaW5kaW5nX3NpdGVfY29sb3IgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2JpbmRpbmdfc2l0ZV9jb2xvcl8xXG5cbmxldCBnZXRfaW50ZXJuYWxfc2l0ZV9zaGFwZSA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfaW50ZXJuYWxfc2l0ZV9zaGFwZV8xXG5cbmxldCBnZXRfaW50ZXJuYWxfc2l0ZV9jb2xvciA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfaW50ZXJuYWxfc2l0ZV9jb2xvcl8xXG5cbmxldCBnZXRfY291bnRlcl9zaXRlX3NoYXBlID1cbiAgdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9jb3VudGVyX3NpdGVfc2hhcGVfMVxuXG5sZXQgZ2V0X2NvdW50ZXJfc2l0ZV9jb2xvciA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfY291bnRlcl9zaXRlX2NvbG9yXzFcblxubGV0IGdldF9hZ2VudF9zaGFwZV9hcnJheSA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfYWdlbnRfc2hhcGVfYXJyYXlfMVxuXG5sZXQgZ2V0X2FnZW50X2NvbG9yX2FycmF5ID1cbiAgdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9hZ2VudF9jb2xvcl9hcnJheV8xXG5cbmxldCBnZXRfYWdlbnRfc2hhcGVfZGVmID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9hZ2VudF9zaGFwZV9kZWZfMVxubGV0IGdldF9hZ2VudF9jb2xvcl9kZWYgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2FnZW50X2NvbG9yX2RlZl8xXG5sZXQgZ2V0X2xpbmtfY29sb3IgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2xpbmtfY29sb3JfMVxubGV0IGdldF9pbmZsdWVuY2VfY29sb3IgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2luZmx1ZW5jZV9jb2xvcl8xXG5sZXQgZ2V0X2luZmx1ZW5jZV9hcnJvdyA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfaW5mbHVlbmNlX2Fycm93XzFcblxuKCphZGQgcmVhY2hhYmxpdHkqKVxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdCA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19yZXN1bHRfMVxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvbiA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19pdGVyYXRpb25fMVxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpYyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWNfMVxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluYW1pY18xXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZGlmZiA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19kaWZmXzFcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bCA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bF8xXG5cbmxldCBnZXRfcG9zdF9wcm9jZXNzaW5nID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X3Bvc3RfcHJvY2Vzc2luZ18xXG5cbmxldCBnZXRfYmFja2VuZF9tb2RlID0gdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2JhY2tlbmRfbW9kZV8xXG5cbmxldCBnZXRfaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbiA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkXG4gICAgZ2V0X2hpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb25fMVxuXG5sZXQgZ2V0X2hpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGRcbiAgICBnZXRfaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlbF9mcm9tX2RlYWRfcnVsZXNfMVxuXG5sZXQgZ2V0X3NtYXNoX3JlbGF0aW9ucyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9zbWFzaF9yZWxhdGlvbnNfMVxuXG5sZXQgZ2V0X2xvY2FsX3RyYWNlX2Zvcm1hdCA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9sb2NhbF90cmFjZV9mb3JtYXRfMVxuXG5sZXQgZ2V0X2NvbXB1dGVfbG9jYWxfdHJhY2VzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2NvbXB1dGVfbG9jYWxfdHJhY2VzXzFcblxubGV0IGdldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zXzFcblxubGV0IHNldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNfMiByIGIgPVxuICB7XG4gICAgciB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVhY2hhYmlsaXR5X21hcF9vdXRwdXQgPVxuICAgICAgc2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9uc18xXG4gICAgICAgIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVhY2hhYmlsaXR5X21hcF9vdXRwdXQgYjtcbiAgfVxuXG5sZXQgc2V0X3VzZV9tYWNyb3RyYW5zaXRpb25faW5fbG9jYWxfdHJhY2VzXzIgciBiID1cbiAge1xuICAgIHIgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0ID1cbiAgICAgIHNldF91c2VfbWFjcm90cmFuc2l0aW9uX2luX2xvY2FsX3RyYWNlc18xXG4gICAgICAgIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVhY2hhYmlsaXR5X21hcF9vdXRwdXQgYjtcbiAgfVxuXG5sZXQgc2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyByIGIgPVxuICB7XG4gICAgciB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzID1cbiAgICAgIHNldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNfMlxuICAgICAgICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVycyBiO1xuICB9XG5cbmxldCBzZXRfdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzIHIgYiA9XG4gIHtcbiAgICByIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnMgPVxuICAgICAgc2V0X3VzZV9tYWNyb3RyYW5zaXRpb25faW5fbG9jYWxfdHJhY2VzXzJcbiAgICAgICAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnMgYjtcbiAgfVxuXG5sZXQgZ2V0X3Nob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3RyYWNlc18xXG5cbmxldCBnZXRfdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlc18xXG5cbmxldCBnZXRfaWdub3JlX2xvY2FsX2xvc2FuZ2VzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2lnbm9yZV90cml2aWFsX2xvc2FuZ2VzXzFcblxubGV0IGdldF9hZGRfc2luZ3VsYXJfbWFjcm9zdGF0ZXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzXzFcblxubGV0IGdldF9hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzXzFcblxubGV0IGdldF9sb2NhbF90cmFjZV9wcmVmaXggPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfbG9jYWxfdHJhY2VfcHJlZml4XzFcblxubGV0IGdldF9sb2NhbF90cmFjZV9kaXJlY3RvcnkgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5XzFcblxubGV0IGdldF92aWV3X2FuYWx5c2lzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkIGdldF92aWV3X2FuYWx5c2lzXzFcblxubGV0IGdldF9wYXJhbGxlbF9ib25kc19hbmFseXNpcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZFxuICAgIGdldF9wYXJhbGxlbF9ib25kc19hbmFseXNpc18xXG5cbmxldCBnZXRfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNfZmllbGRcbiAgICBnZXRfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXNfMVxuXG5sZXQgZ2V0X2R5bmFtaWNfY29udGFjdF9tYXAgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNfZmllbGQgZ2V0X2R5bmFtaWNfY29udGFjdF9tYXBfMVxuXG5sZXQgZ2V0X2NvdW50ZXJzX2FuYWx5c2lzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkIGdldF9jb3VudGVyc19hbmFseXNpc18xXG5cbmxldCBnZXRfY291bnRlcnNfZG9tYWluID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkIGdldF9jb3VudGVyc19kb21haW5fMVxuXG5sZXQgZ2V0X2RvX3JlYWNoYWJpbGl0eV9hbmFseXNpcyBwID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2RvX3JlYWNoYWJpbGl0eV9hbmFseXNpc18xIHBcbiAgfHwgZ2V0X2NvbXB1dGVfbG9jYWxfdHJhY2VzIHBcblxubGV0IHNldF9wcmVmaXhfMSBtYXJzaGFsaXNhYmxlIHByZWZpeCA9XG4gIHsgbWFyc2hhbGlzYWJsZSB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByZWZpeCB9XG5cbmxldCBzZXRfY2FsbF9zdGFja18xIG1hcnNoYWxpc2FibGUgY2FsbF9zdGFjayA9XG4gIHsgbWFyc2hhbGlzYWJsZSB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNhbGxfc3RhY2sgfVxuXG5sZXQgc2V0X3RyYWNlXzEgbWFyc2hhbGlzYWJsZSBib29sID1cbiAgeyBtYXJzaGFsaXNhYmxlIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudHJhY2UgPSBib29sIH1cblxubGV0IHVwZ3JhZGVfdG9fbWFyc2hhbGlzYWJsZSBmIHBhcmFtZXRlcnMgcHJlZml4ID1cbiAge1xuICAgIHBhcmFtZXRlcnMgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVycyA9XG4gICAgICBmIChnZXRfbWFyc2hhbGlzYWJsZSBwYXJhbWV0ZXJzKSBwcmVmaXg7XG4gIH1cblxubGV0IHNldF9wcmVmaXggPSB1cGdyYWRlX3RvX21hcnNoYWxpc2FibGUgc2V0X3ByZWZpeF8xXG5sZXQgc2V0X2NhbGxfc3RhY2sgPSB1cGdyYWRlX3RvX21hcnNoYWxpc2FibGUgc2V0X2NhbGxfc3RhY2tfMVxubGV0IHNldF90cmFjZSA9IHVwZ3JhZGVfdG9fbWFyc2hhbGlzYWJsZSBzZXRfdHJhY2VfMVxuXG5sZXQgdXBkYXRlX3ByZWZpeCBwYXJhbWV0ZXJzIHN1ZmZpeCA9XG4gIHNldF9wcmVmaXggcGFyYW1ldGVycyAoZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzIF4gc3VmZml4KVxuXG5sZXQgdXBkYXRlX2NhbGxfc3RhY2sgcGFyYW1ldGVycyBib29sIG5hbWUgPVxuICBsZXQgcmVwX2Jvb2wgPSBnZXRfdHJhY2UgcGFyYW1ldGVycyB8fCBib29sIGluXG4gIG1hdGNoIG5hbWUsIGdldF90cmFjZSBwYXJhbWV0ZXJzID0gYm9vbCB3aXRoXG4gIHwgTm9uZSwgdHJ1ZSAtPiBwYXJhbWV0ZXJzXG4gIHwgTm9uZSwgZmFsc2UgLT4gc2V0X3RyYWNlIHBhcmFtZXRlcnMgcmVwX2Jvb2xcbiAgfCBTb21lIHgsIHRydWUgLT4gc2V0X2NhbGxfc3RhY2sgcGFyYW1ldGVycyAoeCA6OiBnZXRfY2FsbF9zdGFjayBwYXJhbWV0ZXJzKVxuICB8IFNvbWUgeCwgZmFsc2UgLT5cbiAgICBzZXRfY2FsbF9zdGFja1xuICAgICAgKHNldF90cmFjZSBwYXJhbWV0ZXJzIHJlcF9ib29sKVxuICAgICAgKHggOjogZ2V0X2NhbGxfc3RhY2sgcGFyYW1ldGVycylcblxubGV0IG9wZW5faW5mbHVlbmNlX21hcF9maWxlIHBhcmFtZXRlcnMgPVxuICBsZXQgY2hhbm5lbCA9XG4gICAgbWF0Y2hcbiAgICAgICggZ2V0X2ltX2ZpbGUgcGFyYW1ldGVycyxcbiAgICAgICAgZ2V0X2ltX2RpcmVjdG9yeSBwYXJhbWV0ZXJzLFxuICAgICAgICBleHRfZm9ybWF0IChnZXRfaW1fZm9ybWF0IHBhcmFtZXRlcnMpIClcbiAgICB3aXRoXG4gICAgfCBOb25lLCBfLCBfIC0+IHN0ZG91dFxuICAgIHwgU29tZSBhLCBOb25lLCBleHQgLT4gb3Blbl9vdXQgYSBleHRcbiAgICB8IFNvbWUgYSwgU29tZSBkLCBleHQgLT4gb3Blbl9vdXQgKGQgXiBhKSBleHRcbiAgaW5cbiAgbGV0IGZvcm1hdCA9XG4gICAgbWF0Y2ggZ2V0X2ltX2Zvcm1hdCBwYXJhbWV0ZXJzIHdpdGhcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRPVCAtPiBMb2dnZXJzLkRPVFxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSFRNTCAtPiBMb2dnZXJzLkhUTUxfR3JhcGhcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRJTSAtPiBMb2dnZXJzLk1hdHJpeFxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuR0VQSEkgLT4gTG9nZ2Vycy5HRVBISVxuICBpblxuICBsZXQgbG9nZ2VyID0gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwgfm1vZGU6Zm9ybWF0IGNoYW5uZWwgaW5cbiAgeyBwYXJhbWV0ZXJzIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubG9nZ2VyIH1cblxubGV0IG9wZW5fY29udGFjdF9tYXBfZmlsZSBwYXJhbWV0ZXJzID1cbiAgbGV0IGNoYW5uZWwgPVxuICAgIG1hdGNoXG4gICAgICAoIGdldF9jbV9maWxlIHBhcmFtZXRlcnMsXG4gICAgICAgIGdldF9jbV9kaXJlY3RvcnkgcGFyYW1ldGVycyxcbiAgICAgICAgZXh0X2Zvcm1hdCAoZ2V0X2NtX2Zvcm1hdCBwYXJhbWV0ZXJzKSApXG4gICAgd2l0aFxuICAgIHwgTm9uZSwgXywgXyAtPiBzdGRvdXRcbiAgICB8IFNvbWUgYSwgTm9uZSwgZXh0IC0+IG9wZW5fb3V0IGEgZXh0XG4gICAgfCBTb21lIGEsIFNvbWUgZCwgZXh0IC0+IG9wZW5fb3V0IChkIF4gYSkgZXh0XG4gIGluXG4gIHtcbiAgICBwYXJhbWV0ZXJzIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXIgPSBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fY2hhbm5lbCBjaGFubmVsO1xuICB9XG5cbmxldCBwZXJzaXN0ZW50X21vZGUgPSBmYWxzZVxuXG5sZXQgbGV4aWNhbF9hbmFseXNpc19vZl90ZXN0ZWRfb25seV9wYXR0ZXJuc19pc19yZXF1aXJlZF9ieV90aGVfaW5mbHVlbmNlX21hcFxuICAgIHBhcmFtZXRlciA9XG4gIChtYXRjaCBnZXRfaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCBwYXJhbWV0ZXIgd2l0aFxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkZ1bGwgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5NZWRpdW1cbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5IaWdoIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTG93IC0+XG4gICAgdHJ1ZVxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vbmUgLT4gZmFsc2UpXG4gICYmIGdldF9kb19pbmZsdWVuY2VfbWFwIHBhcmFtZXRlclxuXG5sZXQgbGV4aWNhbF9hbmFseXNpc19vZl90ZXN0ZWRfb25seV9wYXR0ZXJuc19pc19yZXF1aXJlZF9ieV90aGVfcGVyc2lzdGVudF9tb2RlXG4gICAgXyA9XG4gIHBlcnNpc3RlbnRfbW9kZVxuXG5sZXQgbGV4aWNhbF9hbmFseXNpc19vZl90ZXN0ZWRfb25seV9wYXR0ZXJuc19pc19yZXF1aXJlZF9ieV90aGVfY29udGFjdF9tYXBcbiAgICBwYXJhbWV0ZXIgPVxuICBnZXRfZG9fY29udGFjdF9tYXAgcGFyYW1ldGVyXG4gICYmXG4gIG1hdGNoIGdldF9jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCBwYXJhbWV0ZXIgd2l0aFxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk1lZGl1bSB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkxvdyAtPiB0cnVlXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTm9uZSB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkhpZ2hcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5GdWxsIC0+XG4gICAgZmFsc2VcblxubGV0IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnMgcGFyYW1ldGVyID1cbiAgbGV4aWNhbF9hbmFseXNpc19vZl90ZXN0ZWRfb25seV9wYXR0ZXJuc19pc19yZXF1aXJlZF9ieV90aGVfcGVyc2lzdGVudF9tb2RlXG4gICAgcGFyYW1ldGVyXG4gIHx8IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX2NvbnRhY3RfbWFwXG4gICAgICAgcGFyYW1ldGVyXG4gIHx8IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX2luZmx1ZW5jZV9tYXBcbiAgICAgICBwYXJhbWV0ZXJcblxubGV0IGdldF9jYWxsZWRfZnJvbSBwYXJhbWV0ZXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzXG4gICAgLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNhbGxlZF9mcm9tXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3NjY18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2Zfc2NjXG5cbmxldCBnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjY18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXNfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHNfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50c1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9ydWxlc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18xIGJhY2tkb29yc1xuICAgID1cbiAgYmFja2Rvb3JzXG4gICAgLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnXG4gICAgIC5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzXG4gICAgLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcblxubGV0IGdldF9iYWNrZG9vcl90aW1pbmdfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfdGltaW5nXG5cbmxldCBnZXRfYmFja2Rvb3JfZmlsZV8xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9maWxlXG5cbmxldCBnZXRfYmFja2Rvb3JfZGlyZWN0b3J5XzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX2RpcmVjdG9yeVxuXG5sZXQgZ2V0X2JhY2tkb29ycyBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjXzIgPSBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2NfMiA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2NfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHNfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHNfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXNfMiA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfMiA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXzFcbiAgICBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfdGltaW5nXzIgPSBjb21wb3NlIGdldF9iYWNrZG9vcl90aW1pbmdfMSBnZXRfYmFja2Rvb3JzXG5sZXQgZ2V0X2JhY2tkb29yX2ZpbGVfMiA9IGNvbXBvc2UgZ2V0X2JhY2tkb29yX2ZpbGVfMSBnZXRfYmFja2Rvb3JzXG5sZXQgZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8yID0gY29tcG9zZSBnZXRfYmFja2Rvb3JfZGlyZWN0b3J5XzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9jb25zdHJhaW50cyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9jb25zdHJhaW50c18yIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzXzIgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX3NjY18yIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjYyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2NfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXNfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlcyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc18yIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc18yIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXzJcbiAgICBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXzJcbiAgICBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX3RpbWluZyA9IGNvbXBvc2UgZ2V0X2JhY2tkb29yX3RpbWluZ18yIGdldF9tYXJzaGFsaXNhYmxlXG5sZXQgZ2V0X2JhY2tkb29yX2ZpbGUgPSBjb21wb3NlIGdldF9iYWNrZG9vcl9maWxlXzIgZ2V0X21hcnNoYWxpc2FibGVcbmxldCBnZXRfYmFja2Rvb3JfZGlyZWN0b3J5ID0gY29tcG9zZSBnZXRfYmFja2Rvb3JfZGlyZWN0b3J5XzIgZ2V0X21hcnNoYWxpc2FibGVcbmxldCBnZXRfcHJvZmlsZXIgcGFyYW1ldGVyID0gcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByb2ZpbGVyXG5cbmxldCBnZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlciBwYXJhbWV0ZXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tcHJlc3Npb25fc3RhdHVzXG5cbmxldCBnZXRfa2FzYV9zdGF0ZSA9IGNvbXBvc2UgZ2V0X2thc2Ffc3RhdGVfMSBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgc2V0X3ByaW50X2VmZmljaWVuY3kgcGFyYW1ldGVyIGJvb2wgPVxuICB7IHBhcmFtZXRlciB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByaW50X2VmZmljaWVuY3kgPSBib29sIH1cblxubGV0IGdldF9wcmludF9lZmZpY2llbmN5IHBhcmFtZXRlciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcmludF9lZmZpY2llbmN5XG5cbmxldCBzZXRfbG9nZ2VyIHBhcmFtZXRlciBsb2dnZXIgPVxuICB7IHBhcmFtZXRlciB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlciB9XG5cbmxldCBzYXZlX2Vycm9yX2xpc3QgcGFyYW1ldGVyIGVycm9yID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfZXJyb3JfbGlzdCBlcnJvclxuXG5sZXQgc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyIGJhciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX3Byb2dyZXNzX2JhciBiYXJcblxubGV0IHJlc2V0X3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVzZXRfcHJvZ3Jlc3NfYmFyXG5cbmxldCBzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfY3VycmVudF9waGFzZV90aXRsZVxuXG5sZXQgcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVzZXRfY3VycmVudF9waGFzZV90aXRsZVxuIiwib3BlbiBTdXBlcmFyZ1xuXG50eXBlIGNvdW50ID0gRW1iZWRkaW5ncyB8IE9jY3VycmVuY2VzXG5cbnR5cGUgdCA9IHtcbiAgYmFja2VuZDogc3RyaW5nIHJlZjtcbiAgcnVsZV9yYXRlX2NvbnZlbnRpb246IHN0cmluZyByZWY7XG4gIHJlYWN0aW9uX3JhdGVfY29udmVudGlvbjogc3RyaW5nIHJlZjtcbiAgY291bnQ6IHN0cmluZyByZWY7XG4gIGludGVybmFsX21lYW5pbmc6IHN0cmluZyByZWY7XG4gIHNob3dfcmVhY3Rpb25zOiBib29sIHJlZjtcbiAgY29tcHV0ZV9qYWNvYmlhbjogYm9vbCByZWY7XG4gIG9jdGF2ZV9vdXRwdXQ6IHN0cmluZyBvcHRpb24gcmVmO1xuICBtYXRsYWJfb3V0cHV0OiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgbWFwbGVfb3V0cHV0OiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgbWF0aGVtYXRpY2Ffb3V0cHV0OiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgc2JtbF9vdXRwdXQ6IHN0cmluZyBvcHRpb24gcmVmO1xuICBkb3RuZXRfb3V0cHV0OiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgZGF0YV9maWxlOiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgd2l0aF9zeW1tZXRyaWVzOiBzdHJpbmcgcmVmO1xuICBzaG93X3N5bW1ldHJpZXM6IGJvb2wgcmVmO1xuICB2aWV3czogYm9vbCByZWY7XG4gIGRib25kczogYm9vbCByZWY7XG4gIHNpdGVfYWNyb3NzOiBib29sIHJlZjtcbiAgbm9ubmVnYXRpdmU6IGJvb2wgcmVmO1xuICBzaG93X3RpbWVfYWR2YW5jZTogYm9vbCByZWY7XG4gIGluaXRpYWxfc3RlcDogZmxvYXQgcmVmO1xuICBtYXhfc3RlcDogZmxvYXQgcmVmO1xuICByZWxhdGl2ZV90b2xlcmFuY2U6IGZsb2F0IHJlZjtcbiAgYWJzb2x1dGVfdG9sZXJhbmNlOiBmbG9hdCByZWY7XG4gIHNtYXNoX3JlYWN0aW9uczogYm9vbCByZWY7XG4gIHByb3BhZ2F0ZV9jb25zdGFudHM6IGJvb2wgcmVmO1xuICBwcmludF9lZmZpY2llbmN5OiBib29sIHJlZjtcbiAgbWF4X3NpemVfZm9yX3NwZWNpZXM6IGludCBvcHRpb24gcmVmO1xuICBjc3Zfc2VwOiBzdHJpbmcgcmVmO1xufVxuXG5sZXQgZGVmYXVsdCA6IHQgPVxuICB7XG4gICAgYmFja2VuZCA9IHJlZiBcIm9jdGF2ZVwiO1xuICAgIHJ1bGVfcmF0ZV9jb252ZW50aW9uID0gcmVmIFwiRGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIjtcbiAgICByZWFjdGlvbl9yYXRlX2NvbnZlbnRpb24gPSByZWYgXCJEaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1wiO1xuICAgIGNvdW50ID0gcmVmIFwiRW1iZWRkaW5nc1wiO1xuICAgIGludGVybmFsX21lYW5pbmcgPSByZWYgXCJFbWJlZGRpbmdzXCI7XG4gICAgc2hvd19yZWFjdGlvbnMgPSByZWYgdHJ1ZTtcbiAgICBjb21wdXRlX2phY29iaWFuID0gcmVmIHRydWU7XG4gICAgZG90bmV0X291dHB1dCA9IHJlZiAoU29tZSBcIm5ldHdvcmsubmV0XCIpO1xuICAgIG9jdGF2ZV9vdXRwdXQgPSByZWYgKFNvbWUgXCJvZGUubVwiKTtcbiAgICBtYXRsYWJfb3V0cHV0ID0gcmVmIChTb21lIFwib2RlLm1cIik7XG4gICAgbWFwbGVfb3V0cHV0ID0gcmVmIChTb21lIFwib2RlLm13c1wiKTtcbiAgICBtYXRoZW1hdGljYV9vdXRwdXQgPSByZWYgKFNvbWUgXCJvZGUubmJcIik7XG4gICAgc2JtbF9vdXRwdXQgPSByZWYgKFNvbWUgXCJuZXR3b3JrLnhtbFwiKTtcbiAgICBkYXRhX2ZpbGUgPSByZWYgKFNvbWUgXCJkYXRhLmNzdlwiKTtcbiAgICB3aXRoX3N5bW1ldHJpZXMgPSByZWYgXCJOb25lXCI7XG4gICAgc2hvd19zeW1tZXRyaWVzID0gcmVmIGZhbHNlO1xuICAgIHZpZXdzID0gcmVmIHRydWU7XG4gICAgZGJvbmRzID0gcmVmIHRydWU7XG4gICAgc2l0ZV9hY3Jvc3MgPSByZWYgdHJ1ZTtcbiAgICBub25uZWdhdGl2ZSA9IHJlZiBmYWxzZTtcbiAgICBzaG93X3RpbWVfYWR2YW5jZSA9IHJlZiBmYWxzZTtcbiAgICBpbml0aWFsX3N0ZXAgPSByZWYgMC4wMDAwMTtcbiAgICBtYXhfc3RlcCA9IHJlZiAwLjAyO1xuICAgIGFic29sdXRlX3RvbGVyYW5jZSA9IHJlZiAwLjAwMTtcbiAgICByZWxhdGl2ZV90b2xlcmFuY2UgPSByZWYgMC4wMDE7XG4gICAgc21hc2hfcmVhY3Rpb25zID0gcmVmIGZhbHNlO1xuICAgIHByb3BhZ2F0ZV9jb25zdGFudHMgPSByZWYgZmFsc2U7XG4gICAgcHJpbnRfZWZmaWNpZW5jeSA9IHJlZiBmYWxzZTtcbiAgICBtYXhfc2l6ZV9mb3Jfc3BlY2llcyA9IHJlZiBOb25lO1xuICAgIGNzdl9zZXAgPSByZWYgXCIgXCI7XG4gIH1cblxubGV0IGNvbWJpbmUgbDEgbDIgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gbGlzdCBhMSAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBsaXN0IChhMiA6IGludCkgLT4gKGExLCBhMikgOjogbGlzdCkgbGlzdCBsMilcbiAgICBbXSBsMVxuXG5sZXQgb3B0aW9ucyAodCA6IHQpIDpcbiAgICAoU3VwZXJhcmcua2V5XG4gICAgKiBTdXBlcmFyZy5zcGVjXG4gICAgKiBTdXBlcmFyZy5tc2dcbiAgICAqIChTdXBlcmFyZy5jYXRlZ29yeSAqIFN1cGVyYXJnLnBvc2l0aW9uKSBsaXN0XG4gICAgKiBTdXBlcmFyZy5sZXZlbClcbiAgICBsaXN0ID1cbiAgW1xuICAgICggXCItLXZvaWRcIixcbiAgICAgIFN1cGVyYXJnLlZvaWQsXG4gICAgICBcIlwiLFxuICAgICAgY29tYmluZVxuICAgICAgICBbXG4gICAgICAgICAgQ29tbW9uX2FyZ3MuZGF0YV9zZXQ7XG4gICAgICAgICAgQ29tbW9uX2FyZ3Mub3V0cHV0O1xuICAgICAgICAgIENvbW1vbl9hcmdzLnNlbWFudGljcztcbiAgICAgICAgICBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncztcbiAgICAgICAgICBDb21tb25fYXJncy5tb2RlbF9yZWR1Y3Rpb247XG4gICAgICAgICAgQ29tbW9uX2FyZ3Muc3RhdGljX2FuYWx5c2lzO1xuICAgICAgICAgIENvbW1vbl9hcmdzLmRlYnVnX21vZGU7XG4gICAgICAgIF1cbiAgICAgICAgWyA1MDsgNTE7IDUyIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLk11bHRpRXh0XG4gICAgICAgIFtcbiAgICAgICAgICBcIi0tZG90bmV0LW91dHB1dFwiLCBcIi5uZXRcIjtcbiAgICAgICAgICBcIi0tbWFwbGUtb3V0cHV0XCIsIFwiLm13c1wiO1xuICAgICAgICAgIFwiLS1tYXRoZW1hdGljYS1vdXRwdXRcIiwgXCIubmJcIjtcbiAgICAgICAgICBcIi0tbWF0bGFiLW91dHB1dFwiLCBcIi5tXCI7XG4gICAgICAgICAgXCItLW9jdGF2ZS1vdXRwdXRcIiwgXCIubVwiO1xuICAgICAgICAgIFwiLS1zYm1sLW91dHB1dFwiLCBcIi54bWxcIjtcbiAgICAgICAgXSxcbiAgICAgIFwiUHJlZml4IGZvciBmaWxlIG5hbWUgb3V0cHV0XCIsXG4gICAgICBbXG4gICAgICAgIENvbW1vbl9hcmdzLmRhdGFfc2V0LCAxMDE7XG4gICAgICAgIENvbW1vbl9hcmdzLm91dHB1dCwgMTAxO1xuICAgICAgICBDb21tb25fYXJncy5zZW1hbnRpY3MsIDEwMTtcbiAgICAgICAgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDEwMTtcbiAgICAgICAgQ29tbW9uX2FyZ3MubW9kZWxfcmVkdWN0aW9uLCAxMDE7XG4gICAgICAgIENvbW1vbl9hcmdzLnN0YXRpY19hbmFseXNpcywgMTAxO1xuICAgICAgICBDb21tb25fYXJncy5kZWJ1Z19tb2RlLCAxMDE7XG4gICAgICBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tb2RlLWJhY2tlbmRcIixcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFtcbiAgICAgICAgICAgIFwiZG90bmV0XCIsIFwiZG90bmV0IChCTkdMKSBiYWNrZW5kXCI7XG4gICAgICAgICAgICBcIm1hcGxlXCIsIFwibWFwbGUgYmFja2VuZCAoaW4gcHJvZ3Jlc3MpXCI7XG4gICAgICAgICAgICBcIm1hdGhlbWF0aWNhXCIsIFwibWF0aGVtYXRpY2EgYmFja2VuZCAoaW4gcHJvZ3Jlc3MpXCI7XG4gICAgICAgICAgICBcIm1hdGxhYlwiLCBcIm1hdGxhYiBiYWNrZW5kXCI7XG4gICAgICAgICAgICBcIm9jdGF2ZVwiLCBcIm9jdGF2ZSBiYWNrZW5kXCI7XG4gICAgICAgICAgICBcInNibWxcIiwgXCJzYm1sIGJhY2tlbmRcIjtcbiAgICAgICAgICBdLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFwiRG90bmV0XCI7XG4gICAgICAgICAgICBcIkRPVE5FVFwiO1xuICAgICAgICAgICAgXCJPY3RhdmVcIjtcbiAgICAgICAgICAgIFwiT0NUQVZFXCI7XG4gICAgICAgICAgICBcIk1hdGxhYlwiO1xuICAgICAgICAgICAgXCJNQVRMQUJcIjtcbiAgICAgICAgICAgIFwiTWF0aGVtYXRpY2FcIjtcbiAgICAgICAgICAgIFwiTUFUSEVNQVRJQ0FcIjtcbiAgICAgICAgICAgIFwiTWFwbGVcIjtcbiAgICAgICAgICAgIFwiTUFQTEVcIjtcbiAgICAgICAgICAgIFwiU2JtbFwiO1xuICAgICAgICAgICAgXCJTQk1MXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICB0LmJhY2tlbmQgKSxcbiAgICAgIFwiU2VsZWN0IHRoZSBiYWNrZW5kIGZvcm1hdFwiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDEgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWRvdG5ldC1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdC5kb3RuZXRfb3V0cHV0LFxuICAgICAgXCJPREVzIGZpbGUgZm9yIGRvdG5ldCBiYWNrZW5kXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgMiBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tbWFwbGUtb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHQubWFwbGVfb3V0cHV0LFxuICAgICAgXCJPREVzIGZpbGUgZm9yIG1hcGxlIGJhY2tlbmRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCAzIF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS1tYXRoZW1hdGljYS1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdC5tYXRoZW1hdGljYV9vdXRwdXQsXG4gICAgICBcIk9ERXMgZmlsZSBmb3IgbWF0aGVtYXRpY2EgYmFja2VuZFwiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDQgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLW1hdGxhYi1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdC5tYXRsYWJfb3V0cHV0LFxuICAgICAgXCJPREVzIGZpbGUgZm9yIG1hdGxhYiBiYWNrZW5kXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgNSBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tb2N0YXZlLW91dHB1dFwiLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0Lm9jdGF2ZV9vdXRwdXQsXG4gICAgICBcIk9ERXMgZmlsZSBmb3Igb2N0YXZlIGJhY2tlbmRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCA2IF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS1zYm1sLW91dHB1dFwiLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0LnNibWxfb3V0cHV0LFxuICAgICAgXCJPREVzIGZpbGUgZm9yIHNibWwgYmFja2VuZFwiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDcgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLXByb3BhZ2F0ZS1jb25zdGFudHNcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5wcm9wYWdhdGVfY29uc3RhbnRzLFxuICAgICAgXCJwcm9wYWdhdGUgY29uc3RhbnRzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgOCBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tY29uc3RhbnQtcHJvcGFnYXRpb25cIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5wcm9wYWdhdGVfY29uc3RhbnRzLFxuICAgICAgXCJwcm9wYWdhdGUgY29uc3RhbnRzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgOSBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tY3N2LXNlcGFyYXRvclwiLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nIHQuY3N2X3NlcCxcbiAgICAgIFwic2VwYXJhdG9yIHN5bWJvbCBpbiBDU1YgZmlsZXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxMCBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tcmF0ZS1jb252ZW50aW9uXCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcIkthU2ltXCIsIFwiZG8gbm90IGRpdmlkZSBieSBhbnl0aGluZ1wiO1xuICAgICAgICAgICAgKCBcIkRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCIsXG4gICAgICAgICAgICAgIFwiZGl2aWRlIGJ5IHRoZSBudW1iZXIgb2YgYXV0b3MgaW4gdGhlIGxocyBvZiBydWxlc1wiICk7XG4gICAgICAgICAgICAoIFwiQmlvY2hlbWlzdFwiLFxuICAgICAgICAgICAgICBcImRpdmlkZSBieSB0aGUgbnVtYmVyIG9mIGF1dG9zIGluIHRoZSBsaHMgb2YgcnVsZXMgdGhhdCBpbmR1Y2UgXFxcbiAgICAgICAgICAgICAgIGFuIGF1dG8gYWxzbyBpbiB0aGUgcmhzXCIgKTtcbiAgICAgICAgICBdLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFwia2FzaW1cIjtcbiAgICAgICAgICAgIFwiS0FTSU1cIjtcbiAgICAgICAgICAgIFwiS2FzaW1cIjtcbiAgICAgICAgICAgIFwiRElWSURFX0JZX05CUl9PRl9BVVRPU19JTl9MSFNcIjtcbiAgICAgICAgICAgIFwiZGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIjtcbiAgICAgICAgICAgIFwiYmlvYmhlbWlzdFwiO1xuICAgICAgICAgICAgXCJCSU9DSEVNSVNUXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICB0LnJ1bGVfcmF0ZV9jb252ZW50aW9uICksXG4gICAgICBcImNvbnZlbnRpb24gZm9yIGRpdmlkaW5nIGNvbnN0YW50IHJhdGVzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgMSBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tcnVsZS1yYXRlLWNvbnZlbnRpb25cIixcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFtcbiAgICAgICAgICAgIFwiS2FTaW1cIiwgXCJkbyBub3QgZGl2aWRlIGJ5IGFueXRoaW5nXCI7XG4gICAgICAgICAgICAoIFwiRGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIixcbiAgICAgICAgICAgICAgXCJkaXZpZGUgYnkgdGhlIG51bWJlciBvZiBhdXRvcyBpbiB0aGUgbGhzIG9mIHJ1bGVzXCIgKTtcbiAgICAgICAgICAgICggXCJCaW9jaGVtaXN0XCIsXG4gICAgICAgICAgICAgIFwiZGl2aWRlIGJ5IHRoZSBudW1iZXIgb2YgYXV0b3MgaW4gdGhlIGxocyBvZiBydWxlcyB0aGF0IGluZHVjZSBcXFxuICAgICAgICAgICAgICAgYW4gYXV0byBhbHNvIGluIHRoZSByaHNcIiApO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJrYXNpbVwiO1xuICAgICAgICAgICAgXCJLQVNJTVwiO1xuICAgICAgICAgICAgXCJLYXNpbVwiO1xuICAgICAgICAgICAgXCJESVZJREVfQllfTkJSX09GX0FVVE9TX0lOX0xIU1wiO1xuICAgICAgICAgICAgXCJkaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1wiO1xuICAgICAgICAgICAgXCJiaW9iaGVtaXN0XCI7XG4gICAgICAgICAgICBcIkJJT0NIRU1JU1RcIjtcbiAgICAgICAgICBdLFxuICAgICAgICAgIHQucnVsZV9yYXRlX2NvbnZlbnRpb24gKSxcbiAgICAgIFwiY29udmVudGlvbiBmb3IgZGl2aWRpbmcgY29uc3RhbnQgcmF0ZXMgKGZvciBydWxlcylcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCAxIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1yZWFjdGlvbi1yYXRlLWNvbnZlbnRpb25cIixcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFtcbiAgICAgICAgICAgIFwiS2FTaW1cIiwgXCJkbyBub3QgZGl2aWRlIGJ5IGFueXRoaW5nXCI7XG4gICAgICAgICAgICAoIFwiRGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIixcbiAgICAgICAgICAgICAgXCJkaXZpZGUgYnkgdGhlIG51bWJlciBvZiBhdXRvcyBpbiB0aGUgbGhzIG9mIHJlYWN0aW9uc1wiICk7XG4gICAgICAgICAgICAoIFwiQmlvY2hlbWlzdFwiLFxuICAgICAgICAgICAgICBcImRpdmlkZSBieSB0aGUgbnVtYmVyIG9mIGF1dG9zIGluIHRoZSBsaHMgb2YgcmVhY3Rpb25zIHRoYXQgXFxcbiAgICAgICAgICAgICAgIGluZHVjZSBhbiBhdXRvIGFsc28gaW4gdGhlIHJoc1wiICk7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcImthc2ltXCI7XG4gICAgICAgICAgICBcIktBU0lNXCI7XG4gICAgICAgICAgICBcIkthc2ltXCI7XG4gICAgICAgICAgICBcIkRJVklERV9CWV9OQlJfT0ZfQVVUT1NfSU5fTEhTXCI7XG4gICAgICAgICAgICBcImRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCI7XG4gICAgICAgICAgICBcImJpb2JoZW1pc3RcIjtcbiAgICAgICAgICAgIFwiQklPQ0hFTUlTVFwiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgdC5yZWFjdGlvbl9yYXRlX2NvbnZlbnRpb24gKSxcbiAgICAgIFwiY29udmVudGlvbiBmb3IgZGl2aWRpbmcgY29uc3RhbnQgcmF0ZXMgKGZvciByZWFjdGlvbnMpXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgMiBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tY291bnRcIixcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFtcbiAgICAgICAgICAgICggXCJFbWJlZGRpbmdzXCIsXG4gICAgICAgICAgICAgIFwiY291bnQgdGhlIG51bWJlciBvZiBlbWJlZGRpbmdzIG9mIHBhdHRlcm5zIGludG8gc3BlY2llc1wiICk7XG4gICAgICAgICAgICBcIk9jY3VycmVuY2VzXCIsIFwiY291bnQgdGhlIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiBzcGVjaWVzXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbIFwiZW1iZWRkaW5nc1wiOyBcIkVNQkVERElOR1NcIjsgXCJvY2N1cnJlbmNlc1wiOyBcIk9DQ1VSUkVOQ0VTXCIgXSxcbiAgICAgICAgICB0LmNvdW50ICksXG4gICAgICBcInR1bmUgd2hldGhlciB3ZSBjb3VudCBpbiBlbWJlZGRpbmdzIG9yIGluIG9jY3VycmVuY2VzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgMyBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0taW50ZXJuYWwtbWVhbmluZ1wiLFxuICAgICAgU3VwZXJhcmcuQ2hvaWNlXG4gICAgICAgICggW1xuICAgICAgICAgICAgKCBcIkVtYmVkZGluZ3NcIixcbiAgICAgICAgICAgICAgXCJWYXJpYWJsZXMgZm9yIEthcHBhIHNwZWNpZXMgZGVub3RlIG51bWJlcnMgb2YgZW1iZWRkaW5nc1wiICk7XG4gICAgICAgICAgICAoIFwiT2NjdXJyZW5jZXNcIixcbiAgICAgICAgICAgICAgXCJWYXJpYWJsZXMgZm9yIEthcHBhIHNwZWNpZXMgZGVub3RlIG51bWJlcnMgb2Ygb2NjdXJyZW5jZXNcIiApO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgWyBcImVtYmVkZGluZ3NcIjsgXCJFTUJFRERJTkdTXCI7IFwib2NjdXJyZW5jZXNcIjsgXCJPQ0NVUlJFTkNFU1wiIF0sXG4gICAgICAgICAgdC5pbnRlcm5hbF9tZWFuaW5nICksXG4gICAgICBcInR1bmUgdGhlIG1lYW5pbmcgb2YgdmFyaWFibGUgZm9yIEthcHBhIHNwZWNpZXMgKHdoZXRoZXIgaXQgaXMgdGhlIFxcXG4gICAgICAgbnVtYmVyIG9mIGVtYmVkZGluZ3Mgb3IgdGhlIG51bWJlciBvZiBvY2N1cnJlbmNlcylcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCA0IF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS10cnVuY2F0ZVwiLFxuICAgICAgU3VwZXJhcmcuSW50X29wdCB0Lm1heF9zaXplX2Zvcl9zcGVjaWVzLFxuICAgICAgXCJ0cnVuY2F0ZSB0aGUgbmV0d29yayBieSBkaXNjYXJkaW5nIHNwZWNpZXMgd2l0aCBzaXplIGdyZWF0ZXIgdGhhbiB0aGUgXFxcbiAgICAgICBhcmd1bWVudFwiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDQgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLW1heC1zaXplLWZvci1zcGVjaWVzXCIsXG4gICAgICBTdXBlcmFyZy5JbnRfb3B0IHQubWF4X3NpemVfZm9yX3NwZWNpZXMsXG4gICAgICBcInRydW5jYXRlIHRoZSBuZXR3b3JrIGJ5IGRpc2NhcmRpbmcgc3BlY2llcyB3aXRoIHNpemUgZ3JlYXRlciB0aGFuIHRoZSBcXFxuICAgICAgIGFyZ3VtZW50XCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgNSBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tc2hvdy1yZWFjdGlvbnNcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5zaG93X3JlYWN0aW9ucyxcbiAgICAgIFwiQW5ub3RhdGUgT0RFcyBieSB0aGUgY29ycmVzcG9uZGluZyBjaGVtaWNhbCByZWFjdGlvbnNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxMCBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tc21hc2gtcmVhY3Rpb25zXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQuc21hc2hfcmVhY3Rpb25zLFxuICAgICAgXCJHYXRoZXIgaWRlbnRpY2FsIHJlYWN0aW9ucyBpbiB0aGUgT0RFc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDExOyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMSBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tY29tcHV0ZS1qYWNvYmlhblwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LmNvbXB1dGVfamFjb2JpYW4sXG4gICAgICBcIkVuYWJsZS9kaXNhYmxlIHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgSmFjb2JpYW4gb2YgdGhlIE9ERXMgXFxuXFxcbiAgICAgICBcXHQgKG5vdCBhdmFpbGFibGUgeWV0KVwiLFxuICAgICAgWyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMiBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0td2l0aC1zeW1tZXRyaWVzXCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcIk5vbmVcIiwgXCJubyBzeW1tZXRyaWVzIHJlZHVjdGlvblwiO1xuICAgICAgICAgICAgKCBcIkJhY2t3YXJkXCIsXG4gICAgICAgICAgICAgIFwidXNlIHRoZSBzeW1tZXRyaWVzIHNhdGlzZmllZCBieSB0aGUgcnVsZXMgYW5kIHRoZSBhbGdlYnJhaWMgXFxcbiAgICAgICAgICAgICAgIGV4cHJlc3Npb25zXCIgKTtcbiAgICAgICAgICAgICggXCJGb3J3YXJkXCIsXG4gICAgICAgICAgICAgIFwidXNlIHRoZSBzeW1tZXRyaWVzIHNhdGlzZmllZCBieSB0aGUgcnVsZXMgYW5kIHRoZSBpbml0aWFsIHN0YXRlXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcIm5vbmVcIjtcbiAgICAgICAgICAgIFwiTk9ORVwiO1xuICAgICAgICAgICAgXCJCQUNLV0FSRFwiO1xuICAgICAgICAgICAgXCJiYWNrd2FyZFwiO1xuICAgICAgICAgICAgXCJmb3J3YXJkXCI7XG4gICAgICAgICAgICBcIkZPUldBUkRcIjtcbiAgICAgICAgICAgIFwidHJ1ZVwiO1xuICAgICAgICAgICAgXCJUUlVFXCI7XG4gICAgICAgICAgICBcIlRydWVcIjtcbiAgICAgICAgICAgIFwiZmFsc2VcIjtcbiAgICAgICAgICAgIFwiRkFMU0VcIjtcbiAgICAgICAgICAgIFwiRmFsc2VcIjtcbiAgICAgICAgICBdLFxuICAgICAgICAgIHQud2l0aF9zeW1tZXRyaWVzICksXG4gICAgICBcIlR1bmUgd2hpY2gga2luZCBvZiBiaXNpbXVsYXRpb24gaXMgdXNlZCB0byByZWR1Y2UgdGhlIHNldCBvZiBzcGVjaWVzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgNTsgQ29tbW9uX2FyZ3MubW9kZWxfcmVkdWN0aW9uLCAxIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1zaG93LXN5bW1ldHJpZXNcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5zaG93X3N5bW1ldHJpZXMsXG4gICAgICBcIkRpc3BsYXkgdGhlIGVxdWl2YWxlbmNlIHJlbGF0aW9ucyBvdmVyIHRoZSBzaXRlc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5tb2RlbF9yZWR1Y3Rpb24sIDIgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXZpZXdzLWRvbWFpblwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnZpZXdzLFxuICAgICAgXCJFbmFibGUvZGlzYWJsZSB2aWV3cyBhbmFseXNpcyB3aGVuIGRldGVjdGluZyBzeW1tZXRyaWMgc2l0ZXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc3RhdGljX2FuYWx5c2lzLCAxIF0sXG4gICAgICBFeHBlcnQgKTtcbiAgICAoIFwiLS1kb3VibGUtYm9uZHMtZG9tYWluXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQuZGJvbmRzLFxuICAgICAgXCJFbmFibGUvZGlzYWJsZSBkb3VibGUgYm9uZHMgYW5hbHlzaXMgd2hlbiBkZXRlY3Rpbmcgc3ltbWV0cmljIHNpdGVzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnN0YXRpY19hbmFseXNpcywgMiBdLFxuICAgICAgRXhwZXJ0ICk7XG4gICAgKCBcIi0tc2l0ZS1hY3Jvc3MtYm9uZHMtZG9tYWluXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQuc2l0ZV9hY3Jvc3MsXG4gICAgICBcIkVuYWJsZS9kaXNhYmxlIHRoZSBhbmFseXNpcyBvZiB0aGUgcmVsYXRpb24gYW1vbmQgdGhlIHN0YXRlcyBvZiBzaXRlcyBcXFxuICAgICAgIGluIGNvbm5lY3RlZCBhZ2VudHNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc3RhdGljX2FuYWx5c2lzLCAzIF0sXG4gICAgICBFeHBlcnQgKTtcbiAgICAoIFwiLS1ub25uZWdhdGl2ZVwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0Lm5vbm5lZ2F0aXZlLFxuICAgICAgXCJFbmFibGUvZGlzYWJsZSB0aGUgY29ycmVjdGlvbiBvZiBuZWdhdGl2ZSBjb25jZW50cmF0aW9ucyBpbiBzdGlmZiBPREUgXFxcbiAgICAgICBzeXN0ZW1zXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAzIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1zaG93LXRpbWUtYWR2YW5jZVwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnNob3dfdGltZV9hZHZhbmNlLFxuICAgICAgXCJEaXNwbGF5IHRpbWUgYWR2YW5jZSBkdXJpbmcgbnVtZXJpY2FsIGludGVncmF0aW9uXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLmRlYnVnX21vZGUsIDEgXSxcbiAgICAgIEV4cGVydCApO1xuICAgICggXCItLWluaXRpYWwtc3RlcFwiLFxuICAgICAgU3VwZXJhcmcuRmxvYXQgdC5pbml0aWFsX3N0ZXAsXG4gICAgICBcIkluaXRpYWwgaW50ZWdyYXRpb24gc3RlcFwiLFxuICAgICAgWyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgNCBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tbWF4LXN0ZXBcIixcbiAgICAgIFN1cGVyYXJnLkZsb2F0IHQubWF4X3N0ZXAsXG4gICAgICBcIk1heGltdW0gaW50ZWdyYXRpb24gc3RlcFwiLFxuICAgICAgWyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgNSBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tcmVsYXRpdmUtdG9sZXJhbmNlXCIsXG4gICAgICBTdXBlcmFyZy5GbG9hdCB0LnJlbGF0aXZlX3RvbGVyYW5jZSxcbiAgICAgIFwidG9sZXJhbmNlIHRvIHJlbGF0aXZlIHJvdW5kaW5nIGVycm9yc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgNiBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tYWJzb2x1dGUtdG9sZXJhbmNlXCIsXG4gICAgICBTdXBlcmFyZy5GbG9hdCB0LmFic29sdXRlX3RvbGVyYW5jZSxcbiAgICAgIFwidG9sZXJhbmNlIHRvIGFic29sdXRlIHJvdW5kaW5nIGVycm9yc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgNyBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tcHJpbnQtZWZmaWNpZW5jeVwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnByaW50X2VmZmljaWVuY3ksXG4gICAgICBcInByb21wdCBDUFUgdGltZSBhbmQgdmFyaW91cyBkYXRhc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5kZWJ1Z19tb2RlLCAyIF0sXG4gICAgICBFeHBlcnQgKTtcbiAgXVxuXG5sZXQgZ2V0X29wdGlvbiBvcHRpb25zID1cbiAgbGV0IHRpdGxlID0gVmVyc2lvbi52ZXJzaW9uX2thZGVfZnVsbF9uYW1lIGluXG4gIGxldCBpbnB1dCA9IHJlZiBbXSBpblxuICBsZXQgKCkgPSBTdXBlcmFyZ1RrLnBhcnNlIH50aXRsZSBvcHRpb25zIGlucHV0IGluXG4gICFpbnB1dFxuXG5sZXQgYnVpbGRfa2FzYV9wYXJhbWV0ZXJzIH5jYWxsZWRfZnJvbSB0IHRfY29tbW9uID1cbiAgQ29uZmlnLndpdGhfdmlld3NfYW5hbHlzaXMgOj0gISh0LnZpZXdzKTtcbiAgQ29uZmlnLndpdGhfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXMgOj0gISh0LmRib25kcyk7XG4gIENvbmZpZy53aXRoX3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzIDo9ICEodC5zaXRlX2Fjcm9zcyk7XG4gIENvbmZpZy50cmFjZSA6PSB0X2NvbW1vbi5Db21tb25fYXJncy5kZWJ1ZztcbiAgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcGFyYW1ldGVycyB+Y2FsbGVkX2Zyb20gKClcbiIsIigqKlxuICogaGVhZGVycy5tbFxuICogb3BlbmthcHBhXG4gKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uL0FudGlxdWUsIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICpcbiAqIENyZWF0aW9uOiAwOC8wMy8yMDEwXG4gKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPE5vdiAxNCAyMDE2PlxuICogKlxuICogU29tZSBwYXJhbWV0ZXJzXG4gKiByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICpcbiAqIENvcHlyaWdodCAyMDEwLDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNVxuICogSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxuKCoqIGlmIHVuc2FmZSA9IHRydWUsIHRoZW4gd2hlbmV2ZXIgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYSBkZWZhdWx0IHZhbHVlIGlzIG91dHB1dCwgYW5kIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQqKVxubGV0IGRvdF9jb21tZW50ID0gXCIjXCJcblxubGV0IGhlYWQgcGFyYW1ldGVycyA9XG4gIFtcbiAgICBcIlRoaXMgZmlsZSBoYXMgYmVlbiBjb21wdXRlZCBieSBLYVNhOiBhIFN0YXRpYyBBbmFseXplciBmb3IgS2FwcGEgKFwiXG4gICAgXiBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9zaG9ydF92ZXJzaW9uIHBhcmFtZXRlcnNcbiAgICBeIFwiKVwiO1xuICAgIFwiRG93bmxvYWQgc291cmNlcy9iaW5hcmllcyBhdCBodHRwczovL2dpdGh1Yi5jb20vS2FwcGEtRGV2L0thU2ltXCI7XG4gICAgXCJcIjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sYXVuY2hlZF93aGVuX2FuZF93aGVyZSBwYXJhbWV0ZXJzO1xuICAgIFwiQ29tbWFuZCBsaW5lIGlzOiBcIlxuICAgIF4gU3RyaW5nLmNvbmNhdCBcIiBcIlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgQXJyYXkudG9fbGlzdCAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfY29tbWFuZF9saW5lIHBhcmFtZXRlcnMpXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgX3QgOjogcSAtPiBcIkthU2FcIiA6OiBxXG4gICAgICAgIHwgW10gLT4gW10pO1xuICAgIFwiXCI7XG4gIF1cblxubGV0IGRvdF90b19wZGYgPVxuICBcIlBsZWFzZSB1c2UgZ3JhcGh2aXogKGh0dHA6Ly93d3cuZ3JhcGh2aXoub3JnKSBvciBPbW5pR3JhZmZsZSB0byBleHBvcnQgaXQgXFxcbiAgIHRvIGEgUERGXCJcblxubGV0IGhlYWRfaW5mbHVlbmNlX21hcF9pbl9kb3QgPVxuICBbXG4gICAgXCJUaGlzIGZpbGUgY29udGFpbnMgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBpbmZsdWVuY2UgbWFwIGluIGRvdC5cIjtcbiAgICBkb3RfdG9fcGRmO1xuICAgIFwiXCI7XG4gIF1cblxubGV0IGhlYWRfY29udGFjdF9tYXBfaW5fZG90ID1cbiAgW1xuICAgIFwiVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgY29udGFjdCBtYXAgaW4gZG90LlwiO1xuICAgIGRvdF90b19wZGY7XG4gICAgXCJcIjtcbiAgXVxuIiwiKCpmaWxlIG5hbWVzKilcblxubGV0IGlucHV0IDogc3RyaW5nIGxpc3QgcmVmID0gcmVmIFtdICgqbmFtZSBvZiB0aGUga2FwcGEgZmlsZXMqKVxubGV0IG91dHB1dCA9IHJlZiBcImRhdGEub3V0XCJcbiIsIigqKlxuICAqIGdldF9vcHRpb24ubWxcbiAgKiBvcGVua2FwcGFcbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKlxuICAqIENyZWF0aW9uOiAxOC8xMi8yMDEwXG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxKYW4gMDggMjAyMD5cbiAgKiAqXG4gICogcHJpbWl0aXZlIHRvIHBhcnNlIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm9wZW4gU3VwZXJhcmdcblxubGV0IGFjdGlvbnMgPSBcIkFjdGlvbnNcIiwgMCwgTm9uZVxubGV0IHN5bnRheCA9IFwiU3ludGF4XCIsIDEsIE5vbmVcbmxldCBvdXRwdXQgPSBcIk91dHB1dFwiLCAyLCBOb25lXG5sZXQgcmVhY2hhYmlsaXR5ID0gXCJSZWFjaGFiaWxpdHkgYW5hbHlzaXNcIiwgMywgTm9uZVxubGV0IHRyYWNlcyA9IFwiVHJhY2UgYW5hbHlzaXNcIiwgNCwgTm9uZVxubGV0IGNvbnRhY3RfbWFwID0gXCJDb250YWN0IG1hcFwiLCA1LCBOb25lXG5sZXQgaW5mbHVlbmNlX21hcCA9IFwiSW5mbHVlbmNlIG1hcFwiLCA2LCBOb25lXG5sZXQgZmxvdyA9IFwiRmxvdyBvZiBpbmZvcm1hdGlvblwiLCA3LCBOb25lXG5sZXQgZGVidWcgPSBcIkRlYnVnZ2luZyBpbmZvcm1hdGlvblwiLCA4LCBOb25lXG5cbmxldCBvcHRpb25zID1cbiAgTGlzdC5yZXZcbiAgICBbXG4gICAgICAoIFwiLS1kby1hbGxcIixcbiAgICAgICAgTXVsdGlcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCItLWNvbXB1dGUtY29udGFjdC1tYXBcIjtcbiAgICAgICAgICAgICAgXCItLWNvbXB1dGUtaW5mbHVlbmNlLW1hcFwiO1xuICAgICAgICAgICAgICBcIi0tY29tcHV0ZS1PREUtZmxvdy1vZi1pbmZvcm1hdGlvblwiO1xuICAgICAgICAgICAgICBcIi0tY29tcHV0ZS1wb3RlbnRpYWwtY3ljbGVzXCI7XG4gICAgICAgICAgICAgIFwiLS1jb21wdXRlLXN0b2NoYXN0aWMtZmxvdy1vZi1pbmZvcm1hdGlvblwiO1xuICAgICAgICAgICAgICBcIi0tY29tcHV0ZS1yZWFjaGFiaWxpdHktYW5hbHlzaXNcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSApLFxuICAgICAgICBcImxhdW5jaCBldmVyeXRoaW5nXCIsXG4gICAgICAgIFsgYWN0aW9ucywgMCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXJlc2V0LWFsbFwiLFxuICAgICAgICBNdWx0aVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIi0tbm8tY29tcHV0ZS1jb250YWN0LW1hcFwiO1xuICAgICAgICAgICAgICBcIi0tbm8tY29tcHV0ZS1pbmZsdWVuY2UtbWFwXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1jb21wdXRlLU9ERS1mbG93LW9mLWluZm9ybWF0aW9uXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1jb21wdXRlLXBvdGVudGlhbC1jeWNsZXNcIjtcbiAgICAgICAgICAgICAgXCItLW5vLWNvbXB1dGUtc3RvY2hhc3RpYy1mbG93LW9mLWluZm9ybWF0aW9uXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1jb21wdXRlLXJlYWNoYWJpbGl0eS1hbmFseXNpc1wiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdICksXG4gICAgICAgIFwibGF1bmNoIG5vdGhpbmdcIixcbiAgICAgICAgWyBhY3Rpb25zLCAxIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgXCItLXZvaWRcIiwgVm9pZCwgXCJcIiwgWyBhY3Rpb25zLCAyIF0sIE5vcm1hbDtcbiAgICAgICggXCItc3ludGF4XCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggWyBcIlYzXCIsIFwicHJldmlvdXMgdmVyc2lvblwiOyBcIlY0XCIsIFwiY3VycmVudCB2ZXJzaW9uXCIgXSxcbiAgICAgICAgICAgIFsgXCJWM1wiOyBcIlY0XCI7IFwiM1wiOyBcIjRcIjsgXCJ2M1wiOyBcInY0XCIgXSxcbiAgICAgICAgICAgIENvbmZpZy5zeW50YXhfdmVyc2lvbiApLFxuICAgICAgICBcIlZlcnNpb24gb2YgdGhlIGxleGVyL3BhcnNlclwiLFxuICAgICAgICBbIHN5bnRheCwgMTsgYWN0aW9ucywgMzAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb21wdXRlLWNvbnRhY3QtbWFwXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmRvX2NvbnRhY3RfbWFwLFxuICAgICAgICBcImNvbXB1dGUgdGhlIGNvbnRhY3QgbWFwXCIsXG4gICAgICAgIFsgYWN0aW9ucywgMjsgY29udGFjdF9tYXAsIDAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb21wdXRlLWluZmx1ZW5jZS1tYXBcIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9faW5mbHVlbmNlX21hcCxcbiAgICAgICAgXCJjb21wdXRlIHRoZSBpbmZsdWVuY2UgbWFwXCIsXG4gICAgICAgIFsgYWN0aW9ucywgMzsgaW5mbHVlbmNlX21hcCwgMCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWluZmx1ZW5jZS1tYXAtYWNjdXJhY3ktbGV2ZWxcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiSW5kaXJlY3RcIiwgXCJJZ25vcmUgZ2x1aW5nIGNvbXBhdGliaWxpdHlcIjtcbiAgICAgICAgICAgICAgXCJEaXJlY3RcIiwgXCJJZ25vcmUgcmVhY2hhYmxlIHN0YXRlc1wiO1xuICAgICAgICAgICAgICBcIlJlYWxpc2FibGVcIiwgXCJUYWtlIGludG8gYWNjb3VudCByZWFjaGFibGUgc3RhdGVzXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgWyBcIkxvd1wiOyBcIk1lZGl1bVwiOyBcIkhpZ2hcIjsgXCJGdWxsXCIgXSxcbiAgICAgICAgICAgIENvbmZpZy5pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsICksXG4gICAgICAgIFwiVHVuZSB0aGUgYWNjdXJhY3kgbGV2ZWwgb2YgdGhlIGluZmx1ZW5jZSBtYXBcIixcbiAgICAgICAgWyBpbmZsdWVuY2VfbWFwLCAxIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1PREUtZmxvdy1vZi1pbmZvcm1hdGlvblwiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbixcbiAgICAgICAgXCJDb21wdXRlIGFuIGFwcHJveGltYXRpb24gb2YgdGhlIGZsb3cgb2YgaW5mb3JtYXRpb24gaW4gdGhlIE9ERSBcXFxuICAgICAgICAgc2VtYW50aWNzXCIsXG4gICAgICAgIFsgYWN0aW9ucywgNDsgZmxvdywgNiBdLFxuICAgICAgICBFeHBlcnQgKTtcbiAgICAgICggXCItLWNvbXB1dGUtcG90ZW50aWFsLWN5Y2xlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19zY2MsXG4gICAgICAgIFwiQ29tcHV0ZSB0aGUgYm9uZHMgdGhhdCBtYXkgYmUgaW52b2x2ZWQgaW4gcG9seW1lcmlzYXRpb25cIixcbiAgICAgICAgWyBhY3Rpb25zLCA1OyBjb250YWN0X21hcCwgMSBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbXB1dGUtc3RvY2hhc3RpYy1mbG93LW9mLWluZm9ybWF0aW9uXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmRvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdGlvbixcbiAgICAgICAgXCJDb21wdXRlIGFuIGFwcHJveGltYXRpb24gb2YgdGhlIGZsb3cgb2YgaW5mb3JtYXRpb24gaW4gdGhlIHN0b2NoYXN0aWMgXFxcbiAgICAgICAgIHNlbWFudGljc1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDY7IGZsb3csIDYgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1jb21wdXRlLXJlYWNoYWJpbGl0eS1hbmFseXNpc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXMsXG4gICAgICAgIFwiQ29tcHV0ZSBhbiBhcHByb3hpbWF0aW9uIG9mIHRoZSBzdGF0ZXMgb2YgYWdlbnQgc2l0ZXNcIixcbiAgICAgICAgWyBhY3Rpb25zLCA3OyByZWFjaGFiaWxpdHksIDAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1lbmFibGUtZXZlcnktZG9tYWluXCIsXG4gICAgICAgIE11bHRpXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiLS1jb250YWN0LW1hcC1kb21haW5cIjtcbiAgICAgICAgICAgICAgXCJkeW5hbWljXCI7XG4gICAgICAgICAgICAgIFwiLS12aWV3cy1kb21haW5cIjtcbiAgICAgICAgICAgICAgXCItLWRvdWJsZS1ib25kcy1kb21haW5cIjtcbiAgICAgICAgICAgICAgXCItLXNpdGVzLWFjcm9zcy1ib25kcy1kb21haW5cIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSApLFxuICAgICAgICBcImVuYWJsZSBldmVyeSBhYnN0cmFjdCBkb21haW5cIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDEgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1kaXNhYmxlLWV2ZXJ5LWRvbWFpblwiLFxuICAgICAgICBNdWx0aVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIi0tY29udGFjdC1tYXAtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwic3RhdGljXCI7XG4gICAgICAgICAgICAgIFwiLS1uby12aWV3cy1kb21haW5cIjtcbiAgICAgICAgICAgICAgXCItLW5vLWRvdWJsZS1ib25kcy1kb21haW5cIjtcbiAgICAgICAgICAgICAgXCItLW5vLXNpdGVzLWFjcm9zcy1ib25kcy1kb21haW5cIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSApLFxuICAgICAgICBcImRpc2FibGUgZXZlcnkgYWJzdHJhY3QgZG9tYWluXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAyIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29udGFjdC1tYXAtZG9tYWluXCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICAoIFwic3RhdGljXCIsXG4gICAgICAgICAgICAgICAgXCJWZXJ5IGNvYXJzZSBzdGF0aWMgYWJzdHJhY3Rpb246IGV2ZXJ5IGJvbmQgdGhhdCBvY2N1cnMgaW4gXFxcbiAgICAgICAgICAgICAgICAgaW5pdGlhbCBzdGF0ZXMgYW5kIHJocyBvZiBydWxlcyBpcyBjb25zaWRlcmVkXCIgKTtcbiAgICAgICAgICAgICAgKCBcImR5bmFtaWNcIixcbiAgICAgICAgICAgICAgICBcIk1vcmUgYWNjdXJhdGUgYWJzdHJhY3Rpb246IG9ubHkgdGhlIGJvbmRzIHRoYXQgb2NjdXIgaW4gdGhlIFxcXG4gICAgICAgICAgICAgICAgIGluaXRpYWwgc3RhdGUgb3IgYSBydWxlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBhcHBsaWVkIFxcXG4gICAgICAgICAgICAgICAgIHN1Y2Nlc3NmdWxseSwgYXJlIGNvbnNpZGVyZWRcIiApO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLndpdGhfZHluYW1pY19jb250YWN0X21hcCApLFxuICAgICAgICBcImNvbnRhY3QgbWFwIGRvbWFpbiBpcyB1c2VkIHRvIG92ZXItYXBwcm94aW1hdGUgc2lkZS1lZmZlY3RzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAzIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tdmlld3MtZG9tYWluXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLndpdGhfdmlld3NfYW5hbHlzaXMsXG4gICAgICAgIFwiZW5hYmxlIGxvY2FsIHZpZXdzIGFuYWx5c2lzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCA0IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY291bnRlcnMtZG9tYWluXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLndpdGhfY291bnRlcnNfYW5hbHlzaXMsXG4gICAgICAgIFwiZW5hYmxlIGNvdW50ZXIgYW5hbHlzaXNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDUgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb3VudGVycy1hY2N1cmFjeVwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCJub24tcmVsYXRpb25hbFwiLCBcIkxvd2VyIGFuZCB1cHBlciBib3VuZHMgZm9yIGVhY2ggdmFyaWFibGVcIjtcbiAgICAgICAgICAgICAgKCBcIm9jdGFnb25zXCIsXG4gICAgICAgICAgICAgICAgXCJMb3dlciBhbmQgdXBwZXIgYm91bmRzIGZvciBlYWNoIHZhcmlhYmxlLCAgYW4gZWFjaCBzdW0gYW5kIFxcXG4gICAgICAgICAgICAgICAgIGVhY2ggZGlmZmVyZW5jZSBhbW9uZyB0d28gdmFyaWFibGVzXCIgKTtcbiAgICAgICAgICAgICAgKCBcIm1pXCIsXG4gICAgICAgICAgICAgICAgXCJBcHByb3hpbWF0ZSByZWR1Y2VkIHByb2R1Y3QgYmV0d2VlbiBpbnRlcnZhbHMgYW5kIGFmZmluZSBcXFxuICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzXCIgKTtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFwib2N0XCI7XG4gICAgICAgICAgICAgIFwib2N0b1wiO1xuICAgICAgICAgICAgICBcIm9jdGFnb25cIjtcbiAgICAgICAgICAgICAgXCJNSVwiO1xuICAgICAgICAgICAgICBcIk1pXCI7XG4gICAgICAgICAgICAgIFwiT2N0XCI7XG4gICAgICAgICAgICAgIFwiT2N0b1wiO1xuICAgICAgICAgICAgICBcIk9jdGFnb25cIjtcbiAgICAgICAgICAgICAgXCJPY3RhZ29uc1wiO1xuICAgICAgICAgICAgICBcIm5vbi1yZWxhdGlvbmFsXCI7XG4gICAgICAgICAgICAgIFwibnJcIjtcbiAgICAgICAgICAgICAgXCJub24tcmVsXCI7XG4gICAgICAgICAgICAgIFwibm9uX3JlbFwiO1xuICAgICAgICAgICAgICBcIm5vbl9yZWxhdGlvbmFsXCI7XG4gICAgICAgICAgICAgIFwiTm9uLXJlbGF0aW9uYWxcIjtcbiAgICAgICAgICAgICAgXCJOclwiO1xuICAgICAgICAgICAgICBcIk5vbi1yZWxcIjtcbiAgICAgICAgICAgICAgXCJOb25fcmVsXCI7XG4gICAgICAgICAgICAgIFwiTm9uX3JlbGF0aW9uYWxcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBDb25maWcuY291bnRlcl9hbmFseXNpc19kb21haW4gKSxcbiAgICAgICAgXCJBYnN0cmFjdCBkb21haW4gZm9yIGNvdW50ZXIgYW5hbHlzaXNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDYgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1kb3VibGUtYm9uZHMtZG9tYWluXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLndpdGhfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXMsXG4gICAgICAgIFwiZW5hYmxlIGRvdWJsZSBib25kcyBhbmFseXNpc1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgNyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXNpdGVzLWFjcm9zcy1ib25kcy1kb21haW5cIixcbiAgICAgICAgQm9vbCBDb25maWcud2l0aF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcyxcbiAgICAgICAgXCJlbmFibGUgdGhlIGFuYWx5c2lzIG9mIHRoZSByZWxhdGlvbiBhbW9uZyB0aGUgc3RhdGVzIG9mIHNpdGVzIGluIFxcXG4gICAgICAgICBjb25uZWN0ZWQgYWdlbnRzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCA4IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tc2l0ZXMtYWNjcm9zcy1ib25kcy1kb21haW5cIixcbiAgICAgICAgQm9vbCBDb25maWcud2l0aF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcyxcbiAgICAgICAgXCJlbmFibGUgdGhlIGFuYWx5c2lzIG9mIHRoZSByZWxhdGlvbiBhbW9uZyB0aGUgc3RhdGVzIG9mIHNpdGVzIGluIFxcXG4gICAgICAgICBjb25uZWN0ZWQgYWdlbnRzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCA4IF0sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1zeW1tZXRyaWVzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmRvX3N5bW1ldHJpZXMsXG4gICAgICAgIFwiTG9vayB1cCBmb3IgcGFpcnMgb2Ygc3ltbWV0cmljIHNpdGVzXCIsXG4gICAgICAgIFsgYWN0aW9ucywgOCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXZlcmJvc2l0eS1sZXZlbC1mb3Itdmlldy1hbmFseXNpc1wiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCJNdXRlXCIsIFwiTm8gaW5mb3JtYXRpb24gZGlzcGxheWVkXCI7XG4gICAgICAgICAgICAgIFwiTG93XCIsIFwiU2hvdyBhbmFseXNpcyByZXN1bHQgb25seVwiO1xuICAgICAgICAgICAgICBcIk1lZGl1bVwiLCBcIkFsc28gc2hvdyB3aGljaCBydWxlcyBhcmUgYXBwbGllZFwiO1xuICAgICAgICAgICAgICBcIkhpZ2hcIiwgXCJBbHNvIHNob3cgd2hlbiBuZXcgdmlld3MgYXJlIGRpc2NvdmVyZWRcIjtcbiAgICAgICAgICAgICAgXCJGdWxsXCIsIFwiQWxzbyBzaG93IHdoaWNoIHJ1bGVzIGFyZSBwdXQgaW4gdGhlIHdvcmtpbmcgbGlzdFwiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLnZlcmJvc2l0eV9sZXZlbF9mb3JfcmVhY2hhYmlsaXR5X2FuYWx5c2lzICksXG4gICAgICAgIFwiVHVuZSB0aGUgdmVyYm9zaXR5IGxldmVsIGZvciB0aGUgdmlldyBhbmFseXNpc1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgOSBdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLXZlcmJvc2l0eS1sZXZlbC1mb3ItcmVhY2hhYmlsaXR5LWFuYWx5c2lzXCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIk11dGVcIiwgXCJObyBpbmZvcm1hdGlvbiBkaXNwbGF5ZWRcIjtcbiAgICAgICAgICAgICAgXCJMb3dcIiwgXCJTaG93IGFuYWx5c2lzIHJlc3VsdCBvbmx5XCI7XG4gICAgICAgICAgICAgIFwiTWVkaXVtXCIsIFwiQWxzbyBzaG93IHdoaWNoIHJ1bGVzIGFyZSBhcHBsaWVkXCI7XG4gICAgICAgICAgICAgIFwiSGlnaFwiLCBcIkFsc28gc2hvdyB3aGVuIHBhdHRlcm5zIGFyZSBkaXNjb3ZlcmVkXCI7XG4gICAgICAgICAgICAgIFwiRnVsbFwiLCBcIkFsc28gc2hvdyB3aGljaCBydWxlcyBhcmUgcHV0IGluIHRoZSB3b3JraW5nIGxpc3RcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy52ZXJib3NpdHlfbGV2ZWxfZm9yX3JlYWNoYWJpbGl0eV9hbmFseXNpcyApLFxuICAgICAgICBcIlR1bmUgdGhlIHZlcmJvc2l0eSBsZXZlbCBmb3IgdGhlIHJlYWNoYWJpbGl0eSBhbmFseXNpc1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgMTAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1oaWRlLW9uZS1kLXJlbGF0aW9ucy1mcm9tLWNhcnRlc2lhbi1kZWNvbXBvc2l0aW9uXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmhpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb24sXG4gICAgICAgIFwiRmlsdGVyIG91dCAxLWQgcmVsYXRpb25zIGZyb20gdGhlIENhcnRlc2lhbiBkZWNvbXBvc2l0aW9uXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAxMSBdLFxuICAgICAgICBEZXZlbG9wcGVyICk7XG4gICAgICAoIFwiLS1zbWFzaC1yZWxhdGlvbnNcIixcbiAgICAgICAgQm9vbCBDb25maWcuc21hc2hfcmVsYXRpb25zLFxuICAgICAgICBcIlJlY29tYmluZSByZWxhdGlvbnMgdG8gZ2V0IGEgbW9yZSBwcmVjaXNlICYgY29tcGFjdCBvdXRwdXRcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDEyIF0sXG4gICAgICAgIERldmVsb3BwZXIgKTtcbiAgICAgICggXCItLW91dHB1dC1tb2RlLWZvci1yZWFjaGFiaWxpdHktYW5hbHlzaXNcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwicmF3XCIsIFwibm8gcG9zdC1wcm9jZXNzaW5nXCI7XG4gICAgICAgICAgICAgIFwia2FwcGFcIiwgXCJrYXBwYSBtb2RlXCI7XG4gICAgICAgICAgICAgIFwiZW5nbGlzaFwiLCBcIm5hdHVyYWwgbGFuZ3VhZ2VcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy51c2VfbmF0dXJhbF9sYW5ndWFnZSApLFxuICAgICAgICBcInBvc3QtcHJvY2VzcyByZWxhdGlvbiBhbmQgb3V0cHV0IHRoZSByZXN1bHQgaW4gdGhlIGNob3NlbiBmb3JtYXRcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDEzIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1sb2NhbC10cmFjZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuY29tcHV0ZV9sb2NhbF90cmFjZXMsXG4gICAgICAgIFwiQ29tcHV0ZSB0aGUgbG9jYWwgdHJhY2VzIG9mIGludGVyZXN0aW5nIHBhcnRzIG9mIGFnZW50IGludGVyZmFjZXNcIixcbiAgICAgICAgWyBhY3Rpb25zLCA5OyB0cmFjZXMsIDAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1zaG93LXJ1bGUtbmFtZXMtaW4tbG9jYWwtdHJhY2VzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXMsXG4gICAgICAgIFwiQW5ub3RhdGUgZWFjaCB0cmFuc2l0aW9uIHdpdGggdGhlIG5hbWUgb2YgdGhlIHJ1bGVzIGluIHRyYWNlIFxcXG4gICAgICAgICBhYnN0cmFjdGlvblwiLFxuICAgICAgICBbIHRyYWNlcywgMSBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXVzZS1tYWNyb3RyYW5zaXRpb25zLWluLWxvY2FsLXRyYWNlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy51c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXMsXG4gICAgICAgIFwiVXNlIG1hY3JvdHJhbnNpdGlvbnMgdG8gZ2V0IGEgY29tcGFjdCB0cmFjZSB1cCB0byBjaGFuZ2Ugb2YgdGhlIFxcXG4gICAgICAgICBpbnRlcmxlYXZpbmcgb3JkZXIgb2YgY29tbXV0aW5nIG1pY3JvdHJhbnNpdGlvbnNcIixcbiAgICAgICAgWyB0cmFjZXMsIDIgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1pZ25vcmUtdHJpdmlhbC1sb3Nhbmdlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19ub3RfY29tcHJlc3NfdHJpdmlhbF9sb3NhbmdlcyxcbiAgICAgICAgXCJEbyBub3QgdXNlIG1hY3JvdHJhbnNpdGlvbnMgZm9yIHNpbXBsaWZ5aW5nIHRyaXZpYWwgbG9zYW5nZXNcIixcbiAgICAgICAgWyB0cmFjZXMsIDMgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1hZGQtc2luZ3VsYXItbWFjcm9zdGF0ZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzLFxuICAgICAgICBcIkNvbXBsZXRlIHRoZSBzaW1wbGljaWFsIGNvbXBsZXhlcyB3aXRoIHNpbmd1bGFyIGludGVyc2VjdGlvbiBvZiBcXFxuICAgICAgICAgaGlnaGVyLWRpbWVuc2lvbiBmYWNlc1wiLFxuICAgICAgICBbIHRyYWNlcywgNCBdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWFkZC1zaW5ndWxhci1taWNyb3N0YXRlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXMsXG4gICAgICAgIFwiQ29tcGxldGUgdGhlIHNpbXBsaWNpYWwgY29tcGxleGVzIHdpdGggc2luZ3VsYXIgaW50ZXJzZWN0aW9uIG9mIFxcXG4gICAgICAgICBoaWdoZXItZGltZW5zaW9uIGZhY2VzXCIsXG4gICAgICAgIFsgdHJhY2VzLCA1IF0sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1zZXBhcmF0aW5nLXRyYW5zaXRpb25zXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyxcbiAgICAgICAgXCJDb21wdXRlIHRoZSB0cmFuc2l0aW9ucyB0aGF0IHNlcGFyYXRlcyBzdHJvbmdseSBjb25uZWN0ZWQgc2V0IG9mIFxcXG4gICAgICAgICBjb25maWd1cmF0aW9uc1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDEwOyB0cmFjZXMsIDYgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1vdXRwdXQtZGlyZWN0b3J5XCIsXG4gICAgICAgIE11bHRpRXh0XG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCItLW91dHB1dC1jb250YWN0LW1hcC1kaXJlY3RvcnlcIiwgXCJcIjtcbiAgICAgICAgICAgIFwiLS1vdXRwdXQtaW5mbHVlbmNlLW1hcC1kaXJlY3RvcnlcIiwgXCJcIjtcbiAgICAgICAgICAgIFwiLS1vdXRwdXQtbG9jYWwtdHJhY2VzLWRpcmVjdG9yeVwiLCBcIlwiO1xuICAgICAgICAgICAgXCItLW91dHB1dC1sb2ctZGlyZWN0b3J5XCIsIFwiXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgXCJEZWZhdWx0IHJlcG9zaXRvcnkgZm9yIG91dHB1dHNcIixcbiAgICAgICAgWyBvdXRwdXQsIDAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoKiBDT05UQUNUIE1BUCAqKVxuICAgICAgKCBcIi0tb3V0cHV0LWNvbnRhY3QtbWFwLWRpcmVjdG9yeVwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLm91dHB1dF9jbV9kaXJlY3RvcnksXG4gICAgICAgIFwicHV0IHRoZSBjb250YWN0IG1hcCBmaWxlIGluIHRoaXMgZGlyZWN0b3J5XCIsXG4gICAgICAgIFsgb3V0cHV0LCAwOyBjb250YWN0X21hcCwgMyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLW91dHB1dC1jb250YWN0LW1hcFwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLmNvbnRhY3RfbWFwX2ZpbGUsXG4gICAgICAgIFwiZmlsZSBuYW1lIGZvciB0aGUgY29udGFjdCBtYXAgb3V0cHV0XCIsXG4gICAgICAgIFsgb3V0cHV0LCAxOyBjb250YWN0X21hcCwgNCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbnRhY3QtbWFwLWZvcm1hdFwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCJET1RcIiwgXCJkb3QgZm9ybWF0XCI7XG4gICAgICAgICAgICAgIFwiR0VQSElcIiwgXCJHZXBoaSBmb3JtYXRcIjtcbiAgICAgICAgICAgICAgKCpcIkhUTUxcIixcIkhUTUwgZm9ybWF0XCIqKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLmNvbnRhY3RfbWFwX2Zvcm1hdCApLFxuICAgICAgICBcIlR1bmUgdGhlIG91dHB1dCBmb3JtYXQgZm9yIHRoZSBjb250YWN0IG1hcFwiLFxuICAgICAgICBbIG91dHB1dCwgMjsgY29udGFjdF9tYXAsIDUgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb250YWN0LW1hcC1hY2N1cmFjeS1sZXZlbFwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCJMb3dcIiwgXCJDb2xsZWN0IGluZm8gZnJvbSByaHMgb2YgcnVsZXMgYW5kIGluaXRpYWwgc3RhdGVcIjtcbiAgICAgICAgICAgICAgXCJIaWdoXCIsIFwiT25seSBjb25zaWRlciByZWFjaGFibGUgcnVsZXNcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy5jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCApLFxuICAgICAgICBcIlR1bmUgdGhlIGFjY3VyYWN5IGxldmVsIG9mIHRoZSBjb250YWN0IG1hcFwiLFxuICAgICAgICBbIGNvbnRhY3RfbWFwLCA2IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tcG9seW1lci1kZXRlY3Rpb24tYWNjdXJhY3ktbGV2ZWxcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiTG93XCIsIFwiYmFzZWQgb25seSBvbiB0aGUgY29udGFjdCBtYXBcIjtcbiAgICAgICAgICAgICAgXCJIaWdoXCIsIFwidXNlIHJlYWNoYWJpbGl0eSBhbmFseXNpcyBhcyB3ZWxsXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcuc2NjX2FjY3VyYWN5X2xldmVsICksXG4gICAgICAgIFwiVHVuZSB0aGUgYWNjdXJhY3kgbGV2ZWwgb2YgdGhlIGRldGVjdGlvbiBvZiBwb2x5bWVyc1wiLFxuICAgICAgICBbIGNvbnRhY3RfbWFwLCA3IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tcHVyZS1jb250YWN0XCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnB1cmVfY29udGFjdCxcbiAgICAgICAgXCJzaG93IGluIHRoZSBjb250YWN0IG1hcCAgb25seSB0aGUgc2l0ZXMgd2l0aCBhIGJpbmRpbmcgc3RhdGVcIixcbiAgICAgICAgWyBjb250YWN0X21hcCwgOCBdLFxuICAgICAgICBFeHBlcnQgKTtcbiAgICAgICgqIElORkxVRU5DRSBNQVAgKilcbiAgICAgICggXCItLW91dHB1dC1pbmZsdWVuY2UtbWFwLWRpcmVjdG9yeVwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLm91dHB1dF9pbV9kaXJlY3RvcnksXG4gICAgICAgIFwicHV0IHRoZSBpbmZsdWVuY2UgbWFwIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnlcIixcbiAgICAgICAgWyBvdXRwdXQsIDM7IGluZmx1ZW5jZV9tYXAsIDIgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1vdXRwdXQtaW5mbHVlbmNlLW1hcFwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLmluZmx1ZW5jZV9tYXBfZmlsZSxcbiAgICAgICAgXCJmaWxlIG5hbWUgZm9yIHRoZSBpbmZsdWVuY2UgbWFwXCIsXG4gICAgICAgIFsgb3V0cHV0LCAzOyBpbmZsdWVuY2VfbWFwLCAzIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0taW5mbHVlbmNlLW1hcC1mb3JtYXRcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbIFwiRE9UXCIsIFwiZG90IGZvcm1hdFwiOyBcIkRJTVwiLCBcIkRJTSBmb3JtYXRcIjsgXCJIVE1MXCIsIFwiSFRNTCBmb3JtYXRcIiBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcuaW5mbHVlbmNlX21hcF9mb3JtYXQgKSxcbiAgICAgICAgXCJUdW5lIHRoZSBvdXRwdXQgZm9ybWF0IGZvciB0aGUgaW5mbHVlbmNlIG1hcFwiLFxuICAgICAgICBbIG91dHB1dCwgNDsgaW5mbHVlbmNlX21hcCwgNCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICgqIExPQ0FMIFRSQUNFUyAqKVxuICAgICAgKCBcIi0tb3V0cHV0LWxvY2FsLXRyYWNlcy1kaXJlY3RvcnlcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5vdXRwdXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5LFxuICAgICAgICBcInB1dCB0aGUgZmlsZXMgYWJvdXQgbG9jYWwgdHJhY2VzIGluIHRoaXMgZGlyZWN0b3J5XCIsXG4gICAgICAgIFsgb3V0cHV0LCA1OyB0cmFjZXMsIDcgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1sb2NhbC10cmFjZXMtZm9ybWF0XCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggWyBcIkRPVFwiLCBcImRvdCBmb3JtYXRcIjsgXCJIVE1MXCIsIFwiSFRNTCBmb3JtYXRcIiBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcubG9jYWxfdHJhY2VfZm9ybWF0ICksXG4gICAgICAgIFwiVHVuZSB0aGUgb3V0cHV0IGZvcm1hdCBmb3IgdGhlIGxvY2FsIHRyYW5zaXRpb24gc3lzdGVtc1wiLFxuICAgICAgICBbIG91dHB1dCwgNjsgdHJhY2VzLCA4IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCogTE9HICopXG4gICAgICAoIFwiLS1vdXRwdXQtbG9nLWRpcmVjdG9yeVwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLm91dHB1dF9kaXJlY3RvcnksXG4gICAgICAgIFwicHV0IHRoZSBsb2cgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnlcIixcbiAgICAgICAgWyBvdXRwdXQsIDc7IGRlYnVnLCAwIF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tZGVidWdcIixcbiAgICAgICAgQm9vbCBDb25maWcudHJhY2UsXG4gICAgICAgIFwiZHVtcCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb25cIixcbiAgICAgICAgWyBkZWJ1ZywgMSBdLFxuICAgICAgICBFeHBlcnQgKTtcbiAgICAgICggXCItLWRlYnVnLW1vZGVcIixcbiAgICAgICAgQm9vbCBDb25maWcudHJhY2UsXG4gICAgICAgIFwiZHVtcCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb25cIixcbiAgICAgICAgWyBkZWJ1ZywgMiBdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWRlYnVnZ2luZy1tb2RlXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnRyYWNlLFxuICAgICAgICBcImR1bXAgZGVidWdnaW5nIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIFsgZGVidWcsIDMgXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS11bnNhZmUtbW9kZVwiLFxuICAgICAgICBCb29sIENvbmZpZy51bnNhZmUsXG4gICAgICAgIFwiZXhjZXB0aW9ucyBhcmUgZ2F0aGVyZWQgYXQgdGhlIGVuZCBvZiB0aGUgY29tcHV0YXRpb24sIGluc3RlYWQgb2YgXFxcbiAgICAgICAgIGhhbHRpbmcgaXQgXCIsXG4gICAgICAgIFsgZGVidWcsIDQgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1wcmludC1lZmZpY2llbmN5XCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnByaW50X2VmZmljaWVuY3ksXG4gICAgICAgIFwicHJvbXB0IENQVSB0aW1lIGFuZCB2YXJpb3VzIGRhdGFzXCIsXG4gICAgICAgIFsgZGVidWcsIDUgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1ydWxlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXMsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIHJ1bGVzXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtbmJyLWNvbnN0cmFpbnRzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmJhY2tkb29yX25icl9vZl9jb25zdHJhaW50cyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2YgcmVmaW5lbWVudCBjb25zdHJhaW50c1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1uci1jb25zdHJhaW50c1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHMsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIG5vbiByZWxhdGlvbmFsIHJlZmluZW1lbnQgY29uc3RyYWludHNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItaW5mbHVlbmNlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2YgaW5mbHVlbmNlIHJlbGF0aW9uc1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1kZWFkLXJ1bGVzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzLFxuICAgICAgICBcImR1bXAgdGhlIG51bWJlciBvZiBkZWFkIHJ1bGVzXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtbmJyLW5vbi13ZWFrbHktcmV2ZXJzaWJsZS10cmFuc2l0aW9uc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zLFxuICAgICAgICBcImR1bXAgdGhlIG51bWJlciBvZiBub24gd2Vha2x5IHJldmVyc2libGUgdHJhbnNpdGlvbnNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItb2YtcnVsZXMtd2l0aC1ub24td2Vha2x5LXJldmVyc2libGUtdHJhbnNpdGlvbnNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zLFxuICAgICAgICBcImR1bXAgdGhlIG51bWJlciBvZiBydWxlcyB3aXRoIG5vbiB3ZWFrbHkgcmV2ZXJzaWJsZSB0cmFuc2l0aW9uc1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1zY2NcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX3NjYyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2Ygc3Ryb25nbHkgY29ubmVjdGVkIGNvbXBvbmVudHNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1hdmVyYWdlLXNjY1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjLFxuICAgICAgICBcImR1bXAgdGhlIGF2ZXJhZ2Ugc2l6ZSBvZiBzdHJvbmdseSBjb25uZWN0ZWQgY29tcG9uZW50c1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLXRpbWluZ1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl90aW1pbmcsXG4gICAgICAgIFwiZHVtcCBDUFUgdGltZVwiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1maWxlXCIsXG4gICAgICAgIFN0cmluZyBDb25maWcuYmFja2Rvb3JfZmlsZSxcbiAgICAgICAgXCJzZWxlY3QgdGhlIGZpbGUgdG8gZHVtcCBiYWNrZG9vciBpbmZvcm1hdGlvblwiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kaXJlY3RvcnlcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5iYWNrZG9vcl9kaXJlY3RvcnksXG4gICAgICAgIFwic2VsZWN0IHRoZSBkaXJlY3RvcnkgZm9yIHRoZSBmaWxlIHRvIGR1bXAgYmFja2Rvb3IgaW5mb3JtYXRpb25cIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgIF1cblxubGV0IGdldF9vcHRpb24gZXJyb3IgPVxuICBsZXQgdGl0bGUgPSBWZXJzaW9uLnZlcnNpb25fa2FzYV9mdWxsX25hbWUgaW5cbiAgbGV0ICgpID0gU3VwZXJhcmdUay5wYXJzZSB+dGl0bGUgb3B0aW9ucyBGaWxlTmFtZXMuaW5wdXQgaW5cbiAgbGV0IHBhcmFtZXRlcnMgPVxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3BhcmFtZXRlcnMgfmNhbGxlZF9mcm9tOlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthU2FcbiAgICAgICgpXG4gIGluXG4gIGVycm9yLCBwYXJhbWV0ZXJzLCAhRmlsZU5hbWVzLmlucHV0XG4iLCIoKipcbiAqIGV4Y2VwdGlvbi5tbFxuICogb3BlbmthcHBhXG4gKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAqXG4gKiBDcmVhdGlvbjogMDgvMDMvMjAxMFxuICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxBdWcgMTUgMjAxNj5cbiAqICpcbiAqIFRoaXMgbGlicmFyeSBkZWNsYXJlcyBleGNlcHRpb25zXG4gKlxuICogQ29weXJpZ2h0IDIwMTAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgbWV0aG9kX2hhbmRsZXIgPSBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIubWV0aG9kX2hhbmRsZXJcblxubGV0IGVtcHR5X2Vycm9yX2hhbmRsZXIgPSBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZW1wdHlfZXJyb3JfaGFuZGxlclxubGV0IGlzX2VtcHR5X2Vycm9yX2hhbmRsZXIgPSBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuaXNfZW1wdHlfZXJyb3JfaGFuZGxlclxuXG5sZXQgc2FmZV93YXJuIHBhcmFtZXRlcnMgX2Vycm9yX2hhbmRsZXIgZmlsZV9uYW1lIG1lc3NhZ2UgZXhuIF9kZWZhdWx0ID1cbiAgbGV0IHVuY2F1Z2h0ID1cbiAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uID9maWxlX25hbWUgP21lc3NhZ2UgZXhuXG4gIGluXG4gIGxldCBzdHJpbmdsaXN0ID1cbiAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuc3RyaW5nbGlzdF9vZl91bmNhdWdodCB1bmNhdWdodFxuICAgICAgWyBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXggcGFyYW1ldGVycyBdXG4gIGluXG4gIGxldCBfID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChMb2dnZXJzLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSBcIiVzXCIpXG4gICAgICBzdHJpbmdsaXN0XG4gIGluXG4gIGxldCBfID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgaW5cbiAgcmFpc2UgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5VbmNhdWdodF9leGNlcHRpb24gdW5jYXVnaHQpXG5cbmxldCB1bnNhZmVfd2FybiBfcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSBmaWxlX25hbWUgbWVzc2FnZSBleG4gZGVmYXVsdCA9XG4gIGxldCB1bmNhdWdodCA9XG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvbiA/ZmlsZV9uYW1lID9tZXNzYWdlIGV4blxuICBpblxuICAoIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5hZGRfdW5jYXVnaHRfZXJyb3IgdW5jYXVnaHQgP3RvX3VpIGVycm9yX2hhbmRsZXIsXG4gICAgZGVmYXVsdCAoKSApXG5cbmxldCB3YXJuX2F1eCBwYXJhbWV0ZXJzIGVycm9yX2hhbmRsZXIgP3RvX3VpIGZpbGUgbWVzc2FnZSBleG4gZGVmYXVsdCA9XG4gIGxldCBlcnJvciwgZGZ0ID1cbiAgICBpZiBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF91bnNhZmUgcGFyYW1ldGVycyB0aGVuXG4gICAgICB1bnNhZmVfd2FybiBwYXJhbWV0ZXJzIGVycm9yX2hhbmRsZXIgP3RvX3VpIGZpbGUgbWVzc2FnZSBleG4gZGVmYXVsdFxuICAgIGVsc2VcbiAgICAgIHNhZmVfd2FybiBwYXJhbWV0ZXJzIGVycm9yX2hhbmRsZXIgZmlsZSBtZXNzYWdlIGV4biBkZWZhdWx0XG4gIGluXG4gIGxldCAoKSA9IFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9lcnJvcl9saXN0IHBhcmFtZXRlcnMgZXJyb3IgaW5cbiAgZXJyb3IsIGRmdFxuXG5sZXQgd2Fybl93aXRoX2V4biBwYXJhbWV0ZXJzIGVycm9yX2hhbmRsZXIgP3RvX3VpIChmaWxlLCBsaW5lLCBfLCBfKVxuICAgID8obWVzc2FnZSA9IFwiXCIpID8ocG9zID0gTm9uZSkgZXhuIGRlZmF1bHQgPVxuICBsZXQgbGlhaXNvbiA9XG4gICAgaWYgbWVzc2FnZSA9IFwiXCIgJiYgcG9zID0gTm9uZSB0aGVuXG4gICAgICBcIlwiXG4gICAgZWxzZVxuICAgICAgXCI6IFwiXG4gIGluXG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgcyAtPiBcIiwgXCIgXiBMb2MudG9fc3RyaW5nIHNcbiAgaW5cbiAgd2Fybl9hdXggcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSAoU29tZSBmaWxlKVxuICAgIChTb21lIChcImxpbmUgXCIgXiBzdHJpbmdfb2ZfaW50IGxpbmUgXiBwb3MgXiBsaWFpc29uIF4gbWVzc2FnZSkpXG4gICAgZXhuIGRlZmF1bHRcblxubGV0IHdhcm4gcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSBmaWxlX2xpbmUgPyhtZXNzYWdlID0gXCJcIikgP3BvcyBleG5cbiAgICBkZWZhdWx0ID1cbiAgd2Fybl93aXRoX2V4biBwYXJhbWV0ZXJzIGVycm9yX2hhbmRsZXIgP3RvX3VpIGZpbGVfbGluZSB+bWVzc2FnZSB+cG9zIGV4blxuICAgIChmdW4gKCkgLT4gZGVmYXVsdClcblxubGV0IHByaW50X2Zvcl9LYVNpbSBwYXJhbWV0ZXJzIGhhbmRsZXJzID1cbiAgbGV0IHBhcmFtZXRlcnMgPSBSZW1hbmVudF9wYXJhbWV0ZXJzLnVwZGF0ZV9wcmVmaXggcGFyYW1ldGVycyBcImVycm9yOiBcIiBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIGNhdWdodCAtPlxuICAgICAgICBsZXQgc3RyaW5nbGlzdCA9XG4gICAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnNcbiAgICAgICAgICA6OiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuc3RyaW5nbGlzdF9vZl9jYXVnaHQgY2F1Z2h0IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBfID1cbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChMb2dnZXJzLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSBcIiVzXCIpXG4gICAgICAgICAgICBzdHJpbmdsaXN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBfID1cbiAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICBpblxuICAgICAgICAoKSlcbiAgICAgIChMaXN0LnJldlxuICAgICAgICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzKSlcbiAgaW5cbiAgbGV0IF8gPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biB1bmNhdWdodCAtPlxuICAgICAgICBsZXQgc3RyaW5nbGlzdCA9XG4gICAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnNcbiAgICAgICAgICA6OiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuc3RyaW5nbGlzdF9vZl91bmNhdWdodCB1bmNhdWdodCBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCIlc1wiKVxuICAgICAgICAgICAgc3RyaW5nbGlzdFxuICAgICAgICBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgaW5cbiAgICAgICAgKCkpXG4gICAgICAoTGlzdC5yZXZcbiAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzKSlcbiAgaW5cbiAgKClcblxubGV0IHByaW50IHBhcmFtZXRlcnMgaGFuZGxlcnMgPVxuICBpZlxuICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzID0gW11cbiAgICAmJiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzID0gW11cbiAgdGhlbiAoXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgIFwiJXNleGVjdXRpb24gZmluaXNoZWQgd2l0aG91dCBhbnkgZXhjZXB0aW9uXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgaW5cbiAgICAoKVxuICApIGVsc2UgKFxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICBcIiVzU29tZSBleGNlcHRpb25zIGhhdmUgYmVlbiByYWlzZWRcIlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnMpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICBpblxuICAgIHByaW50X2Zvcl9LYVNpbSBwYXJhbWV0ZXJzIGhhbmRsZXJzXG4gIClcblxubGV0IHByaW50X2Vycm9yc19saWdodF9mb3Jfa2FzaW0gcGFyYW1ldGVycyBoYW5kbGVycyA9XG4gIGlmXG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3QgaGFuZGxlcnMgPSBbXVxuICAgICYmIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3QgaGFuZGxlcnMgPSBbXVxuICB0aGVuXG4gICAgKClcbiAgZWxzZSAoXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgIFwiJXNTb21lIGV4Y2VwdGlvbnMgaGF2ZSBiZWVuIHJhaXNlZCBkdXJpbmcgdGhlIHN0YXRpYyBhbmFseXNpcywgcGxlYXNlIFxcXG4gICAgICAgICBhbmFseXNlIHlvdXIgZmlsZSB3aXRoIEthU2FcIlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnMpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICBpblxuICAgICgpXG4gIClcblxubGV0IHdyYXAgcGFyYW1ldGVycyBlcnJvciBzdHJpbmcgc3RyaW5nX29wdCBleG4gPVxuICBmc3QgKHdhcm5fYXV4IHBhcmFtZXRlcnMgZXJyb3IgKFNvbWUgc3RyaW5nKSBzdHJpbmdfb3B0IGV4biAoZnVuICgpIC0+ICgpKSlcblxubGV0IF9saWZ0X2Vycm9yX2xvZ3NfZm9yX0thU2EgZiA9XG4gIGYgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIHN0cmluZyBzdHJpbmdfb3B0IGV4biAtPlxuICAgICAgZnN0XG4gICAgICAgICh3YXJuX2F1eCBwYXJhbWV0ZXJzIGVycm9yIChTb21lIHN0cmluZykgc3RyaW5nX29wdCBleG4gKGZ1biAoKSAtPiAoKSkpKVxuXG5sZXQgY2hlY2tfcG9pbnRcbiAgICAod2FybiA6XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgICBtZXRob2RfaGFuZGxlciAtPlxuICAgICAgP3RvX3VpOmJvb2wgLT5cbiAgICAgICdhIC0+XG4gICAgICA/bWVzc2FnZTpzdHJpbmcgLT5cbiAgICAgID9wb3M6TG9jLnQgLT5cbiAgICAgIGV4biAtPlxuICAgICAgdW5pdCAtPlxuICAgICAgbWV0aG9kX2hhbmRsZXIgKiB1bml0KSBwYXJhbWV0ZXIgZXJyb3IgZXJyb3InIHMgP3RvX3VpID9tZXNzYWdlID9wb3MgZXhuID1cbiAgaWYgZXJyb3IgPT0gZXJyb3InIHRoZW5cbiAgICBlcnJvclxuICBlbHNlIChcbiAgICBsZXQgZXJyb3IsICgpID0gd2FybiBwYXJhbWV0ZXIgZXJyb3InID90b191aSBzID9tZXNzYWdlID9wb3MgZXhuICgpIGluXG4gICAgZXJyb3JcbiAgKVxuIiwiKCoqIFRpbWUtc3RhbXA6IDxKdWwgMDIgMjAxNj4gKilcblxubGV0IGZvcl9LYVNpbSBmID0gZiAoZnVuIF8gXyBfIF8gXyAtPiAoKSkgKCkgKClcbmxldCBsaWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBmIGEgYiA9IHNuZCAoZm9yX0thU2ltIGYgYSBiKVxuXG5sZXQgbGlmdF9nZW5lcmljX2JpbmFyeV9iaW5hcnlfZm9yX0thU2ltIGYgYSBiID1cbiAgbGV0IF8sIGIsIGMgPSBmb3JfS2FTaW0gZiBhIGIgaW5cbiAgYiwgY1xuXG5sZXQgbGlmdF9nZW5lcmljX3Rlcm5hcnlfZm9yX0thU2ltIGYgYSBiIGMgPSBzbmQgKGZvcl9LYVNpbSBmIGEgYiBjKVxuXG5sZXQgbGlmdF9nZW5fdW5hcnkgZHVtcCBmIGEgPVxuICBsZXQgcGFyYW1ldGVycyA9XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVycy5kdW1teV9wYXJhbWV0ZXJzXG4gICAgICB+Y2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTYSAoKVxuICBpblxuICBsZXQgZXJyb3IgPSBFeGNlcHRpb24uZW1wdHlfZXJyb3JfaGFuZGxlciBpblxuICBsZXQgZXJyb3IsIG91dHB1dCA9IGYgcGFyYW1ldGVycyBlcnJvciBhIGluXG4gIGxldCBfID0gZHVtcCBwYXJhbWV0ZXJzIGVycm9yIGluXG4gIG91dHB1dFxuXG5sZXQgbGlmdF9nZW5fYmluYXJ5IGR1bXAgZiBhIGIgPVxuICBsZXQgcGFyYW1ldGVycyA9XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVycy5kdW1teV9wYXJhbWV0ZXJzXG4gICAgICB+Y2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTYSAoKVxuICBpblxuICBsZXQgZXJyb3IgPSBFeGNlcHRpb24uZW1wdHlfZXJyb3JfaGFuZGxlciBpblxuICBsZXQgZXJyb3IsIG91dHB1dCA9IGYgcGFyYW1ldGVycyBlcnJvciBhIGIgaW5cbiAgbGV0IF8gPSBkdW1wIHBhcmFtZXRlcnMgZXJyb3IgaW5cbiAgb3V0cHV0XG5cbmxldCBsaWZ0X2dlbl90ZXJuYXJ5IGR1bXAgZiBhIGIgYyA9XG4gIGxldCBwYXJhbWV0ZXJzID1cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmR1bW15X3BhcmFtZXRlcnNcbiAgICAgIH5jYWxsZWRfZnJvbTpSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNhICgpXG4gIGluXG4gIGxldCBlcnJvciA9IEV4Y2VwdGlvbi5lbXB0eV9lcnJvcl9oYW5kbGVyIGluXG4gIGxldCBlcnJvciwgb3V0cHV0ID0gZiBwYXJhbWV0ZXJzIGVycm9yIGEgYiBjIGluXG4gIGxldCBfID0gZHVtcCBwYXJhbWV0ZXJzIGVycm9yIGluXG4gIG91dHB1dFxuXG5sZXQgbGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ191bmFyeSBmIGEgPSBsaWZ0X2dlbl91bmFyeSBFeGNlcHRpb24ucHJpbnQgZiBhXG5cbmxldCBsaWZ0X3dpdGhfb25fdGhlX2ZseV9sb2dnaW5nX2JpbmFyeSBmIGEgYiA9XG4gIGxpZnRfZ2VuX2JpbmFyeSBFeGNlcHRpb24ucHJpbnQgZiBhIGJcblxubGV0IGxpZnRfd2l0aF9vbl90aGVfZmx5X2xvZ2dpbmdfdGVybmFyeSBmIGEgYiBjID1cbiAgbGlmdF9nZW5fYmluYXJ5IEV4Y2VwdGlvbi5wcmludCBmIGEgYiBjXG5cbmxldCBsaWZ0X3dpdGhvdXRfbG9nZ2luZ191bmFyeSBmIGEgPSBsaWZ0X2dlbl91bmFyeSAoZnVuIF8gXyAtPiAoKSkgZiBhXG5sZXQgbGlmdF93aXRob3V0X2xvZ2dpbmdfYmluYXJ5IGYgYSBiID0gbGlmdF9nZW5fYmluYXJ5IChmdW4gXyBfIF8gLT4gKCkpIGYgYSBiXG5cbmxldCBsaWZ0X3dpdGhvdXRfbG9nZ2luZ190ZXJuYXJ5IGYgYSBiIGMgPVxuICBsaWZ0X2dlbl90ZXJuYXJ5IChmdW4gXyBfIF8gXyAtPiAoKSkgZiBhIGIgY1xuIiwiKCoqXG4gICogc3RvcnlQcm9maWxpbmcubWxcbiAgKlxuICAqIEdlbmVyYXRlIHByb2ZpbGluZyBpbmZvcm1hdGlvbiBmb3Igc3RvcmllcyBpbiBLYVNpbVxuICAqXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGVkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDA5LzA0LzIwMTJcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMTUvMDYvMjAxMlxuICAqICpcbiAgKiBTb21lIHBhcmFtZXRlcnMgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBzdGVwX2tpbmQgPVxuICB8IER1bW15XG4gIHwgQmVnaW5uaW5nXG4gIHwgQ29sbGVjdF90cmFjZXNcbiAgfCBDYXVzYWxfY29tcHJlc3Npb25cbiAgfCBXZWFrX2NvbXByZXNzaW9uXG4gIHwgU3Ryb25nX2NvbXByZXNzaW9uXG4gIHwgSXRlcmF0aW9uIG9mIGludFxuICB8IFN0b3J5IG9mIGludFxuICB8IFBhcnRpYWxfb3JkZXJfcmVkdWN0aW9uXG4gIHwgU2lwaG9uX2RldGVjdGlvblxuICB8IERlY29tcG9zZV9pbml0aWFsX3N0YXRlXG4gIHwgQWdlbnRfaWRzX2Rpc2FtYmlndWF0aW9uXG4gIHwgUHNldWRvX2ludmVyc2VfZGVsZXRpb25cbiAgfCBSZW1vdmVfZXZlbnRzX2FmdGVyX2xhc3Rfb2JzZXJ2YWJsZVxuICB8IENvbXByZXNzaW9uXG4gIHwgQnVpbGRfZ3JpZFxuICB8IEJ1aWxkX2NvbmZpZ3VyYXRpb25cbiAgfCBUcmFuc2l0aXZlX2Nsb3N1cmVcbiAgfCBHcmFwaF9yZWR1Y3Rpb25cbiAgfCBHcmFwaF9jb252ZXJzaW9uXG4gIHwgQ2Fubm9uaWNfZm9ybV9jb21wdXRhdGlvblxuICB8IFN0b3JlX3RyYWNlXG4gIHwgUmVtb3ZpbmdfYmxhY2tsaXN0ZWRfZXZlbnRzXG4gIHwgQmxhY2tsaXN0aW5nX2V2ZW50c1xuICB8IEdsb2JhbF9pbml0aWFsaXphdGlvblxuICB8IERvbWFpbnNfaW5pdGlhbGl6YXRpb25cbiAgfCBEb21haW5faW5pdGlhbGl6YXRpb24gb2Ygc3RyaW5nXG4gIHwgQXBwbHlfcnVsZSBvZiBpbnRcbiAgfCBJbml0aWFsX3N0YXRlIG9mIGludFxuICB8IFNjYW5fcnVsZV9zdGF0aWMgb2YgaW50XG4gIHwgU2Nhbl9ydWxlX2R5bmFtaWMgb2YgaW50XG4gIHwgUmVndWxhcl9pbmZsdWVuY2VzXG4gIHwgU2lkZV9lZmZlY3RzX2luZmx1ZW5jZXNcbiAgfCBNZXJnZV9pbmZsdWVuY2VzXG4gIHwgS2FTaW1fY29tcGlsYXRpb25cbiAgfCBLYVNhX3ByZWNvbXBpbGF0aW9uXG4gIHwgS2FTYV9sZXhpbmdcbiAgfCBLYVNhX2xpbmtpbmdcbiAgfCBJbmZsdWVuY2VfbWFwIG9mIHN0cmluZ1xuICB8IEludGVybmFsX2luZmx1ZW5jZV9tYXAgb2Ygc3RyaW5nXG4gIHwgTEthcHBhX3NpZ25hdHVyZVxuXG5sZXQgc3RyaW5nX29mX3N0ZXBfa2luZCB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgRHVtbXkgfCBCZWdpbm5pbmcgLT4gXCJcIlxuICB8IEJ1aWxkX2NvbmZpZ3VyYXRpb24gLT4gXCJCdWlsZCBjb25maWd1cmF0aW9uXCJcbiAgfCBDb2xsZWN0X3RyYWNlcyAtPiBcIkNvbGxlY3QgdHJhY2VzXCJcbiAgfCBDYXVzYWxfY29tcHJlc3Npb24gLT4gXCJDYXVzYWwgY29tcHJlc3Npb25cIlxuICB8IFdlYWtfY29tcHJlc3Npb24gLT4gXCJXZWFrIGNvbXByZXNzaW9uXCJcbiAgfCBTdHJvbmdfY29tcHJlc3Npb24gLT4gXCJTdHJvbmcgY29tcHJlc3Npb25cIlxuICB8IEl0ZXJhdGlvbiBpbnQgLT4gUHJpbnRmLnNwcmludGYgXCJJdGVyYXRpb24gJWlcIiBpbnRcbiAgfCBTdG9yeSBpbnQgLT4gUHJpbnRmLnNwcmludGYgXCJTdG9yeSAlaVwiIGludFxuICB8IFBhcnRpYWxfb3JkZXJfcmVkdWN0aW9uIC0+IFwiUGFydGlhbCBvcmRlciByZWR1Y3Rpb25cIlxuICB8IFNpcGhvbl9kZXRlY3Rpb24gLT4gXCJEZXRlY3Rpb24gb2Ygc2lwaG9uc1wiXG4gIHwgRGVjb21wb3NlX2luaXRpYWxfc3RhdGUgLT4gXCJTcGxpdHRpbmcgaW5pdGlhbCBzdGF0ZXNcIlxuICB8IEFnZW50X2lkc19kaXNhbWJpZ3VhdGlvbiAtPiBcIlJlbmFtaW5nIGFnZW50cyB0byBhdm9pZCBjb25mbGljdHNcIlxuICB8IFBzZXVkb19pbnZlcnNlX2RlbGV0aW9uIC0+IFwiRGVsZXRpb24gb2YgcHNldWRvIGludmVyc2UgZXZlbnRzXCJcbiAgfCBSZW1vdmVfZXZlbnRzX2FmdGVyX2xhc3Rfb2JzZXJ2YWJsZSAtPlxuICAgIFwiUmVtb3ZpbmcgZXZlbnRzIGFmdGVyIHRoZSBsYXN0IG9ic2VydmFibGVzXCJcbiAgfCBDb21wcmVzc2lvbiAtPiBcIkNvbXByZXNzaW9uXCJcbiAgfCBUcmFuc2l0aXZlX2Nsb3N1cmUgLT4gXCJUcmFuc2l0aXZlIGNsb3N1cmVcIlxuICB8IEJ1aWxkX2dyaWQgLT4gXCJHcmlkIGNvbXB1dGF0aW9uXCJcbiAgfCBHcmFwaF9yZWR1Y3Rpb24gLT4gXCJUcmFuc2l0aXZlIHJlZHVjdGlvblwiXG4gIHwgR3JhcGhfY29udmVyc2lvbiAtPiBcIkdyYXBoIGNvbnZlcnNpb25cIlxuICB8IENhbm5vbmljX2Zvcm1fY29tcHV0YXRpb24gLT4gXCJDb21wdXRpbmcgdGhlIGNhbm5vbmljIGZvcm1cIlxuICB8IFN0b3JlX3RyYWNlIC0+IFwiU3RvcmUgdHJhY2VcIlxuICB8IFJlbW92aW5nX2JsYWNrbGlzdGVkX2V2ZW50cyAtPiBcIlJlbW92aW5nIGJsYWNrLWxpc3RlZCBldmVudHNcIlxuICB8IEJsYWNrbGlzdGluZ19ldmVudHMgLT4gXCJCbGFrbGlzdGluZyBldmVudHNcIlxuICB8IEdsb2JhbF9pbml0aWFsaXphdGlvbiAtPiBcIkdsb2JhbCBpbml0aWFsaXphdGlvblwiXG4gIHwgRG9tYWluc19pbml0aWFsaXphdGlvbiAtPiBcIkRvbWFpbnMgaW5pdGlhbGl6YXRpb25cIlxuICB8IERvbWFpbl9pbml0aWFsaXphdGlvbiBzdHJpbmcgLT5cbiAgICBQcmludGYuc3ByaW50ZiBcIkRvbWFpbiBpbml0aWFsaXphdGlvbiAoJXMpXCIgc3RyaW5nXG4gIHwgQXBwbHlfcnVsZSBpbnQgLT4gUHJpbnRmLnNwcmludGYgXCJBcHBseSBydWxlICVpXCIgaW50XG4gIHwgSW5pdGlhbF9zdGF0ZSBpbnQgLT4gUHJpbnRmLnNwcmludGYgXCJJbml0aWFsIHN0YXRlICVpXCIgaW50XG4gIHwgU2Nhbl9ydWxlX3N0YXRpYyBpbnQgLT4gUHJpbnRmLnNwcmludGYgXCJTY2FuIHJ1bGUgJWkgKHN0YXRpYylcIiBpbnRcbiAgfCBTY2FuX3J1bGVfZHluYW1pYyBpbnQgLT4gUHJpbnRmLnNwcmludGYgXCJTY2FuIHJ1bGUgJWkgKGR5bmFtaWMpXCIgaW50XG4gIHwgUmVndWxhcl9pbmZsdWVuY2VzIC0+IFByaW50Zi5zcHJpbnRmIFwiUmVndWxhciBpbmZsdWVuY2VzIGNvbXB1dGF0aW9uXCJcbiAgfCBTaWRlX2VmZmVjdHNfaW5mbHVlbmNlcyAtPlxuICAgIFByaW50Zi5zcHJpbnRmIFwiU2lkZS1lZmZlY3RzIGluZmx1ZW5jZXMgY29tcHV0YXRpb25cIlxuICB8IE1lcmdlX2luZmx1ZW5jZXMgLT4gUHJpbnRmLnNwcmludGYgXCJNZXJnaW5nIGluZmx1ZW5jZXNcIlxuICB8IEthU2ltX2NvbXBpbGF0aW9uIC0+IFByaW50Zi5zcHJpbnRmIFwiS2FTaW0gZnJvbnRlbmRcIlxuICB8IEthU2FfcHJlY29tcGlsYXRpb24gLT4gUHJpbnRmLnNwcmludGYgXCJLYVNhIHByZWNvbXBpbGF0aW9uXCJcbiAgfCBLYVNhX2xleGluZyAtPiBQcmludGYuc3ByaW50ZiBcIkthU2EgTGV4aW5nXCJcbiAgfCBLYVNhX2xpbmtpbmcgLT4gUHJpbnRmLnNwcmludGYgXCJLYVNhIExpbmtpbmdcIlxuICB8IEluZmx1ZW5jZV9tYXAgc3RyaW5nIC0+IFByaW50Zi5zcHJpbnRmIFwiSW5mbHVlbmNlIG1hcCAoJXMpXCIgc3RyaW5nXG4gIHwgSW50ZXJuYWxfaW5mbHVlbmNlX21hcCBzdHJpbmcgLT5cbiAgICBQcmludGYuc3ByaW50ZiBcIkluZmx1ZW5jZSBtYXAgKGludGVybmFsICVzKVwiIHN0cmluZ1xuICB8IExLYXBwYV9zaWduYXR1cmUgLT4gUHJpbnRmLnNwcmludGYgXCJMS2FwcGEgc2lnbmF0dXJlXCJcblxubGV0IHByaW50X3N0ZXBfa2luZCBwYXJhbWV0ZXJzIHggPVxuICBMb2dnZXJzLnByaW50X2NlbGxcbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVycylcbiAgICAoc3RyaW5nX29mX3N0ZXBfa2luZCB4KVxuXG5tb2R1bGUgdHlwZSBTdG9yeVN0YXRzID0gc2lnXG4gIHR5cGUgbG9nX2luZm9cblxuICB2YWwgaW5jX3JlbW92ZWRfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19zZWxlY3RlZF9ldmVudHMgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgbG9nX2luZm9fdG9fanNvbiA6IGxvZ19pbmZvIC0+IFlvanNvbi5CYXNpYy50XG4gIHZhbCBsb2dfaW5mb19vZl9qc29uIDogWW9qc29uLkJhc2ljLnQgLT4gbG9nX2luZm9cbiAgdmFsIGluY19jdXRfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19rX2N1dF9ldmVudHMgOiBpbnQgLT4gbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHJlc2V0X2N1dF9ldmVudHMgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgaW5jX25fa2FzaW1fZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19uX2luaXRfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19uX3NpZGVfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19uX29ic19ldmVudHMgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgaW5jX2JyYW5jaCA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfY3V0IDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHJlc2V0X2xvZyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBkdW1wX2NvbXBsZXRlX2xvZyA6IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT4gbG9nX2luZm8gLT4gdW5pdFxuICB2YWwgZHVtcF9zaG9ydF9sb2cgOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+IGxvZ19pbmZvIC0+IHVuaXRcbiAgdmFsIGFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBhZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBhZGRfbG9va191cF9jYXNlIDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBhZGRfbG9va19kb3duX2Nhc2UgOiBpbnQgLT4gbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGNvcHkgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgaXNfZHVtbXkgOiBzdGVwX2tpbmQgLT4gYm9vbFxuXG4gIHZhbCBhZGRfZXZlbnQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBzdGVwX2tpbmQgLT5cbiAgICAodW5pdCAtPiBpbnQpIG9wdGlvbiAtPlxuICAgIGxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogbG9nX2luZm9cblxuICB2YWwgY2xvc2VfZXZlbnQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBzdGVwX2tpbmQgLT5cbiAgICAodW5pdCAtPiBpbnQpIG9wdGlvbiAtPlxuICAgIGxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogbG9nX2luZm9cblxuICB2YWwgYWRkX2V2ZW50X29wdCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHN0ZXBfa2luZCBvcHRpb24gLT5cbiAgICAodW5pdCAtPiBpbnQpIG9wdGlvbiAtPlxuICAgIGxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogbG9nX2luZm9cblxuICB2YWwgY2xvc2VfZXZlbnRfb3B0IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgc3RlcF9raW5kIG9wdGlvbiAtPlxuICAgICh1bml0IC0+IGludCkgb3B0aW9uIC0+XG4gICAgbG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBsb2dfaW5mb1xuXG4gIHZhbCBzZXRfdGltZSA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBzZXRfc3RlcF90aW1lIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9nbG9iYWxfY3V0IDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBzZXRfcHNldWRvX2ludiA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X3N0YXJ0X2NvbXByZXNzaW9uIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9ncmlkX2dlbmVyYXRpb24gOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X2Nhbm9uaWNhbGlzYXRpb24gOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X2NvbmN1cnJlbnRfZXZlbnRfZGV0ZWN0aW9uX3RpbWUgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X2NvbmN1cnJlbnRfZXZlbnRfZGVsZXRpb25fdGltZSA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBzZXRfc3RvcnlfcmVzZWFyY2hfdGltZSA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBlbGxhcHNlZF9nbG9iYWxfdGltZSA6IGxvZ19pbmZvIC0+IGZsb2F0XG4gIHZhbCBlbGxhcHNlZF90aW1lIDogbG9nX2luZm8gLT4gZmxvYXRcbiAgdmFsIGluaXRfbG9nX2luZm8gOiB1bml0IC0+IGxvZ19pbmZvXG4gIHZhbCB0aWNrIDogbG9nX2luZm8gLT4gYm9vbCAqIGxvZ19pbmZvXG4gIHZhbCBjbG9zZV9sb2dnZXIgOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+IHVuaXRcbiAgdmFsIGZsdXNoX2xvZ2dlciA6IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBTdG9yeVN0YXRzIDogU3RvcnlTdGF0cyA9IHN0cnVjdFxuICB0eXBlIHN0YWNrX2hlYWQgPSB7XG4gICAgY3VycmVudF9icmFuY2g6IGludDtcbiAgICBzZWxlY3RlZF9ldmVudHM6IGludDtcbiAgICByZW1haW5pbmdfZXZlbnRzOiBpbnQ7XG4gICAgcmVtb3ZlZF9ldmVudHM6IGludDtcbiAgICBzdGFja19zaXplOiBpbnQ7XG4gIH1cblxuICB0eXBlIHN0ZXAgPSB7XG4gICAgdGFnOiBzdGVwX2tpbmQ7XG4gICAgc2l6ZV9iZWZvcmU6IGludCBvcHRpb247XG4gICAgc2l6ZV9hZnRlcjogaW50IG9wdGlvbjtcbiAgICB0aW1lX3N0YXJ0OiBmbG9hdDtcbiAgICBkdXJhdGlvbjogZmxvYXQgb3B0aW9uO1xuICAgIGRlcHRoOiBpbnQ7XG4gIH1cblxuICBsZXQga19maXJzdCBfcGFyYW1ldGVyIGsgbCA9XG4gICAgbGV0IHJlYyBhdXggayBsIG91dHB1dCA9XG4gICAgICBpZiBrID0gMCB0aGVuXG4gICAgICAgIFtdLCBMaXN0LnJldiBvdXRwdXRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICggKGxldCByZWMgYXV4IGsgb3V0cHV0ID1cbiAgICAgICAgICAgICAgIGlmIGsgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgb3V0cHV0XG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGF1eCAoayAtIDEpIChcIlwiIDo6IG91dHB1dClcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGF1eCBrIFtdKSxcbiAgICAgICAgICAgIExpc3QucmV2IG91dHB1dCApXG4gICAgICAgIHwgdCA6OiBxIC0+IGF1eCAoayAtIDEpIHEgKHQgOjogb3V0cHV0KVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IGsgbCBbXVxuXG4gIGxldCBwcmludF90YXNrIHBhcmFtZXRlciAoYSwgYikgPVxuICAgIGxldCBfID0gcHJpbnRfc3RlcF9raW5kIHBhcmFtZXRlciBhLnRhZyBpblxuICAgIGxldCB0YWIsIGIgPSBrX2ZpcnN0IHBhcmFtZXRlciA0IGIgaW5cbiAgICBsZXQgXyA9IExpc3QuaXRlciAocHJpbnRfc3RlcF9raW5kIHBhcmFtZXRlcikgYiBpblxuICAgIGxldCBfID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoTG9nZ2Vycy5wcmludF9jZWxsIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpKVxuICAgICAgICB0YWJcbiAgICBpblxuICAgIGxldCBfID1cbiAgICAgIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAobWF0Y2ggYS5zaXplX2JlZm9yZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBpIC0+IHN0cmluZ19vZl9pbnQgaSlcbiAgICBpblxuICAgIGxldCBfID1cbiAgICAgIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAobWF0Y2ggYS5zaXplX2FmdGVyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIGkgLT4gc3RyaW5nX29mX2ludCBpKVxuICAgIGluXG4gICAgbGV0IF8gPVxuICAgICAgTG9nZ2Vycy5wcmludF9jZWxsXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpXG4gICAgICAgIChtYXRjaCBhLmR1cmF0aW9uIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIHRpbWUgLT4gc3RyaW5nX29mX2Zsb2F0IHRpbWUpXG4gICAgaW5cbiAgICAoKVxuXG4gIGxldCBjbG9zZV9sb2dnZXIgcGFyYW1ldGVyID1cbiAgICBMb2dnZXJzLmNsb3NlX2xvZ2dlciAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuXG4gIGxldCBmbHVzaF9sb2dnZXIgcGFyYW1ldGVyID1cbiAgICBMb2dnZXJzLmZsdXNoX2xvZ2dlciAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuXG4gIHR5cGUgbG9nX2luZm8gPSB7XG4gICAgZ2xvYmFsX3RpbWU6IGZsb2F0O1xuICAgIHN0b3J5X3RpbWU6IGZsb2F0O1xuICAgIHN0ZXBfdGltZTogZmxvYXQ7XG4gICAgY3VycmVudF90YXNrOiBzdGVwIGxpc3Q7XG4gICAgbmV4dF9kZXB0aDogaW50O1xuICAgIGJyYW5jaDogaW50O1xuICAgIGN1dDogaW50O1xuICAgIHN0YWNrOiBzdGFja19oZWFkIGxpc3Q7XG4gICAgY3VycmVudF9zdGFjazogc3RhY2tfaGVhZDtcbiAgICBwcm9wYWdhdGlvbjogaW50IGFycmF5O1xuICAgIGxhc3RfdGljazogZmxvYXQ7XG4gIH1cblxuICBsZXQgaXNfZHVtbXkgc3RlcF9raW5kID1cbiAgICBtYXRjaCBzdGVwX2tpbmQgd2l0aFxuICAgIHwgRHVtbXkgLT4gdHJ1ZVxuICAgIHwgQmVnaW5uaW5nIHwgQ29sbGVjdF90cmFjZXMgfCBDYXVzYWxfY29tcHJlc3Npb24gfCBXZWFrX2NvbXByZXNzaW9uXG4gICAgfCBTdHJvbmdfY29tcHJlc3Npb24gfCBQYXJ0aWFsX29yZGVyX3JlZHVjdGlvbiB8IFNpcGhvbl9kZXRlY3Rpb25cbiAgICB8IERlY29tcG9zZV9pbml0aWFsX3N0YXRlIHwgQWdlbnRfaWRzX2Rpc2FtYmlndWF0aW9uXG4gICAgfCBQc2V1ZG9faW52ZXJzZV9kZWxldGlvbiB8IFJlbW92ZV9ldmVudHNfYWZ0ZXJfbGFzdF9vYnNlcnZhYmxlXG4gICAgfCBDb21wcmVzc2lvbiB8IEJ1aWxkX2dyaWQgfCBCdWlsZF9jb25maWd1cmF0aW9uIHwgVHJhbnNpdGl2ZV9jbG9zdXJlXG4gICAgfCBHcmFwaF9yZWR1Y3Rpb24gfCBHcmFwaF9jb252ZXJzaW9uIHwgQ2Fubm9uaWNfZm9ybV9jb21wdXRhdGlvblxuICAgIHwgU3RvcmVfdHJhY2UgfCBSZW1vdmluZ19ibGFja2xpc3RlZF9ldmVudHMgfCBCbGFja2xpc3RpbmdfZXZlbnRzXG4gICAgfCBHbG9iYWxfaW5pdGlhbGl6YXRpb24gfCBEb21haW5zX2luaXRpYWxpemF0aW9uIHwgUmVndWxhcl9pbmZsdWVuY2VzXG4gICAgfCBTaWRlX2VmZmVjdHNfaW5mbHVlbmNlcyB8IE1lcmdlX2luZmx1ZW5jZXMgfCBLYVNpbV9jb21waWxhdGlvblxuICAgIHwgS2FTYV9wcmVjb21waWxhdGlvbiB8IEthU2FfbGV4aW5nIHwgS2FTYV9saW5raW5nIHwgTEthcHBhX3NpZ25hdHVyZVxuICAgIHwgSXRlcmF0aW9uIF8gfCBTdG9yeSBfIHwgRG9tYWluX2luaXRpYWxpemF0aW9uIF8gfCBBcHBseV9ydWxlIF9cbiAgICB8IEluaXRpYWxfc3RhdGUgXyB8IFNjYW5fcnVsZV9zdGF0aWMgXyB8IFNjYW5fcnVsZV9keW5hbWljIF9cbiAgICB8IEluZmx1ZW5jZV9tYXAgXyB8IEludGVybmFsX2luZmx1ZW5jZV9tYXAgXyAtPlxuICAgICAgZmFsc2VcblxuICBsZXQgYWRkX2V2ZW50IHBhcmFtZXRlciBlcnJvciBzdGVwX2tpbmQgZiBsb2dfaW5mbyA9XG4gICAgaWYgaXNfZHVtbXkgc3RlcF9raW5kIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICBcIkluY29uc2lzdGVudCBwcm9maWxpbmcgaW5mb3JtYXRpb24sIGFkZF9ldmVudCBzaG91bGQgbm90IGJlIFxcXG4gICAgICAgICAgICAgY2FsbGVkIHdpdGggYSBkdW1teSBldmVudFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJEdW1teSBldmVudCBpbiBhZGRfZXZlbnRcIikgKClcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgICApIGVsc2UgKFxuICAgICAgbGV0IG5leHRfZGVwdGggPSBsb2dfaW5mby5uZXh0X2RlcHRoIGluXG4gICAgICBsZXQgdGFzayA9XG4gICAgICAgIHtcbiAgICAgICAgICB0YWcgPSBzdGVwX2tpbmQ7XG4gICAgICAgICAgc2l6ZV9iZWZvcmUgPVxuICAgICAgICAgICAgKG1hdGNoIGYgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSBmIC0+IFNvbWUgKGYgKCkpKTtcbiAgICAgICAgICBzaXplX2FmdGVyID0gTm9uZTtcbiAgICAgICAgICB0aW1lX3N0YXJ0ID0gU3lzLnRpbWUgKCk7XG4gICAgICAgICAgZHVyYXRpb24gPSBOb25lO1xuICAgICAgICAgIGRlcHRoID0gbmV4dF9kZXB0aDtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBfID0gTG9nZ2Vycy5vcGVuX3JvdyAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKSBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBMb2dnZXJzLnByaW50X2NlbGwgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcikgXCJTdGFydFwiXG4gICAgICBpblxuICAgICAgbGV0IHRlcm1pbmF0ZWRfdGFzayA9XG4gICAgICAgIHRhc2ssIExpc3QucmV2X21hcCAoZnVuIHggLT4geC50YWcpIChMaXN0LnJldiBsb2dfaW5mby5jdXJyZW50X3Rhc2spXG4gICAgICBpblxuICAgICAgbGV0IF8gPSBwcmludF90YXNrIHBhcmFtZXRlciB0ZXJtaW5hdGVkX3Rhc2sgaW5cbiAgICAgIGxldCBfID0gTG9nZ2Vycy5jbG9zZV9yb3cgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcikgaW5cbiAgICAgIGxldCBfID0gZmx1c2hfbG9nZ2VyIHBhcmFtZXRlciBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyXG4gICAgICAgICAgKHN0cmluZ19vZl9zdGVwX2tpbmQgc3RlcF9raW5kKVxuICAgICAgaW5cbiAgICAgIGxldCBjdXJyZW50X3Rhc2sgPSB0YXNrIDo6IGxvZ19pbmZvLmN1cnJlbnRfdGFzayBpblxuICAgICAgZXJyb3IsIHsgbG9nX2luZm8gd2l0aCBuZXh0X2RlcHRoID0gbmV4dF9kZXB0aCArIDE7IGN1cnJlbnRfdGFzayB9XG4gICAgKVxuXG4gIGxldCBjbG9zZV9ldmVudCBwYXJhbWV0ZXIgZXJyb3Igc3RlcF9raW5kIGYgbG9nX2luZm8gPVxuICAgIGlmIGlzX2R1bW15IHN0ZXBfa2luZCB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgXCJJbmNvbnNpc3RlbnQgcHJvZmlsaW5nIGluZm9ybWF0aW9uLCBjbG9zZV9ldmVudCBzaG91bGQgbm90IGJlIFxcXG4gICAgICAgICAgICAgY2FsbGVkIHdpdGggYSBkdW1teSBldmVudFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJEdW1teSBldmVudCBpbiBjbG9zZV9ldmVudFwiKSAoKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICkgZWxzZSAoXG4gICAgICBsZXQgcmVjIGF1eCBsb2dfaW5mbyBlcnJvciBpbnRlcnJ1cHRlZCA9XG4gICAgICAgIGxldCBuZXh0X2RlcHRoID0gbG9nX2luZm8ubmV4dF9kZXB0aCBpblxuICAgICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgICBpZiBuZXh0X2RlcHRoID0gMSB0aGVuXG4gICAgICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgICAgICBcIkluY29uc2lzdGVudCBwcm9maWxpbmcgaW5mb3JtYXRpb24sIGRlcHRoIHNob3VsZCBub3QgYmUgZXF1YWwgXFxcbiAgICAgICAgICAgICAgICAgdG8gMSB3aGVuIGNsb3NpbmcgYW4gZXZlbnRcIlxuICAgICAgICAgICAgICAoRmFpbHVyZSBcIkRlcHRoPTEgaW4gY2xvc2VfZXZlbnRcIikgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgKClcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggbG9nX2luZm8uY3VycmVudF90YXNrIHdpdGhcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgICAgXCJJbmNvbnNpc3RlbnQgcHJvZmlsaW5nIGluZm9ybWF0aW9uLCBubyBjdXJyZW50IHRhc2sgd2hlbiBcXFxuICAgICAgICAgICAgICAgY2xvc2luZyBhbiBldmVudFwiXG4gICAgICAgICAgICAoRmFpbHVyZSBcIk5vIGN1cnJlbnQgdGFza3MgaW4gY2xvc2VfZXZlbnRcIikgbG9nX2luZm9cbiAgICAgICAgfCBjdXJyZW50X3Rhc2sgOjogdGFpbCB3aGVuIGN1cnJlbnRfdGFzay50YWcgPSBzdGVwX2tpbmQgLT5cbiAgICAgICAgICBsZXQgc2l6ZV9hZnRlciA9XG4gICAgICAgICAgICBtYXRjaCBmIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBmIC0+IFNvbWUgKGYgKCkpXG4gICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSAtLiBjdXJyZW50X3Rhc2sudGltZV9zdGFydCBpblxuICAgICAgICAgIGxldCB0YXNrID0geyBjdXJyZW50X3Rhc2sgd2l0aCBzaXplX2FmdGVyOyBkdXJhdGlvbiA9IFNvbWUgdGltZSB9IGluXG4gICAgICAgICAgbGV0IHRlcm1pbmF0ZWRfdGFzayA9XG4gICAgICAgICAgICB0YXNrLCBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgudGFnKSAoTGlzdC5yZXYgdGFpbClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLm9wZW5fcm93IChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9jZWxsXG4gICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIChpZiBpbnRlcnJ1cHRlZCB0aGVuXG4gICAgICAgICAgICAgICAgIFwiSW50ZXJydXB0ZWRcIlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBcIkVuZFwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcHJpbnRfdGFzayBwYXJhbWV0ZXIgdGVybWluYXRlZF90YXNrIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuY2xvc2Vfcm93IChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBmbHVzaF9sb2dnZXIgcGFyYW1ldGVyIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIHsgbG9nX2luZm8gd2l0aCBuZXh0X2RlcHRoID0gbmV4dF9kZXB0aCAtIDE7IGN1cnJlbnRfdGFzayA9IHRhaWwgfSApXG4gICAgICAgIHwgY3VycmVudF90YXNrIDo6IHRhaWwgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5vcGVuX3JvdyAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRlcm1pbmF0ZWRfdGFzayA9XG4gICAgICAgICAgICBjdXJyZW50X3Rhc2ssIExpc3QucmV2X21hcCAoZnVuIHggLT4geC50YWcpIChMaXN0LnJldiB0YWlsKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJJbnRlcnJ1cHRlZFwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF90YXNrIHBhcmFtZXRlciB0ZXJtaW5hdGVkX3Rhc2sgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5jbG9zZV9yb3cgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IGZsdXNoX2xvZ2dlciBwYXJhbWV0ZXIgaW5cbiAgICAgICAgICBhdXhcbiAgICAgICAgICAgIHsgbG9nX2luZm8gd2l0aCBuZXh0X2RlcHRoID0gbmV4dF9kZXB0aCAtIDE7IGN1cnJlbnRfdGFzayA9IHRhaWwgfVxuICAgICAgICAgICAgZXJyb3IgdHJ1ZVxuICAgICAgaW5cbiAgICAgIGF1eCBsb2dfaW5mbyBlcnJvciBmYWxzZVxuICAgIClcblxuICBsZXQgZ2VuX29wdCBnZW4gcGFyYW1ldGVyIGVycm9yIHN0ZXBfa2luZCBmIGxvZ19pbmZvID1cbiAgICBtYXRjaCBzdGVwX2tpbmQgd2l0aFxuICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm9cbiAgICB8IFNvbWUgZSAtPiBnZW4gcGFyYW1ldGVyIGVycm9yIGUgZiBsb2dfaW5mb1xuXG4gIGxldCBhZGRfZXZlbnRfb3B0ID0gZ2VuX29wdCBhZGRfZXZlbnRcbiAgbGV0IGNsb3NlX2V2ZW50X29wdCA9IGdlbl9vcHQgY2xvc2VfZXZlbnRcblxuICBsZXQgcHJvcGFnYXRpb25fbGFiZWxzID1cbiAgICBbfFxuICAgICAgXCJOb25lXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxIFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMiBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDMgXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSA0IFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgNSBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDYgXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSA3IFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgOCBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDkgXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxMFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMTFcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDEyXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxM1wiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMTRcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDE1XCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxNlwiO1xuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMSBcIjtcbiAgICAgICgqMTcqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMiBcIjtcbiAgICAgICgqMTgqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMyBcIjtcbiAgICAgICgqMTkqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgNCBcIjtcbiAgICAgICgqMjAqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgNSBcIjtcbiAgICAgICgqMjEqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgNiBcIjtcbiAgICAgICgqMjIqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgNyBcIjtcbiAgICAgICgqMjMqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgOCBcIjtcbiAgICAgICgqMjQqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgOSBcIjtcbiAgICAgICgqMjUqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTBcIjtcbiAgICAgICgqMjYqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTFcIjtcbiAgICAgICgqMjcqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTJcIjtcbiAgICAgICgqMjgqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTNcIjtcbiAgICAgICgqMjkqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTRcIjtcbiAgICAgICgqMzAqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTVcIjtcbiAgICAgICgqMzEqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTZcIjtcbiAgICAgICgqMzIqKVxuICAgICAgXCJMb29rX3VwOiAgIGNhc2UgIDFcIjtcbiAgICAgICgqMzMqKVxuICAgICAgXCJMb29rX3VwOiAgIGNhc2UgIDJcIjtcbiAgICAgICgqMzQqKVxuICAgICAgXCJMb29rX3VwOiAgIGNhc2UgIDNcIjtcbiAgICAgICgqMzUqKVxuICAgICAgXCJMb29rX3VwOiAgIGNhc2UgIDRcIjtcbiAgICAgICgqMzYqKVxuICAgICAgXCJMb29rX2Rvd246IGNhc2UgIDFcIjtcbiAgICAgICgqMzcqKVxuICAgICAgXCJMb29rX2Rvd246IGNhc2UgIDJcIjtcbiAgICAgICgqMzgqKVxuICAgICAgXCJMb29rX2Rvd246IGNhc2UgIDNcIjtcbiAgICAgICgqMzkqKVxuICAgICAgXCJMb29rX2Rvd246IGNhc2UgIDRcIjtcbiAgICAgICgqNDAqKVxuICAgIHxdXG5cbiAgbGV0IHByb3BhZ2F0aW9uX2Nhc2VzID0gQXJyYXkubGVuZ3RoIHByb3BhZ2F0aW9uX2xhYmVsc1xuXG4gIGxldCBjb3B5IGxvZ19pbmZvID1cbiAgICB7IGxvZ19pbmZvIHdpdGggcHJvcGFnYXRpb24gPSBBcnJheS5jb3B5IGxvZ19pbmZvLnByb3BhZ2F0aW9uIH1cblxuICBsZXQgaW5pdF9sb2dfaW5mbyAoKSA9XG4gICAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSBpblxuICAgIHtcbiAgICAgIG5leHRfZGVwdGggPSAxO1xuICAgICAgZ2xvYmFsX3RpbWUgPSB0aW1lO1xuICAgICAgc3RvcnlfdGltZSA9IHRpbWU7XG4gICAgICBzdGVwX3RpbWUgPSB0aW1lO1xuICAgICAgY3VycmVudF90YXNrID0gW107XG4gICAgICBwcm9wYWdhdGlvbiA9IEFycmF5Lm1ha2UgcHJvcGFnYXRpb25fY2FzZXMgMDtcbiAgICAgIGJyYW5jaCA9IDA7XG4gICAgICBjdXQgPSAwO1xuICAgICAgY3VycmVudF9zdGFjayA9XG4gICAgICAgIHtcbiAgICAgICAgICBjdXJyZW50X2JyYW5jaCA9IDA7XG4gICAgICAgICAgc2VsZWN0ZWRfZXZlbnRzID0gMDtcbiAgICAgICAgICByZW1haW5pbmdfZXZlbnRzID0gMDtcbiAgICAgICAgICByZW1vdmVkX2V2ZW50cyA9IDA7XG4gICAgICAgICAgc3RhY2tfc2l6ZSA9IDA7XG4gICAgICAgIH07XG4gICAgICBzdGFjayA9IFtdO1xuICAgICAgbGFzdF90aWNrID0gMC47XG4gICAgfVxuXG4gIGxldCBsb2dfaW5mb190b19qc29uIGxvZ19pbmZvID1cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJnbG9iYWxfdGltZVwiLCBgRmxvYXQgbG9nX2luZm8uZ2xvYmFsX3RpbWU7XG4gICAgICAgIFwic3RvcnlfdGltZVwiLCBgRmxvYXQgbG9nX2luZm8uc3RvcnlfdGltZTtcbiAgICAgICAgXCJzdGVwX3RpbWVcIiwgYEZsb2F0IGxvZ19pbmZvLnN0ZXBfdGltZTtcbiAgICAgICAgXCJuZXh0X2RlcHRoXCIsIGBJbnQgbG9nX2luZm8ubmV4dF9kZXB0aDtcbiAgICAgICAgXCJicmFuY2hcIiwgYEludCBsb2dfaW5mby5icmFuY2g7XG4gICAgICAgIFwiY3V0XCIsIGBJbnQgbG9nX2luZm8uY3V0O1xuICAgICAgXVxuXG4gIGxldCBmbG9hdF9vZl9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBGbG9hdCBmIC0+IGZcbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBmbG9hdFwiLCB4KSlcblxuICBsZXQgaW50X29mX2pzb24gPSBmdW5jdGlvblxuICAgIHwgYEludCBmIC0+IGZcbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBmbG9hdFwiLCB4KSlcblxuICBsZXQgbG9nX2luZm9fb2ZfanNvbiB4ID1cbiAgICBsZXQgaW5pdCA9IGluaXRfbG9nX2luZm8gKCkgaW5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IGBBc3NvYyBsIHdoZW4gTGlzdC5sZW5ndGggbCA9IDYgLT5cbiAgICAgICh0cnlcbiAgICAgICAgIHtcbiAgICAgICAgICAgaW5pdCB3aXRoXG4gICAgICAgICAgIGdsb2JhbF90aW1lID0gZmxvYXRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImdsb2JhbF90aW1lXCIgbCk7XG4gICAgICAgICAgIHN0b3J5X3RpbWUgPSBmbG9hdF9vZl9qc29uIChMaXN0LmFzc29jIFwic3RvcnlfdGltZVwiIGwpO1xuICAgICAgICAgICBzdGVwX3RpbWUgPSBmbG9hdF9vZl9qc29uIChMaXN0LmFzc29jIFwic3RlcF90aW1lXCIgbCk7XG4gICAgICAgICAgIG5leHRfZGVwdGggPSBpbnRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcIm5leHRfZGVwdGhcIiBsKTtcbiAgICAgICAgICAgYnJhbmNoID0gaW50X29mX2pzb24gKExpc3QuYXNzb2MgXCJicmFuY2hcIiBsKTtcbiAgICAgICAgICAgY3V0ID0gaW50X29mX2pzb24gKExpc3QuYXNzb2MgXCJjdXRcIiBsKTtcbiAgICAgICAgIH1cbiAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBsb2dfaW5mb1wiLCB4KSkpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgbG9nX2luZm9cIiwgeCkpXG5cbiAgbGV0IGR1bXBfc2hvcnRfbG9nIHBhcmFtZXRlciBsb2dfaW5mbyA9XG4gICAgbGV0IF8gPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9jb21wcmVzc2lvbl9zdGF0dXNfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgXCJSZW1haW5pbmcgZXZlbnRzOiAlaSA7IFN0YWNrIHNpemU6ICVpIDsgXCJcbiAgICAgICAgbG9nX2luZm8uY3VycmVudF9zdGFjay5yZW1haW5pbmdfZXZlbnRzXG4gICAgICAgIGxvZ19pbmZvLmN1cnJlbnRfc3RhY2suc3RhY2tfc2l6ZVxuICAgIGluXG4gICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICBcIlRvdGFsIGJyYW5jaDogJWkgOyBUb3RhbCBjdXQ6ICVpIDsgQ3VycmVudCBkZXB0aDogJWkgQC5cIiBsb2dfaW5mby5icmFuY2hcbiAgICAgIGxvZ19pbmZvLmN1dCBsb2dfaW5mby5jdXJyZW50X3N0YWNrLmN1cnJlbnRfYnJhbmNoXG5cbiAgbGV0IHJlc2V0X2xvZyBsb2cgPVxuICAgIGxldCB0ID0gbG9nLnByb3BhZ2F0aW9uIGluXG4gICAgbGV0IF8gPSBBcnJheS5maWxsIHQgMCAoQXJyYXkubGVuZ3RoIHQpIDAgaW5cbiAgICBsZXQgdGltZSA9IFN5cy50aW1lICgpIGluXG4gICAgeyBsb2cgd2l0aCBzdGVwX3RpbWUgPSB0aW1lOyBzdG9yeV90aW1lID0gdGltZSB9XG5cbiAgbGV0IHByb3BhZ2F0ZV91cCBpID0gaVxuICBsZXQgcHJvcGFnYXRlX2Rvd24gaSA9IGkgKyAxNlxuICBsZXQgbG9va191cCBpID0gaSArIDMyXG4gIGxldCBsb29rX2Rvd24gaSA9IGkgKyAzNlxuXG4gIGxldCBlbGxhcHNlZF90aW1lIGxvZyA9XG4gICAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSBpblxuICAgIHRpbWUgLS4gbG9nLnN0b3J5X3RpbWVcblxuICBsZXQgZWxsYXBzZWRfZ2xvYmFsX3RpbWUgbG9nID1cbiAgICBsZXQgdGltZSA9IFN5cy50aW1lICgpIGluXG4gICAgdGltZSAtLiBsb2cuZ2xvYmFsX3RpbWVcblxuICBsZXQgc2V0X3RpbWUgbG9nID1cbiAgICB7IGxvZyB3aXRoIHN0b3J5X3RpbWUgPSBTeXMudGltZSAoKTsgc3RlcF90aW1lID0gU3lzLnRpbWUgKCkgfVxuXG4gIGxldCBzZXRfc3RlcF90aW1lIGxvZyA9IHsgbG9nIHdpdGggc3RlcF90aW1lID0gU3lzLnRpbWUgKCkgfVxuICBsZXQgc2V0X3N0YXJ0X2NvbXByZXNzaW9uID0gc2V0X3RpbWVcblxuICBsZXQgc2V0X3N0b3J5X3Jlc2VhcmNoX3RpbWUgbG9nID1cbiAgICBsZXQgdCA9IFN5cy50aW1lICgpIGluXG4gICAgbGV0IHN0ID0gbG9nLnN0ZXBfdGltZSBpblxuICAgIHsgbG9nIHdpdGggc3RvcnlfdGltZSA9IHQgLS4gc3Q7IHN0ZXBfdGltZSA9IHQgfVxuXG4gIGxldCBzZXRfY29uY3VycmVudF9ldmVudF9kZXRlY3Rpb25fdGltZSBsb2cgPSBsb2dcbiAgbGV0IHNldF9jb25jdXJyZW50X2V2ZW50X2RlbGV0aW9uX3RpbWUgbG9nID0gbG9nXG4gIGxldCBzZXRfZ3JpZF9nZW5lcmF0aW9uIGxvZyA9IGxvZ1xuICBsZXQgc2V0X2Nhbm9uaWNhbGlzYXRpb24gbG9nID0gbG9nXG5cbiAgbGV0IGFkZF9jYXNlIGkgbG9nID1cbiAgICBsZXQgdCA9IGxvZy5wcm9wYWdhdGlvbiBpblxuICAgIGxldCBfID0gdC4oaSkgPC0gdC4oaSkgKyAxIGluXG4gICAgbG9nXG5cbiAgbGV0IGFkZF9sb29rX2Rvd25fY2FzZSBpID0gYWRkX2Nhc2UgKGxvb2tfZG93biBpKVxuICBsZXQgYWRkX2xvb2tfdXBfY2FzZSBpID0gYWRkX2Nhc2UgKGxvb2tfdXAgaSlcbiAgbGV0IGFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gaSA9IGFkZF9jYXNlIChwcm9wYWdhdGVfZG93biBpKVxuICBsZXQgYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgaSA9IGFkZF9jYXNlIChwcm9wYWdhdGVfdXAgaSlcblxuICBsZXQgaW5jX2N1dCBsb2cgPVxuICAgIG1hdGNoIGxvZy5zdGFjayB3aXRoXG4gICAgfCBbXSAtPiBsb2dcbiAgICB8IHQgOjogcSAtPiB7IGxvZyB3aXRoIGN1cnJlbnRfc3RhY2sgPSB0OyBzdGFjayA9IHE7IGN1dCA9IGxvZy5jdXQgKyAxIH1cblxuICBsZXQgaW5jX2JyYW5jaCBsb2cgPVxuICAgIHtcbiAgICAgIGxvZyB3aXRoXG4gICAgICBzdGFjayA9IGxvZy5jdXJyZW50X3N0YWNrIDo6IGxvZy5zdGFjaztcbiAgICAgIGJyYW5jaCA9IGxvZy5icmFuY2ggKyAxO1xuICAgICAgY3VycmVudF9zdGFjayA9XG4gICAgICAgIHtcbiAgICAgICAgICBsb2cuY3VycmVudF9zdGFjayB3aXRoXG4gICAgICAgICAgY3VycmVudF9icmFuY2ggPSBsb2cuY3VycmVudF9zdGFjay5jdXJyZW50X2JyYW5jaCArIDE7XG4gICAgICAgIH07XG4gICAgfVxuXG4gIGxldCBpbmNfbl9rYXNpbV9ldmVudHMgbG9nID0gbG9nXG4gIGxldCBpbmNfbl9vYnNfZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX25fc2lkZV9ldmVudHMgbG9nID0gbG9nXG4gIGxldCBpbmNfbl9pbml0X2V2ZW50cyBsb2cgPSBsb2dcbiAgbGV0IGluY19jdXRfZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX2tfY3V0X2V2ZW50cyBfayBsb2cgPSBsb2dcbiAgbGV0IHJlc2V0X2N1dF9ldmVudHMgbG9nID0gbG9nXG4gIGxldCBpbmNfc2VsZWN0ZWRfZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX3JlbW92ZWRfZXZlbnRzIGxvZyA9IGxvZ1xuXG4gIGxldCBkdW1wX2NvbXBsZXRlX2xvZyBwYXJhbWV0ZXIgbG9nX2luZm8gPVxuICAgIGxldCBsb2dnZXIgPSBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9jb21wcmVzc2lvbl9zdGF0dXNfbG9nZ2VyIHBhcmFtZXRlciBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIvKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCJTdG9yeSBwcm9maWxpbmdcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIkVsbGFwc2VkX3RpbWU6ICAgICAgICAgICAgICAgICAgJWZcIlxuICAgICAgICAoZWxsYXBzZWRfdGltZSBsb2dfaW5mbylcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIlN0b3J5IHJlc2VhcmNoIHRpbWU6ICAgICAgICAgICAgJWZcIlxuICAgICAgICBsb2dfaW5mby5zdG9yeV90aW1lXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCJFeHBsb3JhdGlvbiBkZXB0aDogICAgICAgICAgICAgICVpXCJcbiAgICAgICAgbG9nX2luZm8uY3VycmVudF9zdGFjay5jdXJyZW50X2JyYW5jaFxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiRXhwbG9yYXRpb24gY3V0czogICAgICAgICAgICAgICAlaVwiIGxvZ19pbmZvLmN1dFxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIqKipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiUHJvcGFnYXRpb24gSGl0czpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgcmVjIGF1eCBrID1cbiAgICAgIGlmIGsgPj0gcHJvcGFnYXRpb25fY2FzZXMgdGhlblxuICAgICAgICAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIgICAgICAgICVzICVpXCIgcHJvcGFnYXRpb25fbGFiZWxzLihrKVxuICAgICAgICAgICAgICBsb2dfaW5mby5wcm9wYWdhdGlvbi4oaylcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBhdXggKGsgKyAxKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IF8gPSBhdXggMSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIqL1wiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgICgpXG5cbiAgbGV0IHRpY2sgbG9nX2luZm8gPVxuICAgIGxldCB0aW1lID0gU3lzLnRpbWUgKCkgaW5cbiAgICBpZiB0aW1lIC0uIGxvZ19pbmZvLmxhc3RfdGljayA+IDYwMC4gdGhlblxuICAgICAgdHJ1ZSwgeyBsb2dfaW5mbyB3aXRoIGxhc3RfdGljayA9IHRpbWUgfVxuICAgIGVsc2VcbiAgICAgIGZhbHNlLCBsb2dfaW5mb1xuXG4gIGxldCBzZXRfZ2xvYmFsX2N1dCBfbiBsb2dfaW5mbyA9IGxvZ19pbmZvXG4gIGxldCBzZXRfcHNldWRvX2ludiBfbiBsb2dfaW5mbyA9IGxvZ19pbmZvXG5lbmRcbiIsIigqKlxuICAgVGltZS1zdGFtcDogPEZlYiAyMiAyMDE4PlxuKilcblxubW9kdWxlIHR5cGUgU2V0X3dpdGhfbG9ncyA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuICB2YWwgc2luZ2xldG9uIDogZWx0IC0+IHRcbiAgdmFsIGlzX3NpbmdsZXRvbiA6IHQgLT4gYm9vbFxuXG4gIHZhbCBhZGQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBhZGRfd2hlbl9ub3RfaW4gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCByZW1vdmUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBtaW51cyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCB1bmlvbiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBkaXNqb2ludF91bmlvbiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBpbnRlciA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBkaWZmIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgdCAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiB0XG5cbiAgdmFsIGNhcmRpbmFsIDogdCAtPiBpbnRcbiAgdmFsIG1lbSA6IGVsdCAtPiB0IC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gIHZhbCBmaWx0ZXIgOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdFxuICB2YWwgZm9yX2FsbCA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gIHZhbCBwYXJ0aXRpb24gOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdCAqIHRcbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBzdWJzZXQgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgaXRlciA6IChlbHQgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgZm9sZF9pbnYgOiAoZWx0IC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gIHZhbCBlbGVtZW50cyA6IHQgLT4gZWx0IGxpc3RcbiAgdmFsIGNob29zZSA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgbWluX2VsdCA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdCA6IHQgLT4gZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIE1hcF93aXRoX2xvZ3MgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSBzZXRcbiAgdHlwZSArJ2EgdFxuXG4gIHZhbCBlbXB0eSA6ICdhIHRcbiAgdmFsIGlzX2VtcHR5IDogJ2EgdCAtPiBib29sXG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiAoZWx0ICogJ2EpIG9wdGlvblxuICB2YWwgbWVtIDogZWx0IC0+ICdhIHQgLT4gYm9vbFxuXG4gIHZhbCBmaW5kX29wdGlvbiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSBvcHRpb25cblxuICB2YWwgZmluZF9kZWZhdWx0IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICBlbHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2FcblxuICB2YWwgZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhXG5cbiAgdmFsIGZpbmRfb3B0aW9uX3dpdGhvdXRfbG9ncyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSBvcHRpb25cblxuICB2YWwgYWRkIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdFxuXG4gIHZhbCBvdmVyd3JpdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIGFkZF9vcl9vdmVyd3JpdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIHJlbW92ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIHJlbW92ZV9vcl9ub3QgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdFxuXG4gIHZhbCB1cGRhdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHRcblxuICB2YWwgbWFwMiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYykgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYyB0XG5cbiAgdmFsIG1hcDJ6IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIGZvbGQyeiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjXG5cbiAgdmFsIGZvbGQyIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYykgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2NcblxuICB2YWwgZm9sZDJfc3BhcnNlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYykgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2NcblxuICB2YWwgaXRlcjJfc3BhcnNlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYiB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyXG5cbiAgdmFsIGRpZmYgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHQgKiAnYSB0XG5cbiAgdmFsIGRpZmZfcHJlZCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICgnYSAtPiAnYSAtPiBib29sKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdCAqICdhIHRcblxuICB2YWwgbWVyZ2UgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHRcblxuICB2YWwgdW5pb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHRcblxuICB2YWwgZm9sZF9yZXN0cmljdGlvbiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChlbHQgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgc2V0IC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2JcblxuICB2YWwgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKGVsdCAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYikgLT5cbiAgICAoZWx0IC0+IEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiIC0+IEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiKSAtPlxuICAgIHNldCAtPlxuICAgICdhIHQgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiXG5cbiAgdmFsIGl0ZXIgOiAoZWx0IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuXG4gIHZhbCBpdGVyMiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlcikgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXJcblxuICB2YWwgZm9sZCA6IChlbHQgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgdmFsIG1hcGkgOiAoZWx0IC0+ICdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgdmFsIG1hcCA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gIHZhbCBmb3JfYWxsIDogKGVsdCAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGZpbHRlcl9vbmUgOiAoZWx0IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gKGVsdCAqICdhKSBvcHRpb25cbiAgdmFsIGNvbXBhcmUgOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgYmluZGluZ3MgOiAnYSB0IC0+IChlbHQgKiAnYSkgbGlzdFxuXG4gIHZhbCBvZl9qc29uIDpcbiAgICA/bGFiX2tleTpzdHJpbmcgLT5cbiAgICA/bGFiX3ZhbHVlOnN0cmluZyAtPlxuICAgID9lcnJvcl9tc2c6c3RyaW5nIC0+XG4gICAgKFlvanNvbi5CYXNpYy50IC0+IGVsdCkgLT5cbiAgICAoWW9qc29uLkJhc2ljLnQgLT4gJ3ZhbHVlKSAtPlxuICAgIFlvanNvbi5CYXNpYy50IC0+XG4gICAgJ3ZhbHVlIHRcblxuICB2YWwgdG9fanNvbiA6XG4gICAgP2xhYl9rZXk6c3RyaW5nIC0+XG4gICAgP2xhYl92YWx1ZTpzdHJpbmcgLT5cbiAgICAoZWx0IC0+IFlvanNvbi5CYXNpYy50KSAtPlxuICAgICgndmFsdWUgLT4gWW9qc29uLkJhc2ljLnQpIC0+XG4gICAgJ3ZhbHVlIHQgLT5cbiAgICBZb2pzb24uQmFzaWMudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfd2l0aF9sb2dzID0gc2lnXG4gIHR5cGUgZWx0XG5cbiAgbW9kdWxlIFNldCA6IFNldF93aXRoX2xvZ3Mgd2l0aCB0eXBlIGVsdCA9IGVsdFxuICBtb2R1bGUgTWFwIDogTWFwX3dpdGhfbG9ncyB3aXRoIHR5cGUgZWx0ID0gZWx0IGFuZCB0eXBlIHNldCA9IFNldC50XG5lbmRcblxubGV0IGxpZnQgZiA9IGYgRXhjZXB0aW9uLndyYXBcblxubW9kdWxlIE1ha2UgKFNfYm90aCA6IFNldE1hcC5TKSA6XG4gIFNfd2l0aF9sb2dzXG4gICAgd2l0aCB0eXBlIGVsdCA9IFNfYm90aC5lbHRcbiAgICAgYW5kIHR5cGUgJ2EgTWFwLnQgPSAnYSBTX2JvdGguTWFwLnRcbiAgICAgYW5kIHR5cGUgU2V0LnQgPSBTX2JvdGguU2V0LnQgPSBzdHJ1Y3RcbiAgdHlwZSBlbHQgPSBTX2JvdGguZWx0XG5cbiAgbW9kdWxlIFNldCA6XG4gICAgU2V0X3dpdGhfbG9ncyB3aXRoIHR5cGUgZWx0ID0gU19ib3RoLmVsdCBhbmQgdHlwZSB0ID0gU19ib3RoLlNldC50ID0gc3RydWN0XG4gICAgdHlwZSBlbHQgPSBTX2JvdGguZWx0XG4gICAgdHlwZSB0ID0gU19ib3RoLlNldC50XG5cbiAgICBsZXQgZW1wdHkgPSBTX2JvdGguU2V0LmVtcHR5XG4gICAgbGV0IGlzX2VtcHR5ID0gU19ib3RoLlNldC5pc19lbXB0eVxuICAgIGxldCBzaW5nbGV0b24gPSBTX2JvdGguU2V0LnNpbmdsZXRvblxuICAgIGxldCBpc19zaW5nbGV0b24gPSBTX2JvdGguU2V0LmlzX3NpbmdsZXRvblxuICAgIGxldCBhZGQgPSBsaWZ0IFNfYm90aC5TZXQuYWRkX3dpdGhfbG9nc1xuXG4gICAgbGV0IGFkZF93aGVuX25vdF9pbiBwIGUgeCBzID1cbiAgICAgIGxldCBlLCBfLCBzID0gKGxpZnQgU19ib3RoLlNldC5hZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MpIHAgZSB4IHMgaW5cbiAgICAgIGUsIHNcblxuICAgIGxldCByZW1vdmUgPSBsaWZ0IFNfYm90aC5TZXQucmVtb3ZlX3dpdGhfbG9nc1xuICAgIGxldCB1bmlvbiA9IGxpZnQgU19ib3RoLlNldC51bmlvbl93aXRoX2xvZ3NcbiAgICBsZXQgZGlzam9pbnRfdW5pb24gPSBsaWZ0IFNfYm90aC5TZXQuZGlzam9pbnRfdW5pb25fd2l0aF9sb2dzXG4gICAgbGV0IGludGVyID0gbGlmdCBTX2JvdGguU2V0LmludGVyX3dpdGhfbG9nc1xuICAgIGxldCBkaWZmID0gbGlmdCBTX2JvdGguU2V0LmRpZmZfd2l0aF9sb2dzXG4gICAgbGV0IG1pbnVzID0gbGlmdCBTX2JvdGguU2V0Lm1pbnVzX3dpdGhfbG9nc1xuICAgIGxldCBjYXJkaW5hbCA9IFNfYm90aC5TZXQuc2l6ZVxuICAgIGxldCBtZW0gPSBTX2JvdGguU2V0Lm1lbVxuICAgIGxldCBleGlzdHMgPSBTX2JvdGguU2V0LmV4aXN0c1xuICAgIGxldCBmaWx0ZXIgPSBTX2JvdGguU2V0LmZpbHRlclxuICAgIGxldCBmb3JfYWxsID0gU19ib3RoLlNldC5mb3JfYWxsXG4gICAgbGV0IHBhcnRpdGlvbiA9IFNfYm90aC5TZXQucGFydGl0aW9uXG4gICAgbGV0IGNvbXBhcmUgPSBTX2JvdGguU2V0LmNvbXBhcmVcbiAgICBsZXQgZXF1YWwgPSBTX2JvdGguU2V0LmVxdWFsXG4gICAgbGV0IHN1YnNldCA9IFNfYm90aC5TZXQuc3Vic2V0XG4gICAgbGV0IGl0ZXIgPSBTX2JvdGguU2V0Lml0ZXJcbiAgICBsZXQgZm9sZCA9IFNfYm90aC5TZXQuZm9sZFxuICAgIGxldCBmb2xkX2ludiA9IFNfYm90aC5TZXQuZm9sZF9pbnZcbiAgICBsZXQgZWxlbWVudHMgPSBTX2JvdGguU2V0LmVsZW1lbnRzXG4gICAgbGV0IGNob29zZSA9IFNfYm90aC5TZXQuY2hvb3NlXG4gICAgbGV0IG1pbl9lbHQgPSBTX2JvdGguU2V0Lm1pbl9lbHRcbiAgICBsZXQgbWF4X2VsdCA9IFNfYm90aC5TZXQubWF4X2VsdFxuICBlbmRcblxuICBtb2R1bGUgTWFwIDpcbiAgICBNYXBfd2l0aF9sb2dzXG4gICAgICB3aXRoIHR5cGUgZWx0ID0gU19ib3RoLmVsdFxuICAgICAgIGFuZCB0eXBlICdhIHQgPSAnYSBTX2JvdGguTWFwLnRcbiAgICAgICBhbmQgdHlwZSBzZXQgPSBTX2JvdGguU2V0LnRcbiAgICAgICBhbmQgdHlwZSBzZXQgPSBTZXQudCA9IHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gU19ib3RoLmVsdFxuICAgIHR5cGUgc2V0ID0gU19ib3RoLlNldC50XG4gICAgdHlwZSArJ2RhdGEgdCA9ICdkYXRhIFNfYm90aC5NYXAudFxuXG4gICAgbGV0IGVtcHR5ID0gU19ib3RoLk1hcC5lbXB0eVxuICAgIGxldCBpc19lbXB0eSA9IFNfYm90aC5NYXAuaXNfZW1wdHlcbiAgICBsZXQgbWluX2VsdCA9IFNfYm90aC5NYXAubWluX2VsdFxuICAgIGxldCBtZW0gPSBTX2JvdGguTWFwLm1lbVxuICAgIGxldCBmaW5kX29wdGlvbiBhIGIgYyBkID0gbGlmdCBTX2JvdGguTWFwLmZpbmRfb3B0aW9uX3dpdGhfbG9ncyBhIGIgYyBkXG4gICAgbGV0IGZpbmRfZGVmYXVsdCBhIGIgYyBkID0gbGlmdCBTX2JvdGguTWFwLmZpbmRfZGVmYXVsdF93aXRoX2xvZ3MgYSBiIGMgZFxuICAgIGxldCBmaW5kX29wdGlvbl93aXRob3V0X2xvZ3MgX2EgYiBjIGQgPSBiLCBTX2JvdGguTWFwLmZpbmRfb3B0aW9uIGMgZFxuICAgIGxldCBmaW5kX2RlZmF1bHRfd2l0aG91dF9sb2dzIF9hIGIgYyBkIGUgPSBiLCBTX2JvdGguTWFwLmZpbmRfZGVmYXVsdCBjIGQgZVxuICAgIGxldCBhZGQgYSBiIGMgZCA9IGxpZnQgU19ib3RoLk1hcC5hZGRfd2l0aF9sb2dzIGEgYiBjIGRcblxuICAgIGxldCBvdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGMgZCBlID1cbiAgICAgIGxldCBlcnJvciwgYm9vbCwgbWFwID1cbiAgICAgICAgbGlmdCBTX2JvdGguTWFwLmFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyBwYXJhbWV0ZXIgZXJyb3IgYyBkIGVcbiAgICAgIGluXG4gICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcImF0dGVtcHQgdG8gb3ZlcndyaXRlIGFuIGFzc29jaWF0aW9uIHRoYXQgZG9lcyBub3QgZXhpc3RcIlxuICAgICAgICAgIChGYWlsdXJlIFwiQXR0ZW1wdCB0byBvdmVyd3JpdGUgYW4gYXNzb2NpYXRpb24gdGhhdCBkb2VzIG5vdCBleGlzdFwiKVxuICAgICAgICAgIG1hcFxuICAgICAgZWxzZVxuICAgICAgICBlcnJvciwgbWFwXG5cbiAgICBsZXQgYWRkX29yX292ZXJ3cml0ZSBhIGIgYyBkIGUgPVxuICAgICAgbGV0IGVycm9yLCBfLCBtYXAgPVxuICAgICAgICBsaWZ0IFNfYm90aC5NYXAuYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIGEgYiBjIGQgZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBtYXBcblxuICAgIGxldCByZW1vdmUgYSBiIGMgZCA9IGxpZnQgU19ib3RoLk1hcC5yZW1vdmVfd2l0aF9sb2dzIGEgYiBjIGRcblxuICAgIGxldCByZW1vdmVfb3Jfbm90IGEgYiBjIGQgPVxuICAgICAgbGV0IGVycm9yLCBfLCBtYXAgPVxuICAgICAgICBsaWZ0IFNfYm90aC5NYXAucmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIGEgYiBjIGRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbWFwXG5cbiAgICBsZXQgdXBkYXRlIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLnVwZGF0ZV93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgbWFwMiBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5tYXAyX3dpdGhfbG9ncyBhIGIgY1xuICAgIGxldCBtYXAyeiBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5tYXAyel93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgZm9sZDJ6IGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLmZvbGQyel93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgZm9sZDIgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAuZm9sZDJfd2l0aF9sb2dzIGEgYiBjXG5cbiAgICBsZXQgaXRlcjIgcGFyYW1ldGVyIGVycm9yIGYgZyBoIG1hcGYgbWFwZyA9XG4gICAgICBmc3RcbiAgICAgICAgKFNfYm90aC5NYXAuZm9sZDJfd2l0aF9sb2dzIEV4Y2VwdGlvbi53cmFwIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAoZnVuIGEgYiBjIGQgKCkgLT4gZiBhIGIgYyBkLCAoKSlcbiAgICAgICAgICAgKGZ1biBhIGIgYyBkICgpIC0+IGcgYSBiIGMgZCwgKCkpXG4gICAgICAgICAgIChmdW4gYSBiIGMgZCBlICgpIC0+IGggYSBiIGMgZCBlLCAoKSlcbiAgICAgICAgICAgbWFwZiBtYXBnICgpKVxuXG4gICAgbGV0IGZvbGQyX3NwYXJzZSBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5mb2xkMl9zcGFyc2Vfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IGl0ZXIyX3NwYXJzZSBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5pdGVyMl9zcGFyc2Vfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IGRpZmYgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAuZGlmZl93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgZGlmZl9wcmVkIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLmRpZmZfcHJlZF93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgbWVyZ2UgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAubWVyZ2Vfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IHVuaW9uIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLnVuaW9uX3dpdGhfbG9ncyBhIGIgY1xuXG4gICAgbGV0IGZvbGRfcmVzdHJpY3Rpb24gYSBiIGMgPVxuICAgICAgbGlmdCBTX2JvdGguTWFwLmZvbGRfcmVzdHJpY3Rpb25fd2l0aF9sb2dzIGEgYiBjXG5cbiAgICBsZXQgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zIGEgYiBjID1cbiAgICAgIGxpZnQgU19ib3RoLk1hcC5mb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIGEgYiBjXG5cbiAgICBsZXQgaXRlciA9IFNfYm90aC5NYXAuaXRlclxuICAgIGxldCBmb2xkID0gU19ib3RoLk1hcC5mb2xkXG4gICAgbGV0IG1hcGkgPSBTX2JvdGguTWFwLm1hcGlcbiAgICBsZXQgbWFwID0gU19ib3RoLk1hcC5tYXBcbiAgICBsZXQgZm9yX2FsbCA9IFNfYm90aC5NYXAuZm9yX2FsbFxuICAgIGxldCBmaWx0ZXJfb25lID0gU19ib3RoLk1hcC5maWx0ZXJfb25lXG4gICAgbGV0IGNvbXBhcmUgPSBTX2JvdGguTWFwLmNvbXBhcmVcbiAgICBsZXQgZXF1YWwgPSBTX2JvdGguTWFwLmVxdWFsXG4gICAgbGV0IGJpbmRpbmdzID0gU19ib3RoLk1hcC5iaW5kaW5nc1xuICAgIGxldCB0b19qc29uID0gU19ib3RoLk1hcC50b19qc29uXG4gICAgbGV0IG9mX2pzb24gPSBTX2JvdGguTWFwLm9mX2pzb25cbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUHJvamVjdGlvbiA9IHNpZ1xuICB0eXBlIGVsdF9hXG4gIHR5cGUgZWx0X2JcbiAgdHlwZSAnYSBtYXBfYVxuICB0eXBlICdhIG1hcF9iXG4gIHR5cGUgc2V0X2FcbiAgdHlwZSBzZXRfYlxuXG4gIHZhbCBwcm9qX21hcCA6XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYiAtPlxuICAgICgnYiAtPiAnYSAtPiAnYikgLT5cbiAgICAnYSBtYXBfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiIG1hcF9iXG5cbiAgdmFsIG1vbmFkaWNfcHJval9tYXAgOlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0X2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2IgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdiIC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYikgLT5cbiAgICAnYSBtYXBfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiIG1hcF9iXG5cbiAgdmFsIG1vbmFkaWNfcHJval9tYXBfaSA6XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHRfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGVsdF9iKSAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYiAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2IgLT5cbiAgICBlbHRfYSAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYiBtYXBfYlxuXG4gIHZhbCBwcm9qX3NldCA6XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBzZXRfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHNldF9iXG5cbiAgdmFsIG1vbmFkaWNfcHJval9zZXQgOlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0X2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgc2V0X2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBzZXRfYlxuXG4gIHZhbCBwYXJ0aXRpb25fc2V0IDpcbiAgICAoZWx0X2EgLT4gZWx0X2IpIC0+XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHNldF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogc2V0X2EgbWFwX2JcblxuICB2YWwgbW9uYWRpY19wYXJ0aXRpb25fc2V0IDpcbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogZWx0X2IpIC0+XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHNldF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogc2V0X2EgbWFwX2JcbmVuZFxuXG5tb2R1bGUgUHJvaiAoQSA6IFNfd2l0aF9sb2dzKSAoQiA6IFNfd2l0aF9sb2dzKSA6XG4gIFByb2plY3Rpb25cbiAgICB3aXRoIHR5cGUgZWx0X2EgPSBBLmVsdFxuICAgICBhbmQgdHlwZSBlbHRfYiA9IEIuZWx0XG4gICAgIGFuZCB0eXBlICdhIG1hcF9hID0gJ2EgQS5NYXAudFxuICAgICBhbmQgdHlwZSAnYSBtYXBfYiA9ICdhIEIuTWFwLnRcbiAgICAgYW5kIHR5cGUgc2V0X2EgPSBBLlNldC50XG4gICAgIGFuZCB0eXBlIHNldF9iID0gQi5TZXQudCA9IHN0cnVjdFxuICBtb2R1bGUgTUEgPSBBLk1hcFxuICBtb2R1bGUgTUIgPSBCLk1hcFxuICBtb2R1bGUgU0EgPSBBLlNldFxuICBtb2R1bGUgU0IgPSBCLlNldFxuXG4gIHR5cGUgZWx0X2EgPSBNQS5lbHRcbiAgdHlwZSBlbHRfYiA9IE1CLmVsdFxuICB0eXBlIHNldF9hID0gU0EudFxuICB0eXBlIHNldF9iID0gU0IudFxuICB0eXBlICdhIG1hcF9hID0gJ2EgTUEudFxuICB0eXBlICdhIG1hcF9iID0gJ2EgTUIudFxuXG4gIGxldCBwcm9qX21hcCBmIHBhcmFtZXRlciBlcnJvciBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSAoZXJyb3IsIG1hcF9iKSAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIG1hdGNoIE1CLmZpbmRfb3B0aW9uX3dpdGhvdXRfbG9ncyBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgbWFwX2Igd2l0aFxuICAgICAgICB8IGVycm9yLCBOb25lIC0+XG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2JcbiAgICAgICAgICAgIChtZXJnZSBpZGVudGl0eV9lbHQgZGF0YV9hKVxuICAgICAgICAgICAgbWFwX2JcbiAgICAgICAgfCBlcnJvciwgU29tZSBvbGQgLT5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiAobWVyZ2Ugb2xkIGRhdGFfYSkgbWFwX2IpXG4gICAgICBtYXAgKGVycm9yLCBNQi5lbXB0eSlcblxuICBsZXQgbW9uYWRpY19wcm9qX21hcF9pIGYgcGFyYW1ldGVyIGVycm9yIGlkZW50aXR5X2VsdCBtZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIChlcnJvciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBlcnJvciwga2V5X2IgPSBmIHBhcmFtZXRlciBlcnJvciBrZXlfYSBpblxuICAgICAgICBtYXRjaCBNQi5maW5kX29wdGlvbl93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGVycm9yIGtleV9iIG1hcF9iIHdpdGhcbiAgICAgICAgfCBlcnJvciwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgZGF0YScgPSBtZXJnZSBwYXJhbWV0ZXIgZXJyb3IgaWRlbnRpdHlfZWx0IGtleV9hIGRhdGFfYSBpblxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIGRhdGEnIG1hcF9iXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgb2xkIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBkYXRhJyA9IG1lcmdlIHBhcmFtZXRlciBlcnJvciBvbGQga2V5X2EgZGF0YV9hIGluXG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgZGF0YScgbWFwX2IpXG4gICAgICBtYXAgKGVycm9yLCBNQi5lbXB0eSlcblxuICBsZXQgbW9uYWRpY19wcm9qX21hcCBmIHBhcmFtZXRlciBlcnJvciBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBtb25hZGljX3Byb2pfbWFwX2kgZiBwYXJhbWV0ZXIgZXJyb3IgaWRlbnRpdHlfZWx0XG4gICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBvbGQgXyBkYXRhX2EgLT4gbWVyZ2UgcGFyYW1ldGVyIGVycm9yIG9sZCBkYXRhX2EpXG4gICAgICBtYXBcblxuICBsZXQgcGFydGl0aW9uX3NldCBmIHBhcmFtZXRlciBlcnJvciBzZXQgPVxuICAgIFNBLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgKGVycm9yLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBtYXRjaCBNQi5maW5kX29wdGlvbl93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGVycm9yIGtleV9iIG1hcF9iIHdpdGhcbiAgICAgICAgfCBlcnJvciwgTm9uZSAtPlxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIChTQS5zaW5nbGV0b24ga2V5X2EpIG1hcF9iXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgb2xkIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBuZXdzZXQgPSBTQS5hZGQgcGFyYW1ldGVyIGVycm9yIGtleV9hIG9sZCBpblxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIG5ld3NldCBtYXBfYilcbiAgICAgIHNldCAoZXJyb3IsIE1CLmVtcHR5KVxuXG4gIGxldCBtb25hZGljX3BhcnRpdGlvbl9zZXQgZiBwYXJhbWV0ZXIgZXJyb3Igc2V0ID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIChlcnJvciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBlcnJvciwga2V5X2IgPSBmIHBhcmFtZXRlciBlcnJvciBrZXlfYSBpblxuICAgICAgICBtYXRjaCBNQi5maW5kX29wdGlvbl93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGVycm9yIGtleV9iIG1hcF9iIHdpdGhcbiAgICAgICAgfCBlcnJvciwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgZGF0YScgPSBlcnJvciwgU0Euc2luZ2xldG9uIGtleV9hIGluXG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgZGF0YScgbWFwX2JcbiAgICAgICAgfCBlcnJvciwgU29tZSBvbGQgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGRhdGEnID0gU0EuYWRkX3doZW5fbm90X2luIHBhcmFtZXRlciBlcnJvciBrZXlfYSBvbGQgaW5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiBkYXRhJyBtYXBfYilcbiAgICAgIHNldCAoZXJyb3IsIE1CLmVtcHR5KVxuXG4gIGxldCBwcm9qX3NldCBmIHBhcmFtZXRlciBlcnJvciBzZXRfYSA9XG4gICAgU0EuZm9sZFxuICAgICAgKGZ1biBrZXlfYSAoZXJyb3IsIHNldF9iKSAtPlxuICAgICAgICBTQi5hZGRfd2hlbl9ub3RfaW4gcGFyYW1ldGVyIGVycm9yIChmIGtleV9hKSBzZXRfYilcbiAgICAgIHNldF9hIChlcnJvciwgU0IuZW1wdHkpXG5cbiAgbGV0IG1vbmFkaWNfcHJval9zZXQgZiBwYXJhbWV0ZXIgZXJyb3Igc2V0X2EgPVxuICAgIFNBLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgKGVycm9yLCBzZXRfYikgLT5cbiAgICAgICAgbGV0IGVycm9yLCBrZXlfYiA9IGYgcGFyYW1ldGVyIGVycm9yIGtleV9hIGluXG4gICAgICAgIFNCLmFkZF93aGVuX25vdF9pbiBwYXJhbWV0ZXIgZXJyb3Iga2V5X2Igc2V0X2IpXG4gICAgICBzZXRfYSAoZXJyb3IsIFNCLmVtcHR5KVxuZW5kXG5cbm1vZHVsZSB0eXBlIFByb2plY3Rpb24yID0gc2lnXG4gIHR5cGUgZWx0X2FcbiAgdHlwZSBlbHRfYlxuICB0eXBlIGVsdF9jXG4gIHR5cGUgJ2EgbWFwX2FcbiAgdHlwZSAnYSBtYXBfYlxuICB0eXBlICdhIG1hcF9jXG5cbiAgdmFsIHByb2oyIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIChlbHRfYSAtPiBlbHRfYykgLT5cbiAgICAnYiAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2IgLT5cbiAgICAnYSAtPlxuICAgICdiKSAtPlxuICAgICdhIG1hcF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IgbWFwX2MgbWFwX2JcblxuICB2YWwgcHJvajJfbW9uYWRpYyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdtdmJkdV9oYW5kbGVyIC0+XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIChlbHRfYSAtPiBlbHRfYykgLT5cbiAgICAnYiAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ212YmR1X2hhbmRsZXIgLT5cbiAgICAnYiAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ212YmR1X2hhbmRsZXIgKiAnYikgLT5cbiAgICAnYSBtYXBfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdtdmJkdV9oYW5kbGVyICogJ2IgbWFwX2MgbWFwX2JcbmVuZFxuXG5tb2R1bGUgUHJvajIgKEEgOiBTX3dpdGhfbG9ncykgKEIgOiBTX3dpdGhfbG9ncykgKEMgOiBTX3dpdGhfbG9ncykgOlxuICBQcm9qZWN0aW9uMlxuICAgIHdpdGggdHlwZSBlbHRfYSA9IEEuZWx0XG4gICAgIGFuZCB0eXBlIGVsdF9iID0gQi5lbHRcbiAgICAgYW5kIHR5cGUgZWx0X2MgPSBDLmVsdFxuICAgICBhbmQgdHlwZSAnYSBtYXBfYSA9ICdhIEEuTWFwLnRcbiAgICAgYW5kIHR5cGUgJ2EgbWFwX2IgPSAnYSBCLk1hcC50XG4gICAgIGFuZCB0eXBlICdhIG1hcF9jID0gJ2EgQy5NYXAudCA9IHN0cnVjdFxuICBtb2R1bGUgTUEgPSBBLk1hcFxuICBtb2R1bGUgTUIgPSBCLk1hcFxuICBtb2R1bGUgTUMgPSBDLk1hcFxuXG4gIHR5cGUgZWx0X2EgPSBNQS5lbHRcbiAgdHlwZSBlbHRfYiA9IE1CLmVsdFxuICB0eXBlIGVsdF9jID0gTUMuZWx0XG4gIHR5cGUgJ2EgbWFwX2EgPSAnYSBNQS50XG4gIHR5cGUgJ2EgbWFwX2IgPSAnYSBNQi50XG4gIHR5cGUgJ2EgbWFwX2MgPSAnYSBNQy50XG5cbiAgbGV0IHByb2oyIHBhcmFtZXRlciBlcnJvciBmIGcgaWRlbnRpdHlfZWx0IG1lcmdlIG1hcCA9XG4gICAgTUEuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBkYXRhX2EgKGVycm9yLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBsZXQga2V5X2MgPSBnIGtleV9hIGluXG4gICAgICAgIGxldCBlcnJvciwgc3VibWFwID1cbiAgICAgICAgICBNQi5maW5kX2RlZmF1bHRfd2l0aG91dF9sb2dzIHBhcmFtZXRlciBlcnJvciBNQy5lbXB0eSBrZXlfYiBtYXBfYlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGZpbmRfZGVmYXVsdCA9XG4gICAgICAgICAgTUMuZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyBwYXJhbWV0ZXIgZXJyb3IgaWRlbnRpdHlfZWx0IGtleV9jIHN1Ym1hcFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIHN1Ym1hcCA9XG4gICAgICAgICAgTUMuYWRkIHBhcmFtZXRlciBlcnJvciBrZXlfY1xuICAgICAgICAgICAgKG1lcmdlIHBhcmFtZXRlciBlcnJvciBmaW5kX2RlZmF1bHQgZGF0YV9hKVxuICAgICAgICAgICAgc3VibWFwXG4gICAgICAgIGluXG4gICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIHN1Ym1hcCBtYXBfYilcbiAgICAgIG1hcCAoZXJyb3IsIE1CLmVtcHR5KVxuXG4gIGxldCBwcm9qMl9tb25hZGljIHBhcmFtZXRlciBoYW5kbGVyIG12YmR1X2hhbmRsZXIgZiBnIGlkZW50aXR5X2VsdCBtZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIChoYW5kbGVyLCBtdmJkdV9oYW5kbGVyLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBsZXQga2V5X2MgPSBnIGtleV9hIGluXG4gICAgICAgIGxldCBoYW5kbGVyLCBzdWJtYXAgPVxuICAgICAgICAgIE1CLmZpbmRfZGVmYXVsdF93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGhhbmRsZXIgTUMuZW1wdHkga2V5X2IgbWFwX2JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGhhbmRsZXIsIGZpbmRfZGVmYXVsdCA9XG4gICAgICAgICAgTUMuZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyBwYXJhbWV0ZXIgaGFuZGxlciBpZGVudGl0eV9lbHQga2V5X2NcbiAgICAgICAgICAgIHN1Ym1hcFxuICAgICAgICBpblxuICAgICAgICBsZXQgaGFuZGxlciwgbXZiZHVfaGFuZGxlciwgZGF0YScgPVxuICAgICAgICAgIG1lcmdlIHBhcmFtZXRlciBoYW5kbGVyIG12YmR1X2hhbmRsZXIgZmluZF9kZWZhdWx0IGRhdGFfYVxuICAgICAgICBpblxuICAgICAgICBsZXQgaGFuZGxlciwgc3VibWFwID0gTUMuYWRkIHBhcmFtZXRlciBoYW5kbGVyIGtleV9jIGRhdGEnIHN1Ym1hcCBpblxuICAgICAgICBsZXQgaGFuZGxlciwgYWRkID1cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBoYW5kbGVyIGtleV9iIHN1Ym1hcCBtYXBfYlxuICAgICAgICBpblxuICAgICAgICBoYW5kbGVyLCBtdmJkdV9oYW5kbGVyLCBhZGQpXG4gICAgICBtYXBcbiAgICAgIChoYW5kbGVyLCBtdmJkdV9oYW5kbGVyLCBNQi5lbXB0eSlcbmVuZFxuIiwiKCoqXG4gICogZmlmby5tbFxuICAqIG9wZW5rYXBwYVxuICAqIErDqXLDtG1lIEZlcmV0ICYgTHkgS2ltIFF1eWVuLCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqXG4gICogQ3JlYXRpb246IDIwMTUsIHRoZSAyN3RoIG9mIEp1bHlcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEF1ZyAwNiAyMDE2PlxuICAqXG4gICogV29yayBsaXN0IC0gRklGT1xuICAqXG4gICogQ29weXJpZ2h0IDIwMTAsMjAxMSwyMDEyLDIwMTMsMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm9wZW4gU2V0TWFwXG5cbmxldCBsb2NhbF90cmFjZSA9IGZhbHNlXG5cbm1vZHVsZSB0eXBlIFdvcmtfbGlzdCA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuXG4gIHZhbCBwdXNoIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgcG9wIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIChlbHQgb3B0aW9uICogdClcblxuICB2YWwgZm9sZF9sZWZ0IDogKCdhIC0+IGVsdCAtPiAnYSkgLT4gJ2EgLT4gdCAtPiAnYVxuICB2YWwgcHJpbnRfd2wgOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+IHQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBXbE1ha2UgKE9yZCA6IE9yZGVyZWRUeXBlIHdpdGggdHlwZSB0ID0gaW50KSA9IHN0cnVjdFxuICBtb2R1bGUgV1NldE1hcCA9IE1hcF93cmFwcGVyLk1ha2UgKFNldE1hcC5NYWtlIChPcmQpKVxuICBtb2R1bGUgV1NldCA9IFdTZXRNYXAuU2V0XG5cbiAgdHlwZSBlbHQgPSBPcmQudFxuICB0eXBlIHQgPSBlbHQgbGlzdCAqIGVsdCBsaXN0ICogV1NldC50XG5cbiAgbGV0IGVtcHR5ID0gW10sIFtdLCBXU2V0LmVtcHR5XG5cbiAgbGV0IGlzX2VtcHR5IHggPVxuICAgIGxldCBfLCBfLCBwb29sID0geCBpblxuICAgIFdTZXQuaXNfZW1wdHkgcG9vbFxuXG4gIGxldCBwdXNoIHBhcmFtZXRlciBlcnJvciBlIHggPVxuICAgIGxldCBpbl9saXN0LCBvdXRfbGlzdCwgcG9vbCA9IHggaW5cbiAgICBpZiBXU2V0Lm1lbSBlIHBvb2wgdGhlblxuICAgICAgZXJyb3IsIHhcbiAgICBlbHNlIChcbiAgICAgIGxldCBlcnJvcicsIGFkZF9lbHQgPSBXU2V0LmFkZCBwYXJhbWV0ZXIgZXJyb3IgZSBwb29sIGluXG4gICAgICBsZXQgZXJyb3IgPVxuICAgICAgICBFeGNlcHRpb24uY2hlY2tfcG9pbnQgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVyIGVycm9yIGVycm9yJyBfX1BPU19fIEV4aXRcbiAgICAgIGluXG4gICAgICBlcnJvciwgKGUgOjogaW5fbGlzdCwgb3V0X2xpc3QsIGFkZF9lbHQpXG4gICAgKVxuXG4gIGxldCBmb2xkX2xlZnQgZiBhY2MgeCA9XG4gICAgbGV0IGluX2xpc3QsIG91dF9saXN0LCBfID0geCBpblxuICAgIExpc3QuZm9sZF9sZWZ0IGYgKExpc3QuZm9sZF9sZWZ0IGYgYWNjIG91dF9saXN0KSAoTGlzdC5yZXYgaW5fbGlzdClcblxuICBsZXQgcHJpbnRfd2wgcGFyYW1ldGVycyB3bCA9XG4gICAgKCpsZXQgXyA9IGZvbGRfbGVmdFxuICAgICAgKGZ1biAgKCkgYSAtPiBQcmludGYuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nIHBhcmFtZXRlcnMpIFwiJWkgXCIgYSlcbiAgICAgICgpIHdsXG4gICAgICBpblxuICAgICAgKCpwcmludF9uZXdsaW5lKCkqKVxuICAgICAgbGV0IF8gPSBwcmludF9uZXdsaW5lICgpIGluKilcbiAgICBsZXQgXywgXywgc2V0ID0gd2wgaW5cbiAgICBXU2V0Lml0ZXJcbiAgICAgIChmdW4gaSAtPlxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSBcIiVpIFwiIGkpXG4gICAgICBzZXQ7XG4gICAgTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCJcXG5cIlxuXG4gIGxldCByZWMgcG9wIHBhcmFtZXRlciBlcnJvciB4ID1cbiAgICBsZXQgaW5fbGlzdCwgb3V0X2xpc3QsIHBvb2wgPSB4IGluXG4gICAgaWYgaXNfZW1wdHkgeCB0aGVuXG4gICAgICBlcnJvciwgKE5vbmUsIHgpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBvdXRfbGlzdCB3aXRoXG4gICAgICB8IFtdIC0+IHBvcCBwYXJhbWV0ZXIgZXJyb3IgKFtdLCBMaXN0LnJldiBpbl9saXN0LCBwb29sKVxuICAgICAgfCBoIDo6IHRsIC0+XG4gICAgICAgIGxldCBlcnJvciwgcmVtb3ZlX2VsdCA9IFdTZXQucmVtb3ZlIHBhcmFtZXRlciBlcnJvciBoIHBvb2wgaW5cbiAgICAgICAgZXJyb3IsIChTb21lIGgsIChpbl9saXN0LCB0bCwgcmVtb3ZlX2VsdCkpXG4gICAgKVxuXG4gICgqZm9yIGRlYnVnKilcbiAgKCogbGV0IHJlYyBwb3AgcGFyYW1ldGVyIGVycm9yIHggPVxuICAgICBsZXQgaW5fbGlzdCwgb3V0X2xpc3QsIHBvb2wgPSB4IGluXG4gICAgIGlmIGlzX2VtcHR5IHhcbiAgICAgdGhlblxuICAgICBlcnJvciwgKE5vbmUsIHgpXG4gICAgIGVsc2VcbiAgICAgYmVnaW5cbiAgICAgbWF0Y2ggb3V0X2xpc3Qgd2l0aFxuICAgICB8IFtdIC0+IHBvcCBwYXJhbWV0ZXIgZXJyb3IgKFtdLCAoTGlzdC5yZXYgaW5fbGlzdCksIHBvb2wpXG4gICAgIHwgaCA6OiB0bCAtPlxuICAgICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nIHBhcmFtZXRlcilcbiAgICAgXCJCRUZPUkUgUkVNT1ZFICVpIFwiIGggaW5cbiAgICAgbGV0IF8gPSAgV1NldC5pdGVyIChmdW4gaSAtPlxuICAgICBQcmludGYuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nIHBhcmFtZXRlcikgXCIlaSBcIiBpKSBwb29sIGluXG4gICAgIGxldCBlcnJvcixyZW1vdmVfZWx0ID0gV1NldC5yZW1vdmUgcGFyYW1ldGVyIGVycm9yIGggcG9vbCBpblxuICAgICBsZXQgXyA9ICBXU2V0Lml0ZXIgKGZ1biBpIC0+XG4gICAgIFByaW50Zi5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2cgcGFyYW1ldGVyKSBcIiVpIFwiIGkpIHJlbW92ZV9lbHRcbiAgICAgaW5cbiAgICAgZXJyb3IsICgoU29tZSBoKSwgKGluX2xpc3QsIHRsLCByZW1vdmVfZWx0KSlcbiAgICAgZW5kKilcblxuICAoKmZvciBkZWJ1ZyopXG4gICgqbGV0IHB1c2ggcCBlIGYgeCA9XG4gICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZyBwKSBcIkJFRk9SRSBQVVVTSCAlaVxcbiBcIiBmIGluXG4gICAgbGV0IF8gPSBwcmludF93bCBwIHggaW5cbiAgICBsZXQgZXJyb3Isd2wgPSBwdXNoIHAgZSBmIHggaW5cbiAgICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2cgcCkgXCJPVVRQVVRcXG5cIiBpblxuICAgIGxldCBfID0gcHJpbnRfd2wgcCB3bCBpblxuICAgIGxldCBfID0gUHJpbnRmLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZyBwKSBcIlxcblwiIGluXG4gICAgZXJyb3Isd2wgKilcbmVuZFxuXG5tb2R1bGUgSW50V0wgPSBNb2RzLkludE1hcFxuIiwiKCoqXG4gICAqIGludF9zdG9yYWdlLm1sXG4gICAqXG4gICAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxMC0wNy0yNyBmZXJldD5cbiAgICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxBcHIgMTMgMjAxOD5cbiAgICpcbiAgICogb3BlbmthcHBhXG4gICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgKlxuICAgKlxuICAgKiBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgcHJpbWl0aXZlcyB0byBkZWFsIHdpdGggc3RvcmFnZSBmdW5jdGlvbnNcbiAgICpcbiAgICogQ29weXJpZ2h0IDIwMTAsMjAxMSwyMDEyLDIwMTMsMjAxNCwyMDE1IEluc3RpdHV0IE5hdGlvbmFsXG4gICAqIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUuXG4gICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgKCdhLCAnYikgdW5hcnkgPVxuICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAnYSAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYlxuXG50eXBlICgnYSwgJ2IsICdjKSBiaW5hcnkgPVxuICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAnYSAtPlxuICAnYiAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnY1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgdGVybmFyeSA9XG4gIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICdhIC0+XG4gICdiIC0+XG4gICdjIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdkXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgcXVhdGVybmFyeSA9XG4gIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICdhIC0+XG4gICdiIC0+XG4gICdjIC0+XG4gICdkIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdlXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsICdnKSBzZXh0ZXJuYXJ5ID1cbiAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgJ2EgLT5cbiAgJ2IgLT5cbiAgJ2MgLT5cbiAgJ2QgLT5cbiAgJ2UgLT5cbiAgJ2YgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2dcblxudHlwZSAnYSB1bmFyeV9ub19vdXRwdXQgPVxuICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAnYSAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXJcblxudHlwZSAoJ2EsICdiKSBiaW5hcnlfbm9fb3V0cHV0ID1cbiAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgJ2EgLT5cbiAgJ2IgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyXG5cbm1vZHVsZSB0eXBlIFN0b3JhZ2UgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUga2V5XG4gIHR5cGUgZGltZW5zaW9uXG5cbiAgdmFsIGNyZWF0ZSA6IChkaW1lbnNpb24sICdhIHQpIHVuYXJ5XG4gIHZhbCBjcmVhdGVfYmlnZ2VzdF9rZXkgOiAoa2V5LCAnYSB0KSB1bmFyeVxuICB2YWwgZXhwYW5kX2FuZF9jb3B5IDogKCdhIHQsIGRpbWVuc2lvbiwgJ2EgdCkgYmluYXJ5XG4gIHZhbCBpbml0IDogKGRpbWVuc2lvbiwgKGtleSwgJ2EpIHVuYXJ5LCAnYSB0KSBiaW5hcnlcbiAgdmFsIHNldCA6IChrZXksICdhLCAnYSB0LCAnYSB0KSB0ZXJuYXJ5XG4gIHZhbCBmcmVlIDogKGtleSwgJ2EgdCwgJ2EgdCkgYmluYXJ5XG4gIHZhbCBnZXQgOiAoa2V5LCAnYSB0LCAnYSBvcHRpb24pIGJpbmFyeVxuICB2YWwgdW5zYWZlX2dldCA6IChrZXksICdhIHQsICdhIG9wdGlvbikgYmluYXJ5XG4gIHZhbCBkaW1lbnNpb24gOiAoJ2EgdCwgZGltZW5zaW9uKSB1bmFyeVxuICB2YWwgcHJpbnQgOiAoJ2EgdW5hcnlfbm9fb3V0cHV0LCAnYSB0KSBiaW5hcnlfbm9fb3V0cHV0XG4gIHZhbCBrZXlfbGlzdCA6ICgnYSB0LCBrZXkgbGlzdCkgdW5hcnlcbiAgdmFsIGl0ZXIgOiAoKGtleSwgJ2EpIGJpbmFyeV9ub19vdXRwdXQsICdhIHQpIGJpbmFyeV9ub19vdXRwdXRcbiAgdmFsIGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gOiAoKGtleSwgJ2EsICdiLCAnYikgdGVybmFyeSwgJ2EgdCwgJ2IsICdiKSB0ZXJuYXJ5XG4gIHZhbCBmb2xkIDogKChrZXksICdhLCAnYiwgJ2IpIHRlcm5hcnksICdhIHQsICdiLCAnYikgdGVybmFyeVxuXG4gIHZhbCBmb2xkMiA6XG4gICAgKCAoa2V5LCAnYSwgJ2MsICdjKSB0ZXJuYXJ5LFxuICAgICAgKGtleSwgJ2IsICdjLCAnYykgdGVybmFyeSxcbiAgICAgIChrZXksICdhLCAnYiwgJ2MsICdjKSBxdWF0ZXJuYXJ5LFxuICAgICAgJ2EgdCxcbiAgICAgICdiIHQsXG4gICAgICAnYyxcbiAgICAgICdjIClcbiAgICBzZXh0ZXJuYXJ5XG5cbiAgdmFsIGZvbGQyX2NvbW1vbiA6XG4gICAgKChrZXksICdhLCAnYiwgJ2MsICdjKSBxdWF0ZXJuYXJ5LCAnYSB0LCAnYiB0LCAnYywgJ2MpIHF1YXRlcm5hcnlcblxuICB2YWwgZm9yX2FsbCA6ICgoa2V5LCAnYSwgYm9vbCkgYmluYXJ5LCAnYSB0LCBib29sKSBiaW5hcnlcbiAgdmFsIGZyZWVfYWxsIDogKCdhIHQsICdhIHQpIHVuYXJ5XG5lbmRcblxubGV0IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgbWggcG9zIGV4biB2YWx1ZSA9XG4gIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgbWggcG9zIGV4biB2YWx1ZVxuXG5tb2R1bGUgSW50X3N0b3JhZ2VfaW1wZXJhdGlmIDpcbiAgU3RvcmFnZSB3aXRoIHR5cGUga2V5ID0gaW50IGFuZCB0eXBlIGRpbWVuc2lvbiA9IGludCA9IHN0cnVjdFxuICB0eXBlIGtleSA9IGludFxuICB0eXBlIGRpbWVuc2lvbiA9IGludFxuICB0eXBlICdhIHQgPSB7IGFycmF5OiAnYSBvcHRpb24gYXJyYXk7IHNpemU6IGludCB9XG5cbiAgbGV0IGRpbWVuc2lvbiBfIGVycm9yIGEgPSBlcnJvciwgYS5zaXplXG5cbiAgbGV0IGtleV9saXN0IF9wYXJlbWV0ZXJzIGVycm9yIHQgPVxuICAgIGxldCBzaXplID0gdC5zaXplIGluXG4gICAgbGV0IGFycmF5ID0gdC5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgc29sID1cbiAgICAgIGlmIGsgPCAwIHRoZW5cbiAgICAgICAgZXJyb3IsIHNvbFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFycmF5LihrKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggKGsgLSAxKSBzb2xcbiAgICAgICAgfCBTb21lIF8gLT4gYXV4IChrIC0gMSkgKGsgOjogc29sKVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IHNpemUgW11cblxuICBsZXQgcmVjIGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIHNpemUgPVxuICAgIGlmIHNpemUgPCAwIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBhcnJheSA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIDAgaW5cbiAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGFycmF5XG4gICAgKSBlbHNlXG4gICAgICBlcnJvciwgeyBhcnJheSA9IEFycmF5Lm1ha2UgKHNpemUgKyAxKSBOb25lOyBzaXplIH1cblxuICBsZXQgY3JlYXRlX2JpZ2dlc3Rfa2V5IHBhcmFtZXRlcnMgZXJyb3IgeCA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIHhcblxuICBsZXQgZXhwYW5kX2FuZF9jb3B5IHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgc2l6ZSA9XG4gICAgbGV0IGVycm9yLCBkaW1lbnNpb24gPSBkaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBhcnJheSBpblxuICAgIGlmIGRpbWVuc2lvbiA8IHNpemUgdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIGFycmF5JyA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIHNpemUgaW5cbiAgICAgIGxldCBfID0gQXJyYXkuYmxpdCBhcnJheS5hcnJheSAwIGFycmF5Jy5hcnJheSAwIGRpbWVuc2lvbiBpblxuICAgICAgZXJyb3IsIGFycmF5J1xuICAgICkgZWxzZVxuICAgICAgZXJyb3IsIHsgYXJyYXkgPSBBcnJheS5zdWIgYXJyYXkuYXJyYXkgMCBzaXplOyBzaXplIH1cblxuICBsZXQgc2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGFycmF5ID1cbiAgICBpZiBrZXkgPiBhcnJheS5zaXplIHx8IGtleSA8IDAgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBQcmludGYuZnByaW50ZiBzdGRvdXQgXCIlaSAlaVwiIGtleSBhcnJheS5zaXplIGluXG4gICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBhcnJheVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgXyA9IGFycmF5LmFycmF5LihrZXkpIDwtIFNvbWUgdmFsdWUgaW5cbiAgICAgIGVycm9yLCBhcnJheVxuICAgIClcblxuICBsZXQgaW5pdCBwYXJhbWV0ZXJzIGVycm9yIHNpemUgZiA9XG4gICAgaWYgc2l6ZSA8IDAgdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIGFycmF5ID0gY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgMCBpblxuICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYXJyYXlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBhcnJheSA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIHNpemUgaW5cbiAgICAgIGxldCByZWMgYXV4IGsgZXJyb3IgYXJyYXkgPVxuICAgICAgICBpZiBrID4gc2l6ZSB0aGVuXG4gICAgICAgICAgZXJyb3IsIGFycmF5XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgdmFsdWUgPSBmIHBhcmFtZXRlcnMgZXJyb3IgayBpblxuICAgICAgICAgIGxldCBlcnJvciwgYXJyYXkgPSBzZXQgcGFyYW1ldGVycyBlcnJvciBrIHZhbHVlIGFycmF5IGluXG4gICAgICAgICAgYXV4IChrICsgMSkgZXJyb3IgYXJyYXlcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCAwIGVycm9yIGFycmF5XG4gICAgKVxuXG4gIGxldCBnZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgIGlmIGtleSA+IGFycmF5LnNpemUgfHwga2V5IDwgMCB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICBcIjEzMDolaVxcblwiIGtleVxuICAgICAgaW5cbiAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IE5vbmVcbiAgICApIGVsc2UgKFxuICAgICAgbWF0Y2ggYXJyYXkuYXJyYXkuKGtleSkgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICBcIjEzMzolaVxcblwiIGtleVxuICAgICAgICBpblxuICAgICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBOb25lXG4gICAgICB8IGEgLT4gZXJyb3IsIGFcbiAgICApXG5cbiAgbGV0IGZyZWUgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgIGlmIGtleSA+IGFycmF5LnNpemUgfHwga2V5IDwgMCB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgXyA9IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IE5vbmUgaW5cbiAgICAgIGVycm9yLCBhcnJheVxuICAgICkgZWxzZSAoXG4gICAgICBtYXRjaCBhcnJheS5hcnJheS4oa2V5KSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGVycm9yLCBfID0gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgTm9uZSBpblxuICAgICAgICBlcnJvciwgYXJyYXlcbiAgICAgIHwgXyAtPlxuICAgICAgICBsZXQgKCkgPSBhcnJheS5hcnJheS4oa2V5KSA8LSBOb25lIGluXG4gICAgICAgIGVycm9yLCBhcnJheVxuICAgIClcblxuICBsZXQgdW5zYWZlX2dldCBfcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgIGlmIGtleSA+IGFycmF5LnNpemUgfHwga2V5IDwgMCB0aGVuXG4gICAgICBlcnJvciwgTm9uZVxuICAgIGVsc2VcbiAgICAgIGVycm9yLCBhcnJheS5hcnJheS4oa2V5KVxuXG4gIGxldCBwcmludCBwYXJhbWV0ZXJzIGVycm9yIHByaW50X2VsdCBhcnJheSA9XG4gICAgbGV0IHJlYyBhdXggaSBlcnJvciA9XG4gICAgICBpZiBpID4gYXJyYXkuc2l6ZSB0aGVuXG4gICAgICAgIGVycm9yXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICBtYXRjaCBhcnJheS5hcnJheS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvclxuICAgICAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICBcIiVzJWQ6XCJcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgaVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBhcmFtZXRlcnMgPVxuICAgICAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLnVwZGF0ZV9wcmVmaXggcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgIChzdHJpbmdfb2ZfaW50IGkgXiBcIjpcIilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IgPSBwcmludF9lbHQgcGFyYW1ldGVycyBlcnJvciBlbHQgaW5cbiAgICAgICAgICAgIGVycm9yXG4gICAgICAgIGluXG4gICAgICAgIGF1eCAoaSArIDEpIGVycm9yXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCBlcnJvclxuXG4gIGxldCBpdGVyIHBhcmFtZXRlciBlcnJvciBmIHQgPVxuICAgIGxldCBzaXplID0gdC5zaXplIGluXG4gICAgbGV0IGFycmF5ID0gdC5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgZXJyb3IgPVxuICAgICAgaWYgayA+IHNpemUgdGhlblxuICAgICAgICBlcnJvclxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFycmF5LihrKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggKGsgKyAxKSBlcnJvclxuICAgICAgICB8IFNvbWUgeCAtPiBhdXggKGsgKyAxKSAoZiBwYXJhbWV0ZXIgZXJyb3IgayB4KVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgZXJyb3JcblxuICBsZXQgZm9sZCBwYXJhbWV0ZXIgZXJyb3IgZiB0IGluaXQgPVxuICAgIGxldCBzaXplID0gdC5zaXplIGluXG4gICAgbGV0IGFycmF5ID0gdC5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgcmVtYW5lbnQgPVxuICAgICAgaWYgayA+IHNpemUgdGhlblxuICAgICAgICByZW1hbmVudFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFycmF5LihrKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggKGsgKyAxKSByZW1hbmVudFxuICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgc29sID0gcmVtYW5lbnQgaW5cbiAgICAgICAgICBhdXggKGsgKyAxKSAoZiBwYXJhbWV0ZXIgZXJyb3IgayB4IHNvbClcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCAwIChlcnJvciwgaW5pdClcblxuICBsZXQgZm9yX2FsbCBwYXJhbWV0ZXIgZXJyb3IgZiB0ID1cbiAgICBsZXQgc2l6ZSA9IHQuc2l6ZSBpblxuICAgIGxldCBhcnJheSA9IHQuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIGVycm9yID1cbiAgICAgIGlmIGsgPiBzaXplIHRoZW5cbiAgICAgICAgZXJyb3IsIHRydWVcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhcnJheS4oaykgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IChrICsgMSkgZXJyb3JcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wgPSBmIHBhcmFtZXRlciBlcnJvciBrIHggaW5cbiAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgIGF1eCAoayArIDEpIGVycm9yXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGZhbHNlXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCBlcnJvclxuXG4gIGxldCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIHBhcmFtZXRlciBlcnJvciBmIHQgaW5pdCA9XG4gICAgbGV0IHNpemUgPSB0LnNpemUgaW5cbiAgICBsZXQgYXJyYXkgPSB0LmFycmF5IGluXG4gICAgbGV0IHJlYyBhdXggayByZW1hbmVudCA9XG4gICAgICBpZiBrID4gc2l6ZSB0aGVuXG4gICAgICAgIHJlbWFuZW50XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYXJyYXkuKGspIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGF1eCAoayArIDEpIHJlbWFuZW50XG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBzb2wgPSByZW1hbmVudCBpblxuICAgICAgICAgIGxldCBvdXRwdXRfb3B0ID1cbiAgICAgICAgICAgIHRyeSBTb21lIChmIHBhcmFtZXRlciBlcnJvciBrIHggc29sKSB3aXRoIFN5cy5CcmVhayAtPiBOb25lXG4gICAgICAgICAgaW5cbiAgICAgICAgICAobWF0Y2ggb3V0cHV0X29wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHJlbWFuZW50XG4gICAgICAgICAgfCBTb21lIGEgLT4gYXV4IChrICsgMSkgYSlcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCAwIChlcnJvciwgaW5pdClcblxuICBsZXQgZm9sZDJfY29tbW9uIHBhcmFtZXRlciBlcnJvciBmIHQxIHQyIGluaXQgPVxuICAgIGxldCBzaXplID0gbWluIHQxLnNpemUgdDIuc2l6ZSBpblxuICAgIGxldCBhcnJheTEgPSB0MS5hcnJheSBpblxuICAgIGxldCBhcnJheTIgPSB0Mi5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgcmVtYW5lbnQgPVxuICAgICAgaWYgayA+IHNpemUgdGhlblxuICAgICAgICByZW1hbmVudFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFycmF5MS4oayksIGFycmF5Mi4oaykgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IGF1eCAoayArIDEpIHJlbWFuZW50XG4gICAgICAgIHwgU29tZSB4MSwgU29tZSB4MiAtPlxuICAgICAgICAgIGxldCBlcnJvciwgc29sID0gcmVtYW5lbnQgaW5cbiAgICAgICAgICBhdXggKGsgKyAxKSAoZiBwYXJhbWV0ZXIgZXJyb3IgayB4MSB4MiBzb2wpXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCAoZXJyb3IsIGluaXQpXG5cbiAgbGV0IGZvbGQyIHBhcmFtZXRlciBlcnJvciBmIGcgaCB0MSB0MiBpbml0ID1cbiAgICBsZXQgc2l6ZSA9IG1pbiB0MS5zaXplIHQyLnNpemUgaW5cbiAgICBsZXQgYXJyYXkxID0gdDEuYXJyYXkgaW5cbiAgICBsZXQgYXJyYXkyID0gdDIuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIHJlbWFuZW50ID1cbiAgICAgIGlmIGsgPiBzaXplIHRoZW5cbiAgICAgICAgcmVtYW5lbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZXJyb3IsIHNvbCA9IHJlbWFuZW50IGluXG4gICAgICAgIG1hdGNoIGFycmF5MS4oayksIGFycmF5Mi4oaykgd2l0aFxuICAgICAgICB8IFNvbWUgeDEsIE5vbmUgLT4gYXV4IChrICsgMSkgKGYgcGFyYW1ldGVyIGVycm9yIGsgeDEgc29sKVxuICAgICAgICB8IE5vbmUsIFNvbWUgeDIgLT4gYXV4IChrICsgMSkgKGcgcGFyYW1ldGVyIGVycm9yIGsgeDIgc29sKVxuICAgICAgICB8IFNvbWUgeDEsIFNvbWUgeDIgLT4gYXV4IChrICsgMSkgKGggcGFyYW1ldGVyIGVycm9yIGsgeDEgeDIgc29sKVxuICAgICAgICB8IE5vbmUsIE5vbmUgLT4gYXV4IChrICsgMSkgKGVycm9yLCBzb2wpXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCAoZXJyb3IsIGluaXQpXG5cbiAgbGV0IGZyZWVfYWxsIHBhcmFtZXRlciBlcnJvciB0ID1cbiAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgYSBfIHQgLT4gZnJlZSBwYXJhbWV0ZXIgZXJyb3IgYSB0KVxuICAgICAgdCB0XG5lbmRcblxubW9kdWxlIE5lYXJseV9pbmZpbml0ZV9hcnJheXMgPVxuZnVuY3RvclxuICAoQmFzaWMgOiBTdG9yYWdlIHdpdGggdHlwZSBkaW1lbnNpb24gPSBpbnQgYW5kIHR5cGUga2V5ID0gaW50KVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIGRpbWVuc2lvbiA9IEJhc2ljLmRpbWVuc2lvblxuICAgICAgdHlwZSBrZXkgPSBCYXNpYy5rZXlcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIEJhc2ljLnRcblxuICAgICAgbGV0IGNyZWF0ZSA9IEJhc2ljLmNyZWF0ZVxuICAgICAgbGV0IGNyZWF0ZV9iaWdnZXN0X2tleSA9IEJhc2ljLmNyZWF0ZV9iaWdnZXN0X2tleVxuICAgICAgbGV0IGRpbWVuc2lvbiA9IEJhc2ljLmRpbWVuc2lvblxuICAgICAgbGV0IGtleV9saXN0ID0gQmFzaWMua2V5X2xpc3RcblxuICAgICAgbGV0IGV4cGFuZCBwYXJhbWV0ZXJzIGVycm9yIGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCBvbGRfZGltZW5zaW9uID0gZGltZW5zaW9uIHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgaW5cbiAgICAgICAgaWYgb2xkX2RpbWVuc2lvbiA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBhcnJheVxuICAgICAgICBlbHNlXG4gICAgICAgICAgQmFzaWMuZXhwYW5kX2FuZF9jb3B5IHBhcmFtZXRlcnMgZXJyb3IgYXJyYXlcbiAgICAgICAgICAgIChtYXggMSAobWluIFN5cy5tYXhfYXJyYXlfbGVuZ3RoICgyICogb2xkX2RpbWVuc2lvbikpKVxuXG4gICAgICBsZXQgZ2V0ID0gQmFzaWMuZ2V0XG4gICAgICBsZXQgdW5zYWZlX2dldCA9IEJhc2ljLnVuc2FmZV9nZXRcbiAgICAgIGxldCBleHBhbmRfYW5kX2NvcHkgPSBCYXNpYy5leHBhbmRfYW5kX2NvcHlcbiAgICAgIGxldCBpbml0ID0gQmFzaWMuaW5pdFxuICAgICAgbGV0IGZyZWUgPSBCYXNpYy5mcmVlXG5cbiAgICAgIGxldCByZWMgc2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCBkaW1lbnNpb24gPSBkaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBhcnJheSBpblxuICAgICAgICBpZiBrZXkgPj0gZGltZW5zaW9uIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgYXJyYXknID0gZXhwYW5kIHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgaW5cbiAgICAgICAgICBpZiBhcnJheSA9PSBhcnJheScgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYXJyYXlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgdmFsdWUgYXJyYXknXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIEJhc2ljLnNldCBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhcnJheVxuXG4gICAgICBsZXQgcHJpbnQgPSBCYXNpYy5wcmludFxuXG4gICAgICAoKiBsZXQgcHJpbnRfdmFyX2YgPSBCYXNpYy5wcmludF92YXJfZlxuICAgICAgICAgbGV0IHByaW50X3NpdGVfZiA9IEJhc2ljLnByaW50X3NpdGVfZiopXG4gICAgICBsZXQgaXRlciA9IEJhc2ljLml0ZXJcbiAgICAgIGxldCBmb2xkID0gQmFzaWMuZm9sZFxuICAgICAgbGV0IGZvbGQyID0gQmFzaWMuZm9sZDJcbiAgICAgIGxldCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uID0gQmFzaWMuZm9sZF93aXRoX2ludGVycnVwdGlvblxuICAgICAgbGV0IGZvbGQyX2NvbW1vbiA9IEJhc2ljLmZvbGQyX2NvbW1vblxuICAgICAgbGV0IGZvcl9hbGwgPSBCYXNpYy5mb3JfYWxsXG4gICAgICBsZXQgZnJlZV9hbGwgPSBCYXNpYy5mcmVlX2FsbFxuICAgIGVuZCA6XG4gICAgICBTdG9yYWdlIHdpdGggdHlwZSBrZXkgPSBpbnQgYW5kIHR5cGUgZGltZW5zaW9uID0gaW50KVxuXG5tb2R1bGUgRXh0ZW5kID1cbmZ1bmN0b3JcbiAgKEV4dGVuc2lvbiA6IFN0b3JhZ2UpXG4gIChVbmRlcmx5aW5nIDogU3RvcmFnZSlcbiAgLT5cbiAgKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBkaW1lbnNpb24gPSBFeHRlbnNpb24uZGltZW5zaW9uICogVW5kZXJseWluZy5kaW1lbnNpb25cbiAgICAgIHR5cGUga2V5ID0gRXh0ZW5zaW9uLmtleSAqIFVuZGVybHlpbmcua2V5XG4gICAgICB0eXBlICdhIHQgPSB7IG1hdHJpeDogJ2EgVW5kZXJseWluZy50IEV4dGVuc2lvbi50OyBkaW1lbnNpb246IGRpbWVuc2lvbiB9XG5cbiAgICAgIGxldCBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciBkaW1lbnNpb24gPVxuICAgICAgICBsZXQgZXJyb3IsIG1hdHJpeCA9IEV4dGVuc2lvbi5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAoZnN0IGRpbWVuc2lvbikgaW5cbiAgICAgICAgZXJyb3IsIHsgbWF0cml4OyBkaW1lbnNpb24gfVxuXG4gICAgICBsZXQgY3JlYXRlX2JpZ2dlc3Rfa2V5IHBhcmFtZXRlcnMgZXJyb3Iga2V5ID1cbiAgICAgICAgbGV0IGVycm9yLCBtYXRyaXggPVxuICAgICAgICAgIEV4dGVuc2lvbi5jcmVhdGVfYmlnZ2VzdF9rZXkgcGFyYW1ldGVycyBlcnJvciAoZnN0IGtleSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBtYXRyaXgnID1cbiAgICAgICAgICBVbmRlcmx5aW5nLmNyZWF0ZV9iaWdnZXN0X2tleSBwYXJhbWV0ZXJzIGVycm9yIChzbmQga2V5KVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGRpbWVuc2lvbiA9IEV4dGVuc2lvbi5kaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBtYXRyaXggaW5cbiAgICAgICAgbGV0IGVycm9yLCBkaW1lbnNpb24nID0gVW5kZXJseWluZy5kaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBtYXRyaXgnIGluXG4gICAgICAgIGVycm9yLCB7IG1hdHJpeDsgZGltZW5zaW9uID0gZGltZW5zaW9uLCBkaW1lbnNpb24nIH1cblxuICAgICAgbGV0IGtleV9saXN0IHBhcmFtZXRlcnMgZXJyb3IgdCA9XG4gICAgICAgIGxldCBlcnJvciwgZXh0X2xpc3QgPSBFeHRlbnNpb24ua2V5X2xpc3QgcGFyYW1ldGVycyBlcnJvciB0Lm1hdHJpeCBpblxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGVycm9yLCBsaXN0KSBrZXkgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgdDIgPSBFeHRlbnNpb24uZ2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHQubWF0cml4IGluXG4gICAgICAgICAgICBtYXRjaCB0MiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgbGlzdFxuICAgICAgICAgICAgfCBTb21lIHQyIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbDIgPSBVbmRlcmx5aW5nLmtleV9saXN0IHBhcmFtZXRlcnMgZXJyb3IgdDIgaW5cbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IGtleTIgLT4gKGtleSwga2V5MikgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgIGxpc3QgKExpc3QucmV2IGwyKSApKVxuICAgICAgICAgIChlcnJvciwgW10pIChMaXN0LnJldiBleHRfbGlzdClcblxuICAgICAgbGV0IGV4cGFuZF9hbmRfY29weSBwYXJhbWV0ZXJzIGVycm9yIGFycmF5IF9kaW1lbnNpb24gPVxuICAgICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBhcnJheVxuXG4gICAgICBsZXQgaW5pdCBwYXJhbWV0ZXJzIGVycm9yIGRpbSBmID1cbiAgICAgICAgbGV0IGVycm9yLCBhcnJheSA9XG4gICAgICAgICAgRXh0ZW5zaW9uLmluaXQgcGFyYW1ldGVycyBlcnJvciAoZnN0IGRpbSkgKGZ1biBwIGUgaSAtPlxuICAgICAgICAgICAgICBVbmRlcmx5aW5nLmluaXQgcCBlIChzbmQgZGltKSAoZnVuIHAnIGUnIGogLT4gZiBwJyBlJyAoaSwgaikpKVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgeyBtYXRyaXggPSBhcnJheTsgZGltZW5zaW9uID0gZGltIH1cblxuICAgICAgbGV0IHNldCBwYXJhbWV0ZXJzIGVycm9yIChpLCBqKSB2YWx1ZSBhcnJheSA9XG4gICAgICAgIGxldCBlcnJvciwgb2xkX3VuZGVybHlpbmcgPVxuICAgICAgICAgIEV4dGVuc2lvbi51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaSBhcnJheS5tYXRyaXhcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBvbGRfdW5kZXJseWluZyA9XG4gICAgICAgICAgbWF0Y2ggb2xkX3VuZGVybHlpbmcgd2l0aFxuICAgICAgICAgIHwgU29tZSBvbGRfdW5kZXJseWluZyAtPiBlcnJvciwgb2xkX3VuZGVybHlpbmdcbiAgICAgICAgICB8IE5vbmUgLT4gVW5kZXJseWluZy5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAoc25kIGFycmF5LmRpbWVuc2lvbilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBuZXdfdW5kZXJseWluZyA9XG4gICAgICAgICAgVW5kZXJseWluZy5zZXQgcGFyYW1ldGVycyBlcnJvciBqIHZhbHVlIG9sZF91bmRlcmx5aW5nXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbmV3X21hdHJpeCA9XG4gICAgICAgICAgRXh0ZW5zaW9uLnNldCBwYXJhbWV0ZXJzIGVycm9yIGkgbmV3X3VuZGVybHlpbmcgYXJyYXkubWF0cml4XG4gICAgICAgIGluXG4gICAgICAgICgqIGxldCBvcmRlcmVkID0gb3JkZXJlZCAmJiBFeHRlbnNpb24ub3JkZXJlZCBuZXdfbWF0cml4IGluKilcbiAgICAgICAgZXJyb3IsIHsgYXJyYXkgd2l0aCBtYXRyaXggPSBuZXdfbWF0cml4IH1cblxuICAgICAgbGV0IGdldCBwYXJhbWV0ZXJzIGVycm9yIChpLCBqKSBhcnJheSA9XG4gICAgICAgIGxldCBlcnJvciwgdW5kZXJseWluZyA9IEV4dGVuc2lvbi5nZXQgcGFyYW1ldGVycyBlcnJvciBpIGFycmF5Lm1hdHJpeCBpblxuICAgICAgICBtYXRjaCB1bmRlcmx5aW5nIHdpdGhcbiAgICAgICAgfCBTb21lIHVuZGVybHlpbmcgLT4gVW5kZXJseWluZy5nZXQgcGFyYW1ldGVycyBlcnJvciBqIHVuZGVybHlpbmdcbiAgICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IE5vbmVcblxuICAgICAgbGV0IHVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciAoaSwgaikgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIHVuZGVybHlpbmcgPVxuICAgICAgICAgIEV4dGVuc2lvbi51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaSBhcnJheS5tYXRyaXhcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggdW5kZXJseWluZyB3aXRoXG4gICAgICAgIHwgU29tZSB1bmRlcmx5aW5nIC0+IFVuZGVybHlpbmcudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGogdW5kZXJseWluZ1xuICAgICAgICB8IF8gLT4gZXJyb3IsIE5vbmVcblxuICAgICAgbGV0IGZyZWUgcGFyYW1ldGVycyBlcnJvciAoaSwgaikgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIG9sZF91bmRlcmx5aW5nID1cbiAgICAgICAgICBFeHRlbnNpb24udW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGkgYXJyYXkubWF0cml4XG4gICAgICAgIGluXG5cbiAgICAgICAgbWF0Y2ggb2xkX3VuZGVybHlpbmcgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIF8gPSBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBOb25lIGluXG4gICAgICAgICAgZXJyb3IsIGFycmF5XG4gICAgICAgIHwgU29tZSBvbGRfdW5kZXJseWluZyAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbmV3X3VuZGVybHlpbmcgPVxuICAgICAgICAgICAgVW5kZXJseWluZy5mcmVlIHBhcmFtZXRlcnMgZXJyb3IgaiBvbGRfdW5kZXJseWluZ1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBuZXdfbWF0cml4ID1cbiAgICAgICAgICAgIEV4dGVuc2lvbi5zZXQgcGFyYW1ldGVycyBlcnJvciBpIG5ld191bmRlcmx5aW5nIGFycmF5Lm1hdHJpeFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIHsgYXJyYXkgd2l0aCBtYXRyaXggPSBuZXdfbWF0cml4IH1cblxuICAgICAgbGV0IGRpbWVuc2lvbiBfIGVycm9yIGEgPSBlcnJvciwgYS5kaW1lbnNpb25cblxuICAgICAgbGV0IHByaW50IHBhcmFtZXRlcnMgZXJyb3IgcHJpbnRfb2YgYSA9XG4gICAgICAgIEV4dGVuc2lvbi5wcmludCBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGZ1biBwIGVycm9yIC0+IFVuZGVybHlpbmcucHJpbnQgcCBlcnJvciBwcmludF9vZilcbiAgICAgICAgICBhLm1hdHJpeFxuXG4gICAgICAoKiBsZXQgcHJpbnRfdmFyX2YgZXJyb3IgcHJpbnRfb2YgcGFyYW1ldGVycyBhID1cbiAgICAgICAgIEV4dGVuc2lvbi5wcmludCBlcnJvclxuICAgICAgICAgICAoZnVuIGVycm9yIC0+IFVuZGVybHlpbmcucHJpbnQgZXJyb3IgcHJpbnRfb2YpXG4gICAgICAgICAgIHBhcmFtZXRlcnNcbiAgICAgICAgICAgYS5tYXRyaXhcblxuICAgICAgICAgbGV0IHByaW50X3NpdGVfZiBlcnJvciBwcmludF9vZiBwYXJhbWV0ZXJzIGEgPVxuICAgICAgICAgRXh0ZW5zaW9uLnByaW50IGVycm9yXG4gICAgICAgICAgIChmdW4gZXJyb3IgLT4gVW5kZXJseWluZy5wcmludCBlcnJvciBwcmludF9vZilcbiAgICAgICAgICAgcGFyYW1ldGVyc1xuICAgICAgICAgICBhLm1hdHJpeCopXG5cbiAgICAgIGxldCBpdGVyIHBhcmFtZXRlciBlcnJvciBmIGEgPVxuICAgICAgICBFeHRlbnNpb24uaXRlciBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGEgLT5cbiAgICAgICAgICAgIFVuZGVybHlpbmcuaXRlciBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgaycgYScgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgKGssIGsnKSBhJylcbiAgICAgICAgICAgICAgYSlcbiAgICAgICAgICBhLm1hdHJpeFxuXG4gICAgICBsZXQgZm9yX2FsbCBwYXJhbWV0ZXIgZXJyb3IgZiBhID1cbiAgICAgICAgRXh0ZW5zaW9uLmZvcl9hbGwgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgayBhIC0+XG4gICAgICAgICAgICBVbmRlcmx5aW5nLmZvcl9hbGwgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsnIGEnIC0+IGYgcGFyYW1ldGVyIGVycm9yIChrLCBrJykgYScpXG4gICAgICAgICAgICAgIGEpXG4gICAgICAgICAgYS5tYXRyaXhcblxuICAgICAgbGV0IGZvbGRfZ2VuIGZvbGQxIGZvbGQyIHBhcmFtZXRlciBlcnJvciBmIGEgYiA9XG4gICAgICAgIGZvbGQxIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSBiIC0+XG4gICAgICAgICAgICBmb2xkMiBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgaycgYScgYiAtPiBmIHBhcmFtZXRlciBlcnJvciAoaywgaycpIGEnIGIpXG4gICAgICAgICAgICAgIGEgYilcbiAgICAgICAgICBhLm1hdHJpeCBiXG5cbiAgICAgIGxldCBmb2xkIHBhcmFtZXRlciBlcnJvciBmIGEgYiA9XG4gICAgICAgIGZvbGRfZ2VuIEV4dGVuc2lvbi5mb2xkIFVuZGVybHlpbmcuZm9sZCBwYXJhbWV0ZXIgZXJyb3IgZiBhIGJcblxuICAgICAgbGV0IGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gcGFyYW1ldGVyIGVycm9yIGYgYSBiID1cbiAgICAgICAgZm9sZF9nZW4gRXh0ZW5zaW9uLmZvbGRfd2l0aF9pbnRlcnJ1cHRpb25cbiAgICAgICAgICBVbmRlcmx5aW5nLmZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gcGFyYW1ldGVyIGVycm9yIGYgYSBiXG5cbiAgICAgIGxldCBmb2xkMl9jb21tb24gcGFyYW1ldGVyIGVycm9yIGYgYSBiIGMgPVxuICAgICAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSBjIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGdldCA9IHVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGsgYiBpblxuICAgICAgICAgICAgbWF0Y2ggZ2V0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgY1xuICAgICAgICAgICAgfCBTb21lIGIgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgayBhIGIgYylcbiAgICAgICAgICBhIGNcblxuICAgICAgbGV0IGZvbGQyIHBhcmFtZXRlciBlcnJvciBmIGcgaCBhIGIgYyA9XG4gICAgICAgIGxldCBlcnJvciwgYyA9XG4gICAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSBjIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgZ2V0ID0gdW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgayBiIGluXG4gICAgICAgICAgICAgIG1hdGNoIGdldCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmIHBhcmFtZXRlciBlcnJvciBrIGEgY1xuICAgICAgICAgICAgICB8IFNvbWUgYiAtPiBoIHBhcmFtZXRlciBlcnJvciBrIGEgYiBjKVxuICAgICAgICAgICAgYSBjXG4gICAgICAgIGluXG4gICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgayBiIGMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgZ2V0ID0gdW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgayBhIGluXG4gICAgICAgICAgICBtYXRjaCBnZXQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGcgcGFyYW1ldGVyIGVycm9yIGsgYiBjXG4gICAgICAgICAgICB8IFNvbWUgXyAtPiBlcnJvciwgYylcbiAgICAgICAgICBiIGNcblxuICAgICAgbGV0IGZyZWVfYWxsIHBhcmFtZXRlciBlcnJvciB0ID1cbiAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBhIF8gdCAtPiBmcmVlIHBhcmFtZXRlciBlcnJvciBhIHQpXG4gICAgICAgICAgdCB0XG4gICAgZW5kIDpcbiAgICAgIFN0b3JhZ2VcbiAgICAgICAgd2l0aCB0eXBlIGtleSA9IEV4dGVuc2lvbi5rZXkgKiBVbmRlcmx5aW5nLmtleVxuICAgICAgICAgYW5kIHR5cGUgZGltZW5zaW9uID0gRXh0ZW5zaW9uLmRpbWVuc2lvbiAqIFVuZGVybHlpbmcuZGltZW5zaW9uKVxuXG5tb2R1bGUgUXVpY2tfa2V5X2xpc3QgPVxuZnVuY3RvclxuICAoQmFzaWMgOiBTdG9yYWdlKVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIGRpbWVuc2lvbiA9IEJhc2ljLmRpbWVuc2lvblxuICAgICAgdHlwZSBrZXkgPSBCYXNpYy5rZXlcbiAgICAgIHR5cGUgJ2EgdCA9IHsgYmFzaWM6ICdhIEJhc2ljLnQ7IGtleXM6IGtleSBsaXN0IH1cblxuICAgICAgbGV0IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIGkgPVxuICAgICAgICBsZXQgZXJyb3IsIGJhc2ljID0gQmFzaWMuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgaSBpblxuICAgICAgICBlcnJvciwgeyBiYXNpYzsga2V5cyA9IFtdIH1cblxuICAgICAgbGV0IGNyZWF0ZV9iaWdnZXN0X2tleSBwYXJhbWV0ZXJzIGVycm9yIGtleSA9XG4gICAgICAgIGxldCBlcnJvciwgYmFzaWMgPSBCYXNpYy5jcmVhdGVfYmlnZ2VzdF9rZXkgcGFyYW1ldGVycyBlcnJvciBrZXkgaW5cbiAgICAgICAgZXJyb3IsIHsgYmFzaWM7IGtleXMgPSBbXSB9XG5cbiAgICAgIGxldCBrZXlfbGlzdCBfcGFyYW1ldGVycyBlcnJvciB0ID0gZXJyb3IsIHQua2V5c1xuXG4gICAgICBsZXQgZXhwYW5kX2FuZF9jb3B5IHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgaiA9XG4gICAgICAgIGxldCBlcnJvciwgYmFzaWMgPVxuICAgICAgICAgIEJhc2ljLmV4cGFuZF9hbmRfY29weSBwYXJhbWV0ZXJzIGVycm9yIGFycmF5LmJhc2ljIGpcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIHsgYmFzaWM7IGtleXMgPSBhcnJheS5rZXlzIH1cblxuICAgICAgbGV0IGluaXQgcGFyYW1ldGVycyBlcnJvciBuIGYgPVxuICAgICAgICBsZXQgZXJyb3IsIGJhc2ljID0gQmFzaWMuaW5pdCBwYXJhbWV0ZXJzIGVycm9yIG4gZiBpblxuICAgICAgICBsZXQgZXJyb3IsIGtleXMgPVxuICAgICAgICAgIEJhc2ljLmZvbGQgcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgICAgKGZ1biBfIGUgayBfIGxpc3QgLT4gZSwgayA6OiBsaXN0KVxuICAgICAgICAgICAgYmFzaWMgW11cbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIHsgYmFzaWM7IGtleXMgfVxuXG4gICAgICBsZXQgc2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCBvbGQgPSBCYXNpYy51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5LmJhc2ljIGluXG4gICAgICAgIGxldCBuZXdfYXJyYXkgPVxuICAgICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT4gYXJyYXlcbiAgICAgICAgICB8IE5vbmUgLT4geyBhcnJheSB3aXRoIGtleXMgPSBrZXkgOjogYXJyYXkua2V5cyB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbmV3X2Jhc2ljID1cbiAgICAgICAgICBCYXNpYy5zZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgdmFsdWUgbmV3X2FycmF5LmJhc2ljXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCB7IG5ld19hcnJheSB3aXRoIGJhc2ljID0gbmV3X2Jhc2ljIH1cblxuICAgICAgbGV0IGZyZWUgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIGJhc2ljID0gQmFzaWMuZnJlZSBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheS5iYXNpYyBpblxuICAgICAgICBlcnJvciwgeyBhcnJheSB3aXRoIGJhc2ljIH1cblxuICAgICAgbGV0IGdldCBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheSA9XG4gICAgICAgIEJhc2ljLmdldCBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheS5iYXNpY1xuXG4gICAgICBsZXQgdW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheSA9XG4gICAgICAgIEJhc2ljLnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkuYmFzaWNcblxuICAgICAgbGV0IGRpbWVuc2lvbiBwYXJhbWV0ZXJzIGVycm9yIGEgPVxuICAgICAgICBCYXNpYy5kaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBhLmJhc2ljXG5cbiAgICAgIGxldCBwcmludCBlcnJvciBmIHBhcmFtZXRlcnMgYSA9IEJhc2ljLnByaW50IGVycm9yIGYgcGFyYW1ldGVycyBhLmJhc2ljXG5cbiAgICAgICgqIGxldCBwcmludF92YXJfZiBlcnJvciBmIHBhcmFtZXRlcnMgYSA9XG4gICAgICAgICBCYXNpYy5wcmludF92YXJfZiBlcnJvciBmIHBhcmFtZXRlcnMgYS5iYXNpY1xuXG4gICAgICAgICBsZXQgcHJpbnRfc2l0ZV9mIGVycm9yIGYgcGFyYW1ldGVycyBhID1cbiAgICAgICAgIEJhc2ljLnByaW50X3NpdGVfZiBlcnJvciBmIHBhcmFtZXRlcnMgYS5iYXNpYyopXG5cbiAgICAgIGxldCBpdGVyIHBhcmFtZXRlcnMgZXJyb3IgZiBhID1cbiAgICAgICAgbGV0IGVycm9yLCBsaXN0ID0ga2V5X2xpc3QgcGFyYW1ldGVycyBlcnJvciBhIGluXG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBlcnJvciBrIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGltID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgayBhIGluXG4gICAgICAgICAgICBtYXRjaCBpbSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBfID0gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgKCkgaW5cbiAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIHwgU29tZSBpbSAtPiBmIHBhcmFtZXRlcnMgZXJyb3IgayBpbSlcbiAgICAgICAgICBlcnJvciAoTGlzdC5yZXYgbGlzdClcblxuICAgICAgbGV0IGZvbGQgcGFyYW1ldGVycyBlcnJvciBmIGEgYiA9XG4gICAgICAgIGxldCBlcnJvciwgbGlzdCA9IGtleV9saXN0IHBhcmFtZXRlcnMgZXJyb3IgYSBpblxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGVycm9yLCBiKSBrIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGltID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgayBhIGluXG4gICAgICAgICAgICBtYXRjaCBpbSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYlxuICAgICAgICAgICAgfCBTb21lIGltIC0+IGYgcGFyYW1ldGVycyBlcnJvciBrIGltIGIpXG4gICAgICAgICAgKGVycm9yLCBiKSAoTGlzdC5yZXYgbGlzdClcblxuICAgICAgbGV0IGZvcl9hbGwgcGFyYW1ldGVycyBlcnJvciBmIGEgPVxuICAgICAgICBsZXQgZXJyb3IsIGxpc3QgPSBrZXlfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIGEgaW5cbiAgICAgICAgbGV0IHJlYyBhdXggbCBlcnJvciA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBlcnJvciwgdHJ1ZVxuICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICAobWF0Y2ggZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaCBhIHdpdGhcbiAgICAgICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCAoKSA9IEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0ICgpIGluXG4gICAgICAgICAgICAgIGF1eCB0IGVycm9yXG4gICAgICAgICAgICB8IGVycm9yLCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBib29sID0gZiBwYXJhbWV0ZXJzIGVycm9yIGggZGF0YSBpblxuICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICBhdXggdCBlcnJvclxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGZhbHNlKVxuICAgICAgICBpblxuICAgICAgICBhdXggbGlzdCBlcnJvclxuXG4gICAgICBsZXQgZnJlZV9hbGwgcGFyYW1ldGVyIGVycm9yIHQgPVxuICAgICAgICBsZXQgZXJyb3IsIHQgPVxuICAgICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBhIF8gdCAtPiBmcmVlIHBhcmFtZXRlciBlcnJvciBhIHQpXG4gICAgICAgICAgICB0IHRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIHsgdCB3aXRoIGtleXMgPSBbXSB9XG5cbiAgICAgIGxldCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIHBhcmFtZXRlcnMgZXJyb3IgZiBhIGIgPVxuICAgICAgICBsZXQgZXJyb3IsIGxpc3QgPSBrZXlfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIGEgaW5cbiAgICAgICAgbGV0IHJlYyBhdXggbGlzdCBvdXRwdXQgPVxuICAgICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICAgIHwgW10gLT4gb3V0cHV0XG4gICAgICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICAgIGxldCBvdXRwdXRfb3B0ID1cbiAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBpbSA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIGhlYWQgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc25kIG91dHB1dCBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGltIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSAoaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYilcbiAgICAgICAgICAgICAgICB8IFNvbWUgaW0gLT4gU29tZSAoZiBwYXJhbWV0ZXJzIGVycm9yIGhlYWQgaW0gYilcbiAgICAgICAgICAgICAgd2l0aCBTeXMuQnJlYWsgLT4gTm9uZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChtYXRjaCBvdXRwdXRfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBvdXRwdXRcbiAgICAgICAgICAgIHwgU29tZSBvdXRwdXQgLT4gYXV4IHRhaWwgb3V0cHV0KVxuICAgICAgICBpblxuICAgICAgICBhdXggbGlzdCAoZXJyb3IsIGIpXG5cbiAgICAgIGxldCBmb2xkMl9jb21tb24gcGFyYW1ldGVyIGVycm9yIGYgYSBiIGMgPVxuICAgICAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSBjIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGdldCA9IHVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGsgYiBpblxuICAgICAgICAgICAgbWF0Y2ggZ2V0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgY1xuICAgICAgICAgICAgfCBTb21lIGIgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgayBhIGIgYylcbiAgICAgICAgICBhIGNcblxuICAgICAgbGV0IGZvbGQyIHBhcmFtZXRlciBlcnJvciBmIGcgaCBhIGIgYyA9XG4gICAgICAgIGxldCBlcnJvciwgYyA9XG4gICAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSBjIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgZ2V0ID0gdW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgayBiIGluXG4gICAgICAgICAgICAgIG1hdGNoIGdldCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmIHBhcmFtZXRlciBlcnJvciBrIGEgY1xuICAgICAgICAgICAgICB8IFNvbWUgYiAtPiBoIHBhcmFtZXRlciBlcnJvciBrIGEgYiBjKVxuICAgICAgICAgICAgYSBjXG4gICAgICAgIGluXG4gICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgayBiIGMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgZ2V0ID0gdW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgayBhIGluXG4gICAgICAgICAgICBtYXRjaCBnZXQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGcgcGFyYW1ldGVyIGVycm9yIGsgYiBjXG4gICAgICAgICAgICB8IFNvbWUgXyAtPiBlcnJvciwgYylcbiAgICAgICAgICBiIGNcbiAgICBlbmQgOlxuICAgICAgU3RvcmFnZSB3aXRoIHR5cGUga2V5ID0gQmFzaWMua2V5IGFuZCB0eXBlIGRpbWVuc2lvbiA9IEJhc2ljLmRpbWVuc2lvbilcblxubW9kdWxlIE5lYXJseV9pbmZfSW1wZXJhdGlmID0gTmVhcmx5X2luZmluaXRlX2FycmF5cyAoSW50X3N0b3JhZ2VfaW1wZXJhdGlmKVxubW9kdWxlIFF1aWNrX05lYXJseV9pbmZfSW1wZXJhdGlmID0gUXVpY2tfa2V5X2xpc3QgKE5lYXJseV9pbmZfSW1wZXJhdGlmKVxuXG5tb2R1bGUgSW50X0ludF9zdG9yYWdlX0ltcGVyYXRpZl9JbXBlcmF0aWYgPVxuICBFeHRlbmQgKEludF9zdG9yYWdlX2ltcGVyYXRpZikgKEludF9zdG9yYWdlX2ltcGVyYXRpZilcblxubW9kdWxlIE5lYXJseV9JbmZfSW50X0ludF9zdG9yYWdlX0ltcGVyYXRpZl9JbXBlcmF0aWYgPVxuICBFeHRlbmQgKFF1aWNrX05lYXJseV9pbmZfSW1wZXJhdGlmKSAoUXVpY2tfTmVhcmx5X2luZl9JbXBlcmF0aWYpXG5cbm1vZHVsZSBOZWFybHlfSW5mX0ludF9JbnRfSW50X3N0b3JhZ2VfSW1wZXJhdGlmX0ltcGVyYXRpZl9JbXBlcmF0aWYgPVxuICBFeHRlbmRcbiAgICAoUXVpY2tfTmVhcmx5X2luZl9JbXBlcmF0aWYpXG4gICAgKEV4dGVuZCAoUXVpY2tfTmVhcmx5X2luZl9JbXBlcmF0aWYpIChRdWlja19OZWFybHlfaW5mX0ltcGVyYXRpZikpXG4iLCIoKipcbiAgICAqIHVuaW9uX2ZpbmQubWxcbiAgICAqIG9wZW5rYXBwYVxuICAgICogSsOpcsO0bWUgRmVyZXQgJiBMeSBLaW0gUXV5ZW4sIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICAgKlxuICAgICogQ3JlYXRpb246IDIwMTUsIHRoZSAxMXRoIG9mIE1hcmNoXG4gICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEFwciAxOCAyMDE4PlxuICAgICogKlxuICAgICogVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHByaW1pdGl2ZXMgdG8gZGVhbCB3aXRoIHVuaW9uIGZpbmQgYWxnb3JpdGhtIHdpdGhcbiAgICAqIHBhdGggY29tcHJlc3Npb25cbiAgICAqXG4gICAgKiBDb3B5cmlnaHQgMjAxMCwyMDExIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgICogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgdHlwZSBVbmlvbl9maW5kID0gc2lnXG4gIHR5cGUga2V5XG4gIHR5cGUgZGltZW5zaW9uXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBkaW1lbnNpb24gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiB0XG5cbiAgdmFsIHVuaW9uX2xpc3QgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICB0IC0+XG4gICAga2V5IGxpc3QgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiB0XG5cbiAgdmFsIGl0ZXJpIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBrZXkgLT5cbiAgICBrZXkgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIpIC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlclxuXG4gIHZhbCBnZXRfcmVwcmVzZW50ZW50IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHQgKiBrZXlcbmVuZFxuXG5tb2R1bGUgTWFrZSA9XG5mdW5jdG9yXG4gIChTdG9yYWdlIDogSW50X3N0b3JhZ2UuU3RvcmFnZSlcbiAgLT5cbiAgKCogICAgZnVuY3RvciAoTWFwOiBNYXBfd3JhcHBlci5NYXBfd2l0aF9sb2dzKSAtPiopXG4gICAgKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBrZXkgPSBTdG9yYWdlLmtleVxuICAgICAgdHlwZSB0ID0ga2V5IFN0b3JhZ2UudFxuICAgICAgdHlwZSBkaW1lbnNpb24gPSBTdG9yYWdlLmRpbWVuc2lvblxuXG4gICAgICBsZXQgY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgbiA9XG4gICAgICAgIFN0b3JhZ2UuaW5pdCBwYXJhbWV0ZXJzIGVycm9yIG4gKGZ1biBfIGUgeCAtPiBlLCB4KVxuXG4gICAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgKCogZmluZFNldChlKTogd2hpY2ggcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgcmVwcmVzZW50YXRpdmUgb2YgdGhlIHNldFxuICAgICAgICAgY29udGFpbmluZyBlLiBTaW5jZSB0aGUgc2V0IGFyZSBkaXNqb2ludCwgZSBjb250YWludGVkIGluIG9uZSBzZXRcbiAgICAgICAgIG9ubHkuIFRoZXJlZm9yZSwgdGhlIHJldHVybmVkIHJlcHJlc2VudGF0aXZlIGNhbiBiZSB1bmlxdWVseSBkZXRlcm1pbmVkLlxuICAgICAgKilcblxuICAgICAgbGV0IGZpbmRTZXQgcGFyYW1ldGVyIGVycm9yIGUgdCA9XG4gICAgICAgIGxldCBwb2ludFRvUm9vdCBwYXJhbWV0ZXIgZXJyb3Igcm9vdCBsIHQgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgdCkgaSAtPiBTdG9yYWdlLnNldCBwYXJhbWV0ZXIgZXJyb3IgaSByb290IHQpXG4gICAgICAgICAgICAoZXJyb3IsIHQpIGxcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlYyBoZWxwZXIgcGFyYW1ldGVyIGVycm9yIGUgbCB0ID1cbiAgICAgICAgICBsZXQgZXJyb3IsIHBhcmVudCA9IFN0b3JhZ2UudW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgZSB0IGluXG4gICAgICAgICAgbWF0Y2ggcGFyZW50IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZXJyb3IsICh0LCBlKVxuICAgICAgICAgIHwgU29tZSBwIHdoZW4gcCA8PiBlIC0+IGhlbHBlciBwYXJhbWV0ZXIgZXJyb3IgcCAoZSA6OiBsKSB0XG4gICAgICAgICAgfCBTb21lIHAgLT5cbiAgICAgICAgICAgICgqIGJhc2UgY2FzZTogd2UgaGl0IHRoZSByb290IG5vZGUgbWFrZSBhbGwgY29sbGVjdGVkIG5vZGVzIG9uIHRoZVxuICAgICAgICAgICAgICAgcGF0aCBwb2ludCB0byB0aGUgcm9vdC4gQW5kIHJldHVybiB0aGUgcm9vdCBhZnRlcndhcmRzICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIHQgPSBwb2ludFRvUm9vdCBwYXJhbWV0ZXIgZXJyb3IgcCBsIHQgaW5cbiAgICAgICAgICAgIGVycm9yLCAodCwgcClcbiAgICAgICAgaW5cbiAgICAgICAgaGVscGVyIHBhcmFtZXRlciBlcnJvciBlIFtdIHRcblxuICAgICAgbGV0IGdldF9yZXByZXNlbnRlbnQgcGFyYW1ldGVycyBlcnJvciBlIHQgPVxuICAgICAgICBsZXQgZXJyb3IsICh1bmlvbiwgZWx0KSA9IGZpbmRTZXQgcGFyYW1ldGVycyBlcnJvciBlIHQgaW5cbiAgICAgICAgZXJyb3IsIHVuaW9uLCBlbHRcbiAgICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAoKlVOSU9OKilcblxuICAgICAgbGV0IHVuaW9uIHBhcmFtZXRlciBlcnJvciB4IHkgdCA9XG4gICAgICAgIGxldCBlcnJvciwgKHQsIHJvb3RfeCkgPSBmaW5kU2V0IHBhcmFtZXRlciBlcnJvciB4IHQgaW5cbiAgICAgICAgbGV0IGVycm9yLCAodCwgcm9vdF95KSA9IGZpbmRTZXQgcGFyYW1ldGVyIGVycm9yIHkgdCBpblxuICAgICAgICBTdG9yYWdlLnNldCBwYXJhbWV0ZXIgZXJyb3Igcm9vdF94IHJvb3RfeSB0XG5cbiAgICAgICgqbGV0IGVxX2NsYXNzZXNfbWFwIHBhcmFtZXRlciBlcnJvciBhID1cbiAgICAgICAgKCogIGxldCBjbGFzc2VzID0gQ2NrYXBwYV9zaWcuU2l0ZV9tYXBfYW5kX3NldC5NYXAuZW1wdHkgaW4qKVxuICAgICAgICA9PT09PT09XG4gICAgICAgIGxldCB1bmlvbiB4IHkgYSA9XG4gICAgICAgIGxldCByb290X3ggPSBmaW5kU2V0IHggYSBpblxuICAgICAgICBsZXQgcm9vdF95ID0gZmluZFNldCB5IGEgaW5cbiAgICAgICAgbGV0IF8gPSBhLihyb290X3gpIDwtIHJvb3RfeSBpblxuICAgICAgICAoKmxldCBfID0gcHJpbnRfc3RyaW5nIFwiZHVtcDogXCI7IGR1bXAgYTsgcHJpbnRfc3RyaW5nIFwiXFxuXCIgaW4qKVxuICAgICAgICBhXG5cbiAgICAgICAgbGV0IGVxX2NsYXNzZXNfbWFwIHBhcmFtZXRlciBlcnJvciBhID1cbiAgICAgICAgbGV0IGNsYXNzZXMgPSBDa2FwcGFfc2lnLlNpdGVfbWFwX2FuZF9zZXQuTWFwLmVtcHR5IGluXG4gICAgICAgID4+Pj4+Pj4gcmVtb3ZlIGRvdWJsaWNhdGUgbW9kdWxlLCB0b2RvOiBoaWRkZW4gdHlwZSBzaXRlX25hbWVcbiAgICAgICAgbGV0IHNpemUgPSBBcnJheS5sZW5ndGggYSBpblxuICAgICAgICBsZXQgcmVjIGF1eCBrIChjbGFzc2VzLHVuaW9uX2xpc3QpID1cbiAgICAgICAgICBpZiAgayA8IDBcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBjbGFzc2VzLCB1bmlvbl9saXN0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKCpmaW5kIHRoZSBwYXJlbnQgb2YgdGhlIHVuaW9uKilcbiAgICAgICAgICAgIGxldCByZXAgPSBmaW5kU2V0IGsgYSBpblxuICAgICAgICAgICAgKCpjaGVjayBpZiBpbnNpZGUgY2xhc3NlcyBoYXMgYWxyZWFkeSBoYXMgdGhpcyBwYXJlbnQqKVxuICAgICAgICA8PDw8PDw8IEhFQURcbiAgICAgICAgICAgIGxldCBlcnJvcicsZ2V0X3JlcCA9XG4gICAgICAgICgqICAgICAgICBDY2thcHBhX3NpZy5TaXRlX21hcF9hbmRfc2V0Lk1hcC5maW5kX2RlZmF1bHQgcGFyYW1ldGVyIGVycm9yIFtdIHJlcCBjbGFzc2VzIGluKilcbiAgICAgICAgICAgIGxldCBlcnJvciA9IEV4Y2VwdGlvbi5jaGVjayB3YXJuIHBhcmFtZXRlciBlcnJvciBlcnJvcicgKFNvbWUgXCJsaW5lIDczXCIpIEV4aXQgaW5cbiAgICAgICAgICAgICgqc3RvcmUgdGhlIHJlc3VsdCBpbnNpZGUgY2xhc3NlcyopXG4gICAgICAgICgqICAgICAgbGV0IGVycm9yLGNsYXNzZXMgPVxuICAgICAgICBDY2thcHBhX3NpZy5TaXRlX21hcF9hbmRfc2V0Lk1hcC5hZGRfb3Jfb3ZlcndyaXRlXG4gICAgICAgID09PT09PT1cbiAgICAgICAgICAgIGxldCBlcnJvcicsIGdldF9yZXAgPVxuICAgICAgICAgICAgICBDa2FwcGFfc2lnLlNpdGVfbWFwX2FuZF9zZXQuTWFwLmZpbmRfZGVmYXVsdFxuICAgICAgICAgICAgICAgIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgICByZXBcbiAgICAgICAgICAgICAgICBjbGFzc2VzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yID0gRXhjZXB0aW9uLmNoZWNrIHdhcm4gcGFyYW1ldGVyIGVycm9yIGVycm9yJyAoU29tZSBcImxpbmUgNzNcIikgRXhpdCBpblxuICAgICAgICAgICAgKCpzdG9yZSB0aGUgcmVzdWx0IGluc2lkZSBjbGFzc2VzKilcbiAgICAgICAgICAgIGxldCBlcnJvcixjbGFzc2VzID1cbiAgICAgICAgQ2thcHBhX3NpZy5TaXRlX21hcF9hbmRfc2V0Lk1hcC5hZGRfb3Jfb3ZlcndyaXRlXG4gICAgICAgID4+Pj4+Pj4gcmVtb3ZlIGRvdWJsaWNhdGUgbW9kdWxlLCB0b2RvOiBoaWRkZW4gdHlwZSBzaXRlX25hbWVcbiAgICAgICAgcGFyYW1ldGVyXG4gICAgICAgIGVycm9yXG4gICAgICAgICAgICAgICAgcmVwXG4gICAgICAgIChrIDo6IGdldF9yZXApXG4gICAgICAgIGNsYXNzZXNcbiAgICAgICAgICAgIGluKilcbiAgICAgICAgICAgIGF1eCAoayAtIDEpIChjbGFzc2VzLCB1bmlvbl9saXN0KVxuICAgICAgICBpblxuICAgICAgICBsZXQgY2xhc3NlcywgYSA9IGF1eCAoc2l6ZSAtIDEpIChjbGFzc2VzLCBhKSBpblxuICAgICAgICBjbGFzc2VzLCBhKilcblxuICAgICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICgqIGNvbXB1dGUgdW5pb24tZmluZCBpbiBhIGxpc3QqKVxuXG4gICAgICBsZXQgdW5pb25fbGlzdCBwYXJhbWV0ZXIgZXJyb3IgYSAobGlzdCA6IGtleSBsaXN0KSA9XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGVycm9yLCBhXG4gICAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgICAgbGV0IHJlYyBhdXggcGFyYW1ldGVyIHRvX3Zpc2l0IGVycm9yIGEgPVxuICAgICAgICAgICAgbWF0Y2ggdG9fdmlzaXQgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPiBlcnJvciwgYVxuICAgICAgICAgICAgfCB0JyA6OiBxJyAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIHVuaW9uX2FycmF5ID0gdW5pb24gcGFyYW1ldGVyIGVycm9yIHQgdCcgYSBpblxuICAgICAgICAgICAgICBhdXggcGFyYW1ldGVyIHEnIGVycm9yIHVuaW9uX2FycmF5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggcGFyYW1ldGVyIHEgZXJyb3IgYVxuXG4gICAgICBsZXQgaXRlcmkgPSBTdG9yYWdlLml0ZXJcbiAgICBlbmQgOlxuICAgICAgVW5pb25fZmluZFxuICAgICAgICB3aXRoIHR5cGUga2V5ID0gU3RvcmFnZS5rZXlcbiAgICAgICAgIGFuZCB0eXBlIHQgPSBTdG9yYWdlLmtleSBTdG9yYWdlLnRcbiAgICAgICAgIGFuZCB0eXBlIGRpbWVuc2lvbiA9IFN0b3JhZ2UuZGltZW5zaW9uKVxuIiwibGV0IGZzdF9vcHRpb24geCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFNvbWUgKHgsIF8pIC0+IFNvbWUgeFxuICB8IF8gLT4gTm9uZVxuXG5sZXQgc25kX29wdGlvbiB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgU29tZSAoXywgeCkgLT4gU29tZSB4XG4gIHwgXyAtPiBOb25lXG5cbigqIE9DYW1sIG1hbnVhbDogSW4gcGFydGljdWxhciwgaWYgeW91IHdhbnQgYSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdFxuICAgbWF0Y2hlcyBhIHNpbmdsZSBiYWNrc2xhc2ggY2hhcmFjdGVyLCB5b3UgbmVlZCB0byBxdW90ZSBpdCBpbiB0aGVcbiAgIGFyZ3VtZW50IHRvIHJlZ2V4cCAoYWNjb3JkaW5nIHRvIHRoZSBsYXN0IGl0ZW0gb2YgdGhlIGxpc3QgYWJvdmUpIGJ5XG4gICBhZGRpbmcgYSBzZWNvbmQgYmFja3NsYXNoLiBUaGVuIHlvdSBuZWVkIHRvIHF1b3RlIGJvdGggYmFja3NsYXNoZXNcbiAgIChhY2NvcmRpbmcgdG8gdGhlIHN5bnRheCBvZiBzdHJpbmcgY29uc3RhbnRzIGluIE9DYW1sKSBieSBkb3VibGluZ1xuICAgdGhlbSBhZ2Fpbiwgc28geW91IG5lZWQgdG8gd3JpdGUgZm91ciBiYWNrc2xhc2ggY2hhcmFjdGVyczogU3RyLnJlZ2V4cFxuICAgXCJcXFxcXFxcXFwiLiAqKVxuXG4oKiogZG90IG91dHB1dCopXG5sZXQgZXNjYXBlX2xhYmVsX2luX2RvdCBzID1cbiAgU3RyLmdsb2JhbF9zdWJzdGl0dXRlIChTdHIucmVnZXhwIFwiW1xcXFxcXFwiXFxcXFxcXFxdXCIpXG4gICAgKGZ1biB4IC0+XG4gICAgICBtYXRjaCBTdHIubWF0Y2hlZF9zdHJpbmcgeCB3aXRoXG4gICAgICB8IFwiXFxcIlwiIC0+IFwiXFxcXFxcXCJcIlxuICAgICAgfCBcIlxcXFxcIiAtPiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgc1xuXG5sZXQgbWFrZV9pZF9jb21wYXRpYmxlX3dpdGhfZG90X2Zvcm1hdCBwYXJhbWV0ZXJzIGVycm9yIHN0cmluZyA9XG4gIGxldCB0YWIgPVxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X21ha2VfbGFiZWxzX2NvbXBhdGlibGVfd2l0aF9kb3QgcGFyYW1ldGVyc1xuICBpblxuICBsZXQgcmVjIGF1eCBwb3MgbCA9XG4gICAgaWYgcG9zIDwgMCB0aGVuXG4gICAgICBsXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2hhciA9IFN0cmluZy5nZXQgc3RyaW5nIHBvcyBpblxuICAgICAgbWF0Y2ggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuQ2hhck1hcC5maW5kX29wdGlvbiBjaGFyIHRhYiB3aXRoXG4gICAgICB8IFNvbWUgbGlzdGVfY2hhciAtPlxuICAgICAgICBhdXggKHBvcyAtIDEpXG4gICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgKGZ1biBsaXN0IGNoYXIgLT4gY2hhciA6OiBsaXN0KVxuICAgICAgICAgICAgIGwgKExpc3QucmV2IGxpc3RlX2NoYXIpKVxuICAgICAgfCBOb25lIC0+IGF1eCAocG9zIC0gMSkgKGNoYXIgOjogbClcbiAgICApXG4gIGluXG4gIGxldCBsID0gYXV4IChTdHJpbmcubGVuZ3RoIHN0cmluZyAtIDEpIFtdIGluXG4gIGVycm9yLCBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2X21hcCAoU3RyaW5nLm1ha2UgMSkgKExpc3QucmV2IGwpKVxuXG5sZXQgc29ydGVkX3BhcnRzX29mX2xpc3QgbiBsaXN0ID1cbiAgbGV0IGxpc3QgPSBMaXN0LnNvcnQgKGZ1biBhIGIgLT4gY29tcGFyZSBiIGEpIGxpc3QgaW5cbiAgbGV0IHJlYyBhdXggayBsaXN0IHN1ZmZpeCBvdXRwdXQgPVxuICAgIGlmIGsgPSAwIHRoZW5cbiAgICAgIHN1ZmZpeCA6OiBvdXRwdXRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgfCBoIDo6IHQgLT4gYXV4IGsgdCBzdWZmaXggKGF1eCAoayAtIDEpIHQgKGggOjogc3VmZml4KSBvdXRwdXQpXG4gICAgICB8IFtdIC0+IG91dHB1dFxuICAgIClcbiAgaW5cbiAgYXV4IG4gbGlzdCBbXSBbXVxuXG5sZXQgc29ydF9saXN0IGtleSBwYXJhbWV0ZXIgZXJyb3IgbGlzdCA9XG4gIGxldCBlcnJvciwgcmVmaW5lZF9saXN0ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZXJyb3IsIHJlZmluZWRfbGlzdCkgYSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGtleSA9IGtleSBwYXJhbWV0ZXIgZXJyb3IgYSBpblxuICAgICAgICBlcnJvciwgKGtleSwgYSkgOjogcmVmaW5lZF9saXN0KVxuICAgICAgKGVycm9yLCBbXSkgbGlzdFxuICBpblxuICBsZXQgcmVmaW5lZF9zb3J0ZWRfbGlzdCA9XG4gICAgTGlzdC5zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBjb21wYXJlIGIgYSkgcmVmaW5lZF9saXN0XG4gIGluXG4gIGVycm9yLCBMaXN0LnJldl9tYXAgc25kIHJlZmluZWRfc29ydGVkX2xpc3RcbiIsIigqKlxuICAqIG1pc2Nfc2EubWxcbiAgKiBvcGVua2FwcGFcbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKlxuICAqIENyZWF0aW9uOiAxNi8xMi8yMDEwXG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxKdWwgMDIgMjAxNj5cbiAgKiAqXG4gICogVmFyaW91cyBmdW5jdGlvbnNcbiAgKlxuICAqIENvcHlyaWdodCAyMDEwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGNvbnN0X3VuaXQgXyA9ICgpXG5cbmxldCBhcnJheV9vZl9saXN0IGNyZWF0ZSBzZXQgcGFyYW1ldGVycyBlcnJvciBsaXN0ID1cbiAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gIGxldCBhID0gY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgbiBpblxuICBsZXQgcmVjIGF1eCBsIGsgYSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBhXG4gICAgfCB0IDo6IHEgLT4gYXV4IHEgKGsgKyAxKSAoc2V0IHBhcmFtZXRlcnMgKGZzdCBhKSBrIHQgKHNuZCBhKSlcbiAgaW5cbiAgYXV4IGxpc3QgMCBhXG5cbmxldCB1bnNvbWUgKGVycm9yLCB4KSBmID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiBmIGVycm9yXG4gIHwgU29tZSB4IC0+IGVycm9yLCB4XG5cbmxldCByZXZfaW50ZXJfbGlzdCBjb21wYXJlIGwxIGwyID1cbiAgbGV0IHJlYyBhdXggbDEgbDIgcmVwID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIF8gfCBfLCBbXSAtPiBMaXN0LnJldiByZXBcbiAgICB8IGEgOjogYiwgYyA6OiBkIC0+XG4gICAgICBpZiBjb21wYXJlIGEgYyA9IDAgdGhlblxuICAgICAgICBhdXggYiBkIChhIDo6IHJlcClcbiAgICAgIGVsc2UgaWYgY29tcGFyZSBhIGMgPCAwIHRoZW5cbiAgICAgICAgYXV4IGIgbDIgcmVwXG4gICAgICBlbHNlXG4gICAgICAgIGF1eCBsMSBkIHJlcFxuICBpblxuICBhdXggbDEgbDIgW11cblxubGV0IHRyYWNlIHBhcmFtZXRlcnMgc3RyaW5nID1cbiAgaWZcbiAgICBwYXJhbWV0ZXJzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVyc1xuICAgICAgLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlXG4gIHRoZW5cbiAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgIFwiJXMlc1wiXG4gICAgICBwYXJhbWV0ZXJzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVyc1xuICAgICAgICAuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJlZml4IChzdHJpbmcgKCkpXG5cbmxldCBpbnRlcl9saXN0IGNvbXBhcmUgbDEgbDIgPSBMaXN0LnJldiAocmV2X2ludGVyX2xpc3QgY29tcGFyZSBsMSBsMilcblxubGV0IGxpc3RfMF9uIGsgPVxuICBsZXQgcmVjIGF1eCBrIHNvbCA9XG4gICAgaWYgayA8IDAgdGhlblxuICAgICAgc29sXG4gICAgZWxzZVxuICAgICAgYXV4IChrIC0gMSkgKGsgOjogc29sKVxuICBpblxuICBhdXggayBbXVxuXG5sZXQgbGlzdF9taW51cyBsMSBsMiA9XG4gIGxldCByZWMgYXV4IGwxIGwyIHJlcCA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IHQxIDo6IHExLCB0MiA6OiBxMiB3aGVuIHQxID0gdDIgLT4gYXV4IHExIHEyIHJlcFxuICAgIHwgdDEgOjogcTEsIF8gLT4gYXV4IHExIGwyICh0MSA6OiByZXApXG4gICAgfCBbXSwgXyAtPiByZXBcbiAgaW5cbiAgTGlzdC5yZXYgKGF1eCBsMSBsMiBbXSlcblxubGV0IHByaW50X2NvbW1hIHBhcmFtZXRlciBib29sIGNvbW1hID1cbiAgaWYgYm9vbCB0aGVuXG4gICAgTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIiVzXCIgY29tbWFcblxubGV0IGZldGNoX2FycmF5IGkgYXJyYXkgZGVmID1cbiAgdHJ5XG4gICAgbWF0Y2ggYXJyYXkuKGkpIHdpdGhcbiAgICB8IE5vbmUgLT4gZGVmXG4gICAgfCBTb21lIGkgLT4gaVxuICB3aXRoIF8gLT4gZGVmXG4iLCIoKipcbiAgICAqIGhhc2gubWxcbiAgICAqIG9wZW5rYXBwYVxuICAgICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICAgKlxuICAgICogQ3JlYXRpb246IDE4LzEwLzIwMTBcbiAgICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SnVsIDA0IDIwMTc+XG4gICAgKiAqXG4gICAgKiBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgc2lnbmF0dXJlIGZvciBoYXNoIHRhYmxlcyBhbmQgc2V2ZXJhbCBpbXBsZW1lbnRhdGlvbnNcbiAgICAqICpcbiAgICAqIENvcHlyaWdodCAyMDEwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIEhhc2ggPSBzaWdcbiAgdHlwZSBrZXlcbiAgdHlwZSAnYSBoYXNoXG5cbiAgdmFsIGNyZWF0ZSA6IGludCAtPiAnYSBoYXNoXG5cbiAgdmFsIGFkZCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGtleSAtPlxuICAgICdhIC0+XG4gICAgaW50IC0+XG4gICAgJ2EgaGFzaCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIGhhc2hcblxuICB2YWwgb3ZlcndyaXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAgJ2EgLT5cbiAgICBpbnQgLT5cbiAgICAnYSBoYXNoIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgaGFzaFxuXG4gIHZhbCBhZGRfb3Jfb3ZlcndyaXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAgJ2EgLT5cbiAgICBpbnQgLT5cbiAgICAnYSBoYXNoIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgaGFzaFxuXG4gIHZhbCBmaW5kX29wdGlvbiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGtleSAtPlxuICAgICdhIGhhc2ggLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAoaW50ICogJ2EpIG9wdGlvblxuXG4gIHZhbCBmaW5kX29wdGlvbl93aXRob3V0X2xvZ3MgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBrZXkgLT5cbiAgICAnYSBoYXNoIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogKGludCAqICdhKSBvcHRpb25cblxuICB2YWwgZmluZF9vcHRpb25fbG9nX29uX3RoZV9mbHkgOiBrZXkgLT4gJ2EgaGFzaCAtPiAoaW50ICogJ2EpIG9wdGlvblxuICB2YWwgaXRlciA6IChrZXkgLT4gJ2EgLT4gaW50IC0+IHVuaXQpIC0+ICdhIGhhc2ggLT4gdW5pdFxuICB2YWwgZm9sZCA6IChrZXkgLT4gJ2IgLT4gaW50IC0+ICdhIC0+ICdhKSAtPiAnYiBoYXNoIC0+ICdhIC0+ICdhXG5lbmRcblxubW9kdWxlIEhhc2ggPVxuZnVuY3RvclxuICAoTWFwIDogTWFwX3dyYXBwZXIuU193aXRoX2xvZ3MpXG4gIC0+XG4gIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUga2V5ID0gTWFwLmVsdFxuICAgICAgdHlwZSAnYSBoYXNoID0gKGludCAqICdhKSBNYXAuTWFwLnRcblxuICAgICAgbGV0IGNyZWF0ZSBfID0gTWFwLk1hcC5lbXB0eVxuXG4gICAgICBsZXQgYWRkIHBhcmFtZXRlciBlcnJvciBrZXkgYXNzbyBpbnQgPVxuICAgICAgICBNYXAuTWFwLmFkZCBwYXJhbWV0ZXIgZXJyb3Iga2V5IChpbnQsIGFzc28pXG5cbiAgICAgIGxldCBvdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleSBhc3NvIGludCA9XG4gICAgICAgIE1hcC5NYXAub3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXkgKGludCwgYXNzbylcblxuICAgICAgbGV0IGFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleSBhc3NvIGludCA9XG4gICAgICAgIE1hcC5NYXAuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5IChpbnQsIGFzc28pXG5cbiAgICAgIGxldCBmaW5kX29wdGlvbiBwYXJhbWV0ZXIgZXJyb3IgYSBiID1cbiAgICAgICAgbGV0IGVycm9yJywgb3V0cHV0ID0gTWFwLk1hcC5maW5kX29wdGlvbiBwYXJhbWV0ZXIgZXJyb3IgYSBiIGluXG4gICAgICAgIGlmIGVycm9yID09IGVycm9yJyB0aGVuXG4gICAgICAgICAgZXJyb3InLCBvdXRwdXRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlciBlcnJvcicgX19QT1NfX1xuICAgICAgICAgICAgfm1lc3NhZ2U6XCJhdHRlbXB0IHRvIHJlYWQgYW4gdW5leGlzdGluZyBhc3NvY2lhdGlvblwiIE5vdF9mb3VuZFxuICAgICAgICAgICAgb3V0cHV0XG5cbiAgICAgIGxldCBmaW5kX29wdGlvbl93aXRob3V0X2xvZ3MgPSBNYXAuTWFwLmZpbmRfb3B0aW9uX3dpdGhvdXRfbG9nc1xuXG4gICAgICBsZXQgZmluZF9vcHRpb25fbG9nX29uX3RoZV9mbHkgYSBiID1cbiAgICAgICAgTGlmdF9lcnJvcl9sb2dzLmxpZnRfd2l0aF9vbl90aGVfZmx5X2xvZ2dpbmdfYmluYXJ5IGZpbmRfb3B0aW9uIGEgYlxuXG4gICAgICBsZXQgaXRlciBmID0gTWFwLk1hcC5pdGVyIChmdW4gKGEgOiBrZXkpIChiLCBjKSAtPiBmIGEgYyBiKVxuICAgICAgbGV0IGZvbGQgZiA9IE1hcC5NYXAuZm9sZCAoZnVuIGEgKGIsIGMpIGQgLT4gZiBhIGMgYiBkKVxuICAgIGVuZCA6XG4gICAgICBIYXNoIHdpdGggdHlwZSBrZXkgPSBNYXAuZWx0KVxuXG5tb2R1bGUgSGFzaF9vZl9PcmQgPVxuZnVuY3RvciAoTyA6IFNldE1hcC5PcmRlcmVkVHlwZSkgLT4gSGFzaCAoTWFwX3dyYXBwZXIuTWFrZSAoU2V0TWFwLk1ha2UgKE8pKSlcbiIsImxldCBsb2NhbF90cmFjZSA9IGZhbHNlXG5cbnR5cGUgbm9kZSA9IGludFxuXG5sZXQgbm9kZV9vZl9pbnQgeCA9IHhcbmxldCBpbnRfb2Zfbm9kZSAoeCA6IG5vZGUpIDogaW50ID0geFxuXG5tb2R1bGUgTm9kZVNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gbm9kZVxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgcHJpbnQgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5lbmQpXG5cbm1vZHVsZSBOb2RlTWFwID0gTm9kZVNldE1hcC5NYXBcblxubW9kdWxlIEZpeGVkX3NpemVfYXJyYXkgOlxuICBJbnRfc3RvcmFnZS5TdG9yYWdlIHdpdGggdHlwZSBrZXkgPSBub2RlIGFuZCB0eXBlIGRpbWVuc2lvbiA9IGludCA9XG4gIEludF9zdG9yYWdlLlF1aWNrX2tleV9saXN0IChJbnRfc3RvcmFnZS5JbnRfc3RvcmFnZV9pbXBlcmF0aWYpXG5cbm1vZHVsZSBOb2RlYXJyYXkgOlxuICBJbnRfc3RvcmFnZS5TdG9yYWdlIHdpdGggdHlwZSBrZXkgPSBub2RlIGFuZCB0eXBlIGRpbWVuc2lvbiA9IGludCA9XG4gIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmXG5cbnR5cGUgKCdub2RlX2xhYmVscywgJ2VkZ2VfbGFiZWxzKSBncmFwaCA9IHtcbiAgbm9kZV9sYWJlbHM6ICdub2RlX2xhYmVscyBGaXhlZF9zaXplX2FycmF5LnQ7XG4gIGVkZ2VzOiAobm9kZSAqICdlZGdlX2xhYmVscykgbGlzdCBGaXhlZF9zaXplX2FycmF5LnQ7XG59XG5cbmxldCBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciBub2RlX29mX25vZGVfbGFiZWwgbm9kZV9saXN0IGVkZ2VfbGlzdCA9XG4gIGxldCBtYXhfbm9kZSA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBtIGkgLT4gbWF4IG0gKGludF9vZl9ub2RlIGkpKSAwIG5vZGVfbGlzdFxuICBpblxuICBsZXQgZXJyb3IsIG5vZGVzID0gRml4ZWRfc2l6ZV9hcnJheS5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciBtYXhfbm9kZSBpblxuICBsZXQgZXJyb3IsIG5vZGVzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZXJyb3IsIG5vZGVzKSBpIC0+XG4gICAgICAgIEZpeGVkX3NpemVfYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgICAgICAoaSA6IG5vZGUpXG4gICAgICAgICAgKG5vZGVfb2Zfbm9kZV9sYWJlbCBpKSBub2RlcylcbiAgICAgIChlcnJvciwgbm9kZXMpIChMaXN0LnJldiBub2RlX2xpc3QpXG4gIGluXG4gIGxldCBlcnJvciwgZWRnZXMgPSBGaXhlZF9zaXplX2FycmF5LmNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIG1heF9ub2RlIGluXG4gIGxldCBhZGRfZWRnZSBwYXJhbWV0ZXJzIGVycm9yIChuMSwgbGFiZWwsIG4yKSBlZGdlcyA9XG4gICAgbGV0IGVycm9yLCBvbGQgPVxuICAgICAgbWF0Y2ggRml4ZWRfc2l6ZV9hcnJheS51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgbjEgZWRnZXMgd2l0aFxuICAgICAgfCBlcnJvciwgTm9uZSAtPiBlcnJvciwgW11cbiAgICAgIHwgZXJyb3IsIFNvbWUgYSAtPiBlcnJvciwgYVxuICAgIGluXG4gICAgRml4ZWRfc2l6ZV9hcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciBuMSAoKG4yLCBsYWJlbCkgOjogb2xkKSBlZGdlc1xuICBpblxuICBsZXQgZXJyb3IsIGVkZ2VzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZXJyb3IsIGVkZ2VzKSBlZGdlIC0+IGFkZF9lZGdlIHBhcmFtZXRlcnMgZXJyb3IgZWRnZSBlZGdlcylcbiAgICAgIChlcnJvciwgZWRnZXMpIGVkZ2VfbGlzdFxuICBpblxuICBlcnJvciwgeyBub2RlX2xhYmVscyA9IG5vZGVzOyBlZGdlcyB9XG5cbmxldCBnZXQgcGFyYW1ldGVycyBlcnJvciBpIHQgPVxuICBtYXRjaCBOb2RlYXJyYXkudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGkgdCB3aXRoXG4gIHwgZXJyb3IsIFNvbWUgaSAtPiBlcnJvciwgaVxuICB8IGVycm9yLCBOb25lIC0+IGVycm9yLCAtMVxuXG5sZXQgZ2V0X2IgcGFyYW1ldGVycyBlcnJvciBpIHQgPVxuICBtYXRjaCBOb2RlYXJyYXkudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGkgdCB3aXRoXG4gIHwgZXJyb3IsIFNvbWUgaSAtPiBlcnJvciwgaVxuICB8IGVycm9yLCBOb25lIC0+IGVycm9yLCBmYWxzZVxuXG5sZXQgY29tcHV0ZV9zY2MgP2xvdyA/cHJlID9vbl9zdGFjayBwYXJhbWV0ZXJzIGVycm9yIG5fdG9fc3RyaW5nIGdyYXBoID1cbiAgbGV0IGVycm9yID1cbiAgICBpZiBsb2NhbF90cmFjZSB8fCBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZSBwYXJhbWV0ZXJzIHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgIFwiQ09NUFVURSBCUklER0U6IFxcbiBHcmFwaDogXFxuIE5vZGVzOiBcXG5cIlxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciA9XG4gICAgICAgIEZpeGVkX3NpemVfYXJyYXkuaXRlciBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIGkgaiAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgIFwiJWkgJXM7XFxuXCIgaSAobl90b19zdHJpbmcgailcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvcilcbiAgICAgICAgICBncmFwaC5ub2RlX2xhYmVsc1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciA9XG4gICAgICAgIEZpeGVkX3NpemVfYXJyYXkuaXRlciBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIGkgbCAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgIFwiJWk6XCIgaVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biBlcnJvciAoaiwgXykgLT5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICAgICAgICBcIiVpLFwiIGpcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvcilcbiAgICAgICAgICAgICAgICBlcnJvciBsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvcilcbiAgICAgICAgICBncmFwaC5lZGdlc1xuICAgICAgaW5cbiAgICAgIGVycm9yXG4gICAgKSBlbHNlXG4gICAgICBlcnJvclxuICBpblxuICBsZXQgZXJyb3IsIGxvdywgcHJlLCBvbl9zdGFjayA9XG4gICAgbWF0Y2ggbG93LCBwcmUsIG9uX3N0YWNrIHdpdGhcbiAgICB8IFNvbWUgbG93LCBTb21lIHByZSwgU29tZSBvbl9zdGFjayAtPiBlcnJvciwgbG93LCBwcmUsIG9uX3N0YWNrXG4gICAgfCBOb25lLCBfLCBfIHwgXywgTm9uZSwgXyB8IF8sIF8sIE5vbmUgLT5cbiAgICAgIGxldCBlcnJvciwgX21heF9ub2RlID1cbiAgICAgICAgRml4ZWRfc2l6ZV9hcnJheS5mb2xkIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgICAgICAoZnVuIF9wYXJhbWV0ZXIgZXJyb3IgaSBfIGogLT4gZXJyb3IsIG1heCAoaW50X29mX25vZGUgaSkgailcbiAgICAgICAgICBncmFwaC5ub2RlX2xhYmVscyAwXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb3cgPVxuICAgICAgICBtYXRjaCBsb3cgd2l0aFxuICAgICAgICB8IFNvbWUgbG93IC0+IGVycm9yLCBsb3dcbiAgICAgICAgfCBOb25lIC0+IE5vZGVhcnJheS5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAxXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBwcmUgPVxuICAgICAgICBtYXRjaCBwcmUgd2l0aFxuICAgICAgICB8IFNvbWUgcHJlIC0+IGVycm9yLCBwcmVcbiAgICAgICAgfCBOb25lIC0+IE5vZGVhcnJheS5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAxXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBvbl9zdGFjayA9XG4gICAgICAgIG1hdGNoIG9uX3N0YWNrIHdpdGhcbiAgICAgICAgfCBTb21lIG9uX3N0YWNrIC0+IGVycm9yLCBvbl9zdGFja1xuICAgICAgICB8IE5vbmUgLT4gTm9kZWFycmF5LmNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIDFcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG93LCBwcmUsIG9uX3N0YWNrXG4gIGluXG4gIGxldCByZWMgYXV4IHBhcmFtZXRlcnMgZXJyb3IgcHJlIGxvdyBvbl9zdGFjayBzY2NfbGlzdCBzdGFjayBjb3VudGVyIHYgPVxuICAgIGxldCBlcnJvciwgcHJlID0gTm9kZWFycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yIHYgY291bnRlciBwcmUgaW5cbiAgICBsZXQgZXJyb3IsIGxvdyA9IE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciB2IGNvdW50ZXIgbG93IGluXG4gICAgbGV0IHN0YWNrID0gdiA6OiBzdGFjayBpblxuICAgIGxldCBlcnJvciwgb25fc3RhY2sgPSBOb2RlYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgdiB0cnVlIG9uX3N0YWNrIGluXG4gICAgbGV0IGNvdW50ZXIgPSBzdWNjIGNvdW50ZXIgaW5cbiAgICBsZXQgZXJyb3IsIGVkZ2VzX3YgPVxuICAgICAgbWF0Y2ggRml4ZWRfc2l6ZV9hcnJheS51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdiBncmFwaC5lZGdlcyB3aXRoXG4gICAgICB8IGVycm9yLCBOb25lIC0+IGVycm9yLCBbXVxuICAgICAgfCBlcnJvciwgU29tZSBhIC0+IGVycm9yLCBhXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykpICh3LCBfKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcHJlX3cgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB3IHByZSBpblxuICAgICAgICAgIGxldCBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKSA9XG4gICAgICAgICAgICBpZiBwcmVfdyA9IC0xIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykgPVxuICAgICAgICAgICAgICAgIGF1eCBwYXJhbWV0ZXJzIGVycm9yIHByZSBsb3cgb25fc3RhY2sgc2NjX2xpc3Qgc3RhY2sgY291bnRlciB3XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG93X3YgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB2IGxvdyBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvd193ID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdyBsb3cgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb3cgPVxuICAgICAgICAgICAgICAgIE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciB2IChtaW4gbG93X3YgbG93X3cpIGxvd1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKVxuICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBiID0gZ2V0X2IgcGFyYW1ldGVycyBlcnJvciB3IG9uX3N0YWNrIGluXG4gICAgICAgICAgICAgIGlmIGIgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb3dfdiA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIHYgbG93IGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBwcmVfdyA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIHcgcHJlIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb3cgPVxuICAgICAgICAgICAgICAgICAgTm9kZWFycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yIHYgKG1pbiBsb3dfdiBwcmVfdykgbG93XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKVxuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykpXG4gICAgICAgIChlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKSlcbiAgICAgICAgZWRnZXNfdlxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb3dfdiA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIHYgbG93IGluXG4gICAgbGV0IGVycm9yLCBwcmVfdiA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIHYgcHJlIGluXG4gICAgaWYgbG93X3YgPSBwcmVfdiB0aGVuIChcbiAgICAgIGxldCByZWMgYXV4MiBwYXJhbWV0ZXJzIGVycm9yIHByZSBsb3cgb25fc3RhY2sgc2NjX2xpc3Qgc3RhY2sgY291bnRlciBjYyB2XG4gICAgICAgICAgPVxuICAgICAgICBtYXRjaCBzdGFjayB3aXRoXG4gICAgICAgIHwgdycgOjogc3RhY2sgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIG9uX3N0YWNrID1cbiAgICAgICAgICAgIE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciB3JyBmYWxzZSBvbl9zdGFja1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGNjID0gdycgOjogY2MgaW5cbiAgICAgICAgICBpZiB2ID0gdycgdGhlblxuICAgICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIGNjIDo6IHNjY19saXN0LCBzdGFjaylcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhdXgyIHBhcmFtZXRlcnMgZXJyb3IgcHJlIGxvdyBvbl9zdGFjayBzY2NfbGlzdCBzdGFjayBjb3VudGVyIGNjIHZcbiAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIGluXG4gICAgICBhdXgyIHBhcmFtZXRlcnMgZXJyb3IgcHJlIGxvdyBvbl9zdGFjayBzY2NfbGlzdCBzdGFjayBjb3VudGVyIFtdIHZcbiAgICApIGVsc2VcbiAgICAgIGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spXG4gIGluXG4gIGxldCBlcnJvciwgKHByZSwgbG93LCBfY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBfc3RhY2spID1cbiAgICBGaXhlZF9zaXplX2FycmF5LmZvbGQgcGFyYW1ldGVycyBlcnJvclxuICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIHYgXyAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spIC0+XG4gICAgICAgIGxldCBlcnJvciwgcHJlX3YgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB2IHByZSBpblxuICAgICAgICBpZiBwcmVfdiA9IC0xIHRoZW5cbiAgICAgICAgICBhdXggcGFyYW1ldGVycyBlcnJvciBwcmUgbG93IG9uX3N0YWNrIHNjY19saXN0IHN0YWNrIGNvdW50ZXIgdlxuICAgICAgICBlbHNlXG4gICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykpXG4gICAgICBncmFwaC5ub2RlX2xhYmVsc1xuICAgICAgKHByZSwgbG93LCAxLCBvbl9zdGFjaywgW10sIFtdKVxuICBpblxuICBsZXQgKCkgPVxuICAgIGlmIGxvY2FsX3RyYWNlIHx8IFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlIHBhcmFtZXRlcnMgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSBcIlNDQ1wiXG4gICAgICBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIGxpc3QgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAgIChMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgICAgXCIlaTtcIilcbiAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCJcXG5cIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgpKVxuICAgICAgICAgIHNjY19saXN0XG4gICAgICBpblxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICApXG4gIGluXG4gIGxldCBlcnJvciwgcHJlID0gTm9kZWFycmF5LmZyZWVfYWxsIHBhcmFtZXRlcnMgZXJyb3IgcHJlIGluXG4gIGxldCBlcnJvciwgbG93ID0gTm9kZWFycmF5LmZyZWVfYWxsIHBhcmFtZXRlcnMgZXJyb3IgbG93IGluXG4gIGxldCBlcnJvciwgb25fc3RhY2sgPSBOb2RlYXJyYXkuZnJlZV9hbGwgcGFyYW1ldGVycyBlcnJvciBvbl9zdGFjayBpblxuICBlcnJvciwgcHJlLCBsb3csIG9uX3N0YWNrLCBzY2NfbGlzdFxuXG5sZXQgZGV0ZWN0X2JyaWRnZXMgcGFyYW1ldGVycyBlcnJvciBhZGQgZ3JhcGggc3RyaW5nX29mX24gc3RyaW5nX29mX2Ugc2NjXG4gICAgYnJpZGdlcyA9XG4gIEZpeGVkX3NpemVfYXJyYXkuZm9sZCBwYXJhbWV0ZXJzIGVycm9yXG4gICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIG5pIGwgYnJpZGdlcyAtPlxuICAgICAgbGV0IGVycm9yLCBzY2NpID1cbiAgICAgICAgbWF0Y2ggTm9kZWFycmF5LmdldCBwYXJhbWV0ZXJzIGVycm9yIG5pIHNjYyB3aXRoXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgc2NjaSAtPiBlcnJvciwgc2NjaVxuICAgICAgICB8IGVycm9yLCBOb25lIC0+IEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0ICgtMSlcbiAgICAgIGluXG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgYnJpZGdlcykgKG5qLCBsYWJlbCkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHNjY2ogPVxuICAgICAgICAgICAgbWF0Y2ggTm9kZWFycmF5LmdldCBwYXJhbWV0ZXJzIGVycm9yIG5qIHNjYyB3aXRoXG4gICAgICAgICAgICB8IGVycm9yLCBTb21lIHNjY2ogLT4gZXJyb3IsIHNjY2pcbiAgICAgICAgICAgIHwgZXJyb3IsIE5vbmUgLT4gRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgKC0yKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgc2NjaSA9IHNjY2ogdGhlblxuICAgICAgICAgICAgZXJyb3IsIGJyaWRnZXNcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIEZpeGVkX3NpemVfYXJyYXkuZ2V0IHBhcmFtZXRlcnMgZXJyb3IgbmkgZ3JhcGgubm9kZV9sYWJlbHNcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICAgICAgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYnJpZGdlc1xuICAgICAgICAgICAgfCBlcnJvciwgU29tZSBuc3RyaW5naSAtPlxuICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgRml4ZWRfc2l6ZV9hcnJheS5nZXQgcGFyYW1ldGVycyBlcnJvciBuaiBncmFwaC5ub2RlX2xhYmVsc1xuICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IGVycm9yLCBOb25lIC0+XG4gICAgICAgICAgICAgICAgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYnJpZGdlc1xuICAgICAgICAgICAgICB8IGVycm9yLCBTb21lIG5zdHJpbmdqIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIGlmIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlIHBhcmFtZXRlcnMgfHwgbG9jYWxfdHJhY2VcbiAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCIlcyAlcyAlc1wiIChzdHJpbmdfb2ZfbiBuc3RyaW5naSkgKHN0cmluZ19vZl9lIGxhYmVsKVxuICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZ19vZl9uIG5zdHJpbmdqKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgYWRkIChuc3RyaW5naSwgbGFiZWwsIG5zdHJpbmdqKSBicmlkZ2VzKVxuICAgICAgICAgICkpXG4gICAgICAgIChlcnJvciwgYnJpZGdlcykgbClcbiAgICBncmFwaC5lZGdlcyBicmlkZ2VzXG5cbmxldCBhZGRfYnJpZGdlcyA/bG93ID9wcmUgP29uX3N0YWNrID9zY2MgYWRkIHBhcmFtZXRlcnMgZXJyb3Igc3RyaW5nX29mX25cbiAgICBzdHJpbmdfb2ZfZSBncmFwaCBicmlkZ2VzID1cbiAgbGV0IGVycm9yLCBzY2MgPVxuICAgIG1hdGNoIHNjYyB3aXRoXG4gICAgfCBTb21lIHNjYyAtPiBlcnJvciwgc2NjXG4gICAgfCBOb25lIC0+IE5vZGVhcnJheS5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAxXG4gIGluXG4gIGxldCBlcnJvciwgcHJlLCBsb3csIG9uX3N0YWNrLCBzY2NfbGlzdCA9XG4gICAgY29tcHV0ZV9zY2MgP2xvdyA/cHJlID9vbl9zdGFjayBwYXJhbWV0ZXJzIGVycm9yIHN0cmluZ19vZl9uIGdyYXBoXG4gIGluXG4gIGxldCBlcnJvciwgXywgc2NjID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZXJyb3IsIG4sIHNjYykgY2MgLT5cbiAgICAgICAgbGV0IGVycm9yLCBuLCBzY2MgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbiwgc2NjKSBub2RlIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgc2NjID0gTm9kZWFycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yIG5vZGUgbiBzY2MgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIG4sIHNjYylcbiAgICAgICAgICAgIChlcnJvciwgbiwgc2NjKSBjY1xuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbiArIDEsIHNjYylcbiAgICAgIChlcnJvciwgMSwgc2NjKSBzY2NfbGlzdFxuICBpblxuICBsZXQgZXJyb3IsIGJyaWRnZXMgPVxuICAgIGRldGVjdF9icmlkZ2VzIHBhcmFtZXRlcnMgZXJyb3IgYWRkIGdyYXBoIHN0cmluZ19vZl9uIHN0cmluZ19vZl9lIHNjY1xuICAgICAgYnJpZGdlc1xuICBpblxuICBsZXQgZXJyb3IsIHNjYyA9IE5vZGVhcnJheS5mcmVlX2FsbCBwYXJhbWV0ZXJzIGVycm9yIHNjYyBpblxuICBlcnJvciwgbG93LCBwcmUsIG9uX3N0YWNrLCBzY2MsIGJyaWRnZXNcbiIsIigqKlxuICogZGljdGlvbmFyeS5tbFxuICogb3BlbmthcHBhXG4gKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAqXG4gKiBDcmVhdGlvbjogMjAxMCwgdGhlIDE4dGggb2YgT2N0b2JlclxuICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxKdWwgMDUgMjAxNz5cbiAqICpcbiAqIFRoaXMgbGlicmFyeSBwcm92aWRlcyBwcmltaXRpdmVzIHRvIGRlYWwgaW5kZXhlZCBzZXQgb2YgdmFsdWVzXG4gKiBEdXJpbmcgdGhlIGNvbnN0cnVjdGlvbiBtZW1iZXJzaGlwLCB0cmFuZHVjdGlvbiwgYW5kIG5ldyBrZXkgY2FuXG4gKiBiZSBoYW5kbGVkIGluIE8obG9nIG4pXG4gKiBBZnRlciB0aGUgY29uc3RydWN0aW9uIGtleSBjYW4gYmUgdHJhbnNsYXRlZCBpbiBPKDEpXG4gKiAqXG4gKiBDb3B5cmlnaHQgMjAxMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgdHlwZSBEaWN0aW9uYXJ5ID0gc2lnXG4gIHR5cGUga2V5XG4gIHR5cGUgdmFsdWVcbiAgdHlwZSAoJ2EsICdiKSBkaWN0aW9uYXJ5XG5cbiAgdmFsIGluaXQgOiB1bml0IC0+ICgnYSwgJ2IpIGRpY3Rpb25hcnlcblxuICB2YWwgbWVtYmVyIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgdmFsdWUgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogYm9vbFxuXG4gIHZhbCBhbGxvY2F0ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICgnYSAtPiAnYSAtPiBrZXkpIC0+XG4gICAgdmFsdWUgLT5cbiAgICAnYSAtPlxuICAgIChrZXkgLT4gJ2IpIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIChrZXkgKiAnYSAqICdiICogKCdhLCAnYikgZGljdGlvbmFyeSkgb3B0aW9uXG5cbiAgdmFsIGFsbG9jYXRlX3VuaXF1ZWx5IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdhIC0+ICdhIC0+IGtleSkgLT5cbiAgICB2YWx1ZSAtPlxuICAgICdhIC0+XG4gICAgKGtleSAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogKGtleSAqICdhICogJ2IgKiAoJ2EsICdiKSBkaWN0aW9uYXJ5KSBvcHRpb25cblxuICAoKiAgdmFsIGFsbG9jYXRlX2ZfaWQ6IEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiB2YWx1ZSAtPiAoaW50IC0+ICdhKSAtPiAnYSBkaWN0aW9uYXJ5IC0+IEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIChpbnQgKiAnYSAqICdhIGRpY3Rpb25hcnkpIG9wdGlvbiopXG4gIHZhbCBhbGxvY2F0ZV9ib29sIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdhIC0+ICdhIC0+IGtleSkgLT5cbiAgICB2YWx1ZSAtPlxuICAgICdhIC0+XG4gICAgKGtleSAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyXG4gICAgKiAoYm9vbCAqIChrZXkgKiAnYSAqICdiICogKCdhLCAnYikgZGljdGlvbmFyeSkgb3B0aW9uKVxuXG4gIHZhbCB1bnNhZmVfYWxsb2NhdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICB2YWx1ZSAtPlxuICAgICdhIC0+XG4gICAgKGtleSAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogKGtleSAqICdhICogJ2IgKiAoJ2EsICdiKSBkaWN0aW9uYXJ5KVxuXG4gIHZhbCB0cmFuc2xhdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBrZXkgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogKHZhbHVlICogJ2EgKiAnYikgb3B0aW9uXG5cbiAgdmFsIHN0YWJpbGl6ZSA6ICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT4gKCdhLCAnYikgZGljdGlvbmFyeVxuXG4gIHZhbCBpdGVyIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBrZXkgLT5cbiAgICB2YWx1ZSAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIpIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlclxuXG4gIHZhbCBsYXN0X2VudHJ5IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGtleVxuXG4gIHZhbCBmb2xkIDpcbiAgICAodmFsdWUgLT4gJ2EgKiAnYiAtPiBrZXkgLT4gJ2MgLT4gJ2MpIC0+ICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT4gJ2MgLT4gJ2NcbmVuZFxuXG5leGNlcHRpb25cbiAgQXNzb2NpYXRpb25faXNfZXhpc3Rpbmdfd2l0aF90aGVfc2FtZV92YWx1ZV9pbl9hX2RpZmZlcmVudF9sb2NhdGlvbl9tZW1vcnlcblxuZXhjZXB0aW9uIEFzc29jaWF0aW9uX2lzX25vdF9kZWZpbmVkXG5cbm1vZHVsZSBEaWN0aW9uYXJ5ID1cbmZ1bmN0b3JcbiAgKEhhc2ggOiBIYXNoLkhhc2gpXG4gIC0+XG4gIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUga2V5ID0gaW50XG4gICAgICB0eXBlIHZhbHVlID0gSGFzaC5rZXlcblxuICAgICAgdHlwZSAoJ2EsICdiKSBpbl9jb25zdHJ1Y3Rpb24gPSB7XG4gICAgICAgIGhhc2hfdGFibGU6ICgnYSAqICdiKSBIYXNoLmhhc2g7XG4gICAgICAgIGZyZXNoOiBpbnQ7XG4gICAgICB9XG5cbiAgICAgIHR5cGUgKCdhLCAnYikgc3RhYmlsaXplZCA9ICh2YWx1ZSAqICdhICogJ2IpIG9wdGlvbiBhcnJheVxuXG4gICAgICB0eXBlICgnYSwgJ2IpIGRpY3Rpb25hcnkgPSB7XG4gICAgICAgIGlzX3N0YWJpbGl6ZWQ6IGJvb2w7XG4gICAgICAgIHN0YWJpbGl6ZWQ6ICgnYSwgJ2IpIHN0YWJpbGl6ZWQ7XG4gICAgICAgIGluX2NvbnN0cnVjdGlvbjogKCdhLCAnYikgaW5fY29uc3RydWN0aW9uO1xuICAgICAgfVxuXG4gICAgICBsZXQgaW52YWxpZCB4IHBhcmFtZXRlcnMgbWggX19QT1NfXyBtZXNzYWdlIGV4biA9XG4gICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgbWggX19QT1NfXyB+bWVzc2FnZSBleG4geFxuXG4gICAgICBsZXQgaW52YWxpZF9hcmcgPSBpbnZhbGlkIE5vbmVcbiAgICAgIGxldCBpbnZhbGlkX2FyZ19ib29sID0gaW52YWxpZCAoZmFsc2UsIE5vbmUpXG4gICAgICBsZXQgcHJlaW5pdCAoKSA9IHsgaGFzaF90YWJsZSA9IEhhc2guY3JlYXRlIDE7IGZyZXNoID0gMCB9XG5cbiAgICAgIGxldCBwcmVtZW1iZXIgcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBpbl9jb25zdHJ1Y3Rpb24gPVxuICAgICAgICBsZXQgZXJyb3IsIG91dHB1dCA9XG4gICAgICAgICAgSGFzaC5maW5kX29wdGlvbl93aXRob3V0X2xvZ3NcbiAgICAgICAgICAgICgqIGluZGVlZCwgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHRlc3Qgd2hldGhlciBvciBub3QgdGhlcmUgaXMgYW4gYXNzb2NpYXRpb24gKilcbiAgICAgICAgICAgIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgaW5fY29uc3RydWN0aW9uLmhhc2hfdGFibGVcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIG91dHB1dCAhPSBOb25lXG5cbiAgICAgIGxldCBwcmV0cmFuc2xhdGUgcGFyYW1ldGVycyBlcnJvciBrZXkgc3RhYmlsaXplZCA9XG4gICAgICAgIGlmIGtleSA+PSAwICYmIGtleSA8IEFycmF5Lmxlbmd0aCBzdGFiaWxpemVkIHRoZW4gKFxuICAgICAgICAgIG1hdGNoIHN0YWJpbGl6ZWQuKGtleSkgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+IGVycm9yLCBTb21lIGFcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBcIm1pc3NpbmcgZW50cnlcIlxuICAgICAgICAgICAgICBBc3NvY2lhdGlvbl9pc19ub3RfZGVmaW5lZFxuICAgICAgICApIGVsc2UgaWYga2V5IDwgMCB0aGVuXG4gICAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIFwibmVnYXRpdmUga2V5IGFyZSBub3QgYWxsb3dlZFwiXG4gICAgICAgICAgICBBc3NvY2lhdGlvbl9pc19ub3RfZGVmaW5lZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIFwibWlzc2luZyBlbnRyeVwiXG4gICAgICAgICAgICBBc3NvY2lhdGlvbl9pc19ub3RfZGVmaW5lZFxuXG4gICAgICBsZXQgcHJlc3RhYmlsaXplIGluX2NvbnN0cnVjdGlvbiA9XG4gICAgICAgIGxldCBhcnJheSA9IEFycmF5Lm1ha2UgaW5fY29uc3RydWN0aW9uLmZyZXNoIE5vbmUgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBIYXNoLml0ZXJcbiAgICAgICAgICAgIChmdW4gYSAoYXNzbywgYXNzbycpIGkgLT4gYXJyYXkuKGkpIDwtIFNvbWUgKGEsIGFzc28sIGFzc28nKSlcbiAgICAgICAgICAgIGluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGFycmF5XG5cbiAgICAgIGxldCBpbml0ICgpID1cbiAgICAgICAge1xuICAgICAgICAgIGluX2NvbnN0cnVjdGlvbiA9IHByZWluaXQgKCk7XG4gICAgICAgICAgc3RhYmlsaXplZCA9IEFycmF5Lm1ha2UgMCBOb25lO1xuICAgICAgICAgIGlzX3N0YWJpbGl6ZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgIGxldCBtZW1iZXIgcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBkaWN0aW9uYXJ5ID1cbiAgICAgICAgcHJlbWVtYmVyIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgZGljdGlvbmFyeS5pbl9jb25zdHJ1Y3Rpb25cblxuICAgICAgbGV0IHN0YWJpbGl6ZSBkaWN0aW9uYXJ5ID1cbiAgICAgICAgaWYgZGljdGlvbmFyeS5pc19zdGFiaWxpemVkIHRoZW5cbiAgICAgICAgICBkaWN0aW9uYXJ5XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpbl9jb25zdHJ1Y3Rpb24gPSBkaWN0aW9uYXJ5LmluX2NvbnN0cnVjdGlvbjtcbiAgICAgICAgICAgIGlzX3N0YWJpbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgICAgc3RhYmlsaXplZCA9IHByZXN0YWJpbGl6ZSBkaWN0aW9uYXJ5LmluX2NvbnN0cnVjdGlvbjtcbiAgICAgICAgICB9XG5cbiAgICAgIGxldCB0cmFuc2xhdGUgcGFyYW1ldGVycyBlcnJvciBrZXkgZGljdGlvbmFyeSA9XG4gICAgICAgIGxldCBkaWN0aW9uYXJ5ID0gc3RhYmlsaXplIGRpY3Rpb25hcnkgaW5cbiAgICAgICAgcHJldHJhbnNsYXRlIHBhcmFtZXRlcnMgZXJyb3Iga2V5IGRpY3Rpb25hcnkuc3RhYmlsaXplZFxuXG4gICAgICBsZXQgYWxsb2NhdGVfdW5pcXVlbHlfb3Jfbm90IHVuaXF1ZWx5IHBhcmFtZXRlcnMgZXJyb3IgY29tcGFyZVxuICAgICAgICAgICh2YWx1ZSA6IHZhbHVlKSBhc3NvIGJ1aWxkIGRpY3Rpb25hcnkgPVxuICAgICAgICBsZXQgaW5fY29uc3RydWN0aW9uID0gZGljdGlvbmFyeS5pbl9jb25zdHJ1Y3Rpb24gaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBIYXNoLmZpbmRfb3B0aW9uX3dpdGhvdXRfbG9nc1xuICAgICAgICAgICAgKCogaW5kZWVkLCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY2hlY2sgdGhhdCBlaXRoZXIgdGhlcmUgaXMgbm8gYXNzb2NpYXRpb24sIG9yIHRoYXQgdGhpcyBpcyB0aGUgc2FtZSBhc3NvY2lhdGlvbiAqKVxuICAgICAgICAgICAgcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBpbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICBsZXQgZnJlc2ggPSBpbl9jb25zdHJ1Y3Rpb24uZnJlc2ggaW5cbiAgICAgICAgICBsZXQgYXNzb19pZCA9IGJ1aWxkIGZyZXNoIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBoYXNoX3RhYmxlID1cbiAgICAgICAgICAgIEhhc2guYWRkIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgKGFzc28sIGFzc29faWQpIGZyZXNoXG4gICAgICAgICAgICAgIGluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgaGFzaCA9IHsgaGFzaF90YWJsZTsgZnJlc2ggPSBmcmVzaCArIDEgfSBpblxuICAgICAgICAgIGxldCBkaWN0aW9uYXJ5ID1cbiAgICAgICAgICAgIGlmIGRpY3Rpb25hcnkuaXNfc3RhYmlsaXplZCB0aGVuXG4gICAgICAgICAgICAgIHsgZGljdGlvbmFyeSB3aXRoIGlzX3N0YWJpbGl6ZWQgPSBmYWxzZSB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGRpY3Rpb25hcnlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBkaWN0aW9uYXJ5ID0geyBkaWN0aW9uYXJ5IHdpdGggaW5fY29uc3RydWN0aW9uID0gaGFzaCB9IGluXG4gICAgICAgICAgZXJyb3IsICh0cnVlLCBTb21lIChmcmVzaCwgYXNzbywgYXNzb19pZCwgZGljdGlvbmFyeSkpXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgKGksIChhc3NvJywgYXNzbydfaWQpKSB3aGVuIGFzc28nID09IGFzc28gLT5cbiAgICAgICAgICBlcnJvciwgKGZhbHNlLCBTb21lIChpLCBhc3NvJywgYXNzbydfaWQsIGRpY3Rpb25hcnkpKVxuICAgICAgICB8IGVycm9yLCBTb21lIChpLCAoYXNzbycsIGFzc28nX2lkKSkgd2hlbiBjb21wYXJlIGFzc28gYXNzbycgPSAwIC0+XG4gICAgICAgICAgaWYgdW5pcXVlbHkgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmdfYm9vbCBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgXCJ3cm9uZyBhc3NvY2lhdGlvbiAodGhlIGltYWdlIGlzIG5vdCB1bmlxdWVseSBkZXNjcmliZWQgaW4gXFxcbiAgICAgICAgICAgICAgIG1lbW9yeSlcIlxuICAgICAgICAgICAgICBBc3NvY2lhdGlvbl9pc19leGlzdGluZ193aXRoX3RoZV9zYW1lX3ZhbHVlX2luX2FfZGlmZmVyZW50X2xvY2F0aW9uX21lbW9yeVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCAoZmFsc2UsIFNvbWUgKGksIGFzc28nLCBhc3NvJ19pZCwgZGljdGlvbmFyeSkpXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgXyAtPlxuICAgICAgICAgIGludmFsaWRfYXJnX2Jvb2wgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICBcIndyb25nIGFzc29jaWF0aW9uIChzZXZlcmFsIGltYWdlcyBmb3IgdGhlIHNhbWUga2V5KVwiXG4gICAgICAgICAgICBBc3NvY2lhdGlvbl9pc19leGlzdGluZ193aXRoX3RoZV9zYW1lX3ZhbHVlX2luX2FfZGlmZmVyZW50X2xvY2F0aW9uX21lbW9yeVxuXG4gICAgICBsZXQgYWxsb2NhdGUgYWEgZSB4IHYgYSBkIGYgPVxuICAgICAgICBsZXQgYSwgKF8sIGMpID0gYWxsb2NhdGVfdW5pcXVlbHlfb3Jfbm90IGZhbHNlIGFhIGUgeCB2IGEgZCBmIGluXG4gICAgICAgIGEsIGNcblxuICAgICAgbGV0IGFsbG9jYXRlX3VuaXF1ZWx5IGFhIGUgeCB2IGEgZCBmID1cbiAgICAgICAgbGV0IGEsIChfLCBjKSA9IGFsbG9jYXRlX3VuaXF1ZWx5X29yX25vdCB0cnVlIGFhIGUgeCB2IGEgZCBmIGluXG4gICAgICAgIGEsIGNcblxuICAgICAgbGV0IGFsbG9jYXRlX2Jvb2wgYWEgZSA9IGFsbG9jYXRlX3VuaXF1ZWx5X29yX25vdCBmYWxzZSBhYSBlXG5cbiAgICAgIGxldCB1bnNhZmVfYWxsb2NhdGUgcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBhc3NvIGJ1aWxkIGRpY3Rpb25hcnkgPVxuICAgICAgICBsZXQgaW5fY29uc3RydWN0aW9uID0gZGljdGlvbmFyeS5pbl9jb25zdHJ1Y3Rpb24gaW5cbiAgICAgICAgbGV0IGZyZXNoID0gaW5fY29uc3RydWN0aW9uLmZyZXNoIGluXG4gICAgICAgIGxldCBhc3NvX2lkID0gYnVpbGQgZnJlc2ggaW5cbiAgICAgICAgbGV0IGVycm9yLCBoYXNoX3RhYmxlID1cbiAgICAgICAgICBIYXNoLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVycyBlcnJvciB2YWx1ZSAoYXNzbywgYXNzb19pZCkgZnJlc2hcbiAgICAgICAgICAgIGluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBoYXNoID0geyBoYXNoX3RhYmxlOyBmcmVzaCA9IGZyZXNoICsgMSB9IGluXG4gICAgICAgIGxldCBkaWN0aW9uYXJ5ID0geyBkaWN0aW9uYXJ5IHdpdGggaW5fY29uc3RydWN0aW9uID0gaGFzaCB9IGluXG4gICAgICAgIGVycm9yLCAoZnJlc2gsIGFzc28sIGFzc29faWQsIGRpY3Rpb25hcnkpXG5cbiAgICAgIGxldCBpdGVyIHBhcmFtZXRlcnMgZXJyb3IgZiBkaWMgPVxuICAgICAgICBsZXQgZGljJyA9IHN0YWJpbGl6ZSBkaWMgaW5cbiAgICAgICAgbGV0IGcga2V5IGVycm9yID0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gZXJyb3JcbiAgICAgICAgICB8IFNvbWUgKHZhbHVlLCBhLCBiKSAtPiBmIHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGEgYlxuICAgICAgICBpblxuICAgICAgICAoKiBpZiBkaWMuaXNfc3RhYmlsaXplZFxuICAgICAgICAgICB0aGVuKilcbiAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aSBnIGVycm9yIGRpYycuc3RhYmlsaXplZFxuICAgICAgKCplbHNlIEhhc2guZm9sZFxuICAgICAgICAoZnVuIHZhbHVlIChhLGIpIGtleSBlcnJvciAtPiBmIHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGEgYilcbiAgICAgICAgZGljLmluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlIGVycm9yKilcblxuICAgICAgbGV0IGZvbGQgZiBkaWN0aW9uYXJ5ID1cbiAgICAgICAgbGV0IGluX2NvbnN0cnVjdGlvbiA9IGRpY3Rpb25hcnkuaW5fY29uc3RydWN0aW9uIGluXG4gICAgICAgIEhhc2guZm9sZCBmIGluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlXG5cbiAgICAgIGxldCBsYXN0X2VudHJ5IF9wYXJhbWV0ZXJzIGVycm9yIGRpYyA9XG4gICAgICAgIGVycm9yLCBkaWMuaW5fY29uc3RydWN0aW9uLmZyZXNoIC0gMVxuICAgIGVuZCA6XG4gICAgICBEaWN0aW9uYXJ5IHdpdGggdHlwZSBrZXkgPSBpbnQgYW5kIHR5cGUgdmFsdWUgPSBIYXNoLmtleSlcblxubW9kdWxlIERpY3Rpb25hcnlfb2ZfT3JkID1cbmZ1bmN0b3IgKE8gOiBTZXRNYXAuT3JkZXJlZFR5cGUpIC0+IERpY3Rpb25hcnkgKEhhc2guSGFzaF9vZl9PcmQgKE8pKVxuIiwiKCoqXG4gICAqIHRpY2tfc3Rvcmllcy5tbFxuICAgKlxuICAgKiBQcm9ncmVzcyBiYXIgKGNvbWluZyBmcm9tIE1vZHMubWwpXG4gICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgICpcbiAgICogS2FTaW1cbiAgICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICAqXG4gICAqIENyZWF0aW9uOiAxNy8wNS8yMDE2XG4gICAqIExhc3QgbW9kaWZpY2F0aW9uOiAxNy8wNS8yMDE2XG4gICAqICpcbiAgICpcbiAgICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWVcbiAgICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgdGlja19zdG9yaWVzIGYgY29uZiBzYXZlX3Byb2dyZXNzX2JhciAoaW5pdCwgbGFzdCwgY291bnRlciwgbl9zdG9yaWVzKSA9XG4gIGxldCAoKSA9XG4gICAgaWYgbm90IGluaXQgdGhlbiAoXG4gICAgICBsZXQgYyA9IHJlZiBjb25mLkNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NTaXplIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZiBpblxuICAgICAgd2hpbGUgIWMgPiAwIGRvXG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiBmIFwiX1wiO1xuICAgICAgICBjIDo9ICFjIC0gMVxuICAgICAgZG9uZTtcbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBmXG4gICAgKVxuICBpblxuICBsZXQgbiA9XG4gICAgaWYgbl9zdG9yaWVzIDw9IDAgJiYgY291bnRlciA9IDAgdGhlblxuICAgICAgY29uZi5Db25maWd1cmF0aW9uLnByb2dyZXNzU2l6ZVxuICAgIGVsc2UgaWYgY291bnRlciA+IG5fc3RvcmllcyB0aGVuXG4gICAgICAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmMgPSBjb3VudGVyICogY29uZi5Db25maWd1cmF0aW9uLnByb2dyZXNzU2l6ZSAvIG5fc3RvcmllcyBpblxuICAgICAgbGV0IG5sID0gbGFzdCAqIGNvbmYuQ29uZmlndXJhdGlvbi5wcm9ncmVzc1NpemUgLyBuX3N0b3JpZXMgaW5cbiAgICAgIG5jIC0gbmxcbiAgICApXG4gIGluXG4gIGxldCByZWMgYXV4IG4gPVxuICAgIGlmIG4gPD0gMCB0aGVuXG4gICAgICAoKVxuICAgIGVsc2UgKFxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGYgXCIlY1wiIGNvbmYuQ29uZmlndXJhdGlvbi5wcm9ncmVzc0NoYXIgaW5cbiAgICAgIGF1eCAobiAtIDEpXG4gICAgKVxuICBpblxuICBsZXQgKCkgPSBhdXggbiBpblxuICBsZXQgKCkgPSBMb2dnZXJzLmZsdXNoX2xvZ2dlciBmIGluXG4gIGxldCAoKSA9IGlmIGNvdW50ZXIgPSBuX3N0b3JpZXMgdGhlbiBMb2dnZXJzLnByaW50X25ld2xpbmUgZiBpblxuICBsZXQgYmFyID0gdHJ1ZSwgY291bnRlciwgY291bnRlciArIDEsIG5fc3RvcmllcyBpblxuICBsZXQgKCkgPSBzYXZlX3Byb2dyZXNzX2JhciBiYXIgaW5cbiAgYmFyXG4iLCIoKipcbiAgICogZ3JhcGhfY2xvc3VyZS5tbFxuICAgKlxuICAgKiBBbGdvcml0aG1zIHRvIGNvbXB1dGUgdHJhbnNpdGl2ZSBjbG9zdXJlIG9mIG9iZXJ2YWJsZXMgaW4gdHJhY2VzXG4gICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgICpcbiAgICogS2FTaW1cbiAgICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICAqXG4gICAqIENyZWF0aW9uOiAxNy8wOC8yMDEzXG4gICAqIExhc3QgbW9kaWZpY2F0aW9uOiAxMC8wOS8yMDEzXG4gICAqICpcbiAgICpcbiAgICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWVcbiAgICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgQSA9IEFycmF5XG5tb2R1bGUgUyA9IE1vZHMuSW50U2V0XG5tb2R1bGUgTSA9IE1vZHMuSW50TWFwXG5cbmxldCBpZ25vcmVfZmxvd19mcm9tX291dGdvaW5nX3NpcGhvbiA9IHRydWVcbmxldCBjaGVja19tb2RlID0gZmFsc2VcblxudHlwZSBhbGdvX3R5cGUgPSBUb3BfZG93biB8IEJvdHRvbV91cCB8IENoZWNrXG50eXBlIG9yZGVyID0gSW5jcmVhc2luZ193aXRoX2xhc3RfZXZlbnQgfCBEZWNyZWFzaW5nX3dpdGhvdXRfbGFzdF9ldmVudFxuXG50eXBlIGNvbmZpZyA9IHtcbiAgZG9fdGljazogYm9vbDtcbiAga2VlcF9hbGxfbm9kZXM6IGJvb2w7XG4gIGN1dF90cmFuc2l0aXZlX3BhdGg6IGJvb2w7XG4gIHN0YXRfdHJhbnNfY2xvc3VyZV9mb3JfYmlnX2dyYXBoczogYm9vbDtcbiAgbWF4X2luZGV4OiBpbnQ7XG4gIGFsZ286IGFsZ29fdHlwZTtcbn1cblxubGV0IGNvbmZpZ19iaWdfZ3JhcGhfd2l0aF9wcm9ncmVzc19iYXIgPVxuICB7XG4gICAgZG9fdGljayA9IHRydWU7XG4gICAga2VlcF9hbGxfbm9kZXMgPSBmYWxzZTtcbiAgICBjdXRfdHJhbnNpdGl2ZV9wYXRoID0gdHJ1ZTtcbiAgICBzdGF0X3RyYW5zX2Nsb3N1cmVfZm9yX2JpZ19ncmFwaHMgPSB0cnVlO1xuICAgIG1heF9pbmRleCA9IDMwMDtcbiAgICBhbGdvID0gQm90dG9tX3VwICgqaWYgY2hlY2tfbW9kZSB0aGVuIENoZWNrIGVsc2UgVG9wX2Rvd24qKTtcbiAgfVxuXG5sZXQgY29uZmlnX2JpZ19ncmFwaF93aXRob3V0X3Byb2dyZXNzX2JhciA9XG4gIHsgY29uZmlnX2JpZ19ncmFwaF93aXRoX3Byb2dyZXNzX2JhciB3aXRoIGRvX3RpY2sgPSBmYWxzZSB9XG5cbmxldCBjb25maWdfc21hbGxfZ3JhcGggPVxuICB7XG4gICAgZG9fdGljayA9IGZhbHNlO1xuICAgIGtlZXBfYWxsX25vZGVzID0gdHJ1ZTtcbiAgICBjdXRfdHJhbnNpdGl2ZV9wYXRoID0gZmFsc2U7XG4gICAgc3RhdF90cmFuc19jbG9zdXJlX2Zvcl9iaWdfZ3JhcGhzID0gdHJ1ZTtcbiAgICBhbGdvID0gQm90dG9tX3VwO1xuICAgIG1heF9pbmRleCA9IDMwMDtcbiAgfVxuXG5sZXQgc3dhcCBmIGEgYiA9IGYgYiBhXG5sZXQgaWdub3JlX2ZzdCBmIF8gPSBmXG5cbmxldCByZWMgY29tcGFyZV9zdWNjIHAgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIHwgWyBfIF0gLT4gdHJ1ZVxuICB8IGEgOjogcSAtPlxuICAgIChtYXRjaCBxIHdpdGhcbiAgICB8IGIgOjogXyB3aGVuIHAgYSBiIC0+IGNvbXBhcmVfc3VjYyBwIHFcbiAgICB8IF8gLT4gZmFsc2UpXG5cbmxldCBzdHJpY3RseV9pbmNyZWFzaW5nID0gY29tcGFyZV9zdWNjIChmdW4gKGEgOiBpbnQpIGIgLT4gYSA8IGIpXG5sZXQgc3RyaWN0bHlfZGVjcmVhc2luZyA9IGNvbXBhcmVfc3VjYyAoZnVuIChhIDogaW50KSBiIC0+IGEgPiBiKVxubGV0IGNvbmNhdCBhID0gTGlzdC5yZXZfYXBwZW5kIChMaXN0LnJldiBhKVxuXG5sZXQgcHJpbnRfbGlzdCBmIGwgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYUBdQC5cIiAoUHAubGlzdCBQcC5jb21tYSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKSBsXG5cbmxldCBjaGVjayBmb3JtIHAgZiBzdHJpbmcgYSBiID1cbiAgbWF0Y2ggcCBhLCBwIGIgd2l0aFxuICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgIGxldCAoKSA9IHByaW50X2xpc3QgZm9ybSBhIGluXG4gICAgbGV0ICgpID0gcHJpbnRfbGlzdCBmb3JtIGIgaW5cbiAgICBmYWlsd2l0aCAoc3RyaW5nIF4gXCJfYXJnMV8yXCIpXG4gIHwgdHJ1ZSwgZmFsc2UgLT5cbiAgICBsZXQgKCkgPSBwcmludF9saXN0IGZvcm0gYiBpblxuICAgIGZhaWx3aXRoIChzdHJpbmcgXiBcIl9hcmcyXCIpXG4gIHwgZmFsc2UsIHRydWUgLT5cbiAgICBsZXQgKCkgPSBwcmludF9saXN0IGZvcm0gYSBpblxuICAgIGZhaWx3aXRoIChzdHJpbmcgXiBcIl9hcmcxXCIpXG4gIHwgdHJ1ZSwgdHJ1ZSAtPlxuICAgIGxldCByZXAgPSBmIGEgYiBpblxuICAgIGxldCAoKSA9IHByaW50X2xpc3QgZm9ybSByZXAgaW5cbiAgICBpZiBwIHJlcCB0aGVuXG4gICAgICByZXBcbiAgICBlbHNlIChcbiAgICAgIHByaW50X2xpc3QgZm9ybSBhO1xuICAgICAgcHJpbnRfbGlzdCBmb3JtIGI7XG4gICAgICBwcmludF9saXN0IGZvcm0gcmVwO1xuICAgICAgZmFpbHdpdGggKHN0cmluZyBeIFwiX291dHB1dFwiKVxuICAgIClcblxubGV0IGlzX3N0cmljdF9zdWJsaXN0IHAgYSBiID1cbiAgbGV0IHJlYyBhdXggYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IF8sIFtdIC0+IGZhbHNlXG4gICAgfCBbXSwgXyA6OiBfIC0+IHRydWVcbiAgICB8IGggOjogdCwgaCcgOjogdCcgd2hlbiBoID0gaCcgLT4gYXV4IHQgdCdcbiAgICB8IGggOjogXywgaCcgOjogXyB3aGVuIHAgaCBoJyAtPiBmYWxzZVxuICAgIHwgXywgXyA6OiB0JyAtPiBhdXggYSB0J1xuICBpblxuICBhdXggYSBiXG5cbmxldCBpbnNlcnRfZWx0IHAgZSA9IExpc3RfdXRpbC5tZXJnZV91bmlxIHAgWyBlIF1cblxubGV0IGRpZmZfbGlzdCBwIGEgYiA9XG4gIGxldCByZWMgYXV4IGEgYiBhY2N1ID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IGIsIFtdIC0+IExpc3QucmV2IChMaXN0LnJldl9hcHBlbmQgYiBhY2N1KVxuICAgIHwgW10sIF8gOjogXyAtPiBMaXN0LnJldiBhY2N1XG4gICAgfCBoIDo6IHQsIGgnIDo6IHQnIHdoZW4gaCA9IGgnIC0+IGF1eCB0IHQnIGFjY3VcbiAgICB8IGggOjogdCwgaCcgOjogXyB3aGVuIHAgaCBoJyAtPiBhdXggdCBiIChoIDo6IGFjY3UpXG4gICAgfCBfLCBfIDo6IHQnIC0+IGF1eCBhIHQnIGFjY3VcbiAgaW5cbiAgYXV4IGEgYiBbXVxuXG5sZXQgY29tcGFyZV9ib29sIGEgYiA9IGNvbXBhcmUgYSBiIDwgMFxubGV0IGRpZmZfbGlzdF9kZWNyZWFzaW5nID0gZGlmZl9saXN0IChzd2FwIGNvbXBhcmVfYm9vbClcbmxldCBtZXJnZV9saXN0X2RlY3JlYXNpbmcgPSBMaXN0X3V0aWwubWVyZ2VfdW5pcSAoZnVuIHggeSAtPiBTdGRsaWIuY29tcGFyZSB5IHgpXG5cbmxldCBjbG9zdXJlX2JvdHRvbV91cF93aXRoX2ZvbGQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnQgY29uZmlnXG4gICAgcHJlYyBpc19vYnMgZiBhID1cbiAgbGV0IGVycl9sb2dnZXIgPSBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVyIGluXG4gIGxldCBpc19vYnMgPVxuICAgIGlmIGNvbmZpZy5rZWVwX2FsbF9ub2RlcyB0aGVuXG4gICAgICBmdW4gXyAtPlxuICAgIHRydWVcbiAgICBlbHNlXG4gICAgICBpc19vYnNcbiAgaW5cbiAgbGV0IG1heF9pbmRleCA9IE0uZm9sZCAoZnVuIGkgXyAtPiBtYXggaSkgcHJlYyAwIGluXG4gIGxldCAoKSA9XG4gICAgaWYgY29uZmlnLnN0YXRfdHJhbnNfY2xvc3VyZV9mb3JfYmlnX2dyYXBocyAmJiBjb25maWcubWF4X2luZGV4ID4gMzAwIHRoZW4gKFxuICAgICAgbGV0IG5fZWRnZXMgPSBNLmZvbGQgKGlnbm9yZV9mc3QgKFMuZm9sZCAoaWdub3JlX2ZzdCBzdWNjKSkpIHByZWMgMCBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGVycl9sb2dnZXIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiBlcnJfbG9nZ2VyIFwiXFx0XFx0VHJhbnNpdGl2ZSBjbG9zdXJlICglaSBub2RlcywgJWkgZWRnZXMpXCJcbiAgICAgICAgICBtYXhfaW5kZXggbl9lZGdlc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBlcnJfbG9nZ2VyIGluXG4gICAgICAoKVxuICAgIClcbiAgaW5cbiAgbGV0IGRvX3RpY2ssIHRpY2ssIGNsb3NlX3RpY2sgPVxuICAgIGlmIG1heF9pbmRleCA+IDMwMCAmJiBjb25maWcuZG9fdGljayB0aGVuIChcbiAgICAgIGxldCB0aWNrID1cbiAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3RvcmllcyBlcnJfbG9nZ2VyIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIpXG4gICAgICAgICAgKGZhbHNlLCAwLCAwLCBtYXhfaW5kZXgpXG4gICAgICBpblxuICAgICAgbGV0IGYgPVxuICAgICAgICBUaWNrX3N0b3JpZXMudGlja19zdG9yaWVzIGVycl9sb2dnZXIgQ29uZmlndXJhdGlvbi5lbXB0eVxuICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLnNhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlcilcbiAgICAgIGluXG4gICAgICBsZXQgY2xvc2UgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZXJyX2xvZ2dlciBpblxuICAgICAgZiwgdGljaywgY2xvc2VcbiAgICApIGVsc2VcbiAgICAgIChmdW4geCAtPiB4KSwgKGZhbHNlLCAwLCAwLCAwKSwgZnVuICgpIC0+ICgpXG4gIGluXG4gIGxldCBzX3ByZWRfc3RhciA9IEEubWFrZSAobWF4X2luZGV4ICsgMSkgW10gaW5cbiAgbGV0IGNsZWFuLCBfbWF4X3N1Y2MgPVxuICAgIGxldCBtYXhfc3VjYyA9IEEuaW5pdCAobWF4X2luZGV4ICsgMSkgKGZ1biBpIC0+IGkpIGluXG4gICAgbGV0IF8gPVxuICAgICAgTS5pdGVyXG4gICAgICAgIChmdW4gc3VjYyAtPlxuICAgICAgICAgIFMuaXRlciAoZnVuIHByZWQgLT5cbiAgICAgICAgICAgICAgQS5zZXQgbWF4X3N1Y2MgcHJlZCAobWF4IHN1Y2MgKEEuZ2V0IG1heF9zdWNjIHByZWQpKSkpXG4gICAgICAgIHByZWNcbiAgICBpblxuICAgIGxldCBpc19sYXN0X3N1Y2Nfb2YgPSBBLm1ha2UgKG1heF9pbmRleCArIDEpIFtdIGluXG4gICAgbGV0IGFkZCBub2RlIG1heF9zdWNjID1cbiAgICAgIGxldCBvbGRfbCA9IEEuZ2V0IGlzX2xhc3Rfc3VjY19vZiBtYXhfc3VjYyBpblxuICAgICAgbGV0IGwnID0gbm9kZSA6OiBvbGRfbCBpblxuICAgICAgQS5zZXQgaXNfbGFzdF9zdWNjX29mIG1heF9zdWNjIGwnXG4gICAgaW5cbiAgICBsZXQgXyA9IEEuaXRlcmkgYWRkIG1heF9zdWNjIGluXG4gICAgbGV0IF8gPSBBLnNldCBpc19sYXN0X3N1Y2Nfb2YgMCBbXSBpblxuICAgIGxldCBnY193aGVuX3Zpc2l0IG5vZGUgPVxuICAgICAgTGlzdC5pdGVyIChmdW4gayAtPiBBLnNldCBzX3ByZWRfc3RhciBrIFtdKSAoQS5nZXQgaXNfbGFzdF9zdWNjX29mIG5vZGUpXG4gICAgaW5cbiAgICBnY193aGVuX3Zpc2l0LCBmdW4gaSAtPiBBLmdldCBtYXhfc3VjYyBpXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIG1hdGNoIGV2ZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvXG4gICAgfCBTb21lIGUgLT5cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50IHBhcmFtZXRlciBlcnJvciBlIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgbGV0IG91dHB1dCA9XG4gICAgTS5mb2xkX3dpdGhfaW50ZXJydXB0aW9uXG4gICAgICAoZnVuIHN1Y2Mgc19wcmVkICh0aWNrLCBlcnJvciwgbG9nX2luZm8sIGNvdW50ZXIsIGEpIC0+XG4gICAgICAgIGxldCByZWMgYXV4IChsIDogaW50IGxpc3QpIChhY2N1IDogaW50IGxpc3QpID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGFjY3VcbiAgICAgICAgICB8IHByZWQgOjogdCAtPlxuICAgICAgICAgICAgbGV0IG5ld19sID0gQS5nZXQgc19wcmVkX3N0YXIgcHJlZCBpblxuICAgICAgICAgICAgbGV0IGRpZmYgPVxuICAgICAgICAgICAgICBpZiBjb25maWcuY3V0X3RyYW5zaXRpdmVfcGF0aCB0aGVuXG4gICAgICAgICAgICAgICAgZGlmZl9saXN0X2RlY3JlYXNpbmcgdCBuZXdfbFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGF1eCBkaWZmIChtZXJnZV9saXN0X2RlY3JlYXNpbmcgKHByZWQgOjogbmV3X2wpIGFjY3UpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmVkX3N0YXIgPVxuICAgICAgICAgIGxldCBsX3ByZWQgPSBTLmZvbGQgKGZ1biBpIGogLT4gaSA6OiBqKSBzX3ByZWQgW10gaW5cbiAgICAgICAgICBsZXQgcyA9IEEuZ2V0IHNfcHJlZF9zdGFyIHN1Y2MgaW5cbiAgICAgICAgICBhdXggbF9wcmVkIHNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IF8gPSBBLnNldCBzX3ByZWRfc3RhciBzdWNjIHByZWRfc3RhciBpblxuICAgICAgICBsZXQgXyA9IGNsZWFuIHN1Y2MgaW5cbiAgICAgICAgbGV0IHRpY2sgPSBkb190aWNrIHRpY2sgaW5cbiAgICAgICAgaWYgaXNfb2JzIHN1Y2MgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYSA9XG4gICAgICAgICAgICBmIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN1Y2MgcHJlZF9zdGFyIGFcbiAgICAgICAgICBpblxuICAgICAgICAgIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgICAgICAgICAoZnVuIGEgLT4gU3RvcC5zdWNjZXNzICh0aWNrLCBlcnJvciwgbG9nX2luZm8sIGNvdW50ZXIgKyAxLCBhKSlcbiAgICAgICAgICAgIChmdW4gYiAtPiBTdG9wLnN0b3AgKGVycm9yLCBsb2dfaW5mbywgYikpXG4gICAgICAgICAgICBhXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIFN0b3Auc3VjY2VzcyAodGljaywgZXJyb3IsIGxvZ19pbmZvLCBjb3VudGVyLCBhKSlcbiAgICAgIHByZWNcbiAgICAgICh0aWNrLCBlcnJvciwgbG9nX2luZm8sIDEsIGEpXG4gIGluXG4gIGxldCBfID0gY2xvc2VfdGljayAoKSBpblxuICBTdG9wLnN1Y2Nlc3Nfb3Jfc3RvcFxuICAgIChmdW4gKF8sIGVycm9yLCBsb2dfaW5mbywgXywgYSkgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBtYXRjaCBldmVudCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgfCBTb21lIGUgLT5cbiAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlciBlcnJvciBlIE5vbmUgbG9nX2luZm9cbiAgICAgIGluXG4gICAgICBTdG9wLnN1Y2Nlc3MgKGVycm9yLCBsb2dfaW5mbywgYSkpXG4gICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBiKSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIG1hdGNoIGV2ZW50IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mb1xuICAgICAgICB8IFNvbWUgZSAtPlxuICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnQgcGFyYW1ldGVyIGVycm9yIGUgTm9uZSBsb2dfaW5mb1xuICAgICAgaW5cbiAgICAgIFN0b3Auc3RvcCAoZXJyb3IsIGxvZ19pbmZvLCBiKSlcbiAgICBvdXRwdXRcblxubGV0IGNsb3N1cmVfYm90dG9tX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X29wdCBjb25maWcgcHJlY1xuICAgIGlzX29icyA9XG4gIGxldCBtYXhfaW5kZXggPSBNLmZvbGQgKGZ1biBpIF8gLT4gbWF4IGkpIHByZWMgMCBpblxuICBsZXQgc19wcmVkX3N0YXIgPSBBLm1ha2UgKG1heF9pbmRleCArIDEpIFtdIGluXG4gIGxldCBmIF9wIF9oIGMgZSBpIHMgYSA9XG4gICAgbGV0IF8gPSBBLnNldCBhIGkgcyBpblxuICAgIGUsIGMsIFN0b3Auc3VjY2VzcyBhXG4gIGluXG4gIGxldCBvdXRwdXQgPVxuICAgIGNsb3N1cmVfYm90dG9tX3VwX3dpdGhfZm9sZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHRcbiAgICAgIGNvbmZpZyBwcmVjIGlzX29icyBmIHNfcHJlZF9zdGFyXG4gIGluXG4gIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBncmFwaCkgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGdyYXBoLCBEZWNyZWFzaW5nX3dpdGhvdXRfbGFzdF9ldmVudCkpXG4gICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBfKSAtPlxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoc19wcmVkX3N0YXIsIERlY3JlYXNpbmdfd2l0aG91dF9sYXN0X2V2ZW50KSlcbiAgICBvdXRwdXRcblxubGV0IGNsb3N1cmVfdG9wX2Rvd24gcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIF9ldmVudF9vcHQgY29uZmlnIHByZWNcbiAgICBpc19vYnMgZGVsdGEgPVxuICBsZXQgZXJyX2xvZ2dlciA9IFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXIgaW5cbiAgbGV0IGlzX29icyA9XG4gICAgaWYgY29uZmlnLmtlZXBfYWxsX25vZGVzIHRoZW5cbiAgICAgIGZ1biBfIC0+XG4gICAgdHJ1ZVxuICAgIGVsc2VcbiAgICAgIGlzX29ic1xuICBpblxuICBsZXQgbWF4X2luZGV4ID0gTS5mb2xkIChmdW4gaSBfIC0+IG1heCBpKSBwcmVjIDAgaW5cbiAgbGV0IHByZWMgPSBNLmZvbGQgKGZ1biBpIHNfcHJlZCBsIC0+IChpLCBzX3ByZWQpIDo6IGwpIHByZWMgW10gaW5cbiAgbGV0IGNyZWF0ZV90YWludHMgaSA9XG4gICAgbGV0IHJlYyBhdXggZGVsdGEgb3V0cHV0ID1cbiAgICAgIGlmIGRlbHRhID0gMCB0aGVuXG4gICAgICAgIG91dHB1dFxuICAgICAgZWxzZVxuICAgICAgICBhdXggKGRlbHRhIC0gMSkgKFMuZW1wdHkgOjogb3V0cHV0KVxuICAgIGluXG4gICAgYXV4IGRlbHRhIFsgUy5zaW5nbGV0b24gaSBdXG4gIGluXG4gIGxldCBzaGlmdF90YWludHMgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCB0IDo6IHQnIDo6IHEgLT4gUy51bmlvbiB0IHQnIDo6IHFcbiAgICB8IF8gLT4gbFxuICBpblxuICBsZXQgcmVjIG1lcmdlX3RhaW50cyBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IF8sIFtdIC0+IGwxXG4gICAgfCBbXSwgXyAtPiBsMlxuICAgIHwgdCA6OiBxLCB0JyA6OiBxJyAtPiBTLnVuaW9uIHQgdCcgOjogbWVyZ2VfdGFpbnRzIHEgcSdcbiAgaW5cbiAgbGV0IHNfcHJlZF9zdGFyID0gQS5tYWtlIChtYXhfaW5kZXggKyAxKSBbXSBpblxuICBsZXQgdGFpbnQgaSB0YWludHMgPVxuICAgIG1hdGNoIHRhaW50cyB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgdCA6OiBfcSAtPlxuICAgICAgUy5pdGVyXG4gICAgICAgIChmdW4gdGFpbnQgLT4gQS5zZXQgc19wcmVkX3N0YXIgdGFpbnQgKGkgOjogQS5nZXQgc19wcmVkX3N0YXIgdGFpbnQpKVxuICAgICAgICB0XG4gIGluXG4gIGxldCBkb190aWNrLCB0aWNrLCBjbG9zZV90aWNrID1cbiAgICBpZiBtYXhfaW5kZXggPiAzMDAgJiYgY29uZmlnLmRvX3RpY2sgdGhlbiAoXG4gICAgICBsZXQgdGljayA9XG4gICAgICAgIFRpY2tfc3Rvcmllcy50aWNrX3N0b3JpZXMgZXJyX2xvZ2dlciBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyKVxuICAgICAgICAgIChmYWxzZSwgMCwgMCwgbWF4X2luZGV4KVxuICAgICAgaW5cbiAgICAgIGxldCBmID1cbiAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3RvcmllcyBlcnJfbG9nZ2VyIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgbGV0IGNsb3NlICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGVycl9sb2dnZXIgaW5cbiAgICAgIGYsIHRpY2ssIGNsb3NlXG4gICAgKSBlbHNlXG4gICAgICAoZnVuIHggLT4geCksIChmYWxzZSwgMCwgMCwgMCksIGZ1biAoKSAtPiAoKVxuICBpblxuICBsZXQgdGFpbnRpbmcgPSBBLm1ha2UgKG1heF9pbmRleCArIDEpIFtdIGluXG4gIGxldCBfID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biB0aWNrIChpLCBzX3ByZWQpIC0+XG4gICAgICAgIGxldCBuZXdfdGFpbnQgPVxuICAgICAgICAgIGlmIGlzX29icyBpIHRoZW5cbiAgICAgICAgICAgIGNyZWF0ZV90YWludHMgaVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0YWludHMgPSBtZXJnZV90YWludHMgbmV3X3RhaW50IChBLmdldCB0YWludGluZyBpKSBpblxuICAgICAgICBsZXQgKCkgPSB0YWludCBpIHRhaW50cyBpblxuICAgICAgICBsZXQgc2hpZnRlZF90YWludHMgPSBzaGlmdF90YWludHMgdGFpbnRzIGluXG4gICAgICAgIGxldCB0YWludCB4ID1cbiAgICAgICAgICBBLnNldCB0YWludGluZyB4IChtZXJnZV90YWludHMgc2hpZnRlZF90YWludHMgKEEuZ2V0IHRhaW50aW5nIHgpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBTLml0ZXIgdGFpbnQgc19wcmVkIGluXG4gICAgICAgIGxldCAoKSA9IEEuc2V0IHRhaW50aW5nIGkgW10gaW5cbiAgICAgICAgZG9fdGljayB0aWNrKVxuICAgICAgdGljayBwcmVjXG4gIGluXG4gIGxldCAoKSA9IGNsb3NlX3RpY2sgKCkgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCAoc19wcmVkX3N0YXIsIEluY3JlYXNpbmdfd2l0aF9sYXN0X2V2ZW50KVxuXG5sZXQgZ2V0X2xpc3RfaW5faW5jcmVhc2luZ19vcmRlcl93aXRoX2xhc3RfZXZlbnQgaSAobSwgbW9kZSkgPVxuICBtYXRjaCBtb2RlIHdpdGhcbiAgfCBJbmNyZWFzaW5nX3dpdGhfbGFzdF9ldmVudCAtPiBtLihpKVxuICB8IERlY3JlYXNpbmdfd2l0aG91dF9sYXN0X2V2ZW50IC0+XG4gICAgKG1hdGNoIG0uKGkpIHdpdGhcbiAgICB8IFtdIC0+IFtdXG4gICAgfCBsIC0+IExpc3QucmV2IChpIDo6IGwpKVxuXG5sZXQgY2xvc3VyZV9jaGVjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHQgY29uZmlnIHByZWMgaXNfb2JzXG4gICAgPVxuICBsZXQgdCA9IFN5cy50aW1lICgpIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIChhLCBhJykgPVxuICAgIGNsb3N1cmVfdG9wX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjXG4gICAgICBpc19vYnMgMFxuICBpblxuICBsZXQgdCcgPSBTeXMudGltZSAoKSBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYiwgYicpID1cbiAgICBjbG9zdXJlX2JvdHRvbV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHRcbiAgICAgIHsgY29uZmlnIHdpdGggZG9fdGljayA9IGZhbHNlIH1cbiAgICAgIHByZWMgaXNfb2JzXG4gIGluXG4gIGxldCB0JycgPSBTeXMudGltZSAoKSBpblxuICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIk5FVzogJWYgT0xEOiAlZiBcXG5cIiAodCcgLS4gdCkgKHQnJyAtLiB0JykgaW5cbiAgbGV0IF8gPVxuICAgIEEuaXRlcmlcbiAgICAgIChmdW4gaSBfcyAtPlxuICAgICAgICBsZXQgcyA9IGdldF9saXN0X2luX2luY3JlYXNpbmdfb3JkZXJfd2l0aF9sYXN0X2V2ZW50IGkgKGEsIGEnKSBpblxuICAgICAgICBsZXQgcycgPSBnZXRfbGlzdF9pbl9pbmNyZWFzaW5nX29yZGVyX3dpdGhfbGFzdF9ldmVudCBpIChiLCBiJykgaW5cbiAgICAgICAgaWYgcyA9IHMnIHRoZW5cbiAgICAgICAgICAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIkRJRkZFUiAlaVxcblwiIGkgaW5cbiAgICAgICAgICBsZXQgXyA9IExpc3QuaXRlciAoUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiJWksIFwiKSBzIGluXG4gICAgICAgICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCJcXG5cIiBpblxuICAgICAgICAgIGxldCBfID0gTGlzdC5pdGVyIChQcmludGYuZnByaW50ZiBzdGRlcnIgXCIlaSwgXCIpIHMnIGluXG4gICAgICAgICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCJcXG5cIiBpblxuICAgICAgICAgICgpXG4gICAgICAgICkpXG4gICAgICBhXG4gIGluXG4gIGVycm9yLCBsb2dfaW5mbywgKGEsIGEnKVxuXG5sZXQgY2xvc3VyZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHQgY29uZmlnIHByZWMgaXNfb2JzID1cbiAgbWF0Y2ggY29uZmlnLmFsZ28gd2l0aFxuICB8IENoZWNrIC0+XG4gICAgY2xvc3VyZV9jaGVjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHQgY29uZmlnIHByZWMgaXNfb2JzXG4gIHwgQm90dG9tX3VwIC0+XG4gICAgY2xvc3VyZV9ib3R0b21fdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjXG4gICAgICBpc19vYnNcbiAgfCBUb3BfZG93biAtPlxuICAgIGNsb3N1cmVfdG9wX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjXG4gICAgICBpc19vYnMgMFxuXG5sZXQgcmVkdWN0aW9uX3RvcF9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWMgPVxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgIFN0b3J5UHJvZmlsaW5nLkdyYXBoX3JlZHVjdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIChwcmVjX3N0YXIsIF8pID1cbiAgICBjbG9zdXJlX3RvcF9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICBTdG9yeVByb2ZpbGluZy5UcmFuc2l0aXZlX2Nsb3N1cmUgY29uZmlnX2JpZ19ncmFwaF93aXRob3V0X3Byb2dyZXNzX2JhclxuICAgICAgcHJlY1xuICAgICAgKGZ1biBfIC0+IHRydWUpXG4gICAgICAyXG4gIGluXG4gIGxldCBvdXRwdXQgPVxuICAgIE0uZm9sZFxuICAgICAgKGZ1biBlaWQgbmVpZ2ggb3V0IC0+XG4gICAgICAgIGxldCB0b19yZW1vdmUgPSBBLmdldCBwcmVjX3N0YXIgZWlkIGluXG4gICAgICAgIGxldCBzID0gUy5mb2xkIChmdW4gaSBsIC0+IGkgOjogbCkgbmVpZ2ggW10gaW5cbiAgICAgICAgbGV0IHMgPSBMaXN0LnJldiBzIGluXG4gICAgICAgIGxldCByZWMgYXV4IGwxIGwyIG91dHB1dCA9XG4gICAgICAgICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICAgICAgICB8IF8sIFtdIC0+XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIHNldCBpIC0+IFMuYWRkIGkgc2V0KSBvdXRwdXQgbDFcbiAgICAgICAgICAgICgqIFRoaXMgaXMgcXVpdGUgYW5ub3lpbmcsIHdoeSBwcmVjIGlzIG5vdCBkZXNjcmliZWQgd2l0aCBvcmRlcmVkIGxpc3QgKilcbiAgICAgICAgICB8IFtdLCBfIC0+IG91dHB1dFxuICAgICAgICAgIHwgaCA6OiBxLCBoJyA6OiBxJyAtPlxuICAgICAgICAgICAgbGV0IGNtcCA9IGNvbXBhcmUgaCBoJyBpblxuICAgICAgICAgICAgaWYgY21wIDwgMCB0aGVuXG4gICAgICAgICAgICAgIGF1eCBxIGwyIChTLmFkZCBoIG91dHB1dClcbiAgICAgICAgICAgIGVsc2UgaWYgY21wID0gMCB0aGVuXG4gICAgICAgICAgICAgIGF1eCBxIHEnIG91dHB1dFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhdXggKGggOjogcSkgcScgb3V0cHV0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBzID0gYXV4IHMgdG9fcmVtb3ZlIFMuZW1wdHkgaW5cbiAgICAgICAgTS5hZGQgZWlkIHMgb3V0KVxuICAgICAgcHJlYyBwcmVjXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnQgcGFyYW1ldGVyIGVycm9yXG4gICAgICBTdG9yeVByb2ZpbGluZy5HcmFwaF9yZWR1Y3Rpb24gTm9uZSBsb2dfaW5mb1xuICBpblxuICBlcnJvciwgbG9nX2luZm8sIG91dHB1dFxuXG5sZXQgcmVkdWN0aW9uID0gcmVkdWN0aW9uX3RvcF9kb3duXG4iLCJ0eXBlIHF1YXJrX2xpc3RzID0ge1xuICBzaXRlX3Rlc3RlZDogKGludCAqIGludCkgbGlzdDtcbiAgc2l0ZV9tb2RpZmllZDogKGludCAqIGludCkgbGlzdDtcbiAgaW50ZXJuYWxfc3RhdGVfdGVzdGVkOiAoaW50ICogaW50KSBsaXN0O1xuICBpbnRlcm5hbF9zdGF0ZV9tb2RpZmllZDogKGludCAqIGludCkgbGlzdDtcbn1cblxudHlwZSBldmVudF9raW5kID0gT0JTIG9mIHN0cmluZyB8IEVWRU5UIG9mIFRyYWNlLmV2ZW50X2tpbmRcblxubGV0IGF0b21fdGVzdGVkID0gMVxubGV0IGF0b21fbW9kaWZpZWQgPSAyXG5sZXQgYXRvbV90ZXN0ZWRtb2RpZmllZCA9IDNcblxudHlwZSBhdG9tID0ge1xuICBjYXVzYWxfaW1wYWN0OiBpbnQ7ICgqKDEpIHRlc3RlZCAoMikgbW9kaWZpZWQsICgzKSB0ZXN0ZWQgKyBtb2RpZmllZCopXG4gIGVpZDogaW50OyAoKmV2ZW50IGlkZW50aWZpZXIqKVxuICBraW5kOiBldmVudF9raW5kOyAoKm9ic2VydmF0aW9uOiBzdHJpbmcgbGlzdCopXG59XG5cbnR5cGUgYXR0cmlidXRlID0gYXRvbSBsaXN0ICgqdmVydGljYWwgc2VxdWVuY2Ugb2YgYXRvbXMqKVxuXG50eXBlIGdyaWQgPSB7XG4gIGZsb3c6IChpbnQgKiBpbnQgKiBpbnQsIGF0dHJpYnV0ZSkgSGFzaHRibC50O1xuICAoKihuX2ksc19pLHFfaSkgLT4gYXR0X2kgd2l0aCBuX2k6IG5vZGVfaWQsIHNfaTogc2l0ZV9pZCwgcV9pOlxuICAgIGxpbmsgKDEpIG9yIGludGVybmFsIHN0YXRlICgwKSAqKVxuICBwaWRfdG9faW5pdDogKGludCAqIGludCAqIGludCwgaW50KSBIYXNodGJsLnQ7XG4gIG9iczogaW50IGxpc3Q7XG4gIGluaXRfdGJsOiAoaW50LCBNb2RzLkludFNldC50KSBIYXNodGJsLnQ7ICgqZGVjcmVhc2luZyopXG4gIGluaXRfdG9fZWlkbWF4OiAoaW50LCBpbnQpIEhhc2h0YmwudDtcbn1cblxudHlwZSBjb25maWcgPSB7XG4gIGV2ZW50c19raW5kOiBldmVudF9raW5kIE1vZHMuSW50TWFwLnQ7XG4gIHByZWNfMTogTW9kcy5JbnRTZXQudCBNb2RzLkludE1hcC50O1xuICBjb25mbGljdDogTW9kcy5JbnRTZXQudCBNb2RzLkludE1hcC50O1xufVxuXG50eXBlIGVucmljaGVkX2dyaWQgPSB7XG4gIGNvbmZpZzogY29uZmlnO1xuICBkZXB0aDogaW50O1xuICBwcmVjX3N0YXI6IGludCBsaXN0IGFycmF5ICogR3JhcGhfY2xvc3VyZS5vcmRlcjsgKCpkZWNyZWFzaW5nKilcbiAgZGVwdGhfb2ZfZXZlbnQ6IGludCBNb2RzLkludE1hcC50O1xuICBzaXplOiBpbnQ7XG59XG5cbnR5cGUgZm9ybWF0Q2Zsb3cgPSBEb3QgfCBIdG1sIHwgSnNvblxuXG5sZXQgZW1wdHlfY29uZmlnID1cbiAge1xuICAgIGV2ZW50c19raW5kID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgY29uZmxpY3QgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICBwcmVjXzEgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgfVxuXG5sZXQgcHJpbnRfZXZlbnRfa2luZCA/ZW52IGYgPSBmdW5jdGlvblxuICB8IEVWRU5UIGUgLT4gVHJhY2UucHJpbnRfZXZlbnRfa2luZCA/ZW52IGYgZVxuICB8IE9CUyBpIC0+XG4gICAgKG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJPQlMoJXMpXCIgaVxuICAgIHwgU29tZSBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBpKVxuXG5sZXQgZGVidWdfcHJpbnRfY2F1c2FsIGYgaSA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgIChpZiBpID0gYXRvbV90ZXN0ZWQgdGhlblxuICAgICAgIFwidGVzdGVkXCJcbiAgICAgZWxzZSBpZiBpID0gYXRvbV9tb2RpZmllZCB0aGVuXG4gICAgICAgXCJtb2RpZmllZFwiXG4gICAgIGVsc2UgaWYgaSA9IGF0b21fdGVzdGVkIGxvciBhdG9tX21vZGlmaWVkIHRoZW5cbiAgICAgICBcInRlc3RlZCZtb2RpZmllZFwiXG4gICAgIGVsc2VcbiAgICAgICBcIkNBVVNBTCBJTVBBQ1QgVU5ERUZJTkVEXCIpXG5cbmxldCBkZWJ1Z19wcmludF9hdG9tIGYgYSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJ7IyVpOiAlYSAlYX1cIiBhLmVpZCBkZWJ1Z19wcmludF9jYXVzYWwgYS5jYXVzYWxfaW1wYWN0XG4gICAgKHByaW50X2V2ZW50X2tpbmQgP2VudjpOb25lKVxuICAgIGEua2luZFxuXG5sZXQgZGVidWdfcHJpbnRfZ3JpZCBmIGcgPVxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj5GbG93OkAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBIYXNodGJsLml0ZXJcbiAgICAgIChmdW4gKG5vZGVfaWQsIHNpdGVfaWQsIHEpIGwgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPDI+JWkuJWklczpALCVhQF1ALFwiIG5vZGVfaWQgc2l0ZV9pZFxuICAgICAgICAgIChpZiBxID0gMCB0aGVuXG4gICAgICAgICAgICAgXCJ+XCJcbiAgICAgICAgICAgZWxzZSBpZiBxID0gMSB0aGVuXG4gICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgXCJVTkRFRklORURcIilcbiAgICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSBkZWJ1Z19wcmludF9hdG9tKVxuICAgICAgICAgIGwpXG4gICAgICBnLmZsb3dcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBdQC5cIlxuXG5sZXQgZW1wdHlfZ3JpZCAoKSA9XG4gIHtcbiAgICBmbG93ID0gSGFzaHRibC5jcmVhdGUgIVBhcmFtZXRlci5kZWZhdWx0RXh0QXJyYXlTaXplO1xuICAgIHBpZF90b19pbml0ID0gSGFzaHRibC5jcmVhdGUgIVBhcmFtZXRlci5kZWZhdWx0RXh0QXJyYXlTaXplO1xuICAgIG9icyA9IFtdO1xuICAgIGluaXRfdGJsID0gSGFzaHRibC5jcmVhdGUgIVBhcmFtZXRlci5kZWZhdWx0RXh0QXJyYXlTaXplO1xuICAgIGluaXRfdG9fZWlkbWF4ID0gSGFzaHRibC5jcmVhdGUgIVBhcmFtZXRlci5kZWZhdWx0RXh0QXJyYXlTaXplO1xuICB9XG5cbmxldCBidWlsZF9zdWJzIGwgPVxuICBzbmRcbiAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAoZnVuIChuLCBtYXApIGEgLT4gc3VjYyBuLCBNb2RzLkludE1hcC5hZGQgYSBuIG1hcClcbiAgICAgICAoMSwgTW9kcy5JbnRNYXAuZW1wdHkpIGwpXG5cbmxldCBzdWJtYXAgc3VicyBsIG0gZGVmYXVsdCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBtJyBhIC0+XG4gICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBhIHN1YnMgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBTb21lIG5ld19hIC0+XG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCBuZXdfYVxuICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBhIG0gd2l0aFxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIChtYXRjaCBkZWZhdWx0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICAgIHwgU29tZSBhIC0+IGEpKVxuICAgICAgICAgIG0nKVxuICAgIE1vZHMuSW50TWFwLmVtcHR5IGxcblxubGV0IGFkZF9pbml0X3BpZCBlaWQgcGlkIGdyaWQgPVxuICBsZXQgZWlkX2luaXQgPSBIYXNodGJsLmZpbmQgZ3JpZC5waWRfdG9faW5pdCBwaWQgaW5cbiAgbGV0IG9sZCA9XG4gICAgdHJ5IEhhc2h0YmwuZmluZCBncmlkLmluaXRfdGJsIGVpZCB3aXRoIE5vdF9mb3VuZCAtPiBNb2RzLkludFNldC5lbXB0eVxuICBpblxuICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgZ3JpZC5pbml0X3RibCBlaWQgKE1vZHMuSW50U2V0LmFkZCBlaWRfaW5pdCBvbGQpIGluXG4gIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBncmlkLmluaXRfdG9fZWlkbWF4IGVpZF9pbml0IGVpZCBpblxuICBncmlkXG5cbmxldCBfc3Vic2V0IHN1YnMgbCBzID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIHMnIGEgLT5cbiAgICAgIGlmIE1vZHMuSW50U2V0Lm1lbSBhIHMgdGhlblxuICAgICAgICBNb2RzLkludFNldC5hZGRcbiAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gYSBzdWJzIHdpdGhcbiAgICAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgICAgfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICBzJ1xuICAgICAgZWxzZVxuICAgICAgICBzJylcbiAgICBNb2RzLkludFNldC5lbXB0eSBsXG5cbmxldCBzdWJjb25maWdfd2l0aF9zdWJzIHN1YnMgY29uZmlnIGwgPVxuICB7XG4gICAgZXZlbnRzX2tpbmQgPSBzdWJtYXAgc3VicyBsIGNvbmZpZy5ldmVudHNfa2luZCBOb25lO1xuICAgIHByZWNfMSA9IHN1Ym1hcCBzdWJzIGwgY29uZmlnLnByZWNfMSAoU29tZSBNb2RzLkludFNldC5lbXB0eSk7XG4gICAgY29uZmxpY3QgPSBzdWJtYXAgc3VicyBsIGNvbmZpZy5jb25mbGljdCAoU29tZSBNb2RzLkludFNldC5lbXB0eSk7XG4gIH1cblxubGV0IHN1YmVucmljaGVkX2dyaWRfd2l0aF9zdWJzIHN1YnMgZ3JpZCBsID1cbiAgbGV0IGRlcHRoX29mX2V2ZW50ID0gc3VibWFwIHN1YnMgbCBncmlkLmRlcHRoX29mX2V2ZW50IChTb21lIDApIGluXG4gIGxldCBkZXB0aCA9IE1vZHMuSW50TWFwLmZvbGQgKGZ1biBfIC0+IG1heCkgZGVwdGhfb2ZfZXZlbnQgMCBpblxuICB7XG4gICAgcHJlY19zdGFyID0gZ3JpZC5wcmVjX3N0YXI7XG4gICAgY29uZmlnID0gc3ViY29uZmlnX3dpdGhfc3VicyBzdWJzIGdyaWQuY29uZmlnIGw7XG4gICAgZGVwdGhfb2ZfZXZlbnQ7XG4gICAgZGVwdGg7XG4gICAgc2l6ZSA9IExpc3QubGVuZ3RoIGw7XG4gIH1cblxubGV0IF9zdWJjb25maWcgY29uZmlnIGwgPSBzdWJjb25maWdfd2l0aF9zdWJzIChidWlsZF9zdWJzIGwpIGNvbmZpZyBsXG5sZXQgX3N1YmVucmljaGVkX2dyaWQgZ3JpZCBsID0gc3ViZW5yaWNoZWRfZ3JpZF93aXRoX3N1YnMgKGJ1aWxkX3N1YnMgbCkgZ3JpZCBsXG5sZXQgYWRkX29ic19laWQgZWlkIGdyaWQgPSB7IGdyaWQgd2l0aCBvYnMgPSBlaWQgOjogZ3JpZC5vYnMgfVxuXG5sZXQgZ3JpZF9maW5kIChub2RlX2lkLCBzaXRlX2lkLCBxdWFyaykgZ3JpZCA9XG4gIEhhc2h0YmwuZmluZCBncmlkLmZsb3cgKG5vZGVfaWQsIHNpdGVfaWQsIHF1YXJrKVxuXG5sZXQgX2lzX2VtcHR5X2dyaWQgZ3JpZCA9IEhhc2h0YmwubGVuZ3RoIGdyaWQuZmxvdyA9IDBcblxubGV0IGdyaWRfYWRkIHF1YXJrIGVpZCAoYXR0cmlidXRlIDogYXR0cmlidXRlKSBncmlkID1cbiAgbGV0ICgpID1cbiAgICBpZiBub3QgKEhhc2h0YmwubWVtIGdyaWQuZmxvdyBxdWFyaykgdGhlblxuICAgICAgSGFzaHRibC5hZGQgZ3JpZC5waWRfdG9faW5pdCBxdWFyayBlaWRcbiAgaW5cbiAgSGFzaHRibC5yZXBsYWNlIGdyaWQuZmxvdyBxdWFyayBhdHRyaWJ1dGU7XG4gIGdyaWRcblxubGV0IF9sYXN0X2V2ZW50IGF0dHJpYnV0ZSA9XG4gIG1hdGNoIGF0dHJpYnV0ZSB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGEgOjogXyAtPiBTb21lIGEuZWlkXG5cbigqYWRkcyBhdG9tIGEgdG8gYXR0cmlidXRlIGF0dC5cbiAgQ29sbGFwc2VzIGxhc3QgYXRvbSBpZiBpZiBiZWFycyB0aGUgc2FtZSBpZCBhcyBhIC0taW4gdGhlIGNhc2Ugb2YgYSBub24gYXRvbWljIGFjdGlvbiopXG5sZXQgcHVzaCAoYSA6IGF0b20pIChhdHQgOiBhdG9tIGxpc3QpID1cbiAgbWF0Y2ggYXR0IHdpdGhcbiAgfCBbXSAtPiBbIGEgXVxuICB8IGEnIDo6IGF0dCcgLT5cbiAgICBpZiBhJy5laWQgPSBhLmVpZCB0aGVuIChcbiAgICAgIGxldCAoKSA9IGFzc2VydCAoYScua2luZCA9IGEua2luZCkgaW5cbiAgICAgIHsgYScgd2l0aCBjYXVzYWxfaW1wYWN0ID0gYS5jYXVzYWxfaW1wYWN0IGxvciBhJy5jYXVzYWxfaW1wYWN0IH0gOjogYXR0J1xuICAgICkgZWxzZVxuICAgICAgYSA6OiBhdHRcblxuKCoqc2lkZV9lZmZlY3QgSW50MlNldC50OiBwYWlycyAoYWdlbnRzLHBvcnRzKSB0aGF0IGhhdmUgYmVlbiBmcmVlZCBhcyBhIHNpZGUgZWZmZWN0IC0tdmlhIGEgREVMIG9yIGEgRlJFRSBhY3Rpb24qKVxuKCpOQiBubyBpbnRlcm5hbCBzdGF0ZSBtb2RpZiBhcyBzaWRlIGVmZmVjdCopXG5cbigqbGV0IGltcGFjdCBpc19saW5rIGMgPVxuICBpZiBpc19saW5rIHRoZW5cbiAgICBpZiBQcmltaXRpdmVzLkNhdXNhbGl0eS5pc19saW5rX21vZGlmIGMgdGhlblxuICAgICAgaWYgUHJpbWl0aXZlcy5DYXVzYWxpdHkuaXNfbGlua190ZXN0ZWQgYyB0aGVuIGF0b21fdGVzdGVkbW9kaWZpZWQgZWxzZSBhdG9tX21vZGlmaWVkXG4gICAgZWxzZSBhdG9tX3Rlc3RlZFxuICBlbHNlICgqaW50ZXJuYWwgc3RhdGUqKVxuICAgIGlmIFByaW1pdGl2ZXMuQ2F1c2FsaXR5LmlzX2ludGVybmFsX21vZGlmIGMgdGhlblxuICAgICAgaWYgUHJpbWl0aXZlcy5DYXVzYWxpdHkuaXNfaW50ZXJuYWxfdGVzdGVkIGMgdGhlbiBhdG9tX3Rlc3RlZG1vZGlmaWVkIGVsc2UgYXRvbV9tb2RpZmllZFxuICAgIGVsc2UgYXRvbV90ZXN0ZWRcbiopXG5sZXQgYWRkICgobm9kZV9pZCwgXyksIHNpdGVfaWQpIGlzX2xpbmsgdmEgZ3JpZCBldmVudF9udW1iZXIga2luZCA9XG4gIGxldCBxID1cbiAgICBpZiBpc19saW5rIHRoZW5cbiAgICAgIGF0b21fdGVzdGVkXG4gICAgZWxzZVxuICAgICAgMFxuICBpblxuICBsZXQgYXR0ID0gdHJ5IGdyaWRfZmluZCAobm9kZV9pZCwgc2l0ZV9pZCwgcSkgZ3JpZCB3aXRoIE5vdF9mb3VuZCAtPiBbXSBpblxuICBsZXQgYXR0ID1cbiAgICBwdXNoXG4gICAgICB7IGNhdXNhbF9pbXBhY3QgPSB2YTsgZWlkID0gZXZlbnRfbnVtYmVyOyBraW5kICgqOyBvYnNlcnZhdGlvbiA9IG9icyopIH1cbiAgICAgIGF0dFxuICBpblxuICBsZXQgZ3JpZCA9IGdyaWRfYWRkIChub2RlX2lkLCBzaXRlX2lkLCBxKSBldmVudF9udW1iZXIgYXR0IGdyaWQgaW5cbiAgYWRkX2luaXRfcGlkIGV2ZW50X251bWJlciAobm9kZV9pZCwgc2l0ZV9pZCwgcSkgZ3JpZFxuXG5sZXQgYWRkX2FjdGlvbnMgZW52IGdyaWQgZXZlbnRfbnVtYmVyIGtpbmQgYWN0aW9ucyA9XG4gIGxldCByZWMgYXV4IGdyaWQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gZ3JpZFxuICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIF8pIDo6IHEgLT5cbiAgICAgIGF1eCAoYWRkIHNpdGUgZmFsc2UgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciBraW5kKSBxXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHNpdGUxLCBzaXRlMikgOjogcSAtPlxuICAgICAgbGV0IGdyaWQnID0gYWRkIHNpdGUyIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciBraW5kIGluXG4gICAgICBhdXggKGFkZCBzaXRlMSB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCcgZXZlbnRfbnVtYmVyIGtpbmQpIHFcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoc2l0ZTEsIF8pIDo6IHEgLT5cbiAgICAgIGF1eCAoYWRkIHNpdGUxIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciBraW5kKSBxXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgc2l0ZSA6OiBxIC0+XG4gICAgICBhdXggKGFkZCBzaXRlIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciBraW5kKSBxXG4gICAgfCAoIEluc3RhbnRpYXRpb24uQ3JlYXRlICgoKF8sIG5hKSBhcyBhZyksIF8pXG4gICAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlICgoXywgbmEpIGFzIGFnKSApXG4gICAgICA6OiBxIC0+XG4gICAgICBsZXQgc2lncyA9IE1vZGVsLnNpZ25hdHVyZXMgZW52IGluXG4gICAgICBsZXQgYWdfaW50ZiA9IFNpZ25hdHVyZS5nZXQgc2lncyBuYSBpblxuICAgICAgbGV0IGdyaWQgPSBhZGQgKGFnLCAtMSkgdHJ1ZSBhdG9tX21vZGlmaWVkIGdyaWQgZXZlbnRfbnVtYmVyIGtpbmQgaW5cbiAgICAgIGxldCBncmlkID1cbiAgICAgICAgU2lnbmF0dXJlLmZvbGRcbiAgICAgICAgICAoZnVuIHNpdGUgXyBncmlkIC0+XG4gICAgICAgICAgICBsZXQgZ3JpZCcgPVxuICAgICAgICAgICAgICBtYXRjaCBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSBuYSBzaXRlIHNpZ3Mgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZ3JpZFxuICAgICAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAgIGFkZCAoYWcsIHNpdGUpIGZhbHNlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIga2luZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFkZCAoYWcsIHNpdGUpIHRydWUgYXRvbV9tb2RpZmllZCBncmlkJyBldmVudF9udW1iZXIga2luZClcbiAgICAgICAgICBncmlkIGFnX2ludGZcbiAgICAgIGluXG4gICAgICBhdXggZ3JpZCBxXG4gIGluXG4gIGF1eCBncmlkIGFjdGlvbnNcblxubGV0IGFkZF90ZXN0cyBncmlkIGV2ZW50X251bWJlciBraW5kIHRlc3RzID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBncmlkIC0+IGZ1bmN0aW9uXG4gICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYWcgLT5cbiAgICAgICAgIGFkZCAoYWcsIC0xKSB0cnVlIGF0b21fdGVzdGVkIGdyaWQgZXZlbnRfbnVtYmVyIGtpbmRcbiAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChzaXRlLCBfKSAtPlxuICAgICAgICAgYWRkIHNpdGUgZmFsc2UgYXRvbV90ZXN0ZWQgZ3JpZCBldmVudF9udW1iZXIga2luZFxuICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIHNpdGVcbiAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgc2l0ZVxuICAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzaXRlLCBfKSAtPlxuICAgICAgICAgYWRkIHNpdGUgdHJ1ZSBhdG9tX3Rlc3RlZCBncmlkIGV2ZW50X251bWJlciBraW5kXG4gICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICBsZXQgZ3JpZCcgPSBhZGQgc2l0ZTIgdHJ1ZSBhdG9tX3Rlc3RlZCBncmlkIGV2ZW50X251bWJlciBraW5kIGluXG4gICAgICAgICBhZGQgc2l0ZTEgdHJ1ZSBhdG9tX3Rlc3RlZCBncmlkJyBldmVudF9udW1iZXIga2luZCkpXG4gICAgZ3JpZCB0ZXN0c1xuXG5sZXQgcmVjb3JkIChraW5kLCBldmVudCwgXykgZXZlbnRfbnVtYmVyIGVudiBncmlkID1cbiAgbGV0IGdyaWQgPVxuICAgIGFkZF90ZXN0cyBncmlkIGV2ZW50X251bWJlciAoRVZFTlQga2luZCkgZXZlbnQuSW5zdGFudGlhdGlvbi50ZXN0c1xuICBpblxuICBsZXQgZ3JpZCA9XG4gICAgYWRkX3Rlc3RzIGdyaWQgZXZlbnRfbnVtYmVyIChFVkVOVCBraW5kKVxuICAgICAgWyBldmVudC5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyBdXG4gIGluXG4gIGxldCBncmlkID1cbiAgICBhZGRfYWN0aW9ucyBlbnYgZ3JpZCBldmVudF9udW1iZXIgKEVWRU5UIGtpbmQpIGV2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICBpblxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gZ3JpZCBzaXRlIC0+XG4gICAgICBhZGRcbiAgICAgICAgKGZzdCBzaXRlLCAtMSlcbiAgICAgICAgdHJ1ZSBhdG9tX3Rlc3RlZFxuICAgICAgICAoYWRkIHNpdGUgdHJ1ZSBhdG9tX21vZGlmaWVkIGdyaWQgZXZlbnRfbnVtYmVyIChFVkVOVCBraW5kKSlcbiAgICAgICAgZXZlbnRfbnVtYmVyIChFVkVOVCBraW5kKSlcbiAgICBncmlkIGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdFxuXG5sZXQgcmVjb3JkX29icyAoa2luZCwgdGVzdHMsIF8pIHNpZGVfZWZmZWN0cyBldmVudF9udW1iZXIgZ3JpZCA9XG4gIGxldCBncmlkID0gYWRkX29ic19laWQgZXZlbnRfbnVtYmVyIGdyaWQgaW5cbiAgbGV0IGdyaWQgPSBhZGRfdGVzdHMgZ3JpZCBldmVudF9udW1iZXIgKE9CUyBraW5kKSB0ZXN0cyBpblxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gZ3JpZCBzaXRlIC0+IGFkZCBzaXRlIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciAoT0JTIGtpbmQpKVxuICAgIGdyaWQgc2lkZV9lZmZlY3RzXG5cbmxldCByZWNvcmRfaW5pdCAobGJsLCBhY3Rpb25zKSBldmVudF9udW1iZXIgZW52IGdyaWQgPVxuICBhZGRfYWN0aW9ucyBlbnYgZ3JpZCBldmVudF9udW1iZXIgKEVWRU5UIChUcmFjZS5JTklUIGxibCkpIGFjdGlvbnNcblxubGV0IGFkZF9wcmVkIGVpZCBhdG9tIGNvbmZpZyA9XG4gIGxldCBldmVudHNfa2luZCA9IE1vZHMuSW50TWFwLmFkZCBhdG9tLmVpZCBhdG9tLmtpbmQgY29uZmlnLmV2ZW50c19raW5kIGluXG4gIGxldCBwcmVkX3NldCA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBlaWQgY29uZmlnLnByZWNfMSBpblxuICBsZXQgcHJlY18xID1cbiAgICBNb2RzLkludE1hcC5hZGQgZWlkIChNb2RzLkludFNldC5hZGQgYXRvbS5laWQgcHJlZF9zZXQpIGNvbmZpZy5wcmVjXzFcbiAgaW5cbiAgeyBjb25maWcgd2l0aCBwcmVjXzE7IGV2ZW50c19raW5kIH1cblxubGV0IGFkZF9jb25mbGljdCBlaWQgYXRvbSBjb25maWcgPVxuICBsZXQgZXZlbnRzX2tpbmQgPSBNb2RzLkludE1hcC5hZGQgYXRvbS5laWQgYXRvbS5raW5kIGNvbmZpZy5ldmVudHNfa2luZCBpblxuICBsZXQgY2ZsY3Rfc2V0ID1cbiAgICBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgZWlkIGNvbmZpZy5jb25mbGljdFxuICBpblxuICBsZXQgY2ZsY3QgPVxuICAgIE1vZHMuSW50TWFwLmFkZCBlaWQgKE1vZHMuSW50U2V0LmFkZCBhdG9tLmVpZCBjZmxjdF9zZXQpIGNvbmZpZy5jb25mbGljdFxuICBpblxuICB7IGNvbmZpZyB3aXRoIGNvbmZsaWN0ID0gY2ZsY3Q7IGV2ZW50c19raW5kIH1cblxubGV0IHJlYyBwYXJzZV9hdHRyaWJ1dGUgbGFzdF9tb2RpZiBsYXN0X3Rlc3RlZCBhdHRyaWJ1dGUgY29uZmlnID1cbiAgbWF0Y2ggYXR0cmlidXRlIHdpdGhcbiAgfCBbXSAtPiBjb25maWdcbiAgfCBhdG9tIDo6IGF0dCAtPlxuICAgIGxldCBldmVudHNfa2luZCA9IE1vZHMuSW50TWFwLmFkZCBhdG9tLmVpZCBhdG9tLmtpbmQgY29uZmlnLmV2ZW50c19raW5kIGluXG4gICAgbGV0IHByZWNfMSA9XG4gICAgICBsZXQgcHJlZHMgPVxuICAgICAgICBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgYXRvbS5laWQgY29uZmlnLnByZWNfMVxuICAgICAgaW5cbiAgICAgIE1vZHMuSW50TWFwLmFkZCBhdG9tLmVpZCBwcmVkcyBjb25maWcucHJlY18xXG4gICAgaW5cbiAgICBsZXQgY29uZmlnID0geyBjb25maWcgd2l0aCBldmVudHNfa2luZDsgcHJlY18xIH0gaW5cbiAgICAoKmF0b20gaGFzIGEgbW9kaWZpY2F0aW9uKilcbiAgICBpZlxuICAgICAgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV9tb2RpZmllZFxuICAgICAgfHwgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV90ZXN0ZWRtb2RpZmllZFxuICAgIHRoZW4gKFxuICAgICAgbGV0IGNvbmZpZyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBjb25maWcgcHJlZF9pZCAtPiBhZGRfcHJlZCBwcmVkX2lkIGF0b20gY29uZmlnKVxuICAgICAgICAgIGNvbmZpZyBsYXN0X3Rlc3RlZFxuICAgICAgaW5cbiAgICAgIGxldCB0ZXN0ZWQgPVxuICAgICAgICBpZlxuICAgICAgICAgIGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fdGVzdGVkXG4gICAgICAgICAgfHwgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV90ZXN0ZWQgbG9yIGF0b21fbW9kaWZpZWRcbiAgICAgICAgdGhlblxuICAgICAgICAgIFsgYXRvbS5laWQgXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgW11cbiAgICAgIGluXG4gICAgICBwYXJzZV9hdHRyaWJ1dGUgKFNvbWUgYXRvbS5laWQpIHRlc3RlZCBhdHQgY29uZmlnXG4gICAgKSBlbHNlIChcbiAgICAgICgqIGF0b20gaXMgYSBwdXJlIHRlc3QqKVxuICAgICAgbGV0IGNvbmZpZyA9XG4gICAgICAgIG1hdGNoIGxhc3RfbW9kaWYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gY29uZmlnXG4gICAgICAgIHwgU29tZSBlaWQgLT5cbiAgICAgICAgICBhZGRfY29uZmxpY3QgZWlkIGF0b21cbiAgICAgICAgICAgIGNvbmZpZyAoKmFkZGluZyBjb25mbGljdCB3aXRoIGxhc3QgbW9kaWZpY2F0aW9uKilcbiAgICAgIGluXG4gICAgICBwYXJzZV9hdHRyaWJ1dGUgbGFzdF9tb2RpZiAoYXRvbS5laWQgOjogbGFzdF90ZXN0ZWQpIGF0dCBjb25maWdcbiAgICApXG5cbmxldCBjdXQgPyh3aXRoX3JlZHVjdGlvbiA9IHRydWUpIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGF0dHJpYnV0ZV9pZHNcbiAgICBncmlkID1cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnQgcGFyYW1ldGVyIGVycm9yXG4gICAgICBTdG9yeVByb2ZpbGluZy5CdWlsZF9jb25maWd1cmF0aW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgbGV0IHJlYyBidWlsZF9jb25maWcgYXR0cmlidXRlX2lkcyBjZmcgPVxuICAgIG1hdGNoIGF0dHJpYnV0ZV9pZHMgd2l0aFxuICAgIHwgW10gLT4gY2ZnXG4gICAgfCAobm9kZV9pLCBzaXRlX2ksIHR5cGVfaSkgOjogdGwgLT5cbiAgICAgIGxldCBhdHRyaWJ1dGUgPVxuICAgICAgICB0cnkgZ3JpZF9maW5kIChub2RlX2ksIHNpdGVfaSwgdHlwZV9pKSBncmlkXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGludmFsaWRfYXJnIFwiQ2F1c2FsLmN1dFwiXG4gICAgICBpblxuICAgICAgbGV0IGNmZyA9XG4gICAgICAgIG1hdGNoIGF0dHJpYnV0ZSB3aXRoXG4gICAgICAgIHwgW10gLT4gY2ZnXG4gICAgICAgIHwgYXRvbSA6OiBhdHQgLT5cbiAgICAgICAgICBsZXQgZXZlbnRzX2tpbmQgPVxuICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGF0b20uZWlkIGF0b20ua2luZCBjZmcuZXZlbnRzX2tpbmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwcmVjXzEgPVxuICAgICAgICAgICAgbGV0IHByZWRzID1cbiAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGF0b20uZWlkIGNmZy5wcmVjXzFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgYXRvbS5laWQgcHJlZHMgY2ZnLnByZWNfMVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRlc3RlZCA9XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBhdG9tLmNhdXNhbF9pbXBhY3QgPSBhdG9tX3Rlc3RlZFxuICAgICAgICAgICAgICB8fCBhdG9tLmNhdXNhbF9pbXBhY3QgPSBhdG9tX3Rlc3RlZG1vZGlmaWVkXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIFsgYXRvbS5laWQgXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBbXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG1vZGlmID1cbiAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fbW9kaWZpZWRcbiAgICAgICAgICAgICAgfHwgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV90ZXN0ZWRtb2RpZmllZFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBTb21lIGF0b20uZWlkXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICBpblxuICAgICAgICAgIHBhcnNlX2F0dHJpYnV0ZSBtb2RpZiB0ZXN0ZWQgYXR0IHsgY2ZnIHdpdGggcHJlY18xOyBldmVudHNfa2luZCB9XG4gICAgICBpblxuICAgICAgYnVpbGRfY29uZmlnIHRsIGNmZ1xuICBpblxuICBsZXQgY2ZnID0gYnVpbGRfY29uZmlnIGF0dHJpYnV0ZV9pZHMgZW1wdHlfY29uZmlnIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnQgcGFyYW1ldGVyIGVycm9yXG4gICAgICBTdG9yeVByb2ZpbGluZy5CdWlsZF9jb25maWd1cmF0aW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgcmVkdWN0aW9uID1cbiAgICBpZiB3aXRoX3JlZHVjdGlvbiB0aGVuXG4gICAgICBHcmFwaF9jbG9zdXJlLnJlZHVjdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjZmcucHJlY18xXG4gICAgZWxzZVxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBjZmcucHJlY18xXG4gIGluXG4gIGVycm9yLCBsb2dfaW5mbywgeyBjZmcgd2l0aCBwcmVjXzEgPSByZWR1Y3Rpb24gfVxuXG5sZXQgcHBfYXRvbSBmIGF0b20gPVxuICBsZXQgaW1wX3N0ciA9XG4gICAgbWF0Y2ggYXRvbS5jYXVzYWxfaW1wYWN0IHdpdGhcbiAgICB8IDEgLT4gXCJvXCJcbiAgICB8IDIgLT4gXCJ4XCJcbiAgICB8IDMgLT4gXCIlXCJcbiAgICB8IF8gLT4gaW52YWxpZF9hcmcgXCJDYXVzYWwuc3RyaW5nX29mX2F0b21cIlxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiJXNfJWRcIiBpbXBfc3RyIGF0b20uZWlkXG5cbmxldCBfZHVtcCBncmlkIGZpYyA9XG4gIGxldCBkX2NoYW4gPSBLYXBwYV9maWxlcy5vcGVuX291dCAoRmlsZW5hbWUuY2hvcF9leHRlbnNpb24gZmljIF4gXCIudHh0XCIpIGluXG4gIGxldCBkID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBkX2NoYW4gaW5cbiAgbGV0ICgpID0gRm9ybWF0LnBwX29wZW5fdmJveCBkIDAgaW5cbiAgSGFzaHRibC5mb2xkXG4gICAgKGZ1biAobl9pZCwgc19pZCwgcSkgYXR0IF8gLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGQgXCIjJWkuJWklYzolYUAsXCIgbl9pZCBzX2lkXG4gICAgICAgIChpZiBxID0gMCB0aGVuXG4gICAgICAgICAgICd+J1xuICAgICAgICAgZWxzZVxuICAgICAgICAgICAnIScpXG4gICAgICAgIChQcC5saXN0IFBwLmVtcHR5IHBwX2F0b20pIGF0dClcbiAgICBncmlkLmZsb3cgKCk7XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGQgXCJAXUAuXCIgaW5cbiAgY2xvc2Vfb3V0IGRfY2hhblxuXG5sZXQgaWRzX29mX2dyaWQgZ3JpZCA9IEhhc2h0YmwuZm9sZCAoZnVuIGtleSBfIGwgLT4ga2V5IDo6IGwpIGdyaWQuZmxvdyBbXVxubGV0IGNvbmZpZ19vZl9ncmlkID0gY3V0XG5cbigqbGV0IHByZWNfc3Rhcl9vZl9jb25maWdfb2xkICBjb25maWcgPVxuICBsZXQgcmVjIHByZWNfY2xvc3VyZSBjb25maWcgdG9kbyBhbHJlYWR5X2RvbmUgY2xvc3VyZSA9XG4gICAgaWYgTW9kcy5JbnRTZXQuaXNfZW1wdHkgdG9kbyB0aGVuIGNsb3N1cmVcbiAgICBlbHNlXG4gICAgICBsZXQgZWlkID0gTW9kcy5JbnRTZXQuY2hvb3NlIHRvZG8gaW5cbiAgICAgIGxldCB0b2RvJyA9IE1vZHMuSW50U2V0LnJlbW92ZSBlaWQgdG9kbyBpblxuICAgICAgaWYgTW9kcy5JbnRTZXQubWVtIGVpZCBhbHJlYWR5X2RvbmVcbiAgICAgIHRoZW5cbiAgICAgICAgcHJlY19jbG9zdXJlIGNvbmZpZyB0b2RvJyBhbHJlYWR5X2RvbmUgY2xvc3VyZVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgcHJlYyA9IHRyeSBJbnRNYXAuZmluZCBlaWQgY29uZmlnLnByZWNfMSB3aXRoIE5vdF9mb3VuZCAtPiBNb2RzLkludFNldC5lbXB0eVxuICAgICAgICBpblxuICAgICAgcHJlY19jbG9zdXJlIGNvbmZpZyAoSW50U2V0LnVuaW9uIHRvZG8nIHByZWMpIChJbnRTZXQuYWRkIGVpZCBhbHJlYWR5X2RvbmUpIChJbnRTZXQudW5pb24gcHJlYyBjbG9zdXJlKVxuICBpblxuICBJbnRNYXAuZm9sZFxuICAgIChmdW4gZWlkIGtpbmQgcHJlY19zdGFyIC0+XG4gICAgICBsZXQgc2V0ID0gcHJlY19jbG9zdXJlIGNvbmZpZyAoSW50U2V0LnNpbmdsZXRvbiBlaWQpIE1vZHMuSW50U2V0LmVtcHR5IE1vZHMuSW50U2V0LmVtcHR5XG4gICAgICBpblxuICAgICAgSW50TWFwLmFkZCBlaWQgc2V0IHByZWNfc3RhclxuICAgICkgY29uZmlnLmV2ZW50cyBJbnRNYXAuZW1wdHkgKilcblxubGV0IHByZWNfc3Rhcl9vZl9jb25maWcgPSBHcmFwaF9jbG9zdXJlLmNsb3N1cmVcblxubGV0IGRlcHRoX2FuZF9zaXplX29mX2V2ZW50IGNvbmZpZyA9XG4gIE1vZHMuSW50TWFwLmZvbGRcbiAgICAoZnVuIGVpZCBwcmVjX2VpZHMgKGVtYXAsIF8pIC0+XG4gICAgICBsZXQgZCA9XG4gICAgICAgIE1vZHMuSW50U2V0LmZvbGRcbiAgICAgICAgICAoZnVuIGVpZCcgZCAtPlxuICAgICAgICAgICAgbGV0IGQnID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IDAgZWlkJyBlbWFwIGluXG4gICAgICAgICAgICBtYXggKGQnICsgMSkgZClcbiAgICAgICAgICBwcmVjX2VpZHMgMFxuICAgICAgaW5cbiAgICAgIE1vZHMuSW50TWFwLmFkZCBlaWQgZCBlbWFwLCBkKVxuICAgIGNvbmZpZy5wcmVjXzEgKE1vZHMuSW50TWFwLmVtcHR5LCAwKVxuXG5sZXQgZW5yaWNoX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY29uZmlnX2Nsb3N1cmUgZ3JpZCA9XG4gIGxldCBrZWVwX2wgPVxuICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gYSBiIC0+IE1vZHMuSW50U2V0LmFkZCBiIGEpIE1vZHMuSW50U2V0LmVtcHR5IGdyaWQub2JzXG4gIGluXG4gIGxldCB0b19rZWVwIGkgPSBNb2RzLkludFNldC5tZW0gaSBrZWVwX2wgaW5cbiAgbGV0IGlkcyA9IGlkc19vZl9ncmlkIGdyaWQgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgY29uZmlnID1cbiAgICBjb25maWdfb2ZfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpZHMgZ3JpZFxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVjX3N0YXIgPVxuICAgIHByZWNfc3Rhcl9vZl9jb25maWcgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgIChTb21lIFN0b3J5UHJvZmlsaW5nLlRyYW5zaXRpdmVfY2xvc3VyZSkgY29uZmlnX2Nsb3N1cmUgY29uZmlnLnByZWNfMVxuICAgICAgdG9fa2VlcFxuICBpblxuICBsZXQgZGVwdGhfb2ZfZXZlbnQsIGRlcHRoID0gZGVwdGhfYW5kX3NpemVfb2ZfZXZlbnQgY29uZmlnIGluXG4gICggZXJyb3IsXG4gICAgbG9nX2luZm8sXG4gICAge1xuICAgICAgY29uZmlnO1xuICAgICAgcHJlY19zdGFyO1xuICAgICAgZGVwdGg7XG4gICAgICBkZXB0aF9vZl9ldmVudDtcbiAgICAgIHNpemUgPSBNb2RzLkludE1hcC5zaXplIGNvbmZpZy5wcmVjXzE7XG4gICAgfSApXG5cbmxldCBmb2xkX292ZXJfY2F1c2FsX3Bhc3Rfb2Zfb2JzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNvbmZpZ19jbG9zdXJlXG4gICAgZ3JpZCBmIGEgPVxuICBsZXQga2VlcF9sID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGEgYiAtPiBNb2RzLkludFNldC5hZGQgYiBhKSBNb2RzLkludFNldC5lbXB0eSBncmlkLm9ic1xuICBpblxuICBsZXQgdG9fa2VlcCBpID0gTW9kcy5JbnRTZXQubWVtIGkga2VlcF9sIGluXG4gIGxldCBpZHMgPSBpZHNfb2ZfZ3JpZCBncmlkIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50IHBhcmFtZXRlciBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuQnVpbGRfY29uZmlndXJhdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGNvbmZpZyA9XG4gICAgY29uZmlnX29mX2dyaWQgfndpdGhfcmVkdWN0aW9uOmZhbHNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGlkc1xuICAgICAgZ3JpZFxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlciBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuQnVpbGRfY29uZmlndXJhdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIEdyYXBoX2Nsb3N1cmUuY2xvc3VyZV9ib3R0b21fdXBfd2l0aF9mb2xkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgKFNvbWUgU3RvcnlQcm9maWxpbmcuQ29sbGVjdF90cmFjZXMpIGNvbmZpZ19jbG9zdXJlIGNvbmZpZy5wcmVjXzEgdG9fa2VlcCBmXG4gICAgYVxuXG5sZXQgcHJpbnRfZXZlbnRfa2luZF9kb3RfYW5ub3QgZW52IGYgPSBmdW5jdGlvblxuICB8IE9CUyBuYW1lIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIltsYWJlbD1cXFwiJXNcXFwiLCBzdHlsZT1maWxsZWQsIGZpbGxjb2xvcj1yZWRdXCIgbmFtZVxuICB8IEVWRU5UIGUgLT4gVHJhY2UucHJpbnRfZXZlbnRfa2luZF9kb3RfYW5ub3QgZW52IGYgZVxuXG5sZXQgZG90X29mX2dyaWQgcHJvZmlsaW5nIGVudiBlbnJpY2hlZF9ncmlkIGZvcm0gPVxuICBsZXQgdCA9IFN5cy50aW1lICgpIGluXG4gIGxldCBjb25maWcgPSBlbnJpY2hlZF9ncmlkLmNvbmZpZyBpblxuICBsZXQgcHJlY19zdGFyID0gZW5yaWNoZWRfZ3JpZC5wcmVjX3N0YXIgaW5cbiAgbGV0IGRlcHRoX29mX2V2ZW50ID0gZW5yaWNoZWRfZ3JpZC5kZXB0aF9vZl9ldmVudCBpblxuICBsZXQgc29ydGVkX2V2ZW50cyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBlaWQgZCBkbWFwIC0+XG4gICAgICAgIGxldCBzZXQgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgZCBkbWFwIGluXG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCBkIChNb2RzLkludFNldC5hZGQgZWlkIHNldCkgZG1hcClcbiAgICAgIGRlcHRoX29mX2V2ZW50IE1vZHMuSW50TWFwLmVtcHR5XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJAWzx2PiV0QCxkaWdyYXBoIEd7QCwgcmFua3NlcD0uNSA7QCxcIiBwcm9maWxpbmc7XG4gIE1vZHMuSW50TWFwLml0ZXJcbiAgICAoZnVuIGQgZWlkc19hdF9kIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwiQFs8aHY+eyByYW5rID0gc2FtZSA7IFxcXCIlZFxcXCIgW3NoYXBlPXBsYWludGV4dF0gO0AsXCIgZDtcbiAgICAgIE1vZHMuSW50U2V0Lml0ZXJcbiAgICAgICAgKGZ1biBlaWQgLT5cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBlaWQgY29uZmlnLmV2ZW50c19raW5kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBTb21lIGF0b21fa2luZCAtPlxuICAgICAgICAgICAgaWYgZWlkIDw+IDAgdGhlblxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwibm9kZV8lZCAlYSA7QCxcIiBlaWRcbiAgICAgICAgICAgICAgICAocHJpbnRfZXZlbnRfa2luZF9kb3RfYW5ub3QgZW52KVxuICAgICAgICAgICAgICAgIGF0b21fa2luZFxuICAgICAgICAgICgqIExpc3QuaXRlciAoZnVuIG9icyAtPiBmcHJpbnRmIGRlc2MgXCJvYnNfJWQgW2xhYmVsID1cXFwiJXNcXFwiLCBzdHlsZT1maWxsZWQsIGZpbGxjb2xvcj1yZWRdIDtcXG4gbm9kZV8lZCAtPiBvYnNfJWQgW2Fycm93aGVhZD12ZWVdO1xcblwiIGVpZCBvYnMgZWlkIGVpZCkgYXRvbS5vYnNlcnZhdGlvbiA7KikpXG4gICAgICAgIGVpZHNfYXRfZDtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJ9QF1ALFwiKVxuICAgIHNvcnRlZF9ldmVudHM7XG4gIGxldCBjcHQgPSByZWYgMCBpblxuICB3aGlsZSAhY3B0ICsgMSA8IE1vZHMuSW50TWFwLnNpemUgc29ydGVkX2V2ZW50cyBkb1xuICAgIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJcXFwiJWRcXFwiIC0+IFxcXCIlZFxcXCIgW3N0eWxlPVxcXCJpbnZpc1xcXCJdO0AsXCIgIWNwdCAoIWNwdCArIDEpO1xuICAgIGNwdCA6PSAhY3B0ICsgMVxuICBkb25lO1xuICBNb2RzLkludE1hcC5pdGVyXG4gICAgKGZ1biBlaWQgcHJlZF9zZXQgLT5cbiAgICAgIGlmIGVpZCA8PiAwIHRoZW5cbiAgICAgICAgTW9kcy5JbnRTZXQuaXRlclxuICAgICAgICAgIChmdW4gZWlkJyAtPlxuICAgICAgICAgICAgaWYgZWlkJyA9IDAgdGhlblxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwibm9kZV8lZCAtPiBub2RlXyVkQCxcIiBlaWQnIGVpZClcbiAgICAgICAgICBwcmVkX3NldClcbiAgICBjb25maWcucHJlY18xO1xuICBNb2RzLkludE1hcC5pdGVyXG4gICAgKGZ1biBlaWQgY2ZsY3Rfc2V0IC0+XG4gICAgICBpZiBlaWQgPD4gMCB0aGVuIChcbiAgICAgICAgbGV0IHByZWMgPSB0cnkgKGZzdCBwcmVjX3N0YXIpLihlaWQpIHdpdGggXyAtPiBbXSBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgTW9kcy5JbnRTZXQuZm9sZF9pbnZcbiAgICAgICAgICAgIChmdW4gZWlkJyBwcmVjIC0+XG4gICAgICAgICAgICAgIGxldCBib29sLCBwcmVjID1cbiAgICAgICAgICAgICAgICBsZXQgcmVjIGF1eCBwcmVjID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiB0cnVlLCBwcmVjXG4gICAgICAgICAgICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgICAgICAgICAgICBpZiBoID0gZWlkJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIHRcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBoID4gZWlkJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgYXV4IHRcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHRydWUsIHByZWNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGF1eCBwcmVjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtXG4gICAgICAgICAgICAgICAgICAgIFwibm9kZV8lZCAtPiBub2RlXyVkIFtzdHlsZT1kb3R0ZWQsIGFycm93aGVhZCA9IHRlZV1AIFwiIGVpZFxuICAgICAgICAgICAgICAgICAgICBlaWQnXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHByZWMpXG4gICAgICAgICAgICBjZmxjdF9zZXQgcHJlY1xuICAgICAgICBpblxuICAgICAgICAoKVxuICAgICAgKSlcbiAgICBjb25maWcuY29uZmxpY3Q7XG4gIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJ9QCxcIjtcbiAgRm9ybWF0LmZwcmludGYgZm9ybSBcIi8qQCwgRG90IGdlbmVyYXRpb24gdGltZTogJWZALCovQF1ALlwiIChTeXMudGltZSAoKSAtLiB0KVxuXG5sZXQganNfb2ZfZ3JpZCBlbnYgZW5yaWNoZWRfZ3JpZCBmID1cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi8vIENyZWF0ZSBhIG5ldyBkaXJlY3RlZCBncmFwaEAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwidmFyIGcgPSBuZXcgZGFncmVEMy5ncmFwaGxpYi5HcmFwaCgpLnNldEdyYXBoKHt9KTtALFwiXG4gIGluXG5cbiAgbGV0ICgpID1cbiAgICBQcC5zZXQgfnRyYWlsaW5nOlBwLnNwYWNlIE1vZHMuSW50TWFwLmJpbmRpbmdzIFBwLnNwYWNlXG4gICAgICAoZnVuIGYgKGVpZCwgYXRvbV9raW5kKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCJnLnNldE5vZGUoJWksIHsgbGFiZWw6IFxcXCIlYVxcXCIsIHN0eWxlOiBcXFwiZmlsbDogJXNcXFwiIH0pO1wiIGVpZFxuICAgICAgICAgIChwcmludF9ldmVudF9raW5kIH5lbnYpIGF0b21fa2luZFxuICAgICAgICAgIChtYXRjaCBhdG9tX2tpbmQgd2l0aFxuICAgICAgICAgIHwgT0JTIF8gLT4gXCIjZjc3XCJcbiAgICAgICAgICB8IEVWRU5UIChUcmFjZS5JTklUIF8gfCBUcmFjZS5QRVJUIF8pIC0+IFwiIzdmN1wiXG4gICAgICAgICAgfCBFVkVOVCAoVHJhY2UuUlVMRSBfKSAtPiBcIiM3N2ZcIikpXG4gICAgICBmIGVucmljaGVkX2dyaWQuY29uZmlnLmV2ZW50c19raW5kXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAuc2V0IE1vZHMuSW50TWFwLmJpbmRpbmdzIFBwLmVtcHR5XG4gICAgICAoZnVuIGYgKGVpZCwgc2V0KSAtPlxuICAgICAgICBQcC5zZXQgTW9kcy5JbnRTZXQuZWxlbWVudHMgfnRyYWlsaW5nOlBwLnNwYWNlIFBwLnNwYWNlXG4gICAgICAgICAgKGZ1biBmIGVpZCcgLT4gRm9ybWF0LmZwcmludGYgZiBcImcuc2V0RWRnZSglaSwlaSx7fSk7XCIgZWlkJyBlaWQpXG4gICAgICAgICAgZiBzZXQpXG4gICAgICBmIGVucmljaGVkX2dyaWQuY29uZmlnLnByZWNfMVxuICBpblxuXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInZhciBzdmcgPSBkMy5zZWxlY3QoXFxcInN2Z1xcXCIpLGlubmVyID0gc3ZnLnNlbGVjdChcXFwiZ1xcXCIpO0AsXCJcbiAgaW5cblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiLy8gU2V0IHVwIHpvb20gc3VwcG9ydEAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwidmFyIHpvb20gPSBkMy5iZWhhdmlvci56b29tKCkub24oXFxcInpvb21cXFwiLCBmdW5jdGlvbigpIHtALFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCJpbm5lci5hdHRyKFxcXCJ0cmFuc2Zvcm1cXFwiLCBcXFwidHJhbnNsYXRlKFxcXCIgKyBkMy5ldmVudC50cmFuc2xhdGUgKyBcXFwiKVxcXCIgK0AsXCJcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIlxcXCJzY2FsZShcXFwiICsgZDMuZXZlbnQuc2NhbGUgKyBcXFwiKVxcXCIpO0AsfSk7QCxzdmcuY2FsbCh6b29tKTtcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiLy8gQ3JlYXRlIHRoZSByZW5kZXJlckAsIHZhciByZW5kZXIgPSBuZXcgZGFncmVEMy5yZW5kZXIoKTtALFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCIvLyBSdW4gdGhlIHJlbmRlcmVyLiBUaGlzIGlzIHdoYXQgZHJhd3MgdGhlIGZpbmFsIGdyYXBoLkAsXCJcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInJlbmRlcihpbm5lciwgZyk7QCxcIiBpblxuXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBDZW50ZXIgdGhlIGdyYXBoQCx2YXIgaW5pdGlhbFNjYWxlID0gMC43NTtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ6b29tQCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiLnRyYW5zbGF0ZShbKHN2Zy5hdHRyKFxcXCJ3aWR0aFxcXCIpIC0gZy5ncmFwaCgpLndpZHRoICogaW5pdGlhbFNjYWxlKSAvIDIsIFxcXG4gICAgICAgMjBdKUAsXCJcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi5zY2FsZShpbml0aWFsU2NhbGUpQCwuZXZlbnQoc3ZnKTtALFwiIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJzdmcuYXR0cignaGVpZ2h0JywgZy5ncmFwaCgpLmhlaWdodCAqIGluaXRpYWxTY2FsZSArIDQwKTtcIlxuXG5sZXQgaHRtbF9vZl9ncmlkIHByb2ZpbGluZyBjb21wcmVzc2lvbl90eXBlIGNwdCBlbnYgZW5yaWNoZWRfZ3JpZCA9XG4gIGxldCB0aXRsZSBmID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXMgY29tcHJlc3NlZCBzdG9yeSBudW1iZXIgJWlcIiBjb21wcmVzc2lvbl90eXBlIGNwdFxuICBpblxuICBQcF9odG1sLmdyYXBoX3BhZ2UgdGl0bGVcbiAgICBbXG4gICAgICBcImh0dHA6Ly9kM2pzLm9yZy9kMy52My5taW4uanNcIjtcbiAgICAgIFwiaHR0cDovL2NwZXR0aXR0LmdpdGh1Yi5pby9wcm9qZWN0L2RhZ3JlLWQzL2xhdGVzdC9kYWdyZS1kMy5taW4uanNcIjtcbiAgICBdXG4gICAgKGZ1biBmIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxzdHlsZT5ALFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiZHQge2Zsb2F0OiBsZWZ0OyBjbGVhcjogbGVmdDsgd2lkdGg6IDIwZW07fUAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiZGQge2ZvbnQtd2VpZ2h0OiBib2xkOyBtYXJnaW46IDAgMCAwIDIxZW07fUAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiLm5vZGUgcmVjdCB7c3Ryb2tlOiAjMzMzOyBmaWxsOiAjZmZmO31ALFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCIuZWRnZVBhdGggcGF0aCB7c3Ryb2tlOiAjMzMzOyBmaWxsOiAjMzMzOyBzdHJva2Utd2lkdGg6IDEuNXB4O31cIlxuICAgICAgaW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAXUAsPC9zdHlsZT5cIilcbiAgICAoZnVuIGYgLT5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8c3ZnIHdpZHRoPVxcXCI5NjBcXFwiPjxnPjwvZz48L3N2Zz5ALFwiIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHA+QFsldEBdPC9wPkAsXCIgcHJvZmlsaW5nIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxzY3JpcHQ+QCwldEBdQCw8L3NjcmlwdD5cIlxuICAgICAgICAoanNfb2ZfZ3JpZCBlbnYgZW5yaWNoZWRfZ3JpZCkpXG5cbmxldCBjaGVja19jcmVhdGVfcXVhcmtzIGFpZCBzaXRlcyBxdWFya3MgPVxuICBMaXN0LmZvcl9hbGxcbiAgICAoZnVuIChzaXRlLCBpbnRlcm5hbCkgLT5cbiAgICAgIG1hdGNoIGludGVybmFsIHdpdGhcbiAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgIExpc3QubWVtIChhdG9tX21vZGlmaWVkLCAoYWlkLCBzaXRlLCAwKSkgcXVhcmtzXG4gICAgICAgICYmIExpc3QubWVtIChhdG9tX21vZGlmaWVkLCAoYWlkLCBzaXRlLCAxKSkgcXVhcmtzXG4gICAgICB8IE5vbmUgLT4gTGlzdC5tZW0gKGF0b21fbW9kaWZpZWQsIChhaWQsIHNpdGUsIDEpKSBxdWFya3MpXG4gICAgc2l0ZXNcblxubGV0IGNoZWNrX21vZGlmaWVkX3F1YXJrcyAoKGFpZCwgXyksIHNpdGUpIG1vZGlmIHF1YXJrcyA9XG4gIExpc3QuZXhpc3RzXG4gICAgKGZ1biAoYywgKG4sIHMsIG0pKSAtPlxuICAgICAgKGMgPSBhdG9tX21vZGlmaWVkIHx8IGMgPSBhdG9tX3Rlc3RlZG1vZGlmaWVkKVxuICAgICAgJiYgbiA9IGFpZCAmJiBzID0gc2l0ZSAmJiBtID0gbW9kaWYpXG4gICAgcXVhcmtzXG5cbmxldCBjaGVja190ZXN0ZWRfcXVhcmtzICgoYWlkLCBfKSwgc2l0ZSkgbW9kaWYgcXVhcmtzID1cbiAgTGlzdC5leGlzdHNcbiAgICAoZnVuIChjLCAobiwgcywgbSkpIC0+XG4gICAgICAoYyA9IGF0b21fdGVzdGVkIHx8IGMgPSBhdG9tX3Rlc3RlZG1vZGlmaWVkKVxuICAgICAgJiYgbiA9IGFpZCAmJiBzID0gc2l0ZSAmJiBtID0gbW9kaWYpXG4gICAgcXVhcmtzXG5cbmxldCBjaGVja19ldmVudF9xdWFya3MgYWN0aW9ucyB0ZXN0cyBxdWFya3MgPVxuICBMaXN0LmZvcl9hbGxcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKChhaWQsIF8pLCBzaXRlcykgLT5cbiAgICAgICAgY2hlY2tfY3JlYXRlX3F1YXJrcyBhaWQgc2l0ZXMgcXVhcmtzXG4gICAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBhc2l0ZSAtPiBjaGVja19tb2RpZmllZF9xdWFya3MgYXNpdGUgMSBxdWFya3NcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIChhc2l0ZTEsIGFzaXRlMilcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChhc2l0ZTEsIGFzaXRlMikgLT5cbiAgICAgICAgY2hlY2tfbW9kaWZpZWRfcXVhcmtzIGFzaXRlMSAxIHF1YXJrc1xuICAgICAgICAmJiBjaGVja19tb2RpZmllZF9xdWFya3MgYXNpdGUyIDEgcXVhcmtzXG4gICAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIChhc2l0ZSwgXykgLT5cbiAgICAgICAgY2hlY2tfbW9kaWZpZWRfcXVhcmtzIGFzaXRlIDAgcXVhcmtzXG4gICAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIChhaWQsIF8pIC0+XG4gICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgKGZ1biAoYywgKG4sIF8sIF8pKSAtPlxuICAgICAgICAgICAgKGMgPSBhdG9tX21vZGlmaWVkIHx8IGMgPSBhdG9tX3Rlc3RlZG1vZGlmaWVkKSAmJiBuID0gYWlkKVxuICAgICAgICAgIHF1YXJrcylcbiAgICBhY3Rpb25zXG4gICYmIExpc3QuZm9yX2FsbFxuICAgICAgIChMaXN0LmZvcl9hbGwgKGZ1bmN0aW9uXG4gICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSAoYWlkLCBfKSAtPlxuICAgICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgIChmdW4gKGMsIChuLCBfLCBfKSkgLT5cbiAgICAgICAgICAgICAgIChjID0gYXRvbV90ZXN0ZWQgfHwgYyA9IGF0b21fdGVzdGVkbW9kaWZpZWQpICYmIG4gPSBhaWQpXG4gICAgICAgICAgICAgcXVhcmtzXG4gICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChhc2l0ZSwgXykgLT5cbiAgICAgICAgICAgY2hlY2tfdGVzdGVkX3F1YXJrcyBhc2l0ZSAwIHF1YXJrc1xuICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgYXNpdGVcbiAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBhc2l0ZVxuICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKGFzaXRlLCBfKSAtPlxuICAgICAgICAgICBjaGVja190ZXN0ZWRfcXVhcmtzIGFzaXRlIDEgcXVhcmtzXG4gICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKGFzaXRlMSwgYXNpdGUyKSAtPlxuICAgICAgICAgICBjaGVja190ZXN0ZWRfcXVhcmtzIGFzaXRlMSAxIHF1YXJrc1xuICAgICAgICAgICAmJiBjaGVja190ZXN0ZWRfcXVhcmtzIGFzaXRlMiAxIHF1YXJrcykpXG4gICAgICAgdGVzdHNcblxubGV0IGxvZ19ldmVudCBpZCBxdWFya3MgZXZlbnRfa2luZCBzdGVwcyA9XG4gIG1hdGNoIGV2ZW50X2tpbmQgd2l0aFxuICB8IEVWRU5UIChUcmFjZS5JTklUIF8pIC0+XG4gICAgbGV0IHN0cCA9XG4gICAgICBMaXN0LmZpbmRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBUcmFjZS5Jbml0IGFjdGlvbnMgLT5cbiAgICAgICAgICAgIExpc3QuZm9yX2FsbFxuICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICgoYWlkLCBfKSwgc2l0ZXMpIC0+XG4gICAgICAgICAgICAgICAgICBjaGVja19jcmVhdGVfcXVhcmtzIGFpZCBzaXRlcyBxdWFya3NcbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBfIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF9cbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZCBfIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgXyAtPlxuICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgXyAtPlxuICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5pdCBldmVudCBoYXMgYWN0aW9ucyBub3QgYWxsb3dlZFwiKSkpXG4gICAgICAgICAgICAgIGFjdGlvbnNcbiAgICAgICAgICB8IFRyYWNlLlJ1bGUgXyB8IFRyYWNlLlBlcnQgXyB8IFRyYWNlLk9icyBfIHwgVHJhY2UuU3VicyBfXG4gICAgICAgICAgfCBUcmFjZS5EdW1teSBfIC0+XG4gICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgc3RlcHNcbiAgICBpblxuICAgIGBMaXN0IFsgYEludCBpZDsgVHJhY2Uuc3RlcF90b195b2pzb24gc3RwIF1cbiAgfCBFVkVOVCAoVHJhY2UuUlVMRSByaWQpIC0+XG4gICAgbGV0IHN0cCA9XG4gICAgICBMaXN0LmZpbmRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBUcmFjZS5SdWxlIChyaWQnLCBlLCBfKSAtPlxuICAgICAgICAgICAgcmlkID0gcmlkJ1xuICAgICAgICAgICAgJiYgY2hlY2tfZXZlbnRfcXVhcmtzIGUuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgICAgICAgICAgICAgIChlLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzIDo6IGUuSW5zdGFudGlhdGlvbi50ZXN0cylcbiAgICAgICAgICAgICAgICAgcXVhcmtzXG4gICAgICAgICAgfCBUcmFjZS5QZXJ0IF8gfCBUcmFjZS5PYnMgXyB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkR1bW15IF9cbiAgICAgICAgICB8IFRyYWNlLkluaXQgXyAtPlxuICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgIHN0ZXBzXG4gICAgaW5cbiAgICBgTGlzdCBbIGBJbnQgaWQ7IFRyYWNlLnN0ZXBfdG9feW9qc29uIHN0cCBdXG4gIHwgT0JTIF8gLT5cbiAgICBsZXQgc3RwID1cbiAgICAgIExpc3QuZmluZFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IFRyYWNlLk9icyBfIC0+IHRydWVcbiAgICAgICAgICB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkR1bW15IF8gfCBUcmFjZS5Jbml0IF8gfCBUcmFjZS5SdWxlIF9cbiAgICAgICAgICB8IFRyYWNlLlBlcnQgXyAtPlxuICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgIHN0ZXBzXG4gICAgaW5cbiAgICBgTGlzdCBbIGBJbnQgaWQ7IFRyYWNlLnN0ZXBfdG9feW9qc29uIHN0cCBdXG4gIHwgRVZFTlQgKFRyYWNlLlBFUlQgcGVydCkgLT5cbiAgICBsZXQgc3RwID1cbiAgICAgIExpc3QuZmluZFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IFRyYWNlLlBlcnQgKHBlcnQnLCBlLCBfKSAtPlxuICAgICAgICAgICAgcGVydCA9IHBlcnQnXG4gICAgICAgICAgICAmJiBjaGVja19ldmVudF9xdWFya3MgZS5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICAgICAgICAgICAgICAgKGUuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgOjogZS5JbnN0YW50aWF0aW9uLnRlc3RzKVxuICAgICAgICAgICAgICAgICBxdWFya3NcbiAgICAgICAgICB8IFRyYWNlLlJ1bGUgXyB8IFRyYWNlLk9icyBfIHwgVHJhY2UuU3VicyBfIHwgVHJhY2UuRHVtbXkgX1xuICAgICAgICAgIHwgVHJhY2UuSW5pdCBfIC0+XG4gICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgc3RlcHNcbiAgICBpblxuICAgIGBMaXN0IFsgYEludCBpZDsgVHJhY2Uuc3RlcF90b195b2pzb24gc3RwIF1cblxubGV0IGpzb25fb2ZfZ3JpZCBlbnJpY2hlZF9ncmlkIGdyaWRfc3Rvcnkgc3RlcHMgPVxuICBsZXQgY29uZmlnID0gZW5yaWNoZWRfZ3JpZC5jb25maWcgaW5cbiAgbGV0IHByZWNfc3RhciA9IGVucmljaGVkX2dyaWQucHJlY19zdGFyIGluXG4gIGxldCBkZXB0aF9vZl9ldmVudCA9IGVucmljaGVkX2dyaWQuZGVwdGhfb2ZfZXZlbnQgaW5cbiAgbGV0IHRibCA9IEhhc2h0YmwuY3JlYXRlICFQYXJhbWV0ZXIuZGVmYXVsdEV4dEFycmF5U2l6ZSBpblxuICBsZXQgKCkgPVxuICAgIEhhc2h0YmwuaXRlclxuICAgICAgKGZ1biBxdWFyayBhdHRfbHMgLT5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biBhdG9tIC0+IEhhc2h0YmwuYWRkIHRibCBhdG9tLmVpZCAoYXRvbS5jYXVzYWxfaW1wYWN0LCBxdWFyaykpXG4gICAgICAgICAgYXR0X2xzKVxuICAgICAgZ3JpZF9zdG9yeS5mbG93XG4gIGluXG4gIGxldCBzb3J0ZWRfZXZlbnRzID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIGVpZCBkIGRtYXAgLT5cbiAgICAgICAgbGV0IHNldCA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBkIGRtYXAgaW5cbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGQgKE1vZHMuSW50U2V0LmFkZCBlaWQgc2V0KSBkbWFwKVxuICAgICAgZGVwdGhfb2ZfZXZlbnQgTW9kcy5JbnRNYXAuZW1wdHlcbiAgaW5cbiAgbGV0IG5vZGVfdG9fanNvbiBlaWQgPVxuICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGVpZCBjb25maWcuZXZlbnRzX2tpbmQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICB8IFNvbWUgYXRvbV9raW5kIC0+XG4gICAgICBpZiBlaWQgPD4gMCB0aGVuIChcbiAgICAgICAgbGV0IHF1YXJrcyA9IEhhc2h0YmwuZmluZF9hbGwgdGJsIGVpZCBpblxuICAgICAgICBsb2dfZXZlbnQgZWlkIHF1YXJrcyBhdG9tX2tpbmQgc3RlcHNcbiAgICAgICkgZWxzZVxuICAgICAgICBgTnVsbFxuICBpblxuICBsZXQgbm9kZXNfdG9fbGlzdCA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBfIGVpZHNfYXRfZCBscyAtPlxuICAgICAgICBsZXQgbHMnJyA9IE1vZHMuSW50U2V0LmZvbGQgKGZ1biBlaWQgbHMnIC0+IGVpZCA6OiBscycpIGVpZHNfYXRfZCBbXSBpblxuICAgICAgICBscycnIEAgbHMpXG4gICAgICBzb3J0ZWRfZXZlbnRzIFtdXG4gIGluXG4gIGxldCBub2Rlc190b19qc29uID0gSnNvblV0aWwub2ZfbGlzdCBub2RlX3RvX2pzb24gbm9kZXNfdG9fbGlzdCBpblxuICBsZXQgZWRnZV90b19qc29uIChlaWQsIGVpZCcpID0gYEFzc29jIFsgXCJmcm9tXCIsIGBJbnQgZWlkJzsgXCJ0b1wiLCBgSW50IGVpZCBdIGluXG4gIGxldCBwcmVjX2VkZ2VzID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIGVpZCBwcmVkX3NldCBscyAtPlxuICAgICAgICBpZiBlaWQgPD4gMCB0aGVuIChcbiAgICAgICAgICBsZXQgbHMnJyA9XG4gICAgICAgICAgICBNb2RzLkludFNldC5mb2xkXG4gICAgICAgICAgICAgIChmdW4gZWlkJyBscycgLT5cbiAgICAgICAgICAgICAgICBpZiBlaWQnID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICBscydcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAoZWlkLCBlaWQnKSA6OiBscycpXG4gICAgICAgICAgICAgIHByZWRfc2V0IFtdXG4gICAgICAgICAgaW5cbiAgICAgICAgICBscycnIEAgbHNcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgbHMpXG4gICAgICBjb25maWcucHJlY18xIFtdXG4gIGluXG4gIGxldCBwcmVjX2VkZ2VzX3RvX2pzb24gPSBKc29uVXRpbC5vZl9saXN0IGVkZ2VfdG9fanNvbiBwcmVjX2VkZ2VzIGluXG4gIGxldCBjb25mbF9lZGdlcyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBlaWQgY2ZsY3Rfc2V0IGxzIC0+XG4gICAgICAgIGlmIGVpZCA8PiAwIHRoZW4gKFxuICAgICAgICAgIGxldCBwcmVjID0gdHJ5IChmc3QgcHJlY19zdGFyKS4oZWlkKSB3aXRoIF8gLT4gW10gaW5cbiAgICAgICAgICBsZXQgXywgbHMnID1cbiAgICAgICAgICAgIE1vZHMuSW50U2V0LmZvbGRfaW52XG4gICAgICAgICAgICAgIChmdW4gZWlkJyAocHJlYywgbHMnKSAtPlxuICAgICAgICAgICAgICAgIGxldCBib29sLCBwcmVjID1cbiAgICAgICAgICAgICAgICAgIGxldCByZWMgYXV4IHByZWMgPVxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiB0cnVlLCBwcmVjXG4gICAgICAgICAgICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgaCA9IGVpZCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIHRcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIGggPiBlaWQnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGF1eCB0XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgcHJlY1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGF1eCBwcmVjXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbHMnJyA9XG4gICAgICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKGVpZCwgZWlkJykgOjogbHMnXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGxzJ1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgcHJlYywgbHMnJylcbiAgICAgICAgICAgICAgY2ZsY3Rfc2V0IChwcmVjLCBscylcbiAgICAgICAgICBpblxuICAgICAgICAgIGxzJ1xuICAgICAgICApIGVsc2VcbiAgICAgICAgICBscylcbiAgICAgIGNvbmZpZy5jb25mbGljdCBbXVxuICBpblxuICBsZXQgY29uZmxfZWRnZXNfdG9fanNvbiA9IEpzb25VdGlsLm9mX2xpc3QgZWRnZV90b19qc29uIGNvbmZsX2VkZ2VzIGluXG4gIChgQXNzb2NcbiAgICAgW1xuICAgICAgIFwibm9kZXNcIiwgbm9kZXNfdG9fanNvbjtcbiAgICAgICBcImNhdXNlXCIsIHByZWNfZWRnZXNfdG9fanNvbjtcbiAgICAgICBcImluaGliaXRcIiwgY29uZmxfZWRnZXNfdG9fanNvbjtcbiAgICAgXVxuICAgIDogWW9qc29uLkJhc2ljLnQpXG5cbigqc3RvcnlfbGlzdDpbKGtleV9pLGxpc3RfaSldIGV0IGxpc3RfaTpbKGdyaWQsXyxzaW1faW5mbyBvcHRpb24pLi4uXVxuICBldCBzaW1faW5mbzp7d2l0aCBzdG9yeV9pZDppbnQgc3RvcnlfdGltZTogZmxvYXQgOyBzdG9yeV9ldmVudDogaW50fSopXG5sZXQgcHJldHR5X3ByaW50IH5kb3RGb3JtYXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZW52IGNvbmZpZ19jbG9zdXJlXG4gICAgY29tcHJlc3Npb25fdHlwZSBsYWJlbCBncmlkX2xpc3QgPVxuICBtYXRjaFxuICAgIExvZ2dlcnMuZm9ybWF0dGVyX29mX2xvZ2dlciAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgd2l0aFxuICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvXG4gIHwgU29tZSBlcnJfZm10IC0+XG4gICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBncmlkX2xpc3QgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgY29tcHJlc3Npb25fdHlwZSA9IFwiXCIgdGhlblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBlcnJfZm10IFwiKyBQcmV0dHkgcHJpbnRpbmcgJWQgZmxvdyVzQC5cIiBuXG4gICAgICAgICAgKGlmIG4gPiAxIHRoZW5cbiAgICAgICAgICAgICBcInNcIlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgXCJcIilcbiAgICAgIGVsc2VcbiAgICAgICAgRm9ybWF0LmZwcmludGYgZXJyX2ZtdCBcIisgUHJldHR5IHByaW50aW5nICVkICVzY29tcHJlc3NlZCBmbG93JXNALlwiIG5cbiAgICAgICAgICBsYWJlbFxuICAgICAgICAgIChpZiBuID4gMSB0aGVuXG4gICAgICAgICAgICAgXCJzXCJcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFwiXCIpXG4gICAgaW5cbiAgICBsZXQgY29tcHJlc3Npb25fdHlwZSA9XG4gICAgICBpZiBjb21wcmVzc2lvbl90eXBlID0gXCJcIiB0aGVuXG4gICAgICAgIFwibm9uZVwiXG4gICAgICBlbHNlXG4gICAgICAgIGNvbXByZXNzaW9uX3R5cGVcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0b3J5X2xpc3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBsaXN0KSAoeiwgeCwgeSkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB4ID1cbiAgICAgICAgICAgIGVucmljaF9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNvbmZpZ19jbG9zdXJlIHhcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgKHosIHgsIHkpIDo6IGxpc3QpXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIFtdKSBncmlkX2xpc3RcbiAgICBpblxuICAgIGxldCBzdG9yeV9saXN0ID0gTGlzdC5yZXYgc3RvcnlfbGlzdCBpblxuICAgIGxldCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gY3B0IChzdGVwcywgZW5yaWNoZWRfY29uZmlnLCBzdG9yaWVzKSAtPlxuICAgICAgICAgIGxldCBhdl90LCBpZHMsIG4gPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biAoYXZfdCwgaWRzLCBuKSBpbmZvIC0+XG4gICAgICAgICAgICAgICAgKCBhdl90ICsuIGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWUsXG4gICAgICAgICAgICAgICAgICBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCA6OiBpZHMsXG4gICAgICAgICAgICAgICAgICBuICsgMSApKVxuICAgICAgICAgICAgICAoMC4sIFtdLCAwKSAoTGlzdC5yZXYgc3RvcmllcylcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAoKmR1bXAgZ3JpZCBmaWMgc3RhdGUgZW52IDsgKilcbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIGlmIGRvdEZvcm1hdCA9IEpzb24gdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IF8sIGdyaWRfc3RvcnksIF8gPSBMaXN0Lm50aCBncmlkX2xpc3QgY3B0IGluXG4gICAgICAgICAgICAgICAgS2FwcGFfZmlsZXMud2l0aF9jZmxvd19maWxlXG4gICAgICAgICAgICAgICAgICBbIGNvbXByZXNzaW9uX3R5cGU7IHN0cmluZ19vZl9pbnQgY3B0IF1cbiAgICAgICAgICAgICAgICAgIFwiLmpzb25cIlxuICAgICAgICAgICAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc0AuXCJcbiAgICAgICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIChqc29uX29mX2dyaWQgZW5yaWNoZWRfY29uZmlnIGdyaWRfc3Rvcnkgc3RlcHMpKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIGRvdEZvcm1hdCB3aXRoXG4gICAgICAgICAgICB8IERvdCB8IEpzb24gLT5cbiAgICAgICAgICAgICAgbGV0IHByb2ZpbGluZyBkZXNjID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiLyogQFtDb21wcmVzc2lvbiBvZiAlZCBjYXVzYWwgZmxvd3NcIiBuO1xuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGRlc2MgXCJAIG9idGFpbmVkIGluIGF2ZXJhZ2UgYXQgJUUgdC51QF0gKi9ALFwiXG4gICAgICAgICAgICAgICAgICAoYXZfdCAvLiBmbG9hdF9vZl9pbnQgbik7XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzY1xuICAgICAgICAgICAgICAgICAgXCJAWy8qIENvbXByZXNzZWQgY2F1c2FsIGZsb3dzIHdlcmU6QCBbJWFdICovQF1cIlxuICAgICAgICAgICAgICAgICAgKFBwLmxpc3RcbiAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiO0AsXCIpXG4gICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgICAgICAgICAgICAgaWRzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEthcHBhX2ZpbGVzLndpdGhfY2Zsb3dfZmlsZVxuICAgICAgICAgICAgICAgIFsgY29tcHJlc3Npb25fdHlwZTsgc3RyaW5nX29mX2ludCBjcHQgXVxuICAgICAgICAgICAgICAgIFwiLmRvdFwiXG4gICAgICAgICAgICAgICAgKGRvdF9vZl9ncmlkIHByb2ZpbGluZyBlbnYgZW5yaWNoZWRfY29uZmlnKVxuICAgICAgICAgICAgfCBIdG1sIC0+XG4gICAgICAgICAgICAgIGxldCBwcm9maWxpbmcgZGVzYyA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzY1xuICAgICAgICAgICAgICAgICAgXCJAWzx2IDI+PGRsPkAsPGR0PkNvbXByZXNzaW9uIG9mPC9kdD48ZGQ+JWQgY2F1c2FsIGZsb3dzPC9kZD5cIlxuICAgICAgICAgICAgICAgICAgbjtcbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBkZXNjXG4gICAgICAgICAgICAgICAgICBcIkAsPGR0Pm9idGFpbmVkIGluIGF2ZXJhZ2UgYXQ8L2R0PjxkZD4lRSB0LnU8L2RkPkAsXCJcbiAgICAgICAgICAgICAgICAgIChhdl90IC8uIGZsb2F0X29mX2ludCBuKTtcbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiPGR0PkNvbXByZXNzZWQgY2F1c2FsIGZsb3dzIHdlcmU6PC9kdD5cIjtcbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiQCA8ZGQ+W0BbJWFAXV08L2RkPkBdQCw8L2RsPlwiXG4gICAgICAgICAgICAgICAgICAoUHAubGlzdFxuICAgICAgICAgICAgICAgICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI7QCxcIilcbiAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9pbnQpXG4gICAgICAgICAgICAgICAgICBpZHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgS2FwcGFfZmlsZXMud2l0aF9jZmxvd19maWxlXG4gICAgICAgICAgICAgICAgWyBjb21wcmVzc2lvbl90eXBlOyBzdHJpbmdfb2ZfaW50IGNwdCBdXG4gICAgICAgICAgICAgICAgXCIuaHRtbFwiXG4gICAgICAgICAgICAgICAgKGh0bWxfb2ZfZ3JpZCBwcm9maWxpbmcgY29tcHJlc3Npb25fdHlwZSBjcHQgZW52IGVucmljaGVkX2NvbmZpZylcbiAgICAgICAgICBpblxuICAgICAgICAgIGNwdCArIDEpXG4gICAgICAgIDAgc3RvcnlfbGlzdFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIGRvdEZvcm1hdCB3aXRoXG4gICAgICB8IEpzb24gLT5cbiAgICAgICAgS2FwcGFfZmlsZXMud2l0aF9jZmxvd19maWxlIFsgY29tcHJlc3Npb25fdHlwZTsgXCJlbnZcIiBdIFwiLmpzb25cIlxuICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVzQC5cIlxuICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoTW9kZWwudG9feW9qc29uIGVudikpKVxuICAgICAgfCBEb3QgfCBIdG1sIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBLYXBwYV9maWxlcy53aXRoX2NmbG93X2ZpbGUgWyBjb21wcmVzc2lvbl90eXBlOyBcIlN1bW1hcnlcIiBdIFwiLmRhdFwiXG4gICAgICAgIChmdW4gZm9ybSAtPlxuICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJAWzx2PiNpZFxcdEVcXHRUXFx0XFx0ZGVwdGhcXHRzaXplXFx0QCxcIiBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBQcC5saXN0aSBQcC5lbXB0eVxuICAgICAgICAgICAgICAoZnVuIGNwdCBmIChfLCBlbnJpY2hlZF9jb25maWcsIHN0b3J5KSAtPlxuICAgICAgICAgICAgICAgIGxldCBkZXB0aCA9IGVucmljaGVkX2NvbmZpZy5kZXB0aCBpblxuICAgICAgICAgICAgICAgIGxldCBzaXplID0gZW5yaWNoZWRfY29uZmlnLnNpemUgaW5cbiAgICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAgIChmdW4gaW5mbyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgdGltZSA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWUgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGV2ZW50ID0gaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQgaW5cbiAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVpXFx0JWlcXHQlRVxcdCVpXFx0JWlcXHRALFwiIGNwdCBldmVudCB0aW1lXG4gICAgICAgICAgICAgICAgICAgICAgZGVwdGggc2l6ZSlcbiAgICAgICAgICAgICAgICAgIHN0b3J5KVxuICAgICAgICAgICAgICBmb3JtIHN0b3J5X2xpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJAXUA/XCIpXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm9cblxubGV0IHByaW50X3N0YXQgZiBfcGFyYW1ldGVyIF9oYW5kbGVyIGVucmljaGVkX2dyaWQgPVxuICBsZXQgY291bnRfb2JzID1cbiAgICBtYXRjaCBzbmQgZW5yaWNoZWRfZ3JpZC5wcmVjX3N0YXIgd2l0aFxuICAgIHwgR3JhcGhfY2xvc3VyZS5JbmNyZWFzaW5nX3dpdGhfbGFzdF9ldmVudCAtPiBmdW4geCAtPiB4XG4gICAgfCBHcmFwaF9jbG9zdXJlLkRlY3JlYXNpbmdfd2l0aG91dF9sYXN0X2V2ZW50IC0+IHN1Y2NcbiAgaW5cbiAgbGV0IHNpemUgPSBBcnJheS5sZW5ndGggKGZzdCBlbnJpY2hlZF9ncmlkLnByZWNfc3RhcikgaW5cbiAgbGV0IHJlYyBhdXggayBuX3N0ZXAgbG9uZ2VzdF9zdG9yeSBuX25vbmVtcHR5IGxlbmd0aF9zdW0gbGVuZ3RoX3NxdWFyZV9zdW0gPVxuICAgIGlmIGsgPj0gc2l6ZSB0aGVuXG4gICAgICBuX3N0ZXAsIGxvbmdlc3Rfc3RvcnksIG5fbm9uZW1wdHksIGxlbmd0aF9zdW0sIGxlbmd0aF9zcXVhcmVfc3VtXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2MgPSBMaXN0Lmxlbmd0aCAoQXJyYXkuZ2V0IChmc3QgZW5yaWNoZWRfZ3JpZC5wcmVjX3N0YXIpIGspIGluXG4gICAgICBsZXQgY2MnID1cbiAgICAgICAgaWYgY2MgPiAwIHRoZW5cbiAgICAgICAgICBjb3VudF9vYnMgY2NcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNjXG4gICAgICBpblxuICAgICAgYXV4IChrICsgMSkgKG5fc3RlcCArIDEpIChtYXggbG9uZ2VzdF9zdG9yeSBjYycpXG4gICAgICAgIChpZiBjYyA+IDAgdGhlblxuICAgICAgICAgICBuX25vbmVtcHR5ICsgMVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBuX25vbmVtcHR5KVxuICAgICAgICAobGVuZ3RoX3N1bSArIGNjJylcbiAgICAgICAgKGxlbmd0aF9zcXVhcmVfc3VtICsgKGNjJyAqIGNjJykpXG4gICAgKVxuICBpblxuICBsZXQgbl9zdGVwLCBsb25nZXN0X3N0b3J5LCBuX25vbmVtcHR5LCBsZW5ndGhfc3VtLCBsZW5ndGhfc3F1YXJlX3N1bSA9XG4gICAgYXV4IDAgMCAwIDAgMCAwXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PlN0YXRzOkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiBudW1iZXIgb2Ygc3RlcCAgIDogJWlALFwiIG5fc3RlcCBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiIGxvbmdlc3Qgc3RvcnkgICAgOiAlaUAsXCIgbG9uZ2VzdF9zdG9yeSBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgYXZlcmFnZSBsZW5ndGggICA6ICUuNGdALFwiXG4gICAgICAoZmxvYXQgbGVuZ3RoX3N1bSAvLiBmbG9hdCBuX25vbmVtcHR5KVxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgZ2VvbWV0cmljIG1lYW4gICA6ICUuNGdALFwiXG4gICAgICAoc3FydCAoZmxvYXQgbGVuZ3RoX3NxdWFyZV9zdW0gLy4gZmxvYXQgbl9ub25lbXB0eSkpXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAXUAuXCJcbiIsInR5cGUgcHJlZGljYXRlX3ZhbHVlID1cbiAgfCBJbnRlcm5hbF9zdGF0ZV9pcyBvZiBpbnRcbiAgfCBVbmRlZmluZWQgICgqKiB0aGUgd2lyZSBkb2VzIG5vdCBleGlzdCB5ZXQgKilcbiAgfCBQcmVzZW50ICAoKiogZm9yIGFnZW50IHByZXNlbmNlICopXG4gIHwgRnJlZSAgKCoqIGZvciBiaW5kaW5nIHNpdGVzICopXG4gIHwgQm91bmRfdG8gb2YgaW50ICogSW5zdGFudGlhdGlvbi5hZ2VudF9uYW1lICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcbiAgICAgICgqKiBmb3IgYmluZGluZyBzaXRlcyAqKVxuXG5tb2R1bGUgQSA9IE1vZHMuRHluQXJyYXlcblxudHlwZSBwcmVkaWNhdGVfaW5mbyA9XG4gIHwgSGVyZSBvZiBpbnRcbiAgfCBCb3VuZF9zaXRlIG9mIGludCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gIHwgSW50ZXJuYWxfc3RhdGUgb2YgaW50ICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcblxubGV0IHN0cmluZ19vZl9wcmVkaWNhdGVfaW5mbyBwaSA9XG4gIG1hdGNoIHBpIHdpdGhcbiAgfCBIZXJlIGFnIC0+IFwiSGVyZSBcIiBeIHN0cmluZ19vZl9pbnQgYWdcbiAgfCBCb3VuZF9zaXRlIChhZywgcykgLT5cbiAgICBcIkJvdW5kX3N0YXRlIFwiIF4gc3RyaW5nX29mX2ludCBhZyBeIFwiIFwiIF4gc3RyaW5nX29mX2ludCBzXG4gIHwgSW50ZXJuYWxfc3RhdGUgKGFnLCBzKSAtPlxuICAgIFwiSW50ZXJuYWxfc3RhdGUgXCIgXiBzdHJpbmdfb2ZfaW50IGFnIF4gXCIgXCIgXiBzdHJpbmdfb2ZfaW50IHNcblxubW9kdWxlIFByZWRpY2F0ZVNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gcHJlZGljYXRlX2luZm9cblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IHByaW50IGYgeCA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoc3RyaW5nX29mX3ByZWRpY2F0ZV9pbmZvIHgpXG5lbmQpXG5cbm1vZHVsZSBQcmVkaWNhdGVNYXAgPSBQcmVkaWNhdGVTZXRNYXAuTWFwXG5cbm1vZHVsZSBRUHJlZGljYXRlTWFwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFByZWRpY2F0ZU1hcC50IEEudFxuXG4gIGxldCBlbXB0eSBuID0gQS5tYWtlIG4gUHJlZGljYXRlTWFwLmVtcHR5XG4gIGxldCBpdGVyIGYgdCA9IEEuaXRlciAoUHJlZGljYXRlTWFwLml0ZXIgZikgdFxuXG4gIGxldCBoYXNoIHByZWRpY2F0ZSA9XG4gICAgbWF0Y2ggcHJlZGljYXRlIHdpdGhcbiAgICB8IEhlcmUgYWcgfCBCb3VuZF9zaXRlIChhZywgXykgfCBJbnRlcm5hbF9zdGF0ZSAoYWcsIF8pIC0+IGFnXG5cbiAgbGV0IGxpZnQgZiBwcmVkaWNhdGVfaWQgdGFiID0gZiBwcmVkaWNhdGVfaWQgKEEuZ2V0IHRhYiAoaGFzaCBwcmVkaWNhdGVfaWQpKVxuICBsZXQgZmluZF9kZWZhdWx0IGRlZiBwIHQgPSBsaWZ0IChQcmVkaWNhdGVNYXAuZmluZF9kZWZhdWx0IGRlZikgcCB0XG4gIGxldCBmaW5kX29wdGlvbiBwIHQgPSBsaWZ0IFByZWRpY2F0ZU1hcC5maW5kX29wdGlvbiBwIHRcbiAgbGV0IG1lbSBwIHQgPSBsaWZ0IFByZWRpY2F0ZU1hcC5tZW0gcCB0XG5cbiAgbGV0IGFkZCBwcmVkaWNhdGVfaWQgeCB0YWIgPVxuICAgIGxldCBoYXNoID0gaGFzaCBwcmVkaWNhdGVfaWQgaW5cbiAgICBsZXQgb2xkID0gQS5nZXQgdGFiIGhhc2ggaW5cbiAgICBsZXQgXyA9IEEuc2V0IHRhYiBoYXNoIChQcmVkaWNhdGVNYXAuYWRkIHByZWRpY2F0ZV9pZCB4IG9sZCkgaW5cbiAgICB0YWJcblxuICBsZXQgcmVjeWNsZSB0YWIgaSA9IEEuc2V0IHRhYiBpIFByZWRpY2F0ZU1hcC5lbXB0eVxuZW5kXG5cbm1vZHVsZSBNUHJlZGljYXRlTWFwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFByZWRpY2F0ZU1hcC50XG5cbiAgbGV0IHByZWRpY2F0ZV9tYXggX3BhcmFtZXRlciBfaGFuZGxlciBpbmZvIGVycm9yIF9saXN0ID0gZXJyb3IsIGluZm8sIDBcbiAgbGV0IGVtcHR5IF9uID0gUHJlZGljYXRlTWFwLmVtcHR5XG4gIGxldCBpdGVyID0gUHJlZGljYXRlTWFwLml0ZXJcbiAgbGV0IGZpbmRfZGVmYXVsdCA9IFByZWRpY2F0ZU1hcC5maW5kX2RlZmF1bHRcbiAgbGV0IGZpbmRfb3B0aW9uID0gUHJlZGljYXRlTWFwLmZpbmRfb3B0aW9uXG4gIGxldCBtZW0gPSBQcmVkaWNhdGVNYXAubWVtXG4gIGxldCBhZGQgPSBQcmVkaWNhdGVNYXAuYWRkXG5lbmRcblxubW9kdWxlIENQcmVkaWNhdGVNYXAgPSBNUHJlZGljYXRlTWFwXG4iLCIoKipcbiAgKiBwcmlvcml0eS5tbFxuICAqXG4gICpcbiAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTMtMDctMzAgZmVyZXQ+XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTAyLTE5IDE0OjIxOjE5IGZlcmV0PlxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERlZGVyb3QsIENOUlNcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIHNlbGVjdGlvbl9zdHJhdGVneSA9XG4gIHwgQWxsX3JlbWFpbmluZ19ldmVudHNcbiAgfCBXaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHNcbiAgfCBXaXJlX3dpdGhfdGhlX21vc3RfbnVtYmVyX29mX2V2ZW50c1xuXG50eXBlIHRyeV90b19yZW1vdmVfZmlyc3QgPSBMYXRlX2V2ZW50cyB8IEVhcmx5X2V2ZW50c1xuXG50eXBlIGxldmVsID1cbiAgfCBIaWdoZXN0XG4gIHwgSGlnaFxuICB8IEFib3ZlX2F2ZXJhZ2VcbiAgfCBBdmVyYWdlXG4gIHwgQmVsbG93X2F2ZXJhZ2VcbiAgfCBMb3dcbiAgfCBMb3dlc3RcblxubGV0IHdlaWdodCB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgSGlnaGVzdCAtPiAwXG4gIHwgSGlnaCAtPiAxXG4gIHwgQWJvdmVfYXZlcmFnZSAtPiAyXG4gIHwgQXZlcmFnZSAtPiAzXG4gIHwgQmVsbG93X2F2ZXJhZ2UgLT4gNFxuICB8IExvdyAtPiA1XG4gIHwgTG93ZXN0IC0+IDZcblxubGV0IF9jb21wYXJlX2xldmVsIGx2bDEgbHZsMiA9IGNvbXBhcmUgKHdlaWdodCBsdmwxKSAod2VpZ2h0IGx2bDIpXG5cbmxldCBtaW5fbGV2ZWwgYSBiID1cbiAgaWYgY29tcGFyZSBhIGIgPD0gMCB0aGVuXG4gICAgYVxuICBlbHNlXG4gICAgYlxuXG5sZXQgX21heF9sZXZlbCBhIGIgPVxuICBpZiBjb21wYXJlIGEgYiA8PSAwIHRoZW5cbiAgICBiXG4gIGVsc2VcbiAgICBhXG5cbmxldCBoaWdoZXN0ID0gSGlnaGVzdFxubGV0IGhpZ2ggPSBIaWdoXG5sZXQgYWJvdmVfYXZlcmFnZSA9IEFib3ZlX2F2ZXJhZ2VcbmxldCBhdmVyYWdlID0gQXZlcmFnZVxubGV0IGJlbGxvd19hdmVyYWdlID0gQmVsbG93X2F2ZXJhZ2VcbmxldCBsb3cgPSBMb3dcbmxldCBsb3dlc3QgPSBMb3dlc3RcblxubGV0IHN0cmluZ19vZl9sZXZlbCBsZXZlbCA9XG4gIG1hdGNoIGxldmVsIHdpdGhcbiAgfCBIaWdoZXN0IC0+IFwiaGlnaGVzdFwiXG4gIHwgSGlnaCAtPiBcImhpZ2hcIlxuICB8IEFib3ZlX2F2ZXJhZ2UgLT4gXCJhYm92ZSBhdmVyYWdlXCJcbiAgfCBBdmVyYWdlIC0+IFwiYXZlcmFnZVwiXG4gIHwgQmVsbG93X2F2ZXJhZ2UgLT4gXCJiZWxsb3cgYXZlcmFnZVwiXG4gIHwgTG93IC0+IFwibG93XCJcbiAgfCBMb3dlc3QgLT4gXCJsb3dlc3RcIlxuXG5sZXQgbG93ZXIgbGV2ZWwgPVxuICBtYXRjaCBsZXZlbCB3aXRoXG4gIHwgSGlnaGVzdCAtPiBTb21lIEhpZ2hcbiAgfCBIaWdoIC0+IFNvbWUgQWJvdmVfYXZlcmFnZVxuICB8IEFib3ZlX2F2ZXJhZ2UgLT4gU29tZSBBdmVyYWdlXG4gIHwgQXZlcmFnZSAtPiBTb21lIEJlbGxvd19hdmVyYWdlXG4gIHwgQmVsbG93X2F2ZXJhZ2UgLT4gU29tZSBMb3dcbiAgfCBMb3cgLT4gU29tZSBMb3dlc3RcbiAgfCBMb3dlc3QgLT4gTm9uZVxuXG5sZXQgaGlnaGVyIGxldmVsID1cbiAgbWF0Y2ggbGV2ZWwgd2l0aFxuICB8IEhpZ2hlc3QgLT4gTm9uZVxuICB8IEhpZ2ggLT4gU29tZSBIaWdoZXN0XG4gIHwgQWJvdmVfYXZlcmFnZSAtPiBTb21lIEhpZ2hcbiAgfCBBdmVyYWdlIC0+IFNvbWUgQWJvdmVfYXZlcmFnZVxuICB8IEJlbGxvd19hdmVyYWdlIC0+IFNvbWUgQXZlcmFnZVxuICB8IExvdyAtPiBTb21lIEJlbGxvd19hdmVyYWdlXG4gIHwgTG93ZXN0IC0+IFNvbWUgTG93XG5cbm1vZHVsZSBMZXZlbFNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gbGV2ZWxcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IHByaW50IGYgeCA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoc3RyaW5nX29mX2xldmVsIHgpXG5lbmQpXG5cbm1vZHVsZSBMZXZlbE1hcCA9IExldmVsU2V0TWFwLk1hcFxuXG50eXBlIHByaW9yaXRpZXMgPSB7XG4gIGNyZWF0aW9uOiBsZXZlbDtcbiAgdW5iaW5kaW5nOiBsZXZlbDtcbiAgcmVtb3ZhbDogbGV2ZWw7XG4gIG90aGVyX2V2ZW50czogbGV2ZWw7XG4gIHN1YnN0aXR1dGlvbjogbGV2ZWw7XG4gIHNpZGVfZWZmZWN0czogbGV2ZWw7XG4gIGNhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzOiBzZWxlY3Rpb25fc3RyYXRlZ3k7XG4gIHRyeV90b19yZW1vdmVfZmlyc3Q6IHRyeV90b19yZW1vdmVfZmlyc3Q7XG59XG4oKiogZWFjaCBldmVudCBpcyBhc3NvY2lhdGVkIHdpdGggYSBsZXZlbCBjb3JyZXNwb25kaW5nIG9mIGl0cyBhY3Rpb25zIChpZiBtdWx0aXBsZSBhY3Rpb24sIHRoZW4sIHRoZSBsZWFzdCBjb3JyZXNwb25kaW5nIGxldmVsIGlzIHNlbGVjdGVkXG4gRXZlbnRzIHdpdGggdGhlIGxlYXN0IGxldmVsIG9mIHByaW9yaXR5IGFyZSByZW1vdmVkIGZpcnN0XG4gQW1vbmcgdGhlbSwgdGhlIGNob2ljZSBpcyBkcml2ZW4gYnkgdGhlIGZpZWxkcyAnY2FuZGlkYXRlX3NldF9vZl9ldmVudHMnIGFuZCAndHJ5X3RvX3JlbW92ZV9maXJzdCcgKilcblxubGV0IGNhdXNhbCA9XG4gIHtcbiAgICBjcmVhdGlvbiA9IEhpZ2hlc3Q7XG4gICAgdW5iaW5kaW5nID0gSGlnaGVzdDtcbiAgICByZW1vdmFsID0gSGlnaGVzdDtcbiAgICBvdGhlcl9ldmVudHMgPSBIaWdoZXN0O1xuICAgIHN1YnN0aXR1dGlvbiA9IEhpZ2hlc3Q7XG4gICAgc2lkZV9lZmZlY3RzID0gSGlnaGVzdDtcbiAgICBjYW5kaWRhdGVfc2V0X29mX2V2ZW50cyA9IFdpcmVfd2l0aF90aGVfbGVhc3RfbnVtYmVyX29mX2V2ZW50cztcbiAgICB0cnlfdG9fcmVtb3ZlX2ZpcnN0ID0gTGF0ZV9ldmVudHM7XG4gIH1cblxubGV0IHdlYWsgPVxuICB7XG4gICAgY3JlYXRpb24gPSBIaWdoZXN0O1xuICAgIHVuYmluZGluZyA9IEhpZ2hlc3Q7XG4gICAgcmVtb3ZhbCA9IEhpZ2hlc3Q7XG4gICAgb3RoZXJfZXZlbnRzID0gSGlnaGVzdDtcbiAgICBzdWJzdGl0dXRpb24gPSBIaWdoO1xuICAgIHNpZGVfZWZmZWN0cyA9IEhpZ2g7XG4gICAgY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgPSBXaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHM7XG4gICAgdHJ5X3RvX3JlbW92ZV9maXJzdCA9IExhdGVfZXZlbnRzO1xuICB9XG5cbmxldCBzdHJvbmcgPVxuICB7XG4gICAgY3JlYXRpb24gPSBIaWdoZXN0O1xuICAgIHVuYmluZGluZyA9IEhpZ2g7XG4gICAgcmVtb3ZhbCA9IEFib3ZlX2F2ZXJhZ2U7XG4gICAgb3RoZXJfZXZlbnRzID0gQXZlcmFnZTtcbiAgICBzdWJzdGl0dXRpb24gPSBCZWxsb3dfYXZlcmFnZTtcbiAgICBzaWRlX2VmZmVjdHMgPSBMb3c7XG4gICAgY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgPSBXaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHM7XG4gICAgdHJ5X3RvX3JlbW92ZV9maXJzdCA9IExhdGVfZXZlbnRzO1xuICB9XG5cbmxldCBuX3N0b3J5ID0gcmVmIDFcbmxldCBuX2JyYW5jaCA9IHJlZiAxXG4iLCJ0eXBlIGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSA9IFdlYWsgfCBTdHJvbmcgfCBDYXVzYWxcbnR5cGUgbmV3X3N0b3J5ID0geyBpZDogaW50OyBncmFwaDogR3JhcGhfbG9nZ2Vyc19zaWcuZ3JhcGggfVxudHlwZSBzdG9yeSA9IE5ldyBvZiBuZXdfc3RvcnkgfCBTYW1lX2FzIG9mIGludFxuXG50eXBlICdhIG9uZV9jb21wcmVzc2lvbiA9IHtcbiAgbG9nX2luZm86ICdhIFRyYWNlLlNpbXVsYXRpb25faW5mby50IGxpc3Q7XG4gIHN0b3J5X21vZGU6IGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZTtcbiAgc3Rvcnk6IHN0b3J5O1xufVxuXG5sZXQgc3RyaW5nX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgcyAtPiBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHN0cmluZ1wiLCB4KSlcblxubGV0IGludF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgSW50IHMgLT4gc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBpbnRcIiwgeCkpXG5cbmxldCBuZXdfc3RvcnlfdG9fanNvbiBuZXdfc3RvcnkgPVxuICBgQXNzb2NcbiAgICBbIFwiaWRcIiwgYEludCBuZXdfc3RvcnkuaWQ7IFwiZ3JhcGhcIiwgR3JhcGhfanNvbi50b19qc29uIG5ld19zdG9yeS5ncmFwaCBdXG5cbmxldCBuZXdfc3Rvcnlfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAyIC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIGlkID0gaW50X29mX2pzb24gKExpc3QuYXNzb2MgXCJpZFwiIGwpO1xuICAgICAgICAgZ3JhcGggPSBHcmFwaF9qc29uLm9mX2pzb24gKExpc3QuYXNzb2MgXCJncmFwaFwiIGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IG5ldyBzdG9yeVwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IG5ldyBzdG9yeVwiLCB4KSlcblxubGV0IHN0b3J5X3RvX2pzb24gc3RvcnkgPVxuICBtYXRjaCBzdG9yeSB3aXRoXG4gIHwgTmV3IG5ld19zdG9yeSAtPiBgQXNzb2MgWyBcIm5ld1wiLCBuZXdfc3RvcnlfdG9fanNvbiBuZXdfc3RvcnkgXVxuICB8IFNhbWVfYXMgaW50IC0+IGBBc3NvYyBbIFwic2FtZV9hc1wiLCBgSW50IGludCBdXG5cbmxldCBzdG9yeV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAoXCJuZXdcIiwgbmV3X3N0b3J5KSBdIC0+IE5ldyAobmV3X3N0b3J5X29mX2pzb24gbmV3X3N0b3J5KVxuICB8IGBBc3NvYyBbIChcInNhbWVfYXNcIiwgYEludCBpbnQpIF0gLT4gU2FtZV9hcyBpbnRcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3Qgc3RvcnlcIiwgeCkpXG5cbmxldCBzdG9yeV9tb2RlX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IENhdXNhbCAtPiBgU3RyaW5nIFwiQ2F1c2FsXCJcbiAgfCBXZWFrIC0+IGBTdHJpbmcgXCJXZWFrXCJcbiAgfCBTdHJvbmcgLT4gYFN0cmluZyBcIlN0cm9uZ1wiXG5cbmxldCBzdG9yeV9tb2RlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJDYXVzYWxcIiAtPiBDYXVzYWxcbiAgfCBgU3RyaW5nIFwiV2Vha1wiIC0+IFdlYWtcbiAgfCBgU3RyaW5nIFwiU3Ryb25nXCIgLT4gU3Ryb25nXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHN0b3J5IG1vZGVcIiwgeCkpXG5cbmxldCB0b19qc29uIGxvZ19pbmZvX3RvX2pzb24gb25lX2NvbXByZXNzaW9uID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcImxvZ19pbmZvXCIsXG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKExpc3QucmV2X21hcFxuICAgICAgICAgICAgIChUcmFjZS5TaW11bGF0aW9uX2luZm8udG9fanNvbiBsb2dfaW5mb190b19qc29uKVxuICAgICAgICAgICAgIChMaXN0LnJldiBvbmVfY29tcHJlc3Npb24ubG9nX2luZm8pKSApO1xuICAgICAgXCJzdG9yeV9tb2RlXCIsIHN0b3J5X21vZGVfdG9fanNvbiBvbmVfY29tcHJlc3Npb24uc3RvcnlfbW9kZTtcbiAgICAgIFwic3RvcnlcIiwgc3RvcnlfdG9fanNvbiBvbmVfY29tcHJlc3Npb24uc3Rvcnk7XG4gICAgXVxuXG5sZXQgb2ZfanNvbiBsb2dfaW5mb19vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDMgLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgbG9nX2luZm8gPVxuICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcImxvZ19pbmZvXCIgbCB3aXRoXG4gICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAgICAgICAgKFRyYWNlLlNpbXVsYXRpb25faW5mby5vZl9qc29uIGxvZ19pbmZvX29mX2pzb24pXG4gICAgICAgICAgICAgICAoTGlzdC5yZXYgbClcbiAgICAgICAgICAgfCBfeSAtPlxuICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgKFwiTm90IGEgY29ycmVjdCBzdG9yeSBjb21wdXRhdGlvblwiLCB4KSkpO1xuICAgICAgICAgc3RvcnkgPSBzdG9yeV9vZl9qc29uIChMaXN0LmFzc29jIFwic3RvcnlcIiBsKTtcbiAgICAgICAgIHN0b3J5X21vZGUgPSBzdG9yeV9tb2RlX29mX2pzb24gKExpc3QuYXNzb2MgXCJzdG9yeV9tb2RlXCIgbCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHN0b3J5IGNvbXB1dGF0aW9uXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBzdG9yeSBjb21wdXRhdGlvblwiLCB4KSlcblxudHlwZSBwaGFzZSA9IFN0YXJ0IHwgSW5wcm9ncmVzcyB8IFN1Y2Nlc3MgfCBGYWlsbHVyZVxuXG5sZXQgc3RhcnQgPSBcInN0YXJ0aW5nIGNvbXB1dGF0aW9uXCJcbmxldCBpbnByb2dyZXNzID0gXCJjb21wdXRhdGlvbiBpbiBwcm9ncmVzc1wiXG5sZXQgc3VjY2VzcyA9IFwiY29tcHV0YXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseVwiXG5sZXQgZmFpbGx1cmUgPSBcImNvbXB1dGF0aW9uIChwYXJ0aWFsbHkpIGZhaWxlZFwiXG5cbmxldCBwaGFzZV90b19qc29uID0gZnVuY3Rpb25cbiAgfCBTdGFydCAtPiBgU3RyaW5nIHN0YXJ0XG4gIHwgSW5wcm9ncmVzcyAtPiBgU3RyaW5nIGlucHJvZ3Jlc3NcbiAgfCBTdWNjZXNzIC0+IGBTdHJpbmcgc3VjY2Vzc1xuICB8IEZhaWxsdXJlIC0+IGBTdHJpbmcgZmFpbGx1cmVcblxubGV0IHBoYXNlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgcyB3aGVuIHMgPSBzdGFydCAtPiBTdGFydFxuICB8IGBTdHJpbmcgcyB3aGVuIHMgPSBpbnByb2dyZXNzIC0+IElucHJvZ3Jlc3NcbiAgfCBgU3RyaW5nIHMgd2hlbiBzID0gc3VjY2VzcyAtPiBTdWNjZXNzXG4gIHwgYFN0cmluZyBzIHdoZW4gcyA9IGZhaWxsdXJlIC0+IEZhaWxsdXJlXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHBoYXNlXCIsIHgpKVxuXG50eXBlIHByb2dyZXNzX2JhciA9IHsgYm9vbDogc3RyaW5nOyBjdXJyZW50OiBpbnQ7IHRvdGFsOiBpbnQgfVxuXG5sZXQgcHJvZ3Jlc3NfYmFyX3RvX2pzb24gcHJvZ3Jlc3NfYmFyID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcInByb2dyZXNzX2JhclwiLFxuICAgICAgICBgQXNzb2NcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcImJvb2xcIiwgYFN0cmluZyBwcm9ncmVzc19iYXIuYm9vbDtcbiAgICAgICAgICAgIFwiY3VycmVudFwiLCBgSW50IHByb2dyZXNzX2Jhci5jdXJyZW50O1xuICAgICAgICAgICAgXCJ0b3RhbFwiLCBgSW50IHByb2dyZXNzX2Jhci50b3RhbDtcbiAgICAgICAgICBdICk7XG4gICAgXVxuXG5sZXQgcHJvZ3Jlc3NfYmFyX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMSAtPlxuICAgIChtYXRjaCBMaXN0LmFzc29jIFwicHJvZ3Jlc3NfYmFyXCIgbCB3aXRoXG4gICAgfCBgQXNzb2MgbCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgICAodHJ5XG4gICAgICAgICB7XG4gICAgICAgICAgIGJvb2wgPSBzdHJpbmdfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImJvb2xcIiBsKTtcbiAgICAgICAgICAgY3VycmVudCA9IGludF9vZl9qc29uIChMaXN0LmFzc29jIFwiY3VycmVudFwiIGwpO1xuICAgICAgICAgICB0b3RhbCA9IGludF9vZl9qc29uIChMaXN0LmFzc29jIFwidG90YWxcIiBsKTtcbiAgICAgICAgIH1cbiAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBwcm9ncmVzcyBiYXJcIiwgeCkpKVxuICAgIHwgeCAtPlxuICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBwcm9ncmVzcyBiYXJcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBwcm9ncmVzcyBiYXJcIiwgeCkpXG5cbnR5cGUgJ2EgbWVzc2FnZSA9XG4gIHwgUGhhc2Ugb2YgcGhhc2UgKiBzdHJpbmdcbiAgfCBQcm9ncmVzcyBvZiBwcm9ncmVzc19iYXJcbiAgfCBTdG9yeSBvZiAnYSBvbmVfY29tcHJlc3Npb25cblxubGV0IG1lc3NhZ2VfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgUGhhc2UgKHAsIG0pIC0+IGBMaXN0IFsgYFN0cmluZyBcIlBIQVNFXCI7IHBoYXNlX3RvX2pzb24gcDsgYFN0cmluZyBtIF1cbiAgfCBQcm9ncmVzcyBwIC0+IGBMaXN0IFsgYFN0cmluZyBcIlBST0dSRVNTXCI7IHByb2dyZXNzX2Jhcl90b19qc29uIHAgXVxuICB8IFN0b3J5IHMgLT4gYExpc3QgWyBgU3RyaW5nIFwiU1RPUllcIjsgdG9fanNvbiAoZnVuIF8gLT4gYE51bGwpIHMgXVxuXG5sZXQgbWVzc2FnZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJQSEFTRVwiOyBwOyBgU3RyaW5nIG0gXSAtPiBQaGFzZSAocGhhc2Vfb2ZfanNvbiBwLCBtKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIlBST0dSRVNTXCI7IHAgXSAtPiBQcm9ncmVzcyAocHJvZ3Jlc3NfYmFyX29mX2pzb24gcClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJTVE9SWVwiOyBzIF0gLT4gU3RvcnkgKG9mX2pzb24gKGZ1biBfIC0+ICgpKSBzKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBzdG9yeSBtZXNzYWdlXCIsIHgpKVxuIiwiKCoqXG4gICogY2Zsb3dfaGFuZGxlci5tbFxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDEzLTA4LTAyIGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0xOSAxNDozMDo0MCBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90LCBDTlJTXG4gICpcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgdHlwZSBDZmxvd19oYW5kbGVyID0gc2lnXG4gIHR5cGUgc29ydF9hbGdvX2Zvcl9zdG9yaWVzXG4gIHR5cGUgY29tcHJlc3Npb25fbW9kZVxuXG4gIHZhbCBnZXRfY2F1c2FsX3RyYWNlIDogY29tcHJlc3Npb25fbW9kZSAtPiBib29sXG4gIHZhbCBnZXRfY2F1c2FsX3RyYWNlX29ubHkgOiBjb21wcmVzc2lvbl9tb2RlIC0+IGJvb2xcbiAgdmFsIGdldF93ZWFrX2NvbXByZXNzaW9uIDogY29tcHJlc3Npb25fbW9kZSAtPiBib29sXG4gIHZhbCBnZXRfc3Ryb25nX2NvbXByZXNzaW9uIDogY29tcHJlc3Npb25fbW9kZSAtPiBib29sXG5cbiAgdHlwZSBwYXJhbWV0ZXIgPSB7XG4gICAgY2FjaGVfc2l6ZTogaW50IG9wdGlvbjtcbiAgICBjdXJyZW50X2NvbXByZXNzaW9uX21vZGU6IFN0b3J5X2pzb24uY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIG9wdGlvbjtcbiAgICBjb21wcmVzc2lvbl9tb2RlOiBjb21wcmVzc2lvbl9tb2RlO1xuICAgIHByaW9yaXRpZXNfd2VhazogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBwcmlvcml0aWVzX3N0cm9uZzogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBwcmlvcml0aWVzX2NhdXNhbDogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBjb21wdXRlX2FsbF9zdG9yaWVzOiBib29sO1xuICAgIHNvcnRfYWxnb19mb3Jfc3Rvcmllczogc29ydF9hbGdvX2Zvcl9zdG9yaWVzO1xuICAgIGxvZ2dlcl9lcnI6IExvZ2dlcnMudDtcbiAgICBsb2dnZXJfcHJvZmlsaW5nOiBMb2dnZXJzLnQ7XG4gICAgbG9nZ2VyX291dDogTG9nZ2Vycy50O1xuICAgIGxvZ2dlcl9zZXJ2ZXI6IExvZ2dlcnMudDtcbiAgICBqc29uX2J1ZmZlcjpcbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gU3RvcnlfanNvbi5tZXNzYWdlIEZpZm8udCByZWYgb3B0aW9uO1xuICAgIGxvZ19zdGVwOiBib29sO1xuICAgIGRlYnVnX21vZGU6IGJvb2w7XG4gICAgbG9nZ2VyX3N0ZXA6IExvZ2dlcnMudDtcbiAgICBrYXNhOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzO1xuICAgIGFsd2F5c19kaXNhbWJpZ3VhdGVfaW5pdGlhbF9zdGF0ZXM6IGJvb2w7XG4gICAgYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXI6IGludCBvcHRpb247XG4gICAgdGltZV9pbmRlcGVuZGVudDogYm9vbDtcbiAgICBibGFja2xpc3RfZXZlbnRzOiBib29sO1xuICAgIHNlcnZlcjogYm9vbDtcbiAgICBpc19zZXJ2ZXJfY2hhbm5lbF9vbjogYm9vbDtcbiAgICBkdW1wOiBzdHJpbmcgLT4gdW5pdDtcbiAgfVxuICAoKiogYSBzdHJ1Y3Qgd2hpY2ggY29udGFpbnMgcGFyYW1ldGVyaXphYmxlIG9wdGlvbnMgKilcblxuICB2YWwgZ2V0X2N1cnJlbnRfY29tcHJlc3Npb25fbW9kZSA6XG4gICAgcGFyYW1ldGVyIC0+IFN0b3J5X2pzb24uY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIG9wdGlvblxuXG4gIHR5cGUgaGFuZGxlciA9IHtcbiAgICAoKmhhbmRsZXIgdG8gaW50ZXJwcmV0IGFic3RyYWN0IHZhbHVlcyopXG4gICAgZW52OiBNb2RlbC50O1xuICAgIHJ1bGVfbmFtZV9jYWNoZTogc3RyaW5nIGFycmF5O1xuICAgIGFnZW50X25hbWVfY2FjaGU6IHN0cmluZyBhcnJheTtcbiAgICBzdGVwc19ieV9jb2x1bW46XG4gICAgICAoaW50ICogUHJlZGljYXRlX21hcHMucHJlZGljYXRlX3ZhbHVlICogYm9vbCkgbGlzdFxuICAgICAgUHJlZGljYXRlX21hcHMuUVByZWRpY2F0ZU1hcC50O1xuICB9XG5cbiAgdHlwZSAnYSB6ZXJvYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gKiAnYVxuXG4gIHR5cGUgKCdhLCAnYikgdW5hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2JcblxuICB0eXBlICgnYSwgJ2IsICdjKSBiaW5hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gKiAnY1xuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0ZXJuYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gKiAnZFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgcXVhdGVybmFyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICAnZCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gKiAnZVxuXG4gIHZhbCBkb19ub3RfYm91bmRfaXR0ZXJhdGlvbnMgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG4gIHZhbCBzZXRfaXR0ZXJhdGlvbl9ib3VuZCA6IHBhcmFtZXRlciAtPiBpbnQgLT4gcGFyYW1ldGVyXG4gIHZhbCBnZXRfYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXIgOiBwYXJhbWV0ZXIgLT4gaW50IG9wdGlvblxuICB2YWwgc2V0X2ZpcnN0X3N0b3J5X3Blcl9vYnMgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG4gIHZhbCBzZXRfYWxsX3N0b3JpZXNfcGVyX29icyA6IHBhcmFtZXRlciAtPiBwYXJhbWV0ZXJcblxuICB2YWwgYnVpbGRfcGFyYW1ldGVyIDpcbiAgICBjYWxsZWRfZnJvbTpSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jYWxsZWRfZnJvbSAtPlxuICAgID9zZW5kX21lc3NhZ2U6KHN0cmluZyAtPiB1bml0KSAtPlxuICAgIG5vbmU6Ym9vbCAtPlxuICAgIHdlYWs6Ym9vbCAtPlxuICAgIHN0cm9uZzpib29sIC0+XG4gICAgdW5pdCAtPlxuICAgIHBhcmFtZXRlclxuXG4gIHZhbCBzdHJpbmdfb2ZfZXhuIDogZXhuIC0+IHN0cmluZyBvcHRpb25cbiAgdmFsIGlzX3NlcnZlcl9tb2RlIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIHNldF9jb21wcmVzc2lvbl93ZWFrIDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgc2V0X2NvbXByZXNzaW9uX3N0cm9uZyA6IHBhcmFtZXRlciAtPiBwYXJhbWV0ZXJcbiAgdmFsIHNldF9jb21wcmVzc2lvbl9ub25lIDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X3ByaW9yaXRpZXMgOiBwYXJhbWV0ZXIgLT4gUHJpb3JpdHkucHJpb3JpdGllcyBvcHRpb25cbiAgdmFsIGdldF9hbGxfc3Rvcmllc19wZXJfb2JzIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIHNldF9sb2dfc3RlcCA6IHBhcmFtZXRlciAtPiBib29sIC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X2xvZ19zdGVwIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIHNldF9kZWJ1Z2dpbmdfbW9kZSA6IHBhcmFtZXRlciAtPiBib29sIC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X2RlYnVnZ2luZ19tb2RlIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIGdldF9wcm9maWxpbmdfbG9nZ2VyIDogcGFyYW1ldGVyIC0+IExvZ2dlcnMudFxuICB2YWwgZ2V0X3NlcnZlcl9jaGFubmVsIDogcGFyYW1ldGVyIC0+IExvZ2dlcnMudFxuICB2YWwgc2h1dF9kb3duX3NlcnZlcl9jaGFubmVsIDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgaXNfc2VydmVyX2NoYW5uZWxfb24gOiBwYXJhbWV0ZXIgLT4gYm9vbFxuICB2YWwgZ2V0X2xvZ2dlciA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnRcbiAgdmFsIHNldF9sb2dnZXIgOiBwYXJhbWV0ZXIgLT4gTG9nZ2Vycy50IC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X291dF9jaGFubmVsIDogcGFyYW1ldGVyIC0+IExvZ2dlcnMudFxuICB2YWwgc2V0X291dF9jaGFubmVsIDogcGFyYW1ldGVyIC0+IExvZ2dlcnMudCAtPiBwYXJhbWV0ZXJcbiAgdmFsIGdldF9kZWJ1Z2dpbmdfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnRcbiAgdmFsIHNldF9kZWJ1Z2dpbmdfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnQgLT4gcGFyYW1ldGVyXG4gIHZhbCBnZXRfa2FzYV9wYXJhbWV0ZXJzIDogcGFyYW1ldGVyIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnNcblxuICB2YWwgc2V0X2thc2FfcGFyYW1ldGVycyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG5cbiAgdmFsIGRvX3dlX3VzZV9idWNrZXRfc29ydCA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCB1c2VfYnVja2V0X3NvcnQgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG4gIHZhbCB1c2VfZnVzaW9uX3NvcnQgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG4gIHZhbCBhbHdheXNfZGlzYW1iaWd1YXRlIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIHNldF9hbHdheXNfZGlzYW1iaWd1YXRlIDogcGFyYW1ldGVyIC0+IGJvb2wgLT4gcGFyYW1ldGVyXG4gIHZhbCBpbml0X2hhbmRsZXIgOiBNb2RlbC50IC0+IGhhbmRsZXJcbiAgdmFsIHN0cmluZ19vZl9ydWxlX2lkIDogaGFuZGxlciAtPiBpbnQgLT4gc3RyaW5nXG4gIHZhbCBzdHJpbmdfb2ZfYWdlbnRfaWQgOiBoYW5kbGVyIC0+IGludCAtPiBzdHJpbmdcblxuICB2YWwgZ2V0X3ByZWRpY2F0ZV9tYXAgOlxuICAgIGhhbmRsZXIgLT5cbiAgICAoaW50ICogUHJlZGljYXRlX21hcHMucHJlZGljYXRlX3ZhbHVlICogYm9vbCkgbGlzdFxuICAgIFByZWRpY2F0ZV9tYXBzLlFQcmVkaWNhdGVNYXAudFxuXG4gIHZhbCBnZXRfaXNfdGltZV9pbmRlcGVuZGVudCA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBnZXRfYmxhY2tsaXN0X2V2ZW50cyA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgOiBwYXJhbWV0ZXIgLT4gc3RyaW5nIC0+IHVuaXRcbiAgdmFsIHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgOiBwYXJhbWV0ZXIgLT4gdW5pdFxuICB2YWwgc2F2ZV9wcm9ncmVzc19iYXIgOiBwYXJhbWV0ZXIgLT4gYm9vbCAqIGludCAqIGludCAqIGludCAtPiB1bml0XG4gIHZhbCByZXNldF9wcm9ncmVzc19iYXIgOiBwYXJhbWV0ZXIgLT4gdW5pdFxuICB2YWwgc2V0X3NhdmVfY3VycmVudF9waGFzZV90aXRsZSA6IHBhcmFtZXRlciAtPiAoc3RyaW5nIC0+IHVuaXQpIC0+IHBhcmFtZXRlclxuICB2YWwgc2V0X3Jlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgOiBwYXJhbWV0ZXIgLT4gKHVuaXQgLT4gdW5pdCkgLT4gcGFyYW1ldGVyXG5cbiAgdmFsIHNldF9zYXZlX3Byb2dyZXNzX2JhciA6XG4gICAgcGFyYW1ldGVyIC0+IChib29sICogaW50ICogaW50ICogaW50IC0+IHVuaXQpIC0+IHBhcmFtZXRlclxuXG4gIHZhbCBzZXRfcmVzZXRfcHJvZ3Jlc3NfYmFyIDogcGFyYW1ldGVyIC0+ICh1bml0IC0+IHVuaXQpIC0+IHBhcmFtZXRlclxuXG4gIHZhbCBzYXZlX2Vycm9yX2xvZyA6XG4gICAgcGFyYW1ldGVyIC0+IEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5tZXRob2RfaGFuZGxlciAtPiB1bml0XG5cbiAgdmFsIHNldF9zYXZlX2Vycm9yX2xvZyA6XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5tZXRob2RfaGFuZGxlciAtPiB1bml0KSAtPlxuICAgIHBhcmFtZXRlclxuXG4gIHZhbCBwdXNoX2pzb24gOlxuICAgIHBhcmFtZXRlciAtPiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIFN0b3J5X2pzb24ubWVzc2FnZSAtPiB1bml0XG5cbiAgdmFsIHBvcF9qc29uIDpcbiAgICBwYXJhbWV0ZXIgLT4gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBTdG9yeV9qc29uLm1lc3NhZ2Ugb3B0aW9uXG5lbmRcblxubW9kdWxlIENmbG93X2hhbmRsZXIgOiBDZmxvd19oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgc29ydF9hbGdvX2Zvcl9zdG9yaWVzID0gQnVja2V0IHwgRnVzaW9uXG5cbiAgdHlwZSBjb21wcmVzc2lvbl9tb2RlID0ge1xuICAgIGNhdXNhbF90cmFjZTogYm9vbDtcbiAgICB3ZWFrX2NvbXByZXNzaW9uOiBib29sO1xuICAgIHN0cm9uZ19jb21wcmVzc2lvbjogYm9vbDtcbiAgfVxuXG4gIGxldCBnZXRfY2F1c2FsX3RyYWNlIHggPSB4LmNhdXNhbF90cmFjZVxuICBsZXQgZ2V0X2NhdXNhbF90cmFjZV9vbmx5IHggPSBub3QgKHgud2Vha19jb21wcmVzc2lvbiB8fCB4LnN0cm9uZ19jb21wcmVzc2lvbilcbiAgbGV0IGdldF93ZWFrX2NvbXByZXNzaW9uIHggPSB4LndlYWtfY29tcHJlc3Npb25cbiAgbGV0IGdldF9zdHJvbmdfY29tcHJlc3Npb24geCA9IHguc3Ryb25nX2NvbXByZXNzaW9uXG5cbiAgdHlwZSBwYXJhbWV0ZXIgPSB7XG4gICAgY2FjaGVfc2l6ZTogaW50IG9wdGlvbjtcbiAgICBjdXJyZW50X2NvbXByZXNzaW9uX21vZGU6IFN0b3J5X2pzb24uY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIG9wdGlvbjtcbiAgICBjb21wcmVzc2lvbl9tb2RlOiBjb21wcmVzc2lvbl9tb2RlO1xuICAgIHByaW9yaXRpZXNfd2VhazogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBwcmlvcml0aWVzX3N0cm9uZzogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBwcmlvcml0aWVzX2NhdXNhbDogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBjb21wdXRlX2FsbF9zdG9yaWVzOiBib29sO1xuICAgIHNvcnRfYWxnb19mb3Jfc3Rvcmllczogc29ydF9hbGdvX2Zvcl9zdG9yaWVzO1xuICAgIGxvZ2dlcl9lcnI6IExvZ2dlcnMudDtcbiAgICBsb2dnZXJfcHJvZmlsaW5nOiBMb2dnZXJzLnQ7XG4gICAgbG9nZ2VyX291dDogTG9nZ2Vycy50O1xuICAgIGxvZ2dlcl9zZXJ2ZXI6IExvZ2dlcnMudDtcbiAgICBqc29uX2J1ZmZlcjpcbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gU3RvcnlfanNvbi5tZXNzYWdlIEZpZm8udCByZWYgb3B0aW9uO1xuICAgIGxvZ19zdGVwOiBib29sO1xuICAgIGRlYnVnX21vZGU6IGJvb2w7XG4gICAgbG9nZ2VyX3N0ZXA6IExvZ2dlcnMudDtcbiAgICBrYXNhOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzO1xuICAgIGFsd2F5c19kaXNhbWJpZ3VhdGVfaW5pdGlhbF9zdGF0ZXM6IGJvb2w7XG4gICAgYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXI6IGludCBvcHRpb247XG4gICAgdGltZV9pbmRlcGVuZGVudDogYm9vbDtcbiAgICBibGFja2xpc3RfZXZlbnRzOiBib29sO1xuICAgIHNlcnZlcjogYm9vbDtcbiAgICBpc19zZXJ2ZXJfY2hhbm5lbF9vbjogYm9vbDtcbiAgICBkdW1wOiBzdHJpbmcgLT4gdW5pdDtcbiAgfVxuXG4gIGxldCBnZXRfY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHBhcmFtZXRlciA9XG4gICAgcGFyYW1ldGVyLmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZVxuXG4gIGxldCBidWlsZF9wYXJhbWV0ZXIgfmNhbGxlZF9mcm9tXG4gICAgICA/KHNlbmRfbWVzc2FnZSA9XG4gICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlciBcIiVzXCIgeDtcbiAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyKSB+bm9uZSB+d2VhayB+c3Ryb25nICgpXG4gICAgICA9XG4gICAgbGV0ICggc2VydmVyLFxuICAgICAgICAgIG91dF9zZXJ2ZXIsXG4gICAgICAgICAgb3V0X2NoYW5uZWwsXG4gICAgICAgICAgb3V0X2NoYW5uZWxfZXJyLFxuICAgICAgICAgIG91dF9jaGFubmVsX3Byb2ZpbGluZyxcbiAgICAgICAgICBsb2dfc3RlcF9jaGFubmVsICkgPVxuICAgICAgbWF0Y2ggY2FsbGVkX2Zyb20gd2l0aFxuICAgICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5TZXJ2ZXIgLT5cbiAgICAgICAgKCB0cnVlLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIH5tb2RlOkxvZ2dlcnMuSnNvbiBzdGRvdXQsXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2luZmluaXRlX2J1ZmZlciB+bW9kZTpMb2dnZXJzLkhUTUwgKCksXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2luZmluaXRlX2J1ZmZlciB+bW9kZTpMb2dnZXJzLkhUTUwgKCksXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2NpcmN1bGFyX2J1ZmZlciB+bW9kZTpMb2dnZXJzLkhUTUwgKCksXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2NpcmN1bGFyX2J1ZmZlciB+bW9kZTpMb2dnZXJzLkhUTUxfVGFidWxhciAoKSApXG4gICAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthU2EgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNpbVxuICAgICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5JbnRlcm5hbGlzZWQgLT5cbiAgICAgICAgbGV0IGNoYW5uZWwgPSBLYXBwYV9maWxlcy5vcGVuX2JyYW5jaF9hbmRfY3V0X2VuZ2luZV9wcm9maWxpbmcgKCkgaW5cbiAgICAgICAgKCBmYWxzZSxcbiAgICAgICAgICBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXIsXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciBGb3JtYXQuZXJyX2Zvcm1hdHRlcixcbiAgICAgICAgICBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyIEZvcm1hdC5lcnJfZm9ybWF0dGVyLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXJcbiAgICAgICAgICAgIChGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGNoYW5uZWwpLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXIgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgKVxuICAgIGluXG4gICAge1xuICAgICAgc2VydmVyO1xuICAgICAgaXNfc2VydmVyX2NoYW5uZWxfb24gPSBzZXJ2ZXI7XG4gICAgICBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgPSBOb25lO1xuICAgICAgcHJpb3JpdGllc193ZWFrID0gUHJpb3JpdHkud2VhaztcbiAgICAgIHByaW9yaXRpZXNfc3Ryb25nID0gUHJpb3JpdHkuc3Ryb25nO1xuICAgICAgcHJpb3JpdGllc19jYXVzYWwgPSBQcmlvcml0eS5jYXVzYWw7XG4gICAgICBjb21wdXRlX2FsbF9zdG9yaWVzID0gZmFsc2U7XG4gICAgICBzb3J0X2FsZ29fZm9yX3N0b3JpZXMgPSBCdWNrZXQ7XG4gICAgICBsb2dnZXJfc2VydmVyID0gb3V0X3NlcnZlcjtcbiAgICAgIGxvZ2dlcl9vdXQgPSBvdXRfY2hhbm5lbDtcbiAgICAgIGxvZ2dlcl9lcnIgPSBvdXRfY2hhbm5lbF9lcnI7XG4gICAgICBsb2dnZXJfcHJvZmlsaW5nID0gb3V0X2NoYW5uZWxfcHJvZmlsaW5nO1xuICAgICAganNvbl9idWZmZXIgPSBOb25lO1xuICAgICAgY29tcHJlc3Npb25fbW9kZSA9XG4gICAgICAgIHtcbiAgICAgICAgICBjYXVzYWxfdHJhY2UgPSBub25lO1xuICAgICAgICAgIHdlYWtfY29tcHJlc3Npb24gPSB3ZWFrO1xuICAgICAgICAgIHN0cm9uZ19jb21wcmVzc2lvbiA9IHN0cm9uZztcbiAgICAgICAgfTtcbiAgICAgIGNhY2hlX3NpemUgPSBQYXJhbWV0ZXIuZ2V0X2NhY2hlX3NpemUgKCk7XG4gICAgICBkZWJ1Z19tb2RlID0gZmFsc2U7XG4gICAgICBsb2dfc3RlcCA9IHRydWU7XG4gICAgICBsb2dnZXJfc3RlcCA9IGxvZ19zdGVwX2NoYW5uZWw7XG4gICAgICBrYXNhID0gUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcGFyYW1ldGVycyB+Y2FsbGVkX2Zyb20gKCk7XG4gICAgICBhbHdheXNfZGlzYW1iaWd1YXRlX2luaXRpYWxfc3RhdGVzID0gdHJ1ZTtcbiAgICAgIGJvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyID0gTm9uZTtcbiAgICAgIHRpbWVfaW5kZXBlbmRlbnQgPSAhUGFyYW1ldGVyLnRpbWVfaW5kZXBlbmRlbnQ7XG4gICAgICBibGFja2xpc3RfZXZlbnRzID0gIVBhcmFtZXRlci5ibGFja2xpc3RfZXZlbnRzO1xuICAgICAgZHVtcCA9IHNlbmRfbWVzc2FnZTtcbiAgICB9XG5cbiAgbGV0IHNldF9jb21wcmVzc2lvbl93ZWFrIHAgPVxuICAgIHsgcCB3aXRoIGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSA9IFNvbWUgU3RvcnlfanNvbi5XZWFrIH1cblxuICBsZXQgc2V0X2NvbXByZXNzaW9uX3N0cm9uZyBwID1cbiAgICB7IHAgd2l0aCBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgPSBTb21lIFN0b3J5X2pzb24uU3Ryb25nIH1cblxuICBsZXQgc2V0X2NvbXByZXNzaW9uX25vbmUgcCA9XG4gICAgeyBwIHdpdGggY3VycmVudF9jb21wcmVzc2lvbl9tb2RlID0gU29tZSBTdG9yeV9qc29uLkNhdXNhbCB9XG5cbiAgdHlwZSBoYW5kbGVyID0ge1xuICAgIGVudjogTW9kZWwudDtcbiAgICBydWxlX25hbWVfY2FjaGU6IHN0cmluZyBhcnJheTtcbiAgICBhZ2VudF9uYW1lX2NhY2hlOiBzdHJpbmcgYXJyYXk7XG4gICAgc3RlcHNfYnlfY29sdW1uOlxuICAgICAgKGludCAqIFByZWRpY2F0ZV9tYXBzLnByZWRpY2F0ZV92YWx1ZSAqIGJvb2wpIGxpc3RcbiAgICAgIFByZWRpY2F0ZV9tYXBzLlFQcmVkaWNhdGVNYXAudDtcbiAgfVxuXG4gIHR5cGUgJ2EgemVyb2FyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2FcblxuICB0eXBlICgnYSwgJ2IpIHVuYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqICdiXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgYmluYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2NcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdGVybmFyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2RcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHF1YXRlcm5hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgJ2QgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2VcblxuICBsZXQgaW5pdF9oYW5kbGVyIGVudiA9XG4gICAgbGV0IG5fcnVsZXMgPSBNb2RlbC5uYl9ydWxlcyBlbnYgaW5cbiAgICBsZXQgcnVsZV9uYW1lX2NhY2hlID0gQXJyYXkubWFrZSBuX3J1bGVzIFwiXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kZWwuZm9sZF9ydWxlc1xuICAgICAgICAoZnVuIHggKCkgciAtPlxuICAgICAgICAgIHJ1bGVfbmFtZV9jYWNoZS4oeCkgPC1cbiAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgICAgKE1vZGVsLnByaW50X2FzdF9ydWxlIH5ub0NvdW50ZXJzOmZhbHNlIH5lbnYpXG4gICAgICAgICAgICAgIHIuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZSlcbiAgICAgICAgKCkgZW52XG4gICAgaW5cbiAgICBsZXQgbl9hZ2VudHMgPSBTaWduYXR1cmUuc2l6ZSAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpIGluXG4gICAgbGV0IGFnZW50X25hbWVfY2FjaGUgPVxuICAgICAgQXJyYXkuaW5pdCBuX2FnZW50cyAoZnVuIHggLT5cbiAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChNb2RlbC5wcmludF9hZ2VudCB+ZW52KSB4KVxuICAgIGluXG4gICAgbGV0IHN0ZXBzX2J5X2NvbHVtbiA9IFByZWRpY2F0ZV9tYXBzLlFQcmVkaWNhdGVNYXAuZW1wdHkgMCBpblxuICAgIHsgZW52OyBydWxlX25hbWVfY2FjaGU7IGFnZW50X25hbWVfY2FjaGU7IHN0ZXBzX2J5X2NvbHVtbiB9XG5cbiAgbGV0IHN0cmluZ19vZl9leG4gX3ggPSBTb21lIFwiXCJcblxuICBsZXQgZ2V0X3ByaW9yaXRpZXMgcGFyYW1ldGVyID1cbiAgICBtYXRjaCBwYXJhbWV0ZXIuY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBTdG9yeV9qc29uLldlYWsgLT4gU29tZSBwYXJhbWV0ZXIucHJpb3JpdGllc193ZWFrXG4gICAgfCBTb21lIFN0b3J5X2pzb24uU3Ryb25nIC0+IFNvbWUgcGFyYW1ldGVyLnByaW9yaXRpZXNfc3Ryb25nXG4gICAgfCBTb21lIFN0b3J5X2pzb24uQ2F1c2FsIC0+IFNvbWUgcGFyYW1ldGVyLnByaW9yaXRpZXNfY2F1c2FsXG5cbiAgbGV0IHNldF9maXJzdF9zdG9yeV9wZXJfb2JzIHBhcmFtZXRlciA9XG4gICAgeyBwYXJhbWV0ZXIgd2l0aCBjb21wdXRlX2FsbF9zdG9yaWVzID0gZmFsc2UgfVxuXG4gIGxldCBzZXRfYWxsX3N0b3JpZXNfcGVyX29icyBwYXJhbWV0ZXIgPVxuICAgIHsgcGFyYW1ldGVyIHdpdGggY29tcHV0ZV9hbGxfc3RvcmllcyA9IHRydWUgfVxuXG4gIGxldCBnZXRfYWxsX3N0b3JpZXNfcGVyX29icyBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuY29tcHV0ZV9hbGxfc3Rvcmllc1xuICBsZXQgZ2V0X2RlYnVnZ2luZ19tb2RlIHBhcmFtZXRlciA9IHBhcmFtZXRlci5kZWJ1Z19tb2RlXG4gIGxldCBzZXRfZGVidWdnaW5nX21vZGUgcGFyYW1ldGVyIGJvb2wgPSB7IHBhcmFtZXRlciB3aXRoIGRlYnVnX21vZGUgPSBib29sIH1cbiAgbGV0IGdldF9sb2dfc3RlcCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIubG9nX3N0ZXBcbiAgbGV0IHNldF9sb2dfc3RlcCBwYXJhbWV0ZXIgYm9vbCA9IHsgcGFyYW1ldGVyIHdpdGggbG9nX3N0ZXAgPSBib29sIH1cbiAgbGV0IGdldF9sb2dnZXIgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmxvZ2dlcl9zdGVwXG4gIGxldCBzZXRfbG9nZ2VyIHBhcmFtZXRlciBmbXQgPSB7IHBhcmFtZXRlciB3aXRoIGxvZ2dlcl9zdGVwID0gZm10IH1cbiAgbGV0IGdldF9vdXRfY2hhbm5lbCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIubG9nZ2VyX291dFxuICBsZXQgc2V0X291dF9jaGFubmVsIHBhcmFtZXRlciBmbXQgPSB7IHBhcmFtZXRlciB3aXRoIGxvZ2dlcl9vdXQgPSBmbXQgfVxuICBsZXQgZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlciA9IHBhcmFtZXRlci5sb2dnZXJfZXJyXG4gIGxldCBzZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyIGZtdCA9IHsgcGFyYW1ldGVyIHdpdGggbG9nZ2VyX2VyciA9IGZtdCB9XG4gIGxldCBnZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlciA9IHBhcmFtZXRlci5rYXNhXG5cbiAgbGV0IHNldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyIHBhcmFtZXRlcicgPVxuICAgIHsgcGFyYW1ldGVyJyB3aXRoIGthc2EgPSBwYXJhbWV0ZXIgfVxuXG4gIGxldCBkb193ZV91c2VfYnVja2V0X3NvcnQgcGFyYW1ldGVyID0gcGFyYW1ldGVyLnNvcnRfYWxnb19mb3Jfc3RvcmllcyA9IEJ1Y2tldFxuXG4gIGxldCB1c2VfYnVja2V0X3NvcnQgcGFyYW1ldGVyID1cbiAgICB7IHBhcmFtZXRlciB3aXRoIHNvcnRfYWxnb19mb3Jfc3RvcmllcyA9IEJ1Y2tldCB9XG5cbiAgbGV0IHVzZV9mdXNpb25fc29ydCBwYXJhbWV0ZXIgPVxuICAgIHsgcGFyYW1ldGVyIHdpdGggc29ydF9hbGdvX2Zvcl9zdG9yaWVzID0gRnVzaW9uIH1cblxuICBsZXQgYWx3YXlzX2Rpc2FtYmlndWF0ZSBwYXJhbWV0ZXIgPVxuICAgIHBhcmFtZXRlci5hbHdheXNfZGlzYW1iaWd1YXRlX2luaXRpYWxfc3RhdGVzXG5cbiAgbGV0IHNldF9hbHdheXNfZGlzYW1iaWd1YXRlIHBhcmFtZXRlciBib29sID1cbiAgICB7IHBhcmFtZXRlciB3aXRoIGFsd2F5c19kaXNhbWJpZ3VhdGVfaW5pdGlhbF9zdGF0ZXMgPSBib29sIH1cblxuICBsZXQgZG9fbm90X2JvdW5kX2l0dGVyYXRpb25zIHBhcmFtZXRlciA9XG4gICAgeyBwYXJhbWV0ZXIgd2l0aCBib3VuZF9vbl9pdHRlcmF0aW9uX251bWJlciA9IE5vbmUgfVxuXG4gIGxldCBzZXRfaXR0ZXJhdGlvbl9ib3VuZCBwYXJhbWV0ZXIgaW50ID1cbiAgICB7IHBhcmFtZXRlciB3aXRoIGJvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyID0gU29tZSBpbnQgfVxuXG4gIGxldCBnZXRfYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXIgcGFyYW1ldGVyID1cbiAgICBwYXJhbWV0ZXIuYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXJcblxuICBsZXQgZ2V0X3Byb2ZpbGluZ19sb2dnZXIgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmxvZ2dlcl9wcm9maWxpbmdcbiAgbGV0IHN0cmluZ19vZl9ydWxlX2lkIGhhbmRsZXIgaSA9IGhhbmRsZXIucnVsZV9uYW1lX2NhY2hlLihpKVxuICBsZXQgc3RyaW5nX29mX2FnZW50X2lkIGhhbmRsZXIgaSA9IGhhbmRsZXIuYWdlbnRfbmFtZV9jYWNoZS4oaSlcbiAgbGV0IGdldF9wcmVkaWNhdGVfbWFwIGhhbmRsZXIgPSBoYW5kbGVyLnN0ZXBzX2J5X2NvbHVtblxuICBsZXQgZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQgcGFyYW1ldGVyID0gcGFyYW1ldGVyLnRpbWVfaW5kZXBlbmRlbnRcbiAgbGV0IGdldF9ibGFja2xpc3RfZXZlbnRzIHBhcmFtZXRlciA9IHBhcmFtZXRlci5ibGFja2xpc3RfZXZlbnRzXG4gIGxldCBpc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuc2VydmVyXG4gIGxldCBnZXRfc2VydmVyX2NoYW5uZWwgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmxvZ2dlcl9zZXJ2ZXJcblxuICBsZXQgc2h1dF9kb3duX3NlcnZlcl9jaGFubmVsIHBhcmFtZXRlciA9XG4gICAge1xuICAgICAgcGFyYW1ldGVyIHdpdGhcbiAgICAgIGxvZ2dlcl9zZXJ2ZXIgPSBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXI7XG4gICAgICBpc19zZXJ2ZXJfY2hhbm5lbF9vbiA9IGZhbHNlO1xuICAgIH1cblxuICBsZXQgaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyID0gcGFyYW1ldGVyLmlzX3NlcnZlcl9jaGFubmVsX29uXG5cbiAgbGV0IHNhdmVfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgeCA9XG4gICAgcGFyYW1ldGVyLmthc2EuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIHhcblxuICBsZXQgZHVtcF9qc29uIHBhcmFtZXRlciBtZXNzYWdlID1cbiAgICBpZiBpc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXIgdGhlblxuICAgICAgcGFyYW1ldGVyLmR1bXBcbiAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgKFN0b3J5X2pzb24ubWVzc2FnZV90b19qc29uIG1lc3NhZ2UpKVxuXG4gIGxldCBzYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgeCA9XG4gICAgbGV0IGIsIGksIF9qLCBuX3N0b3JpZXMgPSB4IGluXG4gICAgbGV0ICgpID1cbiAgICAgIGR1bXBfanNvbiBwYXJhbWV0ZXJcbiAgICAgICAgKFN0b3J5X2pzb24uUHJvZ3Jlc3NcbiAgICAgICAgICAge1xuICAgICAgICAgICAgIFN0b3J5X2pzb24uYm9vbCA9XG4gICAgICAgICAgICAgICAoaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICBcInRydWVcIlxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIFwiZmFsc2VcIik7XG4gICAgICAgICAgICAgU3RvcnlfanNvbi5jdXJyZW50ID0gaTtcbiAgICAgICAgICAgICBTdG9yeV9qc29uLnRvdGFsID0gbl9zdG9yaWVzO1xuICAgICAgICAgICB9KVxuICAgIGluXG4gICAgcGFyYW1ldGVyLmthc2EuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9wcm9ncmVzc19iYXIgeFxuXG4gIGxldCByZXNldF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyID1cbiAgICBwYXJhbWV0ZXIua2FzYS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9wcm9ncmVzc19iYXIgKClcblxuICBsZXQgcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgPVxuICAgIHBhcmFtZXRlci5rYXNhLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgKClcblxuICBsZXQgc2V0X3NhdmVfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgZiA9XG4gICAge1xuICAgICAgcGFyYW1ldGVyIHdpdGhcbiAgICAgIGthc2EgPVxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1ldGVyLmthc2Egd2l0aFxuICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfY3VycmVudF9waGFzZV90aXRsZSA9IGY7XG4gICAgICAgIH07XG4gICAgfVxuXG4gIGxldCBzZXRfcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgZiA9XG4gICAge1xuICAgICAgcGFyYW1ldGVyIHdpdGhcbiAgICAgIGthc2EgPVxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1ldGVyLmthc2Egd2l0aFxuICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgPSBmO1xuICAgICAgICB9O1xuICAgIH1cblxuICBsZXQgc2V0X3NhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciBmID1cbiAgICB7XG4gICAgICBwYXJhbWV0ZXIgd2l0aFxuICAgICAga2FzYSA9XG4gICAgICAgIHsgcGFyYW1ldGVyLmthc2Egd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX3Byb2dyZXNzX2JhciA9IGYgfTtcbiAgICB9XG5cbiAgbGV0IHNldF9yZXNldF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyIGYgPVxuICAgIHtcbiAgICAgIHBhcmFtZXRlciB3aXRoXG4gICAgICBrYXNhID1cbiAgICAgICAgeyBwYXJhbWV0ZXIua2FzYSB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X3Byb2dyZXNzX2JhciA9IGYgfTtcbiAgICB9XG5cbiAgbGV0IHNhdmVfZXJyb3JfbG9nIHBhcmFtZXRlciB4ID1cbiAgICBwYXJhbWV0ZXIua2FzYS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2Vycm9yX2xpc3QgeFxuXG4gIGxldCBzZXRfc2F2ZV9lcnJvcl9sb2cgcGFyYW1ldGVyIGYgPVxuICAgIHtcbiAgICAgIHBhcmFtZXRlciB3aXRoXG4gICAgICBrYXNhID0geyBwYXJhbWV0ZXIua2FzYSB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfZXJyb3JfbGlzdCA9IGYgfTtcbiAgICB9XG5cbiAgbGV0IHB1c2hfanNvbiBwYXJhbWV0ZXIganNvbiA9XG4gICAgbWF0Y2ggcGFyYW1ldGVyLmpzb25fYnVmZmVyIHdpdGhcbiAgICB8IE5vbmUgLT4gZHVtcF9qc29uIHBhcmFtZXRlciBqc29uXG4gICAgfCBTb21lIHJlZiAtPiByZWYgOj0gRmlmby5wdXNoIGpzb24gIXJlZlxuXG4gIGxldCBwb3BfanNvbiBwYXJhbWV0ZXIgPVxuICAgIG1hdGNoIHBhcmFtZXRlci5qc29uX2J1ZmZlciB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcmVmIC0+XG4gICAgICBsZXQgZmlmbywgZWx0X29wdCA9IEZpZm8ucG9wICFyZWYgaW5cbiAgICAgIGxldCAoKSA9IHJlZiA6PSBmaWZvIGluXG4gICAgICBlbHRfb3B0XG5lbmRcbiIsIigqKlxuICAqIGthcHBhX2luc3RhbnRpYXRpb24ubWxcbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjkvMDgvMjAxMVxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAwMi8wOC8yMDE1XG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBkZWJ1Z19tb2RlID0gZmFsc2VcblxubGV0IGNvbXBvc2Vfd2l0aF9oYW5kbGVyIGYgZyBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciB4ID1cbiAgbGV0IGVycm9yLCB5ID0gZyBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciB4IGluXG4gIGYgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgeVxuXG5tb2R1bGUgUCA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHNcblxubW9kdWxlIHR5cGUgQ2Zsb3dfc2lnbmF0dXJlID0gc2lnXG4gIG1vZHVsZSBIIDogQ2Zsb3dfaGFuZGxlci5DZmxvd19oYW5kbGVyXG5cbiAgdHlwZSBhZ2VudF9pZCA9IGludFxuXG4gIG1vZHVsZSBBZ2VudElkU2V0IDogU2V0TWFwLlNldCB3aXRoIHR5cGUgZWx0ID0gYWdlbnRfaWRcblxuICB0eXBlIGludGVybmFsX3N0YXRlID0gaW50XG4gIHR5cGUgc2lkZV9lZmZlY3QgPSBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uc2l0ZSBsaXN0XG5cbiAgdmFsIGVtcHR5X3NpZGVfZWZmZWN0IDogc2lkZV9lZmZlY3RcblxuICB2YWwgYWdlbnRfbmFtZV9vZl9iaW5kaW5nX3R5cGUgOlxuICAgIEluc3RhbnRpYXRpb24uYmluZGluZ190eXBlIC0+IEluc3RhbnRpYXRpb24uYWdlbnRfbmFtZVxuXG4gIHZhbCBzaXRlX25hbWVfb2ZfYmluZGluZ190eXBlIDpcbiAgICBJbnN0YW50aWF0aW9uLmJpbmRpbmdfdHlwZSAtPiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuXG4gIHZhbCBhZ2VudF9pZF9vZl9hZ2VudCA6IEluc3RhbnRpYXRpb24uY29uY3JldGUgLT4gaW50XG4gIHZhbCBhZ2VudF9uYW1lX29mX2FnZW50IDogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSAtPiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWVcblxuICB2YWwgYWdlbnRfb2Zfc2l0ZSA6XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgLT4gSW5zdGFudGlhdGlvbi5jb25jcmV0ZVxuXG4gIHZhbCBhZ2VudF9pZF9vZl9zaXRlIDogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgLT4gaW50XG5cbiAgdmFsIGFnZW50X25hbWVfb2Zfc2l0ZSA6XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgLT4gSW5zdGFudGlhdGlvbi5hZ2VudF9uYW1lXG5cbiAgdmFsIHNpdGVfbmFtZV9vZl9zaXRlIDpcbiAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uc2l0ZSAtPiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuXG4gIHZhbCBidWlsZF9ncmlkIDpcbiAgICAoVHJhY2Uuc3RlcCAqIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlIGxpc3QpIGxpc3QgLT5cbiAgICBib29sIC0+XG4gICAgSC5oYW5kbGVyIC0+XG4gICAgQ2F1c2FsLmdyaWRcblxuICB2YWwgcHJpbnRfc2lkZV9lZmZlY3QgOiBMb2dnZXJzLnQgLT4gc2lkZV9lZmZlY3QgLT4gdW5pdFxuXG4gIHZhbCBzaWRlX2VmZmVjdF9vZl9saXN0IDpcbiAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uc2l0ZSBsaXN0IC0+IHNpZGVfZWZmZWN0XG5cbiAgdmFsIGdldF9pZF9vZl9yZWZpbmVkX3N0ZXAgOiBUcmFjZS5zdGVwIC0+IGludCBvcHRpb25cbiAgdmFsIGdldF90aW1lX29mX3JlZmluZWRfc3RlcCA6IFRyYWNlLnN0ZXAgLT4gZmxvYXQgb3B0aW9uXG5cbiAgdmFsIGxldmVsX29mX2V2ZW50IDpcbiAgICBQcmlvcml0eS5wcmlvcml0aWVzIG9wdGlvbiAtPlxuICAgIChUcmFjZS5zdGVwLCBhZ2VudF9pZCAtPiBib29sLCBQcmlvcml0eS5sZXZlbCkgSC5iaW5hcnlcblxuICB2YWwgZGlzYW1iaWd1YXRlIDogVHJhY2UudCAtPiBUcmFjZS50XG4gIHZhbCBjbGVhbl9ldmVudHMgOiBUcmFjZS50IC0+IFRyYWNlLnRcbiAgdmFsIGZpbGxfc2lwaG9uIDogVHJhY2UudCAtPiBUcmFjZS50XG4gIHZhbCBzcGxpdF9pbml0IDogVHJhY2UudCAtPiBUcmFjZS50XG4gIHZhbCBhZ2VudF9pZF9pbl9vYnMgOiAoVHJhY2Uuc3RlcCwgQWdlbnRJZFNldC50KSBILnVuYXJ5XG5lbmRcblxubW9kdWxlIENmbG93X2xpbmtlciA6IENmbG93X3NpZ25hdHVyZSA9IHN0cnVjdFxuICBtb2R1bGUgSCA9IENmbG93X2hhbmRsZXIuQ2Zsb3dfaGFuZGxlclxuICBtb2R1bGUgUEkgPSBJbnN0YW50aWF0aW9uXG5cbiAgdHlwZSBhZ2VudF9pZCA9IGludFxuICB0eXBlIHNpZGVfZWZmZWN0ID0gUEkuY29uY3JldGUgUEkuc2l0ZSBsaXN0XG5cbiAgbW9kdWxlIEFnZW50SWRNYXAgPSBNb2RzLkludE1hcFxuICBtb2R1bGUgQWdlbnRJZFNldCA9IE1vZHMuSW50U2V0XG4gIG1vZHVsZSBTaXRlTWFwID0gTW9kcy5JbnRNYXBcbiAgbW9kdWxlIFNpdGVTZXQgPSBNb2RzLkludFNldFxuXG4gIHR5cGUgaW50ZXJuYWxfc3RhdGUgPSBpbnRcblxuICBsZXQgZW1wdHlfc2lkZV9lZmZlY3QgPSBbXVxuICBsZXQgc2l0ZV9uYW1lX29mX2JpbmRpbmdfdHlwZSA9IHNuZFxuICBsZXQgYWdlbnRfbmFtZV9vZl9iaW5kaW5nX3R5cGUgPSBmc3RcbiAgbGV0IGFnZW50X2lkX29mX2FnZW50ID0gZnN0XG4gIGxldCBhZ2VudF9uYW1lX29mX2FnZW50ID0gc25kXG4gIGxldCBhZ2VudF9vZl9zaXRlID0gZnN0XG4gIGxldCBhZ2VudF9pZF9vZl9zaXRlIHggPSBhZ2VudF9pZF9vZl9hZ2VudCBAQCBhZ2VudF9vZl9zaXRlIHhcbiAgbGV0IGFnZW50X25hbWVfb2Zfc2l0ZSB4ID0gYWdlbnRfbmFtZV9vZl9hZ2VudCBAQCBhZ2VudF9vZl9zaXRlIHhcbiAgbGV0IHNpdGVfbmFtZV9vZl9zaXRlID0gc25kXG5cbiAgbGV0IGdldF9nZW5fb2ZfcmVmaW5lZF9zdGVwIGYgeCA9XG4gICAgbWF0Y2ggVHJhY2Uuc2ltdWxhdGlvbl9pbmZvX29mX3N0ZXAgeCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgYSAtPiBTb21lIChmIGEpXG5cbiAgbGV0IGdldF90aW1lX29mX3JlZmluZWRfc3RlcCB4ID1cbiAgICBnZXRfZ2VuX29mX3JlZmluZWRfc3RlcCAoZnVuIHggLT4geC5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZSkgeFxuXG4gIGxldCBnZXRfaWRfb2ZfcmVmaW5lZF9zdGVwIHggPVxuICAgIGdldF9nZW5fb2ZfcmVmaW5lZF9zdGVwIChmdW4geCAtPiB4LlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudCkgeFxuXG4gIGxldCBidWlsZF9ncmlkIGxpc3QgYm9vbCBoYW5kbGVyID1cbiAgICBsZXQgZW52ID0gaGFuZGxlci5ILmVudiBpblxuICAgIGxldCBlbXB0eV9zZXQgPSBbXSBpblxuICAgIGxldCBncmlkID0gQ2F1c2FsLmVtcHR5X2dyaWQgKCkgaW5cbiAgICBsZXQgZ3JpZCwgXywgXywgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChncmlkLCBzaWRlX2VmZmVjdCwgY291bnRlciwgc3VicykgKGssIHNpZGUpIC0+XG4gICAgICAgICAgbGV0IG1heWJlX3NpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICBmdW4gc2UgLT5cbiAgICAgICAgICAgIHNlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGZ1biBfIC0+XG4gICAgICAgICAgICBMaXN0LnJldl9hcHBlbmQgc2lkZV9lZmZlY3Qgc2lkZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyYW5zbGF0ZSB5ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IHkgeSBzdWJzIGluXG4gICAgICAgICAgbWF0Y2ggayB3aXRoXG4gICAgICAgICAgfCBUcmFjZS5SdWxlIChpZCwgZXZlbnQsIGluZm8pIC0+XG4gICAgICAgICAgICBsZXQgZXZlbnQnID0gUEkuc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IHRyYW5zbGF0ZSBldmVudCBpblxuICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICAgICAgICBtYXliZV9zaWRlX2VmZmVjdCBldmVudCcuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBDYXVzYWwucmVjb3JkXG4gICAgICAgICAgICAgICAgKCBUcmFjZS5SVUxFIGlkLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gZXZlbnQnLkluc3RhbnRpYXRpb24udGVzdHM7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGV2ZW50Jy5JbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQnLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0O1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQnLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGluZm8gKVxuICAgICAgICAgICAgICAgIGNvdW50ZXIgZW52IGdyaWQsXG4gICAgICAgICAgICAgIGVtcHR5X3NldCxcbiAgICAgICAgICAgICAgY291bnRlciArIDEsXG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmVtcHR5IClcbiAgICAgICAgICB8IFRyYWNlLlBlcnQgKGlkLCBldmVudCwgaW5mbykgLT5cbiAgICAgICAgICAgIGxldCBldmVudCcgPSBQSS5zdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfZXZlbnQgdHJhbnNsYXRlIGV2ZW50IGluXG4gICAgICAgICAgICBsZXQgc2lkZV9lZmZlY3RzX2RzdCA9XG4gICAgICAgICAgICAgIG1heWJlX3NpZGVfZWZmZWN0IGV2ZW50Jy5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3RcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIENhdXNhbC5yZWNvcmRcbiAgICAgICAgICAgICAgICAoIFRyYWNlLlBFUlQgaWQsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24udGVzdHMgPSBldmVudCcuSW5zdGFudGlhdGlvbi50ZXN0cztcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5hY3Rpb25zID0gZXZlbnQnLkluc3RhbnRpYXRpb24uYWN0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgICAgICAgICAgICAgICAgICBldmVudCcuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjO1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgICAgICAgICAgICAgICAgICBldmVudCcuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHM7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgaW5mbyApXG4gICAgICAgICAgICAgICAgY291bnRlciBlbnYgZ3JpZCxcbiAgICAgICAgICAgICAgZW1wdHlfc2V0LFxuICAgICAgICAgICAgICBjb3VudGVyICsgMSxcbiAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuZW1wdHkgKVxuICAgICAgICAgIHwgVHJhY2UuT2JzIChpZCwgdGVzdHMsIGluZm8pIC0+XG4gICAgICAgICAgICBsZXQgdGVzdHMnID1cbiAgICAgICAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgIChMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgICAgICAgICAgKFBJLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV90ZXN0IHRyYW5zbGF0ZSkpXG4gICAgICAgICAgICAgICAgdGVzdHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIENhdXNhbC5yZWNvcmRfb2JzIChpZCwgdGVzdHMnLCBpbmZvKSBzaWRlX2VmZmVjdCBjb3VudGVyIGdyaWQsXG4gICAgICAgICAgICAgIG1heWJlX3NpZGVfZWZmZWN0IGVtcHR5X3NldCxcbiAgICAgICAgICAgICAgY291bnRlciArIDEsXG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmVtcHR5IClcbiAgICAgICAgICB8IFRyYWNlLlN1YnMgKGEsIGIpIC0+XG4gICAgICAgICAgICBncmlkLCBzaWRlX2VmZmVjdCwgY291bnRlciwgTW9kcy5JbnRNYXAuYWRkIGEgYiBzdWJzXG4gICAgICAgICAgfCBUcmFjZS5Jbml0IGFjdGlvbnMgLT5cbiAgICAgICAgICAgIGxldCBhY3Rpb25zJyA9XG4gICAgICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAoUEkuc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgYWN0aW9uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggQ2F1c2FsLnJlY29yZF9pbml0XG4gICAgICAgICAgICAgICAgKFRyYWNlLmNyZWF0aW9uX29mX2FjdGlvbnMgc25kIGFjdGlvbnMnLCBhY3Rpb25zJylcbiAgICAgICAgICAgICAgICBjb3VudGVyIGVudiBncmlkLFxuICAgICAgICAgICAgICBzaWRlX2VmZmVjdCxcbiAgICAgICAgICAgICAgY291bnRlciArIDEsXG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmVtcHR5IClcbiAgICAgICAgICB8IFRyYWNlLkR1bW15IF8gLT4gZ3JpZCwgbWF5YmVfc2lkZV9lZmZlY3QgZW1wdHlfc2V0LCBjb3VudGVyLCBzdWJzKVxuICAgICAgICAoZ3JpZCwgZW1wdHlfc2V0LCAxLCBNb2RzLkludE1hcC5lbXB0eSlcbiAgICAgICAgbGlzdFxuICAgIGluXG4gICAgZ3JpZFxuXG4gIGxldCBjbGVhbl9ldmVudHMgPVxuICAgIExpc3QuZmlsdGVyIChmdW5jdGlvblxuICAgICAgfCBUcmFjZS5SdWxlIF8gfCBUcmFjZS5QZXJ0IF8gfCBUcmFjZS5PYnMgXyB8IFRyYWNlLkluaXQgXyAtPiB0cnVlXG4gICAgICB8IFRyYWNlLkR1bW15IF8gfCBUcmFjZS5TdWJzIF8gLT4gZmFsc2UpXG5cbiAgbGV0IHByaW50X3NpZGVfZWZmZWN0IGxvZyA9XG4gICAgTGlzdC5pdGVyIChmdW4gKChhLCBfKSwgYikgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiglaSwlaSksXCIgYSBiKVxuXG4gIGxldCBzaWRlX2VmZmVjdF9vZl9saXN0IGwgPSBsXG5cbiAgbGV0IGxldmVsX29mX2V2ZW50IHByaW9yaXR5X29wdCBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgZSBzZXQgPVxuICAgIG1hdGNoIHByaW9yaXR5X29wdCwgSC5nZXRfcHJpb3JpdGllcyBwYXJhbWV0ZXIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIFByaW9yaXR5LmhpZ2hlc3RcbiAgICB8IFNvbWUgcHJpb3JpdGllcywgXyB8IE5vbmUsIFNvbWUgcHJpb3JpdGllcyAtPlxuICAgICAgKG1hdGNoIGUgd2l0aFxuICAgICAgfCBUcmFjZS5PYnMgXyAtPiBlcnJvciwgbG9nX2luZm8sIHByaW9yaXRpZXMuUHJpb3JpdHkub3RoZXJfZXZlbnRzXG4gICAgICB8IFRyYWNlLlJ1bGUgXyB8IFRyYWNlLlBlcnQgXyAtPlxuICAgICAgICBsZXQgYWN0aW9ucyA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBlIGluXG4gICAgICAgIGxldCBwcmlvcml0eSA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gcHJpb3JpdHkgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBQSS5DcmVhdGUgKGFnLCBfKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhZ19pZCA9IGFnZW50X2lkX29mX2FnZW50IGFnIGluXG4gICAgICAgICAgICAgICAgaWYgc2V0IGFnX2lkIHRoZW5cbiAgICAgICAgICAgICAgICAgIHByaW9yaXR5XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgUHJpb3JpdHkubWluX2xldmVsIHByaW9yaXR5IHByaW9yaXRpZXMuUHJpb3JpdHkuY3JlYXRpb25cbiAgICAgICAgICAgICAgfCBQSS5SZW1vdmUgXyAtPlxuICAgICAgICAgICAgICAgIFByaW9yaXR5Lm1pbl9sZXZlbCBwcmlvcml0eSBwcmlvcml0aWVzLlByaW9yaXR5LnJlbW92YWxcbiAgICAgICAgICAgICAgfCBQSS5Nb2RfaW50ZXJuYWwgXyAtPiBwcmlvcml0eVxuICAgICAgICAgICAgICB8IFBJLkZyZWUgXyAtPlxuICAgICAgICAgICAgICAgIFByaW9yaXR5Lm1pbl9sZXZlbCBwcmlvcml0eSBwcmlvcml0aWVzLlByaW9yaXR5LnVuYmluZGluZ1xuICAgICAgICAgICAgICB8IFBJLkJpbmQgKF8sIF8pIHwgUEkuQmluZF90byAoXywgXykgLT4gcHJpb3JpdHkpXG4gICAgICAgICAgICBwcmlvcml0aWVzLlByaW9yaXR5Lm90aGVyX2V2ZW50cyAoZnN0IGFjdGlvbnMpXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgcHJpb3JpdHlcbiAgICAgIHwgVHJhY2UuRHVtbXkgXyB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkluaXQgXyAtPlxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIHByaW9yaXRpZXMuUHJpb3JpdHkuc3Vic3RpdHV0aW9uKVxuXG4gIGxldCBzdWJzX2FnZW50X2luX2V2ZW50IG1hcHBpbmcgbWFwcGluZycgPSBmdW5jdGlvblxuICAgICgqIG1hcHBpbmcgLT4gYmVmb3JlIHRoZSBldmVudCwgaW5jbHVkaW5nIGFnZW50cyB0byBiZSByZW1vdmVkICopXG4gICAgKCogbWFwcGluZycgLT4gYWZ0ZXIgdGhlIGV2ZW50LCBpbmNsdWRpbmcgYWdlbnRzIHRvIGJlIGNyZWF0ZWQgKilcbiAgICAoKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIG9uZSBhZ2VudCBpcyByZW1vdmVkLCBhbmQgb25lIGlzIGNyZWF0ZWQgd2l0aCB0aGUgc2FtZSBpZCBpbiBhIHNpbmdsZSBldmVudCAqKVxuICAgIHwgVHJhY2UuUnVsZSAoYSwgZXZlbnQsIGluZm8pIC0+XG4gICAgICBUcmFjZS5SdWxlXG4gICAgICAgICggYSxcbiAgICAgICAgICBQSS5zdWJzdF9tYXAyX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50XG4gICAgICAgICAgICAoZnVuIHggLT4gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcpXG4gICAgICAgICAgICAoZnVuIHggLT4gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcnKVxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgaW5mbyApXG4gICAgfCBUcmFjZS5QZXJ0IChhLCBldmVudCwgaW5mbykgLT5cbiAgICAgIFRyYWNlLlBlcnRcbiAgICAgICAgKCBhLFxuICAgICAgICAgIFBJLnN1YnN0X21hcDJfYWdlbnRfaW5fY29uY3JldGVfZXZlbnRcbiAgICAgICAgICAgIChmdW4geCAtPiBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCB4IHggbWFwcGluZylcbiAgICAgICAgICAgIChmdW4geCAtPiBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCB4IHggbWFwcGluZycpXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICBpbmZvIClcbiAgICB8IFRyYWNlLk9icyAoYSwgYiwgYykgLT5cbiAgICAgIFRyYWNlLk9ic1xuICAgICAgICAoIGEsXG4gICAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgKExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgIChQSS5zdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGVzdCAoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcpKSlcbiAgICAgICAgICAgIGIsXG4gICAgICAgICAgYyApXG4gICAgfCBUcmFjZS5Jbml0IGIgLT5cbiAgICAgIFRyYWNlLkluaXRcbiAgICAgICAgKExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgKFBJLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24gKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcnKSlcbiAgICAgICAgICAgYilcbiAgICB8IChUcmFjZS5EdW1teSBfIHwgVHJhY2UuU3VicyBfKSBhcyBldmVudCAtPiBldmVudFxuXG4gIGxldCBkaXNhbWJpZ3VhdGUgZXZlbnRfbGlzdCA9XG4gICAgbGV0IF8sIF8sIF8sIGV2ZW50X2xpc3RfcmV2ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKG1heF9pZCwgdXNlZCwgbWFwcGluZywgZXZlbnRfbGlzdCkgZXZlbnQgLT5cbiAgICAgICAgICBsZXQgbWF4X2lkLCB1c2VkLCBtYXBwaW5nJyA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIChtYXhfaWQsIHVzZWQsIG1hcHBpbmcpIHggLT5cbiAgICAgICAgICAgICAgICBpZiBBZ2VudElkU2V0Lm1lbSB4IHVzZWQgdGhlblxuICAgICAgICAgICAgICAgICAgKCBtYXhfaWQgKyAxLFxuICAgICAgICAgICAgICAgICAgICBBZ2VudElkU2V0LmFkZCAobWF4X2lkICsgMSkgdXNlZCxcbiAgICAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGQgeCAobWF4X2lkICsgMSkgbWFwcGluZyApXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbWF4IHggbWF4X2lkLCBBZ2VudElkU2V0LmFkZCB4IHVzZWQsIG1hcHBpbmcpXG4gICAgICAgICAgICAgIChtYXhfaWQsIHVzZWQsIG1hcHBpbmcpXG4gICAgICAgICAgICAgIChUcmFjZS5jcmVhdGlvbl9vZl9zdGVwIGV2ZW50KVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogbWFwcGluZyBjYW4gYmUgc2FmZWx5IGFwcGxpZWQgdG8gYWxsIGFnZW50cyBleGNlcHQgdGhlIG5ld2x5IGNyZWF0ZWQgb25lcyAqKVxuICAgICAgICAgICgqIG1hcHBpbmcnIGNhbiBiZSBzYWZlbHkgYXBwbGllZCB0byBhbGwgYWdlbnRzIGV4Y2VwdCB0aGUgb25lcyB0aGF0IGhhdmUgYmVlbiBqdXN0IHJlbW92ZXMgKilcbiAgICAgICAgICBsZXQgbGlzdCA9IHN1YnNfYWdlbnRfaW5fZXZlbnQgbWFwcGluZyBtYXBwaW5nJyBldmVudCA6OiBldmVudF9saXN0IGluXG4gICAgICAgICAgbWF4X2lkLCB1c2VkLCBtYXBwaW5nJywgbGlzdClcbiAgICAgICAgKDAsIEFnZW50SWRTZXQuZW1wdHksIEFnZW50SWRNYXAuZW1wdHksIFtdKVxuICAgICAgICBldmVudF9saXN0XG4gICAgaW5cbiAgICBMaXN0LnJldiBldmVudF9saXN0X3JldlxuXG4gIHR5cGUgYWdlbnRfaW5mbyA9IHtcbiAgICBpbml0aWFsX3N0ZXA6IFRyYWNlLnN0ZXA7XG4gICAgaW50ZXJuYWxfc3RhdGVzOiBpbnRlcm5hbF9zdGF0ZSBTaXRlTWFwLnQ7XG4gICAgYm91bmRfc2l0ZXM6IFNpdGVTZXQudDtcbiAgICBzaXRlc193aXRoX3dyb25nX2ludGVybmFsX3N0YXRlOiBTaXRlU2V0LnQ7XG4gIH1cblxuICBsZXQgY29udmVydF9pbml0IHJlbWFuZW50IHN0ZXBfbGlzdCBhY3Rpb25fbGlzdCA9XG4gICAgbGV0IGV4dHJhY3RfYWdlbnQgaWQgc291cCA9XG4gICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IFBJLkNyZWF0ZSAoKGlkJywgXyksIF8pXG4gICAgICAgICAgfCBQSS5Nb2RfaW50ZXJuYWwgKCgoaWQnLCBfKSwgXyksIF8pXG4gICAgICAgICAgfCBQSS5GcmVlICgoaWQnLCBfKSwgXylcbiAgICAgICAgICB8IFBJLkJpbmRfdG8gKCgoaWQnLCBfKSwgXyksIF8pIC0+XG4gICAgICAgICAgICBpZCA9IGlkJ1xuICAgICAgICAgIHwgUEkuQmluZCBfIHwgUEkuUmVtb3ZlIF8gLT4gZmFpbHdpdGggXCJQcm9ibGVtYXRpYyBpbml0aWFsIGV2ZW50XCIpXG4gICAgICAgIHNvdXBcbiAgICBpblxuICAgIGxldCByZWMgYXV4IHJlY3VyIGFjYyBzb3VwID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgKCAoaWYgc291cCA8PiBbXSB0aGVuXG4gICAgICAgICAgICAgVHJhY2UuSW5pdCBzb3VwIDo6IGFjY1xuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgYWNjKSxcbiAgICAgICAgICByZWN1ciApXG4gICAgICB8IFBJLkZyZWUgXyA6OiB0IC0+IGF1eCByZWN1ciBhY2Mgc291cCB0XG4gICAgICB8IChQSS5CaW5kIF8gfCBQSS5SZW1vdmUgXyB8IFBJLkJpbmRfdG8gXyB8IFBJLk1vZF9pbnRlcm5hbCBfKSA6OiB0IC0+XG4gICAgICAgIGF1eCByZWN1ciBhY2Mgc291cCB0XG4gICAgICB8IFBJLkNyZWF0ZSAoKGlkLCBfKSwgc2l0ZV9saXN0KSA6OiB0IC0+XG4gICAgICAgIGxldCB0aGlzLCBzb3VwJyA9IGV4dHJhY3RfYWdlbnQgaWQgc291cCBpblxuICAgICAgICBsZXQgc3RhbmRhbG9uZSA9XG4gICAgICAgICAgTGlzdC5mb3JfYWxsXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBQSS5DcmVhdGUgXyB8IFBJLkZyZWUgXyB8IFBJLk1vZF9pbnRlcm5hbCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgfCBQSS5CaW5kX3RvIF8gfCBQSS5CaW5kIF8gfCBQSS5SZW1vdmUgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgIHRoaXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRoaXMgPSBUcmFjZS5Jbml0IHRoaXMgaW5cbiAgICAgICAgaWYgc3RhbmRhbG9uZSB0aGVuIChcbiAgICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gbWFwIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBzLCBTb21lIHUgLT4gU2l0ZU1hcC5hZGQgcyB1IG1hcFxuICAgICAgICAgICAgICAgIHwgXywgTm9uZSAtPiBtYXApXG4gICAgICAgICAgICAgIFNpdGVNYXAuZW1wdHkgc2l0ZV9saXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYWdlbnRfaW5mbyA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGluaXRpYWxfc3RlcCA9IHRoaXM7XG4gICAgICAgICAgICAgIGludGVybmFsX3N0YXRlcyA9IG1hcDtcbiAgICAgICAgICAgICAgYm91bmRfc2l0ZXMgPSBTaXRlU2V0LmVtcHR5O1xuICAgICAgICAgICAgICBzaXRlc193aXRoX3dyb25nX2ludGVybmFsX3N0YXRlID0gU2l0ZVNldC5lbXB0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGF1eCAoQWdlbnRJZE1hcC5hZGQgaWQgYWdlbnRfaW5mbyByZWN1cikgKHRoaXMgOjogYWNjKSBzb3VwJyB0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGF1eCByZWN1ciAodGhpcyA6OiBhY2MpIHNvdXAnIHRcbiAgICBpblxuICAgIGF1eCByZW1hbmVudCBzdGVwX2xpc3QgYWN0aW9uX2xpc3QgYWN0aW9uX2xpc3RcblxuICBsZXQgYXNfaW5pdCByZXN0cmljdGlvbl9tYXAgYWdpZCBhZ2VudF9pbmZvID1cbiAgICBsZXQgcmVzdHJpY3Rpb24gPVxuICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgU2l0ZVNldC5lbXB0eSBhZ2lkIHJlc3RyaWN0aW9uX21hcFxuICAgIGluXG4gICAgU2l0ZVNldC5pc19lbXB0eSAoU2l0ZVNldC5pbnRlciBhZ2VudF9pbmZvLmJvdW5kX3NpdGVzIHJlc3RyaWN0aW9uKVxuICAgICYmIFNpdGVTZXQuaXNfZW1wdHlcbiAgICAgICAgIChTaXRlU2V0LmludGVyIGFnZW50X2luZm8uc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZSByZXN0cmljdGlvbilcblxuICBsZXQgbW9kX3NpdGUgcmVzdHJpY3Rpb25fbWFwIHNpdGUgc3RhdGUgKHJlbWFuZW50LCBzZXQpID1cbiAgICBsZXQgYWdpZCA9IGFnZW50X2lkX29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBzX25hbWUgPSBzaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbWF0Y2ggQWdlbnRJZE1hcC5maW5kX29wdGlvbiBhZ2lkIHJlbWFuZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gcmVtYW5lbnQsIHNldFxuICAgIHwgU29tZSBhZ19pbmZvIC0+XG4gICAgICAobWF0Y2ggU2l0ZU1hcC5maW5kX29wdGlvbiBzX25hbWUgYWdfaW5mby5pbnRlcm5hbF9zdGF0ZXMgd2l0aFxuICAgICAgfCBOb25lIC0+IHJlbWFuZW50LCBzZXRcbiAgICAgIHwgU29tZSBzdGF0ZV9yZWYgLT5cbiAgICAgICAgaWYgc3RhdGVfcmVmID0gc3RhdGUgKCogQmFjayB0byB0aGUgb3JpZ2luYWwgaW50ZXJuYWwgc3RhdGUqKSB0aGVuXG4gICAgICAgICAgaWYgU2l0ZVNldC5tZW0gc19uYW1lIGFnX2luZm8uc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZSB0aGVuIChcbiAgICAgICAgICAgIGxldCBhZ19pbmZvID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFnX2luZm8gd2l0aFxuICAgICAgICAgICAgICAgIHNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGUgPVxuICAgICAgICAgICAgICAgICAgU2l0ZVNldC5yZW1vdmUgc19uYW1lIGFnX2luZm8uc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCByZW1hbmVudCA9IEFnZW50SWRNYXAuYWRkIGFnaWQgYWdfaW5mbyByZW1hbmVudCBpblxuICAgICAgICAgICAgaWYgYXNfaW5pdCByZXN0cmljdGlvbl9tYXAgYWdpZCBhZ19pbmZvIHRoZW5cbiAgICAgICAgICAgICAgcmVtYW5lbnQsIEFnZW50SWRTZXQuYWRkIGFnaWQgc2V0XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgICAgZWxzZSBpZlxuICAgICAgICAgICgqIE5vIGxvbmdlciB0aGUgZGVmYXVsdCBzdGF0ZSAqKVxuICAgICAgICAgIFNpdGVTZXQubWVtIHNfbmFtZSBhZ19pbmZvLnNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGVcbiAgICAgICAgdGhlblxuICAgICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGFnX2luZm8gPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZ19pbmZvIHdpdGhcbiAgICAgICAgICAgICAgc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZSA9XG4gICAgICAgICAgICAgICAgU2l0ZVNldC5hZGQgc19uYW1lIGFnX2luZm8uc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZW1hbmVudCA9IEFnZW50SWRNYXAuYWRkIGFnaWQgYWdfaW5mbyByZW1hbmVudCBpblxuICAgICAgICAgIGlmIGFzX2luaXQgcmVzdHJpY3Rpb25fbWFwIGFnaWQgYWdfaW5mbyB0aGVuXG4gICAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmVtYW5lbnQsIEFnZW50SWRTZXQucmVtb3ZlIGFnaWQgc2V0XG4gICAgICAgICkpXG5cbiAgbGV0IHVuYmluZF9zaWRlIHJlc3RyaWN0aW9uX21hcCAoYWdpZCwgc19uYW1lKSAocmVtYW5lbnQsIHNldCkgPVxuICAgIG1hdGNoIEFnZW50SWRNYXAuZmluZF9vcHRpb24gYWdpZCByZW1hbmVudCB3aXRoXG4gICAgfCBOb25lIC0+IHJlbWFuZW50LCBzZXRcbiAgICB8IFNvbWUgYWdfaW5mbyAtPlxuICAgICAgaWYgU2l0ZVNldC5tZW0gc19uYW1lIGFnX2luZm8uYm91bmRfc2l0ZXMgdGhlbiAoXG4gICAgICAgIGxldCBhZ19pbmZvID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZ19pbmZvIHdpdGhcbiAgICAgICAgICAgIGJvdW5kX3NpdGVzID0gU2l0ZVNldC5yZW1vdmUgc19uYW1lIGFnX2luZm8uYm91bmRfc2l0ZXM7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVtYW5lbnQgPSBBZ2VudElkTWFwLmFkZCBhZ2lkIGFnX2luZm8gcmVtYW5lbnQgaW5cbiAgICAgICAgaWYgYXNfaW5pdCByZXN0cmljdGlvbl9tYXAgYWdpZCBhZ19pbmZvIHRoZW5cbiAgICAgICAgICByZW1hbmVudCwgQWdlbnRJZFNldC5hZGQgYWdpZCBzZXRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgICkgZWxzZVxuICAgICAgICByZW1hbmVudCwgc2V0XG5cbiAgbGV0IHVuYmluZCByZXN0cmljdGlvbl9tYXAgc2l0ZSByZW0gPVxuICAgIGxldCBhZ2lkID0gYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbGV0IHNfbmFtZSA9IHNpdGVfbmFtZV9vZl9zaXRlIHNpdGUgaW5cbiAgICB1bmJpbmRfc2lkZSByZXN0cmljdGlvbl9tYXAgKGFnaWQsIHNfbmFtZSkgcmVtXG5cbiAgbGV0IGJpbmQgcmVzdHJpY3Rpb25fbWFwIHNpdGUgKHJlbWFuZW50LCBzZXQpID1cbiAgICBsZXQgYWdpZCA9IGFnZW50X2lkX29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBzX25hbWUgPSBzaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbWF0Y2ggQWdlbnRJZE1hcC5maW5kX29wdGlvbiBhZ2lkIHJlbWFuZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gcmVtYW5lbnQsIHNldFxuICAgIHwgU29tZSBhZ19pbmZvIC0+XG4gICAgICBpZiBTaXRlU2V0Lm1lbSBzX25hbWUgYWdfaW5mby5ib3VuZF9zaXRlcyB0aGVuXG4gICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYWdfaW5mbyA9XG4gICAgICAgICAgeyBhZ19pbmZvIHdpdGggYm91bmRfc2l0ZXMgPSBTaXRlU2V0LmFkZCBzX25hbWUgYWdfaW5mby5ib3VuZF9zaXRlcyB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCByZW1hbmVudCA9IEFnZW50SWRNYXAuYWRkIGFnaWQgYWdfaW5mbyByZW1hbmVudCBpblxuICAgICAgICBpZiBhc19pbml0IHJlc3RyaWN0aW9uX21hcCBhZ2lkIGFnX2luZm8gdGhlblxuICAgICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJlbWFuZW50LCBBZ2VudElkU2V0LnJlbW92ZSBhZ2lkIHNldFxuICAgICAgKVxuXG4gIGxldCBzcGxpdF9pbml0IHJlZmluZWRfc3RlcF9saXN0ID1cbiAgICBsZXQgcmVtYW5lbnQgPSBBZ2VudElkTWFwLmVtcHR5IGluXG4gICAgZnN0XG4gICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgIChmdW4gKHN0ZXBfbGlzdCwgcmVtYW5lbnQpIHJlZmluZWRfc3RlcCAtPlxuICAgICAgICAgICBtYXRjaCByZWZpbmVkX3N0ZXAgd2l0aFxuICAgICAgICAgICB8IFRyYWNlLkluaXQgaW5pdCAtPiBjb252ZXJ0X2luaXQgcmVtYW5lbnQgc3RlcF9saXN0IGluaXRcbiAgICAgICAgICAgfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5PYnMgXyB8IFRyYWNlLkR1bW15IF8gfCBUcmFjZS5SdWxlIF9cbiAgICAgICAgICAgfCBUcmFjZS5QZXJ0IF8gLT5cbiAgICAgICAgICAgICByZWZpbmVkX3N0ZXAgOjogc3RlcF9saXN0LCByZW1hbmVudClcbiAgICAgICAgIChbXSwgcmVtYW5lbnQpXG4gICAgICAgICAoTGlzdC5yZXYgcmVmaW5lZF9zdGVwX2xpc3QpKVxuXG4gIGxldCBhZGRfaW5fc2NvcGUgc2l0ZSBzY29wZSA9XG4gICAgbGV0IGFnaWQgPSBhZ2VudF9pZF9vZl9zaXRlIHNpdGUgaW5cbiAgICBsZXQgc19uYW1lID0gc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBvbGRfc2V0ID0gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgU2l0ZVNldC5lbXB0eSBhZ2lkIHNjb3BlIGluXG4gICAgbGV0IG5ld19zZXQgPSBTaXRlU2V0LmFkZCBzX25hbWUgb2xkX3NldCBpblxuICAgIGlmIG9sZF9zZXQgPT0gbmV3X3NldCB0aGVuXG4gICAgICBzY29wZVxuICAgIGVsc2VcbiAgICAgIEFnZW50SWRNYXAuYWRkIGFnaWQgbmV3X3NldCBzY29wZVxuXG4gIGxldCBkZWFsX3dpdGhfdGVzdHMgdGVzdHMgc2NvcGUgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzY29wZSB4IC0+XG4gICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICB8IFBJLklzX0hlcmUgXyAtPiBzY29wZVxuICAgICAgICAgICB8IFBJLklzX0JvdW5kIHNpdGVcbiAgICAgICAgICAgfCBQSS5Jc19GcmVlIHNpdGVcbiAgICAgICAgICAgfCBQSS5IYXNfQmluZGluZ190eXBlIChzaXRlLCBfKVxuICAgICAgICAgICB8IFBJLkhhc19JbnRlcm5hbCAoc2l0ZSwgXykgLT5cbiAgICAgICAgICAgICBhZGRfaW5fc2NvcGUgc2l0ZSBzY29wZVxuICAgICAgICAgICB8IFBJLklzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICAgICAgYWRkX2luX3Njb3BlIHNpdGUxIChhZGRfaW5fc2NvcGUgc2l0ZTIgc2NvcGUpKSlcbiAgICAgIHNjb3BlIHRlc3RzXG5cbiAgbGV0IGZpbGxfc2lwaG9uIHJlZmluZWRfc3RlcF9saXN0ID1cbiAgICBsZXQgcmV2X3RyYWNlID0gTGlzdC5yZXYgcmVmaW5lZF9zdGVwX2xpc3QgaW5cbiAgICBsZXQgc2NvcGUgPSBBZ2VudElkTWFwLmVtcHR5IGluXG4gICAgbGV0IHJlZmluZWRfc3RlcF93aXRoX3Njb3BlX2xpc3QsIF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoc3RlcF9saXN0LCBzY29wZSkgcmVmaW5lZF9zdGVwIC0+XG4gICAgICAgICAgbWF0Y2ggcmVmaW5lZF9zdGVwIHdpdGhcbiAgICAgICAgICB8IFRyYWNlLkluaXQgXyAtPiAocmVmaW5lZF9zdGVwLCBzY29wZSkgOjogc3RlcF9saXN0LCBzY29wZVxuICAgICAgICAgIHwgVHJhY2UuUnVsZSAoXywgZXZlbnQsIF8pIHwgVHJhY2UuUGVydCAoXywgZXZlbnQsIF8pIC0+XG4gICAgICAgICAgICBsZXQgc2NvcGUnID0gZGVhbF93aXRoX3Rlc3RzIGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHMgc2NvcGUgaW5cbiAgICAgICAgICAgIChyZWZpbmVkX3N0ZXAsIHNjb3BlKSA6OiBzdGVwX2xpc3QsIHNjb3BlJ1xuICAgICAgICAgIHwgVHJhY2UuT2JzIChfLCB0ZXN0cywgXykgLT5cbiAgICAgICAgICAgIGxldCBzY29wZScgPSBkZWFsX3dpdGhfdGVzdHMgdGVzdHMgc2NvcGUgaW5cbiAgICAgICAgICAgIChyZWZpbmVkX3N0ZXAsIHNjb3BlKSA6OiBzdGVwX2xpc3QsIHNjb3BlJ1xuICAgICAgICAgIHwgVHJhY2UuU3VicyBfIHwgVHJhY2UuRHVtbXkgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICAgIChbXSwgc2NvcGUpIHJldl90cmFjZVxuICAgIGluXG4gICAgbGV0IHJlbWFuZW50ID0gQWdlbnRJZE1hcC5lbXB0eSBpblxuICAgIGxldCBhLCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKHN0ZXBfbGlzdCwgcmVtYW5lbnQpIHJlZmluZWRfc3RlcCAtPlxuICAgICAgICAgIG1hdGNoIHJlZmluZWRfc3RlcCB3aXRoXG4gICAgICAgICAgfCBUcmFjZS5Jbml0IGluaXQsIF8gLT4gY29udmVydF9pbml0IHJlbWFuZW50IHN0ZXBfbGlzdCBpbml0XG4gICAgICAgICAgfCBUcmFjZS5SdWxlIChfLCBldmVudCwgXyksIHNjb3BlIHwgVHJhY2UuUGVydCAoXywgZXZlbnQsIF8pLCBzY29wZSAtPlxuICAgICAgICAgICAgbGV0IHJlbWFuZW50LCBzZXQgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gcmVjdXIgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgUEkuQ3JlYXRlIF8gLT4gcmVjdXJcbiAgICAgICAgICAgICAgICAgIHwgUEkuTW9kX2ludGVybmFsIChzaXRlLCBzdGF0ZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgbW9kX3NpdGUgc2NvcGUgc2l0ZSBzdGF0ZSByZWN1clxuICAgICAgICAgICAgICAgICAgfCBQSS5CaW5kIChzaXRlMSwgc2l0ZTIpIHwgUEkuQmluZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgICAgICAgICBiaW5kIHNjb3BlIHNpdGUxIChiaW5kIHNjb3BlIHNpdGUyIHJlY3VyKVxuICAgICAgICAgICAgICAgICAgfCBQSS5GcmVlIHNpdGUgLT4gdW5iaW5kIHNjb3BlIHNpdGUgcmVjdXJcbiAgICAgICAgICAgICAgICAgIHwgUEkuUmVtb3ZlIF8gLT4gcmVjdXIpXG4gICAgICAgICAgICAgICAgKHJlbWFuZW50LCBBZ2VudElkU2V0LmVtcHR5KVxuICAgICAgICAgICAgICAgIGV2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCByZW1hbmVudCwgc2V0ID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0ICh1bmJpbmQgc2NvcGUpXG4gICAgICAgICAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0IChyZW1hbmVudCwgc2V0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggQWdlbnRJZFNldC5mb2xkXG4gICAgICAgICAgICAgICAgKGZ1biBpZCBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBBZ2VudElkTWFwLmZpbmRfb3B0aW9uIGlkIHJlbWFuZW50IHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSB4IC0+IHguaW5pdGlhbF9zdGVwIDo6IGxpc3RcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0KVxuICAgICAgICAgICAgICAgIHNldFxuICAgICAgICAgICAgICAgIChmc3QgcmVmaW5lZF9zdGVwIDo6IHN0ZXBfbGlzdCksXG4gICAgICAgICAgICAgIHJlbWFuZW50IClcbiAgICAgICAgICB8IFRyYWNlLk9icyBfLCBfIC0+IGZzdCByZWZpbmVkX3N0ZXAgOjogc3RlcF9saXN0LCByZW1hbmVudFxuICAgICAgICAgIHwgVHJhY2UuU3VicyBfLCBfIHwgVHJhY2UuRHVtbXkgXywgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICAgIChbXSwgcmVtYW5lbnQpIHJlZmluZWRfc3RlcF93aXRoX3Njb3BlX2xpc3RcbiAgICBpblxuICAgIExpc3QucmV2IGFcblxuICBsZXQgYWdlbnRfaWRfaW5fb2JzIF9wYXJhbWV0ZXIgX2hhbmRsZXIgaW5mbyBlcnJvciA9IGZ1bmN0aW9uXG4gICAgfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5SdWxlIF8gfCBUcmFjZS5QZXJ0IF8gfCBUcmFjZS5Jbml0IF8gfCBUcmFjZS5EdW1teSBfXG4gICAgICAtPlxuICAgICAgZXJyb3IsIGluZm8sIEFnZW50SWRTZXQuZW1wdHlcbiAgICB8IFRyYWNlLk9icyAoXywgdGVzdHMsIF8pIC0+XG4gICAgICAoIGVycm9yLFxuICAgICAgICBpbmZvLFxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIGwgeCAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICB8IFBJLklzX0hlcmUgeCAtPiBBZ2VudElkU2V0LmFkZCAoYWdlbnRfaWRfb2ZfYWdlbnQgeCkgbFxuICAgICAgICAgICAgICAgfCBQSS5Jc19Cb3VuZCBfIHwgUEkuSXNfRnJlZSBfIHwgUEkuSGFzX0JpbmRpbmdfdHlwZSBfXG4gICAgICAgICAgICAgICB8IFBJLklzX0JvdW5kX3RvIF8gfCBQSS5IYXNfSW50ZXJuYWwgXyAtPlxuICAgICAgICAgICAgICAgICBsKSlcbiAgICAgICAgICBBZ2VudElkU2V0LmVtcHR5IHRlc3RzIClcbmVuZFxuIiwiKCoqXG4gICogcG9fY3V0Lm1sXG4gICpcbiAgKiBDdXQgY29uY3VycmVudCBldmVudHM6IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERlZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAxNi8wNC8yMDEyXG4gICogTGFzdCBtb2RpZmljYXRpb246IDAyLzA4LzIwMTNcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXIgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgUG9fY3V0ID0gc2lnXG4gIG1vZHVsZSBLIDogS2FwcGFfaW5zdGFudGlhdGlvbi5DZmxvd19zaWduYXR1cmVcblxuICB2YWwgY3V0IDogKFRyYWNlLnQsIFRyYWNlLnQgKiBpbnQpIEsuSC51bmFyeVxuXG4gIHR5cGUgb25fdGhlX2ZseV9zdGF0ZVxuXG4gIHZhbCBpbml0X2N1dCA6IG9uX3RoZV9mbHlfc3RhdGVcbiAgdmFsIGN1dF9zdGVwIDogb25fdGhlX2ZseV9zdGF0ZSAtPiBUcmFjZS5zdGVwIC0+IG9uX3RoZV9mbHlfc3RhdGVcbiAgdmFsIGZpbmFsaXplX2N1dCA6IG9uX3RoZV9mbHlfc3RhdGUgLT4gVHJhY2Uuc3RlcCBsaXN0ICogaW50XG5cbiAgdmFsIGN1dF9yZXZfdHJhY2UgOlxuICAgIFRyYWNlLnN0ZXAgbGlzdCAoKnJldmVyc2Ugb3JkZXIqKSAtPlxuICAgIFRyYWNlLnN0ZXAgbGlzdCAoKiBjb3JyZWN0IG9yZGVyICopICogaW50XG5lbmRcblxubW9kdWxlIFBvX2N1dCA6IFBvX2N1dCA9IHN0cnVjdFxuICBtb2R1bGUgSyA9IEthcHBhX2luc3RhbnRpYXRpb24uQ2Zsb3dfbGlua2VyXG5cbiAgdHlwZSBwcmVkaWNhdGVfaW5mbyA9XG4gICAgfCBIZXJlIG9mIEsuYWdlbnRfaWRcbiAgICB8IEJvdW5kX3NpdGUgb2YgSy5hZ2VudF9pZCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgfCBJbnRlcm5hbF9zdGF0ZSBvZiBLLmFnZW50X2lkICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcblxuICBtb2R1bGUgUFNNID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IHByZWRpY2F0ZV9pbmZvXG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgcHJpbnQgXyBfID0gKClcbiAgZW5kKVxuXG4gIG1vZHVsZSBQUyA9IFBTTS5TZXRcblxuICBsZXQgY3JlYXRlZF9wcmVkaWNhdGVzX29mX2FjdGlvbiBhY3Rpb24gPVxuICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoYWcsIGludGVyZmFjZSkgLT5cbiAgICAgIGxldCBhZ19pZCA9IEsuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbGlzdCAoc19pZCwgb3B0KSAtPlxuICAgICAgICAgIGxldCBsaXN0ID0gQm91bmRfc2l0ZSAoYWdfaWQsIHNfaWQpIDo6IGxpc3QgaW5cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgfCBTb21lIF8gLT4gSW50ZXJuYWxfc3RhdGUgKGFnX2lkLCBzX2lkKSA6OiBsaXN0KVxuICAgICAgICBbIEhlcmUgYWdfaWQgXSBpbnRlcmZhY2VcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZCBfIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF8gfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgXyB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIF8gLT5cbiAgICAgIFtdXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfYWN0aW9uIGFjdGlvbiA9XG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIChhZywgaW50ZXJmYWNlKSAtPlxuICAgICAgbGV0IGFnX2lkID0gSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBsaXN0IChzX2lkLCBvcHQpIC0+XG4gICAgICAgICAgbGV0IGxpc3QgPSBCb3VuZF9zaXRlIChhZ19pZCwgc19pZCkgOjogbGlzdCBpblxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICB8IFNvbWUgXyAtPiBJbnRlcm5hbF9zdGF0ZSAoYWdfaWQsIHNfaWQpIDo6IGxpc3QpXG4gICAgICAgIFsgSGVyZSBhZ19pZCBdIGludGVyZmFjZVxuICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIF8pIC0+XG4gICAgICBbIEludGVybmFsX3N0YXRlIChLLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKSBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHMxLCBzMikgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHMxLCBzMikgLT5cbiAgICAgIFtcbiAgICAgICAgQm91bmRfc2l0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHMxLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMxKTtcbiAgICAgICAgQm91bmRfc2l0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHMyLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMyKTtcbiAgICAgIF1cbiAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBzIC0+XG4gICAgICBbIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMpIF1cbiAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF8gLT4gW11cblxuICBsZXQgcHJlZGljYXRlc19vZl90ZXN0IHRlc3QgPVxuICAgIG1hdGNoIHRlc3Qgd2l0aFxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGFnZW50IC0+IFsgSGVyZSAoSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCkgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgKHNpdGUsIF8pIC0+XG4gICAgICBbIEludGVybmFsX3N0YXRlIChLLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKSBdXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgc1xuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBzXG4gICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKHMsIF8pIC0+XG4gICAgICBbIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMpIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIFtcbiAgICAgICAgQm91bmRfc2l0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHMxLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMxKTtcbiAgICAgICAgQm91bmRfc2l0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHMyLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMyKTtcbiAgICAgIF1cblxuICBsZXQgcHJlZGljYXRlc19vZl9zaWRlX2VmZmVjdHMgc2lkZXMgPVxuICAgIExpc3QubWFwIChmdW4gKChhZ19pZCwgXyksIHNfaWQpIC0+IEJvdW5kX3NpdGUgKGFnX2lkLCBzX2lkKSkgc2lkZXNcblxuICB0eXBlIG9uX3RoZV9mbHlfc3RhdGUgPSBQUy50ICogVHJhY2Uuc3RlcCBsaXN0ICogaW50XG5cbiAgbGV0IGluaXRfY3V0ID0gUFMuZW1wdHksIFtdLCAwXG4gIGxldCBmaW5hbGl6ZV9jdXQgKF9hLCBiLCBjKSA9IGIsIGNcblxuICBsZXQgY3V0X3N0ZXAgKHNlZW4sIGtlcHQsIG5fY3V0KSBldmVudCA9XG4gICAgbGV0IHJlYyBrZWVwIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICB8IHQwIDo6IHEwIC0+XG4gICAgICAgIGxldCByZWMgYXV4MSBsID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGtlZXAgcTBcbiAgICAgICAgICB8IHQxIDo6IHExIC0+XG4gICAgICAgICAgICBpZiBQUy5tZW0gdDEgc2VlbiB0aGVuXG4gICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYXV4MSBxMVxuICAgICAgICBpblxuICAgICAgICBhdXgxIChwcmVkaWNhdGVzX29mX2FjdGlvbiB0MClcbiAgICBpblxuICAgIGxldCByZWMga2VlcDIgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZmFsc2VcbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIGlmIFBTLm1lbSB0IHNlZW4gdGhlblxuICAgICAgICAgIHRydWVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGtlZXAyIHFcbiAgICBpblxuICAgIGxldCBhY3Rpb25fbGlzdCwgXyA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBldmVudCBpblxuICAgIGxldCBzZWVuID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gc2VlbiBhY3Rpb24gLT5cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBzZWVuIGVsdCAtPiBQUy5yZW1vdmUgZWx0IHNlZW4pXG4gICAgICAgICAgICBzZWVuXG4gICAgICAgICAgICAoY3JlYXRlZF9wcmVkaWNhdGVzX29mX2FjdGlvbiBhY3Rpb24pKVxuICAgICAgICBzZWVuIGFjdGlvbl9saXN0XG4gICAgaW5cbiAgICBsZXQgYWN0aW9ucywgXyA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBldmVudCBpblxuICAgIGlmXG4gICAgICBUcmFjZS5zdGVwX2lzX29icyBldmVudCB8fCBrZWVwIGFjdGlvbnNcbiAgICAgIHx8IGtlZXAyIChwcmVkaWNhdGVzX29mX3NpZGVfZWZmZWN0cyAoVHJhY2Uuc2lkZV9lZmZlY3RzX29mX3N0ZXAgZXZlbnQpKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGtlcHQgPSBldmVudCA6OiBrZXB0IGluXG4gICAgICBsZXQgdGVzdHMgPSBUcmFjZS50ZXN0c19vZl9zdGVwIGV2ZW50IGluXG4gICAgICBsZXQgdGVzdHMnID1cbiAgICAgICAgcHJlZGljYXRlc19vZl9zaWRlX2VmZmVjdHMgKFRyYWNlLnNpZGVfZWZmZWN0c19vZl9zdGVwIGV2ZW50KVxuICAgICAgaW5cbiAgICAgIGxldCBzZWVuID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIHNlZW4gdGVzdCAtPlxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biBzZWVuIHByZWRpY2F0ZV9pbmZvIC0+IFBTLmFkZCBwcmVkaWNhdGVfaW5mbyBzZWVuKVxuICAgICAgICAgICAgICBzZWVuIChwcmVkaWNhdGVzX29mX3Rlc3QgdGVzdCkpXG4gICAgICAgICAgc2VlbiB0ZXN0c1xuICAgICAgaW5cbiAgICAgIGxldCBzZWVuID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIHNlZW4gcHJlZGljYXRlX2luZm8gLT4gUFMuYWRkIHByZWRpY2F0ZV9pbmZvIHNlZW4pXG4gICAgICAgICAgc2VlbiB0ZXN0cydcbiAgICAgIGluXG4gICAgICBzZWVuLCBrZXB0LCBuX2N1dFxuICAgICkgZWxzZVxuICAgICAgc2Vlbiwga2VwdCwgbl9jdXQgKyAxXG5cbiAgbGV0IGN1dF9yZXZfdHJhY2UgcmV2X2V2ZW50X2xpc3QgPVxuICAgIGxldCBfLCBldmVudF9saXN0LCBuID0gTGlzdC5mb2xkX2xlZnQgY3V0X3N0ZXAgaW5pdF9jdXQgcmV2X2V2ZW50X2xpc3QgaW5cbiAgICBldmVudF9saXN0LCBuXG5cbiAgbGV0IGN1dCBfcGFyYW1ldGVyIF9oYW5kbGVyIGluZm8gZXJyb3IgZXZlbnRfbGlzdCA9XG4gICAgbGV0IHRyYWNlID0gY3V0X3Jldl90cmFjZSAoTGlzdC5yZXYgZXZlbnRfbGlzdCkgaW5cbiAgICBlcnJvciwgaW5mbywgdHJhY2VcbmVuZFxuIiwiKCoqXG4gICAqIHBzZXVkb19pbnZlcnNlLm1sXG4gICAqXG4gICAqIEN1dCBwc2V1ZG8gaW52ZXJzZSBldmVudHM6IGEgbW9kdWxlIGZvciBLYVNpbVxuICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICAqXG4gICAqIEthU2ltXG4gICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGVkZXJvdCwgQ05SU1xuICAgKlxuICAgKiBDcmVhdGlvbjogMTcvMDQvMjAxMlxuICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMjEvMTEvMjAxM1xuICAgKiAqXG4gICAqIFNvbWUgcGFyYW1ldGVyIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgICpcbiAgICogQ29weXJpZ2h0IDIwMTEsMjAxMiwgMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgQ3V0X3BzZXVkb19pbnZlcnNlID0gc2lnXG4gIG1vZHVsZSBQbyA6IFBvX2N1dC5Qb19jdXRcbiAgbW9kdWxlIEEgOiBHZW5BcnJheS5HZW5BcnJheVxuXG4gIHZhbCBjdXQgOiAoVHJhY2UudCwgVHJhY2UudCAqIGludCkgUG8uSy5ILnVuYXJ5XG5lbmRcblxubW9kdWxlIFBzZXVkb19pbnYgOiBDdXRfcHNldWRvX2ludmVyc2UgPSBzdHJ1Y3RcbiAgbW9kdWxlIFBvID0gUG9fY3V0LlBvX2N1dFxuICBtb2R1bGUgQSA9IE1vZHMuRHluQXJyYXlcbiAgbW9kdWxlIENQcmVkaWNhdGVNYXAgPSBQcmVkaWNhdGVfbWFwcy5RUHJlZGljYXRlTWFwXG4gIG1vZHVsZSBQcmVkaWNhdGVNYXAgPSBQcmVkaWNhdGVfbWFwcy5QcmVkaWNhdGVNYXBcblxuICB0eXBlIHByZWRpY2F0ZV9pbmZvID0gUHJlZGljYXRlX21hcHMucHJlZGljYXRlX2luZm9cbiAgdHlwZSBzdGVwX2lkID0gaW50XG5cbiAgbGV0IHN0cmluZ19vZl9wcmVkaWNhdGVfaW5mbyA9IFByZWRpY2F0ZV9tYXBzLnN0cmluZ19vZl9wcmVkaWNhdGVfaW5mb1xuXG4gIGxldCBzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIHBpID1cbiAgICBtYXRjaCBwaSB3aXRoXG4gICAgfCBQcmVkaWNhdGVfbWFwcy5JbnRlcm5hbF9zdGF0ZV9pcyBzIC0+IHN0cmluZ19vZl9pbnQgc1xuICAgIHwgUHJlZGljYXRlX21hcHMuVW5kZWZpbmVkIC0+IFwiI1VuZGVmXCJcbiAgICB8IFByZWRpY2F0ZV9tYXBzLlByZXNlbnQgLT4gXCIjSGVyZVwiXG4gICAgfCBQcmVkaWNhdGVfbWFwcy5GcmVlIC0+IFwiI0ZyZWVcIlxuICAgIHwgUHJlZGljYXRlX21hcHMuQm91bmRfdG8gKGFnLCBhZ2VudF9uYW1lLCBzKSAtPlxuICAgICAgXCJCb3VuZF90byBcIiBeIHN0cmluZ19vZl9pbnQgYWcgXiBcIiBcIiBeIHN0cmluZ19vZl9pbnQgYWdlbnRfbmFtZSBeIFwiIFwiXG4gICAgICBeIHN0cmluZ19vZl9pbnQgc1xuXG4gIHR5cGUgcHNldWRvX2ludl9ibGFja2JvYXJkID0ge1xuICAgIHN0ZXBzX2J5X2NvbHVtbjpcbiAgICAgIChzdGVwX2lkICogUHJlZGljYXRlX21hcHMucHJlZGljYXRlX3ZhbHVlICogYm9vbCkgbGlzdCBDUHJlZGljYXRlTWFwLnQ7XG4gICAgbnN0ZXBzOiBzdGVwX2lkO1xuICAgIHByZWRpY2F0ZXNfb2ZfZXZlbnQ6IHByZWRpY2F0ZV9pbmZvIGxpc3QgQS50O1xuICAgIGlzX3JlbW92ZV9hY3Rpb246IGJvb2wgQS50O1xuICAgIG1vZGlmaWVkX3ByZWRpY2F0ZXNfb2ZfZXZlbnQ6IGludCBBLnQ7XG4gICAgaGFzX21vZF93aXRob3V0X3Rlc3Q6IGJvb2wgQS50O1xuICAgIGV2ZW50OiBUcmFjZS5zdGVwIG9wdGlvbiBBLnQ7XG4gICAgYWdlbnRfbGlzdDogaW50IGxpc3Q7XG4gIH1cblxuICBsZXQgaW5pdF9ibGFja2JvYXJkIG5fc3RlcHMgaGFuZGxlciA9XG4gICAge1xuICAgICAgc3RlcHNfYnlfY29sdW1uID0gUG8uSy5ILmdldF9wcmVkaWNhdGVfbWFwIGhhbmRsZXI7XG4gICAgICBuc3RlcHMgPSAtMTtcbiAgICAgIHByZWRpY2F0ZXNfb2ZfZXZlbnQgPSBBLm1ha2Ugbl9zdGVwcyBbXTtcbiAgICAgIGlzX3JlbW92ZV9hY3Rpb24gPSBBLm1ha2Ugbl9zdGVwcyBmYWxzZTtcbiAgICAgIGhhc19tb2Rfd2l0aG91dF90ZXN0ID0gQS5tYWtlIG5fc3RlcHMgZmFsc2U7XG4gICAgICBtb2RpZmllZF9wcmVkaWNhdGVzX29mX2V2ZW50ID0gQS5jcmVhdGUgbl9zdGVwcyAwO1xuICAgICAgZXZlbnQgPSBBLm1ha2Ugbl9zdGVwcyBOb25lO1xuICAgICAgYWdlbnRfbGlzdCA9IFtdO1xuICAgIH1cblxuICBsZXQgX3ByaW50X2JsYWNrYm9hcmQgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgIFwiQmxhY2tib2FyZCBmb3IgcmVtb3ZpbmcgcHNldWRvIGludmVyc2UgZWxlbWVudFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICBcIm5fZXZlbnRzOiAlaVwiIGJsYWNrYm9hcmQubnN0ZXBzXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICBcIlN0ZXBzX2J5X2NvbHVtbjpcIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIENQcmVkaWNhdGVNYXAuaXRlclxuICAgICAgICAoZnVuIHByZWQgbGlzdCAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIiVzOiBcIlxuICAgICAgICAgICAgICAoc3RyaW5nX29mX3ByZWRpY2F0ZV9pbmZvIHByZWQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgKGZ1biAoZWlkLCB2YWx1ZSwgYm9vbCkgLT5cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKCVpLCVzJXMpLFwiIGVpZFxuICAgICAgICAgICAgICAgICAgKHN0cmluZ19vZl9wcmVkaWNhdGVfdmFsdWUgdmFsdWUpXG4gICAgICAgICAgICAgICAgICAoaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICBcIihNb2QpXCJcbiAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICBcIlwiKSlcbiAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikpXG4gICAgICAgIGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBcIkV2ZW50czpcIlxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgICBsZXQgcmVjIGF1eCBrID1cbiAgICAgIGlmIGsgPSBibGFja2JvYXJkLm5zdGVwcyB0aGVuXG4gICAgICAgIGVycm9yXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGV2ZW50ID1cbiAgICAgICAgICB0cnkgQS5nZXQgYmxhY2tib2FyZC5ldmVudCBrXG4gICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIkVSUkVVUiAlaSAxMjNcIiBrXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICByYWlzZSBFeGl0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBfID1cbiAgICAgICAgICBtYXRjaCBldmVudCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yXG4gICAgICAgICAgfCBTb21lIGV2ZW50IC0+XG4gICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgXCJFdmVudCAlaSVhXCIga1xuICAgICAgICAgICAgICAgICAgIChUcmFjZS5wcmludF9zdGVwIH5jb21wYWN0OmZhbHNlIH5lbnY6aGFuZGxlci5Qby5LLkguZW52KVxuICAgICAgICAgICAgICAgICAgIGV2ZW50XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgXCJQcmVkaWNhdGVzOiBcIlxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBsaXN0ID0gQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVzX29mX2V2ZW50IGsgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAgICAgIChmdW4gcGlkIC0+XG4gICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICBcIiVzLFwiXG4gICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmdfb2ZfcHJlZGljYXRlX2luZm8gcGlkKSlcbiAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgYm9vbCA9IEEuZ2V0IGJsYWNrYm9hcmQuaXNfcmVtb3ZlX2FjdGlvbiBrIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBpZiBib29sIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICBcImNvbnRhaW4gYSBkZWxldGlvblwiXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBpbnQgPSBBLmdldCBibGFja2JvYXJkLm1vZGlmaWVkX3ByZWRpY2F0ZXNfb2ZfZXZlbnQgayBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgIFwiJWkgbW9kaWZpZWQgcHJlZGljYXRlc1wiIGludFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgICB3aXRoIF8gLT4gZXJyb3IpXG4gICAgICAgIGluXG4gICAgICAgIGF1eCAoayArIDEpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgZXJyb3IgPSBhdXggMCBpblxuICAgIGVycm9yXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfYWN0aW9uIF9wYXJhbWV0ZXIgX2hhbmRsZXIgX2Vycm9yIGJsYWNrYm9hcmQgYWN0aW9uID1cbiAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKGFnLCBpbnRlcmZhY2UpIC0+XG4gICAgICBsZXQgYWdfaWQgPSBQby5LLmFnZW50X2lkX29mX2FnZW50IGFnIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkID0gUHJlZGljYXRlX21hcHMuSGVyZSBhZ19pZCBpblxuICAgICAgbGV0IGxpc3QxLCBsaXN0MiA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAobGlzdDEsIGxpc3QyKSAoc19pZCwgb3B0KSAtPlxuICAgICAgICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkLCBzX2lkKSBpblxuICAgICAgICAgICAgbGV0IGxpc3QxID0gKHByZWRpY2F0ZV9pZCwgUHJlZGljYXRlX21hcHMuRnJlZSkgOjogbGlzdDEgaW5cbiAgICAgICAgICAgIGxldCBsaXN0MiA9IHByZWRpY2F0ZV9pZCA6OiBsaXN0MiBpblxuICAgICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0MSwgbGlzdDJcbiAgICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5JbnRlcm5hbF9zdGF0ZSAoYWdfaWQsIHNfaWQpIGluXG4gICAgICAgICAgICAgICggKHByZWRpY2F0ZV9pZCwgUHJlZGljYXRlX21hcHMuSW50ZXJuYWxfc3RhdGVfaXMgeCkgOjogbGlzdDEsXG4gICAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIDo6IGxpc3QyICkpXG4gICAgICAgICAgKFsgcHJlZGljYXRlX2lkLCBQcmVkaWNhdGVfbWFwcy5QcmVzZW50IF0sIFsgcHJlZGljYXRlX2lkIF0pXG4gICAgICAgICAgaW50ZXJmYWNlXG4gICAgICBpblxuICAgICAgKCB7IGJsYWNrYm9hcmQgd2l0aCBhZ2VudF9saXN0ID0gYWdfaWQgOjogYmxhY2tib2FyZC5hZ2VudF9saXN0IH0sXG4gICAgICAgIGxpc3QxLFxuICAgICAgICBsaXN0MixcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHRydWUgKVxuICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIGludCkgLT5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBQcmVkaWNhdGVfbWFwcy5JbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgIChQby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKVxuICAgICAgaW5cbiAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgWyBwcmVkaWNhdGVfaWQsIFByZWRpY2F0ZV9tYXBzLkludGVybmFsX3N0YXRlX2lzIGludCBdLFxuICAgICAgICBbXSxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGZhbHNlIClcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQxID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQxLCBzaXRlX2lkMSkgaW5cbiAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIFByZWRpY2F0ZV9tYXBzLkJvdW5kX3RvIChhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgIF0sXG4gICAgICAgIFtdLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgZmFsc2UgKVxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzMSwgczIpIC0+XG4gICAgICBsZXQgYWdfaWQxID0gUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgYWdfaWQyID0gUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgYWdlbnRfbmFtZTEgPSBQby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQxID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQxLCBzaXRlX2lkMSkgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQyID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQyLCBzaXRlX2lkMikgaW5cbiAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIFByZWRpY2F0ZV9tYXBzLkJvdW5kX3RvIChhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgICAgcHJlZGljYXRlX2lkMiwgUHJlZGljYXRlX21hcHMuQm91bmRfdG8gKGFnX2lkMSwgYWdlbnRfbmFtZTEsIHNpdGVfaWQxKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10sXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBmYWxzZSApXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpIGluXG4gICAgICBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgUHJlZGljYXRlX21hcHMuRnJlZSBdLCBbXSwgZmFsc2UsIGZhbHNlXG4gICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBhZyAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkhlcmUgYWdfaWQgaW5cbiAgICAgIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBQcmVkaWNhdGVfbWFwcy5VbmRlZmluZWQgXSwgW10sIHRydWUsIGZhbHNlXG5cbiAgbGV0IG5vX3JlbW92ZSBfcGFyYW1ldGVyIF9oYW5kbGVyIF9lcnJvciBibGFja2JvYXJkIGVpZCA9XG4gICAgbm90IChBLmdldCBibGFja2JvYXJkLmlzX3JlbW92ZV9hY3Rpb24gZWlkKVxuXG4gIGxldCBzYW1lX2xlbmd0aCBfcGFyYW1ldGVyIF9oYW5kbGVyIF9lcnJvciBibGFja2JvYXJkIGVpZDEgZWlkMiA9XG4gICAgQS5nZXQgYmxhY2tib2FyZC5oYXNfbW9kX3dpdGhvdXRfdGVzdCBlaWQxXG4gICAgfHwgQS5nZXQgYmxhY2tib2FyZC5oYXNfbW9kX3dpdGhvdXRfdGVzdCBlaWQyXG4gICAgfHwgQS5nZXQgYmxhY2tib2FyZC5tb2RpZmllZF9wcmVkaWNhdGVzX29mX2V2ZW50IGVpZDFcbiAgICAgICA9IEEuZ2V0IGJsYWNrYm9hcmQubW9kaWZpZWRfcHJlZGljYXRlc19vZl9ldmVudCBlaWQyXG5cbiAgbGV0IGNsZWFuIHQgY29sdW1uIGJsYWNrYm9hcmQgPVxuICAgIG1hdGNoIGNvbHVtbiB3aXRoXG4gICAgfCBbXSAtPiBjb2x1bW4sIGJsYWNrYm9hcmRcbiAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgbGV0IHJlYyBhdXggbGlzdCBib29sID1cbiAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgIHwgKGVpZCwgXywgZmFsc2UpIDo6IHEgLT5cbiAgICAgICAgICBpZiBlaWQgPSAtMSB0aGVuXG4gICAgICAgICAgICBsaXN0LCBib29sXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCBBLmdldCBibGFja2JvYXJkLmV2ZW50IGVpZCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gYXV4IHEgdHJ1ZVxuICAgICAgICAgICAgfCBfIC0+IGxpc3QsIGJvb2xcbiAgICAgICAgICApXG4gICAgICAgIHwgXyAtPiBsaXN0LCBib29sXG4gICAgICBpblxuICAgICAgbGV0IGxpc3QsIGJvb2wgPSBhdXggdGFpbCBmYWxzZSBpblxuICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgbGV0IGNvbHVtbiA9IGhlYWQgOjogbGlzdCBpblxuICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICBzdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICAgICAgICBDUHJlZGljYXRlTWFwLmFkZCB0IGNvbHVtbiBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGNvbHVtbiwgYmxhY2tib2FyZFxuICAgICAgKSBlbHNlXG4gICAgICAgIGNvbHVtbiwgYmxhY2tib2FyZFxuXG4gIGxldCBjaGVjayBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgZWlkID0gYmxhY2tib2FyZC5uc3RlcHMgaW5cbiAgICBsZXQgcHJlZGljYXRlX2xpc3QgPSBBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZXNfb2ZfZXZlbnQgZWlkIGluXG4gICAgbGV0IHJlYyBzY2FuIHByZWRpY2F0ZV9saXN0ID1cbiAgICAgIG1hdGNoIHByZWRpY2F0ZV9saXN0IHdpdGhcbiAgICAgIHwgW10gLT4gZXJyb3IsIE5vbmUsIGJsYWNrYm9hcmQsIFtdXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICBsZXQgY29sdW1uID1cbiAgICAgICAgICBDUHJlZGljYXRlTWFwLmZpbmRfZGVmYXVsdCBbXSB0IGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjb2x1bW4sIGJsYWNrYm9hcmQgPSBjbGVhbiB0IGNvbHVtbiBibGFja2JvYXJkIGluXG4gICAgICAgIChtYXRjaCBjb2x1bW4gd2l0aFxuICAgICAgICB8IChfLCBfLCBmYWxzZSkgOjogXyAtPiBzY2FuIHEgKCogbm8gbW9kaWYgb24gYSAqKVxuICAgICAgICB8IChfLCB4LCB0cnVlKSA6OiAoXywgeSwgXykgOjogXyB3aGVuIHggPSB5IC0+XG4gICAgICAgICAgc2NhbiBxICgqIG11dGUgbW9kaWYgb24gYSAqKVxuICAgICAgICB8IChhLCB4LCB0cnVlKSA6OiAoYiwgXywgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF8gLT5cbiAgICAgICAgICBpZiBhID0gZWlkICYmIHggPSB5IHRoZW5cbiAgICAgICAgICAgIGVycm9yLCBTb21lIChhLCBiKSwgYmxhY2tib2FyZCwgcSAoKiBhIGNhbmNlbHMgYiBtb2RpZiAqKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCBOb25lLCBibGFja2JvYXJkLCBxXG4gICAgICAgIHwgXyAtPiBlcnJvciwgTm9uZSwgYmxhY2tib2FyZCwgcSlcbiAgICBpblxuICAgIGxldCBlcnJvciwgY2FuZGlkYXRlcywgYmxhY2tib2FyZCwgcSA9IHNjYW4gcHJlZGljYXRlX2xpc3QgaW5cbiAgICBtYXRjaCBjYW5kaWRhdGVzIHdpdGhcbiAgICB8IE5vbmUgLT4gZXJyb3IsIE5vbmVcbiAgICB8IFNvbWUgKGVpZGEsIGVpZGIpIC0+XG4gICAgICBpZlxuICAgICAgICBub19yZW1vdmUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBlaWRiXG4gICAgICAgICYmIHNhbWVfbGVuZ3RoIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgZWlkYSBlaWRiXG4gICAgICAgICYmIExpc3QuZm9yX2FsbFxuICAgICAgICAgICAgIChmdW4gcGlkIC0+XG4gICAgICAgICAgICAgICBsZXQgY29sdW1uID1cbiAgICAgICAgICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5maW5kX2RlZmF1bHQgW10gcGlkIGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0IGNvbHVtbiwgX2JsYWNrYm9hcmQgPSBjbGVhbiBwaWQgY29sdW1uIGJsYWNrYm9hcmQgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIGNvbHVtbiB3aXRoXG4gICAgICAgICAgICAgICB8IChfLCBfLCBmYWxzZSkgOjogXyAtPiB0cnVlICgqIG5vIG1vZGlmIG9uIGEgKilcbiAgICAgICAgICAgICAgIHwgKGEsIHgsIHRydWUpIDo6IChiLCBfLCB0cnVlKSA6OiAoXywgeSwgXykgOjogX1xuICAgICAgICAgICAgICAgICB3aGVuIGIgPSBlaWRiICYmIGEgPSBlaWRhIC0+XG4gICAgICAgICAgICAgICAgIHggPSB5ICgqIGlmIHllcywgYSBjYW5jZWxzIGIgbW9kaWYqKVxuICAgICAgICAgICAgICAgfCAoYSwgeCwgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF8gd2hlbiBhID0gZWlkYSAtPlxuICAgICAgICAgICAgICAgICB4ID0geSAoKiBpcyBhIG1vZGlmIGlzIG11dGUgPyAqKVxuICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgIHFcbiAgICAgICAgJiYgTGlzdC5mb3JfYWxsXG4gICAgICAgICAgICAgKGZ1biBwaWQgLT5cbiAgICAgICAgICAgICAgIGxldCBjb2x1bW4gPVxuICAgICAgICAgICAgICAgICBDUHJlZGljYXRlTWFwLmZpbmRfZGVmYXVsdCBbXSBwaWQgYmxhY2tib2FyZC5zdGVwc19ieV9jb2x1bW5cbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgY29sdW1uLCBfYmxhY2tib2FyZCA9IGNsZWFuIHBpZCBjb2x1bW4gYmxhY2tib2FyZCBpblxuICAgICAgICAgICAgICAgbGV0IHJlYyBjaGVja19hdXggY29sdW1uID1cbiAgICAgICAgICAgICAgICAgbWF0Y2ggY29sdW1uIHdpdGhcbiAgICAgICAgICAgICAgICAgfCAoYiwgeCwgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF8gd2hlbiBiID0gZWlkYiAtPlxuICAgICAgICAgICAgICAgICAgIHggPSB5ICgqIGlzIGIgbW9kaWYgaXMgbXV0ZSA/ICopXG4gICAgICAgICAgICAgICAgIHwgKGIsIF8sIGJvb2wpIDo6IF8gd2hlbiBiID0gZWlkYiAtPlxuICAgICAgICAgICAgICAgICAgIG5vdCBib29sICgqIGlmIHllcywgYiBkb2VzIG5vdCBkbyBtb2RpZiAqKVxuICAgICAgICAgICAgICAgICB8IChfLCBfLCBfKSA6OiB0YWlsIC0+IGNoZWNrX2F1eCB0YWlsXG4gICAgICAgICAgICAgICAgIHwgW10gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIGNvbHVtbiB3aXRoXG4gICAgICAgICAgICAgICB8IChhLCB4LCB0cnVlKSA6OiAoYiwgXywgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF9cbiAgICAgICAgICAgICAgICAgd2hlbiBiID0gZWlkYiAmJiBhID0gZWlkYSAtPlxuICAgICAgICAgICAgICAgICB4ID0geSAoKiBhIGNhbmNlbHMgYiBtb2RpZiopXG4gICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgY2hlY2tfYXV4IGNvbHVtbiAoKiBvdGhlcndpc2UgY2hlY2sgdGhhdCBiIGhhcyBubyBlZmZlY3QgICopKVxuICAgICAgICAgICAgIChBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZXNfb2ZfZXZlbnQgZWlkYilcbiAgICAgIHRoZW5cbiAgICAgICAgZXJyb3IsIFNvbWUgKGVpZGEsIGVpZGIpXG4gICAgICBlbHNlXG4gICAgICAgIGVycm9yLCBOb25lXG5cbiAgbGV0IHBvcCBfcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgZWlkID1cbiAgICBsZXQgcHJlZGljYXRlX2xpc3QgPSBBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZXNfb2ZfZXZlbnQgZWlkIGluXG4gICAgbGV0IHJlYyBhdXggbCBlcnJvciBibGFja2JvYXJkID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBlcnJvciwgYmxhY2tib2FyZFxuICAgICAgfCBwaWQgOjogdGFpbCAtPlxuICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgbWF0Y2ggQ1ByZWRpY2F0ZU1hcC5maW5kX29wdGlvbiBwaWQgYmxhY2tib2FyZC5zdGVwc19ieV9jb2x1bW4gd2l0aFxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgRXhpdFxuICAgICAgICBpblxuICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgICAgfCAoYSwgXywgXykgOjogcSB3aGVuIGEgPSBlaWQgLT4gcVxuICAgICAgICAgIHwgXyAtPiBsaXN0XG4gICAgICAgIGluXG4gICAgICAgIGF1eCB0YWlsIGVycm9yXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICBzdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICAgICAgICBDUHJlZGljYXRlTWFwLmFkZCBwaWQgbGlzdCBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgICB9XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPSBhdXggcHJlZGljYXRlX2xpc3QgZXJyb3IgYmxhY2tib2FyZCBpblxuICAgIGxldCBfID0gQS5zZXQgYmxhY2tib2FyZC5ldmVudCBlaWQgTm9uZSBpblxuICAgIGVycm9yLCBibGFja2JvYXJkXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfdGVzdCBfcGFyYW1ldGVyIF9oYW5kbGVyIF9lcnJvciBfYmxhY2tib2FyZCB0ZXN0ID1cbiAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZ2VudCAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkhlcmUgYWdfaWQgaW5cbiAgICAgIFsgcHJlZGljYXRlX2lkIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChzaXRlLCBfaW50KSAtPlxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIFByZWRpY2F0ZV9tYXBzLkludGVybmFsX3N0YXRlXG4gICAgICAgICAgKFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlLCBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUpXG4gICAgICBpblxuICAgICAgWyBwcmVkaWNhdGVfaWQgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSBpblxuICAgICAgWyBwcmVkaWNhdGVfaWQgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IHNpdGVfaWQxID0gUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IHNpdGVfaWQyID0gUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZDEgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhZ19pZDEsIHNpdGVfaWQxKSBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZDIgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhZ19pZDIsIHNpdGVfaWQyKSBpblxuICAgICAgWyBwcmVkaWNhdGVfaWQxOyBwcmVkaWNhdGVfaWQyIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpIGluXG4gICAgICBbIHByZWRpY2F0ZV9pZCBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKHMsIF8pIC0+XG4gICAgICBsZXQgYWdfaWQgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHNpdGVfaWQgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkgaW5cbiAgICAgIFsgcHJlZGljYXRlX2lkIF1cblxuICBsZXQgYWRkX3N0ZXAgcGFyYW1ldGVyIGhhbmRsZXIgaW5mbyBlcnJvciBzdGVwIGJsYWNrYm9hcmQgPVxuICAgIGxldCBwcmVfZXZlbnQgPSBibGFja2JvYXJkLmV2ZW50IGluXG4gICAgbGV0IHRlc3RfbGlzdCA9IFRyYWNlLnRlc3RzX29mX3N0ZXAgc3RlcCBpblxuICAgIGxldCBhY3Rpb25fbGlzdCwgXyA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBzdGVwIGluXG4gICAgbGV0IHNpZGVfZWZmZWN0ID0gVHJhY2Uuc2lkZV9lZmZlY3RzX29mX3N0ZXAgc3RlcCBpblxuICAgIGxldCBidWlsZF9tYXAgbGlzdCBtYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgKGlkLCB2YWx1ZSkgLT4gUHJlZGljYXRlX21hcHMuUHJlZGljYXRlTWFwLmFkZCBpZCB2YWx1ZSBtYXApXG4gICAgICAgIG1hcCBsaXN0XG4gICAgaW5cbiAgICBsZXQgYnVpbGRfbWFwX3Rlc3QgbGlzdCBtYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBtYXAgaWQgLT4gUHJlZGljYXRlTWFwLmFkZCBpZCB0cnVlIG1hcCkgbWFwIGxpc3RcbiAgICBpblxuICAgIGxldCBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCA9XG4gICAgICBsZXQgdGVzdCcsIGFjdGlvbicgPSBQcmVkaWNhdGVNYXAuZmluZF9kZWZhdWx0IChmYWxzZSwgTm9uZSkgcGlkIG1hcCBpblxuICAgICAgbGV0IHRlc3QgPSB0ZXN0IHx8IHRlc3QnIGluXG4gICAgICBsZXQgYWN0aW9uID1cbiAgICAgICAgbWF0Y2ggYWN0aW9uJyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhY3Rpb25cbiAgICAgICAgfCBfIC0+IGFjdGlvbidcbiAgICAgIGluXG4gICAgICBsZXQgbWFwID0gUHJlZGljYXRlTWFwLmFkZCBwaWQgKHRlc3QsIGFjdGlvbikgbWFwIGluXG4gICAgICBtYXBcbiAgICBpblxuICAgIGxldCB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMgPSBzaWRlX2VmZmVjdCBpblxuICAgIGxldCB0ZXN0X21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCB0ZXN0IC0+XG4gICAgICAgICAgbGV0IHRlc3RfbGlzdCA9XG4gICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCB0ZXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBidWlsZF9tYXBfdGVzdCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICBQcmVkaWNhdGVNYXAuZW1wdHkgdGVzdF9saXN0XG4gICAgaW5cbiAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGFjdGlvbl9tYXAsXG4gICAgICAgICAgdGVzdF9tYXAsXG4gICAgICAgICAgaXNfcmVtb3ZlX2FjdGlvbixcbiAgICAgICAgICBfaXNfY3JlYXRlX2FjdGlvbiApID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCwgYm9vbCwgYm9vbF9jcmVhdGlvbilcbiAgICAgICAgICAgICBhY3Rpb24gLT5cbiAgICAgICAgICBsZXQgYmxhY2tib2FyZCwgYWN0aW9uX2xpc3QsIHRlc3RfbGlzdCwgYm9vbCcsIGJvb2xfY3JlYXRpb24nID1cbiAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfYWN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgYWN0aW9uXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGJ1aWxkX21hcCBhY3Rpb25fbGlzdCBhY3Rpb25fbWFwLFxuICAgICAgICAgICAgYnVpbGRfbWFwX3Rlc3QgdGVzdF9saXN0IHRlc3RfbWFwLFxuICAgICAgICAgICAgYm9vbCB8fCBib29sJyxcbiAgICAgICAgICAgIGJvb2xfY3JlYXRpb24gfHwgYm9vbF9jcmVhdGlvbicgKSlcbiAgICAgICAgKGVycm9yLCBibGFja2JvYXJkLCBQcmVkaWNhdGVNYXAuZW1wdHksIHRlc3RfbWFwLCBmYWxzZSwgZmFsc2UpXG4gICAgICAgIGFjdGlvbl9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIG1lcmdlZF9tYXAgPVxuICAgICAgUHJlZGljYXRlTWFwLm1vbmFkaWNfZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICBlLCBQcmVkaWNhdGVNYXAuYWRkIGtleSAodGVzdCwgU29tZSBhY3Rpb24pIGFjYylcbiAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWNjIC0+IGUsIFByZWRpY2F0ZU1hcC5hZGQga2V5ICh0ZXN0LCBOb25lKSBhY2MpXG4gICAgICAgIChmdW4gXyBlIGtleSBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgZSwgUHJlZGljYXRlTWFwLmFkZCBrZXkgKGZhbHNlLCBTb21lIGFjdGlvbikgYWNjKVxuICAgICAgICB0ZXN0X21hcCBhY3Rpb25fbWFwIFByZWRpY2F0ZU1hcC5lbXB0eVxuICAgIGluXG4gICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgIChmdW4gKChhLCBfKSwgYikgbWFwIC0+XG4gICAgICAgICAgbGV0IHBpZCA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGEsIGIpIGluXG4gICAgICAgICAgYWRkX3N0YXRlIHBpZCAoZmFsc2UsIFNvbWUgUHJlZGljYXRlX21hcHMuRnJlZSkgbWFwKVxuICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMgbWVyZ2VkX21hcFxuICAgIGluXG4gICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLm5zdGVwcyArIDEgaW5cbiAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQuZXZlbnQgbnNpZCAoU29tZSBzdGVwKSBpblxuICAgIGxldCBuX21vZGlmaWNhdGlvbnMsIHByZV9zdGVwc19ieV9jb2x1bW4sIGxpc3QsIG1vZF93aXRob3V0X3Rlc3QgPVxuICAgICAgUHJlZGljYXRlTWFwLmZvbGRcbiAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSAobl9tb2RpZmljYXRpb25zLCBtYXAsIGxpc3QsIG1vZF93aXRob3V0X3Rlc3QpIC0+XG4gICAgICAgICAgbGV0IG9sZF9saXN0ID1cbiAgICAgICAgICAgIENQcmVkaWNhdGVNYXAuZmluZF9kZWZhdWx0XG4gICAgICAgICAgICAgIFsgLTEsIFByZWRpY2F0ZV9tYXBzLlVuZGVmaW5lZCwgZmFsc2UgXVxuICAgICAgICAgICAgICBpZCBtYXBcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvbGRfdmFsdWUgPVxuICAgICAgICAgICAgbWF0Y2ggb2xkX2xpc3Qgd2l0aFxuICAgICAgICAgICAgfCAoXywgdiwgXykgOjogXyAtPiB2XG4gICAgICAgICAgICB8IFtdIC0+IFByZWRpY2F0ZV9tYXBzLlVuZGVmaW5lZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG5ld192YWx1ZSA9XG4gICAgICAgICAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IG9sZF92YWx1ZVxuICAgICAgICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG5fbW9kaWZpY2F0aW9ucywgYm9vbF9hY3Rpb24sIG1vZF93aXRob3V0X3Rlc3QgPVxuICAgICAgICAgICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBuX21vZGlmaWNhdGlvbnMsIGZhbHNlLCBtb2Rfd2l0aG91dF90ZXN0XG4gICAgICAgICAgICB8IFNvbWUgXyAtPiBuX21vZGlmaWNhdGlvbnMgKyAxLCB0cnVlLCBtb2Rfd2l0aG91dF90ZXN0IHx8IHRlc3RcbiAgICAgICAgICBpblxuICAgICAgICAgICggbl9tb2RpZmljYXRpb25zLFxuICAgICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5hZGQgaWRcbiAgICAgICAgICAgICAgKChuc2lkLCBuZXdfdmFsdWUsIGJvb2xfYWN0aW9uKSA6OiBvbGRfbGlzdClcbiAgICAgICAgICAgICAgbWFwLFxuICAgICAgICAgICAgKGlkLCBuZXdfdmFsdWUpIDo6IGxpc3QsXG4gICAgICAgICAgICBtb2Rfd2l0aG91dF90ZXN0ICkpXG4gICAgICAgIG1lcmdlZF9tYXBcbiAgICAgICAgKDAsIGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uLCBbXSwgZmFsc2UpXG4gICAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBpZiBpc19yZW1vdmVfYWN0aW9uIHRoZW4gKFxuICAgICAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQuaXNfcmVtb3ZlX2FjdGlvbiBuc2lkIHRydWUgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBBLnNldCBibGFja2JvYXJkLnByZWRpY2F0ZXNfb2ZfZXZlbnQgbnNpZFxuICAgICAgICAoTGlzdC5yZXZfbWFwIGZzdCAoTGlzdC5yZXYgbGlzdCkpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQS5zZXQgYmxhY2tib2FyZC5tb2RpZmllZF9wcmVkaWNhdGVzX29mX2V2ZW50IG5zaWQgbl9tb2RpZmljYXRpb25zXG4gICAgaW5cbiAgICBsZXQgKCkgPSBBLnNldCBibGFja2JvYXJkLmhhc19tb2Rfd2l0aG91dF90ZXN0IG5zaWQgbW9kX3dpdGhvdXRfdGVzdCBpblxuICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgIHtcbiAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgIGV2ZW50ID0gcHJlX2V2ZW50O1xuICAgICAgICBzdGVwc19ieV9jb2x1bW4gPSBwcmVfc3RlcHNfYnlfY29sdW1uO1xuICAgICAgICBuc3RlcHMgPSBuc2lkO1xuICAgICAgfVxuICAgIGluXG4gICAgZXJyb3IsIGluZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgY3V0IHBhcmFtZXRlciBoYW5kbGVyIGluZm8gZXJyb3IgbGlzdCA9XG4gICAgbGV0IG5fc3RlcHMgPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gICAgbGV0IGJsYWNrYm9hcmQgPSBpbml0X2JsYWNrYm9hcmQgbl9zdGVwcyBoYW5kbGVyIGluXG4gICAgbGV0IGVycm9yLCBpbmZvLCBibGFja2JvYXJkLCBuX2N1dCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgaW5mbywgYmxhY2tib2FyZCwgbl9jdXQpIHN0ZXAgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGluZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgYWRkX3N0ZXAgcGFyYW1ldGVyIGhhbmRsZXIgaW5mbyBlcnJvciBzdGVwIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgdG9fcG9wID0gY2hlY2sgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBpblxuICAgICAgICAgIG1hdGNoIHRvX3BvcCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBpbmZvLCBibGFja2JvYXJkLCBuX2N1dFxuICAgICAgICAgIHwgU29tZSAoZTEsIGUyKSAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID0gcG9wIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgZTEgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9IHBvcCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGUyIGluXG4gICAgICAgICAgICBlcnJvciwgaW5mbywgYmxhY2tib2FyZCwgbl9jdXQgKyAyKVxuICAgICAgICAoZXJyb3IsIGluZm8sIGJsYWNrYm9hcmQsIDApXG4gICAgICAgIGxpc3RcbiAgICBpblxuICAgIGxldCBsaXN0ID1cbiAgICAgIGxldCByZWMgYXV4IGsgbGlzdCA9XG4gICAgICAgIGlmIGsgPSAtMSB0aGVuXG4gICAgICAgICAgbGlzdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBBLmdldCBibGFja2JvYXJkLmV2ZW50IGsgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+IGF1eCAoayAtIDEpIChhIDo6IGxpc3QpXG4gICAgICAgICAgfCBOb25lIC0+IGF1eCAoayAtIDEpIGxpc3RcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCBibGFja2JvYXJkLm5zdGVwcyBbXVxuICAgIGluXG4gICAgbGV0IHRhYiA9IGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uIGluXG4gICAgbGV0IF8gPSBMaXN0Lml0ZXIgKENQcmVkaWNhdGVNYXAucmVjeWNsZSB0YWIpIGJsYWNrYm9hcmQuYWdlbnRfbGlzdCBpblxuICAgIGVycm9yLCBpbmZvLCAobGlzdCwgbl9jdXQpXG5cbiAgKCogIGxldCBjdXQgcGFyYW1ldGVyIGhhbmRsZXIgaW5mbyBlcnJvciBsaXN0ID0gZXJyb3IsIGluZm8sIChsaXN0LDApKilcbmVuZFxuIiwiKCoqXG4gICogY2Zsb3dfaGFuZGxlci5tbFxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERlZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyOS8wOC8yMDExXG4gICogTGFzdCBtb2RpZmljYXRpb246IDI5LzAxLzIwMTZcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXIgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyLDIwMTMgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZVxuICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5cbm1vZHVsZSB0eXBlIFByZUJsYWNrYm9hcmQgPSBzaWdcbiAgbW9kdWxlIEEgOiBHZW5BcnJheS5HZW5BcnJheVxuICBtb2R1bGUgQ0kgOiBQc2V1ZG9faW52ZXJzZS5DdXRfcHNldWRvX2ludmVyc2VcblxuICB0eXBlIHN0ZXBfaWRcblxuICB2YWwgemVyb19zdGVwX2lkIDogc3RlcF9pZFxuICB2YWwgZHVtbXlfc3RlcF9pZCA6IHN0ZXBfaWRcbiAgdmFsIGludF9vZl9zdGVwX2lkIDogc3RlcF9pZCAtPiBpbnRcbiAgdmFsIHN0ZXBfaWRfb2ZfaW50IDogaW50IC0+IHN0ZXBfaWRcbiAgdmFsIGRlY19zdGVwX2lkIDogc3RlcF9pZCAtPiBzdGVwX2lkXG4gIHZhbCBpbmNfc3RlcF9pZCA6IHN0ZXBfaWQgLT4gc3RlcF9pZFxuXG4gIHR5cGUgc3RlcF9zaG9ydF9pZFxuXG4gIHZhbCB6ZXJvX3N0ZXBfc2hvcnRfaWQgOiBzdGVwX3Nob3J0X2lkXG4gIHZhbCBkdW1teV9zdGVwX3Nob3J0X2lkIDogc3RlcF9zaG9ydF9pZFxuICB2YWwgaW50X29mX3N0ZXBfc2hvcnRfaWQgOiBzdGVwX3Nob3J0X2lkIC0+IGludFxuICB2YWwgc3RlcF9zaG9ydF9pZF9vZl9pbnQgOiBpbnQgLT4gc3RlcF9zaG9ydF9pZFxuICB2YWwgaW5jX3N0ZXBfc2hvcnRfaWQgOiBzdGVwX3Nob3J0X2lkIC0+IHN0ZXBfc2hvcnRfaWRcbiAgdmFsIGRlY19zdGVwX3Nob3J0X2lkIDogc3RlcF9zaG9ydF9pZCAtPiBzdGVwX3Nob3J0X2lkXG5cbiAgKCoqIGJsYWNrYm9hcmQgcHJlZGljYXRlcyopXG5cbiAgdHlwZSBwcmVkaWNhdGVfaWQgPSBpbnRcbiAgdHlwZSBwcmVkaWNhdGVfaW5mb1xuICB0eXBlIHByZWRpY2F0ZV92YWx1ZVxuXG4gIG1vZHVsZSBDIDogQ2FjaGUuQ2FjaGUgd2l0aCB0eXBlIE8udCA9IHByZWRpY2F0ZV92YWx1ZVxuXG4gIHR5cGUgcHJlX2JsYWNrYm9hcmQgKCpibGFja2JvYXJkIGR1cmluZyBpdHMgY29uc3RydWN0aW9uKilcblxuICB2YWwgd2Vha2VuaW5nIDogcHJlZGljYXRlX3ZhbHVlIC0+IHByZWRpY2F0ZV92YWx1ZSBsaXN0XG5cbiAgdmFsIGNvbmogOlxuICAgIChwcmVkaWNhdGVfdmFsdWUsIHByZWRpY2F0ZV92YWx1ZSwgcHJlZGljYXRlX3ZhbHVlKSBDSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGRpc2p1bmN0aW9uIDpcbiAgICAocHJlZGljYXRlX3ZhbHVlLCBwcmVkaWNhdGVfdmFsdWUsIHByZWRpY2F0ZV92YWx1ZSkgQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBkZWZpbmVkIDogcHJlZGljYXRlX3ZhbHVlXG4gIHZhbCB1bmRlZmluZWQgOiBwcmVkaWNhdGVfdmFsdWVcbiAgdmFsIHVua25vd24gOiBwcmVkaWNhdGVfdmFsdWVcbiAgdmFsIGlzX3Vua25vd24gOiBwcmVkaWNhdGVfdmFsdWUgLT4gYm9vbFxuICB2YWwgaXNfdW5kZWZpbmVkIDogcHJlZGljYXRlX3ZhbHVlIC0+IGJvb2xcbiAgdmFsIG1vcmVfcmVmaW5lZCA6IHByZWRpY2F0ZV92YWx1ZSAtPiBwcmVkaWNhdGVfdmFsdWUgLT4gYm9vbFxuICB2YWwgY29tcGF0aWJsZSA6IHByZWRpY2F0ZV92YWx1ZSAtPiBwcmVkaWNhdGVfdmFsdWUgLT4gYm9vbFxuICB2YWwgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIDogcHJlZGljYXRlX3ZhbHVlIC0+IHByZWRpY2F0ZV92YWx1ZSAtPiBib29sXG4gIHZhbCBnZXRfcHJlX2NvbHVtbl9tYXBfaW52IDogcHJlX2JsYWNrYm9hcmQgLT4gcHJlZGljYXRlX2luZm8gQS50XG5cbiAgKCoqIGdlbmVyYXRpb24qKVxuXG4gIHZhbCBpbml0IDogcHJlX2JsYWNrYm9hcmQgQ0kuUG8uSy5ILnplcm9hcnlcblxuICB2YWwgYWRkX3N0ZXAgOlxuICAgICggVHJhY2Uuc3RlcCxcbiAgICAgIHByZV9ibGFja2JvYXJkLFxuICAgICAgc3RlcF9pZCxcbiAgICAgIHByZV9ibGFja2JvYXJkICogc3RlcF9pZCApXG4gICAgQ0kuUG8uSy5ILnRlcm5hcnlcblxuICB2YWwgYWRkX3N0ZXBfdXBfdG9faXNvIDpcbiAgICAoIFRyYWNlLnN0ZXAsXG4gICAgICBwcmVfYmxhY2tib2FyZCxcbiAgICAgIHN0ZXBfaWQsXG4gICAgICBwcmVfYmxhY2tib2FyZCAqIHN0ZXBfaWQgKVxuICAgIENJLlBvLksuSC50ZXJuYXJ5XG5cbiAgdmFsIGZpbmFsaXplIDpcbiAgICBQcmlvcml0eS5wcmlvcml0aWVzIG9wdGlvbiAtPlxuICAgIChwcmVfYmxhY2tib2FyZCwgcHJlX2JsYWNrYm9hcmQpIENJLlBvLksuSC51bmFyeVxuXG4gICgqKnByZXR0eSBwcmludGluZyopXG5cbiAgdmFsIHN0cmluZ19vZl9wcmVkaWNhdGVfdmFsdWUgOiBwcmVkaWNhdGVfdmFsdWUgLT4gc3RyaW5nXG4gIHZhbCBwcmludF9wcmVkaWNhdGVfdmFsdWUgOiBMb2dnZXJzLnQgLT4gcHJlZGljYXRlX3ZhbHVlIC0+IHVuaXRcbiAgdmFsIHByaW50X3ByZWJsYWNrYm9hcmQgOiAocHJlX2JsYWNrYm9hcmQsIHVuaXQpIENJLlBvLksuSC51bmFyeVxuXG4gICgqKmludGVyZmFjZSopXG5cbiAgdmFsIG5fZXZlbnRzIDogKHByZV9ibGFja2JvYXJkLCBpbnQpIENJLlBvLksuSC51bmFyeVxuICB2YWwgbl9wcmVkaWNhdGVzIDogKHByZV9ibGFja2JvYXJkLCBpbnQpIENJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBuX2V2ZW50c19wZXJfcHJlZGljYXRlIDpcbiAgICAocHJlX2JsYWNrYm9hcmQsIGludCwgcHJlZGljYXRlX2lkKSBDSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGV2ZW50X2xpc3Rfb2ZfcHJlZGljYXRlIDpcbiAgICAoIHByZV9ibGFja2JvYXJkLFxuICAgICAgcHJlZGljYXRlX2lkLFxuICAgICAgKHN0ZXBfaWQgKiBpbnQgKiBwcmVkaWNhdGVfdmFsdWUgKiBwcmVkaWNhdGVfdmFsdWUpIGxpc3QgKVxuICAgIENJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgbWFuZGF0b3J5X2V2ZW50cyA6XG4gICAgKCBwcmVfYmxhY2tib2FyZCxcbiAgICAgIChzdGVwX2lkIGxpc3QgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IG9wdGlvbikgbGlzdCApXG4gICAgQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGdldF9wcmVfZXZlbnQgOiAocHJlX2JsYWNrYm9hcmQsIFRyYWNlLnN0ZXAgQS50KSBDSS5Qby5LLkgudW5hcnlcblxuICB2YWwgZ2V0X3NpZGVfZWZmZWN0IDpcbiAgICAocHJlX2JsYWNrYm9hcmQsIENJLlBvLksuc2lkZV9lZmZlY3QgQS50KSBDSS5Qby5LLkgudW5hcnlcblxuICB2YWwgZ2V0X2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZSA6XG4gICAgKHByZV9ibGFja2JvYXJkLCBzdGVwX2lkIG9wdGlvbikgQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGdldF9sZXZlbF9vZl9ldmVudCA6XG4gICAgKHByZV9ibGFja2JvYXJkLCBzdGVwX2lkLCBQcmlvcml0eS5sZXZlbCkgQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBsZXZlbHMgOiBwcmVfYmxhY2tib2FyZCAtPiBQcmlvcml0eS5sZXZlbCBBLnRcbiAgdmFsIHByaW50X3ByZWRpY2F0ZV9pbmZvIDogTG9nZ2Vycy50IC0+IHByZWRpY2F0ZV9pbmZvIC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgUHJlYmxhY2tib2FyZCA6IFByZUJsYWNrYm9hcmQgPSBzdHJ1Y3RcbiAgKCoqIFVzZWZ1bCBtb2R1bGVzICopXG5cbiAgbW9kdWxlIEEgPSBNb2RzLkR5bkFycmF5XG4gIG1vZHVsZSBDSSA9IFBzZXVkb19pbnZlcnNlLlBzZXVkb19pbnZcblxuICBsZXQgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgcG9zID8obWVzc2FnZSA9IFwiXCIpIGV4biBkZWZhdWx0ID1cbiAgICBsZXQgZXJyb3IsIHggPVxuICAgICAgRXhjZXB0aW9uLndhcm5cbiAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgcG9zIH5tZXNzYWdlIGV4biBkZWZhdWx0XG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHhcblxuICAoKiogYmxhY2tib2FyZCBtYXRyaXgqKVxuXG4gIHR5cGUgc3RlcF9pZCA9IGludFxuICAoKiogZ2xvYmFsIGlkIG9mIGFuIGV2ZW50ICopXG5cbiAgbGV0IHplcm9fc3RlcF9pZCA9IDBcbiAgbGV0IGR1bW15X3N0ZXBfaWQgPSAtMVxuICBsZXQgaW50X29mX3N0ZXBfaWQgaSA9IGlcbiAgbGV0IHN0ZXBfaWRfb2ZfaW50IGkgPSBpXG4gIGxldCBkZWNfc3RlcF9pZCBpID0gaSAtIDFcbiAgbGV0IGluY19zdGVwX2lkIGkgPSBpICsgMVxuXG4gIHR5cGUgc3RlcF9zaG9ydF9pZCA9IGludFxuICAoKiogcG9zaXRpb24gb2YgYW4gZXZlbnQgb24gYSB3aXJlICopXG5cbiAgbGV0IHplcm9fc3RlcF9zaG9ydF9pZCA9IDBcbiAgbGV0IGR1bW15X3N0ZXBfc2hvcnRfaWQgPSAtMVxuICBsZXQgaW50X29mX3N0ZXBfc2hvcnRfaWQgaSA9IGlcbiAgbGV0IHN0ZXBfc2hvcnRfaWRfb2ZfaW50IGkgPSBpXG4gIGxldCBpbmNfc3RlcF9zaG9ydF9pZCBpID0gaSArIDFcbiAgbGV0IGRlY19zdGVwX3Nob3J0X2lkIGkgPSBpIC0gMVxuXG4gICgqKiBibGFja2JvYXJkIHByZWRpY2F0ZXMqKVxuXG4gICgqKiBraW5kIG9mIGV2ZW50cyopXG4gIHR5cGUgcnVsZV90eXBlID1cbiAgICB8IFN1YnNcbiAgICB8IER1bW15XG4gICAgfCBJbml0XG4gICAgfCBPYnNlcnZhYmxlXG4gICAgfCBSdWxlXG4gICAgfCBTaWRlX2VmZmVjdF9vZiBvZlxuICAgICAgICAoc3RlcF9pZCAqIChDSS5Qby5LLmFnZW50X2lkICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWUpIGxpc3QpXG5cbiAgdHlwZSBwcmVkaWNhdGVfaWQgPSBpbnRcbiAgKCoqIHdpcmUgaWRlbnRpZmllcnMgKilcblxuICB0eXBlIG11dGV4ID1cbiAgICB8IExvY2tfc2lkZV9lZmZlY3Qgb2ZcbiAgICAgICAgc3RlcF9pZCAqIENJLlBvLksuYWdlbnRfaWQgKiBDSS5Qby5LLmFnZW50X2lkICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcbiAgICB8IExvY2tfYWdlbnQgb2Ygc3RlcF9pZCAqIENJLlBvLksuYWdlbnRfaWRcbiAgICB8IExvY2tfcmVjdGFuZ3VsYXIgb2Ygc3RlcF9pZCAqIENJLlBvLksuYWdlbnRfaWRcbiAgICB8IExvY2tfbGlua3Mgb2Ygc3RlcF9pZCAqIChDSS5Qby5LLmFnZW50X2lkICogQ0kuUG8uSy5hZ2VudF9pZClcblxuICAoKiogd2lyZSBsYWJlbHMgKilcbiAgdHlwZSBwcmVkaWNhdGVfaW5mbyA9XG4gICAgfCBGaWN0aXRpb3VzICgqdG8gaGFuZGxlIHdpdGggYW1iaWd1b3VzIHNpdGUgZWZmZWN0cyAqKVxuICAgIHwgSGVyZSBvZiBDSS5Qby5LLmFnZW50X2lkXG4gICAgfCBCb3VuZF9zaXRlIG9mIENJLlBvLksuYWdlbnRfaWQgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICAgIHwgSW50ZXJuYWxfc3RhdGUgb2YgQ0kuUG8uSy5hZ2VudF9pZCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgfCBQb2ludGVyIG9mIHN0ZXBfaWQgKiBDSS5Qby5LLmFnZW50X2lkXG4gICAgfCBNdXRleCBvZiBtdXRleFxuICAgIHwgTGluayBvZiBzdGVwX2lkICogQ0kuUG8uSy5hZ2VudF9pZCAqIENJLlBvLksuYWdlbnRfaWRcblxuICBsZXQgXyA9IExpbmsgKDAsIDAsIDApXG4gICgqIGRvIG5vdCByZW1vdmUsIGl0IHdpbGwgYmUgbmVjZXNzYXJ5IGZvciBkZWFsaW5nIGVmZmVjdGl2ZWx5IHdpdGggdW5hcnkvYmluYXJ5IHJ1bGUgKilcblxuICB0eXBlIHByZWRpY2F0ZV92YWx1ZSA9XG4gICAgfCBDb3VudGVyIG9mIGludFxuICAgIHwgUG9pbnRlcl90b19hZ2VudCBvZiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWVcbiAgICB8IEludGVybmFsX3N0YXRlX2lzIG9mIENJLlBvLksuaW50ZXJuYWxfc3RhdGVcbiAgICB8IERlZmluZWQgICgqKiB0aGUgd2lyZSBkb2VzIGV4aXN0LCBidXQgd2UgZG8gbm90IGtub3cgd2hhdCB0aGUgdmFsdWUgaXMgKilcbiAgICB8IFVuZGVmaW5lZCAgKCoqIHRoZSB3aXJlIGRvZXMgbm90IGV4aXN0IHlldCAqKVxuICAgIHwgUHJlc2VudCAgKCoqIGZvciBhZ2VudCBwcmVzZW5jZSAqKVxuICAgIHwgRnJlZSAgKCoqIGZvciBiaW5kaW5nIHNpdGVzICopXG4gICAgfCBCb3VuZCAgKCoqIGZvciBiaW5kaW5nIHNpdGVzIChwYXJ0aWFsIGluZm9ybWF0aW9uKSAqKVxuICAgIHwgQm91bmRfdG8gb2ZcbiAgICAgICAgcHJlZGljYXRlX2lkXG4gICAgICAgICogQ0kuUG8uSy5hZ2VudF9pZFxuICAgICAgICAqIEluc3RhbnRpYXRpb24uYWdlbnRfbmFtZVxuICAgICAgICAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgICAgICgqKiBmb3IgYmluZGluZiBzaXRlcyAoY29tcGxldGUgaW5mb3JtYXRpb24pICopXG4gICAgfCBCb3VuZF90b190eXBlIG9mIEluc3RhbnRpYXRpb24uYWdlbnRfbmFtZSAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgICAgICgqKiBmb3IgYmluZGluZyBzaXRlcyAocGFydGlhbCBpbmZvcm1hdGlvbiAqKVxuICAgIHwgVW5rbm93blxuICAgICAgICAoKiogIGZvciBhZ2VudCBwcmVzZW5jZSwgaW50ZXJuYWwgc3RhdGVzLCBiaW5kaW5nIHN0YXRlcyAocGFydGlhbCBpbmZvcm1hdGlvbiAqKVxuXG4gIG1vZHVsZSBDIDogQ2FjaGUuQ2FjaGUgd2l0aCB0eXBlIE8udCA9IHByZWRpY2F0ZV92YWx1ZSA9IENhY2hlLkNhY2hlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBwcmVkaWNhdGVfdmFsdWVcblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGxldCBwcmludCBfIF8gPSAoKVxuICBlbmQpXG5cbiAgbGV0IHdlYWtlbmluZyBwID1cbiAgICBtYXRjaCBwIHdpdGhcbiAgICB8IFBvaW50ZXJfdG9fYWdlbnQgXyB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBQcmVzZW50IHwgRnJlZVxuICAgIHwgQm91bmQgLT5cbiAgICAgIFsgcDsgRGVmaW5lZCBdXG4gICAgfCBCb3VuZF90byAoXywgXywgYWcsIHNpdGUpIC0+XG4gICAgICBbIHA7IEJvdW5kX3RvX3R5cGUgKGFnLCBzaXRlKTsgQm91bmQ7IERlZmluZWQgXVxuICAgIHwgQm91bmRfdG9fdHlwZSBfIC0+IFsgcDsgQm91bmQ7IERlZmluZWQgXVxuICAgIHwgRGVmaW5lZCB8IFVuZGVmaW5lZCAtPiBbIHAgXVxuICAgIHwgVW5rbm93biAtPiBbXVxuXG4gIGxldCBkZWZpbmVkID0gRGVmaW5lZFxuICBsZXQgdW5kZWZpbmVkID0gVW5kZWZpbmVkXG4gIGxldCB1bmtub3duID0gVW5rbm93blxuICBsZXQgaXNfdW5rbm93biB4ID0geCA9IFVua25vd25cbiAgbGV0IGlzX3VuZGVmaW5lZCB4ID0geCA9IFVuZGVmaW5lZFxuXG4gICgqKiBtYXBzIGFuZCBzZXRzICopXG5cbiAgbW9kdWxlIFByZWRpY2F0ZVNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBwcmVkaWNhdGVfaW5mb1xuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHByaW50IF8gXyA9ICgpXG4gIGVuZClcblxuICBtb2R1bGUgUHJlZGljYXRlU2V0ID0gUHJlZGljYXRlU2V0TWFwLlNldFxuICBtb2R1bGUgUHJlZGljYXRlTWFwID0gUHJlZGljYXRlU2V0TWFwLk1hcFxuXG4gIG1vZHVsZSBDYXNlVmFsdWVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gcHJlZGljYXRlX3ZhbHVlXG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgcHJpbnQgXyBfID0gKClcbiAgZW5kKVxuXG4gIG1vZHVsZSBDYXNlVmFsdWVTZXQgPSBDYXNlVmFsdWVTZXRNYXAuU2V0XG4gIG1vZHVsZSBQcmVkaWNhdGVpZFNldCA9IE1vZHMuSW50U2V0XG4gIG1vZHVsZSBQcmVkaWNhdGVpZE1hcCA9IE1vZHMuSW50TWFwXG4gIG1vZHVsZSBTaWRNYXAgPSBNb2RzLkludE1hcFxuICBtb2R1bGUgQWdlbnRJZE1hcCA9IE1vZHMuSW50TWFwXG4gIG1vZHVsZSBBZ2VudElkMk1hcCA9IE1vZHMuSW50Mk1hcFxuICBtb2R1bGUgQWdlbnRJZFNldCA9IE1vZHMuSW50U2V0XG4gIG1vZHVsZSBBZ2VudElkMlNldCA9IE1vZHMuSW50MlNldFxuICBtb2R1bGUgU2l0ZUlkU2V0ID0gTW9kcy5JbnQyU2V0XG4gIG1vZHVsZSBTaXRlSWRNYXAgPSBNb2RzLkludDJNYXBcblxuICB0eXBlIHByZV9ibGFja2JvYXJkID0ge1xuICAgIHByZV9maWN0aXRpb3VzX2xpc3Q6IHByZWRpY2F0ZV9pZCBsaXN0O1xuICAgICAgICAoKiogbGlzdCBvZiB3aXJlIGZvciBtdXR1YWwgZXhjbHVzaW9ucywgdGhlIHN0YXRlIG11c3QgYmUgdW5kZWZpbmVkIGF0IHRoZSBlbmQgb2YgdGhlIHRyYWNlICopXG4gICAgcHJlX3N0ZXBzX2J5X2NvbHVtbjpcbiAgICAgIChzdGVwX3Nob3J0X2lkXG4gICAgICAqIChzdGVwX2lkICogc3RlcF9zaG9ydF9pZCAqIHByZWRpY2F0ZV92YWx1ZSAqIHByZWRpY2F0ZV92YWx1ZSkgbGlzdClcbiAgICAgIEEudDtcbiAgICAgICAgKCoqIG1hcHMgZWFjaCB3aXJlIHRvIHRoZSBsYXN0IGtub3duIHZhbHVlIGFuZCB0aGUgbGlzdCBvZiBzdGVwIChzdGVwIGlkLHRlc3QsYWN0aW9uKSopXG4gICAgcHJlX2tpbmRfb2ZfZXZlbnQ6IHJ1bGVfdHlwZSBBLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggZXZlbnQgaWQgdG8gdGhlIGtpbmQgb2YgZXZlbnQgKilcbiAgICBwcmVfZXZlbnQ6IFRyYWNlLnN0ZXAgQS50OyAgKCoqIG1hcHMgZWFjaCBldmVudCB0byB0aGUgc3RlcCAqKVxuICAgIHByZV9uc3RlcHM6IHN0ZXBfaWQ7ICAoKippZCBvZiB0aGUgbGFzdCBldmVudCAqKVxuICAgIHByZV9uY29sdW1uOiBwcmVkaWNhdGVfaWQ7ICAoKippZCBvZiB0aGUgbGFzdCB3aXJlICopXG4gICAgcHJlX2NvbHVtbl9tYXA6IHByZWRpY2F0ZV9pZCBQcmVkaWNhdGVNYXAudDtcbiAgICAgICAgKCoqIG1hcHMgZWFjaCB3aXJlIGxhYmVsIHRvIGl0cyB3aXJlIGlkICopXG4gICAgcHJlX2NvbHVtbl9tYXBfaW52OiBwcmVkaWNhdGVfaW5mbyBBLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggd2lyZSBpZCB0byBpdHMgd2lyZSBsYWJlbCAqKVxuICAgIHByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkOiBQcmVkaWNhdGVpZFNldC50IEEudDtcbiAgICAgICAgKCoqIG1hcHMgZWFjaCB3aXJlIGlkIGZvciB0aGUgcHJlc2VuY2Ugb2YgYW4gYWdlbnQgdG8gdGhlIHNldCBvZiB3aXJlcyBmb3IgaXRzIGF0dGlidXRlICh1c2VmdWwsIHdoZW4gYW4gYWdlbnQgZ2V0IHJlbW92ZWQsIGFsbCBpdHMgYXR0cmlidXRlcyBnZXQgdW5kZWZpbmVkICopXG4gICAgaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZDogQy50IEEudDtcbiAgICAgICAgKCogbWFwcyBlYWNoIHdpcmUgdG8gdGhlIHNldCBvZiBpdHMgcHJldmlvdXMgc3RhdGVzLCB0aGlzIHN1bW1hcml6ZSB0aGUgcG90ZW50aWFsIHN0YXRlIG9mIGEgc2l0ZSB0aGF0IGlzIGZyZWVkLCBzbyBhcyB0byBvdmVyYXBwcm94aW1hdGUgdGhlIHNldCBvZiBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzKilcbiAgICBoaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlOiBDSS5Qby5LLmFnZW50X2lkIGxpc3QgQS50O1xuICAgIHByZV9vYnNlcnZhYmxlX2xpc3Q6XG4gICAgICAoc3RlcF9pZCBsaXN0ICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb24pIGxpc3Q7XG4gICAgcHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50OiBDSS5Qby5LLnNpZGVfZWZmZWN0IEEudDtcbiAgICBwcmVfZmljdGl0aW91c19vYnNlcnZhYmxlOiBzdGVwX2lkIG9wdGlvbjtcbiAgICAgICAgKCppZCBvZiB0aGUgc3RlcCB0aGF0IGNsb3NlcyBhbGwgdGhlIHNpZGUtZWZmZWN0IG11dGV4ICopXG4gICAgcHJlX2xldmVsX29mX2V2ZW50OiBQcmlvcml0eS5sZXZlbCBBLnQ7XG4gIH1cblxuICBsZXQgbGV2ZWxzIGIgPSBiLnByZV9sZXZlbF9vZl9ldmVudFxuICBsZXQgZ2V0X3ByZV9jb2x1bW5fbWFwX2ludiB4ID0geC5wcmVfY29sdW1uX21hcF9pbnZcblxuICBsZXQgZ2V0X3ByZV9ldmVudCBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIHggPVxuICAgIGVycm9yLCBsb2dfaW5mbywgeC5wcmVfZXZlbnRcblxuICAoKiogcHJldHR5IHByaW50aW5nICopXG5cbiAgbGV0IHByaW50X3ByZWRpY2F0ZV9pbmZvIGxvZyB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEhlcmUgaSAtPiBMb2dnZXJzLmZwcmludGYgbG9nIFwiQWdlbnRfSGVyZSAlaVwiIGlcbiAgICB8IEJvdW5kX3NpdGUgKGksIHMpIC0+IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJCaW5kaW5nX3N0YXRlICglaSwlaSlcIiBpIHNcbiAgICB8IEludGVybmFsX3N0YXRlIChpLCBzKSAtPiBMb2dnZXJzLmZwcmludGYgbG9nIFwiSW50ZXJuYWxfc3RhdGUgKCVpLCVpKVwiIGkgc1xuICAgIHwgUG9pbnRlciAoZWlkLCBpZCkgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlBvaW50ZXIoZWlkOiVpLGFnX2lkOiVpKVwiIGVpZCBpZFxuICAgIHwgTGluayAoZWlkLCBpZDEsIGlkMikgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJMaW5rKGVpZDolaSwlaS0laSlcIiBlaWQgaWQxIGlkMlxuICAgIHwgTXV0ZXggKExvY2tfYWdlbnQgKGludCwgaW50MikpIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTXV0ZXggKFN0ZXAtaWQ6JWksQWdlbnRfaWQ6JWkpXCIgaW50IGludDJcbiAgICB8IE11dGV4IChMb2NrX3JlY3Rhbmd1bGFyIChpbnQsIGludDIpKSAtPlxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIk11dGV4X2ludiAoU3RlcC1pZDolaSxBZ2VudF9pZDolaSlcIiBpbnQgaW50MlxuICAgIHwgTXV0ZXggKExvY2tfbGlua3MgKGludCwgKGludDIsIGludDMpKSkgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJNdXRleF9saW5rcyAoU3RlcC1pZDolaSwlaS0laSlcIiBpbnQgaW50MiBpbnQzXG4gICAgfCBNdXRleCAoTG9ja19zaWRlX2VmZmVjdCAoaW50LCBpbnQyLCBpbnQzLCBpbnQ0KSkgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJNdXRleF9zaWRlX2VmZmVjdCAoU3RlcC1pZDolaSwlaS8laS4laSlcIiBpbnQgaW50MlxuICAgICAgICBpbnQzIGludDRcbiAgICB8IEZpY3RpdGlvdXMgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkZpY3RpdGlvdXNcIlxuXG4gIGxldCBwcmludF9rbm93biBsb2cgdCB4ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFVua25vd24gLT4gKClcbiAgICB8IFBvaW50ZXJfdG9fYWdlbnQgXyB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBQcmVzZW50IHwgRnJlZVxuICAgIHwgQm91bmQgfCBCb3VuZF90byBfIHwgQm91bmRfdG9fdHlwZSBfIHwgRGVmaW5lZCB8IFVuZGVmaW5lZCAtPlxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVzXCIgeFxuXG4gIGxldCBzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgQ291bnRlciBpbnQgLT4gXCJDb3VudGVyIFwiIF4gc3RyaW5nX29mX2ludCBpbnRcbiAgICB8IERlZmluZWQgLT4gXCJEZWZpbmVkXCJcbiAgICB8IEludGVybmFsX3N0YXRlX2lzIGludGVybmFsX3N0YXRlIC0+IHN0cmluZ19vZl9pbnQgaW50ZXJuYWxfc3RhdGVcbiAgICB8IFVuZGVmaW5lZCAtPiBcIlVuZGVmaW5lZFwiXG4gICAgfCBQcmVzZW50IC0+IFwiUHJlc2VudFwiXG4gICAgfCBGcmVlIC0+IFwiRnJlZVwiXG4gICAgfCBCb3VuZCAtPiBcIkJvdW5kXCJcbiAgICB8IEJvdW5kX3RvIChpZCwgYWdlbnRfaWQsIGFnZW50X25hbWUsIHNpdGUpIC0+XG4gICAgICBcIkJvdW5kKFwiIF4gc3RyaW5nX29mX2ludCBpZCBeIFwiLFwiIF4gc3RyaW5nX29mX2ludCBhZ2VudF9pZCBeIFwiKFwiXG4gICAgICBeIHN0cmluZ19vZl9pbnQgYWdlbnRfbmFtZSBeIFwiKUBcIiBeIHN0cmluZ19vZl9pbnQgc2l0ZSBeIFwiKVwiXG4gICAgfCBCb3VuZF90b190eXBlIChhZ2VudCwgc2l0ZSkgLT5cbiAgICAgIFwiQm91bmQoXCIgXiBzdHJpbmdfb2ZfaW50IGFnZW50IF4gXCJAXCIgXiBzdHJpbmdfb2ZfaW50IHNpdGUgXiBcIilcIlxuICAgIHwgUG9pbnRlcl90b19hZ2VudCBhZ2VudF9pZCAtPiBcIlBvaW50ZXIoXCIgXiBzdHJpbmdfb2ZfaW50IGFnZW50X2lkIF4gXCIpXCJcbiAgICB8IFVua25vd24gLT4gXCJcIlxuXG4gIGxldCBwcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIHggPVxuICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCIlc1wiIChzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIHgpXG5cbiAgbGV0IHByaW50X3ByZWRpY2F0ZV9pZCBsb2cgYmxhY2tib2FyZCBpID1cbiAgICBsZXQgcHJlZGljYXRlX2luZm8gPSBBLmdldCBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwX2ludiBpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlByZWRpY2F0ZTogJWkgXCIgaSBpblxuICAgIGxldCAoKSA9IHByaW50X3ByZWRpY2F0ZV9pbmZvIGxvZyBwcmVkaWNhdGVfaW5mbyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAoKVxuXG4gIGxldCBwcmludF9wcmVibGFja2JvYXJkIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgbG9nID0gQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKipQUkVCTEFDS0JPQVJEKipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKiAgYWdlbnQgdHlwZXMgKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBBLml0ZXJpXG4gICAgICAgIChmdW4gbmFtZSAtPlxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJBZ2VudCBuYW1lOiAlaSBcIiBuYW1lIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgIExpc3QuaXRlciAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiBpZDogJWkgXCIgeCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgICAgICgpKSlcbiAgICAgICAgYmxhY2tib2FyZC5oaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiogc3RlcHMgYnkgY29sdW1uICpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQS5pdGVyaVxuICAgICAgICAoZnVuIGlkIChuZXZlbnRzLCBsaXN0KSAtPlxuICAgICAgICAgIGxldCAoKSA9IHByaW50X3ByZWRpY2F0ZV9pZCBsb2cgYmxhY2tib2FyZCBpZCBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJuZXZlbnRzOiAlaSBcIiBuZXZlbnRzIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgKGZ1biAoZWlkLCBzZWlkLCB0ZXN0LCBhY3Rpb24pIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkV2ZW50IGlkOiAlaSBcIiBlaWQgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlNob3J0IGlkOiAlaSBcIiBzZWlkIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2tub3duIGxvZyB0ZXN0IFwiVEVTVDogICBcIiBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgdGVzdCBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9rbm93biBsb2cgYWN0aW9uIFwiQUNUSU9OOiBcIiBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgYWN0aW9uIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYgbGlzdClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCItLS1cIiBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAoKSlcbiAgICAgICAgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKiBTaWRlIGVmZmVjdHMgKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBBLml0ZXJpXG4gICAgICAgIChmdW4gaSBsaXN0IC0+XG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcImV2ZW50ICVpOiwgXCIgaSBpblxuICAgICAgICAgIGxldCAoKSA9IENJLlBvLksucHJpbnRfc2lkZV9lZmZlY3QgbG9nIGxpc3QgaW5cbiAgICAgICAgICAoKSlcbiAgICAgICAgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnRcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqUHJlZGljYXRlX2lkIHJlbGF0ZWQgdG8gdGhlIHByZWRpY2F0ZSAqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEEuaXRlcmlcbiAgICAgICAgKGZ1biBpIHMgLT5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfaWQgbG9nIGJsYWNrYm9hcmQgaSBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBQcmVkaWNhdGVpZFNldC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gcyAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIlaVwiIHMgaW5cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nKVxuICAgICAgICAgICAgICBzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiLS0tXCIgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgKCkpXG4gICAgICAgIGJsYWNrYm9hcmQucHJlZGljYXRlX2lkX2xpc3RfcmVsYXRlZF90b19wcmVkaWNhdGVfaWRcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqUGFzdCB2YWx1ZXMgb2YgYSBwcmVkaWNhdGUqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEEuaXRlcmlcbiAgICAgICAgKGZ1biBpIHMgLT5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfaWQgbG9nIGJsYWNrYm9hcmQgaSBpblxuICAgICAgICAgIGxldCAoKSA9IEMuaXRlciAoZnVuIHMgLT4gcHJpbnRfcHJlZGljYXRlX3ZhbHVlIGxvZyBzKSBzIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIi0tLVwiIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICgpKVxuICAgICAgICBibGFja2JvYXJkLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqT2JzZXJ2YWJsZXMqXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKGwsIF8pIC0+XG4gICAgICAgICAgbGV0IF8gPSBMaXN0Lml0ZXIgKExvZ2dlcnMuZnByaW50ZiBsb2cgXCIlaSxcIikgbCBpblxuICAgICAgICAgIGxldCBfID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICgpKVxuICAgICAgICBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKClcblxuICAoKiogaW5mb3JtYXRpb24gbGF0dGljZSAqKVxuXG4gIGxldCBzdHJpY3RseV9tb3JlX3JlZmluZWQgeCB5ID1cbiAgICBtYXRjaCB5IHdpdGhcbiAgICB8IFVuZGVmaW5lZCB8IFBvaW50ZXJfdG9fYWdlbnQgXyB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBQcmVzZW50XG4gICAgfCBGcmVlIHwgQm91bmRfdG8gXyAtPlxuICAgICAgZmFsc2VcbiAgICB8IEJvdW5kX3RvX3R5cGUgKGFnLCBzKSAtPlxuICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgfCBCb3VuZF90byAoXywgXywgYWcnLCBzJykgd2hlbiBhZyA9IGFnJyAmJiBzID0gcycgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgQm91bmQgLT5cbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgIHwgQm91bmRfdG8gXyB8IEJvdW5kX3RvX3R5cGUgXyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfCBEZWZpbmVkIC0+XG4gICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICB8IFVua25vd24gfCBEZWZpbmVkIHwgVW5kZWZpbmVkIC0+IGZhbHNlXG4gICAgICB8IF8gLT4gdHJ1ZSlcbiAgICB8IFVua25vd24gLT5cbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgIHwgVW5rbm93biAtPiBmYWxzZVxuICAgICAgfCBfIC0+IHRydWUpXG5cbiAgbGV0IG1vcmVfcmVmaW5lZCB4IHkgPSB4ID0geSB8fCBzdHJpY3RseV9tb3JlX3JlZmluZWQgeCB5XG5cbiAgbGV0IGNvbmogcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIHggeSA9XG4gICAgaWYgbW9yZV9yZWZpbmVkIHggeSB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIHhcbiAgICBlbHNlIGlmIHN0cmljdGx5X21vcmVfcmVmaW5lZCB5IHggdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCB5XG4gICAgZWxzZVxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcImNvbmosICBBcmd1bWVudHMgaGF2ZSBubyBncmVhdGVzdCBsb3dlciBib3VuZFwiXG4gICAgICAgIChGYWlsdXJlIFwiQXJndW1lbnRzIGhhdmUgbm8gZ3JlYXRlc3QgbG93ZXIgYm91bmRcIikgVW5kZWZpbmVkXG5cbiAgbGV0IGNvbXBhdGlibGUgeCB5ID0geCA9IHkgfHwgbW9yZV9yZWZpbmVkIHggeSB8fCBtb3JlX3JlZmluZWQgeSB4XG5cbiAgbGV0IGRpc2p1bmN0aW9uIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgeCB5ID1cbiAgICAoIGVycm9yLFxuICAgICAgbG9nX2luZm8sXG4gICAgICBpZiB4ID0geSB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB4LCB5IHdpdGhcbiAgICAgICAgfCBVbmtub3duLCBfIHwgXywgVW5rbm93biB8IFVuZGVmaW5lZCwgXyB8IF8sIFVuZGVmaW5lZCAtPiBVbmtub3duXG4gICAgICAgIHwgRGVmaW5lZCwgXyB8IF8sIERlZmluZWQgLT4gRGVmaW5lZFxuICAgICAgICB8IENvdW50ZXIgXywgX1xuICAgICAgICB8IF8sIENvdW50ZXIgX1xuICAgICAgICB8IEZyZWUsIF9cbiAgICAgICAgfCBfLCBGcmVlXG4gICAgICAgIHwgUHJlc2VudCwgX1xuICAgICAgICB8IF8sIFByZXNlbnRcbiAgICAgICAgfCBJbnRlcm5hbF9zdGF0ZV9pcyBfLCBfXG4gICAgICAgIHwgXywgSW50ZXJuYWxfc3RhdGVfaXMgXyAtPlxuICAgICAgICAgIERlZmluZWRcbiAgICAgICAgfCBCb3VuZCwgXyB8IF8sIEJvdW5kIC0+IEJvdW5kXG4gICAgICAgIHwgQm91bmRfdG9fdHlwZSAoYSwgYiksIEJvdW5kX3RvIChfLCBfLCBjLCBkKVxuICAgICAgICB8IEJvdW5kX3RvIChfLCBfLCBhLCBiKSwgQm91bmRfdG8gKF8sIF8sIGMsIGQpXG4gICAgICAgIHwgQm91bmRfdG8gKF8sIF8sIGEsIGIpLCBCb3VuZF90b190eXBlIChjLCBkKVxuICAgICAgICAgIHdoZW4gYSA9IGMgJiYgYiA9IGQgLT5cbiAgICAgICAgICBCb3VuZF90b190eXBlIChhLCBiKVxuICAgICAgICB8IF8gLT4gQm91bmRcbiAgICAgICkgKVxuXG4gICgqKiBwcmVkaWNhdGUgaWQgYWxsb2NhdGlvbiAqKVxuXG4gICgqKiBpZiBhIHdpcmUgY29uY2VybnMgYW4gYWdlbnQsIHdoaWNoIG9uZSBpdCBpcyAqKVxuICBsZXQgYWdlbnRfaWRfb2ZfcHJlZGljYXRlIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgSGVyZSB4IC0+IFNvbWUgeFxuICAgIHwgQm91bmRfc2l0ZSAoeCwgXykgLT4gU29tZSB4XG4gICAgfCBJbnRlcm5hbF9zdGF0ZSAoeCwgXykgLT4gU29tZSB4XG4gICAgfCBQb2ludGVyIF8gfCBNdXRleCBfIHwgTGluayBfIHwgRmljdGl0aW91cyAtPiBOb25lXG5cbiAgbGV0IHJlYyBiaW5kIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgX3ByZWRpY2F0ZVxuICAgICAgcHJlZGljYXRlX2lkIGFnX2lkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBzaWQgPVxuICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCAoSGVyZSBhZ19pZClcbiAgICBpblxuICAgIGxldCBvbGRfc2V0ID1cbiAgICAgIHRyeSBBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkIHNpZFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT4gUHJlZGljYXRlaWRTZXQuZW1wdHlcbiAgICBpblxuICAgIGxldCBuZXdfc2V0ID0gUHJlZGljYXRlaWRTZXQuYWRkIHByZWRpY2F0ZV9pZCBvbGRfc2V0IGluXG4gICAgdHJ5XG4gICAgICBsZXQgXyA9XG4gICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlZGljYXRlX2lkX2xpc3RfcmVsYXRlZF90b19wcmVkaWNhdGVfaWQgc2lkIG5ld19zZXRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcImJpbmQsIE91dCBvZiBib3VuZCBhY2Nlc3NcIlxuICAgICAgICAoRmFpbHVyZSBcImJpbmRcIikgYmxhY2tib2FyZFxuXG4gIGFuZCBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHByZWRpY2F0ZSA9XG4gICAgbGV0IGFnX2lkID0gYWdlbnRfaWRfb2ZfcHJlZGljYXRlIHByZWRpY2F0ZSBpblxuICAgIGxldCBtYXAgPSBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwIGluXG4gICAgbGV0IG1hcF9pbnYgPSBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwX2ludiBpblxuICAgIG1hdGNoIFByZWRpY2F0ZU1hcC5maW5kX29wdGlvbiBwcmVkaWNhdGUgbWFwIHdpdGhcbiAgICB8IFNvbWUgc2lkIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgc2lkXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgc2lkJyA9IGJsYWNrYm9hcmQucHJlX25jb2x1bW4gKyAxIGluXG4gICAgICBsZXQgbWFwJyA9IFByZWRpY2F0ZU1hcC5hZGQgcHJlZGljYXRlIHNpZCcgbWFwIGluXG4gICAgICBsZXQgXyA9IEEuc2V0IG1hcF9pbnYgc2lkJyBwcmVkaWNhdGUgaW5cbiAgICAgIGxldCBtYXBfaW52JyA9IG1hcF9pbnYgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5oaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkIHNpZCdcbiAgICAgICAgICAoQy5jcmVhdGUgcGFyYW1ldGVyLkNJLlBvLksuSC5jYWNoZV9zaXplKVxuICAgICAgaW5cbiAgICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgICAge1xuICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgIHByZV9uY29sdW1uID0gc2lkJztcbiAgICAgICAgICBwcmVfY29sdW1uX21hcCA9IG1hcCc7XG4gICAgICAgICAgcHJlX2NvbHVtbl9tYXBfaW52ID0gbWFwX2ludic7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgbWF0Y2ggYWdfaWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgIHwgU29tZSBhZ19pZCAtPlxuICAgICAgICAgIGJpbmQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcmVkaWNhdGUgc2lkJyBhZ19pZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgc2lkJ1xuXG4gIGxldCBjcmVhdGVfYWdlbnQgX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGFnZW50X25hbWUgYWdlbnRfaWQgPVxuICAgIGxldCBvbGRfbGlzdCA9XG4gICAgICB0cnkgQS5nZXQgYmxhY2tib2FyZC5oaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlIGFnZW50X25hbWVcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFtdXG4gICAgaW5cbiAgICBsZXQgbmV3X2xpc3QgPSBhZ2VudF9pZCA6OiBvbGRfbGlzdCBpblxuICAgIGxldCBfID0gQS5zZXQgYmxhY2tib2FyZC5oaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlIGFnZW50X25hbWUgbmV3X2xpc3QgaW5cbiAgICBlcnJvciwgYmxhY2tib2FyZFxuXG4gIGxldCBmcmVlX2FnZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWdlbnRfaWQgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIChIZXJlIGFnZW50X2lkKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc2V0ID1cbiAgICAgIHRyeVxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIEEuZ2V0IGJsYWNrYm9hcmQucHJlZGljYXRlX2lkX2xpc3RfcmVsYXRlZF90b19wcmVkaWNhdGVfaWRcbiAgICAgICAgICAgIHByZWRpY2F0ZV9pZCApXG4gICAgICB3aXRoIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlwiZnJlZV9hZ2VudCwgVHJ5IHRvIGZyZWUgYW4gdW5leGlzdGluZyBhZ2VudFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJmcmVlX2FnZW50XCIpIFByZWRpY2F0ZWlkU2V0LmVtcHR5XG4gICAgaW5cbiAgICBsZXQgbWFwID1cbiAgICAgIFByZWRpY2F0ZWlkU2V0LmZvbGRcbiAgICAgICAgKGZ1biBwcmVkaWNhdGVfaWQgbWFwIC0+XG4gICAgICAgICAgbGV0IHByZWRpY2F0ZSA9IEEuZ2V0IGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXBfaW52IHByZWRpY2F0ZV9pZCBpblxuICAgICAgICAgIFByZWRpY2F0ZU1hcC5yZW1vdmUgcHJlZGljYXRlIG1hcClcbiAgICAgICAgc2V0IGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXBcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgeyBibGFja2JvYXJkIHdpdGggcHJlX2NvbHVtbl9tYXAgPSBtYXAgfVxuXG4gIGxldCBmcmVlX2FnZW50X2lmX2l0X2V4aXN0cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBhZ2VudF9pZCA9XG4gICAgaWYgUHJlZGljYXRlTWFwLm1lbSAoSGVyZSBhZ2VudF9pZCkgYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcCB0aGVuXG4gICAgICBmcmVlX2FnZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWdlbnRfaWRcbiAgICBlbHNlXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgcHJlZGljYXRlc19vZl9hY3Rpb25fbm9fc3VicyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBpbml0IGFjdGlvbiA9XG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIChhZywgaW50ZXJmYWNlKSAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IGFnZW50X25hbWUgPSBDSS5Qby5LLmFnZW50X25hbWVfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgIGNyZWF0ZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGFnZW50X25hbWUgYWdfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgaWYgaW5pdCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmcmVlX2FnZW50X2lmX2l0X2V4aXN0cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBhZ19pZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgICBpblxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBsaXN0MSwgbGlzdDIpIChzX2lkLCBvcHQpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzX2lkKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsaXN0MSA9IChwcmVkaWNhdGVfaWQsIEZyZWUpIDo6IGxpc3QxIGluXG4gICAgICAgICAgbGV0IGxpc3QyID0gKHByZWRpY2F0ZV9pZCwgVW5kZWZpbmVkKSA6OiBsaXN0MiBpblxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdDEsIGxpc3QyXG4gICAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAoSW50ZXJuYWxfc3RhdGUgKGFnX2lkLCBzX2lkKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgKHByZWRpY2F0ZV9pZCwgSW50ZXJuYWxfc3RhdGVfaXMgeCkgOjogbGlzdDEsXG4gICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCkgOjogbGlzdDIgKSlcbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIFsgcHJlZGljYXRlX2lkLCBQcmVzZW50IF0sXG4gICAgICAgICAgWyBwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCBdIClcbiAgICAgICAgaW50ZXJmYWNlXG4gICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoc2l0ZSwgaW50KSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChJbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBJbnRlcm5hbF9zdGF0ZV9pcyBpbnQgXSwgW11cbiAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDEgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDIgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZGljYXRlX2lkMSwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDIsIGFnX2lkMiwgYWdlbnRfbmFtZTIsIHNpdGVfaWQyKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10gKVxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzMSwgczIpIC0+XG4gICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgYWdlbnRfbmFtZTEgPSBDSS5Qby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDEgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDIgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZGljYXRlX2lkMSwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDIsIGFnX2lkMiwgYWdlbnRfbmFtZTIsIHNpdGVfaWQyKTtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQyLCBCb3VuZF90byAocHJlZGljYXRlX2lkMSwgYWdfaWQxLCBhZ2VudF9uYW1lMSwgc2l0ZV9pZDEpO1xuICAgICAgICBdLFxuICAgICAgICBbXSApXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBGcmVlIF0sIFtdXG4gICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBhZyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCAoSGVyZSBhZ19pZClcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgZnJlZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFnX2lkXG4gICAgICBpblxuICAgICAgbGV0IHNldCA9XG4gICAgICAgIEEuZ2V0IGJsYWNrYm9hcmQucHJlZGljYXRlX2lkX2xpc3RfcmVsYXRlZF90b19wcmVkaWNhdGVfaWQgcHJlZGljYXRlX2lkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkLCBsaXN0ID1cbiAgICAgICAgUHJlZGljYXRlaWRTZXQuZm9sZFxuICAgICAgICAgIChmdW4gcHJlZGljYXRlaWQgKGVycm9yLCBibGFja2JvYXJkLCBsaXN0KSAtPlxuICAgICAgICAgICAgZXJyb3IsIGJsYWNrYm9hcmQsIChwcmVkaWNhdGVpZCwgVW5kZWZpbmVkKSA6OiBsaXN0KVxuICAgICAgICAgIHNldFxuICAgICAgICAgIChlcnJvciwgYmxhY2tib2FyZCwgWyBwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCBdKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdCwgW11cblxuICBsZXQgcHJlZGljYXRlc19vZl9hY3Rpb25fc3VicyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGluaXRcbiAgICAgIGFjdGlvbiA9XG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIChhZywgaW50ZXJmYWNlKSAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IGFnZW50X25hbWUgPSBDSS5Qby5LLmFnZW50X25hbWVfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgIGNyZWF0ZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGFnZW50X25hbWUgYWdfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgaWYgaW5pdCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmcmVlX2FnZW50X2lmX2l0X2V4aXN0cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBhZ19pZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgICBpblxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBsaXN0MSwgbGlzdDIpIChzX2lkLCBvcHQpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzX2lkKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsaXN0MSA9IChwcmVkaWNhdGVfaWQsIEZyZWUpIDo6IGxpc3QxIGluXG4gICAgICAgICAgbGV0IGxpc3QyID0gKHByZWRpY2F0ZV9pZCwgVW5kZWZpbmVkKSA6OiBsaXN0MiBpblxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdDEsIGxpc3QyXG4gICAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAoSW50ZXJuYWxfc3RhdGUgKGFnX2lkLCBzX2lkKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgKHByZWRpY2F0ZV9pZCwgSW50ZXJuYWxfc3RhdGVfaXMgeCkgOjogbGlzdDEsXG4gICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCkgOjogbGlzdDIgKSlcbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIFsgcHJlZGljYXRlX2lkLCBQcmVzZW50IF0sXG4gICAgICAgICAgWyBwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCBdIClcbiAgICAgICAgaW50ZXJmYWNlXG4gICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoc2l0ZSwgaW50KSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChJbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBJbnRlcm5hbF9zdGF0ZV9pcyBpbnQgXSwgW11cbiAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDEgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDIgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZGljYXRlX2lkMSwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDIsIGFnX2lkMiwgYWdlbnRfbmFtZTIsIHNpdGVfaWQyKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10gKVxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzMSwgczIpIC0+XG4gICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgYWdlbnRfbmFtZTEgPSBDSS5Qby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDEgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDIgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZGljYXRlX2lkMSwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDIsIGFnX2lkMiwgYWdlbnRfbmFtZTIsIHNpdGVfaWQyKTtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQyLCBCb3VuZF90byAocHJlZGljYXRlX2lkMSwgYWdfaWQxLCBhZ2VudF9uYW1lMSwgc2l0ZV9pZDEpO1xuICAgICAgICBdLFxuICAgICAgICBbXSApXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBGcmVlIF0sIFtdXG4gICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBhZyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCAoSGVyZSBhZ19pZClcbiAgICAgIGluXG4gICAgICAoKiAgICAgICAgICAgICAgIGxldCBlcnJvcixibGFja2JvYXJkID0gZnJlZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGFnX2lkIGluICopXG4gICAgICBsZXQgc2V0ID1cbiAgICAgICAgQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVfaWRfbGlzdF9yZWxhdGVkX3RvX3ByZWRpY2F0ZV9pZCBwcmVkaWNhdGVfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBsaXN0ID1cbiAgICAgICAgUHJlZGljYXRlaWRTZXQuZm9sZFxuICAgICAgICAgIChmdW4gcHJlZGljYXRlaWQgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdCkgLT5cbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgKHByZWRpY2F0ZWlkLCBVbmRlZmluZWQpIDo6IGxpc3QpXG4gICAgICAgICAgc2V0XG4gICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgWyBwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCBdKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdCwgW11cblxuICBsZXQgcHJlZGljYXRlc19vZl9hY3Rpb24gYm9vbCA9XG4gICAgaWYgYm9vbCB0aGVuXG4gICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbl9zdWJzXG4gICAgZWxzZVxuICAgICAgcHJlZGljYXRlc19vZl9hY3Rpb25fbm9fc3Vic1xuXG4gIGxldCBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB0ZXN0ID1cbiAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZ2VudCAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCAoSGVyZSBhZ19pZClcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBQcmVzZW50IF1cbiAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChzaXRlLCBpbnQpIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEludGVybmFsX3N0YXRlXG4gICAgICAgICAgICAgKENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlLCBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUpKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgWyBwcmVkaWNhdGVfaWQsIEludGVybmFsX3N0YXRlX2lzIGludCBdXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBGcmVlIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIGxldCBhZ19pZDEgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ19pZDIgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMSA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgYWdlbnRfbmFtZTIgPSBDSS5Qby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IHNpdGVfaWQxID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IHNpdGVfaWQyID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkMSA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoQm91bmRfc2l0ZSAoYWdfaWQxLCBzaXRlX2lkMSkpXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkMiA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoQm91bmRfc2l0ZSAoYWdfaWQyLCBzaXRlX2lkMikpXG4gICAgICBpblxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgIFtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQxLCBCb3VuZF90byAocHJlZGljYXRlX2lkMiwgYWdfaWQyLCBhZ2VudF9uYW1lMiwgc2l0ZV9pZDIpO1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDIsIEJvdW5kX3RvIChwcmVkaWNhdGVfaWQxLCBhZ19pZDEsIGFnZW50X25hbWUxLCBzaXRlX2lkMSk7XG4gICAgICAgIF0gKVxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBzIC0+XG4gICAgICBsZXQgYWdfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHNpdGVfaWQgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgWyBwcmVkaWNhdGVfaWQsIEJvdW5kIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSAocywgKGFnZW50X25hbWUsIHNpdGVfbmFtZSkpIC0+XG4gICAgICBsZXQgYWdfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHNpdGVfaWQgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbIHByZWRpY2F0ZV9pZCwgQm91bmRfdG9fdHlwZSAoYWdlbnRfbmFtZSwgc2l0ZV9uYW1lKSBdIClcblxuICBsZXQgdHlwZV9vZl9zdGVwIHggPVxuICAgIGlmIFRyYWNlLnN0ZXBfaXNfb2JzIHggdGhlblxuICAgICAgT2JzZXJ2YWJsZVxuICAgIGVsc2UgaWYgVHJhY2Uuc3RlcF9pc19pbml0IHggdGhlblxuICAgICAgSW5pdFxuICAgIGVsc2UgaWYgVHJhY2Uuc3RlcF9pc19ydWxlIHggdGhlblxuICAgICAgUnVsZVxuICAgIGVsc2UgaWYgVHJhY2Uuc3RlcF9pc19zdWJzIHggdGhlblxuICAgICAgU3Vic1xuICAgIGVsc2VcbiAgICAgIER1bW15XG5cbiAgKCoqIGluaXRpYWxpc2F0aW9uKilcbiAgbGV0IGluaXQgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciA9XG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAge1xuICAgICAgICBwcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgPSBBLm1ha2UgMSBDSS5Qby5LLmVtcHR5X3NpZGVfZWZmZWN0O1xuICAgICAgICBwcmVfZXZlbnQgPSBBLm1ha2UgMSAoVHJhY2UuZHVtbXlfc3RlcCBcIlwiKTtcbiAgICAgICAgcHJlX2ZpY3RpdGlvdXNfbGlzdCA9IFtdO1xuICAgICAgICBwcmVfc3RlcHNfYnlfY29sdW1uID0gQS5tYWtlIDEgKDEsIFtdKTtcbiAgICAgICAgcHJlX25zdGVwcyA9IC0xO1xuICAgICAgICBwcmVfbmNvbHVtbiA9IC0xO1xuICAgICAgICBwcmVfY29sdW1uX21hcCA9IFByZWRpY2F0ZU1hcC5lbXB0eTtcbiAgICAgICAgcHJlX2NvbHVtbl9tYXBfaW52ID0gQS5tYWtlIDEgRmljdGl0aW91cztcbiAgICAgICAgcHJlX2tpbmRfb2ZfZXZlbnQgPSBBLm1ha2UgMSAoU2lkZV9lZmZlY3Rfb2YgKC0xLCBbXSkpO1xuICAgICAgICBoaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkID0gQS5tYWtlIDEgKEMuY3JlYXRlIE5vbmUpO1xuICAgICAgICBoaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlID0gQS5tYWtlIDEgW107XG4gICAgICAgIHByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkID1cbiAgICAgICAgICBBLm1ha2UgMSBQcmVkaWNhdGVpZFNldC5lbXB0eTtcbiAgICAgICAgcHJlX29ic2VydmFibGVfbGlzdCA9IFtdO1xuICAgICAgICBwcmVfZmljdGl0aW91c19vYnNlcnZhYmxlID0gTm9uZTtcbiAgICAgICAgcHJlX2xldmVsX29mX2V2ZW50ID0gQS5tYWtlIDEgUHJpb3JpdHkuaGlnaGVzdDtcbiAgICAgIH0gKVxuXG4gIGxldCBnZXRfbGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZWlkID1cbiAgICB0cnkgZXJyb3IsIGxvZ19pbmZvLCBBLmdldCBibGFja2JvYXJkLnByZV9sZXZlbF9vZl9ldmVudCBlaWRcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfXyAoRmFpbHVyZSBcIlVOa25vd24gZXZlbnRcIilcbiAgICAgICAgUHJpb3JpdHkuaGlnaGVzdFxuXG4gIGxldCBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkID1cbiAgICBsZXQgbnNpZCA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyArIDEgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19uX3NpZGVfZXZlbnRzIGxvZ19pbmZvIGluXG4gICAgbGV0IHRlc3QgPSBVbmRlZmluZWQgaW5cbiAgICBsZXQgYWN0aW9uID0gQ291bnRlciAwIGluXG4gICAgbGV0IF8gPVxuICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uIHByZWRpY2F0ZV9pZFxuICAgICAgICAoMiwgWyBuc2lkLCAxLCB0ZXN0LCBhY3Rpb24gXSlcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgeyBibGFja2JvYXJkIHdpdGggcHJlX25zdGVwcyA9IG5zaWQgfVxuXG4gIGxldCBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uX2F0X25zaWQgbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmQgbnNpZFxuICAgICAgPVxuICAgIGxldCB0ZXN0ID0gVW5kZWZpbmVkIGluXG4gICAgbGV0IGFjdGlvbiA9IENvdW50ZXIgMCBpblxuICAgIGxldCBfID1cbiAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtbiBwcmVkaWNhdGVfaWRcbiAgICAgICAgKDIsIFsgbnNpZCwgMSwgdGVzdCwgYWN0aW9uIF0pXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZCBpbml0X3N0ZXAgPVxuICAgIG1hdGNoIGluaXRfc3RlcCB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgU29tZSBibGFja2JvYXJkLnByZV9uc3RlcHNcbiAgICB8IFNvbWUgbnNpZCAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb25fYXRfbnNpZCBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgICAgIG5zaWRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcFxuXG4gIGxldCBhZGRfZmljdGl0aW91c19hY3Rpb24gZXJyb3IgdGVzdCBhY3Rpb24gcHJlZGljYXRlX2lkIGJsYWNrYm9hcmQgPVxuICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzIGluXG4gICAgbGV0IG1hcCA9IGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtbiBpblxuICAgIGxldCB2YWx1ZSwgbGlzdCA9IEEuZ2V0IG1hcCBwcmVkaWNhdGVfaWQgaW5cbiAgICBsZXQgdmFsdWUnID0gdmFsdWUgKyAxIGluXG4gICAgbGV0IF8gPVxuICAgICAgQS5zZXQgbWFwIHByZWRpY2F0ZV9pZCAodmFsdWUnLCAobnNpZCwgdmFsdWUsIHRlc3QsIGFjdGlvbikgOjogbGlzdClcbiAgICBpblxuICAgIGVycm9yLCBibGFja2JvYXJkXG5cbiAgbGV0IHNpZGVfZWZmZWN0IHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfdGFyZ2V0X2lkIHMgc2l0ZSA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBEZWZpbmVkIHwgQ291bnRlciBfIHwgSW50ZXJuYWxfc3RhdGVfaXMgXyB8IFVuZGVmaW5lZCB8IFBvaW50ZXJfdG9fYWdlbnQgX1xuICAgIHwgUHJlc2VudCB8IEJvdW5kIHwgQm91bmRfdG9fdHlwZSBfIHwgVW5rbm93biAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcIklsbGVnYWwgc3RhdGUgZm9yIGEgc2lkZS1lZmZlY3RzXCJcbiAgICAgICAgKEZhaWx1cmUgXCJCbGFja2JvYXJkX2dlbmVyYXRpb24uc2lkZV9lZmZlY3RcIikgW11cbiAgICB8IEZyZWUgLT4gZXJyb3IsIGxvZ19pbmZvLCBbIHByZWRpY2F0ZV90YXJnZXRfaWQsIE5vbmUsIChGcmVlLCBVbmtub3duKSBdXG4gICAgfCBCb3VuZF90byAocGlkLCBhZywgYWdlbnRfbmFtZSwgc25hbWUpIC0+XG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV90YXJnZXRfaWQsIE5vbmUsIChzLCBVbmtub3duKTtcbiAgICAgICAgICAoIHBpZCxcbiAgICAgICAgICAgIFNvbWUgKChhZywgYWdlbnRfbmFtZSksIHNuYW1lKSxcbiAgICAgICAgICAgICggQm91bmRfdG9cbiAgICAgICAgICAgICAgICAoIHByZWRpY2F0ZV90YXJnZXRfaWQsXG4gICAgICAgICAgICAgICAgICBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSxcbiAgICAgICAgICAgICAgICAgIENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHNpdGUsXG4gICAgICAgICAgICAgICAgICBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUgKSxcbiAgICAgICAgICAgICAgRnJlZSApICk7XG4gICAgICAgIF0gKVxuXG4gIGxldCBwcmVkaWNhdGVfdmFsdWVfb2ZfYmluZGluZ19zdGF0ZSBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgPVxuICAgIGZ1bmN0aW9uXG4gICAgfCBJbnN0YW50aWF0aW9uLkFOWSAtPiBlcnJvciwgbG9nX2luZm8sIFVua25vd25cbiAgICB8IEluc3RhbnRpYXRpb24uRlJFRSAtPiBlcnJvciwgbG9nX2luZm8sIEZyZWVcbiAgICB8IEluc3RhbnRpYXRpb24uQk9VTkQgLT4gZXJyb3IsIGxvZ19pbmZvLCBCb3VuZFxuICAgIHwgSW5zdGFudGlhdGlvbi5CT1VORF9UWVBFIGJ0IC0+XG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgQm91bmRfdG9fdHlwZVxuICAgICAgICAgICggQ0kuUG8uSy5hZ2VudF9uYW1lX29mX2JpbmRpbmdfdHlwZSBidCxcbiAgICAgICAgICAgIENJLlBvLksuc2l0ZV9uYW1lX29mX2JpbmRpbmdfdHlwZSBidCApIClcbiAgICB8IEluc3RhbnRpYXRpb24uQk9VTkRfdG8gXyAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcIklsbGVnYWwgYmluZGluZyBzdGF0ZSBpbiBwcmVkaWNhdGVfdmFsdWVfb2ZfYmluZGluZ19zdGF0ZVwiXG4gICAgICAgIChGYWlsdXJlIFwicHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhdGVcIikgVW5rbm93blxuXG4gIGxldCBwb3RlbnRpYWxfdGFyZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc2l0ZVxuICAgICAgYmluZGluZ19zdGF0ZSA9XG4gICAgbGV0IGFnZW50X2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUgaW5cbiAgICBsZXQgc2l0ZV9uYW1lID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX3RhcmdldF9pZCA9XG4gICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIChCb3VuZF9zaXRlIChhZ2VudF9pZCwgc2l0ZV9uYW1lKSlcbiAgICBpblxuICAgIGxldCBmb3JtZXJfc3RhdGVzID1cbiAgICAgIEEuZ2V0IGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZFxuICAgICAgICBwcmVkaWNhdGVfdGFyZ2V0X2lkXG4gICAgaW5cbiAgICBtYXRjaCBwYXJhbWV0ZXIuQ0kuUG8uSy5ILmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSB3aXRoXG4gICAgfCBOb25lIHwgU29tZSBTdG9yeV9qc29uLkNhdXNhbCAtPlxuICAgICAgbGV0IHMgPSBDLmxhc3QgZm9ybWVyX3N0YXRlcyBpblxuICAgICAgKG1hdGNoIHMgd2l0aFxuICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW11cbiAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJ0ID1cbiAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVfb2ZfYmluZGluZ19zdGF0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgYmluZGluZ19zdGF0ZVxuICAgICAgICBpblxuICAgICAgICBpZiBtb3JlX3JlZmluZWQgcyBidCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsID1cbiAgICAgICAgICAgIHNpZGVfZWZmZWN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV90YXJnZXRfaWQgc1xuICAgICAgICAgICAgICBzaXRlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgbCBdXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW10pXG4gICAgfCBTb21lIChTdG9yeV9qc29uLlN0cm9uZyB8IFN0b3J5X2pzb24uV2VhaykgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJ0ID1cbiAgICAgICAgcHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICBiaW5kaW5nX3N0YXRlXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgIEMuZm9sZFxuICAgICAgICAgIChmdW4gcyAoZXJyb3IsIGxvZ19pbmZvLCBsaXN0KSAtPlxuICAgICAgICAgICAgaWYgbW9yZV9yZWZpbmVkIHMgYnQgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGwgPVxuICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV90YXJnZXRfaWRcbiAgICAgICAgICAgICAgICAgIHMgc2l0ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGwgOjogbGlzdFxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgbGlzdClcbiAgICAgICAgICBmb3JtZXJfc3RhdGVzIChlcnJvciwgbG9nX2luZm8sIFtdKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdFxuXG4gIHR5cGUgZGF0YV9zdHJ1Y3R1cmVfc3Ryb25nID0ge1xuICAgIG5ld19hZ2VudHM6IEFnZW50SWRTZXQudDtcbiAgICBvbGRfYWdlbnRzOiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWUgQWdlbnRJZE1hcC50O1xuICAgIG9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvbjogQ0kuUG8uSy5hZ2VudF9pZCBsaXN0IEFnZW50SWRNYXAudDtcbiAgICBzdXJlX2FnZW50czogQWdlbnRJZFNldC50O1xuICAgIHN1cmVfbGlua3M6IEFnZW50SWQyU2V0LnQ7XG4gICAgb3RoZXJfbGlua3M6IEFnZW50SWQyU2V0LnQ7XG4gICAgc2l0ZXNfaW5fb3RoZXJfbGlua3M6IFNpdGVJZFNldC50O1xuICAgIHNpdGVzX2luX290aGVyX2FjdGlvbl9saW5rczogU2l0ZUlkU2V0LnQ7XG4gICAgb3RoZXJfbGlua3NfdGVzdF9zaXRlczogQ0kuUG8uSy5hZ2VudF9pZCBTaXRlSWRNYXAudDtcbiAgICBvdGhlcl9saW5rc19hY3Rpb25fc2l0ZXM6IENJLlBvLksuYWdlbnRfaWQgU2l0ZUlkTWFwLnQ7XG4gICAgc3VyZV90ZXN0czogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdDtcbiAgICBzdXJlX2FjdGlvbnM6IEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdDtcbiAgICBjcmVhdGVfYWN0aW9uczogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmFjdGlvbiBsaXN0O1xuICAgIHN1cmVfc2lkZV9lZmZlY3RzOlxuICAgICAgKEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlXG4gICAgICAqIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5iaW5kaW5nX3N0YXRlKVxuICAgICAgbGlzdDtcbiAgICBvdGhlcl9hZ2VudHNfdGVzdHM6XG4gICAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24udGVzdCBsaXN0IEFnZW50SWRNYXAudDtcbiAgICBvdGhlcl9hZ2VudHNfYWN0aW9uczpcbiAgICAgIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdCBBZ2VudElkTWFwLnQ7XG4gICAgb3RoZXJfbGlua3NfdGVzdHM6XG4gICAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24udGVzdCBsaXN0IEFnZW50SWQyTWFwLnQ7XG4gICAgb3RoZXJfbGlua3NfYWN0aW9uczpcbiAgICAgIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdCBBZ2VudElkMk1hcC50O1xuICAgIG90aGVyX2xpbmtzX3ByaW9yaXR5OiBBZ2VudElkMlNldC50O1xuICAgIG90aGVyX2FnZW50c19zaWRlX2VmZmVjdHM6XG4gICAgICAoSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGVcbiAgICAgICogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmJpbmRpbmdfc3RhdGUpXG4gICAgICBsaXN0XG4gICAgICBBZ2VudElkTWFwLnQ7XG4gICAgc3Vic19hZ2VudHNfaW52b2x2ZWRfaW5fbGlua3M6IEFnZW50SWRTZXQudDtcbiAgICBydWxlX2FnZW50X2lkX211dGV4OiBwcmVkaWNhdGVfaWQgQWdlbnRJZE1hcC50O1xuICAgIHJ1bGVfYWdlbnRfaWRfc3ViczogcHJlZGljYXRlX2lkIEFnZW50SWRNYXAudDtcbiAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4OiBwcmVkaWNhdGVfaWQgQWdlbnRJZE1hcC50O1xuICAgIGxpbmtzX211dGV4OiBwcmVkaWNhdGVfaWQgQWdlbnRJZDJNYXAudDtcbiAgICByZW1vdmVkX2FnZW50czogQWdlbnRJZFNldC50O1xuICAgIHJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3M6IFNpdGVJZFNldC50O1xuICB9XG5cbiAgbGV0IGluaXRfZGF0YV9zdHJ1Y3R1cmVfc3Ryb25nID1cbiAgICB7XG4gICAgICBuZXdfYWdlbnRzID0gQWdlbnRJZFNldC5lbXB0eTtcbiAgICAgIG9sZF9hZ2VudHMgPSBBZ2VudElkTWFwLmVtcHR5O1xuICAgICAgb2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uID0gQWdlbnRJZE1hcC5lbXB0eTtcbiAgICAgIHN1cmVfYWdlbnRzID0gQWdlbnRJZFNldC5lbXB0eTtcbiAgICAgIHN1cmVfbGlua3MgPSBBZ2VudElkMlNldC5lbXB0eTtcbiAgICAgIG90aGVyX2xpbmtzID0gQWdlbnRJZDJTZXQuZW1wdHk7XG4gICAgICBvdGhlcl9saW5rc190ZXN0X3NpdGVzID0gU2l0ZUlkTWFwLmVtcHR5O1xuICAgICAgb3RoZXJfbGlua3NfYWN0aW9uX3NpdGVzID0gU2l0ZUlkTWFwLmVtcHR5O1xuICAgICAgc2l0ZXNfaW5fb3RoZXJfbGlua3MgPSBTaXRlSWRTZXQuZW1wdHk7XG4gICAgICBzaXRlc19pbl9vdGhlcl9hY3Rpb25fbGlua3MgPSBTaXRlSWRTZXQuZW1wdHk7XG4gICAgICBzdXJlX3Rlc3RzID0gW107XG4gICAgICBzdXJlX2FjdGlvbnMgPSBbXTtcbiAgICAgIGNyZWF0ZV9hY3Rpb25zID0gW107XG4gICAgICBzdXJlX3NpZGVfZWZmZWN0cyA9IFtdO1xuICAgICAgb3RoZXJfYWdlbnRzX3Rlc3RzID0gQWdlbnRJZE1hcC5lbXB0eTtcbiAgICAgIG90aGVyX2FnZW50c19hY3Rpb25zID0gQWdlbnRJZE1hcC5lbXB0eTtcbiAgICAgIG90aGVyX2xpbmtzX3ByaW9yaXR5ID0gQWdlbnRJZDJTZXQuZW1wdHk7XG4gICAgICBvdGhlcl9saW5rc190ZXN0cyA9IEFnZW50SWQyTWFwLmVtcHR5O1xuICAgICAgb3RoZXJfbGlua3NfYWN0aW9ucyA9IEFnZW50SWQyTWFwLmVtcHR5O1xuICAgICAgb3RoZXJfYWdlbnRzX3NpZGVfZWZmZWN0cyA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBzdWJzX2FnZW50c19pbnZvbHZlZF9pbl9saW5rcyA9IEFnZW50SWRTZXQuZW1wdHk7XG4gICAgICBydWxlX2FnZW50X2lkX211dGV4ID0gQWdlbnRJZE1hcC5lbXB0eTtcbiAgICAgIHJ1bGVfYWdlbnRfaWRfc3VicyA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBsaW5rc19tdXRleCA9IEFnZW50SWQyTWFwLmVtcHR5O1xuICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICByZW1vdmVkX2FnZW50cyA9IEFnZW50SWRTZXQuZW1wdHk7XG4gICAgICByZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzID0gU2l0ZUlkU2V0LmVtcHR5O1xuICAgIH1cblxuICBsZXQgcHJpbnRfZGF0YV9zdHJ1Y3R1cmUgX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBfZGF0YSA9XG4gICAgKCogbGV0IHN0ZGVyciA9IHBhcmFtZXRlci5DSS5Qby5LLkgub3V0X2NoYW5uZWxfZXJyIGluXG4gICAgICAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGhhbmRsZXIuQ0kuUG8uSy5ILmVudiBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiTmV3IGFnZW50czogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBBZ2VudElkU2V0Lml0ZXIgKEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAlaSBALlwiKSBkYXRhLm5ld19hZ2VudHNcbiAgICAgICBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiT2xkIGFnZW50czogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBBZ2VudElkTWFwLml0ZXIgKEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiBpZDolaTogdHlwZTolaSBALlwiKSBkYXRhLm9sZF9hZ2VudHNcbiAgICAgICBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiT2xkIGFnZW50cyBpbXBsaWVkIGluIGxpbmtzOiBALlwiIGluXG4gICAgICAgbGV0IF8gPVxuICAgICAgIEFnZW50SWRTZXQuaXRlciAoRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiICVpIEAuXCIpIGRhdGEuc3Vic19hZ2VudHNfaW52b2x2ZWRfaW5fbGlua3NcbiAgICAgICBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiVGVzdGVkX2xpbmtzX21hcDogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBTaXRlSWRNYXAuaXRlciAoZnVuIChhLGIpIC0+IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAlaS4laSAtPiAlaSBALlwiIGEgYiApIGRhdGEub3RoZXJfbGlua3NfdGVzdF9zaXRlcyBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiTW9kaWZpZWRfbGlua3NfbWFwOiBALlwiIGluXG4gICAgICAgbGV0IF8gPVxuICAgICAgIFNpdGVJZE1hcC5pdGVyIChmdW4gKGEsYikgLT4gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiICVpLiVpIC0+ICVpIEAuXCIgYSBiICkgZGF0YS5vdGhlcl9saW5rc19hY3Rpb25fc2l0ZXNcbiAgICAgICBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiUG90ZW50aWFsIHN1YnN0aXR1dGlvbjogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBBZ2VudElkTWFwLml0ZXJcbiAgICAgICAgIChmdW4gaWQgbCAtPlxuICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiIGlkOiVpQC5cIiBpZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBMaXN0Lml0ZXIgKEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAgICVpQC5cIikgbClcbiAgICAgICAgIGRhdGEub2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uXG4gICAgICAgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIlN1cmUgYWdlbnRzOkAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgQWdlbnRJZFNldC5pdGVyIChGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgJWlALlwiKSBkYXRhLnN1cmVfYWdlbnRzXG4gICAgICAgaW5cbiAgICAgICBsZXQgKCkgPVxuICAgICAgIEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIlN1cmUgdGVzdHM6QFs8diAxPiVhQF1ALlwiXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfdGVzdCB+c2lncykpXG4gICAgICAgZGF0YS5zdXJlX3Rlc3RzIGluXG4gICAgICAgbGV0ICgpID1cbiAgICAgICBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJUZXN0cyB0byBiZSBzdWJzdGl0dXRlZDpAWzx2IDE+QCwlYSVhQF1ALlwiXG4gICAgICAgKFBwLnNldCB+dHJhaWxpbmc6UHAuc3BhY2UgQWdlbnRJZE1hcC5iaW5kaW5ncyBQcC5zcGFjZVxuICAgICAgIChmdW4gZiAoaWQsbCkgLT5cbiAgICAgICBGb3JtYXQuZnByaW50ZlxuICAgICAgIGZcIiVpQCwlYVwiIGlkXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfdGVzdCB+c2lncykpXG4gICAgICAgbFxuICAgICAgICkpXG4gICAgICAgZGF0YS5vdGhlcl9hZ2VudHNfdGVzdHNcbiAgICAgICAoUHAuc2V0IEFnZW50SWQyTWFwLmJpbmRpbmdzIFBwLnNwYWNlXG4gICAgICAgKGZ1biBmICgoaWQxLGlkMiksbCkgLT5cbiAgICAgICBGb3JtYXQuZnByaW50ZlxuICAgICAgIGYgXCIoJWksJWkpQCwlYVwiIGlkMSBpZDJcbiAgICAgICAoUHAubGlzdCBQcC5zcGFjZSAoSW5zdGFudGlhdGlvbi5wcmludF9jb25jcmV0ZV90ZXN0IH5zaWdzKSlcbiAgICAgICBsKSlcbiAgICAgICBkYXRhLm90aGVyX2xpbmtzX3Rlc3RzIGluXG4gICAgICAgbGV0ICgpID1cbiAgICAgICBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJTdXJlIGFjdGlvbnM6QFs8diAxPiVhQF1ALlwiXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfYWN0aW9uIH5zaWdzKSlcbiAgICAgICBkYXRhLnN1cmVfYWN0aW9ucyBpblxuICAgICAgIGxldCAoKSA9XG4gICAgICAgRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiQWN0aW9ucyB0byBiZSBzdWJzdGl0dXRlZDpAWzx2IDE+QCwlYSVhQF1ALlwiXG4gICAgICAgKFBwLnNldCB+dHJhaWxpbmc6UHAuc3BhY2UgQWdlbnRJZE1hcC5iaW5kaW5ncyBQcC5zcGFjZVxuICAgICAgIChmdW4gZiAoaWQsbCkgLT5cbiAgICAgICBGb3JtYXQuZnByaW50ZlxuICAgICAgIGZcIiVpQCwlYVwiIGlkXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfYWN0aW9uIH5zaWdzKSlcbiAgICAgICBsXG4gICAgICAgKSlcbiAgICAgICBkYXRhLm90aGVyX2FnZW50c19hY3Rpb25zXG4gICAgICAgKFBwLnNldCBBZ2VudElkMk1hcC5iaW5kaW5ncyBQcC5zcGFjZVxuICAgICAgIChmdW4gZiAoKGlkMSxpZDIpLGwpIC0+XG4gICAgICAgRm9ybWF0LmZwcmludGZcbiAgICAgICBmIFwiKCVpLCVpKUAsJWFcIiBpZDEgaWQyXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfYWN0aW9uIH5zaWdzKSlcbiAgICAgICBsKSlcbiAgICAgICBkYXRhLm90aGVyX2xpbmtzX2FjdGlvbnMgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIlN1cmUgc2lkZV9lZmZlY3RzIEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAoQ0kuUG8uSy5wcmludF9zaWRlIHN0ZGVyciBoYW5kbGVyIFwiIFwiKVxuICAgICAgICAgZGF0YS5zdXJlX3NpZGVfZWZmZWN0c1xuICAgICAgIGluXG4gICAgICAgbGV0IF8gPSBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJTaWRlIGVmZmVjdCB0byBiZSBzdWJzdGl0dXRlZDogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBBZ2VudElkTWFwLml0ZXJcbiAgICAgICAgIChmdW4gaWQgbCAtPlxuICAgICAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAlaUAuXCIgaWQgaW5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAgKENJLlBvLksucHJpbnRfc2lkZSBzdGRlcnIgaGFuZGxlciBcIiAgXCIpXG4gICAgICAgICAgICAgICBsXG4gICAgICAgICAgIGluICgpKVxuICAgICAgICAgZGF0YS5vdGhlcl9hZ2VudHNfc2lkZV9lZmZlY3RzXG4gICAgICAgaW4qKVxuICAgIGVycm9yXG5cbiAgbGV0IGFkZF9zaXRlX2luX290aGVyX3Rlc3RfbGlua3Mgc2l0ZSBkYXRhX3N0cnVjdHVyZSA9XG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgc2l0ZXNfaW5fb3RoZXJfbGlua3MgPVxuICAgICAgICBTaXRlSWRTZXQuYWRkIHNpdGUgZGF0YV9zdHJ1Y3R1cmUuc2l0ZXNfaW5fb3RoZXJfbGlua3M7XG4gICAgfVxuXG4gIGxldCBhZGRfc2l0ZV9pbl9vdGhlcl9hY3Rpb25fbGlua3Mgc2l0ZSBkYXRhX3N0cnVjdHVyZSA9XG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID0gYWRkX3NpdGVfaW5fb3RoZXJfdGVzdF9saW5rcyBzaXRlIGRhdGFfc3RydWN0dXJlIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgc2l0ZXNfaW5fb3RoZXJfYWN0aW9uX2xpbmtzID1cbiAgICAgICAgU2l0ZUlkU2V0LmFkZCBzaXRlIGRhdGFfc3RydWN0dXJlLnNpdGVzX2luX290aGVyX2FjdGlvbl9saW5rcztcbiAgICB9XG5cbiAgbGV0IG1lbV9zaXRlX2luX290aGVyX2FjdGlvbl9saW5rcyBzaXRlIGRhdGFfc3RydWN0dXJlID1cbiAgICBTaXRlSWRTZXQubWVtIHNpdGUgZGF0YV9zdHJ1Y3R1cmUuc2l0ZXNfaW5fb3RoZXJfYWN0aW9uX2xpbmtzXG5cbiAgbGV0IGFkZF9zdXJlX3Rlc3QgdGVzdCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgeyBkYXRhX3N0cnVjdHVyZSB3aXRoIHN1cmVfdGVzdHMgPSB0ZXN0IDo6IGRhdGFfc3RydWN0dXJlLnN1cmVfdGVzdHMgfVxuXG4gIGxldCBhZGRfc3Vic190ZXN0IHRlc3QgYWdfaWQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIGxldCBvbGQgPVxuICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgW10gYWdfaWQgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX3Rlc3RzXG4gICAgaW5cbiAgICB7XG4gICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICBvdGhlcl9hZ2VudHNfdGVzdHMgPVxuICAgICAgICBBZ2VudElkTWFwLmFkZCBhZ19pZCAodGVzdCA6OiBvbGQpIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c190ZXN0cztcbiAgICB9XG5cbiAgbGV0IGFkZF9zdWJzX3Rlc3RfbGluayB0ZXN0IGxpbmsgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIGxldCBhLCBiID0gZnN0IGxpbmssIHNuZCBsaW5rIGluXG4gICAgbGV0IGxpbmsgPVxuICAgICAgaWYgYSA8IGIgdGhlblxuICAgICAgICBsaW5rXG4gICAgICBlbHNlXG4gICAgICAgIGIsIGFcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSwgb2xkID1cbiAgICAgIG1hdGNoIEFnZW50SWQyTWFwLmZpbmRfb3B0aW9uIGxpbmsgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdHMgd2l0aFxuICAgICAgfCBTb21lIHggLT4gZGF0YV9zdHJ1Y3R1cmUsIHhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgIG90aGVyX2xpbmtzID0gQWdlbnRJZDJTZXQuYWRkIGxpbmsgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbXSApXG4gICAgaW5cbiAgICB7XG4gICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICBvdGhlcl9saW5rc190ZXN0cyA9XG4gICAgICAgIEFnZW50SWQyTWFwLmFkZCBsaW5rICh0ZXN0IDo6IG9sZCkgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdHM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3VyZV9hY3Rpb24gYWN0aW9uIGRhdGFfc3RydWN0dXJlID1cbiAgICB7IGRhdGFfc3RydWN0dXJlIHdpdGggc3VyZV9hY3Rpb25zID0gYWN0aW9uIDo6IGRhdGFfc3RydWN0dXJlLnN1cmVfYWN0aW9ucyB9XG5cbiAgbGV0IGFkZF9jcmVhdGVfYWN0aW9uIGFjdGlvbiBkYXRhX3N0cnVjdHVyZSA9XG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgY3JlYXRlX2FjdGlvbnMgPSBhY3Rpb24gOjogZGF0YV9zdHJ1Y3R1cmUuY3JlYXRlX2FjdGlvbnM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3Vic19hY3Rpb24gYWN0aW9uIGFnX2lkIGRhdGFfc3RydWN0dXJlID1cbiAgICBsZXQgb2xkID1cbiAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIGFnX2lkIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c19hY3Rpb25zXG4gICAgaW5cbiAgICB7XG4gICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICBvdGhlcl9hZ2VudHNfYWN0aW9ucyA9XG4gICAgICAgIEFnZW50SWRNYXAuYWRkIGFnX2lkIChhY3Rpb24gOjogb2xkKSBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfYWN0aW9ucztcbiAgICB9XG5cbiAgbGV0IGFkZF9zdWJzX2FjdGlvbl9saW5rIGFjdGlvbiBsaW5rIGRhdGFfc3RydWN0dXJlID1cbiAgICBsZXQgYSwgYiA9IGZzdCBsaW5rLCBzbmQgbGluayBpblxuICAgIGxldCBsaW5rID1cbiAgICAgIGlmIGEgPCBiIHRoZW5cbiAgICAgICAgbGlua1xuICAgICAgZWxzZVxuICAgICAgICBiLCBhXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUsIG9sZCA9XG4gICAgICBtYXRjaCBBZ2VudElkMk1hcC5maW5kX29wdGlvbiBsaW5rIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX2FjdGlvbnMgd2l0aFxuICAgICAgfCBTb21lIHggLT4gZGF0YV9zdHJ1Y3R1cmUsIHhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgIG90aGVyX2xpbmtzID0gQWdlbnRJZDJTZXQuYWRkIGxpbmsgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbXSApXG4gICAgaW5cbiAgICB7XG4gICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICBvdGhlcl9saW5rc19hY3Rpb25zID1cbiAgICAgICAgQWdlbnRJZDJNYXAuYWRkIGxpbmsgKGFjdGlvbiA6OiBvbGQpIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX2FjdGlvbnM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3VyZV9zaWRlX2VmZmVjdCBzaWRlX2VmZmVjdCBkYXRhX3N0cnVjdHVyZSA9XG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgc3VyZV9zaWRlX2VmZmVjdHMgPSBzaWRlX2VmZmVjdCA6OiBkYXRhX3N0cnVjdHVyZS5zdXJlX3NpZGVfZWZmZWN0cztcbiAgICB9XG5cbiAgbGV0IGFkZF9zdWJzX3NpZGVfZWZmZWN0IHNpZGVfZWZmZWN0IGFnX2lkIGRhdGFfc3RydWN0dXJlID1cbiAgICBsZXQgc2l0ZSA9IGZzdCBzaWRlX2VmZmVjdCBpblxuICAgIGxldCBhZ2VudCA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbGV0IGFnZW50X2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgIGxldCBvbGQgPVxuICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgW10gYWdlbnRfaWRcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX3NpZGVfZWZmZWN0c1xuICAgIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgb3RoZXJfYWdlbnRzX3NpZGVfZWZmZWN0cyA9XG4gICAgICAgIEFnZW50SWRNYXAuYWRkIGFnX2lkIChzaWRlX2VmZmVjdCA6OiBvbGQpXG4gICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX3NpZGVfZWZmZWN0cztcbiAgICB9XG5cbiAgbGV0IGFkZF9zdGVwX3N0cm9uZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdGVwIGJsYWNrYm9hcmQgc3RlcF9pZCA9XG4gICAgbGV0IGluaXQgPSBUcmFjZS5zdGVwX2lzX2luaXQgc3RlcCBpblxuICAgIGxldCBwcmVfZXZlbnQgPSBibGFja2JvYXJkLnByZV9ldmVudCBpblxuICAgIGxldCB0ZXN0X2xpc3QgPSBUcmFjZS50ZXN0c19vZl9zdGVwIHN0ZXAgaW5cbiAgICBsZXQgYWN0aW9uX2xpc3QsIHNpZGVfZWZmZWN0ID0gVHJhY2UuYWN0aW9uc19vZl9zdGVwIHN0ZXAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPSBpbml0X2RhdGFfc3RydWN0dXJlX3N0cm9uZyBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIGFjdGlvbiAtPlxuICAgICAgICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoYWcsIF8pIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgbmV3X2FnZW50cyA9XG4gICAgICAgICAgICAgICAgQWdlbnRJZFNldC5hZGRcbiAgICAgICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnKVxuICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUubmV3X2FnZW50cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgbGV0IGFnMV9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnMl9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IHNpdGUxX2lkID0gYWcxX2lkLCBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgc2l0ZTJfaWQgPSBhZzJfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgICAgICAgICBvdGhlcl9saW5rc19hY3Rpb25fc2l0ZXMgPVxuICAgICAgICAgICAgICAgIFNpdGVJZE1hcC5hZGQgc2l0ZTFfaWQgYWcyX2lkXG4gICAgICAgICAgICAgICAgICAoU2l0ZUlkTWFwLmFkZCBzaXRlMl9pZCBhZzFfaWRcbiAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX2FjdGlvbl9zaXRlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBhZ2VudCAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgIHJlbW92ZWRfYWdlbnRzID1cbiAgICAgICAgICAgICAgICBBZ2VudElkU2V0LmFkZFxuICAgICAgICAgICAgICAgICAgKENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQpXG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5yZW1vdmVkX2FnZW50cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF9cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIF8gLT5cbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSBhY3Rpb25fbGlzdFxuICAgIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gZGF0YV9zdHJ1Y3R1cmUgdGVzdCAtPlxuICAgICAgICAgIG1hdGNoIHRlc3Qgd2l0aFxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGFnIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgb2xkX2FnZW50cyA9XG4gICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGRcbiAgICAgICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnKVxuICAgICAgICAgICAgICAgICAgKENJLlBvLksuYWdlbnRfbmFtZV9vZl9hZ2VudCBhZylcbiAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICAgICBsZXQgYWcxX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgYWcyX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICBsZXQgc2l0ZTFfaWQgPSBhZzFfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgIGxldCBzaXRlMl9pZCA9IGFnMl9pZCwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgICAgICAgICAgaWYgQWdlbnRJZFNldC5tZW0gYWcxX2lkIGRhdGFfc3RydWN0dXJlLnJlbW92ZWRfYWdlbnRzIHRoZW5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgICAgICByZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzID1cbiAgICAgICAgICAgICAgICAgICAgU2l0ZUlkU2V0LmFkZCBzaXRlMV9pZFxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgICAgICAgICBpZiBBZ2VudElkU2V0Lm1lbSBhZzJfaWQgZGF0YV9zdHJ1Y3R1cmUucmVtb3ZlZF9hZ2VudHMgdGhlblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgICAgIHJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3MgPVxuICAgICAgICAgICAgICAgICAgICBTaXRlSWRTZXQuYWRkIHNpdGUyX2lkXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucmVtb3ZlZF9zaXRlc19pbl9vdGhlcl9saW5rcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgICAgICAgICBvdGhlcl9saW5rc190ZXN0X3NpdGVzID1cbiAgICAgICAgICAgICAgICBTaXRlSWRNYXAuYWRkIHNpdGUxX2lkIGFnMl9pZFxuICAgICAgICAgICAgICAgICAgKFNpdGVJZE1hcC5hZGQgc2l0ZTJfaWQgYWcxX2lkXG4gICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc190ZXN0X3NpdGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSBfIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIF9cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIF8gfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIF8gLT5cbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSB0ZXN0X2xpc3RcbiAgICBpblxuICAgIGxldCB0ZXN0ZWRfc2l0ZXMgPVxuICAgICAgU2l0ZUlkTWFwLmZvbGRcbiAgICAgICAgKGZ1biBhIF8gLT4gU2l0ZUlkU2V0LmFkZCBhKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc190ZXN0X3NpdGVzIFNpdGVJZFNldC5lbXB0eVxuICAgIGluXG4gICAgbGV0IG1vZF9zaXRlcyA9XG4gICAgICBTaXRlSWRNYXAuZm9sZFxuICAgICAgICAoZnVuIGEgXyAtPiBTaXRlSWRTZXQuYWRkIGEpXG4gICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX2FjdGlvbl9zaXRlcyBTaXRlSWRTZXQuZW1wdHlcbiAgICBpblxuICAgIGxldCBwcmlvcml0eV9zaXRlcyA9IFNpdGVJZFNldC5pbnRlciB0ZXN0ZWRfc2l0ZXMgbW9kX3NpdGVzIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgIHtcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgICBvbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb24gPVxuICAgICAgICAgIEFnZW50SWRNYXAubWFwXG4gICAgICAgICAgICAoQS5nZXQgYmxhY2tib2FyZC5oaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlKVxuICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub2xkX2FnZW50cztcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7IGRhdGFfc3RydWN0dXJlIHdpdGggc3VyZV9hZ2VudHMgPSBkYXRhX3N0cnVjdHVyZS5uZXdfYWdlbnRzIH1cbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgc3VyZV9hZ2VudHMgPVxuICAgICAgICAgIEFnZW50SWRNYXAuZm9sZFxuICAgICAgICAgICAgKGZ1biBpZCBsIHN1cmVfYWdlbnRzIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFsgXyBdIC0+IEFnZW50SWRTZXQuYWRkIGlkIHN1cmVfYWdlbnRzXG4gICAgICAgICAgICAgIHwgXyAtPiBzdXJlX2FnZW50cylcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvblxuICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUuc3VyZV9hZ2VudHM7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgc3VyZV9hZ2VudCA9XG4gICAgICBpZiBpbml0IHRoZW5cbiAgICAgICAgZnVuIF8gLT5cbiAgICAgIHRydWVcbiAgICAgIGVsc2VcbiAgICAgICAgZnVuIHggLT5cbiAgICAgIEFnZW50SWRTZXQubWVtIHggZGF0YV9zdHJ1Y3R1cmUuc3VyZV9hZ2VudHNcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgb2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uID1cbiAgICAgICAgICBBZ2VudElkU2V0LmZvbGQgQWdlbnRJZE1hcC5yZW1vdmUgZGF0YV9zdHJ1Y3R1cmUuc3VyZV9hZ2VudHNcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvbjtcbiAgICAgIH1cbiAgICBpblxuXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gZGF0YV9zdHJ1Y3R1cmUgdGVzdCAtPlxuICAgICAgICAgIG1hdGNoIHRlc3Qgd2l0aFxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIF8gfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCBfXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgXyB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgX1xuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIF8gLT5cbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQxID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDEgaW5cbiAgICAgICAgICAgIGxldCBhZ2VudDIgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZDIgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50MiBpblxuICAgICAgICAgICAgbGV0IHNpdGVfaWQxID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IHNpdGVfaWQyID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgc3VyZV9hZ2VudCBhZ19pZDFcbiAgICAgICAgICAgICAgJiYgKG5vdCAoU2l0ZUlkU2V0Lm1lbSAoYWdfaWQxLCBzaXRlX2lkMSkgcHJpb3JpdHlfc2l0ZXMpKVxuICAgICAgICAgICAgICAmJiBzdXJlX2FnZW50IGFnX2lkMlxuICAgICAgICAgICAgICAmJiBub3QgKFNpdGVJZFNldC5tZW0gKGFnX2lkMiwgc2l0ZV9pZDIpIHByaW9yaXR5X3NpdGVzKVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBtaXhfc2l0ZTEgPSBhZ19pZDEsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgICAgbGV0IG1peF9zaXRlMiA9IGFnX2lkMiwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgICAgICAgICAgIGFkZF9zaXRlX2luX290aGVyX3Rlc3RfbGlua3MgbWl4X3NpdGUxXG4gICAgICAgICAgICAgICAgICAoYWRkX3NpdGVfaW5fb3RoZXJfdGVzdF9saW5rcyBtaXhfc2l0ZTIgZGF0YV9zdHJ1Y3R1cmUpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIFNpdGVJZFNldC5tZW0gbWl4X3NpdGUxIHByaW9yaXR5X3NpdGVzXG4gICAgICAgICAgICAgICAgICB8fCBTaXRlSWRTZXQubWVtIG1peF9zaXRlMiBwcmlvcml0eV9zaXRlc1xuICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbGV0IGFnX2lkMSwgYWdfaWQyID1cbiAgICAgICAgICAgICAgICAgICAgaWYgYWdfaWQxIDwgYWdfaWQyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBhZ19pZDEsIGFnX2lkMlxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgYWdfaWQyLCBhZ19pZDFcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgb3RoZXJfbGlua3NfcHJpb3JpdHkgPVxuICAgICAgICAgICAgICAgICAgICAgIEFnZW50SWQyU2V0LmFkZCAoYWdfaWQxLCBhZ19pZDIpXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19wcmlvcml0eTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICApKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSAoTGlzdC5yZXYgdGVzdF9saXN0KVxuICAgIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gZGF0YV9zdHJ1Y3R1cmUgYWN0aW9uIC0+XG4gICAgICAgICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIF8gfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF8gLT5cbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHNpdGUxLCBzaXRlMilcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50MSA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQxIGluXG4gICAgICAgICAgICBsZXQgYWdlbnQyID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDIgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQxICYmIHN1cmVfYWdlbnQgYWdfaWQyIHRoZW5cbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWRkX3NpdGVfaW5fb3RoZXJfYWN0aW9uX2xpbmtzXG4gICAgICAgICAgICAgICAgKGFnX2lkMSwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMSlcbiAgICAgICAgICAgICAgICAoYWRkX3NpdGVfaW5fb3RoZXJfYWN0aW9uX2xpbmtzXG4gICAgICAgICAgICAgICAgICAgKGFnX2lkMiwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMilcbiAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSkpXG4gICAgICAgIGRhdGFfc3RydWN0dXJlIChMaXN0LnJldiBhY3Rpb25fbGlzdClcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIHRlc3QgLT5cbiAgICAgICAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZ2VudCAtPlxuICAgICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgICAgaWYgc3VyZV9hZ2VudCBhZ19pZCB0aGVuXG4gICAgICAgICAgICAgIGFkZF9zdXJlX3Rlc3QgdGVzdCBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhZGRfc3Vic190ZXN0IHRlc3QgYWdfaWQgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChzaXRlLCBfKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50ID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV90ZXN0IHRlc3QgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWRkX3N1YnNfdGVzdCB0ZXN0IGFnX2lkIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgc2l0ZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBzaXRlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKHNpdGUsIF8pIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgc3VyZV9hZ2VudCBhZ19pZFxuICAgICAgICAgICAgICAmJiBub3RcbiAgICAgICAgICAgICAgICAgICAoU2l0ZUlkU2V0Lm1lbVxuICAgICAgICAgICAgICAgICAgICAgIChhZ19pZCwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnNpdGVzX2luX290aGVyX2xpbmtzKVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV90ZXN0IHRlc3QgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgc2l0ZV9pZDEgPSBhZ19pZCwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgU2l0ZUlkTWFwLmZpbmRfb3B0aW9uIHNpdGVfaWQxXG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25fc2l0ZXNcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgYWdfaWQyIC0+XG4gICAgICAgICAgICAgICAgYWRkX3N1YnNfdGVzdF9saW5rIHRlc3QgKGFnX2lkLCBhZ19pZDIpIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBhZGRfc3Vic190ZXN0IHRlc3QgYWdfaWQgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIClcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKHNpdGUxLCBzaXRlMikgLT5cbiAgICAgICAgICAgIGxldCBhZ2VudDEgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZDEgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50MSBpblxuICAgICAgICAgICAgbGV0IGFnZW50X25hbWUxID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX2FnZW50IGFnZW50MSBpblxuICAgICAgICAgICAgbGV0IHNpdGVfbmFtZTEgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgYWdlbnQyID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDIgaW5cbiAgICAgICAgICAgIGxldCBhZ2VudF9uYW1lMiA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9hZ2VudCBhZ2VudDIgaW5cbiAgICAgICAgICAgIGxldCBzaXRlX25hbWUyID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IHdlYWsxID1cbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzaXRlMSwgKGFnZW50X25hbWUyLCBzaXRlX25hbWUyKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgd2VhazIgPVxuICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKHNpdGUyLCAoYWdlbnRfbmFtZTEsIHNpdGVfbmFtZTEpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgKCBzdXJlX2FnZW50IGFnX2lkMVxuICAgICAgICAgICAgICAgICAmJiBub3QgKFNpdGVJZFNldC5tZW0gKGFnX2lkMSwgc2l0ZV9uYW1lMSkgcHJpb3JpdHlfc2l0ZXMpLFxuICAgICAgICAgICAgICAgICBzdXJlX2FnZW50IGFnX2lkMlxuICAgICAgICAgICAgICAgICAmJiBub3QgKFNpdGVJZFNldC5tZW0gKGFnX2lkMiwgc2l0ZV9uYW1lMikgcHJpb3JpdHlfc2l0ZXMpIClcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IHRydWUsIHRydWUgLT4gYWRkX3N1cmVfdGVzdCB0ZXN0IGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICB8IHRydWUsIGZhbHNlIC0+XG4gICAgICAgICAgICAgIGFkZF9zdXJlX3Rlc3Qgd2VhazFcbiAgICAgICAgICAgICAgICAoYWRkX3N1YnNfdGVzdCB3ZWFrMiBhZ19pZDJcbiAgICAgICAgICAgICAgICAgICAoYWRkX3N1YnNfdGVzdF9saW5rIHRlc3QgKGFnX2lkMSwgYWdfaWQyKSBkYXRhX3N0cnVjdHVyZSkpXG4gICAgICAgICAgICB8IGZhbHNlLCB0cnVlIC0+XG4gICAgICAgICAgICAgIGFkZF9zdWJzX3Rlc3Qgd2VhazEgYWdfaWQxXG4gICAgICAgICAgICAgICAgKGFkZF9zdXJlX3Rlc3Qgd2VhazJcbiAgICAgICAgICAgICAgICAgICAoYWRkX3N1YnNfdGVzdF9saW5rIHRlc3QgKGFnX2lkMSwgYWdfaWQyKSBkYXRhX3N0cnVjdHVyZSkpXG4gICAgICAgICAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgICAgICAgICBhZGRfc3Vic190ZXN0IHdlYWsxIGFnX2lkMVxuICAgICAgICAgICAgICAgIChhZGRfc3Vic190ZXN0IHdlYWsyIGFnX2lkMlxuICAgICAgICAgICAgICAgICAgIChhZGRfc3Vic190ZXN0X2xpbmsgdGVzdCAoYWdfaWQxLCBhZ19pZDIpIGRhdGFfc3RydWN0dXJlKSkpKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSAoTGlzdC5yZXYgdGVzdF9saXN0KVxuICAgIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gZGF0YV9zdHJ1Y3R1cmUgYWN0aW9uIC0+XG4gICAgICAgICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIF8gLT4gYWRkX2NyZWF0ZV9hY3Rpb24gYWN0aW9uIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBhZ2VudCAtPlxuICAgICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgICAgaWYgc3VyZV9hZ2VudCBhZ19pZCB0aGVuXG4gICAgICAgICAgICAgIGFkZF9zdXJlX2FjdGlvbiBhY3Rpb24gZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWRkX3N1YnNfYWN0aW9uIGFjdGlvbiBhZ19pZCBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIF8pIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgICAgaWYgc3VyZV9hZ2VudCBhZ19pZCB0aGVuXG4gICAgICAgICAgICAgIGFkZF9zdXJlX2FjdGlvbiBhY3Rpb24gZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWRkX3N1YnNfYWN0aW9uIGFjdGlvbiBhZ19pZCBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHNpdGUgLT5cbiAgICAgICAgICAgIGxldCBhZ2VudCA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50IGluXG4gICAgICAgICAgICBsZXQgc2l0ZV9pZDEgPSBhZ19pZCwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgICAgICAgICBpZiBtZW1fc2l0ZV9pbl9vdGhlcl9hY3Rpb25fbGlua3Mgc2l0ZV9pZDEgZGF0YV9zdHJ1Y3R1cmUgdGhlblxuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgZWxzZSBpZiBzdXJlX2FnZW50IGFnX2lkIHRoZW5cbiAgICAgICAgICAgICAgYWRkX3N1cmVfYWN0aW9uIGFjdGlvbiBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgU2l0ZUlkTWFwLmZpbmRfb3B0aW9uIHNpdGVfaWQxXG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc190ZXN0X3NpdGVzXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIGFnX2lkMiAtPlxuICAgICAgICAgICAgICAgIGFkZF9zdWJzX2FjdGlvbl9saW5rIGFjdGlvbiAoYWdfaWQsIGFnX2lkMikgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGFkZF9zdWJzX2FjdGlvbiBhY3Rpb24gYWdfaWQgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIClcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoc2l0ZTEsIHNpdGUyKVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQxID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDEgaW5cbiAgICAgICAgICAgIGxldCBhZ2VudDIgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZDIgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50MiBpblxuICAgICAgICAgICAgaWYgc3VyZV9hZ2VudCBhZ19pZDEgJiYgc3VyZV9hZ2VudCBhZ19pZDIgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV9hY3Rpb24gYWN0aW9uIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGFkZF9zdWJzX2FjdGlvbl9saW5rIGFjdGlvbiAoYWdfaWQxLCBhZ19pZDIpIGRhdGFfc3RydWN0dXJlKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSAoTGlzdC5yZXYgYWN0aW9uX2xpc3QpXG4gICAgaW5cblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIHNpZGVfZWZmZWN0IC0+XG4gICAgICAgICAgbGV0IHNpdGUsIF8gPSBzaWRlX2VmZmVjdCBpblxuICAgICAgICAgIGxldCBhZ2VudCA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQgdGhlblxuICAgICAgICAgICAgYWRkX3N1cmVfc2lkZV9lZmZlY3Qgc2lkZV9lZmZlY3QgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhZGRfc3Vic19zaWRlX2VmZmVjdCBzaWRlX2VmZmVjdCBhZ19pZCBkYXRhX3N0cnVjdHVyZSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgc2lkZV9lZmZlY3RcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgc3Vic19hZ2VudHNfaW52b2x2ZWRfaW5fbGlua3MgPVxuICAgICAgICAgIChsZXQgZiB4IHNldCA9XG4gICAgICAgICAgICAgQWdlbnRJZDJNYXAuZm9sZFxuICAgICAgICAgICAgICAgKGZ1biAoYTEsIGEyKSBfIHNldCAtPiBBZ2VudElkU2V0LmFkZCBhMSAoQWdlbnRJZFNldC5hZGQgYTIgc2V0KSlcbiAgICAgICAgICAgICAgIHggc2V0XG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGYgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdHNcbiAgICAgICAgICAgICAoZiBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25zIEFnZW50SWRTZXQuZW1wdHkpKTtcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCBpbml0X3N0ZXAgPSBOb25lIGluXG4gICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBydWxlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgIHJ1bGVfYWdlbnRfaWRfc3VicyxcbiAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgXyxcbiAgICAgICAgICBpbml0X3N0ZXAgKSA9XG4gICAgICBBZ2VudElkTWFwLmZvbGRcbiAgICAgICAgKGZ1biB4IGxcbiAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgcnVsZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICAgICAgIHJ1bGVfYWdlbnRfaWRfc3VicyxcbiAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICBzZXQsXG4gICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAtPlxuICAgICAgICAgICgqIHRoZSBmb2xsb3dpbmcgbXV0ZXggaXMgdXNlZCB0byBlbmNvZGUgdGhlIGZhY3QgdGhhdCB0aGUgYWdlbnQgeCBpbiB0aGUgbGhzIG9mIHRoZSBydWxlIG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIGV4YWN0ZWx5IG9uZSBhZ2VudCBpbiB0aGUgbWl4dHVyZSAqKVxuICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9IE11dGV4IChMb2NrX2FnZW50IChzdGVwX2lkLCB4KSkgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwID1cbiAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcnVsZV9hZ2VudF9pZF9tdXRleCA9XG4gICAgICAgICAgICBBZ2VudElkTWFwLmFkZCB4IHByZWRpY2F0ZV9pZCBydWxlX2FnZW50X2lkX211dGV4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmljdGl0aW91c19sb2NhbF9saXN0ID0gcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCBpblxuICAgICAgICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0IGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcnVsZV9hZ2VudF9pZF9zdWJzLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgaWYgQWdlbnRJZFNldC5tZW0geCBkYXRhX3N0cnVjdHVyZS5zdWJzX2FnZW50c19pbnZvbHZlZF9pbl9saW5rc1xuICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9IFBvaW50ZXIgKHN0ZXBfaWQsIHgpIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHJ1bGVfYWdlbnRfaWRfc3VicyA9XG4gICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGQgeCBwcmVkaWNhdGVfaWQgcnVsZV9hZ2VudF9pZF9zdWJzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCA9XG4gICAgICAgICAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcnVsZV9hZ2VudF9pZF9zdWJzLCBpbml0X3N0ZXBcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHJ1bGVfYWdlbnRfaWRfc3VicywgaW5pdF9zdGVwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgICAgIGluaXRfc3RlcCApID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgICAgICBzZXQsXG4gICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKSBpZCAtPlxuICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgfHwgZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiSUQgb2YgYWdlbnQgaW4gdGhlIHJ1bGU6ICVpLCBJRCBvZiB0aGUgYWdlbnQgaW4gdGhlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgbWl4dHVyZTogJWlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgeCBpZFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgc2V0JyA9IEFnZW50SWRTZXQuYWRkIGlkIHNldCBpblxuICAgICAgICAgICAgICAgIGlmIHNldCA9PSBzZXQnIHRoZW5cbiAgICAgICAgICAgICAgICAgIGlmIEFnZW50SWRNYXAubWVtIGlkIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXggdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICgqIFRoZSBtdXRleCBpcyBhbHJlYWR5IGRlY2xhcmVkLCBub3RoaW5nIHRvIGRvICopXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWJ1Z19tb2RlXG4gICAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNdXRleCBhbHJlYWR5IGV4aXN0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICAgICAgICAgICAgICBzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICgqIFRoZSBtdXRleCBoYXMgdG8gYmUgYWxsb2NhdGVkICopXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWJ1Z19tb2RlXG4gICAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDcmVhdGUgTXV0ZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHByZWRpY2F0ZV9pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICBNdXRleCAoTG9ja19yZWN0YW5ndWxhciAoc3RlcF9pZCwgaWQpKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pbmZvXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBtaXh0dXJlX2FnZW50X2lkX211dGV4ID1cbiAgICAgICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmFkZCBpZCBwcmVkaWNhdGVfaWQgbWl4dHVyZV9hZ2VudF9pZF9tdXRleFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGluaXRfc3RlcFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICAgICAgICAgICAgICBzZXQnLFxuICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAoKiBUaGUgYWdlbnQgaW4gdGhlIG1peHR1cmUgaXMgc2VlbiBmb3IgdGhlIGZpcnN0IHRpbWUsIG5vIG5lZWQgZm9yIGEgbXV0ZXggZm9yIHRoZSBtb21lbnQgKilcbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgfHwgZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyBhZ2VudCBpcyBzZWVuIGZvciB0aGUgZmlyc3QgdGltZSwgbm8gbmVlZCBmb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGV4IHlldFwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgICAgIHNldCcsXG4gICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgIGxcbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICBydWxlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgcnVsZV9hZ2VudF9pZF9zdWJzLFxuICAgICAgICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgIHNldCxcbiAgICAgICAgICAgIGluaXRfc3RlcCApKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb25cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIEFnZW50SWRNYXAuZW1wdHksXG4gICAgICAgICAgQWdlbnRJZE1hcC5lbXB0eSxcbiAgICAgICAgICBBZ2VudElkTWFwLmVtcHR5LFxuICAgICAgICAgIGJsYWNrYm9hcmQucHJlX2ZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBbXSxcbiAgICAgICAgICBBZ2VudElkU2V0LmVtcHR5LFxuICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgaW5cbiAgICBsZXQgbGlua3NfbXV0ZXggPSBBZ2VudElkMk1hcC5lbXB0eSBpblxuICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgbGlua3NfbXV0ZXgsXG4gICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICBpbml0X3N0ZXAgKSA9XG4gICAgICBBZ2VudElkMlNldC5mb2xkXG4gICAgICAgIChmdW4geFxuICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICBsaW5rc19tdXRleCxcbiAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgIGluaXRfc3RlcCApIC0+XG4gICAgICAgICAgbGV0IHByZWRpY2F0ZV9pbmZvID0gTXV0ZXggKExvY2tfbGlua3MgKHN0ZXBfaWQsIHgpKSBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHByZWRpY2F0ZV9pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgICAgICAgICBpbml0X3N0ZXBcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsaW5rc19tdXRleCA9IEFnZW50SWQyTWFwLmFkZCB4IHByZWRpY2F0ZV9pZCBsaW5rc19tdXRleCBpblxuICAgICAgICAgIGxldCBmaWN0aXRpb3VzX2xvY2FsX2xpc3QgPSBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19sb2NhbF9saXN0IGluXG4gICAgICAgICAgbGV0IGZpY3RpdGlvdXNfbGlzdCA9IHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgbGlua3NfbXV0ZXgsXG4gICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICBpbml0X3N0ZXAgKSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NcbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGxpbmtzX211dGV4LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgaW5pdF9zdGVwIClcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgbGlua3NfbXV0ZXg7XG4gICAgICAgIHJ1bGVfYWdlbnRfaWRfbXV0ZXg7XG4gICAgICAgIHJ1bGVfYWdlbnRfaWRfc3VicztcbiAgICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleDtcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgIHsgYmxhY2tib2FyZCB3aXRoIHByZV9maWN0aXRpb3VzX2xpc3QgPSBmaWN0aXRpb3VzX2xpc3QgfVxuICAgIGluXG4gICAgbGV0IF8gPVxuICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgbGV0IF8gPSBwcmludF9kYXRhX3N0cnVjdHVyZSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBkYXRhX3N0cnVjdHVyZSBpblxuICAgICAgICAoKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IGZpY3RpdGlvdXNfbGlzdCA9IGJsYWNrYm9hcmQucHJlX2ZpY3RpdGlvdXNfbGlzdCBpblxuICAgIGxldCBidWlsZF9tYXAgbGlzdCBtYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgKGlkLCB2YWx1ZSkgLT4gUHJlZGljYXRlaWRNYXAuYWRkIGlkIHZhbHVlIG1hcClcbiAgICAgICAgbWFwIGxpc3RcbiAgICBpblxuICAgIGxldCBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCA9XG4gICAgICBsZXQgdGVzdCcsIGFjdGlvbicgPVxuICAgICAgICBQcmVkaWNhdGVpZE1hcC5maW5kX2RlZmF1bHQgKFVua25vd24sIFVua25vd24pIHBpZCBtYXBcbiAgICAgIGluXG4gICAgICBsZXQgdGVzdCA9XG4gICAgICAgIGlmIHN0cmljdGx5X21vcmVfcmVmaW5lZCB0ZXN0IHRlc3QnIHRoZW5cbiAgICAgICAgICB0ZXN0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0ZXN0J1xuICAgICAgaW5cbiAgICAgIGxldCBhY3Rpb24gPVxuICAgICAgICBpZiBzdHJpY3RseV9tb3JlX3JlZmluZWQgYWN0aW9uIGFjdGlvbicgdGhlblxuICAgICAgICAgIGFjdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgYWN0aW9uJ1xuICAgICAgaW5cbiAgICAgIGxldCBtYXAgPSBQcmVkaWNhdGVpZE1hcC5hZGQgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCBpblxuICAgICAgbWFwXG4gICAgaW5cbiAgICBsZXQgZmFkZCBwaWQgcCBtYXAgPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBVbmRlZmluZWQgfCBEZWZpbmVkIHwgUHJlc2VudCB8IEJvdW5kXG4gICAgICB8IEJvdW5kX3RvX3R5cGUgXyB8IFVua25vd24gLT5cbiAgICAgICAgKClcbiAgICAgIHwgRnJlZSB8IFBvaW50ZXJfdG9fYWdlbnQgXyB8IEJvdW5kX3RvIF8gLT5cbiAgICAgICAgbGV0IG9sZCA9IEEuZ2V0IG1hcCBwaWQgaW5cbiAgICAgICAgQS5zZXQgbWFwIHBpZCAoQy5hZGQgcCBvbGQpXG4gICAgaW5cblxuICAgICgqIGRlYWwgd2l0aCBjcmVhdGVkIGFnZW50cyAqKVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHN0ZXBfaWQgPVxuICAgICAgbWF0Y2ggaW5pdF9zdGVwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHN0ZXBfaWRcbiAgICAgIHwgU29tZSBuc2lkIC0+XG4gICAgICAgIGxldCBuc2lkID0gbnNpZCBpblxuICAgICAgICBsZXQgbnNpZF92b2lkID0gbnNpZCArIDEgaW5cbiAgICAgICAgbGV0IG5zaWRfbmV4dCA9IG5zaWQgKyAxIGluXG4gICAgICAgIGxldCBzaWRlX2VmZmVjdCA9IFtdIGluXG4gICAgICAgIGxldCBhY3Rpb25fbGlzdCA9IGRhdGFfc3RydWN0dXJlLmNyZWF0ZV9hY3Rpb25zIGluXG4gICAgICAgIGxldCB0ZXN0X2xpc3QgPSBbXSBpblxuICAgICAgICBsZXQgZmljdGl0aW91c19saXN0ID0gW10gaW5cblxuICAgICAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgX2ZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICBfaW5pdF9zdGVwICkgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAoc2l0ZSwgYmluZGluZ19zdGF0ZSkgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcG90ZW50aWFsX3RhcmdldCA9XG4gICAgICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICBzaXRlIGJpbmRpbmdfc3RhdGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcG90ZW50aWFsX3RhcmdldCB3aXRoXG4gICAgICAgICAgICAgIHwgWyBsIF0gLT5cbiAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgdCAtPiB0IDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyBsXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgbGlzdCxcbiAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIGxldCBydWxlX2FnX2lkID1cbiAgICAgICAgICAgICAgICAgIENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgKENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHByZWRpY2F0ZV9pbmZvID1cbiAgICAgICAgICAgICAgICAgIE11dGV4XG4gICAgICAgICAgICAgICAgICAgIChMb2NrX3NpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICggc3RlcF9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVfYWdfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlICkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgX3N0ZXBfaWQgPVxuICAgICAgICAgICAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXBcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlX25zdGVwcyA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfbl9zaWRlX2V2ZW50cyBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCAoXywgYSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZC5wcmVfbnN0ZXBzIHNpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZWRpY2F0ZV9pZCwgXywgKHRlc3QsIGFjdGlvbikpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIGVycm9yIHRlc3QgYWN0aW9uIHByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByZWRpY2F0ZV9pZCwgTm9uZSwgKENvdW50ZXIgMCwgQ291bnRlciAxKSkgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwICkpXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgc2lkZV9lZmZlY3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9tYXAgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG1hcCkgdGVzdCAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfdGVzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYnVpbGRfbWFwIHRlc3RfbGlzdCBtYXApXG4gICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSlcbiAgICAgICAgICAgIHRlc3RfbGlzdFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXApIGFjdGlvbiAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbGlzdCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbiB0cnVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGluaXQgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgICAgICBidWlsZF9tYXAgdGVzdF9saXN0IHRlc3RfbWFwICkpXG4gICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSwgdGVzdF9tYXApXG4gICAgICAgICAgICBhY3Rpb25fbGlzdFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG1lcmdlZF9tYXAgPVxuICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLm1vbmFkaWNfZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIGFjdGlvbikgYWNjKVxuICAgICAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWNjIC0+XG4gICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIFVua25vd24pIGFjYylcbiAgICAgICAgICAgIChmdW4gXyBlIGtleSBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKFVua25vd24sIGFjdGlvbikgYWNjKVxuICAgICAgICAgICAgdGVzdF9tYXAgYWN0aW9uX21hcCBQcmVkaWNhdGVpZE1hcC5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gbWFwIChwaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcClcbiAgICAgICAgICAgIG1lcmdlZF9tYXAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gbGlzdCAoXywgYSwgXykgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgICAgIHwgU29tZSBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgIFtdIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0c1xuICAgICAgICBpblxuICAgICAgICBpZiBzaWRlX2VmZmVjdCA9IFtdICYmIFByZWRpY2F0ZWlkTWFwLmlzX2VtcHR5IG1lcmdlZF9tYXAgdGhlblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbnNpZF92b2lkXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50IG5zaWRcbiAgICAgICAgICAgICAgKENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwcmVfc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmZvbGRcbiAgICAgICAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSBtYXAgLT5cbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgaWQgaW5cbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUnID0gdmFsdWUgKyAxIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgZmFkZCBpZCBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZC5oaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICBBLnNldCBtYXAgaWQgKHZhbHVlJywgKG5zaWQsIHZhbHVlLCB0ZXN0LCBhY3Rpb24pIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXApXG4gICAgICAgICAgICAgIG1lcmdlZF9tYXAgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb2JzZXJ2YWJsZV9saXN0ID1cbiAgICAgICAgICAgIGlmIFRyYWNlLnN0ZXBfaXNfb2JzIHN0ZXAgdGhlblxuICAgICAgICAgICAgICAoWyBuc2lkIF0sIFRyYWNlLnNpbXVsYXRpb25faW5mb19vZl9zdGVwIHN0ZXApXG4gICAgICAgICAgICAgIDo6IGJsYWNrYm9hcmQucHJlX29ic2VydmFibGVfbGlzdFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICAgIHByZV9ldmVudDtcbiAgICAgICAgICAgICAgcHJlX2ZpY3RpdGlvdXNfbGlzdCA9IGZpY3RpdGlvdXNfbGlzdDtcbiAgICAgICAgICAgICAgcHJlX3N0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgICAgICAgcHJlX25zdGVwcyA9IG5zaWQ7XG4gICAgICAgICAgICAgIHByZV9vYnNlcnZhYmxlX2xpc3QgPSBvYnNlcnZhYmxlX2xpc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG5zaWRfbmV4dFxuICAgICAgICApXG4gICAgaW5cblxuICAgICgqKiogZGVhbCB3aXRoIHN1YnN0aXR1dGFibGUgYWdlbnRzICoqKilcbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIG5saXN0ID1cbiAgICAgIEFnZW50SWRNYXAuZm9sZFxuICAgICAgICAoZnVuIHJ1bGVfYWdfaWQgbCAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIG5saXN0KSAtPlxuICAgICAgICAgIGxldCB0ZXN0X2xpc3QsIGFjdGlvbl9saXN0LCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAoIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfdGVzdHMsXG4gICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfYWN0aW9ucyxcbiAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgW10gcnVsZV9hZ19pZFxuICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c19zaWRlX2VmZmVjdHMgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwLCBubGlzdCkgbWl4dHVyZV9hZ19pZCAtPlxuICAgICAgICAgICAgICBsZXQgc3RlcCA9IFRyYWNlLnN1YnNfc3RlcCBydWxlX2FnX2lkIG1peHR1cmVfYWdfaWQgaW5cbiAgICAgICAgICAgICAgbGV0IHRlc3RfbGlzdCA9XG4gICAgICAgICAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uc3Vic3RfYWdlbnRfaW5fY29uY3JldGVfdGVzdCBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnX2lkKVxuICAgICAgICAgICAgICAgICAgdGVzdF9saXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBhY3Rpb25fbGlzdCA9XG4gICAgICAgICAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uc3Vic3RfYWdlbnRfaW5fY29uY3JldGVfYWN0aW9uIHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdfaWQpXG4gICAgICAgICAgICAgICAgICBhY3Rpb25fbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgc2lkZV9lZmZlY3QgPVxuICAgICAgICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3NpZGVfZWZmZWN0IHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdfaWQpXG4gICAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZmljdGl0aW91c19sb2NhbF9saXN0ID0gW10gaW5cbiAgICAgICAgICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKSA9XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApIChzaXRlLCBiaW5kaW5nX3N0YXRlKSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwb3RlbnRpYWxfdGFyZ2V0ID1cbiAgICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWxfdGFyZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHNpdGUgYmluZGluZ19zdGF0ZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBwb3RlbnRpYWxfdGFyZ2V0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBbIGwgXSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCB0IC0+IHQgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzIGxcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHByZWRpY2F0ZV9pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgIE11dGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMb2NrX3NpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggc3RlcF9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlICkpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGZpY3RpdGlvdXNfbGlzdCA9IHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0X3N0ZXBcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlX25zdGVwcyA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfbl9zaWRlX2V2ZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCAoXywgYSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZC5wcmVfbnN0ZXBzIHNpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZWRpY2F0ZV9pZCwgXywgKHRlc3QsIGFjdGlvbikpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIGVycm9yIHRlc3QgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByZWRpY2F0ZV9pZCwgTm9uZSwgKENvdW50ZXIgMCwgQ291bnRlciAxKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwICkpXG4gICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcGlkX3J1bGVfYWdlbnRfbXV0ZXggPVxuICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfb3B0aW9uIHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucnVsZV9hZ2VudF9pZF9tdXRleFxuICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPiBlcnJvciwgbG9nX2luZm8sIHhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgICAgICAgKEZhaWx1cmUgXCJVbmtub3duIGFnZW50IGlkXCIpIDBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9tYXAgPVxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG1hcCkgdGVzdCAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfdGVzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCB0ZXN0XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYnVpbGRfbWFwIHRlc3RfbGlzdCBtYXApXG4gICAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSlcbiAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgdGVzdF9tYXAgPVxuICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZCBwaWRfcnVsZV9hZ2VudF9tdXRleCAoQ291bnRlciAwKSB0ZXN0X21hcFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCA9XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXApXG4gICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbGlzdCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbiB0cnVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGluaXQgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgICAgICAgICAgICBidWlsZF9tYXAgdGVzdF9saXN0IHRlc3RfbWFwICkpXG4gICAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSwgdGVzdF9tYXApXG4gICAgICAgICAgICAgICAgICBhY3Rpb25fbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgYWN0aW9uX21hcCA9XG4gICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuYWRkIHBpZF9ydWxlX2FnZW50X211dGV4IChDb3VudGVyIDEpIGFjdGlvbl9tYXBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHRlc3RfbWFwLCBhY3Rpb25fbWFwID1cbiAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX29wdGlvbiBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJ1bGVfYWdlbnRfaWRfc3Vic1xuICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICB8IFNvbWUgbV9pZCAtPlxuICAgICAgICAgICAgICAgICAgKCBQcmVkaWNhdGVpZE1hcC5hZGQgbV9pZCAoQ291bnRlciAwKSB0ZXN0X21hcCxcbiAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuYWRkIG1faWQgKFBvaW50ZXJfdG9fYWdlbnQgbWl4dHVyZV9hZ19pZClcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbWFwIClcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gdGVzdF9tYXAsIGFjdGlvbl9tYXBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCogVGhlIGZvbGxvd2luZyBibG9jayBzaG91bGQgYmUgbG9nZ2VkIGFuZCBjb3JyZWN0ZWQgKilcbiAgICAgICAgICAgICAgKCogbGV0IHRlc3RfbWFwLGFjdGlvbl9tYXAgPVxuICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5taXh0dXJlX2FnZW50X2lkX211dGV4IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTb21lIG1faWQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuYWRkXG4gICAgICAgICAgICAgICAgICAgICAgICAgbV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgIChDb3VudGVyIDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9tYXAsXG4gICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZFxuICAgICAgICAgICAgICAgICAgICAgICAgIG1faWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAoQ291bnRlciAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9tYXBcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHRlc3RfbWFwLGFjdGlvbl9tYXBcbiAgICAgICAgICAgICAgICAgaW4qKVxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIG1lcmdlZF9tYXAgPVxuICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLm1vbmFkaWNfZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIGFjdGlvbikgYWNjKVxuICAgICAgICAgICAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIFVua25vd24pIGFjYylcbiAgICAgICAgICAgICAgICAgIChmdW4gXyBlIGtleSBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKFVua25vd24sIGFjdGlvbikgYWNjKVxuICAgICAgICAgICAgICAgICAgdGVzdF9tYXAgYWN0aW9uX21hcCBQcmVkaWNhdGVpZE1hcC5lbXB0eVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbWVyZ2VkX21hcCwgbmxpc3QgPVxuICAgICAgICAgICAgICAgICgqIGVudW1lcmF0aW9uIG9mIHBvdGVudGlhbCBiaW5kaW5nIHN0YXRlLCBhY2NvcmRpbmcgdG8gYSBzdWJzdGl0dXRpb24gKilcbiAgICAgICAgICAgICAgICAoKiBJZiB0aGUgZXZlbnQgaXMgc2VsZWN0ZWQsIGNoZWNrIHRoYXQgdGhlIHdpcmUgZW5kIGluIHRoZSBzdGF0ZSAwKilcbiAgICAgICAgICAgICAgICAoKiBVbmRlZi0+Q291bnRlciAwIDogb3BlbmluZyBldmVudCAqKVxuICAgICAgICAgICAgICAgICgqIENvdW50ZXIgMCAtPiBDb3VudGVyIDEgOiBwb3RlbnRpYWwgYmluZGluZyB0eXBlICopXG4gICAgICAgICAgICAgICAgKCogPT4gQ291bnRlciAxIC0+IENvdW50ZXIgMCA6IHRoZSBjb3JyZXNwb25kaW5nIHN1YnN0aXR1dGlvbiBpcyBhcHBsaWVkICopXG4gICAgICAgICAgICAgICAgKCogQ291bnRlciAwIC0+IFVuZGVmIDogY2xvc2luZyBldmVudCwgY2hlY2sgdGhhdCBpZiB0aGUgZXZlbnQgaGFzIGJlZW4gc2VsZWN0ZWQgKG9wZW4gYW5kIGNsb3NlZCksIHRoZW4gZXhhY3RlbHkgb25lIGJpbmRpbmcgc3RhdGUgaGFzIGJlZW4gc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIHN1YnN0aXR1dGlvbiAqKVxuICAgICAgICAgICAgICAgICgqIElmIHRoZSBldmVudCBpcyBzZWxlY3RlZCAmIHRoZSBhY2NvcmRpbmcgc3Vic3RpdHV0aW9uIHRha2VuLCB0aGVuIG11dHVhbCBleGNsdXNpb24gYW1vbmcgdGhlIHBvdGVudGlhbCBiaW5kaW5nIHN0YXRlKilcbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biAobWFwLCBubGlzdCkgcGlkIC0+XG4gICAgICAgICAgICAgICAgICAgICggUHJlZGljYXRlaWRNYXAuYWRkIHBpZCAoQ291bnRlciAxLCBDb3VudGVyIDApIG1hcCxcbiAgICAgICAgICAgICAgICAgICAgICBwaWQgOjogbmxpc3QgKSlcbiAgICAgICAgICAgICAgICAgIChtZXJnZWRfbWFwLCBubGlzdCkgZmljdGl0aW91c19sb2NhbF9saXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBtYXAgKHBpZCwgXywgKHRlc3QsIGFjdGlvbikpIC0+XG4gICAgICAgICAgICAgICAgICAgIGFkZF9zdGF0ZSBwaWQgKHRlc3QsIGFjdGlvbikgbWFwKVxuICAgICAgICAgICAgICAgICAgbWVyZ2VkX21hcCB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IChfLCBhLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICAgICAgICAgICAgW10gdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5tYXBpXG4gICAgICAgICAgICAgICAgICAoZnVuIHBpZCAodGVzdCwgYWN0aW9uKSAtPlxuICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IFVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggQS5nZXQgYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcF9pbnYgcGlkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgYWdfaWQgPSBtaXh0dXJlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBTaXRlSWRTZXQubWVtIChydWxlX2FnX2lkLCBzaXRlX2lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5yZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzXG4gICAgICAgICAgICAgICAgICAgICAgfCBIZXJlIF8gfCBQb2ludGVyIF8gfCBNdXRleCBfIHwgTGluayBfIHwgSW50ZXJuYWxfc3RhdGUgX1xuICAgICAgICAgICAgICAgICAgICAgIHwgRmljdGl0aW91cyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIHRlc3QsIFVua25vd25cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHRlc3QsIGFjdGlvbilcbiAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgaWYgc2lkZV9lZmZlY3QgPSBbXSAmJiBQcmVkaWNhdGVpZE1hcC5pc19lbXB0eSBtZXJnZWRfbWFwIHRoZW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCwgbmxpc3RcbiAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgbnNpZFxuICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5zaWRlX2VmZmVjdF9vZl9saXN0IHNpZGVfZWZmZWN0KVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPSBBLnNldCBwcmVfZXZlbnQgbnNpZCBzdGVwIGluXG4gICAgICAgICAgICAgICAgbGV0IHByZV9zdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuZm9sZFxuICAgICAgICAgICAgICAgICAgICAoZnVuIGlkICh0ZXN0LCBhY3Rpb24pIG1hcCAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSwgbGlzdCA9IEEuZ2V0IG1hcCBpZCBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZScgPSB2YWx1ZSArIDEgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWRkIGlkIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEEuc2V0IG1hcCBpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUnLCAobnNpZCwgdmFsdWUsIHRlc3QsIGFjdGlvbikgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIG1hcClcbiAgICAgICAgICAgICAgICAgICAgbWVyZ2VkX21hcCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW5cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX2tpbmRfb2ZfZXZlbnQgbnNpZCAodHlwZV9vZl9zdGVwIHN0ZXApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgICAgICAgICAgICBwcmVfZXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgIHByZV9maWN0aXRpb3VzX2xpc3QgPSBmaWN0aXRpb3VzX2xpc3Q7XG4gICAgICAgICAgICAgICAgICAgIHByZV9zdGVwc19ieV9jb2x1bW47XG4gICAgICAgICAgICAgICAgICAgIHByZV9uc3RlcHMgPSBuc2lkO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIG5saXN0XG4gICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIG5saXN0KVxuICAgICAgICAgICAgbClcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCwgW10pXG4gICAgaW5cblxuICAgICgqIGRlYWwgd2l0aCBzdWJzdGl0dXRhYmxlIGFnZW50IGluIGxpbmtzKilcbiAgICBsZXQgZiBlcnJvciBsb2dfaW5mbyBibGFja2JvYXJkIHNldCA9XG4gICAgICBBZ2VudElkMlNldC5mb2xkXG4gICAgICAgIChmdW4gbGluayAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSAtPlxuICAgICAgICAgIGxldCBsaW5rX211dGV4ID1cbiAgICAgICAgICAgIG1hdGNoIEFnZW50SWQyTWFwLmZpbmRfb3B0aW9uIGxpbmsgZGF0YV9zdHJ1Y3R1cmUubGlua3NfbXV0ZXggd2l0aFxuICAgICAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJ1bGVfYWdfaWQxLCBydWxlX2FnX2lkMiA9IGxpbmsgaW5cbiAgICAgICAgICBsZXQgbF9hZ18xID1cbiAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFsgcnVsZV9hZ19pZDEgXSBydWxlX2FnX2lkMVxuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb25cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsX2FnXzIgPVxuICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgWyBydWxlX2FnX2lkMiBdIHJ1bGVfYWdfaWQyXG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvblxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRlc3RfbGlzdCA9XG4gICAgICAgICAgICBBZ2VudElkMk1hcC5maW5kX2RlZmF1bHQgW10gbGluayBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc190ZXN0c1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGFjdGlvbl9saXN0ID1cbiAgICAgICAgICAgIEFnZW50SWQyTWFwLmZpbmRfZGVmYXVsdCBbXSBsaW5rIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX2FjdGlvbnNcbiAgICAgICAgICBpblxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpIG1peHR1cmVfYWdfMSAtPlxuICAgICAgICAgICAgICBsZXQgc3VicyA9IEFnZW50SWRNYXAuZW1wdHkgaW5cbiAgICAgICAgICAgICAgbGV0IHN1YnMgPVxuICAgICAgICAgICAgICAgICgqIGlmIHJ1bGVfYWdfaWQxID0gbWl4dHVyZV9hZ18xXG4gICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgIHN1YnNcbiAgICAgICAgICAgICAgICAgICBlbHNlKilcbiAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmFkZCBydWxlX2FnX2lkMSBtaXh0dXJlX2FnXzEgc3Vic1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgbWl4dHVyZV9hZ18yIC0+XG4gICAgICAgICAgICAgICAgICBpZiBydWxlX2FnX2lkMSA9IHJ1bGVfYWdfaWQyID0gKG1peHR1cmVfYWdfMSA9IG1peHR1cmVfYWdfMilcbiAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgc3RlcCA9XG4gICAgICAgICAgICAgICAgICAgICAgVHJhY2UuZHVtbXlfc3RlcFxuICAgICAgICAgICAgICAgICAgICAgICAgKFwiTElOSyBcIiBeIHN0cmluZ19vZl9pbnQgbWl4dHVyZV9hZ18xIF4gXCIvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaW50IHJ1bGVfYWdfaWQxIF4gXCIsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaW50IG1peHR1cmVfYWdfMiBeIFwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBydWxlX2FnX2lkMiBeIFwiKVwiKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgc3VicyA9XG4gICAgICAgICAgICAgICAgICAgICAgKCogaWYgcnVsZV9hZ19pZDIgPSBtaXh0dXJlX2FnXzJcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgc3Vic1xuICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UqKVxuICAgICAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuYWRkIHJ1bGVfYWdfaWQyIG1peHR1cmVfYWdfMiBzdWJzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZXN0X2xpc3QsIGFjdGlvbl9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBpZiBzdWJzID0gQWdlbnRJZE1hcC5lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3QsIGFjdGlvbl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZiB4ID0gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IHN1YnMgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICggTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV90ZXN0IGYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiBmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9saXN0IClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbWFwID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBtYXApIHRlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGJ1aWxkX21hcCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXAgPVxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0ICkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfYWN0aW9uIHRydWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yIGJsYWNrYm9hcmQgaW5pdCBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFjdGlvbl9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHBpZCwgeCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRnJlZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEuZ2V0IGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXBfaW52IHBpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnX2lkID0gbWl4dHVyZV9hZ18xXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIFNpdGVJZFNldC5tZW0gKHJ1bGVfYWdfaWQxLCBzaXRlX2lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlZF9zaXRlc19pbl9vdGhlcl9saW5rc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBhZ19pZCA9IG1peHR1cmVfYWdfMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBTaXRlSWRTZXQubWVtIChydWxlX2FnX2lkMiwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkLCBVbmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkLCB4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHBpZCwgeClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHBpZCwgeClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMaXN0LnJldiBhY3Rpb25fbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX21hcCBhY3Rpb25fbGlzdCBhY3Rpb25fbWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX21hcCB0ZXN0X2xpc3QgdGVzdF9tYXAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5lbXB0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9tYXAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5tb25hZGljX2ZvbGQyIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBVbmtub3duKSBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5IChVbmtub3duLCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbWFwIGFjdGlvbl9tYXAgUHJlZGljYXRlaWRNYXAuZW1wdHlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZCBsaW5rX211dGV4IChDb3VudGVyIDAsIENvdW50ZXIgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCogUG9pbnRlciAtPiAqKVxuICAgICAgICAgICAgICAgICAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9vcHRpb24gcnVsZV9hZ19pZDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucnVsZV9hZ2VudF9pZF9zdWJzXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBtX2lkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5hZGQgbV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUG9pbnRlcl90b19hZ2VudCBtaXh0dXJlX2FnXzEsIFVua25vd24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbWVyZ2VkX21hcFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9vcHRpb24gcnVsZV9hZ19pZDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucnVsZV9hZ2VudF9pZF9zdWJzXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBtX2lkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5hZGQgbV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUG9pbnRlcl90b19hZ2VudCBtaXh0dXJlX2FnXzIsIFVua25vd24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbWVyZ2VkX21hcFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBpZiBQcmVkaWNhdGVpZE1hcC5pc19lbXB0eSBtZXJnZWRfbWFwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPSBBLnNldCBwcmVfZXZlbnQgbnNpZCBzdGVwIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHByZV9zdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGlkICh0ZXN0LCBhY3Rpb24pIG1hcCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSwgbGlzdCA9IEEuZ2V0IG1hcCBpZCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZScgPSB2YWx1ZSArIDEgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWRkIGlkIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEuc2V0IG1hcCBpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUnLCAobnNpZCwgdmFsdWUsIHRlc3QsIGFjdGlvbikgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkX21hcCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX2tpbmRfb2ZfZXZlbnQgbnNpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZV9vZl9zdGVwIHN0ZXApXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVfZXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZV9zdGVwc19ieV9jb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZV9uc3RlcHMgPSBuc2lkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICBsX2FnXzIpXG4gICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgbF9hZ18xKVxuICAgICAgICBzZXRcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgb3RoZXJfbGlua3MgPVxuICAgICAgICAgIEFnZW50SWQyU2V0LmRpZmYgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX3ByaW9yaXR5O1xuICAgICAgfVxuICAgIGluXG5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgIGYgZXJyb3IgbG9nX2luZm8gYmxhY2tib2FyZCBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19wcmlvcml0eVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBmIGVycm9yIGxvZ19pbmZvIGJsYWNrYm9hcmQgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NcbiAgICBpblxuXG4gICAgKCogZGVhbCB3aXRoIHJpZ2lkIGVsZW1lbnRzICopXG4gICAgbGV0IHNpZGVfZWZmZWN0ID0gZGF0YV9zdHJ1Y3R1cmUuc3VyZV9zaWRlX2VmZmVjdHMgaW5cbiAgICBsZXQgYWN0aW9uX2xpc3QgPVxuICAgICAgbWF0Y2ggaW5pdF9zdGVwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkYXRhX3N0cnVjdHVyZS5jcmVhdGVfYWN0aW9ucyBAIGRhdGFfc3RydWN0dXJlLnN1cmVfYWN0aW9uc1xuICAgICAgfCBTb21lIF8gLT4gZGF0YV9zdHJ1Y3R1cmUuc3VyZV9hY3Rpb25zXG4gICAgaW5cbiAgICBsZXQgdGVzdF9saXN0ID0gZGF0YV9zdHJ1Y3R1cmUuc3VyZV90ZXN0cyBpblxuICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX2xpc3QgaW5cblxuICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMsXG4gICAgICAgICAgX2luaXRfc3RlcCApID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKCBlcnJvcixcbiAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgIGluaXRfc3RlcCApIChzaXRlLCBiaW5kaW5nX3N0YXRlKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHBvdGVudGlhbF90YXJnZXQgPVxuICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHNpdGVcbiAgICAgICAgICAgICAgYmluZGluZ19zdGF0ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggcG90ZW50aWFsX3RhcmdldCB3aXRoXG4gICAgICAgICAgfCBbIGwgXSAtPlxuICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gbGlzdCB0IC0+IHQgOjogbGlzdClcbiAgICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMgbFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgbGlzdCxcbiAgICAgICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxldCBydWxlX2FnX2lkID1cbiAgICAgICAgICAgICAgQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCAoQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHByZWRpY2F0ZV9pbmZvID1cbiAgICAgICAgICAgICAgTXV0ZXhcbiAgICAgICAgICAgICAgICAoTG9ja19zaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICggc3RlcF9pZCxcbiAgICAgICAgICAgICAgICAgICAgIHJ1bGVfYWdfaWQsXG4gICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlICkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgX3N0ZXBfaWQgPVxuICAgICAgICAgICAgICBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgIHsgYmxhY2tib2FyZCB3aXRoIHByZV9uc3RlcHMgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIH1cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19uX3NpZGVfZXZlbnRzIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9IENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdCBpblxuICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudFxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQucHJlX25zdGVwcyBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGJsYWNrYm9hcmQpIChwcmVkaWNhdGVfaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIGVycm9yIHRlc3QgYWN0aW9uIHByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAoKHByZWRpY2F0ZV9pZCwgTm9uZSwgKENvdW50ZXIgMCwgQ291bnRlciAxKSkgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICBwb3RlbnRpYWxfdGFyZ2V0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgaW5pdF9zdGVwICkpXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgIHNpZGVfZWZmZWN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG1hcCkgdGVzdCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB0ZXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGJ1aWxkX21hcCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSlcbiAgICAgICAgdGVzdF9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwKSBhY3Rpb24gLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbGlzdCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfYWN0aW9uIHRydWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0IGFjdGlvblxuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGJ1aWxkX21hcCBhY3Rpb25fbGlzdCBhY3Rpb25fbWFwLFxuICAgICAgICAgICAgYnVpbGRfbWFwIHRlc3RfbGlzdCB0ZXN0X21hcCApKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSwgdGVzdF9tYXApXG4gICAgICAgIGFjdGlvbl9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIG1lcmdlZF9tYXAgPVxuICAgICAgUHJlZGljYXRlaWRNYXAubW9uYWRpY19mb2xkMiBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIGFjdGlvbikgYWNjKVxuICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY2MgLT4gZSwgUHJlZGljYXRlaWRNYXAuYWRkIGtleSAodGVzdCwgVW5rbm93bikgYWNjKVxuICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKFVua25vd24sIGFjdGlvbikgYWNjKVxuICAgICAgICB0ZXN0X21hcCBhY3Rpb25fbWFwIFByZWRpY2F0ZWlkTWFwLmVtcHR5XG4gICAgaW5cbiAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCBwaWQgLT4gUHJlZGljYXRlaWRNYXAuYWRkIHBpZCAoQ291bnRlciAxLCBVbmRlZmluZWQpIG1hcClcbiAgICAgICAgbWVyZ2VkX21hcCBmaWN0aXRpb3VzX2xvY2FsX2xpc3RcbiAgICBpblxuICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChwaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPiBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcClcbiAgICAgICAgbWVyZ2VkX21hcCB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgICgqIElmIHRoZSBldmVudCBpcyBzZWxlY3RlZCwgY2hlY2sgdGhhdCB0aGUgd2lyZSBlbmQgaW4gdGhlIHN0YXRlIDAqKVxuICAgICAgKCogVW5kZWYtPkNvdW50ZXIgMCA6IG9wZW5pbmcgZXZlbnQgKilcbiAgICAgICgqIENvdW50ZXIgMCAtPiBDb3VudGVyIDEgOiBwb3RlbnRpYWwgYmluZGluZyB0eXBlICopXG4gICAgICAoKiBDb3VudGVyIDEgLT4gQ291bnRlciAwIDogdGhlIGNvcnJlc3BvbmRpbmcgc3Vic3RpdHV0aW9uIGlzIGFwcGxpZWQgKilcbiAgICAgICgqID0+IENvdW50ZXIgMCAtPiBVbmRlZiA6IGNsb3NpbmcgZXZlbnQsIGNoZWNrIHRoYXQgaWYgdGhlIGV2ZW50IGhhcyBiZWVuIHNlbGVjdGVkIChvcGVuIGFuZCBjbG9zZWQpLCB0aGVuIGV4YWN0ZWx5IG9uZSBiaW5kaW5nIHN0YXRlIGhhcyBiZWVuIHNlbGVjdGVkLFxuICAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIHN1YnN0aXR1dGlvbiAqKVxuICAgICAgKCogSWYgdGhlIGV2ZW50IGlzIHNlbGVjdGVkICYgdGhlIGFjY29yZGluZyBzdWJzdGl0dXRpb24gdGFrZW4sIHRoZW4gbXV0dWFsIGV4Y2x1c2lvbiBhbW9uZyB0aGUgcG90ZW50aWFsIGJpbmRpbmcgc3RhdGUqKVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgcGlkIC0+IGFkZF9zdGF0ZSBwaWQgKENvdW50ZXIgMCwgVW5kZWZpbmVkKSBtYXApXG4gICAgICAgIG1lcmdlZF9tYXAgbmxpc3RcbiAgICBpblxuICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgIFtdIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0c1xuICAgIGluXG4gICAgaWYgc2lkZV9lZmZlY3QgPSBbXSAmJiBQcmVkaWNhdGVpZE1hcC5pc19lbXB0eSBtZXJnZWRfbWFwIHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN0ZXBfaWQgKyAxKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgICBsZXQgXyA9XG4gICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50IG5zaWRcbiAgICAgICAgICAoQ0kuUG8uSy5zaWRlX2VmZmVjdF9vZl9saXN0IHNpZGVfZWZmZWN0KVxuICAgICAgaW5cbiAgICAgIGxldCBfID0gQS5zZXQgcHJlX2V2ZW50IG5zaWQgc3RlcCBpblxuICAgICAgbGV0IHByZV9zdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICBQcmVkaWNhdGVpZE1hcC5mb2xkXG4gICAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSBtYXAgLT5cbiAgICAgICAgICAgIGxldCB2YWx1ZSwgbGlzdCA9IEEuZ2V0IG1hcCBpZCBpblxuICAgICAgICAgICAgbGV0IHZhbHVlJyA9IHZhbHVlICsgMSBpblxuICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICBmYWRkIGlkIGFjdGlvblxuICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgQS5zZXQgbWFwIGlkICh2YWx1ZScsIChuc2lkLCB2YWx1ZSwgdGVzdCwgYWN0aW9uKSA6OiBsaXN0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hcClcbiAgICAgICAgICBtZXJnZWRfbWFwIGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtblxuICAgICAgaW5cbiAgICAgIGxldCBfID0gQS5zZXQgYmxhY2tib2FyZC5wcmVfa2luZF9vZl9ldmVudCBuc2lkICh0eXBlX29mX3N0ZXAgc3RlcCkgaW5cbiAgICAgIGxldCBvYnNlcnZhYmxlX2xpc3QgPVxuICAgICAgICBpZiBUcmFjZS5zdGVwX2lzX29icyBzdGVwIHRoZW5cbiAgICAgICAgICAoWyBuc2lkIF0sIFRyYWNlLnNpbXVsYXRpb25faW5mb19vZl9zdGVwIHN0ZXApXG4gICAgICAgICAgOjogYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcbiAgICAgIGluXG4gICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgIHtcbiAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICBwcmVfZXZlbnQ7XG4gICAgICAgICAgcHJlX2ZpY3RpdGlvdXNfbGlzdCA9IGZpY3RpdGlvdXNfbGlzdDtcbiAgICAgICAgICBwcmVfc3RlcHNfYnlfY29sdW1uO1xuICAgICAgICAgIHByZV9uc3RlcHMgPSBuc2lkO1xuICAgICAgICAgIHByZV9vYnNlcnZhYmxlX2xpc3QgPSBvYnNlcnZhYmxlX2xpc3Q7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdGVwX2lkICsgMSlcbiAgICApXG5cbiAgbGV0IGFkZF9zdGVwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0ZXAgYmxhY2tib2FyZCBzdGVwX2lkID1cbiAgICBsZXQgaW5pdCA9IFRyYWNlLnN0ZXBfaXNfaW5pdCBzdGVwIGluXG4gICAgbGV0IGluaXRfc3RlcCA9IE5vbmUgaW5cbiAgICBsZXQgcHJlX2V2ZW50ID0gYmxhY2tib2FyZC5wcmVfZXZlbnQgaW5cbiAgICBsZXQgdGVzdF9saXN0ID0gVHJhY2UudGVzdHNfb2Zfc3RlcCBzdGVwIGluXG4gICAgbGV0IGFjdGlvbl9saXN0LCBzaWRlX2VmZmVjdCA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBzdGVwIGluXG4gICAgbGV0IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCA9IFtdIGluXG4gICAgbGV0IGZpY3RpdGlvdXNfbGlzdCA9IGJsYWNrYm9hcmQucHJlX2ZpY3RpdGlvdXNfbGlzdCBpblxuICAgIGxldCBidWlsZF9tYXAgbGlzdCBtYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgKGlkLCB2YWx1ZSkgLT4gUHJlZGljYXRlaWRNYXAuYWRkIGlkIHZhbHVlIG1hcClcbiAgICAgICAgbWFwIGxpc3RcbiAgICBpblxuICAgIGxldCBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCA9XG4gICAgICBsZXQgdGVzdCcsIGFjdGlvbicgPVxuICAgICAgICBQcmVkaWNhdGVpZE1hcC5maW5kX2RlZmF1bHQgKFVua25vd24sIFVua25vd24pIHBpZCBtYXBcbiAgICAgIGluXG4gICAgICBsZXQgdGVzdCA9XG4gICAgICAgIGlmIHN0cmljdGx5X21vcmVfcmVmaW5lZCB0ZXN0IHRlc3QnIHRoZW5cbiAgICAgICAgICB0ZXN0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0ZXN0J1xuICAgICAgaW5cbiAgICAgIGxldCBhY3Rpb24gPVxuICAgICAgICBpZiBzdHJpY3RseV9tb3JlX3JlZmluZWQgYWN0aW9uIGFjdGlvbicgdGhlblxuICAgICAgICAgIGFjdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgYWN0aW9uJ1xuICAgICAgaW5cbiAgICAgIGxldCBtYXAgPSBQcmVkaWNhdGVpZE1hcC5hZGQgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCBpblxuICAgICAgbWFwXG4gICAgaW5cbiAgICBsZXQgZmFkZCBwaWQgcCBtYXAgPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBVbmRlZmluZWQgfCBEZWZpbmVkIHwgUHJlc2VudCB8IEJvdW5kXG4gICAgICB8IEJvdW5kX3RvX3R5cGUgXyB8IFVua25vd24gLT5cbiAgICAgICAgKClcbiAgICAgIHwgRnJlZSB8IFBvaW50ZXJfdG9fYWdlbnQgXyB8IEJvdW5kX3RvIF8gLT5cbiAgICAgICAgbGV0IG9sZCA9IEEuZ2V0IG1hcCBwaWQgaW5cbiAgICAgICAgQS5zZXQgbWFwIHBpZCAoQy5hZGQgcCBvbGQpXG4gICAgaW5cbiAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgIF9pbml0X3N0ZXAgKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuICggZXJyb3IsXG4gICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMsXG4gICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAoc2l0ZSwgYmluZGluZ19zdGF0ZSkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwb3RlbnRpYWxfdGFyZ2V0ID1cbiAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzaXRlXG4gICAgICAgICAgICAgIGJpbmRpbmdfc3RhdGVcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHBvdGVudGlhbF90YXJnZXQgd2l0aFxuICAgICAgICAgIHwgWyBsIF0gLT5cbiAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGxpc3QgdCAtPiB0IDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzIGxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIGxpc3QsXG4gICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgcnVsZV9hZ19pZCA9XG4gICAgICAgICAgICAgIENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgKENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9XG4gICAgICAgICAgICAgIE11dGV4XG4gICAgICAgICAgICAgICAgKExvY2tfc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgICAgICAoIHN0ZXBfaWQsXG4gICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgcnVsZV9hZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSApKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCA9XG4gICAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICBpbml0X3N0ZXBcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpIGxpc3QgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgeyBibGFja2JvYXJkIHdpdGggcHJlX25zdGVwcyA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyArIDEgfVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX25fc2lkZV9ldmVudHMgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgc2lkZV9lZmZlY3QgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCAoXywgYSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICBbXSBsaXN0XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID0gQ0kuUG8uSy5zaWRlX2VmZmVjdF9vZl9saXN0IHNpZGVfZWZmZWN0IGluXG4gICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZC5wcmVfbnN0ZXBzIHNpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgYmxhY2tib2FyZCkgKHByZWRpY2F0ZV9pZCwgXywgKHRlc3QsIGFjdGlvbikpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRfZmljdGl0aW91c19hY3Rpb24gZXJyb3IgdGVzdCBhY3Rpb24gcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICgocHJlZGljYXRlX2lkLCBOb25lLCAoQ291bnRlciAwLCBDb3VudGVyIDEpKSA6OiBsaXN0KVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICBpbml0X3N0ZXAgKSlcbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgW10sXG4gICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgc2lkZV9lZmZlY3RcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbWFwKSB0ZXN0IC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfdGVzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHRlc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYnVpbGRfbWFwIHRlc3RfbGlzdCBtYXApXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFByZWRpY2F0ZWlkTWFwLmVtcHR5KVxuICAgICAgICB0ZXN0X2xpc3RcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXApIGFjdGlvbiAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9saXN0LCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgcHJlZGljYXRlc19vZl9hY3Rpb24gZmFsc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0IGFjdGlvblxuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGJ1aWxkX21hcCBhY3Rpb25fbGlzdCBhY3Rpb25fbWFwLFxuICAgICAgICAgICAgYnVpbGRfbWFwIHRlc3RfbGlzdCB0ZXN0X21hcCApKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSwgdGVzdF9tYXApXG4gICAgICAgIGFjdGlvbl9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIG1lcmdlZF9tYXAgPVxuICAgICAgUHJlZGljYXRlaWRNYXAubW9uYWRpY19mb2xkMiBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIGFjdGlvbikgYWNjKVxuICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY2MgLT4gZSwgUHJlZGljYXRlaWRNYXAuYWRkIGtleSAodGVzdCwgVW5rbm93bikgYWNjKVxuICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKFVua25vd24sIGFjdGlvbikgYWNjKVxuICAgICAgICB0ZXN0X21hcCBhY3Rpb25fbWFwIFByZWRpY2F0ZWlkTWFwLmVtcHR5XG4gICAgaW5cbiAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCBwaWQgLT4gUHJlZGljYXRlaWRNYXAuYWRkIHBpZCAoQ291bnRlciAxLCBVbmRlZmluZWQpIG1hcClcbiAgICAgICAgbWVyZ2VkX21hcCBmaWN0aXRpb3VzX2xvY2FsX2xpc3RcbiAgICBpblxuICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChwaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPiBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcClcbiAgICAgICAgbWVyZ2VkX21hcCB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgIFtdIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0c1xuICAgIGluXG4gICAgaWYgc2lkZV9lZmZlY3QgPSBbXSAmJiBQcmVkaWNhdGVpZE1hcC5pc19lbXB0eSBtZXJnZWRfbWFwIHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN0ZXBfaWQgKyAxKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgICBsZXQgXyA9XG4gICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50IG5zaWRcbiAgICAgICAgICAoQ0kuUG8uSy5zaWRlX2VmZmVjdF9vZl9saXN0IHNpZGVfZWZmZWN0KVxuICAgICAgaW5cbiAgICAgIGxldCBfID0gQS5zZXQgcHJlX2V2ZW50IG5zaWQgc3RlcCBpblxuICAgICAgbGV0IHByZV9zdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICBQcmVkaWNhdGVpZE1hcC5mb2xkXG4gICAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSBtYXAgLT5cbiAgICAgICAgICAgIGxldCB2YWx1ZSwgbGlzdCA9IEEuZ2V0IG1hcCBpZCBpblxuICAgICAgICAgICAgbGV0IHZhbHVlJyA9IHZhbHVlICsgMSBpblxuICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICBmYWRkIGlkIGFjdGlvblxuICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgQS5zZXQgbWFwIGlkICh2YWx1ZScsIChuc2lkLCB2YWx1ZSwgdGVzdCwgYWN0aW9uKSA6OiBsaXN0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hcClcbiAgICAgICAgICBtZXJnZWRfbWFwIGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtblxuICAgICAgaW5cbiAgICAgIGxldCBfID0gQS5zZXQgYmxhY2tib2FyZC5wcmVfa2luZF9vZl9ldmVudCBuc2lkICh0eXBlX29mX3N0ZXAgc3RlcCkgaW5cbiAgICAgIGxldCBvYnNlcnZhYmxlX2xpc3QgPVxuICAgICAgICBpZiBUcmFjZS5zdGVwX2lzX29icyBzdGVwIHRoZW5cbiAgICAgICAgICAoWyBuc2lkIF0sIFRyYWNlLnNpbXVsYXRpb25faW5mb19vZl9zdGVwIHN0ZXApXG4gICAgICAgICAgOjogYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcbiAgICAgIGluXG4gICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgIHtcbiAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICBwcmVfZXZlbnQ7XG4gICAgICAgICAgcHJlX2ZpY3RpdGlvdXNfbGlzdCA9IGZpY3RpdGlvdXNfbGlzdDtcbiAgICAgICAgICBwcmVfc3RlcHNfYnlfY29sdW1uO1xuICAgICAgICAgIHByZV9uc3RlcHMgPSBuc2lkO1xuICAgICAgICAgIHByZV9vYnNlcnZhYmxlX2xpc3QgPSBvYnNlcnZhYmxlX2xpc3Q7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdGVwX2lkICsgMSlcbiAgICApXG5cbiAgbGV0IGZpbmFsaXplIGhldXJpc3RpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgbCA9IGJsYWNrYm9hcmQucHJlX2ZpY3RpdGlvdXNfbGlzdCBpblxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgfCBfIC0+XG4gICAgICBsZXQgbnNpZCA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyArIDEgaW5cbiAgICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX25fc2lkZV9ldmVudHMgbG9nX2luZm8gaW5cbiAgICAgIGxldCBvYnNlcnZhYmxlX2xpc3QgPVxuICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAoZnVuICh4LCBpbmZvKSAtPiBuc2lkIDo6IHgsIGluZm8pXG4gICAgICAgICAgKExpc3QucmV2IGJsYWNrYm9hcmQucHJlX29ic2VydmFibGVfbGlzdClcbiAgICAgIGluXG4gICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgIHtcbiAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICBwcmVfbnN0ZXBzID0gbnNpZDtcbiAgICAgICAgICBwcmVfb2JzZXJ2YWJsZV9saXN0ID0gb2JzZXJ2YWJsZV9saXN0O1xuICAgICAgICAgIHByZV9maWN0aXRpb3VzX29ic2VydmFibGUgPSBTb21lIG5zaWQ7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGVycm9yLCBibGFja2JvYXJkKSBwcmVkaWNhdGVfaWQgLT5cbiAgICAgICAgICAgIGFkZF9maWN0aXRpb3VzX2FjdGlvbiBlcnJvciBVbmRlZmluZWQgVW5rbm93biBwcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgYmxhY2tib2FyZClcbiAgICAgICAgICAoZXJyb3IsIGJsYWNrYm9hcmQpIGxcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzZXQgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gc2V0IChzdGVwcywgXykgLT5cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgc2V0KSBlaWQgLT5cbiAgICAgICAgICAgICAgICBsZXQgc3RlcCA9IEEuZ2V0IGJsYWNrYm9hcmQucHJlX2V2ZW50IGVpZCBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGFnZW50c19pbl9vYnMgPVxuICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5hZ2VudF9pZF9pbl9vYnMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RlcFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBDSS5Qby5LLkFnZW50SWRTZXQudW5pb24gc2V0IGFnZW50c19pbl9vYnMpXG4gICAgICAgICAgICAgIHNldCBzdGVwcylcbiAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBDSS5Qby5LLkFnZW50SWRTZXQuZW1wdHkpXG4gICAgICAgICAgb2JzZXJ2YWJsZV9saXN0XG4gICAgICBpblxuICAgICAgbGV0IHNldCB4ID0gQ0kuUG8uSy5BZ2VudElkU2V0Lm1lbSB4IHNldCBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBBLml0ZXJpXG4gICAgICAgICAgKGZ1biBpIHN0ZXAgLT5cbiAgICAgICAgICAgIGxldCBfLCBfLCBsZXZlbCA9XG4gICAgICAgICAgICAgIENJLlBvLksubGV2ZWxfb2ZfZXZlbnQgaGV1cmlzdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgc3RlcCBzZXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9sZXZlbF9vZl9ldmVudCBpIGxldmVsKVxuICAgICAgICAgIGJsYWNrYm9hcmQucHJlX2V2ZW50XG4gICAgICBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgIHByaW50X3ByZWJsYWNrYm9hcmQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGluXG4gICAgICAgICAgKClcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuXG4gIGxldCBhZGRfc3RlcF91cF90b19pc28gPSBhZGRfc3RlcF9zdHJvbmdcblxuICAoKiogaW50ZXJmYWNlICopXG5cbiAgbGV0IG5fcHJlZGljYXRlcyBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZC5wcmVfbmNvbHVtbiArIDFcblxuICBsZXQgZXZlbnRfbGlzdF9vZl9wcmVkaWNhdGUgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIHByZWRpY2F0ZV9pZCA9XG4gICAgdHJ5IGVycm9yLCBsb2dfaW5mbywgc25kIChBLmdldCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW4gcHJlZGljYXRlX2lkKVxuICAgIHdpdGggXyAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcIlVua25vd24gcHJlZGljYXRlIGlkXCJcbiAgICAgICAgKEZhaWx1cmUgXCJldmVudF9saXN0X29mX3ByZWRpY2F0ZVwiKSBbXVxuXG4gIGxldCBuX2V2ZW50c19wZXJfcHJlZGljYXRlIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBwcmVkaWNhdGVfaWQgPVxuICAgIHRyeSBlcnJvciwgbG9nX2luZm8sIGZzdCAoQS5nZXQgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uIHByZWRpY2F0ZV9pZClcbiAgICB3aXRoIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJVbmtub3duIHByZWRpY2F0ZSBpZFwiXG4gICAgICAgIChGYWlsdXJlIFwibl9ldmVudHNfcGVyX3ByZWRpY2F0ZVwiKSAwXG5cbiAgbGV0IG5fZXZlbnRzIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxXG5cbiAgbGV0IG1hbmRhdG9yeV9ldmVudHMgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQucHJlX29ic2VydmFibGVfbGlzdFxuXG4gIGxldCBnZXRfZmljdGl0aW91c19vYnNlcnZhYmxlIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX29ic2VydmFibGVcblxuICBsZXQgZ2V0X3NpZGVfZWZmZWN0IF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudFxuZW5kXG4iLCIoKipcbiAgKiBibGFja2JvYXJkLm1sXG4gICpcbiAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTEtMDktMDUgZmVyZXQ+XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTAyLTAzIDIwOjQ4OjM0IGZlcmV0PlxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqICpcbiAgKiBTb21lIHBhcmFtZXRlcnMgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyLDIwMTMgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5cbm1vZHVsZSB0eXBlIEJsYWNrYm9hcmQgPSBzaWdcbiAgbW9kdWxlIFBCIDogQmxhY2tib2FyZF9nZW5lcmF0aW9uLlByZUJsYWNrYm9hcmRcblxuICB0eXBlIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAoKiogYmxhY2tib2FyZCBtYXRyaXggKilcblxuICB0eXBlIGNhc2VfaW5mb1xuICB0eXBlIGNhc2VfdmFsdWVcbiAgdHlwZSBjYXNlX2FkZHJlc3NcbiAgdHlwZSBwb2ludGVyXG5cbiAgKCoqIGJsYWNrYm9hcmQqKVxuXG4gIHR5cGUgYmxhY2tib2FyZCAoKmJsYWNrYm9hcmQsIG9uY2UgZmluYWxpemVkKilcbiAgdHlwZSBhc3NpZ25fcmVzdWx0XG5cbiAgdmFsIGlzX2ZhaWxlZCA6IGFzc2lnbl9yZXN1bHQgLT4gYm9vbFxuICB2YWwgaXNfc3VjY2VlZGVkIDogYXNzaWduX3Jlc3VsdCAtPiBib29sXG4gIHZhbCBpc19pZ25vcmVkIDogYXNzaWduX3Jlc3VsdCAtPiBib29sXG4gIHZhbCBzdWNjZXNzIDogYXNzaWduX3Jlc3VsdFxuICB2YWwgaWdub3JlIDogYXNzaWduX3Jlc3VsdFxuICB2YWwgZmFpbCA6IGFzc2lnbl9yZXN1bHRcbiAgdmFsIHByZWRpY2F0ZV9pZF9vZl9jYXNlX2FkZHJlc3MgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gUEIucHJlZGljYXRlX2lkXG4gIHZhbCBidWlsZF9wb2ludGVyIDogUEIuc3RlcF9zaG9ydF9pZCAtPiBwb2ludGVyXG4gIHZhbCBpc19iZWZvcmVfYmxhY2tib2FyZCA6IHBvaW50ZXIgLT4gYm9vbFxuICB2YWwgZ2V0X2V2ZW50IDogYmxhY2tib2FyZCAtPiBQQi5zdGVwX2lkIC0+IFRyYWNlLnN0ZXBcbiAgdmFsIGdldF9uX2VpZCA6IGJsYWNrYm9hcmQgLT4gaW50XG4gIHZhbCBnZXRfbnByZWRpY2F0ZV9pZCA6IGJsYWNrYm9hcmQgLT4gaW50XG5cbiAgdmFsIGdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZF9ieV9sZXZlbCA6XG4gICAgYmxhY2tib2FyZCAtPiBQQi5wcmVkaWNhdGVfaWQgLT4gUHJpb3JpdHkubGV2ZWwgLT4gaW50XG5cbiAgdmFsIGdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZCA6IGJsYWNrYm9hcmQgLT4gUEIucHJlZGljYXRlX2lkIC0+IGludFxuICB2YWwgZ2V0X25fdW5yZXNvbHZlZF9ldmVudHMgOiBibGFja2JvYXJkIC0+IGludFxuXG4gIHZhbCBnZXRfZmlyc3RfbGlua2VkX2V2ZW50IDpcbiAgICBibGFja2JvYXJkIC0+IFBCLnByZWRpY2F0ZV9pZCAtPiBQQi5zdGVwX3Nob3J0X2lkIG9wdGlvblxuXG4gIHZhbCBnZXRfbGFzdF9saW5rZWRfZXZlbnQgOlxuICAgIGJsYWNrYm9hcmQgLT4gUEIucHJlZGljYXRlX2lkIC0+IFBCLnN0ZXBfc2hvcnRfaWQgb3B0aW9uXG5cbiAgdmFsIGdldF9zdGFja19kZXB0aCA6IGJsYWNrYm9hcmQgLT4gaW50XG5cbiAgdmFsIGlzX3NlbGVjdGVkX2V2ZW50IDpcbiAgICAoUEIuc3RlcF9pZCwgYmxhY2tib2FyZCwgYm9vbCBvcHRpb24pIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyA6IGV2ZW50X2Nhc2VfYWRkcmVzcyAtPiBjYXNlX2FkZHJlc3NcblxuICB2YWwgcHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgOlxuICAgIChjYXNlX3ZhbHVlLCBQQi5wcmVkaWNhdGVfdmFsdWUpIFBCLkNJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBmb2xsb3dfcG9pbnRlcl91cCA6XG4gICAgKGJsYWNrYm9hcmQsIGV2ZW50X2Nhc2VfYWRkcmVzcywgZXZlbnRfY2FzZV9hZGRyZXNzKSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGZvbGxvd19wb2ludGVyX2Rvd24gOlxuICAgIChibGFja2JvYXJkLCBldmVudF9jYXNlX2FkZHJlc3MsIGV2ZW50X2Nhc2VfYWRkcmVzcykgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBpc19ib3VuZGFyeSA6IChibGFja2JvYXJkLCBldmVudF9jYXNlX2FkZHJlc3MsIGJvb2wpIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgYnVpbGRfZXZlbnRfY2FzZV9hZGRyZXNzIDpcbiAgICBQQi5wcmVkaWNhdGVfaWQgLT4gcG9pbnRlciAtPiBldmVudF9jYXNlX2FkZHJlc3NcblxuICB2YWwgZXhpc3RfY2FzZSA6XG4gICAgKGJsYWNrYm9hcmQsIGV2ZW50X2Nhc2VfYWRkcmVzcywgYm9vbCBvcHRpb24pIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgZ2V0X3N0YXRpYyA6XG4gICAgKCBibGFja2JvYXJkLFxuICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzLFxuICAgICAgUEIuc3RlcF9zaG9ydF9pZCAqIFBCLnN0ZXBfaWQgKiBQQi5wcmVkaWNhdGVfdmFsdWUgKiBQQi5wcmVkaWNhdGVfdmFsdWVcbiAgICApXG4gICAgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBzZXQgOlxuICAgIChjYXNlX2FkZHJlc3MsIGNhc2VfdmFsdWUsIGJsYWNrYm9hcmQsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC50ZXJuYXJ5XG5cbiAgdmFsIGdldCA6IChjYXNlX2FkZHJlc3MsIGJsYWNrYm9hcmQsIGNhc2VfdmFsdWUpIFBCLkNJLlBvLksuSC5iaW5hcnlcbiAgdmFsIGRlYyA6IChjYXNlX2FkZHJlc3MsIGJsYWNrYm9hcmQsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgb3ZlcndyaXRlIDpcbiAgICAoY2FzZV9hZGRyZXNzLCBjYXNlX3ZhbHVlLCBibGFja2JvYXJkLCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkgudGVybmFyeVxuXG4gIHZhbCByZWZpbmUgOlxuICAgICggY2FzZV9hZGRyZXNzLFxuICAgICAgY2FzZV92YWx1ZSxcbiAgICAgIGJsYWNrYm9hcmQsXG4gICAgICBibGFja2JvYXJkICogYXNzaWduX3Jlc3VsdCApXG4gICAgUEIuQ0kuUG8uSy5ILnRlcm5hcnlcblxuICB2YWwgYnJhbmNoIDogKGJsYWNrYm9hcmQsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC51bmFyeVxuICB2YWwgcmVzZXRfbGFzdF9icmFuY2hpbmcgOiAoYmxhY2tib2FyZCwgYmxhY2tib2FyZCkgUEIuQ0kuUG8uSy5ILnVuYXJ5XG4gIHZhbCByZXNldF9pbml0IDogKGJsYWNrYm9hcmQsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBpbXBvcnQgOlxuICAgID9oZXVyaXN0aWM6UHJpb3JpdHkucHJpb3JpdGllcyAtPlxuICAgIChUcmFjZS5zdGVwIGxpc3QsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC51bmFyeVxuICAoKiogaW5pdGlhbGlzYXRpb24qKVxuXG4gIHR5cGUgcmVzdWx0ID0gKFRyYWNlLnN0ZXAgKiBQQi5DSS5Qby5LLnNpZGVfZWZmZWN0KSBsaXN0XG4gICgqKiBvdXRwdXQgcmVzdWx0KilcblxuICB2YWwgaXNfbWF4aW1hbF9zb2x1dGlvbiA6IChibGFja2JvYXJkLCBib29sKSBQQi5DSS5Qby5LLkgudW5hcnlcbiAgKCoqIGl0ZXJhdGlvbiopXG5cbiAgdmFsIHRyYW5zbGF0ZV9ibGFja2JvYXJkIDogKGJsYWNrYm9hcmQsIHJlc3VsdCkgUEIuQ0kuUG8uSy5ILnVuYXJ5XG4gICgqKiBleHBvcnRpbmcgcmVzdWx0KilcblxuICB2YWwgcHJpbnRfYmxhY2tib2FyZCA6IChibGFja2JvYXJkLCB1bml0KSBQQi5DSS5Qby5LLkgudW5hcnlcbiAgKCoqcHJldHR5IHByaW50aW5nKilcblxuICB2YWwgZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIDpcbiAgICAoc3RyaW5nLCBpbnQsIGludCwgYmxhY2tib2FyZCwgdW5pdCkgUEIuQ0kuUG8uSy5ILnF1YXRlcm5hcnlcblxuICB2YWwgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIDpcbiAgICAoYmxhY2tib2FyZCwgZXZlbnRfY2FzZV9hZGRyZXNzLCB1bml0KSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIHByaW50X3N0YWNrIDogKGJsYWNrYm9hcmQsIHVuaXQpIFBCLkNJLlBvLksuSC51bmFyeVxuICB2YWwgZXhpc3QgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV9hZGRyZXNzXG4gIHZhbCBib29sZWFuIDogYm9vbCBvcHRpb24gLT4gY2FzZV92YWx1ZVxuICB2YWwgcG9pbnRlcl90b19wcmV2aW91cyA6IGV2ZW50X2Nhc2VfYWRkcmVzcyAtPiBjYXNlX2FkZHJlc3NcbiAgdmFsIHBvaW50ZXJfdG9fbmV4dCA6IGV2ZW50X2Nhc2VfYWRkcmVzcyAtPiBjYXNlX2FkZHJlc3NcbiAgdmFsIHBvaW50ZXIgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV92YWx1ZVxuICB2YWwgdmFsdWVfYWZ0ZXIgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV9hZGRyZXNzXG5cbiAgdmFsIGNhc2VfbGlzdF9vZl9laWQgOlxuICAgIChibGFja2JvYXJkLCBQQi5zdGVwX2lkLCBldmVudF9jYXNlX2FkZHJlc3MgbGlzdCkgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBzdGF0ZSA6IFBCLnByZWRpY2F0ZV92YWx1ZSAtPiBjYXNlX3ZhbHVlXG4gIHZhbCBpc19leGlzdF9ldmVudCA6IFBCLnN0ZXBfaWQgLT4gY2FzZV9hZGRyZXNzXG4gIHZhbCBuX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIDogUHJpb3JpdHkubGV2ZWwgLT4gY2FzZV9hZGRyZXNzXG4gIHZhbCBuX3VucmVzb2x2ZWRfZXZlbnRzIDogY2FzZV9hZGRyZXNzXG5cbiAgdmFsIG5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIDpcbiAgICBldmVudF9jYXNlX2FkZHJlc3MgLT4gUHJpb3JpdHkubGV2ZWwgLT4gY2FzZV9hZGRyZXNzXG5cbiAgdmFsIG5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIDogZXZlbnRfY2FzZV9hZGRyZXNzIC0+IGNhc2VfYWRkcmVzc1xuXG4gIHZhbCBmb3JjZWRfZXZlbnRzIDpcbiAgICBibGFja2JvYXJkIC0+IChQQi5zdGVwX2lkIGxpc3QgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IG9wdGlvbikgbGlzdFxuXG4gIHZhbCBzaWRlX2VmZmVjdF9vZl9ldmVudCA6IGJsYWNrYm9hcmQgLT4gUEIuc3RlcF9pZCAtPiBQQi5DSS5Qby5LLnNpZGVfZWZmZWN0XG5cbiAgdmFsIGN1dCA6XG4gICAgKCBibGFja2JvYXJkLFxuICAgICAgUEIuc3RlcF9pZCBsaXN0LFxuICAgICAgYmxhY2tib2FyZCAqIFBCLnN0ZXBfaWQgbGlzdCApXG4gICAgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCB0aWNrIDpcbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgYm9vbCAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm9cbiAgKCogdG8gZG86IG1vdmUgdG8gdGhlIG1vZHVsZSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzKilcblxuICB2YWwgbGV2ZWxfb2ZfZXZlbnQgOlxuICAgIChibGFja2JvYXJkLCBQQi5zdGVwX2lkLCBQcmlvcml0eS5sZXZlbCkgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuZW5kXG5cbm1vZHVsZSBCbGFja2JvYXJkIDogQmxhY2tib2FyZCA9IHN0cnVjdFxuICBtb2R1bGUgUEIgPSBCbGFja2JvYXJkX2dlbmVyYXRpb24uUHJlYmxhY2tib2FyZFxuICAoKiogYmxhY2tib2FyZCBtYXRyaXgqKVxuXG4gIHR5cGUgYXNzaWduX3Jlc3VsdCA9IEZhaWwgfCBTdWNjZXNzIHwgSWdub3JlXG4gIHR5cGUgcG9pbnRlciA9IFBCLnN0ZXBfc2hvcnRfaWRcblxuICBsZXQgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgcG9zID8obWVzc2FnZSA9IFwiXCIpIGV4biBkZWZhdWx0ID1cbiAgICBsZXQgZXJyb3IsIGEgPVxuICAgICAgRXhjZXB0aW9uLndhcm5cbiAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgcG9zIH5tZXNzYWdlIGV4biBkZWZhdWx0XG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGFcblxuICBsZXQgc3VjY2VzcyA9IFN1Y2Nlc3NcbiAgbGV0IGlnbm9yZSA9IElnbm9yZVxuICBsZXQgZmFpbCA9IEZhaWxcblxuICBsZXQgaXNfaWdub3JlZCB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IElnbm9yZSAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGlzX2ZhaWxlZCB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEZhaWwgLT4gdHJ1ZVxuICAgIHwgU3VjY2VzcyB8IElnbm9yZSAtPiBmYWxzZVxuXG4gIGxldCBpc19zdWNjZWVkZWQgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBTdWNjZXNzIC0+IHRydWVcbiAgICB8IEZhaWwgfCBJZ25vcmUgLT4gZmFsc2VcblxuICBsZXQgbnVsbF9wb2ludGVyID0gUEIuZHVtbXlfc3RlcF9zaG9ydF9pZFxuICBsZXQgaXNfbnVsbF9wb2ludGVyIHggPSB4ID0gbnVsbF9wb2ludGVyXG4gIGxldCBwb2ludGVyX2JlZm9yZV9ibGFja2JvYXJkID0gUEIuemVyb19zdGVwX3Nob3J0X2lkXG4gIGxldCBpc19udWxsX3BvaW50ZXJfc3RlcF9pZCB4ID0geCA9IFBCLmR1bW15X3N0ZXBfaWRcbiAgbGV0IGlzX2JlZm9yZV9ibGFja2JvYXJkIHggPSB4ID0gcG9pbnRlcl9iZWZvcmVfYmxhY2tib2FyZFxuICBsZXQgYnVpbGRfcG9pbnRlciBpID0gaVxuXG4gIHR5cGUgZXZlbnRfY2FzZV9hZGRyZXNzID0ge1xuICAgIGNvbHVtbl9wcmVkaWNhdGVfaWQ6IFBCLnByZWRpY2F0ZV9pZDtcbiAgICByb3dfc2hvcnRfZXZlbnRfaWQ6IHBvaW50ZXI7XG4gIH1cblxuICBsZXQgcHJlZGljYXRlX2lkX29mX2Nhc2VfYWRkcmVzcyB4ID0geC5jb2x1bW5fcHJlZGljYXRlX2lkXG5cbiAgbGV0IGlzX2JvdW5kYXJ5IF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgX2JsYWNrYm9hcmQgZXZlbnRfYWRkcmVzcyA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBpc19iZWZvcmVfYmxhY2tib2FyZCBldmVudF9hZGRyZXNzLnJvd19zaG9ydF9ldmVudF9pZFxuXG4gIGxldCBidWlsZF9ldmVudF9jYXNlX2FkZHJlc3MgcGlkIHNlaWQgPVxuICAgIHsgY29sdW1uX3ByZWRpY2F0ZV9pZCA9IHBpZDsgcm93X3Nob3J0X2V2ZW50X2lkID0gc2VpZCB9XG5cbiAgdHlwZSBjYXNlX2FkZHJlc3MgPVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgb2YgaW50ICogUHJpb3JpdHkubGV2ZWxcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIG9mIGludFxuICAgIHwgUG9pbnRlcl90b19uZXh0IG9mIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgVmFsdWVfYWZ0ZXIgb2YgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgfCBWYWx1ZV9iZWZvcmUgb2YgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgfCBQb2ludGVyX3RvX3ByZXZpb3VzIG9mIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c1xuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCBvZiBQcmlvcml0eS5sZXZlbFxuICAgIHwgRXhpc3Qgb2YgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgfCBLZWVwX2V2ZW50IG9mIFBCLnN0ZXBfaWRcblxuICBsZXQgaXNfZXhpc3RfZXZlbnQgaSA9IEtlZXBfZXZlbnQgaVxuXG4gIGxldCBuX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBpID1cbiAgICBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBpLmNvbHVtbl9wcmVkaWNhdGVfaWRcblxuICBsZXQgbl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgaSBqID1cbiAgICBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCAoaS5jb2x1bW5fcHJlZGljYXRlX2lkLCBqKVxuXG4gIGxldCBwb2ludGVyX3RvX25leHQgZSA9IFBvaW50ZXJfdG9fbmV4dCBlXG4gIGxldCB2YWx1ZV9hZnRlciBlID0gVmFsdWVfYWZ0ZXIgZVxuICBsZXQgdmFsdWVfYmVmb3JlIGUgPSBWYWx1ZV9iZWZvcmUgZVxuICBsZXQgcG9pbnRlcl90b19wcmV2aW91cyBlID0gUG9pbnRlcl90b19wcmV2aW91cyBlXG4gIGxldCBuX3VucmVzb2x2ZWRfZXZlbnRzID0gTl91bnJlc29sdmVkX2V2ZW50c1xuICBsZXQgbl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCBpID0gTl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCBpXG4gIGxldCBleGlzdCBlID0gRXhpc3QgZVxuXG4gIHR5cGUgY2FzZV92YWx1ZSA9XG4gICAgfCBTdGF0ZSBvZiBQQi5wcmVkaWNhdGVfdmFsdWVcbiAgICB8IENvdW50ZXIgb2YgaW50XG4gICAgfCBQb2ludGVyIG9mIHBvaW50ZXJcbiAgICB8IEJvb2xlYW4gb2YgYm9vbCBvcHRpb25cblxuICBsZXQgcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBTdGF0ZSB4IC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBcIlN0YXRlISBcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIFBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICB4XG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgIGluXG4gICAgICAoKVxuICAgIHwgQ291bnRlciBpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgXCJDb3VudGVyICVpXCIgaVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgKClcbiAgICB8IFBvaW50ZXIgaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIFwiUG9pbnRlciAlaVwiXG4gICAgICAgICAgKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIGkpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgIGluXG4gICAgICAoKVxuICAgIHwgQm9vbGVhbiBiIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgXCJCb29sZWFuICVzXCJcbiAgICAgICAgICAobWF0Y2ggYiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFwiP1wiXG4gICAgICAgICAgfCBTb21lIHRydWUgLT4gXCJ0cnVlXCJcbiAgICAgICAgICB8IF8gLT4gXCJmYWxzZVwiKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgKClcblxuICBsZXQgc3RyaW5nX29mX3BvaW50ZXIgc2VpZCA9XG4gICAgXCJldmVudCBzZWlkIFwiIF4gc3RyaW5nX29mX2ludCAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgc2VpZClcblxuICBsZXQgcHJpbnRfcG9pbnRlciBsb2cgc2VpZCA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIlc1wiIChzdHJpbmdfb2ZfcG9pbnRlciBzZWlkKVxuICBsZXQgc3RhdGUgcHJlZGljYXRlX3ZhbHVlID0gU3RhdGUgcHJlZGljYXRlX3ZhbHVlXG4gIGxldCBwb2ludGVyIHAgPSBQb2ludGVyIHAucm93X3Nob3J0X2V2ZW50X2lkXG4gIGxldCBib29sZWFuIGIgPSBCb29sZWFuIGJcblxuICBsZXQgY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBldmVudF9hZGRyZXNzID1cbiAgICBWYWx1ZV9hZnRlciBldmVudF9hZGRyZXNzXG5cbiAgbGV0IHByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX3ZhbHVlXG4gICAgICA9XG4gICAgbWF0Y2ggY2FzZV92YWx1ZSB3aXRoXG4gICAgfCBTdGF0ZSB4IC0+IGVycm9yLCBsb2dfaW5mbywgeFxuICAgIHwgQ291bnRlciBfIHwgUG9pbnRlciBfIHwgQm9vbGVhbiBfIC0+XG4gICAgICBsZXQgXyA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGNhc2VfdmFsdWUgaW5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJ3cm9uZyBraW5kIG9mIGNhc2VfdmFsdWUgaW4gcHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWVcIlxuICAgICAgICAoRmFpbHVyZSBcInByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlXCIpIFBCLnVua25vd25cblxuICB0eXBlIGFzc2lnbm1lbnQgPSBjYXNlX2FkZHJlc3MgKiBjYXNlX3ZhbHVlXG5cbiAgbGV0IGJvb2xfc3RyaWN0bHlfbW9yZV9yZWZpbmVkIHggeSA9XG4gICAgbWF0Y2ggeCwgeSB3aXRoXG4gICAgfCBTb21lIF8sIE5vbmUgLT4gdHJ1ZVxuICAgIHwgXywgXyAtPiBmYWxzZVxuXG4gIGxldCBnIHAgcDIgcG9zIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciB4IHkgPVxuICAgIG1hdGNoIHgsIHkgd2l0aFxuICAgIHwgU3RhdGUgeCwgU3RhdGUgeSAtPiBlcnJvciwgbG9nX2luZm8sIHAgeCB5XG4gICAgfCBCb29sZWFuIHgsIEJvb2xlYW4geSAtPiBlcnJvciwgbG9nX2luZm8sIHAyIHggeVxuICAgIHwgU3RhdGUgXywgXyB8IEJvb2xlYW4gXywgXyB8IENvdW50ZXIgXywgXyB8IFBvaW50ZXIgXywgXyAtPlxuICAgICAgbGV0IGZpbGUsIGxpbmUsIF8sIF8gPSBwb3MgaW5cbiAgICAgIGxldCBzdHJpbmcgPSBmaWxlIF4gXCIsIGxpbmU6IFwiIF4gc3RyaW5nX29mX2ludCBsaW5lIGluXG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBwb3NcbiAgICAgICAgfm1lc3NhZ2U6XCJDb3VudGVycyBhbmQvb3IgUG9pbnRlcnMgc2hvdWxkIG5vdCBiZSBjb21wYXJlZFwiXG4gICAgICAgIChGYWlsdXJlIChzdHJpbmcgXiBcIiBDb21wYXJpc29uIGJldHdlZW4gcG9pbnRlcnMgYW5kIGNvdW50ZXJzXCIpKVxuICAgICAgICBmYWxzZVxuXG4gIGxldCBzdHJpY3RseV9tb3JlX3JlZmluZWQgPVxuICAgIGcgUEIuc3RyaWN0bHlfbW9yZV9yZWZpbmVkIGJvb2xfc3RyaWN0bHlfbW9yZV9yZWZpbmVkIF9fUE9TX19cblxuICB0eXBlIGNhc2VfaW5mb19zdGF0aWMgPSB7XG4gICAgcm93X3Nob3J0X2lkOiBQQi5zdGVwX3Nob3J0X2lkO1xuICAgIGV2ZW50X2lkOiBQQi5zdGVwX2lkO1xuICAgIHRlc3Q6IFBCLnByZWRpY2F0ZV92YWx1ZTtcbiAgICBhY3Rpb246IFBCLnByZWRpY2F0ZV92YWx1ZTtcbiAgfVxuXG4gIHR5cGUgY2FzZV9pbmZvX2R5bmFtaWMgPSB7XG4gICAgcG9pbnRlcl9wcmV2aW91czogcG9pbnRlcjtcbiAgICBwb2ludGVyX25leHQ6IHBvaW50ZXI7XG4gICAgc3RhdGVfYWZ0ZXI6IFBCLnByZWRpY2F0ZV92YWx1ZTtcbiAgICBzZWxlY3RlZDogYm9vbCBvcHRpb247XG4gIH1cblxuICB0eXBlIGNhc2VfaW5mbyA9IHsgc3RhdGljOiBjYXNlX2luZm9fc3RhdGljOyBkeW5hbWljOiBjYXNlX2luZm9fZHluYW1pYyB9XG5cbiAgbGV0IGR1bW15X2Nhc2VfaW5mb19zdGF0aWMgPVxuICAgIHtcbiAgICAgIHJvd19zaG9ydF9pZCA9IFBCLmR1bW15X3N0ZXBfc2hvcnRfaWQ7XG4gICAgICBldmVudF9pZCA9IFBCLmR1bW15X3N0ZXBfaWQ7XG4gICAgICB0ZXN0ID0gUEIudW5rbm93bjtcbiAgICAgIGFjdGlvbiA9IFBCLnVua25vd247XG4gICAgfVxuXG4gIGxldCBkdW1teV9jYXNlX2luZm9fZHluYW1pYyA9XG4gICAge1xuICAgICAgcG9pbnRlcl9wcmV2aW91cyA9IG51bGxfcG9pbnRlcjtcbiAgICAgIHBvaW50ZXJfbmV4dCA9IG51bGxfcG9pbnRlcjtcbiAgICAgIHN0YXRlX2FmdGVyID0gUEIudW5rbm93bjtcbiAgICAgIHNlbGVjdGVkID0gTm9uZTtcbiAgICB9XG5cbiAgbGV0IGNvcnJlY3RfcG9pbnRlciBzZWlkIHNpemUgPVxuICAgIGxldCBpbnRfc2VpZCA9IFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHNlaWQgaW5cbiAgICBpZiBpbnRfc2VpZCA8IDAgdGhlblxuICAgICAgcG9pbnRlcl9iZWZvcmVfYmxhY2tib2FyZFxuICAgIGVsc2UgaWYgaW50X3NlaWQgPj0gc2l6ZSB0aGVuXG4gICAgICBQQi5zdGVwX3Nob3J0X2lkX29mX2ludCBzaXplXG4gICAgZWxzZVxuICAgICAgc2VpZFxuXG4gIGxldCBpbml0X2luZm9fZHluYW1pYyBzZWlkIHNpemUgPVxuICAgIHtcbiAgICAgIHBvaW50ZXJfcHJldmlvdXMgPSBjb3JyZWN0X3BvaW50ZXIgKFBCLmRlY19zdGVwX3Nob3J0X2lkIHNlaWQpIHNpemU7XG4gICAgICBwb2ludGVyX25leHQgPSBjb3JyZWN0X3BvaW50ZXIgKFBCLmluY19zdGVwX3Nob3J0X2lkIHNlaWQpIHNpemU7XG4gICAgICBzdGF0ZV9hZnRlciA9IFBCLnVua25vd247XG4gICAgICBzZWxlY3RlZCA9IE5vbmU7XG4gICAgfVxuXG4gIGxldCBpbml0X2luZm9fc3RhdGljIF9wX2lkIHNlaWQgKGVpZCwgXywgdGVzdCwgYWN0aW9uKSA9XG4gICAgeyByb3dfc2hvcnRfaWQgPSBzZWlkOyBldmVudF9pZCA9IGVpZDsgdGVzdDsgYWN0aW9uIH1cblxuICBsZXQgZ2V0X2VpZF9vZl90cmlwbGUgKHgsIF8sIF8sIF8pID0geFxuXG4gIGxldCBkdW1teV9jYXNlX2luZm8gPVxuICAgIHsgc3RhdGljID0gZHVtbXlfY2FzZV9pbmZvX3N0YXRpYzsgZHluYW1pYyA9IGR1bW15X2Nhc2VfaW5mb19keW5hbWljIH1cblxuICBsZXQgaW5pdF9pbmZvIHBfaWQgc2VpZCBzaXplIHRyaXBsZSA9XG4gICAge1xuICAgICAgc3RhdGljID0gaW5pdF9pbmZvX3N0YXRpYyBwX2lkIHNlaWQgdHJpcGxlO1xuICAgICAgZHluYW1pYyA9IGluaXRfaW5mb19keW5hbWljIHNlaWQgc2l6ZTtcbiAgICB9XG5cbiAgdHlwZSBzdGFjayA9IGFzc2lnbm1lbnQgbGlzdFxuICAoKiogYmxhY2tib2FyZCAqKVxuXG4gIHR5cGUgYmxhY2tib2FyZCA9IHtcbiAgICBldmVudDogVHJhY2Uuc3RlcCBQQi5BLnQ7XG4gICAgcHJlX2NvbHVtbl9tYXBfaW52OiBQQi5wcmVkaWNhdGVfaW5mbyBQQi5BLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggd2lyZSBpZCB0byBpdHMgd2lyZSBsYWJlbCAqKVxuICAgIGZvcmNlZF9ldmVudHM6IChQQi5zdGVwX2lkIGxpc3QgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IG9wdGlvbikgbGlzdDtcbiAgICBuX3ByZWRpY2F0ZV9pZDogaW50O1xuICAgIG5fZWlkOiBpbnQ7XG4gICAgbl9zZWlkOiBpbnQgUEIuQS50O1xuICAgIGN1cnJlbnRfc3RhY2s6IHN0YWNrO1xuICAgIHN0YWNrOiBzdGFjayBsaXN0O1xuICAgIGJsYWNrYm9hcmQ6IGNhc2VfaW5mbyBQQi5BLnQgUEIuQS50O1xuICAgIHNlbGVjdGVkX2V2ZW50czogYm9vbCBvcHRpb24gUEIuQS50O1xuICAgIHdlaWd0aF9vZl9wcmVkaWNhdGVfaWQ6IGludCBQQi5BLnQ7XG4gICAgd2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbDogaW50IFBCLkEudCBQcmlvcml0eS5MZXZlbE1hcC50O1xuICAgIHVzZWRfcHJlZGljYXRlX2lkOiBib29sIFBCLkEudDtcbiAgICBuX3VucmVzb2x2ZWRfZXZlbnRzOiBpbnQ7XG4gICAgbl91bnJlc29sdmVkX2V2ZW50c19ieV9sZXZlbDogaW50IFByaW9yaXR5LkxldmVsTWFwLnQ7XG4gICAgbGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlX2lkOiBQQi5zdGVwX3Nob3J0X2lkIFBCLkEudDtcbiAgICBldmVudF9jYXNlX2xpc3Q6IGV2ZW50X2Nhc2VfYWRkcmVzcyBsaXN0IFBCLkEudDtcbiAgICBzaWRlX2VmZmVjdF9vZl9ldmVudDogUEIuQ0kuUG8uSy5zaWRlX2VmZmVjdCBQQi5BLnQ7XG4gICAgZmljdGl0aW91c19vYnNlcnZhYmxlOiBQQi5zdGVwX2lkIG9wdGlvbjtcbiAgICBsZXZlbF9vZl9ldmVudDogUHJpb3JpdHkubGV2ZWwgUEIuQS50O1xuICB9XG5cbiAgbGV0IHRpY2sgcHJvZmlsaW5nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnRpY2sgcHJvZmlsaW5nX2luZm9cblxuICBsZXQgbGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZWlkID1cbiAgICB0cnlcbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBQQi5BLmdldCBibGFja2JvYXJkLmxldmVsX29mX2V2ZW50IChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpIClcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcIlVua25vd24gZXZlbnQgaWRcIlxuICAgICAgICAoRmFpbHVyZSBcIlVua25vd24gZXZlbnQgaWRcIikgUHJpb3JpdHkuaGlnaGVzdFxuXG4gIGxldCBnZXRfZXZlbnQgYmxhY2tib2FyZCBrID0gUEIuQS5nZXQgYmxhY2tib2FyZC5ldmVudCAoUEIuaW50X29mX3N0ZXBfaWQgaylcbiAgbGV0IGdldF9uX2VpZCBibGFja2JvYXJkID0gYmxhY2tib2FyZC5uX2VpZFxuICBsZXQgZ2V0X3N0YWNrX2RlcHRoIGJsYWNrYm9hcmQgPSBMaXN0Lmxlbmd0aCBibGFja2JvYXJkLnN0YWNrXG4gIGxldCBmb3JjZWRfZXZlbnRzIGJsYWNrYm9hcmQgPSBibGFja2JvYXJkLmZvcmNlZF9ldmVudHNcblxuICBsZXQgc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgYmxhY2tib2FyZCBpID1cbiAgICBQQi5BLmdldCBibGFja2JvYXJkLnNpZGVfZWZmZWN0X29mX2V2ZW50IChQQi5pbnRfb2Zfc3RlcF9pZCBpKVxuXG4gIGxldCBjYXNlX2xpc3Rfb2ZfZWlkIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVpZCA9XG4gICAgdHJ5XG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgUEIuQS5nZXQgYmxhY2tib2FyZC5ldmVudF9jYXNlX2xpc3QgKFBCLmludF9vZl9zdGVwX2lkIGVpZCkgKVxuICAgIHdpdGggXyAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcIkRlcmVmZXJlbmNpbmcgTnVsbCBwb2ludGVyXCJcbiAgICAgICAgKEZhaWx1cmUgXCJEZXJlZmVyZW5jaW5nIG51bGwgcG9pbnRlclwiKSBbXVxuXG4gIGxldCBnZXRfY2FzZSBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmQgPVxuICAgIHRyeVxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIFBCLkEuZ2V0XG4gICAgICAgICAgKFBCLkEuZ2V0IGJsYWNrYm9hcmQuYmxhY2tib2FyZCBjYXNlX2FkZHJlc3MuY29sdW1uX3ByZWRpY2F0ZV9pZClcbiAgICAgICAgICAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgY2FzZV9hZGRyZXNzLnJvd19zaG9ydF9ldmVudF9pZCkgKVxuICAgIHdpdGggXyAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcIkRlcmVmZXJlbmNpbmcgTnVsbCBwb2ludGVyXCJcbiAgICAgICAgKEZhaWx1cmUgXCJEZXJlZmVyZW5jaW5nIG51bGwgcG9pbnRlclwiKSBkdW1teV9jYXNlX2luZm9cblxuICBsZXQgZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3MgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2UgPVxuICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYWRkcmVzcyBibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgc3RhdGljID0gY2FzZS5zdGF0aWMgaW5cbiAgICAoIGVycm9yLFxuICAgICAgbG9nX2luZm8sXG4gICAgICAoc3RhdGljLnJvd19zaG9ydF9pZCwgc3RhdGljLmV2ZW50X2lkLCBzdGF0aWMudGVzdCwgc3RhdGljLmFjdGlvbikgKVxuXG4gIGxldCBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF8sIGVpZCwgXywgXykgPVxuICAgICAgZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgXCJFdmVudDogJWksIFByZWRpY2F0ZTogJWlALlwiIChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpXG4gICAgICAgIChwcmVkaWNhdGVfaWRfb2ZfY2FzZV9hZGRyZXNzIGNhc2UpXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sICgpXG5cbiAgbGV0IHByaW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgKGksIGopIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIFwibl91bnJlc29sdmVkX2V2ZW50c19pbl9wcmVkICVpICVzQC5cIiBpXG4gICAgICAgICAgKFByaW9yaXR5LnN0cmluZ19vZl9sZXZlbCBqKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIGkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgXCJuX3VucmVzb2x2ZWRfZXZlbnRzX2luX3ByZWQgJWkgQC5cIiBpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIHwgUG9pbnRlcl90b19uZXh0IGUgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIlBvaW50ZXJcIiBpblxuICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZVxuICAgIHwgVmFsdWVfYWZ0ZXIgZSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpIFwiVmFsdWVfYWZ0ZXIgIFwiXG4gICAgICBpblxuICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZVxuICAgIHwgVmFsdWVfYmVmb3JlIGUgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIlZhbHVlX2JlZm9yZSBcIlxuICAgICAgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVcbiAgICB8IFBvaW50ZXJfdG9fcHJldmlvdXMgZSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpIFwiUG9pbnRlcl9iZWZvcmUgXCJcbiAgICAgIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBlXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIGkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBcIlVucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsICVzXCJcbiAgICAgICAgICAoUHJpb3JpdHkuc3RyaW5nX29mX2xldmVsIGkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50cyAtPlxuICAgICAgbGV0IF8gPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcikgXCJVbnJlc29sdmVkX2V2ZW50c1wiXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIHwgRXhpc3QgZSAtPlxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpIFwiRXhpc3QgXCIgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVcbiAgICB8IEtlZXBfZXZlbnQgaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICBcIktlZXAgJWlcIiAoUEIuaW50X29mX3N0ZXBfaWQgaSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG5cbiAgbGV0IGdldF9ucHJlZGljYXRlX2lkIGJsYWNrYm9hcmQgPSBibGFja2JvYXJkLm5fcHJlZGljYXRlX2lkXG5cbiAgbGV0IGdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZF9ieV9sZXZlbCBibGFja2JvYXJkIHBpZCBsZXZlbCA9XG4gICAgbWF0Y2hcbiAgICAgIFByaW9yaXR5LkxldmVsTWFwLmZpbmRfb3B0aW9uIGxldmVsXG4gICAgICAgIGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbFxuICAgIHdpdGhcbiAgICB8IFNvbWUgeCAtPiBQQi5BLmdldCB4IHBpZFxuICAgIHwgTm9uZSAtPiAwXG5cbiAgbGV0IGdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZCBibGFja2JvYXJkIHBpZCA9XG4gICAgUEIuQS5nZXQgYmxhY2tib2FyZC53ZWlndGhfb2ZfcHJlZGljYXRlX2lkIHBpZFxuXG4gIGxldCBnZXRfbl91bnJlc29sdmVkX2V2ZW50cyBibGFja2JvYXJkID0gYmxhY2tib2FyZC5uX3VucmVzb2x2ZWRfZXZlbnRzXG4gIGxldCBnZXRfcG9pbnRlcl9uZXh0IGNhc2UgPSBjYXNlLmR5bmFtaWMucG9pbnRlcl9uZXh0XG5cbiAgbGV0IGZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGFkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgeyBhZGRyZXNzIHdpdGggcm93X3Nob3J0X2V2ZW50X2lkID0gY2FzZS5keW5hbWljLnBvaW50ZXJfbmV4dCB9IClcblxuICBsZXQgZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGFkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgeyBhZGRyZXNzIHdpdGggcm93X3Nob3J0X2V2ZW50X2lkID0gY2FzZS5keW5hbWljLnBvaW50ZXJfcHJldmlvdXMgfSApXG5cbiAgbGV0IGdldF9maXJzdF9saW5rZWRfZXZlbnQgYmxhY2tib2FyZCBwaWQgPVxuICAgIGlmIHBpZCA8IDAgfHwgcGlkID49IGJsYWNrYm9hcmQubl9wcmVkaWNhdGVfaWQgdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIFNvbWUgUEIuemVyb19zdGVwX3Nob3J0X2lkXG5cbiAgbGV0IGdldF9sYXN0X2xpbmtlZF9ldmVudCBibGFja2JvYXJkIHBpZCA9XG4gICAgaWYgcGlkIDwgMCB8fCBwaWQgPj0gYmxhY2tib2FyZC5uX3ByZWRpY2F0ZV9pZCB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgU29tZSAoUEIuQS5nZXQgYmxhY2tib2FyZC5sYXN0X2xpbmtlZF9ldmVudF9vZl9wcmVkaWNhdGVfaWQgcGlkKVxuXG4gICgqKnByZXR0eSBwcmludGluZyopXG4gIGxldCBwcmludF9rbm93bl9jYXNlIGxvZyBwcmVmIGluZiBzdWYgY2FzZSA9XG4gICAgbGV0IF8gPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXN0ZXN0OlwiIHByZWYgaW5cbiAgICBsZXQgXyA9IFBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgY2FzZS5zdGF0aWMudGVzdCBpblxuICAgIGxldCBfID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCIvZWlkOiVpL2FjdGlvbjpcIlxuICAgICAgICAoUEIuaW50X29mX3N0ZXBfaWQgY2FzZS5zdGF0aWMuZXZlbnRfaWQpXG4gICAgaW5cbiAgICBsZXQgXyA9IFBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgY2FzZS5zdGF0aWMuYWN0aW9uIGluXG4gICAgbGV0IF8gPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXNcIiBpbmYgaW5cbiAgICBsZXQgXyA9IFBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgY2FzZS5keW5hbWljLnN0YXRlX2FmdGVyIGluXG4gICAgbGV0IF8gPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXNcIiBzdWYgaW5cbiAgICAoKVxuXG4gIGxldCBwcmludF9jYXNlIGxvZyBjYXNlID1cbiAgICBsZXQgc3RhdHVzID0gY2FzZS5keW5hbWljLnNlbGVjdGVkIGluXG4gICAgbWF0Y2ggc3RhdHVzIHdpdGhcbiAgICB8IFNvbWUgZmFsc2UgLT4gKClcbiAgICB8IFNvbWUgdHJ1ZSAtPiBwcmludF9rbm93bl9jYXNlIGxvZyBcIlwiIFwiIFwiIFwiIFwiIGNhc2VcbiAgICB8IE5vbmUgLT4gcHJpbnRfa25vd25fY2FzZSBsb2cgXCI/KFwiIFwiKSBcIiBcIiBcIiBjYXNlXG5cbiAgbGV0IHByaW50X2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzID1cbiAgICBsZXQgbG9nID0gUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgaW5cbiAgICBtYXRjaCBhZGRyZXNzIHdpdGhcbiAgICB8IEtlZXBfZXZlbnQgaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIklzIHRoZSBldmVudCAlaSBzZWxlY3RlZCA/IFwiIChQQi5pbnRfb2Zfc3RlcF9pZCBpKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IEV4aXN0IGkgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJJcyB0aGUgY2FzZSBcIiBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcInNlbGVjdGVkID8gXCIgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIChpLCBqKSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ1xuICAgICAgICAgIFwiTnVtYmVyIG9mIHVucmVzb2x2ZWQgZXZlbnRzIGZvciB0aGUgcHJlZGljYXRlICVpIGF0IGxldmVsICVzXCIgaVxuICAgICAgICAgIChQcmlvcml0eS5zdHJpbmdfb2ZfbGV2ZWwgailcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTnVtYmVyIG9mIHVucmVzb2x2ZWQgZXZlbnRzIGZvciB0aGUgcHJlZGljYXRlICVpXCIgaVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IFBvaW50ZXJfdG9fbmV4dCBpIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiUHJvY2hhaW4gw6l2w6luZW1lbnQgYWdpc3NhbnQgc3VyIFwiIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpXG4gICAgfCBWYWx1ZV9hZnRlciBpIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiVmFsZXVyIGFwcsOocyBcIiBpblxuICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgaVxuICAgIHwgVmFsdWVfYmVmb3JlIGkgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJWYWxldXIgYXZhbnQgXCIgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGlcbiAgICB8IFBvaW50ZXJfdG9fcHJldmlvdXMgaSAtPlxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkV2ZW5lbWVudCBwcsOpY8Opc2VudCBhZ2lzc2FudCBzdXIgXCIgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGlcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHMgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJOb21icmUgZCfDqXbDqW5lbWVudHMgbm9uIHLDqXNvbHVcIiBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCBpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTm9tYnJlIGQnw6l2w6luZW1lbnRzIG5vbiByw6lzb2x1IGF0IGxldmVsICVzXCJcbiAgICAgICAgICAoUHJpb3JpdHkuc3RyaW5nX29mX2xldmVsIGkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gIGxldCBzdHJpbmdfb2ZfdmFsdWUgdmFsdWUgPVxuICAgIG1hdGNoIHZhbHVlIHdpdGhcbiAgICB8IFN0YXRlIHBiIC0+IFBCLnN0cmluZ19vZl9wcmVkaWNhdGVfdmFsdWUgcGJcbiAgICB8IENvdW50ZXIgaSAtPiBcIkNvdW50ZXIgXCIgXiBzdHJpbmdfb2ZfaW50IGlcbiAgICB8IFBvaW50ZXIgaSAtPiBzdHJpbmdfb2ZfcG9pbnRlciBpXG4gICAgfCBCb29sZWFuIGJvb2wgLT5cbiAgICAgIChtYXRjaCBib29sIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBcIj9cIlxuICAgICAgfCBTb21lIHRydWUgLT4gXCJZZXNcIlxuICAgICAgfCBTb21lIGZhbHNlIC0+IFwiTm9cIilcblxuICBsZXQgcHJpbnRfdmFsdWUgbG9nIHZhbHVlID1cbiAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgfCBTdGF0ZSBwYiAtPiBQQi5wcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIHBiXG4gICAgfCBDb3VudGVyIGkgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkNvdW50ZXIgJWlcIiBpXG4gICAgfCBQb2ludGVyIGkgLT4gcHJpbnRfcG9pbnRlciBsb2cgaVxuICAgIHwgQm9vbGVhbiBib29sIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXNcIlxuICAgICAgICAobWF0Y2ggYm9vbCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIj9cIlxuICAgICAgICB8IFNvbWUgdHJ1ZSAtPiBcIlllc1wiXG4gICAgICAgIHwgU29tZSBmYWxzZSAtPiBcIk5vXCIpXG5cbiAgbGV0IHByaW50X2Fzc2lnbm1lbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgKGFkZHJlc3MsIHZhbHVlKSA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgcHJpbnRfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3NcbiAgICBpblxuICAgIGxldCBfID0gcHJpbnRfdmFsdWUgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSB2YWx1ZSBpblxuICAgIGVycm9yLCBsb2dfaW5mb1xuXG4gIGxldCBwcmludF9ibGFja2JvYXJkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCBsb2cgPSBQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlciBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqKkJMQUNLQk9BUkQqKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiJWkgd2lyZXMsICVpIGV2ZW50c1wiIGJsYWNrYm9hcmQubl9wcmVkaWNhdGVfaWRcbiAgICAgICAgYmxhY2tib2FyZC5uX2VpZFxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqd2lyZXM6KlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCBlcnIgPSByZWYgZXJyb3IgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgUEIuQS5pdGVyaVxuICAgICAgICAoZnVuIGkgYXJyYXkgLT5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJWlcIiBpIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBpZiBQQi5BLmdldCBibGFja2JvYXJkLnVzZWRfcHJlZGljYXRlX2lkIGkgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqd2lyZXMgJWk6IFwiIGkgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICBsZXQgcmVjIGF1eCBqIGVycm9yID1cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKiAlaTpcIiBqIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICAgIGxldCBjYXNlID0gUEIuQS5nZXQgYXJyYXkgaiBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2UgbG9nIGNhc2UgaW5cbiAgICAgICAgICAgICAgICBsZXQgaicgPSBnZXRfcG9pbnRlcl9uZXh0IGNhc2UgaW5cbiAgICAgICAgICAgICAgICBsZXQgaicgPSBQQi5pbnRfb2Zfc3RlcF9zaG9ydF9pZCBqJyBpblxuICAgICAgICAgICAgICAgIGlmIGogPSBqJyB0aGVuXG4gICAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGF1eCBqJyBlcnJvclxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICAgIGF1eCAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgcG9pbnRlcl9iZWZvcmVfYmxhY2tib2FyZCkgIWVyclxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgXyA9IGVyciA6PSBlcnJvciBpblxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nKVxuICAgICAgICBibGFja2JvYXJkLmJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBlcnJvciA9ICFlcnIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKnN0YWNrcypcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbykgLT5cbiAgICAgICAgICBwcmludF9hc3NpZ25tZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQpXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8pXG4gICAgICAgIChMaXN0LnJldiBibGFja2JvYXJkLmN1cnJlbnRfc3RhY2spXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0IF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvKSBzdGFjayAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvKSAtPlxuICAgICAgICAgICAgICAgIHByaW50X2Fzc2lnbm1lbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbykgc3RhY2tcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8pXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8pIGJsYWNrYm9hcmQuc3RhY2tcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqc2VsZWN0ZWRfZXZlbnRzKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBQQi5BLml0ZXJpXG4gICAgICAgIChmdW4gaSBib29sIC0+XG4gICAgICAgICAgbWF0Y2ggYm9vbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIGIgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCIgIEV2ZW50OiVpICglcylcIiBpXG4gICAgICAgICAgICAgICAgKGlmIGIgdGhlblxuICAgICAgICAgICAgICAgICAgIFwiS0VQVFwiXG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICBcIlJFTU9WRURcIilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nKVxuICAgICAgICBibGFja2JvYXJkLnNlbGVjdGVkX2V2ZW50c1xuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIip1bnNvbHZlZF9ldmVudHMqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiAlaVwiIGJsYWNrYm9hcmQubl91bnJlc29sdmVkX2V2ZW50cyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKndlaWdodCBvZiBwcmVkaWNhdGVfaWQqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID1cbiAgICAgIFBCLkEuaXRlcmlcbiAgICAgICAgKGZ1biBhIGIgLT5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiICVpOiVpXCIgYSBiIGluXG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZylcbiAgICAgICAgYmxhY2tib2FyZC53ZWlndGhfb2ZfcHJlZGljYXRlX2lkXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKndlaWdodCBvZiBwcmVkaWNhdGVfaWRfYnlfbGV2ZWwqXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuaXRlclxuICAgICAgICAoZnVuIGwgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiBMZXZlbDolc1wiIChQcmlvcml0eS5zdHJpbmdfb2ZfbGV2ZWwgbClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICBQQi5BLml0ZXJpIChmdW4gYSBiIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIgJWk6JWlcIiBhIGIgaW5cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZykpXG4gICAgICAgIGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbFxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIioqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gICgqKiBwcm9wYWdhdGlvbiByZXF1ZXN0ICopXG5cbiAgbGV0IGFkZF9ldmVudCBlaWQgKHBpZCwgc2VpZCkgYXJyYXkgbGV2ZWwgdW5zb2x2ZWQgPVxuICAgIGxldCBldmVudF9jYXNlX2FkZHJlc3MgPSBidWlsZF9ldmVudF9jYXNlX2FkZHJlc3MgcGlkIHNlaWQgaW5cbiAgICBsZXQgb2xkID0gUEIuQS5nZXQgYXJyYXkgKFBCLmludF9vZl9zdGVwX2lkIGVpZCkgaW5cbiAgICBsZXQgdW5zb2x2ZWQgPVxuICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuYWRkIGxldmVsXG4gICAgICAgIChQcmlvcml0eS5MZXZlbE1hcC5maW5kX2RlZmF1bHQgMCBsZXZlbCB1bnNvbHZlZCArIDEpXG4gICAgICAgIHVuc29sdmVkXG4gICAgaW5cbiAgICBQQi5BLnNldCBhcnJheSAoUEIuaW50X29mX3N0ZXBfaWQgZWlkKSAoZXZlbnRfY2FzZV9hZGRyZXNzIDo6IG9sZCksIHVuc29sdmVkXG5cbiAgbGV0IGVtcHR5X3N0YWNrID0gW11cblxuICBsZXQgaW1wb3J0ID9oZXVyaXN0aWM6XyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbl9wcmVkaWNhdGVzID1cbiAgICAgIFBCLm5fcHJlZGljYXRlcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbl9ldmVudHMgPVxuICAgICAgUEIubl9ldmVudHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlX2JsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBzdGFjayA9IFtdIGluXG4gICAgbGV0IGN1cnJlbnRfc3RhY2sgPSBlbXB0eV9zdGFjayBpblxuICAgIGxldCBldmVudF9jYXNlX2xpc3QgPSBQQi5BLm1ha2Ugbl9ldmVudHMgW10gaW5cbiAgICBsZXQgbl9zZWlkID0gUEIuQS5tYWtlIG5fcHJlZGljYXRlcyAwIGluXG4gICAgbGV0IHVuc29sdmVkX2J5X2xldmVsID0gUHJpb3JpdHkuTGV2ZWxNYXAuZW1wdHkgaW5cbiAgICBsZXQgYmxhY2tib2FyZCA9IFBCLkEubWFrZSBuX3ByZWRpY2F0ZXMgKFBCLkEubWFrZSAxIGR1bW15X2Nhc2VfaW5mbykgaW5cbiAgICBsZXQgd2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbCA9XG4gICAgICBsZXQgcmVjIGF1eCBsZXZlbF9vcHQgbWFwID1cbiAgICAgICAgbWF0Y2ggbGV2ZWxfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1hcFxuICAgICAgICB8IFNvbWUgbGV2ZWwgLT5cbiAgICAgICAgICBhdXggKFByaW9yaXR5LmhpZ2hlciBsZXZlbClcbiAgICAgICAgICAgIChQcmlvcml0eS5MZXZlbE1hcC5hZGQgbGV2ZWwgKFBCLkEubWFrZSAwIDApIG1hcClcbiAgICAgIGluXG4gICAgICBhdXggKFNvbWUgUHJpb3JpdHkubG93ZXN0KSBQcmlvcml0eS5MZXZlbE1hcC5lbXB0eVxuICAgIGluXG4gICAgbGV0IGluY19kZXB0aCBsZXZlbCBwX2lkID1cbiAgICAgIG1hdGNoXG4gICAgICAgIFByaW9yaXR5LkxldmVsTWFwLmZpbmRfb3B0aW9uIGxldmVsIHdlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWxcbiAgICAgIHdpdGhcbiAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgIGxldCBvbGQgPSB0cnkgUEIuQS5nZXQgYSBwX2lkIHdpdGggTm90X2ZvdW5kIC0+IDAgaW5cbiAgICAgICAgUEIuQS5zZXQgYSBwX2lkIChvbGQgKyAxKVxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgaW5cblxuICAgIGxldCB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkID0gUEIuQS5tYWtlIDAgMCBpblxuICAgIGxldCBsYXN0X2xpbmtlZF9ldmVudF9vZl9wcmVkaWNhdGVfaWQgPVxuICAgICAgUEIuQS5tYWtlIG5fcHJlZGljYXRlcyBQQi56ZXJvX3N0ZXBfc2hvcnRfaWRcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgbGV0IHJlYyBhdXgxIHBfaWQgbG9nX2luZm8gZXJyb3IgPVxuICAgICAgICBpZiBwX2lkIDwgMCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHNpemUgPVxuICAgICAgICAgICAgUEIubl9ldmVudHNfcGVyX3ByZWRpY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBwcmVfYmxhY2tib2FyZCBwX2lkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgc2l6ZSA9IHNpemUgKyAxIGluXG4gICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgUEIuQS5zZXQgbGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlX2lkIHBfaWRcbiAgICAgICAgICAgICAgKFBCLnN0ZXBfc2hvcnRfaWRfb2ZfaW50IChzaXplIC0gMSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgXyA9IFBCLkEuc2V0IHdlaWd0aF9vZl9wcmVkaWNhdGVfaWQgcF9pZCAoc2l6ZSAtIDIpIGluXG4gICAgICAgICAgbGV0IF8gPSBQQi5BLnNldCBuX3NlaWQgcF9pZCBzaXplIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgICAgICBQQi5ldmVudF9saXN0X29mX3ByZWRpY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBwcmVfYmxhY2tib2FyZCBwX2lkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYXJyYXkgPSBQQi5BLm1ha2Ugc2l6ZSBkdW1teV9jYXNlX2luZm8gaW5cbiAgICAgICAgICBsZXQgXyA9IFBCLkEuc2V0IGJsYWNrYm9hcmQgcF9pZCBhcnJheSBpblxuICAgICAgICAgIGxldCByZWMgYXV4MiBzZWlkIGwgbG9nX2luZm8gPVxuICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkeW5hbWljID1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJfcHJldmlvdXMgPSBQQi56ZXJvX3N0ZXBfc2hvcnRfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcl9uZXh0ID0gUEIuaW5jX3N0ZXBfc2hvcnRfaWQgUEIuemVyb19zdGVwX3Nob3J0X2lkO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRlX2FmdGVyID0gUEIudW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkID0gU29tZSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgc3RhdGljID1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHJvd19zaG9ydF9pZCA9IFBCLnplcm9fc3RlcF9zaG9ydF9pZDtcbiAgICAgICAgICAgICAgICAgICAgICBldmVudF9pZCA9IFBCLmR1bW15X3N0ZXBfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgdGVzdCA9IFBCLnVua25vd247XG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gUEIudW5rbm93bjtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBfID0gUEIuQS5zZXQgYXJyYXkgMCBpbmZvIGluXG4gICAgICAgICAgICAgIGxldCBwcmVkX3NpemUgPVxuICAgICAgICAgICAgICAgIFBCLmRlY19zdGVwX3Nob3J0X2lkIChQQi5zdGVwX3Nob3J0X2lkX29mX2ludCBzaXplKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZHluYW1pYyA9XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyX3ByZXZpb3VzID0gcHJlZF9zaXplO1xuICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJfbmV4dCA9IHByZWRfc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZV9hZnRlciA9IFBCLnVua25vd247XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQgPSBTb21lIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBzdGF0aWMgPVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgcm93X3Nob3J0X2lkID0gcHJlZF9zaXplO1xuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X2lkID0gUEIuZHVtbXlfc3RlcF9pZDtcbiAgICAgICAgICAgICAgICAgICAgICB0ZXN0ID0gUEIudW5rbm93bjtcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBQQi51bmtub3duO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IF8gPSBQQi5BLnNldCBhcnJheSAoc2l6ZSAtIDEpIGluZm8gaW5cbiAgICAgICAgICAgICAgbG9nX2luZm9cbiAgICAgICAgICAgIHwgdHJpcGxlIDo6IHEgLT5cbiAgICAgICAgICAgICAgbGV0IGluZm8gPSBpbml0X2luZm8gcF9pZCBzZWlkIChzaXplIC0gMSkgdHJpcGxlIGluXG4gICAgICAgICAgICAgIGxldCBlaWQgPSBnZXRfZWlkX29mX3RyaXBsZSB0cmlwbGUgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgX2V2ZW50cyA9XG4gICAgICAgICAgICAgICAgUEIuZ2V0X3ByZV9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgX2Vycm9yLCBsb2dfaW5mbywgbGV2ZWwgPVxuICAgICAgICAgICAgICAgIFBCLmdldF9sZXZlbF9vZl9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgcHJlX2JsYWNrYm9hcmQgZWlkXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IGluY19kZXB0aCBsZXZlbCBwX2lkIGluXG4gICAgICAgICAgICAgIGxldCAoKSwgXyA9XG4gICAgICAgICAgICAgICAgYWRkX2V2ZW50IGVpZCAocF9pZCwgc2VpZCkgZXZlbnRfY2FzZV9saXN0IGxldmVsXG4gICAgICAgICAgICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5lbXB0eVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBQQi5BLnNldCBhcnJheSAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgc2VpZCkgaW5mbyBpblxuICAgICAgICAgICAgICBhdXgyIChQQi5kZWNfc3RlcF9zaG9ydF9pZCBzZWlkKSBxIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgYXV4MiAoUEIuc3RlcF9zaG9ydF9pZF9vZl9pbnQgKHNpemUgLSAyKSkgbGlzdCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4MSAocF9pZCAtIDEpIGxvZ19pbmZvIGVycm9yXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBhdXgxIChuX3ByZWRpY2F0ZXMgLSAxKSBsb2dfaW5mbyBlcnJvclxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZm9yY2VkX2V2ZW50cyA9XG4gICAgICBQQi5tYW5kYXRvcnlfZXZlbnRzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZV9ibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBldmVudCA9XG4gICAgICBQQi5nZXRfcHJlX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZV9ibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB1bnNvbHZlZF9ieV9sZXZlbCA9XG4gICAgICBsZXQgcmVjIGF1eCBrIGVycm9yIGxvZ19pbmZvIG1hcCA9XG4gICAgICAgIGlmIGsgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIG1hcFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsZXZlbCA9XG4gICAgICAgICAgICBQQi5nZXRfbGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgcHJlX2JsYWNrYm9hcmQgKFBCLnN0ZXBfaWRfb2ZfaW50IGspXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICAgIFByaW9yaXR5LkxldmVsTWFwLmFkZCBsZXZlbFxuICAgICAgICAgICAgICAoUHJpb3JpdHkuTGV2ZWxNYXAuZmluZF9kZWZhdWx0IDAgbGV2ZWwgbWFwICsgMSlcbiAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggKGsgLSAxKSBlcnJvciBsb2dfaW5mbyBtYXBcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCBuX2V2ZW50cyBlcnJvciBsb2dfaW5mbyB1bnNvbHZlZF9ieV9sZXZlbFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc2lkZV9lZmZlY3RzID1cbiAgICAgIFBCLmdldF9zaWRlX2VmZmVjdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZmljdGl0aW91c19vYnMgPVxuICAgICAgUEIuZ2V0X2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICBwcmVfYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGIgPVxuICAgICAge1xuICAgICAgICBldmVudDtcbiAgICAgICAgc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgPSBzaWRlX2VmZmVjdHM7XG4gICAgICAgIHByZV9jb2x1bW5fbWFwX2ludiA9IFBCLmdldF9wcmVfY29sdW1uX21hcF9pbnYgcHJlX2JsYWNrYm9hcmQ7XG4gICAgICAgIGxldmVsX29mX2V2ZW50ID0gUEIubGV2ZWxzIHByZV9ibGFja2JvYXJkO1xuICAgICAgICBmb3JjZWRfZXZlbnRzO1xuICAgICAgICBuX2VpZCA9IG5fZXZlbnRzO1xuICAgICAgICBuX3NlaWQ7XG4gICAgICAgIGV2ZW50X2Nhc2VfbGlzdDtcbiAgICAgICAgbGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlX2lkO1xuICAgICAgICBuX3ByZWRpY2F0ZV9pZCA9IG5fcHJlZGljYXRlcztcbiAgICAgICAgY3VycmVudF9zdGFjaztcbiAgICAgICAgc3RhY2s7XG4gICAgICAgIGJsYWNrYm9hcmQ7XG4gICAgICAgIHNlbGVjdGVkX2V2ZW50cyA9IFBCLkEubWFrZSBuX2V2ZW50cyBOb25lO1xuICAgICAgICB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkO1xuICAgICAgICB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkX2J5X2xldmVsO1xuICAgICAgICB1c2VkX3ByZWRpY2F0ZV9pZCA9IFBCLkEubWFrZSBuX3ByZWRpY2F0ZXMgdHJ1ZTtcbiAgICAgICAgbl91bnJlc29sdmVkX2V2ZW50cyA9IG5fZXZlbnRzO1xuICAgICAgICBuX3VucmVzb2x2ZWRfZXZlbnRzX2J5X2xldmVsID0gdW5zb2x2ZWRfYnlfbGV2ZWw7XG4gICAgICAgIGZpY3RpdGlvdXNfb2JzZXJ2YWJsZSA9IGZpY3RpdGlvdXNfb2JzO1xuICAgICAgfVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBiXG5cbiAgbGV0IGV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlX2FkZHJlc3MgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGluZm8gPVxuICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgaW5mby5keW5hbWljLnNlbGVjdGVkXG5cbiAgbGV0IHNldF9jYXNlIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZVxuICAgICAgYmxhY2tib2FyZCA9XG4gICAgdHJ5XG4gICAgICBsZXQgXyA9XG4gICAgICAgIFBCLkEuc2V0XG4gICAgICAgICAgKFBCLkEuZ2V0IGJsYWNrYm9hcmQuYmxhY2tib2FyZCBjYXNlX2FkZHJlc3MuY29sdW1uX3ByZWRpY2F0ZV9pZClcbiAgICAgICAgICAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgY2FzZV9hZGRyZXNzLnJvd19zaG9ydF9ldmVudF9pZClcbiAgICAgICAgICBjYXNlX3ZhbHVlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgd2l0aCBfIC0+XG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgIH5tZXNzYWdlOlwiRGVyZWZlcmVuY2luZyBOdWxsIHBvaW50ZXJcIlxuICAgICAgICAoRmFpbHVyZSBcIkRlcmVmZXJlbmNpbmcgbnVsbCBwb2ludGVyXCIpIGJsYWNrYm9hcmRcblxuICBsZXQgc2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlIGJsYWNrYm9hcmQgPVxuICAgIG1hdGNoIGNhc2VfYWRkcmVzcyB3aXRoXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCAoaW50LCBsZXZlbCkgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQ291bnRlciBpbnQyIC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5maW5kX29wdGlvbiBsZXZlbFxuICAgICAgICAgICAgIGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbFxuICAgICAgICAgd2l0aFxuICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgIGxldCAoKSA9IFBCLkEuc2V0IGEgaW50IGludDIgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgfm1lc3NhZ2U6XCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgICBibGFja2JvYXJkKVxuICAgICAgfCBQb2ludGVyIF8gfCBTdGF0ZSBfIHwgQm9vbGVhbiBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIGludCAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBDb3VudGVyIGludDIgLT5cbiAgICAgICAgbGV0IF8gPSBQQi5BLnNldCBibGFja2JvYXJkLndlaWd0aF9vZl9wcmVkaWNhdGVfaWQgaW50IGludDIgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICB8IFBvaW50ZXIgXyB8IEJvb2xlYW4gXyB8IFN0YXRlIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIHNldFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gQmxhY2tib2FyZC5zZXRcIilcbiAgICAgICAgICBibGFja2JvYXJkKVxuICAgIHwgUG9pbnRlcl90b19uZXh0IGNhc2VfYWRkcmVzcyAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBQb2ludGVyIGludDIgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgeyBvbGQgd2l0aCBkeW5hbWljID0geyBvbGQuZHluYW1pYyB3aXRoIHBvaW50ZXJfbmV4dCA9IGludDIgfSB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHNldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBDb3VudGVyIF8gfCBCb29sZWFuIF8gfCBTdGF0ZSBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IFZhbHVlX2FmdGVyIGNhc2VfYWRkcmVzcyAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBTdGF0ZSBzdGF0ZSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvbGQgPVxuICAgICAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjYXNlX3ZhbHVlID1cbiAgICAgICAgICB7IG9sZCB3aXRoIGR5bmFtaWMgPSB7IG9sZC5keW5hbWljIHdpdGggc3RhdGVfYWZ0ZXIgPSBzdGF0ZSB9IH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgc2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICB8IEJvb2xlYW4gXyB8IENvdW50ZXIgXyB8IFBvaW50ZXIgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJzZXQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgd2l0aCB2YWx1ZV9hZnRlclwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gQmxhY2tib2FyZC5zZXRcIilcbiAgICAgICAgICBibGFja2JvYXJkKVxuICAgIHwgVmFsdWVfYmVmb3JlIF9jYXNlX2FkZHJlc3MgLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJzZXQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgd2l0aCB2YWx1ZV9iZWZvcmVcIlxuICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICBibGFja2JvYXJkXG4gICAgfCBQb2ludGVyX3RvX3ByZXZpb3VzIGNhc2VfYWRkcmVzcyAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBQb2ludGVyIGludDIgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgeyBvbGQgd2l0aCBkeW5hbWljID0geyBvbGQuZHluYW1pYyB3aXRoIHBvaW50ZXJfcHJldmlvdXMgPSBpbnQyIH0gfVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBzZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIHwgQm9vbGVhbiBfIHwgU3RhdGUgXyB8IENvdW50ZXIgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICBcInNldCwgbGluZSA4OTYsIEluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHMgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQ291bnRlciBpbnQgLT5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB7IGJsYWNrYm9hcmQgd2l0aCBuX3VucmVzb2x2ZWRfZXZlbnRzID0gaW50IH1cbiAgICAgIHwgQm9vbGVhbiBfIHwgUG9pbnRlciBfIHwgU3RhdGUgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICBcInNldCwgbGluZSA5MDUsIEluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgbGV2ZWwgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQ291bnRlciBpbnQgLT5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICAgIG5fdW5yZXNvbHZlZF9ldmVudHNfYnlfbGV2ZWwgPVxuICAgICAgICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5hZGQgbGV2ZWwgaW50XG4gICAgICAgICAgICAgICAgYmxhY2tib2FyZC5uX3VucmVzb2x2ZWRfZXZlbnRzX2J5X2xldmVsO1xuICAgICAgICAgIH0gKVxuICAgICAgfCBCb29sZWFuIF8gfCBTdGF0ZSBfIHwgUG9pbnRlciBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IEtlZXBfZXZlbnQgc3RlcF9pZCAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBCb29sZWFuIGIgLT5cbiAgICAgICAgbGV0IF8gPVxuICAgICAgICAgIFBCLkEuc2V0IGJsYWNrYm9hcmQuc2VsZWN0ZWRfZXZlbnRzIChQQi5pbnRfb2Zfc3RlcF9pZCBzdGVwX2lkKSBiXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBQb2ludGVyIF8gfCBTdGF0ZSBfIHwgQ291bnRlciBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IEV4aXN0IGNhc2VfYWRkcmVzcyAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBCb29sZWFuIGIgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgeyBvbGQgd2l0aCBkeW5hbWljID0geyBvbGQuZHluYW1pYyB3aXRoIHNlbGVjdGVkID0gYiB9IH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgc2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICB8IFBvaW50ZXIgXyB8IENvdW50ZXIgXyB8IFN0YXRlIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIHNldFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gQmxhY2tib2FyZC5zZXRcIilcbiAgICAgICAgICBibGFja2JvYXJkKVxuXG4gIGxldCBpc19zZWxlY3RlZF9ldmVudCBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0ZXBfaWQgYmxhY2tib2FyZCA9XG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgUEIuQS5nZXQgYmxhY2tib2FyZC5zZWxlY3RlZF9ldmVudHMgKFBCLmludF9vZl9zdGVwX2lkIHN0ZXBfaWQpIClcblxuICBsZXQgcmVjIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZCA9XG4gICAgbWF0Y2ggY2FzZV9hZGRyZXNzIHdpdGhcbiAgICB8IEtlZXBfZXZlbnQgc3RlcF9pZCAtPlxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIEJvb2xlYW5cbiAgICAgICAgICAoUEIuQS5nZXQgYmxhY2tib2FyZC5zZWxlY3RlZF9ldmVudHMgKFBCLmludF9vZl9zdGVwX2lkIHN0ZXBfaWQpKSApXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCAoaW50LCBsZXZlbCkgLT5cbiAgICAgIGxldCBuID1cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5maW5kX29wdGlvbiBsZXZlbFxuICAgICAgICAgICAgYmxhY2tib2FyZC53ZWlndGhfb2ZfcHJlZGljYXRlX2lkX2J5X2xldmVsXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBTb21lIGEgLT4gUEIuQS5nZXQgYSBpbnRcbiAgICAgICAgfCBOb25lIC0+IDBcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIENvdW50ZXIgblxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4gaW50IC0+XG4gICAgICBlcnJvciwgbG9nX2luZm8sIENvdW50ZXIgKFBCLkEuZ2V0IGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZCBpbnQpXG4gICAgfCBFeGlzdCBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2UgPVxuICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQm9vbGVhbiBjYXNlLmR5bmFtaWMuc2VsZWN0ZWRcbiAgICB8IFBvaW50ZXJfdG9fbmV4dCBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2UgPVxuICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgUG9pbnRlciBjYXNlLmR5bmFtaWMucG9pbnRlcl9uZXh0XG4gICAgfCBWYWx1ZV9hZnRlciBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2UgPVxuICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgU3RhdGUgY2FzZS5keW5hbWljLnN0YXRlX2FmdGVyXG4gICAgfCBWYWx1ZV9iZWZvcmUgY2FzZV9hZGRyZXNzIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgcG9pbnRlciA9IGNhc2UuZHluYW1pYy5wb2ludGVyX3ByZXZpb3VzIGluXG4gICAgICBpZiBpc19udWxsX3BvaW50ZXIgcG9pbnRlciB0aGVuXG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIlZhbHVlIGJlZm9yZSBhbiB1bmV4aXN0aW5nIGVsZW1lbnQgcmVxdWVzdGVkXCJcbiAgICAgICAgICAoRmFpbHVyZSBcIlZhbHVlIGJlZm9yZSBhbiB1bmV4aXN0aW5nIGVsZW1lbnQgcmVxdWVzdGVkXCIpXG4gICAgICAgICAgKFN0YXRlIFBCLnVuZGVmaW5lZClcbiAgICAgIGVsc2VcbiAgICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgKFZhbHVlX2FmdGVyIHsgY2FzZV9hZGRyZXNzIHdpdGggcm93X3Nob3J0X2V2ZW50X2lkID0gcG9pbnRlciB9KVxuICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICB8IFBvaW50ZXJfdG9fcHJldmlvdXMgY2FzZV9hZGRyZXNzIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIFBvaW50ZXIgY2FzZS5keW5hbWljLnBvaW50ZXJfcHJldmlvdXNcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHMgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQ291bnRlciBibGFja2JvYXJkLm5fdW5yZXNvbHZlZF9ldmVudHNcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgbHZsIC0+XG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgQ291bnRlclxuICAgICAgICAgIChQcmlvcml0eS5MZXZlbE1hcC5maW5kX2RlZmF1bHQgMCBsdmxcbiAgICAgICAgICAgICBibGFja2JvYXJkLm5fdW5yZXNvbHZlZF9ldmVudHNfYnlfbGV2ZWwpIClcblxuICBsZXQgZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWZpeCBpbnQgaW50MlxuICAgICAgYmxhY2tib2FyZCA9XG4gICAgbGV0IGZpbGVfbmFtZSA9XG4gICAgICBwcmVmaXggXiBcIl9cIiBeIHN0cmluZ19vZl9pbnQgaW50IF4gXCJfXCIgXiBzdHJpbmdfb2ZfaW50IGludDIgXiBcIi5zeHdcIlxuICAgIGluXG4gICAgbGV0IGRlc2NfY2hhbiA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0IGZpbGVfbmFtZSBpblxuICAgIGxldCBkZXNjID0gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwgfm1vZGU6TG9nZ2Vycy5YTFMgZGVzY19jaGFuIGluXG4gICAgbGV0IHBhcmFtZXRlciA9IFBCLkNJLlBvLksuSC5zZXRfbG9nZ2VyIHBhcmFtZXRlciBkZXNjIGluXG4gICAgbGV0IG5jb2x1bW5zX2xlZnQgPSAzIGluXG4gICAgbGV0IG5yb3dzX2hlYWQgPSAyIGluXG4gICAgbGV0IHJvd19vZl9wcmVjb25kaXRpb24gZWlkID0gbnJvd3NfaGVhZCArICgzICogZWlkKSBpblxuICAgIGxldCByb3dfb2ZfcG9zdGNvbmRpdGlvbiBlaWQgPSAxICsgcm93X29mX3ByZWNvbmRpdGlvbiBlaWQgaW5cbiAgICBsZXQgY29sdW1uX29mX3BpZCBwaWQgPSBwaWQgKyBuY29sdW1uc19sZWZ0IGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGRlc2MgXCJSRU0gICoqKioqICBCQVNJQyAgKioqKipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0IGNvbG9ycyA9IFBCLkEubWFrZSBibGFja2JvYXJkLm5fZWlkIE5vbmUgaW5cbiAgICBsZXQgYmFja2NvbG9yIGxvZyBjb2xvciA9XG4gICAgICBtYXRjaCBjb2xvciB3aXRoXG4gICAgICB8IFNvbWUgY29sb3IgLT5cbiAgICAgICAgbGV0IHIsIGcsIGIgPSBDb2xvci50cmlwbGVfb2ZfY29sb3IgY29sb3IgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkMuQ2VsbEJhY2tDb2xvciA9IFJHQiglaSwlaSwlaSlcIiByIGcgYiBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICgpXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICBpblxuICAgIGxldCB0ZXh0Y29sb3IgbG9nIGNvbG9yID1cbiAgICAgIG1hdGNoIGNvbG9yIHdpdGhcbiAgICAgIHwgU29tZSBjb2xvciAtPlxuICAgICAgICBsZXQgciwgZywgYiA9IENvbG9yLnRyaXBsZV9vZl9jb2xvciBjb2xvciBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiQy5DaGFyQ29sb3IgPSBSR0IoJWksJWksJWkpXCIgciBnIGIgaW5cbiAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICAgICAgfCBOb25lIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgZ2V0Y2VsbCBsb2cgcm93IGNvbCA9XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiQyA9IFMuZ2V0Q2VsbEJ5UG9zaXRpb24oJWksJWkpXCIgY29sIHJvdyBpblxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICAgIGluXG4gICAgbGV0IG92ZXJsaW5lX2Nhc2UgbG9nIHJvdyBfY29sIF9jb2xvciA9XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiUj1TLlJvd3MoJWkpXCIgcm93IGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiUi5Ub3BCb3JkZXIgPSB3aXRoQm9yZFwiIGluXG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nXG4gICAgaW5cbiAgICBsZXQgcHJpbnRfY2FzZSBsb2cgcm93IGNvbCBjb2xvcl9mb250IGNvbG9yX2JhY2sgc3RyaW5nID1cbiAgICAgIGlmIHN0cmluZyA8PiBcIlwiIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBnZXRjZWxsIGxvZyByb3cgY29sIGluXG4gICAgICAgIGxldCAoKSA9IHRleHRjb2xvciBsb2cgY29sb3JfZm9udCBpblxuICAgICAgICBsZXQgKCkgPSBiYWNrY29sb3IgbG9nIGNvbG9yX2JhY2sgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkMuc2V0Rm9ybXVsYShcXFwiJXNcXFwiKVwiIHN0cmluZyBpblxuICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgcHJpbnRfY2FzZV9mdW4gbG9nIHJvdyBjb2wgY29sb3JfZm9udCBjb2xvcl9iYWNrIGYgZXJyb3IgPVxuICAgICAgbGV0ICgpID0gZ2V0Y2VsbCBsb2cgcm93IGNvbCBpblxuICAgICAgbGV0ICgpID0gdGV4dGNvbG9yIGxvZyBjb2xvcl9mb250IGluXG4gICAgICBsZXQgKCkgPSBiYWNrY29sb3IgbG9nIGNvbG9yX2JhY2sgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJDLnNldEZvcm11bGEoXFxcIlwiIGluXG4gICAgICBsZXQgZXJyb3IgPSBmIGVycm9yIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiXFxcIilcIiBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgZXJyb3JcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiU3ViIE1haW5cIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgciwgZywgYiA9IENvbG9yLnRyaXBsZV9vZl9jb2xvciBDb2xvci5CbGFjayBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgZGVzYyBcIkRpbSB3aXRoQm9yZCBBcyBOZXcgY29tLnN1bi5zdGFyLnRhYmxlLkJvcmRlckxpbmVcIlxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGRlc2MgXCJXaXRoIHdpdGhCb3JkIHdpdGhCb3JkLkNvbG9yID0gUkdCKCVpLCVpLCVpKVwiIHIgZyBiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZGVzYyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwid2l0aEJvcmQuT3V0ZXJMaW5lV2lkdGggPSA2MFwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgZGVzYyBcIkVuZCBXaXRoXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZGVzYyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiUyA9IFRoaXNDb21wb25lbnQuU2hlZXRzKDApXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZGVzYyBpblxuICAgIGxldCBfID1cbiAgICAgIG1hdGNoIGZvcmNlZF9ldmVudHMgYmxhY2tib2FyZCB3aXRoXG4gICAgICB8IFsgKGxpc3QsIF8pIF0gLT5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biBlaWQgLT4gUEIuQS5zZXQgY29sb3JzIChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpIChTb21lIENvbG9yLlJlZCkpXG4gICAgICAgICAgbGlzdFxuICAgICAgfCBfIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBQQi5BLml0ZXJpXG4gICAgICAgIChmdW4gcGlkIHBfaW5mbyAtPlxuICAgICAgICAgIHByaW50X2Nhc2VfZnVuIGRlc2MgMCAoY29sdW1uX29mX3BpZCBwaWQpIE5vbmUgTm9uZVxuICAgICAgICAgICAgKGZ1biBfZXJyb3IgLT4gUEIucHJpbnRfcHJlZGljYXRlX2luZm8gZGVzYyBwX2luZm8pXG4gICAgICAgICAgICBlcnJvcilcbiAgICAgICAgYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcF9pbnZcbiAgICBpblxuICAgIGxldCByZWMgYXV4IGVpZCBlcnJvciBsb2dfaW5mbyBzdGFjayA9XG4gICAgICBpZiBlaWQgPj0gYmxhY2tib2FyZC5uX2VpZCB0aGVuXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgIGNhc2VfbGlzdF9vZl9laWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgKFBCLnN0ZXBfaWRfb2ZfaW50IGVpZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJvd19wcmVjb25kaXRpb24gPSByb3dfb2ZfcHJlY29uZGl0aW9uIGVpZCBpblxuICAgICAgICBsZXQgcm93X3Bvc3Rjb25kaXRpb24gPSByb3dfb2ZfcG9zdGNvbmRpdGlvbiBlaWQgaW5cbiAgICAgICAgbGV0IGNvbG9yLCBtYXliZWtlcHQgPVxuICAgICAgICAgIG1hdGNoIFBCLkEuZ2V0IGJsYWNrYm9hcmQuc2VsZWN0ZWRfZXZlbnRzIGVpZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFBCLkEuZ2V0IGNvbG9ycyBlaWQsIHRydWVcbiAgICAgICAgICB8IFNvbWUgdHJ1ZSAtPiBTb21lIENvbG9yLlJlZCwgdHJ1ZVxuICAgICAgICAgIHwgU29tZSBmYWxzZSAtPiBTb21lIENvbG9yLkdyZXksIGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgYXV4MiBmIGcgbCBlcnJvciBsb2dfaW5mbyA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICBvdmVybGluZV9jYXNlIGRlc2Mgcm93X3Bvc3Rjb25kaXRpb25cbiAgICAgICAgICAgICAgICAoY29sdW1uX29mX3BpZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgcHJpbnRfY2FzZSBkZXNjIHJvd19wcmVjb25kaXRpb25cbiAgICAgICAgICAgICAgICAoY29sdW1uX29mX3BpZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgICAgICAgTm9uZSBjb2xvciAoZiB0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgcHJpbnRfY2FzZSBkZXNjIHJvd19wb3N0Y29uZGl0aW9uXG4gICAgICAgICAgICAgICAgKGNvbHVtbl9vZl9waWQgdC5jb2x1bW5fcHJlZGljYXRlX2lkKVxuICAgICAgICAgICAgICAgIE5vbmUgY29sb3IgKGcgdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgbWF5YmVrZXB0IHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHZhbHVlX2JlZm9yZSA9XG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yICh2YWx1ZV9iZWZvcmUgdClcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBzdHJpbmdfb2ZfdmFsdWUgY2FzZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gZXJyb3IsIGxvZ19pbmZvLCBcIlVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICBwcmludF9jYXNlIGRlc2MgKHJvd19wcmVjb25kaXRpb24gLSAxKVxuICAgICAgICAgICAgICAgICAgICAoY29sdW1uX29mX3BpZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgICAgICAgICAgIChTb21lIENvbG9yLkxpZ2h0Ymx1ZSkgTm9uZSB2YWx1ZV9iZWZvcmVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHZhbHVlX2FmdGVyID1cbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlX3ZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICBnZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgKHZhbHVlX2FmdGVyIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgc3RyaW5nX29mX3ZhbHVlIGNhc2VfdmFsdWVcbiAgICAgICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGVycm9yLCBsb2dfaW5mbywgXCJVbmRlZmluZWRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfY2FzZSBkZXNjIChyb3dfcG9zdGNvbmRpdGlvbiArIDEpXG4gICAgICAgICAgICAgICAgICAgIChjb2x1bW5fb2ZfcGlkIHQuY29sdW1uX3ByZWRpY2F0ZV9pZClcbiAgICAgICAgICAgICAgICAgICAgKFNvbWUgQ29sb3IuTGlnaHRibHVlKSBOb25lIHZhbHVlX2FmdGVyXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYXV4MiBmIGcgcSBlcnJvciBsb2dfaW5mb1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHJpbnRfdGVzdCB0ID1cbiAgICAgICAgICBsZXQgY29sdW1uID0gUEIuQS5nZXQgYmxhY2tib2FyZC5ibGFja2JvYXJkIHQuY29sdW1uX3ByZWRpY2F0ZV9pZCBpblxuICAgICAgICAgIGxldCBjYXNlID1cbiAgICAgICAgICAgIFBCLkEuZ2V0IGNvbHVtbiAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgdC5yb3dfc2hvcnRfZXZlbnRfaWQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBQQi5zdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIGNhc2Uuc3RhdGljLnRlc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHByaW50X2FjdGlvbiB0ID1cbiAgICAgICAgICBsZXQgY29sdW1uID0gUEIuQS5nZXQgYmxhY2tib2FyZC5ibGFja2JvYXJkIHQuY29sdW1uX3ByZWRpY2F0ZV9pZCBpblxuICAgICAgICAgIGxldCBjYXNlID1cbiAgICAgICAgICAgIFBCLkEuZ2V0IGNvbHVtbiAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgdC5yb3dfc2hvcnRfZXZlbnRfaWQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBQQi5zdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIGNhc2Uuc3RhdGljLmFjdGlvblxuICAgICAgICBpblxuICAgICAgICBsZXQgc3RyaW5nX2VpZCBlcnJvciA9XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X2FzX2xvZ2dlciBkZXNjIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgVHJhY2UucHJpbnRfc3RlcCB+Y29tcGFjdDp0cnVlIH5lbnY6aGFuZGxlci5QQi5DSS5Qby5LLkguZW52IGZcbiAgICAgICAgICAgICAgICAgICAgKFBCLkEuZ2V0IGJsYWNrYm9hcmQuZXZlbnQgZWlkKSlcbiAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiRXZlbnQ6JWlcIiBlaWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgcHJpbnRfY2FzZV9mdW4gZGVzYyByb3dfcHJlY29uZGl0aW9uIDEgTm9uZSBjb2xvciBzdHJpbmdfZWlkIGVycm9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgcHJpbnRfY2FzZV9mdW4gZGVzYyByb3dfcG9zdGNvbmRpdGlvbiAxIE5vbmUgY29sb3Igc3RyaW5nX2VpZCBlcnJvclxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlIGRlc2Mgcm93X3ByZWNvbmRpdGlvbiAyIE5vbmUgY29sb3IgXCJQUkVDT05ESVRJT05cIiBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHByaW50X2Nhc2UgZGVzYyByb3dfcG9zdGNvbmRpdGlvbiAyIE5vbmUgY29sb3IgXCJQT1NUQ09ORElUSU9OXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgYXV4MiBwcmludF90ZXN0IHByaW50X2FjdGlvbiBsaXN0IGVycm9yIGxvZ19pbmZvXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBjYW5kID0gUEIuQS5nZXQgYmxhY2tib2FyZC5ldmVudCBlaWQgaW5cbiAgICAgICAgICAgIFRyYWNlLnN0ZXBfaXNfcnVsZSBjYW5kIHx8IFRyYWNlLnN0ZXBfaXNfcGVydCBjYW5kXG4gICAgICAgICAgICB8fCBUcmFjZS5zdGVwX2lzX29icyBjYW5kIHx8IFRyYWNlLnN0ZXBfaXNfaW5pdCBjYW5kXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBzdGFjayA9XG4gICAgICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biBlcnJvciByb3cgLT5cbiAgICAgICAgICAgICAgICAgIHByaW50X2Nhc2VfZnVuIGRlc2Mgcm93IDAgTm9uZSBjb2xvciBzdHJpbmdfZWlkIGVycm9yKVxuICAgICAgICAgICAgICAgIGVycm9yIChMaXN0LnJldiBzdGFjaylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgW11cbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCByb3dfcHJlY29uZGl0aW9uIDo6IHJvd19wb3N0Y29uZGl0aW9uIDo6IHN0YWNrXG4gICAgICAgIGluXG4gICAgICAgIGF1eCAoZWlkICsgMSkgZXJyb3IgbG9nX2luZm8gc3RhY2tcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPSBhdXggMCBlcnJvciBsb2dfaW5mbyBbXSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiRW5kIFN1YlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgKCkgPSBjbG9zZV9vdXQgZGVzY19jaGFuIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gIGxldCByZWNvcmRfbW9kaWYgX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZSBibGFja2JvYXJkXG4gICAgICA9XG4gICAgKCBlcnJvcixcbiAgICAgIHtcbiAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgIGN1cnJlbnRfc3RhY2sgPSAoY2FzZV9hZGRyZXNzLCBjYXNlX3ZhbHVlKSA6OiBibGFja2JvYXJkLmN1cnJlbnRfc3RhY2s7XG4gICAgICB9IClcblxuICBsZXQgcmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlIGJsYWNrYm9hcmRcbiAgICAgID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvbGQgPVxuICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBjYXNlX3ZhbHVlID0gb2xkIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiQC4qKipALlJFRklORV9WQUxVRUAuVmFsdWUgYmVmb3JlOiBcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgcHJpbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgY2FzZV9hZGRyZXNzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBvbGQgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJALk5ldyB2YWx1ZTogXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGNhc2VfdmFsdWUgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJALklHTk9SRUQqKipALlwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgSWdub3JlKVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sID1cbiAgICAgICAgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIG9sZCBjYXNlX3ZhbHVlXG4gICAgICBpblxuICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIkAuKioqQC5SRUZJTkVfVkFMVUVALlZhbHVlIGJlZm9yZTogXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgIHByaW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgb2xkIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJALk5ldyB2YWx1ZTogXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBjYXNlX3ZhbHVlIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJALklHTk9SRUQqKipALlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgSWdub3JlKVxuICAgICAgKSBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICAgICAgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfdmFsdWUgb2xkXG4gICAgICAgIGluXG4gICAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICBzZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgIHJlY29yZF9tb2RpZiBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBjYXNlX2FkZHJlc3Mgb2xkIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC4qKipALlJFRklORV9WQUxVRUAuVmFsdWUgYmVmb3JlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgIGNhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBvbGQgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC5OZXcgdmFsdWU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGNhc2VfdmFsdWUgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC5TVUNDRVNTKioqQC5cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIFN1Y2Nlc3MpXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJALioqKkAuUkVGSU5FX1ZBTFVFQC5WYWx1ZSBiZWZvcmU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIG9sZCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJALk5ldyB2YWx1ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgY2FzZV92YWx1ZSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJALkZBSUwqKipALlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgRmFpbClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcblxuICBsZXQgb3ZlcndyaXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICBibGFja2JvYXJkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvbGQgPVxuICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBjYXNlX3ZhbHVlID0gb2xkIHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIHNldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZSBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgcmVjb3JkX21vZGlmIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGNhc2VfYWRkcmVzcyBvbGQgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgIClcblxuICBsZXQgZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvbGQgPVxuICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgaW5cbiAgICBtYXRjaCBvbGQgd2l0aFxuICAgIHwgQ291bnRlciBrIC0+XG4gICAgICBpZiBrID0gMCB0aGVuXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHNldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3NcbiAgICAgICAgICAgIChDb3VudGVyIChrIC0gMSkpXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgICAgcmVjb3JkX21vZGlmIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGNhc2VfYWRkcmVzcyBvbGQgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIClcbiAgICB8IFBvaW50ZXIgXyB8IEJvb2xlYW4gXyB8IFN0YXRlIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJXcm9uZyB0eXBlIG9mIGNhc2UgdmFsdWVcIlxuICAgICAgICAoRmFpbHVyZSBcIldyb25nIHR5cGUgb2YgY2FzZSB2YWx1ZVwiKSBibGFja2JvYXJkXG5cbiAgbGV0IGJyYW5jaCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBcIioqKioqKipALiAqIEJSQU5DSCAqQC4qKioqKioqQC5cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgcHJpbnRfYmxhY2tib2FyZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfYnJhbmNoIGxvZ19pbmZvIGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAge1xuICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgc3RhY2sgPSBibGFja2JvYXJkLmN1cnJlbnRfc3RhY2sgOjogYmxhY2tib2FyZC5zdGFjaztcbiAgICAgICAgY3VycmVudF9zdGFjayA9IFtdO1xuICAgICAgfSApXG5cbiAgbGV0IHJlc2V0X2xhc3RfYnJhbmNoaW5nIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIFwiKioqKioqKkAuKiBDdXQgKkAuKioqKioqKlwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICBwcmludF9ibGFja2JvYXJkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICApIGVsc2VcbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgc3RhY2sgPSBibGFja2JvYXJkLmN1cnJlbnRfc3RhY2sgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgKGNhc2VfYWRkcmVzcywgY2FzZV92YWx1ZSkgLT5cbiAgICAgICAgICBzZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgIHN0YWNrXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBcIioqKioqKipALiogQWZ0ZXJfQ3V0ICpALioqKioqKipcIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgcHJpbnRfYmxhY2tib2FyZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfY3V0IGxvZ19pbmZvIGluXG4gICAgbWF0Y2ggYmxhY2tib2FyZC5zdGFjayB3aXRoXG4gICAgfCBbXSAtPiBlcnJvciwgbG9nX2luZm8sIHsgYmxhY2tib2FyZCB3aXRoIGN1cnJlbnRfc3RhY2sgPSBbXSB9XG4gICAgfCB0IDo6IHEgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgeyBibGFja2JvYXJkIHdpdGggY3VycmVudF9zdGFjayA9IHQ7IHN0YWNrID0gcSB9XG5cbiAgbGV0IHJlc2V0X2luaXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IHJlYyBhdXggKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgPVxuICAgICAgbWF0Y2ggYmxhY2tib2FyZC5jdXJyZW50X3N0YWNrIHdpdGhcbiAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICB8IF8gLT5cbiAgICAgICAgYXV4IChyZXNldF9sYXN0X2JyYW5jaGluZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9IGF1eCAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMucmVzZXRfbG9nIGxvZ19pbmZvIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5cbiAgdHlwZSByZXN1bHQgPSAoVHJhY2Uuc3RlcCAqIFBCLkNJLlBvLksuc2lkZV9lZmZlY3QpIGxpc3RcbiAgKCoqIG91dHB1dCByZXN1bHQqKVxuXG4gICgqKiBpdGVyYXRpb24qKVxuICBsZXQgaXNfbWF4aW1hbF9zb2x1dGlvbiBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZC5uX3VucmVzb2x2ZWRfZXZlbnRzID0gMFxuXG4gICgqKiBleHBvcnRpbmcgcmVzdWx0KilcblxuICBsZXQgdHJhbnNsYXRlX2JsYWNrYm9hcmQgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgYXJyYXkgPSBibGFja2JvYXJkLnNlbGVjdGVkX2V2ZW50cyBpblxuICAgIGxldCBzdGVwX2FycmF5ID0gYmxhY2tib2FyZC5ldmVudCBpblxuICAgIGxldCBzaWRlX2FycmF5ID0gYmxhY2tib2FyZC5zaWRlX2VmZmVjdF9vZl9ldmVudCBpblxuICAgIGxldCBzaXplID0gUEIuQS5sZW5ndGggYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIGxpc3QgPVxuICAgICAgaWYgayA9IHNpemUgdGhlblxuICAgICAgICBMaXN0LnJldiBsaXN0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGJvb2wgPSBQQi5BLmdldCBhcnJheSBrIGluXG4gICAgICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IChrICsgMSkgbGlzdFxuICAgICAgICB8IFNvbWUgZmFsc2UgLT4gYXV4IChrICsgMSkgbGlzdFxuICAgICAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgICAgIGxldCBzdGVwID0gUEIuQS5nZXQgc3RlcF9hcnJheSBrIGluXG4gICAgICAgICAgbGV0IHNpZGUgPSBQQi5BLmdldCBzaWRlX2FycmF5IGsgaW5cbiAgICAgICAgICBhdXggKGsgKyAxKSAoKHN0ZXAsIHNpZGUpIDo6IGxpc3QpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgbGlzdCA9IGF1eCAwIFtdIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBsaXN0XG5cbiAgbGV0IHByaW50X3N0YWNrIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCBzdGFjayA9IGJsYWNrYm9hcmQuY3VycmVudF9zdGFjayBpblxuICAgIGxldCBsb2cgPSBQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlciBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiQ3VycmVudF9zdGFja19sZXZlbCAlaSBcIiAoTGlzdC5sZW5ndGggc3RhY2spXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbykgaSAtPlxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICBwcmludF9hc3NpZ25tZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgaVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkAuXCIgaW5cbiAgICAgICAgICBlcnJvcilcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbykgKExpc3QucmV2IHN0YWNrKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8pIHggLT5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiT3RoZXIgbGV2ZWwgJWkgXCIgKExpc3QubGVuZ3RoIHgpIGluXG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbykgLT5cbiAgICAgICAgICAgICAgcHJpbnRfYXNzaWdubWVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkKVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbykgKExpc3QucmV2IHgpKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvKVxuICAgICAgICAoTGlzdC5yZXYgYmxhY2tib2FyZC5zdGFjaylcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKClcblxuICBsZXQgaXNfZmljdGl0aW91c19vYnMgYmxhY2tib2FyZCBlaWQgPVxuICAgIFNvbWUgZWlkID0gYmxhY2tib2FyZC5maWN0aXRpb3VzX29ic2VydmFibGVcblxuICBsZXQgdXNlbGVzc19wcmVkaWNhdGVfaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0ID1cbiAgICBsZXQgbl9ldmVudHMgPSBibGFja2JvYXJkLm5fZWlkIGluXG4gICAgaWYgUGFyYW1ldGVyLmRvX2xvY2FsX2N1dCB0aGVuIChcbiAgICAgIGxldCBldmVudF9hcnJheSA9IFBCLkEubWFrZSBuX2V2ZW50cyBmYWxzZSBpblxuICAgICAgbGV0IGtlcHRfZXZlbnRzID0gW10gaW5cbiAgICAgIGxldCBrZXB0X2V2ZW50cyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBrZXB0X2V2ZW50cyBpIC0+XG4gICAgICAgICAgICBsZXQgXyA9IFBCLkEuc2V0IGV2ZW50X2FycmF5IChQQi5pbnRfb2Zfc3RlcF9pZCBpKSB0cnVlIGluXG4gICAgICAgICAgICBpIDo6IGtlcHRfZXZlbnRzKVxuICAgICAgICAgIGtlcHRfZXZlbnRzIGxpc3RcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGF1eCBsb2dfaW5mbyBlcnJvciBldmVudF9saXN0IGtlcHRfZXZlbnRzID1cbiAgICAgICAgbWF0Y2ggZXZlbnRfbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBrZXB0X2V2ZW50c1xuICAgICAgICB8IGVpZCA6OiBxIC0+XG4gICAgICAgICAgaWYgaXNfZmljdGl0aW91c19vYnMgYmxhY2tib2FyZCBlaWQgdGhlblxuICAgICAgICAgICAgYXV4IGxvZ19pbmZvIGVycm9yIHEga2VwdF9ldmVudHNcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgUEIuQS5nZXQgYmxhY2tib2FyZC5ldmVudF9jYXNlX2xpc3QgKFBCLmludF9vZl9zdGVwX2lkIGVpZClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBxLCBrZXB0X2V2ZW50cyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBxLCBrZXB0X2V2ZW50cykgZXZlbnRfY2FzZV9hZGRyZXNzIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgICAgICAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGlmIFBCLmlzX3VuZGVmaW5lZCBjYXNlLnN0YXRpYy50ZXN0IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBxLCBrZXB0X2V2ZW50c1xuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2ludGVyID0gY2FzZS5keW5hbWljLnBvaW50ZXJfcHJldmlvdXMgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVpZCA9XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBzY2FuX2Rvd24gcG9pbnRlciA9XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJldl9ldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dfc2hvcnRfZXZlbnRfaWQgPSBwb2ludGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IF9lcnJvciwgX2xvZ19pbmZvLCBwcmV2X2Nhc2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZfZXZlbnRfY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJldl9laWQgPSBwcmV2X2Nhc2Uuc3RhdGljLmV2ZW50X2lkIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBpc19udWxsX3BvaW50ZXJfc3RlcF9pZCBwcmV2X2VpZCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgUEIuaXNfdW5rbm93biBwcmV2X2Nhc2Uuc3RhdGljLmFjdGlvbiB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvaW50ZXIgPSBwcmV2X2Nhc2UuZHluYW1pYy5wb2ludGVyX3ByZXZpb3VzIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5fZG93biBwb2ludGVyXG4gICAgICAgICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBwcmV2X2VpZFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgc2Nhbl9kb3duIHBvaW50ZXJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZWlkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHNcbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIHByZXZfZWlkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IFBCLkEuZ2V0IGV2ZW50X2FycmF5IChQQi5pbnRfb2Zfc3RlcF9pZCBwcmV2X2VpZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHEsIGtlcHRfZXZlbnRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBxLCBrZXB0X2V2ZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQi5BLnNldCBldmVudF9hcnJheVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBCLmludF9vZl9zdGVwX2lkIHByZXZfZWlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2X2VpZCA6OiBxLCBwcmV2X2VpZCA6OiBrZXB0X2V2ZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBxLCBrZXB0X2V2ZW50c1xuICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBxLCBrZXB0X2V2ZW50cylcbiAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYXV4IGxvZ19pbmZvIGVycm9yIHEga2VwdF9ldmVudHNcbiAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcmVwID0gYXV4IGxvZ19pbmZvIGVycm9yIGxpc3Qga2VwdF9ldmVudHMgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgTGlzdC5zb3J0IGNvbXBhcmUgcmVwLCBuX2V2ZW50cyAtIExpc3QubGVuZ3RoIHJlcFxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZXZlbnRzX3RvX2tlZXAgPVxuICAgICAgICBsZXQgcmVjIGF1eCBrIGxpc3QgPVxuICAgICAgICAgIGlmIGsgPCAwIHRoZW5cbiAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhdXggKGsgLSAxKSAoUEIuc3RlcF9pZF9vZl9pbnQgayA6OiBsaXN0KVxuICAgICAgICBpblxuICAgICAgICBhdXggKG5fZXZlbnRzIC0gMSkgW11cbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50c190b19rZWVwLCAwXG4gICAgKVxuXG4gIGxldCBjdXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjdXRfY2F1c2FsX2Zsb3csIG5fZXZlbnRzX3JlbW92ZWQgPVxuICAgICAgdXNlbGVzc19wcmVkaWNhdGVfaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0XG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfY29uY3VycmVudF9ldmVudF9kZXRlY3Rpb25fdGltZSBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfc3RlcF90aW1lIGxvZ19pbmZvIGluXG4gICAgbGV0IGxvZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX2tfY3V0X2V2ZW50cyBuX2V2ZW50c19yZW1vdmVkIGxvZ19pbmZvXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBjdXRfY2F1c2FsX2Zsb3cpXG5cbiAgbGV0IGltcG9ydCA/aGV1cmlzdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxpc3QgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZWJsYWNrYm9hcmQgPVxuICAgICAgUEIuaW5pdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKHByZWJsYWNrYm9hcmQsIF9zdGVwX2lkLCBzdHJpbmcsIHRvX3hscykgPVxuICAgICAgbWF0Y2ggcGFyYW1ldGVyLlBCLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkNvbXByZXNzaW9uIG1vZGUgaGFzIG5vdCBiZWVuIHNldCB1cFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJDb21wcmVzc2lvbiBtb2RlIGhhcyBub3QgYmVlbiBzZXQgdXAuXCIpXG4gICAgICAgICAgKHByZWJsYWNrYm9hcmQsIFBCLnplcm9fc3RlcF9pZCwgXCJOb25lXCIsIGZhbHNlKVxuICAgICAgfCBTb21lIFN0b3J5X2pzb24uU3Ryb25nIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBpbnQpID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCAocHJlYmxhY2tib2FyZCwgaW50KSkgcmVmaW5lZF9ldmVudCAtPlxuICAgICAgICAgICAgICBQQi5hZGRfc3RlcF91cF90b19pc28gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICByZWZpbmVkX2V2ZW50IHByZWJsYWNrYm9hcmQgaW50KVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgKHByZWJsYWNrYm9hcmQsIFBCLnplcm9fc3RlcF9pZCkpXG4gICAgICAgICAgICBsaXN0XG4gICAgICAgIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgKCBwcmVibGFja2JvYXJkLFxuICAgICAgICAgICAgaW50LFxuICAgICAgICAgICAgUGFyYW1ldGVyLnhsc3N0cm9uZ0ZpbGVOYW1lLFxuICAgICAgICAgICAgUGFyYW1ldGVyLmR1bXBfZ3JpZF9iZWZvcmVfc3Ryb25nX2NvbXByZXNzaW9uICkgKVxuICAgICAgfCBTb21lIFN0b3J5X2pzb24uV2VhayB8IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKHByZWJsYWNrYm9hcmQsIGludCkgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBpbnQpKSByZWZpbmVkX2V2ZW50IC0+XG4gICAgICAgICAgICAgIFBCLmFkZF9zdGVwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHJlZmluZWRfZXZlbnRcbiAgICAgICAgICAgICAgICBwcmVibGFja2JvYXJkIGludClcbiAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBQQi56ZXJvX3N0ZXBfaWQpKVxuICAgICAgICAgICAgbGlzdFxuICAgICAgICBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICggcHJlYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGludCxcbiAgICAgICAgICAgIFBhcmFtZXRlci54bHN3ZWFrRmlsZU5hbWUsXG4gICAgICAgICAgICBQYXJhbWV0ZXIuZHVtcF9ncmlkX2JlZm9yZV93ZWFrX2NvbXByZXNzaW9uICkgKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlYmxhY2tib2FyZCA9XG4gICAgICBQQi5maW5hbGl6ZSBoZXVyaXN0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBpbXBvcnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IF8gPSBQcmlvcml0eS5uX3N0b3J5IDo9ICFQcmlvcml0eS5uX3N0b3J5ICsgMSBpblxuICAgIGxldCBfID0gUHJpb3JpdHkubl9icmFuY2ggOj0gMSBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgIGlmIHRvX3hscyB0aGVuXG4gICAgICAgIGV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdHJpbmdcbiAgICAgICAgICAhUHJpb3JpdHkubl9zdG9yeSAwIGJsYWNrYm9hcmRcbiAgICAgIGVsc2VcbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5lbmRcbiIsIigqKlxuICAqIHByb3BhZ2F0aW9uX2hldXJpc3RpYy5tbFxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDE2LTA5LTA1IGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0wMyAyMDowMzoxMSBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICpcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBkZWJ1Z19tb2RlID0gZmFsc2VcbmxldCBsb29rX3VwX2Zvcl9iZXR0ZXJfY3V0ID0gUGFyYW1ldGVyLmxvb2tfdXBfZm9yX2JldHRlcl9jdXRcbmxldCBsb29rX2Rvd25fZm9yX2JldHRlcl9jdXQgPSBQYXJhbWV0ZXIubG9va19kb3duX2Zvcl9iZXR0ZXJfY3V0XG5cbm1vZHVsZSB0eXBlIEJsYWNrYm9hcmRfd2l0aF9oZXVyaXN0aWMgPSBzaWdcbiAgbW9kdWxlIEIgOiBCbGFja2JvYXJkLkJsYWNrYm9hcmRcblxuICB0eXBlIHVwZGF0ZV9vcmRlclxuICB0eXBlIHByb3BhZ2F0aW9uX2NoZWNrXG5cbiAgdmFsIGR1bW15X3VwZGF0ZV9vcmRlciA6IHVwZGF0ZV9vcmRlclxuXG4gIHZhbCBmb3JjZWRfZXZlbnRzIDpcbiAgICAoIEIuYmxhY2tib2FyZCxcbiAgICAgICh1cGRhdGVfb3JkZXIgbGlzdFxuICAgICAgKiBCLlBCLnN0ZXBfaWQgbGlzdFxuICAgICAgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IG9wdGlvbilcbiAgICAgIGxpc3QgKVxuICAgIEIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGZvcmJpZGRlbl9ldmVudHMgOlxuICAgIChCLlBCLnN0ZXBfaWQgbGlzdCwgdXBkYXRlX29yZGVyIGxpc3QpIEIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIG5leHRfY2hvaWNlIDogKEIuYmxhY2tib2FyZCwgdXBkYXRlX29yZGVyIGxpc3QpIEIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGFwcGx5X2luc3RydWN0aW9uIDpcbiAgICAoIEIuYmxhY2tib2FyZCxcbiAgICAgIHVwZGF0ZV9vcmRlcixcbiAgICAgIHVwZGF0ZV9vcmRlciBsaXN0LFxuICAgICAgcHJvcGFnYXRpb25fY2hlY2sgbGlzdCxcbiAgICAgIEIuYmxhY2tib2FyZFxuICAgICAgKiB1cGRhdGVfb3JkZXIgbGlzdFxuICAgICAgKiBwcm9wYWdhdGlvbl9jaGVjayBsaXN0XG4gICAgICAqIEIuYXNzaWduX3Jlc3VsdCApXG4gICAgQi5QQi5DSS5Qby5LLkgucXVhdGVybmFyeVxuXG4gIHZhbCBwcm9wYWdhdGUgOlxuICAgICggQi5ibGFja2JvYXJkLFxuICAgICAgcHJvcGFnYXRpb25fY2hlY2ssXG4gICAgICB1cGRhdGVfb3JkZXIgbGlzdCxcbiAgICAgIHByb3BhZ2F0aW9uX2NoZWNrIGxpc3QsXG4gICAgICBCLmJsYWNrYm9hcmRcbiAgICAgICogdXBkYXRlX29yZGVyIGxpc3RcbiAgICAgICogcHJvcGFnYXRpb25fY2hlY2sgbGlzdFxuICAgICAgKiBCLmFzc2lnbl9yZXN1bHQgKVxuICAgIEIuUEIuQ0kuUG8uSy5ILnF1YXRlcm5hcnlcbmVuZFxuXG5tb2R1bGUgUHJvcGFnYXRpb25faGV1cmlzdGljIDogQmxhY2tib2FyZF93aXRoX2hldXJpc3RpYyA9IHN0cnVjdFxuICBtb2R1bGUgQiA6IEJsYWNrYm9hcmQuQmxhY2tib2FyZCA9IEJsYWNrYm9hcmQuQmxhY2tib2FyZFxuXG4gIGxldCB3YXJuIHBhcmFtZXRlciBlcnJvciBwb3MgPyhtZXNzYWdlID0gXCJcIikgZXhuIGRlZmF1bHQgPVxuICAgIEV4Y2VwdGlvbi53YXJuXG4gICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBwb3Mgfm1lc3NhZ2UgZXhuIGRlZmF1bHRcblxuICB0eXBlIHVwZGF0ZV9vcmRlciA9XG4gICAgfCBLZWVwX2V2ZW50IG9mIEIuUEIuc3RlcF9pZFxuICAgIHwgRGlzY2FyZF9ldmVudCBvZiBCLlBCLnN0ZXBfaWRcbiAgICB8IEN1dF9ldmVudCBvZiBCLlBCLnN0ZXBfaWRcbiAgICB8IFJlZmluZV92YWx1ZV9hZnRlciBvZiBCLmV2ZW50X2Nhc2VfYWRkcmVzcyAqIEIuUEIucHJlZGljYXRlX3ZhbHVlXG4gICAgfCBSZWZpbmVfdmFsdWVfYmVmb3JlIG9mIEIuZXZlbnRfY2FzZV9hZGRyZXNzICogQi5QQi5wcmVkaWNhdGVfdmFsdWVcbiAgICB8IFNraXBcblxuICBsZXQgZHVtbXlfdXBkYXRlX29yZGVyID0gU2tpcFxuXG4gIHR5cGUgcHJvcGFnYXRpb25fY2hlY2sgPVxuICAgIHwgUHJvcGFnYXRlX3VwIG9mIEIuZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgfCBQcm9wYWdhdGVfZG93biBvZiBCLmV2ZW50X2Nhc2VfYWRkcmVzc1xuXG4gIGxldCBfcHJpbnRfb3V0cHV0IGxvZyB4ID1cbiAgICBpZiBCLmlzX2ZhaWxlZCB4IHRoZW5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJGQUlMRURcIlxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHggdGhlblxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIklHTk9SRURcIlxuICAgIGVsc2VcbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJTVUNDRVNTXCJcblxuICBsZXQgZm9yY2VkX2V2ZW50cyBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCBsaXN0ID0gQi5mb3JjZWRfZXZlbnRzIGJsYWNrYm9hcmQgaW5cbiAgICAoIGVycm9yLFxuICAgICAgbG9nX2luZm8sXG4gICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgKGZ1biAobCwgaW5mbykgLT5cbiAgICAgICAgICBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IEtlZXBfZXZlbnQgeCkgKExpc3QucmV2IGwpLCBsLCBpbmZvKVxuICAgICAgICAoTGlzdC5yZXYgbGlzdCkgKVxuXG4gIGxldCBmb3JiaWRkZW5fZXZlbnRzIF9wYXJhbXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0ID1cbiAgICBlcnJvciwgbG9nX2luZm8sIExpc3QucmV2X21hcCAoZnVuIHggLT4gQ3V0X2V2ZW50IHgpIChMaXN0LnJldiBsaXN0KVxuXG4gIGxldCBnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnRfb25fcGlkIGZpcnN0IGxhc3Qgc3VjYyBzdG9wIHBhcmFtZXRlciBoYW5kbGVyXG4gICAgICBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHBfaWQgbGV2ZWwgPVxuICAgIGxldCBrX2luaXQgPSBmaXJzdCBibGFja2JvYXJkIHBfaWQgaW5cbiAgICBsZXQga19lbmQgPSBsYXN0IGJsYWNrYm9hcmQgcF9pZCBpblxuICAgIG1hdGNoIGtfaW5pdCwga19lbmQgd2l0aFxuICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCBOb25lXG4gICAgfCBTb21lIGksIFNvbWUgaiAtPlxuICAgICAgbGV0IHJlYyBhdXggaSBsb2dfaW5mbyBlcnJvciA9XG4gICAgICAgIGlmIHN0b3AgaSBqIHRoZW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGV2ZW50X2Nhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgICBCLmJ1aWxkX2V2ZW50X2Nhc2VfYWRkcmVzcyBwX2lkIChCLmJ1aWxkX3BvaW50ZXIgaSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV4aXN0ID1cbiAgICAgICAgICAgIEIuZXhpc3RfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggZXhpc3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9zZWlkLCBlaWQsIF90ZXN0LCBfYWN0aW9uKSA9XG4gICAgICAgICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGV2ZWxfb2ZfZXZlbnQgPVxuICAgICAgICAgICAgICBCLmxldmVsX29mX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZWlkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgbGV2ZWxfb2ZfZXZlbnQgPSBsZXZlbCB0aGVuXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgU29tZSBlaWRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYXV4IChzdWNjIGkpIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgfCBTb21lIHRydWUgfCBTb21lIGZhbHNlIC0+IGF1eCAoc3VjYyBpKSBsb2dfaW5mbyBlcnJvclxuICAgICAgICApXG4gICAgICBpblxuICAgICAgYXV4IGkgbG9nX2luZm8gZXJyb3JcblxuICBsZXQgZ2V0X2xhc3RfdW5yZXNvbHZlZF9ldmVudF9vbl9waWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgIGJsYWNrYm9hcmQgcF9pZCBsZXZlbCA9XG4gICAgZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBCLmdldF9sYXN0X2xpbmtlZF9ldmVudFxuICAgICAgQi5nZXRfZmlyc3RfbGlua2VkX2V2ZW50IEIuUEIuZGVjX3N0ZXBfc2hvcnRfaWRcbiAgICAgIChmdW4gaSBqIC0+IGkgPCBqKVxuICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwX2lkIGxldmVsXG5cbiAgbGV0IGdldF9maXJzdF91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgYmxhY2tib2FyZCBwX2lkIGxldmVsID1cbiAgICBnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnRfb25fcGlkIEIuZ2V0X2ZpcnN0X2xpbmtlZF9ldmVudFxuICAgICAgQi5nZXRfbGFzdF9saW5rZWRfZXZlbnQgQi5QQi5pbmNfc3RlcF9zaG9ydF9pZFxuICAgICAgKGZ1biBpIGogLT4gaSA+IGopXG4gICAgICBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHBfaWQgbGV2ZWxcblxuICBsZXQgZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50IGZpcnN0IGxhc3Qgc3VjYyBzdG9wIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICBlcnJvciBibGFja2JvYXJkIGxldmVsID1cbiAgICBsZXQgcmVjIGF1eCBpIGxvZ19pbmZvIGVycm9yID1cbiAgICAgIGlmIHN0b3AgaSBsYXN0IHRoZW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBOb25lXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXhpc3QgPVxuICAgICAgICAgIEIuaXNfc2VsZWN0ZWRfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaSBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGV4aXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGV2ZWxfb2ZfZXZlbnQgPVxuICAgICAgICAgICAgQi5sZXZlbF9vZl9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGlcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGxldmVsX29mX2V2ZW50ID0gbGV2ZWwgdGhlblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBTb21lIGlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhdXggKHN1Y2MgaSkgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgfCBTb21lIHRydWUgfCBTb21lIGZhbHNlIC0+IGF1eCAoc3VjYyBpKSBsb2dfaW5mbyBlcnJvclxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IGZpcnN0IGxvZ19pbmZvIGVycm9yXG5cbiAgbGV0IGdldF9sYXN0X3VucmVzb2x2ZWRfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgbGV2ZWwgPVxuICAgIGdldF9nZW5fdW5yZXNvbHZlZF9ldmVudFxuICAgICAgKEIuUEIuc3RlcF9pZF9vZl9pbnQgKEIuZ2V0X25fZWlkIGJsYWNrYm9hcmQpKVxuICAgICAgQi5QQi56ZXJvX3N0ZXBfaWQgQi5QQi5kZWNfc3RlcF9pZFxuICAgICAgKGZ1biBpIGogLT4gaSA8IGopXG4gICAgICBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGxldmVsXG5cbiAgbGV0IGdldF9maXJzdF91bnJlc29sdmVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGxldmVsID1cbiAgICBnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnQgQi5QQi56ZXJvX3N0ZXBfaWRcbiAgICAgIChCLlBCLnN0ZXBfaWRfb2ZfaW50IChCLmdldF9uX2VpZCBibGFja2JvYXJkKSlcbiAgICAgIEIuUEIuaW5jX3N0ZXBfaWRcbiAgICAgIChmdW4gaSBqIC0+IGkgPiBqKVxuICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsZXZlbFxuXG4gIGxldCBuZXh0X2Nob2ljZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgYm9vbCwgc3RyaW5nID1cbiAgICAgIG1hdGNoIHBhcmFtZXRlci5CLlBCLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICAgICAgfCBOb25lIHwgU29tZSBTdG9yeV9qc29uLkNhdXNhbCAtPiBmYWxzZSwgXCJcIlxuICAgICAgfCBTb21lIFN0b3J5X2pzb24uV2VhayAtPlxuICAgICAgICAoIFBhcmFtZXRlci5kdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmluZ193ZWFrX2NvbXByZXNzaW9uLFxuICAgICAgICAgIFBhcmFtZXRlci54bHN3ZWFrRmlsZU5hbWUgKVxuICAgICAgfCBTb21lIFN0b3J5X2pzb24uU3Ryb25nIC0+XG4gICAgICAgICggUGFyYW1ldGVyLmR1bXBfZ3JpZF9hZnRlcl9icmFuY2hpbmdfZHVyaW5nX3N0cm9uZ19jb21wcmVzc2lvbixcbiAgICAgICAgICBQYXJhbWV0ZXIueGxzc3Ryb25nRmlsZU5hbWUgKVxuICAgIGluXG4gICAgbGV0ICgpID0gUHJpb3JpdHkubl9icmFuY2ggOj0gIVByaW9yaXR5Lm5fYnJhbmNoICsgMSBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgIEIuZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0cmluZ1xuICAgICAgICAgICAgIVByaW9yaXR5Lm5fc3RvcnkgIVByaW9yaXR5Lm5fYnJhbmNoIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICApIGVsc2VcbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIHByaW9yaXR5ID1cbiAgICAgIG1hdGNoIEIuUEIuQ0kuUG8uSy5ILmdldF9wcmlvcml0aWVzIHBhcmFtZXRlciB3aXRoXG4gICAgICB8IFNvbWUgeCAtPiBlcnJvciwgeFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkNvbXByZXNzaW9uIG1vZGUgaGFzIHRvIGJlZW4gc2VsZWN0ZWRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiQ29tcHJlc3Npb24gbW9kZSBoYXMgbm90IGJlZW4gc2VsZWN0ZWRcIikgUHJpb3JpdHkuY2F1c2FsXG4gICAgaW5cbiAgICBsZXQgbl9wX2lkID0gQi5nZXRfbnByZWRpY2F0ZV9pZCBibGFja2JvYXJkIGluXG4gICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICBtYXRjaCBwcmlvcml0eS5Qcmlvcml0eS5jYW5kaWRhdGVfc2V0X29mX2V2ZW50cyB3aXRoXG4gICAgICB8IFByaW9yaXR5LkFsbF9yZW1haW5pbmdfZXZlbnRzIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkFsbF9yZW1haW5pbmdfZXZlbnRzIHN0cmF0ZWd5IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiQWxsIHJlbWFpbmluZyBldmVudHMgc3RyYXRlZ3kgaXMgbm90IGltcGxlbWVudGVkIHlldFwiKSAoKVxuICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHMgLT4gZXJyb3IsICgpXG4gICAgICB8IFByaW9yaXR5LldpcmVfd2l0aF90aGVfbW9zdF9udW1iZXJfb2ZfZXZlbnRzIC0+IGVycm9yLCAoKVxuICAgIGluXG4gICAgbGV0IGJlc3RfcGFpciB4IGEgYiA9XG4gICAgICBtYXRjaCB4LlByaW9yaXR5LmNhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzIHdpdGhcbiAgICAgIHwgUHJpb3JpdHkuQWxsX3JlbWFpbmluZ19ldmVudHNcbiAgICAgIHwgUHJpb3JpdHkuV2lyZV93aXRoX3RoZV9tb3N0X251bWJlcl9vZl9ldmVudHMgLT5cbiAgICAgICAgVG9vbHMubWF4X3Bvc19pbnRfbm90X3plcm8gYSBiXG4gICAgICB8IFByaW9yaXR5LldpcmVfd2l0aF90aGVfbGVhc3RfbnVtYmVyX29mX2V2ZW50cyAtPlxuICAgICAgICBUb29scy5taW5fcG9zX2ludF9ub3RfemVybyBhIGJcbiAgICBpblxuICAgIGxldCBnZXRfdW5yZXNvbHZlZF9ldmVudCB4IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcF9pZFxuICAgICAgICBsZXZlbCA9XG4gICAgICBtYXRjaCB4LlByaW9yaXR5LnRyeV90b19yZW1vdmVfZmlyc3Qgd2l0aFxuICAgICAgfCBQcmlvcml0eS5MYXRlX2V2ZW50cyAtPlxuICAgICAgICAobWF0Y2ggeC5Qcmlvcml0eS5jYW5kaWRhdGVfc2V0X29mX2V2ZW50cyB3aXRoXG4gICAgICAgIHwgUHJpb3JpdHkuQWxsX3JlbWFpbmluZ19ldmVudHMgLT5cbiAgICAgICAgICBnZXRfbGFzdF91bnJlc29sdmVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGxldmVsXG4gICAgICAgIHwgUHJpb3JpdHkuV2lyZV93aXRoX3RoZV9tb3N0X251bWJlcl9vZl9ldmVudHNcbiAgICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHMgLT5cbiAgICAgICAgICBnZXRfbGFzdF91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgYmxhY2tib2FyZCBwX2lkIGxldmVsKVxuICAgICAgfCBQcmlvcml0eS5FYXJseV9ldmVudHMgLT5cbiAgICAgICAgKG1hdGNoIHguUHJpb3JpdHkuY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgd2l0aFxuICAgICAgICB8IFByaW9yaXR5LkFsbF9yZW1haW5pbmdfZXZlbnRzIC0+XG4gICAgICAgICAgZ2V0X2ZpcnN0X3VucmVzb2x2ZWRfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX21vc3RfbnVtYmVyX29mX2V2ZW50c1xuICAgICAgICB8IFByaW9yaXR5LldpcmVfd2l0aF90aGVfbGVhc3RfbnVtYmVyX29mX2V2ZW50cyAtPlxuICAgICAgICAgIGdldF9maXJzdF91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgYmxhY2tib2FyZCBwX2lkIGxldmVsKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsaXN0ID1cbiAgICAgIGlmIG5fcF9pZCA9IDAgdGhlblxuICAgICAgICBlcnJvciwgW11cbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcmVjIHRyeV9sZXZlbCBsZXZlbF9vcHQgZXJyb3IgPVxuICAgICAgICAgIG1hdGNoIGxldmVsX29wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBbXVxuICAgICAgICAgIHwgU29tZSBsZXZlbCAtPlxuICAgICAgICAgICAgbGV0IHJlYyBhdXggbGV2ZWwgbl9wX2lkIHN0ZXAgYmVzdCA9XG4gICAgICAgICAgICAgIGlmIHN0ZXAgPSBuX3BfaWQgdGhlblxuICAgICAgICAgICAgICAgIGJlc3RcbiAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0IGdyYWRlID1cbiAgICAgICAgICAgICAgICAgIEIuZ2V0X25fdW5yZXNvbHZlZF9ldmVudHNfb2ZfcGlkX2J5X2xldmVsIGJsYWNrYm9hcmQgc3RlcFxuICAgICAgICAgICAgICAgICAgICBsZXZlbFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYXV4IGxldmVsIG5fcF9pZCAoc3RlcCArIDEpXG4gICAgICAgICAgICAgICAgICAoYmVzdF9wYWlyIHByaW9yaXR5IGJlc3QgKGdyYWRlLCBzdGVwKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBuLCBwX2lkID1cbiAgICAgICAgICAgICAgYXV4IGxldmVsIG5fcF9pZCAxXG4gICAgICAgICAgICAgICAgKEIuZ2V0X25fdW5yZXNvbHZlZF9ldmVudHNfb2ZfcGlkX2J5X2xldmVsIGJsYWNrYm9hcmQgMCBsZXZlbCwgMClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgICAgIHRyeV9sZXZlbCAoUHJpb3JpdHkubG93ZXIgbGV2ZWwpIGVycm9yXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBfbG9nX2luZm8sIGV2ZW50X2lkID1cbiAgICAgICAgICAgICAgICBnZXRfdW5yZXNvbHZlZF9ldmVudCBwcmlvcml0eSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBwX2lkIGxldmVsXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIGV2ZW50X2lkIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgbGV0IGxvZyA9IEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgaW5cblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgICAoXCJBbiBlbXB0eSB3aXJlIGhhcyBiZWVuIHNlbGVjdGVkXCIgXiBzdHJpbmdfb2ZfaW50IG4pXG4gICAgICAgICAgICAgICAgICAgIChGYWlsdXJlIFwiQW4gZW1wdHkgd2lyZSBoYXMgYmVlbiBzZWxlY3RlZFwiKSAoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJFUlJPUiAyNDk6ICVzXFxuXCJcbiAgICAgICAgICAgICAgICAgICAgKFByaW9yaXR5LnN0cmluZ19vZl9sZXZlbCBsZXZlbClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHRyeV9sZXZlbCAoUHJpb3JpdHkubG93ZXIgbGV2ZWwpIGVycm9yXG4gICAgICAgICAgICAgIHwgU29tZSBldmVudF9pZCAtPlxuICAgICAgICAgICAgICAgIGVycm9yLCBbIERpc2NhcmRfZXZlbnQgZXZlbnRfaWQ7IEtlZXBfZXZlbnQgZXZlbnRfaWQgXVxuICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICB0cnlfbGV2ZWwgKFNvbWUgUHJpb3JpdHkuaGlnaGVzdCkgZXJyb3JcbiAgICAgIClcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgbGlzdFxuXG4gIGxldCBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF8sIGVpZCwgXywgXykgPVxuICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgXCJFdmVudDogJWksIFByZWRpY2F0ZTogJWlcIiAoQi5QQi5pbnRfb2Zfc3RlcF9pZCBlaWQpXG4gICAgICAgIChCLnByZWRpY2F0ZV9pZF9vZl9jYXNlX2FkZHJlc3MgY2FzZSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sICgpXG5cbiAgbGV0IHByb3BhZ2F0ZV9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzcyBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sID1cbiAgICAgIEIuZXhpc3RfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIGluXG4gICAgbWF0Y2ggYm9vbCB3aXRoXG4gICAgfCBTb21lIGZhbHNlIC0+XG4gICAgICAoKiB0aGUgY2FzZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGJsYWNrYm9hcmQsIG5vdGhpbmcgdG8gYmUgZG9uZSAqKVxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIEIuc3VjY2VzcylcbiAgICB8IFNvbWUgdHJ1ZSB8IE5vbmUgLT5cbiAgICAgICgqIHdlIGtub3cgdGhhdCB0aGUgcGFpciAodGVzdC9hY3Rpb24pIGNhbiBiZWVuIGV4ZWN1dGVkICopXG4gICAgICBsZXQgY2FzZV9hZGRyZXNzID1cbiAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2VfdmFsdWUgPVxuICAgICAgICBCLmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICBjYXNlX3ZhbHVlXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbmV4dF9ldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJvb2wyID1cbiAgICAgICAgQi5leGlzdF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIChtYXRjaCBib29sMiB3aXRoXG4gICAgICB8IFNvbWUgZmFsc2UgLT5cbiAgICAgICAgKCogVGhlIGJsYWNrYm9hcmQgaXMgaW5jb25zaXN0ZW50OiAqKVxuICAgICAgICAoKiBQb2ludGVycyBzaG91bGQgbm90IHBvaW50IHRvIHJlbW92ZWQgZXZlbnRzLiopXG4gICAgICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgIH5tZXNzYWdlOlwiaW5jb25zaXN0ZW50IHBvaW50ZXJzIGluIGJsYWNrYm9hcmRcIlxuICAgICAgICAgICAgKEZhaWx1cmUgXCJpbmNvbnNpc3RlbnQgcG9pbnRlcnMgaW4gYmxhY2tib2FyZFwiKSAoKVxuICAgICAgICBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgQi5zdWNjZXNzKSApXG4gICAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgICAoKiBuZXh0IGV2ZW50IGlzIHNlbGVjdGVkICopXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfbmV4dF9zZWlkLCBfbmV4dF9laWQsIG5leHRfdGVzdCwgbmV4dF9hY3Rpb24pID1cbiAgICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgbmV4dF9ldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlX3ZhbHVlID1cbiAgICAgICAgICBCLmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIGNhc2VfdmFsdWVcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIEIuUEIuaXNfdW5rbm93biBuZXh0X3Rlc3QsIEIuUEIuaXNfdW5rbm93biBuZXh0X2FjdGlvbiB3aXRoXG4gICAgICAgIHwgdHJ1ZSwgdHJ1ZSAtPlxuICAgICAgICAgICgqIG5vIHRlc3QsIG5vIGFjdGlvbiBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gKGNhc2UgMSk6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgaXMga2VwdCBidXQgaGFzIG5vIHRlc3QgYW5kIG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJWYWx1ZSBpcyBwcm9wYWdhdGVkIGFmdGVyIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBuZXh0IGV2ZW50IGlzIHNlbGVjdGVkICopXG4gICAgICAgICAgKCogbm8gdGVzdCwgbm8gYWN0aW9uIGluIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIHZhbHVlIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDEgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2FmdGVyIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICB8IHRydWUsIGZhbHNlIC0+XG4gICAgICAgICAgKCogbm8gdGVzdCwgYnV0IGFuIGFjdGlvbiBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDIpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IGlzIGtlcHQsIG5vIHRlc3QsIGJ1dCBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiTm90aGluZyB0byBiZSBkb25lXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBuZXh0IGV2ZW50IGlzIHNlbGVjdGVkICopXG4gICAgICAgICAgKCogbm8gdGVzdCwgYnV0IGFuIGFjdGlvbiBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgKCogbm90aGluZyB0byBwcm9wYWdhdGUgZG93bndhcmQqKVxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gMiBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBCLnN1Y2Nlc3MpIClcbiAgICAgICAgfCBmYWxzZSwgdHJ1ZSAtPlxuICAgICAgICAgICgqIG5vIGFjdGlvbiwgYnV0IGEgdGVzdCBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHByZWRpY2F0ZV92YWx1ZSBuZXh0X3Rlc3QgdGhlbiAoXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb25qID1cbiAgICAgICAgICAgICAgQi5QQi5jb25qIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSAzKTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IGlzIGtlcHQsIGEgdGVzdCBidXQgbm8gYWN0aW9uIFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJOZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGUgbmV3IHByZWRpY2F0ZV92YWx1ZSBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBjb25qXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIiBiZWZvcmUgYW5kIGFmdGVyIG5leHQgZXZlbnRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogbmV4dCBldmVudCBpcyBzZWxlY3RlZCAqKVxuICAgICAgICAgICAgKCogbm8gYWN0aW9uLCBidXQgYSB0ZXN0IGluIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgbWVldCBvZiB0aGUgdGVzdCBhbmQgdGhlIHZhbHVlIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAzIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29uailcbiAgICAgICAgICAgICAgICA6OiBSZWZpbmVfdmFsdWVfYWZ0ZXIgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBjb25qKVxuICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBhbmQgdGhlIHZhbHVlIGFyZSBpbmNvbXBhdGlibGUgKilcbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSA0KTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IGlzIGtlcHQsIGEgdGVzdCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIk5leHQgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgbmV4dF90ZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIkN1dFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gNCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIG5leHQgZXZlbnQgaXMgc2VsZWN0ZWQgKilcbiAgICAgICAgICAgICgqIG5vIGFjdGlvbiwgYnV0IGEgdGVzdCBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgKCogd2UgY3V0IHRoZSBleHBsb3JhdGlvbiAqKVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICAgICAgKVxuICAgICAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgICAgICgqdGhlcmUgaXMgYSB0ZXN0IGFuZCBhbiBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgcHJlZGljYXRlX3ZhbHVlIG5leHRfdGVzdCB0aGVuIChcbiAgICAgICAgICAgICgqIHRoZSB0ZXN0IGFuZCB0aGUgdmFsdWUgYXJlIGNvbXBhdGlibGUgKilcbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNvbmogPVxuICAgICAgICAgICAgICBCLlBCLmNvbmogcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbmV4dF90ZXN0XG4gICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDUpOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgaXMga2VwdCwgYSB0ZXN0IGJ1dCBubyBhY3Rpb25cIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBBY3Rpb246XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlIG5ldyBwcmVkaWNhdGVfdmFsdWUgXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgY29ualxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIgYmVmb3JlIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biA1IGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogbmV4dCBldmVudCBpcyBzZWxlY3RlZCAqKVxuICAgICAgICAgICAgKCogYW4gYWN0aW9uIGFuZCBhIHRlc3QgaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgKCogd2UgcHJvcGFnYXRlIHRoZSBtZWV0IG9mIHRoZSB0ZXN0IGFuZCB0aGUgdmFsdWUgYmVmb3JlIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9iZWZvcmUgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBjb25qKVxuICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAoKiB0ZXN0IGFuZCB2YWx1ZSBhcmUgaW5jb21wYXRpYmxlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgNik6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBpcyBrZXB0LCBhIHRlc3QsIGFuIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJOZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiTmV4dCBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIG5leHRfYWN0aW9uXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIkN1dFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gNiBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIG5leHQgZXZlbnQgaXMgc2VsZWN0ZWQgKilcbiAgICAgICAgICAgICgqIGFuIGFjdGlvbiBhbmQgYSB0ZXN0IGluIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAoKiB3ZSBjdXQgdGhlIGV4cGxvcmF0aW9uICopXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIEIuZmFpbClcbiAgICAgICAgICApKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIGV2ZW50IGlzIHBsYXllZCBvciBub3QgKilcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9uZXh0X3NlaWQsIG5leHRfZWlkLCBuZXh0X3Rlc3QsIG5leHRfYWN0aW9uKSA9XG4gICAgICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBCLlBCLmlzX3Vua25vd24gbmV4dF9hY3Rpb24gd2l0aFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAoKiB0aGVyZSBpcyBubyBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAobWF0Y2ggQi5QQi5pc191bmtub3duIG5leHRfdGVzdCB3aXRoXG4gICAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgICAoKnRoZXJlIGlzIG5vIHRlc3QgaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSA3KTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIG5vIHRlc3QsIG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJUaGUgdmFsdWUgaXMgcHJvcGFnYXRlZCBhZnRlciBhbmQgYmVmb3JlIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlxcblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biA3IGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgKCp0aGVyZSBpcyBubyB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB0aGVyZSBpcyBubyBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgdmFsdWUgYWZ0ZXIgdGhlIG5leHQgZXZlbnQqKVxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYWZ0ZXIgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBwcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgICAgKCogdGhlcmUgaXMgYSB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgbmV4dF90ZXN0IHByZWRpY2F0ZV92YWx1ZSB0aGVuIChcbiAgICAgICAgICAgICAgKCogdGVzdCBhbmQgcHJlZGljYXRlX3ZhbHVlIGFyZSBjb21wYXRpYmxlICopXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSA4KTpcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBuZXh0IGV2ZW50IGlzIGtlcHRcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYSB0ZXN0LCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiVGhlIHZhbHVlIFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIiBpcyBwcm9wYWdhdGVkIGFmdGVyIGFuZCBiZWZvcmUgdGhlIG5leHQgZXZlbnRcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biA4IGxvZ19pbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIGV2ZW50IGlzIHBsYXllZCBvciBub3QgKilcbiAgICAgICAgICAgICAgKCogdGhlcmUgaXMgYSB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICgqIHRoZXJlIGlzIG5vIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgdmFsdWUgYWZ0ZXIgdGhlIG5leHQgZXZlbnQqKVxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9hZnRlciAobmV4dF9ldmVudF9jYXNlX2FkZHJlc3MsIHByZWRpY2F0ZV92YWx1ZSlcbiAgICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSA5KTpcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBuZXh0IGV2ZW50IGlzIGtlcHRcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYSB0ZXN0LCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiV2UgZGlzY2FyZCB0aGUgbmV4dCBldmVudCAoJWkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5pbnRfb2Zfc3RlcF9pZCBuZXh0X2VpZClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gOSBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBldmVudCBpcyBwbGF5ZWQgb3Igbm90ICopXG4gICAgICAgICAgICAgICgqIHRoZXJlIGlzIGEgdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBubyBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICAgKCogd2UgZGlzY2FyZCB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgIERpc2NhcmRfZXZlbnQgbmV4dF9laWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgICgqIHRoZXJlIGlzIGFuIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgIGlmIG5vdCAoQi5QQi5jb21wYXRpYmxlIG5leHRfYWN0aW9uIHByZWRpY2F0ZV92YWx1ZSkgdGhlbiAoXG4gICAgICAgICAgICAoKiB0aGUgYWN0aW9uIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgICAgIEIuUEIuZGlzanVuY3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgMTApOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBuZXh0IGV2ZW50IGlzIGtlcHRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYW4gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBuZXh0X2FjdGlvblxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJUaGUgdmFsdWUgXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiIGlzIHByb3BhZ2F0ZWQgYWZ0ZXIgdGhlIG5leHQgZXZlbnRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDEwIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgKCogdGhlcmUgaXMgYW4gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB0aGUgYWN0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgam9pbiBvZiB0aGUgdmFsdWUgYW5kIHRoZSBhY3Rpb24gYWZ0ZXIgdGhlIG5leHQgZXZlbnQqKVxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYWZ0ZXJcbiAgICAgICAgICAgICAgICAgIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICgqdGhlIGFjdGlvbiBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgICAgIEIuUEIuZGlzanVuY3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXRjaCBCLlBCLmlzX3Vua25vd24gbmV4dF90ZXN0IHdpdGhcbiAgICAgICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBubyB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSAxMSk6XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIG5vIHRlc3QsIGJ1dCB0aGVyZSBpcyBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0X2FjdGlvblxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiVGhlIHZhbHVlIFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiIGlzIHByb3BhZ2F0ZWQgYWZ0ZXIgdGhlIG5leHQgZXZlbnRcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAxMSBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBldmVudCBpcyBwbGF5ZWQgb3Igbm90ICopXG4gICAgICAgICAgICAgICgqIHRoZXJlIGlzIG5vIHRlc3QgaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgKCogdGhlcmUgaXMgYW4gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICgqIHRoZSBhY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIGpvaW4gb2YgdGhlIHZhbHVlIGFuZCB0aGUgYWN0aW9uIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYWZ0ZXJcbiAgICAgICAgICAgICAgICAgICAgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZSlcbiAgICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIG5leHRfdGVzdCBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDEyKTpcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIG5leHQgZXZlbnQgaXMga2VwdFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBhIHRlc3QsIGJ1dCB0aGVyZSBpcyBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGUgdmFsdWUgXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiBpcyBwcm9wYWdhdGVkIGFmdGVyIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDEyXG4gICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBldmVudCBpcyBwbGF5ZWQgb3Igbm90ICopXG4gICAgICAgICAgICAgICAgKCogdGhlcmUgaXMgYSB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICAgKCogdGhlcmUgaXMgYW4gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICgqIHRoZSBhY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgam9pbiBvZiB0aGUgdmFsdWUgYW5kIHRoZSBhY3Rpb24gYWZ0ZXIgdGhlIG5leHQgZXZlbnQqKVxuICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2FmdGVyXG4gICAgICAgICAgICAgICAgICAgICAgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgMTMpOlwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGEgdGVzdCwgYnV0IHRoZXJlIGlzIGFuIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF90ZXN0XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0X2FjdGlvblxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk5leHQgZXZlbnQgKCVpKSBpcyBkaXNjYXJkZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuaW50X29mX3N0ZXBfaWQgbmV4dF9laWQpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAxM1xuICAgICAgICAgICAgICAgICAgICBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZXJlIGlzIGEgdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZXJlIGlzIGFuIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAgICAgKCogd2UgZGlzY2FyZCB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgRGlzY2FyZF9ldmVudCBuZXh0X2VpZCA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKSkpXG5cbiAgbGV0IHJlYyBsYXN0X2NoYW5jZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBwcmVkaWNhdGVfdmFsdWUgZXZlbnRfY2FzZV9hZGRyZXNzID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sID1cbiAgICAgIEIuZXhpc3RfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIGluXG4gICAgbWF0Y2ggYm9vbCB3aXRoXG4gICAgfCBTb21lIGZhbHNlIC0+IGVycm9yLCBmYWxzZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9zZWlkLCBfZWlkLCBfdGVzdCwgYWN0aW9uKSA9XG4gICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICBpblxuICAgICAgaWYgQi5QQi5pc191bmtub3duIGFjdGlvbiB0aGVuIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmV2aWV3X2Nhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfY2FzZV92YWx1ZSA9XG4gICAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJldmlld19jYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgcHJldmlld19jYXNlX3ZhbHVlXG4gICAgICAgIGluXG4gICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICAgICAgICBCLmlzX2JvdW5kYXJ5IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBib29sIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va191cF9jYXNlIDEgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbm90IChCLlBCLmlzX3VuZGVmaW5lZCBwcmVkaWNhdGVfdmFsdWUpLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgbGFzdF9jaGFuY2VfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWUgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va191cF9jYXNlIDIgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCB0cnVlLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICApXG4gICAgICApIGVsc2UgaWYgQi5QQi5tb3JlX3JlZmluZWQgYWN0aW9uIHByZWRpY2F0ZV92YWx1ZSB0aGVuXG4gICAgICAgIGVycm9yLCBmYWxzZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9sb29rX3VwX2Nhc2UgMyBsb2dfaW5mbyBpblxuICAgICAgICBlcnJvciwgdHJ1ZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIClcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfc2VpZCwgX2VpZCwgX3Rlc3QsIGFjdGlvbikgPVxuICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGlmIEIuUEIubW9yZV9yZWZpbmVkIGFjdGlvbiBwcmVkaWNhdGVfdmFsdWUgdGhlblxuICAgICAgICBlcnJvciwgZmFsc2UsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmV2aWV3X2Nhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfY2FzZV92YWx1ZSA9XG4gICAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJldmlld19jYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgcHJldmlld19jYXNlX3ZhbHVlXG4gICAgICAgIGluXG4gICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSBwcmVkaWNhdGVfdmFsdWUgdGhlblxuICAgICAgICAgIGxhc3RfY2hhbmNlX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZSBwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va191cF9jYXNlIDQgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCB0cnVlLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICApXG4gICAgICApXG5cbiAgbGV0IGxhc3RfY2hhbmNlX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcHJlZGljYXRlX3ZhbHVlXG4gICAgICBhZGRyZXNzID1cbiAgICBpZiBCLlBCLmlzX3Vua25vd24gcHJlZGljYXRlX3ZhbHVlIHRoZW5cbiAgICAgIGVycm9yLCBmYWxzZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICBlbHNlXG4gICAgICBsYXN0X2NoYW5jZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICBhZGRyZXNzXG5cbiAgbGV0IGxhc3RfY2hhbmNlX3VwID1cbiAgICBpZiBsb29rX3VwX2Zvcl9iZXR0ZXJfY3V0IHRoZW5cbiAgICAgIGxhc3RfY2hhbmNlX3VwXG4gICAgZWxzZVxuICAgICAgZnVuIF8gXyBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIF8gXyAtPlxuICAgIGVycm9yLCBmYWxzZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgcHJvcGFnYXRlX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzcyBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sID1cbiAgICAgIEIuZXhpc3RfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIGluXG4gICAgbWF0Y2ggYm9vbCB3aXRoXG4gICAgfCBTb21lIGZhbHNlIC0+XG4gICAgICAoKiB0aGUgY2FzZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGJsYWNrYm9hcmQsIG5vdGhpbmcgdG8gYmUgZG9uZSAqKVxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIEIuc3VjY2VzcylcbiAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgKCogd2Uga25vdyB0aGF0IHRoZSBwYWlyICh0ZXN0L2FjdGlvbikgaGFzIGJlZW4gZXhlY3V0ZWQgKilcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfc2VpZCwgX2VpZCwgdGVzdCwgYWN0aW9uKSA9XG4gICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICBpblxuICAgICAgbGV0IGNhc2VfYWRkcmVzcyA9XG4gICAgICAgIEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlX3ZhbHVlID1cbiAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgY2FzZV92YWx1ZVxuICAgICAgaW5cbiAgICAgIGlmIEIuUEIuaXNfdW5rbm93biBhY3Rpb24gdGhlblxuICAgICAgICAoKiBubyBhY3Rpb24sIHdlIGtlZXAgb24gcHJvcGFnYXRpbmcgd2l0aCB0aGUgY29uam9uY3Rpb24gb2YgdGhlIHRlc3Qgb2YgdGhlIHZhbHVlICopXG4gICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSB0ZXN0IHByZWRpY2F0ZV92YWx1ZSB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBuZXdfdmFsdWUgPVxuICAgICAgICAgICAgQi5QQi5jb25qIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRlc3QgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDEpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJUaGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsIHRoZXJlIGlzIG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUmVmaW5lIGJlZm9yZSB0aGUgZXZlbnQgKGJlZm9yZSkgd2l0aCB0aGUgc3RhdGUgXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBuZXdfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9iZWZvcmUgKGV2ZW50X2Nhc2VfYWRkcmVzcywgbmV3X3ZhbHVlKVxuICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMik6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlRoZSBldmVudCBiZWZvcmUgaXMga2VwdCwgdGhlcmUgaXMgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQ3V0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAyIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIEIuZmFpbClcbiAgICAgICAgKVxuICAgICAgZWxzZSBpZiBCLlBCLm1vcmVfcmVmaW5lZCBhY3Rpb24gcHJlZGljYXRlX3ZhbHVlIHRoZW5cbiAgICAgICAgaWYgQi5QQi5pc191bmRlZmluZWQgdGVzdCB0aGVuIChcbiAgICAgICAgICAoKnRoZSB3aXJlIGhhcyBqdXN0IGJlIGNyZWF0ZWQsIG5vdGhpbmcgdG8gYmUgZG9uZSAqKVxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMyk6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlRoZSBldmVudCBiZWZvcmUgaXMga2VwdCwgdGhlcmUgaXMgYW4gYWN0aW9uIGFuZCBhIHRlc3RcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJOb3RoaW5nIHRvIGJlIGRvbmVcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDMgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgQi5zdWNjZXNzKSApXG4gICAgICAgICkgZWxzZSBpZlxuICAgICAgICAgICAgKCp3ZSBrbm93IHRoYXQgdGhlIHdpcmUgd2FzIGRlZmluZWQgYmVmb3JlKilcbiAgICAgICAgICAgIEIuUEIuY29tcGF0aWJsZSB0ZXN0IEIuUEIuZGVmaW5lZFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0YXRlID1cbiAgICAgICAgICAgIEIuUEIuY29uaiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0ZXN0IEIuUEIuZGVmaW5lZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSA0KTpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiVGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LCB0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlJlZmluZSBiZWZvcmUgdGhlIGV2ZW50IChiZWZvcmUpIHdpdGggdGhlIHN0YXRlIFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgc3RhdGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDQgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAoZXZlbnRfY2FzZV9hZGRyZXNzLCBzdGF0ZSlcbiAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDUpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJUaGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQ3V0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCA1IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIEIuZmFpbClcbiAgICAgICAgKVxuICAgICAgZWxzZSAoXG4gICAgICAgICgqVGhlIGV2ZW50IGhhcyB0byBiZSBkaXNjYXJkZWQgd2hpY2ggaXMgYWJzdXJkICopXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgNik6XCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJUaGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsIHRoZXJlIGlzIGFuIGFjdGlvblwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJDdXRcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICBpblxuICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgNiBsb2dfaW5mb1xuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIEIuZmFpbClcbiAgICAgIClcbiAgICB8IE5vbmUgLT5cbiAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIHBhaXIgKHRlc3QvYWN0aW9uKSBoYXMgYmVlbiBleGVjdXRlZCAqKVxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9zZWlkLCBlaWQsIHRlc3QsIGFjdGlvbikgPVxuICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGxldCBjYXNlX2FkZHJlc3MgPVxuICAgICAgICBCLmNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIGNhc2VfdmFsdWVcbiAgICAgIGluXG4gICAgICAobWF0Y2ggQi5QQi5pc191bmtub3duIGFjdGlvbiB3aXRoXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgKG1hdGNoIEIuUEIuaXNfdW5rbm93biB0ZXN0IHdpdGhcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSA3KTpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBuZWl0aGVyIGEgdGVzdCwgbm9yICBhY3Rpb24gXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDcgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAoZXZlbnRfY2FzZV9hZGRyZXNzLCBwcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgdGVzdCBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDgpOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBhICB0ZXN0LCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlJlZmluZSBiZWZvcmUgdGhlIGV2ZW50IChiZWZvcmUpIHdpdGggdGhlIHN0YXRlIFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCA4IGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChldmVudF9jYXNlX2FkZHJlc3MsIHByZWRpY2F0ZV92YWx1ZSlcbiAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSA5KTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGEgIHRlc3QsIGJ1dCBubyBhY3Rpb25cIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiRXZlbnQgYmVmb3JlICglaSkgaXMgZGlzY2FyZGVkXCIgKEIuUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCA5IGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBEaXNjYXJkX2V2ZW50IGVpZCA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICApKVxuICAgICAgfCBmYWxzZSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgQi5mb2xsb3dfcG9pbnRlcl91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHByZXZpZXdfY2FzZV9hZGRyZXNzID1cbiAgICAgICAgICBCLmNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19jYXNlX3ZhbHVlID1cbiAgICAgICAgICBCLmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmV2aWV3X2Nhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICBwcmV2aWV3X2Nhc2VfdmFsdWVcbiAgICAgICAgaW5cbiAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlIHByZWRpY2F0ZV92YWx1ZSB0aGVuXG4gICAgICAgICAgaWYgQi5QQi5tb3JlX3JlZmluZWQgYWN0aW9uIHByZWRpY2F0ZV92YWx1ZSB0aGVuIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICBsYXN0X2NoYW5jZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxMCk6XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIiB0aGVyZSBpcyBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyBpcyB0aGUgb25seSBvcHBvcnR1bml0eSB0byBzZXQgdXAgdGhlIHdpcmUsIHdlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIGtlZXAgdGhlIGV2ZW50XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDEwIGxvZ19pbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgS2VlcF9ldmVudCBlaWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgbWF0Y2ggQi5QQi5pc191bmtub3duIHRlc3Qgd2l0aFxuICAgICAgICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBuZXdfcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgICAgICAgICAgIEIuUEIuZGlzanVuY3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGVzdFxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTEpOlwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYW4gYWN0aW9uLCBidXQgbm8gdGVzdFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlJlZmluZSBiZWZvcmUgdGhlIGV2ZW50IChiZWZvcmUpIHdpdGggdGhlIHN0YXRlIFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld19wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxMSBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChldmVudF9jYXNlX2FkZHJlc3MsIG5ld19wcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgdGVzdCBwcmVkaWNhdGVfdmFsdWUgdGhlblxuICAgICAgICAgICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHRlc3QgcHJldmlld19wcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5ld190ZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLmNvbmogcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld19wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbmV3X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5kaXNqdW5jdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBuZXdfdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTIpOlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgdGhlcmUgaXMgYW4gYWN0aW9uIGFuZCBhIHRlc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IFRlc3Q6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlJlZmluZSBiZWZvcmUgdGhlIGV2ZW50IChiZWZvcmUpIHdpdGggdGhlIHN0YXRlIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxMlxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudF9jYXNlX2FkZHJlc3MsIG5ld19wcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDEzKTpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNjYXJkIHRoZSBldmVudCBiZWZvcmUgKCVpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMTNcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgRGlzY2FyZF9ldmVudCBlaWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldicgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLmRpc2p1bmN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlIHRlc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDE0KTpcIlxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OlwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2J1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxNFxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChldmVudF9jYXNlX2FkZHJlc3MsIHByZXYnKVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxNSk6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIgdGhlcmUgaXMgYW4gYWN0aW9uIGFuZCBtYXliZSBhIHRlc3RcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIkRpc2NhcmQgdGhlIGV2ZW50IGJlZm9yZSAoJWkpXCIgKEIuUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxNSBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgRGlzY2FyZF9ldmVudCBlaWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgKVxuICAgICAgICBlbHNlIGlmIEIuUEIubW9yZV9yZWZpbmVkIGFjdGlvbiBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxNik6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJQcmV2aW91cyB3aXJlIHN0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJTZWxlY3QgdGhlIGV2ZW50IGJlZm9yZSAoJWkpXCIgKEIuUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDE2IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIEtlZXBfZXZlbnQgZWlkIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxNyk6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJDdXRcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDE3IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIEIuZmFpbClcbiAgICAgICAgKSlcblxuICBsZXQgcHJvcGFnYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hlY2tcbiAgICAgIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3QgPVxuICAgIG1hdGNoIGNoZWNrIHdpdGhcbiAgICB8IFByb3BhZ2F0ZV91cCB4IC0+XG4gICAgICBwcm9wYWdhdGVfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB4XG4gICAgICAgIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICB8IFByb3BhZ2F0ZV9kb3duIHggLT5cbiAgICAgIHByb3BhZ2F0ZV9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgeFxuICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG5cbiAgbGV0IGN1dF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGNhc2VcbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcG9pbnRlcl9uZXh0ID1cbiAgICAgIEIuZm9sbG93X3BvaW50ZXJfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfcHJldmlvdXMgPVxuICAgICAgQi5mb2xsb3dfcG9pbnRlcl91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgICgqIHdlIHJlbW92ZSB0aGUgY2FzZSAqKVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCByZXN1bHQpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChCLmV4aXN0IGNhc2UpXG4gICAgICAgIChCLmJvb2xlYW4gKFNvbWUgZmFsc2UpKSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBCLmlzX2ZhaWxlZCByZXN1bHQgdGhlblxuICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW10sIFtdKSwgcmVzdWx0XG4gICAgZWxzZSBpZiBCLmlzX2lnbm9yZWQgcmVzdWx0IHRoZW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSwgcmVzdWx0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAoQi5uX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBjYXNlKVxuICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICAoKiB3ZSBwbHVnIHBvaW50ZXIgbmV4dCBvZiB0aGUgcHJldmlvdXMgZXZlbnQgKilcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBCLm92ZXJ3cml0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIChCLnBvaW50ZXJfdG9fbmV4dCBwb2ludGVyX3ByZXZpb3VzKVxuICAgICAgICAgIChCLnBvaW50ZXIgcG9pbnRlcl9uZXh0KSBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgKCogd2UgcGx1ZyBwb2ludGVyIHByZXZpb3VzIG9mIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgQi5vdmVyd3JpdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAoQi5wb2ludGVyX3RvX3ByZXZpb3VzIHBvaW50ZXJfbmV4dClcbiAgICAgICAgICAoQi5wb2ludGVyIHBvaW50ZXJfcHJldmlvdXMpXG4gICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSwgcmVzdWx0XG4gICAgKVxuXG4gIGxldCBsb29rX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcm9wYWdhdGVfbGlzdCBjYXNlXG4gICAgICA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF8sIF8sIF8sIGFjdGlvbikgPVxuICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgIGluXG4gICAgaWYgQi5QQi5pc191bmtub3duIGFjdGlvbiB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByb3BhZ2F0ZV9saXN0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgbGlzdF92YWx1ZXMgPSBCLlBCLndlYWtlbmluZyBhY3Rpb24gaW5cbiAgICAgIGxldCBwcm9wYWdhdGVfbGlzdCwgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChwcm9wYWdhdGVfbGlzdCwgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSB2YWx1ZSAtPlxuICAgICAgICAgICAgbGV0IHJlYyBhdXggY2FzZSBib29sIGVycm9yIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgbGV0IGNhID0gQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIGNhc2UgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2EgYmxhY2tib2FyZFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGNhc2VfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgaWYgQi5QQi5tb3JlX3JlZmluZWQgcHJlZGljYXRlX3ZhbHVlIHZhbHVlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfbmV4dCA9XG4gICAgICAgICAgICAgICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBjYXNlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va19kb3duX2Nhc2UgMSBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCBQcm9wYWdhdGVfdXAgcG9pbnRlcl9uZXh0IDo6IHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgKVxuICAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5leHRfY2FzZSA9XG4gICAgICAgICAgICAgICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBjYXNlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBleGlzdCA9XG4gICAgICAgICAgICAgICAgICBCLmV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICBuZXh0X2Nhc2VcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGV4aXN0IHdpdGhcbiAgICAgICAgICAgICAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va19kb3duX2Nhc2UgMiBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICB8IFNvbWUgZmFsc2UgLT4gYXV4IG5leHRfY2FzZSBib29sIGVycm9yIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoXywgXywgXywgbmV4dF9hY3Rpb24pID1cbiAgICAgICAgICAgICAgICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0X2Nhc2VcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBCLlBCLm1vcmVfcmVmaW5lZCBuZXh0X2FjdGlvbiB2YWx1ZSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfZG93bl9jYXNlIDMgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgYXV4IG5leHRfY2FzZSB0cnVlIGVycm9yIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGF1eCBuZXh0X2Nhc2UgYm9vbCBlcnJvciBsb2dfaW5mb1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYXV4IGNhc2UgZmFsc2UgZXJyb3IgbG9nX2luZm8pXG4gICAgICAgICAgKHByb3BhZ2F0ZV9saXN0LCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgbGlzdF92YWx1ZXNcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByb3BhZ2F0ZV9saXN0XG4gICAgKVxuXG4gIGxldCBsb29rX2Rvd24gPVxuICAgIGlmIGxvb2tfZG93bl9mb3JfYmV0dGVyX2N1dCB0aGVuXG4gICAgICBsb29rX2Rvd25cbiAgICBlbHNlXG4gICAgICBmdW4gXyBfIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdCBfIC0+XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBsaXN0XG5cbiAgbGV0IHJlZmluZV92YWx1ZV9hZnRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3NcbiAgICAgIHZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3QgPVxuICAgIGxldCBjYXNlX2FkZHJlc3MgPSBCLnZhbHVlX2FmdGVyIGFkZHJlc3MgaW5cbiAgICBsZXQgc3RhdGUgPSBCLnN0YXRlIHZhbHVlIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHJlc3VsdCkgPVxuICAgICAgQi5yZWZpbmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIHN0YXRlIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIEIuaXNfaWdub3JlZCByZXN1bHQgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHJlc3VsdClcbiAgICBlbHNlIGlmIEIuaXNfZmFpbGVkIHJlc3VsdCB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIHJlc3VsdClcbiAgICBlbHNlIChcbiAgICAgIGxldCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgICAgIFByb3BhZ2F0ZV91cCBhZGRyZXNzIDo6IFByb3BhZ2F0ZV9kb3duIGFkZHJlc3MgOjogcHJvcGFnYXRlX2xpc3RcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgcmVzdWx0KVxuICAgIClcblxuICBsZXQgcmVmaW5lX3ZhbHVlX2JlZm9yZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3NcbiAgICAgIHZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3QgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfcHJldmlvdXMgPVxuICAgICAgQi5mb2xsb3dfcG9pbnRlcl91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3NcbiAgICBpblxuICAgIHJlZmluZV92YWx1ZV9hZnRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBwb2ludGVyX3ByZXZpb3VzIHZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcblxuICBsZXQgZGlzY2FyZF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGNhc2VcbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcG9pbnRlcl9uZXh0ID1cbiAgICAgIEIuZm9sbG93X3BvaW50ZXJfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfcHJldmlvdXMgPVxuICAgICAgQi5mb2xsb3dfcG9pbnRlcl91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgICgqIHdlIHJlbW92ZSB0aGUgY2FzZSAqKVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCByZXN1bHQpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChCLmV4aXN0IGNhc2UpXG4gICAgICAgIChCLmJvb2xlYW4gKFNvbWUgZmFsc2UpKSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBCLmlzX2ZhaWxlZCByZXN1bHQgdGhlblxuICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW10sIFtdKSwgcmVzdWx0XG4gICAgZWxzZSBpZiBCLmlzX2lnbm9yZWQgcmVzdWx0IHRoZW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSwgcmVzdWx0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2EgPSBCLmNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgY2FzZSBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgY2FzZV92YWx1ZVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBfLCByZXN1bHQnKSA9XG4gICAgICAgIHJlZmluZV92YWx1ZV9hZnRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgcG9pbnRlcl9wcmV2aW91cyBwcmVkaWNhdGVfdmFsdWUgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuICAgICAgaW5cbiAgICAgIGlmIEIuaXNfZmFpbGVkIHJlc3VsdCcgdGhlblxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbXSwgW10pLCByZXN1bHQnXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIChCLm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIGNhc2UpXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfLCBldmVudCwgXywgXykgPVxuICAgICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGV2ZWwgPVxuICAgICAgICAgIEIubGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBldmVudFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBCLmRlYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgKEIubl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgY2FzZSBsZXZlbClcbiAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgKCogd2UgcGx1ZyBwb2ludGVyIG5leHQgb2YgdGhlIHByZXZpb3VzIGV2ZW50ICopXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIEIub3ZlcndyaXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAoQi5wb2ludGVyX3RvX25leHQgcG9pbnRlcl9wcmV2aW91cylcbiAgICAgICAgICAgIChCLnBvaW50ZXIgcG9pbnRlcl9uZXh0KSBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgICgqIHdlIHBsdWcgcG9pbnRlciBwcmV2aW91cyBvZiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBCLm92ZXJ3cml0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgKEIucG9pbnRlcl90b19wcmV2aW91cyBwb2ludGVyX25leHQpXG4gICAgICAgICAgICAoQi5wb2ludGVyIHBvaW50ZXJfcHJldmlvdXMpXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgICAgICAgUHJvcGFnYXRlX3VwIHBvaW50ZXJfbmV4dCA6OiBQcm9wYWdhdGVfZG93biBwb2ludGVyX3ByZXZpb3VzXG4gICAgICAgICAgOjogUHJvcGFnYXRlX3VwIHBvaW50ZXJfcHJldmlvdXMgOjogcHJvcGFnYXRlX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJvcGFnYXRlX2xpc3QgPVxuICAgICAgICAgIGxvb2tfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHByb3BhZ2F0ZV9saXN0XG4gICAgICAgICAgICBjYXNlXG4gICAgICAgIGluXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSwgcmVzdWx0XG4gICAgICApXG4gICAgKVxuXG4gIGxldCBrZWVwX2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgY2FzZVxuICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QpID1cbiAgICAoKiB3ZSBrZWVwIHRoZSBjYXNlICopXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHJlc3VsdCkgPVxuICAgICAgQi5yZWZpbmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgKEIuZXhpc3QgY2FzZSlcbiAgICAgICAgKEIuYm9vbGVhbiAoU29tZSB0cnVlKSkgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgQi5pc19mYWlsZWQgcmVzdWx0IHRoZW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdLCBbXSksIHJlc3VsdFxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHJlc3VsdCB0aGVuXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksIHJlc3VsdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcG9pbnRlcl9wcmV2aW91cyA9XG4gICAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgX3BvaW50ZXJfbmV4dCA9XG4gICAgICAgIEIuZm9sbG93X3BvaW50ZXJfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX3NlaWQsIGVpZCwgdGVzdCwgYWN0aW9uKSA9XG4gICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgXywgcmVzdWx0JykgPVxuICAgICAgICByZWZpbmVfdmFsdWVfYmVmb3JlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgICAgIHRlc3QgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBfLCByZXN1bHQnJykgPVxuICAgICAgICByZWZpbmVfdmFsdWVfYWZ0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICAgICAgYWN0aW9uIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICAgIGluXG4gICAgICBpZiBCLmlzX2ZhaWxlZCByZXN1bHQnIHx8IEIuaXNfZmFpbGVkIHJlc3VsdCcnIHRoZW5cbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW10sIFtdKSwgQi5mYWlsXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIChCLm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIGNhc2UpXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxldmVsID1cbiAgICAgICAgICBCLmxldmVsX29mX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZWlkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAoQi5uX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCBjYXNlIGxldmVsKVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgcHJvcGFnYXRlX2xpc3QgPVxuICAgICAgICAgIFByb3BhZ2F0ZV91cCBjYXNlIDo6IFByb3BhZ2F0ZV9kb3duIGNhc2VcbiAgICAgICAgICA6OiBQcm9wYWdhdGVfZG93biBwb2ludGVyX3ByZXZpb3VzIDo6IFByb3BhZ2F0ZV91cCBwb2ludGVyX3ByZXZpb3VzXG4gICAgICAgICAgOjogcHJvcGFnYXRlX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QpLCByZXN1bHRcbiAgICAgIClcbiAgICApXG5cbiAgbGV0IGtlZXBfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzdGVwX2lkXG4gICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3VjY2VzcykgPVxuICAgICAgQi5yZWZpbmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgKEIuaXNfZXhpc3RfZXZlbnQgc3RlcF9pZClcbiAgICAgICAgKEIuYm9vbGVhbiAoU29tZSB0cnVlKSkgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgQi5pc19mYWlsZWQgc3VjY2VzcyB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIHN1Y2Nlc3MpXG4gICAgZWxzZSBpZiBCLmlzX2lnbm9yZWQgc3VjY2VzcyB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgc3VjY2VzcylcbiAgICBlbHNlIChcbiAgICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX3NlbGVjdGVkX2V2ZW50cyBsb2dfaW5mbyBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiV2Uga2VlcCBldmVudCAlaVwiXG4gICAgICAgICAgICAgIChCLlBCLmludF9vZl9zdGVwX2lkIHN0ZXBfaWQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgQi5uX3VucmVzb2x2ZWRfZXZlbnRzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgQi5jYXNlX2xpc3Rfb2ZfZWlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgaW5cbiAgICAgIGxldCByZWMgYXV4IGwgeCBzdWNjZXNzID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4geCwgc3VjY2Vzc1xuICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgIGxldCB5LCBzdWNjZXNzMiA9IGtlZXBfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciB0IHggaW5cbiAgICAgICAgICBpZiBCLmlzX2lnbm9yZWQgc3VjY2VzczIgdGhlblxuICAgICAgICAgICAgYXV4IHEgeSBzdWNjZXNzXG4gICAgICAgICAgZWxzZSBpZiBCLmlzX3N1Y2NlZWRlZCBzdWNjZXNzMiB0aGVuXG4gICAgICAgICAgICBhdXggcSB5IHN1Y2Nlc3MyXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgeSwgc3VjY2VzczJcbiAgICAgIGluXG4gICAgICBsZXQgKCAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksXG4gICAgICAgICAgICBzdWNjZXNzICkgPVxuICAgICAgICBhdXggbGlzdFxuICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KVxuICAgICAgICAgIEIuaWdub3JlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHN1Y2Nlc3MpXG4gICAgKVxuXG4gIGxldCBnZW5fZXZlbnQgZl9jYXNlIGcgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzdGVwX2lkXG4gICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3VjY2VzcykgPVxuICAgICAgQi5yZWZpbmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgKEIuaXNfZXhpc3RfZXZlbnQgc3RlcF9pZClcbiAgICAgICAgKEIuYm9vbGVhbiAoU29tZSBmYWxzZSkpIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIEIuaXNfZmFpbGVkIHN1Y2Nlc3MgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBzdWNjZXNzKVxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHN1Y2Nlc3MgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHN1Y2Nlc3MpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJXZSByZW1vdmUgZXZlbnQgJWlcIlxuICAgICAgICAgICAgICAoQi5QQi5pbnRfb2Zfc3RlcF9pZCBzdGVwX2lkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGxvZ19pbmZvID0gZyBsb2dfaW5mbyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIEIubl91bnJlc29sdmVkX2V2ZW50cyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGV2ZWwgPVxuICAgICAgICBCLmxldmVsX29mX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBCLmRlYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIChCLm5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgbGV2ZWwpXG4gICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICBCLmNhc2VfbGlzdF9vZl9laWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzdGVwX2lkXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBhdXggbCB4IHN1Y2Nlc3MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiB4LCBzdWNjZXNzXG4gICAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgICAgbGV0IHksIHN1Y2Nlc3MyID0gZl9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIHQgeCBpblxuICAgICAgICAgIGlmIEIuaXNfaWdub3JlZCBzdWNjZXNzMiB0aGVuXG4gICAgICAgICAgICBhdXggcSB5IHN1Y2Nlc3NcbiAgICAgICAgICBlbHNlIGlmIEIuaXNfc3VjY2VlZGVkIHN1Y2Nlc3MyIHRoZW5cbiAgICAgICAgICAgIGF1eCBxIHkgc3VjY2VzczJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB5LCBzdWNjZXNzMlxuICAgICAgaW5cbiAgICAgIGxldCAoIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSxcbiAgICAgICAgICAgIHN1Y2Nlc3MgKSA9XG4gICAgICAgIGF1eCBsaXN0XG4gICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QpXG4gICAgICAgICAgQi5pZ25vcmVcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgc3VjY2VzcylcbiAgICApXG5cbiAgbGV0IGN1dF9ldmVudCA9IGdlbl9ldmVudCBjdXRfY2FzZSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19jdXRfZXZlbnRzXG5cbiAgbGV0IGRpc2NhcmRfZXZlbnQgPVxuICAgIGdlbl9ldmVudCBkaXNjYXJkX2Nhc2UgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfcmVtb3ZlZF9ldmVudHNcblxuICBsZXQgYXBwbHlfaW5zdHJ1Y3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpbnN0cnVjdGlvblxuICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgbWF0Y2ggaW5zdHJ1Y3Rpb24gd2l0aFxuICAgIHwgS2VlcF9ldmVudCBzdGVwX2lkIC0+XG4gICAgICBrZWVwX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgfCBDdXRfZXZlbnQgc3RlcF9pZCAtPlxuICAgICAgY3V0X2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgfCBEaXNjYXJkX2V2ZW50IHN0ZXBfaWQgLT5cbiAgICAgIGRpc2NhcmRfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzdGVwX2lkXG4gICAgICAgIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICB8IFJlZmluZV92YWx1ZV9hZnRlciAoYWRkcmVzcywgdmFsdWUpIC0+XG4gICAgICByZWZpbmVfdmFsdWVfYWZ0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgICAgIHZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICB8IFJlZmluZV92YWx1ZV9iZWZvcmUgKGFkZHJlc3MsIHZhbHVlKSAtPlxuICAgICAgcmVmaW5lX3ZhbHVlX2JlZm9yZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3NcbiAgICAgICAgdmFsdWUgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuICAgIHwgU2tpcCAtPlxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIEIuaWdub3JlKVxuXG4gIGxldCBfa2VlcCB4ID0gS2VlcF9ldmVudCB4XG5lbmRcbiIsIigqKlxuICAqIGdlbmVyaWNfYnJhbmNoX2FuZF9jdXBfc29sdmVyLm1sXG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDI5LzA4LzIwMTFcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMTkvMDcvMjAxM1xuICAqICpcbiAgKiBTb21lIHBhcmFtZXRlcnMgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBsb2dfc3RlcHMgPSBmYWxzZVxuXG5tb2R1bGUgdHlwZSBTb2x2ZXIgPSBzaWdcbiAgbW9kdWxlIFBIIDogUHJvcGFnYXRpb25faGV1cmlzdGljcy5CbGFja2JvYXJkX3dpdGhfaGV1cmlzdGljXG5cbiAgdmFsIGNvbXByZXNzIDpcbiAgICAoIFBILkIuYmxhY2tib2FyZCxcbiAgICAgIFBILnVwZGF0ZV9vcmRlciBsaXN0LFxuICAgICAgUEguQi5ibGFja2JvYXJkICogUEguQi5hc3NpZ25fcmVzdWx0ICogUEguQi5yZXN1bHQgbGlzdCApXG4gICAgUEguQi5QQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGRldGVjdF9pbmRlcGVuZGVudF9ldmVudHMgOlxuICAgICggUEguQi5ibGFja2JvYXJkLFxuICAgICAgUEguQi5QQi5zdGVwX2lkIGxpc3QsXG4gICAgICBQSC5CLlBCLnN0ZXBfaWQgbGlzdCApXG4gICAgUEguQi5QQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGZpbHRlciA6XG4gICAgKCBQSC5CLmJsYWNrYm9hcmQsXG4gICAgICBQSC5CLlBCLnN0ZXBfaWQgbGlzdCxcbiAgICAgIFBILkIuYmxhY2tib2FyZCApXG4gICAgUEguQi5QQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIHN1YiA6IChUcmFjZS50LCBQSC5CLmJsYWNrYm9hcmQpIFBILkIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG4gIHZhbCBjbGVhbiA6IChQSC5CLmJsYWNrYm9hcmQsIFBILkIuYmxhY2tib2FyZCkgUEguQi5QQi5DSS5Qby5LLkgudW5hcnlcblxuICB2YWwgdHJhbnNsYXRlIDpcbiAgICAoIFBILkIuYmxhY2tib2FyZCxcbiAgICAgIFBILkIuUEIuc3RlcF9pZCBsaXN0LFxuICAgICAgVHJhY2UudCAqIFBILkIucmVzdWx0IClcbiAgICBQSC5CLlBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgdHJhbnNsYXRlX3Jlc3VsdCA6IFBILkIucmVzdWx0IC0+IFRyYWNlLnRcbmVuZFxuXG5tb2R1bGUgU29sdmVyID0gc3RydWN0XG4gIG1vZHVsZSBQSCA9IFByb3BhZ2F0aW9uX2hldXJpc3RpY3MuUHJvcGFnYXRpb25faGV1cmlzdGljXG4gICgqQmxhY2tib2FyZF93aXRoX2hldXJpc3RpYyopXG5cbiAgbGV0IHdhcm4gcGFyYW1ldGVyIGVycm9yIHBvcyA/KG1lc3NhZ2UgPSBcIlwiKSBleG4gZGVmYXVsdCA9XG4gICAgRXhjZXB0aW9uLndhcm5cbiAgICAgIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIHBvcyB+bWVzc2FnZSBleG4gZGVmYXVsdFxuXG4gIGxldCBfY29tYmluZV9vdXRwdXQgbzEgbzIgPVxuICAgIGlmIFBILkIuaXNfaWdub3JlZCBvMiB0aGVuXG4gICAgICBvMVxuICAgIGVsc2VcbiAgICAgIG8yXG5cbiAgbGV0IHJlYyBwcm9wYWdhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaW5zdHJ1Y3Rpb25fbGlzdFxuICAgICAgcHJvcGFnYXRlX2xpc3QgYmxhY2tib2FyZCA9XG4gICAgbGV0IGJvb2wsIGxvZ19pbmZvID0gUEguQi50aWNrIGxvZ19pbmZvIGluXG4gICAgbGV0IF8gPVxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuZHVtcF9jb21wbGV0ZV9sb2dcbiAgICAgICAgICAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgbG9nX2luZm9cbiAgICBpblxuICAgIG1hdGNoIGluc3RydWN0aW9uX2xpc3Qgd2l0aFxuICAgIHwgdCA6OiBxIC0+XG4gICAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBhc3NpZ25fcmVzdWx0KSApID1cbiAgICAgICAgUEguYXBwbHlfaW5zdHJ1Y3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB0IHFcbiAgICAgICAgICBwcm9wYWdhdGVfbGlzdFxuICAgICAgaW5cbiAgICAgIGlmIFBILkIuaXNfZmFpbGVkIGFzc2lnbl9yZXN1bHQgdGhlblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBhc3NpZ25fcmVzdWx0KVxuICAgICAgZWxzZVxuICAgICAgICBwcm9wYWdhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaW5zdHJ1Y3Rpb25fbGlzdFxuICAgICAgICAgIHByb3BhZ2F0ZV9saXN0IGJsYWNrYm9hcmRcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggcHJvcGFnYXRlX2xpc3Qgd2l0aFxuICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIGFzc2lnbl9yZXN1bHQpICkgPVxuICAgICAgICAgIFBILnByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHRcbiAgICAgICAgICAgIGluc3RydWN0aW9uX2xpc3QgcVxuICAgICAgICBpblxuICAgICAgICBpZiBQSC5CLmlzX2ZhaWxlZCBhc3NpZ25fcmVzdWx0IHRoZW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBhc3NpZ25fcmVzdWx0KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcHJvcGFnYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGluc3RydWN0aW9uX2xpc3RcbiAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0IGJsYWNrYm9hcmRcbiAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgUEguQi5zdWNjZXNzKSlcblxuICB0eXBlIGNob2ljZXMgPSB7XG4gICAgY3VycmVudDogUEgudXBkYXRlX29yZGVyIGxpc3Q7XG4gICAgc3RhY2s6IFBILnVwZGF0ZV9vcmRlciBsaXN0IGxpc3Q7XG4gIH1cblxuICBsZXQgYnJhbmNoX2Nob2ljZV9saXN0IGNob2ljZV9saXN0ID1cbiAgICB7IGN1cnJlbnQgPSBbXTsgc3RhY2sgPSBjaG9pY2VfbGlzdC5jdXJyZW50IDo6IGNob2ljZV9saXN0LnN0YWNrIH1cblxuICBsZXQgdXBkYXRlX2N1cnJlbnQgY2hvaWNlX2xpc3QgbGlzdCA9IHsgY2hvaWNlX2xpc3Qgd2l0aCBjdXJyZW50ID0gbGlzdCB9XG5cbiAgbGV0IHBvcF9uZXh0X2Nob2ljZSBwYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3Igc3RhY2sgPVxuICAgIG1hdGNoIHN0YWNrLmN1cnJlbnQgd2l0aFxuICAgIHwgdCA6OiBxIC0+IGVycm9yLCAodCwgeyBzdGFjayB3aXRoIGN1cnJlbnQgPSBxIH0pXG4gICAgfCBbXSAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcIkVtcHR5IGNob2ljZSBzdGFja1wiXG4gICAgICAgIChGYWlsdXJlIFwiRW1wdHkgY2hvaWNlIGxpc3QgaW4gcG9wX25leHRfY2hvaWNlXCIpXG4gICAgICAgIChQSC5kdW1teV91cGRhdGVfb3JkZXIsIHN0YWNrKVxuXG4gIGxldCBub19tb3JlX2Nob2ljZSBzdGFjayA9XG4gICAgbWF0Y2ggc3RhY2suY3VycmVudCB3aXRoXG4gICAgfCBbXSAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGJhY2t0cmFjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0ID1cbiAgICBsZXQgcmVjIGJhY2t0cmFja19hdXggbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdCA9XG4gICAgICBtYXRjaCBjaG9pY2VfbGlzdC5jdXJyZW50IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKG1hdGNoIGNob2ljZV9saXN0LnN0YWNrIHdpdGhcbiAgICAgICAgfCBbXSAtPiBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBOb25lKVxuICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgIGxldCBjaG9pY2VfbGlzdCA9IHsgY3VycmVudCA9IHQ7IHN0YWNrID0gcSB9IGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICBQSC5CLnJlc2V0X2xhc3RfYnJhbmNoaW5nIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGJhY2t0cmFja19hdXggbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdClcbiAgICAgIHwgXyAtPiBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBTb21lIGNob2ljZV9saXN0KVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBQSC5CLnJlc2V0X2xhc3RfYnJhbmNoaW5nIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGJhY2t0cmFja19hdXggbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdFxuXG4gIGxldCBlbXB0eV9jaG9pY2VfbGlzdCA9IHsgc3RhY2sgPSBbXTsgY3VycmVudCA9IFtdIH1cblxuICBsZXQgcmVjIHN1Ymxpc3QgbCBsJyA9XG4gICAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIHwgW10sIF8gLT4gdHJ1ZVxuICAgIHwgXywgW10gLT4gZmFsc2VcbiAgICB8IGggOjogdCwgaCcgOjogdCcgd2hlbiBoID0gaCcgLT4gc3VibGlzdCB0IHQnXG4gICAgfCBfLCBfaCcgOjogdCcgLT4gc3VibGlzdCBsIHQnXG5cbiAgbGV0IHNvcnRfc3Rvcmllc19hY2NvcmRpbmdfdG9fbGVuZ3RoIGwgPVxuICAgIExpc3QucmV2X21hcCBmc3RcbiAgICAgIChMaXN0LnNvcnRcbiAgICAgICAgIChmdW4gKF8sIGEpIChfLCBiKSAtPiBjb21wYXJlIGIgYSlcbiAgICAgICAgIChMaXN0LnJldl9tYXAgKGZ1biBhIC0+IGEsIExpc3QubGVuZ3RoIGEpIGwpKVxuXG4gIGxldCBmaWx0ZXJfb3V0X25vbl9taW5pbWFsX3N0b3J5IGwgPVxuICAgIGxldCByZWMgYXV4IHRvX3Zpc2l0IGdvb2RvbmVzID1cbiAgICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgZ29vZG9uZXNcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIGF1eFxuICAgICAgICAgIChMaXN0LmZpbHRlciAoZnVuIHN0b3J5IC0+IG5vdCAoc3VibGlzdCBoIHN0b3J5KSkgdClcbiAgICAgICAgICAoaCA6OiBMaXN0LmZpbHRlciAoZnVuIHN0b3J5IC0+IG5vdCAoc3VibGlzdCBoIHN0b3J5KSkgZ29vZG9uZXMpXG4gICAgaW5cbiAgICBhdXggKHNvcnRfc3Rvcmllc19hY2NvcmRpbmdfdG9fbGVuZ3RoIGwpIFtdXG5cbiAgbGV0IHJlYyBpdGVyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3RcbiAgICAgIHN0b3J5X2xpc3QgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJvb2wgPVxuICAgICAgUEguQi5pc19tYXhpbWFsX3NvbHV0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAoKiBTVUNDRVNTICopXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgUEguQi50cmFuc2xhdGVfYmxhY2tib2FyZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgaWYgUEguQi5QQi5DSS5Qby5LLkguZ2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMgcGFyYW1ldGVyIHRoZW4gKFxuICAgICAgICBsZXQgc3RvcnlfbGlzdCA9IGxpc3QgOjogc3RvcnlfbGlzdCBpblxuICAgICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgICBpZiBjaG9pY2VfbGlzdC5jdXJyZW50IDw+IFtdIHRoZW5cbiAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgXCJJbiBjYXNlIG9mIHN1Y2Nlc3MsIHRoZSBjdXJyZW50IGxpc3Qgb2YgY2hvaWNlcyBzaG91bGQgYmUgXFxcbiAgICAgICAgICAgICAgICAgZW1wdHlcIlxuICAgICAgICAgICAgICAoRmFpbHVyZVxuICAgICAgICAgICAgICAgICBcIkluIGNhc2Ugb2Ygc3VjY2VzcywgdGhlIGN1cnJlbnQgbGlzdCBvZiBjaG9pY2VzIHNob3VsZCBiZSBcXFxuICAgICAgICAgICAgICAgICAgZW1wdHlcIikgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNob2ljZV9saXN0ID1cbiAgICAgICAgICBtYXRjaCBjaG9pY2VfbGlzdC5zdGFjayB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBjaG9pY2VfbGlzdFxuICAgICAgICAgIHwgdCA6OiBxIC0+IHsgY3VycmVudCA9IHQ7IHN0YWNrID0gcSB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBjaG9pY2VfbGlzdCkgPVxuICAgICAgICAgIGJhY2t0cmFjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0XG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGNob2ljZV9saXN0IHdpdGhcbiAgICAgICAgfCBTb21lIGNob2ljZV9saXN0IC0+XG4gICAgICAgICAgaXRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0XG4gICAgICAgICAgICBzdG9yeV9saXN0ICgqKHVwZGF0ZV9maXJzdF9zdG9yeSBmaXJzdF9zdG9yeSBsaXN0KSopXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgIFBILkIuZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIFwiRkFJTFwiICFQcmlvcml0eS5uX3N0b3J5ICFQcmlvcml0eS5uX2JyYW5jaCBibGFja2JvYXJkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdG9yeV9saXN0KVxuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIFsgbGlzdCBdKVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZXJyb3IsIGNob2ljZV9saXN0ID1cbiAgICAgICAgaWYgbm9fbW9yZV9jaG9pY2UgY2hvaWNlX2xpc3QgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBfbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgICAgUEgubmV4dF9jaG9pY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIHVwZGF0ZV9jdXJyZW50IGNob2ljZV9saXN0IGxpc3RcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgZXJyb3IsIGNob2ljZV9saXN0XG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIFBILkIuYnJhbmNoIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIChjaG9pY2UsIGNob2ljZV9saXN0KSA9XG4gICAgICAgIHBvcF9uZXh0X2Nob2ljZSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBjaG9pY2VfbGlzdFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBvdXRwdXQpID1cbiAgICAgICAgcHJvcGFnYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIFsgY2hvaWNlIF0gW10gYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGlmIFBILkIuaXNfZmFpbGVkIG91dHB1dCB0aGVuIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGNob2ljZV9saXN0KSA9XG4gICAgICAgICAgYmFja3RyYWNrIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggY2hvaWNlX2xpc3Qgd2l0aFxuICAgICAgICB8IFNvbWUgY2hvaWNlX2xpc3QgLT5cbiAgICAgICAgICBpdGVyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3RcbiAgICAgICAgICAgIHN0b3J5X2xpc3RcbiAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN0b3J5X2xpc3QpXG4gICAgICApIGVsc2VcbiAgICAgICAgaXRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKGJyYW5jaF9jaG9pY2VfbGlzdCBjaG9pY2VfbGlzdClcbiAgICAgICAgICBzdG9yeV9saXN0XG4gICAgKVxuXG4gIGxldCBkZXRlY3RfaW5kZXBlbmRlbnRfZXZlbnRzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGxpc3RfZWlkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX2JsYWNrYm9hcmQsIGV2ZW50c190b19rZWVwKSA9XG4gICAgICBQSC5CLmN1dCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGxpc3RfZWlkXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50c190b19rZWVwXG5cbiAgbGV0IHRyYW5zbGF0ZSBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdCA9XG4gICAgbGV0IGxpc3QnID1cbiAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAoZnVuIGsgLT5cbiAgICAgICAgICAoIFBILkIuZ2V0X2V2ZW50IGJsYWNrYm9hcmQgKFBILkIuUEIuZGVjX3N0ZXBfaWQgayksXG4gICAgICAgICAgICBQSC5CLnNpZGVfZWZmZWN0X29mX2V2ZW50IGJsYWNrYm9hcmQgKFBILkIuUEIuZGVjX3N0ZXBfaWQgaykgKSlcbiAgICAgICAgKExpc3QucmV2IGxpc3QpXG4gICAgaW5cbiAgICBsZXQgbGlzdCA9IExpc3QucmV2X21hcCBmc3QgKExpc3QucmV2IGxpc3QnKSBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKGxpc3QsIGxpc3QnKVxuXG4gIGxldCB0cmFuc2xhdGVfcmVzdWx0IHJlc3VsdCA9IExpc3QucmV2X21hcCBmc3QgQEAgTGlzdC5yZXYgcmVzdWx0XG5cbiAgbGV0IGNsZWFuIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGxvZ19pbmZvIGJsYWNrYm9hcmQgPVxuICAgIFBILkIucmVzZXRfaW5pdCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBsb2dfaW5mbyBibGFja2JvYXJkXG5cbiAgbGV0IGZpbHRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGV2ZW50c190b19rZWVwID1cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9zdGVwX3RpbWUgbG9nX2luZm8gaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgIFBILkIuYnJhbmNoIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBldmVudHNfdG9fcmVtb3ZlID1cbiAgICAgIGxldCBuX2V2ZW50cyA9IFBILkIuZ2V0X25fZWlkIGJsYWNrYm9hcmQgaW5cbiAgICAgIGxldCByZWMgYXV4IGsgbGlzdCBzb2wgPVxuICAgICAgICBpZiBrID0gbl9ldmVudHMgdGhlblxuICAgICAgICAgIExpc3QucmV2IHNvbFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgICAgaWYgUEguQi5QQi5pbnRfb2Zfc3RlcF9pZCB0ID0gayB0aGVuXG4gICAgICAgICAgICAgIGF1eCAoayArIDEpIHEgc29sXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGF1eCAoayArIDEpIGxpc3QgKFBILkIuUEIuc3RlcF9pZF9vZl9pbnQgayA6OiBzb2wpXG4gICAgICAgICAgfCBbXSAtPiBhdXggKGsgKyAxKSBsaXN0IChQSC5CLlBCLnN0ZXBfaWRfb2ZfaW50IGsgOjogc29sKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgYXV4IDAgZXZlbnRzX3RvX2tlZXAgW11cbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGZvcmJpZGRlbl9ldmVudHMgPVxuICAgICAgUEguZm9yYmlkZGVuX2V2ZW50cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudHNfdG9fcmVtb3ZlXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgbG9nX3N0ZXBzIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgXCJTdGFydCBjdXR0aW5nXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICBpblxuICAgICAgICAoKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIF9vdXRwdXQpID1cbiAgICAgIHByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBmb3JiaWRkZW5fZXZlbnRzIFtdIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9jb25jdXJyZW50X2V2ZW50X2RlbGV0aW9uX3RpbWUgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X3N0ZXBfdGltZSBsb2dfaW5mbyBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuXG4gIGxldCBzdWIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdG9fa2VlcCA9XG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfc3RlcF90aW1lIGxvZ19pbmZvIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBQSC5CLmltcG9ydCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0b19rZWVwXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfY29uY3VycmVudF9ldmVudF9kZWxldGlvbl90aW1lIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9zdGVwX3RpbWUgbG9nX2luZm8gaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgY29tcHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0X29yZGVyID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgIFBILkIuYnJhbmNoIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9jb25jdXJyZW50X2V2ZW50X2RlbGV0aW9uX3RpbWUgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X3N0ZXBfdGltZSBsb2dfaW5mbyBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBsb2dfc3RlcHMgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBcIkFmdGVyIENhdXNhbCBDdXQgICVpXCJcbiAgICAgICAgICAgIChQSC5CLmdldF9uX3VucmVzb2x2ZWRfZXZlbnRzIGJsYWNrYm9hcmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBvdXRwdXQpID1cbiAgICAgIHByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0X29yZGVyIFtdIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIFBILkIuaXNfZmFpbGVkIG91dHB1dCB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGxvZ19zdGVwcyB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJBZnRlciBvYnNlcnZhYmxlIHByb3BhZ2F0aW9uICBGQUlMICVpIEAuXCJcbiAgICAgICAgICAgICAgKFBILkIuZ2V0X25fdW5yZXNvbHZlZF9ldmVudHMgYmxhY2tib2FyZClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKClcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIG91dHB1dCwgW10pXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGxvZ19zdGVwcyB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJBZnRlciBvYnNlcnZhYmxlIHByb3BhZ2F0aW9uICAlaSBALlwiXG4gICAgICAgICAgICAgIChQSC5CLmdldF9uX3VucmVzb2x2ZWRfZXZlbnRzIGJsYWNrYm9hcmQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgYm9vbCwgc3RyaW5nID1cbiAgICAgICAgbWF0Y2ggcGFyYW1ldGVyLlBILkIuUEIuQ0kuUG8uSy5ILmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSB3aXRoXG4gICAgICAgIHwgTm9uZSB8IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgLT4gZmFsc2UsIFwiXCJcbiAgICAgICAgfCBTb21lIFN0b3J5X2pzb24uV2VhayAtPlxuICAgICAgICAgICggUGFyYW1ldGVyLmR1bXBfZ3JpZF9hZnRlcl9icmFuY2hpbmdfZHVyaW5nX3dlYWtfY29tcHJlc3Npb24sXG4gICAgICAgICAgICBQYXJhbWV0ZXIueGxzd2Vha0ZpbGVOYW1lIClcbiAgICAgICAgfCBTb21lIFN0b3J5X2pzb24uU3Ryb25nIC0+XG4gICAgICAgICAgKCBQYXJhbWV0ZXIuZHVtcF9ncmlkX2FmdGVyX2JyYW5jaGluZ19kdXJpbmdfc3Ryb25nX2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgUGFyYW1ldGVyLnhsc3N0cm9uZ0ZpbGVOYW1lIClcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBQcmlvcml0eS5uX2JyYW5jaCA6PSAxICsgKCFQcmlvcml0eS5uX2JyYW5jaCArIDEpIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICBQSC5CLmV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBzdHJpbmcgIVByaW9yaXR5Lm5fc3RvcnkgIVByaW9yaXR5Lm5fYnJhbmNoIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICApIGVsc2VcbiAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3RvcnlfbGlzdCkgPVxuICAgICAgICBpdGVyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZW1wdHlfY2hvaWNlX2xpc3QgW11cbiAgICAgIGluXG4gICAgICBsZXQgb3V0cHV0ID1cbiAgICAgICAgbWF0Y2ggc3RvcnlfbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gUEguQi5mYWlsXG4gICAgICAgIHwgXyAtPiBQSC5CLnN1Y2Nlc3NcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgKGJsYWNrYm9hcmQsIG91dHB1dCwgZmlsdGVyX291dF9ub25fbWluaW1hbF9zdG9yeSAoTGlzdC5yZXYgc3RvcnlfbGlzdCkpXG4gICAgICApXG4gICAgKVxuZW5kXG4iLCIoKipcbiAgKiBibGFja19saXN0Lm1sXG4gICpcbiAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTYtMDItMTQgMTA6Mjk6NDIgZmVyZXQ+XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTAyLTE0IDEwOjUwOjU3IGZlcmV0PlxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIEplcm9tZSBGZXJldCwgcHJvamV0IEFudGlxdWUsIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdGUgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNSwyMDE2XG4gICogIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlblxuICAqIEluZm9ybWF0aXF1ZSBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnlcbiAgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIEV2ZW50ID0gc2lnXG4gIHR5cGUgZXZlbnRcbiAgdHlwZSBlaWRcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGtleV9vZl9ldmVudCA6IGV2ZW50IC0+IGVpZCBvcHRpb25cbiAgdmFsIGluaXQgOiBpbnQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgc2V0IDogJ2EgdCAtPiBlaWQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgZ2V0IDogJ2EgdCAtPiBlaWQgLT4gJ2FcbmVuZFxuXG5tb2R1bGUgdHlwZSBCbGFja2xpc3QgPSBzaWdcbiAgdHlwZSB0XG5cbiAgbW9kdWxlIEV2ZW50IDogRXZlbnRcblxuICB2YWwgaW5pdCA6IGludCAtPiB0XG4gIHZhbCBibGFja19saXN0IDogRXZlbnQuZXZlbnQgLT4gdCAtPiB0XG4gIHZhbCBpc19ibGFja19saXN0ZWQgOiBFdmVudC5ldmVudCAtPiB0IC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgTWFrZSA9XG5mdW5jdG9yXG4gIChFdmVudCA6IEV2ZW50KVxuICAtPlxuICBzdHJ1Y3RcbiAgICBtb2R1bGUgRXZlbnQgPSBFdmVudFxuXG4gICAgdHlwZSB0ID0gYm9vbCBFdmVudC50XG5cbiAgICBsZXQgaW5pdCBuID0gRXZlbnQuaW5pdCBuIGZhbHNlXG5cbiAgICBsZXQgYmxhY2tfbGlzdCBldmVudCB0ID1cbiAgICAgIG1hdGNoIEV2ZW50LmtleV9vZl9ldmVudCBldmVudCB3aXRoXG4gICAgICB8IE5vbmUgLT4gdFxuICAgICAgfCBTb21lIGVpZCAtPlxuICAgICAgICBsZXQgdCA9IEV2ZW50LnNldCB0IGVpZCB0cnVlIGluXG4gICAgICAgIHRcblxuICAgIGxldCBpc19ibGFja19saXN0ZWQgZXZlbnQgdCA9XG4gICAgICBtYXRjaCBFdmVudC5rZXlfb2ZfZXZlbnQgZXZlbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgZWlkIC0+IEV2ZW50LmdldCB0IGVpZFxuICBlbmRcbiIsIigqKlxuICAqIGRhZy5tbFxuICAqXG4gICogRGFnIGNvbXB1dGF0aW9uIGFuZCBjYW5vbmljYWwgZm9ybVxuICAqXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDIyLzAzLzIwMTJcbiAgKiBMYXN0IG1vZHhpZmljYXRpb246IDE4LzA2LzIwMTNcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWVcbiAgKiBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIFMgPSBHZW5lcmljX2JyYW5jaF9hbmRfY3V0X3NvbHZlci5Tb2x2ZXJcblxubGV0IHdhcm4gcGFyYW1ldGVyIGVycm9yIHBvcyA/KG1lc3NhZ2UgPSBcIlwiKSBleG4gZGVmYXVsdCA9XG4gIEV4Y2VwdGlvbi53YXJuXG4gICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgZXJyb3IgcG9zIH5tZXNzYWdlIGV4biBkZWZhdWx0XG5cbm1vZHVsZSB0eXBlIFN0b3J5VGFibGUgPSBzaWdcbiAgdHlwZSB0YWJsZVxuXG4gIHZhbCBmb2xkX3RhYmxlIDpcbiAgICAoICggVHJhY2UudCxcbiAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0LFxuICAgICAgICAnYSxcbiAgICAgICAgJ2EgKVxuICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC50ZXJuYXJ5LFxuICAgICAgdGFibGUsXG4gICAgICAnYSxcbiAgICAgICdhIClcbiAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnRlcm5hcnlcblxuICB2YWwgaW5pdF90YWJsZSA6IHRhYmxlIFMuUEguQi5QQi5DSS5Qby5LLkguemVyb2FyeVxuICB2YWwgY291bnRfc3RvcmllcyA6IHRhYmxlIC0+IGludFxuXG4gIHZhbCBhZGRfc3RvcnkgOlxuICAgICggQ2F1c2FsLmdyaWQsXG4gICAgICBUcmFjZS50LFxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0LFxuICAgICAgdGFibGUsXG4gICAgICB0YWJsZSApXG4gICAgUy5QSC5CLlBCLkNJLlBvLksuSC5xdWF0ZXJuYXJ5XG5cbiAgdmFsIGhhc2hfbGlzdCA6ICh0YWJsZSwgdGFibGUpIFMuUEguQi5QQi5DSS5Qby5LLkgudW5hcnlcblxuICB2YWwgc29ydF9saXN0IDpcbiAgICAoIHRhYmxlLFxuICAgICAgKFRyYWNlLnRcbiAgICAgICogQ2F1c2FsLmdyaWRcbiAgICAgICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0KVxuICAgICAgbGlzdCApXG4gICAgUy5QSC5CLlBCLkNJLlBvLksuSC51bmFyeVxuZW5kXG5cbm1vZHVsZSBIID0gUy5QSC5CLlBCLkNJLlBvLksuSFxubW9kdWxlIEEgPSBNb2RzLkR5bkFycmF5XG5cbnR5cGUgbGFiZWwgPSBzdHJpbmdcbnR5cGUgbm9kZV9raW5kID0gT0JTIHwgUEVSVCB8IFJVTEUgfCBJTklUIHwgRklDVElUSU9VU1xudHlwZSBub2RlID0gbm9kZV9raW5kICogbGFiZWxcblxudHlwZSBncmFwaCA9IHtcbiAgcm9vdDogaW50O1xuICBsYWJlbHM6IG5vZGUgQS50O1xuICBwcmVkOiBpbnQgbGlzdCBBLnQ7XG4gIGNvbmZsaWN0X3ByZWQ6IGludCBsaXN0IEEudDtcbn1cblxubGV0IGR1bW15X2dyYXBoID1cbiAge1xuICAgIHJvb3QgPSAwO1xuICAgIGxhYmVscyA9IEEubWFrZSAxIChGSUNUSVRJT1VTLCBcIlwiKTtcbiAgICBwcmVkID0gQS5tYWtlIDEgW107XG4gICAgY29uZmxpY3RfcHJlZCA9IEEubWFrZSAxIFtdO1xuICB9XG5cbnR5cGUgcG9zaXRpb24gPSBpbnRcbnR5cGUga2V5ID0gRnJlc2ggb2Ygbm9kZSB8IEZvcm1lciBvZiBwb3NpdGlvbiB8IFN0b3BcbnR5cGUgY2Fub25pY2FsX2Zvcm0gPSBrZXkgbGlzdFxudHlwZSBwcmVoYXNoID0gKG5vZGUgKiBpbnQpIGxpc3RcblxubGV0IF9kdW1teV9jYW5ub25pY2FsX2Zvcm0gPSBbXVxubGV0IF9kdW1teV9wcmVoYXNoID0gW11cblxubGV0IF9wcmludF9zdG9yeV9pbmZvIGxvZ2dlciBfcGFyYW1ldGVyIGpzb24gPVxuICAoKkxpc3QuaXRlclxuICAgIChmdW5cbiAgICAgIHN0b3J5X2luZm8gLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIGxvZ2dlclxuICAgICAgICAgIFwiaWQ6JWksIHRpbWU6JWYsIGV2ZW50OiVpXCJcbiAgICAgICAgICBzdG9yeV9pbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZFxuICAgICAgICAgIHN0b3J5X2luZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWVcbiAgICAgICAgICBzdG9yeV9pbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudFxuICAgICAgaW5cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXJcbiAgICApXG4gICAgc3RvcnlfaW5mb19saXN0XG4gICopXG4gIGxldCBjaGFubmVsX29wdCA9IExvZ2dlcnMuY2hhbm5lbF9vZl9sb2dnZXIgbG9nZ2VyIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggY2hhbm5lbF9vcHQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBjaGFubmVsIC0+XG4gICAgICBsZXQgKCkgPSBZb2pzb24uQmFzaWMudG9fY2hhbm5lbCBjaGFubmVsIGpzb24gaW5cbiAgICAgICgpXG4gIGluXG4gIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgKClcblxubGV0IHByaW50X2dyYXBoIGxvZ2dlciBwYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3IgaWQgc3RvcnlfaW5mbyBncmFwaCA9XG4gIGxldCBsb2dnZXIgPSBHcmFwaF9sb2dnZXJzX3NpZy5leHRlbmRfbG9nZ2VyIGxvZ2dlciBpblxuICBsZXQgKCkgPSBHcmFwaF9sb2dnZXJzX3NpZy5yZWZyZXNoX2lkIGxvZ2dlciBpblxuICBsZXQgKCkgPSBHcmFwaF9sb2dnZXJzLnByaW50X2dyYXBoX3ByZWFtYmxlIGxvZ2dlciBcInN0b3J5XCIgaW5cbiAgbGV0ICgpID1cbiAgICBBLml0ZXJpXG4gICAgICAoZnVuIGkgKG5vZGVfa2luZCwgaikgLT5cbiAgICAgICAgaWYgaSA9IDAgJiYgaiA9IFwiXCIgdGhlblxuICAgICAgICAgICgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBkaXJlY3RpdmVzID1cbiAgICAgICAgICAgIG1hdGNoIG5vZGVfa2luZCB3aXRoXG4gICAgICAgICAgICB8IE9CUyAtPiBbIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIEdyYXBoX2xvZ2dlcnNfc2lnLlJlZCBdXG4gICAgICAgICAgICB8IFBFUlQgLT5cbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuO1xuICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIEdyYXBoX2xvZ2dlcnNfc2lnLkludmhvdXNlO1xuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB8IFJVTEUgLT5cbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZTtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZTtcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfCBJTklUIC0+XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbjtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBHcmFwaF9sb2dnZXJzX3NpZy5Ib3VzZTtcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfCBGSUNUSVRJT1VTIC0+XG4gICAgICAgICAgICAgIFsgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aXNpYmxlIF1cbiAgICAgICAgICBpblxuICAgICAgICAgIEdyYXBoX2xvZ2dlcnMucHJpbnRfbm9kZSBsb2dnZXJcbiAgICAgICAgICAgIH5kaXJlY3RpdmVzOihHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBqIDo6IGRpcmVjdGl2ZXMpXG4gICAgICAgICAgICAoc3RyaW5nX29mX2ludCBpKVxuICAgICAgICApKVxuICAgICAgZ3JhcGgubGFiZWxzXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQS5pdGVyaVxuICAgICAgKGZ1biBpIGwgLT5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biBqIC0+XG4gICAgICAgICAgICBHcmFwaF9sb2dnZXJzLnByaW50X2VkZ2UgbG9nZ2VyIChzdHJpbmdfb2ZfaW50IGopIChzdHJpbmdfb2ZfaW50IGkpKVxuICAgICAgICAgIGwpXG4gICAgICBncmFwaC5wcmVkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQS5pdGVyaVxuICAgICAgKGZ1biBpIGwgLT5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biBqIC0+XG4gICAgICAgICAgICBHcmFwaF9sb2dnZXJzLnByaW50X2VkZ2UgbG9nZ2VyXG4gICAgICAgICAgICAgIH5kaXJlY3RpdmVzOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSBHcmFwaF9sb2dnZXJzX3NpZy5Eb3R0ZWQ7XG4gICAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd0hlYWQgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlO1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgKHN0cmluZ19vZl9pbnQgaSkgKHN0cmluZ19vZl9pbnQgaikpXG4gICAgICAgICAgbClcbiAgICAgIGdyYXBoLmNvbmZsaWN0X3ByZWRcbiAgaW5cbiAgbGV0IGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXIgPVxuICAgIG1hdGNoIEguZ2V0X2N1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXIgd2l0aFxuICAgIHwgTm9uZSAtPiBTdG9yeV9qc29uLkNhdXNhbFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgbGV0IHJlc3VsdCA9XG4gICAge1xuICAgICAgU3RvcnlfanNvbi5sb2dfaW5mbyA9IHN0b3J5X2luZm87XG4gICAgICBTdG9yeV9qc29uLnN0b3J5X21vZGUgPSBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgcGFyYW1ldGVyO1xuICAgICAgU3RvcnlfanNvbi5zdG9yeSA9XG4gICAgICAgIFN0b3J5X2pzb24uTmV3XG4gICAgICAgICAge1xuICAgICAgICAgICAgU3RvcnlfanNvbi5ncmFwaCA9IEdyYXBoX2xvZ2dlcnNfc2lnLmdyYXBoX29mX2xvZ2dlciBsb2dnZXI7XG4gICAgICAgICAgICBTdG9yeV9qc29uLmlkO1xuICAgICAgICAgIH07XG4gICAgfVxuICBpblxuICBsZXQgKCkgPSBILnB1c2hfanNvbiBwYXJhbWV0ZXIgKFN0b3J5X2pzb24uU3RvcnkgcmVzdWx0KSBpblxuICBlcnJvclxuXG5sZXQgcHJpbnRfZWx0IGxvZyBlbHQgPVxuICBtYXRjaCBlbHQgd2l0aFxuICB8IFN0b3AgLT5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiU1RPUFwiIGluXG4gICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICB8IEZvcm1lciBpIC0+XG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlBvaW50ZXIgJWlcIiBpIGluXG4gICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICB8IEZyZXNoIChfLCBzKSAtPlxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJFdmVudCAlc1wiIHMgaW5cbiAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nXG5cbmxldCBfcHJpbnRfY2Fub25pY2FsX2Zvcm0gcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIGRhZyA9XG4gIGxldCBfID0gTGlzdC5pdGVyIChwcmludF9lbHQgKEguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikpIGRhZyBpblxuICBsZXQgXyA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBpblxuICBlcnJvclxuXG5sZXQgX3ByaW50X3ByZWhhc2ggcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIHJlcHJlc2VudGF0aW9uID1cbiAgbGV0IF8gPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoKF8sIGIpLCBpKSAtPlxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKEguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgXCIlczolaSxcIiBiIGkpXG4gICAgICByZXByZXNlbnRhdGlvblxuICBpblxuICBsZXQgXyA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBpblxuICBlcnJvclxuXG5sZXQgbGFiZWwgaGFuZGxlciA9IGZ1bmN0aW9uXG4gIHwgQ2F1c2FsLkVWRU5UIChUcmFjZS5SVUxFIGkpIC0+IEguc3RyaW5nX29mX3J1bGVfaWQgaGFuZGxlciBpXG4gIHwgQ2F1c2FsLkVWRU5UIChUcmFjZS5JTklUIFsgaSBdKSAtPiBILnN0cmluZ19vZl9hZ2VudF9pZCBoYW5kbGVyIGlcbiAgfCBDYXVzYWwuRVZFTlQgKChUcmFjZS5JTklUIF8gfCBUcmFjZS5QRVJUIF8pIGFzIHgpIC0+XG4gICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAoVHJhY2UucHJpbnRfZXZlbnRfa2luZCB+ZW52OmhhbmRsZXIuSC5lbnYpIHhcbiAgfCBDYXVzYWwuT0JTIG5hbWUgLT4gbmFtZVxuXG5sZXQga2luZCBub2RlID1cbiAgbWF0Y2ggbm9kZSB3aXRoXG4gIHwgQ2F1c2FsLkVWRU5UIChUcmFjZS5JTklUIF8pIC0+IElOSVRcbiAgfCBDYXVzYWwuRVZFTlQgKFRyYWNlLlJVTEUgXykgLT4gUlVMRVxuICB8IENhdXNhbC5FVkVOVCAoVHJhY2UuUEVSVCBfKSAtPiBQRVJUXG4gIHwgQ2F1c2FsLk9CUyBfIC0+IE9CU1xuXG5sZXQgY29tcGFyZV9lbHQgeCB5ID1cbiAgbWF0Y2ggeCwgeSB3aXRoXG4gIHwgU3RvcCwgU3RvcCAtPiAwXG4gIHwgU3RvcCwgXyAtPiAtMVxuICB8IF8sIFN0b3AgLT4gMVxuICB8IEZvcm1lciBpLCBGb3JtZXIgaiAtPiBjb21wYXJlIGkgalxuICB8IEZvcm1lciBfLCBfIC0+IC0xXG4gIHwgXywgRm9ybWVyIF8gLT4gMVxuICB8IEZyZXNoIHMsIEZyZXNoIHMnIC0+IGNvbXBhcmUgcyBzJ1xuXG5sZXQgcXVpY2tfY29tcGFyZSBnIHQxIHQyID0gY29tcGFyZV9lbHQgKGcgdDEpIChnIHQyKVxuXG5sZXQgcmVjIGF1eCBjb21wYXJlX2VsdCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCB0IDo6IHEsIHQnIDo6IHEnIC0+XG4gICAgbGV0IGNtcCA9IGNvbXBhcmVfZWx0IHQgdCcgaW5cbiAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgIGF1eCBjb21wYXJlX2VsdCBxIHEnXG4gICAgZWxzZVxuICAgICAgY21wXG5cbmxldCBjb21wYXJlX2Nhbm9uaWMgPSBhdXggY29tcGFyZV9lbHRcblxubGV0IGNvbXBhcmVfY2Fub25pY19vcHQgeCB5ID1cbiAgbWF0Y2ggeCwgeSB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiAwXG4gIHwgTm9uZSwgXyAtPiAtMVxuICB8IF8sIE5vbmUgLT4gMVxuICB8IFNvbWUgeCwgU29tZSB5IC0+IGNvbXBhcmVfY2Fub25pYyB4IHlcblxubGV0IGNvbXBhcmVfcHJlaGFzaCA9IGF1eCBjb21wYXJlXG5cbmxldCBncmFwaF9vZl9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWQgPVxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5HcmFwaF9jb252ZXJzaW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgbGV0IGlkcyA9IEhhc2h0YmwuZm9sZCAoZnVuIGtleSBfIGwgLT4ga2V5IDo6IGwpIGdyaWQuQ2F1c2FsLmZsb3cgW10gaW5cbiAgbGV0IGxhYmVsID0gbGFiZWwgaGFuZGxlciBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb25maWcgPVxuICAgIENhdXNhbC5jdXRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpZHMgZ3JpZFxuICBpblxuICBtYXRjaCBNb2RzLkludE1hcC5tYXhfa2V5IGNvbmZpZy5DYXVzYWwucHJlY18xIHdpdGhcbiAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgZHVtbXlfZ3JhcGhcbiAgfCBTb21lIHNpemUgLT5cbiAgICBsZXQgc3VjY19zaXplID0gc3VjYyBzaXplIGluXG4gICAgbGV0IGxhYmVscyA9IEEubWFrZSBzdWNjX3NpemUgKEZJQ1RJVElPVVMsIFwiXCIpIGluXG4gICAgbGV0IHByZWQgPSBBLm1ha2Ugc3VjY19zaXplIFtdIGluXG4gICAgbGV0IGNvbmZsaWN0X3ByZWQgPSBBLm1ha2Ugc3VjY19zaXplIFtdIGluXG4gICAgbGV0ICgpID1cbiAgICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgICAgKGZ1biBpIGF0b21fa2luZCAtPiBBLnNldCBsYWJlbHMgaSAoa2luZCBhdG9tX2tpbmQsIGxhYmVsIGF0b21fa2luZCkpXG4gICAgICAgIGNvbmZpZy5DYXVzYWwuZXZlbnRzX2tpbmRcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBNb2RzLkludE1hcC5pdGVyXG4gICAgICAgIChmdW4gaSBzIC0+XG4gICAgICAgICAgaWYgTW9kcy5JbnRTZXQuaXNfZW1wdHkgcyB0aGVuXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEEuc2V0IHByZWQgaSAoTW9kcy5JbnRTZXQuZWxlbWVudHMgcykpXG4gICAgICAgIGNvbmZpZy5DYXVzYWwucHJlY18xXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kcy5JbnRNYXAuaXRlclxuICAgICAgICAoZnVuIGkgcyAtPlxuICAgICAgICAgIGlmIE1vZHMuSW50U2V0LmlzX2VtcHR5IHMgdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBLnNldCBjb25mbGljdF9wcmVkIGkgKE1vZHMuSW50U2V0LmVsZW1lbnRzIHMpKVxuICAgICAgICBjb25maWcuQ2F1c2FsLmNvbmZsaWN0XG4gICAgaW5cbiAgICBsZXQgcm9vdCA9IHNpemUgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLkdyYXBoX2NvbnZlcnNpb24gTm9uZSBsb2dfaW5mb1xuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCB7IHJvb3Q7IGxhYmVsczsgcHJlZDsgY29uZmxpY3RfcHJlZCB9XG5cbmxldCBjb25jYXQgbGlzdDEgbGlzdDIgPVxuICBsZXQgcmVjIGF1eCBsaXN0MSBsaXN0MiA9XG4gICAgbWF0Y2ggbGlzdDIgd2l0aFxuICAgIHwgW10gLT4gbGlzdDFcbiAgICB8IHQgOjogcSAtPiBhdXggKHQgOjogbGlzdDEpIHFcbiAgaW5cbiAgYXV4IGxpc3QyIChMaXN0LnJldiBsaXN0MSlcblxubGV0IGNvbXBhcmVfbm9kZSAoYSwgXykgKGIsIF8pID0gY29tcGFyZSBhIGJcblxubGV0IHNtYXNoIGwgPVxuICBsZXQgcmVjIGF1eCBsIGZvcm1lciB3ZWlnaHQgb3V0cHV0ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IExpc3QucmV2ICgoZm9ybWVyLCB3ZWlnaHQpIDo6IG91dHB1dClcbiAgICB8ICh0LCB3dCkgOjogcSB3aGVuIHQgPSBmb3JtZXIgLT4gYXV4IHEgZm9ybWVyICh3dCArIHdlaWdodCkgb3V0cHV0XG4gICAgfCAodCwgd3QpIDo6IHEgLT4gYXV4IHEgdCB3dCAoKGZvcm1lciwgd2VpZ2h0KSA6OiBvdXRwdXQpXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgKHQsIHd0KSA6OiBxIC0+IGF1eCBxIHQgd3QgW11cblxubGV0IHByZWhhc2ggX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBncmFwaCA9XG4gICggZXJyb3IsXG4gICAgc21hc2hcbiAgICAgIChMaXN0LnNvcnQgY29tcGFyZV9ub2RlXG4gICAgICAgICAobGV0IGwgPSByZWYgW10gaW5cbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBBLml0ZXJcbiAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBGSUNUSVRJT1VTLCBfIC0+ICgpXG4gICAgICAgICAgICAgICAgfCAoKE9CUyB8IFBFUlQgfCBSVUxFIHwgSU5JVCksIF8pIGFzIGEgLT4gbCA6PSAoYSwgMSkgOjogIWwpXG4gICAgICAgICAgICAgIGdyYXBoLmxhYmVsc1xuICAgICAgICAgIGluXG4gICAgICAgICAgIWwpKSApXG5cbmxldCBjYW5vbmljYWxpemUgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoID1cbiAgbGV0IGFzc28gPSBNb2RzLkludE1hcC5lbXB0eSBpblxuICBsZXQgbGFiZWwgaSA9IHRyeSBBLmdldCBncmFwaC5sYWJlbHMgaSB3aXRoIF8gLT4gRklDVElUSU9VUywgXCJcIiBpblxuICBsZXQgcmVjIHBvcCAoY2FuZGlkYXRlIDoga2V5IGxpc3QpICh0b19iZWF0IDoga2V5IGxpc3Qgb3B0aW9uKSA9XG4gICAgbWF0Y2ggY2FuZGlkYXRlLCB0b19iZWF0IHdpdGhcbiAgICB8IFtdLCBfIHwgXywgTm9uZSAtPlxuICAgICAgU29tZSB0b19iZWF0ICgqIGNhbmRpZGF0ZSBpcyBhIHByZWZpeCBvZiB0b19iZWF0LCB3ZSBvdXRwdXQgdGhlIHN1ZmZpeCAqKVxuICAgIHwgXyA6OiBfLCBTb21lIFtdIC0+IE5vbmUgKCogdGhlIGNhbmRpZGF0ZSBpcyB3b3JzZSAqKVxuICAgIHwgdCA6OiBxLCBTb21lICh0ciA6OiBxcikgLT5cbiAgICAgIGxldCBjbXAgPSBjb21wYXJlX2VsdCB0IHRyIGluXG4gICAgICBpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgU29tZSBOb25lICgqIHRoZSBjYW5kaWRhdGUgaXMgYmV0dGVyICopXG4gICAgICBlbHNlIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICBwb3AgcSAoU29tZSBxcilcbiAgICAgICgqIHdlIGRvIG5vdCBrbm93LCB3ZSBsb29rIGZ1cnRoZXIgKilcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgICgqIHRoZSBjYW5kaWRhdGUgaXMgd29yc2UgKilcbiAgaW5cbiAgbGV0IHJlYyB2aXNpdCAoaSA6IGludCkgKG1hcCA6IGludCBNb2RzLkludE1hcC50KSAoZnJlc2hfcG9zIDogaW50KVxuICAgICAgKHRvX2JlYXQgOiBrZXkgbGlzdCBvcHRpb24pID1cbiAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIG1hcCB3aXRoXG4gICAgfCBTb21lIGkgLT5cbiAgICAgICgqIHRoZSBub2RlIGhhcyBhbHJlYWR5IGJlZW4gc2Vlbiwgd2UgcHV0IGEgcG9pbnRlciAqKVxuICAgICAgKCowKilcbiAgICAgIChtYXRjaCBwb3AgWyBGb3JtZXIgaSBdIHRvX2JlYXQgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIHRvIGJlYXQgaXMgYmV0dGVyLCB3ZSBjdXQgdGhlIGNvbnN0cnVjdGlvbiAqKVxuICAgICAgICBOb25lXG4gICAgICB8IFNvbWUgdG9fYmVhdCAtPlxuICAgICAgICAoKiB0byBiZWF0IG1heSBiZSBpbXByb3ZlZCwgd2UgZ28gb24gKilcbiAgICAgICAgU29tZSAoWyBGb3JtZXIgaSBdLCBtYXAsIGZyZXNoX3BvcywgdG9fYmVhdCkpXG4gICAgKCowKilcbiAgICB8IE5vbmUgLT5cbiAgICAgICgqIHRoZSBub2RlIGlzIHNlZW4gZm9yIHRoZSBmaXJzdCB0aW1lICopXG4gICAgICBsZXQgbWFwID0gTW9kcy5JbnRNYXAuYWRkIGkgZnJlc2hfcG9zIG1hcCBpblxuICAgICAgbGV0IGZyZXNoX3BvcyA9IGZyZXNoX3BvcyArIDEgaW5cbiAgICAgICgqMCopXG4gICAgICAobWF0Y2ggcG9wIFsgRnJlc2ggKGxhYmVsIGkpIF0gdG9fYmVhdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lICh0b19iZWF0IDoga2V5IGxpc3Qgb3B0aW9uKSAtPlxuICAgICAgICAoKjEqKVxuICAgICAgICBsZXQgc2liYmxpbmcxID0gdHJ5IEEuZ2V0IGdyYXBoLnByZWQgaSB3aXRoIE5vdF9mb3VuZCAtPiBbXSBpblxuICAgICAgICBsZXQgc2liYmxpbmcyID1cbiAgICAgICAgICB0cnkgQS5nZXQgZ3JhcGguY29uZmxpY3RfcHJlZCBpIHdpdGggTm90X2ZvdW5kIC0+IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgYmVzdF9zaWJibGluZyAobSA6IGludCBNb2RzLkludE1hcC50KSAoZiA6IGludClcbiAgICAgICAgICAgIChjYW5kaWRhdGVzIDogaW50IGxpc3QpIChub3RfYmVzdCA6IGludCBsaXN0KVxuICAgICAgICAgICAgKHRvX2JlYXQgOiBrZXkgbGlzdCBvcHRpb24pXG4gICAgICAgICAgICAocmVjb3JkIDpcbiAgICAgICAgICAgICAgKGludCAqIChrZXkgbGlzdCAqIGludCBNb2RzLkludE1hcC50ICogaW50ICoga2V5IGxpc3Qgb3B0aW9uKSlcbiAgICAgICAgICAgICAgb3B0aW9uKSA9XG4gICAgICAgICAgbWF0Y2ggY2FuZGlkYXRlcyB3aXRoXG4gICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgKCoyKilcbiAgICAgICAgICAgIChtYXRjaCByZWNvcmQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSByZWNvcmQgLT4gU29tZSAobm90X2Jlc3QsIHJlY29yZCkpXG4gICAgICAgICAgKCoyKilcbiAgICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgICAgbGV0IHJlcCA9IHZpc2l0IHQgbSBmIHRvX2JlYXQgaW5cbiAgICAgICAgICAgICgqMiopXG4gICAgICAgICAgICAobWF0Y2ggcmVwIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBiZXN0X3NpYmJsaW5nIG0gZiBxICh0IDo6IG5vdF9iZXN0KSB0b19iZWF0IHJlY29yZFxuICAgICAgICAgICAgfCBTb21lICgoZW5jb2RpbmcgOiBrZXkgbGlzdCksIG1hcCwgZnJlc2gsIHJlc2lkdWUpIC0+XG4gICAgICAgICAgICAgICgqMyopXG4gICAgICAgICAgICAgIGxldCAodG9fYmVhdF9hZnRlciA6IGtleSBsaXN0IG9wdGlvbikgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlc2lkdWUgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBTb21lIGVuY29kaW5nXG4gICAgICAgICAgICAgICAgfCBfIC0+IHRvX2JlYXRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IChub3RfYmVzdCA6IGludCBsaXN0KSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcmVjb3JkIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbm90X2Jlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgKGJlc3QsIF8pIC0+IGJlc3QgOjogbm90X2Jlc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYmVzdF9zaWJibGluZyBtIGYgcSBub3RfYmVzdCB0b19iZWF0X2FmdGVyXG4gICAgICAgICAgICAgICAgKFNvbWUgKHQsIChlbmNvZGluZywgbWFwLCBmcmVzaCwgcmVzaWR1ZSkpKSlcbiAgICAgICAgICAoKjMqKVxuICAgICAgICAgICgqMiopXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgYXV4IG0gZiBsIHNvbCB0b19iZWF0ID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IFNvbWUgKG0sIGYsIHNvbCwgdG9fYmVhdClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICgqMiopXG4gICAgICAgICAgICAobWF0Y2ggYmVzdF9zaWJibGluZyBtIGYgbCBbXSB0b19iZWF0IE5vbmUgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSAobm90X2Jlc3QsIHJlY29yZCkgLT5cbiAgICAgICAgICAgICAgbGV0IF8sIChiZXN0LCBtYXAsIGZyZXNoX3BvcywgdG9fYmVhdF9hZnRlcikgPSByZWNvcmQgaW5cbiAgICAgICAgICAgICAgYXV4IG1hcCBmcmVzaF9wb3Mgbm90X2Jlc3QgKGNvbmNhdCBzb2wgYmVzdCkgdG9fYmVhdF9hZnRlcilcbiAgICAgICAgICAoKjIqKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbGlzdCA9IFsgRnJlc2ggKGxhYmVsIGkpIF0gaW5cbiAgICAgICAgKCoyKilcbiAgICAgICAgbGV0IGcgeCA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24geCBtYXAgd2l0aFxuICAgICAgICAgIHwgU29tZSB4IC0+IEZvcm1lciB4XG4gICAgICAgICAgfCBOb25lIC0+IEZyZXNoIChsYWJlbCB4KVxuICAgICAgICBpblxuICAgICAgICBsZXQgc2liYmxpbmcxID0gTGlzdC5zb3J0IChxdWlja19jb21wYXJlIGcpIHNpYmJsaW5nMSBpblxuICAgICAgICAobWF0Y2ggYXV4IG1hcCBmcmVzaF9wb3Mgc2liYmxpbmcxIGxpc3QgdG9fYmVhdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSAobWFwLCBmcmVzaF9wb3MsIGxpc3QsIHRvX2JlYXQpIC0+XG4gICAgICAgICAgKCozKilcbiAgICAgICAgICAobWF0Y2ggcG9wIFsgU3RvcCBdIHRvX2JlYXQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIHRvX2JlYXQgLT5cbiAgICAgICAgICAgICgqNCopXG4gICAgICAgICAgICBsZXQgbGlzdCA9IGNvbmNhdCBsaXN0IFsgU3RvcCBdIGluXG4gICAgICAgICAgICAoKjUqKVxuICAgICAgICAgICAgbGV0IGcgeCA9XG4gICAgICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHggbWFwIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHggLT4gRm9ybWVyIHhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IEZyZXNoIChsYWJlbCB4KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzaWJibGluZzIgPSBMaXN0LnNvcnQgKHF1aWNrX2NvbXBhcmUgZykgc2liYmxpbmcyIGluXG4gICAgICAgICAgICAobWF0Y2ggYXV4IG1hcCBmcmVzaF9wb3Mgc2liYmxpbmcyIGxpc3QgdG9fYmVhdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgfCBTb21lIChtYXAsIGZyZXNoX3BvcywgbGlzdCwgdG9fYmVhdCkgLT5cbiAgICAgICAgICAgICAgKCo2KilcbiAgICAgICAgICAgICAgKG1hdGNoIHBvcCBbIFN0b3AgXSB0b19iZWF0IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIHRvX2JlYXQgLT5cbiAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IGNvbmNhdCBsaXN0IFsgU3RvcCBdIGluXG4gICAgICAgICAgICAgICAgU29tZSAobGlzdCwgbWFwLCBmcmVzaF9wb3MsIHRvX2JlYXQpKSlcbiAgICAgICAgICAgICgqNiopXG4gICAgICAgICAgICAoKjUqKSlcbiAgICAgICAgICAoKjQqKSlcbiAgICAgICAgKCozKilcbiAgICAgICAgKCoyKikpXG4gICAgKCoxKilcbiAgICAoKjAqKVxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5DYW5ub25pY19mb3JtX2NvbXB1dGF0aW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgbGV0IGVycm9yLCBvdXRwdXQgPVxuICAgIG1hdGNoIHZpc2l0IGdyYXBoLnJvb3QgYXNzbyAwIE5vbmUgd2l0aFxuICAgIHwgU29tZSAocmVwLCBfLCBfLCBfKSAtPiBlcnJvciwgcmVwXG4gICAgfCBOb25lIC0+IGVycm9yLCBbXVxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLkNhbm5vbmljX2Zvcm1fY29tcHV0YXRpb24gTm9uZSBsb2dfaW5mb1xuICBpblxuICBlcnJvciwgbG9nX2luZm8sIG91dHB1dFxuXG5tb2R1bGUgTGlzdFRhYmxlIDogU3RvcnlUYWJsZSA9IHN0cnVjdFxuICB0eXBlIHRhYmxlID1cbiAgICAocHJlaGFzaFxuICAgICogKENhdXNhbC5ncmlkXG4gICAgICAqIGdyYXBoXG4gICAgICAqIGNhbm9uaWNhbF9mb3JtIG9wdGlvblxuICAgICAgKiBUcmFjZS50XG4gICAgICAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgbGlzdClcbiAgICAgIGxpc3QpXG4gICAgbGlzdFxuXG4gIGxldCBpbml0X3RhYmxlIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgPSBlcnJvciwgbG9nX2luZm8sIFtdXG5cbiAgbGV0IGFkZF9zdG9yeSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkIHByZXRyYWNlIGluZm8gdGFibGUgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGdyYXBoID1cbiAgICAgIGdyYXBoX29mX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBwcmVoYXNoID0gcHJlaGFzaCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBncmFwaCBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKHByZWhhc2gsIFsgZ3JpZCwgZ3JhcGgsIE5vbmUsIHByZXRyYWNlLCBpbmZvIF0pIDo6IHRhYmxlXG5cbiAgbGV0IHNvcnRfb3V0ZXIgPVxuICAgIGxldCBjb21wYXJlIChhLCBfKSAoYiwgXykgPSBjb21wYXJlX3ByZWhhc2ggYSBiIGluXG4gICAgTGlzdC5zb3J0IGNvbXBhcmVcblxuICBsZXQgc29ydF9pbm5lciA9XG4gICAgbGV0IGNvbXBhcmUgKF8sIF8sIGEsIF8sIF8pIChfLCBfLCBiLCBfLCBfKSA9IGNvbXBhcmVfY2Fub25pY19vcHQgYSBiIGluXG4gICAgTGlzdC5zb3J0IGNvbXBhcmVcblxuICBsZXQgaGFzaF9pbm5lciBfcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIGNtcCBsaXN0ID1cbiAgICBsZXQgbGlzdCA9IHNvcnRfaW5uZXIgbGlzdCBpblxuICAgIGxldCByZWMgdmlzaXQgZWxlbWVudHNfdG9fc3RvcmUgc3RvcmVkX2VsZW1lbnRzIGxhc3RfZWxlbWVudFxuICAgICAgICBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMgPVxuICAgICAgbWF0Y2ggZWxlbWVudHNfdG9fc3RvcmUsIGxhc3RfZWxlbWVudCB3aXRoXG4gICAgICB8IChfLCBfLCB0LCBfLCBsaXN0KSA6OiBxLCBTb21lIChfLCBfLCBvbGQsIF8pIHdoZW4gY29tcGFyZSB0IG9sZCA9IDAgLT5cbiAgICAgICAgdmlzaXQgcSBzdG9yZWRfZWxlbWVudHMgbGFzdF9lbGVtZW50XG4gICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgKGZ1biBsaXN0IGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICAgICAgIGxpc3QgbGFzdF9lbGVtZW50X29jY3VycmVuY2VzKVxuICAgICAgfCAoZ3JpZCwgZ3JhcGgsIHQsIGV2ZW50LCBsaXN0KSA6OiBxLCBTb21lIChncmlkJywgZ3JhcGgnLCBhLCBldmVudCcpIC0+XG4gICAgICAgIHZpc2l0IHFcbiAgICAgICAgICAoKGdyaWQnLCBncmFwaCcsIGEsIGV2ZW50JywgTGlzdC5zb3J0IGNtcCBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMpXG4gICAgICAgICAgOjogc3RvcmVkX2VsZW1lbnRzKVxuICAgICAgICAgIChTb21lIChncmlkLCBncmFwaCwgdCwgZXZlbnQpKVxuICAgICAgICAgICgqTGlzdC5yZXYqKSBsaXN0XG4gICAgICB8IChncmlkLCBncmFwaCwgdCwgZXZlbnQsIGxpc3QpIDo6IHEsIE5vbmUgLT5cbiAgICAgICAgdmlzaXQgcSBzdG9yZWRfZWxlbWVudHMgKFNvbWUgKGdyaWQsIGdyYXBoLCB0LCBldmVudCkpIChMaXN0LnJldiBsaXN0KVxuICAgICAgfCBbXSwgTm9uZSAtPiBbXVxuICAgICAgfCBbXSwgU29tZSAoZ3JpZCwgZ3JhcGgsIGEsIGV2ZW50KSAtPlxuICAgICAgICBMaXN0LnJldlxuICAgICAgICAgICgoZ3JpZCwgZ3JhcGgsIGEsIGV2ZW50LCBMaXN0LnNvcnQgY21wIGxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcylcbiAgICAgICAgICA6OiBzdG9yZWRfZWxlbWVudHMpXG4gICAgaW5cbiAgICBsZXQgbGlzdCA9IHZpc2l0IGxpc3QgW10gTm9uZSBbXSBpblxuICAgIGVycm9yLCBsaXN0XG5cbiAgbGV0IGhhc2hfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0ID1cbiAgICBsZXQgbGlzdCA9IHNvcnRfb3V0ZXIgKExpc3QucmV2IGxpc3QpIGluXG4gICAgbGV0IHJlYyB2aXNpdCBlbGVtZW50c190b19zdG9yZSBzdG9yZWRfZWxlbWVudHMgbGFzdF9lbGVtZW50XG4gICAgICAgIGxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyA9XG4gICAgICBtYXRjaCBlbGVtZW50c190b19zdG9yZSwgbGFzdF9lbGVtZW50IHdpdGhcbiAgICAgIHwgKCh0IDogcHJlaGFzaCksIGxpc3QpIDo6IHEsIFNvbWUgb2xkIHdoZW4gY29tcGFyZSB0IG9sZCA9IDAgLT5cbiAgICAgICAgdmlzaXQgcSBzdG9yZWRfZWxlbWVudHMgbGFzdF9lbGVtZW50XG4gICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgKGZ1biBsaXN0IGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICAgICAgIGxpc3QgbGFzdF9lbGVtZW50X29jY3VycmVuY2VzKVxuICAgICAgfCAodCwgbGlzdCkgOjogcSwgU29tZSBhIC0+XG4gICAgICAgIHZpc2l0IHEgKChhLCBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMpIDo6IHN0b3JlZF9lbGVtZW50cykgKFNvbWUgdCkgbGlzdFxuICAgICAgfCAodCwgbGlzdCkgOjogcSwgTm9uZSAtPiB2aXNpdCBxIHN0b3JlZF9lbGVtZW50cyAoU29tZSB0KSAoTGlzdC5yZXYgbGlzdClcbiAgICAgIHwgW10sIE5vbmUgLT4gW11cbiAgICAgIHwgW10sIFNvbWUgYSAtPiBMaXN0LnJldiAoKGEsIGxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcykgOjogc3RvcmVkX2VsZW1lbnRzKVxuICAgIGluXG4gICAgbGV0IGxpc3QgPSB2aXNpdCBsaXN0IFtdIE5vbmUgW10gaW5cbiAgICBsZXQgcmVjIHZpc2l0MiBsIGxvZ19pbmZvIGVycm9yIGFjYyA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBhY2NcbiAgICAgIHwgKHQsIGxpc3QpIDo6IHEgLT5cbiAgICAgICAgaWYgTGlzdC5sZW5ndGggbGlzdCA9IDEgdGhlblxuICAgICAgICAgIHZpc2l0MiBxIGxvZ19pbmZvIGVycm9yICgodCwgbGlzdCkgOjogYWNjKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0JyA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGxpc3QnKSAoZ3JpZCwgZ3JhcGgsIGRhZywgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBkYWcnID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGRhZyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gY2Fub25pY2FsaXplIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgZGFnIC0+IGVycm9yLCBsb2dfaW5mbywgZGFnXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChncmlkLCBncmFwaCwgU29tZSBkYWcnLCBiLCBjKSA6OiBsaXN0JylcbiAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgW10pIGxpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbGlzdCcgPVxuICAgICAgICAgICAgaGFzaF9pbm5lciBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvclxuICAgICAgICAgICAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uY29tcGFyZV9ieV9zdG9yeV9pZCBsaXN0J1xuICAgICAgICAgIGluXG4gICAgICAgICAgdmlzaXQyIHEgbG9nX2luZm8gZXJyb3IgKCh0LCBsaXN0JykgOjogYWNjKVxuICAgICAgICApXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID0gdmlzaXQyIGxpc3QgbG9nX2luZm8gZXJyb3IgW10gaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGxpc3RcblxuICBsZXQgcHJvamVjdF90dXBsZSAoZ3JpZCwgXywgXywgdHJhY2UsIGxpc3QpID0gTGlzdC5oZCBsaXN0LCB0cmFjZSwgZ3JpZCwgbGlzdFxuXG4gIGxldCBzb3J0X2xpc3QgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0ID1cbiAgICBsZXQgZmxhdF9saXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbGlzdF9vdXQgKF9wcmVoYXNoLCBsaXN0KSAtPlxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGxpc3Rfb3V0IHR1cGxlIC0+IHByb2plY3RfdHVwbGUgdHVwbGUgOjogbGlzdF9vdXQpXG4gICAgICAgICAgICBsaXN0X291dCBsaXN0KVxuICAgICAgICBbXSBsaXN0XG4gICAgaW5cbiAgICBsZXQgY29tcGFyZV9wYWlyIChhLCBfLCBfLCBfKSAoYywgXywgXywgXykgPVxuICAgICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLmNvbXBhcmVfYnlfc3RvcnlfaWQgYSBjXG4gICAgaW5cbiAgICBsZXQgZmxhdF9saXN0ID0gTGlzdC5zb3J0IGNvbXBhcmVfcGFpciBmbGF0X2xpc3QgaW5cbiAgICAoIGVycm9yLFxuICAgICAgbG9nX2luZm8sXG4gICAgICBMaXN0LnJldl9tYXAgKGZ1biAoX2EsIGIsIGMsIGQpIC0+IGIsIGMsIGQpIChMaXN0LnJldiBmbGF0X2xpc3QpIClcblxuICBsZXQgY291bnRfc3RvcmllcyBsaXN0ID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIG4gbCAtPiBuICsgTGlzdC5sZW5ndGggKHNuZCBsKSkgMCBsaXN0XG5cbiAgbGV0IGZvbGRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gKGVycm9yIDogRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyKSBnXG4gICAgICBsaXN0IGEgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGEgKF8sIGwpIC0+XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBhKSAoXywgXywgXywgeCwgeSkgLT5cbiAgICAgICAgICAgIGcgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgeCB5IGEpXG4gICAgICAgICAgYSBsKVxuICAgICAgKGVycm9yLCBsb2dfaW5mbywgYSkgKExpc3QucmV2IGxpc3QpXG5lbmRcblxubW9kdWxlIEJ1Y2tldFRhYmxlIDogU3RvcnlUYWJsZSA9IHN0cnVjdFxuICB0eXBlIHN0b3J5X2lkID0gaW50XG5cbiAgbGV0IHN1Y2Nfc3RvcnlfaWQgPSBzdWNjXG5cbiAgdHlwZSBwcmVoYXNoX2VsdCA9IG5vZGUgKiBpbnRcblxuICBtb2R1bGUgS2V5UyA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBrZXlcblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGxldCBwcmludCBfIF8gPSAoKVxuICBlbmQpXG5cbiAgbW9kdWxlIFByZUhhc2hTID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IHByZWhhc2hfZWx0XG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgcHJpbnQgXyBfID0gKClcbiAgZW5kKVxuXG4gIG1vZHVsZSBLZXlNYXAgPSBLZXlTLk1hcFxuICBtb2R1bGUgUHJlSGFzaE1hcCA9IFByZUhhc2hTLk1hcFxuXG4gIHR5cGUgaW5uZXJfdHJlZSA9XG4gICAgfCBJbm5lcl9ub2RlIG9mIChpbm5lcl90cmVlIEtleU1hcC50ICogc3RvcnlfaWQgb3B0aW9uKVxuICAgIHwgSW5uZXJfbGVhdmUgb2YgKGtleSBsaXN0ICogc3RvcnlfaWQpXG5cbiAgdHlwZSBvdXRlcl90cmVlID1cbiAgICB8IEVtcHR5XG4gICAgfCBPdXRlcl9ub2RlIG9mIChvdXRlcl90cmVlIFByZUhhc2hNYXAudCAqIHN0b3J5X2lkIG9wdGlvbilcbiAgICB8IE91dGVyX2xlYXZlIG9mIChwcmVoYXNoX2VsdCBsaXN0ICogc3RvcnlfaWQpXG4gICAgfCBUb19pbm5lciBvZiAob3V0ZXJfdHJlZSBQcmVIYXNoTWFwLnQgKiBpbm5lcl90cmVlKVxuXG4gIHR5cGUgdGFibGUgPSB7XG4gICAgdHJlZTogb3V0ZXJfdHJlZTtcbiAgICBhcnJheTpcbiAgICAgIChDYXVzYWwuZ3JpZFxuICAgICAgKiBncmFwaFxuICAgICAgKiBjYW5vbmljYWxfZm9ybSBvcHRpb25cbiAgICAgICogVHJhY2UudFxuICAgICAgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIFRyYWNlLlNpbXVsYXRpb25faW5mby50IGxpc3QpXG4gICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi50O1xuICAgIGZyZXNoX2lkOiBzdG9yeV9pZDtcbiAgfVxuXG4gIGxldCBpbml0X3RhYmxlIHBhcmFtZXRlcnMgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgPVxuICAgIGxldCBlcnJvciwgYXJyYXkgPVxuICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuY3JlYXRlXG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVycylcbiAgICAgICAgZXJyb3IgMFxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCB7IHRyZWUgPSBFbXB0eTsgYXJyYXk7IGZyZXNoX2lkID0gMCB9XG5cbiAgbGV0IGdldF9jYW5ub25pY2FsX2Zvcm0gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaWQgdGFibGUgPVxuICAgIGxldCBlcnJvciwgYXNzb2MgPVxuICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuZ2V0XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvciBpZCB0YWJsZS5hcnJheVxuICAgIGluXG4gICAgbWF0Y2ggYXNzb2Mgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGVycm9yLCBhID1cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcInVua25vd24gc3RvcnkgaWRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb25zaXN0ZW50IHN0b3J5IGlkXCIpICh0YWJsZSwgW10pXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBhXG4gICAgfCBTb21lIChfLCBfLCBTb21lIGNhbm5vbmljLCBfLCBfKSAtPiBlcnJvciwgbG9nX2luZm8sICh0YWJsZSwgY2Fubm9uaWMpXG4gICAgfCBTb21lIChncmlkLCBncmFwaCwgTm9uZSwgdHJhY2UsIGluZm8pIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYW5ub25pYyA9XG4gICAgICAgIGNhbm9uaWNhbGl6ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmFwaFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgYXJyYXknID1cbiAgICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuc2V0XG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgZXJyb3IgaWRcbiAgICAgICAgICAoZ3JpZCwgZ3JhcGgsIFNvbWUgY2Fubm9uaWMsIHRyYWNlLCBpbmZvKVxuICAgICAgICAgIHRhYmxlLmFycmF5XG4gICAgICBpblxuICAgICAgbGV0IHRhYmxlID0geyB0YWJsZSB3aXRoIGFycmF5ID0gYXJyYXknIH0gaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKHRhYmxlLCBjYW5ub25pYylcblxuICBsZXQgYWRkX3N0b3J5IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWQgcHJldHJhY2Ugc3RvcnlfaW5mbyB0YWJsZVxuICAgICAgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGdyYXBoID1cbiAgICAgIGdyYXBoX29mX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBwcmVoYXNoID0gcHJlaGFzaCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBncmFwaCBpblxuICAgIGxldCBhc3NvYyA9IGdyaWQsIGdyYXBoLCBOb25lLCBwcmV0cmFjZSwgc3RvcnlfaW5mbyBpblxuICAgIGxldCBhZGRfc3RvcnkgZXJyb3IgeCB0YWJsZSA9XG4gICAgICBsZXQgZXJyb3IsIGFycmF5ID1cbiAgICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuc2V0XG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgZXJyb3IgdGFibGUuZnJlc2hfaWQgeCB0YWJsZS5hcnJheVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciA9XG4gICAgICAgIGlmXG4gICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXJcbiAgICAgICAgICAmJiBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlclxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgcHJpbnRfZ3JhcGhcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X3NlcnZlcl9jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgdGFibGUuZnJlc2hfaWQgc3RvcnlfaW5mbyBncmFwaFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3JcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgZXJyb3JcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgdGFibGUuZnJlc2hfaWQsXG4gICAgICAgIHsgdGFibGUgd2l0aCBhcnJheTsgZnJlc2hfaWQgPSBzdWNjX3N0b3J5X2lkIHRhYmxlLmZyZXNoX2lkIH0gKVxuICAgIGluXG4gICAgbGV0IGFkZF9zdG9yeV9pbmZvIGVycm9yIHN0b3J5X2luZm8gaWQgdGFibGUgPVxuICAgICAgbGV0IGVycm9yLCBhc3NvX29wdCA9XG4gICAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLmdldFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGVycm9yIGlkIHRhYmxlLmFycmF5XG4gICAgICBpblxuICAgICAgbWF0Y2ggYXNzb19vcHQgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJVbmtub3duIHN0b3J5IGlkXCJcbiAgICAgICAgICAoRmFpbHVyZSBcIlVua25vd24gc3RvcnkgaWRcIikgdGFibGVcbiAgICAgIHwgU29tZSAoZ3JpZCwgZ3JhcGgsIGNhbm9uaWMsIHRyYWNlLCBpbmZvKSAtPlxuICAgICAgICBsZXQgY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHBhcmFtZXRlciA9XG4gICAgICAgICAgbWF0Y2ggSC5nZXRfY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHBhcmFtZXRlciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFN0b3J5X2pzb24uQ2F1c2FsXG4gICAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBTdG9yeV9qc29uLnN0b3J5X21vZGUgPSBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgcGFyYW1ldGVyO1xuICAgICAgICAgICAgU3RvcnlfanNvbi5sb2dfaW5mbyA9IHN0b3J5X2luZm87XG4gICAgICAgICAgICBTdG9yeV9qc29uLnN0b3J5ID0gU3RvcnlfanNvbi5TYW1lX2FzIGlkO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZlxuICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXJcbiAgICAgICAgICAgICYmIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyIChTdG9yeV9qc29uLlN0b3J5IHJlc3VsdClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBhcnJheSA9XG4gICAgICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuc2V0XG4gICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGVycm9yIGlkXG4gICAgICAgICAgICAoZ3JpZCwgZ3JhcGgsIGNhbm9uaWMsIHRyYWNlLCBzdG9yeV9pbmZvIEAgaW5mbylcbiAgICAgICAgICAgIHRhYmxlLmFycmF5XG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCB7IHRhYmxlIHdpdGggYXJyYXkgfVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9hc3NvYyBlcnJvciBjYW5vbmljX2Zvcm0gYXNzb2MgPVxuICAgICAgbWF0Y2ggYXNzb2Mgd2l0aFxuICAgICAgfCBncmlkLCBncmFwaCwgTm9uZSwgdHJhY2UsIGluZm8gLT5cbiAgICAgICAgZXJyb3IsIChncmlkLCBncmFwaCwgU29tZSBjYW5vbmljX2Zvcm0sIHRyYWNlLCBpbmZvKVxuICAgICAgfCBfLCBfLCBTb21lIF8sIF8sIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgXCJ0aGUgY2Fub25pY2FsIGZvcm0gb2YgdGhpcyBzdG9yeSBzaG91bGQgbm90IGhhdmUgYmVlbiBjb21wdXRlZCB5ZXRcIlxuICAgICAgICAgIChGYWlsdXJlXG4gICAgICAgICAgICAgXCJ0aGUgY2Fub25pY2FsIGZvcm0gb2Ygc3RvcmllcyAgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY29tcHV0ZWQgeWV0XCIpXG4gICAgICAgICAgYXNzb2NcbiAgICBpblxuICAgIGxldCByZWMgYXV4X2lubmVyMiBsb2dfaW5mbyBlcnJvciBjYW5vbmljX2Zvcm0gY2Fub25pY19mb3JtJyBpZCcgYXNzb2MgdGFibGVcbiAgICAgICAgPVxuICAgICAgbWF0Y2ggY2Fub25pY19mb3JtLCBjYW5vbmljX2Zvcm0nIHdpdGhcbiAgICAgIHwgW10sIFtdIC0+XG4gICAgICAgIGxldCBlcnJvciwgdGFibGUgPSBhZGRfc3RvcnlfaW5mbyBlcnJvciBzdG9yeV9pbmZvIGlkJyB0YWJsZSBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBJbm5lcl9sZWF2ZSAoW10sIGlkJylcbiAgICAgIHwgdCA6OiBxLCBbXSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBJbm5lcl9ub2RlIChLZXlNYXAuYWRkIHQgKElubmVyX2xlYXZlIChxLCBpZCkpIEtleU1hcC5lbXB0eSwgU29tZSBpZCcpXG4gICAgICAgIClcbiAgICAgIHwgW10sIHQnIDo6IHEnIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgIElubmVyX25vZGVcbiAgICAgICAgICAgIChLZXlNYXAuYWRkIHQnIChJbm5lcl9sZWF2ZSAocScsIGlkJykpIEtleU1hcC5lbXB0eSwgU29tZSBpZCkgKVxuICAgICAgfCB0IDo6IHEsIHQnIDo6IHEnIHdoZW4gdCA9IHQnIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCB0cmVlID1cbiAgICAgICAgICBhdXhfaW5uZXIyIGxvZ19pbmZvIGVycm9yIHEgcScgaWQnIGFzc29jIHRhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIElubmVyX25vZGUgKEtleU1hcC5hZGQgdCB0cmVlIEtleU1hcC5lbXB0eSwgTm9uZSlcbiAgICAgIHwgdCA6OiBxLCB0JyA6OiBxJyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBJbm5lcl9ub2RlXG4gICAgICAgICAgICAoIEtleU1hcC5hZGQgdFxuICAgICAgICAgICAgICAgIChJbm5lcl9sZWF2ZSAocSwgaWQpKVxuICAgICAgICAgICAgICAgIChLZXlNYXAuYWRkIHQnIChJbm5lcl9sZWF2ZSAocScsIGlkJykpIEtleU1hcC5lbXB0eSksXG4gICAgICAgICAgICAgIE5vbmUgKSApXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eF9vdXRlcjIgbG9nX2luZm8gZXJyb3IgcHJlaGFzaCBwcmVoYXNoJyBpZCcgdGFibGUgPVxuICAgICAgbWF0Y2ggcHJlaGFzaCwgcHJlaGFzaCcgd2l0aFxuICAgICAgfCBbXSwgW10gLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2Fubm9uaWNfZm9ybSA9XG4gICAgICAgICAgY2Fub25pY2FsaXplIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgYXNzb2MgPSB1cGRhdGVfYXNzb2MgZXJyb3IgY2Fubm9uaWNfZm9ybSBhc3NvYyBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAodGFibGUsIGNhbm5vbmljX2Zvcm0nKSA9XG4gICAgICAgICAgZ2V0X2Nhbm5vbmljYWxfZm9ybSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpZCcgdGFibGVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUsIGlubmVyID1cbiAgICAgICAgICBhdXhfaW5uZXIyIGxvZ19pbmZvIGVycm9yIGNhbm5vbmljX2Zvcm0gY2Fubm9uaWNfZm9ybScgaWQnIGFzc29jIHRhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIFRvX2lubmVyIChQcmVIYXNoTWFwLmVtcHR5LCBpbm5lcilcbiAgICAgIHwgdCA6OiBxLCBbXSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBPdXRlcl9ub2RlXG4gICAgICAgICAgICAoUHJlSGFzaE1hcC5hZGQgdCAoT3V0ZXJfbGVhdmUgKHEsIGlkKSkgUHJlSGFzaE1hcC5lbXB0eSwgU29tZSBpZCcpXG4gICAgICAgIClcbiAgICAgIHwgW10sIHQnIDo6IHEnIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgIE91dGVyX25vZGVcbiAgICAgICAgICAgIChQcmVIYXNoTWFwLmFkZCB0JyAoT3V0ZXJfbGVhdmUgKHEnLCBpZCcpKSBQcmVIYXNoTWFwLmVtcHR5LCBTb21lIGlkKVxuICAgICAgICApXG4gICAgICB8IHQgOjogcSwgdCcgOjogcScgd2hlbiB0ID0gdCcgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUsIHRyZWUgPVxuICAgICAgICAgIGF1eF9vdXRlcjIgbG9nX2luZm8gZXJyb3IgcSBxJyBpZCcgdGFibGVcbiAgICAgICAgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBPdXRlcl9ub2RlIChQcmVIYXNoTWFwLmFkZCB0IHRyZWUgUHJlSGFzaE1hcC5lbXB0eSwgTm9uZSkgKVxuICAgICAgfCB0IDo6IHEsIHQnIDo6IHEnIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgIE91dGVyX25vZGVcbiAgICAgICAgICAgICggUHJlSGFzaE1hcC5hZGQgdFxuICAgICAgICAgICAgICAgIChPdXRlcl9sZWF2ZSAocSwgaWQpKVxuICAgICAgICAgICAgICAgIChQcmVIYXNoTWFwLmFkZCB0JyAoT3V0ZXJfbGVhdmUgKHEnLCBpZCcpKSBQcmVIYXNoTWFwLmVtcHR5KSxcbiAgICAgICAgICAgICAgTm9uZSApIClcbiAgICBpblxuICAgIGxldCByZWMgYXV4X2lubmVyIGxvZ19pbmZvIGVycm9yIGFzc29jIHN0b3J5X2luZm8gc3VmZml4IGlubmVyX3RyZWUgdGFibGUgPVxuICAgICAgbWF0Y2ggc3VmZml4IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKG1hdGNoIGlubmVyX3RyZWUgd2l0aFxuICAgICAgICB8IElubmVyX25vZGUgKG1hcCwgTm9uZSkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBJbm5lcl9ub2RlIChtYXAsIFNvbWUgaWQpXG4gICAgICAgIHwgSW5uZXJfbm9kZSAoXywgU29tZSBpZCcpIHwgSW5uZXJfbGVhdmUgKFtdLCBpZCcpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCB0YWJsZSA9IGFkZF9zdG9yeV9pbmZvIGVycm9yIHN0b3J5X2luZm8gaWQnIHRhYmxlIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgaW5uZXJfdHJlZVxuICAgICAgICB8IElubmVyX2xlYXZlICh0JyA6OiBxJywgaWQnKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgICAgSW5uZXJfbm9kZVxuICAgICAgICAgICAgICAoS2V5TWFwLmFkZCB0JyAoSW5uZXJfbGVhdmUgKHEnLCBpZCcpKSBLZXlNYXAuZW1wdHksIFNvbWUgaWQpICkpXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICAobWF0Y2ggaW5uZXJfdHJlZSB3aXRoXG4gICAgICAgIHwgSW5uZXJfbm9kZSAobWFwLCBhc3NvYycpIC0+XG4gICAgICAgICAgKG1hdGNoIEtleU1hcC5maW5kX29wdGlvbiB0IG1hcCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICAgIGxldCBpbm5lcl90cmVlID1cbiAgICAgICAgICAgICAgSW5uZXJfbm9kZSAoS2V5TWFwLmFkZCB0IChJbm5lcl9sZWF2ZSAocSwgaWQpKSBtYXAsIGFzc29jJylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBpbm5lcl90cmVlXG4gICAgICAgICAgfCBTb21lIGlubmVyX3RyZWUnIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZScsIGlubmVyX3RyZWUnJyA9XG4gICAgICAgICAgICAgIGF1eF9pbm5lciBsb2dfaW5mbyBlcnJvciBhc3NvYyBzdG9yeV9pbmZvIHEgaW5uZXJfdHJlZScgdGFibGVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBpbm5lcl90cmVlJycgPT0gaW5uZXJfdHJlZScgdGhlblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlJywgaW5uZXJfdHJlZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgIHRhYmxlJyxcbiAgICAgICAgICAgICAgICBJbm5lcl9ub2RlIChLZXlNYXAuYWRkIHQgaW5uZXJfdHJlZScnIG1hcCwgYXNzb2MnKSApKVxuICAgICAgICB8IElubmVyX2xlYXZlIChsJywgaWQnKSAtPlxuICAgICAgICAgIGF1eF9pbm5lcjIgbG9nX2luZm8gZXJyb3Igc3VmZml4IGwnIGlkJyBhc3NvYyB0YWJsZSlcbiAgICBpblxuICAgIGxldCByZWMgYXV4X291dGVyIGxvZ19pbmZvIGVycm9yIGFzc29jIHN0b3J5X2luZm8gc3VmZml4IG91dGVyX3RyZWUgdGFibGUgPVxuICAgICAgbWF0Y2ggc3VmZml4IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKG1hdGNoIG91dGVyX3RyZWUgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgT3V0ZXJfbGVhdmUgKHN1ZmZpeCwgaWQpXG4gICAgICAgIHwgT3V0ZXJfbm9kZSAobWFwLCBOb25lKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIE91dGVyX25vZGUgKG1hcCwgU29tZSBpZClcbiAgICAgICAgfCBPdXRlcl9ub2RlIChtYXAsIFNvbWUgaWQnKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgZ3JhcGggPVxuICAgICAgICAgICAgbWF0Y2ggYXNzb2Mgd2l0aFxuICAgICAgICAgICAgfCBfLCBncmFwaCwgTm9uZSwgXywgXyAtPiBlcnJvciwgZ3JhcGhcbiAgICAgICAgICAgIHwgXywgZ3JhcGgsIFNvbWUgXywgXywgXyAtPlxuICAgICAgICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICBcInRoZSBjYW5vbmljYWwgZm9ybSBvZiBzdG9yaWVzIGluIHRoZSBvdXRlciB0cmVlIHNob3VsZCBub3QgXFxcbiAgICAgICAgICAgICAgICAgICBoYXZlIGJlZW4gY29tcHV0ZWQgeWV0XCJcbiAgICAgICAgICAgICAgICAoRmFpbHVyZVxuICAgICAgICAgICAgICAgICAgIFwidGhlIGNhbm9uaWNhbCBmb3JtIG9mIHN0b3JpZXMgaW4gdGhlIG91dGVyIHRyZWUgc2hvdWxkIG5vdCBcXFxuICAgICAgICAgICAgICAgICAgICBoYXZlIGJlZW4gY29tcHV0ZSB5ZXRcIilcbiAgICAgICAgICAgICAgICBncmFwaFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2Fubm9uaWNfZm9ybSA9XG4gICAgICAgICAgICBjYW5vbmljYWxpemUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JhcGhcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgYXNzb2MgPSB1cGRhdGVfYXNzb2MgZXJyb3IgY2Fubm9uaWNfZm9ybSBhc3NvYyBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICh0YWJsZSwgY2Fubm9uaWNfZm9ybScpID1cbiAgICAgICAgICAgIGdldF9jYW5ub25pY2FsX2Zvcm0gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaWQnIHRhYmxlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgaW5uZXIgPVxuICAgICAgICAgICAgYXV4X2lubmVyMiBsb2dfaW5mbyBlcnJvciBjYW5ub25pY19mb3JtIGNhbm5vbmljX2Zvcm0nIGlkJyBhc3NvY1xuICAgICAgICAgICAgICB0YWJsZVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgVG9faW5uZXIgKG1hcCwgaW5uZXIpXG4gICAgICAgIHwgT3V0ZXJfbGVhdmUgKF9xLCBpZCcpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCB0YWJsZSA9IGFkZF9zdG9yeV9pbmZvIGVycm9yIHN0b3J5X2luZm8gaWQnIHRhYmxlIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgb3V0ZXJfdHJlZVxuICAgICAgICB8IFRvX2lubmVyIChtYXAsIGlubmVyKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN1ZmZpeCA9XG4gICAgICAgICAgICBjYW5vbmljYWxpemUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JhcGhcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgYXNzb2MgPSB1cGRhdGVfYXNzb2MgZXJyb3Igc3VmZml4IGFzc29jIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUsIGlubmVyID1cbiAgICAgICAgICAgIGF1eF9pbm5lciBsb2dfaW5mbyBlcnJvciBhc3NvYyBzdG9yeV9pbmZvIHN1ZmZpeCBpbm5lciB0YWJsZVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgVG9faW5uZXIgKG1hcCwgaW5uZXIpKVxuICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgKG1hdGNoIG91dGVyX3RyZWUgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgT3V0ZXJfbGVhdmUgKHN1ZmZpeCwgaWQpXG4gICAgICAgIHwgT3V0ZXJfbm9kZSAobWFwLCBhc3NvYycpIC0+XG4gICAgICAgICAgKG1hdGNoIFByZUhhc2hNYXAuZmluZF9vcHRpb24gdCBtYXAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgICBsZXQgaW5uZXJfdHJlZSA9XG4gICAgICAgICAgICAgIE91dGVyX25vZGUgKFByZUhhc2hNYXAuYWRkIHQgKE91dGVyX2xlYXZlIChxLCBpZCkpIG1hcCwgYXNzb2MnKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIGlubmVyX3RyZWVcbiAgICAgICAgICB8IFNvbWUgb3V0ZXJfdHJlZScgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlJywgb3V0ZXJfdHJlZScnID1cbiAgICAgICAgICAgICAgYXV4X291dGVyIGxvZ19pbmZvIGVycm9yIGFzc29jIHN0b3J5X2luZm8gcSBvdXRlcl90cmVlJyB0YWJsZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIG91dGVyX3RyZWUnJyA9PSBvdXRlcl90cmVlJyB0aGVuXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUnLCBvdXRlcl90cmVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgdGFibGUnLFxuICAgICAgICAgICAgICAgIE91dGVyX25vZGUgKFByZUhhc2hNYXAuYWRkIHQgb3V0ZXJfdHJlZScnIG1hcCwgYXNzb2MnKSApKVxuICAgICAgICB8IE91dGVyX2xlYXZlICh0JyA6OiBxJywgaWQnKSB3aGVuIG5vdCAodCA9IHQnKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgICAgT3V0ZXJfbm9kZVxuICAgICAgICAgICAgICAoIFByZUhhc2hNYXAuYWRkIHRcbiAgICAgICAgICAgICAgICAgIChPdXRlcl9sZWF2ZSAocSwgaWQpKVxuICAgICAgICAgICAgICAgICAgKFByZUhhc2hNYXAuYWRkIHQnIChPdXRlcl9sZWF2ZSAocScsIGlkJykpIFByZUhhc2hNYXAuZW1wdHkpLFxuICAgICAgICAgICAgICAgIE5vbmUgKSApXG4gICAgICAgIHwgT3V0ZXJfbGVhdmUgKGwnLCBpZCcpIC0+IGF1eF9vdXRlcjIgbG9nX2luZm8gZXJyb3Igc3VmZml4IGwnIGlkJyB0YWJsZVxuICAgICAgICB8IFRvX2lubmVyIChfbWFwLCBpbm5lcikgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICAgIFRvX2lubmVyXG4gICAgICAgICAgICAgICggUHJlSGFzaE1hcC5hZGQgdFxuICAgICAgICAgICAgICAgICAgKE91dGVyX2xlYXZlIChxLCBpZCkpXG4gICAgICAgICAgICAgICAgICAoUHJlSGFzaE1hcC5hZGQgdCAoT3V0ZXJfbGVhdmUgKHEsIGlkKSkgUHJlSGFzaE1hcC5lbXB0eSksXG4gICAgICAgICAgICAgICAgaW5uZXIgKSApKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUsIHRyZWUgPVxuICAgICAgYXV4X291dGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgIChncmlkLCBncmFwaCwgTm9uZSwgcHJldHJhY2UsIHN0b3J5X2luZm8pXG4gICAgICAgIHN0b3J5X2luZm8gcHJlaGFzaCB0YWJsZS50cmVlIHRhYmxlXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHsgdGFibGUgd2l0aCB0cmVlIH1cblxuICAoKiBsZXQgcmVjIHByaW50X2lubmVyX3RyZWUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgcHJlZml4IGlubmVyX3RyZWUgPVxuICAgICBtYXRjaFxuICAgICBpbm5lcl90cmVlXG4gICAgIHdpdGhcbiAgICAgfCBJbm5lcl9ub2RlIChtYXAsYXNzb2MnKSAtPlxuICAgICBsZXQgKCkgPVxuICAgICBtYXRjaFxuICAgICBhc3NvYydcbiAgICAgd2l0aFxuICAgICB8IE5vbmUgLT5cbiAgICAgRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlc1VuZmlsbGVkIE5vZGVcXG5cIiBwcmVmaXhcbiAgICAgfCBTb21lIChpZCkgIC0+XG4gICAgIEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNGaWxsZWQgTm9kZTogJWlcXG5cIiBwcmVmaXggaWRcbiAgICAgaW5cbiAgICAgbGV0IHByZWZpeCcgPSBwcmVmaXheXCIgXCIgaW5cbiAgICAgS2V5TWFwLml0ZXJcbiAgICAgKGZ1biBlbHQgbWFwIC0+XG4gICAgIHByaW50X2VsdCBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBlbHQ7XG4gICAgIHByaW50X2lubmVyX3RyZWUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgcHJlZml4JyBtYXApXG4gICAgIG1hcFxuICAgICB8IElubmVyX2xlYXZlIChsLGlkKSAgLT5cbiAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlc0xFQVZFOlxcblwiIHByZWZpeCBpblxuICAgICBsZXQgXyA9IHByaW50X2Nhbm9uaWNhbF9mb3JtIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGwgaW5cbiAgICAgKCkqKVxuXG4gICgqXG5sZXQgcmVjIHByaW50X291dGVyX3RyZWUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgcHJlZml4IG91dGVyX3RyZWUgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgb3V0ZXJfdHJlZVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlc0VNUFRZXFxuXCIgcHJlZml4XG4gICAgICAgIHwgT3V0ZXJfbm9kZSAobWFwLGFzc29jJykgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgYXNzb2MnXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNVbmZpbGxlZCBOb2RlXFxuXCIgcHJlZml4XG4gICAgICAgIHwgU29tZSAoaWQpICAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzRmlsbGVkIE5vZGU6ICVpXFxuXCIgcHJlZml4IGlkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmVmaXgnID0gcHJlZml4XlwiIFwiIGluXG4gICAgICAgIFByZUhhc2hNYXAuaXRlclxuICAgICAgICAoZnVuICgoXyxiKSxpKSAgbWFwIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXMlczolaS0+XFxuXCIgcHJlZml4IGIgaSA7XG4gICAgICAgIHByaW50X291dGVyX3RyZWUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgcHJlZml4JyBtYXApXG4gICAgICAgIG1hcFxuICAgICAgICB8IE91dGVyX2xlYXZlIChsLGlkKSAgLT5cbiAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlc0xFQVZFOlxcblwiIHByZWZpeCBpblxuICAgICAgICBsZXQgXyA9IHByaW50X3ByZWhhc2ggcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgbCBpblxuICAgICAgICAoKVxuICAgICAgICB8IFRvX2lubmVyIChtYXAsaW5uZXIpIC0+XG4gICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNUTyBJTk5FUiBUUkVFOlxcblwiIHByZWZpeCBpblxuICAgICAgICBsZXQgcHJlZml4JyA9IHByZWZpeF5cIiBcIiBpblxuICAgICAgICBsZXQgKCkgPSBQcmVIYXNoTWFwLml0ZXJcbiAgICAgICAgKGZ1biAoKF8sYiksaSkgIG1hcCAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzJXM6JWktPlxcblwiIHByZWZpeCBiIGkgO1xuICAgICAgICBwcmludF9vdXRlcl90cmVlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHByZWZpeCcgbWFwKVxuICAgICAgICBtYXBcbiAgICAgICAgaW5cbiAgICAgICAgcHJpbnRfaW5uZXJfdHJlZSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBwcmVmaXgnIGlubmVyICopXG5cbiAgbGV0IGhhc2hfbGlzdCBwYXJhbWV0ZXIgXyBsb2dfaW5mbyBlcnJvciB0YWJsZSA9XG4gICAgbGV0IGVycm9yLCBhcnJheSA9XG4gICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi5mb2xkXG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvclxuICAgICAgICAoZnVuIHBhcmFtZXRlcicgZXJyb3IgaSAoYSwgYiwgYywgZCwgZSkgYXJyYXkgLT5cbiAgICAgICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi5zZXQgcGFyYW1ldGVyJyBlcnJvciBpXG4gICAgICAgICAgICAoYSwgYiwgYywgZCwgTGlzdC5zb3J0IFRyYWNlLlNpbXVsYXRpb25faW5mby5jb21wYXJlX2J5X3N0b3J5X2lkIGUpXG4gICAgICAgICAgICBhcnJheSlcbiAgICAgICAgdGFibGUuYXJyYXkgdGFibGUuYXJyYXlcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgeyB0YWJsZSB3aXRoIGFycmF5IH1cblxuICBsZXQgc29ydF9saXN0IHBhcmFtZXRlciBfIGxvZ19pbmZvIGVycm9yIHRhYmxlID1cbiAgICBsZXQgZXJyb3IsIGwgPVxuICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuZm9sZFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3JcbiAgICAgICAgKGZ1biBfcGFyYW1ldGVyIGVycm9yIF8gKGEsIF9iLCBfYywgZCwgZSkgbCAtPiBlcnJvciwgKGQsIGEsIGUpIDo6IGwpXG4gICAgICAgIHRhYmxlLmFycmF5IFtdXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGxcblxuICBsZXQgY291bnRfc3RvcmllcyB0YWJsZSA9IHRhYmxlLmZyZXNoX2lkXG5cbiAgbGV0IGZvbGRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZiB0YWJsZSBhID1cbiAgICBsZXQgYSwgKGIsIGMpID1cbiAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLmZvbGRfd2l0aF9pbnRlcnJ1cHRpb25cbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yXG4gICAgICAgIChmdW4gcGFyYW1ldGVyJyBlcnJvciBfIChfLCBfLCBfLCBkLCBlKSAobG9nX2luZm8sIGEpIC0+XG4gICAgICAgICAgbGV0IGEsIGIsIGMgPVxuICAgICAgICAgICAgZlxuICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcicgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGQgZSBhXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhLCAoYiwgYykpXG4gICAgICAgIHRhYmxlLmFycmF5IChsb2dfaW5mbywgYSlcbiAgICBpblxuICAgIGEsIGIsIGNcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZWxlY3RvciA9IHNpZ1xuICB2YWwgY2hvb3NlX2ZzdCA6IEgucGFyYW1ldGVyIC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgQ2hvaWNlIChTIDogU2VsZWN0b3IpIChBIDogU3RvcnlUYWJsZSkgKEIgOiBTdG9yeVRhYmxlKSA6IFN0b3J5VGFibGUgPVxuc3RydWN0XG4gIHR5cGUgdGFibGUgPSBBIG9mIEEudGFibGUgfCBCIG9mIEIudGFibGVcblxuICBsZXQgaW5pdF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciA9XG4gICAgaWYgUy5jaG9vc2VfZnN0IHBhcmFtZXRlciB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlID1cbiAgICAgICAgQS5pbml0X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBBIHRhYmxlXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlID1cbiAgICAgICAgQi5pbml0X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBCIHRhYmxlXG4gICAgKVxuXG4gIGxldCBhZGRfc3RvcnkgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZCBwcmV0cmFjZSBpbmZvIHRhYmxlID1cbiAgICBtYXRjaCB0YWJsZSB3aXRoXG4gICAgfCBBIHRhYmxlIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSA9XG4gICAgICAgIEEuYWRkX3N0b3J5IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWQgcHJldHJhY2UgaW5mbyB0YWJsZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQSB0YWJsZVxuICAgIHwgQiB0YWJsZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUgPVxuICAgICAgICBCLmFkZF9zdG9yeSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkIHByZXRyYWNlIGluZm8gdGFibGVcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIEIgdGFibGVcblxuICBsZXQgaGFzaF9saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRhYmxlID1cbiAgICBtYXRjaCB0YWJsZSB3aXRoXG4gICAgfCBBIHRhYmxlIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSA9XG4gICAgICAgIEEuaGFzaF9saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRhYmxlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBBIHRhYmxlXG4gICAgfCBCIHRhYmxlIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSA9XG4gICAgICAgIEIuaGFzaF9saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRhYmxlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBCIHRhYmxlXG5cbiAgbGV0IHNvcnRfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZSA9XG4gICAgbWF0Y2ggdGFibGUgd2l0aFxuICAgIHwgQSB0YWJsZSAtPiBBLnNvcnRfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZVxuICAgIHwgQiB0YWJsZSAtPiBCLnNvcnRfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZVxuXG4gIGxldCBjb3VudF9zdG9yaWVzIHRhYmxlID1cbiAgICBtYXRjaCB0YWJsZSB3aXRoXG4gICAgfCBBIHRhYmxlIC0+IEEuY291bnRfc3RvcmllcyB0YWJsZVxuICAgIHwgQiB0YWJsZSAtPiBCLmNvdW50X3N0b3JpZXMgdGFibGVcblxuICBsZXQgZm9sZF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBnIHRhYmxlIGEgPVxuICAgIG1hdGNoIHRhYmxlIHdpdGhcbiAgICB8IEEgdGFibGUgLT4gQS5mb2xkX3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGcgdGFibGUgYVxuICAgIHwgQiB0YWJsZSAtPiBCLmZvbGRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZyB0YWJsZSBhXG5lbmRcblxuKCogbW9kdWxlIFN0b3J5VGFibGUgPSBMaXN0VGFibGUqKVxuKCogbW9kdWxlIFN0b3J5VGFibGUgPSBCdWNrZXRUYWJsZSopXG5tb2R1bGUgU3RvcnlUYWJsZSA9XG4gIENob2ljZVxuICAgIChzdHJ1Y3RcbiAgICAgIGxldCBjaG9vc2VfZnN0ID0gUy5QSC5CLlBCLkNJLlBvLksuSC5kb193ZV91c2VfYnVja2V0X3NvcnRcbiAgICBlbmQpXG4gICAgKEJ1Y2tldFRhYmxlKVxuICAgIChMaXN0VGFibGUpXG4iLCIoKipcbiAqIHV0aWxpdGllcy5tbFxuICpcbiAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxNS0wMy0yOCBmZXJldD5cbiAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0wMyAyMDo1MzoxNCBmZXJldD5cbiAqXG4gKiBBUEkgZm9yIGNhdXNhbCBjb21wcmVzc2lvblxuICogSmVyb21lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gKlxuICogQ29weXJpZ2h0IDIwMTUgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSAgKiBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZVxuICogR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5cbm1vZHVsZSBEID0gRGFnLlN0b3J5VGFibGVcbm1vZHVsZSBTID0gR2VuZXJpY19icmFuY2hfYW5kX2N1dF9zb2x2ZXIuU29sdmVyXG5tb2R1bGUgUCA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHNcblxudHlwZSBlcnJvcl9sb2cgPSBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXJcbnR5cGUgcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5wYXJhbWV0ZXJcbnR5cGUga2FwcGFfaGFuZGxlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguaGFuZGxlclxudHlwZSBwcm9maWxpbmdfaW5mbyA9IFAubG9nX2luZm9cbnR5cGUgc2hhbGxfd2UgPSBwYXJhbWV0ZXIgLT4gYm9vbFxudHlwZSBzdGVwID0gVHJhY2Uuc3RlcFxudHlwZSBzdGVwX3dpdGhfc2lkZV9lZmZlY3RzID0gc3RlcCAqIFMuUEguQi5QQi5DSS5Qby5LLnNpZGVfZWZmZWN0XG50eXBlIHN0ZXBfaWQgPSBTLlBILkIuUEIuc3RlcF9pZFxuXG50eXBlIHRyYWNlID0ge1xuICBjb21wcmVzc2VkX3RyYWNlOiBzdGVwX3dpdGhfc2lkZV9lZmZlY3RzIGxpc3Qgb3B0aW9uO1xuICBwcmV0cmFjZTogc3RlcCBsaXN0O1xuICB3aXRoX3BvdGVudGlhbF9hbWJpZ3VpdHk6IGJvb2w7XG59XG5cbnR5cGUgdHJhY2VfcnVudGltZV9pbmZvID0gcHJvZmlsaW5nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnRcblxudHlwZSAnYSB3aXRoX2hhbmRsZXJzID1cbiAgcGFyYW1ldGVyIC0+XG4gID9zaGFsbF93ZV9jb21wdXRlOnNoYWxsX3dlIC0+XG4gID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpzaGFsbF93ZSAtPlxuICA/cHJpbnRfaWZfemVybzpzaGFsbF93ZSAtPlxuICBrYXBwYV9oYW5kbGVyIC0+XG4gIHByb2ZpbGluZ19pbmZvIC0+XG4gIGVycm9yX2xvZyAtPlxuICAnYVxuXG50eXBlICdhIHplcm9hcnkgPSAoZXJyb3JfbG9nICogcHJvZmlsaW5nX2luZm8gKiAnYSkgd2l0aF9oYW5kbGVyc1xudHlwZSAoJ2EsICdiKSB1bmFyeSA9ICgnYSAtPiBlcnJvcl9sb2cgKiBwcm9maWxpbmdfaW5mbyAqICdiKSB3aXRoX2hhbmRsZXJzXG5cbnR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFyeSA9XG4gICgnYSAtPiAnYiAtPiBlcnJvcl9sb2cgKiBwcm9maWxpbmdfaW5mbyAqICdjKSB3aXRoX2hhbmRsZXJzXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0ZXJuYXJ5ID1cbiAgKCdhIC0+ICdiIC0+ICdjIC0+IGVycm9yX2xvZyAqIHByb2ZpbGluZ19pbmZvICogJ2QpIHdpdGhfaGFuZGxlcnNcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBxdWF0ZXJuYXJ5ID1cbiAgKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+IGVycm9yX2xvZyAqIHByb2ZpbGluZ19pbmZvICogJ2UpIHdpdGhfaGFuZGxlcnNcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcXVpbnRlcm5hcnkgPVxuICAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gZXJyb3JfbG9nICogcHJvZmlsaW5nX2luZm8gKiAnZikgd2l0aF9oYW5kbGVyc1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLCAnZykgc2V4dGVybmFyeSA9XG4gICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiAnZiAtPiBlcnJvcl9sb2cgKiBwcm9maWxpbmdfaW5mbyAqICdnKVxuICB3aXRoX2hhbmRsZXJzXG5cbmxldCAod2Vfc2hhbGwgOiBzaGFsbF93ZSkgPSBmdW4gXyAtPiB0cnVlXG5sZXQgKHdlX3NoYWxsX25vdCA6IHNoYWxsX3dlKSA9IGZ1biBfIC0+IGZhbHNlXG5sZXQgZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHRyYWNlID0gdHJhY2UucHJldHJhY2VcbmxldCBzaXplX29mX3ByZXRyYWNlIHRyYWNlID0gTGlzdC5sZW5ndGggKGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSlcbmxldCBtYXlfaW5pdGlhbF9zaXRlc19iZV9hbWJpZ3VvdXMgdHJhY2UgPSB0cmFjZS53aXRoX3BvdGVudGlhbF9hbWJpZ3VpdHlcbmxldCBzZXRfYW1iaWd1aXR5X2xldmVsIHRyYWNlIHggPSB7IHRyYWNlIHdpdGggd2l0aF9wb3RlbnRpYWxfYW1iaWd1aXR5ID0geCB9XG5sZXQgX3NldF9wcmV0cmFjZSB0cmFjZSB4ID0geyB0cmFjZSB3aXRoIHByZXRyYWNlID0geCB9XG5sZXQgX3NldF9jb21wcmVzc2VkX3RyYWNlIHRyYWNlIHggPSB7IHRyYWNlIHdpdGggY29tcHJlc3NlZF90cmFjZSA9IHggfVxuXG5sZXQgZ2V0X2NvbXByZXNzZWRfdHJhY2UgdHJhY2UgPVxuICBtYXRjaCB0cmFjZS5jb21wcmVzc2VkX3RyYWNlIHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT5cbiAgICBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgsIFtdKSAoTGlzdC5yZXYgKGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSkpXG5cbmxldCBpc19jb21wcmVzc2VkX3RyYWNlIHRyYWNlID0gdHJhY2UuY29tcHJlc3NlZF90cmFjZSAhPSBOb25lXG5cbmxldCB0cmFjZV9vZl9wcmV0cmFjZV93aXRoX2FtYmlndWl0eSB3aXRoX2FtYmlndWl0eSBwcmV0cmFjZSA9XG4gIHtcbiAgICBwcmV0cmFjZTtcbiAgICBjb21wcmVzc2VkX3RyYWNlID0gTm9uZTtcbiAgICB3aXRoX3BvdGVudGlhbF9hbWJpZ3VpdHkgPSB3aXRoX2FtYmlndWl0eTtcbiAgfVxuXG5sZXQgdHJhY2Vfb2ZfcHJldHJhY2UgPSB0cmFjZV9vZl9wcmV0cmFjZV93aXRoX2FtYmlndWl0eSB0cnVlXG5cbmxldCBidWlsZF9jb21wcmVzc2VkX3RyYWNlIHggeSA9XG4gIHsgY29tcHJlc3NlZF90cmFjZSA9IFNvbWUgeTsgcHJldHJhY2UgPSB4OyB3aXRoX3BvdGVudGlhbF9hbWJpZ3VpdHkgPSBmYWxzZSB9XG5cbigqbGV0IGdldF9sb2dfc3RlcCA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ19zdGVwXG4gIGxldCBnZXRfZGVidWdnaW5nX21vZGUgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfbW9kZVxuICBsZXQgZ2V0X2xvZ2dlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciopXG5sZXQgZ2V0X2lkX29mX2V2ZW50ID0gUy5QSC5CLlBCLkNJLlBvLksuZ2V0X2lkX29mX3JlZmluZWRfc3RlcFxubGV0IGdldF9zaW11bGF0aW9uX3RpbWVfb2ZfZXZlbnQgPSBTLlBILkIuUEIuQ0kuUG8uSy5nZXRfdGltZV9vZl9yZWZpbmVkX3N0ZXBcblxubGV0IF9leHRlbmRfdHJhY2Vfd2l0aF9kdW1teV9zaWRlX2VmZmVjdHMgbCA9XG4gIExpc3QucmV2X21hcCAoZnVuIGEgLT4gYSwgW10pIChMaXN0LnJldiBsKVxuXG5sZXQgcHJpbnRfcHJldHJhY2UgcGFyYW1ldGVyIF9oYW5kbGVyID1cbiAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X291dF9jaGFubmVsIHBhcmFtZXRlcilcbiAgICBcIkBbPHY+JWFAXUAuXCJcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoVHJhY2UucHJpbnRfc3RlcCB+Y29tcGFjdDp0cnVlID9lbnY6Tm9uZSkpXG5cbmxldCBwcmludF90cmFjZSBwYXJhbWV0ZXIgaGFuZGxlciB0cmFjZSA9XG4gIHByaW50X3ByZXRyYWNlIHBhcmFtZXRlciBoYW5kbGVyIChnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UpXG5cbmxldCB0cmFuc2Zvcm1fdHJhY2VfZ2VuIGYgbG9nX21lc3NhZ2UgZGVidWdfbWVzc2FnZSBwcm9maWxpbmdfZXZlbnQgcGFyYW1ldGVyc1xuICAgID8oc2hhbGxfd2VfY29tcHV0ZSA9IHdlX3NoYWxsKSA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246X1xuICAgID8ocHJpbnRfaWZfemVybyA9IHdlX3NoYWxsKSBrYXBwYV9oYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlID1cbiAgaWYgc2hhbGxfd2VfY29tcHV0ZSBwYXJhbWV0ZXJzIHRoZW4gKFxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXJzKVxuICAgICAgICBlcnJvciBwcm9maWxpbmdfZXZlbnRcbiAgICAgICAgKFNvbWUgKGZ1biAoKSAtPiBzaXplX29mX3ByZXRyYWNlIHRyYWNlKSlcbiAgICAgICAgcHJvZmlsaW5nX2luZm9cbiAgICBpblxuICAgIGxldCBib29sID1cbiAgICAgIGlmIFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ19zdGVwIHBhcmFtZXRlcnMgdGhlbiAoXG4gICAgICAgIG1hdGNoIGxvZ19tZXNzYWdlIHdpdGhcbiAgICAgICAgfCBTb21lIGxvZ19tZXNzYWdlIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgIFwiJXMlc1wiXG4gICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXJzKSlcbiAgICAgICAgICAgICAgbG9nX21lc3NhZ2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZsdXNoX2xvZ2dlciAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgKSBlbHNlXG4gICAgICAgIGZhbHNlXG4gICAgaW5cbiAgICBsZXQgcHJldHJhY2UgPSBnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UgaW5cbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCAocHJldHJhY2UnLCBuKSA9XG4gICAgICBmIHBhcmFtZXRlcnMga2FwcGFfaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvciBwcmV0cmFjZVxuICAgIGluXG4gICAgbGV0IHRyYWNlJyA9IHRyYWNlX29mX3ByZXRyYWNlIHByZXRyYWNlJyBpblxuICAgIGxldCB0cmFjZSA9XG4gICAgICBpZiB0cmFjZSA9PSB0cmFjZScgdGhlblxuICAgICAgICB0cmFjZVxuICAgICAgZWxzZVxuICAgICAgICBzZXRfYW1iaWd1aXR5X2xldmVsIHRyYWNlJyAobWF5X2luaXRpYWxfc2l0ZXNfYmVfYW1iaWd1b3VzIHRyYWNlKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgaWYgcHJpbnRfaWZfemVybyBwYXJhbWV0ZXJzIHRoZW5cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgIFwiOiBub3RoaW5nIGhhcyBjaGFuZ2VkIEAuXCJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSBcIkAuXCJcbiAgICAgICAgZWxzZSBpZiBuID4gMCB0aGVuXG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICBcIjogLSVpIGV2ZW50cyBALlwiIG5cbiAgICAgICAgZWxzZVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgXCI6ICslaSBldmVudHMgQC5cIiAoLW4pXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX21vZGUgcGFyYW1ldGVycyB0aGVuIChcbiAgICAgICAgbGV0IF8gPVxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXJcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcnMpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZSBmbXQgLT4gRm9ybWF0LmZwcmludGYgZm10IGRlYnVnX21lc3NhZ2VcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgcHJpbnRfdHJhY2UgcGFyYW1ldGVycyBrYXBwYV9oYW5kbGVyIHRyYWNlXG4gICAgICApXG4gICAgaW5cblxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcnMpXG4gICAgICAgIGVycm9yIHByb2ZpbGluZ19ldmVudFxuICAgICAgICAoU29tZSAoZnVuICgpIC0+IHNpemVfb2ZfcHJldHJhY2UgdHJhY2UpKVxuICAgICAgICBwcm9maWxpbmdfaW5mb1xuICAgIGluXG4gICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZVxuICApIGVsc2VcbiAgICBlcnJvciwgcHJvZmlsaW5nX2luZm8sIHRyYWNlXG5cbnR5cGUga2luZCA9ICgqICB8IFNvbHZlX2FtYmlndWl0aWVzKilcbiAgfCBNYXlfYWRkX2FtYmlndWl0aWVzIHwgTmV1dHJhbFxuXG5sZXQgaGFuZGxlX2FtYmlndWl0aWVzIGtpbmQgYiA9XG4gIG1hdGNoIGtpbmQgd2l0aFxuICAoKiAgfCBTb2x2ZV9hbWJpZ3VpdGllcyAtPiBmYWxzZSopXG4gIHwgTmV1dHJhbCAtPiBiXG4gIHwgTWF5X2FkZF9hbWJpZ3VpdGllcyAtPiB0cnVlXG5cbnR5cGUgYW1iaXF1aXRpZXNfcHJlY29uZGl0aW9uID1cbiAgfCBEb19ub3RfY2FyZVxuICB8IFJlcXVpcmVfdGhlX2Fic2NlbmNlX29mX2FtYmlndWl0eSAoKnwgQmV0dGVyX3doZW5fbm9fYW1iaWd1aXR5KilcblxubGV0IG11c3Rfd2Vfc29sdmVfYW1iaWd1aXR5IF9wYXJhbWV0ZXJzIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBEb19ub3RfY2FyZSAtPiBmYWxzZVxuICB8IFJlcXVpcmVfdGhlX2Fic2NlbmNlX29mX2FtYmlndWl0eSAtPiB0cnVlXG4oKiAgfCBCZXR0ZXJfd2hlbl9ub19hbWJpZ3VpdHkgLT4gUy5QSC5CLlBCLkNJLlBvLksuSC5hbHdheXNfZGlzYW1iaWd1YXRlIHBhcmFtZXRlcnMqKVxuXG5sZXQgbW9uYWRpY19saWZ0IGYgXyBfIGxvZ19pbmZvIGVycm9yIHQgPVxuICBsZXQgdCcgPSBmIHQgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCAodCcsIExpc3QubGVuZ3RoIHQgLSBMaXN0Lmxlbmd0aCB0JylcblxubGV0IF9kdW1teV9wcm9maWxpbmcgXyBwID0gcFxuXG5sZXQgZGlzYW1iaWd1YXRlID1cbiAgdHJhbnNmb3JtX3RyYWNlX2dlblxuICAgIChtb25hZGljX2xpZnQgUy5QSC5CLlBCLkNJLlBvLksuZGlzYW1iaWd1YXRlKVxuICAgIChTb21lIFwiXFx0LSBhbHBoYS1jb252ZXJzaW9uXCIpIFwiVHJhY2UgYWZ0ZXIgaGF2aW5nIHJlbmFtZXMgYWdlbnRzOlxcblwiXG4gICAgU3RvcnlQcm9maWxpbmcuQWdlbnRfaWRzX2Rpc2FtYmlndWF0aW9uXG5cbmxldCBtYWtlX3VuYW1iaWd1b3VzIHBhcmFtZXRlcnMgPyhzaGFsbF93ZV9jb21wdXRlID0gd2Vfc2hhbGwpXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiA9IHdlX3NoYWxsX25vdClcbiAgICA/KHByaW50X2lmX3plcm8gPSB3ZV9zaGFsbF9ub3QpIGthcHBhX2hhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2UgPVxuICBpZiBtYXlfaW5pdGlhbF9zaXRlc19iZV9hbWJpZ3VvdXMgdHJhY2UgdGhlbiAoXG4gICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2UnID1cbiAgICAgIGRpc2FtYmlndWF0ZSBwYXJhbWV0ZXJzXG4gICAgICAgIH5zaGFsbF93ZV9jb21wdXRlOihmdW4gcGFyYW1ldGVycyAtPlxuICAgICAgICAgIG1heV9pbml0aWFsX3NpdGVzX2JlX2FtYmlndW91cyB0cmFjZSAmJiBzaGFsbF93ZV9jb21wdXRlIHBhcmFtZXRlcnMpXG4gICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiB+cHJpbnRfaWZfemVybyBrYXBwYV9oYW5kbGVyXG4gICAgICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgaW5cbiAgICAoIGVycm9yLFxuICAgICAgcHJvZmlsaW5nX2luZm8sXG4gICAgICBpZiB0cmFjZScgPT0gdHJhY2UgdGhlblxuICAgICAgICBzZXRfYW1iaWd1aXR5X2xldmVsIHRyYWNlIGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIHNldF9hbWJpZ3VpdHlfbGV2ZWwgdHJhY2UnIGZhbHNlIClcbiAgKSBlbHNlXG4gICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZVxuXG5sZXQgbGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzIGYgcmVxdWlyZW1lbnQgZWZmZWN0IHBhcmFtZXRlcnNcbiAgICA/KHNoYWxsX3dlX2NvbXB1dGUgPSB3ZV9zaGFsbClcbiAgICA/KHNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uID0gd2Vfc2hhbGwpXG4gICAgPyhwcmludF9pZl96ZXJvID0gd2Vfc2hhbGwpIGthcHBhX2hhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2UgPVxuICBpZiBzaGFsbF93ZV9jb21wdXRlIHBhcmFtZXRlcnMgdGhlbiAoXG4gICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2UgPVxuICAgICAgaWYgbXVzdF93ZV9zb2x2ZV9hbWJpZ3VpdHkgcGFyYW1ldGVycyByZXF1aXJlbWVudCB0aGVuXG4gICAgICAgIG1ha2VfdW5hbWJpZ3VvdXMgcGFyYW1ldGVycyB+c2hhbGxfd2VfY29tcHV0ZSBrYXBwYV9oYW5kbGVyXG4gICAgICAgICAgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgIGVsc2VcbiAgICAgICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgKGZcbiAgICAgICAgOiBTLlBILkIuUEIuQ0kuUG8uSy5ILnBhcmFtZXRlciAtPlxuICAgICAgICAgID9zaGFsbF93ZV9jb21wdXRlOnNoYWxsX3dlIC0+XG4gICAgICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOnNoYWxsX3dlIC0+XG4gICAgICAgICAgP3ByaW50X2lmX3plcm86c2hhbGxfd2UgLT5cbiAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmhhbmRsZXIgLT5cbiAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgICAgICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgICAgICAgdHJhY2UgLT5cbiAgICAgICAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogdHJhY2UpXG4gICAgICAgIHBhcmFtZXRlcnMgfnNoYWxsX3dlX2NvbXB1dGUgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uXG4gICAgICAgIH5wcmludF9pZl96ZXJvIGthcHBhX2hhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2VcbiAgICBpblxuICAgIGxldCB0cmFjZSA9IHNldF9hbWJpZ3VpdHlfbGV2ZWwgdHJhY2UgKGhhbmRsZV9hbWJpZ3VpdGllcyBlZmZlY3QgdHJ1ZSkgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHRyYWNlXG4gICkgZWxzZVxuICAgIGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2VcblxubGV0IHNwbGl0X2luaXQgPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlblxuICAgICAgIChtb25hZGljX2xpZnQgUy5QSC5CLlBCLkNJLlBvLksuc3BsaXRfaW5pdClcbiAgICAgICAoU29tZSBcIlxcdC0gc3BsaXR0aW5nIGluaXRpYWwgZXZlbnRzXCIpXG4gICAgICAgXCJUcmFjZSBhZnRlciBoYXZpbmcgc3BsaXQgaW5pdGlhbCBldmVudHM6XFxuXCJcbiAgICAgICBTdG9yeVByb2ZpbGluZy5EZWNvbXBvc2VfaW5pdGlhbF9zdGF0ZSlcbiAgICBEb19ub3RfY2FyZSBOZXV0cmFsXG5cbmxldCBjdXQgPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlbiBTLlBILkIuUEIuQ0kuUG8uY3V0XG4gICAgICAgKFNvbWUgXCJcXHQtIGN1dHRpbmcgY29uY3VycmVudCBldmVudHNcIilcbiAgICAgICBcIlRyYWNlIGFmdGVyIGhhdmluZyByZW1vdmVkIGNvbmN1cnJlbnQgZXZlbnRzOlxcblwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuUGFydGlhbF9vcmRlcl9yZWR1Y3Rpb24pXG4gICAgUmVxdWlyZV90aGVfYWJzY2VuY2Vfb2ZfYW1iaWd1aXR5IE5ldXRyYWxcblxudHlwZSBvbl90aGVfZmx5X2N1dF9zdGF0ZSA9IFMuUEguQi5QQi5DSS5Qby5vbl90aGVfZmx5X3N0YXRlXG5cbmxldCBvbl90aGVfZmx5X2N1dF9pbml0ID0gUy5QSC5CLlBCLkNJLlBvLmluaXRfY3V0XG5sZXQgb25fdGhlX2ZseV9jdXRfc3RlcCA9IFMuUEguQi5QQi5DSS5Qby5jdXRfc3RlcFxuXG5sZXQgb25fdGhlX2ZseV9jdXRfZmluYWxpemUgY3V0X3N0YXRlID1cbiAgZnN0IChTLlBILkIuUEIuQ0kuUG8uZmluYWxpemVfY3V0IGN1dF9zdGF0ZSlcblxubGV0IGN1dF9yZXZfdHJhY2UgcmV2X3RyYWNlID1cbiAgb25fdGhlX2ZseV9jdXRfZmluYWxpemVcbiAgICAoTGlzdC5mb2xkX2xlZnQgb25fdGhlX2ZseV9jdXRfc3RlcCBvbl90aGVfZmx5X2N1dF9pbml0IHJldl90cmFjZSlcblxubGV0IHJlbW92ZV9vYnNfYmVmb3JlIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGFzdF9laWQgdHJhY2UgPVxuICAoIGVycm9yLFxuICAgIGxvZ19pbmZvLFxuICAgIGxldCByZWMgYXV4IGwgc2NvcmUgb3V0cHV0ID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBMaXN0LnJldiBvdXRwdXQsIHNjb3JlXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICBpZiBUcmFjZS5zdGVwX2lzX29icyB0IHRoZW4gKFxuICAgICAgICAgIG1hdGNoIFRyYWNlLnNpbXVsYXRpb25faW5mb19vZl9zdGVwIHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhdXggcSBzY29yZSAodCA6OiBvdXRwdXQpXG4gICAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGlmIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCB4ID49IGxhc3RfZWlkIHRoZW5cbiAgICAgICAgICAgICAgKCBMaXN0LnJldiAoTGlzdC5mb2xkX2xlZnQgKGZ1biBsaXN0IGEgLT4gYSA6OiBsaXN0KSBvdXRwdXQgbCksXG4gICAgICAgICAgICAgICAgc2NvcmUgKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhdXggcSAoc3VjYyBzY29yZSkgb3V0cHV0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGF1eCBxIHNjb3JlICh0IDo6IG91dHB1dClcbiAgICBpblxuICAgIGF1eCB0cmFjZSAwIFtdIClcblxubGV0IHJlbW92ZV9vYnNfYmVmb3JlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxhc3RfaW5mbyB0cmFjZSA9XG4gIGxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllc1xuICAgICh0cmFuc2Zvcm1fdHJhY2VfZ2VuXG4gICAgICAgKGZ1biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAtPlxuICAgICAgICAgcmVtb3ZlX29ic19iZWZvcmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGFzdF9pbmZvKVxuICAgICAgIChTb21lIFwiXFx0LSBSZW1vdmluZyBhbHJlYWR5IHZpc2l0ZWQgb2JzZXJ2YWJsZSBoaXRzXCIpXG4gICAgICAgXCJUcmFjZSBhZnRlciBoYXZpbmcgcmVtb3ZlZCBzZWVuIG9ic2VydmFibGUgaGl0c1xcblwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuUGFydGlhbF9vcmRlcl9yZWR1Y3Rpb24pXG4gICAgRG9fbm90X2NhcmUgTmV1dHJhbCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZVxuXG5sZXQgcmVtb3ZlX29ic19iZWZvcmUgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciBsYXN0X2luZm8gdHJhY2UgPVxuICBtYXRjaCBsYXN0X2luZm8gd2l0aFxuICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCB0cmFjZVxuICB8IFNvbWUgbCAtPlxuICAgIGxldCBsYXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gcmVzdWx0IHggLT5cbiAgICAgICAgICBsZXQgbGFzdF9laWQgPSBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgeCBpblxuICAgICAgICAgIG1heCByZXN1bHQgbGFzdF9laWQpXG4gICAgICAgIDAgbFxuICAgIGluXG4gICAgcmVtb3ZlX29ic19iZWZvcmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGFzdCB0cmFjZVxuXG5sZXQgZmlsbF9zaXBob24gPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlblxuICAgICAgIChtb25hZGljX2xpZnQgUy5QSC5CLlBCLkNJLlBvLksuZmlsbF9zaXBob24pXG4gICAgICAgKFNvbWUgXCJcXHQtIGRldGVjdGluZyBzaXBob25zXCIpIFwiVHJhY2UgYWZ0ZXIgaGF2aW5nIGRldGVjdGVkIHNpcGhvbnM6XFxuXCJcbiAgICAgICBTdG9yeVByb2ZpbGluZy5TaXBob25fZGV0ZWN0aW9uKVxuICAgIFJlcXVpcmVfdGhlX2Fic2NlbmNlX29mX2FtYmlndWl0eSBNYXlfYWRkX2FtYmlndWl0aWVzXG5cbmxldCAocmVtb3ZlX2V2ZW50c19hZnRlcl9sYXN0X29icyA6ICh0cmFjZSwgdHJhY2UpIHVuYXJ5KSA9XG4gIGxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllc1xuICAgICh0cmFuc2Zvcm1fdHJhY2VfZ2VuXG4gICAgICAgKG1vbmFkaWNfbGlmdFxuICAgICAgICAgIChMaXN0X3V0aWwucmVtb3ZlX3N1ZmZpeF9hZnRlcl9sYXN0X29jY3VycmVuY2UgVHJhY2Uuc3RlcF9pc19vYnMpKVxuICAgICAgIChTb21lIFwiXFx0LSByZW1vdmluZyBldmVudHMgb2NjdXJyaW5nIGFmdGVyIHRoZSBsYXN0IG9ic2VydmFibGVcIilcbiAgICAgICBcIlRyYWNlIGFmdGVyIGhhdmluZyByZW1vdmVkIHRoZSBldmVudHMgYWZ0ZXIgdGhlIGxhc3Qgb2JzZXJ2YWJsZVwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuUmVtb3ZlX2V2ZW50c19hZnRlcl9sYXN0X29ic2VydmFibGUpXG4gICAgRG9fbm90X2NhcmUgTmV1dHJhbFxuXG5sZXQgcmVtb3ZlX3BzZXVkb19pbnZlcnNlX2V2ZW50cyA9XG4gIGxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllc1xuICAgICh0cmFuc2Zvcm1fdHJhY2VfZ2VuIFMuUEguQi5QQi5DSS5jdXRcbiAgICAgICAoU29tZSBcIlxcdC0gZGV0ZWN0aW5nIHBzZXVkbyBpbnZlcnNlIGV2ZW50c1wiKVxuICAgICAgIFwiVHJhY2UgYWZ0ZXIgaGF2aW5nIHJlbW92ZWQgcHNldWRvIGludmVyc2UgZXZlbnRzOlxcblwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuUHNldWRvX2ludmVyc2VfZGVsZXRpb24pXG4gICAgRG9fbm90X2NhcmUgTmV1dHJhbFxuXG50eXBlIGNmbG93X2dyaWQgPSBDYXVzYWwuZ3JpZFxudHlwZSBlbnJpY2hlZF9jZmxvd19ncmlkID0gQ2F1c2FsLmVucmljaGVkX2dyaWRcbnR5cGUgbXVzaWNhbF9ncmlkID0gUy5QSC5CLmJsYWNrYm9hcmRcbnR5cGUgc3RvcnlfdGFibGUgPSB7IHN0b3J5X2NvdW50ZXI6IGludDsgc3RvcnlfbGlzdDogRC50YWJsZSB9XG5cbmxldCBjb3VudF9zdG9yaWVzIHN0b3J5X3RhYmxlID0gRC5jb3VudF9zdG9yaWVzIHN0b3J5X3RhYmxlLnN0b3J5X2xpc3RcblxudHlwZSBvYnNlcnZhYmxlX2hpdCA9IHtcbiAgbGlzdF9vZl9hY3Rpb25zOiBTLlBILnVwZGF0ZV9vcmRlciBsaXN0O1xuICBsaXN0X29mX2V2ZW50czogc3RlcF9pZCBsaXN0O1xuICBydW50aW1lX2luZm86IHVuaXQgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgb3B0aW9uO1xufVxuXG5sZXQgZ2V0X2V2ZW50X2xpc3RfZnJvbV9vYnNlcnZhYmxlX2hpdCBhID0gYS5saXN0X29mX2V2ZW50c1xubGV0IGdldF9ydW50aW1lX2luZm9fZnJvbV9vYnNlcnZhYmxlX2hpdCBhID0gYS5ydW50aW1lX2luZm9cbmxldCBfZ2V0X2xpc3Rfb3JkZXIgYSA9IGEubGlzdF9vZl9hY3Rpb25zXG5sZXQgZXJyb3JfaW5pdCA9IEV4Y2VwdGlvbi5lbXB0eV9lcnJvcl9oYW5kbGVyXG5cbmxldCBleHRyYWN0X29ic2VydmFibGVfaGl0c19mcm9tX211c2ljYWxfbm90YXRpb24gYSA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBiIHByb2ZpbGluZ19pbmZvXG4gICAgYyBkID1cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgbCA9IFMuUEguZm9yY2VkX2V2ZW50cyBhIGIgcHJvZmlsaW5nX2luZm8gYyBkIGluXG4gICggZXJyb3IsXG4gICAgcHJvZmlsaW5nX2luZm8sXG4gICAgTGlzdC5yZXZfbWFwXG4gICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICB7IGxpc3Rfb2ZfYWN0aW9ucyA9IGE7IGxpc3Rfb2ZfZXZlbnRzID0gYjsgcnVudGltZV9pbmZvID0gYyB9KVxuICAgICAgKExpc3QucmV2IGwpIClcblxubGV0IGV4dHJhY3Rfb2JzZXJ2YWJsZV9oaXRfZnJvbV9tdXNpY2FsX25vdGF0aW9uIGEgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gYiBwcm9maWxpbmdfaW5mb1xuICAgIGMgc3RyaW5nIGQgPVxuICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCBsID0gUy5QSC5mb3JjZWRfZXZlbnRzIGEgYiBwcm9maWxpbmdfaW5mbyBjIGQgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgWyAoYSwgYiwgYykgXSAtPlxuICAgICggZXJyb3IsXG4gICAgICBwcm9maWxpbmdfaW5mbyxcbiAgICAgIHsgbGlzdF9vZl9hY3Rpb25zID0gYTsgbGlzdF9vZl9ldmVudHMgPSBiOyBydW50aW1lX2luZm8gPSBjIH0gKVxuICB8IFtdIC0+IGZhaWx3aXRoIChzdHJpbmcgXiBcIiBubyBzdG9yeVwiKVxuICB8IF8gOjogXyAtPiBmYWlsd2l0aCAoc3RyaW5nIF4gXCIgc2V2ZXJhbCBzdG9yaWVzXCIpXG5cbmxldCB0cmFuc2xhdGUgcCBoIHByb2ZpbGluZ19pbmZvIGUgYiBsaXN0ID1cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgKGxpc3QsIF8pID1cbiAgICBTLnRyYW5zbGF0ZSBwIGggcHJvZmlsaW5nX2luZm8gZSBiIGxpc3RcbiAgaW5cbiAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZV9vZl9wcmV0cmFjZSBsaXN0XG5cbmxldCBjYXVzYWxfcHJlZml4X29mX2FuX29ic2VydmFibGVfaGl0IHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyXG4gICAgcHJvZmlsaW5nX2luZm8gZXJyb3Igc3RyaW5nIGJsYWNrYm9hcmQgKGVucmljaGVkX2dyaWQgOiBlbnJpY2hlZF9jZmxvd19ncmlkKVxuICAgIG9ic2VydmFibGVfaWQgPVxuICBsZXQgZWlkID1cbiAgICBtYXRjaCBnZXRfZXZlbnRfbGlzdF9mcm9tX29ic2VydmFibGVfaGl0IG9ic2VydmFibGVfaWQgd2l0aFxuICAgIHwgWyBhIF0gLT4gYVxuICAgIHwgW10gLT4gZmFpbHdpdGggKFwibm8gb2JzZXJ2YWJsZSBpbiB0aGF0IHN0b3J5XCIgXiBzdHJpbmcpXG4gICAgfCBfIC0+IGZhaWx3aXRoIChcInNldmVyYWwgb2JzZXJ2YWJsZXMgaW4gdGhhdCBzdG9yeVwiIF4gc3RyaW5nKVxuICBpblxuICBsZXQgZXZlbnRfaWRfbGlzdCA9XG4gICAgR3JhcGhfY2xvc3VyZS5nZXRfbGlzdF9pbl9pbmNyZWFzaW5nX29yZGVyX3dpdGhfbGFzdF9ldmVudFxuICAgICAgKFMuUEguQi5QQi5pbnRfb2Zfc3RlcF9pZCAoUy5QSC5CLlBCLmluY19zdGVwX2lkIGVpZCkpXG4gICAgICBlbnJpY2hlZF9ncmlkLkNhdXNhbC5wcmVjX3N0YXJcbiAgaW5cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgb3V0cHV0ID1cbiAgICB0cmFuc2xhdGUgcGFyYW1ldGVyIGhhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgKExpc3QucmV2X21hcCBTLlBILkIuUEIuc3RlcF9pZF9vZl9pbnQgKExpc3QucmV2IGV2ZW50X2lkX2xpc3QpKVxuICBpblxuICBlcnJvciwgcHJvZmlsaW5nX2luZm8sIG91dHB1dFxuXG5sZXQgZXhwb3J0X211c2ljYWxfZ3JpZF90b194bHMgYSA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBiXG4gICAgKHAgOiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvKSBjIGQgZSBmIGcgPVxuICBTLlBILkIuZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIGEgYiBwIGMgZCBlIGYgZ1xuXG5sZXQgcHJpbnRfbXVzaWNhbF9ncmlkIGEgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gYiBwIGMgZCA9XG4gIFMuUEguQi5wcmludF9ibGFja2JvYXJkIGEgYiBwIGMgZFxuXG5sZXQgY3JlYXRlX3N0b3J5X3RhYmxlIHBhcmFtZXRlcnMgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgIHByb2ZpbGluZ19pbmZvIGVycm9yID1cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgaW5pdCA9XG4gICAgRC5pbml0X3RhYmxlIHBhcmFtZXRlcnMgaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvclxuICBpblxuICBlcnJvciwgcHJvZmlsaW5nX2luZm8sIHsgc3RvcnlfY291bnRlciA9IDE7IHN0b3J5X2xpc3QgPSBpbml0IH1cblxubGV0IF9nZXRfdHJhY2Vfb2Zfc3RvcnkgKF8sIF8sIF8sIHksIF8pID0gdHJhY2Vfb2ZfcHJldHJhY2UgeVxubGV0IF9nZXRfaW5mb19vZl9zdG9yeSAoXywgXywgXywgXywgdCkgPSB0XG5cbmxldCB0aWNrX29wdCBwYXJhbWV0ZXIgYmFyID1cbiAgbWF0Y2ggYmFyIHdpdGhcbiAgfCBOb25lIC0+IGJhclxuICB8IFNvbWUgKGxvZ2dlciwgYmFyKSAtPlxuICAgIFNvbWVcbiAgICAgICggbG9nZ2VyLFxuICAgICAgICBUaWNrX3N0b3JpZXMudGlja19zdG9yaWVzIGxvZ2dlciBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyKVxuICAgICAgICAgIGJhciApXG5cbmxldCBjbG9zZV9wcm9ncmVzc19iYXJfb3B0IGxvZ2dlciA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXJcblxubGV0IHByaW50X2ZhaWxzIGxvZ2dlciBzIG4gPVxuICBtYXRjaCBuIHdpdGhcbiAgfCAwIC0+ICgpXG4gIHwgMSAtPiBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiQC5cXHQgMSAlcyBoYXMgZmFpbGVkQC5cIiBzXG4gIHwgXyAtPiBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiQC5cXHQgJWkgJXNzIGhhdmUgZmFpbGVkQC5cIiBuIHNcblxubGV0IGluY19mYWlscyBhIGEnIGIgPVxuICBpZiBhID09IGEnIHRoZW5cbiAgICBzdWNjIGJcbiAgZWxzZVxuICAgIGJcblxubGV0IGZvbGRfc3RvcnlfdGFibGVfZ2VuIGxvZ2dlciBwYXJhbWV0ZXIgPyhzaGFsbF93ZV9jb21wdXRlID0gd2Vfc2hhbGwpXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiA9IHdlX3NoYWxsKVxuICAgIChoYW5kbGVyIDoga2FwcGFfaGFuZGxlcikgKHByb2ZpbGluZ19pbmZvIDogcHJvZmlsaW5nX2luZm8pIGVycm9yIHNcbiAgICAoZiA6ICh0cmFjZSwgdHJhY2VfcnVudGltZV9pbmZvIGxpc3QsICdhLCAnYSkgdGVybmFyeSkgbCBhID1cbiAgbGV0IG5fc3Rvcmllc19pbnB1dCA9IGNvdW50X3N0b3JpZXMgbCBpblxuICBsZXQgcHJvZ3Jlc3NfYmFyID1cbiAgICBTb21lXG4gICAgICAoIGxvZ2dlcixcbiAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3RvcmllcyBsb2dnZXIgQ29uZmlndXJhdGlvbi5lbXB0eVxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILnNhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlcilcbiAgICAgICAgICAoZmFsc2UsIDAsIDAsIG5fc3Rvcmllc19pbnB1dCkgKVxuICBpblxuICBsZXQgZyBwYXJhbWV0ZXIgaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvciBzdG9yeSBpbmZvXG4gICAgICAoaywgcHJvZ3Jlc3NfYmFyLCBhLCBuX2ZhaWxzKSA9XG4gICAgbGV0IGV2ZW50ID0gU3RvcnlQcm9maWxpbmcuU3RvcnkgayBpblxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8gPVxuICAgICAgUC5hZGRfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIGV2ZW50IE5vbmUgcHJvZmlsaW5nX2luZm9cbiAgICBpblxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIGEnID1cbiAgICAgIGYgcGFyYW1ldGVyIH5zaGFsbF93ZV9jb21wdXRlIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvblxuICAgICAgICBoYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yXG4gICAgICAgICh0cmFjZV9vZl9wcmV0cmFjZV93aXRoX2FtYmlndWl0eSBmYWxzZSBzdG9yeSlcbiAgICAgICAgaW5mbyBhXG4gICAgaW5cbiAgICBsZXQgcHJvZ3Jlc3NfYmFyID0gdGlja19vcHQgcGFyYW1ldGVyIHByb2dyZXNzX2JhciBpblxuICAgIGxldCBuX2ZhaWxzID0gaW5jX2ZhaWxzIGEgYScgbl9mYWlscyBpblxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8gPVxuICAgICAgUC5jbG9zZV9ldmVudFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgZXZlbnQgTm9uZSBwcm9maWxpbmdfaW5mb1xuICAgIGluXG4gICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCAoc3VjYyBrLCBwcm9ncmVzc19iYXIsIGEnLCBuX2ZhaWxzKVxuICBpblxuICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCAoXywgXywgYSwgbl9mYWlscykgPVxuICAgIEQuZm9sZF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvciBnIGwuc3RvcnlfbGlzdFxuICAgICAgKDEsIHByb2dyZXNzX2JhciwgYSwgMClcbiAgaW5cbiAgbGV0ICgpID0gY2xvc2VfcHJvZ3Jlc3NfYmFyX29wdCBsb2dnZXIgaW5cbiAgbGV0ICgpID0gcHJpbnRfZmFpbHMgcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkgubG9nZ2VyX2VyciBzIG5fZmFpbHMgaW5cbiAgZXJyb3IsIChwcm9maWxpbmdfaW5mbyA6IHByb2ZpbGluZ19pbmZvKSwgYVxuXG5sZXQgZm9sZF9zdG9yeV90YWJsZV93aXRoX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGVcbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyXG4gICAgcHJvZmlsaW5nX2luZm8gZXJyb3IgcyBmIGwgYSA9XG4gIGZvbGRfc3RvcnlfdGFibGVfZ2VuXG4gICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiBoYW5kbGVyXG4gICAgcHJvZmlsaW5nX2luZm8gZXJyb3IgcyBmIGwgYVxuXG5sZXQgZm9sZF9zdG9yeV90YWJsZV93aXRob3V0X3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGVcbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyXG4gICAgcHJvZmlsaW5nX2luZm8gZXJyb3IgcyBmIGwgYSA9XG4gIGZvbGRfc3RvcnlfdGFibGVfZ2VuIExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlciBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGVcbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvciBzIGYgbCBhXG5cbmxldCBnZXRfY291bnRlciBzdG9yeV9saXN0ID0gc3RvcnlfbGlzdC5zdG9yeV9jb3VudGVyXG5sZXQgZ2V0X3N0b3JpZXMgc3RvcnlfbGlzdCA9IHN0b3J5X2xpc3Quc3RvcnlfbGlzdFxuXG5sZXQgX2luY19jb3VudGVyIHN0b3J5X2xpc3QgPVxuICB7IHN0b3J5X2xpc3Qgd2l0aCBzdG9yeV9jb3VudGVyID0gc3VjYyBzdG9yeV9saXN0LnN0b3J5X2NvdW50ZXIgfVxuXG5sZXQgYnVpbGRfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBjb21wdXRhdGlvbl9pbmZvIGVycm9yIHRyYWNlIGJvb2wgPVxuICBsZXQgZXJyb3IsIGNvbXB1dGF0aW9uX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLkJ1aWxkX2dyaWQgTm9uZSBjb21wdXRhdGlvbl9pbmZvXG4gIGluXG4gIGxldCBncmlkID0gUy5QSC5CLlBCLkNJLlBvLksuYnVpbGRfZ3JpZCB0cmFjZSBib29sIGhhbmRsZXIgaW5cbiAgbGV0IGVycm9yLCBjb21wdXRhdGlvbl9pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLkJ1aWxkX2dyaWQgTm9uZSBjb21wdXRhdGlvbl9pbmZvXG4gIGluXG4gIGVycm9yLCBjb21wdXRhdGlvbl9pbmZvLCBncmlkXG5cbmxldCBzdG9yZV90cmFjZSAocGFyYW1ldGVyIDogcGFyYW1ldGVyKSA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyXG4gICAgY29tcHV0YXRpb25faW5mbyBlcnJvciB0cmFjZSBvYnNfaW5mbyBzdG9yeV90YWJsZSA9XG4gIGxldCBlcnJvciwgY29tcHV0YXRpb25faW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3IgU3RvcnlQcm9maWxpbmcuU3RvcmVfdHJhY2UgTm9uZSBjb21wdXRhdGlvbl9pbmZvXG4gIGluXG4gIGxldCBwcmV0cmFjZSA9IGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSBpblxuICBsZXQgdHJhY2UyID0gZ2V0X2NvbXByZXNzZWRfdHJhY2UgdHJhY2UgaW5cbiAgbGV0IGJvb2wgPSBub3QgKGlzX2NvbXByZXNzZWRfdHJhY2UgdHJhY2UpIGluXG4gIGxldCBlcnJvciwgY29tcHV0YXRpb25faW5mbywgZ3JpZCA9XG4gICAgYnVpbGRfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBjb21wdXRhdGlvbl9pbmZvIGVycm9yIHRyYWNlMiBib29sXG4gIGluXG4gIGxldCBjb21wdXRhdGlvbl9pbmZvID0gUC5zZXRfZ3JpZF9nZW5lcmF0aW9uIGNvbXB1dGF0aW9uX2luZm8gaW5cbiAgbGV0IHN0b3J5X2luZm8gPVxuICAgIExpc3QucmV2X21hcFxuICAgICAgKFRyYWNlLlNpbXVsYXRpb25faW5mby51cGRhdGVfcHJvZmlsaW5nX2luZm8gKFAuY29weSBjb21wdXRhdGlvbl9pbmZvKSlcbiAgICAgIChMaXN0LnJldiBvYnNfaW5mbylcbiAgaW5cbiAgbGV0IGVycm9yLCBjb21wdXRhdGlvbl9pbmZvLCBzdG9yeV9saXN0ID1cbiAgICBELmFkZF9zdG9yeSBwYXJhbWV0ZXIgaGFuZGxlciBjb21wdXRhdGlvbl9pbmZvIGVycm9yIGdyaWQgcHJldHJhY2VcbiAgICAgIHN0b3J5X2luZm8gc3RvcnlfdGFibGUuc3RvcnlfbGlzdFxuICBpblxuICBsZXQgc3RvcnlfdGFibGUgPVxuICAgIHsgc3RvcnlfbGlzdDsgc3RvcnlfY291bnRlciA9IHN0b3J5X3RhYmxlLnN0b3J5X2NvdW50ZXIgKyAxIH1cbiAgaW5cbiAgbGV0IGVycm9yLCBjb21wdXRhdGlvbl9pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLlN0b3JlX3RyYWNlIE5vbmUgY29tcHV0YXRpb25faW5mb1xuICBpblxuXG4gIGVycm9yLCBjb21wdXRhdGlvbl9pbmZvLCBzdG9yeV90YWJsZVxuXG5sZXQgZmxhdHRlbl9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mb1xuICAgIGVycm9yIHN0b3J5X3RhYmxlID1cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgRC5oYXNoX2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RvcnlfdGFibGUuc3RvcnlfbGlzdFxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIHsgc3RvcnlfdGFibGUgd2l0aCBzdG9yeV9saXN0ID0gbGlzdCB9XG5cbmxldCBjb21wcmVzcyA/aGV1cmlzdGljIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvXG4gICAgZXJyb3IgdHJhY2UgPVxuICBtYXRjaCBwYXJhbWV0ZXIuUy5QSC5CLlBCLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCBbIHRyYWNlIF1cbiAgfCBTb21lIFN0b3J5X2pzb24uQ2F1c2FsIC0+XG4gICAgbGV0ICgpID1cbiAgICAgIGlmXG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyXG4gICAgICAgICYmIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyXG4gICAgICB0aGVuXG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucHVzaF9qc29uIHBhcmFtZXRlclxuICAgICAgICAgIChTdG9yeV9qc29uLlBoYXNlXG4gICAgICAgICAgICAgKFN0b3J5X2pzb24uSW5wcm9ncmVzcywgXCJTdGFydCBvbmUgY2F1c2FsIGNvbXByZXNzaW9uXCIpKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgY3V0IHBhcmFtZXRlciB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbCBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIFsgdHJhY2UgXVxuICB8IFNvbWUgKFN0b3J5X2pzb24uV2VhayB8IFN0b3J5X2pzb24uU3Ryb25nKSAtPlxuICAgIGxldCBldmVudCwgcyA9XG4gICAgICBtYXRjaCBwYXJhbWV0ZXIuUy5QSC5CLlBCLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICAgICAgfCBTb21lIFN0b3J5X2pzb24uV2VhayAtPlxuICAgICAgICBTdG9yeVByb2ZpbGluZy5XZWFrX2NvbXByZXNzaW9uLCBcIlN0YXJ0IG9uZSB3ZWFrIGNvbXByZXNzaW9uXCJcbiAgICAgIHwgXyAtPiBTdG9yeVByb2ZpbGluZy5TdHJvbmdfY29tcHJlc3Npb24sIFwiU3RhcnQgb25lIHN0cm9uZyBjb21wcmVzc2lvblwiXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWZcbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXJcbiAgICAgICAgJiYgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfY2hhbm5lbF9vbiBwYXJhbWV0ZXJcbiAgICAgIHRoZW5cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAgICAgKFN0b3J5X2pzb24uUGhhc2UgKFN0b3J5X2pzb24uSW5wcm9ncmVzcywgcykpXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIFAuYWRkX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvciBldmVudFxuICAgICAgICAoU29tZSAoZnVuICgpIC0+IHNpemVfb2ZfcHJldHJhY2UgdHJhY2UpKVxuICAgICAgICBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGV2ZW50X2xpc3QgPSBnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgIFMuUEguQi5pbXBvcnQgP2hldXJpc3RpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgIFMuUEguZm9yY2VkX2V2ZW50cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgbGlzdF9vcmRlciA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgKGxpc3Rfb3JkZXIsIF8sIF8pIDo6IF8gLT4gbGlzdF9vcmRlclxuICAgICAgfCBfIC0+IFtdXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgb3V0cHV0LCBsaXN0KSA9XG4gICAgICBTLmNvbXByZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdF9vcmRlclxuICAgIGluXG4gICAgbGV0IGxpc3QgPVxuICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgIChmdW4gcHJldHJhY2UgLT5cbiAgICAgICAgICBsZXQgZXZlbnRfbGlzdCA9IFMudHJhbnNsYXRlX3Jlc3VsdCBwcmV0cmFjZSBpblxuICAgICAgICAgIGxldCBldmVudF9saXN0ID0gUy5QSC5CLlBCLkNJLlBvLksuY2xlYW5fZXZlbnRzIGV2ZW50X2xpc3QgaW5cbiAgICAgICAgICBidWlsZF9jb21wcmVzc2VkX3RyYWNlIGV2ZW50X2xpc3QgcHJldHJhY2UpXG4gICAgICAgIGxpc3RcbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFAuc2V0X3N0b3J5X3Jlc2VhcmNoX3RpbWUgbG9nX2luZm8gaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIFAuY2xvc2VfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIGV2ZW50XG4gICAgICAgIChTb21lIChmdW4gKCkgLT4gc2l6ZV9vZl9wcmV0cmFjZSB0cmFjZSkpXG4gICAgICAgIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgIGlmIFMuUEguQi5pc19mYWlsZWQgb3V0cHV0IHRoZW5cbiAgICAgICAgRXhjZXB0aW9uLndhcm5cbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBlcnJvciBfX1BPU19fIH5tZXNzYWdlOlwiT25lIGNvbXByZXNzaW9uIGhhcyBmYWlsZWRcIiBFeGl0ICgpXG4gICAgICBlbHNlXG4gICAgICAgIGVycm9yLCAoKVxuICAgIGluXG4gICAgbGV0IGVycm9yID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmxvZ2dlcl9lcnJcbiAgICAgICAgICAgIFwiXFx0XFx0ICogcmVzdWx0XCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICBpZiBTLlBILkIuaXNfZmFpbGVkIG91dHB1dCB0aGVuIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgX2xvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgIFMuUEguQi5leHBvcnRfYmxhY2tib2FyZF90b194bHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICBcIkZBSUxcIiAwIDAgYmxhY2tib2FyZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBwYXJhbWV0ZXIuUy5QSC5CLlBCLkNJLlBvLksuSC5sb2dnZXJfZXJyXG4gICAgICAgICAgICAgICAgXCJGYWlsX3RvX2NvbXByZXNzXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvclxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkgubG9nZ2VyX2VyclxuICAgICAgICAgICAgICAgIFwiU3VjY2VlZF90b19jb21wcmVzc1wiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yXG4gICAgICApIGVsc2VcbiAgICAgICAgZXJyb3JcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgbGlzdFxuXG5sZXQgc3Ryb25nbHlfY29tcHJlc3MgP2hldXJpc3RpYyBwYXJhbWV0ZXIgPVxuICBjb21wcmVzcyA/aGV1cmlzdGljIChTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9jb21wcmVzc2lvbl9zdHJvbmcgcGFyYW1ldGVyKVxuXG5sZXQgd2Vha2x5X2NvbXByZXNzID9oZXVyaXN0aWMgcGFyYW1ldGVyID1cbiAgY29tcHJlc3MgP2hldXJpc3RpYyAoUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfY29tcHJlc3Npb25fd2VhayBwYXJhbWV0ZXIpXG5cbmxldCBjb252ZXJ0X3RyYWNlX2ludG9fZ3JpZCB0cmFjZSBoYW5kbGVyID1cbiAgbGV0IGV2ZW50X2xpc3QgPSBnZXRfY29tcHJlc3NlZF90cmFjZSB0cmFjZSBpblxuICBTLlBILkIuUEIuQ0kuUG8uSy5idWlsZF9ncmlkIGV2ZW50X2xpc3RcbiAgICAobm90IChpc19jb21wcmVzc2VkX3RyYWNlIHRyYWNlKSlcbiAgICBoYW5kbGVyXG5cbmxldCBjb252ZXJ0X3RyYWNlX2ludG9fbXVzaWNhbF9ub3RhdGlvbiBwYXJhbWV0ZXJzID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGthcHBhX2hhbmRsZXJcbiAgICBwcm9maWxpbmdfaW5mbyBlcnJvciB0cmFjZSA9XG4gIFMuUEguQi5pbXBvcnQgcGFyYW1ldGVycyBrYXBwYV9oYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yXG4gICAgKGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSlcblxubGV0IGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9jbG9zdXJlIGNvbmZpZyBsb2dnZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mb1xuICAgIGVycm9yIGdyaWQgPVxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvdXRwdXQgPVxuICAgIENhdXNhbC5lbnJpY2hfZ3JpZFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBsb2dnZXIpXG4gICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNvbmZpZyBncmlkXG4gIGluXG4gIGVycm9yLCBsb2dfaW5mbywgb3V0cHV0XG5cbmxldCBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRoX2FfcHJvZ3Jlc3NfYmFyID1cbiAgZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX2Nsb3N1cmVcbiAgICBHcmFwaF9jbG9zdXJlLmNvbmZpZ19iaWdfZ3JhcGhfd2l0aF9wcm9ncmVzc19iYXJcblxubGV0IGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9wYXN0X29mX29ic2VydmFibGVzX3dpdGhvdXRfYV9wcm9ncmVzc19iYXIgPVxuICBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfY2xvc3VyZVxuICAgIEdyYXBoX2Nsb3N1cmUuY29uZmlnX2JpZ19ncmFwaF93aXRob3V0X3Byb2dyZXNzX2JhclxuXG5sZXQgX2VucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9wYXN0X29mX2VhY2hfbm9kZV93aXRob3V0X2FfcHJvZ3Jlc3NfYmFyID1cbiAgZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX2Nsb3N1cmVcbiAgICBHcmFwaF9jbG9zdXJlLmNvbmZpZ19iaWdfZ3JhcGhfd2l0aG91dF9wcm9ncmVzc19iYXJcblxubGV0IGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9wYXN0X29mX2VhY2hfbm9kZV93aXRob3V0X2FfcHJvZ3Jlc3NfYmFyID1cbiAgZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX2Nsb3N1cmUgR3JhcGhfY2xvc3VyZS5jb25maWdfc21hbGxfZ3JhcGhcblxubGV0IHNvcnRfc3RvcnlfbGlzdCA9IEQuc29ydF9saXN0XG5cbmxldCBleHBvcnRfc3RvcnlfdGFibGUgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciB4ID1cbiAgbGV0IGEsIGxvZ19pbmZvLCBiID1cbiAgICBzb3J0X3N0b3J5X2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgKGdldF9zdG9yaWVzIHgpXG4gIGluXG4gIGEsIGxvZ19pbmZvLCBiXG5cbmxldCBoYXNfb2JzIHggPSBMaXN0LmV4aXN0cyBUcmFjZS5zdGVwX2lzX29icyAoZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHgpXG5cbmxldCBmb2xkX2xlZnRfd2l0aF9wcm9ncmVzc19iYXIgPyhldmVudCA9IFN0b3J5UHJvZmlsaW5nLkR1bW15KSBwYXJhbWV0ZXJcbiAgICA/KHNoYWxsX3dlX2NvbXB1dGUgPSB3ZV9zaGFsbClcbiAgICA/KHNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uID0gd2Vfc2hhbGwpXG4gICAgPyhwcmludF9pZl96ZXJvID0gd2Vfc2hhbGwpIGhhbmRsZXIgcHJvZmlsaW5nX2luZm9ybWF0aW9uIGVycm9yXG4gICAgKGYgOiAoJ2EsICdiLCAnYSkgYmluYXJ5KSBhIGxpc3QgPVxuICBsZXQgbiA9IExpc3QubGVuZ3RoIGxpc3QgaW5cbiAgbGV0IHN0cmluZywgKGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24pID1cbiAgICBpZiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmlzX2R1bW15IGV2ZW50IHRoZW5cbiAgICAgIFwiXCIsIChlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uKVxuICAgIGVsc2VcbiAgICAgICggU3RvcnlQcm9maWxpbmcuc3RyaW5nX29mX3N0ZXBfa2luZCBldmVudCxcbiAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBlcnJvciBldmVudFxuICAgICAgICAgIChTb21lIChmdW4gXyAtPiBMaXN0Lmxlbmd0aCBsaXN0KSlcbiAgICAgICAgICBwcm9maWxpbmdfaW5mb3JtYXRpb24gKVxuICBpblxuICBsZXQgcHJvZ3Jlc3NfYmFyID1cbiAgICBUaWNrX3N0b3JpZXMudGlja19zdG9yaWVzXG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLnNhdmVfcHJvZ3Jlc3NfYmFyXG4gICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAoZmFsc2UsIDAsIDAsIG4pXG4gIGluXG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uLCBfLCBfLCBhLCBuX2ZhaWwgPVxuICAgIGxldCByZWMgYXV4IGxpc3QgKGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGJhciwgaywgYSwgbl9mYWlsKSA9XG4gICAgICBsZXQgZXZlbnQgPSBTdG9yeVByb2ZpbGluZy5TdG9yeSBrIGluXG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgW10gLT4gZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiwgYmFyLCBrLCBhLCBuX2ZhaWxcbiAgICAgIHwgeCA6OiB0YWlsIC0+XG4gICAgICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uID1cbiAgICAgICAgICBQLmFkZF9ldmVudFxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBlcnJvciBldmVudCBOb25lIHByb2ZpbGluZ19pbmZvcm1hdGlvblxuICAgICAgICBpblxuICAgICAgICBsZXQgb3V0cHV0X29wdCA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiwgYScgPVxuICAgICAgICAgICAgICBmIHBhcmFtZXRlciB+c2hhbGxfd2VfY29tcHV0ZVxuICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiB+cHJpbnRfaWZfemVybyBoYW5kbGVyXG4gICAgICAgICAgICAgICAgcHJvZmlsaW5nX2luZm9ybWF0aW9uIGVycm9yIGEgeFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiYXIgPVxuICAgICAgICAgICAgICBUaWNrX3N0b3JpZXMudGlja19zdG9yaWVzXG4gICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbi5lbXB0eVxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLnNhdmVfcHJvZ3Jlc3NfYmFyXG4gICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgIGJhclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBuX2ZhaWwgPSBpbmNfZmFpbHMgYSBhJyBuX2ZhaWwgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uID1cbiAgICAgICAgICAgICAgUC5jbG9zZV9ldmVudFxuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGVycm9yIGV2ZW50IE5vbmUgcHJvZmlsaW5nX2luZm9ybWF0aW9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU29tZSAoZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiwgYmFyLCBrICsgMSwgYScsIG5fZmFpbClcbiAgICAgICAgICB3aXRoIFN5cy5CcmVhayAtPiBOb25lXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBvdXRwdXRfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24gPVxuICAgICAgICAgICAgUC5jbG9zZV9ldmVudFxuICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgZXJyb3IgZXZlbnQgTm9uZSBwcm9maWxpbmdfaW5mb3JtYXRpb25cbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGJhciwgayArIDEsIGEsIG5fZmFpbFxuICAgICAgICB8IFNvbWUgcmVtYW5lbnQgLT4gYXV4IHRhaWwgcmVtYW5lbnQpXG4gICAgaW5cbiAgICBhdXggbGlzdCAoZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiwgcHJvZ3Jlc3NfYmFyLCAxLCBhLCAwKVxuICBpblxuICBsZXQgKCkgPSBjbG9zZV9wcm9ncmVzc19iYXJfb3B0IChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBpblxuICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiA9XG4gICAgaWYgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pc19kdW1teSBldmVudCB0aGVuXG4gICAgICBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uXG4gICAgZWxzZVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgZXZlbnQgTm9uZSBwcm9maWxpbmdfaW5mb3JtYXRpb25cbiAgaW5cbiAgbGV0ICgpID0gcHJpbnRfZmFpbHMgcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkgubG9nZ2VyX2VyciBzdHJpbmcgbl9mYWlsIGluXG4gIGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGFcblxubGV0IF9mb2xkX292ZXJfdGhlX2NhdXNhbF9wYXN0X29mX29ic2VydmFibGVzX3Rocm91Z2hfYV9ncmlkX3dpdGhfYV9wcm9ncmVzc19iYXJcbiAgICBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBmIHQgYSA9XG4gIGxldCBncmlkID0gY29udmVydF90cmFjZV9pbnRvX2dyaWQgdCBoYW5kbGVyIGluXG4gIENhdXNhbC5mb2xkX292ZXJfY2F1c2FsX3Bhc3Rfb2Zfb2JzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgR3JhcGhfY2xvc3VyZS5jb25maWdfYmlnX2dyYXBoX3dpdGhfcHJvZ3Jlc3NfYmFyIGdyaWQgZiAoZXJyb3IsIGxvZ19pbmZvLCBhKVxuXG5sZXQgZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRoX2FfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlclxuICAgID9zaGFsbF93ZV9jb21wdXRlOl8gP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl9cbiAgICA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbG9nX3N0ZXAgZGVidWdfbW9kZSBjb3VudGVyIGYgdCBhID1cbiAgbGV0ICgpID1cbiAgICBpZiBsb2dfc3RlcCBwYXJhbWV0ZXIgdGhlblxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICBcIiVzXFx0LSBibGFja2JvYXJkIGdlbmVyYXRpb24gQC5cIlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgY29udmVydF90cmFjZV9pbnRvX211c2ljYWxfbm90YXRpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdFxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICBleHRyYWN0X29ic2VydmFibGVfaGl0c19mcm9tX211c2ljYWxfbm90YXRpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgIGVycm9yIGJsYWNrYm9hcmRcbiAgaW5cbiAgbGV0IG5fc3RvcmllcyA9IExpc3QubGVuZ3RoIGxpc3QgaW5cbiAgbGV0ICgpID1cbiAgICBpZiBsb2dfc3RlcCBwYXJhbWV0ZXIgdGhlblxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICBcIiVzXFx0LSBjb21wdXRpbmcgY2F1c2FsIHBhc3Qgb2YgZWFjaCBvYnNlcnZlZCBldmVudHMgKCVpKUAuXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgIG5fc3Rvcmllc1xuICBpblxuICAoKiBnZW5lcmF0aW9uIG9mIHVuY29tcHJlc3NlZCBzdG9yaWVzICopXG4gIGxldCAoKSA9XG4gICAgaWYgZGVidWdfbW9kZSBwYXJhbWV0ZXIgdGhlblxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICBcIiVzXFx0XFx0KiBjYXVzYWwgY29tcHJlc3Npb24gXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gIGluXG4gIGxldCBsb2dfaW5mbyA9IFAuc2V0X3N0YXJ0X2NvbXByZXNzaW9uIGxvZ19pbmZvIGluXG4gIGxldCBncmlkID0gY29udmVydF90cmFjZV9pbnRvX2dyaWQgdCBoYW5kbGVyIGluXG4gIGxldCBvdXRwdXQgPVxuICAgIENhdXNhbC5mb2xkX292ZXJfY2F1c2FsX3Bhc3Rfb2Zfb2JzXG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgR3JhcGhfY2xvc3VyZS5jb25maWdfYmlnX2dyYXBoX3dpdGhfcHJvZ3Jlc3NfYmFyXG4gICAgICBncmlkXG4gICAgICAoZnVuIHBhcmFtZXRlcicgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBvYnNlcnZhYmxlX2hpdCBjYXVzYWxfcGFzdFxuICAgICAgICAgICAoY291bnRlciwgbGlzdCwgYSkgLT5cbiAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBTdG9wLnN1Y2Nlc3MgKGNvdW50ZXIsIGxpc3QsIGEpXG4gICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudCBwYXJhbWV0ZXInIGVycm9yXG4gICAgICAgICAgICAgIChTdG9yeVByb2ZpbGluZy5TdG9yeSBjb3VudGVyKSBOb25lIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb2JzZXJ2YWJsZV9pZCA9IGhlYWQgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPSBQLnJlc2V0X2xvZyBsb2dfaW5mbyBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHBhcmFtZXRlciB0aGVuXG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiJXNcXHRcXHQqIGNhdXNhbCBjb21wcmVzc2lvbiBcIlxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiB3ZSB0cmFuc2xhdGUgdGhlIGxpc3Qgb2YgZXZlbnQgaWRzIGludG8gYSB0cmFjZSB0aGFua3MgdG8gdGhlIGJsYWNrYm9hZCAqKVxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgICAgICAgIHRyYW5zbGF0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIChMaXN0LnJldl9tYXAgUy5QSC5CLlBCLnN0ZXBfaWRfb2ZfaW50XG4gICAgICAgICAgICAgICAgIChvYnNlcnZhYmxlX2hpdCA6OiBjYXVzYWxfcGFzdCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiB3ZSBjb2xsZWN0IHJ1biB0aW1lIGluZm8gYWJvdXQgdGhlIG9ic2VydmFibGUgKilcbiAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICBtYXRjaCBnZXRfcnVudGltZV9pbmZvX2Zyb21fb2JzZXJ2YWJsZV9oaXQgb2JzZXJ2YWJsZV9pZCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgIHwgU29tZSBpbmZvIC0+XG4gICAgICAgICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICAgICAgICB7IGluZm8gd2l0aCBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgPSBjb3VudGVyIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgICAgICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby51cGRhdGVfcHJvZmlsaW5nX2luZm8gbG9nX2luZm8gaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBbIGluZm8gXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYSA9XG4gICAgICAgICAgICAoZiA6ICgnYSwgJ2IsICdjLCAnZCkgdGVybmFyeSlcbiAgICAgICAgICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2UgaW5mbyBhXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnQgcGFyYW1ldGVyJyBlcnJvclxuICAgICAgICAgICAgICAoU3RvcnlQcm9maWxpbmcuU3RvcnkgY291bnRlcikgTm9uZSBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgU3RvcC5zdWNjZXNzX29yX3N0b3BcbiAgICAgICAgICAgICAgKGZ1biBhIC0+IFN0b3Auc3VjY2VzcyAoY291bnRlciArIDEsIHRhaWwsIGEpKVxuICAgICAgICAgICAgICAoZnVuIGIgLT4gU3RvcC5zdG9wIChiLCBjb3VudGVyKSlcbiAgICAgICAgICAgICAgYSApKVxuICAgICAgKGNvdW50ZXIsIExpc3QucmV2IGxpc3QsIGEpXG4gIGluXG4gIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCAoXywgXywgYSkpIC0+IGVycm9yLCBsb2dfaW5mbywgU3RvcC5zdWNjZXNzIGEpXG4gICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCAoYSwgY291bnRlcikpIC0+XG4gICAgICBlcnJvciwgbG9nX2luZm8sIFN0b3Auc3RvcCAoYSwgY291bnRlcikpXG4gICAgb3V0cHV0XG5cbmxldCBjb3B5X2xvZ19pbmZvID0gUC5jb3B5XG5cbnR5cGUgY2Fub25pY2FsX2Zvcm0gPSBEYWcuY2Fub25pY2FsX2Zvcm1cblxubGV0IGNvbXBhcmVfY2Fub25pY2FsX2Zvcm0gPSBEYWcuY29tcGFyZV9jYW5vbmljXG5cbmxldCBjb21wdXRlX2Nhbm9uaWNhbF9mb3JtIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvXG4gICAgZXJyb3IgdHJhY2UgPVxuICBsZXQgZ3JpZCA9IGNvbnZlcnRfdHJhY2VfaW50b19ncmlkIHRyYWNlIGhhbmRsZXIgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgZ3JhcGggPVxuICAgIERhZy5ncmFwaF9vZl9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWRcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2Fub25pYyA9XG4gICAgRGFnLmNhbm9uaWNhbGl6ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmFwaFxuICBpblxuICAoZXJyb3IgOiBlcnJvcl9sb2cpLCAobG9nX2luZm8gOiBwcm9maWxpbmdfaW5mbyksIChjYW5vbmljIDogY2Fub25pY2FsX2Zvcm0pXG5cbm1vZHVsZSBFdmVudCA6IEJsYWNrX2xpc3QuRXZlbnQgd2l0aCB0eXBlIGV2ZW50ID0gc3RlcCA9IHN0cnVjdFxuICB0eXBlIGV2ZW50ID0gc3RlcFxuICB0eXBlIGVpZCA9IGludFxuICB0eXBlICdhIHQgPSAnYSBhcnJheVxuXG4gIGxldCBrZXlfb2ZfZXZlbnQgZXZlbnQgPVxuICAgIGlmXG4gICAgICAoVHJhY2Uuc3RlcF9pc19ydWxlIGV2ZW50IHx8IFRyYWNlLnN0ZXBfaXNfcGVydCBldmVudClcbiAgICAgICYmIG5vdCAoVHJhY2UuaGFzX2NyZWF0aW9uX29mX3N0ZXAgZXZlbnQpXG4gICAgdGhlblxuICAgICAgZ2V0X2lkX29mX2V2ZW50IGV2ZW50XG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG4gIGxldCBpbml0IGVpZCBkZWZhdWx0ID0gQXJyYXkubWFrZSBlaWQgZGVmYXVsdFxuXG4gIGxldCBzZXQgdCBlaWQgdmFsdWUgPVxuICAgIGxldCAoKSA9IEFycmF5LnNldCB0IGVpZCB2YWx1ZSBpblxuICAgIHRcblxuICBsZXQgZ2V0IHQgZWlkID0gQXJyYXkuZ2V0IHQgZWlkXG5lbmRcblxubW9kdWxlIEJsYWNrTGlzdCA6IEJsYWNrX2xpc3QuQmxhY2tsaXN0IHdpdGggdHlwZSBFdmVudC5ldmVudCA9IHN0ZXAgPVxuQmxhY2tfbGlzdC5NYWtlICgoRXZlbnQgOiBCbGFja19saXN0LkV2ZW50IHdpdGggdHlwZSBldmVudCA9IHN0ZXApKVxuXG50eXBlIGJsYWNrX2xpc3QgPSBCbGFja0xpc3QudFxuXG5sZXQgY3JlYXRlX2JsYWNrX2xpc3QgbiA9IEJsYWNrTGlzdC5pbml0IG5cblxubGV0IGJsYWNrX2xpc3QgX3BhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBfaGFuZGxlciBsb2dfaW5mb1xuICAgIGVycm9yIHRyYWNlIGJsYWNrbGlzdCA9XG4gIGxldCBibGFja2xpc3QgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGJsYWNrbGlzdCAoZXZlbnQsIF8pIC0+IEJsYWNrTGlzdC5ibGFja19saXN0IGV2ZW50IGJsYWNrbGlzdClcbiAgICAgIGJsYWNrbGlzdFxuICAgICAgKGdldF9jb21wcmVzc2VkX3RyYWNlIHRyYWNlKVxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdFxuXG5sZXQgcmVtb3ZlX2JsYWNrbGlzdGVkX2V2ZW50IF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrbGlzdCB0cmFjZSA9XG4gIGxldCBsaXN0LCBpbnQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuICh0cmFjZSwgaW50KSBldmVudCAtPlxuICAgICAgICBpZiBCbGFja0xpc3QuaXNfYmxhY2tfbGlzdGVkIGV2ZW50IGJsYWNrbGlzdCB0aGVuXG4gICAgICAgICAgdHJhY2UsIHN1Y2MgaW50XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBldmVudCA6OiB0cmFjZSwgaW50KVxuICAgICAgKFtdLCAwKSB0cmFjZVxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIChMaXN0LnJldiBsaXN0LCBpbnQpXG5cbmxldCByZW1vdmVfYmxhY2tsaXN0ZWRfZXZlbnQgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciBibGFja2xpc3QgdHJhY2UgPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlblxuICAgICAgIChmdW4gX3BhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIC0+XG4gICAgICAgICByZW1vdmVfYmxhY2tsaXN0ZWRfZXZlbnQgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2xpc3QpXG4gICAgICAgTm9uZSBcIlwiIFN0b3J5UHJvZmlsaW5nLlJlbW92aW5nX2JsYWNrbGlzdGVkX2V2ZW50cylcbiAgICBEb19ub3RfY2FyZSBOZXV0cmFsIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG5cbmxldCBsYXN0X2VpZF9pbl9wcmV0cmFjZSB0cmFjZSA9XG4gIGxldCBsID0gTGlzdC5yZXYgKGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSkgaW5cbiAgbGV0IHJlYyBhdXggPSBmdW5jdGlvblxuICAgIHwgW10gLT4gMFxuICAgIHwgaCA6OiB0IC0+XG4gICAgICAobWF0Y2ggZ2V0X2lkX29mX2V2ZW50IGggd2l0aFxuICAgICAgfCBOb25lIC0+IGF1eCB0XG4gICAgICB8IFNvbWUgZWlkIC0+IGVpZClcbiAgaW5cbiAgYXV4IGxcblxubGV0IHBvcF9qc29uID0gUy5QSC5CLlBCLkNJLlBvLksuSC5wb3BfanNvblxuXG5sZXQgcHJvZmlsaW5nX3N0YXRlX3RvX2pzb24gcGFyYW1ldGVycyA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggXCJwcm9maWxpbmcgaW5mb3JtYXRpb25cIixcbiAgICAgICAgTG9nZ2Vycy50b19qc29uIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9wcm9maWxpbmdfbG9nZ2VyIHBhcmFtZXRlcnMpICk7XG4gICAgXVxuXG5sZXQgZXJyb3JfbGlzdF90b19qc29uIHBhcmFtZXRlcnMgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIFwiZXJyb3JzXCIsXG4gICAgICAgIExvZ2dlcnMudG9fanNvbiAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVycykgKTtcbiAgICBdXG5cbmxldCBjb21wdXRhdGlvbl9zdGVwc190b19qc29uIHBhcmFtZXRlcnMgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIFwiY29tcHV0YXRpb24gc3RlcHNcIixcbiAgICAgICAgTG9nZ2Vycy50b19qc29uIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVycykgKTtcbiAgICBdXG4iLCIoKipcbiAqIHV0aWxpdGllcy5tbFxuICpcbiAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxNS0wMy0yOCBmZXJldD5cbiAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0xOSAxMToyODowNSBmZXJldD5cbiAqXG4gKiBBUEkgZm9yIGNhdXNhbCBjb21wcmVzc2lvbiAoZm9yIGV4cGVydClcbiAqIEplcm9tZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICpcbiAqIENvcHlyaWdodCAyMDE1IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGVcbiAqIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGRlYnVnX21vZGUgPSBmYWxzZVxubGV0IF8gPSBkZWJ1Z19tb2RlXG5cbnR5cGUgcGFyYW1ldGVycyA9IHtcbiAgaXRlcmF0aW9uX2JlZm9yZV9jYWxpYnJhdGluZzogaW50O1xuICBnbG9iYWxfdGltZV9mYWN0b3JfbWluOiBmbG9hdCBvcHRpb247XG4gIGdsb2JhbF90aW1lX2ZhY3Rvcl9tYXg6IGZsb2F0IG9wdGlvbjtcbiAgdHJhY2VfYmVmb3JlX2ZhY3Rvcl9taW46IGludCBvcHRpb247XG4gIHRyYWNlX2FmdGVyX2ZhY3Rvcl9taW46IGludCBvcHRpb247XG4gIHRyYWNlX2JlZm9yZV9mYWN0b3JfbWF4OiBpbnQgb3B0aW9uO1xuICB0cmFjZV9hZnRlcl9mYWN0b3JfbWF4OiBpbnQgb3B0aW9uO1xuICBjb21wdXRhdGlvbl90aW1lX2ZhY3Rvcl9taW46IGZsb2F0IG9wdGlvbjtcbiAgY29tcHV0YXRpb25fdGltZV9mYWN0b3JfbWF4OiBmbG9hdCBvcHRpb247XG59XG5cbmxldCBwYXJhbWV0ZXJzID1cbiAge1xuICAgIGl0ZXJhdGlvbl9iZWZvcmVfY2FsaWJyYXRpbmcgPSAxMDtcbiAgICBnbG9iYWxfdGltZV9mYWN0b3JfbWluID0gU29tZSA1LjtcbiAgICBnbG9iYWxfdGltZV9mYWN0b3JfbWF4ID0gU29tZSAyMC47XG4gICAgdHJhY2VfYmVmb3JlX2ZhY3Rvcl9taW4gPSBTb21lIDEwO1xuICAgIHRyYWNlX2FmdGVyX2ZhY3Rvcl9taW4gPSBTb21lIDEwO1xuICAgIHRyYWNlX2JlZm9yZV9mYWN0b3JfbWF4ID0gU29tZSA1MDA7XG4gICAgdHJhY2VfYWZ0ZXJfZmFjdG9yX21heCA9IFNvbWUgNTAwO1xuICAgIGNvbXB1dGF0aW9uX3RpbWVfZmFjdG9yX21pbiA9IFNvbWUgMTAuO1xuICAgIGNvbXB1dGF0aW9uX3RpbWVfZmFjdG9yX21heCA9IFNvbWUgNTAwLjtcbiAgfVxuXG50eXBlIHN0YXR1c19nbG9iYWwgPSB7XG4gIGNvdW50ZXJfbWluOiBpbnQ7XG4gIGdsb2JhbF90aW1lX21pbjogZmxvYXQgb3B0aW9uO1xuICBnbG9iYWxfdGltZV9tYXg6IGZsb2F0IG9wdGlvbjtcbiAgY3B1X3RpbWVfbWluOiBmbG9hdCBvcHRpb247XG4gIGNwdV90aW1lX21heDogZmxvYXQgb3B0aW9uO1xuICBjcHVfdGltZV9yZWY6IGZsb2F0IG9wdGlvbjtcbiAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9taW46IGludCBvcHRpb247XG4gIHRyYWNlX2xlbmd0aF9hZnRlcl9taW46IGludCBvcHRpb247XG4gIHRyYWNlX2xlbmd0aF9iZWZvcmVfbWF4OiBpbnQgb3B0aW9uO1xuICB0cmFjZV9sZW5ndGhfYWZ0ZXJfbWF4OiBpbnQgb3B0aW9uO1xuICB0cmFjZV9sZW5ndGhfYmVmb3JlX3JlZjogaW50IG9wdGlvbjtcbiAgdHJhY2VfbGVuZ3RoX2FmdGVyX3JlZjogaW50IG9wdGlvbjtcbn1cblxudHlwZSBzdGF0dXMgPSB7XG4gIGNvdW50ZXI6IGludDtcbiAgZ2xvYmFsX3RpbWU6IGZsb2F0O1xuICB0cmFjZV9sZW5ndGhfYmVmb3JlOiBpbnQ7XG4gIHRyYWNlX2xlbmd0aF9hZnRlcjogaW50O1xuICBjcHVfdGltZTogZmxvYXQ7XG59XG5cbmxldCBnZXRfc3RhdHVzX2JlZm9yZSBjb3VudGVyIHRyYWNlID1cbiAge1xuICAgIGNvdW50ZXI7XG4gICAgZ2xvYmFsX3RpbWUgPSBTeXMudGltZSAoKTtcbiAgICB0cmFjZV9sZW5ndGhfYmVmb3JlID0gVXRpbGl0aWVzLnNpemVfb2ZfcHJldHJhY2UgdHJhY2U7XG4gICAgdHJhY2VfbGVuZ3RoX2FmdGVyID0gMDtcbiAgICBjcHVfdGltZSA9IDAuO1xuICB9XG5cbmxldCBnZXRfc3RhdHVzX2FmdGVyIHN0YXR1c19iZWZvcmUgdHJhY2UgPVxuICB7XG4gICAgc3RhdHVzX2JlZm9yZSB3aXRoXG4gICAgY3B1X3RpbWUgPSBTeXMudGltZSAoKSAtLiBzdGF0dXNfYmVmb3JlLmdsb2JhbF90aW1lO1xuICAgIHRyYWNlX2xlbmd0aF9hZnRlciA9IFV0aWxpdGllcy5zaXplX29mX3ByZXRyYWNlIHRyYWNlO1xuICB9XG5cbmxldCBjbXBfb3B0IGNtcCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiAwXG4gIHwgU29tZSBhLCBTb21lIGIgLT4gY21wIGEgYlxuXG5sZXQgY21wX2Zsb2F0X29wdCA9IGNtcF9vcHQgKGNvbXBhcmUgOiBmbG9hdCAtPiBmbG9hdCAtPiBpbnQpXG5sZXQgY21wX2ludF9vcHQgPSBjbXBfb3B0IChjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQpXG5cbmxldCBnZW5fYmluX29wdCBvcCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhLCBTb21lIGIgLT4gU29tZSAob3AgYSBiKVxuXG5sZXQgYWRkX2Zsb2F0X29wdCA9IGdlbl9iaW5fb3B0ICggKy4gKVxubGV0IG11bHRfZmxvYXRfb3B0ID0gZ2VuX2Jpbl9vcHQgKCAqLiApXG5sZXQgbXVsdF9pbnRfb3B0ID0gZ2VuX2Jpbl9vcHQgKCAqIClcblxubGV0IG1heF9vcHQgY21wIGEgYiA9XG4gIG1hdGNoIGEgd2l0aFxuICB8IE5vbmUgLT4gU29tZSBiXG4gIHwgU29tZSBhIC0+XG4gICAgU29tZVxuICAgICAgKGlmIGNtcCBhIGIgPiAwIHRoZW5cbiAgICAgICAgIGFcbiAgICAgICBlbHNlXG4gICAgICAgICBiKVxuXG5sZXQgc3RvcF9iZWZvcmUgZ2xvYmFsIHN0YXR1cyA9XG4gIHN0YXR1cy5jb3VudGVyID4gZ2xvYmFsLmNvdW50ZXJfbWluXG4gICYmIChjbXBfZmxvYXRfb3B0IChTb21lIHN0YXR1cy5nbG9iYWxfdGltZSkgZ2xvYmFsLmdsb2JhbF90aW1lX21heCA+IDBcbiAgICAgfHwgY21wX2ludF9vcHQgKFNvbWUgc3RhdHVzLnRyYWNlX2xlbmd0aF9iZWZvcmUpXG4gICAgICAgICAgZ2xvYmFsLnRyYWNlX2xlbmd0aF9iZWZvcmVfbWF4XG4gICAgICAgID4gMFxuICAgICB8fCBjbXBfZmxvYXRfb3B0IChTb21lIHN0YXR1cy5nbG9iYWxfdGltZSkgZ2xvYmFsLmdsb2JhbF90aW1lX21pbiA+PSAwXG4gICAgICAgICYmIGNtcF9pbnRfb3B0IChTb21lIHN0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlKVxuICAgICAgICAgICAgIGdsb2JhbC50cmFjZV9sZW5ndGhfYmVmb3JlX21pblxuICAgICAgICAgICA+PSAwKVxuXG5sZXQgc3RvcF9hZnRlciBnbG9iYWwgc3RhdHVzID1cbiAgc3RhdHVzLmNvdW50ZXIgPiBnbG9iYWwuY291bnRlcl9taW5cbiAgJiYgKGNtcF9mbG9hdF9vcHQgKFNvbWUgc3RhdHVzLmdsb2JhbF90aW1lKSBnbG9iYWwuZ2xvYmFsX3RpbWVfbWF4ID4gMFxuICAgICB8fCBjbXBfZmxvYXRfb3B0IChTb21lIHN0YXR1cy5jcHVfdGltZSkgZ2xvYmFsLmNwdV90aW1lX21heCA+IDBcbiAgICAgfHwgY21wX2ludF9vcHQgKFNvbWUgc3RhdHVzLnRyYWNlX2xlbmd0aF9iZWZvcmUpXG4gICAgICAgICAgZ2xvYmFsLnRyYWNlX2xlbmd0aF9iZWZvcmVfbWF4XG4gICAgICAgID4gMFxuICAgICB8fCBjbXBfaW50X29wdCAoU29tZSBzdGF0dXMudHJhY2VfbGVuZ3RoX2FmdGVyKVxuICAgICAgICAgIGdsb2JhbC50cmFjZV9sZW5ndGhfYWZ0ZXJfbWF4XG4gICAgICAgID4gMFxuICAgICB8fCBjbXBfZmxvYXRfb3B0IChTb21lIHN0YXR1cy5nbG9iYWxfdGltZSkgZ2xvYmFsLmdsb2JhbF90aW1lX21pbiA+PSAwXG4gICAgICAgICYmIGNtcF9mbG9hdF9vcHQgKFNvbWUgc3RhdHVzLmNwdV90aW1lKSBnbG9iYWwuY3B1X3RpbWVfbWluID49IDBcbiAgICAgICAgJiYgY21wX2ludF9vcHQgKFNvbWUgc3RhdHVzLnRyYWNlX2xlbmd0aF9iZWZvcmUpXG4gICAgICAgICAgICAgZ2xvYmFsLnRyYWNlX2xlbmd0aF9iZWZvcmVfbWluXG4gICAgICAgICAgID49IDBcbiAgICAgICAgJiYgY21wX2ludF9vcHQgKFNvbWUgc3RhdHVzLnRyYWNlX2xlbmd0aF9hZnRlcilcbiAgICAgICAgICAgICBnbG9iYWwudHJhY2VfbGVuZ3RoX2FmdGVyX21pblxuICAgICAgICAgICA+PSAwKVxuXG5sZXQgc2V0X3N0YXR1c19pbml0IGNmbG93X3BhcmFtZXRlcnMgcGFyYW1ldGVycyBmbG9hdDEgZmxvYXQyIGNvdW50ZXIgPVxuICB7XG4gICAgY291bnRlcl9taW4gPSBjb3VudGVyICsgcGFyYW1ldGVycy5pdGVyYXRpb25fYmVmb3JlX2NhbGlicmF0aW5nO1xuICAgIGdsb2JhbF90aW1lX21pbiA9XG4gICAgICAoaWYgVXRpbGl0aWVzLlMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQgY2Zsb3dfcGFyYW1ldGVyc1xuICAgICAgIHRoZW5cbiAgICAgICAgIE5vbmVcbiAgICAgICBlbHNlXG4gICAgICAgICBhZGRfZmxvYXRfb3B0IChTb21lIGZsb2F0MilcbiAgICAgICAgICAgKG11bHRfZmxvYXRfb3B0XG4gICAgICAgICAgICAgIChTb21lIChmbG9hdDIgLS4gZmxvYXQxKSlcbiAgICAgICAgICAgICAgcGFyYW1ldGVycy5nbG9iYWxfdGltZV9mYWN0b3JfbWluKSk7XG4gICAgZ2xvYmFsX3RpbWVfbWF4ID1cbiAgICAgIChpZiBVdGlsaXRpZXMuUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfaXNfdGltZV9pbmRlcGVuZGVudCBjZmxvd19wYXJhbWV0ZXJzXG4gICAgICAgdGhlblxuICAgICAgICAgTm9uZVxuICAgICAgIGVsc2VcbiAgICAgICAgIGFkZF9mbG9hdF9vcHQgKFNvbWUgZmxvYXQyKVxuICAgICAgICAgICAobXVsdF9mbG9hdF9vcHRcbiAgICAgICAgICAgICAgKFNvbWUgKGZsb2F0MiAtLiBmbG9hdDEpKVxuICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmdsb2JhbF90aW1lX2ZhY3Rvcl9tYXgpKTtcbiAgICBjcHVfdGltZV9taW4gPSBOb25lO1xuICAgIGNwdV90aW1lX21heCA9IE5vbmU7XG4gICAgY3B1X3RpbWVfcmVmID0gTm9uZTtcbiAgICB0cmFjZV9sZW5ndGhfYmVmb3JlX21pbiA9IE5vbmU7XG4gICAgdHJhY2VfbGVuZ3RoX2FmdGVyX21pbiA9IE5vbmU7XG4gICAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9tYXggPSBOb25lO1xuICAgIHRyYWNlX2xlbmd0aF9hZnRlcl9tYXggPSBOb25lO1xuICAgIHRyYWNlX2xlbmd0aF9iZWZvcmVfcmVmID0gTm9uZTtcbiAgICB0cmFjZV9sZW5ndGhfYWZ0ZXJfcmVmID0gTm9uZTtcbiAgfVxuXG5sZXQgdXBkYXRlX3N0YXR1c19iZWZvcmUgZ2xvYmFsIHN0YXR1cyA9XG4gIGlmIHN0YXR1cy5jb3VudGVyIDwgZ2xvYmFsLmNvdW50ZXJfbWluIHRoZW5cbiAgICB7XG4gICAgICBnbG9iYWwgd2l0aFxuICAgICAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9yZWYgPVxuICAgICAgICBtYXhfb3B0IGNvbXBhcmUgZ2xvYmFsLnRyYWNlX2xlbmd0aF9iZWZvcmVfcmVmXG4gICAgICAgICAgc3RhdHVzLnRyYWNlX2xlbmd0aF9iZWZvcmU7XG4gICAgfVxuICBlbHNlXG4gICAgZ2xvYmFsXG5cbmxldCB1cGRhdGVfc3RhdHVzX2FmdGVyIGdsb2JhbCBzdGF0dXMgPVxuICBpZiBzdGF0dXMuY291bnRlciA8IGdsb2JhbC5jb3VudGVyX21pbiB0aGVuXG4gICAge1xuICAgICAgZ2xvYmFsIHdpdGhcbiAgICAgIHRyYWNlX2xlbmd0aF9hZnRlcl9yZWYgPVxuICAgICAgICBtYXhfb3B0IGNvbXBhcmUgZ2xvYmFsLnRyYWNlX2xlbmd0aF9hZnRlcl9yZWYgc3RhdHVzLnRyYWNlX2xlbmd0aF9hZnRlcjtcbiAgICAgIGNwdV90aW1lX3JlZiA9IG1heF9vcHQgY29tcGFyZSBnbG9iYWwuY3B1X3RpbWVfcmVmIHN0YXR1cy5jcHVfdGltZTtcbiAgICB9XG4gIGVsc2VcbiAgICBnbG9iYWxcblxubGV0IGNvbXB1dGVfc3RhdHVzX3JhbmdlcyBjZmxvd19wYXJhbWV0ZXJzIHBhcmFtZXRlciBnbG9iYWxfc3RhdHVzID1cbiAge1xuICAgIGdsb2JhbF9zdGF0dXMgd2l0aFxuICAgIGNwdV90aW1lX21pbiA9XG4gICAgICAoaWYgVXRpbGl0aWVzLlMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQgY2Zsb3dfcGFyYW1ldGVyc1xuICAgICAgIHRoZW5cbiAgICAgICAgIE5vbmVcbiAgICAgICBlbHNlXG4gICAgICAgICBtdWx0X2Zsb2F0X29wdCBnbG9iYWxfc3RhdHVzLmNwdV90aW1lX3JlZlxuICAgICAgICAgICBwYXJhbWV0ZXIuY29tcHV0YXRpb25fdGltZV9mYWN0b3JfbWluKTtcbiAgICBjcHVfdGltZV9tYXggPVxuICAgICAgKGlmIFV0aWxpdGllcy5TLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9pc190aW1lX2luZGVwZW5kZW50IGNmbG93X3BhcmFtZXRlcnNcbiAgICAgICB0aGVuXG4gICAgICAgICBOb25lXG4gICAgICAgZWxzZVxuICAgICAgICAgbXVsdF9mbG9hdF9vcHQgZ2xvYmFsX3N0YXR1cy5jcHVfdGltZV9yZWZcbiAgICAgICAgICAgcGFyYW1ldGVyLmNvbXB1dGF0aW9uX3RpbWVfZmFjdG9yX21heCk7XG4gICAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9taW4gPVxuICAgICAgbXVsdF9pbnRfb3B0IGdsb2JhbF9zdGF0dXMudHJhY2VfbGVuZ3RoX2JlZm9yZV9yZWZcbiAgICAgICAgcGFyYW1ldGVyLnRyYWNlX2JlZm9yZV9mYWN0b3JfbWluO1xuICAgIHRyYWNlX2xlbmd0aF9iZWZvcmVfbWF4ID1cbiAgICAgIG11bHRfaW50X29wdCBnbG9iYWxfc3RhdHVzLnRyYWNlX2xlbmd0aF9iZWZvcmVfcmVmXG4gICAgICAgIHBhcmFtZXRlci50cmFjZV9iZWZvcmVfZmFjdG9yX21heDtcbiAgICB0cmFjZV9sZW5ndGhfYWZ0ZXJfbWluID1cbiAgICAgIG11bHRfaW50X29wdCBnbG9iYWxfc3RhdHVzLnRyYWNlX2xlbmd0aF9hZnRlcl9yZWZcbiAgICAgICAgcGFyYW1ldGVyLnRyYWNlX2FmdGVyX2ZhY3Rvcl9taW47XG4gICAgdHJhY2VfbGVuZ3RoX2FmdGVyX21heCA9XG4gICAgICBtdWx0X2ludF9vcHQgZ2xvYmFsX3N0YXR1cy50cmFjZV9sZW5ndGhfYWZ0ZXJfcmVmXG4gICAgICAgIHBhcmFtZXRlci50cmFjZV9hZnRlcl9mYWN0b3JfbWF4O1xuICB9XG5cbmxldCBmb2xkX292ZXJfdGhlX2NhdXNhbF9wYXN0X29mX29ic2VydmFibGVzX3dpdGhfYV9wcm9ncmVzc19iYXJfd2hpbGVfcmVzaGFraW5nX3RoZV90cmFjZVxuICAgIGNmbG93X3BhcmFtZXRlcnMgfnNoYWxsX3dlX2NvbXB1dGU6X1xuICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igd2Vfc2hhbGxcbiAgICBuZXZlciBwYXJhbWV0ZXJzIGdsb2JhbF90cmFjZV9zaW1wbGlmaWNhdGlvbiBmXG4gICAgKHN0b3JlX3Jlc3VsdCA6XG4gICAgICAoIFV0aWxpdGllcy50cmFjZSxcbiAgICAgICAgVXRpbGl0aWVzLnRyYWNlX3J1bnRpbWVfaW5mbyBsaXN0LFxuICAgICAgICAnYSxcbiAgICAgICAgJ2EgKVxuICAgICAgVXRpbGl0aWVzLnRlcm5hcnkpIHRyYWNlICh0YWJsZSA6ICdhKSA9XG4gIGxldCBmIGNmbG93X3BhcmFtZXRlcnMgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyXG4gICAgICBsb2dfaW5mbyBlcnJvciB0cmFjZSBpbmZvXG4gICAgICAobGFzdF9pbmZvLCBzdG9wX25leHQsIGdsb2JhbF9zdGF0dXMsIGNvdW50ZXIsIHRhYmxlKSA9XG4gICAgaWYgc3RvcF9uZXh0IHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgU3RvcC5zdG9wIChsYXN0X2luZm8sIHRhYmxlKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHN0YXR1c19iZWZvcmUgPSBnZXRfc3RhdHVzX2JlZm9yZSBjb3VudGVyIHRyYWNlIGluXG4gICAgICBsZXQgc3RvcCA9IHN0b3BfYmVmb3JlIGdsb2JhbF9zdGF0dXMgc3RhdHVzX2JlZm9yZSBpblxuICAgICAgbGV0IGdsb2JhbF9zdGF0dXMgPSB1cGRhdGVfc3RhdHVzX2JlZm9yZSBnbG9iYWxfc3RhdHVzIHN0YXR1c19iZWZvcmUgaW5cbiAgICAgIGlmIHN0b3AgdGhlblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIFN0b3Auc3RvcCAobGFzdF9pbmZvLCB0YWJsZSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICAgICAgZiBjZmxvd19wYXJhbWV0ZXJzIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHN0YXR1c19hZnRlciA9IGdldF9zdGF0dXNfYWZ0ZXIgc3RhdHVzX2JlZm9yZSB0cmFjZSBpblxuICAgICAgICBsZXQgc3RvcCA9IHN0b3BfYWZ0ZXIgZ2xvYmFsX3N0YXR1cyBzdGF0dXNfYWZ0ZXIgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUgPVxuICAgICAgICAgIHN0b3JlX3Jlc3VsdCBjZmxvd19wYXJhbWV0ZXJzIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgZXJyb3IgdHJhY2UgaW5mbyB0YWJsZVxuICAgICAgICBpblxuICAgICAgICBsZXQgbGFzdF9pbmZvID0gU29tZSBpbmZvIGluXG4gICAgICAgIGxldCBnbG9iYWxfc3RhdHVzID0gdXBkYXRlX3N0YXR1c19hZnRlciBnbG9iYWxfc3RhdHVzIHN0YXR1c19hZnRlciBpblxuICAgICAgICBsZXQgZ2xvYmFsX3N0YXR1cyA9XG4gICAgICAgICAgaWYgY291bnRlciA9IGdsb2JhbF9zdGF0dXMuY291bnRlcl9taW4gdGhlblxuICAgICAgICAgICAgY29tcHV0ZV9zdGF0dXNfcmFuZ2VzIGNmbG93X3BhcmFtZXRlcnMgcGFyYW1ldGVycyBnbG9iYWxfc3RhdHVzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZ2xvYmFsX3N0YXR1c1xuICAgICAgICBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIFN0b3Auc3VjY2VzcyAobGFzdF9pbmZvLCBzdG9wLCBnbG9iYWxfc3RhdHVzLCBzdWNjIGNvdW50ZXIsIHRhYmxlKSApXG4gICAgICApXG4gICAgKVxuICBpblxuICBsZXQgcmVjIGF1eCBsb2dfaW5mbyBlcnJvciBjb3VudGVyIHRyYWNlIHRhYmxlID1cbiAgICBpZiBVdGlsaXRpZXMuaGFzX29icyB0cmFjZSB0aGVuIChcbiAgICAgIGxldCBzdGFydF9pdGVyYXRpb24gPSBTeXMudGltZSAoKSBpblxuICAgICAgbGV0IG91dHB1dCA9XG4gICAgICAgIHRyeSBTb21lIChnbG9iYWxfdHJhY2Vfc2ltcGxpZmljYXRpb24gMCAoZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSkpXG4gICAgICAgIHdpdGggU3lzLkJyZWFrIC0+IE5vbmVcbiAgICAgIGluXG4gICAgICBtYXRjaCBvdXRwdXQgd2l0aFxuICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgdGFibGVcbiAgICAgIHwgU29tZSAoZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSkgLT5cbiAgICAgICAgbGV0IGVuZF9zaW1wbGlmaWNhdGlvbiA9IFN5cy50aW1lICgpIGluXG4gICAgICAgIGxldCBzdGF0dXMgPVxuICAgICAgICAgIHNldF9zdGF0dXNfaW5pdCBjZmxvd19wYXJhbWV0ZXJzIHBhcmFtZXRlcnMgc3RhcnRfaXRlcmF0aW9uXG4gICAgICAgICAgICBlbmRfc2ltcGxpZmljYXRpb24gY291bnRlclxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvdXRwdXQgPVxuICAgICAgICAgIFV0aWxpdGllcy5mb2xkX292ZXJfdGhlX2NhdXNhbF9wYXN0X29mX29ic2VydmFibGVzX3dpdGhfYV9wcm9ncmVzc19iYXJcbiAgICAgICAgICAgIGNmbG93X3BhcmFtZXRlcnMgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICBlcnJvciB3ZV9zaGFsbCBuZXZlciBjb3VudGVyIGYgdHJhY2VcbiAgICAgICAgICAgIChOb25lLCBmYWxzZSwgc3RhdHVzLCBjb3VudGVyLCB0YWJsZSlcbiAgICAgICAgaW5cbiAgICAgICAgU3RvcC5zdWNjZXNzX29yX3N0b3BcbiAgICAgICAgICAoZnVuIChfLCBfLCBfLCBfLCBvdXRwdXQpIC0+IGVycm9yLCBsb2dfaW5mbywgb3V0cHV0KVxuICAgICAgICAgIChmdW4gKChsYXN0X2luZm8sIHRhYmxlKSwgY291bnRlcikgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgICAgICAgICAgVXRpbGl0aWVzLnJlbW92ZV9vYnNfYmVmb3JlIGNmbG93X3BhcmFtZXRlcnMgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGVycm9yIGxhc3RfaW5mbyB0cmFjZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGF1eCBsb2dfaW5mbyBlcnJvciBjb3VudGVyIHRyYWNlIHRhYmxlKVxuICAgICAgICAgIG91dHB1dFxuICAgICkgZWxzZVxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZVxuICBpblxuICBhdXggbG9nX2luZm8gZXJyb3IgMSB0cmFjZSB0YWJsZVxuIiwiKCpcbiAgKiBjZmxvd19qc19pbnRlcmZhY2UubWxcbiAgKlxuICAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxNi0wNC0zMCAxODozNDowMCBmZXJldD5cbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDQtMzAgMTg6MjQ6MDAgZmVyZXQ+XG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSmVyb21lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdGUgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogKlxuICAqIFRoaXMgaXMgdGhlIGludGVyZmFjZSBmb3IgdGhlIEphdmEtc2NyaXB0IHNlcnZlclxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNSwyMDE2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlblxuICAqIEluZm9ybWF0aXF1ZSBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXNcbiAgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBjZmxvd19zdGF0ZSA9IHtcbiAgc3RkX2xvZ2dlcjogTG9nZ2Vycy50IG9wdGlvbjtcbiAgZXJyX2xvZ2dlcjogTG9nZ2Vycy50IG9wdGlvbjtcbiAgcHJvZmlsaW5nX2xvZ2dlcjogTG9nZ2Vycy50IG9wdGlvbjtcbiAgc3RhdHVzX2xvZ2dlcjogTG9nZ2Vycy50IG9wdGlvbjtcbiAgY3VycmVudF9waGFzZTogc3RyaW5nIG9wdGlvbjtcbiAgcHJvZ3Jlc3NfYmFyOiAoYm9vbCAqIGludCAqIGludCAqIGludCkgb3B0aW9uO1xuICBjYXVzYWxfZmxvd3M6IFV0aWxpdGllcy5zdG9yeV90YWJsZSBvcHRpb247XG4gIHRyaXZpYWxfY29tcHJlc3Npb246IFV0aWxpdGllcy5zdG9yeV90YWJsZSBvcHRpb247XG4gIHdlYWtfY29tcHJlc3Npb246IFV0aWxpdGllcy5zdG9yeV90YWJsZSBvcHRpb247XG4gIHN0cm9uZ19jb21wcmVzc2lvbjogVXRpbGl0aWVzLnN0b3J5X3RhYmxlIG9wdGlvbjtcbiAgZXJyb3JfbGlzdDogVXRpbGl0aWVzLmVycm9yX2xvZyBvcHRpb247XG59XG5cbmxldCBpbml0ICgpID1cbiAgcmVmXG4gICAge1xuICAgICAgc3RkX2xvZ2dlciA9IE5vbmU7XG4gICAgICBlcnJfbG9nZ2VyID0gTm9uZTtcbiAgICAgIHByb2ZpbGluZ19sb2dnZXIgPSBOb25lO1xuICAgICAgc3RhdHVzX2xvZ2dlciA9IE5vbmU7XG4gICAgICBjdXJyZW50X3BoYXNlID0gTm9uZTtcbiAgICAgIHByb2dyZXNzX2JhciA9IE5vbmU7XG4gICAgICBjYXVzYWxfZmxvd3MgPSBOb25lO1xuICAgICAgdHJpdmlhbF9jb21wcmVzc2lvbiA9IE5vbmU7XG4gICAgICB3ZWFrX2NvbXByZXNzaW9uID0gTm9uZTtcbiAgICAgIHN0cm9uZ19jb21wcmVzc2lvbiA9IE5vbmU7XG4gICAgICBlcnJvcl9saXN0ID0gTm9uZTtcbiAgICB9XG5cbmxldCBnZXRfc3RkX2J1ZmZlciBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLnN0ZF9sb2dnZXJcbmxldCBnZXRfZXJyX2J1ZmZlciBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLmVycl9sb2dnZXJcbmxldCBnZXRfcHJvZmlsaW5nX2J1ZmZlciBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLnByb2ZpbGluZ19sb2dnZXJcbmxldCBnZXRfYnJhbmNoX2FuZF9jdXRfc3RhdHVzIGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUuc3RhdHVzX2xvZ2dlclxubGV0IGdldF9wcm9ncmVzc19iYXIgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5wcm9ncmVzc19iYXJcbmxldCBnZXRfY3VycmVudF9waGFzZV90aXRsZSBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLmN1cnJlbnRfcGhhc2VcbmxldCBnZXRfY2F1c2FsX2Zsb3dfdGFibGUgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5jYXVzYWxfZmxvd3NcbmxldCBnZXRfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLnRyaXZpYWxfY29tcHJlc3Npb25cbmxldCBnZXRfd2Vha19jb21wcmVzc2lvbl90YWJsZSBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLndlYWtfY29tcHJlc3Npb25cbmxldCBnZXRfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlIGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUuc3Ryb25nX2NvbXByZXNzaW9uXG5sZXQgZ2V0X2Vycm9yX2xpc3QgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5lcnJvcl9saXN0XG5cbmxldCBzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGVfYXV4IGNmbG93X3N0YXRlX3B0ciBzdHJpbmcgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBjdXJyZW50X3BoYXNlID0gU29tZSBzdHJpbmcgfVxuXG5sZXQgcmVzZXRfY3VycmVudF9waGFzZV90aXRsZV9hdXggY2Zsb3dfc3RhdGVfcHRyID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggY3VycmVudF9waGFzZSA9IE5vbmUgfVxuXG5sZXQgc2F2ZV9wcm9ncmVzc19iYXJfYXV4IGNmbG93X3N0YXRlX3B0ciBiYXIgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBwcm9ncmVzc19iYXIgPSBTb21lIGJhciB9XG5cbmxldCByZXNldF9wcm9ncmVzc19iYXJfYXV4IGNmbG93X3N0YXRlX3B0ciA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHByb2dyZXNzX2JhciA9IE5vbmUgfVxuXG5sZXQgc2F2ZV9jYXVzYWxfZmxvd190YWJsZV9hdXggY2Zsb3dfc3RhdGVfcHRyIHRhYmxlID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggY2F1c2FsX2Zsb3dzID0gU29tZSB0YWJsZSB9XG5cbmxldCBzYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGVfYXV4IGNmbG93X3N0YXRlX3B0ciB0YWJsZSA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHRyaXZpYWxfY29tcHJlc3Npb24gPSBTb21lIHRhYmxlIH1cblxubGV0IHNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZV9hdXggY2Zsb3dfc3RhdGVfcHRyIHRhYmxlID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggd2Vha19jb21wcmVzc2lvbiA9IFNvbWUgdGFibGUgfVxuXG5sZXQgc2F2ZV9zdHJvbmdfY29tcHJlc3Npb25fdGFibGVfYXV4IGNmbG93X3N0YXRlX3B0ciB0YWJsZSA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHN0cm9uZ19jb21wcmVzc2lvbiA9IFNvbWUgdGFibGUgfVxuXG5sZXQgc2F2ZV9lcnJvcl9sb2dfYXV4IGNmbG93X3N0YXRlX3B0ciBlcnJvciA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIGVycm9yX2xpc3QgPSBTb21lIGVycm9yIH1cblxubGV0IHJlZGlyZWN0X3N0ZF9idWZmZXJfYXV4IGNmbG93X3N0YXRlX3B0ciBsb2dnZXJzID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggc3RkX2xvZ2dlciA9IGxvZ2dlcnMgfVxuXG5sZXQgcmVkaXJlY3RfZXJyX2J1ZmZlcl9hdXggY2Zsb3dfc3RhdGVfcHRyIGxvZ2dlcnMgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBlcnJfbG9nZ2VyID0gbG9nZ2VycyB9XG5cbmxldCByZWRpcmVjdF9wcm9maWxpbmdfYnVmZmVyX2F1eCBjZmxvd19zdGF0ZV9wdHIgbG9nZ2VycyA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHByb2ZpbGluZ19sb2dnZXIgPSBsb2dnZXJzIH1cblxubGV0IHJlZGlyZWN0X2JyYW5jaF9hbmRfY3V0X2J1ZmZlcl9hdXggY2Zsb3dfc3RhdGVfcHRyIGxvZ2dlcnMgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBzdGF0dXNfbG9nZ2VyID0gbG9nZ2VycyB9XG5cbmxldCBsaWZ0IGYgY2Zsb3dfc3RhdGVfcHRyX29wdCBkYXRhID1cbiAgbWF0Y2ggY2Zsb3dfc3RhdGVfcHRyX29wdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgY2Zsb3dfc3RhdGVfcHRyIC0+IGNmbG93X3N0YXRlX3B0ciA6PSBmIGNmbG93X3N0YXRlX3B0ciBkYXRhXG5cbmxldCBsaWZ0X3Jlc2V0IGYgY2Zsb3dfc3RhdGVfcHRyX29wdCA9XG4gIGxpZnQgKGZ1biB4ICgpIC0+IGYgeCkgY2Zsb3dfc3RhdGVfcHRyX29wdCAoKVxuXG5sZXQgc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlID0gbGlmdCBzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGVfYXV4XG5sZXQgcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSA9IGxpZnRfcmVzZXQgcmVzZXRfY3VycmVudF9waGFzZV90aXRsZV9hdXhcbmxldCBzYXZlX3Byb2dyZXNzX2JhciA9IGxpZnQgc2F2ZV9wcm9ncmVzc19iYXJfYXV4XG5sZXQgcmVzZXRfcHJvZ3Jlc3NfYmFyID0gbGlmdF9yZXNldCByZXNldF9wcm9ncmVzc19iYXJfYXV4XG5sZXQgc2F2ZV9jYXVzYWxfZmxvd190YWJsZSA9IGxpZnQgc2F2ZV9jYXVzYWxfZmxvd190YWJsZV9hdXhcbmxldCBzYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUgPSBsaWZ0IHNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZV9hdXhcbmxldCBzYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGUgPSBsaWZ0IHNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZV9hdXhcbmxldCBzYXZlX3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZSA9IGxpZnQgc2F2ZV9zdHJvbmdfY29tcHJlc3Npb25fdGFibGVfYXV4XG5sZXQgc2F2ZV9lcnJvcl9saXN0ID0gbGlmdCBzYXZlX2Vycm9yX2xvZ19hdXhcbmxldCByZWRpcmVjdF9zdGRfYnVmZmVyID0gbGlmdCByZWRpcmVjdF9zdGRfYnVmZmVyX2F1eFxubGV0IHJlZGlyZWN0X2Vycl9idWZmZXIgPSBsaWZ0IHJlZGlyZWN0X2Vycl9idWZmZXJfYXV4XG5sZXQgcmVkaXJlY3RfcHJvZmlsaW5nX2J1ZmZlciA9IGxpZnQgcmVkaXJlY3RfcHJvZmlsaW5nX2J1ZmZlcl9hdXhcbmxldCByZWRpcmVjdF9icmFuY2hfYW5kX2N1dF9idWZmZXIgPSBsaWZ0IHJlZGlyZWN0X2JyYW5jaF9hbmRfY3V0X2J1ZmZlcl9hdXhcbiIsIigqKlxuICAqIGNvbXByZXNzaW9uX21haW4ubWxcbiAgKlxuICAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxMS0xMC0xOSAxNjo1Mjo1NSBmZXJldD5cbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDYtMTAgMTE6MTA6MzQgZmVyZXQ+XG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSmVyb21lIEZlcmV0LCBwcm9qZXQgQW50aXF1ZSwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0ZSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBTb21lIHBhcmFtZXRlcnMgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyLDIwMTMgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZVxuICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgVSA9IFV0aWxpdGllc1xubW9kdWxlIFMgPSBVLlNcblxudHlwZSBzZWNyZXRfbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvXG5cbmxldCBpbml0X3NlY3JldF9sb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5pdF9sb2dfaW5mb1xuXG50eXBlIHNlY3JldF9wYXJhbWV0ZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILnBhcmFtZXRlclxuXG5sZXQgYnVpbGRfcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5idWlsZF9wYXJhbWV0ZXJcbmxldCBnZXRfbG9nZ2VyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyXG5sZXQgbG9nX3N0ZXAgPSB0cnVlXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5sZXQgZHVtcF9wcm9maWxpbmdfaW5mbyA9IHRydWVcbmxldCBfID0gZHVtcF9wcm9maWxpbmdfaW5mb1xubGV0IGJ1Y2tldF9zb3J0ID0gdHJ1ZVxuXG4oKiogZmFsc2UgLT4gb25seSB0aGUgZmlyc3Qgc3RvcnkgcGVyIG9ic2VydmFibGUgaGl0OyB0cnVlIC0+IGFsbCBzdG9yaWVzIHBlciBvYnMgaGl0ICopXG5sZXQgZ2V0X2FsbF9zdG9yaWVzID0gZmFsc2VcblxubGV0IG1heF9udW1iZXJfb2ZfaXR0ZXJhdGlvbnMgPSBOb25lXG5sZXQgd2Vfc2hhbGxfbm90IF8gPSBmYWxzZVxubGV0IHdlX3NoYWxsIF8gPSB0cnVlXG5sZXQgZG9fbm90X2xvZyBwYXJhbWV0ZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9sb2dfc3RlcCBwYXJhbWV0ZXIgZmFsc2VcblxubGV0IGNvbXByZXNzX2FuZF9wcmludCBwYXJhbWV0ZXIgfmRvdEZvcm1hdCA/anNfaW50ZXJmYWNlIGVudiBsb2dfaW5mbyBzdGVwX2xpc3RcbiAgICA9XG4gICgqbGV0IGNhbGxlZF9mcm9tID0gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuU2VydmVyIGluKilcbiAgbGV0IHBhcmFtZXRlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2xvZ19zdGVwIHBhcmFtZXRlciBsb2dfc3RlcCBpblxuICBsZXQgcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfZGVidWdnaW5nX21vZGUgcGFyYW1ldGVyIGRlYnVnX21vZGUgaW5cbiAgbGV0IHBhcmFtZXRlciA9XG4gICAgbWF0Y2ggbWF4X251bWJlcl9vZl9pdHRlcmF0aW9ucyB3aXRoXG4gICAgfCBOb25lIC0+IFMuUEguQi5QQi5DSS5Qby5LLkguZG9fbm90X2JvdW5kX2l0dGVyYXRpb25zIHBhcmFtZXRlclxuICAgIHwgU29tZSBpIC0+IFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2l0dGVyYXRpb25fYm91bmQgcGFyYW1ldGVyIGlcbiAgaW5cbiAgbGV0IHBhcmFtZXRlciA9XG4gICAgaWYgZ2V0X2FsbF9zdG9yaWVzIHRoZW5cbiAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMgcGFyYW1ldGVyXG4gICAgZWxzZVxuICAgICAgcGFyYW1ldGVyXG4gIGluXG4gIGxldCBwYXJhbWV0ZXIgPVxuICAgIGlmIGJ1Y2tldF9zb3J0IHRoZW5cbiAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgudXNlX2J1Y2tldF9zb3J0IHBhcmFtZXRlclxuICAgIGVsc2VcbiAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgudXNlX2Z1c2lvbl9zb3J0IHBhcmFtZXRlclxuICBpblxuICBsZXQgbW9kZSA9IHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmNvbXByZXNzaW9uX21vZGUgaW5cbiAgbGV0IGNhdXNhbF90cmFjZV9vbiA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2NhdXNhbF90cmFjZSBtb2RlIGluXG4gIGxldCB3ZWFrX2NvbXByZXNzaW9uX29uID0gUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfd2Vha19jb21wcmVzc2lvbiBtb2RlIGluXG4gIGxldCBzdHJvbmdfY29tcHJlc3Npb25fb24gPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9zdHJvbmdfY29tcHJlc3Npb24gbW9kZSBpblxuICBsZXQgZXJyb3IgPSBVLmVycm9yX2luaXQgaW5cbiAgbGV0IGhhbmRsZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmluaXRfaGFuZGxlciBlbnYgaW5cbiAgbGV0ICgpID1cbiAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgIChTdG9yeV9qc29uLlBoYXNlIChTdG9yeV9qc29uLlN0YXJ0LCBcIlN0YXJ0aW5nIENvbXByZXNzaW9uXCIpKVxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTEgPVxuICAgIFUuY3JlYXRlX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlMiA9XG4gICAgVS5jcmVhdGVfc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUzID1cbiAgICBVLmNyZWF0ZV9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTQgPVxuICAgIFUuY3JlYXRlX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gIGluXG4gIGxldCAoKSA9IENmbG93X2pzX2ludGVyZmFjZS5zYXZlX2NhdXNhbF9mbG93X3RhYmxlIGpzX2ludGVyZmFjZSB0YWJsZTEgaW5cbiAgbGV0ICgpID1cbiAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlIGpzX2ludGVyZmFjZSB0YWJsZTJcbiAgaW5cbiAgbGV0ICgpID0gQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2UgdGFibGUzIGluXG4gIGxldCAoKSA9XG4gICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlIGpzX2ludGVyZmFjZSB0YWJsZTRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDZmxvd19qc19pbnRlcmZhY2UucmVkaXJlY3Rfc3RkX2J1ZmZlciBqc19pbnRlcmZhY2VcbiAgICAgIChTb21lIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDZmxvd19qc19pbnRlcmZhY2UucmVkaXJlY3RfZXJyX2J1ZmZlciBqc19pbnRlcmZhY2VcbiAgICAgIChTb21lIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENmbG93X2pzX2ludGVyZmFjZS5yZWRpcmVjdF9wcm9maWxpbmdfYnVmZmVyIGpzX2ludGVyZmFjZVxuICAgICAgKFNvbWUgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X3Byb2ZpbGluZ19sb2dnZXIgcGFyYW1ldGVyKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDZmxvd19qc19pbnRlcmZhY2UucmVkaXJlY3RfYnJhbmNoX2FuZF9jdXRfYnVmZmVyIGpzX2ludGVyZmFjZVxuICAgICAgKFNvbWVcbiAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9jb21wcmVzc2lvbl9zdGF0dXNfbG9nZ2VyXG4gICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpKVxuICBpblxuICBsZXQgcGFyYW1ldGVyID1cbiAgICBtYXRjaCBqc19pbnRlcmZhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBwYXJhbWV0ZXJcbiAgICB8IFNvbWUgX2pzX2ludGVyZmFjZV9wdHIgLT5cbiAgICAgIGxldCBwYXJhbWV0ZXIgPVxuICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyIChmdW4gcyAtPlxuICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfY3VycmVudF9waGFzZV90aXRsZSBqc19pbnRlcmZhY2UgcylcbiAgICAgIGluXG4gICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgKGZ1biAoKSAtPlxuICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUganNfaW50ZXJmYWNlKVxuICAgICAgaW5cbiAgICAgIGxldCBwYXJhbWV0ZXIgPVxuICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXJcbiAgICAgICAgICAoQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfcHJvZ3Jlc3NfYmFyIGpzX2ludGVyZmFjZSlcbiAgICAgIGluXG4gICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfcmVzZXRfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciAoZnVuICgpIC0+XG4gICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2UucmVzZXRfcHJvZ3Jlc3NfYmFyIGpzX2ludGVyZmFjZSlcbiAgICAgIGluXG4gICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfc2F2ZV9lcnJvcl9sb2cgcGFyYW1ldGVyIChmdW4gZXJyb3IgLT5cbiAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX2Vycm9yX2xpc3QganNfaW50ZXJmYWNlIGVycm9yKVxuICAgICAgaW5cbiAgICAgIHBhcmFtZXRlclxuICBpblxuICBsZXQgcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfY29tcHJlc3Npb25fbm9uZSBwYXJhbWV0ZXIgaW5cbiAgbGV0IHBhcmFtZXRlcl9jYXVzYWwgPVxuICAgIGlmIGNhdXNhbF90cmFjZV9vbiB0aGVuXG4gICAgICBwYXJhbWV0ZXJcbiAgICBlbHNlXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCBwYXJhbWV0ZXJcbiAgaW5cbiAgbGV0IHBhcmFtZXRlcl93ZWFrID1cbiAgICBpZiB3ZWFrX2NvbXByZXNzaW9uX29uIHRoZW5cbiAgICAgIHBhcmFtZXRlclxuICAgIGVsc2VcbiAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2h1dF9kb3duX3NlcnZlcl9jaGFubmVsIHBhcmFtZXRlclxuICBpblxuICBsZXQgcGFyYW1ldGVyX3N0cm9uZyA9XG4gICAgaWYgc3Ryb25nX2NvbXByZXNzaW9uX29uIHRoZW5cbiAgICAgIHBhcmFtZXRlclxuICAgIGVsc2VcbiAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2h1dF9kb3duX3NlcnZlcl9jaGFubmVsIHBhcmFtZXRlclxuICBpblxuXG4gIGxldCBlbXB0eV9jb21wcmVzc2lvbiA9IGVycm9yLCBsb2dfaW5mbywgdGFibGUxLCB0YWJsZTIsIHRhYmxlMywgdGFibGU0IGluXG4gIGxldCBzdGVwX2xpc3QgPSBVLnRyYWNlX29mX3ByZXRyYWNlIHN0ZXBfbGlzdCBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWwsIF90cml2aWFsLCB3ZWFrLCBzdHJvbmcgPVxuICAgIGlmXG4gICAgICAobm90IGNhdXNhbF90cmFjZV9vbikgJiYgKG5vdCB3ZWFrX2NvbXByZXNzaW9uX29uKVxuICAgICAgJiYgbm90IHN0cm9uZ19jb21wcmVzc2lvbl9vblxuICAgIHRoZW5cbiAgICAgIGVtcHR5X2NvbXByZXNzaW9uXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdGVwX2xpc3QgPVxuICAgICAgICBVLnJlbW92ZV9ldmVudHNfYWZ0ZXJfbGFzdF9vYnMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICBzdGVwX2xpc3RcbiAgICAgIGluXG4gICAgICBpZiBub3QgKFUuaGFzX29icyBzdGVwX2xpc3QpIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBcIisgTm8gY2F1c2FsIGZsb3cgZm91bmRALlwiXG4gICAgICAgIGluXG4gICAgICAgIGVtcHR5X2NvbXByZXNzaW9uXG4gICAgICApIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAoaWYgd2Vha19jb21wcmVzc2lvbl9vbiB8fCBzdHJvbmdfY29tcHJlc3Npb25fb24gdGhlblxuICAgICAgICAgICAgICAgXCIrIFByb2R1Y2luZyBjYXVzYWwgY29tcHJlc3Npb25zQC5cIlxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIFwiKyBQcm9kdWNpbmcgY2F1c2FsIHRyYWNlc0AuXCIpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsYXN0X2VpZCA9IFUubGFzdF9laWRfaW5fcHJldHJhY2Ugc3RlcF9saXN0IGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0ZXBfbGlzdCA9XG4gICAgICAgICAgVS5zcGxpdF9pbml0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0ZXBfbGlzdFxuICAgICAgICBpblxuICAgICAgICAoKiBjYXVzYWwgY29tcHJlc3Npb24gd2l0aG91dCBhbnkgc2ltcGxpZmljYXRpb24gKGp1c3QgcGFydGlhbCBvcmRlciBjb21wcmVzc2lvbikqKVxuICAgICAgICAoKiB0aGlzIGlzIHZlcnkgY29zdGx5LCBhbmQgbWFpbmx5IGZvciB0ZWFjaGluZyBwdXJwb3NlICopXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF90YWJsZSA9XG4gICAgICAgICAgaWYgY2F1c2FsX3RyYWNlX29uIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9IHBhcmFtZXRlcl9jYXVzYWwgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIGlmIGxvZ19zdGVwIHRoZW5cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJcXHQgLSBibGFja2JvYXJkIGdlbmVyYXRpb25ALlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3RlcF9saXN0ID1cbiAgICAgICAgICAgICAgVS5tYWtlX3VuYW1iaWd1b3VzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0ZXBfbGlzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICBVLmNvbnZlcnRfdHJhY2VfaW50b19tdXNpY2FsX25vdGF0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgZXJyb3Igc3RlcF9saXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSAmJiBsb2dfc3RlcCB0aGVuXG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiXFx0IC0gcHJldHR5IHByaW50aW5nIHRoZSBncmlkQC5cIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbywgZXJyb3IgPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIFUuZXhwb3J0X211c2ljYWxfZ3JpZF90b194bHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgXCJhXCIgMCAwIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIFUucHJpbnRfbXVzaWNhbF9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLCBlcnJvclxuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBsb2dfaW5mbywgZXJyb3JcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgICAgICAgVS5leHRyYWN0X29ic2VydmFibGVfaGl0c19mcm9tX211c2ljYWxfbm90YXRpb24gcGFyYW1ldGVyIGhhbmRsZXJcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG5fc3RvcmllcyA9IExpc3QubGVuZ3RoIGxpc3QgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIGlmIGxvZ19zdGVwIHRoZW5cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJcXHQgLSBjb21wdXRpbmcgY2F1c2FsIHBhc3Qgb2YgZWFjaCBvYnNlcnZlZCBldmVudHMgKCVpKUAuXCJcbiAgICAgICAgICAgICAgICAgIG5fc3Rvcmllc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV9saXN0ID1cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW5cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJcXHRcXHQgKiBjYXVzYWwgY29tcHJlc3Npb24gQC5cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKlx0XHRsZXQgbG9nX2luZm8gPSBVLlMuUEguQi5QQi5DSS5Qby5LLlAuc2V0X3N0YXJ0X2NvbXByZXNzaW9uIGxvZ19pbmZvIGluICopXG4gICAgICAgICAgICAgICgqIFdlIHVzZSB0aGUgZ3JpZCB0byBnZXQgdGhlIGNhdXNhbCBwcmVjZWRlbmNlIChwcmVkKiApIG9mIGVhY2ggb2JzZXJ2YWJsZSAqKVxuICAgICAgICAgICAgICBsZXQgZ3JpZCA9IFUuY29udmVydF90cmFjZV9pbnRvX2dyaWQgc3RlcF9saXN0IGhhbmRsZXIgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZW5yaWNoZWRfZ3JpZCA9XG4gICAgICAgICAgICAgICAgVVxuICAgICAgICAgICAgICAgIC5lbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGFzdF9vZl9lYWNoX25vZGVfd2l0aG91dF9hX3Byb2dyZXNzX2JhclxuICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIGlmIFBhcmFtZXRlci5sb2dfbnVtYmVyX29mX2NhdXNhbF9mbG93cyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZm9ybWF0dGVyX29mX2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgbG9nZ2VyIC0+XG4gICAgICAgICAgICAgICAgICAgIENhdXNhbC5wcmludF9zdGF0IGxvZ2dlciBwYXJhbWV0ZXIgaGFuZGxlciBlbnJpY2hlZF9ncmlkXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIGlmIGxvZ19zdGVwIHRoZW5cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJcXHQgLSBjYXVzYWwgZmxvdyBjb21wcmVzc2lvbiAoJWkpQC5cIiBuX3N0b3JpZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCogd2UgZm9sZCB0aGUgbGlzdCBvZiBvYmVydmFibGUgaGl0LCBhbmQgZm9yIGVhY2ggb25lIGNvbGxlY3QgdGhlIGNhdXNhbCBwYXN0ICopXG4gICAgICAgICAgICAgIFUuZm9sZF9sZWZ0X3dpdGhfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgfmV2ZW50OlN0b3J5UHJvZmlsaW5nLkNvbGxlY3RfdHJhY2VzXG4gICAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgICAgICAgICAgICAgICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86X1xuICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdG9yeV9saXN0IG9ic2VydmFibGVfaWQgLT5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxcdFxcdCAqIGNhdXNhbCBjb21wcmVzc2lvbiBALlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9tb2RlIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgICYmIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIChTdG9yeV9qc29uLlBoYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIFN0b3J5X2pzb24uSW5wcm9ncmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTdGFydCBvbmUgY2F1c2FsIGNvbXByZXNzaW9uXCIgKSlcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZV9iZWZvcmVfY29tcHJlc3Npb24gPVxuICAgICAgICAgICAgICAgICAgICBVLmNhdXNhbF9wcmVmaXhfb2ZfYW5fb2JzZXJ2YWJsZV9oaXQgcGFyYW1ldGVyIGhhbmRsZXJcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciBcImNvbXByZXNzaW9uX21haW4sIGxpbmUgMjAxNFwiIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgICBlbnJpY2hlZF9ncmlkIG9ic2VydmFibGVfaWRcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgVS5nZXRfcnVudGltZV9pbmZvX2Zyb21fb2JzZXJ2YWJsZV9oaXQgb2JzZXJ2YWJsZV9pZFxuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgaW5mbyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mbyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVS5nZXRfY291bnRlciBzdG9yeV9saXN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnVwZGF0ZV9wcm9maWxpbmdfaW5mbyBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBbIGluZm8gXVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV9hcnJheSA9XG4gICAgICAgICAgICAgICAgICAgIFUuc3RvcmVfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICB0cmFjZV9iZWZvcmVfY29tcHJlc3Npb24gaW5mbyBzdG9yeV9saXN0XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfYXJyYXkpXG4gICAgICAgICAgICAgICAgdGFibGUxIChMaXN0LnJldiBsaXN0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV9saXN0ID1cbiAgICAgICAgICAgICAgVS5mbGF0dGVuX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgY2F1c2FsX3N0b3J5X2xpc3RcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV9saXN0XG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlMVxuICAgICAgICBpblxuICAgICAgICAoKiBOb3cgY2F1c2FsIGNvbXByZXNzaW9uLCB3aXRoIGRldGVjdGlvbiBvZiBzaXBob25zICYgZGV0ZWN0aW9uIG9mIHBzZXVkbyBpbnZlcnNlIGV2ZW50cyAqKVxuICAgICAgICBsZXQgcGFyYW1ldGVyX2RlZXBlciA9XG4gICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfa2FzYV9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy51cGRhdGVfcHJlZml4XG4gICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgIFwiXFx0XFx0XFx0XCIpXG4gICAgICAgICAgICBwYXJhbWV0ZXJfY2F1c2FsXG4gICAgICAgIGluXG4gICAgICAgIGxldCBvbmVfaXRlcmF0aW9uX29mX2NvbXByZXNzaW9uIChsb2dfaW5mbywgZXJyb3IsIGV2ZW50X2xpc3QpID1cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0ID1cbiAgICAgICAgICAgIGlmIEdyYXBoX2Nsb3N1cmUuaWdub3JlX2Zsb3dfZnJvbV9vdXRnb2luZ19zaXBob24gdGhlblxuICAgICAgICAgICAgICBVLmZpbGxfc2lwaG9uIHBhcmFtZXRlcl9kZWVwZXIgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIGV2ZW50X2xpc3RcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIFUucHJpbnRfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgZXZlbnRfbGlzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCA9XG4gICAgICAgICAgICBpZiBQYXJhbWV0ZXIuZG9fZ2xvYmFsX2N1dCB0aGVuXG4gICAgICAgICAgICAgIFUuY3V0IHBhcmFtZXRlcl9kZWVwZXIgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIGV2ZW50X2xpc3RcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBQYXJhbWV0ZXIuY3V0X3BzZXVkb19pbnZlcnNlX2V2ZW50IHRoZW5cbiAgICAgICAgICAgIFUucmVtb3ZlX3BzZXVkb19pbnZlcnNlX2V2ZW50cyBwYXJhbWV0ZXJfZGVlcGVyXG4gICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgIGVycm9yIGV2ZW50X2xpc3RcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgKCogVGhpcyBmb25jdGlvbiBpdGVyIHRoZSBjYXVzYWwgY29tcHJlc3Npb24gdW50aWwgYSBmaXhwb2ludCBpcyByZWFjaGVkICopXG4gICAgICAgIGxldCByZWMgYXV4IGsgKGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCkgPVxuICAgICAgICAgIGxldCBzaXplID0gVXRpbGl0aWVzLnNpemVfb2ZfcHJldHJhY2UgZXZlbnRfbGlzdCBpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9ib3VuZF9vbl9pdHRlcmF0aW9uX251bWJlciBwYXJhbWV0ZXJcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTb21lIGsnIHdoZW4gayA+PSBrJyAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCIlc1xcdC0gbWF4IG51bWJlciBvZiBpdGVyYXRpb25zIHJlYWNoZWQsICVpIGV2ZW50cyByZW1haW5pbmcgQC5cIlxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgc2l6ZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdFxuICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCIlc1xcdFxcdC0gc3RhcnQgaXRlcmF0aW9uICVpLCAlaSBldmVudHMgcmVtYWluaW5nIEAuXCJcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgIChrICsgMSkgc2l6ZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBvdXRwdXRfb3B0ID1cbiAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgKG9uZV9pdGVyYXRpb25fb2ZfY29tcHJlc3Npb24gKGxvZ19pbmZvLCBlcnJvciwgZXZlbnRfbGlzdCkpXG4gICAgICAgICAgICAgIHdpdGggU3lzLkJyZWFrIC0+IE5vbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAobWF0Y2ggb3V0cHV0X29wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIlc1xcdC0gaXRlcmF0aW9ucyBzdG9wcGVkIGJ5IHRoZSBlbmQtdXNlciwgJWkgZXZlbnRzIFxcXG4gICAgICAgICAgICAgICAgICAgcmVtYWluaW5nIEAuXCJcbiAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICAgIHNpemVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0XG4gICAgICAgICAgICB8IFNvbWUgKGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCcpIC0+XG4gICAgICAgICAgICAgIGlmIFUuc2l6ZV9vZl9wcmV0cmFjZSBldmVudF9saXN0JyA8IFUuc2l6ZV9vZl9wcmV0cmFjZSBldmVudF9saXN0XG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBhdXggKGsgKyAxKSAoZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0JylcbiAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIlc1xcdC0gYSBmaXhwb2ludCBoYXMgYmVlbiByZWFjaGVkLCAlaSBldmVudHMgcmVtYWluaW5nIEAuXCJcbiAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgIHNpemVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCdcbiAgICAgICAgICAgICAgKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGF1eCBrIChlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QpID1cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIiVzXFx0LSBzaW1wbGlmeSB0aGUgdHJhY2UsICVpIGV2ZW50cyBALlwiXG4gICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAoVXRpbGl0aWVzLnNpemVfb2ZfcHJldHJhY2UgZXZlbnRfbGlzdClcbiAgICAgICAgICBpblxuICAgICAgICAgIGF1eCBrIChlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV90YWJsZSwgd2Vha2x5X3N0b3J5X3RhYmxlID1cbiAgICAgICAgICBpZiB3ZWFrX2NvbXByZXNzaW9uX29uIHx8IHN0cm9uZ19jb21wcmVzc2lvbl9vbiB0aGVuXG4gICAgICAgICAgICBpZiBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9ibGFja2xpc3RfZXZlbnRzIHBhcmFtZXRlciB0aGVuIChcbiAgICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9IHBhcmFtZXRlcl93ZWFrIGluXG4gICAgICAgICAgICAgIGxldCBibGFja2xpc3QgPSBVLmNyZWF0ZV9ibGFja19saXN0IChsYXN0X2VpZCArIDEpIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfYmwsIGNhdXNhbF9zdG9yeV90YWJsZSwgd2Vha19zdG9yeV90YWJsZSkgPVxuICAgICAgICAgICAgICAgIFV0aWxpdGllc19leHBlcnRcbiAgICAgICAgICAgICAgICAuZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRoX2FfcHJvZ3Jlc3NfYmFyX3doaWxlX3Jlc2hha2luZ190aGVfdHJhY2VcbiAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIHdlX3NoYWxsIHdlX3NoYWxsX25vdFxuICAgICAgICAgICAgICAgICAgVXRpbGl0aWVzX2V4cGVydC5wYXJhbWV0ZXJzIGF1eFxuICAgICAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiB3ZSByZW1vdmUgcHNldWRvIGludmVyc2UgZXZlbnRzICopXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucHVzaF9qc29uIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RvcnlfanNvbi5QaGFzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFN0b3J5X2pzb24uSW5wcm9ncmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlN0YXJ0IGNvbGxlY3Rpbmcgb25lIG5ldyB0cmFjZVwiICkpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgICAgICAgICAgICAgICAgICBVLnJlbW92ZV9wc2V1ZG9faW52ZXJzZV9ldmVudHMgKGRvX25vdF9sb2cgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciB0cmFjZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoKiB3ZSBjb21wdXRlIGNhdXNhbCBjb21wcmVzc2lvbiAqKVxuICAgICAgICAgICAgICAgICAgICBVLmN1dCAoZG9fbm90X2xvZyBwYXJhbWV0ZXIpIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciB0cmFjZSlcbiAgICAgICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICAgICAgICAgICAgICAgICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl9cbiAgICAgICAgICAgICAgICAgICAgICAgP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlIGluZm9cbiAgICAgICAgICAgICAgICAgICAgICAgKGJsYWNrbGlzdCwgdGFibGUyLCB0YWJsZTMpIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlMiA9XG4gICAgICAgICAgICAgICAgICAgICAgVS5zdG9yZV90cmFjZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZSBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZTJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgICAgICAgICAgICAgICAgIFUucmVtb3ZlX2JsYWNrbGlzdGVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBibGFja2xpc3QgdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgVS53ZWFrbHlfY29tcHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tsaXN0LCB0YWJsZTMgPVxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgdGFibGUzKSB0cmFjZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUuc3RvcmVfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8gdGFibGUzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVS5ibGFja19saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHRhYmxlMylcbiAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgdGFibGUzKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzX2ludGVyZmFjZSB0YWJsZTJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICBqc19pbnRlcmZhY2UgdGFibGUzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrbGlzdCwgdGFibGUyLCB0YWJsZTMpKVxuICAgICAgICAgICAgICAgICAgc3RlcF9saXN0XG4gICAgICAgICAgICAgICAgICAoYmxhY2tsaXN0LCB0YWJsZTIsIHRhYmxlMylcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X3RhYmxlID1cbiAgICAgICAgICAgICAgICBVLmZsYXR0ZW5fc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGNhdXNhbF9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB3ZWFrX3N0b3J5X3RhYmxlID1cbiAgICAgICAgICAgICAgICBVLmZsYXR0ZW5fc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIHdlYWtfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlIGpzX2ludGVyZmFjZVxuICAgICAgICAgICAgICAgICAgY2F1c2FsX3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2VcbiAgICAgICAgICAgICAgICAgIHdlYWtfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfdGFibGUsIHdlYWtfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9IHBhcmFtZXRlcl9jYXVzYWwgaW5cbiAgICAgICAgICAgICAgICBVdGlsaXRpZXNfZXhwZXJ0XG4gICAgICAgICAgICAgICAgLmZvbGRfb3Zlcl90aGVfY2F1c2FsX3Bhc3Rfb2Zfb2JzZXJ2YWJsZXNfd2l0aF9hX3Byb2dyZXNzX2Jhcl93aGlsZV9yZXNoYWtpbmdfdGhlX3RyYWNlXG4gICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciB3ZV9zaGFsbCB3ZV9zaGFsbF9ub3RcbiAgICAgICAgICAgICAgICAgIFV0aWxpdGllc19leHBlcnQucGFyYW1ldGVycyBhdXhcbiAgICAgICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2UgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogd2UgcmVtb3ZlIHBzZXVkbyBpbnZlcnNlIGV2ZW50cyAqKVxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9tb2RlIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfY2hhbm5lbF9vbiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0b3J5X2pzb24uUGhhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTdG9yeV9qc29uLklucHJvZ3Jlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTdGFydCBjb2xsZWN0aW5nIG9uZSBuZXcgdHJhY2VcIiApKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICAgICAgICAgICAgICAgICAgVS5yZW1vdmVfcHNldWRvX2ludmVyc2VfZXZlbnRzIChkb19ub3RfbG9nIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCogd2UgY29tcHV0ZSBjYXVzYWwgY29tcHJlc3Npb24gKilcbiAgICAgICAgICAgICAgICAgICAgVS5jdXQgKGRvX25vdF9sb2cgcGFyYW1ldGVyKSB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgdHJhY2UpXG4gICAgICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgICAgICAgICAgICAgICAgICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfXG4gICAgICAgICAgICAgICAgICAgICAgID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpbmZvIHRyYWNlIHRhYmxlIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgaW5mbywgdGFibGUgPVxuICAgICAgICAgICAgICAgICAgICAgIFUuc3RvcmVfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaW5mbyB0cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICBqc19pbnRlcmZhY2UgdGFibGVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGluZm8sIHRhYmxlKVxuICAgICAgICAgICAgICAgICAgc3RlcF9saXN0IHRhYmxlMlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfdGFibGUgPVxuICAgICAgICAgICAgICAgIFUuZmxhdHRlbl9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgY2F1c2FsX3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2VcbiAgICAgICAgICAgICAgICAgIGNhdXNhbF9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBuX2NhdXNhbF9zdG9yaWVzID0gVS5jb3VudF9zdG9yaWVzIGNhdXNhbF9zdG9yeV90YWJsZSBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB3ZWFrbHlfc3RvcnlfdGFibGUgPVxuICAgICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJfd2VhayBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiXFx0IC0gd2VhayBmbG93IGNvbXByZXNzaW9uICglaSlALlwiIG5fY2F1c2FsX3N0b3JpZXNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBibGFja2xpc3QgPSBVLmNyZWF0ZV9ibGFja19saXN0IChsYXN0X2VpZCArIDEpIGluXG4gICAgICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9jb21wcmVzc2lvbl93ZWFrIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9ibGFja2xpc3QsIHdlYWtseV9zdG9yeV90YWJsZSkgPVxuICAgICAgICAgICAgICAgICAgVS5mb2xkX3N0b3J5X3RhYmxlX3dpdGhfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIFwid2VhayBjb21wcmVzc2lvblwiXG4gICAgICAgICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICAgICAgICAgICAgICAgICAgICAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246X1xuICAgICAgICAgICAgICAgICAgICAgICAgID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZSBsaXN0X2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAoYmxhY2tsaXN0LCBzdG9yeV9saXN0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgVS53ZWFrbHlfY29tcHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgc3RvcnlfbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgc3RvcnlfbGlzdCkgdHJhY2UgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdG9yeV9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUuc3RvcmVfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2UgbGlzdF9pbmZvIHN0b3J5X2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzX2ludGVyZmFjZSBzdG9yeV9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgc3RvcnlfbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tsaXN0LCBzdG9yeV9saXN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2xpc3QsIHN0b3J5X2xpc3QpKVxuICAgICAgICAgICAgICAgICAgICBjYXVzYWxfc3RvcnlfdGFibGUgKGJsYWNrbGlzdCwgdGFibGUzKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgVS5mbGF0dGVuX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICB3ZWFrbHlfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlIGpzX2ludGVyZmFjZVxuICAgICAgICAgICAgICAgICAgd2Vha2x5X3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X3RhYmxlLCB3ZWFrbHlfc3RvcnlfdGFibGVcbiAgICAgICAgICAgIClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlMiwgdGFibGUzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBuX3dlYWtfc3RvcmllcyA9IFUuY291bnRfc3RvcmllcyB3ZWFrbHlfc3RvcnlfdGFibGUgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGUgPVxuICAgICAgICAgIGlmIHN0cm9uZ19jb21wcmVzc2lvbl9vbiB0aGVuIChcbiAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJfc3Ryb25nIGluXG4gICAgICAgICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfY29tcHJlc3Npb25fc3Ryb25nIHBhcmFtZXRlclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiXFx0IC0gc3Ryb25nIGZsb3cgY29tcHJlc3Npb24gKCVpKUAuXCIgbl93ZWFrX3N0b3JpZXNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgICAgIFUuZm9sZF9zdG9yeV90YWJsZV93aXRoX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGVycm9yIFwic3Ryb25nX2NvbXByZXNzaW9uXCJcbiAgICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgICAgICAgICAgICAgICAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfXG4gICAgICAgICAgICAgICAgICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHJlZmluZWRfZXZlbnRfbGlzdCBsaXN0X2luZm9cbiAgICAgICAgICAgICAgICAgICAgIHN0cm9uZ2x5X3N0b3J5X3RhYmxlIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgVS5jb21wcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIHJlZmluZWRfZXZlbnRfbGlzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0cm9uZ2x5X3N0b3J5X3RhYmxlID1cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZSkgbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBVLnN0b3JlX3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2luZm8gc3Ryb25nbHlfc3RvcnlfdGFibGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHN0cm9uZ2x5X3N0b3J5X3RhYmxlKVxuICAgICAgICAgICAgICAgIHdlYWtseV9zdG9yeV90YWJsZSB0YWJsZTRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBVLmZsYXR0ZW5fc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgc3Ryb25nbHlfc3RvcnlfdGFibGVcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGU0XG4gICAgICAgIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgY2F1c2FsX3RhYmxlLFxuICAgICAgICAgIGNhdXNhbF9zdG9yeV90YWJsZSxcbiAgICAgICAgICB3ZWFrbHlfc3RvcnlfdGFibGUsXG4gICAgICAgICAgc3Ryb25nbHlfc3RvcnlfdGFibGUgKVxuICAgICAgKVxuICAgIClcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgaWYgY2F1c2FsX3RyYWNlX29uIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXhwb3J0ID1cbiAgICAgICAgVS5leHBvcnRfc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2F1c2FsXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIENhdXNhbC5wcmV0dHlfcHJpbnQgfmRvdEZvcm1hdFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZW52IEdyYXBoX2Nsb3N1cmUuY29uZmlnX3NtYWxsX2dyYXBoIFwiXCIgXCJcIlxuICAgICAgICAgIGV4cG9ydFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICkgZWxzZVxuICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIGlmIHdlYWtfY29tcHJlc3Npb25fb24gdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBleHBvcnQgPVxuICAgICAgICBVLmV4cG9ydF9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB3ZWFrXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIENhdXNhbC5wcmV0dHlfcHJpbnQgfmRvdEZvcm1hdFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZW52IEdyYXBoX2Nsb3N1cmUuY29uZmlnX3NtYWxsX2dyYXBoIFwiV2Vha2x5XCJcbiAgICAgICAgICBcIndlYWtseSBcIiBleHBvcnRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgICApIGVsc2VcbiAgICAgIGVycm9yLCBsb2dfaW5mb1xuICBpblxuICBsZXQgZXJyb3IsIF9sb2dfaW5mbyA9XG4gICAgaWYgc3Ryb25nX2NvbXByZXNzaW9uX29uIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXhwb3J0ID1cbiAgICAgICAgVS5leHBvcnRfc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3Ryb25nXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIENhdXNhbC5wcmV0dHlfcHJpbnQgfmRvdEZvcm1hdFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZW52IEdyYXBoX2Nsb3N1cmUuY29uZmlnX3NtYWxsX2dyYXBoIFwiU3Ryb25nbHlcIlxuICAgICAgICAgIFwic3Ryb25nbHkgXCIgZXhwb3J0XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgKSBlbHNlXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgaW5cbiAgbGV0ICgpID1cbiAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgIChTdG9yeV9qc29uLlBoYXNlIChTdG9yeV9qc29uLlN1Y2Nlc3MsIFwiQ29tcHJlc3Npb24gY29tcGxldGVkXCIpKVxuICBpblxuICBsZXQgXyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9sb2dnZXJcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICBpblxuICBsZXQgXyA9XG4gICAgRXhjZXB0aW9uLnByaW50X2Zvcl9LYVNpbVxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvclxuICBpblxuICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IG9uX21lc3NhZ2Ugfm5vbmUgfndlYWsgfnN0cm9uZyB+c2VuZF9tZXNzYWdlID1cbiAgbGV0IHBhcmFtZXRlciA9XG4gICAgcmVmXG4gICAgICAoQ29tcHJlc3Npb25fbWFpbi5idWlsZF9wYXJhbWV0ZXJcbiAgICAgICAgIH5jYWxsZWRfZnJvbTpSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5TZXJ2ZXIgfnNlbmRfbWVzc2FnZSB+bm9uZSB+d2Vha1xuICAgICAgICAgfnN0cm9uZyAoKSlcbiAgaW5cbiAgZnVuIHRleHQgLT5cbiAgICB0cnlcbiAgICAgIEpzb25VdGlsLnJlYWRfdmFyaWFudCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmdcbiAgICAgICAgKGZ1biBzdCBiIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBcIkNPTkZJR1wiIC0+XG4gICAgICAgICAgICBsZXQgY29uZiA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2pzb24gc3QgYiBpblxuICAgICAgICAgICAgbGV0IG5vbmUgPVxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX2Jvb2xfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwibm9uZVwiIGNvbmYpXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIGIgLT4gYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCB3ZWFrID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19ib29sX29wdGlvblxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcIndlYWtcIiBjb25mKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiB3ZWFrXG4gICAgICAgICAgICAgIHwgU29tZSBiIC0+IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgc3Ryb25nID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19ib29sX29wdGlvblxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInN0cm9uZ1wiIGNvbmYpXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHN0cm9uZ1xuICAgICAgICAgICAgICB8IFNvbWUgYiAtPiBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgcGFyYW1ldGVyIDo9XG4gICAgICAgICAgICAgICAgQ29tcHJlc3Npb25fbWFpbi5idWlsZF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgIH5jYWxsZWRfZnJvbTpSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5TZXJ2ZXIgfnNlbmRfbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgfm5vbmUgfndlYWsgfnN0cm9uZyAoKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgpXG4gICAgICAgICAgfCBcIlJVTlwiIC0+XG4gICAgICAgICAgICBsZXQgZW52LCBzdGVwcyA9XG4gICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAgICAgKFRyYWNlLmZvbGRfdHJhY2VcbiAgICAgICAgICAgICAgICAgICAoZnVuIF9lbnYgc3RlcHMgc3RlcCAtPiBzdGVwIDo6IHN0ZXBzKVxuICAgICAgICAgICAgICAgICAgIChmdW4gXyAtPiBbXSkpXG4gICAgICAgICAgICAgICAgc3QgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIENvbXByZXNzaW9uX21haW4uY29tcHJlc3NfYW5kX3ByaW50ICFwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICB+ZG90Rm9ybWF0OkNhdXNhbC5IdG1sIGVudlxuICAgICAgICAgICAgICAgIChDb21wcmVzc2lvbl9tYWluLmluaXRfc2VjcmV0X2xvZ19pbmZvICgpKVxuICAgICAgICAgICAgICAgIChMaXN0LnJldiBzdGVwcylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLmpzb25fZXJyb3IgKFwiSW52YWxpZCBLYVN0b3IgbWVzc2FnZTogXCIgXiB4KSkpXG4gICAgICAgIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKVxuICAgICAgICAoTGV4aW5nLmZyb21fc3RyaW5nIHRleHQpXG4gICAgd2l0aCBlIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZXByaW50ZiBcIiVzQC5cIiAoUHJpbnRleGMudG9fc3RyaW5nIGUpIGluXG4gICAgICAoKSAoKlRPRE8qKVxuIiwidHlwZSAnYSBzdXBlcmxpc3QgPSBFbHQgb2YgJ2EgfCBTdXBlcl9saXN0IG9mICdhIHN1cGVybGlzdCBsaXN0IGxpc3RcblxubGV0IHJlYyBmb2xkIGYgYSBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgRWx0IGVsdCAtPiBmIGEgZWx0XG4gIHwgU3VwZXJfbGlzdCBsIC0+IExpc3QuZm9sZF9sZWZ0IChMaXN0LmZvbGRfbGVmdCAoZm9sZCBmKSkgYSBsXG5cbmxldCByZWMgY29tcGFyZV9saXN0IGNvbXBhcmUgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggbDIgd2l0aFxuICAgIHwgW10gLT4gMFxuICAgIHwgXyAtPiAtMSlcbiAgfCBoMSA6OiB0MSAtPlxuICAgIChtYXRjaCBsMiB3aXRoXG4gICAgfCBbXSAtPiAxXG4gICAgfCBoMiA6OiB0MiAtPlxuICAgICAgbGV0IGNtcCA9IGNvbXBhcmUgaDEgaDIgaW5cbiAgICAgIChtYXRjaCBjbXAgd2l0aFxuICAgICAgfCAwIC0+IGNvbXBhcmVfbGlzdCBjb21wYXJlIHQxIHQyXG4gICAgICB8IF8gLT4gY21wKSlcblxubGV0IHJlYyBjb21wYXJlX3N1cGVybGlzdCBjb21wYXJlIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IEVsdCBhLCBFbHQgYiAtPiBjb21wYXJlIGEgYlxuICB8IFN1cGVyX2xpc3QgYSwgU3VwZXJfbGlzdCBiIC0+XG4gICAgY29tcGFyZV9saXN0IChjb21wYXJlX2xpc3QgKGNvbXBhcmVfc3VwZXJsaXN0IGNvbXBhcmUpKSBhIGJcbiAgfCBFbHQgXywgU3VwZXJfbGlzdCBfIC0+IC0xXG4gIHwgU3VwZXJfbGlzdCBfLCBFbHQgXyAtPiAxXG5cbmxldCByZWMgc29ydCBjb21wYXJlIHN1cGVybGlzdCA9XG4gIG1hdGNoIHN1cGVybGlzdCB3aXRoXG4gIHwgRWx0IGEgLT4gRWx0IGFcbiAgfCBTdXBlcl9saXN0IGEgLT5cbiAgICBTdXBlcl9saXN0XG4gICAgICAoTGlzdC5yZXZfbWFwXG4gICAgICAgICAoZnVuIGwgLT5cbiAgICAgICAgICAgbGV0IGwnID0gTGlzdC5yZXZfbWFwIChzb3J0IGNvbXBhcmUpIGwgaW5cbiAgICAgICAgICAgbGV0IGwnID0gTGlzdC5zb3J0IChjb21wYXJlX3N1cGVybGlzdCBjb21wYXJlKSBsJyBpblxuICAgICAgICAgICBsJylcbiAgICAgICAgIChMaXN0LnJldiBhKSlcblxubGV0IGR1bXBfc3VwZXJfbGlzdCBmIHMgbCA9XG4gIGxldCByZWMgYXV4IGRlcHRoIGYgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBFbHQgYSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJXMlYUAsXCIgZGVwdGggcyBhXG4gICAgfCBTdXBlcl9saXN0IGwgLT5cbiAgICAgIFBwLmxpc3QgUHAuY3V0XG4gICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVzQCwlYVwiIGRlcHRoXG4gICAgICAgICAgICAoUHAubGlzdCBQcC5jdXQgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiglc0AsJWFcIiBkZXB0aCAoYXV4IChcIi0tXCIgXiBkZXB0aCkpIGwpKVxuICAgICAgICAgICAgbClcbiAgICAgICAgZiBsXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQF1ALlwiIChhdXggXCItPlwiKSBsXG5cbnR5cGUgJ2EgaW5mbyA9IHsgcHJlZF8xOiBpbnQgbGlzdDsgY29uZmxpY3RfMTogaW50IGxpc3Q7IGxhYmVsOiAnYTsgZGVwdGg6IGludCB9XG5cbmxldCBjb21wYXJlX2ZzdF90cmlwbGUgKGEsIF8sIF8pIChiLCBfLCBfKSA9IGNvbXBhcmUgYSBiXG5cbmxldCBzbWFzaCBjb21wYXJlIGwgPVxuICBsZXQgcmVjIGF1eCB0b19kbyBvbGQgY3VycmVudCBhY2N1ID1cbiAgICBtYXRjaCB0b19kbyB3aXRoXG4gICAgfCBbXSAtPiBjdXJyZW50IDo6IGFjY3VcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWYgY29tcGFyZSBoIG9sZCA9IDAgdGhlblxuICAgICAgICBhdXggdCBvbGQgKGggOjogY3VycmVudCkgYWNjdVxuICAgICAgZWxzZVxuICAgICAgICBhdXggdCBoIFsgaCBdIChjdXJyZW50IDo6IGFjY3UpXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IEVsdCBhIC0+IEVsdCBhXG4gIHwgU3VwZXJfbGlzdCBsIC0+XG4gICAgU3VwZXJfbGlzdFxuICAgICAgKExpc3QucmV2XG4gICAgICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gYWNjdSBsIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IGFjY3VcbiAgICAgICAgICAgICAgfCBoIDo6IHQgLT4gYXV4IHQgaCBbIGggXSBhY2N1KVxuICAgICAgICAgICAgW10gbCkpXG5cbigqbGV0IGwgPVxuICAgIFN1cGVyX2xpc3RcbiAgICAgIFtcbiAgICAgICAgW1xuICAgICAgICAgIFN1cGVyX2xpc3RcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgW0VsdCAoMiwwLDApO0VsdCAoMywwLDApO0VsdCAoNCwwLDApXTtcbiAgICAgICAgICAgICAgW0VsdCAoMSwxLDEpO0VsdCAoMiwxLDEpO0VsdCAoMywxLDEpXTtcbiAgICAgICAgICAgICAgW0VsdCAoMiwyLDIpO0VsdCAoNCwyLDIpO0VsdCAoNSwzLDMpXTtcbiAgICAgICAgICAgICAgW0VsdCAoMSw0LDQpO0VsdCAoMiw0LDQpO0VsdCAoMyw0LDQpXV07XG4gICAgICAgICAgU3VwZXJfbGlzdFxuICAgICAgICAgICAgW1tFbHQgKDEsNSw1KTtFbHQgKDIsNSw1KV1dO1xuICAgICAgICAgIFN1cGVyX2xpc3RcbiAgICAgICAgICAgIFtbRWx0ICgxLDYsNik7RWx0ICgyLDYsNildXV1dOztcblxuICBsZXQgZHVtcF90cmlwbGUgKGEsYixjKSA9ICAgKFwiKFwiXihzdHJpbmdfb2ZfaW50IGEpXlwiLFwiXihzdHJpbmdfb2ZfaW50IGIpXlwiLFwiXihzdHJpbmdfb2ZfaW50IGMpXlwiKVwiKVxuXG4gIGxldCBfID0gZHVtcF9zdXBlcl9saXN0IGR1bXBfdHJpcGxlIGxcbiAgbGV0IGwxID0gc29ydCBjb21wYXJlX2ZzdF90cmlwbGUgbFxuICBsZXQgXyA9IGR1bXBfc3VwZXJfbGlzdCBkdW1wX3RyaXBsZSBsMVxuICBsZXQgbDIgPSBzbWFzaCAoY29tcGFyZV9zdXBlcmxpc3QgY29tcGFyZV9mc3RfdHJpcGxlKSBsMVxuICBsZXQgXyA9IGR1bXBfc3VwZXJfbGlzdCBkdW1wX3RyaXBsZSBsMiAqKVxuKCpcbmxldCBub3JtYWxfZm9ybSByb290IGNvbXBhcmUgZiA9IFxuICBsZXQgZGVhbF93aXRoX2VsdCBlbHQgPSBcbiAgICBsZXQgaW5mbyA9IGYgeCBpbiBcbiAgICBsZXQgbm9kZSA9IChpbmZvLmxhYmVsLGluZm8uZGVwdGgsTGlzdC5sZW5ndGggaW5mby5wcmVkXzEsTGlzdC5sZW5ndGggaW5mby5jb25mbGljdF8xKSBpbiBcbiAgICBub2RlLGluZm8ucHJlZF8xLGluZm8uY29uZmxpY3RfMSBcbiAgaW4gXG5cbiAgXG4gIGxldCByZWMgYXV4IGN1cnJlbnRfbGF5ZXIgbmV4dF9sYXllciBhY2N1ID0gXG4gICAgbWF0Y2ggXG4gICAgICBjdXJyZW50X2xheWVyIFxuICAgIHdpdGggXG4gICAgfCBMaXN0IGwgIC0+IFxuXG4gICAgfCBTdXBlcl9saXN0IGwgLT4gXG4gICAgICAgIGxldCBleHRlbmRlZF9saXN0ID0gTGlzdC5yZXZfbWFwIGRlYWxfd2l0aF9lbHQgbCBpbiBcbiAgICAgICAgbGV0IHNvcnRlZF9saXN0ID0gTGlzdC5zb3J0IGNvbXBhcmVfZnN0X3RyaXBsZSBleHRlbmRlZF9saXN0IGluIFxuICAgICAgICBsZXQgc21hc2hfbGlzdCA9IHNtYXNoIGNvbXBhcmVfZnN0X3RyaXBsZSBleHRlbmRlZF9saXN0IGluIFxuICAgICAgICBsZXQgaW5mb19vZiB4ID0gXG4gICAgICAgICAgbGV0IGluZm8gPSBmIHggaW4gXG4gICAgICAgICAgKGluZm8ubGFiZWwsaW5mby5kZXB0aCxMaXN0Lmxlbmd0aCBpbmZvLnByZWRfMSxMaXN0Lmxlbmd0aCBpbmZvLmNvbmZsaWN0XzEpXG4gICAgICAgIGluIFxuICAgICAgICBcbiAgICAgICAgICBcbiAgICAgIGVuZFxuICAgIHwgSHViIGwgLT4gXG4gICAgICBiZWdpbiBcbiAgICAgIGVuZCBcbiAgICAgICAgXG4qKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuKCogSGVscGVyIGZ1bmN0aW9ucyBmb3IgcmVzdWx0ICopXG5sZXQgZXJyb3JfbXNnID8oc2V2ZXJpdHkgPSBMb2dzLkVycm9yKSA/cmFuZ2UgdGV4dCA6IFJlc3VsdF91dGlsLm1lc3NhZ2UgPVxuICB7IFJlc3VsdF91dGlsLnNldmVyaXR5OyBSZXN1bHRfdXRpbC50ZXh0OyBSZXN1bHRfdXRpbC5yYW5nZSB9XG5cbmxldCByZXN1bHRfZXJyb3JfbXNnID9zZXZlcml0eSA/cmFuZ2UgP3Jlc3VsdF9jb2RlIChtZXNzYWdlIDogc3RyaW5nKSA6XG4gICAgJ29rIEFwaS5yZXN1bHQgPVxuICBSZXN1bHRfdXRpbC5lcnJvciA/c3RhdHVzOnJlc3VsdF9jb2RlIFsgZXJyb3JfbXNnID9zZXZlcml0eSA/cmFuZ2UgbWVzc2FnZSBdXG5cbmxldCByZXN1bHRfbWVzc2FnZXMgP3Jlc3VsdF9jb2RlIG1lc3NhZ2VzIDogJ29rIEFwaS5yZXN1bHQgPVxuICBSZXN1bHRfdXRpbC5lcnJvciA/c3RhdHVzOnJlc3VsdF9jb2RlIG1lc3NhZ2VzXG5cbmxldCByZXN1bHRfZXJyb3JfZXhjZXB0aW9uID9zZXZlcml0eSA/cmVzdWx0X2NvZGUgKGUgOiBleG4pIDogJ29rIEFwaS5yZXN1bHQgPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgdHJ5IFByaW50ZXhjLnRvX3N0cmluZyBlIHdpdGggXyAtPiBcInVuc3BlY2lmaWVkIGV4Y2VwdGlvbiB0aHJvd25cIlxuICBpblxuICByZXN1bHRfZXJyb3JfbXNnID9zZXZlcml0eSA/cmVzdWx0X2NvZGUgbWVzc2FnZVxuXG5sZXQgbWV0aG9kX2hhbmRsZXJfZXJyb3JzID9zZXZlcml0eSBtaCA9XG4gIGxldCB1bmNhdWdodCA9XG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF91bmNhdWdodF9leGNlcHRpb25fbGlzdF90b191aSBtaFxuICBpblxuICBsZXQgY2F1Z2h0ID0gRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3RfdG9fdWkgbWggaW5cbiAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgKGZ1biB4IGwgLT5cbiAgICAgIGVycm9yX21zZyA/c2V2ZXJpdHlcbiAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnBwX2NhdWdodCB4KVxuICAgICAgOjogbClcbiAgICBjYXVnaHRcbiAgICAoTGlzdC5tYXBcbiAgICAgICAoZnVuIHggLT5cbiAgICAgICAgIGVycm9yX21zZyA/c2V2ZXJpdHlcbiAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnBwX3VuY2F1Z2h0IHgpKVxuICAgICAgIHVuY2F1Z2h0KVxuXG5sZXQgbWV0aG9kX2hhbmRsZXJfbWVzc2FnZXMgP3NldmVyaXR5ID9yZXN1bHRfY29kZSBtaCA9XG4gIHJlc3VsdF9tZXNzYWdlcyA/cmVzdWx0X2NvZGUgKG1ldGhvZF9oYW5kbGVyX2Vycm9ycyA/c2V2ZXJpdHkgbWgpXG5cbmxldCByZXN1bHRfa2FzYSA9IGZ1bmN0aW9uXG4gIHwgUmVzdWx0Lk9rIHggLT4gUmVzdWx0X3V0aWwub2sgeFxuICB8IFJlc3VsdC5FcnJvciBtaCAtPiBtZXRob2RfaGFuZGxlcl9tZXNzYWdlcyB+c2V2ZXJpdHk6TG9ncy5FcnJvciBtaFxuXG5sZXQgcmVzdWx0X2JpbmRfbHd0IDpcbiAgICBvazooJ29rIC0+ICgnYV9vaywgJ2FfY29kZSkgQXBpX3R5cGVzX3QucmVzdWx0IEx3dC50KSAtPlxuICAgICgnb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCAtPlxuICAgICgnYV9vaywgJ2FfY29kZSkgQXBpX3R5cGVzX3QucmVzdWx0IEx3dC50ID1cbiBmdW4gfihvayA6ICdvayAtPiAoJ2Ffb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCBMd3QudClcbiAgICAgeyBSZXN1bHRfdXRpbC52YWx1ZTsgc3RhdHVzOyBtZXNzYWdlcyB9IC0+XG4gIG1hdGNoIHZhbHVlIHdpdGhcbiAgfCBSZXN1bHQuT2sgZGF0YSAtPiBvayBkYXRhXG4gIHwgUmVzdWx0LkVycm9yIGUgLT5cbiAgICBMd3QucmV0dXJuIHsgUmVzdWx0X3V0aWwudmFsdWUgPSBSZXN1bHQuRXJyb3IgZTsgc3RhdHVzOyBtZXNzYWdlcyB9XG5cbmxldCByZWMgcmVzdWx0X2ZvbGRfbHd0IDpcbiAgICBmOlxuICAgICAgKCgnb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCAtPlxuICAgICAgJ3ZhbHVlIC0+XG4gICAgICAoJ29rLCAnYV9jb2RlKSBBcGlfdHlwZXNfdC5yZXN1bHQgTHd0LnQpIC0+XG4gICAgaWQ6KCdvaywgJ2FfY29kZSkgQXBpX3R5cGVzX3QucmVzdWx0IC0+XG4gICAgJ3ZhbHVlIGxpc3QgLT5cbiAgICAoJ2Ffb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCBMd3QudCA9XG4gZnVuIH4oZiA6XG4gICAgICAgICgnb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCAtPlxuICAgICAgICAndmFsdWUgLT5cbiAgICAgICAgKCdvaywgJ2FfY29kZSkgQXBpX3R5cGVzX3QucmVzdWx0IEx3dC50KVxuICAgICB+KGlkIDogKCdvaywgJ2FfY29kZSkgQXBpX3R5cGVzX3QucmVzdWx0KSAobCA6ICd2YWx1ZSBsaXN0KSAtPlxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBMd3QucmV0dXJuIGlkXG4gIHwgaCA6OiB0IC0+IGYgaWQgaCA+Pj0gZnVuIHJlc3VsdCAtPiByZXN1bHRfZm9sZF9sd3QgfmYgfmlkOnJlc3VsdCB0XG5cbmxldCByZWMgcmVzdWx0X2NvbWJpbmUgOiB1bml0IEFwaS5yZXN1bHQgbGlzdCAtPiB1bml0IEFwaS5yZXN1bHQgPSBmdW5jdGlvblxuICB8IFtdIC0+IFJlc3VsdF91dGlsLm9rICgpXG4gIHwgbCA6OiB0IC0+XG4gICAgUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgfm9rOihmdW4gKCkgLT4gcmVzdWx0X2NvbWJpbmUgdClcbiAgICAgIH5lcnJvcjooZnVuIGRhdGFfMSAtPlxuICAgICAgICBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgfm9rOihmdW4gKCkgLT4gbClcbiAgICAgICAgICB+ZXJyb3I6KGZ1biBkYXRhX3IgLT5cbiAgICAgICAgICAgIFJlc3VsdF91dGlsLmVycm9yIH5zdGF0dXM6bC5SZXN1bHRfdXRpbC5zdGF0dXMgKGRhdGFfMSBAIGRhdGFfcikpXG4gICAgICAgICAgKHJlc3VsdF9jb21iaW5lIHQpKVxuICAgICAgbFxuXG5sZXQgbWQ1c3VtIHRleHQgPSBEaWdlc3QudG9faGV4IChEaWdlc3Quc3RyaW5nIHRleHQpXG4iLCIoKiBBdXRvLWdlbmVyYXRlZCBmcm9tIFwiYXBpX3R5cGVzLmF0ZFwiICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0yNy0zMi0zMy0zNS0zOVwiXVxuXG50eXBlIHNuYXBzaG90X2lkID0gQXBpX3R5cGVzX3Quc25hcHNob3RfaWRcblxudHlwZSBzbmFwc2hvdCA9IERhdGEuc25hcHNob3RcblxudHlwZSBzbmFwc2hvdF9kZXRhaWwgPSBBcGlfdHlwZXNfdC5zbmFwc2hvdF9kZXRhaWxcblxudHlwZSBzbmFwc2hvdF9jYXRhbG9nID0gQXBpX3R5cGVzX3Quc25hcHNob3RfY2F0YWxvZ1xuXG50eXBlIHNpdGVfZ3JhcGggPSBVc2VyX2dyYXBoLmNvbm5lY3RlZF9jb21wb25lbnRcblxudHlwZSBzaW11bGF0aW9uX3N0YXRlID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9zdGF0ZVxuXG50eXBlIHNpbXVsYXRpb25fc2VlZCA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fc2VlZFxuXG50eXBlIHNpbXVsYXRpb25fcHJvZ3Jlc3MgPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Byb2dyZXNzID0ge1xuICBzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWU6IGZsb2F0O1xuICBzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZTogaW50IG9wdGlvbjtcbiAgc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudDogaW50O1xuICBzaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2U6IGludCBvcHRpb247XG4gIHNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHM6IGludCBvcHRpb247XG4gIHNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZzogYm9vbFxufVxuXG50eXBlIHNpbXVsYXRpb25fcGFyYW1ldGVyID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPSB7XG4gIHNpbXVsYXRpb25fcGxvdF9wZXJpb2QgKCphdGQgcGxvdF9wZXJpb2QgKik6IGZsb2F0O1xuICBzaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbiAoKmF0ZCBwYXVzZV9jb25kaXRpb24gKik6IHN0cmluZztcbiAgc2ltdWxhdGlvbl9zZWVkICgqYXRkIHNlZWQgKik6IHNpbXVsYXRpb25fc2VlZCBvcHRpb247XG4gIHNpbXVsYXRpb25fc3RvcmVfdHJhY2UgKCphdGQgc3RvcmVfdHJhY2UgKik6IGJvb2xcbn1cblxudHlwZSAoJ3Bsb3QsICdkaW5zLCAnZmlsZV9saW5lcywgJ3NuYXBzaG90cywgJ2lucHV0cywgJ2xvZ19tZXNzYWdlcykgc2ltdWxhdGlvbl9vdXRwdXQgPVxuICAoJ3Bsb3QsICdkaW5zLCAnZmlsZV9saW5lcywgJ3NuYXBzaG90cywgJ2lucHV0cywgJ2xvZ19tZXNzYWdlcykgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXQgPSB7XG4gIHNpbXVsYXRpb25fb3V0cHV0X3Bsb3Q6ICdwbG90O1xuICBzaW11bGF0aW9uX291dHB1dF9kaW5zOiAnZGlucztcbiAgc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lczogJ2ZpbGVfbGluZXM7XG4gIHNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90czogJ3NuYXBzaG90cztcbiAgc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzOiAnaW5wdXRzO1xuICBzaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXM6ICdsb2dfbWVzc2FnZXNcbn1cblxudHlwZSBzaW11bGF0aW9uX2ludGVydmVudGlvbiA9IEFwaV90eXBlc190LnNpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG5cbnR5cGUgc2ltdWxhdGlvbl9pbmZvX291dHB1dCA9IEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb19vdXRwdXRcblxudHlwZSBzaW11bGF0aW9uX2luZm8gPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm8gPSB7XG4gIHNpbXVsYXRpb25faW5mb19wcm9ncmVzczogc2ltdWxhdGlvbl9wcm9ncmVzcztcbiAgc2ltdWxhdGlvbl9pbmZvX291dHB1dDogc2ltdWxhdGlvbl9pbmZvX291dHB1dFxufVxuXG50eXBlIHNpbXVsYXRpb25faWQgPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2lkXG5cbnR5cGUgc2ltdWxhdGlvbl9hcnRpZmFjdCA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fYXJ0aWZhY3QgPSB7XG4gIHNpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkOiBzaW11bGF0aW9uX3NlZWRcbn1cblxudHlwZSBzaGFyaW5nX2xldmVsID0gUGF0dGVybi5zaGFyaW5nX2xldmVsXG5cbnR5cGUgKCdvaywgJ2Vycm9yKSByZXN1bHQgPSAoJ29rLCAnZXJyb3IpIFJlc3VsdF91dGlsLnRcblxudHlwZSBwYXJzaW5nX2NvbXBpbCA9IEFzdC5wYXJzaW5nX2NvbXBpbFxuXG50eXBlIG5iciA9IE5ici50XG5cbnR5cGUgcHJvamVjdF9wYXJzZSA9IEFwaV90eXBlc190LnByb2plY3RfcGFyc2UgPSB7XG4gIHBhdHRlcm5fc2hhcmluZzogc2hhcmluZ19sZXZlbDtcbiAgYXN0OiBwYXJzaW5nX2NvbXBpbDtcbiAgdmFyaWFibGVfb3ZlcndyaXR0ZW46IChzdHJpbmcgKiBuYnIpIGxpc3Rcbn1cblxudHlwZSBwcm9qZWN0X3BhcmFtZXRlciA9IEFwaV90eXBlc190LnByb2plY3RfcGFyYW1ldGVyID0ge1xuICBwcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWN0X2lkOiBzdHJpbmdcbn1cblxudHlwZSBwbG90X2xpbWl0ID0gQXBpX3R5cGVzX3QucGxvdF9saW1pdCA9IHtcbiAgcGxvdF9saW1pdF9vZmZzZXQ6IGludCBvcHRpb247XG4gIHBsb3RfbGltaXRfcG9pbnRzOiBpbnQgb3B0aW9uXG59XG5cbnR5cGUgcGxvdF9wYXJhbWV0ZXIgPSBBcGlfdHlwZXNfdC5wbG90X3BhcmFtZXRlclxuXG50eXBlIHBsb3QgPSBEYXRhLnBsb3RcblxudHlwZSBtZXNzYWdlID0gUmVzdWx0X3V0aWwubWVzc2FnZVxuXG50eXBlIGxvZ19tZXNzYWdlID0gQXBpX3R5cGVzX3QubG9nX21lc3NhZ2VcblxudHlwZSBrYXBwYV9jb2RlID0gQXBpX3R5cGVzX3Qua2FwcGFfY29kZVxuXG50eXBlIGZpbGVfbGluZSA9IERhdGEuZmlsZV9saW5lID0ge1xuICBmaWxlX2xpbmVfbmFtZSAoKmF0ZCBuYW1lICopOiBzdHJpbmcgb3B0aW9uO1xuICBmaWxlX2xpbmVfdGV4dCAoKmF0ZCB0ZXh0ICopOiBzdHJpbmdcbn1cblxudHlwZSBmaWxlX2xpbmVfZGV0YWlsID0gQXBpX3R5cGVzX3QuZmlsZV9saW5lX2RldGFpbFxuXG50eXBlIGZpbGVfbGluZV9jYXRhbG9nID0gQXBpX3R5cGVzX3QuZmlsZV9saW5lX2NhdGFsb2dcblxudHlwZSBlbnZpcm9ubWVudF9pbmZvID0gQXBpX3R5cGVzX3QuZW52aXJvbm1lbnRfaW5mbyA9IHtcbiAgZW52aXJvbm1lbnRfcHJvamVjdHMgKCphdGQgcHJvamVjdHMgKik6IGludDtcbiAgZW52aXJvbm1lbnRfYnVpbGQgKCphdGQgYnVpbGQgKik6IHN0cmluZ1xufVxuXG50eXBlIGRpbl9pZCA9IEFwaV90eXBlc190LmRpbl9pZFxuXG50eXBlIGRpbl9jYXRhbG9nID0gQXBpX3R5cGVzX3QuZGluX2NhdGFsb2dcblxudHlwZSBkaW4gPSBEYXRhLmRpblxuXG5sZXQgd3JpdGVfc25hcHNob3RfaWQgPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdF9pZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zbmFwc2hvdF9pZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NuYXBzaG90X2lkID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbilcbmxldCBzbmFwc2hvdF9pZF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc25hcHNob3RfaWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zbmFwc2hvdCA9IChcbiAgRGF0YS53cml0ZV9zbmFwc2hvdFxuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zbmFwc2hvdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NuYXBzaG90ID0gKFxuICBEYXRhLnJlYWRfc25hcHNob3RcbilcbmxldCBzbmFwc2hvdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc25hcHNob3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zbmFwc2hvdF9kZXRhaWwgPSAoXG4gIHdyaXRlX3NuYXBzaG90XG4pXG5sZXQgc3RyaW5nX29mX3NuYXBzaG90X2RldGFpbCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zbmFwc2hvdF9kZXRhaWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9kZXRhaWwgPSAoXG4gIHJlYWRfc25hcHNob3RcbilcbmxldCBzbmFwc2hvdF9kZXRhaWxfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90X2RldGFpbCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19zbmFwc2hvdF9pZF9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbGlzdCAoXG4gICAgd3JpdGVfc25hcHNob3RfaWRcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fc25hcHNob3RfaWRfbGlzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fc25hcHNob3RfaWRfbGlzdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19zbmFwc2hvdF9pZF9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICByZWFkX3NuYXBzaG90X2lkXG4gIClcbilcbmxldCBfc25hcHNob3RfaWRfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3NuYXBzaG90X2lkX2xpc3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zbmFwc2hvdF9jYXRhbG9nID0gKFxuICB3cml0ZV9fc25hcHNob3RfaWRfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdF9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NuYXBzaG90X2NhdGFsb2cgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9jYXRhbG9nID0gKFxuICByZWFkX19zbmFwc2hvdF9pZF9saXN0XG4pXG5sZXQgc25hcHNob3RfY2F0YWxvZ19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc25hcHNob3RfY2F0YWxvZyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpdGVfZ3JhcGggPSAoXG4gIFVzZXJfZ3JhcGgud3JpdGVfY29ubmVjdGVkX2NvbXBvbmVudFxuKVxubGV0IHN0cmluZ19vZl9zaXRlX2dyYXBoID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpdGVfZ3JhcGggb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaXRlX2dyYXBoID0gKFxuICBVc2VyX2dyYXBoLnJlYWRfY29ubmVjdGVkX2NvbXBvbmVudFxuKVxubGV0IHNpdGVfZ3JhcGhfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpdGVfZ3JhcGggKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX3N0YXRlID0gKFxuICBmdW4gb2IgeCAtPlxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgUnVubmluZyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJSdW5uaW5nXFxcIlwiXG4gICAgICB8IGBQYXVzZWQgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiUGF1c2VkXFxcIlwiXG4gICAgICB8IGBTdG9wcGVkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlN0b3BwZWRcXFwiXCJcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9zdGF0ZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX3N0YXRlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9zdGF0ZSA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgbWF0Y2ggWW9qc29uLlNhZmUuc3RhcnRfYW55X3ZhcmlhbnQgcCBsYiB3aXRoXG4gICAgICB8IGBFZGd5X2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLnJlYWRfaWRlbnQgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUnVubmluZ1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUnVubmluZ1xuICAgICAgICAgICAgfCBcIlBhdXNlZFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUGF1c2VkXG4gICAgICAgICAgICB8IFwiU3RvcHBlZFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU3RvcHBlZFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBEb3VibGVfcXVvdGUgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLmZpbmlzaF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUnVubmluZ1wiIC0+XG4gICAgICAgICAgICAgIGBSdW5uaW5nXG4gICAgICAgICAgICB8IFwiUGF1c2VkXCIgLT5cbiAgICAgICAgICAgICAgYFBhdXNlZFxuICAgICAgICAgICAgfCBcIlN0b3BwZWRcIiAtPlxuICAgICAgICAgICAgICBgU3RvcHBlZFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBTcXVhcmVfYnJhY2tldCAtPiAoXG4gICAgICAgICAgbWF0Y2ggQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4pXG5sZXQgc2ltdWxhdGlvbl9zdGF0ZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9zdGF0ZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fc2VlZCA9IChcbiAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fc2VlZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX3NlZWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX3NlZWQgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuKVxubGV0IHNpbXVsYXRpb25fc2VlZF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9zZWVkIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX2ludF9udWxsYWJsZSA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX251bGxhYmxlIChcbiAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9faW50X251bGxhYmxlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19pbnRfbnVsbGFibGUgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9faW50X251bGxhYmxlID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAoaWYgWW9qc29uLlNhZmUucmVhZF9udWxsX2lmX3Bvc3NpYmxlIHAgbGIgdGhlbiBOb25lXG4gICAgZWxzZSBTb21lICgoXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICApIHAgbGIpIDogXyBvcHRpb24pXG4pXG5sZXQgX2ludF9udWxsYWJsZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX2ludF9udWxsYWJsZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fcHJvZ3Jlc3MgOiBfIC0+IHNpbXVsYXRpb25fcHJvZ3Jlc3MgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogc2ltdWxhdGlvbl9wcm9ncmVzcykgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZVxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RkX2Zsb2F0XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWU7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9faW50X251bGxhYmxlXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZTtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudFxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50O1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2VcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19pbnRfbnVsbGFibGVcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZTtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50c1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2ludF9udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50cztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9ib29sXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmc7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9wcm9ncmVzcyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX3Byb2dyZXNzIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9wcm9ncmVzcyA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50ID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2UgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZyA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgIHwgMjQgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyNSAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMzAgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdnJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAzNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnaycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMxKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMzUgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNCkgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMzYgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzM1KSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX251bWJlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2UgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnQgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZSA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgNCAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgNSAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfYm9vbFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI1IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMzAgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ2cnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICA1XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMzQgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnaycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMxKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDRcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAzNSAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzEpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMzKSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzQpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMzYgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMxKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMykgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzM0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzUpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9udW1iZXJcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZSA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMyAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2UgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgNCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDUgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfYm9vbFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZVwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2VcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50ID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50XCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2Ugd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZVwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmcgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogc2ltdWxhdGlvbl9wcm9ncmVzcylcbiAgICAgIClcbilcbmxldCBzaW11bGF0aW9uX3Byb2dyZXNzX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX3Byb2dyZXNzIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZSA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX251bGxhYmxlIChcbiAgICB3cml0ZV9zaW11bGF0aW9uX3NlZWRcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19zaW11bGF0aW9uX3NlZWRfbnVsbGFibGUgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAoaWYgWW9qc29uLlNhZmUucmVhZF9udWxsX2lmX3Bvc3NpYmxlIHAgbGIgdGhlbiBOb25lXG4gICAgZWxzZSBTb21lICgoXG4gICAgICByZWFkX3NpbXVsYXRpb25fc2VlZFxuICAgICkgcCBsYikgOiBfIG9wdGlvbilcbilcbmxldCBfc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlX29mX3N0cmluZyBzID1cbiAgcmVhZF9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBfIC0+IHNpbXVsYXRpb25fcGFyYW1ldGVyIC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHNpbXVsYXRpb25fcGFyYW1ldGVyKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwicGxvdF9wZXJpb2RcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0ZF9mbG9hdFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wbG90X3BlcmlvZDtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwicGF1c2VfY29uZGl0aW9uXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzZWVkXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3NlZWQ7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInN0b3JlX3RyYWNlXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9ib29sXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3N0b3JlX3RyYWNlO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fcGFyYW1ldGVyID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wbG90X3BlcmlvZCA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb24gPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fc2VlZCA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9zdG9yZV90cmFjZSA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgIHwgNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMTEgLT4gKFxuICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJ3AnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB8ICdzJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDNcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMTUgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ2QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICduJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcGxvdF9wZXJpb2QgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9udW1iZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3NlZWQgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zaW11bGF0aW9uX3NlZWRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fc3RvcmVfdHJhY2UgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9ib29sXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgNCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDExIC0+IChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAncCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB8ICdzJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMTUgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnZCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ24nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Bsb3RfcGVyaW9kIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbnVtYmVyXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb24gOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3NlZWQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19zaW11bGF0aW9uX3NlZWRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMyAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3N0b3JlX3RyYWNlIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfYm9vbFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9wbG90X3BlcmlvZCA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wbG90X3BlcmlvZCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9wbG90X3BlcmlvZFwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbiB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb25cIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3NlZWQgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fc2VlZCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9zZWVkXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9zdG9yZV90cmFjZSA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9zdG9yZV90cmFjZSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9zdG9yZV90cmFjZVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IHNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgKVxuKVxubGV0IHNpbXVsYXRpb25fcGFyYW1ldGVyX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fb3V0cHV0IHdyaXRlX19wbG90IHdyaXRlX19kaW5zIHdyaXRlX19maWxlX2xpbmVzIHdyaXRlX19zbmFwc2hvdHMgd3JpdGVfX2lucHV0cyB3cml0ZV9fbG9nX21lc3NhZ2VzIDogXyAtPiAoJ3Bsb3QsICdkaW5zLCAnZmlsZV9saW5lcywgJ3NuYXBzaG90cywgJ2lucHV0cywgJ2xvZ19tZXNzYWdlcykgc2ltdWxhdGlvbl9vdXRwdXQgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogKCdwbG90LCAnZGlucywgJ2ZpbGVfbGluZXMsICdzbmFwc2hvdHMsICdpbnB1dHMsICdsb2dfbWVzc2FnZXMpIHNpbXVsYXRpb25fb3V0cHV0KSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfcGxvdFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX3Bsb3RcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X3Bsb3Q7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X2RpbnNcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19kaW5zXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9kaW5zO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fZmlsZV9saW5lc1xuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fc25hcHNob3RzXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X2lucHV0c1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2lucHV0c1xuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXNcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19sb2dfbWVzc2FnZXNcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX291dHB1dCB3cml0ZV9fcGxvdCB3cml0ZV9fZGlucyB3cml0ZV9fZmlsZV9saW5lcyB3cml0ZV9fc25hcHNob3RzIHdyaXRlX19pbnB1dHMgd3JpdGVfX2xvZ19tZXNzYWdlcyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX291dHB1dCB3cml0ZV9fcGxvdCB3cml0ZV9fZGlucyB3cml0ZV9fZmlsZV9saW5lcyB3cml0ZV9fc25hcHNob3RzIHdyaXRlX19pbnB1dHMgd3JpdGVfX2xvZ19tZXNzYWdlcyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fb3V0cHV0IHJlYWRfX3Bsb3QgcmVhZF9fZGlucyByZWFkX19maWxlX2xpbmVzIHJlYWRfX3NuYXBzaG90cyByZWFkX19pbnB1dHMgcmVhZF9fbG9nX21lc3NhZ2VzID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2RpbnMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDIyIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAnZCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfCAncCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjcgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdoJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyOCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMzAgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19wbG90XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fZGluc1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2ZpbGVfbGluZXNcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3NuYXBzaG90c1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgNCAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9faW5wdXRzXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCA1IC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19sb2dfbWVzc2FnZXNcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCAyMiAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgJ2QnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICB8ICdwJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDRcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyNyAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnaCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDNcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyOCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDMwIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgNVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX3Bsb3RcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fZGluc1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19maWxlX2xpbmVzXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fc25hcHNob3RzXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDQgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9faW5wdXRzXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDUgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fbG9nX21lc3NhZ2VzXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9wbG90ID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9wbG90XCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfZGluc1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9pbnB1dHMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2lucHV0c1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXNcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiAoJ3Bsb3QsICdkaW5zLCAnZmlsZV9saW5lcywgJ3NuYXBzaG90cywgJ2lucHV0cywgJ2xvZ19tZXNzYWdlcykgc2ltdWxhdGlvbl9vdXRwdXQpXG4gICAgICApXG4pXG5sZXQgc2ltdWxhdGlvbl9vdXRwdXRfb2Zfc3RyaW5nIHJlYWRfX3Bsb3QgcmVhZF9fZGlucyByZWFkX19maWxlX2xpbmVzIHJlYWRfX3NuYXBzaG90cyByZWFkX19pbnB1dHMgcmVhZF9fbG9nX21lc3NhZ2VzIHMgPVxuICByZWFkX3NpbXVsYXRpb25fb3V0cHV0IHJlYWRfX3Bsb3QgcmVhZF9fZGlucyByZWFkX19maWxlX2xpbmVzIHJlYWRfX3NuYXBzaG90cyByZWFkX19pbnB1dHMgcmVhZF9fbG9nX21lc3NhZ2VzIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2ludGVydmVudGlvbiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2ludGVydmVudGlvbiBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbilcbmxldCBzaW11bGF0aW9uX2ludGVydmVudGlvbl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fb3V0cHV0XzkzNDBhZDYgOiBfIC0+IChfLCBfLCBfLCBfLCBfLCBfKSBzaW11bGF0aW9uX291dHB1dCAtPiBfID0gKFxuICBmdW4gb2IgKHggOiAoXywgXywgXywgXywgXywgXykgc2ltdWxhdGlvbl9vdXRwdXQpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9wbG90XFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X3Bsb3Q7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X2RpbnNcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2ludFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfZGlucztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lc1xcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHNcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2ludFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9pbnB1dHNcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX251bGxcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2lucHV0cztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9fb3V0cHV0XzkzNDBhZDYgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX291dHB1dF85MzQwYWQ2IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX291dHB1dF85MzQwYWQ2ID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2RpbnMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDIyIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAnZCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfCAncCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjcgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdoJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyOCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMzAgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2RpbnMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgNCAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbnVsbFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgNSAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgMjIgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8ICdkJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfCAncCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjQgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjcgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2gnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjggLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAzMCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDVcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCA0IC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX251bGxcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgNSAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X3Bsb3QgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9kaW5zID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9kaW5zXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lc1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9pbnB1dHMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlc1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IChfLCBfLCBfLCBfLCBfLCBfKSBzaW11bGF0aW9uX291dHB1dClcbiAgICAgIClcbilcbmxldCBfb3V0cHV0XzkzNDBhZDZfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19vdXRwdXRfOTM0MGFkNiAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25faW5mb19vdXRwdXQgPSAoXG4gIHdyaXRlX19vdXRwdXRfOTM0MGFkNlxuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2luZm9fb3V0cHV0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25faW5mb19vdXRwdXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0ID0gKFxuICByZWFkX19vdXRwdXRfOTM0MGFkNlxuKVxubGV0IHNpbXVsYXRpb25faW5mb19vdXRwdXRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25faW5mb19vdXRwdXQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2luZm8gOiBfIC0+IHNpbXVsYXRpb25faW5mbyAtPiBfID0gKFxuICBmdW4gb2IgKHggOiBzaW11bGF0aW9uX2luZm8pIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX3NpbXVsYXRpb25fcHJvZ3Jlc3NcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25faW5mb19wcm9ncmVzcztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9pbmZvX291dHB1dFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9pbmZvX291dHB1dDtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2luZm8gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9pbmZvIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9pbmZvID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25faW5mb19wcm9ncmVzcyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9pbmZvX291dHB1dCA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgIHwgMjIgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3MgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25faW5mb19vdXRwdXQgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW5mb19vdXRwdXRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCAyMiAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9pbmZvX291dHB1dCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3Mgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25faW5mb19wcm9ncmVzc1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25faW5mb19vdXRwdXQgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25faW5mb19vdXRwdXQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25faW5mb19vdXRwdXRcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBzaW11bGF0aW9uX2luZm8pXG4gICAgICApXG4pXG5sZXQgc2ltdWxhdGlvbl9pbmZvX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2luZm8gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2lkID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2lkIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9pZCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQgc2ltdWxhdGlvbl9pZF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9pZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3QgOiBfIC0+IHNpbXVsYXRpb25fYXJ0aWZhY3QgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogc2ltdWxhdGlvbl9hcnRpZmFjdCkgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9zaW11bGF0aW9uX3NlZWRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fYXJ0aWZhY3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fYXJ0aWZhY3QgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11bGF0aW9uX3NlZWQgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIGlmIGxlbiA9IDM1ICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNCkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAwXG4gICAgICAgICAgKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgLTFcbiAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3NlZWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgaWYgbGVuID0gMzUgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMxKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzIpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzM0KSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11bGF0aW9uX3NlZWQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fc2VlZFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11bGF0aW9uX3NlZWQgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IHNpbXVsYXRpb25fYXJ0aWZhY3QpXG4gICAgICApXG4pXG5sZXQgc2ltdWxhdGlvbl9hcnRpZmFjdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NoYXJpbmdfbGV2ZWwgPSAoXG4gIFBhdHRlcm4ud3JpdGVfc2hhcmluZ19sZXZlbFxuKVxubGV0IHN0cmluZ19vZl9zaGFyaW5nX2xldmVsID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NoYXJpbmdfbGV2ZWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaGFyaW5nX2xldmVsID0gKFxuICBQYXR0ZXJuLnJlYWRfc2hhcmluZ19sZXZlbFxuKVxubGV0IHNoYXJpbmdfbGV2ZWxfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NoYXJpbmdfbGV2ZWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvciA9IChcbiAgUmVzdWx0X3V0aWwud3JpdGVfdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yXG4pXG5sZXQgc3RyaW5nX29mX3Jlc3VsdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Jlc3VsdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVzdWx0IHJlYWRfX29rIHJlYWRfX2Vycm9yID0gKFxuICBSZXN1bHRfdXRpbC5yZWFkX3QgcmVhZF9fb2sgcmVhZF9fZXJyb3JcbilcbmxldCByZXN1bHRfb2Zfc3RyaW5nIHJlYWRfX29rIHJlYWRfX2Vycm9yIHMgPVxuICByZWFkX3Jlc3VsdCByZWFkX19vayByZWFkX19lcnJvciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3BhcnNpbmdfY29tcGlsID0gKFxuICBBc3Qud3JpdGVfcGFyc2luZ19jb21waWxcbilcbmxldCBzdHJpbmdfb2ZfcGFyc2luZ19jb21waWwgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGFyc2luZ19jb21waWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wYXJzaW5nX2NvbXBpbCA9IChcbiAgQXN0LnJlYWRfcGFyc2luZ19jb21waWxcbilcbmxldCBwYXJzaW5nX2NvbXBpbF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcGFyc2luZ19jb21waWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9uYnIgPSAoXG4gIE5ici53cml0ZV90XG4pXG5sZXQgc3RyaW5nX29mX25iciA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9uYnIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9uYnIgPSAoXG4gIE5ici5yZWFkX3RcbilcbmxldCBuYnJfb2Zfc3RyaW5nIHMgPVxuICByZWFkX25iciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19zdHJpbmdfbmJyX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICBmdW4gb2IgeCAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgICAgIChsZXQgeCwgXyA9IHggaW5cbiAgICAgIChcbiAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICApIG9iIHhcbiAgICAgICk7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgKGxldCBfLCB4ID0geCBpblxuICAgICAgKFxuICAgICAgICB3cml0ZV9uYnJcbiAgICAgICkgb2IgeFxuICAgICAgKTtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSc7XG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX3N0cmluZ19uYnJfbGlzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fc3RyaW5nX25icl9saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3N0cmluZ19uYnJfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbGlzdCAoXG4gICAgZnVuIHAgbGIgLT5cbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBzdGRfdHVwbGUgPSBZb2pzb24uU2FmZS5zdGFydF9hbnlfdHVwbGUgcCBsYiBpblxuICAgICAgbGV0IGxlbiA9IHJlZiAwIGluXG4gICAgICBsZXQgZW5kX29mX3R1cGxlID0gcmVmIGZhbHNlIGluXG4gICAgICAodHJ5XG4gICAgICAgIGxldCB4MCA9XG4gICAgICAgICAgbGV0IHggPVxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgIGluXG4gICAgICAgICAgaW5jciBsZW47XG4gICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfdHVwbGVfc2VwMiBwIHN0ZF90dXBsZSBsYjtcbiAgICAgICAgICB4XG4gICAgICAgIGluXG4gICAgICAgIGxldCB4MSA9XG4gICAgICAgICAgbGV0IHggPVxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICByZWFkX25iclxuICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpbmNyIGxlbjtcbiAgICAgICAgICAodHJ5XG4gICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3R1cGxlX3NlcDIgcCBzdGRfdHVwbGUgbGI7XG4gICAgICAgICAgd2l0aCBZb2pzb24uRW5kX29mX3R1cGxlIC0+IGVuZF9vZl90dXBsZSA6PSB0cnVlKTtcbiAgICAgICAgICB4XG4gICAgICAgIGluXG4gICAgICAgIGlmIG5vdCAhZW5kX29mX3R1cGxlIHRoZW4gKFxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3R1cGxlX3NlcDIgcCBzdGRfdHVwbGUgbGI7XG4gICAgICAgICAgICBkb25lXG4gICAgICAgICAgd2l0aCBZb2pzb24uRW5kX29mX3R1cGxlIC0+ICgpXG4gICAgICAgICk7XG4gICAgICAgICh4MCwgeDEpXG4gICAgICB3aXRoIFlvanNvbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfdHVwbGVfZmllbGRzIHAgIWxlbiBbIDA7IDEgXSk7XG4gIClcbilcbmxldCBfc3RyaW5nX25icl9saXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fc3RyaW5nX25icl9saXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcHJvamVjdF9wYXJzZSA6IF8gLT4gcHJvamVjdF9wYXJzZSAtPiBfID0gKFxuICBmdW4gb2IgKHggOiBwcm9qZWN0X3BhcnNlKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwicGF0dGVybl9zaGFyaW5nXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9zaGFyaW5nX2xldmVsXG4gICAgKVxuICAgICAgb2IgeC5wYXR0ZXJuX3NoYXJpbmc7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcImFzdFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfcGFyc2luZ19jb21waWxcbiAgICApXG4gICAgICBvYiB4LmFzdDtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwidmFyaWFibGVfb3ZlcndyaXR0ZW5cXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19zdHJpbmdfbmJyX2xpc3RcbiAgICApXG4gICAgICBvYiB4LnZhcmlhYmxlX292ZXJ3cml0dGVuO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3Byb2plY3RfcGFyc2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcHJvamVjdF9wYXJzZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Byb2plY3RfcGFyc2UgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfcGF0dGVybl9zaGFyaW5nID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9hc3QgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3ZhcmlhYmxlX292ZXJ3cml0dGVuID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCAzIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDE1IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdoJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjAgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9wYXR0ZXJuX3NoYXJpbmcgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NoYXJpbmdfbGV2ZWxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX2FzdCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGFyc2luZ19jb21waWxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgIGZpZWxkX3ZhcmlhYmxlX292ZXJ3cml0dGVuIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX25icl9saXN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgMyAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMTUgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnaCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjAgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdiJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd3JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfcGF0dGVybl9zaGFyaW5nIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9zaGFyaW5nX2xldmVsXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfYXN0IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9wYXJzaW5nX2NvbXBpbFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3ZhcmlhYmxlX292ZXJ3cml0dGVuIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX25icl9saXN0XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwYXR0ZXJuX3NoYXJpbmcgPSAobWF0Y2ggIWZpZWxkX3BhdHRlcm5fc2hhcmluZyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwicGF0dGVybl9zaGFyaW5nXCIpO1xuICAgICAgICAgICAgYXN0ID0gKG1hdGNoICFmaWVsZF9hc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImFzdFwiKTtcbiAgICAgICAgICAgIHZhcmlhYmxlX292ZXJ3cml0dGVuID0gKG1hdGNoICFmaWVsZF92YXJpYWJsZV9vdmVyd3JpdHRlbiB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwidmFyaWFibGVfb3ZlcndyaXR0ZW5cIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBwcm9qZWN0X3BhcnNlKVxuICAgICAgKVxuKVxubGV0IHByb2plY3RfcGFyc2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Byb2plY3RfcGFyc2UgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wcm9qZWN0X3BhcmFtZXRlciA6IF8gLT4gcHJvamVjdF9wYXJhbWV0ZXIgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogcHJvamVjdF9wYXJhbWV0ZXIpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJwcm9qZWN0X2lkXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICApXG4gICAgICBvYiB4LnByb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQ7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2ZfcHJvamVjdF9wYXJhbWV0ZXIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcHJvamVjdF9wYXJhbWV0ZXIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wcm9qZWN0X3BhcmFtZXRlciA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9wcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWN0X2lkID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBpZiBsZW4gPSAxMCAmJiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdqJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgIDBcbiAgICAgICAgICApXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAtMVxuICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBpZiBsZW4gPSAxMCAmJiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdqJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZCA9IChtYXRjaCAhZmllbGRfcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwicHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IHByb2plY3RfcGFyYW1ldGVyKVxuICAgICAgKVxuKVxubGV0IHByb2plY3RfcGFyYW1ldGVyX29mX3N0cmluZyBzID1cbiAgcmVhZF9wcm9qZWN0X3BhcmFtZXRlciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Bsb3RfbGltaXQgOiBfIC0+IHBsb3RfbGltaXQgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogcGxvdF9saW1pdCkgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIm9mZnNldFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2ludF9udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHgucGxvdF9saW1pdF9vZmZzZXQ7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIm5iX3BvaW50c1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2ludF9udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHgucGxvdF9saW1pdF9wb2ludHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2ZfcGxvdF9saW1pdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9wbG90X2xpbWl0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcGxvdF9saW1pdCA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9wbG90X2xpbWl0X29mZnNldCA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfcGxvdF9saW1pdF9wb2ludHMgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDYgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgOSAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3Bsb3RfbGltaXRfb2Zmc2V0IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9wbG90X2xpbWl0X3BvaW50cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDYgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDkgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfcGxvdF9saW1pdF9vZmZzZXQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9wbG90X2xpbWl0X3BvaW50cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgcGxvdF9saW1pdF9vZmZzZXQgPSAobWF0Y2ggIWZpZWxkX3Bsb3RfbGltaXRfb2Zmc2V0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJwbG90X2xpbWl0X29mZnNldFwiKTtcbiAgICAgICAgICAgIHBsb3RfbGltaXRfcG9pbnRzID0gKG1hdGNoICFmaWVsZF9wbG90X2xpbWl0X3BvaW50cyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwicGxvdF9saW1pdF9wb2ludHNcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBwbG90X2xpbWl0KVxuICAgICAgKVxuKVxubGV0IHBsb3RfbGltaXRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Bsb3RfbGltaXQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wbG90X3BhcmFtZXRlciA9IChcbiAgd3JpdGVfcGxvdF9saW1pdFxuKVxubGV0IHN0cmluZ19vZl9wbG90X3BhcmFtZXRlciA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9wbG90X3BhcmFtZXRlciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Bsb3RfcGFyYW1ldGVyID0gKFxuICByZWFkX3Bsb3RfbGltaXRcbilcbmxldCBwbG90X3BhcmFtZXRlcl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcGxvdF9wYXJhbWV0ZXIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wbG90ID0gKFxuICBEYXRhLndyaXRlX3Bsb3RcbilcbmxldCBzdHJpbmdfb2ZfcGxvdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9wbG90IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcGxvdCA9IChcbiAgRGF0YS5yZWFkX3Bsb3RcbilcbmxldCBwbG90X29mX3N0cmluZyBzID1cbiAgcmVhZF9wbG90IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfbWVzc2FnZSA9IChcbiAgUmVzdWx0X3V0aWwud3JpdGVfbWVzc2FnZVxuKVxubGV0IHN0cmluZ19vZl9tZXNzYWdlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX21lc3NhZ2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9tZXNzYWdlID0gKFxuICBSZXN1bHRfdXRpbC5yZWFkX21lc3NhZ2VcbilcbmxldCBtZXNzYWdlX29mX3N0cmluZyBzID1cbiAgcmVhZF9tZXNzYWdlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfbG9nX21lc3NhZ2UgPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuKVxubGV0IHN0cmluZ19vZl9sb2dfbWVzc2FnZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9sb2dfbWVzc2FnZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2xvZ19tZXNzYWdlID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbilcbmxldCBsb2dfbWVzc2FnZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfbG9nX21lc3NhZ2UgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9rYXBwYV9jb2RlID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2Zfa2FwcGFfY29kZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9rYXBwYV9jb2RlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfa2FwcGFfY29kZSA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQga2FwcGFfY29kZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfa2FwcGFfY29kZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19zdHJpbmdfbnVsbGFibGUgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9udWxsYWJsZSAoXG4gICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX3N0cmluZ19udWxsYWJsZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fc3RyaW5nX251bGxhYmxlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3N0cmluZ19udWxsYWJsZSA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgKGlmIFlvanNvbi5TYWZlLnJlYWRfbnVsbF9pZl9wb3NzaWJsZSBwIGxiIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAoKFxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgKSBwIGxiKSA6IF8gb3B0aW9uKVxuKVxubGV0IF9zdHJpbmdfbnVsbGFibGVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19zdHJpbmdfbnVsbGFibGUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9maWxlX2xpbmUgOiBfIC0+IGZpbGVfbGluZSAtPiBfID0gKFxuICBmdW4gb2IgKHggOiBmaWxlX2xpbmUpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJuYW1lXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fc3RyaW5nX251bGxhYmxlXG4gICAgKVxuICAgICAgb2IgeC5maWxlX2xpbmVfbmFtZTtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwidGV4dFxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgKVxuICAgICAgb2IgeC5maWxlX2xpbmVfdGV4dDtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZmlsZV9saW5lIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZmlsZV9saW5lID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX2ZpbGVfbGluZV9uYW1lID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9maWxlX2xpbmVfdGV4dCA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgaWYgbGVuID0gNCB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zIHdpdGhcbiAgICAgICAgICAgICAgfCAnbicgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAndCcgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd4JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIC0xXG4gICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9maWxlX2xpbmVfbmFtZSA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19udWxsYWJsZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfZmlsZV9saW5lX3RleHQgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgaWYgbGVuID0gNCB0aGVuIChcbiAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3Mgd2l0aFxuICAgICAgICAgICAgICAgIHwgJ24nIC0+IChcbiAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB8ICd0JyAtPiAoXG4gICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAneCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2ZpbGVfbGluZV9uYW1lIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX251bGxhYmxlXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfZmlsZV9saW5lX3RleHQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZpbGVfbGluZV9uYW1lID0gKG1hdGNoICFmaWVsZF9maWxlX2xpbmVfbmFtZSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwiZmlsZV9saW5lX25hbWVcIik7XG4gICAgICAgICAgICBmaWxlX2xpbmVfdGV4dCA9IChtYXRjaCAhZmllbGRfZmlsZV9saW5lX3RleHQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImZpbGVfbGluZV90ZXh0XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogZmlsZV9saW5lKVxuICAgICAgKVxuKVxubGV0IGZpbGVfbGluZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZmlsZV9saW5lIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX2ZpbGVfbGluZV9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbGlzdCAoXG4gICAgd3JpdGVfZmlsZV9saW5lXG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX2ZpbGVfbGluZV9saXN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19maWxlX2xpbmVfbGlzdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19maWxlX2xpbmVfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbGlzdCAoXG4gICAgcmVhZF9maWxlX2xpbmVcbiAgKVxuKVxubGV0IF9maWxlX2xpbmVfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX2ZpbGVfbGluZV9saXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lX2RldGFpbCA9IChcbiAgd3JpdGVfX2ZpbGVfbGluZV9saXN0XG4pXG5sZXQgc3RyaW5nX29mX2ZpbGVfbGluZV9kZXRhaWwgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZmlsZV9saW5lX2RldGFpbCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZV9kZXRhaWwgPSAoXG4gIHJlYWRfX2ZpbGVfbGluZV9saXN0XG4pXG5sZXQgZmlsZV9saW5lX2RldGFpbF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZmlsZV9saW5lX2RldGFpbCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19zdHJpbmdfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX2xpc3QgKFxuICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICApXG4pXG5sZXQgc3RyaW5nX29mX19zdHJpbmdfbGlzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fc3RyaW5nX2xpc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fc3RyaW5nX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2xpc3QgKFxuICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICApXG4pXG5sZXQgX3N0cmluZ19saXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fc3RyaW5nX2xpc3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9maWxlX2xpbmVfY2F0YWxvZyA9IChcbiAgd3JpdGVfX3N0cmluZ19saXN0XG4pXG5sZXQgc3RyaW5nX29mX2ZpbGVfbGluZV9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZV9jYXRhbG9nIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZmlsZV9saW5lX2NhdGFsb2cgPSAoXG4gIHJlYWRfX3N0cmluZ19saXN0XG4pXG5sZXQgZmlsZV9saW5lX2NhdGFsb2dfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZV9jYXRhbG9nIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZW52aXJvbm1lbnRfaW5mbyA6IF8gLT4gZW52aXJvbm1lbnRfaW5mbyAtPiBfID0gKFxuICBmdW4gb2IgKHggOiBlbnZpcm9ubWVudF9pbmZvKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwicHJvamVjdHNcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2ludFxuICAgIClcbiAgICAgIG9iIHguZW52aXJvbm1lbnRfcHJvamVjdHM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcImJ1aWxkXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICApXG4gICAgICBvYiB4LmVudmlyb25tZW50X2J1aWxkO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX2Vudmlyb25tZW50X2luZm8gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZW52aXJvbm1lbnRfaW5mbyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2Vudmlyb25tZW50X2luZm8gPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfZW52aXJvbm1lbnRfcHJvamVjdHMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX2Vudmlyb25tZW50X2J1aWxkID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCA1IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdiJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgOCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnaicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfZW52aXJvbm1lbnRfcHJvamVjdHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX2Vudmlyb25tZW50X2J1aWxkIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgNSAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdiJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCA4IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2onICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfZW52aXJvbm1lbnRfcHJvamVjdHMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9lbnZpcm9ubWVudF9idWlsZCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgZW52aXJvbm1lbnRfcHJvamVjdHMgPSAobWF0Y2ggIWZpZWxkX2Vudmlyb25tZW50X3Byb2plY3RzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJlbnZpcm9ubWVudF9wcm9qZWN0c1wiKTtcbiAgICAgICAgICAgIGVudmlyb25tZW50X2J1aWxkID0gKG1hdGNoICFmaWVsZF9lbnZpcm9ubWVudF9idWlsZCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwiZW52aXJvbm1lbnRfYnVpbGRcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBlbnZpcm9ubWVudF9pbmZvKVxuICAgICAgKVxuKVxubGV0IGVudmlyb25tZW50X2luZm9fb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Vudmlyb25tZW50X2luZm8gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9kaW5faWQgPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuKVxubGV0IHN0cmluZ19vZl9kaW5faWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluX2lkIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZGluX2lkID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbilcbmxldCBkaW5faWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Rpbl9pZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19kaW5faWRfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX2xpc3QgKFxuICAgIHdyaXRlX2Rpbl9pZFxuICApXG4pXG5sZXQgc3RyaW5nX29mX19kaW5faWRfbGlzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fZGluX2lkX2xpc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fZGluX2lkX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2xpc3QgKFxuICAgIHJlYWRfZGluX2lkXG4gIClcbilcbmxldCBfZGluX2lkX2xpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19kaW5faWRfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2Rpbl9jYXRhbG9nID0gKFxuICB3cml0ZV9fZGluX2lkX2xpc3RcbilcbmxldCBzdHJpbmdfb2ZfZGluX2NhdGFsb2cgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluX2NhdGFsb2cgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9kaW5fY2F0YWxvZyA9IChcbiAgcmVhZF9fZGluX2lkX2xpc3RcbilcbmxldCBkaW5fY2F0YWxvZ19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZGluX2NhdGFsb2cgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9kaW4gPSAoXG4gIERhdGEud3JpdGVfZGluXG4pXG5sZXQgc3RyaW5nX29mX2RpbiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9kaW4gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9kaW4gPSAoXG4gIERhdGEucmVhZF9kaW5cbilcbmxldCBkaW5fb2Zfc3RyaW5nIHMgPVxuICByZWFkX2RpbiAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBfIGhhbmRsZSA9XG4gIHwgTm90aGluZyA6IHVuaXQgaGFuZGxlXG4gIHwgQmlnU3RyaW5nIDogQmlnYnVmZmVyLmJpZ3N0cmluZyBoYW5kbGVcbiAgfCBTdHJpbmcgOiBzdHJpbmcgaGFuZGxlXG4gIHwgU3RyaW5ncyA6IHN0cmluZyBsaXN0IGhhbmRsZVxuICB8IENhdGFsb2cgOiBLZmlsZXMuY2F0YWxvZ19pdGVtIGxpc3QgaGFuZGxlXG4gIHwgSW5mbyA6IChzdHJpbmcgKiBpbnQpIGhhbmRsZVxuICAoKiAgfCBBc3QgOiBBc3QucGFyc2luZ19jb21waWwgaGFuZGxlKilcbiAgfCBKU09OIDogWW9qc29uLkJhc2ljLnQgaGFuZGxlXG4gIHwgSW5mbHVlbmNlX21hcFxuICAgICAgOiAoUHVibGljX2RhdGEuYWNjdXJhY3lfbGV2ZWxcbiAgICAgICAgKiBpbnRcbiAgICAgICAgKiBpbnQgb3B0aW9uXG4gICAgICAgICogaW50IG9wdGlvblxuICAgICAgICAqIChQdWJsaWNfZGF0YS5ydWxlLCBQdWJsaWNfZGF0YS52YXIpIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9ub2RlIG9wdGlvblxuICAgICAgICAqIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9tYXApXG4gICAgICAgIGhhbmRsZVxuICB8IFNob3J0X2luZmx1ZW5jZV9ub2RlIDogKGludCwgaW50KSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZSBvcHRpb24gaGFuZGxlXG4gIHwgSW5mbHVlbmNlX25vZGVcbiAgICAgIDogKFB1YmxpY19kYXRhLnJ1bGUsIFB1YmxpY19kYXRhLnZhcikgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGUgb3B0aW9uXG4gICAgICAgIGhhbmRsZVxuICB8IEluZmx1ZW5jZV9ub2Rlc1xuICAgICAgOiAoUHVibGljX2RhdGEuYWNjdXJhY3lfbGV2ZWxcbiAgICAgICAgKiAoUHVibGljX2RhdGEucnVsZSwgUHVibGljX2RhdGEudmFyKSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZSBsaXN0KVxuICAgICAgICBoYW5kbGVcbiAgfCBSdWxlc19rYXNhIDogUHVibGljX2RhdGEucnVsZSBsaXN0IGhhbmRsZVxuICB8IEFnZW50c19rYXNhIDogUHVibGljX2RhdGEuZGVhZF9hZ2VudHMgaGFuZGxlXG4gIHwgVHJhbnNpdGlvbnNfa2FzYSA6IChQdWJsaWNfZGF0YS5ydWxlICogKHN0cmluZyAqIHN0cmluZykgbGlzdCkgbGlzdCBoYW5kbGVcbiAgfCBDb25zdHJhaW50c19rYXNhXG4gICAgICA6IChzdHJpbmcgKiBQdWJsaWNfZGF0YS5hZ2VudCBsaXN0IFB1YmxpY19kYXRhLmxlbW1hIGxpc3QpIGxpc3QgaGFuZGxlXG4gIHwgUG9seW1lcnNfa2FzYVxuICAgICAgOiAoUHVibGljX2RhdGEuYWNjdXJhY3lfbGV2ZWxcbiAgICAgICAgKiBQdWJsaWNfZGF0YS5hY2N1cmFjeV9sZXZlbFxuICAgICAgICAqIFB1YmxpY19kYXRhLnNjYylcbiAgICAgICAgaGFuZGxlXG4gIHwgRElOIDogRGF0YS5kaW4gaGFuZGxlXG4gIHwgUGxvdCA6IERhdGEucGxvdCBoYW5kbGVcbiAgfCBTbmFwc2hvdCA6IERhdGEuc25hcHNob3QgaGFuZGxlXG4gIHwgU2ltdWxhdGlvbl9lZmZpY2llbmN5IDogQ291bnRlci5FZmZpY2llbmN5LnQgaGFuZGxlXG4gIHwgU2ltdWxhdGlvbl9pbmZvIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvIGhhbmRsZVxuICB8IFNpbXVsYXRpb25fcGFyYW1ldGVyIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIgaGFuZGxlXG4gIHwgU2ltdWxhdGlvbl9hcnRpZmFjdCA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fYXJ0aWZhY3QgaGFuZGxlXG5cbnR5cGUgYm94ID1cbiAgfCBCIDogJ2EgaGFuZGxlICogKCdhLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnUgLT4gYm94XG5cbnR5cGUgbWFpbGJveCA9IChpbnQsIGJveCkgSGFzaHRibC50XG5cbmxldCBuZXdfbWFpbGJveCAoKSA9IEhhc2h0YmwuY3JlYXRlIDJcblxubGV0IHJlYWRfcmVzdWx0IGYgcCBsYiA9XG4gIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgKFJlc3VsdF91dGlsLnJlYWRfdCBmIChZb2pzb24uQmFzaWMucmVhZF9saXN0IFJlc3VsdF91dGlsLnJlYWRfbWVzc2FnZSkpXG4gICAgcCBsYlxuXG5sZXQgcmVjZWl2ZSBtYWlsYm94IHggPVxuICBKc29uVXRpbC5yZWFkX29mX3N0cmluZ1xuICAgIChKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50IChmdW4gcCBsYiBpZCAtPlxuICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIG1haWxib3ggaWQgd2l0aFxuICAgICAgICAgICB8IEIgKE5vdGhpbmcsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfbnVsbCBwIGxiKVxuICAgICAgICAgICB8IEIgKEJpZ1N0cmluZywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBvdXQgPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIChCYXNlNjQuZGVjb2RlID9hbHBoYWJldDpOb25lKSBvdXQpXG4gICAgICAgICAgIHwgQiAoU3RyaW5nLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWQgKHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiKVxuICAgICAgICAgICB8IEIgKFN0cmluZ3MsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0XG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcpXG4gICAgICAgICAgICAgICAgICBwIGxiKVxuICAgICAgICAgICB8IEIgKENhdGFsb2csIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0XG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBLZmlsZXMucmVhZF9jYXRhbG9nX2l0ZW0pXG4gICAgICAgICAgICAgICAgICBwIGxiKVxuICAgICAgICAgICB8IEIgKEluZm8sIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0XG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9pbnQpXG4gICAgICAgICAgICAgICAgICBwIGxiKVxuICAgICAgICAgICAgICgqIHwgQiAoQXN0LCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdCBBc3QucmVhZF9wYXJzaW5nX2NvbXBpbCBwIGxiKSopXG4gICAgICAgICAgIHwgQiAoSlNPTiwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIpXG4gICAgICAgICAgIHwgQiAoSW5mbHVlbmNlX21hcCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEubG9jYWxfaW5mbHVlbmNlX21hcF9vZl9qc29uIGpzb24pXG4gICAgICAgICAgIHwgQiAoU2hvcnRfaW5mbHVlbmNlX25vZGUsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX29mX2pzb24pXG4gICAgICAgICAgICAgICAgICBqc29uKVxuICAgICAgICAgICB8IEIgKEluZmx1ZW5jZV9ub2RlLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IGpzb24gPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcFxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb24pXG4gICAgICAgICAgICAgICAgICBqc29uKVxuICAgICAgICAgICB8IEIgKEluZmx1ZW5jZV9ub2RlcywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEubm9kZXNfb2ZfaW5mbHVlbmNlX21hcF9vZl9qc29uIGpzb24pXG4gICAgICAgICAgIHwgQiAoUnVsZXNfa2FzYSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEuZGVhZF9ydWxlc19vZl9qc29uIGpzb24pXG4gICAgICAgICAgIHwgQiAoQWdlbnRzX2thc2EsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIFB1YmxpY19kYXRhLmpzb25fdG9fZGVhZF9hZ2VudHMganNvbilcbiAgICAgICAgICAgfCBCIChUcmFuc2l0aW9uc19rYXNhLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IGpzb24gPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcCBQdWJsaWNfZGF0YS5zZXBhcmF0aW5nX3RyYW5zaXRpb25zX29mX2pzb24ganNvbilcbiAgICAgICAgICAgfCBCIChDb25zdHJhaW50c19rYXNhLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IGpzb24gPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcCBQdWJsaWNfZGF0YS5sZW1tYXNfbGlzdF9vZl9qc29uIGpzb24pXG4gICAgICAgICAgIHwgQiAoUG9seW1lcnNfa2FzYSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWQgKFJlc3VsdF91dGlsLm1hcCBQdWJsaWNfZGF0YS5zY2Nfb2ZfanNvbiBqc29uKVxuICAgICAgICAgICB8IEIgKERJTiwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBEYXRhLnJlYWRfZGluIHAgbGIpXG4gICAgICAgICAgIHwgQiAoUGxvdCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBEYXRhLnJlYWRfcGxvdCBwIGxiKVxuICAgICAgICAgICB8IEIgKFNuYXBzaG90LCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWQgKHJlYWRfcmVzdWx0IERhdGEucmVhZF9zbmFwc2hvdCBwIGxiKVxuICAgICAgICAgICB8IEIgKFNpbXVsYXRpb25fZWZmaWNpZW5jeSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBDb3VudGVyLkVmZmljaWVuY3kucmVhZF90IHAgbGIpXG4gICAgICAgICAgIHwgQiAoU2ltdWxhdGlvbl9pbmZvLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdCBBcGlfdHlwZXNfai5yZWFkX3NpbXVsYXRpb25faW5mbyBwIGxiKVxuICAgICAgICAgICB8IEIgKFNpbXVsYXRpb25fcGFyYW1ldGVyLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdCBBcGlfdHlwZXNfai5yZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyIHAgbGIpXG4gICAgICAgICAgIHwgQiAoU2ltdWxhdGlvbl9hcnRpZmFjdCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHQgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX2FydGlmYWN0IHAgbGIpXG4gICAgICAgICBpblxuICAgICAgICAgSGFzaHRibC5yZW1vdmUgbWFpbGJveCBpZCkpXG4gICAgeFxuXG5sZXQgaXNfY29tcHV0aW5nIG1haWxib3ggPSBIYXNodGJsLmxlbmd0aCBtYWlsYm94IDw+IDBcblxuY2xhc3MgdmlydHVhbCBuZXdfY2xpZW50IH5pc19ydW5uaW5nIH5wb3N0IG1haWxib3ggPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgaWQgPSAwXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBtZXNzYWdlIDogdHlwZSBhLlxuICAgICAgICBhIGhhbmRsZSAtPlxuICAgICAgICAoQnVmZmVyLnQgLT4gdW5pdCkgLT5cbiAgICAgICAgKGEsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudCA9XG4gICAgICBmdW4gaGFuZGxlIHJlcXVlc3QgLT5cbiAgICAgICAgaWYgaXNfcnVubmluZyAoKSB0aGVuIChcbiAgICAgICAgICBsZXQgcmVzdWx0LCBmZWVkZXIgPSBMd3QudGFzayAoKSBpblxuICAgICAgICAgIGxldCBtZXNzYWdlID1cbiAgICAgICAgICAgIEpzb25VdGlsLnN0cmluZ19vZl93cml0ZVxuICAgICAgICAgICAgICAoZnVuIGIgKCkgLT5cbiAgICAgICAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgaWQpOyByZXF1ZXN0IF0pXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwb3N0IG1lc3NhZ2UgaW5cbiAgICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbWFpbGJveCBpZCAoQiAoaGFuZGxlLCBmZWVkZXIpKSBpblxuICAgICAgICAgIGxldCAoKSA9IGlkIDwtIHN1Y2MgaWQgaW5cbiAgICAgICAgICByZXN1bHRcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgKFJlc3VsdF91dGlsLmVycm9yXG4gICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwucmFuZ2UgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnRleHQgPSBcImthbW9oYSBhZ2VudCBoYXMgZGllZFwiO1xuICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgXSlcblxuICAgICgqIEthTW9IYSAqKVxuICAgIG1ldGhvZCBmaWxlX2RlbGV0ZSBmaWxlX2lkID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVEZWxldGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfdXBkYXRlIGZpbGVfaWQgZmlsZV9jb250ZW50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVVcGRhdGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9jb250ZW50KTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9tb3ZlIGZpbGVfcG9zaXRpb24gZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlTW92ZVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgYiBmaWxlX3Bvc2l0aW9uKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9nZXQgZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgSW5mbyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlR2V0XCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX2NyZWF0ZSBmaWxlX3Bvc2l0aW9uIGZpbGVfaWQgZmlsZV9jb250ZW50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVDcmVhdGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgZmlsZV9wb3NpdGlvbik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9jb250ZW50KTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9jYXRhbG9nID1cbiAgICAgIHNlbGYjbWVzc2FnZSBDYXRhbG9nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVDYXRhbG9nXCIpIF0pXG5cbiAgICBtZXRob2Qgc2VjcmV0X3Byb2plY3RfcGFyc2UgOiBBc3QucGFyc2luZ19jb21waWwgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBMd3QucmV0dXJuXG4gICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgXCJsb3cgbGV2ZWwgcHJvamVjdF9wYXJzZSBtdXN0bid0IGJlIHVzZWRcIilcblxuICAgIG1ldGhvZCBzZWNyZXRfZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFyc1xuICAgICAgICA6IFB1YmxpY19kYXRhLnBvc19vZl9ydWxlc19hbmRfdmFycyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZ1xuICAgICAgICAgICBcImxvdyBsZXZlbCBnZXRfcG9zX29mX3J1bGVzX2FuZF92YXJzIG11c3RuJ3QgYmUgdXNlZFwiKVxuXG4gICAgbWV0aG9kIHByb2plY3Rfb3ZlcndyaXRlIGZpbGVfaWQgYXN0ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlByb2plY3RPdmVyd3JpdGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBBc3Qud3JpdGVfcGFyc2luZ19jb21waWwgYiBhc3QpO1xuICAgICAgICAgICAgXSlcblxuICAgICgqIEthU2EgKilcbiAgICBtZXRob2QgaW5pdF9zdGF0aWNfYW5hbHlzZXJfcmF3IGNvbXBpbCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJJTklUXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGNvbXBpbCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyIGNvbXBpbCA9XG4gICAgICBzZWxmI2luaXRfc3RhdGljX2FuYWx5c2VyX3Jhd1xuICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoQXN0LmNvbXBpbF90b19qc29uIGNvbXBpbCkpXG5cbiAgICBtZXRob2QgZ2V0X2NvbnRhY3RfbWFwIGFjY3VyYWN5ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBKU09OIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkNPTlRBQ1RfTUFQXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3kpKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X2luZmx1ZW5jZV9tYXBfcmF3IGFjY3VyYWN5ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiSU5GTFVFTkNFX01BUFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGFjY3VyYWN5KSk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9sb2NhbF9pbmZsdWVuY2VfbWFwID9md2QgP2J3ZCA/b3JpZ2luIH50b3RhbCBhY2N1cmFjeSA9XG4gICAgICBzZWxmI21lc3NhZ2UgSW5mbHVlbmNlX21hcCAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJMT0NBTF9JTkZMVUVOQ0VfTUFQXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3kpKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IEpzb25VdGlsLndyaXRlX29wdGlvbiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgZndkKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IEpzb25VdGlsLndyaXRlX29wdGlvbiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgYndkKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgYiB0b3RhbCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGJcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvblxuICAgICAgICAgICAgICAgICAgICAgb3JpZ2luKSk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9pbml0aWFsX25vZGUgPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZmx1ZW5jZV9ub2RlIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiSU5GTFVFTkNFX01BUF9PUklHSU5BTF9OT0RFXCIpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfbmV4dF9ub2RlIGpzb24gPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZmx1ZW5jZV9ub2RlIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIklORkxVRU5DRV9NQVBfTkVYVF9OT0RFXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgIGpzb24pKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X3ByZXZpb3VzX25vZGUganNvbiA9XG4gICAgICBzZWxmI21lc3NhZ2UgSW5mbHVlbmNlX25vZGUgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJJTkZMVUVOQ0VfTUFQX1BSRVZJT1VTX05PREVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGJcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvblxuICAgICAgICAgICAgICAgICAgICAganNvbikpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfaW5mbHVlbmNlX21hcF9ub2RlX2F0IH5maWxlbmFtZSBwb3MgPVxuICAgICAgc2VsZiNtZXNzYWdlIFNob3J0X2luZmx1ZW5jZV9ub2RlIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIklORkxVRU5DRV9NQVBfTk9ERV9BVFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlbmFtZSk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBMb2Mud3JpdGVfcG9zaXRpb24gYiBwb3MpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfbm9kZXNfb2ZfaW5mbHVlbmNlX21hcCBhY2N1cmFjeSA9XG4gICAgICBzZWxmI21lc3NhZ2UgSW5mbHVlbmNlX25vZGVzIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIklORkxVRU5DRV9NQVBfQUxMX05PREVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGJcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhY2N1cmFjeSkpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfZGVhZF9ydWxlcyA9XG4gICAgICBzZWxmI21lc3NhZ2UgUnVsZXNfa2FzYSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJERUFEX1JVTEVTXCIpIF0pXG5cbiAgICBtZXRob2QgZ2V0X2RlYWRfYWdlbnRzID1cbiAgICAgIHNlbGYjbWVzc2FnZSBBZ2VudHNfa2FzYSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJERUFEX0FHRU5UU1wiKSBdKVxuXG4gICAgbWV0aG9kIGdldF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICAgICAgc2VsZiNtZXNzYWdlIFRyYW5zaXRpb25zX2thc2EgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJOT05fV0VBS0xZX1JFVkVSU0lCTEVfVFJBTlNJVElPTlNcIik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9jb25zdHJhaW50c19saXN0ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBDb25zdHJhaW50c19rYXNhIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkNPTlNUUkFJTlRTXCIpIF0pXG5cbiAgICBtZXRob2QgZ2V0X3BvdGVudGlhbF9wb2x5bWVycyBhY2N1cmFjeV9jbSBhY2N1cmFjeV9zY2MgPVxuICAgICAgc2VsZiNtZXNzYWdlIFBvbHltZXJzX2thc2EgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiUE9MWU1FUlNcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGJcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhY2N1cmFjeV9jbSkpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3lfc2NjKSk7XG4gICAgICAgICAgICBdKVxuXG4gICAgKCogS2FTaW0gKilcbiAgICBtZXRob2Qgc2VjcmV0X3NpbXVsYXRpb25fbG9hZCAoXyA6IFBhdHRlcm4uc2hhcmluZ19sZXZlbClcbiAgICAgICAgKF8gOiBBc3QucGFyc2luZ19jb21waWwpIChfIDogKHN0cmluZyAqIE5ici50KSBsaXN0KVxuICAgICAgICA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBMd3QucmV0dXJuXG4gICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgXCJsb3cgbGV2ZWwgc2ltdWxhdGlvbl9sb2FkIG11c3RuJ3QgYmUgdXNlZFwiKVxuXG4gICAgbWV0aG9kIHByb2plY3RfcGFyc2UgfnBhdHRlcm5TaGFyaW5nIG92ZXJ3cml0ZXMgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiUHJvamVjdFBhcnNlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gUGF0dGVybi53cml0ZV9zaGFyaW5nX2xldmVsIGIgcGF0dGVyblNoYXJpbmcpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIE5ici53cml0ZV90KVxuICAgICAgICAgICAgICAgICAgYiBvdmVyd3JpdGVzKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jb250aW51ZSBwYXVzZSA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uQ29udGludWVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgcGF1c2UpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RlbGV0ZSA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uRGVsZXRlXCIpIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfZGluIGlkID1cbiAgICAgIHNlbGYjbWVzc2FnZSBESU4gKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkRldGFpbERJTlwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBpZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2ZpbGVfbGluZSBpZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgU3RyaW5ncyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9zbmFwc2hvdCBpZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgU25hcHNob3QgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGlkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfbG9nX21lc3NhZ2UgPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXCIpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9wbG90IHBhcmFtZXRlciA9XG4gICAgICBzZWxmI21lc3NhZ2UgUGxvdCAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IEFwaV90eXBlc19qLndyaXRlX3Bsb3RfcGFyYW1ldGVyIGIgcGFyYW1ldGVyKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX2RpbiA9XG4gICAgICBzZWxmI21lc3NhZ2UgU3RyaW5ncyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiKSBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19maWxlX2xpbmUgPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZ3MgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX3NuYXBzaG90ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmdzIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZWZmaWNpZW5jeSA9XG4gICAgICBzZWxmI21lc3NhZ2UgU2ltdWxhdGlvbl9lZmZpY2llbmN5IChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25FZmZpY2llbmN5XCIpIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9pbmZvID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTaW11bGF0aW9uX2luZm8gKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkluZm9cIikgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2ludGVydmVudGlvbiBpbnRlcnZlbnRpb24gPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGludGVydmVudGlvbik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fb3V0cHV0c196aXAgPVxuICAgICAgc2VsZiNtZXNzYWdlIEJpZ1N0cmluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiKSBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcGF1c2UgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvblBhdXNlXCIpIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPVxuICAgICAgc2VsZiNtZXNzYWdlIFNpbXVsYXRpb25fcGFyYW1ldGVyIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIikgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3N0YXJ0IHBhcmFtZXRlciA9XG4gICAgICBzZWxmI21lc3NhZ2UgU2ltdWxhdGlvbl9hcnRpZmFjdCAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uU3RhcnRcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBBcGlfdHlwZXNfai53cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlciBiIHBhcmFtZXRlcik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcmF3X3RyYWNlID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvblRyYWNlXCIpIF0pXG5cbiAgICAoKiBtZXRob2QgcHJvamVjdF9wYXJzZSBvdmVyd3JpdGUgPSAoKVxuXG4gICAgICAgbWV0aG9kIHJhd19sYXVuY2hfc3RvcnlfY29tcHV0YXRpb24gPSAoKVxuICAgICAgIG1ldGhvZCBjb25maWdfc3RvcnlfY29tcHV0YXRpb24gbW9kZXMgPSBMd3RfcmVzdWx0LnJldHVybiAoKVxuICAgICAgIG1ldGhvZCBzdG9yeV9pc19jb21wdXRpbmcgPSBmYWxzZVxuICAgICAgIG1ldGhvZCBzdG9yeV9saXN0ID0gKClcbiAgICAgICBtZXRob2Qgc3RvcnlfbG9nID0gKClcbiAgICAgICBtZXRob2Qgc3RvcnlfcHJvZ3Jlc3MgPSAoKVxuXG4gICAgICAgbWV0aG9kIGlzX2NvbXB1dGluZyA9IHRydWVcbiAgICAgICAgIG1ldGhvZCB0ZXJtaW5hdGUgPSAoKSopXG4gIGVuZFxuIiwiKCogQXV0by1nZW5lcmF0ZWQgZnJvbSBcIm1waV9tZXNzYWdlLmF0ZFwiICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0yNy0zMi0zMy0zNS0zOVwiXVxuXG50eXBlIHNuYXBzaG90X2lkID0gQXBpX3R5cGVzX3Quc25hcHNob3RfaWRcblxudHlwZSBzbmFwc2hvdF9kZXRhaWwgPSBBcGlfdHlwZXNfdC5zbmFwc2hvdF9kZXRhaWxcblxudHlwZSBzbmFwc2hvdF9jYXRhbG9nID0gQXBpX3R5cGVzX3Quc25hcHNob3RfY2F0YWxvZ1xuXG50eXBlIHNpbXVsYXRpb25fcGFyYW1ldGVyID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXJcblxudHlwZSBzaW11bGF0aW9uX2ludGVydmVudGlvbiA9IEFwaV90eXBlc190LnNpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG5cbnR5cGUgc2ltdWxhdGlvbl9pbmZvID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvXG5cbnR5cGUgc2ltdWxhdGlvbl9lZmZpY2llbmN5ID0gQ291bnRlci5FZmZpY2llbmN5LnRcblxudHlwZSBzaW11bGF0aW9uX2FydGlmYWN0ID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9hcnRpZmFjdFxuXG50eXBlICgnb2ssICdlcnJvcikgYXBpX3Jlc3VsdCA9ICgnb2ssICdlcnJvcikgQXBpX3R5cGVzX3QucmVzdWx0XG5cbnR5cGUgYXBpX21lc3NhZ2UgPSBBcGlfdHlwZXNfdC5tZXNzYWdlXG5cbnR5cGUgJ29rIHJlc3VsdCA9ICdvayBNcGlfbWVzc2FnZV90LnJlc3VsdFxuXG50eXBlIHBsb3QgPSBBcGlfdHlwZXNfdC5wbG90XG5cbnR5cGUgbG9nX21lc3NhZ2UgPSBBcGlfdHlwZXNfdC5sb2dfbWVzc2FnZVxuXG50eXBlIGZpbGVfbGluZV9jYXRhbG9nID0gQXBpX3R5cGVzX3QuZmlsZV9saW5lX2NhdGFsb2dcblxudHlwZSBlbnZpcm9ubWVudF9pbmZvID0gQXBpX3R5cGVzX3QuZW52aXJvbm1lbnRfaW5mb1xuXG50eXBlIGRpbl9jYXRhbG9nID0gQXBpX3R5cGVzX3QuZGluX2NhdGFsb2dcblxudHlwZSBkaW4gPSBBcGlfdHlwZXNfdC5kaW5cblxudHlwZSByZXN0X3Jlc3BvbnNlX2NvbnRlbnQgPSBNcGlfbWVzc2FnZV90LnJlc3RfcmVzcG9uc2VfY29udGVudFxuXG50eXBlIHJlc3RfcmVzcG9uc2UgPSBNcGlfbWVzc2FnZV90LnJlc3RfcmVzcG9uc2VcblxudHlwZSBwcm9qZWN0X3BhcnNlID0gQXBpX3R5cGVzX3QucHJvamVjdF9wYXJzZVxuXG50eXBlIHByb2plY3RfcGFyYW1ldGVyID0gQXBpX3R5cGVzX3QucHJvamVjdF9wYXJhbWV0ZXJcblxudHlwZSBwbG90X3BhcmFtZXRlciA9IEFwaV90eXBlc190LnBsb3RfcGFyYW1ldGVyXG5cbnR5cGUgZGluX2lkID0gQXBpX3R5cGVzX3QuZGluX2lkXG5cbnR5cGUgcmVzdF9yZXF1ZXN0ID0gTXBpX21lc3NhZ2VfdC5yZXN0X3JlcXVlc3RcblxudHlwZSByZXNwb25zZV9jb250ZW50ID0gTXBpX21lc3NhZ2VfdC5yZXNwb25zZV9jb250ZW50XG5cbnR5cGUgcmVzcG9uc2UgPSBNcGlfbWVzc2FnZV90LnJlc3BvbnNlXG5cbnR5cGUgcmVxdWVzdCA9IE1waV9tZXNzYWdlX3QucmVxdWVzdFxuXG50eXBlIGlkID0gTXBpX21lc3NhZ2VfdC5pZFxuXG50eXBlICdkYXRhIG1lc3NhZ2UgPSAnZGF0YSBNcGlfbWVzc2FnZV90Lm1lc3NhZ2UgPSB7IGlkOiBpZDsgZGF0YTogJ2RhdGEgfVxuXG50eXBlIGZpbGVfbGluZV9kZXRhaWwgPSBBcGlfdHlwZXNfdC5maWxlX2xpbmVfZGV0YWlsXG5cbnR5cGUgZmlsZV9saW5lID0gQXBpX3R5cGVzX3QuZmlsZV9saW5lXG5cbmxldCB3cml0ZV9zbmFwc2hvdF9pZCA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc25hcHNob3RfaWRcbilcbmxldCBzdHJpbmdfb2Zfc25hcHNob3RfaWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfaWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9pZCA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9zbmFwc2hvdF9pZFxuKVxubGV0IHNuYXBzaG90X2lkX29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdF9pZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NuYXBzaG90X2RldGFpbCA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc25hcHNob3RfZGV0YWlsXG4pXG5sZXQgc3RyaW5nX29mX3NuYXBzaG90X2RldGFpbCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zbmFwc2hvdF9kZXRhaWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9kZXRhaWwgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfc25hcHNob3RfZGV0YWlsXG4pXG5sZXQgc25hcHNob3RfZGV0YWlsX29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdF9kZXRhaWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zbmFwc2hvdF9jYXRhbG9nID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9zbmFwc2hvdF9jYXRhbG9nXG4pXG5sZXQgc3RyaW5nX29mX3NuYXBzaG90X2NhdGFsb2cgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfY2F0YWxvZyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NuYXBzaG90X2NhdGFsb2cgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfc25hcHNob3RfY2F0YWxvZ1xuKVxubGV0IHNuYXBzaG90X2NhdGFsb2dfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90X2NhdGFsb2cgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlclxuKVxubGV0IHNpbXVsYXRpb25fcGFyYW1ldGVyX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9zaW11bGF0aW9uX2ludGVydmVudGlvblxuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2ludGVydmVudGlvbiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2ludGVydmVudGlvbiBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4pXG5sZXQgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25fb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9pbmZvID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9zaW11bGF0aW9uX2luZm9cbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbmZvID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25faW5mbyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25faW5mbyA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX2luZm9cbilcbmxldCBzaW11bGF0aW9uX2luZm9fb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25faW5mbyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fZWZmaWNpZW5jeSA9IChcbiAgQ291bnRlci5FZmZpY2llbmN5LndyaXRlX3RcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9lZmZpY2llbmN5ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fZWZmaWNpZW5jeSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fZWZmaWNpZW5jeSA9IChcbiAgQ291bnRlci5FZmZpY2llbmN5LnJlYWRfdFxuKVxubGV0IHNpbXVsYXRpb25fZWZmaWNpZW5jeV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9lZmZpY2llbmN5IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdCA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdFxuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2FydGlmYWN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0ID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3NpbXVsYXRpb25fYXJ0aWZhY3RcbilcbmxldCBzaW11bGF0aW9uX2FydGlmYWN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfYXBpX3Jlc3VsdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvclxuKVxubGV0IHN0cmluZ19vZl9hcGlfcmVzdWx0IHdyaXRlX19vayB3cml0ZV9fZXJyb3IgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfYXBpX3Jlc3VsdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfYXBpX3Jlc3VsdCByZWFkX19vayByZWFkX19lcnJvciA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9yZXN1bHQgcmVhZF9fb2sgcmVhZF9fZXJyb3JcbilcbmxldCBhcGlfcmVzdWx0X29mX3N0cmluZyByZWFkX19vayByZWFkX19lcnJvciBzID1cbiAgcmVhZF9hcGlfcmVzdWx0IHJlYWRfX29rIHJlYWRfX2Vycm9yIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfYXBpX21lc3NhZ2UgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX21lc3NhZ2VcbilcbmxldCBzdHJpbmdfb2ZfYXBpX21lc3NhZ2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfYXBpX21lc3NhZ2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9hcGlfbWVzc2FnZSA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9tZXNzYWdlXG4pXG5sZXQgYXBpX21lc3NhZ2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2FwaV9tZXNzYWdlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX2FwaV9tZXNzYWdlX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICB3cml0ZV9hcGlfbWVzc2FnZVxuICApXG4pXG5sZXQgc3RyaW5nX29mX19hcGlfbWVzc2FnZV9saXN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19hcGlfbWVzc2FnZV9saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX2FwaV9tZXNzYWdlX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2xpc3QgKFxuICAgIHJlYWRfYXBpX21lc3NhZ2VcbiAgKVxuKVxubGV0IF9hcGlfbWVzc2FnZV9saXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fYXBpX21lc3NhZ2VfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19yZXN1bHRfZDFmOTgyNCB3cml0ZV9fYSA9IChcbiAgd3JpdGVfYXBpX3Jlc3VsdCB3cml0ZV9fYSB3cml0ZV9fYXBpX21lc3NhZ2VfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9fcmVzdWx0X2QxZjk4MjQgd3JpdGVfX2EgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3Jlc3VsdF9kMWY5ODI0IHdyaXRlX19hIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3Jlc3VsdF9kMWY5ODI0IHJlYWRfX2EgPSAoXG4gIHJlYWRfYXBpX3Jlc3VsdCByZWFkX19hIHJlYWRfX2FwaV9tZXNzYWdlX2xpc3RcbilcbmxldCBfcmVzdWx0X2QxZjk4MjRfb2Zfc3RyaW5nIHJlYWRfX2EgcyA9XG4gIHJlYWRfX3Jlc3VsdF9kMWY5ODI0IHJlYWRfX2EgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9yZXN1bHQgd3JpdGVfX29rID0gKFxuICB3cml0ZV9fcmVzdWx0X2QxZjk4MjQgd3JpdGVfX29rXG4pXG5sZXQgc3RyaW5nX29mX3Jlc3VsdCB3cml0ZV9fb2sgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcmVzdWx0IHdyaXRlX19vayBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3VsdCByZWFkX19vayA9IChcbiAgcmVhZF9fcmVzdWx0X2QxZjk4MjQgcmVhZF9fb2tcbilcbmxldCByZXN1bHRfb2Zfc3RyaW5nIHJlYWRfX29rIHMgPVxuICByZWFkX3Jlc3VsdCByZWFkX19vayAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Bsb3QgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3Bsb3RcbilcbmxldCBzdHJpbmdfb2ZfcGxvdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9wbG90IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcGxvdCA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9wbG90XG4pXG5sZXQgcGxvdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcGxvdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2xvZ19tZXNzYWdlID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9sb2dfbWVzc2FnZVxuKVxubGV0IHN0cmluZ19vZl9sb2dfbWVzc2FnZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9sb2dfbWVzc2FnZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2xvZ19tZXNzYWdlID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2xvZ19tZXNzYWdlXG4pXG5sZXQgbG9nX21lc3NhZ2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2xvZ19tZXNzYWdlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lX2NhdGFsb2cgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX2ZpbGVfbGluZV9jYXRhbG9nXG4pXG5sZXQgc3RyaW5nX29mX2ZpbGVfbGluZV9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZV9jYXRhbG9nIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZmlsZV9saW5lX2NhdGFsb2cgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZmlsZV9saW5lX2NhdGFsb2dcbilcbmxldCBmaWxlX2xpbmVfY2F0YWxvZ19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZmlsZV9saW5lX2NhdGFsb2cgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9lbnZpcm9ubWVudF9pbmZvID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9lbnZpcm9ubWVudF9pbmZvXG4pXG5sZXQgc3RyaW5nX29mX2Vudmlyb25tZW50X2luZm8gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZW52aXJvbm1lbnRfaW5mbyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2Vudmlyb25tZW50X2luZm8gPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZW52aXJvbm1lbnRfaW5mb1xuKVxubGV0IGVudmlyb25tZW50X2luZm9fb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Vudmlyb25tZW50X2luZm8gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9kaW5fY2F0YWxvZyA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfZGluX2NhdGFsb2dcbilcbmxldCBzdHJpbmdfb2ZfZGluX2NhdGFsb2cgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluX2NhdGFsb2cgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9kaW5fY2F0YWxvZyA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9kaW5fY2F0YWxvZ1xuKVxubGV0IGRpbl9jYXRhbG9nX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW5fY2F0YWxvZyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2RpbiA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfZGluXG4pXG5sZXQgc3RyaW5nX29mX2RpbiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9kaW4gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9kaW4gPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZGluXG4pXG5sZXQgZGluX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW4gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc3RyaW5nX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fc3RyaW5nX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3N0cmluZ19saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3N0cmluZ19saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgKVxuKVxubGV0IF9zdHJpbmdfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3N0cmluZ19saXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzdF9yZXNwb25zZV9jb250ZW50ID0gKFxuICBmdW4gb2IgeCAtPlxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgUHJvamVjdExvYWQgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiUHJvamVjdExvYWRcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfX3N0cmluZ19saXN0XG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbERJTiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRElOXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2RpblxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2xvZ19tZXNzYWdlXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfcGxvdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc25hcHNob3RfZGV0YWlsXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkluZm8geCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkluZm9cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2ZpbGVfbGluZV9jYXRhbG9nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dESU4geCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZGluX2NhdGFsb2dcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc25hcHNob3RfY2F0YWxvZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25UcmFjZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uVHJhY2VcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbk91dHB1dHNaaXAgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvblBhcmFtZXRlciB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uUGFyYW1ldGVyXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25Db250aW51ZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkRlbGV0ZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uRGVsZXRlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uUGF1c2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblBhdXNlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvblN0YXJ0IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25TdGFydFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX2FydGlmYWN0XG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgRW52aXJvbm1lbnRJbmZvIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIkVudmlyb25tZW50SW5mb1xcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9lbnZpcm9ubWVudF9pbmZvXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgUHJvamVjdENyZWF0ZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJQcm9qZWN0Q3JlYXRlXFxcIlwiXG4gICAgICB8IGBQcm9qZWN0RGVsZXRlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlByb2plY3REZWxldGVcXFwiXCJcbiAgICAgIHwgYFByb2plY3RDYXRhbG9nIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlByb2plY3RDYXRhbG9nXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX19zdHJpbmdfbGlzdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbilcbmxldCBzdHJpbmdfb2ZfcmVzdF9yZXNwb25zZV9jb250ZW50ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Jlc3RfcmVzcG9uc2VfY29udGVudCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3RfcmVzcG9uc2VfY29udGVudCA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgbWF0Y2ggWW9qc29uLlNhZmUuc3RhcnRfYW55X3ZhcmlhbnQgcCBsYiB3aXRoXG4gICAgICB8IGBFZGd5X2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLnJlYWRfaWRlbnQgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUHJvamVjdExvYWRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RMb2FkXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbGlzdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9sb2dfbWVzc2FnZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9kZXRhaWxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW5mb1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9maWxlX2xpbmVfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRElOXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Rpbl9jYXRhbG9nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXAgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Db250aW51ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZWxldGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0IHhcbiAgICAgICAgICAgIHwgXCJFbnZpcm9ubWVudEluZm9cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZW52aXJvbm1lbnRfaW5mb1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYEVudmlyb25tZW50SW5mbyB4XG4gICAgICAgICAgICB8IFwiUHJvamVjdENyZWF0ZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdENyZWF0ZVxuICAgICAgICAgICAgfCBcIlByb2plY3REZWxldGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3REZWxldGVcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q2F0YWxvZ1wiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q2F0YWxvZyB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYERvdWJsZV9xdW90ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUuZmluaXNoX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0TG9hZFwiIC0+XG4gICAgICAgICAgICAgIGBQcm9qZWN0TG9hZFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Db250aW51ZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhdXNlXG4gICAgICAgICAgICB8IFwiUHJvamVjdENyZWF0ZVwiIC0+XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q3JlYXRlXG4gICAgICAgICAgICB8IFwiUHJvamVjdERlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgIGBQcm9qZWN0RGVsZXRlXG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYFNxdWFyZV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbGlzdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2xvZ19tZXNzYWdlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfZGV0YWlsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkluZm9cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3kgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZmlsZV9saW5lX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uVHJhY2UgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25PdXRwdXRzWmlwXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXAgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlciB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IFwiRW52aXJvbm1lbnRJbmZvXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Vudmlyb25tZW50X2luZm9cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgRW52aXJvbm1lbnRJbmZvIHhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q2F0YWxvZ1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdENhdGFsb2cgeFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4pXG5sZXQgcmVzdF9yZXNwb25zZV9jb250ZW50X29mX3N0cmluZyBzID1cbiAgcmVhZF9yZXN0X3Jlc3BvbnNlX2NvbnRlbnQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fcmVzdWx0XzRjYTZiOGYgPSAoXG4gIHdyaXRlX2FwaV9yZXN1bHQgd3JpdGVfcmVzdF9yZXNwb25zZV9jb250ZW50IHdyaXRlX19hcGlfbWVzc2FnZV9saXN0XG4pXG5sZXQgc3RyaW5nX29mX19yZXN1bHRfNGNhNmI4ZiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fcmVzdWx0XzRjYTZiOGYgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fcmVzdWx0XzRjYTZiOGYgPSAoXG4gIHJlYWRfYXBpX3Jlc3VsdCByZWFkX3Jlc3RfcmVzcG9uc2VfY29udGVudCByZWFkX19hcGlfbWVzc2FnZV9saXN0XG4pXG5sZXQgX3Jlc3VsdF80Y2E2YjhmX29mX3N0cmluZyBzID1cbiAgcmVhZF9fcmVzdWx0XzRjYTZiOGYgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fcmVzdF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdCA9IChcbiAgd3JpdGVfX3Jlc3VsdF80Y2E2YjhmXG4pXG5sZXQgc3RyaW5nX29mX19yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3Jlc3RfcmVzcG9uc2VfY29udGVudF9yZXN1bHQgPSAoXG4gIHJlYWRfX3Jlc3VsdF80Y2E2YjhmXG4pXG5sZXQgX3Jlc3RfcmVzcG9uc2VfY29udGVudF9yZXN1bHRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzdF9yZXNwb25zZSA9IChcbiAgd3JpdGVfX3Jlc3RfcmVzcG9uc2VfY29udGVudF9yZXN1bHRcbilcbmxldCBzdHJpbmdfb2ZfcmVzdF9yZXNwb25zZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXN0X3Jlc3BvbnNlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVzdF9yZXNwb25zZSA9IChcbiAgcmVhZF9fcmVzdF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdFxuKVxubGV0IHJlc3RfcmVzcG9uc2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Jlc3RfcmVzcG9uc2UgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wcm9qZWN0X3BhcnNlID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9wcm9qZWN0X3BhcnNlXG4pXG5sZXQgc3RyaW5nX29mX3Byb2plY3RfcGFyc2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcHJvamVjdF9wYXJzZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Byb2plY3RfcGFyc2UgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfcHJvamVjdF9wYXJzZVxuKVxubGV0IHByb2plY3RfcGFyc2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Byb2plY3RfcGFyc2UgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wcm9qZWN0X3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfcHJvamVjdF9wYXJhbWV0ZXJcbilcbmxldCBzdHJpbmdfb2ZfcHJvamVjdF9wYXJhbWV0ZXIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcHJvamVjdF9wYXJhbWV0ZXIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wcm9qZWN0X3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9wcm9qZWN0X3BhcmFtZXRlclxuKVxubGV0IHByb2plY3RfcGFyYW1ldGVyX29mX3N0cmluZyBzID1cbiAgcmVhZF9wcm9qZWN0X3BhcmFtZXRlciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Bsb3RfcGFyYW1ldGVyID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9wbG90X3BhcmFtZXRlclxuKVxubGV0IHN0cmluZ19vZl9wbG90X3BhcmFtZXRlciA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9wbG90X3BhcmFtZXRlciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Bsb3RfcGFyYW1ldGVyID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3Bsb3RfcGFyYW1ldGVyXG4pXG5sZXQgcGxvdF9wYXJhbWV0ZXJfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Bsb3RfcGFyYW1ldGVyIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZGluX2lkID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9kaW5faWRcbilcbmxldCBzdHJpbmdfb2ZfZGluX2lkID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Rpbl9pZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2Rpbl9pZCA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9kaW5faWRcbilcbmxldCBkaW5faWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Rpbl9pZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Jlc3RfcmVxdWVzdCA9IChcbiAgZnVuIG9iIHggLT5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFByb2plY3RMb2FkIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlByb2plY3RMb2FkXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Byb2plY3RfcGFyc2VcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ29udGludWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNvbnRpbnVlXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZWxldGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRlbGV0ZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRElOIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxESU5cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZGluX2lkXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxQbG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Bsb3RfcGFyYW1ldGVyXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zbmFwc2hvdF9pZFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25JbmZvIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25JbmZvXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRWZmaWNpZW5jeSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uRWZmaWNpZW5jeVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uVHJhY2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblRyYWNlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uT3V0cHV0c1ppcFxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhcmFtZXRlciAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uUGFyYW1ldGVyXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uUGF1c2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblBhdXNlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uU3RhcnQgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblN0YXJ0XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgRW52aXJvbm1lbnRJbmZvIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIkVudmlyb25tZW50SW5mb1xcXCJcIlxuICAgICAgfCBgUHJvamVjdENhdGFsb2cgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiUHJvamVjdENhdGFsb2dcXFwiXCJcbiAgICAgIHwgYFByb2plY3RDcmVhdGUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiUHJvamVjdENyZWF0ZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wcm9qZWN0X3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFByb2plY3REZWxldGUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiUHJvamVjdERlbGV0ZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4pXG5sZXQgc3RyaW5nX29mX3Jlc3RfcmVxdWVzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXN0X3JlcXVlc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9yZXN0X3JlcXVlc3QgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIG1hdGNoIFlvanNvbi5TYWZlLnN0YXJ0X2FueV92YXJpYW50IHAgbGIgd2l0aFxuICAgICAgfCBgRWRneV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5yZWFkX2lkZW50IHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlByb2plY3RMb2FkXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Byb2plY3RfcGFyc2VcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0TG9hZCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZWxldGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5faWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90X3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfaWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mb1xuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25FZmZpY2llbmN5XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU5cbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblRyYWNlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uVHJhY2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXBcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhdXNlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblN0YXJ0XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0IHhcbiAgICAgICAgICAgIHwgXCJFbnZpcm9ubWVudEluZm9cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYEVudmlyb25tZW50SW5mb1xuICAgICAgICAgICAgfCBcIlByb2plY3RDYXRhbG9nXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q2F0YWxvZ1xuICAgICAgICAgICAgfCBcIlByb2plY3RDcmVhdGVcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcHJvamVjdF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q3JlYXRlIHhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0RGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0RGVsZXRlIHhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgRG91YmxlX3F1b3RlIC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5maW5pc2hfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZWxldGVcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRlbGV0ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkluZm9cIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkluZm9cbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRElOXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblRyYWNlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25UcmFjZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25PdXRwdXRzWmlwXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhcmFtZXRlclwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhdXNlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgICAgICAgfCBcIkVudmlyb25tZW50SW5mb1wiIC0+XG4gICAgICAgICAgICAgIGBFbnZpcm9ubWVudEluZm9cbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q2F0YWxvZ1wiIC0+XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q2F0YWxvZ1xuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBTcXVhcmVfYnJhY2tldCAtPiAoXG4gICAgICAgICAgbWF0Y2ggQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlByb2plY3RMb2FkXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Byb2plY3RfcGFyc2VcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdExvYWQgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Db250aW51ZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Db250aW51ZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRElOXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Rpbl9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90X3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uU3RhcnRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0IHhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q3JlYXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Byb2plY3RfcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RDcmVhdGUgeFxuICAgICAgICAgICAgfCBcIlByb2plY3REZWxldGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0RGVsZXRlIHhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuKVxubGV0IHJlc3RfcmVxdWVzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcmVzdF9yZXF1ZXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzcG9uc2VfY29udGVudCA9IChcbiAgZnVuIG9iIHggLT5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFByb2plY3RMb2FkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlByb2plY3RMb2FkXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX19zdHJpbmdfbGlzdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxESU4geCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbERJTlxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9kaW5cbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9sb2dfbWVzc2FnZVxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxQbG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Bsb3RcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NuYXBzaG90X2RldGFpbFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25JbmZvIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25JbmZvXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25faW5mb1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25FZmZpY2llbmN5IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25FZmZpY2llbmN5XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fZWZmaWNpZW5jeVxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9maWxlX2xpbmVfY2F0YWxvZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRElOIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25DYXRhbG9nRElOXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2Rpbl9jYXRhbG9nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NuYXBzaG90X2NhdGFsb2dcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uVHJhY2UgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblRyYWNlXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25PdXRwdXRzWmlwXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblBhcmFtZXRlclxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25Db250aW51ZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ29udGludWVcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZWxldGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRlbGV0ZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25QYXVzZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25TdGFydCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uU3RhcnRcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbilcbmxldCBzdHJpbmdfb2ZfcmVzcG9uc2VfY29udGVudCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXNwb25zZV9jb250ZW50IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVzcG9uc2VfY29udGVudCA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgbWF0Y2ggWW9qc29uLlNhZmUuc3RhcnRfYW55X3ZhcmlhbnQgcCBsYiB3aXRoXG4gICAgICB8IGBFZGd5X2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLnJlYWRfaWRlbnQgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUHJvamVjdExvYWRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RMb2FkXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbGlzdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9sb2dfbWVzc2FnZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9kZXRhaWxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW5mb1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9maWxlX2xpbmVfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRElOXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Rpbl9jYXRhbG9nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXAgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Db250aW51ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZWxldGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0IHhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgRG91YmxlX3F1b3RlIC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5maW5pc2hfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlByb2plY3RMb2FkXCIgLT5cbiAgICAgICAgICAgICAgYFByb2plY3RMb2FkXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Db250aW51ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZWxldGVcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRlbGV0ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXVzZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgU3F1YXJlX2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19saXN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfbG9nX21lc3NhZ2VcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxQbG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Bsb3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9kZXRhaWxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkluZm8geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25FZmZpY2llbmN5XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fZWZmaWNpZW5jeVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9maWxlX2xpbmVfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5fY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9jYXRhbG9nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25UcmFjZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uT3V0cHV0c1ppcCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhcmFtZXRlclwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblN0YXJ0XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fYXJ0aWZhY3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0IHhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuKVxubGV0IHJlc3BvbnNlX2NvbnRlbnRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Jlc3BvbnNlX2NvbnRlbnQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fcmVzdWx0Xzg5MGQ5ZmUgPSAoXG4gIHdyaXRlX2FwaV9yZXN1bHQgd3JpdGVfcmVzcG9uc2VfY29udGVudCB3cml0ZV9fYXBpX21lc3NhZ2VfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9fcmVzdWx0Xzg5MGQ5ZmUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3Jlc3VsdF84OTBkOWZlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3Jlc3VsdF84OTBkOWZlID0gKFxuICByZWFkX2FwaV9yZXN1bHQgcmVhZF9yZXNwb25zZV9jb250ZW50IHJlYWRfX2FwaV9tZXNzYWdlX2xpc3RcbilcbmxldCBfcmVzdWx0Xzg5MGQ5ZmVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19yZXN1bHRfODkwZDlmZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19yZXNwb25zZV9jb250ZW50X3Jlc3VsdCA9IChcbiAgd3JpdGVfX3Jlc3VsdF84OTBkOWZlXG4pXG5sZXQgc3RyaW5nX29mX19yZXNwb25zZV9jb250ZW50X3Jlc3VsdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fcmVzcG9uc2VfY29udGVudF9yZXN1bHQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fcmVzcG9uc2VfY29udGVudF9yZXN1bHQgPSAoXG4gIHJlYWRfX3Jlc3VsdF84OTBkOWZlXG4pXG5sZXQgX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fcmVzcG9uc2VfY29udGVudF9yZXN1bHQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9yZXNwb25zZSA9IChcbiAgd3JpdGVfX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0XG4pXG5sZXQgc3RyaW5nX29mX3Jlc3BvbnNlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Jlc3BvbnNlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVzcG9uc2UgPSAoXG4gIHJlYWRfX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0XG4pXG5sZXQgcmVzcG9uc2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Jlc3BvbnNlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVxdWVzdCA9IChcbiAgZnVuIG9iIHggLT5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFByb2plY3RMb2FkIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlByb2plY3RMb2FkXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Byb2plY3RfcGFyc2VcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ29udGludWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNvbnRpbnVlXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZWxldGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRlbGV0ZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRElOIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxESU5cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZGluX2lkXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxQbG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Bsb3RfcGFyYW1ldGVyXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zbmFwc2hvdF9pZFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25JbmZvIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25JbmZvXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRWZmaWNpZW5jeSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uRWZmaWNpZW5jeVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uVHJhY2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblRyYWNlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uT3V0cHV0c1ppcFxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhcmFtZXRlciAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uUGFyYW1ldGVyXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uUGF1c2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblBhdXNlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uU3RhcnQgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblN0YXJ0XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuKVxubGV0IHN0cmluZ19vZl9yZXF1ZXN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3JlcXVlc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9yZXF1ZXN0ID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBtYXRjaCBZb2pzb24uU2FmZS5zdGFydF9hbnlfdmFyaWFudCBwIGxiIHdpdGhcbiAgICAgIHwgYEVkZ3lfYnJhY2tldCAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUucmVhZF9pZGVudCBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0TG9hZFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wcm9qZWN0X3BhcnNlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdExvYWQgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Db250aW51ZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNvbnRpbnVlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluX2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkluZm9cbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3lcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhcmFtZXRlclwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXVzZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhdXNlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYERvdWJsZV9xdW90ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUuZmluaXNoX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3lcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTlxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uVHJhY2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uT3V0cHV0c1ppcFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXVzZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgU3F1YXJlX2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0TG9hZFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wcm9qZWN0X3BhcnNlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RMb2FkIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5faWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblN0YXJ0XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbilcbmxldCByZXF1ZXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9yZXF1ZXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfaWQgPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX2ludFxuKVxubGV0IHN0cmluZ19vZl9pZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9pZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2lkID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbilcbmxldCBpZF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfaWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9tZXNzYWdlIHdyaXRlX19kYXRhIDogXyAtPiAnZGF0YSBtZXNzYWdlIC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6ICdkYXRhIG1lc3NhZ2UpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJpZFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfaWRcbiAgICApXG4gICAgICBvYiB4LmlkO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJkYXRhXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fZGF0YVxuICAgIClcbiAgICAgIG9iIHguZGF0YTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9tZXNzYWdlIHdyaXRlX19kYXRhID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX21lc3NhZ2Ugd3JpdGVfX2RhdGEgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9tZXNzYWdlIHJlYWRfX2RhdGEgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfaWQgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX2RhdGEgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDIgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCA0IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdkJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdhJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX2lkIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfZGF0YSA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2RhdGFcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCAyIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDQgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnZCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnYScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2lkIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9pZFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2RhdGEgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19kYXRhXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZCA9IChtYXRjaCAhZmllbGRfaWQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImlkXCIpO1xuICAgICAgICAgICAgZGF0YSA9IChtYXRjaCAhZmllbGRfZGF0YSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwiZGF0YVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6ICdkYXRhIG1lc3NhZ2UpXG4gICAgICApXG4pXG5sZXQgbWVzc2FnZV9vZl9zdHJpbmcgcmVhZF9fZGF0YSBzID1cbiAgcmVhZF9tZXNzYWdlIHJlYWRfX2RhdGEgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9maWxlX2xpbmVfZGV0YWlsID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9maWxlX2xpbmVfZGV0YWlsXG4pXG5sZXQgc3RyaW5nX29mX2ZpbGVfbGluZV9kZXRhaWwgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZmlsZV9saW5lX2RldGFpbCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZV9kZXRhaWwgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZmlsZV9saW5lX2RldGFpbFxuKVxubGV0IGZpbGVfbGluZV9kZXRhaWxfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZV9kZXRhaWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9maWxlX2xpbmUgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX2ZpbGVfbGluZVxuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZmlsZV9saW5lIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZmlsZV9saW5lID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2ZpbGVfbGluZVxuKVxubGV0IGZpbGVfbGluZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZmlsZV9saW5lIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5leGNlcHRpb24gQmFkUmVzcG9uc2Ugb2YgTXBpX21lc3NhZ2Vfai5yZXNwb25zZV9jb250ZW50XG5cbmxldCBvbl9tZXNzYWdlIChtYW5hZ2VyIDogQXBpLm1hbmFnZXJfc2ltdWxhdGlvbilcbiAgICAocG9zdF9tZXNzYWdlIDogc3RyaW5nIC0+IHVuaXQgTHd0LnQpICh0ZXh0X21lc3NhZ2UgOiBzdHJpbmcpIDogdW5pdCBMd3QudCA9XG4gIGxldCBtZXNzYWdlIDogTXBpX21lc3NhZ2Vfai5yZXF1ZXN0IE1waV9tZXNzYWdlX2oubWVzc2FnZSA9XG4gICAgTXBpX21lc3NhZ2Vfai5tZXNzYWdlX29mX3N0cmluZyBNcGlfbWVzc2FnZV9qLnJlYWRfcmVxdWVzdCB0ZXh0X21lc3NhZ2VcbiAgaW5cbiAgbGV0IGhhbmRsZXIgOlxuICAgICAgICAnYS5cbiAgICAgICAgKCdhIC0+IE1waV9tZXNzYWdlX2oucmVzcG9uc2VfY29udGVudCkgLT4gJ2EgQXBpLnJlc3VsdCAtPiB1bml0IEx3dC50ID1cbiAgIGZ1biBwYWNrIHJlc3VsdCAtPlxuICAgIGxldCBtZXNzYWdlIDogTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBNcGlfbWVzc2FnZV9qLm1lc3NhZ2UgPVxuICAgICAge1xuICAgICAgICBNcGlfbWVzc2FnZV9qLmlkID0gbWVzc2FnZS5NcGlfbWVzc2FnZV9qLmlkO1xuICAgICAgICBNcGlfbWVzc2FnZV9qLmRhdGEgPSBSZXN1bHRfdXRpbC5tYXAgcGFjayByZXN1bHQ7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgdGV4dCA6IHN0cmluZyA9XG4gICAgICBNcGlfbWVzc2FnZV9qLnN0cmluZ19vZl9tZXNzYWdlIE1waV9tZXNzYWdlX2oud3JpdGVfcmVzcG9uc2UgbWVzc2FnZVxuICAgIGluXG4gICAgcG9zdF9tZXNzYWdlIHRleHRcbiAgaW5cbiAgbWF0Y2ggbWVzc2FnZS5NcGlfbWVzc2FnZV9qLmRhdGEgd2l0aFxuICB8IGBQcm9qZWN0TG9hZCBBcGlfdHlwZXNfdC57IHBhdHRlcm5fc2hhcmluZzsgYXN0OyB2YXJpYWJsZV9vdmVyd3JpdHRlbiB9IC0+XG4gICAgbWFuYWdlciNzZWNyZXRfc2ltdWxhdGlvbl9sb2FkIHBhdHRlcm5fc2hhcmluZyBhc3QgdmFyaWFibGVfb3ZlcndyaXR0ZW5cbiAgICA+Pj0gaGFuZGxlciAoZnVuICgpIC0+IGBQcm9qZWN0TG9hZClcbiAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIHNpbXVsYXRpb25fcGFyYW1ldGVyIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2NvbnRpbnVlIHNpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgPj49IGhhbmRsZXIgKGZ1biAoKSAtPiBgU2ltdWxhdGlvbkNvbnRpbnVlKVxuICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2RlbGV0ZSA+Pj0gaGFuZGxlciAoZnVuICgpIC0+IGBTaW11bGF0aW9uRGVsZXRlKVxuICB8IGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgZmlsZV9saW5lX2lkIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9maWxlX2xpbmUgZmlsZV9saW5lX2lkXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25EZXRhaWxESU4gZGluX2lkIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9kaW4gZGluX2lkXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25EZXRhaWxESU4gcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfbG9nX21lc3NhZ2VcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uRGV0YWlsUGxvdCBwbG90X3BhcmFtZXRlciAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfcGxvdCBwbG90X3BhcmFtZXRlclxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uRGV0YWlsUGxvdCByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCBzbmFwc2hvdF9pZCAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfc25hcHNob3Qgc25hcHNob3RfaWRcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkluZm8gLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25faW5mbyA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkluZm8gcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uRWZmaWNpZW5jeSAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25FZmZpY2llbmN5IHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jYXRhbG9nX2ZpbGVfbGluZVxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkNhdGFsb2dESU4gLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY2F0YWxvZ19kaW5cbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkNhdGFsb2dESU4gcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2NhdGFsb2dfc25hcHNob3RcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25QYXJhbWV0ZXIgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uVHJhY2UgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fcmF3X3RyYWNlXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25UcmFjZSByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25PdXRwdXRzWmlwIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX291dHB1dHNfemlwXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25PdXRwdXRzWmlwIChCYXNlNjQuZW5jb2RlIHJlc3VsdCkpXG4gIHwgYFNpbXVsYXRpb25QYXVzZSAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9wYXVzZSA+Pj0gaGFuZGxlciAoZnVuICgpIC0+IGBTaW11bGF0aW9uUGF1c2UpXG4gIHwgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24gc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uIHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgPj49IGhhbmRsZXIgKGZ1biBzIC0+IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHMpXG4gIHwgYFNpbXVsYXRpb25TdGFydCBzaW11bGF0aW9uX3BhcmFtZXRlciAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9zdGFydCBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uU3RhcnQgcmVzdWx0KVxuXG5jbGFzcyB0eXBlIHZpcnR1YWwgbWFuYWdlcl9iYXNlX3R5cGUgPSBvYmplY3RcbiAgbWV0aG9kIHByaXZhdGUgdmlydHVhbCBtZXNzYWdlIDpcbiAgICBNcGlfbWVzc2FnZV9qLnJlcXVlc3QgLT4gTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBMd3QudFxuXG4gIGluaGVyaXQgQXBpLm1hbmFnZXJfc2ltdWxhdGlvblxuZW5kXG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlcl9iYXNlICgpIDogbWFuYWdlcl9iYXNlX3R5cGUgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHByaXZhdGUgdmlydHVhbCBtZXNzYWdlXG4gICAgICAgIDogTXBpX21lc3NhZ2Vfai5yZXF1ZXN0IC0+IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTHd0LnRcblxuICAgIG1ldGhvZCBzZWNyZXRfc2ltdWxhdGlvbl9sb2FkIHBhdHRlcm5fc2hhcmluZyBhc3QgdmFyaWFibGVfb3ZlcndyaXR0ZW5cbiAgICAgICAgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlXG4gICAgICAgIChgUHJvamVjdExvYWRcbiAgICAgICAgICBBcGlfdHlwZXNfdC57IHBhdHRlcm5fc2hhcmluZzsgYXN0OyB2YXJpYWJsZV9vdmVyd3JpdHRlbiB9KVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFByb2plY3RMb2FkIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NvbnRpbnVlIChwYXVzZV9jb25kaXRpb24gOiBzdHJpbmcpXG4gICAgICAgIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSAoYFNpbXVsYXRpb25Db250aW51ZSBwYXVzZV9jb25kaXRpb24pXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RlbGV0ZSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9maWxlX2xpbmUgKGZpbGVfbGluZV9pZCA6IHN0cmluZylcbiAgICAgICAgOiBzdHJpbmcgbGlzdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSAoYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSBmaWxlX2xpbmVfaWQpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIGZpbGVfbGluZV9saXN0IC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGZpbGVfbGluZV9saXN0KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9kaW4gKGZsdXhfbWFwX2lkIDogQXBpX3R5cGVzX3QuZGluX2lkKVxuICAgICAgICA6IEFwaV90eXBlc190LmRpbiBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSAoYFNpbXVsYXRpb25EZXRhaWxESU4gZmx1eF9tYXBfaWQpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbERJTiBmbHV4X21hcCAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBmbHV4X21hcClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfbG9nX21lc3NhZ2VcbiAgICAgICAgOiBBcGlfdHlwZXNfai5sb2dfbWVzc2FnZSBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSBsb2dfbWVzc2FnZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBsb2dfbWVzc2FnZSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfcGxvdCAocGxvdF9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5wbG90X3BhcmFtZXRlcilcbiAgICAgICAgOiBBcGlfdHlwZXNfai5wbG90IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIChgU2ltdWxhdGlvbkRldGFpbFBsb3QgcGxvdF9wYXJhbWV0ZXIpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFBsb3QgcGxvdCAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBwbG90KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9zbmFwc2hvdCAoc25hcHNob3RfaWQgOiBBcGlfdHlwZXNfai5zbmFwc2hvdF9pZClcbiAgICAgICAgOiBBcGlfdHlwZXNfai5zbmFwc2hvdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSAoYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCBzbmFwc2hvdF9pZClcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3Qgc25hcHNob3QgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgc25hcHNob3QpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25faW5mbyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvbkluZm9cbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uSW5mbyBzaW11bGF0aW9uX3N0YXR1cyAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzaW11bGF0aW9uX3N0YXR1cylcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9lZmZpY2llbmN5IDogQ291bnRlci5FZmZpY2llbmN5LnQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25FZmZpY2llbmN5XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgZWZmaWNpZW5jeSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBlZmZpY2llbmN5KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NhdGFsb2dfZmlsZV9saW5lXG4gICAgICAgIDogQXBpX3R5cGVzX2ouZmlsZV9saW5lX2NhdGFsb2cgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIGluZm8gLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgaW5mbylcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX2RpbiA6IEFwaV90eXBlc19qLmRpbl9jYXRhbG9nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTlxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRElOIGluZm8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgaW5mbylcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX3NuYXBzaG90XG4gICAgICAgIDogQXBpX3R5cGVzX2ouc25hcHNob3RfY2F0YWxvZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgaW5mbyAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBpbmZvKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3BhdXNlIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvblBhdXNlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3Jhd190cmFjZSA6IHN0cmluZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvblRyYWNlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvblRyYWNlIHJlc3VsdCAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayByZXN1bHQpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fb3V0cHV0c196aXAgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uT3V0cHV0c1ppcFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHJlc3VsdCAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoQmFzZTY0LmRlY29kZSByZXN1bHQpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGFyYW1ldGVyIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uUGFyYW1ldGVyXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvblBhcmFtZXRlciByZXN1bHQgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcmVzdWx0KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAoc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2ludGVydmVudGlvbilcbiAgICAgICAgOiBzdHJpbmcgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24gcyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3N0YXJ0XG4gICAgICAgIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgICA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fYXJ0aWZhY3QgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uU3RhcnQgc2ltdWxhdGlvbl9wYXJhbWV0ZXIpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvblN0YXJ0IHNpbXVsYXRpb25faWQgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgc2ltdWxhdGlvbl9pZClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG4gIGVuZFxuXG5tb2R1bGUgSW50TWFwID0gTW9kcy5JbnRNYXBcblxudHlwZSBjb250ZXh0ID0geyBtYWlsYm94ZXM6IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTHd0LnUgSW50TWFwLnQ7IGlkOiBpbnQgfVxuXG5jbGFzcyB0eXBlIHZpcnR1YWwgbWFuYWdlcl9tcGlfdHlwZSA9IG9iamVjdFxuICBtZXRob2QgcHJpdmF0ZSB2aXJ0dWFsIHNsZWVwIDogZmxvYXQgLT4gdW5pdCBMd3QudFxuICBtZXRob2QgcHJpdmF0ZSB2aXJ0dWFsIHBvc3RfbWVzc2FnZSA6IHN0cmluZyAtPiB1bml0XG4gIG1ldGhvZCBwcml2YXRlIG1lc3NhZ2UgOiBNcGlfbWVzc2FnZV9qLnJlcXVlc3QgLT4gTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBMd3QudFxuICBtZXRob2QgcHJpdmF0ZSByZWNlaXZlIDogc3RyaW5nIC0+IHVuaXRcbiAgaW5oZXJpdCBBcGkubWFuYWdlcl9zaW11bGF0aW9uXG4gIG1ldGhvZCBwcml2YXRlIHNpbV9pc19jb21wdXRpbmcgOiBib29sXG4gIG1ldGhvZCB2aXJ0dWFsIGlzX3J1bm5pbmcgOiBib29sXG5lbmRcblxuY2xhc3MgdmlydHVhbCBtYW5hZ2VyICgpIDogbWFuYWdlcl9tcGlfdHlwZSA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSBjb250ZXh0ID0geyBtYWlsYm94ZXMgPSBJbnRNYXAuZW1wdHk7IGlkID0gMCB9XG4gICAgbWV0aG9kIHByaXZhdGUgdmlydHVhbCBzbGVlcCA6IGZsb2F0IC0+IHVuaXQgTHd0LnRcbiAgICBtZXRob2QgcHJpdmF0ZSB2aXJ0dWFsIHBvc3RfbWVzc2FnZSA6IHN0cmluZyAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgaXNfcnVubmluZyA6IGJvb2xcblxuICAgIG1ldGhvZCBwcml2YXRlIHJlY2VpdmUgKHJlc3BvbnNlX3RleHQgOiBzdHJpbmcpID1cbiAgICAgIGxldCBtZXNzYWdlIDogTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBNcGlfbWVzc2FnZV9qLm1lc3NhZ2UgPVxuICAgICAgICBNcGlfbWVzc2FnZV9qLm1lc3NhZ2Vfb2Zfc3RyaW5nIE1waV9tZXNzYWdlX2oucmVhZF9yZXNwb25zZVxuICAgICAgICAgIHJlc3BvbnNlX3RleHRcbiAgICAgIGluXG4gICAgICBtYXRjaCBJbnRNYXAucG9wIG1lc3NhZ2UuTXBpX21lc3NhZ2Vfai5pZCBjb250ZXh0Lm1haWxib3hlcyB3aXRoXG4gICAgICB8IFNvbWUgdmFsdWUsIG1haWxib3hlcyAtPlxuICAgICAgICBsZXQgKCkgPSBjb250ZXh0IDwtIHsgY29udGV4dCB3aXRoIG1haWxib3hlcyB9IGluXG4gICAgICAgIEx3dC53YWtldXAgdmFsdWUgbWVzc2FnZS5NcGlfbWVzc2FnZV9qLmRhdGFcbiAgICAgIHwgTm9uZSwgbWFpbGJveGVzIC0+IGNvbnRleHQgPC0geyBjb250ZXh0IHdpdGggbWFpbGJveGVzIH1cblxuICAgIG1ldGhvZCBwcml2YXRlIG1lc3NhZ2UgKHJlcXVlc3QgOiBNcGlfbWVzc2FnZV9qLnJlcXVlc3QpXG4gICAgICAgIDogTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBMd3QudCA9XG4gICAgICBpZiBzZWxmI2lzX3J1bm5pbmcgdGhlbiAoXG4gICAgICAgIGxldCByZXN1bHQsIGZlZWRlciA9IEx3dC50YXNrICgpIGluXG4gICAgICAgIGxldCAoKSA9IGNvbnRleHQgPC0geyBjb250ZXh0IHdpdGggaWQgPSBjb250ZXh0LmlkICsgMSB9IGluXG4gICAgICAgIGxldCBtZXNzYWdlIDogTXBpX21lc3NhZ2Vfai5yZXF1ZXN0IE1waV9tZXNzYWdlX2oubWVzc2FnZSA9XG4gICAgICAgICAgeyBNcGlfbWVzc2FnZV9qLmlkID0gY29udGV4dC5pZDsgTXBpX21lc3NhZ2Vfai5kYXRhID0gcmVxdWVzdCB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBtZXNzYWdlX3RleHQgOiBzdHJpbmcgPVxuICAgICAgICAgIE1waV9tZXNzYWdlX2ouc3RyaW5nX29mX21lc3NhZ2UgTXBpX21lc3NhZ2Vfai53cml0ZV9yZXF1ZXN0IG1lc3NhZ2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gc2VsZiNwb3N0X21lc3NhZ2UgbWVzc2FnZV90ZXh0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgY29udGV4dCA8LVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb250ZXh0IHdpdGhcbiAgICAgICAgICAgICAgbWFpbGJveGVzID0gSW50TWFwLmFkZCBjb250ZXh0LmlkIGZlZWRlciBjb250ZXh0Lm1haWxib3hlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgcmVzdWx0XG4gICAgICApIGVsc2VcbiAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIFwiS2FwcGEgaGFzIGRpZWRcIilcblxuICAgIG1ldGhvZCBwcml2YXRlIHNpbV9pc19jb21wdXRpbmcgPSBub3QgKEludE1hcC5pc19lbXB0eSBjb250ZXh0Lm1haWxib3hlcylcbiAgICBpbmhlcml0IG1hbmFnZXJfYmFzZSAoKVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0ID1cbiAgKCBBcGlfdHlwZXNfdC5wbG90IG9wdGlvbixcbiAgICAoc3RyaW5nICogQXBpX3R5cGVzX3QuZGluKSBsaXN0LFxuICAgIHN0cmluZyBsaXN0IE1vZHMuU3RyaW5nTWFwLnQsXG4gICAgQXBpX3R5cGVzX3Quc25hcHNob3QgTW9kcy5TdHJpbmdNYXAudCxcbiAgICBzdHJpbmcsXG4gICAgc3RyaW5nIClcbiAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRcblxubGV0IGFwaV9zbmFwc2hvdF9kb3QgKHNuYXBzaG90IDogQXBpX3R5cGVzX3Quc25hcHNob3QpID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiIChEYXRhLnByaW50X2RvdF9zbmFwc2hvdCA/dXVpZDpOb25lKSBzbmFwc2hvdFxuXG5sZXQgYXBpX3NuYXBzaG90X2thcHBhIChzbmFwc2hvdCA6IERhdGEuc25hcHNob3QpIDogc3RyaW5nID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiIChEYXRhLnByaW50X3NuYXBzaG90ID91dWlkOk5vbmUpIHNuYXBzaG90XG5cbmxldCBhcGlfc2ltdWxhdGlvbl9zdGF0dXMgKHByb2dyZXNzIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzcylcbiAgICAoZGV0YWlsIDogc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KSA6IEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mbyA9XG4gIGxldCBvdXRwdXQgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm9fb3V0cHV0ID1cbiAgICB7XG4gICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9wbG90ID1cbiAgICAgICAgKG1hdGNoIGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9wbG90IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IDBcbiAgICAgICAgfCBTb21lIHBsb3QgLT4gTGlzdC5sZW5ndGggcGxvdC5EYXRhLnBsb3Rfc2VyaWVzKTtcbiAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2RpbnMgPVxuICAgICAgICBMaXN0Lmxlbmd0aCBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZGlucztcbiAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgPVxuICAgICAgICBNb2RzLlN0cmluZ01hcC5zaXplIGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzO1xuICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzID1cbiAgICAgICAgTW9kcy5TdHJpbmdNYXAuc2l6ZSBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzO1xuICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzID0gKCk7XG4gICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgPVxuICAgICAgICBTdHJpbmcubGVuZ3RoIGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXM7XG4gICAgfVxuICBpblxuICB7XG4gICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzID0gcHJvZ3Jlc3M7XG4gICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvX291dHB1dCA9IG91dHB1dDtcbiAgfVxuXG4oKiByZXR1cm4gdGhlIGFnZW50IGNvdW50ICopXG5sZXQgYWdlbnRfY291bnQgKHNwZWNpZXMgOiBBcGlfdHlwZXNfdC5zaXRlX2dyYXBoKSA6IGludCA9IEFycmF5Lmxlbmd0aCBzcGVjaWVzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgIChGcm9tKSBUaGUgQ2FtbFppcCBsaWJyYXJ5ICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDIwMDEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICopXG4oKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFdyaXRlIHVuZWZmaWNpZW50bHkgYnV0IGluIHB1cmUgT0NhbWwgdW5jb21wcmVzc2VkIFpJUCBhcmNoaXZlcyAqKVxuXG5leGNlcHRpb24gRXJyb3Igb2Ygc3RyaW5nICogc3RyaW5nICogc3RyaW5nXG5cbmxldCB3cml0ZTEgb2MgbiA9IEJpZ2J1ZmZlci5hZGRfY2hhciBvYyAoQ2hhci51bnNhZmVfY2hyIG4pXG5cbmxldCB3cml0ZTIgb2MgbiA9XG4gIHdyaXRlMSBvYyBuO1xuICB3cml0ZTEgb2MgKG4gbHNyIDgpXG5cbmxldCB3cml0ZTQgb2MgbiA9XG4gIHdyaXRlMiBvYyAoSW50MzIudG9faW50IG4pO1xuICB3cml0ZTIgb2MgKEludDMyLnRvX2ludCAoSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCBuIDE2KSlcblxubGV0IHdyaXRlNF9pbnQgb2MgbiA9XG4gIHdyaXRlMiBvYyBuO1xuICB3cml0ZTIgb2MgKG4gbHNyIDE2KVxuXG5sZXQgd3JpdGVzdHJpbmcgb2MgcyA9IEJpZ2J1ZmZlci5hZGRfc3RyaW5nIG9jIHNcblxudHlwZSBjb21wcmVzc2lvbl9tZXRob2QgPSBTdG9yZWRcblxudHlwZSBlbnRyeSA9IHtcbiAgZmlsZW5hbWU6IHN0cmluZztcbiAgZXh0cmE6IHN0cmluZztcbiAgY29tbWVudDogc3RyaW5nO1xuICBtZXRoZDogY29tcHJlc3Npb25fbWV0aG9kO1xuICBtdGltZTogZmxvYXQ7XG4gIGNyYzogaW50MzI7XG4gIHVuY29tcHJlc3NlZF9zaXplOiBpbnQ7XG4gIGNvbXByZXNzZWRfc2l6ZTogaW50O1xuICAoKmlzX2RpcmVjdG9yeTogYm9vbDsqKVxuICBmaWxlX29mZnNldDogaW50MzI7XG59XG5cbnR5cGUgb3V0X2ZpbGUgPSB7XG4gIG9mX2ZpbGVuYW1lOiBzdHJpbmc7XG4gIG9mX2NoYW5uZWw6IEJpZ2J1ZmZlci50O1xuICBtdXRhYmxlIG9mX2VudHJpZXM6IGVudHJ5IGxpc3Q7XG4gIG9mX2NvbW1lbnQ6IHN0cmluZztcbn1cblxuKCpsZXQgZmlsZW5hbWVfaXNfZGlyZWN0b3J5IG5hbWUgPVxuICBTdHJpbmcubGVuZ3RoIG5hbWUgPiAwICYmIG5hbWUuW1N0cmluZy5sZW5ndGggbmFtZSAtIDFdID0gJy8nKilcblxuKCogQ29udmVydCBiZXR3ZWVuIFVuaXggZGF0ZXMgYW5kIERPUyBkYXRlcyAqKVxuXG5sZXQgZG9zdGltZV9vZl91bml4dGltZSB0ID1cbiAgbGV0IHRtID0gVW5peC5sb2NhbHRpbWUgdCBpblxuICAoICh0bS5Vbml4LnRtX3NlYyBsc3IgMSkgKyAodG0uVW5peC50bV9taW4gbHNsIDUpICsgKHRtLlVuaXgudG1faG91ciBsc2wgMTEpLFxuICAgIHRtLlVuaXgudG1fbWRheVxuICAgICsgKCh0bS5Vbml4LnRtX21vbiArIDEpIGxzbCA1KVxuICAgICsgKCh0bS5Vbml4LnRtX3llYXIgLSA4MCkgbHNsIDkpIClcblxuKCogT3BlbiBhIFpJUCBmaWxlIGZvciB3cml0aW5nICopXG5cbmxldCBvcGVuX291dCA/KGNvbW1lbnQgPSBcIlwiKSBmaWxlbmFtZSA9XG4gIGlmIFN0cmluZy5sZW5ndGggY29tbWVudCA+PSAweDEwMDAwIHRoZW5cbiAgICByYWlzZSAoRXJyb3IgKGZpbGVuYW1lLCBcIlwiLCBcImNvbW1lbnQgdG9vIGxvbmdcIikpO1xuICB7XG4gICAgb2ZfZmlsZW5hbWUgPSBmaWxlbmFtZTtcbiAgICBvZl9jaGFubmVsID0gQmlnYnVmZmVyLmNyZWF0ZSA4MTkyO1xuICAgIG9mX2VudHJpZXMgPSBbXTtcbiAgICBvZl9jb21tZW50ID0gY29tbWVudDtcbiAgfVxuXG4oKiBDbG9zZSBhIFpJUCBmaWxlIGZvciB3cml0aW5nLiAgQWRkIGNlbnRyYWwgZGlyZWN0b3J5LiAqKVxuXG5sZXQgd3JpdGVfZGlyZWN0b3J5X2VudHJ5IG9jIGUgPVxuICB3cml0ZTQgb2MgKEludDMyLm9mX2ludCAweDAyMDE0YjUwKTtcbiAgKCogc2lnbmF0dXJlICopXG4gIGxldCB2ZXJzaW9uID1cbiAgICBtYXRjaCBlLm1ldGhkIHdpdGhcbiAgICB8IFN0b3JlZCAtPiAxMFxuICBpblxuICB3cml0ZTIgb2MgdmVyc2lvbjtcbiAgKCogdmVyc2lvbiBtYWRlIGJ5ICopXG4gIHdyaXRlMiBvYyB2ZXJzaW9uO1xuICAoKiB2ZXJzaW9uIG5lZWRlZCB0byBleHRyYWN0ICopXG4gIHdyaXRlMiBvYyA4O1xuICAoKiBmbGFncyAqKVxuICB3cml0ZTIgb2NcbiAgICAobWF0Y2ggZS5tZXRoZCB3aXRoXG4gICAgfCBTdG9yZWQgLT4gMCk7XG4gICgqIG1ldGhvZCAqKVxuICBsZXQgdGltZSwgZGF0ZSA9IGRvc3RpbWVfb2ZfdW5peHRpbWUgZS5tdGltZSBpblxuICB3cml0ZTIgb2MgdGltZTtcbiAgKCogbGFzdCBtb2QgdGltZSAqKVxuICB3cml0ZTIgb2MgZGF0ZTtcbiAgKCogbGFzdCBtb2QgZGF0ZSAqKVxuICB3cml0ZTQgb2MgZS5jcmM7XG4gICgqIENSQzMyICopXG4gIHdyaXRlNF9pbnQgb2MgZS5jb21wcmVzc2VkX3NpemU7XG4gICgqIGNvbXByZXNzZWQgc2l6ZSAqKVxuICB3cml0ZTRfaW50IG9jIGUudW5jb21wcmVzc2VkX3NpemU7XG4gICgqIHVuY29tcHJlc3NlZCBzaXplICopXG4gIHdyaXRlMiBvYyAoU3RyaW5nLmxlbmd0aCBlLmZpbGVuYW1lKTtcbiAgKCogZmlsZW5hbWUgbGVuZ3RoICopXG4gIHdyaXRlMiBvYyAoU3RyaW5nLmxlbmd0aCBlLmV4dHJhKTtcbiAgKCogZXh0cmEgbGVuZ3RoICopXG4gIHdyaXRlMiBvYyAoU3RyaW5nLmxlbmd0aCBlLmNvbW1lbnQpO1xuICAoKiBjb21tZW50IGxlbmd0aCAqKVxuICB3cml0ZTIgb2MgMDtcbiAgKCogZGlzayBudW1iZXIgc3RhcnQgKilcbiAgd3JpdGUyIG9jIDA7XG4gICgqIGludGVybmFsIGF0dHJpYnV0ZXMgKilcbiAgd3JpdGU0X2ludCBvYyAwO1xuICAoKiBleHRlcm5hbCBhdHRyaWJ1dGVzICopXG4gIHdyaXRlNCBvYyBlLmZpbGVfb2Zmc2V0O1xuICAoKiBvZmZzZXQgb2YgbG9jYWwgaGVhZGVyICopXG4gIHdyaXRlc3RyaW5nIG9jIGUuZmlsZW5hbWU7XG4gICgqIGZpbGVuYW1lICopXG4gIHdyaXRlc3RyaW5nIG9jIGUuZXh0cmE7XG4gICgqIGV4dHJhIGluZm8gKilcbiAgd3JpdGVzdHJpbmcgb2MgZS5jb21tZW50ICgqIGZpbGUgY29tbWVudCAqKVxuXG5sZXQgY2xvc2Vfb3V0IG9maWxlID1cbiAgbGV0IG9jID0gb2ZpbGUub2ZfY2hhbm5lbCBpblxuICBsZXQgc3RhcnRfY2QgPSBCaWdidWZmZXIubGVuZ3RoIG9jIGluXG4gIExpc3QuaXRlciAod3JpdGVfZGlyZWN0b3J5X2VudHJ5IG9jKSAoTGlzdC5yZXYgb2ZpbGUub2ZfZW50cmllcyk7XG4gIGxldCBjZF9zaXplID0gQmlnYnVmZmVyLmxlbmd0aCBvYyAtIHN0YXJ0X2NkIGluXG4gIGxldCBudW1fZW50cmllcyA9IExpc3QubGVuZ3RoIG9maWxlLm9mX2VudHJpZXMgaW5cbiAgaWYgbnVtX2VudHJpZXMgPj0gMHgxMDAwMCB0aGVuXG4gICAgcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgXCJcIiwgXCJ0b28gbWFueSBlbnRyaWVzXCIpKTtcbiAgd3JpdGU0IG9jIChJbnQzMi5vZl9pbnQgMHgwNjA1NGI1MCk7XG4gICgqIHNpZ25hdHVyZSAqKVxuICB3cml0ZTIgb2MgMDtcbiAgKCogZGlzayBudW1iZXIgKilcbiAgd3JpdGUyIG9jIDA7XG4gICgqIG51bWJlciBvZiBkaXNrIHdpdGggY2VudHJhbCBkaXIgKilcbiAgd3JpdGUyIG9jIG51bV9lbnRyaWVzO1xuICAoKiAjIGVudHJpZXMgaW4gdGhpcyBkaXNrICopXG4gIHdyaXRlMiBvYyBudW1fZW50cmllcztcbiAgKCogIyBlbnRyaWVzIGluIGNlbnRyYWwgZGlyICopXG4gIHdyaXRlNF9pbnQgb2MgY2Rfc2l6ZTtcbiAgKCogc2l6ZSBvZiBjZW50cmFsIGRpciAqKVxuICB3cml0ZTRfaW50IG9jIHN0YXJ0X2NkO1xuICAoKiBvZmZzZXQgb2YgY2VudHJhbCBkaXIgKilcbiAgd3JpdGUyIG9jIChTdHJpbmcubGVuZ3RoIG9maWxlLm9mX2NvbW1lbnQpO1xuICAoKiBsZW5ndGggb2YgY29tbWVudCAqKVxuICB3cml0ZXN0cmluZyBvYyBvZmlsZS5vZl9jb21tZW50O1xuICAoKiBjb21tZW50ICopXG4gIEJpZ2J1ZmZlci5jb250ZW50cyBvY1xuXG4oKiBXcml0ZSBhIGxvY2FsIGZpbGUgaGVhZGVyIGFuZCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgZW50cnkgKilcblxubGV0IGFkZF9lbnRyeV9oZWFkZXIgb2ZpbGUgZXh0cmEgY29tbWVudCBsZXZlbCBtdGltZSBmaWxlbmFtZSA9XG4gIGlmIGxldmVsIDw+IDAgdGhlblxuICAgIHJhaXNlIChFcnJvciAob2ZpbGUub2ZfZmlsZW5hbWUsIGZpbGVuYW1lLCBcImZha2VfemlwIGNhbm5vdCBjb21wcmVzc1wiKSk7XG4gIGlmIFN0cmluZy5sZW5ndGggZmlsZW5hbWUgPj0gMHgxMDAwMCB0aGVuXG4gICAgcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgZmlsZW5hbWUsIFwiZmlsZW5hbWUgdG9vIGxvbmdcIikpO1xuICBpZiBTdHJpbmcubGVuZ3RoIGV4dHJhID49IDB4MTAwMDAgdGhlblxuICAgIHJhaXNlIChFcnJvciAob2ZpbGUub2ZfZmlsZW5hbWUsIGZpbGVuYW1lLCBcImV4dHJhIGRhdGEgdG9vIGxvbmdcIikpO1xuICBpZiBTdHJpbmcubGVuZ3RoIGNvbW1lbnQgPj0gMHgxMDAwMCB0aGVuXG4gICAgcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgZmlsZW5hbWUsIFwiY29tbWVudCB0b28gbG9uZ1wiKSk7XG4gIGxldCBvYyA9IG9maWxlLm9mX2NoYW5uZWwgaW5cbiAgbGV0IHBvcyA9IEJpZ2J1ZmZlci5sZW5ndGggb2MgaW5cbiAgd3JpdGU0IG9jIChJbnQzMi5vZl9pbnQgMHgwNDAzNGI1MCk7XG4gICgqIHNpZ25hdHVyZSAqKVxuICBsZXQgdmVyc2lvbiA9XG4gICAgaWYgbGV2ZWwgPSAwIHRoZW5cbiAgICAgIDEwXG4gICAgZWxzZVxuICAgICAgMjBcbiAgaW5cbiAgd3JpdGUyIG9jIHZlcnNpb247XG4gICgqIHZlcnNpb24gbmVlZGVkIHRvIGV4dHJhY3QgKilcbiAgd3JpdGUyIG9jIDg7XG4gICgqIGZsYWdzICopXG4gIHdyaXRlMiBvY1xuICAgIChpZiBsZXZlbCA9IDAgdGhlblxuICAgICAgIDBcbiAgICAgZWxzZVxuICAgICAgIDgpO1xuICAoKiBtZXRob2QgKilcbiAgbGV0IHRpbWUsIGRhdGUgPSBkb3N0aW1lX29mX3VuaXh0aW1lIG10aW1lIGluXG4gIHdyaXRlMiBvYyB0aW1lO1xuICAoKiBsYXN0IG1vZCB0aW1lICopXG4gIHdyaXRlMiBvYyBkYXRlO1xuICAoKiBsYXN0IG1vZCBkYXRlICopXG4gIHdyaXRlNCBvYyBJbnQzMi56ZXJvO1xuICAoKiBDUkMzMiAtIHRvIGJlIGZpbGxlZCBsYXRlciAqKVxuICB3cml0ZTRfaW50IG9jIDA7XG4gICgqIGNvbXByZXNzZWQgc2l6ZSAtIGxhdGVyICopXG4gIHdyaXRlNF9pbnQgb2MgMDtcbiAgKCogdW5jb21wcmVzc2VkIHNpemUgLSBsYXRlciAqKVxuICB3cml0ZTIgb2MgKFN0cmluZy5sZW5ndGggZmlsZW5hbWUpO1xuICAoKiBmaWxlbmFtZSBsZW5ndGggKilcbiAgd3JpdGUyIG9jIChTdHJpbmcubGVuZ3RoIGV4dHJhKTtcbiAgKCogZXh0cmEgbGVuZ3RoICopXG4gIHdyaXRlc3RyaW5nIG9jIGZpbGVuYW1lO1xuICAoKiBmaWxlbmFtZSAqKVxuICB3cml0ZXN0cmluZyBvYyBleHRyYTtcbiAgKCogZXh0cmEgaW5mbyAqKVxuICB7XG4gICAgZmlsZW5hbWU7XG4gICAgZXh0cmE7XG4gICAgY29tbWVudDtcbiAgICBtZXRoZCA9IFN0b3JlZDtcbiAgICBtdGltZTtcbiAgICBjcmMgPSBJbnQzMi56ZXJvO1xuICAgIHVuY29tcHJlc3NlZF9zaXplID0gMDtcbiAgICBjb21wcmVzc2VkX3NpemUgPSAwO1xuICAgICgqaXNfZGlyZWN0b3J5ID0gZmlsZW5hbWVfaXNfZGlyZWN0b3J5IGZpbGVuYW1lOyopXG4gICAgZmlsZV9vZmZzZXQgPSBJbnQzMi5vZl9pbnQgcG9zO1xuICB9XG5cbigqIFdyaXRlIGEgZGF0YSBkZXNjcmlwdG9yIGFuZCB1cGRhdGUgdGhlIGVudHJ5ICopXG5cbmxldCBhZGRfZGF0YV9kZXNjcmlwdG9yIG9maWxlIGNyYyBjb21wcl9zaXplIHVuY29tcHJfc2l6ZSBlbnRyeSA9XG4gIGxldCBvYyA9IG9maWxlLm9mX2NoYW5uZWwgaW5cbiAgd3JpdGU0IG9jIChJbnQzMi5vZl9pbnQgMHgwODA3NGI1MCk7XG4gICgqIHNpZ25hdHVyZSAqKVxuICB3cml0ZTQgb2MgY3JjO1xuICAoKiBDUkMgKilcbiAgd3JpdGU0X2ludCBvYyBjb21wcl9zaXplO1xuICAoKiBjb21wcmVzc2VkIHNpemUgKilcbiAgd3JpdGU0X2ludCBvYyB1bmNvbXByX3NpemU7XG4gICgqIHVuY29tcHJlc3NlZCBzaXplICopXG4gIHtcbiAgICBlbnRyeSB3aXRoXG4gICAgY3JjO1xuICAgIHVuY29tcHJlc3NlZF9zaXplID0gdW5jb21wcl9zaXplO1xuICAgIGNvbXByZXNzZWRfc2l6ZSA9IGNvbXByX3NpemU7XG4gIH1cblxubGV0IHVwZGF0ZV9jcmMgY3JjIGJ1ZiBzdGFydCBsZW4gPSBDcmMzMi5zdHJpbmcgfmNyYyBidWYgc3RhcnQgbGVuXG5cbigqIEFkZCBhbiBlbnRyeSB3aXRoIHRoZSBjb250ZW50cyBvZiBhIHN0cmluZyAqKVxuXG5sZXQgYWRkX2VudHJ5IGRhdGEgb2ZpbGUgPyhleHRyYSA9IFwiXCIpID8oY29tbWVudCA9IFwiXCIpID8obGV2ZWwgPSAwKVxuICAgID8obXRpbWUgPSBVbml4LnRpbWUgKCkpIG5hbWUgPVxuICBsZXQgZSA9IGFkZF9lbnRyeV9oZWFkZXIgb2ZpbGUgZXh0cmEgY29tbWVudCBsZXZlbCBtdGltZSBuYW1lIGluXG4gIGxldCBjcmMgPSB1cGRhdGVfY3JjIEludDMyLnplcm8gZGF0YSAwIChTdHJpbmcubGVuZ3RoIGRhdGEpIGluXG4gIGxldCBjb21wcl9zaXplID1cbiAgICBtYXRjaCBsZXZlbCB3aXRoXG4gICAgfCAwIC0+XG4gICAgICBCaWdidWZmZXIuYWRkX3N1YnN0cmluZyBvZmlsZS5vZl9jaGFubmVsIGRhdGEgMCAoU3RyaW5nLmxlbmd0aCBkYXRhKTtcbiAgICAgIFN0cmluZy5sZW5ndGggZGF0YVxuICAgIHwgXyAtPiByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBuYW1lLCBcImNvbXByZXNzaW9uIGVycm9yXCIpKVxuICBpblxuICBsZXQgZScgPSBhZGRfZGF0YV9kZXNjcmlwdG9yIG9maWxlIGNyYyBjb21wcl9zaXplIChTdHJpbmcubGVuZ3RoIGRhdGEpIGUgaW5cbiAgb2ZpbGUub2ZfZW50cmllcyA8LSBlJyA6OiBvZmlsZS5vZl9lbnRyaWVzXG5cbigqXG4oKiBBZGQgYW4gZW50cnkgd2l0aCB0aGUgY29udGVudHMgb2YgYW4gaW4gY2hhbm5lbCAqKVxuXG5sZXQgY29weV9jaGFubmVsX3RvX2VudHJ5IGljIG9maWxlID8oZXh0cmEgPSBcIlwiKSA/KGNvbW1lbnQgPSBcIlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/KGxldmVsID0gMCkgPyhtdGltZSA9IFVuaXgudGltZSgpKSBuYW1lID1cbiAgbGV0IGUgPSBhZGRfZW50cnlfaGVhZGVyIG9maWxlIGV4dHJhIGNvbW1lbnQgbGV2ZWwgbXRpbWUgbmFtZSBpblxuICBsZXQgY3JjID0gcmVmIEludDMyLnplcm8gaW5cbiAgbGV0IChjb21wcl9zaXplLCB1bmNvbXByX3NpemUpID1cbiAgICBtYXRjaCBsZXZlbCB3aXRoXG4gICAgICAwIC0+XG4gICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgNDA5NiBpblxuICAgICAgICBsZXQgcmVjIGNvcHkgc3ogPVxuICAgICAgICAgIGxldCByID0gaW5wdXQgaWMgYnVmIDAgKEJ5dGVzLmxlbmd0aCBidWYpIGluXG4gICAgICAgICAgaWYgciA9IDAgdGhlbiBzeiBlbHNlIGJlZ2luXG4gICAgICAgICAgICBjcmMgOj0gdXBkYXRlX2NyYyAhY3JjIGJ1ZiAwIHI7XG4gICAgICAgICAgICBCaXRCdWZmZXIuYWRkX3N1YnN0cmluZyBvZmlsZS5vZl9jaGFubmVsIGJ1ZiAwIHI7XG4gICAgICAgICAgICBjb3B5IChzeiArIHIpXG4gICAgICAgICAgZW5kIGluXG4gICAgICAgIGxldCBzaXplID0gY29weSAwIGluXG4gICAgICAgIChzaXplLCBzaXplKVxuICAgIHwgXyAtPiByYWlzZSAoRXJyb3Iob2ZpbGUub2ZfZmlsZW5hbWUsIG5hbWUsIFwiY29tcHJlc3Npb24gZXJyb3JcIikpIGluXG4gIGxldCBlJyA9IGFkZF9kYXRhX2Rlc2NyaXB0b3Igb2ZpbGUgIWNyYyBjb21wcl9zaXplIHVuY29tcHJfc2l6ZSBlIGluXG4gIG9maWxlLm9mX2VudHJpZXMgPC0gZScgOjogb2ZpbGUub2ZfZW50cmllc1xuXG4oKiBBZGQgYW4gZW50cnkgd2l0aCB0aGUgY29udGVudHMgb2YgYSBmaWxlICopXG5cbmxldCBjb3B5X2ZpbGVfdG9fZW50cnkgaW5maWxlbmFtZSBvZmlsZSA/KGV4dHJhID0gXCJcIikgPyhjb21tZW50ID0gXCJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/KGxldmVsID0gMCkgP210aW1lIG5hbWUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBpbmZpbGVuYW1lIGluXG4gIGxldCBtdGltZScgPVxuICAgIG1hdGNoIG10aW1lIHdpdGhcbiAgICAgIFNvbWUgdCAtPiBtdGltZVxuICAgIHwgTm9uZSAtPlxuICAgICAgICB0cnkgU29tZSgoVW5peC5zdGF0IGluZmlsZW5hbWUpLlVuaXguc3RfbXRpbWUpXG4gICAgICAgIHdpdGggVW5peC5Vbml4X2Vycm9yKF8sXyxfKSAtPiBOb25lIGluXG4gIHRyeVxuICAgIGNvcHlfY2hhbm5lbF90b19lbnRyeSBpYyBvZmlsZSB+ZXh0cmEgfmNvbW1lbnQgfmxldmVsID9tdGltZTptdGltZScgbmFtZTtcbiAgICBQZXJ2YXNpdmVzLmNsb3NlX2luIGljXG4gIHdpdGggeCAtPlxuICAgIFBlcnZhc2l2ZXMuY2xvc2VfaW4gaWM7IHJhaXNlIHhcbiopXG5cbigqIEFkZCBhbiBlbnRyeSB3aG9zZSBjb250ZW50IHdpbGwgYmUgcHJvZHVjZWQgYnkgdGhlIGNhbGxlciAqKVxuXG5sZXQgYWRkX2VudHJ5X2dlbmVyYXRvciBvZmlsZSA/KGV4dHJhID0gXCJcIikgPyhjb21tZW50ID0gXCJcIikgPyhsZXZlbCA9IDApXG4gICAgPyhtdGltZSA9IFVuaXgudGltZSAoKSkgbmFtZSA9XG4gIGxldCBlID0gYWRkX2VudHJ5X2hlYWRlciBvZmlsZSBleHRyYSBjb21tZW50IGxldmVsIG10aW1lIG5hbWUgaW5cbiAgbGV0IGNyYyA9IHJlZiBJbnQzMi56ZXJvIGluXG4gIGxldCBjb21wcl9zaXplID0gcmVmIDAgaW5cbiAgbGV0IHVuY29tcHJfc2l6ZSA9IHJlZiAwIGluXG4gIGxldCBmaW5pc2hlZCA9IHJlZiBmYWxzZSBpblxuICBsZXQgY2hlY2sgKCkgPVxuICAgIGlmICFmaW5pc2hlZCB0aGVuXG4gICAgICByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBuYW1lLCBcImVudHJ5IGFscmVhZHkgZmluaXNoZWRcIikpXG4gIGluXG4gIGxldCBmaW5pc2ggKCkgPVxuICAgIGZpbmlzaGVkIDo9IHRydWU7XG4gICAgbGV0IGUnID0gYWRkX2RhdGFfZGVzY3JpcHRvciBvZmlsZSAhY3JjICFjb21wcl9zaXplICF1bmNvbXByX3NpemUgZSBpblxuICAgIG9maWxlLm9mX2VudHJpZXMgPC0gZScgOjogb2ZpbGUub2ZfZW50cmllc1xuICBpblxuICBtYXRjaCBsZXZlbCB3aXRoXG4gIHwgMCAtPlxuICAgICggKGZ1biBidWYgcG9zIGxlbiAtPlxuICAgICAgICBjaGVjayAoKTtcbiAgICAgICAgQmlnYnVmZmVyLmFkZF9zdWJieXRlcyBvZmlsZS5vZl9jaGFubmVsIGJ1ZiBwb3MgbGVuO1xuICAgICAgICBjb21wcl9zaXplIDo9ICFjb21wcl9zaXplICsgbGVuO1xuICAgICAgICB1bmNvbXByX3NpemUgOj0gIXVuY29tcHJfc2l6ZSArIGxlbiksXG4gICAgICBmdW4gKCkgLT5cbiAgICAgICAgY2hlY2sgKCk7XG4gICAgICAgIGZpbmlzaCAoKSApXG4gIHwgXyAtPiByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBuYW1lLCBcImNvbXByZXNzaW9uIGVycm9yXCIpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuKCogRXJyb3IgbWVzc2FnZXMgKilcblxuKCoqIEludGVyZmFjZSB0byBrYXBwYSBydW50aW1lICopXG5sZXQgbXNnX3Byb2Nlc3Nfbm90X3BhdXNlZCA9IFwicHJvY2VzcyBub3QgcGF1c2VkXCJcblxuKCoqICBTeXN0ZW0gcHJvY2Vzc1xuXG4gICAgIFRoZXNlIGFyZSBzeXN0ZW0gcHJvY2VzcyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHRoYXRcbiAgICAgdmFyeS5cbiopXG5jbGFzcyB0eXBlIHN5c3RlbV9wcm9jZXNzID0gb2JqZWN0XG4gIG1ldGhvZCBsb2cgOiA/ZXhuOmV4biAtPiBzdHJpbmcgLT4gdW5pdCBMd3QudFxuICBtZXRob2QgeWllbGQgOiB1bml0IC0+IHVuaXQgTHd0LnRcbiAgbWV0aG9kIG1pbl9ydW5fZHVyYXRpb24gOiB1bml0IC0+IGZsb2F0XG5lbmRcblxuKCoqIFRyaXZpYWwgaW1wbGVtZW50YXRpb24gcHJpbWFyaWx5IGZvciB1bml0IHRlc3RpbmcuICopXG5jbGFzcyBudWxsX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2VzcyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBsb2cgP2V4biAoXyA6IHN0cmluZykgPVxuICAgICAgbGV0ICgpID0gaWdub3JlIGV4biBpblxuICAgICAgTHd0LnJldHVybl91bml0XG5cbiAgICBtZXRob2QgeWllbGQgKCkgPSBMd3QucmV0dXJuX3VuaXRcbiAgICBtZXRob2QgbWluX3J1bl9kdXJhdGlvbiAoKSA9IDAuMFxuICBlbmRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIGlzX3J1bm5pbmc6IGJvb2w7XG4gIG11dGFibGUgcnVuX2ZpbmFsaXplOiBib29sO1xuICBtdXRhYmxlIHBhdXNlX2NvbmRpdGlvbjogKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5ib29sO1xuICBkdW1wSWZEZWFkbG9ja2VkOiBib29sO1xuICBtYXhDb25zZWN1dGl2ZUNsYXNoOiBpbnQ7XG4gIHBhdHRlcm5TaGFyaW5nOiBQYXR0ZXJuLnNoYXJpbmdfbGV2ZWw7XG4gIGNvdW50ZXI6IENvdW50ZXIudDtcbiAgbG9nX2J1ZmZlcjogQnVmZmVyLnQ7XG4gIGxvZ19mb3JtOiBGb3JtYXQuZm9ybWF0dGVyO1xuICBtdXRhYmxlIHBsb3Q6IERhdGEucGxvdDtcbiAgbXV0YWJsZSBzbmFwc2hvdHM6IERhdGEuc25hcHNob3QgTW9kcy5TdHJpbmdNYXAudDtcbiAgbXV0YWJsZSBkaW5zOiAoc3RyaW5nICogRGF0YS5kaW4pIGxpc3Q7XG4gIG11dGFibGUgc3BlY2llczpcbiAgICAoZmxvYXQgKiBVc2VyX2dyYXBoLmNvbm5lY3RlZF9jb21wb25lbnQpIGxpc3QgTW9kcy5TdHJpbmdNYXAudDtcbiAgbXV0YWJsZSBmaWxlczogc3RyaW5nIGxpc3QgTW9kcy5TdHJpbmdNYXAudDtcbiAgbXV0YWJsZSBlcnJvcl9tZXNzYWdlczogUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0O1xuICAoKm11dGFibGUqKSB0cmFjZTogQnVmZmVyLnQ7XG4gIGlucHV0c19idWZmZXI6IEJ1ZmZlci50O1xuICBpbnB1dHNfZm9ybTogRm9ybWF0LmZvcm1hdHRlcjtcbiAgYXN0OiBBc3QucGFyc2luZ19jb21waWw7XG4gIGNvbnRhY3RfbWFwOiBDb250YWN0X21hcC50O1xuICBtdXRhYmxlIGVudjogTW9kZWwudDtcbiAgbXV0YWJsZSBncmFwaDogUnVsZV9pbnRlcnByZXRlci50O1xuICBtdXRhYmxlIHN0YXRlOiBTdGF0ZV9pbnRlcnByZXRlci50O1xuICBpbml0X2w6IChQcmltaXRpdmVzLmFsZ19leHByICogUHJpbWl0aXZlcy5lbGVtZW50YXJ5X3J1bGUpIGxpc3Q7XG4gIG11dGFibGUgbGFzdHlpZWxkOiBmbG9hdDtcbn1cbigqKiBTdGF0ZSBvZiB0aGUgcnVubmluZyBzaW11bGF0aW9uLiAqKVxuXG5sZXQgY3JlYXRlX3QgfmxvZ19mb3JtIH5sb2dfYnVmZmVyIH5jb250YWN0X21hcCB+aW5wdXRzX2J1ZmZlciB+aW5wdXRzX2Zvcm1cbiAgICB+ZHVtcElmRGVhZGxvY2tlZCB+bWF4Q29uc2VjdXRpdmVDbGFzaCB+cGF0dGVyblNoYXJpbmcgfmVudiB+Y291bnRlciB+Z3JhcGhcbiAgICB+c3RhdGUgfmluaXRfbCB+bGFzdHlpZWxkIH5hc3QgOiB0ID1cbiAge1xuICAgIGlzX3J1bm5pbmcgPSBmYWxzZTtcbiAgICBydW5fZmluYWxpemUgPSBmYWxzZTtcbiAgICBjb3VudGVyO1xuICAgIGxvZ19idWZmZXI7XG4gICAgbG9nX2Zvcm07XG4gICAgcGF1c2VfY29uZGl0aW9uID0gQWxnX2V4cHIuRkFMU0U7XG4gICAgZHVtcElmRGVhZGxvY2tlZDtcbiAgICBtYXhDb25zZWN1dGl2ZUNsYXNoO1xuICAgIHBhdHRlcm5TaGFyaW5nO1xuICAgIHBsb3QgPSBEYXRhLmluaXRfcGxvdCBlbnY7XG4gICAgc25hcHNob3RzID0gTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gICAgZGlucyA9IFtdO1xuICAgIHNwZWNpZXMgPSBNb2RzLlN0cmluZ01hcC5lbXB0eTtcbiAgICBmaWxlcyA9IE1vZHMuU3RyaW5nTWFwLmVtcHR5O1xuICAgIGVycm9yX21lc3NhZ2VzID0gW107XG4gICAgdHJhY2UgPSBCdWZmZXIuY3JlYXRlIDEwMjQ7XG4gICAgaW5wdXRzX2J1ZmZlcjtcbiAgICBpbnB1dHNfZm9ybTtcbiAgICBhc3Q7XG4gICAgY29udGFjdF9tYXA7XG4gICAgZW52O1xuICAgIGdyYXBoO1xuICAgIHN0YXRlO1xuICAgIGluaXRfbDtcbiAgICBsYXN0eWllbGQ7XG4gIH1cblxubGV0IHJlaW5pdGlhbGl6ZSB+b3V0cHV0cyByYW5kb21fc3RhdGUgdCA9XG4gIGxldCAoKSA9IENvdW50ZXIucmVpbml0aWFsaXplIHQuY291bnRlciBpblxuICAoKiBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfZmx1c2ggdC5sb2dfZm9ybSAoKSBpblxuICAgICBsZXQgKCkgPSBCdWZmZXIucmVzZXQgdC5sb2dfYnVmZmVyIGluKilcbiAgdC5pc19ydW5uaW5nIDwtIGZhbHNlO1xuICB0LnJ1bl9maW5hbGl6ZSA8LSBmYWxzZTtcbiAgdC5wYXVzZV9jb25kaXRpb24gPC0gQWxnX2V4cHIuRkFMU0U7XG4gIHQucGxvdCA8LSBEYXRhLmluaXRfcGxvdCB0LmVudjtcbiAgdC5zbmFwc2hvdHMgPC0gTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gIHQuZGlucyA8LSBbXTtcbiAgdC5maWxlcyA8LSBNb2RzLlN0cmluZ01hcC5lbXB0eTtcbiAgdC5lcnJvcl9tZXNzYWdlcyA8LSBbXTtcbiAgdC5ncmFwaCA8LVxuICAgIFJ1bGVfaW50ZXJwcmV0ZXIuZW1wdHkgfm91dHB1dHMgfndpdGhfdHJhY2U6ZmFsc2UgcmFuZG9tX3N0YXRlIHQuZW52XG4gICAgICB0LmNvdW50ZXI7XG4gIHQuc3RhdGUgPC1cbiAgICBTdGF0ZV9pbnRlcnByZXRlci5lbXB0eSB+d2l0aF9kZWx0YV9hY3Rpdml0aWVzOmZhbHNlIHQuY291bnRlciB0LmVudlxuXG5sZXQgY2F0Y2hfZXJyb3IgaGFuZGxlciA9IGZ1bmN0aW9uXG4gIHwgRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKChtZXNzYWdlLCByYW5nZSkgOiBzdHJpbmcgTG9jLmFubm90ZWQpIC0+XG4gICAgaGFuZGxlciAoQXBpX2NvbW1vbi5lcnJvcl9tc2cgfnJhbmdlIG1lc3NhZ2UpXG4gIHwgRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAoKG1lc3NhZ2UsIHJhbmdlKSA6IHN0cmluZyBMb2MuYW5ub3RlZCkgLT5cbiAgICBoYW5kbGVyIChBcGlfY29tbW9uLmVycm9yX21zZyB+cmFuZ2UgbWVzc2FnZSlcbiAgfCBFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yICgobWVzc2FnZSwgcmFuZ2UpIDogc3RyaW5nIExvYy5hbm5vdGVkKSAtPlxuICAgIGhhbmRsZXIgKEFwaV9jb21tb24uZXJyb3JfbXNnIH5yYW5nZSBtZXNzYWdlKVxuICB8IEludmFsaWRfYXJndW1lbnQgZXJyb3IgLT5cbiAgICBoYW5kbGVyIChBcGlfY29tbW9uLmVycm9yX21zZyAoXCJSdW50aW1lIGVycm9yIFwiIF4gZXJyb3IpKVxuICB8IGV4biAtPlxuICAgIGxldCBtZXNzYWdlID1cbiAgICAgIHRyeSBQcmludGV4Yy50b19zdHJpbmcgZXhuIHdpdGggXyAtPiBcInVuc3BlY2lmaWVkIGV4Y2VwdGlvbiB0aHJvd25cIlxuICAgIGluXG4gICAgaGFuZGxlciAoQXBpX2NvbW1vbi5lcnJvcl9tc2cgbWVzc2FnZSlcblxubGV0IHBhcnNlIH5wYXR0ZXJuU2hhcmluZyAoYXN0IDogQXN0LnBhcnNpbmdfY29tcGlsKSB2YXJfb3ZlcndyaXRlXG4gICAgc3lzdGVtX3Byb2Nlc3MgPVxuICBsZXQgeWllbGQgPSBzeXN0ZW1fcHJvY2VzcyN5aWVsZCBpblxuICBsZXQgbG9nX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgNTEyIGluXG4gIGxldCBsb2dfZm9ybSA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGxvZ19idWZmZXIgaW5cbiAgbGV0IGlucHV0c19idWZmZXIgPSBCdWZmZXIuY3JlYXRlIDUxMiBpblxuICBsZXQgaW5wdXRzX2Zvcm0gPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBpbnB1dHNfYnVmZmVyIGluXG4gIGxldCBjb25mLCBfLCBfLCBfID0gQ29uZmlndXJhdGlvbi5wYXJzZSBhc3QuQXN0LmNvbmZpZ3VyYXRpb25zIGluXG4gIGxldCB3YXJuaW5nIH5wb3MgbXNnID0gRGF0YS5wcmludF93YXJuaW5nIH5wb3MgbG9nX2Zvcm0gbXNnIGluXG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIEx3dC53cmFwMlxuICAgICAgICAoZnVuIHZhcl9vdmVyd3JpdGUgLT5cbiAgICAgICAgICBMS2FwcGFfY29tcGlsZXIuY29tcGlsX29mX2FzdCB+d2FybmluZyB+ZGVidWdfbW9kZTpmYWxzZVxuICAgICAgICAgICAgfnN5bnRheF92ZXJzaW9uOkFzdC5WNCB+dmFyX292ZXJ3cml0ZSlcbiAgICAgICAgdmFyX292ZXJ3cml0ZSBhc3RcbiAgICAgID4+PSBmdW4gKGFzdF9jb21waWxlZF9kYXRhIDogTEthcHBhX2NvbXBpbGVyLmFzdF9jb21waWxlZF9kYXRhKSAtPlxuICAgICAgeWllbGQgKCkgPj49IGZ1biAoKSAtPlxuICAgICAgKCogVGhlIGxhc3QgeWllbGQgaXMgdXBkYXRlZCBhZnRlciB0aGUgbGFzdCB5aWVsZC5cbiAgICAgICAgIEl0IGlzIGdvdHRlbiBoZXJlIGZvciB0aGUgaW5pdGlhbCBsYXN0IHllaWxkIHZhbHVlLiAqKVxuICAgICAgbGV0IGxhc3R5aWVsZCA9IFN5cy50aW1lICgpIGluXG4gICAgICB0cnlcbiAgICAgICAgKCogZXhjZXB0aW9uIHJhaXNlZCBieSBjb21waWxlIG11c3QgaGF2ZSB1c2VkIEx3dC5mYWlsLlxuICAgICAgICAgICBTb21ldGhpbmcgaXMgd3JvbmcgZm9yIG5vdyAqKVxuICAgICAgICBsZXQgb3V0cHV0cyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBEYXRhLkxvZyBzIC0+IEZvcm1hdC5mcHJpbnRmIGxvZ19mb3JtIFwiJXNALlwiIHNcbiAgICAgICAgICB8IERhdGEuV2FybmluZyAocG9zLCBtc2cpIC0+IERhdGEucHJpbnRfd2FybmluZyA/cG9zIGxvZ19mb3JtIG1zZ1xuICAgICAgICAgIHwgRGF0YS5TbmFwc2hvdCBfIHwgRGF0YS5ESU4gXyB8IERhdGEuU3BlY2llcyBfXG4gICAgICAgICAgfCBEYXRhLkRlbHRhQWN0aXZpdGllcyBfIHwgRGF0YS5QbG90IF8gfCBEYXRhLlRyYWNlU3RlcCBfXG4gICAgICAgICAgfCBEYXRhLlByaW50IF8gLT5cbiAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBFdmFsLmNvbXBpbGUgfmRlYnVnX21vZGU6ZmFsc2VcbiAgICAgICAgICB+cGF1c2U6KGZ1biBmIC0+IEx3dC5iaW5kICh5aWVsZCAoKSkgZilcbiAgICAgICAgICB+cmV0dXJuOkx3dC5yZXR1cm4gP3Jlc2NhbGVfaW5pdDpOb25lID9vdmVyd3JpdGVfdDA6Tm9uZVxuICAgICAgICAgIH5jb21waWxlX21vZGVfb246ZmFsc2Ugfm91dHB1dHMgfnNoYXJpbmc6cGF0dGVyblNoYXJpbmdcbiAgICAgICAgICBhc3RfY29tcGlsZWRfZGF0YS5hZ2VudHNfc2lnIGFzdF9jb21waWxlZF9kYXRhLnRva2VuX25hbWVzXG4gICAgICAgICAgYXN0X2NvbXBpbGVkX2RhdGEuY29udGFjdF9tYXAgYXN0X2NvbXBpbGVkX2RhdGEucmVzdWx0XG4gICAgICAgID4+PSBmdW4gKGVudiwgd2l0aF90cmFjZSwgaW5pdF9sKSAtPlxuICAgICAgICBsZXQgY291bnRlciA9XG4gICAgICAgICAgQ291bnRlci5jcmVhdGVcbiAgICAgICAgICAgIH5pbml0X3Q6KDAuIDogZmxvYXQpXG4gICAgICAgICAgICB+aW5pdF9lOigwIDogaW50KVxuICAgICAgICAgICAgP21heF90aW1lOk5vbmUgP21heF9ldmVudDpOb25lIH5wbG90X3BlcmlvZDooQ29uZmlndXJhdGlvbi5EVCAxLilcbiAgICAgICAgICAgIH5uYl9ydWxlczooTW9kZWwubmJfcnVsZXMgZW52KSAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgdGhlU2VlZCA9XG4gICAgICAgICAgbWF0Y2ggY29uZi5Db25maWd1cmF0aW9uLnNlZWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUmFuZG9tLnNlbGZfaW5pdCAoKSBpblxuICAgICAgICAgICAgbGV0IG91dCA9IFJhbmRvbS5iaXRzICgpIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dfZm9ybSBcIlJhbmRvbSBzZWVkIHVzZWQ6ICVpQC5cIiBvdXQgaW5cbiAgICAgICAgICAgIG91dFxuICAgICAgICAgIHwgU29tZSB0aGVTZWVkIC0+IHRoZVNlZWRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5tYWtlIFt8IHRoZVNlZWQgfF0gaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBEYXRhLnByaW50X2luaXRpYWxfaW5wdXRzID91dWlkOk5vbmVcbiAgICAgICAgICAgIHsgY29uZiB3aXRoIENvbmZpZ3VyYXRpb24uc2VlZCA9IFNvbWUgdGhlU2VlZCB9XG4gICAgICAgICAgICBlbnYgaW5wdXRzX2Zvcm0gaW5pdF9sXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzaW11bGF0aW9uID1cbiAgICAgICAgICBjcmVhdGVfdCB+Y29udGFjdF9tYXA6YXN0X2NvbXBpbGVkX2RhdGEuY29udGFjdF9tYXAgfmxvZ19mb3JtXG4gICAgICAgICAgICB+bG9nX2J1ZmZlciB+aW5wdXRzX2J1ZmZlciB+aW5wdXRzX2Zvcm0gfmFzdCB+ZW52IH5jb3VudGVyXG4gICAgICAgICAgICB+ZHVtcElmRGVhZGxvY2tlZDpjb25mLkNvbmZpZ3VyYXRpb24uZHVtcElmRGVhZGxvY2tlZFxuICAgICAgICAgICAgfm1heENvbnNlY3V0aXZlQ2xhc2g6Y29uZi5Db25maWd1cmF0aW9uLm1heENvbnNlY3V0aXZlQ2xhc2hcbiAgICAgICAgICAgIH5wYXR0ZXJuU2hhcmluZ1xuICAgICAgICAgICAgfmdyYXBoOlxuICAgICAgICAgICAgICAoUnVsZV9pbnRlcnByZXRlci5lbXB0eSB+b3V0cHV0cyB+d2l0aF90cmFjZSByYW5kb21fc3RhdGUgZW52XG4gICAgICAgICAgICAgICAgIGNvdW50ZXIpXG4gICAgICAgICAgICB+c3RhdGU6XG4gICAgICAgICAgICAgIChTdGF0ZV9pbnRlcnByZXRlci5lbXB0eSB+d2l0aF9kZWx0YV9hY3Rpdml0aWVzOmZhbHNlIGNvdW50ZXIgZW52KVxuICAgICAgICAgICAgfmluaXRfbCB+bGFzdHlpZWxkXG4gICAgICAgIGluXG4gICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHNpbXVsYXRpb24pXG4gICAgICB3aXRoIGUgLT5cbiAgICAgICAgKGNhdGNoX2Vycm9yIChmdW4geCAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBbIHggXSkpKSBlKVxuICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyBlIF0pKSlcblxubGV0IG91dHB1dHMgKHNpbXVsYXRpb24gOiB0KSA9IGZ1bmN0aW9uXG4gIHwgRGF0YS5ESU4gKGZsdXhfbmFtZSwgZmx1eF9tYXApIC0+XG4gICAgc2ltdWxhdGlvbi5kaW5zIDwtIChmbHV4X25hbWUsIGZsdXhfbWFwKSA6OiBzaW11bGF0aW9uLmRpbnNcbiAgfCBEYXRhLkRlbHRhQWN0aXZpdGllcyBfIC0+IGFzc2VydCBmYWxzZVxuICB8IERhdGEuUGxvdCBuZXdfb2JzZXJ2YWJsZXMgLT5cbiAgICBzaW11bGF0aW9uLnBsb3QgPC0gRGF0YS5hZGRfcGxvdF9saW5lIG5ld19vYnNlcnZhYmxlcyBzaW11bGF0aW9uLnBsb3RcbiAgfCBEYXRhLlNwZWNpZXMgKGZpbGUsIHRpbWUsIG1peCkgLT5cbiAgICBsZXQgcCA9IE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBbXSBmaWxlIHNpbXVsYXRpb24uc3BlY2llcyBpblxuICAgIHNpbXVsYXRpb24uc3BlY2llcyA8LVxuICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkIGZpbGUgKCh0aW1lLCBtaXgpIDo6IHApIHNpbXVsYXRpb24uc3BlY2llc1xuICB8IERhdGEuUHJpbnQgZmlsZV9saW5lIC0+XG4gICAgKG1hdGNoIGZpbGVfbGluZS5EYXRhLmZpbGVfbGluZV9uYW1lIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHNpbXVsYXRpb24ubG9nX2Zvcm0gXCIlc0AuXCIgZmlsZV9saW5lLkRhdGEuZmlsZV9saW5lX3RleHRcbiAgICB8IFNvbWUgbmEgLT5cbiAgICAgIGxldCBsaW5lcyA9IE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBbXSBuYSBzaW11bGF0aW9uLmZpbGVzIGluXG4gICAgICBzaW11bGF0aW9uLmZpbGVzIDwtXG4gICAgICAgIE1vZHMuU3RyaW5nTWFwLmFkZCBuYVxuICAgICAgICAgIChmaWxlX2xpbmUuRGF0YS5maWxlX2xpbmVfdGV4dCA6OiBsaW5lcylcbiAgICAgICAgICBzaW11bGF0aW9uLmZpbGVzKVxuICB8IERhdGEuU25hcHNob3QgKGZpbGVuYW1lLCBzbmFwc2hvdCkgLT5cbiAgICBsZXQgYWxyZWFkeV90aGVyZSB4ID0gTW9kcy5TdHJpbmdNYXAubWVtIHggc2ltdWxhdGlvbi5zbmFwc2hvdHMgaW5cbiAgICBsZXQgc25hcHNob3RfZmlsZSA9XG4gICAgICBUb29scy5maW5kX2F2YWlsYWJsZV9uYW1lIH5hbHJlYWR5X3RoZXJlIGZpbGVuYW1lXG4gICAgICAgIH5mYWN1bHRhdGl2ZTooc3RyaW5nX29mX2ludCBzbmFwc2hvdC5EYXRhLnNuYXBzaG90X2V2ZW50KVxuICAgICAgICB+ZXh0Ok5vbmVcbiAgICBpblxuICAgIHNpbXVsYXRpb24uc25hcHNob3RzIDwtXG4gICAgICBNb2RzLlN0cmluZ01hcC5hZGQgc25hcHNob3RfZmlsZSBzbmFwc2hvdCBzaW11bGF0aW9uLnNuYXBzaG90c1xuICB8IERhdGEuTG9nIHMgLT4gRm9ybWF0LmZwcmludGYgc2ltdWxhdGlvbi5sb2dfZm9ybSBcIiVzQC5cIiBzXG4gIHwgRGF0YS5XYXJuaW5nIChwb3MsIG1zZykgLT4gRGF0YS5wcmludF93YXJuaW5nID9wb3Mgc2ltdWxhdGlvbi5sb2dfZm9ybSBtc2dcbiAgfCBEYXRhLlRyYWNlU3RlcCBzdCAtPlxuICAgIGlmIEJ1ZmZlci5sZW5ndGggc2ltdWxhdGlvbi50cmFjZSA8PiAwIHRoZW4gKFxuICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIHNpbXVsYXRpb24udHJhY2UgJywnIGluXG4gICAgICBUcmFjZS53cml0ZV9zdGVwIHNpbXVsYXRpb24udHJhY2Ugc3RcbiAgICApXG5cbmxldCBpbnRlcmFjdGl2ZV9vdXRwdXRzIGZvcm1hdHRlciB0ID0gZnVuY3Rpb25cbiAgfCBEYXRhLkxvZyBzIC0+IEZvcm1hdC5mcHJpbnRmIGZvcm1hdHRlciBcIiVzQC5cIiBzXG4gIHwgRGF0YS5XYXJuaW5nIChwb3MsIG1zZykgLT4gRGF0YS5wcmludF93YXJuaW5nID9wb3MgZm9ybWF0dGVyIG1zZ1xuICB8IERhdGEuUHJpbnQgZmlsZV9saW5lIHdoZW4gZmlsZV9saW5lLkRhdGEuZmlsZV9saW5lX25hbWUgPSBOb25lIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm9ybWF0dGVyIFwiJXNALlwiIGZpbGVfbGluZS5EYXRhLmZpbGVfbGluZV90ZXh0XG4gIHwgKCBEYXRhLkRJTiBfIHwgRGF0YS5EZWx0YUFjdGl2aXRpZXMgXyB8IERhdGEuUGxvdCBfIHwgRGF0YS5TcGVjaWVzIF9cbiAgICB8IERhdGEuUHJpbnQgXyB8IERhdGEuU25hcHNob3QgXyB8IERhdGEuVHJhY2VTdGVwIF8gKSBhcyB2IC0+XG4gICAgb3V0cHV0cyB0IHZcblxubGV0IHRpbWVfeWllbGQgfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKSB+KHQgOiB0KSA6IHVuaXQgTHd0LnQgPVxuICBsZXQgdGltZSA9IFN5cy50aW1lICgpIGluXG4gIGlmIHRpbWUgLS4gdC5sYXN0eWllbGQgPiBzeXN0ZW1fcHJvY2VzcyNtaW5fcnVuX2R1cmF0aW9uICgpIHRoZW4gKFxuICAgIGxldCAoKSA9IHQubGFzdHlpZWxkIDwtIHRpbWUgaW5cbiAgICBzeXN0ZW1fcHJvY2VzcyN5aWVsZCAoKVxuICApIGVsc2VcbiAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IGZpbmFsaXplX3NpbXVsYXRpb24gfih0IDogdCkgOiB1bml0ID1cbiAgU3RhdGVfaW50ZXJwcmV0ZXIuZW5kX29mX3NpbXVsYXRpb24gfm91dHB1dHM6KG91dHB1dHMgdCkgdC5lbnYgdC5jb3VudGVyXG4gICAgdC5ncmFwaCB0LnN0YXRlXG5cbmxldCBydW5fc2ltdWxhdGlvbiB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpIHN0b3BwZWQgOlxuICAgIHVuaXQgTHd0LnQgPVxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBsZXQgcnN0b3AgPSByZWYgc3RvcHBlZCBpblxuICAgICAgbGV0ICgpID0gdC5pc19ydW5uaW5nIDwtIHRydWUgaW5cbiAgICAgIGxldCByZWMgaXRlciAoKSA9XG4gICAgICAgICh0cnlcbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICB3aGlsZVxuICAgICAgICAgICAgICAgKG5vdCAhcnN0b3ApXG4gICAgICAgICAgICAgICAmJiBTeXMudGltZSAoKSAtLiB0Lmxhc3R5aWVsZFxuICAgICAgICAgICAgICAgICAgPCBzeXN0ZW1fcHJvY2VzcyNtaW5fcnVuX2R1cmF0aW9uICgpXG4gICAgICAgICAgICAgZG9cbiAgICAgICAgICAgICAgIGxldCBzdG9wLCBncmFwaCcsIHN0YXRlJyA9XG4gICAgICAgICAgICAgICAgIFN0YXRlX2ludGVycHJldGVyLmFfbG9vcCB+ZGVidWdfbW9kZTpmYWxzZSB+b3V0cHV0czoob3V0cHV0cyB0KVxuICAgICAgICAgICAgICAgICAgIH5kdW1wSWZEZWFkbG9ja2VkOnQuZHVtcElmRGVhZGxvY2tlZFxuICAgICAgICAgICAgICAgICAgIH5tYXhDb25zZWN1dGl2ZUNsYXNoOnQubWF4Q29uc2VjdXRpdmVDbGFzaCB0LmVudiB0LmNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICB0LmdyYXBoIHQuc3RhdGVcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICByc3RvcCA6PVxuICAgICAgICAgICAgICAgICBzdG9wXG4gICAgICAgICAgICAgICAgIHx8IFJ1bGVfaW50ZXJwcmV0ZXIudmFsdWVfYm9vbCB0LmNvdW50ZXIgZ3JhcGgnXG4gICAgICAgICAgICAgICAgICAgICAgdC5wYXVzZV9jb25kaXRpb247XG4gICAgICAgICAgICAgICB0LmdyYXBoIDwtIGdyYXBoJztcbiAgICAgICAgICAgICAgIHQuc3RhdGUgPC0gc3RhdGUnXG4gICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICBpblxuICAgICAgICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICAgICAgIHdpdGggZSAtPiBMd3QuZmFpbCBlKVxuICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgIGlmICFyc3RvcCB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPSB0LmlzX3J1bm5pbmcgPC0gZmFsc2UgaW5cbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICAgICAgKSBlbHNlIGlmIHQuaXNfcnVubmluZyB0aGVuXG4gICAgICAgICAgc3lzdGVtX3Byb2Nlc3MjeWllbGQgKCkgPj49IGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAoKSA9IHQubGFzdHlpZWxkIDwtIFN5cy50aW1lICgpIGluXG4gICAgICAgICAgaXRlciAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTHd0LnJldHVybl91bml0XG4gICAgICBpblxuICAgICAgaXRlciAoKSA+Pj0gZnVuICgpIC0+XG4gICAgICBsZXQgKCkgPSBpZiB0LnJ1bl9maW5hbGl6ZSB0aGVuIGZpbmFsaXplX3NpbXVsYXRpb24gfnQgaW5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdClcbiAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+XG4gICAgICAgICBsZXQgKCkgPSB0LmlzX3J1bm5pbmcgPC0gZmFsc2UgaW5cbiAgICAgICAgIGxldCAoKSA9IHQuZXJyb3JfbWVzc2FnZXMgPC0gWyBlIF0gaW5cbiAgICAgICAgIEx3dC5yZXR1cm5fdW5pdCkpXG5cbmxldCBzdGFydCB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpXG4gICAgfihwYXJhbWV0ZXIgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlcikgfih0IDogdCkgOlxuICAgICh1bml0LCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnQgPVxuICBsZXQgbGV4YnVmID1cbiAgICBMZXhpbmcuZnJvbV9zdHJpbmcgcGFyYW1ldGVyLkFwaV90eXBlc190LnNpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uXG4gIGluXG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT5cbiAgICAgICgqbGV0ICgpID1cbiAgICAgICAgICBDb3VudGVyLnNldF9tYXhfdGltZVxuICAgICAgICAgICAgICAgICB0LmNvdW50ZXJcbiAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLkFwaV90eXBlc19qLnNpbXVsYXRpb25fbWF4X3RpbWVcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgQ291bnRlci5zZXRfbWF4X2V2ZW50c1xuICAgICAgICAgICAgICAgICB0LmNvdW50ZXJcbiAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLkFwaV90eXBlc19qLnNpbXVsYXRpb25fbWF4X2V2ZW50c1xuICAgICAgICAgICAgICAgaW4qKVxuICAgICAgbGV0IHJhbmRvbV9zdGF0ZSA9XG4gICAgICAgIG1hdGNoIHBhcmFtZXRlci5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX3NlZWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpXG4gICAgICAgIHwgU29tZSBzZWVkIC0+IFJhbmRvbS5TdGF0ZS5tYWtlIFt8IHNlZWQgfF1cbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSByZWluaXRpYWxpemUgcmFuZG9tX3N0YXRlIH5vdXRwdXRzOihvdXRwdXRzIHQpIHQgaW5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgcGF1c2UgPSBLcGFyc2VyNC5zdGFuZGFsb25lX2Jvb2xfZXhwciBLbGV4ZXI0LnRva2VuIGxleGJ1ZiBpblxuICAgICAgICBMd3Qud3JhcDRcbiAgICAgICAgICAoRXZhbHVhdG9yLmdldF9wYXVzZV9jcml0ZXJpYSB+ZGVidWdfbW9kZTpmYWxzZSB+b3V0cHV0czoob3V0cHV0cyB0KVxuICAgICAgICAgICAgIH5zaGFyaW5nOnQucGF0dGVyblNoYXJpbmcgfnN5bnRheF92ZXJzaW9uOkFzdC5WNClcbiAgICAgICAgICB0LmNvbnRhY3RfbWFwIHQuZW52IHQuZ3JhcGggcGF1c2VcbiAgICAgICAgPj49IGZ1biAoZW52JywgZ3JhcGgnLCBiJycpIC0+XG4gICAgICAgIGxldCAoKSA9IHQuZW52IDwtIGVudicgaW5cbiAgICAgICAgbGV0ICgpID0gdC5ncmFwaCA8LSBncmFwaCcgaW5cbiAgICAgICAgbGV0ICgpID0gdC5wYXVzZV9jb25kaXRpb24gPC0gYicnIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgQ291bnRlci5zZXRfcGxvdF9wZXJpb2QgdC5jb3VudGVyXG4gICAgICAgICAgICAoQ29uZmlndXJhdGlvbi5EVCBwYXJhbWV0ZXIuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wbG90X3BlcmlvZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMd3QuYXN5bmMgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAoKiBleGNlcHRpb24gcmFpc2VkIGJ5IGJ1aWxkX2luaXRpYWxfc3RhdGUgbXVzdCBoYXZlIGJlZW5cbiAgICAgICAgICAgICAgICAgICByYWlzZWQgd2l0aCBMd3QuZmFpbC4gU29tZXRoaW5nIGlzIHdyb25nIGZvciBub3cuLi4gKilcbiAgICAgICAgICAgICAgICBFdmFsLmJ1aWxkX2luaXRpYWxfc3RhdGVcbiAgICAgICAgICAgICAgICAgIH5iaW5kOihmdW4geCBmIC0+XG4gICAgICAgICAgICAgICAgICAgIHRpbWVfeWllbGQgfnN5c3RlbV9wcm9jZXNzIH50ID4+PSBmdW4gKCkgLT4geCA+Pj0gZilcbiAgICAgICAgICAgICAgICAgIH5yZXR1cm46THd0LnJldHVybiB+ZGVidWdfbW9kZTpmYWxzZSB+b3V0cHV0czoob3V0cHV0cyB0KVxuICAgICAgICAgICAgICAgICAgfndpdGhfdHJhY2U6cGFyYW1ldGVyLkFwaV90eXBlc190LnNpbXVsYXRpb25fc3RvcmVfdHJhY2VcbiAgICAgICAgICAgICAgICAgIH53aXRoX2RlbHRhX2FjdGl2aXRpZXM6ZmFsc2UgdC5jb3VudGVyIHQuZW52IHJhbmRvbV9zdGF0ZVxuICAgICAgICAgICAgICAgICAgdC5pbml0X2xcbiAgICAgICAgICAgICAgICA+Pj0gZnVuIChzdG9wLCBncmFwaCwgc3RhdGUpIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIHQuZ3JhcGggPC0gZ3JhcGg7XG4gICAgICAgICAgICAgICAgICB0LnN0YXRlIDwtIHN0YXRlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZmlyc3Rfb2JzID1cbiAgICAgICAgICAgICAgICAgIFN0YXRlX2ludGVycHJldGVyLm9ic2VydmFibGVzX3ZhbHVlcyB0LmVudiBncmFwaCB0LmNvdW50ZXJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IHQucGxvdCA8LSBEYXRhLmFkZF9wbG90X2xpbmUgZmlyc3Rfb2JzIHQucGxvdCBpblxuICAgICAgICAgICAgICAgIHJ1bl9zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2VzcyB+dCBzdG9wXG4gICAgICAgICAgICAgIHdpdGggZSAtPlxuICAgICAgICAgICAgICAgIGNhdGNoX2Vycm9yXG4gICAgICAgICAgICAgICAgICAoZnVuIGUgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gdC5lcnJvcl9tZXNzYWdlcyA8LSBbIGUgXSBpblxuICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG4gICAgICAgICAgICAgICAgICBlKVxuICAgICAgICBpblxuICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgIHdpdGggRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKG1lc3NhZ2UsIHJhbmdlKSAtPlxuICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJhbmdlIG1lc3NhZ2UpKVxuICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT5cbiAgICAgICAgIGxldCAoKSA9IHQuZXJyb3JfbWVzc2FnZXMgPC0gWyBlIF0gaW5cbiAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgZSBdKSkpXG5cbmxldCBwYXVzZSB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpIDpcbiAgICAodW5pdCwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC50ID1cbiAgbGV0ICgpID0gaWdub3JlIHN5c3RlbV9wcm9jZXNzIGluXG4gIGxldCAoKSA9IGlnbm9yZSB0IGluXG4gIGxldCAoKSA9XG4gICAgaWYgdC5pc19ydW5uaW5nIHRoZW5cbiAgICAgIHQuaXNfcnVubmluZyA8LSBmYWxzZVxuICAgIGVsc2VcbiAgICAgICgpXG4gIGluXG4gIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuXG5sZXQgc3RvcCB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpIDpcbiAgICAodW5pdCwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC50ID1cbiAgbGV0ICgpID0gaWdub3JlIHN5c3RlbV9wcm9jZXNzIGluXG4gIGxldCAoKSA9IGlnbm9yZSB0IGluXG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIGxldCAoKSA9IHQucnVuX2ZpbmFsaXplIDwtIHRydWUgaW5cbiAgICAgIGlmIHQuaXNfcnVubmluZyB0aGVuXG4gICAgICAgIHBhdXNlIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9IGZpbmFsaXplX3NpbXVsYXRpb24gfnQgaW5cbiAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICApKVxuICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyBlIF0pKSlcblxubGV0IHBlcnR1cmJhdGlvbiB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpXG4gICAgfihwZXJ0dXJiYXRpb24gOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2ludGVydmVudGlvbikgOlxuICAgIChzdHJpbmcsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudCA9XG4gIGxldCAoKSA9IGlnbm9yZSBzeXN0ZW1fcHJvY2VzcyBpblxuICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHBlcnR1cmJhdGlvbiBpblxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBpZiB0LmlzX3J1bm5pbmcgdGhlblxuICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgbXNnX3Byb2Nlc3Nfbm90X3BhdXNlZClcbiAgICAgIGVsc2UgKFxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgZSA9IEtwYXJzZXI0LnN0YW5kYWxvbmVfZWZmZWN0X2xpc3QgS2xleGVyNC50b2tlbiBsZXhidWYgaW5cbiAgICAgICAgICBsZXQgbG9nX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgNTEyIGluXG4gICAgICAgICAgbGV0IGxvZ19mb3JtID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgbG9nX2J1ZmZlciBpblxuICAgICAgICAgIEx3dC53cmFwNlxuICAgICAgICAgICAgKEV2YWx1YXRvci5kb19pbnRlcmFjdGl2ZV9kaXJlY3RpdmVzIH5kZWJ1Z19tb2RlOmZhbHNlXG4gICAgICAgICAgICAgICB+b3V0cHV0czooaW50ZXJhY3RpdmVfb3V0cHV0cyBsb2dfZm9ybSB0KVxuICAgICAgICAgICAgICAgfnNoYXJpbmc6dC5wYXR0ZXJuU2hhcmluZyB+c3ludGF4X3ZlcnNpb246QXN0LlY0KVxuICAgICAgICAgICAgdC5jb250YWN0X21hcCB0LmVudiB0LmNvdW50ZXIgdC5ncmFwaCB0LnN0YXRlIGVcbiAgICAgICAgICA+Pj0gZnVuIChlJywgKGVudicsIChfLCBncmFwaCcnLCBzdGF0ZScpKSkgLT5cbiAgICAgICAgICBsZXQgKCkgPSB0LmVudiA8LSBlbnYnIGluXG4gICAgICAgICAgbGV0ICgpID0gdC5ncmFwaCA8LSBncmFwaCcnIGluXG4gICAgICAgICAgbGV0ICgpID0gdC5zdGF0ZSA8LSBzdGF0ZScgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgdC5sb2dfZm9ybSBcIiUlbW9kOiBbRV0gPSAlaSBkbyAlYUAuXCJcbiAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF9ldmVudCB0LmNvdW50ZXIpXG4gICAgICAgICAgICAgIChQcC5saXN0IH50cmFpbGluZzpQcC5jb2xvbiBQcC5jb2xvblxuICAgICAgICAgICAgICAgICAoS2FwcGFfcHJpbnRlci5tb2RpZmljYXRpb24gfm5vQ291bnRlcnM6ZmFsc2UgfmVudjp0LmVudikpXG4gICAgICAgICAgICAgIGUnXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgdC5pbnB1dHNfZm9ybSBcIiUlbW9kOiBbRV0gPSAlaSBkbyAlYUAuXCJcbiAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF9ldmVudCB0LmNvdW50ZXIpXG4gICAgICAgICAgICAgIChQcC5saXN0IH50cmFpbGluZzpQcC5jb2xvbiBQcC5jb2xvblxuICAgICAgICAgICAgICAgICAoS2FwcGFfcHJpbnRlci5tb2RpZmljYXRpb24gfm5vQ291bnRlcnM6ZmFsc2UgfmVudjp0LmVudikpXG4gICAgICAgICAgICAgIGUnXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoQnVmZmVyLmNvbnRlbnRzIGxvZ19idWZmZXIpKVxuICAgICAgICB3aXRoIEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChtZXNzYWdlLCByYW5nZSkgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJhbmdlIG1lc3NhZ2UpXG4gICAgICApKVxuICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyBlIF0pKSlcblxubGV0IGNvbnRpbnVlIH4oc3lzdGVtX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2Vzcykgfih0IDogdClcbiAgICB+KHBhdXNlX2NvbmRpdGlvbiA6IHN0cmluZykgOlxuICAgICh1bml0LCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnQgPVxuICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHBhdXNlX2NvbmRpdGlvbiBpblxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBpZiB0LmlzX3J1bm5pbmcgdGhlblxuICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgIGVsc2UgKFxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgcGF1c2UgPSBLcGFyc2VyNC5zdGFuZGFsb25lX2Jvb2xfZXhwciBLbGV4ZXI0LnRva2VuIGxleGJ1ZiBpblxuICAgICAgICAgIEx3dC53cmFwNFxuICAgICAgICAgICAgKEV2YWx1YXRvci5nZXRfcGF1c2VfY3JpdGVyaWEgfmRlYnVnX21vZGU6ZmFsc2Ugfm91dHB1dHM6KG91dHB1dHMgdClcbiAgICAgICAgICAgICAgIH5zaGFyaW5nOnQucGF0dGVyblNoYXJpbmcgfnN5bnRheF92ZXJzaW9uOkFzdC5WNClcbiAgICAgICAgICAgIHQuY29udGFjdF9tYXAgdC5lbnYgdC5ncmFwaCBwYXVzZVxuICAgICAgICAgID4+PSBmdW4gKGVudicsIGdyYXBoJywgYicnKSAtPlxuICAgICAgICAgIGxldCAoKSA9IHQuZW52IDwtIGVudicgaW5cbiAgICAgICAgICBsZXQgKCkgPSB0LmdyYXBoIDwtIGdyYXBoJyBpblxuICAgICAgICAgIGxldCAoKSA9IHQucGF1c2VfY29uZGl0aW9uIDwtIGInJyBpblxuICAgICAgICAgICgqbGV0ICgpID1cbiAgICAgICAgICAgIENvdW50ZXIuc2V0X21heF90aW1lXG4gICAgICAgICAgICB0LmNvdW50ZXJcbiAgICAgICAgICAgIHBhcmFtZXRlci5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX21heF90aW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIENvdW50ZXIuc2V0X21heF9ldmVudHNcbiAgICAgICAgICAgIHQuY291bnRlclxuICAgICAgICAgICAgcGFyYW1ldGVyLkFwaV90eXBlc190LnNpbXVsYXRpb25fbWF4X2V2ZW50c1xuICAgICAgICAgICAgaW4qKVxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMd3QuYXN5bmMgKGZ1biAoKSAtPiBydW5fc2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3MgfnQgZmFsc2UpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgd2l0aCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAobWVzc2FnZSwgcmFuZ2UpIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yYW5nZSBtZXNzYWdlKVxuICAgICAgKSlcbiAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgZSBdKSkpXG5cbmxldCBwcm9ncmVzcyB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpIDpcbiAgICAoQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzcywgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50XG4gICAgTHd0LnQgPVxuICBsZXQgKCkgPSBpZ25vcmUgc3lzdGVtX3Byb2Nlc3MgaW5cbiAgbGV0ICgpID0gaWdub3JlIHQgaW5cbiAgbWF0Y2ggdC5lcnJvcl9tZXNzYWdlcyB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QuY2F0Y2hcbiAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgIChSZXN1bHRfdXRpbC5va1xuICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSA9XG4gICAgICAgICAgICAgICAgIENvdW50ZXIuY3VycmVudF90aW1lIHQuY291bnRlcjtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlID1cbiAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAgKGZ1biB4IC0+IGludF9vZl9mbG9hdCAoeCAqLiAxMDAuKSlcbiAgICAgICAgICAgICAgICAgICAoQ291bnRlci50aW1lX3JhdGlvIHQuY291bnRlcik7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50ID1cbiAgICAgICAgICAgICAgICAgQ291bnRlci5jdXJyZW50X2V2ZW50IHQuY291bnRlcjtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZSA9XG4gICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgICAgICAgIChmdW4geCAtPiBpbnRfb2ZfZmxvYXQgKHggKi4gMTAwLikpXG4gICAgICAgICAgICAgICAgICAgKENvdW50ZXIuZXZlbnRfcmF0aW8gdC5jb3VudGVyKTtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMgPVxuICAgICAgICAgICAgICAgICBDb3VudGVyLnRyYWNrZWRfZXZlbnRzIHQuY291bnRlcjtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZyA9IHQuaXNfcnVubmluZztcbiAgICAgICAgICAgICB9KSlcbiAgICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyBlIF0pKSlcbiAgfCBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIHQuZXJyb3JfbWVzc2FnZXMpXG5cbmxldCBvdXRwdXRzIH4oc3lzdGVtX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2Vzcykgfih0IDogdCkgOlxuICAgIChBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudFxuICAgIEx3dC50ID1cbiAgbGV0ICgpID0gaWdub3JlIHN5c3RlbV9wcm9jZXNzIGluXG4gIGxldCAoKSA9IGlnbm9yZSB0IGluXG4gIG1hdGNoIHQuZXJyb3JfbWVzc2FnZXMgd2l0aFxuICB8IFtdIC0+XG4gICAgTHd0LmNhdGNoXG4gICAgICAoZnVuICgpIC0+XG4gICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAoUmVzdWx0X3V0aWwub2tcbiAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9wbG90ID0gU29tZSB0LnBsb3Q7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9kaW5zID0gdC5kaW5zO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyA9IHQuZmlsZXM7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgPSB0LnNuYXBzaG90cztcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA9XG4gICAgICAgICAgICAgICAgIEJ1ZmZlci5jb250ZW50cyB0LmlucHV0c19idWZmZXI7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgPVxuICAgICAgICAgICAgICAgICBCdWZmZXIuY29udGVudHMgdC5sb2dfYnVmZmVyO1xuICAgICAgICAgICAgIH0pKVxuICAgICAgKGNhdGNoX2Vycm9yIChmdW4gZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBbIGUgXSkpKVxuICB8IF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgdC5lcnJvcl9tZXNzYWdlcylcblxubGV0IGVmZmljaWVuY3kgdCA9IENvdW50ZXIuZ2V0X2VmZmljaWVuY3kgdC5jb3VudGVyXG5cbmxldCBnZXRfcmF3X3RyYWNlICh0IDogdCkgOiBzdHJpbmcgPVxuICBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGVcbiAgICAoZnVuIG9iIHQgLT5cbiAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiZGljdFwiXG4gICAgICAgICAgKGZ1biBvYiAoKSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICAgICAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb2IgQWdlbnQuanNvbl9kaWN0aW9ubmFyeSBpblxuICAgICAgICAgICAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIEluc3RhbnRpYXRpb24uanNvbl9kaWN0aW9ubmFyeSBpblxuICAgICAgICAgICAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFRyYWNlLlNpbXVsYXRpb25faW5mby5qc29uX2RpY3Rpb25uYXJ5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFRyYWNlLmpzb25fZGljdGlvbm5hcnkgaW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfScpXG4gICAgICAgICAgb2IgKClcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJtb2RlbFwiIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIG9iXG4gICAgICAgICAgKE1vZGVsLnRvX3lvanNvbiB0LmVudilcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJ0cmFjZVwiIEJ1ZmZlci5hZGRfc3RyaW5nIG9iXG4gICAgICAgICAgKFwiW1wiIF4gQnVmZmVyLmNvbnRlbnRzIHQudHJhY2UpXG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJdfVwiKVxuICAgIHRcblxubGV0IGdldF9yYXdfYXN0IHQgPSBZb2pzb24uQmFzaWMudG9fc3RyaW5nIChBc3QuY29tcGlsX3RvX2pzb24gdC5hc3QpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG4oKiBhZGRkIHNlZWQgdG8gcGFyYW1ldGVyICopXG5sZXQgcGF0Y2hfcGFyYW1ldGVyIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyKSA6XG4gICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKiBpbnQgPVxuICBtYXRjaCBzaW11bGF0aW9uX3BhcmFtZXRlci5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX3NlZWQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBsZXQgKCkgPSBSYW5kb20uc2VsZl9pbml0ICgpIGluXG4gICAgbGV0IHNlZWQgPSBSYW5kb20uYml0cyAoKSBpblxuICAgIHsgc2ltdWxhdGlvbl9wYXJhbWV0ZXIgd2l0aCBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3NlZWQgPSBTb21lIHNlZWQgfSwgc2VlZFxuICB8IFNvbWUgc2VlZCAtPiBzaW11bGF0aW9uX3BhcmFtZXRlciwgc2VlZFxuXG5sZXQgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gaGFuZGxlciA9XG4gIG1hdGNoIHNpbXVsYXRpb24gd2l0aFxuICB8IFNvbWUgKF8sIHNpbXVsYXRpb24pIC0+IGhhbmRsZXIgc2ltdWxhdGlvblxuICB8IE5vbmUgLT5cbiAgICBsZXQgbSA9IFwiTm8gc2ltdWxhdGlvbiBhdmFpbGFibGVcIiBpblxuICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YE5vdF9mb3VuZCBtKVxuXG5sZXQgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb25cbiAgICB+KHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKVxuICAgIH4ocHJvamVjdGlvbiA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dCAtPiAnYSBBcGkucmVzdWx0KSA6XG4gICAgJ2EgQXBpLnJlc3VsdCBMd3QudCA9XG4gIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgS2FwcGFfZmFjYWRlLm91dHB1dHMgfnN5c3RlbV9wcm9jZXNzIH50XG4gICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfm9rOlxuICAgICAgICAgICAgICAoZnVuIChzaW11bGF0aW9uX2RldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dCkgLT5cbiAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAocHJvamVjdGlvbiBzaW11bGF0aW9uX2RldGFpbClcbiAgICAgICAgICAgICAgICA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dCAtPiAnYSBBcGkucmVzdWx0IEx3dC50KVxuICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzIGVycm9ycykpKVxuXG5jbGFzcyB2aXJ0dWFsIG1hbmFnZXJfZmlsZV9saW5lIChzeXN0ZW1fcHJvY2VzcyA6IEthcHBhX2ZhY2FkZS5zeXN0ZW1fcHJvY2VzcykgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgdmlydHVhbCBzaW11bGF0aW9uXG4gICAgICAgIDogKEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyICogS2FwcGFfZmFjYWRlLnQpIG9wdGlvblxuXG4gICAgbWV0aG9kIHByaXZhdGUgaW5mb19maWxlX2xpbmUgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5maWxlX2xpbmVfY2F0YWxvZyBBcGkucmVzdWx0ID1cbiAgICAgIGxldCBmaWxlX2xpbmVzIDogc3RyaW5nIGxpc3QgTW9kcy5TdHJpbmdNYXAudCA9XG4gICAgICAgIGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzXG4gICAgICBpblxuICAgICAgbGV0IGZpbGVfbGluZV9jYXRhbG9nIDogc3RyaW5nIGxpc3QgPVxuICAgICAgICBMaXN0Lm1hcCBmc3QgKE1vZHMuU3RyaW5nTWFwLmJpbmRpbmdzIGZpbGVfbGluZXMpXG4gICAgICBpblxuICAgICAgUmVzdWx0X3V0aWwub2sgZmlsZV9saW5lX2NhdGFsb2dcblxuICAgIG1ldGhvZCBwcml2YXRlIGdldF9maWxlX2xpbmUgfmZpbGVfbGluZV9pZFxuICAgICAgICAoc3RhdHVzIDogQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KSA6IHN0cmluZyBsaXN0IEFwaS5yZXN1bHQgPVxuICAgICAgbGV0IGZpbGVfbGluZV9saXN0ID0gc3RhdHVzLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgaW5cbiAgICAgIG1hdGNoIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIGZpbGVfbGluZV9pZCBmaWxlX2xpbmVfbGlzdCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IG0gOiBzdHJpbmcgPSBGb3JtYXQuc3ByaW50ZiBcImlkICVzIG5vdCBmb3VuZFwiIGZpbGVfbGluZV9pZCBpblxuICAgICAgICBBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBOb3RfZm91bmQgbVxuICAgICAgfCBTb21lIGxpbmVzIC0+IFJlc3VsdF91dGlsLm9rIChMaXN0LnJldiBsaW5lcylcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NhdGFsb2dfZmlsZV9saW5lXG4gICAgICAgIDogQXBpX3R5cGVzX3QuZmlsZV9saW5lX2NhdGFsb2cgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3NcbiAgICAgICAgfnByb2plY3Rpb246c2VsZiNpbmZvX2ZpbGVfbGluZVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2ZpbGVfbGluZSAoZmlsZV9saW5lX2lkIDogc3RyaW5nKVxuICAgICAgICA6IHN0cmluZyBsaXN0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgIH5wcm9qZWN0aW9uOihzZWxmI2dldF9maWxlX2xpbmUgfmZpbGVfbGluZV9pZClcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlcl9mbHV4X21hcCAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIHZpcnR1YWwgc2ltdWxhdGlvblxuICAgICAgICA6IChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciAqIEthcHBhX2ZhY2FkZS50KSBvcHRpb25cblxuICAgIG1ldGhvZCBwcml2YXRlIGluZm9fZmx1eF9tYXAgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5kaW5fY2F0YWxvZyBBcGkucmVzdWx0ID1cbiAgICAgIGxldCBmbHV4X21hcF9jYXRhbG9nID1cbiAgICAgICAgTGlzdC5tYXAgZnN0IGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9kaW5zXG4gICAgICBpblxuICAgICAgUmVzdWx0X3V0aWwub2sgZmx1eF9tYXBfY2F0YWxvZ1xuXG4gICAgbWV0aG9kIHByaXZhdGUgZ2V0X2ZsdXhfbWFwIChmbHV4X21hcF9pZCA6IEFwaV90eXBlc190LmRpbl9pZClcbiAgICAgICAgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5kaW4gQXBpLnJlc3VsdCA9XG4gICAgICBsZXQgZmx1eF9tYXBzX2xpc3QgPSBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZGlucyBpblxuICAgICAgdHJ5IFJlc3VsdF91dGlsLm9rIChMaXN0LmFzc29jIGZsdXhfbWFwX2lkIGZsdXhfbWFwc19saXN0KVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgbGV0IG0gOiBzdHJpbmcgPSBGb3JtYXQuc3ByaW50ZiBcImlkICVzIG5vdCBmb3VuZFwiIGZsdXhfbWFwX2lkIGluXG4gICAgICAgIEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YE5vdF9mb3VuZCBtXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX2RpbiA6IEFwaV90eXBlc190LmRpbl9jYXRhbG9nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgIH5wcm9qZWN0aW9uOnNlbGYjaW5mb19mbHV4X21hcFxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2RpbiAoZmx1eF9tYXBfaWQgOiBBcGlfdHlwZXNfdC5kaW5faWQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QuZGluIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgIH5wcm9qZWN0aW9uOihzZWxmI2dldF9mbHV4X21hcCBmbHV4X21hcF9pZClcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlcl9sb2dfbWVzc2FnZSAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpXG4gID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIHZpcnR1YWwgc2ltdWxhdGlvblxuICAgICAgICA6IChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciAqIEthcHBhX2ZhY2FkZS50KSBvcHRpb25cblxuICAgIG1ldGhvZCBwcml2YXRlIGxvZ19tZXNzYWdlIChkZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QubG9nX21lc3NhZ2UgQXBpLnJlc3VsdCA9XG4gICAgICBSZXN1bHRfdXRpbC5vayBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfbG9nX21lc3NhZ2VcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5sb2dfbWVzc2FnZSBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2VzcyB+cHJvamVjdGlvbjpzZWxmI2xvZ19tZXNzYWdlXG4gIGVuZFxuXG5sZXQgc2VsZWN0X29ic2VydmFibGVzIChwbG90X2xpbWl0IDogQXBpX3R5cGVzX3QucGxvdF9saW1pdClcbiAgICAocGxvdCA6IEFwaV90eXBlc190LnBsb3QpIDogQXBpX3R5cGVzX3QucGxvdCA9XG4gIGxldCBwbG90X3RpbWVfc2VyaWVzID0gVG9vbHMuYXJyYXlfcmV2X29mX2xpc3QgcGxvdC5EYXRhLnBsb3Rfc2VyaWVzIGluXG4gIGxldCBwbG90X2RldGFpbF9zaXplID0gQXJyYXkubGVuZ3RoIHBsb3RfdGltZV9zZXJpZXMgaW5cbiAgbGV0IHBsb3RfbGltaXRfb2Zmc2V0ID0gcGxvdF9saW1pdC5BcGlfdHlwZXNfdC5wbG90X2xpbWl0X29mZnNldCBpblxuICBsZXQgcGxvdF9saW1pdF9wb2ludHMgPSBwbG90X2xpbWl0LkFwaV90eXBlc190LnBsb3RfbGltaXRfcG9pbnRzIGluXG4gIGxldCBzdGFydCwgbGVuID1cbiAgICBtYXRjaCBwbG90X2xpbWl0X29mZnNldCwgcGxvdF9saW1pdF9wb2ludHMgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiAwLCBwbG90X2RldGFpbF9zaXplXG4gICAgfCBTb21lIG9mZnNldCwgTm9uZSAtPiBvZmZzZXQsIG1heCAwIChwbG90X2RldGFpbF9zaXplIC0gb2Zmc2V0KVxuICAgIHwgTm9uZSwgU29tZSBuYiAtPiBtYXggMCAocGxvdF9kZXRhaWxfc2l6ZSAtIG5iKSwgbWluIG5iIHBsb3RfZGV0YWlsX3NpemVcbiAgICB8IFNvbWUgb2Zmc2V0LCBTb21lIG5iIC0+IG9mZnNldCwgbWluIG5iIChtYXggMCAocGxvdF9kZXRhaWxfc2l6ZSAtIG9mZnNldCkpXG4gIGluXG4gIGxldCBuZXdfcGxvdF90aW1lX3NlcmllcyA9XG4gICAgTGlzdC5yZXYgKEFycmF5LnRvX2xpc3QgKEFycmF5LnN1YiBwbG90X3RpbWVfc2VyaWVzIHN0YXJ0IGxlbikpXG4gIGluXG4gIHsgcGxvdCB3aXRoIERhdGEucGxvdF9zZXJpZXMgPSBuZXdfcGxvdF90aW1lX3NlcmllcyB9XG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlcl9wbG90IChzeXN0ZW1fcHJvY2VzcyA6IEthcHBhX2ZhY2FkZS5zeXN0ZW1fcHJvY2VzcykgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgdmlydHVhbCBzaW11bGF0aW9uXG4gICAgICAgIDogKEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyICogS2FwcGFfZmFjYWRlLnQpIG9wdGlvblxuXG4gICAgbWV0aG9kIHByaXZhdGUgZ2V0X3Bsb3QgKHBsb3RfbGltaXQgOiBBcGlfdHlwZXNfdC5wbG90X3BhcmFtZXRlcilcbiAgICAgICAgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5wbG90IEFwaS5yZXN1bHQgPVxuICAgICAgbWF0Y2ggZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3Bsb3Qgd2l0aFxuICAgICAgfCBTb21lIHBsb3QgLT4gUmVzdWx0X3V0aWwub2sgKHNlbGVjdF9vYnNlcnZhYmxlcyBwbG90X2xpbWl0IHBsb3QpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IG0gOiBzdHJpbmcgPSBcInBsb3Qgbm90IGF2YWlsYWJsZVwiIGluXG4gICAgICAgIEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YE5vdF9mb3VuZCBtXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfcGxvdCAocGxvdF9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfdC5wbG90X3BhcmFtZXRlcilcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5wbG90IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgIH5wcm9qZWN0aW9uOihzZWxmI2dldF9wbG90IHBsb3RfcGFyYW1ldGVyKVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBtYW5hZ2VyX3NuYXBzaG90IChzeXN0ZW1fcHJvY2VzcyA6IEthcHBhX2ZhY2FkZS5zeXN0ZW1fcHJvY2VzcykgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgdmlydHVhbCBzaW11bGF0aW9uXG4gICAgICAgIDogKEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyICogS2FwcGFfZmFjYWRlLnQpIG9wdGlvblxuXG4gICAgbWV0aG9kIHByaXZhdGUgaW5mb19zbmFwc2hvdCAoZGV0YWlsIDogQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KVxuICAgICAgICA6IEFwaV90eXBlc190LnNuYXBzaG90X2NhdGFsb2cgQXBpLnJlc3VsdCA9XG4gICAgICBsZXQgc25hcHNob3RzID0gZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyBpblxuICAgICAgbGV0IHNuYXBzaG90X2NhdGFsb2cgPVxuICAgICAgICBNb2RzLlN0cmluZ01hcC5mb2xkIChmdW4geCBfIGFjYyAtPiB4IDo6IGFjYykgc25hcHNob3RzIFtdXG4gICAgICBpblxuICAgICAgUmVzdWx0X3V0aWwub2sgc25hcHNob3RfY2F0YWxvZ1xuXG4gICAgbWV0aG9kIHByaXZhdGUgZ2V0X3NuYXBzaG90IChzbmFwc2hvdF9pZCA6IEFwaV90eXBlc190LnNuYXBzaG90X2lkKVxuICAgICAgICAoZGV0YWlsIDogQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KVxuICAgICAgICA6IEFwaV90eXBlc190LnNuYXBzaG90IEFwaS5yZXN1bHQgPVxuICAgICAgbGV0IHNuYXBzaG90X2xpc3QgPSBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzIGluXG4gICAgICBtYXRjaCBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBzbmFwc2hvdF9pZCBzbmFwc2hvdF9saXN0IHdpdGhcbiAgICAgIHwgU29tZSB4IC0+IFJlc3VsdF91dGlsLm9rIHhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgbSA6IHN0cmluZyA9IEZvcm1hdC5zcHJpbnRmIFwiaWQgJXMgbm90IGZvdW5kXCIgc25hcHNob3RfaWQgaW5cbiAgICAgICAgQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yZXN1bHRfY29kZTpgTm90X2ZvdW5kIG1cblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NhdGFsb2dfc25hcHNob3RcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdF9jYXRhbG9nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgKGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICAgfnByb2plY3Rpb246c2VsZiNpbmZvX3NuYXBzaG90XG4gICAgICAgIDogQXBpX3R5cGVzX3Quc25hcHNob3RfY2F0YWxvZyBBcGkucmVzdWx0IEx3dC50KVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX3NuYXBzaG90IChzbmFwc2hvdF9pZCA6IEFwaV90eXBlc190LnNuYXBzaG90X2lkKVxuICAgICAgICA6IEFwaV90eXBlc190LnNuYXBzaG90IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgKGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICAgfnByb2plY3Rpb246KHNlbGYjZ2V0X3NuYXBzaG90IHNuYXBzaG90X2lkKVxuICAgICAgICA6IEFwaV90eXBlc190LnNuYXBzaG90IEFwaS5yZXN1bHQgTHd0LnQpXG4gIGVuZFxuXG5jbGFzcyBtYW5hZ2VyX3NpbXVsYXRpb24gcHJvamVjdCAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpIDpcbiAgQXBpLm1hbmFnZXJfc2ltdWxhdGlvbiA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSBzaW11bGF0aW9uID0gTm9uZVxuXG4gICAgbWV0aG9kIHNlY3JldF9zaW11bGF0aW9uX2xvYWQgcGF0dGVyblNoYXJpbmcgdGV4dCBvdmVyd3JpdGVzID1cbiAgICAgIGxldCBhc3QgPSB0ZXh0IGluXG4gICAgICBsZXQgaGFyYWtpcmksIF8gPSBMd3QudGFzayAoKSBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBwcm9qZWN0I3NldF9zdGF0ZVxuICAgICAgICAgIChMd3QucGlja1xuICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgIEthcHBhX2ZhY2FkZS5wYXJzZSB+cGF0dGVyblNoYXJpbmcgYXN0IG92ZXJ3cml0ZXMgc3lzdGVtX3Byb2Nlc3M7XG4gICAgICAgICAgICAgICAoIGhhcmFraXJpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5lcnJvclxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIEFwaV9jb21tb24uZXJyb3JfbXNnIFwiUGFyc2UgY2FuY2VsbGVkIGJ5IG1vZGlmaWVkIGZpbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXSkgKTtcbiAgICAgICAgICAgICBdKVxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGVsZXRlIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjc2ltdWxhdGlvbl9zdG9wID4+PSBmdW4gXyAtPlxuICAgICAgbGV0ICgpID0gc2ltdWxhdGlvbiA8LSBOb25lIGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3N0YXJ0XG4gICAgICAgIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgICA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fYXJ0aWZhY3QgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBsZXQgc2ltdWxhdGlvbl9wYXJhbWV0ZXIsIHNpbXVsYXRpb25fc2VlZCA9XG4gICAgICAgIHBhdGNoX3BhcmFtZXRlciBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgaW5cbiAgICAgIG1hdGNoIHNpbXVsYXRpb24gd2l0aFxuICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBDb25mbGljdFxuICAgICAgICAgICAgIFwiQSBzaW11bGF0aW9uIGFscmVhZHkgZXhpc3RzXCIpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgcHJvamVjdCNnZXRfc3RhdGUgKCkgPj49ICggZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZ1xuICAgICAgICAgICAgICAgXCJDYW5ub3Qgc3RhcnQgc2ltdWxhdGlvbjogUGFyc2Ugbm90IGRvbmVcIilcbiAgICAgICAgfCBTb21lIHBhcnNlIC0+XG4gICAgICAgICAgUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfm9rOihmdW4gKGZhY2FkZSA6IEthcHBhX2ZhY2FkZS50KSAtPlxuICAgICAgICAgICAgICBLYXBwYV9mYWNhZGUuc3RhcnQgfnN5c3RlbV9wcm9jZXNzIH5wYXJhbWV0ZXI6c2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICB+dDpmYWNhZGVcbiAgICAgICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvbiA8LSBTb21lIChzaW11bGF0aW9uX3BhcmFtZXRlciwgZmFjYWRlKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm9rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW11bGF0aW9uX3NlZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JzKSkpXG4gICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JzKSlcbiAgICAgICAgICAgIHBhcnNlIClcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgbWF0Y2ggc2ltdWxhdGlvbiB3aXRoXG4gICAgICB8IFNvbWUgKHBhcmFtZXRlciwgXykgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcGFyYW1ldGVyKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBtID0gXCJObyBzaW11bGF0aW9uIGF2YWlsYWJsZVwiIGluXG4gICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YE5vdF9mb3VuZCBtKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcmF3X3RyYWNlIDogc3RyaW5nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKEthcHBhX2ZhY2FkZS5nZXRfcmF3X3RyYWNlIHQpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX291dHB1dHNfemlwID1cbiAgICAgIGxldCBhZGRfc25hcHNob3QgZmlsZSBmaWxlbmFtZSBuYW1lIHNuYXBzaG90ID1cbiAgICAgICAgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IG5hbWUgXCIuZG90XCIgdGhlblxuICAgICAgICAgIEZha2V6aXAuYWRkX2VudHJ5XG4gICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiXG4gICAgICAgICAgICAgICAoRGF0YS5wcmludF9kb3Rfc25hcHNob3QgP3V1aWQ6Tm9uZSlcbiAgICAgICAgICAgICAgIHNuYXBzaG90KVxuICAgICAgICAgICAgZmlsZVxuICAgICAgICAgICAgKGZpbGVuYW1lIF4gXCIvXCIgXiBuYW1lKVxuICAgICAgICBlbHNlIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBuYW1lIFwiLmpzb25cIiB0aGVuXG4gICAgICAgICAgRmFrZXppcC5hZGRfZW50cnlcbiAgICAgICAgICAgIChEYXRhLnN0cmluZ19vZl9zbmFwc2hvdCA/bGVuOk5vbmUgc25hcHNob3QpXG4gICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAoZmlsZW5hbWUgXiBcIi9cIiBeIG5hbWUpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBuYW1lJyA9IFRvb2xzLmNob3Bfc3VmZml4X29yX2V4dGVuc2lvbiBuYW1lIFwiLmthXCIgaW5cbiAgICAgICAgICBGYWtlemlwLmFkZF9lbnRyeVxuICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiAoRGF0YS5wcmludF9zbmFwc2hvdCA/dXVpZDpOb25lKSBzbmFwc2hvdClcbiAgICAgICAgICAgIGZpbGVcbiAgICAgICAgICAgIChmaWxlbmFtZSBeIFwiL1wiIF4gbmFtZScpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgYWRkX2RpbiBmaWxlIGZpbGVuYW1lIChkaW5fbmFtZSwgZmx1eCkgPVxuICAgICAgICBGYWtlemlwLmFkZF9lbnRyeVxuICAgICAgICAgIChpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggZGluX25hbWUgXCIuaHRtbFwiIHRoZW5cbiAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYUAuXCIgRGF0YS5wcmludF9odG1sX2RpbiBmbHV4XG4gICAgICAgICAgIGVsc2UgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IGRpbl9uYW1lIFwiLmpzb25cIiB0aGVuXG4gICAgICAgICAgICAgRGF0YS5zdHJpbmdfb2ZfZGluIGZsdXhcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiAoRGF0YS5wcmludF9kb3RfZGluID91dWlkOk5vbmUpIGZsdXgpXG4gICAgICAgICAgZmlsZVxuICAgICAgICAgIChmaWxlbmFtZSBeIFwiL1wiIF4gZGluX25hbWUpXG4gICAgICBpblxuICAgICAgbGV0IHByb2plY3Rpb24gdCA9XG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBmaWxlbmFtZSA9IFwic2ltdWxhdGlvbl9vdXRwdXRzXCIgaW5cbiAgICAgICAgICBsZXQgZmlsZSA9IEZha2V6aXAub3Blbl9vdXQgKGZpbGVuYW1lIF4gXCIuemlwXCIpIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEZha2V6aXAuYWRkX2VudHJ5IHQuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIGZpbGVcbiAgICAgICAgICAgICAgKGZpbGVuYW1lIF4gXCIvaW5wdXRzLmthXCIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRmFrZXppcC5hZGRfZW50cnkgdC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgZmlsZVxuICAgICAgICAgICAgICAoZmlsZW5hbWUgXiBcIi9sb2cudHh0XCIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgbWF0Y2ggdC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9wbG90IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIHBsb3QgLT5cbiAgICAgICAgICAgICAgRmFrZXppcC5hZGRfZW50cnlcbiAgICAgICAgICAgICAgICAoRGF0YS5leHBvcnRfcGxvdCB+aXNfdHN2OmZhbHNlIHBsb3QpXG4gICAgICAgICAgICAgICAgZmlsZSAoZmlsZW5hbWUgXiBcIi9kYXRhLmNzdlwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLml0ZXJcbiAgICAgICAgICAgICAgKGZ1biBuYW1lIGNvbnRlbnQgLT5cbiAgICAgICAgICAgICAgICBGYWtlemlwLmFkZF9lbnRyeVxuICAgICAgICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgXCJcXG5cIiAoTGlzdC5yZXYgY29udGVudCkpXG4gICAgICAgICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAgICAgICAoZmlsZW5hbWUgXiBcIi9cIiBeIG5hbWUpKVxuICAgICAgICAgICAgICB0LkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMaXN0Lml0ZXIgKGFkZF9kaW4gZmlsZSBmaWxlbmFtZSlcbiAgICAgICAgICAgICAgdC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9kaW5zXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuaXRlclxuICAgICAgICAgICAgICAoYWRkX3NuYXBzaG90IGZpbGUgZmlsZW5hbWUpXG4gICAgICAgICAgICAgIHQuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb3V0ID0gRmFrZXppcC5jbG9zZV9vdXQgZmlsZSBpblxuICAgICAgICAgIFJlc3VsdF91dGlsLm9rIG91dFxuICAgICAgICB3aXRoIEZha2V6aXAuRXJyb3IgKF8sIGYsIGUpIC0+XG4gICAgICAgICAgQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIChcIlppcCBlcnJvciBpbiBcIiBeIGYgXiBcIjogXCIgXiBlKVxuICAgICAgaW5cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2VzcyB+cHJvamVjdGlvblxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcGF1c2UgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgS2FwcGFfZmFjYWRlLnBhdXNlIH5zeXN0ZW1fcHJvY2VzcyB+dCA+Pj0gZnVuIF8gLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBzaW11bGF0aW9uX3N0b3AgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgS2FwcGFfZmFjYWRlLnN0b3AgfnN5c3RlbV9wcm9jZXNzIH50XG4gICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biAoKSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyBlcnJvcnMpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAoc2ltdWxhdGlvbl9wZXJ0dXJiYXRpb24gOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2ludGVydmVudGlvbilcbiAgICAgICAgOiBzdHJpbmcgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBiaW5kX3NpbXVsYXRpb24gc2ltdWxhdGlvbiAoZnVuIHQgLT5cbiAgICAgICAgICBLYXBwYV9mYWNhZGUucGVydHVyYmF0aW9uIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgICAgICAgfnBlcnR1cmJhdGlvbjpzaW11bGF0aW9uX3BlcnR1cmJhdGlvblxuICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgfm9rOihmdW4gcyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzKSlcbiAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzIGVycm9ycykpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY29udGludWUgKHBhdXNlX2NvbmRpdGlvbiA6IHN0cmluZylcbiAgICAgICAgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgS2FwcGFfZmFjYWRlLmNvbnRpbnVlIH5zeXN0ZW1fcHJvY2VzcyB+dCB+cGF1c2VfY29uZGl0aW9uXG4gICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biAoKSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyBlcnJvcnMpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2luZm8gOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm8gQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBiaW5kX3NpbXVsYXRpb24gc2ltdWxhdGlvbiAoZnVuIHQgLT5cbiAgICAgICAgICBLYXBwYV9mYWNhZGUucHJvZ3Jlc3MgfnN5c3RlbV9wcm9jZXNzIH50XG4gICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biBwcm9ncmVzcyAtPlxuICAgICAgICAgICAgICAgICAgS2FwcGFfZmFjYWRlLm91dHB1dHMgfnN5c3RlbV9wcm9jZXNzIH50XG4gICAgICAgICAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gb3V0cHV0cyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm9rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFwaV9kYXRhLmFwaV9zaW11bGF0aW9uX3N0YXR1cyBwcm9ncmVzcyBvdXRwdXRzKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JzKSkpXG4gICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyBlcnJvcnMpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2VmZmljaWVuY3kgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKEthcHBhX2ZhY2FkZS5lZmZpY2llbmN5IHQpKSlcblxuICAgIGluaGVyaXQgbWFuYWdlcl9maWxlX2xpbmUgc3lzdGVtX3Byb2Nlc3NcbiAgICBpbmhlcml0IG1hbmFnZXJfZmx1eF9tYXAgc3lzdGVtX3Byb2Nlc3NcbiAgICBpbmhlcml0IG1hbmFnZXJfbG9nX21lc3NhZ2Ugc3lzdGVtX3Byb2Nlc3NcbiAgICBpbmhlcml0IG1hbmFnZXJfcGxvdCBzeXN0ZW1fcHJvY2Vzc1xuICAgIGluaGVyaXQgbWFuYWdlcl9zbmFwc2hvdCBzeXN0ZW1fcHJvY2Vzc1xuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBpbml0X2NvbXByZXNzaW9uX21vZGUgPSBmdW5jdGlvblxuICB8IFN0b3J5X2pzb24uQ2F1c2FsIC0+XG4gICAgeyBBcGkuY2F1c2FsID0gdHJ1ZTsgQXBpLndlYWsgPSBmYWxzZTsgQXBpLnN0cm9uZyA9IGZhbHNlIH1cbiAgfCBTdG9yeV9qc29uLldlYWsgLT5cbiAgICB7IEFwaS5jYXVzYWwgPSBmYWxzZTsgQXBpLndlYWsgPSB0cnVlOyBBcGkuc3Ryb25nID0gZmFsc2UgfVxuICB8IFN0b3J5X2pzb24uU3Ryb25nIC0+XG4gICAgeyBBcGkuY2F1c2FsID0gZmFsc2U7IEFwaS53ZWFrID0gZmFsc2U7IEFwaS5zdHJvbmcgPSB0cnVlIH1cblxubGV0IGFkZF9jb21wcmVzc2lvbl9tb2RlIHsgQXBpLmNhdXNhbDsgQXBpLndlYWs7IEFwaS5zdHJvbmcgfSA9IGZ1bmN0aW9uXG4gIHwgU3RvcnlfanNvbi5DYXVzYWwgLT4geyBBcGkuY2F1c2FsID0gdHJ1ZTsgQXBpLndlYWs7IEFwaS5zdHJvbmcgfVxuICB8IFN0b3J5X2pzb24uV2VhayAtPiB7IEFwaS5jYXVzYWw7IEFwaS53ZWFrID0gdHJ1ZTsgQXBpLnN0cm9uZyB9XG4gIHwgU3RvcnlfanNvbi5TdHJvbmcgLT4geyBBcGkuY2F1c2FsOyBBcGkud2VhazsgQXBpLnN0cm9uZyA9IHRydWUgfVxuXG5sZXQgcHJpbnRfY29tcHJlc3Npb25fbW9kZXMgZiB7IEFwaS5jYXVzYWw7IEFwaS53ZWFrOyBBcGkuc3Ryb25nIH0gPVxuICBsZXQgKCkgPSBpZiBjYXVzYWwgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJDQVVTQUxcIiBpblxuICBsZXQgKCkgPVxuICAgIGlmIHdlYWsgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmXG4gICAgICAgIChpZiBjYXVzYWwgdGhlblxuICAgICAgICAgICBcIiwgV0VBS1wiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiV0VBS1wiKVxuICBpblxuICBpZiBzdHJvbmcgdGhlblxuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgICAgKGlmIGNhdXNhbCB8fCB3ZWFrIHRoZW5cbiAgICAgICAgIFwiLCBTVFJPTkdcIlxuICAgICAgIGVsc2VcbiAgICAgICAgIFwiU1RST05HXCIpXG5cbnR5cGUgc3RhdGVfdCA9IHtcbiAgcnVubmluZzogYm9vbDtcbiAgcHJvZ3Jlc3M6IFN0b3J5X2pzb24ucHJvZ3Jlc3NfYmFyIG9wdGlvbjtcbiAgbG9nOiBzdHJpbmcgbGlzdDtcbiAgc3RvcmllczpcbiAgICAoQXBpLmNvbXByZXNzaW9uX21vZGVzXG4gICAgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IGxpc3QgbGlzdFxuICAgICogR3JhcGhfbG9nZ2Vyc19zaWcuZ3JhcGgpXG4gICAgTW9kcy5JbnRNYXAudDtcbn1cblxudHlwZSBzdGF0ZSA9IHN0YXRlX3QgcmVmXG5cbigqbGV0IHN0YXRlX2VxIGEgYiA9XG4gIGEucnVubmluZyA9IGIucnVubmluZyAmJlxuICBPcHRpb25fdXRpbC5lcXVhbCAoPSkgYS5wcm9ncmVzcyBiLnByb2dyZXNzICYmXG4gICh0cnkgTGlzdC5mb3JfYWxsMiAoZnVuIHggeSAtPiBTdHJpbmcuY29tcGFyZSB4IHkgPSAwKSBhLmxvZyBiLmxvZ1xuICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gZmFsc2UpXG4gICYmIE1vZHMuSW50TWFwLmVxdWFsICg9KSBhLnN0b3JpZXMgYi5zdG9yaWVzKilcblxubGV0IGluaXRpYWxfc3RhdGUgPVxuICB7IHJ1bm5pbmcgPSBmYWxzZTsgcHJvZ3Jlc3MgPSBOb25lOyBsb2cgPSBbXTsgc3RvcmllcyA9IE1vZHMuSW50TWFwLmVtcHR5IH1cblxubGV0IGNvbnRyb2xsZXIgcyA9IGZ1bmN0aW9uXG4gIHwgU3RvcnlfanNvbi5Qcm9ncmVzcyBwIC0+XG4gICAgeyBydW5uaW5nID0gcy5ydW5uaW5nOyBwcm9ncmVzcyA9IFNvbWUgcDsgbG9nID0gcy5sb2c7IHN0b3JpZXMgPSBzLnN0b3JpZXMgfVxuICB8IFN0b3J5X2pzb24uUGhhc2UgKFN0b3J5X2pzb24uU3RhcnQsIG0pIC0+XG4gICAge1xuICAgICAgcnVubmluZyA9IHRydWU7XG4gICAgICBwcm9ncmVzcyA9IE5vbmU7XG4gICAgICBsb2cgPSBbIG0gXTtcbiAgICAgIHN0b3JpZXMgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICB9XG4gIHwgU3RvcnlfanNvbi5QaGFzZSAoU3RvcnlfanNvbi5JbnByb2dyZXNzLCBtKSAtPlxuICAgIHtcbiAgICAgIHJ1bm5pbmcgPSBzLnJ1bm5pbmc7XG4gICAgICBwcm9ncmVzcyA9IHMucHJvZ3Jlc3M7XG4gICAgICBsb2cgPSBtIDo6IHMubG9nO1xuICAgICAgc3RvcmllcyA9IHMuc3RvcmllcztcbiAgICB9XG4gIHwgU3RvcnlfanNvbi5QaGFzZSAoU3RvcnlfanNvbi5GYWlsbHVyZSwgbSkgLT5cbiAgICB7XG4gICAgICBydW5uaW5nID0gcy5ydW5uaW5nO1xuICAgICAgcHJvZ3Jlc3MgPSBzLnByb2dyZXNzO1xuICAgICAgbG9nID0gbSA6OiBzLmxvZztcbiAgICAgIHN0b3JpZXMgPSBzLnN0b3JpZXM7XG4gICAgfVxuICB8IFN0b3J5X2pzb24uUGhhc2UgKFN0b3J5X2pzb24uU3VjY2VzcywgbSkgLT5cbiAgICB7XG4gICAgICBydW5uaW5nID0gZmFsc2U7XG4gICAgICBwcm9ncmVzcyA9IHMucHJvZ3Jlc3M7XG4gICAgICBsb2cgPSBtIDo6IHMubG9nO1xuICAgICAgc3RvcmllcyA9IHMuc3RvcmllcztcbiAgICB9XG4gIHwgU3RvcnlfanNvbi5TdG9yeSBjIC0+XG4gICAgKG1hdGNoIGMuU3RvcnlfanNvbi5zdG9yeSB3aXRoXG4gICAgfCBTdG9yeV9qc29uLk5ldyBlIC0+XG4gICAgICB7XG4gICAgICAgIHJ1bm5pbmcgPSBzLnJ1bm5pbmc7XG4gICAgICAgIHByb2dyZXNzID0gcy5wcm9ncmVzcztcbiAgICAgICAgbG9nID0gcy5sb2c7XG4gICAgICAgIHN0b3JpZXMgPVxuICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBlLlN0b3J5X2pzb24uaWRcbiAgICAgICAgICAgICggaW5pdF9jb21wcmVzc2lvbl9tb2RlIGMuU3RvcnlfanNvbi5zdG9yeV9tb2RlLFxuICAgICAgICAgICAgICBbIGMuU3RvcnlfanNvbi5sb2dfaW5mbyBdLFxuICAgICAgICAgICAgICBlLlN0b3J5X2pzb24uZ3JhcGggKVxuICAgICAgICAgICAgcy5zdG9yaWVzO1xuICAgICAgfVxuICAgIHwgU3RvcnlfanNvbi5TYW1lX2FzIGkgLT5cbiAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIHMuc3RvcmllcyB3aXRoXG4gICAgICB8IFNvbWUgKGNtLCBpbmZvcywgZ3JhcGgpIC0+XG4gICAgICAgIHtcbiAgICAgICAgICBydW5uaW5nID0gcy5ydW5uaW5nO1xuICAgICAgICAgIHByb2dyZXNzID0gcy5wcm9ncmVzcztcbiAgICAgICAgICBsb2cgPSBzLmxvZztcbiAgICAgICAgICBzdG9yaWVzID1cbiAgICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBpXG4gICAgICAgICAgICAgICggYWRkX2NvbXByZXNzaW9uX21vZGUgY20gYy5TdG9yeV9qc29uLnN0b3J5X21vZGUsXG4gICAgICAgICAgICAgICAgYy5TdG9yeV9qc29uLmxvZ19pbmZvIDo6IGluZm9zLFxuICAgICAgICAgICAgICAgIGdyYXBoIClcbiAgICAgICAgICAgICAgcy5zdG9yaWVzO1xuICAgICAgICB9XG4gICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlKSlcblxubGV0IHJlY2VpdmUgdXBkYXRlX3N0YXRlIHggPVxuICB1cGRhdGVfc3RhdGUgKFN0b3J5X2pzb24ubWVzc2FnZV9vZl9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbmxldCBpbml0X3N0YXRlICgpID1cbiAgbGV0IGN1cnJlbnRfc3RhdGUgPSByZWYgaW5pdGlhbF9zdGF0ZSBpblxuICBjdXJyZW50X3N0YXRlLCBmdW4geCAtPiBjdXJyZW50X3N0YXRlIDo9IGNvbnRyb2xsZXIgIWN1cnJlbnRfc3RhdGUgeFxuXG5jbGFzcyB2aXJ0dWFsIG5ld19jbGllbnQgfnBvc3QgY3VycmVudF9zdGF0ZSA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBpc19ydW5uaW5nIDogYm9vbFxuXG4gICAgbWV0aG9kIGNvbmZpZ19zdG9yeV9jb21wdXRhdGlvbiB7IEFwaS5jYXVzYWw7IEFwaS53ZWFrOyBBcGkuc3Ryb25nIH0gPVxuICAgICAgaWYgc2VsZiNpc19ydW5uaW5nIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHBvc3RcbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMudG9fc3RyaW5nXG4gICAgICAgICAgICAgICAoYExpc3RcbiAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgIGBTdHJpbmcgXCJDT05GSUdcIjtcbiAgICAgICAgICAgICAgICAgICBgQXNzb2NcbiAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJub25lXCIsIGBCb29sIGNhdXNhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ3ZWFrXCIsIGBCb29sIHdlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgIFwic3Ryb25nXCIsIGBCb29sIHN0cm9uZztcbiAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICBpblxuICAgICAgICBMd3QucmV0dXJuX29rICgpXG4gICAgICApIGVsc2VcbiAgICAgICAgTHd0LnJldHVybl9lcnJvciBcIkthU3RvciBhZ2VudCBpcyBkZWFkXCJcblxuICAgIG1ldGhvZCByYXdfbGF1bmNoX3N0b3J5X2NvbXB1dGF0aW9uIHRyYWNlX3RleHQgPVxuICAgICAgaWYgc2VsZiNpc19ydW5uaW5nIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBjdXJyZW50X3N0YXRlIDo9IHsgaW5pdGlhbF9zdGF0ZSB3aXRoIHJ1bm5pbmcgPSB0cnVlIH0gaW5cbiAgICAgICAgbGV0ICgpID0gcG9zdCAoXCJbXFxcIlJVTlxcXCIsIFwiIF4gdHJhY2VfdGV4dCBeIFwiXVwiKSBpblxuICAgICAgICBMd3QucmV0dXJuX29rICgpXG4gICAgICApIGVsc2VcbiAgICAgICAgTHd0LnJldHVybl9lcnJvciBcIkthU3RvciBhZ2VudCBpcyBkZWFkXCJcblxuICAgIG1ldGhvZCBzdG9yeV9sb2cgPSAhY3VycmVudF9zdGF0ZS5sb2dcbiAgICBtZXRob2Qgc3RvcnlfaXNfY29tcHV0aW5nID0gIWN1cnJlbnRfc3RhdGUucnVubmluZ1xuICAgIG1ldGhvZCBzdG9yeV9wcm9ncmVzcyA9ICFjdXJyZW50X3N0YXRlLnByb2dyZXNzXG4gICAgbWV0aG9kIHN0b3J5X2xpc3QgPSAhY3VycmVudF9zdGF0ZS5zdG9yaWVzXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxudHlwZSBtYWlsYm94ID1cbiAgKCBpbnQsXG4gICAgKFlvanNvbi5CYXNpYy50LCBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIubWV0aG9kX2hhbmRsZXIpIFJlc3VsdC5yZXN1bHRcbiAgICBMd3QudSApXG4gIEhhc2h0YmwudFxuXG5sZXQgcmVwbHlfb2Zfc3RyaW5nIHggPVxuICBtYXRjaCBZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCB3aXRoXG4gIHwgYEFzc29jIFsgKFwiaWRcIiwgYEludCBpZCk7IChcImNvZGVcIiwgYFN0cmluZyBcIkVSUk9SXCIpOyAoXCJkYXRhXCIsIGVycikgXSAtPlxuICAgIFNvbWUgaWQsIFJlc3VsdC5FcnJvciAoRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLm9mX2pzb24gZXJyKVxuICB8IGBBc3NvYyBbIChcImlkXCIsIGBJbnQgaWQpOyAoXCJjb2RlXCIsIGBTdHJpbmcgXCJTVUNDRVNTXCIpOyAoXCJkYXRhXCIsIGRhdGEpIF0gLT5cbiAgICBTb21lIGlkLCBSZXN1bHQuT2sgZGF0YVxuICB8IHggLT5cbiAgICAoIE5vbmUsXG4gICAgICBSZXN1bHQuRXJyb3JcbiAgICAgICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5hZGRfdW5jYXVnaHRfZXJyb3JcbiAgICAgICAgICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5idWlsZF91bmNhdWdodF9leGNlcHRpb25cbiAgICAgICAgICAgICAgfmZpbGVfbmFtZTpcImthc2FfY2xpZW50XCJcbiAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgKFwiSW52YWxpZCByZXNwb25zZSBmcm9tIEthU2E6IFwiIF4gWW9qc29uLkJhc2ljLnRvX3N0cmluZyB4KVxuICAgICAgICAgICAgICBFeGl0KVxuICAgICAgICAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZW1wdHlfZXJyb3JfaGFuZGxlcikgKVxuXG5sZXQgcmVjZWl2ZSBtYWlsYm94IHggPVxuICBtYXRjaCByZXBseV9vZl9zdHJpbmcgeCB3aXRoXG4gIHwgU29tZSBpZCwgb3V0IC0+XG4gICAgbGV0IHRocmVhZCA9IEhhc2h0YmwuZmluZCBtYWlsYm94IGlkIGluXG4gICAgbGV0ICgpID0gSGFzaHRibC5yZW1vdmUgbWFpbGJveCBpZCBpblxuICAgIEx3dC53YWtldXAgdGhyZWFkIG91dFxuICB8IE5vbmUsIF8gLT4gKClcblxubGV0IG5ld19tYWlsYm94ICgpID0gSGFzaHRibC5jcmVhdGUgMlxubGV0IGlzX2NvbXB1dGluZyBtYWlsYm94ID0gSGFzaHRibC5sZW5ndGggbWFpbGJveCA8PiAwXG5cbmNsYXNzIG5ld19jbGllbnQgfmlzX3J1bm5pbmcgfnBvc3QgKG1haWxib3ggOiBtYWlsYm94KSA6XG4gIEFwaS5tYW5hZ2VyX3N0YXRpY19hbmFseXNpcyA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSBpZCA9IDBcblxuICAgIG1ldGhvZCBwcml2YXRlIHJhd19tZXNzYWdlIHBvc3QgcmVxdWVzdCA9XG4gICAgICBpZiBpc19ydW5uaW5nICgpIHRoZW4gKFxuICAgICAgICBsZXQgcmVzdWx0LCBmZWVkZXIgPSBMd3QudGFzayAoKSBpblxuICAgICAgICBsZXQgb3V0YnVmID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG91dGJ1ZiBcIntpZDpcIiBpblxuICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgKHN0cmluZ19vZl9pbnQgaWQpIGluXG4gICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG91dGJ1ZiBcIixkYXRhOlwiIGluXG4gICAgICAgIGxldCAoKSA9IHJlcXVlc3Qgb3V0YnVmIGluXG4gICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG91dGJ1ZiBcIn1cIiBpblxuICAgICAgICBsZXQgKCkgPSBwb3N0IChCdWZmZXIuY29udGVudHMgb3V0YnVmKSBpblxuICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbWFpbGJveCBpZCBmZWVkZXIgaW5cbiAgICAgICAgbGV0ICgpID0gaWQgPC0gaWQgKyAxIGluXG4gICAgICAgIHJlc3VsdFxuICAgICAgKSBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm5fZXJyb3JcbiAgICAgICAgICAoRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmFkZF91bmNhdWdodF9lcnJvclxuICAgICAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uXG4gICAgICAgICAgICAgICAgfmZpbGVfbmFtZTpcImthc2FfY2xpZW50XCIgfm1lc3NhZ2U6XCJLYVNhIGFnZW50IGlzIGRlYWRcIiBFeGl0KVxuICAgICAgICAgICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5lbXB0eV9lcnJvcl9oYW5kbGVyKVxuXG4gICAgbWV0aG9kIHByaXZhdGUgbWVzc2FnZSByZXF1ZXN0ID1cbiAgICAgIHNlbGYjcmF3X21lc3NhZ2UgcG9zdCAoZnVuIG91dGIgLT4gWW9qc29uLkJhc2ljLnRvX2J1ZmZlciBvdXRiIHJlcXVlc3QpXG5cbiAgICBtZXRob2QgaW5pdF9zdGF0aWNfYW5hbHlzZXJfcmF3IGNvbXBpbCA9XG4gICAgICBsZXQgcmVxdWVzdCBvdXRidWYgPVxuICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgXCJbIFxcXCJJTklUXFxcIiwgXCIgaW5cbiAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb3V0YnVmIGNvbXBpbCBpblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgXCJdXCJcbiAgICAgIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI3Jhd19tZXNzYWdlIHBvc3QgcmVxdWVzdCkgKGZ1bmN0aW9uXG4gICAgICAgIHwgYE51bGwgLT4gUmVzdWx0Lk9rICgpXG4gICAgICAgIHwgeCAtPlxuICAgICAgICAgIFJlc3VsdC5FcnJvclxuICAgICAgICAgICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5hZGRfdW5jYXVnaHRfZXJyb3JcbiAgICAgICAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uXG4gICAgICAgICAgICAgICAgICB+ZmlsZV9uYW1lOlwia2FzYV9jbGllbnRcIlxuICAgICAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAgIChcIk5vdCBhIEthU2EgSU5JVCByZXNwb25zZTogXCIgXiBZb2pzb24uQmFzaWMudG9fc3RyaW5nIHgpXG4gICAgICAgICAgICAgICAgICBFeGl0KVxuICAgICAgICAgICAgICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmVtcHR5X2Vycm9yX2hhbmRsZXIpKVxuXG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyIGNvbXBpbCA9XG4gICAgICBzZWxmI2luaXRfc3RhdGljX2FuYWx5c2VyX3Jhd1xuICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoQXN0LmNvbXBpbF90b19qc29uIGNvbXBpbCkpXG5cbiAgICBtZXRob2QgZ2V0X2NvbnRhY3RfbWFwIGFjY3VyYWN5ID1cbiAgICAgIGxldCByZXF1ZXN0ID1cbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoYFN0cmluZyBcIkNPTlRBQ1RfTUFQXCJcbiAgICAgICAgICA6OlxuICAgICAgICAgIChtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGEgLT4gWyBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGEgXSkpXG4gICAgICBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPiBSZXN1bHQuT2sgeClcblxuICAgIG1ldGhvZCBnZXRfcG9zX29mX3J1bGVzX2FuZF92YXJzID1cbiAgICAgIGxldCByZXF1ZXN0ID0gYExpc3QgWyBgU3RyaW5nIFwiSU5GTFVFTkNFX01BUF9OT0RFU19MT0NBVElPTlwiIF0gaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBSZXN1bHQuT2sgKFB1YmxpY19kYXRhLnBvc19vZl9ydWxlc19hbmRfdmFyc19vZl9qc29uIHgpKVxuXG4gICAgbWV0aG9kIGdldF9pbmZsdWVuY2VfbWFwX3JhdyBhY2N1cmFjeSA9XG4gICAgICBsZXQgcmVxdWVzdCA9XG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKGBTdHJpbmcgXCJJTkZMVUVOQ0VfTUFQXCJcbiAgICAgICAgICA6OlxuICAgICAgICAgIChtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGEgLT4gWyBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGEgXSkpXG4gICAgICBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIFJlc3VsdC5PayAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfbG9jYWxfaW5mbHVlbmNlX21hcCA/ZndkID9id2QgP29yaWdpbiB+dG90YWwgYWNjdXJhY3kgPVxuICAgICAgbGV0IHJlcXVlc3QgPVxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChgU3RyaW5nIFwiSU5GTFVFTkNFX01BUFwiXG4gICAgICAgICAgOjogKGZ1biBhY2N1cmFjeSBsIC0+XG4gICAgICAgICAgICAgICBtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gbFxuICAgICAgICAgICAgICAgfCBTb21lIGEgLT4gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhIDo6IGwpXG4gICAgICAgICAgICAgICBhY2N1cmFjeVxuICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2ZfaW50IGZ3ZDtcbiAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludCBid2Q7XG4gICAgICAgICAgICAgICAgIEpzb25VdGlsLm9mX2ludCB0b3RhbDtcbiAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICBvcmlnaW47XG4gICAgICAgICAgICAgICBdKVxuICAgICAgaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgbyA9IFB1YmxpY19kYXRhLmxvY2FsX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiB4IGluXG4gICAgICAgICAgUmVzdWx0Lk9rIG8pXG5cbiAgICBtZXRob2QgZ2V0X2luaXRpYWxfbm9kZSA9XG4gICAgICBsZXQgcmVxdWVzdCA9IGBMaXN0IFsgYFN0cmluZyBcIklORkxVRU5DRV9NQVBfT1JJR0lOQUxfTk9ERVwiIF0gaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgbyA9XG4gICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb24gUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uIHhcbiAgICAgICAgICBpblxuICAgICAgICAgIFJlc3VsdC5PayBvKVxuXG4gICAgbWV0aG9kIGdldF9uZXh0X25vZGUganNvbiA9XG4gICAgICBsZXQgcmVxdWVzdCA9XG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgW1xuICAgICAgICAgICAgYFN0cmluZyBcIklORkxVRU5DRV9NQVBfTkVYVF9OT0RFXCI7XG4gICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiBqc29uO1xuICAgICAgICAgIF1cbiAgICAgIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IG8gPVxuICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiB4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBSZXN1bHQuT2sgbylcblxuICAgIG1ldGhvZCBnZXRfcHJldmlvdXNfbm9kZSBqc29uID1cbiAgICAgIGxldCByZXF1ZXN0ID1cbiAgICAgICAgYExpc3RcbiAgICAgICAgICBbXG4gICAgICAgICAgICBgU3RyaW5nIFwiSU5GTFVFTkNFX01BUF9QUkVWSU9VU19OT0RFXCI7XG4gICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiBqc29uO1xuICAgICAgICAgIF1cbiAgICAgIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IG8gPVxuICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiB4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBSZXN1bHQuT2sgbylcblxuICAgIG1ldGhvZCBnZXRfbm9kZXNfb2ZfaW5mbHVlbmNlX21hcCBhY2N1cmFjeSA9XG4gICAgICBsZXQgcmVxdWVzdCA9XG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKGBTdHJpbmcgXCJJTkZMVUVOQ0VfTUFQX0FMTF9OT0RFU1wiXG4gICAgICAgICAgOjpcbiAgICAgICAgICAobWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBhIC0+IFsgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhIF0pKVxuICAgICAgaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBSZXN1bHQuT2sgKFB1YmxpY19kYXRhLm5vZGVzX29mX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiB4KSlcblxuICAgIG1ldGhvZCBnZXRfZGVhZF9ydWxlcyA9XG4gICAgICBsZXQgcmVxdWVzdCA9IGBMaXN0IFsgYFN0cmluZyBcIkRFQURfUlVMRVNcIiBdIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgUmVzdWx0Lk9rIChQdWJsaWNfZGF0YS5kZWFkX3J1bGVzX29mX2pzb24geCkpXG5cbiAgICBtZXRob2QgZ2V0X2RlYWRfYWdlbnRzID1cbiAgICAgIGxldCByZXF1ZXN0ID0gYExpc3QgWyBgU3RyaW5nIFwiREVBRF9BR0VOVFNcIiBdIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgUmVzdWx0Lk9rIChQdWJsaWNfZGF0YS5qc29uX3RvX2RlYWRfYWdlbnRzIHgpKVxuXG4gICAgbWV0aG9kIGdldF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICAgICAgbGV0IHJlcXVlc3QgPSBgTGlzdCBbIGBTdHJpbmcgXCJOT05fV0VBS0xZX1JFVkVSU0lCTEVfVFJBTlNJVElPTlNcIiBdIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgUmVzdWx0Lk9rIChQdWJsaWNfZGF0YS5zZXBhcmF0aW5nX3RyYW5zaXRpb25zX29mX2pzb24geCkpXG5cbiAgICBtZXRob2QgZ2V0X2NvbnN0cmFpbnRzX2xpc3QgPVxuICAgICAgbGV0IHJlcXVlc3QgPSBgTGlzdCBbIGBTdHJpbmcgXCJDT05TVFJBSU5UU1wiIF0gaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBSZXN1bHQuT2sgKFB1YmxpY19kYXRhLmxlbW1hc19saXN0X29mX2pzb24geCkpXG5cbiAgICBtZXRob2QgZ2V0X3BvdGVudGlhbF9wb2x5bWVycyBhY2N1cmFjeV9jbSBhY2N1cmFjeV9zY2MgPVxuICAgICAgbGV0IHJlcXVlc3QgPVxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChgU3RyaW5nIFwiUE9MWU1FUlNcIlxuICAgICAgICAgIDo6XG4gICAgICAgICAgKG1hdGNoIGFjY3VyYWN5X2NtLCBhY2N1cmFjeV9zY2Mgd2l0aFxuICAgICAgICAgIHwgTm9uZSwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBhLCBOb25lIC0+IFsgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhIF1cbiAgICAgICAgICB8IFNvbWUgYSwgU29tZSBiIC0+XG4gICAgICAgICAgICBbIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYTsgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBiIF1cbiAgICAgICAgICB8IE5vbmUsIFNvbWUgYiAtPlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIFB1YmxpY19kYXRhLkxvdztcbiAgICAgICAgICAgICAgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBiO1xuICAgICAgICAgICAgXSkpXG4gICAgICBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIFJlc3VsdC5PayAoUHVibGljX2RhdGEuc2NjX29mX2pzb24geCkpXG4gIGVuZFxuXG5jbGFzcyBuZXdfdW5pZm9ybV9jbGllbnQgfmlzX3J1bm5pbmcgfnBvc3QgKG1haWxib3ggOiBtYWlsYm94KSA6XG4gIEFwaS51bmlmb3JtX21hbmFnZXJfc3RhdGljX2FuYWx5c2lzID1cbiAgbGV0IHJhdyA9IG5ldyBuZXdfY2xpZW50IH5pc19ydW5uaW5nIH5wb3N0IG1haWxib3ggaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyX3JhdyBjb21waWwgPVxuICAgICAgcmF3I2luaXRfc3RhdGljX2FuYWx5c2VyX3JhdyBjb21waWwgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBpbml0X3N0YXRpY19hbmFseXNlciBjb21waWwgPVxuICAgICAgcmF3I2luaXRfc3RhdGljX2FuYWx5c2VyIGNvbXBpbCA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9jb250YWN0X21hcCBhY2N1cmFjeSA9XG4gICAgICByYXcjZ2V0X2NvbnRhY3RfbWFwIGFjY3VyYWN5ID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X2luZmx1ZW5jZV9tYXBfcmF3IGFjY3VyYWN5ID1cbiAgICAgIHJhdyNnZXRfaW5mbHVlbmNlX21hcF9yYXcgYWNjdXJhY3kgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfbG9jYWxfaW5mbHVlbmNlX21hcCA/ZndkID9id2QgP29yaWdpbiB+dG90YWwgYWNjdXJhY3kgPVxuICAgICAgcmF3I2dldF9sb2NhbF9pbmZsdWVuY2VfbWFwID9md2QgP2J3ZCA/b3JpZ2luIH50b3RhbCBhY2N1cmFjeVxuICAgICAgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfaW5pdGlhbF9ub2RlID0gcmF3I2dldF9pbml0aWFsX25vZGUgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfbmV4dF9ub2RlIGpzb24gPVxuICAgICAgcmF3I2dldF9uZXh0X25vZGUganNvbiA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9wcmV2aW91c19ub2RlIGpzb24gPVxuICAgICAgcmF3I2dldF9wcmV2aW91c19ub2RlIGpzb24gPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBzZWNyZXRfZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFycyA9XG4gICAgICByYXcjZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFycyA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9ub2Rlc19vZl9pbmZsdWVuY2VfbWFwIGFjY3VyYWN5ID1cbiAgICAgIHJhdyNnZXRfbm9kZXNfb2ZfaW5mbHVlbmNlX21hcCBhY2N1cmFjeSA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9kZWFkX3J1bGVzID0gcmF3I2dldF9kZWFkX3J1bGVzID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG4gICAgbWV0aG9kIGdldF9kZWFkX2FnZW50cyA9IHJhdyNnZXRfZGVhZF9hZ2VudHMgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICAgIHJhdyNnZXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X2NvbnN0cmFpbnRzX2xpc3QgPVxuICAgICAgcmF3I2dldF9jb25zdHJhaW50c19saXN0ID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X3BvdGVudGlhbF9wb2x5bWVycyBhY2N1cmFjeV9jbSBhY2N1cmFjeV9zY2MgPVxuICAgICAgcmF3I2dldF9wb3RlbnRpYWxfcG9seW1lcnMgYWNjdXJhY3lfY20gYWNjdXJhY3lfc2NjXG4gICAgICA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgXyBoYW5kbGUgPVxuICB8IE5vdGhpbmcgOiB1bml0IGhhbmRsZVxuICB8IENhdGFsb2cgOiBLZmlsZXMuY2F0YWxvZ19pdGVtIGxpc3QgaGFuZGxlXG4gIHwgSW5mbyA6IChzdHJpbmcgKiBpbnQpIGhhbmRsZVxuICB8IEFzdCA6IEFzdC5wYXJzaW5nX2NvbXBpbCBoYW5kbGVcblxudHlwZSBib3ggPVxuICB8IEIgOiAnYSBoYW5kbGUgKiAoJ2EsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudSAtPiBib3hcblxudHlwZSBtYWlsYm94ID0gKGludCwgYm94KSBIYXNodGJsLnRcblxubGV0IG5ld19tYWlsYm94ICgpID0gSGFzaHRibC5jcmVhdGUgMlxuXG5sZXQgcmVhZF9yZXN1bHQgZiBwIGxiID1cbiAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAoUmVzdWx0X3V0aWwucmVhZF90IGYgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgUmVzdWx0X3V0aWwucmVhZF9tZXNzYWdlKSlcbiAgICBwIGxiXG5cbmxldCByZWNlaXZlIG1haWxib3ggeCA9XG4gIEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nXG4gICAgKEpzb25VdGlsLnJlYWRfdmFyaWFudCBZb2pzb24uQmFzaWMucmVhZF9pbnQgKGZ1biBwIGxiIGlkIC0+XG4gICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgbWFpbGJveCBpZCB3aXRoXG4gICAgICAgICAgIHwgQiAoTm90aGluZywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9udWxsIHAgbGIpXG4gICAgICAgICAgIHwgQiAoQ2F0YWxvZywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHRcbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0IEtmaWxlcy5yZWFkX2NhdGFsb2dfaXRlbSlcbiAgICAgICAgICAgICAgICAgIHAgbGIpXG4gICAgICAgICAgIHwgQiAoSW5mbywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHRcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5yZWFkX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2ludClcbiAgICAgICAgICAgICAgICAgIHAgbGIpXG4gICAgICAgICAgIHwgQiAoQXN0LCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWQgKHJlYWRfcmVzdWx0IEFzdC5yZWFkX3BhcnNpbmdfY29tcGlsIHAgbGIpXG4gICAgICAgICBpblxuICAgICAgICAgSGFzaHRibC5yZW1vdmUgbWFpbGJveCBpZCkpXG4gICAgeFxuXG5sZXQgaXNfY29tcHV0aW5nIG1haWxib3ggPSBIYXNodGJsLmxlbmd0aCBtYWlsYm94IDw+IDBcblxuY2xhc3MgdmlydHVhbCBuZXdfY2xpZW50IH5wb3N0IG1haWxib3ggOiBBcGkubWFuYWdlcl9tb2RlbCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSBpZCA9IDBcbiAgICBtZXRob2QgdmlydHVhbCBpc19ydW5uaW5nIDogYm9vbFxuXG4gICAgbWV0aG9kIHByaXZhdGUgbWVzc2FnZSA6IHR5cGUgYS5cbiAgICAgICAgYSBoYW5kbGUgLT5cbiAgICAgICAgKEJ1ZmZlci50IC0+IHVuaXQpIC0+XG4gICAgICAgIChhLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnQgPVxuICAgICAgZnVuIGhhbmRsZSByZXF1ZXN0IC0+XG4gICAgICAgIGlmIHNlbGYjaXNfcnVubmluZyB0aGVuIChcbiAgICAgICAgICBsZXQgcmVzdWx0LCBmZWVkZXIgPSBMd3QudGFzayAoKSBpblxuICAgICAgICAgIGxldCBtZXNzYWdlID1cbiAgICAgICAgICAgIEpzb25VdGlsLnN0cmluZ19vZl93cml0ZVxuICAgICAgICAgICAgICAoZnVuIGIgKCkgLT5cbiAgICAgICAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgaWQpOyByZXF1ZXN0IF0pXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwb3N0IG1lc3NhZ2UgaW5cbiAgICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbWFpbGJveCBpZCAoQiAoaGFuZGxlLCBmZWVkZXIpKSBpblxuICAgICAgICAgIGxldCAoKSA9IGlkIDwtIHN1Y2MgaWQgaW5cbiAgICAgICAgICByZXN1bHRcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgKFJlc3VsdF91dGlsLmVycm9yXG4gICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwucmFuZ2UgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnRleHQgPSBcImthbW9oYSBhZ2VudCBoYXMgZGllZFwiO1xuICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX2RlbGV0ZSBmaWxlX2lkID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVEZWxldGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfdXBkYXRlIGZpbGVfaWQgZmlsZV9jb250ZW50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVVcGRhdGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9jb250ZW50KTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9tb3ZlIGZpbGVfcG9zaXRpb24gZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlTW92ZVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgYiBmaWxlX3Bvc2l0aW9uKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9nZXQgZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgSW5mbyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlR2V0XCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX2NyZWF0ZSBmaWxlX3Bvc2l0aW9uIGZpbGVfaWQgZmlsZV9jb250ZW50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVDcmVhdGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgZmlsZV9wb3NpdGlvbik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9jb250ZW50KTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9jYXRhbG9nID1cbiAgICAgIHNlbGYjbWVzc2FnZSBDYXRhbG9nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVDYXRhbG9nXCIpIF0pXG5cbiAgICBtZXRob2Qgc2VjcmV0X3Byb2plY3RfcGFyc2UgPVxuICAgICAgc2VsZiNtZXNzYWdlIEFzdCAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJQcm9qZWN0UGFyc2VcIikgXSlcblxuICAgIG1ldGhvZCBwcm9qZWN0X292ZXJ3cml0ZSBmaWxlX2lkIGFzdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJQcm9qZWN0T3ZlcndyaXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gQXN0LndyaXRlX3BhcnNpbmdfY29tcGlsIGIgYXN0KTtcbiAgICAgICAgICAgIF0pXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuY2xhc3Mgc2ltdWxhdGlvbiAocnVudGltZV9zdGF0ZSA6IEthcHBhX2ZhY2FkZS50KVxuICAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlcikgOlxuICBBcGlfZW52aXJvbm1lbnQuc2ltdWxhdGlvbiA9XG4gIG9iamVjdFxuICAgIHZhbCBtdXRhYmxlIF9ydW50aW1lX3N0YXRlID0gcnVudGltZV9zdGF0ZVxuICAgIHZhbCBtdXRhYmxlIF9zaW11bGF0aW9uX3BhcmFtZXRlciA9IHNpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgbWV0aG9kIGdldF9ydW50aW1lX3N0YXRlICgpID0gX3J1bnRpbWVfc3RhdGVcblxuICAgIG1ldGhvZCBzZXRfcnVudGltZV9zdGF0ZSAocnVudGltZV9zdGF0ZSA6IEthcHBhX2ZhY2FkZS50KSA9XG4gICAgICBfcnVudGltZV9zdGF0ZSA8LSBydW50aW1lX3N0YXRlXG5cbiAgICBtZXRob2QgZ2V0X3NpbXVsYXRpb25fcGFyYW1ldGVyICgpID0gX3NpbXVsYXRpb25fcGFyYW1ldGVyXG5cbiAgICBtZXRob2Qgc2V0X3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGFyYW1ldGVyKSA6IHVuaXQgPVxuICAgICAgX3NpbXVsYXRpb25fcGFyYW1ldGVyIDwtIHNpbXVsYXRpb25fcGFyYW1ldGVyXG4gIGVuZFxuXG5jbGFzcyBwcm9qZWN0IDogQXBpX2Vudmlyb25tZW50LnByb2plY3QgPVxuICBvYmplY3RcbiAgICB2YWwgbXV0YWJsZSBfc2ltdWxhdGlvbiA9IE5vbmVcblxuICAgIHZhbCBtdXRhYmxlIF9zdGF0ZSA6IEFwaV9lbnZpcm9ubWVudC5wYXJzZV9zdGF0ZSBvcHRpb24gTHd0LnQgPVxuICAgICAgTHd0LnJldHVybl9ub25lXG5cbiAgICBtZXRob2QgZ2V0X3NpbXVsYXRpb24gKCkgPSBfc2ltdWxhdGlvblxuICAgIG1ldGhvZCB1bnNldF9zaW11bGF0aW9uICgpID0gX3NpbXVsYXRpb24gPC0gTm9uZVxuXG4gICAgbWV0aG9kIHNldF9zaW11bGF0aW9uXG4gICAgICAgIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgICAocnVudGltZV9zdGF0ZSA6IEthcHBhX2ZhY2FkZS50KSA9XG4gICAgICBfc2ltdWxhdGlvbiA8LVxuICAgICAgICBTb21lXG4gICAgICAgICAgKG5ldyBzaW11bGF0aW9uIHJ1bnRpbWVfc3RhdGUgc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgIDo+IEFwaV9lbnZpcm9ubWVudC5zaW11bGF0aW9uKVxuXG4gICAgbWV0aG9kIHNldF9zdGF0ZSAoc3RhdGUgOiBBcGlfZW52aXJvbm1lbnQucGFyc2Vfc3RhdGUgTHd0LnQpID1cbiAgICAgIGxldCAoKSA9IEx3dC5jYW5jZWwgX3N0YXRlIGluXG4gICAgICBfc3RhdGUgPC0gKHN0YXRlID4+PSBmdW4geCAtPiBMd3QucmV0dXJuIChTb21lIHgpKVxuXG4gICAgbWV0aG9kIGdldF9zdGF0ZSAoKSA6IEFwaV9lbnZpcm9ubWVudC5wYXJzZV9zdGF0ZSBvcHRpb24gTHd0LnQgPSBfc3RhdGVcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBnb29kIG9sZCBjYWtlIHBhdHRlcm4gKilcblxuY2xhc3MgbWFuYWdlciAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpIDpcbiAgQXBpLm1hbmFnZXJfc2ltdWxhdGlvbiA9XG4gIGxldCBwcm9qZWN0ID0gbmV3IEVudmlyb25tZW50X21lbW9yeS5wcm9qZWN0IGluXG4gIG9iamVjdFxuICAgIGluaGVyaXQgTWFuYWdlcl9zaW11bGF0aW9uLm1hbmFnZXJfc2ltdWxhdGlvbiBwcm9qZWN0IHN5c3RlbV9wcm9jZXNzXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxudHlwZSB0ID0ge1xuICBzdGF0ZV9lcnJvcl9lcnJvcnM6IFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdDtcbiAgX3N0YXRlX2Vycm9yX2xvY2F0aW9uOiBzdHJpbmc7XG59XG5cbmxldCBzdGF0ZV9lcnJvciwgc2V0X3N0YXRlX2Vycm9yID0gUmVhY3QuUy5jcmVhdGUgKFtdIDogdCBsaXN0KVxuXG5sZXQgY2xlYXJfZXJyb3JzIGxvY2F0aW9uID1cbiAgbGV0ICgpID1cbiAgICBDb21tb24uZGVidWcgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJDbGVhcl9lcnJvcnMgJXMgXCIgbG9jYXRpb24pKVxuICBpblxuICBzZXRfc3RhdGVfZXJyb3IgW11cblxubGV0IGhhc19lcnJvcnMgKCkgPVxuICBtYXRjaCBSZWFjdC5TLnZhbHVlIHN0YXRlX2Vycm9yIHdpdGhcbiAgfCBbXSAtPiBmYWxzZVxuICB8IF8gOjogXyAtPiB0cnVlXG5cbmxldCBhZGRfZXJyb3IgKGxvY2F0aW9uIDogc3RyaW5nKSAoZXJyb3JzIDogUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSA9XG4gICgqIGxvZyBsb2NhdGlvbiBhbmQgZXJyb3JzIGlmIGRlYnVnZ2luZyBpcyBlbmFibGVkICopXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmRlYnVnXG4gICAgICAoSnMuc3RyaW5nXG4gICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwic2V0X2Vycm9ycyB7IGxvY2F0aW9uIDogXFxcIiVzXFxcIiAsIGVycm9ycyA6IFtAWyVhQF1dIH1cIlxuICAgICAgICAgICAgbG9jYXRpb25cbiAgICAgICAgICAgIChQcC5saXN0IFBwLnNwYWNlIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UpXG4gICAgICAgICAgICBlcnJvcnMpKVxuICBpblxuICBsZXQgY3VycmVudF9zdGF0ZV9lcnJvciA6IHQgbGlzdCA9IFJlYWN0LlMudmFsdWUgc3RhdGVfZXJyb3IgaW5cbiAgbGV0IG5ld19zdGF0ZV9lcnJvciA6IHQgbGlzdCA9XG4gICAgeyBzdGF0ZV9lcnJvcl9lcnJvcnMgPSBlcnJvcnM7IF9zdGF0ZV9lcnJvcl9sb2NhdGlvbiA9IGxvY2F0aW9uIH1cbiAgICA6OiBjdXJyZW50X3N0YXRlX2Vycm9yXG4gIGluXG4gIHNldF9zdGF0ZV9lcnJvciBuZXdfc3RhdGVfZXJyb3JcblxubGV0IGVycm9ycyA6IFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCBSZWFjdC5zaWduYWwgPVxuICBSZWFjdC5TLm1hcFxuICAgIChmdW4gKHN0YXRlX2Vycm9yIDogdCBsaXN0KSAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBhY2MgdmFsdWUgLT4gdmFsdWUuc3RhdGVfZXJyb3JfZXJyb3JzIEAgYWNjKVxuICAgICAgICBbXSBzdGF0ZV9lcnJvcilcbiAgICBzdGF0ZV9lcnJvclxuXG5sZXQgd3JhcCA6XG4gICAgICAnYS4gP2FwcGVuZDpib29sIC0+IHN0cmluZyAtPiAnYSBBcGkucmVzdWx0IEx3dC50IC0+ICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuIGZ1biA/KGFwcGVuZCA9IGZhbHNlKSBsb2MgciAtPlxuICByXG4gID4+PVxuICBsZXQgKCkgPSBpZiBub3QgYXBwZW5kIHRoZW4gY2xlYXJfZXJyb3JzIGxvYyBpblxuICBSZXN1bHRfdXRpbC5mb2xkXG4gICAgfm9rOihmdW4gciAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayByKSlcbiAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgIGxldCAoKSA9IGFkZF9lcnJvciBsb2MgZXJyb3JzIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyBlcnJvcnMpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IHVybF9hcmdzID8oZGVmYXVsdCA9IFtdKSBrZXkgOiBzdHJpbmcgbGlzdCA9XG4gICgqIEhvc3RzIHRoZSB1c2VyIHNwZWNpZmllZCBvbiB0aGUgdXJsIGluIHRoZSBmb3JtXG4gICAgIGtleT0uLi4ma2V5PS4uJi4uLlxuICAqKVxuICBsZXQgYXJncyA9IFVybC5DdXJyZW50LmFyZ3VtZW50cyBpblxuICBtYXRjaCBMaXN0Lm1hcCBzbmQgKExpc3QuZmlsdGVyIChmdW4gKGssIF8pIC0+IGsgPSBrZXkpIGFyZ3MpIHdpdGhcbiAgfCBbXSAtPiBkZWZhdWx0XG4gIHwgc29tZSAtPiBzb21lXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5jbGFzcyB0eXBlIHByb2Nlc3NfY29uZmlndXJhdGlvbiA9IG9iamVjdFxuICBtZXRob2QgY29tbWFuZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgbWV0aG9kIGFyZ3MgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnByb3BcbiAgbWV0aG9kIG9uU3Rkb3V0IDogKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIEpzLnByb3BcbiAgbWV0aG9kIG9uU3RkZXJyIDogKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIEpzLnByb3BcbiAgbWV0aG9kIG9uQ2xvc2UgOiAodW5pdCAtPiB1bml0KSBKcy5wcm9wXG4gIG1ldGhvZCBvbkVycm9yIDogKHVuaXQgLT4gdW5pdCkgSnMucHJvcFxuZW5kXG5cbmxldCBjb25zdHJ1Y3Rvcl9wcm9jZXNzX2NvbmZpZ3VyYXRpb24gOiBwcm9jZXNzX2NvbmZpZ3VyYXRpb24gSnMudCBKcy5jb25zdHIgPVxuICBKcy5VbnNhZmUucHVyZV9qc19leHByIFwiT2JqZWN0XCJcblxubGV0IGNyZWF0ZV9wcm9jZXNzX2NvbmZpZ3VyYXRpb25cbiAgICA/KG9uU3Rkb3V0IDogKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIG9wdGlvbilcbiAgICA/KG9uU3RkZXJyIDogKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIG9wdGlvbilcbiAgICA/KG9uQ2xvc2UgOiAodW5pdCAtPiB1bml0KSBvcHRpb24pID8ob25FcnJvciA6ICh1bml0IC0+IHVuaXQpIG9wdGlvbilcbiAgICAoY29tbWFuZCA6IHN0cmluZykgKGFyZ3MgOiBzdHJpbmcgbGlzdCkgOiBwcm9jZXNzX2NvbmZpZ3VyYXRpb24gSnMudCA9XG4gIGxldCBjb25maWd1cmF0aW9uIDogcHJvY2Vzc19jb25maWd1cmF0aW9uIEpzLnQgPVxuICAgIG5ldyVqcyBjb25zdHJ1Y3Rvcl9wcm9jZXNzX2NvbmZpZ3VyYXRpb25cbiAgaW5cbiAgbGV0ICgpID1cbiAgICBjb25maWd1cmF0aW9uIyMuY29tbWFuZCA6PSBKcy5zdHJpbmcgY29tbWFuZDtcbiAgICBjb25maWd1cmF0aW9uIyMuYXJncyA6PSBKcy5hcnJheSAoQXJyYXkub2ZfbGlzdCAoTGlzdC5tYXAgSnMuc3RyaW5nIGFyZ3MpKTtcbiAgICAobWF0Y2ggb25TdGRvdXQgd2l0aFxuICAgIHwgU29tZSBvblN0ZG91dCAtPiBjb25maWd1cmF0aW9uIyMub25TdGRvdXQgOj0gb25TdGRvdXRcbiAgICB8IE5vbmUgLT4gKCkpO1xuICAgIChtYXRjaCBvblN0ZGVyciB3aXRoXG4gICAgfCBTb21lIG9uU3RkZXJyIC0+IGNvbmZpZ3VyYXRpb24jIy5vblN0ZGVyciA6PSBvblN0ZGVyclxuICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgKG1hdGNoIG9uQ2xvc2Ugd2l0aFxuICAgIHwgU29tZSBvbkNsb3NlIC0+IGNvbmZpZ3VyYXRpb24jIy5vbkNsb3NlIDo9IG9uQ2xvc2VcbiAgICB8IE5vbmUgLT4gKCkpO1xuICAgIChtYXRjaCBvbkVycm9yIHdpdGhcbiAgICB8IFNvbWUgb25FcnJvciAtPiBjb25maWd1cmF0aW9uIyMub25FcnJvciA6PSBvbkVycm9yXG4gICAgfCBOb25lIC0+ICgpKTtcbiAgICAoKVxuICBpblxuICBjb25maWd1cmF0aW9uXG5cbmNsYXNzIHR5cGUgcHJvY2VzcyA9IG9iamVjdFxuICBtZXRob2Qgd3JpdGUgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGtpbGwgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgc3Bhd25fcHJvY2VzcyAoY29uZmlndXJhdGlvbiA6IHByb2Nlc3NfY29uZmlndXJhdGlvbiBKcy50KSA6XG4gICAgcHJvY2VzcyBKcy50IEpzLm9wdCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcInNwYXduUHJvY2Vzc1wiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgY29uZmlndXJhdGlvbiB8XVxuXG5sZXQgbGF1bmNoX2FnZW50IChvbkNsb3NlIDogdW5pdCAtPiB1bml0KSAobWVzc2FnZV9kZWxpbWl0ZXIgOiBjaGFyKVxuICAgIChjb21tYW5kIDogc3RyaW5nKSAoYXJncyA6IHN0cmluZyBsaXN0KSAoaGFuZGxlciA6IHN0cmluZyAtPiB1bml0KSA6XG4gICAgPCBraWxsIDogdW5pdCBKcy5tZXRoIDsgd3JpdGUgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGggPiBKcy50ID1cbiAgbGV0IGJ1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgNTEyIGluXG4gIGxldCByZWMgb25TdGRvdXQgbXNnID1cbiAgICBtYXRjaCBUb29scy5zdHJpbmdfc3BsaXRfb25fY2hhciBtZXNzYWdlX2RlbGltaXRlciAoSnMudG9fc3RyaW5nIG1zZykgd2l0aFxuICAgIHwgcHJlZml4LCBOb25lIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZmZlciBwcmVmaXhcbiAgICB8IHByZWZpeCwgU29tZSBzdWZmaXggLT5cbiAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZmZlciBwcmVmaXggaW5cbiAgICAgIGxldCAoKSA9IGhhbmRsZXIgKEJ1ZmZlci5jb250ZW50cyBidWZmZXIpIGluXG4gICAgICBsZXQgKCkgPSBCdWZmZXIucmVzZXQgYnVmZmVyIGluXG4gICAgICBvblN0ZG91dCAoSnMuc3RyaW5nIHN1ZmZpeClcbiAgaW5cbiAgbGV0IGNvbmZpZ3VyYXRpb24gOiBwcm9jZXNzX2NvbmZpZ3VyYXRpb24gSnMudCA9XG4gICAgY3JlYXRlX3Byb2Nlc3NfY29uZmlndXJhdGlvbiB+b25TdGRvdXQgfm9uQ2xvc2UgY29tbWFuZCBhcmdzXG4gIGluXG4gIEpzLk9wdC5jYXNlXG4gICAgKHNwYXduX3Byb2Nlc3MgY29uZmlndXJhdGlvbilcbiAgICAoZnVuICgpIC0+XG4gICAgICBsZXQgKCkgPSBvbkNsb3NlICgpIGluXG4gICAgICBmYWlsd2l0aCAoXCJMYXVuY2hpbmcgJ1wiIF4gY29tbWFuZCBeIFwiJyBmYWlsZWRcIikpXG4gICAgKGZ1biB4IC0+IHgpXG5cbmNsYXNzIG1hbmFnZXIgPyhtZXNzYWdlX2RlbGltaXRlciA6IGNoYXIgPSBUb29scy5kZWZhdWx0X21lc3NhZ2VfZGVsaW10ZXIpXG4gIChjb21tYW5kIDogc3RyaW5nKSAoYXJncyA6IHN0cmluZyBsaXN0KSA6XG4gIEFwaS5jb25jcmV0ZV9tYW5hZ2VyID1cbiAgbGV0IHN3aXRjaF9yZSA9IFJlLmNvbXBpbGUgKFJlLnN0ciBcIkthcHBhU3dpdGNobWFuXCIpIGluXG4gIGxldCBzdG9yX2NvbW1hbmQgPSBSZS5yZXBsYWNlX3N0cmluZyBzd2l0Y2hfcmUgfmJ5OlwiS2FTdG9yXCIgY29tbWFuZCBpblxuICBsZXQgc3dpdGNoX21haWxib3ggPSBTd2l0Y2htYW5fY2xpZW50Lm5ld19tYWlsYm94ICgpIGluXG4gIGxldCBzdG9yX3N0YXRlLCB1cGRhdGVfc3Rvcl9zdGF0ZSA9IEthc3Rvcl9jbGllbnQuaW5pdF9zdGF0ZSAoKSBpblxuICBsZXQgcnVubmluZ19yZWYgPSByZWYgdHJ1ZSBpblxuICBsZXQgb25DbG9zZSAoKSA9IHJ1bm5pbmdfcmVmIDo9IGZhbHNlIGluXG4gIGxldCBzdG9yX3Byb2Nlc3MgPVxuICAgIGxhdW5jaF9hZ2VudCBvbkNsb3NlIG1lc3NhZ2VfZGVsaW1pdGVyIHN0b3JfY29tbWFuZCBhcmdzXG4gICAgICAoS2FzdG9yX2NsaWVudC5yZWNlaXZlIHVwZGF0ZV9zdG9yX3N0YXRlKVxuICBpblxuICBsZXQgc3dpdGNoX3Byb2Nlc3MgPVxuICAgIGxhdW5jaF9hZ2VudCBvbkNsb3NlIG1lc3NhZ2VfZGVsaW1pdGVyIGNvbW1hbmQgYXJnc1xuICAgICAgKFN3aXRjaG1hbl9jbGllbnQucmVjZWl2ZSBzd2l0Y2hfbWFpbGJveClcbiAgaW5cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCBwcml2YXRlIHNsZWVwIHRpbWVvdXQgPSBKc19vZl9vY2FtbF9sd3QuTHd0X2pzLnNsZWVwIHRpbWVvdXRcbiAgICBtZXRob2QgaXNfcnVubmluZyA9ICFydW5uaW5nX3JlZlxuXG4gICAgbWV0aG9kIHRlcm1pbmF0ZSA9XG4gICAgICBsZXQgKCkgPSBzd2l0Y2hfcHJvY2VzcyMja2lsbCBpblxuICAgICAgbGV0ICgpID0gc3Rvcl9wcm9jZXNzIyNraWxsIGluXG4gICAgICAoKVxuXG4gICAgbWV0aG9kIGlzX2NvbXB1dGluZyA9XG4gICAgICBTd2l0Y2htYW5fY2xpZW50LmlzX2NvbXB1dGluZyBzd2l0Y2hfbWFpbGJveCB8fCBzZWxmI3N0b3J5X2lzX2NvbXB1dGluZ1xuXG4gICAgaW5oZXJpdFxuICAgICAgS2FzdG9yX2NsaWVudC5uZXdfY2xpZW50XG4gICAgICAgIH5wb3N0OihmdW4gbWVzc2FnZV90ZXh0IC0+XG4gICAgICAgICAgc3Rvcl9wcm9jZXNzIyN3cml0ZVxuICAgICAgICAgICAgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCIlcyVjXCIgbWVzc2FnZV90ZXh0IG1lc3NhZ2VfZGVsaW1pdGVyKSkpXG4gICAgICAgIHN0b3Jfc3RhdGVcblxuICAgIGluaGVyaXRcbiAgICAgIFN3aXRjaG1hbl9jbGllbnQubmV3X2NsaWVudFxuICAgICAgICB+aXNfcnVubmluZzooZnVuICgpIC0+IHRydWUpXG4gICAgICAgIH5wb3N0OihmdW4gbWVzc2FnZV90ZXh0IC0+XG4gICAgICAgICAgc3dpdGNoX3Byb2Nlc3MjI3dyaXRlXG4gICAgICAgICAgICAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcIiVzJWNcIiBtZXNzYWdlX3RleHQgbWVzc2FnZV9kZWxpbWl0ZXIpKSlcbiAgICAgICAgc3dpdGNoX21haWxib3hcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leGNlcHRpb24gQmFkUmVzcG9uc2Ugb2YgTXBpX21lc3NhZ2Vfai5yZXN0X3Jlc3BvbnNlX2NvbnRlbnRcbmV4Y2VwdGlvbiBCYWRSZXNwb25zZUNvZGUgb2YgaW50XG5leGNlcHRpb24gVGltZU91dFxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgcmVxdWVzdF91cCB2ID0gaW5jciB2XG5sZXQgcmVxdWVzdF9kb3duIHYgPSBkZWNyIHZcbmxldCBpc19jb21wdXRpbmcgdiA9ICF2IDw+IDBcblxubGV0IHNlbmQgPyh0aW1lb3V0IDogZmxvYXQgb3B0aW9uKSByZXF1ZXN0X2NvdW50ICh1cmwgOiBzdHJpbmcpXG4gICAgKG1ldGggOiBDb21tb24ubWV0aCkgPyhkYXRhIDogc3RyaW5nIG9wdGlvbikgKGh5ZHJhdGUgOiBzdHJpbmcgLT4gJ2EpIDpcbiAgICAnYSBBcGkucmVzdWx0IEx3dC50ID1cbiAgbGV0IHJlcGx5LCBmZWVkZXIgPSBMd3QudGFzayAoKSBpblxuICBsZXQgaGFuZGxlciBzdGF0dXMgcmVzcG9uc2VfdGV4dCA9XG4gICAgbGV0IHJlc3VsdF9jb2RlIDogUmVzdWx0X3V0aWwuc3RhdHVzIG9wdGlvbiA9XG4gICAgICBtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgfCAyMDAgLT4gU29tZSBgT0tcbiAgICAgIHwgMjAxIC0+IFNvbWUgYENyZWF0ZWRcbiAgICAgIHwgMjAyIC0+IFNvbWUgYEFjY2VwdGVkXG4gICAgICB8IDQwMCAtPiBTb21lIGBCYWRfcmVxdWVzdFxuICAgICAgfCA0MDQgLT4gU29tZSBgTm90X2ZvdW5kXG4gICAgICB8IDQwOCAtPiBTb21lIGBSZXF1ZXN0X3RpbWVvdXRcbiAgICAgIHwgNDA5IC0+IFNvbWUgYENvbmZsaWN0XG4gICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBtYXRjaCByZXN1bHRfY29kZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZUNvZGUgc3RhdHVzKVxuICAgICAgfCBTb21lIHJlc3VsdF9jb2RlIC0+XG4gICAgICAgIGlmIDQwMCA8PSBzdGF0dXMgJiYgc3RhdHVzIDwgNTAwIHRoZW5cbiAgICAgICAgICBBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyB+cmVzdWx0X2NvZGVcbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0IFJlc3VsdF91dGlsLnJlYWRfbWVzc2FnZVxuICAgICAgICAgICAgICAgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpXG4gICAgICAgICAgICAgICAoTGV4aW5nLmZyb21fc3RyaW5nIHJlc3BvbnNlX3RleHQpKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBoeWRyYXRlIHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICBSZXN1bHRfdXRpbC5vayByZXNwb25zZVxuICAgICAgICApXG4gICAgaW5cbiAgICBsZXQgKCkgPSByZXF1ZXN0X2Rvd24gcmVxdWVzdF9jb3VudCBpblxuICAgIGxldCAoKSA9IEx3dC53YWtldXAgZmVlZGVyIHJlc3VsdCBpblxuICAgICgpXG4gIGluXG4gIGxldCAoKSA9IHJlcXVlc3RfdXAgcmVxdWVzdF9jb3VudCBpblxuICBsZXQgKCkgPSBDb21tb24uYWpheF9yZXF1ZXN0IH51cmwgfm1ldGggP3RpbWVvdXQgP2RhdGEgfmhhbmRsZXIgaW5cbiAgcmVwbHlcblxubGV0IGthc2FfZXJyb3IgbCA9XG4gIEx3dC5yZXR1cm5fZXJyb3JcbiAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAoZnVuIGFjYyBtIC0+XG4gICAgICAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYWRkX3VuY2F1Z2h0X2Vycm9yXG4gICAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uXG4gICAgICAgICAgICAgIH5maWxlX25hbWU6XCJyZXN0X2FwaVwiIH5tZXNzYWdlOm0uUmVzdWx0X3V0aWwudGV4dCBFeGl0KVxuICAgICAgICAgICBhY2MpXG4gICAgICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmVtcHR5X2Vycm9yX2hhbmRsZXIgbClcblxuY2xhc3MgbWFuYWdlciB+KHRpbWVvdXQgOiBmbG9hdCBvcHRpb24pIH51cmwgfnByb2plY3RfaWQgOiBBcGkucmVzdF9tYW5hZ2VyID1cbiAgbGV0IHJlcXVlc3RfY291bnQgPSByZWYgMCBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHByaXZhdGUgbWVzc2FnZVxuICAgICAgICA6IE1waV9tZXNzYWdlX2oucmVxdWVzdCAtPiBNcGlfbWVzc2FnZV9qLnJlc3BvbnNlIEx3dC50ID1cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IGBQcm9qZWN0TG9hZCBfIC0+XG4gICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yZXN1bHRfY29kZTpgQmFkX3JlcXVlc3RcbiAgICAgICAgICAgICBcImxvdyBsZXZlbCBwcm9qZWN0X2xvYWQgbXVzdG4ndCBiZSB1c2VkIG92ZXIgSFRUUFwiKVxuICAgICAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIHBhdXNlX2NvbmRpdGlvbiAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL2NvbnRpbnVlXCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgICAgYFBVVFxuICAgICAgICAgIH5kYXRhOihZb2pzb24uU2FmZS50b19zdHJpbmcgKGBTdHJpbmcgcGF1c2VfY29uZGl0aW9uKSlcbiAgICAgICAgICAoZnVuIF8gLT4gYFNpbXVsYXRpb25Db250aW51ZSlcbiAgICAgIHwgYFNpbXVsYXRpb25EZWxldGUgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvblwiIHVybCBwcm9qZWN0X2lkKSBgREVMRVRFXG4gICAgICAgICAgKGZ1biBfIC0+IGBTaW11bGF0aW9uRGVsZXRlKVxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIGZpbGVfbGluZV9pZCAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL2ZpbGVsaW5lcy8lc1wiIHVybFxuICAgICAgICAgICAgIHByb2plY3RfaWQgZmlsZV9saW5lX2lkKSBgR0VUIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBsZXQgbGluZXMgPVxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2xpc3QgWW9qc29uLlNhZmUucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSlcbiAgICAgICAgICAgICAgICAoTGV4aW5nLmZyb21fc3RyaW5nIHJlc3VsdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIGxpbmVzKVxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbERJTiBmbHV4X21hcF9pZCAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL0RJTi8lc1wiIHVybCBwcm9qZWN0X2lkXG4gICAgICAgICAgICAgZmx1eF9tYXBfaWQpIGBHRVQgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIChNcGlfbWVzc2FnZV9qLmRpbl9vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vbG9nbWVzc2FnZXNcIiB1cmxcbiAgICAgICAgICAgICBwcm9qZWN0X2lkKSBgR0VUIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcbiAgICAgICAgICAgICAgKE1waV9tZXNzYWdlX2oubG9nX21lc3NhZ2Vfb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsUGxvdCBwbG90X2xpbWl0IC0+XG4gICAgICAgIGxldCBhcmdzID1cbiAgICAgICAgICBTdHJpbmcuY29uY2F0IFwiJlwiXG4gICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgIChmdW4gKGtleSwgdmFsdWUpIC0+IEZvcm1hdC5zcHJpbnRmIFwiJXM9JXNcIiBrZXkgdmFsdWUpXG4gICAgICAgICAgICAgICAoKG1hdGNoIHBsb3RfbGltaXQuQXBpX3R5cGVzX2oucGxvdF9saW1pdF9vZmZzZXQgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgICAgIHwgU29tZSBwbG90X2xpbWl0X29mZnNldCAtPlxuICAgICAgICAgICAgICAgICAgWyBcInBsb3RfbGltaXRfb2Zmc2V0XCIsIHN0cmluZ19vZl9pbnQgcGxvdF9saW1pdF9vZmZzZXQgXSlcbiAgICAgICAgICAgICAgIEBcbiAgICAgICAgICAgICAgIG1hdGNoIHBsb3RfbGltaXQuQXBpX3R5cGVzX2oucGxvdF9saW1pdF9wb2ludHMgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICB8IFNvbWUgcGxvdF9saW1pdF9wb2ludHMgLT5cbiAgICAgICAgICAgICAgICAgWyBcInBsb3RfbGltaXRfcG9pbnRzXCIsIHN0cmluZ19vZl9pbnQgcGxvdF9saW1pdF9wb2ludHMgXSkpXG4gICAgICAgIGluXG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vcGxvdFwiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICAgIGBHRVQgfmRhdGE6YXJncyAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IChNcGlfbWVzc2FnZV9qLnBsb3Rfb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3Qgc25hcHNob3RfaWQgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9zbmFwc2hvdHMvJXNcIiB1cmxcbiAgICAgICAgICAgICBwcm9qZWN0X2lkIHNuYXBzaG90X2lkKSBgR0VUIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XG4gICAgICAgICAgICAgIChNcGlfbWVzc2FnZV9qLnNuYXBzaG90X2RldGFpbF9vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFNpbXVsYXRpb25JbmZvIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb25cIiB1cmwgcHJvamVjdF9pZCkgYEdFVFxuICAgICAgICAgIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvbkluZm8gKE1waV9tZXNzYWdlX2ouc2ltdWxhdGlvbl9pbmZvX29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9lZmZpY2llbmN5XCIgdXJsXG4gICAgICAgICAgICAgcHJvamVjdF9pZCkgYEdFVCAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25FZmZpY2llbmN5XG4gICAgICAgICAgICAgIChNcGlfbWVzc2FnZV9qLnNpbXVsYXRpb25fZWZmaWNpZW5jeV9vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFNpbXVsYXRpb25UcmFjZSAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL3RyYWNlXCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgICAgYEdFVCAoZnVuIHMgLT4gYFNpbXVsYXRpb25UcmFjZSBzKVxuICAgICAgfCBgU2ltdWxhdGlvbk91dHB1dHNaaXAgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9vdXRwdXRzXCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgICAgYEdFVCAoZnVuIHMgLT4gYFNpbXVsYXRpb25PdXRwdXRzWmlwIHMpXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vZmlsZWxpbmVzXCIgdXJsXG4gICAgICAgICAgICAgcHJvamVjdF9pZCkgYEdFVCAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcbiAgICAgICAgICAgICAgKE1waV9tZXNzYWdlX2ouZmlsZV9saW5lX2NhdGFsb2dfb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL0RJTlwiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICAgIGBHRVQgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiAoTXBpX21lc3NhZ2Vfai5kaW5fY2F0YWxvZ19vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9zbmFwc2hvdHNcIiB1cmxcbiAgICAgICAgICAgICBwcm9qZWN0X2lkKSBgR0VUIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgICAgICAgICAoTXBpX21lc3NhZ2Vfai5zbmFwc2hvdF9jYXRhbG9nX29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vcGF1c2VcIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgICBgUFVUIChmdW4gXyAtPiBgU2ltdWxhdGlvblBhdXNlKVxuICAgICAgfCBgU2ltdWxhdGlvblBhcmFtZXRlciAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL3BhcmFtZXRlclwiIHVybFxuICAgICAgICAgICAgIHByb2plY3RfaWQpIGBHRVQgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyXG4gICAgICAgICAgICAgIChNcGlfbWVzc2FnZV9qLnNpbXVsYXRpb25fcGFyYW1ldGVyX29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgU2ltdWxhdGlvbkludGVydmVudGlvbiBzaW11bGF0aW9uX2ludGVydmVudGlvbiAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL2ludGVydmVudGlvblwiIHVybFxuICAgICAgICAgICAgIHByb2plY3RfaWQpIGBQVVRcbiAgICAgICAgICB+ZGF0YTpcbiAgICAgICAgICAgIChBcGlfdHlwZXNfai5zdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgICAgICAgIHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uKSAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb25cbiAgICAgICAgICAgICAgKFlvanNvbi5TYWZlLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKVxuICAgICAgICAgICAgICAgICAoTGV4aW5nLmZyb21fc3RyaW5nIHJlc3VsdCkpKVxuICAgICAgfCBgU2ltdWxhdGlvblN0YXJ0IHNpbXVsYXRpb25fcGFyYW1ldGVyIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb25cIiB1cmwgcHJvamVjdF9pZCkgYFBPU1RcbiAgICAgICAgICB+ZGF0YTpcbiAgICAgICAgICAgIChBcGlfdHlwZXNfai5zdHJpbmdfb2Zfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgc2ltdWxhdGlvbl9wYXJhbWV0ZXIpXG4gICAgICAgICAgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uU3RhcnRcbiAgICAgICAgICAgICAgKE1waV9tZXNzYWdlX2ouc2ltdWxhdGlvbl9hcnRpZmFjdF9vZl9zdHJpbmcgcmVzdWx0KSlcblxuICAgIGluaGVyaXQgTXBpX2FwaS5tYW5hZ2VyX2Jhc2UgKClcblxuICAgIG1ldGhvZCBwcml2YXRlIHJlc3RfbWVzc2FnZSA9XG4gICAgICBmdW5jdGlvblxuICAgICAgfCBgRW52aXJvbm1lbnRJbmZvIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudCAoRm9ybWF0LnNwcmludGYgXCIlcy92MlwiIHVybCkgYEdFVFxuICAgICAgICAgIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgRW52aXJvbm1lbnRJbmZvIChNcGlfbWVzc2FnZV9qLmVudmlyb25tZW50X2luZm9fb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBQcm9qZWN0Q2F0YWxvZyAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnQgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHNcIiB1cmwpIGBHRVRcbiAgICAgICAgICAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgbGV0IHByb2plY3RzID1cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9saXN0IFlvanNvbi5TYWZlLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpXG4gICAgICAgICAgICAgICAgKExleGluZy5mcm9tX3N0cmluZyByZXN1bHQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYFByb2plY3RDYXRhbG9nIHByb2plY3RzKVxuICAgICAgfCBgUHJvamVjdENyZWF0ZSBwcm9qZWN0X3BhcmFtZXRlciAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnQgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHNcIiB1cmwpIGBQT1NUXG4gICAgICAgICAgfmRhdGE6KEFwaV90eXBlc19qLnN0cmluZ19vZl9wcm9qZWN0X3BhcmFtZXRlciBwcm9qZWN0X3BhcmFtZXRlcilcbiAgICAgICAgICAoZnVuIF8gLT4gYFByb2plY3RDcmVhdGUpXG4gICAgICB8IGBQcm9qZWN0RGVsZXRlIHByb2plY3RfaWQgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXNcIiB1cmwgcHJvamVjdF9pZCkgYERFTEVURSAoZnVuIF8gLT5cbiAgICAgICAgICAgIGBQcm9qZWN0RGVsZXRlKVxuXG4gICAgbWV0aG9kIGVudmlyb25tZW50X2luZm8gKCkgOiBBcGlfdHlwZXNfai5lbnZpcm9ubWVudF9pbmZvIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNyZXN0X21lc3NhZ2UgYEVudmlyb25tZW50SW5mb1xuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYEVudmlyb25tZW50SW5mbyAocmVzdWx0IDogTXBpX21lc3NhZ2VfdC5lbnZpcm9ubWVudF9pbmZvKSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayByZXN1bHQpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHByb2plY3RfZGVsZXRlIHByb2plY3RfaWQgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNyZXN0X21lc3NhZ2UgKGBQcm9qZWN0RGVsZXRlIHByb2plY3RfaWQpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgUHJvamVjdERlbGV0ZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2QgcHJvamVjdF9jYXRhbG9nIDogc3RyaW5nIGxpc3QgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI3Jlc3RfbWVzc2FnZSBgUHJvamVjdENhdGFsb2dcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBQcm9qZWN0Q2F0YWxvZyByZXN1bHQgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcmVzdWx0KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBwcm9qZWN0X2NyZWF0ZSAocHJvamVjdF9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5wcm9qZWN0X3BhcmFtZXRlcilcbiAgICAgICAgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNyZXN0X21lc3NhZ2UgKGBQcm9qZWN0Q3JlYXRlIHByb2plY3RfcGFyYW1ldGVyKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFByb2plY3RDcmVhdGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNlY3JldF9wcm9qZWN0X3BhcnNlID1cbiAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YEJhZF9yZXF1ZXN0XG4gICAgICAgICAgIFwibG93IGxldmVsIHByb2plY3RfcGFyc2UgbXVzdG4ndCBiZSB1c2VkIG92ZXIgSFRUUFwiKVxuXG4gICAgbWV0aG9kIHNlY3JldF9nZXRfcG9zX29mX3J1bGVzX2FuZF92YXJzID1cbiAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YEJhZF9yZXF1ZXN0XG4gICAgICAgICAgIFwibG93IGxldmVsIGdldF9wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnMgbXVzdG4ndCBiZSB1c2VkIG92ZXIgSFRUUFwiKVxuXG4gICAgbWV0aG9kIHByb2plY3RfcGFyc2UgfnBhdHRlcm5TaGFyaW5nIG92ZXJ3cml0ZSA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3BhcnNlLyVzJXRcIiB1cmwgcHJvamVjdF9pZFxuICAgICAgICAgICAobWF0Y2ggcGF0dGVyblNoYXJpbmcgd2l0aFxuICAgICAgICAgICB8IFBhdHRlcm4uTm9fc2hhcmluZyAtPiBcIm5vX3NoYXJpbmdcIlxuICAgICAgICAgICB8IFBhdHRlcm4uQ29tcGF0aWJsZV9wYXR0ZXJucyAtPiBcImNvbXBhdGlibGVfcGF0dGVybnNcIlxuICAgICAgICAgICB8IFBhdHRlcm4uTWF4X3NoYXJpbmcgLT4gXCJtYXhfc2hhcmluZ1wiKVxuICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICBtYXRjaCBvdmVyd3JpdGUgd2l0aFxuICAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgICB8IGwgLT5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI/JWFcIlxuICAgICAgICAgICAgICAgICAoUHAubGlzdFxuICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiJlwiKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIGYgKHZyLCB2YSkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzPSVhXCIgdnIgTmJyLnByaW50IHZhKSlcbiAgICAgICAgICAgICAgICAgbCkpXG4gICAgICAgIGBQT1NUXG4gICAgICAgIChKc29uVXRpbC5yZWFkX29mX3N0cmluZyBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuXG4gICAgbWV0aG9kIHRlcm1pbmF0ZSA9IEx3dC5pZ25vcmVfcmVzdWx0IChzZWxmI3Byb2plY3RfZGVsZXRlIHByb2plY3RfaWQpXG4gICAgbWV0aG9kIGlzX3J1bm5pbmcgPSB0cnVlICgqVE9ETyopXG5cbiAgICBtZXRob2QgZmlsZV9jYXRhbG9nID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9maWxlc1wiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICBgR0VUXG4gICAgICAgIChKc29uVXRpbC5yZWFkX29mX3N0cmluZ1xuICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBLZmlsZXMucmVhZF9jYXRhbG9nX2l0ZW0pKVxuXG4gICAgbWV0aG9kIGZpbGVfY3JlYXRlIHBvcyBpZCBjb250ZW50ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9maWxlcy8lcy9wb3NpdGlvbi8laVwiIHVybCBwcm9qZWN0X2lkXG4gICAgICAgICAgIGlkIHBvcylcbiAgICAgICAgYFBVVFxuICAgICAgICB+ZGF0YTooWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoYFN0cmluZyBjb250ZW50KSlcbiAgICAgICAgKEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG5cbiAgICBtZXRob2QgZmlsZV9nZXQgaWQgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2ZpbGVzLyVzXCIgdXJsIHByb2plY3RfaWQgaWQpXG4gICAgICAgIGBHRVRcbiAgICAgICAgKEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nXG4gICAgICAgICAgIChKc29uVXRpbC5yZWFkX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfaW50KSlcblxuICAgIG1ldGhvZCBmaWxlX3VwZGF0ZSBpZCBjb250ZW50ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9maWxlcy8lc1wiIHVybCBwcm9qZWN0X2lkIGlkKVxuICAgICAgICBgUE9TVFxuICAgICAgICB+ZGF0YTooWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoYFN0cmluZyBjb250ZW50KSlcbiAgICAgICAgKEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG5cbiAgICBtZXRob2QgZmlsZV9tb3ZlIHBvcyBpZCA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvZmlsZXMvJXMvcG9zaXRpb24vJWlcIiB1cmwgcHJvamVjdF9pZFxuICAgICAgICAgICBpZCBwb3MpXG4gICAgICAgIGBQT1NUXG4gICAgICAgIChKc29uVXRpbC5yZWFkX29mX3N0cmluZyBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuXG4gICAgbWV0aG9kIGZpbGVfZGVsZXRlIGlkID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9maWxlcy8lc1wiIHVybCBwcm9qZWN0X2lkIGlkKVxuICAgICAgICBgREVMRVRFXG4gICAgICAgIChKc29uVXRpbC5yZWFkX29mX3N0cmluZyBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuXG4gICAgbWV0aG9kIHByb2plY3Rfb3ZlcndyaXRlIGZpbGVfaWQgYXN0ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9vdmVyd3JpdGUvJXNcIiB1cmwgcHJvamVjdF9pZCBmaWxlX2lkKVxuICAgICAgICBgUE9TVFxuICAgICAgICB+ZGF0YTooWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoQXN0LmNvbXBpbF90b19qc29uIGFzdCkpXG4gICAgICAgIChKc29uVXRpbC5yZWFkX29mX3N0cmluZyBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuXG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyX3JhdyBkYXRhID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlc1wiIHVybCBwcm9qZWN0X2lkKSBgUFVUIH5kYXRhXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIG1hdGNoIFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4IHdpdGhcbiAgICAgICAgICB8IGBOdWxsIC0+ICgpXG4gICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBLYVNhIElOSVQgcmVzcG9uc2U6IFwiLCB4KSkpXG5cbiAgICBtZXRob2QgaW5pdF9zdGF0aWNfYW5hbHlzZXIgY29tcGlsID1cbiAgICAgIHNlbGYjaW5pdF9zdGF0aWNfYW5hbHlzZXJfcmF3XG4gICAgICAgIChZb2pzb24uQmFzaWMudG9fc3RyaW5nIChBc3QuY29tcGlsX3RvX2pzb24gY29tcGlsKSlcblxuICAgIG1ldGhvZCBnZXRfY29udGFjdF9tYXAgYWNjdXJhY3kgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgIHwgU29tZSBhY2N1cmFjeSAtPlxuICAgICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvY29udGFjdF9tYXA/YWNjdXJhY3k9JXNcIlxuICAgICAgICAgICAgdXJsIHByb2plY3RfaWRcbiAgICAgICAgICAgIChQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgYWNjdXJhY3kpXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvY29udGFjdF9tYXBcIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgYEdFVFxuICAgICAgICAoZnVuIHggLT4gWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpXG5cbiAgICBtZXRob2QgZ2V0X2luZmx1ZW5jZV9tYXBfcmF3IGFjY3VyYWN5ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAobWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICB8IFNvbWUgYWNjdXJhY3kgLT5cbiAgICAgICAgICBGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2luZmx1ZW5jZV9tYXA/YWNjdXJhY3k9JXNcIlxuICAgICAgICAgICAgdXJsIHByb2plY3RfaWRcbiAgICAgICAgICAgIChQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgYWNjdXJhY3kpXG4gICAgICAgIHwgTm9uZSAtPiBGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL2FuYWx5c2VzL2luZmx1ZW5jZV9tYXBcIiB1cmwpXG4gICAgICAgIGBHRVRcbiAgICAgICAgKGZ1biB4IC0+IHgpXG5cbiAgICBtZXRob2QgZ2V0X2xvY2FsX2luZmx1ZW5jZV9tYXAgP2Z3ZCA/YndkID9vcmlnaW4gfnRvdGFsIGFjY3VyYWN5ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAobGV0IHMgPVxuICAgICAgICAgICBtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgICAgIHwgU29tZSBhY2N1cmFjeSAtPlxuICAgICAgICAgICAgIFwiJmFjY3VyYWN5PVwiIF4gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIGFjY3VyYWN5XG4gICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICBpblxuICAgICAgICAgRm9ybWF0LnNwcmludGZcbiAgICAgICAgICAgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9pbmZsdWVuY2VfbWFwP3RvdGFsPSVpJXMlcyVzJXNcIiB1cmxcbiAgICAgICAgICAgcHJvamVjdF9pZCB0b3RhbFxuICAgICAgICAgICAobWF0Y2ggb3JpZ2luIHdpdGhcbiAgICAgICAgICAgfCBTb21lIChQdWJsaWNfZGF0YS5SdWxlIGkpIC0+IFwiJm9yaWdpbj1fcnVsZV9cIiBeIHN0cmluZ19vZl9pbnQgaVxuICAgICAgICAgICB8IFNvbWUgKFB1YmxpY19kYXRhLlZhciBpKSAtPiBcIiZvcmlnaW49X3Zhcl9cIiBeIHN0cmluZ19vZl9pbnQgaVxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIilcbiAgICAgICAgICAgc1xuICAgICAgICAgICAobWF0Y2ggZndkIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lIGkgLT4gXCImZndkPVwiIF4gc3RyaW5nX29mX2ludCBpKVxuICAgICAgICAgICAobWF0Y2ggYndkIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lIGkgLT4gXCImYndkPVwiIF4gc3RyaW5nX29mX2ludCBpKSlcbiAgICAgICAgYEdFVFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5sb2NhbF9pbmZsdWVuY2VfbWFwX29mX2pzb24gKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfaW5pdGlhbF9ub2RlID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9pbmZsdWVuY2VfbWFwL2luaXRpYWxfbm9kZVwiXG4gICAgICAgICAgIHVybCBwcm9qZWN0X2lkKSBgR0VUIChmdW4geCAtPlxuICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X25leHRfbm9kZSBzaG9ydF9pZF9vcHQgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2luZmx1ZW5jZV9tYXAvbmV4dF9ub2RlJXNcIlxuICAgICAgICAgICB1cmwgcHJvamVjdF9pZFxuICAgICAgICAgICAobWF0Y2ggc2hvcnRfaWRfb3B0IHdpdGhcbiAgICAgICAgICAgfCBTb21lIChQdWJsaWNfZGF0YS5SdWxlIGkpIC0+IFwiX3J1bGVfXCIgXiBzdHJpbmdfb2ZfaW50IGlcbiAgICAgICAgICAgfCBTb21lIChQdWJsaWNfZGF0YS5WYXIgaSkgLT4gXCJfdmFyX1wiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIlwiKSlcbiAgICAgICAgYEdFVFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBKc29uVXRpbC50b19vcHRpb24gUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGdldF9wcmV2aW91c19ub2RlIHNob3J0X2lkX29wdCA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmXG4gICAgICAgICAgIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvaW5mbHVlbmNlX21hcC9wcmV2aW91c19ub2RlJXNcIiB1cmxcbiAgICAgICAgICAgcHJvamVjdF9pZFxuICAgICAgICAgICAobWF0Y2ggc2hvcnRfaWRfb3B0IHdpdGhcbiAgICAgICAgICAgfCBTb21lIChQdWJsaWNfZGF0YS5SdWxlIGkpIC0+IFwiX3J1bGVfXCIgXiBzdHJpbmdfb2ZfaW50IGlcbiAgICAgICAgICAgfCBTb21lIChQdWJsaWNfZGF0YS5WYXIgaSkgLT4gXCJfdmFyX1wiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIlwiKSlcbiAgICAgICAgYEdFVFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBKc29uVXRpbC50b19vcHRpb24gUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGdldF9pbmZsdWVuY2VfbWFwX25vZGVfYXQgfmZpbGVuYW1lIHsgTG9jLmxpbmU7IExvYy5jaHIgfSA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmXG4gICAgICAgICAgIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvaW5mbHVlbmNlX21hcC9ub2RlX2F0P2ZpbGU9JXMmbGluZT0laSZjaHI9JWlcIlxuICAgICAgICAgICB1cmwgcHJvamVjdF9pZCBmaWxlbmFtZSBsaW5lIGNocikgYEdFVCAoZnVuIHggLT5cbiAgICAgICAgICBKc29uVXRpbC50b19vcHRpb24gUHVibGljX2RhdGEuc2hvcnRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfbm9kZXNfb2ZfaW5mbHVlbmNlX21hcCBhY2N1cmFjeSA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKG1hdGNoIGFjY3VyYWN5IHdpdGhcbiAgICAgICAgfCBTb21lIGFjY3VyYWN5IC0+XG4gICAgICAgICAgRm9ybWF0LnNwcmludGZcbiAgICAgICAgICAgIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvYWxsX25vZGVzX29mX2luZmx1ZW5jZV9tYXA/YWNjdXJhY3k9JXNcIlxuICAgICAgICAgICAgdXJsIHByb2plY3RfaWRcbiAgICAgICAgICAgIChQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgYWNjdXJhY3kpXG4gICAgICAgIHwgTm9uZSAtPiBGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL2FuYWx5c2VzL2FsbF9ub2Rlc19vZl9pbmZsdWVuY2VfbWFwXCIgdXJsKVxuICAgICAgICBgR0VUXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIFB1YmxpY19kYXRhLm5vZGVzX29mX2luZmx1ZW5jZV9tYXBfb2ZfanNvblxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfZGVhZF9ydWxlcyA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvZGVhZF9ydWxlc1wiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICBgR0VUIChmdW4geCAtPlxuICAgICAgICAgIFB1YmxpY19kYXRhLmRlYWRfcnVsZXNfb2ZfanNvbiAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGdldF9kZWFkX2FnZW50cyA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvZGVhZF9hZ2VudHNcIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgYEdFVCAoZnVuIHggLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5qc29uX3RvX2RlYWRfYWdlbnRzIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmXG4gICAgICAgICAgIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXCIgdXJsXG4gICAgICAgICAgIHByb2plY3RfaWQpIGBHRVQgKGZ1biB4IC0+XG4gICAgICAgICAgUHVibGljX2RhdGEuc2VwYXJhdGluZ190cmFuc2l0aW9uc19vZl9qc29uXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGdldF9jb25zdHJhaW50c19saXN0ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9jb25zdHJhaW50c1wiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICBgR0VUIChmdW4geCAtPlxuICAgICAgICAgIFB1YmxpY19kYXRhLmxlbW1hc19saXN0X29mX2pzb24gKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfcG90ZW50aWFsX3BvbHltZXJzIGFjY3VyYWN5X2NtIGFjY3VyYWN5X3NjYyA9XG4gICAgICBsZXQgb3B0aW9ucyA9XG4gICAgICAgIG1hdGNoIGFjY3VyYWN5X2NtLCBhY2N1cmFjeV9zY2Mgd2l0aFxuICAgICAgICB8IE5vbmUsIE5vbmUgLT4gXCJcIlxuICAgICAgICB8IFNvbWUgYSwgTm9uZSAtPiBcIj9hY2N1cmFjeV9jbT1cIiBeIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyBhXG4gICAgICAgIHwgTm9uZSwgU29tZSBhIC0+IFwiP2FjY3VyYWN5X3NjYz1cIiBeIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyBhXG4gICAgICAgIHwgU29tZSBhLCBTb21lIGIgLT5cbiAgICAgICAgICBcIj9hY2N1cmFjeV9jbT1cIlxuICAgICAgICAgIF4gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIGFcbiAgICAgICAgICBeIFwiJmFjY3VyYWN5X3NjYz1cIlxuICAgICAgICAgIF4gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIGJcbiAgICAgIGluXG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvcG90ZW50aWFsX3BvbHltZXJzJXNcIiB1cmxcbiAgICAgICAgICAgcHJvamVjdF9pZCBvcHRpb25zKSBgR0VUIChmdW4geCAtPlxuICAgICAgICAgIFB1YmxpY19kYXRhLnNjY19vZl9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgaXNfY29tcHV0aW5nID0gaXNfY29tcHV0aW5nIHJlcXVlc3RfY291bnRcblxuICAgIG1ldGhvZCBjb25maWdfc3RvcnlfY29tcHV0YXRpb24geyBBcGkuY2F1c2FsOyBBcGkud2VhazsgQXBpLnN0cm9uZyB9XG4gICAgICAgIDogKHVuaXQsIHN0cmluZykgTHd0X3Jlc3VsdC50ID1cbiAgICAgIGxldCBfZG9udGNhcmUgPSBjYXVzYWwgfHwgd2VhayB8fCBzdHJvbmcgaW5cbiAgICAgIEx3dC5yZXR1cm5fZXJyb3IgXCJLYVN0b3IgaW4gbm90IGF2YWlsYWJsZSB0aHJvdWdoIEhUVFBcIlxuXG4gICAgbWV0aG9kIHJhd19sYXVuY2hfc3RvcnlfY29tcHV0YXRpb24gKF8gOiBzdHJpbmcpXG4gICAgICAgIDogKHVuaXQsIHN0cmluZykgTHd0X3Jlc3VsdC50ID1cbiAgICAgIEx3dC5yZXR1cm5fZXJyb3IgXCJLYVN0b3IgaW4gbm90IGF2YWlsYWJsZSB0aHJvdWdoIEhUVFBcIlxuXG4gICAgbWV0aG9kIHN0b3J5X2xvZyA6IHN0cmluZyBsaXN0ID0gW11cbiAgICBtZXRob2Qgc3RvcnlfaXNfY29tcHV0aW5nID0gZmFsc2VcbiAgICBtZXRob2Qgc3RvcnlfcHJvZ3Jlc3MgOiBTdG9yeV9qc29uLnByb2dyZXNzX2JhciBvcHRpb24gPSBOb25lXG5cbiAgICBtZXRob2Qgc3RvcnlfbGlzdFxuICAgICAgICA6IChBcGkuY29tcHJlc3Npb25fbW9kZXNcbiAgICAgICAgICAqIHVuaXQgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgbGlzdCBsaXN0XG4gICAgICAgICAgKiBHcmFwaF9sb2dnZXJzX3NpZy5ncmFwaClcbiAgICAgICAgICBNb2RzLkludE1hcC50ID1cbiAgICAgIE1vZHMuSW50TWFwLmVtcHR5XG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGNsaWVudElkUGFyYW1JZCA9IEpzLnN0cmluZyBcImthcHBhcHBDbGllbnRJZFwiXG5sZXQgX2NsaWVudF9pZCA6IHN0cmluZyByZWYgPSByZWYgXCJcIlxubGV0IGdldF9jbGllbnRfaWQgKCkgOiBzdHJpbmcgPSAhX2NsaWVudF9pZFxubGV0IHNldF9jbGllbnRfaWQgKGNsaWVudF9pZCA6IHN0cmluZykgOiB1bml0ID0gX2NsaWVudF9pZCA6PSBjbGllbnRfaWRcbmxldCBmb250U2l6ZVBhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwRm9udFNpemVcIlxubGV0IGN1cnJlbnRGb250U2l6ZSA9IHJlZiAxLjRcblxubGV0IGluaXRGcm9tU3RvcmFnZSAoKSA9XG4gIEpzLk9wdGRlZi5jYXNlXG4gICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgKGZ1biAoKSAtPlxuICAgICAgbGV0ICgpID0gY3VycmVudEZvbnRTaXplIDo9IDEuNCBpblxuICAgICAgX2NsaWVudF9pZCA6PSBDb21tb24uZ3VpZCAoKSlcbiAgICAoZnVuIHN0IC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBjdXJyZW50Rm9udFNpemUgOj1cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKHN0IyNnZXRJdGVtIGZvbnRTaXplUGFyYW1JZClcbiAgICAgICAgICAgIChmdW4gKCkgLT4gMS40KVxuICAgICAgICAgICAgSnMucGFyc2VGbG9hdFxuICAgICAgaW5cbiAgICAgIF9jbGllbnRfaWQgOj1cbiAgICAgICAgSnMuT3B0LmNhc2UgKHN0IyNnZXRJdGVtIGNsaWVudElkUGFyYW1JZCkgQ29tbW9uLmd1aWQgSnMudG9fc3RyaW5nKVxuXG5sZXQgc2V0X3BhcmFtZXRlcnNfYXNfZGVmYXVsdCAoKSA9XG4gIGxldCB2JyA9IHN0cmluZ19vZl9mbG9hdCAhY3VycmVudEZvbnRTaXplIGluXG4gIGxldCAoKSA9XG4gICAgSnMuT3B0ZGVmLml0ZXIgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlIChmdW4gc3QgLT5cbiAgICAgICAgc3QjI3NldEl0ZW0gZm9udFNpemVQYXJhbUlkIChKcy5zdHJpbmcgdicpKVxuICBpblxuICBKcy5PcHRkZWYuaXRlciBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2UgKGZ1biBzdCAtPlxuICAgICAgc3QjI3NldEl0ZW0gY2xpZW50SWRQYXJhbUlkIChKcy5zdHJpbmcgIV9jbGllbnRfaWQpKVxuXG5sZXQgdXBkYXRlRm9udFNpemUgfmRlbHRhID1cbiAgbGV0ICgpID0gY3VycmVudEZvbnRTaXplIDo9IG1heCAwLjIgKG1pbiAoIWN1cnJlbnRGb250U2l6ZSArLiBkZWx0YSkgMy4pIGluXG4gIGxldCB2JyA9IHN0cmluZ19vZl9mbG9hdCAhY3VycmVudEZvbnRTaXplIGluXG4gIGxldCAoKSA9XG4gICAgRG9tX2h0bWwuZG9jdW1lbnQjIy5ib2R5IyMuc3R5bGUjIy5mb250U2l6ZSA6PSBKcy5zdHJpbmcgKHYnIF4gXCJlbVwiKVxuICBpblxuICAoKVxuXG5sZXQgc3luY2gsIHNldF9zeW5jaCA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5sZXQgYWdlbnRfY29sb3JpbmcgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IGluaXQgKCkgOiB1bml0IEx3dC50ID1cbiAgbGV0ICgpID0gaW5pdEZyb21TdG9yYWdlICgpIGluXG4gIGxldCBjbGllbnRfaWRzID0gQ29tbW9uX3N0YXRlLnVybF9hcmdzIFwiY2xpZW50X2lkXCIgaW5cbiAgbGV0IHN5bmNoID0gQ29tbW9uX3N0YXRlLnVybF9hcmdzIFwic3luY2hcIiBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGNsaWVudF9pZHMgd2l0aFxuICAgIHwgY2xpZW50X2lkIDo6IF8gLT4gc2V0X2NsaWVudF9pZCBjbGllbnRfaWRcbiAgICB8IFtdIC0+ICgpXG4gIGluXG4gIGxldCAoKSA9IHNldF9zeW5jaCAoWyBcInRydWVcIiBdID0gc3luY2gpIGluXG4gIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgc3luYyAoKSA6IHVuaXQgTHd0LnQgPSBMd3QucmV0dXJuX3VuaXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmNsYXNzIG1hbmFnZXIgKCkgPVxuICBsZXQga2FzYV93b3JrZXIgPSBXb3JrZXIuY3JlYXRlIFwiS2FTYVdvcmtlci5qc1wiIGluXG4gIGxldCBrYXNhX21haWxib3ggPSBLYXNhX2NsaWVudC5uZXdfbWFpbGJveCAoKSBpblxuICBsZXQga2Ftb2hhX3dvcmtlciA9IFdvcmtlci5jcmVhdGUgXCJLYU1vSGFXb3JrZXIuanNcIiBpblxuICBsZXQga2Ftb2hhX21haWxib3ggPSBLYW1vaGFfY2xpZW50Lm5ld19tYWlsYm94ICgpIGluXG4gIGxldCBrYXN0b3Jfd29ya2VyID0gV29ya2VyLmNyZWF0ZSBcIkthU3Rvcldvcmtlci5qc1wiIGluXG4gIGxldCBzdG9yX3N0YXRlLCB1cGRhdGVfc3Rvcl9zdGF0ZSA9IEthc3Rvcl9jbGllbnQuaW5pdF9zdGF0ZSAoKSBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIHNpbV93b3JrZXIgPSBXb3JrZXIuY3JlYXRlIFwiS2FTaW1Xb3JrZXIuanNcIlxuICAgIHZhbCBtdXRhYmxlIGlzX3J1bm5pbmcgPSB0cnVlXG5cbiAgICBpbml0aWFsaXplclxuICAgICAgbGV0ICgpID1cbiAgICAgICAga2FzYV93b3JrZXIjIy5vbm1lc3NhZ2UgOj1cbiAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIHJlc3BvbnNlX21lc3NhZ2UgLT5cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlX3RleHQgPSByZXNwb25zZV9tZXNzYWdlIyMuZGF0YSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBLYXNhX2NsaWVudC5yZWNlaXZlIGthc2FfbWFpbGJveCByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGthbW9oYV93b3JrZXIjIy5vbm1lc3NhZ2UgOj1cbiAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIHJlc3BvbnNlX21lc3NhZ2UgLT5cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlX3RleHQgPSByZXNwb25zZV9tZXNzYWdlIyMuZGF0YSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBLYW1vaGFfY2xpZW50LnJlY2VpdmUga2Ftb2hhX21haWxib3ggcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBrYXN0b3Jfd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biByZXNwb25zZV9tZXNzYWdlIC0+XG4gICAgICAgICAgICAgIGxldCByZXNwb25zZV90ZXh0ID0gcmVzcG9uc2VfbWVzc2FnZSMjLmRhdGEgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gS2FzdG9yX2NsaWVudC5yZWNlaXZlIHVwZGF0ZV9zdG9yX3N0YXRlIHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgc2ltX3dvcmtlciMjLm9ubWVzc2FnZSA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyXG4gICAgICAgICAgICAoZnVuIChyZXNwb25zZV9tZXNzYWdlIDogc3RyaW5nIFdvcmtlci5tZXNzYWdlRXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlX3RleHQgOiBzdHJpbmcgPSByZXNwb25zZV9tZXNzYWdlIyMuZGF0YSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBzZWxmI3JlY2VpdmUgcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBzaW1fd29ya2VyIyMub25lcnJvciA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBpc19ydW5uaW5nIDwtIGZhbHNlIGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGthc2Ffd29ya2VyIyMub25lcnJvciA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBpc19ydW5uaW5nIDwtIGZhbHNlIGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGthbW9oYV93b3JrZXIjIy5vbmVycm9yIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IGlzX3J1bm5pbmcgPC0gZmFsc2UgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAga2FzdG9yX3dvcmtlciMjLm9uZXJyb3IgOj1cbiAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gaXNfcnVubmluZyA8LSBmYWxzZSBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICAoKVxuXG4gICAgbWV0aG9kIHByaXZhdGUgc2xlZXAgdGltZW91dCA9IEpzX29mX29jYW1sX2x3dC5Md3RfanMuc2xlZXAgdGltZW91dFxuXG4gICAgbWV0aG9kIHByaXZhdGUgcG9zdF9tZXNzYWdlIChtZXNzYWdlX3RleHQgOiBzdHJpbmcpIDogdW5pdCA9XG4gICAgICBzaW1fd29ya2VyIyNwb3N0TWVzc2FnZSBtZXNzYWdlX3RleHRcblxuICAgIGluaGVyaXQgTXBpX2FwaS5tYW5hZ2VyICgpXG5cbiAgICBpbmhlcml0XG4gICAgICBLYXNhX2NsaWVudC5uZXdfdW5pZm9ybV9jbGllbnRcbiAgICAgICAgfmlzX3J1bm5pbmc6KGZ1biAoKSAtPiB0cnVlKVxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPlxuICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIG1lc3NhZ2VfdGV4dCkgaW5cbiAgICAgICAgICBrYXNhX3dvcmtlciMjcG9zdE1lc3NhZ2UgbWVzc2FnZV90ZXh0KVxuICAgICAgICBrYXNhX21haWxib3hcblxuICAgIGluaGVyaXRcbiAgICAgIEthbW9oYV9jbGllbnQubmV3X2NsaWVudFxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPlxuICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIG1lc3NhZ2VfdGV4dCkgaW5cbiAgICAgICAgICBrYW1vaGFfd29ya2VyIyNwb3N0TWVzc2FnZSBtZXNzYWdlX3RleHQpXG4gICAgICAgIGthbW9oYV9tYWlsYm94XG5cbiAgICBpbmhlcml0XG4gICAgICBLYXN0b3JfY2xpZW50Lm5ld19jbGllbnRcbiAgICAgICAgfnBvc3Q6KGZ1biBtZXNzYWdlX3RleHQgLT5cbiAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBtZXNzYWdlX3RleHQpIGluXG4gICAgICAgICAga2FzdG9yX3dvcmtlciMjcG9zdE1lc3NhZ2UgbWVzc2FnZV90ZXh0KVxuICAgICAgICBzdG9yX3N0YXRlXG5cbiAgICB2YWwgbXV0YWJsZSBrYXNhX2xvY2F0b3IgPSBbXVxuXG4gICAgbWV0aG9kIHByb2plY3RfcGFyc2UgfnBhdHRlcm5TaGFyaW5nIG92ZXJ3cml0ZXMgPVxuICAgICAgc2VsZiNzZWNyZXRfcHJvamVjdF9wYXJzZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIG91dCAtPlxuICAgICAgICAgICAgICBsZXQgbG9hZCA9XG4gICAgICAgICAgICAgICAgc2VsZiNzZWNyZXRfc2ltdWxhdGlvbl9sb2FkIHBhdHRlcm5TaGFyaW5nIG91dCBvdmVyd3JpdGVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBpbml0ID0gc2VsZiNpbml0X3N0YXRpY19hbmFseXNlciBvdXQgaW5cbiAgICAgICAgICAgICAgbGV0IGxvY2F0b3JzID1cbiAgICAgICAgICAgICAgICBpbml0XG4gICAgICAgICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBrYXNhX2xvY2F0b3IgPC0gW10gaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIGUpKVxuICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmI3NlY3JldF9nZXRfcG9zX29mX3J1bGVzX2FuZF92YXJzXG4gICAgICAgICAgICAgICAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gaW5mb3MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0ga2FzYV9sb2NhdG9yIDwtIGluZm9zIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0ga2FzYV9sb2NhdG9yIDwtIFtdIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIGUpKSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbG9hZCA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKCkgLT4gbG9jYXRvcnMpKVxuXG4gICAgbWV0aG9kIGdldF9pbmZsdWVuY2VfbWFwX25vZGVfYXQgfmZpbGVuYW1lIHBvcyA6IF8gQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBMaXN0LmZpbmRfb3B0XG4gICAgICAgIChmdW4gKF8sIHgpIC0+IExvYy5pc19pbmNsdWRlZF9pbiBmaWxlbmFtZSBwb3MgeClcbiAgICAgICAga2FzYV9sb2NhdG9yXG4gICAgICB8PiBPcHRpb25fdXRpbC5tYXAgZnN0XG4gICAgICB8PiBSZXN1bHRfdXRpbC5vayA/c3RhdHVzOk5vbmVcbiAgICAgIHw+IEx3dC5yZXR1cm5cblxuICAgIG1ldGhvZCBpc19ydW5uaW5nID0gaXNfcnVubmluZ1xuXG4gICAgbWV0aG9kIHRlcm1pbmF0ZSA9XG4gICAgICBsZXQgKCkgPSBzaW1fd29ya2VyIyN0ZXJtaW5hdGUgaW5cbiAgICAgIGthc2Ffd29ya2VyIyN0ZXJtaW5hdGVcblxuICAgIG1ldGhvZCBpc19jb21wdXRpbmcgPVxuICAgICAgc2VsZiNzaW1faXNfY29tcHV0aW5nXG4gICAgICB8fCBLYXNhX2NsaWVudC5pc19jb21wdXRpbmcga2FzYV9tYWlsYm94XG4gICAgICB8fCBzZWxmI3N0b3J5X2lzX2NvbXB1dGluZ1xuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgY2xpID0geyB1cmw6IHN0cmluZzsgY29tbWFuZDogc3RyaW5nOyBhcmdzOiBzdHJpbmcgbGlzdCB9XG50eXBlIHByb3RvY29sID0gSFRUUCBvZiBzdHJpbmcgfCBDTEkgb2YgY2xpXG50eXBlIHJlbW90ZSA9IHsgbGFiZWw6IHN0cmluZzsgcHJvdG9jb2w6IHByb3RvY29sIH1cbnR5cGUgc3BlYyA9IFdlYldvcmtlciB8IEVtYmVkZGVkIHwgUmVtb3RlIG9mIHJlbW90ZVxudHlwZSBzdGF0ZSA9IHsgc3RhdGVfY3VycmVudDogc3BlYzsgc3RhdGVfcnVudGltZXM6IHNwZWMgbGlzdCB9XG50eXBlIG1vZGVsID0geyBtb2RlbF9jdXJyZW50OiBzcGVjOyBtb2RlbF9ydW50aW1lczogc3BlYyBsaXN0IH1cblxubGV0IHNwZWNfbGFiZWwgOiBzcGVjIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgV2ViV29ya2VyIC0+IFwiV2ViV29ya2VyXCJcbiAgfCBFbWJlZGRlZCAtPiBcIkVtYmVkZGVkXCJcbiAgfCBSZW1vdGUgcmVtb3RlIC0+IHJlbW90ZS5sYWJlbFxuXG5sZXQgc3BlY19pZCA6IHNwZWMgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBXZWJXb3JrZXIgLT4gXCJXZWJXb3JrZXJcIlxuICB8IEVtYmVkZGVkIC0+IFwiRW1iZWRkZWRcIlxuICB8IFJlbW90ZSB7IGxhYmVsID0gXzsgcHJvdG9jb2wgPSBIVFRQIGh0dHAgfSAtPiBodHRwXG4gIHwgUmVtb3RlIHsgbGFiZWwgPSBfOyBwcm90b2NvbCA9IENMSSBjbGkgfSAtPiBjbGkudXJsXG5cbmxldCByZWFkX3NwZWMgOiBzdHJpbmcgLT4gc3BlYyBvcHRpb24gPSBmdW5jdGlvblxuICB8IFwiV2ViV29ya2VyXCIgLT4gU29tZSBXZWJXb3JrZXJcbiAgfCBcIkVtYmVkZGVkXCIgLT4gU29tZSBFbWJlZGRlZFxuICB8IHVybCAtPlxuICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcInBhcnNlX3JlbW90ZTogJXNcIiB1cmwpKSBpblxuICAgIGxldCBmb3JtYXRfdXJsIHVybCA9XG4gICAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCB1cmwgaW5cbiAgICAgIGlmIGxlbmd0aCA+IDAgJiYgU3RyaW5nLmdldCB1cmwgKGxlbmd0aCAtIDEpID09ICcvJyB0aGVuXG4gICAgICAgIFN0cmluZy5zdWIgdXJsIDAgKGxlbmd0aCAtIDEpXG4gICAgICBlbHNlXG4gICAgICAgIHVybFxuICAgIGluXG4gICAgbGV0IGNsZWFuZWRfdXJsIGh0dHAgPVxuICAgICAgbGV0IGNsZWFuZWQgPVxuICAgICAgICBGb3JtYXQuc3ByaW50ZiBcIiVzOiVkLyVzXCIgaHR0cC5VcmwuaHVfaG9zdCBodHRwLlVybC5odV9wb3J0XG4gICAgICAgICAgaHR0cC5VcmwuaHVfcGF0aF9zdHJpbmdcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBDb21tb24uZGVidWcgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJjbGVhbmVkIDogJXNcIiBjbGVhbmVkKSlcbiAgICAgIGluXG4gICAgICBmb3JtYXRfdXJsIGNsZWFuZWRcbiAgICBpblxuICAgIChtYXRjaCBVcmwudXJsX29mX3N0cmluZyB1cmwgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHBhcnNlZCAtPlxuICAgICAgbGV0IHByb3RvY29sIDogcHJvdG9jb2wgPVxuICAgICAgICBtYXRjaCBwYXJzZWQgd2l0aFxuICAgICAgICB8IFVybC5IdHRwIGh0dHAgLT4gSFRUUCAoXCJodHRwOi8vXCIgXiBjbGVhbmVkX3VybCBodHRwKVxuICAgICAgICB8IFVybC5IdHRwcyBodHRwcyAtPiBIVFRQIChcImh0dHBzOi8vXCIgXiBjbGVhbmVkX3VybCBodHRwcylcbiAgICAgICAgfCBVcmwuRmlsZSBmaWxlIC0+XG4gICAgICAgICAgQ0xJXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHVybCA9IFwiZmlsZTovL1wiIF4gZmlsZS5VcmwuZnVfcGF0aF9zdHJpbmc7XG4gICAgICAgICAgICAgIGNvbW1hbmQgPSBmaWxlLlVybC5mdV9wYXRoX3N0cmluZztcbiAgICAgICAgICAgICAgYXJncyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBsYWJlbCA9XG4gICAgICAgIHRyeVxuICAgICAgICAgIExpc3QuYXNzb2MgXCJsYWJlbFwiXG4gICAgICAgICAgICAobWF0Y2ggcGFyc2VkIHdpdGhcbiAgICAgICAgICAgIHwgVXJsLkh0dHAgaHR0cCAtPiBodHRwLlVybC5odV9hcmd1bWVudHNcbiAgICAgICAgICAgIHwgVXJsLkh0dHBzIGh0dHBzIC0+IGh0dHBzLlVybC5odV9hcmd1bWVudHNcbiAgICAgICAgICAgIHwgVXJsLkZpbGUgZmlsZSAtPiBmaWxlLlVybC5mdV9hcmd1bWVudHMpXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgKG1hdGNoIHBhcnNlZCB3aXRoXG4gICAgICAgICAgfCBVcmwuSHR0cCBodHRwIC0+IGh0dHAuVXJsLmh1X2hvc3RcbiAgICAgICAgICB8IFVybC5IdHRwcyBodHRwcyAtPiBodHRwcy5VcmwuaHVfaG9zdFxuICAgICAgICAgIHwgVXJsLkZpbGUgZmlsZSAtPiBmaWxlLlVybC5mdV9wYXRoX3N0cmluZylcbiAgICAgIGluXG4gICAgICBTb21lIChSZW1vdGUgeyBsYWJlbDsgcHJvdG9jb2wgfSkpXG5cbmNsYXNzIGVtYmVkZGVkICgpIDogQXBpLmNvbmNyZXRlX21hbmFnZXIgPVxuICBsZXQga2FzYV93b3JrZXIgPSBXb3JrZXIuY3JlYXRlIFwiS2FTYVdvcmtlci5qc1wiIGluXG4gIGxldCBrYXNhX21haWxib3ggPSBLYXNhX2NsaWVudC5uZXdfbWFpbGJveCAoKSBpblxuICBsZXQga2Ftb2hhX3dvcmtlciA9IFdvcmtlci5jcmVhdGUgXCJLYU1vSGFXb3JrZXIuanNcIiBpblxuICBsZXQga2Ftb2hhX21haWxib3ggPSBLYW1vaGFfY2xpZW50Lm5ld19tYWlsYm94ICgpIGluXG4gIGxldCBrYXN0b3Jfd29ya2VyID0gV29ya2VyLmNyZWF0ZSBcIkthU3Rvcldvcmtlci5qc1wiIGluXG4gIGxldCBzdG9yX3N0YXRlLCB1cGRhdGVfc3Rvcl9zdGF0ZSA9IEthc3Rvcl9jbGllbnQuaW5pdF9zdGF0ZSAoKSBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5pdGlhbGl6ZXJcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGthc2Ffd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXJcbiAgICAgICAgICAgIChmdW4gKHJlc3BvbnNlX21lc3NhZ2UgOiBzdHJpbmcgV29ya2VyLm1lc3NhZ2VFdmVudCBKcy50KSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VfdGV4dCA6IHN0cmluZyA9IHJlc3BvbnNlX21lc3NhZ2UjIy5kYXRhIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IEthc2FfY2xpZW50LnJlY2VpdmUga2FzYV9tYWlsYm94IHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAga2Ftb2hhX3dvcmtlciMjLm9ubWVzc2FnZSA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyXG4gICAgICAgICAgICAoZnVuIChyZXNwb25zZV9tZXNzYWdlIDogc3RyaW5nIFdvcmtlci5tZXNzYWdlRXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlX3RleHQgOiBzdHJpbmcgPSByZXNwb25zZV9tZXNzYWdlIyMuZGF0YSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBLYW1vaGFfY2xpZW50LnJlY2VpdmUga2Ftb2hhX21haWxib3ggcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBrYXN0b3Jfd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXJcbiAgICAgICAgICAgIChmdW4gKHJlc3BvbnNlX21lc3NhZ2UgOiBzdHJpbmcgV29ya2VyLm1lc3NhZ2VFdmVudCBKcy50KSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VfdGV4dCA6IHN0cmluZyA9IHJlc3BvbnNlX21lc3NhZ2UjIy5kYXRhIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IEthc3Rvcl9jbGllbnQucmVjZWl2ZSB1cGRhdGVfc3Rvcl9zdGF0ZSByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgICgpXG5cbiAgICBpbmhlcml0XG4gICAgICBBcGlfcnVudGltZS5tYW5hZ2VyXG4gICAgICAgIChvYmplY3RcbiAgICAgICAgICAgbWV0aG9kIG1pbl9ydW5fZHVyYXRpb24gKCkgPSAwLjFcbiAgICAgICAgICAgbWV0aG9kIHlpZWxkID0gSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcy55aWVsZFxuXG4gICAgICAgICAgIG1ldGhvZCBsb2cgP2V4biAobXNnIDogc3RyaW5nKSA9XG4gICAgICAgICAgICAgbGV0ICgpID0gaWdub3JlIGV4biBpblxuICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICBDb21tb24uZGVidWdcbiAgICAgICAgICAgICAgICAgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJlbWJlZGRlZF9tYW5hZ2VyI2xvZzogJXNcIiBtc2cpKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgTHd0LnJldHVybl91bml0XG4gICAgICAgICBlbmRcbiAgICAgICAgICA6IEthcHBhX2ZhY2FkZS5zeXN0ZW1fcHJvY2VzcylcblxuICAgIGluaGVyaXRcbiAgICAgIEthc2FfY2xpZW50Lm5ld191bmlmb3JtX2NsaWVudFxuICAgICAgICB+aXNfcnVubmluZzooZnVuICgpIC0+IHRydWUpXG4gICAgICAgIH5wb3N0OihmdW4gbWVzc2FnZV90ZXh0IC0+IGthc2Ffd29ya2VyIyNwb3N0TWVzc2FnZSBtZXNzYWdlX3RleHQpXG4gICAgICAgIGthc2FfbWFpbGJveFxuXG4gICAgaW5oZXJpdFxuICAgICAgS2Ftb2hhX2NsaWVudC5uZXdfY2xpZW50XG4gICAgICAgIH5wb3N0OihmdW4gbWVzc2FnZV90ZXh0IC0+IGthbW9oYV93b3JrZXIjI3Bvc3RNZXNzYWdlIG1lc3NhZ2VfdGV4dClcbiAgICAgICAga2Ftb2hhX21haWxib3hcblxuICAgIGluaGVyaXRcbiAgICAgIEthc3Rvcl9jbGllbnQubmV3X2NsaWVudFxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPiBrYXN0b3Jfd29ya2VyIyNwb3N0TWVzc2FnZSBtZXNzYWdlX3RleHQpXG4gICAgICAgIHN0b3Jfc3RhdGVcblxuICAgIG1ldGhvZCBpc19ydW5uaW5nID0gdHJ1ZVxuXG4gICAgbWV0aG9kIHRlcm1pbmF0ZSA9XG4gICAgICBsZXQgKCkgPSBrYXNhX3dvcmtlciMjdGVybWluYXRlIGluXG4gICAgICAoKSAoKlRPRE8qKVxuXG4gICAgbWV0aG9kIGlzX2NvbXB1dGluZyA9IHRydWUgKCpUT0RPKilcbiAgICB2YWwgbXV0YWJsZSBrYXNhX2xvY2F0b3IgPSBbXVxuXG4gICAgbWV0aG9kIHByb2plY3RfcGFyc2UgfnBhdHRlcm5TaGFyaW5nIG92ZXJ3cml0ZXMgPVxuICAgICAgc2VsZiNzZWNyZXRfcHJvamVjdF9wYXJzZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIG91dCAtPlxuICAgICAgICAgICAgICBsZXQgbG9hZCA9XG4gICAgICAgICAgICAgICAgc2VsZiNzZWNyZXRfc2ltdWxhdGlvbl9sb2FkIHBhdHRlcm5TaGFyaW5nIG91dCBvdmVyd3JpdGVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBpbml0ID0gc2VsZiNpbml0X3N0YXRpY19hbmFseXNlciBvdXQgaW5cbiAgICAgICAgICAgICAgbGV0IGxvY2F0b3JzID1cbiAgICAgICAgICAgICAgICBpbml0XG4gICAgICAgICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBrYXNhX2xvY2F0b3IgPC0gW10gaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIGUpKVxuICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmI3NlY3JldF9nZXRfcG9zX29mX3J1bGVzX2FuZF92YXJzXG4gICAgICAgICAgICAgICAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gaW5mb3MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0ga2FzYV9sb2NhdG9yIDwtIGluZm9zIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0ga2FzYV9sb2NhdG9yIDwtIFtdIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIGUpKSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbG9hZCA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKCkgLT4gbG9jYXRvcnMpKVxuXG4gICAgbWV0aG9kIGdldF9pbmZsdWVuY2VfbWFwX25vZGVfYXQgfmZpbGVuYW1lIHBvcyA6IF8gQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBMaXN0LmZpbmRfb3B0XG4gICAgICAgIChmdW4gKF8sIHgpIC0+IExvYy5pc19pbmNsdWRlZF9pbiBmaWxlbmFtZSBwb3MgeClcbiAgICAgICAga2FzYV9sb2NhdG9yXG4gICAgICB8PiBPcHRpb25fdXRpbC5tYXAgZnN0XG4gICAgICB8PiBSZXN1bHRfdXRpbC5vayA/c3RhdHVzOk5vbmVcbiAgICAgIHw+IEx3dC5yZXR1cm5cbiAgZW5kXG5cbmxldCBzdGF0ZSwgc2V0X3N0YXRlID1cbiAgUmVhY3QuUy5jcmVhdGVcbiAgICB7IHN0YXRlX2N1cnJlbnQgPSBXZWJXb3JrZXI7IHN0YXRlX3J1bnRpbWVzID0gWyBXZWJXb3JrZXI7IEVtYmVkZGVkIF0gfVxuXG5sZXQgY3JlYXRlX21hbmFnZXIgfmlzX25ldyBwcm9qZWN0X2lkID1cbiAgbWF0Y2ggKFJlYWN0LlMudmFsdWUgc3RhdGUpLnN0YXRlX2N1cnJlbnQgd2l0aFxuICB8IFdlYldvcmtlciAtPlxuICAgIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnNldF9zeW5jaCBmYWxzZSBpblxuICAgIEx3dC5yZXR1cm5cbiAgICAgIChSZXN1bHRfdXRpbC5vayAobmV3IFdlYl93b3JrZXJfYXBpLm1hbmFnZXIgKCkgOiBBcGkuY29uY3JldGVfbWFuYWdlcikpXG4gIHwgRW1iZWRkZWQgLT5cbiAgICBsZXQgKCkgPSBTdGF0ZV9zZXR0aW5ncy5zZXRfc3luY2ggZmFsc2UgaW5cbiAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAobmV3IGVtYmVkZGVkICgpIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpKVxuICB8IFJlbW90ZSB7IGxhYmVsID0gXzsgcHJvdG9jb2wgPSBIVFRQIHVybCB9IC0+XG4gICAgbGV0IHZlcnNpb25fdXJsIDogc3RyaW5nID0gRm9ybWF0LnNwcmludGYgXCIlcy92MlwiIHVybCBpblxuICAgIGxldCAoKSA9XG4gICAgICBDb21tb24uZGVidWdcbiAgICAgICAgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJzZXRfcnVudGltZV91cmw6ICVzXCIgdmVyc2lvbl91cmwpKVxuICAgIGluXG4gICAgSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LnBlcmZvcm1fcmF3XG4gICAgICB+cmVzcG9uc2VfdHlwZTpYbWxIdHRwUmVxdWVzdC5UZXh0IHZlcnNpb25fdXJsXG4gICAgPj49IGZ1biBmcmFtZSAtPlxuICAgIGxldCBpc192YWxpZF9zZXJ2ZXIgOiBib29sID1cbiAgICAgIGZyYW1lLkpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5jb2RlID0gMjAwXG4gICAgaW5cbiAgICBpZiBpc192YWxpZF9zZXJ2ZXIgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBTdGF0ZV9zZXR0aW5ncy5zZXRfc3luY2ggdHJ1ZSBpblxuICAgICAgbGV0IG1hbmFnZXIgPSBuZXcgUmVzdF9hcGkubWFuYWdlciB+dGltZW91dDpOb25lIH51cmwgfnByb2plY3RfaWQgaW5cbiAgICAgIChpZiBpc19uZXcgdGhlblxuICAgICAgICAgbWFuYWdlciNwcm9qZWN0X2NyZWF0ZVxuICAgICAgICAgICB7IEFwaV90eXBlc19qLnByb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQgPSBwcm9qZWN0X2lkIH1cbiAgICAgICBlbHNlXG4gICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKG1hbmFnZXIgOj4gQXBpLmNvbmNyZXRlX21hbmFnZXIpKSlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiQmFkIFJlc3BvbnNlICVkIGZyb20gJXMgXCJcbiAgICAgICAgICBmcmFtZS5Kc19vZl9vY2FtbF9sd3QuWG1sSHR0cFJlcXVlc3QuY29kZSB1cmxcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuICAgIClcbiAgfCBSZW1vdGUgeyBsYWJlbDsgcHJvdG9jb2wgPSBDTEkgY2xpIH0gLT5cbiAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyAoXCJzZXRfcnVudGltZV91cmw6IFwiIF4gY2xpLnVybCkpIGluXG4gICAgKHRyeVxuICAgICAgIGxldCBqc19ub2RlX3J1bnRpbWUgPSBuZXcgSnNOb2RlLm1hbmFnZXIgY2xpLmNvbW1hbmQgY2xpLmFyZ3MgaW5cbiAgICAgICBpZiBqc19ub2RlX3J1bnRpbWUjaXNfcnVubmluZyB0aGVuIChcbiAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIFwic2V0X3J1bnRpbWVfdXJsOnN1Y2Vzc1wiKSBpblxuICAgICAgICAgbGV0ICgpID0gU3RhdGVfc2V0dGluZ3Muc2V0X3N5bmNoIGZhbHNlIGluXG4gICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoanNfbm9kZV9ydW50aW1lIDo+IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSlcbiAgICAgICApIGVsc2UgKFxuICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgXCJzZXRfcnVudGltZV91cmw6ZmFpbHVyZVwiKSBpblxuICAgICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiQ291bGQgbm90IHN0YXJ0IGNsaSBydW50aW1lICVzIFwiIGxhYmVsXG4gICAgICAgICBpblxuICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgICAgICApXG4gICAgIHdpdGggRmFpbHVyZSB4IC0+IEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB4KSlcblxubGV0IHNldF9zcGVjIHJ1bnRpbWUgPVxuICBsZXQgY3VycmVudF9zdGF0ZSA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgc2V0X3N0YXRlXG4gICAgeyBzdGF0ZV9jdXJyZW50ID0gcnVudGltZTsgc3RhdGVfcnVudGltZXMgPSBjdXJyZW50X3N0YXRlLnN0YXRlX3J1bnRpbWVzIH1cblxubGV0IGNyZWF0ZV9zcGVjIH5sb2FkIChpZCA6IHN0cmluZykgOiB1bml0IEFwaS5yZXN1bHQgPVxuICBtYXRjaCByZWFkX3NwZWMgaWQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgIEZvcm1hdC5zcHJpbnRmIFwiRmFpbGVkIHRvIGNyZWF0ZSBzcGVjOiBjb3VsZCBub3QgcGFyc2UgaWRlbnRpZmllciAlc1wiIGlkXG4gICAgaW5cbiAgICBBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnXG4gIHwgU29tZSBydW50aW1lIC0+XG4gICAgbGV0IGN1cnJlbnRfc3RhdGUgPSBSZWFjdC5TLnZhbHVlIHN0YXRlIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIG5vdCAoTGlzdC5tZW0gcnVudGltZSBjdXJyZW50X3N0YXRlLnN0YXRlX3J1bnRpbWVzKSB0aGVuXG4gICAgICAgIHNldF9zdGF0ZVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXRlX2N1cnJlbnQgPSBjdXJyZW50X3N0YXRlLnN0YXRlX2N1cnJlbnQ7XG4gICAgICAgICAgICBzdGF0ZV9ydW50aW1lcyA9IHJ1bnRpbWUgOjogY3VycmVudF9zdGF0ZS5zdGF0ZV9ydW50aW1lcztcbiAgICAgICAgICB9XG4gICAgaW5cbiAgICBsZXQgKCkgPSBpZiBsb2FkIHRoZW4gc2V0X3NwZWMgcnVudGltZSBpblxuICAgIFJlc3VsdF91dGlsLm9rICgpXG5cbmxldCBtb2RlbCA6IG1vZGVsIFJlYWN0LnNpZ25hbCA9XG4gIFJlYWN0LlMubWFwXG4gICAgKGZ1biBzdGF0ZSAtPlxuICAgICAge1xuICAgICAgICBtb2RlbF9jdXJyZW50ID0gc3RhdGUuc3RhdGVfY3VycmVudDtcbiAgICAgICAgbW9kZWxfcnVudGltZXMgPSBzdGF0ZS5zdGF0ZV9ydW50aW1lcztcbiAgICAgIH0pXG4gICAgc3RhdGVcblxuKCogcnVuIG9uIGFwcGxpY2F0aW9uIGluaXQgKilcbmxldCBpbml0ICgpID1cbiAgKCogZ2V0IHVybCBvZiBob3N0ICopXG4gIGxldCBob3N0cyA9IENvbW1vbl9zdGF0ZS51cmxfYXJncyBcImhvc3RcIiBpblxuICBsZXQgcmVjIGFkZF91cmxzIHVybHMgbG9hZCA9XG4gICAgbWF0Y2ggdXJscyB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgdXJsIDo6IHVybHMgLT5cbiAgICAgIChtYXRjaCBjcmVhdGVfc3BlYyB+bG9hZCB1cmwgd2l0aFxuICAgICAgfCB7IFJlc3VsdF91dGlsLnZhbHVlID0gUmVzdWx0Lk9rICgpOyBfIH0gLT4gYWRkX3VybHMgdXJscyBmYWxzZVxuICAgICAgfCB7IFJlc3VsdF91dGlsLnZhbHVlID0gUmVzdWx0LkVycm9yIF87IF8gfSAtPiBhZGRfdXJscyB1cmxzIGxvYWQpXG4gIGluXG4gIGxldCAoKSA9IGFkZF91cmxzIGhvc3RzIHRydWUgaW5cbiAgbWF0Y2ggKFJlYWN0LlMudmFsdWUgc3RhdGUpLnN0YXRlX2N1cnJlbnQgd2l0aFxuICB8IFJlbW90ZSB7IHByb3RvY29sID0gQ0xJIF87IF8gfSB8IFdlYldvcmtlciB8IEVtYmVkZGVkIC0+IEx3dC5yZXR1cm5fbmlsXG4gIHwgUmVtb3RlIHsgbGFiZWwgPSBfOyBwcm90b2NvbCA9IEhUVFAgdXJsIH0gLT5cbiAgICBsZXQgdmVyc2lvbl91cmwgOiBzdHJpbmcgPSBGb3JtYXQuc3ByaW50ZiBcIiVzL3YyXCIgdXJsIGluXG4gICAgbGV0ICgpID1cbiAgICAgIENvbW1vbi5kZWJ1Z1xuICAgICAgICAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcInNldF9ydW50aW1lX3VybDogJXNcIiB2ZXJzaW9uX3VybCkpXG4gICAgaW5cbiAgICBKc19vZl9vY2FtbF9sd3QuWG1sSHR0cFJlcXVlc3QucGVyZm9ybV9yYXdcbiAgICAgIH5yZXNwb25zZV90eXBlOlhtbEh0dHBSZXF1ZXN0LlRleHQgdmVyc2lvbl91cmxcbiAgICA+Pj0gZnVuIGZyYW1lIC0+XG4gICAgbGV0IGlzX3ZhbGlkX3NlcnZlciA6IGJvb2wgPVxuICAgICAgZnJhbWUuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LmNvZGUgPSAyMDBcbiAgICBpblxuICAgIGlmIGlzX3ZhbGlkX3NlcnZlciB0aGVuIChcbiAgICAgIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnNldF9zeW5jaCB0cnVlIGluXG4gICAgICBsZXQgbWFuYWdlciA9IG5ldyBSZXN0X2FwaS5tYW5hZ2VyIH50aW1lb3V0Ok5vbmUgfnVybCB+cHJvamVjdF9pZDpcIlwiIGluXG4gICAgICBtYW5hZ2VyI3Byb2plY3RfY2F0YWxvZ1xuICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5vazooZnVuIHByb2plY3RzIC0+IEx3dC5yZXR1cm4gcHJvamVjdHMpXG4gICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IEx3dC5yZXR1cm5fbmlsKVxuICAgICkgZWxzZVxuICAgICAgTHd0LnJldHVybl9uaWxcblxuKCogdG8gc3luYyBzdGF0ZSBvZiBhcHBsaWNhdGlvbiB3aXRoIHJ1bnRpbWUgKilcbmxldCBzeW5jICgpID0gTHd0LnJldHVybl91bml0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgcGxvdFBlcmlvZFBhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwUGxvdFBlcmlvZFwiXG5sZXQgcGF1c2VDb25kaXRpb25QYXJhbUlkID0gSnMuc3RyaW5nIFwia2FwcGFwcFBhdXNlQ29uZGl0aW9uXCJcbmxldCBzZWVkUGFyYW1JZCA9IEpzLnN0cmluZyBcImthcHBhcHBEZWZhdWx0U2VlZFwiXG5sZXQgc3RvcmVUcmFjZVBhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwU3RvcmVUcmFjZVwiXG5sZXQgc2hvd0RlYWRSdWxlc1BhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwU2hvd0RlYWRSdWxlc1wiXG5sZXQgc2hvd0RlYWRBZ2VudHNQYXJhbUlkID0gSnMuc3RyaW5nIFwia2FwcGFwcFNob3dEZWFkQWdlbnRzXCJcblxubGV0IHNob3dJcnJldmVyc2libGVUcmFuc2l0aW9uc1BhcmFtSWQgPVxuICBKcy5zdHJpbmcgXCJrYXBwYXBwU2hvd0lycmV2ZXJzaWJsZVRyYW5zaXRpb25cIlxuXG50eXBlIHBhcmFtZXRlcnMgPSB7XG4gIHBsb3RfcGVyaW9kOiBmbG9hdDtcbiAgcGF1c2VfY29uZGl0aW9uOiBzdHJpbmc7XG4gIHNlZWQ6IGludCBvcHRpb247XG4gIHN0b3JlX3RyYWNlOiBib29sO1xuICBzaG93X2RlYWRfcnVsZXM6IGJvb2w7XG4gIHNob3dfZGVhZF9hZ2VudHM6IGJvb2w7XG4gIHNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zOiBib29sO1xufVxuXG50eXBlIGFfcHJvamVjdCA9IHtcbiAgcHJvamVjdF9pZDogc3RyaW5nO1xuICBwcm9qZWN0X2lzX2NvbXB1dGluZzogYm9vbCBSZWFjdC5TLnQ7XG4gIHByb2plY3Rfd2F0Y2hlcl9jYW5jZWw6IGJvb2wgcmVmO1xuICBwcm9qZWN0X21hbmFnZXI6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyO1xufVxuXG50eXBlIHN0YXRlID0ge1xuICBwcm9qZWN0X2N1cnJlbnQ6IGFfcHJvamVjdCBvcHRpb247XG4gIHByb2plY3RfY2F0YWxvZzogYV9wcm9qZWN0IGxpc3Q7XG4gIHByb2plY3RfdmVyc2lvbjogaW50O1xuICBkZWZhdWx0X3BhcmFtZXRlcnM6IHBhcmFtZXRlcnM7XG4gIHByb2plY3RfcGFyYW1ldGVyczogcGFyYW1ldGVycyBNb2RzLlN0cmluZ01hcC50O1xufVxuXG50eXBlIHByb2plY3RfbW9kZWwgPSB7XG4gIG1vZGVsX3Byb2plY3RfaWQ6IHN0cmluZztcbiAgbW9kZWxfcHJvamVjdF9pc19jb21wdXRpbmc6IGJvb2wgUmVhY3QuUy50O1xufVxuXG50eXBlIG1vZGVsID0ge1xuICBtb2RlbF9jdXJyZW50X2lkOiBzdHJpbmcgb3B0aW9uO1xuICBtb2RlbF9jYXRhbG9nOiBwcm9qZWN0X21vZGVsIGxpc3Q7XG4gIG1vZGVsX3Byb2plY3RfdmVyc2lvbjogaW50O1xuICBtb2RlbF9wYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzO1xufVxuXG5sZXQgcHJvamVjdF9lcXVhbCBhIGIgPSBhLnByb2plY3RfaWQgPSBiLnByb2plY3RfaWRcblxubGV0IGNhdGFsb2dfZXF1YWwgeCB5ID1cbiAgdHJ5IExpc3QuZm9yX2FsbDIgcHJvamVjdF9lcXVhbCB4IHkgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gZmFsc2VcblxubGV0IHN0YXRlX2VxdWFsIGEgYiA9XG4gIE9wdGlvbl91dGlsLmVxdWFsIHByb2plY3RfZXF1YWwgYS5wcm9qZWN0X2N1cnJlbnQgYi5wcm9qZWN0X2N1cnJlbnRcbiAgJiYgYS5wcm9qZWN0X3ZlcnNpb24gPSBiLnByb2plY3RfdmVyc2lvblxuICAmJiBhLmRlZmF1bHRfcGFyYW1ldGVycyA9IGIuZGVmYXVsdF9wYXJhbWV0ZXJzXG4gICYmIE1vZHMuU3RyaW5nTWFwLmVxdWFsXG4gICAgICAgKGZ1biB4IHkgLT4gY29tcGFyZSB4IHkgPSAwKVxuICAgICAgIGEucHJvamVjdF9wYXJhbWV0ZXJzIGIucHJvamVjdF9wYXJhbWV0ZXJzXG4gICYmIGNhdGFsb2dfZXF1YWwgYS5wcm9qZWN0X2NhdGFsb2cgYi5wcm9qZWN0X2NhdGFsb2dcblxubGV0IG1vZGVsX2VxdWFsIGEgYiA9XG4gIE9wdGlvbl91dGlsLmVxdWFsXG4gICAgKGZ1biB4IHkgLT4gU3RyaW5nLmNvbXBhcmUgeCB5ID0gMClcbiAgICBhLm1vZGVsX2N1cnJlbnRfaWQgYi5tb2RlbF9jdXJyZW50X2lkXG4gICYmICh0cnlcbiAgICAgICAgTGlzdC5mb3JfYWxsMlxuICAgICAgICAgIChmdW4geCB5IC0+IHgubW9kZWxfcHJvamVjdF9pZCA9IHkubW9kZWxfcHJvamVjdF9pZClcbiAgICAgICAgICBhLm1vZGVsX2NhdGFsb2cgYi5tb2RlbF9jYXRhbG9nXG4gICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBmYWxzZSlcbiAgJiYgYS5tb2RlbF9wcm9qZWN0X3ZlcnNpb24gPSBiLm1vZGVsX3Byb2plY3RfdmVyc2lvblxuICAmJiBhLm1vZGVsX3BhcmFtZXRlcnMgPSBiLm1vZGVsX3BhcmFtZXRlcnNcblxubGV0IGluaXRfZGVmYXVsdF9wYXJhbWV0ZXJzID1cbiAge1xuICAgIHBsb3RfcGVyaW9kID0gMS47XG4gICAgcGF1c2VfY29uZGl0aW9uID0gXCJbZmFsc2VdXCI7XG4gICAgc2VlZCA9IE5vbmU7XG4gICAgc3RvcmVfdHJhY2UgPSBmYWxzZTtcbiAgICBzaG93X2RlYWRfcnVsZXMgPSB0cnVlO1xuICAgIHNob3dfZGVhZF9hZ2VudHMgPSB0cnVlO1xuICAgIHNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID0gZmFsc2U7XG4gIH1cblxubGV0IGluaXRfc3RhdGUgPVxuICB7XG4gICAgcHJvamVjdF9jdXJyZW50ID0gTm9uZTtcbiAgICBwcm9qZWN0X2NhdGFsb2cgPSBbXTtcbiAgICBwcm9qZWN0X3ZlcnNpb24gPSAtMTtcbiAgICBkZWZhdWx0X3BhcmFtZXRlcnMgPSBpbml0X2RlZmF1bHRfcGFyYW1ldGVycztcbiAgICBwcm9qZWN0X3BhcmFtZXRlcnMgPSBNb2RzLlN0cmluZ01hcC5lbXB0eTtcbiAgfVxuXG5sZXQgc3RhdGUsIHNldF9zdGF0ZSA9IFJlYWN0LlMuY3JlYXRlIH5lcTpzdGF0ZV9lcXVhbCBpbml0X3N0YXRlXG5cbmxldCB1cGRhdGVfcGFyYW1ldGVycyBoYW5kbGVyID1cbiAgbGV0IHN0ID0gUmVhY3QuUy52YWx1ZSBzdGF0ZSBpblxuICBsZXQgZGVmYXVsdF9wYXJhbWV0ZXJzLCBwcm9qZWN0X3BhcmFtZXRlcnMgPVxuICAgIG1hdGNoIHN0LnByb2plY3RfY3VycmVudCB3aXRoXG4gICAgfCBOb25lIC0+IGhhbmRsZXIgc3QuZGVmYXVsdF9wYXJhbWV0ZXJzLCBzdC5wcm9qZWN0X3BhcmFtZXRlcnNcbiAgICB8IFNvbWUgcHJvaiAtPlxuICAgICAgKCBzdC5kZWZhdWx0X3BhcmFtZXRlcnMsXG4gICAgICAgIE1vZHMuU3RyaW5nTWFwLmFkZCBwcm9qLnByb2plY3RfaWRcbiAgICAgICAgICAoaGFuZGxlclxuICAgICAgICAgICAgIChNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHQgc3QuZGVmYXVsdF9wYXJhbWV0ZXJzIHByb2oucHJvamVjdF9pZFxuICAgICAgICAgICAgICAgIHN0LnByb2plY3RfcGFyYW1ldGVycykpXG4gICAgICAgICAgc3QucHJvamVjdF9wYXJhbWV0ZXJzIClcbiAgaW5cbiAgc2V0X3N0YXRlXG4gICAge1xuICAgICAgcHJvamVjdF9jdXJyZW50ID0gc3QucHJvamVjdF9jdXJyZW50O1xuICAgICAgcHJvamVjdF9jYXRhbG9nID0gc3QucHJvamVjdF9jYXRhbG9nO1xuICAgICAgcHJvamVjdF92ZXJzaW9uID0gc3QucHJvamVjdF92ZXJzaW9uO1xuICAgICAgZGVmYXVsdF9wYXJhbWV0ZXJzO1xuICAgICAgcHJvamVjdF9wYXJhbWV0ZXJzO1xuICAgIH1cblxubGV0IHNldF9wYXJhbWV0ZXJzX2FzX2RlZmF1bHQgKCkgPVxuICBsZXQgc3QgPSBSZWFjdC5TLnZhbHVlIHN0YXRlIGluXG4gIGxldCBwYSA9XG4gICAgbWF0Y2ggc3QucHJvamVjdF9jdXJyZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gc3QuZGVmYXVsdF9wYXJhbWV0ZXJzXG4gICAgfCBTb21lIHByb2ogLT5cbiAgICAgIE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBzdC5kZWZhdWx0X3BhcmFtZXRlcnMgcHJvai5wcm9qZWN0X2lkXG4gICAgICAgIHN0LnByb2plY3RfcGFyYW1ldGVyc1xuICBpblxuICBsZXQgKCkgPVxuICAgIEpzLk9wdGRlZi5pdGVyIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZSAoZnVuIGxzIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbHMjI3NldEl0ZW0gcGxvdFBlcmlvZFBhcmFtSWRcbiAgICAgICAgICAgIChKcy5zdHJpbmcgKHN0cmluZ19vZl9mbG9hdCBwYS5wbG90X3BlcmlvZCkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbHMjI3NldEl0ZW0gcGF1c2VDb25kaXRpb25QYXJhbUlkIChKcy5zdHJpbmcgcGEucGF1c2VfY29uZGl0aW9uKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIHBhLnNlZWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBscyMjcmVtb3ZlSXRlbSBzZWVkUGFyYW1JZFxuICAgICAgICAgIHwgU29tZSB2YSAtPiBscyMjc2V0SXRlbSBzZWVkUGFyYW1JZCAoSnMuc3RyaW5nIChzdHJpbmdfb2ZfaW50IHZhKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwYS5zdG9yZV90cmFjZSB0aGVuXG4gICAgICAgICAgICBscyMjc2V0SXRlbSBzdG9yZVRyYWNlUGFyYW1JZCAoSnMuc3RyaW5nIFwidHJ1ZVwiKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxzIyNyZW1vdmVJdGVtIHN0b3JlVHJhY2VQYXJhbUlkXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcGEuc2hvd19kZWFkX3J1bGVzIHRoZW5cbiAgICAgICAgICAgIGxzIyNzZXRJdGVtIHNob3dEZWFkUnVsZXNQYXJhbUlkIChKcy5zdHJpbmcgXCJ0cnVlXCIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbHMjI3NldEl0ZW0gc2hvd0RlYWRSdWxlc1BhcmFtSWQgKEpzLnN0cmluZyBcImZhbHNlXCIpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcGEuc2hvd19kZWFkX2FnZW50cyB0aGVuXG4gICAgICAgICAgICBscyMjc2V0SXRlbSBzaG93RGVhZEFnZW50c1BhcmFtSWQgKEpzLnN0cmluZyBcInRydWVcIilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBscyMjc2V0SXRlbSBzaG93RGVhZEFnZW50c1BhcmFtSWQgKEpzLnN0cmluZyBcImZhbHNlXCIpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcGEuc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgdGhlblxuICAgICAgICAgICAgbHMjI3NldEl0ZW0gc2hvd0lycmV2ZXJzaWJsZVRyYW5zaXRpb25zUGFyYW1JZCAoSnMuc3RyaW5nIFwidHJ1ZVwiKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxzIyNyZW1vdmVJdGVtIHNob3dJcnJldmVyc2libGVUcmFuc2l0aW9uc1BhcmFtSWRcbiAgICAgICAgaW5cbiAgICAgICAgKCkpXG4gIGluXG4gIHNldF9zdGF0ZVxuICAgIHtcbiAgICAgIHByb2plY3RfY3VycmVudCA9IHN0LnByb2plY3RfY3VycmVudDtcbiAgICAgIHByb2plY3RfY2F0YWxvZyA9IHN0LnByb2plY3RfY2F0YWxvZztcbiAgICAgIHByb2plY3RfdmVyc2lvbiA9IHN0LnByb2plY3RfdmVyc2lvbjtcbiAgICAgIHByb2plY3RfcGFyYW1ldGVycyA9IHN0LnByb2plY3RfcGFyYW1ldGVycztcbiAgICAgIGRlZmF1bHRfcGFyYW1ldGVycyA9IHBhO1xuICAgIH1cblxubGV0IHNldF9wbG90X3BlcmlvZCBwbG90X3BlcmlvZCA9XG4gIHVwZGF0ZV9wYXJhbWV0ZXJzIChmdW4gcGFyYW0gLT4geyBwYXJhbSB3aXRoIHBsb3RfcGVyaW9kIH0pXG5cbmxldCBzZXRfcGF1c2VfY29uZGl0aW9uIHBhdXNlX2NvbmRpdGlvbiA9XG4gIHVwZGF0ZV9wYXJhbWV0ZXJzIChmdW4gcGFyYW0gLT4geyBwYXJhbSB3aXRoIHBhdXNlX2NvbmRpdGlvbiB9KVxuXG5sZXQgc2V0X3NlZWQgc2VlZCA9IHVwZGF0ZV9wYXJhbWV0ZXJzIChmdW4gcGFyYW0gLT4geyBwYXJhbSB3aXRoIHNlZWQgfSlcblxubGV0IHNldF9zdG9yZV90cmFjZSBzdG9yZV90cmFjZSA9XG4gIHVwZGF0ZV9wYXJhbWV0ZXJzIChmdW4gcGFyYW0gLT4geyBwYXJhbSB3aXRoIHN0b3JlX3RyYWNlIH0pXG5cbmxldCBzZXRfc2hvd19kZWFkX3J1bGVzIHNob3dfZGVhZF9ydWxlcyA9XG4gIHVwZGF0ZV9wYXJhbWV0ZXJzIChmdW4gcGFyYW0gLT4geyBwYXJhbSB3aXRoIHNob3dfZGVhZF9ydWxlcyB9KVxuXG5sZXQgc2V0X3Nob3dfZGVhZF9hZ2VudHMgc2hvd19kZWFkX2FnZW50cyA9XG4gIHVwZGF0ZV9wYXJhbWV0ZXJzIChmdW4gcGFyYW0gLT4geyBwYXJhbSB3aXRoIHNob3dfZGVhZF9hZ2VudHMgfSlcblxubGV0IHNldF9zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuICAgIHNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgdXBkYXRlX3BhcmFtZXRlcnMgKGZ1biBwYXJhbSAtPlxuICAgICAgeyBwYXJhbSB3aXRoIHNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zIH0pXG5cbmxldCB1cGRhdGVfc3RhdGUgbWUgcHJvamVjdF9jYXRhbG9nIGRlZmF1bHRfcGFyYW1ldGVycyBwcm9qZWN0X3BhcmFtZXRlcnMgPVxuICBtZS5wcm9qZWN0X21hbmFnZXIjcHJvamVjdF9wYXJzZSB+cGF0dGVyblNoYXJpbmc6UGF0dGVybi5Db21wYXRpYmxlX3BhdHRlcm5zXG4gICAgW11cbiAgPj49XG4gIGxldCAoKSA9XG4gICAgc2V0X3N0YXRlXG4gICAgICB7XG4gICAgICAgIHByb2plY3RfY3VycmVudCA9IFNvbWUgbWU7XG4gICAgICAgIHByb2plY3RfY2F0YWxvZztcbiAgICAgICAgZGVmYXVsdF9wYXJhbWV0ZXJzO1xuICAgICAgICBwcm9qZWN0X3BhcmFtZXRlcnM7XG4gICAgICAgIHByb2plY3RfdmVyc2lvbiA9IDE7XG4gICAgICB9XG4gIGluXG4gIGZ1biBvdXQgLT5cbiAgICBsZXQgc3QgPSBSZWFjdC5TLnZhbHVlIHN0YXRlIGluXG4gICAgbGV0ICgpID1cbiAgICAgIHNldF9zdGF0ZVxuICAgICAgICB7XG4gICAgICAgICAgc3Qgd2l0aFxuICAgICAgICAgIHByb2plY3RfY3VycmVudCA9IFNvbWUgbWU7XG4gICAgICAgICAgcHJvamVjdF92ZXJzaW9uID0gc3QucHJvamVjdF92ZXJzaW9uICsgMTtcbiAgICAgICAgfVxuICAgIGluXG4gICAgTHd0LnJldHVybiBvdXRcblxubGV0IGNvbXB1dGluZ193YXRjaGVyIG1hbmFnZXIgc2V0dGVyID1cbiAgbGV0IGRlbGF5ID0gMS4gaW5cbiAgbGV0IGNhbmNlbGxlZCA9IHJlZiBmYWxzZSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGxldCAoKSA9IHNldHRlciBtYW5hZ2VyI2lzX2NvbXB1dGluZyBpblxuICAgIGlmICFjYW5jZWxsZWQgdGhlblxuICAgICAgTHd0LnJldHVybl91bml0XG4gICAgZWxzZVxuICAgICAgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcy5zbGVlcCBkZWxheSA+Pj0gbG9vcFxuICBpblxuICBsZXQgKCkgPSBDb21tb24uYXN5bmMgX19MT0NfXyBsb29wIGluXG4gIGNhbmNlbGxlZFxuXG5sZXQgYWRkX3Byb2plY3QgaXNfbmV3IHByb2plY3RfaWQgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBsZXQgc3RhdGVfdmEgPSBSZWFjdC5TLnZhbHVlIHN0YXRlIGluXG4gICgqIFRPRE86IElzIGl0IG9rIHRvIGdldCB0aGUgdmFsdWUgbGlrZSB0aGlzID8gKilcbiAgbGV0IGNhdGFsb2cgPSBzdGF0ZV92YS5wcm9qZWN0X2NhdGFsb2cgaW5cbiAgKHRyeVxuICAgICBMd3QucmV0dXJuXG4gICAgICAgKFJlc3VsdF91dGlsLm9rXG4gICAgICAgICAgKCBMaXN0LmZpbmQgKGZ1biB4IC0+IHgucHJvamVjdF9pZCA9IHByb2plY3RfaWQpIGNhdGFsb2csXG4gICAgICAgICAgICBjYXRhbG9nLFxuICAgICAgICAgICAgc3RhdGVfdmEucHJvamVjdF9wYXJhbWV0ZXJzICkpXG4gICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICBTdGF0ZV9ydW50aW1lLmNyZWF0ZV9tYW5hZ2VyIH5pc19uZXcgcHJvamVjdF9pZFxuICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gcHJvamVjdF9tYW5hZ2VyIC0+XG4gICAgICAgICAgICAgbGV0IHByb2plY3RfaXNfY29tcHV0aW5nLCBzZXRfY29tcHV0ZXMgPSBSZWFjdC5TLmNyZWF0ZSB0cnVlIGluXG4gICAgICAgICAgICAgbGV0IHByb2plY3Rfd2F0Y2hlcl9jYW5jZWwgPVxuICAgICAgICAgICAgICAgY29tcHV0aW5nX3dhdGNoZXIgcHJvamVjdF9tYW5hZ2VyIChzZXRfY29tcHV0ZXMgP3N0ZXA6Tm9uZSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCBtZSA9XG4gICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgIHByb2plY3RfaWQ7XG4gICAgICAgICAgICAgICAgIHByb2plY3RfbWFuYWdlcjtcbiAgICAgICAgICAgICAgICAgcHJvamVjdF9pc19jb21wdXRpbmc7XG4gICAgICAgICAgICAgICAgIHByb2plY3Rfd2F0Y2hlcl9jYW5jZWw7XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsZXQgZGVmYXVsdF9wYXJhbWV0ZXJzID0gc3RhdGVfdmEuZGVmYXVsdF9wYXJhbWV0ZXJzIGluXG4gICAgICAgICAgICAgbGV0IHBhcmFtcyA9XG4gICAgICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5hZGQgcHJvamVjdF9pZCBkZWZhdWx0X3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgc3RhdGVfdmEucHJvamVjdF9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAobWUsIG1lIDo6IGNhdGFsb2csIHBhcmFtcykpKSlcbiAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIChtZSwgY2F0YWxvZywgcGFyYW1zKSAtPlxuICAgICAgICAgIHVwZGF0ZV9zdGF0ZSBtZSBjYXRhbG9nIHN0YXRlX3ZhLmRlZmF1bHRfcGFyYW1ldGVycyBwYXJhbXMpXG5cbmxldCBjcmVhdGVfcHJvamVjdCBwcm9qZWN0X2lkID0gYWRkX3Byb2plY3QgdHJ1ZSBwcm9qZWN0X2lkXG5sZXQgc2V0X3Byb2plY3QgcHJvamVjdF9pZCA9IGFkZF9wcm9qZWN0IGZhbHNlIHByb2plY3RfaWRcblxubGV0IGR1bW15X21vZGVsID1cbiAge1xuICAgIG1vZGVsX2N1cnJlbnRfaWQgPSBOb25lO1xuICAgIG1vZGVsX2NhdGFsb2cgPSBbXTtcbiAgICBtb2RlbF9wcm9qZWN0X3ZlcnNpb24gPSAtMTtcbiAgICBtb2RlbF9wYXJhbWV0ZXJzID0gaW5pdF9kZWZhdWx0X3BhcmFtZXRlcnM7XG4gIH1cblxubGV0IG1vZGVsIDogbW9kZWwgUmVhY3Quc2lnbmFsID1cbiAgUmVhY3QuUy5tYXAgfmVxOm1vZGVsX2VxdWFsXG4gICAgKGZ1biBzdGF0ZSAtPlxuICAgICAgbGV0IG1vZGVsX2NhdGFsb2cgPVxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gcCAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtb2RlbF9wcm9qZWN0X2lkID0gcC5wcm9qZWN0X2lkO1xuICAgICAgICAgICAgICBtb2RlbF9wcm9qZWN0X2lzX2NvbXB1dGluZyA9IHAucHJvamVjdF9pc19jb21wdXRpbmc7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIHN0YXRlLnByb2plY3RfY2F0YWxvZ1xuICAgICAgaW5cbiAgICAgIGxldCBtb2RlbF9wYXJhbWV0ZXJzID1cbiAgICAgICAgbWF0Y2ggc3RhdGUucHJvamVjdF9jdXJyZW50IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHN0YXRlLmRlZmF1bHRfcGFyYW1ldGVyc1xuICAgICAgICB8IFNvbWUgcHJvaiAtPlxuICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBzdGF0ZS5kZWZhdWx0X3BhcmFtZXRlcnMgcHJvai5wcm9qZWN0X2lkXG4gICAgICAgICAgICBzdGF0ZS5wcm9qZWN0X3BhcmFtZXRlcnNcbiAgICAgIGluXG4gICAgICB7XG4gICAgICAgIG1vZGVsX2N1cnJlbnRfaWQgPVxuICAgICAgICAgIE9wdGlvbl91dGlsLm1hcCAoZnVuIHggLT4geC5wcm9qZWN0X2lkKSBzdGF0ZS5wcm9qZWN0X2N1cnJlbnQ7XG4gICAgICAgIG1vZGVsX2NhdGFsb2c7XG4gICAgICAgIG1vZGVsX3Byb2plY3RfdmVyc2lvbiA9IHN0YXRlLnByb2plY3RfdmVyc2lvbjtcbiAgICAgICAgbW9kZWxfcGFyYW1ldGVycztcbiAgICAgIH0pXG4gICAgc3RhdGVcblxubGV0IHN5bmMgKCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBtYXRjaCAoUmVhY3QuUy52YWx1ZSBzdGF0ZSkucHJvamVjdF9jdXJyZW50IHdpdGhcbiAgfCBOb25lIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICB8IFNvbWUgY3VycmVudCAtPlxuICAgIGN1cnJlbnQucHJvamVjdF9tYW5hZ2VyI3Byb2plY3RfcGFyc2VcbiAgICAgIH5wYXR0ZXJuU2hhcmluZzpQYXR0ZXJuLkNvbXBhdGlibGVfcGF0dGVybnMgW11cbiAgICA+Pj0gZnVuIG91dCAtPlxuICAgIGxldCBzdCA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgICBsZXQgKCkgPSBzZXRfc3RhdGUgeyBzdCB3aXRoIHByb2plY3RfdmVyc2lvbiA9IHN1Y2Mgc3QucHJvamVjdF92ZXJzaW9uIH0gaW5cbiAgICBMd3QucmV0dXJuIG91dFxuXG5sZXQgcmVtb3ZlX2ZpbGVzIG1hbmFnZXIgPVxuICBtYW5hZ2VyI2ZpbGVfY2F0YWxvZ1xuICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gY2F0YWxvZyAtPlxuICAgICAgICAgIEx3dF9saXN0Lml0ZXJfcFxuICAgICAgICAgICAgKGZ1biBtIC0+XG4gICAgICAgICAgICAgIG1hbmFnZXIjZmlsZV9kZWxldGUgbS5LZmlsZXMuaWQgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcbiAgICAgICAgICAgIGNhdGFsb2dcbiAgICAgICAgICA+Pj0gZnVuICgpIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcblxubGV0IHJlbW92ZV9wcm9qZWN0IHByb2plY3RfaWQgPVxuICBsZXQgc3RhdGUgPSBSZWFjdC5TLnZhbHVlIHN0YXRlIGluXG4gIHRyeVxuICAgIGxldCBjdXJyZW50ID1cbiAgICAgIExpc3QuZmluZCAoZnVuIHggLT4geC5wcm9qZWN0X2lkID0gcHJvamVjdF9pZCkgc3RhdGUucHJvamVjdF9jYXRhbG9nXG4gICAgaW5cbiAgICByZW1vdmVfZmlsZXMgY3VycmVudC5wcm9qZWN0X21hbmFnZXIgPj49IGZ1biBvdXQnIC0+XG4gICAgbGV0ICgpID0gY3VycmVudC5wcm9qZWN0X3dhdGNoZXJfY2FuY2VsIDo9IHRydWUgaW5cbiAgICBsZXQgcHJvamVjdF9jYXRhbG9nID1cbiAgICAgIExpc3QuZmlsdGVyXG4gICAgICAgIChmdW4geCAtPiB4LnByb2plY3RfaWQgPD4gY3VycmVudC5wcm9qZWN0X2lkKVxuICAgICAgICBzdGF0ZS5wcm9qZWN0X2NhdGFsb2dcbiAgICBpblxuICAgIGxldCBwcm9qZWN0X2N1cnJlbnQgPVxuICAgICAgaWZcbiAgICAgICAgbWF0Y2ggc3RhdGUucHJvamVjdF9jdXJyZW50IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSB2IC0+IHYucHJvamVjdF9pZCA9IGN1cnJlbnQucHJvamVjdF9pZFxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIHByb2plY3RfY2F0YWxvZyB3aXRoXG4gICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICB8IGggOjogXyAtPiBTb21lIGhcbiAgICAgICkgZWxzZVxuICAgICAgICBzdGF0ZS5wcm9qZWN0X2N1cnJlbnRcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBzZXRfc3RhdGVcbiAgICAgICAge1xuICAgICAgICAgIHByb2plY3RfY3VycmVudDtcbiAgICAgICAgICBwcm9qZWN0X2NhdGFsb2c7XG4gICAgICAgICAgZGVmYXVsdF9wYXJhbWV0ZXJzID0gc3RhdGUuZGVmYXVsdF9wYXJhbWV0ZXJzO1xuICAgICAgICAgIHByb2plY3RfcGFyYW1ldGVycyA9XG4gICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5yZW1vdmUgcHJvamVjdF9pZCBzdGF0ZS5wcm9qZWN0X3BhcmFtZXRlcnM7XG4gICAgICAgICAgcHJvamVjdF92ZXJzaW9uID0gLTE7XG4gICAgICAgIH1cbiAgICBpblxuICAgIGxldCAoKSA9IGN1cnJlbnQucHJvamVjdF9tYW5hZ2VyI3Rlcm1pbmF0ZSBpblxuICAgIHN5bmMgKCkgPj49IGZ1biBvdXQnJyAtPlxuICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2NvbWJpbmUgWyBvdXQnOyBvdXQnJyBdKVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIEx3dC5yZXR1cm5cbiAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2dcbiAgICAgICAgIChcIlByb2plY3QgXCIgXiBwcm9qZWN0X2lkIF4gXCIgZG9lcyBub3QgZXhpc3RzXCIpKVxuXG5sZXQgcmVjIGluaXRfcGxvdF9wZXJpb2QgKGFyZyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBtYXRjaCBhcmcgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgaCA6OiB0IC0+XG4gICAgKHRyeSBzZXRfcGxvdF9wZXJpb2QgKGZsb2F0X29mX3N0cmluZyBoKVxuICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgIGxldCBtc2cgPSBGb3JtYXQuc3ByaW50ZiBcImZhaWxlZCB0byBwYXJzZSBpbml0X3Bsb3RfcGVyaW9kICclcydcIiBoIGluXG4gICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgbXNnKSBpblxuICAgICAgIGluaXRfcGxvdF9wZXJpb2QgdClcblxubGV0IGluaXRfcGF1c2VfY29uZGl0aW9uIChhcmcgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGggOjogXyAtPiBzZXRfcGF1c2VfY29uZGl0aW9uIGhcblxubGV0IHJlYyBpbml0X21vZGVsX3NlZWQgKGFyZyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBtYXRjaCBhcmcgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgaCA6OiB0IC0+XG4gICAgKHRyeSBzZXRfcGxvdF9wZXJpb2QgKGZsb2F0X29mX3N0cmluZyBoKVxuICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgIGxldCBtc2cgPSBGb3JtYXQuc3ByaW50ZiBcImZhaWxlZCB0byBwYXJzZSBtb2RlbF9zZWVkICclcydcIiBoIGluXG4gICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgbXNnKSBpblxuICAgICAgIGluaXRfbW9kZWxfc2VlZCB0KVxuXG5sZXQgaW5pdF9zdG9yZV90cmFjZSAoYXJnIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBoIDo6IF8gLT4gc2V0X3N0b3JlX3RyYWNlIChoIDw+IFwiZmFsc2VcIilcblxubGV0IGluaXRfc2hvd19kZWFkX3J1bGVzIChhcmcgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGggOjogXyAtPiBzZXRfc2hvd19kZWFkX3J1bGVzIChoIDw+IFwiZmFsc2VcIilcblxubGV0IGluaXRfc2hvd19kZWFkX2FnZW50cyAoYXJnIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBoIDo6IF8gLT4gc2V0X3Nob3dfZGVhZF9hZ2VudHMgKGggPD4gXCJmYWxzZVwiKVxuXG5sZXQgaW5pdF9zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyAoYXJnIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBoIDo6IF8gLT4gc2V0X3Nob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zIChoIDw+IFwiZmFsc2VcIilcblxubGV0IGluaXQgZXhpc3RpbmdfcHJvamVjdHMgOiB1bml0IEx3dC50ID1cbiAgbGV0IGFyZ19wbG90X3BlcmlvZCA9XG4gICAgbGV0IGRlZmF1bHQgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2VcbiAgICAgICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgIChmdW4gc3QgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKHN0IyNnZXRJdGVtIHBsb3RQZXJpb2RQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwicGxvdF9wZXJpb2RcIlxuICBpblxuICBsZXQgYXJnX3BhdXNlX2NvbmRpdGlvbiA9XG4gICAgbGV0IGRlZmF1bHQgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2VcbiAgICAgICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgIChmdW4gc3QgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKHN0IyNnZXRJdGVtIHBhdXNlQ29uZGl0aW9uUGFyYW1JZClcbiAgICAgICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgICAgICAoZnVuIHggLT4gWyBKcy50b19zdHJpbmcgeCBdKSlcbiAgICBpblxuICAgIENvbW1vbl9zdGF0ZS51cmxfYXJncyB+ZGVmYXVsdCBcInBhdXNlX2NvbmRpdGlvblwiXG4gIGluXG4gIGxldCBhcmdfbW9kZWxfc2VlZCA9XG4gICAgbGV0IGRlZmF1bHQgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2VcbiAgICAgICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgIChmdW4gc3QgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKHN0IyNnZXRJdGVtIHNlZWRQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwibW9kZWxfc2VlZFwiXG4gIGluXG4gIGxldCBhcmdfc3RvcmVfdHJhY2UgPVxuICAgIGxldCBkZWZhdWx0ID1cbiAgICAgIEpzLk9wdGRlZi5jYXNlXG4gICAgICAgIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZVxuICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAoZnVuIHN0IC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChzdCMjZ2V0SXRlbSBzdG9yZVRyYWNlUGFyYW1JZClcbiAgICAgICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgICAgICAoZnVuIHggLT4gWyBKcy50b19zdHJpbmcgeCBdKSlcbiAgICBpblxuICAgIENvbW1vbl9zdGF0ZS51cmxfYXJncyB+ZGVmYXVsdCBcInN0b3JlX3RyYWNlXCJcbiAgaW5cbiAgbGV0IGFyZ19zaG93X2RlYWRfcnVsZXMgPVxuICAgIGxldCBkZWZhdWx0ID1cbiAgICAgIEpzLk9wdGRlZi5jYXNlXG4gICAgICAgIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZVxuICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAoZnVuIHN0IC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChzdCMjZ2V0SXRlbSBzaG93RGVhZFJ1bGVzUGFyYW1JZClcbiAgICAgICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgICAgICAoZnVuIHggLT4gWyBKcy50b19zdHJpbmcgeCBdKSlcbiAgICBpblxuICAgIENvbW1vbl9zdGF0ZS51cmxfYXJncyB+ZGVmYXVsdCBcInNob3dfZGVhZF9ydWxlc1wiXG4gIGluXG4gIGxldCBhcmdfc2hvd19kZWFkX2FnZW50cyA9XG4gICAgbGV0IGRlZmF1bHQgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2VcbiAgICAgICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgIChmdW4gc3QgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKHN0IyNnZXRJdGVtIHNob3dEZWFkQWdlbnRzUGFyYW1JZClcbiAgICAgICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgICAgICAoZnVuIHggLT4gWyBKcy50b19zdHJpbmcgeCBdKSlcbiAgICBpblxuICAgIENvbW1vbl9zdGF0ZS51cmxfYXJncyB+ZGVmYXVsdCBcInNob3dfZGVhZF9hZ2VudHNcIlxuICBpblxuICBsZXQgYXJnX3Nob3dfaXJyZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gc2hvd0lycmV2ZXJzaWJsZVRyYW5zaXRpb25zUGFyYW1JZClcbiAgICAgICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgICAgICAoZnVuIHggLT4gWyBKcy50b19zdHJpbmcgeCBdKSlcbiAgICBpblxuICAgIENvbW1vbl9zdGF0ZS51cmxfYXJncyB+ZGVmYXVsdCBcInNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXCJcbiAgaW5cbiAgbGV0ICgpID0gaW5pdF9wbG90X3BlcmlvZCBhcmdfcGxvdF9wZXJpb2QgaW5cbiAgbGV0ICgpID0gaW5pdF9wYXVzZV9jb25kaXRpb24gYXJnX3BhdXNlX2NvbmRpdGlvbiBpblxuICBsZXQgKCkgPSBpbml0X21vZGVsX3NlZWQgYXJnX21vZGVsX3NlZWQgaW5cbiAgbGV0ICgpID0gaW5pdF9zdG9yZV90cmFjZSBhcmdfc3RvcmVfdHJhY2UgaW5cbiAgbGV0ICgpID0gaW5pdF9zaG93X2RlYWRfcnVsZXMgYXJnX3Nob3dfZGVhZF9ydWxlcyBpblxuICBsZXQgKCkgPSBpbml0X3Nob3dfZGVhZF9hZ2VudHMgYXJnX3Nob3dfZGVhZF9hZ2VudHMgaW5cbiAgbGV0ICgpID1cbiAgICBpbml0X3Nob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICBhcmdfc2hvd19pcnJldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgaW5cblxuICBsZXQgcHJvamVjdHMgPSBDb21tb25fc3RhdGUudXJsX2FyZ3MgfmRlZmF1bHQ6WyBcImRlZmF1bHRcIiBdIFwicHJvamVjdFwiIGluXG4gIGxldCByZWMgYWRkX3Byb2plY3RzIHByb2plY3RzIDogdW5pdCBMd3QudCA9XG4gICAgbWF0Y2ggcHJvamVjdHMgd2l0aFxuICAgIHwgW10gLT4gTHd0LnJldHVybl91bml0XG4gICAgfCBwcm9qZWN0IDo6IHByb2plY3RzIC0+XG4gICAgICBhZGRfcHJvamVjdFxuICAgICAgICAoTGlzdC5mb3JfYWxsIChmdW4geCAtPiB4IDw+IHByb2plY3QpIGV4aXN0aW5nX3Byb2plY3RzKVxuICAgICAgICBwcm9qZWN0XG4gICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfm9rOihmdW4gKCkgLT4gYWRkX3Byb2plY3RzIHByb2plY3RzKVxuICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcImNyZWF0aW5nIHByb2plY3QgJXMgZXJyb3IgQFslYUBdXCIgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgUmVzdWx0X3V0aWwucHJpbnRfbWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgIGVycm9yc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENvbW1vbi5kZWJ1Z1xuICAgICAgICAgICAgICAgICAgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJTdGF0ZV9wcm9qZWN0LmluaXQgMiA6ICVzXCIgbXNnKSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWRkX3Byb2plY3RzIHByb2plY3RzKVxuICBpblxuICBhZGRfcHJvamVjdHMgZXhpc3RpbmdfcHJvamVjdHMgPj49IGZ1biAoKSAtPiBhZGRfcHJvamVjdHMgcHJvamVjdHNcblxubGV0IGV2YWxfd2l0aF9wcm9qZWN0IDpcbiAgICAgICdhLlxuICAgICAgbGFiZWw6c3RyaW5nIC0+XG4gICAgICAoQXBpLmNvbmNyZXRlX21hbmFnZXIgLT4gJ2EgQXBpLnJlc3VsdCBMd3QudCkgLT5cbiAgICAgICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuIGZ1biB+bGFiZWwgaGFuZGxlciAtPlxuICBtYXRjaCAoUmVhY3QuUy52YWx1ZSBzdGF0ZSkucHJvamVjdF9jdXJyZW50IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICBGb3JtYXQuc3ByaW50ZiBcIkZhaWxlZCAlcyBkdWUgdG8gdW5hdmFpbGFibGUgcHJvamVjdC5cIiBsYWJlbFxuICAgIGluXG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgfCBTb21lIGN1cnJlbnQgLT4gaGFuZGxlciBjdXJyZW50LnByb2plY3RfbWFuYWdlclxuXG5sZXQgb25fcHJvamVjdF9jaGFuZ2VfYXN5bmMgP2VxIH5vbiA/KG90aGVyc19lcSA9ICggPSApKSBpbml0X290aGVycyBvdGhlcnNcbiAgICBkZWZhdWx0IGhhbmRsZXIgPVxuICBsZXQgZXFfcGFpciA9IE1vZHMucGFpcl9lcXVhbCBzdGF0ZV9lcXVhbCBvdGhlcnNfZXEgaW5cbiAgUmVhY3QuUy5ob2xkID9lcSBkZWZhdWx0XG4gICAgKEx3dF9yZWFjdC5FLm1hcF9wXG4gICAgICAgKGZ1biAoc3QsIG90aCkgLT5cbiAgICAgICAgIG1hdGNoIHN0LnByb2plY3RfY3VycmVudCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gTHd0LnJldHVybiBkZWZhdWx0XG4gICAgICAgICB8IFNvbWUgY3VycmVudCAtPiBoYW5kbGVyIGN1cnJlbnQucHJvamVjdF9tYW5hZ2VyIG90aClcbiAgICAgICAoUmVhY3QuUy5jaGFuZ2VzXG4gICAgICAgICAgKFJlYWN0LlMub24gfmVxOmVxX3BhaXIgb24gKGluaXRfc3RhdGUsIGluaXRfb3RoZXJzKVxuICAgICAgICAgICAgIChSZWFjdC5TLlBhaXIucGFpciB+ZXE6ZXFfcGFpciBzdGF0ZSBvdGhlcnMpKSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlIHNsb3QgPSB7IGxvY2FsOiBzdHJpbmcgb3B0aW9uOyBuYW1lOiBzdHJpbmcgfVxudHlwZSBhY3RpdmUgPSB7IHJhbms6IGludDsgY3Vyc29yX3BvczogTG9jLnBvc2l0aW9uOyBvdXRfb2Zfc3luYzogYm9vbCB9XG50eXBlIG1vZGVsID0geyBjdXJyZW50OiBhY3RpdmUgb3B0aW9uOyBkaXJlY3Rvcnk6IHNsb3QgTW9kcy5JbnRNYXAudCB9XG5cbmxldCBkdW1teV9jdXJzb3JfcG9zID0geyBMb2MubGluZSA9IC0xOyBMb2MuY2hyID0gMCB9XG5sZXQgYmxhbmtfc3RhdGUgPSB7IGN1cnJlbnQgPSBOb25lOyBkaXJlY3RvcnkgPSBNb2RzLkludE1hcC5lbXB0eSB9XG5sZXQgbW9kZWwsIHNldF9kaXJlY3Rvcnlfc3RhdGUgPSBSZWFjdC5TLmNyZWF0ZSBibGFua19zdGF0ZVxuXG50eXBlIHJlZnJlc2ggPSB7IGZpbGVuYW1lOiBzdHJpbmc7IGNvbnRlbnQ6IHN0cmluZzsgbGluZTogaW50IG9wdGlvbiB9XG5cbmxldCByZWZyZXNoX2ZpbGVfaG9vayA9IHJlZiBbXVxubGV0IHJlZ2lzdGVyX3JlZnJlc2hfZmlsZV9ob29rIHggPSByZWZyZXNoX2ZpbGVfaG9vayA6PSB4IDo6ICFyZWZyZXNoX2ZpbGVfaG9va1xuXG5sZXQgY3VycmVudF9maWxlbmFtZSA9XG4gIFJlYWN0LlMubWFwXG4gICAgKGZ1biBtIC0+XG4gICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgKGZ1biB7IG5hbWU7IF8gfSAtPiBuYW1lKVxuICAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHgucmFuayBtLmRpcmVjdG9yeSkpXG4gICAgICAgIG0uY3VycmVudClcbiAgICBtb2RlbFxuXG5sZXQgd2l0aF9jdXJyZW50X3BvcyA/ZXEgPyhvbiA9IFJlYWN0LlMuY29uc3QgdHJ1ZSkgZiBkZWZhdWx0ID1cbiAgUmVhY3QuUy5mbWFwID9lcVxuICAgIChmdW4gbSAtPlxuICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgICAgICAoZnVuIHsgbmFtZTsgXyB9IC0+IGYgbmFtZSB4LmN1cnNvcl9wb3MpXG4gICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9vcHRpb24geC5yYW5rIG0uZGlyZWN0b3J5KSlcbiAgICAgICAgbS5jdXJyZW50KVxuICAgIGRlZmF1bHRcbiAgICAoUmVhY3QuUy5vbiBvbiBibGFua19zdGF0ZSBtb2RlbClcblxubGV0IHdpdGhfY3VycmVudF9maWxlIGYgPVxuICBsZXQgc3RhdGUgPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIG1hdGNoIHN0YXRlLmN1cnJlbnQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID0gXCJBdHRlbXB0IHRvIGZldGNoIGZpbGUgd2l0aCBub25lIHNlbGVjdGVkLlwiIGluXG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgfCBTb21lIGFjdGl2ZSAtPlxuICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBhY3RpdmUucmFuayBzdGF0ZS5kaXJlY3Rvcnkgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiSW50ZXJuYWwgaW5jb25zaXN0ZW50Y3k6IE5vIGZpbGUgYXQgc2VsZWN0ZWQgcmFuay5cIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpXG4gICAgfCBTb21lIHggLT4gZiBzdGF0ZSBhY3RpdmUgeClcblxubGV0IGdldF9maWxlICgpIDogKHN0cmluZyAqIHN0cmluZykgQXBpLnJlc3VsdCBMd3QudCA9XG4gIHdpdGhfY3VycmVudF9maWxlIChmdW4gX3N0YXRlIGFjdGl2ZSAtPiBmdW5jdGlvblxuICAgIHwgeyBsb2NhbCA9IE5vbmU7IG5hbWUgfSAtPlxuICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJnZXRfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgIG1hbmFnZXIjZmlsZV9nZXQgbmFtZVxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAodGV4dCwgcmFuaycpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBhY3RpdmUucmFuayA9IHJhbmsnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKHRleHQsIG5hbWUpKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvcl9tc2cgPSBcIkluY29uc2lzdGVuY3kgaW4gcmFuayB3aGlsZSBnZXRfZmlsZS5cIiBpblxuICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuICAgICAgICAgICAgICAgICAgKSkpXG4gICAgfCB7IGxvY2FsID0gU29tZSB0ZXh0OyBuYW1lIH0gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKHRleHQsIG5hbWUpKSlcblxubGV0IHNlbmRfcmVmcmVzaCAobGluZSA6IGludCBvcHRpb24pIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgKCogb25seSBzZW5kIHJlZnJlc2ggaWYgdGhlcmUgaXMgYSBjdXJyZW50IGZpbGUgKilcbiAgbWF0Y2ggKFJlYWN0LlMudmFsdWUgbW9kZWwpLmN1cnJlbnQgd2l0aFxuICB8IE5vbmUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gIHwgU29tZSB7IG91dF9vZl9zeW5jOyBfIH0gLT5cbiAgICBpZiBvdXRfb2Zfc3luYyB0aGVuXG4gICAgICBMd3QucmV0dXJuXG4gICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2dcbiAgICAgICAgICAgXCJGaWxlIHdhcyBub3QgaW4gc3luYy4gU3dpdGNoaW5nIG1heSBsZWFkIHRvIGRhdGEgbG9zdC5cIilcbiAgICBlbHNlXG4gICAgICBnZXRfZmlsZSAoKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIChjb250ZW50LCBmaWxlbmFtZSkgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIGNvbnRlbnQgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAgIChmdW4gZiAtPiBmIHsgZmlsZW5hbWU7IGNvbnRlbnQ7IGxpbmUgfSlcbiAgICAgICAgICAgICAgICAgICFyZWZyZXNoX2ZpbGVfaG9va1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG5cbmxldCB1cGRhdGVfZGlyZWN0b3J5IH5yZXNldCBjdXJyZW50IGNhdGFsb2cgPVxuICBsZXQgc3RhdGUgPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIGxldCBkaXJlY3RvcnkgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyB7IEtmaWxlcy5wb3NpdGlvbjsgaWQgfSAtPlxuICAgICAgICBNb2RzLkludE1hcC5hZGQgcG9zaXRpb24geyBuYW1lID0gaWQ7IGxvY2FsID0gTm9uZSB9IGFjYylcbiAgICAgIChpZiByZXNldCB0aGVuXG4gICAgICAgICBNb2RzLkludE1hcC5lbXB0eVxuICAgICAgIGVsc2VcbiAgICAgICAgIHN0YXRlLmRpcmVjdG9yeSlcbiAgICAgIGNhdGFsb2dcbiAgaW5cbiAgc2V0X2RpcmVjdG9yeV9zdGF0ZSB7IGN1cnJlbnQ7IGRpcmVjdG9yeSB9XG5cbmxldCBjcmVhdGVfZmlsZSB+KGZpbGVuYW1lIDogc3RyaW5nKSB+KGNvbnRlbnQgOiBzdHJpbmcpIDogdW5pdCBBcGkucmVzdWx0IEx3dC50XG4gICAgPVxuICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcImNyZWF0ZV9maWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBtYW5hZ2VyI2ZpbGVfY2F0YWxvZ1xuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGNhdGFsb2cgLT5cbiAgICAgICAgICAgICAgbGV0IG1hdGNoaW5nX2ZpbGUgPVxuICAgICAgICAgICAgICAgIExpc3QuZmlsdGVyXG4gICAgICAgICAgICAgICAgICAoZnVuIGZpbGVfbWV0YWRhdGEgLT4gZmlsZW5hbWUgPSBmaWxlX21ldGFkYXRhLktmaWxlcy5pZClcbiAgICAgICAgICAgICAgICAgIGNhdGFsb2dcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIG1hdGNoaW5nX2ZpbGUgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgbGV0IG1heF9wb3MgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBhY2MgeyBLZmlsZXMucG9zaXRpb247IF8gfSAtPiBtYXggYWNjIHBvc2l0aW9uKVxuICAgICAgICAgICAgICAgICAgICAwIGNhdGFsb2dcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hbmFnZXIjZmlsZV9jcmVhdGUgKHN1Y2MgbWF4X3BvcykgZmlsZW5hbWUgY29udGVudFxuICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNmaWxlX2NhdGFsb2dcbiAgICAgICAgICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBjYXRhbG9nJyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm9rIChjYXRhbG9nJywgc3VjYyBtYXhfcG9zKSkpKVxuICAgICAgICAgICAgICB8IG1ldGFkYXRhIDo6IF8gLT5cbiAgICAgICAgICAgICAgICBtYW5hZ2VyI2ZpbGVfdXBkYXRlIGZpbGVuYW1lIGNvbnRlbnRcbiAgICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm9rIChjYXRhbG9nLCBtZXRhZGF0YS5LZmlsZXMucG9zaXRpb24pKSkpXG4gICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoY2F0YWxvZywgY3VycmVudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2RpcmVjdG9yeSB+cmVzZXQ6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmsgPSBjdXJyZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcl9wb3MgPSBkdW1teV9jdXJzb3JfcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9vZl9zeW5jID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGFsb2dcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIHNlbmRfcmVmcmVzaCBOb25lKSkpXG5cbmxldCByZWMgY2hvb3NlX2ZpbGUgY2hvaWNlID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgRm9ybWF0LnNwcmludGYgXCJGYWlsZWQgdG8gc3dpdGNoIGZpbGUgJXMuXCIgY2hvaWNlXG4gICAgaW5cbiAgICBBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnXG4gIHwgeyBLZmlsZXMuaWQ7IHBvc2l0aW9uIH0gOjogdCAtPlxuICAgIGlmIGNob2ljZSA9IGlkIHRoZW5cbiAgICAgIFJlc3VsdF91dGlsLm9rIHBvc2l0aW9uXG4gICAgZWxzZVxuICAgICAgY2hvb3NlX2ZpbGUgY2hvaWNlIHRcblxubGV0IHNlbGVjdF9maWxlIChmaWxlbmFtZSA6IHN0cmluZykgKGxpbmUgOiBpbnQgb3B0aW9uKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudFxuICAgID1cbiAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzZWxlY3RfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNmaWxlX2NhdGFsb2dcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBjYXRhbG9nIC0+XG4gICAgICAgICAgICAgIEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0XG4gICAgICAgICAgICAgICAgfm9rOihmdW4gcmFuayAtPlxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2RpcmVjdG9yeSB+cmVzZXQ6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoU29tZVxuICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbms7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JfcG9zID0gZHVtbXlfY3Vyc29yX3BvcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9vZl9zeW5jID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICBjYXRhbG9nXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgc2VuZF9yZWZyZXNoIGxpbmUpXG4gICAgICAgICAgICAgICAgKGNob29zZV9maWxlIGZpbGVuYW1lIGNhdGFsb2cpKSlcblxubGV0IHNldF9jb250ZW50IChjb250ZW50IDogc3RyaW5nKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIHdpdGhfY3VycmVudF9maWxlIChmdW4gc3RhdGUgYWN0aXZlIC0+IGZ1bmN0aW9uXG4gICAgfCB7IGxvY2FsID0gU29tZSBfOyBuYW1lIH0gLT5cbiAgICAgIGxldCBkaXJlY3RvcnkgPVxuICAgICAgICBNb2RzLkludE1hcC5hZGQgYWN0aXZlLnJhbmtcbiAgICAgICAgICB7IGxvY2FsID0gU29tZSBjb250ZW50OyBuYW1lIH1cbiAgICAgICAgICBzdGF0ZS5kaXJlY3RvcnlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBzZXRfZGlyZWN0b3J5X3N0YXRlIHsgY3VycmVudCA9IHN0YXRlLmN1cnJlbnQ7IGRpcmVjdG9yeSB9IGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICB8IHsgbG9jYWwgPSBOb25lOyBuYW1lIH0gLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHNldF9kaXJlY3Rvcnlfc3RhdGVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjdXJyZW50ID1cbiAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHJhbmsgPSBhY3RpdmUucmFuaztcbiAgICAgICAgICAgICAgICAgIGN1cnNvcl9wb3MgPSBhY3RpdmUuY3Vyc29yX3BvcztcbiAgICAgICAgICAgICAgICAgIG91dF9vZl9zeW5jID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGRpcmVjdG9yeSA9IHN0YXRlLmRpcmVjdG9yeTtcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzZXRfY29udGVudFwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgIG1hbmFnZXIjZmlsZV91cGRhdGUgbmFtZSBjb250ZW50KSlcblxubGV0IHNldF9jb21waWxlIGZpbGVfaWQgKGNvbXBpbGUgOiBib29sKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIGxldCBzdGF0ZSA9IFJlYWN0LlMudmFsdWUgbW9kZWwgaW5cbiAgbWF0Y2hcbiAgICBNb2RzLkludE1hcC5maWx0ZXJfb25lIChmdW4gXyB7IG5hbWU7IF8gfSAtPiBuYW1lID0gZmlsZV9pZCkgc3RhdGUuZGlyZWN0b3J5XG4gIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgbGV0IGVycm9yX21zZyA9IFwiSW50ZXJuYWwgaW5jb25zaXN0ZW5jeTogTm8gZmlsZSBcIiBeIGZpbGVfaWQgaW5cbiAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuICB8IFNvbWUgKHJhbmssIHsgbG9jYWwgPSBTb21lIGNvbnRlbnQ7IG5hbWUgfSkgLT5cbiAgICBpZiBjb21waWxlIHRoZW4gKFxuICAgICAgbGV0IGRpcmVjdG9yeSA9XG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCByYW5rIHsgbG9jYWwgPSBOb25lOyBuYW1lIH0gc3RhdGUuZGlyZWN0b3J5XG4gICAgICBpblxuICAgICAgbGV0ICgpID0gc2V0X2RpcmVjdG9yeV9zdGF0ZSB7IGN1cnJlbnQgPSBzdGF0ZS5jdXJyZW50OyBkaXJlY3RvcnkgfSBpblxuICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzZXRfY29tcGlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgIG1hbmFnZXIjZmlsZV9jcmVhdGUgcmFuayBuYW1lIGNvbnRlbnQpXG4gICAgKSBlbHNlXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgfCBTb21lIChyYW5rLCB7IGxvY2FsID0gTm9uZTsgbmFtZSB9KSAtPlxuICAgIGlmIGNvbXBpbGUgdGhlblxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgZWxzZVxuICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzZXRfY29tcGlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgIG1hbmFnZXIjZmlsZV9nZXQgbmFtZVxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoY29udGVudCwgcmFuaycpIC0+XG4gICAgICAgICAgICAgICAgICBpZiByYW5rID0gcmFuaycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBkaXJlY3RvcnkgPVxuICAgICAgICAgICAgICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCByYW5rXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGxvY2FsID0gU29tZSBjb250ZW50OyBuYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmRpcmVjdG9yeVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIHNldF9kaXJlY3Rvcnlfc3RhdGUgeyBjdXJyZW50ID0gc3RhdGUuY3VycmVudDsgZGlyZWN0b3J5IH1cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzZXRfY29tcGlsZSdcIlxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gbWFuYWdlciAtPiBtYW5hZ2VyI2ZpbGVfZGVsZXRlIG5hbWUpXG4gICAgICAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3JfbXNnID1cbiAgICAgICAgICAgICAgICAgICAgICBcIkluY29uc2lzdGVuY3kgaW4gcmFuayB3aGlsZSBzZXRfY29tcGlsZS5cIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuICAgICAgICAgICAgICAgICAgKSkpXG5cbmxldCByZW1vdmVfZmlsZSAoKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIHdpdGhfY3VycmVudF9maWxlIChmdW4gc3RhdGUgYWN0aXZlIHsgbG9jYWw7IG5hbWUgfSAtPlxuICAgICAgbGV0IGRpcmVjdG9yeSA9IE1vZHMuSW50TWFwLnJlbW92ZSBhY3RpdmUucmFuayBzdGF0ZS5kaXJlY3RvcnkgaW5cbiAgICAgIGxldCBjdXJyZW50ID1cbiAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgKGZ1biAocmFuaywgXykgLT5cbiAgICAgICAgICAgIHsgcmFuazsgY3Vyc29yX3BvcyA9IGR1bW15X2N1cnNvcl9wb3M7IG91dF9vZl9zeW5jID0gZmFsc2UgfSlcbiAgICAgICAgICAoTW9kcy5JbnRNYXAucm9vdCBkaXJlY3RvcnkpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gc2V0X2RpcmVjdG9yeV9zdGF0ZSB7IGN1cnJlbnQ7IGRpcmVjdG9yeSB9IGluXG4gICAgICBsZXQgeCA9IHNlbmRfcmVmcmVzaCBOb25lIGluXG4gICAgICBtYXRjaCBsb2NhbCB3aXRoXG4gICAgICB8IFNvbWUgXyAtPiB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJyZW1vdmVfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgICAgbWFuYWdlciNmaWxlX2RlbGV0ZSBuYW1lID4+PSBmdW4geSAtPlxuICAgICAgICAgICAgeCA+Pj0gZnVuIHggLT4gTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHg7IHkgXSkpKVxuXG5sZXQgZG9fYV9tb3ZlIHN0YXRlIGZpbGVfaWQgcmFuayA9XG4gIG1hdGNoXG4gICAgTW9kcy5JbnRNYXAuZmlsdGVyX29uZSAoZnVuIF8geyBuYW1lOyBfIH0gLT4gbmFtZSA9IGZpbGVfaWQpIHN0YXRlLmRpcmVjdG9yeVxuICB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvcl9tc2cgPSBcIkludGVybmFsIGluY29uc2lzdGVuY3k6IE5vIGZpbGUgXCIgXiBmaWxlX2lkIGluXG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgfCBTb21lIChyYW5rJywgKHsgbG9jYWw7IF8gfSBhcyB4KSkgLT5cbiAgICBsZXQgZGlyZWN0b3J5ID1cbiAgICAgIE1vZHMuSW50TWFwLmFkZCByYW5rIHggKE1vZHMuSW50TWFwLnJlbW92ZSByYW5rJyBzdGF0ZS5kaXJlY3RvcnkpXG4gICAgaW5cbiAgICBsZXQgY3VycmVudCA9XG4gICAgICBtYXRjaCBzdGF0ZS5jdXJyZW50IHdpdGhcbiAgICAgIHwgU29tZSB7IHJhbmsgPSBwb3M7IGN1cnNvcl9wb3M7IG91dF9vZl9zeW5jIH0gd2hlbiBwb3MgPSByYW5rJyAtPlxuICAgICAgICBTb21lIHsgcmFuazsgY3Vyc29yX3Bvczsgb3V0X29mX3N5bmMgfVxuICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGlmIGxvY2FsID0gTm9uZSB0aGVuXG4gICAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInJlbW92ZV9maWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgbWFuYWdlciNmaWxlX21vdmUgcmFuayBmaWxlX2lkXG4gICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayB7IGN1cnJlbnQ7IGRpcmVjdG9yeSB9KSkpXG4gICAgZWxzZVxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgeyBjdXJyZW50OyBkaXJlY3RvcnkgfSlcblxubGV0IHJlYyBzZXRfcG9zaXRpb24gc3RhdGUgZmlsZV9pZCByYW5rID1cbiAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gcmFuayBzdGF0ZS5kaXJlY3Rvcnkgd2l0aFxuICB8IFNvbWUgeyBuYW1lOyBfIH0gLT5cbiAgICBpZiBmaWxlX2lkID0gbmFtZSB0aGVuXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzdGF0ZSlcbiAgICBlbHNlXG4gICAgICBzZXRfcG9zaXRpb24gc3RhdGUgbmFtZSAoc3VjYyByYW5rKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIHN0YXRlJyAtPlxuICAgICAgICAgICAgICBkb19hX21vdmUgc3RhdGUnIGZpbGVfaWQgcmFuaylcbiAgfCBOb25lIC0+IGRvX2FfbW92ZSBzdGF0ZSBmaWxlX2lkIHJhbmtcblxubGV0IG9yZGVyX2ZpbGVzIChmaWxlbmFtZXMgOiBzdHJpbmcgbGlzdCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBsZXQgcmVjIF9vcmRlcl9maWxlIGZpbGVuYW1lcyBzdGF0ZSBpbmRleCA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgbWF0Y2ggZmlsZW5hbWVzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBsZXQgKCkgPSBzZXRfZGlyZWN0b3J5X3N0YXRlIHN0YXRlIGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICB8IGZpbGVfaWQgOjogdGFpbCAtPlxuICAgICAgc2V0X3Bvc2l0aW9uIHN0YXRlIGZpbGVfaWQgaW5kZXhcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBzdGF0ZScgLT5cbiAgICAgICAgICAgICAgX29yZGVyX2ZpbGUgdGFpbCBzdGF0ZScgKGluZGV4ICsgMSkpXG4gIGluXG4gIF9vcmRlcl9maWxlIGZpbGVuYW1lcyAoUmVhY3QuUy52YWx1ZSBtb2RlbCkgMFxuXG5sZXQgY3Vyc29yX2FjdGl2aXR5IH5saW5lIH5jaCA9XG4gIGxldCB2ID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICBtYXRjaCB2LmN1cnJlbnQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHsgcmFuazsgb3V0X29mX3N5bmM7IF8gfSAtPlxuICAgIHNldF9kaXJlY3Rvcnlfc3RhdGVcbiAgICAgIHtcbiAgICAgICAgY3VycmVudCA9XG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICByYW5rO1xuICAgICAgICAgICAgICBjdXJzb3JfcG9zID0geyBMb2MubGluZSA9IHN1Y2MgbGluZTsgY2hyID0gY2ggfTtcbiAgICAgICAgICAgICAgb3V0X29mX3N5bmM7XG4gICAgICAgICAgICB9O1xuICAgICAgICBkaXJlY3RvcnkgPSB2LmRpcmVjdG9yeTtcbiAgICAgIH1cblxubGV0IG91dF9vZl9zeW5jIG91dF9vZl9zeW5jID1cbiAgbGV0IHYgPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIG1hdGNoIHYuY3VycmVudCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeyByYW5rOyBjdXJzb3JfcG9zOyBfIH0gLT5cbiAgICBzZXRfZGlyZWN0b3J5X3N0YXRlXG4gICAgICB7XG4gICAgICAgIGN1cnJlbnQgPSBTb21lIHsgcmFuazsgY3Vyc29yX3Bvczsgb3V0X29mX3N5bmMgfTtcbiAgICAgICAgZGlyZWN0b3J5ID0gdi5kaXJlY3Rvcnk7XG4gICAgICB9XG5cbmxldCBzeW5jID8ocmVzZXQgPSBmYWxzZSkgKCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInNlbGVjdF9maWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBtYW5hZ2VyI2ZpbGVfY2F0YWxvZ1xuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGNhdGFsb2cgLT5cbiAgICAgICAgICAgICAgbGV0IGNhbmQgPSAoUmVhY3QuUy52YWx1ZSBtb2RlbCkuY3VycmVudCBpblxuICAgICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgcmVzZXRcbiAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICBtYXRjaCBjYW5kIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgICAgICAgICAgIChmdW4geyBLZmlsZXMucG9zaXRpb247IF8gfSAtPiB4LnJhbmsgPSBwb3NpdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICBjYXRhbG9nXG4gICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBjYXRhbG9nIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgfCB7IEtmaWxlcy5wb3NpdGlvbjsgXyB9IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmsgPSBwb3NpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcl9wb3MgPSBkdW1teV9jdXJzb3JfcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0X29mX3N5bmMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBjYW5kXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9kaXJlY3RvcnkgfnJlc2V0IHBvcyBjYXRhbG9nIGluXG4gICAgICAgICAgICAgIHNlbmRfcmVmcmVzaCBOb25lKSlcblxubGV0IGxvYWRfZGVmYXVsdCAoKSA6IHVuaXQgTHd0LnQgPVxuICBjcmVhdGVfZmlsZSB+ZmlsZW5hbWU6XCJtb2RlbC5rYVwiIH5jb250ZW50OlwiXCJcbiAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgfm9rOihmdW4gKCkgLT4gTHd0LnJldHVybl91bml0KVxuICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICBcIlN0YXRlX2ZpbGUubG9hZF9kZWZhdWx0IDogY3JlYXRpbmcgZGVmYXVsdCBmaWxlIGVycm9yQCBAWzx2PiVhQF1cIlxuICAgICAgICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSBSZXN1bHRfdXRpbC5wcmludF9tZXNzYWdlKVxuICAgICAgICAgICAgICBlcnJvcnNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIG1zZykgaW5cbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBsb2FkX21vZGVscyAoKSA6IHVuaXQgTHd0LnQgPVxuICBsZXQgbW9kZWxzID0gQ29tbW9uX3N0YXRlLnVybF9hcmdzIFwibW9kZWxcIiBpblxuICBsZXQgcmVjIGFkZF9tb2RlbHMgbW9kZWxzIGxvYWRfZmlsZSA6IHVuaXQgTHd0LnQgPVxuICAgIG1hdGNoIG1vZGVscyB3aXRoXG4gICAgfCBbXSAtPiBMd3QucmV0dXJuX3VuaXRcbiAgICB8IG1vZGVsIDo6IG1vZGVscyAtPlxuICAgICAgKCogZmV0Y2ggbW9kZWwgKilcbiAgICAgIEpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5nZXQgbW9kZWxcbiAgICAgID4+PSAoZnVuIGNvbnRlbnQgLT5cbiAgICAgICAgICAgIGlmIGNvbnRlbnQuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LmNvZGUgPD4gMjAwIHRoZW5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2dcbiAgICAgICAgICAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCJiYWQgcmVzcG9uc2UgY29kZSAlZCBmZXRjaGluZyB1cmwgJXNcIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LmNvZGUgbW9kZWwpKVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgVXJsLnVybF9vZl9zdHJpbmcgY29udGVudC5Kc19vZl9vY2FtbF9sd3QuWG1sSHR0cFJlcXVlc3QudXJsXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZ1xuICAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiZmFpbGVkIHRvIHJldHJpZXZlIHVybCAlc1wiIG1vZGVsKSlcbiAgICAgICAgICAgICAgfCBTb21lIHUgLT5cbiAgICAgICAgICAgICAgICBsZXQgZmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgICAgTGlzdF91dGlsLmxhc3RcbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHUgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFVybC5IdHRwIGggfCBVcmwuSHR0cHMgaCAtPiBoLlVybC5odV9wYXRoXG4gICAgICAgICAgICAgICAgICAgIHwgVXJsLkZpbGUgZiAtPiBmLlVybC5mdV9wYXRoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGZpbGVjb250ZW50IDogc3RyaW5nID1cbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LmNvbnRlbnRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChmaWxlbmFtZSwgZmlsZWNvbnRlbnQpKVxuICAgICAgICAgICAgKSlcbiAgICAgID4+PSAoKiBhZGQgY29udGVudCAqKVxuICAgICAgQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKGZpbGVuYW1lLCBjb250ZW50KSAtPlxuICAgICAgICAgIGNyZWF0ZV9maWxlIH5maWxlbmFtZSB+Y29udGVudFxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgZmlsZW5hbWUpKSlcbiAgICAgID4+PSAoKiBzZWxlY3QgbW9kZWwgaWYgbmVlZGVkICopXG4gICAgICBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgIH5vazooZnVuIGZpbGVuYW1lIC0+XG4gICAgICAgICAgaWYgbG9hZF9maWxlIHRoZW5cbiAgICAgICAgICAgIHNlbGVjdF9maWxlIGZpbGVuYW1lIE5vbmVcbiAgICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICB+b2s6KGZ1biBfIC0+IGFkZF9tb2RlbHMgbW9kZWxzIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBhZGRfbW9kZWxzIG1vZGVscyBsb2FkX2ZpbGUpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYWRkX21vZGVscyBtb2RlbHMgbG9hZF9maWxlKVxuICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcImNyZWF0aW5nIGxvYWRpbmcgdXJsICVzIGVycm9yQCBAWzx2PiVhQF1cIiBtb2RlbFxuICAgICAgICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSBSZXN1bHRfdXRpbC5wcmludF9tZXNzYWdlKVxuICAgICAgICAgICAgICBlcnJvcnNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBDb21tb24uZGVidWdcbiAgICAgICAgICAgICAgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJTdGF0ZV9maWxlLmxvYWRfbW9kZWwgJXNcIiBtc2cpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgYWRkX21vZGVscyBtb2RlbHMgbG9hZF9maWxlKVxuICBpblxuICBtYXRjaCBtb2RlbHMgd2l0aFxuICB8IFtdIC0+IGxvYWRfZGVmYXVsdCAoKVxuICB8IF8gOjogXyAtPiBhZGRfbW9kZWxzIG1vZGVscyB0cnVlXG5cbmxldCBpbml0ICgpIDogdW5pdCBMd3QudCA9IEx3dC5yZXR1cm5fdW5pdCA+Pj0gbG9hZF9tb2RlbHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgc2ltdWxhdGlvbl9zdGF0ZSA9XG4gIHwgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEICgqIHNpbXVsYXRpb24gaXMgdW5hdmFpbGFibGUgKilcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HICgqIHNpbXVsYXRpb24gaXMgYmxvY2tlZCBvbiBhbiBvcGVyYXRpb24gKilcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX1JFQURZIG9mIEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb1xuKCogdGhlIHNpbXVsYXRpb24gaXMgcmVhZHkgKilcblxudHlwZSB0ID0geyBzaW11bGF0aW9uX3N0YXRlOiBzaW11bGF0aW9uX3N0YXRlIH1cblxubGV0IHRfc2ltdWxhdGlvbl9zdGF0ZSBzaW11bGF0aW9uID0gc2ltdWxhdGlvbi5zaW11bGF0aW9uX3N0YXRlXG5cbmxldCB0X3NpbXVsYXRpb25faW5mbyBzaW11bGF0aW9uIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvIG9wdGlvbiA9XG4gIG1hdGNoIHNpbXVsYXRpb24uc2ltdWxhdGlvbl9zdGF0ZSB3aXRoXG4gIHwgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIC0+IE5vbmVcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIC0+IE5vbmVcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX1JFQURZIHNpbXVsYXRpb25faW5mbyAtPiBTb21lIHNpbXVsYXRpb25faW5mb1xuXG50eXBlIHN0YXRlID0gdFxudHlwZSBtb2RlbCA9IHN0YXRlXG50eXBlIG1vZGVsX3N0YXRlID0gU1RPUFBFRCB8IElOSVRBTElaSU5HIHwgUlVOTklORyB8IFBBVVNFRFxuXG5sZXQgbW9kZWxfc3RhdGVfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBTVE9QUEVEIC0+IFwiU3RvcHBlZFwiXG4gIHwgSU5JVEFMSVpJTkcgLT4gXCJJbml0YWxpemluZ1wiXG4gIHwgUlVOTklORyAtPiBcIlJ1bm5pbmdcIlxuICB8IFBBVVNFRCAtPiBcIlBhdXNlZFwiXG5cbmxldCBkdW1teV9tb2RlbCA9IHsgc2ltdWxhdGlvbl9zdGF0ZSA9IFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCB9XG5cbmxldCBtb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gb3B0aW9uID1cbiAgdF9zaW11bGF0aW9uX2luZm8gbW9kZWxcblxubGV0IG1vZGVsX3NpbXVsYXRpb25fc3RhdGUgbW9kZWwgOiBtb2RlbF9zdGF0ZSA9XG4gIG1hdGNoIHRfc2ltdWxhdGlvbl9zdGF0ZSBtb2RlbCB3aXRoXG4gIHwgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIC0+IFNUT1BQRURcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIC0+IElOSVRBTElaSU5HXG4gIHwgU0lNVUxBVElPTl9TVEFURV9SRUFEWSBzaW11bGF0aW9uX2luZm8gLT5cbiAgICBpZlxuICAgICAgc2ltdWxhdGlvbl9pbmZvLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nXG4gICAgdGhlblxuICAgICAgUlVOTklOR1xuICAgIGVsc2VcbiAgICAgIFBBVVNFRFxuXG5sZXQgc3RhdGUsIHNldF9zdGF0ZSA9IFJlYWN0LlMuY3JlYXRlIGR1bW15X21vZGVsXG5cbmxldCB1cGRhdGVfc2ltdWxhdGlvbl9zdGF0ZSAoc2ltdWxhdGlvbl9zdGF0ZSA6IHNpbXVsYXRpb25fc3RhdGUpIDogdW5pdCA9XG4gIGxldCAoKSA9IHNldF9zdGF0ZSB7IHNpbXVsYXRpb25fc3RhdGUgfSBpblxuICAoKVxuXG5sZXQgbW9kZWwgOiBtb2RlbCBSZWFjdC5zaWduYWwgPSBzdGF0ZVxuXG5sZXQgZXZhbF93aXRoX3NpbV9tYW5hZ2VyIDpcbiAgICAgICdhLlxuICAgICAgbGFiZWw6c3RyaW5nIC0+XG4gICAgICAoQXBpLmNvbmNyZXRlX21hbmFnZXIgLT4gdCAtPiAnYSBBcGkucmVzdWx0IEx3dC50KSAtPlxuICAgICAgJ2EgQXBpLnJlc3VsdCBMd3QudCA9XG4gZnVuIH5sYWJlbCBoYW5kbGVyIC0+XG4gIGxldCBwcm9qZWN0X2hhbmRsZXIgbWFuYWdlciA9IGhhbmRsZXIgbWFuYWdlciAoUmVhY3QuUy52YWx1ZSBzdGF0ZSkgaW5cbiAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWwgcHJvamVjdF9oYW5kbGVyXG5cbmxldCBmYWlsX2x3dCBlcnJvcl9tc2cgPSBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuXG5sZXQgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH4obGFiZWwgOiBzdHJpbmcpXG4gICAgPyhzdG9wcGVkIDogQXBpLmNvbmNyZXRlX21hbmFnZXIgLT4gJ2EgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBmdW4gXyAtPiBmYWlsX2x3dCBcIlNpbXVsYXRpb24gc3RvcHBlZFwiKVxuICAgID8oaW5pdGlhbGl6aW5nIDogQXBpLmNvbmNyZXRlX21hbmFnZXIgLT4gJ2EgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBmdW4gXyAtPiBmYWlsX2x3dCBcIlNpbXVsYXRpb24gaW5pdGFsaXppbmdcIilcbiAgICA/KHJlYWR5IDpcbiAgICAgICAgQXBpLmNvbmNyZXRlX21hbmFnZXIgLT5cbiAgICAgICAgQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvIC0+XG4gICAgICAgICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZnVuIF8gXyAtPiBmYWlsX2x3dCBcIlNpbXVsYXRpb24gcmVhZHlcIikgKCkgOiAnYSBBcGkucmVzdWx0IEx3dC50ID1cbiAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyIH5sYWJlbCAoZnVuIG1hbmFnZXIgcyAtPlxuICAgICAgbWF0Y2ggcy5zaW11bGF0aW9uX3N0YXRlIHdpdGhcbiAgICAgIHwgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIC0+IHN0b3BwZWQgbWFuYWdlclxuICAgICAgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIC0+IGluaXRpYWxpemluZyBtYW5hZ2VyXG4gICAgICB8IFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgc2ltdWxhdGlvbl9pbmZvIC0+IHJlYWR5IG1hbmFnZXIgc2ltdWxhdGlvbl9pbmZvKVxuXG5sZXQgZXZhbF93aGVuX3JlYWR5IH4obGFiZWwgOiBzdHJpbmcpXG4gICAgPyhoYW5kbGVyIDogdW5pdCBBcGkucmVzdWx0IC0+IHVuaXQgTHd0LnQgPSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG4gICAgKG9wZXJhdGlvbiA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyIC0+IHVuaXQgQXBpLnJlc3VsdCBMd3QudCkgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbFxuICAgICAgICB+c3RvcHBlZDooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCAtPiBvcGVyYXRpb24gbWFuYWdlcilcbiAgICAgICAgKClcbiAgICAgID4+PSBoYW5kbGVyKVxuXG4oKiB0byBzeW5jaCBzdGF0ZSBvZiBhcHBsaWNhdGlvbiB3aXRoIHJ1bnRpbWUgKilcbmxldCBzbGVlcF90aW1lID0gMS4wXG5cbmxldCByZWMgc3luYyAoKSA9XG4gIG1hdGNoIChSZWFjdC5TLnZhbHVlIHN0YXRlKS5zaW11bGF0aW9uX3N0YXRlIHdpdGhcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIC0+XG4gICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gIHwgU0lNVUxBVElPTl9TVEFURV9SRUFEWSBfIC0+XG4gICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzeW5jXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICgqIGdldCBjdXJyZW50IGRpcmVjdG9yeSAqKVxuICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25faW5mb1xuICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gc2ltdWxhdGlvbl9pbmZvIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIHNldF9zdGF0ZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9zdGF0ZSA9IFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgc2ltdWxhdGlvbl9pbmZvO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9pbmZvLkFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgICAuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nXG4gICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcy5zbGVlcCBzbGVlcF90aW1lID4+PSBzeW5jXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IHJlZnJlc2ggKCkgPVxuICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInN5bmNcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICgqIGdldCBjdXJyZW50IGRpcmVjdG9yeSAqKVxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2luZm9cbiAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICB+b2s6KGZ1biBzaW11bGF0aW9uX2luZm8gLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBzZXRfc3RhdGVcbiAgICAgICAgICAgICAgICAgIHsgc2ltdWxhdGlvbl9zdGF0ZSA9IFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgc2ltdWxhdGlvbl9pbmZvIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgc3luYyAoKSlcbiAgICAgICAgICAgIH5lcnJvcjooZnVuIF8gLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBzZXRfc3RhdGUgeyBzaW11bGF0aW9uX3N0YXRlID0gU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IGluaXQgKCkgOiB1bml0IEx3dC50ID0gTHd0LnJldHVybl91bml0XG5cbmxldCBjb250aW51ZV9zaW11bGF0aW9uIChwYXVzZV9jb25kaXRpb24gOiBzdHJpbmcpIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpcImNvbnRpbnVlX3NpbXVsYXRpb25cIlxuICAgIH5zdG9wcGVkOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIGNvbnRpbnVlIHNpbXVsYXRpb24sIHNpbXVsYXRpb24gc3RvcHBlZFwiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZykpXG4gICAgfmluaXRpYWxpemluZzooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBjb250aW51ZSBzaW11bGF0aW9uLCBzaW11bGF0aW9uIGluaXRpYWxpemluZ1wiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZykpXG4gICAgfnJlYWR5OihmdW4gbWFuYWdlciBfIC0+XG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY29udGludWUgcGF1c2VfY29uZGl0aW9uXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOnN5bmMpXG4gICAgKClcblxubGV0IHBhdXNlX3NpbXVsYXRpb24gKCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOlwicGF1c2Vfc2ltdWxhdGlvblwiXG4gICAgfnN0b3BwZWQ6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gcGF1c2Ugc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBzdG9wcGVkXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIHBhdXNlIHNpbXVsYXRpb24sIHNpbXVsYXRpb24gaW5pdGlhbGl6aW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIChfIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX3BhdXNlKVxuICAgICgpXG5cbmxldCBzdG9wX3NpbXVsYXRpb24gKCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOlwic3RvcF9zaW11bGF0aW9uXCJcbiAgICB+c3RvcHBlZDooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBwYXVzZSBzaW11bGF0aW9uLCBzaW11bGF0aW9uIHN0b3BwZWRcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpKVxuICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gc3RvcCBzaW11bGF0aW9uLCBzaW11bGF0aW9uIGluaXRpYWxpemluZ1wiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZykpXG4gICAgfnJlYWR5OihmdW4gbWFuYWdlciAoXyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbykgLT5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZWxldGVcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfc2ltdWxhdGlvbl9zdGF0ZSBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcbiAgICAoKVxuXG5sZXQgc3RhcnRfc2ltdWxhdGlvbiAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlcikgOlxuICAgIHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIGV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWw6XCJzdGFydF9zaW11bGF0aW9uXCJcbiAgICB+c3RvcHBlZDooZnVuIG1hbmFnZXIgLT5cbiAgICAgIGxldCBvbl9lcnJvciBlcnJvcl9tc2dzIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgICAgbGV0ICgpID0gdXBkYXRlX3NpbXVsYXRpb25fc3RhdGUgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIGluXG4gICAgICAgICgqIHR1cm4gdGhlIGxpZ2h0cyBvZmYgKilcbiAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RlbGV0ZSA+Pj0gZnVuIF8gLT5cbiAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JfbXNncylcbiAgICAgIGluXG4gICAgICBMd3QuY2F0Y2hcbiAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICgqIHNldCBzdGF0ZSB0byBpbml0YWxpemUgKilcbiAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfc2ltdWxhdGlvbl9zdGF0ZSBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIGluXG4gICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX3N0YXJ0IHNpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIF8gLT4gbWFuYWdlciNzaW11bGF0aW9uX2luZm8pXG4gICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIHNpbXVsYXRpb25fc3RhdHVzIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9zdGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgIFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgc2ltdWxhdGlvbl9zdGF0dXNcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfc2ltdWxhdGlvbl9zdGF0ZSBzaW11bGF0aW9uX3N0YXRlIGluXG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcl9tc2cgLT5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCBpblxuICAgICAgICAgICAgICAgICAgb25fZXJyb3IgZXJyb3JfbXNnKVxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6c3luYylcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGVycm9yIC0+XG4gICAgICAgICAgICBsZXQgbXNnID0gRm9ybWF0LnNwcmludGYgXCJSdW50aW1lIGVycm9yICVzXCIgZXJyb3IgaW5cbiAgICAgICAgICAgIG9uX2Vycm9yIFsgQXBpX2NvbW1vbi5lcnJvcl9tc2cgbXNnIF1cbiAgICAgICAgICB8IFN5c19lcnJvciBtZXNzYWdlIC0+IG9uX2Vycm9yIFsgQXBpX2NvbW1vbi5lcnJvcl9tc2cgbWVzc2FnZSBdXG4gICAgICAgICAgfCBfIC0+IG9uX2Vycm9yIFsgQXBpX2NvbW1vbi5lcnJvcl9tc2cgXCJJbml0aWFsaXphdGlvbiBlcnJvclwiIF0pKVxuICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gc3RhcnQgc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBpbml0aWFsaXppbmdcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpKVxuICAgIH5yZWFkeTooZnVuIF8gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIHN0YXJ0IHNpbXVsYXRpb24sIHNpbXVsYXRpb24gcnVubmluZ1wiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZykpXG4gICAgKClcblxubGV0IGludGVydmVuZV9zaW11bGF0aW9uIChjb2RlIDogc3RyaW5nKSA6IHN0cmluZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpcInBlcnR1cmJfc2ltdWxhdGlvblwiXG4gICAgfnN0b3BwZWQ6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gc3RhcnQgc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBydW5uaW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIHN0YXJ0IHNpbXVsYXRpb24sIHNpbXVsYXRpb24gaW5pdGlhbGl6aW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gLT5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gY29kZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIG91dCAtPlxuICAgICAgICAgICAgICBzeW5jICgpXG4gICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIG91dCkpKSlcbiAgICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxubGV0IHJlZnJlc2ggciA9XG4gIGxldCByJyA9IFN0YXRlX2ZpbGUuc3luYyB+cmVzZXQ6dHJ1ZSAoKSBpblxuICBsZXQgcicnID0gU3RhdGVfc2ltdWxhdGlvbi5yZWZyZXNoICgpIGluXG4gIHInID4+PSBmdW4gcicgLT5cbiAgcicnID4+PSBmdW4gcicnIC0+IEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2NvbWJpbmUgWyByOyByJzsgcicnIF0pXG5cbmxldCBjcmVhdGVfcHJvamVjdCAocHJvamVjdF9pZCA6IHN0cmluZykgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9wcm9qZWN0LmNyZWF0ZV9wcm9qZWN0IHByb2plY3RfaWQgPj49IHJlZnJlc2gpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgc2V0X3Byb2plY3QgKHByb2plY3RfaWQgOiBzdHJpbmcpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfXyAoU3RhdGVfcHJvamVjdC5zZXRfcHJvamVjdCBwcm9qZWN0X2lkID4+PSByZWZyZXNoKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IGNsb3NlX3Byb2plY3QgcHJvamVjdF9pZCA6IHVuaXQgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX19cbiAgICAgICAgKFN0YXRlX3Byb2plY3QucmVtb3ZlX3Byb2plY3QgcHJvamVjdF9pZCA+Pj0gcmVmcmVzaClcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzZXRfbWFuYWdlciAocnVudGltZV9pZCA6IHN0cmluZykgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dFxuICAgICAgICAgICB+b2s6KGZ1biAoKSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgIChTdGF0ZV9ydW50aW1lLmNyZWF0ZV9zcGVjIH5sb2FkOnRydWUgcnVudGltZV9pZCkpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgY29uZmlndXJhdGlvbl9zZWVkX2lucHV0X2lkID0gXCJzaW11bGF0aW9uX3NlZWRfaW5wdXRcIlxubGV0IHByZWZlcmVuY2VzX21vZGFsX2lkID0gXCJwcmVmZXJlbmNlc19tb2RhbFwiXG5sZXQgc2V0dGluZ3NfY2xpZW50X2lkX2lucHV0X2lkID0gXCJzZXR0aW5ncy1jbGllbnQtaWQtaW5wdXRcIlxubGV0IHByZWZlcmVuY2VzX2J1dHRvbiA9IEh0bWwuYSBbIEh0bWwudHh0IFwiUHJlZmVyZW5jZXNcIiBdXG5cbmxldCBvcHRpb25fc2VlZF9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGNvbmZpZ3VyYXRpb25fc2VlZF9pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYE51bWJlcjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBvcHRpb25fd2l0aHRyYWNlID0gSHRtbC5pbnB1dCB+YTpbIEh0bWwuYV9pbnB1dF90eXBlIGBDaGVja2JveCBdICgpXG5sZXQgb3B0aW9uX3dpdGhkZWFkcnVsZXMgPSBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94IF0gKClcbmxldCBvcHRpb25fd2l0aGRlYWRhZ2VudHMgPSBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94IF0gKClcbmxldCBvcHRpb25fd2l0aGlycmV2ZXJzaWJsZSA9IEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3ggXSAoKVxuXG5sZXQgZGVjcmVhc2VfZm9udCA9XG4gIEh0bWwuYnV0dG9uXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCI7IFwiYnRuLXNtXCIgXTtcbiAgICAgIF1cbiAgICBbIEh0bWwudHh0IFwiLVwiIF1cblxubGV0IGluY3JlYXNlX2ZvbnQgPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiOyBcImJ0bi1sZ1wiIF07XG4gICAgICBdXG4gICAgWyBIdG1sLnR4dCBcIitcIiBdXG5cbmxldCBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBUZXh0O1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcImNsaWVudCBpZFwiO1xuICAgICAgICBIdG1sLmFfc2l6ZSA0MDtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgc2V0dGluZ3NfY2xpZW50X2lkX2lucHV0X2RvbSA9XG4gIFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRcblxubGV0IG9wdGlvbl9odHRwX3N5bmNoID0gSHRtbC5pbnB1dCB+YTpbIEh0bWwuYV9pbnB1dF90eXBlIGBDaGVja2JveCBdICgpXG5cbmxldCBkcm9wZG93biAobW9kZWwgOiBTdGF0ZV9ydW50aW1lLm1vZGVsKSA9XG4gIGxldCBjdXJyZW50X2lkID0gU3RhdGVfcnVudGltZS5zcGVjX2lkIG1vZGVsLlN0YXRlX3J1bnRpbWUubW9kZWxfY3VycmVudCBpblxuICBMaXN0Lm1hcFxuICAgIChmdW4gKHNwZWMgOiBTdGF0ZV9ydW50aW1lLnNwZWMpIC0+XG4gICAgICBsZXQgc3BlY19pZCA9IFN0YXRlX3J1bnRpbWUuc3BlY19pZCBzcGVjIGluXG4gICAgICBIdG1sLm9wdGlvblxuICAgICAgICB+YTpcbiAgICAgICAgICAoSHRtbC5hX3ZhbHVlIHNwZWNfaWRcbiAgICAgICAgICA6OlxuICAgICAgICAgIChpZiBjdXJyZW50X2lkID0gc3BlY19pZCB0aGVuXG4gICAgICAgICAgICAgWyBIdG1sLmFfc2VsZWN0ZWQgKCkgXVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgW10pKVxuICAgICAgICAoSHRtbC50eHQgKFN0YXRlX3J1bnRpbWUuc3BlY19sYWJlbCBzcGVjKSkpXG4gICAgbW9kZWwuU3RhdGVfcnVudGltZS5tb2RlbF9ydW50aW1lc1xuXG5sZXQgYmFja2VuZF9vcHRpb25zID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgKFJlYWN0LlMubWFwIChmdW4gbGlzdF90IC0+IGRyb3Bkb3duIGxpc3RfdCkgU3RhdGVfcnVudGltZS5tb2RlbClcblxubGV0IGJhY2tlbmRfc2VsZWN0ID1cbiAgVHl4bWxfanMuUi5IdG1sLnNlbGVjdCB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXSBdIGJhY2tlbmRfb3B0aW9uc1xuXG5sZXQlaHRtbCBib2RpZXMgPVxuICB7fFxuICAgIDxoND5BcHBsaWNhdGlvbjwvaDQ+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMlwiPkZvbnQgc2l6ZTwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+fH1cbiAgICBbIGRlY3JlYXNlX2ZvbnQ7IGluY3JlYXNlX2ZvbnQgXVxuICAgIHt8PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMlwiPkJhY2tlbmQgZm9yIG5ldyBwcm9qZWN0czwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+fH1cbiAgICBbIGJhY2tlbmRfc2VsZWN0IF1cbiAgICB7fDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxoND5Qcm9qZWN0PC9oND5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yXCIgZm9yPVwifH1cbiAgICBjb25maWd1cmF0aW9uX3NlZWRfaW5wdXRfaWRcbiAgICB7fFwiPlNlZWQ8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPnx9XG4gICAgWyBvcHRpb25fc2VlZF9pbnB1dCBdXG4gICAge3w8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTIgY29sLW1kLTUgY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG9wdGlvbl93aXRodHJhY2UgXVxuICAgIHt8U3RvcmUgdHJhY2VcbiAgICA8L2xhYmVsPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxoND5IVFRQUyBiYWNrZW5kPC9oND5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yXCIgZm9yPVwifH1cbiAgICBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRfaWRcbiAgICB7fFwiPkNsaWVudCBpZDwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+fH1cbiAgICBbIHNldHRpbmdzX2NsaWVudF9pZF9pbnB1dCBdXG4gICAge3w8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTIgY29sLW1kLTUgY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG9wdGlvbl9odHRwX3N5bmNoIF1cbiAgICB7fEF1dG8gc3luY2hcbiAgICA8L2xhYmVsPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxoND5TdGF0aWMgYW5hbHlzZXM8L2g0PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC1vZmZzZXQtMiBjb2wtbWQtNSBjaGVja2JveFwiPjxsYWJlbD58fVxuICAgIFsgb3B0aW9uX3dpdGhkZWFkcnVsZXMgXVxuICAgIHt8U2hvdyBkZWFkIHJ1bGVzXG4gICAgPC9sYWJlbD48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTIgY29sLW1kLTUgY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG9wdGlvbl93aXRoZGVhZGFnZW50cyBdXG4gICAge3xTaG93IGRlYWQgYWdlbnRzXG4gICAgPC9sYWJlbD48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTIgY29sLW1kLTUgY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG9wdGlvbl93aXRoaXJyZXZlcnNpYmxlIF1cbiAgICB7fFNob3cgbm9uIHdlYWtseSByZXZlcnNpYmxlIHRyYW5zaXRpb25zXG4gICAgPC9sYWJlbD48L2Rpdj5cbiAgICA8L2Rpdj5cbnx9XG5cbmxldCBzZXRfYnV0dG9uID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpbIEh0bWwuYV9idXR0b25fdHlwZSBgU3VibWl0OyBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1wcmltYXJ5XCIgXSBdXG4gICAgWyBIdG1sLnR4dCBcIlNldFwiIF1cblxubGV0IHNhdmVfYnV0dG9uID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpbIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uOyBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXSBdXG4gICAgWyBIdG1sLnR4dCBcIlNhdmUgYXMgZGVmYXVsdFwiIF1cblxubGV0IG1vZGFsID1cbiAgbGV0IGhlYWQgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtaGVhZGVyXCIgXSBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuYnV0dG9uXG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNsb3NlXCIgXTtcbiAgICAgICAgICAgICAgSHRtbC5hX3VzZXJfZGF0YSBcImRpc21pc3NcIiBcIm1vZGFsXCI7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgWyBIdG1sLmVudGl0eSBcInRpbWVzXCIgXTtcbiAgICAgICAgSHRtbC5oNCB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtdGl0bGVcIiBdIF0gWyBIdG1sLnR4dCBcIlByZWZlcmVuY2VzXCIgXTtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IGJvZHkgPSBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtYm9keVwiIF0gXSBib2RpZXMgaW5cbiAgbGV0IGZvb3QgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtZm9vdGVyXCIgXSBdXG4gICAgICBbXG4gICAgICAgIHNldF9idXR0b247XG4gICAgICAgIHNhdmVfYnV0dG9uO1xuICAgICAgICBIdG1sLmJ1dHRvblxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgICAgICAgIEh0bWwuYV91c2VyX2RhdGEgXCJkaXNtaXNzXCIgXCJtb2RhbFwiO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIFsgSHRtbC50eHQgXCJDbG9zZVwiIF07XG4gICAgICBdXG4gIGluXG4gIEh0bWwuZm9ybVxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1jb250ZW50XCI7IFwiZm9ybS1ob3Jpem9udGFsXCIgXSBdXG4gICAgWyBoZWFkOyBib2R5OyBmb290IF1cblxubGV0IGNvbnRlbnQgKCkgPVxuICBbXG4gICAgcHJlZmVyZW5jZXNfYnV0dG9uO1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwibW9kYWxcIjsgXCJmYWRlXCIgXTtcbiAgICAgICAgICBIdG1sLmFfaWQgcHJlZmVyZW5jZXNfbW9kYWxfaWQ7XG4gICAgICAgICAgSHRtbC5hX3JvbGUgWyBcImRpYWxvZ1wiIF07XG4gICAgICAgICAgSHRtbC5hX3RhYmluZGV4ICgtMSk7XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtZGlhbG9nXCIgXTsgSHRtbC5hX3JvbGUgWyBcImRvY3VtZW50XCIgXSBdXG4gICAgICAgICAgWyBtb2RhbCBdO1xuICAgICAgXTtcbiAgXVxuXG5sZXQgc2V0X2FjdGlvbiAoKSA9XG4gIGxldCBzZXR0aW5nc19jbGllbnRfaWQgPSBKcy50b19zdHJpbmcgc2V0dGluZ3NfY2xpZW50X2lkX2lucHV0X2RvbSMjLnZhbHVlIGluXG4gIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnNldF9jbGllbnRfaWQgc2V0dGluZ3NfY2xpZW50X2lkIGluXG5cbiAgbGV0IHN5bmNoX2NoZWNrYm94X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25faHR0cF9zeW5jaCBpblxuICBsZXQgaXNfY2hlY2tlZCA9IEpzLnRvX2Jvb2wgc3luY2hfY2hlY2tib3hfZG9tIyMuY2hlY2tlZCBpblxuICBsZXQgKCkgPSBTdGF0ZV9zZXR0aW5ncy5zZXRfc3luY2ggaXNfY2hlY2tlZCBpblxuXG4gIGxldCBpbnB1dCA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fc2VlZF9pbnB1dCBpblxuICBsZXQgdmFsdWUgOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgaW5wdXQjIy52YWx1ZSBpblxuICBsZXQgbW9kZWxfc2VlZCA9IHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHZhbHVlKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lIGluXG4gIGxldCAoKSA9IFN0YXRlX3Byb2plY3Quc2V0X3NlZWQgbW9kZWxfc2VlZCBpblxuXG4gIGxldCAoKSA9XG4gICAgU3RhdGVfcHJvamVjdC5zZXRfc3RvcmVfdHJhY2VcbiAgICAgIChKcy50b19ib29sIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGh0cmFjZSkjIy5jaGVja2VkKVxuICBpblxuICBsZXQgKCkgPVxuICAgIFN0YXRlX3Byb2plY3Quc2V0X3Nob3dfZGVhZF9ydWxlc1xuICAgICAgKEpzLnRvX2Jvb2wgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fd2l0aGRlYWRydWxlcykjIy5jaGVja2VkKVxuICBpblxuICBsZXQgKCkgPVxuICAgIFN0YXRlX3Byb2plY3Quc2V0X3Nob3dfZGVhZF9hZ2VudHNcbiAgICAgIChKcy50b19ib29sIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhkZWFkYWdlbnRzKSMjLmNoZWNrZWQpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgU3RhdGVfcHJvamVjdC5zZXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgIChKcy50b19ib29sIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhpcnJldmVyc2libGUpIyMuY2hlY2tlZClcbiAgaW5cblxuICBsZXQgKCkgPVxuICAgIFBhbmVsX3Byb2plY3RzX2NvbnRyb2xsZXIuc2V0X21hbmFnZXJcbiAgICAgIChKcy50b19zdHJpbmcgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgYmFja2VuZF9zZWxlY3QpIyMudmFsdWUpXG4gIGluXG4gICgpXG5cbmxldCBzZXRfYW5kX3NhdmVfYWN0aW9uICgpID1cbiAgbGV0ICgpID0gc2V0X2FjdGlvbiAoKSBpblxuXG4gIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnNldF9wYXJhbWV0ZXJzX2FzX2RlZmF1bHQgKCkgaW5cbiAgbGV0ICgpID0gU3RhdGVfcHJvamVjdC5zZXRfcGFyYW1ldGVyc19hc19kZWZhdWx0ICgpIGluXG5cbiAgKClcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9mb3JtIG1vZGFsKSMjLm9uc3VibWl0XG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIChfIDogXyBKcy50KSAtPlxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIENvbW1vbi5tb2RhbCB+aWQ6KFwiI1wiIF4gcHJlZmVyZW5jZXNfbW9kYWxfaWQpIH5hY3Rpb246XCJoaWRlXCJcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID0gc2V0X2FjdGlvbiAoKSBpblxuICAgICAgICAgICBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gc2F2ZV9idXR0b24pIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IHNldF9hbmRfc2F2ZV9hY3Rpb24gKCkgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYSBwcmVmZXJlbmNlc19idXR0b24pIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCBzcCA9IFJlYWN0LlMudmFsdWUgU3RhdGVfcHJvamVjdC5tb2RlbCBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIHNldHRpbmdzX2NsaWVudF9pZF9pbnB1dF9kb20jIy52YWx1ZVxuICAgICAgICAgICAgIDo9IEpzLnN0cmluZyAoU3RhdGVfc2V0dGluZ3MuZ2V0X2NsaWVudF9pZCAoKSlcbiAgICAgICAgICAgaW5cblxuICAgICAgICAgICBsZXQgaW5wdXQgPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3NlZWRfaW5wdXQgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBpbnB1dCMjLnZhbHVlIDo9XG4gICAgICAgICAgICAgICBKcy5zdHJpbmdcbiAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgIHNwLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVycy5TdGF0ZV9wcm9qZWN0LnNlZWRcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgICAgfCBTb21lIG1vZGVsX3NlZWQgLT4gc3RyaW5nX29mX2ludCBtb2RlbF9zZWVkKVxuICAgICAgICAgICBpblxuXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fd2l0aHRyYWNlKSMjLmNoZWNrZWRcbiAgICAgICAgICAgICA6PSBKcy5ib29sXG4gICAgICAgICAgICAgICAgICBzcC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnMuU3RhdGVfcHJvamVjdC5zdG9yZV90cmFjZVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhkZWFkYWdlbnRzKSMjLmNoZWNrZWRcbiAgICAgICAgICAgICA6PSBKcy5ib29sXG4gICAgICAgICAgICAgICAgICBzcC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc2hvd19kZWFkX2FnZW50c1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhkZWFkcnVsZXMpIyMuY2hlY2tlZFxuICAgICAgICAgICAgIDo9IEpzLmJvb2xcbiAgICAgICAgICAgICAgICAgIHNwLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5zaG93X2RlYWRfcnVsZXNcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl93aXRoaXJyZXZlcnNpYmxlKSMjLmNoZWNrZWRcbiAgICAgICAgICAgICA6PSBKcy5ib29sXG4gICAgICAgICAgICAgICAgICBzcC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgaW5cblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX2h0dHBfc3luY2gpIyMuY2hlY2tlZFxuICAgICAgICAgICAgIDo9IEpzLmJvb2wgKFJlYWN0LlMudmFsdWUgU3RhdGVfc2V0dGluZ3Muc3luY2gpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgYmFja2VuZF9zZWxlY3QpIyMudmFsdWVcbiAgICAgICAgICAgICA6PSBKcy5zdHJpbmdcbiAgICAgICAgICAgICAgICAgIChTdGF0ZV9ydW50aW1lLnNwZWNfaWRcbiAgICAgICAgICAgICAgICAgICAgIChSZWFjdC5TLnZhbHVlIFN0YXRlX3J1bnRpbWUubW9kZWwpXG4gICAgICAgICAgICAgICAgICAgICAgIC5TdGF0ZV9ydW50aW1lLm1vZGVsX2N1cnJlbnQpXG4gICAgICAgICAgIGluXG5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBDb21tb24ubW9kYWwgfmlkOihcIiNcIiBeIHByZWZlcmVuY2VzX21vZGFsX2lkKSB+YWN0aW9uOlwic2hvd1wiXG4gICAgICAgICAgIGluXG5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuXG4gIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnVwZGF0ZUZvbnRTaXplIH5kZWx0YTowLiBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGluY3JlYXNlX2ZvbnQpIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnVwZGF0ZUZvbnRTaXplIH5kZWx0YTowLjIgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGRlY3JlYXNlX2ZvbnQpIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnVwZGF0ZUZvbnRTaXplIH5kZWx0YTooLTAuMikgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgdG9nZ2xlX2VsZW1lbnQgKHByb2plY3Rpb24gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gb3B0aW9uIC0+IGJvb2wpXG4gICAgKGNvbnRlbnQgOiBbPCBIdG1sX3R5cGVzLmRpdl9jb250ZW50X2Z1biBdIEh0bWwuZWx0IEh0bWwubGlzdF93cmFwKSA9XG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgKFJlYWN0LlMuYmluZCBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgICAgIFJlYWN0LlMuY29uc3RcbiAgICAgICAgICAgICAgICAgKGlmIHByb2plY3Rpb24gKFN0YXRlX3NpbXVsYXRpb24udF9zaW11bGF0aW9uX2luZm8gbW9kZWwpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgWyBcInNob3dcIiBdXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIFsgXCJoaWRkZW5cIiBdKSkpO1xuICAgICAgXVxuICAgIGNvbnRlbnRcblxubGV0IG9wdGlvbl9sYWJlbCBsYWJlbCA9XG4gIGlmIFN0cmluZy5sZW5ndGggbGFiZWwgPiAxMCB0aGVuXG4gICAgU3RyaW5nLnN1YiBsYWJlbCAwIDcgXiBcIi4uLlwiXG4gIGVsc2VcbiAgICBsYWJlbFxuXG5sZXQgZXhwb3J0X2NvbnRyb2xzIH4oZXhwb3J0X3NlbGVjdF9pZCA6IHN0cmluZykgfihleHBvcnRfZmlsZW5hbWVfaWQgOiBzdHJpbmcpXG4gICAgfihleHBvcnRfYnV0dG9uX2lkIDogc3RyaW5nKSB+KGV4cG9ydF9kYXRhX2xhYmVsIDogc3RyaW5nKSA9XG4gIGxldCBleHBvcnRfZm9ybWF0cyA6IHN0cmluZyBsaXN0ID0gWyBleHBvcnRfZGF0YV9sYWJlbCBdIGluXG4gIGxldCBleHBvcnRfZmlsZW5hbWUgPVxuICAgIEh0bWwuaW5wdXRcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGV4cG9ydF9maWxlbmFtZV9pZDtcbiAgICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgVGV4dDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwiZmlsZSBuYW1lXCI7XG4gICAgICAgIF1cbiAgICAgICgpXG4gIGluXG4gIGxldCBleHBvcnRfYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgZXhwb3J0X2J1dHRvbl9pZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiOyBcInB1bGwtcmlnaHRcIiBdO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJleHBvcnRcIiBdXG4gIGluXG4gIGxldCBleHBvcnRfZm9ybWF0c19zZWxlY3QgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIGZvcm1hdCAtPlxuICAgICAgICBbJWh0bWxcbiAgICAgICAgICB7fDxvcHRpb24gdmFsdWU9XCJ8fSBmb3JtYXQge3xcIj58fSAoSHRtbC5jZGF0YSBmb3JtYXQpIHt8PC9vcHRpb24+fH1dKVxuICAgICAgZXhwb3J0X2Zvcm1hdHNcbiAgaW5cbiAgWyVodG1sXG4gICAge3w8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTJcIj5cbiAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0taW5saW5lXCI+XG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgIGlkPVwifH1cbiAgICAgIGV4cG9ydF9zZWxlY3RfaWRcbiAgICAgIHt8XCI+PG9wdGlvbiB2YWx1ZT1cInBuZ1wiPnBuZzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9XCJzdmdcIj5zdmc8L29wdGlvbj58fVxuICAgICAgZXhwb3J0X2Zvcm1hdHNfc2VsZWN0XG4gICAgICB7fDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlY2tib3gtaW5saW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fVxuICAgICAgWyBleHBvcnRfZmlsZW5hbWUgXVxuICAgICAge3xcbiAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZWNrYm94LWlubGluZVwiPlxuICAgICAgICAgICAgICB8fVxuICAgICAgWyBleHBvcnRfYnV0dG9uIF1cbiAgICAgIHt8XG4gICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj58fV1cblxubGV0IGRvY3VtZW50ID0gRG9tX2h0bWwud2luZG93IyMuZG9jdW1lbnRcblxubGV0IGxhYmVsX25ld3MgdGFiX2lzX2FjdGl2ZSBjb3VudGVyID1cbiAgbGV0IGxhc3RfdmFsdWUgPVxuICAgIHJlZlxuICAgICAgKGxldCBzaW11bGF0aW9uX2luZm8gPVxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi50X3NpbXVsYXRpb25faW5mb1xuICAgICAgICAgICAoUmVhY3QuUy52YWx1ZSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuICAgICAgIGluXG4gICAgICAgY291bnRlciBzaW11bGF0aW9uX2luZm8pXG4gIGluXG4gIFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbFxuICAgIChSZWFjdC5TLmwyXG4gICAgICAgKGZ1biB0YWJfYWN0aXZlIG1vZGVsIC0+XG4gICAgICAgICBpZiB0YWJfYWN0aXZlIHRoZW5cbiAgICAgICAgICAgW11cbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi50X3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBsZXQgdiA9IGNvdW50ZXIgc2ltdWxhdGlvbl9pbmZvIGluXG4gICAgICAgICAgIGlmIHYgPD4gIWxhc3RfdmFsdWUgJiYgdiA+IDAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0ICgpID0gbGFzdF92YWx1ZSA6PSB2IGluXG4gICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgSHRtbC50eHQgXCIgXCI7XG4gICAgICAgICAgICAgICBIdG1sLnNwYW5cbiAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImxhYmVsXCI7IFwibGFiZWwtZGVmYXVsdFwiIF0gXVxuICAgICAgICAgICAgICAgICBbIEh0bWwudHh0IFwiTmV3XCIgXTtcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgIFtdXG4gICAgICAgICApKVxuICAgICAgIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxubGV0IGJhZGdlIChjb3VudGVyIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvIG9wdGlvbiAtPiBpbnQpID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgKFJlYWN0LlMubWFwXG4gICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24udF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgIGxldCBjb3VudCA9IGNvdW50ZXIgc2ltdWxhdGlvbl9pbmZvIGluXG4gICAgICAgICBpZiBjb3VudCA+IDAgdGhlblxuICAgICAgICAgICBbXG4gICAgICAgICAgICAgSHRtbC50eHQgXCIgXCI7XG4gICAgICAgICAgICAgSHRtbC5zcGFuXG4gICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiYmFkZ2VcIiBdIF1cbiAgICAgICAgICAgICAgIFsgSHRtbC50eHQgKHN0cmluZ19vZl9pbnQgY291bnQpIF07XG4gICAgICAgICAgIF1cbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgW10pXG4gICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxubGV0IGFyZ3VtZW50cyAoa2V5IDogc3RyaW5nKSA6IHN0cmluZyBsaXN0ID1cbiAgTGlzdC5tYXAgc25kIChMaXN0LmZpbHRlciAoZnVuIChrLCBfKSAtPiBrZXkgPSBrKSBVcmwuQ3VycmVudC5hcmd1bWVudHMpXG5cbmxldCB2ZXJzaW9uID8odGVzdCA6ICdhIG9wdGlvbiA9IE5vbmUpIH4ocHJvZCA6ICdhKSB+KGRldiA6ICdhKSA6ICdhID1cbiAgbGV0IHZlcnNpb24gOiBzdHJpbmcgbGlzdCA9IGFyZ3VtZW50cyBcInZlcnNpb25cIiBpblxuICBtYXRjaCB0ZXN0LCB2ZXJzaW9uIHdpdGhcbiAgfCBTb21lIHRlc3QsIFsgXCJ0ZXN0XCIgXSAtPiB0ZXN0XG4gIHwgXywgWyBcImRldlwiIF0gLT4gZGV2XG4gIHwgXyAtPiBwcm9kXG5cbmxldCBuYXZsaSBsYWJlbCBmb3JjZV9jbGFzcyBkZWNvcmF0aW9ucyA9XG4gIGxldCBkZWZhdWx0X2F0dHJpYnV0ZXMgPVxuICAgIFsgSHRtbC5hX2lkIChcIm5hdlwiIF4gbGFiZWwpOyBIdG1sLmFfcm9sZSBbIFwicHJlc2VudGF0aW9uXCIgXSBdXG4gIGluXG4gIGxldCBhdHRyaWJ1dGVzID1cbiAgICBtYXRjaCBmb3JjZV9jbGFzcyB3aXRoXG4gICAgfCBOb25lIC0+IGRlZmF1bHRfYXR0cmlidXRlc1xuICAgIHwgU29tZSBsIC0+IFR5eG1sX2pzLlIuSHRtbDUuYV9jbGFzcyBsIDo6IGRlZmF1bHRfYXR0cmlidXRlc1xuICBpblxuICBsZXQgdGV4dCA9XG4gICAgUmVhY3RpdmVEYXRhLlJMaXN0LmNvbmNhdFxuICAgICAgKFJlYWN0aXZlRGF0YS5STGlzdC5zaW5nbGV0b24gKEh0bWwuY2RhdGEgbGFiZWwpKVxuICAgICAgZGVjb3JhdGlvbnNcbiAgaW5cbiAgSHRtbC5saSB+YTphdHRyaWJ1dGVzXG4gICAgW1xuICAgICAgVHl4bWxfanMuUi5IdG1sLmFcbiAgICAgICAgfmE6XG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImRhdGEtdG9nZ2xlXCIgXCJ0YWJcIjtcbiAgICAgICAgICAgIEh0bWwuYV9yb2xlIFsgXCJ0YWJcIiBdO1xuICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImFyaWEtY29udHJvbHNcIiBsYWJlbDtcbiAgICAgICAgICAgIEh0bWwuYV9ocmVmIChcIiNcIiBeIGxhYmVsKTtcbiAgICAgICAgICBdXG4gICAgICAgIHRleHQ7XG4gICAgXVxuXG5sZXQgbmF2dGFicyBuYXZfdGFiX2lkID0gZnVuY3Rpb25cbiAgfCBbXSB8IChfLCBTb21lIF8sIF8pIDo6IF8gLT4gQ29tbW9uLnRvc3MgXCJ1aV9jb21tb24ubmF2dGFicyA6IG1pc3NpbmcgdGFic1wiXG4gIHwgKHRpLCBOb25lLCBsKSA6OiB0IC0+XG4gICAgSHRtbC51bFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgbmF2X3RhYl9pZDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcIm5hdlwiOyBcIm5hdi10YWJzXCIgXTtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwidGFibGlzdFwiO1xuICAgICAgICBdXG4gICAgICAobmF2bGkgdGkgKFNvbWUgKFJlYWN0LlMuY29uc3QgWyBcImFjdGl2ZVwiIF0pKSBsXG4gICAgICA6OiBMaXN0Lm1hcCAoZnVuICh0LCBhX2NsYXNzLCBsaSkgLT4gbmF2bGkgdCBhX2NsYXNzIGxpKSB0KVxuXG5sZXQgb25lbmF2Y29udGVudCBsYWJlbCBhY3RpdmUgY2xhc3NlcyBjb250ZW50ID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGxhYmVsO1xuICAgICAgICBIdG1sLmFfY2xhc3NcbiAgICAgICAgICAoaWYgYWN0aXZlIHRoZW5cbiAgICAgICAgICAgICBcImZsZXgtY29udGVudFwiIDo6IFwidGFiLXBhbmVcIiA6OiBcImFjdGl2ZVwiIDo6IGNsYXNzZXNcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFwiZmxleC1jb250ZW50XCIgOjogXCJ0YWItcGFuZVwiIDo6IGNsYXNzZXMpO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwidGFicGFuZWxcIjtcbiAgICAgIF1cbiAgICBjb250ZW50XG5cbmxldCBuYXZjb250ZW50ID9pZCBjbGFzc2VzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBDb21tb24udG9zcyBcInVpX2NvbW1vbi5uYXZjb250ZW50IDogbWlzc2luZyBjb250ZW50XCJcbiAgfCAodCwgY2wsIGMpIDo6IGwgLT5cbiAgICBsZXQgaWQgOiBbPiBgSWQgXSBIdG1sLmF0dHJpYiBsaXN0ID1cbiAgICAgIG1hdGNoIGlkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIGlkIC0+IFsgSHRtbC5hX2lkIGlkIF1cbiAgICBpblxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgKFtcbiAgICAgICAgICAgSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgKFsgXCJwYW5lbC1jb250ZW50XCI7IFwidGFiLWNvbnRlbnRcIjsgXCJmbGV4LWNvbnRlbnRcIiBdIEAgY2xhc3Nlcyk7XG4gICAgICAgICBdXG4gICAgICAgIEAgaWQpXG4gICAgICAob25lbmF2Y29udGVudCB0IHRydWUgY2wgY1xuICAgICAgOjogTGlzdC5tYXAgKGZ1biAodCwgY2wsIGMpIC0+IG9uZW5hdmNvbnRlbnQgdCBmYWxzZSBjbCBjKSBsKVxuXG5sZXQgbGV2ZWwgP2RlYnVnID9pbmZvID9ub3RpY2UgP3dhcm5pbmcgP2Vycm9yID9mYXRhbCAoKSA6ICdhIGxpc3QgPVxuICBsZXQgbGV2ZWwgOiBzdHJpbmcgbGlzdCA9IGFyZ3VtZW50cyBcImxldmVsXCIgaW5cbiAgbGV0IGV4dHJhY3Qga2V5IHZhbHVlID1cbiAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgfCBOb25lIC0+IFtdXG4gICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICBpZiBMaXN0Lm1lbSBrZXkgbGV2ZWwgdGhlblxuICAgICAgICBbIHZhbHVlIF1cbiAgICAgIGVsc2VcbiAgICAgICAgW11cbiAgaW5cbiAgZXh0cmFjdCBcImRlYnVnXCIgZGVidWcgQCBleHRyYWN0IFwiaW5mb1wiIGluZm8gQCBleHRyYWN0IFwibm90aWNlXCIgbm90aWNlXG4gIEAgZXh0cmFjdCBcIndhcm5pbmdcIiB3YXJuaW5nIEAgZXh0cmFjdCBcImVycm9yXCIgZXJyb3IgQCBleHRyYWN0IFwiZmF0YWxcIiBmYXRhbFxuICBAIFtdXG5cbmxldCBmZWF0dXJlcyA/KGRlZmF1bHQgPSBbXSkgKG9wdGlvbnMgOiAoc3RyaW5nICogJ2EpIGxpc3QpIDogJ2EgbGlzdCA9XG4gIGxldCBmZWF0dXJlcyA6IHN0cmluZyBsaXN0ID0gYXJndW1lbnRzIFwiZmVhdHVyZVwiIGluXG4gIGxldCBtYXRjaGVzIDogJ2EgbGlzdCA9XG4gICAgTGlzdC5tYXAgc25kXG4gICAgICAoTGlzdC5maWx0ZXIgKGZ1biAoZmVhdHVyZSwgXykgLT4gTGlzdC5tZW0gZmVhdHVyZSBmZWF0dXJlcykgb3B0aW9ucylcbiAgaW5cbiAgbWF0Y2ggbWF0Y2hlcyB3aXRoXG4gIHwgW10gLT4gZGVmYXVsdFxuICB8IF8gOjogXyAtPiBtYXRjaGVzXG5cbmxldCBpbnB1dF9jaGFuZ2UgaW5wdXRfZG9tIHNpZ25hbF9oYW5kbGVyID1cbiAgaW5wdXRfZG9tIyMub25jaGFuZ2UgOj1cbiAgICBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSBzaWduYWxfaGFuZGxlciAoSnMudG9fc3RyaW5nIGlucHV0X2RvbSMjLnZhbHVlKSBpblxuICAgICAgICBKcy5fdHJ1ZSlcblxubW9kdWxlIHR5cGUgTWVudSA9IHNpZ1xuICB2YWwgY29udGVudCA6XG4gICAgdW5pdCAtPlxuICAgIFs+IGBCdXR0b24gfCBgRGl2IHwgYFVsIHwgYEEgb2YgWz4gYFBDREFUQSB8IGBTcGFuIF0gXSBUeXhtbF9qcy5IdG1sNS5lbHRcbiAgICBsaXN0XG5cbiAgdmFsIG9ubG9hZCA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIERpdiA9IHNpZ1xuICB2YWwgaWQgOiBzdHJpbmdcbiAgdmFsIGNvbnRlbnQgOiB1bml0IC0+IEh0bWxfdHlwZXMuZGl2X2NvbnRlbnRfZnVuIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3RcbiAgdmFsIG9ubG9hZCA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFRhYiA9IHNpZ1xuICB2YWwgbmF2bGkgOlxuICAgIHVuaXQgLT5cbiAgICBIdG1sX3R5cGVzLmZsb3c1X3dpdGhvdXRfaW50ZXJhY3RpdmUgVHl4bWxfanMuSHRtbDUuZWx0IFJlYWN0aXZlRGF0YS5STGlzdC50XG5cbiAgdmFsIGNvbnRlbnQgOiB1bml0IC0+IEh0bWxfdHlwZXMuZGl2X2NvbnRlbnRfZnVuIFR5eG1sX2pzLkh0bWw1LmVsdCBsaXN0XG4gIHZhbCBvbmxvYWQgOiB1bml0IC0+IHVuaXRcbiAgdmFsIG9ucmVzaXplIDogdW5pdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ViVGFiID0gc2lnXG4gIGluY2x1ZGUgVGFiXG5cbiAgdmFsIHBhcmVudF9oaWRlIDogdW5pdCAtPiB1bml0XG4gIHZhbCBwYXJlbnRfc2hvd24gOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBQYW5lbCA9IHNpZ1xuICB2YWwgY29udGVudCA6IHVuaXQgLT4gSHRtbF90eXBlcy5kaXYgVHl4bWxfanMuSHRtbDUuZWx0XG4gIHZhbCBvbmxvYWQgOiB1bml0IC0+IHVuaXRcbiAgdmFsIG9ucmVzaXplIDogdW5pdCAtPiB1bml0XG5lbmRcblxubGV0IGlkX2RvbSAoaWQgOiBzdHJpbmcpIDogJ2EgSnMudCA9XG4gIEpzLlVuc2FmZS5jb2VyY2VcbiAgICAoSnMuT3B0LmdldFxuICAgICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgQ29tbW9uLnRvc3NcbiAgICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwidWlfY29tbW9uLmlkX2RvbSA6IGNvdWxkIG5vdCBmaW5kIGlkICVzXCIgaWQpKVxuICAgICAgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpXG5cbmxldCBjcmVhdGVfbW9kYWwgfihpZCA6IHN0cmluZykgfih0aXRsZV9sYWJlbCA6IHN0cmluZylcbiAgICB+KGJvZHkgOiBbPCBIdG1sX3R5cGVzLmRpdl9jb250ZW50X2Z1biBdIEh0bWwuZWx0IEh0bWwubGlzdF93cmFwKVxuICAgIH4oc3VibWl0X2xhYmVsIDogc3RyaW5nKSB+KHN1Ym1pdCA6ICgnc2VsZiBKcy50LCBfIEpzLnQpIERvbS5ldmVudF9saXN0ZW5lcilcbiAgICA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gSHRtbC5lbHQgPVxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6WyBIdG1sLmFfYnV0dG9uX3R5cGUgYFN1Ym1pdDsgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tcHJpbWFyeVwiIF0gXVxuICAgICAgWyBIdG1sLnR4dCBzdWJtaXRfbGFiZWwgXVxuICBpblxuICBsZXQgZm9ybSA9XG4gICAgSHRtbC5mb3JtXG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtY29udGVudFwiIF0gXVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1oZWFkZXJcIiBdIF1cbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmJ1dHRvblxuICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNsb3NlXCIgXTtcbiAgICAgICAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJkYXRhLWRpc21pc3NcIiBcIm1vZGFsXCI7XG4gICAgICAgICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiYXJpYS1sYWJlbFwiIFwiQ2xvc2VcIjtcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBIdG1sLnNwYW5cbiAgICAgICAgICAgICAgICAgIH5hOlsgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImFyaWEtaGlkZGVuXCIgXCJ0cnVlXCIgXVxuICAgICAgICAgICAgICAgICAgWyBIdG1sLmVudGl0eSBcInRpbWVzXCIgXTtcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIEh0bWwuaDQgWyBIdG1sLmNkYXRhIHRpdGxlX2xhYmVsIF07XG4gICAgICAgICAgXTtcbiAgICAgICAgSHRtbC5kaXYgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWJvZHlcIiBdIF0gYm9keTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtZm9vdGVyXCIgXSBdXG4gICAgICAgICAgKFtcbiAgICAgICAgICAgICBIdG1sLmJ1dHRvblxuICAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImRhdGEtZGlzbWlzc1wiIFwibW9kYWxcIjtcbiAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgWyBIdG1sLmNkYXRhIFwiQ2FuY2VsXCIgXTtcbiAgICAgICAgICAgXVxuICAgICAgICAgIEAgWyBidXR0b24gXSk7XG4gICAgICBdXG4gIGluXG4gIGxldCAoKSA9IChUeXhtbF9qcy5Ub19kb20ub2ZfZm9ybSBmb3JtKSMjLm9uc3VibWl0IDo9IHN1Ym1pdCBpblxuICBIdG1sLmRpdlxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsXCI7IFwiZmFkZVwiIF07XG4gICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInRhYmluZGV4XCIgXCItMVwiO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwiZGlhbG9nXCI7XG4gICAgICBdXG4gICAgW1xuICAgICAgSHRtbC5kaXZcbiAgICAgICAgfmE6XG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1kaWFsb2dcIiBdO1xuICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcImRvY3VtZW50XCI7XG4gICAgICAgICAgXVxuICAgICAgICBbIGZvcm0gXTtcbiAgICBdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCBwcm9qZWN0X2lkX21vZGFsX2lkID0gXCJtZW51LWVkaXRvci1wcm9qZWN0LWlkLW1vZGFsXCJcblxubGV0IHByb2plY3RfaWRfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBUZXh0O1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcInByb2plY3QgbmV3XCI7XG4gICAgICAgIEh0bWwuYV9zaXplIDQwO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBsaV9uZXcgPSBIdG1sLmxpIFsgSHRtbC5hIFsgSHRtbC5jZGF0YSBcIk5ldyBwcm9qZWN0XCIgXSBdXG5sZXQgbGlfcHJlZnMgPSBIdG1sLmxpIChNb2RhbF9wcmVmZXJlbmNlcy5jb250ZW50ICgpKVxubGV0IHByb2plY3RfaWRfaW5wdXRfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IHByb2plY3RfaWRfaW5wdXRcblxubGV0IGNvbnRlbnQgKCkgPVxuICBIdG1sLmRpdlxuICAgIFtcbiAgICAgIFR5eG1sX2pzLlIuSHRtbDUudWxcbiAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm5hdlwiOyBcIm5hdi10YWJzXCI7IFwibmF2LWp1c3RpZmllZFwiIF0gXVxuICAgICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAgICAgICAgICAgKGZ1biB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsX3Byb2plY3RfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsX3Byb2plY3RfaXNfY29tcHV0aW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlfY2xhc3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9jdXJyZW50X2lkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGN1cnJlbnRfcHJvamVjdF9pZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfcHJvamVjdF9pZCA9IG1vZGVsX3Byb2plY3RfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsgXCJhY3RpdmVcIiBdXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgc3Bhbl9jbG9zZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBIdG1sLmJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY2xvc2VcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyBIdG1sLmVudGl0eSBcInRpbWVzXCIgXVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIHNwYW5fY2xvc2UpIyMub25jbGlja1xuICAgICAgICAgICAgICAgICAgICAgICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBldmVudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYW5lbF9wcm9qZWN0c19jb250cm9sbGVyLmNsb3NlX3Byb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxfcHJvamVjdF9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gRG9tX2h0bWwuc3RvcFByb3BhZ2F0aW9uIGV2ZW50IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnMuX2ZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXB1dGluZyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2xhc3NlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBcImdseXBoaWNvblwiOyBcImdseXBoaWNvbi1yZWZyZXNoXCIgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFwiZ2x5cGhpY29uXCI7IFwiZ2x5cGhpY29uLW9rXCIgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbF9wcm9qZWN0X2lzX2NvbXB1dGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIFR5eG1sX2pzLlIuSHRtbDUuYV9jbGFzcyBjbGFzc2VzIF0gW11cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBhX3Byb2plY3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5hXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5jZGF0YSAoXCIgXCIgXiBtb2RlbF9wcm9qZWN0X2lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFuX2Nsb3NlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9hIGFfcHJvamVjdCkjIy5vbmNsaWNrXG4gICAgICAgICAgICAgICAgICAgICAgICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFuZWxfcHJvamVjdHNfY29udHJvbGxlci5zZXRfcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbF9wcm9qZWN0X2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIEh0bWwubGkgfmE6WyBIdG1sLmFfY2xhc3MgbGlfY2xhc3MgXSBbIGFfcHJvamVjdCBdKVxuICAgICAgICAgICAgICAgICAgICBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX2NhdGFsb2dcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIExpc3QucmV2X2FwcGVuZCBhY2MgWyBsaV9uZXc7IGxpX3ByZWZzIF0pXG4gICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QubW9kZWwpKTtcbiAgICAgIFVpX2NvbW1vbi5jcmVhdGVfbW9kYWwgfmlkOnByb2plY3RfaWRfbW9kYWxfaWQgfnRpdGxlX2xhYmVsOlwiTmV3IFByb2plY3RcIlxuICAgICAgICB+Ym9keTpcbiAgICAgICAgICBbXG4gICAgICAgICAgICBbJWh0bWxcbiAgICAgICAgICAgICAge3w8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj58fSBbIHByb2plY3RfaWRfaW5wdXQgXSB7fDwvZGl2Pnx9XTtcbiAgICAgICAgICBdXG4gICAgICAgIH5zdWJtaXRfbGFiZWw6XCJDcmVhdGUgUHJvamVjdFwiXG4gICAgICAgIH5zdWJtaXQ6XG4gICAgICAgICAgKERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgICAgbGV0IHNldHRpbmdzX2NsaWVudF9pZCA6IHN0cmluZyA9XG4gICAgICAgICAgICAgICAgIEpzLnRvX3N0cmluZyBwcm9qZWN0X2lkX2lucHV0X2RvbSMjLnZhbHVlXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgUGFuZWxfcHJvamVjdHNfY29udHJvbGxlci5jcmVhdGVfcHJvamVjdCBzZXR0aW5nc19jbGllbnRfaWRcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBDb21tb24ubW9kYWwgfmlkOihcIiNcIiBeIHByb2plY3RfaWRfbW9kYWxfaWQpIH5hY3Rpb246XCJoaWRlXCJcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBKcy5fZmFsc2UpKTtcbiAgICBdXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPSBNb2RhbF9wcmVmZXJlbmNlcy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uXG4gICAgICAoXCIjXCIgXiBwcm9qZWN0X2lkX21vZGFsX2lkKVxuICAgICAgXCJzaG93bi5icy5tb2RhbFwiXG4gICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gcHJvamVjdF9pZF9pbnB1dF9kb20jI2ZvY3VzIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zcGFuIGxpX25ldykjIy5vbmNsaWNrXG4gICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgQ29tbW9uLm1vZGFsIH5pZDooXCIjXCIgXiBwcm9qZWN0X2lkX21vZGFsX2lkKSB+YWN0aW9uOlwic2hvd1wiXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBtb2RlbF9pbnRlcnZlbnRpb24sIHNldF9tb2RlbF9pbnRlcnZlbnRpb24gPSBSZWFjdC5TLmNyZWF0ZSBcIlwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgY3JlYXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyIHBhcmFtIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPVxuICB7XG4gICAgQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wbG90X3BlcmlvZCA9IHBhcmFtLlN0YXRlX3Byb2plY3QucGxvdF9wZXJpb2Q7XG4gICAgQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb24gPSBwYXJhbS5TdGF0ZV9wcm9qZWN0LnBhdXNlX2NvbmRpdGlvbjtcbiAgICBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3NlZWQgPSBwYXJhbS5TdGF0ZV9wcm9qZWN0LnNlZWQ7XG4gICAgQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9zdG9yZV90cmFjZSA9IHBhcmFtLlN0YXRlX3Byb2plY3Quc3RvcmVfdHJhY2U7XG4gIH1cblxubGV0IGNvbnRpbnVlX3NpbXVsYXRpb24gKCkgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBsZXQgcGF1c2VfY29uZGl0aW9uID1cbiAgICAgICAgbGV0IG9wZW4gU3RhdGVfcHJvamVjdCBpblxuICAgICAgICAoUmVhY3QuUy52YWx1ZSBtb2RlbCkubW9kZWxfcGFyYW1ldGVycy5wYXVzZV9jb25kaXRpb25cbiAgICAgIGluXG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX19cbiAgICAgICAgKFN0YXRlX3NpbXVsYXRpb24uY29udGludWVfc2ltdWxhdGlvbiBwYXVzZV9jb25kaXRpb24pXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgcGF1c2Vfc2ltdWxhdGlvbiAoKSA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfXyAoU3RhdGVfc2ltdWxhdGlvbi5wYXVzZV9zaW11bGF0aW9uICgpKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHN0b3Bfc2ltdWxhdGlvbiAoKSA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIFwic3VicGFuZWxfZWRpdG9yX2NvbnRyb2xsZXIuc3RvcFwiKSBpblxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fIChTdGF0ZV9zaW11bGF0aW9uLnN0b3Bfc2ltdWxhdGlvbiAoKSlcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzdGFydF9zaW11bGF0aW9uICgpID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgbGV0IHNpbXVsYXRpb25fcGFyYW1ldGVyID1cbiAgICAgICAgY3JlYXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgKFJlYWN0LlMudmFsdWUgU3RhdGVfcHJvamVjdC5tb2RlbCkuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzXG4gICAgICBpblxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9zaW11bGF0aW9uLnN0YXJ0X3NpbXVsYXRpb24gc2ltdWxhdGlvbl9wYXJhbWV0ZXIpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgaW50ZXJ2ZW5lX3NpbXVsYXRpb24gKCkgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBsZXQgbW9kZWxfcGVydHVyYmF0aW9uID1cbiAgICAgICAgUmVhY3QuUy52YWx1ZSBTdGF0ZV9wZXJ0dXJiYXRpb24ubW9kZWxfaW50ZXJ2ZW50aW9uXG4gICAgICBpblxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9zaW11bGF0aW9uLmludGVydmVuZV9zaW11bGF0aW9uIG1vZGVsX3BlcnR1cmJhdGlvbilcbiAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICB+b2s6KGZ1biB0ZXh0IC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgU3RhdGVfZXJyb3IuYWRkX2Vycm9yIF9fTE9DX19cbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5JbmZvO1xuICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0O1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG4gICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdCkpXG5cbmxldCBmb2N1c19yYW5nZSAocmFuZ2UgOiBMb2MudCkgOiB1bml0ID1cbiAgbGV0IGZpbGVfaWQgPSByYW5nZS5Mb2MuZmlsZSBpblxuICBsZXQgbGluZSA9IHJhbmdlLkxvYy5mcm9tX3Bvc2l0aW9uLkxvYy5saW5lIGluXG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgfmFwcGVuZDp0cnVlIF9fTE9DX19cbiAgICAgICAgKFN0YXRlX2ZpbGUuc2VsZWN0X2ZpbGUgZmlsZV9pZCAoU29tZSBsaW5lKSlcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzaW11bGF0aW9uX3RyYWNlICgpID1cbiAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX18gbWFuYWdlciNzaW11bGF0aW9uX3Jhd190cmFjZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGRhdGFfc3RyaW5nIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID0gSnMuc3RyaW5nIGRhdGFfc3RyaW5nIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lOlwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCJcbiAgICAgICAgICAgICAgICAgIH5maWxlbmFtZTpcInRyYWNlLmpzb25cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgc2ltdWxhdGlvbl9vdXRwdXRzICgpID1cbiAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX18gbWFuYWdlciNzaW11bGF0aW9uX291dHB1dHNfemlwXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gZGF0YV9iaWdzdHJpbmcgLT5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSBUeXBlZF9hcnJheS5CaWdzdHJpbmcudG9fYXJyYXlCdWZmZXIgZGF0YV9iaWdzdHJpbmcgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDb21tb24uc2F2ZUZpbGUgfmRhdGEgfm1pbWU6XCJhcHBsaWNhdGlvbi96aXBcIlxuICAgICAgICAgICAgICAgICAgfmZpbGVuYW1lOlwic2ltdWxhdGlvbl9vdXRwdXRzLnppcFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5vcGVuIEx3dC5JbmZpeFxub3BlbiBMaXN0X3V0aWwuSW5maXhcblxubGV0IHZpc2libGVfb25fc3RhdGVzID8oYV9jbGFzcyA9IFtdKVxuICAgIChzdGF0ZSA6IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc3RhdGUgbGlzdCkgOiBzdHJpbmcgbGlzdCBSZWFjdC5zaWduYWwgPVxuICBsZXQgaGlkZGVuX2NsYXNzID0gWyBcImhpZGRlblwiIF0gaW5cbiAgbGV0IHZpc2libGVfY2xhc3MgPSBbIFwidmlzaWJsZVwiIF0gaW5cbiAgUmVhY3QuUy5iaW5kIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwgKGZ1biBtb2RlbCAtPlxuICAgICAgbGV0IGN1cnJlbnRfc3RhdGUgPSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25fc3RhdGUgbW9kZWwgaW5cbiAgICAgIFJlYWN0LlMuY29uc3RcbiAgICAgICAgKGlmIExpc3QubWVtIGN1cnJlbnRfc3RhdGUgc3RhdGUgdGhlblxuICAgICAgICAgICBhX2NsYXNzIEAgdmlzaWJsZV9jbGFzc1xuICAgICAgICAgZWxzZVxuICAgICAgICAgICBhX2NsYXNzIEAgaGlkZGVuX2NsYXNzKSlcblxubW9kdWxlIEZvcm1QZXJ0dXJiYXRpb24gOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfc2V0dGluZ3NfcGVydHVyYmF0aW9uXCJcblxuICBsZXQgaW5wdXQgPVxuICAgIEh0bWwuaW5wdXRcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYFRleHQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcIlNpbXVsYXRpb24gUGVydHVyYmF0aW9uXCI7XG4gICAgICAgIF1cbiAgICAgICgpXG5cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlsgSHRtbC5hX2J1dHRvbl90eXBlIGBTdWJtaXQ7IEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcImludGVydmVudGlvblwiIF1cblxuICBsZXQgZm9ybSA9XG4gICAgSHRtbC5mb3JtXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImZvcm0taG9yaXpvbnRhbFwiIF1cbiAgICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5QQVVTRUQgXSk7XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1ncm91cFwiIF0gXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMTBcIjsgXCJjb2wteHMtOVwiIF0gXSBbIGlucHV0IF07XG4gICAgICAgICAgICBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIjsgXCJjb2wteHMtM1wiIF0gXSBbIGJ1dHRvbiBdO1xuICAgICAgICAgIF07XG4gICAgICBdXG5cbiAgbGV0IGNvbnRlbnQgKCkgPSBbIGZvcm0gXVxuXG4gIGxldCBvbmxvYWQgKCkgOiB1bml0ID1cbiAgICBsZXQgZm9ybV9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfZm9ybSBmb3JtIGluXG4gICAgbGV0IGlucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBpbnB1dCBpblxuICAgIGxldCBoYW5kbGVyIF8gPVxuICAgICAgbGV0IG1vZGVsX3BlcnR1cmJhdGlvbiA6IHN0cmluZyA9IEpzLnRvX3N0cmluZyBpbnB1dF9kb20jIy52YWx1ZSBpblxuICAgICAgbGV0ICgpID0gU3RhdGVfcGVydHVyYmF0aW9uLnNldF9tb2RlbF9pbnRlcnZlbnRpb24gbW9kZWxfcGVydHVyYmF0aW9uIGluXG4gICAgICBKcy5fdHJ1ZVxuICAgIGluXG5cbiAgICBsZXQgKCkgPVxuICAgICAgZm9ybV9kb20jIy5vbnN1Ym1pdCA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3NldHRpbmdzX2NvbnRyb2xsZXIuaW50ZXJ2ZW5lX3NpbXVsYXRpb24gKCkgaW5cbiAgICAgICAgICAgIEpzLl9mYWxzZSlcbiAgICBpblxuICAgIGxldCAoKSA9IGlucHV0X2RvbSMjLm9uY2hhbmdlIDo9IERvbS5oYW5kbGVyIGhhbmRsZXIgaW5cbiAgICAoKVxuZW5kXG5cbmxldCBzaWduYWxfY2hhbmdlIGlucHV0X2RvbSBzaWduYWxfaGFuZGxlciA9XG4gIGlucHV0X2RvbSMjLm9uY2hhbmdlIDo9XG4gICAgRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gc2lnbmFsX2hhbmRsZXIgKEpzLnRvX3N0cmluZyBpbnB1dF9kb20jIy52YWx1ZSkgaW5cbiAgICAgICAgSnMuX3RydWUpXG5cbm1vZHVsZSBJbnB1dFBhdXNlQ29uZGl0aW9uIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3NldHRpbmdzX3BhdXNlX2NvbmRpdGlvblwiXG5cbiAgbGV0IGlucHV0ID1cbiAgICBIdG1sLmlucHV0XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgVGV4dDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwiW1RdID4gMTAwXCI7XG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfdmFsdWVcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgIG0uU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzLlN0YXRlX3Byb2plY3QucGF1c2VfY29uZGl0aW9uKVxuICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbCk7XG4gICAgICAgIF1cbiAgICAgICgpXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGlucHV0IF1cbiAgbGV0IGRvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBpbnB1dFxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCAoKSA9XG4gICAgICBzaWduYWxfY2hhbmdlIGRvbSAoZnVuIHZhbHVlIC0+XG4gICAgICAgICAgbGV0IHYnID1cbiAgICAgICAgICAgIGlmIHZhbHVlID0gXCJcIiB0aGVuXG4gICAgICAgICAgICAgIFwiW2ZhbHNlXVwiXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTdGF0ZV9wcm9qZWN0LnNldF9wYXVzZV9jb25kaXRpb24gdicpXG4gICAgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBJbnB1dFBsb3RQZXJpb2QgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfc2V0dGluZ3NfcGxvdF9wZXJpb2RcIlxuXG4gIGxldCBmb3JtYXRfZmxvYXRfc3RyaW5nIHZhbHVlID1cbiAgICBsZXQgbiA9IHN0cmluZ19vZl9mbG9hdCB2YWx1ZSBpblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIG4gaW5cbiAgICBpZiBsZW5ndGggPiAwICYmIFN0cmluZy5nZXQgbiAobGVuZ3RoIC0gMSkgPSAnLicgdGhlblxuICAgICAgbiBeIFwiMFwiXG4gICAgZWxzZVxuICAgICAgblxuXG4gIGxldCBpbnB1dCA9XG4gICAgSHRtbC5pbnB1dFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgTnVtYmVyO1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwidGltZSB1bml0c1wiO1xuICAgICAgICAgIEh0bWwuYV9pbnB1dF9taW4gKGBOdW1iZXIgMCk7XG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfdmFsdWVcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgIGZvcm1hdF9mbG9hdF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICBtLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVycy5TdGF0ZV9wcm9qZWN0LnBsb3RfcGVyaW9kKVxuICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbCk7XG4gICAgICAgIF1cbiAgICAgICgpXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGlucHV0IF1cblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgaW5wdXRfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IGlucHV0IGluXG4gICAgbGV0ICgpID1cbiAgICAgIHNpZ25hbF9jaGFuZ2UgaW5wdXRfZG9tIChmdW4gdmFsdWUgLT5cbiAgICAgICAgICBsZXQgcmVzZXRfdmFsdWUgKCkgPVxuICAgICAgICAgICAgbGV0IG9sZF92YWx1ZSA9XG4gICAgICAgICAgICAgIChSZWFjdC5TLnZhbHVlIFN0YXRlX3Byb2plY3QubW9kZWwpLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgIC5TdGF0ZV9wcm9qZWN0LnBsb3RfcGVyaW9kXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaW5wdXRfZG9tIyMudmFsdWUgOj0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfZmxvYXQgb2xkX3ZhbHVlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgbmV3X3ZhbHVlID0gZmxvYXRfb2Zfc3RyaW5nIHZhbHVlIGluXG4gICAgICAgICAgICBpZiBuZXdfdmFsdWUgPCAwLiB0aGVuXG4gICAgICAgICAgICAgIHJlc2V0X3ZhbHVlICgpXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIFN0YXRlX3Byb2plY3Quc2V0X3Bsb3RfcGVyaW9kIG5ld192YWx1ZVxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+IHJlc2V0X3ZhbHVlICgpKVxuICAgIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgRGl2RXJyb3JNZXNzYWdlIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcImNvbmZpZ3VyYXRpb25fZXJyb3JfZGl2XCJcbiAgbGV0IG1lc3NhZ2VfbmF2X2luY19pZCA9IFwicGFuZWxfc2V0dGluZ3NfbWVzc2FnZV9uYXZfaW5jX2lkXCJcbiAgbGV0IG1lc3NhZ2VfbmF2X2RlY19pZCA9IFwicGFuZWxfc2V0dGluZ3NfbWVzc2FnZV9uYXZfZGVjX2lkXCJcbiAgbGV0IG1lc3NhZ2VfZmlsZV9sYWJlbF9pZCA9IFwicGFuZWxfc2V0dGluZ3NfbWVzc2FnZV9maWxlX2xhYmVsXCJcbiAgbGV0IGVycm9yX2luZGV4LCBzZXRfZXJyb3JfaW5kZXggPSBSZWFjdC5TLmNyZWF0ZSBOb25lXG5cbiAgbGV0IGRvbnRfZ2NfbWUgPVxuICAgIFJlYWN0LlMubDFcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgKG1hdGNoIFJlYWN0LlMudmFsdWUgZXJyb3JfaW5kZXggd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBzZXRfZXJyb3JfaW5kZXggKFNvbWUgMClcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKSkpXG4gICAgICBTdGF0ZV9lcnJvci5lcnJvcnNcblxuICAoKiBpZiB0aGVyZSBhcmUgbGVzcyBvciBubyBlcnJvcnMgdGhlIGluZGV4IG5lZWRzIHRvIGJlIHVwZGF0ZWQgKilcbiAgbGV0IHNhbml0aXplX2luZGV4IChpbmRleCA6IGludCBvcHRpb24pIGVycm9ycyA6IGludCBvcHRpb24gPVxuICAgIGxldCAoKSA9IGlnbm9yZSBkb250X2djX21lIGluXG4gICAgbWF0Y2ggaW5kZXgsIGVycm9ycyB3aXRoXG4gICAgfCBOb25lLCBbXSAtPiBOb25lXG4gICAgfCBOb25lLCBfIDo6IF8gLT4gU29tZSAwXG4gICAgfCBTb21lIF8sIFtdIC0+IE5vbmVcbiAgICB8IFNvbWUgaW5kZXgsIGVycm9yIC0+XG4gICAgICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGggZXJyb3IgaW5cbiAgICAgIGlmIGluZGV4ID4gbGVuZ3RoIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBzZXRfZXJyb3JfaW5kZXggKFNvbWUgMCkgaW5cbiAgICAgICAgU29tZSAwXG4gICAgICApIGVsc2UgaWYgMCA+IGluZGV4IHRoZW4gKFxuICAgICAgICBsZXQgaW5kZXggPSBTb21lIChMaXN0Lmxlbmd0aCBlcnJvciAtIDEpIGluXG4gICAgICAgIGxldCAoKSA9IHNldF9lcnJvcl9pbmRleCBpbmRleCBpblxuICAgICAgICBpbmRleFxuICAgICAgKSBlbHNlXG4gICAgICAgIFNvbWUgaW5kZXhcblxuICBsZXQgZ2V0X21lc3NhZ2UgKGluZGV4IDogaW50IG9wdGlvbikgZXJyb3JzIDogQXBpX3R5cGVzX3QubWVzc2FnZSBvcHRpb24gPVxuICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgIChmdW4gbiAtPiBTb21lIChMaXN0Lm50aCBlcnJvcnMgbikpXG4gICAgICAoc2FuaXRpemVfaW5kZXggaW5kZXggZXJyb3JzKVxuXG4gIGxldCBtZXNhZ2VfbmF2X3RleHQgPVxuICAgIFJlYWN0LlMubDJcbiAgICAgIChmdW4gaW5kZXggZXJyb3IgLT5cbiAgICAgICAgbWF0Y2ggaW5kZXgsIGVycm9yIHdpdGhcbiAgICAgICAgfCBOb25lLCBbXSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBfLCBbXSAtPiBcIlwiXG4gICAgICAgIHwgTm9uZSwgXyA6OiBfIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIGluZGV4LCAoXyA6OiBfIGFzIGVycm9ycykgLT5cbiAgICAgICAgICBGb3JtYXQuc3ByaW50ZiBcIiVkLyVkXCIgKGluZGV4ICsgMSkgKExpc3QubGVuZ3RoIGVycm9ycykpXG4gICAgICBlcnJvcl9pbmRleCBTdGF0ZV9lcnJvci5lcnJvcnNcblxuICBsZXQgYV9jbGFzcyA9XG4gICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgIChSZWFjdC5TLmJpbmQgU3RhdGVfZXJyb3IuZXJyb3JzIChmdW4gZXJyb3IgLT5cbiAgICAgICAgICAgUmVhY3QuUy5jb25zdFxuICAgICAgICAgICAgIChtYXRjaCBlcnJvciB3aXRoXG4gICAgICAgICAgICAgfCBbXSB8IFsgXyBdIC0+IFsgXCJoaWRlXCIgXVxuICAgICAgICAgICAgIHwgXyA6OiBfIDo6IF8gLT4gWyBcImVycm9yLXNwYW5cIjsgXCJjbGlja2FibGVcIiBdKSkpXG5cbiAgbGV0IG1lc3NhZ2VfbmF2X2RlYyA9XG4gICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2lkIG1lc3NhZ2VfbmF2X2RlY19pZDsgYV9jbGFzcyBdIFsgSHRtbC50eHQgXCIgwqsgXCIgXVxuXG4gIGxldCBtZXNzYWdlX25hdl9pbmMgPVxuICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9pZCBtZXNzYWdlX25hdl9pbmNfaWQ7IGFfY2xhc3MgXSBbIEh0bWwudHh0IFwiIMK7IFwiIF1cblxuICBsZXQgbWVzc2FnZV9uYXYgPVxuICAgIFsgbWVzc2FnZV9uYXZfZGVjOyBUeXhtbF9qcy5SLkh0bWwudHh0IG1lc2FnZV9uYXZfdGV4dDsgbWVzc2FnZV9uYXZfaW5jIF1cblxuICBsZXQgZmlsZV9sYWJlbF90ZXh0ID1cbiAgICBSZWFjdC5TLmwyXG4gICAgICAoZnVuIGluZGV4IGVycm9yIC0+XG4gICAgICAgIGxldCByYW5nZSA9XG4gICAgICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAgICAgKGZ1biBtZXNzYWdlIC0+IG1lc3NhZ2UuUmVzdWx0X3V0aWwucmFuZ2UpXG4gICAgICAgICAgICAoZ2V0X21lc3NhZ2UgaW5kZXggZXJyb3IpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIHJhbmdlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIHJhbmdlIC0+IEZvcm1hdC5zcHJpbnRmIFwiWyVzXVwiIHJhbmdlLkxvYy5maWxlKVxuICAgICAgZXJyb3JfaW5kZXggU3RhdGVfZXJyb3IuZXJyb3JzXG5cbiAgbGV0IGZpbGVfbGFiZWwgPVxuICAgIEh0bWwuc3BhblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgbWVzc2FnZV9maWxlX2xhYmVsX2lkO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZXJyb3Itc3BhblwiOyBcImNsaWNrYWJsZVwiIF07XG4gICAgICAgIF1cbiAgICAgIFsgVHl4bWxfanMuUi5IdG1sLnR4dCBmaWxlX2xhYmVsX3RleHQgXVxuXG4gIGxldCBlcnJvcl9tZXNzYWdlX3RleHQgPVxuICAgIFJlYWN0LlMubDJcbiAgICAgIChmdW4gaW5kZXggZXJyb3IgLT5cbiAgICAgICAgbWF0Y2ggZ2V0X21lc3NhZ2UgaW5kZXggZXJyb3Igd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICB8IFNvbWUgbWVzc2FnZSAtPiBGb3JtYXQuc3ByaW50ZiBcIiAlcyBcIiBtZXNzYWdlLlJlc3VsdF91dGlsLnRleHQpXG4gICAgICBlcnJvcl9pbmRleCBTdGF0ZV9lcnJvci5lcnJvcnNcblxuICBsZXQgZXJyb3JfbWVzc2FnZSA9XG4gICAgSHRtbC5zcGFuXG4gICAgICB+YTpbIEh0bWwuYV9pZCBpZDsgSHRtbC5hX2NsYXNzIFsgXCJlcnJvci1zcGFuXCIgXSBdXG4gICAgICBbIFR5eG1sX2pzLlIuSHRtbC50eHQgZXJyb3JfbWVzc2FnZV90ZXh0IF1cblxuICBsZXQgYWxlcnRfbWVzc2FnZXMgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKFJlYWN0LlMuYmluZCBTdGF0ZV9lcnJvci5lcnJvcnMgKGZ1biBlcnJvciAtPlxuICAgICAgICAgICAgICAgICBSZWFjdC5TLmNvbnN0XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIGVycm9yIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFtdIC0+IFsgXCJhbGVydC1zbVwiOyBcImFsZXJ0XCIgXVxuICAgICAgICAgICAgICAgICAgIHwgXyA6OiBfIC0+IFsgXCJhbGVydC1zbVwiOyBcImFsZXJ0XCI7IFwiYWxlcnQtZGFuZ2VyXCIgXSkpKTtcbiAgICAgICAgXVxuICAgICAgKG1lc3NhZ2VfbmF2IEAgWyBmaWxlX2xhYmVsOyBlcnJvcl9tZXNzYWdlIF0pXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPVxuICAgIFsgYWxlcnRfbWVzc2FnZXMgXVxuXG4gIGxldCBmaWxlX2NsaWNrX2hhbmRsZXIgKCkgPVxuICAgIGxldCBkb20gPSBUeXhtbF9qcy5Ub19kb20ub2Zfc3BhbiBmaWxlX2xhYmVsIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGRvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBcImZpbGVfY2xpY2tfaGFuZGxlclwiKSBpblxuICAgICAgICAgICAgbGV0IG1lc3NhZ2UgOiBBcGlfdHlwZXNfdC5tZXNzYWdlIG9wdGlvbiA9XG4gICAgICAgICAgICAgIGdldF9tZXNzYWdlXG4gICAgICAgICAgICAgICAgKFJlYWN0LlMudmFsdWUgZXJyb3JfaW5kZXgpXG4gICAgICAgICAgICAgICAgKFJlYWN0LlMudmFsdWUgU3RhdGVfZXJyb3IuZXJyb3JzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCByYW5nZSA9XG4gICAgICAgICAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgICAgICAgICAoZnVuIG1lc3NhZ2UgLT4gbWVzc2FnZS5SZXN1bHRfdXRpbC5yYW5nZSlcbiAgICAgICAgICAgICAgICBtZXNzYWdlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgbWF0Y2ggcmFuZ2Ugd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgcmFuZ2UgLT4gUGFuZWxfc2V0dGluZ3NfY29udHJvbGxlci5mb2N1c19yYW5nZSByYW5nZVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuICAgICgpXG5cbiAgbGV0IGluZGV4X2NsaWNrX2hhbmRsZXIgZG9tIGRlbHRhID1cbiAgICBsZXQgKCkgPVxuICAgICAgZG9tIyMub25jbGljayA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIFwiaW5kZXhfY2xpY2tfaGFuZGxlclwiKSBpblxuICAgICAgICAgICAgbGV0IGluZGV4IDogaW50IG9wdGlvbiA9XG4gICAgICAgICAgICAgIHNhbml0aXplX2luZGV4XG4gICAgICAgICAgICAgICAgKFJlYWN0LlMudmFsdWUgZXJyb3JfaW5kZXgpXG4gICAgICAgICAgICAgICAgKFJlYWN0LlMudmFsdWUgU3RhdGVfZXJyb3IuZXJyb3JzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBpbmRleCA9IE9wdGlvbl91dGlsLm1hcCBkZWx0YSBpbmRleCBpblxuICAgICAgICAgICAgbGV0IGluZGV4IDogaW50IG9wdGlvbiA9XG4gICAgICAgICAgICAgIHNhbml0aXplX2luZGV4IGluZGV4IChSZWFjdC5TLnZhbHVlIFN0YXRlX2Vycm9yLmVycm9ycylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBzZXRfZXJyb3JfaW5kZXggaW5kZXggaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG4gICAgKClcblxuICBsZXQgaW5jX2NsaWNrX2hhbmRsZXIgKCkgPVxuICAgIGxldCBkb20gPSBUeXhtbF9qcy5Ub19kb20ub2Zfc3BhbiBtZXNzYWdlX25hdl9kZWMgaW5cbiAgICBsZXQgKCkgPSBpbmRleF9jbGlja19oYW5kbGVyIGRvbSAoZnVuIGluZGV4IC0+IGluZGV4ICsgMSkgaW5cbiAgICAoKVxuXG4gIGxldCBkZWNfY2xpY2tfaGFuZGxlciAoKSA9XG4gICAgbGV0IGRvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9zcGFuIG1lc3NhZ2VfbmF2X2luYyBpblxuICAgIGxldCAoKSA9IGluZGV4X2NsaWNrX2hhbmRsZXIgZG9tIChmdW4gaW5kZXggLT4gaW5kZXggLSAxKSBpblxuICAgICgpXG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0ICgpID0gZmlsZV9jbGlja19oYW5kbGVyICgpIGluXG4gICAgbGV0ICgpID0gaW5jX2NsaWNrX2hhbmRsZXIgKCkgaW5cbiAgICBsZXQgKCkgPSBkZWNfY2xpY2tfaGFuZGxlciAoKSBpblxuICAgICgpXG5lbmRcblxubW9kdWxlIEJ1dHRvblN0YXJ0IDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3NldHRpbmdzX3N0YXJ0X2J1dHRvblwiXG5cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgICAgICBUeXhtbF9qcy5SLmZpbHRlcl9hdHRyaWIgKEh0bWwuYV9kaXNhYmxlZCAoKSlcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgICAgU3RhdGVfZmlsZS5jdXJyZW50ID0gU29tZSB7IFN0YXRlX2ZpbGUub3V0X29mX3N5bmM7IF8gfTtcbiAgICAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgICAgIG91dF9vZl9zeW5jXG4gICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgIFN0YXRlX2ZpbGUubW9kZWwpO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJzdGFydFwiIF1cblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9IFsgYnV0dG9uIF1cblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgc3RhcnRfYnV0dG9uX2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gYnV0dG9uIGluXG4gICAgbGV0ICgpID1cbiAgICAgIHN0YXJ0X2J1dHRvbl9kb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUGFuZWxfc2V0dGluZ3NfY29udHJvbGxlci5zdGFydF9zaW11bGF0aW9uICgpIGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgQnV0dG9uQ2xlYXIgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfc2V0dGluZ3NfY2xlYXJfYnV0dG9uXCJcblxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJjbGVhclwiIF1cblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9IFsgYnV0dG9uIF1cblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBidXR0b24gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgZG9tIyMub25jbGljayA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3NldHRpbmdzX2NvbnRyb2xsZXIuc3RvcF9zaW11bGF0aW9uICgpIGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuICAgICgpXG5lbmRcblxubW9kdWxlIEJ1dHRvblBhdXNlIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3NldHRpbmdzX3BhdXNlX2J1dHRvblwiXG5cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLmNkYXRhIFwicGF1c2VcIiBdXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGJ1dHRvbiBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0IGJ1dHRvbl9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGJ1dHRvbiBpblxuICAgIGxldCAoKSA9XG4gICAgICBidXR0b25fZG9tIyMub25jbGljayA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3NldHRpbmdzX2NvbnRyb2xsZXIucGF1c2Vfc2ltdWxhdGlvbiAoKSBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBCdXR0b25UcmFjZSA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9zZXR0aW5nc19nZXRfdHJhY2VfYnV0dG9uXCJcblxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbDUuYV9jbGFzc1xuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgICAgICAgIChpZlxuICAgICAgICAgICAgICAgICAgICBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5zdG9yZV90cmFjZVxuICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBbIFwiZGlzYWJsZWRcIiBdKVxuICAgICAgICAgICAgICAgICBAIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF0pXG4gICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsKTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLmNkYXRhIFwiZ2V0IHRyYWNlXCIgXVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBidXR0b24gXVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCBidXR0b25fZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBidXR0b24gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgYnV0dG9uX2RvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9zZXR0aW5nc19jb250cm9sbGVyLnNpbXVsYXRpb25fdHJhY2UgKCkgaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgQnV0dG9uT3V0cHV0cyA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9zZXR0aW5nc19vdXRwdXRzX2J1dHRvblwiXG5cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLmNkYXRhIFwiQWxsIG91dHB1dHNcIiBdXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGJ1dHRvbiBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0IGJ1dHRvbl9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGJ1dHRvbiBpblxuICAgIGxldCAoKSA9XG4gICAgICBidXR0b25fZG9tIyMub25jbGljayA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3NldHRpbmdzX2NvbnRyb2xsZXIuc2ltdWxhdGlvbl9vdXRwdXRzICgpIGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuICAgICgpXG5lbmRcblxubW9kdWxlIEJ1dHRvbkNvbnRpbnVlIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3NldHRpbmdzX2NvbnRpbnVlX2J1dHRvblwiXG5cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLmNkYXRhIFwiY29udGludWVcIiBdXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGJ1dHRvbiBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0IGJ1dHRvbl9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGJ1dHRvbiBpblxuICAgIGxldCAoKSA9XG4gICAgICBidXR0b25fZG9tIyMub25jbGljayA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3NldHRpbmdzX2NvbnRyb2xsZXIuY29udGludWVfc2ltdWxhdGlvbiAoKSBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBEaXZTdGF0dXNJbmRpY2F0b3IgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwic2V0dGluZ19zdGF0dXNfaW5kaWNhdG9yXCJcblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9XG4gICAgbGV0IGRlYnVnID1cbiAgICAgIEh0bWwuZGl2XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwudHh0XG4gICAgICAgICAgICAoUmVhY3QuUy5iaW5kIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICAgICAgICBsZXQgbGFiZWwgPVxuICAgICAgICAgICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc3RhdGVfdG9fc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX3N0YXRlIG1vZGVsKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBSZWFjdC5TLmNvbnN0IGxhYmVsKSk7XG4gICAgICAgIF1cbiAgICBpblxuICAgIFsgSHRtbC5kaXYgfmE6WyBIdG1sLmFfaWQgaWQgXSAoVWlfY29tbW9uLmxldmVsIH5kZWJ1ZyAoKSkgXVxuXG4gIGxldCBvbmxvYWQgKCkgPSAoKVxuZW5kXG5cbm1vZHVsZSBSdW5uaW5nUGFuZWxMYXlvdXQgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwic2V0dGluZ3NfcnVuZXRpbWVfbGF5b3V0XCJcblxuICBsZXQgcHJvZ3Jlc3NfYmFyIChwZXJjZW50X3NpZ25hbCA6IGludCBUeXhtbF9qcy5SLkh0bWwud3JhcClcbiAgICAgICh2YWx1ZV9zaWduYWwgOiBzdHJpbmcgUmVhY3Quc2lnbmFsKSA9XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcInByb2dyZXNzYmFyXCI7XG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLlVuc2FmZS5pbnRfYXR0cmliIFwiYXJpYS12YWx1ZW5vd1wiIHBlcmNlbnRfc2lnbmFsO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLmludF9hdHRyaWIgXCJhcmlhLXZhbHVlbWluXCIgMDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5pbnRfYXR0cmliIFwiYXJpYS12YWx1ZW1heFwiIDEwMDtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJzdHlsZVwiXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgIChmdW4gcyAtPiBGb3JtYXQuc3ByaW50ZiBcIndpZHRoOiAlZCUlO1wiIHMpXG4gICAgICAgICAgICAgICBwZXJjZW50X3NpZ25hbCk7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJwcm9ncmVzcy1iYXJcIiBdO1xuICAgICAgICBdXG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC50eHRcbiAgICAgICAgICAoUmVhY3QuUy5iaW5kIHZhbHVlX3NpZ25hbCAoZnVuIHZhbHVlIC0+IFJlYWN0LlMuY29uc3QgdmFsdWUpKTtcbiAgICAgIF1cblxuICBsZXQgdGltZV9wcm9ncmVzc19iYXIgKCkgPVxuICAgIHByb2dyZXNzX2JhclxuICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBsZXQgdGltZV9wZXJjZW50IDogaW50IG9wdGlvbiA9XG4gICAgICAgICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAgICAgICAgKGZ1biAoc3RhdHVzIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgICAgICAgICAgICBzdGF0dXMuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlKVxuICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCB0aW1lX3BlcmNlbnQgOiBpbnQgPSBPcHRpb25fdXRpbC51bnNvbWUgMTAwIHRpbWVfcGVyY2VudCBpblxuICAgICAgICAgICB0aW1lX3BlcmNlbnQpXG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBsZXQgdGltZSA6IGZsb2F0IG9wdGlvbiA9XG4gICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAoZnVuIChzdGF0dXMgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIC0+XG4gICAgICAgICAgICAgICAgIHN0YXR1cy5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lKVxuICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCB0aW1lIDogZmxvYXQgPSBPcHRpb25fdXRpbC51bnNvbWUgMC4wIHRpbWUgaW5cbiAgICAgICAgICAgc3RyaW5nX29mX2Zsb2F0IHRpbWUpXG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuXG4gIGxldCBldmVudF9wcm9ncmVzc19iYXIgKCkgPVxuICAgIHByb2dyZXNzX2JhclxuICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBsZXQgZXZlbnRfcGVyY2VudGFnZSA6IGludCBvcHRpb24gPVxuICAgICAgICAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgICAgICAgIChmdW4gKHN0YXR1cyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbykgLT5cbiAgICAgICAgICAgICAgICAgc3RhdHVzLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2UpXG4gICAgICAgICAgICAgICBzaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGV2ZW50X3BlcmNlbnRhZ2UgOiBpbnQgPVxuICAgICAgICAgICAgIE9wdGlvbl91dGlsLnVuc29tZSAxMDAgZXZlbnRfcGVyY2VudGFnZVxuICAgICAgICAgICBpblxuICAgICAgICAgICBldmVudF9wZXJjZW50YWdlKVxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgICAgbGV0IGV2ZW50IDogaW50IG9wdGlvbiA9XG4gICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAoZnVuIChzdGF0dXMgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIC0+XG4gICAgICAgICAgICAgICAgIHN0YXR1cy5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudClcbiAgICAgICAgICAgICAgIHNpbXVsYXRpb25faW5mb1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgZXZlbnQgOiBpbnQgPSBPcHRpb25fdXRpbC51bnNvbWUgMCBldmVudCBpblxuICAgICAgICAgICBzdHJpbmdfb2ZfaW50IGV2ZW50KVxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxuICBsZXQgdHJhY2tlZF9ldmVudHMgc3RhdGUgPVxuICAgIGxldCB0cmFja2VkX2V2ZW50cyA6IGludCBvcHRpb24gPVxuICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAoZnVuIChzdGF0dXMgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIC0+XG4gICAgICAgICAgc3RhdHVzLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMpXG4gICAgICAgIHN0YXRlXG4gICAgaW5cbiAgICBtYXRjaCB0cmFja2VkX2V2ZW50cyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgdHJhY2tlZF9ldmVudHMgLT5cbiAgICAgIGlmIHRyYWNrZWRfZXZlbnRzID4gMCB0aGVuXG4gICAgICAgIFNvbWUgdHJhY2tlZF9ldmVudHNcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuXG4gIGxldCB0cmFja2VkX2V2ZW50c19jb3VudCAoKSA9XG4gICAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBtYXRjaCB0cmFja2VkX2V2ZW50cyBzaW11bGF0aW9uX2luZm8gd2l0aFxuICAgICAgICAgICB8IFNvbWUgdHJhY2tlZF9ldmVudHMgLT4gc3RyaW5nX29mX2ludCB0cmFja2VkX2V2ZW50c1xuICAgICAgICAgICB8IE5vbmUgLT4gXCIgXCIpXG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuXG4gIGxldCB0cmFja2VkX2V2ZW50c19sYWJlbCAoKSA9XG4gICAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBtYXRjaCB0cmFja2VkX2V2ZW50cyBzaW11bGF0aW9uX2luZm8gd2l0aFxuICAgICAgICAgICB8IFNvbWUgXyAtPiBcInRyYWNrZWQgZXZlbnRzXCJcbiAgICAgICAgICAgfCBOb25lIC0+IFwiIFwiKVxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxuICBsZXQgZWZmaWNpZW5jeV9kZXRhaWwgfmN1cnJlbnRfZXZlbnQgdCA9XG4gICAgbGV0IGFsbCA9XG4gICAgICBmbG9hdF9vZl9pbnRcbiAgICAgICAgKHQuQ291bnRlci5FZmZpY2llbmN5Lm5vX21vcmVfYmluYXJ5XG4gICAgICAgKyB0LkNvdW50ZXIuRWZmaWNpZW5jeS5ub19tb3JlX3VuYXJ5XG4gICAgICAgKyB0LkNvdW50ZXIuRWZmaWNpZW5jeS5jbGFzaGluZ19pbnN0YW5jZVxuICAgICAgICsgdC5Db3VudGVyLkVmZmljaWVuY3kudGltZV9jb3JyZWN0aW9uKVxuICAgIGluXG4gICAgbGV0IGV2ZW50cyA9IGZsb2F0X29mX2ludCBjdXJyZW50X2V2ZW50IGluXG4gICAgSHRtbC5wXG4gICAgICBbXG4gICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkBbJS4yZiUlIG9mIGV2ZW50IGxvb3BzIHdlcmUgcHJvZHVjdGl2ZS4ldEBdXCJcbiAgICAgICAgICAgICAoMTAwLiAqLiBldmVudHMgLy4gKGFsbCArLiBldmVudHMpKVxuICAgICAgICAgICAgIChmdW4gZiAtPiBpZiBhbGwgPiAwLiB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCJAIE51bGwgZXZlbnQgY2F1c2U6XCIpKTtcbiAgICAgIF1cbiAgICA6OiAoKGlmIHQuQ291bnRlci5FZmZpY2llbmN5Lm5vX21vcmVfdW5hcnkgPiAwIHRoZW5cbiAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgIChIdG1sLnBcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgIFwiVmFsaWQgZW1iZWRkaW5nIGJ1dCBubyBsb25nZXIgdW5hcnkgd2hlbiByZXF1aXJlZDogXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICUuMmYlJVwiXG4gICAgICAgICAgICAgICAgICAgICAgICgxMDAuXG4gICAgICAgICAgICAgICAgICAgICAgICouIGZsb2F0X29mX2ludCB0LkNvdW50ZXIuRWZmaWNpZW5jeS5ub19tb3JlX3VuYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgIC8uIGFsbCkpO1xuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgJCQgKChpZiB0LkNvdW50ZXIuRWZmaWNpZW5jeS5ub19tb3JlX2JpbmFyeSA+IDAgdGhlblxuICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgKEh0bWwucFxuICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJWYWxpZCBlbWJlZGRpbmcgYnV0IG5vdCBiaW5hcnkgd2hlbiByZXF1aXJlZDogJS4yZiUlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKDEwMC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKi4gZmxvYXRfb2ZfaW50IHQuQ291bnRlci5FZmZpY2llbmN5Lm5vX21vcmVfYmluYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8uIGFsbCkpO1xuICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgICAgJCQgKChpZiB0LkNvdW50ZXIuRWZmaWNpZW5jeS5jbGFzaGluZ19pbnN0YW5jZSA+IDAgdGhlblxuICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgKEh0bWwucFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJDbGFzaGluZyBpbnN0YW5jZTogJS4yZiUlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEwMC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi4gZmxvYXRfb2ZfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5Db3VudGVyLkVmZmljaWVuY3kuY2xhc2hpbmdfaW5zdGFuY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy4gYWxsKSk7XG4gICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICAgICAkJCAoKGlmIHQuQ291bnRlci5FZmZpY2llbmN5LnRpbWVfY29ycmVjdGlvbiA+IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgICAgKEh0bWwucFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQZXJ0dXJiYXRpb24gaW50ZXJydXB0aW5nIHRpbWUgYWR2YW5jZTogJS4yZiUlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEwMC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi4gZmxvYXRfb2ZfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5Db3VudGVyLkVmZmljaWVuY3kudGltZV9jb3JyZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8uIGFsbCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgICAgICAgICAgJCQgW10pKSkpXG5cbiAgbGV0IGRvbnRfZ2NfbWUgPSByZWYgW11cblxuICBsZXQgY29udGVudCAoKSA6IEh0bWxfdHlwZXMuZGl2X2NvbnRlbnQgVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9XG4gICAgbGV0IHN0YXRlX2xvZywgc2V0X3N0YXRlX2xvZyA9IFJlYWN0aXZlRGF0YS5STGlzdC5jcmVhdGUgW10gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgZG9udF9nY19tZSA6PVxuICAgICAgICBbXG4gICAgICAgICAgTHd0X3JlYWN0LlMubWFwX3NcbiAgICAgICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgc3RhdHVzIC0+XG4gICAgICAgICAgICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZWZmaWNpZW5jeVxuICAgICAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGVmZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudF9ldmVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdGl2ZURhdGEuUkxpc3Quc2V0IHNldF9zdGF0ZV9sb2dcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZmZpY2llbmN5X2RldGFpbCB+Y3VycmVudF9ldmVudCBlZmYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG4gICAgICAgICAgICAgICAgfnN0b3BwZWQ6KGZ1biBfIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3Quc2V0IHNldF9zdGF0ZV9sb2cgW10gaW5cbiAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICAoKSlcbiAgICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWw7XG4gICAgICAgIF1cbiAgICBpblxuXG4gICAgW1xuICAgICAgWyVodG1sXG4gICAgICAgIHt8XG4gICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBpZD1cInx9XG4gICAgICAgICAgaWRcbiAgICAgICAgICB7fFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cbiAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiPlxuICAgICAgICAgICAgfH1cbiAgICAgICAgICBbIGV2ZW50X3Byb2dyZXNzX2JhciAoKSBdXG4gICAgICAgICAge3xcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0zXCI+ZXZlbnRzPC9kaXY+XG4gICAgIDwvZGl2PlxuICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtOVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzXCI+XG4gICAgICAgICAgICB8fVxuICAgICAgICAgIFsgdGltZV9wcm9ncmVzc19iYXIgKCkgXVxuICAgICAgICAgIHt8XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtM1wiPnRpbWU8L2Rpdj5cbiAgICAgPC9kaXY+XG4gICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy05XCI+XG4gICAgICAgICAgIHx9XG4gICAgICAgICAgWyB0cmFja2VkX2V2ZW50c19jb3VudCAoKSBdXG4gICAgICAgICAge3xcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtM1wiPlxuICAgICAgICAgICB8fVxuICAgICAgICAgIFsgdHJhY2tlZF9ldmVudHNfbGFiZWwgKCkgXVxuICAgICAgICAgIHt8XG4gICAgICAgIDwvZGl2PlxuICAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInZpc2libGUtbWQtYmxvY2sgdmlzaWJsZS1sZy1ibG9ja1wiPlxufH1cbiAgICAgICAgICBbIFR5eG1sX2pzLlIuSHRtbC5kaXYgc3RhdGVfbG9nIF1cbiAgICAgICAgICB7fFxuPC9kaXY+XG48L2Rpdj5cbiAgIHx9XTtcbiAgICBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9ICgpXG5lbmRcblxubGV0IHN0b3BwZWRfYm9keSAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbDUuZWx0ID1cbiAgbGV0IHN0b3BwZWRfcm93ID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzXG4gICAgICAgICAgICAgICB+YV9jbGFzczpbIFwiZm9ybS1ncm91cFwiOyBcImZvcm0tZ3JvdXAtc21cIiBdXG4gICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uU1RPUFBFRCBdKTtcbiAgICAgICAgXVxuICAgICAgWyVodG1sXG4gICAgICAgIHt8XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMSBjb2wtbWQtMiBjb2wteHMtMiBjb250cm9sLWxhYmVsXCIgZm9yPVwifH1cbiAgICAgICAgICBJbnB1dFBsb3RQZXJpb2QuaWRcbiAgICAgICAgICB7fFwiPlBsb3QgcGVyaW9kPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBjb2wteHMtM1wiPnx9XG4gICAgICAgICAgKElucHV0UGxvdFBlcmlvZC5jb250ZW50ICgpKVxuICAgICAgICAgIHt8PC9kaXY+fH1dXG4gIGluXG4gIGxldCBwYXVzZWRfcm93ID0gRm9ybVBlcnR1cmJhdGlvbi5jb250ZW50ICgpIGluXG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzXG4gICAgICAgICAgICAgfmFfY2xhc3M6WyBcInBhbmVsLWJvZHlcIjsgXCJwYW5lbC1jb250cm9sc1wiIF1cbiAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uU1RPUFBFRDsgU3RhdGVfc2ltdWxhdGlvbi5QQVVTRUQgXSk7XG4gICAgICBdXG4gICAgKFslaHRtbFxuICAgICAgIHt8XG4gICAgICAgICA8Zm9ybSBjbGFzcz1cImZvcm0taG9yaXpvbnRhbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMSBjb2wtc20tMiBoaWRkZW4teHMgY29udHJvbC1sYWJlbFwiIGZvcj1cInx9XG4gICAgICAgICBJbnB1dFBhdXNlQ29uZGl0aW9uLmlkXG4gICAgICAgICB7fFwiPlBhdXNlIGlmPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBjb2wtc20tMyBjb2wteHMtNVwiPnx9XG4gICAgICAgICAoSW5wdXRQYXVzZUNvbmRpdGlvbi5jb250ZW50ICgpKVxuICAgICAgICAge3w8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOSBjb2wtbWQtOCBjb2wteHMtN1wiPnx9XG4gICAgICAgICAoRGl2RXJyb3JNZXNzYWdlLmNvbnRlbnQgKCkpXG4gICAgICAgICB7fDwvZGl2PlxuICAgICAgICAgIDwvZGl2Pnx9XG4gICAgICAgICBbIHN0b3BwZWRfcm93IF0ge3w8L2Zvcm0+fH1dXG4gICAgOjogcGF1c2VkX3JvdylcblxubGV0IGluaXRpYWxpemluZ19ib2R5ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sNS5lbHQgPVxuICBIdG1sLmRpdlxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlc1xuICAgICAgICAgICAgIH5hX2NsYXNzOlsgXCJwYW5lbC1ib2R5XCI7IFwicGFuZWwtY29udHJvbHNcIiBdXG4gICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLklOSVRBTElaSU5HIF0pO1xuICAgICAgXVxuICAgIFsgSHRtbC5lbnRpdHkgXCJuYnNwXCIgXVxuXG5sZXQgcnVubmluZ19ib2R5ICgpID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXNcbiAgICAgICAgICAgICB+YV9jbGFzczpbIFwicGFuZWwtYm9keVwiOyBcInBhbmVsLWNvbnRyb2xzXCIgXVxuICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5SVU5OSU5HIF0pO1xuICAgICAgXVxuICAgIChSdW5uaW5nUGFuZWxMYXlvdXQuY29udGVudCAoKSlcblxubGV0IGZvb3RlciAoKSA9XG4gIFslaHRtbFxuICAgIHt8XG4gICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtZm9vdGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICB8fVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlcyB+YV9jbGFzczpbIFwiY29sLW1kLTJcIjsgXCJjb2wteHMtNFwiIF1cbiAgICAgICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uU1RPUFBFRCBdKTtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAoQnV0dG9uU3RhcnQuY29udGVudCAoKSk7XG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzIH5hX2NsYXNzOlsgXCJjb2wtbWQtMlwiOyBcImNvbC14cy0zXCIgXVxuICAgICAgICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5QQVVTRUQgXSk7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgKEJ1dHRvbkNvbnRpbnVlLmNvbnRlbnQgKCkpO1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlcyB+YV9jbGFzczpbIFwiY29sLW1kLTJcIjsgXCJjb2wteHMtM1wiIF1cbiAgICAgICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uUEFVU0VEIF0pO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIChCdXR0b25PdXRwdXRzLmNvbnRlbnQgKCkpO1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlcyB+YV9jbGFzczpbIFwiY29sLW1kLTJcIjsgXCJjb2wteHMtM1wiIF1cbiAgICAgICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uUEFVU0VEIF0pO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIChCdXR0b25UcmFjZS5jb250ZW50ICgpKTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImNvbC1tZC0yXCI7IFwiY29sLXhzLTRcIiBdXG4gICAgICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlJVTk5JTkcgXSk7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgKEJ1dHRvblBhdXNlLmNvbnRlbnQgKCkpO1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlcyB+YV9jbGFzczpbIFwiY29sLXhzLTJcIjsgXCJjb2wtc20tMVwiIF1cbiAgICAgICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uUEFVU0VEOyBTdGF0ZV9zaW11bGF0aW9uLlJVTk5JTkcgXSk7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgKEJ1dHRvbkNsZWFyLmNvbnRlbnQgKCkpO1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMVwiOyBcImNvbC14cy0zXCIgXSBdXG4gICAgICAgICAgKERpdlN0YXR1c0luZGljYXRvci5jb250ZW50ICgpIEAgWyBIdG1sLmVudGl0eSBcIm5ic3BcIiBdKTtcbiAgICAgIF1cbiAgICAgIHt8XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgIDwvZGl2PlxuICB8fV1cblxubGV0IGNvbnRlbnQgKCkgPVxuICBIdG1sLmRpdlxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgIChSZWFjdC5TLmJpbmQgU3RhdGVfcHJvamVjdC5tb2RlbCAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgICAgICBtYXRjaCBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX2N1cnJlbnRfaWQgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IFJlYWN0LlMuY29uc3QgWyBcImhpZGVcIiBdXG4gICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBSZWFjdC5TLmNvbnN0IFsgXCJwYW5lbFwiOyBcInBhbmVsLWRlZmF1bHRcIiBdKSk7XG4gICAgICBdXG4gICAgWyBzdG9wcGVkX2JvZHkgKCk7IGluaXRpYWxpemluZ19ib2R5ICgpOyBydW5uaW5nX2JvZHkgKCk7IGZvb3RlciAoKSBdXG5cbmxldCBvbmxvYWQgKCkgOiB1bml0ID1cbiAgbGV0ICgpID0gRm9ybVBlcnR1cmJhdGlvbi5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gSW5wdXRQYXVzZUNvbmRpdGlvbi5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gSW5wdXRQbG90UGVyaW9kLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBEaXZFcnJvck1lc3NhZ2Uub25sb2FkICgpIGluXG4gIGxldCAoKSA9IEJ1dHRvblN0YXJ0Lm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBCdXR0b25QYXVzZS5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gQnV0dG9uQ29udGludWUub25sb2FkICgpIGluXG4gIGxldCAoKSA9IEJ1dHRvblRyYWNlLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBCdXR0b25PdXRwdXRzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBCdXR0b25DbGVhci5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gRGl2U3RhdHVzSW5kaWNhdG9yLm9ubG9hZCAoKSBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcblxubGV0IG5hdmxpICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5cbmxldCBjb250ZW50ICgpID1cbiAgWyVodG1sXG4gICAge3xcbjxoMj5UaGUgS2FwcGEgTGFuZ3VhZ2U8L2gyPlxuPHA+Q29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRjxwPlxuPHA+S2FwcGEgTGFuZ3VhZ2Ugc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMC5odG1sXCI+R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMzwvYT4uXG4gU291cmNlIGNvZGUgaXMgcHVibGlzaGVkIG9uIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vS2FwcGEtRGV2L0thU2ltXCI+aHR0cHM6Ly9naXRodWIuY29tL0thcHBhLURldi9LYVNpbTwvYT4uPC9wPlxuXG48cD5UaGlzIHVzZXIgaW50ZXJmYWNlIHdhcyBkZXZlbG9wZWQgaW4gdGhlIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL2ZvbnRhbmEuaG1zLmhhcnZhcmQuZWR1XCI+Rm9udGFuYSBMYWI8L2E+IHVuZGVyIERBUlBBIGdyYW50IFc5MTFORi0xNC0xLTAzNjcuIFZpc3VhbGl6YXRpb25zIHdlcmUgZGV2ZWxvcGVkIGluIHRoZSA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9jcmVhdGl2ZWNvZGluZy5zb2UudWNzYy5lZHUvbmV3cy5waHBcIj5DcmVhdGl2ZSBDb2RpbmcgTGFiPC9hPiBvZiBBbmd1cyBGb3JiZXM8L3A+XG5cbjxwPlJlZmVyZW5jZSBtYW51YWwgaXMgb25saW5lIGF0IDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3d3dy5rYXBwYWxhbmd1YWdlLm9yZ1wiPmh0dHBzOi8vd3d3LmthcHBhbGFuZ3VhZ2Uub3JnPC9hPi48L3A+XG5cbjx1bD5cbjxsaT5Xcml0dGVuIGluIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vb2NhbWwub3JnXCI+XG4gIDwhLS08aW1nIHNyYz1cImh0dHA6Ly9vY2FtbC5vcmcvbG9nby9Db2xvdXIvU1ZHL2NvbG91ci1sb2dvLnN2Z1wiXG4gICAgICAgYWx0PVwiLS0+T0NhbWw8IS0tXCJcbiAgICAgICBzdHlsZT1cImJvcmRlcjogbm9uZTsgd2lkdGg6IDE1MHB4O1wiIC8+IC0tPlxuPC9hPi4gQ29tcGlsZWQgYnkgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cIj5qc19vZl9vY2FtbDwvYT4uPC9saT5cbjxsaT5UZXh0IGVkaXRvciB1c2VkIGlzIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vY29kZW1pcnJvci5uZXRcIj5Db2RlTWlycm9yPC9hPi4gSXQgY29tZXMgd2l0aCBhIGxvdCBvZiBmZWF0dXJlcy4gQ2hlY2sgb3V0IGl0cyA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2NvZGVtaXJyb3IubmV0L2RvYy9tYW51YWwuaHRtbCNjb21tYW5kc1wiPm1hbnVhbDwvYT4uPC9saT5cbjxsaT5WaXN1YWxpemF0aW9uIHJlbGllcyBvbiA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9kM2pzLm9yZ1wiPmQzPC9hPi48L2xpPlxuPGxpPkxheW91dCB1c2VzIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vZ2V0Ym9vdHN0cmFwLmNvbVwiPmJvb3RzdHJhcDwvYT4gYW5kIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL2pxdWVyeXVpLmNvbVwiPmpRdWVyeTwvYT4uPC9saT5cbjwvdWw+XG5cbjxoMz5Ob21pbmFsIGNvbnRyaWJ1dGlvbjwvaDM+XG48ZGwgY2xhc3M9XCJkbC1ob3Jpem9udGFsXCI+PGR0PlBpZXJyZSBCb3V0aWxsaWVyPC9kdD48ZGQ+R2VuZXJhbCBkZXNpZ24gYW5kIG1haW50ZW5hbmNlLCBwcm90b2NvbHM8L2RkPjxkdD5YaW5nIExpPC9kdD48ZGQ+T3V0cHV0cyB2aXN1YWxpemF0aW9ucywgR2VuZXJhbCBsYXlvdXQ8L2RkPjxkdD5NdXRhYW1iYSBNYWFzaGE8L2R0PjxkZD5UcmFuc3BhcmVudCBtdWx0aSBiYWNrZW5kIGFyY2hpdGVjdHVyZSwgcHJvdG9jb2xzLCBPdXRwdXQgdmlzdWFsaXphdGlvbnMsIEdlbmVyYWwgbGF5b3V0PC9kZD48L2RsPlxufH1dXG5cbmxldCBvbmxvYWQgKCkgPSAoKVxubGV0IG9ucmVzaXplICgpID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEpzIHV0aWwgKilcbigqIHJlZmVyZW5jZXNcbiAgIGh0dHA6Ly90b3NzLnNvdXJjZWZvcmdlLm5ldC9vY2FtbC5odG1sXG4gICBodHRwOi8vcGVwcGVybWludC5qcC90ZW1wL2FvL2FvLm1sXG4qKVxubGV0IHByb3RvdHlwZSA9IEpzLlVuc2FmZS5qc19leHByIFwiQ29kZU1pcnJvci5wcm90b3R5cGVcIlxuXG5sZXQgY3JlYXRlX2hhbmRsZXIgbGFiZWwgPVxuICBsZXQgaGVhZCA6IGNoYXIgPSBDaGFyLnVwcGVyY2FzZV9hc2NpaSAoU3RyaW5nLmdldCBsYWJlbCAwKSBpblxuICBsZXQgdGFpbCA6IHN0cmluZyA9IFN0cmluZy5zdWIgbGFiZWwgMSAoU3RyaW5nLmxlbmd0aCBsYWJlbCAtIDEpIGluXG4gIGxldCBvbl9sYWJlbCA9IFwib25cIiBeIENoYXIuZXNjYXBlZCBoZWFkIF4gdGFpbCBpblxuICBsZXQgd3JhcHBlciBoYW5kbGVyID0gKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ0aGlzXCIpIyNvbiBsYWJlbCBoYW5kbGVyIGluXG4gIGxldCAoKSA9IEpzLlVuc2FmZS5zZXQgcHJvdG90eXBlIChKcy5zdHJpbmcgb25fbGFiZWwpIHdyYXBwZXIgaW5cbiAgKClcblxuKCogYWRkIG9uIGhhbmRsZXJzIHRvIHRoZSBwcm90b3R5cGVzIHNvIHRoZXkgY2FuIGJlIHN0cm9uZ2x5IHR5cGVkICopXG5sZXQgKCkgPVxuICBMaXN0Lml0ZXIgY3JlYXRlX2hhbmRsZXJcbiAgICBbXG4gICAgICBcImJlZm9yZUNoYW5nZVwiO1xuICAgICAgXCJiZWZvcmVDdXJzb3JFbnRlclwiO1xuICAgICAgXCJiZWZvcmVTZWxlY3Rpb25DaGFuZ2VcIjtcbiAgICAgIFwiYmx1clwiO1xuICAgICAgXCJjaGFuZ2VzXCI7XG4gICAgICBcImNsZWFyXCI7XG4gICAgICBcImNvbnRleHRtZW51XCI7XG4gICAgICBcImNvcHlcIjtcbiAgICAgIFwiY3Vyc29yQWN0aXZpdHlcIjtcbiAgICAgIFwiY3V0XCI7XG4gICAgICBcImRibGNsaWNrXCI7XG4gICAgICBcImRlbGV0ZVwiO1xuICAgICAgXCJkcmFnZW50ZXJcIjtcbiAgICAgIFwiZHJhZ2xlYXZlXCI7XG4gICAgICBcImRyYWdvdmVyXCI7XG4gICAgICBcImRyYWdzdGFydFwiO1xuICAgICAgXCJkcm9wXCI7XG4gICAgICBcImVsZWN0cmljSW5wdXRcIjtcbiAgICAgIFwiZm9jdXNcIjtcbiAgICAgIFwiZ3V0dGVyQ2xpY2tcIjtcbiAgICAgIFwiZ3V0dGVyQ29udGV4dE1lbnVcIjtcbiAgICAgIFwiaGlkZVwiO1xuICAgICAgXCJpbnB1dFJlYWRcIjtcbiAgICAgIFwia2V5SGFuZGxlZFwiO1xuICAgICAgXCJrZXlwcmVzc1wiO1xuICAgICAgXCJrZXl1cFwiO1xuICAgICAgXCJtb3VzZWRvd25cIjtcbiAgICAgIFwicGFzdGVcIjtcbiAgICAgIFwicmVkcmF3XCI7XG4gICAgICBcInJlbmRlckxpbmVcIjtcbiAgICAgIFwic2Nyb2xsXCI7XG4gICAgICBcInNjcm9sbEN1cnNvckludG9WaWV3XCI7XG4gICAgICBcInN3YXBEb2NcIjtcbiAgICAgIFwidG91Y2hzdGFydFwiO1xuICAgICAgXCJ1bmhpZGVcIjtcbiAgICAgIFwidXBkYXRlXCI7XG4gICAgICBcInZpZXdwb3J0Q2hhbmdlXCI7XG4gICAgICBcImNoYW5nZVwiO1xuICAgICAgXCJrZXlkb3duXCI7XG4gICAgXVxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBjaCA6IGludCBKcy5yZWFkb25seV9wcm9wXG4gIG1ldGhvZCBsaW5lIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGRpbWVuc2lvbiA9IG9iamVjdFxuICBtZXRob2QgbGVmdCA6IGludCBKcy5yZWFkb25seV9wcm9wXG4gIG1ldGhvZCByaWdodCA6IGludCBKcy5yZWFkb25seV9wcm9wXG4gIG1ldGhvZCB0b3AgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICBtZXRob2QgYm90dG9tIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgcG9zaXRpb24gOiAoaW50IC0+IGludCAtPiBwb3NpdGlvbiBKcy50KSBKcy5jb25zdHIgPVxuICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJDb2RlTWlycm9yXCIpIyMuX1Bvc1xuXG50eXBlIHNldmVyaXR5ID0gRXJyb3IgfCBXYXJuaW5nXG5cbmNsYXNzIHR5cGUgbGludCA9IG9iamVjdFxuICBtZXRob2QgbWVzc2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgbWV0aG9kIHNldmVyaXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBtZXRob2QgZnJvbSA6IHBvc2l0aW9uIEpzLnQgSnMucHJvcFxuICBtZXRob2QgdG9fIDogcG9zaXRpb24gSnMudCBKcy5wcm9wXG5lbmRcblxubGV0IGNvbnN0cnVjdG9yX2xpbnQgOiBsaW50IEpzLnQgSnMuY29uc3RyID0gSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIk9iamVjdFwiXG5cbmxldCBjcmVhdGVfbGludCB+KG1lc3NhZ2UgOiBzdHJpbmcpIH4oc2V2ZXJpdHkgOiBzZXZlcml0eSlcbiAgICB+KGZyb20gOiBwb3NpdGlvbiBKcy50KSB+KHRvXyA6IHBvc2l0aW9uIEpzLnQpIDogbGludCBKcy50ID1cbiAgbGV0IHJlc3VsdCA9IG5ldyVqcyBjb25zdHJ1Y3Rvcl9saW50IGluXG4gIGxldCAoKSA9IHJlc3VsdCMjLm1lc3NhZ2UgOj0gSnMuc3RyaW5nIG1lc3NhZ2UgaW5cbiAgbGV0ICgpID1cbiAgICByZXN1bHQjIy5zZXZlcml0eSA6PVxuICAgICAgbWF0Y2ggc2V2ZXJpdHkgd2l0aFxuICAgICAgfCBFcnJvciAtPiBKcy5zdHJpbmcgXCJlcnJvclwiXG4gICAgICB8IFdhcm5pbmcgLT4gSnMuc3RyaW5nIFwid2FybmluZ1wiXG4gIGluXG4gIGxldCAoKSA9IHJlc3VsdCMjLmZyb20gOj0gZnJvbSBpblxuICBsZXQgKCkgPSByZXN1bHQjIy50b18gOj0gdG9fIGluXG4gIHJlc3VsdFxuXG5jbGFzcyB0eXBlIGNoYW5nZSA9IG9iamVjdFxuICBtZXRob2QgZnJvbSA6IHBvc2l0aW9uIEpzLnQgSnMucHJvcFxuICBtZXRob2QgdG9fIDogcG9zaXRpb24gSnMudCBKcy5wcm9wXG4gIG1ldGhvZCB0ZXh0IDogSnMuc3RyaW5nX2FycmF5IEpzLnQgSnMucHJvcFxuICBtZXRob2QgcmVtb3ZlZCA6IHN0cmluZyBKcy50IEpzLnByb3BcbiAgbWV0aG9kIG9yaWdpbiA6IHN0cmluZyBKcy50IEpzLnByb3BcbmVuZFxuXG5sZXQgY29uc3RydWN0b3JfY2hhbmdlIDogY2hhbmdlIEpzLnQgSnMuY29uc3RyID0gSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIk9iamVjdFwiXG5sZXQgY3JlYXRlX2NoYW5nZSAoKSA6IGNoYW5nZSBKcy50ID0gbmV3JWpzIGNvbnN0cnVjdG9yX2NoYW5nZVxuXG5jbGFzcyB0eXBlIGNvZGVtaXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIGdldFZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMubWV0aFxuICBtZXRob2Qgc2V0VmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGZvY3VzIDogdW5pdCBKcy5tZXRoXG5cbiAgKCogUHJvZ3JhbW1hdGljYWxseSBzZXQgdGhlIHNpemUgb2YgdGhlIGVkaXRvciAob3ZlcnJpZGluZyB0aGVcbiAgICAgYXBwbGljYWJsZSBDU1MgcnVsZXMpLiB3aWR0aCBhbmQgaGVpZ2h0IGNhbiBiZSBlaXRoZXIgbnVtYmVyc1xuICAgICAoaW50ZXJwcmV0ZWQgYXMgcGl4ZWxzKSBvciBDU1MgdW5pdHMgKFwiMTAwJVwiLCBmb3IgZXhhbXBsZSkuXG4gICAgIFlvdSBjYW4gcGFzcyBudWxsIGZvciBlaXRoZXIgb2YgdGhlbSB0byBpbmRpY2F0ZSB0aGF0IHRoYXRcbiAgICAgZGltZW5zaW9uIHNob3VsZCBub3QgYmUgY2hhbmdlZC5cbiAgKilcbiAgbWV0aG9kIHNldFNpemUgOiBpbnQgSnMudCBKcy5vcHQgLT4gaW50IEpzLnQgSnMub3B0IC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIFNjcm9sbCB0aGUgZWRpdG9yIHRvIGEgZ2l2ZW4gKHBpeGVsKSBwb3NpdGlvbi4gQm90aCBhcmd1bWVudHNcbiAgICAgbWF5IGJlIGxlZnQgYXMgbnVsbCBvciB1bmRlZmluZWQgdG8gaGF2ZSBubyBlZmZlY3QuICopXG4gIG1ldGhvZCBzY3JvbGxUbyA6IGludCBKcy5vcHQgLT4gaW50IEpzLm9wdCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgY2hhckNvb3JkcyA6XG4gICAgcG9zaXRpb24gSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gZGltZW5zaW9uIEpzLnQgSnMubWV0aFxuXG4gIG1ldGhvZCBnZXRTY3JvbGxlckVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMubWV0aFxuICBtZXRob2Qgb24gOiBKcy5qc19zdHJpbmcgSnMudCAtPiAoRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBmaXJlZCB3aGVuIGNvbnRlbnQgaXMgY2hhbmdlZCAqKVxuICBtZXRob2Qgb25DaGFuZ2UgOiAoY29kZW1pcnJvciBKcy50IC0+IGNoYW5nZSBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGJhdGNoZWQgY2hhbmdlZCBvcGVyYXRpb24gKilcbiAgbWV0aG9kIG9uQ2hhbmdlcyA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBjaGFuZ2UgSnMuanNfYXJyYXkgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBiZWZvcmUgYSBjaGFuZ2UgaXMgYXBwbGllZCAqKVxuICBtZXRob2Qgb25CZWZvcmVDaGFuZ2UgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gY2hhbmdlIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogY3Vyc29yIG1vdmVzLCBvciBhbnkgY2hhbmdlICopXG4gIG1ldGhvZCBvbkN1cnNvckFjdGl2aXR5IDogKGNvZGVtaXJyb3IgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiB3aGVuIG5ldyBpbnB1dCBpcyByZWFkICopXG4gIG1ldGhvZCBvbktleUhhbmRsZWQgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gSnMuanNfc3RyaW5nIC0+IERvbV9odG1sLmV2ZW50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIHdoZW4gbmV3IGlucHV0IGlzIHJlYWQgKilcbiAgbWV0aG9kIG9uSW5wdXRSZWFkIDogKGNvZGVtaXJyb3IgSnMudCAtPiBjaGFuZ2UgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiB3aGVuIHRleHQgbWF0Y2hlcyBlbGVjdHJpYyBwYXR0ZXJuICopXG4gIG1ldGhvZCBvbkVsZWN0cmljSW5wdXQgOiAoY29kZW1pcnJvciBKcy50IC0+IGludCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGJlZm9yZSBhIHNlbGVjdGlvbiBpcyBtb3ZlZCBUT0RPICopXG4gIG1ldGhvZCBvbkJlZm9yZVNlbGVjdGlvbkNoYW5nZSA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiAnYSAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiB0aGUgdmlldyBwb3J0IGNoYW5nZWQgKilcbiAgbWV0aG9kIG9uVmlld3BvcnRDaGFuZ2UgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gaW50IEpzLnQgLT4gaW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogIGRvY3VtZW50IHN3YXBwZWQgKilcbiAgbWV0aG9kIG9uU3dhcERvYyA6IChjb2RlbWlycm9yIEpzLnQgLT4gJ2EgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogZ3V0dGVyIGNsaWNrZWQgKilcbiAgbWV0aG9kIG9uR3V0dGVyQ2xpY2sgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gaW50IEpzLnQgLT4gSnMuanNfc3RyaW5nIC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT5cbiAgICB1bml0IEpzLm1ldGhcblxuICAoKiBjb250ZXh0IG1lbnUgZXZlbnQgZnJvbSBndXR0ZXIgKilcbiAgbWV0aG9kIG9uR3V0dGVyQ29udGV4dE1lbnUgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gaW50IEpzLnQgLT4gSnMuanNfc3RyaW5nIC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT5cbiAgICB1bml0IEpzLm1ldGhcblxuICAoKiBmb2N1cyAqKVxuICBtZXRob2Qgb25Gb2N1cyA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogYmx1ciAqKVxuICBtZXRob2Qgb25CbHVyIDogKGNvZGVtaXJyb3IgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBzY3JvbGwgKilcbiAgbWV0aG9kIG9uU2Nyb2xsIDogKGNvZGVtaXJyb3IgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBjdXJzb3Igc2Nyb2xsZWQgaW4gdmlldyopXG4gIG1ldGhvZCBvblNjcm9sbEN1cnNvckludG9WaWV3IDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogZG9tIHVwZGF0ZWQgKilcbiAgbWV0aG9kIG9uVXBkYXRlIDogKGNvZGVtaXJyb3IgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBsaW5lIHJlbmRlcmVkICopXG4gIG1ldGhvZCBvblJlbmRlckxpbmUgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gJ2EgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25Nb3VzZWRvd24gOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25EYmxjbGljayA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvblRvdWNoc3RhcnQgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25Db250ZXh0bWVudSA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbktleWRvd24gOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25LZXlwcmVzcyA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbktleXVwIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uQ3V0IDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uQ29weSA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvblBhc3RlIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRHJhZ3N0YXJ0IDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRHJhZ2VudGVyIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRHJhZ292ZXIgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25EcmFnbGVhdmUgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25Ecm9wIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRGVsZXRlIDogKHVuaXQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBvbkJlZm9yZUN1cnNvckVudGVyIDogKHVuaXQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBvbkNsZWFyIDogKHBvc2l0aW9uIEpzLnQgLT4gcG9zaXRpb24gSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIG9uSGlkZSA6ICh1bml0IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2Qgb25VbmhpZGUgOiAodW5pdCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIG9uUmVkcmF3IDogKHVuaXQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBzZXRDdXJzb3IgOiBwb3NpdGlvbiBKcy50IC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2QgZ2V0Q3Vyc29yIDogcG9zaXRpb24gSnMudCBKcy5tZXRoXG4gIG1ldGhvZCBzZXRTZWxlY3Rpb24gOiBwb3NpdGlvbiBKcy50IC0+IHBvc2l0aW9uIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBwZXJmb3JtTGludCA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgbGludF9jb25maWd1cmF0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBkZWxheSA6IGludCBKcy50IEpzLnByb3BcbiAgbWV0aG9kIGFzeW5jIDogYm9vbCBKcy50IEpzLnByb3BcblxuICBtZXRob2QgZ2V0QW5ub3RhdGlvbnMgOlxuICAgIChKcy5qc19zdHJpbmcgLT5cbiAgICBsaW50X2NvbmZpZ3VyYXRpb24gSnMudCAtPlxuICAgIGNvZGVtaXJyb3IgSnMudCAtPlxuICAgIGxpbnQgSnMudCBKcy5qc19hcnJheSBKcy50KVxuICAgIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGxpbnRPbkNoYW5nZSA6IGJvb2wgSnMudCBKcy5wcm9wXG5lbmRcblxubGV0IGNvbnN0cnVjdG9yX2xpbnRfY29uZmlndXJhdGlvbiA6IGxpbnRfY29uZmlndXJhdGlvbiBKcy50IEpzLmNvbnN0ciA9XG4gIEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJPYmplY3RcIlxuXG5sZXQgY3JlYXRlX2xpbnRfY29uZmlndXJhdGlvbiAoKSA6IGxpbnRfY29uZmlndXJhdGlvbiBKcy50ID1cbiAgbmV3JWpzIGNvbnN0cnVjdG9yX2xpbnRfY29uZmlndXJhdGlvblxuXG5jbGFzcyB0eXBlIGNvbmZpZ3VyYXRpb24gPSBvYmplY3RcbiAgKCogVGhlIHN0YXJ0aW5nIHZhbHVlIG9mIHRoZSBlZGl0b3IuICopXG4gIG1ldGhvZCB2YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAoKiBUaGUgbW9kZSB0byB1c2UuICopXG4gIG1ldGhvZCBtb2RlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICgqIEV4cGxpY2l0bHkgc2V0IHRoZSBsaW5lIHNlcGFyYXRvciBmb3IgdGhlIGVkaXRvci4gICopXG4gIG1ldGhvZCBsaW5lU2VwYXJhdG9yIDogSnMuanNfc3RyaW5nIEpzLm9wdCBKcy50IEpzLnByb3BcblxuICAoKiBUaGUgdGhlbWUgdG8gc3R5bGUgdGhlIGVkaXRvciB3aXRoLiAqKVxuICBtZXRob2QgdGhlbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgKCogSG93IG1hbnkgc3BhY2VzIGEgYmxvY2sgc2hvdWxkIGJlIGluZGVudGVkLiAgKilcbiAgbWV0aG9kIGluZGVudFVuaXQgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogV2hldGhlciB0byB1c2UgdGhlIGNvbnRleHQtc2Vuc2l0aXZlIGluZGVudGF0aW9uICopXG4gIG1ldGhvZCBzbWFydEluZGVudCA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogVGhlIHdpZHRoIG9mIGEgdGFiIGNoYXJhY3Rlci4gKilcbiAgbWV0aG9kIHRhYlNpemUgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogVGhlIGZpcnN0IE4qdGFiU2l6ZSBpbiBpbmRlbnRhdGlvbiBzaG91bGQgTiB0YWJzLiAqKVxuICBtZXRob2QgaW5kZW50V2l0aFRhYnMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIFRoZSBlZGl0b3Igc2hvdWxkIHJlLWluZGVudCB0aGUgY3VycmVudCBsaW5lLiAqKVxuICBtZXRob2QgZWxlY3RyaWNDaGFycyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogQSByZWd1bGFyIGV4cHJlc3Npb24gdXNlZCB0byBkZXRlcm1pbmUgc3BlY2lhbCBwbGFjZWhvbGRlci4gKilcbiAgbWV0aG9kIHNwZWNpYWxDaGFycyA6IEpzLnJlZ0V4cCBKcy50IEpzLnByb3BcblxuICAoKiBBIGZ1bmN0aW9uIGlkZW50aWZpZXMgc3BlY2lhbENoYXJzIGFuZCBwcm9kdWNlcyBhIERPTSBub2RlICopXG4gIG1ldGhvZCBzcGVjaWFsQ2hhclBsYWNlaG9sZGVyIDogKGludCAtPiBEb21faHRtbC5lbGVtZW50IEpzLnQpIEpzLnByb3BcblxuICAoKiBIb3Jpem9udGFsIGN1cnNvciBtb3ZlbWVudCB0aHJvdWdoIHJpZ2h0LXRvLWxlZnQuICopXG4gIG1ldGhvZCBydGxNb3ZlVmlzdWFsbHkgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIENvbmZpZ3VyZXMgdGhlIGtleSBtYXAgdG8gdXNlLiAqKVxuICBtZXRob2Qga2V5TWFwIDogc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICgqIHNwZWNpZnkgZXh0cmEga2V5IGJpbmRpbmdzIGZvciB0aGUgZWRpdG9yICopXG4gIG1ldGhvZCBleHRyYUtleXMgOiAnYSBKcy5wcm9wXG5cbiAgKCogU2Nyb2xsIG9yIHdyYXAgZm9yIGxvbmcgbGluZXMgKilcbiAgbWV0aG9kIGxpbmVXcmFwcGluZyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogIFNob3cgbGluZSBudW1iZXJzIHRvIHRoZSBsZWZ0IG9mIHRoZSBlZGl0b3IgKilcbiAgbWV0aG9kIGxpbmVOdW1iZXJzIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBBdCB3aGljaCBudW1iZXIgdG8gc3RhcnQgY291bnRpbmcgbGluZXMuIERlZmF1bHQgaXMgMS4gKilcbiAgbWV0aG9kIGZpcnN0TGluZU51bWJlciA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBBIGZ1bmN0aW9uIHVzZWQgdG8gZm9ybWF0IGxpbmUgbnVtYmVycy4gKilcbiAgbWV0aG9kIGxpbmVOdW1iZXJGb3JtYXR0ZXIgOiAoaW50IEpzLnQgLT4gSnMuanNfc3RyaW5nKSBKcy50IEpzLnByb3BcblxuICAoKiBBZGQgZXh0cmEgZ3V0dGVycyAqKVxuICBtZXRob2QgZ3V0dGVycyA6IEpzLnN0cmluZ19hcnJheSBKcy50IEpzLnByb3BcblxuICAoKiBHdXR0ZXIgc2Nyb2xscyBhbG9uZyB3aXRoIHRoZSBjb250ZW50IGhvcml6b250YWxseSAqKVxuICBtZXRob2QgZml4ZWRHdXR0ZXIgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIENob29zZXMgYSBzY3JvbGxiYXIgaW1wbGVtZW50YXRpb24uICopXG4gIG1ldGhvZCBzY3JvbGxiYXJTdHlsZSA6IHN0cmluZyBKcy50IEpzLnByb3BcblxuICAoKiBjb3ZlciBndXR0ZXIgd2l0aCB3aXRoIGNsYXNzIENvZGVNaXJyb3ItZ3V0dGVyLWZpbGxlci4gKilcbiAgbWV0aG9kIGNvdmVyR3V0dGVyTmV4dFRvU2Nyb2xsYmFyIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBTZWxlY3RzIHRoZSB3YXkgQ29kZU1pcnJvciBoYW5kbGVzIGlucHV0IGFuZCBmb2N1cy4gKilcbiAgbWV0aG9kIGlucHV0U3R5bGUgOiBzdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgKCogZGlzYWJsZSBlZGl0aW5nIG9mIHRoZSBlZGl0b3IgY29udGVudCAqKVxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIHRoZSBjdXJzb3Igc2hvdWxkIGJlIGRyYXduIHdoZW4gYSBzZWxlY3Rpb24gaXMgYWN0aXZlLiAqKVxuICBtZXRob2Qgc2hvd0N1cnNvcldoZW5TZWxlY3RpbmcgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIGNvcHkgb3IgY3V0IHdoZW4gdGhlcmUgaXMgbm8gc2VsZWN0aW9uIHdpbGwgY29weSBvciBjdXQgd2hvbGUgbGluZXMgKilcbiAgbWV0aG9kIGxpbmVXaXNlQ29weUN1dCA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogV2hlbiBwYXN0aW5nIHNvbWV0aGluZyBmcm9tIGFuIGV4dGVybmFsIHNvdXJjZSAobm90IGZyb20gdGhlXG4gICAgIGVkaXRvciBpdHNlbGYpLCBpZiB0aGUgbnVtYmVyIG9mIGxpbmVzIG1hdGNoZXMgdGhlIG51bWJlciBvZlxuICAgICBzZWxlY3Rpb24sIENvZGVNaXJyb3Igd2lsbCBieSBkZWZhdWx0IGluc2VydCBvbmUgbGluZSBwZXJcbiAgICAgc2VsZWN0aW9uLiBZb3UgY2FuIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgdGhhdFxuICAgICBiZWhhdmlvci4gKilcbiAgbWV0aG9kIHBhc3RlTGluZXNQZXJTZWxlY3Rpb24gOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIERldGVybWluZXMgd2hldGhlciBtdWx0aXBsZSBzZWxlY3Rpb25zIGFyZSBqb2luZWQgYXMgc29vbiBhc1xuICAgICB0aGV5IHRvdWNoICh0aGUgZGVmYXVsdCkgb3Igb25seSB3aGVuIHRoZXkgb3ZlcmxhcCAodHJ1ZSkuICopXG4gIG1ldGhvZCBzZWxlY3Rpb25zTWF5VG91Y2ggOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIG1heGltdW0gbnVtYmVyIG9mIHVuZG8gKilcbiAgbWV0aG9kIHVuZG9EZXB0aCA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBtaWxsaXNlY29uZHMgb2YgaW5hY3Rpdml0eSB0byBjcmVhdGUgYSBuZXcgaGlzdG9yeSBldmVudCAqKVxuICBtZXRob2QgaGlzdG9yeUV2ZW50RGVsYXkgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogdGFiIGluZGV4IG9mIGVkaXRvciAqKVxuICBtZXRob2QgdGFiaW5kZXggOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogQ29kZU1pcnJvciBmb2N1cyBpdHNlbGYgb24gaW5pdGlhbGl6YXRpb24gKilcbiAgbWV0aG9kIGF1dG9mb2N1cyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogZW5hYmxlIGRyYWctYW5kLWRyb3AgKilcbiAgbWV0aG9kIGRyYWdEcm9wIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiB3aGVuIHNldCBmaWxlcyB3aXQgbWltZSB0eXBlIGNhbiBiZSBkcm9wcGVkIGludG8gdGhlIGVkaXRvciAqKVxuICBtZXRob2QgYWxsb3dEcm9wRmlsZVR5cGVzIDogSnMuc3RyaW5nX2FycmF5IEpzLm9wdCBKcy50IEpzLnByb3BcblxuICAoKiBIYWxmLXBlcmlvZCBpbiBtaWxsaXNlY29uZHMgdXNlZCBmb3IgY3Vyc29yIGJsaW5raW5nLiAqKVxuICBtZXRob2QgY3Vyc29yQmxpbmtSYXRlIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIEhvdyBtdWNoIGV4dHJhIHNwYWNlIHRvIGFsd2F5cyBrZWVwIGFib3ZlIGFuZCBiZWxvdyB0aGUgY3Vyc29yICopXG4gIG1ldGhvZCBjdXJzb3JTY3JvbGxNYXJnaW4gOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogRGV0ZXJtaW5lcyB0aGUgaGVpZ2h0IG9mIHRoZSBjdXJzb3IuICopXG4gIG1ldGhvZCBjdXJzb3JIZWlnaHQgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogdGhlIGNvbnRleHQgbWVudSBpcyBvcGVuZWQgd2l0aCBhIGNsaWNrIG91dHNpZGUgb2YgdGhlXG4gICAgIGN1cnJlbnQgc2VsZWN0aW9uLCBtb3ZlIGN1cnNvciB0byB0aGUgcG9pbnQgb2YgdGhlIGNsaWNrKilcbiAgbWV0aG9kIHJlc2V0U2VsZWN0aW9uT25Db250ZXh0TWVudSA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogdGltZSB0byBydW4gaGlnaGxpZ2h0aW5nIHRocmVhZCAqKVxuICBtZXRob2Qgd29ya1RpbWUgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogZGVsYXkgdG8gcnVuIGhpZ2hsaWdodGluZyB0aHJlYWQgKilcbiAgbWV0aG9kIHdvcmtEZWxheSA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBob3cgb2Z0ZW4gdG8gcG9sbCBmb3IgY2hhbmdlcyAqKVxuICBtZXRob2QgcG9sbEludGVydmFsIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIGNvbWJpbmUgdG9rZW5zIHRvIGEgc2luZ2xlIHNwYW4gKilcbiAgbWV0aG9kIGZsYXR0ZW5TcGFucyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogcHJlZml4IGNzcyAqKVxuICBtZXRob2QgYWRkTW9kZUNsYXNzIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBsZW5ndGggdG8gaGlnaGxpZ2h0ICopXG4gIG1ldGhvZCBtYXhIaWdobGlnaHRMZW5ndGggOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIGFtb3VudCBvZiBsaW5lcyB0aGF0IGFyZSByZW5kZXJlZCBhYm92ZSBhbmQgYmVsb3cgdGhlXG4gICAgIHZpc2libGUgZG9jdW1lbnQqKVxuICBtZXRob2Qgdmlld3BvcnRNYXJnaW4gOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogQURET04gc2VsZWN0aW9uL2FjdGl2ZS1saW5lLmpzICopXG4gIG1ldGhvZCBzdHlsZUFjdGl2ZUxpbmUgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIEFERE9OIGxpbnQvbGludC5qcyAqKVxuICBtZXRob2QgbGludCA6IGxpbnRfY29uZmlndXJhdGlvbiBKcy50IEpzLnByb3BcblxuICAoKiBBRERPTiBlZGl0L21hdGNoYnJhY2tldHMuanMgKilcbiAgbWV0aG9kIG1hdGNoQnJhY2tldHMgOiBib29sIEpzLnQgSnMucHJvcFxuZW5kXG5cbmxldCBkZWZhdWx0X2NvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uIEpzLnQgPVxuICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJDb2RlTWlycm9yXCIpIyMuZGVmYXVsdHNcblxubGV0IGZyb21UZXh0QXJlYSAoZG9tIDogRG9tX2h0bWwuZWxlbWVudCBKcy50KVxuICAgIChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbiBKcy50KSA6IGNvZGVtaXJyb3IgSnMudCA9XG4gICgqIGxldCAoKSA9IEpzLmRlYnVnZ2VyKCkgaW4gKilcbiAgKEpzLlVuc2FmZS5qc19leHByIFwiQ29kZU1pcnJvclwiKSMjZnJvbVRleHRBcmVhXG4gICAgKEpzLlVuc2FmZS5pbmplY3QgZG9tKVxuICAgIChKcy5VbnNhZmUuaW5qZWN0IGNvbmZpZ3VyYXRpb24pXG5cbmNsYXNzIHR5cGUgY29tbWFuZHMgPSBvYmplY3RcbiAgbWV0aG9kIHNhdmUgOiAoY29kZW1pcnJvciBKcy50IC0+IHVuaXQpIEpzLnByb3BcbmVuZFxuXG5sZXQgY29tbWFuZHMgOiBjb21tYW5kcyBKcy50ID0gKEpzLlVuc2FmZS5qc19leHByIFwiQ29kZU1pcnJvclwiKSMjLmNvbW1hbmRzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgY3JlYXRlX2ZpbGUgPyh0ZXh0ID0gTHd0LnJldHVybiAoSnMuc3RyaW5nIFwiXCIpKSAoZmlsZV9pZCA6IHN0cmluZykgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgICggdGV4dCA+Pj0gZnVuIHR4dCAtPlxuICAgICAgICAgIGxldCBjb250ZW50ID0gSnMudG9fc3RyaW5nIHR4dCBpblxuICAgICAgICAgIFN0YXRlX2ZpbGUuY3JlYXRlX2ZpbGUgfmZpbGVuYW1lOmZpbGVfaWQgfmNvbnRlbnRcbiAgICAgICAgICA+Pj0gKCogZ2V0IG5ldyBjb250YWN0IG1hcCAqKVxuICAgICAgICAgIGZ1biByIC0+XG4gICAgICAgICAgU3RhdGVfcHJvamVjdC5zeW5jICgpID4+PSBmdW4gcicgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgcjsgcicgXSkgKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNldF9maWxlIChmaWxlX2lkIDogc3RyaW5nKSA6IHVuaXQgPVxuICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJzZXRfZmlsZTolc1wiIGZpbGVfaWQpKSBpblxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIH5hcHBlbmQ6dHJ1ZSBfX0xPQ19fXG4gICAgICAgICggU3RhdGVfZmlsZS5zZWxlY3RfZmlsZSBmaWxlX2lkIE5vbmUgPj49IGZ1biByIC0+XG4gICAgICAgICAgU3RhdGVfcHJvamVjdC5zeW5jICgpID4+PSBmdW4gcicgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgcjsgcicgXSkgKVxuICAgICAgKCogZ2V0IG5ldyBjb250YWN0IG1hcCAqKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IGNsb3NlX2ZpbGUgKCkgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgICggU3RhdGVfZmlsZS5yZW1vdmVfZmlsZSAoKSA+Pj0gZnVuIHIgLT5cbiAgICAgICAgICBTdGF0ZV9wcm9qZWN0LnN5bmMgKCkgPj49IGZ1biByJyAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2NvbWJpbmUgWyByOyByJyBdKSApXG4gICAgICAoKiBnZXQgbmV3IGNvbnRhY3QgbWFwICopXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgc2V0X2ZpbGVfY29tcGlsZSByYW5rIChjb21waWxlIDogYm9vbCkgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgICggU3RhdGVfZmlsZS5zZXRfY29tcGlsZSByYW5rIGNvbXBpbGUgPj49IGZ1biByIC0+XG4gICAgICAgICAgU3RhdGVfcHJvamVjdC5zeW5jICgpID4+PSBmdW4gcicgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgcjsgcicgXSkgKVxuICAgICAgKCogZ2V0IG5ldyBjb250YWN0IG1hcCAqKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IG9yZGVyX2ZpbGVzIChmaWxlbmFtZXMgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgICggU3RhdGVfZmlsZS5vcmRlcl9maWxlcyBmaWxlbmFtZXMgPj49IGZ1biByIC0+XG4gICAgICAgICAgU3RhdGVfcHJvamVjdC5zeW5jICgpID4+PSBmdW4gcicgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgcjsgcicgXSkgKVxuICAgICAgKCogZ2V0IG5ldyBjb250YWN0IG1hcCAqKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IGV4cG9ydF9jdXJyZW50X2ZpbGUgKCkgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX18gKFN0YXRlX2ZpbGUuZ2V0X2ZpbGUgKCkpXG4gICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfm9rOihmdW4gKGRhdGEsIGZpbGVuYW1lKSAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YTooSnMuc3RyaW5nIGRhdGEpXG4gICAgICAgICAgICAgICAgICB+bWltZTpcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiIH5maWxlbmFtZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG4gICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCBmaWxlX25ld19tb2RhbF9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1uZXctbW9kYWxcIlxubGV0IGZpbGVfbmV3X2lucHV0X2lkID0gXCJtZW51LWVkaXRvci1maWxlLW5ldy1pbnB1dFwiXG5sZXQgZmlsZV9kcm9wZG93bl9tZW51X2lkID0gXCJtZW51LWVkaXRvci1maWxlLWRyb3Bkb3duLW1lbnVcIlxubGV0IGZpbGVfbmV3X2xpX2lkID0gXCJtZW51LWVkaXRvci1maWxlLW5ldy1saVwiXG5sZXQgZmlsZV9vcGVuX2xpX2lkID0gXCJtZW51LWVkaXRvci1maWxlLW9wZW4tbGlcIlxubGV0IGZpbGVfb3Blbl9zZWxlY3Rvcl9pZCA9IFwibWVudS1lZGl0b3Itb3Blbi1zZWxlY3Rvci1pZFwiXG5sZXQgZmlsZV9jbG9zZV9saV9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1jbG9zZS1saVwiXG5sZXQgZmlsZV9leHBvcnRfbGlfaWQgPSBcIm1lbnUtZWRpdG9yLWZpbGUtZXhwb3J0LWxpXCJcbmxldCBmaWxlX2NvbXBpbGVfY2hlY2tib3ggPSBcIm1lbnUtZWRpdG9yLWZpbGUtY29tcGlsZS1jaGVja2JveFwiXG5cbigqIGxpc3QgZmlsZW5hbWUgYW5ub3RhdGlvbiAqKVxubGV0IGVsZW1lbnRfZ2V0X2ZpbGVuYW1lIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA6XG4gICAgSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ID1cbiAgQ29tbW9uLmVsZW1lbnRfZGF0YSAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgXCJmaWxlLWlkXCJcblxubGV0IGVsZW1lbnRfc2V0X2ZpbGVuYW1lIChuYW1lIDogc3RyaW5nKSA9XG4gIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJkYXRhLWZpbGUtaWRcIiBuYW1lXG5cbmxldCBmaWxlX25ld19pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGZpbGVfbmV3X2lucHV0X2lkO1xuICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgVGV4dDtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICBIdG1sLmFfcGxhY2Vob2xkZXIgXCJmaWxlIG5hbWVcIjtcbiAgICAgICAgSHRtbC5hX3NpemUgNDA7XG4gICAgICBdXG4gICAgKClcblxubGV0IGZpbGVfbmV3X2lucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBmaWxlX25ld19pbnB1dFxuXG5sZXQgZmlsZV9jaGVja2JveCBmaWxlX2lkIGlzX2NoZWNrZWQgPVxuICBsZXQgY2hlY2tlZF9hdHRyaWJ1dGUgPVxuICAgIGlmIGlzX2NoZWNrZWQgdGhlblxuICAgICAgWyBIdG1sLmFfY2hlY2tlZCAoKSBdXG4gICAgZWxzZVxuICAgICAgW11cbiAgaW5cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgKFtcbiAgICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBDaGVja2JveDtcbiAgICAgICAgIEh0bWwuYV9jbGFzcyBbIGZpbGVfY29tcGlsZV9jaGVja2JveCBdO1xuICAgICAgICAgZWxlbWVudF9zZXRfZmlsZW5hbWUgZmlsZV9pZDtcbiAgICAgICBdXG4gICAgICBAIGNoZWNrZWRfYXR0cmlidXRlKVxuICAgICgpXG5cbmxldCBvcGVuX2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgZmlsZV9vcGVuX3NlbGVjdG9yX2lkO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImhpZGRlblwiIF07XG4gICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJmaWxlXCI7XG4gICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJhY2NlcHRcIiBcIi5rYVwiO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBkcm9wZG93biAobW9kZWwgOiBTdGF0ZV9maWxlLm1vZGVsKSA9XG4gICgqIGRpcmVjdG9yaWVzICopXG4gIGxldCBoaWRlX29uX2VtcHR5IGwgPVxuICAgIGlmIE1vZHMuSW50TWFwLmlzX2VtcHR5IG1vZGVsLlN0YXRlX2ZpbGUuZGlyZWN0b3J5IHRoZW5cbiAgICAgIFtdXG4gICAgZWxzZVxuICAgICAgbFxuICBpblxuICBsZXQgZmlsZV9saSA9XG4gICAgbGV0IGN1cnJlbnRfZmlsZV9wb3MgPVxuICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgIChmdW4geyBTdGF0ZV9maWxlLnJhbms7IF8gfSAtPiByYW5rKVxuICAgICAgICBtb2RlbC5TdGF0ZV9maWxlLmN1cnJlbnRcbiAgICBpblxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIChyYW5rLCB7IFN0YXRlX2ZpbGUubmFtZTsgU3RhdGVfZmlsZS5sb2NhbCB9KSAtPlxuICAgICAgICBsZXQgY29tcGlsZSA9IGxvY2FsID0gTm9uZSBpblxuICAgICAgICBsZXQgbGlfY2xhc3MgPVxuICAgICAgICAgIChpZiBjdXJyZW50X2ZpbGVfcG9zID0gU29tZSByYW5rIHRoZW5cbiAgICAgICAgICAgICBbIFwiYWN0aXZlXCIgXVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgW10pXG4gICAgICAgICAgQCBbIFwidWktc3RhdGUtc29ydGFibGVcIiBdXG4gICAgICAgIGluXG4gICAgICAgIEh0bWwubGlcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBsaV9jbGFzczsgZWxlbWVudF9zZXRfZmlsZW5hbWUgbmFtZSBdXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5hXG4gICAgICAgICAgICAgIH5hOlsgZWxlbWVudF9zZXRfZmlsZW5hbWUgbmFtZSBdXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNoZWNrYm94LWNvbnRyb2wtZGl2XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50X3NldF9maWxlbmFtZSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIGZpbGVfY2hlY2tib3ggbmFtZSBjb21waWxlO1xuICAgICAgICAgICAgICAgICAgICBIdG1sLnNwYW5cbiAgICAgICAgICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJjaGVja2JveC1jb250cm9sLWxhYmVsXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudF9zZXRfZmlsZW5hbWUgbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICBbIEh0bWwuY2RhdGEgbmFtZSBdO1xuICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICBdKVxuICAgICAgKE1vZHMuSW50TWFwLmJpbmRpbmdzIG1vZGVsLlN0YXRlX2ZpbGUuZGlyZWN0b3J5KVxuICBpblxuICBsZXQgc2VwYXJhdG9yX2xpID1cbiAgICBoaWRlX29uX2VtcHR5XG4gICAgICBbXG4gICAgICAgIEh0bWwubGlcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcInNlcGFyYXRvclwiO1xuICAgICAgICAgICAgICBIdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICBbIFwiZGl2aWRlclwiOyBcInVpLXNvcnQtZGlzYWJsZWRcIjsgXCJ1aS1zb3J0LWJvdHRvbS1hbmNob3JcIiBdO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIFtdO1xuICAgICAgXVxuICBpblxuICBsZXQgbmV3X2xpID1cbiAgICBbXG4gICAgICBIdG1sLmxpXG4gICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJ1aS1zb3J0LWRpc2FibGVkXCI7IFwidWktc29ydC1ib3R0b20tYW5jaG9yXCIgXSBdXG4gICAgICAgIFsgSHRtbC5hIH5hOlsgSHRtbC5hX2lkIGZpbGVfbmV3X2xpX2lkIF0gWyBIdG1sLmNkYXRhIFwiTmV3XCIgXSBdO1xuICAgIF1cbiAgaW5cblxuICBsZXQgb3Blbl9saSA9XG4gICAgW1xuICAgICAgSHRtbC5saVxuICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwidWktc29ydC1kaXNhYmxlZFwiOyBcInVpLXNvcnQtYm90dG9tLWFuY2hvclwiIF0gXVxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hIH5hOlsgSHRtbC5hX2lkIGZpbGVfb3Blbl9saV9pZCBdIFsgSHRtbC5jZGF0YSBcIk9wZW5cIiBdO1xuICAgICAgICAgIG9wZW5faW5wdXQ7XG4gICAgICAgIF07XG4gICAgXVxuICBpblxuXG4gIGxldCBjbG9zZV9saSA9XG4gICAgaGlkZV9vbl9lbXB0eVxuICAgICAgW1xuICAgICAgICBIdG1sLmxpXG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInVpLXNvcnQtZGlzYWJsZWRcIjsgXCJ1aS1zb3J0LWJvdHRvbS1hbmNob3JcIiBdIF1cbiAgICAgICAgICBbIEh0bWwuYSB+YTpbIEh0bWwuYV9pZCBmaWxlX2Nsb3NlX2xpX2lkIF0gWyBIdG1sLmNkYXRhIFwiQ2xvc2VcIiBdIF07XG4gICAgICBdXG4gIGluXG4gIGxldCBleHBvcnRfbGkgPVxuICAgIGhpZGVfb25fZW1wdHlcbiAgICAgIFtcbiAgICAgICAgSHRtbC5saVxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJ1aS1zb3J0LWRpc2FibGVkXCI7IFwidWktc29ydC1ib3R0b20tYW5jaG9yXCIgXSBdXG4gICAgICAgICAgWyBIdG1sLmEgfmE6WyBIdG1sLmFfaWQgZmlsZV9leHBvcnRfbGlfaWQgXSBbIEh0bWwuY2RhdGEgXCJFeHBvcnRcIiBdIF07XG4gICAgICBdXG4gIGluXG4gIFtdIEAgZmlsZV9saSBAIHNlcGFyYXRvcl9saSBAIG5ld19saSBAIG9wZW5fbGkgQCBjbG9zZV9saSBAIGV4cG9ydF9saVxuXG5sZXQgY29udGVudCA9XG4gIGxldCBsaV9saXN0ID1cbiAgICBSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWxcbiAgICAgIChSZWFjdC5TLm1hcCAoZnVuIG1vZGVsIC0+IGRyb3Bkb3duIG1vZGVsKSBTdGF0ZV9maWxlLm1vZGVsKVxuICBpblxuICBbXG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuIGJ0bi1kZWZhdWx0XCI7IFwiZHJvcGRvd24tdG9nZ2xlXCIgXTtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiZGF0YS10b2dnbGVcIiBcImRyb3Bkb3duXCI7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImFyaWEtaGFzcG9wdXBcIiBcInRydWVcIjtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiYXJpYS1leHBhbmRlZFwiIFwiZmFsc2VcIjtcbiAgICAgICAgICBUeXhtbF9qcy5SLmZpbHRlcl9hdHRyaWIgKEh0bWwuYV9kaXNhYmxlZCAoKSlcbiAgICAgICAgICAgIChSZWFjdC5TLmwyXG4gICAgICAgICAgICAgICAoZnVuIG1vZGVsIGZpbGUgLT5cbiAgICAgICAgICAgICAgICAgbWF0Y2ggbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9jdXJyZW50X2lkIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggZmlsZS5TdGF0ZV9maWxlLmN1cnJlbnQgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHwgU29tZSB7IFN0YXRlX2ZpbGUub3V0X29mX3N5bmM7IF8gfSAtPiBvdXRfb2Zfc3luYykpXG4gICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsIFN0YXRlX2ZpbGUubW9kZWwpO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwudHh0IFwiRmlsZVwiOyBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNhcmV0XCIgXSBdIFtdIF07XG4gICAgVHl4bWxfanMuUi5IdG1sLnVsXG4gICAgICB+YTpbIEh0bWwuYV9pZCBmaWxlX2Ryb3Bkb3duX21lbnVfaWQ7IEh0bWwuYV9jbGFzcyBbIFwiZHJvcGRvd24tbWVudVwiIF0gXVxuICAgICAgbGlfbGlzdDtcbiAgICBVaV9jb21tb24uY3JlYXRlX21vZGFsIH5pZDpmaWxlX25ld19tb2RhbF9pZCB+dGl0bGVfbGFiZWw6XCJOZXcgRmlsZVwiXG4gICAgICB+Ym9keTpcbiAgICAgICAgWyBbJWh0bWwge3w8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj58fSBbIGZpbGVfbmV3X2lucHV0IF0ge3w8L2Rpdj58fV0gXVxuICAgICAgfnN1Ym1pdF9sYWJlbDpcIkNyZWF0ZSBGaWxlXCJcbiAgICAgIH5zdWJtaXQ6XG4gICAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgIGxldCBmaWxlbmFtZSA6IHN0cmluZyA9IEpzLnRvX3N0cmluZyBmaWxlX25ld19pbnB1dF9kb20jIy52YWx1ZSBpblxuICAgICAgICAgICAgIGxldCAoKSA9IE1lbnVfZWRpdG9yX2ZpbGVfY29udHJvbGxlci5jcmVhdGVfZmlsZSBmaWxlbmFtZSBpblxuICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICBDb21tb24ubW9kYWwgfmlkOihcIiNcIiBeIGZpbGVfbmV3X21vZGFsX2lkKSB+YWN0aW9uOlwiaGlkZVwiXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBKcy5fZmFsc2UpKTtcbiAgXVxuXG5sZXQgb3JkZXJfZmlsZXMgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpID1cbiAgbGV0IGZpbGVuYW1lcyA6IHN0cmluZyBsaXN0ID1cbiAgICBDb21tb24uY2hpbGRyZW5fdmFsdWUgZWxlbWVudCBcImxpW2RhdGEtZmlsZS1pZF1cIiAoZnVuIGVsZW1lbnQgLT5cbiAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIGVsZW1lbnQgaW5cbiAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAoZWxlbWVudF9nZXRfZmlsZW5hbWUgZWxlbWVudClcbiAgICAgICAgICAoZnVuICgpIC0+IGZhaWx3aXRoIFwibWlzc2luZyBmaWxlbmFtZVwiKVxuICAgICAgICAgIEpzLnRvX3N0cmluZylcbiAgaW5cbiAgbGV0ICgpID0gTWVudV9lZGl0b3JfZmlsZV9jb250cm9sbGVyLm9yZGVyX2ZpbGVzIGZpbGVuYW1lcyBpblxuICAoKVxuXG5sZXQgZmlsZV9zZWxlY3RfaGFuZGxlciBfIF8gOiB1bml0IEx3dC50ID1cbiAgbGV0IG9wZW5faW5wdXRfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wZW5faW5wdXQgaW5cbiAgbGV0IGZpbGVzID0gSnMuT3B0ZGVmLmdldCBvcGVuX2lucHV0X2RvbSMjLmZpbGVzIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSBpblxuICBsZXQgZmlsZSA9IEpzLk9wdC5nZXQgKGZpbGVzIyNpdGVtIDApIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSBpblxuICBsZXQgZmlsZV9pZCA9IEpzLnRvX3N0cmluZyBmaWxlIyMubmFtZSBpblxuICBsZXQgKCkgPVxuICAgIE1lbnVfZWRpdG9yX2ZpbGVfY29udHJvbGxlci5jcmVhdGVfZmlsZVxuICAgICAgfnRleHQ6KEpzX29mX29jYW1sX2x3dC5GaWxlLnJlYWRBc1RleHQgZmlsZSlcbiAgICAgIGZpbGVfaWRcbiAgaW5cbiAgbGV0ICgpID0gb3Blbl9pbnB1dF9kb20jIy52YWx1ZSA6PSBKcy5zdHJpbmcgXCJcIiBpblxuICBMd3QucmV0dXJuX3VuaXRcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCBvcGVuX2lucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcGVuX2lucHV0IGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiAoXCIjXCIgXiBmaWxlX25ld19saV9pZCkgXCJjbGlja1wiXG4gICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLm1vZGFsIH5pZDooXCIjXCIgXiBmaWxlX25ld19tb2RhbF9pZCkgfmFjdGlvbjpcInNob3dcIiBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gKFwiI1wiIF4gZmlsZV9vcGVuX2xpX2lkKSBcImNsaWNrXCJcbiAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAoKiBjbGljayA6IHVuaXQgSnMubWV0aDsgKilcbiAgICAgICAgICAgbGV0ICgpID0gb3Blbl9pbnB1dF9kb20jI2NsaWNrIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiAoXCIjXCIgXiBmaWxlX2Nsb3NlX2xpX2lkKSBcImNsaWNrXCJcbiAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIuY2xvc2VfZmlsZSAoKSBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gKFwiI1wiIF4gZmlsZV9leHBvcnRfbGlfaWQpIFwiY2xpY2tcIlxuICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IE1lbnVfZWRpdG9yX2ZpbGVfY29udHJvbGxlci5leHBvcnRfY3VycmVudF9maWxlICgpIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcInNwYW5bZGF0YS1maWxlLWlkXVwiIFwiY2xpY2tcIlxuICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biAoZXZlbnQgOiBEb21faHRtbC5ldmVudCBKcy50KSAtPlxuICAgICAgICAgICAoKiBsZXQgKCkgPSBDb21tb24uZGVidWcgZXZlbnQgaW4gKilcbiAgICAgICAgICAgbGV0IHRhcmdldCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCBKcy5vcHQgPSBldmVudCMjLnRhcmdldCBpblxuICAgICAgICAgICBsZXQgZmlsZV9pZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCA9XG4gICAgICAgICAgICAgSnMuT3B0LmJpbmQgdGFyZ2V0IChmdW4gKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIC0+XG4gICAgICAgICAgICAgICAgIGVsZW1lbnRfZ2V0X2ZpbGVuYW1lIGVsZW1lbnQpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgSnMuT3B0LmNhc2UgZmlsZV9pZFxuICAgICAgICAgICAgICAgKGZ1biBfIC0+ICgpKVxuICAgICAgICAgICAgICAgKGZ1biBmaWxlX2lkIC0+XG4gICAgICAgICAgICAgICAgIE1lbnVfZWRpdG9yX2ZpbGVfY29udHJvbGxlci5zZXRfZmlsZSAoSnMudG9fc3RyaW5nIGZpbGVfaWQpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5jcmVhdGVfc29ydCBmaWxlX2Ryb3Bkb3duX21lbnVfaWQgKGZ1biBldmVudCBfICgqIHVpICopIC0+XG4gICAgICAgIGxldCB0YXJnZXQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMub3B0ID0gZXZlbnQjIy50YXJnZXQgaW5cbiAgICAgICAgSnMuT3B0LmNhc2UgdGFyZ2V0XG4gICAgICAgICAgKGZ1biBfIC0+ICgpKVxuICAgICAgICAgIChmdW4gKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIC0+XG4gICAgICAgICAgICBsZXQgaWQgOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgZWxlbWVudCMjLmlkIGluXG4gICAgICAgICAgICBpZiBmaWxlX2Ryb3Bkb3duX21lbnVfaWQgPSBpZCB0aGVuXG4gICAgICAgICAgICAgIG9yZGVyX2ZpbGVzIGVsZW1lbnRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgQ29tbW9uLmRlYnVnIChGb3JtYXQuc3ByaW50ZiBcInVuZXhwZWN0ZWQgaWQgJXNcIiBpZCkpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb25cbiAgICAgIChGb3JtYXQuc3ByaW50ZiBcImlucHV0LiVzXCIgZmlsZV9jb21waWxlX2NoZWNrYm94KVxuICAgICAgXCJjaGFuZ2VcIlxuICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biBldmVudCAtPlxuICAgICAgICAgICBsZXQgdGFyZ2V0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm9wdCA9IGV2ZW50IyMudGFyZ2V0IGluXG4gICAgICAgICAgIGxldCBmaWxlX2lkIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ID1cbiAgICAgICAgICAgICBKcy5PcHQuYmluZCB0YXJnZXQgKGZ1biAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgICAgZWxlbWVudF9nZXRfZmlsZW5hbWUgZWxlbWVudClcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGlzX2NoZWNrZWQgOiBib29sID1cbiAgICAgICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgICAgICAoSnMuT3B0LmNhc2UgdGFyZ2V0XG4gICAgICAgICAgICAgICAgICAoZnVuIF8gLT4gSnMuX2ZhbHNlKVxuICAgICAgICAgICAgICAgICAgKGZ1biAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKEpzLlVuc2FmZS5jb2VyY2UgZWxlbWVudCA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50KSMjLmNoZWNrZWQpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIEpzLk9wdC5jYXNlIGZpbGVfaWRcbiAgICAgICAgICAgICAgIChmdW4gXyAtPiAoKSlcbiAgICAgICAgICAgICAgIChmdW4gZmlsZV9pZCAtPlxuICAgICAgICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgZmlsZV9pZCBpblxuICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgIE1lbnVfZWRpdG9yX2ZpbGVfY29udHJvbGxlci5zZXRfZmlsZV9jb21waWxlXG4gICAgICAgICAgICAgICAgICAgICAoSnMudG9fc3RyaW5nIGZpbGVfaWQpIGlzX2NoZWNrZWRcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgTHd0LmFzeW5jIChmdW4gKCkgLT5cbiAgICAgICAgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qc19ldmVudHMuY2hhbmdlc1xuICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3Blbl9pbnB1dClcbiAgICAgICAgICBmaWxlX3NlbGVjdF9oYW5kbGVyKVxuICBpblxuICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxubGV0IHdpdGhfZmlsZSAoaGFuZGxlciA6IChzdHJpbmcgKiBzdHJpbmcpIEFwaS5yZXN1bHQgLT4gdW5pdCBBcGkucmVzdWx0IEx3dC50KVxuICAgID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fIChTdGF0ZV9maWxlLmdldF9maWxlICgpID4+PSBoYW5kbGVyKSA+Pj0gZnVuIF8gLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNldF9jb250ZW50IH4oZmlsZW5hbWUgOiBzdHJpbmcpIH4oZmlsZWNvbnRlbnQgOiBzdHJpbmcpIDogdW5pdCA9XG4gIHdpdGhfZmlsZVxuICAgIChBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoXywgY3VycmVudF9maWxlbmFtZSkgLT5cbiAgICAgICAgIGlmIGZpbGVuYW1lID0gY3VycmVudF9maWxlbmFtZSB0aGVuXG4gICAgICAgICAgIFN0YXRlX2ZpbGUuc2V0X2NvbnRlbnQgZmlsZWNvbnRlbnQgPj49IGZ1biByIC0+XG4gICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2NvbWJpbmUgWyByOyByJyBdKVxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiZmlsZSBuYW1lIG1pc21hdGNoICVzICVzXCIgZmlsZW5hbWUgY3VycmVudF9maWxlbmFtZVxuICAgICAgICAgICBpblxuICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgbXNnKVxuICAgICAgICAgKSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENvZGVtaXJyb3Jcbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcblxubGV0IGVkaXRvcl9mdWxsLCBzZXRfZWRpdG9yX2Z1bGwgPSBSZWFjdC5TLmNyZWF0ZSAoZmFsc2UgOiBib29sKVxubGV0IGZpbGVuYW1lLCBzZXRfZmlsZW5hbWUgPSBSZWFjdC5TLmNyZWF0ZSAoTm9uZSA6IHN0cmluZyBvcHRpb24pXG5sZXQgbW92ZV9jdXJzb3JfaG9vayA9IHJlZiBOb25lXG5sZXQgc2V0X21vdmVfY3Vyc29yIGxvYyA9IE9wdGlvbi5pdGVyIChmdW4gZiAtPiBmIGxvYykgIW1vdmVfY3Vyc29yX2hvb2tcblxubGV0IGZpbGVfbGFiZWwgPVxuICBUeXhtbF9qcy5SLkh0bWwudHh0XG4gICAgKFJlYWN0LlMubWFwIChPcHRpb25fdXRpbC51bnNvbWUgXCJcIikgU3RhdGVfZmlsZS5jdXJyZW50X2ZpbGVuYW1lKVxuXG5sZXQgdG9nZ2xlX2J1dHRvbl9pZCA9IFwidG9nZ2xlX2J1dHRvblwiXG5cbmxldCB0b2dnbGVfYnV0dG9uID1cbiAgSHRtbC5hXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCB0b2dnbGVfYnV0dG9uX2lkO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIjsgXCJwdWxsLXJpZ2h0XCIgXTtcbiAgICAgIF1cbiAgICBbIEh0bWwuY2RhdGEgXCJ0b2dnbGVcIiBdXG5cbmxldCBwYW5lbF9oZWFkaW5nX2dyb3VwX2lkID0gXCJwYW5lbF9oZWFkaW5nX2dyb3VwXCJcblxubGV0IHBhbmVsX2hlYWRpbmcgPVxuICBsZXQgbWVudV9lZGl0b3JfZmlsZV9jb250ZW50IDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sNS5lbHQgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuLWdyb3VwXCIgXTsgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcImdyb3VwXCI7XG4gICAgICAgIF1cbiAgICAgIE1lbnVfZWRpdG9yX2ZpbGUuY29udGVudFxuICBpblxuICBsZXQgYnV0dG9ucyA9IG1lbnVfZWRpdG9yX2ZpbGVfY29udGVudCA6OiBbIHRvZ2dsZV9idXR0b24gXSBpblxuICBbJWh0bWxcbiAgICB7fDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICA8ZGl2IGlkPVwifH1cbiAgICAgIHBhbmVsX2hlYWRpbmdfZ3JvdXBfaWQge3xcIiBjbGFzcz1cImNvbC1tZC0xMCBidG4tZ3JvdXBcIj58fSBidXR0b25zXG4gICAgICB7fDwvZGl2PlxuICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yIG9uZWxpbmVyIGZpbGVuYW1lXCI+fH1cbiAgICAgIFsgZmlsZV9sYWJlbCBdXG4gICAgICB7fDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj58fV1cblxubGV0IGNvZGVtaXJyb3JfaWQgPSBcImNvZGUtbWlycm9yXCJcbmxldCBlZGl0b3JfcGFuZWxfaWQgPSBcImVkaXRvci1wYW5lbFwiXG5cbmxldCBjb250ZW50ICgpID1cbiAgbGV0IHRleHRhcmVhID0gSHRtbC50ZXh0YXJlYSB+YTpbIEh0bWwuYV9pZCBjb2RlbWlycm9yX2lkIF0gKEh0bWwudHh0IFwiXCIpIGluXG4gIEh0bWwuZGl2XG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZsZXgtY29udGVudFwiOyBcInBhbmVsXCI7IFwicGFuZWwtZGVmYXVsdFwiIF0gXVxuICAgIFtcbiAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1oZWFkaW5nXCIgXSBdIFsgcGFuZWxfaGVhZGluZyBdO1xuICAgICAgSHRtbC5kaXZcbiAgICAgICAgfmE6XG4gICAgICAgICAgW1xuICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBtb2RlbC5TdGF0ZV9maWxlLmN1cnJlbnQgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmhpZGVfY29kZW1pcnJvciAoKSBpblxuICAgICAgICAgICAgICAgICAgICAgWyBcIm5vLXBhbmVsLWJvZHlcIjsgXCJmbGV4LWNvbnRlbnRcIiBdXG4gICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5zaG93X2NvZGVtaXJyb3IgKCkgaW5cbiAgICAgICAgICAgICAgICAgICAgIFsgXCJwYW5lbC1ib2R5XCI7IFwiZmxleC1jb250ZW50XCIgXSlcbiAgICAgICAgICAgICAgICAgU3RhdGVfZmlsZS5tb2RlbCk7XG4gICAgICAgICAgICBIdG1sLmFfaWQgZWRpdG9yX3BhbmVsX2lkO1xuICAgICAgICAgIF1cbiAgICAgICAgWyB0ZXh0YXJlYSBdO1xuICAgIF1cblxubGV0IGVycm9yX2xpbnQgZXJyb3JzIDogQ29kZW1pcnJvci5saW50IEpzLnQgSnMuanNfYXJyYXkgSnMudCA9XG4gIGxldCBwb3NpdGlvbiBwID0gbmV3JWpzIENvZGVtaXJyb3IucG9zaXRpb24gKHAuTG9jLmxpbmUgLSAxKSBwLkxvYy5jaHIgaW5cbiAgbGV0IGh5ZHJhdGUgKGVycm9yIDogQXBpX3R5cGVzX2oubWVzc2FnZSkgOiBsaW50IEpzLnQgb3B0aW9uID1cbiAgICBtYXRjaCBlcnJvci5SZXN1bHRfdXRpbC5yYW5nZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcmFuZ2UgLT5cbiAgICAgIChtYXRjaCBSZWFjdC5TLnZhbHVlIFN0YXRlX2ZpbGUuY3VycmVudF9maWxlbmFtZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGZpbGVfaWQgLT5cbiAgICAgICAgaWYgcmFuZ2UuTG9jLmZpbGUgPSBmaWxlX2lkIHRoZW5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoQ29kZW1pcnJvci5jcmVhdGVfbGludFxuICAgICAgICAgICAgICAgfm1lc3NhZ2U6ZXJyb3IuUmVzdWx0X3V0aWwudGV4dFxuICAgICAgICAgICAgICAgICAoKiBUaGlzIGlzIGEgYml0IG9mIGEgaGFjayAuLi4gaSBhbSB0cnlpbmcgdG8ga2VlcFxuICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb2RlIG1pcnJvciBjb2RlIGluZGVwZW5kZW50IG9mIHRoZSBhcGkgY29kZS5cbiAgICAgICAgICAgICAgICAgKilcbiAgICAgICAgICAgICAgIH5zZXZlcml0eTpcbiAgICAgICAgICAgICAgICAgKG1hdGNoIGVycm9yLlJlc3VsdF91dGlsLnNldmVyaXR5IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBMb2dzLkFwcCAtPiBDb2RlbWlycm9yLkVycm9yXG4gICAgICAgICAgICAgICAgIHwgTG9ncy5FcnJvciAtPiBDb2RlbWlycm9yLkVycm9yXG4gICAgICAgICAgICAgICAgIHwgTG9ncy5XYXJuaW5nIC0+IENvZGVtaXJyb3IuV2FybmluZ1xuICAgICAgICAgICAgICAgICB8IExvZ3MuSW5mbyAtPiBDb2RlbWlycm9yLldhcm5pbmdcbiAgICAgICAgICAgICAgICAgfCBMb2dzLkRlYnVnIC0+IENvZGVtaXJyb3IuV2FybmluZylcbiAgICAgICAgICAgICAgIH5mcm9tOihwb3NpdGlvbiByYW5nZS5Mb2MuZnJvbV9wb3NpdGlvbilcbiAgICAgICAgICAgICAgIH50b186KHBvc2l0aW9uIHJhbmdlLkxvYy50b19wb3NpdGlvbikpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lKVxuICBpblxuICBKcy5hcnJheVxuICAgIChBcnJheS5vZl9saXN0XG4gICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBhY2MgdmFsdWUgLT5cbiAgICAgICAgICAgIG1hdGNoIGh5ZHJhdGUgdmFsdWUgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgfCBTb21lIHZhbHVlIC0+IHZhbHVlIDo6IGFjYylcbiAgICAgICAgICBbXSBlcnJvcnMpKVxuXG5sZXQgc2V0dXBfbGludCBfIF8gXyA9IGVycm9yX2xpbnQgKFJlYWN0LlMudmFsdWUgU3RhdGVfZXJyb3IuZXJyb3JzKVxuXG4oKiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEwNTc1MzQzL2NvZGVtaXJyb3ItaXMtaXQtcG9zc2libGUtdG8tc2Nyb2xsLXRvLWEtbGluZS1zby10aGF0LWl0LWlzLWluLXRoZS1taWRkbGUtb2YtdyAqKVxubGV0IGp1bXBfdG9fbGluZSAoY29kZW1pcnJvciA6IGNvZGVtaXJyb3IgSnMudCkgKGxpbmUgOiBpbnQpIDogdW5pdCA9XG4gIGxldCBwb3NpdGlvbiA6IHBvc2l0aW9uIEpzLnQgPSBuZXclanMgQ29kZW1pcnJvci5wb3NpdGlvbiBsaW5lIDAgaW5cbiAgbGV0IG1vZGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgPSBKcy5zb21lIChKcy5zdHJpbmcgXCJsb2NhbFwiKSBpblxuICBsZXQgY29vcmRzIDogQ29kZW1pcnJvci5kaW1lbnNpb24gSnMudCA9XG4gICAgY29kZW1pcnJvciMjY2hhckNvb3JkcyBwb3NpdGlvbiBtb2RlXG4gIGluXG4gIGxldCB0b3AgOiBpbnQgPSBjb29yZHMjIy50b3AgaW5cbiAgbGV0IGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgPSBjb2RlbWlycm9yIyNnZXRTY3JvbGxlckVsZW1lbnQgaW5cbiAgbGV0IG1pZGRsZUhlaWdodCA6IGludCA9IGVsZW1lbnQjIy5vZmZzZXRIZWlnaHQgLyAyIGluXG4gIGxldCBzY3JvbGxMaW5lIDogaW50ID0gdG9wIC0gbWlkZGxlSGVpZ2h0IC0gNSBpblxuICBsZXQgKCkgPSBjb2RlbWlycm9yIyNzY3JvbGxUbyBKcy5udWxsIChKcy5zb21lIHNjcm9sbExpbmUpIGluXG4gICgpXG5cbmxldCBkb250X2djX21lX3NpZ25hbHMgPSByZWYgW11cblxubGV0IG9ubG9hZCAoKSA6IHVuaXQgPVxuICBsZXQgKCkgPSBNZW51X2VkaXRvcl9maWxlLm9ubG9hZCAoKSBpblxuICBsZXQgbGludF9jb25maWcgPSBDb2RlbWlycm9yLmNyZWF0ZV9saW50X2NvbmZpZ3VyYXRpb24gKCkgaW5cbiAgbGV0ICgpID0gbGludF9jb25maWcjIy5nZXRBbm5vdGF0aW9ucyA6PSBzZXR1cF9saW50IGluXG4gIGxldCAoKSA9IGxpbnRfY29uZmlnIyMubGludE9uQ2hhbmdlIDo9IEpzLl9mYWxzZSBpblxuICBsZXQgY29uZmlndXJhdGlvbiA9IENvZGVtaXJyb3IuZGVmYXVsdF9jb25maWd1cmF0aW9uIGluXG4gIGxldCBndXR0ZXJfb3B0aW9ucyA9XG4gICAgSnMuc3RyaW5nIFwiYnJlYWtwb2ludHMsQ29kZU1pcnJvci1saW50LW1hcmtlcnMsQ29kZU1pcnJvci1saW5lbnVtYmVyc1wiXG4gIGluXG4gIGxldCBndXR0ZXJfb3B0aW9uIDogSnMuc3RyaW5nX2FycmF5IEpzLnQgPVxuICAgIGd1dHRlcl9vcHRpb25zIyNzcGxpdCAoSnMuc3RyaW5nIFwiLFwiKVxuICBpblxuICBsZXQgdGV4dGFyZWEgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgPSBVaV9jb21tb24uaWRfZG9tIFwiY29kZS1taXJyb3JcIiBpblxuICBsZXQgKCkgPVxuICAgIGNvbmZpZ3VyYXRpb24jIy5saW5lTnVtYmVycyA6PSBKcy5fdHJ1ZTtcbiAgICBjb25maWd1cmF0aW9uIyMubGluZVdyYXBwaW5nIDo9IEpzLl90cnVlO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5zdHlsZUFjdGl2ZUxpbmUgOj0gSnMuX3RydWU7XG4gICAgY29uZmlndXJhdGlvbiMjLm1hdGNoQnJhY2tldHMgOj0gSnMuX3RydWU7XG4gICAgY29uZmlndXJhdGlvbiMjLmF1dG9mb2N1cyA6PSBKcy5fdHJ1ZTtcbiAgICBjb25maWd1cmF0aW9uIyMuZ3V0dGVycyA6PSBndXR0ZXJfb3B0aW9uO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5saW50IDo9IGxpbnRfY29uZmlnO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5tb2RlIDo9IEpzLnN0cmluZyBcIkthcHBhXCJcbiAgaW5cbiAgbGV0IGNvZGVtaXJyb3IgOiBjb2RlbWlycm9yIEpzLnQgPVxuICAgIENvZGVtaXJyb3IuZnJvbVRleHRBcmVhIHRleHRhcmVhIGNvbmZpZ3VyYXRpb25cbiAgaW5cbiAgbGV0ICgpID0gY29kZW1pcnJvciMjc2V0VmFsdWUgKEpzLnN0cmluZyBcIlwiKSBpblxuICBsZXQgKCkgPVxuICAgIFN1YnBhbmVsX2VkaXRvcl9jb250cm9sbGVyLndpdGhfZmlsZVxuICAgICAgKFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgIH5vazooZnVuIChjb250ZW50LCBpZCkgLT5cbiAgICAgICAgICAgbGV0ICgpID0gc2V0X2ZpbGVuYW1lIChTb21lIGlkKSBpblxuICAgICAgICAgICBsZXQgKCkgPSBjb2RlbWlycm9yIyNzZXRWYWx1ZSAoSnMuc3RyaW5nIGNvbnRlbnQpIGluXG4gICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgIH5lcnJvcjooZnVuIF8gLT5cbiAgICAgICAgICAgKCogaWdub3JlIGlmIG1pc3NpbmcgZmlsZSAqKVxuICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvZGVtaXJyb3IuY29tbWFuZHMjIy5zYXZlIDo9XG4gICAgICBmdW4gXyAtPiBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIuZXhwb3J0X2N1cnJlbnRfZmlsZSAoKVxuICBpblxuICBsZXQgdGltZW91dCA6IERvbV9odG1sLnRpbWVvdXRfaWQgb3B0aW9uIHJlZiA9IHJlZiBOb25lIGluXG4gIGxldCBoYW5kbGVyIGNvZGVtaXJyb3IgY2hhbmdlID1cbiAgICBsZXQgKCkgPSBTdGF0ZV9maWxlLm91dF9vZl9zeW5jIHRydWUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggIXRpbWVvdXQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgdGltZW91dCAtPiBEb21faHRtbC53aW5kb3cjI2NsZWFyVGltZW91dCB0aW1lb3V0XG4gICAgaW5cbiAgICBsZXQgZGVsYXkgOiBmbG9hdCA9XG4gICAgICBpZiAoSnMuc3RyX2FycmF5IGNoYW5nZSMjLnRleHQpIyMubGVuZ3RoID4gMSB8fCBTdGF0ZV9lcnJvci5oYXNfZXJyb3JzICgpXG4gICAgICB0aGVuXG4gICAgICAgIDEuMCAqLiAxMDAwLjBcbiAgICAgIGVsc2VcbiAgICAgICAgNS4wICouIDEwMDAuMFxuICAgIGluXG4gICAgbGV0IGhhbmRsZV90aW1lb3V0ICgpID1cbiAgICAgIGxldCAoKSA9IFN0YXRlX2ZpbGUub3V0X29mX3N5bmMgZmFsc2UgaW5cbiAgICAgIG1hdGNoIFJlYWN0LlMudmFsdWUgZmlsZW5hbWUgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgZmlsZW5hbWUgLT5cbiAgICAgICAgU3VicGFuZWxfZWRpdG9yX2NvbnRyb2xsZXIuc2V0X2NvbnRlbnQgfmZpbGVuYW1lXG4gICAgICAgICAgfmZpbGVjb250ZW50OihKcy50b19zdHJpbmcgY29kZW1pcnJvciMjZ2V0VmFsdWUpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgdGltZW91dCA6PVxuICAgICAgICBTb21lXG4gICAgICAgICAgKERvbV9odG1sLndpbmRvdyMjc2V0VGltZW91dFxuICAgICAgICAgICAgIChKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPiBoYW5kbGVfdGltZW91dCAoKSkpXG4gICAgICAgICAgICAgZGVsYXkpXG4gICAgaW5cbiAgICAoKVxuICBpblxuICBsZXQgKCkgPSBjb2RlbWlycm9yIyNvbkNoYW5nZSBoYW5kbGVyIGluXG4gIGxldCAoKSA9XG4gICAgY29kZW1pcnJvciMjb25DdXJzb3JBY3Rpdml0eSAoZnVuIF9jb2RlbWlycm9yIC0+XG4gICAgICAgIGxldCBwb3MgPSBjb2RlbWlycm9yIyNnZXRDdXJzb3IgaW5cbiAgICAgICAgbGV0IGxpbmUgPSBwb3MjIy5saW5lIGluXG4gICAgICAgIGxldCBjaCA9IHBvcyMjLmNoIGluXG4gICAgICAgIFN0YXRlX2ZpbGUuY3Vyc29yX2FjdGl2aXR5IH5saW5lIH5jaClcbiAgaW5cbiAgbGV0IHRvZ2dsZV9idXR0b25fZG9tIDogRG9tX2h0bWwubGlua0VsZW1lbnQgSnMudCA9XG4gICAgSnMuVW5zYWZlLmNvZXJjZVxuICAgICAgKEpzLk9wdC5nZXRcbiAgICAgICAgIChVaV9jb21tb24uZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgdG9nZ2xlX2J1dHRvbl9pZCkpXG4gICAgICAgICAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgdG9nZ2xlX2J1dHRvbl9kb20jIy5vbmNsaWNrXG4gICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCBlZGl0b3JfZnVsbCA9IFJlYWN0LlMudmFsdWUgZWRpdG9yX2Z1bGwgaW5cbiAgICAgICAgICAgbGV0ICgpID0gc2V0X2VkaXRvcl9mdWxsIChub3QgZWRpdG9yX2Z1bGwpIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIGRvbnRfZ2NfbWVfc2lnbmFscyA6PVxuICAgICAgWyBSZWFjdC5TLm1hcCAoZnVuIF8gLT4gY29kZW1pcnJvciMjcGVyZm9ybUxpbnQpIFN0YXRlX2Vycm9yLmVycm9ycyBdXG4gIGluXG4gIGxldCAoKSA9XG4gICAgU3RhdGVfZmlsZS5yZWdpc3Rlcl9yZWZyZXNoX2ZpbGVfaG9vayAoZnVuIHJlZnJlc2ggLT5cbiAgICAgICAgbGV0ICgpID0gc2V0X2ZpbGVuYW1lIChTb21lIHJlZnJlc2guU3RhdGVfZmlsZS5maWxlbmFtZSkgaW5cbiAgICAgICAgbGV0IGNhbmQgPSBKcy5zdHJpbmcgcmVmcmVzaC5TdGF0ZV9maWxlLmNvbnRlbnQgaW5cbiAgICAgICAgaWYgY2FuZCA8PiBjb2RlbWlycm9yIyNnZXRWYWx1ZSB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPSBjb2RlbWlycm9yIyNzZXRWYWx1ZSBjYW5kIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIG1hdGNoIHJlZnJlc2guU3RhdGVfZmlsZS5saW5lIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIGxpbmUgLT4ganVtcF90b19saW5lIGNvZGVtaXJyb3IgbGluZVxuICAgICAgICAgIGluXG4gICAgICAgICAgKClcbiAgICAgICAgKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtb3ZlX2N1cnNvcl9ob29rIDo9XG4gICAgICBTb21lXG4gICAgICAgIChmdW4gcG9zIC0+XG4gICAgICAgICAgaWYgU29tZSBwb3MuTG9jLmZpbGUgPSBSZWFjdC5TLnZhbHVlIGZpbGVuYW1lIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGJlZyA9IHBvcy5Mb2MuZnJvbV9wb3NpdGlvbiBpblxuICAgICAgICAgICAgbGV0IGZpcnN0ID1cbiAgICAgICAgICAgICAgbmV3JWpzIENvZGVtaXJyb3IucG9zaXRpb24gKGJlZy5Mb2MubGluZSAtIDEpIGJlZy5Mb2MuY2hyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVuID0gcG9zLkxvYy5mcm9tX3Bvc2l0aW9uIGluXG4gICAgICAgICAgICBsZXQgbGFzdCA9XG4gICAgICAgICAgICAgIG5ldyVqcyBDb2RlbWlycm9yLnBvc2l0aW9uIChlbi5Mb2MubGluZSAtIDEpIGVuLkxvYy5jaHJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBjb2RlbWlycm9yIyNzZXRTZWxlY3Rpb24gZmlyc3QgbGFzdFxuICAgICAgICAgICkpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCBwcmludF9zdHJpbmcgcyBsaXN0ID0gSHRtbC50eHQgcyA6OiBsaXN0XG5sZXQgcHJpbnRfbmV3bGluZSBsaXN0ID0gcHJpbnRfc3RyaW5nIFwiXFxuXCIgbGlzdFxuXG5sZXQgcHJpbnRfc2luZ2xlX2JpbmRpbmdfc3RhdGUgYSBsaXN0ID1cbiAgcHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLmJpbmRpbmdfc3RhdGVfb3BlbmluZ19iYWNrZW5kX3N5bWJvbFxuICAgIChwcmludF9zdHJpbmcgYVxuICAgICAgIChwcmludF9zdHJpbmcgUHVibGljX2RhdGEuYmluZGluZ19zdGF0ZV9jbG9zaW5nX2JhY2tlbmRfc3ltYm9sIGxpc3QpKVxuXG5sZXQgcHJpbnRfc2luZ2xlX2ludGVybmFsX3N0YXRlIGEgbGlzdCA9XG4gIHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5pbnRlcm5hbF9zdGF0ZV9vcGVuaW5nX2JhY2tlbmRfc3ltYm9sXG4gICAgKHByaW50X3N0cmluZyBhXG4gICAgICAgKHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5pbnRlcm5hbF9zdGF0ZV9jbG9zaW5nX2JhY2tlbmRfc3ltYm9sIGxpc3QpKVxuXG5sZXQgcHJpbnRfY291bnRlcl9pbnRlcnZhbCAoYSwgYikgbGlzdCA9XG4gIGxldCBvcGVuX3JhbmdlLCBpbmYgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgKCBQdWJsaWNfZGF0YS5vcGVuX2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2wsXG4gICAgICAgIFB1YmxpY19kYXRhLm1pbnVzX2luZmluaXR5X3N5bWJvbCApXG4gICAgfCBTb21lIGEgLT4gUHVibGljX2RhdGEub3Blbl9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sLCBzdHJpbmdfb2ZfaW50IGFcbiAgaW5cbiAgbGV0IGNsb3NlX3JhbmdlLCBzdXAgPVxuICAgIG1hdGNoIGIgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgKCBQdWJsaWNfZGF0YS5jbG9zZV9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sLFxuICAgICAgICBQdWJsaWNfZGF0YS5wbHVzX2luZmluaXR5X3N5bWJvbCApXG4gICAgfCBTb21lIGIgLT4gUHVibGljX2RhdGEuY2xvc2VfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbCwgc3RyaW5nX29mX2ludCBiXG4gIGluXG4gIHByaW50X3N0cmluZyBvcGVuX3JhbmdlXG4gICAgKHByaW50X3N0cmluZyBpbmZcbiAgICAgICAocHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLmNvdW50ZXJfc3RhdGVfcmFuZ2VfYmFja2VuZF9zeW1ib2xcbiAgICAgICAgICAocHJpbnRfc3RyaW5nIHN1cCAocHJpbnRfc3RyaW5nIGNsb3NlX3JhbmdlIGxpc3QpKSkpXG5cbmxldCBwcmludF9jb3VudGVyX3N0YXRlIChhLCBiKSBsaXN0ID1cbiAgcHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLmNvdW50ZXJfc3RhdGVfb3BlbmluZ19iYWNrZW5kX3N5bWJvbFxuICAgIChwcmludF9jb3VudGVyX2ludGVydmFsIChhLCBiKVxuICAgICAgIChwcmludF9zdHJpbmcgUHVibGljX2RhdGEuY291bnRlcl9zdGF0ZV9jbG9zaW5nX2JhY2tlbmRfc3ltYm9sIGxpc3QpKVxuXG5sZXQgcHJpbnRfc2l0ZSBzaXRlIGxpc3QgPVxuICBsZXQgc2l0ZV9uYW1lLCBwcm9wX29wdCwgYmluZGluZ19vcHQsIGNvdW50ZXJfb3B0ID0gc2l0ZSBpblxuICBsZXQgbGlzdCA9XG4gICAgbWF0Y2ggYmluZGluZ19vcHQgd2l0aFxuICAgIHwgTm9uZSAtPiBwcmludF9zdHJpbmcgUHVibGljX2RhdGEubWlzc2luZ19iaW5kaW5nX3NpdGVfYmFja2VuZF9zeW1ib2wgbGlzdFxuICAgIHwgU29tZSBQdWJsaWNfZGF0YS5GcmVlIC0+XG4gICAgICBwcmludF9zaW5nbGVfYmluZGluZ19zdGF0ZSBQdWJsaWNfZGF0YS5mcmVlX2JhY2tlbmRfc3ltYm9sIGxpc3RcbiAgICB8IFNvbWUgUHVibGljX2RhdGEuV2lsZGNhcmQgLT5cbiAgICAgIHByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlIFB1YmxpY19kYXRhLndpbGRjYXJkX2JhY2tlbmRfc3ltYm9sIGxpc3RcbiAgICB8IFNvbWUgUHVibGljX2RhdGEuQm91bmRfdG9fdW5rbm93biAtPlxuICAgICAgcHJpbnRfc2luZ2xlX2JpbmRpbmdfc3RhdGUgUHVibGljX2RhdGEuYm91bmRfdG9fdW5rbm93bl9iYWNrZW5kX3N5bWJvbFxuICAgICAgICBsaXN0XG4gICAgfCBTb21lIChQdWJsaWNfZGF0YS5CaW5kaW5nX3R5cGUgKGFnZW50X25hbWUsIHNpdGVfbmFtZSkpIC0+XG4gICAgICBsZXQgYmluZGluZ190eXBlX3N5bWJvbCA9IFB1YmxpY19kYXRhLmJpbmRpbmdfdHlwZV9iYWNrZW5kX3N5bWJvbCBpblxuICAgICAgcHJpbnRfc2luZ2xlX2JpbmRpbmdfc3RhdGVcbiAgICAgICAgKFB1YmxpY19kYXRhLnN0cmluZ19vZl9iaW5kaW5nX3R5cGUgfmJpbmRpbmdfdHlwZV9zeW1ib2wgfmFnZW50X25hbWVcbiAgICAgICAgICAgfnNpdGVfbmFtZSAoKSlcbiAgICAgICAgbGlzdFxuICAgIHwgU29tZSAoUHVibGljX2RhdGEuQm91bmRfdG8gaSkgLT5cbiAgICAgIHByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlIChzdHJpbmdfb2ZfaW50IGkpIGxpc3RcbiAgaW5cbiAgbGV0IGxpc3QgPVxuICAgIG1hdGNoIGNvdW50ZXJfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gbGlzdFxuICAgIHwgU29tZSBhIC0+IHByaW50X2NvdW50ZXJfc3RhdGUgYSBsaXN0XG4gIGluXG4gIGxldCBsaXN0ID1cbiAgICBtYXRjaCBwcm9wX29wdCB3aXRoXG4gICAgfCBOb25lIC0+IGxpc3RcbiAgICB8IFNvbWUgYSAtPiBwcmludF9zaW5nbGVfaW50ZXJuYWxfc3RhdGUgYSBsaXN0XG4gIGluXG4gIHByaW50X3N0cmluZyBzaXRlX25hbWUgbGlzdFxuXG5sZXQgcHJpbnRfYWdlbnQgYWdlbnQgbGlzdCA9XG4gIGxldCBhZ2VudF9uYW1lLCBpbnRlcmZhY2UgPSBhZ2VudCBpblxuICBsZXQgbGlzdCA9IHByaW50X3N0cmluZyBcIilcIiBsaXN0IGluXG4gIGxldCBsaXN0ID1cbiAgICBzbmRcbiAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgKGZ1biAoYiwgbGlzdCkgc2l0ZSAtPlxuICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgaWYgYiB0aGVuXG4gICAgICAgICAgICAgICBwcmludF9zdHJpbmcgXCIsXCIgbGlzdFxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGxpc3QgPSBwcmludF9zaXRlIHNpdGUgbGlzdCBpblxuICAgICAgICAgICB0cnVlLCBsaXN0KVxuICAgICAgICAgKGZhbHNlLCBsaXN0KSBpbnRlcmZhY2UpXG4gIGluXG4gIGxldCBsaXN0ID0gSHRtbC50eHQgXCIoXCIgOjogbGlzdCBpblxuICBsZXQgbGlzdCA9IEh0bWwudHh0IGFnZW50X25hbWUgOjogbGlzdCBpblxuICBsaXN0XG5cbmxldCBwcmludF9zaXRlX2dyYXBoIGFnZW50X2xpc3QgbGlzdCA9XG4gIHNuZFxuICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgIChmdW4gKGIsIGxpc3QpIGFnZW50IC0+XG4gICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgIGlmIGIgdGhlblxuICAgICAgICAgICAgIHByaW50X3N0cmluZyBcIixcIiBsaXN0XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsaXN0XG4gICAgICAgICBpblxuICAgICAgICAgdHJ1ZSwgcHJpbnRfYWdlbnQgYWdlbnQgbGlzdClcbiAgICAgICAoZmFsc2UsIGxpc3QpIChMaXN0LnJldiBhZ2VudF9saXN0KSlcblxubGV0IHByaW50X21ldGhvZF9oYW5kbGVyIG1oID1cbiAgbGV0IHVuY2F1Z2h0ID0gRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF91bmNhdWdodF9leGNlcHRpb25fbGlzdCBtaCBpblxuICBsZXQgY2F1Z2h0ID0gRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3QgbWggaW5cbiAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgKGZ1biB4IGwgLT5cbiAgICAgIEh0bWwucFxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYVwiIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5wcF9jYXVnaHQgeCk7XG4gICAgICAgIF1cbiAgICAgIDo6IGwpXG4gICAgY2F1Z2h0XG4gICAgKExpc3QubWFwXG4gICAgICAgKGZ1biB4IC0+XG4gICAgICAgICBIdG1sLnBcbiAgICAgICAgICAgW1xuICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIucHBfdW5jYXVnaHQgeCk7XG4gICAgICAgICAgIF0pXG4gICAgICAgdW5jYXVnaHQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgbmF2bGkgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5sZXQgdGFiX3dhc19hY3RpdmUgPSByZWYgZmFsc2VcblxuKCogdG9kbyBhZGQgYnV0dG9uIHRvIHN3aXRjaCBvbi9vZmYgdGhlIGRpc3BsYXkgb2YgdGhlIGluZm9ybWF0aW9uIG9mIGVhY2ggYWJzdHJhY3QgZG9tYWluXG4gICBsZXQgbm9uX3JlbGF0aW9uYWwgPSByZWYgdHJ1ZVxuICAgbGV0IHJlbGF0aW9uYWwgPSByZWYgdHJ1ZVxuICAgbGV0IHNpdGVfYWNjcm9zcyA9IHJlZiB0cnVlXG4gICBsZXQgcGFyYWxsZWxfYm9uZCA9IHJlZiB0cnVlXG4qKVxuXG5sZXQgY29udGVudCAoKSA9XG4gIGxldCBjb25zdHJhaW50c19kaXYgPVxuICAgIFN0YXRlX3Byb2plY3Qub25fcHJvamVjdF9jaGFuZ2VfYXN5bmMgfm9uOnRhYl9pc19hY3RpdmUgKClcbiAgICAgIChSZWFjdC5TLmNvbnN0ICgpKSBbXSAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpICgpIC0+XG4gICAgICAgIG1hbmFnZXIjZ2V0X2NvbnN0cmFpbnRzX2xpc3RcbiAgICAgICAgPnw9IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgfm9rOihmdW4gY29uc3RyYWludHMgLT5cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBwYW5lbHMgKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqbWF0Y2ggYiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gcGFuZWxzXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBfIDo6IF8gLT4qKVxuICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dHMgPVxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgbGVtbWEgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGh5cCA9IFB1YmxpY19kYXRhLmdldF9oeXAgbGVtbWEgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbmNsdXNpb24gPSBQdWJsaWNfZGF0YS5nZXRfcmVmaW5lbWVudCBsZW1tYSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY29uY2x1c2lvbiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbIHNpdGVfZ3JhcGggXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbGl0eS5wcmludF9zaXRlX2dyYXBoIHNpdGVfZ3JhcGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFV0aWxpdHkucHJpbnRfbmV3bGluZSBsaXN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiBfIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gVXRpbGl0eS5wcmludF9uZXdsaW5lIGxpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gVXRpbGl0eS5wcmludF9zdHJpbmcgXCIgXVwiIGxpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoYm9vbCwgbGlzdCkgYSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LnByaW50X3N0cmluZyBcIiB2IFwiIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxpdHkucHJpbnRfc2l0ZV9ncmFwaCBhIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCBsaXN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmYWxzZSwgbGlzdCkgKExpc3QucmV2IGNvbmNsdXNpb24pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gVXRpbGl0eS5wcmludF9zdHJpbmcgXCJbIFwiIGxpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBVdGlsaXR5LnByaW50X3N0cmluZyBcIiAgPT4gIFwiIGxpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBVdGlsaXR5LnByaW50X3NpdGVfZ3JhcGggaHlwIGxpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgIFtdIChMaXN0LnJldiBiKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPVxuICAgICAgICAgICAgICAgICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtaGVhZGluZ1wiIF0gXVxuICAgICAgICAgICAgICAgICAgICAgICAgWyBIdG1sLnR4dCBhIF1cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtYm9keVwiOyBcInBhbmVsLXByZVwiIF0gXVxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHNcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWxcIjsgXCJwYW5lbC1kZWZhdWx0XCIgXSBdXG4gICAgICAgICAgICAgICAgICAgICAgWyB0aXRsZTsgY29udGVudCBdXG4gICAgICAgICAgICAgICAgICAgIDo6IHBhbmVscylcbiAgICAgICAgICAgICAgICAgIFtdIGNvbnN0cmFpbnRzKVxuICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biByIC0+XG4gICAgICAgICAgICAgICAgbGV0IHRpdGxlID1cbiAgICAgICAgICAgICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1oZWFkaW5nXCIgXSBdXG4gICAgICAgICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJLYVNhIGhhcyBmYWlsZWRcIiBdXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtYm9keVwiOyBcInBhbmVsLXByZVwiIF0gXVxuICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkBbJWFAXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwucHJpbnRfbWVzc2FnZSBtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgIHIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3V0ID1cbiAgICAgICAgICAgICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbFwiOyBcInBhbmVsLWRhbmdlclwiIF0gXVxuICAgICAgICAgICAgICAgICAgICBbIHRpdGxlOyBjb250ZW50IF1cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIFsgb3V0IF0pKVxuICBpblxuICBbXG4gICAgVHl4bWxfanMuUi5IdG1sNS5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1zY3JvbGxcIiBdIF1cbiAgICAgIChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWwgY29uc3RyYWludHNfZGl2KTtcbiAgXVxuXG5sZXQgcGFyZW50X2hpZGUgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZVxubGV0IHBhcmVudF9zaG93biAoKSA9IHNldF90YWJfaXNfYWN0aXZlICF0YWJfd2FzX2FjdGl2ZVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdmNvbnN0cmFpbnRzXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSBmYWxzZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdmNvbnN0cmFpbnRzXCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gdHJ1ZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmNsYXNzIHR5cGUgY29udGFjdF9tYXAgPSBvYmplY3RcbiAgbWV0aG9kIHNldERhdGEgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIHJlZHJhdyA6IHVuaXQgSnMubWV0aFxuICBtZXRob2QgY2xlYXJEYXRhIDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGNyZWF0ZV9jb250YWN0X21hcCAoaWQgOiBzdHJpbmcpIChjb2xvcmluZyA6IHVuaXQgSnMudCkgOiBjb250YWN0X21hcCBKcy50ID1cbiAgSnMuVW5zYWZlLm5ld19vYmpcbiAgICAoSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIkNvbnRhY3RNYXBcIilcbiAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgaWQpOyBKcy5VbnNhZmUuaW5qZWN0IGNvbG9yaW5nIHxdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbnR5cGUgaGFuZGxlciA9IHsgc3VmZml4OiBzdHJpbmc7IGxhYmVsOiBzdHJpbmc7IGV4cG9ydDogc3RyaW5nIC0+IHVuaXQgfVxuXG50eXBlIGNvbmZpZ3VyYXRpb24gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGhhbmRsZXJzOiBoYW5kbGVyIGxpc3Q7XG4gIHNob3c6IGJvb2wgUmVhY3Quc2lnbmFsO1xufVxuXG5sZXQgZXhwb3J0X2Zvcm1hdF9pZCAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24pIDogc3RyaW5nID1cbiAgRm9ybWF0LnNwcmludGYgXCJleHBvcnRfJXNfc2VsZWN0XCIgY29uZmlndXJhdGlvbi5pZFxuXG5sZXQgZXhwb3J0X2ZpbGVuYW1lX2lkIChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbikgOiBzdHJpbmcgPVxuICBGb3JtYXQuc3ByaW50ZiBcImV4cG9ydF8lc19maWxlbmFtZVwiIGNvbmZpZ3VyYXRpb24uaWRcblxubGV0IGV4cG9ydF9idXR0b25faWQgKGNvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uKSA6IHN0cmluZyA9XG4gIEZvcm1hdC5zcHJpbnRmIFwiZXhwb3J0XyVzX2J1dHRvblwiIGNvbmZpZ3VyYXRpb24uaWRcblxubGV0IGV4cG9ydF9kYXRhX2xhYmVsIChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbikgOiBzdHJpbmcgPVxuICBGb3JtYXQuc3ByaW50ZiBcImV4cG9ydF8lc19sYWJlbFwiIGNvbmZpZ3VyYXRpb24uaWRcblxubGV0IGV4cG9ydF9mb3JtX2lkIChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbikgOiBzdHJpbmcgPVxuICBGb3JtYXQuc3ByaW50ZiBcImV4cG9ydF8lc19mb3JtXCIgY29uZmlndXJhdGlvbi5pZFxuXG5sZXQgaW5saW5lX2NvbnRlbnQgKGNvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uKSA9XG4gIGxldCBleHBvcnRfZmlsZW5hbWUgPVxuICAgIEh0bWwuaW5wdXRcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIChleHBvcnRfZmlsZW5hbWVfaWQgY29uZmlndXJhdGlvbik7XG4gICAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYFRleHQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcImZpbGUgbmFtZVwiO1xuICAgICAgICBdXG4gICAgICAoKVxuICBpblxuICBsZXQgZXhwb3J0X2J1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIChleHBvcnRfYnV0dG9uX2lkIGNvbmZpZ3VyYXRpb24pO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgICAgICBUeXhtbF9qcy5SLmZpbHRlcl9hdHRyaWIgKEh0bWwuYV9kaXNhYmxlZCAoKSlcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcCBub3QgY29uZmlndXJhdGlvbi5zaG93KTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLmNkYXRhIFwiZXhwb3J0XCIgXVxuICBpblxuICBsZXQgZXhwb3J0X2Zvcm1hdHNfc2VsZWN0ID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biBoYW5kbGVyIC0+XG4gICAgICAgIFslaHRtbFxuICAgICAgICAgIHt8PG9wdGlvbiB2YWx1ZT1cInx9IGhhbmRsZXIubGFiZWwge3xcIj58fSAoSHRtbC5jZGF0YSBoYW5kbGVyLmxhYmVsKVxuICAgICAgICAgICAge3w8L29wdGlvbj58fV0pXG4gICAgICBjb25maWd1cmF0aW9uLmhhbmRsZXJzXG4gIGluXG4gIFslaHRtbFxuICAgIHt8PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJ8fVxuICAgICAgKGV4cG9ydF9mb3JtYXRfaWQgY29uZmlndXJhdGlvbilcbiAgICAgIHt8XCI+XG4gICAgICAgICAgICAgICB8fVxuICAgICAgZXhwb3J0X2Zvcm1hdHNfc2VsZWN0XG4gICAgICB7fFxuICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICA8bGFiZWwgZm9yPXx9XG4gICAgICAoZXhwb3J0X2ZpbGVuYW1lX2lkIGNvbmZpZ3VyYXRpb24pXG4gICAgICB7fD48L2xhYmVsPlxuICAgICAgICAgICAgICAgfH1cbiAgICAgIFsgZXhwb3J0X2ZpbGVuYW1lIF1cbiAgICAgIHt8XG4gICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgfH1dXG4gIEAgWyBleHBvcnRfYnV0dG9uIF1cblxubGV0IGNvbnRlbnQgY29uZmlndXJhdGlvbiA9XG4gIEh0bWwuZm9ybVxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgKGV4cG9ydF9mb3JtX2lkIGNvbmZpZ3VyYXRpb24pOyBIdG1sLmFfY2xhc3MgWyBcImZvcm0taW5saW5lXCIgXTtcbiAgICAgIF1cbiAgICAoaW5saW5lX2NvbnRlbnQgY29uZmlndXJhdGlvbilcblxubGV0IG9ubG9hZCAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24pID1cbiAgbGV0IGV4cG9ydF9idXR0b24gOiBEb21faHRtbC5idXR0b25FbGVtZW50IEpzLnQgPVxuICAgIFVpX2NvbW1vbi5pZF9kb20gKGV4cG9ydF9idXR0b25faWQgY29uZmlndXJhdGlvbilcbiAgaW5cbiAgbGV0IGV4cG9ydF9maWxlbmFtZSA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50ID1cbiAgICBVaV9jb21tb24uaWRfZG9tIChleHBvcnRfZmlsZW5hbWVfaWQgY29uZmlndXJhdGlvbilcbiAgaW5cbiAgbGV0IGV4cG9ydF9mb3JtYXQgOiBEb21faHRtbC5zZWxlY3RFbGVtZW50IEpzLnQgPVxuICAgIFVpX2NvbW1vbi5pZF9kb20gKGV4cG9ydF9mb3JtYXRfaWQgY29uZmlndXJhdGlvbilcbiAgaW5cbiAgbGV0IGV4cG9ydF9idXR0b25fdG9nZ2xlICgpIDogdW5pdCA9XG4gICAgbGV0IGlzX2Rpc2FibGVkIDogYm9vbCBKcy50ID1cbiAgICAgIEpzLmJvb2xcbiAgICAgICAgKChub3QgKFJlYWN0LlMudmFsdWUgY29uZmlndXJhdGlvbi5zaG93KSlcbiAgICAgICAgfHwgZXhwb3J0X2ZpbGVuYW1lIyMudmFsdWUjI3RyaW0jIy5sZW5ndGggPSAwKVxuICAgIGluXG4gICAgbGV0ICgpID0gZXhwb3J0X2J1dHRvbiMjLmRpc2FibGVkIDo9IGlzX2Rpc2FibGVkIGluXG4gICAgKClcbiAgaW5cbiAgbGV0ICgpID0gZXhwb3J0X2J1dHRvbl90b2dnbGUgKCkgaW5cbiAgbGV0ICgpID1cbiAgICBleHBvcnRfZmlsZW5hbWUjIy5vbmlucHV0IDo9XG4gICAgICBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgIGxldCAoKSA9IGV4cG9ydF9idXR0b25fdG9nZ2xlICgpIGluXG4gICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIGV4cG9ydF9idXR0b24jIy5vbmNsaWNrIDo9XG4gICAgICBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgIGxldCBoYW5kbGVyIDogaGFuZGxlciA9XG4gICAgICAgICAgICBMaXN0Lm50aCBjb25maWd1cmF0aW9uLmhhbmRsZXJzIGV4cG9ydF9mb3JtYXQjIy5zZWxlY3RlZEluZGV4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmlsZW5hbWUgZGVmYXVsdCA6IHN0cmluZyA9XG4gICAgICAgICAgICBsZXQgcm9vdCA6IHN0cmluZyA9IEpzLnRvX3N0cmluZyBleHBvcnRfZmlsZW5hbWUjIy52YWx1ZSBpblxuICAgICAgICAgICAgaWYgU3RyaW5nLmNvbnRhaW5zIHJvb3QgJy4nIHRoZW5cbiAgICAgICAgICAgICAgcm9vdFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICByb290IF4gXCIuXCIgXiBkZWZhdWx0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBoYW5kbGVyLmV4cG9ydCAoZmlsZW5hbWUgaGFuZGxlci5zdWZmaXgpIGluXG4gICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICAoKVxuXG5sZXQgZXhwb3J0X3N2ZyA/c3ZnX3N0eWxlX2lkIH4oc3ZnX2Rpdl9pZCA6IHN0cmluZykgKCkgOiBoYW5kbGVyID1cbiAge1xuICAgIHN1ZmZpeCA9IFwic3ZnXCI7XG4gICAgbGFiZWwgPSBcInN2Z1wiO1xuICAgIGV4cG9ydCA9XG4gICAgICAoZnVuIGZpbGVuYW1lIC0+XG4gICAgICAgIENvbW1vbi5wbG90U1ZHID9wbG90U3R5bGVJZDpzdmdfc3R5bGVfaWQgc3ZnX2Rpdl9pZCBmaWxlbmFtZSBmaWxlbmFtZSk7XG4gIH1cblxubGV0IGV4cG9ydF9wbmcgP3N2Z19zdHlsZV9pZCB+KHN2Z19kaXZfaWQgOiBzdHJpbmcpICgpIDogaGFuZGxlciA9XG4gIHtcbiAgICBzdWZmaXggPSBcInBuZ1wiO1xuICAgIGxhYmVsID0gXCJwbmdcIjtcbiAgICBleHBvcnQgPVxuICAgICAgKGZ1biBmaWxlbmFtZSAtPlxuICAgICAgICBDb21tb24ucGxvdFBORyA/cGxvdFN0eWxlSWQ6c3ZnX3N0eWxlX2lkIHN2Z19kaXZfaWQgZmlsZW5hbWUgZmlsZW5hbWUpO1xuICB9XG5cbmxldCBleHBvcnRfanNvbiB+KHNlcmlhbGl6ZV9qc29uIDogdW5pdCAtPiBzdHJpbmcpIDogaGFuZGxlciA9XG4gIHtcbiAgICBzdWZmaXggPSBcImpzb25cIjtcbiAgICBsYWJlbCA9IFwianNvblwiO1xuICAgIGV4cG9ydCA9XG4gICAgICAoZnVuIGZpbGVuYW1lIC0+XG4gICAgICAgIGxldCBkYXRhID0gSnMuc3RyaW5nIChzZXJpYWxpemVfanNvbiAoKSkgaW5cbiAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lOlwiYXBwbGljYXRpb24vanNvblwiIH5maWxlbmFtZSk7XG4gIH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCBkaXNwbGF5X2lkID0gXCJjb250YWN0LW1hcC1kaXNwbGF5XCJcbmxldCBleHBvcnRfaWQgPSBcImNvbnRhY3QtZXhwb3J0XCJcbmxldCBuYXZsaSAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgdHJ1ZVxubGV0IHRhYl93YXNfYWN0aXZlID0gcmVmIHRydWVcbmxldCBhY2N1cmFjeSwgc2V0X2FjY3VyYWN5ID0gUmVhY3QuUy5jcmVhdGUgKFNvbWUgUHVibGljX2RhdGEuTG93KVxuXG5sZXQgZXh0cmFjdF9jb250YWN0X21hcCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwiY29udGFjdCBtYXBcIiwgYEFzc29jIFsgKFwiYWNjdXJhY3lcIiwgYWNjKTsgKFwibWFwXCIsIGNvbnRhY3QpIF0pIF1cbiAgICAtPlxuICAgIGFjYywgY29udGFjdFxuICB8IGBBc3NvYyBbIChcImNvbnRhY3QgbWFwXCIsIGBBc3NvYyBbIChcIm1hcFwiLCBjb250YWN0KTsgKFwiYWNjdXJhY3lcIiwgYWNjKSBdKSBdXG4gICAgLT5cbiAgICBhY2MsIGNvbnRhY3RcbiAgfCBfIC0+IGZhaWx3aXRoIFwiV3JvbmcgdWdseSBjb250YWN0X21hcCBleHRyYWN0b3JcIlxuXG5sZXQgY29udGFjdF9tYXBfanMgOiBKc19jb250YWN0LmNvbnRhY3RfbWFwIEpzLnQgPVxuICBKc19jb250YWN0LmNyZWF0ZV9jb250YWN0X21hcCBkaXNwbGF5X2lkIFN0YXRlX3NldHRpbmdzLmFnZW50X2NvbG9yaW5nXG5cbmxldCBjb250YWN0X21hcF90ZXh0IDogc3RyaW5nIFJlYWN0LnNpZ25hbCA9XG4gIFN0YXRlX3Byb2plY3Qub25fcHJvamVjdF9jaGFuZ2VfYXN5bmMgfm9uOnRhYl9pc19hY3RpdmUgTm9uZSBhY2N1cmFjeSBcIm51bGxcIlxuICAgIChmdW5cbiAgICAgIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpXG4gICAgICAoYWNjIDogUHVibGljX2RhdGEuYWNjdXJhY3lfbGV2ZWwgb3B0aW9uKVxuICAgIC0+XG4gICAgICBtYW5hZ2VyI2dldF9jb250YWN0X21hcCBhY2NcbiAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICB+ZXJyb3I6KGZ1biBtaCAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBTdGF0ZV9lcnJvci5hZGRfZXJyb3IgXCJ0YWJfY29udGFjdF9tYXBcIiBtaCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBjb250YWN0X21hcF9qcyMjY2xlYXJEYXRhIGluXG4gICAgICAgICAgICAgIFwibnVsbFwiKVxuICAgICAgICAgICAgfm9rOihmdW4gY29udGFjdF9qc29uIC0+XG4gICAgICAgICAgICAgIGxldCBfLCBtYXBfanNvbiA9IGV4dHJhY3RfY29udGFjdF9tYXAgY29udGFjdF9qc29uIGluXG4gICAgICAgICAgICAgIGxldCBkYXRhID0gWW9qc29uLkJhc2ljLnRvX3N0cmluZyBtYXBfanNvbiBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBjb250YWN0X21hcF9qcyMjc2V0RGF0YSAoSnMuc3RyaW5nIGRhdGEpIGluXG4gICAgICAgICAgICAgIGRhdGEpKVxuXG5sZXQgY29uZmlndXJhdGlvbiA6IFdpZGdldF9leHBvcnQuY29uZmlndXJhdGlvbiA9XG4gIHtcbiAgICBXaWRnZXRfZXhwb3J0LmlkID0gZXhwb3J0X2lkO1xuICAgIFdpZGdldF9leHBvcnQuaGFuZGxlcnMgPVxuICAgICAgW1xuICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9zdmcgfnN2Z19kaXZfaWQ6ZGlzcGxheV9pZCAoKTtcbiAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnRfcG5nIH5zdmdfZGl2X2lkOmRpc3BsYXlfaWQgKCk7XG4gICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X2pzb24gfnNlcmlhbGl6ZV9qc29uOihmdW4gKCkgLT5cbiAgICAgICAgICAgIFJlYWN0LlMudmFsdWUgY29udGFjdF9tYXBfdGV4dCk7XG4gICAgICBdO1xuICAgIFdpZGdldF9leHBvcnQuc2hvdyA9IFJlYWN0LlMuY29uc3QgdHJ1ZTtcbiAgfVxuXG5sZXQgYWNjdXJhY3lfY2hvb3Nlcl9pZCA9IFwiY29udGFjdF9tYXAtYWNjdXJhY3lcIlxuXG5sZXQgYWNjdXJhY3lfY2hvb3NlciA9XG4gIGxldCBvcHRpb25fZ2VuIHggPVxuICAgIEh0bWwub3B0aW9uXG4gICAgICB+YTpcbiAgICAgICAgKChmdW4gbCAtPlxuICAgICAgICAgICBpZiBSZWFjdC5TLnZhbHVlIGFjY3VyYWN5ID0gU29tZSB4IHRoZW5cbiAgICAgICAgICAgICBIdG1sLmFfc2VsZWN0ZWQgKCkgOjogbFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbClcbiAgICAgICAgICAgWyBIdG1sLmFfdmFsdWUgKFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyB4KSBdKVxuICAgICAgKEh0bWwudHh0IChQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgeCkpXG4gIGluXG4gIEh0bWwuc2VsZWN0XG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07IEh0bWwuYV9pZCBhY2N1cmFjeV9jaG9vc2VyX2lkIF1cbiAgICAoTGlzdC5tYXAgb3B0aW9uX2dlbiBQdWJsaWNfZGF0YS5jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbHMpXG5cbmxldCBjb250ZW50ICgpID1cbiAgbGV0IGFjY3VyYWN5X2Zvcm0gPVxuICAgIEh0bWwuZm9ybVxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0taG9yaXpvbnRhbFwiIF07XG4gICAgICAgICAgSHRtbC5hX2lkIFwiY29udGFjdF9tYXBfYWNjdXJhY3lfZm9ybVwiO1xuICAgICAgICBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tZ3JvdXBcIiBdIF1cbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmxhYmVsXG4gICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdO1xuICAgICAgICAgICAgICAgICAgSHRtbC5hX2xhYmVsX2ZvciBhY2N1cmFjeV9jaG9vc2VyX2lkO1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgWyBIdG1sLnR4dCBcIkFjY3VyYWN5XCIgXTtcbiAgICAgICAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMTBcIiBdIF0gWyBhY2N1cmFjeV9jaG9vc2VyIF07XG4gICAgICAgICAgXTtcbiAgICAgIF1cbiAgaW5cbiAgW1xuICAgIGFjY3VyYWN5X2Zvcm07XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2lkIGRpc3BsYXlfaWQ7IEh0bWwuYV9jbGFzcyBbIFwiZmxleC1jb250ZW50XCIgXSBdXG4gICAgICBbIEh0bWwuZW50aXR5IFwibmJzcFwiIF07XG4gICAgV2lkZ2V0X2V4cG9ydC5jb250ZW50IGNvbmZpZ3VyYXRpb247XG4gIF1cblxubGV0IHBhcmVudF9oaWRlICgpID0gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2VcbmxldCBwYXJlbnRfc2hvd24gKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSAhdGFiX3dhc19hY3RpdmVcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9IFdpZGdldF9leHBvcnQub25sb2FkIGNvbmZpZ3VyYXRpb24gaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBhY2N1cmFjeV9jaG9vc2VyKSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gdmEgXyAtPlxuICAgICAgICAgICBsZXQgdmEgPSBKcy50b19zdHJpbmcgdmEjIy52YWx1ZSBpblxuICAgICAgICAgICBsZXQgKCkgPSBzZXRfYWNjdXJhY3kgKFB1YmxpY19kYXRhLmFjY3VyYWN5X29mX3N0cmluZyB2YSkgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZjb250YWN0X21hcFwiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gZmFsc2UgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZjb250YWN0X21hcFwiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IHRydWUgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9XG4gIGlmIFJlYWN0LlMudmFsdWUgdGFiX2lzX2FjdGl2ZSB0aGVuIGNvbnRhY3RfbWFwX2pzIyNyZWRyYXdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmNsYXNzIHR5cGUgZ3JhcGhfbG9nZ2VyID0gb2JqZWN0XG4gIG1ldGhvZCBzZXREYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBjbGVhckRhdGEgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgY3JlYXRlX2dyYXBoX2xvZ2dlciAoaWQgOiBzdHJpbmcpIChvbl9jbGljayA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIDpcbiAgICBncmFwaF9sb2dnZXIgSnMudCA9XG4gIEpzLlVuc2FmZS5uZXdfb2JqXG4gICAgKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJHcmFwaExvZ2dlclwiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBpZCk7IEpzLlVuc2FmZS5pbmplY3Qgb25fY2xpY2sgfF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgbW9kZWxfZ3JhcGggPSB7IGZ3ZDogaW50IG9wdGlvbjsgYndkOiBpbnQgb3B0aW9uOyB0b3RhbDogaW50IH1cblxudHlwZSBpbmZsdWVuY2Vfc3BoZXJlID0ge1xuICBwb3NpdGl2ZV9vbjpcbiAgICAoKFB1YmxpY19kYXRhLnJ1bGUsIFB1YmxpY19kYXRhLnZhcikgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGVcbiAgICAqIFB1YmxpY19kYXRhLmxvY2F0aW9uIFB1YmxpY19kYXRhLnBhaXIgbGlzdClcbiAgICBsaXN0O1xuICBuZWdhdGl2ZV9vbjpcbiAgICAoKFB1YmxpY19kYXRhLnJ1bGUsIFB1YmxpY19kYXRhLnZhcikgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGVcbiAgICAqIFB1YmxpY19kYXRhLmxvY2F0aW9uIFB1YmxpY19kYXRhLnBhaXIgbGlzdClcbiAgICBsaXN0O1xuICBwb3NpdGl2ZV9ieTpcbiAgICAoKFB1YmxpY19kYXRhLnJ1bGUsIFB1YmxpY19kYXRhLnZhcikgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGVcbiAgICAqIFB1YmxpY19kYXRhLmxvY2F0aW9uIFB1YmxpY19kYXRhLnBhaXIgbGlzdClcbiAgICBsaXN0O1xuICBuZWdhdGl2ZV9ieTpcbiAgICAoKFB1YmxpY19kYXRhLnJ1bGUsIFB1YmxpY19kYXRhLnZhcikgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGVcbiAgICAqIFB1YmxpY19kYXRhLmxvY2F0aW9uIFB1YmxpY19kYXRhLnBhaXIgbGlzdClcbiAgICBsaXN0O1xufVxuXG5sZXQgZW1wdHlfc3BoZXJlID1cbiAgeyBwb3NpdGl2ZV9vbiA9IFtdOyBwb3NpdGl2ZV9ieSA9IFtdOyBuZWdhdGl2ZV9vbiA9IFtdOyBuZWdhdGl2ZV9ieSA9IFtdIH1cblxudHlwZSBtb2RlbF9yZW5kZXJpbmcgPSBEcmF3R3JhcGggb2YgbW9kZWxfZ3JhcGggfCBEcmF3VGFidWxhciBvZiB1bml0XG5cbnR5cGUgbW9kZWwgPSB7XG4gIHJlbmRlcmluZzogbW9kZWxfcmVuZGVyaW5nO1xuICBhY2N1cmFjeTogUHVibGljX2RhdGEuYWNjdXJhY3lfbGV2ZWwgb3B0aW9uO1xuICBvcmlnaW46IChpbnQsIGludCkgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGUgb3B0aW9uO1xuICBvcmlnaW5fbGFiZWw6IHN0cmluZyBvcHRpb247XG59XG5cbmxldCBuYXZsaSAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCB0YWJfd2FzX2FjdGl2ZSA9IHJlZiBmYWxzZVxubGV0IHRyYWNrX2N1cnNvciwgc2V0X3RyYWNrX2N1cnNvciA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5cbmxldCBkdW1teV9tb2RlbCA9XG4gIHtcbiAgICByZW5kZXJpbmcgPSBEcmF3VGFidWxhciAoKTtcbiAgICBhY2N1cmFjeSA9IFNvbWUgUHVibGljX2RhdGEuTG93O1xuICAgIG9yaWdpbiA9IE5vbmU7XG4gICAgb3JpZ2luX2xhYmVsID0gTm9uZTtcbiAgfVxuXG5sZXQgbW9kZWwsIHNldF9tb2RlbCA9IFJlYWN0LlMuY3JlYXRlIGR1bW15X21vZGVsXG5sZXQgdG90YWxfaW5wdXRfaWQgPSBcInRvdGFsX2lucHV0XCJcbmxldCBmd2RfaW5wdXRfaWQgPSBcImZ3ZF9pbnB1dFwiXG5sZXQgYndkX2lucHV0X2lkID0gXCJid2RfaW5wdXRcIlxuXG5sZXQgaW5mbHVlbmNlX25vZGVfbGFiZWwgPSBmdW5jdGlvblxuICB8IFB1YmxpY19kYXRhLlJ1bGUgciAtPlxuICAgIGlmIHIuUHVibGljX2RhdGEucnVsZV9sYWJlbCA9IFwiXCIgdGhlblxuICAgICAgci5QdWJsaWNfZGF0YS5ydWxlX2FzdFxuICAgIGVsc2VcbiAgICAgIHIuUHVibGljX2RhdGEucnVsZV9sYWJlbFxuICB8IFB1YmxpY19kYXRhLlZhciByIC0+XG4gICAgaWYgci5QdWJsaWNfZGF0YS52YXJfbGFiZWwgPSBcIlwiIHRoZW5cbiAgICAgIHIuUHVibGljX2RhdGEudmFyX2FzdFxuICAgIGVsc2VcbiAgICAgIHIuUHVibGljX2RhdGEudmFyX2xhYmVsXG5cbmxldCB1cGRhdGVfbW9kZWxfZ3JhcGggZiA9XG4gIGxldCBtID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICBtYXRjaCBtLnJlbmRlcmluZyB3aXRoXG4gIHwgRHJhd1RhYnVsYXIgXyAtPiAoKVxuICB8IERyYXdHcmFwaCBnIC0+IHNldF9tb2RlbCB7IG0gd2l0aCByZW5kZXJpbmcgPSBEcmF3R3JhcGggKGYgZykgfVxuXG5sZXQgdXBkYXRlX21vZGVsIGYgPSBzZXRfbW9kZWwgKGYgKFJlYWN0LlMudmFsdWUgbW9kZWwpKVxubGV0IGRpc3BsYXlfaWQgPSBcImluZmx1ZW5jZV9tYXBfZGlzcGxheVwiXG5cbmxldCBpbmZsdWVuY2VtYXAgPVxuICBKc19ncmFwaGxvZ2dlci5jcmVhdGVfZ3JhcGhfbG9nZ2VyIGRpc3BsYXlfaWQgKGZ1biB4IC0+XG4gICAgICB1cGRhdGVfbW9kZWwgKGZ1biBtIC0+XG4gICAgICAgICAgbGV0IG5vZGUgPVxuICAgICAgICAgICAgUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgKEpzLnRvX3N0cmluZyB4KSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBTdWJwYW5lbF9lZGl0b3Iuc2V0X21vdmVfY3Vyc29yXG4gICAgICAgICAgICAgIChQdWJsaWNfZGF0YS5wb3NpdGlvbl9vZl9yZWZpbmVkX2luZmx1ZW5jZV9ub2RlIG5vZGUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb3JpZ2luID0gU29tZSAoUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgbm9kZSkgaW5cbiAgICAgICAgICBsZXQgb3JpZ2luX2xhYmVsID0gU29tZSAoaW5mbHVlbmNlX25vZGVfbGFiZWwgbm9kZSkgaW5cbiAgICAgICAgICB7IG0gd2l0aCBvcmlnaW47IG9yaWdpbl9sYWJlbCB9KSlcblxubGV0IHRvdGFsX2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgdG90YWxfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBOdW1iZXI7XG4gICAgICAgIEh0bWwuYV92YWx1ZSBcIjFcIjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICBIdG1sLmFfc2l6ZSAxO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBmd2RfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCBmd2RfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBOdW1iZXI7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgSHRtbC5hX3NpemUgMTtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgYndkX2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgYndkX2lucHV0X2lkO1xuICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgTnVtYmVyO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgIEh0bWwuYV9zaXplIDE7XG4gICAgICBdXG4gICAgKClcblxubGV0IG5leHRfbm9kZSA9XG4gIEh0bWwuYnV0dG9uXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiOyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgIF1cbiAgICBbIEh0bWwudHh0IFwiTmV4dFwiIF1cblxubGV0IHByZXZfbm9kZSA9XG4gIEh0bWwuYnV0dG9uXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiOyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgIF1cbiAgICBbIEh0bWwudHh0IFwiUHJldmlvdXNcIiBdXG5cbmxldCByZWNlbnRlciA9XG4gIEh0bWwuYnV0dG9uXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiOyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgIF1cbiAgICBbIEh0bWwudHh0IFwiUmVzZXRcIiBdXG5cbmxldCB0cmFja19jdXJzb3Jfc3dpdGNoID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247XG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbDUuYV9jbGFzc1xuICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgIChmdW4gdGMgLT5cbiAgICAgICAgICAgICAgIFwiZm9ybS1jb250cm9sXCIgOjogXCJidG5cIiA6OiBcImJ0bi1kZWZhdWx0XCJcbiAgICAgICAgICAgICAgIDo6XG4gICAgICAgICAgICAgICAoaWYgdGMgdGhlblxuICAgICAgICAgICAgICAgICAgWyBcImFjdGl2ZVwiIF1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBbXSkpXG4gICAgICAgICAgICAgdHJhY2tfY3Vyc29yKTtcbiAgICAgICAgSHRtbC5hX29uY2xpY2sgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBzZXRfdHJhY2tfY3Vyc29yIChub3QgKFJlYWN0LlMudmFsdWUgdHJhY2tfY3Vyc29yKSkgaW5cbiAgICAgICAgICAgIHRydWUpO1xuICAgICAgXVxuICAgIFsgSHRtbC50eHQgXCJUcmFjayBjdXJzb3JcIiBdXG5cbmxldCBleHBvcnRfY29uZmlnID1cbiAge1xuICAgIFdpZGdldF9leHBvcnQuaWQgPSBcImluZmx1ZW5jZS1leHBvcnRcIjtcbiAgICBXaWRnZXRfZXhwb3J0LmhhbmRsZXJzID1cbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJqc29uXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwianNvblwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID1cbiAgICAgICAgICAgIChmdW4gZmlsZW5hbWUgLT5cbiAgICAgICAgICAgICAgTHd0Lmlnbm9yZV9yZXN1bHRcbiAgICAgICAgICAgICAgICAoIFN0YXRlX2Vycm9yLndyYXAgXCJpbmZsdWVuY2VfbWFwX2V4cG9ydFwiXG4gICAgICAgICAgICAgICAgICAgIChTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB7IGFjY3VyYWN5OyBfIH0gPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNnZXRfaW5mbHVlbmNlX21hcF9yYXcgYWNjdXJhY3lcbiAgICAgICAgICAgICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwubWFwIChmdW4gaW5mbHVlbmNlc19zdHJpbmcgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0gSnMuc3RyaW5nIGluZmx1ZW5jZXNfc3RyaW5nIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uc2F2ZUZpbGUgfmRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+bWltZTpcImFwcGxpY2F0aW9uL2pzb25cIiB+ZmlsZW5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKVxuICAgICAgICAgICAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQgKSk7XG4gICAgICAgIH07XG4gICAgICBdO1xuICAgIFdpZGdldF9leHBvcnQuc2hvdyA9IFJlYWN0LlMuY29uc3QgdHJ1ZTtcbiAgfVxuXG5sZXQgcmVuZGVyaW5nX2Nob29zZXJfaWQgPSBcImluZmx1ZW5jZS1yZW5kZXJpbmdcIlxuXG5sZXQgcmVuZGVyaW5nX2Nob29zZXIgPVxuICBsZXQgeyByZW5kZXJpbmc7IF8gfSA9IFJlYWN0LlMudmFsdWUgbW9kZWwgaW5cbiAgSHRtbC5zZWxlY3RcbiAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTsgSHRtbC5hX2lkIHJlbmRlcmluZ19jaG9vc2VyX2lkIF1cbiAgICBbXG4gICAgICBIdG1sLm9wdGlvblxuICAgICAgICB+YTpcbiAgICAgICAgICAoKGZ1biBsIC0+XG4gICAgICAgICAgICAgbWF0Y2ggcmVuZGVyaW5nIHdpdGhcbiAgICAgICAgICAgICB8IERyYXdUYWJ1bGFyIF8gLT4gSHRtbC5hX3NlbGVjdGVkICgpIDo6IGxcbiAgICAgICAgICAgICB8IERyYXdHcmFwaCBfIC0+IGwpXG4gICAgICAgICAgICAgWyBIdG1sLmFfdmFsdWUgXCJ0YWJ1bGFyXCIgXSlcbiAgICAgICAgKEh0bWwudHh0IFwiVGFidWxhclwiKTtcbiAgICAgIEh0bWwub3B0aW9uXG4gICAgICAgIH5hOlxuICAgICAgICAgICgoZnVuIGwgLT5cbiAgICAgICAgICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgICAgICAgIHwgRHJhd0dyYXBoIF8gLT4gSHRtbC5hX3NlbGVjdGVkICgpIDo6IGxcbiAgICAgICAgICAgICB8IERyYXdUYWJ1bGFyIF8gLT4gbClcbiAgICAgICAgICAgICBbIEh0bWwuYV92YWx1ZSBcImdyYXBoXCIgXSlcbiAgICAgICAgKEh0bWwudHh0IFwiR3JhcGhcIik7XG4gICAgXVxuXG5sZXQgYWNjdXJhY3lfY2hvb3Nlcl9pZCA9IFwiaW5mbHVlbmNlLWFjY3VyYWN5XCJcblxubGV0IGFjY3VyYWN5X2Nob29zZXIgPVxuICBsZXQgeyBhY2N1cmFjeTsgXyB9ID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICBsZXQgb3B0aW9uX2dlbiB4ID1cbiAgICBIdG1sLm9wdGlvblxuICAgICAgfmE6XG4gICAgICAgICgoZnVuIGwgLT5cbiAgICAgICAgICAgaWYgYWNjdXJhY3kgPSBTb21lIHggdGhlblxuICAgICAgICAgICAgIEh0bWwuYV9zZWxlY3RlZCAoKSA6OiBsXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsKVxuICAgICAgICAgICBbIEh0bWwuYV92YWx1ZSAoUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIHgpIF0pXG4gICAgICAoSHRtbC50eHQgKFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyB4KSlcbiAgaW5cbiAgSHRtbC5zZWxlY3RcbiAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTsgSHRtbC5hX2lkIGFjY3VyYWN5X2Nob29zZXJfaWQgXVxuICAgIChMaXN0Lm1hcCBvcHRpb25fZ2VuIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWxzKVxuXG5sZXQgaXNfY2VudGVyIG9yaWdpbl9zaG9ydF9vcHQgbm9kZSA9XG4gIG1hdGNoIG9yaWdpbl9zaG9ydF9vcHQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAobWF0Y2ggbm9kZSB3aXRoXG4gICAgfCBQdWJsaWNfZGF0YS5SdWxlIHIgLT4gci5QdWJsaWNfZGF0YS5ydWxlX2lkID0gMFxuICAgIHwgUHVibGljX2RhdGEuVmFyIF8gLT4gZmFsc2UpXG4gIHwgU29tZSBvcmlnaW4gLT5cbiAgICAobWF0Y2ggb3JpZ2luLCBub2RlIHdpdGhcbiAgICB8IFB1YmxpY19kYXRhLlJ1bGUgaWQsIFB1YmxpY19kYXRhLlJ1bGUgYSAtPiBhLlB1YmxpY19kYXRhLnJ1bGVfaWQgPSBpZFxuICAgIHwgUHVibGljX2RhdGEuVmFyIGlkLCBQdWJsaWNfZGF0YS5WYXIgYSAtPiBhLlB1YmxpY19kYXRhLnZhcl9pZCA9IGlkXG4gICAgfCBQdWJsaWNfZGF0YS5WYXIgXywgUHVibGljX2RhdGEuUnVsZSBfXG4gICAgfCBQdWJsaWNfZGF0YS5SdWxlIF8sIFB1YmxpY19kYXRhLlZhciBfIC0+XG4gICAgICBmYWxzZSlcblxubGV0IGpzb25fdG9fZ3JhcGggbG9nZ2VyIChfLCBfLCBfLCBfLCBvcmlnaW4sIGluZmx1ZW5jZV9tYXApID1cbiAgbGV0IG9yaWdpbl9zaG9ydF9vcHQgPVxuICAgIE9wdGlvbl91dGlsLm1hcCBQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBvcmlnaW5cbiAgaW5cbiAgbGV0ICgpID0gR3JhcGhfbG9nZ2Vycy5wcmludF9ncmFwaF9wcmVhbWJsZSBsb2dnZXIgXCJcIiBpblxuICBsZXQgbm9kZXMgPSBpbmZsdWVuY2VfbWFwLlB1YmxpY19kYXRhLm5vZGVzIGluXG4gIGxldCBkaXJlY3RpdmVzX29mX25vZGUgbm9kZSA9XG4gICAgbGV0IGpzb24gPSBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX3RvX2pzb24gbm9kZSBpblxuICAgIGxldCBsYWJlbCA9IGluZmx1ZW5jZV9ub2RlX2xhYmVsIG5vZGUgaW5cbiAgICBtYXRjaCBub2RlIHdpdGhcbiAgICB8IFB1YmxpY19kYXRhLlJ1bGUgciAtPlxuICAgICAgbGV0IHBvcyA9IHIuUHVibGljX2RhdGEucnVsZV9wb3NpdGlvbiBpblxuICAgICAgbGV0IGNvbnRleHR1YWxfaGVscCA9IExvYy50b19zdHJpbmcgcG9zIF4gXCIgXCIgXiByLlB1YmxpY19kYXRhLnJ1bGVfYXN0IGluXG4gICAgICBsZXQgZmlsbGNvbG9yID1cbiAgICAgICAgaWYgaXNfY2VudGVyIG9yaWdpbl9zaG9ydF9vcHQgbm9kZSB0aGVuXG4gICAgICAgICAgIUNvbmZpZy5jZW50ZXJfY29sb3JcbiAgICAgICAgZWxzZVxuICAgICAgICAgICFDb25maWcucnVsZV9jb2xvclxuICAgICAgaW5cbiAgICAgIFtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgbGFiZWw7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlICFDb25maWcucnVsZV9zaGFwZTtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIGZpbGxjb2xvcjtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgZmlsbGNvbG9yO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvbiBbIHBvcyBdO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb247XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBjb250ZXh0dWFsX2hlbHA7XG4gICAgICBdXG4gICAgfCBQdWJsaWNfZGF0YS5WYXIgciAtPlxuICAgICAgbGV0IHBvcyA9IHIuUHVibGljX2RhdGEudmFyX3Bvc2l0aW9uIGluXG4gICAgICBsZXQgY29udGV4dHVhbF9oZWxwID0gTG9jLnRvX3N0cmluZyBwb3MgXiByLlB1YmxpY19kYXRhLnZhcl9hc3QgaW5cbiAgICAgIGxldCBmaWxsY29sb3IgPVxuICAgICAgICBpZiBpc19jZW50ZXIgb3JpZ2luX3Nob3J0X29wdCBub2RlIHRoZW5cbiAgICAgICAgICAhQ29uZmlnLmNlbnRlcl9jb2xvclxuICAgICAgICBlbHNlXG4gICAgICAgICAgIUNvbmZpZy52YXJpYWJsZV9jb2xvclxuICAgICAgaW5cbiAgICAgIFtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgbGFiZWw7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlICFDb25maWcudmFyaWFibGVfc2hhcGU7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBmaWxsY29sb3I7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIGZpbGxjb2xvcjtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb24gWyBwb3MgXTtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBqc29uO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgY29udGV4dHVhbF9oZWxwO1xuICAgICAgXVxuICBpblxuICBsZXQgbWF4X3J1bGVfaWQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGJpZ2dlc3RfaWQgbiAtPlxuICAgICAgICBtYXRjaCBuIHdpdGhcbiAgICAgICAgfCBQdWJsaWNfZGF0YS5SdWxlIHIgLT4gbWF4IGJpZ2dlc3RfaWQgKDEgKyByLlB1YmxpY19kYXRhLnJ1bGVfaWQpXG4gICAgICAgIHwgUHVibGljX2RhdGEuVmFyIF8gLT4gYmlnZ2VzdF9pZClcbiAgICAgICgtMSkgbm9kZXNcbiAgaW5cbiAgbGV0IGdldF9pZF9vZl9ub2RlX2lkIG5vZGVfaWQgPVxuICAgIG1hdGNoIG5vZGVfaWQgd2l0aFxuICAgIHwgUHVibGljX2RhdGEuUnVsZSBpZCAtPiBpZFxuICAgIHwgUHVibGljX2RhdGEuVmFyIGlkIC0+IGlkICsgbWF4X3J1bGVfaWRcbiAgaW5cbiAgbGV0IGdldF9pZF9vZl9ub2RlIG5vZGUgPVxuICAgIGdldF9pZF9vZl9ub2RlX2lkIChQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBub2RlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biBub2RlIC0+XG4gICAgICAgIGxldCBkaXJlY3RpdmVzID0gZGlyZWN0aXZlc19vZl9ub2RlIG5vZGUgaW5cbiAgICAgICAgR3JhcGhfbG9nZ2Vycy5wcmludF9ub2RlIGxvZ2dlciB+ZGlyZWN0aXZlc1xuICAgICAgICAgIChzdHJpbmdfb2ZfaW50IChnZXRfaWRfb2Zfbm9kZSBub2RlKSkpXG4gICAgICBub2Rlc1xuICBpblxuICBsZXQgcHJpbnRfbWFwcyA/KGRpcmVjdGl2ZXMgPSBbXSkgbG9nZ2VyIG1hcCA9XG4gICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5pdGVyXG4gICAgICAoZnVuIHNvdXJjZSBtYXAgLT5cbiAgICAgICAgbGV0IHNvdXJjZV9pZCA9IHN0cmluZ19vZl9pbnQgKGdldF9pZF9vZl9ub2RlX2lkIHNvdXJjZSkgaW5cbiAgICAgICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5pdGVyXG4gICAgICAgICAgKGZ1biB0YXJnZXQgbGFiZWxfbGlzdCAtPlxuICAgICAgICAgICAgbGV0IHRhcmdldF9pZCA9IHN0cmluZ19vZl9pbnQgKGdldF9pZF9vZl9ub2RlX2lkIHRhcmdldCkgaW5cbiAgICAgICAgICAgICgqbGV0IGxhYmVsX3N0cmluZyA9IFwidG9kb1wiXG4gICAgICAgICAgICAgIGluKilcbiAgICAgICAgICAgIGxldCBsYWJlbF9zdHJpbmcgPSBQdWJsaWNfZGF0YS5zdHJpbmdfb2ZfbGFiZWxfbGlzdCBsYWJlbF9saXN0IGluXG4gICAgICAgICAgICBsZXQgZGlyZWN0aXZlcyA9XG4gICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIGxhYmVsX3N0cmluZyA6OiBkaXJlY3RpdmVzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vycy5wcmludF9lZGdlIGxvZ2dlciB+ZGlyZWN0aXZlcyBzb3VyY2VfaWQgdGFyZ2V0X2lkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCkpXG4gICAgICAgICAgbWFwKVxuICAgICAgbWFwXG4gIGluXG4gIGxldCBkaXJlY3RpdmVzID1cbiAgICBbXG4gICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciAhQ29uZmlnLndha2VfdXBfY29sb3I7XG4gICAgICBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd0hlYWQgIUNvbmZpZy53YWtlX3VwX2Fycm93O1xuICAgIF1cbiAgaW5cbiAgbGV0ICgpID0gcHJpbnRfbWFwcyB+ZGlyZWN0aXZlcyBsb2dnZXIgaW5mbHVlbmNlX21hcC5QdWJsaWNfZGF0YS5wb3NpdGl2ZSBpblxuICBsZXQgZGlyZWN0aXZlcyA9XG4gICAgW1xuICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgIUNvbmZpZy5pbmhpYml0aW9uX2NvbG9yO1xuICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkICFDb25maWcuaW5oaWJpdGlvbl9hcnJvdztcbiAgICBdXG4gIGluXG4gIGxldCAoKSA9IHByaW50X21hcHMgfmRpcmVjdGl2ZXMgbG9nZ2VyIGluZmx1ZW5jZV9tYXAuUHVibGljX2RhdGEubmVnYXRpdmUgaW5cbiAgbGV0ICgpID0gR3JhcGhfbG9nZ2Vycy5wcmludF9ncmFwaF9mb290IGxvZ2dlciBpblxuICAoKVxuXG5sZXQgdGFibGVfb2ZfaW5mbHVlbmNlc19qc29uIChfLCBfLCBfLCBfLCBvcmlnaW4sIGluZmx1ZW5jZV9tYXApID1cbiAgbGV0IG5hbWVyID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgZSAtPlxuICAgICAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmFkZFxuICAgICAgICAgIChQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBlKVxuICAgICAgICAgIGUgYWNjKVxuICAgICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5lbXB0eSBpbmZsdWVuY2VfbWFwLlB1YmxpY19kYXRhLm5vZGVzXG4gIGluXG4gIGxldCBvcmlnaW5faWRfb3B0ID1cbiAgICBPcHRpb25fdXRpbC5tYXAgUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgb3JpZ2luXG4gIGluXG4gIG1hdGNoIG9yaWdpbl9pZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gZW1wdHlfc3BoZXJlXG4gIHwgU29tZSBvcmlnaW5faWQgLT5cbiAgICBsZXQgcG9zaXRpdmVfb24sIHBvc2l0aXZlX2J5ID1cbiAgICAgIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZm9sZFxuICAgICAgICAoZnVuIHNyYyAtPlxuICAgICAgICAgIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZm9sZCAoZnVuIGRzdCBkYXRhICgob24sIGJ5KSBhcyBhY2MpIC0+XG4gICAgICAgICAgICAgIGlmIHNyYyA9IG9yaWdpbl9pZCB0aGVuIChcbiAgICAgICAgICAgICAgICBtYXRjaCBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZpbmRfb3B0aW9uIGRzdCBuYW1lciB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgIHwgU29tZSB2IC0+ICh2LCBkYXRhKSA6OiBvbiwgYnlcbiAgICAgICAgICAgICAgKSBlbHNlIGlmIGRzdCA9IG9yaWdpbl9pZCB0aGVuIChcbiAgICAgICAgICAgICAgICBtYXRjaCBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZpbmRfb3B0aW9uIHNyYyBuYW1lciB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgIHwgU29tZSB2IC0+IG9uLCAodiwgZGF0YSkgOjogYnlcbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgYWNjKSlcbiAgICAgICAgaW5mbHVlbmNlX21hcC5QdWJsaWNfZGF0YS5wb3NpdGl2ZSAoW10sIFtdKVxuICAgIGluXG4gICAgbGV0IG5lZ2F0aXZlX29uLCBuZWdhdGl2ZV9ieSA9XG4gICAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZvbGRcbiAgICAgICAgKGZ1biBzcmMgLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZvbGQgKGZ1biBkc3QgZGF0YSAoKG9uLCBieSkgYXMgYWNjKSAtPlxuICAgICAgICAgICAgICBpZiBzcmMgPSBvcmlnaW5faWQgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWF0Y2ggUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5maW5kX29wdGlvbiBkc3QgbmFtZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiAodiwgZGF0YSkgOjogb24sIGJ5XG4gICAgICAgICAgICAgICkgZWxzZSBpZiBkc3QgPSBvcmlnaW5faWQgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWF0Y2ggUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5maW5kX29wdGlvbiBzcmMgbmFtZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBvbiwgKHYsIGRhdGEpIDo6IGJ5XG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGFjYykpXG4gICAgICAgIGluZmx1ZW5jZV9tYXAuUHVibGljX2RhdGEubmVnYXRpdmUgKFtdLCBbXSlcbiAgICBpblxuICAgIHsgcG9zaXRpdmVfb247IHBvc2l0aXZlX2J5OyBuZWdhdGl2ZV9vbjsgbmVnYXRpdmVfYnkgfVxuXG5sZXQgcG9wX2NlbGwgPSBmdW5jdGlvblxuICB8IFtdIC0+IEh0bWwudGQgW10sIFtdXG4gIHwgKChub2RlLCBfbWFwcGluZ3MpLCBwb3NpdGl2ZSkgOjogdCAtPlxuICAgICggSHRtbC50ZFxuICAgICAgICB+YTpcbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmFfb25jbGljayAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgU3VicGFuZWxfZWRpdG9yLnNldF9tb3ZlX2N1cnNvclxuICAgICAgICAgICAgICAgICAgICAoUHVibGljX2RhdGEucG9zaXRpb25fb2ZfcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZSBub2RlKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IG9yaWdpbiA9XG4gICAgICAgICAgICAgICAgICBTb21lIChQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBub2RlKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IG9yaWdpbl9sYWJlbCA9IFNvbWUgKGluZmx1ZW5jZV9ub2RlX2xhYmVsIG5vZGUpIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZV9tb2RlbCAoZnVuIG0gLT4geyBtIHdpdGggb3JpZ2luOyBvcmlnaW5fbGFiZWwgfSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHRydWUpO1xuICAgICAgICAgICAgSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAoaWYgcG9zaXRpdmUgdGhlblxuICAgICAgICAgICAgICAgICAgIFwic3VjY2Vzc1wiXG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICBcImRhbmdlclwiKTtcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICBdXG4gICAgICAgIFsgSHRtbC5jZGF0YSAoaW5mbHVlbmNlX25vZGVfbGFiZWwgbm9kZSkgXSxcbiAgICAgIHQgKVxuXG5sZXQgcmVjIGZpbGxfdGFibGUgYWNjIGJ5IG9uID1cbiAgaWYgb24gPSBbXSAmJiBieSA9IFtdIHRoZW5cbiAgICBMaXN0LnJldiBhY2NcbiAgZWxzZSAoXG4gICAgbGV0IGIsIGJ5JyA9IHBvcF9jZWxsIGJ5IGluXG4gICAgbGV0IG8sIG9uJyA9IHBvcF9jZWxsIG9uIGluXG4gICAgbGV0IGxpbmUgPSBIdG1sLnRyIFsgYjsgbyBdIGluXG4gICAgZmlsbF90YWJsZSAobGluZSA6OiBhY2MpIGJ5JyBvbidcbiAgKVxuXG5sZXQgZHJhd190YWJsZSBvcmlnaW5fbGFiZWxcbiAgICB7IHBvc2l0aXZlX29uOyBwb3NpdGl2ZV9ieTsgbmVnYXRpdmVfb247IG5lZ2F0aXZlX2J5IH0gPVxuICBsZXQgYnkgPVxuICAgIExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZFxuICAgICAgKGZ1biB4IC0+IHgsIGZhbHNlKVxuICAgICAgbmVnYXRpdmVfYnlcbiAgICAgIChMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgsIHRydWUpIHBvc2l0aXZlX2J5KVxuICBpblxuICBsZXQgb24gPVxuICAgIExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZFxuICAgICAgKGZ1biB4IC0+IHgsIGZhbHNlKVxuICAgICAgbmVnYXRpdmVfb25cbiAgICAgIChMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgsIHRydWUpIHBvc2l0aXZlX29uKVxuICBpblxuICBsZXQgb3V0cyA9IGZpbGxfdGFibGUgW10gYnkgb24gaW5cbiAgSHRtbC50YWJsZXhcbiAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwidGFibGVcIiBdIF1cbiAgICB+dGhlYWQ6XG4gICAgICAoSHRtbC50aGVhZFxuICAgICAgICAgW1xuICAgICAgICAgICBIdG1sLnRyXG4gICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgSHRtbC50aFxuICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jb2xzcGFuIDIgXVxuICAgICAgICAgICAgICAgICBbIEh0bWwuY2RhdGEgKE9wdGlvbl91dGlsLnVuc29tZSBcIm9yaWdpblwiIG9yaWdpbl9sYWJlbCkgXTtcbiAgICAgICAgICAgICBdO1xuICAgICAgICAgICBIdG1sLnRyXG4gICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgSHRtbC50aCBbIEh0bWwuY2RhdGEgXCJpcyBpbmZsdWVuY2VkIGJ5XCIgXTtcbiAgICAgICAgICAgICAgIEh0bWwudGggWyBIdG1sLmNkYXRhIFwiaW5mbHVlbmNlc1wiIF07XG4gICAgICAgICAgICAgXTtcbiAgICAgICAgIF0pXG4gICAgWyBIdG1sLnRib2R5IG91dHMgXVxuXG5sZXQgaW5mbHVlbmNlX3NwaGVyZSA9XG4gIFN0YXRlX3Byb2plY3Qub25fcHJvamVjdF9jaGFuZ2VfYXN5bmMgfm9uOnRhYl9pc19hY3RpdmUgZHVtbXlfbW9kZWwgbW9kZWxcbiAgICAoUmVzdWx0X3V0aWwub2sgZW1wdHlfc3BoZXJlKVxuICAgIChmdW4gbWFuYWdlciB7IHJlbmRlcmluZzsgYWNjdXJhY3k7IG9yaWdpbjsgb3JpZ2luX2xhYmVsID0gXyB9IC0+XG4gICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgfCBEcmF3VGFidWxhciBfIC0+XG4gICAgICAgIG1hbmFnZXIjZ2V0X2xvY2FsX2luZmx1ZW5jZV9tYXAgP2Z3ZDpOb25lID9id2Q6Tm9uZSA/b3JpZ2luIH50b3RhbDoxXG4gICAgICAgICAgYWNjdXJhY3lcbiAgICAgICAgPnw9IFJlc3VsdF91dGlsLm1hcCB0YWJsZV9vZl9pbmZsdWVuY2VzX2pzb25cbiAgICAgIHwgRHJhd0dyYXBoIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgZW1wdHlfc3BoZXJlKSlcblxubGV0IGNvbnRlbnQgKCkgPVxuICBsZXQgYWNjdXJhY3lfZm9ybSA9XG4gICAgSHRtbC5mb3JtXG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1ob3Jpem9udGFsXCIgXSBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tZ3JvdXBcIiBdIF1cbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmxhYmVsXG4gICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdO1xuICAgICAgICAgICAgICAgICAgSHRtbC5hX2xhYmVsX2ZvciByZW5kZXJpbmdfY2hvb3Nlcl9pZDtcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJSZW5kZXJpbmdcIiBdO1xuICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtNFwiIF0gXSBbIHJlbmRlcmluZ19jaG9vc2VyIF07XG4gICAgICAgICAgICBIdG1sLmxhYmVsXG4gICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdO1xuICAgICAgICAgICAgICAgICAgSHRtbC5hX2xhYmVsX2ZvciBhY2N1cmFjeV9jaG9vc2VyX2lkO1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgWyBIdG1sLnR4dCBcIkFjY3VyYWN5XCIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyBhY2N1cmFjeV9jaG9vc2VyIF07XG4gICAgICAgICAgXTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1ncm91cFwiIF0gXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwubGFiZWxcbiAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgWyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0zXCIgXTsgSHRtbC5hX2xhYmVsX2ZvciB0b3RhbF9pbnB1dF9pZCBdXG4gICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJOYXZpZ2F0ZVwiIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgcHJldl9ub2RlIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgbmV4dF9ub2RlIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgcmVjZW50ZXIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyB0cmFja19jdXJzb3Jfc3dpdGNoIF07XG4gICAgICAgICAgXTtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IGdyYXBoX2Zvcm0gPVxuICAgIEh0bWwuZm9ybVxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0taG9yaXpvbnRhbFwiIF0gXVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWdyb3VwXCIgXSBdXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5sYWJlbFxuICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTNcIiBdIF1cbiAgICAgICAgICAgICAgWyBIdG1sLnR4dCBcIlNpemUgUmFkaXVzXCIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyB0b3RhbF9pbnB1dCBdO1xuICAgICAgICAgICAgSHRtbC5sYWJlbCB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTFcIiBdIF0gWyBIdG1sLnR4dCBcImZ3ZFwiIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgZndkX2lucHV0IF07XG4gICAgICAgICAgICBIdG1sLmxhYmVsIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF0gXSBbIEh0bWwudHh0IFwiYndkXCIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyBid2RfaW5wdXQgXTtcbiAgICAgICAgICBdO1xuICAgICAgXVxuICBpblxuICBbXG4gICAgYWNjdXJhY3lfZm9ybTtcbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWw1LmFfY2xhc3NcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biB7IHJlbmRlcmluZzsgXyB9IC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIHJlbmRlcmluZyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgRHJhd0dyYXBoIF8gLT4gWyBcImZsZXgtY29udGVudFwiIF1cbiAgICAgICAgICAgICAgICAgfCBEcmF3VGFidWxhciBfIC0+IFtdKVxuICAgICAgICAgICAgICAgbW9kZWwpO1xuICAgICAgICAgIFR5eG1sX2pzLlIuZmlsdGVyX2F0dHJpYiAoSHRtbC5hX2hpZGRlbiAoKSlcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biB7IHJlbmRlcmluZzsgXyB9IC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIHJlbmRlcmluZyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgRHJhd0dyYXBoIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgfCBEcmF3VGFidWxhciBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICBtb2RlbCk7XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgZ3JhcGhfZm9ybTtcbiAgICAgICAgSHRtbC5kaXYgfmE6WyBIdG1sLmFfaWQgZGlzcGxheV9pZDsgSHRtbC5hX2NsYXNzIFsgXCJmbGV4LWNvbnRlbnRcIiBdIF0gW107XG4gICAgICBdO1xuICAgIFR5eG1sX2pzLlIuSHRtbDUuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtc2Nyb2xsXCIgXSBdXG4gICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgICAgICAoUmVhY3QuUy5sMlxuICAgICAgICAgICAgKGZ1biB7IHJlbmRlcmluZzsgb3JpZ2luX2xhYmVsOyBfIH0gc3BoZXJlIC0+XG4gICAgICAgICAgICAgIG1hdGNoIHJlbmRlcmluZyB3aXRoXG4gICAgICAgICAgICAgIHwgRHJhd0dyYXBoIF8gLT4gW11cbiAgICAgICAgICAgICAgfCBEcmF3VGFidWxhciAoKSAtPlxuICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLmZvbGQgc3BoZXJlXG4gICAgICAgICAgICAgICAgICB+b2s6KGZ1biBzcGhlcmUgLT4gWyBkcmF3X3RhYmxlIG9yaWdpbl9sYWJlbCBzcGhlcmUgXSlcbiAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9yIC0+XG4gICAgICAgICAgICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UgbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IpKVxuICAgICAgICAgICAgbW9kZWwgaW5mbHVlbmNlX3NwaGVyZSkpO1xuICAgIFdpZGdldF9leHBvcnQuY29udGVudCBleHBvcnRfY29uZmlnO1xuICBdXG5cbmxldCBuZWl0aGVyX2djX21lID1cbiAgUmVhY3QuUy5sMlxuICAgIChmdW4gXyB7IHJlbmRlcmluZzsgYWNjdXJhY3k7IG9yaWdpbjsgb3JpZ2luX2xhYmVsID0gXyB9IC0+XG4gICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgfCBEcmF3VGFidWxhciBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgfCBEcmF3R3JhcGggeyBmd2Q7IGJ3ZDsgdG90YWwgfSAtPlxuICAgICAgICBTdGF0ZV9lcnJvci53cmFwIH5hcHBlbmQ6dHJ1ZSBcImluZmx1ZW5jZV9tYXBcIlxuICAgICAgICAgIChTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgICAgbWFuYWdlciNnZXRfbG9jYWxfaW5mbHVlbmNlX21hcCA/ZndkID9id2QgP29yaWdpbiB+dG90YWwgYWNjdXJhY3lcbiAgICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biBpbmZsdWVuY2VzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDEwMDAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9nZ2VyID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB+bW9kZTpMb2dnZXJzLkpzX0dyYXBoIGZtdFxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9nZ2VyX2dyYXBoID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5leHRlbmRfbG9nZ2VyIGxvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBqc29uX3RvX2dyYXBoIGxvZ2dlcl9ncmFwaCBpbmZsdWVuY2VzIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBncmFwaCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuZ3JhcGhfb2ZfbG9nZ2VyIGxvZ2dlcl9ncmFwaFxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ3JhcGhfanNvbiA9IEdyYXBoX2pzb24udG9fanNvbiBncmFwaCBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZsdXNoX2xvZ2dlciBsb2dnZXIgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5jbG9zZV9sb2dnZXIgbG9nZ2VyIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgaW5mbHVlbmNlbWFwIyNzZXREYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoSnMuc3RyaW5nIChZb2pzb24uQmFzaWMudG9fc3RyaW5nIGdyYXBoX2pzb24pKVxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gaW5mbHVlbmNlbWFwIyNjbGVhckRhdGEgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuZXJyb3IgZSkpKSlcbiAgICAoUmVhY3QuUy5vbiB+ZXE6U3RhdGVfcHJvamVjdC5tb2RlbF9lcXVhbCB0YWJfaXNfYWN0aXZlXG4gICAgICAgU3RhdGVfcHJvamVjdC5kdW1teV9tb2RlbCBTdGF0ZV9wcm9qZWN0Lm1vZGVsKVxuICAgIG1vZGVsXG5cbmxldCBub3JfZ2NfbWUgPVxuICBTdGF0ZV9maWxlLndpdGhfY3VycmVudF9wb3NcbiAgICB+b246KFJlYWN0LlMuQm9vbC4oICYmICkgdGFiX2lzX2FjdGl2ZSB0cmFja19jdXJzb3IpXG4gICAgKGZ1biBmaWxlbmFtZSBjdXJzb3JfcG9zIC0+XG4gICAgICBTb21lXG4gICAgICAgIChTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgLT5cbiAgICAgICAgICAgICBtYW5hZ2VyI2dldF9pbmZsdWVuY2VfbWFwX25vZGVfYXQgfmZpbGVuYW1lIGN1cnNvcl9wb3NcbiAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwubWFwIChmdW4gb3JpZ2luJyAtPlxuICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX21vZGVsIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIHsgbSB3aXRoIG9yaWdpbiA9IG9yaWdpbic7IG9yaWdpbl9sYWJlbCA9IE5vbmUgfSkpKSkpXG4gICAgKEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcblxubGV0IHBhcmVudF9oaWRlICgpID0gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2VcbmxldCBwYXJlbnRfc2hvd24gKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSAhdGFiX3dhc19hY3RpdmVcbmxldCBkb250X2djX21lID0gcmVmIFtdXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPSBkb250X2djX21lIDo9IFsgbmVpdGhlcl9nY19tZTsgbm9yX2djX21lIF0gaW5cbiAgbGV0ICgpID0gV2lkZ2V0X2V4cG9ydC5vbmxvYWQgZXhwb3J0X2NvbmZpZyBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IHJlbmRlcmluZ19jaG9vc2VyKSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gdmEgXyAtPlxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIHVwZGF0ZV9tb2RlbCAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIG0gd2l0aFxuICAgICAgICAgICAgICAgICAgIHJlbmRlcmluZyA9XG4gICAgICAgICAgICAgICAgICAgICAoaWYgSnMudG9fc3RyaW5nIHZhIyMudmFsdWUgPSBcImdyYXBoXCIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgRHJhd0dyYXBoIHsgZndkID0gTm9uZTsgYndkID0gTm9uZTsgdG90YWwgPSAxIH1cbiAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBEcmF3VGFidWxhciAoKSk7XG4gICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IGFjY3VyYWN5X2Nob29zZXIpIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biB2YSBfIC0+XG4gICAgICAgICAgIGxldCBhY2N1cmFjeSA9XG4gICAgICAgICAgICAgUHVibGljX2RhdGEuYWNjdXJhY3lfb2Zfc3RyaW5nIChKcy50b19zdHJpbmcgdmEjIy52YWx1ZSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID0gdXBkYXRlX21vZGVsIChmdW4gbSAtPiB7IG0gd2l0aCBhY2N1cmFjeSB9KSBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IHRvdGFsX2lucHV0KSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gdmEgXyAtPlxuICAgICAgICAgICBsZXQgdmEgPSBKcy50b19zdHJpbmcgdmEjIy52YWx1ZSBpblxuICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgdXBkYXRlX21vZGVsX2dyYXBoIChmdW4gbSAtPiB7IG0gd2l0aCB0b3RhbCA9IGludF9vZl9zdHJpbmcgdmEgfSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIEpzLl90cnVlXG4gICAgICAgICAgIHdpdGggXyAtPiBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBmd2RfaW5wdXQpIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biB2YSBfIC0+XG4gICAgICAgICAgIGxldCB2YSA9IEpzLnRvX3N0cmluZyB2YSMjLnZhbHVlIGluXG4gICAgICAgICAgIHRyeVxuICAgICAgICAgICAgIGxldCBmd2QgPVxuICAgICAgICAgICAgICAgaWYgdmEgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBTb21lIChpbnRfb2Zfc3RyaW5nIHZhKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0ICgpID0gdXBkYXRlX21vZGVsX2dyYXBoIChmdW4gbSAtPiB7IG0gd2l0aCBmd2QgfSkgaW5cbiAgICAgICAgICAgICBKcy5fdHJ1ZVxuICAgICAgICAgICB3aXRoIF8gLT4gSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgYndkX2lucHV0KSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gdmEgXyAtPlxuICAgICAgICAgICBsZXQgdmEgPSBKcy50b19zdHJpbmcgdmEjIy52YWx1ZSBpblxuICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICBsZXQgYndkID1cbiAgICAgICAgICAgICAgIGlmIHZhID0gXCJcIiB0aGVuXG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgU29tZSAoaW50X29mX3N0cmluZyB2YSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9tb2RlbF9ncmFwaCAoZnVuIG0gLT4geyBtIHdpdGggYndkIH0pIGluXG4gICAgICAgICAgICAgSnMuX3RydWVcbiAgICAgICAgICAgd2l0aCBfIC0+IEpzLl9mYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiByZWNlbnRlcikjIy5vbmNsaWNrXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gXyBfIC0+XG4gICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICBTdGF0ZV9lcnJvci53cmFwIFwiaW5mbHVlbmNlX21hcF9yZWNlbnRlclwiXG4gICAgICAgICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9pbml0aWFsX25vZGVcbiAgICAgICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLm1hcCAoZnVuIG9yaWdpbl9yZWZpbmVkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9yaWdpbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luX3JlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW5fbGFiZWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwIGluZmx1ZW5jZV9ub2RlX2xhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbl9yZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfbW9kZWwgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbSB3aXRoIG9yaWdpbjsgb3JpZ2luX2xhYmVsIH0pKSkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIG5leHRfbm9kZSkjIy5vbmNsaWNrXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gXyBfIC0+XG4gICAgICAgICAgIGxldCB7IG9yaWdpbjsgXyB9ID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgU3RhdGVfZXJyb3Iud3JhcCBcImluZmx1ZW5jZV9tYXBfbmV4dF9ub2RlXCJcbiAgICAgICAgICAgICAgIChTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X25leHRfbm9kZSBvcmlnaW5cbiAgICAgICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLm1hcCAoZnVuIG9yaWdpbl9yZWZpbmVkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9yaWdpbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luX3JlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW5fbGFiZWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwIGluZmx1ZW5jZV9ub2RlX2xhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbl9yZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfbW9kZWwgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbSB3aXRoIG9yaWdpbjsgb3JpZ2luX2xhYmVsIH0pKSkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIHByZXZfbm9kZSkjIy5vbmNsaWNrXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gXyBfIC0+XG4gICAgICAgICAgIGxldCB7IG9yaWdpbjsgXyB9ID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgU3RhdGVfZXJyb3Iud3JhcCBcImluZmx1ZW5jZV9tYXBfcHJldl9ub2RlXCJcbiAgICAgICAgICAgICAgIChTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X3ByZXZpb3VzX25vZGUgb3JpZ2luXG4gICAgICAgICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5tYXAgKGZ1biBvcmlnaW5fcmVmaW5lZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY19kYXRhLnNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbl9yZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3JpZ2luX2xhYmVsID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcCBpbmZsdWVuY2Vfbm9kZV9sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5fcmVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX21vZGVsIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG0gd2l0aCBvcmlnaW47IG9yaWdpbl9sYWJlbCB9KSkpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdmluZmx1ZW5jZXNcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IGZhbHNlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2aW5mbHVlbmNlc1wiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IHRydWUgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgbmF2bGkgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5sZXQgdGFiX3dhc19hY3RpdmUgPSByZWYgZmFsc2VcbmxldCBzaXRlIGEgPSBbIGEsIE5vbmUsIFNvbWUgKFB1YmxpY19kYXRhLkJvdW5kX3RvIDEpLCBOb25lIF1cblxubGV0IHByaW50X2VkZ2UgKChhLCBiKSwgKGMsIGQpKSBsaXN0ID1cbiAgVXRpbGl0eS5wcmludF9uZXdsaW5lIChVdGlsaXR5LnByaW50X3NpdGVfZ3JhcGggWyBhLCBzaXRlIGI7IGMsIHNpdGUgZCBdIGxpc3QpXG5cbmxldCBjb250ZW50ICgpID1cbiAgbGV0IHNjYyA9XG4gICAgU3RhdGVfcHJvamVjdC5vbl9wcm9qZWN0X2NoYW5nZV9hc3luYyB+b246dGFiX2lzX2FjdGl2ZSAoKVxuICAgICAgKFJlYWN0LlMuY29uc3QgKCkpIFtdIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgKCkgLT5cbiAgICAgICAgbWFuYWdlciNnZXRfcG90ZW50aWFsX3BvbHltZXJzIChTb21lIFB1YmxpY19kYXRhLkhpZ2gpXG4gICAgICAgICAgKFNvbWUgUHVibGljX2RhdGEuSGlnaClcbiAgICAgICAgKCpUT0RPOiBtYWtlIHRoZXNlIG9wdGlvbnMgdHVuYWJsZSAqKVxuICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICB+b2s6KGZ1biAoXywgXywgc2NjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBzY2MgPSBMaXN0LnJldl9tYXAgTGlzdC5yZXYgc2NjIGluXG4gICAgICAgICAgICAgICAgbGV0IG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICBpZiBzY2MgPSBbXSB8fCBzY2MgPSBbIFtdIF0gdGhlblxuICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LnByaW50X3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgIFwiVGhlIHNpemUgb2YgYmlvbW9sZWN1bGFyIGNvbXBvdW5kcyBpcyB1bmlmb3JtbHkgYm91bmRlZC5cIlxuICAgICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgbGlzdF9lZGdlcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IFV0aWxpdHkucHJpbnRfbmV3bGluZSBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0ICgoYSwgYiksIChjLCBkKSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50X2VkZ2UgKChhLCBiKSwgKGMsIGQpKSBsaXN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QgbGlzdF9lZGdlcylcbiAgICAgICAgICAgICAgICAgICAgICAgIFtdIHNjY1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IFV0aWxpdHkucHJpbnRfbmV3bGluZSBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LnByaW50X3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGUgZm9sbG93aW5nIGJvbmRzIG1heSBmb3JtIGFyYml0cmFyeSBsb25nIGNoYWlucyBvZiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50czpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBbIEh0bWwucCBvdXRwdXQgXSlcbiAgICAgICAgICAgICAgfmVycm9yOihmdW4gbWggLT5cbiAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgICAgIEh0bWwucFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIiBSZXN1bHRfdXRpbC5wcmludF9tZXNzYWdlIG0pO1xuICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICBtaCkpXG4gIGluXG4gIFtcbiAgICBUeXhtbF9qcy5SLkh0bWw1LmRpdlxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLXByZVwiOyBcInBhbmVsLXNjcm9sbFwiIF0gXVxuICAgICAgKFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbCBzY2MpO1xuICBdXG5cbmxldCBwYXJlbnRfaGlkZSAoKSA9IHNldF90YWJfaXNfYWN0aXZlIGZhbHNlXG5sZXQgcGFyZW50X3Nob3duICgpID0gc2V0X3RhYl9pc19hY3RpdmUgIXRhYl93YXNfYWN0aXZlXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2cG9seW1lcnNcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IGZhbHNlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2cG9seW1lcnNcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSB0cnVlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxubGV0IG5hdmxpICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5sZXQgcmlnaHRzdWJwYW5lbF9pZCA6IHN0cmluZyA9IFwicmlnaHRzdWJwYW5lbFwiXG5cbmxldCByaWdodHN1YnBhbmVsICgpID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAoUmVhY3QuUy5iaW5kIFN1YnBhbmVsX2VkaXRvci5lZGl0b3JfZnVsbCAoZnVuIGVkaXRvcl9mdWxsIC0+XG4gICAgICAgICAgICAgICBSZWFjdC5TLmNvbnN0XG4gICAgICAgICAgICAgICAgIChpZiBlZGl0b3JfZnVsbCB0aGVuXG4gICAgICAgICAgICAgICAgICAgIFsgXCJoaWRkZW5cIiBdXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIFsgXCJjb2wtbWQtNlwiOyBcImhpZGRlbi14c1wiOyBcImhpZGRlbi1zbVwiOyBcImZsZXgtY29udGVudFwiIF0pKSk7XG4gICAgICBdXG4gICAgW1xuICAgICAgVWlfY29tbW9uLm5hdnRhYnMgXCJzdWJuYXZ0YWJcIlxuICAgICAgICBbXG4gICAgICAgICAgXCJjb250YWN0X21hcFwiLCBOb25lLCBUYWJfY29udGFjdF9tYXAubmF2bGkgKCk7XG4gICAgICAgICAgXCJpbmZsdWVuY2VzXCIsIE5vbmUsIFRhYl9pbmZsdWVuY2VzLm5hdmxpICgpO1xuICAgICAgICAgIFwiY29uc3RyYWludHNcIiwgTm9uZSwgVGFiX2NvbnN0cmFpbnRzLm5hdmxpICgpO1xuICAgICAgICAgIFwicG9seW1lcnNcIiwgTm9uZSwgVGFiX3BvbHltZXJzLm5hdmxpICgpO1xuICAgICAgICBdO1xuICAgICAgVWlfY29tbW9uLm5hdmNvbnRlbnQgfmlkOnJpZ2h0c3VicGFuZWxfaWQgW11cbiAgICAgICAgW1xuICAgICAgICAgIFwiY29udGFjdF9tYXBcIiwgW10sIFRhYl9jb250YWN0X21hcC5jb250ZW50ICgpO1xuICAgICAgICAgIFwiaW5mbHVlbmNlc1wiLCBbXSwgVGFiX2luZmx1ZW5jZXMuY29udGVudCAoKTtcbiAgICAgICAgICBcImNvbnN0cmFpbnRzXCIsIFtdLCBUYWJfY29uc3RyYWludHMuY29udGVudCAoKTtcbiAgICAgICAgICBcInBvbHltZXJzXCIsIFtdLCBUYWJfcG9seW1lcnMuY29udGVudCAoKTtcbiAgICAgICAgXTtcbiAgICBdXG5cbigqKiBbY2hpbGRzX2hpZGUgYl0gdHJpZ2dlcnMgY2hhbmdlIHRoZSBzdGF0ZSBvZiBjaGlsZCB0YWJzIHRvIGhpZGUgaWYgYiBpcyBUcnVlLCBvciBlbHNlIHRvIHNob3cgKilcbmxldCBjaGlsZHNfaGlkZSAoYiA6IGJvb2wpIDogdW5pdCA9XG4gIGlmIGIgdGhlbiAoXG4gICAgbGV0ICgpID0gVGFiX2NvbnRhY3RfbWFwLnBhcmVudF9oaWRlICgpIGluXG4gICAgbGV0ICgpID0gVGFiX2luZmx1ZW5jZXMucGFyZW50X2hpZGUgKCkgaW5cbiAgICBsZXQgKCkgPSBUYWJfY29uc3RyYWludHMucGFyZW50X2hpZGUgKCkgaW5cbiAgICBUYWJfcG9seW1lcnMucGFyZW50X2hpZGUgKClcbiAgKSBlbHNlIChcbiAgICBsZXQgKCkgPSBUYWJfY29udGFjdF9tYXAucGFyZW50X3Nob3duICgpIGluXG4gICAgbGV0ICgpID0gVGFiX2luZmx1ZW5jZXMucGFyZW50X3Nob3duICgpIGluXG4gICAgbGV0ICgpID0gVGFiX2NvbnN0cmFpbnRzLnBhcmVudF9zaG93biAoKSBpblxuICAgIFRhYl9wb2x5bWVycy5wYXJlbnRfc2hvd24gKClcbiAgKVxuXG5sZXQgY29udGVudCAoKSA9XG4gIFtcbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKFJlYWN0LlMuYmluZCBTdWJwYW5lbF9lZGl0b3IuZWRpdG9yX2Z1bGwgKGZ1biBlZGl0b3JfZnVsbCAtPlxuICAgICAgICAgICAgICAgICAoKiBjaGlsZCBoaWRpbmcgc2V0IGhlcmUgdG8gYXZvaWQgXCJnY1wiICopXG4gICAgICAgICAgICAgICAgIGxldCAoKSA9IGNoaWxkc19oaWRlIGVkaXRvcl9mdWxsIGluXG4gICAgICAgICAgICAgICAgIFJlYWN0LlMuY29uc3RcbiAgICAgICAgICAgICAgICAgICAoaWYgZWRpdG9yX2Z1bGwgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIFsgXCJjb2wtbWQtMTJcIjsgXCJmbGV4LWNvbnRlbnRcIiBdXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBbIFwiY29sLW1kLTZcIjsgXCJmbGV4LWNvbnRlbnRcIiBdKSkpO1xuICAgICAgICBdXG4gICAgICBbIFN1YnBhbmVsX2VkaXRvci5jb250ZW50ICgpIF07XG4gICAgcmlnaHRzdWJwYW5lbCAoKTtcbiAgXVxuXG5sZXQgaW5pdF9kZWFkX3J1bGVzICgpID1cbiAgUmVhY3QuUy5sMVxuICAgIChmdW4gbW9kZWwgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgfmFwcGVuZDp0cnVlIFwidGFiX2VkaXRvcl9kZWFkX3J1bGVcIlxuICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5zaG93X2RlYWRfcnVsZXNcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9kZWFkX3J1bGVzXG4gICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2FybmluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyBydWxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJ1bGUuUHVibGljX2RhdGEucnVsZV9oaWRkZW4gdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRlYWQgcnVsZSBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2xhYmVsIDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiAnXCIgXiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfbGFiZWwgXiBcIidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfYXN0IDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlLlB1YmxpY19kYXRhLnJ1bGVfYXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuV2FybmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBydWxlLlB1YmxpY19kYXRhLnJ1bGVfcG9zaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgd2FybmluZ3MpXG4gICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBtaCAtPiBtaClcbiAgICAgICAgICAgICAgID58PSBBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyA/cmVzdWx0X2NvZGU6Tm9uZVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpKVxuICAgIFN0YXRlX3Byb2plY3QubW9kZWxcblxubGV0IGluaXRfZGVhZF9hZ2VudHMgKCkgPVxuICBSZWFjdC5TLmwxXG4gICAgKGZ1biBtb2RlbCAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCB+YXBwZW5kOnRydWUgXCJ0YWJfZWRpdG9yX2RlYWRfYWdlbnRcIlxuICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5zaG93X2RlYWRfYWdlbnRzXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgbWFuYWdlciNnZXRfZGVhZF9hZ2VudHNcbiAgICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB3YXJuaW5ncyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjIGFnZW50IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRlYWQgYWdlbnQgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYWdlbnQuUHVibGljX2RhdGEuYWdlbnRfYXN0IDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnQuUHVibGljX2RhdGEuYWdlbnRfYXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludCBhZ2VudC5QdWJsaWNfZGF0YS5hZ2VudF9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjIHJhbmdlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5XYXJuaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5yYW5nZSA9IFNvbWUgcmFuZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjIGFnZW50LlB1YmxpY19kYXRhLmFnZW50X3Bvc2l0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldiB3YXJuaW5ncylcbiAgICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIG1oIC0+IG1oKVxuICAgICAgICAgICAgICAgPnw9IEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzID9yZXN1bHRfY29kZTpOb25lXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSkpXG4gICAgU3RhdGVfcHJvamVjdC5tb2RlbFxuXG5sZXQgaW5pdF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgKCkgPVxuICBSZWFjdC5TLmwxXG4gICAgKGZ1biBtb2RlbCAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCB+YXBwZW5kOnRydWUgXCJ0YWJfZWRpdG9yX2RlYWRfcnVsZVwiXG4gICAgICAgIChTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAgICAgIC5TdGF0ZV9wcm9qZWN0LnNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgbWFuYWdlciNnZXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2FybmluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyAocnVsZSwgY29udGV4dF9saXN0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfaGlkZGVuIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogaGludDogcmV2ZXJzaWJsZSBydWxlIGFyZSBhbHdheXMgd2Vha2x5IHJldmVyc2libGUgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBsdXJhbCwgc2tpcCwgdGFiID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNvbnRleHRfbGlzdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtdIHwgWyBfIF0gLT4gXCJcIiwgXCJcIiwgXCIgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiBfIC0+IFwic1wiLCBcIlxcblwiLCBcIlxcdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJSdWxlICVzIG1heSBpbmR1Y2Ugbm9uIHdlYWtseSByZXZlcnNpYmxlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudHMgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0JXM6JXMlYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfbGFiZWwgPD4gXCJcIiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiICdcIiBeIHJ1bGUuUHVibGljX2RhdGEucnVsZV9sYWJlbCBeIFwiJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIHJ1bGUuUHVibGljX2RhdGEucnVsZV9hc3QgPD4gXCJcIiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUuUHVibGljX2RhdGEucnVsZV9hc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludCBydWxlLlB1YmxpY19kYXRhLnJ1bGVfaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdXJhbCBza2lwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcC5saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZm10IC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzXCIgc2tpcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBmbXQgKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJXMlcyAtPiAlcyBcIiB0YWIgYSBiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dF9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiB0byBkbywgYWRkIHRoZSBwb3RlbnRpYWwgY29udGV4dHMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuV2FybmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBydWxlLlB1YmxpY19kYXRhLnJ1bGVfcG9zaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgd2FybmluZ3MpXG4gICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBtaCAtPiBtaClcbiAgICAgICAgICAgICAgID58PSBBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyA/cmVzdWx0X2NvZGU6Tm9uZVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpKVxuICAgIFN0YXRlX3Byb2plY3QubW9kZWxcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9IFN1YnBhbmVsX2VkaXRvci5vbmxvYWQgKCkgaW5cbiAgbGV0IF8gPSBpbml0X2RlYWRfcnVsZXMgKCkgaW5cbiAgbGV0IF8gPSBpbml0X2RlYWRfYWdlbnRzICgpIGluXG4gIGxldCBfID0gaW5pdF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2NvbnRhY3RfbWFwLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfaW5mbHVlbmNlcy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2NvbnN0cmFpbnRzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfcG9seW1lcnMub25sb2FkICgpIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZlZGl0b3JcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+IGNoaWxkc19oaWRlIHRydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZlZGl0b3JcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPiBjaGlsZHNfaGlkZSBmYWxzZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9XG4gIGxldCAoKSA9IFN1YnBhbmVsX2VkaXRvci5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfY29udGFjdF9tYXAub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2luZmx1ZW5jZXMub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2NvbnN0cmFpbnRzLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9wb2x5bWVycy5vbnJlc2l6ZSAoKSBpblxuICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcblxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCBkaW5faWQsIHNldF9kaW5faWQgPSBSZWFjdC5TLmNyZWF0ZSBcIlwiXG5cbmxldCBkaW5fbGlzdCA9XG4gIFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX2V2ZW50IFtdXG4gICAgKEx3dF9yZWFjdC5FLm1hcF9zXG4gICAgICAgKGZ1biBfIC0+XG4gICAgICAgICBMd3QubWFwXG4gICAgICAgICAgIChSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgIH5vazooZnVuIGRpbl9pZHMgLT5cbiAgICAgICAgICAgICAgICBsZXQgb3V0ID1cbiAgICAgICAgICAgICAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAgICAgICAgICAgICAoZnVuIGlkIC0+IEh0bWwub3B0aW9uIH5hOlsgSHRtbC5hX3ZhbHVlIGlkIF0gKEh0bWwudHh0IGlkKSlcbiAgICAgICAgICAgICAgICAgICAgZGluX2lkc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgUmVhY3RpdmVEYXRhLlJMaXN0LlNldCBvdXQpXG4gICAgICAgICAgICAgIH5lcnJvcjooZnVuIF8gLT4gUmVhY3RpdmVEYXRhLlJMaXN0LlNldCBbXSkpXG4gICAgICAgICAgIChTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICB+c3RvcHBlZDooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgW10pKVxuICAgICAgICAgICAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBbXSkpXG4gICAgICAgICAgICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyAtPiBtYW5hZ2VyI3NpbXVsYXRpb25fY2F0YWxvZ19kaW4pXG4gICAgICAgICAgICAgICgpKSlcbiAgICAgICAoUmVhY3QuUy5jaGFuZ2VzXG4gICAgICAgICAgKFJlYWN0LlMub24gdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLmR1bW15X21vZGVsXG4gICAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCkpKVxuXG5sZXQgZGluX3NlbGVjdCA9XG4gIFR5eG1sX2pzLlIuSHRtbDUuc2VsZWN0IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdIF0gZGluX2xpc3RcblxubGV0IGRpbl9kYXRhID1cbiAgUmVhY3QuUy5iaW5kIChSZWFjdGl2ZURhdGEuUkxpc3Quc2lnbmFsIGRpbl9saXN0KSAoZnVuY3Rpb25cbiAgICB8IFtdIC0+IFJlYWN0LlMuY29uc3QgTm9uZVxuICAgIHwgXyA6OiBfIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBzZXRfZGluX2lkIChKcy50b19zdHJpbmcgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgZGluX3NlbGVjdCkjIy52YWx1ZSlcbiAgICAgIGluXG4gICAgICBSZWFjdC5TLmJpbmQgZGluX2lkIChmdW4gZGluX2lkIC0+XG4gICAgICAgICAgUmVhY3QuUy5ob2xkIE5vbmVcbiAgICAgICAgICAgIChMd3RfcmVhY3QuRS5mcm9tIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgTHd0Lm1hcFxuICAgICAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5mb2xkIH5vazooZnVuIHggLT4geCkgfmVycm9yOihmdW4gXyAtPiBOb25lKSlcbiAgICAgICAgICAgICAgICAgICAoU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgICAgICAgIH5zdG9wcGVkOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBOb25lKSlcbiAgICAgICAgICAgICAgICAgICAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBOb25lKSlcbiAgICAgICAgICAgICAgICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcCBPcHRpb24uc29tZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfZGluIGRpbl9pZCkpXG4gICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKVxuXG5sZXQgZGluX2hlYWRlciA9XG4gIFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbFxuICAgIChSZWFjdC5TLm1hcFxuICAgICAgIChmdW5jdGlvblxuICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICB8IFNvbWUgZGluIC0+XG4gICAgICAgICAgIFtcbiAgICAgICAgICAgICBIdG1sLnRyXG4gICAgICAgICAgICAgICAoSHRtbC50aCBbIEh0bWwudHh0IFwiYWZmZWN0c1wiIF1cbiAgICAgICAgICAgICAgIDo6IEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biByIGFjYyAtPiBIdG1sLnRoIFsgSHRtbC50eHQgciBdIDo6IGFjYylcbiAgICAgICAgICAgICAgICAgICAgZGluLkRhdGEuZGluX3J1bGVzIFtdKTtcbiAgICAgICAgICAgXSlcbiAgICAgICBkaW5fZGF0YSlcblxubGV0IGRpbl90YWJsZSA9XG4gIFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbFxuICAgIChSZWFjdC5TLm1hcFxuICAgICAgIChmdW5jdGlvblxuICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICB8IFNvbWUgZGluIC0+XG4gICAgICAgICAgIGxldCBvcGVuIERhdGEgaW5cbiAgICAgICAgICAgbGV0IGFsbCA9IGRpbi5kaW5fZGF0YS5kaW5fa2luZCA9IFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkgaW5cbiAgICAgICAgICAgbGV0IGJvZHkgPVxuICAgICAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfcmlnaHRpXG4gICAgICAgICAgICAgICAoZnVuIGkgZGF0YSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgaWYgYWxsIHx8IGRpbi5kaW5fZGF0YS5kaW5faGl0cy4oaSkgPiAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICBIdG1sLnRyXG4gICAgICAgICAgICAgICAgICAgICAoSHRtbC50aFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaW4uZGluX3J1bGVzLihpKSBeIFwiIChcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBkaW4uZGluX2RhdGEuZGluX2hpdHMuKGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXiBcIiBoaXRzKVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgIDo6IEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biB2IGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwudGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgdiA+IDAuIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgXCJzdWNjZXNzXCIgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgdiA8IDAuIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgXCJpbmZvXCIgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBIdG1sLnR4dCAoc3RyaW5nX29mX2Zsb2F0IHYpIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgW10pXG4gICAgICAgICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICBkaW4uZGluX2RhdGEuZGluX2ZsdXhzIFtdXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIFsgSHRtbC50Ym9keSBib2R5IF0pXG4gICAgICAgZGluX2RhdGEpXG5cbmxldCBkaW4gPVxuICBsZXQgdGhlYWQgPSBSZWFjdC5TLmNvbnN0IChUeXhtbF9qcy5SLkh0bWw1LnRoZWFkIGRpbl9oZWFkZXIpIGluXG4gIFR5eG1sX2pzLlIuSHRtbDUudGFibGV4XG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInRhYmxlXCI7IFwidGFibGUtY29uZGVuc2VkXCI7IFwidGFibGUtYm9yZGVyZWRcIiBdIF1cbiAgICB+dGhlYWQgZGluX3RhYmxlXG5cbmxldCBleHBvcnRfY3VycmVudF9kaW4gdG9fc3RyaW5nIG1pbWUgZmlsZW5hbWUgPVxuICBsZXQgZGluX2lkID0gSnMudG9fc3RyaW5nIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IGRpbl9zZWxlY3QpIyMudmFsdWUgaW5cbiAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX2RpbiBkaW5faWRcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBkaW4gLT5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSBKcy5zdHJpbmcgKHRvX3N0cmluZyBkaW4pIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZSB+ZmlsZW5hbWUgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IGV4cG9ydF9jb25maWd1cmF0aW9uID1cbiAge1xuICAgIFdpZGdldF9leHBvcnQuaWQgPSBcImRpbi1leHBvcnRcIjtcbiAgICBXaWRnZXRfZXhwb3J0LnNob3cgPSBSZWFjdC5TLmNvbnN0IHRydWU7XG4gICAgV2lkZ2V0X2V4cG9ydC5oYW5kbGVycyA9XG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwianNvblwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImpzb25cIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydCA9XG4gICAgICAgICAgICBleHBvcnRfY3VycmVudF9kaW4gKERhdGEuc3RyaW5nX29mX2RpbiA/bGVuOk5vbmUpIFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgICB9O1xuICAgICAgICB7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcImRvdFwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImRvdFwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID1cbiAgICAgICAgICAgIGV4cG9ydF9jdXJyZW50X2RpblxuICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCIgKERhdGEucHJpbnRfZG90X2RpbiA/dXVpZDpOb25lKSlcbiAgICAgICAgICAgICAgXCJ0ZXh0L3ZuZC5ncmFwaHZpelwiO1xuICAgICAgICB9O1xuICAgICAgICB7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcImh0bWxcIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmxhYmVsID0gXCJodG1sXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPVxuICAgICAgICAgICAgZXhwb3J0X2N1cnJlbnRfZGluXG4gICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIiBEYXRhLnByaW50X2h0bWxfZGluKVxuICAgICAgICAgICAgICBcInRleHQvaHRtbFwiO1xuICAgICAgICB9O1xuICAgICAgXTtcbiAgfVxuXG5sZXQgY29udGVudCAoKSA9XG4gIFtcbiAgICBIdG1sLmRpdlxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZsZXhfY29udGVudFwiOyBcInRhYmxlLXJlc3BvbnNpdmVcIiBdIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5mb3JtIFsgZGluX3NlbGVjdCBdO1xuICAgICAgICBkaW47XG4gICAgICAgIFdpZGdldF9leHBvcnQuY29udGVudCBleHBvcnRfY29uZmlndXJhdGlvbjtcbiAgICAgIF07XG4gIF1cblxubGV0IG5hdmxpICgpID1cbiAgVWlfY29tbW9uLmJhZGdlIChmdW4gc3RhdGUgLT5cbiAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAwXG4gICAgICB8IFNvbWUgc3RhdGUgLT5cbiAgICAgICAgc3RhdGUuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX291dHB1dF9kaW5zKVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBkaW5fc2VsZWN0KSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgc2V0X2Rpbl9pZFxuICAgICAgICAgICAgICAgKEpzLnRvX3N0cmluZyAoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBkaW5fc2VsZWN0KSMjLnZhbHVlKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9IFdpZGdldF9leHBvcnQub25sb2FkIGV4cG9ydF9jb25maWd1cmF0aW9uIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZESU5cIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPiBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlKVxuICBpblxuICBDb21tb24uanF1ZXJ5X29uIFwiI25hdkRJTlwiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT4gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcblxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCB0YWJfd2FzX2FjdGl2ZSA9IHJlZiBmYWxzZVxuXG5sZXQgbGluZV9jb3VudCBzdGF0ZSA9XG4gIG1hdGNoIHN0YXRlIHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIHN0YXRlIC0+XG4gICAgbGV0IG9wZW4gQXBpX3R5cGVzX3QgaW5cbiAgICBzdGF0ZS5zaW11bGF0aW9uX2luZm9fb3V0cHV0LnNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlc1xuXG5sZXQgbmF2bGkgKCkgPVxuICBVaV9jb21tb24ubGFiZWxfbmV3cyB0YWJfaXNfYWN0aXZlIChmdW4gc3RhdGUgLT4gbGluZV9jb3VudCBzdGF0ZSlcblxubGV0IGNvbnRlbnQgKCkgPVxuICBsZXQgc3RhdGVfbG9nID1cbiAgICAoKiBXZSBnZXQgdGhlIHNpZ25hbCBvZiBsb2cgbWVzc2FnZXMgZm9yIGN1cnJlbnQgc2ltdWxhdGlvbiBtb2RlbC4gVGhlIGJpbmQgYWxsb3dzIHRvIGNoYW5nZSB0aGUgc2lnbmFsIHRvIHRoZSBuZXcgc2ltdWxhdGlvbiBtb2RlbCB3aGVuIGl0IGNoYW5nZXMgKilcbiAgICBSZWFjdC5TLmJpbmRcbiAgICAgIChSZWFjdC5TLm9uIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5kdW1teV9tb2RlbFxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCkgKGZ1biBfIC0+XG4gICAgICAgIFJlYWN0LlMuaG9sZCBcIlwiXG4gICAgICAgICAgKEx3dF9yZWFjdC5FLmZyb20gKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICAgfnJlYWR5OihmdW4gbWFuYWdlciBfIC0+IG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfbG9nX21lc3NhZ2UpXG4gICAgICAgICAgICAgICAgIH5zdG9wcGVkOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBcIlwiKSlcbiAgICAgICAgICAgICAgICAgfmluaXRpYWxpemluZzooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgXCJcIikpXG4gICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICA+fD0gZnVuICh4IDogc3RyaW5nIEFwaS5yZXN1bHQpIC0+XG4gICAgICAgICAgICAgICBtYXRjaCB4LlJlc3VsdF91dGlsLnZhbHVlIHdpdGhcbiAgICAgICAgICAgICAgIHwgT2sgeCAtPiB4XG4gICAgICAgICAgICAgICB8IEVycm9yIGxpc3QgLT5cbiAgICAgICAgICAgICAgICAgU3RyaW5nLmNvbmNhdCBcIlxcblwiXG4gICAgICAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4gUmVzdWx0X3V0aWwueyB0ZXh0OyBfIH0gLT4gdGV4dCkgbGlzdCkpKSlcbiAgaW5cbiAgW1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtcHJlXCI7IFwicGFuZWwtc2Nyb2xsXCIgXSBdXG4gICAgICBbIFR5eG1sX2pzLlIuSHRtbC50eHQgc3RhdGVfbG9nIF07XG4gIF1cblxubGV0IHBhcmVudF9oaWRlICgpID0gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2VcbmxldCBwYXJlbnRfc2hvd24gKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSAhdGFiX3dhc19hY3RpdmVcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZsb2dcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IGZhbHNlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2bG9nXCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gdHJ1ZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5cbmxldCBzZWxlY3RfaWQgPSBcIm91dHB1dC1zZWxlY3QtaWRcIlxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCBjdXJyZW50X2ZpbGUsIHNldF9jdXJyZW50X2ZpbGUgPSBSZWFjdC5TLmNyZWF0ZSBOb25lXG5cbmxldCB1cGRhdGVfb3V0cHV0cyAoa2V5IDogc3RyaW5nKSA6IHVuaXQgPVxuICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2hlbl9yZWFkeSB+bGFiZWw6X19MT0NfXyAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfZmlsZV9saW5lIGtleVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGxpbmVzIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IHNldF9jdXJyZW50X2ZpbGUgKFNvbWUgKGtleSwgbGluZXMpKSBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgZmlsZV9jb3VudCBzdGF0ZSA9XG4gIG1hdGNoIHN0YXRlIHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIHN0YXRlIC0+XG4gICAgc3RhdGUuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgICAgLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXNcblxubGV0IG5hdmxpICgpID0gVWlfY29tbW9uLmJhZGdlIChmdW4gc3RhdGUgLT4gZmlsZV9jb3VudCBzdGF0ZSlcblxubGV0IHhtbCAoKSA9XG4gIGxldCBzZWxlY3QgKGZpbGVfbGluZV9pZHMgOiBzdHJpbmcgbGlzdCkgOiBbPiBIdG1sX3R5cGVzLnNlbGVjdCBdIEh0bWwuZWx0ID1cbiAgICBsZXQgbGluZXMgOiAoc3RyaW5nICogc3RyaW5nIGxpc3QpIG9wdGlvbiA9IFJlYWN0LlMudmFsdWUgY3VycmVudF9maWxlIGluXG4gICAgbGV0IGN1cnJlbnRfZmlsZV9pZCA6IHN0cmluZyA9XG4gICAgICBtYXRjaCBmaWxlX2xpbmVfaWRzLCBsaW5lcyB3aXRoXG4gICAgICB8IFtdLCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBmaWxlIDo6IF8sIE5vbmUgfCBfIDo6IF8sIFNvbWUgKGZpbGUsIF8pIC0+IGZpbGVcbiAgICBpblxuICAgIGxldCBmaWxlX29wdGlvbnMgOiBbPiBIdG1sX3R5cGVzLnNlbGVjdG9wdGlvbiBdIEh0bWwuZWx0IGxpc3QgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biBrZXkgLT5cbiAgICAgICAgICBIdG1sLm9wdGlvblxuICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgIChbIEh0bWwuYV92YWx1ZSBrZXkgXVxuICAgICAgICAgICAgICBAXG4gICAgICAgICAgICAgIGlmIGtleSA9IGN1cnJlbnRfZmlsZV9pZCB0aGVuXG4gICAgICAgICAgICAgICAgWyBIdG1sLmFfc2VsZWN0ZWQgKCkgXVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgW10pXG4gICAgICAgICAgICAoSHRtbC50eHQgKFVpX2NvbW1vbi5vcHRpb25fbGFiZWwga2V5KSkpXG4gICAgICAgIGZpbGVfbGluZV9pZHNcbiAgICBpblxuICAgIGxldCAoKSA9IHVwZGF0ZV9vdXRwdXRzIGN1cnJlbnRfZmlsZV9pZCBpblxuICAgIFR5eG1sX2pzLkh0bWwuc2VsZWN0XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTsgSHRtbC5hX2lkIHNlbGVjdF9pZCBdXG4gICAgICBmaWxlX29wdGlvbnNcbiAgaW5cbiAgbGV0IGZpbGVfc2VsZWN0ID1cbiAgICBUeXhtbF9qcy5SLkh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibGlzdC1ncm91cC1pdGVtXCIgXSBdXG4gICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fZXZlbnQgW11cbiAgICAgICAgIChMd3RfcmVhY3QuRS5tYXBfc1xuICAgICAgICAgICAgKGZ1biBfIC0+XG4gICAgICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgICAgfnN0b3BwZWQ6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFtdKSlcbiAgICAgICAgICAgICAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBbXSkpXG4gICAgICAgICAgICAgICAgfnJlYWR5OihmdW4gbWFuYWdlciBfIC0+XG4gICAgICAgICAgICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY2F0YWxvZ19maWxlX2xpbmVcbiAgICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dFxuICAgICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZV9saW5lX2lkcyA6IEFwaV90eXBlc19qLmZpbGVfbGluZV9jYXRhbG9nKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0X2ZpbGUgOiBbPiBgSDQgfCBgU2VsZWN0IF0gSHRtbC5lbHQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVE9ETzogbmFtZSAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGZpbGVfbGluZV9pZHMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtleSA6OiBbXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gdXBkYXRlX291dHB1dHMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwuaDRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIEh0bWwudHh0IChVaV9jb21tb24ub3B0aW9uX2xhYmVsIGtleSkgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogXyA6OiBfIC0+IFsgc2VsZWN0IGZpbGVfbGluZV9pZHMgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzZWxlY3RfZmlsZSkpKVxuICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgIH5vazooZnVuIHggLT4gUmVhY3RpdmVEYXRhLlJMaXN0LlNldCB4KVxuICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IFJlYWN0aXZlRGF0YS5STGlzdC5TZXQgW10pKVxuICAgICAgICAgICAgKFJlYWN0LlMuY2hhbmdlc1xuICAgICAgICAgICAgICAgKFJlYWN0LlMub24gdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLmR1bW15X21vZGVsXG4gICAgICAgICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKSkpKVxuICBpblxuICBsZXQgZmlsZV9jb250ZW50ID1cbiAgICBbXG4gICAgICBUeXhtbF9qcy5SLkh0bWwuZGl2XG4gICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1zY3JvbGxcIjsgXCJmbGV4LWNvbnRlbnRcIiBdIF1cbiAgICAgICAgKFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbFxuICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICAgfCBTb21lIChfLCBsaW5lcykgLT5cbiAgICAgICAgICAgICAgICAgIExpc3QubWFwIChmdW4gbGluZSAtPiBIdG1sLnAgWyBIdG1sLnR4dCBsaW5lIF0pIGxpbmVzKVxuICAgICAgICAgICAgICBjdXJyZW50X2ZpbGUpKTtcbiAgICBdXG4gIGluXG4gIFtcbiAgICBbJWh0bWxcbiAgICAgIHt8PGRpdiBjbGFzcz1cIm5hdmNvbnRlbnQtdmlld1wiPlxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VudGVyLWJsb2NrIGRpc3BsYXktaGVhZGVyXCI+XG4gICAgICAgICAgIHx9XG4gICAgICAgIFsgZmlsZV9zZWxlY3QgXVxuICAgICAgICB7fFxuICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgIHx9XG4gICAgICAgIGZpbGVfY29udGVudFxuICAgICAgICB7fFxuICAgICAgICAgICAgIDwvZGl2PiB8fV07XG4gIF1cblxubGV0IHNlbGVjdF9vdXRwdXRzICgpIDogdW5pdCA9XG4gIGxldCBzZWxlY3RfZG9tID0gVWlfY29tbW9uLmlkX2RvbSBzZWxlY3RfaWQgaW5cbiAgbGV0IGZpbGVpbmRleCA9IEpzLnRvX3N0cmluZyBzZWxlY3RfZG9tIyMudmFsdWUgaW5cbiAgdXBkYXRlX291dHB1dHMgZmlsZWluZGV4XG5cbmxldCBjb250ZW50ICgpID1cbiAgWyBVaV9jb21tb24udG9nZ2xlX2VsZW1lbnQgKGZ1biB0IC0+IGZpbGVfY291bnQgdCA+IDApICh4bWwgKCkpIF1cblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZvdXRwdXRzXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdm91dHB1dHNcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gKEZvcm1hdC5zcHJpbnRmIFwiIyVzXCIgc2VsZWN0X2lkKSBcImNoYW5nZVwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSBzZWxlY3Rfb3V0cHV0cyAoKSBpblxuICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgKClcbigqIFRPRE9cbiAgICAgbGV0IHNlbGVjdF9kb20gOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgICAgSnMuVW5zYWZlLmNvZXJjZVxuICAgICAgICAgKChKcy5PcHQuZ2V0XG4gICAgICAgICAgICAgKFVpX2NvbW1vbi5kb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWRcbiAgICAgICAgICAgICAgICAoSnMuc3RyaW5nIHNlbGVjdF9pZCkpXG4gICAgICAgICAgICAgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgICAgIDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSBpblxuICAgICBsZXQgKCkgPSBzZWxlY3RfZG9tIyMub25jaGFuZ2UgOj0gRG9tX2h0bWwuaGFuZGxlclxuICAgKGZ1biBfIC0+XG4gICAgICBsZXQgKCkgPSBzZWxlY3Rfb3V0cHV0cyB0XG4gICAgIGluIEpzLl90cnVlKVxuICAgICBpblxuKilcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKm1vZHVsZSBBcGlUeXBlcyA9IEFwaV90eXBlc19qKilcblxuY2xhc3MgdHlwZSBvYnNlcnZhYmxlX3Bsb3QgPSBvYmplY3RcbiAgbWV0aG9kIHNldERhdGEgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGNsZWFyRGF0YSA6IHVuaXQgSnMubWV0aFxuICBtZXRob2QgcmVkcmF3IDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGNyZWF0ZV9vYnNlcnZhYmxlX3Bsb3QgbWFpbl9kaXZfaWQgOiBvYnNlcnZhYmxlX3Bsb3QgSnMudCA9XG4gIEpzLlVuc2FmZS5uZXdfb2JqXG4gICAgKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJPYnNlcnZhYmxlUGxvdFwiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBtYWluX2Rpdl9pZCkgfF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5cbmxldCBkaXZfZGlzcGxheV9pZCA9IFwicGxvdC1tYWluX2RpdlwiXG5sZXQgZXhwb3J0X2lkID0gXCJwbG90LWV4cG9ydFwiXG5cbnR5cGUgb2Zmc2V0ID0geyBvZmZzZXRfY3VycmVudDogaW50OyBvZmZzZXRfbWF4OiBpbnQgfVxuXG5sZXQgb2Zmc2V0LCBzZXRfb2Zmc2V0ID0gUmVhY3QuUy5jcmVhdGUgKE5vbmUgOiBvZmZzZXQgb3B0aW9uKVxubGV0IGRlZmF1bHRfcG9pbnQgPSAxMDAwXG5sZXQgcG9pbnQsIHNldF9wb2ludHMgPSBSZWFjdC5TLmNyZWF0ZSBkZWZhdWx0X3BvaW50XG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IHBsb3RfcmVmID0gcmVmIE5vbmVcblxubGV0IGhhc19wbG90IChzdGF0ZSA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbyBvcHRpb24pIDogYm9vbCA9XG4gIG1hdGNoIHN0YXRlIHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBzdGF0ZSAtPlxuICAgIHN0YXRlLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19vdXRwdXQuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9vdXRwdXRfcGxvdFxuICAgID4gMFxuXG5sZXQgZXhwb3J0X2pzb24gZmlsZW5hbWUgPVxuICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2hlbl9yZWFkeSB+bGFiZWw6X19MT0NfXyAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfcGxvdFxuICAgICAgICB7XG4gICAgICAgICAgQXBpX3R5cGVzX2oucGxvdF9saW1pdF9vZmZzZXQgPSBOb25lO1xuICAgICAgICAgIEFwaV90eXBlc19qLnBsb3RfbGltaXRfcG9pbnRzID0gTm9uZTtcbiAgICAgICAgfVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIChwbG90IDogQXBpX3R5cGVzX3QucGxvdCkgLT5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSBKcy5zdHJpbmcgKERhdGEuc3RyaW5nX29mX3Bsb3QgcGxvdCkgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDb21tb24uc2F2ZUZpbGUgfmRhdGEgfm1pbWU6XCJhcHBsaWNhdGlvbi9qc29uXCIgfmZpbGVuYW1lXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG5cbmxldCBleHBvcnQgbWltZSBmaWxlbmFtZSA9XG4gIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9wbG90XG4gICAgICAgIHtcbiAgICAgICAgICBBcGlfdHlwZXNfai5wbG90X2xpbWl0X29mZnNldCA9IE5vbmU7XG4gICAgICAgICAgQXBpX3R5cGVzX2oucGxvdF9saW1pdF9wb2ludHMgPSBOb25lO1xuICAgICAgICB9XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKHBsb3QgOiBBcGlfdHlwZXNfdC5wbG90KSAtPlxuICAgICAgICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICAgICAgSnMuc3RyaW5nIChEYXRhLmV4cG9ydF9wbG90IH5pc190c3Y6KG1pbWUgPSBcInRleHQvdHN2XCIpIHBsb3QpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZSB+ZmlsZW5hbWUgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IHBsb3RfcG9pbnRzX2lucHV0X2lkID0gXCJwbG90X3BvaW50c19pbnB1dFwiXG5cbmxldCBwbG90X3BvaW50c19pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIHBsb3RfcG9pbnRzX2lucHV0X2lkO1xuICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgTnVtYmVyO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgIEh0bWwuYV9zaXplIDU7XG4gICAgICBdXG4gICAgKClcblxubGV0IHBsb3Rfb2Zmc2V0X2lucHV0X2lkID0gXCJwbG90X29mZnNldF9pbnB1dFwiXG5cbmxldCBwbG90X29mZnNldF9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAoUmVhY3QuUy5iaW5kIG9mZnNldCAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPiBSZWFjdC5TLmNvbnN0IFsgXCJoaWRlXCIgXVxuICAgICAgICAgICAgfCBTb21lIF8gLT4gUmVhY3QuUy5jb25zdCBbXSkpO1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9pbnB1dF9tYXhcbiAgICAgICAgICAoUmVhY3QuUy5iaW5kIG9mZnNldCAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPiBSZWFjdC5TLmNvbnN0IChgTnVtYmVyIDApXG4gICAgICAgICAgICB8IFNvbWUgbWF4X29mZnNldCAtPiBSZWFjdC5TLmNvbnN0IChgTnVtYmVyIG1heF9vZmZzZXQub2Zmc2V0X21heCkpKTtcbiAgICAgICAgSHRtbC5hX2lkIHBsb3Rfb2Zmc2V0X2lucHV0X2lkO1xuICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgUmFuZ2U7XG4gICAgICAgIEh0bWwuYV9pbnB1dF9taW4gKGBOdW1iZXIgMCk7XG4gICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcIm9mZnNldFwiO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBzaW11bGF0aW9uX2luZm9fb2Zmc2V0X21heCAoc2ltdWxhdGlvbl9pbmZvIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSA6XG4gICAgaW50ID1cbiAgbGV0IHBsb3Rfc2l6ZSA9XG4gICAgc2ltdWxhdGlvbl9pbmZvLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19vdXRwdXRcbiAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX291dHB1dF9wbG90XG4gIGluXG4gIG1heCAwIChwbG90X3NpemUgLSBSZWFjdC5TLnZhbHVlIHBvaW50KVxuXG5sZXQgdXBkYXRlX29mZnNldCAodXBkYXRlX29mZnNldF9pbnB1dCA6IGJvb2wpIDogdW5pdCA9XG4gIGxldCBzaW11bGF0aW9uX21vZGVsID0gUmVhY3QuUy52YWx1ZSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsIGluXG4gIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLnRfc2ltdWxhdGlvbl9pbmZvIHNpbXVsYXRpb25fbW9kZWwgaW5cbiAgbWF0Y2ggc2ltdWxhdGlvbl9pbmZvIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBzaW11bGF0aW9uX2luZm8gLT5cbiAgICBpZlxuICAgICAgc2ltdWxhdGlvbl9pbmZvLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nXG4gICAgdGhlblxuICAgICAgKCogSWYgaXQgaXMgcnVubmluZyBubyBzbGlkZXIgYmVjYXVzZSB1cGRhdGUgY2F1c2VzIGppdHRlcnMuICopXG4gICAgICBzZXRfb2Zmc2V0IE5vbmVcbiAgICBlbHNlIChcbiAgICAgIGxldCBvZmZzZXRfbWF4ID0gc2ltdWxhdGlvbl9pbmZvX29mZnNldF9tYXggc2ltdWxhdGlvbl9pbmZvIGluXG4gICAgICBsZXQgb2xkX29mZnNldCA9IFJlYWN0LlMudmFsdWUgb2Zmc2V0IGluXG4gICAgICBsZXQgb2Zmc2V0X2N1cnJlbnQgPVxuICAgICAgICBtYXRjaCBvbGRfb2Zmc2V0IHdpdGhcbiAgICAgICAgfCBTb21lIG9mZnNldCAtPiBvZmZzZXQub2Zmc2V0X2N1cnJlbnRcbiAgICAgICAgfCBOb25lIC0+IG9mZnNldF9tYXhcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiB1cGRhdGVfb2Zmc2V0X2lucHV0IHRoZW4gKFxuICAgICAgICAgIGxldCBwbG90X29mZnNldF9pbnB1dF9kb20gPVxuICAgICAgICAgICAgVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IHBsb3Rfb2Zmc2V0X2lucHV0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyAoc3RyaW5nX29mX2ludCBvZmZzZXRfY3VycmVudCkpIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHBsb3Rfb2Zmc2V0X2lucHV0X2RvbSMjLnZhbHVlXG4gICAgICAgICAgICA6PSBKcy5zdHJpbmcgKHN0cmluZ19vZl9pbnQgb2Zmc2V0X2N1cnJlbnQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKVxuICAgICAgICApIGVsc2VcbiAgICAgICAgICAoKVxuICAgICAgaW5cbiAgICAgIGxldCBuZXdfb2Zmc2V0ID1cbiAgICAgICAgaWYgb2Zmc2V0X21heCA+IDAgdGhlblxuICAgICAgICAgIFNvbWUgeyBvZmZzZXRfY3VycmVudDsgb2Zmc2V0X21heCB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gICAgICBpblxuICAgICAgc2V0X29mZnNldCBuZXdfb2Zmc2V0XG4gICAgKVxuXG5sZXQgcGxvdF9wYXJhbWV0ZXIgKCkgOiBBcGlfdHlwZXNfai5wbG90X3BhcmFtZXRlciA9XG4gIGxldCBwb2ludCA9IFJlYWN0LlMudmFsdWUgcG9pbnQgaW5cbiAge1xuICAgIEFwaV90eXBlc19qLnBsb3RfbGltaXRfb2Zmc2V0ID1cbiAgICAgIE9wdGlvbl91dGlsLm1hcCAoZnVuIHggLT4geC5vZmZzZXRfY3VycmVudCkgKFJlYWN0LlMudmFsdWUgb2Zmc2V0KTtcbiAgICBBcGlfdHlwZXNfai5wbG90X2xpbWl0X3BvaW50cyA9IFNvbWUgcG9pbnQ7XG4gIH1cblxubGV0IHVwZGF0ZV9wbG90IChqc19wbG90IDogSnNfcGxvdC5vYnNlcnZhYmxlX3Bsb3QgSnMudCkgOiB1bml0ID1cbiAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBsZXQgKCkgPSB1cGRhdGVfb2Zmc2V0IHRydWUgaW5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfcGxvdCAocGxvdF9wYXJhbWV0ZXIgKCkpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKHBsb3QgOiBBcGlfdHlwZXNfdC5wbG90KSAtPlxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IEpzLnN0cmluZyAoRGF0YS5zdHJpbmdfb2ZfcGxvdCBwbG90KSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBqc19wbG90IyNzZXREYXRhIGRhdGEgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IG9ubG9hZF9wbG90X3BvaW50c19pbnB1dCAoanNfcGxvdCA6IEpzX3Bsb3Qub2JzZXJ2YWJsZV9wbG90IEpzLnQpIDogdW5pdCA9XG4gIGxldCBwbG90X3BvaW50c19pbnB1dF9kb20gOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IHBsb3RfcG9pbnRzX2lucHV0XG4gIGluXG4gIGxldCBqc19wb2ludCA6IEpzLmpzX3N0cmluZyBKcy50ID1cbiAgICBKcy5zdHJpbmcgKHN0cmluZ19vZl9pbnQgKFJlYWN0LlMudmFsdWUgcG9pbnQpKVxuICBpblxuICBsZXQgKCkgPSBwbG90X3BvaW50c19pbnB1dF9kb20jIy52YWx1ZSA6PSBqc19wb2ludCBpblxuICBsZXQgKCkgPVxuICAgIHBsb3RfcG9pbnRzX2lucHV0X2RvbSMjLm9ua2V5cHJlc3NcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gZXYgLT5cbiAgICAgICAgICAgaWYgZXYjIy5rZXlDb2RlID0gMTMgdGhlblxuICAgICAgICAgICAgIEpzLl9mYWxzZVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgcGxvdF9wb2ludHNfaW5wdXRfZG9tIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgcGxvdF9wb2ludHNfc3RyaW5nIDogc3RyaW5nID1cbiAgICAgICAgICAgICBKcy50b19zdHJpbmcgcGxvdF9wb2ludHNfaW5wdXRfZG9tIyMudmFsdWVcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHBsb3RfcG9pbnRzX29wdGlvbiA6IGludCBvcHRpb24gPVxuICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgbGV0IHBsb3RfcG9pbnQgPSBpbnRfb2Zfc3RyaW5nIHBsb3RfcG9pbnRzX3N0cmluZyBpblxuICAgICAgICAgICAgICAgaWYgcGxvdF9wb2ludCA+IDAgdGhlblxuICAgICAgICAgICAgICAgICBTb21lIHBsb3RfcG9pbnRcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBtYXRjaCBwbG90X3BvaW50c19vcHRpb24gd2l0aFxuICAgICAgICAgICAgIHwgU29tZSBwbG90X3BvaW50cyAtPiBzZXRfcG9pbnRzIHBsb3RfcG9pbnRzXG4gICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICBsZXQgcGxvdF9wb2ludCA6IGludCA9IFJlYWN0LlMudmFsdWUgcG9pbnQgaW5cbiAgICAgICAgICAgICAgIGxldCBwbG90X3BvaW50X3N0cmluZyA9IHN0cmluZ19vZl9pbnQgcGxvdF9wb2ludCBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgcGxvdF9wb2ludHNfaW5wdXRfZG9tIyMudmFsdWUgOj0gSnMuc3RyaW5nIHBsb3RfcG9pbnRfc3RyaW5nXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID0gc2V0X3BvaW50cyBkZWZhdWx0X3BvaW50IGluXG4gICAgICAgICAgICAgICAoKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfcGxvdCBqc19wbG90IGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICAoKVxuXG5sZXQgY29uZmlndXJhdGlvbiAoKSA6IFdpZGdldF9leHBvcnQuY29uZmlndXJhdGlvbiA9XG4gIHtcbiAgICBXaWRnZXRfZXhwb3J0LmlkID0gZXhwb3J0X2lkO1xuICAgIFdpZGdldF9leHBvcnQuaGFuZGxlcnMgPVxuICAgICAgW1xuICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9zdmcgfnN2Z19kaXZfaWQ6ZGl2X2Rpc3BsYXlfaWQgKCk7XG4gICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X3BuZyB+c3ZnX2Rpdl9pZDpkaXZfZGlzcGxheV9pZCAoKTtcbiAgICAgICAge1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJqc29uXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwianNvblwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID0gZXhwb3J0X2pzb247XG4gICAgICAgIH07XG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwiY3N2XCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwiY3N2XCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPSBleHBvcnQgXCJ0ZXh0L2NzdlwiO1xuICAgICAgICB9O1xuICAgICAgICB7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcInRzdlwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcInRzdlwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID0gZXhwb3J0IFwidGV4dC90c3ZcIjtcbiAgICAgICAgfTtcbiAgICAgIF07XG4gICAgc2hvdyA9XG4gICAgICBSZWFjdC5TLm1hcFxuICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgbGV0IG91dCA9IGhhc19wbG90IChTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBpZiBvdXQgdGhlbiBPcHRpb24uaXRlciB1cGRhdGVfcGxvdCAhcGxvdF9yZWYgaW5cbiAgICAgICAgICBvdXQpXG4gICAgICAgIChSZWFjdC5TLm9uIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5kdW1teV9tb2RlbFxuICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKTtcbiAgfVxuXG5sZXQgeG1sICgpID1cbiAgbGV0IGV4cG9ydF9jb250cm9scyA9IFdpZGdldF9leHBvcnQuaW5saW5lX2NvbnRlbnQgKGNvbmZpZ3VyYXRpb24gKCkpIGluXG4gIFslaHRtbFxuICAgIHt8XG4gIDxkaXYgY2xhc3M9XCJuYXZjb250ZW50LXZpZXcgZmxleC1jb250ZW50XCIgaWQ9XCJ8fSBkaXZfZGlzcGxheV9pZFxuICAgICAge3xcIj48L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibmF2Y29udGVudC1jb250cm9sc1wiPlxuICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmVcIiBpZD18fVxuICAgICAgZXhwb3J0X2lkXG4gICAgICB7fD5cbiAgICAgIHx9XG4gICAgICBleHBvcnRfY29udHJvbHNcbiAgICAgIHt8XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJzci1vbmx5XCIgZm9yPXx9XG4gICAgICBwbG90X3BvaW50c19pbnB1dF9pZFxuICAgICAge3w+Um93IHRvIHBsb3Q8L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+UG9pbnRzPC9zcGFuPlxuICAgICAgICAgIHx9XG4gICAgICBbIHBsb3RfcG9pbnRzX2lucHV0IF1cbiAgICAgIHt8XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJzci1vbmx5XCIgZm9yPXx9XG4gICAgICBwbG90X29mZnNldF9pbnB1dF9pZFxuICAgICAge3w+U2VsZWN0ZWQgd2luZG93PC9sYWJlbD5cbiAgICAgICAgfH1cbiAgICAgIFsgcGxvdF9vZmZzZXRfaW5wdXQgXVxuICAgICAge3xcbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgICA8L2Rpdj4gfH1dXG5cbmxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBIdG1sLmVsdCBsaXN0ID1cbiAgWyBVaV9jb21tb24udG9nZ2xlX2VsZW1lbnQgKGZ1biBzIC0+IGhhc19wbG90IHMpICh4bWwgKCkpIF1cblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCBwbG90X29mZnNldF9pbnB1dF9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgcGxvdF9vZmZzZXRfaW5wdXQgaW5cbiAgbGV0ICgpID0gV2lkZ2V0X2V4cG9ydC5vbmxvYWQgKGNvbmZpZ3VyYXRpb24gKCkpIGluXG4gIGxldCBwbG90IDogSnNfcGxvdC5vYnNlcnZhYmxlX3Bsb3QgSnMudCA9XG4gICAgSnNfcGxvdC5jcmVhdGVfb2JzZXJ2YWJsZV9wbG90IGRpdl9kaXNwbGF5X2lkXG4gIGluXG4gICgqIFRoZSBlbGVtZW50cyBzaXplIHRoZW1zZWx2ZXMgdXNpbmcgdGhlIGRpdidzIGlmIHRoZXkgYXJlIGhpZGRlblxuICAgICBpdCB3aWxsIGRlZmF1bHQgdG8gc2l6ZSB6ZXJvLiAgc28gdGhleSBuZWVkIHRvIGJlIHNpemVkIHdoZW4gc2hvd24uXG4gICopXG4gIGxldCAoKSA9IG9ubG9hZF9wbG90X3BvaW50c19pbnB1dCBwbG90IGluXG4gIGxldCAoKSA9IHBsb3RfcmVmIDo9IFNvbWUgcGxvdCBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2cGxvdFwiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT4gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZwbG90XCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSBpblxuICAgICAgICBsZXQgc2ltdWxhdGlvbl9tb2RlbCA9IFJlYWN0LlMudmFsdWUgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCBpblxuICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID1cbiAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBzaW11bGF0aW9uX21vZGVsXG4gICAgICAgIGluXG4gICAgICAgIGlmIGhhc19wbG90IHNpbXVsYXRpb25faW5mbyB0aGVuXG4gICAgICAgICAgdXBkYXRlX3Bsb3QgcGxvdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgVWlfY29tbW9uLmlucHV0X2NoYW5nZSBwbG90X29mZnNldF9pbnB1dF9kb20gKGZ1biB2YWx1ZSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgc2V0X29mZnNldFxuICAgICAgICAgICAgICAobWF0Y2ggUmVhY3QuUy52YWx1ZSBvZmZzZXQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgb2Zmc2V0IC0+XG4gICAgICAgICAgICAgICAgU29tZSB7IG9mZnNldCB3aXRoIG9mZnNldF9jdXJyZW50ID0gaW50X29mX3N0cmluZyB2YWx1ZSB9KVxuICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHVwZGF0ZV9wbG90IHBsb3QgaW5cbiAgICAgICAgKCkpXG4gIGluXG4gICgpXG5cbmxldCBwbG90X2NvdW50ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIHN0YXRlIC0+XG4gICAgbGV0IG9wZW4gQXBpX3R5cGVzX3QgaW5cbiAgICBzdGF0ZS5zaW11bGF0aW9uX2luZm9fb3V0cHV0LnNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcblxubGV0IG5hdmxpICgpID1cbiAgVWlfY29tbW9uLmxhYmVsX25ld3MgdGFiX2lzX2FjdGl2ZSAoZnVuIHN0YXRlIC0+IHBsb3RfY291bnQgc3RhdGUpXG5cbmxldCBvbnJlc2l6ZSAoKSA9XG4gICgqIHJlY2FsY3VhdGUgc2l6ZSAqKVxuICBsZXQgKCkgPVxuICAgIG1hdGNoICFwbG90X3JlZiB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHBsb3QgLT5cbiAgICAgIGxldCBtb2RlbCA9IFJlYWN0LlMudmFsdWUgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCBpblxuICAgICAgKG1hdGNoIFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gLT4gdXBkYXRlX3Bsb3QgcGxvdClcbiAgaW5cbiAgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmNsYXNzIHR5cGUgc25hcHNob3QgPSBvYmplY3RcbiAgbWV0aG9kIHNldERhdGEgOlxuICAgIGNvbnRhY3RfbWFwOkpzLmpzX3N0cmluZyBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCByZWRyYXcgOiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGNsZWFyRGF0YSA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBjcmVhdGVfc25hcHNob3QgKGlkIDogc3RyaW5nKSAoY29sb3JpbmcgOiB1bml0IEpzLnQpIDogc25hcHNob3QgSnMudCA9XG4gIEpzLlVuc2FmZS5uZXdfb2JqXG4gICAgKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJTbmFwc2hvdFwiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBpZCk7IEpzLlVuc2FmZS5pbmplY3QgY29sb3JpbmcgfF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5cbmxldCBjdXJyZW50X3NuYXBzaG90LCBzZXRfY3VycmVudF9zbmFwc2hvdCA9XG4gIFJlYWN0LlMuY3JlYXRlIChOb25lIDogKHN0cmluZyAqIERhdGEuc25hcHNob3QpIG9wdGlvbilcblxudHlwZSBkaXNwbGF5X2Zvcm1hdCA9IEthcHBhIHwgR3JhcGhcblxubGV0IHN0cmluZ190b19kaXNwbGF5X2Zvcm1hdCA9IGZ1bmN0aW9uXG4gIHwgXCJLYXBwYVwiIC0+IFNvbWUgS2FwcGFcbiAgfCBcIkdyYXBoXCIgLT4gU29tZSBHcmFwaFxuICB8IF8gLT4gTm9uZVxuXG5sZXQgZGlzcGxheV9mb3JtYXQsIHNldF9kaXNwbGF5X2Zvcm1hdCA9IFJlYWN0LlMuY3JlYXRlIEthcHBhXG5cbmxldCBzbmFwc2hvdF9jb3VudCAoc3RhdGUgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gb3B0aW9uKSA6IGludCA9XG4gIG1hdGNoIHN0YXRlIHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIHN0YXRlIC0+XG4gICAgc3RhdGUuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90c1xuXG5sZXQgbmF2bGkgKCkgPSBVaV9jb21tb24uYmFkZ2UgKGZ1biBzdGF0ZSAtPiBzbmFwc2hvdF9jb3VudCBzdGF0ZSlcbmxldCBzZWxlY3RfaWQgPSBcInNuYXBzaG90LXNlbGVjdC1pZFwiXG5sZXQgZGlzcGxheV9pZCA9IFwic25hcHNob3QtbWFwLWRpc3BsYXlcIlxuXG5sZXQgY29uZmlndXJhdGlvbl90ZW1wbGF0ZSBpZCBhZGRpdGlvbmFsX2hhbmRsZXJzIDogV2lkZ2V0X2V4cG9ydC5jb25maWd1cmF0aW9uXG4gICAgPVxuICBsZXQganNvbl9oYW5kbGVyID1cbiAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9qc29uIH5zZXJpYWxpemVfanNvbjooZnVuICgpIC0+XG4gICAgICAgIG1hdGNoIFJlYWN0LlMudmFsdWUgY3VycmVudF9zbmFwc2hvdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIm51bGxcIlxuICAgICAgICB8IFNvbWUgKF8sIHMpIC0+IERhdGEuc3RyaW5nX29mX3NuYXBzaG90IHMpXG4gIGluXG4gIGxldCBrYXBwYV9oYW5kbGVyID1cbiAgICB7XG4gICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwia2FcIjtcbiAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImthcHBhXCI7XG4gICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydCA9XG4gICAgICAgIChmdW4gKGZpbGVuYW1lIDogc3RyaW5nKSAtPlxuICAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgIEpzLnN0cmluZ1xuICAgICAgICAgICAgICAobWF0Y2ggUmVhY3QuUy52YWx1ZSBjdXJyZW50X3NuYXBzaG90IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgfCBTb21lIChfLCBzKSAtPiBBcGlfZGF0YS5hcGlfc25hcHNob3Rfa2FwcGEgcylcbiAgICAgICAgICBpblxuICAgICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZTpcImFwcGxpY2F0aW9uL2pzb25cIiB+ZmlsZW5hbWUpO1xuICAgIH1cbiAgaW5cbiAgbGV0IGRvdF9oYW5kbGVyID1cbiAgICB7XG4gICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwiZG90XCI7XG4gICAgICBXaWRnZXRfZXhwb3J0LmxhYmVsID0gXCJkb3RcIjtcbiAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID1cbiAgICAgICAgKGZ1biAoZmlsZW5hbWUgOiBzdHJpbmcpIC0+XG4gICAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgICAgSnMuc3RyaW5nXG4gICAgICAgICAgICAgIChtYXRjaCBSZWFjdC5TLnZhbHVlIGN1cnJlbnRfc25hcHNob3Qgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgICB8IFNvbWUgKF8sIHMpIC0+IEFwaV9kYXRhLmFwaV9zbmFwc2hvdF9kb3QgcylcbiAgICAgICAgICBpblxuICAgICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZTpcInRleHQvdm5kLmdyYXBodml6XCIgfmZpbGVuYW1lKTtcbiAgICB9XG4gIGluXG4gIGxldCBkZWZhdWx0X2hhbmRsZXJzID0gWyBqc29uX2hhbmRsZXI7IGthcHBhX2hhbmRsZXI7IGRvdF9oYW5kbGVyIF0gaW5cbiAge1xuICAgIFdpZGdldF9leHBvcnQuaWQ7XG4gICAgV2lkZ2V0X2V4cG9ydC5oYW5kbGVycyA9IGRlZmF1bHRfaGFuZGxlcnMgQCBhZGRpdGlvbmFsX2hhbmRsZXJzO1xuICAgIFdpZGdldF9leHBvcnQuc2hvdyA9XG4gICAgICBSZWFjdC5TLm1hcFxuICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgc25hcHNob3RfY291bnQgc2ltdWxhdGlvbl9pbmZvID4gMClcbiAgICAgICAgKFJlYWN0LlMub24gdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLmR1bW15X21vZGVsXG4gICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpO1xuICB9XG5cbigqIE9ubHkgYWxsb3cgdGhlIGV4cG9ydCBvZiBub24tZ3JhcGhpY2FsIGRhdGEuICopXG5sZXQgY29uZmlndXJhdGlvbl9rYXBwYSAoKSA6IFdpZGdldF9leHBvcnQuY29uZmlndXJhdGlvbiA9XG4gIGNvbmZpZ3VyYXRpb25fdGVtcGxhdGUgXCJzbmFwc2hvdF9rYXBwYVwiIFtdXG5cbigqIFRoZSBtYXBzIGFyZSByZW5kZXJlZCBzbyBhbGxvdyB0aGUgZXhwb3J0IG9mXG4gICBncmFwaGljYWwgZGF0YS4gKilcbmxldCBjb25maWd1cmF0aW9uX2dyYXBoICgpIDogV2lkZ2V0X2V4cG9ydC5jb25maWd1cmF0aW9uID1cbiAgY29uZmlndXJhdGlvbl90ZW1wbGF0ZSBcInNuYXBzaG90X2dyYXBoXCJcbiAgICBbXG4gICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9zdmcgfnN2Z19kaXZfaWQ6ZGlzcGxheV9pZCAoKTtcbiAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X3BuZyB+c3ZnX2Rpdl9pZDpkaXNwbGF5X2lkICgpO1xuICAgIF1cblxubGV0IGZvcm1hdF9zZWxlY3RfaWQgPSBcImZvcm1hdF9zZWxlY3RfaWRcIlxuXG5sZXQgcmVuZGVyX3NuYXBzaG90X2dyYXBoIChzbmFwc2hvdF9qcyA6IEpzX3NuYXBzaG90LnNuYXBzaG90IEpzLnQpXG4gICAgKHNuYXBzaG90IDogRGF0YS5zbmFwc2hvdCkgOiB1bml0ID1cbiAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgKERhdGEuc3RyaW5nX29mX3NuYXBzaG90IHNuYXBzaG90KSkgaW5cbiAgbWF0Y2ggUmVhY3QuUy52YWx1ZSBkaXNwbGF5X2Zvcm1hdCB3aXRoXG4gIHwgR3JhcGggLT5cbiAgICBsZXQganNvbiA6IHN0cmluZyA9IERhdGEuc3RyaW5nX29mX3NuYXBzaG90IHNuYXBzaG90IGluXG4gICAgbGV0IGNvbnRhY3RfbWFwID0gUmVhY3QuUy52YWx1ZSBUYWJfY29udGFjdF9tYXAuY29udGFjdF9tYXBfdGV4dCBpblxuICAgIHNuYXBzaG90X2pzIyNzZXREYXRhIH5jb250YWN0X21hcDooSnMuc3RyaW5nIGNvbnRhY3RfbWFwKSAoSnMuc3RyaW5nIGpzb24pXG4gIHwgS2FwcGEgLT4gKClcblxubGV0IHNlbGVjdF9zbmFwc2hvdCAoc25hcHNob3RfanMgOiBKc19zbmFwc2hvdC5zbmFwc2hvdCBKcy50KSA6IHVuaXQgPVxuICBsZXQgaW5kZXggOiBpbnQgSnMub3B0ID1cbiAgICBKcy5PcHQuYmluZFxuICAgICAgKFVpX2NvbW1vbi5kb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBzZWxlY3RfaWQpKVxuICAgICAgKGZ1biBkb20gLT5cbiAgICAgICAgbGV0IHNuYXBzaG90X3NlbGVjdF9kb20gOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgICAgICAgSnMuVW5zYWZlLmNvZXJjZSBkb21cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGZpbGVpbmRleCA6IHN0cmluZyA9IEpzLnRvX3N0cmluZyBzbmFwc2hvdF9zZWxlY3RfZG9tIyMudmFsdWUgaW5cbiAgICAgICAgdHJ5IEpzLnNvbWUgKGludF9vZl9zdHJpbmcgZmlsZWluZGV4KSB3aXRoIF8gLT4gSnMubnVsbClcbiAgaW5cbiAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIGluZGV4IGluXG4gIGxldCBtb2RlbCA6IFN0YXRlX3NpbXVsYXRpb24udCA9IFJlYWN0LlMudmFsdWUgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCBpblxuICBsZXQgc2ltdWxhdGlvbl9vdXRwdXQgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm8gb3B0aW9uID1cbiAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbFxuICBpblxuICBtYXRjaCBzaW11bGF0aW9uX291dHB1dCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgc3RhdGUgLT5cbiAgICBsZXQgaW5kZXggOiBpbnQgPSBKcy5PcHQuZ2V0IGluZGV4IChmdW4gXyAtPiAwKSBpblxuICAgIGlmIHNuYXBzaG90X2NvdW50IChTb21lIHN0YXRlKSA+IDAgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2hlbl9yZWFkeSB+bGFiZWw6X19MT0NfXyAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jYXRhbG9nX3NuYXBzaG90XG4gICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gc25hcHNob3RfaWRzIC0+XG4gICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgIGxldCBzbmFwc2hvdF9pZCA6IHN0cmluZyA9IExpc3QubnRoIHNuYXBzaG90X2lkcyBpbmRleCBpblxuICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfc25hcHNob3Qgc25hcHNob3RfaWRcbiAgICAgICAgICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biAoc25hcHNob3QgOiBEYXRhLnNuYXBzaG90KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2N1cnJlbnRfc25hcHNob3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU29tZSAoc25hcHNob3RfaWQsIHNuYXBzaG90KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfc25hcHNob3RfZ3JhcGggc25hcHNob3RfanMgc25hcHNob3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBGYWlsdXJlIGYgLT4gTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGYpXG4gICAgICAgICAgICAgICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGYpKSlcbiAgICAgIGluXG4gICAgICAoKVxuICAgIClcblxubGV0IHNlbGVjdCAoc25hcHNob3RzIDogQXBpX3R5cGVzX2ouc25hcHNob3RfaWQgbGlzdCkgOlxuICAgIFs+IEh0bWxfdHlwZXMuc2VsZWN0b3B0aW9uIF0gSHRtbC5lbHQgbGlzdCA9XG4gIExpc3QubWFwaVxuICAgIChmdW4gaSBzbmFwc2hvdF9pZCAtPlxuICAgICAgSHRtbC5vcHRpb25cbiAgICAgICAgfmE6XG4gICAgICAgICAgKFsgSHRtbC5hX3ZhbHVlIChzdHJpbmdfb2ZfaW50IGkpIF1cbiAgICAgICAgICBAXG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIG1hdGNoIFJlYWN0LlMudmFsdWUgY3VycmVudF9zbmFwc2hvdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgIHwgU29tZSAoZmlsZW5hbWUsIF8pIC0+IGZpbGVuYW1lID0gc25hcHNob3RfaWRcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBbIEh0bWwuYV9zZWxlY3RlZCAoKSBdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgW10pXG4gICAgICAgIChIdG1sLnR4dCBzbmFwc2hvdF9pZCkpXG4gICAgc25hcHNob3RzXG5cbmxldCBzbmFwc2hvdF9jbGFzcyA6XG4gICAgZW1wdHk6KHVuaXQgLT4gJ2EpIC0+XG4gICAgc2luZ2xlOih1bml0IC0+ICdhKSAtPlxuICAgIG11bHRpcGxlOih1bml0IC0+ICdhKSAtPlxuICAgICdhIFJlYWN0LnNpZ25hbCA9XG4gZnVuIH5lbXB0eSB+c2luZ2xlIH5tdWx0aXBsZSAtPlxuICBSZWFjdC5TLm1hcFxuICAgIChmdW4gbW9kZWwgLT5cbiAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgbWF0Y2ggc25hcHNob3RfY291bnQgc2ltdWxhdGlvbl9pbmZvIHdpdGhcbiAgICAgIHwgMCAtPiBlbXB0eSAoKVxuICAgICAgfCAxIC0+IHNpbmdsZSAoKVxuICAgICAgfCBfIC0+IG11bHRpcGxlICgpKVxuICAgIChSZWFjdC5TLm9uIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5kdW1teV9tb2RlbFxuICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG5cbmxldCBzbmFwc2hvdF9qcyA6IEpzX3NuYXBzaG90LnNuYXBzaG90IEpzLnQgPVxuICBKc19zbmFwc2hvdC5jcmVhdGVfc25hcHNob3QgZGlzcGxheV9pZCBTdGF0ZV9zZXR0aW5ncy5hZ2VudF9jb2xvcmluZ1xuXG5sZXQgeG1sICgpID1cbiAgbGV0IGxpc3QgPVxuICAgIFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX2V2ZW50IFtdXG4gICAgICAoTHd0X3JlYWN0LkUubWFwX3NcbiAgICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSBzZWxlY3Rfc25hcHNob3Qgc25hcHNob3RfanMgaW5cbiAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICB+c3RvcHBlZDooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgW10pKVxuICAgICAgICAgICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFtdKSlcbiAgICAgICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gLT5cbiAgICAgICAgICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jYXRhbG9nX3NuYXBzaG90XG4gICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gc25hcHNob3RfaWRzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChzZWxlY3Qgc25hcHNob3RfaWRzKSkpKVxuICAgICAgICAgICAgICgpXG4gICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgIH5vazooZnVuIHggLT4gUmVhY3RpdmVEYXRhLlJMaXN0LlNldCB4KVxuICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IFJlYWN0aXZlRGF0YS5STGlzdC5TZXQgW10pKVxuICAgICAgICAgKFJlYWN0LlMuY2hhbmdlc1xuICAgICAgICAgICAgKFJlYWN0LlMub24gdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLmR1bW15X21vZGVsXG4gICAgICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKSkpXG4gIGluXG4gIGxldCBzbmFwc2hvdF9sYWJlbCA9XG4gICAgSHRtbC5oNFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKHNuYXBzaG90X2NsYXNzXG4gICAgICAgICAgICAgICB+ZW1wdHk6KGZ1biAoKSAtPiBbIFwiaGlkZGVuXCIgXSlcbiAgICAgICAgICAgICAgIH5zaW5nbGU6KGZ1biBfIC0+IFsgXCJvbmVsaW5lclwiOyBcInZpc2libGVcIiBdKVxuICAgICAgICAgICAgICAgfm11bHRpcGxlOihmdW4gXyAtPiBbIFwiaGlkZGVuXCIgXSkpO1xuICAgICAgICBdXG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC50eHRcbiAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAoZnVuIHNuYXBzaG90IC0+XG4gICAgICAgICAgICAgICBtYXRjaCBzbmFwc2hvdCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgICAgfCBTb21lIChzbmFwc2hvdF9maWxlLCBfKSAtPiBzbmFwc2hvdF9maWxlKVxuICAgICAgICAgICAgIGN1cnJlbnRfc25hcHNob3QpO1xuICAgICAgXVxuICBpblxuICBsZXQgc25hcHNob3Rfc2VsZWN0ID1cbiAgICBUeXhtbF9qcy5SLkh0bWwuc2VsZWN0XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAoc25hcHNob3RfY2xhc3NcbiAgICAgICAgICAgICAgIH5lbXB0eTooZnVuICgpIC0+IFsgXCJoaWRkZW5cIiBdKVxuICAgICAgICAgICAgICAgfnNpbmdsZTooZnVuIF8gLT4gWyBcImhpZGRlblwiIF0pXG4gICAgICAgICAgICAgICB+bXVsdGlwbGU6KGZ1biBfIC0+IFsgXCJ2aXNpYmxlXCI7IFwiZm9ybS1jb250cm9sXCIgXSkpO1xuICAgICAgICAgIEh0bWwuYV9pZCBzZWxlY3RfaWQ7XG4gICAgICAgIF1cbiAgICAgIGxpc3RcbiAgaW5cbiAgbGV0IHNuYXBzaG90X2Nob29zZXIgPSBIdG1sLmRpdiBbIHNuYXBzaG90X2xhYmVsOyBzbmFwc2hvdF9zZWxlY3QgXSBpblxuICBsZXQgdG9nZ2xlX2NvbnRyb2xzIH5rYXBwYSB+Z3JhcGggPVxuICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICB8IEthcHBhIC0+IGthcHBhXG4gICAgICAgICAgIHwgR3JhcGggLT4gZ3JhcGgpXG4gICAgICAgICBkaXNwbGF5X2Zvcm1hdClcbiAgaW5cbiAgbGV0IGV4cG9ydF9jb250cm9scyA9XG4gICAgW1xuICAgICAgSHRtbC5kaXZcbiAgICAgICAgfmE6WyB0b2dnbGVfY29udHJvbHMgfmthcHBhOlsgXCJ2aXNpYmxlXCIgXSB+Z3JhcGg6WyBcImhpZGRlblwiIF0gXVxuICAgICAgICBbIFdpZGdldF9leHBvcnQuY29udGVudCAoY29uZmlndXJhdGlvbl9rYXBwYSAoKSkgXTtcbiAgICAgIEh0bWwuZGl2XG4gICAgICAgIH5hOlsgdG9nZ2xlX2NvbnRyb2xzIH5rYXBwYTpbIFwiaGlkZGVuXCIgXSB+Z3JhcGg6WyBcInZpc2libGVcIiBdIF1cbiAgICAgICAgWyBXaWRnZXRfZXhwb3J0LmNvbnRlbnQgKGNvbmZpZ3VyYXRpb25fZ3JhcGggKCkpIF07XG4gICAgXVxuICBpblxuICBsZXQga2FwcGFfc25hcHNob3RfZGlzcGxheSA9XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biBkaXNwbGF5X2Zvcm1hdCAtPlxuICAgICAgICAgICAgICAgICBcInBhbmVsLXNjcm9sbFwiIDo6IFwia2FwcGEtY29kZVwiIDo6IFwiZmxleC1jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgOjpcbiAgICAgICAgICAgICAgICAgKG1hdGNoIGRpc3BsYXlfZm9ybWF0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBLYXBwYSAtPiBbIFwidmlzaWJsZVwiIF1cbiAgICAgICAgICAgICAgICAgfCBHcmFwaCAtPiBbIFwiaGlkZGVuXCIgXSkpXG4gICAgICAgICAgICAgICBkaXNwbGF5X2Zvcm1hdCk7XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgIChmdW4gc25hcHNob3QgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIHNuYXBzaG90IHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgICAgICB8IFNvbWUgKF8sIHNuYXBzaG90KSAtPiBBcGlfZGF0YS5hcGlfc25hcHNob3Rfa2FwcGEgc25hcHNob3QpXG4gICAgICAgICAgICAgY3VycmVudF9zbmFwc2hvdCk7XG4gICAgICBdXG4gIGluXG4gIGxldCBrYXBwYV9ncmFwaF9kaXNwbGF5ID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuIGRpc3BsYXlfZm9ybWF0IC0+XG4gICAgICAgICAgICAgICAgIFwiZmxleC1jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgOjpcbiAgICAgICAgICAgICAgICAgKG1hdGNoIGRpc3BsYXlfZm9ybWF0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBHcmFwaCAtPiBbIFwidmlzaWJsZVwiIF1cbiAgICAgICAgICAgICAgICAgfCBLYXBwYSAtPiBbIFwiaGlkZGVuXCIgXSkpXG4gICAgICAgICAgICAgICBkaXNwbGF5X2Zvcm1hdCk7XG4gICAgICAgIF1cbiAgICAgIFslaHRtbFxuICAgICAgICB7fFxuICAgICAgICA8Zm9ybSAgY2xhc3M9XCJmb3JtLWlubGluZVwiIGlkPVwic25hcC1mb3JtXCI+XG4gICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cIm1vZGVcIiB2YWx1ZT1cInN1bUJ5TWFzc1wiIGNoZWNrZWQ+IE1hc3M8L2xhYmVsPlxuICAgICAgICA8bGFiZWw+PGlucHV0IHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJtb2RlXCIgdmFsdWU9XCJzdW1CeUNvdW50XCIgPiBDb3VudDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cIm1vZGVcIiB2YWx1ZT1cInN1bUJ5U2l6ZVwiID4gU2l6ZTwvbGFiZWw+XG4gICAgICAgIDxidXR0b24gaWQ9XCJyZWNlbnRlclNuYXBCdXR0b25cIiBjbGFzcz1cInN0YXRlQnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiPlJlc2V0IFpvb208L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBpZD1cInJvb3RCdXR0b25cIiBjbGFzcz1cInN0YXRlQnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiPkJhY2sgdG8gcm9vdDwvYnV0dG9uPlxuICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbnRlbnRcIiBpZD1cInx9XG4gICAgICAgICAgZGlzcGxheV9pZCB7fFwiPjwvZGl2Pnx9XVxuICBpblxuICBsZXQgZm9ybWF0X2Nob29zZXIgPVxuICAgIFslaHRtbFxuICAgICAge3wgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwifH0gZm9ybWF0X3NlbGVjdF9pZFxuICAgICAgICB7fFwiPjxvcHRpb24gdmFsdWU9XCJLYXBwYVwiIHNlbGVjdGVkPmthcHBhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cIkdyYXBoXCI+Z3JhcGg8L29wdGlvbj48L3NlbGVjdD4gfH1dXG4gIGluXG4gIFslaHRtbFxuICAgIHt8PGRpdiBjbGFzcz1cIm5hdmNvbnRlbnQtdmlldyBmbGV4LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW4gOiA1cHg7XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIGNvbC14cy00XCI+XG4gICAgICAgICB8fVxuICAgICAgWyBmb3JtYXRfY2hvb3NlciBdXG4gICAgICB7fFxuICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEwIGNvbC14cy04XCI+IHx9XG4gICAgICBbIHNuYXBzaG90X2Nob29zZXIgXVxuICAgICAge3wgPC9kaXY+XG4gICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfH1cbiAgICAgIFsga2FwcGFfc25hcHNob3RfZGlzcGxheTsga2FwcGFfZ3JhcGhfZGlzcGxheSBdXG4gICAgICB7fFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXZjb250ZW50LWNvbnRyb2xzXCI+XG4gICAgICAgICAgfH1cbiAgICAgIGV4cG9ydF9jb250cm9sc1xuICAgICAge3xcbiAgICAgICAgICA8L2Rpdj5cbiAgfH1dXG5cbmxldCBjb250ZW50ICgpID1cbiAgWyBVaV9jb21tb24udG9nZ2xlX2VsZW1lbnQgKGZ1biBzdGF0ZSAtPiBzbmFwc2hvdF9jb3VudCBzdGF0ZSA+IDApICh4bWwgKCkpIF1cblxubGV0IG9ubG9hZCAoKSA6IHVuaXQgPVxuICBsZXQgc25hcHNob3Rfc2VsZWN0X2RvbSA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50ID1cbiAgICBVaV9jb21tb24uaWRfZG9tIHNlbGVjdF9pZFxuICBpblxuICBsZXQgZm9ybWF0X3NlbGVjdF9kb20gOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgVWlfY29tbW9uLmlkX2RvbSBmb3JtYXRfc2VsZWN0X2lkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgc25hcHNob3Rfc2VsZWN0X2RvbSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIFwib25jaGFuZ2VcIiBpblxuICAgICAgICAgICBsZXQgKCkgPSBzZWxlY3Rfc25hcHNob3Qgc25hcHNob3RfanMgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCB1cGRhdGVfZm9ybWF0ICgpID1cbiAgICBsZXQgZm9ybWF0X3RleHQgOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgZm9ybWF0X3NlbGVjdF9kb20jIy52YWx1ZSBpblxuICAgIG1hdGNoIHN0cmluZ190b19kaXNwbGF5X2Zvcm1hdCBmb3JtYXRfdGV4dCB3aXRoXG4gICAgfCBTb21lIGZvcm1hdCAtPlxuICAgICAgbGV0ICgpID0gc2V0X2Rpc3BsYXlfZm9ybWF0IGZvcm1hdCBpblxuICAgICAgKG1hdGNoIFJlYWN0LlMudmFsdWUgY3VycmVudF9zbmFwc2hvdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSAoXywgc25hcHNob3QpIC0+XG4gICAgICAgIHJlbmRlcl9zbmFwc2hvdF9ncmFwaFxuICAgICAgICAgIChzbmFwc2hvdF9qcyA6IEpzX3NuYXBzaG90LnNuYXBzaG90IEpzLnQpXG4gICAgICAgICAgKHNuYXBzaG90IDogRGF0YS5zbmFwc2hvdCkpXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICBpblxuICAoKiBnZXQgaW5pdGlhbCB2YWx1ZSBmb3IgZGlzcGxheSBmb3JtYXQgKilcbiAgbGV0ICgpID0gdXBkYXRlX2Zvcm1hdCAoKSBpblxuICAoKiB1cGRhdGUgdmFsdWUgZm9yIGRpc3BsYXkgZm9ybWF0ICopXG4gIGxldCAoKSA9XG4gICAgZm9ybWF0X3NlbGVjdF9kb20jIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9mb3JtYXQgKCkgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZzbmFwc2hvdFwiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZzbmFwc2hvdFwiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHNldF90YWJfaXNfYWN0aXZlIHRydWUgaW5cbiAgICAgICAgKCkpXG4gIGluXG4gIGxldCAoKSA9IFdpZGdldF9leHBvcnQub25sb2FkIChjb25maWd1cmF0aW9uX2thcHBhICgpKSBpblxuICBsZXQgKCkgPSBXaWRnZXRfZXhwb3J0Lm9ubG9hZCAoY29uZmlndXJhdGlvbl9ncmFwaCAoKSkgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9IGlmIFJlYWN0LlMudmFsdWUgdGFiX2lzX2FjdGl2ZSB0aGVuIHNuYXBzaG90X2pzIyNyZWRyYXdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmNsYXNzIHR5cGUgc3RvcnlfcmVuZGVyaW5nID0gb2JqZWN0XG4gIG1ldGhvZCBzZXREYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCByZWRyYXcgOiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGNsZWFyRGF0YSA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBjcmVhdGVfc3RvcnlfcmVuZGVyaW5nIChpZCA6IHN0cmluZykgOiBzdG9yeV9yZW5kZXJpbmcgSnMudCA9XG4gIEpzLlVuc2FmZS5uZXdfb2JqXG4gICAgKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJTdG9yeVJlbmRlcmluZ1wiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBpZCkgfF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5cbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5sZXQgdGFiX3dhc19hY3RpdmUgPSByZWYgZmFsc2VcbmxldCBuYXZsaSAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxubGV0IG5vbmVfY2hlY2tib3ggPSBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94IF0gKClcblxubGV0IHdlYWtfY2hlY2tib3ggPVxuICBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94OyBIdG1sLmFfY2hlY2tlZCAoKSBdICgpXG5cbmxldCBzdHJvbmdfY2hlY2tib3ggPSBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94IF0gKClcbmxldCBub25lX2JveCA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBub25lX2NoZWNrYm94XG5sZXQgd2Vha19ib3ggPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgd2Vha19jaGVja2JveFxubGV0IHN0cm9uZ19ib3ggPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgc3Ryb25nX2NoZWNrYm94XG5cbmxldCBsYXVuY2hfYnV0dG9uID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdOyBIdG1sLmFfYnV0dG9uX3R5cGUgYFN1Ym1pdCBdXG4gICAgWyBIdG1sLnR4dCBcIkxhdW5jaFwiIF1cblxubGV0IHN0b3J5X2xpc3QsIGxpc3RfY29udHJvbCA9IFJlYWN0LlMuY3JlYXRlIFtdXG5cbmxldCBzdG9yeV9saXN0X2h0bWwgPVxuICBSZWFjdGl2ZURhdGEuUkxpc3QubWFwXG4gICAgKGZ1biAoaWQsIGNtKSAtPlxuICAgICAgSHRtbC5vcHRpb25cbiAgICAgICAgfmE6WyBIdG1sLmFfdmFsdWUgKHN0cmluZ19vZl9pbnQgaWQpIF1cbiAgICAgICAgKEh0bWwudHh0XG4gICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyVpICglYSlAXVwiIGlkXG4gICAgICAgICAgICAgIEthc3Rvcl9jbGllbnQucHJpbnRfY29tcHJlc3Npb25fbW9kZXMgY20pKSlcbiAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsIHN0b3J5X2xpc3QpXG5cbmxldCBzZWxlY3Rfc3RvcmllcyA9IFR5eG1sX2pzLlIuSHRtbDUuc2VsZWN0IHN0b3J5X2xpc3RfaHRtbFxubGV0IHNlbGVjdF9zdG9yaWVzX2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3Qgc2VsZWN0X3N0b3JpZXNcblxubGV0JWh0bWwgc2V0dXBfZm9ybSA9XG4gIHt8PGZvcm0gY2xhc3M9XCJmb3JtLWlubGluZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsPkNvbXByZXNzaW9uIGxldmVsPC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG5vbmVfY2hlY2tib3ggXVxuICAgIHt8IENhdXNhbDwvbGFiZWw+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNoZWNrYm94XCI+PGxhYmVsPnx9XG4gICAgWyB3ZWFrX2NoZWNrYm94IF1cbiAgICB7fCBXZWFrbHk8L2xhYmVsPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveFwiPjxsYWJlbD58fVxuICAgIFsgc3Ryb25nX2NoZWNrYm94IF1cbiAgICB7fCBTdHJvbmdseTwvbGFiZWw+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj58fVxuICAgIFsgbGF1bmNoX2J1dHRvbiBdXG4gICAge3w8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbD5TZWxlY3RlZCBzdG9yeTwvbGFiZWw+fH1cbiAgICBbIHNlbGVjdF9zdG9yaWVzIF1cbiAgICB7fFxuICAgIDwvZGl2PlxuICAgIDwvZm9ybT58fVxuXG5sZXQgc3RvcnlfbG9nLCBsb2dfY29udHJvbCA9IFJlYWN0LlMuY3JlYXRlIFtdXG5sZXQgY3VycmVudF9pbmZvLCBzZXRfaW5mbyA9IFJlYWN0LlMuY3JlYXRlIFwiXCJcblxubGV0IHN0b3J5X2xvZ19odG1sID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0Lm1hcFxuICAgIChmdW4gbGluZSAtPiBIdG1sLnR4dCAobGluZSBeIFwiXFxuXCIpKVxuICAgIChSZWFjdGl2ZURhdGEuUkxpc3QucmV2IChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWwgc3RvcnlfbG9nKSlcblxubGV0IGxvZ19kaXYgPVxuICBUeXhtbF9qcy5SLkh0bWw1LmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtcHJlXCIgXSBdIHN0b3J5X2xvZ19odG1sXG5cbmxldCBsb2dfcGFuZWwgPVxuICBbXG4gICAgVWlfY29tbW9uLm5hdnRhYnMgXCJzdG9yeWxvZ25hdnRhYlwiXG4gICAgICBbXG4gICAgICAgIFwic3RvcnlfY29tcHV0YXRpb25fbG9nXCIsIE5vbmUsIFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eTtcbiAgICAgICAgXCJzdG9yeV9pbmZvX2xvZ1wiLCBOb25lLCBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHk7XG4gICAgICBdO1xuICAgIFVpX2NvbW1vbi5uYXZjb250ZW50IFsgXCJwYW5lbC1zY3JvbGxcIiBdXG4gICAgICBbXG4gICAgICAgIFwic3RvcnlfY29tcHV0YXRpb25fbG9nXCIsIFtdLCBbIGxvZ19kaXYgXTtcbiAgICAgICAgXCJzdG9yeV9pbmZvX2xvZ1wiLCBbIFwicGFuZWwtcHJlXCIgXSwgWyBUeXhtbF9qcy5SLkh0bWw1LnR4dCBjdXJyZW50X2luZm8gXTtcbiAgICAgIF07XG4gIF1cblxubGV0IGdyYXBoX2Rpc3BsYXlfaWQgPSBcInN0b3J5X2dyYXBoX2Rpc3BsYXlcIlxubGV0IHN0b3J5X2dyYXBoID0gSnNfc3RvcnkuY3JlYXRlX3N0b3J5X3JlbmRlcmluZyBncmFwaF9kaXNwbGF5X2lkXG5cbmxldCBjb250ZW50ICgpID1cbiAgW1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTVcIjsgXCJmbGV4LWNvbnRlbnRcIiBdIF1cbiAgICAgIChzZXR1cF9mb3JtIDo6IGxvZ19wYW5lbCk7XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGdyYXBoX2Rpc3BsYXlfaWQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtN1wiOyBcImZsZXgtY29udGVudFwiIF07XG4gICAgICAgIF1cbiAgICAgIFtdO1xuICBdXG5cbmxldCBsaWZ0X3Jlc3VsdCA9IGZ1bmN0aW9uXG4gIHwgUmVzdWx0Lk9rIHggLT4gUmVzdWx0X3V0aWwub2sgeFxuICB8IFJlc3VsdC5FcnJvciBlIC0+IEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlXG5cbmxldCBkb191cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgKCkgPVxuICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcIkNvbmZpZyBjb21wcmVzc2lvblwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgbGV0IGNhdXNhbCA9IEpzLnRvX2Jvb2wgbm9uZV9ib3gjIy5jaGVja2VkIGluXG4gICAgICBsZXQgd2VhayA9IEpzLnRvX2Jvb2wgd2Vha19ib3gjIy5jaGVja2VkIGluXG4gICAgICBsZXQgc3Ryb25nID0gSnMudG9fYm9vbCBzdHJvbmdfYm94IyMuY2hlY2tlZCBpblxuICAgICAgbWFuYWdlciNjb25maWdfc3RvcnlfY29tcHV0YXRpb24geyBBcGkuY2F1c2FsOyBBcGkud2VhazsgQXBpLnN0cm9uZyB9XG4gICAgICA+fD0gbGlmdF9yZXN1bHQpXG5cbmxldCB1cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgPVxuICBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgbGV0IF8gPSBkb191cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgKCkgaW5cbiAgICAgIEpzLl9mYWxzZSlcblxubGV0IHNldF9hX3N0b3J5ID1cbiAgbGV0IHByZWRfaWQgPSByZWYgbWF4X2ludCBpblxuICBmdW4gKCkgLT5cbiAgICBsZXQgdmEgPSBKcy50b19zdHJpbmcgc2VsZWN0X3N0b3JpZXNfZG9tIyMudmFsdWUgaW5cbiAgICBpZiB2YSA9IFwiXCIgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBwcmVkX2lkIDo9IG1heF9pbnQgaW5cbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgaWQgPSBpbnRfb2Zfc3RyaW5nIHZhIGluXG4gICAgICBpZiAhcHJlZF9pZCA8PiBpZCB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gcHJlZF9pZCA6PSBpZCBpblxuICAgICAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcIkxhdW5jaCBzdG9yaWVzXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBtYW5hZ2VyI3N0b3J5X2xpc3Qgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCBTb21lIChfY20sIGQsIHYpIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgc2V0X2luZm9cbiAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAW2lkczogQFslYUBdQCB0PUBbJWFAXUAgZXZlbnQ9QFslYUBdQF1cIlxuICAgICAgICAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWFcbiAgICAgICAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hIChmdW4gZiBkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9pbnQgZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2lkKSkpXG4gICAgICAgICAgICAgICAgICAgICBkXG4gICAgICAgICAgICAgICAgICAgICAoUHAubGlzdCBQcC5jb21tYVxuICAgICAgICAgICAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKGZ1biBmIGQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2Zsb2F0IGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lKSkpXG4gICAgICAgICAgICAgICAgICAgICBkXG4gICAgICAgICAgICAgICAgICAgICAoUHAubGlzdCBQcC5jb21tYVxuICAgICAgICAgICAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKGZ1biBmIGQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ludCBmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQpKSlcbiAgICAgICAgICAgICAgICAgICAgIGQpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgc3RvcnlfZ3JhcGgjI3NldERhdGFcbiAgICAgICAgICAgICAgICAgIChKcy5zdHJpbmcgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgKEdyYXBoX2pzb24udG9fanNvbiB2KSkpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICkgZWxzZVxuICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICApXG5cbmxldCByZWMgaW5zcGVjdF9zdG9yaWVzICgpID1cbiAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJTdG9yaWVzIGxpc3RcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGxpc3RfY29udHJvbFxuICAgICAgICAgIChNb2RzLkludE1hcC5mb2xkXG4gICAgICAgICAgICAgKGZ1biBpZCAoY20sIF8sIF8pIGFjYyAtPiAoaWQsIGNtKSA6OiBhY2MpXG4gICAgICAgICAgICAgbWFuYWdlciNzdG9yeV9saXN0IFtdKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IGxvZ19jb250cm9sIG1hbmFnZXIjc3RvcnlfbG9nIGluXG4gICAgICBzZXRfYV9zdG9yeSAoKSlcbiAgPj49IGZ1biBfIC0+XG4gIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwiU3RvcmllcyBjb21wdXRpbmdcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIG1hbmFnZXIjaXNfY29tcHV0aW5nKSlcbiAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgfm9rOihmdW4gYiAtPlxuICAgICAgICAgIGlmIGIgJiYgUmVhY3QuUy52YWx1ZSB0YWJfaXNfYWN0aXZlIHRoZW5cbiAgICAgICAgICAgIEpzX29mX29jYW1sX2x3dC5Md3RfanMuc2xlZXAgMy4gPj49IGluc3BlY3Rfc3Rvcmllc1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdClcbiAgICAgICAgfmVycm9yOihmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBwYXJlbnRfaGlkZSAoKSA9IHNldF90YWJfaXNfYWN0aXZlIGZhbHNlXG5sZXQgcGFyZW50X3Nob3duICgpID0gc2V0X3RhYl9pc19hY3RpdmUgIXRhYl93YXNfYWN0aXZlXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2c3Rvcmllc1wiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gZmFsc2UgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZzdG9yaWVzXCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gdHJ1ZSBpblxuICAgICAgICBsZXQgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlIGluXG4gICAgICAgIGxldCBfID0gZG9fdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsICgpIGluXG4gICAgICAgIEx3dC5hc3luYyBpbnNwZWN0X3N0b3JpZXMpXG4gIGluXG4gIGxldCAoKSA9IG5vbmVfYm94IyMub25jaGFuZ2UgOj0gdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsIGluXG4gIGxldCAoKSA9IHdlYWtfYm94IyMub25jaGFuZ2UgOj0gdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsIGluXG4gIGxldCAoKSA9IHN0cm9uZ19ib3gjIy5vbmNoYW5nZSA6PSB1cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgaW5cbiAgbGV0ICgpID1cbiAgICBzZWxlY3Rfc3Rvcmllc19kb20jIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCBfID0gc2V0X2Ffc3RvcnkgKCkgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGxhdW5jaF9idXR0b24pIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcIkxhdW5jaCBzdG9yaWVzXCJcbiAgICAgICAgICAgICAgIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgICAgICAgICBpZiBtYW5hZ2VyI3N0b3J5X2lzX2NvbXB1dGluZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fcmF3X3RyYWNlXG4gICAgICAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIHRyYWNlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI3Jhd19sYXVuY2hfc3RvcnlfY29tcHV0YXRpb24gdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID58PSBsaWZ0X3Jlc3VsdCkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9IEx3dC5hc3luYyBpbnNwZWN0X3N0b3JpZXMgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBuYXZfdGFiX2lkID0gXCJuYXZ0YWJzXCJcblxubGV0IG5hdnRhYnMgKCkgPVxuICBsZXQgc3RvcnlfY2xhc3MgPVxuICAgIFNvbWVcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1biBzIC0+XG4gICAgICAgICAgIGlmIHMuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzLlN0YXRlX3Byb2plY3Quc3RvcmVfdHJhY2UgdGhlblxuICAgICAgICAgICAgIFtdXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBbIFwiZGlzYWJsZWRcIiBdKVxuICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbClcbiAgaW5cbiAgVHl4bWxfanMuVG9fZG9tLm9mX3VsXG4gIEBAIFVpX2NvbW1vbi5uYXZ0YWJzIG5hdl90YWJfaWRcbiAgICAgICBbXG4gICAgICAgICBcImVkaXRvclwiLCBOb25lLCBUYWJfZWRpdG9yLm5hdmxpICgpO1xuICAgICAgICAgXCJsb2dcIiwgTm9uZSwgVGFiX2xvZy5uYXZsaSAoKTtcbiAgICAgICAgIFwicGxvdFwiLCBOb25lLCBUYWJfcGxvdC5uYXZsaSAoKTtcbiAgICAgICAgIFwiRElOXCIsIE5vbmUsIFRhYl9mbHV4Lm5hdmxpICgpO1xuICAgICAgICAgXCJzbmFwc2hvdFwiLCBOb25lLCBUYWJfc25hcHNob3QubmF2bGkgKCk7XG4gICAgICAgICBcIm91dHB1dHNcIiwgTm9uZSwgVGFiX291dHB1dHMubmF2bGkgKCk7XG4gICAgICAgICBcInN0b3JpZXNcIiwgc3RvcnlfY2xhc3MsIFRhYl9zdG9yaWVzLm5hdmxpICgpO1xuICAgICAgICAgXCJhYm91dFwiLCBOb25lLCBUYWJfYWJvdXQubmF2bGkgKCk7XG4gICAgICAgXVxuXG5sZXQgbmF2Y29udGVudHNfaWQgOiBzdHJpbmcgPSBcIm5hdmNvbnRlbnRzXCJcblxubGV0IG5hdmNvbnRlbnRzICgpID1cbiAgVHl4bWxfanMuVG9fZG9tLm9mX2RpdlxuICBAQCBVaV9jb21tb24ubmF2Y29udGVudCB+aWQ6bmF2Y29udGVudHNfaWQgW11cbiAgICAgICBbXG4gICAgICAgICBcImVkaXRvclwiLCBbIFwicm93XCIgXSwgVGFiX2VkaXRvci5jb250ZW50ICgpO1xuICAgICAgICAgXCJsb2dcIiwgW10sIFRhYl9sb2cuY29udGVudCAoKTtcbiAgICAgICAgIFwicGxvdFwiLCBbXSwgVGFiX3Bsb3QuY29udGVudCAoKTtcbiAgICAgICAgIFwiRElOXCIsIFtdLCBUYWJfZmx1eC5jb250ZW50ICgpO1xuICAgICAgICAgXCJzbmFwc2hvdFwiLCBbXSwgVGFiX3NuYXBzaG90LmNvbnRlbnQgKCk7XG4gICAgICAgICBcIm91dHB1dHNcIiwgW10sIFRhYl9vdXRwdXRzLmNvbnRlbnQgKCk7XG4gICAgICAgICBcInN0b3JpZXNcIiwgWyBcInJvd1wiIF0sIFRhYl9zdG9yaWVzLmNvbnRlbnQgKCk7XG4gICAgICAgICBcImFib3V0XCIsIFsgXCJwYW5lbC1zY3JvbGxcIiBdLCBUYWJfYWJvdXQuY29udGVudCAoKTtcbiAgICAgICBdXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPSBUYWJfZWRpdG9yLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfbG9nLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfcGxvdC5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2ZsdXgub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9zbmFwc2hvdC5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX291dHB1dHMub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9zdG9yaWVzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfYWJvdXQub25sb2FkICgpIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA9XG4gIGxldCAoKSA9IFRhYl9lZGl0b3Iub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2xvZy5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfcGxvdC5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfZmx1eC5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfc25hcHNob3Qub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX291dHB1dHMub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX3N0b3JpZXMub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2Fib3V0Lm9ucmVzaXplICgpIGluXG4gICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgc3luYyAoKSA6IHVuaXQgTHd0LnQgPVxuICBTdGF0ZV9zZXR0aW5ncy5zeW5jICgpID4+PSBTdGF0ZV9ydW50aW1lLnN5bmMgPj49IFN0YXRlX3Byb2plY3Quc3luY1xuICA+Pj0gZnVuIF8gLT5cbiAgU3RhdGVfZmlsZS5zeW5jICgpID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXRcblxubGV0IGluaXQgKCkgOiB1bml0IEx3dC50ID1cbiAgTHd0LnJldHVybl91bml0ID4+PSBTdGF0ZV9zZXR0aW5ncy5pbml0ID4+PSBTdGF0ZV9ydW50aW1lLmluaXRcbiAgPj49IFN0YXRlX3Byb2plY3QuaW5pdCA+Pj0gU3RhdGVfZmlsZS5pbml0ID4+PSBTdGF0ZV9zaW11bGF0aW9uLmluaXQgPj49IHN5bmNcblxubGV0IHJlYyBsb29wIChoIDogdW5pdCAtPiB1bml0IEx3dC50KSAodCA6IGZsb2F0KSAoKSA6IHVuaXQgTHd0LnQgPVxuICBoICgpID4+PSAoZnVuIF8gLT4gSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcy5zbGVlcCB0KSA+Pj0gbG9vcCBoIHRcblxubGV0IGxvb3Bfc3luYyAoKSA6IHVuaXQgTHd0LnQgPVxuICBpZiBSZWFjdC5TLnZhbHVlIFN0YXRlX3NldHRpbmdzLnN5bmNoIHRoZW4gKFxuICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIFwibG9vcCBzeW5jXCIpIGluXG4gICAgc3luYyAoKVxuICApIGVsc2VcbiAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IG9ubG9hZCAoKSA6IHVuaXQgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBMd3QucmV0dXJuX3VuaXQgPj49IGluaXQgPj49IGxvb3AgbG9vcF9zeW5jIDIwLjApXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgb25sb2FkIChfIDogJ2EpIDogYm9vbCBKcy50ID1cbiAgbGV0ICgpID0gU3RhdGVfdWkub25sb2FkICgpIGluXG4gIGxldCBtYWluID0gVWlfY29tbW9uLmlkX2RvbSBcIm1haW5cIiBpblxuICBsZXQgKCkgPVxuICAgIERvbS5hcHBlbmRDaGlsZCBtYWluIChUeXhtbF9qcy5Ub19kb20ub2ZfZGl2IChQYW5lbF9wcm9qZWN0cy5jb250ZW50ICgpKSlcbiAgaW5cbiAgbGV0ICgpID0gRG9tLmFwcGVuZENoaWxkIG1haW4gKFBhbmVsX3RhYi5uYXZ0YWJzICgpKSBpblxuICBsZXQgKCkgPSBEb20uYXBwZW5kQ2hpbGQgbWFpbiAoUGFuZWxfdGFiLm5hdmNvbnRlbnRzICgpKSBpblxuICBsZXQgKCkgPVxuICAgIERvbS5hcHBlbmRDaGlsZCBtYWluIChUeXhtbF9qcy5Ub19kb20ub2ZfZGl2IChQYW5lbF9zZXR0aW5ncy5jb250ZW50ICgpKSlcbiAgaW5cblxuICBsZXQgKCkgPSBQYW5lbF9wcm9qZWN0cy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gUGFuZWxfdGFiLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBQYW5lbF9zZXR0aW5ncy5vbmxvYWQgKCkgaW5cblxuICBsZXQgXyA9XG4gICAgRG9tX2h0bWwud2luZG93IyMub25yZXNpemUgOj1cbiAgICAgIERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgbGV0ICgpID0gUGFuZWxfcHJvamVjdHMub25yZXNpemUgKCkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBQYW5lbF90YWIub25yZXNpemUgKCkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9zZXR0aW5ncy5vbnJlc2l6ZSAoKSBpblxuICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBKcy5fdHJ1ZVxuXG5sZXQgXyA9IERvbV9odG1sLndpbmRvdyMjLm9ubG9hZCA6PSBEb21faHRtbC5oYW5kbGVyIG9ubG9hZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFbnN1cmUgdGhhdCBbYXRfZXhpdF0gZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBldmVyeSBwcm9ncmFtICopXG5cbmxldCBfID0gZG9fYXRfZXhpdCgpXG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJKc1NpbS5iYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJuYW1lcyI6WyJjYW1sX2ludDY0X2lzX3plcm8iLCJ4IiwiY2FtbF9zdHJfcmVwZWF0IiwibiIsInMiLCJyIiwibCIsImNhbWxfaW50NjRfb2Zmc2V0IiwiTWF0aCIsImNhbWxfcmFpc2VfY29uc3RhbnQiLCJ0YWciLCJjYW1sX2dsb2JhbF9kYXRhIiwiY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSIsIk1sSW50NjQiLCJsbyIsIm1pIiwiaGkiLCJ0aGlzIiwieGhpIiwiaCIsInNpZ24iLCJvZmZzZXQiLCJtb2R1bHVzIiwiZGl2aXNvciIsInF1b3RpZW50IiwieSIsInEiLCJjYW1sX2ludDY0X29mX2ludDMyIiwiY2FtbF9pbnQ2NF90b19pbnQzMiIsImNhbWxfaW50NjRfaXNfbmVnYXRpdmUiLCJjYW1sX2ludDY0X25lZyIsImNhbWxfanNieXRlc19vZl9zdHJpbmciLCJqc29vX3N5c19nZXRlbnYiLCJwcm9jZXNzIiwiZ2xvYmFsVGhpcyIsInVuZGVmaW5lZCIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnIiwiaSIsImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlIiwiZXhuIiwiZm9yY2UiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwiY2FtbF9zdHJpbmdfb2ZfanNieXRlcyIsImNhbWxfcmFpc2Vfd2l0aF9zdHJpbmciLCJtc2ciLCJjYW1sX2ludmFsaWRfYXJndW1lbnQiLCJjYW1sX3BhcnNlX2Zvcm1hdCIsImZtdCIsImxlbiIsImYiLCJjIiwiY2FtbF9maW5pc2hfZm9ybWF0dGluZyIsInJhd2J1ZmZlciIsImJ1ZmZlciIsImNhbWxfaW50NjRfZm9ybWF0Iiwid2Jhc2UiLCJjdnRibCIsInAiLCJjYW1sX2V4cG0xX2Zsb2F0IiwiY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0IiwidCIsImpzb29faXNfYXNjaWkiLCJjYW1sX3V0ZjE2X29mX3V0ZjgiLCJiIiwiYzEiLCJjMiIsInYiLCJqIiwiU3RyaW5nIiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJmc19ub2RlX3N1cHBvcnRlZCIsIm1ha2VfcGF0aF9pc19hYnNvbHV0ZSIsInBvc2l4IiwicGF0aCIsIndpbjMyIiwic3BsaXREZXZpY2VSZSIsInJlc3VsdCIsImRldmljZSIsImlzVW5jIiwiQm9vbGVhbiIsInJvb3QiLCJzZXAiLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsIm5hbWUiLCJjYW1sX2N1cnJlbnRfZGlyIiwiY2FtbF9tYWtlX3BhdGgiLCJjb21wMCIsImNvbXAiLCJuY29tcCIsImNhbWxfdXRmOF9vZl91dGYxNiIsImQiLCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZyIsInVuaXhfZXJyb3IiLCJtYWtlX3VuaXhfZXJyX2FyZ3MiLCJjb2RlIiwic3lzY2FsbCIsImVycm5vIiwidmFyaWFudCIsIm51bGwiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImEiLCJjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzIiwiTWxCeXRlcyIsImNvbnRlbnRzIiwibGVuZ3RoIiwiY29udGVudCIsImNhbWxfaXNfbWxfYnl0ZXMiLCJjYW1sX2lzX21sX3N0cmluZyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJVaW50OEFycmF5IiwiY2FtbF9ieXRlc19vZl9qc2J5dGVzIiwiY2FtbF9ieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3N5c19lcnJvciIsImNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlIiwiY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IiwiY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyIsImNhbWxfY3JlYXRlX2J5dGVzIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsIk1sRmlsZSIsIk1sRmFrZUZpbGUiLCJvbGQiLCJidWYiLCJwb3MiLCJjbGVuIiwibmV3X3N0ciIsIm9sZF9kYXRhIiwiZGF0YSIsIk1sRmFrZUZkIiwiZmlsZSIsImZsYWdzIiwiTWxGYWtlRGV2aWNlIiwicmVzIiwiU3ltYm9sIiwibmFtZV9zbGFzaCIsIm1vZGUiLCJyYWlzZV91bml4IiwicGFyZW50IiwiUmVnRXhwIiwic2VlbiIsIm0iLCJlbnRyeSIsIm9rIiwiQXJyYXkiLCJieXRlcyIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQiLCJjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyIsImNhbWxfYnl0ZXNfYm91bmRfZXJyb3IiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2J5dGVzX3NldCIsIk1sTm9kZUZkIiwiZmQiLCJyZXF1aXJlIiwiZXJyIiwiYnVmX29mZnNldCIsInJlYWQiLCJNbE5vZGVEZXZpY2UiLCJjb25zdHMiLCJrZXkiLCJpc0NoYXJhY3RlckRldmljZSIsIm8iLCJqc19zdGF0cyIsInRvX2RpciIsInRhcmdldCIsImxpbmsiLCJmaWxlX2tpbmQiLCJjYW1sX2dldF9yb290IiwiY2FtbF9mYWlsd2l0aCIsImNhbWxfcm9vdCIsImpzb29fbW91bnRfcG9pbnQiLCJyZXNvbHZlX2ZzX2RldmljZSIsImNhbWxfc3lzX2lzX2RpcmVjdG9yeSIsImNhbWxfcmFpc2Vfbm90X2ZvdW5kIiwiY2FtbF9zeXNfZ2V0ZW52Iiwic2hpZnRfcmlnaHRfbmF0IiwibmF0MSIsIm9mczEiLCJsZW4xIiwibmF0MiIsIm9mczIiLCJuYml0cyIsIndyYXAiLCJjYW1sX2dyX3N0YXRlIiwiY2FtbF9ncl9zdGF0ZV9nZXQiLCJjYW1sX2dyX3BvaW50X2NvbG9yIiwiaW0iLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZSIsIk1sT2JqZWN0VGFibGUiLCJOYWl2ZUxvb2t1cCIsIm9ianMiLCJjYW1sX3N5c19yZW5hbWUiLCJvX3Jvb3QiLCJuX3Jvb3QiLCJjYW1sX2xvZzEwX2Zsb2F0IiwiY2FtbF9ydW50aW1lX3dhcm5pbmdzIiwiY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5ncyIsImJvb2wiLCJjYW1sX2NsYXNzaWZ5X2Zsb2F0IiwiaXNGaW5pdGUiLCJpc05hTiIsImNhbWxfbWxfY2hhbm5lbHMiLCJjYW1sX3JlZmlsbCIsImNoYW4iLCJzdHIiLCJzdHJfYSIsIm5yZWFkIiwiY2FtbF9hcnJheV9ib3VuZF9lcnJvciIsImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lIiwiY2hhbmlkIiwicHJldl9tYXgiLCJjYW1sX2djX21pbm9yIiwidW5pdCIsImNhbWxfbWxfY29uZGl0aW9uX25ldyIsImNhbWxfYmFfdG9fdHlwZWRfYXJyYXkiLCJiYSIsImNhbWxfbWxfaW5wdXRfYmxvY2siLCJhdmFpbCIsImNhbWxfbWxfaW5wdXRfYmlnYXJyYXkiLCJjYW1sX2ludDY0X29mX2J5dGVzIiwiY2FtbF9iYV91aW50OF9nZXQ2NCIsImkwIiwib2ZzIiwiYjEiLCJiMiIsImIzIiwiYjQiLCJiNSIsImI2IiwiYjciLCJiOCIsImNhbWxfaW50NjRfdG9fYnl0ZXMiLCJjYW1sX2ludDY0X21hcnNoYWwiLCJ3cml0ZXIiLCJzaXplcyIsImNhbWxfYmFfbnVtX2RpbXMiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiZSIsImNhbWxfY3JlYXRlX2ZpbGUiLCJqc29vX2NyZWF0ZV9maWxlIiwiY2FtbF9mc19pbml0IiwidG1wIiwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlIiwib2xkZmxhZyIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsImNhbWxfbXVsIiwiY2FtbF9oYXNoX21peF9pbnQiLCJudW1fZGlnaXRzX25hdCIsIm5hdCIsImNhbWxfaGFzaF9uYXQiLCJjYW1sX2NhbGxfZ2VuIiwiYXJnc0xlbiIsImciLCJuYXJncyIsImV4dHJhX2FyZ3MiLCJhcmd1bWVudHMiLCJjYW1sX2NhbGxiYWNrIiwiY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc3lzX2NoZGlyIiwiZGlyIiwiY2FtbF9vYmpfdXBkYXRlX3RhZyIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyIsImNhbWxfZ2NfY291bnRlcnMiLCJjYW1sX2dyX3N5bmNocm9uaXplIiwiY2FtbF91bml4X2Nsb3NlZGlyIiwiZGlyX2hhbmRsZSIsImNhbWxfdW5peF9vcGVuZGlyIiwiY2FtbF91bml4X3Jld2luZGRpciIsIm5ld19kaXJfaGFuZGxlIiwiY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSIsImNhbWxfdW5peF9yZWFkZGlyIiwiY2FtbF91bml4X2ZpbmRmaXJzdCIsInBhdGhfanMiLCJmaXJzdF9lbnRyeSIsImNhbWxfaXNfY29udGludWF0aW9uX3RhZyIsImxvZzJfb2siLCJqc29vX2Zsb29yX2xvZzIiLCJJbmZpbml0eSIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiRmxvYXQzMkFycmF5IiwiaW50MzJhIiwiSW50MzJBcnJheSIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IiwiZXhwIiwiayIsInIzIiwicjIiLCJyMSIsImNhbWxfYmFfc2VyaWFsaXplIiwic3oiLCJjb21wbGV4IiwiY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudCIsImtpbmQiLCJjYW1sX2JhX2NyZWF0ZV9idWZmZXIiLCJzaXplIiwidmlldyIsIkZsb2F0NjRBcnJheSIsIkludDhBcnJheSIsIkludDE2QXJyYXkiLCJVaW50MTZBcnJheSIsImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2ludDY0X2hpMzIiLCJjYW1sX2ludDY0X2xvMzIiLCJjYW1sX2JhX2N1c3RvbV9uYW1lIiwiTWxfQmlnYXJyYXkiLCJsYXlvdXQiLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfYmFfZGVzZXJpYWxpemUiLCJyZWFkZXIiLCJudW1fZGltcyIsInNpemVfZGltIiwic2l6ZV9kaW1faGkiLCJzaXplX2RpbV9sbyIsInNpeHR5IiwiaW50NjQiLCJjYW1sX2JhX2NvbXBhcmUiLCJjYW1sX2hhc2hfbWl4X2ludDY0IiwiY2FtbF9oYXNoX21peF9mbG9hdCIsInYwIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJ3IiwiY2FtbF9pbnQzMl91bm1hcnNoYWwiLCJjYW1sX25hdGl2ZWludF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X3VubWFyc2hhbCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfaGFzaCIsImNhbWxfY3VzdG9tX29wcyIsImNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSIsImNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbSIsIm51bSIsImN1c3RvbSIsInN3YXAiLCJjYW1sX2NvbXBhcmVfdmFsX3RhZyIsIk51bWJlciIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9ieXRlc19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwieiIsImRpdl9kaWdpdF9uYXQiLCJuYXRxIiwib2ZzcSIsIm5hdHIiLCJvZnNyIiwicmVtIiwibnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0Iiwic2hpZnRfbGVmdF9uYXQiLCJNbE5hdCIsImNyZWF0ZV9uYXQiLCJhcnIiLCJzZXRfdG9femVyb19uYXQiLCJpbmNyX25hdCIsImNhcnJ5X2luIiwiY2FycnkiLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsImJvcnJvdyIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJzcmMiLCJkc3QiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImNhbWxfanNfaHRtbF9lbnRpdGllcyIsImVudGl0eSIsInRlbXAiLCJkb2N1bWVudCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQiLCJjYW1sX2JhX3NldF8yIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJhcmdzMiIsImNhbWxfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImV2YWwiLCJzZXJpYWxpemVfbmF0IiwiY2FtbF9tZW1wcm9mX3NldCIsIl9jb250cm9sIiwiY2FtbF9zeXNfZXhpdCIsImNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yIiwiY2FtbF9qc19mcm9tX2FycmF5IiwiY2FtbF9iYV9yZXNoYXBlIiwidmluZCIsIm5ld19kaW0iLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX3NldF9vb19pZCIsImNhbWxfZ3JfZmlsbF9yZWN0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEiLCJzdHIxIiwicG9zMSIsImJhMiIsInBvczIiLCJzbGljZSIsImNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZSIsImpzbmFtZSIsImNhbWxfZ2V0X2dsb2JhbF9kYXRhIiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCIsImNhbWxfYmFfdWludDhfZ2V0MTYiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX01ENVRyYW5zZm9ybSIsImFkZCIsInh4IiwiZmYiLCJnZyIsImhoIiwiaWkiLCJjYW1sX01ENVVwZGF0ZSIsImN0eCIsImlucHV0IiwiaW5wdXRfbGVuIiwiaW5fYnVmIiwiaW5wdXRfcG9zIiwibWlzc2luZyIsImNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsIiwiY3Vyc29yIiwiY2FsbGJhY2tzIiwiY2FtbF9mcmVzaF9vb19pZCIsImNhbWxfaW50NjRfdG9fZmxvYXQiLCJjYW1sX2JhX2dldF8xIiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9uZXdfc3RyaW5nIiwiY2FtbF9lcmZfZmxvYXQiLCJhMSIsImEyIiwiYTMiLCJhNCIsImE1IiwiY2FtbF9iYV91aW50OF9nZXQzMiIsImNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgiLCJjYW1sX3N0cl9pbml0aWFsaXplIiwiY2FtbF9vYmpfYmxvY2siLCJjYW1sX2dyX2NsZWFyX2dyYXBoIiwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciIsImJzIiwiY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCIsIl91bml0IiwibHhvcl9kaWdpdF9uYXQiLCJjYW1sX29ial9hZGRfb2Zmc2V0IiwiY2FtbF9maW5hbF9yZWxlYXNlIiwiY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplIiwiY2FtbF9qc190b19hcnJheSIsImNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZSIsImNhbWxfZ3JfcGxvdCIsImNvbG9yIiwiY2FtbF9ieXRlc19zZXQ2NCIsImk2NCIsImNhbWxfc3RyaW5nX3NldDE2IiwiaTE2IiwiY2FtbF9pbnQ2NF9ic3dhcCIsImNhbWxfZ2NfbWFqb3IiLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsInN0YXRlIiwiYmFzZSIsImJhY2t0cmsiLCJjYW1sX3N5c19maWxlX2V4aXN0cyIsImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QiLCJjYW1sX2FycmF5X3N1YiIsImNhbWxfYnl0ZXNfZXF1YWwiLCJjYW1sX2dyX3NpemVfeCIsImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMiLCJjYW1sX2F0b21pY19mZXRjaF9hZGQiLCJyZWYiLCJvc190eXBlIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiIsImNhbWxfY29zaF9mbG9hdCIsIk1sTXV0ZXgiLCJjYW1sX21sX211dGV4X25ldyIsImNhbWxfZXBoZV9rZXlfb2Zmc2V0IiwiY2FtbF9lcGhlX2NoZWNrX2tleSIsIndlYWsiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9ncl90ZXh0X3NpemUiLCJ0eHQiLCJjYW1sX2xleF9ydW5fbWVtIiwibWVtIiwiY3Vycl9wb3MiLCJjYW1sX2xleF9ydW5fdGFnIiwiY2FtbF9uZXdfbGV4X2VuZ2luZSIsImxleF9tZW0iLCJsZXhfYmFzZV9jb2RlIiwibGV4X2JhY2t0cmtfY29kZSIsImxleF9kZWZhdWx0X2NvZGUiLCJsZXhfdHJhbnNfY29kZSIsImxleF9jaGVja19jb2RlIiwibGV4X2NvZGUiLCJwY19vZmYiLCJwc3RhdGUiLCJiYXNlX2NvZGUiLCJjYW1sX2JhX3VpbnQ4X3NldDY0IiwiY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9sZXNzZXF1YWwiLCJjYW1sX2Fjb3NoX2Zsb2F0IiwiY2FtbF9NRDVJbml0IiwiQXJyYXlCdWZmZXIiLCJiMzIiLCJVaW50MzJBcnJheSIsImNhbWxfbWxfZmx1c2giLCJjYW1sX3NlZWtfb3V0IiwiY2FtbF9tbF9zZWVrX291dF82NCIsImNvbXBhcmVfbmF0X3JlYWwiLCJjYW1sX2djX3NldCIsImNhbWxfanNfZ2V0IiwiY2FtbF91bml4X2lzYXR0eSIsImZpbGVEZXNjcmlwdG9yIiwidHR5IiwiY2FtbF9tbF9zZXRfYnVmZmVyZWQiLCJjYW1sX2djX2NvbXBhY3Rpb24iLCJjYW1sX2VwaGVfZ2V0X2tleSIsImNhbWxfdW5peF9sb2NhbHRpbWUiLCJEYXRlIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJjYW1sX3N5c19mZHMiLCJjYW1sX3N5c19jbG9zZSIsImNhbWxfbWxfY2xvc2VfY2hhbm5lbCIsImNhbWxfYXRvbWljX2V4Y2hhbmdlIiwiY2FtbF9zeXNfaXNhdHR5IiwiX2NoYW4iLCJpc19kaWdpdF96ZXJvIiwiY2FtbF91bml4X2xzdGF0IiwiY2FtbF91bml4X2xzdGF0XzY0IiwiY2FtbF9qc19zZXQiLCJjYW1sX2FycmF5X2dldCIsImFycmF5IiwiaW5kZXgiLCJjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMiLCJjb250IiwiY2FtbF91bml4X3JtZGlyIiwiY2FtbF9sb2cyX2Zsb2F0IiwiY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50IiwiY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfc2Vla19pbiIsImNhbWxfbWxfc2Vla19pbl82NCIsImNhbWxfZG9tYWluX2lkIiwiY2FtbF9tbF9tdXRleF91bmxvY2siLCJjYW1sX2RvbWFpbl9sYXRlc3RfaWR4IiwiY2FtbF9kb21haW5fc3Bhd24iLCJtdXRleCIsImlkIiwiY2FtbF91bml4X21rZGlyIiwicGVybSIsImNhbWxfaW50NjRfc2hpZnRfbGVmdCIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSIsImNhbWxfanNfd3JhcF9jYWxsYmFjayIsIkZ1bmN0aW9uIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2lzX2pzIiwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwiY2FtbF9qc19tZXRoX2NhbGwiLCJjYW1sX2VwaGVfZGF0YV9vZmZzZXQiLCJjYW1sX3dlYWtfY3JlYXRlIiwiY2FtbF9lcGhlX2NyZWF0ZSIsImNhbWxfanNfdG9fYnl0ZV9zdHJpbmciLCJjYW1sX3RyYW1wb2xpbmUiLCJjYW1sX21heWJlX3ByaW50X3N0YXRzIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQ2NCIsImNhbWxfY3VzdG9tX2V2ZW50X2luZGV4IiwiY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyIiwiZXZlbnRfbmFtZSIsImV2ZW50X3RhZyIsImV2ZW50X3R5cGUiLCJjYW1sX3VuaXhfaGFzX3N5bWxpbmsiLCJjYW1sX2VwaGVfc2V0X2tleSIsIk9iamVjdCIsImNhbWxfZXBoZV91bnNldF9rZXkiLCJjb3VudCIsImNhbWxfd2Vha19zZXQiLCJjYW1sX3N5c19yZW1vdmUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2dldDMyIiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2h5cG90X2Zsb2F0IiwiY2FtbF9qc19jYWxsIiwiY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSIsImNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIiwiY2FtbF9oYXNoX21peF9ieXRlc19hcnIiLCJjYW1sX2hhc2hfbWl4X2pzYnl0ZXMiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzIiwibnRoX2RpZ2l0X25hdCIsImNhbWxfYXJyYXlfYmxpdCIsImNhbWxfZmxvYXRfb2Zfc3RyaW5nIiwibTMiLCJtYW50aXNzYSIsInBhcnNlSW50IiwiZXhwb25lbnQiLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX2ludDY0X2FkZCIsImNhbWxfaW50NjRfbXVsIiwiY2FtbF9pbnQ2NF91bHQiLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJjYW1sX2JhX3NldF8xIiwiY2FtbF9pbnQ2NF94b3IiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9seG1fbmV4dCIsInNoaWZ0X2wiLCJzaGlmdF9yIiwib3IiLCJ4b3IiLCJtdWwiLCJyb3RsIiwiZ2V0Iiwic2V0IiwiTSIsImRhYmEiLCJxMCIsInExIiwic3QiLCJ4MCIsImNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4iLCJjYW1sX2xpc3RfdG9fanNfYXJyYXkiLCJjYW1sX291dHB1dF92YWwiLCJXcml0ZXIiLCJ2YWx1ZSIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImNvbnNvbGUiLCJpbnRlcm5fb2JqX3RhYmxlIiwibWVtbyIsImV4aXN0aW5nX29mZnNldCIsImV4dGVybl9yZWMiLCJvcHMiLCJzel8zMl82NCIsImhlYWRlcl9wb3MiLCJvbGRfcG9zIiwidHlwZV9vZl92IiwiY2FtbF9zdHJpbmdfb2ZfYXJyYXkiLCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmciLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kIiwiY21kIiwiY2hpbGRfcHJvY2VzcyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF91bml4X2dldHVpZCIsImRlc2VyaWFsaXplX25hdCIsImluaXRpYWxpemVfbmF0IiwiY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyIsImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3ciLCJVSW50OEFycmF5UmVhZGVyIiwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSIsInJlYWR2bHEiLCJvdmVyZmxvdyIsIm43IiwiaGVhZGVyX2xlbiIsImRhdGFfbGVuIiwiTWxTdHJpbmdSZWFkZXIiLCJjYW1sX2RlY29tcHJlc3NfaW5wdXQiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIm1hZ2ljIiwiY29tcHJlc3NlZCIsInVuY29tcHJlc3NlZF9kYXRhX2xlbiIsIm51bV9vYmplY3RzIiwiX3NpemVfMzIiLCJfc2l6ZV82NCIsIm9ial9jb3VudGVyIiwiaW50ZXJuX3JlYyIsImhlYWRlciIsImV4cGVjdGVkX3NpemUiLCJjYW1sX3N0cmluZ19vZl9ieXRlcyIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyIsImNhbWxfaW5wdXRfdmFsdWUiLCJibG9jayIsImNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwIiwiY2FtbF9hdG9taWNfY2FzIiwiY2FtbF9jb3B5c2lnbl9mbG9hdCIsImNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSIsImNhbWxfYXRvbWljX2xvYWQiLCJjYW1sX01ENUZpbmFsIiwiY2FtbF9tZDVfYnl0ZXMiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9tbF9jb25kaXRpb25fd2FpdCIsIm11dGV4dCIsImNhbWxfc3RyaW5nX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbCIsImNhbWxfbmV4dGFmdGVyX2Zsb2F0IiwiYml0cyIsIm9uZSIsImNhbWxfZ3Jfc2l6ZV95IiwiY2FtbF9wb3NfaW4iLCJjYW1sX21sX3Bvc19pbiIsImNhbWxfaW50NjRfYW5kIiwiY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJjYW1sX3VuaXhfdW5saW5rIiwiY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZSIsImZzIiwiZmQyIiwiTWxGYWtlRmRfb3V0IiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImlkeCIsImNhbWxfc3lzX29wZW4iLCJfcGVybXMiLCJjYW1sX3N0cmluZ19nZXQiLCJyZV9tYXRjaCIsInJlX3dvcmRfbGV0dGVycyIsIm9wY29kZXMiLCJpc193b3JkX2xldHRlciIsImluX2JpdHNldCIsInJlX21hdGNoX2ltcGwiLCJwYXJ0aWFsIiwicHJvZyIsImNwb29sIiwibm9ybXRhYmxlIiwibnVtZ3JvdXBzIiwibnVtcmVnaXN0ZXJzIiwic3RhcnRjaGFycyIsInBjIiwicXVpdCIsImdyb3VwcyIsInJlX3JlZ2lzdGVyIiwiYmFja3RyYWNrIiwiaXRlbSIsInB1c2giLCJhY2NlcHQiLCJwcmVmaXhfbWF0Y2giLCJvcCIsInNhcmciLCJ1YXJnIiwiZ3JvdXAiLCJFcnJvciIsInJlX3NlYXJjaF9iYWNrd2FyZCIsImNhbWxfanNfZnJvbV9zdHJpbmciLCJjYW1sX21sX291dHB1dF90YSIsImNhbWxfYmFfc3ViIiwiY2hhbmdlZF9kaW0iLCJuZXdfZGltcyIsIm5ld19kYXRhIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9tbF9tdXRleF90cnlfbG9jayIsImNhbWxfYnl0ZXNfc2V0MzIiLCJpMzIiLCJjYW1sX2dyX3NpZ2lvX3NpZ25hbCIsImNhbWxfYmFfdWludDhfc2V0MzIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCIsImNhbWxfdW5peF9nbXRpbWUiLCJjYW1sX3NpZ25iaXRfZmxvYXQiLCJjYW1sX2dyX2N1cnJlbnRfeCIsImNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgiLCJjYW1sX2dyX3NldF9mb250IiwiY2FtbF9ncl9zZXRfY29sb3IiLCJjb252ZXJ0IiwibnVtYmVyIiwiY19zdHIiLCJjYW1sX2dyX21vdmV0byIsImNhbWxfZ3JfcmVzaXplX3dpbmRvdyIsImNhbWxfZ3Jfc3RhdGVfaW5pdCIsImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSIsInRhIiwiVWludDhDbGFtcGVkQXJyYXkiLCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkiLCJjYW1sX21sX3NlZWtfb3V0IiwiY2FtbF9qc190eXBlb2YiLCJjYW1sX2hhc2hfbWl4X3N0cmluZyIsImNhbWxfc3RyaW5nX2hhc2giLCJjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZSIsImJ0IiwiY2FtbF9ncl9saW5ldG8iLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9iYV9kaW1fMyIsImNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24iLCJjYW1sX2Zvcm1hdF9leGNlcHRpb24iLCJidWNrZXQiLCJzdGFydCIsImNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uIiwiaGFuZGxlciIsImF0X2V4aXQiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfYnl0ZXNfZ2V0MTYiLCJjYW1sX29ial9tYWtlX2ZvcndhcmQiLCJjYW1sX2pzX2Zyb21fYm9vbCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgiLCJjYW1sX2NyZWF0ZV9zdHJpbmciLCJjYW1sX21kNV9jaGFuIiwidG9yZWFkIiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCIsImNhbWxfdW5peF9maW5kbmV4dCIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2FycmF5X2FwcGVuZCIsImwxIiwibDIiLCJjYW1sX3VuaXhfZ2V0dGltZW9mZGF5IiwiY2FtbF91bml4X3RpbWUiLCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbCIsImNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvciIsImNhbWxfZmlsbF9ieXRlcyIsImNhbWxfanNfZXhwciIsImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMiLCJjYW1sX2V2ZW50bG9nX3Jlc3VtZSIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsImVuZCIsImNhbWxfcHVyZV9qc19leHByIiwiY2FtbF9ibGl0X3N0cmluZyIsImJsaXRfbmF0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyIsImJhMSIsImJ5dGVzMiIsImNhbWxfdW5peF9zdGF0IiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF91bml4X3N0YXRfNjQiLCJjYW1sX3RvX2pzX3N0cmluZyIsImNhbWxfbWxfbXV0ZXhfbG9jayIsInJlX3NlYXJjaF9mb3J3YXJkIiwiY2FtbF9tYWtlX3ZlY3QiLCJpbml0IiwiY2FtbF9tbF9zZWVrX2luIiwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkiLCJjYW1sX21sX291dHB1dF9jaGFyIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIiwiY2FtbF9vYmpfaXNfYmxvY2siLCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkIiwiY2FtbF9qc192YXIiLCJjYW1sX3RydW5jX2Zsb2F0IiwiY2FtbF9lcGhlX3Vuc2V0X2RhdGEiLCJjYW1sX2VwaGVfc2V0X2RhdGEiLCJjYW1sX2VwaGVfYmxpdF9kYXRhIiwibGVuZ3RoX25hdCIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9ieXRlc19sZXNzZXF1YWwiLCJjYW1sX2FycmF5X29mX2J5dGVzIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsIm5vdyIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNiIiwiY2FtbF9iYV9nZXRfMiIsImNhbWxfYmFfdWludDhfc2V0MTYiLCJjYW1sX2xhenlfcmVzZXRfdG9fbGF6eSIsImNhbWxfanNfZGVsZXRlIiwiY2FtbF9pbnRfb2Zfc3RyaW5nIiwiY2FtbF9saXN0X21vdW50X3BvaW50IiwicHJldiIsImNhbWxfbWFyc2hhbF9jb25zdGFudHMiLCJjYW1sX29ial9yYXdfZmllbGQiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkiLCJjYW1sX2dyX2FyY19hdXgiLCJjeCIsImN5IiwicnkiLCJyeCIsInJvdCIsInhQb3MiLCJ5UG9zIiwieFBvc19wcmV2IiwieVBvc19wcmV2Iiwic3BhY2UiLCJkZWx0YSIsImNhbWxfZ3JfZmlsbF9hcmMiLCJjYW1sX2JhX3NsaWNlIiwibnVtX2luZHMiLCJzdWJfZGltcyIsImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2JhX2tpbmQiLCJjYW1sX2FsbG9jX2R1bW15X2luZml4IiwiY2FtbF9qc19zdHJpY3RfZXF1YWxzIiwiY2FtbF9qc19mdW5fY2FsbCIsImNhbWxfZ2NfbWFqb3Jfc2xpY2UiLCJ3b3JrIiwiY2FtbF9qc19wdXJlX2V4cHIiLCJjb21wYXJlX2RpZ2l0c19uYXQiLCJjYW1sX21sX2lucHV0IiwiY2FtbF9ncl93YWl0X2V2ZW50IiwiX2V2bCIsImNhbWxfZ3Jfc2lnaW9faGFuZGxlciIsImNhbWxfbWVtcHJvZl9kaXNjYXJkIiwiY2FtbF9oYXNoX21peF9iaWdzdHJpbmciLCJjYW1sX3JlY29yZF9iYWNrdHJhY2UiLCJjYW1sX3VuaXhfY2xlYW51cCIsImNhbWxfc3lzX2dldF9jb25maWciLCJjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUiLCJjYW1sX29ial9pc19zaGFyZWQiLCJjYW1sX21sX291dF9jaGFubmVsc19saXN0IiwiY2FtbF9hc2luaF9mbG9hdCIsImNhbWxfcG9zX291dCIsImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIiLCJhYiIsImNhbWxfbW9kIiwiY2FtbF9iYV9pbml0IiwiY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCIsInJlX3N0cmluZ19tYXRjaCIsIkJpZ1N0cmluZ1JlYWRlciIsImNhbWxfZ3JfZHVtcF9pbWFnZSIsImNhbWxfYmFfZ2V0X2dlbmVyaWMiLCJjYW1sX3VuaXhfc3RhcnR1cCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX21vdW50X2F1dG9sb2FkIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfZGl2IiwiY2FtbF9vYmpfZHVwIiwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJjYW1sX3N5c19nZXRfYXJndiIsImNhbWxfbWxfZG9tYWluX3NldF9uYW1lIiwiX25hbWUiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2dyX2NyZWF0ZV9pbWFnZSIsImNhbWxfZXBoZV9nZXRfa2V5X2NvcHkiLCJjYW1sX2xlc3N0aGFuIiwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCIsImNhbWxfYnVpbGRfc3ltYm9scyIsInN5bWIiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibmlkIiwibXVsdF9uYXQiLCJsZW4zIiwic3F1YXJlX25hdCIsImNhbWxfanNfZnJvbV9mbG9hdCIsImNhbWxfZmxvYXRhcnJheV9jcmVhdGUiLCJjYW1sX2djX3N0YXQiLCJjYW1sX2dldF9tYWpvcl9jcmVkaXQiLCJjYW1sX3N5c19tb2RpZnlfYXJndiIsImNhbWxfbWV0aG9kX2NhY2hlIiwiY2FtbF9nZXRfcHVibGljX21ldGhvZCIsIm9iaiIsImNhY2hlaWQiLCJtZXRocyIsImxpIiwiY2FtbF9qc19nZXRfY29uc29sZSIsImNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImNoYW5uZWwiLCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkiLCJjYW1sX3JvdW5kX2Zsb2F0IiwiY2FtbF9vanNfbmV3X2FyciIsIkYiLCJjb21wbGVtZW50X25hdCIsImNhbWxfZG9tYWluX2RscyIsImNhbWxfZG9tYWluX2Rsc19zZXQiLCJjYW1sX29ial90YWciLCJjYW1sX2xhenlfcmVhZF9yZXN1bHQiLCJjYW1sX2pzX3JlZ2V4cHMiLCJjYW1sX2pzX2h0bWxfZXNjYXBlIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2dyX3N0YXRlX3NldCIsImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QiLCJhcml0eSIsImNhbWxfZ2NfbWlub3Jfd29yZHMiLCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayIsImxhbmRfZGlnaXRfbmF0IiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfYmFfc2V0XzMiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2dldF9tYWpvcl9idWNrZXQiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsInNldF9kaWdpdF9uYXRfbmF0aXZlIiwiZGlnaXQiLCJjYW1sX3N0cmluZ19zZXQ2NCIsImNhbWxfZ3Jfc3RhdGVfY3JlYXRlIiwiY2FudmFzIiwiY29udGV4dCIsImNhbWxfZ3JfZHJhd19hcmMiLCJjYW1sX2JhX21hcF9maWxlIiwidmZkIiwic2hhcmVkIiwiY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZSIsImFyZ24iLCJjYW1sX2JhX2NyZWF0ZV9mcm9tIiwiZGF0YTEiLCJkYXRhMiIsImpzdHlwIiwiY2FtbF90YW5oX2Zsb2F0IiwiY2FtbF9ncl9kcmF3X3N0ciIsImR4IiwiY2FtbF9ncl9kcmF3X3N0cmluZyIsImNhbWxfZ3JfZHJhd19jaGFyIiwiY2FtbF91bm1vdW50IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmciLCJjYW1sX21sX3Bvc19pbl82NCIsImNhbWxfZ3JfZHJhd19pbWFnZSIsImltYWdlIiwiY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUiLCJfY2hhbm5lbCIsImNhbWxfc3RyaW5nX3NldCIsImNhbWxfc3lzX3JtZGlyIiwiY2FtbF91bml4X3N5bWxpbmsiLCJzcmNfcm9vdCIsImRzdF9yb290IiwiY2FtbF9tbF9wb3Nfb3V0IiwiY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCIsImNhbWxfYnl0ZXNfbm90ZXF1YWwiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9iYV9jcmVhdGUiLCJkaW1zX21sIiwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIiwiY2FtbF9mbWFfZmxvYXQiLCJTUExJVCIsIk1JTl9WQUxVRSIsIkVQU0lMT04iLCJDIiwiQSIsIkIiLCJtdWx0aXBseSIsImF0IiwiYWhpIiwiYWxvIiwiYmhpIiwiYmxvIiwiYWRqdXN0Iiwic2NhbGUiLCJ4cyIsInlzIiwienMiLCJ4eSIsInUiLCJjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCIsImNhbWxfYnN3YXAxNiIsImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlIiwiY2FtbF9maW5hbF9yZWdpc3RlciIsImNhbWxfZ3JfZHJhd19yZWN0IiwiY2FtbF9zdHJpbmdfZ2V0MTYiLCJjYW1sX2pzX3RvX2ludDMyIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX21sX291dHB1dF9iaWdhcnJheSIsImNhbWxfYmFfZ2V0XzMiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlIiwiY2FtbF9lcGhlX2JsaXRfa2V5IiwiY2FtbF9pbml0aWFsX3RpbWUiLCJjYW1sX3N5c190aW1lIiwiY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfdW5peF9nZXRwd3VpZCIsImNhbWxfaGFzaCIsImxpbWl0Iiwic2VlZCIsInF1ZXVlIiwicmQiLCJ3ciIsImNhbWxfZG9tYWluX2Rsc19nZXQiLCJjYW1sX2J5dGVzX2dldDMyIiwiY2FtbF9mcmV4cF9mbG9hdCIsIm5lZyIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9tbF9wb3Nfb3V0XzY0IiwiY2FtbF91bml4X2ZpbmRjbG9zZSIsImNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93IiwiY2FtbF9mbG9hdGFycmF5X2JsaXQiLCJjYW1sX2dldF9taW5vcl9mcmVlIiwiY2FtbF9zZXRfc3RhdGljX2VudiIsImNhbWxfYmFfY2hhbmdlX2xheW91dCIsImNhbWxfanNfbmV3IiwiY2FtbF9ncl9jdXJyZW50X3kiLCJjYW1sX2Zvcm1hdF9pbnQiLCJqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkIiwiY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXyIsImNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbiIsImNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGMiLCJodmFsIiwiaGV4biIsImhlZmYiLCJjYW1sX29ial90cnVuY2F0ZSIsImNhbWxfanNfdG9fc3RyaW5nIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJidWZmZXJlZCIsImNhbWxfYXJyYXlfY29uY2F0IiwiY2FtbF9ncl9vcGVuX2dyYXBoIiwiaW5mbyIsInNwZWNzIiwic3RhdHVzIiwid2luIiwiZG9jIiwidGl0bGUiLCJib2R5IiwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3QiLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX2V2ZW50bG9nX3BhdXNlIiwiY2FtbF9tZW1wcm9mX3N0b3AiLCJjYW1sX2dyZWF0ZXJlcXVhbCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlIiwiY2FtbF9sb2cxcF9mbG9hdCIsImNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3IiLCJjYW1sX2xhenlfbWFrZV9mb3J3YXJkIiwibG9yX2RpZ2l0X25hdCIsImNhbWxfZ3JfYmxpdF9pbWFnZSIsImltMiIsImNhbWxfZ3Jfd2luZG93X2lkIiwiY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWQiLCJjYW1sX2pzX29uX2llIiwidWEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0IiwiY2FtbF9iYV9sYXlvdXQiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImNhbWxfYXJyYXlfc2V0IiwibmV3dmFsIiwiY2FtbF9hbGxvY19zdGFjayIsImh2IiwiaHgiLCJoZiIsImNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsIiwic2V0X2RpZ2l0X25hdCIsImNhbWxfYnl0ZXNfc2V0MTYiLCJjYW1sX2dyX2RvY19vZl9zdGF0ZSIsImNhbWxfbWxfb3V0cHV0X2ludCIsImNhbWxfb2JqX3dpdGhfdGFnIiwiY2FtbF9tbF9jaGFubmVsX3NpemUiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0Iiwic3R5bGUiLCJleHBfc2lnbiIsInNpZ25fc3RyIiwiY3N0IiwieF9zdHIiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUiLCJldmVudCIsImV2ZW50X2NvbnRlbnQiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX3VuaXhfcmVhZGxpbmsiLCJjYW1sX2JhY2t0cmFjZV9zdGF0dXMiLCJjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9iYV9maWxsIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9nY19nZXQiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX3N0cmluZ19zZXQzMiIsImNhbWxfcGFyc2VfZW5naW5lIiwidGFibGVzIiwiZW52IiwiRVJSQ09ERSIsImxvb3AiLCJ0ZXN0c2hpZnQiLCJzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJ0YmxfbmFtZXNfY29uc3QiLCJ0YmxfbmFtZXNfYmxvY2siLCJsb2ciLCJ0b2tlbl9uYW1lIiwibmFtZXMiLCJwcmludF90b2tlbiIsInRvayIsInRva2VuIiwibjEiLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfbWxfcnVudGltZV9ldmVudHNfc3RhcnQiLCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2dyX21ha2VfaW1hZ2UiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImVyYXNlX3JlbCIsInJlc3QiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJyZXN0JDMiLCJyZXN0JDQiLCJyZXN0JDUiLCJyZXN0JDYiLCJyZXN0JDciLCJ0eSIsInJlc3QkOCIsInR5MSIsInJlc3QkOSIsInJlc3QkMTAiLCJyZXN0JDExIiwicmVzdCQxMiIsInJlc3QkMTMiLCJjb25jYXRfZm10dHkiLCJmbXR0eTEiLCJmbXR0eTIiLCJ0eTIiLCJjb25jYXRfZm10IiwiZm10MSIsImZtdDIiLCJwYWQiLCJwYWQkMCIsInByZWMiLCJwYWQkMSIsImljb252IiwicHJlYyQwIiwicGFkJDIiLCJpY29udiQwIiwicHJlYyQxIiwicGFkJDMiLCJpY29udiQxIiwicHJlYyQyIiwicGFkJDQiLCJpY29udiQyIiwicHJlYyQzIiwicGFkJDUiLCJmY29udiIsInBhZCQ2Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJwYWQkNyIsImZtdHR5JDAiLCJwYWQkOCIsInJlc3QkMTQiLCJyZXN0JDE1IiwicmVzdCQxNiIsImZtdGluZ19saXQiLCJyZXN0JDE3IiwiZm10aW5nX2dlbiIsInJlc3QkMTgiLCJyZXN0JDE5IiwiY2hhcl9zZXQiLCJ3aWR0aF9vcHQiLCJyZXN0JDIwIiwiY291bnRlciIsInJlc3QkMjEiLCJyZXN0JDIyIiwiaWduIiwicmVzdCQyMyIsImYiLCJhcml0eSIsIm1ha2UiLCJ2IiwiZ2V0IiwiciIsInNldCIsImV4Y2hhbmdlIiwiY3VyIiwiY29tcGFyZV9hbmRfc2V0Iiwic2VlbiIsImZldGNoX2FuZF9hZGQiLCJuIiwiaW5jciIsImRlY3IiLCJmYWlsd2l0aCIsInMiLCJpbnZhbGlkX2FyZyIsIm1pbiIsIngiLCJ5IiwibWF4IiwiYWJzIiwibG5vdCIsImluZmluaXR5IiwibmVnX2luZmluaXR5IiwibmFuIiwibWF4X2Zsb2F0IiwibWluX2Zsb2F0IiwiZXBzaWxvbl9mbG9hdCIsIm1heF9pbnQiLCJtaW5faW50Iiwic3ltYm9sIiwiczEiLCJzMiIsImwxIiwibDIiLCJjaGFyX29mX2ludCIsInN0cmluZ19vZl9ib29sIiwiYiIsImJvb2xfb2Zfc3RyaW5nIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJsIiwiaSIsImkkMCIsInN0cmluZ19vZl9mbG9hdCIsImZsb2F0X29mX3N0cmluZ19vcHQiLCJzeW1ib2wkMCIsInRsIiwiaGQiLCJzdGRpbiIsInN0ZG91dCIsInN0ZGVyciIsIm9wZW5fb3V0X2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX291dCIsIm9wZW5fb3V0X2JpbiIsImZsdXNoX2FsbCIsImEiLCJvdXRwdXRfYnl0ZXMiLCJvYyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXQiLCJvZnMiLCJsZW4iLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X3ZhbHVlIiwiY2hhbiIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsIm9wZW5faW5fZ2VuIiwib3Blbl9pbiIsIm9wZW5faW5fYmluIiwiaW5wdXQiLCJpYyIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJvZnMkMCIsImxlbiQwIiwibGVuJDEiLCJvZnMkMSIsInJlYWxseV9pbnB1dCIsInJlYWxseV9pbnB1dF9zdHJpbmciLCJpbnB1dF9saW5lIiwiYnVpbGRfcmVzdWx0IiwiYnVmIiwicG9zJDAiLCJhY2N1IiwiYmVnIiwiYWNjdSQwIiwicmVzIiwiY2xvc2VfaW5fbm9lcnIiLCJwcmludF9jaGFyIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfYnl0ZXMiLCJwcmludF9pbnQiLCJwcmludF9mbG9hdCIsInByaW50X2VuZGxpbmUiLCJwcmludF9uZXdsaW5lIiwicHJlcnJfY2hhciIsInByZXJyX3N0cmluZyIsInByZXJyX2J5dGVzIiwicHJlcnJfaW50IiwicHJlcnJfZmxvYXQiLCJwcmVycl9lbmRsaW5lIiwicHJlcnJfbmV3bGluZSIsInJlYWRfbGluZSIsInJlYWRfaW50IiwicmVhZF9pbnRfb3B0IiwicmVhZF9mbG9hdCIsInJlYWRfZmxvYXRfb3B0Iiwic3RyaW5nX29mX2Zvcm1hdCIsInN5bWJvbCQxIiwic3RyMiIsInN0cjEiLCJleGl0X2Z1bmN0aW9uIiwiYXRfZXhpdCIsImZfeWV0X3RvX3J1biIsIm9sZF9leGl0IiwiZl95ZXRfdG9fcnVuJDAiLCJvbGRfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fYXRfZXhpdCIsImV4aXQiLCJyZXRjb2RlIiwiZmx1c2giLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJzZWVrX291dCIsInBvc19vdXQiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJzZXRfYmluYXJ5X21vZGVfb3V0IiwiaW5wdXRfY2hhciIsImlucHV0X2J5dGUiLCJpbnB1dF9iaW5hcnlfaW50IiwiaW5wdXRfdmFsdWUiLCJzZWVrX2luIiwicG9zX2luIiwiaW5fY2hhbm5lbF9sZW5ndGgiLCJjbG9zZV9pbiIsInNldF9iaW5hcnlfbW9kZV9pbiIsImVtcHR5IiwicmV0dXJuJDAiLCJjb25zIiwibmV4dCIsImFwcGVuZCIsInNlcTEiLCJzZXEyIiwibWFwIiwic2VxIiwiZmlsdGVyX21hcCIsInNlcSQwIiwiZmlsdGVyIiwiY29uY2F0IiwiZmxhdF9tYXAiLCJmb2xkX2xlZnQiLCJhY2MiLCJhY2MkMCIsImFjYyQxIiwiaXRlciIsInVuZm9sZCIsInUiLCJ1JDAiLCJub25lIiwic29tZSIsInZhbHVlIiwibyIsImRlZmF1bHQkMCIsImJpbmQiLCJqb2luIiwiZm9sZCIsImlzX25vbmUiLCJpc19zb21lIiwiZXF1YWwiLCJlcSIsIm8wIiwibzEiLCJ2MSIsInYwIiwiY29tcGFyZSIsImNtcCIsInRvX3Jlc3VsdCIsInRvX2xpc3QiLCJ0b19zZXEiLCJsZWZ0IiwicmlnaHQiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJmaW5kX2xlZnQiLCJmaW5kX3JpZ2h0IiwibWFwX2xlZnQiLCJlIiwibWFwX3JpZ2h0IiwidiQwIiwiZTEiLCJlMiIsInYyIiwidjEkMCIsInYyJDAiLCJvayIsImVycm9yIiwiZ2V0X29rIiwiZ2V0X2Vycm9yIiwibWFwX2Vycm9yIiwiaXRlcl9lcnJvciIsImlzX29rIiwiaXNfZXJyb3IiLCJyMCIsInIxIiwiZTAiLCJ0b19vcHRpb24iLCJ0b19mbG9hdCIsInRvX3N0cmluZyIsImVzY2FwZWQiLCJzJDAiLCJsb3dlcmNhc2UiLCJ1cHBlcmNhc2UiLCJsb3dlcmNhc2VfYXNjaWkiLCJ1cHBlcmNhc2VfYXNjaWkiLCJjMSIsImMyIiwiZXJyX25vX3ByZWQiLCJlcnJfbm9fc3VjYyIsImxvX2JvdW5kIiwiaGlfYm91bmQiLCJib20iLCJyZXAiLCJzdWNjIiwicHJlZCIsImlzX3ZhbGlkIiwib2ZfaW50IiwiaXNfY2hhciIsIm9mX2NoYXIiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJoYXNoIiwibGVuZ3RoIiwibCQwIiwibnRoIiwibiQwIiwibCQxIiwibiQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwiaW5pdF9hdXgiLCJyZXZfaW5pdF90aHJlc2hvbGQiLCJpbml0IiwiZmxhdHRlbiIsIm1hcGkiLCJyZXZfbWFwIiwiaXRlcmkiLCJhY2N1JDEiLCJmb2xkX3JpZ2h0IiwibWFwMiIsImEyIiwiYTEiLCJyZXZfbWFwMiIsIml0ZXIyIiwiZm9sZF9sZWZ0MiIsImZvbGRfcmlnaHQyIiwiZm9yX2FsbCIsInAiLCJleGlzdHMiLCJmb3JfYWxsMiIsImV4aXN0czIiLCJtZW0iLCJtZW1xIiwiYXNzb2MiLCJhc3NvY19vcHQiLCJhc3NxIiwiYXNzcV9vcHQiLCJtZW1fYXNzb2MiLCJtZW1fYXNzcSIsInJlbW92ZV9hc3NvYyIsInBhaXIiLCJyZW1vdmVfYXNzcSIsImZpbmQiLCJmaW5kX29wdCIsImZpbmRfbWFwIiwicmVzdWx0IiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiY29uY2F0X21hcCIsInhzIiwiZm9sZF9sZWZ0X21hcCIsImxfYWNjdSIsIngkMCIsInBhcnRpdGlvbiIsInllcyIsIm5vIiwicGFydGl0aW9uX21hcCIsInNwbGl0IiwicnkiLCJyeCIsImNvbWJpbmUiLCJtZXJnZSIsInQyIiwiaDIiLCJ0MSIsImgxIiwic3RhYmxlX3NvcnQiLCJzb3J0IiwieDIiLCJ4MSIsInRsJDEiLCJ4MyIsIngyJDAiLCJ4MSQwIiwibjEiLCJuMiIsInJldl9zb3J0IiwidGwkMCIsInNvcnRfdW5pcSIsImMkMCIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImFjY3UkMiIsImNvbXBhcmVfbGVuZ3RocyIsImNvbXBhcmVfbGVuZ3RoX3dpdGgiLCJhdXgiLCJ0YWlsIiwib2Zfc2VxIiwiZGlyZWN0IiwiZGVwdGgiLCJ6ZXJvIiwib25lIiwibWludXNfb25lIiwibG9nbm90IiwiY29weSIsIm9mX3N0cmluZyIsInN1YiIsInN1Yl9zdHJpbmciLCJleHRlbmQiLCJkc3RvZmYiLCJzcmNvZmYiLCJjcHlsZW4iLCJmaWxsIiwiYmxpdCIsIm9mczEiLCJvZnMyIiwiYmxpdF9zdHJpbmciLCJzZXAiLCJzZXBsZW4iLCJkc3QiLCJwb3MiLCJoZCQwIiwiY2F0IiwiaXNfc3BhY2UiLCJ0cmltIiwiaiIsImFwcGx5MSIsImNhcGl0YWxpemVfYXNjaWkiLCJ1bmNhcGl0YWxpemVfYXNjaWkiLCJzdGFydHNfd2l0aCIsInByZWZpeCIsImxlbl9zIiwibGVuX3ByZSIsImVuZHNfd2l0aCIsInN1ZmZpeCIsImxlbl9zdWYiLCJkaWZmIiwiaW5kZXhfcmVjIiwibGltIiwiaSQxIiwiaW5kZXgiLCJpbmRleF9yZWNfb3B0IiwiaW5kZXhfb3B0IiwiaW5kZXhfZnJvbSIsImluZGV4X2Zyb21fb3B0IiwicmluZGV4X3JlYyIsInJpbmRleCIsInJpbmRleF9mcm9tIiwicmluZGV4X3JlY19vcHQiLCJyaW5kZXhfb3B0IiwicmluZGV4X2Zyb21fb3B0IiwiY29udGFpbnNfZnJvbSIsImNvbnRhaW5zIiwicmNvbnRhaW5zX2Zyb20iLCJzcGxpdF9vbl9jaGFyIiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsInRvX3NlcWkiLCJuZXdfbGVuIiwibmV3X2J1ZiIsImdldF9pbnQ4IiwiZ2V0X3VpbnQxNl9sZSIsImdldF91aW50MTZfYmUiLCJnZXRfaW50MTZfbmUiLCJnZXRfaW50MTZfbGUiLCJnZXRfaW50MTZfYmUiLCJnZXRfaW50MzJfbGUiLCJnZXRfaW50MzJfYmUiLCJnZXRfaW50NjRfbGUiLCJnZXRfaW50NjRfYmUiLCJzZXRfaW50MTZfbGUiLCJzZXRfaW50MTZfYmUiLCJzZXRfaW50MzJfbGUiLCJzZXRfaW50MzJfYmUiLCJzZXRfaW50NjRfbGUiLCJzZXRfaW50NjRfYmUiLCJzZXRfdWludDgiLCJzZXRfdWludDE2X25lIiwiYnRzIiwiYm9zIiwib2ZfYnl0ZXMiLCJ0b19ieXRlcyIsImciLCJ0b19idWZmZXIiLCJidWZmIiwiZmxhZ3MiLCJoZWFkZXJfc2l6ZSIsImRhdGFfc2l6ZSIsInRvdGFsX3NpemUiLCJmcm9tX2J5dGVzIiwiZnJvbV9zdHJpbmciLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJtYXJzaGFsIiwib2JqIiwidW5tYXJzaGFsIiwiY3VzdG9tX3RhZyIsImZpcnN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3RvciIsImxhc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yXyIsImxhenlfdGFnIiwiY2xvc3VyZV90YWciLCJvYmplY3RfdGFnIiwiaW5maXhfdGFnIiwiZm9yd2FyZF90YWciLCJub19zY2FuX3RhZyIsImFic3RyYWN0X3RhZyIsInN0cmluZ190YWciLCJkb3VibGVfdGFnIiwiZG91YmxlX2FycmF5X3RhZyIsImludF90YWciLCJvdXRfb2ZfaGVhcF90YWciLCJ1bmFsaWduZWRfdGFnIiwiaW5mbyIsInN0YXJ0X2VudiIsIm9mX3ZhbCIsInNsb3QiLCJpZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImV4dGVuc2lvbl9uYW1lIiwiZXh0ZW5zaW9uX2lkIiwibWF4X2VwaGVfbGVuZ3RoIiwiY3JlYXRlIiwicmFpc2VfaWZfaW52YWxpZF9vZmZzZXQiLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzIiLCJtYWtlX2Zsb2F0IiwibWFrZV9tYXRyaXgiLCJzeCIsInN5IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJ0Iiwib2ZfbGlzdCIsImlucHV0X2FycmF5IiwiZWx0Iiwib3V0cHV0X2FycmF5IiwiZWx0JDAiLCJhY2MkMiIsImIwIiwiYTAiLCJiaSIsImFpIiwibmEiLCJuYiIsIm1heHNvbiIsImkzMSIsImkkNiIsImUkMSIsImkkNCIsImUkMCIsImkkNSIsImokMCIsImkkMiIsImkkMyIsImZhdGhlciIsInNyYzFvZnMiLCJzcmMxbGVuIiwic3JjMiIsInNyYzJvZnMiLCJzcmMybGVuIiwiZHN0b2ZzIiwic3JjMXIiLCJzcmMyciIsInMyJDEiLCJzMSQxIiwiaTEiLCJpMiIsImQiLCJpMiQwIiwiZCQwIiwiczIkMCIsImkxJDAiLCJkJDEiLCJzMSQwIiwiaXNvcnR0byIsInNyY29mcyIsInNvcnR0byIsImlzX2Zpbml0ZSIsImlzX2luZmluaXRlIiwiaXNfbmFuIiwiZXBzaWxvbiIsIm9mX3N0cmluZ19vcHQiLCJwaSIsImlzX2ludGVnZXIiLCJtaW5fbWF4IiwibWluX251bSIsIm1heF9udW0iLCJtaW5fbWF4X251bSIsInVuc2FmZV9maWxsIiwiY2hlY2siLCJobGVuIiwic3JjIiwic29mcyIsImRvZnMiLCJoIiwibWVtX2llZWUiLCJtYXBfdG9fYXJyYXkiLCJtYXBfZnJvbV9hcnJheSIsIm1heF9pbnQkMCIsInVuc2lnbmVkX3RvX2ludCIsInVuc2lnbmVkX2NvbXBhcmUiLCJtIiwidW5zaWduZWRfZGl2IiwicSIsInVuc2lnbmVkX3JlbSIsInNpemUiLCJkdW1teV9wb3MiLCJ6ZXJvX3BvcyIsImVuZ2luZSIsInRibCIsInN0YXRlIiwibmV3X2VuZ2luZSIsImZyb21fZnVuY3Rpb24iLCJvcHQiLCJyZWFkX2Z1biIsInN0aCIsIndpdGhfcG9zaXRpb25zIiwiYXV4X2J1ZmZlciIsImxleGJ1ZiIsInJlYWQiLCJuZXdsZW4iLCJuZXdidWYiLCJmcm9tX2NoYW5uZWwiLCJzZXRfcG9zaXRpb24iLCJwb3NpdGlvbiIsInNldF9maWxlbmFtZSIsImZuYW1lIiwibGV4ZW1lIiwic3ViX2xleGVtZSIsInN1Yl9sZXhlbWVfb3B0Iiwic3ViX2xleGVtZV9jaGFyIiwic3ViX2xleGVtZV9jaGFyX29wdCIsImxleGVtZV9jaGFyIiwibGV4ZW1lX3N0YXJ0IiwibGV4ZW1lX2VuZCIsImxleGVtZV9zdGFydF9wIiwibGV4ZW1lX2VuZF9wIiwibmV3X2xpbmUiLCJsY3AiLCJmbHVzaF9pbnB1dCIsImVudiIsImdyb3dfc3RhY2tzIiwib2xkc2l6ZSIsIm5ld3NpemUiLCJuZXdfcyIsIm5ld192IiwibmV3X3N0YXJ0IiwibmV3X2VuZCIsImNsZWFyX3BhcnNlciIsImN1cnJlbnRfbG9va2FoZWFkX2Z1biIsInl5cGFyc2UiLCJ0YWJsZXMiLCJzdGFydCIsImxleGVyIiwiaW5pdF9hc3AiLCJpbml0X3NwIiwiaW5pdF9zdGFja2Jhc2UiLCJpbml0X3N0YXRlIiwiaW5pdF9jdXJyX2NoYXIiLCJpbml0X2x2YWwiLCJpbml0X2VycmZsYWciLCJjbWQiLCJhcmciLCJhcmckMCIsImFjdGlvbiIsImV4biQwIiwiZXhuIiwiY3Vycl9jaGFyIiwidG9rIiwicGVla192YWwiLCJzeW1ib2xfc3RhcnRfcG9zIiwic3QiLCJlbiIsInN5bWJvbF9lbmRfcG9zIiwicmhzX3N0YXJ0X3BvcyIsInJoc19lbmRfcG9zIiwic3ltYm9sX3N0YXJ0Iiwic3ltYm9sX2VuZCIsInJoc19zdGFydCIsInJoc19lbmQiLCJpc19jdXJyZW50X2xvb2thaGVhZCIsInBhcnNlX2Vycm9yIiwiaGVpZ2h0IiwiaGwiLCJoJDAiLCJociIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiIsImxybCIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiIsInJsbCIsImFkZCIsInNpbmdsZXRvbiIsImFkZF9taW5fZWxlbWVudCIsImFkZF9tYXhfZWxlbWVudCIsInJoIiwibGgiLCJtaW5fZWx0IiwibWluX2VsdF9vcHQiLCJtYXhfZWx0IiwibWF4X2VsdF9vcHQiLCJyZW1vdmVfbWluX2VsdCIsInIkMCIsInByZXMiLCJwcmVzJDAiLCJpc19lbXB0eSIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJ2MCQxIiwidjAkMCIsImZpbmRfZmlyc3Rfb3B0IiwiZmluZF9sYXN0IiwiZmluZF9sYXN0X29wdCIsInRyeV9qb2luIiwidiQxIiwieDAiLCJsJDMiLCJsJDQiLCJ4MCQwIiwibCQ1IiwieDAkMSIsIm5sIiwibWlkIiwibCQyIiwieDQiLCJhZGRfc2VxIiwic2VxX29mX2VudW0iLCJzbm9jX2VudW0iLCJyZXZfc2VxX29mX2VudW0iLCJ0b19yZXZfc2VxIiwidG9fc2VxX2Zyb20iLCJsb3ciLCJsZCIsImxyZCIsInJkIiwicmxkIiwiZGF0YSIsImQwJDEiLCJkMCIsImQwJDAiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjbGVhciIsInB1c2giLCJwb3AiLCJwb3Bfb3B0IiwidG9wIiwidG9wX29wdCIsImNlbGwiLCJtYXRjaCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlIiwidGFrZV9vcHQiLCJjZWxsJDAiLCJxX3JlcyIsInByZXYiLCJwcmV2JDAiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJyYWlzZV91bmRlZmluZWQiLCJmb3JjZV9sYXp5X2Jsb2NrIiwiYmxrIiwiY2xvc3VyZSIsImZvcmNlX3ZhbF9sYXp5X2Jsb2NrIiwiZm9yY2UiLCJsenYiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwibWFwX3ZhbCIsImNvdW50IiwiZmlsbF9idWZmIiwiZ2V0X2RhdGEiLCJkMTEiLCJhJDAiLCJhJDEiLCJwZWVrX2RhdGEiLCJqdW5rX2RhdGEiLCJqdW5rIiwibmdldF9kYXRhIiwiYWwiLCJucGVlayIsInN0cm0iLCJmcm9tIiwib2ZfY2hhbm5lbCIsImlhcHAiLCJpY29ucyIsImlzaW5nIiwibGFwcCIsImxjb25zIiwibHNpbmciLCJzZW1wdHkiLCJzbGF6eSIsImR1bXAiLCJkdW1wX2RhdGEiLCJjb250ZW50cyIsInJlc2V0IiwicmVzaXplIiwibW9yZSIsIm9sZF9wb3MiLCJvbGRfbGVuIiwibmV3X2J1ZmZlciIsImFkZF9jaGFyIiwiYWRkX3V0Zl84X3VjaGFyIiwicG9zJDEiLCJhZGRfdXRmXzE2YmVfdWNoYXIiLCJ1JDEiLCJoaSIsImxvIiwiYWRkX3V0Zl8xNmxlX3VjaGFyIiwiYWRkX3N1YnN0cmluZyIsIm9mZnNldCIsIm5ld19wb3NpdGlvbiIsImFkZF9zdWJieXRlcyIsImFkZF9zdHJpbmciLCJhZGRfYnl0ZXMiLCJhZGRfYnVmZmVyIiwiYnMiLCJhZGRfY2hhbm5lbCIsInRvX3JlYWQkMSIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQwIiwic3RhcnQkMCIsIm9wZW5pbmciLCJsaW0kMCIsInN0b3AkMCIsImskMiIsImNsb3NpbmciLCJzdG9wIiwiayQwIiwiayQxIiwibmV4dF9pIiwiaWRlbnQiLCJpJDciLCJpJDgiLCJ0cnVuY2F0ZSIsImFkZF9pbnQ4IiwiYWRkX2ludDE2X25lIiwiYWRkX2ludDMyX25lIiwiYWRkX2ludDY0X25lIiwiYWRkX2ludDE2X2xlIiwiYWRkX2ludDE2X2JlIiwiYWRkX2ludDMyX2xlIiwiYWRkX2ludDMyX2JlIiwiYWRkX2ludDY0X2xlIiwiYWRkX2ludDY0X2JlIiwic3ViX2Zvcm1hdCIsImZvcm1hdHRpbmdfbGl0IiwiY3JlYXRlX2NoYXJfc2V0IiwiYWRkX2luX2NoYXJfc2V0Iiwic3RyX2luZCIsIm1hc2siLCJmcmVlemVfY2hhcl9zZXQiLCJyZXZfY2hhcl9zZXQiLCJjaGFyX3NldCQwIiwiaXNfaW5fY2hhcl9zZXQiLCJwYWRfb2ZfcGFkX29wdCIsInBhZF9vcHQiLCJ3aWR0aCIsInBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCIsImZtdCIsInBhZF9vcHQkMCIsInBhZF9vcHQkMSIsInBhZF9vcHQkMiIsInBhZF9vcHQkMyIsInBhZF9vcHQkNCIsInByZWNfb3B0IiwicGFkX29wdCQ1IiwibmRlYyIsInBhZF9vcHQkNiIsInBhZF9vcHQkNyIsInBhZF9vcHQkOCIsImRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIiwiYnVmZmVyX2NyZWF0ZSIsImluaXRfc2l6ZSIsImJ1ZmZlcl9jaGVja19zaXplIiwib3ZlcmhlYWQiLCJtaW5fbGVuIiwibmV3X3N0ciIsImJ1ZmZlcl9hZGRfY2hhciIsImJ1ZmZlcl9hZGRfc3RyaW5nIiwic3RyX2xlbiIsImJ1ZmZlcl9jb250ZW50cyIsImNoYXJfb2ZfaWNvbnYiLCJjaGFyX29mX2Zjb252IiwiY0YiLCJicHJpbnRfcGFkdHkiLCJwYWR0eSIsImJwcmludF9pZ25vcmVkX2ZsYWciLCJpZ25fZmxhZyIsImJwcmludF9wYWRfb3B0IiwiYnByaW50X3BhZGRpbmciLCJwYWR0eSQwIiwiYnByaW50X3ByZWNpc2lvbiIsImJwcmludF9pY29udl9mbGFnIiwiYnByaW50X2FsdGludF9mbXQiLCJicHJpbnRfZmNvbnZfZmxhZyIsInN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCIsInN0ciQwIiwiYnByaW50X2NoYXJfbGl0ZXJhbCIsImJwcmludF9zdHJpbmdfbGl0ZXJhbCIsImJwcmludF9mbXR0eSIsImZtdHR5JDEiLCJmbXR0eSQyIiwiZm10dHkkMyIsImZtdHR5JDQiLCJmbXR0eSQ1IiwiZm10dHkkNiIsImZtdHR5JDciLCJmbXR0eSQ4IiwiZm10dHkkOSIsInN1Yl9mbXR0eSIsImZtdHR5JDEwIiwic3ViX2ZtdHR5JDAiLCJmbXR0eSQxMSIsImZtdHR5JDEyIiwiZm10dHkkMTMiLCJmbXR0eSQxNCIsImZtdHR5JDE1IiwiaW50X29mX2N1c3RvbV9hcml0eSIsInN0cmluZ19vZl9mbXQiLCJmbXRpdGVyIiwiZm10JDAiLCJpZ25fZmxhZyQwIiwic3RyJDEiLCJzZXQkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJmbXR0eV9yZWxfZGV0IiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJ0cmFucyIsImpkIiwiZGoiLCJnYSIsImFnIiwiZGUkOSIsImVkJDkiLCJhZiQ5IiwiZmEkOSIsImRlJDEwIiwiZWQkMTAiLCJhZiQxMCIsImZhJDEwIiwiZGUkMTEiLCJlZCQxMSIsImFmJDExIiwiZmEkMTEiLCJkZSQxMiIsImVkJDEyIiwiYWYkMTIiLCJmYSQxMiIsImRlJDEzIiwiZWQkMTMiLCJhZiQxMyIsImZhJDEzIiwicmVzdDEiLCJyZXN0MiIsInJlc3QxJDAiLCJyZXN0MiQwIiwicmVzdDEkMSIsInJlc3QyJDEiLCJyZXN0MSQyIiwicmVzdDIkMiIsInJlc3QxJDMiLCJyZXN0MiQzIiwicmVzdDEkNCIsInJlc3QyJDQiLCJyZXN0MSQ1IiwicmVzdDIkNSIsInJlc3QxJDYiLCJyZXN0MiQ2IiwicmVzdDEkNyIsInR5MSQwIiwicmVzdDIkNyIsInR5MiQwIiwicmVzdDEkOCIsInR5MTIiLCJ0eTExIiwicmVzdDIkOCIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsInJlc3QxJDkiLCJyZXN0MiQ5IiwicmVzdDEkMTAiLCJyZXN0MiQxMCIsInJlc3QxJDExIiwicmVzdDIkMTEiLCJyZXN0MSQxMiIsInJlc3QyJDEyIiwicmVzdDEkMTMiLCJyZXN0MiQxMyIsImZtdHR5X29mX2ZtdCIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJ0eV9yZXN0IiwicHJlY190eSIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsInR5X3Jlc3QkMCIsInByZWNfdHkkMCIsInR5X3Jlc3QkMSIsInByZWNfdHkkMSIsInR5X3Jlc3QkMiIsInByZWNfdHkkMiIsInR5X3Jlc3QkMyIsInByZWNfdHkkMyIsInR5JDAiLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5X29mX2N1c3RvbSIsImFyaXR5JDAiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJmbXR0eTAiLCJmbXR0eV9yZXN0IiwiZm10X3Jlc3QiLCJmbXR0eV9yZXN0JDAiLCJmbXRfcmVzdCQwIiwiZm10X3Jlc3QkMSIsImZtdHR5X3Jlc3QkMSIsImZtdCQyIiwiZm10X3Jlc3QkMiIsImZtdHR5X3Jlc3QkMiIsImZtdCQzIiwiZm10X3Jlc3QkMyIsImZtdHR5X3Jlc3QkMyIsImZtdCQ0IiwiZm10X3Jlc3QkNCIsImZtdHR5X3Jlc3QkNCIsImZtdCQ1IiwiZm10X3Jlc3QkNSIsImZtdHR5X3Jlc3QkNSIsInByZWMkNCIsImZtdCQ2IiwiZm10X3Jlc3QkNiIsInByZWMkNSIsInBhZCQ5IiwicGFkJDEwIiwiZm10dHlfcmVzdCQ2IiwicHJlYyQ2IiwiZm10JDciLCJmbXRfcmVzdCQ3IiwicHJlYyQ3IiwicGFkJDExIiwicGFkJDEyIiwiZm10dHlfcmVzdCQ3IiwicHJlYyQ4IiwiZm10JDgiLCJmbXRfcmVzdCQ4IiwicGFkJDEzIiwicGFkJDE0IiwiZm10dHlfcmVzdCQ4IiwiZm10JDkiLCJmbXRfcmVzdCQ5IiwiZm10JDEwIiwiZm10X3Jlc3QkMTAiLCJmbXQkMTEiLCJmbXRfcmVzdCQxMSIsImZtdCQxMiIsImZtdHR5X3Jlc3QkOSIsImZtdF9yZXN0JDEyIiwiZm10JDEzIiwiZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eTEiLCJmbXRfcmVzdCQxMyIsInN1Yl9mbXR0eSQxIiwiZm10JDE0IiwiZm10dHlfcmVzdCQxMSIsImZtdF9yZXN0JDE0IiwiZm10JDE1IiwiZm10dHlfcmVzdCQxMiIsImZtdF9yZXN0JDE1IiwiZm10JDE2IiwiZm10X3Jlc3QkMTYiLCJmbXR0eSQxNiIsImZtdCQxNyIsImZtdF9yZXN0JDE3IiwiZm10dHkzIiwiZm10MyIsImZtdDEkMCIsImZtdHR5MiQwIiwiZm10MiQwIiwiZm10dHkzJDAiLCJmbXQzJDAiLCJmbXR0eV9yZXN0JDEzIiwiZm10X3Jlc3QkMTgiLCJmbXR0eSQxNyIsImZtdCQxOCIsImZtdHR5X3Jlc3QkMTQiLCJmbXRfcmVzdCQxOSIsImZtdHR5JDE4IiwiZm10JDE5IiwiZm10dHlfcmVzdCQxNSIsImZtdF9yZXN0JDIwIiwiZm10dHkkMTkiLCJmbXQkMjAiLCJ0eXBlX2lnbm9yZWRfcGFyYW1fb25lIiwic3ViX2ZtdHR5JDIiLCJzdWJfZm10dHkkMyIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsImZtdHR5JDIxIiwiZm10JDIyIiwic3ViX2ZtdHR5JDQiLCJmbXR0eV9yZXN0JDE2IiwiZm10dHkkMjAiLCJmbXQkMjEiLCJzdWJfZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0JDAiLCJzdWJfZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkNSIsInN1Yl9mbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkOCIsInN1Yl9mbXR0eV9yZXN0JDkiLCJzdWJfZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDExIiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJzdWJfZm10dHlfcmVzdCQxMyIsInN1Yl9mbXR0eV9yZXN0JDE0Iiwic3ViMl9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE1Iiwic3ViMl9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTYiLCJzdWIyX2ZtdHR5JDEiLCJzdWIxX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTciLCJzdWIyX2ZtdHR5JDIiLCJzdWIxX2ZtdHR5JDAiLCJzdWJfZm10dHlfcmVzdCQxOCIsInN1Yl9mbXR0eV9yZXN0JDE5Iiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJzdWJfZm10dHlfcmVzdCQyMSIsInN1Yl9mbXR0eV9yZXN0JDIyIiwic3ViX2ZtdHR5X3Jlc3QkMjMiLCJzdWJfZm10dHlfcmVzdCQyNCIsInN1Yl9mbXR0eV9yZXN0JDI1Iiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImthY2MiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJrb2MiLCJyZXN0JDI0IiwicmVzdCQyNSIsInJlc3QkMjYiLCJyZXN0JDI3IiwicmVzdCQyOCIsInJlc3QkMjkiLCJmbl9vZl9jdXN0b21fYXJpdHkkMCIsImZuX29mX2N1c3RvbV9hcml0eSIsIm91dHB1dF9hY2MiLCJwJDMiLCJwJDQiLCJwJDUiLCJwJDIiLCJidWZwdXRfYWNjIiwic3RycHV0X2FjYyIsImZhaWx3aXRoX21lc3NhZ2UiLCJvcGVuX2JveF9vZl9zdHJpbmciLCJpbnZhbGlkX2JveCIsInBhcnNlX3NwYWNlcyIsIndzdGFydCIsIndlbmQiLCJib3hfbmFtZSIsIm5zdGFydCIsIm5lbmQiLCJpbmRlbnQiLCJleHBfZW5kIiwiYm94X3R5cGUiLCJtYWtlX3BhZGRpbmdfZm10X2ViYiIsIm1ha2VfcGFkcHJlY19mbXRfZWJiIiwiZm10X2ViYl9vZl9zdHJpbmciLCJsZWdhY3lfYmVoYXZpb3IiLCJmbGFnIiwibGVnYWN5X2JlaGF2aW9yJDAiLCJpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIiwidW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IiwiZW5kX2luZCIsImludmFsaWRfZm9ybWF0X3dpdGhvdXQiLCJleHBlY3RlZF9jaGFyYWN0ZXIiLCJleHBlY3RlZCIsInBhcnNlIiwibGl0X3N0YXJ0IiwiYWRkX2xpdGVyYWwiLCJzdHJfaW5kJDEiLCJzdHJfaW5kJDIiLCJwYXJzZV9mbGFncyIsInN0cl9pbmQkMCIsInBhcnNlX3RhZyIsInN0cl9pbmQkMyIsInN0cl9pbmRfMSIsInBhcnNlX2ludGVnZXIiLCJzdHJfaW5kXzIiLCJzdHJfaW5kXzMiLCJmb3JtYXR0aW5nX2xpdCQwIiwibmV4dF9pbmQiLCJzdHJfaW5kXzQiLCJzdHJfaW5kXzUiLCJzdHJfaW5kJDQiLCJzdHJfaW5kXzEkMCIsInN0cl9pbmRfMiQwIiwic3RyX2luZF8zJDAiLCJzJDEiLCJmb3JtYXR0aW5nX2xpdCQxIiwibmV4dF9pbmQkMCIsInBjdF9pbmQiLCJtaW51cyIsInBsdXMiLCJzcGFjZSIsInNldF9mbGFnIiwic3RyX2luZCQ1Iiwic3BhY2UkMCIsImhhc2gkMCIsInBsdXMkMCIsIm1pbnVzJDAiLCJ6ZXJvJDAiLCJpbmNvbXBhdGlibGVfZmxhZyIsInBhcnNlX3Bvc2l0aXZlIiwibmV3X2luZCIsInBhcnNlX2FmdGVyX3BhZGRpbmciLCJwYXJzZV9jb252ZXJzaW9uIiwicGFyc2VfbGl0ZXJhbCIsInBhcnNlX2FmdGVyX3ByZWNpc2lvbiIsInN5bWIkMCIsInBhcnNlX2NvbnYiLCJwYWRwcmVjIiwicGx1c191c2VkIiwiaGFzaF91c2VkIiwic3BhY2VfdXNlZCIsImlnbl91c2VkIiwicGFkX3VzZWQiLCJwcmVjX3VzZWQiLCJnZXRfcGx1cyIsImdldF9oYXNoIiwiZ2V0X3NwYWNlIiwiZ2V0X2lnbiIsImdldF9wYWQiLCJnZXRfcHJlYyIsImdldF9wYWRwcmVjIiwiZ2V0X2ludF9wYWQiLCJjaGVja19ub18wIiwib3B0X29mX3BhZCIsIndpZHRoJDEiLCJnZXRfcGFkX29wdCIsImdldF9wYWRwcmVjX29wdCIsImZtdF9yZXN1bHQiLCJzdWJfZW5kIiwic2VhcmNoX3N1YmZvcm1hdF9lbmQiLCJzdWJfZm10IiwiaWdub3JlZCQyIiwiY291bnRlciQwIiwiaWdub3JlZCQ2IiwiaWdub3JlZCQ3IiwiYWRkX3JhbmdlIiwiZmFpbF9zaW5nbGVfcGVyY2VudCIsInBhcnNlX2NoYXJfc2V0X2NvbnRlbnQiLCJwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyJDAiLCJwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIiwicmV2ZXJzZSIsImNoYXJfc2V0JDEiLCJpZ25vcmVkJDkiLCJjaGFyX2Zvcm1hdCIsImZtdF9yZXN0JDIxIiwiZm10X3Jlc3QkMjIiLCJmbXRfcmVzdCQyMyIsImlnbm9yZWQkMTAiLCJmbXRfcmVzdCQyNCIsImZtdF9yZXN0JDI1Iiwic3ViX2VuZCQwIiwic3ViX2ZtdCQwIiwiZm10X3Jlc3QkMjYiLCJpZ25vcmVkJDExIiwiaWdub3JlZCQzIiwiaWdub3JlZCQ1IiwiY29tcHV0ZV9pbnRfY29udiIsImlnbm9yZWQkOCIsInNwYWNlJDEiLCJoYXNoJDEiLCJwbHVzJDIiLCJraW5kIiwiaWdub3JlZCQ0IiwiaWdub3JlZCIsImlnbm9yZWQkMCIsImlnbm9yZWQkMSIsInBsdXMkMSIsImlnbiQwIiwiaXNfb3Blbl90YWciLCJpbmQiLCJzdWJfc3RyIiwic3ViX2Zvcm1hdCQwIiwiZm9ybWF0dGluZyQwIiwiZm9ybWF0dGluZyIsInN1Yl9lbmQkMSIsInN1Yl9lbmQkMiIsInN0cl9pbmQkNiIsInN0cl9pbmQkNyIsIm9wdGlvbiIsInN1YmZtdCIsImZvcm1hdF9vZl9zdHJpbmdfZm10dHkiLCJmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCIsImtmcHJpbnRmIiwia2JwcmludGYiLCJpa2ZwcmludGYiLCJmcHJpbnRmIiwiYnByaW50ZiIsImlmcHJpbnRmIiwiaWJwcmludGYiLCJwcmludGYiLCJlcHJpbnRmIiwia3NwcmludGYiLCJzcHJpbnRmIiwiYXNzb2MzIiwieTIiLCJ5MSIsIm1ha2Vfc3ltbGlzdCIsImhlbHBfYWN0aW9uIiwiYWRkX2hlbHAiLCJzcGVjbGlzdCIsImFkZDEiLCJhZGQyIiwidXNhZ2VfYiIsImVycm1zZyIsImRvYyIsInNwZWMiLCJrZXkiLCJ1c2FnZV9zdHJpbmciLCJ1c2FnZSIsImN1cnJlbnQiLCJwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY18iLCJhbGxvd19leHBhbmQiLCJhcmd2IiwiYW5vbmZ1biIsImluaXRwb3MiLCJjb252ZXJ0X2Vycm9yIiwicHJvZ25hbWUiLCJmb2xsb3ckMCIsImtleXdvcmQiLCJmb2xsb3ckMiIsIm5vX2FyZyIsImdldF9hcmciLCJjb25zdW1lX2FyZyIsInRyZWF0X2FjdGlvbiIsImYkMCIsImYkMSIsInIkMSIsImYkMiIsImFyZyQxIiwiciQyIiwiYXJnJDIiLCJmJDMiLCJhcmckMyIsIngkMSIsInIkMyIsImFyZyQ0IiwieCQyIiwic3BlY3MiLCJmJDQiLCJhcmckNSIsImYkNSIsImYkNiIsImYkNyIsImFyZyQ2IiwibmV3YXJnIiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMiLCJwYXJzZV9hcmd2X2R5bmFtaWMiLCJjdXJyZW50JDAiLCJwYXJzZV9hcmd2IiwibXNnJDAiLCJtc2ckMSIsInBhcnNlX2R5bmFtaWMiLCJwYXJzZV9leHBhbmQiLCJzZWNvbmRfd29yZCIsImxvb3AiLCJtYXhfYXJnX2xlbiIsImt3ZCIsInJlcGxhY2VfbGVhZGluZ190YWIiLCJhbGlnbiIsImxpbWl0IiwiY29tcGxldGVkIiwia3NkIiwiY3V0Y29sJDAiLCJzcGFjZXMkMCIsInNwZWMkMCIsImN1dGNvbCIsImt3ZF9sZW4iLCJzcGFjZXMiLCJyZWFkX2F1eCIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsIndvcmQkMCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJsb2NmbXQiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwidG9fc3RyaW5nX2RlZmF1bHQiLCJjaGFyJDAiLCJsaW5lIiwiY2hhciQxIiwibGluZSQwIiwiZmlsZSQwIiwiY2hhciQyIiwibGluZSQxIiwiZmlsZSQxIiwiY29uc3RydWN0b3IiLCJwcmludCIsImZjdCIsImNhdGNoJDAiLCJyYXdfYmFja3RyYWNlX2VudHJpZXMiLCJidCIsImNvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImZvcm1hdF9iYWNrdHJhY2Vfc2xvdCIsImlzX3JhaXNlIiwicHJpbnRfcmF3X2JhY2t0cmFjZSIsIm91dGNoYW4iLCJyYXdfYmFja3RyYWNlIiwiYmFja3RyYWNlIiwicHJpbnRfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZV90b19zdHJpbmciLCJiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSIsInBhcmFtIiwiYmFja3RyYWNlX3Nsb3RfaXNfaW5saW5lIiwiYmFja3RyYWNlX3Nsb3RfbG9jYXRpb24iLCJiYWNrdHJhY2Vfc2xvdF9kZWZuYW1lIiwiYmFja3RyYWNlX3Nsb3RzIiwiYmFja3RyYWNlX3Nsb3RzX29mX3Jhd19lbnRyeSIsImVudHJ5IiwicmF3X2JhY2t0cmFjZV9sZW5ndGgiLCJnZXRfYmFja3RyYWNlIiwicmVnaXN0ZXJfcHJpbnRlciIsImZuIiwib2xkX3ByaW50ZXJzIiwibmV3X3ByaW50ZXJzIiwiZXhuX3Nsb3QiLCJleG5fc2xvdF9pZCIsImV4bl9zbG90X25hbWUiLCJlcnJvcnMiLCJkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW4iLCJzdGF0dXMiLCJ1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsInNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsImVtcHR5X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9leGNlcHRpb24iLCJkZWJ1Z2dlcl9pbl91c2UiLCJleG4kMSIsInJhd19iYWNrdHJhY2UkMCIsImNvbnN0JDAiLCJmbGlwIiwibmVnYXRlIiwicHJvdGVjdCIsImZpbmFsbHkkMCIsIndvcmsiLCJmaW5hbGx5X25vX2V4biIsIndvcmtfZXhuJDAiLCJ3b3JrX2V4biIsIndvcmtfYnQiLCJwcmludF9zdGF0IiwiYWxsb2NhdGVkX2J5dGVzIiwibWEiLCJwcm8iLCJtaSIsImNyZWF0ZV9hbGFybSIsImRlbGV0ZV9hbGFybSIsIm51bGxfdHJhY2tlciIsInNhbXBsaW5nX3JhdGUiLCJ0cmFja2VyIiwiY2FsbHN0YWNrX3NpemUiLCJzdHJpbmciLCJieXRlcyIsInN1YnN0cmluZyIsInN1YmJ5dGVzIiwiZmlsZW5hbWUiLCJkaWdlc3QiLCJjaGFyX2hleCIsInRvX2hleCIsImZyb21faGV4IiwiZGlnaXQiLCJuZXdfc3RhdGUiLCJhc3NpZ24iLCJzdDEiLCJzdDIiLCJmdWxsX2luaXQiLCJzZWVkIiwic2VlZCQwIiwibWFrZV9zZWxmX2luaXQiLCJiaXRzIiwiY3VydmFsIiwibmV3dmFsIiwibmV3dmFsMzAiLCJpbnRhdXgiLCJpbnQkMCIsImJvdW5kIiwiZnVsbF9pbnQiLCJiMSIsImIyIiwibWF4X2ludF8zMiIsImJwb3MiLCJiMyIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJmbG9hdCQwIiwiYm9vbCIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludDMyJDAiLCJuYXRpdmVpbnQkMCIsImludDY0JDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJmdWxsX2luaXQkMCIsInNlbGZfaW5pdCIsImdldF9zdGF0ZSIsInNldF9zdGF0ZSIsIm9uZ29pbmdfdHJhdmVyc2FsIiwiZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCIsInBhcmFtcyIsInJhbmRvbWl6ZWRfZGVmYXVsdCIsInJhbmRvbWl6ZWQiLCJyYW5kb21pemUiLCJpc19yYW5kb21pemVkIiwicHJuZyIsInBvd2VyXzJfYWJvdmUiLCJpbml0aWFsX3NpemUiLCJyYW5kb20iLCJjb3B5X2J1Y2tldGxpc3QiLCJrZXkkMCIsIm5leHQkMCIsImluc2VydF9hbGxfYnVja2V0cyIsImluZGV4ZnVuIiwiaW5wbGFjZSIsIm9kYXRhIiwibmRhdGEiLCJuc2l6ZSIsIm5kYXRhX3RhaWwiLCJuaWR4IiwibWF0Y2gkMCIsIm9zaXplIiwib2xkX3RyYXYiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJiJDAiLCJidWNrZXRfbGVuZ3RoIiwic3RhdHMiLCJtYmwiLCJoaXN0byIsInRibF9kYXRhIiwiYnVjayIsImJ1Y2skMCIsImJ1Y2skMSIsInRvX3NlcV9rZXlzIiwidG9fc2VxX3ZhbHVlcyIsImtleV9pbmRleCIsImJ1Y2tldCIsImsxIiwibmV4dDEiLCJrMiIsIm5leHQyIiwiazMiLCJkMyIsIm5leHQzIiwiZmluZF9pbl9idWNrZXQiLCJyZXBsYWNlIiwicmVwbGFjZV9zZXEiLCJzeiIsImhhc2hfcGFyYW0iLCJzZWVkZWRfaGFzaCIsInJlYnVpbGQiLCJnZXRfY29weSIsImFyIiwiZW1wdHlidWNrZXQiLCJnZXRfaW5kZXgiLCJjcmVhdGUkMCIsInN6JDAiLCJzeiQxIiwiY291bnRfYnVja2V0IiwiYWRkX2F1eCIsInNldHRlciIsImJ1Y2tldCQwIiwiaGFzaGVzIiwibmV3c3oiLCJuZXdidWNrZXQkMCIsIm5ld2hhc2hlcyIsImhidWNrZXQiLCJwcmV2X2xlbiIsImxpdmUiLCJqJDIiLCJuZXdidWNrZXQiLCJvbGRsZW4iLCJuZXd0Iiwib2IiLCJvaSIsIm9oIiwib2kkMCIsIm5pIiwiZmluZF9vciIsImlmbm90Zm91bmQiLCJmaW5kX3NoYWRvdyIsImlmZm91bmQiLCJsZW5zIiwidG90bGVuIiwidW5rbm93biIsInBwX2VucXVldWUiLCJ0b2tlbiIsInBwX2luZmluaXR5IiwicHBfb3V0cHV0X3N0cmluZyIsInBwX291dHB1dF9uZXdsaW5lIiwiZm9ybWF0X3BwX3RleHQiLCJ0ZXh0IiwiZm9ybWF0X3N0cmluZyIsImJyZWFrX25ld19saW5lIiwicmVhbF9pbmRlbnQiLCJicmVha19saW5lIiwiYnJlYWtfc2FtZV9saW5lIiwiZm9ybWF0X3BwX3Rva2VuIiwic2l6ZSQwIiwidGFicyIsImFkZF90YWIiLCJscyIsInRhZ19uYW1lIiwibWFya2VyIiwiYnJlYWtzIiwiZml0cyIsIm9mZiIsImJveF90eXBlJDAiLCJvZmYkMCIsImluc2VydGlvbl9wb2ludCIsInRhYnMkMCIsImZpcnN0IiwiaGVhZCIsInRhYiIsIm9mZiQxIiwiaW5zZXJ0aW9uX3BvaW50JDAiLCJ3aWR0aCQyIiwiYm94X3R5cGUkMSIsInRib3giLCJ0YWdfbmFtZSQwIiwibWFya2VyJDAiLCJhZHZhbmNlX2xlZnQiLCJwZW5kaW5nX2NvdW50IiwiZW5xdWV1ZV9hZHZhbmNlIiwiZW5xdWV1ZV9zdHJpbmdfYXMiLCJpbml0aWFsaXplX3NjYW5fc3RhY2siLCJzdGFjayIsInF1ZXVlX2VsZW0iLCJzZXRfc2l6ZSIsImxlZnRfdG90YWwiLCJzY2FuX3B1c2giLCJlbGVtIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfb3Blbl90YWciLCJwcF9jbG9zZV90YWciLCJwcF9zZXRfcHJpbnRfdGFncyIsInBwX3NldF9tYXJrX3RhZ3MiLCJwcF9nZXRfcHJpbnRfdGFncyIsInBwX2dldF9tYXJrX3RhZ3MiLCJwcF9zZXRfdGFncyIsInBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBjdCIsInBvdCIsIm1jdCIsIm1vdCIsInBwX3Jpbml0IiwicHBfZmx1c2hfcXVldWUiLCJwcF9wcmludF9hc19zaXplIiwicHBfcHJpbnRfYXMiLCJpc2l6ZSIsInBwX3ByaW50X3N0cmluZyIsInBwX3ByaW50X2J5dGVzIiwicHBfcHJpbnRfaW50IiwicHBfcHJpbnRfZmxvYXQiLCJwcF9wcmludF9ib29sIiwicHBfcHJpbnRfY2hhciIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2JsYW5rcyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwicHBfbWFyZ2luIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJmbHVzaF9idWZmZXJfZm9ybWF0dGVyIiwiZmx1c2hfc3RyX2Zvcm1hdHRlciIsIm1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJzb2IiLCJnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJpdGVtcyIsImFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSIsIml0ZW0iLCJmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2IiLCJvcGVuX2hib3giLCJvcGVuX3Zib3giLCJvcGVuX2h2Ym94Iiwib3Blbl9ob3Zib3giLCJvcGVuX2JveCIsImNsb3NlX2JveCIsIm9wZW5fdGFnIiwiY2xvc2VfdGFnIiwib3Blbl9zdGFnIiwiY2xvc2Vfc3RhZyIsInByaW50X2FzIiwicHJpbnRfYm9vbCIsInByaW50X2JyZWFrIiwicHJpbnRfY3V0IiwicHJpbnRfc3BhY2UiLCJmb3JjZV9uZXdsaW5lIiwicHJpbnRfZmx1c2giLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9saXN0IiwicHBfdiIsIm9wdCQwIiwicHBfc2VwIiwib3B0JDEiLCJwcF9wcmludF9zZXEiLCJzZXEkMSIsInNlcSQyIiwicHBfcHJpbnRfdGV4dCIsInBwX3ByaW50X29wdGlvbiIsInBwX3ByaW50X3Jlc3VsdCIsInBwX3ByaW50X2VpdGhlciIsImNvbXB1dGVfdGFnIiwidGFnX2FjYyIsIm91dHB1dF9mb3JtYXR0aW5nX2xpdCIsImJ0eSIsInAkNiIsInAkNyIsInNpemUkMSIsInAkOCIsImtkcHJpbnRmIiwiZHByaW50ZiIsImthc3ByaW50ZiIsImFzcHJpbnRmIiwiZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyIsInBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsInBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsInN0cmluZ2lmeSIsInBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImZ1bnMiLCJtYXJrX29wZW5fdGFnIiwibWFya19jbG9zZV90YWciLCJwcmludF9vcGVuX3RhZyIsInByaW50X2Nsb3NlX3RhZyIsInNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsIm51bGxfY2hhciIsIm5leHRfY2hhciIsImliIiwicGVla19jaGFyIiwiY2hlY2tlZF9wZWVrX2NoYXIiLCJlbmRfb2ZfaW5wdXQiLCJiZWdpbm5pbmdfb2ZfaW5wdXQiLCJuYW1lX29mX2lucHV0IiwiY2hhcl9jb3VudCIsImludmFsaWRhdGVfY3VycmVudF9jaGFyIiwidG9rZW5fc3RyaW5nIiwidG9rZW5fYnVmZmVyIiwic2tpcF9jaGFyIiwiaWdub3JlX2NoYXIiLCJzdG9yZV9jaGFyIiwiZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSIsImluYW1lIiwic2Nhbl9jbG9zZV9hdF9lbmQiLCJzY2FuX3JhaXNlX2F0X2VuZCIsImZyb21faWMiLCJzY2FuX2Nsb3NlX2ljIiwiZW9mIiwib3Blbl9pbl9maWxlIiwiaWMkMCIsIm1lbW8iLCJtZW1vX2Zyb21fY2hhbm5lbCIsImJhZF9pbnB1dCIsImJhZF9pbnB1dF9lc2NhcGUiLCJiYWRfdG9rZW5fbGVuZ3RoIiwibWVzc2FnZSIsImJhZF9mbG9hdCIsImJhZF9oZXhfZmxvYXQiLCJjaGFyYWN0ZXJfbWlzbWF0Y2giLCJjaSIsImNoZWNrX2NoYXIiLCJjaGVja190aGlzX2NoYXIiLCJ0b2tlbl9jaGFyIiwidG9rZW5fYm9vbCIsImludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIiwidG9rZW5faW50X2xpdGVyYWwiLCJjb252IiwidG9rZW5fZmxvYXQiLCJzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciIsInNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzIiwic2Nhbl9kaWdpdF9wbHVzIiwiYmFzaXMiLCJkaWdpdHAiLCJ3aWR0aCQzIiwiaXNfYmluYXJ5X2RpZ2l0Iiwic2Nhbl9iaW5hcnlfaW50IiwiaXNfb2N0YWxfZGlnaXQiLCJzY2FuX29jdGFsX2ludCIsImlzX2hleGFfZGlnaXQiLCJzY2FuX2hleGFkZWNpbWFsX2ludCIsInNjYW5fc2lnbiIsInNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbCIsInNjYW5faW50X2NvbnZlcnNpb24iLCJzY2FuX2ZyYWN0aW9uYWxfcGFydCIsInNjYW5fZXhwb25lbnRfcGFydCIsInNjYW5fZmxvYXQiLCJwcmVjaXNpb24iLCJwcmVjaXNpb24kMCIsImNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIiwic2Nhbl9oZXhfZmxvYXQiLCJ3aWR0aCQ0Iiwid2lkdGgkNSIsIndpZHRoJDYiLCJ3aWR0aCQxMCIsIndpZHRoJDciLCJ3aWR0aCQ4Iiwid2lkdGgkOSIsInNjYW5fY2FtbF9mbG9hdF9yZXN0Iiwid2lkdGhfcHJlY2lzaW9uIiwiZnJhY193aWR0aCIsInNjYW5fY2FtbF9mbG9hdCIsInNjYW5fc3RyaW5nIiwic3RwIiwiaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciIsImNoZWNrX25leHRfY2hhciIsImNoZWNrX25leHRfY2hhcl9mb3JfY2hhciIsImNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIiwic2Nhbl9iYWNrc2xhc2hfY2hhciIsImMwIiwiZ2V0X2RpZ2l0JDAiLCJjMSQwIiwiYzIkMCIsImdldF9kaWdpdCIsInNjYW5fY2FtbF9zdHJpbmciLCJmaW5kX3N0b3AkMCIsInNraXBfc3BhY2VzIiwiZmluZF9zdG9wIiwic2Nhbl9jaGFyc19pbl9jaGFyX3NldCIsInNjYW5faW5kaWMiLCJzY2FuX2NoYXJzIiwic2NhbmZfYmFkX2lucHV0Iiwid2lkdGhfb2ZfcGFkX29wdCIsInN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQiLCJmbXRpbmciLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzJDAiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzJDAiLCJyZWFkZXIiLCJuZXdfayIsInJlYWRlcnNfcmVzdCIsInRha2VfZm9ybWF0X3JlYWRlcnMiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIiwibWFrZV9zY2FuZiIsInJlYWRlcnMiLCJzY2FuJDAiLCJzdHJfcmVzdCIsInBhZF9wcmVjX3NjYW5mIiwic2NhbiQxIiwic2NhbiQyIiwic2NhbiIsInNjYW4kMyIsInNjYW4kNCIsImNvbnYkMCIsInNjYW4kNSIsImNvbnYkMSIsInNjYW4kNiIsImNvbnYkMiIsInNjYW4kNyIsInNjYW4kOCIsImZtdGluZ19saXQkMCIsInN0cCQwIiwicyQyIiwic3RyX3Jlc3QkMCIsImFyZ19yZXN0Iiwia3NjYW5mIiwiZWYiLCJleGMkMCIsImV4YyIsImFyZ3MkMSIsImFyZ3MkMCIsImJzY2FuZiIsImtzc2NhbmYiLCJzc2NhbmYiLCJzY2FuZiIsImJzY2FuZl9mb3JtYXQiLCJmb3JtYXQiLCJzc2NhbmZfZm9ybWF0IiwiZm9ybWF0X2Zyb21fc3RyaW5nIiwidW5lc2NhcGVkIiwia2ZzY2FuZiIsImZzY2FuZiIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwiaW5pdGlhbF9vYmplY3Rfc2l6ZSIsImR1bW15X2l0ZW0iLCJwdWJsaWNfbWV0aG9kX2xhYmVsIiwidGFnIiwiY29tcGFyZSQwIiwiY29tcGFyZSQxIiwiZHVtbXlfdGFibGUiLCJ0YWJsZV9jb3VudCIsImR1bW15X21ldCIsImZpdF9zaXplIiwibmV3X3RhYmxlIiwicHViX2xhYmVscyIsIm1ldGhvZHMiLCJhcnJheSIsIm5ld19zaXplIiwib2xkX3NpemUiLCJuZXdfYnVjayIsIm1ldGhvZF9jb3VudCIsImluc3RfdmFyX2NvdW50IiwibmV3X21ldGhvZCIsInRhYmxlIiwiZ2V0X21ldGhvZF9sYWJlbCIsImxhYmVsIiwiZ2V0X21ldGhvZF9sYWJlbHMiLCJuYW1lcyIsInNldF9tZXRob2QiLCJlbGVtZW50IiwiZ2V0X21ldGhvZCIsImFyciIsIm5hcnJvdyIsInZhcnMiLCJ2aXJ0X21ldGhzIiwiY29uY3JfbWV0aHMiLCJ2YXJzJDAiLCJ2aXJ0X21ldGhzJDAiLCJjb25jcl9tZXRocyQwIiwidmlydF9tZXRoX2xhYnMiLCJjb25jcl9tZXRoX2xhYnMiLCJsYWIiLCJ0dmFycyIsImJ5X25hbWUiLCJieV9sYWJlbCIsIm1ldCIsImhtIiwid2lkZW4iLCJzYXZlZF92YXJzIiwic2F2ZWRfaGlkZGVuX21ldGhzIiwibmV3X3ZhcmlhYmxlIiwidG9fYXJyYXkiLCJuZXdfbWV0aG9kc192YXJpYWJsZXMiLCJtZXRocyIsInZhbHMiLCJtZXRocyQwIiwibm1ldGhzIiwibnZhbHMiLCJnZXRfdmFyaWFibGUiLCJnZXRfdmFyaWFibGVzIiwiYWRkX2luaXRpYWxpemVyIiwiY3JlYXRlX3RhYmxlIiwicHVibGljX21ldGhvZHMiLCJ0YWdzIiwiaW5pdF9jbGFzcyIsImluaGVyaXRzIiwiY2xhIiwic3VwZXIkMCIsIm5tIiwibWFrZV9jbGFzcyIsInB1Yl9tZXRocyIsImNsYXNzX2luaXQiLCJlbnZfaW5pdCIsIm1ha2VfY2xhc3Nfc3RvcmUiLCJpbml0X3RhYmxlIiwiZHVtbXlfY2xhc3MiLCJsb2MiLCJ1bmRlZiIsImNyZWF0ZV9vYmplY3QiLCJjcmVhdGVfb2JqZWN0X29wdCIsIm9ial8wIiwiaXRlcl9mIiwicnVuX2luaXRpYWxpemVycyIsImluaXRzIiwicnVuX2luaXRpYWxpemVyc19vcHQiLCJjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGkiLCJidWlsZF9wYXRoIiwia2V5cyIsImxvb2t1cF90YWJsZXMiLCJyb290Iiwicm9vdF9kYXRhIiwidGFibGVzJDAiLCJ0YWJsZXMkMSIsInRhYmxlc19kYXRhIiwibmV3X2NhY2hlIiwic2V0X21ldGhvZHMiLCJjbG8iLCJ4JDIwIiwiY2xvJDAiLCJuJDM4IiwiZSQxMCIsIm4kMzciLCJuJDM2IiwibiQyIiwibiQzNSIsImYkMjAiLCJ4JDE5IiwibiQzIiwiZiQxOSIsIm4kMzQiLCJuJDQiLCJmJDE4IiwiZSQ5IiwibiQzMyIsIm4kNSIsImYkMTciLCJuJDMyIiwiZiQxNiIsIngkMTgiLCJ5JDAiLCJuJDYiLCJmJDE1IiwieCQxNyIsIm4kMzEiLCJ4JDMiLCJuJDciLCJmJDE0IiwieCQxNiIsImUkOCIsIm4kMzAiLCJ4JDQiLCJuJDgiLCJmJDEzIiwieCQxNSIsIm4kMjkiLCJuJDkiLCJ4JDUiLCJmJDEyIiwibiQyOCIsIngkMTQiLCJmJDgiLCJlJDIiLCJuJDEwIiwieCQ2IiwiZiQxMSIsImUkNyIsIm4kMjciLCJ4JDEzIiwiZiQ5IiwibiQxMSIsIngkNyIsImYkMTAiLCJuJDI2IiwieCQxMiIsIm4kMTIiLCJ4JDgiLCJuJDI1IiwieCQxMSIsIm4kMTMiLCJuJDI0IiwibSQxMiIsIm4kMTQiLCJlJDMiLCJuJDIzIiwiZSQ2IiwibSQxMSIsIm4kMTUiLCJtJDEiLCJuJDIyIiwibSQxMCIsIm0kMiIsIngkOSIsIm0kOSIsIngkMTAiLCJtJDMiLCJuJDE2IiwibSQ4IiwibiQyMSIsIm0kNCIsImUkNCIsIm4kMTciLCJtJDciLCJlJDUiLCJuJDIwIiwibSQ1IiwibiQxOCIsIm0kNiIsIm4kMTkiLCJpbml0X21vZF9ibG9jayIsImNvbXBzJDAiLCJtb2R1Iiwic2hhcGUiLCJmbiQwIiwiY29tcHMiLCJpbml0X21vZCIsInVwZGF0ZV9tb2RfYmxvY2siLCJjbCIsInVwZGF0ZV9tb2QiLCJpbml0aWFsX2J1ZmZlciIsImJ1ZmZlciIsImJ1ZnBvcyIsInJlc2V0X2J1ZmZlciIsInN0b3JlIiwibmV3YnVmZmVyIiwiZ2V0X3N0cmluZyIsIm1ha2VfbGV4ZXIiLCJrZXl3b3JkcyIsImt3ZF90YWJsZSIsImlkZW50X29yX2tleXdvcmQiLCJrZXl3b3JkX29yX2Vycm9yIiwibmV4dF90b2tlbiIsImVzY2FwZSIsImNvbW1lbnQiLCJudW1iZXIiLCJpZGVudDIiLCJleHBvbmVudF9wYXJ0IiwiZW5kX2V4cG9uZW50X3BhcnQiLCJjMyIsImhrZXkiLCJjbGVhbiIsImRvX2J1Y2tldCIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJuZXdfZCIsImJ1Y2tldF9sZW5ndGhfYWxpdmUiLCJzdGF0c19hbGl2ZSIsImdldF9kYXRhX2NvcHkiLCJzZXRfZGF0YSIsInVuc2V0X2RhdGEiLCJjaGVja19kYXRhIiwiYmxpdF9kYXRhIiwic2V0X2tleV9kYXRhIiwiZ2V0X2tleTEiLCJnZXRfa2V5MV9jb3B5Iiwic2V0X2tleTEiLCJ1bnNldF9rZXkxIiwiY2hlY2tfa2V5MSIsImdldF9rZXkyIiwiZ2V0X2tleTJfY29weSIsInNldF9rZXkyIiwidW5zZXRfa2V5MiIsImNoZWNrX2tleTIiLCJibGl0X2tleTEiLCJibGl0X2tleTIiLCJibGl0X2tleTEyIiwiZ2V0X2RhdGEkMCIsImdldF9kYXRhX2NvcHkkMCIsInNldF9kYXRhJDAiLCJ1bnNldF9kYXRhJDAiLCJjaGVja19kYXRhJDAiLCJibGl0X2RhdGEkMCIsImsyJDAiLCJrMSQwIiwiZXF1YWwkMCIsImNyZWF0ZSQxIiwiZ2V0X2tleSQwIiwiZ2V0X2tleV9jb3B5JDAiLCJzZXRfa2V5JDAiLCJ1bnNldF9rZXkkMCIsImNoZWNrX2tleSQwIiwiYmxpdF9rZXkkMCIsImdldF9kYXRhJDEiLCJnZXRfZGF0YV9jb3B5JDEiLCJzZXRfZGF0YSQxIiwidW5zZXRfZGF0YSQxIiwiY2hlY2tfZGF0YSQxIiwiYmxpdF9kYXRhJDEiLCJraSIsImswIiwibnVsbCQwIiwiY3VycmVudF9kaXJfbmFtZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZXF1b3RlIiwibnVsbCQxIiwiY3VycmVudF9kaXJfbmFtZSQwIiwicGFyZW50X2Rpcl9uYW1lJDAiLCJkaXJfc2VwJDAiLCJudWxsJDIiLCJjdXJyZW50X2Rpcl9uYW1lJDEiLCJwYXJlbnRfZGlyX25hbWUkMSIsImRpcl9zZXAkMSIsImdlbmVyaWNfYmFzZW5hbWUiLCJpc19kaXJfc2VwIiwiZ2VuZXJpY19kaXJuYW1lIiwiaXNfcmVsYXRpdmUiLCJpc19pbXBsaWNpdCIsImNoZWNrX3N1ZmZpeCIsInN1ZmYiLCJjaG9wX3N1ZmZpeF9vcHQiLCJsZW5fZiIsInRlbXBfZGlyX25hbWUiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQwIiwibG9vcCQwIiwibG9vcF9icyIsImFkZF9icyIsInF1b3RlX2NtZF9maWxlbmFtZSIsInF1b3RlX2NvbW1hbmQkMCIsImRyaXZlX2FuZF9wYXRoIiwiZGlybmFtZSQwIiwicGF0aCIsImRyaXZlIiwiZGlyIiwiYmFzZW5hbWUkMCIsImJhc2VuYW1lJDEiLCJkaXJuYW1lJDEiLCJudWxsJDMiLCJjdXJyZW50X2Rpcl9uYW1lJDIiLCJwYXJlbnRfZGlyX25hbWUkMiIsImRpcl9zZXAkMiIsImlzX2Rpcl9zZXAkMSIsImlzX3JlbGF0aXZlJDEiLCJpc19pbXBsaWNpdCQxIiwiY2hlY2tfc3VmZml4JDEiLCJjaG9wX3N1ZmZpeF9vcHQkMSIsInRlbXBfZGlyX25hbWUkMSIsInF1b3RlJDEiLCJxdW90ZV9jb21tYW5kJDEiLCJiYXNlbmFtZSQyIiwiZGlybmFtZSQyIiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiaTAiLCJleHRlbnNpb24iLCJjaG9wX2V4dGVuc2lvbiIsInJlbW92ZV9leHRlbnNpb24iLCJ0ZW1wX2ZpbGVfbmFtZSIsInRlbXBfZGlyIiwicm5kIiwiY3VycmVudF90ZW1wX2Rpcl9uYW1lIiwic2V0X3RlbXBfZGlyX25hbWUiLCJnZXRfdGVtcF9kaXJfbmFtZSIsInRlbXBfZmlsZSIsIm9wZW5fdGVtcF9maWxlIiwic3RoJDAiLCJwZXJtcyIsInN0aCQxIiwibmVnIiwiY29uaiIsIm11bCIsImRpdiIsImludiIsIm5vcm0yIiwibm9ybSIsInEkMCIsInBvbGFyIiwic3FydCIsInckMCIsImV4cCIsImxvZyIsInBvdyIsImZsb2F0MzIiLCJmbG9hdDY0IiwiaW50OF9zaWduZWQiLCJpbnQ4X3Vuc2lnbmVkIiwiaW50MTZfc2lnbmVkIiwiaW50MTZfdW5zaWduZWQiLCJjb21wbGV4MzIiLCJjb21wbGV4NjQiLCJraW5kX3NpemVfaW5fYnl0ZXMiLCJjX2xheW91dCIsImZvcnRyYW5fbGF5b3V0IiwiY2xvb3AiLCJpZHgiLCJjb2wiLCJmbG9vcCIsImxheW91dCIsImRpbXMiLCJzaXplX2luX2J5dGVzIiwic2l6ZV9pbl9ieXRlcyQwIiwib2ZfdmFsdWUiLCJkaW0iLCJzaXplX2luX2J5dGVzJDEiLCJzbGljZSIsImluaXQkMCIsIm9mX2FycmF5IiwiYmEiLCJkaW0xIiwiZGltMiIsInNpemVfaW5fYnl0ZXMkMiIsInNsaWNlX2xlZnQiLCJzbGljZV9yaWdodCIsImluaXQkMSIsIm9mX2FycmF5JDAiLCJyb3ciLCJjcmVhdGUkMiIsImRpbTMiLCJzaXplX2luX2J5dGVzJDMiLCJzbGljZV9sZWZ0XzEiLCJzbGljZV9yaWdodF8xIiwic2xpY2VfbGVmdF8yIiwic2xpY2VfcmlnaHRfMiIsImluaXQkMiIsIm9mX2FycmF5JDEiLCJhcnJheTBfb2ZfZ2VuYXJyYXkiLCJhcnJheTFfb2ZfZ2VuYXJyYXkiLCJhcnJheTJfb2ZfZ2VuYXJyYXkiLCJhcnJheTNfb2ZfZ2VuYXJyYXkiLCJyZXNoYXBlXzAiLCJyZXNoYXBlXzEiLCJyZXNoYXBlXzIiLCJyZXNoYXBlXzMiLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJyYWlzZSIsIm1heCIsIngiLCJ5IiwibWluIiwiZXF1YWwiLCJlcXVhbCQwIiwibWF4JDAiLCJtaW4kMCIsImdsb2JhbCIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwicmV0dXJuJDAiLCJtYXAiLCJmIiwiYmluZCIsInRlc3QiLCJpdGVyIiwiY2FzZSQwIiwiZyIsImdldCIsIm9wdGlvbiIsIngkMCIsInRvX29wdGlvbiIsInJldHVybiQxIiwibWFwJDAiLCJiaW5kJDAiLCJ0ZXN0JDAiLCJpdGVyJDAiLCJjYXNlJDEiLCJnZXQkMCIsIm9wdGlvbiQwIiwidG9fb3B0aW9uJDAiLCJjb2VyY2UiLCJjb2VyY2Vfb3B0IiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5mYyIsIm5mZCIsIm5ma2MiLCJuZmtkIiwic3RyaW5nX2NvbnN0ciIsInJlZ0V4cCIsIm9iamVjdF9jb25zdHJ1Y3RvciIsIm9iamVjdF9rZXlzIiwibyIsImFycmF5X2NvbnN0cnVjdG9yIiwiYXJyYXlfZ2V0IiwiYXJyYXlfc2V0IiwiYXJyYXlfbWFwIiwiYSIsImlkeCIsImFycmF5X21hcGkiLCJzdHJfYXJyYXkiLCJtYXRjaF9yZXN1bHQiLCJkYXRlX2NvbnN0ciIsIm1hdGgiLCJlcnJvcl9jb25zdHIiLCJleG5fd2l0aF9qc19iYWNrdHJhY2UiLCJuYW1lIiwibWVzc2FnZSIsInN0YWNrIiwidG9fc3RyaW5nIiwiZSIsInJhaXNlX2pzX2Vycm9yIiwic3RyaW5nX29mX2Vycm9yIiwiSlNPTiIsImRlY29kZVVSSSIsInMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlbmNvZGVVUkkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJ1bmVzY2FwZSIsImlzTmFOIiwiaSIsInBhcnNlSW50IiwicyQwIiwicGFyc2VGbG9hdCIsImV4cG9ydF9qcyIsImZpZWxkIiwiZXhwb3J0JDAiLCJleHBvcnRfYWxsIiwib2JqIiwia2V5cyIsImtleSIsImxpc3Rfb2Zfbm9kZUxpc3QiLCJsZW5ndGgiLCJhY2MiLCJpJDAiLCJhY2MkMCIsImkkMSIsImRpc2Nvbm5lY3RlZCIsInByZWNlZGluZyIsImZvbGxvd2luZyIsImNvbnRhaW5zIiwiY29udGFpbmVkX2J5IiwiaW1wbGVtZW50YXRpb25fc3BlY2lmaWMiLCJoYXMiLCJ0IiwibWFzayIsImFkZCIsImFwcGVuZENoaWxkIiwicCIsIm4iLCJyZW1vdmVDaGlsZCIsInJlcGxhY2VDaGlsZCIsImluc2VydEJlZm9yZSIsIm5vZGVUeXBlIiwidDEzIiwiY2FzdCIsInQxNCIsImVsZW1lbnQiLCJ0ZXh0IiwiYXR0ciIsIm5vX2hhbmRsZXIiLCJoYW5kbGVyIiwicmVzIiwiZnVsbF9oYW5kbGVyIiwidGhpcyQwIiwiaW52b2tlX2hhbmRsZXIiLCJldmVudCIsImV2ZW50VGFyZ2V0IiwibWFrZSIsImFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyIsInQyOCIsInR5cCIsImNhcHR1cmUiLCJvbmNlIiwicGFzc2l2ZSIsImgiLCJiIiwiZXYiLCJjYWxsYmFjayIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYXB0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlkIiwicHJldmVudERlZmF1bHQiLCJjcmVhdGVDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwib3B0X2l0ZXIiLCJjb25zdHIiLCJhcnJheUJ1ZmZlciIsImludDhBcnJheSIsInVpbnQ4QXJyYXkiLCJpbnQxNkFycmF5IiwidWludDE2QXJyYXkiLCJpbnQzMkFycmF5IiwidWludDMyQXJyYXkiLCJmbG9hdDMyQXJyYXkiLCJmbG9hdDY0QXJyYXkiLCJzZXQiLCJ2IiwidW5zYWZlX2dldCIsImRhdGFWaWV3Iiwib2ZfYXJyYXlCdWZmZXIiLCJhYiIsInVpbnQ4IiwiYmxvYl9jb25zdHIiLCJmaWx0ZXJfbWFwIiwicSIsInYkMCIsImJsb2JfcmF3IiwiY29udGVudFR5cGUiLCJlbmRpbmdzIiwib3B0aW9ucyIsIm9wdGlvbnMkMCIsImJsb2JfZnJvbV9zdHJpbmciLCJibG9iX2Zyb21fYW55IiwibCIsImEkMCIsImwkMCIsImZpbGVuYW1lIiwibmFtZSQwIiwiZG9jX2NvbnN0ciIsImRvY3VtZW50IiwiYmxvYiIsInN0cmluZyIsImxvYWRzdGFydCIsInByb2dyZXNzIiwiYWJvcnQiLCJlcnJvciIsImxvYWQiLCJsb2FkZW5kIiwiZmlsZVJlYWRlciIsIm9uSUUiLCJjbGljayIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsIm9yaWdpbiIsIndpbmRvdyIsImdldEVsZW1lbnRCeUlkIiwicG5vZGUiLCJnZXRFbGVtZW50QnlJZF9leG4iLCJnZXRFbGVtZW50QnlJZF9vcHQiLCJnZXRFbGVtZW50QnlJZF9jb2VyY2UiLCJjcmVhdGVFbGVtZW50IiwiZG9jIiwidW5zYWZlQ3JlYXRlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZWx0IiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwidDU0IiwidW5zYWZlQ29lcmNlIiwidGFnIiwidDU1IiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJwcmUiLCJzY3JpcHQiLCJzZWxlY3QkMCIsInN0eWxlIiwidGFibGUiLCJ0Ym9keSIsInRkIiwidGV4dGFyZWEiLCJ0Zm9vdCIsInRoIiwidGhlYWQiLCJ0aXRsZSIsInRyIiwidWwiLCJhdWRpbyIsInZpZGVvIiwidW5zYWZlQ29lcmNlRXZlbnQiLCJtb3VzZUV2ZW50Iiwia2V5Ym9hcmRFdmVudCIsIndoZWVsRXZlbnQiLCJtb3VzZVNjcm9sbEV2ZW50IiwicG9wU3RhdGVFdmVudCIsIm1lc3NhZ2VFdmVudCIsInBhcmFtIiwiZXZlbnRSZWxhdGVkVGFyZ2V0IiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uIiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJDAiLCJlbGVtZW50Q2xpZW50UG9zaXRpb24iLCJnZXREb2N1bWVudFNjcm9sbCIsImJ1dHRvblByZXNzZWQiLCJhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGgiLCJkeCIsImR5IiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXIiLCJ0cnlfY29kZSIsInRyeV9rZXlfY29kZV9sZWZ0IiwidHJ5X2tleV9jb2RlX3JpZ2h0IiwidHJ5X2tleV9jb2RlX251bXBhZCIsInRyeV9rZXlfY29kZV9ub3JtYWwiLCJtYWtlX3VuaWRlbnRpZmllZCIsInJ1bl9uZXh0IiwidmFsdWUiLCJzeW1ib2wiLCJvZl9ldmVudCIsImNoYXJfb2ZfaW50IiwiZW1wdHlfc3RyaW5nIiwibm9uZSIsIm9mX2V2ZW50JDAiLCJlbGVtZW50JDAiLCJ0YWdnZWQiLCJ0MTA1Iiwib3B0X3RhZ2dlZCIsInRhZ2dlZEV2ZW50Iiwib3B0X3RhZ2dlZEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiYyIsInJlcSIsIm5vdyIsImxhc3QiLCJkdCIsImR0JDAiLCJoYXNQdXNoU3RhdGUiLCJoYXNQbGFjZWhvbGRlciIsImhhc1JlcXVpcmVkIiwib3ZlcmZsb3dfbGltaXQiLCJzZXRUaW1lb3V0IiwibG9vcCIsInJlbWFpbiIsInN0ZXAiLCJjYiIsImNsZWFyVGltZW91dCIsImpzX2FycmF5X29mX2NvbGxlY3Rpb24iLCJmb3JtRGF0YSIsImZvcm1EYXRhX2Zvcm0iLCJoYXZlX2NvbnRlbnQiLCJmb3JtX2VsZW1lbnRzIiwiaSQyIiwic3RoIiwibmFtZSQxIiwibGlzdCIsImZpbGUiLCJhcHBlbmQiLCJmb3JtX2NvbnRlbnRzIiwiZm9ybV9lbHQiLCJlbXB0eV9mb3JtX2NvbnRlbnRzIiwicG9zdF9mb3JtX2NvbnRlbnRzIiwiY29udGVudHMiLCJnZXRfZm9ybV9jb250ZW50cyIsInJlYWR5c3RhdGVjaGFuZ2UiLCJ0aW1lb3V0Iiwid29ya2VyIiwiY3JlYXRlIiwiaW1wb3J0X3NjcmlwdHMiLCJzY3JpcHRzIiwic2V0X29ubWVzc2FnZSIsImpzX2hhbmRsZXIiLCJwb3N0X21lc3NhZ2UiLCJtc2ciLCJ3ZWJTb2NrZXQiLCJpc19zdXBwb3J0ZWQiLCJkZWZhdWx0Q29udGV4dEF0dHJpYnV0ZXMiLCJ3ZWJnbGNvbnRleHRsb3N0Iiwid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIiwiZ2V0Q29udGV4dCIsImN0eCIsImdldENvbnRleHRXaXRoQXR0cmlidXRlcyIsImF0dHJpYnMiLCJyZWdleHAiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3dpdGhfZmxhZyIsImJsdW50X3N0cl9hcnJheV9nZXQiLCJzdHJpbmdfbWF0Y2giLCJzZWFyY2giLCJyZXNfcHJlIiwibWF0Y2hlZF9zdHJpbmciLCJyIiwibWF0Y2hlZF9ncm91cCIsInF1b3RlX3JlcGxfcmUiLCJxdW90ZV9yZXBsIiwiZ2xvYmFsX3JlcGxhY2UiLCJzX2J5IiwicmVwbGFjZV9maXJzdCIsInQyOSIsImZsYWdzIiwibGlzdF9vZl9qc19hcnJheSIsImlkeCQxIiwiYWNjdSIsImlkeCQwIiwiYWNjdSQwIiwic3BsaXQiLCJib3VuZGVkX3NwbGl0IiwicXVvdGVfcmUiLCJxdW90ZSIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImludGVycnVwdCIsInBsdXNfcmUiLCJ1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyIsInVybGRlY29kZSIsInVybGVuY29kZSIsIm9wdCIsIndpdGhfcGx1cyIsImRlZmF1bHRfaHR0cF9wb3J0IiwiZGVmYXVsdF9odHRwc19wb3J0IiwicGF0aF9vZl9wYXRoX3N0cmluZyIsImF1eCIsImoiLCJ3b3JkIiwiZW5jb2RlX2FyZ3VtZW50cyIsImRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIiwibGVuIiwiaW5kZXgiLCJkZWNvZGVfYXJndW1lbnRzIiwidXJsX3JlIiwiZmlsZV9yZSIsInVybF9vZl9qc19zdHJpbmciLCJoYW5kbGUiLCJwcm90X3N0cmluZyIsInNzbCIsInBhdGhfc3RyIiwidXJsIiwidXJsX29mX3N0cmluZyIsInN0cmluZ19vZl91cmwiLCJmcmFnIiwiYXJncyIsInBhdGgiLCJwb3J0IiwiaG9zdCIsImZyYWckMCIsImFyZ3MkMCIsInBhdGgkMCIsInBvcnQkMCIsImhvc3QkMCIsImZyYWckMSIsImFyZ3MkMSIsInBhdGgkMSIsInByb3RvY29sIiwicGF0aF9zdHJpbmciLCJhcmd1bWVudHMkMCIsImdldF9mcmFnbWVudCIsInNldF9mcmFnbWVudCIsInUiLCJhc19zdHJpbmciLCJ1cGRhdGVfZmlsZSIsImNvbnRlbnQiLCJvYyIsInNldF9jaGFubmVsX2ZsdXNoZXIiLCJvdXRfY2hhbm5lbCIsImYkMCIsInNldF9jaGFubmVsX2ZpbGxlciIsImluX2NoYW5uZWwiLCJtb3VudCIsInByZWZpeCIsInVubW91bnQiLCJqc19vZl9vY2FtbF92ZXJzaW9uIiwiZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMiLCJyZXNpemVPYnNlcnZlciIsIm9ic2VydmUiLCJub2RlIiwiYm94Iiwib2JzIiwicGVyZm9ybWFuY2VPYnNlcnZlciIsImVudHJ5X3R5cGVzIiwiZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCIsIm11dGF0aW9uT2JzZXJ2ZXIiLCJjaGlsZF9saXN0IiwiYXR0cmlidXRlcyIsImNoYXJhY3Rlcl9kYXRhIiwic3VidHJlZSIsImF0dHJpYnV0ZV9vbGRfdmFsdWUiLCJjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUiLCJhdHRyaWJ1dGVfZmlsdGVyIiwiayIsInJlbW92ZSIsImZpbmQiLCJqc29uIiwicmV2aXZlciIsImlucHV0X3Jldml2ZXIiLCJ1bnNhZmVfaW5wdXQiLCJtbEludDY0X2NvbnN0ciIsIm91dHB1dF9yZXZpdmVyIiwib3V0cHV0Iiwic3RyaW5nX29mX25hbWUiLCJuYW1lX29mX3N0cmluZyIsInJnYl9vZl9uYW1lIiwicmdiIiwiaHNsIiwic3RyaW5nX29mX3QiLCJiJDAiLCJnJDAiLCJyJDAiLCJiJDEiLCJnJDEiLCJyJDEiLCJiJDIiLCJnJDIiLCJyJDIiLCJhJDEiLCJoJDAiLCJoZXhfb2ZfcmdiIiwiYmx1ZSIsImdyZWVuIiwicmVkIiwiaW5fcmFuZ2UiLCJqc190X29mX2pzX3N0cmluZyIsInJnYl9yZSIsInJnYl9wY3RfcmUiLCJyZ2JhX3JlIiwicmdiYV9wY3RfcmUiLCJoc2xfcmUiLCJoc2xhX3JlIiwianMiLCJjbiIsIm1sIiwiZmFpbCIsInJlX3JnYiIsInJlX3JnYl9wY3QiLCJyZV9oc2wiLCJpX29mX3NfbyIsImZfb2ZfcyIsImFscGhhIiwicmVkJDAiLCJncmVlbiQwIiwiYmx1ZSQwIiwiYWxwaGEkMCIsInJlZCQxIiwiZ3JlZW4kMSIsImJsdWUkMSIsImFscGhhJDEiLCJzdHJpbmdfb2ZfdCQwIiwiZiQxIiwiZiQyIiwiZiQzIiwiZiQ0IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiZiQ4IiwiZiQ5IiwiZiQxMCIsImYkMTEiLCJmJDEyIiwianMkMCIsIm1sJDAiLCJyZSIsInN0cmluZ19vZl90JDEiLCJqcyQxIiwibWwkMSIsImxpc3RlbiIsInRhcmdldCIsInN0b3BfbGlzdGVuIiwieG1sbnMiLCJjcmVhdGVBbHRHbHlwaCIsImNyZWF0ZUFsdEdseXBoRGVmIiwiY3JlYXRlQWx0R2x5cGhJdGVtIiwiY3JlYXRlQW5pbWF0ZSIsImNyZWF0ZUFuaW1hdGVDb2xvciIsImNyZWF0ZUFuaW1hdGVNb3Rpb24iLCJjcmVhdGVBbmltYXRlVHJhbnNmb3JtIiwiY3JlYXRlQ2lyY2xlIiwiY3JlYXRlQ2xpcFBhdGgiLCJjcmVhdGVDdXJzb3IiLCJjcmVhdGVEZWZzIiwiY3JlYXRlRGVzYyIsImNyZWF0ZUVsbGlwc2UiLCJjcmVhdGVGaWx0ZXIiLCJjcmVhdGVGb250IiwiY3JlYXRlRm9udEZhY2UiLCJjcmVhdGVGb250RmFjZUZvcm1hdCIsImNyZWF0ZUZvbnRGYWNlTmFtZSIsImNyZWF0ZUZvbnRGYWNlU3JjIiwiY3JlYXRlRm9udEZhY2VVcmkiLCJjcmVhdGVGb3JlaWduT2JqZWN0IiwiY3JlYXRlRyIsImNyZWF0ZUdseXBoIiwiY3JlYXRlR2x5cGhSZWYiLCJjcmVhdGVoa2VybiIsImNyZWF0ZUltYWdlIiwiY3JlYXRlTGluZUVsZW1lbnQiLCJjcmVhdGVMaW5lYXJFbGVtZW50IiwiY3JlYXRlTWFzayIsImNyZWF0ZU1ldGFEYXRhIiwiY3JlYXRlTWlzc2luZ0dseXBoIiwiY3JlYXRlTVBhdGgiLCJjcmVhdGVQYXRoIiwiY3JlYXRlUGF0dGVybiIsImNyZWF0ZVBvbHlnb24iLCJjcmVhdGVQb2x5bGluZSIsImNyZWF0ZVJhZGlhbGdyYWRpZW50IiwiY3JlYXRlUmVjdCIsImNyZWF0ZVNldCIsImNyZWF0ZVN0b3AiLCJjcmVhdGVTdmciLCJjcmVhdGVTd2l0Y2giLCJjcmVhdGVTeW1ib2wiLCJjcmVhdGVUZXh0RWxlbWVudCIsImNyZWF0ZVRleHRwYXRoIiwiY3JlYXRlVHJlZiIsImNyZWF0ZVRzcGFuIiwiY3JlYXRlVXNlIiwiY3JlYXRlVmlldyIsImNyZWF0ZXZrZXJuIiwic3ZnX2VsZW1lbnQiLCJ0OCIsImFsdEdseXBoIiwiYWx0R2x5cGhEZWYiLCJhbHRHbHlwaEl0ZW0iLCJhbmltYXRlIiwiYW5pbWF0ZUNvbG9yIiwiYW5pbWF0ZU1vdGlvbiIsImFuaW1hdGVUcmFuc2Zvcm0iLCJjaXJjbGUiLCJjbGlwUGF0aCIsImN1cnNvciIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImZpbHRlciIsImZvbnQiLCJmb250RmFjZSIsImZvbnRGYWNlRm9ybWF0IiwiZm9udEZhY2VOYW1lIiwiZm9udEZhY2VTcmMiLCJmb250RmFjZVVyaSIsImZvcmVpZ25PYmplY3QiLCJnbHlwaCIsImdseXBoUmVmIiwiaGtlcm4iLCJpbWFnZSIsImxpbmVFbGVtZW50IiwibGluZWFyRWxlbWVudCIsIm1ldGFEYXRhIiwibWlzc2luZ0dseXBoIiwibVBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsZ3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInN2ZyIsInN3aXRjaCQwIiwidGV4dEVsZW1lbnQiLCJ0ZXh0cGF0aCIsInRyZWYiLCJ0c3BhbiIsInVzZSIsInZpZXciLCJ2a2VybiIsIndpdGhDcmVkZW50aWFscyIsImV2ZW50U291cmNlIiwiZXZlbnRTb3VyY2Vfb3B0aW9ucyIsImNvbnNvbGUiLCJlbXB0eV9wb3NpdGlvbl9vcHRpb25zIiwiZ2VvbG9jYXRpb24iLCJlbXB0eV9pbnRlcnNlY3Rpb25fb2JzZXJ2ZXJfb3AiLCJpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmUiLCJvYmplY3Rfb3B0aW9ucyIsIm9wdGlvbnMkMSIsIm9wdGlvbnMkMiIsImludGwiLCJjb2xsYXRvcl9jb25zdHIiLCJkYXRlVGltZUZvcm1hdF9jb25zdHIiLCJudW1iZXJGb3JtYXRfY29uc3RyIiwicGx1cmFsUnVsZXNfY29uc3RyIiwiZXF1YWwiLCJ4IiwieSIsImNvbXBhcmUiLCJ0b19pbnQiLCJwcCIsImludGVyc2VjdCIsInN5bWJvbCIsImxldHRlciIsIm5vdF9sZXR0ZXIiLCJkdW1teSIsImluZXhpc3RhbnQiLCJuZXdsaW5lIiwibGFzdG5ld2xpbmUiLCJzZWFyY2hfYm91bmRhcnkiLCJmcm9tX2NoYXIiLCJzZXhwIiwiZm10IiwicyIsInBhaXIiLCJwcDEiLCJwcDIiLCJ2MiIsInYxIiwidHJpcGxlIiwicHAzIiwidjMiLCJvcHRpbnQiLCJpIiwicXVvdGUiLCJwcF9vbGlzdCIsInBwX2VsZW0iLCJwcF9zdHJfbGlzdCIsInRvX3RvX3N0cmluZyIsImIiLCJjYW55IiwidW5pb24iLCJsJDAiLCJsIiwibCQyIiwibCQxIiwiciIsImMyIiwiYzEiLCJyJDAiLCJjMiQwIiwiYzEkMCIsImwkMyIsImwkNCIsImludGVyIiwiZGlmZiIsInIkMSIsInNpbmdsZSIsImMiLCJhZGQiLCJzZXEiLCJjJDAiLCJvZmZzZXQiLCJvIiwiZW1wdHkiLCJtZW0iLCJzJDAiLCJyZW0iLCJoYXNoX3JlYyIsImoiLCJoYXNoIiwicHJpbnRfb25lIiwiY2giLCJpdGVyIiwidCIsImYiLCJ0JDAiLCJ4cyIsIm9uZV9jaGFyIiwidiIsInUiLCJmb2xkX3JpZ2h0IiwiaW5pdCIsImNzaW5nbGUiLCJpc19lbXB0eSIsInByZXBlbmQiLCJ4JDAiLCJkIiwiZCQwIiwicGljayIsImdlbiIsImVwc19leHByIiwiaGFzaF9jb21iaW5lIiwiaCIsImFjY3UiLCJtZXJnZV9tYXJrc19vZmZzZXQiLCJvbGQiLCJudyIsIm1lcmdlIiwibSIsImFjY3UkMSIsImFjY3UkMiIsImEiLCJhY2N1JDAiLCJpZHgiLCJtYXJrcyIsIm1hcmtzX3NldF9pZHgiLCJwcF9tYXJrcyIsInBwX3NlbSIsImsiLCJwcF9yZXBfa2luZCIsImUiLCJlJDAiLCJlJDEiLCJlJDIiLCJrJDAiLCJlJDMiLCJpJDAiLCJmaXJzdCIsInJlcyIsImNyZWF0ZV9pZHMiLCJta19leHByIiwiaWRzIiwiZGVmIiwiZW1wdHkkMCIsImNzdCIsImFsdCIsImtpbmQiLCJpc19lcHMiLCJleHByIiwiZXBzIiwicmVwIiwic2VtIiwibWFyayIsInBtYXJrIiwiZXJhc2UiLCJtJDAiLCJiZWZvcmUiLCJhZnRlciIsInJlbmFtZSIsInoiLCJ5JDAiLCJnIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwicjEiLCJlMSIsImwxJDEiLCJyMiIsImUyIiwibDIkMSIsInIxJDAiLCJlMSQwIiwibWFya3MxIiwicjIkMCIsImUyJDAiLCJtYXJrczIiLCJyMSQxIiwibWFya3MxJDAiLCJyMiQxIiwibWFya3MyJDAiLCJoYXNoJDAiLCJtYXJrcyQwIiwiYWNjdSQzIiwidHNlcSIsInByaW50X3N0YXRlX3JlYyIsInByaW50X3N0YXRlX2xzdCIsInBwJDAiLCJtayIsImNhdCIsImRlc2MiLCJjcmVhdGUiLCJlcXVhbCQwIiwiaGFzaCQxIiwiY3JlYXRlX3dvcmtpbmdfYXJlYSIsImluZGV4X2NvdW50IiwidyIsIm1hcmtfdXNlZF9pbmRpY2VzIiwidGJsIiwiZnJlZV9pbmRleCIsInRibF9yZWYiLCJsZW4iLCJpZHgkMCIsInJlbW92ZV9tYXRjaGVzIiwic3BsaXRfYXRfbWF0Y2giLCJyZW1vdmVfZHVwbGljYXRlcyIsInByZXYiLCJwcmV2JDAiLCJwcmV2JDEiLCJwcmV2JDIiLCJyJDIiLCJyJDMiLCJ4JDEiLCJwcmV2JDMiLCJyJDQiLCJzZXRfaWR4IiwiZmlsdGVyX21hcmtzIiwiZGVsdGFfMSQwIiwibmV4dF9jYXQiLCJwcmV2X2NhdCIsImRlbHRhXzIkMCIsImRlbHRhXzEiLCJkZWx0YV9zZXEkMCIsInkkMSIsImtpbmQkMCIsInJlcF9raW5kIiwieSQyIiwibWFya3MkMSIsInkkMyIsIm1hcmtzJDIiLCJjYXQkMCIsIm1hcmtzJDMiLCJkZWx0YV8yIiwiZGVsdGFfc2VxIiwiZGVsdGFfNCIsInJlbSQwIiwiZGVsdGEiLCJjaGFyJDAiLCJzdCIsImV4cHIkMCIsInJlZF90ciIsInRyMiIsInN0MiIsInMyIiwidHIxIiwic3QxIiwiczEiLCJwcmVwZW5kX2Rlcml2IiwicmVzdHJpY3QiLCJzJDEiLCJwcmVwZW5kX21hcmtzX2V4cHJfbHN0IiwibSQxIiwiZGVyaXZfMSQwIiwiYWxsX2NoYXJzIiwiY2F0ZWdvcmllcyIsInJlbSQxIiwiZGVyaXZfMiQwIiwiZGVyaXZfMSIsImRlcml2X3NlcSIsInokMCIsInJlbSQyIiwiY2F0JDEiLCJkZXJpdl8yIiwieGwiLCJ6JDEiLCJkZXJpdl80IiwiZGVyaXYiLCJkZXIiLCJleHByJDEiLCJzdGF0dXMiLCJtYSIsInN0JDAiLCJtYWtlIiwiZmxhdHRlbiIsImNtIiwiY29sb3JfcmVwciIsInNwbGl0IiwiZHVtbXlfb2Zmc2V0IiwibTEiLCJwMSIsInAyIiwiZ2V0Iiwic3RhcnQiLCJzdWJzIiwic3RvcCIsInRlc3QiLCJnZXRfb3B0IiwiYWxsX29mZnNldCIsImFsbCIsIm9mZnNldHMiLCJzdHJzIiwibWF0Y2hlcyIsInBwX21hdGNoIiwic3RyIiwibmJfZ3JvdXBzIiwibiIsIm4kMCIsInYkMCIsInYkMSIsIm4kMSIsInVua25vd24iLCJicmVhayQwIiwicHBfcmUiLCJyZSIsImdyb3VwX2NvdW50IiwiZ3JvdXBfbmFtZXMiLCJjYXRlZ29yeSIsImNvbG9yIiwiZHVtbXlfbmV4dCIsInVua25vd25fc3RhdGUiLCJmaW5kX3N0YXRlIiwibmNvbCIsImJyZWFrX3N0YXRlIiwiaW5mbyIsInBvcyIsInZhbGlkYXRlIiwiZ2V0X2NvbG9yIiwic2xlbiIsInNjYW5fc3RyIiwiaW5pdGlhbF9zdGF0ZSIsImdyb3VwcyIsInBvcyQzIiwibGFzdCIsImluZm8kMCIsInN0JDUiLCJwb3MkNCIsInN0JDMiLCJyZWFsX2MiLCJzdCQ0IiwicG9zJDAiLCJwb3MkMSIsInN0JDEiLCJzdCQyIiwicG9zJDIiLCJmaW5hbF9ib3VuZGFyeV9jaGVjayIsImZpbmFsX2NhdCIsInJlcyQwIiwibWF0Y2hfc3RyIiwicGFydGlhbCIsImluaXRpYWxfY2F0Iiwic3RhdHVzJDAiLCJwbWFya3MiLCJub19tYXRjaF9zdGFydHNfYmVmb3JlIiwiY3NlcSIsImNhZGQiLCJ2aWV3IiwidmFyJDAiLCJyZWwiLCJzcSIsInJlJDAiLCJyZSQxIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiaXNfY2hhcnNldCIsImN1cHBlciIsImNsb3dlciIsImNhbHBoYSIsImNkaWdpdCIsImNhbG51bSIsImN3b3JkIiwieDEiLCJ4MiIsIngxJDAiLCJ4MiQwIiwiZXFfbGlzdCIsImoyIiwiaTIiLCJ4MiQxIiwiajEiLCJpMSIsIngxJDEiLCJ4MiQyIiwic2VtMiIsIngxJDIiLCJzZW0xIiwieDIkMyIsImsyIiwieDEkMyIsImsxIiwieDIkNCIsIngxJDQiLCJ4MiQ1IiwieDEkNSIsIngyJDYiLCJ4MSQ2IiwieDIkNyIsIngxJDciLCJsMiQyIiwibDEkMiIsIngyJDgiLCJ4MiQ5IiwieDEkOCIsIngxJDkiLCJtMiIsInNlcXVlbmNlIiwibWVyZ2Vfc2VxdWVuY2VzIiwiZW5mb3JjZV9raW5kIiwiY3IiLCJ0cmFuc2xhdGUiLCJpZ25fY2FzZSIsIm5hbWVzIiwiY2FjaGUiLCJpZ25fZ3JvdXAkMCIsImdyZWVkeSQwIiwidHJhbnNfc2VxIiwibWVyZ2VkX3NlcXVlbmNlcyIsImtpbmQkMSIsImNyJDAiLCJqJDAiLCJraW5kJDIiLCJraW5kJDMiLCJjciQxIiwiZ3JlZWR5JDEiLCJwIiwibmFtZSIsImtpbmQkNCIsImNyJDIiLCJyJDUiLCJraW5kJDUiLCJjciQzIiwiciQ2IiwiaSQxIiwia2luZCQ2IiwiY3IkNCIsImlnbl9ncm91cCIsImdyZWVkeSIsImFzX3NldCIsImhhbmRsZV9jYXNlIiwiaWduX2Nhc2UkMCIsInIkNyIsInIkOCIsInIkOSIsInIkMTAiLCJyJDExIiwiciQxMiIsImwkNSIsInIkMTMiLCJyJDE0IiwiciQxNSIsImFuY2hvcmVkIiwiZXBzaWxvbiIsInJlcG4iLCJyZXAxIiwib3B0IiwiYm93IiwiZW93IiwiYm9sIiwiZW9sIiwid29yZCIsImJvcyIsImVvcyIsIm5vdF9ib3VuZGFyeSIsIndob2xlX3N0cmluZyIsImxlb2wiLCJsb25nZXN0Iiwic2hvcnRlc3QiLCJub25fZ3JlZWR5IiwiZ3JvdXAiLCJub19ncm91cCIsIm5lc3QiLCJzZXQiLCJyZyIsImNvbXBsIiwiYW55Iiwibm90bmwiLCJsb3dlciIsInVwcGVyIiwiYWxwaGEiLCJkaWdpdCIsImFsbnVtIiwid29yZGMiLCJhc2NpaSIsImJsYW5rIiwiY250cmwiLCJncmFwaCIsInByaW50IiwicHVuY3QiLCJzcGFjZSIsInhkaWdpdCIsImNhc2UkMCIsIm5vX2Nhc2UiLCJjb21waWxlIiwicmVnZXhwJDAiLCJyZWdleHAiLCJsbmwiLCJjb2xvcml6ZSIsInJlZ2V4cCQxIiwicmVnZXhwJDIiLCJuZWVkX2xubCIsIm5jb2xvciIsImNvbG9ycyIsImxubCQwIiwibmNvbG9yJDAiLCJpbml0aWFsIiwiZXhlY19pbnRlcm5hbCIsInN0aCIsInN0aCQwIiwiZXhlYyIsInN1YnN0ciIsImV4ZWNfb3B0IiwiZXhlY3AiLCJleGVjX3BhcnRpYWwiLCJleGVjX3BhcnRpYWxfZGV0YWlsZWQiLCJtYXJrZWQiLCJtYXJrX3NldCIsImFsbF9zZXEiLCJsaW1pdCIsImF1eCIsIm1hdGNoZXNfc2VxIiwic3ViIiwic3BsaXRfZnVsbF9zZXEiLCJzdGF0ZSIsIm9sZF9pIiwidGV4dCIsInRleHQkMCIsInN0YXRlJDAiLCJzcGxpdF9zZXEiLCJmaWx0ZXIiLCJzZXEkMCIsInRsIiwic2VxJDEiLCJsaXN0X29mX3NlcSIsInNwbGl0X2Z1bGwiLCJnZW5fb2Zfc2VxIiwic3BsaXRfZ2VuIiwic3BsaXRfZnVsbF9nZW4iLCJhbGxfZ2VuIiwibWF0Y2hlc19nZW4iLCJyZXBsYWNlIiwiYnVmIiwicmVwbGFjaW5nIiwicmVwbGFjZV9zdHJpbmciLCJieSIsIndpdG5lc3MiLCJmcm9tIiwiZ2V0X29mcyIsImdldF9hbGwiLCJnZXRfYWxsX29mcyIsInRlc3QyIiwiYWNjZXB0IiwiYWNjZXB0MiIsImxlZnQiLCJicmFuY2giLCJsZWZ0JDAiLCJsZWZ0JDEiLCJicmFja2V0IiwicyQyIiwiY29tcGlsZV9wYXQiLCJjb21waWxlX3JlZ2V4cCIsInN0cmluZ19tYXRjaCIsInN0cmluZ19wYXJ0aWFsX21hdGNoIiwic2VhcmNoX2ZvcndhcmQiLCJzZWFyY2hfYmFja3dhcmQiLCJwJDAiLCJwJDEiLCJ2YWxpZF9ncm91cCIsIm9mZnNldF9ncm91cCIsInJlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsInEiLCJxJDAiLCJxJDEiLCJwJDIiLCJsZW4kMCIsInAkMyIsInEkMiIsInEkMyIsInAkNCIsImIkMCIsInEkNSIsInAkNiIsInEkNCIsInAkNSIsInEkNiIsInAkNyIsInN0cmluZ19iZWZvcmUiLCJzdHJpbmdfYWZ0ZXIiLCJmaXJzdF9jaGFycyIsImxhc3RfY2hhcnMiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3N0cmluZyIsInJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIiwiZ3JvdXBfYmVnaW5uaW5nIiwiZ3JvdXBfZW5kIiwibWF0Y2hlZF9ncm91cCIsInR4dCIsInJlcGxhY2VfbWF0Y2hlZCIsIm1hdGNoZWQiLCJtYXRjaF9iZWdpbm5pbmciLCJtYXRjaF9lbmQiLCJtYXRjaGVkX3N0cmluZyIsInN1YnN0aXR1dGVfZmlyc3QiLCJyZXBsX2Z1biIsImdsb2JhbF9zdWJzdGl0dXRlIiwibGFzdF93YXNfZW1wdHkiLCJzdGFydHBvcyIsImVuZF9wb3MiLCJyZXBsX3RleHQiLCJsYXN0X3dhc19lbXB0eSQwIiwiZ2xvYmFsX3JlcGxhY2UiLCJyZXBsYWNlX2ZpcnN0Iiwic2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MiLCJib3VuZGVkX3NwbGl0IiwibnVtIiwiYm91bmRlZF9zcGxpdF9kZWxpbSIsInNwbGl0X2RlbGltIiwiYm91bmRlZF9mdWxsX3NwbGl0IiwiZnVsbF9zcGxpdCIsImJlZyIsIm11bCIsImV4cGxpY2l0X3BlcmlvZCIsInNsYXNoZXMiLCJhcHBlbmQiLCJwaWVjZSIsImFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCIsIm5leHQiLCJyZW1haW5pbmciLCJvbmUiLCJleHBsaWNpdF9zbGFzaCIsImVuY2xvc2VkIiwiaGlnaCIsImxvdyIsImVuY2xvc2VkX3NldCIsInNldCQwIiwiZW5jbG9zdXJlIiwiZXhhY3RseSIsInNsYXNoZXMkMCIsImNoYXJzIiwibWFueV9tYW55IiwiZXhwbGljaXRfcGVyaW9kJDAiLCJmaXJzdF9leHBsaWNpdF9wZXJpb2QiLCJtYXRjaF9jb21wb25lbnQiLCJnbG9iIiwicGF0aG5hbWUiLCJzdGgkMSIsIm1hdGNoX2JhY2tzbGFzaGVzIiwic3RoJDIiLCJwZXJpb2QiLCJzdGgkMyIsImV4cGFuZF9icmFjZXMiLCJzdGgkNCIsImRvdWJsZV9hc3RlcmlzayIsInRvX3JlIiwicmVhZCIsInBpZWNlcyIsImZvdW5kIiwicGllY2VzJDAiLCJzdGF0ZSQ4Iiwic3RhdGUkOSIsImV4cGxpY2l0X3NsYXNoJDAiLCJleHBsaWNpdF9wZXJpb2QkMSIsInNsYXNoZXMkMSIsInN0YXRlJDEwIiwibm90X2VtcHR5IiwibWF5YmVfZW1wdHkiLCJub3RfZW1wdHkkMSIsImVuY2xvc2VkX3NldCQwIiwic3RhdGUkMiIsInN0YXRlJDQiLCJub3RfZW1wdHkkMCIsInN0YXRlJDUiLCJzdGF0ZSQ2IiwiZW5jbG9zZWQkMCIsInN0YXRlJDciLCJlbmNsb3NlZCQxIiwic3RhdGUkMyIsInN0YXRlJDEiLCJlbmNsb3NlZCQyIiwiZW5jbG9zZWQkMyIsImV4cGwiLCJpbm5lciIsImFjYyIsImJlZyQwIiwiYWNjJDAiLCJiZWckMSIsImFjYyQxIiwiaSQzIiwiYmVnJDIiLCJpJDQiLCJpJDIiLCJnbG9iJDAiLCJnbG9ieCIsImdsb2J4JDAiLCJwb3NpeF9jbGFzc19zdHJpbmdzIiwib3B0cyIsInVuZ3JlZWR5IiwiZG90YWxsIiwiZG9sbGFyX2VuZG9ubHkiLCJtdWx0aWxpbmUiLCJhY2NlcHRfcyIsInVuZ2V0IiwiZ3JlZWR5X21vZCIsImdyIiwiZ3IkMCIsImF0b20iLCJpbnRlZ2VyIiwiaGV4ZGlnaXQiLCJjb2RlIiwicyQzIiwicyQ0IiwiY2xhc3MkMCIsInBvc2l4X2NsYXNzIiwicGF0IiwiZmxhZ3MiLCJleHRyYWN0IiwicmV4IiwiZ2V0X3N1YnN0cmluZyIsImdldF9uYW1lZF9zdWJzdHJpbmciLCJnZXRfc3Vic3RyaW5nX29mcyIsInBtYXRjaCIsInN1YnN0aXR1dGUiLCJzdWJzdCIsInNzIiwiZmluIiwibWF4IiwicmVzdWx0cyIsImRlbGltIiwiZm1hcCIsImYiLCJuaWwiLCJzaW5nbGV0b24iLCJ4IiwiY29ucyIsInhzIiwiYXBwZW5kIiwieSIsIm1hcCIsIm9mX2xpc3QiLCJsIiwiYSIsImIiLCJtayIsImNoaWxkcmVuIiwic2VxIiwiY2hpbGRyZW4kMCIsInNlcSQwIiwicmVzdCIsInEiLCJhdHRycyIsIm5hbWUiLCJ2IiwicmVzdCQwIiwic3ViX2NoaWxkcmVuIiwiY2hpbGRyZW4kMSIsInNlcSQxIiwicyIsImNoaWxkcmVuJDIiLCJzZXEkMiIsInMkMCIsImNoaWxkcmVuJDMiLCJvZl9zZXEiLCJhZGRfdW5zYWZlX2NoYXIiLCJjIiwiZW5jb2RlX3Vuc2FmZV9jaGFyIiwiZW5jb2RlX3Vuc2FmZV9jaGFyX2FuZF9hdCIsImNvbXBvc2VfZGVjbCIsIm9wdCIsInN0aCIsInZlcnNpb24iLCJzdGgkMCIsImVuY29kaW5nIiwiY29tcG9zZV9kb2N0eXBlIiwiZHQiLCJhcmdzIiwicHBfYXJncyIsImZtdCIsInJlX2VuZF9jb21tZW50IiwicHBfbnVtYmVyIiwidmludCIsInMxIiwiczIiLCJuIiwiaSIsImkkMCIsIm4kMCIsInN0cmluZ19vZl9udW1iZXIiLCJub3JtYWxpemUiLCJzcmMiLCJ3YXJuIiwiYnVmZmVyIiwiZCIsImNvZGUiLCJub3JtYWxpemVfaHRtbCIsInUiLCJ1JDAiLCJwcF9ub29wIiwib3Blbl9ib3giLCJpbmRlbnQiLCJjbG9zZV9ib3giLCJzcCIsImN1dCIsInNldCIsImlzX2VtcHR5dGFnIiwicHBfZW5jb2RlIiwiZW5jb2RlIiwicHBfc2VwIiwicHBfYXR0cmliX3ZhbHVlIiwic2xpc3QiLCJzZXAiLCJwcF9hdHRyaWIiLCJwcF9hdHRyaWJzIiwicHBfdGFnX2FuZF9hdHRyaWJzIiwidGFnIiwicHBfY2xvc2VkdGFnIiwicHBfdGFnIiwicHBfZWx0cyIsInBwX2VsdCIsImVsdCIsInRleHRlIiwiZyIsInRleHRlJDAiLCJ0ZXh0ZSQxIiwiZSIsInhoX2F0dHJzIiwieGhfdGFnbGlzdCIsInhoX2F0dHJzJDAiLCJuYW1lJDAiLCJwcCIsInN5bWJvbCIsInNlcGFyYXRvcl90b19zdHJpbmciLCJhdHRyaWJfdmFsdWVfdG9fc3RyaW5nIiwiYXR0cmliX3RvX3N0cmluZyIsInhoX3ByaW50X2F0dHJzIiwicXVldWUiLCJhdHRyIiwieGhfcHJpbnRfY2xvc2VkdGFnIiwieGhfcHJpbnRfdGFnIiwidGFnbGlzdCIsInhoX3ByaW50X3RhZ2xpc3QiLCJwcmludF9ub2RlcyIsInRhZ2xpc3QkMCIsInRhZ2xpc3QkMSIsInByaW50X2xpc3QiLCJmb3JldCIsInByaW50IiwiZG9jIiwiYWR2ZXJ0IiwiZG9jJDAiLCJhJDAiLCJkb2MkMSIsImVtcHR5IiwiY29uY2F0IiwiZjEiLCJmMiIsInB1dCIsIm1ha2UiLCJvdXRwdXQiLCJhbWFwMSIsImF0dHJpYnMiLCJlbHRzIiwiYXR0cmlicyQwIiwiYW1hcCIsImFkZF9mbG9hdF9hdHRyaWIiLCJ2YWx1ZSIsImhlYWQiLCJ0YWlsIiwidGFpbCQwIiwibWFwX2Zsb2F0X2F0dHJpYiIsImlzX2F0dHJpYiIsImF1eCIsImFkZF9pbnRfYXR0cmliIiwicm1fYXR0cmliIiwibWFwX2ludF9hdHRyaWIiLCJhZGRfc3RyaW5nX2F0dHJpYiIsIm1hcF9zdHJpbmdfYXR0cmliIiwiYWRkX3NwYWNlX3NlcF9hdHRyaWIiLCJ2YWx1ZXMiLCJhZGRfY29tbWFfc2VwX2F0dHJpYiIsInJtX2F0dHJpYl9mcm9tX2xpc3QiLCJpc192YWx1ZSIsInZhbHVlcyQwIiwibWFwX3N0cmluZ19hdHRyaWJfaW5fbGlzdCIsImZvbGQiLCJvZl9lbXB0eSIsIm9mX2NvbW1lbnQiLCJvZl90eHQiLCJvZl9lbmNvZGVkcGNkYXRhIiwib2ZfZW50aXR5Iiwib2ZfbGVhZiIsIm9mX25vZGUiLCJzJDEiLCJzJDIiLCJhbGxfZW50aXRpZXMiLCJlbmFtZSIsImZsYXRtYXAiLCJ0cmFuc2xhdGUiLCJyb290X2xlYWYiLCJyb290X25vZGUiLCJzdWJfbGVhZiIsInN1Yl9ub2RlIiwidXBkYXRlX3N0YXRlIiwic3RhdGUiLCJjb250ZW50X3R5cGUiLCJzdGFuZGFyZCIsIm5hbWVzcGFjZSIsImNzdCQxIiwic3RyaW5nX29mX2lyaSIsInRvX3N0cmluZyIsInVuaXQiLCJ1bml0JDAiLCJhbmdsZV9uYW1lcyIsInN0cmluZ19vZl9hbmdsZSIsImxlbmd0aF9uYW1lcyIsInN0cmluZ19vZl9sZW5ndGgiLCJsaXN0Iiwic3RyaW5nX29mX3BhaW50X3doaXRvdXRfaWNjIiwic3RyaW5nX29mX3BhaW50IiwiaXJpIiwic3RyaW5nX29mX2ZpbGxfcnVsZSIsImRvY3R5cGUiLCJzdHJpbmdfb2ZfdXJpIiwidXJpX29mX3N0cmluZyIsInRvdCIsInRvdGwiLCJ0b2VsdCIsInRvZWx0bCIsInRvX2F0dHJpYiIsIm51bGxhcnkiLCJ1bmFyeSIsInN0YXIiLCJ0b194bWxhdHRyaWJzIiwiZmxvYXRfYXR0cmliIiwic3RyaW5nX2F0dHJpYiIsInN0cmluZ19vZl9jb29yZCIsInN0cmluZ19vZl9sZW5ndGhzIiwidXNlcl9hdHRyaWIiLCJjb2xvcl9hdHRyaWIiLCJtZXRhZGF0YSIsImZvcmVpZ25PYmplY3QiLCJ0eHQiLCJhX3ZlcnNpb24iLCJhX2Jhc2VQcm9maWxlIiwiYV94IiwiYV95IiwiYV93aWR0aCIsImFfaGVpZ2h0IiwiYV9wcmVzZXJ2ZUFzcGVjdFJhdGlvIiwiYV9jb250ZW50U2NyaXB0VHlwZSIsImFfY29udGVudFN0eWxlVHlwZSIsImFfem9vbUFuZFBhbiIsImFfaHJlZiIsImFfeGxpbmtfaHJlZiIsImFfcmVxdWlyZWRGZWF0dXJlcyIsImFfcmVxdWlyZWRFeHRlbnNpb25zIiwiYV9zeXN0ZW1MYW5ndWFnZSIsImFfZXh0ZXJuYWxSZXNzb3VyY2VzUmVxdWlyZWQiLCJhX2lkIiwiYV91c2VyX2RhdGEiLCJhX3htbF9iYXNlIiwiYV94bWxfbGFuZyIsImFfeG1sX3NwYWNlIiwiYV90eXBlIiwiYV9tZWRpYSIsImFfeGxpbmtfdGl0bGUiLCJhX2NsYXNzIiwiYV9zdHlsZSIsImFfdHJhbnNmb3JtIiwiYV92aWV3Qm94IiwiYV9kIiwiYV9wYXRoTGVuZ3RoIiwiYV9yeCIsImFfcnkiLCJhX2N4IiwiYV9jeSIsImFfciIsImFfeDEiLCJhX3kxIiwiYV94MiIsImFfeTIiLCJhX3BvaW50cyIsImFfeF9saXN0IiwiYV95X2xpc3QiLCJhX2R4IiwiYV9keSIsImFfZHhfbGlzdCIsImFfZHlfbGlzdCIsImFfbGVuZ3RoQWRqdXN0IiwiYV90ZXh0TGVuZ3RoIiwiYV90ZXh0X2FuY2hvciIsImFfdGV4dF9kZWNvcmF0aW9uIiwiYV90ZXh0X3JlbmRlcmluZyIsImFfcm90YXRlIiwiYV9zdGFydE9mZnNldCIsImFfbWV0aG9kIiwiYV9zcGFjaW5nIiwiYV9nbHlwaFJlZiIsImFfZm9ybWF0IiwiYV9tYXJrZXJVbml0cyIsImFfcmVmWCIsImFfcmVmWSIsImFfbWFya2VyV2lkdGgiLCJhX21hcmtlckhlaWdodCIsImFfb3JpZW50IiwiYV9sb2NhbCIsImFfcmVuZGVyaW5nX2ludGVudCIsImFfZ3JhZGllbnRVbml0cyIsImFfZ3JhZGllbnRUcmFuc2Zvcm0iLCJhX3NwcmVhZE1ldGhvZCIsImFfZngiLCJhX2Z5IiwiYV9vZmZzZXQiLCJhX3BhdHRlcm5Vbml0cyIsImFfcGF0dGVybkNvbnRlbnRVbml0cyIsImFfcGF0dGVyblRyYW5zZm9ybSIsImFfY2xpcFBhdGhVbml0cyIsImFfbWFza1VuaXRzIiwiYV9tYXNrQ29udGVudFVuaXRzIiwiYV9wcmltaXRpdmVVbml0cyIsImFfZmlsdGVyUmVzIiwiYV9yZXN1bHQiLCJhX2luIiwiYV9pbjIiLCJhX2F6aW11dGgiLCJhX2VsZXZhdGlvbiIsImFfcG9pbnRzQXRYIiwiYV9wb2ludHNBdFkiLCJhX3BvaW50c0F0WiIsImFfc3BlY3VsYXJFeHBvbmVudCIsImFfc3BlY3VsYXJDb25zdGFudCIsImFfbGltaXRpbmdDb25lQW5nbGUiLCJhX21vZGUiLCJhX2ZlQ29sb3JNYXRyaXhfdHlwZSIsImFfdmFsdWVzIiwiYV90cmFuc2Zlcl90eXBlIiwiYV90YWJsZVZhbHVlcyIsImFfaW50ZXJjZXB0IiwiYV9hbXBsaXR1ZGUiLCJhX2V4cG9uZW50IiwiYV90cmFuc2Zlcl9vZmZzZXQiLCJhX2ZlQ29tcG9zaXRlX29wZXJhdG9yIiwiYV9rMSIsImFfazIiLCJhX2szIiwiYV9rNCIsImFfb3JkZXIiLCJhX2tlcm5lbE1hdHJpeCIsImFfZGl2aXNvciIsImFfYmlhcyIsImFfa2VybmVsVW5pdExlbmd0aCIsImFfdGFyZ2V0WCIsImFfdGFyZ2V0WSIsImFfZWRnZU1vZGUiLCJhX3ByZXNlcnZlQWxwaGEiLCJhX3N1cmZhY2VTY2FsZSIsImFfZGlmZnVzZUNvbnN0YW50IiwiYV9zY2FsZSIsImFfeENoYW5uZWxTZWxlY3RvciIsImFfeUNoYW5uZWxTZWxlY3RvciIsImFfc3RkRGV2aWF0aW9uIiwiYV9mZU1vcnBob2xvZ3lfb3BlcmF0b3IiLCJhX3JhZGl1cyIsImFfYmFzZUZyZW5xdWVuY3kiLCJhX251bU9jdGF2ZXMiLCJhX3NlZWQiLCJhX3N0aXRjaFRpbGVzIiwiYV9mZVR1cmJ1bGVuY2VfdHlwZSIsImFfeGxpbmtfc2hvdyIsImFfeGxpbmtfYWN0dWF0ZSIsImFfdGFyZ2V0IiwiYV92aWV3VGFyZ2V0IiwiYV9hdHRyaWJ1dGVOYW1lIiwiYV9hdHRyaWJ1dGVUeXBlIiwiYV9iZWdpbiIsImFfZHVyIiwiYV9taW4iLCJhX21heCIsImFfcmVzdGFydCIsImFfcmVwZWF0Q291bnQiLCJhX3JlcGVhdER1ciIsImFfZmlsbCIsImFfYW5pbWF0aW9uX2ZpbGwiLCJhX2ZpbGxfcnVsZSIsImFfY2FsY01vZGUiLCJhX2FuaW1hdGlvbl92YWx1ZXMiLCJhX2tleVRpbWVzIiwiYV9rZXlTcGxpbmVzIiwiYV9mcm9tIiwiYV90byIsImFfYnkiLCJhX2FkZGl0aXZlIiwiYV9hY2N1bXVsYXRlIiwiYV9rZXlQb2ludHMiLCJhX3BhdGgiLCJhX2FuaW1hdGVUcmFuc2Zvcm1fdHlwZSIsImFfaG9yaXpfb3JpZ2luX3giLCJhX2hvcml6X29yaWdpbl95IiwiYV9ob3Jpel9hZHZfeCIsImFfdmVydF9vcmlnaW5feCIsImFfdmVydF9vcmlnaW5feSIsImFfdmVydF9hZHZfeSIsImFfdW5pY29kZSIsImFfZ2x5cGhfbmFtZSIsImFfb3JpZW50YXRpb24iLCJhX2FyYWJpY19mb3JtIiwiYV9sYW5nIiwiYV91MSIsImFfdTIiLCJhX2cxIiwiYV9nMiIsImFfayIsImFfZm9udF9mYW1pbHkiLCJhX2ZvbnRfc3R5bGUiLCJhX2ZvbnRfdmFyaWFudCIsImFfZm9udF93ZWlnaHQiLCJhX2ZvbnRfc3RyZXRjaCIsImFfZm9udF9zaXplIiwiYV91bmljb2RlX3JhbmdlIiwiYV91bml0c19wZXJfZW0iLCJhX3N0ZW12IiwiYV9zdGVtaCIsImFfc2xvcGUiLCJhX2NhcF9oZWlnaHQiLCJhX3hfaGVpZ2h0IiwiYV9hY2NlbnRfaGVpZ2h0IiwiYV9hc2NlbnQiLCJhX3dpZHRocyIsImFfYmJveCIsImFfaWRlb2dyYXBoaWMiLCJhX2FscGhhYmV0aWMiLCJhX21hdGhlbWF0aWNhbCIsImFfaGFuZ2luZyIsImFfdmlkZW9ncmFwaGljIiwiYV92X2FscGhhYmV0aWMiLCJhX3ZfbWF0aGVtYXRpY2FsIiwiYV92X2hhbmdpbmciLCJhX3VuZGVybGluZV9wb3NpdGlvbiIsImFfdW5kZXJsaW5lX3RoaWNrbmVzcyIsImFfc3RyaWtldGhyb3VnaF9wb3NpdGlvbiIsImFfc3RyaWtldGhyb3VnaF90aGlja25lc3MiLCJhX292ZXJsaW5lX3Bvc2l0aW9uIiwiYV9vdmVybGluZV90aGlja25lc3MiLCJhX3N0cmluZyIsImFfbmFtZSIsImFfYWxpZ25tZW50X2Jhc2VsaW5lIiwiYV9kb21pbmFudF9iYXNlbGluZSIsImFfb25hYm9ydCIsImFfb25hY3RpdmF0ZSIsImFfb25iZWdpbiIsImFfb25lbmQiLCJhX29uZXJyb3IiLCJhX29uZm9jdXNpbiIsImFfb25mb2N1c291dCIsImFfb25sb2FkIiwiYV9vbnJlcGVhdCIsImFfb25yZXNpemUiLCJhX29uc2Nyb2xsIiwiYV9vbnVubG9hZCIsImFfb256b29tIiwiYV9vbmNsaWNrIiwiYV9vbm1vdXNlZG93biIsImFfb25tb3VzZXVwIiwiYV9vbm1vdXNlb3ZlciIsImFfb25tb3VzZW91dCIsImFfb25tb3VzZW1vdmUiLCJhX29udG91Y2hzdGFydCIsImFfb250b3VjaGVuZCIsImFfb250b3VjaG1vdmUiLCJhX29udG91Y2hjYW5jZWwiLCJhX3N0b3BfY29sb3IiLCJhX3N0b3Bfb3BhY2l0eSIsImFfc3Ryb2tlIiwiYV9zdHJva2Vfd2lkdGgiLCJhX3N0cm9rZV9saW5lY2FwIiwiYV9zdHJva2VfbGluZWpvaW4iLCJhX3N0cm9rZV9taXRlcmxpbWl0IiwiYV9zdHJva2VfZGFzaGFycmF5IiwiYV9zdHJva2VfZGFzaG9mZnNldCIsImFfc3Ryb2tlX29wYWNpdHkiLCJzdmciLCJkZWZzIiwiZGVzYyIsInRpdGxlIiwidXNlIiwiaW1hZ2UiLCJzd2l0Y2gkMCIsInN0eWxlIiwicGF0aCIsInJlY3QiLCJjaXJjbGUiLCJlbGxpcHNlIiwibGluZSIsInBvbHlsaW5lIiwicG9seWdvbiIsInRleHQiLCJ0c3BhbiIsInRyZWYiLCJ0ZXh0UGF0aCIsImFsdEdseXBoIiwiYWx0R2x5cGhEZWYiLCJhbHRHbHlwaEl0ZW0iLCJnbHlwaFJlZiIsIm1hcmtlciIsImNvbG9yX3Byb2ZpbGUiLCJsaW5lYXJHcmFkaWVudCIsInJhZGlhbEdyYWRpZW50Iiwic3RvcCIsInBhdHRlcm4iLCJjbGlwUGF0aCIsImZpbHRlciIsImZlRGlzdGFudExpZ2h0IiwiZmVQb2ludExpZ2h0IiwiZmVTcG90TGlnaHQiLCJmZUJsZW5kIiwiZmVDb2xvck1hdHJpeCIsImZlQ29tcG9uZW50VHJhbnNmZXIiLCJmZUZ1bmNBIiwiZmVGdW5jRyIsImZlRnVuY0IiLCJmZUZ1bmNSIiwiZmVDb21wb3NpdGUiLCJmZUNvbnZvbHZlTWF0cml4IiwiZmVEaWZmdXNlTGlnaHRpbmciLCJmZURpc3BsYWNlbWVudE1hcCIsImZlRmxvb2QiLCJmZUdhdXNzaWFuQmx1ciIsImZlSW1hZ2UiLCJmZU1lcmdlIiwiZmVNb3JwaG9sb2d5IiwiZmVPZmZzZXQiLCJmZVNwZWN1bGFyTGlnaHRpbmciLCJmZVRpbGUiLCJmZVR1cmJ1bGVuY2UiLCJjdXJzb3IiLCJ2aWV3Iiwic2NyaXB0IiwiYW5pbWF0ZSIsImFuaW1hdGVNb3Rpb24iLCJtcGF0aCIsImFuaW1hdGVDb2xvciIsImFuaW1hdGVUcmFuc2Zvcm0iLCJmb250IiwiZ2x5cGgiLCJtaXNzaW5nX2dseXBoIiwiaGtlcm4iLCJ2a2VybiIsImZvbnRfZmFjZSIsImZvbnRfZmFjZV9zcmMiLCJmb250X2ZhY2VfdXJpIiwiZm9udF9mYWNlX2Zvcm1hdCIsImZvbnRfZmFjZV9uYW1lIiwiZG9jX3RvZWx0IiwiZGF0YSIsImxlYWYiLCJub2RlIiwiY29lcmNlX2VsdCIsImZsb2F0X2F0dHJpYiQwIiwiaW50X2F0dHJpYiIsInN0cmluZ19hdHRyaWIkMCIsInVyaV9hdHRyaWIiLCJzcGFjZV9zZXBfYXR0cmliIiwiY29tbWFfc2VwX2F0dHJpYiIsInN0cmluZ19vZl9hbGlnbm1lbnRfYmFzZWxpbmUiLCJzdHJpbmdfb2ZfYmlnX3ZhcmlhbnQiLCJzdHJpbmdfb2ZfYm9vbCIsInN0cmluZ19vZl9jb29yZHMiLCJzdHJpbmdfb2ZfZG9taW5hbnRfYmFzZWxpbmUiLCJzdHJpbmdfb2ZfaW5fdmFsdWUiLCJzdHJpbmdfb2ZfaW50Iiwic3RyaW5nX29mX3BlcmNlbnRhZ2UiLCJzdHJpbmdfb2ZfZm91cmZsb2F0cyIsInN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYiIsInN0cmluZ19vZl9udW1iZXJzIiwic3RyaW5nX29mX251bWJlcnNfc2VtaWNvbG9uIiwic3RyaW5nX29mX29mZnNldCIsIngkMCIsInN0cmluZ19vZl9vcmllbnQiLCJzdHJpbmdfb2Zfc3Ryb2tlZGFzaGFycmF5Iiwic3RyaW5nX29mX3RyYW5zZm9ybSIsIngkMiIsImFuZ2xlIiwiYW5nbGUkMCIsImFuZ2xlJDEiLCJ4JDEiLCJzdHJpbmdfb2ZfdHJhbnNmb3JtcyIsImFsdGVybmF0aXZlX2NvbnRlbnRfdHlwZXMiLCJlbXB0eXRhZ3MiLCJib29sX2F0dHJpYiIsImNvbnN0YW50X2F0dHJpYiIsImxpbmt0eXBlc19hdHRyaWIiLCJtZWRpYWRlc2NfYXR0cmliIiwic3Jjc2V0X2F0dHJpYiIsImFfdGl0bGUiLCJhX3Byb3BlcnR5IiwiYV9vbmFmdGVycHJpbnQiLCJhX29uYmVmb3JlcHJpbnQiLCJhX29uYmVmb3JldW5sb2FkIiwiYV9vbmJsdXIiLCJhX29uY2FucGxheSIsImFfb25jYW5wbGF5dGhyb3VnaCIsImFfb25jaGFuZ2UiLCJhX29uY2xvc2UiLCJhX29uZHVyYXRpb25jaGFuZ2UiLCJhX29uZW1wdGllZCIsImFfb25lbmRlZCIsImFfb25mb2N1cyIsImFfb25mb3JtY2hhbmdlIiwiYV9vbmZvcm1pbnB1dCIsImFfb25oYXNoY2hhbmdlIiwiYV9vbmlucHV0IiwiYV9vbmludmFsaWQiLCJhX29ub2ZmbGluZSIsImFfb25vbmxpbmUiLCJhX29ucGF1c2UiLCJhX29ucGxheSIsImFfb25wbGF5aW5nIiwiYV9vbnBhZ2VoaWRlIiwiYV9vbnBhZ2VzaG93IiwiYV9vbnBvcHN0YXRlIiwiYV9vbnByb2dyZXNzIiwiYV9vbnJhdGVjaGFuZ2UiLCJhX29ucmVhZHlzdGF0ZWNoYW5nZSIsImFfb25yZWRvIiwiYV9vbnNlZWtlZCIsImFfb25zZWVraW5nIiwiYV9vbnNlbGVjdCIsImFfb25zaG93IiwiYV9vbnN0YWxsZWQiLCJhX29uc3RvcmFnZSIsImFfb25zdWJtaXQiLCJhX29uc3VzcGVuZCIsImFfb250aW1ldXBkYXRlIiwiYV9vbnVuZG8iLCJhX29udm9sdW1lY2hhbmdlIiwiYV9vbndhaXRpbmciLCJhX29ubG9hZGVkZGF0YSIsImFfb25sb2FkZWRtZXRhZGF0YSIsImFfb25sb2Fkc3RhcnQiLCJhX29ubWVzc2FnZSIsImFfb25tb3VzZXdoZWVsIiwiYV9vbmNvbnRleHRtZW51IiwiYV9vbmRibGNsaWNrIiwiYV9vbmRyYWciLCJhX29uZHJhZ2VuZCIsImFfb25kcmFnZW50ZXIiLCJhX29uZHJhZ2xlYXZlIiwiYV9vbmRyYWdvdmVyIiwiYV9vbmRyYWdzdGFydCIsImFfb25kcm9wIiwiYV9vbmtleXByZXNzIiwiYV9vbmtleWRvd24iLCJhX29ua2V5dXAiLCJhX3htbG5zIiwiYV9tYW5pZmVzdCIsImFfY2l0ZSIsImFfYWNjZXNza2V5IiwiYV9jaGFyc2V0IiwiYV9hY2NlcHRfY2hhcnNldCIsImFfYWNjZXB0IiwiYV9ocmVmbGFuZyIsImFfZG93bmxvYWQiLCJmaWxlIiwiYV9yZWwiLCJhX3RhYmluZGV4IiwiYV9taW1lX3R5cGUiLCJhX2FsdCIsInAiLCJhX3NyYyIsImFfbGFiZWxfZm9yIiwiYV9vdXRwdXRfZm9yIiwiYV9zZWxlY3RlZCIsImFfdGV4dF92YWx1ZSIsImFfaW50X3ZhbHVlIiwiYV92YWx1ZSIsImFfZmxvYXRfdmFsdWUiLCJhX2FjdGlvbiIsImFfZm9ybW1ldGhvZCIsImFfZW5jdHlwZSIsImFfY2hlY2tlZCIsImFfZGlzYWJsZWQiLCJhX3JlYWRvbmx5IiwiYV9tYXhsZW5ndGgiLCJhX21pbmxlbmd0aCIsImFfYWxsb3dmdWxsc2NyZWVuIiwiYV9hbGxvd3BheW1lbnRyZXF1ZXN0IiwiYV9yZWZlcnJlcnBvbGljeSIsImFfYXV0b2NvbXBsZXRlIiwiYV9hc3luYyIsImFfYXV0b2ZvY3VzIiwiYV9hdXRvcGxheSIsImFfbXV0ZWQiLCJhX2Nyb3Nzb3JpZ2luIiwiYV9pbnRlZ3JpdHkiLCJhX21lZGlhZ3JvdXAiLCJhX2NoYWxsZW5nZSIsImFfY29udGVudGVkaXRhYmxlIiwiY2UiLCJhX2NvbnRleHRtZW51IiwiYV9jb250cm9scyIsImFfZGlyIiwiYV9kcmFnZ2FibGUiLCJhX2Zvcm0iLCJhX2Zvcm1hY3Rpb24iLCJhX2Zvcm1lbmN0eXBlIiwiYV9mb3Jtbm92YWxpZGF0ZSIsImFfZm9ybXRhcmdldCIsImFfaGlkZGVuIiwiYV9oaWdoIiwiYV9pY29uIiwiYV9pc21hcCIsImFfa2V5dHlwZSIsImFfbGlzdCIsImFfbG9vcCIsImFfbG93IiwiYV9pbnB1dF9tYXgiLCJhX2lucHV0X21pbiIsImFfaW5wdXRtb2RlIiwiYV9ub3ZhbGlkYXRlIiwiYV9vcGVuIiwiYV9vcHRpbXVtIiwiYV9wYXR0ZXJuIiwiYV9wbGFjZWhvbGRlciIsImFfcG9zdGVyIiwiYV9wcmVsb2FkIiwiYV9wdWJkYXRlIiwiYV9yYWRpb2dyb3VwIiwiYV9yZXF1aXJlZCIsImFfcmV2ZXJzZWQiLCJhX3NhbmRib3giLCJhX3NwZWxsY2hlY2siLCJzYyIsImFfc2NvcGVkIiwiYV9zZWFtbGVzcyIsImFfc2l6ZXMiLCJzaXplcyIsImFfc3BhbiIsImFfc3JjbGFuZyIsImFfc3Jjc2V0IiwiYV9pbWdfc2l6ZXMiLCJhX3N0YXJ0IiwiYV9zdGVwIiwic3RlcCIsImFfdHJhbnNsYXRlIiwiYV93cmFwIiwiYV9zaXplIiwiYV9pbnB1dF90eXBlIiwiaXQiLCJhX21lbnVfdHlwZSIsImFfY29tbWFuZF90eXBlIiwiYV9idXR0b25fdHlwZSIsImJ0IiwiYV9zY3JpcHRfdHlwZSIsImFfbXVsdGlwbGUiLCJhX2NvbHMiLCJhX3Jvd3MiLCJhX3N1bW1hcnkiLCJhX2FsaWduIiwiYV9heGlzIiwiYV9jb2xzcGFuIiwiYV9oZWFkZXJzIiwiYV9yb3dzcGFuIiwiYV9zY29wZSIsImFfYm9yZGVyIiwiYV9ydWxlcyIsImFfY2hhciIsImFfZGF0YSIsImFfY29kZXR5cGUiLCJhX2ZyYW1lYm9yZGVyIiwiYV9tYXJnaW5oZWlnaHQiLCJhX21hcmdpbndpZHRoIiwiYV9zY3JvbGxpbmciLCJhX2NvbnRlbnQiLCJhX2h0dHBfZXF1aXYiLCJhX3JvbGUiLCJhX2FyaWEiLCJ0ZXJtaW5hbCIsInBsdXMiLCJvcHRpb25fY29ucyIsImJvZHkiLCJodG1sIiwiY29udGVudCIsImZvb3RlciIsImhlYWRlciIsInNlY3Rpb24iLCJuYXYiLCJlbnRpdHkiLCJzcGFjZSIsImNkYXRhIiwiY2RhdGFfc2NyaXB0IiwiY2RhdGFfc3R5bGUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZ3JvdXAiLCJhZGRyZXNzIiwiYmxvY2txdW90ZSIsImRpYWxvZyIsImRpdiIsInByZSIsImFiYnIiLCJiciIsImNpdGUiLCJkZm4iLCJlbSIsImtiZCIsInNhbXAiLCJzcGFuIiwic3Ryb25nIiwidGltZSIsInZhciQwIiwiZGwiLCJvbCIsInVsIiwiZGQiLCJsaSIsImhyIiwic21hbGwiLCJzdWIiLCJzdXAiLCJtYXJrIiwicnAiLCJydCIsInJ1YnkiLCJ3YnIiLCJiZG8iLCJkaXIiLCJhX2RhdGV0aW1lIiwiYV9zaGFwZSIsImFfY29vcmRzIiwiY29vcmRzIiwiYV91c2VtYXAiLCJhX2RlZmVyIiwiYV9sYWJlbCIsImFyZWEiLCJhbHQiLCJkZWwiLCJpbnMiLCJub3NjcmlwdCIsInRlbXBsYXRlIiwiYXJ0aWNsZSIsImFzaWRlIiwibWFpbiIsInZpZGVvX2F1ZGlvIiwic3JjcyIsInVyaSIsInNyY3MkMCIsImF1ZGlvIiwidmlkZW8iLCJjYW52YXMiLCJjb21tYW5kIiwibGFiZWwiLCJtZW51IiwiZW1iZWQiLCJzb3VyY2UiLCJtZXRlciIsIm91dHB1dF9lbHQiLCJmb3JtIiwiaW5wdXQiLCJrZXlnZW4iLCJvcHRpb24iLCJzZWxlY3QiLCJ0ZXh0YXJlYSIsImJ1dHRvbiIsImRhdGFsaXN0IiwicHJvZ3Jlc3MiLCJsZWdlbmQiLCJkZXRhaWxzIiwic3VtbWFyeSIsImZpZWxkc2V0Iiwib3B0Z3JvdXAiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiYyQwIiwiY2FwdGlvbiIsInRhYmxleCIsImNvbHVtbnMiLCJ0aGVhZCIsInRmb290IiwiY29sdW1ucyQwIiwiY29udGVudCQwIiwiY29udGVudCQxIiwidGQiLCJ0aCIsInRyIiwiY29sZ3JvdXAiLCJjb2wiLCJ0Ym9keSIsImlmcmFtZSIsIm9iamVjdCIsInBhcmFtcyIsImVsdHMkMCIsImltZyIsInBpY3R1cmUiLCJ0YWlsX25vZGUiLCJtZXRhIiwibGluayIsInJlbCIsImhyZWYiLCJiYXNlIiwicGFyYW0iLCJpbnRfYXR0cmliJDAiLCJ1cmlfYXR0cmliJDAiLCJzcGFjZV9zZXBfYXR0cmliJDAiLCJjb21tYV9zZXBfYXR0cmliJDAiLCJzdHJpbmdfb2Zfc2FuZGJveF90b2tlbiIsInN0cmluZ19vZl9saW5rdHlwZSIsInN0cmluZ19vZl9tZWRpYWRlc2NfdG9rZW4iLCJzdHJpbmdfb2ZfcmVmZXJyZXJwb2xpY3kiLCJzdHJpbmdfb2ZfaW5wdXRfdHlwZSIsInN0cmluZ19vZl9zY3JpcHRfdHlwZSIsInN0cmluZ19vZl9udW1iZXJfb3JfZGF0ZXRpbWUiLCJ0Iiwic3RyaW5nX29mX2NoYXJhY3RlciIsIm9ub2ZmX29mX2Jvb2wiLCJ1bm9wdGlvbl9zdHJpbmciLCJzdHJpbmdfb2Zfc3RlcCIsInN0cmluZ19vZl9zaXplcyIsInN0cmluZ19vZl9zYW5kYm94Iiwic3RyaW5nX29mX21lZGlhZGVzYyIsInN0cmluZ19vZl9saW5rdHlwZXMiLCJzdHJpbmdfb2Zfc3Jjc2V0IiwidXJsIiwidXJsJDAiLCJ2JDAiLCJ1cmwkMSIsInN0cmluZ19vZl9hdXRvY29tcGxldGUiLCJzdHJzIiwidXJpX29mX3N0cmluZyIsInMiLCJzdHJpbmdfb2ZfdXJpIiwiYWNvbnRlbnQiLCJhIiwiYW5hbWUiLCJuYW1lIiwiZmxvYXRfYXR0cmliIiwidmFsdWUiLCJpbnRfYXR0cmliIiwic3RyaW5nX2F0dHJpYiIsInNwYWNlX3NlcF9hdHRyaWIiLCJ2YWx1ZXMiLCJjb21tYV9zZXBfYXR0cmliIiwiZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiIsImtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIiwidG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJ1cmlfYXR0cmliIiwidXJpc19hdHRyaWIiLCJjb250ZW50IiwiZWx0IiwiZW1wdHkiLCJjb21tZW50IiwiYyIsInBjZGF0YSIsImQiLCJlbmNvZGVkcGNkYXRhIiwiZW50aXR5IiwiZSIsInJlX2VuZF9jZGF0YSIsImVuY29kZWRfY2RhdGEiLCJzMSIsInMyIiwiY2RhdGEiLCJjZGF0YV9zY3JpcHQiLCJjZGF0YV9zdHlsZSIsImxlYWYiLCJvcHQiLCJzdGgiLCJub2RlIiwiY2hpbGRyZW4iLCJwcmludCIsImZtdCIsIngiLCJwcCQwIiwicHBfZWx0JDAiLCJtZXJnZSIsIm1hcF9wYXRjaCIsIm1hcF9kYXRhIiwiZW1wdHkiLCJjcmVhdGUiLCJsIiwic2VuZCIsImluaXRpYWxfZXZlbnQiLCJjdXJyZW50IiwibXNnIiwicCIsImV2ZW50IiwiZnJvbV9ldmVudCIsImNvbnN0JDAiLCJ4IiwibWFwX21zZyIsImYiLCJtYXAiLCJzIiwicyQwIiwibXNnJDAiLCJ2YWx1ZSIsImMiLCJwYXRjaCIsInNldCIsImZvbGQiLCJhY2MiLCJhY2MkMCIsInNpZ25hbCIsIm9wdCIsInN0aCIsImVxIiwibCQwIiwiZnJvbV9zaWduYWwiLCJkJDAiLCJkIiwiaSIsImkkMCIsIngkMCIsImkkMSIsImoiLCJpJDIiLCJwJDUiLCJsJDciLCJuIiwicCQzIiwiaSQzIiwicCQ0IiwibCQyIiwib3AiLCJ4cyIsIm4kMCIsImFjYyQxIiwibiQxIiwibCQxIiwieHMkMCIsIngkMSIsIm4kMiIsImFjYyQyIiwieCQyIiwiaSQ0IiwiYSIsIm9mZnNldCIsImkkNSIsImEkMCIsImxlbiIsImkkNiIsInYiLCJqJDAiLCJpMCIsImgiLCJwJDAiLCJpMCQwIiwibCQzIiwicCQxIiwiaTAkMSIsImwkNCIsInAkMiIsImkwJDIiLCJsJDUiLCJsJDYiLCJlcXVhbCIsImwxIiwibDIiLCJsMSQwIiwibDIkMCIsIngyIiwibDEkMSIsIngxIiwibDIkMSIsIm1lbSIsImhhc2giLCJkaWZmIiwic3RoJDAiLCJseCQxIiwibHkkMyIsImFkZCIsInJlbW92ZSIsIm1lbXgiLCJtZW15IiwibGVmdCIsImx4IiwibHkiLCJseCQwIiwieSIsImx5JDAiLCJseSQxIiwiYWNjJDMiLCJhY2MkNCIsImx5JDIiLCJ5JDAiLCJhY2MkNSIsIm4kMyIsImFjYyQ2IiwiYWNjJDciLCJvcHQkMCIsImVtcHR5JDAiLCJjb25zIiwic25vYyIsImluc2VydCIsInVwZGF0ZSIsIm1vdmUiLCJpbmRleCIsImhkIiwidGwiLCJ1cGRhdGVfZXEiLCJoYW5kbGUiLCJkYXRhIiwicmVtb3ZlX2xhc3QiLCJyZW1vdmVfZXEiLCJzaW5nbGV0b24iLCJzaW5nbGV0b25fcyIsImZpcnN0IiwiZSIsInJlc3VsdCIsImNvbmNhdCIsInYxIiwidjIiLCJzaXplMSIsInNpemUyIiwic2l6ZV93aXRoX3BhdGNoIiwic2l6ZXgiLCJzaXplX3dpdGhfc2V0IiwicG9zIiwibSIsInBvcyQwIiwicG9zJDEiLCJwb3MkMiIsInBvcyQzIiwidXBkYXRlX3BhdGNoMSIsInVwZGF0ZV9wYXRjaDIiLCJwMSIsInAyIiwidHVwbGVfZXYiLCJwMiQyIiwicDIkMyIsInAxJDAiLCJwMiQwIiwiczIiLCJzMSIsInAxJDEiLCJzMiQwIiwicDIkMSIsIm1lcmdlZF9ldiIsImludmVyc2UiLCJyZXYiLCJ0IiwiZmlsdGVyIiwicHJlZCIsInNpemUiLCJmaWx0ZXJfbGlzdCIsInJlcyIsInRoZWlyX2kiLCJteV9pIiwibXlfaSQwIiwidGhlaXJfaSQwIiwicmVzJDAiLCJ0aGVpcl9pJDEiLCJub3JtYWxpc2UiLCJ1cGRhdGVfaW5kZXhfaW5zZXJ0IiwiaW5zZXJ0X3Bvc19mdWxsX2xpc3QiLCJ2aXNpYmxlIiwiaW5zZXJ0X3Bvc19mdWxsX2xpc3QkMCIsInVwZGF0YWJsZXMiLCJkaXNwbGFjZWQiLCJsZWZ0X2Fsb25lIiwiZGlzcGxhY2VkX2luX2ZpbHRlcmVkIiwidXBkYXRhYmxlcyQwIiwidXBkYXRlX2oiLCJqX2Z1bGxfbGlzdCIsImpfZmlsdGVyZWRfbGlzdCIsIm5ld19qX2ZpbHRlcmVkIiwiaW5zZXJ0X3Bvc19maWx0ZXJlZCIsInVwZGF0ZV9pbmRleF9tb3ZlIiwiZnJvbV9mdWxsX2xpc3QiLCJ0b19mdWxsX2xpc3QiLCJ0b19maWx0ZXJlZCIsIndhc192aXNpYmxlIiwiZm9yd2FyZCIsImlfZnVsbCIsImRlbHRhIiwiaV9maWx0ZXJlZCIsIm5ld192YWwiLCJpX2Z1bGwkMCIsImRlbHRhJDAiLCJpX2ZpbHRlcmVkJDAiLCJuZXdfdmFsJDAiLCJ0b19maWx0ZXJlZCQwIiwiY29udmVydF9wIiwicmVtb3ZlX3Bvc19mdWxsX2xpc3QiLCJyZXQiLCJuZXdfaiIsImxhc3RfaSIsInVwZGF0ZV9wb3NfZnVsbF9saXN0Iiwib2xkX2oiLCJ1cGRhdGVfaiQwIiwidXBkYXRhYmxlcyQxIiwibm9uZSIsInVwZGF0ZV9qJDEiLCJwcmV2aW91c19wb3NfZmlsdGVyZWQiLCJuZXdfcG9zX2ZpbHRlcmVkX2xpc3QiLCJvZmZzZXRfZnVsbCIsIm9yaWdpbl9mdWxsIiwib3JpZ2luX2Z1bGwkMCIsImRlc3RfZnVsbCIsIm9yaWdpbl9maWx0ZXJlZCIsImRlc3RfZmlsdGVyZWQiLCJzbWFsbF9vbmVzIiwiZmlsdGVyX2UiLCJmb3JfYWxsIiwiZm4iLCJtYXliZV91cGRhdGUiLCJpbml0IiwidXBkYXRlX2lkeF9hZnRlciIsInVwZGF0ZXMiLCJ2JDAiLCJrIiwiayQwIiwiZyIsImtleSIsInciLCJ3JDAiLCJ2JDEiLCJnJDAiLCJzeW1ib2wiLCJ4IiwieSIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJjb21wYXJlIiwiZXF1YWwiLCJtYXgiLCJtaW4iLCJlcXVhbCQwIiwiZXF1YWwkMSIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJjb21wYXJlJDIiLCJlcXVhbCQyIiwibWF4JDAiLCJtaW4kMCIsInJlYnVpbGRfbm9kZSIsIm9mX2VsZW1lbnQiLCJlbHQiLCJvZl9ub2RlIiwib2ZfcGNkYXRhIiwib2ZfaHRtbCIsIm9mX2hlYWQiLCJvZl9saW5rIiwib2ZfdGl0bGUiLCJvZl9tZXRhIiwib2ZfYmFzZSIsIm9mX3N0eWxlIiwib2ZfYm9keSIsIm9mX2Zvcm0iLCJvZl9vcHRncm91cCIsIm9mX29wdGlvbiIsIm9mX3NlbGVjdCIsIm9mX2lucHV0Iiwib2ZfdGV4dGFyZWEiLCJvZl9idXR0b24iLCJvZl9sYWJlbCIsIm9mX2ZpZWxkc2V0Iiwib2ZfbGVnZW5kIiwib2ZfdWwiLCJvZl9vbCIsIm9mX2RsIiwib2ZfbGkiLCJvZl9kaXYiLCJvZl9wIiwib2ZfaGVhZGluZyIsIm9mX2Jsb2NrcXVvdGUiLCJvZl9wcmUiLCJvZl9iciIsIm9mX2hyIiwib2ZfaW5zIiwib2ZfZGVsIiwib2ZfYSIsIm9mX2ltZyIsIm9mX29iamVjdCIsIm9mX3BhcmFtIiwib2ZfYXJlYSIsIm9mX21hcCIsIm9mX3NjcmlwdCIsIm9mX3RkIiwib2ZfdHIiLCJvZl9jb2wiLCJvZl90Zm9vdCIsIm9mX3RoZWFkIiwib2ZfdGJvZHkiLCJvZl9jYXB0aW9uIiwib2ZfdGFibGUiLCJvZl9jYW52YXMiLCJvZl9pZnJhbWUiLCJvZl9hdWRpbyIsIm9mX3ZpZGVvIiwib2ZfaDEiLCJvZl9oMiIsIm9mX2gzIiwib2ZfaDQiLCJvZl9oNSIsIm9mX2g2Iiwib2ZfYWJiciIsIm9mX2FkZHJlc3MiLCJvZl9hcnRpY2xlIiwib2ZfYXNpZGUiLCJvZl9iIiwib2ZfYmRvIiwib2ZfY2l0ZSIsIm9mX2NvZGUiLCJvZl9jb2xncm91cCIsIm9mX2NvbW1hbmQiLCJvZl9kYXRhbGlzdCIsIm9mX2RkIiwib2ZfZGV0YWlscyIsIm9mX2RmbiIsIm9mX2R0Iiwib2ZfZW0iLCJvZl9lbWJlZCIsIm9mX2ZpZ2NhcHRpb24iLCJvZl9maWd1cmUiLCJvZl9mb290ZXIiLCJvZl9oZWFkZXIiLCJvZl9oZ3JvdXAiLCJvZl9pIiwib2Zfa2JkIiwib2Zfa2V5Z2VuIiwib2ZfbWFpbiIsIm9mX21hcmsiLCJvZl9tZW51Iiwib2ZfbWV0ZXIiLCJvZl9uYXYiLCJvZl9ub3NjcmlwdCIsIm9mX291dHB1dCIsIm9mX3Byb2dyZXNzIiwib2ZfcSIsIm9mX3JwIiwib2ZfcnQiLCJvZl9ydWJ5Iiwib2Zfc2FtcCIsIm9mX3NlY3Rpb24iLCJvZl9zbWFsbCIsIm9mX3NvdXJjZSIsIm9mX3NwYW4iLCJvZl9zdHJvbmciLCJvZl9zdWIiLCJvZl9zdW1tYXJ5Iiwib2Zfc3VwIiwib2ZfdGgiLCJvZl90aW1lIiwib2ZfdSIsIm9mX3ZhciIsIm9mX3diciIsIm9mX29wdEdyb3VwIiwib2ZfdGV4dEFyZWEiLCJvZl9maWVsZFNldCIsIm9mX3VMaXN0Iiwib2Zfb0xpc3QiLCJvZl9kTGlzdCIsIm9mX3BhcmFncmFwaCIsIm9mX3F1b3RlIiwib2ZfbW9kIiwib2ZfYW5jaG9yIiwib2ZfaW1hZ2UiLCJvZl90YWJsZUNlbGwiLCJvZl90YWJsZVJvdyIsIm9mX3RhYmxlQ29sIiwib2ZfdGFibGVTZWN0aW9uIiwib2ZfdGFibGVDYXB0aW9uIiwib2ZfaUZyYW1lIiwid2Vha01hcCIsIm1hcCIsInJldGFpbiIsIm5vZGUiLCJrZWVwbWUiLCJwcmV2IiwidXJpX29mX3N0cmluZyIsInMiLCJzdHJpbmdfb2ZfdXJpIiwiYXR0ciIsIm5hbWUiLCJ2IiwiZmxvYXRfYXR0cmliIiwidmFsdWUiLCJpbnRfYXR0cmliIiwic3RyaW5nX2F0dHJpYiIsInNwYWNlX3NlcF9hdHRyaWIiLCJ2YWx1ZXMiLCJjb21tYV9zZXBfYXR0cmliIiwiZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiIsImtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIiwidG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJ1cmlfYXR0cmliIiwidXJpc19hdHRyaWIiLCJlbXB0eSIsImNvbW1lbnQiLCJjIiwicGNkYXRhIiwiZW5jb2RlZHBjZGF0YSIsInN0cmluZ19mb2xkIiwicG9zIiwiaW5pdCIsImYiLCJyIiwiaSIsImludmFsaWRfZW50aXR5IiwiZSIsInBhcnNlX2ludCIsImJhc2UiLCJhY2MiLCJkIiwiZW50aXR5IiwibGVuIiwic3RyIiwiaXRlcl9wcm9wX3Byb3RlY3RlZCIsIm4iLCJhdHRhY2hfYXR0cmlicyIsImwiLCJhdHQiLCJuJDAiLCJoIiwiZXYiLCJoJDAiLCJoJDEiLCJoJDIiLCJhIiwibGVhZiIsIm9wdCIsInN0aCIsImNoaWxkcmVuIiwiY2RhdGEiLCJjZGF0YV9zY3JpcHQiLCJjZGF0YV9zdHlsZSIsImxlYWYkMCIsIm5vZGUkMCIsImVsdCQwIiwiYWRkX3RvIiwiY29udGVudCIsImtlZXAiLCJpZCIsImJvZHkiLCJoZWFkIiwiaHRtbCIsInJldHVybiQwIiwiZm1hcCIsIm5pbCIsInNpbmdsZXRvbiIsImNvbnMiLCJ4cyIsIm1hcCQwIiwiYXBwZW5kIiwiaW5zZXJ0QXQiLCJkb20iLCJyZW1vdmVDaGlsZHJlbiIsInVwZGF0ZV9jaGlsZHJlbiIsIm5vZGVzIiwibXNnIiwicCIsImkkMCIsImkkMSIsImkkMiIsIngkMCIsImkkMyIsImkkNCIsIm9sZCIsIm1vdmUiLCJpJDUiLCJpJDYiLCJpJDciLCJmaWx0ZXJfYXR0cmliIiwib24iLCJhJDAiLCJhdHRyJDAiLCJmbG9hdF9hdHRyaWIkMCIsImludF9hdHRyaWIkMCIsInN0cmluZ19hdHRyaWIkMCIsInNwYWNlX3NlcF9hdHRyaWIkMCIsImNvbW1hX3NlcF9hdHRyaWIkMCIsImV2ZW50X2hhbmRsZXJfYXR0cmliJDAiLCJtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiQwIiwia2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIkMCIsInRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliJDAiLCJ1cmlfYXR0cmliJDAiLCJ1cmlzX2F0dHJpYiQwIiwicGNkYXRhJDAiLCJlbmNvZGVkcGNkYXRhJDAiLCJlbnRpdHkkMCIsIm5vZGUkMSIsIm5vZGUkMiIsImdldCIsIm5vZGUiLCJzZXQiLCJkYXRhIiwicmVtb3ZlIiwiY3JlYXRlIiwic2VxIiwiY2xlYXIiLCJpc19lbXB0eSIsImxlbmd0aCIsImN1cnIkMSIsImN1cnIiLCJsZW4iLCJsZW4kMCIsImN1cnIkMCIsImFkZF9sIiwiYWRkX3IiLCJ0YWtlX2wiLCJ0YWtlX3IiLCJ0YWtlX29wdF9sIiwidGFrZV9vcHRfciIsInRyYW5zZmVyX2wiLCJzMSIsInMyIiwidHJhbnNmZXJfciIsIml0ZXJfbCIsImYiLCJpdGVyX3IiLCJpdGVyX25vZGVfbCIsIml0ZXJfbm9kZV9yIiwiZm9sZF9sIiwiYWNjIiwiY3VyciQyIiwiYWNjJDAiLCJhY2MkMSIsImZvbGRfciIsImZpbmRfbm9kZV9sIiwiZmluZF9ub2RlX3IiLCJmaW5kX25vZGVfb3B0X2wiLCJmaW5kX25vZGVfb3B0X3IiLCJjb21wYXJlIiwic3RhdGVfb2ZfcmVzdWx0IiwieCIsImV4biIsInVuZGVybHlpbmciLCJwIiwicCQwIiwicCQxIiwic2V0X3Byb21pc2Vfc3RhdGUiLCJzdGF0ZSIsImhhbmRsZV9hbGwiLCJoYW5kbGVfYWxsX2V4Y2VwdF9ydW50aW1lIiwidiIsInJ1biIsImUiLCJuZXh0X2tleV9pZCIsIm5ld19rZXkiLCJpZCIsImN1cnJlbnRfc3RvcmFnZSIsImtleSIsInJlZnJlc2giLCJ2YWx1ZSIsIndpdGhfdmFsdWUiLCJuZXdfc3RvcmFnZSIsInNhdmVkX3N0b3JhZ2UiLCJyZXN1bHQiLCJleG4kMCIsImNvbmNhdF9yZWd1bGFyX2NhbGxiYWNrcyIsImwxIiwibDIiLCJjbGVhbl91cF9jYWxsYmFja19jZWxscyIsImNhbGxiYWNrcyIsImwxJDAiLCJsMiQwIiwiY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsIiwiY2VsbCIsInBzIiwiY2xlYW51cHNfZGVmZXJyZWQiLCJhZGRfcmVndWxhcl9jYWxsYmFja19saXN0X25vZGUiLCJleGlzdGluZyIsIm5vZGUkMCIsImFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhYyIsImFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYiIsInNlbGZfcmVtb3ZpbmdfY2FsbGJhY2tfd3JhcHBlciIsImFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYiQwIiwiYWRkX2NhbmNlbF9jYWxsYmFjayIsImFzeW5jX2V4Y2VwdGlvbl9ob29rIiwiaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvIiwicnVuX2NhbGxiYWNrcyIsImlzX2NhbmNlbGVkIiwiZnMiLCJpdGVyX2NhbGxiYWNrX2xpc3QkMiIsInJlc3QiLCJmcyQwIiwicmVzdCQwIiwiaXRlcl9saXN0JDAiLCJmcyQxIiwiZnMkMiIsInJlc3QkMSIsInN0b3JhZ2UiLCJpdGVyX2NhbGxiYWNrX2xpc3QiLCJpdGVyX2NhbGxiYWNrX2xpc3QkMSIsIml0ZXJfbGlzdCIsImYkMCIsIml0ZXJfY2FsbGJhY2tfbGlzdCQwIiwiY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoIiwiZGVmZXJyZWRfY2FsbGJhY2tzIiwiZGVmYXVsdF9tYXhpbXVtX2NhbGxiYWNrX25lc3RpIiwibGVhdmVfcmVzb2x1dGlvbl9sb29wIiwic3RvcmFnZV9zbmFwc2hvdCIsInJ1bl9pbl9yZXNvbHV0aW9uX2xvb3AiLCJhYmFuZG9uX3dha2V1cHMiLCJydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW0iLCJvcHQiLCJzdGgiLCJhbGxvd19kZWZlcnJpbmciLCJzdGgkMCIsIm1heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aCIsInNob3VsZF9kZWZlciIsInJlc29sdmUiLCJydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXQiLCJpZl9kZWZlcnJlZCIsInJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaSIsImRlZmVycmVkX3Jlc3VsdCIsImRlZmVycmVkX2NhbGxiYWNrIiwiaW1tZWRpYXRlX3Jlc3VsdCIsImRlZmVycmVkX3JlY29yZCIsIndha2V1cF9nZW5lcmFsIiwiYXBpX2Z1bmN0aW9uX25hbWUiLCJyIiwicmVzdWx0JDAiLCJ3YWtldXBfcmVzdWx0Iiwid2FrZXVwIiwid2FrZXVwX2V4biIsIndha2V1cF9sYXRlcl9nZW5lcmFsIiwid2FrZXVwX2xhdGVyX3Jlc3VsdCIsIndha2V1cF9sYXRlciIsIndha2V1cF9sYXRlcl9leG4iLCJjYW5jZWwiLCJjYW5jZWxlZF9yZXN1bHQiLCJjYW5jZWxfYW5kX2NvbGxlY3RfY2FsbGJhY2tzIiwiY2FsbGJhY2tzX2FjY3VtdWxhdG9yIiwicCQyIiwicGFyYW0iLCJyZXR1cm4kMCIsIm9mX3Jlc3VsdCIsImZhaWwiLCJyZXR1cm5fdW5pdCIsInJldHVybl9ub25lIiwicmV0dXJuX3NvbWUiLCJyZXR1cm5fbmlsIiwicmV0dXJuX3RydWUiLCJyZXR1cm5fZmFsc2UiLCJyZXR1cm5fb2siLCJyZXR1cm5fZXJyb3IiLCJmYWlsX3dpdGgiLCJtc2ciLCJmYWlsX2ludmFsaWRfYXJnIiwibmV3X3BlbmRpbmciLCJob3dfdG9fY2FuY2VsIiwid2FpdCIsInRhc2siLCJhZGRfdGFza19yIiwic2VxdWVuY2UiLCJhZGRfdGFza19sIiwicHJvdGVjdGVkJDAiLCJwX2ludGVybmFsIiwiY2FsbGJhY2siLCJwX3Jlc3VsdCIsInJlbW92ZV90aGVfY2FsbGJhY2siLCJwX2NhbGxiYWNrcyIsIm5vX2NhbmNlbCIsIm1ha2VfaW50b19wcm94eSIsIm91dGVyX3Byb21pc2UiLCJ1c2VyX3Byb3ZpZGVkX3Byb21pc2UiLCJvdXRlcl9jYWxsYmFja3MiLCJyZWd1bGFyX2NhbGxiYWNrcyIsImNsZWFudXBzX2RlZmVycmVkJDAiLCJyZWd1bGFyX2NhbGxiYWNrcyQwIiwiY2FuY2VsX2NhbGxiYWNrcyIsInN5bWJvbF9iaW5kIiwiY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsIiwiYmFja3RyYWNlX2JpbmQiLCJhZGRfbG9jIiwic3ltYm9sIiwicF9yZXN1bHQkMCIsImNhdGNoJDAiLCJoIiwiYmFja3RyYWNlX2NhdGNoIiwidHJ5X2JpbmQiLCJleG4kMSIsInAkMyIsImJhY2t0cmFjZV90cnlfYmluZCIsImZpbmFsaXplIiwiYmFja3RyYWNlX2ZpbmFsaXplIiwib25fY2FuY2VsIiwib25fc3VjY2VzcyIsImNhbGxiYWNrX2lmX2RlZmVycmVkIiwib25fZmFpbHVyZSIsIm9uX3Rlcm1pbmF0aW9uIiwib25fYW55IiwiZyIsIndyYXBfaW5fY2FuY2VsYWJsZSIsInBfdW5kZXJseWluZyIsImRvbnRfd2FpdCIsImFzeW5jIiwiaWdub3JlX3Jlc3VsdCIsImpvaW4iLCJudW1iZXJfcGVuZGluZ19pbl9wcyIsImpvaW5fcmVzdWx0IiwibmV3X3Jlc3VsdCIsInBzJDAiLCJwcyQxIiwiYm90aCIsInAxIiwicDIiLCJwYWlyIiwicDEkMCIsInAyJDAiLCJ2MiIsInYxIiwiYWxsIiwieSIsInZzIiwiaW5kZXgiLCJpJDEiLCJpIiwiaSQwIiwiY291bnRfcmVzb2x2ZWRfcHJvbWlzZXNfaW4iLCJ0b3RhbCQxIiwicHMkMiIsInBzJDMiLCJ0b3RhbCQyIiwicmVqZWN0ZWQkMSIsInRvdGFsIiwicmVqZWN0ZWQiLCJyZWplY3RlZCQwIiwidG90YWwkMCIsIm50aF9yZXNvbHZlZCIsIm4iLCJuJDAiLCJuJDIiLCJuJDEiLCJudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW4iLCJwcm5nIiwiY2hvb3NlIiwicGljayIsInFzIiwiY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0IiwicmVzdWx0cyIsInJlc3VsdHMkMCIsInJlc3VsdHMkMSIsIm5jaG9vc2UiLCJ2JDAiLCJucGljayIsIm5jaG9vc2Vfc3BsaXQiLCJwZW5kaW5nX2FjYyIsInBfaW50ZXJuYWwkMCIsInBlbmRpbmdfYWNjJDAiLCJ0b19yZXNvbHZlIiwiZnVsZmlsbGVkIiwicGVuZGluZyIsInBlbmRpbmckMCIsImZ1bGZpbGxlZCQwIiwiZGVidWdfc3RhdGVfaXMiLCJleHBlY3RlZF9zdGF0ZSIsImlzX3NsZWVwaW5nIiwicG9sbCIsImFwcGx5Iiwid3JhcCIsIndyYXAxIiwieDEiLCJ3cmFwMiIsIngyIiwid3JhcDMiLCJ4MyIsIndyYXA0IiwieDQiLCJ3cmFwNSIsIng1Iiwid3JhcDYiLCJ4NiIsIndyYXA3IiwieDciLCJwYXVzZV9ob29rIiwicGF1c2VkIiwicGF1c2UiLCJ3YWtldXBfcGF1c2VkIiwidG1wIiwicmVnaXN0ZXJfcGF1c2Vfbm90aWZpZXIiLCJhYmFuZG9uX3BhdXNlZCIsInBhdXNlZF9jb3VudCIsIm1hcCIsInQiLCJiaW5kIiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInN5bWJvbCQyIiwic3ltYm9sJDMiLCJsZXQkMCIsImlzX29uIiwic3dpdGNoJDAiLCJjaGVjayIsImFkZF9ob29rIiwiaG9vayIsIm9zIiwiYWRkX2hvb2tfb3JfZXhlYyIsInR1cm5fb2ZmIiwiaG9va3MiLCJ3aXRoX3N3aXRjaCIsImZuIiwiZW1wdHkiLCJyZXR1cm5fbHd0IiwiY29ucyIsImNvbnNfbHd0Iiwic2VxMSIsInNlcTIiLCJuZXh0IiwiYXBwZW5kIiwieCQwIiwibWFwX3MiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyX21hcF9zIiwib2siLCJmaWx0ZXIiLCJmaWx0ZXJfcyIsImZsYXRfbWFwX2FwcCIsInRhaWwiLCJmbGF0X21hcCIsImZvbGRfbGVmdCIsImF1eCIsImZvbGRfbGVmdF9zIiwiaXRlciIsIml0ZXJfcyIsIml0ZXJfcCIsIml0ZXJfbiIsIm1heF9jb25jdXJyZW5jeSIsIm1lc3NhZ2UiLCJsb29wIiwicnVubmluZyIsImF2YWlsYWJsZSIsImVsdCIsImNvbXBsZXRlIiwidW5mb2xkIiwidSIsImV4YyQwIiwiZXhjIiwidSQwIiwidW5mb2xkX2x3dCIsIm9mX2xpc3QiLCJsIiwidG9fbGlzdCQwIiwib2Zfc2VxIiwibmV4dCQwIiwib2Zfc2VxX2x3dCIsIm5ld19ub2RlIiwiY2xvbmUiLCJzIiwiZnJvbV9zb3VyY2UiLCJzb3VyY2UiLCJjbG9zZSIsImNsb3NlZCIsImZyb20iLCJmcm9tX2RpcmVjdCIsImlzX2Nsb3NlZCIsImVucXVldWUiLCJsYXN0IiwibmV3X2xhc3QiLCJlbnF1ZXVlJDAiLCJjcmVhdGVfd2l0aF9yZWZlcmVuY2UiLCJwdXNoX3NpZ25hbF9yZXNvbHZlciIsInB1c2hfc2lnbmFsIiwicHVzaF9zaWduYWxfcmVzb2x2ZXIkMCIsInB1c2giLCJvbGRfcHVzaF9zaWduYWxfcmVzb2x2ZXIiLCJuZXdfcHVzaF9zaWduYWxfcmVzb2x2ZXIiLCJuZXdfd2FpdGVyIiwiYSIsInN0cmVhbSIsInMkMCIsIm9mX2x3dF9zZXEiLCJvZl9pdGVyIiwib2ZfYXJyYXkiLCJvZl9zdHJpbmciLCJub3RpZnlfcHVzaGVyIiwiaW5mbyIsIm9sZF93YWtlbmVyIiwid2FrZW5lciIsIndhaXRlciIsInNlbGZfMSIsInNpemUiLCJuZXdfd2FrZW5lciIsImNyZWF0ZV9ib3VuZGVkIiwicHVzaF93YWtlbmVyIiwicHVzaF93YWl0ZXIiLCJ3YWtlbmVyX2NlbGwiLCJmZWVkIiwidGhyZWFkIiwicHVzaCQwIiwiY29uc3VtZSIsInBlZWtfcmVjIiwicGVlayIsIm5wZWVrX3JlYyIsIm5vZGUkMSIsIm5wZWVrIiwiZ2V0X3JlYyIsImdldF9leG5fcmVjIiwid3JhcF9leG4iLCJuZ2V0X3JlYyIsIm5nZXQiLCJnZXRfd2hpbGVfcmVjIiwidGVzdCIsImdldF93aGlsZSIsImdldF93aGlsZV9zX3JlYyIsImdldF93aGlsZV9zIiwibmV4dF9yZWMiLCJsYXN0X25ld19yZWMiLCJ4JDEiLCJsYXN0X25ldyIsInRvX2xpc3RfcmVjIiwidG9fbGlzdCIsInRvX3N0cmluZ19yZWMiLCJidWYiLCJ0b19zdHJpbmciLCJqdW5rIiwibmp1bmtfcmVjIiwibmp1bmsiLCJqdW5rX3doaWxlX3JlYyIsImp1bmtfd2hpbGUiLCJqdW5rX3doaWxlX3NfcmVjIiwianVua193aGlsZV9zIiwianVua19vbGQiLCJnZXRfYXZhaWxhYmxlIiwiZ2V0X2F2YWlsYWJsZV91cF90byIsIm1hcF9saXN0IiwicGVuZGluZ3MiLCJtYXBfbGlzdF9zIiwiZmxhdHRlbiIsImZvbGRfcmVjIiwiZm9sZCIsImZvbGRfc19yZWMiLCJmb2xkX3MiLCJpdGVyX3JlYyIsIml0ZXJfc19yZWMiLCJpdGVyX3BfcmVjIiwicmVzIiwiZmluZF9yZWMiLCJmaW5kIiwiZmluZF9zX3JlYyIsImZpbmRfcyIsImZpbmRfbWFwX3JlYyIsImZpbmRfbWFwIiwiZmluZF9tYXBfc19yZWMiLCJmaW5kX21hcF9zIiwiY29tYmluZSIsInQxIiwidDIiLCJuMSIsIm4yIiwiY3VycmVudF9zIiwiY29uY2F0Iiwic190b3AiLCJzdHJlYW1zIiwic3RyZWFtcyQwIiwibCQwIiwicGFyc2UiLCJoZXhkdW1wIiwibnVtIiwicG9zIiwicG9zJDEiLCJwb3MkMiIsImNoIiwibGlmdCIsImVycm9yIiwibWFwX2Vycm9yIiwibWFwX2VyciIsImdldF9leG4iLCJiaW5kX2Vycm9yIiwiYmluZF9sd3QiLCJiaW5kX3Jlc3VsdCIsImJpbmRfbHd0X2Vycm9yIiwiYmluZF9sd3RfZXJyIiwiYiIsInNldF9vbmNlIiwiYiQwIiwiYSQwIiwiaXRlcl9lcnJvciIsIm1hcCQwIiwibGluayIsImMyIiwicjIiLCJjMSIsInIxIiwiYyIsImlucyIsInQkMCIsInRzJDAiLCJ0JDEiLCJ0cyQxIiwidHMiLCJhZGQiLCJ1bmlvbiIsInRzMiIsInRzMSIsImZpbmRfbWluIiwibG9va3VwX21pbiIsImdldF9taW4iLCJyZW1vdmVfbWluIiwidGwiLCJ0YWlsX3JlY3Vyc2l2ZV9tYXAiLCJ0YWlsX3JlY3Vyc2l2ZV9tYXBpX3JldiIsImhkIiwiaXRlcmlfcyIsIml0ZXJpX3AiLCJpbm5lciIsImNvbGxlY3RfcmV2IiwibWFwX3AiLCJmaWx0ZXJfbWFwX3AiLCJjb2xsZWN0X29wdGlvbmFsX3JldiIsIm1hcGlfcyIsIm1hcGlfcCIsInJldl9tYXBfYXBwZW5kX3MiLCJyZXZfbWFwX3MiLCJyZXZfbWFwX3AiLCJsJDEiLCJmb2xkX3JpZ2h0X3MiLCJmb3JfYWxsX3MiLCJmb3JfYWxsX3AiLCJibCIsImV4aXN0c19zIiwiZXhpc3RzX3AiLCJvcHRpb25hbGl6ZSIsImZpbHRlcl9wIiwicGFydGl0aW9uX3MiLCJhY2MxIiwiYWNjMiIsInBhcnRpdGlvbl9wIiwiZ3JvdXAxIiwiZ3JvdXAyIiwibSIsInZhbGlkYXRlIiwic3RoJDEiLCJkaXNwb3NlIiwiY3JlYXRlX21lbWJlciIsInJlbGVhc2UiLCJ2YWxpZGF0ZV9hbmRfcmV0dXJuIiwidXNlIiwiY2xlYXJlZCIsImNsZWFyZWQkMCIsInByb21pc2UiLCJlbGVtZW50IiwiZWxlbWVudHMiLCJvbGRfY2xlYXJlZCIsIndhaXRfcXVldWVfbGVuZ3RoIiwiY3JlYXRlX2VtcHR5IiwicHV0IiwibXZhciIsInciLCJ3JDAiLCJ0YWtlX2F2YWlsYWJsZSIsInRha2UiLCJsb2NrIiwidW5sb2NrIiwid2l0aF9sb2NrIiwiaXNfbG9ja2VkIiwibXV0ZXgiLCJjdmFyIiwic2lnbmFsIiwiYXJnIiwiYnJvYWRjYXN0Iiwid2FrZW5lcnMiLCJicm9hZGNhc3RfZXhuIiwid2l0aF9maW5hbGlzZXIiLCJmIiwiZXZlbnQiLCJyIiwieCIsIm5leHQiLCJldiIsIndha2VuZXIiLCJ3YWl0ZXIiLCJldiQwIiwibGltaXQiLCJlIiwibGltaXRlciIsImRlbGF5ZWQiLCJwdXNoIiwiaXRlciIsImNlbGwiLCJjZWxsJDAiLCJjYW5jZWxfdGhyZWFkIiwidCIsImZyb20iLCJsb29wIiwidG9fc3RyZWFtIiwic2V0X3JlZiIsInN0cmVhbSIsIm9mX3N0cmVhbSIsInYiLCJleG4kMCIsImV4biIsImRlbGF5IiwidGhyZWFkIiwic2VuZCIsImtlZXAiLCJydW5fcCIsInJ1bl9zIiwibXV0ZXgiLCJtYXBfcCIsIm1hcF9zIiwiYXBwX3AiLCJlZiIsImFwcF9zIiwiZmlsdGVyX3AiLCJmaWx0ZXJfcyIsImZtYXBfcCIsImZtYXBfcyIsImRpZmZfcyIsInByZXZpb3VzIiwieSIsImFjY3VtX3MiLCJhY2MiLCJhY2MkMCIsImZvbGRfcyIsInJldl9mb2xkIiwibCIsIm1lcmdlX3MiLCJlbCIsIndpdGhfZmluYWxpc2VyJDAiLCJzaWduYWwiLCJsaW1pdCQwIiwiZXEiLCJzIiwia2VlcCQwIiwicnVuX3MkMCIsIm1hcF9zJDAiLCJhcHBfcyQwIiwic2YiLCJmaWx0ZXJfcyQwIiwiaSIsImZtYXBfcyQwIiwiZGlmZl9zJDAiLCJzYW1wbGVfcyIsImFjY3VtX3MkMCIsImZvbGRfcyQwIiwicmV2X2ZvbGQkMCIsIm1lcmdlX3MkMCIsInNsIiwibDFfcyIsInMxIiwibDJfcyIsInMyIiwieDEiLCJ4MiIsImwzX3MiLCJzMyIsIngzIiwibDRfcyIsInM0IiwieDQiLCJsNV9zIiwiczUiLCJ4NSIsImw2X3MiLCJzNiIsIng2IiwiYmluZF9zIiwic3ltYm9sIiwieCIsInkiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiY29tcGFyZSIsImVxdWFsIiwibWF4IiwibWluIiwiZXF1YWwkMCIsImVxdWFsJDEiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwiY29tcGFyZSQyIiwiZXF1YWwkMiIsIm1heCQwIiwibWluJDAiLCJjIiwicGVyZm9ybV9yYXciLCJvcHQiLCJjb250ZW50X3R5cGUiLCJwcm9ncmVzcyIsInVwbG9hZF9wcm9ncmVzcyIsImNvbnRlbnRzIiwib3ZlcnJpZGVfbWltZV90eXBlIiwib3ZlcnJpZGVfbWV0aG9kIiwid2l0aF9jcmVkZW50aWFscyIsInN0aCIsImhlYWRlcnMiLCJzdGgkMCIsImdldF9hcmdzIiwic3RoJDEiLCJjaGVja19oZWFkZXJzIiwidXJsIiwiYyQwIiwiYXJncyIsIm9ubHlfc3RyaW5ncyIsImZvcm1fY29udGVudHMiLCJ2YWx1ZSIsIm5hbWUiLCJiIiwiY29udGVudHMkMCIsIm92ZXJyaWRlX21ldGhvZCQwIiwibSIsInYiLCJmb3JtIiwiY29udGVudF90eXBlJDEiLCJtZXRob2QiLCJtZXRob2QkMCIsInVybCQwIiwidyIsInJlcyIsIm1pbWVfdHlwZSIsImMkMSIsImNvbnRlbnRfdHlwZSQyIiwibiIsImhlYWRlcnMkMCIsInMiLCJzdCIsImRvX2NoZWNrX2hlYWRlcnMiLCJjb2RlIiwicmVzcG9uc2UiLCJjb2RlJDAiLCJjb2RlJDEiLCJjb2RlJDIiLCJjb2RlJDMiLCJjb2RlJDQiLCJkb2MiLCJwcm9ncmVzcyQwIiwidXBsb2FkX3Byb2dyZXNzJDAiLCJsIiwibCQwIiwiZiIsImIkMCIsInBlcmZvcm1fcmF3X3VybCIsInBlcmZvcm0iLCJnZXQiLCJzbGVlcCIsImQiLCJ0IiwiaWQiLCJ5aWVsZCQwIiwid2FrZXVwIiwicHJlcnJfc3RyaW5nIiwiZXhuIiwiY2FsbF9jdXN0b21fdXJsIiwidGltZW91dCIsIm1ha2VfdXJpIiwicHJlZml4IiwidXNlcl9jYiIsImVycm9yX2NiIiwic2l6ZSIsImkiLCJ1cmkiLCJmaW5hbGl6ZSIsInBhcmVudCIsImV4ZWN1dGVkIiwiZGVsYXkiLCJ3YWl0IiwibmV3X3QiLCJhZGRfcGFyYW0iLCJjYWxsIiwicGFyYW0iLCJjYm5hbWUiLCJodHRwIiwibmV3X3VybCIsImh0dHAkMCIsImZpbGUiLCJzeW1ib2xfYmluZCIsImFzeW5jIiwib3B0X21hcCIsIm1ha2VfZXZlbnQiLCJldmVudF9raW5kIiwidXNlX2NhcHR1cmUiLCJwYXNzaXZlIiwidGFyZ2V0IiwiZWwiLCJjYW5jZWwiLCJldiIsImNhdGNoX2NhbmNlbCIsImUiLCJ3aXRoX2Vycm9yX2xvZyIsInNlcV9sb29wIiwiZXZoIiwiaGFuZGxlciIsImNhbmNlbF9oYW5kbGVyIiwiY2FuY2VsbGVkIiwiY3VyIiwiY3VyX2hhbmRsZXIiLCJsdCIsImF1eCIsImFzeW5jX2xvb3AiLCJidWZmZXJlZF9sb29wIiwiY2FuY2VsX3F1ZXVlIiwicXVldWUiLCJzcGF3biIsInNwYXduZXIiLCJydW5uZXIiLCJ0bCIsImZ1bmNfbGltaXRlZF9sb29wIiwiZXZlbnQiLCJsaW1pdGVkX2Z1bmMiLCJjb3VudCIsIm5iIiwibGltaXRlZF9sb29wIiwiZWxhcHNlZF90aW1lIiwiY2xpY2siLCJjb3B5IiwiY3V0IiwicGFzdGUiLCJkYmxjbGljayIsIm1vdXNlZG93biIsIm1vdXNldXAiLCJtb3VzZW92ZXIiLCJtb3VzZW1vdmUiLCJtb3VzZW91dCIsImtleXByZXNzIiwia2V5ZG93biIsImtleXVwIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJmb2N1cyIsImJsdXIiLCJzY3JvbGwiLCJzdWJtaXQiLCJzZWxlY3QiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsImNhbnBsYXkiLCJjYW5wbGF5dGhyb3VnaCIsImR1cmF0aW9uY2hhbmdlIiwiZW1wdGllZCIsImVuZGVkIiwibG9hZGVkZGF0YSIsImxvYWRlZG1ldGFkYXRhIiwibG9hZHN0YXJ0IiwicGF1c2UiLCJwbGF5IiwicGxheWluZyIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwibW91c2V3aGVlbCIsImR4IiwiZHkiLCJ3aGVlbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwibG9zdHBvaW50ZXJjYXB0dXJlIiwiZ290cG9pbnRlcmNhcHR1cmUiLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInRyYW5zaXRpb25lbmQiLCJlbHQiLCJ0cmFuc2l0aW9uc3RhcnQiLCJ0cmFuc2l0aW9ucnVuIiwidHJhbnNpdGlvbmNhbmNlbCIsImNsaWNrcyIsImNvcGllcyIsImN1dHMiLCJwYXN0ZXMiLCJkYmxjbGlja3MiLCJtb3VzZWRvd25zIiwibW91c2V1cHMiLCJtb3VzZW92ZXJzIiwibW91c2Vtb3ZlcyIsIm1vdXNlb3V0cyIsImtleXByZXNzZXMiLCJrZXlkb3ducyIsImtleXVwcyIsImNoYW5nZXMiLCJpbnB1dHMiLCJ0aW1ldXBkYXRlcyIsImRyYWdzdGFydHMiLCJkcmFnZW5kcyIsImRyYWdlbnRlcnMiLCJkcmFnb3ZlcnMiLCJkcmFnbGVhdmVzIiwiZHJhZ3MiLCJkcm9wcyIsIm1vdXNld2hlZWxzIiwid2hlZWxzIiwidG91Y2hzdGFydHMiLCJ0b3VjaG1vdmVzIiwidG91Y2hlbmRzIiwidG91Y2hjYW5jZWxzIiwiZm9jdXNlcyIsImJsdXJzIiwic2Nyb2xscyIsInN1Ym1pdHMiLCJzZWxlY3RzIiwiYWJvcnRzIiwiZXJyb3JzIiwibG9hZHMiLCJjYW5wbGF5cyIsImNhbnBsYXl0aHJvdWdocyIsImR1cmF0aW9uY2hhbmdlcyIsImVtcHRpZWRzIiwiZW5kZWRzIiwibG9hZGVkZGF0YXMiLCJsb2FkZWRtZXRhZGF0YXMiLCJsb2Fkc3RhcnRzIiwicGF1c2VzIiwicGxheXMiLCJwbGF5aW5ncyIsInJhdGVjaGFuZ2VzIiwic2Vla2VkcyIsInNlZWtpbmdzIiwic3RhbGxlZHMiLCJzdXNwZW5kcyIsInZvbHVtZWNoYW5nZXMiLCJ3YWl0aW5ncyIsImxvc3Rwb2ludGVyY2FwdHVyZXMiLCJnb3Rwb2ludGVyY2FwdHVyZXMiLCJwb2ludGVyZW50ZXJzIiwicG9pbnRlcmNhbmNlbHMiLCJwb2ludGVyZG93bnMiLCJwb2ludGVybGVhdmVzIiwicG9pbnRlcm1vdmVzIiwicG9pbnRlcm91dHMiLCJwb2ludGVyb3ZlcnMiLCJwb2ludGVydXBzIiwidHJhbnNpdGlvbmVuZHMiLCJ0cmFuc2l0aW9uc3RhcnRzIiwidHJhbnNpdGlvbnJ1bnMiLCJ0cmFuc2l0aW9uY2FuY2VscyIsInJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIiwib25sb2FkIiwiZG9tQ29udGVudExvYWRlZCIsIndha2V1cF9leG4iLCJyZWd1bGFyIiwicmVhZHlzdGF0ZWNoYW5nZSIsImluaXQiLCJvbnVubG9hZCIsIm9uYmVmb3JldW5sb2FkIiwib25yZXNpemUiLCJvbm9yaWVudGF0aW9uY2hhbmdlIiwib25wb3BzdGF0ZSIsIm9uaGFzaGNoYW5nZSIsIm9ub3JpZW50YXRpb25jaGFuZ2Vfb3Jfb25yZXNpeiIsIm9ucmVzaXplcyIsIm9ub3JpZW50YXRpb25jaGFuZ2VzIiwib25wb3BzdGF0ZXMiLCJvbmhhc2hjaGFuZ2VzIiwib25vcmllbnRhdGlvbmNoYW5nZXNfb3Jfb25yZXNpIiwibGltaXRlZF9vbnJlc2l6ZXMiLCJsaW1pdGVkX29ub3JpZW50YXRpb25jaGFuZ2VzIiwibGltaXRlZF9vbm9yaWVudGF0aW9uY2hhbmdlc19vIiwicmVhZGVyIiwia2luZCIsImZpbGVSZWFkZXIiLCJyZWFkQXNCaW5hcnlTdHJpbmciLCJyZWFkQXNUZXh0IiwicmVhZEFzVGV4dF93aXRoRW5jb2RpbmciLCJyZWFkQXNEYXRhVVJMIiwidG9zcyQwIiwiZSIsImlkJDAiLCJ2YWx1ZSIsImRlYnVnJDAiLCJpbmZvJDAiLCJub3RpY2UkMCIsIndhcm5pbmckMCIsImVycm9yJDAiLCJmYXRhbCQwIiwianF1ZXJ5X29uIiwic2VsZWN0b3IiLCJldmVudCIsImhhbmRsZXIiLCJvcHRpb25fc3RyaW5nIiwiaWQiLCJwbG90UE5HJDAiLCJwbG90U3R5bGVJZCIsInBsb3REaXZJZCIsInRpdGxlIiwicGxvdE5hbWUiLCJwbG90U1ZHJDAiLCJzYXZlRmlsZSQwIiwiZGF0YSIsIm1pbWUiLCJmaWxlbmFtZSIsIm1ldGhvZF90b19zdHJpbmciLCJhamF4X3JlcXVlc3QiLCJ0aW1lb3V0IiwidXJsIiwibWV0aCIsInRpbWVvdXQkMCIsInN0YXR1cyIsInJlc3BvbnNlIiwiZGF0YSQwIiwiYXN5bmMiLCJsb2MiLCJ0YXNrIiwiZXhuIiwiZ3VpZCQwIiwibW9kYWwkMCIsImFjdGlvbiIsImVsZW1lbnRfZGF0YSIsImVsZW1lbnQiLCJsYWJlbCIsImNyZWF0ZV9zb3J0IiwiY2hpbGRyZW5fdmFsdWUiLCJtYXAiLCJoaWRlX2NvZGVtaXJyb3IiLCJzaG93X2NvZGVtaXJyb3IiLCJhdG9tIiwibGlzdCIsImxhYmVsIiwibGlzdF90cnVlIiwibGlzdF9mYWxzZSIsImxhYmVsX3RydWUiLCJsYWJlbF9mYWxzZSIsInNldF9lc2NhcGUiLCJmbXQiLCJlc2NhcGUiLCJmbHVzaDAiLCJwcmludDAiLCJ0YWdmMCIsImlzX3RhZyIsIm1vdCIsInRhZyIsIm1jdCIsInByaW50IiwicyIsInAiLCJuIiwidGFnZiIsImRlZmluZV9zdHlsZXMiLCJlc2NhcGUkMCIsImwiLCJ0YmwxIiwidGJsMiIsInN0eWxlIiwic3R5bGVfbmFtZSIsIm1hcmtfb3Blbl90YWciLCJtYXJrX2Nsb3NlX3RhZyIsImVzYyIsImVzYyQwIiwiczAiLCJzMSIsInBwX29wZW5feGJveCIsImluZGVudCIsImV4dHJhX2JveCIsIndyYXAiLCJvcGVuX3RhZyIsImNsb3NlX3RhZyIsInRhZ19zdHJpbmciLCJvIiwiZnByaW50X3QiLCJwYXJhbSQwIiwicCQwIiwiZnByaW50X2xpc3QiLCJwJDEiLCJjbCIsInNlcCIsIm9wIiwidGwiLCJoZCIsImZwcmludF9saXN0X2JvZHlfc3RpY2tfbGVmdCIsIngiLCJscCIsImxhYiIsImwkMCIsInAkMiIsImNsJDAiLCJzZXAkMCIsIm9wJDAiLCJpbmRlbnQkMCIsImYiLCJmcHJpbnRfb3B0X2xhYmVsIiwicGFyYW0iLCJjbCQxIiwib3AkMSIsImJhc2VfaW5kZW50Iiwic2VwX2luZGVudCIsImNsb3NlX2V4dHJhJDAiLCJvcGVuX2V4dHJhJDAiLCJjbG9zZV9leHRyYSIsIm9wZW5fZXh0cmEiLCJ0b19mb3JtYXR0ZXIiLCJpbml0X2FjYyIsIm1lcmdlX2FjYyIsImZvcmNlX2JyZWFrczEiLCJmb3JjZV9icmVha3MyIiwiZm9yY2VfYnJlYWtzMSQwIiwibWFwX25vZGUiLCJmb3JjZV9icmVha3MiLCJjaGlsZHJlbiIsImEiLCJiIiwibHAkMCIsImF1eCIsIngkMCIsImFjYyIsIm5ld19jaGlsZHJlbiIsImFjY3MiLCJhY2MkMCIsInh5cyIsInkiLCJ4MiIsIngxIiwicGFyYW0kMSIsImFjYzAiLCJhY2MxIiwibmV3X3gxIiwiYWNjMiIsIm5ld194MiIsImFjYyQxIiwiYWNjJDIiLCJuZXdfeCIsInRvX2J1ZmZlciIsIm9wdCIsImJ1ZiIsInN0aCIsInN0aCQwIiwic3R5bGVzIiwidG9fc3RyaW5nIiwidG9fY2hhbm5lbCIsIm9jIiwidG9fc3Rkb3V0IiwidG9fc3RkZXJyIiwiZnByaW50X3QkMCIsImxhYmVsJDAiLCJ0b19idWZmZXIkMCIsInRvX3N0cmluZyQwIiwidG9fZm9ybWF0dGVyJDAiLCJ0b19jaGFubmVsJDAiLCJ0b19zdGRvdXQkMCIsInRvX3N0ZGVyciQwIiwiZXJyb3IiLCJzIiwic3RyaW5nOF9vZl9pbnQiLCJ4IiwiaSIsInN0cmluZzRfb2ZfaW50IiwicHJpbnRfYml0cyIsIm9wdCIsImxlbiIsInN0aCIsInBvcyIsInNsZW4iLCJsZW4kMCIsImxlbiQxIiwiciIsImsiLCJqIiwiYyIsImludF9zaXplIiwiZHVtbXlfdHlwZV9pZCIsIm4iLCJjcmVhdGVfdHlwZV9pZCIsImVxdWFsIiwidDIiLCJ4MiIsInQxIiwieDEiLCJoYXNoIiwiY3JlYXRlIiwiY2xlYXIiLCJ0YmwiLCJwdXQiLCJwb3MwIiwiY3JlYXRlJDAiLCJjbGVhciQwIiwicHV0JDAiLCJnZXQiLCJ0cnlfcHJlcmVhZCIsImliIiwicmVhZCIsInBvcyQwIiwicmVhZF9jaGFyIiwiYyQwIiwicGVlayIsImZyb21fYnl0ZXMiLCJzdGgkMCIsInNocmxlbiIsImZyb21fc3RyaW5nIiwiZnJvbV9jaGFubmVsIiwiaWMiLCJuJDAiLCJyZW1fbGVuIiwidG9fcmVhZCIsImFjY3UiLCJhY2N1JDAiLCJyZWFsbHlfcmVhZCIsInJlYWxseV9leHRlbmQiLCJiIiwic2xlbjAiLCJyZXFsZW4iLCJmbHVzaF90b19vdXRwdXQiLCJhYnN0cmFjdF9vdXRwdXQiLCJmbHVzaF90b19jaGFubmVsIiwib2MiLCJtYWtlX3Jvb20iLCJjcmVhdGVfY2hhbm5lbF93cml0ZXIiLCJmbHVzaF9jaGFubmVsX3dyaXRlciIsImNyZWF0ZV9vdXRwdXRfd3JpdGVyIiwib3V0IiwiZXh0ZW5kIiwiYWxsb2MiLCJhZGRfc3ViIiwiYmxpdCIsImFkZF9zdWJzdHJpbmciLCJhZGRfc3ViYnl0ZXMiLCJhZGRfc3RyaW5nIiwiYWRkX2J5dGVzIiwiYWRkX2NoYXIiLCJ1bnNhZmVfYWRkX2NoYXIiLCJhZGRfY2hhcjIiLCJjMSIsImMyIiwiYWRkX2NoYXI0IiwiYzMiLCJjNCIsInJlc2V0IiwiY29udGVudHMiLCJtIiwibWF4X2hpZ2hlc3RfYnl0ZSIsIm1heF92aW50X2J5dGVzIiwibSQwIiwiaCIsInVuc2lnbmVkX29mX3NpZ25lZCIsIndyaXRlX3V2aW50IiwiYnVmIiwiYnl0ZSQwIiwid3JpdGVfc3ZpbnQiLCJ1dmludF9vZl91aW50IiwiYnVmZmVyIiwic3ZpbnRfb2ZfaW50IiwicmVhZF91dmludCIsImF2YWlsIiwicmVhZF9zdmludCIsImNoZWNrX2VuZF9vZl9pbnB1dCIsInVpbnRfb2ZfdXZpbnQiLCJpbnRfb2Zfc3ZpbnQiLCJyZWFkX3N0cmVhbSIsIm9mX3N0cmluZyIsImkkMiIsImkkMCIsIm4kMSIsImkkMSIsInN0IiwiYSIsIm5leHQiLCJhJDAiLCJ3cml0ZV9zdHJlYW0iLCJ0b19zdHJpbmciLCJjaHVua19sZW4iLCJhY2MiLCJmbHVzaF9jaHVuayIsImwiLCJ0bCIsInRsJDAiLCJoZCIsIm4kMyIsIm4kMiIsInRlc3QiLCJzdCQwIiwibCQwIiwiYm9vbF90YWciLCJpbnQ4X3RhZyIsImludDE2X3RhZyIsImludDMyX3RhZyIsImludDY0X3RhZyIsImZsb2F0MzJfdGFnIiwiZmxvYXQ2NF90YWciLCJ1dmludF90YWciLCJzdmludF90YWciLCJzdHJpbmdfdGFnIiwiYXJyYXlfdGFnIiwidHVwbGVfdGFnIiwicmVjb3JkX3RhZyIsIm51bV92YXJpYW50X3RhZyIsInZhcmlhbnRfdGFnIiwidW5pdF90YWciLCJ0YWJsZV90YWciLCJzaGFyZWRfdGFnIiwibWFrZV9zaWduZWQiLCJoYXNoX25hbWUiLCJ3cml0ZV9oYXNodGFnIiwib2IiLCJoJDAiLCJoYXNfYXJnIiwiaCQxIiwiaCQyIiwiaCQzIiwic3RyaW5nX29mX2hhc2h0YWciLCJyZWFkX2hhc2h0YWciLCJjb250IiwieDAiLCJ4MyIsIng0IiwicmVhZF9maWVsZF9oYXNodGFnIiwid3JpdGVfbnVtdGFnIiwicmVhZF9udW10YWciLCJtYWtlX3VuaGFzaCIsInMkMCIsIndyaXRlX3RhZyIsIndyaXRlX3VudGFnZ2VkX3VuaXQiLCJ3cml0ZV91bnRhZ2dlZF9ib29sIiwid3JpdGVfdW50YWdnZWRfY2hhciIsIndyaXRlX3VudGFnZ2VkX2ludDgiLCJ3cml0ZV91bnRhZ2dlZF9pbnQxNiIsIndyaXRlX3VudGFnZ2VkX2ludDMyIiwiaGlnaCIsIndyaXRlX3VudGFnZ2VkX2Zsb2F0MzIiLCJmbG9hdF9lbmRpYW5uZXNzIiwicmVhZF91bnRhZ2dlZF9mbG9hdDY0IiwiaiQwIiwid3JpdGVfdW50YWdnZWRfZmxvYXQ2NCIsIndyaXRlX3VudGFnZ2VkX2ludDY0Iiwic2FmZXR5X3Rlc3QiLCJ5Iiwid3JpdGVfdW50YWdnZWRfc3RyaW5nIiwid3JpdGVfdW50YWdnZWRfdXZpbnQiLCJ3cml0ZV91bnRhZ2dlZF9zdmludCIsIndyaXRlX3VuaXQiLCJ3cml0ZV9ib29sIiwid3JpdGVfY2hhciIsIndyaXRlX2ludDgiLCJ3cml0ZV9pbnQxNiIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50NjQiLCJ3cml0ZV9mbG9hdDMyIiwid3JpdGVfZmxvYXQ2NCIsIndyaXRlX3N0cmluZyIsIndyaXRlX3QiLCJ0YWdnZWQiLCJ0YWdnZWQkMCIsIngkMCIsIngkMSIsIngkMiIsIm8iLCJub2RlX3RhZyIsIngkMyIsIngkNCIsIngkNSIsImEkMSIsIngkNiIsInYiLCJ4JDEwIiwieCQxMSIsIngkMTIiLCJ4JDciLCJvJDAiLCJhJDIiLCJmaWVsZHMiLCJyb3dfbnVtIiwiY29sX251bSIsInRhZyIsImFpIiwieCQ4IiwidiQwIiwieCQ5Iiwib2Zmc2V0Iiwid3JpdGVfdHJlZSIsInN0cmluZ19vZl90cmVlIiwidGFnX29mX3RyZWUiLCJyZWFkX3RhZyIsInJlYWRfdW50YWdnZWRfdW5pdCIsInJlYWRfdW50YWdnZWRfYm9vbCIsInJlYWRfdW50YWdnZWRfY2hhciIsInJlYWRfdW50YWdnZWRfaW50OCIsInJlYWRfdW50YWdnZWRfaW50MTYiLCJyZWFkX3VudGFnZ2VkX2ludDMyIiwicmVhZF91bnRhZ2dlZF9mbG9hdDMyIiwicmVhZF91bnRhZ2dlZF9pbnQ2NCIsInJlYWRfdW50YWdnZWRfc3RyaW5nIiwic3RyIiwicmVtIiwiYnl0ZXNfcmVhZCIsInJlYWRfdW50YWdnZWRfdXZpbnQiLCJyZWFkX3VudGFnZ2VkX3N2aW50IiwicmVhZF91bml0IiwicmVhZF9ib29sIiwicmVhZF9pbnQ4IiwicmVhZF9pbnQxNiIsInJlYWRfaW50MzIiLCJyZWFkX2ludDY0IiwicmVhZF9mbG9hdDMyIiwicmVhZF9mbG9hdDY0IiwicmVhZF9zdHJpbmciLCJyZWFkX3RyZWUiLCJ1bmhhc2giLCJyZWFkX2FycmF5IiwicmVhZGVyX29mX3RhZyIsInJlYWRfdHVwbGUiLCJyZWFkX3JlY29yZCIsIm5hbWUiLCJyZWFkX251bV92YXJpYW50X2NvbnQiLCJyZWFkX251bV92YXJpYW50IiwicmVhZF92YXJpYW50X2NvbnQiLCJyZWFkX3ZhcmlhbnQiLCJyZWFkX3RhYmxlIiwicmVhZGVycyIsInJlYWRfc2hhcmVkIiwidHJlZV9vZl9zdHJpbmciLCJza2lwX2J5dGVzIiwic2tpcF91bml0Iiwic2tpcF9ib29sIiwic2tpcF9pbnQ4Iiwic2tpcF9pbnQxNiIsInNraXBfaW50MzIiLCJza2lwX2ludDY0Iiwic2tpcF9mbG9hdDMyIiwic2tpcF9mbG9hdDY0Iiwic2tpcF91dmludCIsInNraXBfc3ZpbnQiLCJza2lwX3N0cmluZyIsInNraXBfYXJyYXkiLCJza2lwcGVyX29mX3RhZyIsInNraXBfdHVwbGUiLCJza2lwIiwic2tpcF9yZWNvcmQiLCJza2lwX251bV92YXJpYW50X2NvbnQiLCJza2lwX251bV92YXJpYW50Iiwic2tpcF92YXJpYW50X2NvbnQiLCJza2lwX3ZhcmlhbnQiLCJza2lwX3RhYmxlIiwiYXJyYXkiLCJyZWNvcmQiLCJ0dXBsZSIsIm1hcCIsImYiLCJmb3JtYXQiLCJzaGFyZWQiLCJvcHRfbmFtZSIsInN1ZmZpeCIsImNvbnMiLCJwIiwiYWEiLCJoZWFkZXIiLCJoZWFkZXIkMCIsInJlY29yZF9hcnJheSIsImluaXQiLCJ2aWV3X29mX3RyZWUiLCJ0IiwicHJpbnRfdmlld19vZl90cmVlIiwib3V0cHV0X3ZpZXdfb2ZfdHJlZSIsInZpZXciLCJwcmludF92aWV3Iiwib3V0cHV0X3ZpZXciLCJzcGxpdCIsInN0b3AiLCJzdGFydCIsImxvYWRfbGluZXMiLCJsb2FkIiwic3ltYm9sIiwiZGVmYXVsdF9kaWN0X3BhdGgiLCJsb2FkX2RpY3Rpb25hcnkiLCJkaWNfZmlsZSIsImZuIiwiZSQwIiwiZSIsIndyaXRlX3VuaXEiLCJsYXN0Iiwic2F2ZV9kaWN0aW9uYXJ5IiwiZmluYWxseSQwIiwic3RyZWFtJDEiLCJzdHJlYW0kMCIsInN0cmVhbSIsInZlcnNpb24iLCJvY2FtbF9sZXhfdGFibGVzIiwib2NhbWxfbGV4X3RhYmxlcyQwIiwib2NhbWxfbGV4X3RhYmxlcyQxIiwianNvbl9lcnJvciIsInMiLCJ1dGY4X29mX2NvZGUiLCJidWYiLCJ4IiwiYWRkIiwibWF4Yml0cyIsIm4iLCJ1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIiwiaSIsImoiLCJoaWdoMTAiLCJsb3cxMCIsImluaXRfbGV4ZXIiLCJmbmFtZSIsIm9wdCIsInN0aCIsImxudW0iLCJidWYkMCIsImJ1ZiQxIiwiaGV4Iiwid3JpdGVfc3BlY2lhbCIsInNyYyIsInN0YXJ0Iiwic3RvcCIsIm9iIiwic3RyIiwid3JpdGVfc3RyaW5nIiwiYyIsImV4YyQwIiwiZXhjIiwianNvbl9zdHJpbmdfb2Zfc3RyaW5nIiwid3JpdGVfbnVsbCIsIndyaXRlX2Jvb2wiLCJ3cml0ZV9kaWdpdHMiLCJkIiwid3JpdGVfaW50IiwiZmxvYXRfbmVlZHNfcGVyaW9kIiwid3JpdGVfZmxvYXQiLCJzMSIsIndyaXRlX25vcm1hbF9mbG9hdF9wcmVjIiwic2lnbmlmaWNhbnRfZmlndXJlcyIsIndyaXRlX2Zsb2F0X3ByZWMiLCJ3cml0ZV9zdGRfZmxvYXQiLCJ3cml0ZV9zdGRfZmxvYXRfcHJlYyIsIndyaXRlX2ludGxpdCIsIndyaXRlX2Zsb2F0bGl0Iiwid3JpdGVfc3RyaW5nbGl0IiwiaXRlcjIiLCJmX2VsdCIsImZfc2VwIiwibCQwIiwieSQwIiwibCIsInkiLCJ3cml0ZV9qc29uIiwibCQxIiwid3JpdGVfdHVwbGUiLCJvIiwicyQwIiwid3JpdGVfdmFyaWFudCIsIndyaXRlX2Fzc29jIiwid3JpdGVfbGlzdCIsImIiLCJzJDEiLCJmIiwicyQyIiwicyQzIiwid3JpdGVfc3RkX2pzb24iLCJ3cml0ZV9zdGRfdHVwbGUiLCJ3cml0ZV9zdGRfdmFyaWFudCIsInRvX2J1ZmZlciIsInN1ZiIsInN0aCQwIiwic3RkIiwidG9fc3RyaW5nIiwibGVuIiwib2IkMCIsInRvX2NoYW5uZWwiLCJvYyIsInRvX291dHB1dCIsIm91dCIsInRvX2ZpbGUiLCJmaWxlIiwiZSQwIiwiZSIsInNlcV90b19idWZmZXIiLCJzdCIsInNlcV90b19zdHJpbmciLCJzZXFfdG9fY2hhbm5lbCIsInNlcSIsImpzb24iLCJzZXFfdG9fZmlsZSIsInNvcnQiLCJ2IiwiayIsImEiLCJ2JDAiLCJsJDIiLCJwcCIsImZtdCIsInR1cCIsInNlcCIsInZhbHVlIiwibmFtZSIsIngkMSIsInhzIiwia2V5IiwieHMkMCIsIngkMCIsIngkMiIsIngkMyIsIngkNCIsIngkNSIsIngkNiIsInNob3ciLCJlcXVhbCIsImEkMCIsImIkMCIsImIkMSIsImEkMSIsInlzIiwiY29tcGFyZV9rZXlzIiwia2V5JDAiLCJ5cyQwIiwidmFsdWUkMCIsInJlc3VsdCIsInlzJDEiLCJ4cyQxIiwiYiQyIiwiYSQyIiwibmFtZSQwIiwicmVzdWx0JDAiLCJiJDMiLCJhJDMiLCJiJDQiLCJhJDQiLCJiJDUiLCJhJDUiLCJiJDYiLCJhJDYiLCJiJDciLCJhJDciLCJwcF9saXN0IiwicHB4IiwicHBfc2VwIiwiaXNfYXRvbSIsImZvcm1hdCIsImluc2lkZV9ib3giLCJzJDQiLCJvcCIsInJlcHJlc2VudGF0aW9uIiwicmVwcmVzZW50YXRpb24kMCIsInBwJDAiLCJwcmV0dHlfcHJpbnQiLCJwcmV0dHlfdG9fc3RyaW5nIiwicHJldHR5X3RvX2NoYW5uZWwiLCJoZXgkMCIsIndyaXRlX3NwZWNpYWwkMCIsIndyaXRlX3N0cmluZyQwIiwianNvbl9zdHJpbmdfb2Zfc3RyaW5nJDAiLCJ3cml0ZV9udWxsJDAiLCJ3cml0ZV9ib29sJDAiLCJ3cml0ZV9kaWdpdHMkMCIsIndyaXRlX2ludCQwIiwiZmxvYXRfbmVlZHNfcGVyaW9kJDAiLCJ3cml0ZV9mbG9hdCQwIiwid3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMkMCIsIndyaXRlX2Zsb2F0X3ByZWMkMCIsIndyaXRlX3N0ZF9mbG9hdCQwIiwid3JpdGVfc3RkX2Zsb2F0X3ByZWMkMCIsIml0ZXIyJDAiLCJmX3NlcCQwIiwid3JpdGVfanNvbiQwIiwid3JpdGVfYXNzb2MkMCIsIndyaXRlX2xpc3QkMCIsIndyaXRlX3N0ZF9qc29uJDAiLCJ0b19idWZmZXIkMCIsInRvX3N0cmluZyQwIiwidG9fY2hhbm5lbCQwIiwidG9fb3V0cHV0JDAiLCJ0b19maWxlJDAiLCJzZXFfdG9fYnVmZmVyJDAiLCJzZXFfdG9fc3RyaW5nJDAiLCJzZXFfdG9fY2hhbm5lbCQwIiwic2VxX3RvX2ZpbGUkMCIsInNvcnQkMCIsInBwX2xpc3QkMCIsImlzX2F0b20kMCIsImZvcm1hdCQwIiwicHAkMSIsInBwJDIiLCJzaG93JDAiLCJlcXVhbCQwIiwicHJldHR5X3ByaW50JDAiLCJwcmV0dHlfdG9fc3RyaW5nJDAiLCJwcmV0dHlfdG9fY2hhbm5lbCQwIiwiaGV4JDEiLCJjdXN0b21fZXJyb3IiLCJkZXNjciIsImxleGJ1ZiIsIm9mZnMiLCJib2wiLCJwb3MxIiwicG9zMiIsImZpbGVfbGluZSIsImJ5dGVzIiwibXNnIiwibGV4ZXJfZXJyb3IiLCJyZWFkX2p1bmsiLCJsb25nX2Vycm9yIiwianVuayIsImV4dHJhX2p1bmsiLCJtaW4xMCIsIm1heDEwIiwiZXh0cmFjdF9wb3NpdGl2ZV9pbnQiLCJleHRyYWN0X25lZ2F0aXZlX2ludCIsIm5ld2xpbmUiLCJhZGRfbGV4ZW1lIiwicmVhZF9qc29uIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJmaW5pc2hfc3RyaW5nIiwiYWNjIiwicmVhZF9zcGFjZSIsInJlYWRfb2JqZWN0X2VuZCIsImZpZWxkX25hbWUiLCJyZWFkX2lkZW50IiwicmVhZF9jb2xvbiIsInJlYWRfb2JqZWN0X3NlcCIsImZpZWxkX25hbWUkMCIsImFjYyQwIiwicmVhZF9hcnJheV9lbmQiLCJyZWFkX2FycmF5X3NlcCIsImZpbmlzaF9jb21tZW50IiwiZmluaXNoX2VzY2FwZWRfY2hhciIsIm1hcF9zdHJpbmciLCJjJDAiLCJvY2FtbF9sZXhfc3RhdGUkMSIsIm9jYW1sX2xleF9zdGF0ZSQyIiwiYyQxIiwiZCQwIiwiZmluaXNoX3N0cmluZ2xpdCIsImZpbmlzaF92YXJpYW50IiwicmVhZF9ndCIsInJlYWRfbHQiLCJyZWFkX2NvbW1hIiwic3RhcnRfYW55X3ZhcmlhbnQiLCJyZWFkX2VvZiIsInJlYWRfbnVsbCIsInJlYWRfbnVsbF9pZl9wb3NzaWJsZSIsInJlYWRfYm9vbCIsInJlYWRfaW50IiwicmVhZF9pbnQzMiIsInJlYWRfaW50NjQiLCJyZWFkX251bWJlciIsInJlYWRfc3RyaW5nIiwibWFwX2lkZW50IiwicmVhZF9zZXF1ZW5jZSIsInJlYWRfY2VsbCIsImluaXRfYWNjIiwicmVhZF9saXN0X3JldiIsInJlYWRfdHVwbGUiLCJyZWFkX3R1cGxlX2VuZCIsInJlYWRfdHVwbGVfZW5kMiIsInJlYWRfdHVwbGVfc2VwIiwicmVhZF90dXBsZV9zZXAyIiwicmVhZF9hYnN0cmFjdF9maWVsZHMiLCJyZWFkX2tleSIsInJlYWRfZmllbGQiLCJyZWFkX2xjdXJsIiwic3RhcnRfYW55X3R1cGxlIiwicmVhZF9scGFyIiwicmVhZF9ycGFyIiwicmVhZF9sYnIiLCJyZWFkX3JiciIsInNraXBfanNvbiIsImZpbmlzaF9za2lwX3N0cmluZ2xpdCIsInNraXBfaWRlbnQiLCJmaW5pc2hfc2tpcF92YXJpYW50IiwiYnVmZmVyX2pzb24iLCJmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCIsImJ1ZmZlcl9zcGFjZSIsImJ1ZmZlcl9pZGVudCIsImJ1ZmZlcl9jb2xvbiIsIm9jYW1sX2xleF9zdGF0ZSQzIiwib2NhbWxfbGV4X3N0YXRlJDQiLCJvY2FtbF9sZXhfc3RhdGUkNSIsIm9jYW1sX2xleF9zdGF0ZSQ2Iiwib2NhbWxfbGV4X3N0YXRlJDciLCJvY2FtbF9sZXhfc3RhdGUkOCIsImZpbmlzaF9idWZmZXJfY29tbWVudCIsInJlYWRfaW50OCIsInJlYWRfbGlzdCIsInJlYWRfYXJyYXkiLCJ0bCIsInIiLCJyZWFkX2ZpZWxkcyIsImZyb21fbGV4YnVmIiwiZnJvbV9zdHJpbmckMCIsImZyb21fY2hhbm5lbCQwIiwiaWMiLCJmcm9tX2ZpbGUiLCJzZXFfZnJvbV9sZXhidWYiLCJmaW4iLCJmaW5fZSQwIiwiZmluX2UiLCJzZXFfZnJvbV9zdHJpbmciLCJzZXFfZnJvbV9jaGFubmVsIiwic2VxX2Zyb21fZmlsZSIsImZuYW1lJDAiLCJsaW5lc2VxX2Zyb21fY2hhbm5lbCIsImxudW0wIiwibGluZSIsImxpbmVzZXFfZnJvbV9maWxlIiwicHJldHRpZnkiLCJjb21wYWN0IiwidHlwZXJyIiwianMiLCJtZW1iZXIiLCJvYmoiLCJwYXRoIiwib2JqJDAiLCJhc3NvYyIsIm9iaiQxIiwiaW5kZXgiLCJ3cmFwcGVkX2luZGV4IiwibWFwIiwidG9fYXNzb2MiLCJ0b19vcHRpb24iLCJ0b19ib29sIiwidG9fYm9vbF9vcHRpb24iLCJ0b19udW1iZXIiLCJ0b19udW1iZXJfb3B0aW9uIiwidG9fZmxvYXQiLCJ0b19mbG9hdF9vcHRpb24iLCJ0b19pbnQiLCJ0b19pbnRfb3B0aW9uIiwidG9fbGlzdCIsInRvX3N0cmluZyQxIiwidG9fc3RyaW5nX29wdGlvbiIsImNvbnZlcnRfZWFjaCIsImZpbHRlcl9tYXAiLCJmbGF0dGVuIiwibDIiLCJmaWx0ZXJfaW5kZXgiLCJmaWx0ZXJfbGlzdCIsImZpbHRlcl9tZW1iZXIiLCJmaWx0ZXJfYXNzb2MiLCJmaWx0ZXJfYm9vbCIsImZpbHRlcl9pbnQiLCJmaWx0ZXJfZmxvYXQiLCJmaWx0ZXJfbnVtYmVyIiwiZmlsdGVyX3N0cmluZyIsImtleXMiLCJ2YWx1ZXMiLCJjb21iaW5lIiwiZmlyc3QiLCJzZWNvbmQiLCJ0b19iYXNpYyIsImhleCQyIiwid3JpdGVfc3BlY2lhbCQxIiwid3JpdGVfc3RyaW5nJDEiLCJqc29uX3N0cmluZ19vZl9zdHJpbmckMSIsIndyaXRlX251bGwkMSIsIndyaXRlX2Jvb2wkMSIsIndyaXRlX2RpZ2l0cyQxIiwid3JpdGVfaW50JDEiLCJmbG9hdF9uZWVkc19wZXJpb2QkMSIsIndyaXRlX2Zsb2F0JDEiLCJ3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyQxIiwid3JpdGVfZmxvYXRfcHJlYyQxIiwid3JpdGVfc3RkX2Zsb2F0JDEiLCJ3cml0ZV9zdGRfZmxvYXRfcHJlYyQxIiwid3JpdGVfaW50bGl0JDAiLCJpdGVyMiQxIiwiZl9zZXAkMSIsIndyaXRlX2pzb24kMSIsIndyaXRlX3R1cGxlJDAiLCJ3cml0ZV9hc3NvYyQxIiwid3JpdGVfbGlzdCQxIiwid3JpdGVfdmFyaWFudCQwIiwid3JpdGVfc3RkX2pzb24kMSIsIndyaXRlX3N0ZF90dXBsZSQwIiwid3JpdGVfc3RkX3ZhcmlhbnQkMCIsInRvX2J1ZmZlciQxIiwidG9fc3RyaW5nJDIiLCJ0b19jaGFubmVsJDEiLCJ0b19vdXRwdXQkMSIsInRvX2ZpbGUkMSIsInNlcV90b19idWZmZXIkMSIsInNlcV90b19zdHJpbmckMSIsInNlcV90b19jaGFubmVsJDEiLCJzZXFfdG9fZmlsZSQxIiwic29ydCQxIiwicHBfbGlzdCQxIiwiaXNfYXRvbSQxIiwiZm9ybWF0JDEiLCJwcCQzIiwicHAkNCIsInNob3ckMSIsImVxdWFsJDEiLCJwcmV0dHlfcHJpbnQkMSIsInByZXR0eV90b19zdHJpbmckMSIsInByZXR0eV90b19jaGFubmVsJDEiLCJoZXgkMyIsImN1c3RvbV9lcnJvciQwIiwibGV4ZXJfZXJyb3IkMCIsInJlYWRfanVuayQwIiwibG9uZ19lcnJvciQwIiwibWluMTAkMCIsIm1heDEwJDAiLCJleHRyYWN0X3Bvc2l0aXZlX2ludCQwIiwiZXh0cmFjdF9uZWdhdGl2ZV9pbnQkMCIsIm5ld2xpbmUkMCIsImFkZF9sZXhlbWUkMCIsInJlYWRfanNvbiQwIiwiZmluaXNoX3N0cmluZyQwIiwicmVhZF9zcGFjZSQwIiwicmVhZF9vYmplY3RfZW5kJDAiLCJyZWFkX2lkZW50JDAiLCJyZWFkX2NvbG9uJDAiLCJyZWFkX29iamVjdF9zZXAkMCIsInJlYWRfYXJyYXlfZW5kJDAiLCJyZWFkX2FycmF5X3NlcCQwIiwiYWNjJDEiLCJyZWFkX3R1cGxlX2VuZCQwIiwicmVhZF90dXBsZV9zZXAkMCIsImNvbnMiLCJmaW5pc2hfdmFyaWFudCQwIiwiZmluaXNoX2NvbW1lbnQkMCIsImZpbmlzaF9lc2NhcGVkX2NoYXIkMCIsIm1hcF9zdHJpbmckMCIsImZpbmlzaF9zdHJpbmdsaXQkMCIsInJlYWRfZ3QkMCIsInJlYWRfbHQkMCIsInJlYWRfY29tbWEkMCIsInN0YXJ0X2FueV92YXJpYW50JDAiLCJyZWFkX2VvZiQwIiwicmVhZF9udWxsJDAiLCJyZWFkX251bGxfaWZfcG9zc2libGUkMCIsInJlYWRfYm9vbCQwIiwicmVhZF9pbnQkMCIsInJlYWRfaW50MzIkMCIsInJlYWRfaW50NjQkMCIsInJlYWRfbnVtYmVyJDAiLCJyZWFkX3N0cmluZyQwIiwibWFwX2lkZW50JDAiLCJyZWFkX3NlcXVlbmNlJDAiLCJyZWFkX2xpc3RfcmV2JDAiLCJyZWFkX3R1cGxlJDAiLCJwb3MiLCJyZWFkX3R1cGxlX2VuZDIkMCIsInJlYWRfdHVwbGVfc2VwMiQwIiwicmVhZF9hYnN0cmFjdF9maWVsZHMkMCIsInJlYWRfbGN1cmwkMCIsInN0YXJ0X2FueV90dXBsZSQwIiwicmVhZF9scGFyJDAiLCJyZWFkX3JwYXIkMCIsInJlYWRfbGJyJDAiLCJyZWFkX3JiciQwIiwic2tpcF9qc29uJDAiLCJmaW5pc2hfc2tpcF9zdHJpbmdsaXQkMCIsInNraXBfaWRlbnQkMCIsImZpbmlzaF9za2lwX3ZhcmlhbnQkMCIsImJ1ZmZlcl9qc29uJDAiLCJmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCQwIiwiYnVmZmVyX3NwYWNlJDAiLCJidWZmZXJfaWRlbnQkMCIsImJ1ZmZlcl9jb2xvbiQwIiwib2NhbWxfbGV4X3N0YXRlJDkiLCJvY2FtbF9sZXhfc3RhdGUkMTAiLCJvY2FtbF9sZXhfc3RhdGUkMTEiLCJvY2FtbF9sZXhfc3RhdGUkMTIiLCJvY2FtbF9sZXhfc3RhdGUkMTMiLCJvY2FtbF9sZXhfc3RhdGUkMTQiLCJvY2FtbF9sZXhfc3RhdGUkMTUiLCJvY2FtbF9sZXhfc3RhdGUkMTYiLCJmaW5pc2hfYnVmZmVyX2NvbW1lbnQkMCIsImp1bmskMCIsInJlYWRfaW50OCQwIiwicmVhZF9saXN0JDAiLCJyZWFkX2FycmF5JDAiLCJyZWFkX2ZpZWxkcyQwIiwiZnJvbV9sZXhidWYkMCIsImZyb21fc3RyaW5nJDIiLCJmcm9tX2NoYW5uZWwkMiIsImZyb21fZmlsZSQwIiwic2VxX2Zyb21fbGV4YnVmJDAiLCJzZXFfZnJvbV9zdHJpbmckMCIsInNlcV9mcm9tX2NoYW5uZWwkMCIsInNlcV9mcm9tX2ZpbGUkMCIsImxpbmVzZXFfZnJvbV9jaGFubmVsJDAiLCJsaW5lc2VxX2Zyb21fZmlsZSQwIiwicHJldHRpZnkkMCIsImNvbXBhY3QkMCIsInR5cGVyciQwIiwibWVtYmVyJDAiLCJwYXRoJDAiLCJpbmRleCQwIiwibWFwJDAiLCJ0b19hc3NvYyQwIiwidG9fb3B0aW9uJDAiLCJ0b19ib29sJDAiLCJ0b19ib29sX29wdGlvbiQwIiwidG9fbnVtYmVyJDAiLCJ0b19udW1iZXJfb3B0aW9uJDAiLCJ0b19mbG9hdCQwIiwidG9fZmxvYXRfb3B0aW9uJDAiLCJ0b19pbnQkMCIsInRvX2ludF9vcHRpb24kMCIsInRvX2xpc3QkMCIsInRvX3N0cmluZyQzIiwidG9fc3RyaW5nX29wdGlvbiQwIiwiY29udmVydF9lYWNoJDAiLCJmaWx0ZXJfbWFwJDAiLCJmbGF0dGVuJDAiLCJmaWx0ZXJfaW5kZXgkMCIsImZpbHRlcl9saXN0JDAiLCJmaWx0ZXJfbWVtYmVyJDAiLCJmaWx0ZXJfYXNzb2MkMCIsImZpbHRlcl9ib29sJDAiLCJmaWx0ZXJfaW50JDAiLCJmaWx0ZXJfZmxvYXQkMCIsImZpbHRlcl9udW1iZXIkMCIsImZpbHRlcl9zdHJpbmckMCIsImtleXMkMCIsInZhbHVlcyQwIiwiY29tYmluZSQwIiwiaGV4JDQiLCJ3cml0ZV9zcGVjaWFsJDIiLCJ3cml0ZV9zdHJpbmckMiIsImpzb25fc3RyaW5nX29mX3N0cmluZyQyIiwid3JpdGVfbnVsbCQyIiwid3JpdGVfYm9vbCQyIiwid3JpdGVfaW50bGl0JDEiLCJ3cml0ZV9mbG9hdGxpdCQwIiwid3JpdGVfc3RyaW5nbGl0JDAiLCJpdGVyMiQyIiwiZl9zZXAkMiIsIndyaXRlX2pzb24kMiIsIndyaXRlX2Fzc29jJDIiLCJ3cml0ZV9saXN0JDIiLCJ3cml0ZV90dXBsZSQxIiwid3JpdGVfdmFyaWFudCQxIiwid3JpdGVfc3RkX2pzb24kMiIsIndyaXRlX3N0ZF90dXBsZSQxIiwid3JpdGVfc3RkX3ZhcmlhbnQkMSIsInRvX2J1ZmZlciQyIiwidG9fc3RyaW5nJDQiLCJ0b19jaGFubmVsJDIiLCJ0b19vdXRwdXQkMiIsInRvX2ZpbGUkMiIsInNlcV90b19idWZmZXIkMiIsInNlcV90b19zdHJpbmckMiIsInNlcV90b19jaGFubmVsJDIiLCJzZXFfdG9fZmlsZSQyIiwic29ydCQyIiwicHBfbGlzdCQyIiwiaXNfYXRvbSQyIiwiZm9ybWF0JDIiLCJwcCQ1IiwicHAkNiIsInNob3ckMiIsImVxdWFsJDIiLCJwcmV0dHlfcHJpbnQkMiIsInByZXR0eV90b19zdHJpbmckMiIsInByZXR0eV90b19jaGFubmVsJDIiLCJoZXgkNSIsImN1c3RvbV9lcnJvciQxIiwibGV4ZXJfZXJyb3IkMSIsInJlYWRfanVuayQxIiwibG9uZ19lcnJvciQxIiwibWluMTAkMSIsIm1heDEwJDEiLCJuZXdsaW5lJDEiLCJhZGRfbGV4ZW1lJDEiLCJyZWFkX2pzb24kMSIsImZpbmlzaF9zdHJpbmdsaXQkMSIsInJlYWRfc3BhY2UkMSIsInJlYWRfb2JqZWN0X2VuZCQxIiwicmVhZF9pZGVudCQxIiwicmVhZF9jb2xvbiQxIiwicmVhZF9vYmplY3Rfc2VwJDEiLCJyZWFkX2FycmF5X2VuZCQxIiwicmVhZF9hcnJheV9zZXAkMSIsInJlYWRfdHVwbGVfZW5kJDEiLCJyZWFkX3R1cGxlX3NlcCQxIiwiZmluaXNoX3ZhcmlhbnQkMSIsImZpbmlzaF9jb21tZW50JDEiLCJmaW5pc2hfc3RyaW5nJDEiLCJmaW5pc2hfZXNjYXBlZF9jaGFyJDEiLCJtYXBfc3RyaW5nJDEiLCJyZWFkX2d0JDEiLCJyZWFkX2x0JDEiLCJyZWFkX2NvbW1hJDEiLCJzdGFydF9hbnlfdmFyaWFudCQxIiwicmVhZF9lb2YkMSIsInJlYWRfbnVsbCQxIiwicmVhZF9udWxsX2lmX3Bvc3NpYmxlJDEiLCJyZWFkX2Jvb2wkMSIsInJlYWRfaW50JDEiLCJzdGFydCQwIiwic3RvcCQwIiwibiQwIiwiaSQwIiwicmVhZF9pbnQzMiQxIiwicmVhZF9pbnQ2NCQxIiwicmVhZF9udW1iZXIkMSIsInJlYWRfc3RyaW5nJDEiLCJtYXBfaWRlbnQkMSIsInJlYWRfc2VxdWVuY2UkMSIsInJlYWRfbGlzdF9yZXYkMSIsInJlYWRfdHVwbGUkMSIsInJlYWRfdHVwbGVfZW5kMiQxIiwicmVhZF90dXBsZV9zZXAyJDEiLCJyZWFkX2Fic3RyYWN0X2ZpZWxkcyQxIiwicmVhZF9sY3VybCQxIiwic3RhcnRfYW55X3R1cGxlJDEiLCJyZWFkX2xwYXIkMSIsInJlYWRfcnBhciQxIiwicmVhZF9sYnIkMSIsInJlYWRfcmJyJDEiLCJza2lwX2pzb24kMSIsImZpbmlzaF9za2lwX3N0cmluZ2xpdCQxIiwic2tpcF9pZGVudCQxIiwiZmluaXNoX3NraXBfdmFyaWFudCQxIiwiYnVmZmVyX2pzb24kMSIsImZpbmlzaF9idWZmZXJfc3RyaW5nbGl0JDEiLCJidWZmZXJfc3BhY2UkMSIsImJ1ZmZlcl9pZGVudCQxIiwiYnVmZmVyX2NvbG9uJDEiLCJmaW5pc2hfYnVmZmVyX2NvbW1lbnQkMSIsImp1bmskMSIsInJlYWRfaW50OCQxIiwicmVhZF9saXN0JDEiLCJyZWFkX2FycmF5JDEiLCJyZWFkX2ZpZWxkcyQxIiwiZnJvbV9sZXhidWYkMSIsImZyb21fc3RyaW5nJDQiLCJmcm9tX2NoYW5uZWwkNCIsImZyb21fZmlsZSQxIiwic2VxX2Zyb21fbGV4YnVmJDEiLCJzZXFfZnJvbV9zdHJpbmckMSIsInNlcV9mcm9tX2NoYW5uZWwkMSIsInNlcV9mcm9tX2ZpbGUkMSIsImxpbmVzZXFfZnJvbV9jaGFubmVsJDEiLCJsaW5lc2VxX2Zyb21fZmlsZSQxIiwicHJldHRpZnkkMSIsImNvbXBhY3QkMSIsInR5cGVyciQxIiwibWVtYmVyJDEiLCJwYXRoJDEiLCJpbmRleCQxIiwibWFwJDEiLCJ0b19hc3NvYyQxIiwidG9fb3B0aW9uJDEiLCJ0b19ib29sJDEiLCJ0b19ib29sX29wdGlvbiQxIiwidG9fbnVtYmVyJDEiLCJ0b19udW1iZXJfb3B0aW9uJDEiLCJ0b19mbG9hdCQxIiwidG9fZmxvYXRfb3B0aW9uJDEiLCJ0b19pbnQkMSIsInRvX2ludF9vcHRpb24kMSIsInRvX2xpc3QkMSIsInRvX3N0cmluZyQ1IiwidG9fc3RyaW5nX29wdGlvbiQxIiwiY29udmVydF9lYWNoJDEiLCJmaWx0ZXJfbWFwJDEiLCJmbGF0dGVuJDEiLCJmaWx0ZXJfaW5kZXgkMSIsImZpbHRlcl9saXN0JDEiLCJmaWx0ZXJfbWVtYmVyJDEiLCJmaWx0ZXJfYXNzb2MkMSIsImZpbHRlcl9ib29sJDEiLCJmaWx0ZXJfaW50JDEiLCJmaWx0ZXJfZmxvYXQkMSIsImZpbHRlcl9udW1iZXIkMSIsImZpbHRlcl9zdHJpbmckMSIsImtleXMkMSIsInZhbHVlcyQxIiwiY29tYmluZSQxIiwiaW5wdXRfZmlsZSIsImZuYW1lIiwicmVhZCIsImljIiwieCIsImUkMCIsImUiLCJvdXRwdXRfZmlsZSIsIndyaXRlIiwib2MiLCJmcm9tX2NoYW5uZWwiLCJsZW4iLCJvcHQiLCJzdGgiLCJzaHJsZW4iLCJpYiIsImZyb21fZmlsZSIsInRvX2NoYW5uZWwiLCJvYiIsInRvX2ZpbGUiLCJmcm9tX2xleGJ1ZiIsImxzIiwibGV4YnVmIiwic3RyZWFtIiwiZnJvbV9zdHJpbmciLCJidWYiLCJsbnVtIiwicyIsImZyb21fY2hhbm5lbCQwIiwiZnJvbV9maWxlJDAiLCJzcmMiLCJmbmFtZTAiLCJzZXFfdW5mb2xkIiwiZiIsInUiLCJ1JDAiLCJzZXFfZnJvbV9sZXhidWYiLCJmaW4iLCJ2Iiwic2VxX2Zyb21fc3RyaW5nIiwic2VxX2Zyb21fY2hhbm5lbCIsInNlcV9mcm9tX2ZpbGUiLCJmaW4kMCIsImxpc3RfZnJvbV9zdHJpbmciLCJzZXEiLCJsaXN0X2Zyb21fY2hhbm5lbCIsImxpc3RfZnJvbV9maWxlIiwidG9fc3RyaW5nIiwidG9fY2hhbm5lbCQwIiwidG9fZmlsZSQwIiwic2VxX3RvX3N0cmluZyIsInN0aCQwIiwibGYiLCJzZXFfdG9fY2hhbm5lbCIsInNlcV90b19maWxlIiwibGlzdF90b19zdHJpbmciLCJsIiwibGlzdF90b19jaGFubmVsIiwibGlzdF90b19maWxlIiwicHJlc2V0X3Vua25vd25fZmllbGRfaGFuZGxlciIsImxvYyIsIm5hbWUiLCJtc2ciLCJ1bmtub3duX2ZpZWxkX2hhbmRsZXIiLCJzdHJpbmdfb2ZfcGF0aCIsIm4iLCJlcnJvciIsInBhdGgiLCJzdHJpbmdfb2ZfZXJyb3IiLCJ2YWxpZGF0ZV9saXN0IiwiaSIsImwkMCIsInN1YnBhdGgiLCJlcnIiLCJ2YWxpZGF0ZV9hcnJheSIsImEiLCJpJDAiLCJ2YWxpZGF0ZV9vcHRpb24iLCJlcnJvcl93aXRoX2xpbmUiLCJwIiwiczIiLCJsaXN0X2l0ZXIiLCJzZXAiLCJsJDEiLCJ5JDAiLCJ5IiwiYXJyYXlfaXRlciIsIndyaXRlX2NvbW1hIiwid3JpdGVfbGlzdCIsIndyaXRlX2l0ZW0iLCJ3cml0ZV9hcnJheSIsIndyaXRlX2Fzc29jX2xpc3QiLCJ3cml0ZV9rZXkiLCJrIiwid3JpdGVfYXNzb2NfYXJyYXkiLCJ3cml0ZV9vcHRpb24iLCJ3cml0ZV9zdGRfb3B0aW9uIiwid3JpdGVfbnVsbGFibGUiLCJ3cml0ZV9pbnRfYXNfc3RyaW5nIiwid3JpdGVfaW50OCIsIndyaXRlX2ludDhfYXNfc3RyaW5nIiwid3JpdGVfaW50MzIiLCJ3cml0ZV9pbnQzMl9hc19zdHJpbmciLCJ3cml0ZV9pbnQ2NCIsIndyaXRlX2ludDY0X2FzX3N0cmluZyIsIm1pbl9mbG9hdCIsIm1heF9mbG9hdCIsIndyaXRlX2Zsb2F0X2FzX2ludCIsIndyaXRlX2Zsb2F0X2FzX2ludF9zdHJpbmciLCJyZWFkX251bGwiLCJsYiIsInJlYWRfYm9vbCIsInJlYWRfaW50IiwicmVhZF9pbnQ4IiwicmVhZF9pbnQzMiIsInJlYWRfaW50NjQiLCJyZWFkX251bWJlciIsInJlYWRfc3RyaW5nIiwicmVhZF9qc29uIiwicmVhZF9saXN0IiwicmVhZF9pdGVtIiwicmVhZF9hcnJheSIsInJlYWRfYXNzb2NfbGlzdF9yZXYiLCJyZWFkX2tleSIsImFjYyIsInJlYWRfYXNzb2NfbGlzdCIsInJlYWRfYXNzb2NfYXJyYXkiLCJ0bCIsInIiLCJyZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIiwibWlzc2luZ190dXBsZV9maWVsZHMiLCJyZXFfZmllbGRzIiwibWlzc2luZyIsIm1pc3NpbmdfZmllbGQiLCJmaWVsZF9uYW1lIiwibWlzc2luZ19maWVsZHMiLCJiaXRfZmllbGRzIiwiZmllbGRfbmFtZXMiLCJ6IiwiaiIsImludmFsaWRfdmFyaWFudF90YWciLCJyZWFkX3dpdGhfYWRhcHRlciIsIm5vcm1hbGl6ZSIsInJlYWRlciIsImFzdCIsImFzdCQwIiwibGIkMCIsIndyaXRlX3dpdGhfYWRhcHRlciIsInJlc3RvcmUiLCJ3cml0ZXIiLCJvYl90bXAiLCJzX3RtcCIsInJlYWRfZXJyb3IiLCJyZWFkX2Vycm9yX2F0IiwidGFnX2Vycm9yIiwidGFnIiwidW5zdXBwb3J0ZWRfdmFyaWFudCIsImgiLCJoYXNfYXJnIiwiZ2V0X3VuaXRfcmVhZGVyIiwicmVhZF91bml0IiwiZ2V0X2Jvb2xfcmVhZGVyIiwiZ2V0X2ludF9yZWFkZXIiLCJnZXRfY2hhcl9yZWFkZXIiLCJyZWFkX2NoYXIiLCJnZXRfaW50MzJfcmVhZGVyIiwiZ2V0X2ludDY0X3JlYWRlciIsImdldF9mbG9hdDMyX3JlYWRlciIsImdldF9mbG9hdDY0X3JlYWRlciIsInJlYWRfZmxvYXQzMiIsInJlYWRfZmxvYXQ2NCIsImdldF9zdHJpbmdfcmVhZGVyIiwicmVhZF9hcnJheV92YWx1ZSIsImdldF9yZWFkZXIiLCJnZXRfYXJyYXlfcmVhZGVyIiwiZ2V0X2xpc3RfcmVhZGVyIiwid3JpdGVfdW50YWdnZWRfb3B0aW9uIiwieCQwIiwiYXJyYXlfaW5pdDIiLCJhcnJheV9pdGVyMiIsIndyaXRlX3VudGFnZ2VkX2FycmF5IiwiY2VsbF90YWciLCJ3cml0ZV91bnRhZ2dlZF9saXN0Iiwic2FmZV9yIiwidHlwZV9maWVsZF9uYW1lIiwibm9ybWFsaXplX3R5cGVfZmllbGQiLCJmaWVsZHMiLCJ0eXBlIiwicmVzdG9yZV90eXBlX2ZpZWxkIiwiZmllbGRzJDAiLCJub3JtYWxpemUkMCIsInZhbHVlIiwicmVzdG9yZSQwIiwidGJsIiwiaXNfa25vd25fdGFnIiwiaXNfY2F0Y2hfYWxsX3RhZyIsImNhdGNoX2FsbF90YWciLCJmb3VuZCIsImZpZWxkIiwidmFyaWFudCIsImZpZWxkcyQxIiwidGFnZ2VkIiwidGFnJDAiLCJyZWFsX3YiLCJyZWFsX3RhZyIsIm9wdF92YWx1ZSIsInRhZyQxIiwidiQwIiwiY3JlYXRlIiwibiIsImEiLCJsZW5ndGgiLCJnZXQiLCJpIiwic2V0IiwidiIsIm4kMSIsIm4kMCIsImFycmF5IiwiaW5pdCIsImYiLCJhcHBlbmQiLCJiIiwibGIiLCJsYSIsImMiLCJ4IiwiY29uY2F0IiwibCIsImwkMCIsInQiLCJlbHQiLCJzb2wiLCJtIiwiayIsImwkMSIsInEiLCJ0JDAiLCJzIiwib2Zmc2V0IiwiayQwIiwiayQxIiwib2Zmc2V0JDAiLCJzdWIiLCJzdGFydCIsImxlbiIsInNpemUiLCJjb3B5IiwiZmlsbCIsImkkMCIsIm9mX2xpc3QiLCJkZWZhdWx0JDAiLCJpdGVyIiwiaXRlcmkiLCJmb2xkX2xlZnRpIiwiZm9sZF9yaWdodGkiLCJtYXAiLCJibGl0IiwiYTEiLCJvZnMxIiwiYTIiLCJvZnMyIiwicHJpbnQiLCJ0cmFpbGluZyIsInByX3MiLCJwcl9hIiwibWF4X2FycmF5X3NpemUxIiwibWF4X2FycmF5X3NpemUyIiwiZXVjbGlkZWVuIiwicCIsInAkMCIsImF1eCIsIm0kMCIsImEkMCIsImEkMSIsImoiLCJnMiIsImcxIiwieSIsImUiLCJnIiwiY3VycmVudCIsImluaXQkMCIsIm9wdCIsInByX3NlcCIsInByX2VsIiwic3RoIiwiY3N0IiwiZmxvYXRfaXNfemVybyIsInBvdyIsImFjY3UiLCJhY2N1JDAiLCJhY2N1JDEiLCJmYWN0IiwiaSQxIiwiZ2V0X3Byb2R1Y3RfaW1hZ2Vfb2NjIiwiY29tYmluZSIsInQkMSIsIm9sZCQxIiwib2xkIiwib2NjIiwiaCIsIm9jYyQwIiwib2xkJDAiLCJnZXRfcHJvZHVjdF9pbWFnZV9vY2NfMiIsImwxIiwibDIiLCJsMSQwIiwibDIkMCIsImNvdW50X2hlYWRfYW5kX2dldF90YWlsIiwiaCQwIiwibDEkMSIsImwyJDEiLCJoMiIsImgxIiwib2NjMSIsImwxJDIiLCJvY2MyIiwibDIkMiIsIm9jYzIkMCIsImwyJDMiLCJvY2MxJDAiLCJsMSQzIiwiYWNjdSQyIiwiZGl2MiIsInBvdzY0IiwiY2FudG9yX3BhaXJpbmciLCJyZWFkX2lucHV0IiwidXNlcl9pbnB1dCIsImFjYyIsImFjYyQwIiwibm90X2FuX2lkIiwiYXJyYXlfZm9sZF9sZWZ0X21hcGkiLCJvdXQiLCJ5JDAiLCJvIiwiYXJyYXlfbWFwX29mX2xpc3QiLCJ4JDAiLCJhbnMiLCJhcnJheV9yZXZfb2ZfbGlzdCIsImFycmF5X3Jldl9tYXBfb2ZfbGlzdCIsImFycmF5X2ZvbGRfbGVmdGkiLCJhcnJheV9mb2xkX3JpZ2h0aSIsIngkMSIsImFycmF5X2ZvbGRfbGVmdDJpIiwiYXJyYXlfZmlsdGVyIiwiYXJyYXlfbWluX2VxdWFsX25vdF9udWxsIiwiYWcxIiwibmIxIiwiYWcyIiwibmIyIiwiaiQwIiwib3V0JDEiLCJpJDIiLCJ2YSIsImFnMSQwIiwibmIxJDAiLCJhZzIkMCIsIm5iMiQwIiwib3V0JDAiLCJhcnJheV9jb21wYXJlIiwiY29tcGFyZSIsImQiLCJyZWN0aSIsIm1pbl9wb3NfaW50X25vdF96ZXJvIiwiZGF0YWIiLCJrZXliIiwiZGF0YWEiLCJrZXlhIiwibWF4X3Bvc19pbnRfbm90X3plcm8iLCJmb2xkX292ZXJfcGVybXV0YXRpb25zIiwidG9fZG8iLCJkaXNjYXJkZWQiLCJwZXJtdXRhdGlvbiIsInRvX2RvJDAiLCJkaXNjYXJkZWQkMCIsInRvX2RvJDEiLCJsaXN0IiwidG9fZG8xIiwiZGlzY2FyZGVkJDEiLCJnY2RfMiIsImIkMCIsImIkMSIsImxjbV8yIiwibGNtIiwiZ2V0X2ludGVydmFsX2xpc3QiLCJhZGQiLCJvdXRwdXQiLCJjdXJyZW50JDAiLCJvdXRwdXQkMCIsImxvd2VyY2FzZSIsImNhcGl0YWxpemUiLCJzdHJpbmdfc3BsaXRfb25fY2hhciIsImRlbGltaXRlciIsImluZGV4Iiwic21hc2hfZHVwbGljYXRlX2luX29yZGVyZWRfbGlzIiwidGFpbCQyIiwibm9jYyQyIiwiY3VycmVudCQxIiwidGFpbCIsIm5vY2MiLCJ0YWlsJDAiLCJub2NjJDAiLCJ0YWlsJDEiLCJub2NjJDEiLCJjaG9wX3N1ZmZpeF9vcl9leHRlbnNpb24iLCJuYW1lIiwiZXh0IiwiZmluZF9hdmFpbGFibGVfbmFtZSIsImFscmVhZHlfdGhlcmUiLCJmYWN1bHRhdGl2ZSIsImV4dCQwIiwiYmFzZSIsImJhc2UkMCIsImRlZmF1bHRfbWVzc2FnZV9kZWxpbXRlciIsImdldF9yZWYiLCJyZWYiLCJyZW1vdmVfZG91YmxlX2VsZW1lbnRzIiwic29ydF9ieV9wcmlvcml0eSIsImtleXMiLCJzb3J0Iiwia2V5IiwiaW5pdGlhbF9idWZmZXJfc2l6ZSIsIndyaXRlX3RvX2NoYW5uZWwiLCJzdHJpbmdfb2Zfd3JpdGUiLCJvYiIsInJlYWRfb2Zfc3RyaW5nIiwibGV4X3N0IiwibGV4X2J1ZiIsInJlYWRfYmV0d2Vlbl9zcGFjZXMiLCJyZWFkX25leHRfaXRlbSIsInN0IiwiYnVpbGRfbXNnIiwib2Zfc3RyaW5nIiwidG9fc3RyaW5nIiwiZXJyb3JfbXNnIiwib2ZfaW50IiwidG9faW50Iiwib2ZfYm9vbCIsInRvX2Jvb2wiLCJvZl91bml0IiwidG9fdW5pdCIsIm9mX29wdGlvbiIsInRvX2pzb24iLCJ0b19vcHRpb24iLCJ3cml0ZV9vcHRpb24iLCJyZWFkX29wdGlvbiIsInRvX2xpc3QiLCJvZl9qc29uIiwid3JpdGVfY29tbWEiLCJ3cml0ZV9saXN0IiwiZl9lbHQiLCJvZl9hcnJheSIsInRvX2FycmF5Iiwid3JpdGVfYXJyYXkiLCJ3cml0ZV9zZXF1ZW5jZSIsInEkMCIsImYkMCIsInJlYWRfdmFyaWFudCIsInJlYWRfaWQiLCJyZWFkIiwic21hcnRfYXNzb2MiLCJvZl9hc3NvYyIsInRvX2Fzc29jIiwianNvbiIsIndyaXRlX2ZpZWxkIiwibmEiLCJvZl9wYWlyIiwidG9fanNvbjEiLCJ0b19qc29uMiIsImxhYjEiLCJzdGgkMCIsImxhYjIiLCJ0b190cmlwbGUiLCJvZl9qc29uMSIsIm9mX2pzb24yIiwib2ZfanNvbjMiLCJzdGgkMSIsImxhYjMiLCJzdGgkMiIsIm9mX3RyaXBsZSIsInRvX2pzb24zIiwidG9fcGFpciIsIndyaXRlX2NvbXBhY3RfcGFpciIsInJlYWRfY29tcGFjdF9wYWlyIiwiY29tcGFjdF90b19wYWlyIiwib2ZfbWFwIiwiZm9sZCIsImtleV90b19qc29uIiwidmFsdWVfdG9fanNvbiIsImxhYl9rZXkiLCJsYWJfdmFsdWUiLCJ2YWx1ZSIsInRvX21hcCIsImVtcHR5IiwianNvbl90b19rZXkiLCJqc29uX3RvX3ZhbHVlIiwib2ZfdW5peF9sYWJlbCIsImludCQwIiwidG9fdW5peF9sYWJlbCIsIm9mX3VuaXhfZXJyb3IiLCJ0b191bml4X2Vycm9yIiwic3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0Iiwic3VjY2VzcyIsInN0b3AiLCJzdWNjZXNzX29yX3N0b3AiLCJoZWlnaHQiLCJub2RlIiwibGVmdCIsInJpZ2h0IiwiaGwiLCJociIsImhsJDAiLCJpc19lbXB0eSIsInNpbmdsZXRvbiIsImlzX3NpbmdsZXRvbiIsInNldDIiLCJzZXQxIiwiYmFsYW5jZSIsImhlaWdodF9sZWZ0IiwiaGVpZ2h0X3JpZ2h0IiwibGVmdHJpZ2h0IiwibGVmdHZhbHVlIiwibGVmdGxlZnQiLCJsZWZ0cmlnaHRyaWdodCIsImxlZnRyaWdodHZhbHVlIiwibGVmdHJpZ2h0bGVmdCIsInJpZ2h0cmlnaHQiLCJyaWdodHZhbHVlIiwicmlnaHRsZWZ0IiwicmlnaHRsZWZ0cmlnaHQiLCJyaWdodGxlZnR2YWx1ZSIsInJpZ2h0bGVmdGxlZnQiLCJiYWxhbmNlX3dpdGhfbG9ncyIsIndhcm4iLCJwYXJhbWV0ZXJzIiwiZXJyb3IiLCJsb2MiLCJlcnJvciQwIiwiciIsIm8kMCIsImFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyIsIm5ld192YWwiLCJ2YWx1ZV9zZXQiLCJyaWdodCQwIiwiYm9vbCIsInNldCQwIiwiZXJyb3IkMSIsImxlZnQkMCIsImJvb2wkMCIsImVycm9yJDIiLCJzZXQkMSIsImVycm9yJDMiLCJhZGRfd2l0aF9sb2dzIiwibmV3X3ZhbHVlIiwiYWRkX2V2ZW5faWZfaXRfZXhpc3RzIiwiam9pbiIsInJpZ2h0aGVpZ2h0IiwibGVmdGhlaWdodCIsInNhZmVfZXh0cmFjdF9taW5fZWx0IiwibWluIiwibWluX2VsdF93aXRoX2xvZ3MiLCJyZW1vdmVfbWluX2VsdF93aXRoX2xvZ3MiLCJqb2luX3dpdGhfbG9ncyIsInJpZ2h0MiIsInZhbHVlMiIsImxlZnQyIiwic2V0MiQwIiwibWluMiIsImNvbmNhdF93aXRoX2xvZ3MiLCJlbHRfb3B0Iiwic3BsaXRfd2l0aF9sb2dzIiwic3BsaXRfdmFsIiwic2V0X3ZhbCIsImxlZnRsZWZ0JDAiLCJyaWdodHJpZ2h0JDAiLCJyZW1vdmUiLCJyZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2UiLCJlcnJvciQ0IiwiZXJyb3IkNSIsImVycm9yJDYiLCJlcnJvciQ3IiwiZXJyb3IkOCIsInNldCQyIiwiZXJyb3IkOSIsInJlbW92ZV93aXRoX2xvZ3MiLCJzcGxpdCIsInNwbGl0X3ZhbHVlIiwic2V0X3ZhbHVlIiwidW5pb24iLCJoZWlnaHQyIiwiaGVpZ2h0MSIsInJpZ2h0MSIsInZhbHVlMSIsImxlZnQxIiwicmlnaHQyJDAiLCJsZWZ0MiQwIiwicmlnaHQxJDAiLCJsZWZ0MSQwIiwiZGlzam9pbnRfdW5pb24iLCJ1bmlvbl9nZW4iLCJhZGRfZ2VuIiwidW5pb25fd2l0aF9sb2dzIiwidyIsInMkMCIsImRpc2pvaW50X3VuaW9uX3dpdGhfbG9ncyIsInN1dHVyZV9ub3QiLCJpbnRlciIsInRyaXBsZTIiLCJzdXR1cmVfbm90X3dpdGhfbG9ncyIsImludGVyX3dpdGhfbG9ncyIsImRpZmYiLCJkaWZmX3dpdGhfbG9ncyIsIm1pbnVzIiwibWludXNfd2l0aF9sb2dzIiwibWVtIiwic2VhcmNoZWRfdmFsdWUiLCJmaWx0ZXIiLCJmaWx0IiwiZmlsdGVyX3dpdGhfbG9ncyIsInBhcnRpdGlvbiIsInBhcnQiLCJwYXJ0aXRpb25fd2l0aF9sb2dzIiwicmgiLCJjb25zX2VudW0iLCJlbnVtJDEiLCJlMiQyIiwiZTEkMiIsImUxIiwiZTIiLCJlMiQwIiwicjIiLCJ2MiIsImUxJDAiLCJyMSIsInYxIiwiZTIkMSIsImUxJDEiLCJlcXVhbCIsInN1YnNldCIsInNldDEkMCIsImZvbGRfaW52IiwiZm9yX2FsbCIsImV4aXN0cyIsImVsZW1lbnRzIiwiZWxlbWVudHNfYXV4IiwiYXV4X3ByaW50Iiwia2V5JDEiLCJrZXkkMCIsIm1pbl9lbHQiLCJtYXhfZWx0IiwiY2hvb3NlIiwicmFuZG9tIiwicnMiLCJhaW1fYWNjIiwiYWNjX2wiLCJhY2NfciIsImVtcHR5JDAiLCJoZWlnaHQkMCIsInNpemUkMCIsIm5vZGUkMCIsImtleTAiLCJkYXRhIiwiaXNfZW1wdHkkMCIsInJvb3QiLCJtYXhfa2V5IiwiYmFsYW5jZSQwIiwicmlnaHQwIiwiZGF0YTAiLCJsZWZ0MCIsImRhdGExIiwia2V5MSIsInJpZ2h0MCQwIiwiZGF0YTAkMCIsImtleTAkMCIsImxlZnQwJDAiLCJkYXRhMSQwIiwia2V5MSQwIiwiYmFsYW5jZV93aXRoX2xvZ3MkMCIsImFkZCQwIiwiZGF0YV9tYXAiLCJrZXlfbWFwIiwiY21wIiwiYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzJDAiLCJwYXJhbWV0ZXIiLCJtYXAkMCIsImFkZF93aXRoX2xvZ3MkMCIsImV4dHJhY3RfbWluX2JpbmRpbmciLCJkYXRhMiIsImtleTIiLCJleHRyYWN0X21pbl9iaW5kaW5nX3dpdGhfbG9ncyIsIm1lcmdlIiwibWFwMSIsIm1hcDIiLCJkYXRhMyIsImtleTMiLCJtZXJnZV93aXRoX2xvZ3MiLCJyZW1vdmUkMCIsInJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSQwIiwibWFwJDEiLCJtYXAkMiIsInJlbW92ZV93aXRoX2xvZ3MkMCIsInBvcCIsImpvaW4kMCIsInZhbHVlJDAiLCJqb2luX3dpdGhfbG9ncyQwIiwic3BsaXQkMCIsImRhdGEyJDAiLCJsZWZ0MiQxIiwicmlnaHQyJDEiLCJzcGxpdF93aXRoX2xvZ3MkMCIsImRpZmYkMCIsIm9sZWZ0MiIsIm9sZWZ0MSIsIm9yaWdodDIiLCJvcmlnaHQxIiwidW5pb24kMCIsIm9wX2RhdGEyIiwiZDIiLCJkMiQwIiwib3BfZGF0YTEiLCJkMSIsImQxJDAiLCJ1bmlvbl93aXRoX2xvZ3MkMCIsInVwZGF0ZSIsInVwZGF0ZV93aXRoX2xvZ3MiLCJkaWZmX3ByZWQiLCJwcmVkIiwibWluX2VsdCQwIiwiZmluZF9vcHRpb24iLCJmaW5kX2RlZmF1bHQiLCJmaW5kX29wdGlvbl93aXRoX2xvZ3MiLCJmaW5kX2RlZmF1bHRfd2l0aF9sb2dzIiwibWVtJDAiLCJmaWx0ZXJfb25lIiwiaXRlciQwIiwiZm9sZCQwIiwidmFsdWUkMSIsIm91dHB1dGwiLCJpbnRlcnJ1cHRlZCIsInZhbF9vcHQiLCJmb2xkX3dpdGhfaW50ZXJydXB0aW9uIiwibW9uYWRpY19mb2xkIiwicGFyYW0iLCJlcnIiLCJlcnIkMCIsImVyciQxIiwidmFsdWUkMiIsImVyciQyIiwibW9uYWRpY19mb2xkMiIsInJlcyIsInJoJDAiLCJtYXAxJDAiLCJtYXAyJDAiLCJyZXMkMCIsInJlcyQxIiwicmgkMSIsInJlcyQyIiwicmgkMiIsInJlcyQzIiwicmgkMyIsInJlcyQ0IiwicmgkNCIsIm1vbmFkaWNfZm9sZDJfc3BhcnNlIiwiaWQiLCJtb25hZGljX2l0ZXIyX3NwYXJzZSIsIm1vbmFkaWNfZm9sZF9yZXN0cmljdGlvbiIsIm1hcGkiLCJtYXBfd2l0aF9sb2dzIiwiZXJyb3JzIiwiZXJyb3JzJDAiLCJkYXRhJDAiLCJlcnJvcnMkMSIsIm1hcDJfd2l0aF9sb2dzIiwibWFwMnpfd2l0aF9sb2dzIiwiZm9sZDJfd2l0aF9sb2dzIiwiZm9sZDJ6X3dpdGhfbG9ncyIsImZvbGQyX3NwYXJzZV93aXRoX2xvZ3MiLCJpdGVyMl9zcGFyc2Vfd2l0aF9sb2dzIiwicGFyIiwiZm9yX2FsbCQwIiwiY29uc19lbnVtJDAiLCJlJDAiLCJlJDEiLCJjb21wYXJlJDAiLCJtMSIsIm0yIiwiYyQwIiwiZXF1YWwkMCIsImJpbmRpbmdzX2F1eCIsImJpbmRpbmdzIiwiYXV4X3ByaW50JDAiLCJwciIsImRhdGEkMSIsImRhdGEkMiIsInByaW50JDAiLCJkaWZmX3dpdGhfbG9ncyQwIiwibzEkMSIsIm8yJDEiLCJvMSIsIm8yIiwibzEkMCIsIm8yJDAiLCJkaWZmX3ByZWRfd2l0aF9sb2dzIiwiZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfIiwiZm9sZF9yZXN0cmljdGlvbl93aXRoX2xvZ3MiLCJwcm9qX21hcCIsImlkZW50aXR5X2VsdCIsImtleV9hIiwiZGF0YV9hIiwibWFwX2IiLCJrZXlfYiIsInByb2pfbWFwX21vbmFkaWMiLCJoYW5kbGVyIiwibW9uYWRpY19tZXJnZSIsImhhbmRsZXIkMCIsInByb2pfc2V0Iiwic2V0X2EiLCJwcm9qX3NldF9tb25hZGljIiwic2V0X2IiLCJwYXJ0aXRpb25fc2V0IiwicGFydGl0aW9uX3NldF9tb25hZGljIiwicHJvajIiLCJrZXlfYyIsInN1Ym1hcCIsInN1Ym1hcCQwIiwicHJvajJfbW9uYWRpYyIsImludF9jb21wYXJlIiwiaW50X3BhaXJfY29tcGFyZSIsInN0cmluZ19wYWlyX2NvbXBhcmUiLCJwYWlyX2VxdWFsIiwiZXFhIiwiZXFiIiwieWIiLCJ5YSIsInhiIiwieGEiLCJwcmludCQxIiwicHJpbnQkMiIsInByaW50JDMiLCJ1bnNvbWUiLCJ1bnNvbWVfb3JfcmFpc2UiLCJleGNlcCIsImJpbmQiLCJlcSIsImdldF9hbm5vdCIsImFubm90IiwiY29weV9hbm5vdCIsIm1hcF9hbm5vdCIsIm9mX3BvcyIsInN0YXJ0X2xvY2F0aW9uIiwiZW5kX2xvY2F0aW9uIiwiZHVtbXlfcG9zaXRpb24iLCJkdW1teSIsImFubm90X3dpdGhfZHVtbXkiLCJpc19kdW1teSIsImlzX2Fubm90ZWRfd2l0aF9kdW1teSIsInByX2YiLCJwcl9sIiwicHJpbnRfYW5ub3RlZCIsInJlYWRfcG9zaXRpb24iLCJjaHIiLCJsaW5lIiwid3JpdGVfcG9zaXRpb24iLCJ0b19jb21wYWN0X3lvanNvbiIsImRlY2xzIiwib2ZfY29tcGFjdF95b2pzb24iLCJmaWxlbmFtZXMiLCJmaWxlIiwieCQyIiwib2ZfbGluZSIsIngkMyIsIm9mX2NociIsIngkNCIsInRvX2NociIsIngkNSIsInRvX2xpbmUiLCJ5b2pzb25fb2ZfYW5ub3RlZCIsImpwIiwiYW5ub3RlZF9vZl95b2pzb24iLCJ3cml0ZV9yYW5nZSIsInN0cmluZ19vZl9yYW5nZSIsInJlYWRfcmFuZ2UiLCJyYW5nZV9vZl9zdHJpbmciLCJpc19pbmNsdWRlZF9pbiIsInJhbmdlIiwibGlzdGkiLCJlbCIsImhhc2h0YmwiLCJ0YmwiLCJib3R0b20iLCJudSIsImVtcHR5X3NldCIsImNvbW1hIiwiZG90IiwiY29tcGFjdF9jb21tYSIsImNvbG9uIiwic3BhY2UiLCJjdXQiLCJ1bml0IiwicGFpciIsInBwYSIsInBwYiIsIm9wdGlvbiIsIndpdGhfc3BhY2UiLCJwbGFpbl9hcnJheSIsImxpc3RfdG9fc3RyaW5nIiwic2V0X3RvX3N0cmluZyIsImFjY3ZhbCIsInIkMCIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiIsImxybCIsImFjY19scnIiLCJhY2NfbCQxIiwiYWNjX3IkMSIsImFjY19yJDAiLCJyciIsInJ2IiwicmwiLCJhY2NfbCQwIiwicmxyIiwicmx2IiwicmxsIiwiYWNjX3JsbCIsIndlaWdodCIsIndlaWdodCQwIiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidDIiLCJ0MSIsInN0YXRlIiwiYWltX2FjYyQxIiwid3JpdGVfc2V2ZXJpdHkiLCJ3cml0ZV9zdGF0dXMiLCJ3cml0ZV9tZXNzYWdlIiwidGV4dCIsInNldmVyaXR5IiwicmVhZF9tZXNzYWdlIiwicHJpbnRfbWVzc2FnZSIsInJhbmdlJDAiLCJ3cml0ZV90Iiwid3JpdGVfb2siLCJ3cml0ZV9lcnJvciIsIm1lc3NhZ2VzIiwic3RhdHVzIiwibWVzc2FnZXMkMCIsInN0YXR1cyQwIiwic3RyaW5nX29mX3QiLCJyZWFkX3RfY29udGVudCIsInJlYWRfdCIsInJlYWRfb2siLCJyZWFkX2Vycm9yIiwiYXV4X3JlYWRfdCIsImNsb3NpbmciLCJwb3MiLCJ2JDAiLCJ0X29mX3N0cmluZyIsImxpZnQiLCJva19zdGF0dXMiLCJlcnJvcl9zdGF0dXMiLCJvayIsIm92ZXJ3cml0ZV9zdGF0dXMiLCJzcGVjaWFsX3ZhbCIsImlkZW50aXR5IiwibWF4IiwiaW1tZWRpYXRlIiwiaXNfaWRlbnRpdHkiLCJjb21wdXRlIiwidiQxIiwiZm9yY2UiLCJpbWFnZSIsImRlYnVnX21vZGUiLCJub3Rfb2siLCJ1bnNhZmVfaW1wZXJhdGl2ZV9hZGQiLCJpbXBlcmF0aXZlX2FkZCIsIm9yaWdpbiIsImN5Y2xpY19wZXJtdXRhdGlvbl9mcm9tX2xpc3QiLCJzdG9wX2F0IiwicHJlJDEiLCJzdWJzdCIsInByZSIsInByZSQwIiwiYXBwbHkiLCJjb21wb3NlIiwiZXh0ZW5zaWJsZSIsImludmVyc2UiLCJzcmMiLCJkc3QiLCJwcmludF9mdWxsIiwidG9feW9qc29uIiwib2ZfeW9qc29uIiwibWFzayIsInVubWFzayIsImlzX2luZmluaXRlIiwiZmluZCIsImNvcHlfdmVjdF9pbiIsImNvcHlfaW4iLCJkZWNsYXJlX3VuYmFsYW5jZWQiLCJ1cGRhdGVfc3RydWN0dXJlIiwibl9sYXllciIsInVwZGF0ZV9zdHJ1Y3R1cmVfYXV4IiwiZmF0aGVyIiwidF9ub2RlIiwidF9zdWJ0cmVlIiwibGF5ZXIiLCJjdXJyZW50X2xheWVyIiwibGF5ZXJfZW5kIiwidW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIiLCJ1bmJhbGFuY2VkX2V2ZW50cyIsImxheWVyX2VuZCQwIiwiY3VycmVudF9sYXllciQwIiwidyQwIiwidG90YWwiLCJyZXAiLCJyJDEiLCJsc29uIiwicnNvbiIsInIkMiIsImRlYnVnX3ByaW50IiwiaW52IiwiaW5mIiwiZ3JhcGhfcGFnZSIsInRpdGxlIiwic3VidGl0bGUiLCJkZXBzIiwiaGVhZGVyIiwiY29yZSIsImRlcGVuZGVuY3kiLCJiaW5fYWxnX29wX3RvX3N0cmluZyIsImJpbl9hbGdfb3BfaXNfcHJlZml4IiwicHJpbnRfYmluX2FsZ19vcCIsImZ4IiwiZnkiLCJvcCIsImJpbl9hbGdfb3BfdG9fanNvbiIsImJpbl9hbGdfb3Bfb2ZfanNvbiIsInVuX2FsZ19vcF90b19zdHJpbmciLCJwcmludF91bl9hbGdfb3AiLCJ1bl9hbGdfb3BfdG9fanNvbiIsInVuX2FsZ19vcF9vZl9qc29uIiwic3RhdGVfYWxnX29wX3RvX3N0cmluZyIsInByaW50X3N0YXRlX2FsZ19vcCIsInN0YXRlX2FsZ19vcF90b19qc29uIiwic3RhdGVfYWxnX29wX29mX2pzb24iLCJiaW5fYm9vbF9vcF90b19zdHJpbmciLCJwcmludF9iaW5fYm9vbF9vcCIsImJpbl9ib29sX29wX3RvX2pzb24iLCJiaW5fYm9vbF9vcF9vZl9qc29uIiwidW5fYm9vbF9vcF90b19zdHJpbmciLCJwcmludF91bl9ib29sX29wIiwidW5fYm9vbF9vcF90b19qc29uIiwidW5fYm9vbF9vcF9vZl9qc29uIiwiY29tcGFyZV9vcF90b19zdHJpbmciLCJwcmludF9jb21wYXJlX29wIiwiY29tcGFyZV9vcF90b19qc29uIiwiY29tcGFyZV9vcF9vZl9qc29uIiwicHJpbnRfcmV2X2RlcCIsImlkJDAiLCJpZCQxIiwicmV2X2RlcF90b195b2pzb24iLCJyZXZfZGVwX29mX3lvanNvbiIsImRlcHNldF90b195b2pzb24iLCJkZXBzZXRfb2ZfeW9qc29uIiwiemVybyIsIm9uZSIsImNhc3RfYmluX29wIiwib3BfZiIsIm9wX2kiLCJvcF9pNjQiLCJ5JDEiLCJ5JDIiLCJ5JDMiLCJ5JDQiLCJvcF9pJDAiLCJ5JDUiLCJvcF9pNjQkMCIsInkkNiIsInkkNyIsIm9wX2k2NCQxIiwieSQ4Iiwib3BfaTY0JDIiLCJjYXN0X3VuX29wIiwib3BfZiQwIiwib3BfaSQxIiwib3BfZiQxIiwib3BfZiQyIiwibjEiLCJuMiIsImlzX2dyZWF0ZXIiLCJpc19zbWFsbGVyIiwiaXNfZXF1YWwiLCJtdWx0IiwicmVtIiwiaW50ZXJuYWxfZGl2Iiwic3VjYyIsIm5lZyIsInRvX2Zsb2F0IiwiaXNfemVybyIsImlzX3N0cmljdGx5X3Bvc2l0aXZlIiwicG9zX3BvdyIsInByZXR0eV9wcmludCIsInByaW50X29wdGlvbiIsIm1heWJlX2l0ZXJpIiwib2ZfYmluX2FsZ19vcCIsIm9mX3VuX2FsZ19vcCIsIm9mX2NvbXBhcmVfb3AiLCJ3YXJuaW5nX2J1ZmZlciIsImZvcmJpZGRlbiIsImJhZCIsImNyZWF0ZV9mcm9tX2xpc3QiLCJjcmVhdGVfbm9fbG9jIiwibmQiLCJlbHRfbmFtZSIsImVsdF9pZCIsImtpbmQiLCJzZXAiLCJwcCIsImVsdF92YWwiLCJyZW1vdmVfc3VmZml4X2FmdGVyX2xhc3Rfb2NjdXIiLCJsaXN0JDAiLCJidWZmZXIiLCJsaXN0JDEiLCJsaXN0JDIiLCJidWZmZXIkMCIsImxhc3QiLCJwb3BfbGFzdCIsImNvbnNfb3B0aW9uIiwic21hcnRfZmlsdGVyIiwic21hcnRfbWFwIiwicmV2X21hcGkiLCJtYXBfb3B0aW9uIiwiZXhpc3RzX3VuaXEiLCJtZXJnZV91bmlxIiwidDIkMCIsImgyJDAiLCJ0MSQwIiwiaDEkMCIsInJldl9tYXBfYXBwZW5kIiwiYWNjJDEiLCJtYXBfZmxhdHRlbiIsInJlbW92ZV9jb25zZWN1dGl2ZV9kb3VibGUiLCJxJDEiLCJsYXN0JDEiLCJsYXN0JDAiLCJmb2xkX3JpZ2h0X21hcCIsImZvbGRfbGVmdDIiLCJjbGVhbiIsImludF9vZl9oYXNoZWRfbGlzdCIsImZzdF9lbHRfaWQiLCJmc3RfbGlzdF9pZCIsImNvbnMiLCJjYWNoZSQwIiwiaGVhZCIsImhhc2hfaGVhZCIsImNhY2hlJDEiLCJzdWJ0YWIiLCJzdWJ0YWIkMCIsInN1YnRhYiQxIiwiaGFzaCQwIiwiaGFzaCIsImNhY2hlIiwiZm9ybWF0dGVyIiwicHJpbnRfY2FjaGUiLCJvcHQkMCIsInNpbXBsaWZ5IiwiZ2NkIiwiZGl2IiwiYl9pbnYiLCJwdXNoIiwiY3JjX3RhYmxlIiwic3RyaW5nIiwic3RyIiwiY3JjIiwidHJpcGxlX29mX2NvbG9yIiwiY3JlYXRlX2luZmluaXRlIiwidCQyIiwidCQ0IiwidCQzIiwib3ZlcndyaXR0ZW5fdmFsdWUiLCJvdmVyd3JpdHRlbl92YWx1ZSQwIiwiY29udGVudHMiLCJudGgiLCJvZnMiLCJjbGVhciIsInJlc2V0IiwicmVzaXplIiwibW9yZSIsIm5ld19sZW4iLCJuZXdfYnVmZmVyIiwiYWRkX2NoYXIiLCJhZGRfc3Vic3RyaW5nIiwibmV3X3Bvc2l0aW9uIiwiYWRkX3N1YmJ5dGVzIiwiYWRkX3N0cmluZyIsImRlZmF1bHRfYWxwaGFiZXQiLCJ1cmlfc2FmZV9hbHBoYWJldCIsInBhZGRpbmciLCJvZl9jaGFyIiwiYWxwaGFiZXQiLCJ0b19jaGFyIiwiZGVjb2RlIiwiaW5wdXQiLCJpbnB1dCQwIiwibGVuZ3RoJDAiLCJ3b3JkcyIsInBhZGRpbmckMCIsInoiLCJlbmNvZGUiLCJwYWQiLCJwYWRkaW5nX2xlbiIsInByaW50IiwiY29tcGFyZSIsInkiLCJ4IiwieSQwIiwieCQwIiwiYyIsInByaW50X2FnZW50Iiwid2l0aF9pZCIsIndpdGhfbGluayIsIm5vZGUiLCJmIiwiYWciLCJpZCIsInNpIiwiaSIsInAkMCIsInBhY2siLCJwIiwiZnJlZV9pZCIsImRhbmdsaW5nIiwidHkiLCJsIiwibXlzZWxmIiwidmEiLCJ2YSQwIiwicHJpbnRfY2MiLCJtaXgiLCJsaW5rIiwiYWwiLCJhciIsInN0b3JlIiwicHJpbnRfZG90X2NjIiwibmJfY2MiLCJpbCIsImlyIiwidiIsInMiLCJsaW5rcyIsInMkMCIsImFyJDAiLCJhbCQwIiwid3JpdGVfc2l0ZSIsIm9iIiwid3JpdGVfY2Nfc2l0ZSIsImxpbmtzX29mX3lvanNvbiIsImIiLCJlcnJvcl9tc2ciLCJyZWFkX2NjX3NpdGUiLCJsYiIsImtleSQwIiwibiIsImtleSIsInBvcnRfc3RhdGVzIiwicG9ydF9saW5rcyIsIm91dCIsInNpdGVfdHlwZSIsInNpdGVfbmFtZSIsIndyaXRlX2NjX25vZGUiLCJub2RlX2lkIiwicmVhZF9jY19ub2RlIiwibm9kZV9zaXRlcyIsIm5vZGVfdHlwZSIsIndyaXRlX2Nvbm5lY3RlZF9jb21wb25lbnQiLCJyZWFkX2Nvbm5lY3RlZF9jb21wb25lbnQiLCJzdHJpbmdfb2ZfY29ubmVjdGVkX2NvbXBvbmVudCIsIm9wdCIsInN0aCIsImxlbiIsImNvbm5lY3RlZF9jb21wb25lbnRfb2Zfc3RyaW5nIiwiaW52ZXJ0ZWRfY291bnRlcl9zdWZmaXgiLCJmb2xkIiwibyIsIm51bV9vZl9zaXRlIiwiYWdlbnRfbmFtZSIsInNpZ25hdHVyZSIsImFnZW50X25hbWUkMCIsImtpbmQiLCJzaXRlX29mX251bSIsImFkZHIiLCJudW1fb2ZfaW50ZXJuYWxfc3RhdGUiLCJzaXRlX2lkIiwic3RhdGUiLCJzaXRlX3NpZyIsImludGVybmFsX3N0YXRlX29mX3NpdGVfaWQiLCJ2YWxfaWQiLCJjb3VudGVyX29mX3NpdGVfaWQiLCJoYXNfY291bnRlciIsInBfaWQiLCJvayIsIm9rJDAiLCJhIiwiYWNjIiwib25lX3RvX2pzb24iLCJjMV9vcHQiLCJjMl9vcHQiLCJjMyIsIm9uZV9vZl9qc29uIiwic2l6ZSIsInNpZ3MiLCJnZXQiLCJhZ2VudF9pZCIsImFyaXR5IiwibWF4X2FyaXR5IiwiYWdlbnRfb2ZfbnVtIiwibnVtX29mX2FnZW50IiwibmFtZSIsImlkX29mX3NpdGUiLCJhZ2VudF90eSIsInNpdGVfb2ZfaWQiLCJpZF9vZl9pbnRlcm5hbF9zdGF0ZSIsImludGVybmFsX3N0YXRlX29mX2lkIiwiaWRfc2l0ZSIsImlkX3N0YXRlIiwiaW50ZXJuYWxfc3RhdGVzX251bWJlciIsImRlZmF1bHRfaW50ZXJuYWxfc3RhdGUiLCJhbGxvd2VkX2xpbmsiLCJhZzEiLCJzMSIsImFnMiIsInMyIiwiYWcxJDAiLCJzMSQwIiwiYWcyJDAiLCJzMiQwIiwiY3JlYXRlIiwiY291bnRlcnNfcGVyX2FnZW50IiwiYWdlbnRfc2lncyIsImlzX2NvdW50ZXJfYWdlbnQiLCJhZ2VudF9pbmZvIiwicG9ydHNfaWZfY291bnRlcl9hZ2VudCIsInNpdGVfaXNfY291bnRlciIsImFnX3R5IiwiZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyIsImNvdW50ZXJfYWdlbnRfaW5mbyIsImlzX2ludmVydGVkX2NvdW50ZXIiLCJjb3VudGVyX25hbWUiLCJwcmludF9zaXRlIiwicHJpbnRfaW50ZXJuYWxfc3RhdGUiLCJzaXRlIiwicHJpbnRfc2l0ZV9pbnRlcm5hbF9zdGF0ZSIsInByaW50X2NvdW50ZXJfaW5mbyIsImlfb3B0Iiwial9vcHQiLCJqIiwiaSQwIiwiaSQxIiwicHJpbnRfY291bnRlciIsInBwX2ludCIsIm5hIiwidG9fanNvbiIsIm9mX2pzb24iLCJhZ2VudF9zaWduYXR1cmUiLCJwb3J0cyIsImVtcHR5IiwiaW5jcmVtZW50X2luX3NuYXBzaG90IiwicmF3IiwiY2J0X2EiLCJjbGFzc2lmeSIsImFncyIsIm5iIiwiaHMiLCJhdXhfaW5jcmVtZW50IiwidCIsImgiLCJjYnRfeSIsImgxIiwiYm9vbCIsImRvbiIsInEiLCJiJDAiLCJpX29rIiwiZG9uJDEiLCJ0b2RvIiwiYSQwIiwiYWdzJDAiLCJjb3VudGVyX3ZhbHVlIiwiY2MiLCJjb3VudCIsInNpZCIsIm5pZCIsImNjX3RvX3VzZXJfY2MiLCJkZWJ1Z19tb2RlIiwia2VlcF9pbnZlcnRlZF9jb3VudGVycyIsInIiLCJwb3MiLCJpbmRleGVzIiwiaW5kZXhlcyQwIiwiY2NfbGlzdF93aXRob3V0X2NvdW50ZXJzIiwiY2Nfd2l0aG91dF9jb3VudGVycyIsImRuX2lkIiwiZG5faWQkMCIsIm5vZGVfc2l0ZXNfYWxsIiwiZXhwb3J0JDAiLCJqc29uX2RpY3Rpb25uYXJ5IiwibWFrZSIsInNvcnQiLCJzaWdzJDAiLCJhZ2VudCIsInByaW50X2ludGVybmFsIiwicHJpbnRfcmF3X2ludGVybmFsIiwicmVuYW1lIiwiaW5qIiwibl90eSIsIm5faWQiLCJpZDIiLCJpZDEiLCJ3cml0ZV9qc29uIiwicmVhZF9qc29uIiwicHJpbnQkMCIsImxvb3BpbmciLCJpbnRfbCIsIm1hcmsiLCJvbGQiLCJ0ZXN0IiwicmVzZXQiLCJpdGVyaV9yZXNldCIsImsiLCJ3aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzIiwiY29weSIsImdyYXBoIiwidGFibGVzIiwiY2NzIiwic3RhdHMiLCJmcmVlX2lkcyIsInRvcF9pZCIsImFkZF9hZ2VudCIsImFpIiwiaWQkMCIsIm5ld19pZCIsIm5ld19pZCQwIiwidCQwIiwiaCQwIiwiZnJlZV9pZCQwIiwibWlzc2luZ3MiLCJhZGRfZnJlZSIsImFkZF9pbnRlcm5hbCIsImFkZF9saW5rIiwibm9kZTIiLCJ0eSQwIiwibm9kZTEiLCJjYWNoZSIsImNjX2lkX29wIiwibmV4dCQxIiwidG9kb3MiLCJzaXRlJDMiLCJuZXh0IiwibmV4dCQwIiwic2l0ZSQxIiwic2l0ZSQwIiwic2l0ZSQyIiwicmVtb3ZlX2FnZW50IiwiaWRzIiwiYWckMCIsInJlbW92ZV9mcmVlIiwiZ2V0X2ludGVybmFsIiwiZ2V0X3NpdGVzIiwiYXJyIiwiZ2V0X3NvcnQiLCJyZW1vdmVfaW50ZXJuYWwiLCJyZW1vdmVfbGluayIsIm90aGVyX29yaWckMSIsInRoaXNfb3JpZyIsInRoaXNfY2FjaGUiLCJvdGhlcl9jYWNoZSIsIm9sZF9jY19pZCIsImluc3BlY3Rfc2l0ZSIsImRzdF9jYWNoZSIsImRjIiwib3RoZXJfb3JpZyQwIiwib3RoZXJfY2FjaGUkMSIsIm90aGVyX25leHQkMCIsIm90aGVyX29yaWciLCJvdGhlcl9jYWNoZSQwIiwib3RoZXJfbmV4dCIsInRvZG9zJDAiLCJ0aGlzX25leHQiLCJpc19hZ2VudCIsImlzX2FnZW50X2lkIiwiaXNfZnJlZSIsImlzX2ludGVybmFsIiwibGlua19leGlzdHMiLCJzJDEiLCJhZyQxIiwiZXhpc3RzX2ZyZXNoIiwibGlua19kZXN0aW5hdGlvbiIsIml0ZXJfbmVpZ2hib3JzIiwiYWdfdGFibGUiLCJhbGxfYWdlbnRzX3doZXJlIiwiaW5fc2FtZV9jb25uZWN0ZWRfY29tcG9uZW50IiwiZ2V0X2Nvbm5lY3RlZF9jb21wb25lbnQiLCJvbmVfY29ubmVjdGVkX2NvbXBvbmVudCIsImtub3duIiwibm9kZSQwIiwia25vd24kMCIsImtub3duJDEiLCJ0b2RvcyQxIiwic2l0ZXMiLCJub2RlX2lkX2luX3dpdG5lc3MiLCJzaXRlX3N0YXRlIiwic3BlY2llcyIsInJvb3QiLCJzcGVjaWUiLCJidWlsZF9zbmFwc2hvdCIsImNjcyQxIiwibm9kZSQxIiwiY2NzJDAiLCJub2RlJDIiLCJidWlsZF91c2VyX3NuYXBzaG90IiwiZGVidWdfcHJpbnQiLCJwcmludF9zaXRlcyIsImludCQwIiwicHJpbnRfcGF0aCIsImVtcHR5X3BhdGgiLCJzaW5nbGV0b25fcGF0aCIsIm4kMCIsInJldl9wYXRoIiwiaXNfdmFsaWRfcGF0aCIsImFyZV9jb25uZWN0ZWQiLCJtYXhfZGlzdGFuY2UiLCJub2Rlc194Iiwibm9kZXNfeSIsInByZXBhcmUiLCJkZXB0aCIsIm91dCQxIiwiaWQkMSIsImFjYyQxIiwic2l0ZSQ0IiwicGF0aCIsInBhdGgkMCIsIm91dCQwIiwiYWNjJDAiLCJuZXh0JDIiLCJvdXQkMiIsInN0b3AiLCJkIiwicHJpbnRfaWQiLCJwcmludF9pZF9zaXRlIiwic291cmNlIiwiZmluZF90eSIsInR5JDEiLCJwb3J0X3RvX3lvanNvbiIsInBvcnRfb2ZfeW9qc29uIiwic3RlcF90b195b2pzb24iLCJzdGVwX29mX3lvanNvbiIsInRvX3lvanNvbiIsIm9mX3lvanNvbiIsImV4dGVuZCIsInBvcnQiLCJ0JDEiLCJjb21wYXRpYmxlX2ZyZXNoX3BvaW50IiwiZSIsInNzaXRlIiwiYXJyb3ciLCJzdHkiLCJpbmokMCIsImluaiQzIiwic3NpdGUkMSIsInN0eSQxIiwic2lkJDEiLCJpZCQyIiwiaW5qJDEiLCJpbmokMiIsInNzaXRlJDAiLCJzdHkkMCIsInNpZCQwIiwiY29tcGF0aWJsZV9wb2ludCIsImUkMCIsImlkJDMiLCJ0eSQyIiwiaWQkNCIsInNpdGUkNSIsInR5JDMiLCJpZCQ1Iiwic3NpdGUkMiIsInNpZCQyIiwiaW5qJDQiLCJzaXRlJDYiLCJ0eSQ0IiwiaWQkNiIsImlzX3N1Ym5hdmlnYXRpb24iLCJuYXYkMCIsImdvYWwiLCJuYXYkMSIsInJlbmFtZV9pZCIsImluajJjYyIsImltZyIsIngkMSIsInQkMiIsImNoZWNrX2VkZ2UiLCJkc3RfaXNfb2theSIsImluamVjdGlvbl9mb3Jfb25lX21vcmVfZWRnZSIsImRzdCIsImRzdCQwIiwicnR5IiwicnR5JDAiLCJyb290JDAiLCJpbXBlcmF0aXZlX2RzdF9pc19va2F5IiwiaW1wZXJhdGl2ZV9lZGdlX2lzX3ZhbGlkIiwiY29uY3JldGl6ZV9wb3J0IiwiY29uY3JldGl6ZSIsIm5hdiIsInN0ZXAiLCJzdCIsImNvcHlfYWdlbnQiLCJhZ2VudCIsImNyZWF0ZSIsIm4iLCJpIiwiZmluZF9hdXgiLCJhIiwiYWkiLCJyb290IiwiZmluZCIsImgiLCJ4IiwiY29tYmluZV9yYW5rcyIsImJ5IiwiaXkiLCJieCIsIml4IiwiYnkkMCIsInVuaW9uIiwieSIsInJvb3RfeCIsInJvb3RfeSIsInJhbmtfeCIsInJhbmtfeSIsInVuaW9uX2ZpbmRfY291bnRlcnMiLCJzaWdzIiwibWl4IiwidCIsInNpZ3MkMCIsImFnIiwiYWZ0ZXIiLCJiZWZvcmUiLCJiIiwibG5rX2IiLCJsbmtfYSIsInMiLCJwcmludCIsIm5vQ291bnRlcnMiLCJjcmVhdGVkIiwiaW5pdGlhbF9jb21tYSIsImYiLCJjb3VudGVyX2FnZW50cyIsInNvbWUiLCJhZ190eSIsImFnX3R5JDAiLCJpbnRzIiwicG9ydHMiLCJlbXB0eSIsImlzX2NvdW50ZXIiLCJjb3VudGVyIiwiaSQxIiwiaSQwIiwiYWdlbnRfdG9fanNvbiIsImFjYyIsImFnZW50X29mX2pzb24iLCJwIiwidG9fanNvbiIsIm0iLCJvZl9qc29uIiwibCIsImVfdG9feW9qc29uIiwiZmlsZW5hbWVzIiwiZl9taXgiLCJmX2lkIiwib3AiLCJhJDAiLCJvcCQwIiwib3AkMSIsImNjIiwibm8iLCJ5ZXMiLCJjb25kIiwiYm9vbF90b195b2pzb24iLCJ0b2tlbiIsImV4cHIiLCJtaXh0dXJlIiwiZXhwciQwIiwiYiQwIiwiYSQxIiwiZV9vZl95b2pzb24iLCJib29sX29mX3lvanNvbiIsInRvayIsInByX21peCIsInByX3RvayIsInByX3ZhciIsImxhYiIsImFzdCIsInRrIiwicHJpbnRfYm9vbCIsImNvbnN0JDAiLCJpbnQkMCIsImZsb2F0JDAiLCJhZGQiLCJlMSIsImUyIiwibWludXMiLCJtdWx0IiwiZGl2IiwicG93IiwibG9nIiwibG4iLCJzaW4iLCJjb3MiLCJ1bWludXMiLCJzcXJ0IiwiYWRkX2RlcCIsImQiLCJ4JDAiLCJvdXQiLCJ0b2tzX2QiLCJpbl9lIiwiaW5fdCIsImoiLCJhZGRfZGVwX2Jvb2wiLCJoYXNfbWl4JDAiLCJ2YXJfZGVjbHMiLCJoYXNfbWl4IiwiYm9vbF9oYXNfbWl4JDAiLCJib29sX2hhc19taXgiLCJpc19jb25zdGFudCIsImMiLCJib29sX2lzX2NvbnN0YW50IiwiaXNfdGltZV9ob21vZ2VuZW91cyIsImJvb2xfaXNfdGltZV9ob21vZ2VuZW91cyIsImF1eF9leHRyYWN0X2NjIiwiYWNjJDAiLCJleHRyYWN0X2NjX2Jvb2wiLCJleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19iIiwic2V0dXBfYWxnX3ZhcnNfcmV2X2RlcCIsInRva3MiLCJ2YXJzIiwicHJvcGFnYXRlX2NvbnN0YW50Iiwid2FybmluZyIsIm1heF90aW1lIiwibWF4X2V2ZW50cyIsInVwZGF0ZWRfdmFycyIsInBvcyIsImMxIiwiYzIiLCJwb3MkMCIsImEkMiIsInBvcyQxIiwicG9zJDIiLCJwb3MkMyIsInBvcyQ0IiwiY29uZCQwIiwicHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wiLCJwb3MkNSIsInQkMCIsImEkMyIsImEkNCIsInBvcyQ2IiwiYSQ1IiwiYSQ2IiwiYiQxIiwiYiQyIiwibjEiLCJuMiIsImhhc19wcm9ncmVzc19kZXAiLCJvbmx5X3RpbWUiLCJ2YXJzX2RlcHMiLCJkZXBzIiwiYXV4IiwiayIsImJvb2xfaGFzX3Byb2dyZXNzX2RlcCIsImlzX2VxdWFsaXR5X3Rlc3RfdGltZSIsIm1hcF9vbl9taXh0dXJlIiwibyIsInAkMCIsIngkMSIsIm8kMCIsInAkMSIsInAkMiIsInkkMCIsIngkMiIsIm1hcF9ib29sX29uX21peHR1cmUiLCJwJDMiLCJvJDEiLCJmb2xkX29uX21peHR1cmUkMCIsImZvbGRfb25fbWl4dHVyZSIsInYiLCJ1IiwiZm9sZF9ib29sX29uX21peHR1cmUkMCIsImZvbGRfYm9vbF9vbl9taXh0dXJlIiwiZXF1YWwiLCJhMiIsImExIiwib3BhIiwiYjIiLCJiMSIsIm9wYiIsImExJDAiLCJvcGEkMCIsImIxJDAiLCJvcGIkMCIsIm9wYSQxIiwib3BiJDEiLCJpZDEiLCJpZDIiLCJtaXgxIiwibWl4MiIsImlkMSQwIiwiaWQyJDAiLCJhMiQwIiwiYTEkMSIsImNvbmRhIiwiYjIkMCIsImIxJDEiLCJjb25kYiIsImVxdWFsX2Jvb2wiLCJ0b195b2pzb24iLCJvZl95b2pzb24iLCJhcnJheV9vZl9qc29uIiwibHMiLCJhcnJheTEiLCJhcnJheTIiLCJwcmludF9rYXBwYSIsImludGYiLCJpcyIsInNkIiwiYWQiLCJwcmludF9jeWNsZXMiLCJmb3JtIiwiY29udGFjdF9tYXAiLCJkZnMiLCJwYXRoIiwibGFzdF9zIiwia25vd24iLCJrbm93biQwIiwicyQwIiwidHkiLCJhY2MkMSIsImFnJDAiLCJ3cml0ZV9zaGFyaW5nX2xldmVsIiwib2IiLCJzdHJpbmdfb2Zfc2hhcmluZ19sZXZlbCIsIm9wdCIsInJlYWRfc2hhcmluZ19sZXZlbCIsImxiIiwic2hhcmluZ19sZXZlbF9vZl9zdHJpbmciLCJkZWJ1Z19wcmludF9pZCIsImZtdCIsImlkIiwic2l6ZV9vZl9jYyIsImNvbXBhcmVfY2Fub25pY2FscyIsImNjJDAiLCJpc19lcXVhbF9jYW5vbmljYWxzIiwiY29hcnNlX2hhc2giLCJwbHVzX2ludGVybmFsIiwiZSIsIm4kMCIsImV4dHJhIiwibm9kZV9zaGFwZSIsImlkX3RvX3lvanNvbiIsImlkX29mX3lvanNvbiIsImR1bW15IiwiZW1wdHlfY2MiLCJuYnQiLCJyYXdfZmluZF90eSIsInR5cyIsImZpbmRfdHkiLCJhZGRfb3JpZ2luIiwicmVjb25zdHJ1Y3Rpb25fbmF2aWdhdGlvbiIsImFscmVhZHlfc3BlY2lmaWVkIiwicmF3X2ZpbmRfcm9vdCIsIm5vZGVzX2J5X3R5cGUiLCJ0eSQwIiwiZmluZF9yb290Iiwid2VpZ2h0IiwibCQwIiwiZCQwIiwibCQxIiwiZG91YmxlJDAiLCJsaW5rcyIsImFyZV9jb21wYXRpYmxlIiwiZGVidWdfbW9kZSIsInBvc3NpYmlsaXRpZXMiLCJzdHJpY3QiLCJyb290MSIsImNjMSIsInJvb3QyIiwiY2MyIiwicmVuYW1lJDEiLCJhdF9sZWFzdF9vbmVfZWRnZSQxIiwiYXRfbGVhc3Rfb25lX2VkZ2UiLCJyZW5hbWUiLCJ0b2RvcyIsInBhaXIiLCJseSIsImx4IiwicmVuIiwidG9kbyIsIm9uZV9lZGdlIiwib25lX2VkZ2UkMSIsInMxIiwiczIiLCJyIiwib25lX2VkZ2UkMCIsImNvbmZsaWN0IiwicmVuYW1lJDAiLCJ0b2RvcyQwIiwiYXRfbGVhc3Rfb25lX2VkZ2UkMCIsImFncyIsImgxIiwiYm9vbCIsImFncyQwIiwiYXV0b21vcnBoaXNtcyIsInBvdGVudGlhbF9wYWlyaW5nIiwibGEiLCJtYXRjaGluZ3MiLCJyYXdfdG9fbmF2aWdhdGlvbiIsImZ1bGwiLCJub2RlcyIsImRvbiIsImZpcnN0IiwiZG9uJDEiLCJoJDAiLCJyZSIsImFucyIsImFucyQwIiwiZmlyc3QkMCIsIm91dCQwIiwiaW5mcyIsImNhbmRfbm9kZXMiLCJsbmsxIiwibG5rMSQwIiwiaXkkMCIsIml5JDYiLCJpeSQyIiwiaXkkNSIsIml5JDMiLCJpeSQ0IiwiaXkkMSIsIm91dGwiLCJjYW5kX25vZGVzJDAiLCJub2Rlc19ieV90eXBlJDAiLCJyZWZfbmJ0IiwicmVmX25idCQwIiwiciQyIiwiaWRzIiwicSIsInEkMCIsInIkMCIsImxzdCIsImZzdHMiLCJyJDEiLCJyZSQwIiwicmVfaW1nIiwicmVfaW1nJDAiLCJyZSQxIiwic2l0ZXMiLCJzaXRlcyQwIiwiY291bnRlcl92YWx1ZSIsInNpZCQwIiwibmlkJDAiLCJjb3VudCIsInNpZCIsIm5pZCIsIm90aGVyIiwiZWwiLCJkaSIsImRuIiwiY291bnQkMCIsImNvdW50ZXJfdmFsdWVfY2MiLCJleHRyZW1pdHkiLCJkb3Rjb21tYSIsImRvdG5ldCIsInByaW50X2NjIiwiY2NfaWQiLCJ3aXRoX2lkIiwic3RoIiwic3RoJDAiLCJmdWxsX3NwZWNpZXMiLCJjY19pZCQwIiwibmVpZ2giLCJsaW5rX2lkcyIsIm5vdF9lbXB0eSIsImFnX3giLCJhZ19pIiwic3QiLCJmcmVlIiwiZHN0X3AiLCJkc3RfYSIsImRzdF90eSIsImtpbmQiLCJvdXQkMSIsInByaW50X2NjX2FzX2lkIiwibm90X2VtcHR5JDAiLCJtZXJnZV9jb21wYXRpYmxlIiwicmVzZXJ2ZWRfaWRzIiwiZnJlZV9pZCIsImluajFfdG9fMiIsImltZyIsImF2YWlsYWJsZV9pZHMiLCJ1c2VkX2lkcyIsImF2YWlsYWJsZV9pbl9jYzEiLCJmcmVlX2lkX2Zvcl9jYzEiLCJnZXRfY2MyIiwicGFjayIsInRvZG9zMiIsInRvZG9zMSIsImluajIiLCJpbmoxIiwiZnJlZV9pZCQwIiwiZnJlZV9pZCQxIiwiZ2V0X2NjMSIsIm5vZGVzaSIsIm5vZGVzbyIsIm5vZGVzaiIsIm5vZGVzbyQwIiwibm9kZXNqJDAiLCJzdGkkMSIsIm4kMSIsInN0aiQzIiwic3RvJDAiLCJuJDIiLCJzdGoiLCJzdGkiLCJzdGokMiIsInN0byIsInN0aiQwIiwic3RpJDAiLCJzdGokMSIsImluajIkMCIsInBhY2skMCIsInRvZG9zMiQwIiwiaiQwIiwibm9kZXNpJDAiLCJpbmoyJDEiLCJwYWNrJDEiLCJjb250ZW50Iiwicm9vdHMiLCJzb25zIiwic2lnbmF0dXJlcyIsImVudiIsInByaW50JDAiLCJwcF9wb2ludCIsInBfaWQiLCJnZXRfc2luZ2xlX2FnZW50IiwiZ2V0JDAiLCJ0b19uYXZpZ2F0aW9uIiwidHJhbnNpdGlvbl90b195b2pzb24iLCJ0cmFuc2l0aW9uX29mX3lvanNvbiIsImRzdCIsInNvcnRzIiwic2lnX2RlY2wiLCJsJDIiLCJzJDEiLCJsJDMiLCJuZXdfb2JzX21hcCIsImdldF9lbGVtZW50YXJ5IiwiZG9tYWluIiwibm9kZSIsImFycm93Iiwic2EiLCJ0YWlsIiwiaW5qIiwicHJpbnQkMSIsImVtYmVkZGluZ3NfdG9fZnVsbHlfc3BlY2lmaWVkIiwiYV9pZCIsImZyZXNoIiwiaWRfYnlfdHlwZSIsIm5iX2lkIiwiaW5zZXJ0X25hdmlnYXRpb24iLCJkc3RfaWQiLCJjY19kIiwiaW5qMmRzdCIsImluajJkc3QkMCIsInBfaWQkMCIsInBvaW50IiwidCQzIiwibmF2JDAiLCJzaSIsInNpJDAiLCJ0JDEiLCJzaSQxIiwiYWckMSIsIm4kMyIsInNpbCIsImFnbCIsImluaiQwIiwidCQyIiwibiQ0Iiwic3VwIiwiaW5qX2Uyc3VwIiwiaW5qX3N1cDJkc3QiLCJpbmpfZF90b19vIiwiY2NfbyIsImludGVyIiwiZGlzYyIsIm5vZGVzZCIsImRpc2MkMCIsIm5vZGVzbyQxIiwiZHMiLCJkbCIsIm9zIiwib2wiLCJsaSIsImRpcyIsImludCQxIiwiaW50ZXJuJDEiLCJhbGxfbGlua3MiLCJkaXNjb3ZlcmVkJDIiLCJkaXNjb3ZlcmVkIiwibmV4dF9yb3VuZCIsInJlY29nbiIsImludGVybiIsImludGVybiQwIiwicmVjb2duJDAiLCJyZWNvZ24kMSIsIm5hdiIsImlual9wXzJkc3QiLCJwX2lkJDEiLCJpbmoyZHN0JDEiLCJhZGRfY2MiLCJ0b3BsZXZlbCIsIm9yaWdpbiIsImVsZW1lbnQiLCJ3IiwiaGFzaCIsInJ0eSQwIiwicmlkJDAiLCJyb290cyQwIiwicnR5IiwicmlkIiwiZW52X3ciLCJvdXRfaWQiLCJlbnZfd19oIiwib2ZfZW52IiwiYWNjX3ciLCJkZWJ1Z19wcmludCIsImNoZWNrX2RhbmdsaW5nIiwid2siLCJiZWdpbl9uZXciLCJmcmVzaF9jY19pZCIsInJhd19maW5pc2hfbmV3IiwiY2NfY2FuZGlkYXRlIiwicHJlZW52IiwiZmluaXNoX25ldyIsIm5ld19saW5rIiwieF9uIiwieV9uIiwic3R5Iiwic3R4IiwibmV3X2ZyZWUiLCJuZXdfaW50ZXJuYWxfc3RhdGUiLCJ2YSIsIm5ld19ub2RlIiwidHlwZV9pZCIsImFyaXR5Iiwibm9kZSQwIiwiZm9sZF9ieV90eXBlIiwiYWdlbnRfdHlwZSIsImxpc3RfcG9zIiwiZm9sZCIsImZpbmFsaXplIiwic2hhcmluZyIsImVudiQwIiwidyQwIiwidyQxIiwidyQyIiwidyQzIiwidyQ0IiwidyQ1IiwiZG9tYWluJDEiLCJsZXZlbCQ0IiwiYWNjJDMiLCJsZXZlbCQxIiwiZG9tYWluJDAiLCJsaXN0IiwiYWNjJDIiLCJ0aGlzJDAiLCJsZXZlbCIsInRoaXMkMSIsInJlbmFtaW5nIiwiYWNjbiIsIm5vZGVzMSIsIm5vZGVzMiIsImkyIiwibDIiLCJpMSIsImwxIiwiaW1hZ2UiLCJuZXdzIiwibWlkIiwiaWQkMCIsImlkJDEiLCJsZXZlbCQyIiwibGV2ZWwkMyIsImNvbXBsZXRlX2RvbWFpbiIsImRvbWFpbiQyIiwic2luZ2xlcyIsInNpZ3MkMSIsImVsZW1lbnRhcmllcyIsInN0ZXAiLCJhcnIiLCJ0eTEiLCJzYTEiLCJzMiQwIiwidHkyIiwic2EyIiwiZG9tYWluX2xldmVsIiwiYWNjX2xldmVsIiwibGwiLCJhY2NsIiwiaW5qcyIsImlual9lX3giLCJzdGF0X25hdl9zdGVwcyIsImxldmVsMCIsInNpbmdsZV9hZ2VudF9wb2ludHMiLCJtZXJnZV9vbl9pbmYiLCJnMSIsImcyIiwibV9saXN0IiwicGFpcmluZyIsIm0kMCIsInB1c2hvdXQiLCJsZW5ndGgiLCJjbyIsImNvJDAiLCJubSIsImNjaWQiLCJyZWNvbnN0cnVjdF9yZW5hbWluZyIsImdyYXBoIiwicmlkcyIsImluamVjdGl2ZSIsInJlY29uc3RydWN0IiwiaXNfcm9vdF9vZiIsInJvb3QkMCIsInJvb3RzX29mIiwiZ2V0IiwiZWxlbWVudHNfd2l0aF90eXBlcyIsImNjcyIsIm1hcCIsImNvbXBhcmUiLCJlbXB0eV9jYWNoZSIsImZyb21fZWRnZSIsInNpdGUiLCJjYWNoZSIsImNhY2hlJDAiLCJyZXZfZGVwcyIsIm9icyIsInJlbWFpbnMiLCJpbmpfcG9pbnQyZ3JhcGgiLCJwaWQiLCJpbmpfcG9pbnQyZ3JhcGgkMCIsInBpZCQwIiwic29uIiwiY2EiLCJjYSQwIiwibmV4dCIsImNhY2hlJDEiLCJyZW1haW5zJDAiLCJvYnNlcnZhYmxlc19mcm9tX2FnZW50IiwicmRlcHMiLCJvYnNlcnZhYmxlc19mcm9tX2ZyZWUiLCJvYnNlcnZhYmxlc19mcm9tX2ludGVybmFsIiwib2JzZXJ2YWJsZXNfZnJvbV9saW5rIiwic2l0ZSQwIiwicHJpbnRfc2l0ZSIsInBsYWNlIiwicHJpbnRfaW50ZXJuYWwiLCJnZXRfdHlwZSIsImdldF9pZCIsImlzX2ZyZXNoIiwiY29uY3JldGl6ZSIsImlual9mcmVzaCIsImlual9ub2RlcyIsImVtcHR5X2V2ZW50IiwianNvbl9kaWN0aW9ubmFyeSIsImFjdGlvbiIsIndlaWdodF9yZXZlcnNlIiwic29ydF9jb25jcmV0ZV9hY3Rpb25fbGlzdCIsInNvcnRfY29uY3JldGVfYWN0aW9uX2xpc3RfcmV2ZSIsInNvcnRfYWJzdHJhY3RfYWN0aW9uX2xpc3QiLCJzb3J0X2Fic3RyYWN0X2FjdGlvbl9saXN0X3JldmUiLCJjb25jcmV0aXplX3Rlc3QiLCJpbmoyZ3JhcGgiLCJwbCIsInBsJDAiLCJwbCQxIiwicGwkMiIsInMkMiIsInBsJDMiLCJzJDMiLCJwbCQ0IiwicyQ0IiwicGwkNSIsImNvbmNyZXRpemVfYWN0aW9uIiwicGwkNiIsInRyeV9jb25jcmV0aXplX2FjdGlvbiIsImFjdGlvbnMiLCJjb25jcmV0aXplX2V2ZW50IiwiYnQiLCJtYXBfdGVzdCIsIm1hcF9hY3Rpb24iLCJtYXRjaF90ZXN0cyIsImIkMyIsImMkMCIsIm1hdGNoX2FjdGlvbnMiLCJibHMiLCJhbHMiLCJvayIsImdldF9pZHMiLCJtYXRjaF9xdWFya3MiLCJhX3F1YXJrcyIsImNfcXVhcmtzIiwiZm1hdGNoIiwiYV9xdWFya3MkMCIsImNfcXVhcmtzJDAiLCJhX3F1YXJrcyQxIiwiYXEiLCJhcSQwIiwiY3EiLCJjX3F1YXJrcyQxIiwiY3FzIiwibWF0Y2hpbmdfYWJzdHJhY3RfY29uY3JldGUiLCJhZSIsImNlIiwiYWVfdGVzdHMiLCJjZV90ZXN0cyIsImFic3RyYWN0X2lkcyIsImNvbmNyZXRlX2lkcyIsInBhcnRpdGlvbiIsImZtYXAiLCJtYXRjaGluZyIsInRlc3RzIiwiY2FjdGlvbnMkMCIsInRsIiwiY2lkIiwiY2lkJDAiLCJ0ZXN0IiwiY3Rlc3RzIiwiY2lkJDEiLCJhY3QiLCJjYWN0aW9ucyIsInN1YnN0X21hcF9jb25jcmV0ZV9hZ2VudCIsIm5hIiwiYWdlbnQkMCIsInN1YnN0X21hcF9zaXRlIiwic3Vic3RfbWFwX2FnZW50X2luX3Rlc3QiLCJpbnRlcm5hbF9zdGF0ZSIsInNpdGUkMSIsInNpdGUkMiIsInNpdGUkMyIsInNpdGUkNCIsImJpbmRpbmdfdHlwZSIsInNpdGUkNSIsInNpdGUkNiIsInNpdGUyIiwic2l0ZTEiLCJzaXRlMSQwIiwic2l0ZTIkMCIsInN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV90ZSIsInN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3Rlc3QiLCJyZW5hbWVfYWJzdHJhY3RfdGVzdCIsInN1YnN0X21hcDJfYWdlbnRfaW5fYWN0aW9uIiwiZiQwIiwiczEkMCIsInMyJDEiLCJzMSQxIiwiczEkMiIsInMyJDIiLCJhZ2VudCQxIiwiYWdlbnQkMiIsInN1YnN0X21hcF9hZ2VudF9pbl9hY3Rpb24iLCJzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfYWMiLCJzdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24iLCJyZW5hbWVfYWJzdHJhY3RfYWN0aW9uIiwic3Vic3RfbWFwX2FnZW50X2luX3NpZGVfZWZmZWN0IiwiYnN0YXRlIiwiYnN0YXRlJDAiLCJzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfc2kiLCJzdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV9zaWRlX2UiLCJyZW5hbWVfYWJzdHJhY3Rfc2lkZV9lZmZlY3QiLCJzdWJzdF9tYXBfYWdlbnRfaW5fZXZlbnQiLCJzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfZXYiLCJzdWJzdF9tYXAyX2FnZW50X2luX2NvbmNyZXRlX2UiLCJmJDEiLCJmJDIiLCJzdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV9ldmVudCIsInJlbmFtZV9hYnN0cmFjdF9ldmVudCIsInByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUiLCJwcmludF9jb25jcmV0ZV90ZXN0IiwicHJpbnRfY29uY3JldGVfYWN0aW9uIiwicHJpbnRfY29uY3JldGVfYmluZGluZ19zdGF0ZSIsImFnX2lkIiwic2lncyQyIiwic2lncyQzIiwid3JpdGVfYmluZGluZ190eXBlIiwicmVhZF9iaW5kaW5nX3R5cGUiLCJiaW5kaW5nX3R5cGVfdG9fanNvbiIsIndyaXRlX3F1YXJrIiwicmVhZF9xdWFyayIsInF1YXJrX3RvX2pzb24iLCJxdWFya19vZl9qc29uIiwid3JpdGVfdGVzdCIsInJlYWRfdGVzdCIsImJpIiwidGVzdF90b19qc29uIiwidGVzdF9vZl9qc29uIiwid3JpdGVfYWN0aW9uIiwiaW5mbyIsInJlYWRfYWN0aW9uIiwiYWN0aW9uX3RvX2pzb24iLCJhY3Rpb25fb2ZfanNvbiIsIndyaXRlX2V2ZW50IiwiYmYiLCJyZWFkX2V2ZW50Iiwic2lkZV9lZmZlY3RzX3NyYyIsInNpZGVfZWZmZWN0c19kc3QiLCJjb25uZWN0aXZpdHlfdGVzdHMiLCJldmVudF90b19qc29uIiwiY2N0IiwiZXZlbnRfb2ZfanNvbiIsImNfdCIsInNfZV9kc3QiLCJzX2Vfc3JjIiwiY2NsIiwicDIiLCJwMSIsInAxJDAiLCJwMiQwIiwicCQ0IiwicCQ1IiwicCQ2IiwicCQ3IiwicCQ4IiwibiQ1IiwibWFwX2ZvbGRfYWdlbnQiLCJhY2MkNCIsImFjYyQ1IiwiYSQ3IiwiYWNjJDYiLCJhJDgiLCJtYXBfYWdlbnQiLCJmb2xkX2FnZW50IiwicyQ1IiwicyQ2IiwiYSQ5IiwiZ2V0X25lZ2F0aXZlX3BhcnQiLCJjcmVhdGVkX2FnZW50cyIsImxua19kc3QiLCJhZ2VudHNfY3JlYXRlZF9ieV9hY3Rpb24iLCJuZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbnNfb2ZfYWMiLCJwb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbnNfb2ZfYWMiLCJzaWRlX2VmZmVjdF9kc3RzIiwicmVtIiwicmV2IiwiZXh0cmFjdF9jY19pZHMiLCJleHRyYWN0X2Fic3RyYWN0X2V2ZW50IiwiYWxnX2V4cHJfdG9feW9qc29uIiwiYWxnX2V4cHJfb2ZfeW9qc29uIiwicnVsZV90b195b2pzb24iLCJydWxlX29mX3lvanNvbiIsImZ1bGx5X3NwZWNpZmllZF9wYXR0ZXJuX3RvX3BvcyIsImciLCJlbWIiLCJnJDAiLCJlbWIkMCIsInRyIiwicHJpbnRfZXhwcl90b195b2pzb24iLCJmX3ZhciIsInByaW50X2V4cHJfb2ZfeW9qc29uIiwibWFwX2V4cHJfcHJpbnQiLCJmb2xkX2V4cHJfcHJpbnQiLCJkaW5fa2luZF90b195b2pzb24iLCJkaW5fa2luZF9vZl95b2pzb24iLCJ3cml0ZV9kaW5fa2luZCIsInN0cmluZ19vZl9kaW5fa2luZCIsImxlbiIsInJlYWRfZGluX2tpbmQiLCJkaW5fa2luZF9vZl9zdHJpbmciLCJwcmludF90X2V4cHJfdG9feW9qc29uIiwicHJpbnRfdF9leHByX29mX3lvanNvbiIsIm1vZGlmaWNhdGlvbl90b195b2pzb24iLCJyYXciLCJuYW1lIiwiaWRzJDAiLCJuYW1lJDAiLCJmJDMiLCJ0ZXN0cyQwIiwiaWRzJDEiLCJmJDQiLCJmJDUiLCJtb2RpZmljYXRpb25fb2ZfeW9qc29uIiwicmF3JDAiLCJib29sX2V4cHJfdG9feW9qc29uIiwiYm9vbF9leHByX29mX3lvanNvbiIsInBlcnR1cmJhdGlvbl90b195b2pzb24iLCJwZXJ0dXJiYXRpb25fb2ZfeW9qc29uIiwiZXhpc3RzX21vZGlmaWNhdGlvbiIsImNoZWNrIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19lIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19wIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19tIiwiZSQwIiwiZm4iLCJleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX20kMCIsIm1hcF9leHByX3J1bGUiLCJmb2xkX2V4cHJfcnVsZSIsIm1hcF9leHByX3BlcnR1cmJhdGlvbiIsImZfYWxnIiwiZl9ib29sIiwiZm9sZF9leHByX3BlcnR1cmJhdGlvbiIsInByaW50X2xpbmsiLCJwcl9wb3J0IiwicHJfdHlwZSIsInByX2Fubm90IiwibGlua190b19qc29uIiwicG9ydF90b19qc29uIiwidHlwZV90b19qc29uIiwiYW5ub3RfdG9fanNvbiIsImxpbmtfb2ZfanNvbiIsInBvcnRfb2ZfanNvbiIsInR5cGVfb2ZfanNvbiIsImFubm90ZWRfb2ZfanNvbiIsInByaW50X2xpbmtfYW5ub3QiLCJsdHlwZXMiLCJydWxlX2ludGVybmFsX29mX2pzb24iLCJwcmludF9jb3VudGVyX3Rlc3QiLCJwcmludF9ydWxlX21peHR1cmUiLCJjcmVhdGVkX2NvdW50ZXJzIiwic2hvd19lcmFzZWQiLCJzaG93X2VyYXNlZCQwIiwiY291bnRlcnMiLCJzd2l0Y2gkMCIsImlzX2NvdW50ZXIkMCIsImVxIiwiZGVsdGEiLCJwcmludF9yYXRlcyIsIm1heF9kaXN0IiwicmEiLCJtZCIsInByaW50X3J1bGUiLCJuYiIsImx0eXBlcyQwIiwicnVsZV9taXh0dXJlX3RvX2pzb24iLCJydWxlX21peHR1cmVfb2ZfanNvbiIsImxhbGdfZXhwcl90b19qc29uIiwibGFsZ19leHByX29mX2pzb24iLCJydWxlX3RvX2pzb24iLCJydWxlX29mX2pzb24iLCJyYWlzZV9pZl9tb2RpZmljYXRpb24iLCJyYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyIsInJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIiwic3RhdHVzIiwic2lkZSIsImFnZW50X25hbWUiLCJyYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXQiLCJyYWlzZV9jb3VudGVyX21pc3VzZWQiLCJyYWlzZV9saW5rX29ubHlfb25lX29jY3VyZW5jZSIsInJhaXNlX2xpbmtfc2hvdWxkX2JlX3JlbW92ZWQiLCJjb3B5X3J1bGVfYWdlbnQiLCJhZ2VudF90b19lcmFzZWQiLCJyYV9wb3J0cyIsInJhX2ludHMiLCJ0b19lcmFzZWQiLCJ0b19tYWludGFpbmVkIiwidG9fcmF3X21peHR1cmUiLCJpbnRlcm5hbHMiLCJwb3J0X25hbWUiLCJtYXhfbGlua19pZCIsIm1heF9zIiwibWF4X2xpbmtfaWRfc2l0ZXMiLCJtYXhfaWQiLCJsaW5rX29jY3VyZW5jZV9mYWlsdXJlIiwia2V5IiwicG9ydHNfZnJvbV9jb250YWN0X21hcCIsInR5X2lkIiwiYWRkX29uZV9pbXBsaWNpdF9pbmZvIiwibGluayIsInByZXZzIiwicF9zd2l0Y2giLCJkc3RfaW5mbyIsImFnX3RhaWwiLCJvdXRfdGFpbCIsInBvcnQiLCJwb3J0cyQwIiwic3ciLCJ0b2RvJDAiLCJwb3J0cyQxIiwiaXNfbGlua2VkX29uX3BvcnQiLCJtZSIsImlzX2xpbmtlZF9vbiIsImRlZmluZV9mdWxsX3RyYW5zZm9ybWF0aW9uIiwidHJhbnNmIiwibGlua3NfdHJhbnNmIiwiY2FuZCIsImFkZGVkIiwicmVtb3ZlZCIsImxpbmtzX3RyYW5zZiQwIiwibGlua3NfdHJhbnNmJDEiLCJkZWZpbmVfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb24iLCJhZGRfaW5zdGFudGlhdGlvbl9mcmVlIiwiYWRkX3NpZGVfc2l0ZSIsInNpZGVfc2l0ZXMiLCJhZGRfZnJlZWRfc2lkZV9lZmZlY3QiLCJzaWRlX2VmZmVjdHMiLCJhZGRfYWdlbnRzX2luX2NjIiwicmVnaXN0ZXJlZF9saW5rcyIsImluc3RhbnRpYXRpb25zIiwiYWdfbCIsIndrJDAiLCJ0cmFuc2YkMCIsImhhbmRsZV9wb3J0cyIsInJfbCIsImNfbCIsImxfdCIsInNpdGVfaWQkNCIsInJfbCQwIiwibGlua3MkMiIsImxfdCQwIiwic2l0ZV9pZCQ1IiwiaXNfZXJhc2VkIiwicmVmX3BvcnRzIiwib19jY190ZXN0cyIsInRoaXNfY2NfdGVzdHMiLCJzaWRlX2VmZmVjdHNfZHN0JDEiLCJzaWRlX2VmZmVjdHNfc3JjJDEiLCJhY3Rpb25zJDMiLCJ0ZXN0cyQyIiwic2l0ZV9pZCQyIiwiaW5zdGFudGlhdGlvbnMkMCIsImFjdGlvbnMkMCIsImxpbmtzJDAiLCJzaWRlX2VmZmVjdHNfZHN0JDAiLCJzaWRlX2VmZmVjdHNfc3JjJDAiLCJhY3Rpb25zJDIiLCJ0ZXN0cyQxIiwic2lkZV9lZmZlY3RzJDEiLCJhY3Rpb25zJDEiLCJzaXRlX2lkJDMiLCJzaWRlX2VmZmVjdHMkMiIsInNpdGVfaWQkMSIsInNpdGVfaWQiLCJzaXRlX2lkJDAiLCJzaWRlX2VmZmVjdHMkMCIsIndrJDEiLCJqJDEiLCJqJDIiLCJpJDMiLCJpJDQiLCJ3ayQ2IiwidHJhbnNmJDciLCJ3ayQyIiwibF90JDIiLCJ0cmFuc2YkMSIsInNpdGVfaWQkNyIsImxfdCQxIiwic2l0ZV9pZCQ2IiwiaSQyIiwiZHN0X3BsYWNlIiwid2skMyIsImNfbCQwIiwibF90JDMiLCJ0cmFuc2YkMiIsInNpdGVfaWQkOCIsInJfbCQxIiwicl9sJDIiLCJsX3QkNyIsInRyYW5zZiQ2IiwicmUkMiIsInNpdGVfaWQkMTIiLCJzaXRlX2lkJDExIiwic2l0ZV9pZCQ5IiwibF90JDUiLCJ0cmFuc2YkNCIsIndrJDQiLCJsX3QkNiIsInRyYW5zZiQ1IiwiY19sJDEiLCJzaXRlX2lkJDEwIiwiaW5jcl9vcmlnaW4iLCJjb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW0iLCJjb21waWxlX21vZGVfb24iLCJwcmVjb21wX21peHMiLCJuZXdfc3dpdGNoIiwiYXV4X29uZSQwIiwicHJldmlvdXMiLCJjdXJyZW50IiwiY3VycmVudCQwIiwiYXV4X2FncyQwIiwiaSQ1Iiwib3JfdHkiLCJwcmV2IiwiYXV4X29uZSIsImkkNiIsIm9yX3R5JDAiLCJpJDciLCJ0b2RvcyQxIiwiYXV4X2FncyIsImFsbF9taXhzIiwidHJhbnNmb3JtYXRpb25zJDAiLCJldmVudCIsImFkZGVkJDUiLCJ3a19vdXQiLCJlbnYkMSIsImFkZGVkJDYiLCJyZW1vdmVkJDAiLCJpbnN0YW50aWF0aW9ucyQxIiwibGlua3NfdHJhbnNmJDIiLCJhZGRlZCQ3IiwicmVtb3ZlZCQxIiwiYWNzIiwiYXkiLCJheCIsImFjdGlvbnMkNCIsInJlbW92ZWQkMiIsInRyYW5zZm9ybWF0aW9ucyQyIiwiY3JlYXRlX2FjdGlvbnMiLCJhZGRlZCQ0IiwiYWRkZWQkMCIsImFkZGVkJDEiLCJwb2ludCQwIiwiYWRkZWQkMiIsImFkZGVkJDMiLCJpbnRmJDAiLCJjcmVhdGVfYWN0aW9ucyQwIiwidHJhbnNmb3JtYXRpb25zJDMiLCJhY3Rpb25zJDUiLCJjb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW0kMCIsImNjX2VudiIsInJ1bGVzIiwibGthcHBhX29mX2VsZW1lbnRhcnlfcnVsZSIsIm5iX2NjIiwibWl4cyIsImxua19wYWNrIiwia25vd25fc3JjIiwiZHN0X3MiLCJzcmNfaW5mbyIsImxua19wYWNrJDAiLCJ0cmFuc2ZzIiwiZnIiLCJmaWQiLCJhX3R5cGUiLCJlZGl0IiwiY2NfaWQxIiwiY2NfaWQyIiwiZWRpdCQwIiwidGVzdCQwIiwiZWRpdCQxIiwidGVzdCQxIiwiZWlkIiwiZWRpdCQyIiwidGVzdCQyIiwiaWQkMyIsImNjX2lkJDEiLCJpZCQyIiwidHJhbnNmcyQwIiwicl9taXgiLCJyX2NyZWF0ZWQiLCJwYXR0ZXJuc19vZl9taXh0dXJlIiwicHJlX2VudiIsInNuYXAiLCJjY19jYWNoZSIsInJhX3R5cGUiLCJhciIsImRhbmdsaW5nIiwiZGFuZ2xpbmckMCIsImRhbmdsaW5nJDEiLCJjY19jYWNoZSQwIiwicHJlX2VudiQwIiwiaW5pdCIsInRva2VucyIsImFsZ3MiLCJvYnNlcnZhYmxlcyIsImludGVydmVudGlvbnMiLCJhc3RfcnVsZXMiLCJhbGdfcmQiLCJ0b2tfcmQiLCJkZXBzX2luX2UiLCJkZXBzX2luX3QiLCJkZWNvbnN0cnVjdCIsImdldF9vYnMiLCJnZXRfcnVsZXMiLCJuZXdfZG9tYWluIiwidG9rZW5zX2ZpbmRlciIsImFsZ3NfZmluZGVyIiwibnVtX29mX2FnZW50Iiwibm1lIiwiZm9sZF9ydWxlcyIsInJ1bGUiLCJmb2xkX3BlcnR1cmJhdGlvbnMiLCJnZXRfcnVsZSIsImdldF9hc3RfcnVsZV93aXRoX2xhYmVsIiwiZ2V0X2FzdF9ydWxlIiwiZm9sZF9hc3RfcnVsZXMiLCJsa2FwcGFfcnVsZSIsImdldF9hc3RfcnVsZV9yYXRlX3BvcyIsInVuYXJ5IiwibmJfcnVsZXMiLCJudW1zX29mX3J1bGUiLCJuYl9zeW50YWN0aWNfcnVsZXMiLCJudW1fb2ZfYWxnIiwiZ2V0X2FsZyIsImdldF9hbGdzIiwibmJfYWxncyIsIm51bV9vZl90b2tlbiIsInN0ciIsIm5iX3Rva2VucyIsImdldF9wZXJ0dXJiYXRpb24iLCJuYl9wZXJ0dXJiYXRpb25zIiwiZ2V0X2FsZ19yZXZlcnNlX2RlcGVuZGVuY2llcyIsImdldF90b2tlbl9yZXZlcnNlX2RlcGVuZGVuY2llcyIsImFsbF9kZXBlbmRlbmNpZXMiLCJwcmludF9hZ2VudCIsInByaW50X2FsZyIsInNwZWNpYWwiLCJwcmludF90b2tlbiIsInByaW50X2FzdF9ydWxlIiwibWFwX29ic2VydmFibGVzIiwicHJfYWxnIiwicHJfcnVsZSIsInByX3BlcnQiLCJwcl9ydWxlJDAiLCJjaGVja19pZl9jb3VudGVyX2lzX2ZpbGxlZF9lbm8iLCJvdmVyd3JpdGVfdmFycyIsImFsZ19vdmVyd3JpdGUiLCJmb2xkX21peHR1cmVfaW5fZXhwciIsIngxIiwieDIiLCJ4MyIsImthcHBhX2luc3RhbmNlX3RvX3lvanNvbiIsImZpbGVzIiwia2FwcGFfaW5zdGFuY2Vfb2ZfeW9qc29uIiwidW5hcnlfcGF0dGVybnMiLCJjY19taXgiLCJhbGdfZXhwciIsImJvb2xfZXhwciIsInByaW50X2V4cHIiLCJhbGciLCJwcmludF9leHByX3ZhbCIsImFsZ192YWwiLCJkZWNvbXBpbGVkX3J1bGUiLCJkaXN0IiwicmF0ZSIsImVsZW1lbnRhcnlfcnVsZSIsInByX3RyYW5zIiwiYm94ZWRfY2MiLCJtb2RpZmljYXRpb24iLCJmbiQwIiwiZm4kMSIsImZuJDIiLCJ2YSQwIiwiY2MkMSIsImZuJDMiLCJmbiQ0IiwicGVydHVyYmF0aW9uIiwicGVydCIsImF1eF9hbGFybSIsImVudl9rYXBwYSIsImRlY29tcGlsZWRfZW52IiwicGFyc2UiLCJyZXN1bHQiLCJnZXRfdmFsdWUiLCJwb3NfcCIsInBhcmFtIiwidmFsdWVfbGlzdCIsInBhcmFtJDAiLCJjZmxvd0ZpbGUiLCJmb3JtYXRDZmxvdyIsInN0b3J5X2NvbXByZXNzaW9uIiwiY29uZiIsInNwIiwidXAiLCJmb3JtYXRDZmxvdyQwIiwidmFsdWUiLCJwb3NfdiIsImVycm9yIiwidGwkMCIsInRsJDEiLCJkaXZpZGVfZXhwcl9ieV9pbnQiLCJvcHQkMCIsInJvb3Rfb25seSIsImxvYyIsImIkMjAiLCJhJDEzIiwicm9vdF9vbmx5JDAiLCJiJDciLCJiJDYiLCJsb2NfY3N0JDAiLCJsb2NfY3N0JDEiLCJjJDEiLCJjJDIiLCJiJDQiLCJsb2NfY3N0JDIiLCJiJDUiLCJsb2NfY3N0IiwiZXhwciQzIiwib3B0JDMiLCJleHByJDIiLCJvcHQkMiIsImV4cHIkMSIsIm9wdCQxIiwiYiQ5IiwiYiQ4IiwibG9jZGl2IiwiYyQ1IiwiYiQxMyIsImV4cHIkNiIsIm9wdCQ2IiwiYiQxNCIsImIkMTAiLCJjJDQiLCJsb2NfYmluJDAiLCJiJDExIiwiZXhwciQ1Iiwib3B0JDUiLCJjJDMiLCJsb2NfYmluIiwiZXhwciQ0Iiwib3B0JDQiLCJhJDEwIiwiYiQxMiIsImIkMTYiLCJhJDExIiwiYiQxNSIsImIkMTgiLCJhJDEyIiwiYiQxNyIsImIkMTkiLCJsb2MkMCIsImEkMTQiLCJhJDE1IiwiYSQxOCIsImEkMTYiLCJhJDE3IiwibG9jJDEiLCJubyQwIiwieWVzJDAiLCJzaW1wbGlmeV9ib29sIiwibG9jJDIiLCJleHByJDciLCJleHByJDgiLCJsb2MkMyIsImV4cHIkOSIsImV4cHIkMTAiLCJleHByX2Jvb2wiLCJzaW1wbGlmeSIsImNsZWFuIiwiY2xlYW5fYm9vbCIsImR0IiwiZHQkMCIsImNzdCIsImNvcnJlY3RlZF9yYXRlIiwiY29ycmVjdGVkX3JhdGUxIiwiY29ycmVjdGVkX3JhdGUyIiwiZSQxIiwiY3N0JDAiLCJjb3JyZWN0ZWRfcmF0ZSQwIiwiY3N0JDEiLCJnZXRfY29ycmVjdGVkX3JhdGUkMCIsImNvcnJlY3RlZF9yYXRlX2NvbnN0IiwibmVjZXNzYXJpbHlfZXF1YWwiLCJhX29wdCIsImJfb3B0IiwiZGVwIiwiYWRkX21peHR1cmUiLCJhZGRfdG9rZW4iLCJkZXBfZW52IiwidGltZV92YXIiLCJhY2N1IiwiYWNjdSQwIiwiYWNjdSQxIiwiZGlmZl9nZW4iLCJmX3Rva2VuIiwiZl9zeW1iIiwiZl90aW1lIiwiZTIkMCIsImRpZmZfdG9rZW4iLCJkaWZmX21peHR1cmUiLCJmb2xkX292ZXJfbWl4X2luX2FsZ19leHByIiwiYXJyYXlfaWQiLCJmb2xkX292ZXJfbWl4dHVyZXNfaW5fYWxnX2V4cHIiLCJtb2RlbCIsImFsZ3NfZXhwciIsInVuYXJ5X3JhdGUiLCJkZWx0YV90b2tlbnMiLCJhY2N1JDIiLCJqc29uX2RpY3Rpb25uYXJ5IiwianNvbl9kaWN0aW9ubmFyeSQwIiwidXBkYXRlX3Byb2ZpbGluZ19pbmZvIiwiYSIsImluZm8iLCJldmVudCIsInN0b3J5X2lkIiwiY29tcGFyZV9ieV9zdG9yeV9pZCIsIngiLCJ5IiwidG9fanNvbiIsImYiLCJvZl9qc29uIiwic3RvcnlfZXZlbnQiLCJzdG9yeV90aW1lIiwid3JpdGVfanNvbiIsIm9iIiwibyIsInJlYWRfanNvbiIsInN0IiwiYiIsInByb2ZpbGluZ19pbmZvIiwicHJpbnRfZXZlbnRfa2luZCIsImVudiIsImkiLCJsIiwicyQxIiwiZW52JDAiLCJyX2lkIiwicyIsInMkMCIsInByaW50X2V2ZW50X2tpbmRfZG90X2Fubm90Iiwic3Vic19zdGVwIiwiZHVtbXlfc3RlcCIsInByaW50X2V2ZW50IiwiY29tcGFjdCIsImxvZyIsImUiLCJldl9raW5kIiwic2lncyIsInN0YXRlIiwic2l0ZSIsImFnIiwiYWdfaWQiLCJwcmludF9zdGVwIiwib3B0IiwiZW52JDEiLCJzdGgiLCJ5JDAiLCJ4JDAiLCJhY3Rpb25zIiwidGVzdHMiLCJzaWdzJDAiLCJnZXRfdHlwZXNfZnJvbV9pbml0IiwiYWNjIiwiYWN0aW9uIiwiYXR5cGUiLCJwcmludF9sYWJlbF9vZl9zdGVwIiwieCQzIiwieCQ0IiwiYSQwIiwibCQwIiwieCQ1IiwieCQxIiwieCQyIiwid3JpdGVfc3RlcCIsInoiLCJ6JDAiLCJ6JDEiLCJ5JDEiLCJyZWFkX3N0ZXAiLCJiJDAiLCJzdGVwX3RvX3lvanNvbiIsInJldl9hY3Rpb25zIiwid3JpdGVfanNvbiQwIiwicmVhZF9qc29uJDAiLCJzdHJpbmdfb2Zfc3RlcCIsImxlbiIsInN0ZXBfb2Zfc3RyaW5nIiwic3RlcF9pc19vYnMiLCJzdGVwX2lzX2luaXQiLCJzdGVwX2lzX3N1YnMiLCJzdGVwX2lzX3J1bGUiLCJzdGVwX2lzX3BlcnQiLCJzaW11bGF0aW9uX2luZm9fb2Zfc3RlcCIsImNyZWF0aW9uX29mX2FjdGlvbnMiLCJvcCIsImNyZWF0aW9uX29mX3N0ZXAiLCJhYyIsImhhc19jcmVhdGlvbl9vZl9zdGVwIiwidGVzdHNfb2Zfc3RlcCIsImFjdGlvbnNfb2Zfc3RlcCIsInNpZGVfZWZmZWN0c19vZl9zdGVwIiwiaW5pdF90cmFjZV9maWxlIiwidXVpZCIsImRlc2MiLCJhc3NlcnRfZmllbGQiLCJpZGVudCIsInJlYWRfdHJhY2VfaGVhZGVycyIsImxleF9zdCIsImxleF9idWYiLCJ1dWlkJDAiLCJ1dWlkJDEiLCJpZGVudCQwIiwiZm9sZF90cmFjZSIsImluaXQiLCJvdXQiLCJmb2xkX3RyYWNlX2ZpbGUiLCJmbmFtZSIsImdldF9oZWFkZXJzX2Zyb21fZmlsZSIsInNpemUiLCJuYiIsInQiLCJ3cml0ZV90Iiwic3RyaW5nX29mX3QiLCJyZWFkX3QiLCJwIiwibGIiLCJ0X29mX3N0cmluZyIsImN1cnJlbnRfc3RvcnkiLCJjIiwiY3VycmVudF90aW1lIiwiY3VycmVudF9ldmVudCIsIm5iX251bGxfZXZlbnQiLCJjb25zZWN1dGl2ZV9udWxsX2V2ZW50IiwicnVsZV9pZCIsImNvbnNlY3V0aXZlX2Jsb2NrZWQiLCJpbmNfc3RvcmllcyIsImNoZWNrX3RpbWUiLCJtYXgiLCJjaGVja19ldmVudHMiLCJvbmVfdGltZV9hZHZhbmNlIiwiZHQiLCJvbmVfY29uc3RydWN0aXZlX2V2ZW50IiwidCQwIiwib25lX25vX21vcmVfYmluYXJ5X2V2ZW50Iiwib25lX25vX21vcmVfdW5hcnlfZXZlbnQiLCJvbmVfY2xhc2hpbmdfaW5zdGFuY2VfZXZlbnQiLCJvbmVfdGltZV9jb3JyZWN0aW9uX2V2ZW50IiwidGkiLCJ0aSQwIiwib25lX2Jsb2NrZWRfZXZlbnQiLCJnZXRfZWZmaWNpZW5jeSIsInByaW50X2VmZmljaWVuY3kiLCJhbGwiLCJpbml0X3RpbWUiLCJtYXhfdGltZSIsIm1heF9ldmVudHMiLCJwbG90X3BlcmlvZCIsInRpbWVfcmF0aW8iLCJ0bWF4IiwiZXZlbnRfcmF0aW8iLCJlbWF4Iiwic2V0X21heF90aW1lIiwic2V0X21heF9ldmVudHMiLCJ0cmFja2VkX2V2ZW50cyIsImNvdW50ZXIiLCJzZXRfcGxvdF9wZXJpb2QiLCJjcmVhdGUiLCJtYXhfZXZlbnQiLCJuYl9ydWxlcyIsImluaXRfdCIsInN0aCQwIiwiaW5pdF9lIiwicmVpbml0aWFsaXplIiwibmV4dF9zdGVwX3NpbXVsYXRpb25faW5mbyIsImN1cnJlbnRfc2ltdWxhdGlvbl9pbmZvIiwibmV4dF9zdG9yeSIsInBvc2l0aXZlX3Bsb3RfcGVyaW9kIiwiZmlsbCIsIm91dHB1dHMiLCJkRSIsIm5leHQiLCJkVCIsImxhc3QiLCJuIiwiZFQkMCIsInRpbWUiLCJjb3VudGVyJDAiLCJwb2ludHMiLCJmYWtlX3RpbWUiLCJhcnJvd2hlYWQiLCJjb2xvciIsInByaW50X2luaXRpYWxfaW5wdXRzIiwiY29uZiIsImlucHV0c19mb3JtIiwibm9Db3VudGVycyIsInIiLCJpbnNfZnJlc2giLCJ0ayIsInByaW50X3NuYXBzaG90IiwiZWwiLCJuYSIsIm1peCIsInByaW50X2RvdF9zbmFwc2hvdCIsIndyaXRlX3NuYXBzaG90IiwicmVhZF9zbmFwc2hvdCIsImtleSIsInNuYXBzaG90X3Rva2VucyIsInNuYXBzaG90X2FnZW50cyIsInNuYXBzaG90X3RpbWUiLCJzbmFwc2hvdF9ldmVudCIsInN0cmluZ19vZl9zbmFwc2hvdCIsInNuYXBzaG90X29mX3N0cmluZyIsIndyaXRlX2RpbiIsInJlYWRfZGluIiwiaCIsImsiLCJkaW5fZW5kIiwiZGluX3J1bGVzIiwiZGluX2ZsdXhzIiwiZGluX2hpdHMiLCJkaW5fc3RhcnQiLCJkaW5fa2luZCIsInN0cmluZ19vZl9kaW4iLCJkaW5fb2Zfc3RyaW5nIiwicHJpbnRfZG90X2RpbiIsImZsdXgiLCJkIiwidiIsImFycm93aGVhZCQwIiwiY29sb3IkMCIsInByaW50X2h0bWxfZGluIiwiYWRkX3Bsb3RfbGluZSIsIm5ld19vYnNlcnZhYmxlcyIsInBsb3QiLCJuYnIiLCJuZXdfdmFsdWVzIiwiaW5pdF9wbG90IiwicGxvdF9sZWdlbmQiLCJ3cml0ZV9wbG90IiwicmVhZF9wbG90IiwicGxvdF9zZXJpZXMiLCJzdHJpbmdfb2ZfcGxvdCIsInBsb3Rfb2Zfc3RyaW5nIiwicHJpbnRfcGxvdF9zZXAiLCJpc190c3YiLCJwcmludF9wbG90X2xlZ2VuZCIsInByaW50X3Bsb3RfbGluZSIsInBwIiwiZXhwb3J0X3Bsb3QiLCJwcmludF93YXJuaW5nIiwicG9zIiwibXNnIiwicHIiLCJwb3MkMCIsImNyZWF0ZV9mbHV4IiwiaW5jcl9mbHV4X2ZsdXgiLCJvZl9ydWxlIiwib25fcnVsZSIsImluY3JfZmx1eF9oaXQiLCJzdG9wX2ZsdXgiLCJkaW5fZGF0YSIsImoiLCJlbXB0eSIsImluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4iLCJwYXR0ZXJuIiwibWF0Y2hpbmdzIiwiYWRkX2ludHNldF9pbl9pbnRtYXAiLCJpZCIsInNldCIsIm1hcCIsImJyZWFrX2FwYXJ0X2NjIiwiZWRnZXMiLCJtb2RfY29ubmVjdGl2aXR5X3N0b3JlIiwibmV3X2NjIiwib3JpZ2luX2NjIiwibW9kX2Nvbm4iLCJjY19pZCIsImNjX21hcCIsIm9zZXQiLCJvc2V0JDAiLCJuc2V0IiwibWVyZ2VfY2MiLCJjYzIiLCJjYzEiLCJtb2RfY29ubmVjdGl2aXR5IiwiY2NfbWFwJDAiLCJzZXQyIiwic2V0MSIsInVwZGF0ZV9yb290cyIsImlzX2FkZCIsInVuYXJ5X2NjcyIsInJvb3QiLCJ2YSIsInNldCQwIiwibnVtYmVyIiwicGF0IiwiZGVidWdfcHJpbnQiLCJkb21haW4iLCJyb290c19vZl9wYXR0ZXJucyIsInJvb3RzIiwicm9vdHNfb2ZfcGF0dGVybnMkMCIsInJvb3RfbWFwcyIsIm9mX3BhdHRlcm4iLCJwYXRfaWQiLCJvZl91bmFyeV9wYXR0ZXJuIiwicmVjZWl2ZV9tZXNzYWdlIiwiY2NzIiwiaXNfdmFsaWQiLCJudW1iZXJfb2ZfaW5zdGFuY2VzIiwicGF0cyIsIm51bWJlcl9vZl91bmFyeV9pbnN0YW5jZXNfaW5fYyIsInBhdDIiLCJwYXQxIiwibWFwMSIsIm1hcDIiLCJjYyIsInBpY2tfdW5hcnlfaW5zdGFuY2VfaW5fY2MiLCJyYW5kb21fc3RhdGUiLCJyb290MSIsInJvb3QyIiwiZm9sZF9waWNrZWRfaW5zdGFuY2UiLCJhY2MkMiIsImFjYyQwIiwicm9vdF9vcHQiLCJhY2MkMSIsImkkMCIsIm5vX25vX25vIiwiZm9sZF9pbnN0YW5jZXMiLCJleGNwIiwic2VudF90b19maXhlZF9yb290IiwiZXhjcF9yb290Iiwic2VudF90b19leGNwX3Jvb3QiLCJ0YWIiLCJhdXgiLCJpdGhfcm9vdHMiLCJpJDEiLCJmb2xkX3VuYXJ5X2luc3RhbmNlcyIsImV4ZWNfYWxnJDAiLCJ0aW1lJDAiLCJnZXRfYWxnIiwiZ2V0X21peCIsImdldF90b2siLCJhbGciLCJzayIsImFsZyQwIiwic2skMCIsImFsZyQxIiwic2skMSIsImFsZyQyIiwib3AkMCIsInNrJDIiLCJ3aXRoX3ZhbHVlIiwiYWxnJDMiLCJuJDAiLCJubyIsInllcyIsImNvbmQiLCJleGVjX2Jvb2wkMCIsImV4ZWNfYWxnIiwiZXhwciIsImV4cHIkMCIsImV4cHIkMSIsImV4cHIkMiIsIm9wJDEiLCJleGVjX2Jvb2wiLCJ5ZXMkMCIsInNrJDQiLCJzayQzIiwic2skNSIsIm4xIiwic2skNiIsIm4xJDAiLCJvcCQyIiwic2skNyIsIm9wJDMiLCJzayQ4IiwidmFsdWVfYm9vbCIsInZhbHVlX2FsZyIsImdldF9lZGdlcyIsInN1bV9pbnN0YW5jZXNfbnVtYmVycyIsImluc3RzIiwicGF0dGVybnMiLCJyZWNvbXB1dGUiLCJvdmVyd3IiLCJhY3Rpdml0eSIsInNldF9hY3Rpdml0eSIsInJ1bGUiLCJ3aXRoX3RyYWNlIiwiYWN0aXZpdHlfdHJlZSIsInVuYXJ5X3BhdHRlcm5zIiwiZGVwc19pbl9lIiwiZGVwc19pbl90IiwiYWx3YXlzX291dGRhdGVkIiwid2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyIsInZhcmlhYmxlc19vdmVyd3JpdGUiLCJ2YXJpYWJsZXNfY2FjaGUiLCJyYXRlIiwiaXNfYmxvY2tlZCIsImRlYnVnX21vZGUiLCJtYXRjaGluZyIsInRvX2Jsb2NrIiwiYWJzdHJhY3RfYWN0aW9ucyIsImluaiIsImFic3RyYWN0X3Rlc3RzIiwiaW5qJDAiLCJzZXRfZXZlbnRzX3RvX2Jsb2NrIiwicHJlZGljYXRlIiwiYWxsX2luamVjdGlvbnMiLCJ1bmFyeV9yYXRlIiwic3RhdGVfaW5zdHMiLCJwYXR0ZXJuYSIsImluc3RhbmNlIiwibWF0Y2hpbmckMCIsInJldl9yb290cyIsIm1heF9kaXN0YW5jZSIsIm5vZGVzIiwicjIiLCJyMSIsInBpY2tfYV9ydWxlX2luc3RhbmNlIiwiZnJvbV9wYXR0ZXJucyIsInByaW50Iiwic3RhdHMiLCJwcmludF9zdGF0cyIsImFwcGx5X25lZ2F0aXZlX3RyYW5zZm9ybWF0aW9uIiwiaW5zdGFuY2VzIiwic2lkZV9lZmZlY3RzIiwiZWRnZXMkMCIsImlkJDAiLCJlZGdlcyQxIiwiaWQkMSIsImlkJDIiLCJjY19tb2RpZiIsImVkZ2VzJDIiLCJzJDIiLCJpZCQzIiwic2lkZV9lZmZlY3RzJDAiLCJzJDMiLCJuYyIsImlkJDQiLCJjY19tb2RpZiQwIiwiZWRnZXMkMyIsInMkNCIsImlkJDUiLCJlZGdlcyQ0IiwiYXBwbHlfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb24iLCJpbmoyZ3JhcGgiLCJ0eSIsImZyZWVfaWQiLCJpbmpfZnJlc2giLCJpbmpfbm9kZXMiLCJpbmoyZ3JhcGgkMCIsIm5jJDAiLCJuJDEiLCJuJDIiLCJuYyQxIiwibmMkMiIsIm1vZGlmX2NjIiwic2lkZV9lZmZlY3RzJDEiLCJuJDMiLCJuYyQzIiwiYXBwbHlfY29uY3JldGVfcG9zaXRpdmVfdHJhbnNmIiwib2JzX2Zyb21fdHJhbnNmb3JtYXRpb24iLCJuYyQ0IiwibmMkNSIsInMkNSIsIm5jJDYiLCJvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbnMiLCJ0cmFucyIsImdldF9zcGVjaWVzX29icyIsIm9icyIsInRyYWNrZWQiLCJmbiIsIm9rIiwicGlkIiwic3BlYyIsInVwZGF0ZV9lZGdlc19mcm9tX2FjdGlvbnMiLCJzaWRlX2VmZmVjdF9kc3QiLCJsbmtfZHN0IiwiY29uY3JldGVfcmVtb3ZlZCIsImRlbF9kZXBzIiwiZGVsX29icyIsImVkZ2VzX2FmdGVyX25lZyIsImNvbmNyZXRlX2luc2VydGVkIiwibmV3X2RlcHMiLCJuZXdfb2JzIiwic3BlY2llcyIsIm1peHR1cmUiLCJmaWxlIiwicmV2X2RlcHMiLCJtYXhfZGlzdF90b19pbnQiLCJzdG9yZV9hY3Rpdml0eSIsInN0b3JlIiwic3ludGF4X2lkIiwiY2NfdmEiLCJyYXRlJDAiLCJhY3QiLCJ1bmFyeSIsIm9sZF9hY3QiLCJ1cGRhdGVfb3V0ZGF0ZWRfYWN0aXZpdGllcyIsImtub3duX3BlcnRzIiwiZGVwIiwicGVydHMiLCJtYXRjaGluZ3Nfb2ZfcnVsZSIsInJ1bGUkMCIsInBhdHRlcm5fdmEiLCJ1bmFyeV9jYW5kaWRhdGVzIiwibmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjIiwibW9kaWZpZWRfY2NzIiwicGFjayQwIiwidW5yYXRlIiwib2xkX3BhY2siLCJpX2luc3QiLCJuZXdfdiIsIm5ld19wYWNrIiwibmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjJDAiLCJ1bmFyeV9jYW5kaWRhdGVzJDAiLCJwYWNrIiwib3ZlcndyaXRlX3ZhciIsInRyYW5zZm9ybV9ieV9hX3J1bGUiLCJzdGF0ZSQxIiwiZXZlbnRfa2luZCIsInBhdGgkMCIsImluamVjdGVkJDAiLCJpbmplY3RlZCIsInJkZXBzIiwiZGVwcyIsInN0YXRlJDAiLCJoJDAiLCJyZW1haW5pbmdfc2lkZV9lZmZlY3RzIiwiZmluYWxfaW5qMmdyYXBoIiwiY29uY3JldGVfaW5zZXJ0ZWQkMCIsImV2IiwidGVzdHMkMCIsIm5ld190cmFja2VkX29ic19pbnN0YW5jZXMiLCJjZXZlbnQiLCJwYXRoIiwia25vd25fYWdlbnRzIiwicHJldGVzdHMiLCJ0ZSIsInRlJDAiLCJhZyQwIiwidGUkMSIsImFnJDEiLCJwYXRoX3Rlc3RzIiwiZnVsbF9jb25jcmV0ZV9ldmVudCIsImFwcGx5X2dpdmVuX2luc3RhbmNlIiwiZGlzdCIsImRpc3QkMCIsInJvb3QwIiwiYXBwbHlfZ2l2ZW5fcnVsZSIsImluc3QiLCJmb3JjZV9ydWxlIiwib3V0JDEiLCJkaXN0X29wdCIsImxvYyIsIm91dCQwIiwic25hcHNob3QiLCJyYXciLCJwaWNrX2FuX2luc3RhbmNlIiwicnQiLCJjaG9pY2UiLCJwYXR0ZXJuMSIsInBhdHRlcm4yIiwiaW5qMSIsImlual9vdXQiLCJpc19jb3JyZWN0X2luc3RhbmNlIiwiZ3JhcGgiLCJpc191bmFyeSIsImludl9yb290cyIsImFwcGx5X2luc3RhbmNlIiwibWF4Q29uc2VjdXRpdmVCbG9ja2VkIiwibWF4Q29uc2VjdXRpdmVDbGFzaCIsImdyYXBoJDAiLCJjYXVzZSIsImFwcGx5X2dpdmVuIiwiZ3JhcGgkMSIsImZpbmFsX3N0ZXAiLCJjb250aW51ZSQwIiwiZG9tYWluJDAiLCJsaXN0IiwiY2FuZHMiLCJtYXRjaGVzIiwibWF0Y2hlcyQwIiwiYXV4X2FkZF90cmFja2VkIiwibmFtZSIsInRwYXR0ZXJuIiwiYWRkX3RyYWNrZWQiLCJyZW1vdmVfdHJhY2tlZCIsIm5hbWUkMCIsInRlc3RlciIsInBsaXN0IiwidGVzdGVyJDAiLCJhZGRfdHJhY2tlZF9zcGVjaWVzIiwicmVtb3ZlX3RyYWNrZWRfc3BlY2llcyIsImdldF9yYW5kb21fc3RhdGUiLCJzZW5kX2luc3RhbmNlc19tZXNzYWdlIiwiYWRkX291dGRhdGVkX2RlcGVuZGVuY2llcyIsIm91dGRhdGVkX2VsZW1lbnRzIiwiZGVidWdfcHJpbnRfaW5zdGFuY2VzIiwiY29tcGFyZV9zdG9wcyIsInAyIiwidDIiLCJwMSIsInQxIiwid2l0aF9kZWx0YV9hY3Rpdml0aWVzIiwidDAiLCJhbGdzX2RlcHMiLCJzdG9wcGluZ190aW1lcyIsInN0b3BzIiwidGltZV9kZXBlbmRlbnRfcGVydHMiLCJvYnNlcnZhYmxlc192YWx1ZXMiLCJkb19tb2RpZmljYXRpb24iLCJleHRyYSIsIm1vZGlmaWNhdGlvbiIsInByaW50X2V4cHJfdmFsIiwidGV4dCIsImciLCJleHRyYSQwIiwiZ3JhcGgkMiIsImV4dHJhJDEiLCJncmFwaCQzIiwicGV4cHIiLCJwZXhwciQwIiwiZmlsZSQwIiwicmVsIiwiZmlsZSQxIiwiZmlsZSQyIiwib3RoZXJzIiwidGhlc2UiLCJjYyQwIiwibmFtZSQxIiwicGVfZXhwciIsInBlX2ZpbGUiLCJmaWxlX29wdCIsImxpbmUiLCJjYyQxIiwiZmlsZSQzIiwiZmlsZSQ0IiwicGVydHVyYmF0ZSIsImlzX2FsYXJtJDAiLCJtaXhfY2hhbmdlZCQwIiwidGFpbCIsInBlcnQiLCJtb2RfYWxhcm0iLCJtaXhfY2hhbmdlZCQxIiwiZWZmZWN0Iiwic3RvcCIsInRhaWwkMCIsImFsaXZlIiwibWl4X2NoYW5nZWQkMiIsImRvX21vZGlmaWNhdGlvbnMiLCJpbml0aWFsaXplIiwiYmluZCIsInJldHVybiQwIiwiZ3JhcGgwIiwic3RhdGUwIiwiaW5pdF9sIiwibXN0YXRlIiwiY29tcGlsZWRfcnVsZSIsInZhbHVlIiwiY3JlYXRpb25zX3NvcnQiLCJtZ3JhcGgiLCJtaWRfZ3JhcGgiLCJtaXhfY2hhbmdlZCIsInBlcnR1cmJhdGVfd2l0aF9iYWNrdHJhY2siLCJwZSIsIm91dHB1dHMkMCIsImNhbmQiLCJyZWd1bGFyX2xvb3BfYm9keSIsInBpY2tlZF9pbnN0YW5jZSIsInN0b3AkMCIsInByZXZfYWN0aXZpdHkiLCJhY3Rfc3RhY2siLCJhcHBsaWVkX3JpZF9zeW50YXgiLCJteV9zeW50YXhfcmRfaWQiLCJyZWdpc3Rlcl9uZXdfYWN0aXZpdHkiLCJzeW50YXhfcmRfaWQiLCJuZXdfYWN0IiwiZmwiLCJjdCIsImZvcmNlX3Rlc3RlZCIsImV4dHJhX3BlcnQiLCJuX2FjdGl2aXR5IiwiZmluYWxfc3RlcCQwIiwiYV9sb29wIiwiZHVtcElmRGVhZGxvY2tlZCIsInN0YXRlJDIiLCJyZCIsImR0JDIiLCJkdGkiLCJkdCQwIiwiZHQkMSIsInN0b3AkMSIsIm5lZWRzX2JhY2t0cmFjayIsImVuZF9vZl9zaW11bGF0aW9uIiwiaW5pdF9zdGF0ZSIsImNjX29mX3N0YXRlIiwiY2NfbWFwcyIsImFnZW50IiwiZSQwIiwid29yayQ1IiwiZm9sZF9hcml0eV9saXN0IiwiYXJpdHkiLCJhZGRfYWdlbnQiLCJ0b2RvcyIsIm1vcnBoaXNtIiwid29yayIsImFpZCIsIndvcmskMCIsIndfYWdlbnQiLCJ0b2RvcyQwIiwid29yayQxIiwidyIsImludGVybmFsIiwibSIsInRvZG9zJDMiLCJtb3JwaGlzbSQwIiwid29yayQzIiwicG9ydCIsImFpZCQwIiwiYWlkJDEiLCJub3RfYWdlbnQiLCJiaWQiLCJub3RfYWdlbnQkMCIsIm5vdF9hZ2VudHMiLCJiaWQkMCIsIndiX2FnZW50JDAiLCJ0b2RvcyQxIiwid2JfYWdlbnQiLCJ3b3JrJDIiLCJ0b2RvcyQyIiwidG9kbyIsIm1vcnBoaXNtJDEiLCJ3b3JrJDQiLCJlbiIsImNpZCIsImRvX25lZ2F0aXZlX3BhcnQiLCJjY19jaGFuZ2UiLCJjY3MkMCIsImludm9sdmVkX2FnZW50cyIsInRlc3RzX3Bhc3Nfb24iLCJhZyQyIiwiYWdfdHkiLCJhZyQzIiwiZHN0X3MiLCJkc3RfYWdfdHkiLCJhZyQ0IiwiYWckNSIsImlzX3N0ZXBfdHJpZ2dlcmFibGVfb25fZWRnZXMiLCJpc19zdGVwX3RyaWdnZXJhYmxlIiwiZG9fYWN0aW9ucyIsImlzX3JlbW92YWwiLCJyZW1vdmFscyIsImRvX2luX29yZGVyIiwiY2NzJDMiLCJhJDEiLCJ0eSQwIiwiY2NzJDQiLCJjY3MkNSIsImNjcyQ2IiwieDIiLCJzMiIsImEyIiwieDEiLCJzMSIsImExIiwiY2NzJDEiLCJjY3MkMiIsImRvX3N0ZXAiLCJraW5kIiwidW5hcnlfZGlzdGFuY2VzIiwiY2MxX2FncyIsImNjMl9hZ3MiLCJjb25uZWN0ZWRfY29tcG9uZW50cyIsInByZWdyYXBoIiwiaW5mbyQwIiwiZXZlbnQkMCIsImNvbm5lY3RlZF9jb21wb25lbnRzJDAiLCJwcmVncmFwaCQwIiwiY29ubmVjdGVkX2NvbXBvbmVudHMkMSIsImluZm8kMSIsImZfb3AiLCJlbXB0eV9jb21waWwiLCJtZXJnZV92ZXJzaW9uIiwiYSIsImIiLCJhcHBseV9pbnQiLCJ0IiwiaSIsImQiLCJyZW9yZGVyX2JvdW5kcyIsImoiLCJjb3VudGVyX3NpZ19vZl9jb3VudGVyIiwiYyIsImxvYyIsImNvdW50ZXJfc2lnX2RlZmF1bHQiLCJjb3VudGVyX3NpZ19taW4iLCJsb2MkMCIsImkkMCIsImNvdW50ZXJfc2lnX21heCIsIm1ha2VfaW52ZXJ0ZWRfY291bnRlcl9zaWciLCJjb3VudGVyIiwiY291bnRlcl9zaWdfbmFtZSIsIm1pbiIsIm1heCIsImZfaW50IiwiZmxpcF9sYWJlbCIsInN0ciIsIm5vX21vcmVfc2l0ZV9vbl9yaWdodCIsImVycm9yIiwibGVmdCIsInJpZ2h0IiwicCIsInAkMCIsInByaW50X2NvdW50ZXJfdGVzdCIsImYiLCJ4IiwieCQwIiwieCQxIiwieCQyIiwicHJpbnRfY291bnRlcl9taW4iLCJwcmludF9jb3VudGVyX21heCIsInByaW50X2NvdW50ZXIiLCJ0ZXN0IiwiZGVsdGEiLCJwcmludF9jb3VudGVyX3NpZyIsInN0cmluZ19hbm5vdF90b19qc29uIiwiZmlsZW5hbWVzIiwic3RyaW5nX2Fubm90ZWRfb2ZfanNvbiIsInN0cmluZ19vcHRpb25fYW5ub3RlZF9vZl9qc29uIiwiY291bnRlcl90ZXN0X3RvX2pzb24iLCJjb3VudGVyX3Rlc3Rfb2ZfanNvbiIsIngkMyIsImJ1aWxkX3BvcnRfb2ZfanNvbiIsIm4iLCJsIiwibW9kX2wiLCJtb2RfaSIsInBvcnRfaW50X21vZCIsInBvcnRfaW50IiwibSQxIiwiaSQxIiwibSQyIiwicG9ydF9pbnRfbW9kJDAiLCJwb3J0X2ludCQwIiwibCQwIiwicG9ydF9saW5rX21vZCIsInBvcnRfbGluayIsIm0iLCJsJDEiLCJtJDAiLCJwb3J0X2xpbmtfbW9kJDAiLCJwb3J0X2xpbmskMCIsInNpdGVfc2lnX29mX2pzb24iLCJuJDIiLCJuJDAiLCJuJDEiLCJkZWZhdWx0JDAiLCJuJDMiLCJzaXRlX29mX2pzb24iLCJjb3VudGVyX3RvX2pzb24iLCJjb3VudGVyX3NpZ190b19qc29uIiwicHJpbnRfYWdlbnRfbW9kIiwicHJpbnRfYXN0X2FnZW50IiwiYWdlbnRfbmFtZSIsImFnZW50X21vZF9vZl95b2pzb24iLCJhZ2VudF90b19qc29uIiwibmEiLCJhZ2VudF9vZl9qc29uIiwicyIsInMkMCIsImFnZW50X29mX2pzb24kMCIsImFnZW50X3RvX2pzb24kMCIsInByaW50X2FzdF9taXgiLCJwb3MiLCJ0b19lcmFzZWRfbWl4dHVyZSIsInRvX2NyZWF0ZWRfbWl4dHVyZSIsInRvX2R1bW15X3VzZXJfc2l0ZSIsImNvdW50ZXJfbmFtZSIsInBvcnRfbmFtZSIsInN0Iiwic2kiLCJ0eSIsInRvX2R1bW15X3VzZXJfYWdlbnQiLCJzZXR1cF9saW5rIiwidmEiLCJzaXRlIiwicm93IiwibGluZSIsIm5vZGVfc2l0ZXMiLCJtaXh0dXJlX3RvX3VzZXJfZ3JhcGgiLCJvdXQiLCJhY2MiLCJpZCIsImFjYyQwIiwidmEkMCIsImFjYyQxIiwicHJpbnRfb25lX3NpemUiLCJ0ayIsIm1peCIsInByX3ZhciIsInByX3RvayIsInByX21peCIsIm5iIiwicHJpbnRfYXJyb3ciLCJiaWRpciIsInByaW50X2FzdF9hbGdfZXhwciIsInByaW50X3JhdGVzX29uZV9kaXIiLCJ1biIsImRlZiIsIm1heF9kaXN0IiwibWQiLCJwcmludF9ydWxlX2NvbnRlbnQiLCJiaWRpcmVjdGlvbmFsIiwiciIsInIkMCIsInByaW50X2FzdF9ydWxlIiwicHJpbnRfY29uZmlndXJhdGlvbiIsInByaW50X2luaXQiLCJwcmludF9hc3RfYm9vbF9leHByIiwicHJpbnRfcHJpbnRfZXhwciIsImF1eCIsImFsZyIsImUiLCJwcmludF9tb2RpZiIsInJhdyIsImZpbGUiLCJvbiIsInAkMSIsIm9uJDAiLCJwJDIiLCJrIiwicCQzIiwicCQ0Iiwib24kMSIsInByaW50X3BlcnR1cmJhdGlvbiIsInJlcCIsIm1vZGlmIiwiY29uZCIsImFsYXJtIiwicHJpbnRfcGFyc2luZ19jb21waWxfa2FwcGEiLCJydWxlX3RvX2pzb24iLCJmX21peCIsImZfdmFyIiwiciQxIiwibWl4X3RvX2pzb24iLCJydWxlX29mX2pzb24iLCJtaXhfb2ZfanNvbiIsIm1vZGlmX29mX2pzb24iLCJleHByIiwiZmlsZSQwIiwiZmlsZSQxIiwiZmlsZSQyIiwiYiQwIiwiaWQkMCIsImIkMSIsImIkMiIsImFsZyQwIiwieSIsIm1lcmdlX2ludGVybmFscyIsIm1lcmdlX3NpdGVzX2NvdW50ZXIiLCJoIiwiYyQwIiwibWVyZ2Vfc2l0ZXNfcG9ydCIsImgkMCIsInhfb3AiLCJ0JDAiLCJtZXJnZV9zaXRlcyIsImNvIiwibmEkMCIsIm1lcmdlX2FnZW50cyIsInRvayIsIm8iLCJtZXJnZV90b2tlbnMiLCJ0b2tzIiwiYWdzIiwic2lnX2Zyb21faW5pdHMiLCJzaWdfZnJvbV9ydWxlIiwidG9rcyQxIiwiYWdzJDAiLCJzaWdfZnJvbV9ydWxlcyIsInNpZ19mcm9tX3BlcnRzIiwiaW5mZXJfYWdlbnRfc2lnbmF0dXJlcyIsInNwbGl0X21peHR1cmUiLCJyaHMiLCJsaHMiLCJhZyIsInBhY2siLCJpbnRmIiwicG9zJDAiLCJpbnRmciIsImludGZsIiwicnIiLCJsbCIsImNvbXBpbF90b19qc29uIiwiZmlsZXMiLCJtYXAiLCJ2YXJfdG9fanNvbiIsInBvc3QiLCJwcmUiLCJjb21waWxfb2ZfanNvbiIsInZhcl9vZl9qc29uIiwid3JpdGVfcGFyc2luZ19jb21waWwiLCJhc3QiLCJyZWFkX3BhcnNpbmdfY29tcGlsIiwibGIiLCJwcmludF9hc3RfbWl4JDAiLCJjb21iaW5hdGlvbnNfb2ZfdmFyX3NldHVwIiwibHMxIiwibHMyIiwiY3MiLCJkcyIsInVwZGF0ZV9yYXRlIiwiY291bnRlcl92YXJfdmFsdWVzIiwidXBkYXRlX2Jvb2xfZXhwciIsImEyIiwiazIiLCJhMSIsImsxIiwib3AiLCJrJDAiLCJvcCQwIiwiYTIkMCIsImsyJDAiLCJhMSQwIiwiazEkMCIsIm9wJDEiLCJ1cGRhdGVfZXhwciIsImEzIiwiazMiLCJhMSQxIiwiazEkMSIsImsyJDEiLCJhMSQyIiwiazEkMiIsInZhcl92YWx1ZSIsImNvdW50ZXJzX21hdGNoaW5nX3MiLCJuYW1lX21hdGNoIiwiaGFzX2NvdW50ZXJzIiwiY29tcGlsIiwic2l0ZXMiLCJzcGxpdF9jb3VudGVyX3ZhcmlhYmxlc19pbnRvX3MiLCJ3YXJuaW5nIiwiZGVidWdfbW9kZSIsInNpZ25hdHVyZXMiLCJydWxlcyQxIiwic3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsIiwiaWRzIiwiY291bnRlcl9kZWZzIiwidmFsdWUiLCJhbm5vdCIsInZhbHVlJDAiLCJ2YXJfbmFtZSIsImFubm90JDAiLCJjb3VudGVyX2RlZiIsImNvdW50ZXJfZGVsdGEiLCJtYXhfbG9jIiwibWluX2xvYyIsIm1ha2VfY2VxX2NvdW50ZXJzX2Zyb21fdmFyX3ZhbCIsInZhbHVlJDEiLCJjb3VudGVyX2RlbHRhJDAiLCJzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWwkMCIsImFzdF9hZ2VudCIsInNpdGVzJDAiLCJzaXRlc19mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWwiLCJ2YXJfdmFsdWVzIiwidXBkYXRlX29wdF9yYXRlIiwidXBkYXRlX3BhaXJfcmF0ZSIsInIyIiwicjEiLCJjaGVja19zeW50YXgiLCJwcmVwYXJlX2xoc19ydWxlIiwicnNpdGVzIiwicm5hIiwibHNpdGVzJDAiLCJsbmEiLCJwcmVwYXJlX3NpdGUiLCJ0bCIsImhkIiwicnNpdGUiLCJjb3VudGVycyIsImxzaXRlcyIsImxhZ2VudCQwIiwibHNpdGVzJDEiLCJsYWdlbnQiLCJydWxlIiwiY29udGVudCIsInJ1bGVzIiwicnVsZV9hbm5vdGVkIiwicnVsZV9uYW1lIiwibWl4X2xocyIsImNvbnRlbnQkMCIsInJfa19vcF91bl9yYXRlcyIsInJfa3VuX3JhdGVzIiwiZXhwcnNfZnJvbV9yYXRlcyIsImF1eF9leHByIiwiZXhwciQwIiwiZXhwciQxIiwiZXhwciQyIiwiZXhwciQzIiwiYWNjJDIiLCJhdXhfYm9vbCIsImV4cHJfb3B0IiwibWl4dHVyZV9mb3JfZWFjaF9jb3VudGVyX3Zhcl92Iiwia19kZWYiLCJrX3VuIiwia19vcCIsImtfb3BfdW4iLCJsaHMkMCIsIm5ld19ydWxlX25hbWUiLCJjb3VudGVyc19pZHNfYXNfc3RyaW5nIiwibG9jYWxpdHkiLCJydWxlX25hbWVfc3RyaW5nIiwicnVsZXMkMCIsImxhYmVsIiwiYWRkX2luY3IiLCJmaXJzdF9saW5rIiwibGFzdF9saW5rIiwiZXF1YWwiLCJzaWdzIiwiaXNfZmlyc3QiLCJpc19sYXN0IiwiY291bnRlcl9hZ2VudF9pbmZvIiwicG9ydF9hIiwicG9ydF9iIiwicG9ydHMiLCJpbnRlcm5hbHMiLCJiZWZvcmUiLCJhZnRlciIsInJhd19pbmNyIiwibGlua19pbmNyIiwiYWdfaW5mbyIsImxpbmsiLCJjcmVhdGVkIiwicmFfZXJhc2VkIiwiZHN0IiwicmFfdHlwZSIsInJhX3BvcnRzIiwiYmVmb3JlX3N3aXRjaCIsInJhX2ludHMiLCJyYV9hZ2VudCIsImVyYXNlX2luY3IiLCJpbmNycyIsImluY3JfcyIsImluY3IiLCJydWxlX2FnZW50IiwiY29tcGlsZV9jb3VudGVyX2luX3J1bGUiLCJydWxlX2FnZW50JDAiLCJyYXdfYWdlbnQiLCJvayIsImxua19uYiIsImxua19uYiQwIiwiY3JlYXRlZF9pbmNyIiwibWl4X2luY3IiLCJwb3J0X2lkIiwic3RhcnRfbGlua19uYiIsImFjY19pbmNycyIsInJhIiwibG9jX2RlbHRhIiwiY291bnRlcl90ZXN0IiwiaiQwIiwic3RhcnRfbGlua19mb3JfY3JlYXRlZCIsImxpbmtfZm9yX2VyYXNlZCIsInRlc3RfaW5jciIsImFkanVzdF9kZWx0YSIsInN3aXRjaCQwIiwibmV3X2xpbmtfbmIiLCJuZXdfaW5jcnMiLCJibHMiLCJhbHMiLCJjcmVhdGVkX2luY3JfbmV3IiwibWl4X2luY3JfbmV3IiwiaW5jcnNfY3JlYXRlZCIsInJhd19hZ2VudCQwIiwiYWdlbnRfbmFtZSQwIiwiaW5jcnNfY3JlYXRlZCQwIiwicnVsZV9hZ2VudF9taXgiLCJyYXdfbWl4IiwiY291bnRlcnNfcGVydHVyYmF0aW9ucyIsImFzdF9zaWdzIiwiYWdlbnRfdHlwZSIsImZpbGVuYW1lIiwic3RvcF9tZXNzYWdlIiwibW9kcyIsImxvY19hZyIsImFnX2lkIiwic2lnbiIsImFyaXR5IiwiY19uYSIsImNfaWQiLCJtYXhfdmFsIiwidmFsX29mX2NvdW50ZXIiLCJtYWtlX2NvdW50ZXIiLCJuYW1lIiwiYWRkX2NvdW50ZXJfdG9fY29udGFjdF9tYXAiLCJhZGRfbGlua19jb250YWN0X21hcCIsImFubm90YXRlX2Ryb3BwZWRfY291bnRlcnMiLCJhc3RfY291bnRlcnMiLCJyYV9jb3VudGVycyIsInBzZXQiLCJwc2V0JDAiLCJhbm5vdGF0ZV9lZGl0X2NvdW50ZXJzIiwiYW5ub3RhdGVfY291bnRlcnNfd2l0aF9kaWZmIiwibGMiLCJyYyIsImNzZXQiLCJjc2V0JDAiLCJyYyQwIiwiYyQxIiwicmNfciIsImFubm90YXRlX2NyZWF0ZWRfY291bnRlcnMiLCJjb3VudGVyX2xpc3QiLCJhZ2VudF9pZCIsImFnZW50X3NpZ25hdHVyZSIsImNvdW50ZXJfaW5mbyIsImNvbnZlcnRfZGVsdGEiLCJtYXBfb3B0Iiwib3B0IiwicmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IiwiYnVpbGRfbF90eXBlIiwiZHN0X3R5IiwiZHN0X3AiLCJ0eV9pZCIsInBfaWQiLCJjb250YWN0X21hcCIsInN0eSIsInNwIiwiZHR5IiwiZHAiLCJjb250YWN0X21hcCQwIiwic2wiLCJkbCIsImRpIiwicnVsZV9pbmR1Y2VzX2xpbmtfcGVybXV0YXRpb24iLCJzb3J0Iiwid2FybmluZ19mb3JfY291bnRlcnMiLCJzaXRlX3Nob3VsZF9tYWRlX2JlX2ZyZWUiLCJhZ190eSIsImJ1aWxkX2xpbmsiLCJ3YXJuX29uX3N3YXAiLCJsaW5rc190d28iLCJsaW5rc19vbmUiLCJvbmUkMCIsIm5ld19saW5rIiwib25lIiwic3dpdGNoJDEiLCJkc3RfaWQiLCJtYWludGFpbmVkIiwibGlua19zd2FwIiwiYW5ub3RhdGVfZHJvcHBlZF9hZ2VudCIsInN5bnRheF92ZXJzaW9uIiwicl9lZGl0X3N0eWxlIiwibGlua3NfYW5ub3QiLCJzaW1wbGVfcG9ydF9saXN0IiwibGFubm90IiwicF9wb3MiLCJwb3MkNSIsInBvcyQxIiwicG9zX2xpbmsiLCJwb3MkMiIsInBvcnRfbmFtZSQwIiwicG9zJDMiLCJsYW5ub3QkMCIsInBvc19saW5rJDAiLCJwb3MkNCIsInBvcnRfbmFtZSQxIiwiYW5ub3RhdGVfY3JlYXRlZF9hZ2VudCIsInJhbm5vdCIsInJhbm5vdCQwIiwidHJhbnNsYXRlX21vZGlmaWNhdGlvbiIsIndhcm5faW5mbyIsInJoc19saW5rcyIsImxoc19saW5rcyIsInNpdGVfbmFtZSIsInBvc19qIiwicmhzX2xpbmtzJDAiLCJhbm5vdGF0ZV9hZ2VudF93aXRoX2RpZmYiLCJscCIsInJwIiwicmVnaXN0ZXJfcG9ydF9tb2RpZiIsImxuazEiLCJyaHNfbGlua3MkMSIsInBvcyQ2IiwibmEkMSIsInJoc19saW5rcyQyIiwicG9zJDciLCJpJDIiLCJsaHNfbGlua3MkMiIsInZhJDEiLCJsaHNfbGlua3MkMCIsImxoc19saW5rcyQxIiwicmhzX2xpbmtzJDMiLCJwb3NfbGluayQxIiwiZHN0X3R5JDAiLCJkc3RfcCQwIiwicG9zJDExIiwibmEkNCIsInBvcyQ4IiwibmEkMiIsInBvcyQ5IiwiaSQzIiwicG9zJDEwIiwibmEkMyIsInJoc19saW5rcyQ0IiwiZHN0X3R5JDEiLCJkc3RfcCQxIiwicG9zJDEyIiwiaSQ0IiwicmhzX2xpbmtzJDUiLCJyZWdpc3Rlcl9pbnRlcm5hbF9tb2RpZiIsImludDEiLCJ2YXBvcyIsInZhcG9zJDAiLCJ2YSQyIiwiYW5ub3RlZCIsInJwJDAiLCJhbm5vdGVkJDAiLCJycF9yIiwic2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291IiwibHMiLCJwcyIsImZpbmFsX3J1bGVfc2FuaXR5IiwicmhzX2xpbmtzX29uZSIsImxoc19saW5rc190d28iLCJsaHNfbGlua3Nfb25lIiwicmEkMCIsIm1vZHMkMCIsIndhcm5pbmckMCIsImFubm90YXRlX2xoc193aXRoX2RpZmYiLCJzeW50YXhfdmVyc2lvbiQxIiwibGhzJDciLCJyaHMkOSIsInJocyQwIiwibGlua3NfYW5ub3QkMSIsImVyYXNlZCIsImFkZGVkIiwibG1vZCIsImxhZ19zIiwibHBvcyIsImxhZ2VudF9uYW1lIiwicm1vZCIsInJhZ19zIiwicnBvcyIsInJhZ2VudF9uYW1lIiwibGFnX2MiLCJsYWdfcCIsInJhZ19jIiwicmFnX3AiLCJsaW5rc19hbm5vdCQwIiwibGFnIiwicmFnIiwibGxpbmtzIiwicmxpbmtzIiwiY21peCIsInN5bnRheF92ZXJzaW9uJDAiLCJsaW5rc19hbm5vdCQ3IiwibGlua3NfYW5ub3QkNiIsIm1peCQzIiwiY21peCQyIiwibGhzJDQiLCJyaHMkNiIsImxocyQ1IiwicmhzJDciLCJyaHMkOCIsImxocyQ2IiwibGlua3NfYW5ub3QkMiIsIm1peCQwIiwiY21peCQwIiwibGhzJDEiLCJyaHMkMSIsImxhZ2VudF9uYW1lJDAiLCJsaHMkMiIsImxtb2QkMCIsImxwb3MkMCIsInJocyQzIiwicmEkMSIsIm1peCQyIiwibGlua3NfYW5ub3QkNCIsInJocyQyIiwicm1vZCQwIiwicmFnX3MkMCIsInJwb3MkMCIsInJhZ2VudF9uYW1lJDAiLCJsYWdfYyQwIiwibGFnX3AkMCIsInJhZ19jJDAiLCJyYWdfcCQwIiwibGlua3NfYW5ub3QkMyIsIm1peCQxIiwibGhzJDMiLCJyaHMkNCIsInJtb2QkMSIsImFnZW50X3R5cGUkMCIsImNvdW50ZXJfbGlzdCQwIiwic2ltcGxlX3BvcnRfbGlzdCQwIiwiY21peCQxIiwibGlua3NfYW5ub3QkNSIsInJocyQ1IiwiYW5ub3RhdGVfZWRpdF9taXh0dXJlIiwiaXNfcnVsZSIsIm5ld3MiLCJzY2FuX3BvcnQiLCJtb2RpZiQwIiwibW9kaWYkMSIsIm1vZGlmJDIiLCJtb2RpZiQzIiwidmEkMyIsIm1vZGlmJDQiLCJpX2lkIiwibWl4dHVyZV9vZl9hc3QiLCJjb252ZXJ0X3Rva2VuX25hbWUiLCJ0a19uYW1lIiwiYWxnX2V4cHJfb2ZfYXN0IiwiYWxncyIsIm1heF9hbGxvd2VkX3ZhciIsImEkMCIsImxhYiIsIm5vIiwieWVzIiwiYm9vbF9leHByX29mX2FzdCIsInRrX25hbWUkMCIsImFzdCQwIiwieSQwIiwicHJpbnRfZXhwcl9vZl9hc3QiLCJhc3NlbWJsZV9ydWxlIiwicl9jcmVhdGVkIiwicl9taXgiLCJhbCIsInJfZGVsdGFfdG9rZW5zIiwicl9yYXRlIiwiZGlzdCIsInVuX3JhdGUiLCJ1bl9yYXRlJDAiLCJyX3VuX3JhdGUiLCJtb2RpZl9leHByX29mX2FzdCIsImFzdF9ydWxlIiwicnVsZV9jb250ZW50IiwiY3JlYXRlZF9taXgiLCJtaXh0dXJlIiwicnVsZV9jb250ZW50JDAiLCJjcmVhdGVkX21peCQwIiwibWl4dHVyZSQwIiwiaG93IiwicmVsIiwicCQ1IiwiYWRkX3VuX3ZhcmlhYmxlIiwicmF0ZV92YXIiLCJrJDEiLCJhY2NfdW4iLCJhZ2VudF9zaWdzX29mX2FnZW50X3NpZ3Nfd2l0aF8iLCJidWlsZF9jb250YWN0X21hcCIsImFnZW50X3NpZ3NfcHJlIiwic2l6ZV9zaWdzIiwiYWdfbmFtZSIsInNpdGVfbmFtZV9hZzEiLCJzaXRlX3NpZyIsInNpdGVfbGlua3MiLCJhZzJfbmFtZSIsInNpdGVfbmFtZV9hZzIiLCJhZzJfaWQiLCJzaXRlX2lkIiwic2hvdWxkX3JhaXNlX2Zvcl9taXNzaW5nX2xpbmsiLCJpbml0X29mX2FzdCIsImluaXRzIiwiaW5pIiwid2hvIiwiaW52ZXJ0ZWRfY291bnRlcl9uYW1lIiwiY29tcGlsX29mX2FzdCIsInZhcl9vdmVyd3JpdGUiLCJhc3RfY29tcGlsJDAiLCJjb3VudGVyX2ZvbGRfaW5fbWl4dHVyZSIsImFjYzIiLCJhZ2VudF9saXN0IiwiYWNjMyIsImFnZW50Iiwic2l0ZV9saXN0IiwiYWNjNCIsImNvdW50ZXJfZm9sZF9pbl9leHByJDAiLCJlMSIsImNvdW50ZXJfZm9sZF9pbl9leHByIiwiZTIiLCJlMSQwIiwiZWIiLCJjb3VudGVyX2ZvbGRfaW5fYmV4cHIkMCIsImJleHByIiwiYmV4cHIkMCIsImJleHByJDEiLCJiZTEiLCJjb3VudGVyX2ZvbGRfaW5fYmV4cHIiLCJiZXhwciQyIiwiY291bnRlcl9mb2xkX2luX2JleHByX29wdCIsImNvdW50ZXJfZm9sZF9pbl9ydWxlIiwicnVsZSQwIiwiZSQwIiwiZSQxIiwiZSQyIiwiYWNjJDMiLCJlJDMiLCJhY2MkNCIsImNvdW50ZXJfZm9sZF9pbl9wcmludCIsImluaXQiLCJsMSIsInZhcmlhYmxlX2RlZiIsImwyIiwib2JzX2RlZiIsImwzIiwibDQiLCJwZXJ0dXJiYXRpb24iLCJiMl9vcHQiLCJtb2RfbGlzdCIsImIxX29wdCIsIm1vZF9kZWYiLCJsJDIiLCJjb3VudGVyc193aXRoX2NsdGVfdGVzdHMiLCJhZ2VudF9tb2QiLCJjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV8iLCJjb3VudGVyX29yaWciLCJjb252ZXJ0X3ZhbHVlIiwidXBkYXRlIiwicmVmX21heCIsInJlZl9taW4iLCJjb252ZXJ0X2luZm8iLCJjb3VudGVyX3NpZ192aXNpYmxlIiwibWFwJDAiLCJuZXdfY291bnRlcl9zaXRlcyIsImNvdW50ZXJfY29udmVyc2lvbl9pbmZvX21hcCIsInJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQiLCJjbHRlX3ZhbHVlX29yX25vbmUiLCJuZXdfc2l0ZSIsIm9yaWdpbmFsX2NvdW50ZXJfc2l0ZSIsImludmVydGVkX2NvdW50ZXJfc2l0ZSIsInNpdGVfbGlzdF93aXRoX29wcG9zaXRlX2RlbHRhcyIsImFkZGVkX3NpdGVzIiwibmV3X3NpdGVfbGlzdCIsImFkZF9pbnZlcnRlZF9jb3VudGVyX3RvX2luaXRfbSIsImluZm8iLCJtYXBfZXhwciIsIm1hcF9iZXhwciIsIm1hcF9ydWxlIiwicmV3cml0ZSIsInJ1bGVfZGVmIiwiaW5pdF9raW5kIiwicXVhbnRpdHlfYWxnX2V4cHIiLCJpbml0JDAiLCJ2YXJpYWJsZXMiLCJvYnNlcnZhYmxlcyIsIm1hcF9wcmludCIsIm1hcF9tb2RpZiIsImwkMyIsImEkMSIsImwkNCIsImwkNSIsImV4dCIsInBlcnR1cmJhdGlvbnMiLCJhc3RfY29tcGlsIiwiYWdlbnRfc2lnX2lzX2ltcGxpY2l0IiwiYXN0X2NvbXBpbCQxIiwiYXN0X2NvbXBpbCQyIiwiYWNjMCIsImFjYzEiLCJhY2NfY291bnRlcnNfcGVyX2FnZW50IiwiYWNjX3NpZ3MiLCJhY2NfY291bnRlcl9uYW1lcyIsImFjY19zaXRlX3NpZ3MiLCJhY2NfbGlua3MiLCJjb3VudGVyc19hZ2VudCIsInNpdGVfc2lnc19wcmVfbmFtZWRkZWNscyIsInNpdGVfc2lnc19uZCIsImNvdW50ZXJzX3Blcl9hZ2VudCIsInNpZ3Nfd2l0aF9saW5rc19hc19saXN0cyIsInNpZ3Nfd2l0aF9saW5rc19hc19saXN0cyQwIiwiY291bnRlcl9hZ2VudF9uYW1lIiwiYV9wb3J0X25hbWUiLCJiX3BvcnRfbmFtZSIsImFfcG9ydF9zaWciLCJjb3VudGVyc19mcm9tX2FnZW50IiwiYWdlbnRfY291bnRlcl9wb3J0X25hbWUiLCJiX2xpbmtzIiwiYl9wb3J0X3NpZyIsInNpdGVfc2lnc19jb3VudGVyX2FnZW50IiwiYWdlbnRfc2lncyIsImFnZW50c19zaWciLCJyX3BvcyIsImxhYmVsX29wdCIsInByaW50ZXIiLCJzZXQiLCJzZXQkMCIsInNldCQxIiwicnVsZV9sYWJlbCIsInJ1bGVfbmFtZXMiLCJrX2RlZiQwIiwia19kZWYkMSIsInJhdGVfdmFyJDAiLCJyYXRlX3Zhcl91biIsImNyZWF0ZWRfbWl4JDEiLCJtaXh0dXJlJDEiLCJyYXRlX3Zhcl91biQwIiwia19vcF91biQwIiwiYWNjX3VuJDAiLCJjcmVhdGVkX21peCQyIiwibWl4dHVyZSQyIiwiY2xlYW5lZF9ydWxlcyIsImV4dHJhX3ZhcnMiLCJ2YXJzIiwidmFyJDAiLCJhY2NfdmFycyIsIm92ZXJ3cml0ZV92YXJzX3JlbWFpbmluZyIsIm90aGVyX292ZXJ3cml0ZV92YXJzIiwibWF0Y2hzIiwidiIsImFjY192YXJzX3dpdGhfeF9yZXdyaXR0ZW5faWZfcCIsInJldl9hbGdfdmFycyIsInZhcl9vdmVyd3JpdGVfbm90X2FwcGxpZWQiLCJhbGdfdmFyc193aXRoX3Jld3JpdHRlbl92YXJzIiwiYWxnX3ZhcnNfYXJyYXkiLCJhbGdfdmFyc19maW5kZXIiLCJ0b2tlbl9uYW1lcyIsInRva2Vuc19maW5kZXIiLCJ1cF92YXJzJDAiLCJ1cF92YXJzIiwidXBkYXRlZF9hbGdfdmFycyIsInBlcnR1YmF0aW9uc193aXRob3V0X2NvdW50ZXJzIiwicGVydHVyYmF0aW9ucyQwIiwidmFyaWFibGVzJDAiLCJvYnNlcnZhYmxlcyQwIiwiaW5pdCQxIiwieXlsaHMiLCJ5eWxlbiIsInl5ZGVmcmVkIiwieXlkZ290byIsInl5c2luZGV4IiwieXlyaW5kZXgiLCJ5eWdpbmRleCIsInl5dGFibGUiLCJ5eWNoZWNrIiwieXluYW1lc19jb25zdCIsInl5bmFtZXNfYmxvY2siLCJhZGRfcG9zIiwicmhzX3BvcyIsImVuZF9wb3MiLCJzdGFydF9wb3MiLCJpbnRlcm5hbF9tZW1vcnkiLCJhZGQiLCJ5eXRyYW5zbF9jb25zdCIsInl5dHJhbnNsX2Jsb2NrIiwieXl0YWJsZXNpemUiLCJ5eWFjdCIsImNhbWxfcGFyc2VyX2VudiIsIl8yIiwiXzEiLCJfNSIsIl8zIiwiXzciLCJfNCIsIl84IiwiYW4iLCJwZW5kIiwiXzkiLCJfMTEiLCJ6Iiwicm1fdG9rZW4iLCJhZGRfdG9rZW4iLCJkZWx0YV90b2tlbiIsIl82Iiwia2JhY2sxIiwia2JhY2siLCJwb3NfZW5kIiwiZXBhdCIsInBhdCIsInBlbmRwIiwicGF1c2UiLCJlZmYiLCJ5eXRhYmxlcyIsIm1vZGVsIiwibGV4ZnVuIiwibGV4YnVmIiwiaW50ZXJhY3RpdmVfY29tbWFuZCIsInN0YW5kYWxvbmVfZWZmZWN0X2xpc3QiLCJzdGFuZGFsb25lX2Jvb2xfZXhwciIsImFwcGVuZF90b19hc3RfY29tcGlsIiwicmV2X2luc3RyIiwic3RyX3BvcyIsInZvbF9wYXJhbSIsInZvbCIsInZvbF90eXBlIiwiaW5pdF90IiwidmFyJDEiLCJsYmwiLCJlZmZlY3QiLCJ2YWx1ZV9saXN0IiwicGFyYW1fbmFtZSIsInJ1Iiwib2NhbWxfbGV4X3RhYmxlcyIsImtleXdvcmRzIiwidG9rZW4iLCJvY2FtbF9sZXhfdG9rZW5fcmVjIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJvY2FtbF9sZXhfc3RhdGUkMSIsImlubGluZV9jb21tZW50IiwicyQxIiwibGFiJDAiLCJzJDIiLCJhY2MkNSIsImFjYyQ2IiwieCQ0IiwiYWNjJDciLCJ4JDUiLCJhY2MkOCIsImFjYyQ5IiwiZXJyIiwiZXJyJDAiLCJjb21waWxlIiwibG9nZ2VyIiwiZmljIiwiY29tcGlsJDAiLCJtc2ciLCJ3cml0ZV9jYXRhbG9nX2l0ZW0iLCJvYiIsInBvc2l0aW9uIiwicmVhZF9jYXRhbG9nX2l0ZW0iLCJrZXkiLCJjb3VudCIsImNyZWF0ZSIsInB1dCIsInJhbmsiLCJjYXRhbG9nIiwiYWllIiwiZmlsZV9jcmVhdGUiLCJmaWxlX21vdmUiLCJmaWxlX3BhdGNoIiwiZmlsZV9kZWxldGUiLCJmaWxlX2dldCIsInBhcnNlIiwieWllbGQkMCIsInRleHQiLCJyYW5nZSIsImNvbXBpbGUkMCIsImV4biIsIm1lc3NhZ2UiLCJtZXNzYWdlJDAiLCJpbnN0cyIsIm92ZXJ3cml0ZSIsIml0Iiwic3RhcnRfcnVsZSIsInNwYWNlX2NoYXJzIiwicmVzZXRfZW9mIiwidG9rZW4kMCIsInJlYWRfbGFiZWwiLCJvY2FtbF9sZXhfc3RhdGUkMiIsIm9jYW1sX2xleF9zdGF0ZSQzIiwic3RyJDAiLCJjaGFyX2xpc3QiLCJyZXBseSIsIndyaXRlX3YiLCJ3cml0ZV9jYXRhbG9nX2l0ZW1zIiwibGlmdF9hbnN3ZXIiLCJvbl9tZXNzYWdlIiwiY3VycmVudF9pZCIsImFuc3dlciIsIm1zZ19pZCIsIm1zZ19pZCQwIiwibXNnX2lkJDEiLCJtc2dfaWQkMiIsIm91dCQ0IiwicG9zaXRpb24kMCIsImlkJDQiLCJjb250ZW50JDEiLCJvdXQkMyIsImlkJDMiLCJvdXQkMiIsImlkJDIiLCJvdXQkMSIsImlkJDEiLCJvdXQkMCIsImNvbXBpbGVfbW9kZV9vbiIsImRvbWFpbiIsImRvbWFpbiQwIiwiZG9tYWluJDEiLCJhJDIiLCJkb21haW4kMiIsImRvbWFpbiQzIiwib3JpZ2luIiwiY2NzIiwiZG9tYWluJDQiLCJvdXRfY2NzIiwiY29uZCQwIiwiZG9tYWluJDUiLCJ5ZXMkMCIsImRvbWFpbiQ2Iiwibm8kMCIsImRvbWFpbiQ3IiwiYSQzIiwiYSQ0IiwiY29tcGlsZV9wdXJlX2FsZyIsImNvbXBpbGVfYWxnIiwiY29tcGlsZV9ib29sIiwicnVsZXNfb2ZfYXN0IiwiZGVwc19tYWNoaW5lcnkiLCJzeW50YXhfcmVmIiwiYWxnX2V4cHIiLCJkZWx0YV90b2tzIiwiZGVwcyIsImNycCIsInJhdGUiLCJkJDAiLCJkJDEiLCJkaXN0JDAiLCJ1bnJhdGUiLCJ1bmFyeV9pbmZvcyIsIm9yaWdpbiQwIiwicnVsZV9taXh0dXJlcyIsImRlcHNfYWxncyQwIiwibmVnIiwic3ludGF4IiwiY2NzJDAiLCJ1ciIsImRlcHNfYWxncyIsInJ1bGVzX2wiLCJvJDAiLCJkJDIiLCJkJDMiLCJjb21waWxlX3ByaW50X2V4cHIiLCJleCIsImVsIiwiYXN0X2FsZyIsImVmZmVjdHNfb2ZfbW9kaWZzIiwiYXN0X2FsZ3MiLCJhc3RfcnVsZXMiLCJyZXZfZWZmZWN0cyIsImFsZ19wb3MiLCJlbGVtX3J1bGVzIiwiZWxlbV9ydWxlIiwiYWxnX2V4cHIkMCIsImFsZ19wb3MkMCIsInBleHByIiwicGV4cHIkMCIsInBleHByJDEiLCJwZXhwciQyIiwicHJpbnQiLCJwZXhwciQzIiwicGV4cHIkNCIsInByaW50JDAiLCJ0ZXN0cyIsImRvbWFpbiQ4IiwicGV4cHIkNSIsInBleHByJDYiLCJkb21haW4kOSIsInBleHByJDciLCJwZXhwciQ4IiwiZG9tYWluJDEwIiwicGV4cHIkOSIsInBleHByJDEwIiwiZG9tYWluJDExIiwiY2NzJDEiLCJkb21haW4kMTIiLCJhcnIiLCJjb21waWxlX21vZGlmaWNhdGlvbnNfbm9fdHJhY2siLCJjb21waWxlX2luaXRzIiwicmVzY2FsZSIsImVudiIsInByZWVudiIsIm1peF9wb3MiLCJhbGckMSIsInByZWVudiQwIiwiZmFrZV9ydWxlIiwiY29tcGlsZWRfcnVsZSIsInByZWVudiQxIiwidGtfbCIsInRrX2lkIiwiZmFrZV9ydWxlJDAiLCJjb21waWxlZF9ydWxlJDAiLCJpbml0X2wiLCJvdXRwdXRzIiwicmV0dXJuJDAiLCJzaGFyaW5nIiwib3ZlcndyaXRlX2luaXQiLCJvdmVyd3JpdGVfdDAiLCJyZXNjYWxlX2luaXQiLCJzaWdzX25kIiwidGtfbmQiLCJyZXN1bHQiLCJsYmxfcG9zIiwiYWxnX2EiLCJhbGdfbmQiLCJhbGdfZGVwcyIsImNyIiwiZmRvbWFpbiIsImZydWxlcyIsImZhbGdfZGVwcyIsImNvbXBpbGVkX3J1bGVzIiwiYWxnX2RlcHMkMCIsInJ1bGVfbmQiLCJvcHRfcG9zdCIsIm1vZGlmX2V4cHJfbGlzdCIsInByZV9leHByIiwidHJhY2tpbmdfZW5hYmxlZCIsImxwZXJ0IiwicHJlX2V4cHIkMCIsInRfdmFyIiwidDAiLCJlZmZlY3RzIiwicG9zdF9leHByIiwicG9zdF9wb3MiLCJoYXNfdHJhY2tpbmciLCJuZWVkc19iYWNrdHJhY2siLCJyZXBlYXQiLCJwZXJ0Iiwib3V0X2FsZ19kZXBzIiwiY29udCIsIm9icyIsImRvbV9zdGF0cyIsImJ1aWxkX2luaXRpYWxfc3RhdGUiLCJiaW5kIiwid2l0aF90cmFjZSIsIndpdGhfZGVsdGFfYWN0aXZpdGllcyIsInJhbmRvbV9zdGF0ZSIsImdyYXBoMCIsInN0YXRlMCIsImRvX2ludGVyYWN0aXZlX2RpcmVjdGl2ZXMiLCJncmFwaCIsInN0YXRlIiwiY2NfcHJlZW52IiwiY2NfcHJlZW52JDAiLCJncmFwaCQwIiwiZW52JDAiLCJmZW52IiwiZ3JhcGgkMSIsImVudiQxIiwib3N0YXRlIiwib2dyYXBoIiwib3N0b3AiLCJnZXRfcGF1c2VfY3JpdGVyaWEiLCJicG9zIiwicG9zX2IiLCJmaW5kX2FsbF9lbWJlZGRpbmdzIiwidHIiLCJkdW1teV9pbnN0YW5jZXMiLCJyb290IiwiZXJyb3JfbXNnIiwiYWdlbnQiLCJjb250YWN0bWFwIiwiYWNjdXJhY3lfc3RyaW5nIiwiZGVhZF9ydWxlcyIsImRlYWRfYWdlbnRzIiwibWFwIiwiaW50ZXJmYWNlJDAiLCJzaXRlIiwic3RhdGVzbGlzdCIsInNpdGVuYW1lIiwic2l0ZXR5cGUiLCJzaXRlbGlua3MiLCJzaXRlc3RhdGVzIiwic2l0ZW5vZGVuYW1lIiwic2l0ZW5vZGVpZCIsInNpdGVub2Rlc2l0ZXMiLCJoeXAiLCJyZWZpbmVtZW50IiwiZG9tYWluX25hbWUiLCJyZWZpbmVtZW50c19saXN0IiwicmVmaW5lbWVudF9sZW1tYXMiLCJydWxlX2lkIiwiYWdlbnRfaWQiLCJsYWJlbCIsImFzdCIsInBvc2l0aW9uIiwicG9zaXRpb25fbGlzdCIsInZhcmlhYmxlIiwicnVsZSIsImRpcmVjdCIsInNpZGVfZWZmZWN0Iiwic291cmNlIiwidGFyZ2V0X21hcCIsInRhcmdldCIsImxvY2F0aW9uX3BhaXJfbGlzdCIsInJocyIsImxocyIsImluZmx1ZW5jZW1hcCIsIm5vZGVzb2ZpbmZsdWVuY2VtYXAiLCJ3YWtldXAiLCJpbmhpYml0aW9uIiwibm9kZXMiLCJ0b3RhbF9zdHJpbmciLCJmd2Rfc3RyaW5nIiwiYndkX3N0cmluZyIsIm9yaWdpbiIsImRpcmVjdGlvbiIsInJ1bGVfaGlkZGVuIiwic2NjIiwiYWNjdXJhY3lfY20iLCJhY2N1cmFjeV9zY2MiLCJjb250YWN0bWFwc2NjIiwiY291bnRlciIsImluZiIsInN1cCIsImtleSIsImxvY2FsaXR5IiwiYWNjdXJhY3lfbGV2ZWxzIiwiY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWxzIiwiaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbHMiLCJyZWR1Y3Rpb25fYWNjdXJhY3lfbGV2ZWxzIiwiZnJlZSIsIndpbGRjYXJkIiwiYm91bmQiLCJib25kX2lkIiwiYm91bmRfdG8iLCJiaW5kaW5nX3R5cGUiLCJwcm9wIiwiYmluZCIsImJpbmRpbmdfdHlwZV9iYWNrZW5kX3N5bWJvbCIsImZyZWVfYmFja2VuZF9zeW1ib2wiLCJtaXNzaW5nX2JpbmRpbmdfc2l0ZV9iYWNrZW5kX3MiLCJ3aWxkY2FyZF9iYWNrZW5kX3N5bWJvbCIsImJvdW5kX3RvX3Vua25vd25fYmFja2VuZF9zeW1ibyIsImludGVybmFsX3N0YXRlX2ludHJvZHVjdGlvbl9iYSIsImludGVybmFsX3N0YXRlX2RlbGltaXRlcl9iYWNrZSIsImJpbmRpbmdfc3RhdGVfZGVsaW1pdGVyX2JhY2tlbiIsImJpbmRpbmdfc3RhdGVfb3BlbmluZ19iYWNrZW5kXyIsImJpbmRpbmdfc3RhdGVfY2xvc2luZ19iYWNrZW5kXyIsImludGVybmFsX3N0YXRlX29wZW5pbmdfYmFja2VuZCIsImludGVybmFsX3N0YXRlX2Nsb3NpbmdfYmFja2VuZCIsImNvdW50ZXJfc3RhdGVfb3BlbmluZ19iYWNrZW5kXyIsImNvdW50ZXJfc3RhdGVfY2xvc2luZ19iYWNrZW5kXyIsImNvdW50ZXJfc3RhdGVfcmFuZ2VfYmFja2VuZF9zeSIsIm9wZW5faW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbCIsImNsb3NlX2ludGVydmFsX2luY2x1c2l2ZV9zeW1ibyIsIm9wZW5faW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCIsImNsb3NlX2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ibyIsInBsdXNfaW5maW5pdHlfc3ltYm9sIiwibWludXNfaW5maW5pdHlfc3ltYm9sIiwiYWNjdXJhY3lfdG9fc3RyaW5nIiwiYWNjdXJhY3lfdG9fanNvbiIsIngiLCJhY2N1cmFjeV9vZl9zdHJpbmciLCJhY2N1cmFjeV9vZl9qc29uIiwianNvbiIsImNvbXBhcmUiLCJhIiwiYiIsInByaW50IiwiZiIsInNpdGVfdG9fanNvbiIsInAiLCJsIiwieSIsInhyIiwieGwiLCJ0eSIsInNpIiwiaSIsInNpdGVfb2ZfanNvbiIsImwkMCIsImpzb24kMSIsInNpdGVfbmFtZSIsImpzb24kMiIsInBvcnRfbGlua3MiLCJqc29uJDAiLCJwb3J0X3N0YXRlcyIsInNpdGVfdHlwZSIsInNpdGVfbm9kZV9zaXRlc19vZl9qc29uIiwic2l0ZV9ub2RlX3RvX2pzb24iLCJub2RlIiwibGlzdCIsInNpdGVfbm9kZV9vZl9qc29uIiwibm9kZV9pZCIsIm5vZGVfdHlwZSIsIm5vZGVfc2l0ZXMiLCJjb250YWN0X21hcF90b19qc29uIiwiY29udGFjdF9tYXAiLCJjb250YWN0X21hcF9vZl9qc29uIiwic3RyaW5nX3BhaXJfdG9fanNvbiIsInN0cmluZ19wYWlyX29mX2pzb24iLCJzdHJpbmdfcGFpcl9wYWlyX3RvX2pzb24iLCJzdHJpbmdfcGFpcl9wYWlyX29mX2pzb24iLCJzdHJpbmdfcGFpcl9wYWlyX2xpc3RfdG9fanNvbiIsInN0cmluZ19wYWlyX3BhaXJfbGlzdF9vZl9qc29uIiwic3RyaW5nX3BhaXJfcGFpcl9saXN0X2xpc3RfdG9fIiwic3RyaW5nX3BhaXJfcGFpcl9saXN0X2xpc3Rfb2ZfIiwic2NjX3RvX2pzb24iLCJzY2NfYWNjIiwiY21fYWNjIiwic2NjX29mX2pzb24iLCJydWxlX3RvX2pzb24iLCJkIiwianNvbl90b19ydWxlIiwicyIsInZhcl90b19qc29uIiwidmFyJDAiLCJqc29uX3RvX3ZhciIsImluZmx1ZW5jZV9ub2RlX3RvX2pzb24iLCJpJDAiLCJpbmZsdWVuY2Vfbm9kZV9vZl9qc29uIiwic2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiIsInNob3J0X2luZmx1ZW5jZV9ub2RlX29mX2pzb24iLCJsb2MiLCJwb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNfdG9fanNvbiIsInBvc19vZl9ydWxlc19hbmRfdmFyc19vZl9qc29uIiwicmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV90b19qc29uIiwicmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uIiwic2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUiLCJwb3NpdGlvbl9vZl9yZWZpbmVkX2luZmx1ZW5jZV8iLCJyIiwidiIsImNvbXBhcmUkMCIsInByaW50JDAiLCJyJDAiLCJkdW1wX2xvY2F0aW9uIiwiZm10IiwiaW50JDAiLCJpbnQkMSIsImR1bXBfbG9jYXRpb25fcGFpciIsImR1bXBfbG9jYXRpb25fcGFpcl9saXN0Iiwic3RyaW5nX29mX2xhYmVsX2xpc3QiLCJsb2NhdGlvbl90b19qc29uIiwibG9jYXRpb25fb2ZfanNvbiIsIm9wdCIsInN0aCIsImhhbGZfaW5mbHVlbmNlX21hcF90b19qc29uIiwiaGFsZl9pbmZsdWVuY2VfbWFwX29mX2pzb24iLCJub2Rlc19saXN0X3RvX2pzb24iLCJub2Rlc19saXN0X29mX2pzb24iLCJpbmZsdWVuY2VfbWFwX3RvX2pzb24iLCJpbmZsdWVuY2VfbWFwIiwibm9kZXNfb2ZfaW5mbHVlbmNlX21hcF90b19qc29uIiwibm9kZXNfbGlzdCIsIm5vZGVzX29mX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiIsImxvY2FsX2luZmx1ZW5jZV9tYXBfdG9fanNvbiIsImluZmx1ZW5jZV9tYXAkMCIsIm9yaWdpbl9vcHQiLCJmd2QiLCJid2QiLCJ0b3RhbCIsImFjY3VyYWN5IiwiaW5mbHVlbmNlX21hcF9vZl9qc29uIiwibG9jYWxfaW5mbHVlbmNlX21hcF9vZl9qc29uIiwiZXJyb3JfbXNnJDAiLCJvcmlnaW4kMCIsIngkMCIsImwkMSIsImRlYWRfcnVsZXNfdG9fanNvbiIsImRlYWRfcnVsZXNfb2ZfanNvbiIsImpzb25fdG9fYWdlbnRfa2luZCIsImFnZW50X2tpbmRfdG9fanNvbiIsImFnZW50X2tpbmQiLCJqc29uX29mX2RlYWRfYWdlbnRzIiwianNvbl90b19kZWFkX2FnZW50cyIsInNlcGFyYXRpbmdfdHJhbnNpdGlvbnNfdG9fanNvbiIsInNlcGFyYXRpbmdfdHJhbnNpdGlvbnNfb2ZfanNvbiIsImxlbW1hX3RvX2pzb24iLCJzaXRlX2dyYXBoX3RvX2pzb24iLCJsZW1tYV9vZl9qc29uIiwic2l0ZV9ncmFwaF9vZl9qc29uIiwiZ2V0X2h5cCIsImgiLCJnZXRfcmVmaW5lbWVudCIsInN0cmluZ19vZl9iaW5kaW5nX3R5cGUiLCJhZ2VudF9uYW1lIiwiYmluZGluZ190eXBlX3N5bWJvbCIsImJpbmRpbmdfc3RhdGVfbGlnaHRfb2ZfanNvbiIsImoiLCJiaW5kaW5nX3N0YXRlX2xpZ2h0X3RvX2pzb24iLCJib25kX2luZGV4IiwiY291bnRlcl9zdGF0ZV9saWdodF9vZl9qc29uIiwiY291bnRlcl9zdGF0ZV9saWdodF90b19qc29uIiwiaW50ZXJmYWNlX2xpZ2h0X3RvX2pzb24iLCJpbnRmIiwiYyIsImsiLCJpbnRlcmZhY2VfbGlnaHRfb2ZfanNvbiIsImxlbW1hc19saXN0X29mX2pzb25fZ2VuIiwiaW50ZXJmYWNlX29mX2pzb24iLCJsZW1tYXNfbGlzdF9vZl9qc29uIiwibGVtbWFzX2xpc3RfdG9fanNvbl9nZW4iLCJpbnRlcmZhY2VfdG9fanNvbiIsImNvbnN0cmFpbnRzIiwibGVtbWFzX2xpc3RfdG9fanNvbiIsInJhd192ZXJzaW9uX3N0cmluZyIsImV4dHJhY3RfdGFnX3JlIiwiZ3IiLCJ2ZXJzaW9uX3N0cmluZyIsInZlcnNpb25fbXNnIiwidmVyc2lvbl9rYXNhX2Z1bGxfbmFtZSIsInZlcnNpb25fa2FkZV9mdWxsX25hbWUiLCJ0a19pc19pbml0aWFsaXplZCIsImV4cGVydF9tb2RlIiwiY29tcGFyZSIsImQiLCJjIiwiYiIsImEiLCJjbXAiLCJwcmludCIsImZtdCIsIm1heF9sZXZlbF9vcHQiLCJiJDAiLCJzaG93X2xldmVsIiwibHZsIiwiYWNjZXB0X2xldmVsX2Rpc3BsYXkiLCJhY2NlcHRfbGV2ZWxfdXNlIiwibm9rZXkiLCJrIiwiY3V0X2xpc3QiLCJzIiwiZG9pdCIsImFjY3VtIiwicG9zIiwiaSIsInAiLCJsIiwibCQwIiwiaSQwIiwib3JkZXIiLCJvcmRlcmVkIiwiY2F0Iiwib2xkX2x2bCIsImFzc28iLCJjaGVjayIsIm9wdHMiLCJrZXkiLCJ0IiwiZiIsInByaW50X21zZyIsInByaW50X29wdGlvbiIsInZlcmJvc2UiLCJtc2ciLCJzcGVjIiwia2V5MiIsInIiLCJyJDAiLCJyJDEiLCJyJDIiLCJyJDMiLCJzJDAiLCJyJDQiLCJyJDUiLCJsaXN0IiwibGlzdCQwIiwidGFpbCIsImgyIiwiaDEiLCJyJDYiLCJyJDciLCJ2IiwiciQ4IiwiciQ5IiwibCQxIiwicHJpbnRfaGVscCIsImhlYWRlciIsIm5iIiwiaGVhZGVyJDAiLCJsdmwkMCIsImx2bF9vcHQiLCJ4IiwidmVyYm9zZSQwIiwidmVyYm9zZSQxIiwicGFyc2VfbGlzdCIsIndpdGhfdGsiLCJ0aXRsZSIsImxvbmdfaGVscCIsInNob3J0X2hlbHAiLCJzaG93X3ZlcnNpb24iLCJhY2N1bSQwIiwicmVtIiwib3B0Iiwib3B0JDAiLCJhYSIsInJlbSQzIiwicmVtJDIiLCJyZW0kMSIsInYkMCIsInJlbSQ3IiwicmVtJDUiLCJyZW0kNCIsInJlbSQ2IiwicmVtJDgiLCJ2JDEiLCJyZW0kOSIsInYkMiIsInJlbSQxMyIsInJlbSQxMSIsInJlbSQxMCIsInJlbSQxMiIsInYkMyIsInJlbSQxNyIsInJlbSQxNSIsInJlbSQxNCIsInJlbSQxNiIsInYkNCIsInJlbSQyMiIsInJlbSQyMCIsInJlbSQxOCIsInYkNSIsInJlbSQxOSIsInJlbSQyMSIsInYkNiIsInJlbSQyNSIsInJlbSQyNCIsInJlbSQyMyIsInYkNyIsInJlbSQyOSIsInJlbSQyNyIsInJlbSQyNiIsInJlbSQyOCIsInJlbSQzMCIsInYkOCIsInJlbSQzMSIsInYkOSIsInJlbSQzMiIsInIkMTAiLCJ5IiwicmVtJDMzIiwidiQxMCIsInJlbSQzNCIsImwkMiIsInJlbSQzNSIsInYkMTEiLCJyZW0kMzYiLCJyZW0kMCIsImZpbGVuYW1lcyIsIngkMCIsInBhcnNlIiwiZGVmIiwiYXJncyIsImRhdGFfc2V0Iiwib3V0cHV0Iiwic2VtYW50aWNzIiwiaW50ZWdyYXRpb25fc2V0dGluZ3MiLCJtb2RlbF9yZWR1Y3Rpb24iLCJzdGF0aWNfYW5hbHlzaXMiLCJkZWJ1Z19tb2RlIiwiZGVmYXVsdCQwIiwiZGVmYXVsdF9ndWkiLCJkb192ZXJzaW9uIiwiZG9fZ2x1dHRvbnkiLCJjb3B5X2Zyb21fZ3VpIiwidF9ndWkiLCJvcHRpb25zX2dlbiIsIm9wdGlvbnMiLCJvcHRpb25zX2d1aSIsImUiLCJhdXgiLCJhY2N1IiwiYWNjdSQwIiwidmFyX3ZhbCIsImFjY3UkMSIsIm0iLCJvdXRwdXREaXJlY3RvcnkiLCJvdXRwdXREYXRhRmlsZSIsInBvaW50TnVtYmVyVmFsdWUiLCJ0aW1lIiwiZmljIiwiY3JlYXRlIiwiYmFyX3NpemUiLCJiYXJfY2hhciIsImZvciQwIiwicHBfbm90X251bGwiLCJwcF90ZXh0IiwiZGVsdGFfdCIsInRfciIsImV2ZW50IiwiZV9yIiwiZHQiLCJzdHJpbmciLCJhdXhfdGljayIsInNvbWV0aGluZyIsIm4iLCJzb21ldGhpbmckMCIsIm4kMCIsIm4kMSIsInRpY2siLCJlZmZpY2llbmN5Iiwibl90Iiwibl9lIiwicnVuIiwiY29tcGxldGVfcHJvZ3Jlc3NfYmFyIiwidCQwIiwib3V0cHV0RGlyTmFtZSIsIm1hcnNoYWxpemVkT3V0RmlsZSIsImNmbG93RmlsZU5hbWUiLCJmbHV4RmlsZU5hbWUiLCJta19kaXJfciIsIm92ZXJ3cml0ZV9wZXJtaXNzaW9uIiwicGF0aCIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfZnJlc2giLCJuYW1lIiwiY29uY2F0X2xpc3QiLCJmYWN1bHRhdGl2ZSIsImV4dCIsIm5hbWUkMCIsInRtcF9uYW1lIiwiYmFzZSIsIm92ZXJfZmxhZyIsImZsYWdzIiwiYmFzZSQwIiwic2V0IiwiZXh0X29wdCIsImZuYW1lIiwiY2hlY2tfbm90X2V4aXN0cyIsImZpbGUiLCJmaWxlJDAiLCJhbnN3ZXIiLCJzZXRDaGVja0ZpbGVFeGlzdHMiLCJiYXRjaG1vZGUiLCJvdXRwdXRGaWxlIiwid2l0aF9jaGFubmVsIiwic3RyIiwiZGVzYyIsIndyYXBfZm9ybWF0dGVyIiwiZnIiLCJzZXRfZGlyIiwiZ2V0X2RpciIsInNldF9tYXJzaGFsaXplZCIsIndpdGhfbWFyc2hhbGl6ZWQiLCJzZXRfY2Zsb3ciLCJ3aXRoX2NmbG93X2ZpbGUiLCJvcGVuX3Rhc2tzX3Byb2ZpbGluZyIsIm9wZW5fYnJhbmNoX2FuZF9jdXRfZW5naW5lX3BybyIsInNldF9mbHV4Iiwibm1lIiwid2l0aF9mbHV4Iiwic3RyJDAiLCJ3aXRoX3NuYXBzaG90Iiwic2l6ZSIsImJvcmRlciQwIiwiYm9yZGVyIiwiZHVtbXlfdmFsdWVzIiwiY29sb3JzIiwic3R5bGVzIiwiZ3JhZHVhdGlvbl9zdGVwIiwiZHJhd19sIiwibWluX2dyYWRfbCIsInZhX21pbiIsInZhX21heCIsIm5icl9kZWx0YSIsImRlbHRhX3ZhIiwibmJfZ3JhZCIsImV4YWN0X3N0ZXAiLCJkZWx0YV9ncmFkIiwidmFfbWluJDAiLCJ2YV9tYXgkMCIsImRyYXciLCJoJDAiLCJ3JDAiLCJiX2giLCJ6ZXJvX3ciLCJiX29wIiwiaCIsInciLCJ2YSQwIiwidF9tYXgiLCJxIiwidmEiLCJ2YV9tYXgkMSIsInZhX21pbiQyIiwidF9tYXgkMSIsImRhdGFfdyIsImRhdGFfaCIsInRfbWF4JDIiLCJncmFkX3ciLCJuYl93IiwidmFfbWF4JDIiLCJncmFkX2giLCJuYl9oIiwidmFfbWluJDMiLCJ6ZXJvX2giLCJkcmF3X2Z1biIsInkkMCIsInBwX2xpbmUiLCJ0b19zdHJpbmciLCJzdGgiLCJ3aWR0aCIsInRvX2ZpbGUiLCJjaGFuIiwiZm9ybSIsInhsc3dlYWtGaWxlTmFtZSIsInhsc3N0cm9uZ0ZpbGVOYW1lIiwiZGVmYXVsdEV4dEFycmF5U2l6ZSIsImRlZmF1bHRHcmFwaFNpemUiLCJkZWZhdWx0TGlmdFNldFNpemUiLCJkZWZhdWx0SGVhcFNpemUiLCJkZWJ1Z19tb2RlT24iLCJ0aW1lX2luZGVwZW5kZW50IiwiYmxhY2tsaXN0X2V2ZW50cyIsImRvX2dsb2JhbF9jdXQiLCJjdXRfcHNldWRvX2ludmVyc2VfZXZlbnQiLCJkb19sb2NhbF9jdXQiLCJkb19kZXRlY3Rfc2VwYXJhYmxlX2NvbXBvbmVudHMiLCJsb29rX3VwX2Zvcl9iZXR0ZXJfY3V0IiwibG9va19kb3duX2Zvcl9iZXR0ZXJfY3V0IiwibG9nX251bWJlcl9vZl9jYXVzYWxfZmxvd3MiLCJkdW1wX2dyaWRfYmVmb3JlX3dlYWtfY29tcHJlc3MiLCJkdW1wX2dyaWRfYmVmb3JlX3N0cm9uZ19jb21wcmUiLCJkdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmkiLCJkdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmkkMCIsImdldF9jYWNoZV9zaXplIiwicHJpbnRfZGVzYyIsInNwZWNpZXNfZGVzYyIsInV1aWQiLCJnZXRfZGVzYyIsInRibCIsImRfY2hhbiIsImFjdHNEZXNjciIsImVtcHR5QWN0cyIsInBsb3REZXNjciIsInRyYWNlRGVzY3IiLCJ0cmFjZU5vdEVtcHR5IiwiaW5pdGlhbGl6ZSIsImFjdGl2aXRpZXNfZmlsZSIsInRyYWNlX2ZpbGUiLCJwbG90UGFjayIsImVudiIsImRlc2MkMCIsIm5vQ291bnRlcnMiLCJuYl9yIiwicGFjayIsIndhcm5pbmdfYnVmZmVyIiwiZ28iLCJmbHV4IiwiZGluX25hbWUiLCJmbHV4JDAiLCJsYXN0IiwiayQwIiwiaGVhZCIsImZpbGVuYW1lIiwiZm9ybWF0IiwiaXNfdHN2IiwiZmQiLCJwJDAiLCJzdGVwIiwiZCQwIiwicyQxIiwibWl4dHVyZSIsImZpbGUkMSIsImlucHV0c0Rlc2MiLCJmbHVzaF93YXJuaW5nIiwiY2xvc2UiLCJldmVudCQwIiwicGxvdCIsImlucHV0cyIsImluaXRpYWxfaW5wdXRzIiwiY29uZiIsImluaXQiLCJpbnB1dHNfZm9ybSIsImlucHV0X21vZGlmaWNhdGlvbnMiLCJtb2RzIiwibG9nRmlsZSIsInRyYWNlRmlsZSIsImRvbWFpbk91dHB1dEZpbGUiLCJtYXJzaGFsaXplT3V0RmlsZSIsInRtcF92YXJfbmFtZSIsInByZXByb2Nlc3NfYXN0Iiwid2FybmluZyIsImthc2ltX2FyZ3MiLCJjbGlfYXJncyIsImFzdCIsImNmbG93RmlsZSIsImZvcm1hdENmbG93Iiwic3RvcnlfY29tcHJlc3Npb24iLCJzeW50YXhfdmVyc2lvbiIsImthc2ltX2FyZ3MkMCIsImluaXRpYWxNaXgiLCJ2YXJfb3ZlcndyaXRlIiwiYXN0X2NvbXBpbGVkX2RhdGEiLCJjb21waWwiLCJjb25mJDAiLCJvdmVyd3JpdGVfdDAkMCIsIm92ZXJ3cml0ZV9pbml0IiwiZ2V0X2FzdF9mcm9tX2xpc3Rfb2ZfZmlsZXMiLCJmaWxlX2xpc3QiLCJjb21waWxpbmdfZnVuY3Rpb24iLCJnZXRfYXN0X2Zyb21fY2xpX2FyZ3MiLCJnZXRfcHJlcHJvY2Vzc2VkX2FzdF9mcm9tX2NsaV8iLCJnZXRfcGFja19mcm9tX3ByZXByb2Nlc3NlZF9hc3QiLCJjb21waWxlX21vZGVfb24iLCJwcmVwcm9jZXNzZWRfYXN0IiwiaW5pdF9sIiwiaGFzX3RyYWNraW5nIiwiZ2V0X2NvbXBpbGF0aW9uX2Zyb21fcGFjayIsImluaXRfdF9mcm9tX2ZpbGVzIiwicGxvdF9wZXJpb2QkMCIsIm1heF9ldmVudCQwIiwiaW5pdF9lIiwibWF4X3RpbWUiLCJpbml0X3QiLCJhJDAiLCJwbG90X3BlcmlvZCQxIiwibWF4X3RpbWUkMCIsImluaXRfdCQwIiwiY291bnRlciIsImdldF9jb21waWxhdGlvbl9mcm9tX3ByZXByb2NlcyIsInN0aCQwIiwiZ2V0X2NvbXBpbGF0aW9uIiwibWFyc2hhbGl6ZWRfZmlsZSIsImNvbXBpbGF0aW9uX3Jlc3VsdCIsImFsZ19vdmVyd3JpdGUiLCJvdmVyd3JpdGVfdDAiLCJyYXdfaW5pdHMiLCJlJDAiLCJkJDEiLCJjbG9zZV9jZWxsX3N5bWJvbCIsIm9wZW5fY2VsbF9zeW1ib2wiLCJjb21wYXJlIiwiYnJlYWthYmxlIiwieCIsImdldF9lbmNvZGluZ19mb3JtYXQiLCJ0IiwiZHVtbXlfaHRtbF9sb2dnZXIiLCJkdW1teV90eHRfbG9nZ2VyIiwiZHVtcF9jbGVhbl9zdHJpbmciLCJmbXQiLCJhIiwib3B0IiwibG9nZ2VyIiwic3RoIiwiZnByaW50bmV3bGluZSIsImZwcmludG5ld2xpbmUkMCIsImIiLCJmbXRfYnVmZmVyJDAiLCJzdHIiLCJzdHIkMCIsImJ1ZmZlciIsImZtdF9idWZmZXIiLCJzIiwicHJpbnRfYnJlYWthYmxlX3NwYWNlIiwicHJpbnRfYnJlYWthYmxlX2hpbnQiLCJkdW1wX3Rva2VuIiwiZiIsInByaW50X25ld2xpbmUiLCJiZiIsImJmJDAiLCJiZiQxIiwiYmYkMiIsInByaW50X2NlbGwiLCJjbG9zZV9jZWxsX3N5bWJvbCQwIiwib3Blbl9jZWxsX3N5bWJvbCQwIiwiZmx1c2hfbG9nZ2VyIiwiY2xvc2VfbG9nZ2VyIiwicHJpbnRfcHJlYW1ibGUiLCJvcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwiLCJjaGFubmVsIiwibW9kZSIsImZvcm1hdHRlciIsIm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyIiwib3Blbl9jaXJjdWxhcl9idWZmZXIiLCJzdGgkMCIsInNpemUiLCJvcGVuX2luZmluaXRlX2J1ZmZlciIsIm9wZW5fcm93IiwiY2xvc2Vfcm93IiwiZm9ybWF0dGVyX29mX2xvZ2dlciIsInJlZGlyZWN0IiwicHJpbnRfYXNfbG9nZ2VyIiwiZmx1c2hfYnVmZmVyIiwiZmx1c2hfYW5kX2NsZWFuIiwiZnByaW50ZiIsImNoYW5uZWxfb2ZfbG9nZ2VyIiwicHJpbnRfYmluZGluZ190eXBlIiwiYWdlbnRfbmFtZSIsInNpdGVfbmFtZSIsImJpbmRpbmdfdHlwZV9zeW1ib2wiLCJkdW1wX2pzb24iLCJqc29uIiwiY2hhbm5lbF9vcHQiLCJsaW5lX3RvX2pzb24iLCJsaW5lIiwibGluZV9vZl9qc29uIiwiZ2VuX2l0ZXIiLCJpdGVyIiwibGlzdCIsIm91dHB1dCIsIm9mX2pzb24iLCJ0b19qc29uIiwic3RyaW5nX29mX3VuX29wIiwib3AiLCJmb3JtYXQiLCJzdHJpbmdfb2ZfY29tcGFyZV9vcCIsInN0cmluZ19vZl9iaW5fb3AiLCJzdHJpbmdfb2ZfYmluX2Jvb2xfb3AiLCJzdHJpbmdfb2ZfdW5fYm9vbF9vcCIsImxpZnQiLCJ0IiwiZXh0ZW5kX2xvZ2dlciIsImxvZ2dlciIsInJlZnJlc2hfaWQiLCJhZGRfbm9kZSIsInMiLCJkIiwiYWRkX2VkZ2UiLCJzMSIsInMyIiwibWFwIiwibCIsIm9sZF9saXN0IiwiZ3JhcGhfb2ZfbG9nZ2VyIiwiZ2V0X2VkZ2VfbWFwIiwiZ2V0X25vZGVzIiwiaW50X29mX3N0cmluZ19pZCIsInN0cmluZyIsImEiLCJpIiwiZHVtbXlfbm9kZSIsImR1bW15X2VkZ2UiLCJodG1sX2RlcHMiLCJkb3RfY29sb3JfZW5jb2RpbmciLCJ4Iiwic3ZnX2NvbG9yX2VuY29kaW5nIiwiaXNfbm9fbm9kZV9hdHRyaWJ1dGVzIiwibm9kZV9hdHRyaWJ1dGUiLCJiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IiwiYm9vbCIsImJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIiwic2hhbGxfSV9kb19pdCIsImZvcm1hdCIsImZpbHRlcl9pbiIsImZpbHRlcl9vdXQiLCJiMSIsInByaW50X3ByZWFtYmxlX3NoYXJlZF9odG1sX2pzIiwiZiIsInRpdGxlIiwicHJpbnRfZ3JhcGhfcHJlYW1ibGUiLCJvcHQiLCJzdGgiLCJzdGgkMCIsInN0aCQxIiwiaGVhZGVyIiwiZl9vcHQiLCJkZXBlbmRlbmN5IiwiZl9vcHQkMCIsImYkMCIsInN0cmluZ19vZl9hcnJvd19pbl9odG1sIiwic3R5bGUiLCJtZXJnZSIsInMkMCIsInByaW50X2Zvb3Rfc2hhcmVkX2h0bWxfanMiLCJsaXN0IiwiaWQyIiwiaWQxIiwibGlzdCQwIiwiaWQxX2ludCIsImlkMl9pbnQiLCJhdHRyaWJ1dGVzIiwib3B0aW9uX2xpc3QiLCJvcHRpb24iLCJzJDEiLCJzJDIiLCJzJDMiLCJzJDQiLCJzJDUiLCJzJDYiLCJqc29uIiwicyQ3IiwicyQ4IiwicCIsImF0dHJpYnV0ZXMkMCIsInN0cmluZ19saXN0IiwiZm10Iiwic19vcHQiLCJzX29wdCQwIiwiYm9vbCQwIiwiY29sb3IiLCJib29sJDEiLCJib29sJDIiLCJib29sJDMiLCJwcmludF9ncmFwaF9mb290Iiwibm9kZXMiLCJlZGdlcyIsInNlcCIsImIiLCJvcHRpb25zIiwiY29sb3JfdmFsdWUiLCJwcmludF9jb21tZW50Iiwib3Blbl9hc3NvIiwiY2xvc2VfYXNzbyIsInByaW50X2Fzc28iLCJzdHJpbmcxIiwic3RyaW5nMiIsInNoYXBlX2luX2RvdCIsInNoYXBlIiwic3RyaW5nX29uZV9vZl9saW5lc3R5bGVfaW5fZG90Iiwic3RyaW5nX29mX2Fycm93X2hlYWRfaW5fZG90Iiwic3RyaW5nX29mX2Fycm93X3RhaWxfaW5fZG90IiwicHJpbnRfbm9kZSIsImlkIiwiZGlyZWN0aXZlcyIsImkkMCIsImlkX2ludCIsInN0cmluZyQwIiwic3RyaW5nJDEiLCJzaGFwZSQwIiwic3RyaW5nJDIiLCJzaGFwZSQxIiwiaSQxIiwiaSQyIiwiYm9vbCQ0IiwiYm9vbCQ1IiwibGFiZWwiLCJwcmludF9lZGdlIiwicHJlZml4IiwiZWRnZV9hdHRyaWJ1dGUiLCJkaXJlY3Rpb24iLCJhcnJvdyIsInByaW50X29uZV90b19uX3JlbGF0aW9uIiwiaWRsaXN0Iiwic3R5bGVfb25lIiwic3R5bGVfbiIsImZpY3RpdGlvdXMiLCJkaXJlY3RpdmVzX2ZpY3QiLCJkaXJlY3RpdmVzX29uZSIsImRpcmVjdGl2ZXNfbiIsImhlYWRraW5kX3RvX2pzb24iLCJoZWFka2luZCIsImNvbG9yX3RvX2pzb24iLCJkaXJlY3RpdmVfdG9fanNvbiIsImNvbG9yJDAiLCJpbnQkMCIsImludCQxIiwiaGVhZGtpbmQkMCIsImxpbmVzdHlsZSIsImRpcmVjdGl2ZXNfdG9fanNvbiIsIm5vZGVfdG9fanNvbiIsImVkZ2VfdG9fanNvbiIsIm5vZGVzX3RvX2pzb24iLCJlZGdlc190b19qc29uIiwidG9fanNvbiIsImdyYXBoIiwiaGVhZGtpbmRfb2ZfanNvbiIsImNvbG9yX29mX2pzb24iLCJkaXJlY3RpdmVfb2ZfanNvbiIsInBvc19saXN0IiwiY29udGV4dHVhbF9oZWxwIiwiZGlyZWN0aXZlc19vZl9qc29uIiwiaWRfb2ZfanNvbiIsIm5vZGVfb2ZfanNvbiIsImVkZ2Vfb2ZfanNvbiIsIm5vZGVzX29mX2pzb24iLCJlZGdlc19vZl9qc29uIiwib2ZfanNvbiIsInN5bWJvbF90YWJsZV9WMyIsInN5bWJvbF90YWJsZV9WNCIsIm5vdF9icmVha2FibGUiLCJzeW1ib2xfdGFibGUiLCJzeW1ib2xfdGFibGVfVjNfbGlnaHQiLCJzeW1ib2xfdGFibGVfZG90bmV0IiwidW5icmVha2FibGVfc3ltYm9sX3RhYmxlX1YzIiwidW5icmVha2FibGVfc3ltYm9sX3RhYmxlX1Y0IiwidW5icmVha2FibGVfc3ltYm9sX3RhYmxlX1YzX2xpIiwidW5icmVha2FibGVfc3ltYm9sX3RhYmxlX2RvdG5lIiwid2l0aF9kb3RfYW5kX3BsdXMiLCJlbXB0eV9lbmdpbmVfc3RhdGUiLCJ3YWtlX3VwX21hcCIsImVycm9yIiwiZW5naW5lX3N0YXRlIiwiZW1wdHlfZXJyb3JfaGFuZGxlciIsImV4bl90b19qc29uIiwieCIsIngkMCIsIngkMSIsIngkMiIsImMiLCJiIiwiYSIsImMkMCIsImIkMCIsImEkMCIsIngkMyIsIngkNCIsImNhdWdodF9leGNlcHRpb25fdG9fanNvbiIsIngkNSIsInVuY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uIiwidW5jYXVnaHQiLCJjYXVnaHQiLCJleG5fb2ZfanNvbiIsImpzb24iLCJsIiwibCQwIiwidW5jYXVnaHRfZXhjZXB0aW9uX29mX2pzb24iLCJjYXVnaHRfZXhjZXB0aW9uX29mX2pzb24iLCJidWlsZF91bmNhdWdodF9leGNlcHRpb24iLCJmaWxlX25hbWUiLCJtZXNzYWdlIiwiZXhuIiwiYnVpbGRfY2F1Z2h0X2V4Y2VwdGlvbiIsInN0YWNrIiwicmFpc2VfZXhjZXB0aW9uIiwia2V5IiwicHBfZXhjZXB0aW9uIiwiZiIsImV4YyIsInkiLCJlciIsInkkMCIsImVyJDAiLCJ4JDYiLCJwcF91bmNhdWdodCIsIngkNyIsInBwX2NhdWdodCIsIndpdGhfc3BhY2UiLCJzdHJpbmdsaXN0X29mX2V4Y2VwdGlvbiIsInN0cmluZ2xpc3Rfb2ZfY2F1Z2h0Iiwic3RyaW5nbGlzdF9vZl91bmNhdWdodCIsInNvbCIsInN0cmluZyIsInN0cmluZ2xpc3Rfb2ZfY2F1Z2h0X2xpZ2h0Iiwic3RhY2skMCIsInRvX2pzb24iLCJtZXRob2RfaGFuZGxlciIsIm9mX2pzb24iLCJjYXVnaHRfdG9fdWkiLCJ1bmNhdWdodF90b191aSIsImFkZF91bmNhdWdodF9lcnJvciIsInRvX3VpIiwiZXJyb3IkMCIsImdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3QiLCJnZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0X3RvX3UiLCJnZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3QiLCJnZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3RfdG8iLCJpc19lbXB0eV9lcnJvcl9oYW5kbGVyIiwiZGF0ZSIsInZlcnNpb24iLCJvdXRwdXRfZGlyZWN0b3J5Iiwib3V0cHV0X2NtX2RpcmVjdG9yeSIsIm91dHB1dF9pbV9kaXJlY3RvcnkiLCJvdXRwdXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5IiwidW5zYWZlIiwidHJhY2UiLCJzeW50YXhfdmVyc2lvbiIsImR1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jYyIsImxvZyIsImZvcm1hdHRlciIsImZpbGUiLCJsaW5rX21vZGUiLCJkb19pbmZsdWVuY2VfbWFwIiwicnVsZV9zaGFwZSIsInJ1bGVfY29sb3IiLCJ2YXJpYWJsZV9zaGFwZSIsInZhcmlhYmxlX2NvbG9yIiwiY2VudGVyX2NvbG9yIiwid2FrZV91cF9jb2xvciIsImluaGliaXRpb25fY29sb3IiLCJ3YWtlX3VwX2Fycm93IiwiaW5oaWJpdGlvbl9hcnJvdyIsImluZmx1ZW5jZV9tYXBfZmlsZSIsImluZmx1ZW5jZV9tYXBfZm9ybWF0IiwicHJvbXB0X2Z1bGxfdmFyX2RlZiIsInByb21wdF9mdWxsX3J1bGVfZGVmIiwibWFrZV9sYWJlbHNfY29tcGF0aWJsZV93aXRoX2RvIiwiZG9fY29udGFjdF9tYXAiLCJkb19zY2MiLCJwdXJlX2NvbnRhY3QiLCJjb250YWN0X21hcF9maWxlIiwiY29udGFjdF9tYXBfZm9ybWF0IiwiYmluZGluZ19zaXRlX3NoYXBlIiwiYmluZGluZ19zaXRlX2NvbG9yIiwiaW50ZXJuYWxfc2l0ZV9zaGFwZSIsImludGVybmFsX3NpdGVfY29sb3IiLCJjb3VudGVyX3NpdGVfc2hhcGUiLCJjb3VudGVyX3NpdGVfY29sb3IiLCJhZ2VudF9zaGFwZV9hcnJheSIsImFnZW50X2NvbG9yX2FycmF5IiwiYWdlbnRfc2hhcGVfZGVmIiwiYWdlbnRfY29sb3JfZGVmIiwibGlua19jb2xvciIsImluZmx1ZW5jZV9jb2xvciIsImluZmx1ZW5jZV9hcnJvdyIsImRvX09ERV9mbG93X29mX2luZm9ybWF0aW9uIiwiZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm9ybWF0IiwiZG9fc2l0ZV9kZXBlbmRlbmNpZXMiLCJkdW1wX3NpdGVfZGVwZW5kZW5jaWVzIiwiZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzIiwidmVyYm9zaXR5X2xldmVsX2Zvcl9yZWFjaGFiaWxpIiwiZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcmVzIiwiZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfY292IiwiZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfaXRlIiwiZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfc3RhIiwiZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluIiwiZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZGlmIiwiZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2wiLCJoaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmUiLCJoaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnQiLCJzbWFzaF9yZWxhdGlvbnMiLCJ1c2VfbmF0dXJhbF9sYW5ndWFnZSIsImNvbXB1dGVfbG9jYWxfdHJhY2VzIiwic2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3RyYWNlIiwidXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfIiwiYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzIiwiYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzIiwiZG9fbm90X2NvbXByZXNzX3RyaXZpYWxfbG9zYW5nIiwibG9jYWxfdHJhY2VfcHJlZml4IiwibG9jYWxfdHJhY2VfZm9ybWF0IiwiY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zIiwid2l0aF92aWV3c19hbmFseXNpcyIsIndpdGhfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaSIsIndpdGhfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXMiLCJ3aXRoX2R5bmFtaWNfY29udGFjdF9tYXAiLCJ3aXRoX2NvdW50ZXJzX2FuYWx5c2lzIiwiY291bnRlcl9hbmFseXNpc19kb21haW4iLCJ2aWV3X2FjY3VyYWN5X2xldmVsIiwiaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCIsImNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsIiwic2NjX2FjY3VyYWN5X2xldmVsIiwiZG9fc3ltbWV0cmllcyIsInJhdGVfY29udmVudGlvbiIsInByaW50X2VmZmljaWVuY3kiLCJiYWNrZG9vcl9uYnJfb2Zfc2NjIiwiYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjYyIsImJhY2tkb29yX25icl9vZl9jb25zdHJhaW50cyIsImJhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50cyIsImJhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzIiwiYmFja2Rvb3JfbmJyX29mX3J1bGVzIiwiYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMiLCJiYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub24iLCJiYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXYiLCJiYWNrZG9vcl90aW1pbmciLCJiYWNrZG9vcl9maWxlIiwiYmFja2Rvb3JfZGlyZWN0b3J5IiwiY3N0X3RleCIsImNzdF9odG1sJDAiLCJhZGRfZXh0ZW5zaW9uX2lmX25vdF9hbHJlYWR5X20iLCJleHQiLCJzaXplX2EiLCJzaXplX2V4dCIsIm9wZW5fb3V0IiwiZCIsIm9wZW5fYXBwZW5kIiwiY29tcG9zZSIsImciLCJleHRfZm9ybWF0IiwiZmV0Y2hfbGV2ZWxfZ2VuIiwicyIsInIiLCJmZXRjaF9ncmFwaF9mb3JtYXQiLCJmZXRjaF9hY2N1cmFjeV9sZXZlbCIsImdldF9zeW50YXhfdmVyc2lvbiIsInJlYWNoYWJpbGl0eV9tYXBfMCIsInJlYWNoYWJpbGl0eV9tYXBfMSIsInJlYWNoYWJpbGl0eV9tYXBfMiIsInJlYWNoYWJpbGl0eV9tYXBfMyIsInJlYWNoYWJpbGl0eV9tYXBfNCIsImdldF9yZWFjaGFiaWxpdHlfcGFyYW1ldGVycyIsImNhY2hlIiwiZ2V0X3BhcmFtZXRlcnMiLCJvcHQiLCJjYWxsZWRfZnJvbSIsInN0aCIsImh0bWxfbW9kZSIsImNvbW1hbmQkMCIsImNoYW5uZWxfYmFja2Rvb3IkMCIsImNoYW5uZWxfZXJyJDAiLCJjaGFubmVsJDEiLCJjaGFubmVsIiwiY2hhbm5lbCQwIiwiY29tbWFuZCQyIiwicmVhY2hhYmlsaXR5JDAiLCJyZWFjaGFiaWxpdHkiLCJtYXAiLCJhJDEiLCJmbXQiLCJjaGFubmVsJDIiLCJkdW1teV9wYXJhbWV0ZXJzIiwicCIsInAkMCIsImdldF9ib3VuZF9zeW1ib2xfMSIsInN5bWJvbCIsImdldF9vcGVuX2JpbmRpbmdfc3RhdGVfMSIsImdldF9jbG9zZV9iaW5kaW5nX3N0YXRlXzEiLCJnZXRfbWlzc2luZ19iaW5kaW5nX3N0YXRlXzEiLCJnZXRfbGlua190b19hbnlfMSIsImdldF9saW5rX3RvX3NvbWVfMSIsImdldF9pbnRlcm5hbF9zdGF0ZV9zeW1ib2xfMSIsImdldF9vcGVuX2ludGVybmFsX3N0YXRlXzEiLCJnZXRfY2xvc2VfaW50ZXJuYWxfc3RhdGVfMSIsImdldF9mcmVlXzEiLCJnZXRfYXRfc3ltYm9sXzEiLCJnZXRfYWdlbnRfb3Blbl9zeW1ib2xfMSIsImdldF9hZ2VudF9jbG9zZV9zeW1ib2xfMSIsImdldF9hZ2VudF9zZXBfY29tbWFfc3ltYm9sXzEiLCJnZXRfYWdlbnRfc2VwX3BsdXNfc3ltYm9sXzEiLCJnZXRfYWdlbnRfc2VwX2RvdF9zeW1ib2xfMSIsImdldF9idHlwZV9zZXBfc3ltYm9sXzEiLCJnZXRfc2l0ZV9zZXBfY29tbWFfc3ltYm9sXzEiLCJnZXRfZ2hvc3RfYWdlbnRfc3ltYm9sXzEiLCJnZXRfZG9fd2Vfc2hvd19naG9zdF8xIiwiZ2V0X3VuaV9hcnJvd19zeW1ib2xfMSIsImdldF9yZXZfYXJyb3dfc3ltYm9sXzEiLCJnZXRfYmlfYXJyb3dfc3ltYm9sXzEiLCJnZXRfYmlfYXJyb3dfbm9fcG9seV9zeW1ib2xfMSIsImdldF91bmlfYXJyb3dfbm9fcG9seV9zeW1ib2xfMSIsImdldF9yZXZfYXJyb3dfbm9fcG9seV9zeW1ib2xfMSIsImdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdiIsImdldF9vcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdiIsImdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eSIsImdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaSIsImdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaSIsImdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5maW5pdCIsImdldF9wbHVzX2luZmluaXR5X3N5bWJvbF8xIiwiZ2V0X21pbnVzX2luZmluaXR5X3N5bWJvbF8xIiwiZ2V0X2ludF9pbnRlcnZhbF9zZXBhcmF0b3Jfc3ltIiwiZ2V0X29wZW5fY291bnRlcl9zdGF0ZV8xIiwiZ2V0X29wZW5fY291bnRlcmNlcV8xIiwiZ2V0X29wZW5fY291bnRlcmN2YXJfMSIsImdldF9vcGVuX2NvdW50ZXJjZ3RlXzEiLCJnZXRfb3Blbl9jb3VudGVyZGVsdGFfMSIsImdldF9vcGVuX2NvdW50ZXJ2YWxfMSIsImdldF9jbG9zZV9jb3VudGVyX3N0YXRlXzEiLCJnZXRfY2xvc2VfY291bnRlcmNlcV8xIiwiZ2V0X2Nsb3NlX2NvdW50ZXJjdmFyXzEiLCJnZXRfY2xvc2VfY291bnRlcmNndGVfMSIsImdldF9jbG9zZV9jb3VudGVyZGVsdGFfMSIsImdldF9jbG9zZV9jb3VudGVydmFsXzEiLCJnZXRfY291bnRlcmNlcV9zeW1ib2xfMSIsImdldF9jb3VudGVyY3Zhcl9zeW1ib2xfMSIsImdldF9jb3VudGVyY2d0ZV9zeW1ib2xfMSIsImdldF9jb3VudGVyZGVsdGFwbHVzX3N5bWJvbF8xIiwiZ2V0X2NvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbF8xIiwiZ2V0X2NvdW50ZXJ2YWxfc3ltYm9sXzEiLCJnZXRfaW1fZm9ybWF0XzEiLCJpbmZsdWVuY2UiLCJnZXRfaW1fZmlsZV8xIiwiZ2V0X2ltX2RpcmVjdG9yeV8xIiwiZ2V0X3J1bGVfc2hhcGVfMSIsImdldF9ydWxlX2NvbG9yXzEiLCJnZXRfdmFyaWFibGVfc2hhcGVfMSIsImdldF92YXJpYWJsZV9jb2xvcl8xIiwiZ2V0X3dha2VfdXBfY29sb3JfMSIsImdldF9pbmhpYml0aW9uX2NvbG9yXzEiLCJnZXRfd2FrZV91cF9hcnJvd18xIiwiZ2V0X2luaGliaXRpb25fYXJyb3dfMSIsImdldF9wcm9tcHRfZnVsbF92YXJfZGVmXzEiLCJnZXRfcHJvbXB0X2Z1bGxfcnVsZV9kZWZfMSIsImdldF9tYWtlX2xhYmVsc19jb21wYXRpYmxlXzEiLCJnZXRfcHVyZV9jb250YWN0XzEiLCJjbSIsImdldF9jbV9mb3JtYXRfMSIsImdldF9jbV9maWxlXzEiLCJnZXRfY21fZGlyZWN0b3J5XzEiLCJnZXRfYmluZGluZ19zaXRlX3NoYXBlXzEiLCJnZXRfYmluZGluZ19zaXRlX2NvbG9yXzEiLCJnZXRfaW50ZXJuYWxfc2l0ZV9zaGFwZV8xIiwiZ2V0X2ludGVybmFsX3NpdGVfY29sb3JfMSIsImdldF9jb3VudGVyX3NpdGVfc2hhcGVfMSIsImdldF9jb3VudGVyX3NpdGVfY29sb3JfMSIsImdldF9hZ2VudF9zaGFwZV9hcnJheV8xIiwiZ2V0X2FnZW50X2NvbG9yX2FycmF5XzEiLCJnZXRfYWdlbnRfc2hhcGVfZGVmXzEiLCJnZXRfYWdlbnRfY29sb3JfZGVmXzEiLCJnZXRfbGlua19jb2xvcl8xIiwiZ2V0X2luZmx1ZW5jZV9jb2xvcl8xIiwiZ2V0X2luZmx1ZW5jZV9hcnJvd18xIiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzIiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDAiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkMSIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQyIiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDMiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkNCIsImdldF9zbWFzaF9yZWxhdGlvbnNfMSIsImdldF9oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tXyIsImdldF9oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0XyIsImdldF9wb3N0X3Byb2Nlc3NpbmdfMSIsImdldF9iYWNrZW5kX21vZGVfMSIsImdldF9sb2NhbF90cmFjZV9mb3JtYXRfMSIsImdldF9jb21wdXRlX2xvY2FsX3RyYWNlc18xIiwiZ2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0IiwiZ2V0X2lnbm9yZV90cml2aWFsX2xvc2FuZ2VzXzEiLCJnZXRfc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3QiLCJnZXRfdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG8iLCJnZXRfYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzXzEiLCJnZXRfYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzXzEiLCJnZXRfbG9jYWxfdHJhY2VfcHJlZml4XzEiLCJnZXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5XzEiLCJnZXRfdmlld19hbmFseXNpc18xIiwiZ2V0X3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzIiwiZ2V0X3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzXzEiLCJnZXRfZHluYW1pY19jb250YWN0X21hcF8xIiwiZ2V0X2NvdW50ZXJzX2FuYWx5c2lzXzEiLCJnZXRfY291bnRlcnNfZG9tYWluXzEiLCJnZXRfY29tcHV0ZV9zeW1tZXRyaWVzXzEiLCJtYXJzaGFsaXNhYmxlIiwiZ2V0X3JhdGVfY29udmVudGlvbl8xIiwiZ2V0X2VtcHR5X2hhc2h0Ymxfc2l6ZV8xIiwiZ2V0X3N5bWJvbHNfMSIsImdldF9maWxlXzEiLCJnZXRfaW5mbHVlbmNlX21hcF8xIiwiZ2V0X2NvbnRhY3RfbWFwXzEiLCJnZXRfcmVhY2hhYmlsaXR5X21hcF8xIiwiZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhIiwiZ2V0X3Vuc2FmZV8xIiwiZ2V0X3RyYWNlXzEiLCJnZXRfZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXkiLCJnZXRfcHJlZml4XzEiLCJnZXRfY2FsbF9zdGFja18xIiwiZ2V0X2xpbmtfbW9kZV8xIiwiZ2V0X2thc2Ffc3RhdGVfMSIsImdldF9kb19jb250YWN0X21hcF8xIiwiZ2V0X3N5bnRheF92ZXJzaW9uXzEiLCJnZXRfZG9fc2NjXzEiLCJnZXRfZG9faW5mbHVlbmNlX21hcF8xIiwiZ2V0X2RvX09ERV9mbG93X29mX2luZm9ybWF0aW9uIiwiZ2V0X2RvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvIiwiZ2V0X2RvX3NpdGVfZGVwZW5kZW5jaWVzXzEiLCJnZXRfZHVtcF9zaXRlX2RlcGVuZGVuY2llc18xIiwiZ2V0X2RvX3JlYWNoYWJpbGl0eV9hbmFseXNpc18xIiwiZ2V0X2luZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2IiwiZ2V0X2NvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsIiwiZ2V0X3NjY19hY2N1cmFjeV9sZXZlbF8xIiwiZ2V0X3ZpZXdfYWNjdXJhY3lfbGV2ZWxfMSIsImdldF9sYXVuY2hpbmdfZGF0ZV8xIiwidCIsImdtdCIsImdldF9zaG9ydF92ZXJzaW9uXzEiLCJnZXRfZnVsbF92ZXJzaW9uXzEiLCJnZXRfbGF1bmNoZWRfd2hlcmVfMSIsImdldF9jb21tYW5kX2xpbmVfMSIsImdldF9tYXJzaGFsaXNhYmxlIiwicGFyYW1ldGVyIiwiZ2V0X2xvZ2dlciIsImdldF9sb2dnZXJfZXJyIiwiZ2V0X2xvZ2dlcl9iYWNrZG9vciIsInVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIiwiZ2V0X2NvbW1hbmRfbGluZSIsImdldF9zaG9ydF92ZXJzaW9uIiwiZ2V0X2xhdW5jaGVkX3doZXJlIiwiZ2V0X2Z1bGxfdmVyc2lvbiIsImdldF9sYXVuY2hpbmdfZGF0ZSIsImdldF9sYXVuY2hlZF93aGVuX2FuZF93aGVyZSIsInBhcmFtZXRlcnMiLCJnZXRfZG9fY29udGFjdF9tYXAiLCJnZXRfc3ludGF4X3ZlcnNpb24kMCIsImdldF9kb19zY2MiLCJnZXRfZG9faW5mbHVlbmNlX21hcCIsImdldF9kb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbiQwIiwiZ2V0X2RvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvJDAiLCJnZXRfZG9fc2l0ZV9kZXBlbmRlbmNpZXMiLCJnZXRfZHVtcF9zaXRlX2RlcGVuZGVuY2llcyIsImdldF9zeW1ib2xzIiwiZ2V0X2ZpbGUiLCJnZXRfY29tcHV0ZV9zeW1tZXRyaWVzIiwiZ2V0X3JhdGVfY29udmVudGlvbiIsImdldF9pbmZsdWVuY2VfbWFwIiwiZ2V0X2NvbnRhY3RfbWFwIiwiZ2V0X3JlYWNoYWJpbGl0eV9tYXAiLCJnZXRfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmEkMCIsImdldF91bnNhZmUiLCJnZXRfdHJhY2UiLCJnZXRfZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXkkMCIsImdldF9wcmVmaXgiLCJnZXRfY2FsbF9zdGFjayIsImdldF9saW5rX21vZGUiLCJnZXRfY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwkMCIsImdldF9zY2NfYWNjdXJhY3lfbGV2ZWwiLCJnZXRfaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXYkMCIsImdldF92aWV3X2FjY3VyYWN5X2xldmVsIiwiZ2V0X2VtcHR5X2hhc2h0Ymxfc2l6ZSIsInVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZSIsInVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCIsInVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIiwidXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfIiwidXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFsIiwiZ2V0X2JvdW5kX3N5bWJvbCIsImdldF9vcGVuX2JpbmRpbmdfc3RhdGUiLCJnZXRfY2xvc2VfYmluZGluZ19zdGF0ZSIsImdldF9taXNzaW5nX2JpbmRpbmdfc3RhdGUiLCJnZXRfaW50ZXJuYWxfc3RhdGVfc3ltYm9sIiwiZ2V0X29wZW5faW50ZXJuYWxfc3RhdGUiLCJnZXRfY2xvc2VfaW50ZXJuYWxfc3RhdGUiLCJnZXRfbGlua190b19hbnkiLCJnZXRfbGlua190b19zb21lIiwiZ2V0X2ZyZWVfc3ltYm9sIiwiZ2V0X2F0X3N5bWJvbCIsImdldF9hZ2VudF9vcGVuX3N5bWJvbCIsImdldF9hZ2VudF9jbG9zZV9zeW1ib2wiLCJnZXRfYWdlbnRfc2VwX2NvbW1hX3N5bWJvbCIsImdldF9hZ2VudF9zZXBfcGx1c19zeW1ib2wiLCJnZXRfYWdlbnRfc2VwX2RvdF9zeW1ib2wiLCJnZXRfYnR5cGVfc2VwX3N5bWJvbCIsImdldF9zaXRlX3NlcF9jb21tYV9zeW1ib2wiLCJnZXRfZ2hvc3RfYWdlbnRfc3ltYm9sIiwiZ2V0X2RvX3dlX3Nob3dfZ2hvc3QiLCJnZXRfdW5pX2Fycm93X3N5bWJvbCIsImdldF9yZXZfYXJyb3dfc3ltYm9sIiwiZ2V0X2JpX2Fycm93X3N5bWJvbCIsImdldF9iaV9hcnJvd19ub19wb2x5X3N5bWJvbCIsImdldF9yZXZfYXJyb3dfbm9fcG9seV9zeW1ib2wiLCJnZXRfdW5pX2Fycm93X25vX3BvbHlfc3ltYm9sIiwiZ2V0X29wZW5faW50X2ludGVydmFsX2luY2x1c2l2JDAiLCJnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXYkMCIsImdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eSQwIiwiZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpJDAiLCJnZXRfY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2kkMCIsImdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5maW5pdCQwIiwiZ2V0X3BsdXNfaW5maW5pdHlfc3ltYm9sIiwiZ2V0X21pbnVzX2luZmluaXR5X3N5bWJvbCIsImdldF9pbnRfaW50ZXJ2YWxfc2VwYXJhdG9yX3N5bSQwIiwiZ2V0X29wZW5fY291bnRlcl9zdGF0ZSIsImdldF9vcGVuX2NvdW50ZXJjZXEiLCJnZXRfb3Blbl9jb3VudGVyY2d0ZSIsImdldF9vcGVuX2NvdW50ZXJjdmFyIiwiZ2V0X29wZW5fY291bnRlcmRlbHRhIiwiZ2V0X29wZW5fY291bnRlcnZhbCIsImdldF9jbG9zZV9jb3VudGVyX3N0YXRlIiwiZ2V0X2Nsb3NlX2NvdW50ZXJjZXEiLCJnZXRfY2xvc2VfY291bnRlcmNndGUiLCJnZXRfY2xvc2VfY291bnRlcmN2YXIiLCJnZXRfY2xvc2VfY291bnRlcmRlbHRhIiwiZ2V0X2Nsb3NlX2NvdW50ZXJ2YWwiLCJnZXRfY291bnRlcmNlcV9zeW1ib2wiLCJnZXRfY291bnRlcmNndGVfc3ltYm9sIiwiZ2V0X2NvdW50ZXJjdmFyX3N5bWJvbCIsImdldF9jb3VudGVyZGVsdGFwbHVzX3N5bWJvbCIsImdldF9jb3VudGVyZGVsdGFtaW51c19zeW1ib2wiLCJnZXRfY291bnRlcnZhbF9zeW1ib2wiLCJnZXRfaW1fZm9ybWF0IiwiZ2V0X2ltX2ZpbGUiLCJnZXRfaW1fZGlyZWN0b3J5IiwiZ2V0X3J1bGVfc2hhcGUiLCJnZXRfcnVsZV9jb2xvciIsImdldF92YXJpYWJsZV9zaGFwZSIsImdldF92YXJpYWJsZV9jb2xvciIsImdldF93YWtlX3VwX2NvbG9yIiwiZ2V0X2luaGliaXRpb25fY29sb3IiLCJnZXRfd2FrZV91cF9hcnJvdyIsImdldF9pbmhpYml0aW9uX2Fycm93IiwiZ2V0X3Byb21wdF9mdWxsX3Zhcl9kZWYiLCJnZXRfcHJvbXB0X2Z1bGxfcnVsZV9kZWYiLCJnZXRfbWFrZV9sYWJlbHNfY29tcGF0aWJsZV93aXQiLCJnZXRfcHVyZV9jb250YWN0IiwiZ2V0X2NtX2Zvcm1hdCIsImdldF9jbV9maWxlIiwiZ2V0X2NtX2RpcmVjdG9yeSIsImdldF9iaW5kaW5nX3NpdGVfc2hhcGUiLCJnZXRfYmluZGluZ19zaXRlX2NvbG9yIiwiZ2V0X2ludGVybmFsX3NpdGVfc2hhcGUiLCJnZXRfaW50ZXJuYWxfc2l0ZV9jb2xvciIsImdldF9jb3VudGVyX3NpdGVfc2hhcGUiLCJnZXRfY291bnRlcl9zaXRlX2NvbG9yIiwiZ2V0X2FnZW50X3NoYXBlX2FycmF5IiwiZ2V0X2FnZW50X2NvbG9yX2FycmF5IiwiZ2V0X2FnZW50X3NoYXBlX2RlZiIsImdldF9hZ2VudF9jb2xvcl9kZWYiLCJnZXRfbGlua19jb2xvciIsImdldF9pbmZsdWVuY2VfY29sb3IiLCJnZXRfaW5mbHVlbmNlX2Fycm93IiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDUiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkNiIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQ3IiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDgiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkOSIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQxMCIsImdldF9wb3N0X3Byb2Nlc3NpbmciLCJnZXRfYmFja2VuZF9tb2RlIiwiZ2V0X2hpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fJDAiLCJnZXRfaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF8kMCIsImdldF9zbWFzaF9yZWxhdGlvbnMiLCJnZXRfbG9jYWxfdHJhY2VfZm9ybWF0IiwiZ2V0X2NvbXB1dGVfbG9jYWxfdHJhY2VzIiwiZ2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0JDAiLCJzZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXQiLCJyJDAiLCJyJDEiLCJzZXRfdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG8iLCJnZXRfc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3QkMCIsImdldF91c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sbyQwIiwiZ2V0X2lnbm9yZV9sb2NhbF9sb3NhbmdlcyIsImdldF9hZGRfc2luZ3VsYXJfbWFjcm9zdGF0ZXMiLCJnZXRfYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzIiwiZ2V0X2xvY2FsX3RyYWNlX3ByZWZpeCIsImdldF9sb2NhbF90cmFjZV9kaXJlY3RvcnkiLCJnZXRfdmlld19hbmFseXNpcyIsImdldF9wYXJhbGxlbF9ib25kc19hbmFseXNpcyIsImdldF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcyQwIiwiZ2V0X2R5bmFtaWNfY29udGFjdF9tYXAiLCJnZXRfY291bnRlcnNfYW5hbHlzaXMiLCJnZXRfY291bnRlcnNfZG9tYWluIiwiZ2V0X2RvX3JlYWNoYWJpbGl0eV9hbmFseXNpcyIsInNldF9wcmVmaXhfMSIsInByZWZpeCIsInNldF9jYWxsX3N0YWNrXzEiLCJjYWxsX3N0YWNrIiwic2V0X3RyYWNlXzEiLCJib29sIiwidXBncmFkZV90b19tYXJzaGFsaXNhYmxlIiwic2V0X3ByZWZpeCIsInNldF9jYWxsX3N0YWNrIiwic2V0X3RyYWNlIiwidXBkYXRlX3ByZWZpeCIsInN1ZmZpeCIsInVwZGF0ZV9jYWxsX3N0YWNrIiwibmFtZSIsInJlcF9ib29sIiwib3Blbl9pbmZsdWVuY2VfbWFwX2ZpbGUiLCJtYXRjaCQxIiwiZm9ybWF0IiwibG9nZ2VyIiwib3Blbl9jb250YWN0X21hcF9maWxlIiwibGV4aWNhbF9hbmFseXNpc19vZl90ZXN0ZWRfb25sIiwiZ2V0X2NhbGxlZF9mcm9tIiwiZ2V0X2JhY2tkb29yX25icl9vZl9zY2NfMSIsImJhY2tkb29ycyIsImdldF9iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2ZfcyIsImdldF9iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyIsImdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludCIsImdldF9iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYSIsImdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyIsImdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfMSIsImdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aCIsImdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseSIsImdldF9iYWNrZG9vcl90aW1pbmdfMSIsImdldF9iYWNrZG9vcl9maWxlXzEiLCJnZXRfYmFja2Rvb3JfZGlyZWN0b3J5XzEiLCJnZXRfYmFja2Rvb3JzIiwiZ2V0X2JhY2tkb29yX25icl9vZl9zY2NfMiIsImdldF9iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2ZfcyQwIiwiZ2V0X2JhY2tkb29yX25icl9vZl9jb25zdHJhaW50JDAiLCJnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmEkMCIsImdldF9iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyQwIiwiZ2V0X2JhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzJDAiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzXzIiLCJnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHkkMCIsImdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aCQwIiwiZ2V0X2JhY2tkb29yX3RpbWluZ18yIiwiZ2V0X2JhY2tkb29yX2ZpbGVfMiIsImdldF9iYWNrZG9vcl9kaXJlY3RvcnlfMiIsImdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludCQxIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhJDEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3NjYyIsImdldF9iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2ZfcyQxIiwiZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzJDEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzIiwiZ2V0X2JhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzJDEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGgkMSIsImdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseSQxIiwiZ2V0X2JhY2tkb29yX3RpbWluZyIsImdldF9iYWNrZG9vcl9maWxlIiwiZ2V0X2JhY2tkb29yX2RpcmVjdG9yeSIsImdldF9wcm9maWxlciIsImdldF9jb21wcmVzc2lvbl9zdGF0dXNfbG9nZ2VyIiwiZ2V0X2thc2Ffc3RhdGUiLCJzZXRfcHJpbnRfZWZmaWNpZW5jeSIsImdldF9wcmludF9lZmZpY2llbmN5Iiwic2V0X2xvZ2dlciIsInNhdmVfZXJyb3JfbGlzdCIsInNhdmVfcHJvZ3Jlc3NfYmFyIiwiYmFyIiwicmVzZXRfcHJvZ3Jlc3NfYmFyIiwic2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIiwicmVzZXRfY3VycmVudF9waGFzZV90aXRsZSIsImRlZmF1bHQkMCIsImNvbWJpbmUiLCJsMSIsImwyIiwibGlzdCIsImExIiwiYTIiLCJvcHRpb25zIiwiZ2V0X29wdGlvbiIsInRpdGxlIiwiaW5wdXQiLCJidWlsZF9rYXNhX3BhcmFtZXRlcnMiLCJ0X2NvbW1vbiIsImRvdF9jb21tZW50IiwiZG90X3RvX3BkZiIsImhlYWQiLCJxIiwiaGVhZF9pbmZsdWVuY2VfbWFwX2luX2RvdCIsImhlYWRfY29udGFjdF9tYXBfaW5fZG90Iiwib3V0cHV0IiwiYWN0aW9ucyIsInN5bnRheCIsInRyYWNlcyIsImNvbnRhY3RfbWFwIiwiaW5mbHVlbmNlX21hcCIsImZsb3ciLCJkZWJ1ZyIsImVtcHR5X2Vycm9yX2hhbmRsZXIiLCJpc19lbXB0eV9lcnJvcl9oYW5kbGVyIiwid2Fybl9hdXgiLCJwYXJhbWV0ZXJzIiwiZXJyb3JfaGFuZGxlciIsInRvX3VpIiwiZmlsZV9uYW1lIiwibWVzc2FnZSIsImV4biIsImRlZmF1bHQkMCIsInVuY2F1Z2h0JDAiLCJkZnQiLCJlcnJvciIsInVuY2F1Z2h0Iiwic3RyaW5nbGlzdCIsIndhcm5fd2l0aF9leG4iLCJvcHQiLCJsaW5lIiwiZmlsZSIsInN0aCIsInN0aCQwIiwicG9zIiwibGlhaXNvbiIsInMiLCJwb3MkMCIsIndhcm4iLCJmaWxlX2xpbmUiLCJwcmludF9mb3JfS2FTaW0iLCJoYW5kbGVycyIsInBhcmFtZXRlcnMkMCIsImNhdWdodCIsInByaW50IiwicHJpbnRfZXJyb3JzX2xpZ2h0X2Zvcl9rYXNpbSIsIndyYXAiLCJzdHJpbmciLCJzdHJpbmdfb3B0IiwiY2hlY2tfcG9pbnQiLCJwYXJhbWV0ZXIiLCJlcnJvciQwIiwiZXJyb3IkMSIsImZvcl9LYVNpbSIsImYiLCJsaWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSIsImEiLCJiIiwibGlmdF9nZW5lcmljX2JpbmFyeV9iaW5hcnlfZm9yIiwiYyIsImIkMCIsImxpZnRfZ2VuZXJpY190ZXJuYXJ5X2Zvcl9LYVNpbSIsImxpZnRfZ2VuX3VuYXJ5IiwiZHVtcCIsIm91dHB1dCIsImxpZnRfZ2VuX2JpbmFyeSIsImxpZnRfZ2VuX3Rlcm5hcnkiLCJsaWZ0X3dpdGhfb25fdGhlX2ZseV9sb2dnaW5nX3UiLCJsaWZ0X3dpdGhfb25fdGhlX2ZseV9sb2dnaW5nX2IiLCJsaWZ0X3dpdGhfb25fdGhlX2ZseV9sb2dnaW5nX3QiLCJsaWZ0X3dpdGhvdXRfbG9nZ2luZ191bmFyeSIsImxpZnRfd2l0aG91dF9sb2dnaW5nX2JpbmFyeSIsImxpZnRfd2l0aG91dF9sb2dnaW5nX3Rlcm5hcnkiLCJzdHJpbmdfb2Zfc3RlcF9raW5kIiwieCIsImludCQwIiwiaW50JDEiLCJzdHJpbmciLCJpbnQkMiIsImludCQzIiwiaW50JDQiLCJpbnQkNSIsInN0cmluZyQwIiwic3RyaW5nJDEiLCJwcmludF9zdGVwX2tpbmQiLCJwYXJhbWV0ZXJzIiwicHJpbnRfdGFzayIsInBhcmFtZXRlciIsImIiLCJhIiwiayIsImwiLCJvdXRwdXQiLCJxIiwidCIsIm91dHB1dCQwIiwiayQwIiwiayQxIiwib3V0cHV0JDEiLCJvdXRwdXQkMiIsImskMiIsImIkMCIsInRhYiIsImkiLCJpJDAiLCJ0aW1lIiwiY2xvc2VfbG9nZ2VyIiwiZmx1c2hfbG9nZ2VyIiwiaXNfZHVtbXkiLCJzdGVwX2tpbmQiLCJhZGRfZXZlbnQiLCJlcnJvciIsImYiLCJsb2dfaW5mbyIsImVycm9yJDAiLCJuZXh0X2RlcHRoIiwiZiQwIiwidGFzayIsInRlcm1pbmF0ZWRfdGFzayIsImN1cnJlbnRfdGFzayIsImNsb3NlX2V2ZW50IiwibG9nX2luZm8kMCIsImVycm9yJDEiLCJpbnRlcnJ1cHRlZCIsImVycm9yJDIiLCJ0YWlsIiwidGFpbCQwIiwidGVybWluYXRlZF90YXNrJDAiLCJsb2dfaW5mbyQxIiwic2l6ZV9hZnRlciIsImdlbl9vcHQiLCJnZW4iLCJlIiwiYWRkX2V2ZW50X29wdCIsImNsb3NlX2V2ZW50X29wdCIsInByb3BhZ2F0aW9uX2xhYmVscyIsInByb3BhZ2F0aW9uX2Nhc2VzIiwiY29weSIsImluaXRfbG9nX2luZm8iLCJsb2dfaW5mb190b19qc29uIiwiZmxvYXRfb2ZfanNvbiIsImludF9vZl9qc29uIiwibG9nX2luZm9fb2ZfanNvbiIsImluaXQiLCJkdW1wX3Nob3J0X2xvZyIsInJlc2V0X2xvZyIsImxvZyIsImVsbGFwc2VkX3RpbWUiLCJlbGxhcHNlZF9nbG9iYWxfdGltZSIsInNldF90aW1lIiwic2V0X3N0ZXBfdGltZSIsInNldF9zdG9yeV9yZXNlYXJjaF90aW1lIiwic3QiLCJzZXRfY29uY3VycmVudF9ldmVudF9kZXRlY3Rpb24iLCJzZXRfY29uY3VycmVudF9ldmVudF9kZWxldGlvbl8iLCJzZXRfZ3JpZF9nZW5lcmF0aW9uIiwic2V0X2Nhbm9uaWNhbGlzYXRpb24iLCJhZGRfY2FzZSIsImFkZF9sb29rX2Rvd25fY2FzZSIsImFkZF9sb29rX3VwX2Nhc2UiLCJhZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIiwiYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAiLCJpbmNfY3V0IiwiaW5jX2JyYW5jaCIsImluY19uX2thc2ltX2V2ZW50cyIsImluY19uX29ic19ldmVudHMiLCJpbmNfbl9zaWRlX2V2ZW50cyIsImluY19uX2luaXRfZXZlbnRzIiwiaW5jX2N1dF9ldmVudHMiLCJpbmNfa19jdXRfZXZlbnRzIiwicmVzZXRfY3V0X2V2ZW50cyIsImluY19zZWxlY3RlZF9ldmVudHMiLCJpbmNfcmVtb3ZlZF9ldmVudHMiLCJkdW1wX2NvbXBsZXRlX2xvZyIsImxvZ2dlciIsInRpY2siLCJzZXRfZ2xvYmFsX2N1dCIsIm4iLCJzZXRfcHNldWRvX2ludiIsImxpZnQiLCJmIiwiZW1wdHkiLCJpc19lbXB0eSIsInNpbmdsZXRvbiIsImlzX3NpbmdsZXRvbiIsImFkZCIsImFkZF93aGVuX25vdF9pbiIsInAiLCJlIiwieCIsInMiLCJzJDAiLCJlJDAiLCJyZW1vdmUiLCJ1bmlvbiIsImRpc2pvaW50X3VuaW9uIiwiaW50ZXIiLCJkaWZmIiwibWludXMiLCJjYXJkaW5hbCIsIm1lbSIsImV4aXN0cyIsImZpbHRlciIsImZvcl9hbGwiLCJwYXJ0aXRpb24iLCJjb21wYXJlIiwiZXF1YWwiLCJzdWJzZXQiLCJpdGVyIiwiZm9sZCIsImZvbGRfaW52IiwiZWxlbWVudHMiLCJjaG9vc2UiLCJtaW5fZWx0IiwibWF4X2VsdCIsImVtcHR5JDAiLCJpc19lbXB0eSQwIiwibWluX2VsdCQwIiwibWVtJDAiLCJmaW5kX29wdGlvbiIsImEiLCJiIiwiYyIsImQiLCJmaW5kX2RlZmF1bHQiLCJmaW5kX29wdGlvbl93aXRob3V0X2xvZ3MiLCJmaW5kX2RlZmF1bHRfd2l0aG91dF9sb2dzIiwiYWRkJDAiLCJvdmVyd3JpdGUiLCJwYXJhbWV0ZXIiLCJlcnJvciIsIm1hcCIsImJvb2wiLCJlcnJvciQwIiwiYWRkX29yX292ZXJ3cml0ZSIsInJlbW92ZSQwIiwicmVtb3ZlX29yX25vdCIsInVwZGF0ZSIsIm1hcDIiLCJtYXAyeiIsImZvbGQyeiIsImZvbGQyIiwiaXRlcjIiLCJnIiwiaCIsIm1hcGYiLCJtYXBnIiwiZm9sZDJfc3BhcnNlIiwiaXRlcjJfc3BhcnNlIiwiZGlmZiQwIiwiZGlmZl9wcmVkIiwibWVyZ2UiLCJ1bmlvbiQwIiwiZm9sZF9yZXN0cmljdGlvbiIsImZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nXyIsIml0ZXIkMCIsImZvbGQkMCIsIm1hcGkiLCJmb3JfYWxsJDAiLCJmaWx0ZXJfb25lIiwiY29tcGFyZSQwIiwiZXF1YWwkMCIsImJpbmRpbmdzIiwidG9fanNvbiIsIm9mX2pzb24iLCJwcm9qX21hcCIsImlkZW50aXR5X2VsdCIsImtleV9hIiwiZGF0YV9hIiwibWFwX2IiLCJrZXlfYiIsIm9sZCIsIm1vbmFkaWNfcHJval9tYXBfaSIsImVycm9yJDEiLCJkYXRhIiwiZXJyb3IkMiIsImRhdGEkMCIsImVycm9yJDMiLCJtb25hZGljX3Byb2pfbWFwIiwicGFydGl0aW9uX3NldCIsInNldCIsIm5ld3NldCIsIm1vbmFkaWNfcGFydGl0aW9uX3NldCIsInByb2pfc2V0Iiwic2V0X2EiLCJzZXRfYiIsIm1vbmFkaWNfcHJval9zZXQiLCJwcm9qMiIsImtleV9jIiwic3VibWFwIiwic3VibWFwJDAiLCJwcm9qMl9tb25hZGljIiwiaGFuZGxlciIsIm12YmR1X2hhbmRsZXIiLCJoYW5kbGVyJDAiLCJoYW5kbGVyJDEiLCJtdmJkdV9oYW5kbGVyJDAiLCJoYW5kbGVyJDIiLCJoYW5kbGVyJDMiLCJoYW5kbGVyJDQiLCJsb2NhbF90cmFjZSIsInBvb2wiLCJwdXNoIiwib3V0X2xpc3QiLCJpbl9saXN0IiwiYWRkX2VsdCIsImZvbGRfbGVmdCIsImFjYyIsInByaW50X3dsIiwicGFyYW1ldGVycyIsIndsIiwiaSIsInBvcCIsIngkMCIsInRsIiwicmVtb3ZlX2VsdCIsIngkMSIsImludmFsaWRfYXJnIiwibWgiLCJwb3MiLCJleG4iLCJ2YWx1ZSIsImRpbWVuc2lvbiIsImtleV9saXN0IiwicGFyZW1ldGVycyIsInQiLCJzaXplIiwiYXJyYXkiLCJrIiwic29sIiwic29sJDAiLCJrJDAiLCJrJDEiLCJjcmVhdGUiLCJjcmVhdGVfYmlnZ2VzdF9rZXkiLCJleHBhbmRfYW5kX2NvcHkiLCJkaW1lbnNpb24kMCIsImFycmF5JDAiLCJrZXkiLCJpbml0IiwiYXJyYXkkMiIsImVycm9yJDQiLCJhcnJheSQxIiwiZ2V0IiwiZnJlZSIsInVuc2FmZV9nZXQiLCJwcmludCIsInByaW50X2VsdCIsImVsdCIsInBhcmFtZXRlcnMkMCIsImkkMCIsInJlbWFuZW50JDEiLCJyZW1hbmVudCIsInJlbWFuZW50JDAiLCJmb2xkX3dpdGhfaW50ZXJydXB0aW9uIiwib3V0cHV0X29wdCIsImZvbGQyX2NvbW1vbiIsInQxIiwidDIiLCJhcnJheTEiLCJhcnJheTIiLCJ4MiIsIngxIiwicmVtYW5lbnQkNCIsIngyJDAiLCJyZW1hbmVudCQyIiwiayQyIiwicmVtYW5lbnQkMyIsImskMyIsImZyZWVfYWxsIiwib2xkX2RpbWVuc2lvbiIsIm1hdHJpeCIsIm1hdHJpeCQwIiwiZXh0X2xpc3QiLCJsaXN0IiwidDIkMCIsImwyIiwia2V5MiIsImRpbSIsImoiLCJvbGRfdW5kZXJseWluZyIsIm9sZF91bmRlcmx5aW5nJDAiLCJvbGRfdW5kZXJseWluZyQxIiwib2xkX3VuZGVybHlpbmckMiIsIm5ld191bmRlcmx5aW5nIiwibmV3X21hdHJpeCIsInVuZGVybHlpbmciLCJ1bmRlcmx5aW5nJDAiLCJwcmludF9vZiIsImZvbGRfZ2VuIiwiZm9sZDEiLCJiJDAiLCJjJDAiLCJiYXNpYyIsIm4iLCJrZXlzIiwibmV3X2FycmF5IiwibmV3X2Jhc2ljIiwiaW0iLCJpbSQwIiwibCIsInQkMCIsIm91dHB1dCQxIiwibGlzdCQwIiwib3V0cHV0IiwidGFpbCIsImhlYWQiLCJvdXRwdXQkMCIsImZpbmRTZXQiLCJwYXJlbnQiLCJyb290IiwibCQwIiwiZ2V0X3JlcHJlc2VudGVudCIsInVuaW9uX2xpc3QiLCJ0b192aXNpdCIsInQkMSIsInRvX3Zpc2l0JDAiLCJhJDAiLCJ0b192aXNpdCQxIiwidCQyIiwicm9vdF94Iiwicm9vdF95IiwidW5pb25fYXJyYXkiLCJpdGVyaSIsImZzdF9vcHRpb24iLCJzbmRfb3B0aW9uIiwiZXNjYXBlX2xhYmVsX2luX2RvdCIsIm1ha2VfaWRfY29tcGF0aWJsZV93aXRoX2RvdF9mbyIsInN0cmluZyIsInRhYiIsInBvcyQyIiwiY2hhciQwIiwibGlzdGVfY2hhciIsInBvcyQwIiwibCQxIiwicG9zJDEiLCJzb3J0ZWRfcGFydHNfb2ZfbGlzdCIsImF1eCIsInN1ZmZpeCIsImxpc3QkMSIsInNvcnRfbGlzdCIsInJlZmluZWRfbGlzdCIsImtleSQwIiwicmVmaW5lZF9zb3J0ZWRfbGlzdCIsImNvbnN0X3VuaXQiLCJhcnJheV9vZl9saXN0IiwicSIsImEkMSIsInVuc29tZSIsInRyYWNlIiwiaW50ZXJfbGlzdCIsImwxJDEiLCJsMiQxIiwibDEiLCJyZXAiLCJsMiQwIiwibDEkMCIsInJlcCQwIiwibGlzdF8wX24iLCJsaXN0X21pbnVzIiwicTIiLCJxMSIsInExJDAiLCJwcmludF9jb21tYSIsImNvbW1hIiwiZmV0Y2hfYXJyYXkiLCJkZWYiLCJpJDEiLCJhc3NvIiwiaW50JDAiLCJmaW5kX29wdGlvbl9sb2dfb25fdGhlX2ZseSIsIm5vZGVfb2ZfaW50IiwiaW50X29mX25vZGUiLCJub2RlX29mX25vZGVfbGFiZWwiLCJub2RlX2xpc3QiLCJlZGdlX2xpc3QiLCJtIiwibWF4X25vZGUiLCJub2RlcyIsIm5vZGVzJDAiLCJlZGdlcyIsImVkZ2UiLCJuMiIsImxhYmVsIiwibjEiLCJlZGdlcyQwIiwiY29tcHV0ZV9zY2MiLCJsb3ciLCJwcmUiLCJvbl9zdGFjayIsIm5fdG9fc3RyaW5nIiwiZ3JhcGgiLCJvbl9zdGFjayQwIiwicHJlJDAiLCJsb3ckMCIsIm9uX3N0YWNrJDEiLCJwcmUkMSIsImxvdyQxIiwiZXJyb3IkOCIsImxvdyQ0IiwibG93JDUiLCJlcnJvciQ5IiwibG93JDYiLCJlcnJvciQxNCIsInByZSQ0IiwicHJlJDUiLCJlcnJvciQxMCIsInByZSQ2IiwiZXJyb3IkMTMiLCJvbl9zdGFjayQ0Iiwib25fc3RhY2skNSIsImVycm9yJDExIiwib25fc3RhY2skNiIsImVycm9yJDEyIiwic2NjX2xpc3QiLCJzdGFjayIsImNvdW50ZXIiLCJ2Iiwic3RhY2skMCIsImNvdW50ZXIkMCIsImVkZ2VzX3YiLCJ3IiwicHJlX3ciLCJzY2NfbGlzdCQwIiwibG93X3YiLCJsb3dfdyIsImVycm9yJDUiLCJzdGFjayQxIiwic2NjX2xpc3QkMSIsImNvdW50ZXIkMSIsImxvdyQyIiwiZXJyb3IkNiIsImxvd192JDAiLCJlcnJvciQ3IiwicHJlX3ckMCIsImxvdyQzIiwicHJlX3YiLCJvbl9zdGFjayQyIiwic3RhY2skMiIsImNjIiwic3RhY2skMyIsIm9uX3N0YWNrJDMiLCJjYyQwIiwicHJlJDIiLCJwcmUkMyIsImFkZF9icmlkZ2VzIiwic2NjIiwic3RyaW5nX29mX24iLCJzdHJpbmdfb2ZfZSIsImJyaWRnZXMiLCJzY2MkMCIsInNjYyQxIiwic2NjJDQiLCJub2RlIiwibiQwIiwic2NjJDIiLCJuaSIsInNjY2kiLCJzY2NpJDAiLCJzY2NpJDEiLCJuaiIsInNjY2oiLCJzY2NqJDAiLCJzY2NqJDEiLCJuc3RyaW5naSIsIm5zdHJpbmdqIiwiYnJpZGdlcyQwIiwic2NjJDMiLCJpbnZhbGlkIiwiUE9TIiwibWVzc2FnZSIsImludmFsaWRfYXJnX2Jvb2wiLCJtZW1iZXIiLCJkaWN0aW9uYXJ5IiwiaW5fY29uc3RydWN0aW9uIiwic3RhYmlsaXplIiwiYXNzbyQwIiwidHJhbnNsYXRlIiwiZGljdGlvbmFyeSQwIiwic3RhYmlsaXplZCIsImFsbG9jYXRlX3VuaXF1ZWx5X29yX25vdCIsInVuaXF1ZWx5IiwiYnVpbGQiLCJmcmVzaCIsImFzc29faWQkMSIsImhhc2hfdGFibGUiLCJoYXNoIiwiZGljdGlvbmFyeSQxIiwiYXNzb19pZCIsImFzc29faWQkMCIsImFsbG9jYXRlIiwiYWEiLCJhbGxvY2F0ZV91bmlxdWVseSIsImFsbG9jYXRlX2Jvb2wiLCJ1bnNhZmVfYWxsb2NhdGUiLCJkaWMiLCJkaWMkMCIsImxhc3RfZW50cnkiLCJ0aWNrX3N0b3JpZXMiLCJmIiwiY29uZiIsInNhdmVfcHJvZ3Jlc3NfYmFyIiwibl9zdG9yaWVzIiwiY291bnRlciIsImxhc3QiLCJpbml0IiwiYyIsIm4iLCJuYyIsIm5sIiwibiQwIiwiYmFyIiwibiQxIiwidGljayQwIiwidGljayIsImNvbmZpZ19iaWdfZ3JhcGhfd2l0aF9wcm9ncmVzcyIsImNvbmZpZ19zbWFsbF9ncmFwaCIsImNvbmZpZ19iaWdfZ3JhcGhfd2l0aG91dF9wcm9nciIsImlnbm9yZV9mbG93X2Zyb21fb3V0Z29pbmdfc2lwaCIsImNoZWNrX21vZGUiLCJzd2FwIiwiYSIsImIiLCJpZ25vcmVfZnN0IiwiY29tcGFyZV9zdWNjIiwicCIsImwiLCJsJDAiLCJxIiwic3RyaWN0bHlfaW5jcmVhc2luZyIsInN0cmljdGx5X2RlY3JlYXNpbmciLCJjb25jYXQiLCJwcmludF9saXN0IiwiY2hlY2siLCJmb3JtIiwic3RyaW5nIiwicmVwIiwiaXNfc3RyaWN0X3N1Ymxpc3QiLCJhJDAiLCJiJDAiLCJoIiwidCIsImgkMCIsInQkMCIsInQkMSIsImluc2VydF9lbHQiLCJlIiwiZGlmZl9saXN0IiwiYWNjdSIsImFjY3UkMCIsImNvbXBhcmVfYm9vbCIsImRpZmZfbGlzdF9kZWNyZWFzaW5nIiwieCIsInkiLCJtZXJnZV9saXN0X2RlY3JlYXNpbmciLCJjbG9zdXJlX2JvdHRvbV91cF93aXRoX2ZvbGQiLCJwYXJhbWV0ZXIiLCJoYW5kbGVyIiwibG9nX2luZm8iLCJlcnJvciIsImV2ZW50IiwiY29uZmlnIiwicHJlYyIsImlzX29icyIsImVycl9sb2dnZXIiLCJpc19vYnMkMCIsImkiLCJtYXhfaW5kZXgiLCJuX2VkZ2VzIiwiZiQwIiwiY2xvc2UiLCJjbG9zZV90aWNrIiwidGljayQxIiwiZG9fdGljayIsImNsb3NlX3RpY2skMCIsImRvX3RpY2skMCIsInNfcHJlZF9zdGFyIiwibWF4X3N1Y2MiLCJzdWNjIiwicHJlZCIsImlzX2xhc3Rfc3VjY19vZiIsImFkZCIsIm5vZGUiLCJvbGRfbCIsImxvZ19pbmZvJDAiLCJlcnJvciQwIiwic19wcmVkIiwiaiIsImxfcHJlZCIsInByZWRfc3RhciIsIm5ld19sIiwiZGlmZiIsImsiLCJvdXRwdXQiLCJjbG9zdXJlX2JvdHRvbV91cCIsImV2ZW50X29wdCIsInMiLCJncmFwaCIsImNsb3N1cmVfdG9wX2Rvd24iLCJkZWx0YSIsInByZWMkMCIsIm1lcmdlX3RhaW50cyIsImwxIiwibDIiLCJxJDAiLCJ0YWludGluZyIsIm91dHB1dCQxIiwiZGVsdGEkMCIsIm91dHB1dCQwIiwiZGVsdGEkMSIsIm5ld190YWludCIsInRhaW50cyIsInRhaW50Iiwic2hpZnRlZF90YWludHMiLCJnZXRfbGlzdF9pbl9pbmNyZWFzaW5nX29yZGVyX3ciLCJtb2RlIiwibSIsImNsb3N1cmVfY2hlY2siLCJsb2dfaW5mbyQxIiwiZXJyb3IkMSIsInMkMCIsInMkMSIsImNsb3N1cmUiLCJyZWR1Y3Rpb25fdG9wX2Rvd24iLCJwcmVjX3N0YXIiLCJlaWQiLCJuZWlnaCIsIm91dCIsInRvX3JlbW92ZSIsImwxJDAiLCJsMiQwIiwibDEkMSIsImNtcCIsImwxJDIiLCJzZXQiLCJsb2dfaW5mbyQyIiwiZXJyb3IkMiIsImF0b21fdGVzdGVkIiwiYXRvbV9tb2RpZmllZCIsImVtcHR5X2NvbmZpZyIsInByaW50X2V2ZW50X2tpbmQiLCJlbnYiLCJkZWJ1Z19wcmludF9jYXVzYWwiLCJkZWJ1Z19wcmludF9hdG9tIiwiZGVidWdfcHJpbnRfZ3JpZCIsImciLCJzaXRlX2lkIiwibm9kZV9pZCIsImVtcHR5X2dyaWQiLCJncmlkX2ZpbmQiLCJncmlkIiwicXVhcmsiLCJpc19saW5rIiwidmEiLCJldmVudF9udW1iZXIiLCJraW5kIiwiYXR0JDAiLCJhdHQiLCJhdHRyaWJ1dGUiLCJwaWQiLCJlaWRfaW5pdCIsIm9sZCIsImFkZF9hY3Rpb25zIiwiYWN0aW9ucyIsImdyaWQkMCIsInNpdGUiLCJxJDEiLCJzaXRlMiIsInNpdGUxIiwiZ3JpZCQ0IiwicSQyIiwic2l0ZTEkMCIsInEkMyIsInNpdGUkMCIsImFnIiwibmEiLCJzaWdzIiwiYWdfaW50ZiIsImdyaWQkMSIsImFnJDAiLCJuYSQwIiwic2lncyQwIiwiZ3JpZCQyIiwiYWRkX3Rlc3RzIiwidGVzdHMiLCJyZWNvcmQiLCJyZWNvcmRfb2JzIiwic2lkZV9lZmZlY3RzIiwicmVjb3JkX2luaXQiLCJsYmwiLCJjdXQiLCJvcHQiLCJhdHRyaWJ1dGVfaWRzIiwic3RoIiwid2l0aF9yZWR1Y3Rpb24iLCJhdHRyaWJ1dGVfaWRzJDAiLCJjZmciLCJhdHRyaWJ1dGVfaWRzJDEiLCJ0eXBlX2kiLCJzaXRlX2kiLCJub2RlX2kiLCJhdHRyaWJ1dGUkMSIsImF0dHJpYnV0ZSQyIiwiYXRvbSQwIiwiZXZlbnRzX2tpbmQkMSIsInByZWRzJDAiLCJwcmVjXzEkMCIsImxhc3RfdGVzdGVkJDIiLCJsYXN0X21vZGlmJDEiLCJjb25maWckMyIsImxhc3RfbW9kaWYiLCJsYXN0X3Rlc3RlZCIsImF0dHJpYnV0ZSQwIiwiYXRvbSIsImV2ZW50c19raW5kJDAiLCJwcmVkcyIsInByZWNfMSIsImNvbmZpZyQwIiwiZXZlbnRzX2tpbmQiLCJjZmxjdF9zZXQiLCJjZmxjdCIsImNvbmZpZyQyIiwibGFzdF90ZXN0ZWQkMSIsInByZWRfaWQiLCJwcmVkX3NldCIsImNvbmZpZyQxIiwibGFzdF90ZXN0ZWQkMCIsImxhc3RfbW9kaWYkMCIsImNmZyQwIiwicmVkdWN0aW9uIiwicmVkdWN0aW9uJDAiLCJpZHNfb2ZfZ3JpZCIsImtleSIsInByZWNfc3Rhcl9vZl9jb25maWciLCJlbnJpY2hfZ3JpZCIsImNvbmZpZ19jbG9zdXJlIiwia2VlcF9sIiwidG9fa2VlcCIsImlkcyIsInByZWNfZWlkcyIsImVtYXAiLCJkIiwiZCQwIiwiZGVwdGgiLCJkZXB0aF9vZl9ldmVudCIsImZvbGRfb3Zlcl9jYXVzYWxfcGFzdF9vZl9vYnMiLCJjaGVja19jcmVhdGVfcXVhcmtzIiwiYWlkIiwic2l0ZXMiLCJxdWFya3MiLCJpbnRlcm5hbCIsImNoZWNrX21vZGlmaWVkX3F1YXJrcyIsIm1vZGlmIiwiY2hlY2tfdGVzdGVkX3F1YXJrcyIsImNoZWNrX2V2ZW50X3F1YXJrcyIsImFzaXRlIiwiYXNpdGUkMCIsImFpZCQwIiwiYXNpdGUyIiwiYXNpdGUxIiwicHJldHR5X3ByaW50IiwiZG90Rm9ybWF0IiwiY29tcHJlc3Npb25fdHlwZSIsImxhYmVsIiwiZ3JpZF9saXN0IiwiZXJyX2ZtdCIsImNvbXByZXNzaW9uX3R5cGUkMCIsInoiLCJsaXN0IiwieCQwIiwic3RvcnlfbGlzdCIsInN0b3J5X2xpc3QkMCIsImNwdCIsInN0b3JpZXMiLCJlbnJpY2hlZF9jb25maWciLCJzdGVwcyIsImluZm8iLCJhdl90IiwiZ3JpZF9zdG9yeSIsInRibCIsImF0dF9scyIsImRtYXAiLCJzb3J0ZWRfZXZlbnRzIiwibm9kZV90b19qc29uIiwiZXZlbnRfa2luZCIsInN0cCIsInJpZCIsInJpZCQwIiwic3RwJDAiLCJzdHAkMSIsInBlcnQiLCJwZXJ0JDAiLCJzdHAkMiIsImVpZHNfYXRfZCIsImxzIiwibHMkMCIsIm5vZGVzX3RvX2xpc3QiLCJub2Rlc190b19qc29uIiwiZWRnZV90b19qc29uIiwiZWlkJDAiLCJwcmVjX2VkZ2VzIiwicHJlY19lZGdlc190b19qc29uIiwicHJlYyQxIiwicHJlYyQyIiwiYm9vbCIsImNvbmZsX2VkZ2VzIiwiY29uZmxfZWRnZXNfdG9fanNvbiIsInByb2ZpbGluZyIsImRlc2MiLCJ0aXRsZSIsImF0b21fa2luZCIsInByb2ZpbGluZyQwIiwibmFtZSIsInN0b3J5Iiwic2l6ZSIsInRpbWUiLCJwcmludF9zdGF0IiwiZW5yaWNoZWRfZ3JpZCIsImNvdW50X29icyIsIm5fc3RlcCIsImxvbmdlc3Rfc3RvcnkiLCJuX25vbmVtcHR5IiwibGVuZ3RoX3N1bSIsImxlbmd0aF9zcXVhcmVfc3VtIiwiY2MiLCJjYyQwIiwibGVuZ3RoX3NxdWFyZV9zdW0kMCIsImxlbmd0aF9zdW0kMCIsIm5fbm9uZW1wdHkkMCIsImxvbmdlc3Rfc3RvcnkkMCIsIm5fc3RlcCQwIiwiayQwIiwic3RyaW5nX29mX3ByZWRpY2F0ZV9pbmZvIiwicGkiLCJhZyQxIiwiY29tcGFyZSIsInByaW50IiwiZW1wdHkiLCJpdGVyIiwiaGFzaCIsInByZWRpY2F0ZSIsImxpZnQiLCJwcmVkaWNhdGVfaWQiLCJ0YWIiLCJmaW5kX2RlZmF1bHQiLCJkZWYiLCJmaW5kX29wdGlvbiIsIm1lbSIsInJlY3ljbGUiLCJwcmVkaWNhdGVfbWF4IiwiZW1wdHkkMCIsIml0ZXIkMCIsImZpbmRfZGVmYXVsdCQwIiwiZmluZF9vcHRpb24kMCIsIm1lbSQwIiwiYWRkJDAiLCJjYXVzYWwiLCJ3ZWFrIiwic3Ryb25nIiwibWluX2xldmVsIiwiaGlnaGVzdCIsImhpZ2giLCJhYm92ZV9hdmVyYWdlIiwiYXZlcmFnZSIsImJlbGxvd19hdmVyYWdlIiwibG93IiwibG93ZXN0Iiwic3RyaW5nX29mX2xldmVsIiwibGV2ZWwiLCJsb3dlciIsImhpZ2hlciIsIm5fc3RvcnkiLCJuX2JyYW5jaCIsInN0YXJ0IiwiaW5wcm9ncmVzcyIsInN1Y2Nlc3MiLCJmYWlsbHVyZSIsImludF9vZl9qc29uIiwibWVzc2FnZV90b19qc29uIiwicHJvZ3Jlc3NfYmFyIiwib25lX2NvbXByZXNzaW9uIiwibG9nX2luZm9fdG9fanNvbiIsIm5ld19zdG9yeSIsImludCQwIiwibWVzc2FnZV9vZl9qc29uIiwieCQzIiwibG9nX2luZm9fb2ZfanNvbiIsImwkMSIsImwkMiIsIngkMSIsImwkMyIsIngkMiIsInAkMCIsImdldF9jYXVzYWxfdHJhY2UiLCJnZXRfY2F1c2FsX3RyYWNlX29ubHkiLCJnZXRfd2Vha19jb21wcmVzc2lvbiIsImdldF9zdHJvbmdfY29tcHJlc3Npb24iLCJnZXRfY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIiwiYnVpbGRfcGFyYW1ldGVyIiwiY2FsbGVkX2Zyb20iLCJub25lIiwic2VuZF9tZXNzYWdlIiwibG9nX3N0ZXBfY2hhbm5lbCQwIiwib3V0X2NoYW5uZWxfcHJvZmlsaW5nJDAiLCJvdXRfY2hhbm5lbF9lcnIkMCIsIm91dF9jaGFubmVsJDAiLCJvdXRfc2VydmVyIiwic2VydmVyIiwiY2hhbm5lbCIsImxvZ19zdGVwX2NoYW5uZWwkMSIsIm91dF9jaGFubmVsX3Byb2ZpbGluZyQxIiwib3V0X2NoYW5uZWxfZXJyJDEiLCJvdXRfY2hhbm5lbCQxIiwib3V0X3NlcnZlciQwIiwic2V0X2NvbXByZXNzaW9uX3dlYWsiLCJzZXRfY29tcHJlc3Npb25fc3Ryb25nIiwic2V0X2NvbXByZXNzaW9uX25vbmUiLCJpbml0X2hhbmRsZXIiLCJuX3J1bGVzIiwicnVsZV9uYW1lX2NhY2hlIiwiciIsIm5fYWdlbnRzIiwiYWdlbnRfbmFtZV9jYWNoZSIsInN0ZXBzX2J5X2NvbHVtbiIsInN0cmluZ19vZl9leG4iLCJnZXRfcHJpb3JpdGllcyIsInNldF9maXJzdF9zdG9yeV9wZXJfb2JzIiwic2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMiLCJnZXRfYWxsX3N0b3JpZXNfcGVyX29icyIsImdldF9kZWJ1Z2dpbmdfbW9kZSIsInNldF9kZWJ1Z2dpbmdfbW9kZSIsImdldF9sb2dfc3RlcCIsInNldF9sb2dfc3RlcCIsImdldF9sb2dnZXIiLCJzZXRfbG9nZ2VyIiwiZm10IiwiZ2V0X291dF9jaGFubmVsIiwic2V0X291dF9jaGFubmVsIiwiZ2V0X2RlYnVnZ2luZ19jaGFubmVsIiwic2V0X2RlYnVnZ2luZ19jaGFubmVsIiwiZ2V0X2thc2FfcGFyYW1ldGVycyIsInNldF9rYXNhX3BhcmFtZXRlcnMiLCJwYXJhbWV0ZXIkMCIsImRvX3dlX3VzZV9idWNrZXRfc29ydCIsInVzZV9idWNrZXRfc29ydCIsInVzZV9mdXNpb25fc29ydCIsImFsd2F5c19kaXNhbWJpZ3VhdGUiLCJzZXRfYWx3YXlzX2Rpc2FtYmlndWF0ZSIsImRvX25vdF9ib3VuZF9pdHRlcmF0aW9ucyIsInNldF9pdHRlcmF0aW9uX2JvdW5kIiwiZ2V0X2JvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyIiwiZ2V0X3Byb2ZpbGluZ19sb2dnZXIiLCJzdHJpbmdfb2ZfcnVsZV9pZCIsInN0cmluZ19vZl9hZ2VudF9pZCIsImdldF9wcmVkaWNhdGVfbWFwIiwiZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQiLCJnZXRfYmxhY2tsaXN0X2V2ZW50cyIsImlzX3NlcnZlcl9tb2RlIiwiZ2V0X3NlcnZlcl9jaGFubmVsIiwic2h1dF9kb3duX3NlcnZlcl9jaGFubmVsIiwiaXNfc2VydmVyX2NoYW5uZWxfb24iLCJzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJkdW1wX2pzb24iLCJtZXNzYWdlIiwicmVzZXRfcHJvZ3Jlc3NfYmFyIiwicmVzZXRfY3VycmVudF9waGFzZV90aXRsZSIsInNldF9zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJzZXRfcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSIsInNldF9zYXZlX3Byb2dyZXNzX2JhciIsInNldF9yZXNldF9wcm9ncmVzc19iYXIiLCJzYXZlX2Vycm9yX2xvZyIsInNldF9zYXZlX2Vycm9yX2xvZyIsInB1c2hfanNvbiIsImpzb24iLCJyZWYiLCJwb3BfanNvbiIsImVsdF9vcHQiLCJmaWZvIiwiZGVidWdfbW9kZSIsImNvbXBvc2Vfd2l0aF9oYW5kbGVyIiwiZW1wdHlfc2lkZV9lZmZlY3QiLCJzaXRlX25hbWVfb2ZfYmluZGluZ190eXBlIiwiYWdlbnRfbmFtZV9vZl9iaW5kaW5nX3R5cGUiLCJhZ2VudF9pZF9vZl9hZ2VudCIsImFnZW50X25hbWVfb2ZfYWdlbnQiLCJhZ2VudF9vZl9zaXRlIiwiYWdlbnRfaWRfb2Zfc2l0ZSIsImFnZW50X25hbWVfb2Zfc2l0ZSIsInNpdGVfbmFtZV9vZl9zaXRlIiwiZ2V0X2dlbl9vZl9yZWZpbmVkX3N0ZXAiLCJnZXRfdGltZV9vZl9yZWZpbmVkX3N0ZXAiLCJnZXRfaWRfb2ZfcmVmaW5lZF9zdGVwIiwiYnVpbGRfZ3JpZCIsImVtcHR5X3NldCIsInNpZGUiLCJzdWJzIiwic2lkZV9lZmZlY3QiLCJtYXliZV9zaWRlX2VmZmVjdCIsInNlIiwidHJhbnNsYXRlIiwiaWQiLCJldmVudCQwIiwic2lkZV9lZmZlY3RzX2RzdCIsImluZm8kMCIsImV2ZW50JDEiLCJpZCQwIiwiZXZlbnQkMiIsInNpZGVfZWZmZWN0c19kc3QkMCIsImFjdGlvbnMkMCIsImluZm8kMSIsImlkJDEiLCJ0ZXN0cyQwIiwiY2xlYW5fZXZlbnRzIiwicHJpbnRfc2lkZV9lZmZlY3QiLCJsb2ciLCJzaWRlX2VmZmVjdF9vZl9saXN0IiwibGV2ZWxfb2ZfZXZlbnQiLCJwcmlvcml0eV9vcHQiLCJwcmlvcml0aWVzIiwicHJpb3JpdHkiLCJhZ19pZCIsImRpc2FtYmlndWF0ZSIsImV2ZW50X2xpc3QiLCJtYXBwaW5nIiwidXNlZCIsIm1heF9pZCIsIm1hcHBpbmckMCIsInVzZWQkMCIsIm1heF9pZCQwIiwiYSQxIiwiZXZlbnRfbGlzdF9yZXYiLCJjb252ZXJ0X2luaXQiLCJyZW1hbmVudCIsInN0ZXBfbGlzdCIsImFjdGlvbl9saXN0IiwicmVjdXIiLCJhY2MiLCJzb3VwIiwiYWNjJDIiLCJzaXRlX2xpc3QiLCJzb3VwJDAiLCJ0aGlzJDAiLCJzdGFuZGFsb25lIiwidGhpcyQxIiwibWFwIiwidSIsImFnZW50X2luZm8iLCJhc19pbml0IiwicmVzdHJpY3Rpb25fbWFwIiwiYWdpZCIsInJlc3RyaWN0aW9uIiwidW5iaW5kIiwicmVtIiwic19uYW1lIiwiYWdfaW5mbyIsImFnX2luZm8kMCIsInJlbWFuZW50JDAiLCJiaW5kIiwic3BsaXRfaW5pdCIsInJlZmluZWRfc3RlcF9saXN0IiwicmVmaW5lZF9zdGVwIiwiYWRkX2luX3Njb3BlIiwic2NvcGUiLCJvbGRfc2V0IiwibmV3X3NldCIsImRlYWxfd2l0aF90ZXN0cyIsImZpbGxfc2lwaG9uIiwicmV2X3RyYWNlIiwic2NvcGUkMSIsInNjb3BlJDAiLCJyZWZpbmVkX3N0ZXBfd2l0aF9zY29wZV9saXN0Iiwic3RhdGUiLCJzdGF0ZV9yZWYiLCJhZ19pbmZvJDEiLCJyZW1hbmVudCQxIiwic2V0JDAiLCJhZ2VudF9pZF9pbl9vYnMiLCJwcmVkaWNhdGVzX29mX3NpZGVfZWZmZWN0cyIsInNpZGVzIiwic19pZCIsImluaXRfY3V0IiwiZmluYWxpemVfY3V0IiwiY3V0X3N0ZXAiLCJuX2N1dCIsImtlcHQiLCJzZWVuIiwiYWN0aW9uIiwiaW50ZXJmYWNlJDAiLCJsaXN0JDAiLCJlbHQiLCJzZWVuJDAiLCJxMCIsImFnX2lkJDAiLCJzMiIsInMxIiwicTEiLCJ0MSIsImtlcHQkMCIsInRlc3QiLCJhZ2VudCIsInByZWRpY2F0ZV9pbmZvIiwic2VlbiQxIiwic2VlbiQyIiwiY3V0X3Jldl90cmFjZSIsInJldl9ldmVudF9saXN0IiwidHJhY2UiLCJjbGVhbiIsImNvbHVtbiIsImJsYWNrYm9hcmQiLCJ0YWlsIiwiaGVhZCIsImNvbHVtbiQwIiwiYmxhY2tib2FyZCQwIiwicG9wIiwicHJlZGljYXRlX2xpc3QiLCJibGFja2JvYXJkJDEiLCJuX3N0ZXBzIiwic3RlcCIsImJsYWNrYm9hcmQkMyIsInByZV9ldmVudCIsInRlc3RfbGlzdCIsInVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyIsImJ1aWxkX21hcF90ZXN0IiwicHJlZGljYXRlX2lkJDAiLCJwcmVkaWNhdGVfaWQkMSIsImFnX2lkJDEiLCJzaXRlX2lkJDAiLCJwcmVkaWNhdGVfaWQkMiIsImFnX2lkJDIiLCJzaXRlX2lkJDEiLCJwcmVkaWNhdGVfaWQkMyIsImFnX2lkMSIsImFnX2lkMiIsInNpdGVfaWQxIiwic2l0ZV9pZDIiLCJwcmVkaWNhdGVfaWQxIiwicHJlZGljYXRlX2lkMiIsInRlc3RfbWFwIiwiYm9vbF9jcmVhdGlvbiIsImFjdGlvbl9tYXAiLCJsaXN0MiIsImxpc3QxIiwibGlzdDEkMCIsImxpc3QyJDAiLCJhZ2VudF9uYW1lMSIsImFnZW50X25hbWUyIiwiczIkMCIsInMxJDAiLCJhZ19pZDEkMCIsImFnX2lkMiQwIiwiYWdlbnRfbmFtZTIkMCIsInNpdGVfaWQxJDAiLCJzaXRlX2lkMiQwIiwicHJlZGljYXRlX2lkMSQwIiwiYm9vbF9jcmVhdGlvbiQwIiwiYm9vbCQwIiwiYm9vbF9jcmVhdGlvbiQxIiwiYm9vbCQxIiwidmFsdWUiLCJpc19yZW1vdmVfYWN0aW9uIiwidGVzdF9tYXAkMCIsIm1lcmdlZF9tYXAiLCJtYXAkMCIsImFjdGlvbiQwIiwidGVzdCQwIiwidGVzdCQxIiwiYWN0aW9uJDEiLCJtZXJnZWRfbWFwJDAiLCJuc2lkIiwibW9kX3dpdGhvdXRfdGVzdCIsIm5fbW9kaWZpY2F0aW9ucyIsIm9sZF9saXN0IiwidiIsIm9sZF92YWx1ZSIsIm5ld192YWx1ZSIsIm1vZF93aXRob3V0X3Rlc3QkMCIsIm1vZF93aXRob3V0X3Rlc3QkMSIsImJvb2xfYWN0aW9uIiwibl9tb2RpZmljYXRpb25zJDAiLCJwcmVfc3RlcHNfYnlfY29sdW1uIiwiYmxhY2tib2FyZCQyIiwicHJlZGljYXRlX2xpc3QkMCIsInByZWRpY2F0ZV9saXN0JDEiLCJ5JDAiLCJjYW5kaWRhdGVzIiwiZWlkYiIsImVpZGEiLCJjb2x1bW4kMSIsImNvbHVtbiQyIiwidG9fcG9wIiwiZTIiLCJlMSIsImJsYWNrYm9hcmQkNCIsImJsYWNrYm9hcmQkNSIsImVycm9yJDMiLCJrJDIiLCJsaXN0JDEiLCJrJDEiLCJ3YXJuIiwicG9zIiwiZXhuIiwiZGVmYXVsdCQwIiwiemVyb19zdGVwX2lkIiwiZHVtbXlfc3RlcF9pZCIsImludF9vZl9zdGVwX2lkIiwic3RlcF9pZF9vZl9pbnQiLCJkZWNfc3RlcF9pZCIsImluY19zdGVwX2lkIiwiemVyb19zdGVwX3Nob3J0X2lkIiwiZHVtbXlfc3RlcF9zaG9ydF9pZCIsImludF9vZl9zdGVwX3Nob3J0X2lkIiwic3RlcF9zaG9ydF9pZF9vZl9pbnQiLCJpbmNfc3RlcF9zaG9ydF9pZCIsImRlY19zdGVwX3Nob3J0X2lkIiwid2Vha2VuaW5nIiwiZGVmaW5lZCIsInVuZGVmaW5lZCQwIiwidW5rbm93biIsImlzX3Vua25vd24iLCJpc191bmRlZmluZWQiLCJjb21wYXJlJDAiLCJwcmludCQwIiwiY29tcGFyZSQxIiwicHJpbnQkMSIsImxldmVscyIsImdldF9wcmVfY29sdW1uX21hcF9pbnYiLCJnZXRfcHJlX2V2ZW50IiwicHJpbnRfcHJlZGljYXRlX2luZm8iLCJpJDAiLCJpJDEiLCJpbnQ0IiwiaW50MyIsImludDIiLCJpbnQyJDAiLCJpbnQkMSIsImludDIkMSIsImludCQyIiwiaW50MyQwIiwiaW50MiQyIiwiaW50JDMiLCJpZDIiLCJpZDEiLCJwcmludF9rbm93biIsInN0cmluZ19vZl9wcmVkaWNhdGVfdmFsdWUiLCJhZ2VudF9pZCIsImludGVybmFsX3N0YXRlIiwiYWdlbnRfbmFtZSIsImFnZW50X2lkJDAiLCJwcmludF9wcmVkaWNhdGVfdmFsdWUiLCJwcmludF9wcmVkaWNhdGVfaWQiLCJwcmludF9wcmVibGFja2JvYXJkIiwibmV2ZW50cyIsInNlaWQiLCJzdHJpY3RseV9tb3JlX3JlZmluZWQiLCJtb3JlX3JlZmluZWQiLCJjb25qIiwiY29tcGF0aWJsZSIsImRpc2p1bmN0aW9uIiwiYWxsb2NhdGUiLCJtYXBfaW52Iiwic2lkJDAiLCJzaWQiLCJjcmVhdGVfYWdlbnQiLCJuZXdfbGlzdCIsImZyZWVfYWdlbnQiLCJmcmVlX2FnZW50X2lmX2l0X2V4aXN0cyIsInByZWRpY2F0ZXNfb2ZfYWN0aW9uX25vX3N1YnMiLCJsb2dfaW5mbyQzIiwiZXJyb3IkNCIsImxvZ19pbmZvJDQiLCJlcnJvciQ1IiwiYmxhY2tib2FyZCQ2IiwibG9nX2luZm8kNSIsImVycm9yJDYiLCJibGFja2JvYXJkJDciLCJsb2dfaW5mbyQ2IiwiZXJyb3IkNyIsInByZWRpY2F0ZV9pZDIkMCIsImJsYWNrYm9hcmQkOCIsImxvZ19pbmZvJDciLCJlcnJvciQ4IiwiYmxhY2tib2FyZCQ5IiwibG9nX2luZm8kOCIsImVycm9yJDkiLCJibGFja2JvYXJkJDEwIiwibG9nX2luZm8kOSIsImVycm9yJDEwIiwiYmxhY2tib2FyZCQxMSIsImxvZ19pbmZvJDEwIiwiZXJyb3IkMTEiLCJwcmVkaWNhdGVpZCIsImJsYWNrYm9hcmQkMTIiLCJlcnJvciQxMiIsInByZWRpY2F0ZXNfb2ZfYWN0aW9uX3N1YnMiLCJwcmVkaWNhdGVzX29mX2FjdGlvbiIsInByZWRpY2F0ZXNfb2ZfdGVzdCIsInNpdGVfbmFtZSIsInR5cGVfb2Zfc3RlcCIsImdldF9sZXZlbF9vZl9ldmVudCIsImluaXRfZmljdGl0aW91c19hY3Rpb24iLCJpbml0X3N0ZXAiLCJuc2lkJDAiLCJhZGRfZmljdGl0aW91c19hY3Rpb24iLCJ2YWx1ZSQwIiwicHJlZGljYXRlX3RhcmdldF9pZCIsInNuYW1lIiwicHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhIiwiYnQiLCJwb3RlbnRpYWxfdGFyZ2V0IiwiYmluZGluZ19zdGF0ZSIsImZvcm1lcl9zdGF0ZXMiLCJidCQwIiwiaW5pdF9kYXRhX3N0cnVjdHVyZV9zdHJvbmciLCJhZGRfc2l0ZV9pbl9vdGhlcl90ZXN0X2xpbmtzIiwiZGF0YV9zdHJ1Y3R1cmUiLCJhZGRfc2l0ZV9pbl9vdGhlcl9hY3Rpb25fbGlua3MiLCJkYXRhX3N0cnVjdHVyZSQwIiwiYWRkX3N1cmVfdGVzdCIsImFkZF9zdWJzX3Rlc3QiLCJhZGRfc3Vic190ZXN0X2xpbmsiLCJsaW5rIiwibGluayQwIiwiZGF0YV9zdHJ1Y3R1cmUkMSIsImFkZF9zdXJlX2FjdGlvbiIsImFkZF9zdWJzX2FjdGlvbiIsImFkZF9zdWJzX2FjdGlvbl9saW5rIiwiYWRkX3N0ZXBfc3Ryb25nIiwic3RlcF9pZCIsImFnMV9pZCIsImFnMl9pZCIsInNpdGUxX2lkIiwic2l0ZTJfaWQiLCJ0ZXN0ZWRfc2l0ZXMiLCJtb2Rfc2l0ZXMiLCJwcmlvcml0eV9zaXRlcyIsInN1cmVfYWdlbnRzIiwic3VyZV9hZ2VudCIsImFnZW50MSIsImFnZW50MiIsIm1peF9zaXRlMSIsIm1peF9zaXRlMiIsImRhdGFfc3RydWN0dXJlJDIiLCJkYXRhX3N0cnVjdHVyZSQzIiwiYWdlbnQkMCIsInNpdGVfbmFtZTEiLCJzaXRlX25hbWUyIiwid2VhazEiLCJ3ZWFrMiIsImFnZW50JDEiLCJkYXRhX3N0cnVjdHVyZSQ0IiwiZGF0YV9zdHJ1Y3R1cmUkNSIsImRhdGFfc3RydWN0dXJlJDYiLCJhMiIsImExIiwic2lkZV9lZmZlY3QkMCIsImFjdGlvbl9saXN0JDAiLCJ0ZXN0X2xpc3QkMCIsImZpY3RpdGlvdXNfbG9jYWxfbGlzdCIsImZpY3RpdGlvdXNfbGlzdCIsIm1peHR1cmVfYWdlbnRfaWRfbXV0ZXgiLCJydWxlX2FnZW50X2lkX3N1YnMiLCJydWxlX2FnZW50X2lkX211dGV4IiwiaW5pdF9zdGVwJDAiLCJydWxlX2FnZW50X2lkX211dGV4JDAiLCJmaWN0aXRpb3VzX2xvY2FsX2xpc3QkMCIsImZpY3RpdGlvdXNfbGlzdCQwIiwicHJlZGljYXRlX2luZm8kMCIsInJ1bGVfYWdlbnRfaWRfc3VicyQwIiwiaW5pdF9zdGVwJDEiLCJpbml0X3N0ZXAkMiIsInJ1bGVfYWdlbnRfaWRfc3VicyQxIiwibWl4dHVyZV9hZ2VudF9pZF9tdXRleCQwIiwiaW5pdF9zdGVwJDMiLCJsaW5rc19tdXRleCIsImxpbmtzX211dGV4JDAiLCJmaWN0aXRpb3VzX2xpc3QkMSIsImJ1aWxkX21hcCIsImFkZF9zdGF0ZSIsImZhZGQiLCJuc2lkX3ZvaWQiLCJuc2lkX25leHQiLCJzaWRlX2VmZmVjdCQxIiwidGVzdF9saXN0JDEiLCJwb3RlbnRpYWxfdGFyZ2V0JDAiLCJydWxlX2FnX2lkIiwiZmljdGl0aW91c19saXN0JDIiLCJzaWRlX2VmZmVjdCQyIiwic3RlcF9pZCQwIiwicHJlX3N0ZXBzX2J5X2NvbHVtbiQwIiwib2JzZXJ2YWJsZV9saXN0JDAiLCJibGFja2JvYXJkJDE0Iiwibmxpc3QiLCJtaXh0dXJlX2FnX2lkIiwicGlkX3J1bGVfYWdlbnRfbXV0ZXgiLCJwaWRfcnVsZV9hZ2VudF9tdXRleCQwIiwidGVzdF9tYXAkMSIsImFjdGlvbl9tYXAkMCIsIm1faWQiLCJhY3Rpb25fbWFwJDIiLCJ0ZXN0X21hcCQyIiwibmxpc3QkMCIsIm1lcmdlZF9tYXAkMSIsIm1lcmdlZF9tYXAkMiIsImxpbmtfbXV0ZXgiLCJydWxlX2FnX2lkMiIsInJ1bGVfYWdfaWQxIiwibF9hZ18xIiwibF9hZ18yIiwibWl4dHVyZV9hZ18xIiwic3VicyQwIiwibWl4dHVyZV9hZ18yIiwiYWN0aW9uX2xpc3QkMSIsIm1faWQkMCIsImZpY3RpdGlvdXNfbGlzdCQzIiwidW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzJDAiLCJmaWN0aXRpb3VzX2xvY2FsX2xpc3QkMSIsImZpY3RpdGlvdXNfbGlzdCQ0IiwibG9nX2luZm8kMTEiLCJlcnJvciQxMyIsIm1lcmdlZF9tYXAkMyIsIm1lcmdlZF9tYXAkNCIsInNpZGVfZWZmZWN0JDMiLCJvYnNlcnZhYmxlX2xpc3QiLCJibGFja2JvYXJkJDEzIiwiYWRkX3N0ZXAiLCJmaW5hbGl6ZSIsImhldXJpc3RpYyIsImFnZW50c19pbl9vYnMiLCJuX3ByZWRpY2F0ZXMiLCJldmVudF9saXN0X29mX3ByZWRpY2F0ZSIsIm5fZXZlbnRzX3Blcl9wcmVkaWNhdGUiLCJuX2V2ZW50cyIsIm1hbmRhdG9yeV9ldmVudHMiLCJnZXRfZmljdGl0aW91c19vYnNlcnZhYmxlIiwiZ2V0X3NpZGVfZWZmZWN0IiwiaWdub3JlIiwiZmFpbCIsImlzX2lnbm9yZWQiLCJpc19mYWlsZWQiLCJpc19zdWNjZWVkZWQiLCJudWxsX3BvaW50ZXIiLCJwb2ludGVyX2JlZm9yZV9ibGFja2JvYXJkIiwiaXNfYmVmb3JlX2JsYWNrYm9hcmQiLCJidWlsZF9wb2ludGVyIiwicHJlZGljYXRlX2lkX29mX2Nhc2VfYWRkcmVzcyIsImlzX2JvdW5kYXJ5IiwiZXZlbnRfYWRkcmVzcyIsImJ1aWxkX2V2ZW50X2Nhc2VfYWRkcmVzcyIsImlzX2V4aXN0X2V2ZW50Iiwibl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4iLCJuX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl8iLCJwb2ludGVyX3RvX25leHQiLCJ2YWx1ZV9hZnRlciIsInBvaW50ZXJfdG9fcHJldmlvdXMiLCJuX3VucmVzb2x2ZWRfZXZlbnRzIiwibl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCIsImV4aXN0Iiwic3RyaW5nX29mX3BvaW50ZXIiLCJwcmVkaWNhdGVfdmFsdWUiLCJwb2ludGVyIiwiYm9vbGVhbiQwIiwiY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkIiwicHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUiLCJjYXNlX3ZhbHVlIiwieSQxIiwibGluZSIsImZpbGUiLCJkdW1teV9jYXNlX2luZm9fc3RhdGljIiwiZHVtbXlfY2FzZV9pbmZvX2R5bmFtaWMiLCJjb3JyZWN0X3BvaW50ZXIiLCJpbnRfc2VpZCIsImR1bW15X2Nhc2VfaW5mbyIsInByb2ZpbGluZ19pbmZvIiwiZ2V0X2V2ZW50IiwiZ2V0X25fZWlkIiwiZ2V0X3N0YWNrX2RlcHRoIiwiZm9yY2VkX2V2ZW50cyIsInNpZGVfZWZmZWN0X29mX2V2ZW50IiwiY2FzZV9saXN0X29mX2VpZCIsImdldF9jYXNlIiwiY2FzZV9hZGRyZXNzIiwiZ2V0X3N0YXRpYyIsImFkZHJlc3MiLCJjYXNlJDAiLCJzdGF0aWMkMCIsInByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyIsImdldF9ucHJlZGljYXRlX2lkIiwiZ2V0X25fdW5yZXNvbHZlZF9ldmVudHNfb2ZfcGlkIiwiZ2V0X25fdW5yZXNvbHZlZF9ldmVudHNfb2ZfcGlkJDAiLCJnZXRfbl91bnJlc29sdmVkX2V2ZW50cyIsImZvbGxvd19wb2ludGVyX2Rvd24iLCJmb2xsb3dfcG9pbnRlcl91cCIsImdldF9maXJzdF9saW5rZWRfZXZlbnQiLCJnZXRfbGFzdF9saW5rZWRfZXZlbnQiLCJwcmludF9rbm93bl9jYXNlIiwicHJlZiIsImluZiIsInN1ZiIsInN0cmluZ19vZl92YWx1ZSIsInBiIiwicHJpbnRfYXNzaWdubWVudCIsImkkMiIsImkkMyIsImkkNCIsImkkNSIsImkkNiIsImkkNyIsImxvZyQwIiwiaSQ4IiwicHJpbnRfYmxhY2tib2FyZCIsImVyciIsImFycmF5IiwiaiQyIiwiaiQwIiwic3RhdHVzIiwiaiQxIiwic3RhY2siLCJlbXB0eV9zdGFjayIsImV4aXN0X2Nhc2UiLCJzZXRfY2FzZSIsImNhc2VfYWRkcmVzcyQwIiwiY2FzZV92YWx1ZSQwIiwiY2FzZV9hZGRyZXNzJDEiLCJvbGQkMCIsImNhc2VfdmFsdWUkMSIsImNhc2VfYWRkcmVzcyQyIiwib2xkJDEiLCJjYXNlX3ZhbHVlJDIiLCJsZXZlbCQwIiwiY2FzZV9hZGRyZXNzJDMiLCJvbGQkMiIsImNhc2VfdmFsdWUkMyIsImlzX3NlbGVjdGVkX2V2ZW50IiwiZ2V0IiwiY2FzZSQxIiwiY2FzZSQyIiwiY2FzZV9hZGRyZXNzJDQiLCJjYXNlX2FkZHJlc3MkNSIsImNhc2UkMyIsImx2bCIsImNhc2VfYWRkcmVzcyQ2IiwiY2FzZSQ0IiwiZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIiwicHJlZml4IiwiZmlsZV9uYW1lIiwiZGVzY19jaGFuIiwicm93X29mX3ByZWNvbmRpdGlvbiIsImNvbG9ycyIsImJhY2tjb2xvciIsImNvbG9yIiwiY29sb3IkMCIsInRleHRjb2xvciIsImdldGNlbGwiLCJyb3ciLCJjb2wiLCJwcmludF9jYXNlIiwiY29sb3JfZm9udCIsImNvbG9yX2JhY2siLCJwcmludF9jYXNlX2Z1biIsInBfaW5mbyIsInJvd19wcmVjb25kaXRpb24iLCJyb3dfcG9zdGNvbmRpdGlvbiIsIm1heWJla2VwdCIsImVpZCQxIiwic3RyaW5nX2VpZCIsInZhbHVlX2JlZm9yZSIsImNhbmQiLCJzdHJpbmdfZWlkJDAiLCJzdGFjayQwIiwic3RhY2skMSIsInJlY29yZF9tb2RpZiIsInJlZmluZSIsIm92ZXJ3cml0ZSIsImRlYyIsImJyYW5jaCIsInJlc2V0X2xhc3RfYnJhbmNoaW5nIiwicmVzZXRfaW5pdCIsImlzX21heGltYWxfc29sdXRpb24iLCJ0cmFuc2xhdGVfYmxhY2tib2FyZCIsInN0ZXBfYXJyYXkiLCJzaWRlX2FycmF5IiwicHJpbnRfc3RhY2siLCJldmVudF9saXN0JDIiLCJldmVudF9hcnJheSIsImtlcHRfZXZlbnRzIiwia2VwdF9ldmVudHMkMCIsImtlcHRfZXZlbnRzJDEiLCJldmVudF9saXN0JDAiLCJldmVudF9jYXNlX2FkZHJlc3MiLCJwb2ludGVyJDAiLCJwcmV2X2V2ZW50X2Nhc2VfYWRkcmVzcyIsInByZXZfY2FzZSIsInByZXZfZWlkIiwicG9pbnRlciQxIiwicHJldl9laWQkMCIsImtlcHRfZXZlbnRzJDIiLCJldmVudF9saXN0JDEiLCJldmVudHNfdG9fa2VlcCIsIm5fZXZlbnRzX3JlbW92ZWQiLCJjdXRfY2F1c2FsX2Zsb3ciLCJpbXBvcnQkMCIsInByZWJsYWNrYm9hcmQiLCJyZWZpbmVkX2V2ZW50IiwicHJlYmxhY2tib2FyZCQwIiwidG9feGxzIiwicHJlYmxhY2tib2FyZCQxIiwicHJlYmxhY2tib2FyZCQzIiwidG9feGxzJDAiLCJzdHJpbmckMCIsInByZWJsYWNrYm9hcmQkNCIsInByZWJsYWNrYm9hcmQkMiIsInByZV9ibGFja2JvYXJkIiwiZXZlbnRfY2FzZV9saXN0Iiwibl9zZWlkIiwidW5zb2x2ZWRfYnlfbGV2ZWwiLCJsZXZlbF9vcHQkMSIsImxldmVsX29wdCIsIndlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZSIsImxldmVsX29wdCQwIiwid2VpZ3RoX29mX3ByZWRpY2F0ZV9pZCIsImxhc3RfbGlua2VkX2V2ZW50X29mX3ByZWRpY2F0ZSIsInBfaWQkMSIsInBfaWQiLCJzaXplJDAiLCJzZWlkJDEiLCJ0cmlwbGUiLCJzaXplJDEiLCJ1bnNvbHZlZCIsInNlaWQkMCIsInByZWRfc2l6ZSIsInBfaWQkMCIsInVuc29sdmVkX2J5X2xldmVsJDAiLCJsZXZlbCQxIiwibWFwJDEiLCJsb2dfaW5mbyQxMiIsImZpY3RpdGlvdXNfb2JzIiwibG9nX2luZm8kMTMiLCJsb29rX3VwX2Zvcl9iZXR0ZXJfY3V0IiwibG9va19kb3duX2Zvcl9iZXR0ZXJfY3V0IiwiZHVtbXlfdXBkYXRlX29yZGVyIiwiZm9yYmlkZGVuX2V2ZW50cyIsInBhcmFtdGVyIiwiZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50X29uX3BpIiwiZmlyc3QiLCJzdG9wIiwia19pbml0Iiwia19lbmQiLCJnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnQiLCJuZXh0X2Nob2ljZSIsInByaW9yaXR5JDAiLCJuX3BfaWQiLCJsZXZlbF9vcHQkMiIsImJlc3QkMSIsImJlc3QiLCJncmFkZSIsImJlc3QkMCIsInN0ZXAkMCIsImV2ZW50X2lkIiwiZXZlbnRfaWQkMCIsInByb3BhZ2F0ZV9kb3duIiwiaW5zdHJ1Y3Rpb25fbGlzdCIsInByb3BhZ2F0ZV9saXN0IiwibmV4dF9ldmVudF9jYXNlX2FkZHJlc3MiLCJib29sMiIsIm5leHRfYWN0aW9uIiwibmV4dF90ZXN0IiwicHJlZGljYXRlX3ZhbHVlJDAiLCJjb25qJDAiLCJsb2dfaW5mbyQxNCIsImxvZ19pbmZvJDE1IiwibmV4dF9hY3Rpb24kMCIsIm5leHRfdGVzdCQwIiwibmV4dF9laWQiLCJsb2dfaW5mbyQxNiIsImxvZ19pbmZvJDE3IiwibG9nX2luZm8kMTgiLCJsb2dfaW5mbyQxOSIsImNvbXB1dGVkX25leHRfcHJlZGljYXRlX3ZhbHVlJDAiLCJsb2dfaW5mbyQyNCIsImxvZ19pbmZvJDI1IiwiY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUiLCJsb2dfaW5mbyQyMCIsImxvZ19pbmZvJDIxIiwibG9nX2luZm8kMjIiLCJsb2dfaW5mbyQyMyIsImxhc3RfY2hhbmNlX3VwIiwiZXZlbnRfY2FzZV9hZGRyZXNzJDAiLCJwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzcyIsInByZXZpZXdfY2FzZV9hZGRyZXNzIiwicHJldmlld19jYXNlX3ZhbHVlIiwicHJldmlld19wcmVkaWNhdGVfdmFsdWUiLCJwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzcyQwIiwicHJldmlld19jYXNlX2FkZHJlc3MkMCIsInByZXZpZXdfY2FzZV92YWx1ZSQwIiwicHJldmlld19wcmVkaWNhdGVfdmFsdWUkMCIsImxhc3RfY2hhbmNlX3VwJDAiLCJwcm9wYWdhdGVfdXAiLCJsb2dfaW5mbyQzMSIsIm5ld19wcmVkaWNhdGVfdmFsdWUiLCJwcmV2IiwibG9nX2luZm8kMjkiLCJlcnJvciQxNiIsImxvZ19pbmZvJDMwIiwibmV3X3Rlc3QiLCJlcnJvciQxNCIsIm5ld19wcmVkaWNhdGVfdmFsdWUkMCIsImxvZ19pbmZvJDI2IiwiZXJyb3IkMTUiLCJsb2dfaW5mbyQyNyIsImxvZ19pbmZvJDI4IiwibG9nX2luZm8kMzIiLCJsb2dfaW5mbyQzMyIsInByb3BhZ2F0ZSIsImN1dF9jYXNlIiwicG9pbnRlcl9uZXh0IiwicG9pbnRlcl9wcmV2aW91cyIsInJlc3VsdCIsImxvb2tfZG93biIsImxpc3RfdmFsdWVzIiwiY2EiLCJuZXh0X2Nhc2UiLCJwcm9wYWdhdGVfbGlzdCQwIiwibG9va19kb3duJDAiLCJyZWZpbmVfdmFsdWVfYWZ0ZXIiLCJyZWZpbmVfdmFsdWVfYmVmb3JlIiwiZGlzY2FyZF9jYXNlIiwicmVzdWx0JDAiLCJpbnN0cnVjdGlvbl9saXN0JDAiLCJwcm9wYWdhdGVfbGlzdCQxIiwiZ2VuX2V2ZW50IiwiZl9jYXNlIiwic3VjY2VzcyQxIiwic3VjY2VzcyQwIiwic3VjY2VzczIiLCJzdWNjZXNzJDIiLCJhcHBseV9pbnN0cnVjdGlvbiIsImluc3RydWN0aW9uIiwiaW5zdHJ1Y3Rpb25fbGlzdCQzIiwicHJvcGFnYXRlX2xpc3QkMiIsInJlc3VsdCQxIiwiaW5zdHJ1Y3Rpb25fbGlzdCQxIiwiaW5zdHJ1Y3Rpb25fbGlzdCQyIiwic3RlcF9pZCQxIiwiYWRkcmVzcyQwIiwiZW1wdHlfY2hvaWNlX2xpc3QiLCJhc3NpZ25fcmVzdWx0IiwiYXNzaWduX3Jlc3VsdCQwIiwiYmFja3RyYWNrIiwiY2hvaWNlX2xpc3QiLCJjaG9pY2VfbGlzdCQwIiwiY2hvaWNlX2xpc3QkMSIsInN1Ymxpc3QiLCJkZXRlY3RfaW5kZXBlbmRlbnRfZXZlbnRzIiwibGlzdF9laWQiLCJ0cmFuc2xhdGVfcmVzdWx0IiwiZmlsdGVyIiwic29sIiwic29sJDAiLCJzb2wkMSIsImV2ZW50c190b19yZW1vdmUiLCJzdWIiLCJjb21wcmVzcyIsImxpc3Rfb3JkZXIiLCJjaG9pY2VfbGlzdCQyIiwiY2hvaWNlX2xpc3QkMyIsImNob2ljZV9saXN0JDQiLCJjaG9pY2VfbGlzdCQ1IiwiY2hvaWNlIiwiY2hvaWNlX2xpc3QkNiIsImNob2ljZV9saXN0JDciLCJzdG9yeV9saXN0JDEiLCJnb29kb25lcyQxIiwidG9fdmlzaXQiLCJ0b192aXNpdCQwIiwiZ29vZG9uZXMiLCJnb29kb25lcyQwIiwiaCQxIiwidG9fdmlzaXQkMSIsImJsYWNrX2xpc3QiLCJpc19ibGFja19saXN0ZWQiLCJkdW1teV9ncmFwaCIsImNvbXBhcmVfZWx0IiwicXVpY2tfY29tcGFyZSIsInQyIiwiYXV4IiwibDIkMSIsImNvbXBhcmVfY2Fub25pYyIsImdyYXBoX29mX2dyaWQiLCJzdWNjX3NpemUiLCJsYWJlbHMiLCJjb25mbGljdF9wcmVkIiwibGlzdDIkMiIsImxpc3QyJDEiLCJsaXN0MSQxIiwiY29tcGFyZV9ub2RlIiwicHJlaGFzaCIsIndlaWdodCQyIiwiZm9ybWVyJDEiLCJmb3JtZXIiLCJ3ZWlnaHQiLCJmb3JtZXIkMCIsInd0Iiwid2VpZ2h0JDAiLCJ3ZWlnaHQkMSIsImNhbm9uaWNhbGl6ZSIsImFzc28iLCJjYW5kaWRhdGUiLCJ0b19iZWF0IiwiY2FuZGlkYXRlJDAiLCJ0b19iZWF0JDAiLCJjYW5kaWRhdGUkMSIsInFyIiwidHIiLCJ0b19iZWF0JDEiLCJ2aXNpdCIsImZyZXNoX3BvcyIsImZyZXNoX3BvcyQwIiwic2liYmxpbmcxIiwic2liYmxpbmcyIiwibSQwIiwiY2FuZGlkYXRlcyQxIiwibm90X2Jlc3QiLCJjYW5kaWRhdGVzJDAiLCJyZXNpZHVlIiwiZnJlc2giLCJlbmNvZGluZyIsInRvX2JlYXRfYWZ0ZXIiLCJub3RfYmVzdCQwIiwicmVjb3JkJDAiLCJub3RfYmVzdCQxIiwicmVjb3JkJDEiLCJyZWNvcmQkMiIsIm5vdF9iZXN0JDIiLCJ0b19iZWF0X2FmdGVyJDAiLCJzaWJibGluZzEkMCIsInRvX2JlYXQkMiIsImZyZXNoX3BvcyQxIiwidG9fYmVhdCQzIiwiZyQwIiwic2liYmxpbmcyJDAiLCJ0b19iZWF0JDQiLCJsaXN0JDIiLCJmcmVzaF9wb3MkMiIsIm1hcCQyIiwidG9fYmVhdCQ1IiwibGlzdCQzIiwic29ydF9vdXRlciIsInNvcnRfaW5uZXIiLCJjb21wYXJlJDIiLCJnZXRfY2Fubm9uaWNhbF9mb3JtIiwidGFibGUiLCJhc3NvYyIsImNhbm5vbmljIiwiY2Fubm9uaWMkMCIsInRhYmxlJDAiLCJjaG9vc2VfZnN0IiwiaW5pdF90YWJsZSIsInBhcmFtZXRlcnMiLCJhZGRfc3RvcnkiLCJwcmV0cmFjZSIsInN0b3J5X2luZm8iLCJ0YWJsZSQyIiwidGFibGUkMyIsImdyYXBoJDAiLCJwcmVoYXNoJDEiLCJsb2dnZXIkMCIsImxvZ2dlciIsIm5vZGVfa2luZCIsImRpcmVjdGl2ZXMiLCJhZGRfc3RvcnlfaW5mbyIsImFzc29fb3B0IiwiY2Fub25pYyIsInVwZGF0ZV9hc3NvYyIsImNhbm9uaWNfZm9ybSIsImF1eF9pbm5lcjIiLCJjYW5vbmljX2Zvcm0kMCIsInRyZWUiLCJ0YWJsZSQxIiwiaWQkMiIsInRhYmxlJDQiLCJhdXhfb3V0ZXIyIiwicHJlaGFzaCQwIiwiY2Fubm9uaWNfZm9ybSIsImFzc29jJDAiLCJjYW5ub25pY19mb3JtJDAiLCJpbm5lciIsInRhYmxlJDUiLCJhdXhfaW5uZXIiLCJzdWZmaXgiLCJpbm5lcl90cmVlIiwiaW5uZXJfdHJlZSQwIiwiaW5uZXJfdHJlZSQxIiwiaW5uZXJfdHJlZSQyIiwiaWQkMyIsImlkJDQiLCJhdXhfb3V0ZXIiLCJvdXRlcl90cmVlIiwiaWQkNSIsInRhYmxlJDgiLCJpZCQ3IiwiaWQkNiIsImdyYXBoJDEiLCJhc3NvYyQxIiwidGFibGUkNiIsImlubmVyJDAiLCJ0YWJsZSQ3IiwiaWQkOCIsInRhYmxlJDkiLCJpbm5lciQxIiwic3VmZml4JDAiLCJhc3NvYyQyIiwiaW5uZXIkMiIsInRhYmxlJDEwIiwib3V0ZXJfdHJlZSQwIiwib3V0ZXJfdHJlZSQxIiwiaGFzaF9saXN0IiwiZWxlbWVudHNfdG9fc3RvcmUkMiIsImVsZW1lbnRzX3RvX3N0b3JlJDMiLCJzdG9yZWRfZWxlbWVudHMkMSIsImxhc3RfZWxlbWVudCQyIiwibGFzdF9lbGVtZW50X29jY3VycmVuY2VzJDMiLCJlbGVtZW50c190b19zdG9yZSQ0IiwibGFzdF9lbGVtZW50X29jY3VycmVuY2VzJDQiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkNSIsImxhc3RfZWxlbWVudCQzIiwic3RvcmVkX2VsZW1lbnRzJDIiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkNiIsImxhc3RfZWxlbWVudCQ0IiwiZGFnIiwiZGFnJDAiLCJkYWckMSIsImRhZyQyIiwiZWxlbWVudHNfdG9fc3RvcmUiLCJlbGVtZW50c190b19zdG9yZSQwIiwic3RvcmVkX2VsZW1lbnRzIiwibGFzdF9lbGVtZW50IiwibGFzdF9lbGVtZW50X29jY3VycmVuY2VzIiwiZWxlbWVudHNfdG9fc3RvcmUkMSIsImxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyQwIiwibGFzdF9lbGVtZW50X29jY3VycmVuY2VzJDEiLCJsYXN0X2VsZW1lbnQkMCIsInN0b3JlZF9lbGVtZW50cyQwIiwibGFzdF9lbGVtZW50X29jY3VycmVuY2VzJDIiLCJsYXN0X2VsZW1lbnQkMSIsImFjYyQwIiwic29ydF9saXN0IiwibGlzdF9vdXQiLCJ0dXBsZSIsImZsYXRfbGlzdCIsImNvbXBhcmVfcGFpciIsImZsYXRfbGlzdCQwIiwiY291bnRfc3RvcmllcyIsImZvbGRfdGFibGUiLCJ3ZV9zaGFsbCIsIndlX3NoYWxsX25vdCIsImdldF9wcmV0cmFjZV9vZl90cmFjZSIsInNpemVfb2ZfcHJldHJhY2UiLCJzZXRfYW1iaWd1aXR5X2xldmVsIiwiZ2V0X2NvbXByZXNzZWRfdHJhY2UiLCJpc19jb21wcmVzc2VkX3RyYWNlIiwidHJhY2Vfb2ZfcHJldHJhY2Vfd2l0aF9hbWJpZ3VpIiwid2l0aF9hbWJpZ3VpdHkiLCJ0cmFjZV9vZl9wcmV0cmFjZSIsImdldF9pZF9vZl9ldmVudCIsImdldF9zaW11bGF0aW9uX3RpbWVfb2ZfZXZlbnQiLCJwcmludF90cmFjZSIsInRyYW5zZm9ybV90cmFjZV9nZW4iLCJsb2dfbWVzc2FnZSIsImRlYnVnX21lc3NhZ2UiLCJwcm9maWxpbmdfZXZlbnQiLCJrYXBwYV9oYW5kbGVyIiwic2hhbGxfd2VfY29tcHV0ZSIsInN0aCQwIiwicHJpbnRfaWZfemVybyIsInByb2ZpbGluZ19pbmZvJDAiLCJsb2dfbWVzc2FnZSQwIiwicHJldHJhY2UkMCIsInByb2ZpbGluZ19pbmZvJDEiLCJ0cmFjZSQwIiwidHJhY2UkMSIsInByb2ZpbGluZ19pbmZvJDIiLCJtb25hZGljX2xpZnQiLCJtYWtlX3VuYW1iaWd1b3VzIiwic2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mIiwic3RoJDEiLCJsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXMiLCJyZXF1aXJlbWVudCIsImVmZmVjdCIsInRyYWNlJDIiLCJvbl90aGVfZmx5X2N1dF9pbml0Iiwib25fdGhlX2ZseV9jdXRfc3RlcCIsIm9uX3RoZV9mbHlfY3V0X2ZpbmFsaXplIiwiY3V0X3N0YXRlIiwicmVtb3ZlX29ic19iZWZvcmUiLCJsYXN0X2luZm8iLCJsYXN0X2VpZCIsImxhc3RfaW5mbyQwIiwic2NvcmUiLCJzY29yZSQwIiwicmVtb3ZlX2V2ZW50c19hZnRlcl9sYXN0X29icyIsInJlbW92ZV9wc2V1ZG9faW52ZXJzZV9ldmVudHMiLCJzdG9yeV90YWJsZSIsImdldF9ydW50aW1lX2luZm9fZnJvbV9vYnNlcnZhYiIsImVycm9yX2luaXQiLCJleHRyYWN0X29ic2VydmFibGVfaGl0c19mcm9tX20iLCJleHRyYWN0X29ic2VydmFibGVfaGl0X2Zyb21fbXUiLCJjJDAiLCJjYXVzYWxfcHJlZml4X29mX2FuX29ic2VydmFibGUiLCJvYnNlcnZhYmxlX2lkIiwiZXZlbnRfaWRfbGlzdCIsImV4cG9ydF9tdXNpY2FsX2dyaWRfdG9feGxzIiwicHJpbnRfbXVzaWNhbF9ncmlkIiwiY3JlYXRlX3N0b3J5X3RhYmxlIiwiY2xvc2VfcHJvZ3Jlc3NfYmFyX29wdCIsInByaW50X2ZhaWxzIiwiaW5jX2ZhaWxzIiwiZm9sZF9zdG9yeV90YWJsZV9nZW4iLCJuX3N0b3JpZXNfaW5wdXQiLCJuX2ZhaWxzIiwicHJvZ3Jlc3NfYmFyJDAiLCJuX2ZhaWxzJDAiLCJmb2xkX3N0b3J5X3RhYmxlX3dpdGhfcHJvZ3Jlc3MiLCJmb2xkX3N0b3J5X3RhYmxlX3dpdGhvdXRfcHJvZ3IiLCJnZXRfY291bnRlciIsInN0b3JlX3RyYWNlIiwiY29tcHV0YXRpb25faW5mbyQxIiwib2JzX2luZm8iLCJjb21wdXRhdGlvbl9pbmZvJDIiLCJ0cmFjZTIiLCJjb21wdXRhdGlvbl9pbmZvIiwiY29tcHV0YXRpb25faW5mbyQwIiwiY29tcHV0YXRpb25faW5mbyQzIiwiY29tcHV0YXRpb25faW5mbyQ0Iiwic3RvcnlfdGFibGUkMCIsImNvbXB1dGF0aW9uX2luZm8kNSIsImZsYXR0ZW5fc3RvcnlfdGFibGUiLCJsaXN0X29yZGVyJDAiLCJzdHJvbmdseV9jb21wcmVzcyIsIndlYWtseV9jb21wcmVzcyIsImNvbnZlcnRfdHJhY2VfaW50b19ncmlkIiwiY29udmVydF90cmFjZV9pbnRvX211c2ljYWxfbm90IiwiZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX2NsIiwiZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX3BhIiwiZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX3BhJDAiLCJlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGEkMSIsInNvcnRfc3RvcnlfbGlzdCIsImV4cG9ydF9zdG9yeV90YWJsZSIsImhhc19vYnMiLCJmb2xkX2xlZnRfd2l0aF9wcm9ncmVzc19iYXIiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24iLCJzdGgkMiIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQwIiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDkiLCJuX2ZhaWwiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kMSIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQyIiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDQiLCJiYXIkMCIsIm5fZmFpbCQwIiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDUiLCJvdXRwdXRfb3B0IiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDMiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kNiIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQ3IiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDgiLCJmb2xkX292ZXJfdGhlX2NhdXNhbF9wYXN0X29mX28iLCJsb2dfc3RlcCIsIm9ic2VydmFibGVfaGl0IiwiY2F1c2FsX3Bhc3QiLCJpbmZvJDIiLCJjb3B5X2xvZ19pbmZvIiwiY29tcGFyZV9jYW5vbmljYWxfZm9ybSIsImNvbXB1dGVfY2Fub25pY2FsX2Zvcm0iLCJrZXlfb2ZfZXZlbnQiLCJjcmVhdGVfYmxhY2tfbGlzdCIsImJsYWNrbGlzdCIsImJsYWNrbGlzdCQwIiwicmVtb3ZlX2JsYWNrbGlzdGVkX2V2ZW50IiwibGFzdF9laWRfaW5fcHJldHJhY2UiLCJwcm9maWxpbmdfc3RhdGVfdG9fanNvbiIsImVycm9yX2xpc3RfdG9fanNvbiIsImNvbXB1dGF0aW9uX3N0ZXBzX3RvX2pzb24iLCJjbXBfb3B0IiwiY21wX2Zsb2F0X29wdCIsImNtcF9pbnRfb3B0IiwiZ2VuX2Jpbl9vcHQiLCJvcCIsImFkZF9mbG9hdF9vcHQiLCJtdWx0X2Zsb2F0X29wdCIsIm11bHRfaW50X29wdCIsIm1heF9vcHQiLCJjZmxvd19wYXJhbWV0ZXJzIiwibmV2ZXIiLCJnbG9iYWxfdHJhY2Vfc2ltcGxpZmljYXRpb24iLCJzdG9yZV9yZXN1bHQiLCJnbG9iYWxfc3RhdHVzIiwic3RvcF9uZXh0IiwiZ2xvYmFsX3N0YXR1cyQwIiwic3RvcCQwIiwiZ2xvYmFsX3N0YXR1cyQxIiwiZ2xvYmFsX3N0YXR1cyQyIiwic3RhcnRfaXRlcmF0aW9uIiwiZW5kX3NpbXBsaWZpY2F0aW9uIiwiZ2V0X3N0ZF9idWZmZXIiLCJjZmxvd19zdGF0ZSIsImdldF9lcnJfYnVmZmVyIiwiZ2V0X3Byb2ZpbGluZ19idWZmZXIiLCJnZXRfYnJhbmNoX2FuZF9jdXRfc3RhdHVzIiwiZ2V0X3Byb2dyZXNzX2JhciIsImdldF9jdXJyZW50X3BoYXNlX3RpdGxlIiwiZ2V0X2NhdXNhbF9mbG93X3RhYmxlIiwiZ2V0X3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUiLCJnZXRfd2Vha19jb21wcmVzc2lvbl90YWJsZSIsImdldF9zdHJvbmdfY29tcHJlc3Npb25fdGFibGUiLCJnZXRfZXJyb3JfbGlzdCIsInNhdmVfY3VycmVudF9waGFzZV90aXRsZV9hdXgiLCJjZmxvd19zdGF0ZV9wdHIiLCJyZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlX2F1eCIsInNhdmVfcHJvZ3Jlc3NfYmFyX2F1eCIsInJlc2V0X3Byb2dyZXNzX2Jhcl9hdXgiLCJzYXZlX2NhdXNhbF9mbG93X3RhYmxlX2F1eCIsInNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSIsInNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZV9hdSIsInNhdmVfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlXyIsInNhdmVfZXJyb3JfbG9nX2F1eCIsInJlZGlyZWN0X3N0ZF9idWZmZXJfYXV4IiwibG9nZ2VycyIsInJlZGlyZWN0X2Vycl9idWZmZXJfYXV4IiwicmVkaXJlY3RfcHJvZmlsaW5nX2J1ZmZlcl9hdXgiLCJyZWRpcmVjdF9icmFuY2hfYW5kX2N1dF9idWZmZXIiLCJjZmxvd19zdGF0ZV9wdHJfb3B0IiwiZGF0YSIsImxpZnRfcmVzZXQiLCJzYXZlX2NhdXNhbF9mbG93X3RhYmxlIiwic2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlJDAiLCJzYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGUiLCJzYXZlX3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZSIsInNhdmVfZXJyb3JfbGlzdCIsInJlZGlyZWN0X3N0ZF9idWZmZXIiLCJyZWRpcmVjdF9lcnJfYnVmZmVyIiwicmVkaXJlY3RfcHJvZmlsaW5nX2J1ZmZlciIsInJlZGlyZWN0X2JyYW5jaF9hbmRfY3V0X2J1ZmZlciQwIiwiaW5pdF9zZWNyZXRfbG9nX2luZm8iLCJkb19ub3RfbG9nIiwiY29tcHJlc3NfYW5kX3ByaW50IiwianNfaW50ZXJmYWNlIiwicGFyYW1ldGVyJDEiLCJwYXJhbWV0ZXIkMTIiLCJwYXJhbWV0ZXIkMiIsImNhdXNhbF90cmFjZV9vbiIsIndlYWtfY29tcHJlc3Npb25fb24iLCJzdHJvbmdfY29tcHJlc3Npb25fb24iLCJ0YWJsZTEiLCJ0YWJsZTIiLCJ0YWJsZTMiLCJ0YWJsZTQiLCJwYXJhbWV0ZXIkMyIsInBhcmFtZXRlciQ0IiwicGFyYW1ldGVyJDUiLCJwYXJhbWV0ZXIkNiIsInBhcmFtZXRlciQ3IiwicGFyYW1ldGVyJDgiLCJwYXJhbWV0ZXIkOSIsInBhcmFtZXRlcl9jYXVzYWwiLCJwYXJhbWV0ZXJfd2VhayIsInBhcmFtZXRlcl9zdHJvbmciLCJzdGVwX2xpc3QkMCIsInN0cm9uZyQwIiwiZXJyb3IkMTkiLCJzdGVwX2xpc3QkMSIsInN0ZXBfbGlzdCQyIiwic3RlcF9saXN0JDMiLCJ0cmFjZV9iZWZvcmVfY29tcHJlc3Npb24iLCJjYXVzYWxfc3RvcnlfYXJyYXkiLCJjYXVzYWxfc3RvcnlfbGlzdCIsImNhdXNhbF9zdG9yeV9saXN0JDAiLCJjYXVzYWxfdGFibGUiLCJwYXJhbWV0ZXJfZGVlcGVyIiwiZXZlbnRfbGlzdCQzIiwid2Vha2x5X3N0b3J5X3RhYmxlIiwidGFibGUyJDAiLCJ0YWJsZTMkMCIsIndlYWtfc3RvcnlfdGFibGUiLCJjYXVzYWxfc3RvcnlfdGFibGUiLCJjYXVzYWxfc3RvcnlfdGFibGUkMCIsIndlYWtfc3RvcnlfdGFibGUkMCIsImNhdXNhbF9zdG9yeV90YWJsZSQxIiwiZXJyb3IkMjkiLCJjYXVzYWxfc3RvcnlfdGFibGUkMiIsImVycm9yJDMwIiwibl9jYXVzYWxfc3RvcmllcyIsInBhcmFtZXRlciQxMSIsImxpc3RfaW5mbyIsIndlYWtseV9zdG9yeV90YWJsZSQwIiwiZXJyb3IkMzEiLCJ3ZWFrbHlfc3RvcnlfdGFibGUkMSIsImVycm9yJDMyIiwibl93ZWFrX3N0b3JpZXMiLCJwYXJhbWV0ZXIkMTAiLCJyZWZpbmVkX2V2ZW50X2xpc3QiLCJzdHJvbmdseV9zdG9yeV90YWJsZSIsInN0cm9uZ2x5X3N0b3J5X3RhYmxlJDAiLCJlcnJvciQxNyIsImVycm9yJDE4IiwiZXhwb3J0JDAiLCJlcnJvciQyMCIsImVycm9yJDIxIiwiZXJyb3IkMjIiLCJleHBvcnQkMSIsImVycm9yJDIzIiwiZXJyb3IkMjQiLCJlcnJvciQyNSIsImV4cG9ydCQyIiwiZXJyb3IkMjYiLCJlcnJvciQyNyIsImVycm9yJDI4Iiwib25fbWVzc2FnZSIsInRleHQiLCJzdCIsIm5vbmUkMCIsImIkMSIsIndlYWskMCIsImIkMiIsImUkMCIsImZvbGQiLCJjb21wYXJlX2xpc3QiLCJoMSIsImgyIiwiY29tcGFyZV9zdXBlcmxpc3QiLCJzb3J0Iiwic3VwZXJsaXN0IiwiZHVtcF9zdXBlcl9saXN0IiwiY29tcGFyZV9mc3RfdHJpcGxlIiwic21hc2giLCJhY2N1JDEiLCJ0b19kbyQxIiwiY3VycmVudCQyIiwidG9fZG8iLCJjdXJyZW50IiwidG9fZG8kMCIsImN1cnJlbnQkMCIsImN1cnJlbnQkMSIsImVycm9yX21zZyIsIm9wdCIsInJhbmdlIiwidGV4dCIsInN0aCIsInNldmVyaXR5IiwicmVzdWx0X2Vycm9yX21zZyIsInJlc3VsdF9jb2RlIiwibWVzc2FnZSIsInJlc3VsdF9tZXNzYWdlcyIsIm1lc3NhZ2VzIiwicmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiIsImUiLCJtZXRob2RfaGFuZGxlcl9lcnJvcnMiLCJtaCIsInVuY2F1Z2h0IiwiY2F1Z2h0IiwieCIsImwiLCJtZXRob2RfaGFuZGxlcl9tZXNzYWdlcyIsInJlc3VsdF9rYXNhIiwicmVzdWx0X2JpbmRfbHd0Iiwib2siLCJzdGF0dXMiLCJ2YWx1ZSIsImRhdGEiLCJyZXN1bHRfZm9sZF9sd3QiLCJmIiwiaWQiLCJ0IiwiaCIsInJlc3VsdCIsInJlc3VsdF9jb21iaW5lIiwiZGF0YV8xIiwiZGF0YV9yIiwibWQ1c3VtIiwid3JpdGVfc25hcHNob3RfaWQiLCJzdHJpbmdfb2Zfc25hcHNob3RfaWQiLCJsZW4iLCJvYiIsInJlYWRfc25hcHNob3RfaWQiLCJzbmFwc2hvdF9pZF9vZl9zdHJpbmciLCJzIiwid3JpdGVfc25hcHNob3QiLCJzdHJpbmdfb2Zfc25hcHNob3QiLCJyZWFkX3NuYXBzaG90Iiwic25hcHNob3Rfb2Zfc3RyaW5nIiwic3RyaW5nX29mX3NuYXBzaG90X2RldGFpbCIsInNuYXBzaG90X2RldGFpbF9vZl9zdHJpbmciLCJ3cml0ZV9zbmFwc2hvdF9pZF9saXN0IiwicmVhZF9zbmFwc2hvdF9pZF9saXN0Iiwic3RyaW5nX29mX3NuYXBzaG90X2NhdGFsb2ciLCJzbmFwc2hvdF9jYXRhbG9nX29mX3N0cmluZyIsIndyaXRlX3NpdGVfZ3JhcGgiLCJzdHJpbmdfb2Zfc2l0ZV9ncmFwaCIsInJlYWRfc2l0ZV9ncmFwaCIsInNpdGVfZ3JhcGhfb2Zfc3RyaW5nIiwid3JpdGVfc2ltdWxhdGlvbl9zdGF0ZSIsInN0cmluZ19vZl9zaW11bGF0aW9uX3N0YXRlIiwicmVhZF9zaW11bGF0aW9uX3N0YXRlIiwicCIsImxiIiwieCQwIiwieCQxIiwic2ltdWxhdGlvbl9zdGF0ZV9vZl9zdHJpbmciLCJ3cml0ZV9zaW11bGF0aW9uX3NlZWQiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9zZWVkIiwicmVhZF9zaW11bGF0aW9uX3NlZWQiLCJzaW11bGF0aW9uX3NlZWRfb2Zfc3RyaW5nIiwid3JpdGVfaW50X251bGxhYmxlIiwicmVhZF9pbnRfbnVsbGFibGUiLCJ3cml0ZV9zaW11bGF0aW9uX3Byb2dyZXNzIiwiaXNfZmlyc3QiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9wcm9ncmVzcyIsInJlYWRfc2ltdWxhdGlvbl9wcm9ncmVzcyIsImZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSIsImZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSQwIiwiZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVuIiwiZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVuJDAiLCJmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWMiLCJmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3IiLCJwb3MiLCJpIiwiZiQwIiwiaSQwIiwieCQyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwieCQ3IiwieCQ4IiwieCQ5IiwieCQxMCIsInNpbXVsYXRpb25fcHJvZ3Jlc3Nfb2Zfc3RyaW5nIiwid3JpdGVfc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlIiwicmVhZF9zaW11bGF0aW9uX3NlZWRfbnVsbGFibGUiLCJ3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlciIsInN0cmluZ19vZl9zaW11bGF0aW9uX3BhcmFtZXRlciIsInJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXIiLCJmaWVsZF9zaW11bGF0aW9uX3Bsb3RfcGVyaW9kIiwiZmllbGRfc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpIiwiZmllbGRfc2ltdWxhdGlvbl9zZWVkIiwiZmllbGRfc2ltdWxhdGlvbl9zdG9yZV90cmFjZSIsInNpbXVsYXRpb25fcGFyYW1ldGVyX29mX3N0cmluZyIsIndyaXRlX3NpbXVsYXRpb25fb3V0cHV0Iiwid3JpdGVfcGxvdCIsIndyaXRlX2RpbnMiLCJ3cml0ZV9maWxlX2xpbmVzIiwid3JpdGVfc25hcHNob3RzIiwid3JpdGVfaW5wdXRzIiwid3JpdGVfbG9nX21lc3NhZ2VzIiwic3RyaW5nX29mX3NpbXVsYXRpb25fb3V0cHV0IiwicmVhZF9zaW11bGF0aW9uX291dHB1dCIsInJlYWRfcGxvdCIsInJlYWRfZGlucyIsInJlYWRfZmlsZV9saW5lcyIsInJlYWRfc25hcHNob3RzIiwicmVhZF9pbnB1dHMiLCJyZWFkX2xvZ19tZXNzYWdlcyIsImZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QiLCJmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIiwiZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9sIiwiZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNoIiwiZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIiwiZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lIiwic2ltdWxhdGlvbl9vdXRwdXRfb2Zfc3RyaW5nIiwid3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24iLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbnRlcnZlbnQiLCJyZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uIiwic2ltdWxhdGlvbl9pbnRlcnZlbnRpb25fb2Zfc3RyIiwid3JpdGVfb3V0cHV0XzkzNDBhZDYiLCJyZWFkX291dHB1dF85MzQwYWQ2Iiwic3RyaW5nX29mX3NpbXVsYXRpb25faW5mb19vdXRwIiwic2ltdWxhdGlvbl9pbmZvX291dHB1dF9vZl9zdHJpIiwid3JpdGVfc2ltdWxhdGlvbl9pbmZvIiwic3RyaW5nX29mX3NpbXVsYXRpb25faW5mbyIsInJlYWRfc2ltdWxhdGlvbl9pbmZvIiwiZmllbGRfc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzIiwiZmllbGRfc2ltdWxhdGlvbl9pbmZvX291dHB1dCIsInNpbXVsYXRpb25faW5mb19vZl9zdHJpbmciLCJ3cml0ZV9zaW11bGF0aW9uX2lkIiwic3RyaW5nX29mX3NpbXVsYXRpb25faWQiLCJyZWFkX3NpbXVsYXRpb25faWQiLCJzaW11bGF0aW9uX2lkX29mX3N0cmluZyIsIndyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3QiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9hcnRpZmFjdCIsInJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdCIsImZpZWxkX3NpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdSIsInNpbXVsYXRpb25fYXJ0aWZhY3Rfb2Zfc3RyaW5nIiwid3JpdGVfc2hhcmluZ19sZXZlbCIsInN0cmluZ19vZl9zaGFyaW5nX2xldmVsIiwicmVhZF9zaGFyaW5nX2xldmVsIiwic2hhcmluZ19sZXZlbF9vZl9zdHJpbmciLCJ3cml0ZV9yZXN1bHQiLCJ3cml0ZV9vayIsIndyaXRlX2Vycm9yIiwic3RyaW5nX29mX3Jlc3VsdCIsInJlYWRfcmVzdWx0IiwicmVhZF9vayIsInJlYWRfZXJyb3IiLCJyZXN1bHRfb2Zfc3RyaW5nIiwid3JpdGVfcGFyc2luZ19jb21waWwiLCJzdHJpbmdfb2ZfcGFyc2luZ19jb21waWwiLCJyZWFkX3BhcnNpbmdfY29tcGlsIiwicGFyc2luZ19jb21waWxfb2Zfc3RyaW5nIiwid3JpdGVfbmJyIiwic3RyaW5nX29mX25iciIsInJlYWRfbmJyIiwibmJyX29mX3N0cmluZyIsIndyaXRlX3N0cmluZ19uYnJfbGlzdCIsInN0ZF90dXBsZSIsImVuZF9vZl90dXBsZSIsIngwIiwieDEiLCJyZWFkX3N0cmluZ19uYnJfbGlzdCIsIndyaXRlX3Byb2plY3RfcGFyc2UiLCJzdHJpbmdfb2ZfcHJvamVjdF9wYXJzZSIsInJlYWRfcHJvamVjdF9wYXJzZSIsImZpZWxkX3BhdHRlcm5fc2hhcmluZyIsImZpZWxkX2FzdCIsImZpZWxkX3ZhcmlhYmxlX292ZXJ3cml0dGVuIiwicHJvamVjdF9wYXJzZV9vZl9zdHJpbmciLCJ3cml0ZV9wcm9qZWN0X3BhcmFtZXRlciIsInN0cmluZ19vZl9wcm9qZWN0X3BhcmFtZXRlciIsInJlYWRfcHJvamVjdF9wYXJhbWV0ZXIiLCJmaWVsZF9wcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWMiLCJwcm9qZWN0X3BhcmFtZXRlcl9vZl9zdHJpbmciLCJ3cml0ZV9wbG90X2xpbWl0Iiwic3RyaW5nX29mX3Bsb3RfbGltaXQiLCJyZWFkX3Bsb3RfbGltaXQiLCJmaWVsZF9wbG90X2xpbWl0X29mZnNldCIsImZpZWxkX3Bsb3RfbGltaXRfcG9pbnRzIiwicGxvdF9saW1pdF9vZl9zdHJpbmciLCJzdHJpbmdfb2ZfcGxvdF9wYXJhbWV0ZXIiLCJwbG90X3BhcmFtZXRlcl9vZl9zdHJpbmciLCJzdHJpbmdfb2ZfcGxvdCIsInBsb3Rfb2Zfc3RyaW5nIiwid3JpdGVfbWVzc2FnZSIsInN0cmluZ19vZl9tZXNzYWdlIiwicmVhZF9tZXNzYWdlIiwibWVzc2FnZV9vZl9zdHJpbmciLCJ3cml0ZV9sb2dfbWVzc2FnZSIsInN0cmluZ19vZl9sb2dfbWVzc2FnZSIsInJlYWRfbG9nX21lc3NhZ2UiLCJsb2dfbWVzc2FnZV9vZl9zdHJpbmciLCJ3cml0ZV9rYXBwYV9jb2RlIiwic3RyaW5nX29mX2thcHBhX2NvZGUiLCJyZWFkX2thcHBhX2NvZGUiLCJrYXBwYV9jb2RlX29mX3N0cmluZyIsIndyaXRlX3N0cmluZ19udWxsYWJsZSIsInJlYWRfc3RyaW5nX251bGxhYmxlIiwid3JpdGVfZmlsZV9saW5lIiwic3RyaW5nX29mX2ZpbGVfbGluZSIsInJlYWRfZmlsZV9saW5lIiwiZmllbGRfZmlsZV9saW5lX25hbWUiLCJmaWVsZF9maWxlX2xpbmVfdGV4dCIsImZpbGVfbGluZV9vZl9zdHJpbmciLCJ3cml0ZV9maWxlX2xpbmVfbGlzdCIsInJlYWRfZmlsZV9saW5lX2xpc3QiLCJzdHJpbmdfb2ZfZmlsZV9saW5lX2RldGFpbCIsImZpbGVfbGluZV9kZXRhaWxfb2Zfc3RyaW5nIiwid3JpdGVfc3RyaW5nX2xpc3QiLCJyZWFkX3N0cmluZ19saXN0Iiwic3RyaW5nX29mX2ZpbGVfbGluZV9jYXRhbG9nIiwiZmlsZV9saW5lX2NhdGFsb2dfb2Zfc3RyaW5nIiwid3JpdGVfZW52aXJvbm1lbnRfaW5mbyIsInN0cmluZ19vZl9lbnZpcm9ubWVudF9pbmZvIiwicmVhZF9lbnZpcm9ubWVudF9pbmZvIiwiZmllbGRfZW52aXJvbm1lbnRfcHJvamVjdHMiLCJmaWVsZF9lbnZpcm9ubWVudF9idWlsZCIsImVudmlyb25tZW50X2luZm9fb2Zfc3RyaW5nIiwid3JpdGVfZGluX2lkIiwic3RyaW5nX29mX2Rpbl9pZCIsInJlYWRfZGluX2lkIiwiZGluX2lkX29mX3N0cmluZyIsIndyaXRlX2Rpbl9pZF9saXN0IiwicmVhZF9kaW5faWRfbGlzdCIsInN0cmluZ19vZl9kaW5fY2F0YWxvZyIsImRpbl9jYXRhbG9nX29mX3N0cmluZyIsIndyaXRlX2RpbiIsInN0cmluZ19vZl9kaW4iLCJyZWFkX2RpbiIsImRpbl9vZl9zdHJpbmciLCJuZXdfbWFpbGJveCIsInJlY2VpdmUiLCJtYWlsYm94IiwidGhyZWFkIiwidGhyZWFkJDAiLCJvdXQiLCJ0aHJlYWQkMSIsInRocmVhZCQyIiwidGhyZWFkJDMiLCJ0aHJlYWQkNCIsInRocmVhZCQ1IiwidGhyZWFkJDYiLCJqc29uIiwidGhyZWFkJDciLCJqc29uJDAiLCJ0aHJlYWQkOCIsImpzb24kMSIsInRocmVhZCQ5IiwianNvbiQyIiwidGhyZWFkJDEwIiwianNvbiQzIiwidGhyZWFkJDExIiwianNvbiQ0IiwidGhyZWFkJDEyIiwianNvbiQ1IiwidGhyZWFkJDEzIiwianNvbiQ2IiwidGhyZWFkJDE0IiwianNvbiQ3IiwidGhyZWFkJDE1IiwidGhyZWFkJDE2IiwidGhyZWFkJDE3IiwidGhyZWFkJDE4IiwidGhyZWFkJDE5IiwidGhyZWFkJDIwIiwidGhyZWFkJDIxIiwiaXNfY29tcHV0aW5nIiwic2VsZl8xIiwiaGFuZGxlIiwicmVxdWVzdCIsImZlZWRlciIsImIiLCJmaWxlX2lkIiwiZmlsZV9jb250ZW50IiwiZmlsZV9wb3NpdGlvbiIsImFzdCIsImNvbXBpbCIsImFjY3VyYWN5IiwiZndkIiwiYndkIiwib3JpZ2luIiwidG90YWwiLCJmaWxlbmFtZSIsImFjY3VyYWN5X2NtIiwiYWNjdXJhY3lfc2NjIiwicGF0dGVyblNoYXJpbmciLCJvdmVyd3JpdGVzIiwicGF1c2UiLCJwYXJhbWV0ZXIiLCJpbnRlcnZlbnRpb24iLCJ3cml0ZV9zbmFwc2hvdF9kZXRhaWwiLCJyZWFkX3NuYXBzaG90X2RldGFpbCIsIndyaXRlX3NuYXBzaG90X2NhdGFsb2ciLCJyZWFkX3NuYXBzaG90X2NhdGFsb2ciLCJ3cml0ZV9zaW11bGF0aW9uX2VmZmljaWVuY3kiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9lZmZpY2llbmMiLCJyZWFkX3NpbXVsYXRpb25fZWZmaWNpZW5jeSIsInNpbXVsYXRpb25fZWZmaWNpZW5jeV9vZl9zdHJpbiIsIndyaXRlX2FwaV9yZXN1bHQiLCJzdHJpbmdfb2ZfYXBpX3Jlc3VsdCIsInJlYWRfYXBpX3Jlc3VsdCIsImFwaV9yZXN1bHRfb2Zfc3RyaW5nIiwid3JpdGVfYXBpX21lc3NhZ2UiLCJzdHJpbmdfb2ZfYXBpX21lc3NhZ2UiLCJyZWFkX2FwaV9tZXNzYWdlIiwiYXBpX21lc3NhZ2Vfb2Zfc3RyaW5nIiwid3JpdGVfYXBpX21lc3NhZ2VfbGlzdCIsInJlYWRfYXBpX21lc3NhZ2VfbGlzdCIsIndyaXRlX2ZpbGVfbGluZV9jYXRhbG9nIiwicmVhZF9maWxlX2xpbmVfY2F0YWxvZyIsIndyaXRlX2Rpbl9jYXRhbG9nIiwicmVhZF9kaW5fY2F0YWxvZyIsIndyaXRlX3Jlc3RfcmVzcG9uc2VfY29udGVudCIsIngkMTEiLCJ4JDEyIiwieCQxMyIsIngkMTQiLCJ4JDE1IiwieCQxNiIsInN0cmluZ19vZl9yZXN0X3Jlc3BvbnNlX2NvbnRlbiIsInJlYWRfcmVzdF9yZXNwb25zZV9jb250ZW50IiwieCQzNSIsIngkMTciLCJ4JDI2IiwieCQyNSIsIngkMjQiLCJ4JDIzIiwieCQyMiIsIngkMjEiLCJ4JDIwIiwieCQxOSIsIngkMTgiLCJ4JDM0IiwieCQzMyIsIngkMzIiLCJ4JDMxIiwieCQzMCIsIngkMjkiLCJ4JDI4IiwieCQyNyIsInJlc3RfcmVzcG9uc2VfY29udGVudF9vZl9zdHJpbiIsIndyaXRlX3Jlc3VsdF80Y2E2YjhmIiwicmVhZF9yZXN1bHRfNGNhNmI4ZiIsInN0cmluZ19vZl9yZXN0X3Jlc3BvbnNlIiwicmVzdF9yZXNwb25zZV9vZl9zdHJpbmciLCJ3cml0ZV9wbG90X3BhcmFtZXRlciIsInJlYWRfcGxvdF9wYXJhbWV0ZXIiLCJ3cml0ZV9yZXN0X3JlcXVlc3QiLCJzdHJpbmdfb2ZfcmVzdF9yZXF1ZXN0IiwicmVhZF9yZXN0X3JlcXVlc3QiLCJyZXN0X3JlcXVlc3Rfb2Zfc3RyaW5nIiwid3JpdGVfcmVzcG9uc2VfY29udGVudCIsInN0cmluZ19vZl9yZXNwb25zZV9jb250ZW50IiwicmVhZF9yZXNwb25zZV9jb250ZW50IiwicmVzcG9uc2VfY29udGVudF9vZl9zdHJpbmciLCJ3cml0ZV9yZXN1bHRfODkwZDlmZSIsInJlYWRfcmVzdWx0Xzg5MGQ5ZmUiLCJzdHJpbmdfb2ZfcmVzcG9uc2UiLCJyZXNwb25zZV9vZl9zdHJpbmciLCJ3cml0ZV9yZXF1ZXN0Iiwic3RyaW5nX29mX3JlcXVlc3QiLCJyZWFkX3JlcXVlc3QiLCJyZXF1ZXN0X29mX3N0cmluZyIsIndyaXRlX2lkIiwic3RyaW5nX29mX2lkIiwicmVhZF9pZCIsImlkX29mX3N0cmluZyIsIndyaXRlX2RhdGEiLCJyZWFkX2RhdGEiLCJmaWVsZF9pZCIsImZpZWxkX2RhdGEiLCJ3cml0ZV9maWxlX2xpbmVfZGV0YWlsIiwicmVhZF9maWxlX2xpbmVfZGV0YWlsIiwib25fbWVzc2FnZSIsIm1hbmFnZXIiLCJwb3N0X21lc3NhZ2UiLCJ0ZXh0X21lc3NhZ2UiLCJoYW5kbGVyIiwicGFjayIsIm1lc3NhZ2UkMCIsImZpbGVfbGluZV9pZCIsInNpbXVsYXRpb25faW50ZXJ2ZW50aW9uIiwiZGluX2lkIiwidmFyaWFibGVfb3ZlcndyaXR0ZW4iLCJwYXR0ZXJuX3NoYXJpbmciLCJwbG90X3BhcmFtZXRlciIsInNuYXBzaG90X2lkIiwic2ltdWxhdGlvbl9wYXJhbWV0ZXIiLCJzaW11bGF0aW9uX3BhcmFtZXRlciQwIiwicmVzcG9uc2UiLCJwYXVzZV9jb25kaXRpb24iLCJmaWxlX2xpbmVfbGlzdCIsImZsdXhfbWFwX2lkIiwiZmx1eF9tYXAiLCJsb2dfbWVzc2FnZSIsInBsb3QiLCJzbmFwc2hvdCIsInNpbXVsYXRpb25fc3RhdHVzIiwiZWZmaWNpZW5jeSIsImluZm8iLCJzaW11bGF0aW9uX2lkIiwic2VsZl8yIiwicmVzcG9uc2VfdGV4dCIsIm1haWxib3hlcyIsIm1haWxib3hlcyQwIiwibWVzc2FnZV90ZXh0IiwiYXBpX3NuYXBzaG90X2RvdCIsImFwaV9zbmFwc2hvdF9rYXBwYSIsImFwaV9zaW11bGF0aW9uX3N0YXR1cyIsInByb2dyZXNzIiwiZGV0YWlsIiwib3V0cHV0IiwiYWdlbnRfY291bnQiLCJzcGVjaWVzIiwid3JpdGUxIiwib2MiLCJuIiwid3JpdGUyIiwid3JpdGU0Iiwid3JpdGU0X2ludCIsIndyaXRlc3RyaW5nIiwiZG9zdGltZV9vZl91bml4dGltZSIsInRtIiwib3Blbl9vdXQiLCJjb21tZW50IiwiY2xvc2Vfb3V0Iiwib2ZpbGUiLCJzdGFydF9jZCIsInZlcnNpb24iLCJkYXRlIiwidGltZSIsImNkX3NpemUiLCJudW1fZW50cmllcyIsImFkZF9lbnRyeV9oZWFkZXIiLCJleHRyYSIsImxldmVsIiwibXRpbWUiLCJhZGRfZGF0YV9kZXNjcmlwdG9yIiwiY3JjIiwiY29tcHJfc2l6ZSIsInVuY29tcHJfc2l6ZSIsImVudHJ5IiwiYWRkX2VudHJ5IiwibmFtZSIsInN0aCQwIiwic3RoJDEiLCJzdGgkMiIsImNyYyQwIiwiZSQwIiwiYWRkX2VudHJ5X2dlbmVyYXRvciIsImZpbmlzaGVkIiwiY2hlY2siLCJidWYiLCJtc2dfcHJvY2Vzc19ub3RfcGF1c2VkIiwiZXhuIiwiY2F0Y2hfZXJyb3IiLCJyYW5nZSQwIiwicmFuZ2UkMSIsIm1lc3NhZ2UkMSIsImVycm9yIiwibWVzc2FnZSQyIiwicGFyc2UiLCJ2YXJfb3ZlcndyaXRlIiwic3lzdGVtX3Byb2Nlc3MiLCJ5aWVsZCQwIiwibG9nX2J1ZmZlciIsImxvZ19mb3JtIiwiaW5wdXRzX2J1ZmZlciIsImlucHV0c19mb3JtIiwiY29uZiIsIndhcm5pbmciLCJtc2ciLCJhc3RfY29tcGlsZWRfZGF0YSIsImxhc3R5aWVsZCIsIm91dHB1dHMiLCJpbml0X2wiLCJ3aXRoX3RyYWNlIiwiZW52IiwiY291bnRlciIsInRoZVNlZWQiLCJ0aGVTZWVkJDAiLCJyYW5kb21fc3RhdGUiLCJzdGF0ZSIsImdyYXBoIiwibWF4Q29uc2VjdXRpdmVDbGFzaCIsImR1bXBJZkRlYWRsb2NrZWQiLCJjb250YWN0X21hcCIsInNpbXVsYXRpb24iLCJmbHV4X25hbWUiLCJuZXdfb2JzZXJ2YWJsZXMiLCJmaWxlX2xpbmUiLCJuYSIsImxpbmVzIiwic3QiLCJhbHJlYWR5X3RoZXJlIiwic25hcHNob3RfZmlsZSIsIm1peCIsImZpbGUiLCJmaW5hbGl6ZV9zaW11bGF0aW9uIiwicnVuX3NpbXVsYXRpb24iLCJzdG9wcGVkIiwicnN0b3AiLCJpdGVyIiwic3RvcCIsInN0b3AkMCIsInN0YXJ0IiwibGV4YnVmIiwic2VlZCIsImZpcnN0X29icyIsInBlcnR1cmJhdGlvbiIsImZvcm1hdHRlciIsInYiLCJjb250aW51ZSQwIiwiZ2V0X3Jhd190cmFjZSIsImdldF9yYXdfYXN0IiwibSQxIiwibSQwIiwibSIsImJpbmRfc2ltdWxhdGlvbiIsInNpbXVsYXRpb24kMCIsImRldGFpbF9wcm9qZWN0aW9uIiwicHJvamVjdGlvbiIsImVycm9ycyIsInNpbXVsYXRpb25fZGV0YWlsIiwiZmlsZV9saW5lcyIsImZpbGVfbGluZV9jYXRhbG9nIiwiZmx1eF9tYXBfY2F0YWxvZyIsImZsdXhfbWFwc19saXN0Iiwic2VsZl8zIiwic2VsZl80IiwicGxvdF9saW1pdCIsInBsb3RfdGltZV9zZXJpZXMiLCJwbG90X2RldGFpbF9zaXplIiwicGxvdF9saW1pdF9vZmZzZXQiLCJwbG90X2xpbWl0X3BvaW50cyIsIm9mZnNldCIsIm5iIiwibmIkMCIsIm5ld19wbG90X3RpbWVfc2VyaWVzIiwic2VsZl81Iiwic25hcHNob3RzIiwiYWNjIiwic25hcHNob3RfY2F0YWxvZyIsInNuYXBzaG90X2xpc3QiLCJzZWxmXzYiLCJoYXJha2lyaSIsInNlZWQkMCIsInNpbXVsYXRpb25fc2VlZCIsImZhY2FkZSIsImNvbnRlbnQiLCJmbHV4IiwiZGluX25hbWUiLCJuYW1lJDAiLCJzaW11bGF0aW9uX3BlcnR1cmJhdGlvbiIsInByaW50X2NvbXByZXNzaW9uX21vZGVzIiwic3Ryb25nIiwid2VhayIsImNhdXNhbCIsImluaXRpYWxfc3RhdGUiLCJ1cGRhdGVfc3RhdGUiLCJpbml0X3N0YXRlIiwiY3VycmVudF9zdGF0ZSIsIm0kMiIsImMiLCJpbmZvcyIsImNtIiwidHJhY2VfdGV4dCIsInJlcXVlc3QkNCIsInJlcXVlc3QkMyIsInJlcXVlc3QkMiIsInJlcXVlc3QkMSIsInJlcXVlc3QkMCIsImVyciIsImlkJDAiLCJwb3N0Iiwib3V0YnVmIiwib3V0YiIsImEiLCJvIiwiYiQwIiwiaXNfcnVubmluZyIsInJ1bnRpbWVfc3RhdGUiLCJzZXRfc3RhdGVfZXJyb3IiLCJzdGF0ZV9lcnJvciIsImNsZWFyX2Vycm9ycyIsImxvY2F0aW9uIiwiaGFzX2Vycm9ycyIsImFkZF9lcnJvciIsImVycm9ycyIsImN1cnJlbnRfc3RhdGVfZXJyb3IiLCJuZXdfc3RhdGVfZXJyb3IiLCJhY2MiLCJ2YWx1ZSIsIndyYXAiLCJvcHQiLCJsb2MiLCJyIiwic3RoIiwiYXBwZW5kIiwidXJsX2FyZ3MiLCJvcHQiLCJrZXkiLCJzdGgiLCJkZWZhdWx0JDAiLCJhcmdzIiwiayIsInNvbWUiLCJjb25zdHJ1Y3Rvcl9wcm9jZXNzX2NvbmZpZ3VyYXQiLCJjcmVhdGVfcHJvY2Vzc19jb25maWd1cmF0aW9uIiwib25TdGRvdXQiLCJvblN0ZGVyciIsIm9uQ2xvc2UiLCJvbkVycm9yIiwiY29tbWFuZCIsImFyZ3MiLCJjb25maWd1cmF0aW9uIiwieCIsIm9uU3Rkb3V0JDAiLCJvblN0ZGVyciQwIiwib25DbG9zZSQwIiwib25FcnJvciQwIiwic3Bhd25fcHJvY2VzcyIsImxhdW5jaF9hZ2VudCIsIm1lc3NhZ2VfZGVsaW1pdGVyIiwiaGFuZGxlciIsImJ1ZmZlciIsIm1zZyIsIm1zZyQwIiwicHJlZml4Iiwic3VmZml4IiwibXNnJDEiLCJzZWxmXzEiLCJ0aW1lb3V0Iiwib3B0Iiwic3RoIiwic3RoJDAiLCJzd2l0Y2hfcmUiLCJzdG9yX2NvbW1hbmQiLCJzd2l0Y2hfbWFpbGJveCIsInVwZGF0ZV9zdG9yX3N0YXRlIiwic3Rvcl9zdGF0ZSIsInJ1bm5pbmdfcmVmIiwic3Rvcl9wcm9jZXNzIiwibWVzc2FnZV90ZXh0IiwicmVxdWVzdF91cCIsInYiLCJyZXF1ZXN0X2Rvd24iLCJpc19jb21wdXRpbmciLCJzZW5kIiwidGltZW91dCIsInJlcXVlc3RfY291bnQiLCJ1cmwiLCJtZXRoIiwiZGF0YSIsImh5ZHJhdGUiLCJmZWVkZXIiLCJyZXBseSIsImhhbmRsZXIiLCJzdGF0dXMiLCJyZXNwb25zZV90ZXh0IiwicmVzdWx0X2NvZGUiLCJyZXN1bHRfY29kZSQwIiwicmVzcG9uc2UiLCJyZXN1bHQiLCJrYXNhX2Vycm9yIiwibCIsImFjYyIsIm0iLCJzZWxmXzEiLCJzIiwiZmlsZV9saW5lX2lkIiwibGluZXMiLCJzaW11bGF0aW9uX2ludGVydmVudGlvbiIsImZsdXhfbWFwX2lkIiwic25hcHNob3RfaWQiLCJwbG90X2xpbWl0IiwicGxvdF9saW1pdF9wb2ludHMiLCJwbG90X2xpbWl0X29mZnNldCIsInZhbHVlIiwia2V5IiwiYXJncyIsInBhdXNlX2NvbmRpdGlvbiIsInNpbXVsYXRpb25fcGFyYW1ldGVyIiwicHJvamVjdHMiLCJwcm9qZWN0X3BhcmFtZXRlciIsInByb2plY3RfaWQiLCJwYXR0ZXJuU2hhcmluZyIsImYiLCJ2YSIsInZyIiwicG9zIiwiaWQiLCJjb250ZW50IiwiZmlsZV9pZCIsImFzdCIsIngiLCJ4JDAiLCJjb21waWwiLCJhY2N1cmFjeSIsImFjY3VyYWN5JDAiLCJmd2QiLCJid2QiLCJvcmlnaW4iLCJ0b3RhbCIsImkiLCJpJDAiLCJpJDEiLCJpJDIiLCJzaG9ydF9pZF9vcHQiLCJmaWxlbmFtZSIsImxpbmUiLCJjaHIiLCJhY2N1cmFjeV9jbSIsImFjY3VyYWN5X3NjYyIsImEiLCJiIiwib3B0aW9ucyIsImEkMCIsIndlYWsiLCJjYXVzYWwiLCJjbGllbnRJZFBhcmFtSWQiLCJjbGllbnRfaWQiLCJnZXRfY2xpZW50X2lkIiwic2V0X2NsaWVudF9pZCIsImNsaWVudF9pZCQwIiwiZm9udFNpemVQYXJhbUlkIiwiY3VycmVudEZvbnRTaXplIiwiaW5pdEZyb21TdG9yYWdlIiwic3QiLCJ4Iiwic2V0X3BhcmFtZXRlcnNfYXNfZGVmYXVsdCIsInYiLCJ1cGRhdGVGb250U2l6ZSIsImRlbHRhIiwic2V0X3N5bmNoIiwic3luY2giLCJhZ2VudF9jb2xvcmluZyIsImluaXQiLCJjbGllbnRfaWRzIiwic3luYyIsInNlbGZfMSIsInRpbWVvdXQiLCJtZXNzYWdlX3RleHQiLCJ4IiwicmVzcG9uc2VfbWVzc2FnZSIsInJlc3BvbnNlX3RleHQiLCJwYXR0ZXJuU2hhcmluZyIsIm92ZXJ3cml0ZXMiLCJvdXQiLCJsb2FkIiwiaW5pdCIsImUiLCJpbmZvcyIsImxvY2F0b3JzIiwiZmlsZW5hbWUiLCJwb3MiLCJrYXNhX3dvcmtlciIsImthc2FfbWFpbGJveCIsImthbW9oYV93b3JrZXIiLCJrYW1vaGFfbWFpbGJveCIsImthc3Rvcl93b3JrZXIiLCJ1cGRhdGVfc3Rvcl9zdGF0ZSIsInN0b3Jfc3RhdGUiLCJzcGVjX2xhYmVsIiwicmVtb3RlIiwic3BlY19pZCIsImh0dHAiLCJjbGkiLCJyZWFkX3NwZWMiLCJ1cmwiLCJmb3JtYXRfdXJsIiwibGVuZ3RoIiwiY2xlYW5lZF91cmwiLCJjbGVhbmVkIiwicGFyc2VkIiwicHJvdG9jb2wiLCJodHRwcyQxIiwiZmlsZSQxIiwiaHR0cCQxIiwiaHR0cHMkMCIsImZpbGUkMCIsImxhYmVsIiwiaHR0cCQwIiwiaHR0cHMiLCJmaWxlIiwic2VsZl8xIiwieCIsInJlc3BvbnNlX21lc3NhZ2UiLCJyZXNwb25zZV90ZXh0IiwicGF0dGVyblNoYXJpbmciLCJvdmVyd3JpdGVzIiwib3V0IiwibG9hZCIsImluaXQiLCJlIiwiaW5mb3MiLCJsb2NhdG9ycyIsImZpbGVuYW1lIiwicG9zIiwia2FzYV93b3JrZXIiLCJrYXNhX21haWxib3giLCJrYW1vaGFfd29ya2VyIiwia2Ftb2hhX21haWxib3giLCJrYXN0b3Jfd29ya2VyIiwic2VsZl8yIiwiZXhuIiwibXNnIiwibWVzc2FnZV90ZXh0Iiwic2V0X3N0YXRlIiwic3RhdGUiLCJjcmVhdGVfbWFuYWdlciIsImlzX25ldyIsInByb2plY3RfaWQiLCJ2ZXJzaW9uX3VybCIsImZyYW1lIiwiaXNfdmFsaWRfc2VydmVyIiwiZXJyb3JfbXNnIiwibWFuYWdlciIsImpzX25vZGVfcnVudGltZSIsInNldF9zcGVjIiwicnVudGltZSIsImN1cnJlbnRfc3RhdGUiLCJjcmVhdGVfc3BlYyIsImlkIiwibW9kZWwiLCJob3N0cyIsImFkZF91cmxzIiwidXJscyIsInVybHMkMCIsImxvYWQkMCIsInVybHMkMSIsInByb2plY3RzIiwic3luYyIsImluaXRfZGVmYXVsdF9wYXJhbWV0ZXJzIiwicGxvdFBlcmlvZFBhcmFtSWQiLCJwYXVzZUNvbmRpdGlvblBhcmFtSWQiLCJzZWVkUGFyYW1JZCIsInN0b3JlVHJhY2VQYXJhbUlkIiwic2hvd0RlYWRSdWxlc1BhcmFtSWQiLCJzaG93RGVhZEFnZW50c1BhcmFtSWQiLCJzaG93SXJyZXZlcnNpYmxlVHJhbnNpdGlvbnNQYXIiLCJwcm9qZWN0X2VxdWFsIiwiYSIsImIiLCJjYXRhbG9nX2VxdWFsIiwieCIsInkiLCJzdGF0ZV9lcXVhbCIsIm1vZGVsX2VxdWFsIiwiaW5pdF9zdGF0ZSIsInNldF9zdGF0ZSIsInN0YXRlIiwidXBkYXRlX3BhcmFtZXRlcnMiLCJoYW5kbGVyIiwic3QiLCJwcm9qIiwicHJvamVjdF9wYXJhbWV0ZXJzIiwiZGVmYXVsdF9wYXJhbWV0ZXJzIiwicHJvamVjdF9wYXJhbWV0ZXJzJDAiLCJkZWZhdWx0X3BhcmFtZXRlcnMkMCIsInNldF9wYXJhbWV0ZXJzX2FzX2RlZmF1bHQiLCJwYSIsImxzIiwidmEiLCJzZXRfcGxvdF9wZXJpb2QiLCJwbG90X3BlcmlvZCIsInBhcmFtIiwic2V0X3BhdXNlX2NvbmRpdGlvbiIsInBhdXNlX2NvbmRpdGlvbiIsInNldF9zZWVkIiwic2VlZCIsInNldF9zdG9yZV90cmFjZSIsInN0b3JlX3RyYWNlIiwic2V0X3Nob3dfZGVhZF9ydWxlcyIsInNob3dfZGVhZF9ydWxlcyIsInNldF9zaG93X2RlYWRfYWdlbnRzIiwic2hvd19kZWFkX2FnZW50cyIsInNldF9zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZSIsInNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYSIsInVwZGF0ZV9zdGF0ZSIsIm1lIiwicHJvamVjdF9jYXRhbG9nIiwib3V0IiwiY29tcHV0aW5nX3dhdGNoZXIiLCJtYW5hZ2VyIiwic2V0dGVyIiwiY2FuY2VsbGVkIiwiZGVsYXkiLCJsb29wIiwiYWRkX3Byb2plY3QiLCJpc19uZXciLCJwcm9qZWN0X2lkIiwic3RhdGVfdmEiLCJjYXRhbG9nIiwicGFyYW1zIiwicHJvamVjdF9tYW5hZ2VyIiwic2V0X2NvbXB1dGVzIiwicHJvamVjdF9pc19jb21wdXRpbmciLCJwcm9qZWN0X3dhdGNoZXJfY2FuY2VsIiwiY3JlYXRlX3Byb2plY3QiLCJzZXRfcHJvamVjdCIsImR1bW15X21vZGVsIiwicCIsIm1vZGVsX2NhdGFsb2ciLCJtb2RlbF9wYXJhbWV0ZXJzIiwibW9kZWwiLCJzeW5jIiwiY3VycmVudCIsInJlbW92ZV9maWxlcyIsIm0iLCJyZW1vdmVfcHJvamVjdCIsInN0YXRlJDAiLCJ2IiwiaCIsInByb2plY3RfY3VycmVudCIsIm91dCQwIiwiaW5pdF9wbG90X3BlcmlvZCIsImFyZyIsImFyZyQwIiwiYXJnJDEiLCJtc2ciLCJpbml0X3BhdXNlX2NvbmRpdGlvbiIsImluaXRfbW9kZWxfc2VlZCIsImluaXRfc3RvcmVfdHJhY2UiLCJpbml0X3Nob3dfZGVhZF9ydWxlcyIsImluaXRfc2hvd19kZWFkX2FnZW50cyIsImluaXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libCIsImluaXQiLCJleGlzdGluZ19wcm9qZWN0cyIsImRlZmF1bHQkMCIsImFyZ19wbG90X3BlcmlvZCIsImRlZmF1bHQkMSIsImFyZ19wYXVzZV9jb25kaXRpb24iLCJkZWZhdWx0JDIiLCJhcmdfbW9kZWxfc2VlZCIsImRlZmF1bHQkMyIsImFyZ19zdG9yZV90cmFjZSIsImRlZmF1bHQkNCIsImFyZ19zaG93X2RlYWRfcnVsZXMiLCJkZWZhdWx0JDUiLCJhcmdfc2hvd19kZWFkX2FnZW50cyIsImRlZmF1bHQkNiIsImFyZ19zaG93X2lycmV2ZXJzaWJsZV90cmFuc2l0aSIsInByb2plY3RzIiwiYWRkX3Byb2plY3RzIiwicHJvamVjdHMkMCIsInByb2plY3QiLCJlcnJvcnMiLCJldmFsX3dpdGhfcHJvamVjdCIsImxhYmVsIiwiZXJyb3JfbXNnIiwib25fcHJvamVjdF9jaGFuZ2VfYXN5bmMiLCJlcSIsIm9uIiwib3B0IiwiaW5pdF9vdGhlcnMiLCJvdGhlcnMiLCJzdGgiLCJvdGhlcnNfZXEiLCJlcV9wYWlyIiwib3RoIiwiZXJyb3JfbXNnJDIiLCJlcnJvcl9tc2ckMSIsImVycm9yX21zZyIsImVycm9yX21zZyQwIiwiZHVtbXlfY3Vyc29yX3BvcyIsImJsYW5rX3N0YXRlIiwic2V0X2RpcmVjdG9yeV9zdGF0ZSIsIm1vZGVsIiwicmVmcmVzaF9maWxlX2hvb2siLCJyZWdpc3Rlcl9yZWZyZXNoX2ZpbGVfaG9vayIsIngiLCJtIiwibmFtZSIsImN1cnJlbnRfZmlsZW5hbWUiLCJ3aXRoX2N1cnJlbnRfcG9zIiwiZXEiLCJvcHQiLCJmIiwiZGVmYXVsdCQwIiwic3RoIiwib24iLCJ3aXRoX2N1cnJlbnRfZmlsZSIsInN0YXRlIiwiYWN0aXZlIiwiZ2V0X2ZpbGUiLCJ0ZXh0IiwibmFtZSQwIiwibWFuYWdlciIsInJhbmsiLCJzZW5kX3JlZnJlc2giLCJsaW5lIiwib3V0X29mX3N5bmMiLCJmaWxlbmFtZSIsImNvbnRlbnQiLCJ1cGRhdGVfZGlyZWN0b3J5IiwicmVzZXQiLCJjdXJyZW50IiwiY2F0YWxvZyIsImFjYyIsImlkIiwicG9zaXRpb24iLCJkaXJlY3RvcnkiLCJjcmVhdGVfZmlsZSIsImZpbGVfbWV0YWRhdGEiLCJtYXRjaGluZ19maWxlIiwibWV0YWRhdGEiLCJtYXhfcG9zIiwiY2hvb3NlX2ZpbGUiLCJjaG9pY2UiLCJ0Iiwic2VsZWN0X2ZpbGUiLCJzZXRfY29udGVudCIsInNldF9jb21waWxlIiwiZmlsZV9pZCIsImNvbXBpbGUiLCJyYW5rJDAiLCJyZW1vdmVfZmlsZSIsImxvY2FsIiwieSIsImRvX2FfbW92ZSIsIngkMCIsImN1cnNvcl9wb3MiLCJwb3MiLCJzZXRfcG9zaXRpb24iLCJvcmRlcl9maWxlcyIsImZpbGVuYW1lcyIsIm9yZGVyX2ZpbGUiLCJpbmRleCIsInRhaWwiLCJjdXJzb3JfYWN0aXZpdHkiLCJjaCIsInYiLCJzeW5jIiwiY2FuZCIsImxvYWRfZGVmYXVsdCIsImVycm9ycyIsIm1zZyIsImxvYWRfbW9kZWxzIiwibW9kZWxzIiwiYWRkX21vZGVscyIsImxvYWRfZmlsZSIsIm1vZGVscyQwIiwidSIsImgiLCJmaWxlY29udGVudCIsImluaXQiLCJlcnJvcl9tc2ckOCIsImVycm9yX21zZyQ3IiwiZXJyb3JfbXNnJDYiLCJlcnJvcl9tc2ckNSIsImVycm9yX21zZyQ0IiwiZXJyb3JfbXNnJDMiLCJlcnJvcl9tc2ckMiIsImVycm9yX21zZyQxIiwiZXJyb3JfbXNnJDAiLCJlcnJvcl9tc2ciLCJkdW1teV9tb2RlbCIsInRfc2ltdWxhdGlvbl9zdGF0ZSIsInNpbXVsYXRpb24iLCJ0X3NpbXVsYXRpb25faW5mbyIsInNpbXVsYXRpb25faW5mbyIsIm1vZGVsX3N0YXRlX3RvX3N0cmluZyIsIm1vZGVsX3NpbXVsYXRpb25faW5mbyIsIm1vZGVsIiwibW9kZWxfc2ltdWxhdGlvbl9zdGF0ZSIsInNldF9zdGF0ZSIsInN0YXRlIiwidXBkYXRlX3NpbXVsYXRpb25fc3RhdGUiLCJzaW11bGF0aW9uX3N0YXRlIiwiZXZhbF93aXRoX3NpbV9tYW5hZ2VyIiwibGFiZWwiLCJoYW5kbGVyIiwicHJvamVjdF9oYW5kbGVyIiwibWFuYWdlciIsImZhaWxfbHd0IiwiZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIiwib3B0Iiwic3RoIiwic3RvcHBlZCIsInN0aCQwIiwiaW5pdGlhbGl6aW5nIiwic3RoJDEiLCJyZWFkeSIsInMiLCJldmFsX3doZW5fcmVhZHkiLCJzbGVlcF90aW1lIiwic3luYyIsInJlZnJlc2giLCJpbml0IiwiY29udGludWVfc2ltdWxhdGlvbiIsInBhdXNlX2NvbmRpdGlvbiIsInBhdXNlX3NpbXVsYXRpb24iLCJzdG9wX3NpbXVsYXRpb24iLCJzdGFydF9zaW11bGF0aW9uIiwic2ltdWxhdGlvbl9wYXJhbWV0ZXIiLCJvbl9lcnJvciIsImVycm9yX21zZ3MiLCJlcnJvciIsIm1zZyIsIm1lc3NhZ2UiLCJzaW11bGF0aW9uX3N0YXR1cyIsImludGVydmVuZV9zaW11bGF0aW9uIiwiY29kZSIsIm91dCIsInJlZnJlc2giLCJyIiwiciQwIiwiciQxIiwiY3JlYXRlX3Byb2plY3QiLCJwcm9qZWN0X2lkIiwic2V0X3Byb2plY3QiLCJjbG9zZV9wcm9qZWN0Iiwic2V0X21hbmFnZXIiLCJydW50aW1lX2lkIiwiY29uZmlndXJhdGlvbl9zZWVkX2lucHV0X2lkIiwicHJlZmVyZW5jZXNfbW9kYWxfaWQiLCJzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRfaWQiLCJwcmVmZXJlbmNlc19idXR0b24iLCJvcHRpb25fc2VlZF9pbnB1dCIsIm9wdGlvbl93aXRodHJhY2UiLCJvcHRpb25fd2l0aGRlYWRydWxlcyIsIm9wdGlvbl93aXRoZGVhZGFnZW50cyIsIm9wdGlvbl93aXRoaXJyZXZlcnNpYmxlIiwiZGVjcmVhc2VfZm9udCIsImluY3JlYXNlX2ZvbnQiLCJzZXR0aW5nc19jbGllbnRfaWRfaW5wdXQiLCJzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRfZG9tIiwib3B0aW9uX2h0dHBfc3luY2giLCJkcm9wZG93biIsIm1vZGVsIiwiY3VycmVudF9pZCIsInNwZWMiLCJzcGVjX2lkIiwibGlzdF90IiwiYmFja2VuZF9vcHRpb25zIiwiYmFja2VuZF9zZWxlY3QiLCJib2RpZXMiLCJzZXRfYnV0dG9uIiwic2F2ZV9idXR0b24iLCJoZWFkIiwiYm9keSIsImZvb3QiLCJtb2RhbCIsImNvbnRlbnQiLCJzZXRfYWN0aW9uIiwic2V0dGluZ3NfY2xpZW50X2lkIiwieCIsInN5bmNoX2NoZWNrYm94X2RvbSIsImlzX2NoZWNrZWQiLCJpbnB1dCIsInZhbHVlIiwibW9kZWxfc2VlZCIsInNldF9hbmRfc2F2ZV9hY3Rpb24iLCJvbmxvYWQiLCJzcCIsInRvZ2dsZV9lbGVtZW50IiwicHJvamVjdGlvbiIsImNvbnRlbnQiLCJtb2RlbCIsIm9wdGlvbl9sYWJlbCIsImxhYmVsIiwiZXhwb3J0X2NvbnRyb2xzIiwiZXhwb3J0X3NlbGVjdF9pZCIsImV4cG9ydF9maWxlbmFtZV9pZCIsImV4cG9ydF9idXR0b25faWQiLCJleHBvcnRfZGF0YV9sYWJlbCIsImV4cG9ydF9mb3JtYXRzIiwiZXhwb3J0X2ZpbGVuYW1lIiwiZXhwb3J0X2J1dHRvbiIsImZvcm1hdCIsImV4cG9ydF9mb3JtYXRzX3NlbGVjdCIsIngiLCJkb2N1bWVudCIsImxhYmVsX25ld3MiLCJ0YWJfaXNfYWN0aXZlIiwiY291bnRlciIsInNpbXVsYXRpb25faW5mbyIsImxhc3RfdmFsdWUiLCJ0YWJfYWN0aXZlIiwidiIsImJhZGdlIiwiY291bnQiLCJhcmd1bWVudHMkMCIsImtleSIsImsiLCJ2ZXJzaW9uIiwib3B0Iiwic3RoIiwidGVzdCIsImRldiIsInRlc3QkMCIsIm5hdmxpIiwiZm9yY2VfY2xhc3MiLCJkZWNvcmF0aW9ucyIsImRlZmF1bHRfYXR0cmlidXRlcyIsImwiLCJhdHRyaWJ1dGVzIiwidGV4dCIsIm5hdnRhYnMiLCJuYXZfdGFiX2lkIiwidCIsInRpIiwibGkiLCJhX2NsYXNzIiwib25lbmF2Y29udGVudCIsImFjdGl2ZSIsImNsYXNzZXMiLCJuYXZjb250ZW50IiwiaWQiLCJjIiwiY2wiLCJpZCQwIiwiaWQkMSIsImxldmVsIiwiZGVidWciLCJpbmZvIiwibm90aWNlIiwid2FybmluZyIsImVycm9yIiwiZmF0YWwiLCJleHRyYWN0IiwidmFsdWUiLCJ2YWx1ZSQwIiwiZmVhdHVyZXMiLCJkZWZhdWx0JDAiLCJmZWF0dXJlIiwibWF0Y2hlcyIsImlucHV0X2NoYW5nZSIsImlucHV0X2RvbSIsInNpZ25hbF9oYW5kbGVyIiwiaWRfZG9tIiwiY3JlYXRlX21vZGFsIiwidGl0bGVfbGFiZWwiLCJib2R5Iiwic3VibWl0X2xhYmVsIiwic3VibWl0IiwiYnV0dG9uIiwiZm9ybSIsInByb2plY3RfaWRfbW9kYWxfaWQiLCJwcm9qZWN0X2lkX2lucHV0IiwibGlfbmV3IiwibGlfcHJlZnMiLCJwcm9qZWN0X2lkX2lucHV0X2RvbSIsImNvbnRlbnQiLCJzZXR0aW5nc19jbGllbnRfaWQiLCJ4IiwibW9kZWwiLCJtb2RlbF9wcm9qZWN0X2lzX2NvbXB1dGluZyIsIm1vZGVsX3Byb2plY3RfaWQiLCJjdXJyZW50X3Byb2plY3RfaWQiLCJsaV9jbGFzcyIsInNwYW5fY2xvc2UiLCJldmVudCIsImIiLCJjbGFzc2VzIiwiY29tcHV0aW5nIiwiYV9wcm9qZWN0IiwiYWNjIiwib25sb2FkIiwib25yZXNpemUiLCJzZXRfbW9kZWxfaW50ZXJ2ZW50aW9uIiwibW9kZWxfaW50ZXJ2ZW50aW9uIiwiY3JlYXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyIiwicGFyYW0iLCJjb250aW51ZV9zaW11bGF0aW9uIiwicGF1c2VfY29uZGl0aW9uIiwicGF1c2Vfc2ltdWxhdGlvbiIsInN0b3Bfc2ltdWxhdGlvbiIsInN0YXJ0X3NpbXVsYXRpb24iLCJzaW11bGF0aW9uX3BhcmFtZXRlciIsImludGVydmVuZV9zaW11bGF0aW9uIiwibW9kZWxfcGVydHVyYmF0aW9uIiwidGV4dCIsImZvY3VzX3JhbmdlIiwicmFuZ2UiLCJmaWxlX2lkIiwibGluZSIsInNpbXVsYXRpb25fdHJhY2UiLCJtYW5hZ2VyIiwiZGF0YV9zdHJpbmciLCJkYXRhIiwic2ltdWxhdGlvbl9vdXRwdXRzIiwiZGF0YV9iaWdzdHJpbmciLCJoaWRkZW5fY2xhc3MiLCJ2aXNpYmxlX2NsYXNzIiwiaWQiLCJpZCQwIiwiaWQkMSIsImlkJDIiLCJtZXNzYWdlX25hdl9pbmNfaWQiLCJtZXNzYWdlX25hdl9kZWNfaWQiLCJtZXNzYWdlX2ZpbGVfbGFiZWxfaWQiLCJpZCQzIiwiaWQkNCIsImlkJDUiLCJpZCQ2IiwiaWQkNyIsImlkJDgiLCJpZCQ5IiwiaWQkMTAiLCJ2aXNpYmxlX29uX3N0YXRlcyIsIm9wdCIsInN0aCIsImFfY2xhc3MiLCJtb2RlbCIsImN1cnJlbnRfc3RhdGUiLCJpbnB1dCIsImJ1dHRvbiIsImZvcm0iLCJjb250ZW50Iiwib25sb2FkIiwiZm9ybV9kb20iLCJpbnB1dF9kb20iLCJoYW5kbGVyIiwibW9kZWxfcGVydHVyYmF0aW9uIiwieCIsInNpZ25hbF9jaGFuZ2UiLCJzaWduYWxfaGFuZGxlciIsIm0iLCJpbnB1dCQwIiwiY29udGVudCQwIiwiZG9tIiwib25sb2FkJDAiLCJ2YWx1ZSIsInYiLCJmb3JtYXRfZmxvYXRfc3RyaW5nIiwibiIsImxlbmd0aCIsImlucHV0JDEiLCJjb250ZW50JDEiLCJvbmxvYWQkMSIsInJlc2V0X3ZhbHVlIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwic2V0X2Vycm9yX2luZGV4IiwiZXJyb3JfaW5kZXgiLCJzYW5pdGl6ZV9pbmRleCIsImluZGV4IiwiZXJyb3JzIiwiaW5kZXgkMCIsImluZGV4JDEiLCJnZXRfbWVzc2FnZSIsImVycm9yIiwibWVzYWdlX25hdl90ZXh0IiwibWVzc2FnZV9uYXZfZGVjIiwibWVzc2FnZV9uYXZfaW5jIiwibWVzc2FnZV9uYXYiLCJtZXNzYWdlIiwicmFuZ2UiLCJyYW5nZSQwIiwiZmlsZV9sYWJlbF90ZXh0IiwiZmlsZV9sYWJlbCIsImVycm9yX21lc3NhZ2VfdGV4dCIsImVycm9yX21lc3NhZ2UiLCJhbGVydF9tZXNzYWdlcyIsImNvbnRlbnQkMiIsImZpbGVfY2xpY2tfaGFuZGxlciIsImluZGV4X2NsaWNrX2hhbmRsZXIiLCJkZWx0YSIsImluY19jbGlja19oYW5kbGVyIiwiZGVjX2NsaWNrX2hhbmRsZXIiLCJvbmxvYWQkMiIsIm91dF9vZl9zeW5jIiwiYnV0dG9uJDAiLCJjb250ZW50JDMiLCJvbmxvYWQkMyIsInN0YXJ0X2J1dHRvbl9kb20iLCJidXR0b24kMSIsImNvbnRlbnQkNCIsIm9ubG9hZCQ0IiwiYnV0dG9uJDIiLCJjb250ZW50JDUiLCJvbmxvYWQkNSIsImJ1dHRvbl9kb20iLCJidXR0b24kMyIsImNvbnRlbnQkNiIsIm9ubG9hZCQ2IiwiYnV0dG9uJDQiLCJjb250ZW50JDciLCJvbmxvYWQkNyIsImJ1dHRvbiQ1IiwiY29udGVudCQ4Iiwib25sb2FkJDgiLCJjb250ZW50JDkiLCJsYWJlbCIsImRlYnVnIiwib25sb2FkJDkiLCJwcm9ncmVzc19iYXIiLCJwZXJjZW50X3NpZ25hbCIsInZhbHVlX3NpZ25hbCIsInMiLCJ0aW1lX3Byb2dyZXNzX2JhciIsInNpbXVsYXRpb25faW5mbyIsInN0YXR1cyIsInRpbWUiLCJ0aW1lJDAiLCJ0aW1lX3BlcmNlbnQiLCJ0aW1lX3BlcmNlbnQkMCIsImV2ZW50X3Byb2dyZXNzX2JhciIsImV2ZW50IiwiZXZlbnQkMCIsImV2ZW50X3BlcmNlbnRhZ2UiLCJldmVudF9wZXJjZW50YWdlJDAiLCJ0cmFja2VkX2V2ZW50cyIsInN0YXRlIiwidHJhY2tlZF9ldmVudHMkMCIsInRyYWNrZWRfZXZlbnRzX2NvdW50IiwidHJhY2tlZF9ldmVudHNfbGFiZWwiLCJlZmZpY2llbmN5X2RldGFpbCIsImN1cnJlbnRfZXZlbnQiLCJ0IiwiYWxsIiwiZiIsImNvbnRlbnQkMTAiLCJzZXRfc3RhdGVfbG9nIiwic3RhdGVfbG9nIiwibWFuYWdlciIsImVmZiIsIm9ubG9hZCQxMCIsInN0b3BwZWRfYm9keSIsInN0b3BwZWRfcm93IiwicGF1c2VkX3JvdyIsImluaXRpYWxpemluZ19ib2R5IiwicnVubmluZ19ib2R5IiwiZm9vdGVyIiwiY29udGVudCQxMSIsIm9ubG9hZCQxMSIsIm9ucmVzaXplIiwibmF2bGkiLCJjb250ZW50Iiwib25sb2FkIiwib25yZXNpemUiLCJwcm90b3R5cGUiLCJjcmVhdGVfaGFuZGxlciIsImxhYmVsIiwiaGVhZCIsInRhaWwiLCJvbl9sYWJlbCIsIndyYXBwZXIiLCJoYW5kbGVyIiwieCIsInBvc2l0aW9uIiwiY29uc3RydWN0b3JfbGludCIsImNyZWF0ZV9saW50IiwibWVzc2FnZSIsInNldmVyaXR5IiwiZnJvbSIsInRvIiwicmVzdWx0IiwiY29uc3RydWN0b3JfY2hhbmdlIiwiY3JlYXRlX2NoYW5nZSIsImNvbnN0cnVjdG9yX2xpbnRfY29uZmlndXJhdGlvbiIsImNyZWF0ZV9saW50X2NvbmZpZ3VyYXRpb24iLCJkZWZhdWx0X2NvbmZpZ3VyYXRpb24iLCJmcm9tVGV4dEFyZWEiLCJkb20iLCJjb25maWd1cmF0aW9uIiwiY29tbWFuZHMiLCJjcmVhdGVfZmlsZSIsIm9wdCIsInN0aCIsInRleHQiLCJ0eHQiLCJjb250ZW50IiwiciIsInIkMCIsInNldF9maWxlIiwiZmlsZV9pZCIsImNsb3NlX2ZpbGUiLCJzZXRfZmlsZV9jb21waWxlIiwicmFuayIsImNvbXBpbGUiLCJvcmRlcl9maWxlcyIsImZpbGVuYW1lcyIsImV4cG9ydF9jdXJyZW50X2ZpbGUiLCJmaWxlbmFtZSIsImRhdGEiLCJmaWxlX25ld19tb2RhbF9pZCIsImZpbGVfbmV3X2lucHV0X2lkIiwiZmlsZV9kcm9wZG93bl9tZW51X2lkIiwiZmlsZV9uZXdfbGlfaWQiLCJmaWxlX29wZW5fbGlfaWQiLCJmaWxlX29wZW5fc2VsZWN0b3JfaWQiLCJmaWxlX2Nsb3NlX2xpX2lkIiwiZmlsZV9leHBvcnRfbGlfaWQiLCJmaWxlX2NvbXBpbGVfY2hlY2tib3giLCJlbGVtZW50X2dldF9maWxlbmFtZSIsImVsZW1lbnQiLCJlbGVtZW50X3NldF9maWxlbmFtZSIsIm5hbWUiLCJmaWxlX25ld19pbnB1dCIsImZpbGVfbmV3X2lucHV0X2RvbSIsImZpbGVfY2hlY2tib3giLCJmaWxlX2lkIiwiaXNfY2hlY2tlZCIsImNoZWNrZWRfYXR0cmlidXRlIiwib3Blbl9pbnB1dCIsImRyb3Bkb3duIiwibW9kZWwiLCJoaWRlX29uX2VtcHR5IiwibCIsInJhbmsiLCJjdXJyZW50X2ZpbGVfcG9zIiwibG9jYWwiLCJjb21waWxlIiwibGlfY2xhc3MiLCJmaWxlX2xpIiwic2VwYXJhdG9yX2xpIiwibmV3X2xpIiwib3Blbl9saSIsImNsb3NlX2xpIiwiZXhwb3J0X2xpIiwibGlfbGlzdCIsImZpbGVuYW1lIiwieCIsImZpbGUiLCJvdXRfb2Zfc3luYyIsImNvbnRlbnQiLCJvcmRlcl9maWxlcyIsImZpbGVuYW1lcyIsImZpbGVfc2VsZWN0X2hhbmRsZXIiLCJvcGVuX2lucHV0X2RvbSIsImZpbGVzIiwib25sb2FkIiwiZXZlbnQiLCJ0YXJnZXQiLCJpZCIsIndpdGhfZmlsZSIsImhhbmRsZXIiLCJzZXRfY29udGVudCIsImZpbGVuYW1lIiwiZmlsZWNvbnRlbnQiLCJjdXJyZW50X2ZpbGVuYW1lIiwiciIsInIkMCIsIm1zZyIsInRvZ2dsZV9idXR0b25faWQiLCJwYW5lbF9oZWFkaW5nX2dyb3VwX2lkIiwiY29kZW1pcnJvcl9pZCIsImVkaXRvcl9wYW5lbF9pZCIsInNldF9lZGl0b3JfZnVsbCIsImVkaXRvcl9mdWxsIiwic2V0X2ZpbGVuYW1lIiwiZmlsZW5hbWUiLCJtb3ZlX2N1cnNvcl9ob29rIiwic2V0X21vdmVfY3Vyc29yIiwibG9jIiwiZiIsImZpbGVfbGFiZWwiLCJ0b2dnbGVfYnV0dG9uIiwibWVudV9lZGl0b3JfZmlsZV9jb250ZW50IiwiYnV0dG9ucyIsInBhbmVsX2hlYWRpbmciLCJjb250ZW50IiwidGV4dGFyZWEiLCJtb2RlbCIsImVycm9yX2xpbnQiLCJlcnJvcnMiLCJwb3NpdGlvbiIsInAiLCJoeWRyYXRlIiwiZXJyb3IiLCJyYW5nZSIsImZpbGVfaWQiLCJhY2MiLCJ2YWx1ZSIsInZhbHVlJDAiLCJzZXR1cF9saW50IiwianVtcF90b19saW5lIiwiY29kZW1pcnJvciIsImxpbmUiLCJtb2RlIiwiY29vcmRzIiwieCIsInRvcCIsImVsZW1lbnQiLCJtaWRkbGVIZWlnaHQiLCJzY3JvbGxMaW5lIiwib25sb2FkIiwibGludF9jb25maWciLCJjb25maWd1cmF0aW9uIiwiZ3V0dGVyX29wdGlvbnMiLCJndXR0ZXJfb3B0aW9uIiwiaWQiLCJ0aW1lb3V0IiwiaGFuZGxlciIsImNoYW5nZSIsInRpbWVvdXQkMCIsImRlbGF5IiwiaGFuZGxlX3RpbWVvdXQiLCJmaWxlbmFtZSQwIiwiY29kZW1pcnJvciQwIiwicG9zIiwiY2giLCJ0b2dnbGVfYnV0dG9uX2RvbSIsImVkaXRvcl9mdWxsJDAiLCJyZWZyZXNoIiwiY2FuZCIsImJlZyIsImZpcnN0IiwiZW4iLCJsYXN0Iiwib25yZXNpemUiLCJwcmludF9zdHJpbmciLCJzIiwibGlzdCIsInByaW50X25ld2xpbmUiLCJwcmludF9zaW5nbGVfYmluZGluZ19zdGF0ZSIsImEiLCJwcmludF9zaW5nbGVfaW50ZXJuYWxfc3RhdGUiLCJwcmludF9jb3VudGVyX2ludGVydmFsIiwiYiIsImEkMCIsImluZiIsIm9wZW5fcmFuZ2UiLCJpbmYkMCIsIm9wZW5fcmFuZ2UkMCIsImIkMCIsInN1cCIsImNsb3NlX3JhbmdlIiwic3VwJDAiLCJjbG9zZV9yYW5nZSQwIiwicHJpbnRfY291bnRlcl9zdGF0ZSIsInByaW50X3NpdGUiLCJzaXRlIiwiY291bnRlcl9vcHQiLCJiaW5kaW5nX29wdCIsInByb3Bfb3B0Iiwic2l0ZV9uYW1lIiwiaSIsInNpdGVfbmFtZSQwIiwiYWdlbnRfbmFtZSIsImJpbmRpbmdfdHlwZV9zeW1ib2wiLCJsaXN0JDAiLCJsaXN0JDEiLCJsaXN0JDIiLCJwcmludF9hZ2VudCIsImFnZW50IiwiaW50ZXJmYWNlJDAiLCJsaXN0JDMiLCJwcmludF9zaXRlX2dyYXBoIiwiYWdlbnRfbGlzdCIsInByaW50X21ldGhvZF9oYW5kbGVyIiwibWgiLCJ1bmNhdWdodCIsImNhdWdodCIsIngiLCJsIiwibmF2bGkiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJ0YWJfd2FzX2FjdGl2ZSIsImNvbnRlbnQiLCJtYW5hZ2VyIiwiciIsInRpdGxlIiwibSIsIm91dCIsImNvbnN0cmFpbnRzIiwicGFuZWxzIiwiYiIsImEiLCJsaXN0IiwibGVtbWEiLCJoeXAiLCJjb25jbHVzaW9uIiwic2l0ZV9ncmFwaCIsImxpc3QkNCIsImxpc3QkMCIsImxpc3QkMSIsImJvb2wiLCJsaXN0JDIiLCJsaXN0JDMiLCJsaXN0JDUiLCJsaXN0JDYiLCJ0ZXh0cyIsImNvbnN0cmFpbnRzX2RpdiIsInBhcmVudF9oaWRlIiwicGFyZW50X3Nob3duIiwib25sb2FkIiwib25yZXNpemUiLCJjcmVhdGVfY29udGFjdF9tYXAiLCJpZCIsImNvbG9yaW5nIiwiZXhwb3J0X2Zvcm1hdF9pZCIsImNvbmZpZ3VyYXRpb24iLCJleHBvcnRfZmlsZW5hbWVfaWQiLCJleHBvcnRfYnV0dG9uX2lkIiwiZXhwb3J0X2RhdGFfbGFiZWwiLCJleHBvcnRfZm9ybV9pZCIsImlubGluZV9jb250ZW50IiwiZXhwb3J0X2ZpbGVuYW1lIiwiZXhwb3J0X2J1dHRvbiIsImhhbmRsZXIiLCJleHBvcnRfZm9ybWF0c19zZWxlY3QiLCJjb250ZW50Iiwib25sb2FkIiwiZXhwb3J0X2Zvcm1hdCIsImV4cG9ydF9idXR0b25fdG9nZ2xlIiwieCIsImlzX2Rpc2FibGVkIiwiZmlsZW5hbWUiLCJkZWZhdWx0JDAiLCJyb290IiwiZXhwb3J0X3N2ZyIsInN2Z19zdHlsZV9pZCIsInN2Z19kaXZfaWQiLCJleHBvcnRfcG5nIiwiZXhwb3J0X2pzb24iLCJzZXJpYWxpemVfanNvbiIsImRhdGEiLCJkaXNwbGF5X2lkIiwiZXhwb3J0X2lkIiwiYWNjdXJhY3lfY2hvb3Nlcl9pZCIsIm5hdmxpIiwic2V0X3RhYl9pc19hY3RpdmUiLCJ0YWJfaXNfYWN0aXZlIiwidGFiX3dhc19hY3RpdmUiLCJzZXRfYWNjdXJhY3kiLCJhY2N1cmFjeSIsImV4dHJhY3RfY29udGFjdF9tYXAiLCJjb250YWN0IiwiYWNjIiwiYWNjJDAiLCJjb250YWN0JDAiLCJjb250YWN0X21hcF9qcyIsIm1hbmFnZXIiLCJtaCIsIngiLCJjb250YWN0X2pzb24iLCJtYXBfanNvbiIsImRhdGEiLCJjb250YWN0X21hcF90ZXh0IiwiY29uZmlndXJhdGlvbiIsIm9wdGlvbl9nZW4iLCJsIiwiYWNjdXJhY3lfY2hvb3NlciIsImNvbnRlbnQiLCJhY2N1cmFjeV9mb3JtIiwicGFyZW50X2hpZGUiLCJwYXJlbnRfc2hvd24iLCJvbmxvYWQiLCJ2YSIsInZhJDAiLCJvbnJlc2l6ZSIsImNyZWF0ZV9ncmFwaF9sb2dnZXIiLCJpZCIsIm9uX2NsaWNrIiwiZW1wdHlfc3BoZXJlIiwiZHVtbXlfbW9kZWwiLCJ0b3RhbF9pbnB1dF9pZCIsImZ3ZF9pbnB1dF9pZCIsImJ3ZF9pbnB1dF9pZCIsImRpc3BsYXlfaWQiLCJyZW5kZXJpbmdfY2hvb3Nlcl9pZCIsImFjY3VyYWN5X2Nob29zZXJfaWQiLCJuYXZsaSIsInNldF90YWJfaXNfYWN0aXZlIiwidGFiX2lzX2FjdGl2ZSIsInRhYl93YXNfYWN0aXZlIiwic2V0X3RyYWNrX2N1cnNvciIsInRyYWNrX2N1cnNvciIsInNldF9tb2RlbCIsIm1vZGVsIiwiaW5mbHVlbmNlX25vZGVfbGFiZWwiLCJyIiwiciQwIiwidXBkYXRlX21vZGVsX2dyYXBoIiwiZiIsIm0iLCJnIiwidXBkYXRlX21vZGVsIiwieCIsIm5vZGUiLCJvcmlnaW4iLCJvcmlnaW5fbGFiZWwiLCJpbmZsdWVuY2VtYXAiLCJ0b3RhbF9pbnB1dCIsImZ3ZF9pbnB1dCIsImJ3ZF9pbnB1dCIsIm5leHRfbm9kZSIsInByZXZfbm9kZSIsInJlY2VudGVyIiwidGMiLCJ0cmFja19jdXJzb3Jfc3dpdGNoIiwiZXhwb3J0X2NvbmZpZyIsImZpbGVuYW1lIiwibWFuYWdlciIsImFjY3VyYWN5IiwiaW5mbHVlbmNlc19zdHJpbmciLCJkYXRhIiwicmVuZGVyaW5nIiwibCIsInJlbmRlcmluZ19jaG9vc2VyIiwib3B0aW9uX2dlbiIsImFjY3VyYWN5X2Nob29zZXIiLCJpc19jZW50ZXIiLCJvcmlnaW5fc2hvcnRfb3B0IiwiaWQiLCJhIiwiaWQkMCIsImEkMCIsImpzb25fdG9fZ3JhcGgiLCJsb2dnZXIiLCJpbmZsdWVuY2VfbWFwIiwibm9kZXMiLCJkaXJlY3RpdmVzX29mX25vZGUiLCJqc29uIiwibGFiZWwiLCJwb3MiLCJjb250ZXh0dWFsX2hlbHAiLCJmaWxsY29sb3IiLCJwb3MkMCIsImNvbnRleHR1YWxfaGVscCQwIiwiZmlsbGNvbG9yJDAiLCJiaWdnZXN0X2lkIiwibiIsIm1heF9ydWxlX2lkIiwiZ2V0X2lkX29mX25vZGVfaWQiLCJub2RlX2lkIiwiZ2V0X2lkX29mX25vZGUiLCJkaXJlY3RpdmVzIiwicHJpbnRfbWFwcyIsIm9wdCIsIm1hcCIsInN0aCIsInNvdXJjZSIsInNvdXJjZV9pZCIsInRhcmdldCIsImxhYmVsX2xpc3QiLCJ0YXJnZXRfaWQiLCJsYWJlbF9zdHJpbmciLCJkaXJlY3RpdmVzJDAiLCJ0YWJsZV9vZl9pbmZsdWVuY2VzX2pzb24iLCJhY2MiLCJlIiwibmFtZXIiLCJvcmlnaW5faWRfb3B0Iiwib3JpZ2luX2lkIiwic3JjIiwiZHN0IiwiYnkiLCJvbiIsInYiLCJ2JDAiLCJwb3NpdGl2ZV9ieSIsInBvc2l0aXZlX29uIiwibmVnYXRpdmVfYnkiLCJuZWdhdGl2ZV9vbiIsInBvcF9jZWxsIiwidCIsInBvc2l0aXZlIiwiZmlsbF90YWJsZSIsImFjYyQwIiwiYnkkMCIsIm9uJDAiLCJieSQxIiwiYiIsIm9uJDEiLCJvIiwibGluZSIsImFjYyQxIiwiZHJhd190YWJsZSIsIm91dHMiLCJpbmZsdWVuY2Vfc3BoZXJlIiwiY29udGVudCIsImFjY3VyYWN5X2Zvcm0iLCJncmFwaF9mb3JtIiwic3BoZXJlIiwiZXJyb3IiLCJ0b3RhbCIsImJ3ZCIsImZ3ZCIsImluZmx1ZW5jZXMiLCJidWYiLCJmbXQiLCJsb2dnZXJfZ3JhcGgiLCJncmFwaCIsImdyYXBoX2pzb24iLCJuZWl0aGVyX2djX21lIiwiY3Vyc29yX3BvcyIsIm5vcl9nY19tZSIsInBhcmVudF9oaWRlIiwicGFyZW50X3Nob3duIiwib25sb2FkIiwidmEiLCJ2YSQwIiwib3JpZ2luX3JlZmluZWQiLCJvbnJlc2l6ZSIsIm5hdmxpIiwic2V0X3RhYl9pc19hY3RpdmUiLCJ0YWJfaXNfYWN0aXZlIiwidGFiX3dhc19hY3RpdmUiLCJzaXRlIiwiYSIsInByaW50X2VkZ2UiLCJsaXN0IiwiZCIsImMiLCJiIiwiY29udGVudCIsIm1hbmFnZXIiLCJtaCIsIm0iLCJzY2MiLCJzY2MkMCIsImxpc3RfZWRnZXMiLCJsaXN0JDAiLCJsaXN0JDEiLCJvdXRwdXQiLCJwYXJlbnRfaGlkZSIsInBhcmVudF9zaG93biIsIm9ubG9hZCIsIm9ucmVzaXplIiwidGFiIiwic2tpcCIsInBsdXJhbCIsInJpZ2h0c3VicGFuZWxfaWQiLCJuYXZsaSIsInJpZ2h0c3VicGFuZWwiLCJlZGl0b3JfZnVsbCIsImNoaWxkc19oaWRlIiwiYiIsImNvbnRlbnQiLCJpbml0X2RlYWRfcnVsZXMiLCJtb2RlbCIsIm1hbmFnZXIiLCJtaCIsImxpc3QiLCJhY2MiLCJydWxlIiwidGV4dCIsIndhcm5pbmdzIiwiaW5pdF9kZWFkX2FnZW50cyIsImFnZW50IiwicmFuZ2UiLCJpbml0X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmEiLCJjb250ZXh0X2xpc3QiLCJ0YWIkMCIsInNraXAkMCIsInBsdXJhbCQwIiwiZm10IiwiYSIsImRvbnRfZ2NfbWUiLCJvbmxvYWQiLCJvbnJlc2l6ZSIsInNldF90YWJfaXNfYWN0aXZlIiwidGFiX2lzX2FjdGl2ZSIsInNldF9kaW5faWQiLCJkaW5faWQiLCJtYW5hZ2VyIiwiZGluX2lkcyIsImlkIiwib3V0IiwiZGluX2xpc3QiLCJkaW5fc2VsZWN0IiwieCIsImRpbl9kYXRhIiwiZGluIiwiciIsImFjYyIsImRpbl9oZWFkZXIiLCJhbGwiLCJpIiwiZGF0YSIsInYiLCJib2R5IiwiZGluX3RhYmxlIiwidGhlYWQiLCJleHBvcnRfY3VycmVudF9kaW4iLCJ0b19zdHJpbmciLCJtaW1lIiwiZmlsZW5hbWUiLCJleHBvcnRfY29uZmlndXJhdGlvbiIsImNvbnRlbnQiLCJuYXZsaSIsInN0YXRlIiwic3RhdGUkMCIsIm9ubG9hZCIsIm9ucmVzaXplIiwic2V0X3RhYl9pc19hY3RpdmUiLCJ0YWJfaXNfYWN0aXZlIiwidGFiX3dhc19hY3RpdmUiLCJsaW5lX2NvdW50Iiwic3RhdGUiLCJzdGF0ZSQwIiwibmF2bGkiLCJjb250ZW50IiwieCIsIngkMCIsImxpc3QiLCJ0ZXh0IiwibWFuYWdlciIsInN0YXRlX2xvZyIsInBhcmVudF9oaWRlIiwicGFyZW50X3Nob3duIiwib25sb2FkIiwib25yZXNpemUiLCJzZWxlY3RfaWQiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJzZXRfY3VycmVudF9maWxlIiwiY3VycmVudF9maWxlIiwidXBkYXRlX291dHB1dHMiLCJrZXkiLCJtYW5hZ2VyIiwibGluZXMiLCJmaWxlX2NvdW50Iiwic3RhdGUiLCJzdGF0ZSQwIiwibmF2bGkiLCJ4bWwiLCJzZWxlY3QiLCJmaWxlX2xpbmVfaWRzIiwiY3VycmVudF9maWxlX2lkIiwiZmlsZV9vcHRpb25zIiwieCIsInNlbGVjdF9maWxlIiwiZmlsZV9zZWxlY3QiLCJsaW5lIiwiZmlsZV9jb250ZW50Iiwic2VsZWN0X291dHB1dHMiLCJzZWxlY3RfZG9tIiwiZmlsZWluZGV4IiwiY29udGVudCIsInQiLCJvbmxvYWQiLCJvbnJlc2l6ZSIsImNyZWF0ZV9vYnNlcnZhYmxlX3Bsb3QiLCJtYWluX2Rpdl9pZCIsImRpdl9kaXNwbGF5X2lkIiwiZXhwb3J0X2lkIiwicGxvdF9wb2ludHNfaW5wdXRfaWQiLCJwbG90X29mZnNldF9pbnB1dF9pZCIsInNldF9vZmZzZXQiLCJvZmZzZXQiLCJkZWZhdWx0X3BvaW50Iiwic2V0X3BvaW50cyIsInBvaW50Iiwic2V0X3RhYl9pc19hY3RpdmUiLCJ0YWJfaXNfYWN0aXZlIiwicGxvdF9yZWYiLCJoYXNfcGxvdCIsInN0YXRlIiwic3RhdGUkMCIsImV4cG9ydF9qc29uIiwiZmlsZW5hbWUiLCJtYW5hZ2VyIiwicGxvdCIsImRhdGEiLCJleHBvcnQkMCIsIm1pbWUiLCJwbG90X3BvaW50c19pbnB1dCIsIm1heF9vZmZzZXQiLCJwbG90X29mZnNldF9pbnB1dCIsInNpbXVsYXRpb25faW5mb19vZmZzZXRfbWF4Iiwic2ltdWxhdGlvbl9pbmZvIiwicGxvdF9zaXplIiwidXBkYXRlX29mZnNldCIsInVwZGF0ZV9vZmZzZXRfaW5wdXQiLCJzaW11bGF0aW9uX21vZGVsIiwic2ltdWxhdGlvbl9pbmZvJDAiLCJvZmZzZXRfbWF4Iiwib2xkX29mZnNldCIsIm9mZnNldCQwIiwib2Zmc2V0X2N1cnJlbnQiLCJwbG90X29mZnNldF9pbnB1dF9kb20iLCJ4IiwibmV3X29mZnNldCIsInBsb3RfcGFyYW1ldGVyIiwicG9pbnQkMCIsInVwZGF0ZV9wbG90IiwianNfcGxvdCIsIm9ubG9hZF9wbG90X3BvaW50c19pbnB1dCIsInBsb3RfcG9pbnRzX2lucHV0X2RvbSIsImpzX3BvaW50IiwiZXYiLCJwbG90X3BvaW50c19zdHJpbmciLCJwbG90X3BvaW50JDAiLCJwbG90X3BvaW50c19vcHRpb24iLCJwbG90X3BvaW50cyIsInBsb3RfcG9pbnQiLCJwbG90X3BvaW50X3N0cmluZyIsImNvbmZpZ3VyYXRpb24iLCJtb2RlbCIsIm91dCIsInhtbCIsImV4cG9ydF9jb250cm9scyIsImNvbnRlbnQiLCJzIiwib25sb2FkIiwidmFsdWUiLCJwbG90X2NvdW50IiwibmF2bGkiLCJvbnJlc2l6ZSIsImNyZWF0ZV9zbmFwc2hvdCIsImlkIiwiY29sb3JpbmciLCJzZWxlY3RfaWQiLCJkaXNwbGF5X2lkIiwiZm9ybWF0X3NlbGVjdF9pZCIsInNldF90YWJfaXNfYWN0aXZlIiwidGFiX2lzX2FjdGl2ZSIsInNldF9jdXJyZW50X3NuYXBzaG90IiwiY3VycmVudF9zbmFwc2hvdCIsInN0cmluZ190b19kaXNwbGF5X2Zvcm1hdCIsInNldF9kaXNwbGF5X2Zvcm1hdCIsImRpc3BsYXlfZm9ybWF0Iiwic25hcHNob3RfY291bnQiLCJzdGF0ZSIsInN0YXRlJDAiLCJuYXZsaSIsImNvbmZpZ3VyYXRpb25fdGVtcGxhdGUiLCJpZCIsImFkZGl0aW9uYWxfaGFuZGxlcnMiLCJzIiwianNvbl9oYW5kbGVyIiwia2FwcGFfaGFuZGxlciIsImZpbGVuYW1lIiwiZGF0YSIsImRvdF9oYW5kbGVyIiwiZGVmYXVsdF9oYW5kbGVycyIsIm1vZGVsIiwic2ltdWxhdGlvbl9pbmZvIiwiY29uZmlndXJhdGlvbl9rYXBwYSIsImNvbmZpZ3VyYXRpb25fZ3JhcGgiLCJyZW5kZXJfc25hcHNob3RfZ3JhcGgiLCJzbmFwc2hvdF9qcyIsInNuYXBzaG90IiwianNvbiIsImNvbnRhY3RfbWFwIiwieCIsInNlbGVjdF9zbmFwc2hvdCIsImRvbSIsImZpbGVpbmRleCIsImluZGV4Iiwic2ltdWxhdGlvbl9vdXRwdXQiLCJpbmRleCQwIiwibWFuYWdlciIsInNuYXBzaG90X2lkcyIsInNuYXBzaG90X2lkIiwiZiIsImYkMCIsInNlbGVjdCIsInNuYXBzaG90cyIsImkiLCJzbmFwc2hvdF9jbGFzcyIsImVtcHR5Iiwic2luZ2xlIiwibXVsdGlwbGUiLCJ4bWwiLCJsaXN0Iiwic25hcHNob3RfZmlsZSIsInNuYXBzaG90X2xhYmVsIiwic25hcHNob3Rfc2VsZWN0Iiwic25hcHNob3RfY2hvb3NlciIsInRvZ2dsZV9jb250cm9scyIsImthcHBhIiwiZ3JhcGgiLCJleHBvcnRfY29udHJvbHMiLCJzbmFwc2hvdCQwIiwia2FwcGFfc25hcHNob3RfZGlzcGxheSIsImthcHBhX2dyYXBoX2Rpc3BsYXkiLCJmb3JtYXRfY2hvb3NlciIsImNvbnRlbnQiLCJvbmxvYWQiLCJzbmFwc2hvdF9zZWxlY3RfZG9tIiwiZm9ybWF0X3NlbGVjdF9kb20iLCJ1cGRhdGVfZm9ybWF0IiwiZm9ybWF0X3RleHQiLCJmb3JtYXQiLCJvbnJlc2l6ZSIsImNyZWF0ZV9zdG9yeV9yZW5kZXJpbmciLCJpZCIsImdyYXBoX2Rpc3BsYXlfaWQiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJ0YWJfd2FzX2FjdGl2ZSIsIm5hdmxpIiwibm9uZV9jaGVja2JveCIsIndlYWtfY2hlY2tib3giLCJzdHJvbmdfY2hlY2tib3giLCJub25lX2JveCIsIndlYWtfYm94Iiwic3Ryb25nX2JveCIsImxhdW5jaF9idXR0b24iLCJsaXN0X2NvbnRyb2wiLCJzdG9yeV9saXN0IiwiY20iLCJpZCIsInN0b3J5X2xpc3RfaHRtbCIsInNlbGVjdF9zdG9yaWVzIiwic2VsZWN0X3N0b3JpZXNfZG9tIiwic2V0dXBfZm9ybSIsImxvZ19jb250cm9sIiwic3RvcnlfbG9nIiwic2V0X2luZm8iLCJjdXJyZW50X2luZm8iLCJsaW5lIiwic3RvcnlfbG9nX2h0bWwiLCJsb2dfZGl2IiwibG9nX3BhbmVsIiwic3RvcnlfZ3JhcGgiLCJjb250ZW50IiwibGlmdF9yZXN1bHQiLCJ4IiwiZSIsImRvX3VwZGF0ZV9jb21wcmVzc2lvbl9sZXZlbCIsIm1hbmFnZXIiLCJjYXVzYWwiLCJ3ZWFrIiwic3Ryb25nIiwidXBkYXRlX2NvbXByZXNzaW9uX2xldmVsIiwicHJlZF9pZCIsInNldF9hX3N0b3J5IiwidmEiLCJ2IiwiZCIsImYiLCJpbnNwZWN0X3N0b3JpZXMiLCJiIiwiYWNjIiwicGFyZW50X2hpZGUiLCJwYXJlbnRfc2hvd24iLCJvbmxvYWQiLCJ0cmFjZSIsIm9ucmVzaXplIiwibmF2X3RhYl9pZCIsIm5hdmNvbnRlbnRzX2lkIiwibmF2dGFicyIsInMiLCJzdG9yeV9jbGFzcyIsIm5hdmNvbnRlbnRzIiwib25sb2FkIiwib25yZXNpemUiLCJzeW5jIiwiaW5pdCIsImxvb3AiLCJoIiwidCIsImxvb3Bfc3luYyIsIm9ubG9hZCIsIm9ubG9hZCIsIm1haW4iLCJ4Il0sInNvdXJjZXMiOlsiL2J1aWx0aW4vK2ludDY0LmpzIiwiL2J1aWx0aW4vK21sQnl0ZXMuanMiLCIvYnVpbHRpbi8rZmFpbC5qcyIsIi9idWlsdGluLytzdGRsaWIuanMiLCIvYnVpbHRpbi8rc3lzLmpzIiwiL2J1aWx0aW4vK2JhY2t0cmFjZS5qcyIsIi9idWlsdGluLytqc2xpYi5qcyIsIi9idWlsdGluLytmb3JtYXQuanMiLCIvYnVpbHRpbi8raWVlZV83NTQuanMiLCIvYnVpbHRpbi8rZWZmZWN0LmpzIiwiL2J1aWx0aW4vK2ZzX25vZGUuanMiLCIvYnVpbHRpbi8rZnMuanMiLCIvYnVpbHRpbi8rdW5peC5qcyIsIi9idWlsdGluLytmc19mYWtlLmpzIiwiL2J1aWx0aW4vK25hdC5qcyIsIi9idWlsdGluLytncmFwaGljcy5qcyIsIi9idWlsdGluLytydW50aW1lX2V2ZW50cy5qcyIsIi9idWlsdGluLyttYXJzaGFsLmpzIiwiL2J1aWx0aW4vK2lvLmpzIiwiL2J1aWx0aW4vK2djLmpzIiwiL2J1aWx0aW4vK2JpZ2FycmF5LmpzIiwiL2J1aWx0aW4vK3BhcnNpbmcuanMiLCIvYnVpbHRpbi8raW50cy5qcyIsIi9idWlsdGluLytoYXNoLmpzIiwiL2J1aWx0aW4vK29iai5qcyIsIi9idWlsdGluLytjb21wYXJlLmpzIiwiL2J1aWx0aW4vK2pzbGliX2pzX29mX29jYW1sLmpzIiwiL2J1aWx0aW4vK2JpZ3N0cmluZy5qcyIsIi9idWlsdGluLyttZDUuanMiLCIvYnVpbHRpbi8rc3RyLmpzIiwiL2J1aWx0aW4vK2xleGluZy5qcyIsIi9idWlsdGluLythcnJheS5qcyIsIi9idWlsdGluLytkb21haW4uanMiLCIvYnVpbHRpbi8rc3luYy5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2J1aWx0aW4vK3BybmcuanMiLCIvYnVpbHRpbi8renN0ZC5qcyIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsRm9ybWF0QmFzaWNzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxBdG9taWMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3N0ZGxpYi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcGVydmFzaXZlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc2VxLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2VpdGhlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9ib29sLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jaGFyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC91Y2hhci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvbGlzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvaW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9ieXRlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC91bml0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9tYXJzaGFsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9vYmoubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvaW50MzIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2ludDY0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9uYXRpdmVpbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2xleGluZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcGFyc2luZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc2V0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9tYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3N0YWNrLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsTGF6eS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc3RyZWFtLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9hcmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3ByaW50ZXhjLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9mdW4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2djLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9kaWdlc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvd2Vhay5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZm9ybWF0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zY2FuZi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY2FsbGJhY2subWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbE9PLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxNb2QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2dlbmxleC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZXBoZW1lcm9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY29tcGxleC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvYmlnYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lX18ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9qc19vZl9vY2FtbF9fLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2pzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9kb20ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3R5cGVkX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9maWxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9kb21faHRtbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvZm9ybS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwveG1sSHR0cFJlcXVlc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3dvcmtlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvd2ViU29ja2V0cy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvd2ViR0wubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3JlZ2V4cC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvdXJsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9zeXNfanMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3Jlc2l6ZU9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9wZXJmb3JtYW5jZU9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9tdXRhdGlvbk9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9qc3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9qc29uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9jU1MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2RvbV9ldmVudHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2RvbV9zdmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2V2ZW50U291cmNlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9maXJlYnVnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9nZW9sb2NhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvaW50ZXJzZWN0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2ludGwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2NhdGVnb3J5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9mbXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2NzZXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL3BtYXJrLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9hdXRvbWF0YS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvY29sb3JfbWFwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9ncm91cC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvY29yZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvZW1hY3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL3N0ci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvZ2xvYi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvcGVybC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvcGNyZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvcG9zaXgubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL2Z1bmN0b3IveG1sX3dyYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL2Z1bmN0b3IveG1sX3N0cmVhbS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci94bWxfcHJpbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL2Z1bmN0b3IveG1sX2l0ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL2Z1bmN0b3Ivc3ZnX2YubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL2Z1bmN0b3IvaHRtbF9mLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi90eXhtbC90eXhtbF94bWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL3R5eG1sX3N2Zy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvdHl4bWxfaHRtbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmVhY3RpdmVEYXRhL3JlYWN0aXZlRGF0YS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtdHl4bWwvanNfb2Zfb2NhbWxfdHl4bWxfXy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtdHl4bWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC10eXhtbC90eXhtbF9jYXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC10eXhtbC90eXhtbF9qcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9zd2l0Y2gubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3Rfc2VxLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X3N0cmVhbS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9yZXN1bHQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3RfcHF1ZXVlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3RfcG9vbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9tdmFyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X211dGV4Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X2NvbmRpdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0X3JlYWN0L2x3dF9yZWFjdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtbHd0L2pzX29mX29jYW1sX2x3dF9fLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvbHd0X3htbEh0dHBSZXF1ZXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvbHd0X2pzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvbHd0X2pzb25wLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvbHd0X2pzX2V2ZW50cy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtbHd0L2x3dF9maWxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvanNfb2Zfb2NhbWxfbHd0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Vhc3ktZm9ybWF0L2Vhc3lfZm9ybWF0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfdXRpbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX3NoYXJlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfaW5idWYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2JpbmlvdS9iaV9vdXRidWYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2JpbmlvdS9iaV92aW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfc3RyZWFtLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfaW8ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2JpbmlvdS9iaV9kdW1wLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi95b2pzb24veW9qc29uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9hdGRnZW4tcnVudGltZS91dGlsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9hdGRnZW4tcnVudGltZS9vdl9ydW4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2F0ZGdlbi1ydW50aW1lL29qX3J1bi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYXRkZ2VuLXJ1bnRpbWUvb2JfcnVuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9hdGRnZW4tcnVudGltZS9qc29uX2FkYXB0ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9keW5hbWljQXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9sYXJnZUFycmF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvdG9vbHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9qc29uVXRpbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3N0b3AubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9zZXRNYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9tb2RzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvb3B0aW9uX3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9sb2MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9wcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3ZhbE1hcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3Jlc3VsdF91dGlsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvcmVuYW1pbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9yYW5kb21fdHJlZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3BwX2h0bWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9vcGVyYXRvci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL25ici5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL0V4Y2VwdGlvbkRlZm4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9uYW1lZERlY2xzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvbGlzdF91dGlsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvaW50Q29sbGVjdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2luZmluaXRlX2J1ZmZlcnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9oYXNoZWRfbGlzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2ZyYWN0aW9ucy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2ZpZm8ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9jcmMzMi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2NvbG9yLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvY2lyY3VsYXJfYnVmZmVycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2NhY2hlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvYmlnYnVmZmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvYmFzZTY0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2l0ZUdyYXBocy91c2VyX2dyYXBoLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2l0ZUdyYXBocy9zaWduYXR1cmUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaXRlR3JhcGhzL3NuYXBzaG90Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2l0ZUdyYXBocy9hZ2VudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpdGVHcmFwaHMvZWRnZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaXRlR3JhcGhzL25hdmlnYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL3Jhd19taXh0dXJlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9hbGdfZXhwci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vY29udGFjdF9tYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL3BhdHRlcm4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL21hdGNoaW5nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9pbnN0YW50aWF0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9wcmltaXRpdmVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9sS2FwcGEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL3BhdHRlcm5fY29tcGlsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL3BhdHRlcm5fZGVjb21waWxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vbW9kZWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL2thcHBhX3ByaW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL2NvbmZpZ3VyYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL2FsZ19leHByX2V4dHJhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi90cmFjZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vY291bnRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vZGF0YS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vZmx1eG1hcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vcm9vdHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL2luc3RhbmNlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vZXhwcl9pbnRlcnByZXRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vZ2VuZXJpY19ydWxlX2ludGVycHJldGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi9zdGF0ZV9pbnRlcnByZXRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vcmVwbGF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9hc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2NvdW50ZXJzX2NvbXBpbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9sS2FwcGFfY29tcGlsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHkiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2NzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2xleGVyNC5tbGwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2tsZXhlcjQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2tmaWxlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seSIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2thbW9oYV9tcGkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2V2YWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2V2YWx1YXRvci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL0thU2FfcmVwL3R5cGVfaW50ZXJmYWNlL3B1YmxpY19kYXRhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdmVyc2lvbi92ZXJzaW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL3N1cGVyYXJnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL3N1cGVyYXJnVGsubm90ay5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9jb21tb25fYXJncy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9ydW5fY2xpX2FyZ3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvcHJvZ3Jlc3NfcmVwb3J0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL2thcHBhX2ZpbGVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL3BwX3N2Zy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9wYXJhbWV0ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvb3V0cHV0cy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9rYXNpbV9hcmdzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL2NsaV9pbml0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL2FnZW50X2FyZ3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9sb2dnaW5nL2xvZ2dlcnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9sb2dnaW5nL2xvZ2dlcnNfc3RyaW5nX29mX29wLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xhc3NpY2FsX2dyYXBocy9ncmFwaF9sb2dnZXJzX3NpZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsYXNzaWNhbF9ncmFwaHMvZ3JhcGhfbG9nZ2Vycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsYXNzaWNhbF9ncmFwaHMvZ3JhcGhfanNvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvc3ltYm9sX3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9yZW1hbmVudF9zdGF0ZV9zaWduYXR1cmUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wYXJhbWV0ZXJzL2V4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9yZW1hbmVudF9wYXJhbWV0ZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9vZGVfYXJncy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvaGVhZGVycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvZmlsZU5hbWVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9nZXRfb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZXJyb3JfaGFuZGxlcnMvZXhjZXB0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZXJyb3JfaGFuZGxlcnMvbGlmdF9lcnJvcl9sb2dzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcHJvZmlsaW5nL3N0b3J5UHJvZmlsaW5nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy9tYXBfd3JhcHBlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL0thU2FfcmVwL21vcmVfZGF0YXN0cnVjdHVyZXMvd29ya2luZ19saXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy9pbnRfc3RvcmFnZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL0thU2FfcmVwL21vcmVfZGF0YXN0cnVjdHVyZXMvdW5pb25fZmluZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL0thU2FfcmVwL21vcmVfZGF0YXN0cnVjdHVyZXMvdG9vbHNfa2FzYS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL0thU2FfcmVwL21vcmVfZGF0YXN0cnVjdHVyZXMvbWlzY19zYS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL0thU2FfcmVwL21vcmVfZGF0YXN0cnVjdHVyZXMvaGFzaC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL0thU2FfcmVwL21vcmVfZGF0YXN0cnVjdHVyZXMvZ3JhcGhzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy9kaWN0aW9uYXJ5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvdGlja19zdG9yaWVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvZ3JhcGhfY2xvc3VyZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2NhdXNhbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3ByZWRpY2F0ZV9tYXBzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvcHJpb3JpdHkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9zdG9yeV9qc29uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvY2Zsb3dfaGFuZGxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2thcHBhX2luc3RhbnRpYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9wb19jdXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9wc2V1ZG9faW52ZXJzZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2JsYWNrYm9hcmRfZ2VuZXJhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2JsYWNrYm9hcmQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9wcm9wYWdhdGlvbl9oZXVyaXN0aWNzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvZ2VuZXJpY19icmFuY2hfYW5kX2N1dF9zb2x2ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9ibGFja19saXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvZGFnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvdXRpbGl0aWVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvdXRpbGl0aWVzX2V4cGVydC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2NmbG93X2pzX2ludGVyZmFjZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2NvbXByZXNzaW9uX21haW4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9rYXN0b3JfbXBpLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvZGFnMi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9hcGlfY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2FwaV90eXBlc19qLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL3N3aXRjaG1hbl9jbGllbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvbXBpX21lc3NhZ2Vfai5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9tcGlfYXBpLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2FwaV9kYXRhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2Zha2V6aXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkva2FwcGFfZmFjYWRlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL21hbmFnZXJfc2ltdWxhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9rYXN0b3JfY2xpZW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2thc2FfY2xpZW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2thbW9oYV9jbGllbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvZW52aXJvbm1lbnRfbWVtb3J5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2FwaV9ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZV9lcnJvci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvY29tbW9uX3N0YXRlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9Kc05vZGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3Jlc3RfYXBpLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZV9zZXR0aW5ncy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvd2ViX3dvcmtlcl9hcGkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N0YXRlX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N0YXRlX3Byb2plY3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N0YXRlX2ZpbGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N0YXRlX3NpbXVsYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3BhbmVsX3Byb2plY3RzX2NvbnRyb2xsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL21vZGFsX3ByZWZlcmVuY2VzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS91aV9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3BhbmVsX3Byb2plY3RzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZV9wZXJ0dXJiYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3BhbmVsX3NldHRpbmdzX2NvbnRyb2xsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3BhbmVsX3NldHRpbmdzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfYWJvdXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2NvZGVtaXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL21lbnVfZWRpdG9yX2ZpbGVfY29udHJvbGxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvbWVudV9lZGl0b3JfZmlsZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3VicGFuZWxfZWRpdG9yX2NvbnRyb2xsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N1YnBhbmVsX2VkaXRvci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdXRpbGl0eS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX2NvbnN0cmFpbnRzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9qc19jb250YWN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS93aWRnZXRfZXhwb3J0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfY29udGFjdF9tYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2pzX2dyYXBobG9nZ2VyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfaW5mbHVlbmNlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX3BvbHltZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfZWRpdG9yLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfZmx1eC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX2xvZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX291dHB1dHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2pzX3Bsb3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9wbG90Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9qc19zbmFwc2hvdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX3NuYXBzaG90Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9qc19zdG9yeS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX3N0b3JpZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3BhbmVsX3RhYi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGVfdWkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL0pzU2ltLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zdGRfZXhpdC5tbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0EsQzs7Rzs7O1E7Uzs7O0c7STtJO0k7RztFOzs7O0dBME9BLFNBQVNBLG1CQUFtQkMsR0FBSyxTQUFRQSxXQUFZO0dDekxyRCxTQUFTQyxnQkFBZ0JDLEdBQUdDO0lBQzFCLEdBQUdELFFBQVE7SUFDWCxHQUFJQyxVQUFVLE9BQVFBLFNBQVNEO0lBQy9CLElBQUlFLFFBQVFDO0lBQ1osT0FBUTtLQUNOLEdBQUlILE9BQU9FLEtBQUtEO0tBQ2hCRDtLQUNBLEdBQUlBLFFBQVEsT0FBT0U7S0FDbkJELEtBQUtBO0tBQ0xFO0tBQ0EsR0FBSUEsUUFDRkY7O0dBS047R0Q3Q3NCLElBQWxCRyxvQkFBb0JDO0dFQXhCLFNBQVNDLG9CQUFxQkMsS0FBTyxNQUFNQSxJQUFLO0dDNEgzQixJQUFqQkM7R0RyRkosU0FBU0M7SUFDUEgsb0JBQW9CRTtHQUN0QjtHRnJDQSxTQUFTRSxRQUFTQyxJQUFHQyxJQUFHQztJQUN0QkMsVUFBVUg7SUFDVkcsVUFBVUY7SUFDVkUsVUFBVUQ7R0FDWjtHQUNBSDtHQUNBQTtlQUNFLFdBQVdBLFFBQVFJLFNBQVFBLFNBQVFBLFNBRFo7R0FJekJKO2FBQXVDWjtLQUNyQyxHQUFJZ0IsVUFBVWhCLE1BQU07S0FDcEIsR0FBSWdCLFVBQVVoQixNQUFNO0tBQ3BCLEdBQUlnQixVQUFVaEIsTUFBTTtLQUNw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S2dvQztRQUM3Qy9jLDhCQUE4QmpyQjtRQUM5QnJJO09BRjhCO1lBSzFCQztLQUNOQTs7Z0JBQThDbXJDO1FBQzVDLEdBQUdBLGFBQ0Q5WCw4QkFBOEI4WDtPQUZHO0dBTXpDO0dBQ0FnRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7OztZaUN3SlFFO0lBQUEsOEJBa0NZOzs7V0E5QlJDLGlCQUNSLFdBTElELFVBSUlDOztXQUVFQyxtQkFDVixXQVBJRixVQU1NRTs7V0FFSEMsbUJBQ1AsV0FUSUgsVUFRR0c7O1dBRUVDLG1CQUNULFdBWElKLFVBVUtJOztXQUlJQyxtQkFDYixXQWZJTCxVQWNTSzs7V0FGSkMsbUJBQ1QsV0FiSU4sVUFZS007O1dBSUFDLG1CQUNULFdBakJJUCxVQWdCS087O1dBRURDLG1CQUNSLFdBbkJJUixVQWtCSVE7O1dBRVdDLG1CQUFKQztPQUNmLFdBRGVBLElBcEJYVixVQW9CZVM7O1dBRVNFLG1CQUFYQztPQUNqQixXQURpQkEsS0FBQUEsS0F0QmJaLFVBc0J3Qlc7O1dBRW5CRSxtQkFDVCxZQXpCSWIsVUF3QkthOztXQUVBQyxvQkFDVCxZQTNCSWQsVUEwQktjOztXQUVGQyxvQkFDUCxZQTdCSWYsVUE0QkdlOztXQUVHQyxvQkFDVixZQS9CSWhCLFVBOEJNZ0I7bUJBRVFDLG9CQUNsQixZQWpDSWpCLFVBZ0NjaUI7O0dBRVU7WUFpQnhCQyxhQVdKQyxRQUFPQztJQUFVLFVBQWpCRCxxQkErQmdCLE9BL0JUQztXQUFQRDs7V0FDUWxCLE9BRFJrQixXQUVBLFdBYklELGFBWUlqQixNQUREbUI7O1dBR0dsQixTQUhWaUIsV0FJQSxXQWZJRCxhQWNNaEIsUUFISGtCOztXQUtBakIsU0FMUGdCLFdBTUEsV0FqQklELGFBZ0JHZixRQUxBaUI7O1dBT0VoQixTQVBUZSxXQVFBLFdBbkJJRCxhQWtCS2QsUUFQRmdCOztXQVNNZixTQVRiYyxXQVVBLFdBckJJRCxhQW9CU2IsUUFUTmU7O1dBV0VkLFNBWFRhLFdBWUEsV0F2QklELGFBc0JLWixRQVhGYzs7V0FhRWIsU0FiVFksV0FjQSxXQXpCSUQsYUF3QktYLFFBYkZhOztXQWVDWixTQWZSVyxXQWdCQSxXQTNCSUQsYUEwQklWLFFBZkRZOztXQTJCWVgsU0EzQm5CVSxXQTJCZVQsS0EzQmZTO09BNEJBLFdBRGVULElBdENYUSxhQXNDZVQsUUEzQlpXOztXQTZCb0JULFNBN0IzQlEsV0E2QnNCRSxNQTdCdEJGLFdBNkJpQlAsTUE3QmpCTztPQThCQSxXQURpQlAsS0FBS1MsS0F4Q2xCSCxhQXdDdUJQLFFBN0JwQlM7O1dBaUJFUCxTQWpCVE0sV0FrQkEsWUE3QklELGFBNEJLTCxRQWpCRk87O1dBbUJFTixVQW5CVEssV0FvQkEsWUEvQklELGFBOEJLSixTQW5CRk07O1dBcUJBTCxVQXJCUEksV0FzQkEsWUFqQ0lELGFBZ0NHSCxTQXJCQUs7O1dBdUJHSixVQXZCVkcsV0F3QkEsWUFuQ0lELGFBa0NNRixTQXZCSEk7O1dBeUJXSCxVQXpCbEJFLFdBMEJBLFlBckNJRCxhQW9DY0QsU0F6QlhHOztHQStCZTtZQU1sQkUsV0FJSkMsTUFBS0M7SUFBUSxVQUFiRCxtQkEyREEsT0EzREtDO1dBQUxEOztXQWlCS3RCLE9BakJMc0IsU0FrQkEsV0F0QklELFdBcUJDckIsTUFqQkF1Qjs7V0FtQkt0QixTQW5CVnFCLFNBb0JBLFdBeEJJRCxXQXVCTXBCLFFBbkJMc0I7O1dBQ1FyQixTQURib0IsU0FDUUUsTUFEUkY7T0FFQSxXQURRRSxLQUxKSCxXQUtTbkIsUUFEUnFCOztXQUdhcEIsU0FIbEJtQixTQUdhRyxRQUhiSDtPQUlBLFdBRGFHLE9BUFRKLFdBT2NsQixRQUhib0I7O1dBTWtCbkIsU0FOdkJrQixTQU1pQkksT0FOakJKLFNBTVlLLFFBTlpMLFNBTUtNLFFBTkxOO09BT0EsV0FES00sT0FBT0QsT0FBS0QsTUFWYkwsV0FVbUJqQixRQU5sQm1COzs7UUFRb0JsQixTQVJ6QmlCO1FBUW1CTyxTQVJuQlA7UUFRY1EsUUFSZFI7UUFRT1MsVUFSUFQ7T0FTQSxXQURPUyxTQUFPRCxPQUFLRCxRQVpmUixXQVlxQmhCLFFBUnBCa0I7OztRQVV3QmpCLFNBVjdCZ0I7UUFVdUJVLFNBVnZCVjtRQVVrQlcsUUFWbEJYO1FBVVdZLFVBVlhaO09BV0EsV0FEV1ksU0FBT0QsT0FBS0QsUUFkbkJYLFdBY3lCZixRQVZ4QmlCOzs7UUFZb0JoQixTQVp6QmU7UUFZbUJhLFNBWm5CYjtRQVljYyxRQVpkZDtRQVlPZSxVQVpQZjtPQWFBLFdBRE9lLFNBQU9ELE9BQUtELFFBaEJmZCxXQWdCcUJkLFFBWnBCZ0I7OztRQWNvQmYsU0FkekJjO1FBY21CZ0IsU0FkbkJoQjtRQWNjaUIsUUFkZGpCO1FBY09rQixRQWRQbEI7T0FlQSxXQURPa0IsT0FBT0QsT0FBS0QsUUFsQmZqQixXQWtCcUJiLFFBZHBCZTs7V0FxQk1iLFNBckJYWSxTQXFCTW1CLFFBckJObkI7T0FzQkEsV0FETW1CLE9BekJGcEIsV0F5Qk9YLFFBckJOYTs7V0ErQkNYLFNBL0JOVSxTQWdDQSxZQXBDSUQsV0FtQ0VULFFBL0JEVzs7V0FrQ2dCVixVQWxDckJTLFNBa0NnQm9CLE1BbENoQnBCO09BbUNBLFlBRGdCb0IsS0F0Q1pyQixXQXNDaUJSLFNBbENoQlU7O1dBb0NjVCxVQXBDbkJRLFNBb0NjcUIsTUFwQ2RyQjtPQXFDQSxZQURjcUIsS0F4Q1Z0QixXQXdDZVAsU0FwQ2RTOztXQXVDbUJSLFVBdkN4Qk8sU0F1Q2lCc0IsUUF2Q2pCdEIsU0F1Q1l1QixRQXZDWnZCO09Bd0NBLFlBRFl1QixPQUFLRCxPQTNDYnZCLFdBMkNvQk4sU0F2Q25CUTs7V0F5Q3FCUCxVQXpDMUJNLFNBeUNtQndCLFVBekNuQnhCLFNBeUNjeUIsUUF6Q2R6QjtPQTBDQSxZQURjeUIsT0FBS0QsU0E3Q2Z6QixXQTZDc0JMLFNBekNyQk87O1dBdUJDeUIsVUF2Qk4xQixTQXdCQSxZQTVCSUQsV0EyQkUyQixTQXZCRHpCOztXQXlCQzBCLFVBekJOM0IsU0EwQkEsWUE5QklELFdBNkJFNEIsU0F6QkQxQjs7V0FxRHVCMkIsVUFyRDVCNUIsU0FxRGdCNkIsYUFyRGhCN0I7T0FzREEsWUFEZ0I2QixZQXpEWjlCLFdBeUR3QjZCLFNBckR2QjNCOztXQXVEdUI2QixVQXZENUI5QixTQXVEZ0IrQixhQXZEaEIvQjtPQXdEQSxZQURnQitCLFlBM0RaaEMsV0EyRHdCK0IsU0F2RHZCN0I7O1dBNkJFK0IsVUE3QlBoQyxTQThCQSxZQWxDSUQsV0FpQ0dpQyxTQTdCRi9COztXQTRDK0JnQyxVQTVDcENqQyxTQTRDMEJrQyxXQTVDMUJsQyxTQTRDZW1DLFlBNUNmbkM7T0E2Q0EsWUFEZW1DLFdBQVdELFVBaER0Qm5DLFdBZ0RnQ2tDLFNBNUMvQmhDOztXQThDc0JtQyxVQTlDM0JwQyxTQThDa0JxQyxVQTlDbEJyQztPQStDQSxZQURrQnFDLFNBbERkdEMsV0FrRHVCcUMsU0E5Q3RCbkM7O1dBZ0RVcUMsVUFoRGZ0QyxTQWlEQSxZQXJESUQsV0FvRFd1QyxTQWhEVnJDOztXQWtEZXNDLFVBbERwQnZDLFNBa0Rld0MsTUFsRGZ4QztPQW1EQSxZQURld0MsS0F0RFh6QyxXQXNEZ0J3QyxTQWxEZnRDOztXQTJCYXdDLFVBM0JsQnpDLFNBMkJlMEMsSUEzQmYxQyxTQTJCUTJDLFFBM0JSM0M7T0E0QkEsWUFEUTJDLE9BQU9ELEdBL0JYM0MsV0ErQmMwQyxTQTNCYnhDOztHQTJERDtzQ0EvR0FOLGNBbkRBbEIsV0FtR0FzQjs7OztFOzs7Ozs7O1lDeGxCSjZDLEtBQUtDLEdBQUksV0FBSkEsR0FBTztZQUNaQyxJQUFJQyxHQUFJLE9BQUpBLEtBQU87WUFDWEMsSUFBSUQsR0FBRUYsR0FBRkUsT0FBRUYsWUFBWTtZQU1ISSxTQUFTRixHQUFFRixHQUU1QixJQUFJSyxNQUZzQkgsTUFBQUEsT0FBRUYsR0FLNUIsT0FISUssSUFHRDtZQUVjQyxnQkFBZ0JKLEdBQUVLLE1BQUtQO0lBRXhDLElBQUlLLE1BRjZCSDtXQUU3QkcsUUFGK0JFLFFBQUZMLE9BQU9GO0dBUWpDO1lBRVVRLGNBQWNOLEdBQUVPO0lBRWpDLElBQUlKLE1BRjJCSDtJQUFBQSxPQUUzQkcsTUFGNkJJO0lBS2pDLE9BSElKO0dBR0Q7WUFFREssS0FBS1IsR0FQVU0sY0FPVk4sT0FBVyxTQUFtQjtZQUNuQ1MsS0FBS1QsR0FSVU0sY0FRVk4sUUFBVyxTQUFzQjs7OztPQWpDdENIO09BQ0FFO09BQ0FFO09BTWVDO09BT0FFO09BVUFFO09BT2ZFO09BQ0FDOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDL0JBQyxTQUFTQztJQUFJLE1BQUEseUNBQUpBO0dBQW9CO1lBQzdCQyxZQUFZRDtJQUFJLE1BQUEsa0RBQUpBO0dBQTZCO0dBRTdDO1lBMENJRSxJQUFJQyxHQUFFQyxHQUFJLE9BQUcsdUJBQVRELEdBQUVDLEtBQUZELElBQUVDLEVBQTJCO1lBQ2pDQyxJQUFJRixHQUFFQyxHQUFJLE9BQUcsMEJBQVRELEdBQUVDLEtBQUZELElBQUVDLEVBQTJCO1lBeUJqQ0UsSUFBSUgsR0FBSSxZQUFKQSxJQUFBQSxNQUFBQSxNQUE0QjtZQU1oQ0ksS0FBS0osR0FBSSxPQUFKQSxPQUFlO0dBNEV0QjtJQURFSyxXQUNGO0lBQ0VDLGVBQ0Y7SUFDRUMsTUFDRjtJQUNFQyxZQUNGO0lBQ0VDLFlBQ0Y7SUFDRUMsZ0JBQ0Y7SUFoRkVDO0lBQ0FDO1lBcUdBQyxPQUFNQyxJQUFHQztJQUNYO0tBQUlDLDJCQURJRjtLQUNzQkcsMkJBRG5CRjtLQUVQbEIsSUFBSSxrQkFESm1CLEtBQTBCQztJQUU5QixpQkFIUUgsT0FFSmpCLE1BREFtQjtJQUdKLGlCQUpXRCxPQUVQbEIsR0FEQW1CLElBQTBCQztnQ0FDMUJwQjtHQUdvQjtZQU10QnFCLFlBQVl6QjtJQUNkLFFBRGNBLFlBQUFBLEdBQzBDLE9BRDFDQTtJQUNXLE9BcE12Qks7R0FvTTBFO1lBNkIxRXFCLGVBQWVDLEdBQ2pCLE9BRGlCQSx5QkFDWTtZQUMzQkM7SUFBaUI7OztnQkFuT2pCdkI7OztHQXNPaUM7WUFFakN3QjtJQUFxQjs7O0dBR1o7WUFFVEMsY0FBYzlCLEdBQ2hCLFlBRGdCQSxFQUNDO1lBSWYrQixrQkFBa0IzQjtJQUVwQixJQUFJLGNBQUssbUJBRldBLEtBRWhCOzs7NEJBQ2M7OztHQUFJO1lBSXBCNEIsa0JBQWtCNUI7SUFDcEIsSUFBSTZCLDBCQURnQjdCLElBRVA4QjtJQUNYO1FBRkVELEtBQ1NDLEdBQ0ksT0FwRWZkLE9BaUVrQmhCO0tBSVosWUFBQSx3QkFKWUEsR0FFUDhCOzs7O01BQWIsT0FGb0I5Qjs7S0FLSSxJQUhYK0IsTUFBQUQsV0FBQUEsSUFBQUM7O0dBTVA7WUFFSkMsZ0JBQWdCaEQ7SUFBSSxPQVZwQjRDLGtCQVVzQyxtQ0FBdEI1QztHQUE4QztZQUk5RGlELG9CQUFvQmpDO0lBRXRCLElBQUksY0FBSyxxQkFGYUEsS0FFbEI7Ozs0QkFDYzs7O0dBQUk7WUFJaEJrQyxTQUFNZixJQUFHQztJQUNmLEtBRFlELElBRUosT0FGT0M7UUFHUGUsS0FISWhCLE9BR1ZpQixLQUhVakI7SUFHRSxXQUFaaUIsSUFISUYsU0FHRUMsSUFIT2Y7R0FHYztHQVduQjtJQUFSaUIsUUFBUTtJQUNSQyxTQUFTO0lBQ1RDLFNBQVM7WUFjVEMsYUFBYUMsTUFBS0MsTUFBS0M7SUFDakIsSUFBSkMsSUFBSSw0QkFBbUIsY0FERkQsTUFBVkYsTUFBS0M7SUFFcEIseUJBRElFLEdBRHFCRDtJQUV6QixPQURJQztHQUVIO1lBRUNDLFNBQVNGLE1BQ1gsT0FORUgsdUJBS1NHLE1BQzZEO1lBRXRFRyxhQUFhSCxNQUNmLE9BVEVILHVCQVFhRyxNQUMyRDtZQU94RUk7SUFDRixjQVNRO0lBVE87bUJBQ0w7U0FDSGxCLGdCQUFIbUI7S0FDRSxJQUNJLGNBRk5BOzs7OzttQkFBR25COztHQU91QjtZQVM1Qm9CLGFBQWFDLElBQUdsRDtJQUNsQixPQUFBLHFCQURla0QsSUFBR2xELDJCQUFBQTtHQUNtQjtZQUVuQ21ELGNBQWNELElBQUdsRDtJQUNuQixPQUFBLGVBRGdCa0QsSUFBR2xELDRCQUFBQTtHQUMwQjtZQUUzQ29ELE9BQU9GLElBQUdsRCxHQUFFcUQsS0FBSUM7SUFDbEIsUUFEY0QsWUFBSUMsNkJBQU50RCxLQUFNc0QsWUFBSkQ7S0FHVCxPQUFBLHFCQUhJSCxJQUFHbEQsR0FBRXFELEtBQUlDO0lBRWIsT0F2VkhyRDtHQXdWNkI7WUFFN0JzRCxpQkFBaUJMLElBQUdsRCxHQUFFcUQsS0FBSUM7SUFDNUIsUUFEd0JELFlBQUlDLDhCQUFOdEQsS0FBTXNELFlBQUpEO0tBR25CLE9BQUEsZUFIY0gsSUFBR2xELEdBQUVxRCxLQUFJQztJQUV2QixPQTVWSHJEO0dBNlZvQztZQU9wQ3VELGFBQWFDLE1BQUt0RTtJQUFJLE9BQUEsMEJBQVRzRSxNQUFLdEU7R0FBZ0M7WUFNbER1RSxVQUFVUjtJQUFLLGNBQUxBO0lBQWUsT0FBQSxzQkFBZkE7R0FBbUM7WUFDN0NTLGdCQUFnQlQ7SUFDbEIsSUFBSyxjQURhQTtJQUVsQixJQUFLLFVBQUEsc0JBRmFBLEtBRWIsdUJBQStCO0dBQUc7WUFTckNVLFlBQVluQixNQUFLQyxNQUFLQztJQUNoQixJQUFKQyxJQUFJLDJCQUFrQixjQURGRCxNQUFWRixNQUFLQztJQUVuQix5QkFESUUsR0FEb0JEO0lBRXhCLE9BRElDO0dBRUg7WUFFQ2lCLFFBQVFsQixNQUNWLE9BTkVpQixvQkFLUWpCLE1BQ2lDO1lBRXpDbUIsWUFBWW5CLE1BQ2QsT0FURWlCLG9CQVFZakIsTUFDK0I7WUFPM0NvQixNQUFNQyxJQUFHaEUsR0FBRXFELEtBQUlDO0lBQ2pCLFFBRGFELFlBQUlDLDZCQUFOdEQsS0FBTXNELFlBQUpEO0tBR1IsT0FBQSxjQUhHVyxJQUFHaEUsR0FBRXFELEtBQUlDO0lBRVosT0F4WUhyRDtHQXlZNEI7WUFFeEJnRSxvQkFBb0JELElBQUdoRSxHQUFFcUQsS0FBSUM7SUFDbkMsSUFEK0JZLFFBQUFiLEtBQUljLFFBQUFiO0lBQ25DO2FBRG1DYSxPQUNsQjtLQUNQLElBQUo5RSxJQUFJLGNBRmdCMkUsSUFBR2hFLEdBQUVrRSxPQUFJQztLQUdqQyxTQURJOUUsR0FFQyxNQUFBOztNQUo0QitFLFFBQUFELFFBRTdCOUU7TUFGeUJnRixRQUFBSCxRQUV6QjdFO01BRnlCNkUsUUFBQUc7TUFBSUYsUUFBQUM7O0dBTWhDO1lBRURFLGFBQWFOLElBQUdoRSxHQUFFcUQsS0FBSUM7SUFDeEIsUUFEb0JELFlBQUlDLDZCQUFOdEQsS0FBTXNELFlBQUpEO0tBR2YsT0FYQ1ksb0JBUVNELElBQUdoRSxHQUFFcUQsS0FBSUM7SUFFbkIsT0FyWkhyRDtHQXNabUM7WUFFbkNzRSxvQkFBb0JQLElBQUdWO0lBQ2pCLElBQUp0RCxJQUFJLGtCQURpQnNEO0lBTHZCZ0IsYUFLb0JOLElBQ2xCaEUsTUFEcUJzRDtnQ0FDckJ0RDtHQUVvQjtZQUl0QndFLFdBQVdmO0lBQ2IsU0FBUWdCLGFBQWFDO1NBQUlDOztvQkFDakIsT0FEYUQ7TUFHakIsSUFESXZDLGlCQUFOQyxpQkFDTWtCLE1BQUoscUJBREZsQjtNQUVFLHdCQUZGQSxPQUZtQnNDLEtBQUlDLFFBR2pCckIsU0FBQUE7a0JBSGlCcUIsUUFHakJyQixTQUhpQnFCLHlCQUVqQnhDOzs7UUFJS3lDLFVBQUt0QjtJQUNoQjtLQUFRLElBQUoxRCxJQUFJLGdDQVJHNkQ7S0FTWCxTQURJN0Q7V0FET2dGLE1BSUQsTUFBQTtnQkFWSkgsYUFXaUIsa0JBTFBuQixNQUFBQSxLQUFMc0I7OztjQUNQaEY7T0FjUSxJQUFOaUYsTUFBTSxvQkFkUmpGO09BZUksY0F2Qkc2RCxNQXNCTG9CLFVBZEZqRjtPQWdCRztRQWpCU3dFLFFBQUFkLE1BQ1oxRDtRQURPa0YsYUFlTEQsS0FmS0Q7UUFBQUEsT0FBQUU7UUFBS3hCLE1BQUFjOzs7TUFPSixJQUFOVyxNQUFNLGtCQU5SbkY7TUFPSyxjQWZFNkQsTUFjTHNCLFFBTkZuRjtNQVFLLG1CQWhCRTZEO1NBT0FtQjs7UUFZR1QsU0FaRWIsTUFDWjFEO2NBUEU2RSxhQW1CaUIsa0JBRFROLFFBQUFBLFdBTFJZLEtBUEtIOztpQkFPTEc7O0tBWWtCLE9BQUE7O0dBQVc7WUFTbkNDLGVBQWVoQjtJQUFLLElBQUssVUFBQSxzQkFBVkEsS0FBVSx1QkFBc0I7R0FBRztZQU1sRGlCLFdBQVdyQyxHQUFJLE9BQUEsb0JBM0tmTixRQTJLV00sR0FBd0I7WUFDbkNzQyxhQUFhbEYsR0FBSSxPQXZIakJtRCxjQXJEQWIsUUE0S2F0QyxHQUEwQjtZQUN2Q21GLFlBQVluRixHQUFJLE9BM0hoQmlELGFBbERBWCxRQTZLWXRDLEdBQXlCO1lBQ3JDb0YsVUFBVXRELEdBQUksT0F6SGRxQixjQXJEQWIsYUE4S1VSLEdBQTBDO1lBQ3BEdUQsWUFBWXJHLEdBQUksT0ExSGhCbUUsY0FyREFiLFFBMUJBTixnQkF5TVloRCxJQUE0QztZQUN4RHNHLGNBQWN0RjtJQTNIZG1ELGNBckRBYixRQWdMY3RDO0lBQ1Esb0JBakx0QnNDO0lBaUwrQyxPQUFBLGNBakwvQ0E7R0FpTDJEO1lBQzNEaUQ7SUFBbUIsb0JBbExuQmpEO0lBa0w0QyxPQUFBLGNBbEw1Q0E7R0FrTHdEO1lBSXhEa0QsV0FBVzVDLEdBQUksT0FBQSxvQkFyTGZMLFFBcUxXSyxHQUF3QjtZQUNuQzZDLGFBQWF6RixHQUFJLE9BbElqQm1ELGNBcERBWixRQXNMYXZDLEdBQTBCO1lBQ3ZDMEYsWUFBWTFGLEdBQUksT0F0SWhCaUQsYUFqREFWLFFBdUxZdkMsR0FBeUI7WUFDckMyRixVQUFVN0QsR0FBSSxPQXBJZHFCLGNBcERBWixhQXdMVVQsR0FBMEM7WUFDcEQ4RCxZQUFZNUcsR0FBSSxPQXJJaEJtRSxjQXBEQVosUUEzQkFQLGdCQW9OWWhELElBQTRDO1lBQ3hENkcsY0FBYzdGO0lBdElkbUQsY0FwREFaLFFBMExjdkM7SUFDUSxvQkEzTHRCdUM7SUEyTCtDLE9BQUEsY0EzTC9DQTtHQTJMMkQ7WUFDM0R1RDtJQUFtQixvQkE1TG5CdkQ7SUE0TDRDLE9BQUEsY0E1TDVDQTtHQTRMd0Q7WUFJeER3RCxpQkFBZSxjQWpNZnpELFNBRFEsT0FtSVJrQyxXQW5JQW5DLE9Ba002QztZQUM3QzJELGdCQUFjLE9BQUEsbUJBRGRELGNBQ3dDO1lBQ3hDRSxvQkFBa0IsT0E5T2xCdEUsa0JBNE9Bb0UsY0FFZ0Q7WUFDaERHLGtCQUFnQixPQUFBLHFCQUhoQkgsY0FHNEM7WUFDNUNJLHNCQUFvQixPQTNOcEJsRSxvQkF1TkE4RCxjQUlvRDtZQTBCcERLLDRCQUFnQzFJLGdCQUFRLE9BQVJBO1lBTWhDMkk7SUFFTTtLQUZzQ0M7S0FBTi9KO0tBQWhCZ0s7S0FBTmpLO0tBRVYsTUE1VU4wRSxPQTBVc0J1RixNQTFVdEJ2RixjQTBVNENzRjtJQUM5QyxXQUFRLHdDQURVaEssTUFBc0JDOztHQVF0QixJQUFoQmlLLGdCQUFnQixrQ0E5TWhCekQ7WUFnTkkwRCxRQUFRekg7SUFDZDtLQUVtQjtNQUFmMEgsZUFBZTtNQUNmQyxXQUFXLGtDQU5iSDtTQUtFSSxpQkFBQUYsY0FDQUcsYUFBQUY7Y0FDQUc7TUFDRixHQUFHLGtDQUhERjtPQUdxRCxXQU4zQzVIO01BTTJDLE9BQUEsV0FGckQ2SDtLQUdTO0tBRUM7TUFBVkU7UUFBVSxrQ0FYWlAsZUFNRUcsVUFDQUc7TUFLSixVQURJQztlQUNKOztHQUE2QjtZQUUzQkM7SUFBZ0IsT0FBQSxXQUFBLGtDQWRoQlI7R0FjeUQ7WUFFekRTLEtBQUtDO0lBRkxGO0lBSUYsT0FBQSxzQkFGT0U7R0FFUztHQUVWLDJEQU5KRjs7OztPQXhoQkEvRztPQURBRjs7Ozs7Ozs7Ozs7Ozs7T0E2Q0FHO09BQ0FHO09BeUJBQztPQVlBUTtPQUNBQztPQVBBUjtPQTJFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0F1QkFHO09BV0FLO09BOEJBQztPQU9BRztPQUxBRDtPQVVBRTtPQUtBQztPQWlCQUs7T0FJQUM7T0FPSUM7T0FjSkc7T0FDQUM7T0FDQUM7T0EwS0EwQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQUlBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQUlBQztPQUVBRTtPQURBRDtPQUdBRztPQURBRDtPQWhMQXJEO09BR0FDO09BUkFOOztPQWdCQU87O09Bc0JBSTtPQUhBRjtPQU1BRztPQUtBRzs7O09BVUFDOzs7O09BTUFFO09BQ0FDOztPQWdCQUU7T0FHQUM7T0FSQUY7O09BeUNBWTtPQXpCQVQ7T0FhQU87T0FLQUM7Ozs7Ozs7O09BMENBUzs7Ozs7Ozs7O09BMERBb0I7T0FNQUM7T0F3QkFZO09BZElSO09BblJKN0U7T0FrSklxQztPQTZJSitDOzs7RTs7Ozs7OztHOzs7OztHOzs7OztZRTloQkFvQixhQUFXLFNBQUc7WUFFZEMsU0FBT2xJLFVBQU8sV0FBUEEsR0FGUGlJLE9BRTZCO1lBRTdCRSxLQUFLbkksR0FBRW9JLGFBQVUsV0FBWnBJLEdBQUVvSSxNQUF3QjtZQUUzQkMsT0FBT0MsTUFBS0M7SUFDWixZQUFBLFdBRE9EO2dCQUVKLE9BQUEsV0FGU0M7UUFHUEgsaUJBQUhwSTtJQUFZLFdBQVpBLGlCLE9BSEZxSSxPQUdLRCxNQUhPRztHQUc0QjtZQUV4Q0MsSUFBSTNKLEdBQUU0SjtJQUFlLFlBQUEsV0FBZkE7Z0JBQ0g7UUFDRUwsaUJBQUhwSTtJQUF1QixrQixPQUZ6QndJLElBQUkzSixHQUVDdUo7SUFBUyxXQUFNLFdBRmhCdkosR0FFRm1CO0dBQWtDO1lBRXBDMEksV0FBVzdKLEdBQUU0SjtJQUFTLElBQVRFLFFBQUFGO0lBQVM7S0FBTSxZQUFBLFdBQWZFO2lCQUNWO0tBRUMsSUFIU1AsaUJBRVhwSSxjQUNFLFVBQUEsV0FIT25CLEdBRVRtQjs7VUFHS0M7TUFBSyxXQUFMQSxpQixPQUxQeUksV0FBVzdKLEdBQUV1Sjs7U0FBQU8sUUFBQVA7O0dBSzBCO1lBRXZDUSxPQUFPL0osR0FBRTRKO0lBQVMsSUFBVEUsUUFBQUY7SUFBUztLQUFNLFlBQUEsV0FBZkU7aUJBQ047U0FETVAsaUJBRVBwSTtLQUNELEdBQUEsV0FITW5CLEdBRUxtQjtNQUVDLFdBRkRBLGlCLE9BRkY0SSxPQUFPL0osR0FBRXVKO1NBQUFPLFFBQUFQOztHQUtVO1lBRW5CUyxPQUFPSjtJQUFlLFlBQUEsV0FBZkE7Z0JBQ0o7UUFDRUwsaUJBQUhwSTtJQUNMLE9BMUJHcUksT0F5QkVySSxpQixPQUZGNkksT0FFS1Q7R0FDaUI7WUFFdEJVLFNBQVNqSyxHQUFFNEo7SUFBZSxZQUFBLFdBQWZBO2dCQUNSO1FBQ0VMLGlCQUFIcEk7SUFDTyxrQixPQUhUOEksU0FBU2pLLEdBRUp1SjtJQUNULE9BL0JJQyxPQStCRyxXQUhNeEosR0FFUG1CO0dBQzJCO1lBSWpDK0ksVUFDVWxLLEdBQUVtSyxLQUFJUDtJQUFsQixJQUFjUSxRQUFBRCxLQUFJTCxRQUFBRjtJQUFNO0tBQU0sWUFBQSxXQUFaRTtpQkFDUCxPQURHTTtLQUdFO01BSEViO01BRVJwSTtNQUZJa0osUUFHRSxXQUhKckssR0FBRW9LLE9BRUpqSjtNQUZJaUosUUFBQUM7TUFBSVAsUUFBQVA7O0dBTUw7WUFFWGUsS0FBS3RLLEdBQ0s0SjtJQUFaLElBQVlFLFFBQUFGO0lBQU07S0FBTSxZQUFBLFdBQVpFO2lCQUNEO1NBRENQLGlCQUVGcEk7S0FDSixXQUpDbkIsR0FHR21CO1NBRkUySSxRQUFBUDs7R0FNTDtZQUVEZ0IsT0FBT3ZLLEdBQUV3SztJQUNULFlBQUEsV0FET3hLLEdBQUV3SztnQkFFTDs0QkFDQ0Msa0JBQUh0SjtJQUFVLFdBQVZBLGlCLE9BSEZvSixPQUFPdkssR0FHRnlLO0dBQTRCOzs7O09BOURyQ3JCO09BRUFDO09BRUFDO09BRUlFO09BS0FHO09BV0FJO09BUEFGO09BY0FHO09BS0FDO09BQUFBO09BT0pDO09BU0FJO09BU0lDOzs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7OztJQ2pFSkc7WUFDQUMsS0FBS3hLLEdBQUksV0FBSkEsR0FBVTtZQUNmeUssTUFBTUMsR0FBR0M7SUFBVSxLQUFiRCxHQUFnRCxPQUE3Q0M7UUFBNEIzSyxJQUEvQjBLO0lBQW9DLE9BQUwxSztHQUF3QjtZQUM3REM7SUFBTSxZQUErQixPQUFBO1FBQWpCRDtJQUFLLE9BQUxBO0dBQTZDO1lBQ2pFNEssS0FBS0YsR0FBRTdLO0lBQUksS0FBTjZLLEdBQTJCO1FBQVkxSyxJQUF2QzBLO0lBQTRDLE9BQUEsV0FBMUM3SyxHQUFxQ0c7R0FBUTtZQUNwRDZLLFlBQU8sWUFBK0IsY0FBakJILGNBQUssT0FBTEEsRUFBcUI7WUFDMUNsQixJQUFJM0osR0FBRTZLO0lBQUksS0FBSkEsR0FBeUI7UUFBWTFLLElBQXJDMEs7SUFBMEMsV0FBSyxXQUFqRDdLLEdBQXVDRztHQUFlO1lBQzFEOEssS0FBTVAsTUFBTUM7SSxZQUEyQyxPQUFqREQ7UUFBMkJ2SztJQUFLLE9BQUEsV0FBMUJ3SyxNQUFxQnhLOztZQUNqQ21LLEtBQUt0SztJLFlBQXFDO1FBQW5CRztJQUFLLE9BQUEsV0FBdkJILEdBQWtCRzs7WUFDdkIrSyxlQUFVLHFCQUF1QztZQUNqREMsZUFBVSxxQkFBdUM7WUFFakRDLE1BQU1DLElBQUdDLElBQUdDO0lBQUssR0FBUkQ7UUFBR0MsUUFDQUMsS0FEQUQsT0FDVEUsS0FETUgsT0FDUyxPQUFBLFdBRFpELElBQ0hJLElBQVNEOztjQURBRCxJQUVBO0lBQ1Q7R0FBSztZQUVSRyxRQUFRQyxLQUFJTCxJQUFHQztJQUFLLEtBQVJELFdBQUdDO1FBQ1pFLEtBRFNIO1NBQUdDLElBSUQ7UUFIRkMsS0FER0Q7SUFDRyxPQUFBLFdBRFZJLEtBQ0xGLElBQVNEO0dBR0c7WUFFZkksVUFBV2xCO0ksWUFBd0IsV0FBeEJBO1FBQTBDdks7SUFBSyxXQUFMQTs7WUFDckQwTDtJQUFVLFlBQWlCO1FBQVUxTDtJQUFLLFdBQUxBO0dBQVE7WUFDN0MyTDtJQUFTLFlBQWlCO1FBQWlCM0w7SUFBSyxPQUFBLDBCQUFMQTtHQUFpQjs7OztPQXpCNUR1SztPQUNBQztPQUNBQztPQUNBeEs7T0FDQTJLO09BQ0FDO09BQ0FyQjtPQUNBc0I7T0FDQVg7T0FDQVk7T0FDQUM7T0FFQUM7T0FLQU07T0FNQUU7T0FDQUM7T0FDQUM7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O1lJdEJBbk4sSUFBSWlDO0lBQ04sUUFETUEsWUFBQUEsR0FDK0MsT0FEL0NBO0lBQ21CLE9BQUE7R0FBd0M7WUFPL0RnTixRQU9BaEs7SUFQVTs7Y0FPVkE7Z0JBQUFBLEdBTFE7ZUFLUkE7OztlQUFBQSxZQUFBQSxHQU5RO2NBTVJBO2NBQUFBOztVQURROztVQUZBOztVQURBOztVQUVBOzs7S0FRRSxJQUFKNUMsSUFBSTsyQkFBSkE7MkJBQUFBLFlBTk40QzsyQkFNTTVDLGFBTk40QzsyQkFNTTVDLFlBTk40QztpQ0FNTTVDOztJQUxJLElBQUo2TSxNQUFJOzBCQUFKQSxRQUROaks7Z0NBQ01pSztHQVVjO1lBRXBCQyxVQUNBbEs7SUFEWSxVQUNaQTs7Ozs7OztLQUdBLE9BSEFBOztJQUlLLE9BSkxBO0dBSU07WUFFTm1LLFVBQ0FuSztJQURZLFVBQ1pBOzs7Ozs7O0tBR0EsT0FIQUE7O0lBSUssT0FKTEE7R0FJTTtZQUVOb0ssZ0JBQ0FwSyxHQURrQixZQUNsQkEsZUFBQUEsSUFBQUEsV0FDTTtZQUVOcUssZ0JBQ0FySyxHQURrQixZQUNsQkEsZUFBQUEsSUFBQUEsV0FDTTtZQUlOOEgsUUFBUXdDLElBQUdDLElBQUssT0FBUkQsS0FBR0MsT0FBc0I7WUFDakMvQyxNQUFPOEMsSUFBUUMsSUFBUyxjQUFqQkQsS0FBUUMsZ0JBQTBCOzs7O09BckR6Q3hQO09BUUFpUDtPQW9CQUU7T0FPQUM7T0FPQUM7T0FJQUM7T0FNQXZDO09BQ0FOOzs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7O0lDeERBZ0Q7SUFDQUM7Ozs7O0lBTUFuTjtJQUNBRztJQUNBaU47SUFDQUM7SUFFQUM7SUFDQUM7WUFFQUMsS0FBS2xFO0lBQ1AsT0FET0E7Y0FMTCtEO2NBS0svRCxzQ0FkTDZELGVBY0s3RDtHQUdGO1lBRUhtRSxLQUFLbkU7SUFDUCxPQURPQTtjQVhMOEQ7Y0FXSzlELGdDQXBCTDRELGVBb0JLNUQ7R0FHRjtZQUVIb0UsU0FBUzlMO0lBQUksZUFBSkEsdUJBQUFBOzs7O3dCQUFBQSx1QkFBQUE7O0dBQThEO1lBQ3ZFK0wsT0FBTy9MO0lBQUksR0FEWDhMLFNBQ085TCxJQUF1QixPQUF2QkE7SUF4QlE7O09BQUE7cUJBQUEsc0JBd0JSQTtJQUEwQyxPQUFBO0dBQWM7WUFJL0RnTSxRQUFRdEUsR0FBSSxPQUFKQSxnQkFBVztZQUNuQnVFLFFBQVFuTCxHQUFJLE9BQUpBLEVBQWU7WUFDdkJvTCxRQUFReEU7SUFDVixVQURVQSxHQUVWLE9BRlVBO0lBN0JrQjtLQUFBO09BQUE7O1NBQUEsd0JBNkJsQkE7O0tBN0JrQixNQUFBO0lBOEJBLE9BQUE7R0FDWDtZQUVmeUUsb0I7WUFFQTdELGdCO09BQ0FNO1lBQ0F3RCxVOzs7O09BakNBaE87T0FDQUc7T0FJQW1OO09BQ0FDO09BRUFDO09BS0FDO09BS0FDO09BQ0FDO3FCO3FCO09BSUFDO09BQ0FDO09BQ0FDO09BSUFDO09BRUE3RDtPQUNBTTtPQUNBd0Q7OztFOzs7Ozs7O0c7Ozs7Ozs7SSxrQjtjOzs7Ozs7Ozs7Ozs7O0ksSSxjLDZCOzs7MkI7OztHO0c7eUMsUztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLGtCOzJCO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDakNBQyxPQUFPQztJQUFJLElBSkk5SyxpQkFJUjhLOztpQkFIRCxPQURTOUs7S0FFUCxJQUFMekIsY0FBSyxRQUZPeUIsYUFBQUEscUJBRVp6Qjs7R0FFc0I7WUFFekJ5RyxLQUFLdEYsR0FBRW5CLEdBQUksV0FBTm1CLEdBQUVuQixHQUFRO1lBRWZPO0lBQUssWUFDQyxPQUFBO1FBQ05ZO0lBQVEsT0FBUkE7R0FBUztZQUVUYjtJQUFLLFlBQ0MsT0FBQTtRQUNITjtJQUFLLE9BQUxBO0dBQU07WUFFVHdNLElBRWN4TSxHQUFFakM7SUFEbEIsT0FDa0JBLEdBREosT0FBQTtRQUNFd08sTUFBQXZNLEdBQUV5TSxNQUFBMU87SUFDaEI7VUFEY3dPLEtBRU4sT0FBQTtTQUZNRyxNQUFBSCxRQUdacEwsSUFIWW9MO0tBR0osU0FITUUsS0FHUSxPQUF0QnRMO0tBQTZCLElBSGZ3TCxNQUFBRixhQUFGRixNQUFBRyxLQUFFRCxNQUFBRTs7R0FJSjtZQUVaQyxRQUVjNU0sR0FBRWpDO0lBRGxCLE9BQ2tCQSxHQURKLE9BQUE7UUFDRXdPLE1BQUF2TSxHQUFFeU0sTUFBQTFPO0lBQ2hCO1VBRGN3TyxLQUVOO1NBRk1HLE1BQUFILFFBR1pwTCxJQUhZb0w7S0FHSixTQUhNRSxLQUdRLFdBQXRCdEw7S0FBa0MsSUFIcEJ3TCxNQUFBRixhQUFGRixNQUFBRyxLQUFFRCxNQUFBRTs7R0FJSjtPQUVaaEc7WUFFSWtHLFdBQVd2TixJQUFHQztJQUNwQixJQURpQnVOLE9BQUF4TixJQUFHeU4sT0FBQXhOO0lBQ3BCO1VBRGlCdU4sTUFFVCxPQUZZQztLQUdLO01BSFJDLE9BQUFGO01BR2YzTCxJQUhlMkw7TUFBR0csV0FHbEI5TCxHQUhrQjRMO01BQUhELE9BQUFFO01BQUdELE9BQUFFOztHQUdjO1lBRWhDQyxJQUFJbE4sR0FBSSxPQUxKNk0sV0FLQTdNLE1BQW1CO1lBTW5CbU4sU0FBU2xOLEdBQUVsQyxHQUFFWjtJQUNuQixHQURpQlksS0FBRmtDLEdBQ0E7SUFFTCxJQUFKekMsSUFBSSxXQUhTTCxHQUFKOEM7SUFJYixXQURJekMsR0FIQTJQLFNBQVNsTixXQUFFbEMsR0FBRVo7R0FJTTtPQUV2QmlRO1lBT0FDLEtBQUs1TCxLQUFJdEU7SUFDWCxPQURPc0UsS0FDUyxPQUFBO09BUmQyTCxzQkFPSzNMLEtBR0YsT0FoQkMwTCxZQWFDMUwsS0FBSXRFO1FBakJZbUssU0FBSXJIO0lBQzNCO1FBZ0JPd0IsT0FqQm9CeEIsR0FtQlUsT0FyQm5DaU4sSUFFcUI1RjtLQUVEO01BRktwSCxNQUFBRDtNQUFKc0gsWUFFQSxXQWVacEssR0FqQmdCOEMsSUFBSnFIO01BQUFBLE1BQUFDO01BQUl0SCxJQUFBQzs7R0FvQk47WUFFZm9OO0lBQVUsWUFDUjtJQUNNLElBQVQ5UCxjQUFId0MsY0FBWSxNQUZSc04sUUFFRDlQO0lBQVMsT0FBQSx1QkFBWndDO0dBQXFCO1lBSWpCOEcsSUFBSTNKO0ksWUFDRjtJQUNVLElBQWI2QyxjQUFIbUIsY0FBWTNELElBQUksV0FGUkwsR0FFUmdFO0lBQXVCLFdBQVgzRCxHQUZSc0osSUFBSTNKLEdBRUw2Qzs7Z0JBRU1DLEdBQUU5QztJLFlBQ0w7SUFDVSxJQUFiNkMsY0FBSG1CLGNBQVkzRCxJQUFJLFdBRkxMLEdBQUY4QyxHQUVUa0I7SUFBeUIsV0FBYjNELE9BRkh5QyxXQUFFOUMsR0FFUjZDOztZQUVIdU4sS0FBS3BRLEdBQUU2QyxHQUFJLGNBQU43QyxHQUFFNkMsR0FBYztZQUVyQndOLFFBQVFyUSxHQUFFNkM7SUFDWixJQUFlK0Msa0JBREgvQzs7aUJBRUYsT0FESytDO0tBRUk7TUFBWndKO01BQUhwTDtNQUFlLGFBQUMsV0FIVmhFLEdBR05nRSxJQUZXNEI7TUFBQUE7Y0FFUndKOztHQUVJO1lBR0w5RSxLQUFLdEs7OzttQkFDSDtTQUNINkMsZ0JBQUhtQjtLQUFRLFdBRkNoRSxHQUVUZ0U7bUJBQUduQjs7O1lBTUh5TixNQUFNdFEsR0FBRW9QO0lBQUksSUFKRnRNLGVBSUZzTTs7aUJBSEY7U0FDSHZNLGNBQUhtQjtLQUFRLFdBRUZoRSxHQUpJOEMsR0FFVmtCO2VBRlVsQixXQUFBQSxpQkFFUEQ7O0dBRW9CO1lBRW5CcUgsVUFBVWxLLEdBQUU0RixNQUFLL0M7SUFDdkIsSUFEa0JpRCxTQUFBRixNQUFLd0osTUFBQXZNO0lBQ3ZCO1VBRHVCdU0sS0FFZixPQUZVdEo7S0FHSTtNQUhDeUosTUFBQUg7TUFHckJwTCxJQUhxQm9MO01BQUxtQixTQUdJLFdBSE52USxHQUFFOEYsUUFHaEI5QjtNQUhnQjhCLFNBQUF5SztNQUFLbkIsTUFBQUc7O0dBR1c7WUFFNUJpQixXQUFXeFEsR0FBRTZDLEdBQUUrQztJQUNyQixLQURtQi9DLEdBRVgsT0FGYStDO1FBR2hCd0osTUFIY3ZNLE1BR2pCbUIsSUFIaUJuQjtJQUdMLE9BQUEsV0FIRzdDLEdBR2ZnRSxHQUhJd00sV0FBV3hRLEdBR1pvUCxLQUhnQnhKO0dBR2M7WUFFN0I2SyxLQUFLelEsR0FBRW1DLElBQUdDO0lBQ2hCLEdBRGFEO1FBQUdDO01BR2M7T0FBZndOLE9BSEN4TjtPQUdMc08sS0FIS3RPO09BR1R1TixPQUhNeE47T0FHVndPLEtBSFV4TztPQUdhOUIsSUFBSSxXQUhuQkwsR0FHUjJRLElBQVFEO01BQThCLFdBQWZyUSxHQUhwQm9RLEtBQUt6USxHQUdKMlAsTUFBUUM7OztjQUhDeE4sSUFFRjtJQUVGLE9BQUE7R0FBdUI7WUFFakN3TyxTQUFTNVEsR0FDVW1DLElBQUdDO0lBQXhCLElBQWdCd0QsVUFBSytKLE9BQUF4TixJQUFHeU4sT0FBQXhOO0lBQ3RCO1FBRG1CdU47U0FBR0M7T0FHUTtRQUhSRSxPQUFBRjtRQUdYYyxLQUhXZDtRQUFIQyxPQUFBRjtRQUdoQmdCLEtBSGdCaEI7UUFBTDdKLGFBR2lCLFdBSnRCOUYsR0FJTjJRLElBQVFELEtBSEc5SztRQUFBQSxPQUFBRTtRQUFLNkosT0FBQUU7UUFBR0QsT0FBQUU7Ozs7ZUFBQUYsTUFFUixPQUZBaEs7S0FJRixPQUFBOztHQUVFO1lBR1ZpTCxNQUFNN1EsR0FBRW1DLElBQUdDO0lBQ2pCLElBRGN1TixPQUFBeE4sSUFBR3lOLE9BQUF4TjtJQUNqQjtRQURjdU47U0FBR0M7V0FBQUUsT0FBQUYsU0FHTmMsS0FITWQsU0FBSEMsT0FBQUYsU0FHWGdCLEtBSFdoQjtPQUdRLFdBSFYzUCxHQUdUMlEsSUFBUUQ7V0FIR2YsT0FBQUUsTUFBR0QsT0FBQUU7Ozs7ZUFBQUYsTUFFSDtLQUVGLE9BQUE7O0dBQXdCO1lBRTlCa0IsV0FBVzlRLEdBQUU0RixNQUFLekQsSUFBR0M7SUFDM0IsSUFEbUIwRCxTQUFBRixNQUFLK0osT0FBQXhOLElBQUd5TixPQUFBeE47SUFDM0I7UUFEd0J1TjtTQUFHQztPQUdRO1FBSFJFLE9BQUFGO1FBR2hCYyxLQUhnQmQ7UUFBSEMsT0FBQUY7UUFHckJnQixLQUhxQmhCO1FBQUxZLFNBR2dCLFdBSGxCdlEsR0FBRThGLFFBR2hCNkssSUFBUUQ7UUFIUTVLLFNBQUF5SztRQUFLWixPQUFBRTtRQUFHRCxPQUFBRTs7OztlQUFBRixNQUViLE9BRks5SjtLQUlQLE9BQUE7O0dBQTZCO1lBRW5DaUwsWUFBWS9RLEdBQUVtQyxJQUFHQyxJQUFHd0Q7SUFDMUIsR0FEb0J6RDtRQUFHQztVQUdSd04sT0FIUXhOLE9BR1pzTyxLQUhZdE8sT0FHaEJ1TixPQUhheE4sT0FHakJ3TyxLQUhpQnhPO01BR1UsT0FBQSxXQUhabkMsR0FHZjJRLElBQVFELElBSExLLFlBQVkvUSxHQUdYMlAsTUFBUUMsTUFIV2hLOzs7Y0FBSHhELElBRVQsT0FGWXdEO0lBSWQsT0FBQTtHQUE4QjtZQUVwQ29MLFFBQVFDOzs7bUJBQ047S0FDRSxJQUFMcE8sZ0JBQUhtQixnQkFBUSxNQUFBLFdBRklpTixHQUVaak47S0FBUSxVQUFBO21CQUFMbkI7OztZQUVDcU8sT0FBT0Q7OzttQkFDTDtLQUNFLElBQUxwTyxnQkFBSG1CLGdCQUFRLE1BQUEsV0FGR2lOLEdBRVhqTjtLQUFRLFFBQUE7bUJBQUxuQjs7O1lBRUNzTyxTQUFTRixHQUFFOU8sSUFBR0M7SUFDcEIsSUFEaUJ1TixPQUFBeE4sSUFBR3lOLE9BQUF4TjtJQUNwQjtRQURpQnVOO1NBQUdDO09BR0U7UUFIRkUsT0FBQUY7UUFHVGMsS0FIU2Q7UUFBSEMsT0FBQUY7UUFHZGdCLEtBSGNoQjtRQUdLLE1BQUEsV0FIUHNCLEdBR1pOLElBQVFEO09BQVcsVUFBQTtXQUhMZixPQUFBRSxNQUFHRCxPQUFBRTs7OztlQUFBRixNQUVOO0tBRUYsT0FBQTs7R0FBMkI7WUFFakN3QixRQUFRSCxHQUFFOU8sSUFBR0M7SUFDbkIsSUFEZ0J1TixPQUFBeE4sSUFBR3lOLE9BQUF4TjtJQUNuQjtRQURnQnVOO1NBQUdDO09BR0c7UUFISEUsT0FBQUY7UUFHUmMsS0FIUWQ7UUFBSEMsT0FBQUY7UUFHYmdCLEtBSGFoQjtRQUdNLE1BQUEsV0FIUnNCLEdBR1hOLElBQVFEO09BQVcsUUFBQTtXQUhOZixPQUFBRSxNQUFHRCxPQUFBRTs7OztlQUFBRixNQUVMO0tBRUYsT0FBQTs7R0FBMEI7WUFFaEN5QixJQUFJbFE7OzttQkFDRjs7TUFDSDBCO01BQUhtQjtrQkFBUSxhQUFSQSxHQUZRN0M7O21CQUVMMEI7OztZQUVDeU8sS0FBS25ROzs7bUJBQ0g7U0FDSDBCLGdCQUFIbUIsc0JBQUFBLE1BRlM3Qzs7bUJBRU4wQjs7O1lBRUMwTyxNQUFNcFE7OzttQkFDSixNQUFBO1NBQ0MwQixvQ0FBSk4sY0FBRnlCO0tBQWMsU0FBQSxhQUFkQSxHQUZTN0MsSUFFMEIsT0FBakNvQjttQkFBSU07OztZQUVIMk8sVUFBVXJROzs7bUJBQ1I7U0FDQzBCLG9DQUFKTixjQUFGeUI7S0FBYyxTQUFBLGFBQWRBLEdBRmE3QyxJQUVzQixXQUFqQ29CO21CQUFJTTs7O1lBRUg0TyxLQUFLdFE7OzttQkFDSCxNQUFBO1NBQ0MwQixvQ0FBSk4sY0FBRnlCO1FBQUFBLE1BRlE3QyxHQUVrQixPQUF4Qm9CO21CQUFJTTs7O1lBRUg2TyxTQUFTdlE7OzttQkFDUDtTQUNDMEIsb0NBQUpOLGNBQUZ5QjtRQUFBQSxNQUZZN0MsR0FFYyxXQUF4Qm9CO21CQUFJTTs7O1lBRUg4TyxVQUFVeFE7OzttQkFDUjs7TUFDSTBCO01BQVRtQjtrQkFBYyxhQUFkQSxHQUZhN0M7O21CQUVKMEI7OztZQUVOK08sU0FBU3pROzs7bUJBQ1A7U0FDSTBCLGdCQUFUbUIseUJBQUFBLE1BRlk3Qzs7bUJBRUgwQjs7O1lBRU5nUCxhQUFhMVE7SSxZQUNYO1FBQ1kwQixjQUFsQmlQLGlCQUFDOU4sSUFBRDhOO0lBQ0ssYUFBQSxhQURKOU4sR0FGZ0I3QyxLQUVDMEIsUUFBbEJpUCxNQUZJRCxhQUFhMVEsR0FFQzBCOztZQUdka1AsWUFBWTVRO0ksWUFDVjtRQUNZMEIsY0FBbEJpUCxpQkFBQzlOLElBQUQ4TjtXQUFDOU4sTUFGZTdDLElBRUUwQixRQUFsQmlQLE1BRklDLFlBQVk1USxHQUVFMEI7O1lBRWRtUCxLQUFLZjs7O21CQUNILE1BQUE7U0FDRHBPLGdCQUFMMUI7S0FBYSxHQUFBLFdBRko4UCxHQUVUOVAsSUFBc0IsT0FBdEJBO21CQUFLMEI7OztZQUVEb1AsU0FBU2hCOzs7bUJBQ1A7U0FDRHBPLGdCQUFMMUI7S0FBYSxHQUFBLFdBRkE4UCxHQUViOVAsSUFBc0IsV0FBdEJBO21CQUFLMEI7OztZQUVEcVAsU0FBU2xTOzs7bUJBQ1A7S0FFTyxJQURSNkMsZ0JBQUwxQixnQkFFS2dSLFNBRFEsV0FIQW5TLEdBRWJtQjtRQUVLZ1IsUUFBb0IsT0FBcEJBO21CQUZBdFA7OztZQU1MdVAsU0FBU25CO0lBSVg7SUFBQTtTQUhhbkw7O2tCQUNMLE9BckxOaUssSUFvTFdqSztVQUVOakQsY0FBTDFCO01BQWEsR0FBQSxXQUhKOFAsR0FHVDlQO09BQTJCLElBQUEsYUFBM0JBLEdBRlcyRSxTQUFBQSx5QkFFTmpEOzttQkFBQUE7O0dBQ0E7WUFJTHdQLFFBQVFwQixHQUFFcE87SUFDWixJQUFZQyxPQUFFcUgsaUJBREZ0SDs7aUJBRUosT0E3TE5rTixJQTRMWTVGO0tBRVk7TUFBckJpRjtNQUFIak87TUFBd0IsUUFBQSxXQUhoQjhQLEdBQ0VuTyxHQUVWM0IsU0FBQUEsR0FGWWdKLE9BQUFBO1lBQUZySDtNQUFBQTtNQUFFcUg7Y0FFVGlGOztHQUVLO1lBRVJ2RixXQUFXN0o7SUFRYjtJQUFBO1NBUFk4Rjs7a0JBQ0YsT0FwTVJpSyxJQW1NVWpLO01BR0EsSUFESGpELGNBQUwxQixjQUNRLFFBQUEsV0FKQ25CLEdBR1RtQjs7T0FHa0IsSUFBVGhCLGNBQVMsYUFBVEEsR0FMRDJGLFNBQUFBLHlCQUVIakQ7O21CQUFBQTs7R0FLSDtZQUVKeVAsV0FDVXRTLEdBREc2QztJQUNmLElBQWNzSCxpQkFEQ3RIOztpQkFFTCxPQTlNUmtOLElBNk1ZNUY7S0FHQTtNQURMaUY7TUFBTGpPO01BQ0tvUixLQUFLLFdBSEZ2UyxHQUVSbUI7TUFFTyxRQXROTHVPLFdBcU5HNkMsSUFIS3BJO01BQUFBO2NBRUxpRjs7R0FHSTtZQUVYb0QsY0FBY3hTLEdBQUU0RixNQUFLL0M7SUFDdkIsSUFBWWlELFNBRE1GLE1BQ0Q2TSxvQkFETTVQOztpQkFFYixXQURFaUQsUUFyTlZpSyxJQXFOZTBDO0tBR0c7TUFEWHJEO01BQUxqTztNQUNnQixRQUFBLFdBSkpuQixHQUNKOEYsUUFFUjNFO01BQ1l1UjtNQUFObkM7TUFDSyxlQURDbUMsS0FIQ0Q7TUFBTDNNLFNBR0Z5SztNQUhPa0M7Y0FFUnJEOztHQUdJO1lBRVh1RCxVQUFVMUIsR0FBRXBPO0lBQ2QsSUFBYStQLFNBQUlDLGdCQURIaFE7O2lCQUVJLFVBOU5oQmtOLElBNk5lOEMsS0FDVCxXQTlOTjlDLElBNk5XNkM7U0FFTnhELGdCQUFMak87S0FBYSxHQUFBLFdBSEg4UCxHQUdWOVA7TUFBMkIsSUFBQSxZQUEzQkEsR0FGV3lSLE1BQUFBLHFCQUVOeEQ7O01BQW9ELElBQUEsV0FBekRqTyxHQUZlMFIsS0FBQUEsbUJBRVZ6RDs7R0FDSztZQUVWMEQsY0FBYzdCLEdBQUVwTztJQUNsQixJQUFha0osVUFBS0MsbUJBREFuSjs7aUJBRUMsVUFwT2pCa04sSUFtT2dCL0QsUUFDVixXQXBPTitELElBbU9XaEU7S0FHRSxJQURScUQsZ0JBQUxqTyxjQUNhLFFBQUEsV0FKQzhQLEdBR2Q5UDs7TUFFMkIsSUFBVmhCLGNBQVUsYUFBVkEsR0FKTjRMLE9BQUFBLHVCQUVOcUQ7O01BRzRCO09BQWY1QztPQUFlLGNBQWZBLEtBTEZSO09BQUFBO2VBRVhvRDs7R0FNSztZQUVOMkQ7SUFBUSxZQUNOO0lBRVc7S0FEVmxROztLQUFKekI7S0FBRkQ7S0FDZ0IsVUFIYjRSLE1BRUdsUTtLQUNJbVE7S0FBSkM7SUFBcUIsZUFEM0I5UixHQUNNOFIsU0FESjdSLEdBQ1E0UjtHQUErQjtZQUV0Q0UsUUFBUS9RLElBQUdDO0lBQ2pCLEdBRGNEO1FBQUdDO1VBR0Z3TixPQUhFeE4sT0FHTnNPLEtBSE10TyxPQUdWdU4sT0FIT3hOLE9BR1h3TyxLQUhXeE87TUFHUSxlQUFuQndPLElBQVFELEtBSEx3QyxRQUdDdkQsTUFBUUM7OztjQUhFeE4sSUFFSDtJQUVGLE9BQUE7R0FBMEI7WUFJaEMrUSxNQUFNeEgsS0FHVnhKLElBRElDO0lBRE4sS0FFRUQsSUFEVSxPQUFOQztTQUFBQSxJQUNNLE9BQVZEO1FBQ2dCaVIsS0FGWmhSLE9BRU1pUixLQUZOalIsT0FFRWtSLEtBRE5uUixPQUNBb1IsS0FEQXBSO0lBRUssV0FBQSxXQUxLd0osS0FJVjRILElBQVVGO2tCQUFBQSxJQUpORixNQUFNeEgsS0FHVnhKLElBQ2dCaVI7a0JBQWhCRyxJQUpJSixNQUFNeEgsS0FJSjJILElBRkZsUjtHQUt3QjtZQUc1Qm9SLFlBQVk3SCxLQUFJOUk7YUFtQlY0USxLQUFLN1MsR0FBRWlDO0tBQ2IsU0FEV2pDO1NBQUVpQzttQkFBQUE7O1FBR0U7U0FERU07U0FBTnVRO1NBQU5DLEtBRlE5UTtTQUdMN0I7ZUFBTyxXQXRCSDJLLEtBcUJQZ0ksSUFBTUQ7a0JBQUFBLFFBQU5DO2tCQUFBQSxRQUFNRDtRQUVQLFdBREkxUyxHQURTbUM7Ozs7bUJBRk52QyxLQUFFaUM7Z0JBQUFBOzs7O1FBT0o7U0FGYytRO1NBQU5DO1NBQU5DO1NBQU5DLE9BTFFsUjtTQU1MZ0w7ZUFDQyxXQTFCR2xDLEtBd0JQb0ksTUFBTUQ7O2dCQU1HLFdBOUJGbkksS0F3QlBvSSxNQUFZRjs7a0JBT0gsV0EvQkZsSSxLQXdCRG1JLE1BQU1EO3NCQUFBQSxRQUFOQyxVQUFOQztzQkFBTUQsVUFBTUQsUUFBWkU7b0JBQU1ELFVBQU5DLFVBQVlGOztnQkFHTixXQTNCQ2xJLEtBd0JEbUksTUFBTUQ7O2tCQUlELFdBNUJKbEksS0F3QlBvSSxNQUFZRjtzQkFBQUEsUUFBWkUsVUFBTUQ7c0JBQU5DLFVBQVlGLFFBQU5DO29CQUFOQyxVQUFNRCxVQUFNRDtRQVViLFdBVEloRyxLQURlK0Y7Ozs7S0FjTjtNQUZUSSxLQWpCR3BUO01Ba0JIcVQsS0FsQkdyVCxJQWlCSG9UO01BRVMsVUFHZkUsU0FMTUYsSUFqQktuUjtNQW1CRCtNO01BNUJRM047TUE2QkgsVUFFZmlTLFNBSk1ELElBQ0lyRTtNQUNBdUU7TUE3QldqUztNQUdyQkMsS0FIa0JGO01BRWRHLEtBRmlCRjtNQUFHMEQ7S0FDMUI7U0FFRXpEO1VBRElDO1lBRmlCZ1IsS0FFakJoUixPQUVJaVIsS0FGSmpSLE9BRmNrUixLQUdsQm5SLE9BQ0FvUixLQURBcFI7UUFFSyxPQUFBLFdBZkt3SixLQWNWNEgsSUFBUUY7U0FFbUIsSUFOSHZOLGFBSXhCeU4sSUFKd0IzTixPQUd4QnpELEtBSGtCbVIsSUFBTTFOLE9BQUFFOzs7UUFPRyxJQVBIeUssYUFJaEI4QyxJQUpnQnpOLE9BRXBCeEQsS0FGaUJnUixJQUFHeE4sT0FBQTJLOzs7aUJBblJ0QmIsV0FzUkZ2TixJQUh3QnlEOzs7aUJBblJ0QjhKLFdBcVJFdE4sSUFGb0J3RDtNQThCdEIsZ0JBRFF1Tzs7SUFDb0I7YUFDOUJELFNBQVN0VCxHQUFFaUM7S0FDYixTQURXakM7U0FBRWlDO21CQUFBQTs7UUFHRTtTQURFTTtTQUFOdVE7U0FBTkMsS0FGUTlRO1NBR0w3QjtlQUFPLFdBNUNIMkssS0EyQ1BnSSxJQUFNRDtrQkFBTkMsUUFBTUQ7a0JBQUFBLFFBQU5DO1FBRUQsV0FESTNTLEdBRFNtQzs7OzttQkFGTnZDLEtBQUVpQztnQkFBQUE7Ozs7UUFPSjtTQUZjK1E7U0FBTkM7U0FBTkM7U0FBTkMsT0FMUWxSO1NBTUxnTDtlQUNDLFdBaERHbEMsS0E4Q1BvSSxNQUFNRDs7Z0JBR0EsV0FqRENuSSxLQThDRG1JLE1BQU1EO29CQUFaRSxVQUFNRCxVQUFNRDs7a0JBSUQsV0FsREpsSSxLQThDUG9JLE1BQVlGO3NCQUFaRSxVQUFZRixRQUFOQztzQkFBTUQsUUFBWkUsVUFBTUQ7O2dCQU1HLFdBcERGbkksS0E4Q1BvSSxNQUFZRjtvQkFBTkMsVUFBTkMsVUFBWUY7O2tCQU9ILFdBckRGbEksS0E4Q0RtSSxNQUFNRDtzQkFBTkMsVUFBTUQsUUFBWkU7c0JBQVlGLFFBQU5DLFVBQU5DO1FBVUQsV0FUSWxHLEtBRGUrRjs7OztLQWNOO01BRlRJLEtBakJHcFQ7TUFrQkhxVCxLQWxCR3JULElBaUJIb1Q7TUFFUyxVQXpDWFAsS0F1Q0VPLElBakJLblI7TUFtQkQrTTtNQTNESTNOO01BNERDLFVBMUNYd1IsS0F3Q0VRLElBQ0lyRTtNQUNBdUU7TUE1RE9qUztNQUdqQkMsS0FIY0Y7TUFFVkcsS0FGYUY7TUFBRzBEO0tBQ3RCO1NBRUV6RDtVQURJQztZQUZhZ1IsS0FFYmhSLE9BRUlpUixLQUZKalIsT0FGVWtSLEtBR2RuUixPQUNBb1IsS0FEQXBSO1FBRUssT0FBQSxXQU5Ld0osS0FLVjRILElBQVFGO1NBR2UsSUFQSHZOLGFBSVp1TixJQUpZek4sT0FFaEJ4RCxLQUZhZ1IsSUFBR3hOLE9BQUFFOzs7UUFNRyxJQU5IeUssYUFJcEJnRCxJQUpvQjNOLE9BR3BCekQsS0FIY21SLElBQU0xTixPQUFBMks7OztpQkExUWxCYixXQTZRRnZOLElBSG9CeUQ7OztpQkExUWxCOEosV0E0UUV0TixJQUZnQndEO01BNkRsQixnQkFEUXVPOztJQUNnQjtJQUVwQixJQUFON1AsTUF2V0Y2SyxPQXVTZ0J0TTtJQWlFbEIsWUFESXlCLE1BN0NJbVAsS0E2Q0puUCxLQWhFY3pCLFFBQUFBO0dBaUVxQjtZQXlDckN1UixVQUFVekksS0FBSTlJO2FBdUJSNFEsS0FBSzdTLEdBQUVpQztLQUNiLFNBRFdqQztTQUFFaUM7bUJBQUFBOztRQUlDO1NBRkdNO1NBQU51UTtTQUFOQyxLQUZROVE7U0FJSHdSLE1BQUksV0EzQkoxSSxLQXlCTGdJLElBQU1EO1NBQ0gxUztpQkFDRXFUO2tCQUZMVjttQkFFS1UsVUFGQ1gsUUFBTkMsY0FBQUEsUUFBTUQ7UUFLUCxXQUpJMVMsR0FEU21DOzs7O21CQUZOdkMsS0FBRWlDO2dCQUFBQTs7OztRQVVDO1NBRlMrUTtTQUFOQztTQUFOQztTQUFOQyxPQVJRbFI7U0FVSHlSLE1BQUksV0FqQ0ozSSxLQStCTG9JLE1BQU1EO1FBR0wsU0FESVE7U0FFTTtVQUFKQyxNQUFJLFdBbkNONUksS0ErQkNtSSxNQUFNRDtVQUtUO2tCQURJVTttQkFKRFQ7b0JBSUNTLFVBSktWLFFBQU5DLGdCQUFBQSxVQUFNRDtVQUNUaEc7cUJBQ0V5RztTQWNNLElBQUpFLE1BQUksV0EvQ043SSxLQStCTG9JLE1BQVlGO1NBaUJULFNBRElXO3dCQWhCRFYsVUFBTkM7c0JBZ0JPUztVQUlNO1dBQUpDLE1BQUksV0FuRFI5SSxLQStCQ21JLE1BQU1EO1dBcUJQO21CQURJWTtvQkFwQkhYLFVBQU5DOzttQkFvQlNVO3NCQXBCR1osUUFBTkMsVUFBTkM7c0JBQU1ELFVBQU1ELFFBQVpFOzs7d0JBQU1ELFVBQU5DLFVBQVlGO2FBQ1RoRzs7O1NBTVEsSUFBSjZHLE1BQUksV0F0Q04vSSxLQStCQ21JLE1BQU1EO1NBUVQsU0FESWE7d0JBUFBYLFVBQU1EO3NCQU9DWTtVQUlNO1dBQUpDLE1BQUksV0ExQ1JoSixLQStCTG9JLE1BQVlGO1dBWVA7bUJBREljO29CQVhUWixVQUFNRDs7bUJBV0dhO3NCQVhHZCxRQUFaRSxVQUFNRDtzQkFBTkMsVUFBWUYsUUFBTkM7Ozt3QkFBTkMsVUFBTUQsVUFBTUQ7YUFDVGhHOztRQXdCSixXQXhCSUEsS0FEZStGOzs7O0tBNkJOO01BRlRJLEtBbkNHcFQ7TUFvQ0hxVCxLQXBDR3JULElBbUNIb1Q7TUFFUyxVQUdmRSxTQUxNRixJQW5DS25SO01BcUNEK007TUFoRFEzTjtNQWlESCxVQUVmaVMsU0FKTUQsSUFDSXJFO01BQ0F1RTtNQWpEV2pTO01BR3JCQyxLQUhrQkY7TUFFZEcsS0FGaUJGO01BQUcwRDtLQUMxQjtTQUVFekQ7VUFESUM7UUFHTTtTQUxXZ1IsS0FFakJoUjtTQUVJaVIsS0FGSmpSO1NBRmNrUixLQUdsQm5SO1NBQ0FvUixLQURBcFI7U0FFTXlCLElBQUksV0FqQkYrSCxLQWdCUjRILElBQVFGO1FBRU4sU0FESXpQO1NBQzhCLElBTlprQyxhQUl4QnlOLElBSndCM04sT0FHeEJ6RCxLQUhrQm1SLElBRWRsUixLQUZpQmdSLElBQUd4TixPQUFBRTs7O2VBS2xCbEM7U0FHcUIsSUFSSDJNLGFBSXhCZ0QsSUFKd0IzTixPQUd4QnpELEtBSGtCbVIsSUFBTTFOLE9BQUEySzs7O1FBU0csSUFUSHFFLGFBSWhCdkIsSUFKZ0J6TixPQUVwQnhELEtBRmlCZ1IsSUFBR3hOLE9BQUFnUDs7O2lCQS9YdEJsRixXQWtZRnZOLElBSHdCeUQ7OztpQkEvWHRCOEosV0FpWUV0TixJQUZvQndEO01Ba0R0QixnQkFEUXVPOztJQUNvQjthQUM5QkQsU0FBU3RULEdBQUVpQztLQUNiLFNBRFdqQztTQUFFaUM7bUJBQUFBOztRQUlDO1NBRkdNO1NBQU51UTtTQUFOQyxLQUZROVE7U0FJSHdSLE1BQUksV0FuRUoxSSxLQWlFTGdJLElBQU1EO1NBQ0gxUztpQkFDRXFUO2tCQUZMVjtrQkFFS1UsVUFGTFYsUUFBTUQsY0FBQUEsUUFBTkM7UUFLRCxXQUpJM1MsR0FEU21DOzs7O21CQUZOdkMsS0FBRWlDO2dCQUFBQTs7OztRQVVDO1NBRlMrUTtTQUFOQztTQUFOQztTQUFOQyxPQVJRbFI7U0FVSHlSLE1BQUksV0F6RUozSSxLQXVFTG9JLE1BQU1EO1FBR0wsU0FESVE7U0FFTTtVQUFKQyxNQUFJLFdBM0VONUksS0F1RUNtSSxNQUFNRDtVQUtUO2tCQURJVTttQkFKRFQ7bUJBSUNTLFVBSkRULFVBQU1ELGNBQUFBLFFBQU5DO1VBQ0hqRztvQkFDRXlHO1NBS00sSUFBSkUsTUFBSSxXQTlFTjdJLEtBdUVDbUksTUFBTUQ7U0FRVCxTQURJVzt3QkFQUFQsVUFBTUQ7cUJBT0NVO3dCQVBQVCxVQUFNRCxVQUFNRDs7VUFXQztXQUFKWSxNQUFJLFdBbEZSOUksS0F1RUxvSSxNQUFZRjtXQVlQO21CQURJWTtvQkFYVFYsVUFBTUQ7O2tCQVdHVztzQkFYVFYsVUFBWUYsUUFBTkM7c0JBQU1ELFFBQVpFLFVBQU1EOzthQUNIakc7OztTQWVRLElBQUo2RyxNQUFJLFdBdkZOL0ksS0F1RUxvSSxNQUFZRjtTQWlCVCxTQURJYTt3QkFoQkRaLFVBQU5DO3FCQWdCT1c7d0JBaEJEWixVQUFOQyxVQUFZRjs7VUFvQkM7V0FBSmMsTUFBSSxXQTNGUmhKLEtBdUVDbUksTUFBTUQ7V0FxQlA7bUJBREljO29CQXBCSGIsVUFBTkM7O2tCQW9CU1k7c0JBcEJIYixVQUFNRCxRQUFaRTtzQkFBWUYsUUFBTkMsVUFBTkM7O2FBQ0dsRzs7UUF3QkosV0F4QklBLEtBRGUrRjs7OztLQTZCTjtNQUZUSSxLQW5DR3BUO01Bb0NIcVQsS0FwQ0dyVCxJQW1DSG9UO01BRVMsVUE3RVhQLEtBMkVFTyxJQW5DS25SO01BcUNEK007TUFuR0kzTjtNQW9HQyxVQTlFWHdSLEtBNEVFUSxJQUNJckU7TUFDQXVFO01BcEdPalM7TUFHakJDLEtBSGNGO01BRVZHLEtBRmFGO01BQUcwRDtLQUN0QjtTQUVFekQ7VUFESUM7UUFHTTtTQUxPZ1IsS0FFYmhSO1NBRUlpUixLQUZKalI7U0FGVWtSLEtBR2RuUjtTQUNBb1IsS0FEQXBSO1NBRU15QixJQUFJLFdBTkYrSCxLQUtSNEgsSUFBUUY7UUFFTixTQURJelA7U0FDMEIsSUFOWmtDLGFBSXBCeU4sSUFKb0IzTixPQUdwQnpELEtBSGNtUixJQUVWbFIsS0FGYWdSLElBQUd4TixPQUFBRTs7O2dCQUtkbEM7U0FJaUIsSUFUSDJNLGFBSVo4QyxJQUpZek4sT0FFaEJ4RCxLQUZhZ1IsSUFBR3hOLE9BQUEySzs7O1FBUUcsSUFSSHFFLGFBSXBCckIsSUFKb0IzTixPQUdwQnpELEtBSGNtUixJQUFNMU4sT0FBQWdQOzs7aUJBcFhsQmxGLFdBdVhGdk4sSUFIb0J5RDs7O2lCQXBYbEI4SixXQXNYRXROLElBRmdCd0Q7TUFxR2xCLGdCQURRdU87O0lBQ2dCO0lBRXBCLElBQU43UCxNQXpmRjZLLE9BaVpjdE07SUF5R2hCLFlBREl5QixNQWpGSW1QLEtBaUZKblAsS0F4R1l6QixRQUFBQTtHQXlHdUI7WUFHakNnUyxnQkFBZ0IxUyxJQUFHQztJQUN6QixJQURzQnVOLE9BQUF4TixJQUFHeU4sT0FBQXhOO0lBQ3pCO1VBRHNCdU4sYUFBR0M7VUFBQUEsTUFJZDtTQUpjRSxPQUFBRixTQUFIQyxPQUFBRixTQUFBQSxPQUFBRSxNQUFHRCxPQUFBRTs7R0FLa0I7WUFHckNnRixvQkFBb0JqUyxHQUFFakM7SUFDNUIsSUFEMEJ3TyxNQUFBdk0sR0FBRXlNLE1BQUExTztJQUM1QjtVQUQwQndPLGtCQUFFRSxjQUFBQTtTQUFGQyxNQUFBSDtLQU14QixRQU4wQkUsS0FNWDtLQUNiLElBUHdCRSxNQUFBRixhQUFGRixNQUFBRyxLQUFFRCxNQUFBRTs7R0FPRztZQVV6QnBFLE1BQU1DLElBQUdsSixJQUFHQztJQUNsQixJQURldU4sT0FBQXhOLElBQUd5TixPQUFBeE47SUFDbEI7UUFEZXVOO1NBQUdDO09BSUU7UUFKRkUsT0FBQUY7UUFJUmMsS0FKUWQ7UUFBSEMsT0FBQUY7UUFJYmdCLEtBSmFoQjtRQUlLLE1BQUEsV0FKUnRFLElBSVZzRixJQUFRRDtPQUFVLFVBQUE7V0FKTGYsT0FBQUUsTUFBR0QsT0FBQUU7Ozs7ZUFBQUYsTUFFTjtLQUNhOztHQUNxQjtZQUV4Q2xFLFFBQVFDLEtBQUl4SixJQUFHQztJQUNyQixJQURrQnVOLE9BQUF4TixJQUFHeU4sT0FBQXhOO0lBQ3JCO1VBRGtCdU4sYUFBR0M7U0FBSEMsT0FBQUYsU0FLaEJnQixLQUxnQmhCO1VBQUdDLE1BSVA7S0FFSixJQU5XRSxPQUFBRixTQUtYYyxLQUxXZCxTQU1maE0sSUFBSSxXQU5JK0gsS0FLWmdGLElBQVFEO0tBRVIsU0FESTlNLEdBQ1csT0FEWEE7U0FOWStMLE9BQUFFLE1BQUdELE9BQUFFOztHQVFHO1lBSXRCaEUsT0FBT2pKO0lBQ1QsU0FBUWtTLElBQUlsUztLQUFPLEtBQVBBLEdBQ0Y7U0FDRG1TLE9BRkduUyxNQUVSMUIsSUFGUTBCO0tBRUssV0FBYjFCLGlCLE9BRkk0VCxJQUVDQztJQUE4QjtJQUV2QyxxQixPQUpRRCxJQURDbFM7R0FLSjtZQUVIb1MsT0FBT3JMO2FBQ0RzTCxPQUFPQyxPQUFNdkw7S0FDbkIsU0FEYXVMO2tDQUdRaEwsS0FBSWhKLEdBQUssV0FBTEEsR0FBSmdKLEtBQWU7TUFBbEMsT0FoaEJGNEYsSUFnaEJFLHFDQUhpQm5HOztLQUtSLFlBQUEsV0FMUUE7aUJBTUo7U0FDRUwsaUJBQUhwSTtLQUFZLFdBQVpBLEdBUFIrVCxPQUFPQyxlQU9JNUw7SUFBbUM7SUFFdEQsT0FUUTJMLFlBREN0TDtHQVVLOzs7O09BempCWnVGO09BNmZJMEY7T0FRQUM7T0FuZ0JKeEw7T0FFQWxHO09BSUFEO09BSUFrTTtPQVFBSTtPQWVBTTtPQW1CQUc7T0ExQkExRztPQUVJa0c7T0E2QkFTO09BQUFBO09BMmRBL0U7T0FNQU07T0F6Y0FwQjtPQVFKZ0c7T0ExQkkzRztPQVFKeUc7T0FFQUM7T0EwSkF4RztPQVVBeUk7T0FRQUU7T0ExSkl0STtPQUtBc0c7T0FxQkFLO09BaEJBSjtPQU1KRztPQWdCSUU7T0FNQUM7T0FNQUM7T0FJQUU7T0FJQUM7T0FNQUM7T0FNQUM7T0FJQUM7T0FxQ0FVO09BSUFDO09BSUFDO09BUUpFO09BQUFBO09BUUFDO09BaUNBTTtPQU1BRztPQWhHSXZCO09BSUFDO09BSUFDO09BSUFDO09BSUFDO09BSUFDO09BSUFDO09BS0FFO09BOEVBZ0I7T0FLQUc7T0FrQkpNO09BQUFBO09BQUFBO09BMEdBWTtPQXBISWpCO09BMlFKckg7T0FPQW1KOzs7RTs7Ozs7OzBDQ3RqQkFHLFVBQ0FDLFNBQ0FDO1lBU0FoVSxJQUFJSCxHQUFJLFlBQUpBLElBQUFBLE1BQUFBLE1BQTRCO09BQ2hDVyxzQkFDQUM7WUFJQXdULE9BQU9wVSxHQUFJLE9BQUpBLE9BQWlCO1lBSXhCaUssZ0I7T0FDQU07WUFDQXhLLElBQUlDLEdBQUVDLEdBQVEsT0FBVkQsS0FBRUMsSUFBRkQsSUFBRUMsRUFBK0I7WUFDckNDLElBQUlGLEdBQUVDLEdBQVEsT0FBUkEsS0FBRkQsSUFBQUEsSUFBRUMsRUFBK0I7WUFVckN1TSxVQUFVeE0sR0FBSSxZQUFKQSxFQUFxQjs7OztPQWxDL0JpVTtPQUNBQztPQUNBQztPQVNBaFU7T0FDQVE7T0FDQUM7T0FJQXdUO09BSUFuSztPQUNBTTtPQUNBeEs7T0FDQUc7T0FVQXNNOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDWEF6TixLQUFLVSxHQUFFZ0Q7SUFDRCxJQUFKNUMsSUFBSSxrQkFEREo7SUFFUCxnQkFESUksTUFER0osR0FBRWdEO0lBRVQsT0FESTVDO0dBRUg7WUFFQ2tQLEtBQUt0UCxHQUFFWjtJQUNULElBQUlnQixJQUFJLGtCQURESixJQUVQLE9BRk9BLFdBQ0M7O1NBQ1JrQzs7NEJBREk5QixHQUNKOEIsR0FDaUIsV0FIUjlDLEdBRVQ4QztNQUFBLFdBQUFBO2tCQUFBQTtVQUFBQTs7O0lBR0EsT0FKSTlCO0dBSUg7R0FFUyxJQUFSb0ksUUFBUTtZQUVSb00sS0FBS3hVO0lBQ1AsSUFBSXNELDJCQURHdEQsSUFFSFgsSUFBSSxrQkFESmlFO0lBRUosZ0JBSE90RCxNQUVIWCxNQURBaUU7SUFFSixPQURJakU7R0FFSDtZQUVDc04sVUFBVXBMLEdBQUksT0FBaUIscUJBTi9CaVQsS0FNVWpULElBQTZCO1lBQ3ZDa1QsVUFBVXpVLEdBQUksT0FQZHdVLDBCQU9VeFUsSUFBNkI7WUFFdkMwVSxJQUFJMVUsR0FBRXFELEtBQUlDO0lBQ1osUUFEUUQsWUFBSUMsNkJBQU50RCxLQUFNc0QsWUFBSkQ7S0FJRSxJQUFKaEUsSUFBSSxrQkFKRWlFO0tBS1YsZ0JBTEl0RCxHQUFFcUQsS0FJRmhFLE1BSk1pRTtLQUtWLE9BRElqRTs7SUFGRCxPQUFBO0dBS0Y7WUFFRHNWLFdBQVdwVCxHQUFFOEIsS0FBSUM7SUFBTSxPQUFpQixxQkFUeENvUixJQVNXblQsR0FBRThCLEtBQUlDO0dBQXNDO1lBR3ZEdEMsT0FBS2dDLEdBQUV6QjtJQUNULElBQUlxQixJQURHSSxJQUFFekIsY0FBQUEsdUJBQ0xxQjs7O1FBREdJO0tBS0EsT0FKSEo7O0lBR3FCLE9BQUE7R0FDakI7WUFFTmdTLE9BQU81VSxHQUFFK0ssTUFBS0M7SUFDaEI7S0FBSTFILE1BUkZ0QyxPQUFBQSw0QkFPT2hCLElBQUUrSyxPQUFLQztLQUVaM0wsSUFBSSxrQkFESmlFO1lBRE95SDtTQUdFOEosU0FIRjlKLE1BR04rSjs7U0FBUUQsWUFBUkMsV0FITS9KO0lBSUU7S0FBVGdLO09BQVM7OzhCQUpKL1UsS0FHSjhVO1NBRkR4UixNQUVTdVI7V0FDVEUsUUFDZSxnQkFMVi9VLEdBR0o4VSxRQUREelYsR0FDU3dWLFFBQ1RFO0lBQ2UsT0FIZjFWO0dBSUg7WUFFQzJWLEtBQUtoVixHQUFFcUQsS0FBSUMsS0FBSVY7SUFDakIsUUFEU1MsWUFBSUMsNkJBQU50RCxLQUFNc0QsWUFBSkQ7S0FHSixPQUFBLGdCQUhFckQsR0FBRXFELEtBQUlDLEtBQUlWO0lBRVosT0FBQTtHQUN1QjtZQUUxQnFTLEtBQUtoVSxJQUFHaVUsTUFBS2hVLElBQUdpVSxNQUFLN1I7SUFDdkI7V0FEdUJBOztZQUFiNFI7OzhCQUFIalUsTUFBZ0JxQyxZQUFiNFI7Z0JBQVFDLDhCQUFIalUsTUFBUW9DLFlBQUw2UjtLQUliLE9BQUEsZ0JBSkVsVSxJQUFHaVUsTUFBS2hVLElBQUdpVSxNQUFLN1I7SUFHbEIsT0FBQTtHQUMrQjtZQUVsQzhSLFlBQVluVSxJQUFHaVUsTUFBS2hVLElBQUdpVSxNQUFLN1I7SUFDOUI7V0FEOEJBOztZQUFiNFI7O3VDQUFIalUsTUFBZ0JxQyxZQUFiNFI7Z0JBQVFDLDhCQUFIalUsTUFBUW9DLFlBQUw2UjtLQUlwQixPQUFBLHlCQUpTbFUsSUFBR2lVLE1BQUtoVSxJQUFHaVUsTUFBSzdSO0lBR3pCLE9BQUE7R0FDc0M7WUFHekNnRyxLQUFLdEssR0FBRWdFO0lBQ1QsZ0NBRFNBLFlBQ1Q7O1NBQUFsQjs7TUFBNkIsV0FEdEI5Qyx5QkFBRWdFLEdBQ1RsQjtNQUE2QixXQUE3QkE7a0JBQUFBO1VBQUFBOzs7O0dBQW1EO1lBR2pEd04sTUFBTXRRLEdBQUVnRTtJQUNWLCtCQURVQSxZQUNWOztTQUFBbEI7O01BQTZCLFdBRHJCOUMsR0FDUjhDLHlCQURVa0IsR0FDVmxCO01BQTZCLFVBQTdCQTtpQkFBQUE7VUFBQUE7Ozs7R0FBc0Q7WUFrQnBEa0gsT0FBT3FNLEtBRVB4VDtJLEtBQUFBLEdBakZRLE9BQVJ1RztRQXNFNkJrTiw4QkFTdEJEOzs7OztVQWRTbE0saUJBZ0JoQnRIOzs7V0FkQU87OztRQUNNRDtRQUxLaEMsMEJBSVhpQyxNQUc2QmtULGNBTGJuTTtnQkFBQUEsT0FGTGhKLElBQUFBLElBQWlDO1FBRTVCZ0o7Z0JBR1ZoSDs7Z0JBSFVnSDs7O29DQUVoQi9HLE1BRmdCK0c7O0lBa0JSLElBYlNvTSxNQWFULHdCQWJhQyx1QkFXckIzVDs7bUJBVk0sT0FEVzBUO1NBRWpCRTs7TUFDQSxnQkFEQUEsU0FGaUJGLEtBQUlDLDBCQUVyQkM7TUFDQSxPQUhpQkY7O1NBSVhwQztLQUNOLGdCQUhBc0MsU0FGaUJGLEtBQUlDLEtBS3JCLHFCQUhBQztLQUlBO09BR09KLFFBVFVFLEtBQUlDLDJCQUVyQkMsV0FGNkJIOztlQUFSRSwyQkFFckJDLGFBRjZCSDtNQUFSRTtnQkFJZnJDOzs7WUFZTnVDLElBQUl6VSxJQUFHQztJQUNUO0tBQUlDLDBCQURFRjtLQUVGRyxLQUFKLHFCQUZTRjtLQUdMN0IsSUFBSSxrQkFGSjhCLEtBQ0FDO0lBRUosZ0JBSk1ILE9BR0Y1QixNQUZBOEI7SUFJSixnQkFMU0QsT0FHTDdCLEdBRkE4QixJQUNBQztJQUdKLE9BRkkvQjtHQUdIO1lBTUNzVztJQUFXOzs7O0tBQzBCOztJQUNoQztHQUFLO1lBRVZDLEtBQUs1VjtJQUNQLElBQUlzRCwyQkFER3RELElBRUg4Qjs7UUFBQUEsUUFEQXdCO0tBRWMsS0FQaEJxUywrQkFJSzNWLEdBRUg4QjtLQUFBQTs7SUFJSSxJQUFKK1QsUUFMQXZTOztLQU1jLEdBTGR4QixRQUlBK1QsUUFWRkYsK0JBSUszVixHQU1INlYsUUFBQUE7WUFKQS9ULFFBSUErVCxPQWpHRm5CLElBMkZLMVUsR0FFSDhCLE9BSUErVCxPQUpBL1QscUJBeEdGc0c7O0dBbUhLO1lBRUx3RSxRQUFRNU07SUFDVixJQUFJSix1Q0FETUksWUFDRjs7U0FDUitCOzt3Q0FGVS9CLEdBRVYrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFESW5DLE9BQUFBO01BQ0osVUFBQW1DO2lCQUFBQTtVQUFBQTs7O09BREluQyw4QkFETUksSUFTWSxPQTVIcEJ3VSxLQW1IUXhVO0lBVUMsSUFBTDZNLE1BQUssa0JBVFBqTjtJQUFBQTtJQVdGLCtCQVpRSSxZQVlSOztTQUFBOEI7O1VBWUljLDBCQXhCSTVDLEdBWVI4Qjs7Ozs7OztrQkFZSWM7b0JBQUFBLGFBQUFBOzs7a0JBQUFBO29CQUFBQTtrQkFBQUE7O29DQWRBaUssS0FURmpOO2NBQUFBO29DQVNFaU4sS0FURmpOOzs7b0NBU0VpTixLQVRGak47Y0FBQUE7b0NBU0VpTixLQVRGak47OztvQ0FTRWlOLEtBVEZqTjtjQUFBQTtvQ0FTRWlOLEtBVEZqTjs7O29DQVNFaU4sS0FURmpOO2NBQUFBO29DQVNFaU4sS0FURmpOOzs7OztrQkF1QkVnRDs7K0JBZEFpSyxLQVRGak47U0FBQUE7K0JBU0VpTixLQVRGak4sTUF1QkVnRDs7OzhCQWRBaUssS0FURmpOO1FBQUFBOzhCQVNFaU4sS0FURmpOLFlBdUJFZ0Q7UUF2QkZoRDs4QkFTRWlOLEtBVEZqTixhQXVCRWdEO1FBdkJGaEQ7OEJBU0VpTixLQVRGak4sWUF1QkVnRDs7OzZCQWRBaUssS0FURmpOLE1BdUJFZ0Q7O01BdkJGaEQ7TUFXRixVQUFBa0M7aUJBQUFBO1VBQUFBOzs7SUF5QkEsT0EzQkkrSztHQTRCSDtZQUVEbEUsSUFBSTNKLEdBQUVnQjtJQUNSLElBQUk2Qix5QkFESTdCO0lBRVIsU0FESTZCLEdBQ1UsT0FGTjdCO0lBR0UsSUFBSlgsSUFBSSxrQkFGTndDLElBR0YsTUFIRUEsV0FFTTs7U0FDUkM7OzRCQURJekMsR0FDSnlDLEdBQXFDLFdBSmpDOUMseUJBQUVnQixHQUlOOEI7TUFBQSxVQUFBQTtpQkFBQUE7VUFBQUE7OztJQUNBLE9BRkl6QztHQUdIO1lBRUQrUCxLQUFLcFEsR0FBRWdCO0lBQ1QsSUFBSTZCLHlCQURLN0I7SUFFVCxTQURJNkIsR0FDVSxPQUZMN0I7SUFHQyxJQUFKWCxJQUFJLGtCQUZOd0MsSUFHRixNQUhFQSxXQUVNOztTQUNSQzs7O1FBREl6QyxHQUNKeUMsR0FBcUMsV0FKaEM5QyxHQUlMOEMseUJBSk85QixHQUlQOEI7TUFBQSxVQUFBQTtpQkFBQUE7VUFBQUE7OztJQUNBLE9BRkl6QztHQUdIO1lBRUQ2SixVQUFVbEssR0FBRW1CLEdBQUU2QztJQUNoQixJQUFJM0QsUUFEVWMsK0JBQUU2QyxZQUNSOztTQUNSbEI7O01BREl6QyxPQUVHLFdBSEtMLEdBQ1JLLDRCQURZMkQsR0FFaEJsQjtNQUFBLFVBQUFBO2lCQUFBQTtVQUFBQTs7O1dBREl6QztHQUlGO1lBRUFtUSxXQUFXeFEsR0FBRWdFLEdBQUU3QztJQUNqQixJQUFJZCxRQURhYyxJQUVqQixNQUFBLHFCQUZlNkM7O1NBRWZsQjs7TUFESXpDLE9BRUcsV0FITUwseUJBQUVnRSxHQUVmbEIsSUFESXpDO01BQ0osVUFBQXlDO2VBQUFBO1VBQUFBOzs7V0FESXpDO0dBSUY7WUFFQTZRLE9BQU9ELEdBQUVqUTtJQUNYLElBQUlKLHlCQURPSSxJQUVFOEI7SUFDWDtRQURXQSxNQURUbEMsR0FFWTtLQUNOLEdBQUEsV0FKRHFRLHlCQUFFalEsR0FFRThCLEtBRXFCO0tBQzNCLElBSE1DLE1BQUFELFdBQUFBLElBQUFDOztHQUlQO1lBRUppTyxRQUFRQyxHQUFFalE7SUFDWixJQUFJSix5QkFEUUksSUFFQzhCO0lBQ1g7UUFEV0EsTUFEVGxDLEdBRVk7S0FDTixLQUFBLFdBSkFxUSx5QkFBRWpRLEdBRUM4QixLQUdOO0tBRDJCLElBRnJCQyxNQUFBRCxXQUFBQSxJQUFBQzs7R0FJUDtZQUVKa0wsZ0JBQWdCak4sR0FBSSxPQTlDcEIySSxvQkE4Q2dCM0ksR0FBOEI7WUFDOUNnTixnQkFBZ0JoTixHQUFJLE9BL0NwQjJJLG9CQStDZ0IzSSxHQUE4QjtZQUU5QzhWLE9BQU85VyxHQUFFZ0I7SUFDWCw4QkFEV0EsSUFDVSxPQURWQTtJQUVELElBQUpYLElBOU1KbVYsS0E0TVN4VTswQkFFTFgsTUFDVyxXQUhSTCx5QkFBRWdCO0lBSVQsT0FGSVg7R0FHSDtZQUVEMFcsaUJBQWlCL1YsR0FBSSxPQVByQjhWLHVCQU9pQjlWLEdBQWlDO1lBQ2xEZ1csbUJBQW1CaFcsR0FBSSxPQVJ2QjhWLHVCQVFtQjlWLEdBQWlDO1lBR3BEaVcsWUFBYUMsUUFBT2xXO0lBQ3RCO0tBQUltVyw2QkFEa0JuVztLQUVsQm9XLCtCQUZXRjtXQUVYRSxXQURBRDs7UUFFUXJVO0lBQ1Y7UUFEVUEsTUFEUnNVLFNBRWtCOzhCQUpBcFcsR0FHVjhCLDZCQUhHb1UsUUFHSHBVO01BRXlDO0tBQzlDLElBSEtDLE1BQUFELFdBQUFBLElBQUFDOztHQUlnQjtZQUcxQnNVLFVBQVdDLFFBQU90VztJQUNwQjtLQUFJbVcsNkJBRGdCblc7S0FFaEJ1VywrQkFGU0Q7S0FHVEUsT0FGQUwsUUFDQUk7Z0JBQ0FDOztRQUNRMVU7SUFDVjtRQURVQSxNQUZSeVUsU0FHa0I7OzZCQUxGdlcsR0FHaEJ3VyxPQUNRMVU7aUNBSkN3VSxRQUlEeFU7TUFFa0Q7S0FDdkQsSUFIS0MsTUFBQUQsV0FBQUEsSUFBQUM7O0dBSVM7WUFHZjBVLFVBQVV6VyxHQUFFMFcsS0FBSTVVLEdBQUVjO0lBQ3hCLElBRHNCYixNQUFBRDtJQUN0QjtRQURrQjRVLE9BQUkzVSxLQUNMLE1BQUE7OEJBREQvQixHQUFNK0IsU0FBRWEsR0FFRyxPQUZMYjtTQUFBNFUsTUFBQTVVLGFBQUFBLE1BQUE0VTs7R0FFcUM7WUFHekRDLE1BQU01VyxHQUFFNEMsR0FBSSxPQUxSNlQsVUFLRXpXLHdCQUFBQSxPQUFFNEMsR0FBOEI7WUFHbENpVSxjQUFjN1csR0FBRTBXLEtBQUk1VSxHQUFFYztJQUM1QixJQUQwQmIsTUFBQUQ7SUFDMUI7UUFEc0I0VSxPQUFJM1UsS0FDVDs4QkFERy9CLEdBQU0rQixTQUFFYSxHQUVELFdBRkRiO1NBQUE0VSxNQUFBNVUsYUFBQUEsTUFBQTRVOztHQUUwQztZQUdsRUcsVUFBVTlXLEdBQUU0QztJQUFJLE9BTFppVSxjQUtNN1csd0JBQUFBLE9BQUU0QztHQUFrQztZQUc5Q21VLFdBQVcvVyxHQUFFOEIsR0FBRWM7SUFDakIsSUFBSWYseUJBRFM3QjtZQUFFOEIsS0FDWEQsS0FEV0MsR0FHZixPQW5CTTJVLFVBZ0JPelcsR0FDVDZCLEdBRFdDLEdBQUVjO0lBRU0sT0FBQTtHQUNOO1lBR2ZvVSxlQUFlaFgsR0FBRThCLEdBQUVjO0lBQ3JCLElBQUlmLHlCQURhN0I7WUFBRThCLEtBQ2ZELEtBRGVDLEdBS2pCLE9BbkJJK1UsY0FjVzdXLEdBQ2I2QixHQURlQyxHQUFFYztJQUduQixPQUFBO0dBRXFCO1lBR2pCcVUsV0FBV2pYLEdBQUU4QixHQUFFYztJQUNyQixJQURtQmIsTUFBQUQ7SUFDbkI7WUFEbUJDLEtBQ0wsTUFBQTs4QkFERy9CLEdBQUUrQixTQUFFYSxHQUVNLE9BRlJiO1NBQUE0VSxNQUFBNVUsYUFBQUEsTUFBQTRVOztHQUVxQztZQUd0RE8sT0FBT2xYLEdBQUU0QztJQUFJLE9BTFRxVSxXQUtHalgsd0JBQUFBLFlBQUU0QztHQUFpQztZQUcxQ3VVLFlBQVluWCxHQUFFOEIsR0FBRWM7SUFDbEIsU0FEZ0JkLDBCQUFGOUIsS0FBRThCLEdBSWQsT0FaSW1WLFdBUVFqWCxHQUFFOEIsR0FBRWM7SUFFaEIsT0FBQTtHQUVnQjtZQUdad1UsZUFBZXBYLEdBQUU4QixHQUFFYztJQUN6QixJQUR1QmIsTUFBQUQ7SUFDdkI7WUFEdUJDLEtBQ1Q7OEJBRE8vQixHQUFFK0IsU0FBRWEsR0FFRSxXQUZKYjtTQUFBNFUsTUFBQTVVLGFBQUFBLE1BQUE0VTs7R0FFMEM7WUFHL0RVLFdBQVdyWCxHQUFFNEM7SUFBSSxPQUxid1UsZUFLT3BYLHdCQUFBQSxZQUFFNEM7R0FBcUM7WUFHbEQwVSxnQkFBZ0J0WCxHQUFFOEIsR0FBRWM7SUFDdEIsU0FEb0JkLDBCQUFGOUIsS0FBRThCLEdBSWxCLE9BWklzVixlQVFZcFgsR0FBRThCLEdBQUVjO0lBRXBCLE9BQUE7R0FFb0I7WUFJcEIyVSxjQUFjdlgsR0FBRThCLEdBQUVjO0lBQ3BCLElBQUlmLHlCQURZN0I7WUFBRThCLEtBQ2RELEtBRGNDO0tBS2hCLElBbEVJMlUsVUE2RFV6VyxHQUNaNkIsR0FEY0MsR0FBRWMsSUFLYyxhQUFBOzs7NEJBQXVCOzs7SUFGdkQsT0FBQTtHQUU0RDtZQUk1RDRVLFNBQVN4WCxHQUFFNEMsR0FBSSxPQVRmMlUsY0FTU3ZYLE1BQUU0QyxHQUF1QjtZQUdsQzZVLGVBQWV6WCxHQUFFOEIsR0FBRWM7SUFDckIsUUFEbUJkLDBCQUFGOUIsS0FBRThCO0tBSWpCLElBL0NJbVYsV0EyQ1dqWCxHQUFFOEIsR0FBRWMsSUFJWSxhQUFBOzs7NEJBQXVCOzs7SUFGdEQsT0FBQTtHQUUyRDtPQUszRDhIO1lBSUFnTixjQUFjckMsS0FBSXJWO0lBQ3BCO0tBQUlYO0tBQ0F3VyxRQUFKLHFCQUZvQjdWO0tBR3BCLE1BQUEscUJBSG9CQTs7U0FHcEI4Qjs7K0JBSG9COUIsR0FHcEI4QixPQUhnQnVUO2lCQUNaaFc7T0FBQUEsV0ExVEZxVixJQXlUa0IxVSxHQUdwQjhCLFlBREkrVCxPQUNKL1Q7T0FESStULE9BQ0ovVDs7TUFBQSxVQUFBQTtlQUFBQTtVQUFBQTs7O2NBRkl6QztJQVFKLFdBbFVFcVYsSUF5VGtCMVUsTUFFaEI2VjtHQU9ZO1lBSWQ5SSxVQUFVL00sR0FBSSxPQXBMZDJJLG9CQW9MVTNJLEdBQXdCO1lBQ2xDOE0sVUFBVTlNLEdBQUksT0FyTGQySSxvQkFxTFUzSSxHQUF3QjtZQUVsQzJYLFdBQVczWCxHQUFJLE9BdElmOFYsdUJBc0lXOVYsR0FBMkI7WUFDdEM0WCxhQUFhNVgsR0FBSSxPQXZJakI4Vix1QkF1SWE5VixHQUEyQjtZQUl4QzhLLE9BQU85SzthQUNEK1QsSUFBSWpTO0tBQ1YsR0FEVUEsMkJBREg5QixJQUVjO0tBRVgsSUFBSkcsSUFBSSxlQUpISCxHQUNHOEIsSUFHQSxNQUhBQTtLQUlSLFdBREkzQixpQixPQUhBNFQ7SUFJbUI7SUFFM0I7SUFBQSxxQixPQU5RQTtHQU1IO1lBRUg4RCxRQUFRN1g7YUFDRitULElBQUlqUztLQUNWLEdBRFVBLDJCQURGOUIsSUFFYTtLQUVYLElBQUpHLElBQUksZUFKRkgsR0FDRThCLElBR0EsTUFIQUE7S0FJUixlQUpRQSxHQUdKM0Isa0IsT0FIQTRUO0lBSXVCO0lBRS9CO0lBQUEscUIsT0FOUUE7R0FNSDtZQUVIRSxPQUFPblM7SUFDVCxJQUFJbEMsWUFDQThFLFVBelhGeEY7aUJBbVlLMEQ7S0FDRixHQVpEaEQsOEJBQ0E4RTtNQUdZO09BQVZvVDtTQUFVOztvQ0FIWnBUOzs4QkFBQUEsWUFHRW9UO09BQzBCO01BQ2hCLElBQVZDLFVBOVhKN1ksS0E0WEk0WTtNQXJVSjdDLEtBa1VFdlEsV0FLRXFULFlBTkZuWTtNQUNBOEUsU0FLRXFUOztLQU9ELGVBWkRyVCxRQURBOUUsTUFXR2dEO0tBWEhoRDs7SUFjTztJQUpYLGdDQVhTa0M7V0FoV1A0UyxJQWtXRWhRLFdBREE5RTtHQWdCUztZQWtCWG9ZLFNBQVN6VyxHQUFFTztJQUNiLElBQUE7V0FBQyxlQURVUCxHQUFFTztHQUNrRDtZQUU3RG1XLGNBQWMxVyxHQUFFTztJQUNsQjtjQUE4QixhQUFBLGlCQURkUCxHQUFFTztjQUViLGlCQUZXUCxHQUFFTztHQUVJO1lBRXBCb1csY0FBYzNXLEdBQUVPO0lBQ2xCO2NBQ0ssaUJBRldQLEdBQUVPO2NBQ2dCLGFBQUEsaUJBRGxCUCxHQUFFTztHQUVJO1lBRXBCcVcsYUFBYTVXLEdBQUVPO0lBQ2pCLElBQUE7V0FBQyxpQkFEY1AsR0FBRU87R0FDb0Q7WUFFbkVzVyxhQUFhN1csR0FBRU87SUFDakIsSUFBQTtXQVpFbVcsY0FXYTFXLEdBQUVPO0dBQ29EO1lBRW5FdVcsYUFBYTlXLEdBQUVPO0lBQ2pCLElBQUE7V0FYRW9XLGNBVWEzVyxHQUFFTztHQUNvRDtZQUVuRXdXLGFBQWEvVyxHQUFFTztJQUNqQjtjQUF1QixpQkFBTyxpQkFEZlAsR0FBRU87Y0FFWixpQkFGVVAsR0FBRU87R0FFSTtZQUVuQnlXLGFBQWFoWCxHQUFFTztJQUNqQjtjQUNLLGlCQUZVUCxHQUFFTztjQUNVLGlCQUFPLGlCQURuQlAsR0FBRU87R0FFSTtZQUVuQjBXLGFBQWFqWCxHQUFFTztJQUNqQjtjQUF1QixpQkFBTyxpQkFEZlAsR0FBRU87Y0FFWixpQkFGVVAsR0FBRU87R0FFSTtZQUVuQjJXLGFBQWFsWCxHQUFFTztJQUNqQjtjQUNLLGlCQUZVUCxHQUFFTztjQUNVLGlCQUFPLGlCQURuQlAsR0FBRU87R0FFSTtZQUVuQjRXLGFBQWFuWCxHQUFFTyxHQUFFM0I7SUFDbkI7Y0FBdUIsaUJBRFJvQixHQUFFTyxnQkFBRTNCO2NBRWQsaUJBRlVvQixHQUFFTyxHQUFFM0I7R0FFSTtZQUVyQndZLGFBQWFwWCxHQUFFTyxHQUFFM0I7SUFDbkI7Y0FDSyxpQkFGVW9CLEdBQUVPLEdBQUUzQjtjQUNRLGlCQURab0IsR0FBRU8sZ0JBQUUzQjtHQUVJO1lBRXJCeVksYUFBYXJYLEdBQUVPLEdBQUUzQjtJQUNuQjtjQUF1QixpQkFEUm9CLEdBQUVPLEdBQ3VCLGlCQURyQjNCO2NBRWQsaUJBRlVvQixHQUFFTyxHQUFFM0I7R0FFSTtZQUVyQjBZLGFBQWF0WCxHQUFFTyxHQUFFM0I7SUFDbkI7Y0FDSyxpQkFGVW9CLEdBQUVPLEdBQUUzQjtjQUNRLGlCQURab0IsR0FBRU8sR0FDMkIsaUJBRHpCM0I7R0FFSTtZQUVyQjJZLGFBQWF2WCxHQUFFTyxHQUFFM0I7SUFDbkI7Y0FBdUIsaUJBRFJvQixHQUFFTyxHQUN1QixpQkFEckIzQjtjQUVkLGlCQUZVb0IsR0FBRU8sR0FBRTNCO0dBRUk7WUFFckI0WSxhQUFheFgsR0FBRU8sR0FBRTNCO0lBQ25CO2NBQ0ssaUJBRlVvQixHQUFFTyxHQUFFM0I7Y0FDUSxpQkFEWm9CLEdBQUVPLEdBQzJCLGlCQUR6QjNCO0dBRUk7O0lBRXJCNlk7SUFDQUM7OztPQXZkQS9aO09BS0FnUTtPQU9BOUc7T0FFQW9NO09BT0FDO09BREE5SDtPQUdBK0g7T0FTQUM7T0FVQUM7T0FRQUk7T0FLQUM7T0FNQUc7T0E4QkFwTTtPQU9BME07T0E5QkFwTTtPQUlBZ0c7T0FpR0EzRztPQVFBeUc7T0FRQWxHO09BT0FzRztPQWVBUTtPQVJBRTtPQXJGQTBGO09BZUFoSjtPQThIQWdLO09BUUFFO09Bc0JBSTtPQWVBRztPQWxDQU47T0FNQUM7T0FnQkFHO09BZUFHO09BaUJBRTtPQVRBRDtPQVlBRTtPQTBCQTFLO09BQ0FEO09BRUE2SztPQUNBQztPQTFJQTNLO09BQ0FEO09BU0ErSTtPQUNBQztPQTBHQXRMOztPQXZHQXVMO09BVUFJOzs7T0FpR0FxQjtPQXFCQTVNO09BU0ErTTtPQVNBNUQ7O09BbUNBK0Q7O09BT0FFO09BSkFEO09BUUFFO09BTUFFO09BSEFEOztPQVVBRztPQUpBRDs7T0FZQUc7T0FKQUQ7T0FnQ0FROztPQUNBQztPQXJCQU47T0FKQUQ7O09BSUFDO09BSkFEOztPQVlBRztPQUpBRDs7T0FZQUc7T0FKQUQ7OztFOzs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lDM2NBMVE7OztJQVBBOFE7SUFDQUM7Ozs7Ozs7Ozs7OztZQUVBamEsS0FBS1UsR0FBRWdEO0lBQ1QsT0FBQSxXQUpFc1csS0FJRiw0QkFET3RaLEdBQUVnRDtHQUNRO1lBQ2ZzTSxLQUFLdFAsR0FBRVo7SUFDVCxPQUFBLFdBTkVrYSxLQU1GLDRCQURPdFosR0FBRVo7R0FDUTtZQUVmd1YsS0FBS3hVO0lBQ0EsVUFBQSxXQVJMbVosS0FPS25aO0lBQ1AsT0FBQSxXQVRFa1osS0FTRjtHQUFxQjtPQUNuQkUsNEJBQ0FDO1lBQ0EzRSxJQUFJMVUsR0FBRXFELEtBQUlDO0lBQ04sVUFBQSxXQVpKNlYsS0FXSW5aO0lBQ04sT0FBQSxXQWJFa1osS0FhRixpQ0FEUTdWLEtBQUlDO0dBQ2dCO09BQzFCMFIseUJBRUFDO1lBbUJBak0sT0FBT3FNLEtBRVB4VDtJLEtBQUFBLEdBRE07UUFWdUJ5VCwrQkFTdEJEOzs7OztVQWRTbE0saUJBZ0JoQnRIOzs7V0FkQU87OztRQUNNRDtRQUxLaEMsMkJBSVhpQyxNQUc2QmtULGNBTGJuTTtnQkFBQUEsT0FGTGhKLElBQUFBLElBQWlDO1FBRTVCZ0o7Z0JBR1ZoSDs7Z0JBSFVnSDs7O3FDQUVoQi9HLE1BRmdCK0c7O0lBa0JSLElBYlNvTSxNQWFULGdDQWJhQyx1QkFXckIzVDs7O1VBVEE0VDs7V0FFTXRDO09BQ04saUJBSEFzQyxTQUZpQkYsS0FBSUMsS0FLckIsc0JBSEFDO09BSUE7U0FHT0osUUFUVUUsS0FBSUMsNEJBRXJCQyxXQUY2Qkg7O2lCQUFSRSw0QkFFckJDLGFBRjZCSDtRQUFSRTtrQkFJZnJDOzs7TUFETixpQkFEQXNDLFNBRmlCRixLQUFJQywyQkFFckJDOztLQVVNLE9BQUEsV0F0Q055RCxLQTBCaUIzRDs7O09BZ0JqQkc7WUFHQXBNLEtBQUt0SyxHQUFFZ0I7SUFDVCxnQ0FEU0EsWUFDVDs7U0FBQThCOztNQUE2QixXQUR0QjlDLDBCQUFFZ0IsR0FDVDhCO01BQTZCLFVBQTdCQTtpQkFBQUE7VUFBQUE7Ozs7R0FBb0Q7WUFHbER3TixNQUFNdFEsR0FBRWdCO0lBQ1YsZ0NBRFVBLFlBQ1Y7O1NBQUE4Qjs7TUFBNkIsV0FEckI5QyxHQUNSOEMsMEJBRFU5QixHQUNWOEI7TUFBNkIsVUFBN0JBO2lCQUFBQTtVQUFBQTs7OztHQUFzRDtZQUVwRDZHLElBQUkzSixHQUFFZ0I7SUFDQSxVQUFBLFdBcERObVosS0FtRE1uWjtJQUNSLE9BQUEsV0FyREVrWixLQXFERiw2QkFETWxhO0dBQ2dCO1lBQ3BCb1EsS0FBS3BRLEdBQUVnQjtJQUNBLFVBQUEsV0F0RFBtWixLQXFET25aO0lBQ1QsT0FBQSxXQXZERWtaLEtBdURGLDZCQURPbGE7R0FDZ0I7WUFDckJ3USxXQUFXeFEsR0FBRW1CLEdBQUU2QztJQUNGLFVBQUEsV0F4RGJtVyxLQXVEYWhaO0lBQ2YsT0FBQSw2QkFEYW5CLFFBQUlnRTtHQUNPO1lBQ3RCa0csVUFBVWxLLEdBQUVnRSxHQUFFN0M7SUFDQSxVQUFBLFdBMURkZ1osS0F5RGNoWjtJQUNBLE9BQUEsNkJBREpuQixHQUFFZ0U7R0FDUztZQUNyQmtOLE9BQU9sUixHQUFFZ0I7SUFDQSxVQUFBLFdBNURUbVosS0EyRFNuWjtJQUNBLE9BQUEsNkJBREZoQjtHQUNTO1lBQ2hCZ1IsUUFBUWhSLEdBQUVnQjtJQUNBLFVBQUEsV0E5RFZtWixLQTZEVW5aO0lBQ0EsT0FBQSw2QkFERmhCO0dBQ1M7WUFNakIyVztJQUFXOzs7O0tBQzBCOztJQUNoQztHQUFLO1lBRVZDLEtBQUs1VjtJQUNQLEdBQUcsa0JBRElBLFdBQ1EsT0FEUkE7SUFFOEI7O01BTm5DMlYsZ0NBSUszVjs7O09BSkwyVixnQ0FJSzNWLHlCQUFBQTtLQUlGLE9BSkVBO0lBR1ksVUFBQSxXQTNFakJtWixLQXdFS25aO0lBR0ksT0FBQSxXQTVFVGtaLEtBNEVTO0dBQ0w7WUFFSnRNLFFBQ3VCNU07SUFBekIsSUFBMkJKLDBCQUFGSSxJQUFJOEI7SUFDM0I7UUFEeUJsQyxLQUFFa0MsR0FDWixPQURROUI7c0NBQUFBLEdBQUk4Qjs7Ozs7OztNQUtsQixJQUxrQkMsTUFBQUQsV0FBQUEsSUFBQUM7OztLQUlOLFVBQUEsV0FuRnJCb1gsS0ErRXVCblo7S0FJYixPQUFBLFdBcEZWa1osS0FvRlU7O0dBR21CO1lBR3pCekMsVUFBVXpXLEdBQUUwVyxLQUFJNVUsR0FBRWM7SUFDeEIsSUFEc0JiLE1BQUFEO0lBQ3RCO1FBRGtCNFUsT0FBSTNVLEtBQ0wsTUFBQTsrQkFERC9CLEdBQU0rQixTQUFFYSxHQUVHLE9BRkxiO1NBQUE0VSxNQUFBNVUsYUFBQUEsTUFBQTRVOztHQUVxQztZQUd6REMsTUFBTTVXLEdBQUU0QyxHQUFJLE9BTFI2VCxVQUtFelcseUJBQUFBLE9BQUU0QyxHQUE4QjtZQUdsQ2lVLGNBQWM3VyxHQUFFMFcsS0FBSTVVLEdBQUVjO0lBQzVCLElBRDBCYixNQUFBRDtJQUMxQjtRQURzQjRVLE9BQUkzVSxLQUNUOytCQURHL0IsR0FBTStCLFNBQUVhLEdBRUQsV0FGRGI7U0FBQTRVLE1BQUE1VSxhQUFBQSxNQUFBNFU7O0dBRTBDO1lBR2xFRyxVQUFVOVcsR0FBRTRDO0lBQUksT0FMWmlVLGNBS003Vyx5QkFBQUEsT0FBRTRDO0dBQWtDO1lBRzlDbVUsV0FBVy9XLEdBQUU4QixHQUFFYztJQUNqQixJQUFJZiwwQkFEUzdCO1lBQUU4QixLQUNYRCxLQURXQyxHQUdiLE9BbkJJMlUsVUFnQk96VyxHQUNUNkIsR0FEV0MsR0FBRWM7SUFFTSxPQUFBO0dBQ0o7WUFHakJvVSxlQUFlaFgsR0FBRThCLEdBQUVjO0lBQ3JCLElBQUlmLDBCQURhN0I7WUFBRThCLEtBQ2ZELEtBRGVDLEdBS2pCLE9BbkJJK1UsY0FjVzdXLEdBQ2I2QixHQURlQyxHQUFFYztJQUduQixPQUFBO0dBRXFCO1lBR2pCcVUsV0FBV2pYLEdBQUU4QixHQUFFYztJQUNyQixJQURtQmIsTUFBQUQ7SUFDbkI7WUFEbUJDLEtBQ0wsTUFBQTsrQkFERy9CLEdBQUUrQixTQUFFYSxHQUVNLE9BRlJiO1NBQUE0VSxNQUFBNVUsYUFBQUEsTUFBQTRVOztHQUVxQztZQUd0RE8sT0FBT2xYLEdBQUU0QztJQUFJLE9BTFRxVSxXQUtHalgseUJBQUFBLFlBQUU0QztHQUFpQztZQUcxQ3VVLFlBQVluWCxHQUFFOEIsR0FBRWM7SUFDbEIsU0FEZ0JkLDJCQUFGOUIsS0FBRThCLEdBSWQsT0FaSW1WLFdBUVFqWCxHQUFFOEIsR0FBRWM7SUFFaEIsT0FBQTtHQUVnQjtZQUdad1UsZUFBZXBYLEdBQUU4QixHQUFFYztJQUN6QixJQUR1QmIsTUFBQUQ7SUFDdkI7WUFEdUJDLEtBQ1Q7K0JBRE8vQixHQUFFK0IsU0FBRWEsR0FFRSxXQUZKYjtTQUFBNFUsTUFBQTVVLGFBQUFBLE1BQUE0VTs7R0FFMEM7WUFHL0RVLFdBQVdyWCxHQUFFNEM7SUFBSSxPQUxid1UsZUFLT3BYLHlCQUFBQSxZQUFFNEM7R0FBcUM7WUFHbEQwVSxnQkFBZ0J0WCxHQUFFOEIsR0FBRWM7SUFDdEIsU0FEb0JkLDJCQUFGOUIsS0FBRThCO0tBSWxCLE9BWklzVixlQVFZcFgsR0FBRThCLEdBQUVjO0lBRXBCLE9BQUE7R0FFb0I7WUFHcEIyVSxjQUFjdlgsR0FBRThCLEdBQUVjO0lBQ3BCLElBQUlmLDBCQURZN0I7WUFBRThCLEtBQ2RELEtBRGNDO0tBS2hCLElBakVJMlUsVUE0RFV6VyxHQUNaNkIsR0FEY0MsR0FBRWMsSUFLYyxhQUFBOzs7NEJBQXVCOzs7SUFGdkQsT0FBQTtHQUU0RDtZQUc1RDRVLFNBQVN4WCxHQUFFNEMsR0FBSSxPQVJmMlUsY0FRU3ZYLE1BQUU0QyxHQUF1QjtZQUdsQzZVLGVBQWV6WCxHQUFFOEIsR0FBRWM7SUFDckIsUUFEbUJkLDJCQUFGOUIsS0FBRThCO0tBSWpCLElBN0NJbVYsV0F5Q1dqWCxHQUFFOEIsR0FBRWMsSUFJWSxhQUFBOzs7NEJBQXVCOzs7SUFGdEQsT0FBQTtHQUUyRDtZQUUzRHFLLGdCQUFnQmpOO0lBQ0EsVUFBQSxXQXZLaEJtWixLQXNLZ0JuWjtJQUNsQixPQUFBLFdBeEtFa1osS0F3S0Y7R0FBZ0M7WUFDOUJsTSxnQkFBZ0JoTjtJQUNBLFVBQUEsV0F6S2hCbVosS0F3S2dCblo7SUFDbEIsT0FBQSxXQTFLRWtaLEtBMEtGO0dBQWdDO1lBQzlCbkQsaUJBQWlCL1Y7SUFDQSxVQUFBLFdBM0tqQm1aLEtBMEtpQm5aO0lBQ25CLE9BQUEsV0E1S0VrWixLQTRLRjtHQUFpQztZQUMvQmxELG1CQUFtQmhXO0lBQ0EsVUFBQSxXQTdLbkJtWixLQTRLbUJuWjtJQUNyQixPQUFBLFdBOUtFa1osS0E4S0Y7R0FBbUM7WUFHakNqRCxZQUFhQyxRQUFPbFc7SUFDdEI7S0FBSW1XLDhCQURrQm5XO0tBRWxCb1csZ0NBRldGO1dBRVhFLFdBREFEOztRQUVRclU7SUFDVjtRQURVQSxNQURSc1UsU0FFa0I7K0JBSkFwVyxHQUdWOEIsOEJBSEdvVSxRQUdIcFU7TUFFeUM7S0FDOUMsSUFIS0MsTUFBQUQsV0FBQUEsSUFBQUM7O0dBSWdCO1lBRzFCc1UsVUFBV0MsUUFBT3RXO0lBQ3BCO0tBQUltVyw4QkFEZ0JuVztLQUVoQnVXLGdDQUZTRDtLQUdURSxPQUZBTCxRQUNBSTtnQkFDQUM7O1FBQ1ExVTtJQUNWO1FBRFVBLE1BRlJ5VSxTQUdrQjs7OEJBTEZ2VyxHQUdoQndXLE9BQ1ExVTtrQ0FKQ3dVLFFBSUR4VTtNQUVrRDtLQUN2RCxJQUhLQyxNQUFBRCxXQUFBQSxJQUFBQzs7R0FJUztZQUduQjJWLGNBQWNyQyxLQUFJclY7SUFDcEI7S0FBSVg7S0FDQXdXLFFBQUosc0JBRm9CN1Y7S0FHcEIsTUFBQSxzQkFIb0JBOztTQUdwQjhCOztnQ0FIb0I5QixHQUdwQjhCLE9BSGdCdVQ7aUJBQ1poVztPQUFBQSxXQTNMRnFWLElBMExrQjFVLEdBR3BCOEIsWUFESStULE9BQ0ovVDtPQURJK1QsT0FDSi9UOztNQUFBLFVBQUFBO2VBQUFBO1VBQUFBOzs7Y0FGSXpDO0lBUUosV0FuTUVxVixJQTBMa0IxVSxNQUVoQjZWO0dBT1k7WUFJZDlJLFVBQVUvTTtJQUNBLFVBQUEsV0FuTlZtWixLQWtOVW5aO0lBQ1osT0FBQSxXQXBORWtaLEtBb05GO0dBQTBCO1lBQ3hCcE0sVUFBVTlNO0lBQ0EsVUFBQSxXQXJOVm1aLEtBb05Vblo7SUFDWixPQUFBLFdBdE5Fa1osS0FzTkY7R0FBMEI7WUFDeEJ2QixXQUFXM1g7SUFDQSxVQUFBLFdBdk5YbVosS0FzTlduWjtJQUNiLE9BQUEsV0F4TkVrWixLQXdORjtHQUEyQjtZQUN6QnRCLGFBQWE1WDtJQUNBLFVBQUEsV0F6TmJtWixLQXdOYW5aO0lBQ2YsT0FBQSxXQTFORWtaLEtBME5GO0dBQTZCO09BSTNCeE87WUFLQUksT0FBTzlLO0lBQUksVUFBQSxXQWxPWG1aLEtBa09Pblo7SUFBSSxPQUFBO0dBQWlCO1lBRTVCNlgsUUFBUTdYO0lBQUksVUFBQSxXQXBPWm1aLEtBb09Rblo7SUFBSSxPQUFBO0dBQWtCO1lBRTlCaVUsT0FBT3FGO0lBQUksT0FBQSxXQXZPWEosS0F1T1csNkJBQUpJO0dBQXFCO1lBUzVCdEIsU0FBU2hZLEdBQUU4QjtJQUFlLFVBQUEsV0EvTzFCcVgsS0ErT1NuWjtJQUFNLE9BQUEsa0NBQUo4QjtHQUF3QjtZQUNuQ21XLGNBQWNqWSxHQUFFOEI7SUFBb0IsVUFBQSxXQWhQcENxWCxLQWdQY25aO0lBQU0sT0FBQSxrQ0FBSjhCO0dBQTZCO1lBQzdDb1csY0FBY2xZLEdBQUU4QjtJQUFvQixVQUFBLFdBalBwQ3FYLEtBaVBjblo7SUFBTSxPQUFBLGtDQUFKOEI7R0FBNkI7WUFDN0NxVyxhQUFhblksR0FBRThCO0lBQW1CLFVBQUEsV0FsUGxDcVgsS0FrUGFuWjtJQUFNLE9BQUEsa0NBQUo4QjtHQUE0QjtZQUMzQ3NXLGFBQWFwWSxHQUFFOEI7SUFBbUIsVUFBQSxXQW5QbENxWCxLQW1QYW5aO0lBQU0sT0FBQSxrQ0FBSjhCO0dBQTRCO1lBQzNDdVcsYUFBYXJZLEdBQUU4QjtJQUFtQixVQUFBLFdBcFBsQ3FYLEtBb1Bhblo7SUFBTSxPQUFBLGtDQUFKOEI7R0FBNEI7WUFDM0N3VyxhQUFhdFksR0FBRThCO0lBQW1CLFVBQUEsV0FyUGxDcVgsS0FxUGFuWjtJQUFNLE9BQUEsa0NBQUo4QjtHQUE0QjtZQUMzQ3lXLGFBQWF2WSxHQUFFOEI7SUFBbUIsVUFBQSxXQXRQbENxWCxLQXNQYW5aO0lBQU0sT0FBQSxrQ0FBSjhCO0dBQTRCO1lBQzNDMFcsYUFBYXhZLEdBQUU4QjtJQUFtQixVQUFBLFdBdlBsQ3FYLEtBdVBhblo7SUFBTSxPQUFBLGtDQUFKOEI7R0FBNEI7WUFDM0MyVyxhQUFhelksR0FBRThCO0lBQW1CLFVBQUEsV0F4UGxDcVgsS0F3UGFuWjtJQUFNLE9BQUEsa0NBQUo4QjtHQUE0Qjs7OztPQXRQM0M1QztPQUVBZ1E7T0FFQTlHO09BR0FnUjtPQUNBQztPQXdCQXJRO09BT0EwTTs7T0FvTEFoTDtPQTdDQXVMO09BVUFJO09BckNBa0I7T0FXQUU7T0FIQUQ7T0FsSkE5QztPQTBMQWdEO09BbEpBL087T0FFQXlHO09BSUFsRztPQUZBc0c7T0FNQVE7T0FGQUU7T0FhQTBGO09BTUFoSjtPQXdGQUs7T0FFQUQ7T0FFQStJO09BRUFDO09BaElBMU07T0FJQWdHO09BeURBeUg7T0FNQUM7T0FnQkFHO09BZUFHO09BaERBVjtPQVFBRTtPQXNCQUk7T0FlQUc7T0F1RkF2TTtPQUVBK007T0FFQTVEO09Bdk5BZ0I7T0FSQVQ7T0FNQVE7T0FxTUFqSTtPQUVBRDtPQUVBNks7T0FFQUM7O09BdUJBSTs7T0FFQUU7T0FEQUQ7T0FFQUU7T0FFQUU7T0FEQUQ7O09BR0FHO09BREFEOztPQUdBRztPQURBRDs7O0U7Ozs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7OztZRTdQQWUsVUFBVUMsTUFBS25XLEtBQUlDLEtBQUluRSxHQUFFc2E7SUFDM0IsUUFEaUJwVyxZQUFJQyw2QkFBVGtXLFFBQVNsVyxZQUFKRDtLQUdaLE9BQUEsb0NBSE9tVyxNQUFLblcsS0FBSUMsS0FBSW5FLEdBQUVzYTtJQUV0QixPQUFBO0dBQ3FDO09BWXhDQztZQUNBQyxVQUFVSCxNQUFLblc7SUFDakIsUUFEaUJBLDZCQUFMbVcsbUJBQUtuVztLQUdaLE9BQUEsdUJBSE9tVyxNQUFLblc7SUFFWixPQUFBO0dBQ3lCO1lBQzVCdVcsV0FBV0osTUFBS25XLEtBQU0sWUFKdEJzVyxVQUlXSCxNQUFLblcsU0FBc0M7WUFFdER3VyxXQUFXTCxNQUFLblc7SUFDbEIsUUFEa0JBLDZCQUFMbVcsbUJBQUtuVztLQUlOLElBQU5DLE1BQU0sdUJBSkNrVyxNQUFLblc7a0NBQUxtVyxjQUlQbFcsZ0JBSllEO2VBTVg7ZUFDQSxvQ0FQTW1XLE1BQUtuVzs7SUFFYixPQUFBO0dBTUY7WUFFRHlXLFlBQVlOLE1BQUtuVztJQUduQixPQWJFd1csV0FhUyw2QkFIR0wsT0FBS25XO0dBR3lCOzs7OztPQW5DMUNrVzs7T0FzQkFNO09BVUFDO09BakJBSjtPQUNBQztPQUlBQzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUMxQmlCRyxTQUFTL1csR0FBSSxtQkFBSkEsd0JBQWtCOztJQVUzQmdYO0lBQ0FDO1lBWWpCQyxRQUFTQyxLQUNYLE9BQUEsbUNBRFdBLFFBQ1k7WUFDckJDLFVBQVUxYyxLQUFJOFg7SUFDaEIsVUFEZ0JBLE1BQ21CLDhCQUR2QjlYLEtBQUk4WDtJQUNoQixXQUFDLDhCQURXOVgsS0FBSThYO0dBQzhDOztJQWlCNUQ2RTtJQWZBQztJQUNBQztJQUVBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUVBQztJQUVBQztJQUNBQztJQUNBQztJQUNBQztJQUtBQztJQUNBQztJQUNBQztZQXdCRUMsS0FBTWxCO0lBQ1IsR0FBUSxhQURBQTtLQUNSLE1BQUE7SUFDWTtLQWxCR2tCLE9Ba0JILDJCQUZKbEI7S0FkSmxiLCtCQUZXb2MsYUFBQUE7S0FTWEMsWUFUV0Q7SUFhZixXQVhJcGMsT0FPQXFjO0dBU3lCO1lBTTNCQyxPQUNFcGI7SUFBSjs7UUFsRmlCNFosU0FrRmI1WixNQUVpQixhQUZqQkEsbUJBQUFBLGtCQUNBcWIsT0FEQXJiO1NBQ0FxYixPQURBcmI7Ozs7UUFsRmE0WixTQW1GYnlCLFNBS29CLGFBTHBCQSxtQkFJQTdZLE9BSkE2WTtTQUlBN1ksT0FFRzs7V0FFRixhQUpEQTtjQUpBNlk7Y0FTRztHQUF1QztZQUUzQjdZLEtBQU02WSxNQUN4QixPQUR3QkEsUUFDQztZQUVQQyxHQUFJRCxNQUN0QixPQURzQkEsUUFDRztHQW5COUI7SUFBQSw0QkFFTUQsUUFhaUI1WSxNQUdBOFk7SUFJbkJDO0lBQ0FDO0lBQ0FDO0lBU0VDO1lBR0FDLE9BQU9qYTtJQUNULGVBRFNBLHVCQUFBQSxLQUhQZ2E7Z0JBS0E7SUFDRixPQUFBLHlCQUhTaGE7R0FHRDtZQUVOc00sT0FBT2hPLEdBQUksT0FBSkEscUJBQW9DO1lBRTNDNGIsd0JBQXdCelEsR0FBRXpCLEdBQUVtUztJQUM5QjtnQkFENEJuUztpQkFBQUEsSUFGMUJzRSxPQUV3QjdDOztpQkFFeEIsc0JBRjRCMFE7R0FFYjtZQUdmQyxRQUFRM1EsR0FBRXpCO0lBTFZrUyx3QkFLUXpRLEdBQUV6QjtJQUVaLE9BQUEsMEJBRlV5QixHQUFFekI7R0FFRDtZQUdUcVMsYUFBYTVRLEdBQUV6QjtJQVZma1Msd0JBVWF6USxHQUFFekI7SUFFakIsT0FBQSwrQkFGZXlCLEdBQUV6QjtHQUVEO1lBR2RzUyxRQUFRN1EsR0FBRXpCLEdBQUUxSjtJQWZaNGIsd0JBZVF6USxHQUFFekI7SUFFWixPQUFBLDBCQUZVeUIsR0FBRXpCLEdBQUUxSjtHQUVEO1lBR1hpYyxVQUFVOVEsR0FBRXpCO0lBcEJaa1Msd0JBb0JVelEsR0FBRXpCO0lBRWQsT0FBQSw0QkFGWXlCLEdBQUV6QjtHQUVEO1lBR1h3UyxVQUFVL1EsR0FBRXpCO0lBekJaa1Msd0JBeUJVelEsR0FBRXpCO0lBRWQsT0FBQSw0QkFGWXlCLEdBQUV6QjtHQUVEO1lBS1h5UyxTQUFTN1EsSUFBR2xCLElBQUdtQixJQUFHNlEsSUFBRzFhO0lBQ3ZCO1dBRHVCQTs7WUFBVDBJO1dBbENaNEQsT0FrQ1MxQyxNQUFZNUosVUFBVDBJLFdBQU1nUyxPQWxDbEJwTyxPQWtDZXpDLE1BQU03SixVQUFIMGE7O2tCQUFHMWE7a0JBSUgsMkJBSlQ0SixJQUFHbEIsSUFBR21CLElBQUc2USxJQUFHMWE7S0FJSDs7SUFEZixPQUFBO0dBQ3FDOzs7O09BOUp6QmtZO09BVUFDO09BQ0FDO09BaUJqQks7T0FDQUM7T0FFQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FFQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQVo7T0FBQUE7T0FJQWE7T0FDQUM7T0FDQUM7V0F3QkVDOztPQTRCRks7T0FDQUM7T0FDQUM7T0FoRkExQjtPQUVBRTs7UUEwRkUwQjtRQUtBM047UUFPQThOO1FBS0FDO1FBS0FDO1FBS0FDO1FBS0FDO1FBT0FDOzs7Ozs7O1FBMUNBVDs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDcEdjOzs7OztJQUZoQlc7SUFFZ0I7Ozs7Ozs7Ozs7Ozs7O1lBVWhCdE4sS0FBS3JOLEdBQUU3QztJQUNULFNBRE82QyxHQUNPO1dBRFBBLEdBRU8sT0FBQTtJQUlILElBQU5rRCxNQUFNLGVBTkpsRCxHQU1hLFdBTlg3QyxRQU9SLE9BUE02QyxXQU1JOztTQUNWQzs7TUFESWlELFFBQ0pqRCxLQUNtQixXQVJYOUMsR0FPUjhDO01BQ0UsV0FERkE7a0JBQUFBO1VBQUFBOzs7SUFHQSxPQUpJaUQ7R0FJRDtZQUVGMFgsWUFBWUMsSUFBR0MsSUFBR3pOO0lBQ3BCLElBQUluSyxNQUFNLGVBREkyWCxVQUVkLE9BRmNBLFlBQ0o7O1NBQ1Z2Yzs7TUFESTRFLFFBQ0o1RSxLQUNtQixlQUhGd2MsSUFBR3pOO01BRXBCLFdBQUEvTztrQkFBQUE7VUFBQUE7OztJQUdBLE9BSkk0RTtHQUlEO1lBSUR5UCxLQUFLeFI7SUFDUCxJQUFJbkIsSUFER21CO0lBQ2EsYUFBaEJuQixVQUF3QyxlQURyQ21CLE1BQ0huQjtHQUF3RDtZQUUxRDJHLE9BQU9tSCxJQUFHRDtJQUNaLElBQUl2TyxLQURLd087SUFFVCxhQURJeE87Y0FKRnFULEtBR1U5RTs7a0JBQUFBO2dCQUdlLGVBSGxCQyxPQUNMeE87Z0JBR0MsMEJBSkl3TyxJQUFHRDtHQUlVO1lBRXBCZ0YsSUFBSTFSLEdBQUVLLEtBQUlDO0lBQ1osUUFEUUQsWUFBSUMsUUFBTk4sZUFBTU0sWUFBSkQ7S0FHSCxPQUFBLGVBSENMLEdBQUVLLEtBQUlDO0lBRVAsT0FBQTtHQUNvQjtZQUV2QjBSLEtBQUtoUyxHQUFFSyxLQUFJQyxLQUFJbkU7SUFDakIsUUFEU2tFLFlBQUlDLFFBQU5OLGVBQU1NLFlBQUpEO0tBR0osT0FBQSx3QkFIRUwsR0FBRUssS0FBSUMsS0FBSW5FO0lBRVosT0FBQTtHQUN1QjtZQUUxQjhWLEtBQUt0RixJQUFHdUYsTUFBS3hGLElBQUd5RixNQUFLN1I7SUFDdkI7V0FEdUJBOztZQUFiNFI7O1NBQUh2RixnQkFBZ0JyTSxZQUFiNFI7Z0JBQVFDLFNBQUh6RixnQkFBUXBNLFlBQUw2UjtLQUliLE9BQUEsd0JBSkV4RixJQUFHdUYsTUFBS3hGLElBQUd5RixNQUFLN1I7SUFHbEIsT0FBQTtHQUMrQjtZQUVsQ2dHLEtBQUt0SyxHQUFFZ0U7SUFDVCxXQURTQSxzQkFDVDs7U0FBQWxCOztNQUE2QixXQUR0QjlDLEdBQUVnRSxNQUNUbEI7TUFBNkIsV0FBN0JBO2tCQUFBQTtVQUFBQTs7OztHQUFtRDtZQUVqRCtOLE1BQU03USxHQUFFZ0UsR0FBRXpCO0lBQ1osR0FEVXlCLGlCQUFFekI7S0FFVixPQUFBO0lBRUEsV0FKUXlCLHNCQUlSOztTQUFBbEI7O01BQTZCLFdBSnZCOUMsR0FBRWdFLE1BSVJsQixJQUpVUCxNQUlWTztNQUE2QixXQUE3QkE7a0JBQUFBO1VBQUFBOzs7O0dBQXFFO1lBRXJFNkcsSUFBSTNKLEdBQUVnRTtJQUNSLElBQUluQixJQURJbUI7SUFFUixTQURJbkIsR0FDVTtJQUNKO0tBQUp4QyxJQUFJLGVBRk53QyxHQUVlLFdBSGI3QyxHQUFFZ0U7S0FJTixPQUhFbkI7S0FFTTs7U0FDUkM7O01BREl6QyxNQUNKeUMsS0FDaUIsV0FMYjlDLEdBQUVnRSxNQUlObEI7TUFDRSxXQURGQTtrQkFBQUE7VUFBQUE7OztJQUdBLE9BSkl6QztHQUtIO1lBRURvUSxLQUFLelEsR0FBRWdFLEdBQUV6QjtJQUNYLElBQUlxYixLQURLNVosY0FFTDZaLEtBRk90YjtPQUNQcWIsT0FDQUM7S0FFRixPQUFBO2FBSEVELElBS2E7SUFDTDtLQUFKdmQsSUFBSSxlQU5SdWQsSUFNa0IsV0FQZjVkLEdBQUVnRSxNQUFFekI7S0FRUCxPQVBBcWI7S0FNUTs7U0FDUjlhOztNQURJekMsTUFDSnlDLEtBQ2lCLFdBVGQ5QyxHQUFFZ0UsTUFRTGxCLElBUk9QLE1BUVBPO01BQ0UsV0FERkE7a0JBQUFBO1VBQUFBOzs7SUFHQSxPQUpJekM7R0FNTDtZQUVEaVEsTUFBTXRRLEdBQUVnRTtJQUNWLFdBRFVBLHNCQUNWOztTQUFBbEI7O01BQTZCLFdBRHJCOUMsR0FDUjhDLEdBRFVrQixNQUNWbEI7TUFBNkIsV0FBN0JBO2tCQUFBQTtVQUFBQTs7OztHQUFzRDtZQUVwRHNOLEtBQUtwUSxHQUFFZ0U7SUFDVCxJQUFJbkIsSUFES21CO0lBRVQsU0FESW5CLEdBQ1U7SUFDSjtLQUFKeEMsSUFBSSxlQUZOd0MsR0FFZSxXQUhaN0MsTUFBRWdFO0tBSVAsTUFIRW5CO0tBRU07O1NBQ1JDOztNQURJekMsTUFDSnlDLEtBQ2lCLFdBTFo5QyxHQUlMOEMsR0FKT2tCLE1BSVBsQjtNQUNFLFVBREZBO2lCQUFBQTtVQUFBQTs7O0lBR0EsT0FKSXpDO0dBS0g7WUFFRHdMLFFBQVE3SDtJQUNWLElBQWUyVCxNQURMM1Qsc0JBQ0tsQixJQUFBNlUsS0FBRTVSO0lBQ2Y7WUFEYWpELEdBQ0MsT0FEQ2lEO0tBQ3VCLElBRHZCK1gsWUFEUDlaLE1BQ0tsQixJQUFFaUQsTUFBRmhELE1BQUFELFdBQUFBLElBQUFDLEtBQUVnRCxNQUFBK1g7O0dBRU87WUFHbEJDO1FBQVlqWTs7bUJBQ1YsT0FEVUE7S0FFUjtNQUFMa1k7TUFBSyxTQUZRbFk7TUFBQUE7Z0JBRWJrWTs7O1lBRUhDLFFBRUFwYjtJQUZVLEtBRVZBLEdBRE07SUFFSTtLQUROTSxLQUFKTjtLQUFBTyxLQUFBUDtLQUNNbUIsSUFBSSxlQVBOK1osZUFNSmxiLElBQUFPO0tBRWVOO2FBRlhLOztpQkFFRixPQURJYTtTQUdJbVEsaUJBQUpzQztLQUhBelMsTUFDU2xCLEtBRVQyVDtLQUZKLElBQUEsTUFBYTNULFdBQUFBLGlCQUVMcVI7O0dBQ0M7WUFFWGpLLFVBQVVsSyxHQUFFbUIsR0FBRTZDO0lBQ2hCLElBQUkzRCxRQURVYyxVQUFFNkMsc0JBQ1I7O1NBQ1JsQjs7TUFESXpDLE9BRUcsV0FIS0wsR0FDUkssTUFEWTJELE1BRWhCbEI7TUFBQSxVQUFBQTtpQkFBQUE7VUFBQUE7OztXQURJekM7R0FJRjtZQUVBbVMsY0FBY3hTLEdBQUVtSyxLQUFJK1Q7SUFDdEIsSUFBSTVaLE1BRGtCNFo7SUFFdEIsU0FESTVaLEtBQ1ksV0FGRTZGO0lBR0Q7S0FBQSxRQUFBLFdBSERuSyxHQUFFbUssS0FBSStUO0tBR1hDO0tBQUwvVDtLQUNBZ1UsZUFBZSxlQUhqQjlaLEtBRU82WjtLQUVMOVQsWUFGQUQ7S0FHSixNQUxFOUY7S0FJUTs7U0FDVnhCOztNQUNrQjtPQUFBLFVBQUEsV0FQSjlDLEdBS1ZxSyxVQUxnQjZULGdCQU1wQnBiO09BQ1l1YjtPQUFOQztNQUZGalUsV0FFRWlVO01BSEZGLGlCQUVKdGIsS0FDWXViO01BRFosVUFBQXZiO2lCQUFBQTtVQUFBQTs7O0lBS0EsV0FOSXVILFVBREErVDtHQVFIO1lBRUQ1TixXQUFXeFEsR0FBRWdFLEdBQUU3QztJQUNqQixJQUFJZCxRQURhYyxJQUVqQixNQUZlNkM7O1NBRWZsQjs7TUFESXpDLE9BRUcsV0FITUwsR0FBRWdFLE1BRWZsQixJQURJekM7TUFDSixVQUFBeUM7ZUFBQUE7VUFBQUE7OztXQURJekM7R0FJRjtZQUVBNlEsT0FBT0QsR0FBRWpOO0lBQ1gsSUFBSXBELElBRE9vRCxjQUVFbEI7SUFDWDtRQURXQSxNQURUbEMsR0FFWTtLQUNOLEdBQUEsV0FKRHFRLEdBQUVqTixNQUVFbEIsS0FFcUI7S0FDM0IsSUFITUMsTUFBQUQsV0FBQUEsSUFBQUM7O0dBSVA7WUFFSmlPLFFBQVFDLEdBQUVqTjtJQUNaLElBQUlwRCxJQURRb0QsY0FFQ2xCO0lBQ1g7UUFEV0EsTUFEVGxDLEdBRVk7S0FDTixLQUFBLFdBSkFxUSxHQUFFak4sTUFFQ2xCLEtBR047S0FEMkIsSUFGckJDLE1BQUFELFdBQUFBLElBQUFDOztHQUlQO1lBRUpvTyxTQUFTRixHQUFFOU8sSUFBR0M7SUFDaEIsSUFBSTRSLEtBRFM3UixlQUVUOFIsS0FGWTdSO09BQ1o0UixPQUNBQyxJQUNhLE9BQUE7UUFDQ25SO0lBQ2hCO1FBRGdCQSxNQUhka1IsSUFJYTtLQUNQLEtBQUEsV0FOQy9DLEdBQUU5TyxPQUlLVyxJQUpGVixPQUlFVSxLQUdYO0tBRDhDLElBRm5DQyxNQUFBRCxXQUFBQSxJQUFBQzs7R0FJWjtZQUVKcU8sUUFBUUgsR0FBRTlPLElBQUdDO0lBQ2YsSUFBSTRSLEtBRFE3UixlQUVSOFIsS0FGVzdSO09BQ1g0UixPQUNBQyxJQUNhLE9BQUE7UUFDQ25SO0lBQ2hCO1FBRGdCQSxNQUhka1IsSUFJYTtLQUNQLEdBQUEsV0FOQS9DLEdBQUU5TyxPQUlNVyxJQUpIVixPQUlHVSxLQUVtQztLQUM5QyxJQUhXQyxNQUFBRCxXQUFBQSxJQUFBQzs7R0FJWjtZQUVKc08sSUFBSWxRLEdBQUU2QztJQUNSLElBQUlwRCxJQURJb0QsY0FFS2xCO0lBQ1g7UUFEV0EsTUFEVGxDLEdBRVk7S0FDTixTQUFBLHFCQUpGb0QsTUFFS2xCLElBRlAzQixJQUl3QztLQUN2QyxJQUhNNEIsTUFBQUQsV0FBQUEsSUFBQUM7O0dBSVA7WUFFSnVPLEtBQUtuUSxHQUFFNkM7SUFDVCxJQUFJcEQsSUFES29ELGNBRUlsQjtJQUNYO1FBRFdBLE1BRFRsQyxHQUVZO1FBSFRPLE1BQUU2QyxNQUVJbEIsSUFFd0I7S0FDOUIsSUFITUMsTUFBQUQsV0FBQUEsSUFBQUM7O0dBSVA7WUFFSmtQLFNBQVNoQixHQUFFak47SUFDYixJQUFJcEQsSUFEU29ELGNBRUFsQjtJQUNYO1FBRFdBLE1BRFRsQyxHQUVZO0tBRUosSUFBSk8sSUFMSzZDLE1BRUFsQjtLQUlOLEdBQUEsV0FOSW1PLEdBS0g5UCxJQUNRLFdBRFJBO0tBRUMsSUFMSTRCLE1BQUFELFdBQUFBLElBQUFDOztHQU9QO1lBRUptUCxTQUFTbFMsR0FBRWdFO0lBQ2IsSUFBSXBELElBRFNvRCxjQUVBbEI7SUFDWDtRQURXQSxNQURUbEMsR0FFWTtLQUVOLElBRUpQLElBRkksV0FMQ0wsR0FBRWdFLE1BRUFsQjtRQUtQekMsR0FBZSxPQUFmQTtLQURRLElBSkQwQyxNQUFBRCxXQUFBQSxJQUFBQzs7R0FPUDtZQUVKZ1EsTUFBTTVSO0lBQ1IsR0FBRyxtQkFES0EsU0FDUztJQUdmO2FBSk1BO0tBR0VvZDtLQUFKQztLQUNBNWQsSUFKRU87S0FLRjZDLElBQUksZUFESnBELEdBREE0ZDtLQUdBamMsSUFBSSxlQUZKM0IsR0FESTJkO0tBSVIsTUFISTNkO0tBRUk7O1NBQ1JrQzs7b0JBUE0zQixNQU9OMkIsSUFDVTJiLGlCQUFKQztNQUhGMWEsTUFFSmxCLEtBQ000YjtNQUZGbmMsTUFDSk8sS0FDVTJiO01BRFYsVUFBQTNiO2lCQUFBQTtVQUFBQTs7O0lBS0EsV0FQSWtCLEdBQ0F6QjtHQU9IO1lBRUQyUSxRQUFRbFAsR0FBRXpCO0lBQ1osSUFBSW9jLEtBRE0zYSxjQUVONGEsS0FGUXJjO09BQ1JvYyxPQUNBQyxJQUNhO2FBRmJELElBR1c7SUFFTCxJQUFKeGQsSUFBSSxlQUxOd2QsUUFETTNhLE1BQUV6QixRQU9WLE1BTkVvYyxZQUtNOztTQUNSN2I7O01BREkzQixNQUNKMkIsU0FQUWtCLE1BT1JsQixJQVBVUCxNQU9WTztNQUFBLFVBQUFBO2lCQUFBQTtVQUFBQTs7O0lBR0EsT0FKSTNCO0dBS0g7R0FFTDtZQUNJc1MsS0FBSzlILEtBQUkzSDthQUNQNmEsT0FBT2hjLEdBQUVDO0tBQ1gsSUFBSWdjLFFBRE9oYyxJQUFBQSxTQUFBQSxnQkFFUDNCLFFBREEyZDtTQUFBQSxlQURLamM7TUFHUyxJQUFBLE1BRmRpYyxhQUdpQix1QkFMWjlhO1NBS0osV0FMQTJILHNCQUFJM0gsR0FFTDhhLFNBQUFBO09BQ0EzZCxPQURBMmQ7TUFJRjtPQUFBLE1BSkVBO09BSWdCLHVCQU5YOWE7YUFHTDdDO1NBR0MsV0FOQXdLLHNCQUFJM0g7T0FHTDdDLE9BREEyZDthQUNBM2Q7O1NBREEyZCxlQURLamM7TUFReUIsVUFQOUJpYyxhQU84Qix1QkFUekI5YTtNQVNTLE9BQUEsV0FUYjJILHNCQUFJM0gsR0FFTDhhLFNBQUFBO09BUUcsT0FSSEE7O1FBQUFBLE1BREtqYyxHQVVjLE9BVG5CaWM7S0FTNEIsTUFBQSx3Q0FWckJoYztJQVVxQztRQVd0Q0QsSUF0QkRtQixzQkFzQkNuQjs7U0FBRWtjOztNQWtCa0MsSUFsQmhDQyx1QkF0QkxoYixHQXNCRythLFNBQUFBO01BQU07V0FURWpjLElBU1JpYztPQVJaO1FBQVEsSUFBSmxJLElBYkZnSSxPQXFCUWhjLEdBVFVDO1FBRWpCLFFBQUEsV0FmRTZJLHNCQUFJM0gsR0FjTDZTLE9BQUFBLElBUVVtSTtRQU5KLDJCQWhCRGhiLEdBY0w2UyxPQUFBQTtRQUVGLGlCQWhCTzdTLEdBYVdsQixPQUFBQTtZQUFBQSxJQUNoQitUOztPQUlLLGlCQWxCQTdTLEdBYVdsQixPQUFBQSxLQVNOa2M7Ozs7O1dBQXNDamM7T0FBSyxpQkF0QmhEaUIsR0FzQjJDakIsU0FBQUEsT0FBdENpYzs7TUFrQm9CLFVBbEJ0QkQ7ZUFBQUE7VUFBQUE7OztJQW1CZCxVQW5CWWxjOztTQU1Eb2M7O01BY0QsSUFiVUMsdUJBN0JUbGIsR0E0QkFpYixTQUFBQTtNQTVCQWpiLE1BNEJBaWIsd0JBNUJBamI7VUE0QkVtYjtNQUFJO1dBTEl4SCxNQUtSd0g7T0FKWDtRQUFRLElBRFdDLE1BdEJqQlAsT0EyQk9JLEtBTFV0SCxNQUVYLHVCQXpCQzNULEdBdUJVb2IsU0FBQUE7UUFFbkIsaUJBekJTcGIsR0F1QlUyVCxTQUFBQTtZQUFBQSxNQUFBeUg7Ozs7OztXQU1IQzs7Ozs7YUFBQUMsTUFBQUQ7U0FDaEI7Y0FBSUUsVUFEWUQ7YUFBQUEsUUFDWkM7V0FDSixNQUFBO1VBQ0c7aUJBQUEsV0FoQ0U1VCxzQkFBSTNILEdBOEJMdWIsWUFBQUEsU0FEY0w7O1VBSVIsMkJBakNEbGIsR0E4Qkx1YixZQUFBQTtVQUdGLGlCQWpDT3ZiLEdBNkJPc2IsU0FBQUE7a0JBQ1pDO2NBRFlELE1BQ1pDOztTQUtLLGlCQW5DQXZiLEdBNkJPc2IsU0FBQUEsT0FBRUo7OztRQUsyQixpQkFsQ3BDbGIsV0E2QlNrYjs7T0FZcEIsVUFiV0Q7Z0JBQUFBO1dBQUFBOzs7O2tCQU5DcGM7O0tBd0JXLElBQUp5SixxQkE5Q1J0STtLQUFBQSx3QkFBQUE7S0FBQUEsT0E4Q1FzSTs7Ozs7SUFBb0M7R0FBVTtZQUkvRGtILFlBQVk3SCxLQUFJM0g7YUFDZG1QLE1BRVdxTSxTQUZHQyxTQUFRQyxNQUVMQyxTQUZrQkMsU0FBUXJKLEtBRXBCc0o7S0FEekI7TUFBSUMsUUFDU04sVUFGR0M7TUFDa0JNLFFBQ2ZKLFVBRmtCQztNQUVmSSx3QkFGRU4sTUFFTEMsYUFBQUE7TUFBSE0sd0JBSEFqYyxHQUdId2IsYUFBQUE7TUFBQVUsS0FBQVY7TUFBR3ZkLEtBQUFnZTtNQUFHRSxLQUFBUjtNQUFHemQsS0FBQThkO01BQUdJLElBQUFQO0tBQ3ZCO01BQUcsT0FBQSxXQUpPbFUsS0FHSTFKLElBQU1DO09BU2xCLGlCQVh5Q3FVLEtBRXBCNkosT0FBQUEsS0FBSGxlO09BU2xCLElBQ0ltZSxPQVZXRjtVQVVYRSxRQVgwQk4sY0EvUGxDOUosS0E2UGdCalMsR0FHSGtjLElBRmdDM0osS0FFcEI2SixXQURyQk4sUUFDU0k7T0FZUDtRQVptQkksTUFBQUY7UUFBSEcsd0JBRkViLE1BWWhCVyxVQUFBQTtRQVZXRixLQVVYRTtRQVZjbmUsS0FBQXFlO1FBQUdILElBQUFFOzs7T0FFckIsaUJBSnlDL0osS0FFcEI2SixPQUFBQSxLQUFUbmU7T0FFWixJQUNJdWUsT0FIS047VUFHTE0sUUFKSlY7ZUEvUEo3SixLQThQd0J5SixNQUVMUyxJQUYwQjVKLEtBRXBCNkosV0FEU0wsUUFDZkk7T0FLYjtRQUxtQk0sTUFBQUw7UUFBVE0sd0JBSEExYyxHQU1Sd2MsVUFBQUE7UUFIS04sS0FHTE07UUFIUXZlLEtBQUF5ZTtRQUFTTixJQUFBSzs7SUFnQnlDO2FBRWhFRSxRQUFRQyxRQUFPckssS0FBSXNKLFFBQU92YjtLQUM1QixVQUQ0QkEsYUFDNUI7O1VBQUF4Qjs7T0FDVTtjQUZBOGQsU0FDVjlkO1FBQ013SixxQkF2QlV0STtRQXdCVjZTLFNBSGVnSixTQUNyQi9jOztXQURxQitjLFNBR2ZoSjtrQkFBQUE7UUFDbUIsUUFBQSxXQXpCYmxMLHNCQXFCSzRLLG9CQUVYaks7O1FBR2U7ZUFGZnVLO1NBRWUsdUJBTEpOO2VBR1hNO1FBRUYsaUJBTGFOO1FBR1hNOztpQkFBQUE7T0FLSixpQkFSZU4scUJBRVhqSztPQUROLFVBQUF4SjtrQkFBQUE7V0FBQUE7Ozs7SUFRSTthQUVFK2QsT0FBT0QsUUFBT3JLLEtBQUlzSixRQUFPdmI7S0FDL0IsR0FEK0JBLFVBQ1QsT0FacEJxYyxRQVdXQyxRQUFPckssS0FBSXNKLFFBQU92YjtTQUV6Qm5DLEtBRnlCbUMsYUFHekJsQyxLQUh5QmtDLE1BRXpCbkM7S0FGQTBlLE9BQU9ELFNBRVB6ZSxRQUZjb1UsS0FBSXNKLFNBRWxCMWQsUUFDQUM7S0FIQXllLE9BQU9ELFFBaENHNWMsR0FnQ0g0YyxTQUdQeGUsUUFEQUQ7S0FHSixPQXBDQWdSLE1BK0JXeU4sU0FHUHhlLFFBREFELElBRmNvVSxLQUFJc0osU0FFbEIxZCxRQUNBQyxJQUhjbVUsS0FBSXNKO0lBT3JCO1FBRURoZCxJQXpDY21CO09BeUNkbkIsUUFDZ0IsT0FyQmhCOGQsV0FyQmMzYyxNQXlDZG5CO0lBSU07S0FGSlYsS0FGRlU7S0FHRVQsS0FIRlMsSUFFRVY7S0FFQTZiLElBQUksZUFESjViLHFCQTVDWTRCO0lBZ0NWNmMsT0FXRjFlLElBRUE2YixNQURBNWI7SUFaRXllLFVBaENVN2MsR0E0Q1o1QixJQURBRDtJQUlKLE9BOUNFZ1IsTUEyQ0UvUSxJQURBRCxJQUVBNmIsTUFEQTViLElBNUNZNEI7R0FpRGY7WUFPRDhILE9BQU85SDthQUNEK1EsSUFBSWpTO0tBQ1YsR0FEVUEsS0FESGtCLGNBTUY7S0FGSyxJQUFKN0MsSUFKQzZDLE1BQ0dsQixJQUdBLE1BSEFBO0tBSVIsV0FESTNCLGlCLE9BSEE0VDtJQUtNO0lBRWQ7SUFBQSxxQixPQVBRQTtHQU9IO1lBRUg4RCxRQUFRN1U7YUFDRitRLElBQUlqUztLQUNWLEdBRFVBLEtBREZrQixjQU1IO0tBRkssSUFBSjdDLElBSkU2QyxNQUNFbEIsSUFHQSxNQUhBQTtLQUlSLGVBSlFBLEdBR0ozQixrQixPQUhBNFQ7SUFLTTtJQUVkO0lBQUEscUIsT0FQUUE7R0FPSDtZQWFIRSxPQUFPb0s7SUFDVDtpQkFBMkJsVixLQUFJaEosR0FBSyxXQUFMQSxHQUFKZ0osS0FBZTtJQUFsQyxJQVZOdEgsSUFVTSxxQ0FEQ3djO1NBVFB4YyxHQURNO0lBRU07S0FEUk0sS0FBSk47S0FBQU8sS0FBQVA7S0FDTXlCLE1BalJGeVosZUFnUkpsYjtLQUVNbUIsSUFBSSxlQURKTSxLQURObEI7S0FDWSxNQUFOa0I7S0FFU3hCO2FBSFhLOztpQkFHRixPQURJYTtTQUdJbVEsaUJBQUpzQztLQUhBelMsTUFDU2xCLEtBRVQyVDtLQUZKLElBQUEsTUFBYTNULFdBQUFBLGlCQUVMcVI7O0dBTUM7Ozs7T0ExWVhxSjtPQVlBdE47T0FZQXVOO09BQUFBO09BWUFqVTs7T0FNQWtNO09BVEFGO09BY0FRO09BS0FDO09BcURBcEs7T0FVQW9TO09BekRBM1Q7T0FrQ0FnRztPQXpCQTNHO09BNEJBeUc7T0E2QkFsRztPQU9Bc0k7T0FjQWhDO09BcEZBSztPQWdCQUo7T0FtRkFPO09BUkFFO09BZ0JBQztPQVVBQztPQVVBQztPQVFBQztPQVFBVztPQVdBQztPQVdBYTtPQWVBRztPQWNBTztPQWtEQUQ7T0FBQUE7T0F3REExSDtPQVVBK007T0FxQkE1RDs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUUvWEFHO0lBQ0FDOztJQUNBQztZQUNBNUcsS0FBSzlOLEdBQUksT0FBSkEsVUFBWTtZQUNqQitOLEtBQUsvTixHQUFJLE9BQUpBLFVBQVk7WUFDakJVLElBQUlWLEdBQUksT0FBRyxrQkFBUEEsUUFBQUEsTUFBQUEsTUFBZ0M7T0FDcENtQix1QkFDQUQ7WUFDQXlULE9BQU8zVSxHQUFJLE9BQUpBLE9BQWtCOzs7SUFLdkI7S0FBSXVoQjtLQUhOQztnQkFJTXhoQjtRQUNGLFFBQUcsb0JBRERBLFdBQ3dCLGlCQUR4QkEsR0FEQXVoQjtTQUdBLFdBRkF2aEI7UUFJQTtPQUFJOzs7S0FNUixNQUFBO1FBZEZ3aEIsMkJBWU14aEIsR0FBSyxXQUFMQSxRQUE4Qjs7WUFLcEMrTSxVQUFVL00sR0FBSSxPQUFBLDhCQUFKQSxHQUFpQjtZQUkzQnNnQixjQUFjbGdCO0lBRWhCLElBQUksY0FBSywyQkFGT0EsS0FFWjs7OzhCQUNjOzs7R0FBSTtPQUlwQjBLO1lBQ0FOLE1BQU9qSyxHQUFPQyxHQUFRLGFBQUEsaUJBQWZELEdBQU9DLFdBQXVCO1lBRXJDaWhCLGlCQUFpQnpoQixHQUFFMGhCO0lBQ3JCLE9BQXdCLGlCQURMMWhCLG9CQUFFMGhCO0dBQ2tCO1lBRXJDcGhCLElBQUlDLEdBQUVDLEdBQVEsT0FBRyx1QkFBYkQsR0FBRUMsS0FBRkQsSUFBRUMsRUFBK0I7WUFDckNDLElBQUlGLEdBQUVDLEdBQVEsT0FBRyxrQkFBYkQsR0FBRUMsS0FBRkQsSUFBRUMsRUFBK0I7WUFLckNtaEIsYUFBYTNoQixHQUFFd2Y7SUFDakIsR0FBRyxzQkFEY0E7S0FFWixZQVhIaUMsaUJBU2F6aEIsR0FBRXdmLEtBakRmL0ssTUFEQUQ7SUFzRFEsSUFBSm9OLElBQWUsaUJBSk41aEIsYUFBRXdmLFNBS1gvZixJQUxTTyxJQUtDLFNBRFY0aEIsR0FKV3BDO0lBTVosWUFmSGlDLGlCQWNJaGlCLEdBTFcrZixLQUlYb0MsWUFBQUE7R0FFMkM7WUFFL0NDLGFBQWE3aEIsR0FBRXdmO0lBQ2pCLE9BRGV4ZixJQUNULFNBVEoyaEIsYUFRYTNoQixHQUFFd2YsSUFBQUE7R0FDZTs7OztPQTNEOUJoTDtPQUNBQztPQUNBQztPQWdEQWlOO09BUUFFO09BdkRBL1Q7T0FDQUM7T0FDQXJOO09BRUFRO09BREFDO09BRUF3VDtPQUVBNk07T0FxQkFsQjtPQUpBdlQ7T0FXQWpDO09BR0EyVztPQUZBalg7T0FLQWxLO09BQ0FHOzs7RTs7Ozs7Ozs7Ozs7Ozs7OztJQy9DQStUO0lBQ0FDO0lBQ0FDO0lBSUF2VDtJQUNBRDs7Ozs7O1lBSkE0TSxLQUFLOU4sR0FBSSxPQUFBLHVCQUFKQSxRQUFZO1lBQ2pCK04sS0FBSy9OLEdBQUksT0FBQSxlQUFKQSxRQUFZO1lBQ2pCVSxJQUFJVjtJQUFJLE9BQUcsa0JBQVBBLFVBQUFBLElBQTJCLHVCQUEzQkE7R0FBZ0M7WUFHcEMyVSxPQUFPM1UsR0FBSSxPQUFBLHVCQUFKQSxRQUFrQjtHQUdiLElBQVZ1aEIsWUFBVTtZQURaQyxnQkFFRXhoQjtJQUNGO1dBQUcsbUJBYkh3VSxNQVlFeFU7Y0FDd0IsbUJBRHhCQSxHQURBdWhCO0tBR0EsdUNBRkF2aEI7SUFJQTtHQUFJO1lBR04rTSxVQUFVL00sR0FBSSxPQUFBLGdDQUFKQSxHQUFpQjtZQUkzQnNnQixjQUFjbGdCO0lBRWhCLElBQUksY0FBSyw2QkFGT0EsS0FFWjs7OzhCQUNjOzs7R0FBSTtZQWFwQjBLLFFBQVN2SyxHQUFPQyxHQUFRLE9BQUEsbUJBQWZELEdBQU9DLEdBQTBCO1lBQzFDZ0ssTUFBT2pLLEdBQU9DLEdBQVEsYUFBQSxtQkFBZkQsR0FBT0MsV0FBdUI7WUFFckNpaEIsaUJBQWlCemhCLEdBQUUwaEI7SUFDckIsT0FBd0I7YUFBaEIsZUFEVzFoQixHQXBDakJtQixVQXFDc0IsZUFESHVnQixHQXBDbkJ2Z0I7R0FxQ3FDO1lBRXJDYixJQUFJQyxHQUFFQyxHQUFRLE9BQUcsdUJBQWJELEdBQUVDLEtBQUZELElBQUVDLEVBQStCO1lBQ3JDQyxJQUFJRixHQUFFQyxHQUFRLE9BQUcsa0JBQWJELEdBQUVDLEtBQUZELElBQUVDLEVBQStCO1lBS3JDbWhCLGFBQWEzaEIsR0FBRXdmO0lBQ2pCLEdBQUcsc0JBRGNBLEdBbkRmaEw7S0FxREcsWUFYSGlOLGlCQVNhemhCLEdBQUV3ZixLQWxEZi9LLE1BREFEO0lBdURRO0tBQUpvTjtPQUFJO1NBQVc7V0FBSyx3Q0FKWDVoQixPQUFFd2Y7O0tBS1gvZixJQUFJLGVBTEtPLEdBS0MsZUFEVjRoQixHQUpXcEM7SUFNWixZQWZIaUMsaUJBY0loaUIsR0FMVytmLEtBaERmMVIsS0FvREk4VCxLQUFBQTtHQUUyQztZQUUvQ0MsYUFBYTdoQixHQUFFd2Y7SUFDakIsT0FBQSxlQURleGYsR0FDVCxlQVRKMmhCLGFBUWEzaEIsR0FBRXdmLElBQUFBO0dBQ2U7Ozs7T0E1RDlCaEw7T0FDQUM7T0FDQUM7T0FpREFpTjtPQVFBRTtPQXhEQS9UO09BQ0FDO09BQ0FyTjtPQUVBUTtPQURBQztPQUVBd1Q7T0FFQTZNO09BYUFsQjtPQUpBdlQ7T0FvQkFqQztPQUdBMlc7T0FGQWpYO09BS0FsSztPQUNBRzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDaERBK1Q7SUFDQUM7SUFDQUM7WUFDQTVHLEtBQUs5TixHQUFJLE9BQUpBLFVBQVk7WUFDakIrTixLQUFLL04sR0FBSSxPQUFKQSxVQUFZO1lBQ2pCVSxJQUFJVixHQUFJLE9BQUcsa0JBQVBBLFFBQUFBLE1BQUFBLE1BQWdDO0dBRTFCO0lBRFY4aEI7SUFDQTNnQixnQkFEQTJnQjtJQUVBNWdCLFVBREFDO1lBRUF3VCxPQUFPM1UsR0FBSSxPQUFKQSxPQUFrQjtPQUd2QnVoQjtZQURGQyxnQkFFRXhoQjtJQUNGLFFBQUcsb0JBRERBLFdBQ3dCLGlCQUR4QkEsR0FEQXVoQjtLQUdBLFdBRkF2aEI7SUFJQTtHQUFJO1lBR04rTSxVQUFVL00sR0FBSSxPQUFBLDhCQUFKQSxHQUFpQjtZQUkzQnNnQixjQUFjbGdCO0lBRWhCLElBQUksY0FBSywyQkFGT0EsS0FFWjs7OzhCQUNjOzs7R0FBSTtPQUlwQjBLO1lBQ0FOLE1BQU9qSyxHQUFPQyxHQUFRLGFBQUEsaUJBQWZELEdBQU9DLFdBQXVCO1lBRXJDaWhCLGlCQUFpQnpoQixHQUFFMGhCO0lBQ3JCLE9BQXdCLGlCQURMMWhCLElBM0JqQm1CLGFBMkJtQnVnQixJQTNCbkJ2Z0I7R0E0QnFDO1lBRXJDYixJQUFJQyxHQUFFQyxHQUFRLE9BQUcsdUJBQWJELEdBQUVDLEtBQUZELElBQUVDLEVBQStCO1lBQ3JDQyxJQUFJRixHQUFFQyxHQUFRLE9BQUcsa0JBQWJELEdBQUVDLEtBQUZELElBQUVDLEVBQStCO1lBS3JDbWhCLGFBQWEzaEIsR0FBRXdmO0lBQ2pCLEdBQUcsc0JBRGNBO0tBRVosWUFYSGlDLGlCQVNhemhCLEdBQUV3ZixLQTFDZi9LLE1BREFEO0lBK0NRLElBQUpvTixJQUFlLGlCQUpONWhCLGFBQUV3ZixTQUtYL2YsSUFMU08sSUFLQyxTQURWNGhCLEdBSldwQztJQU1aLFlBZkhpQyxpQkFjSWhpQixHQUxXK2YsS0FJWG9DLFlBQUFBO0dBRTJDO1lBRS9DQyxhQUFhN2hCLEdBQUV3ZjtJQUNqQixPQURleGYsSUFDVCxTQVRKMmhCLGFBUWEzaEIsR0FBRXdmLElBQUFBO0dBQ2U7Ozs7T0FwRDlCaEw7T0FDQUM7T0FDQUM7T0F5Q0FpTjtPQVFBRTtPQWhEQS9UO09BQ0FDO09BQ0FyTjtPQUNBb2hCO09BRUE1Z0I7T0FEQUM7T0FFQXdUO09BRUE2TTtPQWFBbEI7T0FKQXZUO09BV0FqQztPQUdBMlc7T0FGQWpYO09BS0FsSztPQUNBRzs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7SUN0REFzaEI7SUFtSEFDOzs7Ozs7WUE1RUFDLE9BQU9DLEtBQUlDLE9BQU1yZDtJQUNuQjtLQUFJeU0sU0FBUyx3QkFESjJRLEtBQUlDLE9BQU1yZDtnQkFDZnlNO2lCQURlek0sWUF2Q2pCaWQ7O0tBdUNpQmpkLFVBQUFBO2VBQUFBO0tBQUFBLHNDQUFBQSxTQUFBQTs7SUFPbkIsT0FOSXlNO0dBTUU7WUFHSjZRLFdBQVdGLEtBQUlDLE9BQU1yZDtJQUN2QjtLQUFJeU0sU0FBUyw0QkFEQTJRLEtBQUlDLE9BQU1yZDtnQkFDbkJ5TTtpQkFEbUJ6TSxZQWpEckJpZDs7S0FpRHFCamQsVUFBQUE7ZUFBQUE7S0FBQUEsc0NBQUFBLFNBQUFBOztJQU92QixPQU5JeU07R0FNRTtZQWtFSjhRLGNBQWdCQyxLQUF1QkM7SUFDekMsR0FEa0JEO1NBQWlCRSxNQUFqQkYsUUFBQUcsaUJBQWlCRDs7U0FBakJDO0lBQ2xCO0tBQUEsTUFEa0JBLGlCQVBoQlQsV0FuSEFEO1dBMEhnQlUsaUJBUGhCVCxXQW5IQUQ7S0EwRG9CVyxhQWlFTzs7S0FRakI7Ozs7Ozs7S0FQRyxNQUFBO0lBRGY7cUJBakVpQ0M7YUFFL0I7Y0FERUM7Z0JBQ0Y7a0JBOER1Q0wsVUFoRW5CRyxpQ0FBQUE7Y0FHbEIxaUIsUUFGQTRpQixPQUFBQSxRQUQ2QkQ7cUNBQUFBLGNBQUFBLFlBRzdCM2lCOztrQkFINkIyaUIsWUFBQUEsaUJBRzdCM2lCO3dDQUg2QjJpQjtlQWlCMUI7O2lCQWpCMEJBO2lCQUFBQTtpQkFBQUE7O2lCQUFBQSxZQUFBQTs7ZUE0QjNCO2dCQURFRTtrQkFDRjs7NkNBNUIyQkY7O2tCQTJCekJFLFdBM0J5QkYsWUFBQUEsaUJBRzdCM2lCO2dCQTJCSztlQUNRLElBQVQ4aUIsU0FBUyxrQkFKVEQ7ZUFNSjs7aUJBakM2QkY7aUJBQUFBO2lCQStCekJHOztpQkEvQnlCSCxZQUFBQTtlQUFBQSxZQStCekJHOztrQkFTRjFpQixJQXhDMkJ1aUI7Y0FBQUEsWUFBQUEsWUF3QzNCdmlCO2NBeEMyQnVpQixZQUFBQSxZQXdDM0J2aUI7Y0F4QzJCdWlCO2NBQUFBLFlBQUFBLFlBd0MzQnZpQjtjQXhDMkJ1aUIsWUFBQUEsWUF3QzNCdmlCO2tCQU1BZ2QsSUE5QzJCdUYsa0JBOEMzQnZGOzttQkFDSmxiOztnQkFDVSxJQUFKM0MscUJBRkY2ZCxHQUNKbGIsT0FBQUE7d0JBQ00zQyxHQUVGLGlCQUpBNmQsR0FDSmxiLE9BQUFBLEtBQ00zQyxJQVJGYTtnQkFPSixVQUFBOEI7MkJBQUFBO29CQUFBQTs7OzthQU9GO2lDQXREc0J3Z0IsZUFBV0MsV0FBQUEsV0FHN0IzaUI7YUFINkIyaUIsWUFBQUEsWUFHN0IzaUI7Ozs7Ozs7Ozs7Ozs7O0dBMEVIO1lBRUMraUIsYUFBY04sZ0JBQWVyZTtJQUMvQixPQWhCRWllO2FBZWNJO3NCQUNtQjNkLEtBQUk5RSxHQUFLLE9BQUEsdUJBRGJvRSxJQUNJVSxRQUFJOUUsR0FBcUI7R0FBQztZQUUzRGthLFlBQWNvSSxLQUF1QmxpQjtJQUN2QyxHQURnQmtpQjtTQUFpQkUsTUFBakJGLFFBQUFHLGlCQUFpQkQ7O1NBQWpCQztJQUNoQjtLQUFBLE1BRGdCQSxpQkF6QmRULFdBbkhBRDtXQTRJY1UsaUJBekJkVCxXQW5IQUQ7O0tBc0pVOzs7Ozs7eUNBVjJCM2hCO0tBRXhCLE1BQUEsNEJBRndCQTtJQUN2QztxQkFBcUJ1aUIsUUFBQUEsd0JBQXdDOzs7Ozs7Ozs7Ozs7R0FhNUQ7WUFFQ0ssYUFBYUwsUUFBT007SUFBUE4saUJBQUFBLGVBQU9NLGFBQUFBLGFBQUFBO0lBQVBOLFlBQU9NOztHQUVpQjtZQUVyQ0MsYUFBYVAsUUFBT1E7SUFDdEIsVUFEZVI7SUFBQUEsaUJBQU9ROztHQUN5QztZQUU3RFYsZUFBZUUsUUFBUyxPQUFUQSxlQW5LZlosa0JBbUtzRDtZQUV0RHFCLE9BQU9UO0lBQ1QsSUFBSWpmLE1BREtpZixZQUFBQTtJQUVULE9BQUEsNEJBRlNBLFdBQUFBLFdBQ0xqZjtHQUN1RDtZQUV6RDJmLFdBQVdWLFFBQU9yRCxJQUFHQztJQUN2QixJQUFJN2IsTUFEbUI2YixLQUFIRDtJQUVwQixPQUFBLDRCQUZhcUQsV0FBT3JELElBQ2hCNWI7R0FDcUM7WUFFdkM0ZixlQUFlWCxRQUFPckQsSUFBR0M7SUFDM0IsT0FEd0JELElBSWY7UUFGSDViLE1BRnFCNmIsS0FBSEQ7SUFHdEIsV0FBSyw0QkFIVXFELFdBQU9yRCxJQUVsQjViO0dBSUg7WUFFRDZmLGdCQUFnQlosUUFBT3pnQixHQUFJLE9BQUEsZUFBWHlnQixXQUFPemdCLEdBQWlDO1lBRXhEc2hCLG9CQUFvQmIsUUFBT3pnQjtJQUM3QixZQUQ2QkEsUUFFdEIsZUFGZXlnQixXQUFPemdCO0dBSXZCO1lBR0p1aEIsWUFBWWQsUUFBT3pnQjtJQUNyQixPQUFBLGVBRGN5Z0IsV0FBQUEsWUFBT3pnQjtHQUNpQztZQUVwRHdoQixhQUFhZixRQUFTLE9BQVRBLGNBQW9DO1lBQ2pEZ0IsV0FBV2hCLFFBQVMsT0FBVEEsY0FBbUM7WUFFOUNpQixlQUFlakIsUUFBUyxPQUFUQSxXQUEyQjtZQUMxQ2tCLGFBQWFsQixRQUFTLE9BQVRBLFdBQTBCO1lBRXZDbUIsU0FBU25CO0lBQ1g7S0FBSW9CLE1BRE9wQjtXQUNQb0IsUUF4TUZoQzs7O1dBdU1TWSxpQkFDUG9CLFFBQUFBLGdCQUFBQSxRQUFBQTs7O0dBTUM7WUFNSEMsWUFBWS9HO0lBQUFBO0lBQUFBO1FBR1Y4RyxNQUhVOUc7T0FHVjhHLFFBdk5GaEM7S0FvTlk5RSxhQUdWOEcsUUFwR0YvQixhQUFBQSxhQUFBQTtJQWlHWS9FOztHQU1TOzs7O09BMU5yQjhFO09BeUlBZ0I7T0FHQTdJO09BbEJBbUk7T0FrQ0FXO09BSUFFO09BR0FUO09BRUFXO09BeUJBSztPQUdBQztPQUNBQztPQUVBQztPQUNBQztPQUVBQztPQWFBRTtPQTNDQVg7T0FJQUM7T0FRQUM7T0FFQUM7T0FoSkF2QjtPQVVBRzs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDZko7Ozs7OztJQUFBO0lBQ0E7SUE2Qkk2Qjs7T0FDVTtPQUNBO09BQ1M7T0FDRjs7Ozs7Ozs7Ozs7Ozs7WUFjakJDO0lBQ0Y7S0FBSUMsVUFuQkZGO0tBb0JFRyxVQURBRDtLQUVBRSxRQUFRLGVBRFJEO0tBRUFFLFFBQVEsZUFGUkY7S0FHQUcsWUFBWSxlQUhaSDtLQUlBSSxVQUFVLGVBSlZKO0lBS0YsNkJBekJBSCxXQXFCRUksVUFGQUY7SUFuQkZGLFNBcUJFSTtJQU1GLDZCQTNCQUosV0FzQkVLLFVBSEFIO0lBbkJGRixTQXNCRUs7SUFPRiw2QkE3QkFMLFdBdUJFTSxjQUpBSjtJQW5CRkYsU0F1QkVNO0lBUUYsNkJBL0JBTixXQXdCRU8sWUFMQUw7SUFuQkZGLFNBd0JFTztJQXhCRlAsU0FvQkVHOztHQWFzQjtZQUV4Qks7SUFDRiw0QkFwQ0VSLFdBQUFBO0lBQUFBOztHQXFDcUI7R0FFRyxJQUF4QlMsNENBQWdELFNBQUs7WUFFckRDLFFBQVFDLFFBQU9DLE9BQU1DLE9BQU1uQztJQUM3QjtLQXVCSW9DLFdBakVGZDtLQWtFRWUsVUFsRUZmO0tBbUVFZ0IsaUJBbkVGaEI7S0FvRUVpQixhQXBFRmpCO0tBcUVFa0IsaUJBckVGbEI7S0FzRUVtQixZQXRFRm5CO0tBdUVFb0IsZUF2RUZwQjtJQUFBQSxTQUFBQTtJQUFBQSxTQXlDZVk7SUF6Q2ZaLFVBeUMyQnRCO0lBa0M3QjtTQWpDYTJDLFNBQUlDO0tBQ2Y7YUFBTSwwQkFGRVgsUUF6Q1JYLEtBMENXcUIsS0FBSUM7O1NBR0ssSUFITEMsUUFHSyxXQUpDVixPQUFNbkM7U0F6QzNCc0IsU0F5QzJCdEI7U0F6QzNCc0IsVUF5QzJCdEI7YUFDaEIyQyxTQUFJQyxNQUFBQzs7O1NBUVgsTUFBQTs7U0FoQ0p0QixvQkF3QldvQixTQUFJQzs7U0F4QmZyQixvQkF3QldvQixTQUFJQzs7O1VBWW9CO2lCQXREbkN0QjtXQXNEbUMsTUFBQSw0QkFiM0JXLDBCQXpDUlg7V0FzRG1DO1dBWnBCamE7V0FBSnliOzs7OztjQUFJemIsV0FBSnliOzthQUFBSCxNQUFBRyxRQUFJRixNQUFBdmI7OztTQXFCWCxXQXRCSTRhLG1DQUNHVSxTQUFJQzs7O1VBbUNaRztLQUNILElBREdDLDBCQUFBRCxRQUNDRSxZQTlFSjNCO0tBQUFBLFVBaUVFYztLQWpFRmQsVUFrRUVlO0tBbEVGZixTQW1FRWdCO0tBbkVGaEIsVUFvRUVpQjtLQXBFRmpCLFNBcUVFa0I7S0FyRUZsQixTQXNFRW1CO0tBdEVGbkIsVUF1RUVvQjtRQU1DTSx1QkFVTXBtQixJQVZOb21CLFFBV0MsT0FES3BtQjtLQWhEVG1sQjtlQW9EV21CO09BQ0gsS0FBRywwQkFEQUE7UUFHRSx3QkFyRExqQixXQWtER2lCLFNBQUFBLFNBYlBEO09BZThCLFVBQUEscUJBRnZCQztPQUVFLHdCQXBETGpCLDZCQXFDSmdCO01BZ0J3RDtLQUN4RCxNQUFBLDRCQWxCREQ7O0dBa0JVO1lBRWJHLFNBQVM3QixLQUFJamtCO0lBQ2YsVUFEV2lrQixVQUFJamtCO0lBQ0wsd0JBRENpa0I7R0FDd0I7WUFFakM4QjtJQUNGLElBQWFoUCxNQXJHWGtOLFNBcUdXL2hCLElBQUE2VTtJQUNYO2FBRFc3VTtnQkFyR1graEI7TUFzR2Usd0JBdEdmQTs7S0F3R1c7YUF4R1hBLFVBcUdXL2hCO01BR0w4akIsc0JBeEdOL0I7YUFBQUEsVUFxR1cvaEI7TUFJTCtqQixzQkF6R05oQztLQTBHSyxHQUFBLHNCQUZDK0IsSUFDQUMsS0FDYSxPQUZiRDtLQUVxQixJQUxoQjdqQixNQUFBRCxXQUFBQSxJQUFBQzs7R0FRSTtZQUVmK2pCO0lBQW9CLFVBL0dwQmpDO0lBK0dvQix3QkEvR3BCQTtHQStHZ0Q7WUFDaERrQyxjQUFjbm1CO0lBQUksVUFoSGxCaWtCLFdBQUFBLFVBZ0hjamtCO0lBQUksd0JBaEhsQmlrQjtHQWdIcUU7WUFDckVtQyxZQUFZcG1CO0lBQUksVUFqSGhCaWtCLFdBQUFBLFVBaUhZamtCO0lBQUksd0JBakhoQmlrQjtHQWlIaUU7WUFFakVvQyxvQkFBa0IsT0FmbEJOLHVCQWVnRDtZQUNoRE8sa0JBQWdCLE9BTGhCSixxQkFLNEM7WUFDNUNLLFVBQVV2bUIsR0FBSSxPQUxkbW1CLGNBS1VubUIsTUFBOEI7WUFDeEN3bUIsUUFBUXhtQixHQUFJLE9BTFpvbUIsWUFLUXBtQixNQUE0QjtZQUVwQ3ltQixxQkFBcUJaO0lBQ3ZCLE9BQUEsV0FsRkVuQiwwQkFpRnFCbUI7R0FDZTtZQUVwQ2EsbUJBQTJCLFNBQUU7Ozs7T0FSN0JMO09BQ0FDO09BQ0FDO09BQ0FDO09BbEJBVDtPQVdBRztPQUNBQztPQUNBQztPQTlFQTNCOzs7O09BTUFFO09Bd0RBbUI7T0F1QkFXO09BR0FDOzs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkNwSUlDO1NBQVMsWUFDQTthQUNIeEY7U0FBTSxPQUFOQTtRQUFPO2lCQU9iakYsT0FBT2phLEdBQUUxQyxHQUFFRTtTQUNiLEdBRFN3QyxPQUNnQ2tmLElBRGhDbGYsTUFDTDJrQixLQUFxQ3pGLFlBQXJDeUY7U0FDSixHQUZhbm5CLE9BRTRCb25CLE1BRjVCcG5CLE1BRVRxbkIsS0FBcUNELGNBQXJDQzttQkFBQUEsTUFEQUYsS0FBQUEsYUFDQUU7U0FDQSxXQUhLN2tCLEdBQUUxQyxHQUFFRTtRQUd5QztpQkFPcERzbkIsSUFBSTlrQixHQUFFMUMsR0FBRUU7U0FDVixHQURNd0MsT0FDbUNrZixJQURuQ2xmLE1BQ0Yya0IsS0FBcUN6RixZQUFyQ3lGO1NBQ0osR0FGVW5uQixPQUUrQm9uQixNQUYvQnBuQixNQUVOcW5CLEtBQXFDRCxjQUFyQ0M7YUFBQUEsY0FEQUY7ZUFERTNrQixHQUtPLE9BQUE7VUFFUyxJQURDK2tCLEtBTmpCL2tCLE1BTVdnbEIsS0FOWGhsQixNQU1LaWxCLEtBTkxqbEIsTUFPZ0IsTUExQnBCMGtCLE9BeUJxQks7b0JBekJyQkwsT0F5QlNPLEtBRVUsT0FsQm5CaEwsT0FnQlNnTCxJQUFNRCxJQWhCZi9LLE9BZ0JxQjhLLElBTmZ6bkIsR0FBRUU7ZUFNYXVuQixJQUtKLE9BQUE7VUFFdUIsSUFEWEcsTUFOUkgsT0FNQ0ksTUFOREosT0FNTkssTUFOTUwsT0FPbUIsTUF2QnhDOUssT0FzQjZCaUwsS0FadkI1bkIsR0FBRUU7VUFhZ0MsT0F2QnhDeWMsT0FBQUEsT0FnQlNnTCxJQUFNRCxJQU1BSSxNQUFPRDs7YUFYcEJSLGVBQ0FFO29CQUFBQSxNQURBRixLQUFBQSxhQUNBRTtVQTBCRSxXQTVCQTdrQixHQUFFMUMsR0FBRUU7O2NBQUFBLEdBaUJHLE9BQUE7U0FFUyxJQURDNm5CLEtBbEJiN25CLE1Ba0JPOG5CLEtBbEJQOW5CLE1Ba0JDK25CLEtBbEJEL25CLE1BbUJZLE1BdENwQmtuQixPQXFDU2E7bUJBckNUYixPQXFDcUJXLEtBRWYsT0E5Qk5wTCxPQUFBQSxPQVVJamEsR0FBRTFDLEdBa0JHaW9CLEtBQU1ELElBQU1EO2NBQVpFLElBS1EsT0FBQTtTQUVxQixJQURUQyxNQU5wQkQsT0FNYUUsTUFOYkYsT0FNTUcsTUFOTkgsT0FPNkIsTUFuQ3RDdEwsT0FrQzZCdUwsS0FOZEYsSUFBTUQ7U0FPaUIsT0FuQ3RDcEwsT0FBQUEsT0FVSWphLEdBQUUxQyxHQXdCU29vQixNQUFPRDtRQUlnQztpQkFJbERFLElBQUlybkIsR0FFUjZjO1MsS0FBQUEsR0FEYSxjQURMN2M7U0FHRSxJQURDZCxJQUFYMmQsTUFBUTdkLElBQVI2ZCxNQUFLbmIsSUFBTG1iLE1BQ01wYSxJQUFJLG1CQUhGekMsR0FFQWhCO1NBRU4sU0FESXlELEdBQ1UsT0FGaEJvYTtpQkFDTXBhLEdBTU8sSUFBTHNrQixLQVRKTSxJQUFJcm5CLEdBRUdkLFdBQUFBLE1BT0g2bkIsS0FQUmxLLElBbENBMkosSUFrQ0s5a0IsR0FBRzFDLEdBT0ErbkI7U0FISyxJQUFMSixLQU5KVSxJQUFJcm5CLEdBRUgwQjtnQkFBQUEsTUFJR2lsQixLQUpSOUosSUFsQ0EySixJQXNDUUcsSUFKQTNuQixHQUFHRTs7aUJBVVhvb0IsVUFBVXRuQixHQUFJLGNBQUpBLFNBQW9DO2lCQVMxQ3VuQixnQkFBZ0J2bkI7UyxZQUNYLE9BVlRzbkIsVUFTb0J0bkI7YUFFUmQsY0FBSEYsY0FBSDBDO1NBQ04sT0F4REE4a0IsSUFxREllLGdCQUFnQnZuQixHQUVkMEIsSUFBRzFDLEdBQUdFOztpQkFHUnNvQixnQkFBZ0J4bkI7UyxZQUNYLE9BZlRzbkIsVUFjb0J0bkI7YUFFUmQsY0FBSEYsY0FBSDBDO1NBQ0UsT0E3RFI4a0IsSUE0RE05a0IsR0FBRzFDLEdBRkx3b0IsZ0JBQWdCeG5CLEdBRVJkOztpQkFNUjJLLEtBQUtuSSxHQUFFMUMsR0FBRUU7U0FDZixLQURXd0MsR0FFSyxPQWZWNmxCLGdCQWFPdm9CLEdBQUVFO2NBQUFBLEdBR0MsT0FYVnNvQixnQkFRT3hvQixHQUFGMEM7O1VBSStDK2xCLEtBSjNDdm9CO1VBSXFDNm5CLEtBSnJDN25CO1VBSStCOG5CLEtBSi9COW5CO1VBSXlCK25CLEtBSnpCL25CO1VBSWF3b0IsS0FKakJobUI7VUFJVytrQixLQUpYL2tCO1VBSUtnbEIsS0FKTGhsQjtVQUlEaWxCLEtBSkNqbEI7aUJBSStDK2xCLGNBQTlCQzttQkF0RTFCbEIsSUFzRVFHLElBQU1ELElBSlY3YyxLQUlnQjRjLElBSlR6bkIsR0FBRUU7b0JBSWF3b0I7OztxQkFBOEJEO3FCQXRFeERqQixJQWtFSTNjLEtBQUtuSSxHQUFFMUMsR0FJMkJpb0IsS0FBTUQsSUFBTUQ7cUJBaEZsRHBMLE9BNEVTamEsR0FBRTFDLEdBQUVFO1FBT0M7aUJBSVZ5b0I7U0FBVTtTQUFBO3dCQUNMLE1BQUE7Y0FFSmptQjtlQUFBQSxPQURTMUMsZ0JBQU0sT0FBTkE7d0JBQ1QwQzs7UUFBZTtpQkFFaEJrbUI7U0FBYztTQUFBO3dCQUNUO2NBRUpsbUI7ZUFBQUEsT0FEUzFDLGdCQUFNLFdBQU5BO3dCQUNUMEM7O1FBQW1CO2lCQUVwQm1tQjtTQUFVO1NBQUE7d0JBQ0wsTUFBQTsrQkFDSjdvQixnQkFBZSxPQUFmQTtjQUNBRSwwQkFBQUE7O1FBQWU7aUJBRWhCNG9CO1NBQWM7U0FBQTt3QkFDVDsrQkFDSjlvQixnQkFBZSxXQUFmQTtjQUNBRSwwQkFBQUE7O1FBQW1CO2lCQUlwQjZvQjtTQUFpQixZQUNaLE9BQUE7YUFFSnJtQjtZQUFBQTtjQUFNeEMsY0FBSEY7VUFBUyxPQXRHakJ3bkIsSUFtR0l1QixlQUdDcm1CLElBQUcxQyxHQUFHRTs7YUFERzhvQjtTQUFNLE9BQU5BO1FBQzZCO2lCQWdCM0NuZixPQUFPc0osSUFBR0Y7U0FDWixLQURTRSxJQUVPLE9BRkpGO2NBQUFBLElBR0ksT0FIUEU7U0FJd0IsVUF2QjNCNFYsZUFtQk05VjtTQUlxQixPQXhEM0JwSSxLQW9ER3NJLElBekNId1YsUUF5Q00xVjtRQUl3QztpQkFROUNMLE1BQU01UjtTLFlBRVI7U0FFUTtVQURDZDtVQUFIRjtVQUFIMEM7VUFDQ2UsSUFBSSxtQkFKQXpDLEdBR0ZoQjtTQUVOLFNBREl5RCxHQUNVLFdBRlhmLE1BQU14QztpQkFDTHVEO1VBS21CO1dBQUEsUUFUckJtUCxNQUFNNVIsR0FHQ2Q7V0FNUTZuQjtXQUFOa0I7V0FBSnhCO1VBQTZCLFdBekVsQzVjLEtBbUVDbkksR0FBRzFDLEdBTUN5bkIsS0FBSXdCLE1BQU1sQjs7U0FGTTtVQUFBLFVBUHJCblYsTUFBTTVSLEdBR0wwQjtVQUljdWxCO1VBQU5pQjtVQUFKdkI7U0FBNkIsV0FBN0JBLElBQUl1QixRQXZFVHJlLEtBdUVlb2QsSUFKWGpvQixHQUFHRTs7WUFVWCtJO2lCQUVBa2dCLGdCQUFXLHFCQUFtQztpQkFFMUNqWSxJQUFJbFE7Ozt3QkFDQztVQUVDO1dBRENkO1dBQUhGO1dBQUgwQztXQUNDZSxJQUFJLG1CQUhGekMsR0FFQWhCO3VCQUNGeUQ7O2NBREt1bEIsV0FDTHZsQixJQURLdkQsSUFBTndDLGFBQU1zbUI7OztpQkFJUEksT0FBT3BvQixHQUVYNmM7UyxLQUFBQSxHQURTO1NBRUMsSUFoREQ1SyxLQStDVDRLLE1BQVM3ZCxJQUFUNmQsTUEvQ00xSyxLQStDTjBLLE1BQ01wYSxJQUFJLG1CQUhDekMsR0FFRmhCO1NBRVAsU0FESXlEO2VBaERBMFAsSUFFUSxPQUZMRjtlQUFBQSxJQUdLLE9BSFJFO1VBSXdCLFVBYjFCNFYsZUFTSzlWO1VBSXFCLE9BaEg5QnVVLElBNEdNclUsSUEvQkZ3VixRQStCSzFWOztpQkFnREh4UDtVQVFTLElBQUxza0IsS0FYTnFCLE9BQU9wb0IsR0E3Q0ZpUztpQkFBQUEsT0F3REM4VSxLQVRWbEssSUEzSkEySixJQTRHTXJVLElBK0NHblQsR0FTQytuQjs7U0FKSyxJQUFMSixLQVBOeUIsT0FBT3BvQixHQTdDTG1TO2dCQUFBQSxPQW9ESXdVLEtBTFY5SixJQTNKQTJKLElBZ0tVRyxJQUxEM25CLEdBL0NBaVQ7O2lCQTRETG9XLE1BQU12bkIsSUFBR0M7U0FDZixLQURZRCxJQUVLLE9BRkZDO2NBQUFBLElBR0UsT0FITEQ7O1VBSThDb1IsS0FKM0NuUjtVQUlxQ3VuQixLQUpyQ3ZuQjtVQUkrQnlLLEtBSi9Ceks7VUFJeUJFLEtBSnpCRjtVQUlhcVIsS0FKaEJ0UjtVQUlVc0wsS0FKVnRMO1VBSUl1SixLQUpKdko7VUFJRkUsS0FKRUY7WUFJOENvUixNQUE5QkU7bUJBQThCRixJQUVyQyxPQTlJZm1WLElBNEl3QzdiLElBSmxDMUs7VUFPYztXQUFBLFFBN0NwQjhRLE1BMENVdkgsSUFKRHRKO1dBT0t3bkI7V0FBUDlaO1dBQ2lCLE1BUnhCNFosTUFJZ0JqYyxJQUdGbWM7VUFDVSxPQTlHeEIxZSxLQXNHQXdlLE1BSUlybkIsSUFHR3lOLE9BSEdwRTs7a0JBQVkrSCxJQU9QLE9BbkpmaVYsSUE0SVVoZCxJQUpEdEo7U0FZVztVQUFBLFVBbERwQjZRLE1BMEN3Q3BHLElBSmxDMUs7VUFZUTBuQjtVQUFQaGE7VUFDaUIsTUFieEI2WixNQVljRyxNQVJnQ0Y7U0FTdEIsT0FuSHhCemUsS0FzR0F3ZSxNQVlPN1osTUFSMkJ2TixLQUFNdUs7UUFVckM7aUJBRUhpZCxNQUFNM25CLElBQUdDO1NBQ2YsS0FEWUQsSUFFSTtjQUZEQyxJQUdDO1NBRU47VUFEWXFMLEtBSlZ0TDtVQUlJdUosS0FKSnZKO1VBSUZFLEtBSkVGO1VBS0YsTUEzREo4USxNQTBEVXZILElBSkR0SjtVQU1SRTs7VUFHdUIsSUFEYnFuQixhQUNhLE1BVHhCRyxNQUlnQnJjLElBSUxrYztVQUNhLE9BL0h4QnplLEtBc0hBNGUsTUFJSXpuQixJQUVIQyxLQUZTb0o7O1NBR2EsSUFEWGtlLGVBQ1csTUFQdkJFLE1BSWdCcmMsSUFFSm1jO1NBQ1csT0F6RTNCMWYsT0FrRUk0ZixNQUlJem5CLElBRUhDO1FBR29DO2lCQVVyQ3luQixVQUFVMW9CO1MsWUFFWiw4QkFBNEIsU0FBSztTQUV6QjtVQURDZDtVQUFIRjtVQUFIMEM7VUFDQ2UsSUFBSSxtQkFKSXpDLEdBR05oQjtTQUVOLFNBREl5RCxHQUNVO2lCQURWQTtVQU9JLFlBWE5pbUIsVUFBVTFvQixHQUdIZDtzQkFTSTtjQUNLNm5CLGVBQUpOO1VBQVcsV0F0SnZCNWMsS0E0SUNuSSxHQUFHMUMsR0FVUXluQixLQUFJTTs7U0FOVixjQVBOMkIsVUFBVTFvQixHQUdUMEI7dUJBS1U7YUFDS3VsQixpQkFBSk47U0FBVyxXQUFYQSxvQkFBb0MsT0FsSmhEOWMsS0FrSmdCb2QsT0FOWmpvQixHQUFHRSxHQU15RDs7aUJBTWhFeXBCLFNBQVM3bkIsSUFBR0M7U0FDbEIsSUFEZXdlLE9BQUF6ZSxJQUdZc2UsT0FIVHJlO1NBQ2xCO2FBRGV3ZSxRQUdZSDtlQUhaaFQsS0FBQW1ULFNBR0NsVixLQUhEa1YsU0FHTHZlLEtBSEt1ZTtjQUFBQSxTQUdZSCxNQUNOO1dBQ04sWUFwQlRzSixVQWtCVXJlLElBQVcrVTt1QkFJVjtXQURXLElBQVBrSixlQUFKcm5CLGVBQVcsTUFOdEIwbkIsU0FHSTNuQixJQUdPQztXQUFXLFVBQUE7V0FBOEIsSUFOeEM0ZCxPQU1HeUosT0FOTi9JLE9BQUFuVCxJQUdZZ1QsT0FIVFA7OztVQUVXOztRQUtQO2lCQUVoQnhJLEtBQUt2VixJQUFHQztTQUNkLEtBRFdELElBRUs7Y0FGRkMsSUFHRyxPQUhORDtTQUtEO1VBRFlzTCxLQUpYdEw7VUFJS3VKLEtBSkx2SjtVQUlERSxLQUpDRjtVQUtELE1BdEdKOFEsTUFxR1V2SCxJQUpGdEo7VUFNUEU7O1VBR3FCLElBRFhxbkIsYUFDVyxNQVR0QmpTLEtBSWdCakssSUFJTGtjO1VBQ1csT0F0SDFCemYsT0E2R0l3TixLQUlJclYsSUFFSEM7O1NBQ3NCLElBRFhzbkIsZUFDVyxNQVB2QmxTLEtBSWdCakssSUFFSm1jO1NBQ1csT0F4S3ZCMWUsS0FpS0F3TSxLQUlJclYsSUFFSEMsS0FGU29KO1FBS3dCO2lCQUlsQ3VlLFVBQVUvb0IsR0FBRXNMO1NBQ2xCLElBRGdCdUIsTUFBQTdNLEdBQUVrZSxNQUFBNVM7U0FDbEI7ZUFEZ0J1QixLQUVMLE9BRk9xUjtVQUdhO1dBQWxCN2UsSUFIR3dOO1dBR04xTixJQUhNME47V0FBQWhMLElBQUFnTDtXQUFFbVIsVUFHUjdlLEdBQUdFLEdBSEs2ZTtXQUFGclIsTUFBQWhMO1dBQUVxYyxNQUFBRjs7UUFHNEI7aUJBYTVDdFQsUUFBUXpKLElBQUdDO1NBQ2I7VUFacUI4bkIsT0FMZkQsVUFnQk83bkI7VUFYSytuQixPQUxaRixVQWdCSTluQjtVQVhRd0ssS0FBQXdkO1VBQUd2ZCxLQUFBc2Q7U0FDbkI7ZUFEZ0J2ZCxXQUFHQztlQUFBQSxJQUlQO1VBRUY7V0FEc0J3ZCxPQUxieGQ7V0FLUytjLEtBTFQvYztXQUtLQyxLQUxMRDtXQUtMeWQsT0FMRTFkO1dBS05jLEtBTE1kO1dBS1ZqQixLQUxVaUI7V0FNVjdJLElBQUksbUJBREo0SCxJQUFrQm1CO1VBRXRCLFNBREkvSSxHQUVDLE9BRkRBO1VBRytCO1dBVGxCd21CLE9BTGZMLFVBVXdCTixJQUFJUztXQUxoQkcsT0FMWk4sVUFVTXhjLElBQUk0YztXQUxFMWQsS0FBQTRkO1dBQUczZCxLQUFBMGQ7O1FBWTRCO2lCQUUvQ2hmLE1BQU1uSixJQUFHQyxJQUNYLGFBSkV3SixRQUdNekosSUFBR0MsWUFDTTtpQkFFWG9vQixPQUFPcm9CLElBQUdDO1NBQ2hCLElBRGF3ZSxPQUFBemUsSUFBR3NlLE9BQUFyZTtTQUNoQjtlQURhd2UsTUFHVDtlQUhZSCxNQUtaO1VBRVE7V0FEb0NrSixLQU5oQ2xKO1dBTTBCNVQsS0FOMUI0VDtXQU1vQm5lLEtBTnBCbWU7V0FBSGhULEtBQUFtVDtXQU1HbFYsS0FOSGtWO1dBTUh2ZSxLQU5HdWU7V0FPTDljLElBQUksbUJBREk0SCxJQUEwQm1CO1VBRXRDLFNBREkvSTtXQUVGLFVBVEEwbUIsT0FNSW5vQixJQUEwQkM7V0FHOUIsVUFBQTtlQVRPc2UsT0FBQW5ULElBQUdnVCxPQU1nQ2tKOzt1QkFDeEM3bEI7V0FNRixVQWJBMG1CLGNBTVU5ZSxJQU5IK0IsUUFNbUNrYztXQU8xQyxVQUFBO2VBYk8vSSxPQU1IdmU7OztXQUtKLFVBWEFtb0IsV0FNSW5vQixJQUFNcUosV0FBb0JwSjtXQUs5QixVQUFBO2VBWE9zZSxPQUFBblQ7OztRQWFvRDtpQkFFM0RqRCxLQUFLdEs7Ozt3QkFDQTtjQUNFSyxnQkFBSEYsZ0JBQUgwQztVQUZEeUgsS0FBS3RLLEdBRUo2QztVQUFzQixXQUZsQjdDLEdBRURHO3dCQUFHRTs7O2lCQUVQNEssS0FBS2pMLEdBQUVnQixHQUFFNEU7U0FDZixJQURhaUksTUFBQTdNLEdBQUU4RSxTQUFBRjtTQUNmO2VBRGFpSSxLQUVGLE9BRkkvSDtVQUdhO1dBSGZ6RixJQUFBd047V0FHSDFOLElBSEcwTjtXQUdOaEwsSUFITWdMO1dBQUUwQyxTQUdhLFdBSGpCdlEsR0FHREcsR0FISjhLLEtBQUtqTCxHQUdKNkMsR0FIUWlEO1dBQUYrSCxNQUFBeE47V0FBRXlGLFNBQUF5Szs7UUFHa0M7aUJBRTNDUyxRQUFRQzs7O3dCQUNIO1VBQ1E7V0FBTjVRO1dBQUhGO1dBQUgwQztXQUFZLE1BQUEsV0FGTG9PLEdBRUo5UTtVQUFTO1dBQU8sVUFGcEI2USxRQUFRQyxHQUVQcE87V0FBbUIsc0JBQWJ4Qzs7Ozs7VUFBYTs7O2lCQUVwQjZRLE9BQU9EOzs7d0JBQ0Y7VUFDUTtXQUFONVE7V0FBSEY7V0FBSDBDO1dBQVksTUFBQSxXQUZOb08sR0FFSDlRO1VBQVM7OztXQUFPLFVBRnBCK1EsT0FBT0QsR0FFTnBPO1dBQW1CLHdCQUFieEM7OztVQUFNOzs7aUJBRWIwSixPQUFPa0gsR0FFWCtNO1MsS0FBQUEsR0FEUztTQUdFO1VBRkMzZCxJQUFaMmQ7VUFBUzdkLElBQVQ2ZDtVQUFNbmIsSUFBTm1iO1VBRU01TyxNQUpGckYsT0FBT2tILEdBRUxwTztVQUdBMG5CLEtBQUssV0FMQXRaLEdBRUY5UTtVQUlIZ3BCLE1BTkZwZixPQUFPa0gsR0FFQzVRO1NBS1YsS0FGSWtxQixJQUlDLE9BekxQdmdCLE9Bb0xNb0YsS0FFQStaO1lBSkF0bUIsTUFFQXVNLE9BRk0vTyxNQUlOOG9CLEtBRXFCLE9BTjNCbkw7U0FNa0MsT0E1TzlCaFQsS0F3T0VvRSxLQUZHalAsR0FJSGdwQjs7aUJBS0Z4VyxVQUFVMUI7UyxZQUNMO1NBR1E7VUFGTjVRO1VBQUhGO1VBQUgwQztVQUVZLFFBSmI4UCxVQUFVMUIsR0FFVHBPO1VBRU0ybkI7VUFBSkM7VUFDREYsS0FBSyxXQUxHdFosR0FFTjlRO1VBSVMsVUFOYndTLFVBQVUxQixHQUVINVE7VUFJQXFxQjtVQUFKQztTQUNMLEdBRklKLElBR2dCLFVBbk10QnZnQixPQStMV3dnQixJQUVBRSxLQUVKLFdBdlBIMWYsS0FtUEd5ZixJQUZDdHFCLEdBSUR3cUI7U0FHZSxVQXhQbEIzZixLQW1QT3dmLElBRkhycUIsR0FJR3VxQjtTQUdKLFdBcE1QMWdCLE9BK0xPeWdCLElBRUFFOztpQkFLSEM7U0FBVyxZQUNOO1NBQ3NCLElBQXZCdnFCLGNBQUh3QyxjQUEwQixNQUYzQituQixTQUVJdnFCO2lCQUZKdXFCLFNBRUMvbkI7UUFBb0M7aUJBRXJDZ29CO2FBQWEva0I7O3dCQUNSLE9BRFFBO1VBRWE7V0FBbkJ6RjtXQUFIRjtXQUFIMEM7V0FBeUIsYUFBdEIxQyxHQUZKMHFCLGFBQWEva0IsUUFFTnpGO1dBRk15RjtxQkFFWmpEOzs7aUJBRUxpb0IsU0FBUzlwQixHQUNYLE9BTE02cEIsZ0JBSUs3cEIsR0FDTTtpQkFNWGdSLEtBQUs3UTs7O3dCQUNBLE1BQUE7VUFFQztXQURDZDtXQUFIRjtXQUFIMEM7V0FDQ2UsSUFBSSxtQkFIRHpDLEdBRURoQjtVQUVOLFNBREl5RCxHQUNVLE9BRlJ6RDtjQUFHZ3BCLFdBQ0x2bEIsSUFES3ZELElBQU53QyxhQUFNc21COzs7aUJBY1A0QixXQVRrQi9xQjs7O3dCQVdwQixNQUFBO2NBQ1NtcEIsa0JBQUg2QixtQkFBSDViO1VBQ0EsR0FBQSxXQWJpQnBQLEdBWWRnckI7ZUFaV3ZmLEtBWVh1ZixjQUFINWI7O3dCQVZILE9BRmlCM0Q7Z0JBR1JwTCxjQUFINHFCLGlCQUFIcG9CO1lBQ0EsR0FBQSxXQUppQjdDLEdBR2RpckI7aUJBSFd4ZixLQUdYd2YsY0FBSHBvQjs7eUJBQU14Qzs7Ozt5QkFTQThvQjs7O2lCQWVQK0IsZUFUc0JsckI7Ozt3QkFXeEI7Y0FDU21wQixrQkFBSDZCLG1CQUFINWI7VUFDQSxHQUFBLFdBYnFCcFAsR0FZbEJnckI7ZUFaZXZmLEtBWWZ1ZixjQUFINWI7O3dCQVZILFdBRnFCM0Q7Z0JBR1pwTCxjQUFINHFCLGlCQUFIcG9CO1lBQ0EsR0FBQSxXQUpxQjdDLEdBR2xCaXJCO2lCQUhleGYsS0FHZndmLGNBQUhwb0I7O3lCQUFNeEM7Ozs7eUJBU0E4b0I7OztpQkFlUGdDLFVBVGlCbnJCOzs7d0JBV25CLE1BQUE7Y0FDU21wQixrQkFBSDZCLG1CQUFINWI7VUFDQSxHQUFBLFdBYmdCcFAsR0FZYmdyQjtlQVpVdmYsS0FZVnVmLGNBQUc3Qjs7d0JBVlQsT0FGZ0IxZDtnQkFHUHBMLGNBQUg0cUIsaUJBQUhwb0I7WUFDQSxHQUFBLFdBSmdCN0MsR0FHYmlyQjtpQkFIVXhmLEtBR1Z3ZixjQUFHNXFCOzt5QkFBTndDOzs7O3lCQVNBdU07OztpQkFlRGdjLGNBVHFCcHJCOzs7d0JBV3ZCO2NBQ1NtcEIsa0JBQUg2QixtQkFBSDViO1VBQ0EsR0FBQSxXQWJvQnBQLEdBWWpCZ3JCO2VBWmN2ZixLQVlkdWYsY0FBRzdCOzt3QkFWVCxXQUZvQjFkO2dCQUdYcEwsY0FBSDRxQixpQkFBSHBvQjtZQUNBLEdBQUEsV0FKb0I3QyxHQUdqQmlyQjtpQkFIY3hmLEtBR2R3ZixjQUFHNXFCOzt5QkFBTndDOzs7O3lCQVNBdU07OztpQkFNRDZDLFNBQVM5UTs7O3dCQUNKO1VBRUM7V0FEQ2Q7V0FBSEY7V0FBSDBDO1dBQ0NlLElBQUksbUJBSEd6QyxHQUVMaEI7VUFFTixTQURJeUQsR0FDVSxXQUZSekQ7Y0FBR2dwQixXQUNMdmxCLElBREt2RCxJQUFOd0MsYUFBTXNtQjs7O2lCQUtYa0MsU0FBU3hvQixHQUFFMUMsR0FBRUU7U0FJZjs7bUJBSld3QztXQUlrQixVQTlVdkJtbUIsUUEwVUtubUI7V0FJTSxRQUFBLHdCQUpKMUM7O21CQUFFRTtXQUtnQixVQXpWekJ5b0IsUUFvVlN6b0I7V0FLRSxRQUFBLG1CQUxKRjs7VUFNUixPQXJXQzZLLEtBK1ZLbkksR0FBRTFDLEdBQUVFOztTQU9GLE9BaFFQbXBCLE1BeVBLM21CLEdBallMMmxCLElBaVlPcm9CLEdBQUVFO1FBT087aUJBRWhCc0osSUFBSTNKLEdBRVJnZTtTLEtBQUFBLEdBRFM7U0FHQztVQUZDM2QsSUFBWDJkO1VBQVE3ZCxJQUFSNmQ7VUFBS25iLElBQUxtYjtVQUVLNU8sTUFKRHpGLElBQUkzSixHQUVINkM7VUFHQTJKLE1BQUssV0FMRnhNLEdBRUFHO1VBSUhncEIsTUFORHhmLElBQUkzSixHQUVHSztZQUFOd0MsTUFFQXVNLE9BRkdqUCxNQUdIcU0sT0FITW5NLE1BSU44b0IsS0FDa0MsT0FMdkNuTDtTQU1NLE9BakJOcU4sU0FhS2pjLEtBQ0E1QyxLQUNBMmM7O2lCQVVEdGYsV0FBVzdKLEdBRWZnZTtTLEtBQUFBLEdBRFM7U0FHQztVQUZDM2QsSUFBWDJkO1VBQVE3ZCxJQUFSNmQ7VUFBS25iLElBQUxtYjtVQVJXMUssS0FNUHpKLFdBQVc3SixHQUVWNkM7VUFHQTJKLE1BQUssV0FMS3hNLEdBRVBHO1VBUk1pVCxLQU1WdkosV0FBVzdKLEdBRUpLO1NBS1YsR0FGSW1NO2NBR0s4ZSxNQUhMOWU7YUFIQTNKLE1BUk15USxNQVFIblQsTUFNRW1yQixPQU5DanJCLE1BUkcrUyxJQWU4QixPQVA1QzRLO1VBUVcsT0FuQ1hxTixTQW1CVy9YLElBY0RnWSxLQWRJbFk7O2NBQUhFLElBRUcsT0FGQUY7Y0FBQUEsSUFHQSxPQUhIRTtTQUl3QixVQXJWL0I0VixlQWlWVTlWO1NBSXFCLE9BdkJuQ2lZLFNBbUJXL1gsSUF2V1B3VixRQXVXVTFWOztpQkEwQ2Q2SyxRQUFRcGI7U0FDVixLQURVQSxVQS9VUnVHO21CQStVUXZHLE1BR1Awb0IsS0FITzFvQjttQkFHQSxPQXJiUjRsQixVQXFiQzhDOzJCQUNJNVg7bUJBQWMsT0FsY2Y2VSxJQWtjQzdVLElBdGJMOFUsVUFxYkM4QzsyQkFFUTdYO21CQUFjLE9BbmNuQjhVLElBbWNLOVUsSUFuY0w4VSxJQWtjQzdVLElBdGJMOFUsVUFxYkM4QzsyQkFHWTFYO21CQUFjLE9BcGN2QjJVLElBb2NTM1UsSUFwY1QyVSxJQW1jSzlVLElBbmNMOFUsSUFrY0M3VSxJQXRiTDhVLFVBcWJDOEM7O1VBS21CO1dBN0JMbmMsTUE2Qkssb0NBUlp2TTtXQXBCRjZTO3NCQUFJOVUsR0FBRWlDO2NBQ1osUUFEVWpDO3NCQUFBQTs7a0JBRUEsY0FGRWlDOztxQkFBQUE7dUJBR0Qyb0IsTUFIQzNvQixNQUdQMG9CLEtBSE8xb0I7bUJBR0ksa0JBQVgwb0IsV0FBTUM7Ozs7cUJBSEMzb0I7aUNBQUFBOzt3QkFJSzRvQixrQkFBTjlYLGlCQUFOK1gsT0FKTzdvQjtvQkFLUixzQkFEQzZvQixhQUFNL1gsV0FBTThYOzs7OztxQkFKTDVvQjs2QkFBQUE7Ozs7O3NCQU1XOG9CO3NCQUFOalk7c0JBQU5LO3NCQUFONlgsT0FOTy9vQjtxQkFPUjt3Q0FEQytvQixhQUFNN1gsYUFBTUw7NkJBQU1pWTs7Ozs7Y0FLUDtlQURWRSxLQVZJanJCO2VBV00sUUFYVjhVLElBVUFtVyxJQVZNaHBCO2VBV0F1TTtlQUFOckQ7Y0FDSixLQURVcUQ7ZUFFRixNQUFBO2NBRVM7ZUFEUkcsTUFIQ0g7ZUFHUjBjLE1BSFExYztlQUlPLFVBZmJzRyxLQUFJOVUsSUFVSmlyQixpQkFJS3RjO2VBQ0l3YztlQUFQL2Y7Y0FDSixXQXBlSjhRLE9BK2RNL1EsTUFHRitmLEtBQ0k5ZixRQUFPK2Y7YUFDYTtVQUUxQixPQWxCSXJXLElBa0JDLDJCQW5CUXRHLE1BQUFBOzthQTRCRTRjO1NBQWMsT0FyYzNCeEQsSUFxY2F3RCxJQXJjYnhELElBb2NTM1UsSUFwY1QyVSxJQW1jSzlVLElBbmNMOFUsSUFrY0M3VSxJQXRiTDhVLFVBcWJDOEM7UUFLaUQ7aUJBRWxEVSxRQUFRbnBCLEdBQUV3ZjtzQkFDT3RoQixHQUFFRyxHQUFLLE9BemNwQnFuQixJQXljZXJuQixHQUFGSCxHQUFjO1NBQWpDLE9BQUEsZ0NBRFlzaEIsR0FBRnhmO1FBQzRCO2lCQUVwQ21TLE9BQU9uUyxHQUFJLE9BSFhtcEIsUUFHT25wQixHQTVWUHNHLE9BNFYwQjtpQkFFdEI4aUIsWUFBYXRvQjtTQUFPLEtBQVBBLEdBQ1Y7U0FDd0MsSUFBbkM1SCxPQUZLNEgsTUFFUm9hLElBRlFwYSxNQUVYekMsSUFGV3lDLE1BRThCLE1BL1AzQ21tQixVQStQSy9MLEdBQUdoaUI7U0FBUyxXQUFmbUYsaUIsT0FGRitxQjtRQUU4RDtpQkFFbEVwZ0IsT0FBT2xJO1NBQWlCLFVBalFwQm1tQixVQWlRR25tQjtTQUFpQixxQixPQUpwQnNvQjtRQUlxQztpQkFFckNDLFVBQVVuckIsR0FBRXNMO1NBQ2xCLElBRGdCdUIsTUFBQTdNLEdBQUVrZSxNQUFBNVM7U0FDbEI7ZUFEZ0J1QixLQUVMLE9BRk9xUjtVQUdhO1dBSGY3ZSxJQUFBd047V0FHTjFOLElBSE0wTjtXQUdUaEwsSUFIU2dMO1dBQUVtUixVQUdSN2UsR0FBSDBDLEdBSFdxYztXQUFGclIsTUFBQXhOO1dBQUU2ZSxNQUFBRjs7UUFHNEI7aUJBRXhDb04sZ0JBQWlCeG9CO1NBQU8sS0FBUEEsR0FDZDtTQUM0QyxJQUF2QzVILE9BRlM0SCxNQUVab2EsSUFGWXBhLE1BRWZ6QyxJQUZleUMsTUFFOEIsTUFQL0N1b0IsVUFPS25PLEdBQUdoaUI7U0FBUyxXQUFmbUYsaUIsT0FGRmlyQjtRQUVrRTtpQkFFdEVDLFdBQVd6b0I7U0FBcUIsVUFUNUJ1b0IsVUFTT3ZvQjtTQUFxQixxQixPQUo1QndvQjtRQUk2QztpQkFFakRFLFlBQ1VDLEtBQUl2ckI7U0FBaEI7Ozs7ZUFBZ0I2TSxNQUFBN00sR0FBRTRDO1dBQUk7aUJBQU5pSztZQUdFO2FBSEZ4TixJQUFBd047YUFFQTFOLElBRkEwTjthQUFBaEwsSUFBQWdMO2FBS05qTixJQUZRLG1CQURGVCxHQUZKb3NCO3FCQUtGM3JCO29CQUFBQTthQUNlLElBTlB5VCxVQUVGbFUsR0FGQUUsR0FBRXVELElBQUZpSyxNQUFBaEwsR0FBRWUsSUFBQXlROztpQkFBRnhHLE1BQUF4Tjs7cUJBQUV1RDs7O3dCQUVGekQsR0FGQUUsR0FBRXVEOztTQVNMLHFCLE9BM0JQc29CO1FBMkJzQjs7Z0JBelgxQjlpQjtnQkFFQWtnQjtnQkFFSWpZO2dCQW5IQW1YO2dCQVlKQztnQkE2R0ljO2dCQWVBQztnQkFnQkFJO2dCQWtDQUU7Z0JBU0F0UztnQkE2Qko5TDtnQkFHQU47Z0JBR0lrZjtnQkFlQWhnQjtnQkFxSkFYO2dCQWpKQXNCO2dCQUtBK0Y7Z0JBSUFFO2dCQUlBbkg7Z0JBb0pBRjtnQkF6SUE4STtnQkFXQWlZO2dCQVFKRTtnQkF2UEloQztnQkFLQUM7Z0JBS0FDO2dCQUtBQztnQkFmQUg7Z0JBS0FDO2dCQWdEQWhXO2dCQXlNQWY7Z0JBK0VBQztnQkEvREE4WTtnQkFrQkFHO2dCQWtCQUM7Z0JBa0JBQztnQkE2RUpuTjtnQkFnQ0FxTztnQkFiQXhnQjtnQkFXQXVnQjtnQkFwQkFKO2dCQUdBaFg7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQ2pnQkFzUztTQUFTLFlBQ0E7YUFDSHhGO1NBQU0sT0FBTkE7UUFBTztpQkFFYmpGLE9BQU9qYSxHQUFFMUIsR0FBRWlmLEdBQUUvZjtTQUNmO1VBQUltbkIsS0FMRkQsT0FJTzFrQjtVQUNhNmtCLEtBTHBCSCxPQUlhbG5CO2dCQUNPcW5CLE1BQWxCRixLQUFBQSxhQUFrQkU7U0FDbEIsV0FGSzdrQixHQUFFMUIsR0FBRWlmLEdBQUUvZjtRQUU0QztpQkFFekRvb0IsVUFBVXRuQixHQUFFaWYsR0FBSSxjQUFOamYsR0FBRWlmLFNBQXVDO2lCQUVuRHVILElBQUk5a0IsR0FBRTFCLEdBQUVpZixHQUFFL2Y7U0FDWixHQURNd0MsT0FDbUNrZixJQURuQ2xmLE1BQ0Yya0IsS0FBcUN6RixZQUFyQ3lGO1NBQ0osR0FGWW5uQixPQUU2Qm9uQixNQUY3QnBuQixNQUVScW5CLEtBQXFDRCxjQUFyQ0M7YUFBQUEsY0FEQUY7ZUFERTNrQixHQUtPLE9BQUE7VUFFUyxJQURPK2tCLEtBTnZCL2tCLE1BTWlCMnBCLEtBTmpCM3BCLE1BTVdnbEIsS0FOWGhsQixNQU1LaWxCLEtBTkxqbEIsTUFPZ0IsTUFqQnBCMGtCLE9BZ0IyQks7b0JBaEIzQkwsT0FnQlNPO1dBRWEsT0FkdEJoTCxPQVlTZ0wsSUFBTUQsSUFBTTJFLElBWnJCMVAsT0FZMkI4SyxJQU5yQnptQixHQUFFaWYsR0FBRS9mO2VBTWlCdW5CLElBS1YsT0FBQTtVQUU4QjtXQURYRyxNQU5USDtXQU1FNkUsTUFORjdFO1dBTUxJLE1BTktKO1dBTVpLLE1BTllMO1dBT29CLE1BbkIvQzlLLE9Ba0JvQ2lMLEtBWjlCNW1CLEdBQUVpZixHQUFFL2Y7VUFhcUMsT0FuQi9DeWMsT0FBQUEsT0FZU2dMLElBQU1ELElBQU0yRSxJQU1OdkUsTUFBT0QsS0FBT3lFOzthQVgzQmpGLGVBQ0FFO29CQUFBQSxNQURBRixLQUFBQSxhQUNBRTtVQTBCRSxXQTVCQTdrQixHQUFFMUIsR0FBRWlmLEdBQUUvZjs7Y0FBQUEsR0FpQkMsT0FBQTtTQUVTLElBRE82bkIsS0FsQmpCN25CLE1Ba0JXcXNCLEtBbEJYcnNCLE1Ba0JLOG5CLEtBbEJMOW5CLE1Ba0JEK25CLEtBbEJDL25CLE1BbUJVLE1BN0JwQmtuQixPQTRCU2E7bUJBNUJUYixPQTRCMkJXLEtBRXJCLE9BMUJOcEwsT0FBQUEsT0FNSWphLEdBQUUxQixHQUFFaWYsR0FrQkNnSSxLQUFNRCxJQUFNdUUsSUFBTXhFO2NBQWxCRSxJQUtRLE9BQUE7U0FFMkI7VUFEUkMsTUFOM0JEO1VBTW9CdUUsTUFOcEJ2RTtVQU1hRSxNQU5iRjtVQU1NRyxNQU5OSDtVQU9tQyxNQS9CNUN0TCxPQThCb0N1TCxLQU5yQkYsSUFBTXVFLElBQU14RTtTQU9pQixPQS9CNUNwTCxPQUFBQSxPQU1JamEsR0FBRTFCLEdBQUVpZixHQXdCT21JLE1BQU9ELEtBQU9xRTtRQUk4QjtZQUUzRHZqQjtpQkFFQWtnQixnQkFBVyxxQkFBbUM7aUJBRTFDZCxJQUFJcm5CLEdBQUV5ckIsTUFHVnRLO1MsS0FBQUEsR0FETSxjQUZFbmhCLEdBQUV5ckI7U0FJQTtVQURRN0ssSUFBbEJPO1VBQWVqaUIsSUFBZmlpQjtVQUFZbEMsSUFBWmtDO1VBQVNuaUIsSUFBVG1pQjtVQUFNemYsSUFBTnlmO1VBQ00xZSxJQUFJLG1CQUpGekMsR0FHQ2hCO1NBRVAsU0FESXlELFVBRE13YyxNQUhGd00sT0FHVnRLLFFBQU16ZixHQUhFMUIsR0FBRXlyQixNQUdLdnNCLEdBQUcwaEI7aUJBQ1puZTtVQU9PLElBQUxza0IsS0FYSk0sSUFBSXJuQixHQUFFeXJCLE1BR0t2c0I7aUJBQUFBLE1BUVA2bkIsS0FSUjVGLElBckNBcUYsSUFxQ005a0IsR0FBRzFDLEdBQUdpZ0IsR0FRSjhIOztTQUhLLElBQUxKLEtBUkpVLElBQUlybkIsR0FBRXlyQixNQUdKL3BCO2dCQUFBQSxNQUtFaWxCLEtBTFJ4RixJQXJDQXFGLElBMENRRyxJQUxDM25CLEdBQUdpZ0IsR0FBRy9mOztpQkFXWDJSLEtBQUs3UTs7O3dCQUVQLE1BQUE7VUFFUTtXQURLZDtXQUFIK2Y7V0FBSGpnQjtXQUFIMEM7V0FDQWUsSUFBSSxtQkFKRHpDLEdBR0FoQjtVQUVQLFNBREl5RCxHQUNVLE9BRkp3YztjQUFHK0ksV0FDVHZsQixJQURTdkQsSUFBVHdDLGFBQVNzbUI7OztpQkFjWDRCLFdBVHFCL3FCOzs7d0JBV3ZCLE1BQUE7O1dBQ2FtcEI7V0FBSDBEO1dBQUg3QjtXQUFINWI7VUFDRCxHQUFBLFdBYm9CcFAsR0FZaEJnckI7ZUFaVXZmLEtBWVZ1ZixNQVphOEIsS0FZVkQsY0FBTnpkOzt3QkFWSixXQUZpQjNELElBQUdxaEI7Z0JBR1B6c0IsY0FBSDBzQixpQkFBSDlCLGlCQUFIcG9CO1lBQ0QsR0FBQSxXQUpvQjdDLEdBR2hCaXJCO2lCQUhVeGYsS0FHVndmLE1BSGE2QixLQUdWQyxjQUFObHFCOzt5QkFBU3hDOzs7O3lCQVNBOG9COzs7aUJBZVgrQixlQVR5QmxyQjs7O3dCQVczQjs7V0FDYW1wQjtXQUFIMEQ7V0FBSDdCO1dBQUg1YjtVQUNELEdBQUEsV0Fid0JwUCxHQVlwQmdyQjtlQVpjdmYsS0FZZHVmLE1BWmlCOEIsS0FZZEQsY0FBTnpkOzt3QkFWSixlQUZxQjNELElBQUdxaEI7Z0JBR1h6c0IsY0FBSDBzQixpQkFBSDlCLGlCQUFIcG9CO1lBQ0QsR0FBQSxXQUp3QjdDLEdBR3BCaXJCO2lCQUhjeGYsS0FHZHdmLE1BSGlCNkIsS0FHZEMsY0FBTmxxQjs7eUJBQVN4Qzs7Ozt5QkFTQThvQjs7O2lCQWVYZ0MsVUFUb0JuckI7Ozt3QkFXdEIsTUFBQTs7V0FDYW1wQjtXQUFIMEQ7V0FBSDdCO1dBQUg1YjtVQUNELEdBQUEsV0FibUJwUCxHQVlmZ3JCO2VBWlN2ZixLQVlUdWYsTUFaWThCLEtBWVRELGNBQUcxRDs7d0JBVmIsV0FGZ0IxZCxJQUFHcWhCO2dCQUdOenNCLGNBQUgwc0IsaUJBQUg5QixpQkFBSHBvQjtZQUNELEdBQUEsV0FKbUI3QyxHQUdmaXJCO2lCQUhTeGYsS0FHVHdmLE1BSFk2QixLQUdUQyxjQUFHMXNCOzt5QkFBVHdDOzs7O3lCQVNBdU07OztpQkFlRmdjLGNBVHdCcHJCOzs7d0JBVzFCOztXQUNhbXBCO1dBQUgwRDtXQUFIN0I7V0FBSDViO1VBQ0QsR0FBQSxXQWJ1QnBQLEdBWW5CZ3JCO2VBWmF2ZixLQVlidWYsTUFaZ0I4QixLQVliRCxjQUFHMUQ7O3dCQVZiLGVBRm9CMWQsSUFBR3FoQjtnQkFHVnpzQixjQUFIMHNCLGlCQUFIOUIsaUJBQUhwb0I7WUFDRCxHQUFBLFdBSnVCN0MsR0FHbkJpckI7aUJBSGF4ZixLQUdid2YsTUFIZ0I2QixLQUdiQyxjQUFHMXNCOzt5QkFBVHdDOzs7O3lCQVNBdU07OztpQkFNRjZDLFNBQVM5UTs7O3dCQUVYO1VBRVE7V0FES2Q7V0FBSCtmO1dBQUhqZ0I7V0FBSDBDO1dBQ0FlLElBQUksbUJBSkd6QyxHQUdKaEI7VUFFUCxTQURJeUQsR0FDVSxXQUZKd2M7Y0FBRytJLFdBQ1R2bEIsSUFEU3ZELElBQVR3QyxhQUFTc21COzs7aUJBS1g5WCxJQUFJbFE7Ozt3QkFFTjtVQUVRO1dBREVkO1dBQUhGO1dBQUgwQztXQUNBZSxJQUFJLG1CQUpGekMsR0FHQ2hCO3VCQUNIeUQ7O2NBRE11bEIsV0FDTnZsQixJQURNdkQsSUFBTndDLGFBQU1zbUI7OztpQkFJUjZEO1NBQWM7U0FBQTt3QkFDVCxNQUFBO2NBRUhucUI7ZUFBQUEsT0FEWXVkLGdCQUFIamdCLGdCQUFTLFdBQVRBLEdBQUdpZ0I7d0JBQ1p2ZDs7UUFBbUI7aUJBRXJCb3FCO1NBQWtCO1NBQUE7d0JBQ2I7Y0FFSHBxQjtlQUFBQSxPQURZdWQsZ0JBQUhqZ0IsZ0JBQVMsZUFBVEEsR0FBR2lnQjt3QkFDWnZkOztRQUFzQjtpQkFFeEJxcUI7U0FBYztTQUFBO3dCQUNULE1BQUE7O2VBQ0E5TSxnQkFBSGpnQjtXQUFrQixXQUFsQkEsR0FBR2lnQjs7Y0FDSC9mLDBCQUFBQTs7UUFBbUI7aUJBRXJCOHNCO1NBQWtCO1NBQUE7d0JBQ2I7O2VBQ0EvTSxnQkFBSGpnQjtXQUFrQixlQUFsQkEsR0FBR2lnQjs7Y0FDSC9mLDBCQUFBQTs7UUFBdUI7aUJBRXpCK3NCO1NBQXFCLFlBQ2hCLE9BQUE7YUFFSHZxQjtZQUFBQTtjQUFTeEMsY0FBSCtmLGNBQUhqZ0I7VUFBWSxPQXRLckJ3bkIsSUFtS0l5RixtQkFHRXZxQixJQUFHMUMsR0FBR2lnQixHQUFHL2Y7O2FBREE4b0I7U0FBTSxPQUFOQTtRQUNzQztxQkFFL0M3VixJQUFHRjtTQUNYLEtBRFFFLElBRVEsT0FGTEY7Y0FBQUEsSUFHSyxPQUhSRTtTQUtTLElBQUEsUUE5QlgwWixZQXlCSzVaLEtBS0NnTixjQUFIamY7U0FDTSxPQTlLYndtQixJQXdLTXJVLElBS0NuUyxHQUFHaWYsR0FWTmdOLG1CQUtLaGE7UUFNMkI7aUJBRWhDbVcsT0FBT3BvQixHQUdYbWhCO1MsS0FBQUEsR0FERTtTQUVRO1VBRE1qaUIsSUFBaEJpaUI7VUFBYWxDLElBQWJrQztVQUFVbmlCLElBQVZtaUI7VUFBT3pmLElBQVB5ZjtVQUNNMWUsSUFBSSxtQkFKQ3pDLEdBR0RoQjtTQUVSLFNBREl5RCxHQUNVLFdBRlRmLEdBQVN4QztpQkFDVnVEO1VBS08sSUFBTHNrQixLQVRKcUIsT0FBT3BvQixHQUdLZDtpQkFBQUEsTUFNUjZuQixLQU5SNUYsSUFuTEFxRixJQW1MTzlrQixHQUFHMUMsR0FBR2lnQixHQU1MOEg7O1NBRkssSUFBTEosS0FQSnlCLE9BQU9wb0IsR0FHSjBCO2dCQUFBQSxNQUlDaWxCLEtBSlJ4RixJQW5MQXFGLElBdUxRRyxJQUpFM25CLEdBQUdpZ0IsR0FBRy9mOztpQkFRWmd0QixPQUFPbHNCLEdBQUVuQixHQU1ic2lCO1MsS0FBQUE7VUFKYyxjQUFBLFdBRkR0aUI7d0JBR0Q7Y0FDSHN0QjtVQUFZLGNBSlZuc0IsR0FJRm1zQjs7U0FHQztVQURRdkwsSUFBbEJPO1VBQWVqaUIsSUFBZmlpQjtVQUFZbEMsSUFBWmtDO1VBQVNuaUIsSUFBVG1pQjtVQUFNemYsSUFBTnlmO1VBQ00xZSxJQUFJLG1CQVBDekMsR0FNRmhCO1NBRVAsU0FESXlEO1VBRUksWUFBQSxXQVRHNUQsT0FNRG9nQjtzQkFJRSxXQUpSdmQsR0FBU3hDO2NBS0p1c0I7aUJBTEN4TSxNQUtEd00sT0FMWHRLLFFBQU16ZixHQU5LMUIsR0FXQXlyQixNQUxJdnNCLEdBQUcwaEI7O2lCQUNabmU7VUFVTyxJQUFMc2tCLEtBakJKbUYsT0FBT2xzQixHQUFFbkIsR0FNRUs7aUJBQUFBLE1BV1A2bkIsS0FYUjVGLElBak1BcUYsSUFpTU05a0IsR0FBRzFDLEdBQUdpZ0IsR0FXSjhIOztTQUhLLElBQUxKLEtBZEp1RixPQUFPbHNCLEdBQUVuQixHQU1QNkM7Z0JBQUFBLE1BUUVpbEIsS0FSUnhGLElBak1BcUYsSUF5TVFHLElBUkMzbkIsR0FBR2lnQixHQUFHL2Y7O2lCQWNYaUssS0FBS3RLOzs7d0JBQ0E7Y0FDTUssZ0JBQUgrZixnQkFBSGpnQixnQkFBSDBDO1VBRkZ5SCxLQUFLdEssR0FFSDZDO1VBQ00sV0FISDdDLEdBRUFHLEdBQUdpZ0I7d0JBQUcvZjs7O2lCQUdYc0osSUFBSTNKO1MsWUFFTjtTQUVTO1VBRE8raEI7VUFBSDFoQjtVQUFIK2Y7VUFBSGpnQjtVQUFIMEM7VUFDQXVNLE1BSkZ6RixJQUFJM0osR0FHRjZDO1VBRUF5ZCxNQUFLLFdBTEh0Z0IsR0FHSW9nQjtVQUdOK0ksTUFORnhmLElBQUkzSixHQUdPSztTQUlULFdBSEErTyxLQURHalAsR0FFSG1nQixLQUNBNkksS0FIWXBIOztpQkFNZDNSLEtBQUtwUTtTLFlBRVA7U0FFUztVQURPK2hCO1VBQUgxaEI7VUFBSCtmO1VBQUhqZ0I7VUFBSDBDO1VBQ0F1TSxNQUpGZ0IsS0FBS3BRLEdBR0g2QztVQUVBeWQsTUFBSyxXQUxGdGdCLEdBR0FHLEdBQUdpZ0I7VUFHTitJLE1BTkYvWSxLQUFLcFEsR0FHTUs7U0FJVCxXQUhBK08sS0FER2pQLEdBRUhtZ0IsS0FDQTZJLEtBSFlwSDs7aUJBTWQ5VyxLQUFLakwsR0FBRXNpQixHQUFFMWM7U0FDZixJQURhMm5CLE1BQUFqTCxHQUFFeGMsU0FBQUY7U0FDZjtlQURhMm5CLEtBRUYsT0FGSXpuQjtVQUlGO1dBSkF6RixJQUFBa3RCO1dBR0NuTixJQUhEbU47V0FHRnB0QixJQUhFb3RCO1dBR0wxcUIsSUFISzBxQjtXQUFFaGQsU0FJRixXQUpGdlEsR0FHQUcsR0FBR2lnQixHQUhSblYsS0FBS2pMLEdBR0g2QyxHQUhPaUQ7V0FBRnluQixNQUFBbHRCO1dBQUV5RixTQUFBeUs7O1FBSXFCO2lCQUU5QlMsUUFBUUM7Ozt3QkFDSDtVQUNZO1dBQU41UTtXQUFIK2Y7V0FBSGpnQjtXQUFIMEM7V0FBZSxNQUFBLFdBRlRvTyxHQUVIOVEsR0FBR2lnQjtVQUFTO1dBQVMsVUFGMUJwUCxRQUFRQyxHQUVOcE87V0FBd0Isc0JBQWZ4Qzs7Ozs7VUFBZTs7O2lCQUUxQjZRLE9BQU9EOzs7d0JBQ0Y7VUFDWTtXQUFONVE7V0FBSCtmO1dBQUhqZ0I7V0FBSDBDO1dBQWUsTUFBQSxXQUZWb08sR0FFRjlRLEdBQUdpZ0I7VUFBUzs7O1dBQVMsVUFGMUJsUCxPQUFPRCxHQUVMcE87V0FBd0Isd0JBQWZ4Qzs7O1VBQU07OztpQkFVakJtdEIsZ0JBQWdCQyxHQUFFdHNCO1MsWUFDYixPQS9QVHNuQixVQThQb0JnRixHQUFFdHNCO2FBRVBkLGNBQUgrZixjQUFIamdCLGNBQUgwQztTQUNOLE9BL1BBOGtCLElBNFBJNkYsZ0JBQWdCQyxHQUFFdHNCLEdBRWhCMEIsSUFBRzFDLEdBQUdpZ0IsR0FBRy9mOztpQkFHWHF0QixnQkFBZ0JELEdBQUV0c0I7UyxZQUNiLE9BcFFUc25CLFVBbVFvQmdGLEdBQUV0c0I7YUFFUGQsY0FBSCtmLGNBQUhqZ0IsY0FBSDBDO1NBQ0ksT0FwUVY4a0IsSUFtUU05a0IsR0FBRzFDLEdBQUdpZ0IsR0FGUnNOLGdCQUFnQkQsR0FBRXRzQixHQUVQZDs7aUJBTVgySyxLQUFLbkksR0FBRTFDLEdBQUVpZ0IsR0FBRS9mO1NBQ2pCLEtBRFd3QyxHQUVLLE9BZlYycUIsZ0JBYU9ydEIsR0FBRWlnQixHQUFFL2Y7Y0FBQUEsR0FHRCxPQVhWcXRCLGdCQVFPdnRCLEdBQUVpZ0IsR0FBSnZkOztVQUt1QitsQixLQUxqQnZvQjtVQUtXNm5CLEtBTFg3bkI7VUFLS3FzQixLQUxMcnNCO1VBS0Q4bkIsS0FMQzluQjtVQUtQK25CLEtBTE8vbkI7VUFJaUJ3b0IsS0FKdkJobUI7VUFJaUIra0IsS0FKakIva0I7VUFJVzJwQixLQUpYM3BCO1VBSUtnbEIsS0FKTGhsQjtVQUlEaWxCLEtBSkNqbEI7aUJBS3VCK2xCLGNBREFDO21CQTdRaENsQixJQTZRUUcsSUFBTUQsSUFBTTJFLElBSmhCeGhCLEtBSXNCNGMsSUFKZnpuQixHQUFFaWdCLEdBQUUvZjtvQkFJaUJ3b0I7OztxQkFDQUQ7cUJBOVFoQ2pCLElBeVFJM2MsS0FBS25JLEdBQUUxQyxHQUFFaWdCLEdBS0xnSSxLQUFNRCxJQUFNdUUsSUFBTXhFO3FCQXBSMUJwTCxPQStRU2phLEdBQUUxQyxHQUFFaWdCLEdBQUUvZjtRQVFDO2lCQU1oQjJKLE9BQU9zSixJQUFHRjtTQUNaLEtBRFNFLElBRU8sT0FGSkY7Y0FBQUEsSUFHSSxPQUhQRTtTQUtRLElBQUEsUUE3SVgwWixZQXdJTTVaLEtBS0FnTixjQUFIamY7U0FDTyxPQXBCVjZKLEtBY0dzSSxJQUtBblMsR0FBR2lmLEdBekhOZ04sbUJBb0hNaGE7UUFNMkI7aUJBRXJDdWEsZUFBZXJhLElBQUduVCxHQUFFaWdCLEdBQUVoTjtTQUN4QixLQURzQmdOLEdBR1osT0FYUnBXLE9BUWVzSixJQUFPRjthQUVqQmtOLE1BRmVGO1NBRVYsT0F4Qk5wVixLQXNCV3NJLElBQUduVCxHQUVibWdCLEtBRmlCbE47UUFHRjtpQkFFaEJMLE1BQU01UjtTLFlBRVI7U0FFUTtVQURLZDtVQUFIK2Y7VUFBSGpnQjtVQUFIMEM7VUFDQWUsSUFBSSxtQkFKQXpDLEdBR0RoQjtTQUVQLFNBREl5RCxHQUNVLFdBRlZmLE9BQU11ZCxJQUFHL2Y7aUJBQ1R1RDtVQUttQjtXQUFBLFFBVHJCbVAsTUFBTTVSLEdBR0tkO1dBTUk2bkI7V0FBTmtCO1dBQUp4QjtVQUE2QixXQXBDbEM1YyxLQThCRW5JLEdBQUcxQyxHQUFHaWdCLEdBTUh3SCxLQUFJd0IsTUFBTWxCOztTQUZNO1VBQUEsVUFQckJuVixNQUFNNVIsR0FHSjBCO1VBSWF1bEI7VUFBTmlCO1VBQUp2QjtTQUE2QixXQUE3QkEsSUFBSXVCLFFBbENUcmUsS0FrQ2VvZCxJQUpWam9CLEdBQUdpZ0IsR0FBRy9mOztpQkFRWDhTLE1BQU1uVCxHQUFFaUMsSUFBR0M7U0FDakIsR0FEY0Q7Y0FHcUJzUixLQUhyQnRSLE9BR2VzTCxLQUhmdEwsT0FHUzJyQixLQUhUM3JCLE9BR0d1SixLQUhIdkosT0FHSEUsS0FIR0Y7YUF6VFpzbEIsT0F5VGVybEIsT0FHa0JxUjtXQUNaO1lBQUEsUUFmakJSLE1BY1d2SCxJQUhBdEo7WUFJQXVuQjtZQUFKb0U7WUFBSnpyQjtZQUNpRCxNQUxwRCtRLE1BQU1uVCxHQUdpQnVOLElBQ1prYztZQUNxQixNQUFBLFdBTDFCenBCLEdBR0t3TCxRQUFNb2lCLEtBQ1ZDO1dBQzZDLE9BckJ4REYsZUFnQkl4YSxNQUFNblQsR0FHRG1DLElBQ0ZDLEtBRFFvSjs7O21CQUhBdEosSUFFRztjQUZIQTtVQVViLE1BQUE7U0FIbUI7VUFEU3duQixPQU5meG5CO1VBTVM0ckIsT0FOVDVyQjtVQU1HeUssS0FOSHpLO1VBTUgwTixPQU5HMU47VUFPTSxVQWxCakI2USxNQWlCY3BHLElBTk4xSztVQU9HMG5CO1VBQUpvRTtVQUFKcGU7VUFDaUQsTUFScER3RCxNQUFNblQsR0FPSzJwQixNQURlRDtVQUVNLE1BQUEsV0FSMUIxcEIsR0FNUTJNLElBQ1BvaEIsVUFEYUQ7U0FFZ0MsT0F4QnhESCxlQWdCSXhhLE1BQU1uVCxHQU9IMlAsTUFES0MsT0FBTWpEO1FBSUo7aUJBRVY2YyxNQUFNeHBCLEdBQUVpQyxJQUFHQztTQUNqQixHQURjRDthQUFHQzs7WUFJa0JtUixLQUpsQm5SO1lBSVl1bkIsS0FKWnZuQjtZQUlNMnJCLEtBSk4zckI7WUFJQXlLLEtBSkF6SztZQUlORSxLQUpNRjtZQUdrQnFSLEtBSHJCdFI7WUFHZXNMLEtBSGZ0TDtZQUdTMnJCLEtBSFQzckI7WUFHR3VKLEtBSEh2SjtZQUdIRSxLQUhHRjtjQUlxQm9SLE1BREFFO1lBR1Y7YUFBQSxRQTdCbkJSLE1BMEJXdkgsSUFIQXRKO2FBTUV3bkI7YUFBSm9FO2FBQUpsZTthQUNEL00sSUFQSjJtQixNQUFNeHBCLEdBR0RtQyxJQUdBeU47YUFDcUJ2UCxJQVAxQm1wQixNQUFNeHBCLEdBR2lCdU4sSUFHVm1jO1lBRWIsS0FGU29FLE1BR0MsT0EzRFY5aUIsS0F5REluSSxHQUpPMkksSUFBTW9pQixJQUlTdnRCO2dCQUduQjJ0QixPQUpFRjtZQUlJLE9BdENqQkgsZUFtQ1E5cUIsR0FKTzJJLElBT3NCLFdBVjNCeEwsR0FHS3dMLElBQU1vaUIsSUFPVkksT0FIbUIzdEI7O1dBS1A7WUFBQSxVQW5DbkIwUyxNQTJCV3BHLElBSkgxSztZQVlLMG5CO1lBQUpvRTtZQUFKcGU7WUFDRFAsTUFiSm9hLE1BQU14cEIsR0FZRDJQLE1BUkF2TjtZQVNxQittQixNQWIxQkssTUFBTXhwQixHQVlPMnBCLE1BUlVGO1dBVXZCLEtBRlNzRSxNQUdDLE9BakVWL2lCLEtBK0RJb0UsS0FUT3pDLElBQU1raEIsSUFTUzFFO2VBR25COEUsT0FKRUY7V0FJSSxPQTVDakJKLGVBeUNRdmUsS0FUT3pDLElBWXNCLFdBaEIzQjNNLEdBSUsyTSxJQVlKc2hCLE1BWlVKLEtBU1MxRTs7Y0FYdEJub0IsSUFGSWlCOzs7Y0FFSmpCLElBRk9rQjtTQUVZLE9BQW5CbEI7UUFjMkM7aUJBRS9DK0ksT0FBT2tILEdBRVhxUjtTLEtBQUFBLEdBRFM7U0FHRTtVQUZJamlCLElBQWZpaUI7VUFBWWxDLElBQVprQztVQUFTbmlCLElBQVRtaUI7VUFBTXpmLElBQU55ZjtVQUVNbFQsTUFKRnJGLE9BQU9rSCxHQUVMcE87VUFHQXFyQixNQUFNLFdBTERqZCxHQUVGOVEsR0FBR2lnQjtVQUlOK0ksTUFORnBmLE9BQU9rSCxHQUVJNVE7U0FLYixLQUZJNnRCLEtBR0MsT0E5RFBsa0IsT0EwRE1vRixLQUVBK1o7WUFKQXRtQixNQUVBdU0sT0FGUy9PLE1BSVQ4b0IsS0FDK0IsT0FMckM3RztTQUs0QyxPQTNFeEN0WCxLQXdFRW9FLEtBRkdqUCxHQUFHaWdCLEdBSU4rSTs7aUJBSUZ0ZixXQUFXN0o7UyxZQUNOO1NBR0U7VUFGSUs7VUFBSCtmO1VBQUhqZ0I7VUFBSDBDO1VBRUF1TSxNQUpGdkYsV0FBVzdKLEdBRVQ2QztVQUdBc3JCLE1BQU0sV0FMR251QixHQUVORyxHQUFHaWdCO1VBSU4rSSxNQU5GdGYsV0FBVzdKLEdBRUFLO1NBS2IsS0FGSTh0QixLQUlRLE9BekVkbmtCLE9Bb0VNb0YsS0FFQStaO2FBRUs3SSxNQUhMNk47U0FHVyxPQXRGYm5qQixLQWtGRW9FLEtBRkdqUCxHQU1FbWdCLEtBRkw2STs7aUJBTUZ4VyxVQUFVMUI7UyxZQUNMO1NBR1E7VUFGRjVRO1VBQUgrZjtVQUFIamdCO1VBQUgwQztVQUVXLFFBSmI4UCxVQUFVMUIsR0FFUnBPO1VBRUsybkI7VUFBSkM7VUFDRHlELE1BQU0sV0FMRWpkLEdBRUw5USxHQUFHaWdCO1VBSUssVUFOYnpOLFVBQVUxQixHQUVDNVE7VUFJSnFxQjtVQUFKQztTQUNMLEdBRkl1RDtVQUdrQixVQXBGeEJsa0IsT0FnRld3Z0IsSUFFQUU7VUFFSixXQWxHSDFmLEtBOEZHeWYsSUFGRXRxQixHQUFHaWdCLEdBSUx1Szs7U0FHZSxVQW5HbEIzZixLQThGT3dmLElBRkZycUIsR0FBR2lnQixHQUlEc0s7U0FHSixXQXJGUDFnQixPQWdGT3lnQixJQUVBRTs7aUJBT0haLFVBQVV6SCxHQUFFaFc7U0FDbEIsSUFEZ0JpaEIsTUFBQWpMLEdBQUVwRCxNQUFBNVM7U0FDbEI7ZUFEZ0JpaEIsS0FFTCxPQUZPck87VUFHaUI7V0FBbEI3ZSxJQUhEa3RCO1dBR0ZuTixJQUhFbU47V0FHTHB0QixJQUhLb3RCO1dBQUExcUIsSUFBQTBxQjtXQUFFdk8sVUFHUDdlLEdBQUdpZ0IsR0FBRy9mLEdBSEM2ZTtXQUFGcU8sTUFBQTFxQjtXQUFFcWMsTUFBQUY7O1FBR21DO2lCQUVuRHRULFFBQVFDLEtBQUl5aUIsSUFBR0M7U0FDakI7VUFBdUJyRSxPQU5qQkQsVUFLV3NFO1VBQ0dwRSxPQU5kRixVQUtRcUU7VUFDTTNoQixLQUFBd2Q7VUFBR3ZkLEtBQUFzZDtTQUNuQjtlQURnQnZkLFdBQUdDO2VBQUFBLElBSVA7VUFFRjtXQUQ4QndkLE9BTHJCeGQ7V0FLaUIrYyxLQUxqQi9jO1dBS2FtaEIsS0FMYm5oQjtXQUtTQyxLQUxURDtXQUtEeWQsT0FMRjFkO1dBS0ZjLEtBTEVkO1dBS05taEIsS0FMTW5oQjtXQUtWakIsS0FMVWlCO1dBTVY3SSxJQUFJLG1CQURKNEgsSUFBc0JtQjtVQUUxQixTQURJL0ksR0FDVyxPQURYQTtVQUVJLElBQUp5USxNQUFJLFdBVEoxSSxLQU1JaWlCLElBQXNCQztVQUk5QixTQURJeFosS0FDVyxPQURYQTtVQUUwQjtXQVZiK1YsT0FOakJMLFVBV2tDTixJQUFJUztXQUx4QkcsT0FOZE4sVUFXWXhjLElBQUk0YztXQUxGMWQsS0FBQTRkO1dBQUczZCxLQUFBMGQ7O1FBVzZCO2lCQUVsRGhmLE1BQU1PLEtBQUl5aUIsSUFBR0M7U0FDZjtVQUFxQnJFLE9BcEJmRCxVQW1CU3NFO1VBQ0dwRSxPQXBCWkYsVUFtQk1xRTtVQUNNM2hCLEtBQUF3ZDtVQUFHdmQsS0FBQXNkO1NBQ2pCO2VBRGN2ZCxXQUFHQztlQUFBQSxJQUlMOztXQUM0QndkLE9BTHZCeGQ7V0FLbUIrYyxLQUxuQi9jO1dBS2VtaEIsS0FMZm5oQjtXQUtXQyxLQUxYRDtXQUtDeWQsT0FMSjFkO1dBS0FjLEtBTEFkO1dBS0ptaEIsS0FMSW5oQjtXQUtSakIsS0FMUWlCO3VCQU1aLG1CQURJakIsSUFBc0JtQjs7V0FDRCxVQUFBLFdBUHZCaEIsS0FNTWlpQixJQUFzQkM7V0FDTDtZQUNHO2FBUGJ6RCxPQXBCZkwsVUF5QmtDTixJQUFJUzthQUwxQkcsT0FwQlpOLFVBeUJZeGMsSUFBSTRjO2FBTEoxZCxLQUFBNGQ7YUFBRzNkLEtBQUEwZDs7Ozs7OztVQU1VOztRQUVtQjtpQkFFNUNRO1NBQVcsWUFDTjtTQUN1QixJQUF2QnZxQixjQUFId0MsY0FBMEIsTUFGNUIrbkIsU0FFS3ZxQjtpQkFGTHVxQixTQUVFL25CO1FBQW9DO2lCQUV0Q3lyQjthQUFheG9COzt3QkFDUixPQURRQTtVQUVpQjtXQUFuQnpGO1dBQUgrZjtXQUFIamdCO1dBQUgwQztXQUE0QixpQkFBekIxQyxHQUFHaWdCLElBRlJrTyxhQUFheG9CLFFBRUZ6RjtXQUZFeUY7cUJBRVhqRDs7O2lCQUVOMHJCLFNBQVN2dEIsR0FDWCxPQUxNc3RCLGdCQUlLdHRCLEdBQ007aUJBTWZpckIsUUFBUW5wQixHQUFFd2Y7c0JBQ09BO1VBQUwsSUFBVW5pQixjQUFGc3RCO1VBQVEsT0E1WHhCakYsSUE0WGdCaUYsR0FBRXR0QixHQUFMbWlCO1NBQXFCO1NBQXhDLE9BQUEsZ0NBRFlBLEdBQUZ4ZjtRQUNrQztpQkFFMUNtUyxPQUFPblMsR0FBSSxPQUhYbXBCLFFBR09ucEIsR0FsWVBzRyxPQWtZMEI7aUJBRXRCOGlCLFlBQWF0b0I7U0FBTyxLQUFQQSxHQUNWO1NBQzRDO1VBQXZDNUgsT0FGSzRIO1VBRVBvYSxJQUZPcGE7VUFFVHpELElBRlN5RDtVQUVYNnBCLElBRlc3cEI7VUFFa0MsTUFwRC9DbW1CLFVBb0RNL0wsR0FBRWhpQjtTQUFTLGVBQWZ5eEIsR0FBRXR0QixrQixPQUZKK3JCO1FBRWtFO2lCQUV0RXBnQixPQUFPd1c7U0FDSSxVQXZEUHlILFVBc0RHekg7U0FDSSxxQixPQUxQNEo7UUFLd0I7aUJBRXhCQyxVQUFVbnJCLEdBQUVzTDtTQUNsQixJQURnQnVCLE1BQUE3TSxHQUFFa2UsTUFBQTVTO1NBQ2xCO2VBRGdCdUIsS0FFTCxPQUZPcVI7VUFHZ0I7V0FIbEI3ZSxJQUFBd047V0FHSHVTLElBSEd2UztXQUdOMU4sSUFITTBOO1dBR1RoTCxJQUhTZ0w7V0FBRW1SLFVBR1I3ZSxHQUFHaWdCLEdBQU52ZCxHQUhXcWM7V0FBRnJSLE1BQUF4TjtXQUFFNmUsTUFBQUY7O1FBR2tDO2lCQUU5Q29OLGdCQUFpQnhvQjtTQUFPLEtBQVBBLEdBQ2Q7U0FFNkI7VUFEeEI1SCxPQUZTNEg7VUFFWG9hLElBRldwYTtVQUViekQsSUFGYXlEO1VBRWY2cEIsSUFGZTdwQjtVQUdlLE1BUmhDdW9CLFVBT01uTyxHQUFFaGlCO1NBQ1Y7cUJBREl5eEIsR0FBRXR0QjsrQixPQUZKaXNCO1FBR21EO2lCQUV2REMsV0FBV3pvQjtTQUNJLFVBWFh1b0IsVUFVT3ZvQjtTQUNJLHFCLE9BTlh3b0I7UUFNNEI7aUJBRWhDRSxZQUNVQyxLQUFJaks7U0FBaEI7Ozs7ZUFBZ0JpTCxNQUFBakwsR0FBRTFlO1dBQUk7aUJBQU4ycEI7WUFHRTthQUhGbHRCLElBQUFrdEI7YUFFQW5OLElBRkFtTjthQUVIcHRCLElBRkdvdEI7YUFBQTFxQixJQUFBMHFCO2FBS04zc0IsSUFGUSxtQkFETFQsR0FGRG9zQjtxQkFLRjNyQjtvQkFBQUE7YUFDZSxJQU5QeVQsVUFFTGxVLEdBQUdpZ0IsR0FGQS9mLEdBQUV1RCxJQUFGMnBCLE1BQUExcUIsR0FBRWUsSUFBQXlROztpQkFBRmtaLE1BQUFsdEI7O3FCQUFFdUQ7Ozt3QkFFTHpELEdBQUdpZ0IsR0FGQS9mLEdBQUV1RDs7U0FTTCxxQixPQTlCUHNvQjtRQThCc0I7O2dCQWxhMUI5aUI7Z0JBRUFrZ0I7Z0JBd0dJalk7Z0JBdEdBbVg7Z0JBeUpBNkU7Z0JBN0xKNUU7Z0JBa0xJYztnQkErSEFwVztnQkFZQXFXO2dCQTBESjlkO2dCQWNBTjtnQkFwTElkO2dCQXVCQVc7Z0JBTUErRjtnQkFJQUU7Z0JBNkZBbkg7Z0JBVUFGO2dCQVlBOEk7Z0JBMkNBaVk7Z0JBUUoyRDtnQkF2UUl2QjtnQkFLQUM7Z0JBS0FDO2dCQUtBQztnQkFmQUg7Z0JBS0FDO2dCQWdKQWxhO2dCQXBQQWY7Z0JBZ0ZBQztnQkEvREE4WTtnQkFrQkFHO2dCQWtCQUM7Z0JBa0JBQztnQkE2RkF6aEI7Z0JBU0F5RztnQkF5TUp0RTtnQkFhQXVnQjtnQkFHQUM7Z0JBekJBTDtnQkFHQWhYOzs7O0U7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0NyZVI7Ozs7SUFBQTtZQUVJNkgsY0FBWSxpQkFBb0I7WUFFaEMwUixNQUFNeHRCLEdBQUFBLFVBQUFBLG1CQUF5QjtZQUUvQndVLEtBQUt4VSxHQUFJLFdBQUpBLE1BQUFBLE1BQTZCO1lBRWxDeXRCLEtBQUt0dEIsR0FBRUgsR0FBQUEsV0FBRkcsR0FBRUgsT0FBQUEsT0FBQUEsdUJBQXVDO1lBRTlDMHRCLElBQUkxdEI7SUFDTixZQURNQTtnQkFHTSxNQUFBO1FBRE5tQyxlQUFKQztJQUZJcEMsT0FFQW1DO0lBRkFuQyxPQUFBQTtJQUVxQyxPQUF6Q29DO0dBQ3FCO1lBRXJCdXJCLFFBQVEzdEI7SUFDVixZQURVQTtnQkFHRTtRQURObUMsZUFBSkM7SUFGUXBDLE9BRUptQztJQUZJbkMsT0FBQUE7SUFFaUMsV0FBekNvQztHQUNjO1lBRWR3ckIsSUFBSTV0QjtJQUNOLFlBRE1BO2dCQUdLLE1BQUE7UUFEVG9DO0lBQVMsT0FBVEE7R0FDb0I7WUFFcEJ5ckIsUUFBUTd0QjtJQUNWLFlBRFVBO2dCQUdDO1FBRFRvQztJQUFTLFdBQVRBO0dBQ2E7WUFFYmttQixTQUFTdG9CLEdBQUksYUFBSkEsYUFBYztZQUV2Qm1PLE9BQU9uTyxHQUFJLE9BQUpBLEtBQVM7WUFFaEJzSixLQUFLdEssR0FBRWdCLEdBQUksbUNBQU5oQixHQUFFZ0IsTUFBbUI7WUFFMUJpSyxLQUFLakwsR0FBRW1LLEtBQUluSixHQUFJLG1DQUFWaEIsR0FBRW1LLEtBQUluSixNQUE0QjtZQUl2QzhLLE9BQU85SyxHQUFJLG1DQUFKQSxNQUFtQjtZQUUxQmlyQixRQUFRekosR0FBRTFmO2lCQUFrQjNCLEdBQUssT0FsQ2pDc3RCLEtBa0M0QnR0QixHQUFwQnFoQixHQUFpQztJQUEzQixPQUFBLGdDQUFKMWY7R0FBa0M7WUFFNUNtUyxPQUFPcUYsR0FDRCxJQUFKdFosSUEzQ0Y4YixXQXdDQW1QLFFBR0VqckIsR0FES3NaLElBRVQsT0FESXRaLEVBRUg7Ozs7O09BN0NDOGI7T0FNQTJSO09BRUFDO09BS0FDO09BS0FDO09BS0FDO09BckJBTDtPQUVBaFo7T0F3QkE4VDtPQUVBbmE7T0FFQTdFO09BRUFXO09BSUFhO09BRUFtZ0I7T0FFQWhYOzs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHQzdDSjs7O0lBQUE7WUFZSTZILGNBQVksb0JBSWY7WUFFRzBSLE1BQU1oTSxHQUFBQSxVQUFBQSxVQUFBQSxtQkFHSztZQUVYZ0csSUFBSXJuQixHQUFFcWhCO0lBQ1IsSUFBSXNNLFdBREUzdEIsT0FVQzR0QixRQVZDdk07V0FVRHVNO2VBVkN2TSxPQUFBQSxjQVVEdU0sV0FUSEQsTUFESXRNLE9BQ0pzTTtlQURJdE0sVUFBQUEsT0FDSnNNLE1BREl0TSxPQUNKc007R0FZWTtZQUtkRSxLQUFLeE07SUFDUCxZQURPQTtnQkFFRSxNQUFBO1FBQ0F5TTtJQUFhLE9BQWJBO0dBQW9CO1lBRTNCQyxTQUFTMU07SUFDWCxZQURXQTtnQkFFRjtRQUNBeU07SUFBYSxXQUFiQTtHQUF5QjtZQUtoQ0UsS0FBSzNNO0lBQ1AsVUFET0E7Y0FFRSxNQUFBO1FBQ0F5TTs7U0FHUzFsQjtLQU5YaVosT0FBQUE7S0FBQUEsT0FNV2paO0tBR2hCLE9BTk8wbEI7O0lBdkNQVCxNQW9DS2hNO0lBSUwsT0FET3lNO0dBTUE7WUFFUEcsU0FBUzVNO0lBQ1gsVUFEV0E7Y0FFRjtRQUNBeU07O1NBR1MxbEI7S0FOUGlaLE9BQUFBO0tBQUFBLE9BTU9qWjtLQUdoQixXQU5PMGxCOztJQWxEUFQsTUErQ1NoTTtJQUtULFdBRk95TTtHQU1LO1lBS1p6WixLQVlFZ047SUFBSyxJQVhlNk0sU0FXcEI3TSxNQVhTOE0sWUFXVDlNLGFBWGUrTSxVQUFLVCxPQUFBTztJQUN0QjtVQURzQlAsTUFBWFEsV0FBTUMsTUFFWSxPQUZsQkQ7S0FJTSxJQURSTCxVQUhhSCxTQUdKdmxCLE9BSEl1bEIsU0FJaEJVLGFBREdQO0tBRVAsR0FMZU0sTUFBQUEsVUFJWEMsYUFKS0YsV0FJTEU7U0FKV0QsT0FJWEMsUUFKZ0JWLE9BR0p2bEI7O0dBUW9EO1lBRXRFK2YsU0FBUzlHLEdBQ1gsYUFEV0EsYUFDQztZQUVWclQsT0FBT3FULEdBQ1QsT0FEU0EsS0FDRDtZQUVObFksS0FRRXRLLEdBQUV3aUI7SUFBSyxJQVBJNk0sU0FPVDdNLE1BUFNzTSxPQUFBTztJQUNiO1VBRGFQLE1BRUo7U0FDQUcsVUFISUgsU0FBQXZsQixPQUFBdWxCO0tBSVgsV0FHQTl1QixHQUpPaXZCO1NBSElILE9BQUF2bEI7O0dBT1U7WUFFdkIwQixLQVFFakwsR0FBRXVRLFFBQUtpUztJQUFLLElBUEk2TSxTQU9UN00sTUFQSTVjLE9BT1QySyxRQVBjdWUsT0FBQU87SUFDbEI7VUFEa0JQLE1BRVQsT0FGSWxwQjtLQUlBO01BREpxcEIsVUFIU0g7TUFBQXZsQixPQUFBdWxCO01BQUxocEIsU0FJQSxXQUdYOUYsR0FQVzRGLE1BR0pxcEI7TUFISXJwQixPQUFBRTtNQUFLZ3BCLE9BQUF2bEI7O0dBT2U7WUFFakNrbUIsU0FBU0MsSUFBR0M7SUFDZCxjQURXRDs7UUFRRlgsUUFSS1k7V0FRTFo7ZUFSS1k7O2dCQUFBQSxRQUFIRDtjQVFGWCxXQVJFVztjQUFHQyxRQUFIRDtjQXJHVGxCLE1BcUdTa0I7ZUFBR0MsUUFBSEQsT0FBR0MsUUFBSEQsT0FBR0MsUUFBSEQsT0FyR1RsQixNQXFHU2tCO0dBWUM7WUFJVjVqQixPQUFPMFc7SUFDVCxTQUFRek4sSUFBSW5SO0tBQU8sS0FBUEEsR0FDRDtTQUNRekMsSUFGUHlDLE1BRVUyRixPQUZWM0Y7S0FFcUIsV0FBZHpDLGlCLE9BRlg0VCxJQUVjeEw7SUFBaUM7Y0FIOUNpWjtJQUNULHFCLE9BQVF6TjtHQUlHO1lBRVRrWCxRQUFRekosR0FBRTFmO2lCQUFrQjNCLEdBQUssT0F2SGpDcW5CLElBdUg0QnJuQixHQUFwQnFoQixHQUFpQztJQUEzQixPQUFBLGdDQUFKMWY7R0FBa0M7WUFFNUNtUyxPQUFPcUYsR0FDRCxJQUFKa0ksSUFySUYxRixXQWtJQW1QLFFBR0V6SixHQURLbEksSUFFVCxPQURJa0ksRUFFSDs7Ozs7T0F2SUMxRjtPQVdBMEw7T0FBQUE7T0ErQkEyRztPQVdBQztPQVhBRDtPQWJBSDtPQUtBRTtPQUxBRjtPQXZCQVI7T0E2REFoWjtPQWNBOFQ7T0FHQW5hO09BR0E3RTtPQVVBVztPQVVBd2tCO09BZ0JBM2pCO09BT0FtZ0I7T0FFQWhYOzs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHQzdJSjs7O0lBQUE7O1lBRUkyYTtJQUFzQyxNQUFBO0dBQWU7WUFLckRDLGlCQUFrQkM7SUFDRyxJQUFuQkMsVUFEZ0JEO0lBQUFBLFNBTGxCRjtJQU9GO0tBRWUsSUFBVHpkLFNBQVMsV0FIWDRkO0tBSUYsc0JBTGtCRCxLQUlkM2Q7S0FDSixPQURJQTs7VUFHRCtNO1NBQUE1Uyx3QkFBQTRTO0tBUGU0USx5QkFRa0MsTUFBQSw0QkFEakR4akIsTUFDd0Q7S0FDM0QsTUFBQSw0QkFGR0E7O0dBRUk7WUFJUDBqQixxQkFBc0JGO0lBQ0QsSUFBbkJDLFVBRG9CRDtJQUFBQSxTQWxCdEJGO0lBcUJXLElBQVR6ZCxTQUFTLFdBRlQ0ZDtJQUdKLHNCQUp3QkQsS0FHcEIzZDtJQUNKLE9BRElBO0dBRUU7WUFPSjhkLE1BUUVDO0lBRUksSUFBSmxTLElBQUksYUFGSmtTO1dBRUFsUztjQUZBa1M7Y0FFQWxTLHNCQUZBa1MsTUFqQ0ZMLGlCQWlDRUs7R0FLcUI7WUFHdkJDLFVBQVdEO0lBRUwsSUFBSmxTLElBQUksYUFGS2tTO1dBRVRsUztjQUZTa1M7Y0FFVGxTLHNCQUZTa1MsTUE1QlhGLHFCQTRCV0U7R0FLZ0I7OztxQkE5QzNCTCxrQkFhQUcsc0JBWUFDLE9BZ0JBRTs7O0U7Ozs7Ozs7O0c7Ozs7Ozs7Ozs7SUNUQUE7WUFFQUMsU0FBVXB3QjtJQUNKLElBQUptQixJQUFJO0lBQUpBLE9BRFFuQjtJQUVaLE9BREltQjtHQUVnQjtZQUVsQmt2QixTQUFVbHdCO0lBQ0osSUFBSjZkLElBQUksYUFESTdkO09BQ1I2ZCx3QkFBQUEsdUJBQUFBO0tBSUQsT0FMUzdkO0lBRTBELE9BQUEsK0JBRjFEQTtHQU1UO1lBR0Rtd0IsT0FBUXp0QjtJQUFjO0lBQUEsT0FBQSxhQUFkQTtHQUFrRDtZQVMxRDhHLElBQUkzSixHQUFFbUI7SUFDUjs7O2lDQURRQTs7O21CQUFBQTtpRUFBQUEsS0FBQUE7YUFDQSxPQUFBLFdBREZuQjs7R0FDWTtZQUVoQnV3QixRQUFRdndCLEdBQUVtQjtJQUNaLEtBYkVtdkIsT0FZVW52QjtLQUdGOzs7a0NBSEVBOzs7b0JBQUFBO2tFQUFBQSxLQUFBQTtjQUdDLE9BQUEsV0FISG5COzs7d0JBQUVtQjs7O1VBQUFBO3dEQUFBQSxLQUFBQTtJQUVPLE9BdkJqQmt2QixTQXVCaUIsV0FGVHJ3QjtHQUdhOzs7OztPQU5yQjJKO09BVEEybUI7T0FUQUQ7T0FxQkFFO09BMUJBSDtPQUZBRDtPQUVBQztPQUtBQztPQVNBQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDOUNKOzs7Ozs7Ozs7Ozs7SUFBQTtJQUNBOzs7Ozs7Ozs7Ozs7WUFFSUU7SUFBUSxZQUNBO1FBQ0RBO0lBQVcsT0FBWEE7R0FBZ0I7WUFDdkI1RDtJQUFPLFlBQ0M7UUFDREE7SUFBVSxPQUFWQTtHQUFjO1lBRXJCNkQsVUFBVWx1QjtJQUFBQSxPQUNILHVCQURHQSxNQUFBQSw4QkFBQUE7SUFBQUE7O0dBQ2tEO1lBR3hEbXVCLFNBQWlERixPQUFNcFE7SUFBSyxJQUFMRSxNQUFBRjtJQUFLO2VBQUxFO2FBQUFBOztTQU85QyxJQURKdU4sS0FOa0R2TixRQU10RHNOLEtBTnNEdE4sUUFPOUMsUUFQVG9RLFNBQWlERixPQU1oRDVDOzJDQU5zRHROLE1BTWxEdU47O1VBSUQsTUFBQTthQUZLOEMsZ0JBQUgzc0I7U0FBVyxXQUFYQSxPQUFHMnNCLEtBRko5Qzs7O1VBcUJKN3RCLElBM0JzRHNnQjs2QkEyQnREdGdCO1VBM0JzRHlnQjs7ZUEyQnREemdCOzZEQUFBQSxLQUFBQTtVQTNCc0RzZ0IsTUFBQUc7OzthQWV2RG5HLElBZnVEZ0csY0FldkRoRzs7O3dCQUhzQjtjQUNIc1c7VUFFbkJ0VztVQURhLFdBRE1zVyxLQWJvQ3RROztTQWdCOUMsY0FBQSxXQURUaEcsTUFmaURrVzt5QkFrQjdDSyxrQkFBSyxXQUFMQSxLQWxCbUR2UTtTQWV2RGhHO1NBRTZCOzthQUkxQi9YLElBckJvRCtkO1lBcUJwRC9kLFFBQUFBLE1BekJQa3VCLFVBeUJPbHVCO2tCQUFBQSxNQUVhO2FBQ2JsQywwQkFIQWtDLE1BQUFBO1NBQUFBLE9BQUFBO1NBS2lCLFdBRmpCbEMsR0F4Qm9EaWdCOztLQUtuQyxPQUxtQ0E7O0dBMkJwQjtZQUduQ3dRLFVBQTZDOXZCO0lBRXBEO2lCQUZvREE7bUNBR3hDOzs7WUFDSGdELGNBQVMsV0FBVEE7O1FBRU8sSUFDVm9jLElBckNDc1EsU0E4QjZDMXZCLE1BQUFBO2tCQU85Q29mLGdCQUNVO2lCQURWQTtTQUVLLE1BQUE7WUFGQ3dRLE1BQU54UTtRQVA4Q3BmLE9BTzlDb2Y7UUFBaUMsV0FBM0J3UTs7O1NBSUo1d0I7NEJBQUFBOzs7Y0FBQUE7NERBQUFBLEtBQUFBO1FBWDRDZ0I7OztZQWE3Q3NaLHdCQUFBQTt3QkFEYXVXLGtCQUFNLE9BQU5BO1FBQ0EsSUFBSjF2QixJQUFJLFdBQWJtWixNQWI2Q3RaO1FBYTdDc1osV0FBU25aO1FBQXdDLE9BQXhDQTs7WUFDTm9CO1dBQUFBLFFBQUFBLE1BaERQa3VCLFVBZ0RPbHVCO3FCQUFBQTttQkFkMEN2Qjs0Q0FjMUN1QixNQUFBQTs7O0dBR21DO1lBRzFDeXNCO0lBQU8sWUFDQztRQUNIaHVCO0lBQUssT0F0Qk44dkIsVUFzQkM5dkI7R0FBZ0I7WUFHakIrdkIsVUFBeUMvdkI7SUFDL0M7aUJBRCtDQTs7OzthQUVuQ29mLGNBRm1DcGYsT0FBQUEsY0FBQUEsT0FFbkNvZjs7YUFDTDlGO1lBQUFBLE1BSHdDdFosT0FBQUEsY0FHeENzWjs7O2FBQ0cvWDtZQUFBQSxRQUFBQSxNQS9EUmt1QixVQStEUWx1QjtzQkFBQUE7b0JBSnFDdkI7b0JBQUFBLE9BQUFBLGNBSXJDdUIsT0FBQUE7O1VBN0JKdXVCLFVBeUJ5Qzl2QixJQVVqQzs7R0FDYTtZQUd6Qmd3QjtJQUFPLFlBQ0M7UUFDSHBFO0lBQVEsT0FoQlRtRSxVQWdCQ25FO0dBQXNCO1lBRXZCcUUsVUFBVXJ3QixHQUFFSTtJQUNsQixRQURnQkosR0FDRCxjQURHSTtJQUdWLFlBOUNGOHZCLFVBMkNZOXZCO2dCQU9OLGNBUE1BO1FBSVRnRDtJQXRCSCtzQixVQWtCWS92QjtJQU1LO0tBQUEsVUFOakJpd0IsVUFBVXJ3QixXQUFFSTtLQU1BeXNCO0tBQUhyTjtLQUFKOFE7SUFBb0MsZUFGdENsdEIsR0FFRWt0QixTQUZGbHRCLEdBRU1vYyxJQUFHcU47R0FDTztZQVV2QjBELE1BQU12d0I7SSxZQUNFO0lBUFM7S0FESjBmO0tBQ0ksUUFYYjJRLFVBaUJFcndCLEdBUE8wZjtLQUNIaGM7S0FBSDhiO0tBQUo4UTtJQURVNVEsU0FBQUEsU0FDSGhjO0lBREdnYyxTQUNORjtJQUdULE9BSEs4UTs7WUFVSDNuQixLQUFLdkk7SUFDRCxZQTdDSmd1QixLQTRDS2h1QjtnQkFHRyxNQUFBO1FBREhnRDtJQTNCTGd0QixLQXlCS2h3QjtJQUVLLE9BQUxnRDtHQUNnQjtZQUdyQm9GLE1BQU1wSTtJQUNSLEdBbkRFZ3VCLEtBa0RNaHVCLElBRUksTUFBQTtJQUNGO0dBQUU7WUFHVnNKLEtBQUt0SyxHQUFFb3hCO0lBQ1Q7S0FDUSxZQTFETnBDLEtBd0RPb0M7aUJBSUc7U0FESHB0QjtLQXhDUGd0QixLQXFDT0k7S0FHc0IsV0FIeEJweEIsR0FHRWdFOztHQUdBO1lBS1BxdEIsS0FBS3J4QixHQUFJLDZCQUFKQSxNQUF5RDtZQUU5RGllLFFBQVFwYjtJQUNWO2lCQUE2QzFCLEdBQUUwQixHQUFLLFdBQVAxQixHQUFFMEIsR0FBaUI7SUFBaEUsa0JBQXdCLGlDQURkQTtHQUNpRTtZQUd6RTRTLFVBQVV6VTtJQUNBLElBQVJ3dkI7SUFDQyxPQVJIYTs7Y0FlQSxJQUFJenRCLElBUkY0c0I7cUJBUUU1c0IsSUFDSiw4QkFWVTVDO3lCQUNSd3ZCLGdCQVVxQix3QkFYYnh2QixHQVNONEM7O2FBR0s7R0FBQztZQUdWd1csU0FBU3BaO0lBQ0MsSUFBUnd2QjtJQUNDLE9BdkJIYTs7Y0F3QkEsSUFBSXp0QixJQUZGNHNCO3FCQUVFNXNCLElBQ0oscUJBSlM1Qzt5QkFDUHd2QixnQkFJcUIsdUJBTGR4dkIsR0FHTDRDOzthQUdLO0dBQUM7WUFHVjB0QixXQUFXdHNCO0lBQ2IsMEJBRGFBLElBRXlCO0dBQXFDO1lBS3pFdXNCLEtBQUt6dUIsR0FBRTlCO0lBQTBDLFVBbEtqRDRyQixLQWtLTzVyQjtJQUFJLHNCQWxLWDRyQixLQWtLSzlwQjtHQUFvRDtZQUN6RDB1QixNQUFNMXVCLEdBQUU5QixHQUFJLHNCQUFOOEIsR0FuS044cEIsS0FtS1E1ckIsTUFBOEM7WUFDdER5d0IsTUFBTTN1QixHQUFJLHNCQUFKQSxRQUE4QztZQUVwRDR1QixLQUFLMXhCLEdBQUVnQjtJQUNUOzs7Ozs7Z0JBQXVELFVBdktyRDRyQixLQXNLTzVyQjtnQkFDMEIsV0F2S2pDNHJCLEtBdUs2QyxXQUR4QzVzQjs7R0FDMEQ7WUFFL0QyeEIsTUFBTTN4QixHQUFFZ0I7SUFBSTs7Ozs7O2dCQUFpRCxVQXpLN0Q0ckIsS0F5S1E1ckI7Z0JBQXVDLFdBQVEsV0FBakRoQjs7R0FBaUU7WUFDdkU0eEIsTUFBTTV4QjtJQUFJOzs7dUNBQW1DLFdBQVEsV0FBL0NBO0dBQStEO09BRXJFNnhCO1lBQ0FDLE1BQU05eEI7SUFBSTs7O3VDQUF5QyxPQTdLbkQ0c0IsS0E2S21ELFdBQTdDNXNCO0dBQXNEO1lBSXhEK3hCLEtBQWdEL3hCLEdBQUVnQjtJQUN4RDtJQUNVLFVBdExSd3ZCLE1Bb0xzRHh2QjtJQUV4RDtJQUNBO0lBSUVneEIsVUFQb0RoeUIsR0FqTHBENHNCLEtBaUxzRDVyQjtJQUt4RDtJQUFBLE9BQUE7R0FDZ0I7WUFDZGd4QixVQUF3RGh5QjtJQUF4RCw4QkFFVSxPQUFBOzs7V0FDQW9nQixjQUFIcGM7T0FDTDtPQUNBLFdBTHNEaEUsR0FHakRnRTtPQUdMO09BTkZndUIsVUFBd0RoeUIsR0FHOUNvZ0I7T0FJUixPQUFBOztXQUVReU4sZUFBSkQ7T0FDSjtPQVZGb0UsVUFBd0RoeUIsR0FTbEQ0dEI7T0FHSjtPQVpGb0UsVUFBd0RoeUIsR0FTOUM2dEI7T0FJUixPQUFBOztPQUVTLE9BQUE7O09BQ0QsT0FBQTtlQUNHLE9BQUE7O0dBQXNCOzs7Ozs7T0E1RW5Dd0Q7T0FFQXBUO09BSUF4STtPQWVBMkU7T0FTQWtYO09BekNBaG5CO09BWkFmO09BTUFIO09BbERBNGxCO09BbUJBZ0M7T0FoRkFSO09BcUdBVztPQWdFQUk7T0FDQUM7T0FDQUM7T0FFQUM7T0FHQUM7T0FDQUM7T0FFQUM7T0FDQUM7T0FJSUM7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNyTEpqVixPQUFPbGM7SUFDVjtLQUFJME8sV0FETTFPLElBQUFBO0tBRU40Tyx1QkFEQUYsdUJBQUFBO0tBRUF0TyxJQUFJLGtCQURKd087SUFFSixXQURJeE8sTUFEQXdPLEtBQ0F4TztHQUNzRDtZQUV2RGl4QixTQUFTMXZCLEdBQUksbUNBQUpBLFNBQUFBLE1BQTBDO1lBQ25EOFgsU0FBUzlYLEdBQUksbUNBQUpBLFNBQUFBLE1BQW1DO1lBRTVDbVQsSUFBSW5ULEdBQUU4QixLQUFJQztJQUNaLFFBRFFELFlBQUlDLFFBQU4vQixPQUFNK0IsWUFBSkQ7S0FHSCxPQUFBLDRCQUhDOUIsTUFBRThCLEtBQUlDO0lBRVAsT0FBQTtHQUNpQztZQUdwQzJSLEtBQUsyTCxLQUFJOUwsUUFBT1MsS0FBSVYsUUFBT3ZSO0lBQzdCO1dBRDZCQTs7WUFBbEJ3Ujs7U0FBSjhMLFNBQXNCdGQsWUFBbEJ3UjtnQkFBV0QsZ0NBQUpVLE9BQVdqUyxZQUFQdVI7S0FLcEIsT0FBQSx3QkFMSytMLFFBQUk5TCxRQUFPUyxLQUFJVixRQUFPdlI7SUFHeEIsT0FBQTtHQUUrQztZQUdsRCtLLElBQUk5TSxHQUFFOEI7SUFDUixRQURRQSxPQUFGOUIsT0FBRThCLGtDQUFGOUIsTUFBRThCO0lBRVAsT0FBQTtHQUNpQztZQUdoQzhLLE9BQU81TSxHQUFJLE9BQUpBLEtBQWM7WUFFckJpc0IsTUFBTWpzQixHQUFBQSxtQkFBbUI7WUFFekIydkIsTUFBTTN2QjtJQUFBQTtJQUFBQSxPQUFBQTtJQUFBQSw0QkFBQUE7O0dBR3lCO1lBVS9CNHZCLE9BQU81dkIsR0FBRTZ2QjtJQUNYLElBQUlDLFVBREs5dkIsTUFFTCt2QixVQUZLL3ZCLE1BR0x1VyxjQURBd1o7O1FBQ0F4WixlQUZBdVosVUFET0Q7S0FHUHRaLGlCQUFBQTs7d0JBQUFBO1NBRkF1WixVQURPRDtNQUdQdFo7O01BS0c7SUFFVSxJQUFieVosYUFBYSxrQkFQYnpaO0lBVUosNkJBYlN2VyxTQVVMZ3dCLGVBVktod0I7SUFBQUEsT0FVTGd3QjtJQVZLaHdCLE9BR0x1VztRQUhLdlcsT0FBRTZ2QixZQUFGN3ZCO0tBZ0JULE1BQUE7UUFmSTh2QixVQURPRCxhQUFGN3ZCLE1Ba0JUO0lBREEsTUFBQTtHQUNFO1lBb0NBaXdCLFNBQVNqd0IsR0FBRXFCO0lBQ2IsSUFBSTRTLE1BRE9qVTtPQUFBQSxRQUNQaVUsS0F2REYyYixPQXNEUzV2QjswQkFBQUEsTUFDUGlVLEtBRFM1UztJQUFGckIsT0FDUGlVOztHQUdpQjtZQUVsQmljLGdCQUFnQmx3QixHQUFFaUk7SUFBVSxJQUM5QkMsTUFEOEIsNkJBQVZEO0lBQ2IsT0FBUEM7S0FBZ0IsTUFBQTtJQUNULFVBRFBBLEtBRUUsT0FURCtuQixTQU1pQmp3QixHQUNsQmtJO0lBR08sV0FIUEE7U0FJTWlvQixRQUxZbndCO1FBQUFBLFFBS1ptd0IsZ0JBakVMUCxPQTREaUI1dkI7MkJBQUFBLE1BS1ptd0IsYUFKTmpvQjsyQkFEa0JsSSxNQUtabXdCLHFCQUpOam9CO0tBRGtCbEksT0FLWm13Qjs7O0lBT0MsV0FYUGpvQjtLQXFCTyxhQXJCUEE7TUFpQ0ssTUFBQTtTQVhDK0wsTUF2QllqVTtRQUFBQSxRQXVCWmlVLGNBbkZMMmIsT0E0RGlCNXZCOzJCQUFBQSxNQXVCWmlVLFdBdEJOL0w7MkJBRGtCbEksTUF1QlppVSxvQkF0Qk4vTDsyQkFEa0JsSSxNQXVCWmlVLG9CQXRCTi9MOzJCQURrQmxJLE1BdUJaaVUsbUJBdEJOL0w7S0FEa0JsSSxPQXVCWmlVOzs7UUFWQTdRLFFBYllwRDtPQUFBQSxRQWFab0QsZ0JBekVMd3NCLE9BNERpQjV2QjswQkFBQUEsTUFhWm9ELGFBWk44RTswQkFEa0JsSSxNQWFab0Qsc0JBWk44RTswQkFEa0JsSSxNQWFab0QscUJBWk44RTtJQURrQmxJLE9BYVpvRDs7R0FxQlc7WUFFZmd0QixtQkFBbUJwd0IsR0FBRWlJO0lBQVUsSUFDakNDLE1BRGlDLDZCQUFWRDtJQUNoQixPQUFQQztLQUFnQixNQUFBO0lBQ1QsV0FEUEE7S0FPTyxhQVBQQTtNQWtCSyxNQUFBO0tBVkg7TUFBSW1vQixNQVJObm9CO01BU01vb0IsYUFEQUQ7TUFFQUUsYUFGQUY7TUFHQXBjLE1BWmVqVTtRQUFBQSxRQVlmaVUsY0E1R0wyYixPQWdHb0I1dkI7MkJBQUFBLE1BWWZpVSxLQUZBcWM7MkJBVmV0d0IsTUFZZmlVLGFBRkFxYzsyQkFWZXR3QixNQVlmaVUsYUFEQXNjOzJCQVhldndCLE1BWWZpVSxhQURBc2M7S0FYZXZ3QixPQVlmaVU7OztRQVRBN1EsUUFIZXBEO09BQUFBLFFBR2ZvRCxnQkFuR0x3c0IsT0FnR29CNXZCOzBCQUFBQSxNQUdmb0QsT0FGTjhFOzBCQURxQmxJLE1BR2ZvRCxlQUZOOEU7SUFEcUJsSSxPQUdmb0Q7O0dBZ0JXO1lBRWZvdEIsbUJBQW1CeHdCLEdBQUVpSTtJQUFVLElBQ2pDQyxNQURpQyw2QkFBVkQ7SUFDaEIsT0FBUEM7S0FBZ0IsTUFBQTtJQUNULFdBRFBBO0tBT08sYUFQUEE7TUFrQkssTUFBQTtLQVZIO01BQUltb0IsTUFSTm5vQjtNQVNNb29CLGFBREFEO01BRUFFLGFBRkFGO01BR0FwYyxNQVplalU7UUFBQUEsUUFZZmlVLGNBaklMMmIsT0FxSG9CNXZCOzJCQUFBQSxNQVlmaVUsS0FGQXFjOzJCQVZldHdCLE1BWWZpVSxhQUZBcWM7MkJBVmV0d0IsTUFZZmlVLGFBREFzYzsyQkFYZXZ3QixNQVlmaVUsYUFEQXNjO0tBWGV2d0IsT0FZZmlVOzs7UUFUQTdRLFFBSGVwRDtPQUFBQSxRQUdmb0QsZ0JBeEhMd3NCLE9BcUhvQjV2QjswQkFBQUEsTUFHZm9ELE9BRk44RTswQkFEcUJsSSxNQUdmb0QsZUFGTjhFO0lBRHFCbEksT0FHZm9EOztHQWdCVztZQUVoQnF0QixjQUFjendCLEdBQUV2QixHQUFFaXlCLFFBQU8zdUI7SUFDM0IsVUFEb0IydUI7Ozs7O1lBQU8zdUI7MkNBQVR0RCxLQUFTc0QsV0FBUDJ1QjtZQUVmO1FBQ0RDLGVBSFkzd0IsT0FBVytCO09BQVgvQixPQUdaMndCLGNBN0lGZixPQTBJYzV2QixHQUFXK0I7SUFLM0IsaUJBTGtCdEQsR0FBRWl5QixRQUFKMXdCLE1BQUFBLE1BQVcrQjtJQUFYL0IsT0FHWjJ3Qjs7R0FHc0I7WUFFeEJDLGFBQWE1d0IsR0FBRXZCLEdBQUVpeUIsUUFBTzN1QjtJQUMxQixPQVRFMHVCLGNBUWF6d0IsR0FDQyw2QkFEQ3ZCLElBQUVpeUIsUUFBTzN1QjtHQUMyQjtZQUVuRDh1QixXQUFXN3dCLEdBQUV2QjtJQUNmLElBQUlzRCw0QkFEV3RELElBRVhreUIsZUFGUzN3QixPQUNUK0I7T0FEUy9CLE9BRVQyd0IsY0F2SkZmLE9BcUpXNXZCLEdBQ1QrQjtJQUdKLGlCQUpldEQsTUFBRnVCLE1BQUFBLE1BQ1QrQjtJQURTL0IsT0FFVDJ3Qjs7R0FHc0I7WUFFeEJHLFVBQVU5d0IsR0FBRXZCO0lBQUksT0FQaEJveUIsV0FPVTd3QixHQUFtQiw2QkFBakJ2QjtHQUEyQztZQUV2RHN5QixXQUFXL3dCLEdBQUVneEIsSUFDZixPQWJFSixhQVlXNXdCLEdBQUVneEIsVUFBQUEsT0FDdUI7WUErQnBDQyxZQUFZanhCLEdBQUV5QyxJQUFHeXVCO0lBQ25CO1dBRG1CQTtvQ0FBQUE7WUFFakI7T0FGWWx4QixRQUFBQSxPQUFLa3hCLGdCQTlMakJ0QixPQThMWTV2QixHQUFLa3hCOztLQTNCZ0JwdUIsUUEyQnJCOUM7S0EzQkVtRCxNQTJCRm5EO0tBR1ZteEI7S0E5QitCcnZCLE1BQUFnQjtLQUFLc3VCLFVBMkJyQkY7SUExQmpCO2NBRHNDRTtNQUc1QixJQUFKdHpCLElBQUksdUJBd0JJMkUsSUEzQkFVLEtBQW1CckIsS0FBS3N2QjtNQUlwQyxTQURJdHpCOztRQUhhdXpCLGlCQThCakJGLGVBM0JJcnpCO1FBSDJCNkUsUUFBQWIsTUFHM0JoRTtRQUhnQ3d6QixZQUFBRixVQUdoQ3R6QjtRQTJCSnF6QixlQTlCaUJFO1FBQWN2dkIsTUFBQWE7UUFBS3l1QixVQUFBRTs7OztTQTJCMUJ0eEIsT0FHVm14QixvQkFIVW54QjtNQUpkLE1BQUE7S0FJY0EsT0FBQUEsT0FHVm14QjtRQUFBQSxlQUhlRDtNQU1ILE1BQUE7S0FDaEI7O0dBQUU7WUFFQUssY0FBYzV2QixJQUFHM0I7SUFDbkIsOEJBRGdCMkIsSUFBRzNCLFNBQUFBO0dBQ1k7WUE0QzdCd3hCLGVBQWV4eEIsR0FBRXZDLEdBQUVnQjtJQUNyQixJQWhCcUJnekIsOEJBZUFoekIsSUFFUGl6QixlQUFTaFY7SUFDckI7UUFEcUJBLE9BakJGK1U7dUJBaUJQQzttQkFoTVp6QixTQThMZWp3QixHQUVIMHhCOztLQUVKLElBU0pDLGFBVEksZ0JBSldsekIsR0FFRWllO2VBV2pCaVY7Z0JBWFFEO09BaE1aekIsU0E4TGVqd0IsR0FhWDJ4QjtPQVBDLElBSmdCL1UsTUFBQUYsYUFBVGdWLGVBQVNoVixNQUFBRTs7O09BT2hCLElBeEJRZ1YsVUFpQlFsVjtVQWpCRitVLFNBQU5HLFNBQ00sTUFBQTtPQUNmLElBcEJlQyxVQW9CZixnQkFhZXB6QixHQWZObXpCOzs7a0JBbEJNQyxtQkFBQUE7U0E0QmxCLElBbEJhM08sUUFRRDBPLGlCQVJHRSw4QkF1QkdyekI7Ozs7Ozs7Z0JBdkJMcWUsTUFBQW9HO1lBQ2Q7Z0JBRGdCNE8sU0FBRmhWO2FBRVIsWUFBQSxnQkFxQmFyZSxHQXZCTHFlOzs7Ozs7Ozs7Ozs7aUJBQUFDLE1BQUFELGFBQUFBLE1BQUFDOzs7ZUFrQlRnVixTQWxCU2pWOzs7Y0FrQlRpVixTQWxCV0Q7Ozs7O2FBbUJmLDhCQUlrQnJ6QixHQWZObXpCLFNBVVJHLFNBVlFIO2FBVVJHOzs7UUFMSixJQXRCZW5QLFlBaUJIZ1AsaUJBakJDSTtrQkFES0g7YUFBUUk7O29CQUFSSjtVQU5kLE1BQUE7YUFNc0JJOztZQUNUOWMsNEJBZ0NDMVcsSUFoQ0x5c0IsSUFBQThHLEtBdUJURSxPQXZCV3RQO1FBQ2hCO1lBRGtCek4sT0F1QmIrYyxNQXRCWSxNQUFBO1lBQ2QsZ0JBOEJnQnp6QixHQVRkeXpCLFVBeEJjTDtjQUNIdHhCLElBdUJYMnhCLGNBdkJTQyxNQUFBakgsV0FBQUEsSUFBQWlILEtBdUJURCxPQXZCVzN4QjtpQkFHYixnQkE2QmdCOUIsR0FUZHl6QixVQXhCc0JEO21CQUNiL0c7Y0FBRTFxQixNQXVCWDB4QixjQXZCU0UsTUFBQWxILFdBQUFBLElBQUFrSCxLQXVCVEYsT0F2QlcxeEI7OztjQUFBNFUsTUF1Qlg4YyxjQUFBQSxPQXZCVzljOzs7OztZQXdCZjtpQ0FRa0IzVyxHQWhDSG1rQixZQXVCWHNQLE9BTlFOO1lBTVJNOztXQVdnQkcscUJBUVpDO09BekdUekIsV0ErRmU3d0IsR0FXRyxXQVhEdkMsR0FVUjYwQjtXQVJHWixlQUFTaFYsTUFBQTJWOztvQkFBVFg7TUFoTVp6QixTQThMZWp3QjtNQTlMZml3QixTQThMZWp3QixHQWFYMnhCO01BRUMsSUFiZ0JuVixNQUFBRSxhQUFUZ1YsZUFBU2hWLE1BQUFGOztvQkFXakJtVjtNQUtDLElBaEJnQlksTUFBQTdWLGFBQVRnVixXQVdSQyxZQVhpQmpWLE1BQUE2Vjs7TUFoTXJCdEMsU0E4TGVqd0IsR0FhWDJ4QjtNQU9DLElBbEJnQmEsTUFBQTlWLGFBQVRnVixXQVdSQyxZQVhpQmpWLE1BQUE4Vjs7O0dBc0JaO1lBRVRDLFNBQVN6eUIsR0FBRStCO0lBQ1gsUUFEV0EsT0FBRi9CLFFBQUUrQixLQUFGL0IsT0FBRStCO0lBRVQsT0FBQTtHQUVpQjtZQUluQndILE9BQU92SjthQUNEd1MsSUFBSWpTO0tBRVYsR0FIT1AsUUFDR08sR0FFYztLQUd0QixJQURJM0IsMEJBTENvQixNQUNHTyxJQUtSLE1BTFFBO0tBS1IsV0FESTNCLGlCLE9BSkE0VDtJQUttQjtJQUUzQjtJQUFBLHFCLE9BUFFBO0dBT0g7WUFFSDhELFFBQVF0VzthQUNGd1MsSUFBSWpTO0tBRVYsR0FIUVAsUUFDRU8sR0FFYztLQUd0QixJQURJM0IsMEJBTEVvQixNQUNFTyxJQUtSLE1BTFFBO0tBS1IsZUFMUUEsR0FJSjNCLGtCLE9BSkE0VDtJQUt1QjtJQUUvQjtJQUFBLHFCLE9BUFFBO0dBT0g7WUFFSGtYLFFBQVExcEIsR0FBRXFIO0lBQWUsa0IsT0FwUHpCNG9CLFNBb1BRandCO0lBQVEsT0FBQSxnQ0FBTnFIO0dBQStCO1lBRXpDcUwsT0FBT25TLEdBQ0QsSUFBSlAsSUEzVkZ1YSxZQXdWQW1QLFFBR0UxcEIsR0FES08sSUFFVCxPQURJUCxFQUVIO1lBYUMweUIsU0FBUzF5QixHQUFFcEI7SUFDYixJQUFJK3hCLGVBRE8zd0I7T0FBQUEsT0FDUDJ3QixjQTdURmYsT0E0VFM1dkI7MEJBQUFBLE1BQUFBLE1BQUVwQjtJQUFGb0IsT0FDUDJ3Qjs7R0FHc0I7WUFFeEJnQyxhQUFhM3lCLEdBQUVwQjtJQUNqQixJQUFJK3hCLGVBRFczd0I7T0FBQUEsT0FDWDJ3QixjQW5VRmYsT0FrVWE1dkI7SUFHZix5QkFIZUEsTUFBQUEsTUFBRXBCO0lBQUZvQixPQUNYMndCOztHQUdzQjtZQUV4QmlDLGFBQWE1eUIsR0FBRXBCO0lBQ2pCLElBQUkreEIsZUFEVzN3QjtPQUFBQSxPQUNYMndCLGNBelVGZixPQXdVYTV2QjtJQUdmLHlCQUhlQSxNQUFBQSxNQUFFcEI7SUFBRm9CLE9BQ1gyd0I7O0dBR3NCO1lBRXhCa0MsYUFBYTd5QixHQUFFcEI7SUFDakIsSUFBSSt4QixlQURXM3dCO09BQUFBLE9BQ1gyd0IsY0EvVUZmLE9BOFVhNXZCO0lBR2YseUJBSGVBLE1BQUFBLE1BQUVwQjtJQUFGb0IsT0FDWDJ3Qjs7R0FHc0I7WUFFeEJtQyxhQUFhOXlCLEdBQUVwQjtJQUNqQix3Q0FEaUJBLEtBQUFBO1dBbEJmK3pCLGFBa0JhM3lCO0dBQ3dDO1lBRXJEK3lCLGFBQWEveUIsR0FBRXBCO0lBQ2pCLElBRGlCdVIsdUJBQUF2UixpQkFBQUE7SUFDc0IsT0F0QnJDK3pCLGFBcUJhM3lCLEdBQUVtUTtHQUNzQztZQUVyRDZpQixhQUFhaHpCLEdBQUVwQjtJQUNqQiwyQkFBdUMsaUJBRHRCQSxLQUFBQTtJQUNzQixPQW5CckNnMEIsYUFrQmE1eUI7R0FDd0M7WUFFckRpekIsYUFBYWp6QixHQUFFcEI7SUFDakIsSUFEaUJ1Uix1QkFBQXZSLElBQzZCLGlCQUQ3QkE7SUFDNkIsT0F0QjVDZzBCLGFBcUJhNXlCLEdBQUVtUTtHQUNzQztZQUVyRCtpQixhQUFhbHpCLEdBQUVwQjtJQUNqQiwyQkFBdUMsaUJBRHRCQSxLQUFBQTtJQUNzQixPQW5CckNpMEIsYUFrQmE3eUI7R0FDd0M7WUFFckRtekIsYUFBYW56QixHQUFFcEI7SUFDakIsSUFEaUJ1Uix1QkFBQXZSLElBQzZCLGlCQUQ3QkE7SUFDNkIsT0F0QjVDaTBCLGFBcUJhN3lCLEdBQUVtUTtHQUNzQzs7OztPQWxackRvSztPQU1BbVY7T0FDQTVYO09BRUEzRTtPQU1BTztPQVFBNUc7T0FNQUY7T0FFQXFmO09BRUEwRDtPQW9OQTRCO09BdUVBa0I7T0F4TkF4QztPQU1DQztPQXlEQU07T0FyQkFKO09BcUREUztPQU9BQztPQWxCQUw7T0FRQUc7T0FrR0FZO09BdEZBVDtPQWdDQUU7T0F3RkExbkI7T0FVQStNO09BVUFvVDtPQUVBaFg7T0FnQkFnZ0I7T0FBQUE7T0FNQUM7T0FxQkFJO09BSEFEO09BbEJBSDtPQXFCQUk7T0FIQUQ7T0FaQUY7T0FxQkFLO09BSEFEO09BWkFIO09BcUJBTTtPQUhBRDs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDbXJFTUU7SUFRUUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQWhsRmRDLHVCQUFxQixPQUFBLG1DQUFvQjtZQUd6Q0MsZ0JBQWdCdDJCLFVBQVNvRTtJQUMzQjtLQUNJbXlCLFVBRnVCbnlCO0tBRUNveUIsYUFGRHB5QjtLQUlDLE9BQUEsdUJBSlZwRSxVQUVkdTJCLFdBQXdCQztJQUM1QixPQUFBLGVBSGtCeDJCLFVBRWR1MkIsU0FFRjtHQUFpRTtZQUVqRUUsZ0JBQWdCejJCO0lBQ2xCLE9BQUEsNEJBRGtCQTtHQUNNO1lBR3RCMDJCLGFBQWExMkI7SUFDZixJQUFJMjJCLGFBZEZOLG9CQWVGL3lCOztLQUU4QixXQUFBLGdCQUpmdEQsVUFFZnNEO0tBQ0UsZUFGRXF6QixZQUNKcnpCLEdBRUk7S0FERixXQURGQTtlQUFBQSxHQUlBLE9BQUEsNkJBTElxekI7U0FDSnJ6Qjs7R0FJZ0M7WUFHOUJzekIsZUFBZTUyQixVQUFTb0U7SUFDMUIsSUFDSW15QixVQUZzQm55QixhQUVFb3lCLGFBRkZweUI7a0JBR2IsZ0JBSElwRSxVQUVidTJCLFdBQXdCQztHQUM4QjtZQWF4REssZUFBZUM7SUFBVSxLQUFWQSxTQUNQO1FBQ0hDLFFBRlVEO0lBRUQsY0FBVEM7R0FBbUM7WUFTeENDLCtCQUdBMTJCLEtBQUkyMkI7SUFBTyxVQUFYMzJCO1lBQUFBOztRQUVBLGVBRkkyMkI7O1FBSUosZUFKSUE7O1FBZ0NKLGdCQWhDSUE7Z0JBc0NKLGdCQXRDSUE7O1dBQUozMkI7O1dBS2V3MkIsVUFMZngyQixRQU1BLGVBcEJBdTJCLGVBbUJlQyxVQUxYRzs7V0FPZ0JDLFlBUHBCNTJCO09BUUEsZUF0QkF1MkIsZUFxQm9CSyxZQVBoQkQ7O1dBU2dCRSxZQVRwQjcyQixRQVNhbEMsUUFUYmtDO09BVUEsZUFEYWxDLE9BdkJieTRCLGVBdUJvQk0sZUFUaEJGOztXQVdrQkcsWUFYdEI5MkIsUUFXZS9CLFVBWGYrQjtPQVlBLGVBRGUvQixTQXpCZnM0QixlQXlCc0JPLGVBWGxCSDs7V0Fjc0JJLFlBZDFCLzJCLFFBY21CNUIsVUFkbkI0QjtPQWVBLGVBRG1CNUIsU0E1Qm5CbTRCLGVBNEIwQlEsZUFkdEJKOztXQWlCa0JLLFlBakJ0QmgzQixRQWlCZXpCLFVBakJmeUI7T0FrQkEsZUFEZXpCLFNBL0JmZzRCLGVBK0JzQlMsZUFqQmxCTDs7V0FUYU0sV0FTakJqM0IsUUFvQmVrM0IsWUFwQmZsM0I7VUFUaUJpM0I7WUFFWkUsT0FGWUYsd0JBRVpFOzs7T0E0Qkwsb0JBbkNBWixlQWtDZVcsa0JBcEJYUDs7V0F3QlNTLFlBeEJicDNCO09BeUJBLGVBdkNBdTJCLGVBc0NhYSxZQXhCVFQ7O1dBMEJ5QjczQixRQTFCN0JrQixRQTBCb0JxM0IsWUExQnBCcjNCO09BMkJBLGdCQURvQnEzQixXQUFTdjRCLE9BMUJ6QjYzQjs7V0E0QjJCMzNCLFVBNUIvQmdCLFFBNEJzQnMzQixZQTVCdEJ0M0I7T0E2QkEsZ0JBRHNCczNCLFdBQVN0NEIsU0E1QjNCMjNCOztXQWlDOEJqM0IsV0FqQ2xDTSxRQWlDdUJMLFlBakN2Qks7T0FrQ0EsZ0JBRHVCTCxXQUFXRCxVQWpDOUJpM0I7bUJBbUNxQjkyQixVQW5DekJHLFFBb0NBLGdCQUR5QkgsU0FuQ3JCODJCOztHQXNDaUM7WUEwR3JDWSx3QkFBd0I3NEIsT0FDMUIsYUFEMEJBLG1CQU9YO1lBNkJiODRCLGNBQWNDO0lBQVksY0FBbUIsa0JBQS9CQTtHQUF1RDtZQUdyRUMsa0JBQWtCOXhCLEtBQUkreEI7SUFDeEI7S0FBSW56QixtQ0FEZ0JvQjtLQUVoQmd5QixVQUZnQmh5QixTQUFJK3hCO09BQ3BCbnpCLE1BQ0FvekI7S0FFWTtNQUFWNWUsVUFBVSwyQkFIWnhVLGFBQ0FvekI7TUFHRUMsVUFBVSxrQkFEVjdlO0tBRUosNkJBTmtCcFQsV0FLZGl5QixZQUpGcnpCO0tBRGdCb0IsU0FLZGl5Qjs7O0dBR0w7WUFHQ0MsZ0JBQWdCbHlCLEtBQUk5QjtJQVhwQjR6QixrQkFXZ0I5eEI7SUFFbEIsZUFGa0JBLFFBQUFBLFFBQUk5QjtJQUFKOEIsU0FBQUE7O0dBR0k7WUFHcEJteUIsa0JBQWtCbnlCLEtBQUkxRTtJQUN4QixJQUFJODJCLGdDQURvQjkyQjtJQWpCdEJ3MkIsa0JBaUJrQjl4QixLQUNoQm95QjtJQUVKLDhCQUh3QjkyQixNQUFKMEUsUUFBQUEsUUFDaEJveUI7SUFEZ0JweUIsU0FBQUEsU0FDaEJveUI7O0dBR3dCO1lBRzFCQyxnQkFBZ0JyeUI7SUFDbEIsbUNBRGtCQSxXQUFBQTtHQUNrQjtZQUtsQ3N5QixjQUFjcDZCO0lBQVEsT0FBUkE7OztPQUVvQjs7O09BQXdCOzs7T0FDaEQ7OztPQUF3Qjs7Ozs7T0FGRTtlQUMxQjs7R0FDMkI7WUFJckNxNkIsY0FBZ0IvVSxLQUFRMWtCO0lBQVEsR0FBaEIwa0IsU0FBR0UsTUFBSEYsUUFBQWdWLEtBQUc5VSxjQUFIOFU7V0FBUTE1Qjs7T0FDYjs7T0FBaUI7O09BQ2pCOztPQUFpQjs7T0FDakI7O09BQWlCLE9BSFowNUI7O09BSUw7O09BQWlCO2VBQ2hCOztHQUFHO1lBeUVmQyxhQUFhenlCLEtBQUkweUI7SUFBUSxPQUFSQTs7T0FDUixPQXpHVFIsZ0JBd0dhbHlCOztPQUVKO2VBQ0EsT0EzR1RreUIsZ0JBd0dhbHlCOztHQUdtQjtZQUdoQzJ5QixvQkFBb0IzeUIsS0FBSTR5QjtJQUMxQixPQUQwQkEsV0E5R3hCVixnQkE4R29CbHlCLFdBQUk0eUI7R0FDYztZQUl0Q0MsZUFBZTd5QixLQUFJNHdCO0lBQVUsS0FBVkEsU0FDWDtRQUNIQyxRQUZjRDtJQUVpQixPQS9HcEN1QixrQkE2R2VueUIsS0FFcUIsMkJBQS9CNndCO0dBQW9EO1lBS3pEaUMsZUFDQTl5QixLQUFJbEk7SUFBTyxVQUFQQSxrQkFDVTthQURWQTtTQUVnQm9ELElBRmhCcEQsUUFFUzQ2QixRQUZUNTZCO0tBbkJKMjZCLGFBbUJBenlCLEtBRWEweUI7S0FFUyxPQXpIdEJQLGtCQXFIQW55QixLQUlzQiwyQkFGRjlFOztRQUdSNjNCLFVBTFJqN0I7SUFuQkoyNkIsYUFtQkF6eUIsS0FLWSt5QjtJQUNaLE9BaklBYixnQkEySEFseUI7R0FPdUI7WUFHdkJnekIsaUJBQ0VoekIsS0FBSWhJO0lBQVEsVUFBUkE7U0FFUWtELElBRlJsRDtLQXRJTms2QixnQkFzSUVseUI7S0FJb0IsT0FwSXRCbXlCLGtCQWdJRW55QixLQUlvQiwyQkFGUjlFOztPQUZSbEQsTUFNTixPQXRJQW02QixrQkFnSUVueUI7SUFDYztHQUtVO1lBSzFCaXpCLGtCQUFrQmp6QixLQUFJOUg7SUFBUSxPQUFSQTs7O09BQ0gsT0FsSm5CZzZCLGdCQWlKa0JseUI7OztPQUVDLE9BbkpuQmt5QixnQkFpSmtCbHlCOzs7Ozs7O09BSWhCLE9BckpGa3lCLGdCQWlKa0JseUI7ZUFLK0I7O0dBQUU7WUFZbkRrekIsa0JBQWtCbHpCLEtBQUk0eUIsVUFBUzE2QixPQUFNSixLQUFJRSxNQUFLa0c7SUFsSzlDZzBCLGdCQWtLa0JseUI7SUFwRGxCMnlCLG9CQW9Ea0IzeUIsS0FBSTR5QjtJQWpCdEJLLGtCQWlCa0JqekIsS0FBYTlIO0lBeEMvQjQ2QixlQXdDa0I5eUIsS0FBbUJsSTtJQTdCckNrN0IsaUJBNkJrQmh6QixLQUF1QmhJO0lBbEt6Q2s2QixnQkFrS2tCbHlCLEtBQTRCOUI7SUFPNUIsT0F6S2xCZzBCLGdCQWtLa0JseUIsS0EvSWxCc3lCLGNBK0krQnA2QjtHQU9RO1lBS3ZDaTdCLGtCQUFrQm56QixLQUFJbEg7SUFDeEIsT0FEd0JBOzs7T0E5S3RCbzVCLGdCQThLa0JseUI7ZUE5S2xCa3lCLGdCQThLa0JseUI7O1lBQUlsSCxVQU1WLE9BcExabzVCLGdCQThLa0JseUI7SUFRYTtHQUFFO1lBYWpDb3pCLHlCQUF5QmxEO0lBQWlCLFVBQWpCQTtZQUFBQTs7UUFDRDs7UUFDQTs7UUFFQTs7UUFDQTs7UUFDQTs7UUFFQTtnQkFDQTs7V0FUQ0E7O1dBR2xCbDNCLE1BSGtCazNCLG1CQUdELE9BQWpCbDNCOztXQUlLcTZCLFFBUGFuRCxtQkFPRCxPQUFabUQ7O09BR1UsSUFBWG4xQixJQVZjZ3lCLG1CQVVILE9BQUEsZ0NBQVhoeUI7T0FBVyxPQUFBOztHQUFpQjtZQUt2Q28xQixvQkFBb0J0ekIsS0FBSS9HO0lBQU0sY0FBTkE7Y0E1TXhCazVCLGtCQTRNb0JueUI7Y0FsTnBCa3lCLGdCQWtOb0JseUIsS0FBSS9HO0dBRUk7WUFHNUJzNkIsc0JBQXNCdnpCLEtBQUloSDtJQUM1QixpQ0FENEJBLGNBQzVCOztTQUFBb0U7O01BTkVrMkIsb0JBS3NCdHpCLEtBRUUsZ0JBRkVoSCxLQUM1Qm9FO01BQ0UsV0FERkE7a0JBQUFBO1VBQUFBOzs7O0dBRUk7WUFNRW8yQixhQUVKeHpCLEtBQUk5RztJQUFTLElBQVRFLFVBQUFGO0lBQVM7ZUFBVEUsc0JBeUJZO1lBekJaQTs7WUFBQXE2QixVQUFBcjZCO1FBNU5KKzRCLGtCQTROQW55QjtZQUFJNUcsVUFBQXE2Qjs7O1lBQUFDLFVBQUF0NkI7UUE1TkorNEIsa0JBNE5BbnlCO1lBQUk1RyxVQUFBczZCOzs7WUFBQUMsVUFBQXY2QjtRQTVOSis0QixrQkE0TkFueUI7WUFBSTVHLFVBQUF1NkI7OztZQUFBQyxVQUFBeDZCO1FBNU5KKzRCLGtCQTROQW55QjtZQUFJNUcsVUFBQXc2Qjs7O1lBQUFDLFVBQUF6NkI7UUE1TkorNEIsa0JBNE5BbnlCO1lBQUk1RyxVQUFBeTZCOzs7WUFBQUMsVUFBQTE2QjtRQTVOSis0QixrQkE0TkFueUI7WUFBSTVHLFVBQUEwNkI7OztZQUFBQyxVQUFBMzZCO1FBNU5KKzRCLGtCQTROQW55QjtZQUFJNUcsVUFBQTI2Qjs7O1lBQUFDLFVBQUE1NkI7UUE1TkorNEIsa0JBNE5BbnlCO1lBQUk1RyxVQUFBNDZCOzs7WUFBQUMsVUFBQTc2QixZQWtCVzg2QixZQWxCWDk2QjtRQTVOSis0QixrQkE0TkFueUI7UUFGSXd6QixhQUVKeHpCLEtBa0JlazBCO1FBOU9mL0Isa0JBNE5BbnlCO1lBQUk1RyxVQUFBNjZCOzs7WUFBQUUsV0FBQS82QixZQXFCYWc3QixjQXJCYmg3QjtRQTVOSis0QixrQkE0TkFueUI7UUFGSXd6QixhQUVKeHpCLEtBcUJpQm8wQjtRQWpQakJqQyxrQkE0TkFueUI7WUFBSTVHLFVBQUErNkI7OztZQUFBRSxXQUFBajdCO1FBNU5KKzRCLGtCQTROQW55QjtZQUFJNUcsVUFBQWk3Qjs7O1lBQUFDLFdBQUFsN0I7UUE1TkorNEIsa0JBNE5BbnlCO1lBQUk1RyxVQUFBazdCOzs7WUFBQUMsV0FBQW43QjtRQTVOSis0QixrQkE0TkFueUI7WUFBSTVHLFVBQUFtN0I7OztZQUFBQyxXQUFBcDdCO1FBNU5KKzRCLGtCQTROQW55QjtZQUFJNUcsVUFBQW83Qjs7O1lBQUFDLFdBQUFyN0I7UUE1TkorNEIsa0JBNE5BbnlCO1lBQUk1RyxVQUFBcTdCOzs7R0F5QmM7WUFJZEM7SUFBQSxZQUdXO1FBQ0hqNUI7ZUFKUmk1QixvQkFJUWo1QjtHQUE4QjtZQWtIMUNrNUIsY0FBYzVEO0lBQ04sSUFoSEcvd0IsTUFwUlg0eEI7YUFxUk1nRCxRQUVKN0QsS0FBSTZCO0tBQVksSUFBaEJpQyxRQUFBOUQsS0FBSStELGFBQUFsQztLQUFZO2dCQUFoQmlDLG9CQXFHaUI7YUFyR2pCQTs7YUFBQXYrQixPQUFBdStCO1NBelFGM0MsZ0JBc1FXbHlCO1NBeEpYMnlCLG9CQXdKVzN5QixLQUdMODBCO1NBelFONUMsZ0JBc1FXbHlCO2FBR1Q2MEIsUUFBQXYrQixNQUFJdytCOzs7YUFBSnYrQixTQUFBcytCO1NBelFGM0MsZ0JBc1FXbHlCO1NBeEpYMnlCLG9CQXdKVzN5QixLQUdMODBCO1NBelFONUMsZ0JBc1FXbHlCO2FBR1Q2MEIsUUFBQXQrQixRQUFJdStCOzs7YUFBSnQrQixTQUFBcStCLFVBQ1EvOEIsTUFEUis4QjtTQXpRRjNDLGdCQXNRV2x5QjtTQXhKWDJ5QixvQkF3SlczeUIsS0FHTDgwQjtTQS9JTmhDLGVBNElXOXlCLEtBSURsSTtTQTFRVm82QixnQkFzUVdseUI7YUFHVDYwQixRQUFBcitCLFFBQUlzK0I7OzthQUFKcitCLFNBQUFvK0IsVUFLYTk4QixRQUxiODhCO1NBelFGM0MsZ0JBc1FXbHlCO1NBeEpYMnlCLG9CQXdKVzN5QixLQUdMODBCO1NBL0lOaEMsZUE0SVc5eUIsS0FRSWpJO1NBOVFmbTZCLGdCQXNRV2x5QjthQUdUNjBCLFFBQUFwK0IsUUFBSXErQjs7OztVQUFKcCtCLFNBQUFtK0I7VUFoSG9DNzhCLE9BZ0hwQzY4QjtVQWhIZ0M1OEIsUUFnSGhDNDhCO1VBaEgwQjM4QixRQWdIMUIyOEI7U0F6UUYzQyxnQkFzUVdseUI7U0F4SlgyeUIsb0JBd0pXM3lCLEtBR0w4MEI7U0F4SE43QixrQkFxSFdqekIsS0E3R2lCOUg7U0EvQjVCNDZCLGVBNElXOXlCLEtBN0d1Qi9IO1NBcEJsQys2QixpQkFpSVdoekIsS0E3RzJCaEk7U0F6SnRDazZCLGdCQXNRV2x5QixLQW5QWHN5QixjQXNJNEJwNkI7YUFnSDFCMjhCLFFBQUFuK0IsUUFBSW8rQjs7OztVQUFKbitCLFNBQUFrK0I7VUFhbUIxOEIsU0FibkIwOEI7VUFhY3o4QixRQWJkeThCO1VBYU94OEIsVUFiUHc4QjtTQXZHRjNCLGtCQW9HV2x6QixLQUdMODBCLFlBYUd6OEIsU0FBT0QsT0FBS0Q7YUFibkIwOEIsUUFBQWwrQixRQUFJbStCOzs7O1VBQUpsK0IsU0FBQWkrQjtVQWdCdUJ2OEIsU0FoQnZCdThCO1VBZ0JrQnQ4QixRQWhCbEJzOEI7VUFnQldyOEIsVUFoQlhxOEI7U0F2R0YzQixrQkFvR1dsekIsS0FHTDgwQixZQWdCT3Q4QixTQUFPRCxPQUFLRDthQWhCdkJ1OEIsUUFBQWorQixRQUFJaytCOzs7O1VBQUpqK0IsU0FBQWcrQjtVQW1CbUJwOEIsU0FuQm5CbzhCO1VBbUJjbjhCLFFBbkJkbThCO1VBbUJPbDhCLFVBbkJQazhCO1NBdkdGM0Isa0JBb0dXbHpCLEtBR0w4MEIsWUFtQkduOEIsU0FBT0QsT0FBS0Q7YUFuQm5CbzhCLFFBQUFoK0IsUUFBSWkrQjs7OztVQUFKaCtCLFNBQUErOUI7VUFoRnNDajhCLFNBZ0Z0Q2k4QjtVQWhGa0NoOEIsUUFnRmxDZzhCO1VBaEY0Qi83QixRQWdGNUIrN0I7U0F6UUYzQyxnQkFzUVdseUI7U0F4SlgyeUIsb0JBd0pXM3lCLEtBR0w4MEI7U0EzRk4zQixrQkF3RlduekIsS0E3RW1CbEg7U0EvRDlCZzZCLGVBNElXOXlCLEtBN0V5Qm5IO1NBcERwQ202QixpQkFpSVdoekIsS0E3RTZCcEg7U0F6THhDczVCLGdCQXNRV2x5QixLQTVPWHV5QixpQkErSjhCejVCO2FBZ0Y1Qis3QixRQUFBLzlCLFFBQUlnK0I7OzthQUFKOTlCLFNBQUE2OUIsVUFnQ005N0IsUUFoQ044N0I7U0F6UUYzQyxnQkFzUVdseUI7U0F4SlgyeUIsb0JBd0pXM3lCLEtBR0w4MEI7U0EvSU5oQyxlQTRJVzl5QixLQW1DSGpIO1NBelNSbTVCLGdCQXNRV2x5QjthQUdUNjBCLFFBQUE3OUIsUUFBSTg5Qjs7O2FBQUo1OUIsU0FBQTI5QjtTQW5RRjFDLGtCQWdRV255QjthQUdUNjBCLFFBQUEzOUI7OzthQUFBQyxVQUFBMDlCLFVBdURnQjc3QixNQXZEaEI2N0I7U0FsREZ0QixzQkErQ1d2ekIsS0EwRE9oSDthQXZEaEI2N0IsUUFBQTE5Qjs7O2FBQUFDLFVBQUF5OUIsVUEwRGM1N0IsTUExRGQ0N0I7U0F2REZ2QixvQkFvRFd0ekIsS0E2REsvRzthQTFEZDQ3QixRQUFBejlCOzs7YUFBQUMsVUFBQXc5QixVQThEcUIzN0IsUUE5RHJCMjdCLFVBOERZakUsVUE5RFppRTtTQXpRRjNDLGdCQXNRV2x5QjtTQXhKWDJ5QixvQkF3SlczeUIsS0FHTDgwQjtTQXRKTmpDLGVBbUpXN3lCLEtBaUVHNHdCO1NBdlVkc0IsZ0JBc1FXbHlCO1NBdENQd3pCLGFBc0NPeHpCLEtBaUVZOUc7U0F2VXZCZzVCLGdCQXNRV2x5QjtTQXRRWGt5QixnQkFzUVdseUI7YUFHVDYwQixRQUFBeDlCLFNBQUl5OUI7OzthQUFKeDlCLFVBQUF1OUIsVUFtRXVCejdCLFVBbkV2Qnk3QixVQW1FYzdELFlBbkVkNkQ7U0F6UUYzQyxnQkFzUVdseUI7U0F4SlgyeUIsb0JBd0pXM3lCLEtBR0w4MEI7U0F0Sk5qQyxlQW1KVzd5QixLQXNFS2d4QjtTQTVVaEJrQixnQkFzUVdseUI7U0F0Q1B3ekIsYUFzQ094ekIsS0FzRWM1RztTQTVVekI4NEIsZ0JBc1FXbHlCO1NBdFFYa3lCLGdCQXNRV2x5QjthQUdUNjBCLFFBQUF2OUIsU0FBSXc5Qjs7O2FBQUp4N0IsVUFBQXU3QjtTQXpRRjNDLGdCQXNRV2x5QjtTQXhKWDJ5QixvQkF3SlczeUIsS0FHTDgwQjtTQXpRTjVDLGdCQXNRV2x5QjthQUdUNjBCLFFBQUF2N0IsU0FBSXc3Qjs7O2FBQUp2N0IsVUFBQXM3QjtTQXpRRjNDLGdCQXNRV2x5QjtTQXhKWDJ5QixvQkF3SlczeUIsS0FHTDgwQjtTQXpRTjVDLGdCQXNRV2x5QjthQUdUNjBCLFFBQUF0N0IsU0FBSXU3Qjs7O2FBQUp0N0IsVUFBQXE3QixVQXlGZ0JwN0IsYUF6RmhCbzdCO1NBbERGdEIsc0JBK0NXdnpCLEtBbkVYb3pCLHlCQStKa0IzNUI7YUF6RmhCbzdCLFFBQUFyN0I7OzthQTRGNEJFLFVBNUY1Qm03QixVQTRGZ0JsN0IsYUE1RmhCazdCO1NBNkZBLFNBRGdCbDdCO2NBRU8wNUIsUUFGUDE1QjtVQS9WbEJ3NEIsa0JBZ1FXbnlCO1VBaFFYbXlCLGtCQWdRV255QixLQWlHY3F6Qjs7O2NBRUEwQixRQUpQcDdCO1VBL1ZsQnc0QixrQkFnUVdueUI7VUFoUVhteUIsa0JBZ1FXbnlCLEtBbUdjKzBCOzthQWhHdkJGLFFBNEY0Qm43Qjs7O2FBNUY1QkUsVUFBQWk3QjtTQXpRRjNDLGdCQXNRV2x5QjtTQXhKWDJ5QixvQkF3SlczeUIsS0FHTDgwQjtTQXpRTjVDLGdCQXNRV2x5QjthQUdUNjBCLFFBQUFqN0IsU0FBSWs3Qjs7O2FBQUpqN0IsVUFBQWc3QixVQTlOa0IvNkIsV0E4TmxCKzZCLFVBeUVlOTZCLFlBekVmODZCO1NBelFGM0MsZ0JBc1FXbHlCO1NBeEpYMnlCLG9CQXdKVzN5QixLQUdMODBCO1NBdEpOakMsZUFtSlc3eUIsS0E0RU1qRzs7VUExUGZ3RztxQkFBV1AsS0FBSTVDO2FBQVUsSUFHekJjLElBSHlCLHVCQUFWZDsyQkFHZmM7d0JBM0ZGZzBCLGdCQXdGYWx5QixVQXhGYmt5QixnQkF3RmFseUI7OzJCQUdYOUI7MEJBM0ZGZzBCLGdCQXdGYWx5QixVQXhGYmt5QixnQkF3RmFseUI7eUJBeEZia3lCLGdCQXdGYWx5QixLQUdYOUI7WUFBNkI7U0EzRi9CZzBCLGdCQXNRV2x5QjtTQXZLUjtVQWZRcEY7WUFoVFg4MUIsZUEyUW9CNTJCO2dCQTNDcEJvNEIsZ0JBc1FXbHlCLFVBL2VYd3dCLGFBb1JvQjEyQjtlQUFBQTthQXFDVGs3QixRQUFBcDZCO2tCQW5DUHE2QixTQUFTLzJCO1VBQ1g7V0FBWWczQixRQUFnQywyQkFEakNoM0I7V0FDUGkzQixTQUFzQiwyQkFEZmozQjtXQUVYLE9BL1FGd3lCLGVBZ1RXc0UsT0FuQ0U5MkI7VUFFWDtXQUNRO1lBQUEsT0FoUlZ3eUIsZUFnVFdzRSxPQWxDTEc7WUFFSSxjQWhSVnpFLGVBZ1RXc0UsT0FsQ0dFOzs7O1VBRXlCO1NBQXlCO1NBQzdELEdBSkNELGNBN0NKL0MsZ0JBc1FXbHlCOzs7Ozs7OztnQkE5TU81QztZQUhsQjtnQkFHa0JBO2FBRmIsR0F0UkxzekIsZUFnVFc5MUIsS0ExQmEsdUJBRU53QztjQUNaLGVBQUEsdUJBRFlBOzs7OztlQUdILElBUEN1YyxNQUlFdmMsV0FBQUEsSUFKRnVjOzs7Y0FRVCxJQUNZMUgsTUFMRDdVO2NBTWYsR0E5UkhzekIsZUFnVFc5MUIsS0FsQlcsdUJBREhxWDtlQUVYLGlCQUFBLHVCQUZXQTs7Ozs7O3NCQTdSbkJ5ZSxlQWdUVzkxQixLQWJnQyx1QkFOeEJxWDtnQkEyQmpCMVIsV0E4S1NQLEtBek1RaVM7Z0JBT2YsSUFoQll3SCxNQVNHeEgsYUFMRDdVLElBSkZxYzs7O2VBa0JELEdBdFNmaVgsZUFnVFc5MUIsS0FWd0IsdUJBVGhCcVg7Z0JBY2YsSUFLYWQsSUFuQkVjLGFBbUJKMkgsTUFuQkkzSCxhQW1CRnlILE1BQUF2STtnQkFDakI7NEJBRGlCdUk7aUJBQ0MsS0FqVGxCZ1gsZUFnVFc5MUIsS0FDMkIsdUJBRHJCOGU7aUJBT2YsSUFQZTBiLE1BQUExYixhQUFBQSxNQUFBMGI7O2dCQVFmNzBCLFdBOEtTUCxLQXRMSTRaO2dCQVFiclosV0E4S1NQO2dCQTlLVE8sV0E4S1NQLEtBdExNMFo7bUJBQUFBO2dCQUtDLElBakNGMFYsTUE0QkMxVixhQXhCQ3RjLElBSkZneUI7OztnQkFvQ2Q3dUIsV0E4S1NQLEtBek1RaVM7Z0JBMkJqQjFSLFdBOEtTUCxLQXpNUWlTO2dCQVdmLElBcEJZc0gsTUFTR3RILGFBTEQ3VSxJQUpGbWM7Ozs7ZUFvQ2RoWixXQThLU1AsS0F6TVFpUztlQWdCakIsSUF6QmNvSCxNQVNHcEgsYUFMRDdVLElBSkZpYzs7OztjQUdULElBSFNoYyxNQUlFRCxXQUFBQSxJQUpGQzs7OztXQW9DZGtELFdBOEtTUDs7O1VBOUtUTyxXQThLU1A7VUE5S1RPLFdBOEtTUDs7O1NBbk5SLEdBTkNpMUIsY0E3Q0ovQyxnQkFzUVdseUI7U0F0UVhreUIsZ0JBc1FXbHlCO2FBR1Q2MEIsUUFBQWg3QixTQUFJaTdCOzs7YUFBSjk2QixVQUFBNjZCLFVBdE9jNTZCLFVBc09kNDZCO1NBelFGM0MsZ0JBc1FXbHlCO1NBeEpYMnlCLG9CQXdKVzN5QixLQUdMODBCO2dCQXRPVTc2Qjs7Ozs7OztTQW5DaEJpNEIsZ0JBc1FXbHlCO2FBR1Q2MEIsUUFBQTc2QixTQUFJODZCOzs7YUFBSjU2QixVQUFBMjZCO1NBelFGM0MsZ0JBc1FXbHlCO1NBeEpYMnlCLG9CQXdKVzN5QixLQUdMODBCO1NBbEROdkIsc0JBK0NXdnpCO2FBR1Q2MEIsUUFBQTM2QixTQUFJNDZCOzs7O1VBcUZnQjM2QixVQXJGcEIwNkI7VUFxRmV6NkIsTUFyRmZ5NkI7VUFBQVEsUUE5Y0Z2RSwrQkFtaUJpQjEyQixLQUFLRDtVQXJGcEIwNkIsUUFBQVE7VUFBSVA7OztTQTJDVTtVQURJejZCLFVBMUNsQnc2QjtVQTBDUXQ2QixRQTFDUnM2QjtVQTJDYyxPQXJEWkgsb0JBb0RNbjZCOzs7Y0FDUjgwQjs7V0FwVEY2QyxnQkFzUVdseUI7V0F4SlgyeUIsb0JBd0pXM3lCLEtBR0w4MEI7V0F6UU41QyxnQkFzUVdseUI7V0FnRFAsV0FGRnF2Qjt1QkFBQUE7ZUFBQUE7OzthQTNDQXdGLFFBMENrQng2QixTQTFDZHk2Qjs7O0lBcUdlO0lBdkdmRixRQThHUTdEO0lBRWhCLE9BMVdFc0IsZ0JBeVBXcnlCO0dBa0hNO1lBV2JzMUI7SUFBQSw4QkF1Qlk7OztXQWpCUmgvQixpQkFBUSxXQU5aZy9CLEtBTUloL0I7O1dBT0VDLG1CQUFRLFdBYmQrK0IsS0FhTS8rQjs7V0FOSEMsbUJBQVEsV0FQWDgrQixLQU9HOStCOztXQUNFQyxtQkFBUSxXQVJiNitCLEtBUUs3K0I7O1dBRUlDLG1CQUFRLFdBVmpCNCtCLEtBVVM1K0I7O1dBREpDLG1CQUFRLFdBVGIyK0IsS0FTSzMrQjs7V0FFQUMsbUJBQVEsV0FYYjArQixLQVdLMStCOztXQUNEQyxtQkFBUSxXQVpaeStCLEtBWUl6K0I7O1dBT1dDLG1CQUFKQyxlQUNmLFdBRGVBLElBbkJYdStCLEtBbUJleCtCOztXQUVRRSxtQkFBTFUsZ0JBQUxUO09BQ2pCLFdBRHNCUyxLQUFMVCxLQXJCYnErQixLQXFCdUJ0K0I7O1dBTmxCRSxtQkFBUSxZQWZibytCLEtBZUtwK0I7O1dBREFDLG9CQUFRLFlBZGJtK0IsS0FjS24rQjs7V0FFRkMsb0JBQVEsWUFoQlhrK0IsS0FnQkdsK0I7O1dBQ0dDLG9CQUFRLFlBakJkaStCLEtBaUJNaitCO21CQUNRQyxvQkFBUSxZQWxCdEJnK0IsS0FrQmNoK0I7O0dBS1U7WUFFeEJpK0I7SUFBQTtLQVNKOzZCQUFhLE9BQUk7NkJBQ0osT0FBSTs2QkFDSixPQUFJOzZCQUNKLE9BQUk7OztPQUVJO1FBRGJqL0I7UUFDYSxRQWRqQmkvQixjQWFJai9CO1FBQ1FrL0I7UUFBSkM7UUFBSkM7UUFBSkM7T0FDSjsrQkFESUEsT0FDK0IsT0FBSTsrQkFEL0JELE9BRTJCLE9BQUk7ZUFGM0JEO2VBQUlEOztPQUtLO1FBRFhqL0I7UUFDVyxVQW5CakJnL0IsY0FrQk1oL0I7UUFDTXEvQjtRQUFKQztRQUFKQztRQUFKQztPQUNKOytCQURJQSxTQUMrQixPQUFJOytCQUQvQkQsU0FFMkIsT0FBSTtlQUYzQkQ7ZUFBSUQ7O09BS0s7UUFEZHAvQjtRQUNjLFVBeEJqQisrQixjQXVCRy8rQjtRQUNTdy9CO1FBQUpDO1FBQUpDO1FBQUpDO09BQ0o7K0JBRElBLFNBQytCLE9BQUk7K0JBRC9CRCxTQUUyQixPQUFJO2VBRjNCRDtlQUFJRDs7T0FLSztRQURadi9CO1FBQ1ksVUE3QmpCOCtCLGNBNEJLOStCO1FBQ08yL0I7UUFBSkM7UUFBSkM7UUFBSkM7T0FDSjsrQkFESUEsU0FDK0IsT0FBSTsrQkFEL0JELFNBRTJCLE9BQUk7ZUFGM0JEO2VBQUlEOztPQVVLO1FBRFIxL0I7UUFDUSxVQXZDakI2K0IsY0FzQ1M3K0I7UUFDRzgvQjtRQUFKQztRQUFKQztRQUFKQztPQUNKOytCQURJQSxTQUMrQixPQUFJOytCQUQvQkQsU0FFMkIsT0FBSTtlQUYzQkQ7ZUFBSUQ7O09BTEs7UUFEWjcvQjtRQUNZLFVBbENqQjQrQixjQWlDSzUrQjtRQUNPaWdDO1FBQUpDO1FBQUpDO1FBQUpDO09BQ0o7K0JBRElBLFNBQytCLE9BQUk7K0JBRC9CRCxTQUUyQixPQUFJO2VBRjNCRDtlQUFJRDs7T0FVSztRQURaaGdDO1FBQ1ksVUE1Q2pCMitCLGNBMkNLMytCO1FBQ09vZ0M7UUFBSkM7UUFBSkM7UUFBSkM7T0FDSjsrQkFESUEsU0FDK0IsT0FBSTsrQkFEL0JELFNBRTJCLE9BQUk7ZUFGM0JEO2VBQUlEOztPQUtLO1FBRGJuZ0M7UUFDYSxVQWpEakIwK0IsY0FnREkxK0I7UUFDUXVnQztRQUFKQztRQUFKQztRQUFKQztPQUNKOytCQURJQSxTQUMrQixPQUFJOytCQUQvQkQsU0FFMkIsT0FBSTtlQUYzQkQ7ZUFBSUQ7O09BaUNLO1FBRER0Z0M7UUFDQyxVQWxGakJ5K0IsY0FpRmdCeitCO1FBQ0owZ0M7UUFBSkM7UUFBSkM7UUFBSkM7T0FDSjsrQkFESUEsU0FDK0IsT0FBSTsrQkFEL0JELFNBRTJCLE9BQUk7ZUFGM0JEO2VBQUlEOztPQUtLO1FBRE14Z0M7UUFBTFU7UUFBTFQ7UUFDSSxVQXZGakJzK0IsY0FzRnVCditCO1FBQ1g0Z0M7UUFBSkM7UUFBSkM7UUFBSkM7UUFDQWhoQyxLQXNCSmloQyxNQXZJSTFDLEtBK0dhcitCLE1BQUtTO1FBR0QsVUF6RmpCNjlCLGNBd0ZBeCtCO1FBQ1lraEM7UUFBSkM7UUFBSkM7UUFBSkM7T0FDSjsrQkFISUwsU0FFQUssT0FDcUQsT0FBSTsrQkFEckRELE9BRkFMLFNBSWlELE9BQUk7K0JBSmpERCxTQUVBSyxPQUc2QyxPQUFJOytCQUg3Q0QsT0FGQUwsU0FNeUMsT0FBSTs7T0FqQ3hDO1FBRFoxZ0M7UUFDWSxXQTVEakJxK0IsY0EyREtyK0I7UUFDT21oQztRQUFKQztRQUFKQztRQUFKQztPQUNKOytCQURJQSxTQUMrQixPQUFJOytCQUQvQkQsU0FFMkIsT0FBSTtlQUYzQkQ7ZUFBSUQ7O09BTEs7UUFEWmxoQztRQUNZLFdBdkRqQm8rQixjQXNES3ArQjtRQUNPc2hDO1FBQUpDO1FBQUpDO1FBQUpDO09BQ0o7K0JBRElBLFVBQytCLE9BQUk7K0JBRC9CRCxVQUUyQixPQUFJO2VBRjNCRDtlQUFJRDs7T0FVSztRQURkcmhDO1FBQ2MsV0FqRWpCbStCLGNBZ0VHbitCO1FBQ1N5aEM7UUFBSkM7UUFBSkM7UUFBSkM7T0FDSjsrQkFESUEsVUFDK0IsT0FBSTsrQkFEL0JELFVBRTJCLE9BQUk7ZUFGM0JEO2VBQUlEOztPQUtLO1FBRFh4aEM7UUFDVyxXQXRFakJrK0IsY0FxRU1sK0I7UUFDTTRoQztRQUFKQztRQUFKQztRQUFKQztPQUNKOytCQURJQSxVQUMrQixPQUFJOytCQUQvQkQsVUFFMkIsT0FBSTsrQkFGM0JELFVBR3VCLE9BQUk7K0JBSHZCRCxVQUltQixPQUFJOztPQUVsQjtRQURIM2hDO1FBQ0csV0E1RWpCaStCLGNBMkVjaitCO1FBQ0YraEM7UUFBSkM7UUFBSkM7UUFBSkM7T0FDSjsrQkFESUEsVUFDK0IsT0FBSTsrQkFEL0JELFVBRTJCLE9BQUk7K0JBRjNCRCxVQUd1QixPQUFJOytCQUh2QkQsVUFJbUIsT0FBSTs7R0FhdUI7WUFpQjlEckIsTUFXRS9nQyxLQUFJUztJQUFPOzs7Ozs7Ozs7Ozs7OztxQkFBWFQ7bUJBQUFBOzttQkFDTXdpQyxRQUROeGlDO3lCQUFJUzt1QkFBQUE7O3VCQUNpQmdpQyxRQURqQmhpQyxRQUMwQixXQVpoQ3NnQyxNQVlReUIsT0FBZUM7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQkFDYkMsVUFGUjFpQzt5QkFBSVM7dUJBQUFBOzt1QkFFcUJraUMsVUFGckJsaUMsUUFFOEIsV0FicENzZ0MsTUFhVTJCLFNBQWlCQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CQUVwQkMsVUFKTDVpQzt5QkFBSVM7dUJBQUFBOzt1QkFJZW9pQyxVQUpmcGlDLFFBSXdCLFdBZjlCc2dDLE1BZU82QixTQUFjQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CQUNaQyxVQUxQOWlDO3lCQUFJUzt1QkFBQUE7O3VCQUttQnNpQyxVQUxuQnRpQyxRQUs0QixXQWhCbENzZ0MsTUFnQlMrQixTQUFnQkM7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQkFFWkMsVUFQWGhqQzt5QkFBSVM7dUJBQUFBOzt1QkFPMkJ3aUMsVUFQM0J4aUMsUUFPb0MsV0FsQjFDc2dDLE1Ba0JhaUMsU0FBb0JDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7bUJBRHhCQyxVQU5QbGpDO3lCQUFJUzt1QkFBQUE7O3VCQU1tQjBpQyxVQU5uQjFpQyxRQU00QixXQWpCbENzZ0MsTUFpQlNtQyxTQUFnQkM7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQkFFaEJDLFVBUlBwakM7eUJBQUlTO3VCQUFBQTs7dUJBUW1CNGlDLFVBUm5CNWlDLFFBUTRCLFdBbkJsQ3NnQyxNQW1CU3FDLFNBQWdCQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CQUxqQkMsVUFITnRqQzt5QkFBSVM7dUJBQUFBOzt1QkFHaUI4aUMsVUFIakI5aUMsUUFHMEIsV0FkaENzZ0MsTUFjUXVDLFNBQWVDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7bUJBNEJIQyxVQS9CbEJ4akMsUUErQmF5akMsUUEvQmJ6akM7eUJBQUlTO3VCQUFBQTs7bUJBZ0N3QjtvQkFEa0JpakMsVUEvQjFDampDO29CQStCcUNrakMsUUEvQnJDbGpDO29CQWdDd0IsT0EzQzlCc2dDLE1BMENvQnlDLFNBQTRCRTttQkFDaEQsV0EzQ0EzQyxNQTBDZTBDLE9BQTRCRTs7Ozs7Ozs7Ozs7O2VBRXJCLE1BQUE7O21CQUdPQyxVQXBDM0I1akMsUUFvQ3FCNmpDLE9BcENyQjdqQyxRQW9DZThqQyxPQXBDZjlqQzt5QkFBSVM7dUJBQUFBOzs7O21CQXNDRztvQkFEb0JzakMsVUFyQ3ZCdGpDO29CQXFDaUJ1akMsT0FyQ2pCdmpDO29CQXFDV3dqQyxPQXJDWHhqQztvQkFzQ0ZYLEtBakRKaWhDLE1BdklJMUMsS0FzTG1Cd0YsT0FDTkk7b0JBRUUsUUFoS2YzRixjQStKQXgrQjtvQkFDVW9rQztvQkFBUEM7bUJBQUFBO21CQUFPRDttQkFHZCxXQU5pQkosTUFDTUUsTUFoRHZCakQsTUErQzZCNkMsU0FDQUc7Ozs7Ozs7Ozs7OztlQU1MLE1BQUE7O21CQWpDZkssVUFWUHBrQzt5QkFBSVMsMkJBQUFBO29CQVVtQjRqQyxVQVZuQjVqQztnQkFVNEIsWUFyQmxDc2dDLE1BcUJTcUQsU0FBZ0JDOztlQUNSLE1BQUE7O21CQUdSQyxXQWRQdGtDO3lCQUFJUzt1QkFBQUE7Ozs7dUJBY21COGpDLFdBZG5COWpDO21CQWM0QixZQXpCbENzZ0MsTUF5QlN1RCxVQUFnQkM7O2VBQ1IsTUFBQTs7bUJBR1ZDLFdBbEJMeGtDO3lCQUFJUzt1QkFBQUE7Ozs7Ozt1QkFrQmVna0MsV0FsQmZoa0M7bUJBa0J3QixZQTdCOUJzZ0MsTUE2Qk95RCxVQUFjQzs7ZUFDTixNQUFBOzttQkFHTEMsV0F0QlIxa0M7eUJBQUlTO3VCQUFBQTs7Ozs7Ozs7dUJBc0JxQmtrQyxXQXRCckJsa0M7bUJBc0I4QixZQWpDcENzZ0MsTUFpQ1UyRCxVQUFpQkM7O2VBQ1QsTUFBQTs7bUJBR0FDLFdBMUJoQjVrQzt5QkFBSVM7dUJBQUFBOzs7Ozs7Ozs7O3VCQTBCcUNva0MsV0ExQnJDcGtDO21CQTJCTixZQXRDQXNnQyxNQXFDa0I2RCxVQUF5QkM7O2VBRWpCLE1BQUE7O1lBb0JQLE1BQUE7O3FCQWhEYnBrQyxrQkE4Q3dCO2tCQTlDeEJBOzs7Ozs7Ozs7Ozs7Ozs7Y0ErQ2EsTUFBQTs7O1VBSEssTUFBQTs7U0FWRixNQUFBOztRQUxJLE1BQUE7O09BTFIsTUFBQTs7TUFKSCxNQUFBOztLQUpFLE1BQUE7O0lBSkEsTUFBQTtHQW9DYztZQVUvQnFrQyxhQUVBN2lDO0lBQVMsSUFBVEUsVUFBQUY7SUFBUztlQUFURSxzQkFxRDhCO1lBckQ5QkE7O1lBMkJLOUMsT0EzQkw4QyxZQTJCOEIsV0E3QjlCMmlDLGFBNkJLemxDOztZQUNLQyxTQTVCVjZDLFlBNEI4QixXQTlCOUIyaUMsYUE4QlV4bEM7O1lBM0JHQyxTQURiNEMsWUFDUXRCLE1BRFJzQjtRQUUyQixPQXFGM0I0aUMsdUJBdEZRbGtDLFNBSFJpa0MsYUFHYXZsQzs7WUFFS0MsU0FIbEIyQyxZQUdhckIsUUFIYnFCO1FBSTJCLE9BbUYzQjRpQyx1QkFwRmFqa0MsV0FMYmdrQyxhQUtrQnRsQzs7UUFJSjtTQURLQyxTQU5uQjBDO1NBTWFwQixPQU5ib0I7U0FNUW5CLFFBTlJtQjtTQU9JNmlDLFVBVEpGLGFBUW1CcmxDO1NBRWZ3bEMsVUF1RkpDLHlCQXpGYW5rQyxVQUNUaWtDO1FBRUosT0E4RUFELHVCQWpGUS9qQyxPQUVKaWtDOztRQUdVO1NBRE92bEMsU0FWckJ5QztTQVVlakIsU0FWZmlCO1NBVVVoQixRQVZWZ0I7U0FXSWdqQyxZQWJKTCxhQVlxQnBsQztTQUVqQjBsQyxZQW1GSkYseUJBckZlaGtDLFlBQ1hpa0M7UUFFSixPQTBFQUosdUJBN0VVNWpDLE9BRU5pa0M7O1FBR1U7U0FEV3psQyxTQWR6QndDO1NBY21CZCxTQWRuQmM7U0FjY2IsUUFkZGE7U0FlSWtqQyxZQWpCSlAsYUFnQnlCbmxDO1NBRXJCMmxDLFlBK0VKSix5QkFqRm1CN2pDLFlBQ2Zna0M7UUFFSixPQXNFQU4sdUJBekVjempDLE9BRVZna0M7O1FBR1U7U0FETzFsQyxTQWxCckJ1QztTQWtCZVgsU0FsQmZXO1NBa0JVVixRQWxCVlU7U0FtQklvakMsWUFyQkpULGFBb0JxQmxsQztTQUVqQjRsQyxZQTJFSk4seUJBN0VlMWpDLFlBQ1grakM7UUFFSixPQWtFQVIsdUJBckVVdGpDLE9BRU4rakM7O1FBR1U7U0FETzNsQyxTQXRCckJzQztTQXNCZVIsU0F0QmZRO1NBc0JVUCxRQXRCVk87U0F1QklzakMsWUF6QkpYLGFBd0JxQmpsQztTQUVqQjZsQyxZQXVFSlIseUJBekVldmpDLFlBQ1g4akM7UUFFSixPQThEQVYsdUJBakVVbmpDLE9BRU44akM7O1lBS08zbEMsU0E3QlhvQyxZQTZCTUwsUUE3Qk5LO1FBOEI2QixPQXlEN0I0aUMsdUJBMURNampDLFdBL0JOZ2pDLGFBK0JXL2tDOztZQTdCWHk4QixVQUFBcjZCLFlBQUFBLFVBQUFxNkI7O1lBQUFDLFVBQUF0NkIsWUFBQUEsVUFBQXM2Qjs7WUFBQUMsVUFBQXY2QixZQUFBQSxVQUFBdTZCOztZQW9DbUJ6OEIsU0FwQ25Ca0MsWUFvQ2VyQyxLQXBDZnFDO1FBcUNBLFdBRGVyQyxJQXRDZmdsQyxhQXNDbUI3a0M7O1lBRUVDLFVBdENyQmlDLFlBc0NpQndqQyxPQXRDakJ4akM7UUF1Q0EsV0FEaUJ3akMsTUFBQUEsTUF4Q2pCYixhQXdDcUI1a0M7O1lBUGZDLFVBL0JOZ0MsWUErQjhCLFlBakM5QjJpQyxhQWlDTTNrQzs7WUFDQUMsVUFoQ04rQixZQWdDOEIsWUFsQzlCMmlDLGFBa0NNMWtDOztZQWhDTnU4QixVQUFBeDZCLFlBQUFBLFVBQUF3NkI7O1FBbURrRDtTQUR0QnQ4QixVQWxENUI4QjtTQVBBeWpDLGlCQU9BempDO1NBbURrRCxPQXJEbEQyaUMsYUFvRDRCemtDO2lCQXpENUJ1bEM7YUFDa0I5TCxNQURsQjhMLDZCQUtBZCxhQUprQmhMOzthQUNBOEQsUUFGbEJnSSw2QkFLQWQsYUFIa0JsSDtRQXdEZ0MsT0FBQTs7WUFqQjNDdjdCLFVBbENQRixZQWtDOEIsWUFwQzlCMmlDLGFBb0NPemlDOztZQVdjQyxVQTdDckJILFlBNkM4QixXQS9DOUIyaUMsYUErQ3FCeGlDOztZQUNBQyxVQTlDckJKLFlBOEM4QixXQWhEOUIyaUMsYUFnRHFCdmlDOztZQUNORSxVQS9DZk4sWUErQzhCLFdBakQ5QjJpQyxhQWlEZXJpQzs7WUFxQlhtNkIsVUFwRUp6NkIsWUFvRUFnQixNQXBFQWhCO2tCQW9FQWdCO2dCQUFBQTs7Z0JBcEVBaEIsVUFvRUl5NkI7O2dCQXBFSno2QixVQW9FSXk2Qjs7WUFhK0IsWUFuRm5Da0ksYUFzRUlsSTt3QkFwRUp6NkIsVUFvRUl5NkI7OztnQkFBSno1Qjs7Z0JBcEVBaEIsVUFvRUl5NkI7O2dCQXBFSno2QixVQW9FSXk2Qjs7Z0JBcEVKejZCLFVBb0VJeTZCOztnQkFwRUp6NkIsVUFvRUl5NkI7O2dCQXBFSno2QixVQW9FSXk2Qjs7Z0JBcEVKejZCLFVBb0VJeTZCOztnQkFwRUp6NkIsVUFvRUl5NkI7O2dCQXBFSno2QixVQW9FSXk2Qjs7Z0JBcEVKejZCLFVBb0VJeTZCOztZQVlrRCxJQUE3QkMsVUFaekIxNUIsUUFZc0QsT0FsRnREMmhDLGFBc0VJbEk7WUFZa0QsT0FBQSx3Q0FBN0JDOztnQkFoRnpCMTZCLFVBb0VJeTZCO3dCQXBFSno2QixVQW9FSXk2Qjs7OztZQW5DY2o2QixVQWpDbEJSLFlBaUNRbUIsUUFqQ1JuQjtRQWlDb0QsT0FzQnBEMGpDLGdCQXRCUXZpQyxPQW5DUndoQyxhQW1Da0JuaUM7OztHQW9Cd0I7WUFFMUNrakMsZ0JBR0F2aUMsT0FBTXJCO0lBQVMsS0FBZnFCLE9BQ2UsT0FEVHJCO1FBRU02akMsVUFGWnhpQztJQUVxQixZQUxyQnVpQyxnQkFLWUMsU0FGTjdqQztHQUVtRDtZQTJCekQ4aUMsdUJBRUVsa0MsS0FBSW9CO0lBQVMsY0FBYnBCLG1CQUFJb0IsY0FBSnBCLFNBQUlvQixZQUFBQTtHQUd5QjtZQUcvQmlqQyx5QkFFRW5rQyxNQUFLa0I7SUFBUyxjQUFkbEIsb0JBQUFBLFdBQUtrQixTQUFBQSxRQUFBQTtHQUcwQjtHQU1yQzs7O1lBS0k4akMsYUFHQWxsQyxLQUFJb0I7SUFBUyxVQUFicEIsa0JBQ2lCLGNBRGJvQjthQUFKcEI7U0FFb0JtbEMsSUFGcEJubEMsUUFFYTQ2QixRQUZiNTZCO0tBRTZCLGVBQWhCNDZCLE9BQU91SyxJQUZoQi9qQzs7Y0FBQUEsNEJBQUFBO1NBR3NCNUMsT0FIdEI0QyxVQUdRNjVCLFVBSFpqN0I7S0FHa0MsZUFBdEJpN0IsVUFBY3o4Qjs7SUFDckIsTUFBQTtHQUFtQjtZQUt4QjRtQyxhQUdBcGxDLEtBQUlFLE1BQUtrQjtJQUFxQixZQWY5QjhqQyxhQWVBbGxDLEtBQVNvQjtjQUFMbEI7U0FHcUN4QixtQkFBTDRCLGtCQUF0Qm1ULElBSFZ2VDtLQUlKLFdBRG9DSSxXQUF0Qm1ULElBQTJCL1U7O1NBSHJDd0I7U0FDa0N6QixtQkFBTDBCO0tBQ2pDLFdBRGlDQSxVQUFLMUI7Ozs7U0FJUUQsbUJBQVp5QjtLQUNsQyxXQURrQ0EsVUFBWXpCOztJQUVmLE1BQUE7R0FBbUI7WUFNOUM2bUMsWUFNRnBNLEtBQUk3M0I7SUFBZSxXQUlyQmtrQyxnQkFKRXJNLEtBQUk3M0I7O0tBRUQsTUFBQTtRQURVMjdCO0lBQXVCLE9BQXZCQTtHQUNTO1lBRXhCdUksZ0JBTUVyTSxLQTRJTXNNO0lBNUlPLFVBQWJ0TSxrQkFtSDJCLGNBeUJyQnNNO1dBNUlOdE07O2lCQTRJTXNNLDZCQUFBQTtRQTFJMkI7U0FEWkMsYUEySWZEO1NBM0lIRSxXQURIeE07U0FFaUMsUUFSbkNxTSxnQkFPS0csVUFBa0JEO1NBQ0Vwa0M7U0FBTjI3QjtRQUNuQixlQURtQkEsUUFBTTM3Qjs7OztpQkEwSWpCbWtDLDZCQUFBQTtRQXZJMkI7U0FEUEcsZUF3SXBCSDtTQXhJRUksYUFKUjFNO1NBS2lDLFVBWG5DcU0sZ0JBVVVLLFlBQWtCRDtTQUNIcGtDO1NBQU5pOEI7UUFDbkIsZUFEbUJBLFFBQU1qOEI7Ozs7T0FHbkI7UUFET3NrQyxhQVBYM007UUFPTWo1QixNQVBOaTVCO1FBUUksVUFwRE5pTSxhQW1EUWxsQyxLQXFJQXVsQztRQW5JYXRsQzs7O1FBQ2dCO1NBREQ0bEM7U0FDQyxVQWhCckNQLGdCQWFhTSxZQUV1QkM7U0FDVGxLO1NBQU5tSztRQUNuQixlQUZtQjdsQyxPQUNBNmxDLFFBQU1uSzs7T0FFRyxNQUFBOztPQUd4QjtRQURZb0ssYUFkaEI5TTtRQWNXOTRCLFFBZFg4NEI7UUFlSSxVQTNETmlNLGFBMERhL2tDLE9BOEhMb2xDO1FBNUhhamxDOzs7UUFDZ0I7U0FERDBsQztTQUNDLFVBdkJyQ1YsZ0JBb0JrQlMsWUFFa0JDO1NBQ1RwSztTQUFOcUs7UUFDbkIsZUFGbUIzbEMsT0FDQTJsQyxRQUFNcks7O09BRUcsTUFBQTs7T0FHeEI7UUFEaUJzSyxhQXJCckJqTjtRQXFCZS80QixPQXJCZis0QjtRQXFCVXg0QixRQXJCVnc0QjtRQXFCRzc0QixRQXJCSDY0QjtRQXNCSSxVQXRETm1NLGFBcURZM2tDLE9BQUtQLE1BdUhUcWxDO1FBckhhM2tDOzs7UUFDZ0I7U0FERXVsQztTQUFiOWxDO1NBQ1csVUE5QnJDaWxDLGdCQTJCdUJZLFlBRWdCQztTQUNadEs7U0FBTnVLO1FBQ25CLGVBSkdobUMsT0FFZ0JRLE9BQUtQLFFBQ0wrbEMsUUFBTXZLOztPQUVNLE1BQUE7O09BRzNCO1FBRG1Cd0ssYUE1QnZCcE47UUE0QmlCejRCLFNBNUJqQnk0QjtRQTRCWWw0QixRQTVCWms0QjtRQTRCSzE0QixVQTVCTDA0QjtRQTZCSSxXQTdETm1NLGFBNERjcmtDLE9BQUtQLFFBZ0hYK2tDO1FBOUdhdGtDOzs7UUFDZ0I7U0FESXFsQztTQUFmM2xDO1NBQ1csV0FyQ3JDMmtDLGdCQWtDeUJlLFlBRWdCQztTQUNkeEs7U0FBTnlLO1FBQ25CLGVBSktobUMsU0FFY1UsT0FBS04sUUFDTDRsQyxRQUFNeks7O09BRU0sTUFBQTs7T0FHM0I7UUFEdUIwSyxhQW5DM0J2TjtRQW1DcUJuNEIsU0FuQ3JCbTRCO1FBbUNnQjUzQixRQW5DaEI0M0I7UUFtQ1N2NEIsVUFuQ1R1NEI7UUFvQ0ksV0FwRU5tTSxhQW1Fa0IvakMsT0FBS1AsUUF5R2Z5a0M7UUF2R2Foa0M7OztRQUNnQjtTQURRa2xDO1NBQW5CQztTQUNXLFdBNUNyQ3BCLGdCQXlDNkJrQixZQUVnQkM7U0FDbEIxSztTQUFONEs7UUFDbkIsZUFKU2ptQyxTQUVVYSxPQUFLbWxDLFFBQ0xDLFFBQU01Szs7T0FFTSxNQUFBOztPQUczQjtRQURtQjZLLGFBMUN2QjNOO1FBMENpQjROLFNBMUNqQjVOO1FBMENZNk4sUUExQ1o3TjtRQTBDS3A0QixVQTFDTG80QjtRQTJDSSxXQTNFTm1NLGFBMEVjMEIsT0FBS0QsUUFrR1h0QjtRQWhHYXdCOzs7UUFDZ0I7U0FESUM7U0FBZkM7U0FDVyxXQW5EckMzQixnQkFnRHlCc0IsWUFFZ0JJO1NBQ2RoTDtTQUFOa0w7UUFDbkIsZUFKS3JtQyxTQUVja21DLFFBQUtFLFFBQ0xDLFFBQU1sTDs7T0FFTSxNQUFBOztPQUczQjtRQURtQm1MLGFBakR2QmxPO1FBaURpQm1PLFNBakRqQm5PO1FBaURZb08sU0FqRFpwTztRQWlES2o0QixRQWpETGk0QjtRQWtESSxXQWxGTm1NLGFBaUZjaUMsUUFBS0QsUUEyRlg3QjtRQXpGYStCOzs7UUFDZ0I7U0FESUM7U0FBZkM7U0FDVyxXQTFEckNsQyxnQkF1RHlCNkIsWUFFZ0JJO1NBQ2R0TDtTQUFOd0w7UUFDbkIsZUFKS3ptQyxPQUVjc21DLFFBQUtFLFFBQ0xDLFFBQU14TDs7T0FFTSxNQUFBOztPQUczQjtRQURLeUwsYUF4RFR6TztRQXdESTBPLFNBeERKMU87UUF5REksV0FyR05pTSxhQW9HTXlDLFFBb0ZFcEM7UUFsRmFxQzs7O1FBQ2dCO1NBREhDO1NBQ0csV0FqRXJDdkMsZ0JBOERXb0MsWUFFdUJHO1NBQ1AzTDtTQUFONEw7UUFDbkIsZUFGbUJGLFFBQ0FFLFFBQU01TDs7T0FFRyxNQUFBOztPQUdLO1FBRDdCNkwsYUEvREo5TztRQWdFaUMsV0F0RW5DcU0sZ0JBcUVNeUMsWUE2RUV4QztRQTVFaUJwSjtRQUFONkw7T0FDbkIsZ0JBRG1CQSxTQUFNN0w7O09BSVU7UUFEZDhMLGNBbkVuQmhQO1FBbUVjLzNCLE1BbkVkKzNCO1FBb0VpQyxXQTFFbkNxTSxnQkF5RXFCMkMsYUF5RWIxQztRQXhFaUJsSjtRQUFONkw7T0FDbkIsZ0JBRmdCaG5DLEtBQ0dnbkMsU0FBTTdMOztPQUdVO1FBRGhCOEwsY0F0RWpCbFA7UUFzRVk5M0IsTUF0RVo4M0I7UUF1RWlDLFdBN0VuQ3FNLGdCQTRFbUI2QyxhQXNFWDVDO1FBckVpQmhKO1FBQU42TDtPQUNuQixnQkFGY2puQyxLQUNLaW5DLFNBQU03TDs7aUJBcUVqQmdKLDZCQUFBQTs7U0FqRW1COEMsZUFpRW5COUM7U0FqRU9uSixZQWlFUG1KO1NBbEV3QitDLGNBMUU5QnJQO1NBMEVtQnFELGNBMUVuQnJEO1NBMEVVSCxVQTFFVkc7UUE0RUMsR0FBQSxrQkFGa0JxRCxrQkFDTkY7U0FDcUMsTUFBQTtRQUNqQjtTQUFBLFdBbkZuQ2tKLGdCQWdGZ0NnRCxhQUNMRDtTQUVGN0w7U0FBTitMO1FBQ25CLGdCQUpZelAsU0FDR3NELFdBRUltTSxTQUFNL0w7Ozs7aUJBK0RqQitJLDZCQUFBQTtRQTNEOEI7U0FESWlELGdCQTREbENqRDtTQTVEU2tELGFBNERUbEQ7U0E3RDBCbUQsY0EvRWhDelA7U0ErRXFCMFAsY0EvRXJCMVA7U0ErRVlDLFlBL0VaRDtTQWlGb0MsV0FBVSx3Q0FEL0J3UDtRQUNkO1VBQUE7Z0JBQVUsd0NBRlVFO1NBR3JCLE1BQUE7UUFFQTtTQUFBO1dBMUZGckQ7YUFxRmtDb0Q7YUFLUCx3Q0FKZUY7U0FHakIvTDtTQUFObU07UUFHbkIsZ0JBUGMxUCxXQUNHdVAsWUFHRUcsU0FBTW5NOzs7O2lCQXlEakI4SSw4QkFBQUE7UUFuRDJCO1NBRFZzRCxnQkFvRGpCdEQ7U0FwREZ1RCxjQXhGSjdQO1NBeUZpQyxXQS9GbkNxTSxnQkE4Rk13RCxhQUFtQkQ7U0FDQW5NO1NBQU5xTTtRQUNuQixnQkFEbUJBLFNBQU1yTTs7OztpQkFtRGpCNkksOEJBQUFBO1FBaEQyQjtTQURWeUQsZ0JBaURqQnpEO1NBakRGMEQsY0EzRkpoUTtTQTRGaUMsV0FsR25DcU0sZ0JBaUdNMkQsYUFBbUJEO1NBQ0FyTTtTQUFOdU07UUFDbkIsZ0JBRG1CQSxTQUFNdk07Ozs7T0FLVTtRQURId00sY0FoRzlCbFE7UUFnR2NiLGlCQWhHZGE7UUFpR2lDLFdBdkduQ3FNLGdCQXNHZ0M2RCxhQTRDeEI1RDtRQTNDaUI2RDtRQUFOQztPQUNuQixnQkFGZ0JqUixnQkFDR2lSLFNBQU1EOztXQTJCVkUsY0E1SGJyUSxRQTRIRjhMLGlCQTVIRTlMO2dCQTRIRjhMO1FBRW1DO29CQUZuQ0E7U0FDd0J4SjtTQUFOejdCO1NBQ2lCLFdBcEluQ3dsQyxnQkFtSWtCeGxDLE1BZVZ5bEM7U0FkaUI1bEM7U0FBTkk7U0FDZ0IsV0FySW5DdWxDLGdCQWtJZWdFLGFBRVUzcEM7U0FDQTRwQztTQUFOQztRQUNuQix3QkFGbUJ6cEMsTUFES3c3QixTQUVMaU8sT0FBTUQ7O09BR1U7bUJBTm5DeEU7UUFLd0I5SDtRQUFOd007UUFDaUIsV0F4SW5DbkUsZ0JBdUlrQm1FLFFBV1ZsRTtRQVZpQm1FO1FBQU5DO1FBQ2dCLFdBekluQ3JFLGdCQWtJZWdFLGFBTVVJO1FBQ0FFO1FBQU5DO09BQ25CLHdCQUZtQkYsUUFESzFNLFNBRUw0TSxTQUFNRDs7aUJBU2pCckUsOEJBQUFBO1FBcEMyQjtTQURSdUUsZ0JBcUNuQnZFO1NBckNEd0UsY0F2R0w5UTtTQXdHaUMsV0E5R25DcU0sZ0JBNkdPeUUsYUFBb0JEO1NBQ0ZFO1NBQU5DO1FBQ25CLGdCQURtQkEsU0FBTUQ7Ozs7aUJBb0NqQnpFLDZCQUFBQTtRQWpDMkI7U0FEc0IyRSxnQkFrQ2pEM0U7U0FsQzRCNEUsY0ExR2xDbFI7U0EwR3dCajNCLFdBMUd4QmkzQjtTQTBHYWgzQixZQTFHYmczQjtTQTJHaUMsV0FqSG5DcU0sZ0JBZ0hvQzZFLGFBQXFCRDtTQUNoQ0U7U0FBTkM7UUFDbkIsZ0JBRmVwb0MsV0FBV0QsVUFDUHFvQyxTQUFNRDs7OztpQkFpQ2pCN0UsNkJBQUFBO1FBOUIyQjtTQURVK0UsZ0JBK0JyQy9FO1NBL0JtQmdGLGNBN0d6QnRSO1NBNkdnQjkyQixVQTdHaEI4MkI7U0E4R2lDLFdBcEhuQ3FNLGdCQW1IMkJpRixhQUFrQkQ7U0FDcEJFO1NBQU5DO1FBQ25CLGdCQUZrQnRvQyxTQUNDc29DLFNBQU1EOzs7O1dBOEJyQmhzQyxPQTVJRnk2QixRQTRJRjMyQixNQTVJRTIyQjtpQkE0SUYzMkI7ZUFBQUE7O1dBR3NDLE9BMkJ0Q29vQyx1QkE5QkFwb0MsS0FBSTlELE1BQUkrbUM7O1dBSThCLE9BMEJ0Q21GLHVCQTlCQXBvQyxLQUFJOUQsTUFBSSttQzs7V0FLOEIsT0F5QnRDbUYsdUJBOUJBcG9DLEtBQUk5RCxNQUFJK21DOztXQU04QixPQXdCdENtRix1QkE5QkFwb0MsS0FBSTlELE1BQUkrbUM7O1dBTzhCLE9BdUJ0Q21GLHVCQTlCQXBvQyxLQUFJOUQsTUFBSSttQzs7V0FROEIsT0FzQnRDbUYsdUJBOUJBcG9DLEtBQUk5RCxNQUFJK21DOztXQVM4QixPQXFCdENtRix1QkE5QkFwb0MsS0FBSTlELE1BQUkrbUM7O1dBVThCLE9Bb0J0Q21GLHVCQTlCQXBvQyxLQUFJOUQsTUFBSSttQzs7ZUFjcUJvRixjQWQ3QnJvQyxRQWNvQjYyQixZQWRwQjcyQjtXQWVBLE9BZUFvb0M7d0JBaEJvQnZSLFdBQVN3UixjQWR6Qm5zQyxNQUFJK21DOztXQWtCTjtZQUY2QnFGLGNBaEIvQnRvQztZQWdCc0I4MkIsWUFoQnRCOTJCO1lBa0JFLE9Bc0JGdW9DLCtCQXhCK0JELGFBaEIzQnBzQyxNQUFJK21DOztZQWlCNEN1RjtZQUFOQztZQUEzQkM7V0FFbkIsb0JBSHNCNVIsV0FDSDRSLGNBQTJCRCxTQUFNRDs7V0FOZCxPQW1CdENKLHVCQTlCQXBvQyxLQUFJOUQsTUFBSSttQzttQkFZOEIsT0FrQnRDbUYsdUJBOUJBcG9DLEtBQUk5RCxNQUFJK21DOztjQUFSampDOztVQUNzQyxPQTZCdENvb0MsdUJBOUJBcG9DLEtBQUk5RCxNQUFJK21DOztVQUU4QixPQTRCdENtRix1QkE5QkFwb0MsS0FBSTlELE1BQUkrbUM7O29CQUFBQSw4QkFBQUE7V0F5QjZCO1lBRGpCMEYsZ0JBeEJaMUY7WUF5QjZCLFdBM0tyQ0QsZ0JBa0pJOW1DLE1Bd0JnQnlzQztZQUNPQztZQUFOQztXQUNuQixtQkFEbUJBLFNBQU1EOztVQUVwQixNQUFBO2tCQWQrQixPQWlCdENSLHVCQTlCQXBvQyxLQUFJOUQsTUFBSSttQzs7O0lBdkJILE1BQUE7R0FBbUI7WUFxRHhCbUYsdUJBS0Vwb0MsS0FBSTIyQixLQUFJNzNCO0lBQ1o7S0FBbUMsUUF0TGpDa2tDLGdCQXFMTXJNLEtBQUk3M0I7S0FDYUU7S0FBTnk3QjtJQUNuQixnQkFGSXo2QixLQUNleTZCLFFBQU16N0I7R0FDd0I7WUFHL0N1cEMsK0JBSUF6TyxXQUFVbkQsS0FBSTczQjtJQUFTLFVBQXZCZzdCO0tBMEVBLGNBeFFBa0osZ0JBOExVck0sS0FBSTczQjtXQUFkZzdCOztpQkFBY2g3Qiw0QkFBQUE7UUFHWjtTQUY4Qm9rQyxhQURsQnBrQztTQUNOZ3FDLGlCQURSaFA7U0FHRTtXQVBGeU8sK0JBS1FPLGdCQURFblMsS0FDc0J1TTtTQUNJekk7U0FBakJzTztRQUVuQixlQUZtQkEsbUJBQWlCdE87Ozs7aUJBRnRCMzdCLDRCQUFBQTtRQU9aO1NBRmtDc2tDLGVBTHRCdGtDO1NBS0prcUMsbUJBTFZsUDtTQU9FO1dBWEZ5TywrQkFTVVMsa0JBTEFyUyxLQUswQnlNO1NBQ0FuSTtTQUFqQmdPO1FBRW5CLGVBRm1CQSxtQkFBaUJoTzs7OztpQkFOdEJuOEIsNEJBQUFBO1FBV1o7U0FGNEJ5a0MsZUFUaEJ6a0M7U0FTUG9xQyxtQkFUUHBQO1NBV0U7V0FmRnlPLCtCQWFPVyxrQkFUR3ZTLEtBU29CNE07U0FDTUM7U0FBakIyRjtRQUVuQixlQUZtQkEsbUJBQWlCM0Y7Ozs7aUJBVnRCMWtDLDRCQUFBQTtRQWVaO1NBRmdDNGtDLGVBYnBCNWtDO1NBYUxzcUMsbUJBYlR0UDtTQWVFO1dBbkJGeU8sK0JBaUJTYSxrQkFiQ3pTLEtBYXdCK007U0FDRUM7U0FBakIwRjtRQUVuQixlQUZtQkEsbUJBQWlCMUY7Ozs7aUJBZHRCN2tDLDRCQUFBQTtRQW1CWjtTQUZ3QytrQyxlQWpCNUIva0M7U0FpQkR3cUMsbUJBakJieFA7U0FtQkU7V0F2QkZ5TywrQkFxQmFlLGtCQWpCSDNTLEtBaUJnQ2tOO1NBQ05DO1NBQWpCeUY7UUFFbkIsZUFGbUJBLG1CQUFpQnpGOzs7O2lCQWxCdEJobEMsNEJBQUFBO1FBdUJaO1NBRmdDa2xDLGVBckJwQmxsQztTQXFCTDBxQyxtQkFyQlQxUDtTQXVCRTtXQTNCRnlPLCtCQXlCU2lCLGtCQXJCQzdTLEtBcUJ3QnFOO1NBQ0VDO1NBQWpCd0Y7UUFFbkIsZUFGbUJBLG9CQUFpQnhGOzs7O2lCQXRCdEJubEMsNEJBQUFBO1FBMkJaO1NBRmdDcWxDLGVBekJwQnJsQztTQXlCTDRxQyxvQkF6QlQ1UDtTQTJCRTtXQS9CRnlPO2FBNkJTbUIsbUJBekJDL1MsS0F5QndCd047U0FDRUU7U0FBakJzRjtRQUVuQixlQUZtQkEsb0JBQWlCdEY7Ozs7aUJBMUJ0QnZsQyw0QkFBQUE7UUErQlo7U0FGOEI0bEMsZUE3QmxCNWxDO1NBNkJOOHFDLG9CQTdCUjlQO1NBK0JFO1dBbkNGeU87YUFpQ1FxQixtQkE3QkVqVCxLQTZCc0IrTjtTQUNJRTtTQUFqQmlGO1FBRW5CLGVBRm1CQSxvQkFBaUJqRjs7OztpQkE5QnRCOWxDLDRCQUFBQTs7U0FtRGNtbUMsZUFuRGRubUM7U0FtRENnckMsYUFuRERockM7U0FrRGFpckMsb0JBbEQzQmpRO1NBa0Rla1EsZUFsRGZsUTtRQW9ERyxHQUFBLGtCQUZZa1EsbUJBQ0FGO1NBQ3VDLE1BQUE7UUFFcEQ7U0FBQTtXQTFERnZCO2FBc0QyQndCLG1CQWxEakJwVCxLQW1Ea0JzTztTQUVRRTtTQUFqQjhFO1FBRW5CLGVBSmVILFlBRUlHLG9CQUFpQjlFOzs7O2lCQXJEdEJybUMsNEJBQUFBO1FBMkR5QjtTQUZJeW1DLGVBekQ3QnptQztTQXlEZ0JvckMsZUF6RGhCcHJDO1NBeURHcXJDLGFBekRIcnJDO1NBd0Q2QnNyQyxvQkF4RDNDdFE7U0F3RDhCdVEsZUF4RDlCdlE7U0F3RGlCd1EsZUF4RGpCeFE7U0EyRHVDLFdBQVUsd0NBRmhDcVE7UUFFZDtVQUFBO2dCQUFVLHdDQUhJRztTQUlaLE1BQUE7UUFDa0MsZUFBVSx3Q0FKbkJKO1FBSTNCO1VBQUE7Z0JBQVUsd0NBTGlCRztTQU16QixNQUFBO1FBQ1k7U0FBYnJRLGNBemRKNEQsTUF2SUkxQyxLQTBsQmFpUCxhQUFhRDtTQU9YLFVBeGtCZi9PLGNBdWtCQW5CO1NBQ1UrRztTQUFQQztRQUFBQTtRQUFPRDtRQUlaO1NBQUE7V0F4RUZ3SDthQXdFbUMsd0NBWlE2QjthQXhEakN6VDthQXlEaUM0TztTQVVQQztTQUFqQitFO1FBR25CO29CQWJpQkosWUFBYUQsY0ExbEIxQmhQLEtBb21CZXFQO2dCQUFpQi9FOzs7O2lCQW5FdEIxbUMsNkJBQUFBO1FBbUNaO1NBRmdDaW5DLGVBakNwQmpuQztTQWlDTDByQyxvQkFqQ1QxUTtTQW1DRTtXQXZDRnlPO2FBcUNTaUMsbUJBakNDN1QsS0FpQ3dCb1A7U0FDRUw7U0FBakIrRTtRQUVuQixnQkFGbUJBLG9CQUFpQi9FOzs7O2lCQWxDdEI1bUMsNkJBQUFBO1FBdUNaO1NBRmdDb25DLGdCQXJDcEJwbkM7U0FxQ0w0ckMsb0JBckNUNVE7U0F1Q0U7V0EzQ0Z5TzthQXlDU21DLG1CQXJDQy9ULEtBcUN3QnVQO1NBQ0VOO1NBQWpCK0U7UUFFbkIsZ0JBRm1CQSxvQkFBaUIvRTs7OztpQkF0Q3RCOW1DLDZCQUFBQTtRQTJDWjtTQUZrQ3luQyxnQkF6Q3RCem5DO1NBeUNKOHJDLG9CQXpDVjlRO1NBMkNFO1dBL0NGeU87YUE2Q1VxQyxtQkF6Q0FqVSxLQXlDMEI0UDtTQUNBVDtTQUFqQitFO1FBRW5CLGdCQUZtQkEsb0JBQWlCL0U7Ozs7aUJBMUN0QmhuQyw2QkFBQUE7UUErQ1o7U0FGa0Q0bkMsZ0JBN0N0QzVuQztTQTZDSWdzQyxvQkE3Q2xCaFI7U0ErQ0U7V0FuREZ5TzthQWlEa0J1QyxtQkE3Q1JuVSxLQTZDMEMrUDtTQUNoQlQ7U0FBakI4RTtRQUVuQixnQkFGbUJBLG9CQUFpQjlFOzs7O0lBNkIvQixNQUFBO0dBQW1CO1lBMEJ4QitFLE9BUUVyVSxLQUFJNzNCO0lBQ21CLFdBL29CckJvOEIsS0E4b0JFcDhCO0lBQ1EsT0F0VFZpa0MsWUFxVEZwTSxLQUNZO0dBQXdCO1lBTXRDc1UsWUFBWTNTLE9BQU03QixPQUFNNzNCO0lBQzFCO0tBQUk0Riw0QkFEc0I1RjtLQUVmKzVCLGVBRlNsQyxRQUFONkI7S0FFVjRTLFVBQ0YsdUJBSGtCelU7T0FFaEJ5VSxXQURBMW1DLEtBYWlCLE9BZEs1RjtJQWVkO2tCQWJEKzVCO0tBYUwxeUIsTUFBTSw0QkFiUmlsQztJQWNGLE9BZFN2Uzs7T0FlRSw4QkFqQmEvNUIsUUFlcEJxSCxRQWRGekI7O09BaUJTLDhCQWxCYTVGLFFBZXBCcUgsS0FiRmlsQyxVQURBMW1DLFNBQUFBOzs7O2NBQUFBO1FBa0J5RDtpQkFBbEMsZ0JBbkJENUY7b0JBbUJrQixnQkFuQmxCQSxrQkFtQm1DLGdCQW5CbkNBOztRQW9CdEIsZUFMRXFILFFBS2MsZ0JBcEJNckg7UUFxQnRCOztVQXJCc0JBOztVQWVwQnFIO1dBYkZpbEMsVUFEQTFtQztVQUFBQTs7OztjQUFBQSxjQXFCc0IsZ0JBdEJBNUY7UUFzQm1DLFdBQWpCLGdCQXRCbEJBLGtCQXNCbUMsZ0JBdEJuQ0E7O1FBdUJ0QixlQVJFcUgsUUFRYyxnQkF2Qk1ySDtRQXdCdEI7O1VBeEJzQkE7O1VBZXBCcUg7V0FiRmlsQyxVQURBMW1DO1VBQUFBOzs7T0F5QkEsOEJBMUJzQjVGLFFBZXBCcUgsS0FiRmlsQyxVQURBMW1DLFNBQUFBOztJQTJCRixPQUFBLDZCQWJJeUI7R0Fhc0I7WUFHMUJrbEMsa0JBQWtCdnRDLE1BQUtnQjtJQUN6QjtLQUFJYixTQUFPLHVCQURTSDtLQUVoQjRHLE1BQUosc0JBRnlCNUY7S0FJdkJrRixJQURJLGdCQUhtQmxGOzs7OztjQUl2QmtGO2lCQUFBQTtnQkFBQUE7ZUFBQUE7OztjQUZFVSxPQURBekcsdUJBQ0F5RztZQU9zRDtzQkFBakIsZ0JBVGhCNUY7d0JBU2lDLGdCQVRqQ0E7O1lBVWIsSUFBTndzQyxRQUFNLDRCQVRScnRDO1lBVUYsZUFESXF0QyxVQUNZLGdCQVhPeHNDO1lBWXZCOztjQVp1QkE7O2NBVW5Cd3NDO2VBVEZydEMsU0FDQXlHO2NBQUFBO1lBVUYsT0FBQSw2QkFGSTRtQzs7Ozs7Ozs7Ozs7O1VBUkY1bUMsUUFEQXpHO09BSVEsSUFBTmlnQixRQUFNLDRCQUpSamdCO09BS0YsZUFESWlnQixVQURKbGE7T0FHQTs7U0FQdUJsRjs7U0FLbkJvZjtVQUpGamdCLFNBQ0F5RztTQUFBQTtPQUtGLE9BQUEsNkJBRkl3Wjs7ZUFESmxhLFVBQUFBLHFDQUFBQTs7UUFGRVUsTUFEQXpHO01BY1EsSUFBTmtJLE1BQU0sNEJBZFJsSTtNQWVGLDhCQWhCdUJhLFFBZW5CcUgsS0FkRmxJLFNBQ0F5RyxTQUFBQTtNQWNGLE9BQUEsNkJBREl5Qjs7O0lBSUosT0FuQnVCckg7R0FtQnBCO1lBR0h5c0Msc0JBQXNCenNDO0lBQ3hCO0tBQUlxNkIsUUFBTSw4QkFEY3I2QjtLQUVwQm1FLElBQUosc0JBRElrMkI7S0FFQWh6QixNQUFNLDRCQURObEQ7SUFFSixpQkFISWsyQixVQUVBaHpCLFFBREFsRDtJQUVKLE9BQUEsNkJBRElrRDtHQUVzQjtZQXFDeEJxbEMsZ0JBQWdCNXNDLE9BQU1kO0lBQ3RCO0tBQUlHLFNBQU8sdUJBRFdIO0tBRWxCMnRDLE9BL2xDSnBULG1CQTZsQ2dCejVCO0tBR1prSCxNQXhvQ0o0eEI7SUFjQU0sZ0JBMG5DSWx5QjtJQTU4QkptekIsa0JBNDhCSW56QixLQUhZbEg7SUF2bkNoQm81QixnQkEwbkNJbHlCO0lBcG5DSm15QixrQkFvbkNJbnlCLEtBSWtCLDJCQU5sQjdIO0lBeG5DSis1QixnQkEwbkNJbHlCLEtBREEybEM7SUFNSixPQWxuQ0F0VCxnQkE2bUNJcnlCO0dBTWU7WUFFbkI0bEMsa0JBQWtCMXRDLE9BQU1vRDtJQUMxQixRQURvQnBELE9BdUJiLE9BdkJtQm9EO0lBSWQsSUFBSkoseUNBSmtCSSxZQUlkOztTQUNSK0I7O3FDQUxzQi9CLEdBS3RCK0IsaUJBREluQztNQUNKLFdBQUFtQztrQkFBQUE7VUFBQUE7OztJQU9RO0tBVE53b0MsU0FDRTNxQztLQVFGOEU7T0FBTTsrQkFaYzFFLE9BR3BCdXFDO0tBVUEvMEI7YUFDQWcxQixJQUFJNW5DLEdBQUksZUFGUjhCLEtBQ0E4USxRQUNJNVMsSUFESjRTLGlCQUNzQztJQUMvQjtLQUFQekssYUFaQXcvQjtrQ0FIb0J2cUM7S0FlYjs7U0FDWDhCOztVQUVJYywyQkFsQm9CNUMsR0FnQnhCOEI7YUFFSWM7T0FKQTRuQyxJQUlBNW5DO29CQUhBbUksU0FEQXkvQixTQUNBei9CLGNBQUFBLGVBREF5L0IsSUFJQTVuQztNQUZKLFdBQUFkO2tCQUFBQTtVQUFBQTs7O0lBTUEsT0FBQSw2QkFWSTRDO0dBV0U7WUFHTitsQyxZQUFZN3RDLE9BQU1nRDtJQUNwQixPQURjaEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQ1UsT0EzQnRCMHRDLGtCQTBCWTF0QyxPQUNVLHNCQURKZ0Q7R0FDMEM7WUFDNUQ4cUMsY0FBYzl0QyxPQUFNZ0Q7SUFDdEIsT0FEZ0JoRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFDUSxPQTdCdEIwdEMsa0JBNEJjMXRDLE9BQ1Esc0JBREZnRDtHQUMyQztZQUMvRCtxQyxrQkFBa0IvdEMsT0FBTWdEO0lBQzFCLE9BRG9CaEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQ0ksT0EvQnRCMHRDLGtCQThCa0IxdEMsT0FDSSxzQkFERWdEO0dBQzJDO1lBQ25FZ3JDLGNBQWNodUMsT0FBTWdEO0lBQ3RCLE9BRGdCaEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQ1EsT0FqQ3RCMHRDLGtCQWdDYzF0QyxPQUNRLGdDQURGZ0Q7R0FDMkM7WUFJL0RpckMsY0FBY3J0QyxPQUFNZCxNQUFLeUQ7YUFDdkIycUM7S0FDRixPQUZjdHRDOztZQUVWdXRDOztZQUFBQTtvQkFBQUE7O0tBS0osT0FBQSxnQ0FQeUI1cUMsR0FBTHpELE1BRWhCcXVDO0lBSzBCO0lBU2hDLFNBQUlDLGlCQUFpQnR0QztLQUFZLFlBQUEsNEJBaEJOeUM7O2VBQUFBO3NDQWdCTnpDO0lBR0Y7V0FuQkhGOztPQXlCSjtRQWpCVUUsTUFpQlYsa0JBekVWMHNDLGdCQWdEYzVzQyxPQUFNZCxPQUFLeUQ7UUFTckJtRCw0QkFEZ0I1RjtRQUVIb0U7T0FDZjtXQURlQSxNQURid0I7OztTQUdNLFdBQUEsZ0JBSlU1RixLQUVIb0U7Ozs7Ozs7VUFJTixJQUpNQyxNQUFBRCxXQUFBQSxJQUFBQzs7Ozs7UUFLZCxrQkFQaUJyRSxNQU9RLHVCQVBSQTtRQWtCSCxPQVZmc3RDOzs7T0FLUyxPQXBCVEY7O09BcUJnQyxXQXJCaENBLFFBcUJnQyxPQUFBOztPQUNMLE9BUDNCRSxpQkFmQUY7ZUEyQkYsT0FBQSxrQkE1RUFWLGdCQWdEYzVzQyxPQUFNZCxPQUFLeUQ7O0dBNEJrQjtZQVczQzhxQyxnQkFBZ0JydEM7SUFDUixJQUFOOEcsTUE3dENGNHhCO0lBOE9JNEIsYUErK0JGeHpCLEtBRGM5RztJQUVsQixPQW5zQ0VtNUIsZ0JBa3NDRXJ5QjtHQUVlO1lBWWJ3bUMsdUJBR0p6ZSxHQUFFdGpCLEtBQUlzc0I7SUFBTyxJQXlOWC9CLE1Bek5GakgsR0F5TklyakIsUUF6TkZELEtBQUlvd0IsUUFBQTlEO0lBQU87ZUFBUDhELG9CQXVGTixPQUFBLFdBa0lFN0YsS0FBRXRxQjtZQXpORW13Qjs7WUFDRHYrQixPQURDdStCO1FBRU4sZ0JBQUkzMkI7U0FDWSxJQUFWdW9DLGNBc05GL2hDLE9Bdk5BeEc7U0FFRixPQVBFd29DLFlBNE5GMVgsS0F0Tkl5WCxTQUZEbndDLE1BR3VCOztZQUNsQkMsU0FMSnMrQjtRQU1OLGdCQUFJMzJCO1NBQ0Y7VUFoQ0FsRixNQUFNLDJCQStCSmtGO1VBOUJGZixJQUFKLHNCQURJbkU7VUFFQXFILE1BQU0sNEJBRE5sRDtTQUVKLGlCQUhJbkUsUUFFQXFILFFBREFsRDtTQStCYyxJQUFWc3BDLGNBa05GL2hDLE9BL09OLDZCQURJckU7U0ErQkEsT0FYRXFtQyxZQTRORjFYLEtBbE5JeVgsU0FGSWx3QyxRQUdrQjs7WUFDZkMsU0FUUHErQixVQVNFLzhCLE1BVEYrOEI7UUFVc0IsT0EwSTVCOFI7aUJBcUVFM1gsS0FBRXRxQixPQWhOU2xPLFFBQUxzQixjQUN5QmtCLEtBQU8sT0FBUEEsSUFBVTs7WUFDekJ2QyxTQVhabytCLFVBV085OEIsUUFYUDg4QjtRQVlOLE9Bd0lBOFIsYUFxRUUzWCxLQUFFdHFCLE9BOU1jak8sUUFBTHNCLE9BOUpiMHRDOzs7U0FnS3VCL3VDLFNBYmpCbStCO1NBYVc3OEIsT0FiWDY4QjtTQWFNNThCLFFBYk40OEI7U0FhRDM4QixRQWJDMjhCO1FBY04sT0EwSkErUjtpQkFpREU1WCxLQUFFdHFCLE9BNU1tQmhPLFFBQVh1QixPQUFLRCxNQWpGakIrdEMsYUFpRks3dEM7OztTQUVvQnZCLFNBZm5CaytCO1NBZWExOEIsU0FmYjA4QjtTQWVRejhCLFFBZlJ5OEI7U0FlQ3g4QixVQWZEdzhCO1FBZ0JOLE9Bd0pBK1I7aUJBaURFNVgsS0FBRXRxQixPQTFNcUIvTixRQUFYeUIsT0FBS0QsUUFqRm5CNnRDLGVBaUZPM3RDOzs7U0FFc0J6QixTQWpCdkJpK0I7U0FpQmlCdjhCLFNBakJqQnU4QjtTQWlCWXQ4QixRQWpCWnM4QjtTQWlCS3I4QixVQWpCTHE4QjtRQWtCTixPQXNKQStSO2lCQWlERTVYO2lCQUFFdHFCO2lCQXhNeUI5TjtpQkFBWDJCO2lCQUFLRDtpQkFqRnZCMnRDO2lCQWlGV3p0Qzs7O1NBRWMzQixTQW5CbkJnK0I7U0FtQmFwOEIsU0FuQmJvOEI7U0FtQlFuOEIsUUFuQlJtOEI7U0FtQkNsOEIsVUFuQkRrOEI7UUFvQk4sT0FvSkErUjtpQkFpREU1WCxLQUFFdHFCLE9BdE1xQjdOLFFBQVg2QixPQUFLRCxRQWpGbkJ5dEMsZUFpRk92dEM7OztTQXNNQzdCLFNBek5GKzlCO1NBeU5VajhCLFNBek5WaThCO1NBeU5NaDhCLFFBek5OZzhCO1NBeU5lLzdCLFFBek5mKzdCO2tCQXlOTWg4QjttQkFBSUQ7aUJBQUFBOztvQkFVWjJTLEdBQUU5UDtvQkFDTSxJQUFOekMsTUE3Uk5tdEMsY0FrUnFCcnRDLE9BVWpCeVMsR0FBRTlQO29CQUVKLE9BeE9FaXJDLFlBNE5GMVgsU0FBRXRxQixPQVdFMUwsTUFYRWxDO21CQVl3Qzs7b0JBVjVDMkU7b0JBQ1E7cUJBQU56Qzt1QkFyUk5tdEMsY0FrUnFCcnRDLE9BMytDckI2NEIsd0JBMitDcUI3NEIsUUFFakIyQztvQkFFRixPQWhPRWlyQyxZQTRORjFYLFNBQUV0cUIsT0FHRTFMLE1BSEVsQzttQkFJd0M7YUFDdEJ5VSxJQUxWM1M7U0FNaEIsZ0JBQUk2QztVQUNRLElBQU56QyxNQXpSTm10QyxjQWtScUJydEMsT0FLS3lTLEdBQ3RCOVA7VUFFRixPQXBPRWlyQyxZQTRORjFYLFNBQUV0cUIsT0FPRTFMLE1BUEVsQyxRQVF3Qzs7aUJBUnBDK0I7YUFrQlFva0MsSUFsQlJwa0MsVUFrQkM2NUIsUUFsQkQ3NUI7bUJBQUlEO2lCQUFBQTs7b0JBdUJaMlMsR0FBRTlQO29CQUNNLElBQU56QyxNQXpiTnFzQyxZQW1iYTNTLE9BQU91SyxHQXBTcEJrSixjQWtScUJydEMsT0F1QmpCeVMsR0FBRTlQO29CQUVKLE9BclBFaXJDLFlBNE5GMVgsU0FBRXRxQixPQXdCRTFMLE1BeEJFbEM7bUJBeUJ3Qzs7b0JBWDVDMkU7b0JBQ0Y7cUJBQUl6Qzt1QkFqU05tdEMsY0FrUnFCcnRDLE9BMytDckI2NEIsd0JBMitDcUI3NEIsUUFjakIyQztxQkFFRTQzQixRQWpiTmdTLFlBbWJhM1MsT0FBT3VLLEdBSGRqa0M7b0JBRUosT0E3T0UwdEMsWUE0TkYxWCxTQUFFdHFCLE9BZ0JFMnVCLFFBaEJFdjhCO21CQWlCeUM7YUFDWCt2QyxNQWxCdEJqdUM7U0FtQmhCLGdCQUFJNkM7VUFDUSxJQUFOekMsTUFyYk5xc0MsWUFtYmEzUyxPQUFPdUssR0FwU3BCa0osY0FrUnFCcnRDLE9Ba0JpQit0QyxLQUNsQ3ByQztVQUVGLE9BalBFaXJDLFlBNE5GMVgsU0FBRXRxQixPQW9CRTFMLE1BcEJFbEMsUUFxQndDOztZQVVwQ2k4QixVQS9CQWw2QjtrQkFBSUQ7Z0JBQUFBOzttQkFvQ1pxa0MsR0FBRTF4QixHQUFFOVA7bUJBQ0k7b0JBQU56QyxNQXRjTnFzQyxZQWdjWXRTLFNBS1JrSyxHQXRUSmtKLGNBa1JxQnJ0QyxPQW9DZnlTLEdBQUU5UDttQkFFTixPQWxRRWlyQyxZQTRORjFYLFNBQUV0cUIsT0FxQ0UxTCxNQXJDRWxDO2tCQXNDd0M7O21CQVg1Q21tQyxHQUFFeGhDO21CQUNKO29CQUFJekM7c0JBOVNObXRDLGNBa1JxQnJ0QyxPQTMrQ3JCNjRCLHdCQTIrQ3FCNzRCLFFBMkJmMkM7b0JBRUE0M0IsUUE5Yk5nUyxZQWdjWXRTLFNBSlJrSyxHQUNFamtDO21CQUVKLE9BMVBFMHRDLFlBNE5GMVgsU0FBRXRxQixPQTZCRTJ1QixRQTdCRXY4QjtrQkE4QnlDO1lBQ2hCZ3dDLE1BL0JqQmx1QztRQWdDaEIsZ0JBQUlxa0MsR0FBRXhoQztTQUNNLElBQU56QyxNQWxjTnFzQyxZQWdjWXRTLFNBQ1JrSyxHQWxUSmtKLGNBa1JxQnJ0QyxPQStCWWd1QyxLQUMzQnJyQztTQUVKLE9BOVBFaXJDLFlBNE5GMVgsU0FBRXRxQixPQWlDRTFMLE1BakNFbEMsUUFrQ3dDOztZQXBPckNFLFNBdkJMNjlCLFVBdUJBOTdCLFFBdkJBODdCO1FBd0JOLE9BNEhBOFIsYUFxRUUzWCxLQUFFdHFCLE9BbE1PMU4sUUFBTCtCOztRQW1CUTtTQTFDUjdCLFNBQUEyOUI7U0FBSmx3QixZQXlORUQ7U0FBQUEsUUF6TkZDO1NBQUlrd0IsUUFBQTM5Qjs7O1FBNkNRO1NBN0NSQyxVQUFBMDlCO1NBNENVNzdCLE1BNUNWNjdCO1NBQUpqYyxZQXlORWxVLE9BN0tZMUw7U0E2S1owTCxRQXpORmtVO1NBQUlpYyxRQUFBMTlCOzs7UUErQ1E7U0EvQ1JDLFVBQUF5OUI7U0E4Q1E1N0IsTUE5Q1I0N0I7U0FBSmtTLFlBeU5FcmlDLE9BM0tVekw7U0EyS1Z5TCxRQXpORnFpQztTQUFJbFMsUUFBQXo5Qjs7O1FBa0RHO1NBRGlCQyxVQWpEcEJ3OUI7U0FpRFNYLFlBakRUVztTQWtERjk5QixLQXBFSnd2QyxnQkFtRWVyUztRQUVmLGdCQUFLbDdCO1NBQ0gsT0F2REUwdEMsWUE0TkYxWCxTQUFFdHFCLE9BdktBM04sS0FEc0JNLFNBSXNCOztZQUN4QkMsVUF0RGxCdTlCLFVBc0RXMzdCLFFBdERYMjdCO1FBdUROO1NBQUEsSUFBYTlELGdCQUNDLE9BL1FkcVUsT0E4UWFyVSxLQURJNzNCO1NBRWYsT0EzREV3dEM7a0JBNE5GMVg7a0JBQUV0cUI7a0JBaktGLDhDQUZzQnBOLFVBRWM7O1lBL0JoQ2dDLFVBekJBdTdCO1FBMEJOLGdCQUFJdjZCLEdBQUVtQjtTQUFLLE9BN0JQaXJDO2tCQTRORjFYO3NCQUFFdHFCLGdCQS9MMENTLEdBQUssa0JBQS9DN0ssR0FBMEM2SyxHQUF4QzFKLEdBQWtEO2tCQURsRG5DLFNBQ3lEOztZQUN6REMsVUEzQkFzN0I7UUE0Qk4sZ0JBQUl2NkIsR0FBSyxPQS9CTG9zQyxZQTRORjFYLFNBQUV0cUIsT0E3TEFwSyxJQURFZixTQUMwQzs7UUFnRGxDO1NBNUVSQyxVQUFBcTdCO1NBMkVVcDdCLGFBM0VWbzdCO1NBQUptUyxZQXlORXRpQyxPQTlJWWpMO1NBOElaaUwsUUF6TkZzaUM7U0FBSW5TLFFBQUFyN0I7OzttQkFBQXE3Qjs7YUE2RXVDbjdCLFVBN0V2Q203QixVQUFBUTthQXlORjV3QixNQUFBQyxPQUFGdXFCLE1BQUFELEtBNUkyQzE0QixPQUFBb0Q7a0JBN0U3Q3F1QixFQThFT2tmLE1BQ0wsT0FsRkVQLFlBNE5GelgsU0FBRXhxQixTQTNJR3dpQyxRQURzQzN3QyxNQUVxQjthQTBJaEUwNEIsTUF6TkZqSCxHQXlOSXJqQixXQXpORW13QixRQUFBUTs7O2FBaUZ1Q3o3QixVQWpGdkNpN0IsVUFBQStJO2FBeU5GbjVCLE1BQUFDLE9BQUZ1cUIsTUFBQUQsS0F4STJDMTRCLE9BQUFzRDtrQkFqRjdDbXVCLEVBa0ZPa2YsTUFDTCxPQXRGRVAsWUE0TkZ6WCxTQUFFeHFCLFNBdklHd2lDLFFBRHNDM3dDLE1BRXFCO2FBc0loRTA0QixNQXpORmpILEdBeU5JcmpCLFdBek5FbXdCLFFBQUErSTs7OztRQXdDTixNQUFBOztRQW1CYztTQURPL2pDLFVBMURmZzdCO1NBMkRGNFIsY0E4SkEvaEM7UUE3SkosdUJBQVMsT0EvRExnaUMsWUE0TkYxWCxLQTlKRXlYLFNBRGlCNXNDLFNBRWM7O1lBQ2RHLFVBN0RmNjZCO1FBaUVOLGdCQUFJMzVCO1NBQ1ksSUFBVnVyQyxjQXVKRi9oQyxPQXZKa0MseUJBRGxDeEo7U0FFRixPQXRFRXdyQyxZQTRORjFYLEtBdkpJeVgsU0FMZXpzQyxTQU1POztZQUNiRSxVQXBFVDI2QjtRQXFFTixnQkFBSTMyQjtTQUNZLElBQVZ1b0MsY0FtSkYvaEMsT0FwSkF4RztTQUVGLE9BMUVFd29DLFlBNE5GMVgsS0FuSkl5WCxTQUZTdnNDLFNBR2E7O1lBQ1JDLFVBeEVkMDZCLFVBd0VTejZCLE1BeEVUeTZCO1FBeUVOO1NBQUEsT0FBQTtrQkFrQkFxUywwQkE4SEVsWSxLQUFFdHFCLE9BakpXdEssS0FBS0Q7O1FBQ3BCLE9Ba0JBK3NDLGdDQThIRWxZLEtBQUV0cUIsT0FqSld0SyxLQUFLRDs7UUExQ1M7U0FEWEUsVUE3Qlp3NkI7U0E2QlN2NkIsSUE3QlR1NkI7U0E2QkV0NkIsUUE3QkZzNkI7U0E4QnVCLE9BQUEsV0FEZHY2QjtRQUNjO1NBQUEsT0FBQTtrQkFrTzdCNnNDLG1CQXZDRW5ZLEtBQUV0cUIsT0E1TGNySyxTQUFWRTs7UUFDcUIsT0FrTzdCNHNDLHlCQXZDRW5ZLEtBQUV0cUIsT0E1TGNySyxTQUFWRTs7O0dBMERIO1lBMUZEbXNDLFlBR0ozZSxHQUFFdGpCLEtBQUlzc0I7SSx1QkFIRnlWLGlCQUdKemUsR0FBRXRqQixLQUFJc3NCOztZQTJGTm1XLDhCQUlBbmYsR0FBRXRqQixLQUFJckssS0FBSTIyQjtJQUFPLFVBQVgzMkI7WUFBQUE7O1FBQzZCO1NBQUEsT0FBQSx1QkE2Q25DZ3RDLHNCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7UUFDeUIsT0E2Q25DcVcsNEJBOUNBcmYsR0FBRXRqQixLQUFRc3NCOztRQUV5QjtTQUFBLE9BQUEsdUJBNENuQ3FXLHNCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7UUFFeUIsT0E0Q25DcVcsNEJBOUNBcmYsR0FBRXRqQixLQUFRc3NCOztRQWF5QixNQUFBOztRQUdBO1NBQUEsT0FBQSx1QkE4Qm5DcVcsc0JBOUNBcmYsR0FBRXRqQixLQUFRc3NCOztRQWdCeUIsT0E4Qm5DcVcsNEJBOUNBcmYsR0FBRXRqQixLQUFRc3NCOztXQUFKMzJCOztPQUc2QjtRQUFBLE9BQUEsdUJBMkNuQ2d0QyxzQkE5Q0FyZixHQUFFdGpCLEtBQVFzc0I7O09BR3lCLE9BMkNuQ3FXLDRCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7T0FJeUI7UUFBQSxPQUFBLHVCQTBDbkNxVyxzQkE5Q0FyZixHQUFFdGpCLEtBQVFzc0I7O09BSXlCLE9BMENuQ3FXLDRCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7T0FLeUI7UUFBQSxPQUFBLHVCQXlDbkNxVyxzQkE5Q0FyZixHQUFFdGpCLEtBQVFzc0I7O09BS3lCLE9BeUNuQ3FXLDRCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7T0FNeUI7UUFBQSxPQUFBLHVCQXdDbkNxVyxzQkE5Q0FyZixHQUFFdGpCLEtBQVFzc0I7O09BTXlCLE9Bd0NuQ3FXLDRCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7T0FPeUI7UUFBQSxPQUFBLHVCQXVDbkNxVyxzQkE5Q0FyZixHQUFFdGpCLEtBQVFzc0I7O09BT3lCLE9BdUNuQ3FXLDRCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7T0FReUI7UUFBQSxPQUFBLHVCQXNDbkNxVyxzQkE5Q0FyZixHQUFFdGpCLEtBQVFzc0I7O09BUXlCLE9Bc0NuQ3FXLDRCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7T0FTeUI7UUFBQSxPQUFBLHVCQXFDbkNxVyxzQkE5Q0FyZixHQUFFdGpCLEtBQVFzc0I7O09BU3lCLE9BcUNuQ3FXLDRCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7T0FVeUI7UUFBQSxPQUFBLHVCQW9DbkNxVyxzQkE5Q0FyZixHQUFFdGpCLEtBQVFzc0I7O09BVXlCLE9Bb0NuQ3FXLDZCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7T0FXeUI7UUFBQSxPQUFBLHVCQW1DbkNxVyxzQkE5Q0FyZixHQUFFdGpCLEtBQVFzc0I7O09BV3lCLE9BbUNuQ3FXLDZCQTlDQXJmLEdBQUV0akIsS0FBUXNzQjs7V0FZZTczQixRQVpuQmtCO09BWTZCO1FBQUEsT0FBQTtpQkFRbkNpdEMsdUJBcEJBdGYsR0FBRXRqQixLQVl1QnZMLE9BWmY2M0I7O09BWXlCLE9BUW5Dc1csOEJBcEJBdGYsR0FBRXRqQixLQVl1QnZMLE9BWmY2M0I7O09BY3lCO1FBQUEsT0FBQSx1QkFnQ25DcVcsc0JBOUNBcmYsR0FBRXRqQixLQUFRc3NCOztPQWN5QixPQWdDbkNxVyw2QkE5Q0FyZixHQUFFdGpCLEtBQVFzc0I7O09BZXlCO1FBQUEsT0FBQSx1QkErQm5DcVcsc0JBOUNBcmYsR0FBRXRqQixLQUFRc3NCOztPQWV5QixPQStCbkNxVyw2QkE5Q0FyZixHQUFFdGpCLEtBQVFzc0I7O0dBZ0JtRDtZQXBCN0R1VyxtQkFJQXZmLEdBQUV0akIsS0FBSXJLLEtBQUkyMkI7SSx1QkFKVm1XLHdCQUlBbmYsR0FBRXRqQixLQUFJckssS0FBSTIyQjs7WUFvQlZzVywyQkFJQXRmLEdBQUV0akIsS0FBSXZMLE9BQU02M0I7SUFBTyxVQUFiNzNCO1lBQUFBOztZQUNFNUMsT0FERjRDO1FBQ3FCLHVCQUFTLE9BTHBDcXVDLGdCQUlBeGYsR0FBRXRqQixLQUNNbk8sTUFESXk2QixLQUNzRDs7WUFDeER4NkIsU0FGSjJDO1FBRXFCLHVCQUFTLE9BTnBDcXVDLGdCQUlBeGYsR0FBRXRqQixLQUVRbE8sUUFGRXc2QixLQUVzRDs7WUFDM0R2NkIsU0FIRDBDO1FBR3FCLHVCQUFTLE9BUHBDcXVDLGdCQUlBeGYsR0FBRXRqQixLQUdLak8sUUFIS3U2QixLQUdzRDs7WUFDekR0NkIsU0FKSHlDO1FBSXFCLHVCQUFTLE9BUnBDcXVDLGdCQUlBeGYsR0FBRXRqQixLQUlPaE8sUUFKR3M2QixLQUlzRDs7WUFDckRyNkIsU0FMUHdDO1FBS3FCLHVCQUFTLE9BVHBDcXVDLGdCQUlBeGYsR0FBRXRqQixLQUtXL04sUUFMRHE2QixLQUtzRDs7WUFDekRwNkIsU0FOSHVDO1FBTXFCLHVCQUFTLE9BVnBDcXVDLGdCQUlBeGYsR0FBRXRqQixLQU1POU4sUUFOR282QixLQU1zRDs7WUFDekRuNkIsU0FQSHNDO1FBT3FCLHVCQUFTLE9BWHBDcXVDLGdCQUlBeGYsR0FBRXRqQixLQU9PN04sUUFQR202QixLQU9zRDs7WUFDMURsNkIsU0FSRnFDO1FBUXFCLHVCQUFTLE9BWnBDcXVDLGdCQUlBeGYsR0FBRXRqQixLQVFNNU4sUUFSSWs2QixLQVFzRDs7WUFNaERqNkIsU0FkWm9DO1FBY3FCLHVCQUFTLE9BbEJwQ3F1QyxnQkFJQXhmLEdBQUV0akIsS0FjZ0IzTixRQWROaTZCLEtBY3NEOztRQUd6RDtTQURrQi81QixTQWhCckJrQztTQWdCZ0J4QixNQWhCaEJ3QjtTQWdCV2pDLE1BaEJYaUM7U0FpQkZuQyxLQTkxQkppaEMsTUF2SUkxQyxLQW8rQmFyK0IsTUFBS1M7UUFFdEI7U0FBUyxPQXRCVDZ2QztrQkFJQXhmO2tCQUFFdGpCO2tCQWtCNkIsd0NBRDNCMU4sSUFEdUJDO2tCQWhCZis1QixLQWtCNkM7O1lBVGhENzVCLFNBVEhnQztRQVNxQjtTQUFXLE9BYnRDcXVDLGdCQUlBeGYsR0FBRXRqQixLQVNPdk4sUUFURzY1QixLQVN3RDs7WUFDM0Q1NUIsVUFWSCtCO1FBVXFCLHVCQUFTLE9BZHBDcXVDLGdCQUlBeGYsR0FBRXRqQixLQVVPdE4sU0FWRzQ1QixLQVVzRDs7WUFDM0QzNUIsVUFYRDhCO1FBV3FCLHVCQUFTLE9BZnBDcXVDLGdCQUlBeGYsR0FBRXRqQixLQVdLck4sU0FYSzI1QixLQVdzRDs7UUFDdkMsTUFBQTs7UUFDQSxNQUFBOztJQUVBO0tBQUEsT0FBQSx1QkFPM0JxVyxzQkF0QkFyZixHQUFFdGpCLEtBQVVzc0I7O0lBZWUsT0FPM0JxVyw0QkF0QkFyZixHQUFFdGpCLEtBQVVzc0I7R0FrQjZDO1lBdEJ6RHdXLGdCQUlBeGYsR0FBRXRqQixLQUFJdkwsT0FBTTYzQjtJLHVCQUpac1cscUJBSUF0ZixHQUFFdGpCLEtBQUl2TCxPQUFNNjNCOztZQXNCWnFXLDBCQUdBcmYsR0FBRXRqQixLQUFJc3NCO0lBQ00sZUFEVnRzQjtJQUNKO0tBQUEsT0FBQSx1QkFwSk0raEMsbUJBbUpKemUsU0FBTWdKOztJQUNSLE9BcEpNeVYseUJBbUpKemUsU0FBTWdKO0dBQzhEO1lBR3BFNFYsYUFJRTVlLEdBQUV0akIsS0FBSXNzQixLQUFJajVCLEtBQUlrZ0M7SUFBUyxVQUFibGdDO0tBRVosZ0JBQUkyRDtNQUNZLElBQVZnckMsY0FIRmhpQyxLQUdrQyxXQUh0QnV6QixPQUVadjhCO01BRUYsT0EvSkVpckMsWUEySkYzZSxHQUdJMGUsU0FIRTFWLEtBSW1CO2FBSmZqNUI7U0FLUSs0QixRQUxSLzRCLFFBS0M0NkIsUUFMRDU2QjtLQU1aLGdCQUFJMkQ7TUFDWSxJQUFWZ3JDLGNBUEZoaUMsS0FoV0o0Z0MsWUFxV2EzUyxPQUFPN0IsT0FFMEMsV0FQOUNtSCxPQU1adjhCO01BRUYsT0FuS0VpckMsWUEySkYzZSxHQU9JMGUsU0FQRTFWLEtBUW1COztRQUNmZ0MsVUFUQWo3QjtJQVVaLGdCQUFJbWxDLEdBQUV4aEM7S0FDVSxJQUFWZ3JDLGNBWEZoaUMsS0FoV0o0Z0MsWUF5V1l0UyxTQUNSa0ssR0FDc0QsV0FYMUNqRixPQVVWdjhCO0tBRUosT0F2S0VpckMsWUEySkYzZSxHQVdJMGUsU0FYRTFWLEtBWW1CO0dBQUE7WUFJM0I2ViwyQkFLRTdlLEdBQUV0akIsS0FBSXNzQixLQUFJajVCLEtBQUlFLE1BQUtnZ0MsT0FBTTkvQjtJQUFTLFVBQXhCSjtlQUFJRTthQUFBQTs7Z0JBVVp1VCxHQUFFOVA7Z0JBQ00sSUFBTnpDLE1BaldOdXNDLGtCQWdXSWg2QixHQUM0QixXQVhYeXNCLE9BQU05L0IsT0FVckJ1RDtnQkFFSixPQTVMRWlyQyxZQWdMRjNlLE9BQUV0akIsS0FXRXpMLE1BWEUrM0I7ZUFZd0M7O2dCQVY1Q3QxQjtnQkFDUSxJQUFOekMsTUFBTSxXQUhTZy9CLE9BQU05L0IsT0FFdkJ1RDtnQkFFRixPQXBMRWlyQyxZQWdMRjNlLE9BQUV0akIsS0FHRXpMLE1BSEUrM0I7ZUFJd0M7U0FDdEJ4bEIsSUFMVnZUO0tBTWhCLGdCQUFJeUQ7TUFDUSxJQUFOekMsTUE3Vk51c0Msa0JBMlYwQmg2QixHQUVNLFdBUFh5c0IsT0FBTTkvQixPQU12QnVEO01BRUYsT0F4TEVpckMsWUFnTEYzZSxPQUFFdGpCLEtBT0V6TCxNQVBFKzNCLEtBUXdDOzthQVJwQ2o1QjtTQWlCUW1sQyxJQWpCUm5sQyxRQWlCQzQ2QixRQWpCRDU2QjtlQUFJRTthQUFBQTs7Z0JBc0JadVQsR0FBRTlQO2dCQUNNO2lCQUFOekM7bUJBNVlOcXNDO3FCQXNZYTNTO3FCQUFPdUs7cUJBdldwQnNJLGtCQTRXSWg2QixHQUNpRCxXQXZCaEN5c0IsT0FBTTkvQixPQXNCckJ1RDtnQkFFSixPQXhNRWlyQyxZQWdMRjNlLE9BQUV0akIsS0F1QkV6TCxNQXZCRSszQjtlQXdCd0M7O2dCQVY1Q3QxQjtnQkFDUSxJQUFOekMsTUFwWU5xc0MsWUFzWWEzUyxPQUFPdUssR0FGWSxXQWZYakYsT0FBTTkvQixPQWN2QnVEO2dCQUVGLE9BaE1FaXJDLFlBZ0xGM2UsT0FBRXRqQixLQWVFekwsTUFmRSszQjtlQWdCd0M7U0FDVjhWLE1BakJ0Qjd1QztLQWtCaEIsZ0JBQUl5RDtNQUNRO09BQU56QztTQXhZTnFzQztXQXNZYTNTLE9BQU91SyxHQXZXcEJzSSxrQkF1V3NDc0IsS0FFZSxXQW5CaEM3TyxPQUFNOS9CLE9Ba0J2QnVEO01BRUYsT0FwTUVpckMsWUFnTEYzZSxPQUFFdGpCLEtBbUJFekwsTUFuQkUrM0IsS0FvQndDOztRQVNwQ2dDLFVBN0JBajdCO2NBQUlFO1lBQUFBOztlQWtDWmlsQyxHQUFFMXhCLEdBQUU5UDtlQUNJO2dCQUFOekM7a0JBeFpOcXNDO29CQWtaWXRTO29CQUtSa0s7b0JBeFhKc0ksa0JBd1hNaDZCLEdBQytDLFdBbkNoQ3lzQixPQUFNOS9CLE9Ba0NuQnVEO2VBRU4sT0FwTkVpckMsWUFnTEYzZSxPQUFFdGpCLEtBbUNFekwsTUFuQ0UrM0I7Y0FvQ3dDOztlQVY1Q2tNLEdBQUV4aEM7ZUFDTSxJQUFOekMsTUFoWk5xc0MsWUFrWll0UyxTQUhSa0ssR0FDNEIsV0EzQlhqRixPQUFNOS9CLE9BMEJyQnVEO2VBRUosT0E1TUVpckMsWUFnTEYzZSxPQUFFdGpCLEtBMkJFekwsTUEzQkUrM0I7Y0E0QndDO1FBQ2YrVixNQTdCakI5dUM7SUE4QmhCLGdCQUFJaWxDLEdBQUV4aEM7S0FDTTtNQUFOekM7UUFwWk5xc0M7VUFrWll0UyxTQUNSa0ssR0FwWEpzSSxrQkFtWGlDdUIsS0FFb0IsV0EvQmhDOU8sT0FBTTkvQixPQThCckJ1RDtLQUVKLE9BaE5FaXJDLFlBZ0xGM2UsT0FBRXRqQixLQStCRXpMLE1BL0JFKzNCLEtBZ0N3QztHQUlBO1lBK0NoRG9XLHVCQUlFcGYsR0FBRXRqQixLQUFJbk8sTUFBS2lFLE9BQU1EO0lBQUssR0FBWEM7U0FFRHdpQyxVQUZDeGlDO0tBR2IsZ0JBQUlrQjtNQUNGLE9BUkYrckMsWUFJRXpmLEdBQUV0akIsS0FBSW5PLE1BRUl5bUMsU0FFbUIsV0FKWnppQyxHQUdmbUIsSUFDZ0M7O0lBSFAsZUFEekJnSixLQUFlbks7SUFDSjtLQUFBLE9BQUEsdUJBeFFYa3NDLG1CQXVRRnplLFNBQU16eEI7O0lBQ08sT0F4UVhrd0MseUJBdVFGemUsU0FBTXp4QjtHQUk0QjtZQVJwQ2t4QyxZQUlFemYsR0FBRXRqQixLQUFJbk8sTUFBS2lFLE9BQU1EO0ksdUJBSm5CNnNDLGlCQUlFcGYsR0FBRXRqQixLQUFJbk8sTUFBS2lFLE9BQU1EOztZQVFmbXRDLHdCQUVGMWYsR0FBRTVpQixHQUFFNHJCO0lBQU8sSUFBWC9CLE1BQUFqSCxHQUFJOE0sUUFBQTlEO0lBQU87ZUFBUDhELG9CQXNFRixPQUFBLFdBdEVGN0YsS0FBRTdwQjtZQUFFMHZCOztRQUVJLElBREh2K0IsT0FERHUrQixVQUVJLE9BSk42UyxhQUVGMVksS0FBRTdwQixHQUNHN087UUFDRyxzQjs7UUFFQSxJQURFQyxTQUhOcytCLFVBSUksT0FOTjZTLGFBRUYxWSxLQUFFN3BCLEdBR1E1TztRQUNGLHNCOzttQkFKSnMrQjs7U0FNSSxJQURZcitCLFNBTGhCcStCLFVBTUksT0FSTjZTLGFBRUYxWSxLQUFFN3BCLEdBS2tCM087U0FDWixzQjs7O1NBRUEsSUFEZUMsU0FQbkJvK0IsVUFRSSxPQVZONlMsYUFFRjFZLEtBQUU3cEIsR0FPcUIxTztTQUNmLHNCOztRQUVPO1NBRFFDLFNBVG5CbStCO1NBVVcsT0FaYjZTLGFBRUYxWSxLQUFFN3BCLEdBU3FCek87U0FDZixzQjtRQUFBLHNCOzttQkFWSm0rQjs7U0FZSSxJQURpQmwrQixTQVhyQmsrQixVQVlJLE9BZE42UyxhQUVGMVksS0FBRTdwQixHQVd1QnhPO1NBQ2pCLHNCOzs7U0FFQSxJQURvQkMsU0FieEJpK0IsVUFjSSxPQWhCTjZTLGFBRUYxWSxLQUFFN3BCLEdBYTBCdk87U0FDcEIsc0I7O1FBRU87U0FEYUMsU0FmeEJnK0I7U0FnQlcsT0FsQmI2UyxhQUVGMVksS0FBRTdwQixHQWUwQnRPO1NBQ3BCLHNCO1FBQUEsc0I7O1lBQ1dDLFNBakJmKzlCLFVBaUJTNzhCLE9BakJUNjhCLFVBaUJJLzhCLE1BakJKKzhCO1FBa0JGLE9BcURKOFMsd0JBdkVFM1ksS0FBRTdwQixHQWlCaUJyTyxRQUFYZ0IsS0FBS0U7O1lBRVFoQixTQW5CakI2OUIsVUFtQlcxOEIsU0FuQlgwOEIsVUFtQk05OEIsUUFuQk44OEI7UUFvQkYsT0FtREo4Uyx3QkF2RUUzWSxLQUFFN3BCLEdBbUJtQm5PLFFBQVhlLE9BQUtJOztZQUVVakIsU0FyQnJCMjlCLFVBcUJldjhCLFNBckJmdThCLFVBcUJVNThCLFFBckJWNDhCO1FBc0JGLE9BaURKOFMsd0JBdkVFM1ksS0FBRTdwQixHQXFCdUJqTyxRQUFYZSxPQUFLSzs7WUFFRW5CLFVBdkJqQjA5QixVQXVCV3A4QixTQXZCWG84QixVQXVCTXo4QixRQXZCTnk4QjtRQXdCRixPQStDSjhTLHdCQXZFRTNZLEtBQUU3cEIsR0F1Qm1CaE8sU0FBWGlCLE9BQUtLOztZQUVNckIsVUF6QmpCeTlCLFVBeUJXajhCLFNBekJYaThCLFVBeUJNdDhCLFFBekJOczhCO1FBMEJGLE9BNkNKOFMsd0JBdkVFM1ksS0FBRTdwQixHQXlCbUIvTixTQUFYbUIsT0FBS0s7O21CQXpCWGk4Qjs7U0E0QkksSUFEVXg5QixVQTNCZHc5QixVQTRCSSxPQTlCTjZTLGFBRUYxWSxLQUFFN3BCLEdBMkJnQjlOO1NBQ1Ysc0I7OztTQUVBLElBRGFDLFVBN0JqQnU5QixVQThCSSxPQWhDTjZTLGFBRUYxWSxLQUFFN3BCLEdBNkJtQjdOO1NBQ2Isc0I7O1FBRU87U0FETWdDLFVBL0JqQnU3QjtTQWdDVyxPQWxDYjZTLGFBRUYxWSxLQUFFN3BCLEdBK0JtQjdMO1NBQ2Isc0I7UUFBQSxzQjs7WUFoQ0pDLFVBQUFzN0IsVUFBQUEsUUFBQXQ3Qjs7WUFBQUMsVUFBQXE3QixVQUFBQSxRQUFBcjdCOztZQUFBRSxVQUFBbTdCLFVBQUFBLFFBQUFuN0I7O1FBa0RJLElBRFVFLFVBakRkaTdCLFVBa0RJLE9BcERONlMsYUFFRjFZLEtBQUU3cEIsR0FpRGdCdkw7UUFDVixzQjs7WUFDZ0JDLFVBbkRwQmc3QixVQW1EYTM3QixRQW5EYjI3QjtRQW9ERjtTQUFBLElBQWE5RCxnQkFFRyxPQTNoQnBCcVUsT0F5aEJpQnJVLEtBREU3M0I7U0FHWCxPQXhESnd1QztrQkFFRjFZO2tCQUFFN3BCO2tCQXNESSw4Q0FIa0J0TCxVQUdrQjs7UUFwQjNCO1NBRFRHLFVBakNGNjZCO1NBa0NXLE9BcENiNlMsYUFFRjFZLEtBQUU3cEIsR0FpQ0luTDtTQUNFLHNCO1FBQUEsc0I7O1FBRUEsSUFERkUsVUFuQ0YyNkIsVUFvQ0ksT0F0Q042UyxhQUVGMVksS0FBRTdwQixHQW1DSWpMO1FBQ0Usc0I7O1lBcENKQyxVQUFBMDZCLFVBQUFBLFFBQUExNkI7O21CQUFBMDZCOzthQWlFeUN4NkIsVUFqRXpDdzZCLFVBQUFRO2FBQUpwRyxNQUFBRCxLQWlFNkMxNEIsT0FBQStEO2tCQWpFN0MwdEIsRUFrRW9CNmYsS0FBTyxPQXBFekJGLGFBRUZ6WSxLQWtFb0IyWSxLQUR5QnR4QyxNQUNLO2FBbEVsRDA0QixNQUFBakgsR0FBSThNLFFBQUFROzs7YUFtRXlDd1MsVUFuRXpDaFQsVUFBQStJO2FBQUozTyxNQUFBRCxLQW1FNkMxNEIsT0FBQXV4QztrQkFuRTdDOWYsRUFvRW9CNmYsS0FBTyxPQXRFekJGLGFBRUZ6WSxLQW9Fb0IyWSxLQUR5QnR4QyxNQUNLO2FBcEVsRDA0QixNQUFBakgsR0FBSThNLFFBQUErSTs7OztRQTBDRixNQUFBOztRQWNNLElBRGFrSyxVQXZEakJqVCxVQXdESSxPQTFETjZTLGFBRUYxWSxLQUFFN3BCLEdBdURtQjJpQztRQUNiLHNCOztRQUVBLElBRGFDLFVBekRqQmxULFVBMERJLE9BNURONlMsYUFFRjFZLEtBQUU3cEIsR0F5RG1CNGlDO1FBQ2Isc0I7O1FBRUEsSUFET0MsVUEzRFhuVCxVQTRESSxPQTlETjZTLGFBRUYxWSxLQUFFN3BCLEdBMkRhNmlDO1FBQ1Asc0I7O1lBQ1lDLFVBN0RoQnBULFVBNkRXejZCLE1BN0RYeTZCO1FBOERGLE9BalBKeVM7aUNBaVBpQyxrQkE5RC9CdFksS0FBRTdwQixHQThEZ0M7O2lCQURuQi9LO2lCQUFLNnRDOztZQXhCRkMsVUFyQ2RyVCxVQXFDSXQ2QixRQXJDSnM2QjtRQXNDRjtTQUFBLE9BQUE7a0JBd0RKc1QsMEJBOUZFblosS0FBRTdwQixHQXFDZ0IraUMsU0FBVjN0Qzs7UUFDTixPQXdESjR0QyxnQ0E5RkVuWixLQUFFN3BCLEdBcUNnQitpQyxTQUFWM3RDOzs7R0FpQ0g7WUF4RUhtdEMsYUFFRjNmLEdBQUU1aUIsR0FBRTRyQjtJLHVCQUZGMFcsa0JBRUYxZixHQUFFNWlCLEdBQUU0ckI7O1lBdUVONFcsd0JBSUU1ZixHQUFFNWlCLEdBQUU0ckIsS0FBSWo1QixLQUFJRTtJQUFRLFVBQVpGO2VBQUlFO01BSUosV0FqRk4wdkMsYUE2RUYzZixHQUFFNWlCLEdBQUU0ckI7TUFJSSxzQjs7UUFKSS80QjtNQU1HLElBQUEsT0FuRmIwdkMsYUE2RUYzZixHQUFFNWlCLEdBQUU0ckIsTUFNSSxzQjtNQUFBLHNCOztLQUpBLFdBL0VOMlcsYUE2RUYzZixHQUFFNWlCLEdBQUU0ckI7S0FFSSxzQjs7YUFGQWo1QjtlQUFJRTtNQVVKLFdBdkZOMHZDLGFBNkVGM2YsR0FBRTVpQixHQUFFNHJCO01BVUksc0I7O1FBVkkvNEI7TUFZRyxJQUFBLE9BekZiMHZDLGFBNkVGM2YsR0FBRTVpQixHQUFFNHJCLE1BWUksc0I7TUFBQSxzQjs7S0FKQSxXQXJGTjJXLGFBNkVGM2YsR0FBRTVpQixHQUFFNHJCO0tBUUksc0I7O2NBUkkvNEI7S0FnQkcsSUFBQSxPQTdGYjB2QyxhQTZFRjNmLEdBQUU1aUIsR0FBRTRyQixNQWdCSSxzQjtLQUFBLHNCOztPQWhCSS80QjtLQWtCVTtNQUFBLE9BL0ZwQjB2QyxhQTZFRjNmLEdBQUU1aUIsR0FBRTRyQjtNQWtCVyxzQjtNQUFQLHNCO0tBQUEsc0I7O0lBSk8sV0EzRmIyVyxhQTZFRjNmLEdBQUU1aUIsR0FBRTRyQjtJQWNJLG9CO0lBQUEsc0I7R0FJc0M7WUFDaERvWCw4QkFHRXBnQixHQUFFNWlCLEdBQUU0ckI7SUFITjtLQU9VLElBREl4MkIsa0JBQ0osT0FQVjZ0QyxtQkFHRXJnQixHQUFFNWlCLEdBQUU0ckIsS0FHUXgyQjtLQUNKLHNCOztJQUZOO0tBQUEsT0FBQSx1QkFyR0FrdEMsb0JBbUdGMWYsR0FBRTVpQixHQUFFNHJCOztJQUVGLE9BckdBMFcsMEJBbUdGMWYsR0FBRTVpQixHQUFFNHJCO0dBSXNDO1lBUDVDcVgsbUJBR0VyZ0IsR0FBRTVpQixHQUFFNHJCO0ksdUJBSE5vWCx3QkFHRXBnQixHQUFFNWlCLEdBQUU0ckI7O1lBWUZzWCxXQUFXbGpDLEdBQUVWO0lBQU0sSUFBTkMsUUFBQUQ7SUFBTTtlQUFOQyxvQkFlVztZQWZYQTs7UUFFVDtTQURlakwsYUFETmlMO1NBQ0c2RyxJQURIN0c7U0FFYnBKLElBMTVDSjgzQix5QkF5NUN1QjM1QjtRQURuQjR1QyxXQUFXbGpDLEdBQ0tvRztRQUVwQixPQUFBLHVCQUhlcEcsR0FFWDdKOztvQkFGYW9KLFVBTUdtaUMsTUFOSG5pQzs7YUFBQUM7U0FBYjBqQyxXQUFXbGpDLEdBTUswaEM7U0FESix1QkFMRDFoQzthQUFFVCxRQUFBQzs7O2FBQUFpVTtTQUFieXZCLFdBQVdsakMsR0FNSzBoQztTQUNKLHVCQVBEMWhDO2FBQUVULFFBQUFrVTs7OztZQVlIdGUsSUFaR29LLFVBWU40akMsTUFaTTVqQztRQUFiMmpDLFdBQVdsakMsR0FZSm1qQztRQUFpQixPQUFBLFdBQWRodUMsR0FaQzZLOztZQWFMb2pDLE1BYk83akM7UUFBYjJqQyxXQUFXbGpDLEdBYUxvakM7UUFBa0IsT0FBQSx1QkFiYnBqQzs7WUFjS21TLE1BZEg1UyxVQWNBOGpDLE1BZEE5akM7UUFBYjJqQyxXQUFXbGpDLEdBY0VxakM7UUFBVyxPQUFBLHNCQUFSbHhCOzs7WUFOR25QLE1BUk56RCxVQVFHb2lDLE1BUkhwaUM7UUFBYjJqQyxXQUFXbGpDLEdBUUsyaEM7UUFDUSxPQUFBLHVCQVRiM2hDLEdBUVFnRDs7WUFFRmpLLElBVkp3RyxVQVVDK2pDLE1BVkQvakM7UUFBYjJqQyxXQUFXbGpDLEdBVUdzakM7UUFDVSxPQUFBLHVCQVhidGpDLEdBVU1qSDs7O0dBS1M7WUFLMUJ3cUMsV0FBVzdyQyxHQUFFNEg7SUFBTSxJQUFOQyxRQUFBRDtJQUFNO2VBQU5DLG9CQWVXO1lBZlhBOztRQUVUO1NBRGVqTCxhQUROaUw7U0FDRzZHLElBREg3RztTQUVicEosSUE5NkNKODNCLHlCQTY2Q3VCMzVCO1FBRG5CaXZDLFdBQVc3ckMsR0FDSzBPO1FBRXBCLE9BQUEsOEJBSGUxTyxHQUVYdkI7O29CQUZhb0osVUFNR21pQyxNQU5IbmlDOzthQUFBQztTQUFiK2pDLFdBQVc3ckMsR0FNS2dxQztTQURKLDhCQUxEaHFDO2FBQUU2SCxRQUFBQzs7O2FBQUFpVTtTQUFiOHZCLFdBQVc3ckMsR0FNS2dxQztTQUNKLDhCQVBEaHFDO2FBQUU2SCxRQUFBa1U7Ozs7WUFZSHRlLElBWkdvSyxVQVlONGpDLE1BWk01akM7UUFBYmdrQyxXQUFXN3JDLEdBWUp5ckM7UUFBaUIsT0FBQSxXQUFkaHVDLEdBWkN1Qzs7WUFBRWtxQyxRQUFBcmlDLFVBQUFBLFFBQUFxaUM7O1lBY0d6dkIsTUFkSDVTLFVBY0E2akMsTUFkQTdqQztRQUFiZ2tDLFdBQVc3ckMsR0FjRTByQztRQUFXLE9BQUEsc0JBQVJqeEI7OztZQU5HblAsTUFSTnpELFVBUUdvaUMsTUFSSHBpQztRQUFiZ2tDLFdBQVc3ckMsR0FRS2lxQztRQUNRLE9BQUEsOEJBVGJqcUMsR0FRUXNMOztZQUVGakssSUFWSndHLFVBVUMrakMsTUFWRC9qQztRQUFiZ2tDLFdBQVc3ckMsR0FVRzRyQztRQUNVLE9BQUEsOEJBWGI1ckMsR0FVTXFCOzs7R0FLUztZQU0xQnlxQyxXQUFXOXJDLEdBQUU0SDtJQUFNLElBQU5DLFFBQUFEO0lBQU07ZUFBTkMsb0JBZVc7WUFmWEE7O1FBRVQ7U0FEZWpMLGFBRE5pTDtTQUNHNkcsSUFESDdHO1NBRWJwSixJQW44Q0o4M0IseUJBazhDdUIzNUI7UUFEbkJrdkMsV0FBVzlyQyxHQUNLME87UUFFcEIsT0FBQSw4QkFIZTFPLEdBRVh2Qjs7b0JBRmFvSixVQU1HbWlDLE1BTkhuaUM7O2FBQUFDO1NBQWJna0MsV0FBVzlyQyxHQU1LZ3FDO1NBREosOEJBTERocUM7YUFBRTZILFFBQUFDOzs7YUFBQWlVO1NBQWIrdkIsV0FBVzlyQyxHQU1LZ3FDO1NBQ0osOEJBUERocUM7YUFBRTZILFFBQUFrVTs7OztZQVlIdGUsSUFaR29LLFVBWU40akMsTUFaTTVqQztRQUFiaWtDLFdBQVc5ckMsR0FZSnlyQztRQUFxRCxXQUFBLFdBQWxEaHVDO1FBQWtELE9BQUEsOEJBWmpEdUM7O1lBQUVrcUMsUUFBQXJpQyxVQUFBQSxRQUFBcWlDOztZQWNHenZCLE1BZEg1UyxVQWNBNmpDLE1BZEE3akM7UUFBYmlrQyxXQUFXOXJDLEdBY0UwckM7UUFBVyxPQUFBLHNCQUFSanhCOzs7WUFOR25QLE1BUk56RCxVQVFHb2lDLE1BUkhwaUM7UUFBYmlrQyxXQUFXOXJDLEdBUUtpcUM7UUFDUSxPQUFBLDhCQVRianFDLEdBUVFzTDs7WUFFRmpLLElBVkp3RyxVQVVDK2pDLE1BVkQvakM7UUFBYmlrQyxXQUFXOXJDLEdBVUc0ckM7UUFDVSxPQUFBLDhCQVhiNXJDLEdBVU1xQjs7O0dBS1M7WUFNOUIwcUM7SUFDUSxJQURrQjdYLGdCQUN4Qi93QixNQUFNO2FBQ04rbkIsRUFBRXRqQjtLQXZCQWtrQyxXQXNCRjNvQyxLQUNFeUU7S0FBbUMsV0FBQSw2QkFEckN6RTtLQUNxQyxPQUFBO0lBQXFCO0lBQzlELE9BL2JNMG1DLFlBOGJGM2UsTUFGd0JnSjs7WUFTMUI4WCxtQkFBbUI3dkM7SUFDckIsR0FBRywwQkFEa0JBLGNBQ0o7UUFDWDRGLDRCQUZlNUY7YUFHZjh2QztLQUFpQixPQUFyQixXQVpBRix1QkFTbUI1dkM7SUFHbUQ7YUFDOUQrdkMsYUFBYTNyQztLQUNuQixJQURtQkMsTUFBQUQ7S0FDbkI7U0FEbUJDLFFBRmpCdUIsS0FHYyxPQURHdkI7TUFFWCxZQUFBLGdCQU5TckUsS0FJRXFFO3NDQUlWLE9BSlVBO01BR0QsSUFIQzRVLE1BQUE1VSxhQUFBQSxNQUFBNFU7O0lBSVQ7SUFXQyxJQVZLKzJCLFNBTFZEOzs7O1NBZ0JKRSxPQVhjRDtLQUNoQjtTQVVFQyxTQWxCQXJxQztjQVNNLGdCQVhTNUYsS0FvQmZpd0M7TUFSZ0IsSUFIRjkzQixJQVdkODNCLGNBQUFBLE9BWGM5M0I7Ozs7SUFZSDtLQUFYKzNCLFdBQVcsOEJBckJJbHdDLEtBU0Rnd0MsUUFXZEMsT0FYY0Q7S0FLRkcsU0FWUkosYUFnQkpFOzs7O1NBR0FHLE9BVFlEO0tBQ2Q7U0FRRUMsU0FyQkF4cUM7TUFjTSxZQUFBLGdCQWhCUzVGLEtBdUJmb3dDOztNQU5zQixJQUhWMXZCLE1BU1owdkIsY0FBQUEsT0FUWTF2Qjs7OztPQUFBeXZCLFdBU1pDO1NBQ0FDOztLQUVBO01BQUk7T0FBQTtTQUFBO1dBQWMsOEJBMUJIcndDLEtBY0htd0MsUUFTWkMsT0FUWUQ7T0FVWkU7Ozs7O1VBQUFBLFNBckJBUDs7SUF5QlUsSUFBVlEsVUF4QklQLGFBbUJKSztPQUtBRSxZQTFCQTFxQyxLQUNBa3FDOzs7OzRCQWtCQUk7K0JBQUFBO2dDQUFBQSxvQkFTQUs7Z0NBVEFMLHNCQVNBSztnQ0FUQUwscUJBU0FLOzhCQVRBTDtXQVNBSyxXQTNCQVQ7OztVQTJCQVM7OztTQUFBQTs7SUFPSixXQWJJRixRQU1BRTtHQU9jO1lBT2xCQyxxQkFHQTF4QyxLQUFJaTVCO0lBQU8sVUFBWGo1QixrQkFDc0IsY0FEbEJpNUI7YUFBSmo1QixZQUVnQm1sQyxJQUZoQm5sQyxRQUVhd0QsSUFGYnhELFFBRXNCLGVBQVR3RCxHQUFHMmhDLElBRlpsTTtRQUdRNW9CLE1BSFpyUTtJQUdzQixlQUFWcVEsTUFIUjRvQjtHQUdzRDtZQWUxRDBZLHFCQUlBM3hDLEtBQUlFLE1BQ3VCKzRCO0lBQTdCLFVBRE0vNEI7aUJBQUFBOztTQVZVdVQsSUFVVnZULHlCQVZVdVQ7UUFXT3BUO0lBQ3ZCLFVBRkVMLGtCQUdzQixjQUZESyxRQUFNNDRCO0lBQzdCLFNBRkVqNUI7U0FJZ0JtbEMsSUFKaEJubEMsUUFJYXdELElBSmJ4RDtLQUlzQixlQUFUd0QsR0FBRzJoQyxJQUhLOWtDLFFBQU00NEI7O1FBSWY1b0IsTUFMWnJRO0lBS3NCLGVBQVZxUSxNQUpTaFEsUUFBTTQ0QjtHQUlzQztZQU9qRTJZLGtCQUFtQkMsaUJBQWdCM3dDO0lBaUJyQyxHQWpCcUIyd0M7U0FrQlpDLE9BbEJZRCxvQkFpQmpCRSxvQkFDS0Q7O1NBRExDO2FBaUJBQyx1QkFBdUJ6WixTQUFRL1k7S0FDakMsT0FBQSxXQTdIQXN4Qix1QkEwRm1DNXZDLEtBa0NWcTNCLFNBQVEvWTtJQUdoQjtJQUtuQixTQUFJeXlCLHlCQUF5QkM7S0FDM0IsT0FURUYsdUJBUXlCRTtJQUVDO2FBVTFCQyx1QkFBdUI1WixTQUFRbnlCLEdBQUU1QztLQUNuQyxPQUFBLFdBakpBc3RDLHVCQTBGbUM1dkMsS0FzRFZxM0IsU0FBUW55QixHQUFFNUM7SUFHbEI7YUFLZjR1QyxtQkFBbUI3WixTQUFROFosVUFBU3JzQjtLQUN0QyxPQUFBLFdBekpBOHFCLHVCQTBGbUM1dkMsS0E4RGRxM0IsU0FBUThaLFVBQVNyc0I7SUFHWDthQUlyQnNzQixNQUtKQyxXQTBqQlFMO0tBOWpCVzs7VUFxQm5CM1osVUFqQkFnYTtNQUNGO1VBZ0JFaGEsWUF5aUJRMlosU0F6akJnQixPQTRzQnhCTSxZQTdzQkFELFdBaUJBaGE7T0FmTSxZQUFBLGdCQTVFMkJyM0IsS0EyRmpDcTNCOzs7V0FqQlVrYSxZQWlCVmxhLGlCQUFBQSxVQWpCVWthOztVQWlCRkMsWUFBUm5hO1NBQVFtYSxjQXlpQkFSLFNBMWxCUkQseUJBMGxCUUM7OztnQkF2aUJKLGdCQTdGNkJoeEMsS0EyRnpCd3hDO1lBTVJDLFlBTkFwYSxTQUFRbWEsbUJBeWlCQVI7WUFuaUJSUyxZQU5BcGEsU0FBUW1hLFdBeWlCQVI7T0F0akJNek07TUFDWixPQXdzQkYrTSxZQTdzQkFELFdBaUJBaGEsU0FiY2tOOztTQStjZG1OLFlBbGNBcmE7O1FBa2NBcWEsY0F1R1FWOzs7TUFwR0YsSUF1Q0o5ckMsSUF2Q0ksZ0JBaGlCMkJsRixLQTZoQmpDMHhDO2VBMENFeHNDO2dCQUFBQTtRQXZDSSxlQXVDSkE7Ozs7MEJBS0Z5c0MsYUEvQ0FELG1CQXVHUVY7Ozs7YUEzRk1uTSxhQXBlVnVNLE1Bd2RKTSxtQkF1R1FWO21DQTNGTW5NOzs7O3FCQThCWjMvQjtlQUFBQTs7eUJBS0Z5c0MsYUEvQ0FELG1CQXVHUVY7Ozs7WUFoR01oTSxhQS9kVm9NLE1Bd2RKTSxtQkF1R1FWO2tDQWhHTWhNOzs7OztpQkFtQ1o5L0I7O1NBaEJZaWdDLGFBbGZWaU0sTUF3ZEpNLG1CQXVHUVY7K0JBN0VNN0w7OztnQkFnQlpqZ0M7ZUFBQUE7OztZQXhCWW9nQyxhQTFlVjhMLE1Bd2RKTSxtQkF1R1FWO29DQXJGTTFMOzs7V0FrQnNCO2NBcENwQ29NLHFCQXVHUVY7dUJBbkU0QixnQkFqa0JIaHhDLEtBNmhCakMweEM7O2FBcUNjaE0sYUE3ZlYwTCxNQXdkSk0sbUJBdUdRVjttQ0FsRU10TDs7OztZQUdBTyxhQWhnQlZtTCxNQXdkSk0sV0F1R1FWO21DQS9ETS9LOzs7O1lBekJBTyxhQXZlVjRLLE1Bd2RKTSxtQkF1R1FWO29DQXhGTXhLOzs7O1lBY0FLLGFBcmZWdUssTUF3ZEpNLG1CQXVHUVY7a0NBMUVNbks7OztlQTRDZCtLLFlBekVBRjs7OztvQkF5RUFFLGNBOEJRWjtvQ0EzQmtCLGdCQXptQk9oeEMsS0FzbUJqQzR4QztxQkFHb0QsTUFBQTtZQUNsQzthQUFaQyxZQXdJTjlCLGFBNUlBNkIsbUJBOEJRWjthQXpCQSxVQUFBLGdCQTNtQnlCaHhDLEtBMG1CM0I2eEM7Ozs7Ozs7YUFpQkcsTUFBQTs7WUFka0I7YUFBQSxVQTBKM0JDLGNBN0pNRCxXQTBCRWI7YUF2QlduWjthQUFYa2E7YUFDRUMsWUFvSVZqQyxhQXJJUWdDLFdBdUJBZjthQXJCSSxhQUFBLGdCQS9tQnFCaHhDLEtBOG1CdkJneUM7OztjQUdRO2VBQUoxdkM7aUJBQUk7O21CQWpuQmV0QzttQkFzbUJqQzR4QztvQkFRVUksWUFSVko7ZUFZeUIsV0FEWHR2QyxHQUpLdTFCO2VBS00sT0FKZm1hO2VBUEVDO2VBQVZDOzs7OzthQWFnQztjQUFBLFVBbUpsQ0osY0F6SlVFLFdBc0JGaEI7Y0FoQmlCemM7Y0FBWDRkO2NBQ0FDLFlBNkhkckMsYUE5SGNvQyxXQWdCTm5CO3VCQWRLLGdCQXRuQm9CaHhDLEtBcW5CbkJveUM7Y0FDMkIsTUFBQTthQUN2QjtjQUFKampDO2dCQUFJOztrQkF2bkJlblA7a0JBc21CakM0eEM7bUJBZWNRLFlBZmRSO2NBa0J5QixXQURYemlDLEtBVkswb0IsT0FPTXREO2NBSUEsT0FIWDZkO2NBZEZIO2NBQVZDOzs7WUFrQmEsTUFBQTs7Ozs7O2dCQWxCSEQsbUJBQUEvYSxnQkFBVmdiLFdBREZOOzs7WUF5QlV4SyxjQTFqQk5nSyxNQWtpQkZjLFVBNkJNbEI7K0JBN0JJaUIsa0JBd0JGN0s7OztlQUtWaUwsWUF2R0FYO1dBd0dGO1lBRW9CO2FBQVpZLGNBMkdOdkMsYUE5R0FzQyxXQUFRckI7YUFJQSxVQUFBLGdCQXhvQnlCaHhDLEtBdW9CM0JzeUM7Ozs7Ozs7Ozs7OzthQUdvQjtjQUFBLFVBNkgxQlIsY0FoSU1RLGFBSEV0QjtjQU1XaHRCO2NBQVh1dUI7Y0FDQUMsY0F1R1J6QyxhQXhHUXdDLGFBTkF2Qjt1QkFRRCxnQkE1b0IwQmh4QyxLQTJvQnpCd3lDO2NBQzJCLE1BQUE7YUFDdkI7Y0FBSkM7Z0JBQUk7O2tCQTdvQnFCenlDO2tCQW9vQmpDcXlDO21CQU9RRyxjQVBSSDs2QkFPUUcseUJBRUFDLEtBSFd6dUI7Ozs7Ozs7Ozs7Ozs7YUFTSDB1QjthQUFWQzthQUNNbkwsY0Eva0JSNEosTUE4a0JFdUIsWUFmRTNCOzZCQWVRMEIsa0JBQ0psTDs7O2FBR0FJLGNBbGxCUndKLE1BK2pCSmlCLFdBQVFyQjtrQ0FtQklwSjs7Ozs7WUFuR0ViLGNBL2VWcUssTUF3ZEpNLG1CQXVHUVY7a0NBaEZNaks7Ozs7WUFXQUUsY0ExZlZtSyxNQXdkSk0sbUJBdUdRVjtrQ0FyRU0vSjs7Ozs7T0FTQXZDLGFBbmdCVjBNLE1Bd2RKTSxtQkF1R1FWOzhCQTdETjlyQyxJQUNZdy9COztTQXZmQUQ7S0FDWixPQXFzQkY2TSxZQTdzQkFELFdBaUJBaGEsU0FWY29OO0lBWDBDO2FBMkJ4RGdOLFlBaUNBbUIsU0FuQmlCdmIsU0FtQkQyWixTQUFtQzV2QztLQTlCckQ7TUFBSXNWO01BQXFCbThCO01BQ3JCQztNQUFxQkM7TUFDckJ2aUM7Y0FDQXdpQyxTQUFTM2IsU0FBUXVaO01BRW5CLFdBRm1CQSwyQkF0Rm5CQzs7T0EyRmdCLFdBQUEsZ0JBNUdpQjd3QyxLQXVHdEJxM0I7T0FHVCxXQXBNSnVZLHVCQTBGbUM1dkMsS0F1R3RCcTNCOztNQUFRdVo7O0tBTU47Ozs7VUFxQkxjLFlBbkJTcmE7O01BQ2pCO1VBa0JRcWEsY0FBUVYsU0F4RmhCRCx5QkF3RmdCQztPQWpCSixlQUFBLGdCQWpIcUJoeEMsS0FrSXpCMHhDOzs7O1VBM0JOc0IsU0EyQk10QixXQTdCZXFCO1VBaUJkLElBUFF4QixZQW1CVEcsbUJBQUFBLFlBbkJTSDs7O1VBUmZ5QixTQTJCTXRCLFdBNUJObGhDO1VBZU8sSUFOUWdoQyxZQW1CVEUsbUJBQUFBLFlBbkJTRjs7O1VBUmZ3QixTQTJCTXRCLFdBN0JOb0I7VUFlTyxJQUxRbEIsWUFtQlRGLG1CQUFBQSxZQW5CU0U7OztVQVJmb0IsU0EyQk10QixXQTlCZW1CO1VBZWQsSUFKUVIsWUFtQlRYLG1CQUFBQSxZQW5CU1c7OztVQVJmVyxTQTJCTXRCLFdBOUJOaDdCO1VBY08sSUFIUXU4QixZQW1CVHZCLG1CQUFBQSxZQW5CU3VCOzs7Ozs7OztNQW1CNEJDLFVBN0J0Qkg7TUE2QmlCSSxTQTVCdEMzaUM7TUE0QmlDNGlDLFNBN0JqQ047TUE2QjJCTyxVQTlCTlI7TUE4QkNTLFNBOUJ0QjU4QjtRQThCTWc3QixjQUFRVixTQXhGaEJELHlCQXdGZ0JDO0tBU1o7TUFQRnRYO1FBRnNCNFo7V0FBS0Q7YUFqSDdCeEM7O2VBKzNCQTBDLGtCQTl3QkFYLFNBQVFsQjs7V0FBcUIyQjtNQVN6QixRQUFBLGdCQTNJNkJyekMsS0FrSXpCMHhDOzs7T0FXYTtRQUFBLFVBMm1CckI4QixlQXRuQlE5QixXQUFRVjtRQVdIblo7UUFBVDRiO09BRUYsT0F1QkZDO2dCQXBDQWQ7Z0JBV0lhO2dCQVhZekM7Z0JBQWFxQztnQkFBTUQ7Z0JBQUtEO2dCQUFLRDtnQkFBTTl4QztvQkFFakRzNEIsT0FTVzdCOzs7O01BS1AsT0FvQk42YjtlQXBDQWQ7ZUFBUWxCO2VBQVFWO2VBQWFxQztlQUFNRDtlQUFLRDtlQUFLRDtlQUFNOXhDO21CQUVqRHM0QjtZQUFBQTs7ZUFuSEZtWDtTQXFDQUksdUJBNEVRUztRQXFCSixPQWVKZ0M7aUJBcENBZDtpQkFBUWxCO2lCQUFRVjtpQkFBYXFDO2lCQUFNRDtpQkFBS0Q7aUJBQUtEO2lCQUFNOXhDOzs7UUErQmpELE9BS0ZzeUM7aUJBcENBZDtpQkFBUWxCO2lCQUFRVjtpQkFBYXFDO2lCQUFNRDtpQkFBS0Q7aUJBQUtEO2lCQUFNOXhDOzs7UUE0QmpELE9BUUZzeUM7aUJBcENBZDtpQkFBUWxCO2lCQUFRVjtpQkFBYXFDO2lCQUFNRDtpQkFBS0Q7aUJBQUtEO2lCQUFNOXhDOzs7SUFObkM7YUEwQ2hCc3lDO0tBaUJBZCxTQWRRdmIsU0FjUTJaLFNBQVE2QixPQUFNQyxNQUFLdGlDLE1BQUt1aUMsT0FBTTN4QyxLQUFJdEM7S0FicEQsR0FEVXU0QixZQWNRMlosU0E3SWhCRCx5QkE2SWdCQztLQVpaLElBSUpyRSxPQUpJLGdCQTNLNkIzc0MsS0F5S3pCcTNCO2VBTVJzVjtNQUNBLE9BaUVBZ0g7ZUExREFmO2VBZFF2YjtlQWNRMlo7ZUFBYzhCO2VBQUt0aUM7ZUFBS3VpQztlQUFNM3hDO2VBQUl0Qzs7ZUFBQUE7ZUFSbEQ2dEM7U0FRUStFLFlBZEFyYTtRQWNBcWEsY0FBUVYsU0E3SWhCRCx5QkE2SWdCQztjQUVkNEMsY0FBY2YsT0FBTXhiO01BQ3RCO09BQW9CLFFBOGpCcEJtYyxlQS9qQnNCbmMsU0FGTjJaO09BR0hoeUM7T0FBVHkwQztNQUVFLE9BMkJOSTtlQWhDQWpCO2VBR0lhO2VBSFl6QztlQUVBNkI7ZUFGY0M7ZUFBS3RpQztlQUFLdWlDO2VBQU0zeEM7ZUFBSXRDO21CQUdyQ0U7S0FFYTtLQUN0QixJQUVKODBDLFNBRkksZ0JBN0w2Qjl6QyxLQXVMekIweEM7Y0FRUm9DO2NBQUFBLFFBRGMsT0FMWkYsY0FGc0JmLE9BQWhCbkI7O21CQVFSb0M7YUFBQUE7O1NBV0EsT0FhQUQ7a0JBaENBakI7a0JBQVFsQjtrQkFBUVY7a0JBQVE2QjtrQkFBTUM7a0JBQUt0aUM7a0JBQUt1aUM7a0JBQU0zeEM7a0JBQUl0Qzs7OztZQXRLbEQreEM7VUF1TEE7V0FBQSxPQWpCUWE7V0FBZ0IyQixVQUFBUixpQkFReEJpQjtVQVNBLE9BZkVGLGNBRnNCUDs7OztZQXRLeEJ4QztlQXNNQWdEO2dCQWhDQWpCO2dCQUFRbEI7Z0JBQVFWO2dCQUFRNkI7Z0JBQU1DO2dCQUFLdGlDO2dCQUFLdWlDO2dCQUFNM3hDO2dCQUFJdEM7O2VBaklsRG15Qyx1QkFpSVFTO0lBTmU7YUFzQ3ZCbUM7S0FHQWpCLFNBQVF2YixTQUFRMlosU0FBUTZCLE9BQU1DLE1BQUt0aUMsTUFBS3VpQyxPQUFNM3hDLEtBb0I5Q3RDLEtBcEJzREU7S0FDeEQsR0FEVXE0QixZQUFRMlosU0FoTGhCRCx5QkFnTGdCQztjQUVkK0MsV0FBOEJDO01BQ2hDLE9Bb0JBTDtlQXZCQWY7ZUFBUXZiO2VBQVEyWjtlQUFjOEI7ZUFBS3RpQztlQUFLdWlDO2VBQU0zeEM7ZUFvQjlDdEM7ZUFwQnNERTtlQUV0QmcxQztlQUVqQixnQkE5TmtCaDBDLEtBME56QnEzQjtLQUlvQjtlQWdCNUJ2NEIsa0JBQU8sT0FsQkxpMUMsV0FrQkZqMUM7ZUFwQnNERSx1QkFBQUEsTUFjL0IsT0FackIrMEM7UUFGc0JsQjtnQkFBOEI3ekMsbUJBa0IzQixPQWhCekIrMEM7VUFjc0I3eEMsSUFoQjhCbEQ7TUFnQmQsT0FkdEMrMEMsa0JBY3NCN3hDOztlQWhCOEJsRCxtQkFpQjFCLE9BZjFCKzBDO1NBYXVCbmpDLE1BZjZCNVI7S0FlYixPQWJ2QyswQyxrQkFhdUJuakM7SUFLSjthQUdyQitpQztLQXdvQm1CZjtLQUFRdmI7S0E5TkoyWjtLQXZhQzhCO0tBQUt0aUM7S0FBS3VpQztLQUFNM3hDO0tBQUl0QztLQUFJRTtLQUFLZzFDO0tBcW9CRnJIO0tBbm9CckQ7TUFBSXNIO01BQTJCQztNQUMzQkM7TUFBMkJDO01BQzNCQztNQUEyQkM7Y0FHM0JDLGdCQUxBTixrQkFLSixPQVAwQm5CLEtBT21CO2NBQ3pDMEIsZ0JBTjJCTix5QkFGQTFqQyxLQVFZO2NBQ3ZDaWtDLGlCQU5BTiwwQkFIZ0NwQixNQVNVO2NBQzFDMkIsZUFQMkJOLHdCQUhXaHpDLElBVUU7Y0FDeEN1ekMsZUFQQU4sd0JBSjBDdjFDLElBV0Y7Y0FDeEM4MUMsZ0JBUjJCTix5QkFKbUJ0MUMsS0FZTDtjQUN6QzYxQyxtQkFUQVIsd0JBSm1ETCxRQWFQO2NBRTVDYztNQVlELElBQ0loMkMsTUFqQkg2MUMsWUFnQmlCLFFBZmpCQztNQWVpQix5Q0FDTyxPQUFyQjkxQztnQkFBQUEsa0JBQ3FCO2VBRHJCQTttQkFBQUE7aUJBL1BMK3hDOzttQkErM0JBMEMsa0JBdkJtQlgsU0FBUXZiO2lCQXptQnRCdjRCO2FBQUFBLFFBUTJCLE9BUjNCQTtVQUVvQm9ELElBRnBCcEQ7TUFHQSxPQWxRTCt4Qzt1QkFpUXlCM3VDO2dCQThuQnpCcXhDLGtCQXZCbUJYLFNBQVF2YjtLQWhtQlE7Y0FHakMwZCxXQUFXcEksTUFBaUI3dEM7TUFDOUIsVUFEOEJBLGtCQUVkLE9BRmNBO2VBQUFBO21CQUFBQTtpQkEzUTlCK3hDOzttQkErM0JBMEMsa0JBdkJtQlgsU0FBUXZiLFNBN2xCZHNWO2lCQUFpQjd0QzthQUFBQSxRQUdPLE9BSFBBO1VBS1IrNEIsUUFMUS80QjtNQU01QixPQWpSRit4Qzt1QkFnUnNCaFo7Z0JBK21CdEIwYixrQkF2Qm1CWCxTQUFRdmIsU0E3bEJkc1Y7S0FVb0M7Y0FNL0NxSSxXQUFXOXZDLEdBQXFCcEc7TUFBd0IsVUFBeEJBLGtCQUNsQjtlQURrQkE7Y0FBQUE7O2NBTWIrNEIsUUFOYS80QjtVQU9oQyxPQWxTRit4Qzt3QkFpU3FCaFo7b0JBOGxCckIwYixrQkF2Qm1CWCxTQUFRdmIsU0E3a0JkbnlCOztjQUVTb25DLFVBRll4dEMsUUFFRixXQUFWd3RDOztjQUNBMkksVUFIWW4yQztVQUloQyxPQS9SRit4Qzt3QkE4UnNCb0U7b0JBaW1CdEIxQixrQkF2Qm1CWCxTQUFRdmIsU0E3a0JkbnlCOztNQVNNLE9BMmxCbkJxdUMsa0JBdkJtQlgsU0FBUXZiLFNBN2tCZG55QjtLQVMrQztjQUUxRGd3QyxZQUFZaHdDLEdBQUksT0FYaEI4dkMsV0FXWTl2QyxHQXhEWnl2QyxZQXdEeUM7Y0FDekNRLGdCQUFnQmp3QyxHQUFJLE9BWnBCOHZDLFdBWWdCOXZDLEdBdkRoQjJ2QyxnQkF1RGlEOzs7TUFXckQsU0FzakJxRGxJO2NBQUFBOzs7V0F2YXZDckgsYUE3WVI4TCxNQW96QnVCL1osU0E5TkoyWjtXQXhWckJvRSxzQkErSVU5UDs7O1VBZ0JFO1dBQVYrUCxVQStUSkMscUJBd0YyQmplLFNBOU5KMlo7V0F4TFgvSyxhQTlaUm1MLE1BNlpBaUUsaUJBeUxtQnJFO1dBdkxYdUUsVUEvWlJuRSxNQW96QnVCL1osU0F2WnZCZ2U7V0FHQW5hLFlBem9ETjZILGFBd29EY3dTO1VBRVQsR0F4T0RiO1dBeU9jO1lBQVZjLGdCQWhMSk4saUJBOEtFaGE7NEJBRUVzYSxXQUpNdlA7OytCQTVLVmlQLGlCQThLRWhhLFdBRlErSztjQWhLVm1QOzs7Y0FBQUEsYUE5UEVoRSxNQW96QnVCL1osU0E5TkoyWjs7VUEvVHBCO1dBRFNqSyxjQXRSUnFLLE1Bb3pCdUIvWixTQTlOSjJaO1dBL1RwQjthQTlGRDBELHlCQTZGVTNOLHdCQUFBQTtXQXhCVnFPOzs7Y0EyRFV4TixjQXpUUndKLE1Bb3pCdUIvWixTQTlOSjJaLGFBNVJuQnlFO1VBQ0QsR0FsSURmO1dBbUljO1lBQVZnQixpQkFGRkQ7NEJBRUVDLFdBSE05Tjs7K0JBQ1I2TixXQURRN047Y0EzRFZ3Tjs7O1VBc0NRO1dBQU5yMUMsUUE3RUZnMUMsV0E2bEJpRHBJLE1BeG5CakRrSTtXQXlHVTlNLGNBclNScUosTUFvekJ1Qi9aLFNBOU5KMlo7VUFoVHBCLEdBN0dEMEQ7V0E4R2M7WUFBVmlCLGdCQXBESlI7NEJBb0RJUSxXQUZNNU47O1dBTVI7WUFBQSxVQXJaTnlJLHFCQThZTXp3QyxPQUNRZ29DO1lBS2lCRTtZQUFOOW5DOzJCQUFBQSxPQUFNOG5DO2NBNUMzQm1OOzs7YUFzakJ5Qi9kLFlBOU5KMlosU0FqbkJ2QkQseUJBaW5CdUJDO1VBR1Y7V0FBWGx3QyxXQXZvRkpxMkI7V0F3b0ZJckQsb0JBQVM1dUIsR0FDWCxPQXRvRkZreUIsZ0JBb29GSXQyQixVQUNTb0UsR0FDZTtXQUV4QjB3QztzQkFBVWpnQyxLQUFFelE7Y0FDZCxHQURjQSxLQUFGeVE7bUJBQ1p2UixJQURZdVI7O2dCQXhvRmR5aEIsZ0JBb29GSXQyQixVQU15Qix1QkFEM0JzRDtnQkFDRSxXQURGQTttQkFEY2MsTUFDZGQ7b0JBQUFBOzs7O2FBRUk7V0FHRnl4QztzQkFBb0J4ZTtjQUN0QixPQUFBLFdBbndCRnVZLHVCQTBGbUM1dkMsS0F3cUJYcTNCO2FBRzBCO1dBVTlDeWU7K0JBQXVCemUsU0FBUTJaO2NBQ2pDLElBRHlCVSxZQUFBcmE7Y0FDekI7a0JBRHlCcWEsY0FBUVYsU0Ezb0JqQ0QseUJBMm9CaUNDO2VBRTNCLElBTUo5ckMsSUFOSSxnQkF2ckIyQmxGLEtBcXJCUjB4Qzt5QkFRdkJ4c0M7MEJBQUFBLEdBSkEsT0FKdUJ3c0M7MkJBQUFBO2dCQVN2QjtpQkFBQSxPQUFBOzBCQUdBcUUsdUNBWitCL0UsU0FRL0I5ckM7O2dCQUNBLE9BR0E2d0M7MENBWitCL0UsU0FRL0I5ckM7O2VBOUJBNHVCO21CQXNCdUJ5ZCxZQUFBRyxtQkFBQUEsWUFBQUg7O2FBUzBCO1dBR2pEd0U7K0JBQTBCMWUsU0FvQlMyWixTQXBCTzlyQztjQUM1QyxJQUQ0QndzQyxZQUFBcmEsU0FvQmlCMWhCLE1BcEJEelE7Y0FDNUM7a0JBRDRCd3NDLGNBb0JTVixTQTNxQnJDRCx5QkEycUJxQ0M7ZUFsQi9CLElBRnNDcDdCLE1BRXRDLGdCQW5zQjJCNVYsS0Fpc0JMMHhDOzs7eUJBQWdCOTdCOzJCQUFBQTs0QkFBQUE7a0JBbEMxQ2tlLFNBc0QyQ25lO2tCQWhCM0MsT0FKMEIrN0I7OzsrQkFBZ0I5N0I7eUJBQUFBO3FCQW9CZjQ3QixZQXBCREU7b0JBb0JDRixjQUFRUixTQTNxQnJDRCx5QkEycUJxQ0M7aUJBRS9CLElBYUpuN0IsTUFiSSxnQkF2dEIyQjdWLEtBcXRCSnd4QzsyQkFlM0IzN0I7c0JBZjJCMjdCLHVCQUFRUjttQkEzcUJyQ0QseUJBMnFCcUNDO2tCQVN2QixJQUNSbDdCLE1BRFEsZ0JBOXRCbUI5VixLQXF0Qkp3eEM7NEJBVXZCMTdCLGNBQUFBO21CQUdLLE9BMURUKy9CLG9CQTZDMkJyRTtrQkFuRDNCb0UsVUFtRDJDamdDLEtBVXZDRzs2QkFWdUIwN0I7a0JBV3ZCO21CQUFBLE9BQUE7NEJBM0NKc0Usa0NBZ0NtQzlFOztrQkFXL0IsT0EzQ0o4RSx3Q0FnQ21DOUU7OzJCQWVuQ243QjtrQkFyRUFpZSxTQXNEMkNuZTtrQkF0RDNDbWU7a0JBMkRBLE9BTDJCMGQ7O2lCQW5EM0JvRSxVQW1EMkNqZ0MsS0FlM0NFOzRCQWYyQjI3QjtpQkFnQjNCO2tCQUFBLE9BQUE7MkJBaERBc0Usa0NBZ0NtQzlFOztpQkFnQm5DLE9BaERBOEUsd0NBZ0NtQzlFOzswQkFBUXI3QjtpQkF0RDNDbWUsU0FrQzBDbGU7NEJBQWhCODdCO2lCQVMxQjtrQkFBQSxPQUFBOzJCQXJCQW9FLGtDQWdDbUM5RTs7aUJBWG5DLE9BckJBOEUsd0NBZ0NtQzlFOzs7eUJBQVFyN0IsS0E3QzNDa2dDLG9CQXlCMEJuRTtlQWxDMUI1ZCxTQXNEMkNuZTs7Z0JBcEJqQjQ3QixZQUFBRztnQkFBQUEsWUFBQUg7Z0JBb0JpQjU3QixNQXBCREM7O2FBaUJRO1dBakJsRG9nQztzQkFBMEIzZSxTQW9CUzJaLFNBcEJPOXJDO2M7dUJBQTFDNndDLCtCQUEwQjFlLFNBb0JTMlosU0FwQk85ckM7O2FBd0xqQm15QixZQTlOSjJaLFNBam5CdkJELHlCQWluQnVCQztvQkErRWpCLGdCQTF1QjJCaHhDLEtBeTNCTnEzQjs7WUFqSnpCcWEsWUFpSnlCcmE7WUFqSmhCNGU7WUF6RGdCMUUsWUF5RHpCRzs7ZUFBU3VFLGFBekRnQjFFLFlBME1BbGE7YUExTUFrYSxjQXBCSlAsU0FqbkJ2QkQseUJBaW5CdUJDO1VBc0JmO1dBQUo5ckMsSUFBSSxnQkFqckJ5QmxGLEtBK3FCTnV4QztXQThEekJXLFdBNUNBOEQsMEJBbEJ5QnpFLG1CQXBCSlAsU0FzQm5COXJDO1dBNkRGdXlCLGFBOXNGSkYsZ0JBOG5GSXoyQjtXQWxMWW8xQyxhQTRQSEQsVUFwc0ZiemUsYUEwc0ZJQyxjQUFBQTtXQWpRVXdSLGNBeGFSbUksTUF3cUJGYyxVQWxGcUJsQjtVQTdLcEIsR0FoUEQwRDtXQWlQYztZQUFWeUIsaUJBeExKakIsaUJBcUxZZ0I7NEJBR1JDLFdBRk1sTjs7K0JBdExWaU0saUJBcUxZZ0IsWUFDRmpOO2NBMUtWbU07Ozs7V0FxSVUvTCxjQW5ZUitILE1Bb3pCdUIvWixTQTlOSjJaO1dBeFZyQm9FLHNCQXFJVS9MOzs7VUF0SEE7V0FYUitNO3NCQUFZN1I7Y0FDZCxPQTFFQW1RLHlCQXlFY25RLHFCQUFBQTthQUdjO1dBT2xCOFIsY0E1UVJqRixNQW96QnVCL1osU0E5TkoyWjtXQXpVWCxVQTNCVmtFOzs7WUFzQkc7YUFBQTtlQS9FSFIseUJBbUZVMkIseUJBQUFBOzs7OztlQWhVWnhGO2tCQXNUSXVGLFlBVVFDO2tCQS9TWnZGO21CQXUxQjJCelo7Ozs7c0JBbGpCdkIrZSxZQVVRQztjQWRWakI7OztVQTRJQztXQURTa0IsY0F6WVJsRixNQW96QnVCL1osU0E5TkoyWjtXQTVNcEI7YUFqTkQwRCx5QkFnTlU0Qix5QkFBQUE7V0EzSVZsQjs7O1VBNEJRO1dBQU54UCxRQW5FRm1QLFdBNmxCaURwSSxNQXhuQmpEa0k7V0ErRlUwQixjQTNSUm5GLE1Bb3pCdUIvWixTQTlOSjJaO1VBMVRwQixHQW5HRDBEO1dBb0djO1lBQVY4QixpQkExQ0pyQjs0QkEwQ0lxQixZQUZNRDs7V0FNUjtZQUFBLFVBM1lOL0YscUJBb1lNNUssT0FDUTJRO1lBS2lCRTtZQUFONVE7MkJBQUFBLFFBQU00UTtjQWxDM0JyQjs7OztXQXdJVXNCLGNBdFlSdEYsTUFvekJ1Qi9aLFNBOU5KMlo7V0F4VnJCb0Usc0JBd0lVc0I7OztVQWFFO1dBQVZDLFlBeVVKckIscUJBd0YyQmplLFNBOU5KMlo7V0FsTVg0RixZQXBaUnhGLE1Bb3pCdUIvWixTQWphdkJzZjtXQUVRRSxjQXJaUnpGLE1BbVpBdUYsbUJBbU1tQjNGO1dBaE1uQjVWLGNBL25ETjJILGFBNm5EYzZUO1VBR1QsR0E5TkRsQztXQStOYztZQUFWb0MsaUJBdEtKNUIsaUJBb0tFOVo7NEJBRUUwYixZQUhNRDs7K0JBbktWM0Isa0JBb0tFOVosYUFEUXliO2NBdkpWekI7Ozs7VUEySFE7V0FBTjcxQyxRQWxLRncxQyxXQTZsQmlEcEksTUF4bkJqRGtJO1dBOExVck8sYUExWFI0SyxNQW96QnVCL1osU0E5TkoyWjtVQTNOcEIsR0FsTUQwRDtXQW1NYztZQUFWcUMsZ0JBeklKNUI7NEJBeUlJNEIsV0FGTXZROztXQU1SO1lBQUEsVUExZU5nSyxxQkFtZU1qeEMsT0FDUWluQztZQUtpQks7WUFBTm5uQzsyQkFBQUEsT0FBTW1uQztjQWpJM0J1Tzs7Ozs7V0FrSlUxUCxhQWhaUjBMLE1Bb3pCdUIvWixTQTlOSjJaO1dBeFZyQm9FLHNCQXNqQmlEekksTUFwYXZDakg7Ozs7O2FBb2Flck8sWUE5TkoyWjtXQXRSa0MsSUFzYzdDOEMsU0F0YzZDLGdCQXJZeEI5ekMsS0F5M0JOcTNCLFVBOUNSLE9BQVB5Yzs7Ozs7Ozs7Ozs7Ozs7O1dBdGNnQzs7Y0FDaEN0TSxjQWpVUjRKLE1Bb3pCdUIvWixTQTlOSjJaOzs7cUJBOE40QnJFO3FCQUFBQTtvQkFBQUE7O29CQWxmL0MxckM7OzRCQUFBQTs7OzBCQWtmK0MwckMsVUFsZi9DMXJDO1dBMmN3QixNQUFBOztVQTFjekIsR0ExSUR5ekM7V0EySWM7WUFBVnNDLGlCQUZGLzFDOzRCQUVFKzFDLFdBSE14UDs7K0JBQ1J2bUMsU0FEUXVtQztjQW5FVjROOzs7Ozs7OztXQUFBQSxhQWlMRixXQTlrQkZ4Rix1QkEwRm1DNXZDLEtBeTNCZDR5QyxTQUFnQ2pHOzs7Ozs7OztVQXJnQmpEO1dBQUEsT0F2SEE4SDtXQXNIeUQsT0F2SHpERDtXQXVIRTcwQzthQWtlSnMzQyxpQkFvQ21CckUsU0FBUXZiLFNBOW5CekJrZCx5QkE4bkJpRDVIO1dBcGdCdkN2RSxjQWhUUmdKLE1Bb3pCdUIvWixTQTlOSjJaO1VBclNwQixHQXhIRDBEO1dBeUhjO1lBQVZ3QyxnQkFKRnYzQyxTQTVERnUxQzs0QkFnRUlnQyxXQUZNOU87O1dBTThCO1lBQUEsT0EzSHhDd007WUEySEUsVUEzWU5uRSxxQkFtUklxRSxzQkFrSFUxTTtZQUt3QlM7WUFBUHJEO1lBQU5ubEM7MkJBUG5CVixTQU9tQlUsT0FBTW1sQyxRQUFPcUQ7Y0F2RGxDdU07Ozs7Ozs7Ozs7VUFpSDhCO1dBcWNhK0IsVUE1bkIzQzFDO1dBNG5Cc0MyQyxTQTduQnRDNUM7V0E2bkJpQzZDLFNBOW5CakM5QztXQStuQkEzRDthQURpQ3lHO2dCQUFVRjtrQkF4MkI3Q3RHOztvQkErM0JBMEMsa0JBdkJtQlgsU0FBUXZiOztnQkFBa0I4Zjs7OztvQkFBTXhLOzJCQUFBQTs7Ozs7Ozs7Ozs7aUJBU2pEMks7Ozs7eUJBVGlEM0s7bUJBQUFBOzs7Ozs7Ozs7Z0JBU2pEMks7OztjQVRzQ0Y7c0JBQVd6SyxVQVNqRDJLOzswQkFUaUQzSyxVQVNqRDJLO1dBVUcsTUFBQTs7VUFDUDtXQTNkTXgzQyxZQXdjRjh3QyxNQVFBMEc7V0E3Y1VyUSxjQWhYUm1LLE1Bb3pCdUIvWixTQTlOSjJaO1VBck9wQixHQXhMRDBEO1dBK0R3QixZQTdEeEJFOzs7O3VCQWdwQkZyQixrQkF2Qm1CWCxTQUFRdmI7O2dCQTFqQlhrQiw0QkFBQUE7V0F3SEE7WUFBVmdmLGdCQWhJSnJDOzRCQWdJSXFDLFdBRk10UTs7O1dBTTBCO1lBQUEsT0EzTHBDMk47WUEyTEUsVUEzY05uRSxxQkErUUlrRSxrQkFzTFUxTjtZQUt3Qkc7WUFBUHhuQztZQUFOQzsyQkFSbkJDLE9BUW1CRCxPQUFNRCxRQUFPd25DO2NBdkhsQ2dPOzs7O2dCQXNqQmlEekk7Z0JBQUFBO2VBQUFBOztXQXplaEM7WUFBQSxPQUFBLGdCQWhaYzNzQyxLQXkzQk5xM0I7WUF6ZXZCLE9BbkpGb2Q7WUFrSnFELE9BbkpyREQ7WUFrSkV0MUM7Y0F1Y0orM0M7Z0JBb0NtQnJFLFNBQVF2YixpQkE5bkJ6QmtkO1lBc0pVaFEsV0E1VVI2TSxNQW96QnVCL1osaUJBOU5KMlo7V0F6UXBCLEdBcEpEMEQ7WUFxSmM7YUFBVjhDLGNBTEZ0NEMsT0F2RkZnMkM7NkJBNEZJc0MsU0FGTWpUOztZQU04QjthQUFBLE9Bdkp4Q3FRO2FBdUpFLFVBdmFObkUscUJBbVJJcUUsc0JBOElVdlE7YUFLd0JFO2FBQVB0bEM7YUFBTko7NEJBUm5CRyxPQVFtQkgsT0FBTUksUUFBT3NsQzs7Ozs7O1dBTUg7WUFBQSxPQUFBLGdCQTVaQXprQyxLQXkzQk5xM0I7WUE3ZFQsT0EvSmhCb2Q7WUErSkUsT0FoS0ZEO1lBOEpFbjFDO2NBMmJKNDNDO2dCQW9DbUJyRSxTQUFRdmIsaUJBOW5CekJrZDtZQWtLVTdQLGFBeFZSME0sTUFvekJ1Qi9aLGlCQTlOSjJaO1dBN1BwQixHQWhLRDBEO1lBaUtjO2FBQVYrQyxnQkFMRnA0QyxTQW5HRjYxQzs2QkF3R0l1QyxXQUZNL1M7O1lBTThCO2FBQUEsT0FuS3hDa1E7YUFtS0UsVUFuYk5uRSxxQkFtUklxRSxzQkEwSlVwUTthQUt3Qkc7YUFBUHZsQzthQUFOTDs0QkFSbkJJLFNBUW1CSixPQUFNSyxRQUFPdWxDOzs7WUEvRmxDdVE7Ozs7cUJBc2pCaUR6STtPQWpkaEM7UUFBQSxPQUFBLGdCQXhhYzNzQyxLQXkzQk5xM0I7UUFqZHZCLE9BM0tGb2Q7UUEwS3FELE9BM0tyREQ7UUEwS0VoMUM7VUErYUp5M0M7WUFvQ21CckUsU0FBUXZiLGlCQTluQnpCa2Q7UUE4S1V2UCxhQXBXUm9NLE1Bb3pCdUIvWixpQkE5TkoyWjtPQWpQcEIsR0E1S0QwRDtRQTZLYztTQUFWZ0QsZ0JBTEZsNEMsU0EvR0YwMUM7eUJBb0hJd0MsV0FGTTFTOztRQU04QjtTQUFBLE9BL0t4QzRQO1NBK0tFLFVBL2JObkUscUJBbVJJcUUsc0JBc0tVOVA7U0FLd0JHO1NBQVAxbEM7U0FBTkw7d0JBUm5CSSxTQVFtQkosT0FBTUssUUFBTzBsQztXQTNHbENpUTs7OztPQUFBQTtTQXNMRixXQW5sQkZ4Rix1QkEwRm1DNXZDLEtBeTNCTnEzQixpQkFBd0JzVjs7WUF4MkJuRGtFO3FCQXFPRW9ELGNBRnNCYixnQkFBQU47U0FBQU0sUUE0cEJ4Qkcsa0JBdkJtQlgsU0FBUXZiLFNBQXdCc1Y7cUJBbm9CdEJ1SCxjQUZBZixnQkFBQTNpQztTQUFBMmlDLFFBNHBCN0JJLGtCQXZCbUJYLFNBQVF2YixTQUF3QnNWO3FCQWxvQmpEd0gsZUFIZ0NqQixpQkFBQUg7U0FBQUcsU0E0cEJsQ0ssa0JBdkJtQlgsU0FBUXZiLFNBQXdCc1Y7O2tCQWpvQmpEMEg7cUJBZ1JpQixrQkFwUnlCdjFDO01Bb1J6QixTQXdZbkJ5MEMsa0JBdkJtQlgsU0FBUXZiLFNBQXdCc1Y7O2tCQWpvQnRCMkg7cUJBa1JWLGtCQXRSNkJ0MUM7TUFzUjdCO2tCQXRScUJvQyxXQXFvQld1ckM7T0F1Qm5ENEcsa0JBdkJtQlgsU0FBUXZiOztVQXJvQkhzZ0IsU0FBZ0J2MkMsTUFBaEIweEMsT0FBZ0IxeEM7U0FBaEJ1MkMsUUE0cEJ4QnBFLGtCQXZCbUJYLFNBQVF2Yjs7b0JBbG9CRStjLGFBSFd3RCxlQUFBeDJDOztRQUFBdzJDOzs7Z0JBcW9CV2pMO2tCQUFBQSxlQUFBQTs7c0JBQUFBLGFBQUFBO1VBeDJCbkRrRTs7TUErM0JBMEMsa0JBdkJtQlgsU0FBUXZiLFNBQXdCc1Y7O0tBbFcvQyxPQXBORnlJO0lBc05NO2FBbURSekQsVUFDQWtHLGFBQVl4Z0IsU0FBUTJaO0tBQ3RCO1NBRGMzWixZQUFRMlosU0FFTSxNQUFBO2dCQUNwQixnQkFobEIyQmh4QyxLQTZrQnJCcTNCO09BZVYsTUFBQTtNQVZVLElBQU55Z0IsTUFBTSw4QkFsbEJxQjkzQyxLQTZrQnJCcTNCO1NBQVEyWixXQUtkOEcsS0FDbUIsTUFBQTtNQUNUO09BQVZDO1NBQVU7OEJBcGxCaUIvM0MsS0E2a0JyQnEzQixVQUtOeWdCLE1BTE16Z0I7T0FRRW9OLGFBaGhCVjJNLE1BNmdCRTBHLGFBTGM5RztPQVNOdUUsVUFqaEJWbkUsTUF3Z0JRL1osU0FLTnlnQjtPQUtBRSxtQkFEUXpDLFNBRlJ3QztPQUlBRSxlQVhOSixrQkFVTUcsb0JBQUFBO09BR0osZ0JBRklDLGNBSFF4VDtNQUtaOzs7OztNQU1GO09BRllGLFdBemhCUjZNLE1Bd2dCUS9aLFNBQVEyWjtPQW1CaEJrSCxhQW5CSkwsa0JBa0JJNWdCLGtCQUFBQTtNQUdKLGdCQUZJaWhCLFlBRlEzVDs7SUFJbUM7YUFnSi9Dd0wsYUFBYTFZLFNBQVEyWjtLQUN2QixJQURlVSxZQUFBcmE7S0FDZjtTQURlcWEsY0FBUVYsU0F4c0JyQkQseUJBd3NCcUJDO01BRXBCLFVBQUEsZ0JBcHZCZ0NoeEMsS0FrdkJwQjB4QyxZQUVxRCxPQUZyREE7VUFBQUgsWUFBQUcsbUJBQUFBLFlBQUFIOztJQUU0RDthQUl6RWlDLGVBQWVuYyxTQUFRMlosU0FBUXZsQztLQUNqQyxJQURpQmltQyxZQUFBcmEsU0FBZ0IzckIsUUFBQUQ7S0FDakM7U0FEaUJpbUMsY0FBUVYsU0E5c0J2QkQseUJBOHNCdUJDO01BRW5CLElBQ0o5ckMsSUFESSxnQkExdkI2QmxGLEtBd3ZCbEIweEM7YUFHZnhzQyxjQVFLLFdBWFV3c0MsV0FBZ0JobUM7VUFBQStoQyxXQUFBL2hDLG1CQUcvQnhHOzBCQUgrQnVvQztPQU03QjtPQUFBLE9BQUEsV0F4MUJKbUMsdUJBMEZtQzV2QyxLQXd2QkZ5dEM7OztPQUFoQjhELFlBQUFHO09BQUFBLFlBQUFIO09BQWdCN2xDLFFBQUEraEM7O0lBV2Q7YUFJakJxRSxjQUFjemEsU0FBUTJaO0tBQ3hCLEdBRGdCM1osWUFBUTJaLFNBN3RCdEJELHlCQTZ0QnNCQztLQUVsQixZQUFBLGdCQXp3QjZCaHhDLEtBdXdCbkJxM0I7O3FCQUdBLE9BbEJkbWMsZUFlY25jLFNBQVEyWjs7O1VBQVIzWixxQkFBUTJaLFNBN3RCdEJELHlCQTZ0QnNCQztNQU1oQixJQUlKOXJDLElBSkksZ0JBN3dCMkJsRixLQXV3Qm5CcTNCO2FBVVpueUI7T0FDQSxPQXB0QkZnc0MsbUJBeXNCYzdaLDRCQVVabnlCO01BRmtCO09BQUEsVUF2QnBCc3VDLGVBZWNuYyxpQkFBUTJaO09BUU45dUM7T0FBVmd3QztNQUNKLFdBRElBLFlBQVVod0M7O0tBS1gsTUFBQTtJQUFZO2FBR2pCb3ZDLFlBR0FELFdBQVVoYSxTQUFRVTtLQUFPLElBR3pCL1QsT0FIVXFULFVBQVZnYTtrQkFHQXJ0QjttQkFIa0IrVDs7bUJBR2xCL1Q7MEJBRCtCLGdCQTV4QkVoa0IsS0EweEJqQ3F4QyxZQUFrQnRaOzs7a0JBR2UsOEJBN3hCQS8zQixLQTB4QmpDcXhDLFdBR0FydEI7a0JBSGtCK1Q7SUFHbUQ7YUFJckV1ZCxxQkFBcUJqZSxTQUFRMlosU0FBUTlyQztLQUN2QyxJQUR1QndzQyxZQUFBcmE7S0FDdkI7U0FEdUJxYSxjQUFRVjtPQUU3QixXQTczQkZwQix1QkEwRm1DNXZDLEtBaXlCSWtGLEdBQVI4ckM7Z0JBS3pCLGdCQXR5QjZCaHhDLEtBaXlCWjB4QztXQUFBQSx1QkFBUVYsU0F2dkI3QkQseUJBdXZCNkJDO1VBUTFCLGdCQXp5QjhCaHhDLEtBaXlCWjB4Qyx1QkFBZ0J4c0MsR0FRbUIsT0FSbkN3c0M7T0FTUCxZQUFBLGdCQTF5Qm1CMXhDLEtBaXlCWjB4Qzs7Ozs7O2FBd0JIO2NBQVYyRCxVQXhCUkMscUJBQXFCNUQsbUJBQVFWO2NBQVJRLFlBd0JiNkQ7Y0F4QmEzRCxZQUFBRjs7OzthQWdDakIsT0Fud0JKTixtQkFtdUJxQlE7Ozs7YUFBQUEsdUJBQVFWO1VBdnZCN0JELHlCQXV2QjZCQztTQWFiLGNBQUEsZ0JBOXlCaUJoeEMsS0FpeUJaMHhDOztVQWtCRDtXQUFWaUYsWUFsQlZyQixxQkFBcUI1RCxtQkFBUVY7V0FBUlksWUFrQlgrRTtXQWxCV2pGLFlBQUFFOzs7O1VBZUQ7V0FBVnVHLFlBZlY3QyxxQkFBcUI1RCxtQkFBUVY7V0FBUnFCLFlBZVg4RjtXQWZXekcsWUFBQVc7OzthQUFBWSxZQUFBdkIsbUJBQUFBLFlBQUF1Qjs7Ozs7O1NBNEJIO1VBQVZtRixZQTVCUjlDLHFCQUFxQjVELG1CQUFRVjtVQUFScUgsWUE0QmJEO1VBNUJhMUcsWUFBQTJHOzs7O1NBbUNqQixPQXR3QkpuSCxtQkFtdUJxQlE7O1dBQUFILFlBQUFHLG1CQUFBQSxZQUFBSDs7O1dBQUErRyxZQUFBNUcsbUJBQUFBLFlBQUE0Rzs7SUF1QzRCO2FBYWpEckIsaUJBQWlCckUsU0FBUXZiLFNBQVF5YixNQUFLdGlDLE1BQUt1aUMsT0FBTXBHO0tBQ25ELElBRG1DeUcsU0FBQU4sTUFBS0ssU0FBQTNpQyxNQUFLMGlDLFVBQUFIO0tBQzdDOzs7VUFEbUNLO2FBQUtEO1lBQUtEO29CQUFNdkcsTUFJckI7b0JBSnFCQSxNQUlnQjs7Ozs7YUFKM0J3RztZQUFLRDtxQkFBTXZHLE1BR3JCO3FCQUhxQkEsTUFHZ0I7OzswQkFIaEJBOzs7O1lBS2dCOztZQUhyQzs7WUFBcUM7O1lBS3JDOztZQUVBOztZQUpBOzs7O2FBTGV1RzswQkFBTXZHOzs7O2FBTWdCOzthQUlyQzs7YUFDQTs7YUFIQTs7YUFJQTs7YUFOQTs7OztzQkFOcUJBOzs7O2NBcDBCakRrRSxtQkFrMUJ3Qzs7Y0FsMUJ4Q0EsbUJBbTFCd0M7O2NBbjFCeENBLG1CQWkxQndDOzs7O2dCQWoxQnhDQTtZQXUxQkssT0F3Q0wwQyxrQkEzRGlCWCxTQUFRdmIsU0FBd0JzVjtlQUFYd0c7Ozs7U0FBTEM7VUFBVUY7YUFwMEIzQ3JDO1NBNDFCSyxPQW1DTDBDLGtCQTNEaUJYLFNBQVF2YjtZQUFrQjZiOzs7YUFwMEIzQ3JDO1NBbzJCSyxPQTJCTDBDLGtCQTNEaUJYLFNBQVF2YixTQUF3QnNWO1lBQWhCeUc7OztZQUFVRjtRQWlDckIsTUFBQTtZQXIyQnRCckM7UUFnMkJLLE9BK0JMMEMsa0JBM0RpQlgsU0FBUXZiLFNBQXdCc1Y7V0FBTnVHOzs7SUFpQ1Q7YUEwQmxDSyxrQkFDRVgsU0FBUXZiLFNBQVFzVixNQUFLNEw7S0FDVjtNQUFUQztRQUFTLDhCQWw1Qm9CeDRDLEtBaTVCL0I0eUMsU0FBUXZiLFVBQVJ1YjtLQUVGLE9BQUE7Y0E3K0JGaEQsdUJBMEZtQzV2QyxLQWk1Qi9CNHlDLFNBQXFCMkYsUUFBTDVMLE1BQ2Q2TDtJQUk0QjtXQWoxQjVCcEgsK0JBckU2QnB4QztHQXc1QlA7WUFPNUJ5NEMsdUJBQXVCejRDLEtBQUlFO0lBQzdCLElBQVk2M0IsTUFoNkJWMlkscUJBKzVCdUIxd0M7SUFFekIsSUFBSSxlQXg3REVta0MsWUF1N0RNcE0sS0FEaUI3M0IsUUFBSkYsTUFFckI7Ozs7S0FJSSxXQTE4Q051dEMsZ0JBbzhDMkJydEM7S0FNckIsT0FBQSxXQS8vQk4wdkMsdUJBeS9CdUI1dkM7O0dBTU07WUFJN0IwNEMsd0JBQXdCMTRDOztLQUFtQnE2QjtLQUFOdEM7S0FDM0I4RCxRQTE2QlY2VSxxQkF5NkJ3QjF3QztJQUUxQjtLQUFJLGVBbDhERW1rQyxZQWk4RE10SSxPQTlrRVZrSCxhQTZrRXFDaEwsT0FBYi8zQjtLQUV0Qjs7Ozs7TUFFRixPQUFBLFdBdmdDQTR2Qyx1QkFtZ0N3QjV2QyxLQUFtQnE2Qjs7Ozs7OztPQTUzRjNDM0M7T0FUQUY7T0FiQUw7T0FHQUM7T0FNQUc7T0F3Q0FPO09BazZDSTRWO09BK1FBZ0I7T0ErR0FXO09Bb0JBSztPQXFCQUM7T0F4NkJBeEw7T0F1aENKdU07T0ErNUJBK0g7T0FVQUM7T0F6b0ZBcGY7T0FnTEFjO09BMmdDQW1UO09BejFCQTVSO09BNnlDQWtVO09BL3hDSXZUO09BdUlKMEM7T0ErZkFvTjs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7WUNwd0NBdU0sU0FBUzVwQixHQUFFNWlCO0lBQ2IsSUFEd0I0ckIsZ0JBQ3hCO2lCQUFpQnRzQjtLQUFPLGtDQURYVSxHQUNJVjt1QkFETnNqQixHQUFFNWlCO0lBQ2dDO0lBQTdDLE9BQUEsNENBRHdCNHJCOztZQUV0QjZnQixTQUFTN3BCLEdBQUVsckI7SUFDYixJQUR3QmswQixnQkFDeEI7aUJBQWlCdHNCO0tBQU8sbUNBRFg1SCxHQUNJNEg7dUJBRE5zakIsR0FBRWxyQjtJQUNnQztJQUE3QyxPQUFBLDRDQUR3QmswQjs7WUFFdEI4Z0IsVUFBVTlwQixHQUFFdnBCO1FBQVl1eUI7SUFDMUIsT0FBQSxrQ0FEWWhKLEdBQUV2cEIsSUFBWXV5Qjs7WUFJeEIrZ0IsUUFBUXR6QyxJQUFHdXlCO0lBQU0sT0FSakI0Z0IsdUIsWUFRUW56QyxJQUFHdXlCO0dBQTRCO1lBQ3ZDZ2hCLFFBQVFsMUMsR0FBRWswQjtJQUFNLE9BUGhCNmdCLHVCLFlBT1EvMEMsR0FBRWswQjtHQUEyQjtZQUNyQ2loQixTQUFTeHpDLElBQUd1eUI7SUFBTSxPQU5sQjhnQix3QixZQU1TcnpDLElBQUd1eUI7R0FBNkI7WUFDekNraEIsU0FBU3AxQyxHQUFFazBCO0lBQU0sT0FQakI4Z0Isd0IsWUFPU2gxQyxHQUFFazBCO0dBQTRCO1lBQ3ZDbWhCLE9BQU9uaEIsS0FBTSxPQUpiK2dCLG9CQUlPL2dCLEtBQXdCO1lBQy9Cb2hCLFFBQVFwaEIsS0FBTSxPQUxkK2dCLG9CQUtRL2dCLEtBQXdCO1lBRWhDcWhCLFNBQVNycUI7UUFBV2dKO0lBQ3RCLFNBQUkvQixJQUFHdnFCO0tBQ0ssSUFBTnpFLE1BQU07S0FDVixtQ0FESUEsS0FEQ3lFO0tBR0gsT0FBQSxXQUpPc2pCLEdBSVAsNkJBRkUvbkI7SUFFbUI7SUFDekIsT0FBQSxrQ0FKSWd2QixRQURrQitCOztZQU9wQnNoQixRQUFRdGhCLEtBQU0sT0FQZHFoQixrQkFPNEI5MkMsR0FBSyxPQUFMQSxFQUFNLEdBQTFCeTFCLEtBQStCOzs7O09BZHZDK2dCO09BSUFJO09BQ0FDO09BU0FFO09BYkFOO09BQ0FDO09BQ0FDO09BWEFOO09BSUFFO09BV0FPO09BYkFSO09BRUFDO09BV0FPOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDZ0JKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQTtJQUNBO0lBUUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFJUUUsT0FBTzcyQyxHQUFFMEI7SUFDZixJQURldU0sTUFBQXZNO0lBQ2Y7VUFEZXVNLEtBRVAsTUFBQTtpQkFGT0EsUUFHUjZvQyxlQUFKQztLQUFxQixHQUFBLFdBQXJCQSxJQUhVLzJDLElBR3FCLE9BQTNCODJDO1NBSFFqNkIsSUFBQTVPLFFBQUFBLE1BQUE0Tzs7R0FJTztZQVNwQm02QixhQUFhamhDLFFBQU9iLEtBQUlpQixRQUFPelU7SUFDakMsS0FEaUNBLEdBRXpCO0lBQzJDLElBQTlDbWIsSUFINEJuYixNQUcvQmtmLElBSCtCbGYsTUFHa0IsT0FBQSx1QkFIcENxVSxRQUdiNks7a0JBQTZCNWdCLEdBQUVDO0tBQVMsV0FBQSx1QkFIcEJpVixLQUdXalY7S0FBUyxPQUFBLHVCQUFYRDtJQUFrQjtJQUF2QyxXQUFBLHdDQUFMNmM7SUFBSyxPQUFBLDZCQUhnQjFHO0dBR2lEO1lBWXpFOGdDO0lBQWlCLE1BQUE7R0FBOEI7WUFFL0NDLFNBQVNDO0lBQ1gsSUEvQk1OLG1CQThCS00sV0FFNkIsSUFBQSxVQURwQ0M7Ozs7O01BQUFBOzsyQkFIRkg7OztRQTVCSUosbUJBOEJLTSxXQU04QixJQUFBLFVBRHJDRTs7Ozs7TUFBQUE7OzZCQVBGSjs7O0lBWVMsV0FBQSx1QkFUUEcsTUFJQUM7SUFLTyxPQUFBLHVCQVZBRjtHQVVhO1lBR3RCRyxRQUFRL3lDLEtBQUk0eUMsVUFBU0k7SUFDdkIsNkJBRFVoekMsVUFBYWd6QztJQUVJLFdBZnpCTCxTQWFZQztJQUVKOztNQTFCbUJLO01BQU5DO01BQUxDO2lCQUNsQixzQkFENkJGOztlQUFOQztNQU1qQixPQUFBLDZCQWtCSWx6QyxVQXhCUW16QyxLQUFXRjtLQUlPLElBRHhCOTFDLElBSFcrMUMsU0FJYSxPQVZsQ1QsZ0NBU1V0MUM7S0FDTixPQUFBLDZCQW9CSTZDLFVBeEJRbXpDLFdBQVdGOztJQTBCRixPQUFBO0dBQW1CO1lBRzVDRyxhQUFhUixVQUFTSTtJQUNoQixJQUFKbjJDLElBQUk7SUFOTmsyQyxRQU1FbDJDLEdBRFcrMUMsVUFBU0k7SUFFeEIsT0FBQSw2QkFESW4yQztHQUVhO1lBR2Z3MkMsTUFBTVQsVUFBU0k7SUFDSixXQVBYSSxhQU1NUixVQUFTSTtJQUNKLE9BQUE7R0FBOEI7R0FHL0IsSUFBVk07WUFNQXIyQyxrQkFBa0J4QjtJQUNwQixJQUFJLGVBQUssMkJBRFdBLEtBQ2hCOzs7K0JBQ2M7OztHQUFJO1lBRXBCOEIsb0JBQW9COUI7SUFDdEIsSUFBSSxlQUFLLDZCQURhQSxLQUNsQjs7OytCQUNjOzs7R0FBSTtZQUVwQjgzQztJQUFrQ0MsY0FBYUYsU0FBUUcsTUFBS2IsVUFBU2MsU0FDbkNWO0lBQ3BDLElBQUlXLFVBRjZDTDthQUc3Q00sY0FBY3ZzQztLQUtoQjtNQUFJeEssSUFBSTtNQUNKZzNDO1FBUEZGLFVBRnFERjs0QkFBQUEsU0FFckRFLGFBQUFBOztLQVNGLE9BUmdCdHNDOztZQVdKL0wsSUFYSStMOzsrQkFXSi9MO2tDQUFBQTtTQUNOLDZCQVBGdUIsUUFDQWczQyxVQUtRdjRDOzs7WUFJUzZ1QyxXQWZMOWlDLFVBZUFvWixNQWZBcFosVUFlTG1XLE1BZktuVztRQWdCViw2QkFYRnhLLFFBQ0FnM0MsVUFTWXB6QixLQUFMakQsS0FBVTJzQjs7O1lBRlRoaUMsTUFiSWQ7UUFjViw2QkFURnhLLFFBQ0FnM0MsVUFPUTFyQzs7O1lBS0FzakMsTUFsQklwa0M7UUFtQlYsNkJBZEZ4SyxRQUNBZzNDLFVBWVFwSTs7S0FsRFpzSCxRQXFDSWwyQyxHQVJ3RCsxQyxhQUMxQkk7S0F3QkosS0FBM0IsV0F0QmEzckMsaUJBc0JjLFdBdEJkQTtNQXdCWCxnQkFBSSw2QkFuQkx4SztLQWtCQyxpQkFBSyw2QkFsQk5BO0lBbUJ3QjtJQTNCbUJ5MkM7O1FBQUFBLGNBQVFHO0tBK0J2RDtNQUNVLFVBaENxQ0gsWUFqRXpDaDRDLHFCQWlFaURtNEM7OztPQWlDMUIsUUFBM0Isc0JBbEdJbjRDLGFBa0d1QixnQkFsR3ZCQTs7U0FvR0k7O1VBQUEsT0EzR05nM0MsT0FPRWgzQyxHQWlFc0RzM0M7VUFrQzVDa0I7VUFBUm56Qjs7Ozs7U0FHRjtVQXJHQTtXQUFKdmpCLElBQUksOEJBREE5QjtXQUVKc0QsTUFBSixzQkFGUXREO1dBdUdlbWxCO2FBcEdMO2tDQUhWbmxCLEdBQ0o4QixXQUNBd0IsT0FEQXhCO1dBc0dVMjJDLFVBcEdkLDhCQUhRejRDLE1BQ0o4QjtXQXVHZ0MsYUFEYnFqQjtXQUNiLE1BL0dKNnhCLE9BOEdReUIsU0F0Q2dEbkI7V0FrQzVDa0I7V0FBUm56Qjs7Ozs7V0FNZ0IsTUFBQSwwQ0F6R2xCcmxCOzs7O1lBQUE2TSxNQUFBN00sR0FtR1UwNEMsV0FBQUY7aUJBUVJHO1NBQ0YsS0FUVUQsVUFVQTthQUNIdnpCLE1BWEd1ekI7U0FXSSxNQUFBOytCQTlHZDdyQyxLQThHT3NZO1FBQW1EO2lCQUN4RHl6QjtTQUNGLEdBYlVGLGNBaUJIdnpCLE1BakJHdXpCLGFBaUJJLE9BQVB2ekI7YUFuRGtDNnlCLHVCQUFRRztVQWtEeEMsTUFBQSwwQ0FuSFR0ckM7b0JBaUV5Q21yQztTQWlETyx3QkFqRENHO1FBbURoQztpQkFFZlUsbUJBQ0YsT0FwQlVILGdCQWxDK0JWLGlCQXdEM0I7aUJBRVJjO1NBQWU7O2dCQUNoQjk1QyxjQWpCSDI1QyxXQWlCUSxPQUFBLFdBQUwzNUM7O1lBRU8sSUFEUCs1QyxnQkF4RVE1ekIsTUEwRFh5ekI7WUF6RFYsSUFBSSxJQUFBLFdBQUssdUJBRFl6ekI7Ozs7Ozs7O2FBMkVELE1BQUE7bUNBaEladFksS0FxRGFzWTtnQkE0RUpubEI7WUFBSyxXQUpUKzRDLEtBSUkvNEM7WUFFUCxPQWJBNjRDOztnQkFjRXg1QyxjQXpCRnM1QyxXQXlCRXQ1Qzs7Z0JBQ0U4b0IsZ0JBMUJKd3dCLFdBMEJJeHdCOztZQUVNLElBREw2d0IsZ0JBQ0Q1ekIsUUF4Qkp3ekI7WUF5QkEsV0FGS0ksS0FDRDV6QjtZQUNKLE9BbEJBeXpCOztnQkE2QlNJLGdCQUFBQSxTQXBDVEwsWUFzQ0EsT0EvQkFDOztZQWlDVTthQURSSzthQUNFQyxRQXhDSlA7YUF5Q1ksVUEvRnBCajNDLGtCQThGWXczQzs7YUFFTSxNQUFBO21DQXpKWnRzQyxLQXVKTXNzQztnQkFHR2g1QztZQUFLLFdBSlYrNEMsS0FJSy80QztZQUVQLE9BdENBMDRDOztZQXdDVTthQURKTzthQUNGQyxRQS9DSlQ7YUFnRFksVUF0R3BCajNDLGtCQXFHWTAzQzs7YUFFTSxNQUFBO21DQWhLWnhzQyxLQThKTXdzQztnQkFHRzNuQztZQUpEMG5DLFNBSUMxbkM7WUFFUCxPQTdDQW1uQzs7WUErQ1U7YUFETlM7YUFDQUMsUUF0REpYO2FBdURZLFVBekdwQjMyQyxvQkF3R1lzM0M7O2FBRU0sTUFBQTttQ0F2S1oxc0MsS0FxS00wc0M7Z0JBR0dDO1lBQUssV0FKUkYsS0FJR0U7WUFFUCxPQXBEQVg7O1lBc0RVO2FBREZZO2FBQ0pDLFFBN0RKZDthQThEWSxVQWhIcEIzMkMsb0JBK0dZeTNDOzthQUVNLE1BQUE7bUNBOUtaN3NDLEtBNEtNNnNDO2dCQUdHQztZQUpDRixTQUlERTtZQUVQLE9BM0RBZDs7Z0JBNERJZTtZQXZFSmpCO1lBd0VBLE9BQUEsNEJBeERJRyxjQXVEQWM7O1lBdkNNLElBREVDLGdCQUFOeFAsaUJBQ0Z5UCxRQTVCSmxCO1lBNkJHLEdBQUEsNEJBRENrQixPQURFelA7YUFHSixXQUhVd1AsS0FDUkM7YUFFRixPQXZCRmpCOztZQTJCZ0MsV0EzSXhDMUIsa0NBb0ljOU07WUFLRyxNQUFBOzs7eUJBL0lYeDlCLEtBMklNaXRDLE9BSzBCOzs7Z0JBcUMzQkM7WUExRUhwQjtZQThFRTtnQkF4SHFDWCxlQUFRRzt3QkFBUkg7YUF1SHJDLFdBSEMrQixzQkFwSDRDNUI7YUFxRC9DVTs7OztnQkFxRU9tQjtZQWhGUHJCO1lBa0ZVLElBQU54dkM7WUFHRjtnQkEvSHFDNnVDLGVBQVFHO2NBaUk3QyxPQUFBLFdBUEs2QixLQU9MLDJCQUxFN3dDO3dCQTVIbUM2dUMsMkJBNEhuQzd1QzthQUFBQSw4QkE1SDJDZ3ZDO2FBcUQvQ1U7Ozs7Z0JBNkVLb0I7bUJBbElxQi9CO2FBb0l4QixNQUFBOztZQUVRLElBQU5nQyxRQXhGSnRCLFlBeUZJdUIsU0FBUyxXQUxSRixLQUlEQztZQWpGSnJCO1lBb0ZhO2FBQVRoZjtlQUFTLDRCQXpJa0NzZSxZQUFSSDthQTBJbkNwZTtlQUNGOztpQkEzSTZDdWU7aUJBQVJIO2tCQUFRRyxxQkFBUkg7WUFBUUc7YUE2SXhDO29DQUpIdGUsWUFGQXNnQixZQUdBdmdCOzs7UUFHc0M7UUFuRnRDa2YsYUF4Qkp6ekI7OztPQThHRCxXQWhKOEQreUIsU0FqRS9EcDRDOzs7Ozs7V0FrTktzaEI7T0FBVyxNQUFBLDRCQTlJcEJnM0Isa0JBOElTaDNCOzs7VUFDQ2hXO01BQVcsTUFBQSw0QkEvSXJCZ3RDLGNBK0lVaHRDOztLQWxKbUMwc0M7O0dBcUo3QztZQUVGb0M7SUFBOEJwQyxTQUFRRyxNQUFLYixVQUFTYyxTQUFRVjtJQUM5RCxPQXhKRU87Z0JBdUo4QkQsU0FBUUcsTUFBS2IsVUFBU2MsU0FBUVY7R0FDYTtZQUV6RTJDLG1CQUFxQm40QixLQUFpQmkyQixNQUFLYixVQUFTYyxTQUFRVjtJQUM5RCxHQUR1QngxQixTQUFRRSxNQUFSRixRQUFBbzRCLFlBQVFsNEIsY0FBUms0QixZQXhLckJ0QztJQXlLRixPQTNKRUM7Z0JBMEpxQnFDLGVBQWlCbkMsT0FBS2IsVUFBU2MsU0FBUVY7R0FFdEQ7WUFHTjZDLFdBQWFyNEIsS0FBaUJpMkIsTUFBS2IsVUFBU2MsU0FBUVY7SUFDdEQsR0FEZXgxQixTQUFRRSxNQUFSRixRQUFBbzRCLFlBQVFsNEIsY0FBUms0QixZQTdLYnRDO0lBOEtGLE9BTkVxQztpQkFLYUMsWUFBaUJuQyxVQUFLYixXQUFTYyxTQUFRVjtHQUNnQjtZQUdwRTVJLE1BQU1qdEMsR0FBRTdDLEdBQUVnZDtJQUNaLElBQ0UsVUFOQXUrQixnQ0FJTTE0QyxHQUFFN0MsR0FBRWdkLE1BRVY7Ozs7VUFFSXcrQjtNQUFPLGtDQUFQQTtNQUFPLE9BQUE7OztTQUNOQztLQUFPLGtDQUFQQTtLQUFPLE9BQUE7O0dBQXVCO1lBR25DQyxjQUFjNzRDLEdBQUU3QyxHQUFFZ2Q7SUFDcEI7S0FDRSxVQW5CQXErQix3Q0FpQmN4NEMsR0FBRTdDLEdBQUVnZDtLQUVsQjs7Ozs7VUFFSXcrQjtNQUFPLGtDQUFQQTtNQUFPLE9BQUE7OztTQUNOQztLQUFPLGtDQUFQQTtLQUFPLE9BQUE7O0dBQXVCO1lBRW5DRSxhQUFhOTRDLEdBQUU3QyxHQUFFZ2Q7SUFDbkI7S0FDYTtNQUFQbThCO01BQ0FQLFdBSFMvMUM7TUFJVHk0QyxnQkFwTUp0QztNQXFNQSxNQWhDQW9DLDhCQStCSUUsV0FGQW5DLE1BQ0FQLE1BSFc1NEMsR0FBRWdkO0tBS2pCOzs7OztVQUVJdytCO01BQU8sa0NBQVBBO01BQU8sT0FBQTs7O1NBQ05DO0tBQU8sa0NBQVBBO0tBQU8sT0FBQTs7R0FBdUI7WUFHbkNHLFlBQVk1NkM7SUFDZCxJQUFJc0QsNEJBRFV0RDthQUVONjZDLEtBQUtqN0M7S0FDWCxJQURXME8sTUFBQTFPO0tBQ1g7U0FGRTBELE9BQ1NnTCxLQUFiLE9BREloTDtNQUdNLFVBQUEsZ0JBSkl0RCxHQUVEc08sTUFHTixPQUhNQTtNQUVjLElBRmRFLE1BQUFGLGFBQUFBLE1BQUFFOztJQUdMO0lBRVIsSUFBTSxJQUNKRixNQURJLDhCQVBRdE87Ozs7S0FVVixJQUFZLElBQ1ZKLElBRFUsOEJBVkZJOzs7NEJBWWUsT0FYekJzRDs7O0tBU1ksT0FSUnUzQyxLQVNGajdDOztJQUpBLE9BTEVpN0MsS0FNTnZzQztHQUtLO1lBR0x3c0MsWUFBWXQ3QztRQUFnQm00QyxnQkFBTkMsaUJBQUxtRDtJQUNuQixVQUR3Qm5EO3VDQUFWcDRDLDJCQUFLdTdDO29DQUFBQSxPQWhCakJILFlBZ0I0QmpEO3NDQUFoQm40Qzs7WUFNWnc3QyxvQkFBb0JoN0M7SUFDWCxJQUFQTjtpQkFDNERrRDtLQUFyRCxTQUFxREEsT0FENURsRCxTQUFBQSxhQUNzRDtLQUFXLE9BQUxrRDtJQUFPO0lBQXZFLE9BQUEsbUNBRnNCNUM7R0FFbUQ7WUF5QnZFaTdDLE1BQVEvNEIsS0FBZW8xQjtJQUN6QixHQURVcDFCLFNBQU1FLE1BQU5GLFFBQUFnNUIsUUFBTTk0QixjQUFOODRCO0lBQ007S0FBWkMsWUF6UkY5RCxTQXdSdUJDO0tBRXJCaDBDLE1BQU0sNEJBbkNSdzNDLGdCQWtDRUs7S0F4QlVoM0MsUUEwQkosMkJBRE5iLEtBRk00M0M7SUFJRCxhQTNCU0U7U0FNZkwsTUFOZUssUUFNVnhELE9BTlV3RDsrQkFBQUEsZ0JBS2QsT0FMY0E7ZUFNVnhEO01BQ1M7T0FEVzRDLFFBTlZZO09BT1ZDLFdBakNOVCxZQWdDMEJKO09BRUUsTUFBQSw4QkFSaEJyMkMsUUFPTmszQztPQUNBQyxXQUFTO09BQ2UsTUFiOUJOLG9CQVUwQlI7T0FHTCxNQUFBLHVCQURmYztNQUNKLFdBSERQLEtBQUtuRCxNQUdROztLQUVDO01BREg1N0IsTUFWSW8vQjtNQVVWRyxTQVZVSDtNQVdWSSxTQXJDTlosWUFvQ1k1K0I7TUFFTnkvQixVQUFKLHNCQU5EVjtNQU9LdmtDLFFBYk1yUyxRQVlOczNDLGVBREFEO0tBR0osUUFESWhsQyxNQUVGLFdBVEh1a0MsS0FJS1EsUUFkTlAsb0JBY1loL0I7S0FPSztNQUFUMC9CLFNBQVMsNkJBSlhsbEM7TUFLc0IsTUF0QjVCd2tDLG9CQWNZaC9CO01BUUo5RixTQUFTLHNDQVBYc2xDO01BUUVsbEM7UUFBUzs7VUFUTDBGO1VBQ053L0I7Z0NBRE14L0IsT0FDTncvQjtNQVNtQixNQUFBLHVCQUhqQkUsUUFFQXBsQztLQUNKLFdBZEh5a0MsS0FJS1EsUUFVVSx1QkFGUnJsQzs7SUFTVixPQUFBLGlDQUhJaWxDO0dBR2dDO1lBU2xDUSxTQUFTL2xDLE1BQUtQLEtBQUl1bUM7SUFDcEI7S0FBSTUzQyxLQUFLLHVCQURXNDNDO0tBRWhCbDNDLE1BQU07S0FDTm0zQzthQUNBQztLQUNTLElBWkhDLE9BWUcsNkJBSFRyM0M7S0FJRixHQU5Ta1I7VUFOUHRTLDRCQURNeTRDOzs7T0FFSSxPQURWejRDLGNBQ1UsZ0JBRkp5NEMsTUFDTno0QztrQkFFRiw4QkFIUXk0QyxTQUNOejRDOzs7aUJBRE15NEM7O1VBYUpDOzs7VUFBQUEsU0FiSUQ7S0FVTkYsZUFHRUcsUUFIRkg7S0FDSixPQUFBLDZCQUZJbjNDO0lBTWM7SUFFbEI7O01BRWMsSUFBSjlCLElBQUksdUJBWFZvQjtTQVdNcEIsTUFaTXlTLEtBSVp5bUMsZUFTZ0MsOEJBWGhDcDNDLEtBVU05Qjs7Ozs7O1lBS1AsNkJBZkM4QixNQUVBbzNDO0tBY0osdUJBakJJOTNDO0tBa0JVLFVBQUEsMkJBaEJWNjNDO0tBZ0JVLE9BQUE7O0dBQWlCOztHQUVsQixTQUFYSSxjLE9BckJBTjtHQXFCVyxJQUFBO0dBRUMsU0FBWk8sZSxPQXZCQVA7WUF5QkFRLFVBQVU5bUMsS0FBSXVtQyxNQUFLUTtJQUNaLElBQUxsNUMsS0FBSyx1QkFETzA0QztpQkFFQTU3QyxHQUFLLG9DQURqQmtELFNBQ1lsRCxHQUZKcVYsS0FFZ0M7SUFBNUMsa0NBRnFCK21DO0lBRXJCLE9BQUEsdUJBRElsNUM7R0FFUTs7R0FFRSxTQUFabTVDLG9CLE9BTEFGO0dBS1k7R0FFQyxTQUFiRyxxQixPQVBBSDs7OztPQWpIQXJOO09BUUE0TDtPQVpBSDtPQUxBRjtPQUhBRDtPQTJCQU87OztPQXBNQTVDO09BTkFEO09Bc1FBbUQ7T0E1UEFqRDtPQThSQWlFO09BRUFDO09BT0FHO09BRUFDOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHQzlZVzs7Ozs7Ozs7SUFFWEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUZBQyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBSVhDLE1BQU10OEMsR0FBRTJCO0lBQ0YsSUFBSjlDLElBREltQixNQUFFMkI7SUFFSCxLQUFBLDBCQURIOUM7S0FFRixPQUFBLGtDQUZFQTtJQUdDO09BQUcsYUFISkEsYUFJRixPQUFBLGtDQUpFQTtJQUtDO1dBQUcsYUFMSkEsY0FNRix1QkFORUE7R0FRQztZQUVDMDlDLGFBQWF2OEMsR0FBRTJCO0lBQ3JCLEdBRG1CM0IsZ0JBQUUyQixHQUNHO0lBQ1UsSUFBQSxPQUY1QjQ2QyxhQUFhdjhDLEdBQUUyQixZQUVDLE9BYnBCMjZDLE1BV2lCdDhDLEdBQUUyQjtJQUVhLE9BQUE7R0FBc0I7WUFTdEQ2NkMsYUFBYXg4QztJQUNmLFlBTUssNkJBakNIcThDO0lBMkJhO2lCQUtMO1NBSkFyNkMsZUFBTkM7OztNQUNFLElBQU8sVUFBQSxXQURUQSxJQUZXakM7a0JBS0RILFlBQUssV0FBTEE7O2lCQUhKbUM7O0dBS2dCO1lBRXhCeTZDLGtCQVVNejhDO0lBVmMsR0FVZEEsaUJBVFc7T0FTWEEsa0JBUlk7T0FRWkE7O2dCQUFBQTtNQVBvQjA4QztNQUFOQztNQUFObEI7S0FDWixPQUFBOztjQXJDRlc7Y0FvQ2NYO2NBQU1rQjtjQUFNRDtjQUFBQTs7O09BT3BCMThDOztnQkFBQUE7TUFMcUI0OEM7TUFBTkM7TUFBTkM7S0FDYixPQUFBOztjQXZDRlY7Y0FzQ2VVO2NBQU1EO2NBQU1EO2NBQUFBOzs7T0FLckI1OEM7O2dCQUFBQTtNQUhpQys4QztNQUFOQztNQUFOQztLQUN6QixPQUFBOztjQXpDRmI7Y0F3QzJCYTtjQUFNRDtjQUFNRDtjQUFBQTs7O0lBSWxDLFNBQUEsYUFEQy84QyxJQUVTLE9BRlRBO0lBS1csSUFEVGs5QyxjQUpGbDlDLGlCQUFBQTs7S0FyQjRCO01BQUEsT0FUOUJ1OEMsYUE4QkV2OEM7TUFyQmdCLE9BcEJ0QnM4QyxNQXlDTXQ4QzthQXJCNEI7Ozs7Ozs7O1FBRGQ7U0FBQSxPQW5CcEJzOEMsTUF5Q010OEM7Z0JBdEJjOztJQTRCRixPQUFBLHVCQUZWazlDO0dBRW9CO1lBRTVCMXdDLFVBQVVyQjtJQUNOLFlBNUJKcXhDLGFBMkJVcnhDO2dCQUdGLE9BckJSc3hDLGtCQWtCVXR4QztRQUVMdEw7SUFBSyxPQUFMQTtHQUNzQjtZQUUzQnM5QyxNQUFNQyxLQUFJcDRCO0lBQ1osSUFDRSxXQUFBLFdBRk1vNEIsS0FBSXA0QixNQUVWO1VBQ0d6VDtLQUNnQyxJQURoQ3ZSLHdCQUFBdVIsTUFDZ0MsT0FUbkMvRSxVQVFHeE07S0FDSDtLQUNBO0tBQ0EsTUFBQSw0QkFIR0E7O0dBR0k7WUFFUHE5QyxRQUFNRCxLQUFJcDRCO0lBQ1osSUFDRSxXQUFBLFdBRk1vNEIsS0FBSXA0QixNQUVWO1VBQ0d6VDtTQUFBdlIsd0JBQUF1UjtLQUNIO0tBQ21DLFdBbEJuQy9FLFVBZ0JHeE07S0FFSDtLQUFBLE9BQUE7O0dBQ007WUFNTnM5QyxzQkFBc0JDLElBQUssT0FBTEEsR0FBTztZQWtDN0JDLHNCQUFzQkQ7SUFDeEIsV0FBUyxtQ0FEZUE7R0FFRjtZQUVwQkUsc0JBQXNCcG9DLEtBQUlnRzthQUN4QkgsS0FBS3dpQztLQUNQLE9BRE9BO3FCQURlcm9DO3FCQUFBQTtJQUtpRDtJQUV6RSxTQVA0QmdHO0tBZWhCO1lBZmdCQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtNQWVoQixNQWRSSCxLQUR3Qkc7S0FjeEI7YUFBSzs7O09BZG1CQSxTQVVvQjtJQUVOLFVBWHRDSDtJQVdFLFdBQUs7R0FLdUM7WUFjaER5aUMsb0JBQW9CQyxTQUFRQztJQUNJLElBYkVDLFlBdkJsQ04sc0JBbUM0Qks7U0FaTUMsV0FHaEMsT0FBQSw2QkFTa0JGO1FBUGYvNkMsSUFMNkJpN0Msb0JBSzdCajdDOztTQUNIbEI7O01BQ1EsWUExQlY4N0Msc0JBeUJFOTdDLG9CQURHa0IsR0FDSGxCLE9BQUFBOztXQUdXcEU7T0FBTyw2QkFHQXFnRCxjQUhQcmdEOztNQUhYLFVBQUFvRTtpQkFBQUE7VUFBQUE7Ozs7R0FPbUU7WUFHckVvOEMsZ0JBQWdCSDtJQUNsQixPQUxFRCxvQkFJZ0JDLFNBQ1U7R0FBc0I7WUFlaERJLHdCQUF3Qkg7SUFDTixJQWRFQyxZQTFDcEJOLHNCQXVEd0JLO1NBYkpDLFdBR25CO0lBRVM7S0FETGo3QyxJQUplaTdDO0tBS2QxOEMsSUFBSTtXQURMeUI7S0FDSzs7U0FDUmxCOztNQUNRLFlBN0NWODdDLHNCQTRDRTk3QyxvQkFGR2tCLEdBRUhsQixPQUFBQTs7V0FHV3BFO09BQU8sNkJBSmQ2RCxRQUlPN0Q7O01BSFgsVUFBQW9FO2lCQUFBQTtVQUFBQTs7O0lBS0EsT0FBQSw2QkFOSVA7R0FTaUQ7WUFFdkQ2OEMsd0JBRWlCQztJQUZTLGFBRVRBLFdBQUFBLFdBQUFBO0dBQWU7WUFFaENDLHlCQUNlRCxPQURZLGFBQ1pBLFdBQUFBO0dBQ1k7WUFTM0JFLHdCQUVlRjtJQUZXLGFBRVhBO3NCQUFBQSxVQUFBQSxVQUFBQSxVQUFBQTs7R0FNZDtZQUVERyx1QkFHZUg7SUFIVSxTQUdWQSx5Q0FBQUE7S0FBSyxXQUFMQTtJQURvQjtHQUNEO1lBRWxDSSxnQkFBZ0JUO0lBT1osWUEvRkpMLHNCQXdGZ0JLO2dCQVFOO1FBQ0hDLDRCQUFBQSw4QkFNRG44QztJQUZvQjtlQUVwQkE7Ozt1Q0FOQ204QyxXQU1EbjhDLE9BQUFBO01BQUssb0JBQUxBLFdBQUFBOzs7S0FDRCxpQkFQRW04Qzs7R0FTSTtZQUVYUyw2QkFBNkJDLE9BQy9CLE9BckJFRixvQkFvQjZCRTtHQUNKO1lBV3pCQyxxQkFBcUJsQixJQUFLLE9BQUxBLGNBQW9CO1lBV3pDbUI7SUFBbUIsT0E1RW5CVix3QkE0RTJDO0dBQXNCO1lBSzdEVyxpQkFBaUJDO0lBQ3ZCO0tBQW1CO01BQWZDLGVBQWUsNkJBelBqQnhDO01BMFBFeUMsbUJBRm1CRixJQUNuQkM7TUFFQWo0QztRQUFVLDZCQTNQWnkxQyxVQXlQRXdDLGNBQ0FDO01BRUosVUFESWw0QztlQUNKOztHQUF1QztZQUlyQ200QyxTQUNFLytDLEdBQUosYUFDRyxhQURDQSxLQUFBQSxPQUFBQSxFQUNzQztZQUV4Q2cvQyxZQUFZaC9DLEdBQ0gsSUFBUHFiLE9BTEYwakMsU0FJWS8rQyxJQUVMLE9BRExxYixRQUM4QjtZQUVoQzRqQyxjQUFjai9DLEdBQ0wsSUFBUHFiLE9BVEYwakMsU0FRYy8rQyxJQUVQLE9BRExxYixRQUNpQztPQUtuQzZqQztZQWdCQUMsK0JBQW1DLzVCLEtBQUl5NEI7SUFDSCxVQTNPcENyeEMsVUEwT21DNFk7SUFDckM7SUE3SUV1NEIsZ0NBNEl1Q0U7SUFHNUIsSUFBVHVCLFNBQVM7T0FBVEE7S0FFb0I7TUFBQSxNQUFBLHVCQUZwQkE7TUFFWSx1QkFyQmRGO0tBcUJBOztJQUFBLE9BQUE7R0FDVTtHQUVtQixJQUE3QkcsaUNBUkFGO1lBVUFHLCtCQUErQlY7SUFGL0JTLGdDQUUrQlQ7O0dBQXFDO09BRXBFVztZQW9DQUMsMEJBQTBCcjZCLE9BQUlzNkI7SUFDaEM7S0E1QkE7O09BR001QjtTQXdCMEI0QixrQkFwQzlCRixrQkFnQkk7TUFFSixJQUFLO01BQ0w7T0FDRTtRQUFBLE1BQUEsV0F4QkZGLCtCQXdDMEJsNkIsT0F4QnRCMDRCOzs7WUFTQzZCO09BQ2tCO1FBRGxCdDZCLDBCQUFBczZCO1FBQ0NDLGtCQUFpQjtRQUNpQixNQTdReENuekMsVUEwUjBCMlk7T0FieEI7T0EvS0Z3NEIsZ0NBb0tJRTtPQWNBLFVBaFJKcnhDLFVBMlFLNFk7T0FJSDtPQWpMRnU0QixnQ0E4S01nQztpQkFNSjs7Ozs7OztnQkFHRTs7S0FPSjs7ZUFHQTtHQUFFO0dBTUo7MkNBWEVIO3FCO3FCOzBCOzs7O09BcktBdkI7T0FJQUU7T0FXQUM7T0FVQUM7T0EvRUFaOzs7T0EvREFqeEM7T0FsQkFpd0M7T0F1QkFVO09BUUFFO09BcUZBVTtPQTRGQVc7OztPQUtJQztPQTlOSm5DO09Bb0RBYztxQjtPQXFFQUs7T0FvQkFLO09Bd0hBbUI7T0FVQUc7T0FqR0FoQjtPQW9CQUM7O09BWUFFOzs7O09BNEJBTztPQUlBQzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7WUMzUUFXLFFBQU1uOUMsVUFBTSxPQUFOQSxFQUFPO1lBQ2JvOUMsS0FBS2hoRCxHQUFFbUIsR0FBRUMsR0FBSSxPQUFBLFdBQVJwQixHQUFJb0IsR0FBRkQsR0FBVztZQUNsQjgvQyxPQUFPaHdDLEdBQUU5USxHQUFJLFdBQUksV0FBVjhRLEdBQUU5USxHQUFhO0dBRTFCOzs7O0lBRXNDLGdDQUUvQjtJQURnRCxJQUF0Q29tQixnQkFBc0MsTUFBQSwrQkFBdENBO0lBQU8sV0FBSztHQUNsQjtHQUZGO1lBSUwyNkIsUUFBVUMsV0FBd0JDO2FBQ2hDQztLQUNGLElBQUksV0FGTUYsZUFFTjtXQUFnQmppQztNQUNUO09BRFM1Uyx3QkFBQTRTO09BQ2R3L0IsS0FBSztPQUNxQiwwQkFGWnB5QztzQ0FDZG95QztNQUNKLE1BQUE7O0lBQW1EO0lBRXZELElBQU0sSUFDSnZzQyxTQURJLFdBTjhCaXZDO1VBUXhCRTtLQUNNO01BRE5DLCtCQUFBRDtNQUNKRSxVQUFVO0tBUmRIO2dDQU9RRSxVQUNKQztLQUVKLE1BQUEsNEJBSFFEOztJQVBSRjtJQU1RLE9BQVZsdkM7R0FJZ0Q7d0JBckJoRDR1QyxTQUNBQyxNQUNBQyxRQVFBQzs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUM2Q0FPLFdBQVc3OUM7SUFDSixJQUFMZ2pCLEtBQUs7SUFDVCw2QkFGYWhqQixRQUNUZ2pCO0lBRUosNkJBSGFoakIsUUFDVGdqQjtJQUdKLDZCQUphaGpCLFFBQ1RnakI7SUFJSiw2QkFMYWhqQixRQUNUZ2pCO0lBS0osNkJBTmFoakI7SUFPVSxJQUFuQnpCLEtBQW1CLHNCQUFBLGtDQU5uQnlrQjtJQU9KLDZCQVJhaGpCLFFBT1R6QixJQU5BeWtCO0lBUUosNkJBVGFoakIsUUFPVHpCLElBTkF5a0I7SUFTSiw2QkFWYWhqQixRQU9UekIsSUFOQXlrQjtJQVVKLDZCQVhhaGpCO0lBWVUsSUFBbkJ4QixLQUFtQixzQkFBQSxrQ0FYbkJ3a0I7SUFZSiw2QkFiYWhqQixRQVlUeEIsSUFYQXdrQjtJQWFKLDZCQWRhaGpCLFFBWVR4QixJQVhBd2tCO0lBY0osNkJBZmFoakIsUUFZVHhCLElBWEF3a0I7SUFlSiw2QkFoQmFoakIsUUFZVHhCLElBWEF3a0I7SUFnQkosNkJBakJhaGpCLFFBWVR4QixJQVhBd2tCO0lBaUJKLDZCQWxCYWhqQixRQVlUeEIsSUFYQXdrQjtJQWtCSiw2QkFuQmFoakI7SUFvQmIsNkJBcEJhQSxRQUNUZ2pCO0lBb0JKLDZCQXJCYWhqQixRQUNUZ2pCO3dDQURTaGpCLFFBQ1RnakI7R0FxQndDO1lBRzFDODZCO0lBQ0Y7S0FBb0IsUUFBQTtLQUFOQztLQUFMQztLQUFKQztJQUNMLFFBREtBLEtBQVNGLEtBQUxDO0dBQzRDO1lBbUJuREUsYUFBYTloRCxHQUNmLGNBRVc7WUFHVCtoRCxhQUFhLzlDLEdBQUFBLG1CQUFjO0dBbUJSO0lBQWZnK0M7O3VCQUNzQixTQUFJO3VCQUNKLFNBQUk7dUJBQ1IsU0FBSTt1QkFDRSxTQUFFO3VCQUNGLFNBQUU7WUFPMUJ2OEIsTUFDRHc4QixlQUNDLytCLEtBQ0ZnL0I7SUFDQSxHQUZFaC9CO1NBQWlCRSxNQUFqQkYsUUFBQWkvQixpQkFBaUIvK0I7O1NBQWpCKytCO0lBRUYsT0FBQSwyQkFIQ0YsZUFDQ0UsZ0JBQ0ZEO0dBQzRDO2lCQWhCMUNGLGNBWUF2OEI7cUI7Ozs7O09BbkZKZzhCO09BeUJBQzswQjs7O09BcUJBSTtPQU1BQzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7OztJQ3hHQXIyQztJQUNBTjs7Ozs7WUFLQWczQyxPQUFPMWpEO0lBQ1QsT0FBQSxnQkFEU0EsOEJBQUFBO0dBQzhCO1lBRXJDMmpELE1BQU05L0MsR0FBSSxPQUhWNi9DLE9BR2lCLDZCQUFYNy9DLElBQXFDO1lBRTNDKy9DLFVBQVU1akQsS0FBSTJGLEtBQUlDO0lBQ3BCLFFBRGdCRCxZQUFJQyw4QkFBUjVGLE9BQVE0RixZQUFKRDtLQUdYLE9BQUEsZ0JBSE8zRixLQUFJMkYsS0FBSUM7SUFFZixPQUFBO0dBQ3lCO1lBRTVCaStDLFNBQVNoZ0QsR0FBRThCLEtBQUlDO0lBQU0sT0FMckJnK0MsVUFLK0IsNkJBQXRCLy9DLElBQUU4QixLQUFJQztHQUFrRDtZQUVqRXM0QyxLQUFLNEY7SUFDRSxJQUFMeDlDLEtBQUssdUJBREZ3OUM7SUFFUCxJQUFNLElBQ0ZwaUMsSUFERSxzQkFERnBiO1VBR1VrYTtTQUFBNVMsd0JBQUE0UztLQUFLLHVCQUhmbGE7S0FHNEIsTUFBQSw0QkFBbEJzSDs7SUFETCx1QkFGTHRIO0lBRUssT0FBTG9iO0dBQ21DO1lBRXJDaGMsT0FBT0ssTUFBS2crQyxRQUNkLE9BQUEsdUJBRFNoK0MsTUFBS2crQyxRQUNXO1lBRXZCMTlDLE1BQU1OLE1BQU8sT0FBQSx1QkFBUEEsVUFBa0M7WUFFeENpK0MsU0FBUzloRCxHQUNYLGdCQURXQSxvQkFBQUEsWUFDaUU7WUFFMUUraEQsT0FBT3ZpQztJQUNULGdDQURTQTtLQUNxQjtJQUNqQixJQUFUak8sU0FBUyx1QkFDYnJQOztLQUNvQixJQUFkM0IsSUFBYyxnQkFKWGlmLEdBR1R0ZDsyQkFESXFQLFFBQ0pyUCxXQU5FNC9DLFNBT0l2aEQ7MkJBRkZnUixTQUNKclAsb0JBTkU0L0MsU0FPSXZoRDtLQUROLFVBQUEyQjtlQUFBQSxHQUtBLE9BQUEsNkJBTklxUDtTQUNKclA7O0dBSzZCO1lBRTNCOC9DLFNBQVM1aEQ7SUFDWCxnQ0FEV0E7S0FDbUI7SUFBQSxTQUMxQjZoRCxNQUFNai9DO0tBQ1IsU0FEUUE7ZUFBQUE7Z0JBQUFBLFdBQUFBOzttQkFBQUEsV0FBQUE7O2tCQUFBQSxxQkFBQUE7S0FLRCxNQUFBOztJQUEwQztJQUd0QyxJQUFUdU8sU0FBUyx1QkFDYnJQOztLQUZpQztNQUF4QkMsVUFFVEQ7TUFGaUMsTUFQN0IrL0MsTUFPbUMsZ0JBVDVCN2hELEdBU0YrQjthQVBMOC9DLE1BT2UsZ0JBVFI3aEQsR0FTRitCO0tBR1AsdUJBRkVvUCxRQUNKclAsR0FDcUI7S0FBbkIsVUFERkE7ZUFBQUEsR0FHQSxPQUFBLDZCQUpJcVA7U0FDSnJQOztHQUc2Qjs7OztPQXhEM0I0STtPQUNBTjtPQUtBZzNDO09BR0FDO09BRUFDO09BS0FDO09BRUEzRjtPQU1BeDRDO09BR0FXO09BS0E0OUM7T0FVQUM7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQzVCRUUsaUJBQWUsV0FBTyxrQ0FBMEI7WUFDaERDLE9BQU9DLEtBQUlDO0lBQ2IsNkJBRGFBLFdBQUpEO0lBQUFBLFNBQUlDOztHQUVLO1lBR2hCQyxVQUFVbGlELEdBQUVtaUQ7SUFDZDtLQUtJQyxlQU5VRCwyQkFBQUE7S0FPVnRnRCxJQURBdWdEO0tBRUpyZ0Q7O0tBQ0UsaUJBVFUvQixNQVFaK0IsU0FBQUEsT0FBQUE7S0FDRSxVQURGQTtlQUFBQTtTQUFBQTs7SUFHVztLQUFQNkM7Z0JBQ2MsK0JBTGQvQztLQUlPOztTQUNYQzs7TUFHd0I7T0FGbEIrVCxJQUROL1Q7T0FFTTJxQixhQUZOM3FCLEdBTElEO09BTmExQixxQkFLYmlpRCxRQVFFMzFCLE9BQUFBO09BYk0zbkIsU0FVUkY7T0FWdUMsTUFBQSwyQkFBMUJ6RTtPQUFrQixNQUFBLHVCQUF2QjJFO01BVVJGLFVBVitCO01BR3BCO09BRkh3YSxJQVNSeGE7T0FQVyxNQUFBLGdCQUZId2E7T0FDNkMsTUFBQSxnQkFEN0NBO09BQ21CLE1BQUEsZ0JBRG5CQTtlQUNBLGdCQURBQTsrQkFGQXBmLE1BYU42VixPQUFBQTtNQUdKLGlCQWhCVTdWLE1BYU42VixPQUFBQTtNQUROLFVBQUEvVDtpQkFBQUE7VUFBQUE7OztJQVpZOUI7O0dBa0JGO1lBR1JkLEtBQUtpakQ7SUFDTSxJQUFUaHhDLFNBNUJGMndDO0lBTUFJLFVBc0JFL3dDLFFBREdneEM7SUFFUCxPQURJaHhDO0dBRUU7WUFHSmt4QyxzQkFBb0IsT0FOcEJuakQsS0FNeUIseUJBQWdCO1lBRXpDc1YsS0FBS3hVO0lBQ00sSUFBVG1SLFNBcENGMndDO0lBQ0FDLE9BbUNFNXdDLFFBREduUjtJQUVQLE9BREltUjtHQUVFO1lBSUpteEMsS0FBS3RpRDtJQUFBQSxRQUFBQTtJQUVNO1dBRk5BO0tBRUh1aUQsMEJBRkd2aUQ7WUFBQUE7S0FHSHdpRDt3QkFIR3hpRDtVQUVIdWlELFVBQUFBOztLQUdBRSxXQUZBRDtXQUhHeGlEO0lBTVAsaUJBTk9BLHNCQUtIeWlEO0lBQ0osT0FESUE7R0FFSTtZQUdGQyxPQUFPMWlELEdBQUVKO0lBQ2Y7S0FBUSxJQUFKUCxJQVhGaWpELEtBVVd0aUQsSUFFVGIsYUFEQUUsR0FEV087dUJBQUFBLG9CQUNYUCxJQUNBRixRQUMrQyxPQUQvQ0E7O0dBQ2dEO1lBRWxEd2pELE1BQUkzaUQsR0FBRTRpRDtJQUNSLGlCQURRQSxhQUFBQSxPQUdILE9BUkNGLE9BS0ExaUQsR0FBRTRpRDtJQUVILE9BQUE7R0FDYztZQTJCakJDLFNBQVM3aUQsR0FBRTRpRDtJQUNiLFFBRGFBLE9BRVgsT0FBQTtxQkFGV0EsT0FNWCxPQXpDSUYsT0FtQ0sxaUQsR0FBRTRpRDtJQXhCYjtLQUNTLElBQUxFLEtBdEJGUixLQTZDU3RpRCxJQXRCUCtpRCxLQXZCRlQsS0E2Q1N0aUQsSUF4QlBnakQ7UUF3QlNKOztPQWpCTEssUUFMSkYsd0JBREFEO09BRUloaUQsVUFISmtpRDtPQUdDM2pELElBSUc0akQ7O01BS0s7T0FBTEMsS0FqQ05aLEtBNkNTdGlEO09BckJObW9CLFFBU0crNkIseUJBVkpILHNCQURBRDtPQUVJM2hDO09BQUFyZ0IsVUFBQXFnQjtPQUFIOWhCLElBQUE4b0I7U0FrQkRocEIsYUFsQkNFLEdBcUJRdWpEO1VBckJMOWhELFVBcUJLOGhELHdCQXJCUnZqRCxJQWtCREYsUUFDOEMsT0FEOUNBOztHQVNZO1lBWWRna0QsTUFBTW5qRCxHQUFFNGlEO0lBQ1YsR0FBRyxlQURPQTtLQUVMLE9BQUE7SUFWTDtLQUFzQjtNQUFsQkUsS0F2REZSLEtBK0RNdGlEO01BUEoraUQsTUF4REZULEtBK0RNdGlEO01BTkpYLElBRkF5akQsS0FDQUM7TUFFQTVqRCxJQUFJLFNBREpFLEdBTU11akQ7S0FKUCxLQUFBLGlCQUZDdmpELElBQ0FGLDBCQUtNeWpEO01BRkwsT0FIRHpqRDs7R0FRaUI7WUFhbkJpa0QsTUFBTXBqRCxHQUFFNGlEO0lBQ1YsR0FBRyxlQURPQTtLQUVMLE9BQUE7SUFYTDtLQUFTO01BQUxFLEtBQUssb0JBdEVQUixLQStFTXRpRDtNQVJKK2lELEtBQUssc0JBQWlCLG9CQXZFeEJULEtBK0VNdGlEO01BUEprakQsS0FBSyxzQkFBaUIsb0JBeEV4QlosS0ErRU10aUQ7TUFOSlgsSUFBSSxjQUhKeWpELElBR21CLGNBRm5CQyxJQUNBRztNQUVBL2pELElBQUksdUJBREpFLEdBTU11akQ7S0FKUDs7T0FBQTtTQUFBLGVBRkN2akQsR0FDQUY7U0FDZSx1QkFBVSxnQ0FJbkJ5akQ7TUFGTCxPQUhEempEOztHQVFpQjs7SUFHbkJra0Q7O2tCQUVPcmpELEdBQUU0aUQsT0FBUyxPQXhCbEJPLE1Bd0JPbmpELEdBQUU0aUQsT0FBZ0U7O1NBQ2xFNWlELEdBQUU0aUQ7U0FBUyxPQUFBO2tCQVRsQlEsTUFTT3BqRCxHQUF1QyxvQkFBckM0aUQ7UUFBZ0U7WUFXekVVLFFBQU10akQsR0FBRTRpRDtJQUFRLElBTGRyMkMsS0E5RkYrMUMsS0FtR010aUQsSUFKSnlvQixLQS9GRjY1QixLQW1HTXRpRDtJQUFVLFFBTGR1TSxtQkFDQWtjLG9CQUlNbTZCO0dBQTJCO1lBRW5DVyxLQUFLdmpELEdBQUksY0FyR1RzaUQsS0FxR0t0aUQsZ0JBQXVCO0dBTXBCLElBQVY4SjtZQWdCQTA1QyxjQUFVLE9BM0hSbEIsS0EyR0Z4NEMsV0FnQjRCO1lBQzVCMjVDLE1BQUliLE9BQVEsT0E3R1ZELE1BNEZGNzRDLFdBaUJJODRDLE9BQStCO1lBQ25DYyxXQUFTZCxPQUFRLE9BaEZmQyxTQThERi80QyxXQWtCUzg0QyxPQUFvQztZQUM3Q2UsUUFBTWYsT0FBUSxPQS9EWk8sTUE0Q0ZyNUMsV0FtQk04NEMsT0FBaUM7WUFDdkNnQixZQUFVaEIsT0FBUSxPQTFDaEJTLFVBc0JGdjVDLFdBb0JVODRDLE9BQXFDO1lBQy9DaUIsUUFBTWpCLE9BQVEsT0FqRFpRLE1BNEJGdDVDLFdBcUJNODRDLE9BQWlDO1lBQ3ZDa0IsUUFBTUMsT0FBUSxPQTlCWlQsUUFRRng1QyxXQXNCTWk2QyxPQUFpQztZQUN2Q0MsY0FBVSxPQTdCUlQsS0FNRno1QyxXQXVCNEI7WUFFNUJtNkMsWUFBVTlCLE1BQU8sT0F4S2ZELFVBK0lGcDRDLFdBeUJVcTRDLE1BQW1DO1lBQzdDanpDLEtBQUtpekMsTUFBTyxPQXpLVkQsVUErSUZwNEMsZUEwQktxNEMsT0FBeUM7WUFDOUMrQixpQkFBZSxPQUZmRCxZQUV5Qix5QkFBZTtZQUl4Q0UsaUJBQWUsT0FqSmIzdkMsS0FrSEYxSyxXQStCaUM7WUFDakNzNkMsVUFBVXBrRCxHQUFJLE9BcExaK2hELE9Bb0pGajRDLFdBZ0NVOUosR0FBMEI7Ozs7T0FOcENrUDtPQURBKzBDO09BRUFDO09BWEFWO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FFOztRQWpKRTlrRDtRQU1BbWpEO1FBRUE3dEM7UUFPQTh0QztRQWVBSztRQThCQUU7UUFrQkFNO1FBc0JBRTtRQU5BRDtRQW9CQUU7UUFFQUM7T0FxQ0ZZO09BQ0FDOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUMvS0FDLGtCQUFrQnRqQztJQUNwQixXQURvQkEsMENBQUFBOztHQUVDO1lBRW5CdWpDLHVCQUF1QnZqQyxHQUFBQSxTQUFBQSxtQkFDUztPQU01QixJQUFBLE1BQUEsa0NBREZ3akM7Ozs7SUFFRixJQUFJLElBQUEsTUFBQTs7Ozs7O1FBRkZBOztHQUdKO0lBSkVDLHFCQUlGLDhCQUhJRDtJQUtGRSxpQkFOQUQ7WUFRQUUsaUJBRkFELDRCQUVpQztZQUNqQ0UscUJBQW1CLE9BSG5CRixjQUc4QjtHQUVsQjtJQUFaRyw0QjtZQVFJQyxjQUFjMWtELEdBQUVQO0lBQ3RCLElBRG9COFIsTUFBQXZSO0lBQ3BCO1FBRHNCUCxLQUFGOFIsS0FDTCxPQURLQTswQkFBQUEsY0FFc0IsT0FGdEJBO1NBQUE4bkMsTUFBQTluQyxhQUFBQSxNQUFBOG5DOztHQUdRO1lBRTFCMTlCLE9BQVNvRyxLQUFzQjRpQztJQUNqQyxHQURXNWlDLFNBQVNFLE1BQVRGLFFBQUE2aUMsU0FBUzNpQyxjQUFUMmlDLFNBbEJUTjtJQW1CTSxJQUFKemtELElBTkU2a0Qsa0JBSzJCQztJQUVqQyxHQUZXQzs7MEJBYlRIOzs7V0FBQUE7MERBQUFBLFFBQUFBO01BZUV6QyxPQUFzQjs7U0FBdEJBO0lBQ0osY0FBa0QsZUFGOUNuaUQsT0FDQW1pRCxNQURBbmlEO0dBRWtFO1lBRXBFd3RCLE1BQU16TTtJQUNSLGVBRFFBOztlQUFBQTs7O2NBR04sNEJBSE1BLFNBQUFBOztHQUlMO1lBRURtUSxNQUFNblE7SUFDUixJQUFJemQsTUFESXlkO1lBQUFBLGdCQUNKemQsUUFFTyx1QkFISHlkO0tBQUFBO0tBQUFBLE9BT0ksZUFBVyx1QkFQZkE7OztJQUlOLE9BVkF5TSxNQU1Nek07R0FRTDtZQUVEaWtDO0lBQWtCLFlBQ1Q7SUFZTTtLQVhUbk47S0FBS2pzQjtLQUFNcmpCO0tBV1h2TCxhQVhBNjZDLEtBQUtqc0IsTUFBTXJqQjtLQU9GN0wsT0FJVE07ZUFYV3VMOzttQkFZZixPQURJdkw7S0FQZTtNQURUaW9EO01BQUszNEI7TUFBTTQ0QjtNQUNYcm9ELGFBREFvb0QsT0FBSzM0QixRQUFNNDRCO0tBSVJ4b0QsVUFISEc7U0FHR0gsT0FISEcsa0JBRFdxb0Q7O0dBVXBCO1lBRUgxd0MsS0FBS3VNO0lBQUk7WUFBSkE7WUFBQUE7S0FBb0IsT0FBQSw2QkFqQnpCaWtDLGlCQWlCS2prQztJQUFJLFdBQUpBO0dBQXNEO1lBRTNENVMsT0FBTzRTLEdBQUksT0FBSkEsS0FBVTtZQUVqQm9rQyxtQkFBbUJDLFVBQVNDLFNBQVFDLE9BQU1DO0lBQzVDO0tBQUlDLFFBRHdDRDtLQUV4Q0UsYUFBYSxlQURiRDtZQURrQ0Y7S0FrQnRDOztTQUFBdmpEOztNQUNnQixJQUFBLDBCQW5Cc0J1akQsT0FrQnRDdmpELFNBQUFBLE1BYkkrckI7TUFGb0I7WUFFcEJBO09BQ0U7UUFESStwQixNQUFOL3BCO1FBQVdsQyxPQUFYa0M7UUFBaUJ2bEIsT0FBakJ1bEI7UUFDTU8sU0FOb0JnM0IsVUFLMUJ2M0IsV0FBTStwQixLQUFLanNCO1FBS0w4NUIsT0FBTyxXQVZJTixVQUtYdk47UUFRRzlwQix5QkFYVDAzQixZQVFNQyxVQUFBQTtVQUdHMzNCO1FBQUFBLFdBUEhNOztRQU1PLGlCQVoyQmszQixPQVVsQ0csVUFBQUEsUUFKQXIzQjtPQVNKLGlCQWJGbzNCLFlBUU1DLFVBQUFBLFFBSkFyM0I7V0FETlAsT0FBaUJ2bEI7O01BY25CLFdBREZ4RztrQkFBQUE7VUFBQUE7OztPQWxCOEJzakQ7S0FzQjVCLFdBckJFRyxlQXFCRjs7VUFBQTFqRDs7T0FDUSxJQUVDNmpELDJCQXZCUEYsWUFvQkYzakQsT0FBQUE7VUFHUzZqRCxTQUFBQTtPQUhULFdBQUE3akQ7bUJBQUFBO1dBQUFBOzs7Ozs7Z0JBdEI0QnVqRDs7R0EwQnhCO1lBRUpsMEIsT0FBT2kwQixVQUFTcmtDO0lBQ2xCO0tBQUl1a0MsUUFEY3ZrQztLQUVkNmtDLFFBREFOO0tBRUFFLFFBREFJO1lBQ0FKOztJQUVVLElBQVJELFFBQVEsZUFGVkMsV0FHRUgsY0E3R0poQixrQkF1R2dCdGpDO0lBQUFBLE9BS1p3a0M7SUFHSixPQXBDQUosbUJBb0NtQixXQVJaQyxVQUFTcmtDLElBTVpza0MsU0FMRkMsT0FJRUM7R0FJSDtZQUVEajhDLEtBQUt0SyxHQUFFK2hCO0lBTU0sSUFBWDhrQyxXQXhIRnhCLGtCQWtIT3RqQztXQU1MOGtDLFVBcEhGdkIsdUJBOEdPdmpDO0lBT1k7U0FFZjNCLElBVEcyQixhQVNIM0I7O1VBQ0p0ZDs7b0NBRElzZCxHQUNKdGQsT0FBQUE7T0FUa0I7O1lBR1grMUMsZ0JBQUtqc0IsaUJBQU1yakI7UUFDZCxXQUxDdkosR0FJRTY0QyxLQUFLanNCO29CQUFNcmpCOztPQU9oQixXQURGekc7bUJBQUFBO1dBQUFBOzs7b0JBSkUrakQsd0JBcEhGdkIsdUJBOEdPdmpDO0tBYWM7O1VBQ2xCdUU7U0FBQUMsMEJBQUFEO0tBQVMsR0FSVnVnQyw0Q0FRQ3RnQztLQTVISCsrQix1QkE4R092akM7S0FnQlAsTUFBQSw0QkFGR3dFOztHQUVNO1lBc0JUdWdDLG1CQUFtQjltRCxHQUFFK2hCO0lBQ3ZCLElBQUkzQixJQURtQjJCLE1BRW5COGtDLFdBMUpGeEIsa0JBd0pxQnRqQztXQUVuQjhrQyxVQXRKRnZCLHVCQW9KcUJ2akM7SUFHRjtnQkFGakIzQjs7VUFyQmdDdGQ7O09BMEJNLElBQUEsMEJBTm5CaWYsTUFwQmFqZixPQUFBQSxJQUFFcEYsVUFNOUI4ZTs7YUFBQUE7UUFDUTtTQUROcThCLE1BQUZyOEI7U0FBT29RLE9BQVBwUTtTQUFhalQsT0FBYmlUO1NBQ1EsUUFBQSxXQWFLeGMsR0FkWDY0QyxLQUFLanNCOzthQUtKVTtTQUNILEdBWjhCNXZCO1VBQUFBLFVBTTlCOGU7O1VBT1csaUJBT0l1RixNQXBCYWpmLE9BQUFBLEtBTTVCMFo7U0FBQUEsVUFLRzhRO2FBWDJCNXZCLE9BTTlCOGUsTUFBQUEsT0FBYWpUOzthQWNFd1ksT0FBQUEsa0JBZGZ2RixPQUFhalQ7O1VBTmlCN0wsTUFBQUEsa0JBR3ZCLGlCQWlCUXFrQixNQXBCYWpmLE9BQUFBO09BMEJoQyxXQTFCZ0NBO21CQUFBQTtXQUFBQTs7O29CQXNCaEMrakQsd0JBdEpGdkIsdUJBb0pxQnZqQztLQVFBOztVQUNsQnVFO1NBQUFDLDBCQUFBRDtLQUFTLEdBUFZ1Z0MsNENBT0N0Z0M7S0E3SkgrK0IsdUJBb0pxQnZqQztLQVdyQixNQUFBLDRCQUZHd0U7O0dBRU07WUFFVHRiLEtBQUtqTCxHQUFFK2hCLEdBQUU3UjtJQU9JLElBQVgyMkMsV0E1S0Z4QixrQkFxS090akM7V0FPTDhrQyxVQXhLRnZCLHVCQWlLT3ZqQztJQVFZO0tBR1IsSUFEUDNCLElBVkcyQixNQVdIeFIsYUFYS0wsY0FVTGtRLHNCQUNPOztVQUNYdGQ7O09BQ29CO1FBWkY4UixTQVVkckU7UUFWWXcyQyx1QkFTWjNtQyxHQUVKdGQsT0FBQUE7UUFYZ0JQLElBQUF3a0Q7UUFBRW5oRCxPQUFBZ1A7T0FDbEI7YUFEZ0JyUztRQUtHO1NBRFpzMkMsTUFKU3QyQztTQUlKcXFCLE9BSklycUI7U0FBQWdILE9BQUFoSDtTQUFFdUQsU0FLQyxXQU5kOUYsR0FLRTY0QyxLQUFLanNCLE1BSk1obkI7U0FBRnJELElBQUFnSDtTQUFFM0QsT0FBQUU7O09BVWR5SyxZQVZjM0s7T0FXbEIsV0FBQTlDO21CQUFBQTtXQUFBQTs7O1lBTEUrakQsVUF4S0Z2Qix1QkFpS092akM7Z0JBV0h4Ujs7O1VBTUQrVjtTQUFBQywwQkFBQUQ7S0FBUyxHQVZWdWdDLDRDQVVDdGdDO0tBbExIKytCLHVCQWlLT3ZqQztLQW1CUCxNQUFBLDRCQUZHd0U7O0dBRU07WUFTTHlnQztRQUFjbGhEOzttQkFDVCxPQURTQTtLQUVKO01BQVR5RDtNQUFTLFNBRkl6RDtNQUFBQTtnQkFFYnlEOzs7WUFFTDA5QyxNQUFNbGxDO0lBQ1IsVUFEUUE7aUJBRWVPLEdBQUUvZjtLQUFlLFVBTmxDeWtELGlCQU1tQnprRDtLQUFlLE9BQUEsMkJBQWpCK2Y7SUFBb0M7SUFBekQ7S0FERTRrQyxNQUNGO0tBQ0VDLFFBQVEsZUFGUkQ7S0FHSixNQUpRbmxDO2lCQUtEeGY7S0FDSyxJQUFKTSxJQVZGbWtELGlCQVNDemtEO0tBRkg0a0QsVUFHSXRrRCxzQkFISnNrRCxPQUdJdGtELE9BQUFBO0tBQ0o7SUFBMEI7SUFIOUI7SUFLQSxXQVRRa2YsTUFBQUEsaUJBQ0ptbEMsS0FFQUM7R0FTd0I7WUFJMUJyN0MsT0FBT2dYO0lBR1QsSUFBSXNrQyxXQUhLdGtDO0lBS1QsU0FBUS9OLElBQUlqUyxHQUFFdWtEO0tBQVUsSUFBWnRrRCxNQUFBRCxHQUFFd2tELFNBQUFEO0tBQVU7U0FBVkM7V0FLSnpPLE1BTEl5TyxXQUtDMTZCLE9BTEQwNkIsV0FLTy85QyxPQUxQKzlDO09BTVIsZUFESXpPLEtBQUtqc0IscUIsT0FMUDdYLElBQUloUyxLQUtTd0c7O1NBTFR4RyxRQUZScWtELHFCQUtPO01BQ1M7T0FKTkcsMEJBRlZILFVBRVFya0QsU0FBQUE7T0FBQTRVLE1BQUE1VTtPQUFBQSxNQUFBNFU7T0FBRTJ2QyxTQUFBQzs7SUFNMEI7SUFFeEMsSUFBQTtJQUFBLHFCLE9BUlF4eUM7R0FRRztZQUVUeXlDLFlBQVlsbEM7SUFBZ0IsVUFmNUJ4VyxPQWVZd1c7c0I7SUFBZ0IsT0FBQTtHQUFVO1lBRXRDbWxDLGNBQWNubEM7SUFBZ0IsVUFqQjlCeFcsT0FpQmN3VztzQjtJQUFnQixPQUFBO0dBQVU7O2FBb0ZwQ29sQyxVQUFVM2xDLEdBQUU4MkI7S0FDZCxVQURZOTJCO0tBQ1osT0FBQSxpQkFEWUEsTUFBRTgyQjtJQUNvQzthQUVoRHJ3QixJQUFJekcsR0FBRTgyQixLQUFJanNCO0tBQ1o7TUFBSTlwQixJQUpGNGtELFVBR0kzbEMsR0FBRTgyQjtNQUVKOE8sYUFGSTlPLEtBQUlqc0IsdUJBQU43SyxNQUNGamYsT0FBQUE7S0FFSixpQkFITWlmLE1BQ0ZqZixPQUFBQSxLQUNBNmtEO0tBRkU1bEMsT0FBQUE7ZUFBQUEsdUJBQUFBO2tCQXROUm9RLE9BbU5JdTFCLFdBR0kzbEM7SUFLdUQ7YUFlM0R3SCxPQUFPeEgsR0FBRTgyQjtLQUNYO01BZHNCLzFDLElBVnBCNGtELFVBdUJPM2xDLEdBQUU4MkI7TUFFaUIscUJBRm5COTJCLE1BYmFqZixPQUFBQTtNQUFNakY7TUFHMUJIOztXQUFBQSxNQURFO1VBQ1MrdkIsSUFBWC92QixTQUFjNkwsT0FBZDdMO01BQ0ssR0FBQSxpQkFETSt2QixHQVVGb3JCO09BQUY5MkIsT0FBQUE7Y0FibUJsa0I7a0JBQUFBLFlBR1owTDttQ0FVUHdZLE1BYmFqZixPQUFBQSxLQUdOeUc7O1VBSFkxTCxTQUcxQkgsTUFBQUEsT0FBYzZMOztJQVlzQjthQVFwQ3lJLEtBQUsrUCxHQUFFODJCO0tBQ1Q7TUFBYyxNQWxDWjZPLFVBaUNLM2xDLEdBQUU4MkI7TUFDSCx5QkFEQzkyQjtpQkFFSSxNQUFBO1NBQ0E2bEMsZUFBU2g2QixlQUFTaTZCO0tBQ3RCLEdBQUEsaUJBSkVoUCxLQUdFK08sS0FDZ0IsT0FEUGg2QjtVQUFTaTZCLE9BR2QsTUFBQTtTQUNBQyxLQUpjRCxVQUlMaDZCLEtBSktnNkIsVUFJSUUsUUFKSkY7S0FLbEIsR0FBQSxpQkFSRmhQLEtBT01pUCxLQUNnQixPQURQajZCO1VBQVNrNkIsT0FHZCxNQUFBO1NBQ0FDLEtBSmNELFVBSUxFLEtBSktGLFVBSUlHLFFBSkpIO0tBS2xCLEdBQUEsaUJBWk5sUCxLQVdVbVAsS0FDZ0IsT0FEUEM7aUJBQVNDOztrQkFmakMsTUFBQTtVQUNPejZCLGNBQUdiLGlCQUFNcmpCO01BQ2IsR0FBQSxpQkFFRXN2QyxLQUhFcHJCLElBQ2UsT0FEWmI7a0JBQU1yakI7O0lBZXlDO2FBUTNEMEksU0FBUzhQLEdBQUU4MkI7S0FDYjtNQUFjLE1BdERaNk8sVUFxRFMzbEMsR0FBRTgyQjtNQUNQLHlCQURLOTJCO2lCQUVBO1NBQ0E2bEMsZUFBU2g2QixlQUFTaTZCO0tBQ3RCLEdBQUEsaUJBSk1oUCxLQUdGK08sS0FDZ0IsV0FEUGg2QjtVQUFTaTZCLE9BR2Q7U0FDQUMsS0FKY0QsVUFJTGg2QixLQUpLZzZCLFVBSUlFLFFBSkpGO0tBS2xCLEdBQUEsaUJBUkVoUCxLQU9FaVAsS0FDZ0IsV0FEUGo2QjtVQUFTazZCLE9BR2Q7U0FDQUMsS0FKY0QsVUFJTEUsS0FKS0YsVUFJSUcsUUFKSkg7S0FLbEIsR0FBQSxpQkFaRmxQLEtBV01tUCxLQUNnQixXQURQQztpQkFBU0M7O2tCQWZqQztVQUNPejZCLGNBQUdiLGlCQUFNcmpCO01BQ2IsR0FBQSxpQkFFTXN2QyxLQUhGcHJCLElBQ2UsV0FEWmI7a0JBQU1yakI7O0lBZWtEO2FBRXBFNkksU0FBUzJQLEdBQUU4MkI7Y0FDTHNQO01BQWlCO01BQUE7cUJBRXJCO1dBQ08xNkIsZ0JBQVFyTixnQkFBRzdXO09BQ2YsR0FBQSxpQkFESWtrQixHQUpFb3JCLE1BTUosV0FGVXo0QixHQUhYK25DLGVBR2M1K0M7cUJBQUFBOztLQUdNO0tBQ0wsVUEzRXJCbStDLFVBbUVTM2xDLEdBQUU4MkI7S0FRRSxPQVBQc1AsZ0NBREdwbUM7SUFRNEI7YUFVckNxbUMsUUFBUXJtQyxHQUFFODJCLEtBQUlqc0I7S0FDaEI7TUFBSTlwQixJQXRGRjRrRCxVQXFGUTNsQyxHQUFFODJCO01BRVJoMkMscUJBRk1rZixNQUNOamYsT0FBQUE7TUFORzBaLE9BT0gzWjs7U0FQRzJaO1dBQU1pUixJQUFOalIsU0FBU2pULE9BQVRpVDtPQUNBLEtBQUEsaUJBRE1pUixHQUtEb3JCLFVBTExyOEIsT0FBU2pUO09BQVRpVCxVQUtLcThCO09BTExyOEIsVUFLU29ROzs7OztNQUdiO09BQ0QsaUJBSlE3SyxNQUNOamYsT0FBQUEsU0FEUSsxQyxLQUFJanNCLE1BRVovcEI7T0FGTWtmLE9BQUFBO2lCQUFBQSx1QkFBQUE7ZUFNbUMsT0E5Uy9Db1EsT0FtTkl1MUIsV0FxRlEzbEM7Ozs7Ozs7SUFPUDthQUVEMVEsSUFBSTBRLEdBQUU4MkI7S0FDUjtNQUtzQixNQXBHcEI2TyxVQThGSTNsQyxHQUFFODJCOytCQUFGOTJCO0tBQ2tCO2tCQUVwQjtNQUVBLElBRE8wTCxjQUFHbGtCLGlCQUNWLE1BQUEsaUJBRE9ra0IsR0FKSG9yQjtNQUtKLFFBQUE7a0JBRFV0dkM7O0lBRXdCO2FBRXBDMGlCLFFBQVFuSixLQUFJaGdCOztNQUNMLElBQVEzQyxjQUFGc3RCO01BQVEsT0FwR3JCakYsSUFtR1ExRixLQUNLMkssR0FBRXR0QjtLQUFrQjtLQUFuQyxPQUFBLGdDQURjMkM7SUFDdUI7YUFFbkN1bEQsWUFBWXZsQyxLQUFJaGdCOztNQUNULElBQVEzQyxjQUFGc3RCO01BQVEsT0FyQnJCMjZCLFFBb0JZdGxDLEtBQ0MySyxHQUFFdHRCO0tBQXNCO0tBQXZDLE9BQUEsZ0NBRGtCMkM7SUFDdUI7YUFFdkNtUyxPQUFPblM7S0FDQyxJQUFOZ2dCLE1BdFlOaEc7S0FrWUl1ckMsWUFJRXZsQyxLQURLaGdCO0tBRVQsT0FESWdnQjtJQUVEO0lBeEhQO1lBaFJFaEc7WUFLQTBSO1lBTUEwRDtZQTJCQTFjO1lBc1BJZ1Q7WUFvQkFlO1lBVUF2WDtZQW9CQUM7WUFjQUc7WUFrQkFnMkM7WUFTQS8yQztZQXRTSi9HO1lBc0NBdzhDO1lBYUE3N0M7WUE1RkFrRTtZQTRIQTgzQztZQWdCQW43QztZQWVBMDdDO1lBRUFDO1lBMExJeDdCO1lBR0FvOEI7WUFHQXB6Qzs7O1FBbUJJN0o7YUFDQThELEtBQU1pMEMsTUFBWWhpRCxHQUFJLE9BQUEsaUJBQUpBLEdBQVk7OzhCQUQ5QmlLLE9BQ0E4RDtLQWpLUnNmO0tBQ0EwRDtLQUNBMWM7S0FDQWdUO0tBQ0FlO0tBQ0F2WDtLQUNBQztLQUNBRztLQUNBZzJDO0tBQ0EvMkM7S0FDQS9HO0tBQ0F3OEM7S0FDQTc3QztLQUNBa0U7S0FDQTgzQztLQUNBbjdDO0tBQ0EwN0M7S0FDQUM7S0FDQXg3QjtLQUNBbzhCOzthQWdKSXZyQyxPQUFPd3JDLElBQUssT0FBQSxxQkFBTEEsSUFBNEI7YUFDbkNyekMsT0FBT25TO0tBQ0MsSUFBTmdnQixNQUZGaEc7S0FHRixXQW5KRnVyQyxhQWtKTXZsQyxLQURLaGdCO0tBRVQsT0FESWdnQjtJQUVEO0lBVlA7WUFNTWhHO1lBbktKMFI7WUFDQTBEO1lBQ0ExYztZQUNBZ1Q7WUFDQWU7WUFDQXZYO1lBQ0FDO1lBQ0FHO1lBQ0FnMkM7WUFDQS8yQztZQUNBL0c7WUFDQXc4QztZQUNBNzdDO1lBQ0FrRTtZQUNBODNDO1lBQ0FuN0M7WUFDQTA3QztZQUNBQztZQUNBeDdCO1lBQ0FvOEI7WUFpSklwekM7O1lBYUovRixLQUFLL04sR0FBSSxPQUFBLHNCQUFKQSxHQUFnQztZQUNyQ29uRCxXQUFXdjBDLElBQUdDLElBQUc5UyxHQUFJLE9BQUEsVUFBVjZTLElBQUdDLE9BQUc5UyxHQUErQjtZQUNoRHFuRCxZQUFZckYsTUFBS2hpRCxHQUFJLE9BQUEsbUJBQVRnaUQsTUFBS2hpRCxHQUFtQztZQUVwRHVtRCxVQUFVM2xDLEdBQUU4MkI7SUFDZCxZQURZOTJCO2NBRVAsbUJBRk9BLE1BQUU4MkIsUUFBRjkyQjtjQUdQO0dBQW9EO1lBRXZEeUcsSUFBSXpHLEdBQUU4MkIsS0FBSWpzQjtJQUNaO0tBQUk5cEIsSUFORjRrRCxVQUtJM2xDLEdBQUU4MkI7S0FFSjhPLGFBRkk5TyxLQUFJanNCLHVCQUFON0ssTUFDRmpmLE9BQUFBO0lBRUosaUJBSE1pZixNQUNGamYsT0FBQUEsS0FDQTZrRDtJQUZFNWxDLE9BQUFBO2NBQUFBLHVCQUFBQTtpQkE1V0pvUSxPQXVXQXUxQixXQUtJM2xDO0dBS3VEO1lBZTNEd0gsT0FBT3hILEdBQUU4MkI7SUFDWDtLQWRzQi8xQyxJQVpwQjRrRCxVQXlCTzNsQyxHQUFFODJCO0tBRWlCLHFCQUZuQjkyQixNQWJhamYsT0FBQUE7S0FBTWpGO0tBRzFCSDs7VUFBQUEsTUFERTtTQUNTK3ZCLElBQVgvdkIsU0FBYzZMLE9BQWQ3TDtLQUNLLFNBQUEsYUFETSt2QixHQVVGb3JCO01BQUY5MkIsT0FBQUE7YUFibUJsa0I7aUJBQUFBLFlBR1owTDtrQ0FVUHdZLE1BYmFqZixPQUFBQSxLQUdOeUc7O1NBSFkxTCxTQUcxQkgsTUFBQUEsT0FBYzZMOztHQVlzQjtZQVFwQ3lJLEtBQUsrUCxHQUFFODJCO0lBQ1QsSUFBYyxNQXBDWjZPLFVBbUNLM2xDLEdBQUU4MkIsTUFDSCx5QkFEQzkyQjtnQkFFSSxNQUFBO1FBQ0E2bEMsZUFBU2g2QixlQUFTaTZCO0lBQ3RCLFNBQUEsYUFKRWhQLEtBR0UrTyxLQUNvQixPQURYaDZCO1NBQVNpNkIsT0FHZCxNQUFBO1FBQ0FDLEtBSmNELFVBSUxoNkIsS0FKS2c2QixVQUlJRSxRQUpKRjtJQUtsQixTQUFBLGFBUkZoUCxLQU9NaVAsS0FDb0IsT0FEWGo2QjtTQUFTazZCLE9BR2QsTUFBQTtRQUNBQyxLQUpjRCxVQUlMRSxLQUpLRixVQUlJRyxRQUpKSDtJQUtsQixTQUFBLGFBWk5sUCxLQVdVbVAsS0FDb0IsT0FEWEM7Z0JBQVNDOztpQkFmakMsTUFBQTtTQUNPejZCLGNBQUdiLGlCQUFNcmpCO0tBQ2IsU0FBQSxhQUVFc3ZDLEtBSEVwckIsSUFDbUIsT0FEaEJiO2lCQUFNcmpCOztHQWU2QztZQVEvRDBJLFNBQVM4UCxHQUFFODJCO0lBQ2IsSUFBYyxNQXhEWjZPLFVBdURTM2xDLEdBQUU4MkIsTUFDUCx5QkFESzkyQjtnQkFFQTtRQUNBNmxDLGVBQVNoNkIsZUFBU2k2QjtJQUN0QixTQUFBLGFBSk1oUCxLQUdGK08sS0FDb0IsV0FEWGg2QjtTQUFTaTZCLE9BR2Q7UUFDQUMsS0FKY0QsVUFJTGg2QixLQUpLZzZCLFVBSUlFLFFBSkpGO0lBS2xCLFNBQUEsYUFSRWhQLEtBT0VpUCxLQUNvQixXQURYajZCO1NBQVNrNkIsT0FHZDtRQUNBQyxLQUpjRCxVQUlMRSxLQUpLRixVQUlJRyxRQUpKSDtJQUtsQixTQUFBLGFBWkZsUCxLQVdNbVAsS0FDb0IsV0FEWEM7Z0JBQVNDOztpQkFmakM7U0FDT3o2QixjQUFHYixpQkFBTXJqQjtLQUNiLFNBQUEsYUFFTXN2QyxLQUhGcHJCLElBQ21CLFdBRGhCYjtpQkFBTXJqQjs7R0Flc0Q7WUFFeEU2SSxTQUFTMlAsR0FBRTgyQjthQUNMc1A7S0FBaUI7S0FBQTtvQkFFckI7VUFDTzE2QixnQkFBR2IsbUJBQU1yakI7TUFDYixTQUFBLGFBRElra0IsR0FKRW9yQixNQU1KLFdBRktqc0IsTUFITnU3QixlQUdZNStDO29CQUFBQTs7SUFHUTtJQUNMLFVBN0VyQm0rQyxVQXFFUzNsQyxHQUFFODJCO0lBUUUsT0FQUHNQLGdDQURHcG1DO0dBUTRCO1lBVXJDcW1DLFFBQVFybUMsR0FBRTgyQixLQUFJanNCO0lBQ2hCLElBQUk5cEIsSUF4RkY0a0QsVUF1RlEzbEMsR0FBRTgyQixNQUVSaDJDLHFCQUZNa2YsTUFDTmpmLE9BQUFBLElBTkcwWixPQU9IM1o7O1FBUEcyWjtVQUFNaVIsSUFBTmpSLFNBQVNqVCxPQUFUaVQ7TUFDQSxTQUFBLGFBRE1pUixHQUtEb3JCLFVBTExyOEIsT0FBU2pUO01BQVRpVCxVQUtLcThCO01BTExyOEIsVUFLU29ROzs7OztLQUdiO01BQ0QsaUJBSlE3SyxNQUNOamYsT0FBQUEsU0FEUSsxQyxLQUFJanNCLE1BRVovcEI7TUFGTWtmLE9BQUFBO2dCQUFBQSx1QkFBQUE7Y0FNbUMsT0FwYzNDb1EsT0F1V0F1MUIsV0F1RlEzbEM7Ozs7Ozs7R0FPUDtZQUVEMVEsSUFBSTBRLEdBQUU4MkI7SUFDUixJQUtzQixNQXRHcEI2TyxVQWdHSTNsQyxHQUFFODJCLCtCQUFGOTJCO0lBQ2tCO2lCQUVwQjs7TUFDTzBMO01BQUdsa0I7a0JBQ1YsYUFET2trQixHQUpIb3JCOztpQkFJTXR2Qzs7R0FFd0I7WUFFcEMwaUIsUUFBUW5KLEtBQUloZ0I7O0tBQ0wsSUFBUTNDLGNBQUZzdEI7S0FBUSxPQXBHckJqRixJQW1HUTFGLEtBQ0sySyxHQUFFdHRCO0lBQWtCO0lBQW5DLE9BQUEsZ0NBRGMyQztHQUN1QjtZQUVuQ3VsRCxZQUFZdmxDLEtBQUloZ0I7O0tBQ1QsSUFBUTNDLGNBQUZzdEI7S0FBUSxPQXJCckIyNkIsUUFvQll0bEMsS0FDQzJLLEdBQUV0dEI7SUFBc0I7SUFBdkMsT0FBQSxnQ0FEa0IyQztHQUN1QjtZQUV2Q21TLE9BQU9uUztJQUNDLElBQU5nZ0IsTUE1aEJGaEc7SUF3aEJBdXJDLFlBSUV2bEMsS0FES2hnQjtJQUVULE9BRElnZ0I7R0FFRDtZQUVEMmxDLFFBQVV2bEMsS0FBc0JuQjtJQUNsQyxHQURZbUIsU0FBU0UsTUFBVEYsUUFBQTZpQyxTQUFTM2lDLGNBQVQyaUMsU0FsakJWTjtJQW1qQk0sSUFBSnprRCxJQXRpQkU2a0Qsa0JBcWlCNEI5akM7SUFFbEMsR0FGWWdrQzs7eUJBN2lCVkg7OztXQUFBQTt5REFBQUEsUUFBQUE7TUEraUJFekMsT0FDYTs7U0FEYkEsWUFGOEJwaEMsZUFBQUE7SUFNekI7Z0JBTnlCQSxlQUFBQSxPQUM5Qi9nQjtLQUtBeW1CLFVBTjhCMUYsTUFRekIsZUFQTC9nQixPQUNBbWlEO1dBSUExN0I7V0FOOEIxRjs7SUF0ZmhDb2tDO29CLE9BbVlBdUIsVUF5SEVqZ0M7SUFNSixPQU5JQTtHQU9GOzs7O09BN2lCQTNLO09BS0EwUjtPQU1BMEQ7T0EyQkExYztPQTRZQWdUO09BOEJBeFc7T0FvQkFDO09BY0FHO09BMkJBZjtPQXZFQWtZO09BOERBNitCO09BbmJBOTlDO09Bc0NBdzhDO09BYUE3N0M7T0E1RkFrRTtPQXhEQXUyQztPQUNBQztPQStpQkE4QztPQTVYQXhCO09BZ0JBbjdDO09BZUEwN0M7T0FFQUM7T0FnVkF4N0I7T0FHQW84QjtPQUdBcHpDOzs7T0FsSEEvRjtPQUVBczVDO09BREFEOzs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUM3ZEF6ckMsT0FBT2phO0lBQ1Q7Z0JBRFNBO2lCQUFBQTtnQkFFUDtJQUNGLE9BQUEseUJBSFNBO0dBR0Q7WUFLTnNNLE9BQU9oTyxHQUFJLE9BQUpBLHFCQUE0QztZQUVuRDRiLHdCQUF3QnpRLEdBQUV6QixHQUFFbVM7SUFDOUI7Z0JBRDRCblM7aUJBQUFBLElBRjFCc0UsT0FFd0I3Qzs7aUJBRXhCLHNCQUY0QjBRO0dBRVo7WUFJaEIxYyxJQUFJZ00sR0FBRXpCLEdBQUUxSjtJQU5SNGIsd0JBTUl6USxHQUFFekI7U0FBRTFKLEdBR0EsT0FBQSw0QkFISm1MLEdBQUV6QjtRQUlENkgsTUFKR3ZSO0lBSUUsT0FBQSwwQkFKTm1MLEdBQUV6QixHQUlENkg7R0FBZTtZQUdwQnRTLElBQUlrTSxHQUFFekI7SUFiTmtTLHdCQWFJelEsR0FBRXpCO0lBRVIsT0FBQSwwQkFGTXlCLEdBQUV6QjtHQUVEO1lBR0w2OUMsU0FBU3A4QyxHQUFFekI7SUFsQlhrUyx3QkFrQlN6USxHQUFFekI7SUFFYixPQUFBLCtCQUZXeUIsR0FBRXpCO0dBRUQ7WUFHVjZXLE1BQU1wVixHQUFFekI7SUF2QlJrUyx3QkF1Qk16USxHQUFFekI7SUFFVixPQUFBLDRCQUZReUIsR0FBRXpCO0dBRUQ7WUFLUG9MLEtBQUt4SixJQUFHbEIsSUFBR21CLElBQUc2USxJQUFHMWE7SUFDbkI7V0FEbUJBOztZQUFUMEk7V0FoQ1I0RCxPQWdDSzFDLE1BQVk1SixVQUFUMEksV0FBTWdTLE9BaENkcE8sT0FnQ1d6QyxNQUFNN0osVUFBSDBhOztrQkFBRzFhO2tCQUlDLDJCQUpiNEosSUFBR2xCLElBQUdtQixJQUFHNlEsSUFBRzFhO0tBSUM7O0lBRGYsT0FBQTtHQUNpQztZQUVwQ21ULEtBQUsyeUMsSUFBR3RrRCxLQUFJQyxLQUFJbkQ7SUFDbEIsUUFEVWtELFlBQUlDLFFBdENaNkssT0FzQ0t3NUMsTUFBT3JrRCxZQUFKRDtnQkFBQUEsTUFBSUM7ZUFBSkQ7VUFHTHZCLElBSEt1Qjs7T0E5QlIvRCxJQThCS3FvRCxJQUdGN2xELEdBSGEzQjtPQUtkLFVBRkMyQjtrQkFBQUE7V0FBQUE7Ozs7O0lBREEsTUFBQTtHQUtGOztJQTJCZSxJQUFkOGxELGNBaEZGOXJDO2FBNEZFK3JDLFVBQVU3cUMsR0FBRStEO0tBQUksZ0JBQUpBLGdCQUFGL0Q7SUFBaUQ7UUFFM0RrK0I7YUFHQTRNLFNBQU9SO0tBQ1Q7TUFBSVMsWUFES1QsS0FBQUE7TUFFTFUsd0JBREFELHdCQUFBQTtLQUVKO2FBQ1UsZUFGTkMsTUFuQkZKO2FBc0JTLGVBSFBJO2FBTEY5TTs7O0lBWUQ7YUFFQzF0QixNQUFNeFE7S0FDUixVQURRQSx5QkFDUjs7VUFBQWxiOztPQUNFLGlCQUZNa2IsTUFDUmxiLE9BQUFBLEtBN0JFOGxEO09BK0JBLGlCQUhNNXFDLE1BQ1JsYixPQUFBQTtPQUVFLFVBRkZBO2tCQUFBQTtXQUFBQTs7O0tBRFFrYixPQWROaytCO0tBY01sK0I7O0lBTU87YUFHYi9TLEtBQUtqTCxHQUFFZ2UsR0FBRTlOO0tBQ1gsVUFEUzhOLE1BQ1dsYjtLQU1ILGFBTktQLEdBQUVnTztVQUFKeE4sTUFBQUQsR0FBSThDLE9BQUEySztNQUN0QjtVQS9HRnBCLE9BOEdzQjVNLE1BQUZRLEtBQ0ksT0FEQTZDO09BRWhCLFlBakdSeEYsSUErRnNCbUMsR0FBRlE7O1FBR2M7U0FBekI1QztTQUhlMkYsU0FHVSxXQUozQjlGLEdBSUVHLEdBSGV5RjtTQUFKK1IsTUFBQTVVO1NBQUFBLE1BQUE0VTtTQUFJL1IsT0FBQUU7O1lBQUp1WixNQUFBdGMsYUFBQUEsTUFBQXNjOzs7S0FNcEIsT0FBQSx1Q0FQV25QO0lBT2tDO2FBRzNDNUYsS0FBS3RLLEdBQUVnZTtLQUNULFVBRFNBLE1BQ1dsYjtLQU1ULGFBTldQO1VBQUZRLE1BQUFEO01BQ2xCO1VBekhGcU0sT0F3SHNCNU0sTUFBRlEsS0FDSTtPQUNoQixZQTNHUjNDLElBeUdzQm1DLEdBQUZROztZQUdYNUM7UUFBSyxXQUpQSCxHQUlFRztZQUhXd1gsTUFBQTVVLGFBQUFBLE1BQUE0VTs7O1lBQUEwSCxNQUFBdGMsYUFBQUEsTUFBQXNjOzs7S0FNVCxPQUFBO0lBQXVCO2FBYTVCNHBDLGFBQWFubUQsR0FBRVAsR0FBRXFEO0tBQ3ZCLElBRG1CN0MsTUFBQUQsR0FBSWdELFNBQUFGO0tBQ3ZCO1NBNUlBdUosT0EySXFCNU0sTUFBRlEsS0FDRyxPQURDK0M7TUFFVTtPQUFBLE1BcEhqQzRiLE1Ba0hxQm5mLEdBQUZRO09BQUl3TixTQUFBeks7T0FBSjZSLE1BQUE1VTtPQUFBQSxNQUFBNFU7T0FBSTdSLFNBQUF5Szs7SUFFbUM7YUFHeERpZ0IsTUFBTXhTO0tBQ1IsSUFBQSxlQURRQTtLQUNTLHVCLE9BTlhpckM7S0FNTixPQUFBO0lBQTJDO2FBMkR6Q0MsUUFBUWxyQyxHQUFFbXJDLFFBQU8vb0MsR0FBRTJCLEdBQUVuSztLQUN2QjtNQUFJd3hDLDRCQURNcHJDLE1BQWFwRyxXQUFBQTtNQUVuQnl4QywwQkFGTXJyQyxNQUFhcEcsV0FBQUE7TUFHbkIwd0MsS0EvTUpuNUMsT0E2TUlpNkM7TUFHUzlwQztLQUNYO1NBRkVncEMsTUFDU2hwQztNQW1CQyxLQTFNZG9DLE1Bb0xJMG5DLFVBR1M5cEM7T0FzQlQsV0ExQlE2cEMsUUFDUkMsVUFHUzlwQyxLQUpNYztPQTJCZixpQkF6QkFpcEMsUUFFUy9wQyxTQUFBQSxPQUpReUM7T0EyQmpCOztNQUo4QixJQW5CckI1QyxNQUFBRyxhQUFBQSxNQUFBSDs7S0FHUDtNQURFbXFDO1FBQ0Y7O2dCQUpGaEI7O1FBR0lnQixTQUhKaEIsSUFNb0I7S0FDSixJQUFaaUIsY0E5TlJ6c0MsT0EwTlF3c0MsUUFLQUUsWUFBWSxlQUxaRjtLQWxMUnJ6QyxLQTZLSW16QyxhQVNJRyxnQkFQSmpCO0tBVUEsNkJBWEFlLFdBU0lHLGNBUkpsQjtLQVdBLFdBZFFhLFFBVUpJLGFBUEpqQixJQUhlbG9DO0tBZWYsaUJBSklvcEMsV0FSSmxCLFFBQUFBLE1BSGlCdm1DO0tBZ0JqQixpQkFoQk0vRCxNQUFhcEcsV0FBQUEsU0FVZjJ4QztLQU9KLGlCQWpCTXZyQyxNQUFhcEcsV0FBQUEsU0FXZjR4QztlQVJKbEIsTUFITXRxQywwQkFBQUEsT0FNRnNyQzs7TUFORXRyQyxPQUFBQTtVQW9CSmlCOztPQXhFTztjQW9ESGpCO1FBcEROMnBDLDBCQW9ETTNwQztRQW5EVixNQW1EVUE7UUFuRE55ckMsMkJBbURNenJDO1FBdkRBMVosTUFySlY2SyxPQXdKSXc0QztRQUdBK0IsY0FOTXBsRDtRQU9OcWxELE9BakJFVixnQkFhRnRCO1VBSUFnQyxRQURBRDtRQWFNLElBVk9FLE1BOUpqQno2QyxPQXdKSXc0QyxpQkFNVzVrRCxTQUFFOFQsSUFBQSt5QztRQUNiO1lBSkFGLFdBR2E3eUM7U0FFUixHQXZJVDZLLE1BK0hJaW1DLFFBTVc1a0Q7Y0FBQTRVLE1BQUE1VSxhQUFBQSxNQUFBNFU7aUJBcklmK0osTUErSElpbUMsUUFNYTl3QztVQTlIakJaLEtBd0hJMHhDLFFBTWE5d0MsR0FOYjh3QyxRQU1XNWtEO1VBS1EsMkJBVm5CMG1ELFNBS2E1eUMsT0FBQUE7VUFLVCxpQkFWSjR5QyxTQUtXMW1ELFNBQUFBO1VBS1AsSUFMU3FjLE1BQUF2SSxXQUFGd0ksTUFBQXRjLGFBQUFBLE1BQUFzYyxLQUFFeEksSUFBQXVJOzs7VUFPRixJQVBFMGIsTUFBQWprQixXQUFBQSxJQUFBaWtCOztpQkFIYjR1QjttQkFpRE0xckM7U0FsQ04saUJBa0NNQSxzQkFwSVI0cUM7bUJBb0lRNXFDO1NBakNOLGlCQWlDTUE7OztTQS9CVSxJQUFaNnJDLFlBckxSL3NDLE9BbUtJNHNDO1NBM0hKenpDLEtBd0hJMHhDLFdBcUJJa0MsY0FsQkpIO21CQWlETTFyQztTQTdCTixpQkE2Qk1BLHNCQS9CRjZyQztTQUdrQjtVQUFBLE1BQUEsNEJBdkJ0QkosWUFFQUM7Z0JBaURNMXJDO1NBNUJOLGlCQTRCTUE7OztlQUFBQSxPQXZEQTFaO3FCQU1Ob2xELFlBaURNMXJDO2dCQUFBQSxPQUFBQTs7T0FBQUEsZ0JBQUFBLGNBQUFBO09Bb0J3QixVQUE1QmlCO2dCQUFBQTtXQUFBQTs7O2lCQXBCSWpCLDRCQUFBQTs7S0F4REk7TUFBSjhyQyxTQXdEQTlyQztNQW5CTnlGO1FBckNVO2dDQUFKcW1DO1FBQUFBLFNBcUNOcm1DO01BRVM7T0FBUHNtQyxPQWxHSmpCLFNBZ0dFcmxDO2FBbUJNekY7T0ExRVVsYjtPQU1SO2tCQU5VK1QsR0EwRFBtekM7Y0FBTUMsS0ExRERubkQ7VUFDbEI7Y0FuSUZxTSxPQTRMZTY2QyxPQUFNQyxJQXpERztjQTFHeEJ2b0MsTUFtS2Vzb0MsSUFBTUM7WUF2REwsSUF1REVDLHNCQWdCUmxzQyxNQTFFWW5ILE9BQUFBO2dCQTBERHN6QyxPQUFBRjtxQkFDYmQsT0FBT3ZxQyxJQUFHd3JDLFdBQU8sT0E3SnpCbjBDLEtBNEplK3pDLElBQU1HLE1BQ052ckMsSUFBR3dyQyxPQUF5QjtZQUMvQixJQUFKcm9DLHFCQUZVbW9DLElBQUdELFFBQUFBO1lBZ0JuQmYsUUFqQklhLE1BRUVaLFdBQ0FwbkMsR0ExR044bUMsVUF1R0lrQixNQUdFaG9DO2dCQTVEWWhmLE1BMERDa25ELFlBQUFBLEtBMUREbG5EOzs7Z0JBQUE0VSxNQTBEQ3N5QyxZQUFBQSxLQTFERHR5Qzs7O01BTVI7TUFvRUZxRyxPQWpCSityQztNQWlCSS9yQyxPQWpCSityQztNQWlCSS9yQyxPQWpCSityQztNQWlCSS9yQyxPQWpCSityQztNQWlCSS9yQyxnQkFBQUEsTUFqQkorckM7OztLQWlCSS9yQztLQUFBQTs7SUE4Qko7YUFHSndLLElBQUl4SyxHQUFFb0M7S0FDQSxJQUFKMkIsSUFBSSxpQkFEQTNCO0tBRWlCLE9BbkN2QjhvQyxRQWlDSWxyQyxHQXJPTjFkLFNBcU9ROGYsSUFDSjJCLEdBMUpGOG1DLFVBeUpJN3FDLEdBQ0YrRDtJQUNvQzthQUd0Q3NvQyxRQUFRcnNDLEdBQUVvQyxHQUFFa3FDO0tBQ2Q7TUFBSXZvQyxJQUFJLGlCQURJM0I7TUFFUnhJLFFBaEtGaXhDLFVBOEpRN3FDLEdBQ04rRDtNQUVBNGxDLDBCQUhNM3BDLE1BRU5wRyxXQUFBQTtNQUVBeXhDLDBCQUpNcnJDLE1BRU5wRyxXQUFBQTtNQUdBMHdDLEtBdlBKbjVDLE9BcVBJdzRDO01BR1M3a0Q7S0FDWDtTQUZFd2xELE1BQ1N4bEQsR0FKRCxPQUFBLFdBRkV3bkQsWUFDVnZvQyxHQUNBbks7U0FEQW1LLHVCQUdBc25DLFFBRVN2bUQsT0FBQUE7T0FHSCxZQXZPVjRsRCxTQWlPSWYsUUFHUzdrRDs7WUFJRjNDO1FBQU8sR0FBQSxpQkFBUEEsR0FWQ2lnQjtTQVdVLGNBOU90QmhnQixJQXNPSXVuRCxRQUdTN2tEO3lCQU1JMEosa0JBQUssT0FBTEE7U0FDRyxJQVBQekosTUFBQUQsV0FBQUEsSUFBQUM7Ozs7T0FTRixJQVRFNFUsTUFBQTdVLFdBQUFBLElBQUE2VTs7O09BVUYsSUFWRTBILE1BQUF2YyxXQUFBQSxJQUFBdWM7O0lBWVA7YUFHSmxNLE1BQU02SyxHQUFFb0M7S0FDVixPQXRCRWlxQztjQXFCTXJzQztjQUFFb0M7dUJBQ08yQixHQUFFbkssT0E1RGpCc3hDLFFBMkRNbHJDLEdBL1BSMWQsU0ErUFU4ZixJQUNPMkIsR0FBRW5LLFFBQW5CLE9BRFV3SSxFQUNtRDtJQUFDO2FBRzVEcE8sS0FBS2dNLEdBQUVvQztLQUFJLE9BekJYaXFDO2NBeUJLcnNDO2NBQUVvQzt1QkFBcUIyQixHQUFHbks7ZUFBVSxNQUFBO2NBQWU7SUFBQzthQUV6RDNGLFNBQVMrTCxHQUFFb0M7S0FDYjtNQUFJMkIsSUFBSSxpQkFESzNCO01BRVR4SSxRQTNMRml4QyxVQXlMUzdxQyxHQUNQK0Q7TUFFQTRsQywwQkFITzNwQyxNQUVQcEcsV0FBQUE7TUFFQXl4QywwQkFKT3JyQyxNQUVQcEcsV0FBQUE7TUFHQTB3QyxLQWxSSm41QyxPQWdSSXc0QztNQUdTN2tEO0tBQ1g7U0FGRXdsRCxNQUNTeGxELEdBQ0s7U0FOZGlmLHVCQUdBc25DLFFBRVN2bUQsT0FBQUE7T0FHSCxZQWxRVjRsRCxTQTRQSWYsUUFHUzdrRDs7WUFJRjNDO1FBQU8sR0FBQSxpQkFBUEEsR0FWRWlnQjtTQVdTLElBQ1Y1VCxNQTFRWnBNLElBaVFJdW5ELFFBR1M3a0Q7WUFNRDBKLEtBQWUsT0FBZkE7U0FDUSxJQVBQekosTUFBQUQsV0FBQUEsSUFBQUM7Ozs7T0FTRixJQVRFNFUsTUFBQTdVLFdBQUFBLElBQUE2VTs7O09BVUYsSUFWRTBILE1BQUF2YyxXQUFBQSxJQUFBdWM7O0lBWVA7YUFHSmtyQyxZQUFZdnNDLEdBQUVvQyxHQUFFb3FDLFNBQVFGO0tBQzFCO01BQUl2b0MsSUFBSSxpQkFEUTNCO01BRVp4SSxRQWhORml4QyxVQThNWTdxQyxHQUNWK0Q7TUFFQTRsQywwQkFIVTNwQyxNQUVWcEcsV0FBQUE7TUFFQXl4QywwQkFKVXJyQyxNQUVWcEcsV0FBQUE7TUFHQTB3QyxLQXZTSm41QyxPQXFTSXc0QztNQUdTN2tEO0tBQ1g7U0FGRXdsRCxNQUNTeGxELFVBTmF3bkQ7U0FDdEJ2b0MsdUJBR0FzbkMsUUFFU3ZtRCxPQUFBQTtPQUdILFlBdlJWNGxELFNBaVJJZixRQUdTN2tEOztZQUlGM0M7UUFBTyxHQUFBLGlCQUFQQSxHQVZLaWdCLElBVWlCLE9BQUEsV0FWZm9xQyxTQUdkN0MsUUFHUzdrRDs7T0FLRixJQUxFQyxNQUFBRCxXQUFBQSxJQUFBQzs7O09BTUYsSUFORTRVLE1BQUE3VSxXQUFBQSxJQUFBNlU7O0lBUVA7YUFHSjRSLE9BQU92TCxHQUFFb0M7S0FBSTtLQUFBLE9BakJibXFDLFlBaUJPdnNDLEdBQUVvQyxZQUF5QnVpQixHQUFFNy9CLEdBQUssT0EzUzNDeEMsSUEyU29DcWlDLEdBQUU3L0IsTUFBaUI7SUFBSTthQUd6RHVPLElBQUkyTSxHQUFFb0M7S0FBSTtLQUFBLE9BcEJWbXFDLFlBb0JJdnNDLEdBQUVvQyxZQUF5QnVpQixHQUFHNy9CLEdBQU0sU0FBSTtJQUFPO2FBR25Ec1AsU0FBUzRMLEdBQUVvQztLQUNiO01BQUkyQixJQUFJLGlCQURLM0I7TUFFVHhJLFFBdk9GaXhDLFVBcU9TN3FDLEdBQ1ArRDtNQUVBNGxDLDBCQUhPM3BDLE1BRVBwRyxXQUFBQTtNQUVBeXhDLDBCQUpPcnJDLE1BRVBwRyxXQUFBQTtNQUdBMHdDLEtBOVRKbjVDLE9BNFRJdzRDO01BR1M3a0Q7TUFBRThDO0tBQ2I7U0FGRTBpRCxNQUNTeGxELEdBQ0ssT0FESDhDO1NBTFhtYyx1QkFHQXNuQyxRQUVTdm1ELE9BQUFBO09BR0gsWUE5U1Y0bEQsU0F3U0lmLFFBR1M3a0Q7O1lBSUYzQztRQUFPLEdBQUEsaUJBQVBBLEdBVkVpZ0I7U0FXUyxjQXJUdEJoZ0IsSUE2U0l1bkQsUUFHUzdrRDs7VUFNc0I7V0FBbEIwSjtXQU5GMUcsYUFNRTBHLEtBTkY1RztXQUFGN0MsTUFBQUQ7V0FBQUEsSUFBQUM7V0FBRTZDLE9BQUFFOzs7YUFBRjZSLE1BQUE3VSxXQUFBQSxJQUFBNlU7Ozs7V0FBQTBILE1BQUF2YyxXQUFBQSxJQUFBdWM7OztXQUFBQyxNQUFBeGMsV0FBQUEsSUFBQXdjOztJQVlKO2FBR1AybkMsTUFBTWpwQztLQUNSO01BQUkxWixNQURJMFo7TUFFSnlzQyxPQUFPLDZCQWhWWHQ3QyxRQThVUTZPO0tBR1IsdURBREl5c0M7OzRCO0tBRVM7TUFBVEMsU0FBUyx1Q0FGVEQ7TUFFUyxNQUhUbm1EO1lBQUFBO01BSTJDLHVCQUgzQ21tRDtNQUc2Qix1QkFIN0JBO01BR21CLHVCQUhuQkE7S0FHSixXQUpJbm1ELEtBL0xGa3NCLE1BOExNeFMsSUFJSjBzQztJQUN3RDtJQS9RRTtZQXFCNUQ1QjtZQVdBdDZCO1lBbUtBcmI7WUExQkFxVjtZQXNFQWU7WUF4Q0F2WDtZQUVBQztZQTRDQUc7WUFIQWY7WUEvTEEvRztZQVZBVztZQW1DQXVsQjtZQThMQXkyQjs7OztVQXRWRm5xQyxRQVFBM04sUUFRQTdPLEtBT0FGLEtBS0Fzb0QsVUFLQWhuQyxPQWFBMUwsTUFOQUM7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUN2Q0F3RyxHQUFHdGIsR0FBSSxPQUFKQSxFQUFLO0dBb0VDO0lBMG5CTGlVO0lBNXFCRnUxQztJQWtETzs7WUErSFRDLFdBQVc3bkMsT0FBTThuQztJQUFOOW5DLFlBQUFBLFlBQU04bkM7dUNBQUFBLE9BQU45bkM7R0FFaUI7T0E0QjVCK25DO1lBR0FDLGlCQUFpQmhvQyxPQUFNL2hCO0lBQUksa0JBQVYraEIsV0FBTS9oQiw0QkFBQUE7R0FBNkM7WUFDcEVncUQsa0JBQWtCam9DLE9BQVEsT0FBQSxXQUFSQSxjQUErQjtZQUtqRGtvQyxlQUFlbG9DLE9BQU1MLE1BQUt3b0M7SUFBWG5vQyxXQUFBQSxXQUFNTDtJQU5yQnFvQyxpQkFNZWhvQyxPQUFXbW9DO0lBQVhub0M7O0dBR1k7WUFHM0Jvb0MsY0FBY3BvQyxPQUFNL2hCO0lBQ25CLFdBQUEsNkJBRG1CQTtJQUNuQixjQVBEaXFELGVBTWNsb0MsNkJBQU0vaEIsSUFBQUE7R0FDa0M7WUFHdERvcUQsZUFBZXJvQyxjQUE4QndUO1FBQVBxRSxrQkFBUjNILG1CQUFSNEg7SUFKdEJzd0IsY0FJZXBvQyxPQUFPOFg7SUFmdEJtd0Isa0JBZWVqb0M7SUFBQUE7SUFNQztLQUZkZ3NCLFVBSmFoc0IsV0FBOEJ3VCxhQUFmdEQ7S0FNNUJvNEIsY0FBYywyQkFORHRvQyxVQUliZ3NCO0lBSmFoc0IsWUFNYnNvQztJQU5hdG9DLFdBQUFBLFdBQUFBO1FBYlFuaUIsSUFhUm1pQjtJQWJZLFdBYVpBLFdBYlFuaUI7SUFzQnpCLE9BYkV1cUQsY0FJZXBvQyxPQUF1QjZYOztZQWN0QzB3QixXQUFXdm9DLE9BQU13VDtJQUFRLE9BZHpCNjBCLGVBY1dyb0MsWUFBTXdUO0dBQThDO1lBRy9EZzFCLGdCQUFnQnhvQztRQUFzQjZYLGtCQS9CZnJFLGtCQStCQXNFO0lBckJ2QnN3QixjQXFCZ0Jwb0MsT0FBTzhYO0lBQVA5WCxXQUFBQSxXQS9CT3dUO0lBQUksV0ErQlh4VCxXQS9CT3dUO0lBa0N6QixPQXhCRTQwQixjQXFCZ0Jwb0MsT0FBc0I2WDs7WUFvQ3RDNHdCLGdCQUFnQnpvQyxPQUFNMG9DO0k7OztRQTRCVixjQUFBLDRCQTVCSTFvQztzQkE2Qk47UUFFUjtTQURjMm9DO1NBQ05DO29CQUFRL3FELEdBRVpnckQ7WSxLQUFBQSxJQURNLFdBRE1ockQ7Z0JBRVBpQyxJQUFMK29ELE9BQUF6cUQsSUFBQXlxRDtZQUFtQixPQUFBLHNCQUZQaHJELEdBRVpPOzBCQUZZUCxHQUVaZ3JEOzBCQUFBenFELEdBRkl3cUQsUUFBUS9xRCxHQUVQaUM7O1FBSEs2b0QsVUFDTkMsUUEvQk01b0MsV0FBQUEsY0E4QkEyb0M7OztRQVhoQiw0QkFuQmdCM29DLFdBbUJoQjs7UUFNQSw0QkF6QmdCQSxXQXlCaEI7O1FBaUNZLGNBQUEsNEJBMURJQTtzQkEyRE4sT0EvSFZpb0Msa0JBb0VnQmpvQztZQTREUGlvQjtRQUFhLE9Bbkd0QnNnQixXQXVDZ0J2b0MsT0E0RFBpb0I7O21CQTVET2pvQixlQUFBQSxXQUFBQTs7UUFkWixjQUFBLDRCQWNZQTtzQkFiUjtrQ0FDREwsbUJBQU12VDtRQVlHNFQsWUFBQUEsWUFaSDVUO1FBWUc0VCxXQUFBQSxXQVpUTDs7O1FBK0dNLGNBQUEsNEJBbkdHSztzQkFvR0w7UUFFSyxJQURSOG9DLHVCQUNEQyxTQUFTLFdBdEdBL29DLFdBcUdSOG9DO1FBRUwsT0E1S0hkLGlCQXFFZ0Job0MsT0FzR1Qrb0M7Ozs7V0FwR0M5cUQsY0FDUixPQWxFQWlxRCxlQStEZ0Jsb0MsT0FBTTBvQyxRQUVkenFEOztPQWtFUjtRQURpQitxRDtRQUFOQztRQUNDQyxNQURLRjtRQUNibHhCLFNBRGFreEI7UUFFTCxVQUFBLDRCQXJFSWhwQztxQkFzRU47OztRQUNTNHdCO1FBQVZ1WTtPQUNQLE9BRE9BOztVQWtCTSxPQTdIZlgsZ0JBb0NnQnhvQyxPQW1FTGlwQzs7VUFxQkksT0E3SWZaLGVBcURnQnJvQyxPQW1FQ2dwQyxRQUlFcFk7O1VBZUgsT0EzSWhCeVgsZUFxRGdCcm9DLE9BbUVDZ3BDLFFBSUVwWTs7aUJBdkVINXdCLFlBQU0wb0MsK0JBb0VsQjV3QjtvQkF6SEp1d0IsZUFxRGdCcm9DLE9BbUVDZ3BDLFFBSUVwWTtvQkEzR25CNFgsZ0JBb0NnQnhvQyxPQW1FTGlwQzs7aUJBbkVLanBDO29CQXBDaEJ3b0MsZ0JBb0NnQnhvQyxPQW1FTGlwQztvQkFuRUtqcEM7O3VCQUFNMG9DLCtCQW9FbEI1d0I7c0JBekhKdXdCLGVBcURnQnJvQyxPQW1FQ2dwQyxRQUlFcFk7d0JBdkVINXdCOzt3QkF1RUc0d0I7O3dCQUhQc1k7O3dCQXBFSWxwQzt3QkFyRGhCcW9DLGVBcURnQnJvQyxPQW1FQ2dwQyxRQUlFcFk7d0JBM0duQjRYLGdCQW9DZ0J4b0MsT0FtRUxpcEM7a0JBb0JJLE9BM0hmVCxnQkFvQ2dCeG9DLE9BbUVMaXBDOzs7T0E1QkM7UUFGRUc7UUFBSHZyRDtRQUNQd3JELGtCQXRDWXJwQyxXQUFBQTtRQXVDSixVQUFBLDRCQXZDSUE7cUJBd0NOO09BRVIsSUFEY3NwQyx3QkFDZCxVQURjQTs7WUFJVkMsOEJBSlVEO1FBS0s7O2NBQ0hyM0MsbUJBQVJ1M0M7YUFUTkgsa0JBU01HLG9CQUFRdjNDO3FCQUFSdTNDOzs7cUJBRkpEO2FBSEFFOzs7OztZQUFBQSxNQUpGSjtXQWFFbjVCLFNBVEF1NUIsTUFKRko7T0FjRixZQURJbjVCO2lCQXZGTnM0QixnQkFvQ2dCeG9DLGtCQW1EVmtRLFNBZEtyeUI7aUJBMUZYd3FEO2tCQXFEZ0Jyb0Msa0JBMENWeXBDLE1BTFFMLG1CQXJDRXBwQzs7O1FBS0R0bUI7UUFBTGd3RDtRQUNOQyxvQkFOWTNwQyxXQUFBQTtVQUFBQSxXQU1aMnBDO1FBL0JBLFlBQUEsNEJBeUJZM3BDOztpQ0F2QkN3VCxvQkFBVjBZO1lBdUJTbHNCLFdBdkJDd1QsY0FBVjBZO1VBaEJQcWMsV0F1Q2dCdm9DLE9BdkJDd1Q7OztTQTdDakJ5MEIsa0JBb0VnQmpvQzs7T0FXaEI7UUFESTRwQyxVQVZZNXBDLFdBS04wcEM7UUFNTkcsbUJBTldud0QsU0FMQ3NtQixXQUFNMG9DLFNBS1BodkQ7T0FXZixPQUFBLGdDQUxJbXdELFlBREFELFVBVlk1cEM7O1dBcUJOOHBDO09BQ1YsT0FBQSw0QkFEVUEsTUFyQk05cEM7O09BOEZGO1FBREQrcEM7UUFDUkMsV0FBUyxXQTlGRWhxQyxXQTZGSCtwQztPQWxLYi9CLGlCQXFFZ0Job0MsT0E4RlhncUM7MENBRFFELFlBN0ZHL3BDOzs7WUE4R1ppcUMsYUFBYWpxQztJQUNuQjtLQUFNLFlBQUEsNEJBRGFBO2lCQUVUO0tBR0w7O01BRklMO01BQWF2VDtNQUFQMDdDO01BQ1RvQyxnQkFKYWxxQyxZQUFBQTtNQUtkLFlBRklMO01BRUosZ0JBTGNLLFlBSWJrcUM7Z0JBQ0Q7S0FDRCw0QkFOZWxxQztLQU9ELElBQVYwb0MsY0FKQy9vQyxPQUFBQSxPQXpMUG9vQztLQXdFQVUsZ0JBOEdpQnpvQyxPQU9YMG9DLFFBSk9aO0tBSEk5bkMsWUFHRzVULFNBSEg0VDs7R0FXZDtZQUlIbXFDLGdCQUFnQm5xQyxPQUFNMEQ7SUFuT3RCbWtDLFdBbU9nQjduQyxPQUFNMEQ7SUFBTSxPQWZ4QnVtQyxhQWVZanFDO0dBQW9EO1lBSXBFb3FDLGtCQUFrQnBxQyxPQUFNTCxNQUFLMWhCO0lBQy9CLE9BTEVrc0QsZ0JBSWtCbnFDLFdBQU1MLFVBQUsxaEIsSUFBTDBoQjtHQUNrRDtZQVcxRTBxQyxzQkFBc0JDO0lBQ3hCLDRCQUR3QkE7SUFFUCxJQUFiQyxpQkF0YUEzQztJQXVhSixPQUFBLG9DQURJMkMsYUFGb0JEO0dBR3dCO1lBVzlDRSxTQUFTeHFDLE9BQU10bUI7SUFDWCxZQUFBLDRCQURLc21CO2dCQUVEO0lBRVI7O0tBRG1CdXFDO0tBQVpFO0tBQ0g5cUMsT0FEZTRxQztPQUFaRSxhQUhFenFDLGtCQWRUcXFDLHNCQWNTcnFDO2VBR1V1cUM7Ozs7ZUFISjd3RDtTQUdJNndELGdCQUhWdnFDLFlBSUxMO1NBY0UsNEJBbEJHSzs7UUFrQkg7OztXQWxCU3RtQjtTQUdJNndELGdCQUhWdnFDLFlBSUxMO1NBU0UsNEJBYkdLOztRQWFIOztJQVNGO0dBQUU7WUFLTjBxQyxVQUFVMXFDLE9BQU14Z0IsR0FBRXNvRDtJQTVSbEJELFdBNFJVN25DLE9BQVE4bkM7T0FBRnRvRCxHQTNCaEJnckQsU0EyQlV4cUM7SUFHRCxJQUFQMnFDLFdBSFEzcUMsV0FBUThuQztJQUlwQixPQUFBLDRCQURJNkMsTUFIUTNxQztHQUl1QjtZQU1qQzRxQyxnQkFBZ0I1cUMsT0FBTWdzQixRQUFPNmU7SUFBYjdxQyxZQUFBQTtPQUFBQSxZQUFBQTtLQUlMLElBRFBMLFNBSFlLLGVBSVoycUMsV0FEQWhyQyxVQUhrQnFzQixRQUFPNmU7S0FLN0IsT0FmQUgsVUFVZ0IxcUMsVUFJWjJxQzs7ZUFKWTNxQyxjQUFBQTs7UUEzREsvaEIsSUEyREwraEI7SUExRGxCLE9BTEVvcUMsa0JBK0RnQnBxQyw2QkEzREsvaEIsSUFBQUE7R0FrRW9CO1lBT3pDNnNELGFBQWE5cUM7SUFDZixlQURlQTs7UUFBQUEsWUFBQUE7TUFwVGI2bkMsV0FvVGE3bkMsV0F1TVQzTjtNQTFQSm00QyxTQW1EYXhxQztNQW5EYndxQyxTQW1EYXhxQzs7S0FBQUEsWUFBQUE7Ozs7OztHQVNaO1lBSUQrcUMsYUFBYS9xQyxPQUFNOG9DO0lBQ3JCLEdBRGU5b0M7S0FHYiw0QkFIbUI4b0MsVUFBTjlvQztLQUliLFdBSmFBLFdBQU04b0M7O2VBQU45b0M7O0lBT0QsSUFBUjhuQyxZQVBlZ0I7SUFRRixPQXpVakJqQixXQWlVYTduQyxXQTBMVDNOLE1BbkxBeTFDO0dBQ29EO1lBSXhEa0QsY0FBY2hyQztJQUNoQixHQURnQkEsV0E3VWQ2bkMsV0E2VWM3bkMsV0E4S1YzTjtlQTlLVTJOOztLQUlSLFlBQUEsNEJBSlFBOztVQU1QOG9DO01BQ0wsT0FBQSxXQVBZOW9DLFdBTVA4b0M7Ozs7OztJQURHO0dBRXlCO1lBRW5DbUMsWUFBWWpyQyxPQUFNL2hCO0lBQUksT0FyQnRCOHNELGFBcUJZL3FDLHVCQUFNL2hCO0dBQXFDO1lBQ3ZEaXRELGFBQWFsckMsY0FBVyxPQVZ4QmdyQyxjQVVhaHJDLFVBQWlDO1lBRTlDbXJDLGtCQUFrQm5yQyxPQUFNeGdCLEdBQU53Z0IsWUFBTXhnQixZQUE0QjtZQUNwRDRyRCxpQkFBaUJwckMsT0FBTXhnQixHQUFOd2dCLFlBQU14Z0IsWUFBMkI7WUFDbEQ2ckQsa0JBQWtCcnJDLGNBQVcsT0FBWEEsVUFBOEI7WUFDaERzckMsaUJBQWlCdHJDLGNBQVcsT0FBWEEsVUFBNkI7WUFDOUN1ckMsWUFBWXZyQyxPQUFNeGdCO0lBSmxCMnJELGtCQUlZbnJDLE9BQU14Z0I7SUFDcEIsT0FKRTRyRCxpQkFHWXByQyxPQUFNeGdCO0dBQytCO1lBSWpEZ3NELCtCQUFnQ3hyQztJQUFXLFdBQVhBLFdBQUFBLFdBQUFBLFdBQUFBO0dBS25DO1lBR0d5ckMsK0JBQWdDenJDO1FBSVowckMsZ0JBRERDLGdCQURBQyxnQkFEREM7SUFEYzdyQyxZQUNkNnJDO0lBRGM3ckMsWUFFYjRyQztJQUZhNXJDLFlBR2IyckM7SUFIYTNyQyxZQUlaMHJDOzs7WUFTcEJJLFNBQVM5ckM7SUFBQUE7SUFBQUE7aUNBQUFBO0lBcElUcXFDLHNCQW9JU3JxQztJQUdYLDRCQUhXQTtJQUlYLDRCQUpXQTtJQUtYLDRCQUxXQTtJQU1YLDRCQU5XQTtJQUFBQTtJQUFBQTtJQUFBQSxXQUFBQTtJQXRFZSxPQVh4QjRxQyxnQkFpRlM1cUM7R0FVVTtZQU9uQityQyxlQUFlL3JDLE9BQU14Z0I7SUFDdkIsV0FEaUJ3Z0I7eUJBSkksT0E3Q25Ca3JDLGFBaURlbHJDLFVBSnlCO0lBQS9CO0lBT1Q7YUFIZUE7TUFBQUEsWUExV2YrbkM7TUFzTElrQyxhQW9MV2pxQztTQUFNeGdCLEdBdFdyQnlvRCxrQkFzV2Vqb0M7TUFPUCxPQXhCUjhyQyxTQWlCZTlyQzs7S0FwRmY4cUMsYUFvRmU5cUM7O0dBUUg7WUFTWmdzQyxpQkFBaUJoc0MsT0FBTUwsTUFBSzFoQjtJQUM5QixXQURtQitoQixZQUFBQTtrQkFsTGpCb3FDLGtCQWtMaUJwcUMsT0FBTUwsTUFBSzFoQjtHQUVLO1lBR2pDZ3VELFlBQVlqc0MsT0FBTWtzQyxPQUFNanVEO0lBQzFCLE9BTkUrdEQsaUJBS1loc0MsT0FBTWtzQyxPQUFNanVEO0dBQ2tCO1lBRzFDa3VELGdCQUFnQm5zQyxPQUFNL2hCO0lBQ3hCLE9BTEVndUQsWUFJZ0Jqc0MsNkJBQU0vaEIsSUFBQUE7R0FDYTtZQUVuQ211RCxlQUFlcHNDLE9BQU0vaEI7SUFDdkIsT0FSRWd1RDthQU9lanNDOzBDQUFNL2hCO2FBQ1ksNEJBRFpBO0dBQytCO1lBR3BEb3VELGFBQWFyc0MsT0FBTWpnQjtJQUFJLE9BUHZCb3NELGdCQU9hbnNDLE9BQWdDLDJCQUExQmpnQjtHQUEyQztZQUc5RHVzRCxlQUFldHNDLE9BQU0vaUI7SUFBSSxPQVZ6Qmt2RCxnQkFVZW5zQyxPQUFnQyx1QkFBMUIvaUI7R0FBNkM7WUFHbEVzdkQsY0FBY3ZzQyxPQUFNeGdCO0lBQUksT0FieEIyc0QsZ0JBYWNuc0MsT0FBZ0MsdUJBQTFCeGdCO0dBQTRDO1lBR2hFZ3RELGNBQWN4c0MsT0FBTW5mO0lBQ3RCLE9BckJFb3JELFlBb0JjanNDLFVBQ0ksZ0NBREVuZjtHQUNlO1lBSW5DNHJELGFBQWF6c0MsY0FBVyxPQWpKeEI0cUMsZ0JBaUphNXFDLGFBQTBDO1lBQ3ZEMHNDLGFBQWExc0MsT0FBTWdzQjtJQUFTLE9BbEo1QjRlLGdCQWtKYTVxQyxPQUFNZ3NCO0dBQTZDO1lBRWhFMmdCLGNBQWMzc0MsT0FBTWdzQjtJQUFTLE9BcEo3QjRlLGdCQW9KYzVxQyxPQUFNZ3NCO0dBQThDO1lBQ2xFNGdCLGVBQWU1c0MsT0FBTWdzQjtJQUFTLE9Bcko5QjRlLGdCQXFKZTVxQyxPQUFNZ3NCO0dBQStDO1lBQ3BFNmdCLFlBQVk3c0MsT0FBTWdzQjtJQUFTLE9BdEozQjRlLGdCQXNKWTVxQyxPQUFNZ3NCO0dBQTRDO1lBVzlEOGdCLGlCQUFpQjlzQztJQS9EakIrckMsZUErRGlCL3JDO0lBQ25CLE9BQUEsV0FEbUJBO0dBQzZCO1lBQzlDK3NDLGVBQWUvc0M7SUFqRWYrckMsZUFpRWUvckM7SUFDakIsT0FBQSxXQURpQkE7R0FDZ0M7WUFJL0NndEMsaUJBQWlCaHRDO0lBQ25CLFdBRG1CQSxZQUFBQTtrQkEzT2pCbXFDLGdCQTJPaUJucUMsV0E2Q2IzTjtHQTNDc0U7WUFJMUU0NkMsb0JBQW9CanRDO0lBQ3RCLFdBRHNCQSxZQUFBQTtrQkFqUHBCbXFDLGdCQWlQb0JucUMsV0F1Q2hCM047R0FwQ3FEO1lBS3pENjZDLHNCQUFzQmx0QyxPQUFPaXBDLE1BQU1EO0lBQ3JDO0tBQW1CbnhCLFFBRFlveEI7S0FDbkJ6MUIsUUFEbUJ5MUI7S0FDM0JueEIsU0FEMkJteEI7WUFBUGpwQyxZQUFBQTs7SUFJRDtLQURqQkwsU0FIa0JLO0tBSWxCOG5DLFlBSnlCbUIsTUFBTUQ7S0FLL0I1OEM7OEJBSkYwckIsVUFBUXRFO1NBSVYsc0JBSmlCcUU7O0tBS2I4eUIsV0FIQWhyQyxNQUNBbW9DLE9BQ0ExN0M7SUFFSixPQXZNQXMrQyxVQWdNc0IxcUMsVUFNbEIycUM7R0FDcUI7WUFNekJ3QyxlQUFlbnRDLE9BQU13VCxPQUFNdEQ7SUFDN0IsT0FkRWc5QjthQWFlbHRDLGtCQUFNd1QsMEJBQU10RDtHQUVtQjtZQVE5Q2s5QixlQUFlcHRDLGNBQVcsT0FWMUJtdEMsZUFVZW50QyxhQUFtQztZQUNsRHF0QyxhQUFhcnRDLGNBQVcsT0FYeEJtdEMsZUFXYW50QyxhQUFtQztZQUloRHN0QyxhQUFhdHRDO0lBQUFBLFlBQUFBO2VBQUFBLFlBQUFBOztJQUlGLElBQVAycUMsV0FEQXQ0QztJQUVKLE9BMVJBODNDLGdCQXFSYW5xQyxPQUlUMnFDO0dBQ3NCO1lBSTFCNEMsY0FBY3Z0QztJQUNoQixlQURnQkE7O2dCQUFBQSxZQUFBQTs7TUFJRixJQUFQMnFDLFdBVkR0NEM7TUF4Uko4M0MsZ0JBOFJjbnFDLE9BSVQycUM7TUFKUzNxQyxZQUFBQTs7Ozs7Ozs7O0dBT2I7WUFJRHd0QyxnQkFBZ0J4dEMsT0FBTXdULE9BQU10RDtJQUM5QixXQURrQmxRLFlBQUFBOztJQUdMLElBRFBMLFNBRllLLGVBR1oycUMsV0FEQWhyQyxVQUZrQjZULE9BQU10RCxTQUFOc0Q7SUFJdEIsT0FwUEFrM0IsVUFnUGdCMXFDLFVBR1oycUM7R0FDcUI7WUFHekI4QyxhQUFhenRDLGNBQVcsT0FQeEJ3dEMsZ0JBT2F4dEMsYUFBb0M7WUFFakQwdEMsV0FBVzF0QztJQUNiLFdBRGFBLFlBQUFBOztJQUVBLElBQVAycUMsV0E1QkF0NEM7SUE2QkosT0FyVEE4M0MsZ0JBa1RXbnFDLE9BRVAycUM7R0FDc0I7WUFVMUJnRCxpQkFBaUIzdEMsT0FBTW5pQjtJQUFJLGVBQUpBLDBCQUFObWlCLFlBQU1uaUI7O0dBQXlDO1lBR2hFK3ZELGlCQUFpQjV0QyxjQUFXLE9BQVhBLFVBQTZCO1lBRTlDNnRDLGtCQUFrQjd0QyxjQUFXLE9BQVhBLGNBQUFBO0dBQW1EO1lBR3JFOHRDLHFCQUFxQjl0QyxPQUFNL2hCLEdBQU4raEIsWUFBTS9oQixZQUEwQjtZQUNyRDh2RCxxQkFBcUIvdEMsY0FBVyxPQUFYQSxVQUE0QjtZQUlqRGd1QyxTQUFTbndELEdBQ1gsT0FEV0EsaUJBQUFBLGVBQ29DO1lBZTdDb3dELGtCQUFrQmp1QyxPQUFNelQ7SUFDMUIsZUFEMEJBOztRQVhJRSxNQVdWdVQsV0FBTXpULHFCQVhJRTs7SUFFcEIsSUFBSjVPLElBUEptd0QsU0FLNEJ2aEQ7SUFXVnVULFdBVGRuaUI7SUFTY21pQixXQUFBQSxXQUFBQTtJQU5sQixPQWxNQThyQyxTQXdNa0I5ckM7R0FFK0I7WUFHakRrdUMsa0JBQWtCbHVDLGNBQVcsT0FBWEEsU0FBOEI7WUFFaERtdUMsY0FBY251QyxPQUFNbmlCO0lBQ3RCLGdCQURzQkE7O0lBRVosSUFBSjBPLE1BekJKeWhELFNBdUJvQm53RDtJQUFObWlCLFdBRVZ6VDtPQUZVeVQsWUFBQUE7U0FJVm91QyxpQkFKVXB1Qzs7S0FXSDtNQUFBO1FBQUEsMkJBWEdBLFdBQUFBLGNBQUFBO01BSVZvdUMsaUJBT0Q7SUFHSCxPQXJCQUgsa0JBT2NqdUMsT0FJVm91QztHQVVrQztZQU10Q0M7UUFBbUJDLG1CQUFRQztJQUM3QixZQUQ2QkEsYUFBUkQsVUFBUUM7O1lBTzNCQyxlQUFlQztJQUNqQixhQVJFSixrQkFPZUk7R0FHQztZQUVoQkMsY0FBYzF1QyxjQUFXLE9BQVhBLFNBQTBCO1lBRXhDMnVDLHFCQUFxQjN1QztRQUFPc3VDLG1CQUFRQztJQWxDcENKLGNBa0NxQm51QyxPQUFPc3VDO0lBekM1Qkwsa0JBeUNxQmp1QyxPQUFldXVDO0lBRXRDOztZQUdFSyxnQkFBZ0I1dUMsT0FBT3V1QyxZQUFZRDtJQUNyQztLQUFJRyxlQURxQkYsWUFBWUQ7S0FFL0IsUUFyQkpELGtCQW9CRUk7dUJBS0YsT0FYQUUscUJBS2dCM3VDLE9BQ2R5dUM7SUFHc0I7S0FEbEJ4MEM7S0FDa0IsT0FBQSxtREFEbEJBO0lBQ04sTUFBQTtHQUVtQztZQUVuQzQwQyxxQkFBcUI3dUMsT0FBT3V1QyxZQUFZRDtJQUMzQixJQUFYRyxlQUQwQkYsWUFBWUQ7aUJBM0J4Q0Qsa0JBNEJFSTtjQWRGRSxxQkFhcUIzdUMsT0FDbkJ5dUM7O0dBS2lDO1lBRW5DSyxnQkFBZ0I5dUMsY0FDbEIsV0FEa0JBLFVBQUFBLFVBQzBEO1lBRTFFK3VDLG1CQUFtQi91QyxPQUFNc0s7SUFDWixJQUFYbWtDLFdBSkZLLGdCQUdtQjl1QztJQUVNLE9BMUJ6QjJ1QyxxQkF3Qm1CM3VDLE9BRU0sV0FGQXNLLFFBQ3ZCbWtDO0dBQ3dDO1lBRzFDTywrQkFBK0JodkM7UUFLaEJsTSxjQURBL1QsY0FEQ2lmLGNBREZ6SCxjQURDdGE7SUFEZ0IraUIsWUFDaEIvaUI7SUFEZ0IraUIsWUFFakJ6STtJQUZpQnlJLFlBR2ZoQjtJQUhlZ0IsWUFJaEJqZ0I7SUFKZ0JpZ0IsWUFLaEJsTTs7O1lBUWZtN0MsK0JBQStCanZDO0lBQVcsV0FBWEEsV0FBQUEsV0FBQUEsV0FBQUEsV0FBQUE7R0FNbEM7WUFJR2t2QywrQkFBa0NsdkMsT0FBTS9pQixHQUFFc2EsR0FBUnlJLFlBQU0vaUIsR0FBTitpQixZQUFRekk7R0FDSztZQUUvQzQzQywrQkFBa0NudkMsY0FDcEMsV0FEb0NBLFdBQUFBO0dBQ0s7WUFJdkNvdkMsZ0JBQWdCcHZDO0lBQVcsT0FBQSxXQUFYQTtHQUF3QztHQUczQyxJQUFicXZDLGFBQWE7WUFDVEMsZUFBZXR2QyxPQUFNbmlCO0lBQzNCLElBRDJCME8sTUFBQTFPO0lBQzNCO29CQUQyQjBPOztjQUFBQSxLQUVYLE9BQUEsV0FGS3lULFdBRG5CcXZDLGVBQ3lCOWlEO0tBSXpCLFdBSm1CeVQsV0FEbkJxdkM7S0FLQSxJQUp5QjVpRCxNQUFBRixjQUFBQSxNQUFBRTs7R0FNeEI7WUFRRDhpRCw2QkFBNkJ2dkMsT0FBTTdlO0lBQU42ZSxZQUNSLHVCQURjN2U7SUFBTjZlLDRCQUVFLE9BQWpDLHVCQUZxQzdlLElBRUk7SUFGVjZlLDJCLE9BbEI3Qm92QyxnQkFrQjZCcHZDO0lBQUFBLDJCLE9BZHpCc3ZDLGVBY3lCdHZDO0lBQUFBLDJCLE9BZHpCc3ZDLGVBY3lCdHZDOztHQUtZO1lBUXpDd3ZDO0lBQTJCLDRCQUV0QjtJQURpQixJQUFYdnhELGNBQVcsT0FBQSx1QkFBWEE7SUFBVyxPQUFBO0dBQ2Y7WUFDUHd4RDtJQUE0Qiw0QkFFdkI7SUFEa0IsSUFBWnh4RCxjQUFZLE9BQUEsdUJBQVpBO0lBQVksT0FBQTtHQUNoQjtZQUVQeXhELGdDO1lBQ0FDLGlDO1lBSUFDLGtCQUFrQjN5RCxHQUFFc2EsR0FBRXlILEdBQUVqZixHQUFFK1Q7SUFFNUI7S0FBSSs3QyxXQUFXO0tBQ1hDLGNBbjRCQWxJO0lBcTRCSiw0QkFGSWtJLFNBREFEO0lBSWEsSUFBYkUsYUFBYTtJQWxlZjFGLHNCQWtlRTBGO0lBRUosbUNBTElELFVBR0FDO0lBRUo7S0FDSUM7O0tBT2MsT0FBQTtLQURELE9BQUE7S0FEQyxPQUFBO0lBSGxCO1lBTElEO1lBT2dCOzs7O1lBSmhCQzs7O1lBQUFBOzs7Ozs7OztZQVRnQi95RDtZQUFFc2E7WUFBRXlIO1lBQUVqZjtZQUFFK1Q7OztZQVoxQjA3QztZQUdBQztZQUlBQztZQUNBQztZQU1FRTtHQXNDSDtZQUlDSSwyQkFBMkJDO0lBQzdCLE9BN0NFTjthQTRDMkJNLGFBQUFBLGFBQUFBLGFBQUFBLGFBQUFBO0dBTVI7WUFLbkJDLGVBQWU5dUQsUUFBTytEO0lBQ2Q7S0FBTmdyRDtPQXhERlI7U0F1RGV2dUQ7U0FBTytEO3dCO3dCO3dCO0lBQ3BCZ3JELHlCLE9BbkdGaEIsZ0JBbUdFZ0I7SUFBQUEseUIsT0EvRkVkLGVBK0ZGYztJQUFBQSx5QixPQS9GRWQsZUErRkZjO0lBSUosT0FKSUE7R0FJRDtZQUlEQyx5QkFBeUJsdkQ7eUJBQ3FCLE9BQWhELHVCQUQyQkEsSUFDNkI7SUFBbkIsT0FWbkNndkQsZUFVYSx1QkFEWWh2RDtHQUM4QjtZQUl2RG12RCxvQkFBb0I5d0Q7SUFDdEIsb0I7SUFBd0MsT0FmdEMyd0QsZUFlYSw4QkFETzN3RDtHQUN3QjtPQU01Qyt3RDtZQUNBQztJQUFvQixvQ0FEcEJEO0dBQ2dEO0dBR3ZDO0lBQVRFLFNBSEFEO0lBT0FFLGdCQXBCQUw7SUFxQkFNLGdCQXJCQU47SUFzQkFPLGdCQWpCQU4sb0JBV0FHO1lBYUFJLHVCQUF1Qmx1RCxLQUFJeXREO0lBcGEzQnJFLGVBb2EyQnFFO0lBRXJCLElBQUpueUQsSUFBSSw2QkFGaUIwRTtJQUd6Qiw2QkFIeUJBO0lBR3pCLE9BREkxRTtHQUVIO1lBSUM2eUQ7SUFBeUIsT0FSekJELHVCQWJBSixRQU1BRztHQWVvRTtZQTBCcEVHLG1DQUNGLGNBQWlDO1lBRS9CQyw2QkFBNkJDLEtBQUFBLHFCQUNHO1lBRWhDQywyQkFBMkJEO0lBQzdCLGtDQUQ2QkE7R0FDUTtZQUVuQ0UsNkJBQTZCRjtJQUNuQixJQUFSRyxRQUpGRiwyQkFHNkJEO0lBTjdCRCw2QkFNNkJDO0lBRS9CLE9BRElHO0dBRUM7WUFFSEMseUJBQXlCSixLQUFJSyxNQUFKTCxhQUFJSyxNQUFKTDtHQUN5QztZQUVsRU0sK0JBU2tCTjtJQUdaLFNBQUpoMEQsRUFQb0JnQixHQUFFOEIsR0FBRWxDO0tBQ0csT0FUN0J3ekQ7Y0FZa0JKLFNBSDBCLDhCQUR0Qmh6RCxHQUFFOEIsR0FBRWxDOztJQVFwQixTQUFKMFosUUFYRixPQUxBODVDLHlCQVlrQko7SUFLWixTQUFKanlDLFFBVkYsT0FQQXF5Qyx5QkFZa0JKO0lBTVosU0FBSmx4RCxFQVJvQmxDLEdBQ08sT0FYN0J3ekQseUJBWWtCSixTQUZJcHpEO0lBU2hCLFNBQUppVyxFQVBvQmpXLEdBQ08sT0FiN0J3ekQseUJBWWtCSixTQUFJcHpEO0lBUXhCLE9BaktFK3hELGtCQTRKRTN5RCxHQUNBc2EsR0FDQXlILEdBQ0FqZixHQUNBK1Q7R0FDdUI7R0FTYixTQUFaMDlDLGdCLE9BbGNBL0UsYUE0V0FpRTtHQXVGWSxTQUFaZSxnQixPQWxjQS9FLGFBMldBZ0U7R0F3RmEsU0FBYmdCLGlCLE9BamNBL0UsY0F5V0ErRDtHQXlGYyxTQUFkaUIsa0IsT0FqY0EvRSxlQXdXQThEO0dBMEZXLFNBQVhrQixlLE9BamNBL0UsWUF1V0E2RDtHQTJGWSxTQUFabUIsZ0IsT0Exa0JBL0csYUErZUE0RjtHQTRGVyxTQUFYb0IsZSxPQXppQkE3RyxZQTZjQXlGO0dBNkZZLFNBQVpxQixnQixPQXppQkE3RyxhQTRjQXdGO0dBOEZZLFNBQVpzQixnQixPQWhrQkFqSCxhQWtlQTJGO0dBK0ZhLFNBQWJ1QixpQixPQXJqQkFqSCxjQXNkQTBGO0dBZ0dXLFNBQVh3QjtJLE9BcmVBakcsWUFxWUF5RTs7R0FpR2UsU0FBZnZ0RCxtQixPQWxlQWdwRCxnQkFpWUF1RTtHQWtHYyxTQUFkdHRELGtCLE9BaGVBZ3BELGVBOFhBc0U7R0FtR1ksU0FBWnJ0RCxnQixPQTdkQWdwRCxhQTBYQXFFO0dBb0djLFNBQWRwdEQsa0IsT0EzZEFncEQsZUF1WEFvRTtHQXFHYSxTQUFieHRELGlCLE9BdGRBc3BELGNBaVhBa0U7R0FzR2EsU0FBYnlCLGlCLE9BMWRBNUYsY0FvWEFtRTtHQXVHYyxTQUFkMEI7SSxPQWphQWpGLGVBMFRBdUQ7O0dBd0dZLFNBQVoyQixnQixPQXZaQWhGLGFBK1NBcUQ7R0F5R2MsU0FBZDRCLGtCLE9BelpBbEYsZUFnVEFzRDtHQTBHZ0IsU0FBaEI2QixvQixPQS9iQXZGLGlCQXFWQTBEO0dBMkdjLFNBQWQ4QixrQixPQXJjQXpGLGVBMFZBMkQ7R0E0R2dCLFNBQWhCbHRELG9CLE9BeGNBc3BELGlCQTRWQTREO0dBNkdtQixTQUFuQitCO0ksT0E1YkF4RixvQkErVUF5RDs7R0ErR1ksU0FBWmdDLGdCLE9BMVpBcEYsYUEyU0FvRDtHQWdIYSxTQUFiaUMsaUIsT0FsWkFwRixjQWtTQW1EO0dBaUhlLFNBQWZrQztJLE9BeFlBcEYsZ0JBdVJBa0Q7O0dBbUhVLFNBQVZtQyxjLE9BallBbkYsV0E4UUFnRDtHQW9IWSxTQUFab0MsZ0IsT0FwWUFyRixhQWdSQWlEO0dBc0hhLFNBQWJxQyxpQixPQW5WQTVFLGNBNk5BdUM7R0F1SGEsU0FBYnNDLGlCLE9BdkhBdEM7R0F5SGlCLFNBQWpCdUM7SSxPQTdWQWhGLGtCQW9PQXlDOztHQTBIaUIsU0FBakJ3QyxxQixPQTFIQXhDO0dBNEhlLFNBQWZ5QztJLE9BbFRBdkUsZ0JBc0xBOEI7O0dBNkhvQixTQUFwQjBDO0ksT0EzU0F2RSxxQkE4S0E2Qjs7R0E4SGUsU0FBZjJDLG1CLE9BcFNBdkUsZ0JBc0tBNEI7R0ErSGtCLFNBQWxCNEM7SSxPQWxTQXZFLG1CQW1LQTJCOztHQWlJZ0IsU0FBaEI2QyxvQixPQWxZQTVGLGlCQWlRQStDO0dBa0lnQixTQUFoQjhDLG9CLE9BbElBOUM7R0FtSWlCLFNBQWpCK0M7SSxPQS9YQTVGLGtCQTRQQTZDOztHQXFJb0IsU0FBcEJnRDtJLE9BOVhBNUYscUJBeVBBNEM7O0dBc0lvQixTQUFwQmlELHdCLE9BdElBakQ7R0F5SUYsU0FERWtEO0ksT0FyUEFyRSw2QkE2R0FtQjs7R0E0SUYsU0FERW1EO0ksT0F6U0E3RSwrQkE4SkEwQjs7R0E4SUYsU0FERW9EO0ksT0E5UkE3RSwrQkFpSkF5Qjs7R0FpSkYsU0FERXFEO0ksT0F2UkE3RSwrQkF1SUF3Qjs7R0FtSkYsU0FERXNEO0ksT0F0UkE3RSwrQkFvSUF1Qjs7R0FzSkYsU0FERXVEO0ksT0E5a0JBeEksK0JBeWJBaUY7O0dBd0pGLFNBREV3RDtJLE9BeGxCQTFJLCtCQWljQWtGOztHQTBKRixTQURFeUQsb0IsT0FubUJBaEosa0JBMGNBdUY7R0E0SkYsU0FERTBELG9CLE9BM0pBMUQ7R0E4SkYsU0FERTJELG1CLE9BdG1CQWpKLGlCQXljQXNGO0dBZ0tGLFNBREU0RCxtQixPQS9KQTVEO0dBa0tGLFNBREU2RCxjLE9Bdm1CQWhKLFlBc2NBbUY7WUF3S0k4RCxjQUFnQnIwQyxLQUF1QnMwQyxNQUFLckU7UUFBNUJzRSxRQUFBdjBDOztLQUFrQyxHQUFsQ3UwQztVQUFTcjBDLE1BQVRxMEMsVUFBQUMsU0FBU3QwQzs7VUFBVHMwQyxTQXZkcEJ0SDtLQXVkc0QsY0FDaEQ7U0FDTGp3RDtzQkFBTSxPQUFBLFdBRm9DcTNELE1BQUtyRSxLQUUvQ2h6RDs7S0FFRCxXQUoyQ3EzRCxNQUFLckUsS0FFL0NoekQ7S0FHRCxXQUxvQnUzRCxRQUE0QnZFO0tBTWpDLElBTkt3RSxZQUFBRCxTQUFBRCxRQUFBRTs7O1lBaUJwQkMsYUFBZTEwQyxLQUF1QnMwQyxNQUFLckUsS0FBSTBFO0lBQ2pELEdBRGlCMzBDLFNBQVNFLE1BQVRGLFFBQUF3MEMsU0FBU3QwQyxjQUFUczBDLFNBeGVmdEg7SUF5ZUksY0FBQSxXQUQyQ3lIO2tCQUVwQztRQVYwQkMsb0JBVzNCdHJEO0lBQ1YsV0FKc0NnckQsTUFBS3JFLEtBR2pDM21EO1FBWDJCNUMsTUFBQWt1RDtJQUN2QztLQUFNLFlBQUEsV0FEaUNsdUQ7aUJBRTFCO1NBRjBCRSxrQkFHM0IzSjtLQUNWLFdBSWV1M0QsUUFBNEJ2RTtLQUgzQyxXQUdzQ3FFLE1BQUtyRSxLQUxqQ2h6RDtTQUgyQnlKLE1BQUFFOztHQWFEO1lBR3BDaXVELGNBQWM1RSxLQUFJbnlEO0lBQ3BCLElBQUlzRCw0QkFEZ0J0RCxJQUVoQitLLGVBQ0FDO2FBQ0E3RDtLQXRrQkYrbUQ7T0Fra0JjaUUsS0FLTSw4QkFMRm55RCxHQUVoQitLLFNBQ0FDLFdBREFEO0tBQ0FDO0tBREFELFVBQ0FDOztJQUd5Qjs7UUFIekJBLGFBRkExSDtnQkFDQXlILFlBREF6SDttQkFHQTZEOztLQUtJLFlBQUEsd0JBVFluSCxHQUdoQmdMOztNQUNBN0Q7TUExaEJGNG5ELGlCQXNoQmNvRDs7MkJBSVpockQsVUFyZkZnb0QsZUFpZmNnRCxlQUdabm5EOztHQWdCeUI7WUFFM0Jnc0QsZ0JBQWtCOTBDLEtBQXVCczBDLE1BQUtyRTtJQUFNLEdBQWxDandDO1NBQU9FLE1BQVBGLFFBQUF4WSxPQUFPMFk7O1NBQVAxWSw0QkFBbUIsU0FBRTtJQUFhLFlBQzlDLE9BQUEsV0FEWUEsTUFBNEJ5b0Q7UUFFM0NoekQ7SUFBSyxPQUFBLFdBRmlDcTNELE1BQUtyRSxLQUUzQ2h6RDs7WUFFSDgzRCxnQkFBaUJuckQsSUFBSUMsT0FBTW9tRDtJLHVCQUMxQmh6RCxjQUFLLE9BQUEsV0FEVzJNLElBQVVxbUQsS0FDMUJoekQ7UUFDR21NO0lBQUssT0FBQSxXQUZZUyxPQUFNb21ELEtBRXZCN21EOztZQUVKNHJELGdCQUFpQm5zRCxNQUFNQyxPQUFNbW5EO0ksdUJBQ25CdHdELGNBQUssT0FBQSxXQURFa0osTUFBWW9uRCxLQUNuQnR3RDtRQUNDeEM7SUFBSyxPQUFBLFdBRk8yTCxPQUFNbW5ELEtBRWxCOXlEOztZQUlYODNELFlBQVkvekQsUUFBT2cwRDtJQUNyQjtLQUFJMXlELE1BQU07S0FDTnl0RCxNQXJQRkUsb0JBb1BFM3REO0lBRUosV0FIY3RCLFFBRVYrdUQsS0FGaUJpRjtJQTlqQm5CdEksZUFna0JFcUQ7SUFHTSxJQUFON3VELE1BQU0sNkJBSk5vQjtJQUtKLFlBRElwQjtjQUVDLDZCQU5Eb0IsUUFJQXBCO2NBQ1ksNkJBTFpvQjtHQU0yQjtZQWE3QjJ5RCxzQkFBc0JsRixLQUFJaDBEO0lBQWEsVUFBYkE7WUFBQUE7O1FBQ0csT0F4dUI3QjB1RCxhQXV1QnNCc0Y7O1FBRU8sT0F0c0I3QmxGLGFBb3NCc0JrRjs7UUFJTyxPQXRsQjdCckQsZUFrbEJzQnFEOztRQUtPLE9BbGxCN0JwRCxpQkE2a0JzQm9EOztRQU1PLE9BMWxCN0J0RCxpQkFvbEJzQnNEOztRQVFPLE9Bam5CN0I1RCxjQXltQnNCNEQ7Z0JBU08sT0FsbkI3QjVELGNBeW1Cc0I0RDs7V0FBSWgwRDs7V0FHVDh6QixTQUhTOXpCLGVBR2hCbzNCLFFBSGdCcDNCO09BR0csT0FyakI3Qit3RCxlQWtqQnNCaUQsS0FHWjU4QixPQUFPdEQ7O09BSVk7O1dBR2xCcnZCLElBVmV6RTtPQXptQjFCb3dELGNBeW1Cc0I0RDtPQVVPLE9Bbm5CN0I1RCxjQXltQnNCNEQsS0FVWHZ2RDs7R0FBNEQ7WUFNbkVtcUMsV0FBV29sQixLQUFJaHBEO0lBQU0sVUFBTkEsa0JBMEJTOzs7Ozs7O2NBMUJUQTs7Y0FTSW5LLElBVEptSyxRQVNDOEcsSUFURDlHO1VBQWY0akMsV0FBV29sQixLQVNLbGlEO1VBQ3BCLE9BMUJBb25ELHNCQWdCZWxGLEtBU1FuekQ7O3NCQVRKbUssUUFlQ29pQyxNQWZEcGlDOztlQVlpQkM7V0FaaEMyakMsV0FBV29sQixLQWVLNW1CO1dBREgsT0F4dkJqQnVoQjtvQkEwdUJlcUYscUJBcENmZ0YsWUFvQ0lwcUIsWUFZZ0MzakM7O2NBR0FDO1VBZmhDMGpDLFdBQVdvbEIsS0FlSzVtQjtVQUVtQjtXQUFBLE1BckR2QzRyQixZQW9DSXBxQixZQWVnQzFqQztXQUVoQixVQUFBO1dBQVBpdUQ7V0FBUnZwQjtVQUNMLE9BdnhCQTRlLGdCQXF3QmV3RixLQWlCVnBrQixRQUFRdXBCOztvQkFqQk1udUQ7Ozs7Z0JBQytDMEQsTUFEL0MxRCxRQUN1Q3VZLGVBQWxCeXJCOzs7O2NBa0JqQm50QyxJQW5CSm1KLFFBbUJDcWlDOzs7b0JBbkJEcmlDOzs7O2dCQUs2Q2tLLE1BTDdDbEssUUFLcUNzaEQsaUJBQWxCeGQ7Ozs7Y0FnQmpCcnFDLElBckJGdUcsUUFxQkQ2akM7OztvQkFyQkM3akM7Ozs7Z0JBQytDMEQsTUFEL0MxRCxRQUN1Q3VZLGVBQWxCeXJCOzs7O2NBa0JqQm50QyxJQW5CSm1KLFFBbUJDcWlDOzs7b0JBbkJEcmlDOzs7O2dCQUs2Q2tLLE1BTDdDbEssUUFLcUNzaEQsaUJBQWxCeGQ7Ozs7Y0FnQmpCcnFDLElBckJGdUcsUUFxQkQ2akM7OztjQUVKK0wsTUF2Qks1dkMsUUF1QlIrakMsTUF2QlEvakM7VUFBZjRqQyxXQUFXb2xCLEtBdUJKamxCO1VBQWlCLE9BQUEsV0FBZDZMLEtBdkJDb1o7O2NBd0JMb0YsTUF4QlNwdUQ7VUFBZjRqQyxXQUFXb2xCLEtBd0JMb0Y7VUFBa0IsT0ExbkI1QnpJLGVBa21CZXFEOztjQXlCS24yQyxNQXpCRDdTLFFBeUJGcXVELE1BekJFcnVEO1VBQWY0akMsV0FBV29sQixLQXlCRXFGO1VBQVcsT0FBQSxzQkFBUng3Qzs7T0F6QmhCK3dCLFdBQVdvbEIsS0FLdUJsbEI7T0FHRSxPQTFwQnhDOGdCO2dCQWtwQmVvRSxLQUt5QzFILFFBR2hCLGdDQUh3QnAzQzs7TUFMNUQwNUIsV0FBV29sQixLQXFCR25sQjtNQUNVLE9BL29CNUJ1aEIsY0F5bkJlNEQsS0FxQk12dkQ7O0tBckJqQm1xQyxXQUFXb2xCLEtBQ3lCaGxCO0tBRXhDLE9BcnBCQTRnQixpQkFrcEJlb0UsS0FDMkN6d0MsTUFBUTdVOztJQUQ5RGtnQyxXQUFXb2xCLEtBbUJLM21CO0lBQ1EsT0E3cEI1QjBpQixnQkF5b0JlaUUsS0FtQlFueUQ7R0FPTztZQU0xQnF0QyxXQUFXOGtCLEtBQUlocEQ7SUFBTSxVQUFOQSxrQkE2QlM7Ozs7Ozs7Y0E3QlRBOztjQVlJbkssSUFaSm1LLFFBWUM4RyxJQVpEOUc7VUFBZmtrQyxXQUFXOGtCLEtBWUtsaUQ7VUFDcEIsT0E3REFvbkQsc0JBZ0RlbEYsS0FZUW56RDs7c0JBWkptSyxRQWtCQ29pQyxNQWxCRHBpQzs7ZUFlaUJDO1dBZmhDaWtDLFdBQVc4a0IsS0FrQks1bUI7V0FESCxPQTN4QmpCdWhCO29CQTB3QmVxRixxQkFwRWZnRixZQW9FSTlwQixZQWVnQ2prQzs7Y0FHQUM7VUFsQmhDZ2tDLFdBQVc4a0IsS0FrQks1bUI7VUFFbUI7V0FBQSxNQXhGdkM0ckIsWUFvRUk5cEIsWUFrQmdDaGtDO1dBRWhCLFVBQUE7V0FBUGl1RDtXQUFSdnBCO1VBQ0wsT0ExekJBNGUsZ0JBcXlCZXdGLEtBb0JWcGtCLFFBQVF1cEI7O29CQXBCTW51RDs7OztnQkFDK0MwRCxNQUQvQzFELFFBQ3VDdVksZUFBbEJ5ckI7Ozs7Y0FxQmpCbnRDLElBdEJKbUosUUFzQkNxaUM7OztvQkF0QkRyaUM7Ozs7Z0JBSzZDa0ssTUFMN0NsSyxRQUtxQ3NoRCxpQkFBbEJ4ZDs7OztjQW1CakJycUMsSUF4QkZ1RyxRQXdCRDZqQzs7O29CQXhCQzdqQzs7OztnQkFDK0MwRCxNQUQvQzFELFFBQ3VDdVksZUFBbEJ5ckI7Ozs7Y0FxQmpCbnRDLElBdEJKbUosUUFzQkNxaUM7OztvQkF0QkRyaUM7Ozs7Z0JBSzZDa0ssTUFMN0NsSyxRQUtxQ3NoRCxpQkFBbEJ4ZDs7OztjQW1CakJycUMsSUF4QkZ1RyxRQXdCRDZqQzs7O2NBRVBFLE1BMUJRL2pDO29CQTBCUitqQywwQkFBQUE7eUJBQUFBOztnQkFqQjhDOEwsTUFUdEM3dkMsUUFTOEJzdUQscUJBQWxCRixNQWlCcEJycUI7WUExQlBHLFdBQVc4a0IsS0FTZ0JvRjtZQUVTLE9BN3JCeEN4SixpQkFrckJlb0UsS0FTa0NzRixRQUVULFdBRmlCemU7OztjQWlCM0NELE1BMUJLNXZDO1VBQWZra0MsV0FBVzhrQixLQTBCSmpsQjtVQUF1RCxPQW5zQmxFZ2hCLGdCQXlxQmVpRSxLQTBCbUQsV0FBcERwWjs7Y0FDSnllLE1BM0JTcnVEO1VBQWZra0MsV0FBVzhrQixLQTJCTHFGO1VBQWtCLE9BN3BCNUIxSSxlQWtvQmVxRDs7Y0E0QktuMkMsTUE1QkQ3UyxRQTRCRnV1RCxNQTVCRXZ1RDtVQUFma2tDLFdBQVc4a0IsS0E0QkV1RjtVQUFXLE9BQUEsc0JBQVIxN0M7O09BNUJoQnF4QixXQUFXOGtCLEtBS3VCbGxCO09BR0UsT0ExckJ4QzhnQjtnQkFrckJlb0UsS0FLeUMxSCxRQUdoQixnQ0FId0JwM0M7O01BTDVEZzZCLFdBQVc4a0IsS0F3QkdubEI7TUFDVSxPQWxyQjVCdWhCLGNBeXBCZTRELEtBd0JNdnZEOztLQXhCakJ5cUMsV0FBVzhrQixLQUN5QmhsQjtLQUV4QyxPQXJyQkE0Z0IsaUJBa3JCZW9FLEtBQzJDendDLE1BQVE3VTs7SUFEOUR3Z0MsV0FBVzhrQixLQXNCSzNtQjtJQUNRLE9BaHNCNUIwaUIsZ0JBeXFCZWlFLEtBc0JRbnlEO0dBT087WUFROUJxMkMsU0FBUzVwQixHQUFFMGxDO0lBQ2IsSUFEMEIxOEIsZ0JBQzFCO2lCQUNPdHNCLEtBdkVENGpDLFdBcUVPb2xCLEtBRU5ocEQsd0JBRklzakIsR0FBRTBsQyxLQUUwQjtJQUR2QyxPQUFBLDRDQUQwQjE4Qjs7WUFLeEI4Z0IsVUFBVTlwQixHQUFFMGxDO1FBQWExOEI7SUFDM0IsT0FBQSxrQ0FEWWhKLEdBQUUwbEMsS0FBYTE4Qjs7WUFHekJpaEIsU0FBU3liO0lBQ1gsSUFEeUIxOEIsZ0JBQ3pCO3NCO0lBQUEsT0FBQSw0Q0FEeUJBOztZQUd2QitnQixRQUFRMmI7c0I7SUFBTSxxQixPQVhkOWIsY0FXUThiO0dBQXlCO1lBQ2pDdmIsT0FBT25oQixLQUFNLE9BRGIrZ0IsUUF4VkFpYyxlQXlWT2g5QixLQUErQjtZQUN0Q29oQixRQUFRcGhCLEtBQU0sT0FGZCtnQixRQXZWQWtjLGVBeVZRajlCLEtBQStCO1lBRXZDa2lDLFNBQVNsckM7SUFDWCxJQURzQmdKLGdCQUN0QjtpQkFDT3RzQjtLQUFPLE9BQUUsV0FGTHNqQixZQUVVMGxDLEtBQU8sT0F0RnRCcGxCLFdBc0Zlb2xCLEtBQWRocEQsS0FBdUM7SUFBQztJQUQvQyxPQUFBLDRDQURzQnNzQjs7WUFLcEJtaUMsUUFBUW5pQyxLQUFNLE9BTGRraUMsa0JBSzRCNzFELEdBQUssT0FBTEEsRUFBTSxHQUExQjJ6QixLQUErQjtZQUV2Q3FoQixTQUFTcnFCO0lBQ0gsSUFEY2dKLGdCQUNsQmwwQixJQTNXRmd4RCxtQkE0V0VKLE1BcFhGRSxvQkFtWEU5d0Q7YUFFQW15QixJQUFFdnFCO0tBOURBa2tDLFdBNkRGOGtCLEtBQ0VocEQ7S0FFRixPQUFBLFdBTE9zakIsR0ExVlRtbUMsdUJBMlZFcnhELEdBQ0E0d0Q7SUFHOEI7SUFDbEMsT0FBQSxrQ0FISXorQixRQUhrQitCOztZQVNwQnNoQixRQUFRdGhCLEtBQU0sT0FUZHFoQixTQXowQ0FyN0IsSUFrMUNRZ2EsS0FBcUI7WUFFN0JvaUMsVUFBVXByQztJQUNKLElBRGVnSixnQkFDbkJsMEIsSUF0WEZneEQsbUJBdVhFSixNQS9YRkUsb0JBOFhFOXdEO2FBRUFteUIsSUFBRXZxQjtLQXpHQTRqQyxXQXdHRm9sQixLQUNFaHBEO0tBRUYsT0FBQSxXQUxRc2pCLEdBcldWbW1DLHVCQXNXRXJ4RCxHQUNBNHdEO0lBRzhCO0lBQ2xDLE9BQUEsa0NBSEl6K0IsUUFIbUIrQjs7WUFTckJxaUMsU0FBU3JpQyxLQUFNLE9BVGZvaUMsVUFwMUNBcDhDLElBNjFDU2dhLEtBQXNCO1lBSS9Cc2lDO0lBcnRCQWpKLGVBMFZBMkQ7SUE0WEYsT0F0dEJFM0QsZUEyVkE0RDtHQTRYNkI7R0FFeEIsd0JBSkxxRjtZQWFBQywrQkFBc0NqMkMsT0FDakMvaUIsR0FBU3NhLEdBQVd5SCxHQUFVamY7SUFoaEJuQ212RCwrQkErZ0JzQ2x2QyxPQUNqQy9pQixHQUFTc2E7SUFEd0J5SSxZQUNiaEI7SUFEYWdCLFlBQ0hqZ0I7O0dBR2I7WUFHdEJtMkQsK0JBQXNDbDJDO0lBQ3hDLFdBRHdDQSxXQUFBQSxXQUFBQSxXQUFBQTtHQUVHO0dBSzNDLFNBREVtMkM7SSxPQWJBRiwrQkF4WUF2Rjs7R0EyWkYsU0FERTBGO0ksT0FYQUYsK0JBL1lBeEY7O1lBcWFBaGMsUUFBUWwxQztJQUNBLElBRFdrMEIsZ0JBQ2pCMDhCLE1BcmJGRSxvQkFvYlE5d0Q7YUFFTmtyQixFQUFFdGpCLEtBL0pBNGpDLFdBOEpGb2xCLEtBQ0VocEQsTUFBTSxPQWwwQlYya0QsZUFpMEJFcUUsUUFDb0Q7SUFDeEQsT0FBQSxrQ0FESTFsQyxNQUZpQmdKOztZQXFCbkIyaUMsK0JBQStCcjJDO1FBSVowckMsZ0JBRERDLGdCQURBQyxnQkFEREM7SUFLbkIsU0FBSXlLLFVBQVVyNUQsR0FBRXNNO0ssNEJBQXdDLE9BQXhDQTtTQUF3QnRMO0tBQUssT0FBQSxXQUEvQmhCLEdBQTBCZ0I7O0lBTlAraEIsMEIsT0FNN0JzMkMsVUFMZXpLO0lBRGM3ckMsMEIsT0FNN0JzMkMsVUFKZ0IxSztJQU9wQjtJQVRpQzVyQywwQixPQU03QnMyQyxVQUhnQjNLO0lBT3BCO0lBVmlDM3JDLDBCLE9BTTdCczJDLFVBRmlCNUs7OztZQVFuQjZLLCtCQUErQjdpQztJQUN0QixJQUFQOGlDLE9BeDRCRmhMLCtCQXU0QitCOTNCO2FBRTdCK2lDLGNBQWN4NEQsR0FBSSxPQUFvQixXQUR0Q3U0RCx5QkFDY3Y0RCxJQUFzQzthQUNwRHk0RCxlQUFlejREO0tBQUksT0FBcUIsV0FGeEN1NEQseUJBRWV2NEQ7SUFBdUM7YUFDdEQwNEQsZUFBZTE0RDtLQUFJLE9BQXFCLFdBSHhDdTRELHlCQUdldjREO0lBQXVDO2FBQ3REMjRELGdCQUFnQjM0RDtLQUFJLE9BQXNCLFdBSjFDdTRELHlCQUlnQnY0RDtJQUF3QztJQUM1RCxXQUpJdzRELGVBQ0FDLGdCQUNBQyxnQkFDQUM7R0FDNEQ7R0FHaEUsU0FERUM7SSxPQXBCQVIsK0JBMWJBM0Y7O0dBaWRGLFNBREVvRztJLE9BVkFQLCtCQXRjQTdGOzs7OztPQXZXQTdEO09BaWNBK0U7T0F6a0JBOUc7T0Ewa0JBK0c7T0F2Y0FwRjtPQWtjQStFO09BamNBOUU7T0FrY0ErRTtPQWhjQTlFO09BaWNBK0U7T0FoY0E5RTtPQWljQStFO09BMWRBeEY7T0FrZUFocEQ7T0EvZEFpcEQ7T0FnZUFocEQ7T0F2ZUE2b0Q7T0FxZUFpRztPQTFkQTdGO09BNmRBaHBEO09BMWRBaXBEO09BMmRBaHBEO09BcmRBa3BEO09Bc2RBdHBEO09BemRBcXBEO09BMGRBNEY7T0F0WkEvRTtPQXlaQWtGO09BeFpBakY7T0F1WkFnRjtPQWxhQWxGO09BaWFBaUY7T0E5YUFsRjtPQWRBRjtPQStiQXVGO09BemJBdEY7T0E0YkF3RjtPQXZjQTFGO09BcWNBeUY7T0F2Y0ExRjtPQXdjQXRwRDtPQXpVQTJxRDtPQW1WQTRFO09BblRBckU7T0FvVEFzRTtPQTNWQS9FO09BNlZBZ0Y7T0F4VkEvRTtPQXlWQWdGO09BNVRBMUU7T0FZQUk7T0FrVEF1RTtPQTFTQXRFO09BMlNBdUU7T0FoU0FyRTtPQWtTQXVFO09BclNBeEU7T0FvU0F1RTtPQS9YQTFGO09Ba1lBNEY7T0EvWEEzRjtPQWdZQTRGO09BOVhBM0Y7T0ErWEE0RjtPQTlhQW5HO09BMFpBb0Y7T0FqWkFuRjtPQWtaQW9GO09BOVhBakY7T0FpWUFtRjtPQW5ZQXBGO09Bb1lBcUY7T0EzWUF0RjtPQXdZQW9GO09BMVdBOUU7T0E4WEE0RjtPQTdYQTNGO09BOFhBNEY7O09BeG1CQTVJO09BZ2tCQWlIO09BcGpCQWhIO09BcWpCQWlIO09BcmlCQTFHO09BdW1CQWdKO09BM21CQXBKO09BbW1CQWdKO09BbG1CQS9JO09Bc21CQWlKO09Bcm1CQWhKO09BbW1CQStJO09BbG1CQTlJO09Bc21CQWdKO09BNVFBL0U7T0FxUEFxRTtPQS9RQTFFO09BdVJBNkU7T0FwUkE1RTtPQXNSQTZFO09BaFRBaEY7T0F5U0E2RTtPQTVSQTVFO09BOFJBNkU7T0F0a0JBckk7T0E4a0JBd0k7T0F0bEJBekk7T0F3bEJBMEk7T0EzS0E3RDtPQW9CQUs7T0FDQUM7T0FoQkFMO09BV0FHO09BTUFHO09BZUFFO09BOUNBWDtPQVhBRjtPQW1GQWM7T0FHQUM7T0FHQUU7T0FHQUM7T0FLQUU7T0FHQUU7T0E0R0lpRDtPQWlCSks7T0FRQUc7T0FxQkFDO09BSUFDO09BSUFDO09BMEhBMWdCO09BQ0FJO09BQ0FDO09Ba0JBRTtPQVdBK2dCO09BdEJBRjtPQVpBbGhCO09BUkFMO09BZUFzaEI7T0FWQXBoQjtPQWlCQU87T0FXQStnQjtPQXVEQXBoQjtPQWxFQUs7T0FrREFvaEI7T0FLQUM7T0FsQkFIO09BT0FDO09BNTFCQWpMO09BeWlCQTZHO09BeGlCQTVHO09BeWlCQTZHO09BNlZBc0U7T0FvQkFRO09BUkFOO09BVUFPOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUN0eUNFQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFLQUMsVUFBVUM7SUFDWjtLQUNVLElBQUpwMkQsSUFBSSxXQUZFbzJEO0tBQUFBLFFBRU5wMkQ7S0FGTW8yRDtLQUFBQSxRQUFBQTtlQUVOcDJELEdBRk1vMkQsUUFBQUE7S0FPVixPQUxJcDJEOzs7OztLQUZNbzJELFFBTFZGO0tBS1VFO0tBQUFBO0tBYVYsT0FsQkFGOztHQWtCQztZQUdERyxVQUFVRCxJQUNaLE9BRFlBLFFBQUFBLFFBaEJWRCxVQWdCVUMsSUFHSztZQVFmRSxrQkFBa0JGO0lBQ1osSUFBSnAyRCxJQVpGcTJELFVBV2tCRDtPQUFBQSxPQUVGLE1BQUE7SUFDbEIsT0FGSXAyRDtHQUVIO1lBR0N1MkQsYUFBYUgsSUFqQmJDLFVBaUJhRCxZQUFBQSxNQUVOO1lBS1BJLG1CQUFtQkosSUFBSyxhQUFMQSxjQUF5QjtZQUU1Q0ssY0FBY0w7SUFDaEIsWUFEZ0JBOzs7dUJBRU07UUFDVGoyQztJQUFlLE9BQWZBO0dBRThCO1lBR3pDdTJDLFdBQVdOLElBQ2IsT0FEYUEsUUFBQUEsZ0JBQUFBLE1BR1E7WUFPbkJPLHdCQUF3QlAsSUFBQUEsb0JBQXlDO1lBeVNuRVEsYUF2U1FSO0lBQ1I7S0FBSVMsZUFESVQ7S0FFSnZ6QyxNQUFNLDZCQUROZzBDO0lBRUosNkJBRklBO0lBRElULFFBQUFBO0lBS1IsT0FISXZ6QztHQUdEO1lBS0RpMEMsVUFBVW5rQyxPQUFNeWpDLElBWmhCTyx3QkFZZ0JQLEtBQ2xCLE9BRFl6akMsTUFFUDtZQUdIb2tDLFlBQVlwa0MsT0FBTXlqQyxJQUFLLE9BTHZCVSxVQUtZbmtDLGVBQU15akMsSUFBNkI7WUFFL0NZLFdBQVdya0MsT0FBTXlqQyxJQUFHcDJEO0lBQ3RCLDhCQURtQm8yRCxPQUFHcDJEO0lBQ3RCLE9BSEUrMkQsWUFFV3BrQyxPQUFNeWpDO0dBRUM7T0FHbEJhO1lBRUEvOUMsT0FBT2crQyxPQUFNdnhEO0lBQU87O1lBM0ZwQnV3RDs7Ozs7WUEyRmF2d0Q7WUFRRyw2QkFWaEJzeEQ7WUFFT0M7R0FVVjtZQUdHaGdELFlBQVk5WjtJQUNkLElBQUk4QixZQUNBd0IsTUFBSixzQkFGY3REO2FBR1Z1STtLQUNGLEdBRkVqRixPQURBeEIsTUFHZ0IsTUFBQTtLQUNWLElBQUpjLElBQUksZ0JBTEk1QyxHQUNWOEI7S0FBQUE7S0FNRixPQUZJYztJQUVIO0lBQ0gsT0FyQkVrWixVQWdCRXZUO0dBS21COztHQUdMLFNBQWhCMFosb0IsT0F4QkFuRztHQXdCZ0IsSUFxRGR4WTtZQVBGeTJELGtCQUFrQi8xRDtJQUFLLHVCQUFMQTtJQUF5QixNQUFBO0dBQWlCO1lBNEZ6RGcyRCxrQkF4RmVoMkQ7SUFBTSxNQUFBO0dBQWlCO1lBRXpDaTJELFFBQVFDLGVBQWNKLE9BQU05MUQ7SUFDOUI7S0FDSVUsTUFBTTtLQUNONUM7S0FDQTRVO0tBQ0F5akQ7YUFDQTV4RDtLQUNGLEdBSkV6RyxPQUNBNFUsUUFHOEIsSUFBSjlULElBQUksZUFMOUI4QixLQUNBNUMsT0FBQUEsUUFJMEQsT0FBaENjO1FBRjFCdTNELFFBR1csTUFBQTtLQUpYempELFNBS08sdUJBVG1CMVMsSUFFMUJVLFFBREFwQjtrQkFHQW9UO2dCQUNBeWpELHVCQUxNRCxlQUFvQmwyRDtnQkFHMUJsQyxVQVNFLGVBVkY0QztJQVlDO0lBQ0wsT0EzRkVvWCxPQTRFc0JnK0MsT0FNcEJ2eEQ7R0FTYTtHQXNCakIsSUFERWxHLFFBcENBNDNELFFBc0ZHRDtZQTNDSEksYUFBYXYyRCxTQUdia2Y7SUFGRiwwQkFFRUEsZUFURixPQURFMWdCO0lBV1MsSUFBTDJCLEtBQUssV0FKSUgsU0FHYmtmO1dBOUNBazNDLFFBTkFGLHVCQW9EQWgzQyxPQUNJL2UsS0FBQUE7R0FDMkM7O0dBR3JDLFNBQVZILGMsT0FSQXUyRDtHQVFVO0dBQ0ksU0FBZHQyRCxrQixPQVRBczJEO1lBY0F6M0MsYUFBYTNlLElBQ2YsT0ExREVpMkQsUUFzRkdELHVCQTdCVWgyRCxLQUFBQSxJQUMwQjtZQUd2Q2tFLFNBQVM4d0Q7SUFDWCxZQURXQTtrQ0FLc0I7MkJBSGxCaDFELGVBQ2IsT0FBQSx1QkFEYUE7UUFFTXEyRDtJQUFPLE9BQUEsdUJBQVBBO0dBQ2M7R0FtQnhCLElBQVBDO0dBV2tCLFNBQXBCQyxrQkFWaUJ2MkQ7SUFDbEIsSUFBSSxXQUFBLDRCQURjQSxJQURmczJELFVBRUM7Ozs7S0FHQSxJQURFdEIsS0F6RkxpQixRQXNGR0QsdUJBQWNoMkQsS0FBQUE7S0FEZnMyRCxrQkFDZXQyRCxJQUdaZzFELEtBSkhzQjtLQU9ELE9BSEl0Qjs7O0dBbUJYOzs7WUFFSXdCLFVBQVV4NkQ7SUFBSSxNQUFBLDhDQUFKQTtHQUEwQjtZQUVwQ3k2RCxpQkFBaUI3M0Q7SUFDbkIsT0FIRTQzRCxVQUdRLGtDQURTNTNEO0dBQ3VDO1lBR3hEODNELGlCQUFpQkM7SUFDbkIsT0FQRUgsVUFRQSxrQ0FGaUJHO0dBS047WUFXWEM7SUFDRixPQXZCRUo7R0F1QnNEO1lBR3RESztJQUNGLE9BM0JFTDtHQTJCbUQ7WUFPbkRNLG1CQUFtQmw0RCxHQUFFbTREO0lBQ3ZCLE9BbkNFUCxVQStCRixrQ0FHcUI1M0QsR0FBRW00RDtHQUNnQjtZQTJCakNDLFdBV1VoQyxJQVBkM2xEO0lBSEYsVUFHRUE7S0FRTyxJQUFMMG5ELEtBL1RBN0Isa0JBOFRZRjtLQUVoQixjQURJK0I7ZUE5UkF4Qix3QkE2UllQOzttQkFDWitCO2tCQTlSQXhCLHdCQTZSWVAsS0FMZGlDLGdCQUtjakM7aUJBdkNkOEIsdUJBd0NFQzs7Y0FSRjFuRCxLQUFLLE9BRUw0bkQsZ0JBS2NqQyxJQVBkM2xEO0lBM0JGO0tBQVEsSUFBSnpRLElBdlNBcTJELFVBeVVZRCxLQWpDVCxXQWlDU0E7Z0JBakNUO0tBQXVCLFdBRDFCcDJEOzs7Ozs7O01BS0s7O0tBaFFMMjJELHdCQTZSWVA7O0dBUFc7WUFFekJpQyxnQkFBZ0JqQyxJQUFHcDJEO0lBQ1osSUFBTG00RCxLQTFUQTdCLGtCQXlUY0Y7V0FDZCtCLE9BRGlCbjRELElBeFJqQjIyRCx3QkF3UmNQLE1BbENoQjhCLG1CQWtDbUJsNEQsR0FDakJtNEQ7R0FFbUI7WUFZckJHLFdBQVdsQyxJQUFLLE9BQUEsZ0JBRWhCUSxhQUZXUixRQUE0QjtZQUl2Q21DLFdBQVduQztJQUNQLElBR0poNUQsSUFOQXc1RCxhQUVXUjtnQ0FJWGg1RDs7Z0JBQUFBO2dCQTNGQXc2RCxVQTJGZSxrQ0FBZng2RDs7O0dBQXdEO1lBYXhEbzdEO0lBQTZCOzs7O1FBQ3RCOztRQUNBOztRQUNBOztRQUNBOztRQUNBOzs7UUFDTTs7SUFDUixNQUFBO0dBQVk7WUFNakJDLGtCQUFrQkMsTUFBS3RDO0lBQ3pCLE9BRG9Cc0M7O09BT087UUFBQSxPQXZDekI5QixhQWdDdUJSO1FBQ3JCdnpDLE1BTWdCOzs7T0FGTztRQUFBLE9BckN6Qit6QyxhQWdDdUJSO1FBQ3JCdnpDLE1BSWdCOzs7T0FETztRQUFBLE9BcEN6Qit6QyxhQWdDdUJSO1FBQ3JCdnpDLE1BR2dCOzs7T0FFTztRQUFBLE9BdEN6Qit6QyxhQWdDdUJSO1FBQ3JCdnpDLE1BS2dCOzttQkFMaEJBLE1BakNGK3pDLGFBZ0N1QlI7O0lBUXpCLElBQUluM0QsSUFBSixzQkFQSTRqQjtJQVFRLFNBRFI1akIsWUFDUSxnQkFSUjRqQjtLQVFxQyxPQUFBLDhCQVJyQ0EsUUFPQTVqQjtJQUM0QixPQVI1QjRqQjtHQVE2RDtZQVEvRDgxQyxZQUFZdkM7SUFBSyxPQUFBLDZCQWpEakJRLGFBaURZUjtHQUF3QztZQW1DaER3Qyx3QkFBd0JqbUMsT0FBTXlqQztJQUNwQyxJQUQ4Qmh2QixVQUFBelU7SUFDOUI7Y0FEOEJ5VSxTQUNaLE9BRFlBO0tBRXRCLElBQUpwbkMsSUEzYUFxMkQsVUF5YWdDRDtLQUdqQyxHQUhpQ0EsT0FHWixPQUhNaHZCO2NBRTFCcG5DO2dCQUFBQTtPQU9VLElBVGdCK3ZDLFVBNVcxQmduQixZQTRXMEIzdkIsU0FBTWd2QixLQUFOaHZCLFVBQUEySTs7OzttQkFFMUIvdkM7TUFJVSxJQU5nQitvRCxVQTFXMUJpTyxXQTBXMEI1dkIsU0FBTWd2QixJQUVoQ3AyRCxJQUYwQm9uQyxVQUFBMmhCOzs7S0FXdkIsT0FYdUIzaEI7O0dBV2xCO1lBR1Z5eEIsd0JBQXdCbG1DLE9BQU15akM7SUFDaEMsU0FEMEJ6akMsT0FDUixPQWxMaEJtbEM7SUFtTE0sSUFBSjkzRCxJQTlhQXMyRCxrQkE0YTRCRjtXQUU1QnAyRDtLQU1RLE9BL0xWNDNELFVBK0xVLGtDQU5SNTNEO0lBR1UsSUFBUm9uQyxVQTdYRjR2QixXQXdYc0Jya0MsT0FBTXlqQyxJQUU1QnAyRDtJQUlGLE9BcEJJNDRELHdCQW1CQXh4QixTQUwwQmd2QjtHQVFvQztZQXFCbEUwQyxnQkFBZ0JDLE9BQU1DLFFBQU9qUSxTQUFNcU47SUFHckMsU0FIK0JyTixTQUdiLE9Bak5oQitPO0lBa05NLElBQUpybkQsTUE3Y0E2bEQsa0JBeWNpQ0Y7SUFLbEMsS0FBQSxXQUxxQjRDLFFBSXBCdm9EO0tBS1EsT0E3TlZtbkQsVUE2TlUsa0NBTFJubkQsS0FKY3NvRDtJQU1KLElBckJNRSxVQXRZaEJqQyxXQXFaMkJqTyxTQUFNcU4sSUFJakMzbEQsTUFuQmdCa2lCLFFBQUFzbUM7SUFDbEI7Y0FEa0J0bUMsT0FDQSxPQURBQTtLQUVWLElBR04zeUIsSUExY0FxMkQsVUFvZGlDRDtLQVpoQyxHQVlnQ0EsT0FaWCxPQUhOempDO0tBS1QsR0FBQSxXQVVhcW1DLFFBVnBCaDVEO01BQ1ksSUFOSW9uQyxVQXRZaEI0dkIsV0FzWWdCcmtDLE9BZWlCeWpDLElBVmpDcDJELElBTGdCMnlCLFFBQUF5VTs7Z0JBS2hCcG5DLEdBTUssT0FYVzJ5QjtNQVNKLElBVElvZCxVQXhZaEJnbkIsWUF3WWdCcGtDLE9BZWlCeWpDLEtBZmpCempDLFFBQUFvZDs7O0dBd0J1RDtZQUd6RW1wQix1QkFBa0Isb0NBRVI7R0FHUSxTQUFsQkM7SSxPQWpCQUwsNEJBWUFJOztZQU9BRSxzQkFBaUIsb0NBRVA7R0FHTyxTQUFqQkM7SSxPQXhCQVAsMkJBbUJBTTs7WUFPQUU7SUFBZ0I7Ozs7Ozs7S0FDd0I7O0lBQ25DO0dBQUs7R0FHYSxTQUF2QkM7SSxPQS9CQVQsaUNBMEJBUTs7WUFVQUUsVUFBVTdtQyxPQUFNeWpDO0lBQ2xCLElBQUlwMkQsSUE5ZUFzMkQsa0JBNmVjRixLQUNWLFdBQUpwMkQ7Ozs7UUFFSyxPQTViTGczRCxXQXliUXJrQyxPQUFNeWpDLElBQ2RwMkQ7O2dCQUdLLE9BN2JMZzNELFdBeWJRcmtDLE9BQU15akMsSUFDZHAyRDs7SUFJRyxPQUxLMnlCO0dBS0E7WUFHVjhtQywrQkFBbUM5bUMsT0FBTXlqQztJQUMvQixJQUFSaHZCLFVBVEZveUIsVUFRbUM3bUMsT0FBTXlqQztJQUUzQyxPQTNFRXlDLHdCQTBFRXp4QixTQUR1Q2d2QjtHQUVUO1lBMkJoQ3NELG9CQUFvQmhCLE1BQUszb0IsU0FBTXFtQjtJQUNqQyxPQURzQnNDOztPQUVKLE9BMURoQlMsZ0JBd0R5QnBwQixTQUFNcW1COztPQUdmLE9BaENoQnFELCtCQTZCeUIxcEIsU0FBTXFtQjs7T0FKckIsSUFoQlFodkIsVUFqQmxCb3lCLFVBcUN5QnpwQixTQUFNcW1CLEtBbEIvQnAyRCxJQWhnQkVzMkQsa0JBa2hCNkJGO2lCQWxCL0JwMkQsR0FVSyxPQTlGTDY0RCx3QkFrRmtCenhCLFNBb0JhZ3ZCO09BakJuQixJQUFSempDLFFBN2NGcWtDLFdBMGNnQjV2QixTQW9CYWd2QixJQWxCL0JwMkQ7T0FFQSxTQURJMnlCLE9BQ2MsT0FEZEE7T0FFSSxJQUFKbGlCLE1BOWdCRjRsRCxVQTZoQjZCRDtPQWQ1QixHQWM0QkEsT0FkUCxPQUhwQnpqQzs7O2lCQUVBbGlCO29CQUFBQTtVQUlLLE9BdENUNG9ELGVBN2FFckMsV0E2Y0Vya0MsT0FpQjJCeWpDLElBZjNCM2xELE1BZTJCMmxEO29CQWYzQjNsRDs7O21CQUFBQTtrQkFBQUEsS0FLSyxPQTlDVDBvRCxnQkF0YUVuQyxXQTZjRXJrQyxPQWlCMkJ5akMsSUFmM0IzbEQsTUFlMkIybEQ7O1FBVHhCLE9BM0dId0Msd0JBbUdBam1DLE9BaUIyQnlqQzs7T0FaaEIsT0E5QmZtRCxxQkFwYkV2QyxXQTZjRXJrQyxPQWlCMkJ5akMsSUFmM0IzbEQsTUFlMkIybEQ7O09BS2YsT0F0RGhCaUQsZUFpRHlCdHBCLFNBQU1xbUI7O09BTWYsT0E1R2hCeUMsd0JBc0d5QjlvQixTQUFNcW1CO2VBT2YsT0FqRGhCbUQscUJBMEN5QnhwQixTQUFNcW1COztHQU9jO1lBTTdDdUQscUJBQXFCaG5DLE9BQU15akM7SUFDN0IsU0FEdUJ6akMsT0FDTCxPQURLQTtJQUVmLElBR04zeUIsSUEvaUJFcTJELFVBMGlCeUJEO0lBRzFCLE9BSDBCQTtjQUFOempDOztnQkFLckIzeUI7Z0JBTHFCMnlCO2dCQWpJakJpbUMsd0JBMVdGNUIsV0EyZW1CcmtDLE9BQU15akMsSUFLM0JwMkQsSUFMMkJvMkQ7R0FPakI7WUFJVndELG1CQUFtQmpuQyxPQUFNeWpDO0lBQzNCLFNBRHFCempDLE9BQ0gsT0FER0E7SUFFYixJQUFKM3lCLElBdmpCQXEyRCxVQXFqQnVCRDtJQUd4QixHQUh3QkEsT0FHSCxPQUhIempDO2NBRWpCM3lCLGFBQUFBLEdBS0csT0FQYzJ5QjtJQU1uQixPQTNEQThtQywrQkFqY0V6QyxXQXNmaUJya0MsT0FBTXlqQyxJQUV2QnAyRCxJQUZ1Qm8yRDtHQU9mO1lBMkNWeUQsV0FBVzlwQixTQUFNK3BCLFdBQVUxRDtJQUM3QjtLQXBDSXpqQyxRQTVFRjZtQyxVQStHV3pwQixTQUFnQnFtQjtLQUN6Qmh2QixVQS9MRXd4Qix3QkEySkZqbUMsT0FtQ3lCeWpDO0lBRTdCLFNBRElodkIsU0FDYyxXQURkQSxTQURlMHlCO0lBR1gsSUFBSjk1RCxJQTFtQkFxMkQsVUF1bUJ5QkQ7SUFJMUIsR0FKMEJBLE9BSUwsV0FIcEJodkIsU0FEZTB5QjtjQUdmOTVELEdBU0YsV0E5REE0NUQsbUJBbURFeHlCLFNBRHlCZ3ZCLEtBQVYwRDtJQU9MO0tBQVIvUSxVQS9pQkZpTyxXQXlpQkE1dkIsU0FEeUJndkIsSUFHekJwMkQ7S0FLRSs1RCxjQUFZLDJCQURaaFIsU0FQYStRO0tBU2JiO09BRkFsUSxXQUNBZ1IsY0FyRUpKLHFCQXFFSUksYUFSdUIzRDtJQVUzQixXQTVEQXdELG1CQTJESVgsU0FUdUI3QyxLQVF2QjJEO0dBSWtDO1lBR3RDQyw4QkFBOEJybkMsT0FBTXlqQyxJQUFHanRELE9BQU1yTztJQUMvQyxTQUFJb1AsVUFBVWxLO0tBQ1osWUFEWUE7ZUFBQUE7dUNBQUFBO0lBSUo7SUFDVjtLQUFJVSxNQUFKLHNCQU4rQzVGO0tBTzNDc3NDLGNBUDRCelU7S0FRaEMsT0FGSWp5QjtLQUNROztTQUNaeEI7O01BQ1UsSUFBSmMsSUEvbkJGcTJELFVBc25Ca0NELEtBVWxCLE9BVGhCbHNELFVBUzBCLGdCQVZpQnBQLEtBUS9Db0U7U0FQSWdMLFVBUUVsSyxhQUNxQyxXQVZGbUo7ZUFPckNpK0IsWUFJaUIsV0FYb0JqK0I7TUFPckNpK0IsYUE5akJBNHZCLFdBOGpCQTV2QixZQVBrQ2d2QixJQVNoQ3AyRDtNQUROLFdBQUFkO2tCQUFBQTtVQUFBQTs7O1dBRElrb0M7R0FPRTtZQUdKNnlCLGVBQWV0bkMsT0FBTW1uQyxXQUFVMUQ7SUFDakMsaUJBRGlCempDLDhCQXRuQmI0akMsYUFzbkI2Qkg7SUFDakIsU0E5V2Q2QjtJQStXVTtLQUFSN3dCLFVBakpGb3lCLFVBK0llN21DLE9BQWdCeWpDO2tCQUU3Qmh2QjtvQkF4bkJBbXZCLGFBc25CNkJIO0lBR2pCLFNBaFhkNkI7SUFpWEksSUFDSmo0RCxJQTVvQkVxMkQsVUF1b0I2QkQ7OztjQUsvQnAyRDtNQURJLGVBQ0pBOzs7T0E2Qlk7UUFBUit2QyxVQTFtQkZpbkIsV0Ewa0JBNXZCLFNBRjZCZ3ZCLElBSy9CcDJEO3FCQTZCSSt2Qzt1QkF4cEJGd21CLGFBc25CNkJIO09BbUNmLFNBaFpoQjZCO09BZ1o4QyxPQXBEOUMrQjtnQkFtRElqcUIsU0FsQzJCcW1CLElBN1cvQjZCOzs7OztnQkFrWEFqNEQ7T0FDWTtRQUFSaTVELFVBOWtCRmpDLFdBMGtCQTV2QixTQUY2Qmd2QixJQUsvQnAyRDtxQkFDSWk1RDt1QkE1bkJGMUMsYUFzbkI2Qkg7T0FPZixTQXBYaEI2QjtPQXFYWTtRQUFSaUM7VUF6QkpGLDhCQXVCSWYsU0FOMkI3QyxJQTdXL0I2QjtPQXNYZ0IsU0FEWmlDLGFBOW5CRjNELGFBc25CNkJIO1FBVVgsV0FqcEJsQkMsVUF1b0I2QkQ7Ozs7Ozs7OztjQVV6QitELFVBOUpOWixxQkE0SklXLFNBUjJCOUQ7OzthQVV6QitELFVBRkZEOztRQUtjLFNBSFpDLGFBaG9CSjVELGFBc25CNkJIO1NBY1QsSUFDZDNsRCxNQXRwQk40bEQsVUF1b0I2QkQ7bUJBZXZCM2xEO1VBQ1ksSUFBUjJwRCxVQXhsQlZwRCxXQWtsQkltRCxTQVZ5Qi9ELElBZXZCM2xEOzs7V0FFZ0IsU0FEWjJwRCxhQXRvQlY3RCxhQXNuQjZCSDtZQWtCZixZQXpwQmRDLFVBdW9CNkJEOzs7O2NBcUJIO2VBQVoyRCxjQUFZLDJCQUxoQkssU0FoQlNOO2VBZ0JUTztpQkFBQUQ7b0JBS0lMLGNBektoQlIscUJBeUtnQlEsYUFyQmUzRDs7OztpQkFnQm5CaUUsV0FBQUQ7O2dCQUFBRSxVQUFBRDs7O2VBQUFDLFVBQUFGOztjQUZKRyxVQUVJRDs7O2NBRkpDLFVBSkZKO1NBZWMsU0FYWkksYUFwb0JOaEUsYUFzbkI2Qkg7VUEwQm5CLElBQ0oxbEQsTUFscUJOMmxELFVBdW9CNkJEO29CQTJCdkIxbEQsZUFBQUEsS0FJSyxPQWpCTDZwRDtVQWNZO1dBQVJDLFVBcG1CVnhELFdBc2xCTXVELFNBZHVCbkUsSUEyQnZCMWxEO3dCQUNJOHBEOzBCQWxwQlZqRSxhQXNuQjZCSDtVQTZCUCxTQTFZeEI2QjtVQTBZc0QsT0FwS3REd0IsK0JBbUtZZSxTQTVCbUJwRTs7U0F5Qm1CLE9BWDFDbUU7O1FBRHdDLE9BSDFDSjs7T0FEd0MsT0FEMUNEOztnQkFISmw2RDs7S0FpQ1k7TUFBUitvRCxVQTltQkZpTyxXQTBrQkE1dkIsU0FGNkJndkIsSUFLL0JwMkQ7bUJBaUNJK29EO3FCQTVwQkZ3TixhQXNuQjZCSDtLQXVDZixTQXBaaEI2QjtLQW9aOEMsT0F4RDlDK0I7Y0F1RElqUixTQXRDMkJxTixJQTdXL0I2Qjs7SUFzWkssT0F0WkxBO0dBc1pxQjtZQUdyQndDLHFCQUFxQjluQyxPQUFNbW5DLFdBQVUxRDtJQUN2QyxpQkFEdUJ6akMsOEJBbHFCbkI0akMsYUFrcUJtQ0g7SUFDdkIsU0E5WmQ0QjtJQStaVTtLQUFSNXdCLFVBNVFFd3hCLHdCQTBRaUJqbUMsT0FBZ0J5akM7a0JBRW5DaHZCO29CQXBxQkFtdkIsYUFrcUJtQ0g7SUFHdkIsU0FoYWQ0QjtJQWlhTSxJQUFKaDRELElBdnJCQXEyRCxVQW1yQm1DRCxLQUkvQixXQUFKcDJEOzs7TUFHVTtPQUFSK3ZDLFVBM25CRmluQixXQXNuQkE1dkIsU0FGbUNndkIsSUFJbkNwMkQ7T0FNRSs1RCxjQUFZLDJCQUhaaHFCLFNBUHVCK3BCO09BYXZCWSxrQkF0SkpmLHFCQW1KSUksYUFWaUMzRDtPQWdCakN1RSxhQU5BWixjQUdBVztPQUtBM1IsVUFYQWhaLFVBU0E0cUI7TUFHSixPQWpKQWYsbUJBZ0pJN1EsU0FsQmlDcU47OztxQ0FxQnJDLE9BbkpBd0QsbUJBZ0lFeHlCLFNBRm1DZ3ZCO0lBc0JoQyxPQW5iTDRCO0dBbWJpQjtZQUdqQjRDLGdCQUFnQmpvQyxPQUFNbW5DLFdBQVUxRDtJQUNsQyxpQkFEa0J6akMsOEJBM3JCZDRqQyxhQTJyQjhCSDtJQUNsQixTQXZiZDRCO0lBd2JVO0tBQVI1d0IsVUF0TkZveUIsVUFvTmdCN21DLE9BQWdCeWpDO2tCQUU5Qmh2QjtvQkE3ckJBbXZCLGFBMnJCOEJIO0lBR2xCLFNBemJkNEI7SUEwYkksSUFDSmg0RCxJQWp0QkVxMkQsVUE0c0I4QkQ7YUFLaENwMkQ7YUFBQUE7TUFpQ1k7T0FBUit2QyxVQW5yQkZpbkIsV0Erb0JBNXZCLFNBRjhCZ3ZCLElBS2hDcDJEO29CQWlDSSt2QztzQkFqdUJGd21CLGFBMnJCOEJIO01BdUNoQixTQTdkaEI0QjtNQTZkOEMsT0FoRTlDeUMscUJBK0RJMXFCLFNBdENrQitwQixXQUFVMUQ7OztrQkFLaENwMkQ7S0FDWTtNQUFSK29ELFVBbnBCRmlPLFdBK29CQTV2QixTQUY4Qmd2QixJQUtoQ3AyRDttQkFDSStvRDtxQkFqc0JGd04sYUEyckI4Qkg7S0FPaEIsU0E3YmhCNEI7S0E4Yk0sSUFDSnZuRCxNQXJ0QkE0bEQsVUE0c0I4QkQ7ZUFTOUIzbEQsZUFBQUE7TUEwQkEsT0E1REZncUQscUJBK0JJMVIsU0FOa0IrUSxXQUFVMUQ7S0FVbEI7TUFBUjZDLFVBdnBCSmpDLFdBbXBCRWpPLFNBTjRCcU4sSUFTOUIzbEQ7bUJBQ0l3b0Q7cUJBcnNCSjFDLGFBMnJCOEJIO0tBV2QsU0FqY2xCNEI7S0FrY2M7TUFBUmtDLFVBck9OWCxxQkFtT01OLFNBVjBCN0M7bUJBWTFCOEQ7cUJBdnNCSjNELGFBMnJCOEJIO0tBYWQsU0FuY2xCNEI7S0FvY29CLElBQ2R0bkQsTUEzdEJKMmxELFVBNHNCOEJELEtBY1osV0FDZDFsRDs7Ozs7OztTQUNZLElBQVJ5cEQsVUE3cEJSbkQsV0F5cEJJa0QsU0FaMEI5RCxJQWUxQjFsRDs7O1VBRWdCLFNBRFp5cEQsYUEzc0JSNUQsYUEyckI4Qkg7V0FrQmxCLFlBOXRCWkMsVUE0c0I4QkQ7Ozs7YUFxQk47Y0FBWjJELGNBQVksMkJBTGhCSSxTQWhCWUw7Y0FnQlpPO2dCQUFBRjttQkFLSUosY0E5T2RSLHFCQThPY1EsYUFyQmtCM0Q7Ozs7Z0JBZ0J0QmlFLFdBQUFGOztlQUFBQyxVQUFBQzs7O2NBQUFELFVBQUFEOzthQUFBRyxVQUFBRjs7Ozs0Q0FBQUUsVUFKSko7V0FFQUssVUFwY052Qzs7O1VBb2NNdUMsVUFFSUQ7O0tBVVEsU0FaWkMsYUF6c0JKaEUsYUEyckI4Qkg7TUEyQnRCLElBQ0p6bEQsTUF4dUJKMGxELFVBNHNCOEJEO2dCQTRCMUJ6bEQsZUFBQUEsS0FJSyxPQWxCTDRwRDtNQWVZO09BQVJDLFVBMXFCUnhELFdBMnBCSXVELFNBZDBCbkUsSUE0QjFCemxEO29CQUNJNnBEO3NCQXh0QlJqRSxhQTJyQjhCSDtNQThCVixTQWhkdEI2QjtNQWdkb0QsT0ExT3BEd0IsK0JBeU9VZSxTQTdCc0JwRTs7S0EwQmdCLE9BWjFDbUU7O0lBK0JELE9BbmVMdkM7R0FtZWlCO1lBU2pCNkMsWUFBWUMsS0FDRG5vQyxPQURXeWpDO0lBQ3hCLElBQWFodkIsVUFBQXpVO0lBQ1g7Y0FEV3lVLFNBQ08sT0FEUEE7S0FFSCxJQUFKcG5DLElBcndCRnEyRCxVQWt3Qm9CRDtLQUluQixHQUptQkEsT0FJRSxPQUhiaHZCO1VBREMwekI7TUFTUixXQU5BOTZEOzs7Ozs7O09BUVksSUFWTCtvRCxVQXBzQlRpTyxXQW9zQlM1dkIsU0FEV2d2QixJQUdsQnAyRCxJQUZPb25DLFVBQUEyaEI7OztNQVN1QixPQVR2QjNoQjs7U0FLRjMyQixNQU5HcXFEO1FBR1I5NkQsTUFHS3lRLEtBTFgsT0Ezc0JJcW1ELFVBMnNCUzF2QixTQURXZ3ZCO0tBT0gsSUFOUnJtQixVQXBzQlRpbkIsV0Fvc0JTNXZCLFNBRFdndkIsSUFHbEJwMkQsSUFGT29uQyxVQUFBMkk7O0dBV0g7WUFxQ1JnckIsMEJBQ0UvNkQ7SUFBSixhQUFJQSxJQUFBQSxtQkFBQUEsSUFBQUEsYUFBQUE7R0FVaUI7WUFlbkJnN0QsZ0JBQWdCakQsU0FBUXBsQyxPQUFNeWpDO0lBQ2hDLFNBRDBCempDLE9BQ1IsT0F4a0JoQm1sQyxpQkF1a0JnQkM7SUFFVixJQUFKLzNELElBLzBCQXEyRCxVQTYwQjRCRDtJQUc3QixPQUg2QkEsUUE3a0I5QndCLFVBZ0JBLGtDQTZqQmdCRyxZQUVkLzNEO0dBRUg7R0FHNEIsU0FBM0JpN0Q7SSxPQVBBRDs7R0FRNkIsU0FBN0JFO0ksT0FSQUY7O1lBVUFHLG9CQUFvQnhvQyxPQUFNeWpDO0lBQ3RCLElBbkRrQmdGLEtBK0N0QkgseUJBR29CdG9DLE9BQU15akM7OztjQWxESmdGO2NBQUFBO2VBQUFBO09BNkRiO1FBTkxDOztXQUNNLElBRU5yN0QsSUEvMkJGbTJELFVBdTJCd0JDO3NCQVF0QnAyRCxlQTdsQko2M0QsaUJBNmxCSTczRCxLQUFBQTtVQUN1QjtRQTNERnM3RCxPQXVEckJEO1FBdkR3QkUsT0F1RHhCRjtRQXRERnI3RDttQkFEb0JvN0QsMkJBQUdFO2FBQUdDOzs7O2dCQUMxQnY3RCxZQUFBQSxjQVFKLHVCQVJJQTs7Z0JBdGlCRjQzRCxVQTRpQkUsa0NBUG9Cd0QsSUFBR0UsTUFBR0M7O09BK0RPLE9BcnlCakN2RSxXQXd4QmtCcmtDLGVBQU15akM7O01BQ3RCLGVBbkRrQmdGOzs7O1NBc0ViO1VBTExJOzthQUNGLElBQUl4N0QsSUF2M0JKbTJELFVBdTJCd0JDLEtBZ0JoQixPQUFKcDJEOzs7Ozs7O2NBRTJDLE9BRjNDQTs7YUFHRyxPQXhtQlQ2M0QsaUJBcW1CTTczRDtZQUdxQjtVQXpDRHNLLEtBcUN0Qmt4RDtVQXJDeUJqeEQsS0FxQ3pCaXhEO1VBbENDLE9BakJMVCwwQkFjNkJ4d0Q7VUFDM0JrRyxZQWZGc3FELDBCQWMwQnp3RDs7O2tCQUN4Qm1HLGNBQUFBO3NCQU1KLHVCQU5JQTs7O3FCQWxrQkZtbkQsVUF1a0JFLGtDQU53QnR0RCxJQUFHQzs7U0E0Q00sT0E5eUJqQ3lzRCxXQXd4QmtCcmtDLGVBQU15akM7Ozs7Ozs7OztvQkFsREpnRixXQUFBQTs7O2dCQUFBQTtnQkFBQUE7ZUFBQUE7Ozs7Ozs7OztxQkFBQUE7aUJBQUFBOztLQXFETyxPQTN4QjNCcEUsV0F3eEJrQnJrQyxPQUFNeWpDOztJQXdCMUIsT0E3bUJBeUIsaUJBbWlCc0J1RDtHQTBFSjtZQTJCbEJLLGlCQUVpQjlvQyxPQUZNeWpDO2FBT3JCc0YscUJBQVUvb0M7S0FDWixJQURZeVUsVUFBQXpVO0tBQ1o7TUFBTSxJQUdKM3lCLElBaEVGazdELDJCQTREWTl6QixTQVBXZ3ZCO2dCQVdyQnAyRCxHQVRKLE9BLzBCSSsyRCxZQW8xQlUzdkIsU0FQV2d2QjtnQkFXckJwMkQ7T0FEdUI7UUFHUit2QyxVQTExQmZnbkIsWUFvMUJVM3ZCLFNBUFdndkI7UUFjakIsUUFuRU44RSwyQkFrRWlCbnJCLFNBYk1xbUI7O1FBZ0JELFdBNzFCcEJXLFlBMDFCZWhuQixTQWJNcW1CO1FBZ0JEO1NBQUEsT0FBQSx1QkFRcEJ1Rjs7UUFSb0IsT0FRcEJBOzs7UUFUcUIsSUFJUjFDLFVBaDJCYmxDLFlBMDFCZWhuQixTQWJNcW1CO2tCQXJEdkI4RSwyQkF3RWVqQyxTQW5CUTdDO1NBcUJELFdBbDJCcEJXLFlBZzJCYWtDLFNBbkJRN0M7U0FxQkQ7VUFBQSxPQUFBLHVCQUdwQnVGOztTQUhvQixPQUdwQkE7O1FBRmUsSUFmTHhCLFVBbDFCVm5ELFdBODFCYWlDLFNBbkJRN0MsU0FPWGh2QixVQUFBK3lCOzs7UUFVSyxJQVZMRCxVQTFEWmlCLG9CQWdFaUJwckIsU0FiTXFtQixLQU9YaHZCLFVBQUE4eUI7OztPQUlLLElBSkxuUixVQWwxQlZpTyxXQWsxQlU1dkIsU0FQV2d2QixJQVdyQnAyRCxJQUpVb25DLFVBQUEyaEI7O0lBSXFDO2FBSi9DNlMsVUFBVWpwQyxPLHVCQUFWK29DLGVBQVUvb0M7YUFpQlZncEMscUJBQVlocEM7S0FDZCxJQURjeVUsVUFBQXpVO0tBQ2Q7Z0JBOUVBdW9DLDJCQTZFYzl6QixTQXhCU2d2QjtPQTJCaEI7UUFBQSxPQUFBLHVCQXBCTHNGLGlCQWlCWXQwQjs7T0FHUCxPQXBCTHMwQix1QkFpQll0MEI7O01BRU8sSUFGUDJJLFVBcjJCWmduQixZQXEyQlkzdkIsU0F4QlNndkIsS0F3QlRodkIsVUFBQTJJOztJQUdRO0lBeEJoQixJQUVKL3ZDLElBcDRCQXMyRCxrQkErM0JxQkY7a0JBS3JCcDJEO2NBRUE0N0QsVUFwMUJBN0UsWUErMEJlcGtDLE9BRk15akM7Y0F4bUJ2QjhCLHVCQTZtQkVsNEQ7R0F3Qlk7WUFrQmQ2N0QsdUJBQXVCamdFLFVBQVNrZ0UsWUFBV25wQyxPQUFNeWpDO2FBQzNDMkYsV0FBVzc4RCxHQUFFNDdEO0tBQ25CLElBRGlCMzdELE1BQUFEO0tBQ2pCO01BQVEsSUFBSmMsSUEzN0JGcTJELFVBeTdCK0NELGVBQ2hDajNEOztPQUVELGNBSGlDaTNEOztRQUk5QztTQUFBLE1BQUEsa0NBSm9CeDZELFVBRW5Cb0U7U0FFRCxhQUZDQSxNQURlODZEOzs7Ozs7O01BMzNCakI5RCx1QkEwM0IrQ1osSUFFN0NwMkQ7VUFEYStULE1BQUE1VSxhQUFBQSxNQUFBNFU7O0lBTU87U0FQUStuRCxZQVN4QixPQVJGQyxXQURxQ3BwQztRQVV0QzN5QixJQVYyQjg3RDtJQUMxQkMsV0FEcUNwcEMsT0FVdEMzeUI7SUFFRSxjQVowQ28yRDtjQVkxQztJQUNJLElBQUwrQixLQXQ4Qko5QixVQXk3QitDRDtXQVU1Q3AyRCxNQUdDbTRELEtBMTVCSnhCLHdCQTY0QitDUCxNQXZwQmpEOEIsbUJBaXFCS2w0RCxHQUdDbTREO0dBR3dCO1lBSTlCNkQsZ0JBQWdCNUYsSUFJaEI3NEQ7SSxHQUFBQTtTQUhhSCxJQUdiRzs7UUFBQUEsb0JBQUssTUFBQSw0QkFBTEE7U0FIYUgsSUFHYkc7O0lBRlEsSUFBSjJCLElBNzZCRnczRCxXQTI2QmNOO0lBR04sT0FodEJWd0IsVUFndEJVLGtDQUROMTRELEdBRFM5Qjs7WUFlYjYrRCxpQkFBaUJ2cEM7SUFBVSxLQUFWQSxTQUNUO1FBQ0hDLFFBRllEO0lBRUgsT0FBVEM7R0FBYztZQUduQnVwQywwQkFBMEJDO0lBQzVCLFNBRDRCQSxRQUNLO0lBQ3JCO0tBQU5yaEUsTUFBTSxtQ0FGZ0JxaEU7S0FHdEJyQixNQUFNLGdCQUROaGdFO0tBRUErM0M7T0FBVTs0QkFGVi8zQyxRQUVKLHNCQUZJQTtJQUdKLFdBRklnZ0UsS0FDQWpvQjtHQUNRO1lBVVJ1cEIsK0JBNEVKdnlDLEdBekVFZ0o7SUFBTyxJQUFQOEQsUUFBQTlEO0lBQU87ZUFBUDhELG9CQXFDa0MsT0FBQSxXQW9DcEM5TTtZQXpFRThNOztZQUFBditCLE9BQUF1K0IsVUFBQUEsUUFBQXYrQjs7WUFBQUMsU0FBQXMrQixVQUFBQSxRQUFBdCtCOztZQUFBQyxTQUFBcStCLFVBQUFBLFFBQUFyK0I7O1lBQUFDLFNBQUFvK0IsVUFBQUEsUUFBQXArQjs7WUFBQUMsU0FBQW0rQixVQUFBQSxRQUFBbitCOztZQUFBQyxTQUFBaytCLFVBQUFBLFFBQUFsK0I7O1lBQUFDLFNBQUFpK0IsVUFBQUEsUUFBQWorQjs7WUFBQUMsU0FBQWcrQixVQUFBQSxRQUFBaCtCOztZQUFBQyxTQUFBKzlCLFVBQUFBLFFBQUEvOUI7O1lBQUFFLFNBQUE2OUIsVUFBQUEsUUFBQTc5Qjs7WUFBQUUsU0FBQTI5QixVQUFBQSxRQUFBMzlCOztZQUFBQyxVQUFBMDlCLFVBQUFBLFFBQUExOUI7O1lBQUFDLFVBQUF5OUIsVUFBQUEsUUFBQXo5Qjs7WUFBQUMsVUFBQXc5QixVQUFBQSxRQUFBeDlCOztRQWtDc0M7U0FEaEJDLFVBakN0QnU5QjtTQWlDZTM3QixRQWpDZjI3QjtTQWtDc0MsTUFBQSxtQ0FEdkIzN0I7U0FDWSxNQUFBO1FBQTVCO1NBQUEsT0FBQTtrQkFNRHFoRSxpQ0FpQ0F4eUMsUUF4Q3dCendCOztRQUN2QixPQU1EaWpFLHVDQWlDQXh5QyxRQXhDd0J6d0I7O1lBakN0QmdDLFVBQUF1N0IsVUFBQUEsUUFBQXY3Qjs7WUFBQUMsVUFBQXM3QixVQUFBQSxRQUFBdDdCOztZQUFBQyxVQUFBcTdCLFVBQUFBLFFBQUFyN0I7O2tCQUFBcTdCOztTQTRCc0I7VUFEb0JuN0IsVUEzQjFDbTdCO1VBMkJnQ1E7VUEzQmhDdUksUUE0QnNCLHdDQURVdkksT0FBVTM3QjtVQTNCMUNtN0IsUUFBQStJOztTQThCc0I7VUFEb0Joa0MsVUE3QjFDaTdCO1VBNkJnQ2tKO1VBN0JoQ0csUUE4QnNCLHdDQURVSCxPQUFVbmtDO1VBN0IxQ2k3QixRQUFBcUo7OztZQUNLWCxXQURMMUk7UUFFRixnQkFBSTJsQztrQkFDRUMsTUFBTUM7VUFBZSxPQUFFLFdBc0U3QjN5QyxPQXZFSXl5QyxRQUNRRTtTQUE4QztTQUN4RCxPQVBFQyxvQkFNRUYsT0FGQ2w5QixVQUc2Qjs7WUFKbEMxakMsVUFBQWc3QixVQUFBQSxRQUFBaDdCOztZQUFBRyxVQUFBNjZCLFVBQUFBLFFBQUE3NkI7O1lBQUFFLFVBQUEyNkIsVUFBQUEsUUFBQTM2Qjs7WUF5RUlDLFVBekVKMDZCLFVBeUVBejZCLE1BekVBeTZCO2tCQXlFQXo2QjtnQkFBQUE7O2dCQXpFQXk2QixRQXlFSTE2Qjs7Z0JBekVKMDZCLFFBeUVJMTZCOztZQUVOLGdCQUFJcWdFO3NCQUNFQyxNQUFNQztjQUFlLE9BQUUsV0FIN0IzeUMsT0FFSXl5QyxRQUNRRTthQUE4QzthQUN4RCxPQWhGRUMsb0JBK0VFRixPQUhBdGdFLFNBSXlCO3dCQTdFN0IwNkIsUUF5RUkxNkI7OztnQkFBSkM7O2dCQXpFQXk2QixRQXlFSTE2Qjs7Z0JBekVKMDZCLFFBeUVJMTZCOztnQkF6RUowNkIsUUF5RUkxNkI7O2dCQXpFSjA2QixRQXlFSTE2Qjs7Z0JBekVKMDZCLFFBeUVJMTZCOztnQkF6RUowNkIsUUF5RUkxNkI7O2dCQXpFSjA2QixRQXlFSTE2Qjs7Z0JBekVKMDZCLFFBeUVJMTZCOztnQkF6RUowNkIsUUF5RUkxNkI7O2dCQWdCbUJmLFVBaEJ2QmdCO1lBZ0JpQzthQUFBLE9BQUE7c0JBakRuQ21nRSxpQ0FpQ0F4eUMsR0FnQnlCM3VCLFNBaEJuQmU7O1lBZ0I2QixPQWpEbkNvZ0UsdUNBaUNBeHlDLEdBZ0J5QjN1QixTQWhCbkJlOztnQkF6RUowNkIsUUF5RUkxNkI7d0JBekVKMDZCLFFBeUVJMTZCOzs7b0JBekVKRSxVQUFBdzZCLFVBQUFBLFFBQUF4NkI7OztHQXFDdUM7WUF4Q3JDc2dFLG9CQTRFSjV5QyxHQXpFRWdKO0ksdUJBSEV1cEMseUJBNEVKdnlDLEdBekVFZ0o7O1lBd0NGd3BDLHFDQUdBeHlDLEdBQUU3dUIsT0FBTTYzQjtJQUFPLElBQWIzM0IsVUFBQUY7SUFBYTtlQUFiRTtNQXFCNkI7T0FBQSxPQUFBLHVCQW5FM0JraEUsMkJBOENKdnlDLEdBQVFnSjs7TUFxQnVCLE9BbkUzQnVwQyxpQ0E4Q0p2eUMsR0FBUWdKOztZQUFOMzNCOztZQUFBcTZCLFVBQUFyNkIsWUFBQUEsVUFBQXE2Qjs7WUFBQUMsVUFBQXQ2QixZQUFBQSxVQUFBczZCOztZQUFBQyxVQUFBdjZCLFlBQUFBLFVBQUF1NkI7O1lBQUFDLFVBQUF4NkIsWUFBQUEsVUFBQXc2Qjs7WUFBQUMsVUFBQXo2QixZQUFBQSxVQUFBeTZCOztZQUFBQyxVQUFBMTZCLFlBQUFBLFVBQUEwNkI7O1lBQUFDLFVBQUEzNkIsWUFBQUEsVUFBQTI2Qjs7WUFBQUMsVUFBQTU2QixZQUFBQSxVQUFBNDZCOztZQUFBQyxVQUFBNzZCLFlBQUFBLFVBQUE2NkI7O1FBdUJhO1NBRFkzOUIsT0F0QnpCOEM7U0FzQm9CMUIsTUF0QnBCMEI7U0FzQmVuQyxNQXRCZm1DO1NBdUJhLE1BQUEsbUNBREVuQztTQUNiRixLQUFLLHdDQURhVztTQXRCcEJ5OEIsV0F3QjBCLHdDQUR4QnA5QixJQUR1QlQ7U0F0QnpCOEMsVUFBQSs2Qjs7O1lBQUFFLFdBQUFqN0IsWUFBQUEsVUFBQWk3Qjs7WUFBQUMsV0FBQWw3QixZQUFBQSxVQUFBazdCOztZQUFBQyxXQUFBbjdCLFlBQUFBLFVBQUFtN0I7O1lBQ1FnSixXQURSbmtDO1FBRUYsZ0JBQUlvaEU7a0JBQ0VDLE1BQU1DO1VBQWUsT0FBRSxXQUg3QjN5QyxPQUVJeXlDLFFBQ1FFO1NBQThDO1NBQ3hELE9BUEZFLDBCQU1NSCxPQUZJbDlCLFVBREZ4TSxLQUlzQzs7WUFDNUIwTSxhQUxoQnJrQztRQU1GLGdCQUFJb2hFO2tCQUNFQyxNQUFNQztVQUFlLE9BQUUsV0FQN0IzeUMsT0FNSXl5QyxRQUNRRTtTQUE4QztTQUN4RCxPQVhGRSwwQkFVTUgsT0FGWWg5QixZQUxWMU0sS0FRc0M7OztHQWdCUTtZQTNCdEQ2cEMsMEJBR0E3eUMsR0FBRTd1QixPQUFNNjNCO0ksdUJBSFJ3cEMsK0JBR0F4eUMsR0FBRTd1QixPQUFNNjNCOztZQTJESjhwQyxXQUdKdkcsSUFBR3ZqQyxLQUFJK3BDO0lBQVcsSUFBZmptQyxRQUFBOUQ7SUFBZTtlQUFmOEQsb0JBd0pIO1lBeEpHQTs7WUFDRXYrQixPQURGdStCO1FBOWhDRHFnQyxjQThoQ0ZaLElBbGxDRUUsa0JBa2xDRkY7UUFHUSxJQUFKMWxELE1BN3dCSjRuRCxXQTB3QkFsQztRQUlBLFdBREkxbEQsS0FOQWlzRCxXQUdKdkcsSUFDS2grRCxNQURFd2tFOztRQU1QO1NBRFV2a0UsU0FMUHMrQjtTQXhPY3lRO1NBWWZ3MEI7b0JBQVVqcEM7WUFDTixJQUVKM3lCLElBaERGaTdELHlCQTZDWXRvQyxPQTROWnlqQzswQkF6TkVwMkQ7c0JBdjBCQSsyRCxZQW8wQlVwa0MsT0E0Tlp5akM7c0JBM3pCQThCLHVCQWttQkVsNEQ7V0FBOEI7U0FaOUJBLElBNzJCQXMyRCxrQkFrbENGRjtrQkFyT0VwMkQ7U0FEa0I7VUFHUjJ5QixRQTd6QlZva0MsWUF3ekJlM3ZCLFNBd09qQmd2QjtVQS9ORTNsRCxNQTFDRndxRCx5QkFzQ1l0b0MsT0FtT1p5akM7bUJBL05FM2xEO1VBR0FtckQsVUExQ0ZULG9CQTF4QkVwRSxZQTZ6QlVwa0MsT0FtT1p5akMsS0FBQUE7O1VBNU5Fd0YsVUFsMEJBNUUsV0EyekJVcmtDLE9BbU9aeWpDLElBL05FM2xEOzs7U0E1bEJGeW5ELHVCQXNsQkVsNEQ7UUE0T00sSUFBSjJRLE1BanhCSjJuRCxXQTB3QkFsQztRQVFBLFdBREl6bEQsS0FWQWdzRCxXQUdKdkcsSUFLVS85RCxRQUxIdWtFOztZQW1CQ2hqRSxNQW5CTCs4QixrQkFBQUE7Ozs7WUFXWTthQUQwQnArQjthQUFaZ0Q7YUFDZCxVQXRJZjJnRSwwQkFxSTZCM2dFO2FBQ3BCVDthQUFMZ2dFO2FBQ0ErQjt3QkFBS2xxQyxjQUFReWpDO2dCQUFLLE9Bdld0QnlFLGdCQXNXSUMsTUFDS25vQyxPQUFReWpDO2VBQW9DO2FBQ2pEMEcsZ0JBRktoaUUsS0FEZ0N2QztZQUl6QyxPQStJQXdrRTtxQkE3SkEzRyxJQWFJMEcsVUFiR0YsU0FtQkNoakUsUUFQSmlqRSxRQXB4QkpqRzs7OzthQXd4QkE7Y0FEMERwK0Q7Y0FBWDIrQjtjQUMzQzZsQzt5QkFBS3JxQyxjQUFReWpDO2lCQUFLLE9BM1d0QnlFLGlCQTJXU2xvQyxPQUFReWpDO2dCQUFvQzthQUNyRCxPQTRJQTJHO3NCQTdKQTNHO3NCQWlCa0Isd0NBRjZCai9CLE9BQVczK0I7c0JBZm5Eb2tFO3NCQW1CQ2hqRTs7c0JBSEpvakU7c0JBeHhCSnBHOztZQTR4QkE7YUFEMERuK0Q7YUFBWGluQzthQUMzQ3U5Qjt3QkFBS3RxQyxjQUFReWpDLElBQUssT0EvV3RCeUUsaUJBK1dTbG9DLE9BQVF5akMsSUFBb0M7WUFDckQsT0F3SUEyRztxQkE3SkEzRztxQkFxQmtCLHdDQUY2QjEyQixPQUFXam5DO3FCQW5CbkRta0U7cUJBbUJDaGpFOztxQkFDSnFqRTtxQkE1eEJKckc7O1FBZ3lCQTtTQURhdCtELFNBdkJWcStCO1NBd0JDdW1DLGdCQUFLdnFDLGNBQVF5akMsSUFBSyxPQW5YdEJ5RSxlQW1YU2xvQyxPQUFReWpDLElBQThCO1FBQy9DLE9Bb0lBMkcsZUE3SkEzRyxJQXVCYTk5RCxRQXZCTnNrRSxTQW1CQ2hqRSxRQUtKc2pFLE1BaHlCSnRHOztRQW95QkE7U0FEa0JsK0QsU0EzQmZpK0I7U0EyQlU5OEIsUUEzQlY4OEI7U0E0QkN3bUM7b0JBQUt4cUMsY0FBUXlqQyxJQUFLLE9BL090QnFGLGlCQStPUzlvQyxPQUFReWpDLElBQThCO1FBQy9DLE9BZ0lBMkc7aUJBN0pBM0csSUEyQmtCMTlELFFBM0JYa2tFLFNBMkJNL2lFLFVBQ1RzakUsUUFweUJKdkc7O1FBdXlCUTtTQURlaitELFNBOUJwQmcrQjtTQThCYzc4QixPQTlCZDY4QjtTQThCUzU4QixRQTlCVDQ4QjtTQThCRTM4QixRQTlCRjI4QjtTQXp0Qk8raEM7V0E1QlZGO2FBb3hCbUMsbUNBRDlCeCtEO1NBRURvakU7b0JBQUt6cUMsY0FBUXlqQztZQUFLLE9BaG1CdEJzRCxvQkF6SlVoQixNQXl2QkQvbEMsT0FBUXlqQztXQUFtQztRQUNQLE9BNEg3QzJHO2lCQTdKQTNHO2lCQThCdUJ6OUQ7aUJBOUJoQmlrRTtpQkE4Qks3aUU7aUJBQUtEO2lCQUVic2pFOzBCQXp2QldoSDtrQkFBSyxPQUFBLG1CQWZwQnFDLGtCQWVVQyxNQUFLdEM7OztRQTR2QlA7U0FEaUJ4OUQsU0FsQ3RCKzlCO1NBa0NnQjE4QixTQWxDaEIwOEI7U0FrQ1d6OEIsUUFsQ1h5OEI7U0FrQ0l4OEIsVUFsQ0p3OEI7U0Fwc0JTMG1DO1dBakRaN0U7YUF3eEJtQyxtQ0FENUJyK0Q7U0FFSG1qRTtvQkFBSzNxQyxjQUFReWpDO1lBQUssT0FwbUJ0QnNELG9CQXBJWTJELFFBd3VCSDFxQyxPQUFReWpDO1dBQW1DO1FBQ1AsT0F3SDdDMkc7aUJBN0pBM0c7aUJBa0N5Qng5RDtpQkFsQ2xCZ2tFO2lCQWtDTzFpRTtpQkFBS0Q7aUJBRWZxakU7MEJBeHVCYWxIO2tCQUFLLE9BQUEsbUJBcEN0QnFDLGtCQW9DWTRFLFFBQUtqSDs7O1FBMnVCVDtTQURxQnQ5RCxTQXRDMUI2OUI7U0FzQ29CdjhCLFNBdENwQnU4QjtTQXNDZXQ4QixRQXRDZnM4QjtTQXNDUXI4QixVQXRDUnE4QjtTQXJzQmE0bUM7V0FoRGhCL0U7YUE0eEJtQyxtQ0FEeEJsK0Q7U0FFUGtqRTtvQkFBSzdxQyxjQUFReWpDO1lBQUssT0F4bUJ0QnNELG9CQXJJZ0I2RCxRQTZ1QlA1cUMsT0FBUXlqQztXQUFtQztRQUNQLE9Bb0g3QzJHO2lCQTdKQTNHO2lCQXNDNkJ0OUQ7aUJBdEN0QjhqRTtpQkFzQ1d2aUU7aUJBQUtEO2lCQUVuQm9qRTswQkE3dUJpQnBIO2tCQUFLLE9BQUEsbUJBbkMxQnFDLGtCQW1DZ0I4RSxRQUFLbkg7OztRQWd2QmI7U0FEaUJwOUQsU0ExQ3RCMjlCO1NBMENnQnA4QixTQTFDaEJvOEI7U0EwQ1duOEIsUUExQ1htOEI7U0EwQ0lsOEIsVUExQ0prOEI7U0Fuc0JTOG1DO1dBbERaakY7YUFneUJtQyxtQ0FENUIvOUQ7U0FFSGlqRTtvQkFBSy9xQyxjQUFReWpDO1lBQUssT0E1bUJ0QnNELG9CQW5JWStELFFBK3VCSDlxQyxPQUFReWpDO1dBQW1DO1FBQ1AsT0FnSDdDMkc7aUJBN0pBM0c7aUJBMEN5QnA5RDtpQkExQ2xCNGpFO2lCQTBDT3BpRTtpQkFBS0Q7aUJBRWZtakU7MEJBL3VCYXRIO2tCQUFLLE9BQUE7MkJBckN0QnFDLGtCQXFDWWdGLFFBQUtySDs7O2VBbXNCZHovQjs7O2VBOEMwQ3o5QixVQTlDMUN5OUIsVUE4Q29DMkosU0E5Q3BDM0osVUE4QytCOTdCLFFBOUMvQjg3QjtXQStDSCxPQThHQW9tQztvQkE3SkEzRztvQkE4QzZDbDlEO29CQTlDdEMwakU7b0JBOEMyQi9oRTtvQkFBS3lsQztvQkEvYnZDczZCO29CQXRVQWpDOzs7ZUEwd0I0Q3gvRCxVQW5EekN3OUIsVUFtRG1DOEosU0FuRG5DOUosVUFtRDhCMTdCLFFBbkQ5QjA3QjtXQW9ESCxPQXlHQW9tQztvQkE3SkEzRztvQkFtRDRDajlEO29CQW5EckN5akU7b0JBbUQwQjNoRTtvQkFBS3dsQztvQkF6Z0J0Q3c1QjtvQkFqUUF0Qjs7ZUF3d0JrQjEvRCxVQWpEZjA5QixVQWlEU2o4QixTQWpEVGk4QixVQWlESWg4QixRQWpESmc4QjtXQWtESCxPQTJHQW9tQztvQkE3SkEzRztvQkFpRGtCbjlEO29CQWpEWDJqRTtvQkFpREFqaUU7b0JBQUtEO29CQXZpQlptL0Q7b0JBak9BbEI7OztRQTZ3QkE7U0FEV3YvRCxVQXJEUnU5QjtTQXFER3g3QixRQXJESHc3QjtTQXNEQ2duQztnQ0FBU3ZIO1lBQUs7YUF2T2hCcDJELElBajZCQXMyRCxrQkF3b0NXRjthQXRPWDEzQzt1QkFEQTFlOzs7c0JBQUFBOztvQkE1cUJGNDNELFVBbXJCSSxrQ0FQRjUzRDtZQVFKLE9BbExFNjZELGVBMktFbjhDLEdBc09XMDNDO1dBQWlCO1FBQzlCLE9Bc0dBMkc7aUJBN0pBM0csSUFxRFdoOUQsU0FyREp3akUsU0FxRER6aEUsVUFDRndpRSxRQTV6QkpwRjs7WUFzd0JHbjlELFVBQUF1N0I7UUF1RUEsS0FucENENC9CLGFBNGtDRkgsS0F3RUssT0FyNkJMd0I7WUE2MUJHamhDLFFBQUF2N0I7OztRQTJFUztTQTNFVEMsVUFBQXM3QjtTQTBFYXhCLFFBMUVid0I7U0EyRVMsb0IsT0ExMkJSeWhDLFdBK3hCSmhDO1FBMkVBLG1DQURnQmpoQztZQTFFYndCLFFBQUF0N0I7OztZQUFBQyxVQUFBcTdCLFVBNkVXNTdCLE1BN0VYNDdCO1FBL3hCQ3loQyxXQSt4QkpoQyxJQTZFY3I3RDtZQTdFWDQ3QixRQUFBcjdCOzs7WUFpRnlCRSxVQWpGekJtN0IsVUFpRmtCMzdCLFFBakZsQjI3QixVQWlGU2pFLFVBakZUaUU7UUFuTkg4a0MsaUJBbUZBUSxpQkFpTll2cEMsVUFqRlowakM7UUFtRlEsSUFBSmg1RCxJQTMxQkp3NUQsYUF3d0JBUjtRQW9GQTtTQUNNLElBQUEsTUFBQSxtQ0FGRmg1RCxHQUZpQnBDLFFBR2pCNmtDOzs7OzthQUVXem1CLGNBRlh5bUIsUUFqN0JKKzNCLFVBbTdCZXgrQzs7UUFFZixXQUpJeW1CLE9BdkZBODhCLFdBR0p2RyxJQWlGNEI1NkQsU0FqRnJCb2hFOztZQXlGdUJsaEUsVUF6RjNCaTdCLFVBeUZvQno3QixVQXpGcEJ5N0IsVUF5Rlc3RCxZQXpGWDZEO1FBbk5IOGtDLGlCQW1GQVEsaUJBeU5jbnBDLFlBekZkc2pDO1FBMkZRLElBQUpuc0QsTUFuMkJKMnNELGFBd3dCQVI7O1NBNkdnQztVQWZoQjcxQixRQUFNLHNDQUhsQnQyQjtVQUlZNjJCLFFBQU8sc0NBSm5CNzJCO1VBa0I0QixNQUFBLG1DQXBCVC9PO1VBb0JGLE1BQUE7VUFBakIsUUFBQSxtQ0FkWTRsQztVQWFJLE1BQUEsd0NBbkJHNWxDO1VBbUJuQixNQUFBLG1DQWRZcWxDO1VBRlBKO1VBQUxIOzs7Ozs7O1VBa0JXNFg7Z0JBMzhCZmdnQixVQTI4QmVoZ0I7VUFsQk56WDtVQUFMSDs7UUFvQko7b0JBcEJJQSxPQURBLzFCO2dCQTlGQTB5RDtrQkFHSnZHO2tCQWlIb0Isd0NBckJYajJCLE9BSHFCemtDO2tCQXpGdkJraEU7O1FBeURQLE9BQUE7O1FBRUEsT0FBQTs7UUE0RTRCO1NBdkl6QmpoRSxVQUFBZzdCO1NBc0lhM0UsaUJBdEliMkU7U0F1SXlCLE1BQUEsbUNBRFozRTtTQUNKLG9CLE9BdDZCUm9tQyxXQSt4QkpoQztRQXVJQTtZQXZJR3ovQixRQUFBaDdCOzs7a0JBQUFnN0I7O2FBeUkwQzc2QixVQXpJMUM2NkIsVUF5SStCK0s7U0F4NkI5QjAyQixXQSt4QkpoQztTQS94QklnQyxXQSt4QkpoQztTQTJJYztVQTNJWHgwQixTQTJJVyx3Q0FGb0JGLE9BQVc1bEM7VUF6STFDNjZCLFFBQUFpTDs7O2FBNEkwQzVsQyxVQTVJMUMyNkIsVUE0SStCbUw7U0EzNkI5QnMyQixXQSt4QkpoQztTQS94QklnQyxXQSt4QkpoQztTQThJYztVQTlJWHAwQixTQThJVyx3Q0FGb0JGLFFBQVc5bEM7VUE1STFDMjZCLFFBQUFxTDs7OztZQThESTNDLFdBOURKMUk7UUErREgsS0EvRE9pbUMsU0FvRUgsT0FBQTtRQUhRO1NBRElKLGVBaEVUSTtTQWdFQ04sU0FoRURNO1NBaUVDci9ELElBQUksV0FESisrRCxRQWhFUmxHO1FBa0VJLFdBREk3NEQsR0FwRUpvL0QsV0FHSnZHLElBOERPLzJCLFVBRVNtOUI7O1lBbUREM2dFLFlBbkhaODZCLG9CQUFBQTs7U0FvSFk7VUFEaUR4NkI7VUFBWnloRTtVQUExQnJyQyxhQW5IdkJvRTtVQW9IWSxVQS9PZnVsQywwQkE4T29EMEI7VUFDM0MvbUM7VUFBTGduQztVQUNBOVUsVUFyUEprVCxpQkFtUGVwZ0U7U0F2UmZnZ0UsdUJBdVIwQnRwQyxnQkFDdEJzckMsUUFDQTlVLFNBckhKcU47U0F1SFEsSUFBSjBILE1BLzNCSmxILGFBd3dCQVIsS0F3SEkySCxrQkFKS2xuQyxPQUR1RDE2QjtTQU1oRSxXQUZJMmhFLEtBMUhBbkIsV0FHSnZHLElBd0hJMkgsWUF4SEduQjs7UUEySEs7U0FEd0IzZ0UsVUExSGpDMDZCO1NBMEh1Qi82QixXQTFIdkIrNkI7U0EySENvWixVQTNQSmtzQixpQkFtUGVwZ0U7UUF2UmZnZ0UsdUJBOFIwQmpnRSxhQUN0Qm0wQyxTQTNISnFtQjtRQTZIUSxJQUFKN29CLE1BcjRCSnFwQixhQXd3QkFSO1FBOEhBLFdBREk3b0IsS0FoSUFvdkIsV0FHSnZHLElBMEhvQ242RCxTQTFIN0IyZ0U7O1lBK0hvQmp6QixVQS9IeEJoVCxVQXhJWTU2QixVQXdJWjQ2QjtlQXhJWTU2Qjs7ZUF3UVg2d0IsUUFoSUp3cEM7O2VBZ0lJeHBDLFFBM3JDRjhwQyxXQTJqQ0ZOO3VCQWdJSXhwQyxRQWhJSndwQzs7UUFpSUEsV0FESXhwQyxPQW5JQSt2QyxXQUdKdkcsSUErSDJCenNCLFNBL0hwQml6Qjs7UUFtSUMsSUFET2h6QixVQWxJWmpULFVBbUlDL2xCLE1BcnRDRjBsRCxrQkFrbENGRjtRQW9JQSxXQURJeGxELEtBdElBK3JELFdBR0p2RyxJQWtJZXhzQixTQWxJUmd6Qjs7UUFrSks7U0FGUS95QixVQWhKakJsVDtTQWdKWXo2QixNQWhKWnk2QjtTQWlKa0J3TCxTQUFPLGtDQURiam1DLEtBQUsydEM7U0FFUixVQXJKUjh5QixXQUdKdkcsSUFpSnFCajBCLFFBakpkeTZCOztTQW9KRSxNQUFBO1lBREVvQjtRQUFhLE9BQWJBO2dCQXRGWCxPQUFBOzs7R0EyRkc7WUFLSGpCLGVBTUEzRyxJQUFHdmpDLEtBQUkrcEMsU0FBUWhqRSxLQUFJRSxNQUFLb2pFLE1BQUtqVztJQUFTLFVBQXZCcnREO2VBQUlFO1VBS091VCxJQUxQdlQ7TUFNWCxXQU5nQm9qRSxrQkFLRTd2RCxHQUwxQitvRDtNQU9RLElBQUp0bkQsTUFBSSxXQVBxQm00QyxPQUE3Qm1QO01BUUEsV0FESXRuRCxLQTdLQTZ0RCxXQXNLSnZHLElBQUd2akMsS0FBSStwQzs7UUFBWTlpRSxNQXdCbkIsT0FBQTtLQXRCUSxXQUZnQm9qRSw4QkFBeEI5RztLQUdRLElBQUo3NEQsSUFBSSxXQUhxQjBwRCxPQUE3Qm1QO0tBSUEsV0FESTc0RCxHQXpLQW8vRCxXQXNLSnZHLElBQUd2akMsS0FBSStwQzs7YUFBUWhqRSxRQXNCZixPQUFBO1NBdEJlQSxRQWtCZixPQUFBO1FBTDhCbWxDLElBYmZubEM7Y0FBSUU7U0FhNkI2dUMsTUFiN0I3dUM7S0FjWCxXQWRnQm9qRSxNQWFNbitCLEdBQWtCNEosS0FiaER5dEI7S0FlUSxJQUFKcmYsTUFBSSxXQWZxQmtRLE9BQTdCbVA7S0FnQkEsV0FESXJmLEtBckxBNGxCLFdBc0tKdkcsSUFBR3ZqQyxLQUFJK3BDOztPQUFZOWlFLE1Bb0JuQixPQUFBO0lBVlEsV0FWZ0JvakUsTUFhTW4rQixlQWI5QnEzQjtJQVdRLElBQUp4ZixNQUFJLFdBWHFCcVEsT0FBN0JtUDtJQVlBLFdBREl4ZixLQWpMQStsQixXQXNLSnZHLElBQUd2akMsS0FBSStwQztHQXdCbUM7WUFPMUNxQixPQUFPN0gsSUFBRzhIO1FBQWlCcGpFLGdCQUFMKzNCO2FBTXBCaEosRUFBRSt5QyxTQUFReG1CO0tBQ1osNkJBUE9nZ0I7S0FPUCxJQUNVLElBQUEsVUE3TU51RyxXQXFNR3ZHLElBQWV2akMsS0FNbEIrcEM7V0FHQXVCO1VBQUFDLDBCQUFBRDs7OztTQUFBQywyQkFBQUEsd0JBQUFBO1dBQUFBLHdEQUFBQTtRQUVxQztTQURwQmhsRCxNQURqQmdsRDtTQUVxQyxNQUFBLDhCQVhkdGpFO1NBV2MsTUFBQTtTQUFsQixNQUFBO1NBQVAsTUFBQSx1QkFES3NlO2VBQ2pCOzs7cUJBRkFnbEQ7Ozs7O1VBS0lEO01BQU8sT0FBQSxXQWRMRCxJQUFIOUgsSUFjQytIOztTQVpGRSxtQkFBRmppRSxJQUlRZzZDLEtBSk5vRCxPQUFBNmtCO0tBQVE7V0FBUjdrQixNQUVHLE9BRkxwOUM7TUFDbUI7T0FEakJraUUsU0FBQTlrQjtPQUNFajhDLElBREZpOEM7T0FBRnJELE1BQ21CLFdBRG5CLzVDLEdBQ0ltQjtPQURKbkIsSUFBQSs1QztPQUFFcUQsT0FBQThrQjs7SUFZa0I7SUFFMUIsT0E5VE03QixvQkFvVEY1eUMsR0FOb0JnSjs7WUFxQnRCMHJDLE9BQU9uSSxJQUFHdmpDLEtBQU0sT0FyQmhCb3JDLE9BcUJPN0gsSUF2V1A0RixpQkF1V1VucEMsS0FBb0M7WUFFOUMyckMsUUFBUXBoRSxHQUFFOGdFLElBQUdyckMsS0FBTSxPQXZCbkJvckMsT0E1c0NFL21ELFlBbXVDTTlaLElBQUU4Z0UsSUFBR3JyQyxLQUE2QztZQUMxRDRyQyxPQUFPcmhFLEdBQUV5MUI7SUFBTSxPQXhCZm9yQyxPQTVzQ0UvbUQsWUFvdUNLOVosSUExV1A0K0QsaUJBMFdTbnBDO0dBQTBEO1lBRW5FNnJDLE1BQU03ckMsS0FBTSxPQTFCWm9yQyxPQXptQ0V4K0QsT0F1eEJGdThELGlCQTRXTW5wQyxLQUErQztZQUtyRDhyQyxjQUdFdkksSUFBR3dJLFFBQU94aUU7SUF2YlpxL0QsNkJBdWJFckY7SUFFUSxJQUFOdDdELE1BOStCSjg3RCxhQTQrQkVSO0lBR0YsSUFDTSxJQUFBLE1BQUEsbUNBRkZ0N0QsS0FGQzhqRSxTQUdEL3JDOzs7O1NBRVd6WixjQUZYeVosTUFwa0NKK2tDLFVBc2tDZXgrQzs7SUFDZixPQUFBLFdBTlloZCxHQUdSeTJCO0dBR0U7WUFHTmdzQyxjQUdFemhFLEdBQUV3aEUsUUFBT3hpRTtJQUFLLE9BZmhCdWlFLGNBM3VDRXpuRCxZQTB2Q0E5WixJQUFFd2hFLFFBQU94aUU7R0FBb0Q7WUFHL0QwaUUsbUJBQW1CMWhFLEdBQUV5MUI7SUFDdkIsYUFBd0R0MUIsR0FBSyxPQUFMQSxFQUFNO0lBQXhDO0tBQUEsTUFBQSw4QkFEREg7S0FDQyxNQUFBO0lBQTZCLE9BUGpEeWhFLGNBT1ksb0NBRFNoc0M7R0FDd0M7WUFHN0Rrc0MsVUFBVTNoRTtJQUNaLGFBQXFDRyxHQUFLLE9BQUxBLEVBQU07SUFBNUIsVUFBQSx1QkFESEg7SUFDb0IsT0FBQSxXQTlCOUJxaEUsT0E4Qks7R0FBcUM7WUFJMUNPLFFBQVE1OUQsSUFBRzg4RCxJQUFHcnJDO0lBQU0sT0ExRHBCb3JDLE9BN2lDRXRHLGtCQXVtQ012MkQsS0FBRzg4RCxJQUFHcnJDO0dBQW9EO1lBQ2xFb3NDLE9BQU83OUQsSUFBR3l4QjtJQUFNLE9BM0RoQm9yQyxPQTdpQ0V0RyxrQkF3bUNLdjJELEtBN1lQNDZELGlCQTZZVW5wQztHQUFnRTs7Ozs7UUFwcUN4RXB6QjtRQWVBd0I7UUFDQUM7UUFTQW9FO1FBVkFyRTtRQUNBQztRQW5IQWdXO1FBV0FtSTtRQTZHQVU7UUExTEF3MkM7UUFPQUM7UUFFQUM7UUE0SkFoM0Q7O09BOG5DRjgrRDtPQUdBRTtPQUVBQztPQTFCQVQ7T0F1QkFPO09BUUFHO09BWUFFO09BTUFDO09BSUFDO09BTUFFO09BREFEOzs7RTs7Ozs7Ozs7Ozs7O0lDaGdEQUU7WUFHQUMsbUJBQW1CcC9ELE1BQ2pCNGlCO0lBQUo7O0tBQ0kvSixPQUFVLHFCQURWK0osZUFBQUEsTUFBQUE7SUFFSixPQUFBLDBCQUhxQjVpQixNQUVqQjZZO0dBQzBCOzZCQU41QnNtRCxVQUdBQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDQUF2dEQsS0FBSzNLLEdBQ1UsSUFBYm00RCxNQURHbjRELFdBRVAsT0FBQSxlQURJbTRELEtBQ0k7R0FZRyxJQUFUemQsOEJBVUEwZCx5QkFPQUM7WUFlQUMsb0JBQW9CbmlFO0lBQ3RCO0tBQUk0RTswQ0FEa0I1RTtLQUNYOztTQUNYOEI7O01BQ2tDLFdBQUEsd0JBSFo5QixHQUV0QjhCO01BREk4QyxpQkFBQUE7TUFDSixXQUFBOUM7a0JBQUFBO1VBQUFBOzs7SUFESThDLFVBQUFBO1FBT0F3OUQsbUJBUEF4OUQsVUFBQUEsMkJBQUFBO0lBU0osT0FGSXc5RDtHQUVLO0dBNkJUO0lBeEJvQzEzRDt5Q0FBQUE7SUFJQTIzRDswQ0FBQUE7SUFHREM7eUNBQUFBO0lBZ0JqQ0MseUJBckRBTDtJQStEQU07SUFHQUMsWUFBdUI7WUFJbkJDLFNBQVM5aUU7SUFDZixXQURlQSxJQUFUOGlFLFVBQVM5aUUsOEJBQUFBO0dBRU87WUFFcEIraUUsVUFBVUM7SUFYVko7SUFjWTtLQURWbC9ELE1BRlFzL0Q7S0FHUkMsVUFBVSxnQkFEVnYvRCxzQkFWRm0vRDtJQVlGLGlCQURJSSxpQkFEQXYvRDs7O2FBR2tCLGlCQVRoQm8vRCxTQU1GcC9EO0lBR0osaUJBRkl1L0Q7SUFFSixXQUhJdi9ELGFBR0o7O1NBQ0F4Qjs7TUFBaUQ7ZUFBakRBO09BQWlELHdCQU5yQzhnRSxZQU1aOWdFLE9BQUFBO01BQXdCLGlCQUhwQitnRTtNQUdvQixXQUF4Qi9nRTtrQkFBQUE7VUFBQUE7OztJQUNBO1lBeEZFbWdFO1lBb0ZFWTs7Ozs7OztHQVcwQjtZQUU1QjF4QyxPQUFPMnhDLE9BQU1DO0lBQ2YsSUFBSUMsV0FES0YsNEJBQ0xFLFdBRFdEOztLQUdFLElBQVhFLFdBQVcsZUFIRkYsVUF4QmJOO0tBNEJBLDZCQUpPSyxhQUdIRyxhQUZGRDtLQURLRixXQUdIRzs7Ozs7O0dBR0o7R0FRZSxJQUFmQyx1QkFDQUM7WUFLQUMsV0FBV0M7SUFDYixJQUFJenNELFFBRFN5c0Q7SUFwQlhseUMsT0FvQldreUMsT0FDVHpzRDtJQUNKLE9BRElBO0dBRUM7WUFFSDBzRCxpQkFBaUJELE9BQU0xZ0U7SUFDekIsSUFDRSxXQUFBLHNCQUZ1QkEsTUFBTjBnRSxXQUVqQjs7OztLQUVZLElBQVJFLFFBVEpILFdBS2lCQztLQUFBQSxXQUtRLHFCQUxGMWdFLE1BSW5CNGdFLE9BSmFGO0tBQUFBLFdBTVMsb0JBRnRCRSxVQUphRjtLQU9qQixPQUhJRTs7R0FHQztZQUVMQyxrQkFBa0JILE9BQU1JO0lBQ2hCLG9CLE9BVlJILGlCQVNrQkQ7SUFDcEIsT0FBQSxtQ0FEMEJJO0dBQ2M7WUFFdENDLFdBQVdMLE9BQU1FLE9BQU1JO0lBdkJ2QlQ7SUF5QkMsT0FBQSxxQkFGZ0JLLE9BQU5GO2VBckNYbHlDO2dCQXFDV2t5QyxPQUFNRTsrQkFBTkYsVUFBTUUsV0FBQUEsU0FBTUk7O2VBQVpOLG1CQUFNRSxPQUFNSSxVQUFaTjtHQUtpRDtZQUU1RE8sV0FBV1AsT0FBTUU7SUFDbkIsSUFBSSxXQUFBLDRCQURlQSxPQUFORixXQUNUOzs7O01BQ2Msd0JBRkxBLFVBQU1FLFdBQUFBOzs7R0FFb0I7WUFFckMxNEQsUUFBUWc1RDtJQUNWLGFBRFVBLFVBQ3FCLDZCQURyQkE7R0FDc0M7WUFFOUNDLE9BQU9ULE9BQU1VLE1BQUtDLFlBQVdDO0lBQy9CO0tBQUlDLFNBSkZyNUQsUUFHYWs1RDtLQUVYSSxlQUxGdDVELFFBR2tCbTVEO0tBR2hCSSxnQkFORnY1RCxRQUc2Qm81RDtJQUlELG1CLE9BOUI1QlgsaUJBMEJPRDtJQUlZLElBQWpCZ0IsaUJBQWlCLGlDQUZqQkY7SUFHMkIsbUIsT0EvQjdCYixpQkEwQk9EO0lBS2EsSUFBbEJpQixrQkFBa0IsaUNBRmxCRjtJQUhLZjs7VUFBQUEsVUFBQUEsVUFBQUEsVUFBQUEsVUFJTGdCLGdCQUhBSDtNQURLYjs2QkFBQUE7aUJBWUFrQixLQUFJbHBELE1BQUttcEQ7S0FDWixPQUFHLDRCQURBRCxLQVhMTDtlQVk0QixvQkFEdkJLLEtBQUlscEQsTUFBS21wRDtlQUFBQTtJQUNnRDtJQWJ6RG5CLFdBV1A7SUFJWSxJQUFWb0IseUJBQ0FDO2tCQUVHQyxLQUFJcEI7S0FIUGtCLGFBSVkscUJBRFRFLEtBQUlwQixPQUhQa0I7Z0JBQ0FDO1NBTVcsSUFBQSxPQUFBLHFCQUpKbkIsT0FsQkZGOzs7Ozs7S0FnQkxxQixjQUtJLG9CQUhHbkI7O0lBS1E7SUFObkIsa0NBZElhLGVBRUFFO2tCQXFCR0ssS0FBSXBCO0tBWFBrQixhQVlZLHFCQURURSxLQUFJcEIsT0FYUGtCO0tBQ0FDLGNBWWEsb0JBRk5uQixVQVZQbUI7O0lBWTJDO0lBSC9DLGtDQXZCSVAsY0FFQUU7SUFKS2hCLFdBZUxvQjtJQWZLcEIsV0FnQkxxQjtJQWdCSixJQUFBLGlCQWhDU3JCO2tCQWtDQ3NCLEtBQWtCQztLQUF2QixJQUFPTCxNQUFGSTtLQUNDLE9BQUEsNEJBRENKLEtBOUJSRjtlQThCd0JPO21CQUFsQkQsS0FBa0JDO0lBQ2dDO0lBbkNuRHZCLFdBaUNOOztHQUlJO1lBRUx3QixNQUFNeEI7SUFDUjtLQUNFLFFBQUEsMkJBRk1BO0tBQzREVTtLQUFaQztLQUFaYztLQUFwQkM7S0FBVkw7S0FBVEQ7SUFER3BCLFdBSWlCLDJCQUpqQkE7aUJBT0VyakUsR0FBRWI7S0FBZ0IsVUFBQSxxQkFBaEJBLEdBUEpra0U7S0FPUyxPQUFBLG9CQUFMbGtFLFFBQUZhO0lBQTRDO0lBUDlDcWpFLFdBTUwsaUNBTHlDeUIsWUFBd0JmO0lBRDVEVixXQUNIb0I7SUFER3BCLFdBQ01xQjtjQUROckI7aUJBYUVzQixLQUFrQkM7S0FBdkIsSUFBT0wsTUFBRkk7S0FDQyxPQUFBLDRCQURDSixLQVo0Q1AsY0FZNUJZLFNBQWxCRCxLQUFrQkM7SUFDNEI7SUFkaER2QixXQVlMLHNDQVhxQjBCOztHQWVEO1lBT3JCQyxhQUFhM0IsT0FBTTFnRTtJQUNyQixJQUFJLFVBQUEscUJBRGlCQSxNQUFOMGdFLFdBQ1g7Ozs7U0FFRXpzRCxRQUhTeXNEO0tBQUFBLFdBR1R6c0Q7S0FDRCxHQUFBLDZCQUpnQmpVO01BQU4wZ0UsV0FJb0Isb0JBSmQxZ0UsTUFHZmlVLE9BSFN5c0Q7S0FLYixPQUZJenNEOztHQUVDO1lBRUxxdUQsU0FBU3BCLEtBQ1gsT0FBRyxtQkFEUUEsZ0JBQUFBLElBQzRCO1lBRXJDcUIsc0JBQXNCN0IsT0FBTThCLE9BQU1DO0lBQ3BDO0tBQUlDLFVBSkZKLFNBRzRCRTtLQUUxQkcsU0FEQUQ7S0FDZ0NFLFFBRkFIO0tBR2hDcmdFLE1BQU0sZUFETnVnRSxTQUFnQ0M7S0FFcEMsTUFGSUQ7S0FDTTs7U0FDVnZqRTs7TUFDYTthQXZHWHVoRSxpQkFrR3NCRCx3QkFDcEJnQyxTQUdKdGpFLFNBQUFBO01BQ0UsaUJBRkVnRCxLQUNKaEQsU0FBQUE7TUFDRSxVQURGQTtpQkFBQUE7VUFBQUE7OztJQUdBLFVBTG9Dd2pFLGVBS3BDOztTQUFBempFOztNQUNvQjthQURwQkEsSUFMSXdqRTtPQU1nQixNQWxCbEJOLGFBVXNCM0Isd0JBQVkrQixNQU9wQ3RqRSxPQUFBQTtNQUNFLGlCQUxFaUQ7TUFLRixVQURGakQ7aUJBQUFBO1VBQUFBOzs7SUFHQSxPQVBJaUQ7R0FPRDtZQUVEeWdFLGFBQWFuQyxPQUFNMWdFO0lBQ3JCLElBQUksVUFBQSxxQkFEaUJBLE1BQU4wZ0UsV0FDWDs7OztNQUE0QyxNQUFBOzs7R0FBWTtZQUUxRG9DLGNBQWNwQyxPQUFNSTtJQUNaLGtCLE9BSlIrQixhQUdjbkM7SUFDaEIsT0FBQSxrQ0FEc0JJO0dBQ2M7WUFFbENpQyxnQkFBZ0JyQyxPQUFNcmtFLEdBQU5xa0UsZUFBTXJrRSxHQUFOcWtFLG9CQUN5QjtZQWF6Q3NDLGFBQWFDO0lBQ2YsU0FEZUEsZ0JBQzZCLE9BNUsxQ2pEO0lBOEtTO0tBQVBrRCxPQUFPLDZCQXpPVDFELHFCQXNPYXlEO0tBSVh2QyxRQS9LRlYsVUE4S0VrRDtpQkFHRy9qRSxHQUFFNmlFO0tBQ0wsSUFBSUosT0FERHppRTtLQUZIdWhFLFdBSTBCLHFCQUZyQnNCLEtBQ0RKLEtBSEpsQjtLQUFBQSxXQUswQixvQkFGdEJrQixRQUhKbEI7O0lBS2tFO0lBSnRFLGtDQUxldUM7SUFLZixPQURJdkM7R0FPQztZQUVIeUMsV0FBV3pDO0lBekpYRixxQkFBQUEsb0JBeUpXRTtJQUFBQSxXQUVTLDJCQUZUQTtJQUdiO1dBM0tFbHlDO2FBd0tXa3lDOzJDQUFBQTtHQUdrRDtZQUU3RDBDLFNBQVNDLEtBQUlaLE1BQUtwQixZQUFXQyxvQkFBK0JyMkM7UUFBTC9KLGdCQUFWb2lEO0lBMUg3Q25DLE9BMEhTa0MsS0FBSVosTUFBS3BCLFlBQVdDO1FBRTNCLzBELE9BRjBEMGUsTUFHaEQsV0FIaUNxNEMsU0FBcENELEtBQThDbmlELE9BR2YsV0FIS29pRCxTQUFwQ0Q7SUFuRlRuQixNQW1GU21CO0lBSVgsSUFBQSxTQU1LLE1BL0RIZixTQXFENkJoQjtpQkFTckJpQyxJQUFNLE9BMUlkdEMsV0FpSVNvQyxLQXBKVDFDLGlCQW9KUzBDLEtBU0RFLEtBQStEO0lBRmxDO2VBQ3BDO0tBRG9DLE1BNURyQ2pCLFNBcURhRztJQU9LLGtCLE9BN0NsQkksYUFzQ1NRO0lBTVQ7bUJBSkU5MkQsV0FLTTtJQURSLE9BQUE7O1lBTUFpM0QsV0FBV0MsV0FBVUM7SUFDdkI7S0FBSWhELFFBL0JGc0MsYUE4QldTO0tBRVRFLFdBQVcsV0FGUUQsWUFDbkJoRDtJQWxCRnlDLFdBa0JFekM7SUFHSixXQUFDLFdBRkdpRCxjQUZtQkQsWUFFbkJDO0dBRXFEO1lBS3ZEQyxpQkFBaUJILFdBQVVDLFlBQVdHO0lBQ3hDO0tBQUluRCxRQXhDRnNDLGFBdUNpQlM7S0FFZkUsV0FBVyxXQUZjRCxZQUN6QmhEO0lBM0JGeUMsV0EyQkV6QztJQURvQ21ELGdCQUFYSDtJQUFXRyxnQkFFcENGOztHQUcyQjtZQUU3QkcsWUFBWUM7YUFDVkM7S0FBaUIsTUFBQSw0Q0FEUEQ7SUFDNkM7SUFDM0QsV0FESUMsT0FBQUEsT0FBQUE7R0FDdUM7WUFJekNDLGNBQWN2RDtJQUVOLElBQU5scEQsTUFBTSw4QkFGTWtwRDtJQUVabHBELFNBRllrcEQ7SUFLUixPQUFBLGVBSEpscEQ7R0FHZ0I7WUFFbEIwc0Qsa0JBQWtCQyxPQUFNekQ7SUFDMUIsR0FEb0J5RCxPQUNhLE9BRGJBO0lBR1IsSUFBTjNzRCxNQUFNLDhCQUhja3BEO0lBR3BCbHBELFNBSG9Ca3BEO0lBTWhCLE9BQUEsZUFISmxwRDtHQUlIO1lBRUc0c0QsT0FBTzVzRDs7O21CQUVIO1NBQ0x0WSxnQkFBSDdDO0tBQVEsV0FBUkEsR0FIV21iO21CQUdSdFk7OztZQUVIbWxFLGlCQUFpQjdzRCxLQUFJa3BEO0lBQ3ZCLElBQUk0RCxRQURtQjVELHNCQUNuQjREO2lCQU5FRixPQUthNXNELEtBQ2Y4c0Q7R0FFYztZQUVoQkMscUJBQXFCSixPQUFNM3NELEtBQUlrcEQ7SUFDakMsR0FEdUJ5RCxPQUNVLE9BREozc0Q7UUFFdkI4c0QsUUFGMkI1RDthQUUzQjRELE9BWkFGLE9BVXVCNXNELEtBRXZCOHNEO0lBQ2dCLE9BSE85c0Q7R0FLMUI7WUFFRGd0RCwrQkFBbUNMLE9BQU16RDtJQUMzQyxHQURxQ3lELE9BQ0osT0FESUE7SUFFekIsSUFBTjNzRCxNQW5DSnlzRCxjQWlDeUN2RDtJQVp6QzJELGlCQWNJN3NELEtBRnFDa3BEO0lBR3pDLE9BRElscEQ7R0FHSDtZQTJCRHVWLFNBRUsydUI7SUFGTSxHQUVOQSxPQUFVLE9BQVZBO0lBREksTUFBQTtHQUNpQjtZQUsxQitvQixXQUFXeG5FLEdBQUV5bkUsTUFBSzdpRDtJQUNwQixJQUFJemYsb0JBQ0ExRixRQURBMEYsTUFDSTtPQUZLbkY7U0FHYmtDOztnQkFESXpDO01BQUFBLDRCQUZXZ29FLE1BR2Z2bEUsT0FBQUE7TUFBQSxVQUFBQTtTQUhhbEMsTUFHYmtDO1VBQUFBOzs7UUFuQmtCM0MsSUFrQmRFO1NBRmdCbWxCO0tBZlQsTUFBQTtJQWVTQSxZQWhCRnJsQjtJQXNCbEIsT0FMSTRGO0dBTUQ7WUFxQkR1aUUsY0FBY0MsTUFuQklGO0lBb0JkLElBcEJtQkcsWUFoQnZCOTNDLFNBbUNjNjNDO1NBbkJTQyxXQXdCdkIsT0FqQ0FKLFdBU2tCQyx5QkFBQUEsTUFtQkpFO1FBbkJFNXdELE1BQUUwd0QseUJBQUZ2bEUsSUFBQTZVLEtBQU84d0QsV0FBQUQ7SUFDekI7WUFEa0IxbEUsR0FDSixPQURXMmxFO0tBRWYsSUFBTjV2Qix1QkFGZ0J3dkIsTUFBRnZsRSxPQUFBQSxJQUdFNGxFLFdBSEtEO0tBSXZCO1dBRGtCQztPQXJCVCxNQUFBO1NBcUJTQSxnQkFEaEI3dkI7V0FDZ0I2dkI7T0FmVCxNQUFBO01BQ00sSUFjR2xqRCxTQUFBa2pEO1dBQUFsakQ7T0FVYSxJQW5DZmpjLFdBd0Jkc3ZDO1lBQ2dCNnZCO1FBeEJULE1BQUE7T0F3QlNBLGNBekJGbi9EO09Bb0NWLE9BdkJONitELFdBU2dCdGxFLFdBQUV1bEUsTUF0QkY5K0Q7O1VBeUJFbS9ELFdBQUFsakQ7O0tBRVYsSUFMZW1qRCxjQWhCdkJqNEMsU0FtQmtCZzRDO1VBSEtDO01BTVYsTUFBQTtTQU5HNWxFLE1BQUFELFdBQUFBLElBQUFDLEtBQU8wbEUsV0FBQUU7O0dBd0JxQjtZQW1ENUNDLFVBQVV2RTtJQUNKLElBQUp6akUsSUF4VkZ3akUsV0F1VlVDOzs7ZUFDUnpqRTs7O3VDQURReWpFO1dBQ1J6akU7V0FDQTBPLE1BelZGODBELFdBdVZVQzs7OztTQUVSLzBELE1BREExTzs7SUFLSixpQkFOWXlqRSxVQUVSLzBELFNBQUFBO0lBSUosT0FKSUE7R0FLSDtZQW9GQ3U1RCxZQUFZeEUsT0FBTVI7SUFDcEIsSUFBSXYvRCxNQURnQnUvRCxvQkF2REEvZ0U7O1FBQUFBLFFBd0RoQndCO0tBRVU7WUExRE14QjtNQTBEZHloRSx5QkFIY1Y7TUF0RGhCdDZEOztTQURnQnpHO21CQUFBQTtTQUNRLHdCQXNEUitnRTtRQXREZ0I7TUFvRGxDaUYsTUFwREV2L0Q7ZUFvREZ1L0Q7YUFBQUE7O1NBbER3QixJQXRGZDNuRSxJQW9GUm9JO2FBcEZRdy9ELE9BQUE1bkU7YUE2SXNCNm5FLGlCQTdJVDd0RCxLQUFRLE9BQXJCNHRELEtBQXNCOzs7U0F1RlosSUF0Rlpub0UsSUFtRk4ySTthQW5GTTAvRCxPQUFBcm9FO2FBNEl3Qm9vRSxpQkE1SVQ3dEQsS0FBTyxPQUFQQSxRQUFmOHRELE1BQTRDOzs7U0F1RmhDLElBdEZaMzhELElBa0ZOL0MsU0FsRlErRixNQWtGUi9GO2FBbEZNMi9ELE9BQUE1OEQsR0FBRTY4RCxPQUFBNzVEO2FBMklzQjA1RCxpQkExSXpCN3RELEtBQ1AsT0FET0EsUUFEQyt0RCxVQUFFQyxNQUVtRDs7O1NBcUZ6QyxJQXBGWDM1RCxNQStFUGpHO2FBL0VPNi9ELE9BQUE1NUQ7YUF3SXVCdzVELGlCQXhJVDd0RCxLQUFPLE9BQUEsV0FBUEEsV0FBZGl1RCxPQUFjanVELEtBQXFCOzs7U0FxRnhCLElBcEZaa3VELE1BOEVOOS9EO2FBOUVNKy9ELE9BQUFEO2FBdUl3QkwsaUJBdklUN3RELEtBQUloYSxHQUFKZ2EsUUFBZm11RCxRQUFtQm5vRSxZQUE2Qjs7O1NBcUZwQyxJQXBGVm5CLElBNkVSdUosU0E3RVVtSixNQTZFVm5KO2FBN0VRZ2dFLE9BQUF2cEUsR0FBRXdwRSxPQUFBOTJEO2FBc0lvQnMyRCxpQkF0SVA3dEQsS0FBUSxPQUFqQixXQUFOb3VELE1BQUVDLE1BQXdCOzs7U0FxRmhCLElBcEZaenZCLE1BNEVOeHdDLFNBNUVRa2dFLE1BNEVSbGdFO2FBNUVNbWdFLE9BQUEzdkIsS0FBRTR2QixPQUFBRjthQXFJc0JULGlCQXJJUDd0RCxLQUFPLGtCQUF4QnV1RCxNQUFpQnZ1RCxRQUFmd3VELE9BQWdEOzs7U0FzRmhELElBckZGM3ZCLE1BMkVOendDLFNBM0VRMlYsTUEyRVIzVixTQTNFVXFnRSxNQTJFVnJnRTthQTNFTXNnRSxPQUFBN3ZCLEtBQUU4dkIsTUFBQTVxRCxLQUFFNnFELE9BQUFIOztVQW9Jb0JaO3FCQW5JekI3dEQsS0FDUCxrQkFGUTB1RCxNQUNEMXVELFFBREcydUQsU0FBRUMsT0FFcUQ7OztTQXFGN0MsSUFwRlg3dkIsTUF3RVAzd0MsU0F4RVN5Z0UsTUF3RVR6Z0U7YUF4RU8wZ0UsT0FBQS92QixLQUFFZ3dCLE9BQUFGOztVQWlJcUJoQjtxQkFqSVA3dEQ7YUFBTyxPQUFFLFdBQXpCOHVELE1BQXlCLFdBQVQ5dUQsV0FBZCt1RCxPQUFjL3VEO1lBQXlCOzs7U0FzRnhDLElBckZNbS9CLE1BdUVkL3dDLFNBdkVnQml4QyxNQXVFaEJqeEMsU0F2RWtCbkksSUF1RWxCbUk7YUF2RWM0Z0UsT0FBQTd2QixLQUFFOHZCLE9BQUE1dkIsS0FBRTZ2QixNQUFBanBFO2FBZ0lZNG5FLGlCQWhJQzd0RCxLQUFRLE9BQWpCLFdBQVJndkQsTUFBRUMsTUFBRUMsS0FBMEI7OztTQXdGcEMsSUF2Rkl4dkIsTUFzRVp0eEMsU0F0RWNveEMsTUFzRWRweEMsU0F0RWdCK2dFLE1Bc0VoQi9nRTthQXRFWWdoRSxPQUFBMXZCLEtBQUUydkIsT0FBQTd2QixLQUFFOHZCLE9BQUFIOztVQStIY3RCLGlCQS9IQzd0RCxLQUFPLGtCQUExQm92RCxNQUFFQyxNQUFpQnJ2RCxRQUFmc3ZELE9BQWtEOzs7U0EwRjFELElBdEZJMXZCLE1Ba0VaeHhDLFNBbEVjbWhFLE1Ba0VkbmhFLFNBbEVnQnlWLE1Ba0VoQnpWLFNBbEVrQm9oRSxNQWtFbEJwaEU7YUFsRVlxaEUsT0FBQTd2QixLQUFFOHZCLE9BQUFILEtBQUVJLE1BQUE5ckQsS0FBRStyRCxPQUFBSjs7VUEySFkzQjtxQkExSHpCN3REO2FBQ1Asa0JBRmN5dkQsTUFBRUMsTUFDVDF2RCxRQURXMnZELFNBQUVDO1lBRStDOzs7U0F1RnpELElBNUZLL3ZCLE1BcUVienhDLFNBckVleWhFLE1BcUVmemhFLFNBckVpQjBoRSxNQXFFakIxaEU7YUFyRWEyaEUsT0FBQWx3QixLQUFFbXdCLE9BQUFILEtBQUVJLE9BQUFIOztVQThIYWpDO3FCQTlIQTd0RDthQUFPLE9BQUksV0FBNUIrdkQsTUFBRUMsTUFBMEIsV0FBWGh3RCxXQUFiaXdELE9BQWFqd0Q7WUFBMkI7OztTQStGakQsSUE5Rkk4L0IsTUFvRVoxeEMsU0FwRWM4aEUsTUFvRWQ5aEUsU0FwRWdCK2hFLE1Bb0VoQi9oRTthQXBFWWdpRSxPQUFBdHdCLEtBQUV1d0IsT0FBQUgsS0FBRUksT0FBQUg7O1VBNkhjdEMsaUJBN0hEN3RELEtBQU8sT0FBaEIsV0FBUm93RCxNQUFpQnB3RCxRQUFmcXdELE9BQUVDLE1BQWdEOzs7U0FpR3hELElBNUZJQyxNQStEWm5pRSxTQS9EY29pRSxNQStEZHBpRSxTQS9EZ0JxaUUsT0ErRGhCcmlFLFNBL0RrQnNpRSxNQStEbEJ0aUU7YUEvRFl1aUUsT0FBQUosS0FBRUssTUFBQUosS0FBRUssT0FBQUosTUFBRUssT0FBQUo7O1VBd0hZN0M7cUJBdkh6Qjd0RDthQUNQLE9BREYsV0FEZ0Iyd0QsTUFDUDN3RCxRQURTNHdELFNBQUVDLE9BQUVDO1lBRStDOzs7U0E2RnpELElBbkdLQyxNQW1FYjNpRSxTQW5FZTRpRSxPQW1FZjVpRSxTQW5FaUI2aUUsTUFtRWpCN2lFO2FBbkVhOGlFLE9BQUFILEtBQUVJLE9BQUFILE1BQUVJLE9BQUFIOztVQTRIYXBEO3FCQTVIQTd0RDthQUFPLE9BQWhCLFdBQVJreEQsTUFBMEIsV0FBVGx4RCxXQUFmbXhELE9BQWVueEQsTUFBYm94RDtZQUF3Qzs7O1NBc0dqRCxJQS9GS0MsT0E0RGJqakUsU0E1RGVrakUsTUE0RGZsakU7YUE1RGFtakUsT0FBQUYsTUFBRUcsT0FBQUY7O1VBcUhlekQ7cUJBckhGN3RELEtBQU8sT0FBaEIsV0FBU0EsV0FBZnV4RCxPQUFldnhELEtBQWJ3eEQsTUFBK0M7OztTQWlHdEQsSUFoR0dDLE9BMkRYcmpFLFNBM0RhK1ksSUEyRGIvWTthQTNEV3NqRSxPQUFBRCxNQUFFRSxPQUFBeHFEOztVQW9IaUIwbUQ7cUJBbkh6Qjd0RDthQUFPLGtCQUFQQSxXQURNMHhELE9BQ04xeEQsS0FBQUEsUUFEUTJ4RDtZQUNpRDs7O1NBaUd0RCxJQWhHR0MsT0F5RFh4akUsU0F6RGF5akUsTUF5RGJ6akUsU0F6RGVna0IsTUF5RGZoa0I7YUF6RFcwakUsT0FBQUYsTUFBRUcsTUFBQUYsS0FBRUcsT0FBQTUvQzs7VUFrSGV5N0M7cUJBakh6Qjd0RDthQUFPLGtCQUFQQSxXQURNOHhELE9BQ045eEQsS0FBQUEsUUFEUSt4RCxTQUFFQztZQUVnRDs7O1NBaUd2RCxJQWhHSUMsT0FzRFo3akUsU0F0RGM4akUsTUFzRGQ5akU7YUF0RFkrakUsT0FBQUYsTUFBRUcsT0FBQUY7O1VBK0dnQnJFO3FCQTlHekI3dEQ7YUFBaUMsVUFBQSxXQUFqQ0EsV0FEU295RCxPQUNUcHlEO2FBQWlDLE9BQUEsV0FBakNBLFdBRE9teUQsT0FDUG55RDtZQUFpRDs7O1NBaUc5QyxJQWhHQ3F5RCxNQW9EVGprRSxTQXBEV2trRSxNQW9EWGxrRTtTQXJDRnEvRCxVQTJGWXZFO2FBMUdEcUosTUFBQUYsS0FBRUcsT0FBQUY7O1VBNkdtQnpFO3FCQTVHekI3dEQ7YUFBTyxPQUFoQixrQ0FEZXd5RCxNQUFGRCxTQUFFQztZQUN5Qzs7O1NBaUc1QyxJQWhHREMsTUFrRFBya0UsU0FsRFNza0UsT0FrRFR0a0U7U0FyQ0ZxL0QsVUEyRll2RTthQXhHSHlKLE1BQUFGLEtBQUVHLE9BQUFGOztVQTJHcUI3RTtxQkExR3pCN3REO2FBQ1AsVUFET0EsUUFESTR5RDsyREFBRkQ7WUFHbUI7OztTQStGbEIsSUE5RkRFLE1BOENQemtFLFNBOUNTMGtFLE1BOENUMWtFLFNBOUNXMmtFLE9BOENYM2tFO1NBckNGcS9ELFVBMkZZdkU7YUFwR0g4SixNQUFBSCxLQUFFSSxNQUFBSCxLQUFFSSxPQUFBSDs7VUF1R21CbEY7cUJBdEd6Qjd0RDthQUNQLFVBRE9BLFFBRElpekQsU0FBRUM7MkRBQUpGO1lBS3FCOzs7U0E0RnBCLElBM0ZBRyxNQXdDUi9rRSxTQXhDVWdsRSxPQXdDVmhsRTtTQXJDRnEvRCxVQTJGWXZFO2FBOUZGbUssTUFBQUYsS0FBRUcsT0FBQUY7O1VBaUdvQnZGO3FCQWhHekI3dEQ7YUFDRyxVQUFBLFdBREhBLFdBREtzekQsT0FDTHR6RDthQUNHLE9BQUEsdUNBRkFxekQ7WUFFNkM7OztVQStGdkJ4RixRQUxoQ0Y7S0EvWkFwRSxXQWlhWUwsT0FHUkUsT0FBNEJ5RTtLQTFEZGxtRTs7R0E2RGhCO1lBT0Zta0Q7SUFDRixXQS9lRXVjLGdCQXlDQVUsaUJBQ0FDO0dBc2N1RDs7OztPQWhpQnZEaEI7T0ErRkFpQjtPQTZGQTRCO09BVUFFO09BWUFNO09BR0FDO09BakhBbkM7T0FTQUU7T0FVQUk7T0FQQUY7T0FpYUFtRTtPQW5aQS9EO09BdUNBZTtPQW1EQWE7T0FsTEFuRDtPQWdNQW9EO09BYUFHO09BS0FDO09BWUFJO09BU0FJO09BT0FFO09BbFVBanlEO09Bd1VBb3lEO09BT0FDO09BY0FHO09BS0FFO09BT0FDO09BbUVBRztPQTlaQS9pQjtPQThqQkEwQjs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJSXhnQkU0c0I7SUFDQUM7SUFDQUM7SUFDQUM7SUEvRVlDO0lBbUhaQztJQUNBQztJQUNBQztJQUNBQzs7SUFtSUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUF4T0ZDLGlCQUFpQkMsWUFBV2Isa0JBQWlCbndFO0lBQy9DLEdBU0csa0JBVjRDQSxlQVcxQyxPQVh5Qm13RTtRQUNickssNEJBRDhCOWxFLGVBS2xDL0MsSUFKSTZvRTtJQUNmO1lBR1c3b0UsR0FIRyxPQUFBLDhCQUYrQitDO0tBR3JDLEtBQUEsV0FIU2d4RSxZQUE0Qmh4RSxNQUtsQy9DO0tBRm9CLElBRmhCME8sTUFJSjFPLFdBQUFBLElBSkkwTzs7SUFHVixJQUNRMkIsSUFBRnJRLFdBQUE0TyxNQUFBNU87SUFDWDtZQURXNE8sS0FDRyxPQUFBLDhCQU4rQjdMLFNBS2hDc047S0FFTCxHQUFBLFdBUFMwakUsWUFBNEJoeEUsTUFLbEM2TDtNQUpiLE9BQUE7a0NBRCtDN0wsTUFLbEM2TCxjQUFFeUIsSUFBRnpCO1NBQUE2NUQsTUFBQTc1RCxhQUFBQSxNQUFBNjVEOztHQU95QjtZQU1wQ3VMLGdCQUFnQkQsWUFBV2Isa0JBQWlCbndFO0lBQzlDLEdBYUcsa0JBZDJDQSxlQWV6QyxPQWZ3Qm13RTtRQUNSOUosNEJBRHlCcm1FLGVBS3JDL0MsSUFKWW9wRTtJQUNuQjtZQUdPcHBFLEdBSE8sT0FBQSw4QkFGOEIrQztLQUdwQyxLQUFBLFdBSFFneEUsWUFBNEJoeEUsTUFLckMvQztLQUZ3QixJQUZaME8sTUFJWjFPLFdBQUFBLElBSlkwTzs7UUFRQUUsTUFKWjVPO0lBQ1A7WUFHbUI0TyxZQVRRc2tFO0tBT25CLEdBQUEsV0FQUWEsWUFBNEJoeEUsTUFTekI2TDtLQURkLElBSEU2NUQsTUFJWTc1RCxhQUFBQSxNQUpaNjVEOztRQUlZSSxNQUFBajZEO0lBQ25CO1lBRG1CaTZELEtBQ0wsT0FBQSw4QkFWOEI5bEU7S0FXcEMsS0FBQSxXQVhRZ3hFLFlBQTRCaHhFLE1BU3pCOGxFO01BR2QsT0FBQSw4QkFadUM5bEUsU0FTekI4bEU7S0FFWSxJQUZaRyxNQUFBSCxhQUFBQSxNQUFBRzs7R0FPcUI7WUEwQnRDK0ssV0FBVzN6RSxHQUFFOEIsR0FBSSxjQUFBLGdCQUFOOUIsR0FBRThCLFdBQWU7WUFDNUIreEUsWUFBWWowRTtJQUFJO2tDQUFKQTs0QkFBMkIsZ0JBQTNCQTs7R0FBdUM7WUFDbkRrMEUsWUFBWWwwRTtJQUNkLFdBRkVpMEUsWUFDWWowRTtJQUNkOzttQ0FEY0E7Ozs7U0FFYSxxQkFBQSw4QkFGYkE7S0FFYTs7b0NBRmJBOzs7O1VBR2EscUJBQUEsOEJBSGJBOzs7Ozs7SUFHYTtHQUEwQjtZQUNuRG0wRSxhQUFhcHhFLE1BQUtxeEU7SUFDcEIsT0FBQSw4QkFEb0JBLE1BQUxyeEU7R0FDbUI7WUFFaENzeEUsZ0JBQWlCMzlELFFBQU9rckM7SUFDMUI7S0FBSXJyQyw4QkFEZUc7S0FDa0I0OUQsOEJBRFgxeUI7T0FDdEJyckMsUUFBaUMrOUQsT0FRbkM7SUFOUSxJQUFKNzBFLElBQUksOEJBSGdCbWlELFVBQ1cweUIsUUFBakMvOUQsV0FBQUE7SUFHQyxPQUFBLGtCQURDOVcsR0FIYWlYOztjQUtWLDhCQUxpQmtyQyxhQUNXMHlCLFFBQWpDLzlEOztHQVFFO09BR0YsSUFBQSxNQUFBLDJCQTZKRmcrRDs7OztRQUFBQTs7R0E1SlEsU0E2SlJDLE1BblF1QnAwRTtJQUVuQjtLQURKNkIsMEJBRHVCN0I7S0FFdkJ1QixJQUFJLDZCQURKTTtJQUVKLDhCQURJTjtJQUNKLFdBRklNLFdBRUo7O1NBQ0FDOztNQUNLLFVBQUEsZ0JBTHNCOUIsR0FJM0I4QjtPQUVPLDhCQUpIUCxHQUZZMHhFOztPQU9VLFdBQUEsZ0JBUENqekUsR0FJM0I4QjtPQUdPLDhCQUxIUDs7TUFLRyxXQUhQTztrQkFBQUE7VUFBQUE7OztJQUtBLDhCQVBJUDtJQU9KLE9BQUEsNkJBUElBOztZQWtRQTh5RSxjQTdKY252RCxLQUFLN2lCLE9BQU9DLFFBQVFDLFFBQU82NUM7SUFDM0MsR0FEb0M3NUM7U0FJR3ZELElBSkh1RDtLQUlXLEdBQUEsV0FKWEEsUUFBUkQ7OztNQU02QixJQUFBLE9Bc0p2RDh4RSxNQXhKcUNwMUUsV0FFVTs7Ozs7T0FOckJzRDtLQUd1QjtNQUFaeTJDLE1BSFh6MkM7TUFHdUIsT0F5SmpEOHhFLE1BekpxQ3I3QjthQUFLOzs7SUFBMUMsV0FBQTtPQUhtQjEyQztLQUU4QjtNQUFaMjJDLE1BRmxCMzJDO01BRThCLE9BMEpqRCt4RSxNQTFKcUNwN0I7YUFBSzs7O0lBQTFDO0tBQUEsT0FBQTtLQURnQixPQUFBLDRCQTJKaEJvN0IsV0E1SmNsdkQsS0FBMkJrM0I7S0FDM0MsT0FBQTtJQUNFLE9BQUE7R0FJK0Q7R0FDcEQsU0FBWGs0QjtJLE9BMUZGWixpQkE0REVDLFlBSEFiOztHQWtDVSxTQUFWeUI7SSxPQXpFRlgsZ0JBMENFRCxZQUhBYjs7R0FGa0I7OztPQUNsQkQ7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQVc7T0FDQUU7T0FDQUM7T0FJQUM7T0FHQUU7T0F5S0FFO09BQ0FDO09BQ0FDO09BdEpBQztPQUNBQztZQVFBQyxhQUFXeDBFLEdBQUU4QjtJQUFJLElBQUljLElBQUksZ0JBQWQ1QyxHQUFFOEIsa0JBQVFjOzs7O3VCQUFBQSxrQ0FBQUE7O0dBQTJDO1lBQ2hFNnhFLGNBQVk3MEU7SUFDZDtrQ0FEY0E7NEJBQ1UsZ0JBRFZBOzs7bUNBQUFBOzZCQUVhLGdCQUZiQTs7O29DQUFBQTs4QkFHYSxnQkFIYkE7Ozs7Ozs7R0FHMEI7WUFDdEM4MEUsY0FBWTkwRTtJQUNkLFVBTEU2MEUsY0FJWTcwRTtJQUNkOztrQ0FEY0E7Ozs7U0FFYSxxQkFBQSw4QkFGYkE7S0FFYTs7bUNBRmJBOzs7O1VBR2EscUJBQUEsOEJBSGJBO01BR2E7O3FDQUhiQTs7OztXQUlhO2FBQUEsOEJBSmJBO09BSWE7O3NDQUpiQTs7OztZQUthO2NBQUEsOEJBTGJBOzs7Ozs7Ozs7Ozs7SUFLYTtHQUEyQjtZQUNwRCswRSxlQUFhaHlFLE1BQUtxeEU7SUFDckI7aUNBRHFCQSwrQkFBTHJ4RTs7S0FFUDtNQUFKM0M7UUFBSTs7VUFGTzJDO2dDQUFBQSw4QkFBS3F4RTtnQ0FBQUE7TUFJTyxNQUFBLDhCQUpQQTtZQUlwQixrQkFBQSw4QkFGSWgwRTs7O0lBRUo7R0FBdUQ7WUFFckQ0MEUsa0JBQWlCdCtELFFBQU9rckM7SUFDMUI7S0FBSXJyQyw4QkFEZUc7S0FDa0I0OUQsOEJBRFgxeUI7T0FDdEJyckMsUUFBaUMrOUQsT0FRbkM7SUFOUTtLQUFKNzBFLElBQUksOEJBSGdCbWlELFVBQ1cweUIsUUFBakMvOUQsV0FBQUE7S0FHNEIsTUFBQSw4QkFKYkc7SUFJZCxPQUFBLGtCQUFBLDhCQURDalg7O2NBRUcsOEJBTGlCbWlELGFBQ1cweUIsUUFBakMvOUQ7O0dBUUU7T0FJRixJQUFBLE1BQUEseUJBREYwK0Q7Ozs7UUFBQUE7O1lBRUFDLFFBQU05MEU7SUFDUjtLQUFJNkIsMEJBREk3QjtLQUVKdUIsSUFBSSw2QkFESk07SUFFSiw4QkFESU47YUFFSXd6RSxnQkFBS2p6RTtLQUNYLElBRFdDLE1BQUFEO0tBQ1g7U0FEV0MsUUFIVEYsR0FJWSxPQUFBLDhCQUhaTjtNQUlJLElBR0pxQixJQUhJLGdCQU5BNUMsR0FJSytCO2dCQUtUYTs7T0FGUTtRQUFBLE9BQUEsdUJBR1JveUUsa0JBTlNqekU7O09BR0QsT0FHUml6RSx3QkFOU2p6RTs7Z0JBS1RhOztPQURRO1FBQUEsT0FBQSx1QkFFUm95RSxrQkFOU2p6RTs7T0FJRCxPQUVSaXpFLHdCQU5TanpFOztNQUtELDhCQVBSUixHQU9BcUI7TUFBUSxJQUxDK1QsTUFBQTVVLGFBQUFBLE1BQUE0VTs7SUFLK0I7YUFMcENra0MsS0FBSy80QyxHLHVCQUFMaXpFLFVBQUtqekU7YUFNVGt6RSxpQkFBUXAxRSxHQUFFa0M7S0FDWixJQURVd00sTUFBQTFPLEdBQUVtQyxNQUFBRDtLQUNaO1NBRFlDLFFBVFZGLEdBV0EsOEJBVkFOLFFBVUEsT0FRQTB6RSxPQVZRM21FO01BS0YsWUFBQSxnQkFmRnRPLEdBVU0rQjs7T0FVVmt6RSxZQVZRM21FO09BTWtCLDhCQWQxQi9NO09BYzBCLFVBTmhCUTtPQU1nQixrQkFBQSxPQUFBLHVCQVp0Qmd6RTs7T0FZc0IsT0FadEJBOzs7T0FnQkpFLE9BVlEzbUU7T0FRRSxrQkFBQSxPQUFBLHVCQWROeW1FLFlBTU1oekU7O09BUUEsT0FkTmd6RSxrQkFNTWh6RTs7TUFPQSxJQVBBNFUsTUFBQTVVLGFBQUZ5TSxNQUFBRixhQUFBQSxNQUFBRSxLQUFFek0sTUFBQTRVOztJQVNUO2FBQ0RzK0QsT0FBT3IxRTtLQUFJO1FBQUpBO1VBQUlpVzs7T0FBbUIsOEJBbEI5QnRVO09Ba0I4QixVQUFuQnNVO1VBQUpqVyxNQUFJaVc7V0FBQUE7Ozs7SUFBK0M7SUFoQnREZ2xDO0lBa0JSLE9BQUEsNkJBcEJJdDVDO0dBcUJhO1lBZ0NmMnpFLG1CQUFtQmwyRTtJQUNyQjs7TUFBRyw4QkFEa0JBO1dBQ1EsOEJBRFJBO0tBR2IsS0FBQSw4QkFIYUEsUUFNbkIsT0FObUJBO0tBSVosVUFBQSx1QkFKWUE7S0FJWixPQUFBOztJQUZFLFVBQUEsdURBRlVBO0lBRVYsT0FBQTtHQUlSO1lBSURtMkUsZ0JBQWNqd0QsS0FBSzdpQixPQUFPQyxRQUFRQyxRQUFPNjVDO0lBQzNDLEdBRG9DNzVDO1NBUUd2RCxJQVJIdUQ7S0FTRyxHQUFBLFdBVEhBLFFBQVJEOzs7TUFXcUI7T0FBQSxNQXJCL0M0eUUsbUJBa0JxQ2wyRTthQUdFOzs7Ozs7T0FYYnNEO0tBT3VCO01BQVp5MkMsTUFQWHoyQztNQU91QixNQWpCakQ0eUUsbUJBaUJxQ244QjtZQUFLOzs7O09BUHZCMTJDO0tBTThCO01BQVoyMkMsTUFObEIzMkM7TUFNOEIsTUFoQmpENnlFLG1CQWdCcUNsOEI7WUFBSzs7O0lBRGI7S0FBQSxNQUFBLDRCQXRFN0I4N0IsU0FpRXlDMTRCO0tBckIvQnA4QyxJQTBCQTtLQXpCUnVCLElBQUksbURBREl2Qjs7aUJBR0w0QztLQUNIOztlQURHQTtpQkFBQUE7Ozs7Z0JBQUFBO2tCQUFBQTs7O2dCQUFBQTtlQUFBQTs7O01BR0MsOEJBTEpyQjtNQUtJLE9BQUEsOEJBTEpBLEdBRUdxQjs7S0FLQyxPQUFBLDhCQVBKckIsR0FFR3FCO0lBS29CO0lBTjNCLG1DQUZZNUM7SUFzQks7MkJBcEJqQiw2QkFESXVCO0tBcUJhLHNCQVhmMnpFLG1CQVVjaHdEO0lBQ0MsT0FBQTtHQVloQjtZQU9Da3dELGVBQWVwMUU7SUFDakIsZUFGQSxzQkFDaUJBOztLQURpQixZQUFBLGdCQUNqQkE7Ozs7Ozs7Ozs7Ozs7O0tBRE8sdUJBQW1CLGdCQUMxQkE7Ozs7SUFDZCxVQUVFLG1CQUhZQTtJQUVPOztPQUFBLDhCQUZQQSw0QkFBQUE7SUFFWixXQUFDLDhCQUZXQTtHQUdMO1lBQ1ZxMUUsVUFBUXIxRTtJQUNWO0tBQW9CLFFBTGxCbzFFLGVBSVFwMUU7S0FDRXMxRTtLQUFQQztLQUNEQyxNQTNNSjVCLGdCQWlGRVksY0FIQXJCLG9CQTRIVW1DO0lBRVosT0FBQSx1QkFGS0MsT0FDREM7R0FDTztZQUNUQyxXQUFTejFFO0lBQ1gsSUFBYXMxRSxPQVRYRixlQVFTcDFFO0lBRVgsT0FqT0EwekUsaUJBbUdFYyxjQUhBckIsb0JBZ0lXbUM7R0FDb0M7R0FuSTVCOzs7T0FDbkJwQztPQUNBQztPQUNBQztPQUNBQztPQUNBbUI7T0FDQUM7T0FJQUM7T0FNQUM7T0FNQUM7T0FZQUM7T0FFQUM7T0FpRUFLO09BNEJBTTtPQUpBSjtHQXNCVyxTQUFYSztJLE9BalBGaEMsaUJBbUdFYyxjQW1JQWpCOztHQVlVLFNBQVZvQztJLE9BaE9GL0IsZ0JBaUZFWSxjQW1JQWpCOztHQUZvQjtJQUFBOztPQUNwQkQ7T0FDQUM7T0FDQUM7T0FDQUM7T0FySUFlO09BQ0FDO09BSUFDO09BTUFDO09BTUFDO09BMEhBVDtPQUNBQztPQUNBQztPQUNBcUI7T0FDQUM7Ozs7OztJQTdNSkM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFHQUM7SUFDQUM7WUF5TUV6dEUsT0FBT3VyRSxTQUFRL3lCO0lBQ2pCLElBQUkzL0MsMEJBREsweUU7SUFFRyxTQURSMXlFLE9Bck5KbTBFLGFBb05TekIsU0FDTDF5RTtLQUdXLFVBQUEsdUJBek5mazBFLFdBcU5pQnYwQjtLQUlGLE9BQUEsdUJBSk4reUI7O0lBR0osT0FBQSx1QkFISUEsU0FBUS95QjtHQUlnQjtZQUUvQmsxQixZQUFZL3pFLE1BQUtxeEU7SUFDbkIsSUFBSXAwRSwwQkFEVStDLDhCQUFLcXhFO0lBRW5CLFlBRElwMEU7Y0FDa0QsOEJBRnhDK0MsU0FDVi9DO2NBQ1U7R0FBMkQ7WUFFdkUrMkUsY0FBY2gwRTtJQUNoQixJQUttQjJiLDRCQU5IM2IsZUFNR2kwRSxLQUFBdDREO0lBQ2pCO0tBQVksUUFES3M0RCxRQXBPbkJaLGFBOE5nQnJ6RSxNQU1HaTBFO01BRVQsVUFBQSxnQkFSTWowRSxNQU1HaTBFO01BR1osSUFIWXY0RCxNQUFBdTRELFlBQUFBLEtBQUF2NEQ7OztLQUNrQjs7SUFDUCxJQVBiMUgsTUFLRWlnRSxZQUxGOTBFLElBQUE2VTtJQUNmO0tBQVksUUFERzdVLE9BL05qQmswRSxhQThOZ0JyekUsTUFDQ2I7TUFFUCxVQUFBLGdCQUhNYSxNQUNDYjtvQ0FERGEsUUFNR2kwRTtNQUhXLElBRmI3MEUsTUFBQUQsV0FBQUEsSUFBQUM7OztLQUNvQjs7R0FTRjtZQUVqQzgwRSxVQUFVbDBFO0lBQ0osSUFBSmQsSUFkRjgwRSxjQWFVaDBFO0lBRVosYUFESWQ7O2NBQ2tCOztlQUZWYztxQ0FBQUEsUUFDUmQ7ZUFBQUE7R0FDNEQ7WUFFOURpMUUsZUFBZW4wRTtJQUNULElBQUpkLElBbEJGODBFLGNBaUJlaDBFO0lBRWpCLGFBRElkO2NBQ1U7OztlQUZHYzs7cUNBQUFBLFFBQ2JkO0dBRTJDO1lBRTdDazFFLGlCQUFpQnAwRTtJQUNYLElBQUpkLElBdkJGODBFLGNBc0JpQmgwRTtJQUVuQixhQURJZDtjQURlYzs7O2VBQUFBOztxQ0FBQUEsUUFDZmQ7R0FDOEQ7R0FLckQ7SUFBWCtpRCwyQjtZQUVBb3lCLGVBQWVDLFVBQVMvZ0UsUUFBT0k7SUFDakM7Z0NBSEVzdUM7OztVQUFBQTt3REFBQUEsUUFBQUE7S0FHRXN5QixNQUFNO0lBQ00sT0EzQ2RsdUU7YUF5Q2VpdUUsVUFFRCxrQ0FGVS9nRSxRQUN0QmdoRSxLQUQ2QjVnRTtHQUU0QjtHQUduQyxJQUF4QjZnRSw0QkE3UEZkO1lBK1BFZSxrQkFBa0JwM0UsR0FGbEJtM0UsMkJBRWtCbjNFLFlBQThCO1lBQ2hEcTNFLHlCQUF1QixPQUh2QkYseUJBRzZDO1lBRTdDRyxVQUFZcDFELEtBQW1DaE0sUUFBT0k7SUFDeEQsR0FEYzRMO1NBQVdFLE1BQVhGLFFBQUErMEQsV0FBVzcwRDs7U0FBWDYwRCxXQUxaRTtRQU1leDRFO0lBQ2Y7S0FBVyxJQUFQZ0UsT0FaSnEwRSxlQVVZQyxVQUFtQy9nRSxRQUFPSTtLQUd0RDtNQUNFLHVCQUFVLHNCQUZSM1Q7TUFFRixPQUZFQTs7V0FJQ3ViO1VBQUE1Uyx3QkFBQTRTO1NBQUE1Uyx1REFBQUE7aUJBTFUzTSxTQU1XLE1BQUEsNEJBRHJCMk07TUFDa0MsSUFOeEI2bkMsWUFBQXgwQyxpQkFBQUEsVUFBQXcwQzs7O0dBT0o7WUFFWG9rQyxlQUFpQnIxRCxlQUNtQ2hNLFFBQU9JO0lBQzdELEdBRm1CNEwsU0FBT0UsTUFBUEYsUUFBQXpmLE9BQU8yZixjQUFQM2Y7SUFFbkIsWUFGaUQrMEUsZ0JBQVJDLFFBQVFELGdCQUFSQztJQUV6QztTQUQ4QkMsZ0JBQVhULFdBQVdTOztTQUFYVCxXQWhCakJFO1FBaUJleDRFO0lBQ2Y7S0FBVyxJQUFQZ0UsT0F2QkpxMEUsZUFxQmlCQyxVQUFtQy9nRSxRQUFPSTtLQUczRDtNQUNFOzs7VUFGRTNUO1VBR0QsNENBTmNGLFNBQXNCZzFFLE9BR25DOTBFO01BRUY7O1dBRUd1YjtVQUFBNVMsd0JBQUE0UztTQUFBNVMsdURBQUFBO2lCQUxVM00sU0FNVyxNQUFBLDRCQURyQjJNO01BQ2tDLElBTnhCNm5DLFlBQUF4MEMsaUJBQUFBLFVBQUF3MEM7OztHQU9KOzs7O09BN1JiMGlDO09BQ0FDO09BQ0FDO09BcU5FL3NFO09Bbk5GaXRFO09BQ0FDO09BQ0FDO09BdU5FTztPQXRORk47T0F1T0VTO09BU0FFO09BTEFEO09Bck9GTjtPQUNBQztPQWZBYjtPQTJRRTBCO09BVUFDO09BWkFGO09BREFEO09BL1BGZjtPQUNBQztPQUNBQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUV6QkVrQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBMzFCO0lBQ0FDO0lBQ0FUO0lBQ0FVO0lBQ0EwMUI7SUFDQUM7SUFDQW44QjtZQUVBbzhCO0lBQUE7O09BQ1c7O09BQ0E7O09BQ0k7O09BQ0U7O09BQ0Q7O09BQ0U7O09BQ1Q7O09BQ0E7Ozs7OztPQUdJOztPQUNBO2VBQ0w7O0dBQUM7R0FiVCxJQWtCQUMsY0FDQUM7WUFXTUMsTUFBTXZWLEtBQUl3VixLQUFJcjZFLEdBQUVzNkUsS0FBSWo1RTtJQUMxQixHQURzQmk1RSxRQUFORDtLQUNlLG9CQURuQnhWLEtBQUl3VixLQUMyQixXQUR2QnI2RSxHQUFKcTZFO0tBQ2U7O0lBQ1IsSUFBQSx3QkFGR2g1RSxLQUFKaTVFLFNBQUFBLGNBRWpCOztTQUFBempFOztNQUNFLGlCQUhTd2pFLEtBQU1DLFNBQUFBLE9BRWpCempFO01BRkN1akUsTUFBTXZWLEtBQUl3VixLQUFJcjZFLEdBQUVzNkUsYUFBSWo1RTtNQUluQixXQUZGd1Y7a0JBQUFBO1VBQUFBOzs7O0dBR0k7WUFDSDBqRSxNQUFNMVYsS0FBSXdWLEtBQUlyNkUsR0FBRXM2RSxLQUFJajVFO0lBQzFCLE9BRHNCaTVFLEtBQ04sb0JBREp6VixLQUFJd1YsS0FDWSxXQURScjZFLEdBQUpxNkUsT0FDQTtJQUNFLElBQUEsd0JBRlFoNUUsS0FBSmk1RSxTQUFBQSxNQUVqQjs7U0FBQXpqRTs7TUFDRSxpQkFIU3dqRSxLQUFNQyxTQUFBQSxPQUVqQnpqRTtNQUZDMGpFLE1BQU0xVixLQUFJd1YsS0FBSXI2RSxHQUFFczZFLGFBQUlqNUU7TUFJbkIsV0FGRndWO2tCQUFBQTtVQUFBQTs7OztHQUdJO1lBQ1AzRyxLQUFjOGxDLE1BQU13a0MsUUFBbUJDLE1BQUt6NkU7SUFDOUMsSUFBSTZrRSxNQUFNLGVBRE03dUIsTUFBTXdrQyxRQUFtQkMsT0FJdkMxckQsUUFKdUMwckQ7aUJBSXZDMXJEO2NBSEU4MUM7Y0FEa0IyVjtpQkFOaEJEO2tCQU9GMVYsS0FJZ0MsZUFEbEM5MUMsV0FKNEMvdUIsR0FJNUMrdUIsZUFKdUMwckQ7Z0JBQ3JDNVY7aUJBYkV1VixNQWFGdlYsS0FHMEIsZUFBNUI5MUMsV0FKNEMvdUIsTUFBTHk2RSxPQUNyQzVWO0dBS3lCO1lBSTNCNFYsS0FBS3oyRTtJQUNQO0tBQUlwRCxJQUFJLGlCQUREb0Q7S0FFSG9jLElBQUksZUFESnhmO0tBRUosT0FGSUE7S0FDSTs7U0FDUmtDOztNQUE2QixXQUFBLG9CQUh0QmtCLEdBR1BsQjtNQUFvQixpQkFEaEJzZCxHQUNKdGQsT0FBQUE7TUFBb0IsV0FBcEJBO2tCQUFBQTtVQUFBQTs7O0lBQ0EsT0FGSXNkO0dBRUg7WUFPQ3M2RCxjQUFjN1Y7SUFDaEI7S0FBMkQsT0FaekQ0VixLQVdjNVY7S0FDa0IsT0FBQTtJQUFsQyxPQUFBLFNBaEVBb1YsbUJBZ0VvQixhQURKcFY7R0FDc0Q7WUFvQnBFL25ELE9BQU9rNUIsTUFBS3drQyxRQUNkLE9BQUEsZUFEU3hrQyxNQUFLd2tDLGFBQ2tCO1lBQzlCcDZFLElBQUl5a0UsS0FBTSxPQUFBLDRCQUFOQSxVQUEyQjtZQUMvQnZrRSxJQUFJdWtFO0lBQU07SUFBaUIsc0IsMkJBQXZCQTtHQUEyQjtZQU8vQjhWLGdCQUFjOVY7SUFBTSxPQTlGdEJvVixtQkE4RnlDLGFBQXpCcFY7R0FBbUM7WUFLakQrVixTQUFTNWtDLE1BQUt3a0MsUUFBT3I2RTtJQUNmLElBQUo2RCxJQWhCRjhZLE9BZVNrNUIsTUFBS3drQztJQVpkbDZFLElBYUUwRCxHQURtQjdEO0lBRXZCLE9BREk2RDtHQUVIO1lBTUM4a0QsU0FBTzlTLE1BQUt3a0MsUUFBT0s7SUFDckIsT0FBQSxlQURTN2tDLE1BQUt3a0MsWUFBT0s7R0FDYztZQWFqQ0MsZ0JBQWNqVztJQUNrQixVQUFBLGNBRGxCQTtJQUNoQixPQUFBLFNBM0hBb1YsbUJBMkhvQixhQURKcFY7R0FDMkI7WUFHekNrVyxNQUFnQi8yRSxHQUEwQnBEO0lBQzVDLE9BQU0sdUJBRFlvRDtjQUdHLGNBSEhBLE9BQTBCcEQ7Y0FFN0IsY0FGR29ELE9BQTBCcEQ7R0FHNEI7WUFPdEVvNkUsT0FBY2hsQyxNQUFNd2tDLFFBQW1CSyxLQUFJNzZFO0lBQ25DLElBSEs2a0UsTUExQmIvYixTQTRCYzlTLE1BQU13a0MsUUFBbUJLO0lBRXpDLEdBRnNCTDtLQUR0QjtRQUN5Q0s7VUFEekM5M0U7O09BQW9CLGNBREw4aEUsS0FDZjloRSxLQUFxQyxXQUNRL0MsR0FEN0MrQztPQUFvQixVQUFwQkE7VUFDeUM4M0UsUUFEekM5M0U7V0FBQUE7OztLQUtvQixPQU5MOGhFOztJQURmLFVBR3lDZ1csYUFIekM7O1NBQUEvM0U7O01BQXlCLGNBQ1YraEUsS0FEZi9oRSxHQUEwQyxXQUdHOUMsR0FIN0M4QztNQUF5QixVQUF6QkE7aUJBQUFBO1VBQUFBOzs7SUFNYyxPQUxDK2hFO0dBTWdDO1lBQzdDb1csU0FBa0JqbEMsTUFBTXdrQyxRQUFrQjV0RDtJQUM1QztLQUFJc3VELEtBbENGcHlCLFNBaUNrQjlTLE1BQU13a0MsUUFBa0I1dEQ7S0FFeEN2b0IsTUFGc0JtMkU7V0FBa0I1dEQ7OztTQU81QzlwQjs7TUFBc0MsY0FObENvNEUsSUFNSnA0RSxJQUxJdUIsMEJBRndDdW9CLE1BTzVDOXBCLE9BQUFBO01BQXNDLFVBQXRDQTtpQkFBQUE7VUFBQUE7OztJQUNBLE9BUElvNEU7R0FPRjtZQUtBcEksU0FBTzk4QixNQUFLd2tDLFFBQU9XLE1BQUtDO0lBQzFCLE9BQUEsZUFEU3BsQyxNQUFLd2tDLFlBQU9XLE1BQUtDO0dBQ2dCO1lBZXhDQyxnQkFBY3hXO0lBQ2hCLElBQStDLE1BQUEsY0FEL0JBLE1BQ2tCLE1BQUEsY0FEbEJBO29CQUNoQixTQTNLQW9WLG1CQTJLb0IsYUFESnBWO0dBQ3lDO1lBT3ZEeVcsV0FBV3QzRSxHQUFFcEQsR0FBSSxPQUFBLGNBQU5vRCxPQUFFcEQsSUFBK0I7WUFDNUMyNkUsWUFBWXYzRSxHQUFFcEQsR0FBSSxPQUFBLGNBQU5vRCxPQUFFcEQsSUFBZ0M7WUFlOUM0NkUsT0FBY3hsQyxNQUFNd2tDLFFBQW1CVyxNQUFLQyxNQUFLcDdFO0lBQ3pDLElBUEs2a0UsTUFsQ2JpTyxTQXdDYzk4QixNQUFNd2tDLFFBQW1CVyxNQUFLQztJQUU5QyxHQUZzQlo7S0FMdEI7UUFLOENZO1VBTDlDaDhEOztPQUNFO1VBSXVDKzdEO1lBSnZDcDRFOztTQUNFLGNBSFc4aEUsS0FFYjloRSxLQURGcWMsS0FFdUIsV0FHNEJwZixHQUpqRCtDLEtBREZxYztTQUVJLFVBREZyYztZQUl1Q280RSxTQUp2Q3A0RTthQUFBQTs7O09BREYsVUFBQXFjO1VBSzhDZzhELFNBTDlDaDhEO1dBQUFBOzs7S0FTb0IsT0FWTHlsRDs7SUFMZixVQVd5Q3NXLGNBWHpDOztTQUFBcjRFOztNQUNFLFVBVTRDczRFLGNBVjVDOztXQUFBdmtFOztRQUNFLGNBR1dndUQsS0FMZi9oRSxHQUNFK1QsR0FDcUIsV0FTNEI3VyxHQVhuRDhDLEdBQ0UrVDtRQUNFLFVBREZBO21CQUFBQTtZQUFBQTs7O01BREYsVUFBQS9UO2lCQUFBQTtVQUFBQTs7O0lBY2MsT0FUQytoRTtHQVVzQztZQUNuRDRXLFdBQWtCemxDLE1BQU13a0MsUUFBa0I1dEQ7SUFDNUM7S0FBSXV1RCxPQUR3Q3Z1RDtLQUV4Q3d1RCxhQURBRCw0QkFEd0N2dUQ7S0FHeENzdUQsS0FoREZwSSxTQTZDa0I5OEIsTUFBTXdrQyxRQUN0QlcsTUFDQUM7S0FFQS8yRSxNQUpzQm0yRTtLQVMxQixNQVJJVzs7O1NBUUpyNEU7O01BQ1ksSUFBTjQ0RSx1QkFWc0M5dUQsTUFTNUM5cEIsT0FBQUE7U0FDTTQ0RSxtQkFSRk47T0FVQTtNQVZ3QixJQUFBLE1BQXhCQSxjQVVBOztXQUNGdmtFOztRQUNFO1VBWEFxa0UsSUFNSnA0RSxJQUxJdUIsU0FTRndTLElBVEV4UywwQkFNRXEzRSxLQUdKN2tFLE9BQUFBO1FBQ0UsVUFERkE7bUJBQUFBO1lBQUFBOzs7TUFKRixVQUFBL1Q7aUJBQUFBO1VBQUFBOzs7SUFRQSxPQWRJbzRFO0dBY0Y7WUFLQVMsU0FBTzNsQyxNQUFLd2tDLFFBQU9XLE1BQUtDLE1BQUtRO0lBQy9CLE9BQUEsZUFEUzVsQyxNQUFLd2tDLFlBQU9XLE1BQUtDLE1BQUtRO0dBQ2lCO1lBaUI5Q0MsZ0JBQWNoWDtJQUNoQjtLQUE0RCxNQUFBLHNCQUQ1Q0E7S0FDK0IsTUFBQSxjQUQvQkE7S0FDa0IsTUFBQSxjQURsQkE7OztlQUNoQixTQWhQQW9WLG1CQWdQb0IsYUFESnBWOztHQUNzRDtZQU9wRWlYLGFBQWE5M0UsR0FBRXBELEdBQUUwaEIsR0FBSSxPQUFBLGNBQVJ0ZSxPQUFFcEQsR0FBRTBoQixJQUFrQztZQUNuRHk1RCxjQUFjLzNFLEdBQUVwRCxHQUFFMGhCLEdBQUksT0FBQSxjQUFSdGUsT0FBRXBELEdBQUUwaEIsSUFBbUM7WUFDckQwNUQsYUFBYWg0RSxHQUFFcEQsR0FBSSxPQUFBLGNBQU5vRCxPQUFFcEQsSUFBK0I7WUFDOUNxN0UsY0FBY2o0RSxHQUFFcEQsR0FBSSxPQUFBLGNBQU5vRCxPQUFFcEQsSUFBZ0M7WUFtQmhEczdFLE9BQWNsbUMsTUFBTXdrQyxRQUFtQlcsTUFBS0MsTUFBS1EsTUFBSzU3RTtJQUM5QyxJQVRLNmtFLE1BeENiOFcsU0FnRGMzbEMsTUFBTXdrQyxRQUFtQlcsTUFBS0MsTUFBS1E7SUFFbkQsR0FGc0JwQjtLQVB0QjtRQU9tRG9CO1VBUG5EbG5EOztPQUNFO1VBTTRDMG1EO1lBTjVDaDhEOztTQUNFO1lBS3FDKzdEO2NBTHJDcDRFOztXQUNFLGNBSlM4aEUsS0FHWDloRSxLQURGcWMsS0FERnNWLEtBRzJCLFdBSTZCMTBCLEdBTHBEK0MsS0FERnFjLEtBREZzVjtXQUdNLFVBREYzeEI7Y0FLcUNvNEUsU0FMckNwNEU7ZUFBQUE7OztTQURGLFVBQUFxYztZQU00Q2c4RCxTQU41Q2g4RDthQUFBQTs7O09BREYsVUFBQXNWO1VBT21Ea25ELFNBUG5EbG5EO1dBQUFBOzs7S0FXb0IsT0FaTG13Qzs7SUFQZixVQWV5Q3NXLGNBZnpDOztTQUFBcjRFOztNQUNFLFVBYzRDczRFLGNBZDVDOztXQUFBdmtFOztRQUNFLFVBYStDK2tFLGNBYi9DOzthQUFBbnVEOztVQUNFLGNBSVNvM0MsS0FQZi9oRSxHQUNFK1QsR0FDRTRXLEdBQ3VCLFdBWTZCenRCLEdBZnhEOEMsR0FDRStULEdBQ0U0VztVQUNFLFVBREZBO3FCQUFBQTtjQUFBQTs7O1FBREYsVUFBQTVXO21CQUFBQTtZQUFBQTs7O01BREYsVUFBQS9UO2lCQUFBQTtVQUFBQTs7O0lBa0JjLE9BWEMraEU7R0FZMkM7WUFDeERzWCxXQUFrQm5tQyxNQUFNd2tDLFFBQWtCNXREO0lBQzVDO0tBQUl1dUQsT0FEd0N2dUQ7S0FFeEN3dUQsYUFEQUQsNEJBRHdDdnVEO0tBR3hDZ3ZEO2FBREFSOzs0Q0FGd0N4dUQ7S0FJeENzdUQsS0F6REZTLFNBcURrQjNsQyxNQUFNd2tDLFFBQ3RCVyxNQUNBQyxNQUNBUTtLQUVBdjNFLE1BTHNCbTJFO0tBVTFCLE1BVElXOzs7U0FTSnI0RTs7TUFDWSxJQUFONDRFLHVCQVhzQzl1RCxNQVU1QzlwQixPQUFBQTtTQUNNNDRFLG1CQVRGTjtPQVdBO01BWHdCLElBQUEsTUFBeEJBLGNBV0E7O1dBQ0Z2a0U7O1FBQ1ksSUFBTnlqRSx1QkFKRm9CLEtBR0o3a0UsT0FBQUE7V0FDTXlqRSxtQkFaSnNCO1NBY0U7UUFkc0IsSUFBQSxNQUF4QkEsY0FjRTs7YUFDRm51RDs7VUFDRTtZQWZGeXREO1lBTUpwNEUsSUFMSXVCO1lBU0Z3UyxJQVRFeFM7WUFhQW9wQixJQWJBcHBCOzZCQVVJaTJFLEtBR0o3c0QsT0FBQUE7VUFDRSxVQURGQTtxQkFBQUE7Y0FBQUE7OztRQUxBLFVBQ0Y1VzttQkFBQUE7WUFBQUE7OztNQUpGLFVBQUEvVDtpQkFBQUE7VUFBQUE7OztJQWFBLE9BbkJJbzRFO0dBbUJGO1lBV0ZrQixtQkFBbUJwNEU7SUFDckIsYUFBRyxpQkFEa0JBO2NBQUFBO2NBRWhCO0dBQXlDO1lBQzVDcTRFLG1CQUFtQnI0RTtJQUNyQixhQUFHLGlCQURrQkE7Y0FBQUE7Y0FFaEI7R0FBeUM7WUFDNUNzNEUsbUJBQW1CdDRFO0lBQ3JCLGFBQUcsaUJBRGtCQTtjQUFBQTtjQUVoQjtHQUF5QztZQUM1Q3U0RSxtQkFBbUJ2NEU7SUFDckIsYUFBRyxpQkFEa0JBO2NBQUFBO2NBRWhCO0dBQXlDO1lBSzVDdzRFLFVBQVV4NEUsR0FBSSxPQUFBLGdCQUFKQSxRQUFrQjtZQUM1Qnk0RSxVQUFVejRFLEdBQUVtM0UsTUFBTyxPQUFBLGdCQUFUbjNFLE9BQUVtM0UsT0FBeUI7WUFDckN1QixVQUFVMTRFLEdBQUVtM0UsTUFBS0M7SUFBTyxPQUFBLGdCQUFkcDNFLE9BQUVtM0UsTUFBS0M7R0FBOEI7WUFDL0N1QixVQUFVMzRFLEdBQUVtM0UsTUFBS0MsTUFBS1E7SUFBTyxPQUFBLGdCQUFuQjUzRSxPQUFFbTNFLE1BQUtDLE1BQUtRO0dBQW1DOzs7O09BclZ6RG5DO09BQ0FDO09BU0FLO09BQ0FDO09BVEFMO09BQ0FDO09BQ0FDO09BQ0FDO09BR0FuMkI7T0FGQVE7T0FDQUM7T0FFQUM7T0FHQXhHO09BRUFvOEI7T0FrQkFDO09BQ0FDO1dBdUJFanFFLE1BVUF1cUUsTUFXQUM7O1FBcUJBNTlEO1FBZUE4OUQ7O1FBTEFEO1FBUkF2NkU7UUFDQUU7UUFZQXM2RTs7UUFTQTl4QjtRQTRCQWt5Qjs7UUFkQUY7UUFJQUM7UUFlQUU7O1FBYUFuSTtRQXdDQTBJOztRQXhCQUg7UUFRQUM7UUFDQUM7UUFvQkFFOztRQXNCQUU7UUFnREFPOztRQTlCQUw7UUFRQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUF3QkFFO09Ba0NGQztPQUdBQztPQUdBQztPQUdBQzs7T0FPQUM7T0FDQUM7T0FDQUM7T0FDQUM7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHRS9ZUTs7OztJQUFBO0lBc0hNO0lBTVpDO0lBRUFDO0lBNUJPLGtCQTBCUEQsU0FFQUM7SUE0Qko7R0FFUTtHQUVlLFNBQW5CQyxXLFU7R0FQQTtJQUFBOztPQU9BQTs7OztJQVMwQjtJQW9DWDtJQWxCQTtJQWlDTjs7Ozs7RTs7Ozs7Ozs7Ozs7O0dFeE1EOzs7OztJQUFBO1lBbUNSQyxJQUFLQyxHQUFTQyxHQUFJLE9BQUpBLEtBQVRELElBQUFBLElBQVNDLEVBQTJCO1lBRXpDQyxJQUFLRixHQUFTQyxHQUFJLE9BQWJELEtBQVNDLElBQVRELElBQVNDLEVBQTJCO0dBbkJOO0lBQUEscUNBaUJuQ0YsS0FFQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBTUFDO0lBSFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQUdWQTs7Ozs7Ozs7WUFNQUMsUUFBT0osR0FBV0MsR0FBWSxPQUF2QkQsTUFBV0MsVUFBMEI7R0FIcEM7SUFBQTs7Ozs7Ozs7O09BR1JHO0lBZEFDO0lBRUFDOzs4REFGQUQsT0FFQUM7OztFOzs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0dDYVc7Ozs7OztJQUFUQztJQXpDVSxhQXlDVkE7SUFrQ0ZDO0lBSUFDOzs7O1lBcUNFQyxjO1lBTUFDLElBQUlYLEdBQUVZLEdBQUksT0FBTlosS0EvQ05RLFNBQUFBLFNBK0NtRCxXQUEzQ0ksR0FBRlosR0FBa0Q7WUFFdERhLEtBQUtiLEdBQUVZLEdBQUksT0FBTlosS0FqRFBRLFNBQUFBLFNBaUQ2QyxXQUFwQ0ksR0FBRlosR0FBeUM7WUFFOUNjLEtBQUtkLEdBQUksWUFBSkEsS0FuRFBRLGdCQW1EOEI7WUFFNUJPLEtBQUtmLEdBQUVZO0lBQVcsZUFBYlosS0FyRFBRO2lCQXFEeUMsV0FBaENJLEdBQUZaO0dBQXFDO1lBRTFDZ0IsT0FBS2hCLEdBQUVZLEdBQUVLO0lBQUksT0FBUmpCLEtBdkRQUSxTQXVEcUMsV0FBNUJJLFFBQXNDLFdBQXBDSyxHQUFKakI7R0FBMkM7WUFFaERrQixJQUFJbEIsR0FBRVksR0FBSSxPQUFOWixLQXpETlEsU0F5RGtDLFdBQTFCSSxRQUFGWixFQUF1QztZQUUzQ21CLE9BQU9uQixHQUNULEtBRFNBLEdBdkRlLE9BSnhCUSxZQThET1ksTUFIRXBCLE1BR0csT0FBTG9CLElBQWE7WUFFbEJDLFVBQVVyQjtJQUFJLE9BVGRnQixPQVNVaEIsbUJBQXNCLFNBQUksWUFBT0EsR0FBSyxXQUFMQSxHQUFXO0dBQUM7R0E1QmxCOzs7T0FwQ3ZDUTtPQXlDRUU7T0FNQUM7T0FFQUU7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUU7T0FFQUM7T0FLQUU7WUFRQUMsYztZQU1BQyxNQUFJdkIsR0FBRVk7SUFBSSxPQUFOWixNQTFFTlMsY0FBQUEsY0EwRW9FLFdBQTVERyxHQUFGWjtHQUFtRTtZQUV2RXdCLE9BQUt4QixHQUFFWTtJQUFJLE9BQU5aLE1BNUVQUyxjQUFBQSxjQTRFOEQsV0FBckRHLEdBQUZaO0dBQTBEO1lBRS9EeUIsT0FBS3pCLEdBQUksWUFBSkEsTUE5RVBTLHFCQThFMEM7WUFFeENpQixPQUFLMUIsR0FBRVk7SUFBVyxlQUFiWixNQWhGUFM7aUJBZ0ZxRCxXQUE1Q0csR0FBRlo7R0FBaUQ7WUFFdEQyQixPQUFLM0IsR0FBRVksR0FBRUs7SUFBSSxPQUFSakIsTUFsRlBTLGNBa0ZpRCxXQUF4Q0csUUFBa0QsV0FBaERLLEdBQUpqQjtHQUF1RDtZQUU1RDRCLE1BQUk1QixHQUFFWSxHQUFJLE9BQU5aLE1BcEZOUyxjQW9GOEMsV0FBdENHLFFBQUZaLEVBQW1EO1lBRXZENkIsU0FBTzdCO0lBQ1QsS0FEU0EsR0F0RmUsT0FBeEJTO1FBeUZPVyxNQUhFcEI7SUFHRyxPQUFMb0I7R0FBYTtZQUVsQlUsWUFBVTlCO0lBQUksT0FUZDJCLE9BU1UzQixtQkFBc0IsU0FBSSxZQUFPQSxHQUFLLFdBQUxBLEdBQVc7R0FBQztHQTVCWjs7O09BL0Q3Q1M7T0FvRUVhO09BTUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BS0FDO1lBS0ZDLE9BQU8vQixHQUFFWSxHQUFFSzt3QkFBNkIsT0FBekIsV0FBSkEsR0FBSmpCLEdBQW9DO0lBQXBCLFVBQUEsV0FBZFksR0FBRlo7SUFBc0IsT0FBQTtHQUFlO1lBRTVDZ0MsV0FBV2hDLEdBQUVZLEdBQUVLO3dCQUFzQyxPQUFsQyxXQUFKQSxHQUFKakIsR0FBNkM7SUFBN0IsVUFBQSxtQkFBaEJBLEdBQUVZO0lBQTZCLE9BQUE7R0FBZTtHQW9DakQ7SUFBUnFCO0lBRUFDO0lBd0hBQztJQUVBQztJQUVBQztJQUVBQzs7SUFTRkM7O0lBRUFDOztJQTZFQUM7WUFFQUMsWUFBWUMsR0FBNkIsT0FGekNGLHdCQUVZRSxHQUF1RDs7O0lBRW5FQztJQU1BQztJQUVBQztZQU1BQyxVQUFVbkMsR0FBRW9DO0lBQUksT0FBSkE7YUFBcUI7d0JBQW9CaEQsR0FBRWlELFlBQVUsT0FBQSxXQUF2RHJDLEdBQTJDWixHQUFlO0dBQUU7WUFFdEVrRCxXQUFXdEMsR0FBRW9DO0lBQUksT0FBSkE7YUFBcUI7d0JBQW9CaEQsR0FBRWlELFlBQVMsT0FBQSxXQUF0RHJDLEdBQTZDcUMsS0FBRmpELEdBQWtCO0dBQUU7WUFVMUVtRCxlO1lBRUFDLGtCO0dBK01lOztJQS9GZkM7O0lBbUZBQzs7SUFZQUM7SUFBZTs7SUE4Q2ZDOzs7WUFuQ0VDLFVBQVMsT0FBQSxrQ0FBNkI7WUFFdENDLGFBQVksT0FBQSxxQ0FBZ0M7WUFFNUNDO0lBQ1ksVUFBQTtJQUFBLE9BQUE7R0FBd0M7WUFFcERDLFVBQVVDLEdBQUksT0FBQSx3QkFBSkEsY0FBb0M7WUF3QmhEQyxlQUFlRCxHQUFJLE9BQUEsa0JBQUpBLEdBQXlDO1lBRXhERSxnQkFBZ0JGLEdBQUksT0ExQmxCRCxVQTBCY0MsR0FBNEM7d0JBWTVERztZQUVBQyxVQUFXQyxHQUNiLHFCQUFBLE9BQUEsY0FEYUEsR0FDa0Q7WUFFN0RDLG1CQUFvQkQ7SUFDdEI7SUFBQSxPQUFBLHVCQURzQkE7R0FDa0Q7WUFFdEVFLFVBQVdGLEdBQ2IscUJBQUEsT0FBQSxjQURhQSxHQUNrRDtZQUU3REcsbUJBQW9CSDtJQUN0QjtJQUFBLE9BQUEsdUJBRHNCQTtHQUNrRDtZQUV0RUksT0FBUUosR0FDVixxQkFBQSxPQUFBLFdBRFVBLEdBQ2tEO1lBRTFESyxTQUFVTCxHQUNaLHFCQUFBLE9BQUEsYUFEWUEsR0FDa0Q7WUFrQzVETSxNQUFPQyxHQUNULHFCQUFBLE9BQVEsVUFEQ0EsT0FDNEQ7WUFFbkVDLFNBQVVSO0lBQ1oscUJBQUlTLE1BQUksYUFESVQ7SUFFVCxPQUxETSxNQUlFRyxPQUNZLHNDQURaQTtHQUNzQztZQUV4Q0MsV0FBWVY7SUFDZCxxQkFBSVMsTUFBSSxlQURNVDtJQUVYLE9BVERNLE1BUUVHLE9BQ1ksd0NBRFpBO0dBQ3dDOztJQUdsQix1QkFFZjtRQURRZDtJQUFLLFdBdkdwQkQsVUF1R2VDO0dBQ0g7R0FGaEI7Z0JBTVFBO0lBQUosT0FBSUEsYUF6V05qQjs7a0JBMFd3RCx3QkFEbERpQjtHQUN5RTtHQUZqRjtHQUFBLFNBSUVnQixVQUFXQyxPQUFxQjlFO0lBSWYsVUFBQSwrQkFKZUE7OztLQU16QjtPQUZIO2NBSjRCQTtnQkFPaEIsc0JBUGdCQTs7O2VBQUFBOztJQUNsQyxvQkFEYThFO0dBUUg7WUFFUkMsU0FBT0QsT0FBTTlFO0lBQUksT0FWakI2RSxVQVUyQixnQ0FBcEJDLFFBQU05RTtHQUE4QjtZQUUzQ2dGLFdBQVdDO0lBQ0YsSUFBUEMsT0EzWEZ4QyxZQTBYV3VDO1dBQ1RDO2FBRUY7d0JBQXFCQyxpQkFBMEIsT0FmL0NOLFVBZXFCTSxLQUhWRixJQUdVRSxNQUE0RDtHQUFFOzs7OztPQTlIakZ2QjtPQVBBSDtPQUVBQztPQUVBQzs7T0ErQkZIOzs7cUI7cUI7OztPQS9uQkVoRDtxQjtPQUlBQztxQjs7O09Bc0lBd0I7T0FFQUM7T0EwSEFFO09BRkFEO09BTUFHO09BRkFEO09BV0ZFO09BRUFDO09BQUFBO09BQUFBO09BK0VBRTtPQUVBRTtPQUFBQTtPQU1BQztPQUVBQztPQU1BQztPQUVBRztPQVVBQztPQUVBQztPQWdIQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FtRkFDO09BWUFDOztPQXdEQVM7T0FFQUM7T0FHQUU7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FtQ0FDO09BR0FFO09BSUFFO09BaG1CRTdDO09BRUFDO09Bc25CRitDO09BRUFDOztPQWpHQWpCO09BRkFEO09BSUFOOzs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7WUN4c0JBNEI7SUFDRixJQUFJQywwQkFDYUMsU0FBSWI7SUFDbkI7UUFEbUJBLEtBRGpCWSxRQU9HLE9BQUEsMkJBTlVDO0tBR087TUFBQSxNQUFBLGNBSEhiO01BR1gsUUFBQTs7TUFFTTtPQUFMWjtPQUxVMEIsTUFBQWQ7T0FBSmUsWUFLTjNCLEdBTE15QjtPQUFBQSxNQUFBRTtPQUFJZixJQUFBYzs7TUFJUCxJQUpPRSxNQUFBaEIsV0FBQUEsSUFBQWdCOztHQVFSOztJQXVCVEM7SUFFQUM7SUFFQUM7SUFFQUM7SUFFQUM7SUFFQUM7WUFFQUMsSUFBSUMsR0FBRUMsTUFBTyxRQUFURCxJQUFFQyxVQUFBQSxhQUF5QjtZQUUvQkMsSUFBSW5HLEdBQUVDLEdBQUksT0FBTkQsSUFBRUMsRUFBVztHQW5CRzs7O09BS3BCeUY7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUc7T0FBQUE7WUE2Q0ZDLFlBQWFDLEdBQWNDLEdBQWRELGNBQWNDLElBQXNCLFNBQThCO1lBRS9FQyxZQUFhRixHQUFjQyxHQUFkRCxjQUFjQyxJQUFzQixTQUE4QjtZQUUvRUUsYUFBY0gsR0FBY0MsR0FBYzNELEdBQTVCMEQsZUFBY0MsR0FBYzNELElBQ3JDLFNBQTZDO1lBRWxEOEQsYUFBY0osR0FBY0MsR0FBYzNELEdBQTVCMEQsZUFBY0MsR0FBYzNELElBQ3JDLFNBQWlEO1lBeUh0RCtELFNBQVNDO0lBQ1gsWUFEV0E7Ozs7UUFFRSxXQUZGQTs7UUFHSSxXQUhKQTs7O1FBSWUsV0FKZkE7O0lBS0osV0FMSUE7R0FLZTtZQUd0QkMsS0FBTUMsS0FBZ0JaO0lBQ3hCLE9BRFFZLGlCQUFnQlo7Y0FDRSw4QkFEbEJZOztHQUMyRDtZQUVqRUMsUUFBUWpELEdBQTBCLE9BSGxDK0MsS0FHUS9DLE1BQXdDO1lBRWhEa0Q7SUFDRiw2Q0FFSztJQURBLE9BQUE7R0FDTztZQUVWQyxLQUFLbkQsR0FBdUIsT0FWNUIrQyxLQVVLL0MsTUFBdUM7T0F5QjlDb0Q7WUFNQUMsUUFBUXRHO0lBRVI7O09BQUE7a0JBQXlCaUQ7VUFFQSxVQUFBLDhCQUZBQTtVQUViLEdBQUE7V0FPSyxJQUFOc0QsTUFBTSxXQVhUdkcsR0FFaUJpRDttQkFTZHNELFVBVGN0RDtXQVVXLE9BRHpCc0Q7O1VBTEksSUFBQSxhQUNFLFFBQUEsV0FQVHZHOztVQVE0QjtTQUsxQjtJQVhWLE9BQUE7R0FXWTtZQUVad0csYUFBYXhHO0lBRWI7O09BQUE7a0JBQThCeUcsUUFBS3hEO1VBRVYsVUFBQSw4QkFGVUE7VUFFdkIsR0FBQTtXQU9LLElBQU5zRCxNQUFNLFdBWEp2RyxHQUVpQnlHLFFBQUt4RDttQkFTeEJzRCxVQVR3QnREO1dBVUMsT0FEekJzRDs7VUFMSSxJQUFBLGFBQ0UsUUFBQSxXQVBKdkcsR0FFaUJ5Rzs7VUFNTTtTQUsxQjtJQVhWLE9BQUE7R0FXWTtZQUVaQyxlQUFnQjFHLEdBQThCeUcsUUFBWUUsT0FDNUQsT0FEa0IzRyxPQUE4QnlHLFFBQVlFLE9BQ1Y7WUFFaERDOztLQUU4QixvQkFBa0MsTUFBQSwwQ0FBZTtLQUExQixPQUFBO0lBQTJCO0lBQWhGO0tBQUEsU0FBQTs7SUFFQyxtQ0FPRTtJQUhBLDBCQUVFO0lBREE7S0FBMEQsTUFBQTtJQUFZO0lBQXZCLE9BQUE7R0FFM0M7R0FFRSxJQUdUQyx3Q0FIUyxZQUdUQTtZQWFGQyw0QkFBNkJDLEtBQXNCQyxLQUFLQyxTQUFTQyxNQUFNQyxTQUFRQztJQUNqRixHQUFPLGlDQUR3Qkw7S0FRUztNQUFBO01BQ2xDNUc7aUJBQUtrRixHQUFFckYsR0FDVCxLQURPcUYsR0FFRyxZQUNIZ0MsSUFIQWhDLE1BR0ssT0FBQSxXQUhIckYsR0FHRnFILEdBQVE7S0FIYmxILEtBVG9EOEcsdUJBY2pDLDBCQUFtQjtLQUx0QzlHLEtBVDZEK0csb0JBZTdDLHVCQUFnQjtLQU5oQy9HLEtBVG1FZ0gsdUJBZ0JoRCwwQkFBbUI7S0FoQmJKLHFCQUFzQkMsS0FBNEJJO0tBa0IvRSx1QkFBVSxPQWxCbUJMLHdCQUFzQkMsS0FBNEJJLFNBa0JqQjs7SUFmckQsSUFBTEUsS0FBSyxZQUgwQ047SUFJbkQsU0FBSU8sU0FBU3RFO0tBQW1CLGNBSitDbUUsR0FJbEVuRTtLQUFtQiwwQjtJQUFZO0lBSmY4RCxnQkFHekJPLElBQ0FDO0lBRUosdUJBQVUsT0FObUJSLGdCQUd6Qk8sSUFDQUMsVUFFbUQ7R0FZTztZQUU5REMsaUJBQWtCdkUsR0FBc0IrRCxLQUFJSSxHQUFFSztJQUNoRCxPQXJCRVgsNEJBb0JrQjdELEdBQXNCK0QsU0FBTVMsYUFBRkw7R0FDRztZQUUvQ00sb0JBQW9CQyxJQUFLLE9BQUEsV0FBTEEsT0FBVTtZQUU5QkM7SUFDRixHQUFHOztJQUV5Qzs7R0FBYTtZQUV2REMsa0JBQW1CQyxTQUFTQyxZQUFZQyxRQUFPaEI7SUFDakQsU0FBSWlCLFNBQVNqSTtLLFlBQ0Q7U0FDSFo7S0FBSyxPQUFBLFdBRkRZLEdBRUpaOztJQUVFO0lBSlA2STtlQUtVN0ksR0FBdUIsY0FBdkJBLDZCQUE2QixHQU50QjBJO0lBQ2pCRztlQU1VN0ksR0FBMEIsY0FBMUJBLGdDQUFnQyxHQVBoQjJJO0lBQzFCRTtlQU9VN0k7T0FBc0IsVUFBQSw4QkFBdEJBOztNQUE0QjtNQVJBNEk7cUNBU3RDRTtJQU9KLFdBUElBLE9BVDZDbEI7R0FnQjNCOzs7OztPQXZScEJuQjtPQUhBRDtPQUZBRDtPQUZBSDtPQTVGQWhCO09BNk5Bc0I7V0FXRUksU0FFQUMsTUFLQUM7T0F5QkZDO09BTUFDO09BZUFFO09BZUFFO09BR0FFOztPQTZCQUU7T0FvQkFVO09BR0FFO09BRUFFO09BS0FDOzs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7O0lDdldBTTs7SUE2REFDOztJQVVBQzs7SUFVQUM7O0lBVUFDOztJQVVBQzs7SUFVQUM7O0lBVUFDOztJQVVBQztZQVVBQyxJQUNDeEcsR0FBRXlCLEdBQUVnRixHQUFLLE9BQUEsK0JBQVR6RyxHQUFFeUIsR0FBRWdGLEdBQW9DOztJQUV6Q3ZJO0lBRUF3STs7SUE4REFDO1lBbUJFQyxlQUFlQztJQUNMLElBQVJDLFlBN0pKYixXQTRKaUJZO0lBRWpCLE9BQUEscUJBRElDO0dBQ2U7Ozs7T0FyT25CZjs7OztPQTZEQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FVQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FVQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FVQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FVQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FVQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FVQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FVQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FVQUM7T0FHQXRJO09BRUF3STtPQThEQUM7T0FBQUE7Ozs7OztXQW1CRUM7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7OztJQ2pPRkc7Ozs7Ozs7Ozs7Ozs7WUFLSUMsV0FBV3BKOzs7bUJBQ1Q7S0FFRSxJQURIcUosZ0JBQUxSLGdCQUNRLFFBQUEsV0FITzdJLEdBRWY2STttQkFHU1MsZ0JBQU0sV0FBTkEsS0FMTEYsV0FBV3BKLEdBRVZxSjttQkFBQUE7OztZQXdCTEUsU0FBVUMsYUFBYUMsU0FBUXJIO0lBbEJqQztPQWtCeUJxSDs0QkFBQUE7OztJQVpyQjtLQUFBLHdCQVlRRDtLQWxCUkU7T0FSRU47O1VBVUYsSUFBWVAsY0FBTmhHO1VBQ0osS0FEVWdHLEdBRUE7Y0FDSFMsTUFIR1Q7VUFHRSxlQUhSaEcsTUFHa0Msd0JBQS9CeUc7U0FBMkM7O0tBY3BESztPQW5CQUQ7VUFnQkcsdUJBQVcsNkJBaEJkQTs7SUFvQkosV0FqQ0VQLFlBaUNpQiwyQkFGYy9HLElBQzdCdUg7R0FDZ0M7WUFFbENDLGlCQUFrQkosYUFBYUMsU0FBUW5HO0lBQ3pDLE9BTEVpRyxTQUlrQkMsYUFBYUMsYUFDQyx3QkFET25HO0dBQ0k7WUFFM0N1RyxjQUFlTCxhQUFhQyxTQUFRSzs7S0FHbEM7K0JBSWV4RyxjQUFLLE9BQUxBOztnQ0FIRWxCLGNBQUssT0FBTEE7VUFDSTJIO01BQUssT0FBTEE7OztVQUNUaEc7TUFBbUIsT0FBQSx3QkFBbkJBOztTQUVGc0Q7S0FBSyxPQUFMQTtJQUFxQjtJQU5qQyxJQURFMkMsTUFDRixpQ0FGb0NGO0lBV1AsT0FsQjdCUCxTQU9lQyxhQUFhQyxTQVdDLDZCQVYzQk87R0FVNEM7WUFpQjlDQztJQUVJLFlBQUE7a0JBS0NwSCxpQkFBUSxPQUFSQTtJQUhHLGNBQUE7O0tBQ0ksT0FBQTtRQUNIcUg7SUFBUSxPQUFSQTtHQUNRO21DQUlqQkM7WUFLRUMsU0FBVW5IO0lBQ1osT0FEWUEsYUFMWmtIO2NBT0ssOEJBRk9sSDs7R0FHQTtZQUVWb0gsS0FBTXBIO0lBQ1IsT0FEUUEsYUF2RlJrRztjQXdGaUMsOEJBRHpCbEc7O0dBQ3lFO1lBRS9FcUgsT0FBUXJIO0lBQ1YsY0FEVUE7Y0FFTCw4QkFGS0E7O0dBR0U7WUFFVmtGLFlBQWFsRjtJQUNmLE9BRGVBO2NBRVYsOEJBRlVBOztHQUdIO0dBaUVFO0lBQVpzSCxZQUFZO0lBRVpDLFdBQVc7SUFFWEMsUUFBUTtJQUVSQyxRQUFRO0lBRVJDLE9BQU87SUFFUEMsVUFBVTtJQWJLLGtCQUdmTCxXQUVBQyxVQUVBQyxPQUVBQyxPQUVBQyxNQUVBQzs7SUFHRkM7SUFFQXJEOzs7T0EvSUFvQztPQUdBQztXQTRDRU8sVUFLQUMsb0IsY0FHQUMsUUFLQW5DOztPQTdCRjhCO09BOEdBWTtPQUVBckQ7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHQzNMTzs7Ozs7Ozs7OztJQUFQc0QsT0FBa0I7SUFndUJsQnpFO0lBRUFDO0lBRUFFO0lBRUFFO0lBS0VxRSxRQUFRO0lBRVJDLE9BQU87SUFFUEMsTUFBTTtJQUVOQyxRQUFRO0lBRVJDLFdBQVc7SUFFWEMsWUFBWTtJQUVaQyxVQUFVO0lBRVZDLFlBQVk7SUFFWkMsWUFBWTtJQUVaQyxXQUFXO0lBRVhDLFdBQVc7SUFFWEMsVUFBVTtJQUVWQyxRQUFRO0lBRVJDLGFBQWE7SUFFYkMsUUFBUTtJQUVSQyxpQkFBa0I7SUFFbEJDLGFBQWE7SUFFYkMsWUFBWTtJQUVaQyxXQUFXO0lBRVhDLGNBQWM7SUFFZEMsWUFBWTtJQUVaQyxVQUFVO0lBRVZDLFlBQVk7SUFFWkMsV0FBVztJQUVYQyxZQUFZO0lBRVpDLE9BQU87SUFFUEMsT0FBTztJQUVQQyxhQUFhO0lBRWJDLFNBQVM7SUFFVEMsUUFBUTtJQUVSQyxhQUFhO0lBRWJDLFNBQVM7SUFFVEMsU0FBUztJQUVUQyxRQUFRO0lBRVJDLE9BQU87SUFFUHRDLE9BQU87SUFFUHVDLFNBQVM7SUFFVEMsZUFBZTtJQUVmQyxTQUFTO0lBRVRDO01BQW9CO0lBRXBCQyxXQUFXO0lBRVg1QyxRQUFRO0lBRVJELFFBQVE7SUFFUjhDLFNBQVM7SUFFVEMsU0FBUztJQUVUQyxVQUFVO0lBRVZDLFdBQVc7SUFFWEMsV0FBVztJQUVYQyxjQUFjO0lBRWRwRCxXQUFXO0lBRVhxRCxjQUFjO0lBRWRDLFNBQVM7SUFFVEMsV0FBVztJQUVYQyxtQkFBbUI7SUFFbkJDLGlCQUFpQjtJQUVqQkMsZUFBZTtJQUVmQztNQUFxQjtJQUVyQkMsa0JBQWtCO0lBRWxCQyxnQkFBZ0I7SUFFaEJDLGtCQUFrQjtJQUVsQkMsZ0JBQWdCO0lBRWhCQyxtQkFBbUI7SUFFbkJDLFVBQVU7SUFFVkMsaUJBQWlCO0lBRWpCQyxpQkFBaUI7SUFFakJDLFVBQVU7SUFFVkMsUUFBUTtJQUVSQztNQUFvQjtJQUVwQkMsYUFBYTtJQUViQyxpQkFBaUI7SUFFakJ6RSxZQUFZO0lBRVowRTtNQUFxQjtJQUVyQm5NLFVBQVU7SUFFVm9NLFFBQVE7SUFFUkMsT0FBTztJQUVQQyxVQUFVO0lBRVZDLGVBQWU7SUFFZkMsZ0JBQWdCO0lBRWhCQyxjQUFjO0lBRWRDLGVBQWU7SUFFZkMsY0FBYztJQUVkQyxhQUFhO0lBRWJDLGNBQWM7SUFFZEMsWUFBWTtJQUVaQyxhQUFhO0lBRWJDLFNBQVM7SUFFVEMsVUFBVTtJQUVWQyxVQUFVO0lBRVZDLFVBQVU7SUFFVkMsZUFBZTtJQUVmQyxVQUFVO0lBRVZ0SjtJQUtGVztJQUVBVjtJQUVBWTtJQUVBRztJQSt2QkF1STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUErWkFDO0lBQ0YsY0FXT3RPLEdBQUssT0FBTEEsRUFBTTs7S0FSVDtLQUc0QixtREFDdkI7S0FFVSxJQUFUdU8sU0FBUztLQUNWLHlCQURDQSwrQkFBQUE7SUFDNkU7SUFDckYsT0FBQTtHQUFZO09Bd01aQywyQ0FBQUE7WUFNQUMsZUFBZTdJO0lBQ2pCLGNBR084SSxPQUFTLE9BQVRBLE1BQWM7eUJBRFIsTUFBQSwwQ0FBZTtJQUQxQixXQUFBLHdCQUEwQix3QkFGWDlJO0lBSWYsT0FBQTtHQUFvQjtZQUVwQitJLG1CQUFtQi9JO0lBQ3JCLGNBR084SSxPQUFTLE9BQVRBLE1BQWM7O0tBREMsV0FBQSxrQ0FIRDlJO0tBR0MsT0FBQTtJQUFzRDtJQUQxRSxXQUFBLHdCQUEwQix3QkFGUEE7SUFJbkIsT0FBQTtHQUFvQjtZQUVwQmdKLG1CQUFtQmhKO0lBQXNCLFdBQUEsd0JBQTBCLHdCQUFoREE7SUFBc0IsT0FBQTtHQUF5QztZQUVsRmlKLHNCQUFzQmpKLElBQUd4RztrQkFJcEI4QjtLQUFzQixXQUFBLFdBSkY5QixRQUlwQjhCO0tBQXNCLE9BQUE7SUFBVTt5QkFEMUIsU0FBSTtJQURmLFdBQUEsd0JBQTBCLHdCQUZKMEU7SUFJdEIsT0FBQTtHQUFzQztZQWdFdENNLFNBQVM3SSxHQUFFWTtJQUNiLEtBRFdaLEdBRUQ7UUFDSHlKLElBSEl6SjtJQUdDLE9BQUEsV0FIQ1ksR0FHTjZJO0dBQVE7WUFFYmdJLGNBQWVDLEtBQWtCak87SUFBTyxPQUF6QmlPLGtCQUE0Qyx3QkFBMUJqTztHQUEwQztZQUUzRWtPLG9CQUFvQkQsS0FBSWpPLE1BQU8sT0FGL0JnTyxjQUVvQkMsS0FBSWpPLE1BQWdEO0dBRWxELElBQXRCbU87WUFFSUMsc0JBQXVCQyxNQUFPck8sTUFBS2lPLEtBQUlLO0lBQzdDO2NBRDZCRCxjQUFPck8sTUFFL0IsT0FSSGdPLGNBTXVDQyxLQUFJSztnQkFGM0NIOzs7V0FhUTVPO09BQUFBLFlBQzhCLHdCQVpLK087T0FYM0NsSjtTQVcyQmlKO2tCQWFIN0w7VUFGaEJqRCxrQkFHeUMsb0JBRHpCaUQ7VUFDVDtTQUFtRTtPQXpCbEY0QztTQVdrQ3BGO2tCQWVYNkM7VUFKZnRELGtCQUt5QyxvQkFEMUJzRDtVQUNSO1NBQW1FO09BTDFFdEQ7Y0FYK0IwTyxrQkFXL0IxTzs7TUFMdUIsVUFaL0J5TyxjQU11Q0MsS0FBSUs7TUFYM0NsSixTQVcyQmlKLG9CQU9FLHNCQUFnQjtNQWxCN0NqSixTQVdrQ3BGLG9CQVFOLHNCQUFlO01BQXZDOztLQVlBO01BSVc7T0FBQSxNQUFBO09BRUosT0FBVTtPQUFWOzs7OztLQTVCWG1POztHQWlDOEM7WUFFOUNJLFdBQVdOLEtBQXNCLE9BckNqQ0Msb0JBcUNXRCxlQUFvRDtZQUUvRE8sV0FBV1AsS0FBc0IsT0F2Q2pDQyxvQkF1Q1dELGVBQW9EO1lBRS9EUSxXQUFXUixLQUFzQixPQXpDakNDLG9CQXlDV0QsZUFBb0Q7WUFFL0RTLFlBQVlULEtBQXVCLE9BM0NuQ0Msb0JBMkNZRCxnQkFBc0Q7WUFFbEVVLFdBQVdWLEtBQXNCLE9BN0NqQ0Msb0JBNkNXRCxlQUFvRDtZQUUvRFcsV0FBV1gsS0FBc0IsT0EvQ2pDQyxvQkErQ1dELGVBQW9EO1lBRS9EWSxZQUFZWixLQUF1QixPQWpEbkNDLG9CQWlEWUQsZ0JBQXNEO1lBRWxFYSxXQUFXYixLQUFzQixPQW5EakNDLG9CQW1EV0QsZUFBb0Q7WUFFL0RjLFdBQVdkLEtBQXNCLE9BckRqQ0Msb0JBcURXRCxlQUFvRDtZQUUvRGUsZUFBZWY7SUFBMEIsT0F2RHpDQyxvQkF1RGVEO0dBQTREO1lBRTNFZ0IsYUFBYWhCLEtBQXdCLE9BekRyQ0Msb0JBeURhRCxpQkFBd0Q7WUFFckVpQixhQUFjYixNQUFPck8sTUFBS2lPO0lBQzVCLE9BeERNRyxzQkF1RFVDLE1BQU9yTyxNQUFLaU87R0FDbUI7WUFFN0NrQixZQUFhZCxNQUFPck8sTUFBS2lPO0lBQzNCLE9BM0RNRyxzQkEwRFNDLE1BQU9yTyxNQUFLaU87R0FDbUI7WUFFNUNtQixlQUFnQmYsTUFBT3JPLE1BQUtpTztJQUM5QixPQTlETUcsc0JBNkRZQyxNQUFPck8sTUFBS2lPO0dBQ21CO1lBRS9Db0IsYUFBY2hCLE1BQU9yTyxNQUFLaU87SUFDNUIsT0FqRU1HLHNCQWdFVUMsTUFBT3JPLE1BQUtpTztHQUNtQjtZQUU3Q3FCLFlBQVlyQixLQUF1QixPQXZFbkNDLG9CQXVFWUQsZ0JBQXNEO1lBRWxFc0IsZUFBZXRCO0lBQTBCLE9BekV6Q0Msb0JBeUVlRDtHQUE0RDtZQUUzRXVCLGFBQWF2QixLQUF3QixPQTNFckNDLG9CQTJFYUQsaUJBQXdEO1lBRXJFd0IsU0FBU3hCLEtBQXVCLE9BN0VoQ0Msb0JBNkVTRCxhQUFtRDtZQUU1RHlCLFNBQVN6QixLQUF1QixPQS9FaENDLG9CQStFU0QsYUFBbUQ7WUFFNUQwQixTQUFTMUIsS0FBdUIsT0FqRmhDQyxvQkFpRlNELGFBQW1EO1lBRTVEMkIsU0FBUzNCLEtBQW9CLE9BbkY3QkMsb0JBbUZTRCxhQUFnRDtZQUV6RDRCLFVBQVU1QixLQUFxQixPQXJGL0JDLG9CQXFGVUQsY0FBa0Q7WUFFNUQ2QixZQUFZN0IsS0FBdUIsT0F2Rm5DQyxvQkF1RllELGdCQUFzRDtZQUVsRThCLFFBQVE5QixLQUEyQixPQXpGbkNDLG9CQXlGUUQsWUFBc0Q7WUFFOUQrQixTQUFTL0IsS0FBeUIsT0EzRmxDQyxvQkEyRlNELGFBQXFEO1lBRTlEZ0MsU0FBU2hDLEtBQXlCLE9BN0ZsQ0Msb0JBNkZTRCxhQUFxRDtZQUU5RGlDLFNBQVNqQyxLQUF5QixPQS9GbENDLG9CQStGU0QsYUFBcUQ7WUFFOURrQyxTQUFTbEMsS0FBeUIsT0FqR2xDQyxvQkFpR1NELGFBQXFEO1lBRTlEbUMsU0FBU25DLEtBQXlCLE9BbkdsQ0Msb0JBbUdTRCxhQUFxRDtZQUU5RG9DLFNBQVNwQyxLQUF5QixPQXJHbENDLG9CQXFHU0QsYUFBcUQ7WUFFOURxQyxRQUFRckMsS0FBdUIsT0F2Ry9CQyxvQkF1R1FELFlBQWtEO1lBRTFEc0MsaUJBQWlCdEM7SUFBdUIsT0F6R3hDQyxvQkF5R2lCRDtHQUEyRDtZQUU1RXVDLFVBQVV2QyxLQUFxQixPQTNHL0JDLG9CQTJHVUQsY0FBa0Q7WUFFNUR3QyxTQUFTeEMsS0FBb0IsT0E3RzdCQyxvQkE2R1NELGFBQWdEO1lBRXpEeUMsU0FBU3pDLEtBQW9CLE9BL0c3QkMsb0JBK0dTRCxhQUFnRDtZQUV6RDBDLFVBQVUxQyxLQUFxQixPQWpIL0JDLG9CQWlIVUQsY0FBa0Q7WUFFNUQyQyxVQUFVM0MsS0FBcUIsT0FuSC9CQyxvQkFtSFVELGNBQWtEO1lBRTVENEMsUUFBUTVDLEtBQXdCLE9BckhoQ0Msb0JBcUhRRCxZQUFtRDtZQUUzRDZDLFVBQVU3QyxLQUF1QixPQXZIakNDLG9CQXVIVUQsY0FBb0Q7WUFFOUQ4QyxhQUFhOUMsS0FBd0IsT0F6SHJDQyxvQkF5SGFELGlCQUF3RDtZQUVyRStDLFlBQVkvQyxLQUF1QixPQTNIbkNDLG9CQTJIWUQsZ0JBQXNEO1lBRWxFZ0QsVUFBVWhELEtBQXFCLE9BN0gvQkMsb0JBNkhVRCxjQUFrRDtZQUU1RGlELFdBQVdqRCxLQUFzQixPQS9IakNDLG9CQStIV0QsZUFBb0Q7WUFFL0RrRCxhQUFhbEQsS0FBd0IsT0FqSXJDQyxvQkFpSWFELGlCQUF3RDtZQUVyRW1ELFlBQVluRCxLQUF1QixPQW5JbkNDLG9CQW1JWUQsZ0JBQXNEO1lBRWxFb0QsY0FBY3BELEtBQThCLE9Bckk1Q0Msb0JBcUljRCxrQkFBK0Q7WUFFN0VxRCxVQUFVckQsS0FBMEIsT0F2SXBDQyxvQkF1SVVELGNBQXVEO1lBRWpFc0QsZUFBZXREO0lBQTBCLE9Bekl6Q0Msb0JBeUllRDtHQUE0RDtZQUUzRXVELFlBQVl2RCxLQUE4QixPQTNJMUNDLG9CQTJJWUQsZ0JBQTZEO1lBRXpFd0QsWUFBWXhELEtBQThCLE9BN0kxQ0Msb0JBNklZRCxnQkFBNkQ7WUFFekV5RCxZQUFZekQsS0FBOEIsT0EvSTFDQyxvQkErSVlELGdCQUE2RDtZQUV6RTBELFNBQVMxRCxLQUEwQixPQWpKbkNDLG9CQWlKU0QsYUFBc0Q7WUFFL0QyRCxTQUFTM0QsS0FBMkIsT0FuSnBDQyxvQkFtSlNELGFBQXVEO1lBRWhFNEQsU0FBUzVELEtBQTJCLE9BckpwQ0Msb0JBcUpTRCxhQUF1RDtZQUVoRTZELFVBQVU3RCxLQUFNLE9BekpoQkQsY0F5SlVDLGNBQTZCO1lBRXZDOEQsVUFBVTlELEtBQU0sT0EzSmhCRCxjQTJKVUMsY0FBNkI7WUFFdkMrRCxXQUFXL0QsS0FBTSxPQTdKakJELGNBNkpXQyxlQUE4QjtZQUV6Q2dFLFNBQVNoRSxLQUFNLE9BL0pmRCxjQStKU0MsYUFBNEI7WUFFckNpRSxRQUFRakUsS0FBTSxPQWpLZEQsY0FpS1FDLFlBQTJCO1lBRW5Da0UsUUFBUWxFLEtBQU0sT0FuS2RELGNBbUtRQyxZQUEyQjtZQUVuQ21FLFVBQVVuRSxLQUFNLE9BcktoQkQsY0FxS1VDLGNBQTZCO1lBRXZDb0UsWUFBWXBFLEtBQU0sT0F2S2xCRCxjQXVLWUMsZ0JBQStCO1lBRTNDcUUsU0FBU3JFLEtBQU0sT0F6S2ZELGNBeUtTQyxhQUE0QjtZQUVyQ3NFLGFBQWF0RSxLQUFNLE9BM0tuQkQsY0EyS2FDLGlCQUFnQztZQUU3Q3VFLFdBQVd2RSxLQUFNLE9BN0tqQkQsY0E2S1dDLGVBQThCO1lBRXpDd0UsVUFBVXhFLEtBQU0sT0EvS2hCRCxjQStLVUMsY0FBNkI7WUFFdkN5RSxXQUFXekUsS0FBTSxPQWpMakJELGNBaUxXQyxlQUE4QjtZQUV6QzBFLFdBQVcxRSxLQUFNLE9BbkxqQkQsY0FtTFdDLGVBQThCO1lBRXpDMkUsVUFBVTNFLEtBQU0sT0FyTGhCRCxjQXFMVUMsY0FBNkI7WUFFdkM0RSxVQUFVNUUsS0FBTSxPQXZMaEJELGNBdUxVQyxjQUE2QjtZQUV2QzZFLFdBQVc3RSxLQUFNLE9BekxqQkQsY0F5TFdDLGVBQThCO1lBRXpDOEUsU0FBUzlFLEtBQU0sT0EzTGZELGNBMkxTQyxhQUE0QjtZQUVyQytFLFNBQVMvRSxLQUFNLE9BN0xmRCxjQTZMU0MsYUFBNEI7WUFFckNnRixlQUFlaEYsS0FBTSxPQS9MckJELGNBK0xlQyxtQkFBa0M7WUFFakRpRixjQUFjakYsS0FBTSxPQWpNcEJELGNBaU1jQyxrQkFBaUM7WUFFL0NrRixlQUFlbEY7SUFBMEIsT0FqTXpDQyxvQkFpTWVEO0dBQTREO1lBRTNFbUYsWUFBWW5GLEtBQXVCLE9Bbk1uQ0Msb0JBbU1ZRCxnQkFBc0Q7WUFFbEVvRixhQUFhcEYsS0FBd0IsT0FyTXJDQyxvQkFxTWFELGlCQUF3RDtZQUVyRXFGLFlBQVlyRixLQUF1QixPQXZNbkNDLG9CQXVNWUQsZ0JBQXNEO1lBRWxFc0YsWUFBWXRGLEtBQXVCLE9Bek1uQ0Msb0JBeU1ZRCxnQkFBc0Q7R0FFdEU7OztZQUVJdUYsYUFBYXZGO0lBQ1AsVUE5TU5DLG9CQTZNYUQ7V0FFUjtLQUErQixNQUFBO0lBQ3RDO0dBQUM7R0FNd0I7O0lBSnZCd0Y7SUFJdUIsTUFBQSw4QkFKdkJBO0lBR0VwUTtNQUNLOztTQVNEakQ7U0FDSixPQURJQSxhQWJOcVQ7bUJBY3VDLDhCQURqQ3JUOztRQUMwRTs7U0FOMUVzVDtTQUNtQixXQUFBLDhCQURuQkE7U0FDRyxPQUFBO21CQUVGLDhCQUhEQTs7UUFHNkI7WUFLakNDLGFBQWFDLEtBQUtDO0lBQ3BCLE9BRG9CQSw2QkFDa0Isd0JBRHZCRDtjQUVWLDhCQUZlQzs7R0FHUjtZQUVWdFUsRUFBRWEsR0FBSSxPQUxOdVQsc0JBS0V2VCxHQUFzQjtZQUV4QjBULEtBQUsxVCxHQUFJLE9BUFR1VCx5QkFPS3ZULEdBQXlCO1lBRTlCMlQsS0FBSzNULEdBQUksT0FUVHVULHlCQVNLdlQsR0FBeUI7WUFFOUI0VCxXQUFXNVQsR0FBSSxPQVhmdVQsK0JBV1d2VCxHQUErQjtZQUUxQzZULEtBQUs3VCxHQUFJLE9BYlR1VCx5QkFhS3ZULEdBQXlCO1lBRTlCOFQsR0FBRzlULEdBQUksT0FmUHVULHVCQWVHdlQsR0FBdUI7WUFFMUIrVCxPQUFPL1QsR0FBSSxPQWpCWHVULDJCQWlCT3ZULEdBQTJCO1lBRWxDZ1UsT0FBT2hVLEdBQUksT0FuQlh1VCwyQkFtQk92VCxHQUEyQjtZQUVsQ2lVLFFBQVFqVSxHQUFJLE9BckJadVQsNEJBcUJRdlQsR0FBNEI7WUFFcENrVSxJQUFJbFUsR0FBSSxPQXZCUnVULHdCQXVCSXZULEdBQXdCO1lBRTVCbVUsU0FBU25VLEdBQUksT0F6QmJ1VCw2QkF5QlN2VCxHQUE2QjtZQUV0Q29VLElBQUlwVSxHQUFJLE9BM0JSdVQsd0JBMkJJdlQsR0FBd0I7WUFFNUJxVSxJQUFJclUsR0FBSSxPQTdCUnVULHdCQTZCSXZULEdBQXdCO1lBRTVCc1UsR0FBR3RVLEdBQUksT0EvQlB1VCx1QkErQkd2VCxHQUF1QjtZQUUxQnVVLFNBQVN2VSxHQUFJLE9BakNidVQsNkJBaUNTdlQsR0FBNkI7WUFFdEN3VSxNQUFNeFUsR0FBSSxPQW5DVnVULDBCQW1DTXZULEdBQTBCO1lBRWhDeVUsS0FBS3pVLEdBQUksT0FyQ1R1VCx5QkFxQ0t2VCxHQUF5QjtZQUU5QjBVLFNBQVMxVSxHQUFJLE9BdkNidVQsNkJBdUNTdlQsR0FBNkI7WUFFdEMyVSxNQUFNM1UsR0FBSSxPQXpDVnVULDBCQXlDTXZULEdBQTBCO1lBRWhDNFUsR0FBRzVVLEdBQUksT0EzQ1B1VCx1QkEyQ0d2VCxHQUF1QjtZQUUxQjZVLEdBQUc3VSxHQUFJLE9BN0NQdVQsdUJBNkNHdlQsR0FBdUI7WUFFMUI4VSxHQUFHOVUsR0FBSSxPQS9DUHVULHVCQStDR3ZULEdBQXVCO1lBRTFCK1UsR0FBRy9VLEdBQUksT0FqRFB1VCx1QkFpREd2VCxHQUF1QjtZQUUxQmdWLEdBQUdoVixHQUFJLE9BbkRQdVQsdUJBbURHdlQsR0FBdUI7WUFFMUJpVixHQUFHalYsR0FBSSxPQXJEUHVULHVCQXFER3ZULEdBQXVCO1lBRTFCa1YsS0FBS2xWLEdBQUksT0F2RFR1VCx5QkF1REt2VCxHQUF5QjtZQUU5Qm1WLEdBQUduVixHQUFJLE9BekRQdVQsdUJBeURHdlQsR0FBdUI7WUFFMUJvVixLQUFLcFYsR0FBSSxPQTNEVHVULHlCQTJES3ZULEdBQXlCO1lBRTlCcVYsT0FBT3JWLEdBQUksT0E3RFh1VCwyQkE2RE92VCxHQUEyQjtZQUVsQ3NWLElBQUl0VixHQUFJLE9BL0RSdVQsd0JBK0RJdlQsR0FBd0I7WUFFNUJ1VixRQUFNdlYsR0FBSSxPQWpFVnVULDBCQWlFTXZULEdBQTBCO1lBRWhDd1YsSUFBSXhWLEdBQUksT0FuRVJ1VCx3QkFtRUl2VCxHQUF3QjtZQUU1QnlWLE1BQU16VixHQUFJLE9BckVWdVQsMEJBcUVNdlQsR0FBMEI7WUFFaEMwVixPQUFPMVYsR0FBSSxPQXZFWHVULDJCQXVFT3ZULEdBQTJCO1lBRWxDMlYsR0FBRzNWLEdBQUksT0F6RVB1VCx1QkF5RUd2VCxHQUF1QjtZQUUxQjRWLEtBQUs1VixHQUFJLE9BM0VUdVQseUJBMkVLdlQsR0FBeUI7WUFFOUJsRCxJQUFJa0QsR0FBSSxPQTdFUnVULHdCQTZFSXZULEdBQXdCO1lBRTVCNlYsS0FBSzdWLEdBQUksT0EvRVR1VCx5QkErRUt2VCxHQUF5QjtZQUU5QjhWLE9BQVE5VixHQUFJLE9BakZadVQsMkJBaUZRdlQsR0FBMkI7WUFFbkMrVixHQUFHL1YsR0FBSSxPQW5GUHVULHVCQW1GR3ZULEdBQXVCO1lBRTFCZ1csU0FBU2hXLEdBQUksT0FyRmJ1VCw2QkFxRlN2VCxHQUE2QjtZQUV0QzFDLE9BQU8wQyxHQUFJLE9BdkZYdVQsMkJBdUZPdlQsR0FBMkI7WUFFbEN3QyxFQUFFeEMsR0FBSSxPQXpGTnVULHNCQXlGRXZULEdBQXNCO1lBSXhCaVcsSUFBSWpXLEdBQUksT0E3RlJ1VCx3QkE2Rkl2VCxHQUF3QjtZQUU1Qm9HLEVBQUVwRyxHQUFJLE9BL0ZOdVQsc0JBK0ZFdlQsR0FBc0I7WUFFeEJrVyxPQUFPbFcsR0FBSSxPQWpHWHVULDJCQWlHT3ZULEdBQTJCO1lBRWxDbVcsU0FBT25XLEdBQUksT0FuR1h1VCwyQkFtR092VCxHQUEyQjtZQUVsQ29XLE1BQU1wVyxHQUFJLE9BckdWdVQsMEJBcUdNdlQsR0FBMEI7WUFFaENxVyxNQUFNclcsR0FBSSxPQXZHVnVULDBCQXVHTXZULEdBQTBCO1lBRWhDc1csTUFBTXRXLEdBQUksT0F6R1Z1VCwwQkF5R012VCxHQUEwQjtZQUVoQ3VXLEdBQUd2VyxHQUFJLE9BM0dQdVQsdUJBMkdHdlQsR0FBdUI7WUFFMUJ3VyxTQUFTeFcsR0FBSSxPQTdHYnVULDZCQTZHU3ZULEdBQTZCO1lBRXRDeVcsTUFBTXpXLEdBQUksT0EvR1Z1VCwwQkErR012VCxHQUEwQjtZQUVoQzBXLEdBQUcxVyxHQUFJLE9BakhQdVQsdUJBaUhHdlQsR0FBdUI7WUFFMUIyVyxNQUFNM1csR0FBSSxPQW5IVnVULDBCQW1ITXZULEdBQTBCO1lBRWhDNFcsTUFBTTVXLEdBQUksT0FySFZ1VCwwQkFxSE12VCxHQUEwQjtZQUVoQzZXLEdBQUc3VyxHQUFJLE9BdkhQdVQsdUJBdUhHdlQsR0FBdUI7WUFFMUI4VyxHQUFHOVcsR0FBSSxPQXpIUHVULHVCQXlIR3ZULEdBQXVCO1lBRTFCK1csTUFBTS9XLEdBQUksT0EzSFZ1VCwwQkEySE12VCxHQUEwQjtZQUVoQ2dYLE1BQU1oWCxHQUFJLE9BN0hWdVQsMEJBNkhNdlQsR0FBMEI7WUFFaENpWCxrQkFBa0JoUyxRQUFRWjtJQUNWLFdBQUEsOEJBREVZO0lBQ2MsR0FBL0IsMENBRHlCWixjQUFSWTtLQUVmLE9BQUEsOEJBRnVCWjtJQUd2QjtHQUFPO1lBRVY2UyxXQUFXN1M7SUFBSztJQUFBLE9BTGhCNFMsa0NBS1c1UztHQUF3RDtZQUVuRThTLGNBQWM5UztJQUFLO0lBQUEsT0FQbkI0UyxxQ0FPYzVTO0dBQTJEO1lBRXpFK1MsV0FBVy9TO0lBQUs7SUFBQSxPQVRoQjRTLGtDQVNXNVM7R0FBd0Q7WUFFbkVnVCxpQkFBaUJoVDtJQUFLO0lBQUEsT0FYdEI0Uyx3Q0FXaUI1UztHQUE4RDtZQUUvRWlULGNBQWNqVDtJQUFLO0lBQUEsT0FibkI0UyxxQ0FhYzVTO0dBQTJEO1lBRXpFa1QsYUFBYWxUO0lBQUs7SUFBQSxPQWZsQjRTLG9DQWVhNVM7R0FBMEQ7WUFuRHZFbVQsTUFBTXhYLEdBQUksT0EzRlZ1VCwwQkEyRk12VCxHQUEwQjtPQXdEbEMyRDtZQUVBOFQ7O0tBRVEsWUFBQTs7TUFFVTs7O1VBQW9DLE1BQUE7U0FBWTtNQUF2QixPQUFBOztvREFDbEM7S0FGVTtNQUFzQyxNQUFBO0tBQVk7S0FBdkIsT0FBQTtJQUU5QjtJQUpXLE9BQUE7R0FJVjtZQUVqQkM7SUFDRjtJQUVBOzs7R0FDcUQ7WUFFbkRDO2lCQUlLeGI7a0JBQXFFQyxHQUFLLFdBQTFFRCxHQUFxRUMsR0FBUzswQkFBeEMsT0FWM0NzYiwyQkFVbUU7S0FBRSxPQUFBO0lBQWU7d0JBRHpFLE9BVFhBLDJCQVNtQztJQUNuQyxPQUFBO0dBQXFGO1lBRXJGRSxzQkFBdUI1WDtJQUN6QjtLQUFRLE1BRGlCQTs7O0lBSXpCOzs7R0FDd0U7WUFFdEU2WDtJQUNGO0lBRUE7OztHQUEwRTtZQUV4RUM7SUFDRixhQVFPM2IsR0FBSyxPQUFMQSxFQUFNOztLQUxIOzs7O1NBQ0M7O1NBQ0E7O2lCQUNBOztLQUNBO0lBQVM7SUFDbEIsT0FBQTtHQUFZO1lBRVo0YiwrQkFBc0MvWCxHQUFHZ0UsU0FBU0MsTUFBTUMsU0FBUUM7SUFDbEUsT0FNRTthQTczREFOO2FBczNEc0M3RDthQXZoRXBDNEk7YUF1aEV1QzVFO2FBQVNDO2FBQU1DO2FBT3hEO2VBbmtFQWI7O29DQW9rRXFELFNBQUM7O2lCQUE3QzJVOzttQkFBTTs7OztvQ0FDc0Msc0JBQWM7O2lCQUExREM7O21CQUFNOzs7O2dCQUNWLE9BQUEsV0FWMkQ5VCxRQVF2RDZULElBQ0FDO2VBQ3lCO0dBQUU7WUFFcENDLDJCQUEyQmxZLEdBQUVtRSxHQUFFSztJQUNqQyxPQWJFdVQsK0JBWTJCL1gsT0FBSXdFLGFBQUZMO0dBQ3dCO1lBOFpwQ2dVLFNBN1FOdlM7SUFDWDtLQUFNLFFBQUEsd0JBREtBOzs7dUJBVUM7Ozt3QkFzRUc7Ozt5QkE2QkQ7OzswQkFUSTttREF2Q0w7bURBaEJBO2lEQUZGO3dEQXdFTzt3REFEQTtzREFFRjs7O21EQXNCSDtvREE5RUM7eURBMkVLO21EQS9FTjt3REE4RUs7dURBL0VEO3VEQTRDQTs7Ozs7OzBCQVBHO3lEQUREO3lEQURBOzREQUpHOzREQUNBO29EQTZDUjtxREFDQztzREF2QkM7OztxREE3QkQ7cURBQ0E7cURBQ0E7cURBQ0E7cURBQ0E7dURBR0U7MkRBQ0k7Ozs7Ozs7eUJBL0RUOzs7MEJBd0VLO21EQTFESjtxREFxREU7cURBakJBO3FEQUNBO3FEQUNBO3FEQUNBOzs7a0RBcERIO2tEQUNBOzREQTRGVTt1REFDTDs0REFGSztnRUFESTtzREFyQlY7Ozs7OzswQkEvRUo7a0RBQ0E7a0RBQ0E7a0RBQ0E7a0RBQ0E7a0RBQ0E7a0RBQ0E7a0RBQ0E7OztrREFkQTtrREFDQTtrREFDQTtrREFDQTtrREFDQTtrREFDQTtrREFDQTs7Ozs7Ozs7d0JBbUJFOzs7eUJBZ0NKOzs7MkJBakVFO2tEQUNBO2tEQUNBO2tEQUNBO2tEQUNBO2tEQUNBO2tEQUNBOzs7Z0RBNERGO2dEQUNBO2dEQUNBO2tEQXdDRTtvREE5REU7MkRBdUZPO3FEQUNOOzs7Ozs7MkJBMUVMO2lEQVNDO2lEQUNBO2lEQUNBO2dEQVZEO2dEQUNBO2dEQUNBO2dEQUNBOzs7b0RBOUJJO29EQUNBO29EQUNBO2lEQXlFSDttREFwRUU7bURBSEE7b0RBTUM7Ozs7Ozs7MEJBZ0ZROzs7MkJBN0VSO29EQXBCQTtvREFDQTtvREFDQTtvREFDQTtvREFDQTtvREFDQTs7OzJEQXlGTzt5REFJRjtzREE3RUg7bURBUUg7eURBZ0VNO3lEQTVCQTswREFDQzs7Ozs7OzJCQXRDSDt1REFWQTt5REFLRTswREFDQzt5REE0RUQ7OERBSks7NERBR0Y7eURBSkg7OztxREF4Qko7c0RBQ0M7dURBS0M7dURBSEE7d0RBQ0M7cURBQ0g7dURBakRFOzs7OztJQWtGVjtHQUFZO1lBRWpCd1M7SUFBb0I7c0JBSWQ7Ozs7O1FBSEE7O1FBQ0E7Z0JBQ0E7O0lBRUQ7R0FBWTtZQUVqQkM7SUFBcUI7c0JBSWY7Ozs7O1FBSEE7O1FBQ0E7Z0JBQ0E7O0lBRUQ7R0FBWTtZQUVqQkM7SUFBc0I7Ozs7O1NBa0JoQjs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQzs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FYQTs7U0FGQTs7O1NBQ0E7O1NBRUE7aUJBSkE7Ozs7OztRQU5EOztRQUtBOztRQURBOztRQU5BOztRQUZBOztRQU1BOztRQUhBOztRQUlBOztRQUZBOztRQUpBOztRQUZBOztRQURBOztJQTJCRDtHQUFZO1lBRWpCQztJQUFzQjs7Ozs7O1NBcURoQjs7U0FDQTs7U0FVQTs7U0FEQTs7U0F2QkE7O1NBQ0E7O1NBVEE7O1NBR0E7O1NBWUE7O1NBWEE7O1NBRUE7O1NBdUJBOztTQTVCQTs7U0EwQkE7O1NBdEJBOztTQXFCQTs7U0FXQTs7U0FuRUM7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBRUE7O1NBd0NBOztTQTFCQTs7U0FvQ0E7O1NBckNBOztTQXNDQTs7U0FDQTs7U0FsREE7O1NBeUJBOztTQUVBOztTQURBOztTQWFBOzs7OztTQTFCRjs7U0FDQTs7U0EwQkM7O1NBekNBOztTQTZCQTs7U0E1Q0E7O1NBbUVBOztTQUlBOztTQUdBOztTQURBOztTQUhBOztTQUtBOztTQUdBOztTQURBOztTQURBOztTQS9EQTs7U0F3REE7O1NBR0E7O1NBOUNBOztTQVRBOztTQUNBOztTQUNBOztTQUNBOztTQUNBOztTQUNBOztTQUNBOztTQUNBOztTQUNBOztTQW9CQTs7U0FnQkE7O1NBRkE7O1NBWkE7O1NBZEE7O1NBZUE7O1NBQ0E7O1NBQ0E7O1NBWkE7O1NBYUE7OztJQTRCRDtHQUFZO1lBRWpCQyx5QkFBc0IsU0FBWTtZQU1sQ0MsU0FBU0MsT0FBTTNiLEdBRWY2SSxHLE9BQUFBLElBQUFBLElBRGdCLFdBREQ3SSxHQUFOMmI7WUFhVEMsT0FBT3hjLEdBQUVZLEdBQUksT0FBQSxXQUFKQSxHQUFGWixHQUFTO1lBRWhCeWM7SUFJVTtJQUFULGtCLE9BbkJESCxjQXhGQUY7SUErRkk7O2VBYkpDOzs7O1FBY2M7U0FBQTs2QixPQVJkQyxjQXBJQUw7OztRQTZJYztTQUFBOzZCLE9BVGRLLGNBN0hBSjs7O1FBdUljO1NBQUE7NkIsT0FWZEksY0F0SEFIOztRQWtIU0k7SUF1QlIsT0FOREM7YUFBQUE7ZUFBQUE7OzBCQWZBL1M7a0IsT0FBQUE7NEJBQUFBOzRCQURnQjttREFEUDhTLE9BRlRGLG1CQUVlTDs7OztHQXVCaUM7WUFRaERVLFlBQVlIO0lBQ2QsUUFEY0EsT0FDc0Q7SUFBbEQsSUFBSSxjQUFLLDRCQURiQSxTQUNRO2VBQW9DO0dBQWM7WUFFdEVJLG9CQUFpQixXQUFZO1lBRTdCQyxZQUFTLFNBQUk7WUFFYkM7SUFDRjtLQUFVLE9BQUEsMkNBTFJGOzs7O29EQUVBQyxNQUxBRjs0QkFBQUEsWUFXNEM7R0FDbkM7WUFLWEksZTtZQW9FQUMsT0FBUUM7SUFDQSxJQUFOM0YsTUFBTSwrQkFEQTJGO2FBRVYsOEJBREkzRixNQUVDLFlBSEsyRjtrREFDTjNGOzs7O29DQUFBQTs7b0JBQUFBOztzQkFBQUE7MkJBRE0yRjswQkFBQUE7d0JBQUFBO3NCQUFBQTs7b0NBQ04zRjs7b0JBQUFBOztzQkFBQUE7O3dCQUFBQTs7MEJBQUFBOytCQURNMkY7OEJBQUFBOzRCQUFBQTswQkFBQUE7d0JBQUFBO3NCQUFBQTs7b0NBQ04zRjs7b0JBQUFBOztzQkFBQUE7O3dCQUFBQTs2QkFETTJGOzZCQUFBQTsyQkFBQUE7d0JBQUFBO3NCQUFBQTs7b0NBQ04zRjs7b0JBQUFBOztzQkFBQUE7MkJBRE0yRjsyQkFBQUE7eUJBQUFBO3VCQUFBQTs7b0NBQ04zRjt1QkFETTJGO3VCQUFBQTs7b0NBQ04zRjs7b0JBQUFBOztzQkFBQUE7O3dCQUFBQTs2QkFETTJGOzZCQUFBQTsyQkFBQUE7eUJBQUFBO3VCQUFBQTs7b0NBQ04zRjs7b0JBQUFBOztzQkFBQUE7O3dCQUFBQTs7MEJBQUFBOzs0QkFBQUE7OzhCQUFBQTs7Z0NBQUFBOztrQ0FBQUE7dUNBRE0yRjt1Q0FBQUE7cUNBQUFBO21DQUFBQTtpQ0FBQUE7K0JBQUFBOzZCQUFBQTsyQkFBQUE7eUJBQUFBO3VCQUFBQTs7b0NBQ04zRjs7b0JBQUFBOztzQkFBQUE7O3dCQUFBQTs2QkFETTJGOzZCQUFBQTsyQkFBQUE7eUJBQUFBO3VCQUFBQTs7b0NBQ04zRjs7b0JBQUFBOztzQkFBQUE7O3dCQUFBQTs2QkFETTJGOzZCQUFBQTsyQkFBQUE7eUJBQUFBO3VCQUFBQTs7b0NBQ04zRjs7b0JBQUFBO3lCQURNMkY7eUJBQUFBO3VCQUFBQTs7b0NBQ04zRjs7b0JBQUFBOztzQkFBQUE7O3dCQUFBQTs2QkFETTJGOzZCQUFBQTsyQkFBQUE7eUJBQUFBO3VCQUFBQTs7b0NBQ04zRjs7b0JBQUFBOztzQkFBQUE7MkJBRE0yRjsyQkFBQUE7eUJBQUFBO3VCQUFBQTs7b0NBQ04zRixxQkFETTJGLGFBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTsyQkFETTJGOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzswQkFBQUE7OzRCQUFBQTs7OEJBQUFBOztnQ0FBQUE7O2tDQUFBQTt1Q0FETTJGO3VDQUFBQTtxQ0FBQUE7bUNBQUFBO2lDQUFBQTsrQkFBQUE7NkJBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGLHNCQURNMkYsYUFBQUE7O29DQUNOM0Y7dUJBRE0yRjt1QkFBQUE7O0lBc0hELFlBdEhDQTtHQXNITTtZQUVkQyxXQUFXcFo7aUJBQXFDQSxHQUFLLFdBeEhyRGtaLE9Bd0hnRGxaLElBQW9CO3dCQUEvQixTQUFJO0lBQUUsT0FBQSxpQ0FBaENBO0dBQTBEO1lBV3JFcVosWUFBYWhWO0lBQ2YsYUF1Qk9BLElBQU0sV0FBTkEsSUFBbUI7O0tBcEJ0QixhQW1CT0EsSUFBTSxXQUFOQSxJQUFzQjs7TUFoQnpCLGFBZU9BLElBQU0sV0FBTkEsSUFBd0I7O09BWjNCLGFBV09BLElBQU0sV0FBTkEsSUFBeUI7O1FBUjVCLGFBT09BLElBQU0sV0FBTkEsSUFBc0I7O1NBSnpCLGFBR09BLElBQU0sV0FBTkEsSUFBcUI7NkJBRGYsV0FsQmxCQSxJQWtCNEM7U0FEckMsVUFwdUJsQmtULGFBbXRCV2xUO1NBbUJPLE9BQUE7UUFBMkI7UUFML0IsVUFudUJkaVQsY0FxdEJXalQ7UUFvQkcsT0FBQTtPQUE0QjtPQVRoQyxVQWx1QlZnVCxpQkF1dEJXaFQ7T0FxQkQsT0FBQTtNQUErQjtNQWJuQyxVQWp1Qk4rUyxXQXl0QlcvUztNQXNCTCxPQUFBO0tBQThCO0tBakJsQyxVQWh1QkY4UyxjQTJ0Qlc5UztLQXVCVCxPQUFBO0lBQTRCO0lBckJoQyxVQS90QkU2UyxXQTZ0Qlc3UztJQXdCYixPQUFBO0dBQXlCO1lBRXpCaVYsZ0JBQWdCalY7aUJBQXVDQSxJQUFNLFdBMUI3RGdWLFlBMEJ1RGhWLEtBQTJCO3dCQUF0QyxTQUFJO0lBQUUsT0FBQSxpQ0FBbENBO0dBQW1FO1lBRW5Ga1Y7SUFFRixvQkFHWSw4QkFBbUI7O0tBRGxCOztJQUE0QjtJQUN2QyxPQUFBO0dBQThCO0dBR2hDO0lBREVDO01BQ0Y7O1NBR007VUFERTNTOzthQXhzQ055Rzs7Y0FBQUE7O2VBQUFBOztnQkFBQUE7b0JBQUFBO1NBZ3RDRTtVQUNZOzBCQUFlbU0sR0FBSyxPQUFBLGlDQUFMQSxHQUFxQjtXQUExQ0MsTUFBTSxpQ0FUUjdTO1dBVUYsZUFBSXZDLFVBQVksT0FEWm9WLElBQ0FwVixVQUFrRTtVQUF0RTs7Ozs7VUFFQTtXQUFJcVYsc0JBQVMsT0FBWSxtQ0FBNkI7V0FDbERDLFdBREFEO1VBRUosZ0JBQUlyVjtXQUNGO1lBQUlsQyxJQUhGdVg7WUFJRUUsS0FIRkQsK0JBRUV4WDtZQUVBMFgsT0FEQUQsZUFBQUE7V0FIRkQsVUFFRXhYO1dBdnRDVmtMLGtCQXN0Q1FoSixVQUdFd1Y7V0FFRyxTQUEyQzs7UUFBQTtZQUl4REM7SUFBa0IsV0EvdENsQnpNO0lBK3RDaUMsT0FBQTtHQUErQztZQUVoRjBNO0lBQ00sV0Fya0NOakw7SUFza0NhLE9BQUE7R0FBa0M7WUFFL0NrTDtJQUNNLFdBemtDTmxMO0lBMGtDYSxPQUFBO0dBQStCO09BRTVDbUw7WUFNQUMsV0FBVzdWLFVBQVM2STtJQUNiLElBQUx6STthQUNJMFYsS0FBS2pOO0tBQ1gsaUJBRFdBO1VBQ0RrTixTQURDbE4saUJBQ1BtTixPQVRKSjs7VUFTVUcsYUFBTkMsT0FET25OOztNQUlQb04sS0FITUYsZUFIQy9WLHlCLE9BRUw4VixLQUNJQztLQUZSM1YsWUFodkNGNEksa0JBc3ZDK0IsOEJBRDNCaU4sS0FIQUQ7O0lBSWlFO0lBTC9ERixLQUZjak47SUFTdEIsT0FSSXpJO0dBU0Y7WUFFQThWLGFBQWM5VjtJQUNoQixZQURnQkE7Z0JBRU47UUFDSHZJO0lBSFN1STtXQTN2Q2Q0SSxvQkE4dkNLblI7R0FFbUI7WUFFeEJzZSx1QkFBd0JoQixHQUUxQixPQUFXLGNBRmVBLEdBRXNDOzs7O09BdjNEOUR0TTs7T0Fxb0JBTztPQU5BRDtPQVFBRTtPQWRBSjtPQTFOQUg7T0FvTkFFO09BOWpEQWxLO09BRUFDO09BRUFFO09BRUFFO09BNGdFQUU7T0FFQThUOztRQXpnRUUzUDtRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUlBRTtRQUZBRDtRQUlBRTtRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBdEM7UUFFQXVDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUE1QztRQUVBRDtRQUVBOEM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQXBEO1FBRUFxRDtRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBekU7UUFFQTBFO1FBRUFuTTtRQUVBb007UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQXRKO09BT0ZDO09BRkFVO09BSUFFO09BbzNEQXNUO09BWUFHO09BOTNEQXRUO09BdTJEQWtUO09BbEJBSDtPQU1BQztPQU9BQztXQThjRWUsVUF2R0FMO1dBMEhBUztPQTcwQkY3SztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQzs7T0FJQUM7T0ErcUJBNkY7T0FvRUFDO09Bd0hBRTtPQVdBQztPQTBCQUM7T0FFQUM7O1FBMTRCRXRXO1FBa0JBOUQ7UUFFQXVVO1FBb0hBcUQ7UUFsSEFwRDtRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQU1BRztRQUpBRjtRQUVBQztRQUlBRTtRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBOVk7UUFFQStZO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUExWTtRQUVBa0Y7UUFFQWdWO1FBRUF2QjtRQUVBN1A7UUFFQThQO1FBRUFDO1FB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Ozs7Ozs7Ozt3RDswRDswRDs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Szs7STtHOztJOzs7Ozs7Rzs7SSxzQjtHOztJO0ssTTtLLE07O0k7STtJLFc7SSxzQjtHOzs7SSxrQixzQixnQzs7O0ssTTs7O08sYTs7TztRLEs7USxLOzs7OztPO1EsTztRLE87USxLOztnQzs7dUM7UTs7OztzQztPOztPO1EsTztRLE87USxPO1EsSzs7Ozs7d0M7Uzs7Ozt1QztROztPOztHOztJO0ssSztLLEs7Ozs7NEI7O0ksc0I7Rzs7STtLLEs7SyxLOzs7Szs7YTs7STtxQztHOzs7SyxtQjtJO0ksSSxpQixtQjs7O00sTTs7TSxNO0s7Ozs7Ozs7OzhCOzs7OzhCOzs7Ozs7TSxZOzs7Ozs7OEI7Ozs7O007O0ksZ0Q7Z0I7O0ssTTtJO0c7O0k7O2U7ZTs7O0ssTyx5Qjs7SSxtQixJO0k7Yyx5QjtJLEksa0I7Ozs7TSx5QjtNOzs7OztJLE87O3FCLGlDOztJOzs7O0c7O0k7Ozs7STtHOztJOzZDOztLOztNLEs7SztLLE87O0k7SSxPO0c7NEIsK0I7OztLOzs7O0k7STtJLFksTzs7Ozs7b0M7OEI7Rzs7STs7SSxPO0c7O0k7STs7O0k7O0ssSzs7Szs7O3lCO0k7Rzs7STtJOzs7O0k7Ozs7Yyw0Qjs7O0c7O0k7O0s7OztJO0c7O0k7STtJLHlCO21CLGlCOztJOzs7Ozs7Ozs7Rzs7STs7Ozs7Ozs7Rzs7SSxrQjs7STtHOztJLHNCO0ksZTtJOzs7Szs7STtJLDZCO0c7O0k7STs7OztLOztJO0k7Rzs7STs7Ozs7Ozs7Rzs7SSxrQjs7STtHOztJLHNCO0ksZTtJOzs7Szs7STtJLDZCO0c7O0k7STs7OztLOztJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7O3dDOzs7STs7Szs7TTtNLHNCO0s7NkI7Ozs7OztLLGM7Szs2Qjs7Ozs7STs7O0s7NkI7Ozs7OEI7O0k7Ozs7O0c7OztLLEk7Ozs7O007Ozs7OztNOzs7Ozt5Qjs7TTs7TTtPLEs7Tzs7Ozs7Ozs7O0s7O007TyxLOztPO2tCO2tCOztNOzs7Tyx5Qjs7OztNO0s7SztNLEs7O007O00sTTs7O1E7O1E7Ozs7Ozs7OztzQjs7UTs7aUM7O1E7O0k7STtJO0c7cUIseUM7b0IsOEI7c0IsOEI7cUIsa0I7O0kscUIsVSxXLFM7SSxjLE07Ozs7TTs7Ozs7UztTOzs7OztpQixVLFcsVTs7OztLO0s7SztLOztJO0k7STtJOzs7SSxxQixVLFcsUztJLGMsTTs7OztNOzs7OztTOzttQjs7Ozs7aUIsVSxXLFU7Ozs7SztLO0s7Szs7STtJO0k7STs7O0kscUIsVSxXLFM7SSxjLFE7Ozs7Ozs7O087TztPO087Ozs7Ozs7Uzs7bUI7Ozs7O2lCLFUsVyxVOztLO0s7SztLOztJO0k7STtJOzs7SSxxQixVLFcsUztJLGMsTTs7OztNOzs7OztTOzttQjs7Ozs7aUIsVSxXLFU7Ozs7SztLO0s7Szs7STtJO0k7STs7O0k7Ozs7OztHOztJOzs7Ozs7Ozs7O0s7TSxPOzs7Ozs7Ozs7O21DOztLOztNLFU7TSxNOzs7OztJOzs7Ozs7OztZOzs7Ozs7Ozs7O2E7OztjLE87O2EsYyxROzs7OztjLE87Ozs7Ozs7YyxPOzs7O2EsTzs7O0c7c0IsTyxxQjs0QixhOzJCLGE7a0MsYTs2QixhO21DLGE7MkIsWTsyQixZO2dDLFk7O0k7OztHO3FCLGlDOztJOzs7Ozs7O1k7Ozs7O0c7O0k7Ozs7TztRLE87TyxPOztLOzs7O0s7O0ssTzs7SSxrQixJO0k7O0ksTztHOzRCLDZCOzs7Szs7OztJO0ksSTs7aUQ7NkI7Rzs7a0IscUIsYTs7SSxjLE0saUM7STs7O2lDLDBCOzs7Ozs7OztNO007TyxvQjs7Ozs7SztLO0s7Ozs7Ozs7OztNO007TyxvQjs7Ozs7SztLO0s7SztLOzs7Ozs7OztLO0s7TSxvQjs7Ozs7STtJO0k7STtHOztrQix3QixhOztJLGMsTSxpQztJOzs7Ozs7O007TTtPLG9COzs7OztLO007OztLO0s7SztLO0s7Ozs7Ozs7O0s7SztNLG9COzs7OztJO0k7STtHOztrQix3QixhOztJLGMsTSxpQztJOzs7Ozs7O007TTtPLG9COzs7OztLO007OztLO0s7SztLO0s7Ozs7Ozs7O0s7SztNLG9COzs7OztJO0k7STtHOztJOzs7SyxJLE07Ozs7OztJOzs7Ozs7WTs7OztHO3lCLE8sdUI7Z0MsWTsyQixZO0c7O0k7SyxNO0s7O2lCOzs7O0s7Ozs7Szs7O0k7Rzs7STs7Ozs7STs7SyxNOzs7STtrQjtLLHlCO0s7TTs7TyxROzs7OztxQixPO007O08sUTs7Ozs7Rzs7STs7Ozs7STs7SyxNOzs7STtrQjs7SyxZLE87Szs7TTs7TyxROzs7OztNLFksTztNOztPO1M7Ozs7O0c7O0k7Ozs7O0k7O0ssTTs7O0k7a0I7O0ssWSxPO0s7O007O08sUTs7Ozs7TSxZLE87TTs7TztTOzs7OztHO0c7O0ksVTt1QixPLHlDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxVO3VCLE8seUM7STtLO007OztLO0s7Szs7O0k7O0c7O0ksVTt1QixPLHlDO0k7SztNOzs7SztLO0s7OztJOztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7O1lJN0hBYSxNQUFPQyxHQUFVQyxHQUFXLE9BQXJCRCxNQUFVQyxVQUFnQjtPQUNqQ0M7WUFDQUMsT0FBT0gsR0FBSSxPQUFKQSxFQUFLO09BQ1pJO1lBRUFDLFVBQVVMLEdBQUVDLEdBQUksY0FBTkQsSUFBRUMsV0FBaUI7WUFDN0JLLE9BQUtOLEdBQUVDLEdBQUksT0FBTkQsSUFBRUMsRUFBVzs7SUFJbEJNO0lBQ0FDO0lBSEFDO0lBQ0FDO0lBR0FDO0lBQ0FDO0lBQ0FDO1lBRUFDO0lBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBTFpOOztXQURBRDtHQWNVOzs7O09BbEJWRDtPQVVBUTtPQVJBTDtPQUNBQztPQUNBSDtPQUNBQztPQUNBRztPQUNBQztPQUNBQztPQVpBVjtPQUZBSjtPQUNBRztPQUlBRztPQUZBRDs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFLQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFJQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFHQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFPQUM7WUFTQXZXO1lBRUF3VztZQUVBQztZQUVBQztZQUVBalc7WUFFQWtXO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUE3ZTtZQUVBOGU7WUFFQUM7WUFFQUM7WUFBQUE7WUFJQWxiO1lBRUFtYjtZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUdBQzs7WUFHQTFlOzs7O2FBa0NBcWY7S0FBK0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWFWO2FBRXJCQztLQUF3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBK0ZYO0lBL0ZXLElBaUd4QkM7O0tBR0csSUFBUzNnQixjQUFIRDtLQUFTLE9BQUEsa0NBQVRBLEdBQUdDO0lBQWtDO0lBQTNDO0lBQUwsU0FERTRnQixzQixPQTM4QkY5VjthQTg4QkUrVjtLQUE4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBYVQ7YUFHckJDO0tBQXFCOzs7Ozs7Ozs7O1NBT2hCeEY7S0FBUSxPQUFSQTtJQUFZO0lBUEksSUFTckJ5RjtJQUlvQixTQUFwQjdVLHVCLE9BMytCRnBCLFVBeStCRUQ7SUFFb0IsSUFFcEJoSTthQUVBbWUscUJBQXFCemhCO0tBQUksVUFBQSxXQUZ6QnNELGtCQUVxQnREO0tBQUksT0FBQTtJQUEwQjthQUVuRDBoQjtLQUUrRDtNQUZoQy9kO01BQUg1QjtNQUFIdEI7TUFBSEQ7TUFFeUMsTUFBQSxXQU4vRDhDLGtCQUkrQks7TUFFVyxNQUFBLFdBTjFDTCxrQkFJNEJ2QjtNQUVQLE1BQUEsV0FOckJ1QixrQkFJeUI3QztNQUV6QixNQUFBLFdBTkE2QyxrQkFJc0I5QztLQUV5QyxPQUFBOzthQUUvRG1oQjtLQUFtQyxzQkFFbkMzaEI7aUJBQVcsT0FBQSxrQ0FBWEE7U0FEUUk7S0FBSyxPQUFBLGtDQUNiSixHQURRSTtJQUN3Qjs7SUFFWixTQUFwQndoQix1QixPQXovQkZyVyxVQTYrQkVqSTtJQWM4QixTQUE5QnVlLGlDLE9BMy9CRnRXLFVBNitCRWpJOzthQWdCQXdlO0tBQW1CO1VBRVA5aEI7TUFBSyxPQWhCakJ5aEIscUJBZ0JZemhCOztTQURKK2hCO0tBQUssT0FBQSxXQWpCYnplLGtCQWlCUXllO0lBQytCO2FBRXZDQztLQUFtQixZQUNYO1NBQ0hqRztLQUFTLE9BeGhDZDNRLGdCQXdoQ0syUTtJQUE4QjthQU1uQ2tHLDBCQUVBMWhCO0tBRjRCLE9BRTVCQSxJQTNnQ0ZnTCxRQXkrQkVELGtCQWtDQS9LO0lBQTRCO2FBRTVCMmhCO0tBQXNCOzs7OztRQUNFcmlCO1FBQUg4RjtRQUFIaEM7UUFBSDVCO1FBQUh0QjtRQUFIRDtPQUNULE9BQUEsa0NBRFNBLEdBQUdDLEdBQUdzQixHQUFHNEIsR0FBR2dDLEdBQUc5Rjs7TUFJdEIsSUFGU3NpQixnQkFFVCxNQTdCRlIsK0JBMkJXUTtNQUVULE9BQUE7Ozs7T0FXeUIsSUFEcEJDLGtCQUNvQixNQWxqQzNCaFgsZ0JBaWpDT2dYO09BQ29CLE9BQUE7O01BRkEsSUFEcEJDLG9CQUNvQixNQWhqQzNCalgsZ0JBK2lDT2lYO01BQ29CLE9BQUE7OztNQVBBLElBRHBCcmlCLGNBQ29CLE1BL0IzQjJoQiwrQkE4Qk8zaEI7TUFDb0IsT0FBQTs7MkJBQ1YraEIsZ0JBQVBPO0tBQ1YsR0FEaUJQOztpQkFBQUE7T0FHRjNoQjtPQUFIbWlCO2FBQVUsa0NBQVZBLEtBQUduaUI7OztLQUZnQixVQTNpQy9CZ0wsZ0JBMGlDVWtYO0tBR1ksT0FBQTtJQUs0QjthQUVsREUscUJBQXFCamlCO0tBQ0wsVUFBQSw0QkFuQmhCMmhCLHFCQWtCcUIzaEI7S0FDTCxPQUFBO0lBQWdDO0lBM010RDs7WUFJTTJnQjtZQWVBQztZQWlHQUM7WUFFQUM7WUFHQUM7WUFnQkFDO1lBU0FDO1lBRUFsVztZQUVBcUI7WUFFQXJKOztZQUlBb2U7WUFJQUM7WUFJQUM7WUFFQUM7WUFFQUM7WUFJQUU7WUFyL0JGdlc7WUFNQUU7WUF1L0JFc1c7WUFJQUM7WUFrQkFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7OztJQ2xsQ0U3WDtJQUNBOFg7O0lBQ0FwZ0I7SUFDQXVJO0lBQ0FDO0lBR0E2WDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUIsVyxxQzs7SSxPOzs7RztzQixPLG9DOztJLFE7STtJLE87Rzs7SSxXOztLLFU7Szs7O0k7OztHOztJOztJLE87Rzs7SSxJLHVDOzs7O00sWTs2QztNOzs7Ozs7Rzs7SSxJLHFCOzs7a0I7OztHOztJO0k7SztNOztNO007a0I7Ozs7O0s7OztHO0csK0I7NEIsb0IsdUI7O0ksaUI7OztJO0ksSTtJOztLLDZCLG1CO2lCOzs7Ozs7TTs7O1U7O0c7O0ksbUM7Ozs7TSxZOztNOzs7Ozs7RzsyQiwrQjtnQyxtQjs7STs7OztNO007Ozs7OztHOztJOztJO0s7TTs7UzsyQixPLGtCO1M7OztRO007O1M7MkIsTyxrQjtTOzs7UTtNLHFCLHFDO0s7Ozs7OztRO1M7UztTO1M7VTtVLFc7VTtVOzs7VTs7Ozs7Ozs7a0IsUyxTOzs7TTs7SztLOzs7SztNLG9DLG1CO3lCLE8sc0I7SztLO0s7OztHOztJOzs7Ozs7Ozs7O1E7UyxhOzs7Ozs7Ozs7O0c7O3VCLFM7Z0MsUzs7STtHOztJO0k7Ozs7O08sWTs7OztTO1MsTTs7Ozs7Ozs7Ozs7OzRCOzs7Rzs7STtJOzs7OztZO1E7USxNOzs7Ozs7O0s7Szs7Ozs0Qjs7O0c7O0k7SSw2QixtQjtHOzBCLDZCOztJO0k7Ozs7O0ksZ0I7OztJOzs7OztNOzs7Tzs7Ozs7VSxHO1csTTs7Ozs7O1EsSTs7Ozs7OztPO1EsWTs7O1E7USxJOzs7Ozs7O2lCOzs7Ozs7Ozs7O0c7Rzt5QiwrQjs7STs7Ozs7OztHOztJLEksZ0I7O0c7O0ksYzs7O0k7aUI7Ozs7TSwyRDtNO0s7OztHOztJOztLLE07O0k7Rzt1QixtQzsyQixrQixjOztJOztJLGtCOzs7Rzs7STs7SyxNOztJO0c7MkIsa0M7O0k7O0ksd0I7a0IsK0I7STtHOztJOzs7SSxHLDBCOzs7O0c7O0k7OztHOzs7STtJOzs7YTtjOztjO2M7Ozs7Yzs7OztjO2E7O0c7O0k7OztJO0c7O0ksWTs7STs7O0k7OztpQjtJO0c7O0k7STtrQjthO0s7O007MEIsb0I7OztTO1M7UztRO0s7Szs7O0ksUTtJLGdCO3dCLGtDOztLO2lCOztLLGE7SztJO0k7STtJO0c7O0ksWTtJLGtCO3NCLG9COztLO0s7O0k7STtJO0c7O0ksWTtJLGtCO3NCLG9COzttQixrQztLO0k7STtJO0c7O0ksWTs7SSxTO0ksZ0I7c0IsZ0M7O0s7OztNLGU7O0s7STtJO0k7STs7O0ksWTtJLGtCO3NCLG9CO2tCLGUsa0M7STtJOzs7SSxRO0ksYztzQixvQjtrQiwwQjtJO0k7Rzs7SSxZO0ksa0I7c0Isb0I7O0s7SyxPO0k7STtJOzs7SSxZO0ksa0I7c0Isb0I7O0ssWTtpQjs7SztJO0k7STs7O0ksWTtJLGtCLHlCO3NCLG9COztLLEksZTs7OztNLGU7Ozs7STtJO0k7OztJO0ksWTtJLGtCLHlCO3NCLG9COztLLEksZTs7OztNLE87OztLO0k7STtJOzs7SSxROztJO0ksZTtzQixnQzs7SztJO0k7STtJOzs7SSxROztJLFE7SSxlO3NCLGdDO2tCLGlEO0k7STtJOzs7SSxROztJLFE7SSxlO3NCLGdDOztLOzs7Ozs7STtJO0k7STs7O0ksUztJLGUseUI7c0Isb0I7O0s7YztLO0k7STtJO0c7O0ksWTtJLGtCLHlCO3NCLG9COztLO2M7SztJO0k7STs7c0IsNkI7O0k7OztNO00sVzs7OztNOzs7TztPOzs7Ozs7O0c7O0k7Szs7O0s7O3NCLFk7SyxPO0k7O0s7TTs7d0I7TTs7Ozs7TyxNOzs7STt1Qiw0QjtJO0k7Rzs7STtLOzs7Szs7c0IsWTtLLE87STs7Szs7a0I7O007TztRLFE7Ozs7OztJO3VCLDRCO0k7STtHOztJLFk7O0k7SSxJLGU7O0s7aUI7O0s7STs7Szs7OztPLE07O007O0ssa0I7cUM7O2EseUIsMkI7O0s7SztLO007TTs7O21COztLO0k7MEI7STtJOzs7STtLO0s7Ozt5QixTOztVLE07UztLLE87O21DOzttQztzQixTOztLOzs7SywwQjs7STtJO0k7STtHOztJLFM7YTtJLDRCLDBCO3NCLGlDOztLOzs7TSxlOztLO0k7STtJO0k7Rzs7SSxTO2E7YTtJOzs7O0s7SztLO3NCLDZDOztLOzs7TSxlOztLO0k7STtJO0k7STtHOztJLFM7YTthO2E7STs7Ozs7SztLO0s7O0s7STs7Szs7O00sZTs7SztJO0k7STtJO0k7STtHOztJLFM7YTthO2E7YTtJOzs7Ozs7SztLO0s7Szs7SztJOztLOzs7Ozs7Ozs7Ozs7O00sZTs7SztJO0k7STtJO0k7STtJO0c7O0ksUzthO2E7YTthO2E7STs7Ozs7OztLO0s7SztLOztLOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7O00sZTs7SztJO0k7STtJO0k7STtJO0k7RztvQix1QixjLE07O0ksZ0Isd0IsUzs7OztLOztlLFk7O2U7Yzs7OztJLFE7SSxjO3NCLGdDOztLO2dCOztpQjs7SztJO0k7STtJO0c7Rzs7STs7O3VDLFM7SSx3QjtrQix1QixPOztLOztLO0s7SztLLE87STtJO0c7dUIsYzs7STtJOztJOzs7YTthLEcsMkI7O2M7OztjO2M7Ozs7Yzs7OztjOzs7O0c7O0k7OztJO0c7O0ksbUI7O0k7Rzs7STs7OztnQixPOzs7STtHOztJLG1COzs7SSx3Qjs7SyxNOzJCLDBCO0k7OztJO0k7O29DLE87Ozs7OztJO0c7O0k7STtrQjtrQyxrQjtLOztNO007TSxvQixvQjs7O1M7UztTO1E7SztLOzs7STtLOztNOzRCLHFCOzs7UyxhO1M7O1E7SztLOztJLGdCLGU7d0Isa0M7O0ssSSxlO21DLEcsNEI7SyxhO0s7STtJO0k7STtHOztJO0ksWTtJLGtCO3NCLG9COztLO2lCOztLO0k7STtJOzs7STtJLHFDLFc7SSxrQjtzQixvQjtrQixlLGdDO0k7STs7O0k7STs7cUI7O0ssVzs7OztLOztNOzBCLHFCO3NCLGUsaUM7SztLOztJLGdCO3dCLGlDOztLO0ssZTtJO0k7STtJO0c7O0k7SSw2QixPO0ksYztzQixvQjs7SztLLE87STtJO0k7Rzs7STtJO0s7O007MEIsb0I7OztTLFk7cUI7O1M7UTtLO0s7O0ksa0IsUTtnQjs7STs7O0ksbUI7SSxrQix5QjtzQixvQjs7SyxJLGE7O00sTTs7O0ssZTtJO2dDLGlDO0k7STs7O0ksbUI7SSxrQjtzQixvQjtrQixnQztJO0k7Rzs7STs7Syx3QixPLHFCOzs7SSxRO0ksZTtzQixpQzs7SztpQjs7SyxlO0k7STtJO0k7OztJO0k7O0k7Szs7TTswQixxQjtzQix1QztLO0s7O0ksZTt3QixpQztvQixnRDtJO0k7STtHOztJO0ksUTs7STtLOztNOzBCLHFCO3NCLHVDO0s7Szs7SSxlO3dCLGlDO29CLGdEO0k7STtJO0c7O0k7SSxTO0ksZTtzQixvQjs7SztpQjs7SyxlO0k7STtJO0c7O0k7SSxZO0ksa0I7c0Isb0I7O0s7aUI7O0ssZTtJO0k7STs7O0k7STtLLG1COztLOztJO0ssbUI7O0s7O0ksbUI7c0IsaUQ7O0s7TSxxQyxPOztNLE87O0ssZTtJOztLLG1COztLO0k7STtJO0c7O0k7SSxxQztJOztLO0s7Szs7Szt3Qjs7SztJOztLOzs7eUI7O007OztnRDtLOzs7TSxvQjtNO007OztLOztNO007TTs7O0s7Szs7O0k7STtJO0k7OztJOzs7d0M7OztHOztJOztLO0s7bUI7SztLO0s7STtJO0s7Szs7b0MsUyxtQixTO0ssTzs7O0s7OzswQixTO3NCLHdCO007SztLOzs7bUM7d0IsUztvQixnQztJO0k7STtJO0c7O0k7STs7b0MsVztLOztNOzBCLG9CO3NCLGUsbUM7SztLOzs7O0s7O007NEIscUI7d0IsZSxzQztLO0s7O0ksZTt3QixpQzs7SztLLGU7STtJO0k7STtHOztJO0k7Ozs7c0MsVzs7Ozs7Ozs7Tzs7UTtRO1E7NEIsNkM7OztXLEksaUI7VyxlO1U7TztPO087Tzs7OztJOzs7d0M7Ozs7O0c7O0k7STs7Ozs7Ozs7USxXOzs7Ozs7Ozs7Ozs7UTs7UztTO1M7OztZO1c7OztZLEksaUIsaUI7WSxlO1c7UTtRO1E7UTtROzs7OztJOzs7d0M7Ozs7OztHOztJO0k7Ozs7Ozs7Ozs7UyxXOzs7Ozs7Ozs7Ozs7Ozs7Uzs7VTtVO1U7VTs7O2E7OztZOzs7YTtjO2M7YztjO2MsSTthO1k7UztTO1M7UztTO1M7Ozs7OztJOzs7d0M7Ozs7Ozs7Rzs7STtJOzs7Ozs7Ozs7Ozs7VSxXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7VTs7VztXO1c7VztXOzs7Yzs7Ozs7YTs7O2M7ZTtlO2U7ZTtlO2UsSTtjO2E7VTtVO1U7VTtVO1U7VTs7Ozs7OztJOzs7d0M7Ozs7Ozs7O0c7NkI7Z0M7bUIsMEM7O0k7Ozs7O0c7O0k7Ozs7O0c7b0Isb0I7O0ksbUI7SSxrQjtzQixvQjs7SyxXO0s7STtJO0k7O29CLHlCO29CLHlCOztJLFk7O0ksMEI7STtzQixvQjtrQixvRDtJO0k7O2dDOztJLDBDO0c7O0ksMEM7Rzs7SSwwQztHOztJOztrQzs7O0c7O0k7O2tDOzs7Rzs7STtHO3dCLG9EO21CLDBDO0csSSwyQjs7STtnRDtHOztJO2dEO0c7O0k7Z0Q7RztvQiwwQzs7STtnRDtHOztJOztrQzs7O0c7O0k7Z0Q7RztnQzs7SSwwQztHOztJO2dEO0c7O0k7Z0Q7Rzs7STtnRDtHOztJO2dEO0c7O0k7O2dDOzs7Rzs7SSx5QztHOztJLHlDO0c7O0kseUM7RztxQix3RDs7SSx5QztHOztJLHlDO0c7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7O0kseUM7Rzs7STs7Z0M7OztHO29CLHVEO29CLHVEO29CLHVEOztJLHlDO0c7O0kseUM7Rzs7SSx5QztHOztJLDZDO0c7O0k7Rzs7STtHOztJO0c7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7O0kseUM7RztHO0k7STtJO0k7STtJOztJO0ksb0M7Rzs7SSwrQixpQjtHO3VCLCtCLG9CO3VCLCtCLG9CO0c7O0k7O0s7O007O1M7O1UsTzs7UyxNO1E7Ozs7SSwrQixjO0c7O0k7STs7aUM7MEQ7O0ssK0I7SyxlO21CO0s7TTswQixxQjs7O1M7Uzs7UTtLO0s7Ozs7Ozs7TSxtQyxTOztLLHVCOztNO087NkIsc0I7OztVO3NCOztVO1M7TTtNOztLO007TSxzQixzQjs7O1M7cUI7O1M7UTtnQyxvQzs7O1M7Uzs7O1U7OztVO1M7UTtLO0s7Szs7Ozs7Szs7O2UsWTs7ZTtjOzs7SSx1Qjt3QixvQzs7SztpQjs7SztJO0k7STtJO0c7Rzs4Qiw4Qzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STs7Z0M7OztHOztJOztnQzs7O0c7Ozt1Qiw0QjsyQixnQzswQiwyQjt5Qiw4Qjt1Qiw0Qjs7SztLLHFCO0k7O0s7SyxxQjtJOzJCLDhCOztLO0sscUI7STswQiwrQjs7SztLLHFCO0k7NkIsa0M7eUIsNEI7eUIsOEI7O0s7SyxxQjtJOzJCLGdDOytCLG9DO21DLHdDOztLO0k7O0s7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lJL2hDUSxJQW5CUmlELGNBQ0FDLGtCQUNBQyxpQkFpQkFDO2FBRUFDLE9BQU9DO0tBQ1Q7TUFBeUIsUUFBQTtNQUFQQztNQUFkQztNQUNBQyxjQUZLSDttQkFHb0JJO01BQ3pCLFNBRHlCQTtXQUdmQyxJQUhlRDtPQUR6QkQsYUFJMEIsV0EzQjVCUixPQTJCWVUsR0FKVkY7O2VBR1FILElBRmlCSSxRQUR6QkQsYUFHUUg7TUFHUixPQUx5Qkk7S0FLdEI7S0FMSyxJQUFSRSxRQUFRLCtCQUZSSjtLQVFK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QztPQXpGQXZCO09Bd0lBOEI7T0FPQUs7T0FHQUU7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FNQUU7T0FHQUM7T0FOQUY7T0FTQUc7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FtRUFzQjtPQXlCQUc7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUU7T0FHQUM7T0FHQUM7T0F6SUF6QztPQUhBRDtPQUhBRDtPQVNBRztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQXNGQXdCO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BTUFFO09BR0FDO09BTkFGO09BU0FHO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BU0FHO09BSEFEO09BSEFEO09BU0FHO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BUUFDO09BRUFDO09BZ0NBSztPQUVBQztPQUVBQztPQUVB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R1VyS0o7Ozs7Ozs7O0lBd25DUXNjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUExbkNKQztJQWdLQUM7Ozs7Ozs7Ozs7Ozs7SUFBQUM7Ozs7Ozs7Ozs7Ozs7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTlKSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksNEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCO0ksVztHO0c7O0ksSSxXLG9COzs7O0s7Ozs7TTtLO0s7SztLOztNO007TTs7SztLLFc7SztLLE87O0c7OztJO0ssTztJLE87Rzs7STtLLE87SSxPO0c7O0k7SyxPO0ksTztHOztJLGlCO0c7O0ksd0I7Rzs7STtJLE87O0c7O0ksVztJLE87Rzs0QixPLDZCOzZCLCtDO0c7SSxnQjtJLHFCO0ksaUI7SSxzQjs7SSxtQjs7STtHOztJO0ssTztJLE87Rzs7STtLLE87SSxPO0c7O0k7SyxPO0ksTztHOztJO0ssTztJLE87Rzs7SSxnQjtHOztJO2lCO0c7Z0MsTyxvQzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7aUMsTyxrQzs7STtLO00sTztNLE87Szs7Ozs7SztNO007OztTOzs7Ozs7OztTO1E7SztLOzs7UyxHLG1DO1M7VSx1QjtVOzs7Ozs7VTtXOzswQjtXOzs7O2tDOzs7O1E7TTs7Ozs7Ozs7Yzs7OztNO087TztlO0s7TTtRO1c7Ozs7bUI7OztTOztVO1U7UztTLE87UTtNLE87SyxPOztHOztJLEksVyxzQzs7Ozt3Qzs7SztNLEc7TyxNO00sSSxPOzs7OztNLEc7TyxNO3FCOztLO00sRztPLE07TTtPLE87TyxPOzs7Ozs7b0I7O0s7O0c7O0k7SyxJLFcsOEI7Ozs7Ozs7OztHOztJOztPOztJO0c7OztJOztLOztNLEksVyx3Qjs7O2tDOzs7SztLLE87STtJO0s7SztvQjtNLFc7Ozs7STtJOzs7O0s7O0ssTztJO0ksTztHOztJO0c7OztJOztHO0csc0I7O0k7SSxPO0c7O0k7SyxROzs7SyxTO0ksSTs7O0s7SztLLE07O0k7STtHOztJO0ssUTs7O0ssVTtJLEk7OztLO0s7SyxNOztJO0k7Rzs7STtLLFE7OztJLEksYzs7O0s7SztLLE07O0k7OztLLFM7SyxVO0k7Szs7Ozs7SztLO0s7SztLLE07O0k7STtJO0c7O0k7SyxROzs7SSxJLGM7OztLO0s7SyxNOzs7SSxJLGM7OztLO0s7SztLO0ssTTs7STs7O0ssUztLLFU7SyxVO0k7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7SyxNOztJO0k7STtJO0c7O0ksTztHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7SyxXO0s7Ozs7O00sTTs7OztHOztJLE87Rzs7STtHOztJO0c7OztJOzs7O0k7OztJLEksb0I7STtJO0k7Rzs7SSxJLHFCO0k7SSxJOzs7OztJO0c7O0k7OztLO0s7STtJO0ksSTs7Ozs7STs7O0k7Ozs7SztLO0k7STtJLEk7Ozs7O0k7STs7O0ksVztJO0s7SztNLE87TSxXO0s7Ozs7SztLLE07O0c7O0ksTyxzQjtHOztJLFc7STtJO0k7O0s7TSxJLFk7Ozs7Ozs7OztLLGtCLEs7O2Usc0I7TTtNO08sUztPLFU7TTtNOztVLHVCOztHO3NCOzRCOzRCO3NCOzRCOztJOztzQjs0Qjs0QjtzQjtzQjtzQjtzQjtzQjtzQjtzQjs0Qjs0Qjs0Qjs0Qjs0Qjs7STs7O0k7O3NCO3NCO3NCOztzQjtzQjtzQjs0QjtzQjtzQjtzQjtzQjtzQjtzQjtzQjs7NkI7dUI7O0k7O3VCO3VCO3VCOzs7Ozt1Qjt1Qjt1Qjt1Qjs2Qjs2Qjs7STs7O0k7Ozs7Ozs2Qjs2Qjs7Ozs7O3VCO3VCO3VCOzt1Qjt1Qjt1Qjt1Qjs7STs7NkI7NkI7dUI7O0k7OztJOzs2Qjs2Qjt1Qjs7STs7NkI7O3VCOzs7Ozs7O1E7OzRCOzRCOzs7Ozt1Qjs7NkI7NkI7O0k7Ozt1Qjt1Qjt1Qjt1Qjs7STs7dUI7dUI7dUI7dUI7NkI7dUI7dUI7O0k7OzZCOztJOzs2Qjs2Qjs7Ozs7OztzQjs7c0I7c0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksNEMsZTs7SztZO0s7Ozs7STs7Ozs7O0ssVTtNO007O29CO007TTs7Ozs7RztHOzJCLGdCOztJOztPOztPLE87O08sTzs7TyxPO2UsTzs7OztJOzs7UTs7UTs7UTs7UTtnQjs7STtHOztJOzs7Ozs7Ozs7Ozt5Qzs7Ozs7OztHO0csSSxjOztJO0k7O0k7O0k7RztvQixZO21CLFk7dUIsWTs0QixtQjs4QixtQztnQywwQzs7STtHO3dCLGM7Rzs7STs7YztJO29CLHVCO0ksTztHO0csSSxnQjs7STtJOztLLG1COztLO0k7d0Isc0I7O0k7RztzQixZO3FCLFk7dUIsWTs7STtHOzBCLFc7OztJLE87Ozs7OztHO0k7Ozs7c0IsTyw0Qjt5QixPLHVDO3NCLE8sNEI7O0k7SztNLFE7OztNLE07TSxNO0s7Ozs7MkI7OztHOztJO2dDO0ksVTtJLE87Rzs7Z0MsTyxzQjtJLE87Rzs7O0ssZTtLO0s7STtJO0k7STtJO0c7Rzs7OEIsTyxtQixTOztJOztHO0c7STs7O1E7USxPO087STs0QiwwQjs4QixtQjs7O0s7SyxPO0k7STtJLE87Rzs7O0k7OztlOztJLE87Ozs7WTs7STtLO1M7Ozs7STthOztLLE87O1ksTzs7SSxPOzs7STs7OztJOzs7O0k7Ozs7O3lCLHFCLE8saUI7SyxPOzs7ZTs7Z0IsTTtnQixNO2UsTzs7Ozs7OztjO0k7STtHO0c7K0Isb0I7a0MseUI7RztnQyxxQjttQywwQjt3QixTOztJO0k7Z0IsTzs7OztLLE87OztJO0c7eUIsUztrQyxxQzsyQixpQzsyQixpQzs0QixpQzs0QixpQzs2QixpQzs7STtJLHFDOzs7NkIsMEI7Ozt5QixPLHdDOzs7STtJLHFDOzs7Ozs7O2MsTzthOzs7Z0Msa0M7b0Msc0M7dUIsc0I7dUIsc0I7d0Isc0I7d0Isc0I7eUIsc0I7O0s7SztNO0k7O0s7SztNO0k7STs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7YUdwT01tRSxPQUFPQyxHQUFFQzt5QkFDbUQsT0FEbkRBLEVBQ29EO0tBQS9ELFdBQVUsaUJBRERELEdBQUVDLElBQUZEO0lBQ3lEO2FBRWhFRSxPQUFPRCxHQUFJLE9BQUpBLEtBQWtCO2FBVXpCRSxJQUFJRixHQUFFRztLQUNSLE9BRFFBLElBQUZILE9BRUosaUJBRklBLE1BQUVHLEtBSU4sV0FKSUgsTUFBRUc7SUFJSzthQUVQ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QUFBOztHQUNtQzs7Ozs7O09BN0wxRDZCO09BVEFOO09BR0FJO09BcUxBNEI7T0FySUlaO09Bd0JKRTtPQVVBRDtPQWlCQUk7T0ExRklqQjtPQTBCSlE7T0FRQUU7T0FxSEEzQztPQWtDQWdFO09BTEFKO09BQ0FDO09BQ0FDO09BQ0FDO09BOUVBWDtPQWlCQUU7Ozs7OztFOzs7Ozs7O0dDaFFtQjs7Ozs7OztJQUZuQlc7SUFDQUM7Ozs7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFHQUM7SUFFQUM7SUFFQUM7SUFHQUM7SUFFQUM7SUFHQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFFQUM7OztJQUlBQztJQUVBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUdBQztJQUVBQztJQUdBQztJQUdBQztJQUlBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUlBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUdBQztJQUNBQztJQUdBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7O09BaElBakc7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FHQUM7T0FFQUM7T0FFQUM7T0FHQUM7T0FFQUM7T0FHQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FJQUM7T0FFQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FHQUM7T0FFQUM7T0FHQUM7T0FHQUM7T0FJQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FJQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FHQUM7T0FDQUM7T0FHQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7O0c7OEIsTyx1Qzs7SSxPOztHO0csVzs4QixPLG1DOztJLFc7SSxPLCtCO0c7eUIsdUIsVyxTOztJLEksSTs7SyxXO0sscUI7SztrQjs7O0c7O0ksSSxJOztLLEksTyx1QixPO0sscUI7SztrQjs7O0c7O0k7OztNLFc7Z0I7TyxNOzttQixjOzs7Ozs7NEI7OztHOztJOztLLFE7Ozs7O1EsZTtPOzs7OztLOzs7O0c7O0k7STs7TyxPO08sYztNOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0QixzQjs4QixpQzs7STtJOzs4QixpQixrQjs7O1E7OzRCLE87O1E7OztRLE87O1Esc0M7USxTOzs7O1E7Ozs7UTs7O2dCOzs7Rzs7STtJOzs7Ozs7Ozs7Ozs0Qjs7O1EsTzs7NEI7OztROzs7USxrQixPOztROztRLHNDO1E7Ozs7Ozs7Ozs7OztHO3lCOztJO0k7Ozs7OztTLG1DO1M7O1MsbUM7Uzs7UyxrQixPOztTOzs7O0c7NkI7O0k7Ozs7Ozs7OztLOztNO0ssTzs7SSxNO0c7RyxJLEk7O0ksVTtJLHFCO0k7Ozs7RztJLGtCOzs7O0k7SyxXO0s7SztLO0s7Szs7SztNOzs7USxZO1E7Ozs7Ozs7SyxJO0s7OztJOztLO0s7SztJOztLO0s7SztJOztLLEksVSx3Qzs7Ozs7aUI7O007O0k7O0sscUI7O2lCOztLO0k7O0s7OztTOztTO2lCOzs7OztROzBDOzs7USxrQixRO3dCOztTO1UsUTtVO1U7VTtVOzs7Ozs7OztrQzs7OzswQiwyQjtRLFU7USwrQjs7UTs7O1M7UztROzJDOzs7UTt1Qjs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7OztTOzs7OztRLGtDO1E7USxJLDZCO1E7O1E7UTs7UTs7UztTO3VCO1E7dUI7UTs7UTs7UTs7UztTO1E7eUI7UTt5QjtROztROztRLG9CO1E7O1E7OztRO1E7UTt1Qjs7OztRO3VCOzs7STs7SyxrQjtLO0s7STtJO0k7SSxJLG1CO0ksRzs7O0ssUTtLLGlCLE8sd0I7aUM7O0ksSSxlLG9DOztLO0s7STtJOzs7OztJO1k7Ozs7OztHOztJLFE7STs7b0I7OztzQjs7Ozs7RztHOztJLG9DOztLLEk7SztNOzs7Z0I7b0I7TztROzs7UTs7Ozs7TTs7STs7SyxJLFU7Szs7O08sa0M7UTtTLE07Ozs7O08sVTs7Ozs7Ozs7O2E7OztjLHVCO2U7Z0I7Ozs7OztjO2U7Ozs7Ozs7Ozs7OzthOzs7OztjLFU7Ozs7Ozs7O2dCOzs7Ozs7OztpQjtpQjtrQjs7O2lCOzs7MkI7OEI7Ozs7MkI7Ozs7ZSxNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UTs7UyxlOzs7VSxJLG1COzs7VSxJLG1COztVLEksbUI7Ozs7Ozs7O1M7OztROzs7Ozs7TTtNLGU7O0k7O0ssSTtLO3FCO2dCLHdDLHFCO00sUztNOzs7Z0I7bUI7TyxTOzs7O1MsTztTOzs7OztPLEk7OztNO00sSTs7STtJLEk7OztjO0c7c0IsNEI7Z0MsNEI7O0k7O0ssTTtLO0s7Szs7OztNLEksSSx1Qjs7Ozs7O1M7Ozs7OztRO1E7Ozs7Tzs7O007Ozs7O0ksTztHOzZCLDBCO3VDLDBCO0c7O0ksVTs7O0c7O0ksVTs7O0c7O0ksVTs7NkIsTTtJO0c7O0ksVTs7NkIsTTtJO0c7O0k7O0s7SyxlLE07Szs7SSxPO0c7O0k7O0s7TTtNO0ssZSxNO0s7O0ksTztHOztJOztLO007TTtNO0ssYSxNO0ssTzs7SSxPO0c7bUMsMEI7NkIsb0I7Z0MsNkI7O0ksTztHOztJO0s7TTs7Z0I7TTtNLE07Szs7OzsyQjs7O0c7O0ksSSwyQzs7OzJCOzs7Rzs7STtJOztROzs7TTs7Tzs7UTtRLFk7O1E7Ozs7WTs7Ozs7Ozs7O0ssVTtLLE87O0c7O0k7aUM7Rzs7STtpQztHOztJO2dCOzs7Ozs7OztHOztJO0s7Ozs7STs7Ozs7O007O087O1E7UTtROztXOzs7Ozs7Ozs7SyxPOztHOzhCLG9DOztJLEcsZ0M7O0k7Ozs7OztNOztPOztRO1E7UTs7Vzs7Ozs7Ozs7O0ssTzs7Rzs7STtHOztJO0k7Ozs7OztNOztPLG9COztRO1M7UztTOzs7O2lCOzs7Ozs7O087UTtRO1E7Ozs7Ozs7O0ssTzs7RzttQyx5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7SXVCeERBMDRDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQWhGQUMsWUFFQXJVO0lBRmMsVUFFZEEsOEJBQUFBLFVBREs0QyxJQUNMNUMsTUFEVSxPQUFMNEM7SUFDQSxNQUFBOzBEQUFMNUM7R0FBa0U7WUFnSWxFc1U7SUFBa0I7O1dBQ1J0USxjQUFIM0Ysd0NBQUcyRjtjQUFIM0Y7O29DQXREUDRWOztvQ0FDQUM7O29DQUNBQzs0Q0FDQUM7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aENGO0lBMEJnQztHQUE1QjtHQUFBOzs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7R0NqQkE7R0FBQTs7O0UiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZmZzZXRcbnZhciBjYW1sX2ludDY0X29mZnNldCA9IE1hdGgucG93KDIsIC0yNCk7XG5cbi8vUHJvdmlkZXM6IE1sSW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBNbEludDY0IChsbyxtaSxoaSkge1xuICB0aGlzLmxvID0gbG8gJiAweGZmZmZmZjtcbiAgdGhpcy5taSA9IG1pICYgMHhmZmZmZmY7XG4gIHRoaXMuaGkgPSBoaSAmIDB4ZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfalwiXG5NbEludDY0LnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyx0aGlzLm1pLHRoaXMuaGkpO1xufVxuXG5NbEludDY0LnByb3RvdHlwZS51Y29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIGlmICh0aGlzLmhpID4geC5oaSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmhpIDwgeC5oaSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubG8gPiB4LmxvKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBoaSA9IHRoaXMuaGkgPDwgMTY7XG4gIHZhciB4aGkgPSB4LmhpIDw8IDE2O1xuICBpZiAoaGkgPiB4aGkpIHJldHVybiAxO1xuICBpZiAoaGkgPCB4aGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGxvID0gLSB0aGlzLmxvO1xuICB2YXIgbWkgPSAtIHRoaXMubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSAtIHRoaXMuaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvICsgeC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSArIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpICsgeC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gLSB4LmxvO1xuICB2YXIgbWkgPSB0aGlzLm1pIC0geC5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IHRoaXMuaGkgLSB4LmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyAqIHgubG87XG4gIHZhciBtaSA9ICgobG8gKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMubWkgKiB4LmxvICsgdGhpcy5sbyAqIHgubWk7XG4gIHZhciBoaSA9ICgobWkgKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMuaGkgKiB4LmxvICsgdGhpcy5taSAqIHgubWkgKyB0aGlzLmxvICogeC5oaTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMubG98dGhpcy5taXx0aGlzLmhpKSA9PSAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAodGhpcy5oaSA8PCAxNikgPCAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8gJiB4LmxvLCB0aGlzLm1pICYgeC5taSwgdGhpcy5oaSAmIHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb3x4LmxvLCB0aGlzLm1pfHgubWksIHRoaXMuaGl8eC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb154LmxvLCB0aGlzLm1pXngubWksIHRoaXMuaGleeC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9sZWZ0ID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMubG8gPDwgcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IHMpIHwgKHRoaXMubG8gPj4gKDI0IC0gcykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaGkgPDwgcykgfCAodGhpcy5taSA+PiAoMjQgLSBzKSkpO1xuICB9XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICgwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sbyA8PCAocyAtIDI0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IChzIC0gMjQpKSB8ICh0aGlzLmxvID4+ICg0OCAtIHMpKSk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCgwLCAwLCB0aGlzLmxvIDw8IChzIC0gNDgpKVxufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHRfdW5zaWduZWQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8ICh0aGlzLmhpIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IHMpKTtcbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubWkgPj4gKHMgLSAyNCkpIHwgKHRoaXMuaGkgPDwgKDQ4IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPj4gKHMgLSAyNCkpLFxuICAgICAgMCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAodGhpcy5oaSA+PiAocyAtIDQ4KSwgMCwgMCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9yaWdodCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICB2YXIgaCA9ICh0aGlzLmhpIDw8IDE2KSA+PiAxNjtcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8IChoIDw8ICgyNCAtIHMpKSxcbiAgICAgICgodGhpcy5oaSA8PCAxNikgPj4gcykgPj4+IDE2KTtcbiAgdmFyIHNpZ24gPSAodGhpcy5oaSA8PCAxNikgPj4gMzE7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDI0KSA+PiAxNixcbiAgICAgIHNpZ24gJiAweGZmZmYpO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKCh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDMyKSwgc2lnbiwgc2lnbik7XG59XG5NbEludDY0LnByb3RvdHlwZS5sc2wxID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmhpID0gKHRoaXMuaGkgPDwgMSkgfCAodGhpcy5taSA+PiAyMyk7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPDwgMSkgfCAodGhpcy5sbyA+PiAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubG8gPSAodGhpcy5sbyA8PCAxKSAmIDB4ZmZmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNyMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5sbyA9ICgodGhpcy5sbyA+Pj4gMSkgfCAodGhpcy5taSA8PCAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPj4+IDEpIHwgKHRoaXMuaGkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gdGhpcy5oaSA+Pj4gMTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnVkaXZtb2QgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgb2Zmc2V0ID0gMDtcbiAgdmFyIG1vZHVsdXMgPSB0aGlzLmNvcHkoKTtcbiAgdmFyIGRpdmlzb3IgPSB4LmNvcHkoKTtcbiAgdmFyIHF1b3RpZW50ID0gbmV3IE1sSW50NjQoMCwwLDApO1xuICB3aGlsZSAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+IDApIHtcbiAgICBvZmZzZXQrKztcbiAgICBkaXZpc29yLmxzbDEoKTtcbiAgfVxuICB3aGlsZSAob2Zmc2V0ID49IDApIHtcbiAgICBvZmZzZXQgLS07XG4gICAgcXVvdGllbnQubHNsMSgpO1xuICAgIGlmIChtb2R1bHVzLnVjb21wYXJlKGRpdmlzb3IpID49IDApIHtcbiAgICAgIHF1b3RpZW50LmxvICsrO1xuICAgICAgbW9kdWx1cyA9IG1vZHVsdXMuc3ViKGRpdmlzb3IpO1xuICAgIH1cbiAgICBkaXZpc29yLmxzcjEoKTtcbiAgfVxuICByZXR1cm4geyBxdW90aWVudCA6IHF1b3RpZW50LCBtb2R1bHVzIDogbW9kdWx1cyB9O1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gKHkpXG57XG4gIHZhciB4ID0gdGhpcztcbiAgaWYgKHkuaXNaZXJvKCkpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHZhciBzaWduID0geC5oaSBeIHkuaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgcSA9IHgudWRpdm1vZCh5KS5xdW90aWVudDtcbiAgaWYgKHNpZ24gJiAweDgwMDApIHEgPSBxLm5lZygpO1xuICByZXR1cm4gcTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgciA9IHgudWRpdm1vZCh5KS5tb2R1bHVzO1xuICBpZiAoc2lnbiAmIDB4ODAwMCkgciA9IHIubmVnKCk7XG4gIHJldHVybiByO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9JbnQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxvIHwgKHRoaXMubWkgPDwgMjQpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9GbG9hdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICgodGhpcy5oaSA8PCAxNikgKiBNYXRoLnBvdygyLCAzMikgKyB0aGlzLm1pICogTWF0aC5wb3coMiwgMjQpKSArIHRoaXMubG87XG59XG5NbEludDY0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gW3RoaXMuaGkgPj4gOCxcbiAgICAgICAgICB0aGlzLmhpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pID4+IDE2LFxuICAgICAgICAgICh0aGlzLm1pID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvID4+IDE2LFxuICAgICAgICAgICh0aGlzLmxvID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvICYgMHhmZl07XG59XG5NbEludDY0LnByb3RvdHlwZS5sbzMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICgodGhpcy5taSAmIDB4ZmYpIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmhpMzIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMubWkgPj4+IDgpICYgMHhmZmZmKSB8ICh0aGlzLmhpIDw8IDE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdWx0KHgseSkgeyByZXR1cm4geC51Y29tcGFyZSh5KSA8IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NvbXBhcmUoeCx5LCB0b3RhbCkgeyByZXR1cm4geC5jb21wYXJlKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9uZWcgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbmVnICh4KSB7IHJldHVybiB4Lm5lZygpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hZGQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYWRkICh4LCB5KSB7IHJldHVybiB4LmFkZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc3ViIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3N1YiAoeCwgeSkgeyByZXR1cm4geC5zdWIoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X211bCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbXVsKHgseSkgeyByZXR1cm4geC5tdWwoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX3plcm8gY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfemVybyh4KSB7IHJldHVybiAreC5pc1plcm8oKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpIHsgcmV0dXJuICt4LmlzTmVnKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hbmQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYW5kICh4LCB5KSB7IHJldHVybiB4LmFuZCh5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29yICh4LCB5KSB7IHJldHVybiB4Lm9yKHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfeG9yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3hvciAoeCwgeSkgeyByZXR1cm4geC54b3IoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfbGVmdCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9sZWZ0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9yaWdodF91bnNpZ25lZChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2RpdiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9kaXYgKHgsIHkpIHsgcmV0dXJuIHguZGl2KHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tb2QgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbW9kICh4LCB5KSB7IHJldHVybiB4Lm1vZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfaW50MzIgKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHggJiAweGZmZmZmZiwgKHggPj4gMjQpICYgMHhmZmZmZmYsICh4ID4+IDMxKSAmIDB4ZmZmZilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19pbnQzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19pbnQzMiAoeCkgeyByZXR1cm4geC50b0ludCgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19mbG9hdCAoeCkgeyByZXR1cm4geC50b0Zsb2F0ICgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKHggPCAwKSB4ID0gTWF0aC5jZWlsKHgpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgeCAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mb3JtYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF90b19pbnQzMlxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZm9ybWF0IChmbXQsIHgpIHtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoZi5zaWduZWRjb252ICYmIGNhbWxfaW50NjRfaXNfbmVnYXRpdmUoeCkpIHtcbiAgICBmLnNpZ24gPSAtMTsgeCA9IGNhbWxfaW50NjRfbmVnKHgpO1xuICB9XG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICB2YXIgd2Jhc2UgPSBjYW1sX2ludDY0X29mX2ludDMyKGYuYmFzZSk7XG4gIHZhciBjdnRibCA9IFwiMDEyMzQ1Njc4OWFiY2RlZlwiO1xuICBkbyB7XG4gICAgdmFyIHAgPSB4LnVkaXZtb2Qod2Jhc2UpO1xuICAgIHggPSBwLnF1b3RpZW50O1xuICAgIGJ1ZmZlciA9IGN2dGJsLmNoYXJBdChjYW1sX2ludDY0X3RvX2ludDMyKHAubW9kdWx1cykpICsgYnVmZmVyO1xuICB9IHdoaWxlICghIGNhbWxfaW50NjRfaXNfemVybyh4KSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gYnVmZmVyLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIGJ1ZmZlciA9IGNhbWxfc3RyX3JlcGVhdCAobiwgJzAnKSArIGJ1ZmZlcjtcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBidWZmZXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3BhcnNlX2RpZ2l0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3VsdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGJhc2U2NCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoYmFzZSk7XG4gIHZhciB0aHJlc2hvbGQgPVxuICAgICAgbmV3IE1sSW50NjQoMHhmZmZmZmYsIDB4ZmZmZmZmZiwgMHhmZmZmKS51ZGl2bW9kKGJhc2U2NCkucXVvdGllbnQ7XG4gIHZhciBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gIGZvciAoOzspIHtcbiAgICBpKys7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT0gOTUpIGNvbnRpbnVlO1xuICAgIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICAgIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGJyZWFrO1xuICAgIC8qIERldGVjdCBvdmVyZmxvdyBpbiBtdWx0aXBsaWNhdGlvbiBiYXNlICogcmVzICovXG4gICAgaWYgKGNhbWxfaW50NjRfdWx0KHRocmVzaG9sZCwgcmVzKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gICAgZCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gICAgcmVzID0gY2FtbF9pbnQ2NF9hZGQoY2FtbF9pbnQ2NF9tdWwoYmFzZTY0LCByZXMpLCBkKTtcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gYWRkaXRpb24gKGJhc2UgKiByZXMpICsgZCAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdChyZXMsIGQpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoYmFzZSA9PSAxMCAmJiBjYW1sX2ludDY0X3VsdChuZXcgTWxJbnQ2NCgwLCAwLCAweDgwMDApLCByZXMpKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoc2lnbiA8IDApIHJlcyA9IGNhbWxfaW50NjRfbmVnKHJlcyk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShsbywgbWksIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobG8sIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICBsbyAmIDB4ZmZmZmZmLFxuICAgICgobG8gPj4+IDI0KSAmIDB4ZmYpIHwgKChoaSAmIDB4ZmZmZikgPDwgOCksXG4gICAgKGhpID4+PiAxNikgJiAweGZmZmYpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9sbzMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2xvMzIodil7IHJldHVybiB2LmxvMzIoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGkzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oaTMyKHYpeyByZXR1cm4gdi5oaTMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2J5dGVzKGEpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGFbN10gPDwgMCB8IChhWzZdIDw8IDgpIHwgKGFbNV0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVs0XSA8PCAwIHwgKGFbM10gPDwgOCkgfCAoYVsyXSA8PCAxNiksXG4gICAgICAgICAgICAgICAgICAgICBhWzFdIDw8IDAgfCAoYVswXSA8PCA4KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2J5dGVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2J5dGVzKHgpIHsgcmV0dXJuIHgudG9BcnJheSgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9oYXNoIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2hhc2godil7XG4gIHJldHVybiAodi5sbzMyKCkpIF4gKHYuaGkzMigpKVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwLTIwMTQgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQW4gT0NhbWwgc3RyaW5nIGlzIGFuIG9iamVjdCB3aXRoIHRocmVlIGZpZWxkczpcbi8vIC0gdGFnICd0J1xuLy8gLSBsZW5ndGggJ2wnXG4vLyAtIGNvbnRlbnRzICdjJ1xuLy9cbi8vIFRoZSBjb250ZW50cyBvZiB0aGUgc3RyaW5nIGNhbiBiZSBlaXRoZXIgYSBKYXZhU2NyaXB0IGFycmF5IG9yXG4vLyBhIEphdmFTY3JpcHQgc3RyaW5nLiBUaGUgbGVuZ3RoIG9mIHRoaXMgc3RyaW5nIGNhbiBiZSBsZXNzIHRoYW4gdGhlXG4vLyBsZW5ndGggb2YgdGhlIE9DYW1sIHN0cmluZy4gSW4gdGhpcyBjYXNlLCByZW1haW5pbmcgYnl0ZXMgYXJlXG4vLyBhc3N1bWVkIHRvIGJlIHplcm9lcy4gQXJyYXlzIGFyZSBtdXRhYmxlIGJ1dCBjb25zdW1lcyBtb3JlIG1lbW9yeVxuLy8gdGhhbiBzdHJpbmdzLiBBIGNvbW1vbiBwYXR0ZXJuIGlzIHRvIHN0YXJ0IGZyb20gYW4gZW1wdHkgc3RyaW5nIGFuZFxuLy8gcHJvZ3Jlc3NpdmVseSBmaWxsIGl0IGZyb20gdGhlIHN0YXJ0LiBQYXJ0aWFsIHN0cmluZ3MgbWFrZXMgaXRcbi8vIHBvc3NpYmxlIHRvIGltcGxlbWVudCB0aGlzIGVmZmljaWVudGx5LlxuLy9cbi8vIFdoZW4gY29udmVydGluZyB0byBhbmQgZnJvbSBVVEYtMTYsIHdlIGtlZXAgdHJhY2sgb2Ygd2hldGhlciB0aGVcbi8vIHN0cmluZyBpcyBjb21wb3NlZCBvbmx5IG9mIEFTQ0lJIGNoYXJhY3RlcnMgKGluIHdoaWNoIGNhc2UsIG5vXG4vLyBjb252ZXJzaW9uIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCkgb3Igbm90LlxuLy9cbi8vIFRoZSBzdHJpbmcgdGFnIGNhbiB0aHVzIHRha2UgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4vLyAgIGZ1bGwgc3RyaW5nICAgICBCWVRFIHwgVU5LTk9XTjogICAgICAwXG4vLyAgICAgICAgICAgICAgICAgICBCWVRFIHwgQVNDSUk6ICAgICAgICA5XG4vLyAgICAgICAgICAgICAgICAgICBCWVRFIHwgTk9UX0FTQ0lJOiAgICA4XG4vLyAgIHN0cmluZyBwcmVmaXggICBQQVJUSUFMOiAgICAgICAgICAgICAyXG4vLyAgIGFycmF5ICAgICAgICAgICBBUlJBWTogICAgICAgICAgICAgICA0XG4vL1xuLy8gT25lIGNhbiB1c2UgYml0IG1hc2tpbmcgdG8gZGlzY3JpbWluYXRlIHRoZXNlIGRpZmZlcmVudCBjYXNlczpcbi8vICAga25vd25fZW5jb2RpbmcoeCkgPSB4Jjhcbi8vICAgaXNfYXNjaWkoeCkgPSAgICAgICB4JjFcbi8vICAga2luZCh4KSA9ICAgICAgICAgICB4JjZcblxuLy9Qcm92aWRlczogY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX3N0cl9yZXBlYXQobiwgcykge1xuICBpZihuID09IDApIHJldHVybiBcIlwiO1xuICBpZiAocy5yZXBlYXQpIHtyZXR1cm4gcy5yZXBlYXQobik7fSAvLyBFQ01Bc2NyaXB0IDYgYW5kIEZpcmVmb3ggMjQrXG4gIHZhciByID0gXCJcIiwgbCA9IDA7XG4gIGZvcig7Oykge1xuICAgIGlmIChuICYgMSkgciArPSBzO1xuICAgIG4gPj49IDE7XG4gICAgaWYgKG4gPT0gMCkgcmV0dXJuIHI7XG4gICAgcyArPSBzO1xuICAgIGwrKztcbiAgICBpZiAobCA9PSA5KSB7XG4gICAgICBzLnNsaWNlKDAsMSk7IC8vIGZsYXR0ZW4gdGhlIHN0cmluZ1xuICAgICAgLy8gdGhlbiwgdGhlIGZsYXR0ZW5pbmcgb2YgdGhlIHdob2xlIHN0cmluZyB3aWxsIGJlIGZhc3RlcixcbiAgICAgIC8vIGFzIGl0IHdpbGwgYmUgY29tcG9zZWQgb2YgbGFyZ2VyIHBpZWNlc1xuICAgIH1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbi8vV2Vha2RlZlxuLy8gUHJlIEVDTUFTY3JpcHQgNSwgW2FwcGx5XSB3b3VsZCBub3Qgc3VwcG9ydCBhcnJheS1saWtlIG9iamVjdC5cbi8vIEluIHN1Y2ggc2V0dXAsIFR5cGVkX2FycmF5IHdvdWxkIGJlIGltcGxlbWVudGVkIGFzIHBvbHlmaWxsLCBhbmQgW2YuYXBwbHldIHdvdWxkXG4vLyBmYWlsIGhlcmUuIE1hcmsgdGhlIHByaW1pdGl2ZSBhcyBXZWFrZGVmLCBzbyB0aGF0IHBlb3BsZSBjYW4gb3ZlcnJpZGUgaXQgZWFzaWx5LlxuZnVuY3Rpb24gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzIChhLCBpLCBsZW4pIHtcbiAgdmFyIGYgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xuICBpZiAoaSA9PSAwICYmIGxlbiA8PSA0MDk2ICYmIGxlbiA9PSBhLmxlbmd0aCkgcmV0dXJuIGYuYXBwbHkgKG51bGwsIGEpO1xuICB2YXIgcyA9IFwiXCI7XG4gIGZvciAoOyAwIDwgbGVuOyBpICs9IDEwMjQsbGVuLT0xMDI0KVxuICAgIHMgKz0gZi5hcHBseSAobnVsbCwgYS5zbGljZShpLGkgKyBNYXRoLm1pbihsZW4sIDEwMjQpKSk7XG4gIHJldHVybiBzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3V0Zjhfb2ZfdXRmMTZcbmZ1bmN0aW9uIGNhbWxfdXRmOF9vZl91dGYxNihzKSB7XG4gIGZvciAodmFyIGIgPSBcIlwiLCB0ID0gYiwgYywgZCwgaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGMgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGMgPCAweDgwKSB7XG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IChqIDwgbCkgJiYgKGMgPSBzLmNoYXJDb2RlQXQoaikpIDwgMHg4MDsgaisrKTtcbiAgICAgIGlmIChqIC0gaSA+IDUxMikgeyB0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjsgYiArPSBzLnNsaWNlKGksIGopIH1cbiAgICAgIGVsc2UgdCArPSBzLnNsaWNlKGksIGopO1xuICAgICAgaWYgKGogPT0gbCkgYnJlYWs7XG4gICAgICBpID0gajtcbiAgICB9XG4gICAgaWYgKGMgPCAweDgwMCkge1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4YzAgfCAoYyA+PiA2KSk7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH0gZWxzZSBpZiAoYyA8IDB4ZDgwMCB8fCBjID49IDB4ZGZmZikge1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZTAgfCAoYyA+PiAxMiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiA2KSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9IGVsc2UgaWYgKGMgPj0gMHhkYmZmIHx8IGkgKyAxID09IGwgfHxcbiAgICAgICAgICAgICAgIChkID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgZCA+IDB4ZGZmZikge1xuICAgICAgLy8gVW5tYXRjaGVkIHN1cnJvZ2F0ZSBwYWlyLCByZXBsYWNlZCBieSBcXHVmZmZkIChyZXBsYWNlbWVudCBjaGFyYWN0ZXIpXG4gICAgICB0ICs9IFwiXFx4ZWZcXHhiZlxceGJkXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGkrKztcbiAgICAgIGMgPSAoYyA8PCAxMCkgKyBkIC0gMHgzNWZkYzAwO1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZjAgfCAoYyA+PiAxOCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiAxMikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH1cbiAgICBpZiAodC5sZW5ndGggPiAxMDI0KSB7dC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7fVxuICB9XG4gIHJldHVybiBiK3Q7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24gY2FtbF91dGYxNl9vZl91dGY4KHMpIHtcbiAgZm9yICh2YXIgYiA9IFwiXCIsIHQgPSBcIlwiLCBjLCBjMSwgYzIsIHYsIGkgPSAwLCBsID0gcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjMSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoYzEgPCAweDgwKSB7XG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IChqIDwgbCkgJiYgKGMxID0gcy5jaGFyQ29kZUF0KGopKSA8IDB4ODA7IGorKyk7XG4gICAgICBpZiAoaiAtIGkgPiA1MTIpIHsgdC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7IGIgKz0gcy5zbGljZShpLCBqKSB9XG4gICAgICBlbHNlIHQgKz0gcy5zbGljZShpLCBqKTtcbiAgICAgIGlmIChqID09IGwpIGJyZWFrO1xuICAgICAgaSA9IGo7XG4gICAgfVxuICAgIHYgPSAxO1xuICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpKSB7XG4gICAgICBjID0gYzIgKyAoYzEgPDwgNik7XG4gICAgICBpZiAoYzEgPCAweGUwKSB7XG4gICAgICAgIHYgPSBjIC0gMHgzMDgwO1xuICAgICAgICBpZiAodiA8IDB4ODApIHYgPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdiA9IDI7XG4gICAgICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpKSB7XG4gICAgICAgICAgYyA9IGMyICsgKGMgPDwgNik7XG4gICAgICAgICAgaWYgKGMxIDwgMHhmMCkge1xuICAgICAgICAgICAgdiA9IGMgLSAweGUyMDgwO1xuICAgICAgICAgICAgaWYgKCh2IDwgMHg4MDApIHx8ICgodiA+PSAweGQ3ZmYpICYmICh2IDwgMHhlMDAwKSkpIHYgPSAyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ID0gMztcbiAgICAgICAgICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpICYmXG4gICAgICAgICAgICAgICAgKGMxIDwgMHhmNSkpIHtcbiAgICAgICAgICAgICAgdiA9IGMyIC0gMHgzYzgyMDgwICsgKGMgPDwgNik7XG4gICAgICAgICAgICAgIGlmICh2IDwgMHgxMDAwMCB8fCB2ID4gMHgxMGZmZmYpIHYgPSAzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodiA8IDQpIHsgLy8gSW52YWxpZCBzZXF1ZW5jZVxuICAgICAgaSAtPSB2O1xuICAgICAgdCArPSBcIlxcdWZmZmRcIjtcbiAgICB9IGVsc2UgaWYgKHYgPiAweGZmZmYpXG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhkN2MwICsgKHYgPj4gMTApLCAweGRjMDAgKyAodiAmIDB4M0ZGKSlcbiAgICBlbHNlXG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUodik7XG4gICAgaWYgKHQubGVuZ3RoID4gMTAyNCkge3Quc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiO31cbiAgfVxuICByZXR1cm4gYit0O1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2lzX2FzY2lpXG5mdW5jdGlvbiBqc29vX2lzX2FzY2lpIChzKSB7XG4gIC8vIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gZ2V0cyBiZXR0ZXIgYXQgYXJvdW5kIHRoaXMgcG9pbnQgZm9yIGFsbCBicm93c2Vyc1xuICBpZiAocy5sZW5ndGggPCAyNCkge1xuICAgIC8vIFNwaWRlcm1vbmtleSBnZXRzIG11Y2ggc2xvd2VyIHdoZW4gcy5sZW5ndGggPj0gMjQgKG9uIDY0IGJpdCBhcmNocylcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIGlmIChzLmNoYXJDb2RlQXQoaSkgPiAxMjcpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlXG4gICAgcmV0dXJuICEvW15cXHgwMC1cXHg3Zl0vLnRlc3Qocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBpZiAoaSA+PSBzLmMubGVuZ3RoKSByZXR1cm4gMDtcbiAgY2FzZSAwOiAvKiBCWVRFUyAqL1xuICAgIHJldHVybiBzLmMuY2hhckNvZGVBdChpKTtcbiAgY2FzZSA0OiAvKiBBUlJBWSAqL1xuICAgIHJldHVybiBzLmNbaV1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIC8vIFRoZSBPQ2FtbCBjb21waWxlciB1c2VzIENoYXIudW5zYWZlX2NociBvbiBpbnRlZ2VycyBsYXJnZXIgdGhhbiAyNTUhXG4gIGMgJj0gMHhmZjtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSB7XG4gICAgaWYgKGkgPT0gcy5jLmxlbmd0aCkge1xuICAgICAgcy5jICs9IFN0cmluZy5mcm9tQ2hhckNvZGUgKGMpO1xuICAgICAgaWYgKGkgKyAxID09IHMubCkgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKTtcbiAgfVxuICBzLmNbaV0gPSBjO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0IChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0MTYocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDEpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDE2KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDEpO1xuICByZXR1cm4gKGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQzMihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKSxcbiAgICAgIGIzID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDIpLFxuICAgICAgYjQgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMyk7XG4gIHJldHVybiAoYjQgPDwgMjQgfCBiMyA8PCAxNiB8IGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQzMihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKSxcbiAgICAgIGIzID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMiksXG4gICAgICBiNCA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0IHwgYjMgPDwgMTYgfCBiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0NjQocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDcpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gbmV3IEFycmF5KDgpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKXtcbiAgICBhWzcgLSBqXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDY0KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSA3KSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gbmV3IEFycmF5KDgpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKXtcbiAgICBhWzcgLSBqXSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIGopO1xuICB9XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldCAocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQgKHMsIGksIGMpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0IChzLCBpLCBjKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MTYocyxpLGkxNil7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIyID0gMHhGRiAmIGkxNiA+PiA4LFxuICAgICAgYjEgPSAweEZGICYgaTE2O1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAwLCBiMSk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDEsIGIyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MTYocyxpLGkxNil7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQxNlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0MTZcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDE2KHMsaSxpMTYpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQxNihzLGksaTE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDMyKHMsaSxpMzIpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAzKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiNCA9IDB4RkYgJiBpMzIgPj4gMjQsXG4gICAgICBiMyA9IDB4RkYgJiBpMzIgPj4gMTYsXG4gICAgICBiMiA9IDB4RkYgJiBpMzIgPj4gOCxcbiAgICAgIGIxID0gMHhGRiAmIGkzMjtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMCwgYjEpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAxLCBiMik7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDIsIGIzKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMywgYjQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQzMihzLGksaTMyKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDMyXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQzMlxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MzIocyxpLGkzMil7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDMyKHMsaSxpMzIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0NjQocyxpLGk2NCl7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDcpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGk2NCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyA3IC0gaiwgYVtqXSk7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0NjQocyxpLGk2NCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQ2NFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDY0KHMsaSxpNjQpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQ2NChzLGksaTY0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQgKHMsIGksIGMpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3V0Zjhfb2ZfdXRmMTYsIE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmcgKHMpIHtcbiAgdmFyIHRhZyA9IDkgLyogQllURVMgfCBBU0NJSSAqLztcbiAgaWYgKCFqc29vX2lzX2FzY2lpKHMpKVxuICAgIHRhZyA9IDggLyogQllURVMgfCBOT1RfQVNDSUkgKi8sIHMgPSBjYW1sX3V0Zjhfb2ZfdXRmMTYocyk7XG4gIHJldHVybiBuZXcgTWxCeXRlcyh0YWcsIHMsIHMubGVuZ3RoKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEJ5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBqc29vX2lzX2FzY2lpLCBjYW1sX3V0ZjE2X29mX3V0ZjhcbmZ1bmN0aW9uIE1sQnl0ZXMgKHRhZywgY29udGVudHMsIGxlbmd0aCkge1xuICB0aGlzLnQ9dGFnOyB0aGlzLmM9Y29udGVudHM7IHRoaXMubD1sZW5ndGg7XG59XG5NbEJ5dGVzLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCl7XG4gIHN3aXRjaCAodGhpcy50KSB7XG4gIGNhc2UgOTogLypCWVRFUyB8IEFTQ0lJKi9cbiAgICByZXR1cm4gdGhpcy5jO1xuICBkZWZhdWx0OlxuICAgIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXModGhpcyk7XG4gIGNhc2UgMDogLypCWVRFUyB8IFVOS09XTiovXG4gICAgaWYgKGpzb29faXNfYXNjaWkodGhpcy5jKSkge1xuICAgICAgdGhpcy50ID0gOTsgLypCWVRFUyB8IEFTQ0lJKi9cbiAgICAgIHJldHVybiB0aGlzLmM7XG4gICAgfVxuICAgIHRoaXMudCA9IDg7IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICBjYXNlIDg6IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICAgIHJldHVybiB0aGlzLmM7XG4gIH1cbn07XG5NbEJ5dGVzLnByb3RvdHlwZS50b1V0ZjE2ID0gZnVuY3Rpb24gKCl7XG4gIHZhciByID0gdGhpcy50b1N0cmluZygpO1xuICBpZih0aGlzLnQgPT0gOSkgcmV0dXJuIHJcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChyKTtcbn1cbk1sQnl0ZXMucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gKCl7XG4gIHZhciBjb250ZW50ID0gdGhpcy50ID09IDQgPyB0aGlzLmMuc2xpY2UoKSA6IHRoaXMuYztcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRoaXMudCxjb250ZW50LHRoaXMubCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyX3JlcGVhdCwgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzIChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEJZVEVTICovXG4gIGlmIChzLnQgPT0gMiAvKiBQQVJUSUFMICovKVxuICAgIHMuYyArPSBjYW1sX3N0cl9yZXBlYXQocy5sIC0gcy5jLmxlbmd0aCwgJ1xcMCcpXG4gIGVsc2VcbiAgICBzLmMgPSBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMgKHMuYywgMCwgcy5jLmxlbmd0aCk7XG4gIHMudCA9IDA7IC8qQllURVMgfCBVTktPV04qL1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheSAocykge1xuICAvKiBBc3N1bWVzIG5vdCBBUlJBWSAqL1xuICB2YXIgYSA9IG5ldyBVaW50OEFycmF5KHMubCk7XG4gIHZhciBiID0gcy5jLCBsID0gYi5sZW5ndGgsIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGIuY2hhckNvZGVBdChpKTtcbiAgZm9yIChsID0gcy5sOyBpIDwgbDsgaSsrKSBhW2ldID0gMDtcbiAgcy5jID0gYTtcbiAgcy50ID0gNDsgLyogQVJSQVkgKi9cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIChzKSB7XG4gIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICByZXR1cm4gcy5jO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIGwgPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciBhID0gbmV3IFVpbnQ4QXJyYXkobCk7XG4gIHZhciBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSk7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBpZihsZW4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX3N0cmluZyhsZW4pIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJ5dGVzLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbj8yOjksXCJcIixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9hcnJheSAoYSkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoYSwwLGEubGVuZ3RoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfYXJyYXkgKGEpIHtcbiAgaWYoISAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgYSA9IG5ldyBVaW50OEFycmF5KGEpO1xuICB9XG4gIHJldHVybiBuZXcgTWxCeXRlcyg0LGEsYS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2NvbXBhcmUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19jb21wYXJlKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8tMTooczEuYyA+IHMyLmMpPzE6MDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA9PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbCBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDw9IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzdGhhbiBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczIsczEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMyLHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmlsbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vQWxpYXM6IGNhbWxfZmlsbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmlsbF9ieXRlcyhzLCBpLCBsLCBjKSB7XG4gIGlmIChsID4gMCkge1xuICAgIGlmIChpID09IDAgJiYgKGwgPj0gcy5sIHx8IChzLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGwgPj0gcy5jLmxlbmd0aCkpKSB7XG4gICAgICBpZiAoYyA9PSAwKSB7XG4gICAgICAgIHMuYyA9IFwiXCI7XG4gICAgICAgIHMudCA9IDI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMuYyA9IGNhbWxfc3RyX3JlcGVhdCAobCwgU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gICAgICAgIHMudCA9IChsID09IHMubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzKTtcbiAgICAgIGZvciAobCArPSBpOyBpIDwgbDsgaSsrKSBzLmNbaV0gPSBjO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ibGl0X2J5dGVzKHMxLCBpMSwgczIsIGkyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgaWYgKChpMiA9PSAwKSAmJlxuICAgICAgKGxlbiA+PSBzMi5sIHx8IChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsZW4gPj0gczIuYy5sZW5ndGgpKSkge1xuICAgIHMyLmMgPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIGlmIChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBpMiA9PSBzMi5jLmxlbmd0aCkge1xuICAgIHMyLmMgKz0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSB7XG4gICAgaWYgKHMyLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMyKTtcbiAgICB2YXIgYzEgPSBzMS5jLCBjMiA9IHMyLmM7XG4gICAgaWYgKHMxLnQgPT0gNCAvKiBBUlJBWSAqLykge1xuICAgICAgaWYgKGkyIDw9IGkxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsID0gTWF0aC5taW4gKGxlbiwgYzEubGVuZ3RoIC0gaTEpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIGMyIFtpMiArIGldID0gYzEuY2hhckNvZGVBdChpMSArIGkpO1xuICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ibGl0X3N0cmluZyhhLGIsYyxkLGUpIHtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGEpLGIsYyxkLGUpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19sZW5ndGgocykgeyByZXR1cm4gcy5sIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBzLmNoYXJDb2RlQXQoaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBzLmxlbmd0aFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/LTE6KHMxID4gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDw9IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocy5jKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgaWYoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gcztcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIGlmIChqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpXG4gIGVsc2UgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF91dGY4X29mX3V0ZjE2KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocykgeyByZXR1cm4gbmV3IE1sQnl0ZXMoMCxzLHMubGVuZ3RoKTsgfVxuXG5cbi8vIFRoZSBzZWN0aW9uIGJlbG93IHNob3VsZCBiZSB1c2VkIHdoZW4gdXNlLWpzLXN0cmluZz1mYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLGksYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBzLmMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpe1xuICByZXR1cm4gcy50b1V0ZjE2KClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2lzX21sX2J5dGVzKHMpIHtcbiAgcmV0dXJuIChzIGluc3RhbmNlb2YgTWxCeXRlcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19jb250ZW50KHMpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYztcbiAgY2FzZSA0OlxuICAgIHJldHVybiBzLmNcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaVxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiAodHlwZW9mIHMgPT09IFwic3RyaW5nXCIgJiYgIS9bXlxceDAwLVxceGZmXS8udGVzdChzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2lzX21sX2J5dGVzKHMpO1xufVxuXG4vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBkZXByZWNhdGVkXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9uZXdfc3RyaW5nIChzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdG9fanNfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdG9fanNfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc190b19zdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHMpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9zdHJpbmcoeCkgeyByZXR1cm4gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoeCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX2J5dGVzKHgpIHsgcmV0dXJuIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoeCkgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9SYWlzZSBleGNlcHRpb25cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2NvbnN0YW50ICh0YWcpIHsgdGhyb3cgdGFnOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGFyZykgeyB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsIHRhZywgYXJnXSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZ3MgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJncyAodGFnLCBhcmdzKSB7IHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCwgdGFnXS5jb25jYXQoYXJncykpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKHRhZywgbXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhtc2cpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYWlsd2l0aCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZhaWx3aXRoIChtc2cpIHtcbiAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSlcbiAgICBjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmU9WzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRmFpbHVyZVwiKSwtM107XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLCBtc2cpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuSW52YWxpZF9hcmd1bWVudCwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5FbmRfb2ZfZmlsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRGl2aXNpb25fYnlfemVybyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5Ob3RfZm91bmQpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuIChjb25zdCwgc2hhbGxvdylcbi8vSWY6ICFlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApXG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIGVsc2UgaWYgKGQgPCAwKSB7XG4gICAgdmFyIGcgPSBmLmFwcGx5KG51bGwsYXJncy5zbGljZSgwLG4pKTtcbiAgICBpZih0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZztcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihnLGFyZ3Muc2xpY2UobikpO1xuICB9XG4gIGVsc2Uge1xuICAgIHN3aXRjaCAoZCkge1xuICAgIGNhc2UgMToge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMSk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKCl7XG4gICAgICAgIHZhciBleHRyYV9hcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT0gMCk/MTphcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJncy5sZW5ndGgrZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkgbmFyZ3NbYXJncy5sZW5ndGgraV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgICAgfTtcbiAgICB9fVxuICAgIGcubCA9IGQ7XG4gICAgcmV0dXJuIGc7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiBlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApIHtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgfSBlbHNlIGlmIChkIDwgMCkge1xuICAgIHZhciByZXN0ID0gYXJncy5zbGljZShuIC0gMSk7XG4gICAgdmFyIGsgPSBhcmdzIFthcmdzTGVuIC0gMV07XG4gICAgYXJncyA9IGFyZ3Muc2xpY2UoMCwgbik7XG4gICAgYXJnc1tuIC0gMV0gPSBmdW5jdGlvbiAoZykge1xuICAgICAgaWYgKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBrKGcpO1xuICAgICAgdmFyIGFyZ3MgPSByZXN0LnNsaWNlKCk7XG4gICAgICBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPSBrO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZywgYXJncyk7IH07XG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgYXJnc0xlbi0tO1xuICAgIHZhciBrID0gYXJncyBbYXJnc0xlbl07XG4gICAgc3dpdGNoIChkKSB7XG4gICAgY2FzZSAxOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAyKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAyOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5LCB6KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAzKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMl0gPSB6O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoKXtcbiAgICAgICAgdmFyIGV4dHJhX2FyZ3MgPSAoYXJndW1lbnRzLmxlbmd0aCA9PSAwKT8xOmFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKVxuICAgICAgICAgIG5hcmdzW2FyZ3NMZW4gKyBpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgbmFyZ3MpXG4gICAgICB9O1xuICAgIH19XG4gICAgZy5sID0gZCArIDE7XG4gICAgcmV0dXJuIGsoZyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZXNcbnZhciBjYW1sX25hbWVkX3ZhbHVlcyA9IHt9O1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlIChjb25zdCxtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWUobm0sdikge1xuICBjYW1sX25hbWVkX3ZhbHVlc1tjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5tKV0gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXNcbmZ1bmN0aW9uIGNhbWxfbmFtZWRfdmFsdWUobm0pIHtcbiAgcmV0dXJuIGNhbWxfbmFtZWRfdmFsdWVzW25tXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dsb2JhbF9kYXRhXG52YXIgY2FtbF9nbG9iYWxfZGF0YSA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9idWlsZF9zeW1ib2xzKHN5bWIpIHtcbiAgdmFyIHIgPSB7fTtcbiAgaWYoc3ltYikge1xuICAgIGZvcih2YXIgaSA9IDE7IGkgPCBzeW1iLmxlbmd0aDsgaSsrKXtcbiAgICAgIHJbY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3ltYltpXVsxXSldID0gc3ltYltpXVsyXVxuICAgIH1cbiAgfVxuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKGNvbnN0LCBzaGFsbG93LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfY2FsbGJhY2ssIGNhbWxfYnVpbGRfc3ltYm9sc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKG4sIHYsIG5hbWVfb3B0KSB7XG4gIGlmIChuYW1lX29wdCkge1xuICAgIHZhciBuYW1lID0gbmFtZV9vcHQ7XG4gICAgaWYoZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jKSB7XG4gICAgICBuID0gY2FtbF9jYWxsYmFjayhnbG9iYWxUaGlzLnRvcGxldmVsUmVsb2MsIFtuYW1lXSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scykge1xuICAgICAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4KSB7XG4gICAgICAgIGNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4ID0gY2FtbF9idWlsZF9zeW1ib2xzKGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scylcbiAgICAgIH1cbiAgICAgIHZhciBuaWQgPSBjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeFtuYW1lXVxuICAgICAgaWYobmlkID49IDApXG4gICAgICAgIG4gPSBuaWRcbiAgICAgIGVsc2Uge1xuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9yZWdpc3Rlcl9nbG9iYWw6IGNhbm5vdCBsb2NhdGUgXCIgKyBuYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY2FtbF9nbG9iYWxfZGF0YVtuICsgMV0gPSB2O1xuICBpZihuYW1lX29wdCkgY2FtbF9nbG9iYWxfZGF0YVtuYW1lX29wdF0gPSB2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9nbG9iYWxfZGF0YSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2dldF9nbG9iYWxfZGF0YSAoKSB7IHJldHVybiBjYW1sX2dsb2JhbF9kYXRhOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfcHJpbnRhYmxlIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfaXNfcHJpbnRhYmxlKGMpIHsgcmV0dXJuICsoYyA+IDMxICYmIGMgPCAxMjcpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfcHJpbnRfc3RhdHNcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfcHJpbnRfc3RhdHModW5pdCkgeyByZXR1cm4gMCB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIFN5c1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3N5c19lcnJvciAobXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5TeXNfZXJyb3IsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4aXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9zeXNfZXhpdCAoY29kZSkge1xuICBpZihnbG9iYWxUaGlzLnF1aXQpIGdsb2JhbFRoaXMucXVpdChjb2RlKTtcbiAgLy9ub2RlanNcbiAgaWYoZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5leGl0KVxuICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5leGl0KGNvZGUpO1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJGdW5jdGlvbiAnZXhpdCcgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4bil7XG4gIHN3aXRjaChleG5bMl0pIHtcbiAgY2FzZSAtODogLy8gTWF0Y2hfZmFpbHVyZVxuICBjYXNlIC0xMTogLy8gQXNzZXJ0X2ZhaWx1cmVcbiAgY2FzZSAtMTI6IC8vIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG4gICAgcmV0dXJuIDE7XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXhuKXtcbiAgdmFyIHIgPSBcIlwiO1xuICBpZihleG5bMF0gPT0gMCkge1xuICAgIHIgKz0gZXhuWzFdWzFdO1xuICAgIGlmKGV4bi5sZW5ndGggPT0gMyAmJiBleG5bMl1bMF0gPT0gMCAmJiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4blsxXSkpIHtcblxuICAgICAgdmFyIGJ1Y2tldCA9IGV4blsyXTtcbiAgICAgIHZhciBzdGFydCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFydCA9IDJcbiAgICAgIHZhciBidWNrZXQgPSBleG47XG4gICAgfVxuICAgIHIgKz0gXCIoXCI7XG4gICAgZm9yKHZhciBpID0gc3RhcnQ7IGkgPCBidWNrZXQubGVuZ3RoOyBpICsrKXtcbiAgICAgIGlmKGkgPiBzdGFydCkgcis9XCIsIFwiO1xuICAgICAgdmFyIHYgPSBidWNrZXRbaV1cbiAgICAgIGlmKHR5cGVvZiB2ID09IFwibnVtYmVyXCIpXG4gICAgICAgIHIrPSB2LnRvU3RyaW5nKCk7XG4gICAgICBlbHNlIGlmKHYgaW5zdGFuY2VvZiBNbEJ5dGVzKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSBpZih0eXBlb2YgdiA9PSBcInN0cmluZ1wiKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSByICs9IFwiX1wiO1xuICAgIH1cbiAgICByICs9IFwiKVwiXG4gIH0gZWxzZSBpZiAoZXhuWzBdID09IDI0OCl7XG4gICAgciArPSBleG5bMV1cbiAgfVxuICByZXR1cm4gclxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9mb3JtYXRfZXhjZXB0aW9uLCBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihlcnIpe1xuICBpZihlcnIgaW5zdGFuY2VvZiBBcnJheSAmJiAoZXJyWzBdID09IDAgfHwgZXJyWzBdID09IDI0OCkpIHtcbiAgICB2YXIgaGFuZGxlciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCIpO1xuICAgIGlmKGhhbmRsZXIpIGNhbWxfY2FsbGJhY2soaGFuZGxlciwgW2VycixmYWxzZV0pO1xuICAgIGVsc2Uge1xuICAgICAgdmFyIG1zZyA9IGNhbWxfZm9ybWF0X2V4Y2VwdGlvbihlcnIpO1xuICAgICAgdmFyIGF0X2V4aXQgPSBjYW1sX25hbWVkX3ZhbHVlKFwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIpO1xuICAgICAgaWYoYXRfZXhpdCkgY2FtbF9jYWxsYmFjayhhdF9leGl0LCBbMF0pO1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gXCIgKyBtc2cpO1xuICAgICAgaWYoZXJyLmpzX2Vycm9yKSB0aHJvdyBlcnIuanNfZXJyb3I7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IGVyclxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3N0YXRpY19lbnZcbmZ1bmN0aW9uIGNhbWxfc2V0X3N0YXRpY19lbnYoayx2KXtcbiAgaWYoIWdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52KVxuICAgIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52ID0ge31cbiAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZba10gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19zeXNfZ2V0ZW52IChjb25zdClcbmZ1bmN0aW9uIGpzb29fc3lzX2dldGVudihuKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICAvL25vZGVqcyBlbnZcbiAgaWYocHJvY2Vzc1xuICAgICAmJiBwcm9jZXNzLmVudlxuICAgICAmJiBwcm9jZXNzLmVudltuXSAhPSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIHByb2Nlc3MuZW52W25dO1xuICBpZihnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudlxuICAgICAmJiBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXSlcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZbbl1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0ZW52IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29fc3lzX2dldGVudlxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0ZW52IChuYW1lKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgaWYociA9PT0gdW5kZWZpbmVkKVxuICAgIGNhbWxfcmFpc2Vfbm90X2ZvdW5kICgpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdW5zYWZlX2dldGVudlxuLy9SZXF1aXJlczogY2FtbF9zeXNfZ2V0ZW52XG5mdW5jdGlvbiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52KG5hbWUpe1xuICByZXR1cm4gY2FtbF9zeXNfZ2V0ZW52IChuYW1lKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xudmFyIGNhbWxfYXJndiA9ICgoZnVuY3Rpb24gKCkge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgdmFyIG1haW4gPSBcImEub3V0XCI7XG4gIHZhciBhcmdzID0gW11cblxuICBpZihwcm9jZXNzXG4gICAgICYmIHByb2Nlc3MuYXJndlxuICAgICAmJiBwcm9jZXNzLmFyZ3YubGVuZ3RoID4gMSkge1xuICAgIHZhciBhcmd2ID0gcHJvY2Vzcy5hcmd2XG4gICAgLy9ub2RlanNcbiAgICBtYWluID0gYXJndlsxXTtcbiAgICBhcmdzID0gYXJndi5zbGljZSgyKTtcbiAgfVxuXG4gIHZhciBwID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobWFpbik7XG4gIHZhciBhcmdzMiA9IFswLCBwXTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspXG4gICAgYXJnczIucHVzaChjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhhcmdzW2ldKSk7XG4gIHJldHVybiBhcmdzMjtcbn0pKCkpXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhlY3V0YWJsZV9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbnZhciBjYW1sX2V4ZWN1dGFibGVfbmFtZSA9IGNhbWxfYXJndlsxXVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfYXJndiAoYSkge1xuICByZXR1cm4gWzAsIGNhbWxfYXJndlsxXSwgY2FtbF9hcmd2XTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19hcmd2IChhKSB7XG4gIHJldHVybiBjYW1sX2FyZ3Y7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21vZGlmeV9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX21vZGlmeV9hcmd2KGFyZyl7XG4gIGNhbWxfYXJndiA9IGFyZztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZShhKXtcbiAgcmV0dXJuIGNhbWxfZXhlY3V0YWJsZV9uYW1lXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQoY21kKXtcbiAgdmFyIGNtZCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGNtZCk7XG4gIGlmICh0eXBlb2YgcmVxdWlyZSAhPSBcInVuZGVmaW5lZFwiKXtcbiAgICB2YXIgY2hpbGRfcHJvY2VzcyA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKTtcbiAgICBpZihjaGlsZF9wcm9jZXNzICYmIGNoaWxkX3Byb2Nlc3MuZXhlY1N5bmMpXG4gICAgICB0cnkge1xuICAgICAgICBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKGNtZCx7c3RkaW86ICdpbmhlcml0J30pO1xuICAgICAgICByZXR1cm4gMFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gMVxuICAgICAgfVxuICB9XG4gIGVsc2UgcmV0dXJuIDEyNztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZChjbWQpe1xuICByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c190aW1lIG11dGFibGVcbnZhciBjYW1sX2luaXRpYWxfdGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgKiAwLjAwMTtcbmZ1bmN0aW9uIGNhbWxfc3lzX3RpbWUgKCkge1xuICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgcmV0dXJuIG5vdyAqIDAuMDAxIC0gY2FtbF9pbml0aWFsX3RpbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlblxuLy9SZXF1aXJlczogY2FtbF9zeXNfdGltZVxuZnVuY3Rpb24gY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuKGIpIHtcbiAgcmV0dXJuIGNhbWxfc3lzX3RpbWUoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmFuZG9tX3NlZWQgbXV0YWJsZVxuLy9UaGUgZnVuY3Rpb24gbmVlZHMgdG8gcmV0dXJuIGFuIGFycmF5IHNpbmNlIE9DYW1sIDQuMC4uLlxuZnVuY3Rpb24gY2FtbF9zeXNfcmFuZG9tX3NlZWQgKCkge1xuICBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8pIHtcbiAgICAgaWYgKGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICAgICAgIHZhciBhID0gZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQzMkFycmF5KDQpKTtcbiAgICAgICByZXR1cm4gWzAsIGFbMF0sIGFbMV0sIGFbMl0sIGFbM11dO1xuICAgICB9IGVsc2UgaWYgKGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzKSB7XG4gICAgICAgdmFyIGEgPSBuZXcgSW50MzJBcnJheShnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcygxNikuYnVmZmVyKTtcbiAgICAgICByZXR1cm4gWzAsIGFbMF0sIGFbMV0sIGFbMl0sIGFbM11dO1xuICAgICB9XG4gIH1cbiAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIHZhciB4ID0gbm93XjB4ZmZmZmZmZmYqTWF0aC5yYW5kb20oKTtcbiAgcmV0dXJuIFswLHhdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfaW50X3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2ludF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgY29uc3Rcbi8vIG1heF9pbnQgLyA0IHNvIHRoYXQgdGhlIGZvbGxvd2luZyBkb2VzIG5vdCBvdmVyZmxvd1xuLy9sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDE7O1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSAoKSB7IHJldHVybiAoMHg3RkZGRkZGRi80KSB8IDA7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIlVuaXhcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiAoKSB7IHJldHVybiBvc190eXBlID09IFwiV2luMzJcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJDeWd3aW5cIiA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwianNfb2Zfb2NhbWxcIildO1xufVxuXG4vL1Byb3ZpZGVzOiBvc190eXBlXG52YXIgb3NfdHlwZSA9IChnbG9iYWxUaGlzLnByb2Nlc3MgJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtID09IFwid2luMzJcIikgPyBcIkN5Z3dpblwiIDogXCJVbml4XCI7XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2NvbmZpZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2NvbmZpZyAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhvc190eXBlKSwgMzIsIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzYXR0eShfY2hhbikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3ZhcmlhbnRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV92YXJpYW50KF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlcigpe3JldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbnZhciBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MgKGJvb2wpIHtcbiAgY2FtbF9ydW50aW1lX3dhcm5pbmdzID0gYm9vbDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9ydW50aW1lX3dhcm5pbmdzO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3BhY2V0aW1lX2VuYWJsZWQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9zcGFjZXRpbWVfZW5hYmxlZChfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZShfY2hhbm5lbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiU3BhY2V0aW1lIHByb2ZpbGluZyBvbmx5IHdvcmtzIGZvciBuYXRpdmUgY29kZVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF94ZGdfZGVmYXVsdHNcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX3hkZ19kZWZhdWx0cyhfdW5pdCkge1xuICByZXR1cm4gMDsgLy8gZW1wdHkgbGlzdFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGVcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuaXNGaWxlKHJvb3QucmVzdCk7XG59XG4vL0Fsd2F5c1xuLy9SZXF1aXJlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICBpZihwcm9jZXNzICYmIHByb2Nlc3Mub24pIHtcbiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIGZ1bmN0aW9uIChlcnIsIG9yaWdpbikge1xuICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHByb2Nlc3MuZXhpdCAoMik7XG4gICAgfSlcbiAgfVxuICBlbHNlIGlmKGdsb2JhbFRoaXMuYWRkRXZlbnRMaXN0ZW5lcil7XG4gICAgZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGZ1bmN0aW9uKGV2ZW50KXtcbiAgICAgIGlmKGV2ZW50LmVycm9yKXtcbiAgICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXZlbnQuZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5jYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCk7XG5cblxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG52YXIgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSBGTEFHKFwid2l0aC1qcy1lcnJvclwiKTtcblxuKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHIgPSBqc29vX3N5c19nZXRlbnYoXCJPQ0FNTFJVTlBBUkFNXCIpXG4gIGlmKHIgIT09IHVuZGVmaW5lZCl7XG4gICAgdmFyIGwgPSByLnNwbGl0KFwiLFwiKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbC5sZW5ndGg7IGkrKyl7XG4gICAgICBpZihsW2ldID09IFwiYlwiKSB7IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gMTsgYnJlYWsgfVxuICAgICAgZWxzZSBpZiAobFtpXS5zdGFydHNXaXRoKFwiYj1cIikpIHtcbiAgICAgICAgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSArKGxbaV0uc2xpY2UoMikpfVxuICAgICAgZWxzZSBjb250aW51ZTtcbiAgICB9XG4gIH1cbn0pICgpXG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2JhY2t0cmFjZV9zdGF0dXNcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX2JhY2t0cmFjZV9zdGF0dXMgKF91bml0KSB7IHJldHVybiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfcmVjb3JkX2JhY2t0cmFjZSAoYikgeyBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IGI7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgKCkgeyByZXR1cm4gWzBdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbGVuZ3RoKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZV9zbG90OiBpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlKGV4biwgYnQpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrICgpIHsgcmV0dXJuIFswXTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90KCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgbGlicmFyeVxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEpzbGliXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfcHVyZV9leHByIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3B1cmVfZXhwciAoZikgeyByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBbMF0pOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfc2V0IChtdXRhYmxlLCBjb25zdCwgbXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfanNfc2V0KG8sZix2KSB7IG9bZl09djtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0IChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0KG8sZikgeyByZXR1cm4gb1tmXTsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19kZWxldGUgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19kZWxldGUobyxmKSB7IGRlbGV0ZSBvW2ZdOyByZXR1cm4gMH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19pbnN0YW5jZW9mIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2luc3RhbmNlb2YobyxjKSB7IHJldHVybiAobyBpbnN0YW5jZW9mIGMpID8gMSA6IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc190eXBlb2YgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190eXBlb2YobykgeyByZXR1cm4gdHlwZW9mIG87IH1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVcbmZ1bmN0aW9uIGNhbWxfdHJhbXBvbGluZShyZXMpIHtcbiAgdmFyIGMgPSAxO1xuICB3aGlsZShyZXMgJiYgcmVzLmpvb190cmFtcCl7XG4gICAgcmVzID0gcmVzLmpvb190cmFtcC5hcHBseShudWxsLCByZXMuam9vX2FyZ3MpO1xuICAgIGMrKztcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbmZ1bmN0aW9uIGNhbWxfdHJhbXBvbGluZV9yZXR1cm4oZixhcmdzKSB7XG4gIHJldHVybiB7am9vX3RyYW1wOmYsam9vX2FyZ3M6YXJnc307XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF9zdGFja19kZXB0aFxuLy9JZjogZWZmZWN0c1xudmFyIGNhbWxfc3RhY2tfZGVwdGggPSAwO1xuXG4vL1Byb3ZpZGVzOmNhbWxfc3RhY2tfY2hlY2tfZGVwdGhcbi8vSWY6IGVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9zdGFja19kZXB0aFxuZnVuY3Rpb24gY2FtbF9zdGFja19jaGVja19kZXB0aCgpIHtcbiAgICByZXR1cm4gLS1jYW1sX3N0YWNrX2RlcHRoID4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsYmFja1xuLy9JZjogIWVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9jYWxsX2dlblxudmFyIGNhbWxfY2FsbGJhY2sgPSBjYW1sX2NhbGxfZ2VuO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiBlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfc3RhY2tfZGVwdGgsIGNhbWxfY2FsbF9nZW4sIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrLCBjYW1sX3dyYXBfZXhjZXB0aW9uLCBjYW1sX3Jlc3VtZV9zdGFjaywgY2FtbF9mcmVzaF9vb19pZCwgY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV93aXRoX2FyZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudFxuZnVuY3Rpb24gY2FtbF9jYWxsYmFjayhmLGFyZ3MpIHtcbiAgZnVuY3Rpb24gdW5jYXVnaHRfZWZmZWN0X2hhbmRsZXIoZWZmLGssbXMpIHtcbiAgICAvLyBSZXN1bWVzIHRoZSBjb250aW51YXRpb24gayBieSByYWlzaW5nIGV4Y2VwdGlvbiBVbmhhbmRsZWQuXG4gICAgY2FtbF9yZXN1bWVfc3RhY2soa1sxXSxtcyk7XG4gICAgdmFyIGV4biA9IGNhbWxfbmFtZWRfdmFsdWUoXCJFZmZlY3QuVW5oYW5kbGVkXCIpO1xuICAgIGlmKGV4bikgY2FtbF9yYWlzZV93aXRoX2FyZyhleG4sIGVmZik7XG4gICAgZWxzZSB7XG4gICAgICBleG4gPSBbMjQ4LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJFZmZlY3QuVW5oYW5kbGVkXCIpLCBjYW1sX2ZyZXNoX29vX2lkKDApXTtcbiAgICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoZXhuKTtcbiAgICB9XG4gIH1cbiAgdmFyIHNhdmVkX3N0YWNrX2RlcHRoID0gY2FtbF9zdGFja19kZXB0aDtcbiAgdmFyIHNhdmVkX2V4bl9zdGFjayA9IGNhbWxfZXhuX3N0YWNrO1xuICB2YXIgc2F2ZWRfZmliZXJfc3RhY2sgPSBjYW1sX2ZpYmVyX3N0YWNrO1xuICB0cnkge1xuICAgIGNhbWxfZXhuX3N0YWNrID0gMDtcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID1cbiAgICAgIHtoOlswLCAwLCAwLCB1bmNhdWdodF9lZmZlY3RfaGFuZGxlcl0sIHI6e2s6MCwgeDowLCBlOjB9fTtcbiAgICB2YXIgcmVzID0ge2pvb190cmFtcDogZixcbiAgICAgICAgICAgICAgIGpvb19hcmdzOiBhcmdzLmNvbmNhdChmdW5jdGlvbiAoeCl7cmV0dXJuIHg7fSl9O1xuICAgIGRvIHtcbiAgICAgIGNhbWxfc3RhY2tfZGVwdGggPSA0MDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlcyA9IGNhbWxfY2FsbF9nZW4ocmVzLmpvb190cmFtcCwgcmVzLmpvb19hcmdzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLyogSGFuZGxlIGV4Y2VwdGlvbiBjb21pbmcgZnJvbSBKYXZhU2NyaXB0IG9yIGZyb20gdGhlIHJ1bnRpbWUuICovXG4gICAgICAgIGlmICghY2FtbF9leG5fc3RhY2spIHRocm93IGU7XG4gICAgICAgIHZhciBoYW5kbGVyID0gY2FtbF9leG5fc3RhY2tbMV07XG4gICAgICAgIGNhbWxfZXhuX3N0YWNrID0gY2FtbF9leG5fc3RhY2tbMl07XG4gICAgICAgIHJlcyA9IHtqb29fdHJhbXA6IGhhbmRsZXIsXG4gICAgICAgICAgICAgICBqb29fYXJnczogW2NhbWxfd3JhcF9leGNlcHRpb24oZSldfTtcbiAgICAgIH1cbiAgICB9IHdoaWxlKHJlcyAmJiByZXMuam9vX2FyZ3MpXG4gIH0gZmluYWxseSB7XG4gICAgY2FtbF9zdGFja19kZXB0aCA9IHNhdmVkX3N0YWNrX2RlcHRoO1xuICAgIGNhbWxfZXhuX3N0YWNrID0gc2F2ZWRfZXhuX3N0YWNrO1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPSBzYXZlZF9maWJlcl9zdGFjaztcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2pzXG5mdW5jdGlvbiBjYW1sX2lzX2pzKCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nKHVuaXQpe1xuICByZXR1cm4gRkxBRyhcInVzZS1qcy1zdHJpbmdcIilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNvb19mbGFnc19lZmZlY3RzKHVuaXQpe1xuICByZXR1cm4gRkxBRyhcImVmZmVjdHNcIilcbn1cblxuLy9Qcm92aWRlczogY2FtbF93cmFwX2V4Y2VwdGlvbiBjb25zdCAobXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsY2FtbF9uYW1lZF92YWx1ZVxuZnVuY3Rpb24gY2FtbF93cmFwX2V4Y2VwdGlvbihlKSB7XG4gIGlmIChGTEFHKFwiZXhjd3JhcFwiKSkge1xuICAgIGlmKGUgaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIGU7XG4gICAgdmFyIGV4bjtcbiAgICAvL1N0YWNrX292ZXJmbG93OiBjaHJvbWUsIHNhZmFyaVxuICAgIGlmKGdsb2JhbFRoaXMuUmFuZ2VFcnJvclxuICAgICAgICYmIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlJhbmdlRXJyb3JcbiAgICAgICAmJiBlLm1lc3NhZ2VcbiAgICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL21heGltdW0gY2FsbCBzdGFjay9pKSlcbiAgICAgIGV4biA9IGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3c7XG4gICAgLy9TdGFja19vdmVyZmxvdzogZmlyZWZveFxuICAgIGVsc2UgaWYoZ2xvYmFsVGhpcy5JbnRlcm5hbEVycm9yXG4gICAgICAgJiYgZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvclxuICAgICAgICYmIGUubWVzc2FnZVxuICAgICAgICYmIGUubWVzc2FnZS5tYXRjaCgvdG9vIG11Y2ggcmVjdXJzaW9uL2kpKVxuICAgICAgZXhuID0gY2FtbF9nbG9iYWxfZGF0YS5TdGFja19vdmVyZmxvdztcbiAgICAvL1dyYXAgRXJyb3IgaW4gSnMuRXJyb3IgZXhjZXB0aW9uXG4gICAgZWxzZSBpZihlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5FcnJvciAmJiBjYW1sX25hbWVkX3ZhbHVlKFwianNFcnJvclwiKSlcbiAgICAgIGV4biA9IFswLGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpLGVdO1xuICAgIGVsc2VcbiAgICAgIC8vZmFsbGJhY2s6IHdyYXBwZWQgaW4gRmFpbHVyZVxuICAgICAgZXhuID0gWzAsY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChTdHJpbmcoZSkpXTtcbiAgICAvLyBXZSBhbHJlYWR5IGhhdmUgYW4gZXJyb3IgYXQgaGFuZCwgbGV0J3MgdXNlIGl0LlxuICAgIGlmIChlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5FcnJvcilcbiAgICAgIGV4bi5qc19lcnJvciA9IGU7XG4gICAgcmV0dXJuIGV4bjtcbiAgfSBlbHNlXG4gICAgcmV0dXJuIGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoZXhuLCBmb3JjZSkge1xuICBpZihjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZylcbiAgICByZXR1cm4gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSk7XG4gIGVsc2UgcmV0dXJuIGV4blxufVxuXG4vLyBFeHBlcmltZW50YWxcbi8vUHJvdmlkZXM6IGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZShleG4sIGZvcmNlKSB7XG4gIC8vbmV2ZXIgcmVyYWlzZSBmb3IgY29uc3RhbnQgZXhuXG4gIGlmKCFleG4uanNfZXJyb3IgfHwgZm9yY2UgfHwgZXhuWzBdID09IDI0OCkgZXhuLmpzX2Vycm9yID0gbmV3IGdsb2JhbFRoaXMuRXJyb3IoXCJKcyBleGNlcHRpb24gY29udGFpbmluZyBiYWNrdHJhY2VcIik7XG4gIHJldHVybiBleG47XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmKGV4bi5qc19lcnJvcikgeyByZXR1cm4gWzAsIGV4bi5qc19lcnJvcl07IH1cbiAgcmV0dXJuIDA7XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYm9vbCh4KSB7IHJldHVybiAhIXg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Jvb2woeCkgeyByZXR1cm4gK3g7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9mbG9hdCBjb25zdCAoY29uc3QpXG4vL0FsaWFzOiBjYW1sX2pzX2Zyb21faW50MzJcbi8vQWxpYXM6IGNhbWxfanNfZnJvbV9uYXRpdmVpbnRcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9mbG9hdCh4KSB7IHJldHVybiB4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Zsb2F0IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19pbnQzMiBjb25zdCAoY29uc3QpXG4vL0FsaWFzOiBjYW1sX2pzX3RvX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9qc190b19pbnQzMih4KSB7IHJldHVybiB4fDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYXJyYXkoYSkge1xuICByZXR1cm4gYS5zbGljZSgxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYXJyYXkgbXV0YWJsZSAoc2hhbGxvdylcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYXJyYXkoYSkge1xuICB2YXIgbGVuID0gYS5sZW5ndGg7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbisxKTtcbiAgYlswXSA9IDA7XG4gIGZvcih2YXIgaT0wO2k8bGVuO2krKykgYltpKzFdID0gYVtpXTtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF9vZl9qc19hcnJheSBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGlzdF9vZl9qc19hcnJheShhKXtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGk9YS5sZW5ndGggLSAxOyBpPj0wOyBpLS0pe1xuICAgIHZhciBlID0gYVtpXTtcbiAgICBsID0gWzAsZSxsXTtcbiAgfVxuICByZXR1cm4gbFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xpc3RfdG9fanNfYXJyYXkgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xpc3RfdG9fanNfYXJyYXkobCl7XG4gIHZhciBhID0gW107XG4gIGZvcig7IGwgIT09IDA7IGwgPSBsWzJdKSB7XG4gICAgYS5wdXNoKGxbMV0pO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3ZhciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc192YXIoeCkge1xuICB2YXIgeCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHgpO1xuICAvL0NoZWNrcyB0aGF0IHggaGFzIHRoZSBmb3JtIGlkZW50Wy5pZGVudF0qXG4gIGlmKCF4Lm1hdGNoKC9eW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qKFxcLlthLXpBLVpfJF1bYS16QS1aXyQwLTldKikqJC8pKXtcbiAgICBjb25zb2xlLmVycm9yKFwiY2FtbF9qc192YXI6IFxcXCJcIiArIHggKyBcIlxcXCIgaXMgbm90IGEgdmFsaWQgSmF2YVNjcmlwdCB2YXJpYWJsZS4gY29udGludWluZyAuLlwiKTtcbiAgICAvL2NvbnNvbGUuZXJyb3IoXCJKcy5VbnNhZmUuZXZhbF9zdHJpbmdcIilcbiAgfVxuICByZXR1cm4gZXZhbCh4KTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfY2FsbCAoY29uc3QsIG11dGFibGUsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfY2FsbChmLCBvLCBhcmdzKSB7IHJldHVybiBmLmFwcGx5KG8sIGNhbWxfanNfZnJvbV9hcnJheShhcmdzKSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuX2NhbGwgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2Z1bl9jYWxsKGYsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDE6IHJldHVybiBmKCk7XG4gIGNhc2UgMjogcmV0dXJuIGYgKGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBmIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIGNhc2UgODogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdLGFbN10pO1xuICB9XG4gIHJldHVybiBmLmFwcGx5KG51bGwsIGNhbWxfanNfZnJvbV9hcnJheShhKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX21ldGhfY2FsbCAobXV0YWJsZSwgY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX21ldGhfY2FsbChvLCBmLCBhcmdzKSB7XG4gIHJldHVybiBvW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGYpXS5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19uZXcgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX25ldyhjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMjogcmV0dXJuIG5ldyBjIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIGNhc2UgODogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpOyB9XG4gIEYucHJvdG90eXBlID0gYy5wcm90b3R5cGU7XG4gIHJldHVybiBuZXcgRjtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfb2pzX25ld19hcnIgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX29qc19uZXdfYXJyKGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDA6IHJldHVybiBuZXcgYztcbiAgY2FzZSAxOiByZXR1cm4gbmV3IGMgKGFbMF0pO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7IHJldHVybiBjLmFwcGx5KHRoaXMsIGEpOyB9XG4gIEYucHJvdG90eXBlID0gYy5wcm90b3R5cGU7XG4gIHJldHVybiBuZXcgRjtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFjayBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2soZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGlmKGxlbiA+IDApe1xuICAgICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGFyZ3MgPSBbdW5kZWZpbmVkXTtcbiAgICB9XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gICAgcmV0dXJuIChyZXMgaW5zdGFuY2VvZiBGdW5jdGlvbik/Y2FtbF9qc193cmFwX2NhbGxiYWNrKHJlcyk6cmVzO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMoZikge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIFthcmdzXSk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QoYXJpdHksIGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJpdHkpO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoLCBhcml0eSlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKTtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7IH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfd3JhcF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2soZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLGFyZ3MpO1xuICAgIHJldHVybiAocmVzIGluc3RhbmNlb2YgRnVuY3Rpb24pP2NhbWxfanNfd3JhcF9jYWxsYmFjayhyZXMpOnJlcztcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsW3RoaXMsYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5ICsgMSk7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGgsIGFyaXR5KVxuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIC0gMTtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7IH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuLy9JZjogIWVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICByZXR1cm4gKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIHtcbiAgLy8gRnVuY3Rpb25zIGhhdmUgYW4gYWRkaXRpb25hbCBjb250aW51YXRpb24gcGFyYW1ldGVyLiBUaGlzIHNob3VsZFxuICAvLyBub3QgYmUgdmlzaWJsZSB3aGVuIGNhbGxpbmcgdGhlbSBmcm9tIEphdmFTY3JpcHRcbiAgcmV0dXJuICgoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpKSAtIDFcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19lcXVhbHMgKHgsIHkpIHsgcmV0dXJuICsoeCA9PSB5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3N0cmljdF9lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19zdHJpY3RfZXF1YWxzICh4LCB5KSB7IHJldHVybiArKHggPT09IHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXZhbF9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXZhbF9zdHJpbmcgKHMpIHtyZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V4cHIgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXhwcihzKSB7XG4gIGNvbnNvbGUuZXJyb3IoXCJjYW1sX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgcmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9wdXJlX2pzX2V4cHIgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcHVyZV9qc19leHByIChzKXtcbiAgY29uc29sZS5lcnJvcihcImNhbWxfcHVyZV9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfb2JqZWN0IChvYmplY3RfbGl0ZXJhbClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX29iamVjdCAoYSkge1xuICB2YXIgbyA9IHt9O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcCA9IGFbaV07XG4gICAgb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwWzFdKV0gPSBwWzJdO1xuICB9XG4gIHJldHVybiBvO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBGb3JtYXRcblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9mb3JtYXRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9mb3JtYXQgKGZtdCkge1xuICBmbXQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCk7XG4gIHZhciBsZW4gPSBmbXQubGVuZ3RoO1xuICBpZiAobGVuID4gMzEpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImZvcm1hdF9pbnQ6IGZvcm1hdCB0b28gbG9uZ1wiKTtcbiAgdmFyIGYgPVxuICAgICAgeyBqdXN0aWZ5OicrJywgc2lnbnN0eWxlOictJywgZmlsbGVyOicgJywgYWx0ZXJuYXRlOmZhbHNlLFxuICAgICAgICBiYXNlOjAsIHNpZ25lZGNvbnY6ZmFsc2UsIHdpZHRoOjAsIHVwcGVyY2FzZTpmYWxzZSxcbiAgICAgICAgc2lnbjoxLCBwcmVjOi0xLCBjb252OidmJyB9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBmbXQuY2hhckF0KGkpO1xuICAgIHN3aXRjaCAoYykge1xuICAgIGNhc2UgJy0nOlxuICAgICAgZi5qdXN0aWZ5ID0gJy0nOyBicmVhaztcbiAgICBjYXNlICcrJzogY2FzZSAnICc6XG4gICAgICBmLnNpZ25zdHlsZSA9IGM7IGJyZWFrO1xuICAgIGNhc2UgJzAnOlxuICAgICAgZi5maWxsZXIgPSAnMCc7IGJyZWFrO1xuICAgIGNhc2UgJyMnOlxuICAgICAgZi5hbHRlcm5hdGUgPSB0cnVlOyBicmVhaztcbiAgICBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzogY2FzZSAnNSc6XG4gICAgY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICBmLndpZHRoID0gMDtcbiAgICAgIHdoaWxlIChjPWZtdC5jaGFyQ29kZUF0KGkpIC0gNDgsIGMgPj0gMCAmJiBjIDw9IDkpIHtcbiAgICAgICAgZi53aWR0aCA9IGYud2lkdGggKiAxMCArIGM7IGkrK1xuICAgICAgfVxuICAgICAgaS0tO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnLic6XG4gICAgICBmLnByZWMgPSAwO1xuICAgICAgaSsrO1xuICAgICAgd2hpbGUgKGM9Zm10LmNoYXJDb2RlQXQoaSkgLSA0OCwgYyA+PSAwICYmIGMgPD0gOSkge1xuICAgICAgICBmLnByZWMgPSBmLnByZWMgKiAxMCArIGM7IGkrK1xuICAgICAgfVxuICAgICAgaS0tO1xuICAgIGNhc2UgJ2QnOiBjYXNlICdpJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAndSc6XG4gICAgICBmLmJhc2UgPSAxMDsgYnJlYWs7XG4gICAgY2FzZSAneCc6XG4gICAgICBmLmJhc2UgPSAxNjsgYnJlYWs7XG4gICAgY2FzZSAnWCc6XG4gICAgICBmLmJhc2UgPSAxNjsgZi51cHBlcmNhc2UgPSB0cnVlOyBicmVhaztcbiAgICBjYXNlICdvJzpcbiAgICAgIGYuYmFzZSA9IDg7IGJyZWFrO1xuICAgIGNhc2UgJ2UnOiBjYXNlICdmJzogY2FzZSAnZyc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyBmLmNvbnYgPSBjOyBicmVhaztcbiAgICBjYXNlICdFJzogY2FzZSAnRic6IGNhc2UgJ0cnOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgZi51cHBlcmNhc2UgPSB0cnVlO1xuICAgICAgZi5jb252ID0gYy50b0xvd2VyQ2FzZSAoKTsgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBmO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHJhd2J1ZmZlcikge1xuICBpZiAoZi51cHBlcmNhc2UpIHJhd2J1ZmZlciA9IHJhd2J1ZmZlci50b1VwcGVyQ2FzZSgpO1xuICB2YXIgbGVuID0gcmF3YnVmZmVyLmxlbmd0aDtcbiAgLyogQWRqdXN0IGxlbiB0byByZWZsZWN0IGFkZGl0aW9uYWwgY2hhcnMgKHNpZ24sIGV0YykgKi9cbiAgaWYgKGYuc2lnbmVkY29udiAmJiAoZi5zaWduIDwgMCB8fCBmLnNpZ25zdHlsZSAhPSAnLScpKSBsZW4rKztcbiAgaWYgKGYuYWx0ZXJuYXRlKSB7XG4gICAgaWYgKGYuYmFzZSA9PSA4KSBsZW4gKz0gMTtcbiAgICBpZiAoZi5iYXNlID09IDE2KSBsZW4gKz0gMjtcbiAgfVxuICAvKiBEbyB0aGUgZm9ybWF0dGluZyAqL1xuICB2YXIgYnVmZmVyID0gXCJcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJyAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIGlmIChmLnNpZ25lZGNvbnYpIHtcbiAgICBpZiAoZi5zaWduIDwgMCkgYnVmZmVyICs9ICctJztcbiAgICBlbHNlIGlmIChmLnNpZ25zdHlsZSAhPSAnLScpIGJ1ZmZlciArPSBmLnNpZ25zdHlsZTtcbiAgfVxuICBpZiAoZi5hbHRlcm5hdGUgJiYgZi5iYXNlID09IDgpIGJ1ZmZlciArPSAnMCc7XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT0gMTYpIGJ1ZmZlciArPSBmLnVwcGVyY2FzZT9cIjBYXCI6XCIweFwiO1xuICBpZiAoZi5qdXN0aWZ5ID09ICcrJyAmJiBmLmZpbGxlciA9PSAnMCcpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcwJztcbiAgYnVmZmVyICs9IHJhd2J1ZmZlcjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnLScpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcgJztcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYnVmZmVyKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBqc29vX2Zsb29yX2xvZzJcbnZhciBsb2cyX29rID0gTWF0aC5sb2cyICYmIE1hdGgubG9nMigxLjEyMzU1ODIwOTI4ODk0NzRFKzMwNykgPT0gMTAyMFxuZnVuY3Rpb24ganNvb19mbG9vcl9sb2cyKHgpIHtcbiAgaWYobG9nMl9vaykgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5sb2cyKHgpKVxuICB2YXIgaSA9IDA7XG4gIGlmICh4ID09IDApIHJldHVybiAtSW5maW5pdHk7XG4gIGlmKHg+PTEpIHt3aGlsZSAoeD49Mikge3gvPTI7IGkrK30gfVxuICBlbHNlIHt3aGlsZSAoeCA8IDEpIHt4Kj0yOyBpLS19IH07XG4gIHJldHVybiBpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMiwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAoeCkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDEsIDAsIDB4N2ZmMCk7XG4gICAgaWYgKHggPiAwKVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDAsIDAsIDB4N2ZmMClcbiAgICBlbHNlXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMCwgMCwgMHhmZmYwKVxuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MHg4MDAwOih4Pj0wKT8wOjB4ODAwMDtcbiAgaWYgKHNpZ24pIHggPSAteDtcbiAgLy8gSW50NjQuYml0c19vZl9mbG9hdCAxLjEyMzU1ODIwOTI4ODk0NzRFKzMwNyA9IDB4N2ZiMDAwMDAwMDAwMDAwMExcbiAgLy8gdXNpbmcgTWF0aC5MT0cyRSpNYXRoLmxvZyh4KSBpbiBwbGFjZSBvZiBNYXRoLmxvZzIgcmVzdWx0IGluIHByZWNpc2lvbiBsb3N0XG4gIHZhciBleHAgPSBqc29vX2Zsb29yX2xvZzIoeCkgKyAxMDIzO1xuICBpZiAoZXhwIDw9IDApIHtcbiAgICBleHAgPSAwO1xuICAgIHggLz0gTWF0aC5wb3coMiwtMTAyNik7XG4gIH0gZWxzZSB7XG4gICAgeCAvPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgICBpZiAoeCA8IDE2KSB7XG4gICAgICB4ICo9IDI7IGV4cCAtPTE7IH1cbiAgICBpZiAoZXhwID09IDApIHtcbiAgICAgIHggLz0gMjsgfVxuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwyNCk7XG4gIHZhciByMyA9IHh8MDtcbiAgeCA9ICh4IC0gcjMpICogaztcbiAgdmFyIHIyID0geHwwO1xuICB4ID0gKHggLSByMikgKiBrO1xuICB2YXIgcjEgPSB4fDA7XG4gIHIzID0gKHIzICYweGYpIHwgc2lnbiB8IGV4cCA8PCA0O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkocjEsIHIyLCByMyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyXG5mdW5jdGlvbiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgKHgpIHtcbiAgdmFyIGZsb2F0MzJhID0gbmV3IEZsb2F0MzJBcnJheSgxKTtcbiAgZmxvYXQzMmFbMF0gPSB4O1xuICB2YXIgaW50MzJhID0gbmV3IEludDMyQXJyYXkoZmxvYXQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGludDMyYVswXSB8IDA7XG59XG5cbi8vRlAgbGl0ZXJhbHMgY2FuIGJlIHdyaXR0ZW4gdXNpbmcgdGhlIGhleGFkZWNpbWFsXG4vL25vdGF0aW9uIDB4PG1hbnRpc3NhIGluIGhleD5wPGV4cG9uZW50PiBmcm9tIElTTyBDOTkuXG4vL2h0dHBzOi8vZ2l0aHViLmNvbS9kYW5rb2dhaS9qcy1oZXhmbG9hdC9ibG9iL21hc3Rlci9oZXhmbG9hdC5qc1xuLy9Qcm92aWRlczogY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0ICh4LCBwcmVjLCBzdHlsZSkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXCJuYW5cIik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nICgoeCA+IDApP1wiaW5maW5pdHlcIjpcIi1pbmZpbml0eVwiKTtcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzE6KHg+PTApPzA6MTtcbiAgaWYoc2lnbikgeCA9IC14O1xuICB2YXIgZXhwID0gMDtcbiAgaWYgKHggPT0gMCkgeyB9XG4gIGVsc2UgaWYgKHggPCAxKSB7XG4gICAgd2hpbGUgKHggPCAxICYmIGV4cCA+IC0xMDIyKSAgeyB4ICo9IDI7IGV4cC0tIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoeCA+PSAyKSB7IHggLz0gMjsgZXhwKysgfVxuICB9XG4gIHZhciBleHBfc2lnbiA9IGV4cCA8IDAgPyAnJyA6ICcrJztcbiAgdmFyIHNpZ25fc3RyID0gJyc7XG4gIGlmIChzaWduKSBzaWduX3N0ciA9ICctJ1xuICBlbHNlIHtcbiAgICBzd2l0Y2goc3R5bGUpe1xuICAgIGNhc2UgNDMgLyogJysnICovOiBzaWduX3N0ciA9ICcrJzsgYnJlYWs7XG4gICAgY2FzZSAzMiAvKiAnICcgKi86IHNpZ25fc3RyID0gJyAnOyBicmVhaztcbiAgICBkZWZhdWx0OiBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHByZWMgPj0gMCAmJiBwcmVjIDwgMTMpIHtcbiAgICAvKiBJZiBhIHByZWNpc2lvbiBpcyBnaXZlbiwgYW5kIGlzIHNtYWxsLCByb3VuZCBtYW50aXNzYSBhY2NvcmRpbmdseSAqL1xuICAgIHZhciBjc3QgPSBNYXRoLnBvdygyLHByZWMgKiA0KTtcbiAgICB4ID0gTWF0aC5yb3VuZCh4ICogY3N0KSAvIGNzdDtcbiAgfVxuICB2YXIgeF9zdHIgPSB4LnRvU3RyaW5nKDE2KTtcbiAgaWYocHJlYyA+PSAwKXtcbiAgICB2YXIgaWR4ID0geF9zdHIuaW5kZXhPZignLicpO1xuICAgIGlmKGlkeDwwKSB7XG4gICAgICB4X3N0ciArPSAnLicgKyBjYW1sX3N0cl9yZXBlYXQocHJlYywgJzAnKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB2YXIgc2l6ZSA9IGlkeCsxK3ByZWM7XG4gICAgICBpZih4X3N0ci5sZW5ndGggPCBzaXplKVxuICAgICAgICB4X3N0ciArPSBjYW1sX3N0cl9yZXBlYXQoc2l6ZSAtIHhfc3RyLmxlbmd0aCwgJzAnKTtcbiAgICAgIGVsc2VcbiAgICAgICAgeF9zdHIgPSB4X3N0ci5zdWJzdHIoMCxzaXplKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzaWduX3N0ciArICcweCcgKyB4X3N0ciArICdwJyArIGV4cF9zaWduICsgZXhwLnRvU3RyaW5nKDEwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBsbyA9IHgubG87XG4gIHZhciBtaSA9IHgubWk7XG4gIHZhciBoaSA9IHguaGk7XG4gIHZhciBleHAgPSAoaGkgJiAweDdmZmYpID4+IDQ7XG4gIGlmIChleHAgPT0gMjA0Nykge1xuICAgIGlmICgobG98bWl8KGhpJjB4ZikpID09IDApXG4gICAgICByZXR1cm4gKGhpICYgMHg4MDAwKT8oLUluZmluaXR5KTpJbmZpbml0eTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gTmFOO1xuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwtMjQpO1xuICB2YXIgcmVzID0gKGxvKmsrbWkpKmsrKGhpJjB4Zik7XG4gIGlmIChleHAgPiAwKSB7XG4gICAgcmVzICs9IDE2O1xuICAgIHJlcyAqPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgfSBlbHNlXG4gICAgcmVzICo9IE1hdGgucG93KDIsLTEwMjYpO1xuICBpZiAoaGkgJiAweDgwMDApIHJlcyA9IC0gcmVzO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25leHRhZnRlcl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X3N1YixjYW1sX2ludDY0X29mX2ludDMyXG5mdW5jdGlvbiBjYW1sX25leHRhZnRlcl9mbG9hdCAoeCx5KSB7XG4gIGlmKGlzTmFOKHgpIHx8IGlzTmFOKHkpKSByZXR1cm4gTmFOO1xuICBpZih4PT15KSByZXR1cm4geTtcbiAgaWYoeD09MCl7XG4gICAgaWYoeSA8IDApXG4gICAgICByZXR1cm4gLU1hdGgucG93KDIsIC0xMDc0KVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBNYXRoLnBvdygyLCAtMTA3NClcbiAgfVxuICB2YXIgYml0cyA9IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh4KTtcbiAgdmFyIG9uZSA9IGNhbWxfaW50NjRfb2ZfaW50MzIoMSk7XG4gIGlmICgoeDx5KSA9PSAoeD4wKSlcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9hZGQoYml0cywgb25lKVxuICBlbHNlXG4gICAgYml0cyA9IGNhbWxfaW50NjRfc3ViKGJpdHMsIG9uZSlcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhiaXRzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF90cnVuY19mbG9hdFxuZnVuY3Rpb24gY2FtbF90cnVuY19mbG9hdCh4KXtcbiAgcmV0dXJuIE1hdGgudHJ1bmMoeCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBpbnQzMmEgPSBuZXcgSW50MzJBcnJheSgxKTtcbiAgaW50MzJhWzBdID0geDtcbiAgdmFyIGZsb2F0MzJhID0gbmV3IEZsb2F0MzJBcnJheShpbnQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGZsb2F0MzJhWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NsYXNzaWZ5X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NsYXNzaWZ5X2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPj0gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgpIHJldHVybiAwO1xuICAgIGlmICh4ICE9IDApIHJldHVybiAxO1xuICAgIHJldHVybiAyO1xuICB9XG4gIHJldHVybiBpc05hTih4KT80OjM7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21vZGZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbW9kZl9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgdmFyIG5lZyA9ICgxL3gpIDwgMDtcbiAgICB4ID0gTWF0aC5hYnMoeCk7XG4gICAgdmFyIGkgPSBNYXRoLmZsb29yICh4KTtcbiAgICB2YXIgZiA9IHggLSBpO1xuICAgIGlmIChuZWcpIHsgaSA9IC1pOyBmID0gLWY7IH1cbiAgICByZXR1cm4gWzAsIGYsIGldO1xuICB9XG4gIGlmIChpc05hTiAoeCkpIHJldHVybiBbMCwgTmFOLCBOYU5dO1xuICByZXR1cm4gWzAsIDEveCwgeF07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xkZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xkZXhwX2Zsb2F0ICh4LGV4cCkge1xuICBleHAgfD0gMDtcbiAgaWYgKGV4cCA+IDEwMjMpIHtcbiAgICBleHAgLT0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIGlmIChleHAgPiAxMDIzKSB7ICAvLyBpbiBjYXNlIHggaXMgc3Vibm9ybWFsXG4gICAgICBleHAgLT0gMTAyMztcbiAgICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgfVxuICB9XG4gIGlmIChleHAgPCAtMTAyMykge1xuICAgIGV4cCArPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgLTEwMjMpO1xuICB9XG4gIHggKj0gTWF0aC5wb3coMiwgZXhwKTtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXhwX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfZnJleHBfZmxvYXQgKHgpIHtcbiAgaWYgKCh4ID09IDApIHx8ICFpc0Zpbml0ZSh4KSkgcmV0dXJuIFswLCB4LCAwXTtcbiAgdmFyIG5lZyA9IHggPCAwO1xuICBpZiAobmVnKSB4ID0gLSB4O1xuICB2YXIgZXhwID0gTWF0aC5tYXgoLTEwMjMsIGpzb29fZmxvb3JfbG9nMih4KSArIDEpO1xuICB4ICo9IE1hdGgucG93KDIsLWV4cCk7XG4gIHdoaWxlICh4IDwgMC41KSB7XG4gICAgeCAqPSAyO1xuICAgIGV4cC0tO1xuICB9XG4gIHdoaWxlICh4ID49IDEpIHtcbiAgICB4ICo9IDAuNTtcbiAgICBleHArKztcbiAgfVxuICBpZiAobmVnKSB4ID0gLSB4O1xuICByZXR1cm4gWzAsIHgsIGV4cF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbG9hdF9jb21wYXJlICh4LCB5KSB7XG4gIGlmICh4ID09PSB5KSByZXR1cm4gMDtcbiAgaWYgKHggPCB5KSByZXR1cm4gLTE7XG4gIGlmICh4ID4geSkgcmV0dXJuIDE7XG4gIGlmICh4ID09PSB4KSByZXR1cm4gMTtcbiAgaWYgKHkgPT09IHkpIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29weXNpZ25fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29weXNpZ25fZmxvYXQgKHgsIHkpIHtcbiAgaWYgKHkgPT0gMCkgeSA9IDEgLyB5O1xuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHJldHVybiAoeSA8IDApPygteCk6eDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zaWduYml0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpZ25iaXRfZmxvYXQoeCkge1xuICBpZiAoeCA9PSAwKSB4ID0gMSAvIHg7XG4gIHJldHVybiAoeCA8IDApPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9leHBtMV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHBtMV9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5leHBtMSh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9leHAyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cDJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5wb3coMiwgeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMXBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMXBfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cxcCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cyKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2h5cG90X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2h5cG90X2Zsb2F0ICh4LCB5KSB7IHJldHVybiBNYXRoLmh5cG90KHgsIHkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzEwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzEwX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmxvZzEwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Nvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Fjb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Fjb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFjb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3NpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5zaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2FzaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2FzaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFzaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3RhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC50YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2F0YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2F0YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmF0YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JvdW5kX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3JvdW5kX2Zsb2F0ICh4KSB7XG4gIGlmICh4ID49IDApIHtcbiAgICB2YXIgeSA9IE1hdGguZmxvb3IoeCk7XG4gICAgcmV0dXJuICh4IC0geSA+PSAwLjUpPyh5ICsgMSk6eVxuICB9IGVsc2Uge1xuICAgIHZhciB5ID0gTWF0aC5jZWlsKHgpO1xuICAgIHJldHVybiAoeSAtIHggPj0gMC41KT8oeSAtIDEpOnlcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9jYnJ0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NicnRfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguY2JydCh4KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9lcmZfZmxvYXQoeCkge1xuICB2YXIgYTEgPSAwLjI1NDgyOTU5MjtcbiAgdmFyIGEyID0gLTAuMjg0NDk2NzM2O1xuICB2YXIgYTMgPSAxLjQyMTQxMzc0MTtcbiAgdmFyIGE0ID0gLTEuNDUzMTUyMDI3O1xuICB2YXIgYTUgPSAxLjA2MTQwNTQyOTtcbiAgdmFyIHAgPSAwLjMyNzU5MTE7XG5cbiAgdmFyIHNpZ24gPSAxO1xuICBpZiAoeCA8IDApIHtcbiAgICBzaWduID0gLTE7XG4gIH1cbiAgeCA9IE1hdGguYWJzKHgpO1xuICB2YXIgdCA9IDEuMCAvICgxLjAgKyBwICogeCk7XG4gIHZhciB5ID0gMS4wIC0gKCgoKGE1ICogdCArIGE0KSAqIHQgKyBhMykgKiB0ICsgYTIpICogdCArIGExKSAqIHQgKiBNYXRoLmV4cCgteCAqIHgpO1xuXG4gIHJldHVybiBzaWduICogeTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZjX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2VyZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9lcmZjX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIDEgLSBjYW1sX2VyZl9mbG9hdCh4KTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZtYV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbWFfZmxvYXQoeCwgeSwgeikge1xuICB2YXIgU1BMSVQgPSBNYXRoLnBvdygyLCAyNykgKyAxO1xuICB2YXIgTUlOX1ZBTFVFID0gTWF0aC5wb3coMiwgLTEwMjIpO1xuICB2YXIgRVBTSUxPTiA9IE1hdGgucG93KDIsIC01Mik7XG4gIHZhciBDID0gNDE2O1xuICB2YXIgQSA9IE1hdGgucG93KDIsICtDKTtcbiAgdmFyIEIgPSBNYXRoLnBvdygyLCAtQyk7XG5cbiAgZnVuY3Rpb24gbXVsdGlwbHkgKGEsIGIpIHtcbiAgICB2YXIgYXQgPSBTUExJVCAqIGE7XG4gICAgdmFyIGFoaSA9IGF0IC0gKGF0IC0gYSk7XG4gICAgdmFyIGFsbyA9IGEgLSBhaGk7XG4gICAgdmFyIGJ0ID0gU1BMSVQgKiBiO1xuICAgIHZhciBiaGkgPSBidCAtIChidCAtIGIpO1xuICAgIHZhciBibG8gPSBiIC0gYmhpO1xuICAgIHZhciBwID0gYSAqIGI7XG4gICAgdmFyIGUgPSAoKGFoaSAqIGJoaSAtIHApICsgYWhpICogYmxvICsgYWxvICogYmhpKSArIGFsbyAqIGJsbztcbiAgICByZXR1cm4ge1xuICAgICAgcDogcCxcbiAgICAgIGU6IGVcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHZhciBzID0gYSArIGI7XG4gICAgdmFyIHYgPSBzIC0gYTtcbiAgICB2YXIgZSA9IChhIC0gKHMgLSB2KSkgKyAoYiAtIHYpO1xuICAgIHJldHVybiB7XG4gICAgICBzOiBzLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRqdXN0ICh4LCB5KSB7XG4gICAgcmV0dXJuIHggIT09IDAgJiYgeSAhPT0gMCAmJiBTUExJVCAqIHggLSAoU1BMSVQgKiB4IC0geCkgPT09IHggPyB4ICogKDEgKyAoeCA8IDAgPyAtMSA6ICsxKSAqICh5IDwgMCA/IC0xIDogKzEpICogRVBTSUxPTikgOiB4O1xuICB9O1xuXG4gIGlmICh4ID09PSAwIHx8IHggIT09IHggfHwgeCA9PT0gKzEgLyAwIHx8IHggPT09IC0xIC8gMCB8fFxuICAgICAgeSA9PT0gMCB8fCB5ICE9PSB5IHx8IHkgPT09ICsxIC8gMCB8fCB5ID09PSAtMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKyB6O1xuICB9XG4gIGlmICh6ID09PSAwKSB7XG4gICAgcmV0dXJuIHggKiB5O1xuICB9XG4gIGlmICh6ICE9PSB6IHx8IHogPT09ICsxIC8gMCB8fCB6ID09PSAtMSAvIDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciBzY2FsZSA9IDE7XG4gIHdoaWxlIChNYXRoLmFicyh4KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHggKj0gQjtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeSkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB5ICo9IEI7XG4gIH1cbiAgaWYgKHNjYWxlID09PSAxIC8gMCkge1xuICAgIHJldHVybiB4ICogeSAqIHNjYWxlO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh4KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHggKj0gQTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeSkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB5ICo9IEE7XG4gIH1cbiAgaWYgKHNjYWxlID09PSAwKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgeHMgPSB4O1xuICB2YXIgeXMgPSB5O1xuICB2YXIgenMgPSB6IC8gc2NhbGU7XG5cbiAgaWYgKE1hdGguYWJzKHpzKSA+IE1hdGguYWJzKHhzICogeXMpICogNCAvIEVQU0lMT04pIHtcbiAgICByZXR1cm4gejtcbiAgfVxuICBpZiAoTWF0aC5hYnMoenMpIDwgTWF0aC5hYnMoeHMgKiB5cykgKiBFUFNJTE9OIC8gNCAqIEVQU0lMT04gLyA0KSB7XG4gICAgenMgPSAoeiA8IDAgPyAtMSA6ICsxKSAqIE1JTl9WQUxVRTtcbiAgfVxuXG4gIHZhciB4eSA9IG11bHRpcGx5KHhzLCB5cyk7XG4gIHZhciBzID0gYWRkKHh5LnAsIHpzKTtcbiAgdmFyIHUgPSBhZGQoeHkuZSwgcy5lKTtcbiAgdmFyIGkgPSBhZGQocy5zLCB1LnMpO1xuXG4gIHZhciBmID0gaS5zICsgYWRqdXN0KGkuZSwgdS5lKTtcbiAgaWYgKGYgPT09IDApIHtcbiAgICByZXR1cm4gZjtcbiAgfVxuXG4gIHZhciBmcyA9IGYgKiBzY2FsZTtcbiAgaWYgKE1hdGguYWJzKGZzKSA+IE1JTl9WQUxVRSkge1xuICAgIHJldHVybiBmcztcbiAgfVxuXG4gIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgd2FzIGV4dHJhIHJvdW5kaW5nIGZvciBhIGRlbm9ybWFsaXplZCB2YWx1ZS5cbiAgcmV0dXJuIGZzICsgYWRqdXN0KGYgLSBmcyAvIHNjYWxlLCBpLmUpICogc2NhbGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZmxvYXQgKGZtdCwgeCkge1xuICBmdW5jdGlvbiB0b0ZpeGVkKHgsZHApIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPCAxLjApIHtcbiAgICAgIHJldHVybiB4LnRvRml4ZWQoZHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZSA9IHBhcnNlSW50KHgudG9TdHJpbmcoKS5zcGxpdCgnKycpWzFdKTtcbiAgICAgIGlmIChlID4gMjApIHtcbiAgICAgICAgZSAtPSAyMDtcbiAgICAgICAgeCAvPSBNYXRoLnBvdygxMCxlKTtcbiAgICAgICAgeCArPSAobmV3IEFycmF5KGUrMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgaWYoZHAgPiAwKSB7XG4gICAgICAgICAgeCA9IHggKyAnLicgKyAobmV3IEFycmF5KGRwKzEpKS5qb2luKCcwJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHg7XG4gICAgICB9XG4gICAgICBlbHNlIHJldHVybiB4LnRvRml4ZWQoZHApXG4gICAgfVxuICB9XG4gIHZhciBzLCBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgdmFyIHByZWMgPSAoZi5wcmVjIDwgMCk/NjpmLnByZWM7XG4gIGlmICh4IDwgMCB8fCAoeCA9PSAwICYmIDEveCA9PSAtSW5maW5pdHkpKSB7IGYuc2lnbiA9IC0xOyB4ID0gLXg7IH1cbiAgaWYgKGlzTmFOKHgpKSB7IHMgPSBcIm5hblwiOyBmLmZpbGxlciA9ICcgJzsgfVxuICBlbHNlIGlmICghaXNGaW5pdGUoeCkpIHsgcyA9IFwiaW5mXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2VcbiAgICBzd2l0Y2ggKGYuY29udikge1xuICAgIGNhc2UgJ2UnOlxuICAgICAgdmFyIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyk7XG4gICAgICAvLyBleHBvbmVudCBzaG91bGQgYmUgYXQgbGVhc3QgdHdvIGRpZ2l0c1xuICAgICAgdmFyIGkgPSBzLmxlbmd0aDtcbiAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT0gJ2UnKVxuICAgICAgICBzID0gcy5zbGljZSAoMCwgaSAtIDEpICsgJzAnICsgcy5zbGljZSAoaSAtIDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZic6XG4gICAgICBzID0gdG9GaXhlZCh4LCBwcmVjKTsgYnJlYWs7XG4gICAgY2FzZSAnZyc6XG4gICAgICBwcmVjID0gcHJlYz9wcmVjOjE7XG4gICAgICBzID0geC50b0V4cG9uZW50aWFsKHByZWMgLSAxKTtcbiAgICAgIHZhciBqID0gcy5pbmRleE9mKCdlJyk7XG4gICAgICB2YXIgZXhwID0gK3Muc2xpY2UoaiArIDEpO1xuICAgICAgaWYgKGV4cCA8IC00IHx8IHggPj0gMWUyMSB8fCB4LnRvRml4ZWQoMCkubGVuZ3RoID4gcHJlYykge1xuICAgICAgICAvLyByZW1vdmUgdHJhaWxpbmcgemVyb2VzXG4gICAgICAgIHZhciBpID0gaiAtIDE7IHdoaWxlIChzLmNoYXJBdChpKSA9PSAnMCcpIGktLTtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICBzID0gcy5zbGljZSgwLCBpICsgMSkgKyBzLnNsaWNlKGopO1xuICAgICAgICBpID0gcy5sZW5ndGg7XG4gICAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT0gJ2UnKVxuICAgICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHAgPSBwcmVjO1xuICAgICAgICBpZiAoZXhwIDwgMCkgeyBwIC09IGV4cCArIDE7IHMgPSB4LnRvRml4ZWQocCk7IH1cbiAgICAgICAgZWxzZSB3aGlsZSAocyA9IHgudG9GaXhlZChwKSwgcy5sZW5ndGggPiBwcmVjICsgMSkgcC0tO1xuICAgICAgICBpZiAocCkge1xuICAgICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgICB2YXIgaSA9IHMubGVuZ3RoIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICAgIGlmIChzLmNoYXJBdChpKSA9PSAnLicpIGktLTtcbiAgICAgICAgICBzID0gcy5zbGljZSgwLCBpICsgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHJlcztcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocylcbiAgcmVzID0gK3M7XG4gIGlmICgocy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKSByZXR1cm4gcmVzO1xuICBzID0gcy5yZXBsYWNlKC9fL2csXCJcIik7XG4gIHJlcyA9ICtzO1xuICBpZiAoKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHx8IC9eWystXT9uYW4kL2kudGVzdChzKSkgcmV0dXJuIHJlcztcbiAgdmFyIG0gPSAvXiAqKFsrLV0/KTB4KFswLTlhLWZdKylcXC4/KFswLTlhLWZdKikocChbKy1dP1swLTldKykpPy9pLmV4ZWMocyk7XG4gIC8vICAgICAgICAgIDEgICAgICAgIDIgICAgICAgICAgICAgMyAgICAgICAgICAgNVxuICBpZihtKXtcbiAgICB2YXIgbTMgPSBtWzNdLnJlcGxhY2UoLzArJC8sJycpO1xuICAgIHZhciBtYW50aXNzYSA9IHBhcnNlSW50KG1bMV0gKyBtWzJdICsgbTMsIDE2KTtcbiAgICB2YXIgZXhwb25lbnQgPSAobVs1XXwwKSAtIDQqbTMubGVuZ3RoO1xuICAgIHJlcyA9IG1hbnRpc3NhICogTWF0aC5wb3coMiwgZXhwb25lbnQpO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgaWYoL15cXCs/aW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIEluZmluaXR5O1xuICBpZigvXi1pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gLUluZmluaXR5O1xuICBjYW1sX2ZhaWx3aXRoKFwiZmxvYXRfb2Zfc3RyaW5nXCIpO1xufVxuIiwiLypcblRvIGRlYWwgd2l0aCBlZmZlY3RzLCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgaXMgaW50dWl0aXZlbHkgY29tcG9zZWQgb2ZcbmEgc3RhY2sgb2YgZmliZXJzLiBFYWNoIGZpYmVyIGhhcyBhIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuKG9uZS1hcmd1bWVudCBKYXZhU2NyaXB0IGZ1bmN0aW9uKSwgYSBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kXG5hIHRyaXBsZSBvZiBoYW5kbGVycywgd2hpY2ggYXJlIGludm9rZWQgd2hlbiB0aGUgZmliZXIgdGVybWluYXRlc1xuKGVpdGhlciB3aXRoIGEgdmFsdWUgb3IgYW4gZXhjZXB0aW9uKSBvciB3aGVuIGFuIGVmZmVjdCBpcyBwZXJmb3JtZWQuXG5UaGUgbG93LWxldmVsIGNvbnRpbnVhdGlvbiBvZiB0aGUgdG9wbW9zdCBmaWJlciAod2hpY2ggaXMgY3VycmVudGx5XG5leGVjdXRpbmcpIGlzIHBhc3NlZCBmcm9tIGZ1bmN0aW9uIHRvIGZ1bmN0aW9uIGFzIGFuIGFkZGl0aW9uYWxcbmFyZ3VtZW50LiBJdHMgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGlzIHN0b3JlZCBpblxuW2NhbWxfZXhuX3N0YWNrXS4gRXhjZXB0aW9uIGhhbmRsZXJzIGFyZSBwdXNoZWQgaW50byB0aGlzIHN0YWNrIHdoZW5cbmVudGVyaW5nIGEgW3RyeSAuLi4gd2l0aCAuLi5dIGFuZCBwb3BwZWQgb24gZXhpdC4gVGhlbiwgaGFuZGxlcnMgYW5kXG50aGUgcmVtYWluaW5nIGZpYmVycyBhcmUgc3RvcmVkIGluIFtjYW1sX2ZpYmVyX3N0YWNrXS4gVG8gaW5zdGFsbCBhblxuZWZmZWN0IGhhbmRsZXIsIHdlIHB1c2ggYSBuZXcgZmliZXIgaW50byB0aGUgZXhlY3V0aW9uIGNvbnRleHQuXG5cbldlIGhhdmUgYmFzaWNhbGx5IHRoZSBmb2xsb3dpbmcgdHlwZSBmb3IgcmVpZmllZCBjb250aW51YXRpb25zICh0eXBlXG5bY29udGludWF0aW9uXSBpbiBtb2R1bGUgW0VmZmVjdF0gb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkpOlxuXG4gIHR5cGUgKCdhLCAnYikgY29udGludWF0aW9uID0gKCdhLCAnYikgc3RhY2sgcmVmXG5cbiAgYW5kIChfLCBfKSBzdGFjayA9XG4gICAgICBDb25zIDogKCdiIC0+IHVuaXQpICogICAgICAgICAgICAgKCogbG93LWxldmVsIGNvbnRpbnVhdGlvbiAqKVxuICAgICAgICAgICAgIChleG4gLT4gdW5pdCkgbGlzdCAqICAgICAgICgqIGV4Y2VwdGlvbiBoYW5kbGVycyAqKVxuICAgICAgICAgICAgICgnYiwgJ2MpIGhhbmRsZXIgKlxuICAgICAgICAgICAgICgnYSwgJ2IpIHN0YWNrXG4gICAgICAgICAgICAgLT4gKCdhLCAnYykgc3RhY2tcbiAgICB8IEVtcHR5IDogKCdhLCAnYSkgc3RhY2tcblxuICBhbmQgKCdhLCdiKSBoYW5kbGVyID0gICAoKiBBcyBpbiBtb2R1bGUgRWZmZWN0IGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgRWZmZWN0LnQgLT4gKCgnYywnYikgY29udGludWF0aW9uIC0+ICdiKSBvcHRpb24gfVxuXG5Db250aW51YXRpb25zIGFyZSBvbmUtc2hvdC4gQSBjb250aW51YXRpb24gW3JlZiBFbXB0eV0gaGFzIGFscmVhZHlcbmJlZW4gcmVzdW1lZC5cblxuQSBjb250aW51YXRpb24gaXMgYmFzaWNhbGx5IGNvbXBvc2VkIG9mIGEgbGlzdCBvZiBmaWJlcnMsIHdoaWNoIGVhY2hcbmhhcyBpdHMgbG93LWxldmVsIGNvbnRpbnVhdGlvbiwgaXRzIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQgYVxudHJpcGxlIG9mIGhhbmRsZXJzIHRvIGRlYWwgd2l0aCB3aGVuIHRoZSBmaWJlciB0ZXJtaW5hdGVzIG9yIGFuXG5lZmZlY3QgaXMgcGVyZm9ybWVkLiBXaGVuIHJlc3VtaW5nIGEgY29udGludWF0aW9uLCB0aGUgaW5uZXJtb3N0IGZpYmVyXG5pcyByZXN1bWVkIGZpcnN0LlxuXG5UaGUgaGFuZGxlcnMgYXJlIENQUy10cmFuc2Zvcm1lZCBmdW5jdGlvbnM6IHRoZXkgYWN0dWFsbHkgdGFrZSBhblxuYWRkaXRpb25hbCBwYXJhbWV0ZXIgd2hpY2ggaXMgdGhlIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvbi5cbiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG4vLyBUaGlzIGlzIGFuIE9DYW1sIGxpc3Qgb2YgZXhjZXB0aW9uIGhhbmRsZXJzXG52YXIgY2FtbF9leG5fc3RhY2sgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1c2hfdHJhcFxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcHVzaF90cmFwKGhhbmRsZXIpIHtcbiAgY2FtbF9leG5fc3RhY2s9WzAsaGFuZGxlcixjYW1sX2V4bl9zdGFja107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9wX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF90cmFwKCkge1xuICBpZiAoIWNhbWxfZXhuX3N0YWNrKSByZXR1cm4gZnVuY3Rpb24oeCl7dGhyb3cgeDt9XG4gIHZhciBoID0gY2FtbF9leG5fc3RhY2tbMV07XG4gIGNhbWxfZXhuX3N0YWNrPWNhbWxfZXhuX3N0YWNrWzJdO1xuICByZXR1cm4gaFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG4vLyBUaGlzIGhhcyB0aGUgc2hhcGUge2gsIHI6e2ssIHgsIGV9fSB3aGVyZSBoIGlzIGEgdHJpcGxlIG9mIGhhbmRsZXJzXG4vLyAoc2VlIGVmZmVjdC5qcykgYW5kIGssIHggYW5kIGUgYXJlIHRoZSBzYXZlZCBjb250aW51YXRpb24sXG4vLyBleGNlcHRpb24gc3RhY2sgYW5kIGZpYmVyIHN0YWNrIG9mIHRoZSBwYXJlbnQgZmliZXIuXG52YXIgY2FtbF9maWJlcl9zdGFjaztcblxuLy9Qcm92aWRlczpjYW1sX3Jlc3VtZV9zdGFja1xuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcmVzdW1lX3N0YWNrKHN0YWNrLCBrKSB7XG4gIGlmICghc3RhY2spIGNhbWxfcmFpc2VfY29uc3RhbnRcbiAgICAgICAgICAgICAgICAgKGNhbWxfbmFtZWRfdmFsdWUoXCJFZmZlY3QuQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFwiKSk7XG4gIC8vIFVwZGF0ZSB0aGUgZXhlY3V0aW9uIGNvbnRleHQgd2l0aCB0aGUgc3RhY2sgb2YgZmliZXJzIGluIFtzdGFja10gaW5cbiAgLy8gb3JkZXIgdG8gcmVzdW1lIHRoZSBjb250aW51YXRpb25cbiAgZG8ge1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPVxuICAgICAge2g6c3RhY2tbM10sIHI6e2s6aywgeDpjYW1sX2V4bl9zdGFjaywgZTpjYW1sX2ZpYmVyX3N0YWNrfX07XG4gICAgayA9IHN0YWNrWzFdO1xuICAgIGNhbWxfZXhuX3N0YWNrID0gc3RhY2tbMl07XG4gICAgc3RhY2sgPSBzdGFja1s0XTtcbiAgfSB3aGlsZSAoc3RhY2spXG4gIHJldHVybiBrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BvcF9maWJlclxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcG9wX2ZpYmVyKCkge1xuICAvLyBNb3ZlIHRvIHRoZSBwYXJlbnQgZmliZXIsIHJldHVybmluZyB0aGUgcGFyZW50J3MgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuICB2YXIgcmVtID0gY2FtbF9maWJlcl9zdGFjay5yO1xuICBjYW1sX2V4bl9zdGFjayA9IHJlbS54O1xuICBjYW1sX2ZpYmVyX3N0YWNrID0gcmVtLmU7XG4gIHJldHVybiByZW0uaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wZXJmb3JtX2VmZmVjdFxuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm4sIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BlcmZvcm1fZWZmZWN0KGVmZiwgY29udCwgazApIHtcbiAgLy8gQWxsb2NhdGUgYSBjb250aW51YXRpb24gaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZVxuICBpZiAoIWNvbnQpIGNvbnQgPSBbMjQ1IC8qY29udGludWF0aW9uKi8sIDBdO1xuICAvLyBHZXQgY3VycmVudCBlZmZlY3QgaGFuZGxlclxuICB2YXIgaGFuZGxlciA9IGNhbWxfZmliZXJfc3RhY2suaFszXTtcbiAgLy8gQ29ucyB0aGUgY3VycmVudCBmaWJlciBvbnRvIHRoZSBjb250aW51YXRpb246XG4gIC8vICAgY29udCA6PSBDb25zIChrLCBleG5fc3RhY2ssIGhhbmRsZXJzLCAhY29udClcbiAgY29udFsxXSA9IFswLGswLGNhbWxfZXhuX3N0YWNrLGNhbWxfZmliZXJfc3RhY2suaCxjb250WzFdXTtcbiAgLy8gTW92ZSB0byBwYXJlbnQgZmliZXIgYW5kIGV4ZWN1dGUgdGhlIGVmZmVjdCBoYW5kbGVyIHRoZXJlXG4gIC8vIFRoZSBoYW5kbGVyIGlzIGRlZmluZWQgaW4gU3RkbGliLkVmZmVjdCwgc28gd2Uga25vdyB0aGF0IHRoZSBhcml0eSBtYXRjaGVzXG4gIHZhciBrMSA9IGNhbWxfcG9wX2ZpYmVyKCk7XG4gIHJldHVybiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCk/aGFuZGxlcihlZmYsY29udCxrMSxrMSlcbiAgICAgICAgIDpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGhhbmRsZXIsW2VmZixjb250LGsxLGsxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2Nfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX2ZpYmVyX3N0YWNrLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoLCBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrKGh2LCBoeCwgaGYpIHtcbiAgZnVuY3Rpb24gY2FsbChpLCB4KSB7XG4gICAgdmFyIGY9Y2FtbF9maWJlcl9zdGFjay5oW2ldO1xuICAgIHZhciBhcmdzID0gW3gsIGNhbWxfcG9wX2ZpYmVyKCldO1xuICAgIHJldHVybiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCk/Y2FtbF9jYWxsX2dlbihmLGFyZ3MpXG4gICAgICAgICAgIDpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsYXJncyk7XG4gIH1cbiAgZnVuY3Rpb24gaHZhbCh4KSB7XG4gICAgLy8gQ2FsbCBbaHZdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgICByZXR1cm4gY2FsbCgxLCB4KTtcbiAgfVxuICBmdW5jdGlvbiBoZXhuKGUpIHtcbiAgICAvLyBDYWxsIFtoeF0gaW4gdGhlIHBhcmVudCBmaWJlclxuICAgIHJldHVybiBjYWxsKDIsIGUpO1xuICB9XG4gIHJldHVybiBbMCwgaHZhbCwgWzAsIGhleG4sIDBdLCBbMCwgaHYsIGh4LCBoZl0sIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX3N0YWNrXG4vL0lmOiAhZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFjayhodiwgaHgsIGhmKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGNcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KSB7XG4gIHZhciBzdGFjaz1jb250WzFdO1xuICBjb250WzFdPTA7XG4gIHJldHVybiBzdGFjaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Y1xuLy9SZXF1aXJlczogY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG5mdW5jdGlvbiBjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjKGNvbnQsIGh2YWwsIGhleG4sIGhlZmYpIHtcbiAgdmFyIHN0YWNrID0gY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjKGNvbnQpO1xuICBzdGFja1szXSA9IFswLCBodmFsLCBoZXhuLCBoZWZmXTtcbiAgcmV0dXJuIHN0YWNrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrXG5mdW5jdGlvbiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrICgpIHsgcmV0dXJuIFswXTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9uZXdcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX25ldyh1bml0KXtcbiAgICByZXR1cm4ge2NvbmRpdGlvbjoxfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fd2FpdFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fd2FpdCh0LG11dGV4dCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0KHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9zaWduYWxcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8hSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGpzb29fZWZmZWN0X25vdF9zdXBwb3J0ZWQoKXtcbiAgY2FtbF9mYWlsd2l0aChcIkVmZmVjdCBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZFwiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCAoKSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICYmIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MudmVyc2lvbnMgIT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb25zLm5vZGUgIT09ICd1bmRlZmluZWQnKVxufVxuLy9Qcm92aWRlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGZzX25vZGVfc3VwcG9ydGVkICgpIHtcbiAgcmV0dXJuIGZhbHNlXG59XG5cblxuLy9Qcm92aWRlczogTWxOb2RlRGV2aWNlXG4vL1JlcXVpcmVzOiBNbE5vZGVGZCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBNbE5vZGVEZXZpY2Uocm9vdCkge1xuICB0aGlzLmZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubm0gPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiAodGhpcy5yb290ICsgbmFtZSk7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuaXNGaWxlID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRmlsZSgpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm1rZGlyID0gZnVuY3Rpb24obmFtZSwgbW9kZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMubWtkaXJTeW5jKHRoaXMubm0obmFtZSkse21vZGU6bW9kZX0pO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucm1kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5ybWRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZWFkZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnJlYWRkaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmlzX2RpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0RpcmVjdG9yeSgpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgYiA9IHRoaXMuZnMuZXhpc3RzU3luYyh0aGlzLm5tKG5hbWUpKT8xOjA7XG4gICAgdGhpcy5mcy51bmxpbmtTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiBiO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmLCByYWlzZV91bml4KSB7XG4gIHZhciBjb25zdHMgPSByZXF1aXJlKCdjb25zdGFudHMnKTtcbiAgdmFyIHJlcyA9IDA7XG4gIGZvcih2YXIga2V5IGluIGYpe1xuICAgIHN3aXRjaChrZXkpe1xuICAgIGNhc2UgXCJyZG9ubHlcIiAgOiByZXMgfD0gY29uc3RzLk9fUkRPTkxZOyBicmVhaztcbiAgICBjYXNlIFwid3Jvbmx5XCIgIDogcmVzIHw9IGNvbnN0cy5PX1dST05MWTsgYnJlYWs7XG4gICAgY2FzZSBcImFwcGVuZFwiICA6XG4gICAgICByZXMgfD0gY29uc3RzLk9fV1JPTkxZIHwgY29uc3RzLk9fQVBQRU5EO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImNyZWF0ZVwiICAgOiByZXMgfD0gY29uc3RzLk9fQ1JFQVQ7ICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ0cnVuY2F0ZVwiIDogcmVzIHw9IGNvbnN0cy5PX1RSVU5DOyAgICBicmVhaztcbiAgICBjYXNlIFwiZXhjbFwiICAgICA6IHJlcyB8PSBjb25zdHMuT19FWENMOyAgICAgYnJlYWs7XG4gICAgY2FzZSBcImJpbmFyeVwiICAgOiByZXMgfD0gY29uc3RzLk9fQklOQVJZOyAgIGJyZWFrO1xuICAgIGNhc2UgXCJ0ZXh0XCIgICAgIDogcmVzIHw9IGNvbnN0cy5PX1RFWFQ7ICAgICBicmVhaztcbiAgICBjYXNlIFwibm9uYmxvY2tcIiA6IHJlcyB8PSBjb25zdHMuT19OT05CTE9DSzsgYnJlYWs7XG4gICAgfVxuICB9XG4gIHRyeSB7XG4gICAgdmFyIGZkID0gdGhpcy5mcy5vcGVuU3luYyh0aGlzLm5tKG5hbWUpLCByZXMpO1xuICAgIHZhciBpc0NoYXJhY3RlckRldmljZSA9IHRoaXMuZnMubHN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzQ2hhcmFjdGVyRGV2aWNlKCk7XG4gICAgZi5pc0NoYXJhY3RlckRldmljZSA9IGlzQ2hhcmFjdGVyRGV2aWNlO1xuICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQsIGYpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVuYW1lID0gZnVuY3Rpb24obywgbiwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMucmVuYW1lU3luYyh0aGlzLm5tKG8pLCB0aGlzLm5tKG4pKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zdGF0ID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHNfZnJvbV9qcyhqc19zdGF0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubHN0YXQgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5sc3RhdFN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHNfZnJvbV9qcyhqc19zdGF0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3ltbGluayA9IGZ1bmN0aW9uKHRvX2RpciwgdGFyZ2V0LCBwYXRoLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5zeW1saW5rU3luYyh0aGlzLm5tKHRhcmdldCksIHRoaXMubm0ocGF0aCksIHRvX2RpciA/ICdkaXInIDogJ2ZpbGUnKTtcbiAgICByZXR1cm4gMDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZWFkbGluayA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgbGluayA9IHRoaXMuZnMucmVhZGxpbmtTeW5jKHRoaXMubm0obmFtZSksICd1dGY4Jyk7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGxpbmspO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm9wZW5kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMub3BlbmRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmFpc2Vfbm9kZWpzX2Vycm9yID0gZnVuY3Rpb24oZXJyLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZShcIlVuaXguVW5peF9lcnJvclwiKTtcbiAgaWYgKHJhaXNlX3VuaXggJiYgdW5peF9lcnJvcikge1xuICAgIHZhciBhcmdzID0gbWFrZV91bml4X2Vycl9hcmdzKGVyci5jb2RlLCBlcnIuc3lzY2FsbCwgZXJyLnBhdGgsIGVyci5lcnJubyk7XG4gICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN0YXRzX2Zyb21fanMgPSBmdW5jdGlvbihqc19zdGF0cykge1xuICAvKiA9PT1Vbml4LmZpbGVfa2luZD09PVxuICAgKiB0eXBlIGZpbGVfa2luZCA9XG4gICAqICAgICBTX1JFRyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFJlZ3VsYXIgZmlsZSAqKVxuICAgKiAgIHwgU19ESVIgICAgICAgICAgICAgICAgICAgICAgICgqKiBEaXJlY3RvcnkgKilcbiAgICogICB8IFNfQ0hSICAgICAgICAgICAgICAgICAgICAgICAoKiogQ2hhcmFjdGVyIGRldmljZSAqKVxuICAgKiAgIHwgU19CTEsgICAgICAgICAgICAgICAgICAgICAgICgqKiBCbG9jayBkZXZpY2UgKilcbiAgICogICB8IFNfTE5LICAgICAgICAgICAgICAgICAgICAgICAoKiogU3ltYm9saWMgbGluayAqKVxuICAgKiAgIHwgU19GSUZPICAgICAgICAgICAgICAgICAgICAgICgqKiBOYW1lZCBwaXBlICopXG4gICAqICAgfCBTX1NPQ0sgICAgICAgICAgICAgICAgICAgICAgKCoqIFNvY2tldCAqKVxuICAgKi9cbiAgdmFyIGZpbGVfa2luZDtcbiAgaWYgKGpzX3N0YXRzLmlzRmlsZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgZmlsZV9raW5kID0gMTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0NoYXJhY3RlckRldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMjtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0Jsb2NrRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAzO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU3ltYm9saWNMaW5rKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA0O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRklGTygpKSB7XG4gICAgZmlsZV9raW5kID0gNTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1NvY2tldCgpKSB7XG4gICAgZmlsZV9raW5kID0gNjtcbiAgfVxuICAvKiA9PT1Vbml4LnN0YXRzPT09XG4gICAqIHR5cGUgc3RhdHMgPVxuICAgKiAgeyBzdF9kZXYgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIERldmljZSBudW1iZXIgKilcbiAgICogICAgc3RfaW5vIDogaW50OyAgICAgICAgICAgICAgICgqKiBJbm9kZSBudW1iZXIgKilcbiAgICogICAgc3Rfa2luZCA6IGZpbGVfa2luZDsgICAgICAgICgqKiBLaW5kIG9mIHRoZSBmaWxlICopXG4gICAqICAgIHN0X3Blcm0gOiBmaWxlX3Blcm07ICAgICAgICAoKiogQWNjZXNzIHJpZ2h0cyAqKVxuICAgKiAgICBzdF9ubGluayA6IGludDsgICAgICAgICAgICAgKCoqIE51bWJlciBvZiBsaW5rcyAqKVxuICAgKiAgICBzdF91aWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIFVzZXIgaWQgb2YgdGhlIG93bmVyICopXG4gICAqICAgIHN0X2dpZCA6IGludDsgICAgICAgICAgICAgICAoKiogR3JvdXAgSUQgb2YgdGhlIGZpbGUncyBncm91cCAqKVxuICAgKiAgICBzdF9yZGV2IDogaW50OyAgICAgICAgICAgICAgKCoqIERldmljZSBJRCAoaWYgc3BlY2lhbCBmaWxlKSAqKVxuICAgKiAgICBzdF9zaXplIDogaW50OyAgICAgICAgICAgICAgKCoqIFNpemUgaW4gYnl0ZXMgKilcbiAgICogICAgc3RfYXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IGFjY2VzcyB0aW1lICopXG4gICAqICAgIHN0X210aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBtb2RpZmljYXRpb24gdGltZSAqKVxuICAgKiAgICBzdF9jdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3Qgc3RhdHVzIGNoYW5nZSB0aW1lICopXG4gICAqICB9XG4gICAqL1xuICByZXR1cm4gQkxPQ0soXG4gICAgMCxcbiAgICBqc19zdGF0cy5kZXYsXG4gICAganNfc3RhdHMuaW5vLFxuICAgIGZpbGVfa2luZCxcbiAgICBqc19zdGF0cy5tb2RlLFxuICAgIGpzX3N0YXRzLm5saW5rLFxuICAgIGpzX3N0YXRzLnVpZCxcbiAgICBqc19zdGF0cy5naWQsXG4gICAganNfc3RhdHMucmRldixcbiAgICBqc19zdGF0cy5zaXplLFxuICAgIGpzX3N0YXRzLmF0aW1lTXMsXG4gICAganNfc3RhdHMubXRpbWVNcyxcbiAgICBqc19zdGF0cy5jdGltZU1zXG4gICk7XG59XG5cbk1sTm9kZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbE5vZGVEZXZpY2VcblxuLy9Qcm92aWRlczogTWxOb2RlRGV2aWNlXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBNbE5vZGVEZXZpY2UoKSB7XG59XG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZkXG4vL1JlcXVpcmVzOiBNbEZpbGUsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX2J5dGVzX3NldCwgY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sTm9kZUZkKGZkLCBmbGFncyl7XG4gIHRoaXMuZnMgPSByZXF1aXJlKCdmcycpO1xuICB0aGlzLmZkID0gZmQ7XG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cbk1sTm9kZUZkLnByb3RvdHlwZSA9IG5ldyBNbEZpbGUgKCk7XG5NbE5vZGVGZC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbE5vZGVGZDtcblxuTWxOb2RlRmQucHJvdG90eXBlLnRydW5jYXRlID0gZnVuY3Rpb24obGVuKXtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLmZ0cnVuY2F0ZVN5bmModGhpcy5mZCxsZW58MCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5mc3RhdFN5bmModGhpcy5mZCkuc2l6ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGZC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihvZmZzZXQsYnVmLGJ1Zl9vZmZzZXQsbGVuKXtcbiAgdHJ5IHtcbiAgICBpZih0aGlzLmZsYWdzLmlzQ2hhcmFjdGVyRGV2aWNlKVxuICAgICAgdGhpcy5mcy53cml0ZVN5bmModGhpcy5mZCwgYnVmLCBidWZfb2Zmc2V0LCBsZW4pO1xuICAgIGVsc2VcbiAgICAgIHRoaXMuZnMud3JpdGVTeW5jKHRoaXMuZmQsIGJ1ZiwgYnVmX29mZnNldCwgbGVuLCBvZmZzZXQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5NbE5vZGVGZC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKG9mZnNldCxhLGJ1Zl9vZmZzZXQsbGVuKXtcbiAgdHJ5IHtcbiAgICBpZih0aGlzLmZsYWdzLmlzQ2hhcmFjdGVyRGV2aWNlKVxuICAgICAgdmFyIHJlYWQgPSB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGEsIGJ1Zl9vZmZzZXQsIGxlbik7XG4gICAgZWxzZVxuICAgICAgdmFyIHJlYWQgPSB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGEsIGJ1Zl9vZmZzZXQsIGxlbiwgb2Zmc2V0KTtcbiAgICByZXR1cm4gcmVhZDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGZC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpe1xuICB0cnkge1xuICAgIHRoaXMuZnMuY2xvc2VTeW5jKHRoaXMuZmQpO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBNbE5vZGVGZCgpe1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbi8vUmVxdWlyZXM6IE1sTm9kZUZkXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyl7XG4gIGlmKGZsYWdzLm5hbWUpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xuICAgICAgdmFyIGZkMiA9IGZzLm9wZW5TeW5jKGZsYWdzLm5hbWUsIFwicnNcIik7XG4gICAgICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkMiwgZmxhZ3MpO1xuICAgIH0gY2F0Y2goZSkgeyAgfVxuICB9XG4gIHJldHVybiBuZXcgTWxOb2RlRmQoZmQsIGZsYWdzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3Mpe1xuICByZXR1cm4gbnVsbDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRHVtbXkgZmlsZXN5c3RlbVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpe1xuICByZXR1cm4gKG5hbWUuc2xpY2UoLTEpICE9PSBcIi9cIikgPyAobmFtZSArIFwiL1wiKSA6IG5hbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5pZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZClcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKCkucmVwbGFjZSgvXFxcXC9nLCcvJyk7XG5lbHNlXG4gIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gIFwiL3N0YXRpY1wiO1xuY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2goY2FtbF9jdXJyZW50X2Rpcik7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3Jvb3Rcbi8vUmVxdWlyZXM6IHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfZ2V0X3Jvb3QocGF0aCl7XG4gIHZhciB4ID0gcGF0aF9pc19hYnNvbHV0ZShwYXRoKTtcbiAgaWYgKCF4KSByZXR1cm47XG4gIHJldHVybiB4WzBdICsgXCIvXCJ9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcm9vdFxuLy9SZXF1aXJlczogY2FtbF9nZXRfcm9vdCwgY2FtbF9jdXJyZW50X2RpciwgY2FtbF9mYWlsd2l0aFxudmFyIGNhbWxfcm9vdCA9IGNhbWxfZ2V0X3Jvb3QoY2FtbF9jdXJyZW50X2RpcikgfHwgY2FtbF9mYWlsd2l0aChcInVuYWJsZSB0byBjb21wdXRlIGNhbWxfcm9vdFwiKTtcblxuXG4vL1Byb3ZpZGVzOiBNbEZpbGVcbmZ1bmN0aW9uIE1sRmlsZSgpeyAgfVxuXG4vL1Byb3ZpZGVzOiBwYXRoX2lzX2Fic29sdXRlXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCkge1xuICBmdW5jdGlvbiBwb3NpeChwYXRoKSB7XG4gICAgaWYgKHBhdGguY2hhckF0KDApID09PSAnLycpIHJldHVybiBbXCJcIiwgcGF0aC5zdWJzdHJpbmcoMSldO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdpbjMyKHBhdGgpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9iM2ZjYzI0NWZiMjU1Mzk5MDllZjFkNWVhYTAxZGJmOTJlMTY4NjMzL2xpYi9wYXRoLmpzI0w1NlxuICAgIHZhciBzcGxpdERldmljZVJlID0gL14oW2EtekEtWl06fFtcXFxcL117Mn1bXlxcXFwvXStbXFxcXC9dK1teXFxcXC9dKyk/KFtcXFxcL10pPyhbXFxzXFxTXSo/KSQvO1xuICAgIHZhciByZXN1bHQgPSBzcGxpdERldmljZVJlLmV4ZWMocGF0aCk7XG4gICAgdmFyIGRldmljZSA9IHJlc3VsdFsxXSB8fCAnJztcbiAgICB2YXIgaXNVbmMgPSBCb29sZWFuKGRldmljZSAmJiBkZXZpY2UuY2hhckF0KDEpICE9PSAnOicpO1xuXG4gICAgLy8gVU5DIHBhdGhzIGFyZSBhbHdheXMgYWJzb2x1dGVcbiAgICBpZiAoQm9vbGVhbihyZXN1bHRbMl0gfHwgaXNVbmMpKSB7XG4gICAgICB2YXIgcm9vdCA9IChyZXN1bHRbMV0gfHwgJycpO1xuICAgICAgdmFyIHNlcCA9IChyZXN1bHRbMl0gfHwgJycpO1xuICAgICAgcmV0dXJuIFtyb290LCBwYXRoLnN1YnN0cmluZyhyb290Lmxlbmd0aCArIHNlcC5sZW5ndGgpXVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQgKCkgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSkge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyB3aW4zMiA6IHBvc2l4O1xuICB9XG4gIGVsc2UgcmV0dXJuIHBvc2l4XG59XG52YXIgcGF0aF9pc19hYnNvbHV0ZSA9IG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfcGF0aFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfbWFrZV9wYXRoIChuYW1lKSB7XG4gIG5hbWU9Y2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmKCAhcGF0aF9pc19hYnNvbHV0ZShuYW1lKSApXG4gICAgbmFtZSA9IGNhbWxfY3VycmVudF9kaXIgKyBuYW1lO1xuICB2YXIgY29tcDAgPSBwYXRoX2lzX2Fic29sdXRlKG5hbWUpO1xuICB2YXIgY29tcCA9IGNvbXAwWzFdLnNwbGl0KFwiL1wiKTtcbiAgdmFyIG5jb21wID0gW11cbiAgZm9yKHZhciBpID0gMDsgaTxjb21wLmxlbmd0aDsgaSsrKXtcbiAgICBzd2l0Y2goY29tcFtpXSl7XG4gICAgY2FzZSBcIi4uXCI6IGlmKG5jb21wLmxlbmd0aD4xKSBuY29tcC5wb3AoKTsgYnJlYWs7XG4gICAgY2FzZSBcIi5cIjogYnJlYWs7XG4gICAgY2FzZSBcIlwiOiBicmVhaztcbiAgICBkZWZhdWx0OiBuY29tcC5wdXNoKGNvbXBbaV0pO2JyZWFrXG4gICAgfVxuICB9XG4gIG5jb21wLnVuc2hpZnQoY29tcDBbMF0pO1xuICBuY29tcC5vcmlnID0gbmFtZTtcbiAgcmV0dXJuIG5jb21wO1xufVxuXG4vL1Byb3ZpZGVzOmpzb29fbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgTWxOb2RlRGV2aWNlLCBjYW1sX3Jvb3QsIGZzX25vZGVfc3VwcG9ydGVkXG52YXIganNvb19tb3VudF9wb2ludCA9IFtdXG5pZiAoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6Y2FtbF9yb290LGRldmljZTpuZXcgTWxOb2RlRGV2aWNlKGNhbWxfcm9vdCl9KTtcbn0gZWxzZSB7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpjYW1sX3Jvb3QsZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UoY2FtbF9yb290KX0pO1xufVxuanNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOlwiL3N0YXRpYy9cIiwgZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UoXCIvc3RhdGljL1wiKX0pO1xuXG4vL1Byb3ZpZGVzOmNhbWxfbGlzdF9tb3VudF9wb2ludFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9saXN0X21vdW50X3BvaW50KCl7XG4gIHZhciBwcmV2ID0gMFxuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKyl7XG4gICAgdmFyIG9sZCA9IHByZXY7XG4gICAgcHJldiA9IFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCksIG9sZF1cbiAgfVxuICByZXR1cm4gcHJldjtcbn1cblxuLy9Qcm92aWRlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9nZXRfcm9vdCwgTWxOb2RlRGV2aWNlLCBjYW1sX3RyYWlsaW5nX3NsYXNoLCBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSl7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gcGF0aC5qb2luKFwiL1wiKTtcbiAgdmFyIG5hbWVfc2xhc2ggPSBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpO1xuICB2YXIgcmVzO1xuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtID0ganNvb19tb3VudF9wb2ludFtpXTtcbiAgICBpZihuYW1lX3NsYXNoLnNlYXJjaChtLnBhdGgpID09IDBcbiAgICAgICAmJiAoIXJlcyB8fCByZXMucGF0aC5sZW5ndGggPCBtLnBhdGgubGVuZ3RoKSlcbiAgICAgIHJlcyA9IHtwYXRoOm0ucGF0aCxkZXZpY2U6bS5kZXZpY2UscmVzdDpuYW1lLnN1YnN0cmluZyhtLnBhdGgubGVuZ3RoLG5hbWUubGVuZ3RoKX07XG4gIH1cbiAgaWYoICFyZXMgJiYgZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciByb290ID0gY2FtbF9nZXRfcm9vdChuYW1lKTtcbiAgICBpZiAocm9vdCAmJiByb290Lm1hdGNoKC9eW2EtekEtWl06XFwvJC8pKXtcbiAgICAgIHZhciBtID0ge3BhdGg6cm9vdCxkZXZpY2U6bmV3IE1sTm9kZURldmljZShyb290KX07XG4gICAgICBqc29vX21vdW50X3BvaW50LnB1c2gobSk7XG4gICAgICByZXMgPSB7cGF0aDptLnBhdGgsZGV2aWNlOm0uZGV2aWNlLHJlc3Q6bmFtZS5zdWJzdHJpbmcobS5wYXRoLmxlbmd0aCxuYW1lLmxlbmd0aCl9O1xuICAgIH1cbiAgfVxuICBpZiggcmVzICkgcmV0dXJuIHJlcztcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJubyBkZXZpY2UgZm91bmQgZm9yIFwiICsgbmFtZV9zbGFzaCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW91bnRfYXV0b2xvYWRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgY2FtbF9tYWtlX3BhdGgsIGpzb29fbW91bnRfcG9pbnQsIGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfbW91bnRfYXV0b2xvYWQobmFtZSxmKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6bmFtZSxkZXZpY2U6bmV3IE1sRmFrZURldmljZShuYW1lLGYpfSlcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5tb3VudFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9tYWtlX3BhdGgsIGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfdW5tb3VudChuYW1lKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICB2YXIgaWR4ID0gLTE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKVxuICAgIGlmKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCA9PSBuYW1lKSBpZHggPSBpO1xuICBpZihpZHggPiAtMSkganNvb19tb3VudF9wb2ludC5zcGxpY2UoaWR4LDEpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRjd2Rcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGN3ZCgpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF9jdXJyZW50X2Rpcik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NoZGlyXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfdHJhaWxpbmdfc2xhc2gsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX2NoZGlyKGRpcikge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRpcik7XG4gIGlmKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgaWYocm9vdC5yZXN0KSBjYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChyb290LnBhdGggKyByb290LnJlc3QpO1xuICAgIGVsc2UgY2FtbF9jdXJyZW50X2RpciA9IHJvb3QucGF0aDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGRpcikpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUobmFtZSl7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2FfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub3RfYV9kaXIobmFtZSl7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZmlsZV9leGlzdHNcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19maWxlX2V4aXN0cyAobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9hX2RpciwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5KG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLnJlYWRkaXIocm9vdC5yZXN0KTtcbiAgdmFyIGwgPSBuZXcgQXJyYXkoYS5sZW5ndGggKyAxKTtcbiAgbFswXSA9IDA7XG4gIGZvcih2YXIgaT0wO2k8YS5sZW5ndGg7aSsrKVxuICAgIGxbaSsxXSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYVtpXSk7XG4gIHJldHVybiBsO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW1vdmVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfcmVtb3ZlKG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgb2sgPSByb290LmRldmljZS51bmxpbmsocm9vdC5yZXN0KTtcbiAgaWYob2sgPT0gMCkgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19kaXJlY3RvcnkobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UuaXNfZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiBhPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVuYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVuYW1lKG8sbil7XG4gIHZhciBvX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShvKTtcbiAgdmFyIG5fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG4pO1xuICBpZihvX3Jvb3QuZGV2aWNlICE9IG5fcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogY2Fubm90IG1vdmUgZmlsZSBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtXCIpO1xuICBpZighb19yb290LmRldmljZS5yZW5hbWUpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogbm8gaW1wbGVtZW50ZWRcIik7XG4gIG9fcm9vdC5kZXZpY2UucmVuYW1lKG9fcm9vdC5yZXN0LCBuX3Jvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfc3lzX21rZGlyKG5hbWUsIHBlcm0pe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QscGVybSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19ybWRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vdF9hX2RpclxuZnVuY3Rpb24gY2FtbF9zeXNfcm1kaXIobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlKHZmZCwga2luZCwgbGF5b3V0LCBzaGFyZWQsIGRpbXMsIHBvcykge1xuICAvLyB2YXIgZGF0YSA9IGNhbWxfc3lzX2Zkc1t2ZmRdO1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9iYV9tYXBfZmlsZSBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUoYXJndixhcmduKXtcbiAgcmV0dXJuIGNhbWxfYmFfbWFwX2ZpbGUoYXJndlswXSxhcmd2WzFdLGFyZ3ZbMl0sYXJndlszXSxhcmd2WzRdLGFyZ3ZbNV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlX2V4dGVyblxuZnVuY3Rpb24ganNvb19jcmVhdGVfZmlsZV9leHRlcm4obmFtZSxjb250ZW50KXtcbiAgaWYoZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKVxuICAgIGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpO1xuICBlbHNlIHtcbiAgICBpZighZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCkgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICAgIGdsb2JhbFRoaXMuY2FtbF9mc190bXAucHVzaCh7bmFtZTpuYW1lLGNvbnRlbnQ6Y29udGVudH0pO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZzX2luaXRcbi8vUmVxdWlyZXM6IGpzb29fY3JlYXRlX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfZnNfaW5pdCAoKXtcbiAgdmFyIHRtcD1nbG9iYWxUaGlzLmNhbWxfZnNfdG1wXG4gIGlmKHRtcCl7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHRtcC5sZW5ndGg7IGkrKyl7XG4gICAgICBqc29vX2NyZWF0ZV9maWxlKHRtcFtpXS5uYW1lLHRtcFtpXS5jb250ZW50KTtcbiAgICB9XG4gIH1cbiAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlID0ganNvb19jcmVhdGVfZmlsZTtcbiAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKCEgcm9vdC5kZXZpY2UucmVnaXN0ZXIpIGNhbWxfZmFpbHdpdGgoXCJjYW5ub3QgcmVnaXN0ZXIgZmlsZVwiKTtcbiAgcm9vdC5kZXZpY2UucmVnaXN0ZXIocm9vdC5yZXN0LGNvbnRlbnQpO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9maWxlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCkge1xuICB2YXIgbmFtZSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk7XG4gIHZhciBjb250ZW50ID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjb250ZW50KTtcbiAgcmV0dXJuIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSwgY29udGVudCk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWFkX2ZpbGVfY29udGVudFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWFkX2ZpbGVfY29udGVudCAobmFtZSkge1xuICB2YXIgbmFtZSA9ICh0eXBlb2YgbmFtZSA9PSBcInN0cmluZ1wiKT9jYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpOm5hbWU7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCx7cmRvbmx5OjF9KTtcbiAgICB2YXIgbGVuICA9IGZpbGUubGVuZ3RoKCk7XG4gICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgZmlsZS5yZWFkKDAsYnVmLDAsbGVuKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYnVmKVxuICB9XG4gIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xufVxuIiwiLy9Qcm92aWRlczogY2FtbF91bml4X2dldHRpbWVvZmRheVxuLy9BbGlhczogdW5peF9nZXR0aW1lb2ZkYXlcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXR0aW1lb2ZkYXkgKCkge1xuICByZXR1cm4gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAvIDEwMDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF90aW1lXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5XG4vL0FsaWFzOiB1bml4X3RpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF90aW1lICgpIHtcbiAgcmV0dXJuIE1hdGguZmxvb3IoY2FtbF91bml4X2dldHRpbWVvZmRheSAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nbXRpbWVcbi8vQWxpYXM6IHVuaXhfZ210aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ210aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoRGF0ZS5VVEMoZC5nZXRVVENGdWxsWWVhcigpLCAwLCAxKSkpLmdldFRpbWUoKTtcbiAgdmFyIGRveSA9IE1hdGguZmxvb3IoKGRfbnVtIC0gamFudWFyeWZpcnN0KSAvIDg2NDAwMDAwKTtcbiAgcmV0dXJuIEJMT0NLKDAsIGQuZ2V0VVRDU2Vjb25kcygpLCBkLmdldFVUQ01pbnV0ZXMoKSwgZC5nZXRVVENIb3VycygpLFxuICAgICAgICAgICAgICAgZC5nZXRVVENEYXRlKCksIGQuZ2V0VVRDTW9udGgoKSwgZC5nZXRVVENGdWxsWWVhcigpIC0gMTkwMCxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF5KCksIGRveSxcbiAgICAgICAgICAgICAgIGZhbHNlIHwgMCAvKiBmb3IgVVRDIGRheWxpZ2h0IHNhdmluZ3MgdGltZSBpcyBmYWxzZSAqLylcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xvY2FsdGltZVxuLy9BbGlhczogdW5peF9sb2NhbHRpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9sb2NhbHRpbWUgKHQpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSAodCAqIDEwMDApO1xuICB2YXIgZF9udW0gPSBkLmdldFRpbWUoKTtcbiAgdmFyIGphbnVhcnlmaXJzdCA9IChuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDAsIDEpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHZhciBqYW4gPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xuICB2YXIganVsID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCA2LCAxKTtcbiAgdmFyIHN0ZFRpbWV6b25lT2Zmc2V0ID0gTWF0aC5tYXgoamFuLmdldFRpbWV6b25lT2Zmc2V0KCksIGp1bC5nZXRUaW1lem9uZU9mZnNldCgpKTtcbiAgcmV0dXJuIEJMT0NLKDAsIGQuZ2V0U2Vjb25kcygpLCBkLmdldE1pbnV0ZXMoKSwgZC5nZXRIb3VycygpLFxuICAgICAgICAgICAgICAgZC5nZXREYXRlKCksIGQuZ2V0TW9udGgoKSwgZC5nZXRGdWxsWWVhcigpIC0gMTkwMCxcbiAgICAgICAgICAgICAgIGQuZ2V0RGF5KCksIGRveSxcbiAgICAgICAgICAgICAgIChkLmdldFRpbWV6b25lT2Zmc2V0KCkgPCBzdGRUaW1lem9uZU9mZnNldCkgfCAwIC8qIGRheWxpZ2h0IHNhdmluZ3MgdGltZSAgZmllbGQuICovKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbWt0aW1lXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9jYWx0aW1lXG4vL0FsaWFzOiB1bml4X21rdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X21rdGltZSh0bSl7XG4gIHZhciBkID0gKG5ldyBEYXRlKHRtWzZdKzE5MDAsdG1bNV0sdG1bNF0sdG1bM10sdG1bMl0sdG1bMV0pKS5nZXRUaW1lKCk7XG4gIHZhciB0ID0gTWF0aC5mbG9vcihkIC8gMTAwMCk7XG4gIHZhciB0bTIgPSBjYW1sX3VuaXhfbG9jYWx0aW1lKHQpO1xuICByZXR1cm4gQkxPQ0soMCx0LHRtMik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhcnR1cCBjb25zdFxuLy9BbGlhczogd2luX3N0YXJ0dXBcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGFydHVwKCkge31cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2NsZWFudXAgY29uc3Rcbi8vQWxpYXM6IHdpbl9jbGVhbnVwXG5mdW5jdGlvbiBjYW1sX3VuaXhfY2xlYW51cCgpIHt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maWxlZGVzY3Jfb2ZfZmQgY29uc3Rcbi8vQWxpYXM6IHdpbl9oYW5kbGVfZmRcbmZ1bmN0aW9uIGNhbWxfdW5peF9maWxlZGVzY3Jfb2ZfZmQoeCkge3JldHVybiB4O31cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2lzYXR0eVxuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vQWxpYXM6IHVuaXhfaXNhdHR5XG5mdW5jdGlvbiBjYW1sX3VuaXhfaXNhdHR5KGZpbGVEZXNjcmlwdG9yKSB7XG4gIGlmKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICB2YXIgdHR5ID0gcmVxdWlyZSgndHR5Jyk7XG4gICAgcmV0dXJuIHR0eS5pc2F0dHkoZmlsZURlc2NyaXB0b3IpPzE6MDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vQWxpYXM6IHVuaXhfaXNhdHR5XG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3VuaXhfaXNhdHR5KGZpbGVEZXNjcmlwdG9yKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBtYWtlX3VuaXhfZXJyX2FyZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgdW5peF9lcnJvciA9IFtcbiAgLyogPT09VW5peC5lcnJvcj09PVxuICAgKlxuICAgKiBUaGlzIGFycmF5IGlzIGluIG9yZGVyIG9mIHRoZSB2YXJpYW50IGluIE9DYW1sXG4gICAqL1xuICBcIkUyQklHXCIsIFwiRUFDQ0VTXCIsIFwiRUFHQUlOXCIsIFwiRUJBREZcIiwgXCJFQlVTWVwiLCBcIkVDSElMRFwiLCBcIkVERUFETEtcIiwgXCJFRE9NXCIsXG4gIFwiRUVYSVNUXCIsIFwiRUZBVUxUXCIsIFwiRUZCSUdcIiwgXCJFSU5UUlwiLCBcIkVJTlZBTFwiLCBcIkVJT1wiLCBcIkVJU0RJUlwiLCBcIkVNRklMRVwiLFxuICBcIkVNTElOS1wiLCBcIkVOQU1FVE9PTE9OR1wiLCBcIkVORklMRVwiLCBcIkVOT0RFVlwiLCBcIkVOT0VOVFwiLCBcIkVOT0VYRUNcIiwgXCJFTk9MQ0tcIixcbiAgXCJFTk9NRU1cIiwgXCJFTk9TUENcIiwgXCJFTk9TWVNcIiwgXCJFTk9URElSXCIsIFwiRU5PVEVNUFRZXCIsIFwiRU5PVFRZXCIsIFwiRU5YSU9cIixcbiAgXCJFUEVSTVwiLCBcIkVQSVBFXCIsIFwiRVJBTkdFXCIsIFwiRVJPRlNcIiwgXCJFU1BJUEVcIiwgXCJFU1JDSFwiLCBcIkVYREVWXCIsIFwiRVdPVUxEQkxPQ0tcIixcbiAgXCJFSU5QUk9HUkVTU1wiLCBcIkVBTFJFQURZXCIsIFwiRU5PVFNPQ0tcIiwgXCJFREVTVEFERFJSRVFcIiwgXCJFTVNHU0laRVwiLFxuICBcIkVQUk9UT1RZUEVcIiwgXCJFTk9QUk9UT09QVFwiLCBcIkVQUk9UT05PU1VQUE9SVFwiLCBcIkVTT0NLVE5PU1VQUE9SVFwiLFxuICBcIkVPUE5PVFNVUFBcIiwgXCJFUEZOT1NVUFBPUlRcIiwgXCJFQUZOT1NVUFBPUlRcIiwgXCJFQUREUklOVVNFXCIsIFwiRUFERFJOT1RBVkFJTFwiLFxuICBcIkVORVRET1dOXCIsIFwiRU5FVFVOUkVBQ0hcIiwgXCJFTkVUUkVTRVRcIiwgXCJFQ09OTkFCT1JURURcIiwgXCJFQ09OTlJFU0VUXCIsIFwiRU5PQlVGU1wiLFxuICBcIkVJU0NPTk5cIiwgXCJFTk9UQ09OTlwiLCBcIkVTSFVURE9XTlwiLCBcIkVUT09NQU5ZUkVGU1wiLCBcIkVUSU1FRE9VVFwiLCBcIkVDT05OUkVGVVNFRFwiLFxuICBcIkVIT1NURE9XTlwiLCBcIkVIT1NUVU5SRUFDSFwiLCBcIkVMT09QXCIsIFwiRU9WRVJGTE9XXCJcbl07XG5mdW5jdGlvbiBtYWtlX3VuaXhfZXJyX2FyZ3MoY29kZSwgc3lzY2FsbCwgcGF0aCwgZXJybm8pIHtcbiAgdmFyIHZhcmlhbnQgPSB1bml4X2Vycm9yLmluZGV4T2YoY29kZSk7XG4gIGlmICh2YXJpYW50IDwgMCkge1xuICAgIC8vIERlZmF1bHQgaWYgdW5kZWZpbmVkXG4gICAgaWYgKGVycm5vID09IG51bGwpIHtcbiAgICAgIGVycm5vID0gLTk5OTlcbiAgICB9XG4gICAgLy8gSWYgbm9uZSBvZiB0aGUgYWJvdmUgdmFyaWFudHMsIGZhbGxiYWNrIHRvIEVVTktOT1dORVJSKGludClcbiAgICB2YXJpYW50ID0gQkxPQ0soMCwgZXJybm8pO1xuICB9XG4gIHZhciBhcmdzID0gW1xuICAgIHZhcmlhbnQsXG4gICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoc3lzY2FsbCB8fCBcIlwiKSxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhwYXRoIHx8IFwiXCIpXG4gIF07XG4gIHJldHVybiBhcmdzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3RhdFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uuc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGF0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfc3RhdCwgY2FtbF9pbnQ2NF9vZl9pbnQzMlxuLy9BbGlhczogdW5peF9zdGF0XzY0XG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhdF82NChuYW1lKSB7XG4gIHZhciByID0gY2FtbF91bml4X3N0YXQobmFtZSk7XG4gIHJbOV0gPSBjYW1sX2ludDY0X29mX2ludDMyKHJbOV0pO1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xzdGF0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9sc3RhdFxuZnVuY3Rpb24gY2FtbF91bml4X2xzdGF0KG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5sc3RhdCkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfbHN0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UubHN0YXQocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbHN0YXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sc3RhdCwgY2FtbF9pbnQ2NF9vZl9pbnQzMlxuLy9BbGlhczogdW5peF9sc3RhdF82NFxuZnVuY3Rpb24gY2FtbF91bml4X2xzdGF0XzY0KG5hbWUpIHtcbiAgdmFyIHIgPSBjYW1sX3VuaXhfbHN0YXQobmFtZSk7XG4gIHJbOV0gPSBjYW1sX2ludDY0X29mX2ludDMyKHJbOV0pO1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9ta2RpclxuZnVuY3Rpb24gY2FtbF91bml4X21rZGlyKG5hbWUsIHBlcm0pIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ta2Rpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfbWtkaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LCBwZXJtLCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3JtZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcm1kaXIobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJtZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9ybWRpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5ybWRpcihyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zeW1saW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3ltbGluayh0b19kaXIsIHNyYywgZHN0KSB7XG4gIHZhciBzcmNfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKHNyYyk7XG4gIHZhciBkc3Rfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRzdCk7XG4gIGlmKHNyY19yb290LmRldmljZSAhPSBkc3Rfcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zeW1saW5rOiBjYW5ub3Qgc3ltbGluayBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtc1wiKTtcbiAgaWYgKCFzcmNfcm9vdC5kZXZpY2Uuc3ltbGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3ltbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiBzcmNfcm9vdC5kZXZpY2Uuc3ltbGluayh0b19kaXIsIHNyY19yb290LnJlc3QsIGRzdF9yb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZWFkbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfcmVhZGxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkbGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UucmVhZGxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3JlYWRsaW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJlYWRsaW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3VubGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfdW5saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfdW5saW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS51bmxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3VubGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS51bmxpbmsocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0dWlkXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9BbGlhczogdW5peF9nZXR1aWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXR1aWQodW5pdCkge1xuICBpZihnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmdldHVpZCl7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQoKTtcbiAgfVxuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0cHd1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL0FsaWFzOiB1bml4X2dldHB3dWlkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0cHd1aWQodW5pdCkge1xuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaGFzX3N5bWxpbmtcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0FsaWFzOiB1bml4X2hhc19zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfaGFzX3N5bWxpbmsodW5pdCkge1xuICByZXR1cm4gZnNfbm9kZV9zdXBwb3J0ZWQoKT8xOjBcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X29wZW5kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X29wZW5kaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShwYXRoKTtcbiAgaWYgKCFyb290LmRldmljZS5vcGVuZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9vcGVuZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgdmFyIGRpcl9oYW5kbGUgPSByb290LmRldmljZS5vcGVuZGlyKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbiAgcmV0dXJuIHsgcG9pbnRlciA6IGRpcl9oYW5kbGUsIHBhdGg6IHBhdGggfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVcbi8vQWxpYXM6IHVuaXhfcmVhZGRpclxuZnVuY3Rpb24gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSkge1xuICB2YXIgZW50cnk7XG4gIHRyeSB7XG4gICAgICBlbnRyeSA9IGRpcl9oYW5kbGUucG9pbnRlci5yZWFkU3luYygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJyZWFkZGlyXCIsIGRpcl9oYW5kbGUucGF0aCkpO1xuICB9XG4gIGlmIChlbnRyeSA9PT0gbnVsbCkge1xuICAgICAgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGVudHJ5Lm5hbWUpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9jbG9zZWRpclxuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZVxuLy9BbGlhczogdW5peF9jbG9zZWRpclxuZnVuY3Rpb24gY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpIHtcbiAgdHJ5IHtcbiAgICAgIGRpcl9oYW5kbGUucG9pbnRlci5jbG9zZVN5bmMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgZGlyX2hhbmRsZS5wYXRoKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3Jld2luZGRpclxuLy9SZXF1aXJlczogY2FtbF91bml4X2Nsb3NlZGlyLCBjYW1sX3VuaXhfb3BlbmRpclxuLy9BbGlhczogdW5peF9yZXdpbmRkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZXdpbmRkaXIoZGlyX2hhbmRsZSkge1xuICBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSk7XG4gIHZhciBuZXdfZGlyX2hhbmRsZSA9IGNhbWxfdW5peF9vcGVuZGlyKGRpcl9oYW5kbGUucGF0aCk7XG4gIGRpcl9oYW5kbGUucG9pbnRlciA9IG5ld19kaXJfaGFuZGxlLnBvaW50ZXI7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZGZpcnN0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9vcGVuZGlyLCBjYW1sX3VuaXhfcmVhZGRpclxuLy9BbGlhczogd2luX2ZpbmRmaXJzdFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRmaXJzdChwYXRoKSB7XG4gIC8vIFRoZSBXaW5kb3dzIGNvZGUgYWRkcyB0aGlzIGdsb2IgdG8gdGhlIHBhdGgsIHNvIHdlIG5lZWQgdG8gcmVtb3ZlIGl0XG4gIHZhciBwYXRoX2pzID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocGF0aCk7XG4gIHBhdGhfanMgPSBwYXRoX2pzLnJlcGxhY2UoLyhefFtcXFxcXFwvXSlcXCpcXC5cXCokLywgXCJcIik7XG4gIHBhdGggPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhwYXRoX2pzKTtcbiAgLy8gKi4qIGlzIG5vdyBzdHJpcHBlZFxuICB2YXIgZGlyX2hhbmRsZSA9IGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpO1xuICB2YXIgZmlyc3RfZW50cnkgPSBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKTtcbiAgLy8gVGhlIFdpbmRvd3MgYmluZGluZ3MgdHlwZSBkaXJfaGFuZGxlIGFzIGFuIGBpbnRgIGJ1dCBpdCdzIG5vdCBpbiBKU1xuICByZXR1cm4gWzAsIGZpcnN0X2VudHJ5LCBkaXJfaGFuZGxlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRuZXh0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9BbGlhczogd2luX2ZpbmRuZXh0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZG5leHQoZGlyX2hhbmRsZSkge1xuICByZXR1cm4gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9jbG9zZWRpclxuLy9BbGlhczogd2luX2ZpbmRjbG9zZVxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRjbG9zZShkaXJfaGFuZGxlKSB7XG4gIHJldHVybiBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmcgY29uc3Rcbi8vQWxpYXM6IHVuaXhfaW5ldF9hZGRyX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmcgKCkge3JldHVybiAwO31cblxuXG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBNbEZha2VEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGUsIE1sRmFrZUZkLCBjYW1sX2NyZWF0ZV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9hcnJheSwgY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfYnl0ZXNfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzXG5mdW5jdGlvbiBNbEZha2VEZXZpY2UgKHJvb3QsIGYpIHtcbiAgdGhpcy5jb250ZW50PXt9O1xuICB0aGlzLnJvb3QgPSByb290O1xuICB0aGlzLmxvb2t1cEZ1biA9IGY7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5jcmVhdGVfZGlyX2lmX25lZWRlZCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIGNvbXAgPSBuYW1lLnNwbGl0KFwiL1wiKTtcbiAgdmFyIHJlcyA9IFwiXCI7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBjb21wLmxlbmd0aCAtIDE7IGkrKyl7XG4gICAgcmVzICs9IGNvbXBbaV0gKyBcIi9cIjtcbiAgICBpZih0aGlzLmNvbnRlbnRbcmVzXSkgY29udGludWU7XG4gICAgdGhpcy5jb250ZW50W3Jlc10gPSBTeW1ib2woXCJkaXJlY3RvcnlcIik7XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuc2xhc2ggPSBmdW5jdGlvbihuYW1lKXtcbiAgcmV0dXJuIC9cXC8kLy50ZXN0KG5hbWUpP25hbWU6KG5hbWUgKyBcIi9cIik7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmxvb2t1cCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYoIXRoaXMuY29udGVudFtuYW1lXSAmJiB0aGlzLmxvb2t1cEZ1bikge1xuICAgIHZhciByZXMgPSB0aGlzLmxvb2t1cEZ1bihjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucm9vdCksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSkpO1xuICAgIGlmKHJlcyAhPT0gMCkge1xuICAgICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICAgIHRoaXMuY29udGVudFtuYW1lXT1uZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhyZXNbMV0pKTtcbiAgICB9XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24obmFtZSkge1xuICAvLyBUaGUgcm9vdCBvZiB0aGUgZGV2aWNlIGV4aXN0c1xuICBpZihuYW1lID09IFwiXCIpIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGRpcmVjdG9yeSBleGlzdHNcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF0pIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGZpbGUgZXhpc3RzXG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNGaWxlID0gZnVuY3Rpb24obmFtZSkge1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSAmJiAhdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICByZXR1cm4gMVxuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiAwXG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFRVhJU1RcIiwgXCJta2RpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBGaWxlIGV4aXN0c1wiKTtcbiAgICB9XG4gIH1cbiAgdmFyIHBhcmVudCA9IC9eKC4qKVxcL1teL10rLy5leGVjKG5hbWUpO1xuICBwYXJlbnQgPSAocGFyZW50ICYmIHBhcmVudFsxXSkgfHwgJyc7XG4gIGlmKCF0aGlzLmV4aXN0cyhwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwibWtkaXJcIiwgdGhpcy5ubShwYXJlbnQpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IocGFyZW50ICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQodGhpcy5zbGFzaChuYW1lKSk7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9FTlRcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIGlmKG4ubWF0Y2gocikpIHtcbiAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RFTVBUWVwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIjogRGlyZWN0b3J5IG5vdCBlbXB0eVwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG5hbWVfc2xhc2ggPSAobmFtZSA9PSBcIlwiKT9cIlwiOih0aGlzLnNsYXNoKG5hbWUpKTtcbiAgaWYoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICB9XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIHZhciBzZWVuID0ge31cbiAgdmFyIGEgPSBbXTtcbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIHZhciBtID0gbi5tYXRjaChyKTtcbiAgICBpZihtICYmICFzZWVuW21bMV1dKSB7c2VlblttWzFdXSA9IHRydWU7IGEucHVzaChtWzFdKX1cbiAgfVxuICByZXR1cm4gYTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbmRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuXG4gIHZhciBhID0gdGhpcy5yZWFkZGlyKG5hbWUpO1xuICB2YXIgYyA9IGZhbHNlO1xuICB2YXIgaSA9IDA7XG4gIHJldHVybiB7IHJlYWRTeW5jIDogKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoYykge1xuICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBjbG9zZWRpciBmYWlsZWRcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmKGkgPT0gYS5sZW5ndGgpIHJldHVybiBudWxsO1xuICAgIHZhciBlbnRyeSA9IGFbaV07XG4gICAgaSsrO1xuICAgIHJldHVybiB7IG5hbWU6IGVudHJ5IH1cbiAgfSlcbiAgICAsIGNsb3NlU3luYzogKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChjKSB7XG4gICAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBjbG9zZWRpciBmYWlsZWRcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGMgPSB0cnVlO1xuICAgICAgYSA9IFtdO1xuICAgIH0pXG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICBpZihuYW1lID09IFwiXCIpICByZXR1cm4gdHJ1ZTtcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVfc2xhc2hdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgb2sgPSB0aGlzLmNvbnRlbnRbbmFtZV0/dHJ1ZTpmYWxzZTtcbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lXTtcbiAgcmV0dXJuIG9rO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZikge1xuICB2YXIgZmlsZTtcbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgaWYgKHRoaXMuY29udGVudFtuYW1lXSkge1xuICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogaXMgYSBkaXJlY3RvcnlcIik7XG4gICAgaWYgKGYuY3JlYXRlICYmIGYuZXhjbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICAgIGlmKGYudHJ1bmNhdGUpIGZpbGUudHJ1bmNhdGUoKTtcbiAgfSBlbHNlIGlmIChmLmNyZWF0ZSkge1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUgKHRoaXMubm0obmFtZSkpO1xuICB9XG4gIHJldHVybiBuZXcgTWxGYWtlRmQodGhpcy5ubShuYW1lKSwgZmlsZSwgZik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgdmFyIGZpbGU7XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGlzIGEgZGlyZWN0b3J5XCIpO1xuICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sRmFrZUZkKHRoaXMubm0obmFtZSksIGZpbGUsIGYpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlZ2lzdGVyPSBmdW5jdGlvbiAobmFtZSxjb250ZW50KXtcbiAgdmFyIGZpbGU7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lXSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgaWYoY2FtbF9pc19tbF9ieXRlcyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY29udGVudCk7XG4gIGlmKGNhbWxfaXNfbWxfc3RyaW5nKGNvbnRlbnQpKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudCBpbnN0YW5jZW9mIEFycmF5KVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX2FycmF5KGNvbnRlbnQpKTtcbiAgZWxzZSBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNvbnRlbnQpKTtcbiAgZWxzZSBpZihjb250ZW50LnRvU3RyaW5nKSB7XG4gICAgdmFyIGJ5dGVzID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoY29udGVudC50b1N0cmluZygpKSk7XG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGJ5dGVzKTtcbiAgfVxuICBpZihmaWxlKXtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IGZpbGU7XG4gIH1cbiAgZWxzZSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiByZWdpc3RlcmluZyBmaWxlIHdpdGggaW52YWxpZCBjb250ZW50IHR5cGVcIik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VEZXZpY2VcblxuLy9Qcm92aWRlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogTWxGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYmxpdF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gTWxGYWtlRmlsZShjb250ZW50KXtcbiAgdGhpcy5kYXRhID0gY29udGVudDtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcbk1sRmFrZUZpbGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRmlsZVxuTWxGYWtlRmlsZS5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB2YXIgb2xkID0gdGhpcy5kYXRhO1xuICB0aGlzLmRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gIGNhbWxfYmxpdF9ieXRlcyhvbGQsIDAsIHRoaXMuZGF0YSwgMCwgbGVuKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHRoaXMuZGF0YSk7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgaWYob2Zmc2V0ICsgbGVuID49IGNsZW4pIHtcbiAgICB2YXIgbmV3X3N0ciA9IGNhbWxfY3JlYXRlX2J5dGVzKG9mZnNldCArIGxlbik7XG4gICAgdmFyIG9sZF9kYXRhID0gdGhpcy5kYXRhO1xuICAgIHRoaXMuZGF0YSA9IG5ld19zdHI7XG4gICAgY2FtbF9ibGl0X2J5dGVzKG9sZF9kYXRhLCAwLCB0aGlzLmRhdGEsIDAsIGNsZW4pO1xuICB9XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIHBvcywgdGhpcy5kYXRhLCBvZmZzZXQsIGxlbik7XG4gIHJldHVybiAwXG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBpZihvZmZzZXQgKyBsZW4gPj0gY2xlbikge1xuICAgIGxlbiA9IGNsZW4gLSBvZmZzZXQ7XG4gIH1cbiAgaWYobGVuKSB7XG4gICAgdmFyIGRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gICAgY2FtbF9ibGl0X2J5dGVzKHRoaXMuZGF0YSwgb2Zmc2V0LCBkYXRhLCAwLCBsZW4pO1xuICAgIGJ1Zi5zZXQoY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhkYXRhKSwgcG9zKTtcbiAgfVxuICByZXR1cm4gbGVuXG59XG5cblxuLy9Qcm92aWRlczogTWxGYWtlRmRfb3V0XG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxGYWtlRmRfb3V0KGZkLGZsYWdzKSB7XG4gIE1sRmFrZUZpbGUuY2FsbCh0aGlzLCBjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gIHRoaXMubG9nID0gKGZ1bmN0aW9uIChzKSB7IHJldHVybiAwIH0pO1xuICBpZihmZCA9PSAxICYmIHR5cGVvZiBjb25zb2xlLmxvZyA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmxvZztcbiAgZWxzZSBpZihmZCA9PSAyICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUuZXJyb3I7XG4gIGVsc2UgaWYodHlwZW9mIGNvbnNvbGUubG9nID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUubG9nXG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7IHJldHVybiAwIH1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAob2Zmc2V0LGJ1Zixwb3MsbGVuKSB7XG4gIGlmKHRoaXMubG9nKSB7XG4gICAgaWYobGVuID4gMFxuICAgICAgICYmIHBvcyA+PSAwXG4gICAgICAgJiYgcG9zK2xlbiA8PSBidWYubGVuZ3RoXG4gICAgICAgJiYgYnVmW3BvcytsZW4tMV0gPT0gMTApXG4gICAgICBsZW4gLS07XG4gICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgIC8vIGFzIGNvbnNvbGUgbG9nZ2luZyBkaXNwbGF5IGEgbmV3bGluZSBhdCB0aGUgZW5kXG4gICAgdmFyIHNyYyA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbik7XG4gICAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoYnVmKSwgcG9zLCBzcmMsIDAsIGxlbik7XG4gICAgdGhpcy5sb2coc3JjLnRvVXRmMTYoKSk7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5mZCAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGFscmVhZHkgY2xvc2VkXCIpO1xufVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG9mZnNldCwgYnVmLCBwb3MsIGxlbikge1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLmZkICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgaXMgd3JpdGUgb25seVwiKTtcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubG9nID0gdW5kZWZpbmVkO1xufVxuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxGYWtlRmQobmFtZSwgZmlsZSxmbGFncykge1xuICB0aGlzLmZpbGUgPSBmaWxlO1xuICB0aGlzLm5hbWUgPSBuYW1lO1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5cbk1sRmFrZUZkLnByb3RvdHlwZS5lcnJfY2xvc2VkID0gZnVuY3Rpb24gKCkge1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5hbWUgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBhbHJlYWR5IGNsb3NlZFwiKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLmxlbmd0aCAoKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChvZmZzZXQsYnVmLHBvcyxsZW4pIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLndyaXRlKG9mZnNldCxidWYscG9zLGxlbilcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLnJlYWQob2Zmc2V0LCBidWYsIHBvcywgbGVuKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5maWxlID0gdW5kZWZpbmVkO1xufVxuIiwiLy9Qcm92aWRlczogaW5pdGlhbGl6ZV9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogc2VyaWFsaXplX25hdCwgZGVzZXJpYWxpemVfbmF0LCBjYW1sX2hhc2hfbmF0XG5mdW5jdGlvbiBpbml0aWFsaXplX25hdCgpIHtcbiAgY2FtbF9jdXN0b21fb3BzW1wiX25hdFwiXSA9XG4gICAgeyBkZXNlcmlhbGl6ZSA6IGRlc2VyaWFsaXplX25hdCxcbiAgICAgIHNlcmlhbGl6ZSA6IHNlcmlhbGl6ZV9uYXQsXG4gICAgICBoYXNoIDogY2FtbF9oYXNoX25hdFxuICAgIH1cbn1cblxuLy9Qcm92aWRlczogTWxOYXRcbmZ1bmN0aW9uIE1sTmF0KHgpe1xuICB0aGlzLmRhdGEgPSBuZXcgSW50MzJBcnJheSh4KTtcbiAgLy8gRm9yIG51bSA8IDEuNVxuICAvLyBsZW5ndGhfbmF0IGlzbid0IGV4dGVybmFsLCBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhlIE9iai5zaXplXG4gIC8vIHdvcmsgb3V0IHJpZ2h0LlxuICAvLyBXZSBhZGQgKzIgdG8gdGhlIGFycmF5IGxlbmd0aDpcbiAgLy8gLSArMSBmb3IgdGhlIHRhZ1xuICAvLyAtICsxIGZvciB0aGUgY3VzdG9tX29wcyBzbG90XG4gIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aCArIDJcbn1cblxuTWxOYXQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfbmF0XCI7XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY2FtbF9oYXNoX25hdCh4KSB7XG4gIHZhciBsZW4gPSBudW1fZGlnaXRzX25hdCh4LCAwLCB4LmRhdGEubGVuZ3RoKTtcbiAgdmFyIGggPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHguZGF0YVtpXSk7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGxlbmd0aF9uYXRcbmZ1bmN0aW9uIGxlbmd0aF9uYXQoeCkge1xuICByZXR1cm4geC5kYXRhLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogbmF0X29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gbmF0X29mX2FycmF5KGwpe1xuICByZXR1cm4gbmV3IE1sTmF0KGwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjcmVhdGVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gY3JlYXRlX25hdChzaXplKSB7XG4gIHZhciBhcnIgPSBuZXcgTWxOYXQoc2l6ZSk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICBhcnIuZGF0YVtpXSA9IC0xO1xuICB9XG4gIHJldHVybiBhcnI7XG59XG5cbi8vUHJvdmlkZXM6IHNldF90b196ZXJvX25hdFxuZnVuY3Rpb24gc2V0X3RvX3plcm9fbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmxpdF9uYXRcbmZ1bmN0aW9uIGJsaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IG5hdDIuZGF0YVtvZnMyK2ldO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfZGlnaXRfbmF0XG5mdW5jdGlvbiBzZXRfZGlnaXRfbmF0KG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0XG5mdW5jdGlvbiBudGhfZGlnaXRfbmF0KG5hdCwgb2ZzKSB7XG4gIHJldHVybiBuYXQuZGF0YVtvZnNdO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMsIGRpZ2l0KSB7XG4gIG5hdC5kYXRhW29mc10gPSBkaWdpdDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG50aF9kaWdpdF9uYXRfbmF0aXZlXG5mdW5jdGlvbiBudGhfZGlnaXRfbmF0X25hdGl2ZShuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIG51bV9kaWdpdHNfbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZihuYXQuZGF0YVtvZnMraV0gIT0gMCkgcmV0dXJuIGkrMTtcbiAgfVxuICByZXR1cm4gMTsgLy8gMCBjb3VudHMgYXMgMSBkaWdpdFxufVxuXG4vL1Byb3ZpZGVzOiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXRcbmZ1bmN0aW9uIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdChuYXQsIG9mcykge1xuICB2YXIgYSA9IG5hdC5kYXRhW29mc107XG4gIHZhciBiID0gMDtcbiAgaWYoYSAmIDB4RkZGRjAwMDApIHsgYiArPTE2OyBhID4+Pj0xNjsgfVxuICBpZihhICYgMHhGRjAwKSAgICAgeyBiICs9IDg7IGEgPj4+PSA4OyB9XG4gIGlmKGEgJiAweEYwKSAgICAgICB7IGIgKz0gNDsgYSA+Pj49IDQ7IH1cbiAgaWYoYSAmIDEyKSAgICAgICAgIHsgYiArPSAyOyBhID4+Pj0gMjsgfVxuICBpZihhICYgMikgICAgICAgICAgeyBiICs9IDE7IGEgPj4+PSAxOyB9XG4gIGlmKGEgJiAxKSAgICAgICAgICB7IGIgKz0gMTsgfVxuICByZXR1cm4gMzIgLSBiO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF9pbnRcbmZ1bmN0aW9uIGlzX2RpZ2l0X2ludChuYXQsIG9mcykge1xuICBpZiAobmF0LmRhdGFbb2ZzXSA+PSAwKSByZXR1cm4gMVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfemVyb1xuZnVuY3Rpb24gaXNfZGlnaXRfemVybyhuYXQsIG9mcykge1xuICBpZihuYXQuZGF0YVtvZnNdID09IDApIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfb2RkXG5mdW5jdGlvbiBpc19kaWdpdF9vZGQobmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSAmIDEpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaW5jcl9uYXRcbmZ1bmN0aW9uIGluY3JfbmF0KG5hdCwgb2ZzLCBsZW4sIGNhcnJ5X2luKSB7XG4gIHZhciBjYXJyeSA9IGNhcnJ5X2luO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQuZGF0YVtvZnMraV0gPj4+IDApICsgY2Fycnk7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gKHggfCAwKTtcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcnJ5ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IGFkZF9uYXRcbi8vUmVxdWlyZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBhZGRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIGNhcnJ5X2luKSB7XG4gIHZhciBjYXJyeSA9IGNhcnJ5X2luO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApICsgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geFxuICAgIGlmKHggPT0gKHggPj4+IDApKSB7XG4gICAgICBjYXJyeSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcnJ5ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBjYXJyeSk7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBsZW1lbnRfbmF0XG5mdW5jdGlvbiBjb21wbGVtZW50X25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICgtMSA+Pj4gMCkgLSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKTtcbiAgfVxufVxuXG4vLyBvY2FtbCBmbGlwcyBjYXJyeV9pblxuLy9Qcm92aWRlczogZGVjcl9uYXRcbmZ1bmN0aW9uIGRlY3JfbmF0KG5hdCwgb2ZzLCBsZW4sIGNhcnJ5X2luKSB7XG4gIHZhciBib3Jyb3cgPSAoY2FycnlfaW4gPT0gMSkgPyAwIDogMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PjApIC0gYm9ycm93O1xuICAgIG5hdC5kYXRhW29mcytpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gKGJvcnJvdyA9PSAxKSA/IDAgOiAxO1xufVxuXG4vLyBvY2FtbCBmbGlwcyBjYXJyeV9pblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBzdWJfbmF0XG4vL1JlcXVpcmVzOiBkZWNyX25hdFxuZnVuY3Rpb24gc3ViX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgLSAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApIC0gYm9ycm93O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geDtcbiAgICBpZiAoeCA+PSAwKSB7XG4gICAgICBib3Jyb3cgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGVjcl9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIChib3Jyb3c9PTEpPzA6MSk7XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNbb2ZzM11cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogbXVsdF9kaWdpdF9uYXRcbi8vUmVxdWlyZXM6IGFkZF9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gbXVsdF9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMykge1xuICB2YXIgY2FycnkgPSAwO1xuICB2YXIgYSA9IChuYXQzLmRhdGFbb2ZzM10gPj4+IDApO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHgxID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSAmIDB4MDAwMEZGRkYpICsgY2Fycnk7XG4gICAgdmFyIHgyID0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAqIChhID4+PiAxNik7XG4gICAgY2FycnkgPSBNYXRoLmZsb29yKHgyLzY1NTM2KTtcbiAgICB2YXIgeDMgPSB4MSArICh4MiAlIDY1NTM2KSAqIDY1NTM2O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geDM7XG4gICAgY2FycnkgKz0gTWF0aC5mbG9vcih4My80Mjk0OTY3Mjk2KTtcbiAgfVxuXG4gIGlmKGxlbjIgPCBsZW4xICYmIGNhcnJ5KSB7XG4gICAgcmV0dXJuIGFkZF9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIG5hdF9vZl9hcnJheShbY2FycnldKSwgMCwgMSwgMCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNhcnJ5O1xuICB9XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNcbi8vIGxlbjEgPj0gbGVuMiArIGxlbjMuXG4vL1Byb3ZpZGVzOiBtdWx0X25hdFxuLy9SZXF1aXJlczogbXVsdF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMsIGxlbjMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjM7IGkrKykge1xuICAgIGNhcnJ5ICs9IG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEraSwgbGVuMS1pLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzK2kpO1xuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbmF0MSA9IDIgKiBuYXQxICsgbmF0MiAqIG5hdDJcbi8vIGxlbjEgPj0gMiAqIGxlbjJcbi8vUHJvdmlkZXM6IHNxdWFyZV9uYXRcbi8vUmVxdWlyZXM6IG11bHRfbmF0LCBhZGRfbmF0XG5mdW5jdGlvbiBzcXVhcmVfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgY2FycnkgKz0gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQxLCBvZnMxLCBsZW4xLCAwKTtcbiAgY2FycnkgKz0gbXVsdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMik7XG4gIHJldHVybiBjYXJyeTtcbn1cblxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X2xlZnRfbmF0XG5mdW5jdGlvbiBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICB2YXIgYSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCk7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSAoYSA8PCBuYml0cykgfCB3cmFwO1xuICAgIHdyYXAgPSBhID4+PiAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIEFzc3VtaW5nIGMgPiBhLCByZXR1cm5zIFtxdW90aWVudCwgcmVtYWluZGVyXSBvZiAoYTw8MzIgKyBiKS9jXG4vL1Byb3ZpZGVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfaGVscGVyKGEsIGIsIGMpIHtcbiAgdmFyIHggPSBhICogNjU1MzYgKyAoYj4+PjE2KTtcbiAgdmFyIHkgPSBNYXRoLmZsb29yKHgvYykgKiA2NTUzNjtcbiAgdmFyIHogPSAoeCAlIGMpICogNjU1MzY7XG4gIHZhciB3ID0geiArIChiICYgMHgwMDAwRkZGRik7XG4gIHJldHVybiBbeSArIE1hdGguZmxvb3Iody9jKSwgdyAlIGNdO1xufVxuXG4vLyBuYXQxW29mczErbGVuXSA8IG5hdDJbb2ZzMl1cbi8vUHJvdmlkZXM6IGRpdl9kaWdpdF9uYXRcbi8vUmVxdWlyZXM6IGRpdl9oZWxwZXJcbmZ1bmN0aW9uIGRpdl9kaWdpdF9uYXQobmF0cSwgb2ZzcSwgbmF0ciwgb2ZzciwgbmF0MSwgb2ZzMSwgbGVuLCBuYXQyLCBvZnMyKSB7XG4gIHZhciByZW0gPSAobmF0MS5kYXRhW29mczErbGVuLTFdID4+PjApO1xuICAvLyBuYXRxW29mc3ErbGVuLTFdIGlzIGd1YXJhbnRlZWQgdG8gYmUgemVybyAoZHVlIHRvIHRoZSBNU0QgcmVxdWlyZW1lbnQpLFxuICAvLyBhbmQgc2hvdWxkIG5vdCBiZSB3cml0dGVuIHRvLlxuICBmb3IodmFyIGkgPSBsZW4tMjsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgeCA9IGRpdl9oZWxwZXIocmVtLCAobmF0MS5kYXRhW29mczEraV0gPj4+IDApLCAobmF0Mi5kYXRhW29mczJdID4+PiAwKSk7XG4gICAgbmF0cS5kYXRhW29mc3EraV0gPSB4WzBdO1xuICAgIHJlbSA9IHhbMV07XG4gIH1cbiAgbmF0ci5kYXRhW29mc3JdID0gcmVtO1xuICByZXR1cm4gMDtcbn1cblxuLy8gbmF0MVtuYXQyOl0gOj0gbmF0MSAvIG5hdDJcbi8vIG5hdDFbOm5hdDJdIDo9IG5hdDEgJSBuYXQyXG4vLyBsZW4xID4gbGVuMiwgbmF0MltvZnMyK2xlbjItMV0gPiBuYXQxW29mczErbGVuMS0xXVxuLy9Qcm92aWRlczogZGl2X25hdFxuLy9SZXF1aXJlczogZGl2X2RpZ2l0X25hdCwgZGl2X2hlbHBlciwgbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0LCBzaGlmdF9sZWZ0X25hdCwgc2hpZnRfcmlnaHRfbmF0LCBjcmVhdGVfbmF0LCBzZXRfdG9femVyb19uYXQsIG11bHRfZGlnaXRfbmF0LCBzdWJfbmF0LCBjb21wYXJlX25hdCwgbmF0X29mX2FycmF5XG5mdW5jdGlvbiBkaXZfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgaWYobGVuMiA9PSAxKSB7XG4gICAgZGl2X2RpZ2l0X25hdChuYXQxLCBvZnMxKzEsIG5hdDEsIG9mczEsIG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIpO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdmFyIHMgPSBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0Miwgb2ZzMitsZW4yLTEpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG4gIHNoaWZ0X2xlZnRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTtcblxuICB2YXIgZCA9IChuYXQyLmRhdGFbb2ZzMitsZW4yLTFdID4+PiAwKSArIDE7XG4gIHZhciBhID0gY3JlYXRlX25hdChsZW4yKzEpO1xuICBmb3IgKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gbGVuMjsgaS0tKSB7XG4gICAgLy8gRGVjZW50IGxvd2VyIGJvdW5kIG9uIHF1b1xuICAgIHZhciBxdW8gPSBkID09IDQyOTQ5NjcyOTYgPyAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIDogZGl2X2hlbHBlcigobmF0MS5kYXRhW29mczEraV0gPj4+IDApLCAobmF0MS5kYXRhW29mczEraS0xXSA+Pj4wKSwgZClbMF07XG4gICAgc2V0X3RvX3plcm9fbmF0KGEsIDAsIGxlbjIrMSk7XG4gICAgbXVsdF9kaWdpdF9uYXQoYSwgMCwgbGVuMisxLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoW3F1b10pLCAwKTtcbiAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIGEsIDAsIGxlbjIrMSwgMSk7XG5cbiAgICB3aGlsZSAobmF0MS5kYXRhW29mczEraV0gIT0gMCB8fCBjb21wYXJlX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMikgPj0gMCkge1xuICAgICAgcXVvID0gcXVvICsgMTtcbiAgICAgIHN1Yl9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgMSk7XG4gICAgfVxuXG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBxdW87XG4gIH1cblxuICBzaGlmdF9yaWdodF9uYXQobmF0MSwgb2ZzMSwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpOyAvLyBzaGlmdCByZW1haW5kZXJcbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDIsIG9mczIsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gcmVzdG9yZVxuICByZXR1cm4gMDtcbn1cblxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X3JpZ2h0X25hdFxuZnVuY3Rpb24gc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIG5iaXRzKSB7XG4gIGlmKG5iaXRzID09IDApIHtcbiAgICBuYXQyLmRhdGFbb2ZzMl0gPSAwO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciB3cmFwID0gMDtcbiAgZm9yKHZhciBpID0gbGVuMS0xOyBpID49IDA7IGktLSkge1xuICAgIHZhciBhID0gbmF0MS5kYXRhW29mczEraV0gPj4+IDA7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSAoYSA+Pj4gbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA8PCAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgaWYobmF0MS5kYXRhW29mczFdID4gbmF0Mi5kYXRhW29mczJdKSByZXR1cm4gMTtcbiAgaWYobmF0MS5kYXRhW29mczFdIDwgbmF0Mi5kYXRhW29mczJdKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX25hdFxuLy9SZXF1aXJlczogbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgdmFyIGEgPSBudW1fZGlnaXRzX25hdChuYXQxLCBvZnMxLCBsZW4xKTtcbiAgdmFyIGIgPSBudW1fZGlnaXRzX25hdChuYXQyLCBvZnMyLCBsZW4yKTtcbiAgaWYoYSA+IGIpIHJldHVybiAxO1xuICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICBmb3IodmFyIGkgPSBsZW4xIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA+IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAxO1xuICAgIGlmICgobmF0MS5kYXRhW29mczEraV0gPj4+IDApIDwgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSkgcmV0dXJuIC0xO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX25hdF9yZWFsXG4vL1JlcXVpcmVzOiBjb21wYXJlX25hdFxuZnVuY3Rpb24gY29tcGFyZV9uYXRfcmVhbChuYXQxLG5hdDIpe1xuICByZXR1cm4gY29tcGFyZV9uYXQobmF0MSwwLG5hdDEuZGF0YS5sZW5ndGgsbmF0MiwwLG5hdDIuZGF0YS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBsYW5kX2RpZ2l0X25hdFxuZnVuY3Rpb24gbGFuZF9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gJj0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbG9yX2RpZ2l0X25hdFxuZnVuY3Rpb24gbG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSB8PSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBseG9yX2RpZ2l0X25hdFxuZnVuY3Rpb24gbHhvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gXj0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBzZXJpYWxpemVfbmF0XG5mdW5jdGlvbiBzZXJpYWxpemVfbmF0KHdyaXRlciwgbmF0LCBzeil7XG4gIHZhciBsZW4gPSBuYXQuZGF0YS5sZW5ndGg7XG4gIHdyaXRlci53cml0ZSgzMiwgbGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICB3cml0ZXIud3JpdGUoMzIsIG5hdC5kYXRhW2ldKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHN6WzFdID0gbGVuICogODtcbn1cblxuLy9Qcm92aWRlczogZGVzZXJpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gZGVzZXJpYWxpemVfbmF0KHJlYWRlciwgc3ope1xuICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIG5hdCA9IG5ldyBNbE5hdChsZW4pO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIG5hdC5kYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHJldHVybiBuYXQ7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG5cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlXG52YXIgY2FtbF9ncl9zdGF0ZTtcblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9nZXQoKSB7XG4gIGlmKGNhbWxfZ3Jfc3RhdGUpIHtcbiAgICByZXR1cm4gY2FtbF9ncl9zdGF0ZTtcbiAgfVxuICB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsY2FtbF9uYW1lZF92YWx1ZShcIkdyYXBoaWNzLkdyYXBoaWNfZmFpbHVyZVwiKSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIk5vdCBpbml0aWFsaXplZFwiKV0pO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGUsY2FtbF9ncl9zdGF0ZV9pbml0XG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX3NldChjdHgpIHtcbiAgY2FtbF9ncl9zdGF0ZT1jdHg7XG4gIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9ncmFwaChpbmZvKXtcbiAgdmFyIGluZm8gPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhpbmZvKTtcbiAgZnVuY3Rpb24gZ2V0KG5hbWUpe1xuICAgIHZhciByZXMgPSBpbmZvLm1hdGNoKFwiKF58LCkgKlwiK25hbWUrXCIgKj0gKihbYS16QS1aMC05X10rKSAqKCx8JClcIik7XG4gICAgaWYocmVzKSByZXR1cm4gcmVzWzJdO1xuICB9XG4gIHZhciBzcGVjcyA9IFtdO1xuICBpZighKGluZm89PVwiXCIpKSBzcGVjcy5wdXNoKGluZm8pO1xuICB2YXIgdGFyZ2V0ID0gZ2V0KFwidGFyZ2V0XCIpO1xuICBpZighdGFyZ2V0KSB0YXJnZXQ9XCJcIjtcbiAgdmFyIHN0YXR1cyA9IGdldChcInN0YXR1c1wiKTtcbiAgaWYoIXN0YXR1cykgc3BlY3MucHVzaChcInN0YXR1cz0xXCIpXG5cbiAgdmFyIHcgPSBnZXQoXCJ3aWR0aFwiKTtcbiAgdyA9IHc/cGFyc2VJbnQodyk6MjAwO1xuICBzcGVjcy5wdXNoKFwid2lkdGg9XCIrdyk7XG5cbiAgdmFyIGggPSBnZXQoXCJoZWlnaHRcIik7XG4gIGggPSBoP3BhcnNlSW50KGgpOjIwMDtcbiAgc3BlY3MucHVzaChcImhlaWdodD1cIitoKTtcblxuICB2YXIgd2luID0gZ2xvYmFsVGhpcy5vcGVuKFwiYWJvdXQ6YmxhbmtcIix0YXJnZXQsc3BlY3Muam9pbihcIixcIikpO1xuICBpZighd2luKSB7Y2FtbF9mYWlsd2l0aChcIkdyYXBoaWNzLm9wZW5fZ3JhcGg6IGNhbm5vdCBvcGVuIHRoZSB3aW5kb3dcIil9XG4gIHZhciBkb2MgPSB3aW4uZG9jdW1lbnQ7XG4gIHZhciBjYW52YXMgPSBkb2MuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY2FudmFzLndpZHRoID0gdztcbiAgY2FudmFzLmhlaWdodCA9IGg7XG4gIHZhciBjdHggPSBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsdyxoKTtcbiAgY3R4LnNldF90aXRsZSA9IGZ1bmN0aW9uICh0aXRsZSkge1xuICAgIGRvYy50aXRsZSA9IHRpdGxlO1xuICB9O1xuICBjYW1sX2dyX3N0YXRlX3NldChjdHgpO1xuICB2YXIgYm9keSA9IGRvYy5ib2R5O1xuICBib2R5LnN0eWxlLm1hcmdpbiA9IFwiMHB4XCI7XG4gIGJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfaW5pdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfY29sb3IsY2FtbF9ncl9tb3ZldG8sY2FtbF9ncl9yZXNpemVfd2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9saW5lX3dpZHRoLGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSxjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGVcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpe1xuICBjYW1sX2dyX21vdmV0byhjYW1sX2dyX3N0YXRlLngsY2FtbF9ncl9zdGF0ZS55KTtcbiAgY2FtbF9ncl9yZXNpemVfd2luZG93KGNhbWxfZ3Jfc3RhdGUud2lkdGgsY2FtbF9ncl9zdGF0ZS5oZWlnaHQpO1xuICBjYW1sX2dyX3NldF9saW5lX3dpZHRoKGNhbWxfZ3Jfc3RhdGUubGluZV93aWR0aCk7XG4gIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShjYW1sX2dyX3N0YXRlLnRleHRfc2l6ZSk7XG4gIGNhbWxfZ3Jfc2V0X2ZvbnQoY2FtbF9ncl9zdGF0ZS5mb250KTtcbiAgY2FtbF9ncl9zZXRfY29sb3IoY2FtbF9ncl9zdGF0ZS5jb2xvcik7XG4gIGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZShjYW1sX2dyX3N0YXRlLnRpdGxlKTtcbiAgLy9jYW1sX2dyX3Jlc2l6ZV93aW5kb3cgbWlnaHQgcmVzZXQgc29tZSBjYW52YXMnIHByb3BlcnRpZXNcbiAgY2FtbF9ncl9zdGF0ZS5jb250ZXh0LnRleHRCYXNlbGluZSA9ICdib3R0b20nO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCl7XG4gIHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgIGNhbnZhcyA6IGNhbnZhcyxcbiAgICB4IDogMCxcbiAgICB5IDogMCxcbiAgICB3aWR0aCA6IHcsXG4gICAgaGVpZ2h0IDogaCxcbiAgICBsaW5lX3dpZHRoIDogMSxcbiAgICBmb250IDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImZpeGVkXCIpLFxuICAgIHRleHRfc2l6ZSA6IDI2LFxuICAgIGNvbG9yIDogMHgwMDAwMDAsXG4gICAgdGl0bGUgOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpXG4gIH07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZG9jX29mX3N0YXRlXG5mdW5jdGlvbiBjYW1sX2dyX2RvY19vZl9zdGF0ZShzdGF0ZSkge1xuICBpZihzdGF0ZS5jYW52YXMub3duZXJEb2N1bWVudClcbiAgICByZXR1cm4gc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2VfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSAwO1xuICBzLmNhbnZhcy5oZWlnaHQgPSAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZShuYW1lKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRpdGxlID0gbmFtZTtcbiAgdmFyIGpzbmFtZSA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZihzLnNldF90aXRsZSkgcy5zZXRfdGl0bGUoanNuYW1lKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyh3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KClcbiAgcy53aWR0aCA9IHc7XG4gIHMuaGVpZ2h0ID0gaDtcbiAgcy5jYW52YXMud2lkdGggPSB3O1xuICBzLmNhbnZhcy5oZWlnaHQgPSBoO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbGVhcl9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xlYXJfZ3JhcGgoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNhbnZhcy53aWR0aCA9IHMud2lkdGg7XG4gIHMuY2FudmFzLmhlaWdodCA9IHMuaGVpZ2h0O1xuICAvLyAgcy5jb250ZXh0LnN0cm9rZVJlY3QgKDAuLCAwLiwgcy53aWR0aCwgcy5oZWlnaHQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLndpZHRoO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3lcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeSgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmhlaWdodDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2NvbG9yKGNvbG9yKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBmdW5jdGlvbiBjb252ZXJ0KG51bWJlcikge1xuICAgIHZhciBzdHIgPSAnJyArIG51bWJlci50b1N0cmluZygxNik7XG4gICAgd2hpbGUgKHN0ci5sZW5ndGggPCAyKSBzdHIgPSAnMCcgKyBzdHI7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICB2YXJcbiAgciA9IChjb2xvciA+PiAxNikgJiAweGZmLFxuICBnID0gKGNvbG9yID4+IDgpICAmIDB4ZmYsXG4gIGIgPSAoY29sb3IgPj4gMCkgICYgMHhmZjtcbiAgcy5jb2xvcj1jb2xvcjtcbiAgdmFyIGNfc3RyID0gJyMnICsgY29udmVydChyKSArIGNvbnZlcnQoZykgKyBjb252ZXJ0KGIpO1xuICBzLmNvbnRleHQuZmlsbFN0eWxlID0gICBjX3N0cjtcbiAgcy5jb250ZXh0LnN0cm9rZVN0eWxlID0gY19zdHI7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9wbG90XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wbG90KHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltPXMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEoMSwxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICB2YXIgY29sb3IgPSBzLmNvbG9yO1xuICBkWzBdID0gKGNvbG9yID4+IDE2KSAmIDB4ZmY7IC8vclxuICBkWzFdID0gKGNvbG9yID4+IDgpICAmIDB4ZmYsIC8vZ1xuICBkWzJdID0gKGNvbG9yID4+IDApICAmIDB4ZmY7IC8vYlxuICBkWzNdID0gMHhGRjsgLy9hXG4gIHMueD14O1xuICBzLnk9eTtcbiAgcy5jb250ZXh0LnB1dEltYWdlRGF0YShpbSx4LHMuaGVpZ2h0IC0geSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3BvaW50X2NvbG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wb2ludF9jb2xvcih4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuZ2V0SW1hZ2VEYXRhKHgscy5oZWlnaHQgLSB5LDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgcmV0dXJuIChkWzBdIDw8IDE2KSArIChkWzFdIDw8IDgpICsgZFsyXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbW92ZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tb3ZldG8oeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLng9eDtcbiAgcy55PXk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2N1cnJlbnRfeFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3VycmVudF94KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueFxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3lcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeSgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnlcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbGluZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9saW5ldG8oeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8ocy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy5jb250ZXh0LmxpbmVUbyh4LHMuaGVpZ2h0IC0geSk7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3JlY3QoeCx5LHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LnN0cm9rZVJlY3QoeCxzLmhlaWdodCAtIHksdywtaCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfYXJjX2F1eChjdHgsY3gsY3kscnkscngsYTEsYTIpe1xuICB3aGlsZShhMT5hMikgYTIrPTM2MDtcbiAgYTEgLz0gMTgwO1xuICBhMiAvPSAxODA7XG4gIHZhciByb3QgPSAwLHhQb3MseVBvcyx4UG9zX3ByZXYseVBvc19wcmV2O1xuICB2YXIgc3BhY2UgPSAyO1xuICB2YXIgbnVtID0gKCgoYTIgLSBhMSkgKiBNYXRoLlBJICogKChyeCtyeSkvMikpIC8gc3BhY2UpIHwgMDtcbiAgdmFyIGRlbHRhID0gKGEyIC0gYTEpICogTWF0aC5QSSAvIG51bTtcbiAgdmFyIGkgPSBhMSAqIE1hdGguUEk7XG4gIGZvciAodmFyIGo9MDtqPD1udW07aisrKXtcbiAgICB4UG9zID0gY3ggLSAocnggKiBNYXRoLnNpbihpKSkgKiBNYXRoLnNpbihyb3QgKiBNYXRoLlBJKSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHhQb3MgPSB4UG9zLnRvRml4ZWQoMik7XG4gICAgeVBvcyA9IGN5ICsgKHJ5ICogTWF0aC5jb3MoaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnggKiBNYXRoLnNpbihpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB5UG9zID0geVBvcy50b0ZpeGVkKDIpO1xuICAgIGlmIChqPT0wKSB7XG4gICAgICBjdHgubW92ZVRvKHhQb3MsIHlQb3MpO1xuICAgIH0gZWxzZSBpZiAoeFBvc19wcmV2IT14UG9zIHx8IHlQb3NfcHJldiE9eVBvcyl7XG4gICAgICBjdHgubGluZVRvKHhQb3MsIHlQb3MpO1xuICAgIH1cbiAgICB4UG9zX3ByZXY9eFBvcztcbiAgICB5UG9zX3ByZXY9eVBvcztcbiAgICBpLT0gZGVsdGE7Ly9jY3dcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfYXJjKHgseSxyeCxyeSxhMSxhMil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LHgscy5oZWlnaHQgLSB5LHJ4LHJ5LGExLGEyKTtcbiAgcy5jb250ZXh0LnN0cm9rZSgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgodyl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5saW5lX3dpZHRoID0gdztcbiAgcy5jb250ZXh0LmxpbmVXaWR0aCA9IHdcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3JlY3QoeCx5LHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmZpbGxSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9wb2x5XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3BvbHkoYXIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhhclsxXVsxXSxzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgZm9yKHZhciBpID0gMjsgaSA8IGFyLmxlbmd0aDsgaSsrKVxuICAgIHMuY29udGV4dC5saW5lVG8oYXJbaV1bMV0scy5oZWlnaHQgLSBhcltpXVsyXSk7XG4gIHMuY29udGV4dC5saW5lVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfYXJjKHgseSxyeCxyeSxhMSxhMil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LHgscy5oZWlnaHQgLSB5LHJ4LHJ5LGExLGEyKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyKHN0cil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIG0gPSBzLmNvbnRleHQubWVhc3VyZVRleHQoc3RyKTtcbiAgdmFyIGR4ID0gbS53aWR0aDtcbiAgcy5jb250ZXh0LmZpbGxUZXh0KHN0cixzLngscy5oZWlnaHQgLSBzLnkpO1xuICBzLnggKz0gZHggfCAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19jaGFyKGMpe1xuICBjYW1sX2dyX2RyYXdfc3RyKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ncl9kcmF3X3N0clxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19zdHJpbmcoc3RyKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzdHIpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfZm9udChmKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmZvbnQgPSBmO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfdGV4dF9zaXplKHNpemUpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGV4dF9zaXplID0gc2l6ZTtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl90ZXh0X3NpemUodHh0KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgdyA9IHMuY29udGV4dC5tZWFzdXJlVGV4dChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh0eHQpKS53aWR0aDtcbiAgcmV0dXJuIFswLHcscy50ZXh0X3NpemVdO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbWFrZV9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbWFrZV9pbWFnZShhcnIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBoID0gYXJyLmxlbmd0aCAtIDEgO1xuICB2YXIgdyA9IGFyclsxXS5sZW5ndGggLSAxO1xuICB2YXIgaW0gPSBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHcsaCk7XG4gIGZvcih2YXIgaT0wO2k8aDtpKyspe1xuICAgIGZvcih2YXIgaj0wO2o8dztqKyspe1xuICAgICAgdmFyIGMgPSBhcnJbaSsxXVtqKzFdO1xuICAgICAgdmFyIG8gPSBpKih3KjQpICsgKGogKiA0KTtcbiAgICAgIGlmKGMgPT0gLTEpIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSBjID4+IDE2ICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSBjID4+ICA4ICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSBjID4+ICAwICYgMFhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAweGZmO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gaW1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHVtcF9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHVtcF9pbWFnZShpbSl7XG4gIHZhciBkYXRhID0gWzBdXG4gIGZvcih2YXIgaT0wOyBpPGltLmhlaWdodDtpKyspe1xuICAgIGRhdGFbaSsxXSA9IFswXVxuICAgIGZvcih2YXIgaj0wOyBqPGltLndpZHRoO2orKyl7XG4gICAgICB2YXIgbyA9IGkqKGltLndpZHRoKjQpICsgKGogKiA0KSxcbiAgICAgICAgICByID0gaW0uZGF0YVtvKzBdLFxuICAgICAgICAgIGcgPSBpbS5kYXRhW28rMV0sXG4gICAgICAgICAgYiA9IGltLmRhdGFbbysyXTtcbiAgICAgIGRhdGFbaSsxXVtqKzFdID0gKHIgPDwgMTYpICsgKGcgPDwgOCkgKyBiXG4gICAgfVxuICB9XG4gIHJldHVybiBkYXRhXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfaW1hZ2UoaW0seCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBpZighaW0uaW1hZ2UpIHtcbiAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICBjYW52YXMud2lkdGggPSBzLndpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgICBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpLnB1dEltYWdlRGF0YShpbSwwLDApO1xuICAgIHZhciBpbWFnZSA9IG5ldyBnbG9iYWxUaGlzLkltYWdlKCk7XG4gICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbWFnZSx4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSk7XG4gICAgICBpbS5pbWFnZSA9IGltYWdlO1xuICAgIH1cbiAgICBpbWFnZS5zcmMgPSBjYW52YXMudG9EYXRhVVJMKFwiaW1hZ2UvcG5nXCIpO1xuICB9IGVsc2Uge1xuICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW0uaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9jcmVhdGVfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NyZWF0ZV9pbWFnZSh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHgseSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2JsaXRfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2JsaXRfaW1hZ2UoaW0seCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW0yID0gcy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSxpbS53aWR0aCxpbS5oZWlnaHQpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGltMi5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgaW0uZGF0YVtpXSA9IGltMi5kYXRhW2ldO1xuICAgIGltLmRhdGFbaSsxXSA9IGltMi5kYXRhW2krMV07XG4gICAgaW0uZGF0YVtpKzJdID0gaW0yLmRhdGFbaSsyXTtcbiAgICBpbS5kYXRhW2krM10gPSBpbTIuZGF0YVtpKzNdO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19oYW5kbGVyXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXIoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9fc2lnbmFsXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX3NpZ25hbCgpe3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9ncl93YWl0X2V2ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dhaXRfZXZlbnQoX2V2bCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3dhaXRfZXZlbnQgbm90IEltcGxlbWVudGVkOiB1c2UgR3JhcGhpY3NfanMgaW5zdGVhZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zeW5jaHJvbml6ZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9zeW5jaHJvbml6ZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3N5bmNocm9uaXplIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVtZW1iZXJfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9yZW1lbWJlcl9tb2RlICgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Rpc3BsYXlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9kaXNwbGF5X21vZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Rpc3BsYXlfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2luZG93X2lkXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dpbmRvd19pZChhKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3dpbmRvd19pZCBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3coYSxiLGMsZCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9vcGVuX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyhhKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4iLCJcbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG52YXIgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXggPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVnaXN0ZXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVnaXN0ZXIoZXZlbnRfbmFtZSwgZXZlbnRfdGFnLCBldmVudF90eXBlKSB7XG4gIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ICs9IDE7XG4gIHJldHVybiBbMCwgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXgsIGV2ZW50X25hbWUsIGV2ZW50X3R5cGUsIGV2ZW50X3RhZ107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl93cml0ZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlKGV2ZW50LCBldmVudF9jb250ZW50KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG4vL0FsaWFzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuLy9BbGlhczogY2FtbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXVzZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcmVzdW1lXG4vL0FsaWFzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3JcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvcih0YXJnZXQpIHtcbiAgcmV0dXJuIHt9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yKGN1cnNvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19yZWFkX3BvbGxcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsKGN1cnNvciwgY2FsbGJhY2tzLCBudW0pIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2NvbnN0YW50c1xudmFyIGNhbWxfbWFyc2hhbF9jb25zdGFudHMgPSB7XG4gIFBSRUZJWF9TTUFMTF9CTE9DSzogICAgICAgICAweDgwLFxuICBQUkVGSVhfU01BTExfSU5UOiAgICAgICAgICAgMHg0MCxcbiAgUFJFRklYX1NNQUxMX1NUUklORzogICAgICAgIDB4MjAsXG4gIENPREVfSU5UODogICAgICAgICAgICAgICAgICAweDAwLFxuICBDT0RFX0lOVDE2OiAgICAgICAgICAgICAgICAgMHgwMSxcbiAgQ09ERV9JTlQzMjogICAgICAgICAgICAgICAgIDB4MDIsXG4gIENPREVfSU5UNjQ6ICAgICAgICAgICAgICAgICAweDAzLFxuICBDT0RFX1NIQVJFRDg6ICAgICAgICAgICAgICAgMHgwNCxcbiAgQ09ERV9TSEFSRUQxNjogICAgICAgICAgICAgIDB4MDUsXG4gIENPREVfU0hBUkVEMzI6ICAgICAgICAgICAgICAweDA2LFxuICBDT0RFX0JMT0NLMzI6ICAgICAgICAgICAgICAgMHgwOCxcbiAgQ09ERV9CTE9DSzY0OiAgICAgICAgICAgICAgIDB4MTMsXG4gIENPREVfU1RSSU5HODogICAgICAgICAgICAgICAweDA5LFxuICBDT0RFX1NUUklORzMyOiAgICAgICAgICAgICAgMHgwQSxcbiAgQ09ERV9ET1VCTEVfQklHOiAgICAgICAgICAgIDB4MEIsXG4gIENPREVfRE9VQkxFX0xJVFRMRTogICAgICAgICAweDBDLFxuICBDT0RFX0RPVUJMRV9BUlJBWThfQklHOiAgICAgMHgwRCxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTogIDB4MEUsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfQklHOiAgICAweDBGLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTogMHgwNyxcbiAgQ09ERV9DT0RFUE9JTlRFUjogICAgICAgICAgIDB4MTAsXG4gIENPREVfSU5GSVhQT0lOVEVSOiAgICAgICAgICAweDExLFxuICBDT0RFX0NVU1RPTTogICAgICAgICAgICAgICAgMHgxMixcbiAgQ09ERV9DVVNUT01fTEVOOiAgICAgICAgICAgIDB4MTgsXG4gIENPREVfQ1VTVE9NX0ZJWEVEOiAgICAgICAgICAweDE5XG59XG5cblxuLy9Qcm92aWRlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIFVJbnQ4QXJyYXlSZWFkZXIgKHMsIGkpIHsgdGhpcy5zID0gczsgdGhpcy5pID0gaTsgfVxuVUludDhBcnJheVJlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnNbdGhpcy5pKytdOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zW3RoaXMuaSsrXSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDgpIHwgc1tpICsgMV1cbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDI0ID4+IDE2KSB8IHNbaSArIDFdO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzW2ldIDw8IDI0KSB8IChzW2krMV0gPDwgMTYpIHxcbiAgICAgICAgICAgIChzW2krMl0gPDwgOCkgfCBzW2krM10pID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKHNbaV0gPDwgMjQpIHwgKHNbaSsxXSA8PCAxNikgfFxuICAgICAgKHNbaSsyXSA8PCA4KSB8IHNbaSszXTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkodGhpcy5zLnN1YmFycmF5KGksIGkgKyBsZW4pKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIHRoaXMucy5zdWJhcnJheShpLCBpICsgbGVuKTtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBNbFN0cmluZ1JlYWRlciAocywgaSkgeyB0aGlzLnMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpOyB0aGlzLmkgPSBpOyB9XG5NbFN0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCA+PiAxNikgfCBzLmNoYXJDb2RlQXQoaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5zLnN1YnN0cmluZyhpLCBpICsgbGVuKSk7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgdmFyIHMgPSB0aGlzLnM7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgZm9yKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICBiW2pdID0gcy5jaGFyQ29kZUF0KGkgKyBqKTtcbiAgICB9XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gYjtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBCaWdTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBCaWdTdHJpbmdSZWFkZXIgKGJzLCBpKSB7IHRoaXMucyA9IGJzOyB0aGlzLmkgPSBpOyB9XG5CaWdTdHJpbmdSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCA4KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSlcbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgMjQgPj4gMTYpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMykgICAgICAgICApID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgYXJyID0gbmV3IEFycmF5KGxlbilcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspe1xuICAgICAgYXJyW2pdID0gY2FtbF9iYV9nZXRfMSh0aGlzLnMsIGkraik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGFycik7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgb2Zmc2V0ID0gdGhpcy5vZmZzZXQoaSk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gdGhpcy5zLmRhdGEuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pO1xuICB9XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKGEpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoY2FtbF9pbnQ2NF9vZl9ieXRlcyAoYSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKHMsIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocyksIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gIHNpemVbMF0gPSA4O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyAodCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tYXJzaGFsKHdyaXRlciwgdiwgc2l6ZXMpIHtcbiAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzICh2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHdyaXRlci53cml0ZSAoOCwgYltpXSk7XG4gIHNpemVzWzBdID0gODsgc2l6ZXNbMV0gPSA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX3VubWFyc2hhbFxuZnVuY3Rpb24gY2FtbF9pbnQzMl91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc2l6ZVswXSA9IDQ7XG4gIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc3dpdGNoIChyZWFkZXIucmVhZDh1ICgpKSB7XG4gIGNhc2UgMTpcbiAgICBzaXplWzBdID0gNDtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gIGNhc2UgMjpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IG5hdGl2ZSBpbnRlZ2VyIHZhbHVlIHRvbyBsYXJnZVwiKTtcbiAgZGVmYXVsdDogY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG5hdGl2ZSBpbnRlZ2VyXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF91bm1hcnNoYWwsIGNhbWxfaW50NjRfbWFyc2hhbCwgY2FtbF9pbnQ2NF9jb21wYXJlLCBjYW1sX2ludDY0X2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsLCBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2VyaWFsaXplLCBjYW1sX2JhX2Rlc2VyaWFsaXplLCBjYW1sX2JhX2NvbXBhcmUsIGNhbWxfYmFfaGFzaFxudmFyIGNhbWxfY3VzdG9tX29wcyA9XG4gICAge1wiX2pcIjoge1xuICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDY0X3VubWFyc2hhbCxcbiAgICAgIHNlcmlhbGl6ZSAgOiBjYW1sX2ludDY0X21hcnNoYWwsXG4gICAgICBmaXhlZF9sZW5ndGggOiA4LFxuICAgICAgY29tcGFyZSA6IGNhbWxfaW50NjRfY29tcGFyZSxcbiAgICAgIGhhc2ggOiBjYW1sX2ludDY0X2hhc2hcbiAgICB9LFxuICAgICBcIl9pXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50MzJfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX25cIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycmF5XCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnJheVwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9LFxuICAgICBcIl9iaWdhcnIwMlwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyMDJcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfVxuICAgIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcykge1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgdmFyIG4gPSBjICYgMHg3RjtcbiAgICB3aGlsZSAoKGMgJiAweDgwKSAhPSAwKSB7XG4gICAgICBjID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIG43ID0gbiA8PCA3O1xuICAgICAgaWYgKG4gIT0gbjcgPj4gNykgb3ZlcmZsb3dbMF0gPSB0cnVlO1xuICAgICAgbiA9IG43IHwgKGMgJiAweDdGKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cbiAgdmFyIG1hZ2ljID0gcmVhZGVyLnJlYWQzMnUgKClcbiAgc3dpdGNoKG1hZ2ljKXtcbiAgY2FzZSAweDg0OTVBNkJFOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICB2YXIgY29tcHJlc3NlZCA9IDA7XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IGRhdGFfbGVuO1xuICAgIHZhciBudW1fb2JqZWN0cyA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV8zMiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV82NCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByZWFkZXIucmVhZDh1KCkgJiAweDNGO1xuICAgIHZhciBjb21wcmVzc2VkID0gMTtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciB1bmNvbXByZXNzZWRfZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgbnVtX29iamVjdHMgPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgX3NpemVfMzIgPSByZWFkdmxxIChvdmVyZmxvdyk7XG4gICAgdmFyIF9zaXplXzY0ID0gcmVhZHZscSAob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIHRoaXMgcGxhdGZvcm1cIik7XG4gICAgfVxuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRjogLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi9cbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gYSAzMi1iaXQgcGxhdGZvcm1cIik7XG4gICAgYnJlYWtcbiAgZGVmYXVsdDpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogYmFkIG9iamVjdFwiKTtcbiAgICBicmVhaztcbiAgfVxuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGludGVybl9vYmpfdGFibGUgPSAobnVtX29iamVjdHMgPiAwKT9bXTpudWxsO1xuICB2YXIgb2JqX2NvdW50ZXIgPSAwO1xuICBmdW5jdGlvbiBpbnRlcm5fcmVjIChyZWFkZXIpIHtcbiAgICB2YXIgY29kZSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgaWYgKGNvZGUgPj0gMHg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8pIHtcbiAgICAgIGlmIChjb2RlID49IDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8pIHtcbiAgICAgICAgdmFyIHRhZyA9IGNvZGUgJiAweEY7XG4gICAgICAgIHZhciBzaXplID0gKGNvZGUgPj4gNCkgJiAweDc7XG4gICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlXG4gICAgICAgIHJldHVybiAoY29kZSAmIDB4M0YpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY29kZSA+PSAweDIwLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyAqLykge1xuICAgICAgICB2YXIgbGVuID0gY29kZSAmIDB4MUY7XG4gICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2goY29kZSkge1xuICAgICAgICBjYXNlIDB4MDA6IC8vY3N0LkNPREVfSU5UODpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQ4cyAoKTtcbiAgICAgICAgY2FzZSAweDAxOiAvL2NzdC5DT0RFX0lOVDE2OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDE2cyAoKTtcbiAgICAgICAgY2FzZSAweDAyOiAvL2NzdC5DT0RFX0lOVDMyOlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbiAgICAgICAgY2FzZSAweDAzOiAvL2NzdC5DT0RFX0lOVDY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW50ZWdlciB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwNDogLy9jc3QuQ09ERV9TSEFSRUQ4OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA1OiAvL2NzdC5DT0RFX1NIQVJFRDE2OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDE2dSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNjogLy9jc3QuQ09ERV9TSEFSRUQzMjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDg6IC8vY3N0LkNPREVfQkxPQ0szMjpcbiAgICAgICAgICB2YXIgaGVhZGVyID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgdmFyIHRhZyA9IGhlYWRlciAmIDB4RkY7XG4gICAgICAgICAgdmFyIHNpemUgPSBoZWFkZXIgPj4gMTA7XG4gICAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEzOiAvL2NzdC5DT0RFX0JMT0NLNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogZGF0YSBibG9jayB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwOTogLy9jc3QuQ09ERV9TVFJJTkc4OlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQTogLy9jc3QuQ09ERV9TVFJJTkczMjpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBDOiAvL2NzdC5DT0RFX0RPVUJMRV9MSVRUTEU6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFs3IC0gaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEI6IC8vY3N0LkNPREVfRE9VQkxFX0JJRzpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0W2ldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBFOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEQ6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwNzogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEY6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTA6IC8vY3N0LkNPREVfQ09ERVBPSU5URVI6XG4gICAgICAgIGNhc2UgMHgxMTogLy9jc3QuQ09ERV9JTkZJWFBPSU5URVI6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogY29kZSBwb2ludGVyXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MTI6IC8vY3N0LkNPREVfQ1VTVE9NOlxuICAgICAgICBjYXNlIDB4MTg6IC8vY3N0LkNPREVfQ1VTVE9NX0xFTjpcbiAgICAgICAgY2FzZSAweDE5OiAvL2NzdC5DT0RFX0NVU1RPTV9GSVhFRDpcbiAgICAgICAgICB2YXIgYywgcyA9IFwiXCI7XG4gICAgICAgICAgd2hpbGUgKChjID0gcmVhZGVyLnJlYWQ4dSAoKSkgIT0gMCkgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlIChjKTtcbiAgICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW3NdO1xuICAgICAgICAgIHZhciBleHBlY3RlZF9zaXplO1xuICAgICAgICAgIGlmKCFvcHMpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHVua25vd24gY3VzdG9tIGJsb2NrIGlkZW50aWZpZXJcIik7XG4gICAgICAgICAgc3dpdGNoKGNvZGUpe1xuICAgICAgICAgIGNhc2UgMHgxMjogLy8gY3N0LkNPREVfQ1VTVE9NIChkZXByZWNhdGVkKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE5OiAvLyBjc3QuQ09ERV9DVVNUT01fRklYRURcbiAgICAgICAgICAgIGlmKCFvcHMuZml4ZWRfbGVuZ3RoKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGV4cGVjdGVkIGEgZml4ZWQtc2l6ZSBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gb3BzLmZpeGVkX2xlbmd0aDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxODogLy8gY3N0LkNPREVfQ1VTVE9NX0xFTlxuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgICAgLy8gU2tpcCBzaXplNjRcbiAgICAgICAgICAgIHJlYWRlci5yZWFkMzJzKCk7IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSByZWFkZXIuaTtcbiAgICAgICAgICB2YXIgc2l6ZSA9IFswXTtcbiAgICAgICAgICB2YXIgdiA9IG9wcy5kZXNlcmlhbGl6ZShyZWFkZXIsIHNpemUpO1xuICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gc2l6ZVswXSlcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbmNvcnJlY3QgbGVuZ3RoIG9mIHNlcmlhbGl6ZWQgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBtZXNzYWdlXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmKGNvbXByZXNzZWQpIHtcbiAgICBpZihjYW1sX2RlY29tcHJlc3NfaW5wdXQpIHtcbiAgICAgIHZhciBkYXRhID0gcmVhZGVyLnJlYWR1aW50OGFycmF5KGRhdGFfbGVuKTtcbiAgICAgIHZhciByZXMgPSBuZXcgVWludDhBcnJheSh1bmNvbXByZXNzZWRfZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IGNhbWxfZGVjb21wcmVzc19pbnB1dChkYXRhLCByZXMpO1xuICAgICAgdmFyIHJlYWRlciA9IG5ldyBVSW50OEFycmF5UmVhZGVyKHJlcywgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY29tcHJlc3NlZCBvYmplY3QsIGNhbm5vdCBkZWNvbXByZXNzXCIpO1xuICAgIH1cbiAgfVxuICB2YXIgcmVzID0gaW50ZXJuX3JlYyAocmVhZGVyKTtcbiAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgc2l6ZSA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciB2ID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIGQgPSB2Lmxlbmd0aDtcbiAgICBpZiAoZCA8IHNpemUpIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgdltkXSA9IGludGVybl9yZWMgKHJlYWRlcik7XG4gIH1cbiAgaWYgKHR5cGVvZiBvZnMhPVwibnVtYmVyXCIpIG9mc1swXSA9IHJlYWRlci5pO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDIwXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuLy9WZXJzaW9uOiA+PSA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDE2XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG5mdW5jdGlvbiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIChzLCBvZnMpIHtcbiAgdmFyIHIgPSBuZXcgVUludDhBcnJheVJlYWRlcihjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpLCBvZnMpO1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N0Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT0gMCkge1xuICAgICAgYyA9IHIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPSBuNyA+PiA3KSBvdmVyZmxvd1swXSA9IHRydWU7XG4gICAgICBuID0gbjcgfCAoYyAmIDB4N0YpO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfVxuXG4gIHN3aXRjaChyLnJlYWQzMnUoKSl7XG4gIGNhc2UgMHg4NDk1QTZCRTogLyogSW50ZXh0X21hZ2ljX251bWJlcl9zbWFsbCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gMjA7XG4gICAgdmFyIGRhdGFfbGVuID0gci5yZWFkMzJ1KCk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByLnJlYWQ4dSgpICYgMHgzRjtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gdGhpcyBwbGF0Zm9ybVwiKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJGOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2JpZyAqL1xuICBkZWZhdWx0OlxuICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogYmFkIG9iamVjdFwiKTtcbiAgICBicmVha1xuICB9XG4gIHJldHVybiBoZWFkZXJfbGVuIC0gY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplICsgZGF0YV9sZW47XG59XG5cbi8vUHJvdmlkZXM6IE1sT2JqZWN0VGFibGVcbnZhciBNbE9iamVjdFRhYmxlO1xuaWYgKHR5cGVvZiBnbG9iYWxUaGlzLk1hcCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIC8qIHBvbHlmaWxsICh1c2luZyBsaW5lYXIgc2VhcmNoKSAqL1xuICAgIGZ1bmN0aW9uIE5haXZlTG9va3VwKG9ianMpIHsgdGhpcy5vYmpzID0gb2JqczsgfVxuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbih2KSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub2Jqcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGhpcy5vYmpzW2ldID09PSB2KSByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9O1xuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIC8vIERvIG5vdGhpbmcgaGVyZS4gW01sT2JqZWN0VGFibGUuc3RvcmVdIHdpbGwgcHVzaCB0byBbdGhpcy5vYmpzXSBkaXJlY3RseS5cbiAgICB9O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgTmFpdmVMb29rdXAodGhpcy5vYmpzKTtcbiAgICB9O1xuICB9KCk7XG59XG5lbHNlIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgdGhpcy5vYmpzID0gW107IHRoaXMubG9va3VwID0gbmV3IGdsb2JhbFRoaXMuTWFwKCk7XG4gIH07XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnN0b3JlID0gZnVuY3Rpb24odikge1xuICB0aGlzLmxvb2t1cC5zZXQodiwgdGhpcy5vYmpzLmxlbmd0aCk7XG4gIHRoaXMub2Jqcy5wdXNoKHYpO1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5yZWNhbGwgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBpID0gdGhpcy5sb29rdXAuZ2V0KHYpO1xuICByZXR1cm4gKGkgPT09IHVuZGVmaW5lZClcbiAgICA/IHVuZGVmaW5lZCA6IHRoaXMub2Jqcy5sZW5ndGggLSBpOyAgIC8qIGluZGV4IGlzIHJlbGF0aXZlICovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBNbE9iamVjdFRhYmxlLCBjYW1sX2xpc3RfdG9fanNfYXJyYXksIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xudmFyIGNhbWxfb3V0cHV0X3ZhbCA9IGZ1bmN0aW9uICgpe1xuICBmdW5jdGlvbiBXcml0ZXIgKCkgeyB0aGlzLmNodW5rID0gW107IH1cbiAgV3JpdGVyLnByb3RvdHlwZSA9IHtcbiAgICBjaHVua19pZHg6MjAsIGJsb2NrX2xlbjowLCBvYmpfY291bnRlcjowLCBzaXplXzMyOjAsIHNpemVfNjQ6MCxcbiAgICB3cml0ZTpmdW5jdGlvbiAoc2l6ZSwgdmFsdWUpIHtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2F0OmZ1bmN0aW9uIChwb3MsIHNpemUsIHZhbHVlKSB7XG4gICAgICB2YXIgcG9zID0gcG9zO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbcG9zKytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2NvZGU6ZnVuY3Rpb24gKHNpemUsIGNvZGUsIHZhbHVlKSB7XG4gICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gY29kZTtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX3NoYXJlZDpmdW5jdGlvbiAob2Zmc2V0KSB7XG4gICAgICBpZiAob2Zmc2V0IDwgKDEgPDwgOCkpIHRoaXMud3JpdGVfY29kZSg4LCAweDA0IC8qY3N0LkNPREVfU0hBUkVEOCovLCBvZmZzZXQpO1xuICAgICAgZWxzZSBpZiAob2Zmc2V0IDwgKDEgPDwgMTYpKSB0aGlzLndyaXRlX2NvZGUoMTYsIDB4MDUgLypjc3QuQ09ERV9TSEFSRUQxNiovLCBvZmZzZXQpO1xuICAgICAgZWxzZSB0aGlzLndyaXRlX2NvZGUoMzIsIDB4MDYgLypjc3QuQ09ERV9TSEFSRUQzMiovLCBvZmZzZXQpO1xuICAgIH0sXG4gICAgcG9zOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuY2h1bmtfaWR4IH0sXG4gICAgZmluYWxpemU6ZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5ibG9ja19sZW4gPSB0aGlzLmNodW5rX2lkeCAtIDIwO1xuICAgICAgdGhpcy5jaHVua19pZHggPSAwO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIDB4ODQ5NUE2QkUpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuYmxvY2tfbGVuKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLm9ial9jb3VudGVyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfMzIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV82NCk7XG4gICAgICByZXR1cm4gdGhpcy5jaHVuaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICh2LCBmbGFncykge1xuICAgIGZsYWdzID0gY2FtbF9saXN0X3RvX2pzX2FycmF5KGZsYWdzKTtcblxuICAgIHZhciBub19zaGFyaW5nID0gKGZsYWdzLmluZGV4T2YoMCAvKk1hcnNoYWwuTm9fc2hhcmluZyovKSAhPT0gLTEpLFxuICAgICAgICBjbG9zdXJlcyA9ICAoZmxhZ3MuaW5kZXhPZigxIC8qTWFyc2hhbC5DbG9zdXJlcyovKSAhPT0gLTEpO1xuICAgIC8qIE1hcnNoYWwuQ29tcGF0XzMyIGlzIHJlZHVuZGFudCBzaW5jZSBpbnRlZ2VycyBhcmUgMzItYml0IGFueXdheSAqL1xuXG4gICAgaWYgKGNsb3N1cmVzKVxuICAgICAgY29uc29sZS53YXJuKFwiaW4gY2FtbF9vdXRwdXRfdmFsOiBmbGFnIE1hcnNoYWwuQ2xvc3VyZXMgaXMgbm90IHN1cHBvcnRlZC5cIik7XG5cbiAgICB2YXIgd3JpdGVyID0gbmV3IFdyaXRlciAoKTtcbiAgICB2YXIgc3RhY2sgPSBbXTtcbiAgICB2YXIgaW50ZXJuX29ial90YWJsZSA9IG5vX3NoYXJpbmcgPyBudWxsIDogbmV3IE1sT2JqZWN0VGFibGUoKTtcblxuICAgIGZ1bmN0aW9uIG1lbW8odikge1xuICAgICAgaWYgKG5vX3NoYXJpbmcpIHJldHVybiBmYWxzZTtcbiAgICAgIHZhciBleGlzdGluZ19vZmZzZXQgPSBpbnRlcm5fb2JqX3RhYmxlLnJlY2FsbCh2KTtcbiAgICAgIGlmIChleGlzdGluZ19vZmZzZXQpIHsgd3JpdGVyLndyaXRlX3NoYXJlZChleGlzdGluZ19vZmZzZXQpOyByZXR1cm4gdHJ1ZTsgfVxuICAgICAgZWxzZSB7IGludGVybl9vYmpfdGFibGUuc3RvcmUodik7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVybl9yZWMgKHYpIHtcbiAgICAgIGlmICh2LmNhbWxfY3VzdG9tKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBuYW1lID0gdi5jYW1sX2N1c3RvbTtcbiAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tuYW1lXTtcbiAgICAgICAgdmFyIHN6XzMyXzY0ID0gWzAsMF07XG4gICAgICAgIGlmKCFvcHMuc2VyaWFsaXplKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEN1c3RvbSlcIik7XG4gICAgICAgIGlmKG9wcy5maXhlZF9sZW5ndGggPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTggLypjc3QuQ09ERV9DVVNUT01fTEVOKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIGhlYWRlcl9wb3MgPSB3cml0ZXIucG9zICgpO1xuICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wcy5zZXJpYWxpemUod3JpdGVyLCB2LCBzel8zMl82NCk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MsIDMyLCBzel8zMl82NFswXSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MgKyA0LCAzMiwgMCk7IC8vIHplcm9cbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDgsIDMyLCBzel8zMl82NFsxXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDE5IC8qY3N0LkNPREVfQ1VTVE9NX0ZJWEVEKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSB3cml0ZXIucG9zKCk7XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICBpZiAob3BzLmZpeGVkX2xlbmd0aCAhPSB3cml0ZXIucG9zKCkgLSBvbGRfcG9zKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogaW5jb3JyZWN0IGZpeGVkIHNpemVzIHNwZWNpZmllZCBieSBcIiArIG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDIgKyAoKHN6XzMyXzY0WzBdICsgMykgPj4gMik7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDIgKyAoKHN6XzMyXzY0WzFdICsgNykgPj4gMyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgICAgaWYgKHZbMF0gPT0gMjUxKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEFic3RyYWN0KVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICBpZiAodi5sZW5ndGggPiAxICYmIG1lbW8odikpIHJldHVybjtcbiAgICAgICAgaWYgKHZbMF0gPCAxNiAmJiB2Lmxlbmd0aCAtIDEgPCA4KVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLyArIHZbMF0gKyAoKHYubGVuZ3RoIC0gMSk8PDQpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDA4IC8qY3N0LkNPREVfQkxPQ0szMiovLCAoKHYubGVuZ3RoLTEpIDw8IDEwKSB8IHZbMF0pO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSB2Lmxlbmd0aDtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gdi5sZW5ndGg7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEpIHN0YWNrLnB1c2ggKHYsIDEpO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICAgIGlmKCEoY2FtbF9pc19tbF9ieXRlcyhjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpKSkpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBbQnl0ZXMudF0gY2Fubm90IHNhZmVseSBiZSBtYXJzaGFsZWQgd2l0aCBbLS1lbmFibGUgdXNlLWpzLXN0cmluZ11cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDgsIDB4MDkvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICgzMiwgMHgwQSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCBsZW47aSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodiAhPSAodnwwKSl7XG4gICAgICAgICAgdmFyIHR5cGVfb2ZfdiA9IHR5cGVvZiB2O1xuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gSWYgYSBmbG9hdCBoYXBwZW5zIHRvIGJlIGFuIGludGVnZXIgaXQgaXMgc2VyaWFsaXplZCBhcyBhbiBpbnRlZ2VyXG4gICAgICAgICAgLy8gKEpzX29mX29jYW1sIGNhbm5vdCB0ZWxsIHdoZXRoZXIgdGhlIHR5cGUgb2YgYW4gaW50ZWdlciBudW1iZXIgaXNcbiAgICAgICAgICAvLyBmbG9hdCBvciBpbnRlZ2VyLikgVGhpcyBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgY3Jhc2hlcyB3aGVuXG4gICAgICAgICAgLy8gdW5tYXJzaGFsbGluZyB1c2luZyB0aGUgc3RhbmRhcmQgcnVudGltZS4gSXQgc2VlbXMgYmV0dGVyIHRvXG4gICAgICAgICAgLy8gc3lzdGVtYXRpY2FsbHkgZmFpbCBvbiBtYXJzaGFsbGluZy5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vICAgICAgICAgIGlmKHR5cGVfb2ZfdiAhPSBcIm51bWJlclwiKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChcIit0eXBlX29mX3YrXCIpXCIpO1xuICAgICAgICAgIC8vICAgICAgICAgIHZhciB0ID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQodikpO1xuICAgICAgICAgIC8vICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgwQiAvKmNzdC5DT0RFX0RPVUJMRV9CSUcqLyk7XG4gICAgICAgICAgLy8gICAgICAgICAgZm9yKHZhciBpID0gMDsgaTw4OyBpKyspe3dyaXRlci53cml0ZSg4LHRbaV0pfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHYgPj0gMCAmJiB2IDwgMHg0MCkge1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMFg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8gKyB2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodiA+PSAtKDEgPDwgNykgJiYgdiA8ICgxIDw8IDcpKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoOCwgMHgwMCAvKmNzdC5DT0RFX0lOVDgqLywgdik7XG4gICAgICAgICAgZWxzZSBpZiAodiA+PSAtKDEgPDwgMTUpICYmIHYgPCAoMSA8PCAxNSkpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgxNiwgMHgwMSAvKmNzdC5DT0RFX0lOVDE2Ki8sIHYpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDAyIC8qY3N0LkNPREVfSU5UMzIqLywgdik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZXh0ZXJuX3JlYyAodik7XG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBpID0gc3RhY2sucG9wICgpO1xuICAgICAgdmFyIHYgPSBzdGFjay5wb3AgKCk7XG4gICAgICBpZiAoaSArIDEgPCB2Lmxlbmd0aCkgc3RhY2sucHVzaCAodiwgaSArIDEpO1xuICAgICAgZXh0ZXJuX3JlYyAodltpXSk7XG4gICAgfVxuICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSB3cml0ZXIub2JqX2NvdW50ZXIgPSBpbnRlcm5fb2JqX3RhYmxlLm9ianMubGVuZ3RoO1xuICAgIHdyaXRlci5maW5hbGl6ZSgpO1xuICAgIHJldHVybiB3cml0ZXIuY2h1bms7XG4gIH1cbn0gKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfc3RyaW5nX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzICh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9mYWlsd2l0aCwgY2FtbF9ibGl0X2J5dGVzXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIgKHMsIG9mcywgbGVuLCB2LCBmbGFncykge1xuICB2YXIgdCA9IGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpO1xuICBpZiAodC5sZW5ndGggPiBsZW4pIGNhbWxfZmFpbHdpdGggKFwiTWFyc2hhbC50b19idWZmZXI6IGJ1ZmZlciBvdmVyZmxvd1wiKTtcbiAgY2FtbF9ibGl0X2J5dGVzKHQsIDAsIHMsIG9mcywgdC5sZW5ndGgpO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSW9cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZmRzXG52YXIgY2FtbF9zeXNfZmRzID0gbmV3IEFycmF5KDMpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jbG9zZVxuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG5mdW5jdGlvbiBjYW1sX3N5c19jbG9zZShmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUpIGZpbGUuY2xvc2UoKTtcbiAgZGVsZXRlIGNhbWxfc3lzX2Zkc1tmZF07XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBNbEZha2VGZF9vdXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUsaWR4KSB7XG4gIGlmKGlkeCA9PSB1bmRlZmluZWQpe1xuICAgIGlkeCA9IGNhbWxfc3lzX2Zkcy5sZW5ndGg7XG4gIH1cbiAgY2FtbF9zeXNfZmRzW2lkeF0gPSBmaWxlO1xuICByZXR1cm4gaWR4IHwgMDtcbn1cbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW4gKG5hbWUsIGZsYWdzLCBfcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUoZmxhZ3Mpe1xuICAgIHN3aXRjaChmbGFnc1sxXSl7XG4gICAgY2FzZSAwOiBmLnJkb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAxOiBmLndyb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAyOiBmLmFwcGVuZCA9IDE7YnJlYWs7XG4gICAgY2FzZSAzOiBmLmNyZWF0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA0OiBmLnRydW5jYXRlID0gMTticmVhaztcbiAgICBjYXNlIDU6IGYuZXhjbCA9IDE7IGJyZWFrO1xuICAgIGNhc2UgNjogZi5iaW5hcnkgPSAxO2JyZWFrO1xuICAgIGNhc2UgNzogZi50ZXh0ID0gMTticmVhaztcbiAgICBjYXNlIDg6IGYubm9uYmxvY2sgPSAxO2JyZWFrO1xuICAgIH1cbiAgICBmbGFncz1mbGFnc1syXTtcbiAgfVxuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3QsZik7XG4gIHJldHVybiBjYW1sX3N5c19vcGVuX2ludGVybmFsIChmaWxlLCB1bmRlZmluZWQpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gZmlsZShmZCwgZmxhZ3MpIHtcbiAgICBpZihmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgICByZXR1cm4gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3MpO1xuICAgIH1cbiAgICBlbHNlXG4gICAgICByZXR1cm4gbmV3IE1sRmFrZUZkX291dChmZCwgZmxhZ3MpXG4gIH1cbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDAse3Jkb25seToxLGFsdG5hbWU6XCIvZGV2L3N0ZGluXCIsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAwKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDEse2J1ZmZlcmVkOjIsd3Jvbmx5OjEsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAxKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDIse2J1ZmZlcmVkOjIsd3Jvbmx5OjEsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAyKTtcbn0pKClcblxuXG4vLyBvY2FtbCBDaGFubmVsc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZShjaGFuaWQsIG5hbWUpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4ubmFtZSA9IG5hbWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxzXG52YXIgY2FtbF9tbF9jaGFubmVscyA9IG5ldyBBcnJheSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dF9jaGFubmVsc19saXN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX291dF9jaGFubmVsc19saXN0ICgpIHtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGMgPSAwOyBjIDwgY2FtbF9tbF9jaGFubmVscy5sZW5ndGg7IGMrKyl7XG4gICAgaWYoY2FtbF9tbF9jaGFubmVsc1tjXSAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm9wZW5lZCAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm91dClcbiAgICAgIGw9WzAsY2FtbF9tbF9jaGFubmVsc1tjXS5mZCxsXTtcbiAgfVxuICByZXR1cm4gbDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5cbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCAoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlLmZsYWdzLnJkb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyByZWFkb25seVwiKTtcbiAgdmFyIGJ1ZmZlcmVkID0gKGZpbGUuZmxhZ3MuYnVmZmVyZWQgIT09IHVuZGVmaW5lZCkgPyBmaWxlLmZsYWdzLmJ1ZmZlcmVkIDogMTtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OnRydWUsXG4gICAgYnVmZmVyX2N1cnI6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIGJ1ZmZlcmVkOmJ1ZmZlcmVkXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiAoZmQpICB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZS5mbGFncy53cm9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgd3JpdGVvbmx5XCIpO1xuICB2YXIgcmVmaWxsID0gbnVsbDtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OiBmYWxzZSxcbiAgICBidWZmZXJfY3VycjowLFxuICAgIGJ1ZmZlcl9tYXg6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIHJlZmlsbDpyZWZpbGxcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luX3dpdGhfZmxhZ3MoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luKGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0X3dpdGhfZmxhZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzKGZkLCBmbGFncyl7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQoZmQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuLy9BbGlhczogd2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsXG5mdW5jdGlvbiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvcihjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4uZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZShjaGFuaWQsbW9kZSl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLmZpbGUuZmxhZ3MudGV4dCA9ICFtb2RlXG4gIGNoYW4uZmlsZS5mbGFncy5iaW5hcnkgPSBtb2RlXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lzX2JpbmFyeV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9pc19iaW5hcnlfbW9kZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5IFxufVxuXG4vL0lucHV0IGZyb20gaW5fY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2Nsb3NlX2NoYW5uZWxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Nsb3NlXG5mdW5jdGlvbiBjYW1sX21sX2Nsb3NlX2NoYW5uZWwgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5vcGVuZWQgPSBmYWxzZTtcbiAgY2FtbF9zeXNfY2xvc2UoY2hhbi5mZClcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZpbGUubGVuZ3RoKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0KGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2hhbi5maWxlLmxlbmd0aCAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dChjaGFuaWQsZikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5vdXRwdXQgPSAoZnVuY3Rpb24gKHMpIHtmKHMpfSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGwoY2hhbmlkLGYpIHtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLnJlZmlsbCA9IGY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWZpbGwgKGNoYW4pIHtcbiAgaWYoY2hhbi5yZWZpbGwgIT0gbnVsbCl7XG4gICAgdmFyIHN0ciA9IGNoYW4ucmVmaWxsKCk7XG4gICAgdmFyIHN0cl9hID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoc3RyKTtcbiAgICBpZiAoc3RyX2EubGVuZ3RoID09IDApIHtcbiAgICAgIGNoYW4ucmVmaWxsID0gbnVsbFxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKGNoYW4uYnVmZmVyLmxlbmd0aCA8IGNoYW4uYnVmZmVyX21heCArIHN0cl9hLmxlbmd0aCl7XG4gICAgICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkoY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKTtcbiAgICAgICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgICAgICBjaGFuLmJ1ZmZlciA9IGI7XG4gICAgICB9XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoc3RyX2EsY2hhbi5idWZmZXJfbWF4KTtcbiAgICAgIGNoYW4ub2Zmc2V0ICs9IHN0cl9hLmxlbmd0aDtcbiAgICAgIGNoYW4uYnVmZmVyX21heCArPSBzdHJfYS5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBucmVhZCA9IGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LCBjaGFuLmJ1ZmZlciwgY2hhbi5idWZmZXJfbWF4LCBjaGFuLmJ1ZmZlci5sZW5ndGggLSBjaGFuLmJ1ZmZlcl9tYXgpO1xuICAgIGNoYW4ub2Zmc2V0ICs9IG5yZWFkO1xuICAgIGNoYW4uYnVmZmVyX21heCArPSBucmVhZDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0IChjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheVxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9iaWdhcnJheSAoY2hhbmlkLCBiLCBpLCBsKSB7XG4gIHZhciBiYSA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYik7XG4gIHJldHVybiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2Jsb2NrIChjaGFuaWQsIGJhLCBpLCBsKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgbiA9IGw7XG4gIHZhciBhdmFpbCA9IGNoYW4uYnVmZmVyX21heCAtIGNoYW4uYnVmZmVyX2N1cnI7XG4gIGlmKGwgPD0gYXZhaWwpIHtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gbDtcbiAgfVxuICBlbHNlIGlmKGF2YWlsID4gMCkge1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBhdmFpbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYXZhaWw7XG4gICAgbiA9IGF2YWlsO1xuICB9IGVsc2Uge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgICBpZihuID4gYXZhaWwpIG4gPSBhdmFpbDtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgbiksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gbjtcbiAgfVxuICByZXR1cm4gbiB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcywgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWUgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIGhlYWRlciA9IG5ldyBVaW50OEFycmF5KGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGZ1bmN0aW9uIGJsb2NrKGJ1ZmZlciwgb2Zmc2V0LCBuKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHdoaWxlKHIgPCBuKXtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KXtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KVxuICAgICAgICBicmVhaztcbiAgICAgIGJ1ZmZlcltvZmZzZXQrcl0gPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIrKztcbiAgICAgIHIrKztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cbiAgdmFyIHIgPSBibG9jayhoZWFkZXIsIDAsIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGlmKHIgPT0gMClcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIGVsc2UgaWYgKHIgPCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB0cnVuY2F0ZWQgb2JqZWN0XCIpO1xuICB2YXIgbGVuID0gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAoY2FtbF9ieXRlc19vZl9hcnJheShoZWFkZXIpLCAwKTtcbiAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbiArIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGJ1Zi5zZXQoaGVhZGVyLDApO1xuICB2YXIgciA9IGJsb2NrKGJ1ZiwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplLCBsZW4pXG4gIGlmKHIgPCBsZW4pXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB0cnVuY2F0ZWQgb2JqZWN0IFwiICsgciArIFwiICBcIiArIGxlbik7XG4gIHZhciBvZmZzZXQgPSBbMF07XG4gIHZhciByZXMgPSBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBvZmZzZXQpO1xuICBjaGFuLm9mZnNldCA9IGNoYW4ub2Zmc2V0ICsgb2Zmc2V0WzBdO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX3RvX291dHNpZGVfaGVhcFxuLy9SZXF1aXJlczogY2FtbF9pbnB1dF92YWx1ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXAoYykge1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZShjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9jaGFyIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KXtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICB9XG4gIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heClcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIHZhciByZXMgPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgY2hhbi5idWZmZXJfY3VycisrO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9jaGFyLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2ludCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDQ7IGkrKyl7XG4gICAgcmVzID0gKHJlcyA8PCA4KSArIGNhbWxfbWxfaW5wdXRfY2hhcihjaGFuaWQpIHwgMDtcbiAgfVxuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9zZWVrX2luKGNoYW5pZCwgcG9zKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZiAoY2hhbi5yZWZpbGwgIT0gbnVsbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJJbGxlZ2FsIHNlZWtcIik7XG4gIGlmKHBvcyA+PSBjaGFuLm9mZnNldCAtIGNoYW4uYnVmZmVyX21heFxuICAgICAmJiBwb3MgPD0gY2hhbi5vZmZzZXRcbiAgICAgJiYgY2hhbi5maWxlLmZsYWdzLmJpbmFyeSkge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSBjaGFuLmJ1ZmZlcl9tYXggLSAoY2hhbi5vZmZzZXQgLSBwb3MpO1xuICB9IGVsc2Uge1xuICAgIGNoYW4ub2Zmc2V0ID0gcG9zO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pblxuLy9SZXF1aXJlczogY2FtbF9zZWVrX2luXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW4oY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9zZWVrX2luXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW5fNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgLSAoY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycikgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9wb3NfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luKGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9wb3NfaW4oY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX2luXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbl82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2FtbF9wb3NfaW4oY2hhbmlkKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBwID0gY2hhbi5idWZmZXJfY3VycjtcbiAgZG8ge1xuICAgIGlmKHAgPj0gY2hhbi5idWZmZXJfbWF4KSB7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID4gMCkge1xuICAgICAgICBjaGFuLmJ1ZmZlci5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VyciksMCk7XG4gICAgICAgIHAgLT0gY2hhbi5idWZmZXJfY3VycjtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4IC09IGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgICAgfVxuICAgICAgaWYoY2hhbi5idWZmZXJfbWF4ID49IGNoYW4uYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLShjaGFuLmJ1ZmZlcl9tYXgpIHwgMDtcbiAgICAgIH1cbiAgICAgIHZhciBwcmV2X21heCA9IGNoYW4uYnVmZmVyX21heDtcbiAgICAgIGNhbWxfcmVmaWxsIChjaGFuKTtcbiAgICAgIGlmKHByZXZfbWF4ID09IGNoYW4uYnVmZmVyX21heCkge1xuICAgICAgICByZXR1cm4gLShjaGFuLmJ1ZmZlcl9tYXgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH0gd2hpbGUgKGNoYW4uYnVmZmVyW3ArK10gIT0gMTApO1xuICByZXR1cm4gKHAgLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZmx1c2hcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3QgZmx1c2ggYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgaWYoIWNoYW4uYnVmZmVyIHx8IGNoYW4uYnVmZmVyX2N1cnIgPT0gMCkgcmV0dXJuIDA7XG4gIGlmKGNoYW4ub3V0cHV0KSB7XG4gICAgY2hhbi5vdXRwdXQoY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKSk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5maWxlLndyaXRlKGNoYW4ub2Zmc2V0LCBjaGFuLmJ1ZmZlciwgMCwgY2hhbi5idWZmZXJfY3Vycik7XG4gIH1cbiAgY2hhbi5vZmZzZXQgKz0gY2hhbi5idWZmZXJfY3VycjtcbiAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL291dHB1dCB0byBvdXRfY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF90YVxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCxjYW1sX21sX2J5dGVzX2xlbmd0aFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3Qgb3V0cHV0IHRvIGEgY2xvc2VkIGNoYW5uZWxcIik7XG4gIGJ1ZmZlciA9IGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbik7XG4gIGlmKGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoID4gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShjaGFuLmJ1ZmZlcl9jdXJyICsgYnVmZmVyLmxlbmd0aCk7XG4gICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgIGNoYW4uYnVmZmVyID0gYlxuICB9XG4gIHN3aXRjaChjaGFuLmJ1ZmZlcmVkKXtcbiAgY2FzZSAwOiAvLyBVbmJ1ZmZlcmVkXG4gICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgYnJlYWtcbiAgY2FzZSAxOiAvLyBCdWZmZXJlZCAodGhlIGRlZmF1bHQpXG4gICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKVxuICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBicmVhaztcbiAgY2FzZSAyOiAvLyBCdWZmZXJlZCAob25seSBmb3Igc3Rkb3V0IGFuZCBzdGRlcnIpXG4gICAgdmFyIGlkID0gYnVmZmVyLmxhc3RJbmRleE9mKDEwKVxuICAgIGlmKGlkIDwgMCkge1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyLmxlbmd0aClcbiAgICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLnN1YmFycmF5KDAsIGlkICsgMSksIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBpZCArIDE7XG4gICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheShpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aCAtIGlkIC0gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5LCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYmlnYXJyYXkoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pO1xufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXQoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X2J5dGVzKGNoYW5pZCxjYW1sX2J5dGVzX29mX3N0cmluZyhidWZmZXIpLG9mZnNldCxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfY2hhciAoY2hhbmlkLGMpIHtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZywgY2FtbF9tbF9vdXRwdXQsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZSAoY2hhbmlkLHYsZmxhZ3MpIHtcbiAgdmFyIHMgPSBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcodiwgZmxhZ3MpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3Mpe1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm9mZnNldCA9IHBvcztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXQoY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXRfNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgKyBjaGFuLmJ1ZmZlcl9jdXJyXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dFxuLy9SZXF1aXJlczogY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19vdXQoY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX3Bvc19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dF82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQgKGNhbWxfcG9zX291dChjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2ludCAoY2hhbmlkLGkpIHtcbiAgdmFyIGFyciA9IFsoaT4+MjQpICYgMHhGRiwoaT4+MTYpICYgMHhGRiwoaT4+OCkgJiAweEZGLGkgJiAweEZGIF07XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCw0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pc19idWZmZXJlZChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5idWZmZXJlZCA/IDEgOiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2J1ZmZlcmVkXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3NldF9idWZmZXJlZChjaGFuaWQsdikge1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0uYnVmZmVyZWQgPSB2O1xuICBpZighdikgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gMFxufVxuIiwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2ModHJ1ZSk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX21ham9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2Z1bGxfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfZnVsbF9tYWpvcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYygpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogY2FtbF9nY19jb21wYWN0aW9uXG5mdW5jdGlvbiBjYW1sX2djX2NvbXBhY3Rpb24oKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvdW50ZXJzXG5mdW5jdGlvbiBjYW1sX2djX2NvdW50ZXJzKCkgeyByZXR1cm4gWzI1NCwwLDAsMF0gfVxuLy9Qcm92aWRlczogY2FtbF9nY19xdWlja19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3F1aWNrX3N0YXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc3RhdFxuZnVuY3Rpb24gY2FtbF9nY19zdGF0KCkge1xuICAvLyBBIGZpZWxkIHdhcyBhZGRlZCBpbiBPQ2FtbCA0LjEyLiBJdCBpcyB1bmxpa2VseSB0byBiZSBhbiBpc3N1ZSB0b1xuICAvLyByZXR1cm4gdG9vIG1hbnkgZmllbGRzIGluIHByZXZpb3VzIHZlcnNpb25zIG9mIE9DYW1sLlxuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX3NldFxuZnVuY3Rpb24gY2FtbF9nY19zZXQoX2NvbnRyb2wpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfZ2V0XG5mdW5jdGlvbiBjYW1sX2djX2dldCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc2V0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc2V0KF9jb250cm9sKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlZ2lzdGVyICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZVxudmFyIGFsbF9maW5hbGl6ZXJzID0gbmV3IGdsb2JhbFRoaXMuU2V0KClcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWUgKGNiLCBhKSB7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgYSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgIHZhciB4ID0gbmV3IGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkoZnVuY3Rpb24gKHgpe2FsbF9maW5hbGl6ZXJzLmRlbGV0ZSh4KTsgY2IoMCk7IHJldHVybjt9KTtcbiAgICB4LnJlZ2lzdGVyKGEseCk7XG4gICAgYWxsX2ZpbmFsaXplcnMuYWRkKHgpO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlbGVhc2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVsZWFzZSAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zdGFydFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3N0YXJ0KHJhdGUsc3RhY2tfc2l6ZSx0cmFja2VyKXtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zdG9wXG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RvcCh1bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2ZfZGlzY2FyZFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX2Rpc2NhcmQodCkgeyByZXR1cm4gMCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcmVzdW1lXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3Jlc3VtZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcGF1c2UodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnRcbmZ1bmN0aW9uIGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3Jfc2xpY2VcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3Jfc2xpY2Uod29yaykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yX3dvcmRzKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWlub3JfZnJlZVxuZnVuY3Rpb24gY2FtbF9nZXRfbWlub3JfZnJlZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2J1Y2tldFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfYnVja2V0KG4pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfY3JlZGl0XG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9jcmVkaXQobikgeyByZXR1cm4gMDsgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmQsIEFuZHkgUmF5XG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4vL1xuLy8gQmlnYXJyYXkuXG4vL1xuLy8gLSBhbGwgYmlnYXJyYXkgdHlwZXMgaW5jbHVkaW5nIEludDY0IGFuZCBDb21wbGV4LlxuLy8gLSBmb3J0cmFuICsgYyBsYXlvdXRzXG4vLyAtIHN1Yi9zbGljZS9yZXNoYXBlXG4vLyAtIHJldGFpbiBmYXN0IHBhdGggZm9yIDFkIGFycmF5IGFjY2Vzc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2luaXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYmFfaW5pdCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSB7XG4gIHZhciBuX2RpbXMgPSBkaW1zLmxlbmd0aDtcbiAgdmFyIHNpemUgPSAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG5fZGltczsgaSsrKSB7XG4gICAgaWYgKGRpbXNbaV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiBuZWdhdGl2ZSBkaW1lbnNpb25cIik7XG4gICAgc2l6ZSA9IHNpemUgKiBkaW1zW2ldO1xuICB9XG4gIHJldHVybiBzaXplO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpe1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgNzogY2FzZSAxMDogY2FzZSAxMTogcmV0dXJuIDI7XG4gIGRlZmF1bHQ6IHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSl7XG4gIHZhciB2aWV3O1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMDogIHZpZXcgPSBGbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDE6ICB2aWV3ID0gRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAyOiAgdmlldyA9IEludDhBcnJheTsgYnJlYWs7XG4gIGNhc2UgMzogIHZpZXcgPSBVaW50OEFycmF5OyBicmVhaztcbiAgY2FzZSA0OiAgdmlldyA9IEludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDU6ICB2aWV3ID0gVWludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDY6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgNzogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA4OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDk6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTA6IHZpZXcgPSBGbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDExOiB2aWV3ID0gRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAxMjogdmlldyA9IFVpbnQ4QXJyYXk7IGJyZWFrO1xuICB9XG4gIGlmICghdmlldykgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICB2YXIgZGF0YSA9IG5ldyB2aWV3KHNpemUgKiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpKTtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPCA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycmF5XCJcblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA+PSA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycjAyXCJcblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfaGkzMiwgY2FtbF9pbnQ2NF9sbzMyXG5mdW5jdGlvbiBNbF9CaWdhcnJheSAoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcblxuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IGNhbWxfYmFfY3VzdG9tX25hbWU7XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIHZhciBvZnMgPSAwO1xuICBpZih0eXBlb2YgYXJnID09PSBcIm51bWJlclwiKSBhcmcgPSBbYXJnXTtcbiAgaWYgKCEgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnYXJyYXkuanM6IGludmFsaWQgb2Zmc2V0XCIpO1xuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBhcmcubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmdldC9zZXQ6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgaWYodGhpcy5sYXlvdXQgPT0gMCAvKiBjX2xheW91dCAqLykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMCB8fCBhcmdbaV0gPj0gdGhpcy5kaW1zW2ldKVxuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIGFyZ1tpXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMuZGltcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKGFyZ1tpXSA8IDEgfHwgYXJnW2ldID4gdGhpcy5kaW1zW2ldKXtcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgfVxuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyAoYXJnW2ldIC0gMSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvZnM7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgbCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGggPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsLGgpO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIHIgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBpID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gWzI1NCwgciwgaV07XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdXG4gIH1cbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IHZbMV07XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IHZbMl07XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhW29mc10gPSB2O1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwXG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGEgPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdmFyIGIgPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgaWYoYSA9PSBiKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGEgOiBiO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciBpbSA9IHZbMV07XG4gICAgdmFyIHJlID0gdlsyXTtcbiAgICBpZihpbSA9PSByZSl7XG4gICAgICB0aGlzLmRhdGEuZmlsbChpbSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gaW0gOiByZTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhLmZpbGwodik7XG4gICAgYnJlYWs7XG4gIH1cbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIChiLCB0b3RhbCkge1xuICBpZiAodGhpcy5sYXlvdXQgIT0gYi5sYXlvdXQgfHwgdGhpcy5raW5kICE9IGIua2luZCkge1xuICAgIHZhciBrMSA9IHRoaXMua2luZCB8ICh0aGlzLmxheW91dCA8PCA4KTtcbiAgICB2YXIgazIgPSAgICBiLmtpbmQgfCAoYi5sYXlvdXQgPDwgOCk7XG4gICAgcmV0dXJuIGsyIC0gazE7XG4gIH1cbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYi5kaW1zLmxlbmd0aCkge1xuICAgIHJldHVybiBiLmRpbXMubGVuZ3RoIC0gdGhpcy5kaW1zLmxlbmd0aDtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAodGhpcy5kaW1zW2ldICE9IGIuZGltc1tpXSlcbiAgICAgIHJldHVybiAodGhpcy5kaW1zW2ldIDwgYi5kaW1zW2ldKSA/IC0xIDogMTtcbiAgc3dpdGNoICh0aGlzLmtpbmQpIHtcbiAgY2FzZSAwOlxuICBjYXNlIDE6XG4gIGNhc2UgMTA6XG4gIGNhc2UgMTE6XG4gICAgLy8gRmxvYXRzXG4gICAgdmFyIHgsIHk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHggPSB0aGlzLmRhdGFbaV07XG4gICAgICB5ID0gYi5kYXRhW2ldO1xuICAgICAgaWYgKHggPCB5KVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoeCA+IHkpXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKHggIT0geSkge1xuICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICBpZiAoeCA9PSB4KSByZXR1cm4gMTtcbiAgICAgICAgaWYgKHkgPT0geSkgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKz0yKSB7XG4gICAgICAvLyBDaGVjayBoaWdoZXN0IGJpdHMgZmlyc3RcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA8IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPiBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPCAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApID4gKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAyOlxuICBjYXNlIDM6XG4gIGNhc2UgNDpcbiAgY2FzZSA1OlxuICBjYXNlIDY6XG4gIGNhc2UgODpcbiAgY2FzZSA5OlxuICBjYXNlIDEyOlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldIDwgYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldID4gYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5X2NfMV8xXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgICA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlID0gbmV3IE1sX0JpZ2FycmF5KClcbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIGlmKHR5cGVvZiBhcmcgIT09IFwibnVtYmVyXCIpe1xuICAgIGlmKChhcmcgaW5zdGFuY2VvZiBBcnJheSkgJiYgYXJnLmxlbmd0aCA9PSAxKVxuICAgICAgYXJnID0gYXJnWzBdO1xuICAgIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiTWxfQmlnYXJyYXlfY18xXzEub2Zmc2V0XCIpO1xuICB9XG4gIGlmIChhcmcgPCAwIHx8IGFyZyA+PSB0aGlzLmRpbXNbMF0pXG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJnO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICByZXR1cm4gdGhpcy5kYXRhW29mc107XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgdGhpcy5kYXRhW29mc10gPSB2O1xuICByZXR1cm4gMFxufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHRoaXMuZGF0YS5maWxsKHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NvbXBhcmVcbmZ1bmN0aW9uIGNhbWxfYmFfY29tcGFyZShhLGIsdG90YWwpe1xuICByZXR1cm4gYS5jb21wYXJlKGIsdG90YWwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIE1sX0JpZ2FycmF5X2NfMV8xLCBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpe1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCk7XG4gIGlmKGNhbWxfYmFfZ2V0X3NpemUoZGltcykgKiBzaXplX3Blcl9lbGVtZW50ICE9IGRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwibGVuZ3RoIGRvZXNuJ3QgbWF0Y2ggZGltc1wiKTtcbiAgfVxuICBpZihsYXlvdXQgPT0gMCAmJiAvLyBjX2xheW91dFxuICAgICBkaW1zLmxlbmd0aCA9PSAxICYmIC8vIEFycmF5MVxuICAgICBzaXplX3Blcl9lbGVtZW50ID09IDEpIC8vIDEtdG8tMSBtYXBwaW5nXG4gICAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5KGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG5cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGUoa2luZCwgbGF5b3V0LCBkaW1zX21sKSB7XG4gIHZhciBkaW1zID0gY2FtbF9qc19mcm9tX2FycmF5KGRpbXNfbWwpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBjYW1sX2JhX2dldF9zaXplKGRpbXMpKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NoYW5nZV9sYXlvdXRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9jaGFuZ2VfbGF5b3V0KGJhLCBsYXlvdXQpIHtcbiAgaWYoYmEubGF5b3V0ID09IGxheW91dCkgcmV0dXJuIGJhO1xuICB2YXIgbmV3X2RpbXMgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2JhLmRpbXMubGVuZ3RoIC0gaSAtIDFdO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGxheW91dCwgbmV3X2RpbXMsIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZChiYSkge1xuICByZXR1cm4gYmEua2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9sYXlvdXRcbmZ1bmN0aW9uIGNhbWxfYmFfbGF5b3V0KGJhKSB7XG4gIHJldHVybiBiYS5sYXlvdXQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbnVtX2RpbXNcbmZ1bmN0aW9uIGNhbWxfYmFfbnVtX2RpbXMoYmEpIHtcbiAgcmV0dXJuIGJhLmRpbXMubGVuZ3RoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2RpbShiYSwgaSkge1xuICBpZiAoaSA8IDAgfHwgaSA+PSBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5kaW1cIik7XG4gIHJldHVybiBiYS5kaW1zW2ldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMShiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8yXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMihiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8zXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMyhiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X2dlbmVyaWMoYmEsIGkpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpO1xuICByZXR1cm4gYmEuZ2V0KG9mcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MTYoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMpO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHJldHVybiAoYjEgfCAoYjIgPDwgOCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDMyKGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICByZXR1cm4gKCAoYjEgPDwgMCkgIHxcbiAgICAgICAgICAgKGIyIDw8IDgpICB8XG4gICAgICAgICAgIChiMyA8PCAxNikgfFxuICAgICAgICAgICAoYjQgPDwgMjQpICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0NjQoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHZhciBiNSA9IGJhLmdldChvZnMrNCk7XG4gIHZhciBiNiA9IGJhLmdldChvZnMrNSk7XG4gIHZhciBiNyA9IGJhLmdldChvZnMrNik7XG4gIHZhciBiOCA9IGJhLmdldChvZnMrNyk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFtiOCxiNyxiNixiNSxiNCxiMyxiMixiMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8xKGJhLCBpMCkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChpMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8yXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8yKGJhLCBpMCwgaTEpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8zXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8zKGJhLCBpMCwgaTEsIGkyKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX3NldF9nZW5lcmljKGJhLCBpLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MTYoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDMyKGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMiwgKHYgPj4+IDE2KSAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzMsICh2ID4+PiAyNCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0NjQoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciB2ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh2KTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDg7IGkrKykgYmEuc2V0KG9mcytpLCB2WzctaV0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8xXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8xKGJhLCBpMCwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGkwKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzIoYmEsIGkwLCBpMSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMV0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzMoYmEsIGkwLCBpMSwgaTIsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYmFfZmlsbChiYSwgdikge1xuICBiYS5maWxsKHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfYmxpdChzcmMsIGRzdCkge1xuICBpZiAoZHN0LmRpbXMubGVuZ3RoICE9IHNyYy5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZHN0LmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKGRzdC5kaW1zW2ldICE9IHNyYy5kaW1zW2ldKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBkc3QuZGF0YS5zZXQoc3JjLmRhdGEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zdWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3N1YihiYSwgb2ZzLCBsZW4pIHtcbiAgdmFyIGNoYW5nZWRfZGltO1xuICB2YXIgbXVsID0gMTtcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAoYmEuZGltcy5sZW5ndGggLSAxKTsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IGJhLmRpbXMubGVuZ3RoIC0gMTtcbiAgICBvZnMgPSBvZnMgLSAxO1xuICB9XG4gIGlmIChvZnMgPCAwIHx8IGxlbiA8IDAgfHwgKG9mcyArIGxlbikgPiBiYS5kaW1zW2NoYW5nZWRfZGltXSl7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc3ViOiBiYWQgc3ViLWFycmF5XCIpO1xuICB9XG4gIHZhciBuZXdfZGltcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2ldO1xuICBuZXdfZGltc1tjaGFuZ2VkX2RpbV0gPSBsZW47XG4gIG11bCAqPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIG11bCwgKG9mcyArIGxlbikgKiBtdWwpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zbGljZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zbGljZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbnVtX2luZHMgPSB2aW5kLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gW107XG4gIHZhciBzdWJfZGltcyA9IFtdO1xuICB2YXIgb2ZzO1xuXG4gIGlmIChudW1faW5kcyA+IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnNsaWNlOiB0b28gbWFueSBpbmRpY2VzXCIpO1xuXG4gIC8vIENvbXB1dGUgb2Zmc2V0IGFuZCBjaGVjayBib3VuZHNcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSB2aW5kW2ldO1xuICAgIGZvciAoOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMDtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UobnVtX2luZHMpO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2JhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMgKyBpXSA9IHZpbmRbaV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDE7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKDAsIGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMpO1xuICB9XG4gIG9mcyA9IGJhLm9mZnNldChpbmRleCk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShzdWJfZGltcyk7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBzaXplX3Blcl9lbGVtZW50LCAob2ZzICsgc2l6ZSkgKiBzaXplX3Blcl9lbGVtZW50KTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIHN1Yl9kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfcmVzaGFwZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuZnVuY3Rpb24gY2FtbF9iYV9yZXNoYXBlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBuZXdfZGltID0gW107XG4gIHZhciBudW1fZGltcyA9IHZpbmQubGVuZ3RoO1xuXG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICB9XG4gIHZhciBudW1fZWx0cyA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgIG5ld19kaW1baV0gPSB2aW5kW2ldO1xuICAgIGlmIChuZXdfZGltW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBudW1fZWx0cyA9IG51bV9lbHRzICogbmV3X2RpbVtpXTtcbiAgfVxuXG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgLy8gQ2hlY2sgdGhhdCBzaXplcyBhZ3JlZVxuICBpZiAobnVtX2VsdHMgIT0gc2l6ZSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBzaXplIG1pc21hdGNoXCIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbSwgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9zZXJpYWxpemUod3JpdGVyLCBiYSwgc3opIHtcbiAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zLmxlbmd0aCk7XG4gIHdyaXRlci53cml0ZSgzMiwgKGJhLmtpbmQgfCAoYmEubGF5b3V0IDw8IDgpKSk7XG4gIGlmKGJhLmNhbWxfY3VzdG9tID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmKGJhLmRpbXNbaV0gPCAweGZmZmYpXG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGltc1tpXSk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCAweGZmZmYpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIDApO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgZWxzZVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB3cml0ZXIud3JpdGUoMzIsYmEuZGltc1tpXSlcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgd3JpdGVyLndyaXRlKDgsMCk7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoYmEuZ2V0KGkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGogPSBiYS5nZXQoaSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzFdKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzJdKSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGNvbXBsZXggPSBiYS5nZXQoaSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMV0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzJdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgc3pbMF0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDQ7XG4gIHN6WzFdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Rlc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMsIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgbmFtZSl7XG4gIHZhciBudW1fZGltcyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHdyb25nIG51bWJlciBvZiBiaWdhcnJheSBkaW1lbnNpb25zXCIpO1xuICB2YXIgdGFnID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIGtpbmQgPSB0YWcgJiAweGZmXG4gIHZhciBsYXlvdXQgPSAodGFnID4+IDgpICYgMTtcbiAgdmFyIGRpbXMgPSBbXVxuICBpZihuYW1lID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgICB2YXIgc2l6ZV9kaW0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgICAgaWYoc2l6ZV9kaW0gPT0gMHhmZmZmKXtcbiAgICAgICAgdmFyIHNpemVfZGltX2hpID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgdmFyIHNpemVfZGltX2xvID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgaWYoc2l6ZV9kaW1faGkgIT0gMClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGJpZ2FycmF5IGRpbWVuc2lvbiBvdmVyZmxvdyBpbiAzMmJpdFwiKTtcbiAgICAgICAgc2l6ZV9kaW0gPSBzaXplX2RpbV9sbztcbiAgICAgIH1cbiAgICAgIGRpbXMucHVzaChzaXplX2RpbSk7XG4gICAgfVxuICBlbHNlXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSBkaW1zLnB1c2gocmVhZGVyLnJlYWQzMnUoKSk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSk7XG4gIHZhciBiYSA9IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHZhciBzaXh0eSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICBpZihzaXh0eSkgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjYW5ub3QgcmVhZCBiaWdhcnJheSB3aXRoIDY0LWJpdCBPQ2FtbCBpbnRzXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6IC8vIChpbnQ2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW50NjQgPSBjYW1sX2ludDY0X29mX2J5dGVzKHQpO1xuICAgICAgYmEuc2V0KGksaW50NjQpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVha1xuICB9XG4gIHN6WzBdID0gKDQgKyBudW1fZGltcykgKiA0O1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vRGVwcmVjYXRlZFxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfZnJvbVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2Zyb20oZGF0YTEsIGRhdGEyLCBqc3R5cCwga2luZCwgbGF5b3V0LCBkaW1zKXtcbiAgaWYoZGF0YTIgfHwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSA9PSAyKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2NyZWF0ZV9mcm9tOiB1c2UgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVwiKTtcbiAgfVxuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YTEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2hhc2ggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX2hhc2goYmEpe1xuICB2YXIgbnVtX2VsdHMgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICB2YXIgaCA9IDA7XG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMjU2KSBudW1fZWx0cyA9IDI1NjtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgNCA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCA4KSB8IChiYS5kYXRhW2krMl0gPDwgMTYpIHwgKGJhLmRhdGFbaSszXSA8PCAyNCk7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgdyA9IDA7XG4gICAgc3dpdGNoIChudW1fZWx0cyAmIDMpIHtcbiAgICBjYXNlIDM6IHcgID0gYmEuZGF0YVtpKzJdIDw8IDE2OyAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMjogdyB8PSBiYS5kYXRhW2krMV0gPDwgODsgICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAxOiB3IHw9IGJhLmRhdGFbaSswXTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDEyOCkgbnVtX2VsdHMgPSAxMjg7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDIgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTIpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgMTYpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIGlmICgobnVtX2VsdHMgJiAxKSAhPSAwKVxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIG51bV9lbHRzICo9IDJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYmEpe1xuICByZXR1cm4gYmEuZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGtpbmQ7XG4gIGlmICAgICAgKHRhIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5KSBraW5kID0gMDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkpIGtpbmQgPSAxO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDhBcnJheSkga2luZCA9IDI7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDhBcnJheSkga2luZCA9IDM7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDE2QXJyYXkpIGtpbmQgPSA0O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQxNkFycmF5KSBraW5kID0gNTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5OiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICByZXR1cm4ga2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkodGEpe1xuICB2YXIga2luZCA9IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSh0YSk7XG4gIHZhciB0YSA9XG4gICAgICAvKiBOZWVkZWQgdG8gYXZvaWQgdW5zaWduZWQgc2V0dGVycyBvdmVyZmxvd2luZ1xuICAgICAgICAgdGhlIHJhbmdlIG9mIE9DYW1sIFtpbnQzMl0gdmFsdWVzLiAqL1xuICAgICAgdGEgaW5zdGFuY2VvZiBVaW50MzJBcnJheSA/XG4gICAgICBuZXcgSW50MzJBcnJheSh0YS5idWZmZXIgLHRhLmJ5dGVPZmZzZXQsIHRhLmxlbmd0aCkgOiB0YTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IHBhcnNpbmcuYyA4OTgzIDIwMDgtMDgtMDYgMDk6Mzg6MjVaIHhsZXJveSAkICovXG5cbi8qIFRoZSBQREEgYXV0b21hdG9uIGZvciBwYXJzZXJzIGdlbmVyYXRlZCBieSBjYW1seWFjYyAqL1xuXG4vKiBUaGUgcHVzaGRvd24gYXV0b21hdGEgKi9cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZXJfdHJhY2VcbnZhciBjYW1sX3BhcnNlcl90cmFjZSA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2xleF9hcnJheSwgY2FtbF9wYXJzZXJfdHJhY2UsY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0LCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZW5naW5lKHRhYmxlcywgZW52LCBjbWQsIGFyZylcbntcbiAgdmFyIEVSUkNPREUgPSAyNTY7XG5cbiAgLy92YXIgU1RBUlQgPSAwO1xuICAvL3ZhciBUT0tFTl9SRUFEID0gMTtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzEgPSAyO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMiA9IDM7XG4gIC8vdmFyIFNFTUFOVElDX0FDVElPTl9DT01QVVRFRCA9IDQ7XG4gIC8vdmFyIEVSUk9SX0RFVEVDVEVEID0gNTtcbiAgdmFyIGxvb3AgPSA2O1xuICB2YXIgdGVzdHNoaWZ0ID0gNztcbiAgdmFyIHNoaWZ0ID0gODtcbiAgdmFyIHNoaWZ0X3JlY292ZXIgPSA5O1xuICB2YXIgcmVkdWNlID0gMTA7XG5cbiAgdmFyIFJFQURfVE9LRU4gPSAwO1xuICB2YXIgUkFJU0VfUEFSU0VfRVJST1IgPSAxO1xuICB2YXIgR1JPV19TVEFDS1NfMSA9IDI7XG4gIHZhciBHUk9XX1NUQUNLU18yID0gMztcbiAgdmFyIENPTVBVVEVfU0VNQU5USUNfQUNUSU9OID0gNDtcbiAgdmFyIENBTExfRVJST1JfRlVOQ1RJT04gPSA1O1xuXG4gIHZhciBlbnZfc19zdGFjayA9IDE7XG4gIHZhciBlbnZfdl9zdGFjayA9IDI7XG4gIHZhciBlbnZfc3ltYl9zdGFydF9zdGFjayA9IDM7XG4gIHZhciBlbnZfc3ltYl9lbmRfc3RhY2sgPSA0O1xuICB2YXIgZW52X3N0YWNrc2l6ZSA9IDU7XG4gIHZhciBlbnZfc3RhY2tiYXNlID0gNjtcbiAgdmFyIGVudl9jdXJyX2NoYXIgPSA3O1xuICB2YXIgZW52X2x2YWwgPSA4O1xuICB2YXIgZW52X3N5bWJfc3RhcnQgPSA5O1xuICB2YXIgZW52X3N5bWJfZW5kID0gMTA7XG4gIHZhciBlbnZfYXNwID0gMTE7XG4gIHZhciBlbnZfcnVsZV9sZW4gPSAxMjtcbiAgdmFyIGVudl9ydWxlX251bWJlciA9IDEzO1xuICB2YXIgZW52X3NwID0gMTQ7XG4gIHZhciBlbnZfc3RhdGUgPSAxNTtcbiAgdmFyIGVudl9lcnJmbGFnID0gMTY7XG5cbiAgLy8gdmFyIF90YmxfYWN0aW9ucyA9IDE7XG4gIHZhciB0YmxfdHJhbnNsX2NvbnN0ID0gMjtcbiAgdmFyIHRibF90cmFuc2xfYmxvY2sgPSAzO1xuICB2YXIgdGJsX2xocyA9IDQ7XG4gIHZhciB0YmxfbGVuID0gNTtcbiAgdmFyIHRibF9kZWZyZWQgPSA2O1xuICB2YXIgdGJsX2Rnb3RvID0gNztcbiAgdmFyIHRibF9zaW5kZXggPSA4O1xuICB2YXIgdGJsX3JpbmRleCA9IDk7XG4gIHZhciB0YmxfZ2luZGV4ID0gMTA7XG4gIHZhciB0YmxfdGFibGVzaXplID0gMTE7XG4gIHZhciB0YmxfdGFibGUgPSAxMjtcbiAgdmFyIHRibF9jaGVjayA9IDEzO1xuICAvLyB2YXIgX3RibF9lcnJvcl9mdW5jdGlvbiA9IDE0O1xuICB2YXIgdGJsX25hbWVzX2NvbnN0ID0gMTU7XG4gIHZhciB0YmxfbmFtZXNfYmxvY2sgPSAxNjtcblxuXG4gIGZ1bmN0aW9uIGxvZyh4KSB7XG4gICAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHggKyBcIlxcblwiKTtcbiAgICBjYW1sX21sX291dHB1dCgyLCBzLCAwLCBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9rZW5fbmFtZShuYW1lcywgbnVtYmVyKVxuICB7XG4gICAgdmFyIHN0ciA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWVzKTtcbiAgICBpZiAoc3RyWzBdID09ICdcXHgwMCcpXG4gICAgICByZXR1cm4gXCI8dW5rbm93biB0b2tlbj5cIjtcbiAgICByZXR1cm4gc3RyLnNwbGl0KCdcXHgwMCcpW251bWJlcl07XG4gIH1cblxuICBmdW5jdGlvbiBwcmludF90b2tlbihzdGF0ZSwgdG9rKVxuICB7XG4gICAgdmFyIHRva2VuLCBraW5kO1xuICAgIGlmICh0b2sgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfYmxvY2tdLCB0b2tbMF0pO1xuICAgICAgaWYgKHR5cGVvZiB0b2tbMV0gPT0gXCJudW1iZXJcIilcbiAgICAgICAga2luZCA9IFwiXCIgKyB0b2tbMV07XG4gICAgICBlbHNlIGlmICh0eXBlb2YgdG9rWzFdID09IFwic3RyaW5nXCIpXG4gICAgICAgIGtpbmQgPSB0b2tbMV1cbiAgICAgIGVsc2UgaWYgKHRva1sxXSBpbnN0YW5jZW9mIE1sQnl0ZXMpXG4gICAgICAgIGtpbmQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRva1sxXSlcbiAgICAgIGVsc2VcbiAgICAgICAga2luZCA9IFwiX1wiXG4gICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlYWQgdG9rZW4gXCIgKyB0b2tlbiArIFwiKFwiICsga2luZCArIFwiKVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfY29uc3RdLCB0b2spO1xuICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWFkIHRva2VuIFwiICsgdG9rZW4pO1xuICAgIH1cbiAgfVxuXG4gIGlmICghdGFibGVzLmRnb3RvKSB7XG4gICAgdGFibGVzLmRlZnJlZCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2RlZnJlZF0pO1xuICAgIHRhYmxlcy5zaW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9zaW5kZXhdKTtcbiAgICB0YWJsZXMuY2hlY2sgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfY2hlY2tdKTtcbiAgICB0YWJsZXMucmluZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfcmluZGV4XSk7XG4gICAgdGFibGVzLnRhYmxlICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3RhYmxlXSk7XG4gICAgdGFibGVzLmxlbiAgICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2xlbl0pO1xuICAgIHRhYmxlcy5saHMgICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9saHNdKTtcbiAgICB0YWJsZXMuZ2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZ2luZGV4XSk7XG4gICAgdGFibGVzLmRnb3RvICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2Rnb3RvXSk7XG4gIH1cblxuICB2YXIgcmVzID0gMCwgbiwgbjEsIG4yLCBzdGF0ZTE7XG5cbiAgLy8gUkVTVE9SRVxuICB2YXIgc3AgPSBlbnZbZW52X3NwXTtcbiAgdmFyIHN0YXRlID0gZW52W2Vudl9zdGF0ZV07XG4gIHZhciBlcnJmbGFnID0gZW52W2Vudl9lcnJmbGFnXTtcblxuICBleGl0OmZvciAoOzspIHtcbiAgICBuZXh0OnN3aXRjaChjbWQpIHtcbiAgICBjYXNlIDA6Ly9TVEFSVDpcbiAgICAgIHN0YXRlID0gMDtcbiAgICAgIGVycmZsYWcgPSAwO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlIDY6Ly9sb29wOlxuICAgICAgbiA9IHRhYmxlcy5kZWZyZWRbc3RhdGVdO1xuICAgICAgaWYgKG4gIT0gMCkgeyBjbWQgPSByZWR1Y2U7IGJyZWFrOyB9XG4gICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID49IDApIHsgY21kID0gdGVzdHNoaWZ0OyBicmVhazsgfVxuICAgICAgcmVzID0gUkVBRF9UT0tFTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgbGV4ZXIgYW5kIHVwZGF0ZXMgKi9cbiAgICAgIC8qIHN5bWJfc3RhcnQgYW5kIHN5bWJfZW5kICovXG4gICAgY2FzZSAxOi8vVE9LRU5fUkVBRDpcbiAgICAgIGlmIChhcmcgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9ibG9ja11bYXJnWzBdICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSBhcmdbMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9jb25zdF1bYXJnICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSAwO1xuICAgICAgfVxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKSBwcmludF90b2tlbiAoc3RhdGUsIGFyZyk7XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNzovL3Rlc3RzaGlmdDpcbiAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBjbWQgPSBzaGlmdDsgYnJlYWs7XG4gICAgICB9XG4gICAgICBuMSA9IHRhYmxlcy5yaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgbiA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICAgIGNtZCA9IHJlZHVjZTsgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoZXJyZmxhZyA8PSAwKSB7XG4gICAgICAgIHJlcyA9IENBTExfRVJST1JfRlVOQ1RJT047XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBlcnJvciBmdW5jdGlvbiAqL1xuICAgIGNhc2UgNTovL0VSUk9SX0RFVEVDVEVEOlxuICAgICAgaWYgKGVycmZsYWcgPCAzKSB7XG4gICAgICAgIGVycmZsYWcgPSAzO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdO1xuICAgICAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZTFdO1xuICAgICAgICAgIG4yID0gbjEgKyBFUlJDT0RFO1xuICAgICAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gRVJSQ09ERSkge1xuICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICBsb2coXCJSZWNvdmVyaW5nIGluIHN0YXRlIFwiICsgc3RhdGUxKTtcbiAgICAgICAgICAgIGNtZCA9IHNoaWZ0X3JlY292ZXI7IGJyZWFrIG5leHQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgbG9nKFwiRGlzY2FyZGluZyBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICBpZiAoc3AgPD0gZW52W2Vudl9zdGFja2Jhc2VdKSB7XG4gICAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgICBsb2coXCJObyBtb3JlIHN0YXRlcyB0byBkaXNjYXJkXCIpO1xuICAgICAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgICAgIHNwLS07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID09IDApXG4gICAgICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SOyAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgIGxvZyhcIkRpc2NhcmRpbmcgbGFzdCB0b2tlbiByZWFkXCIpO1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDg6Ly9zaGlmdDpcbiAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IC0xO1xuICAgICAgaWYgKGVycmZsYWcgPiAwKSBlcnJmbGFnLS07XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDk6Ly9zaGlmdF9yZWNvdmVyOlxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHNoaWZ0IHRvIHN0YXRlIFwiICsgdGFibGVzLnRhYmxlW24yXSk7XG4gICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICBzcCsrO1xuICAgICAgaWYgKHNwID49IGVudltlbnZfc3RhY2tzaXplXSkge1xuICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18xO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi9cbiAgICBjYXNlIDI6Ly9TVEFDS1NfR1JPV05fMTpcbiAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9sdmFsXTtcbiAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9zdGFydF07XG4gICAgICBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF07XG4gICAgICBjbWQgPSBsb29wO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIDEwOi8vcmVkdWNlOlxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlZHVjZSBieSBydWxlIFwiICsgbik7XG4gICAgICB2YXIgbSA9IHRhYmxlcy5sZW5bbl07XG4gICAgICBlbnZbZW52X2FzcF0gPSBzcDtcbiAgICAgIGVudltlbnZfcnVsZV9udW1iZXJdID0gbjtcbiAgICAgIGVudltlbnZfcnVsZV9sZW5dID0gbTtcbiAgICAgIHNwID0gc3AgLSBtICsgMTtcbiAgICAgIG0gPSB0YWJsZXMubGhzW25dO1xuICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcF07XG4gICAgICBuMSA9IHRhYmxlcy5naW5kZXhbbV07XG4gICAgICBuMiA9IG4xICsgc3RhdGUxO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IHN0YXRlMSlcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgZWxzZVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy5kZ290b1ttXTtcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAzOi8vU1RBQ0tTX0dST1dOXzI6XG4gICAgICByZXMgPSBDT01QVVRFX1NFTUFOVElDX0FDVElPTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgc2VtYW50aWMgYWN0aW9uICovXG4gICAgY2FzZSA0Oi8vU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBhcmc7XG4gICAgICB2YXIgYXNwID0gZW52W2Vudl9hc3BdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgaWYgKHNwID4gYXNwKSB7XG4gICAgICAgIC8qIFRoaXMgaXMgYW4gZXBzaWxvbiBwcm9kdWN0aW9uLiBUYWtlIHN5bWJfc3RhcnQgZXF1YWwgdG8gc3ltYl9lbmQuICovXG4gICAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgfVxuICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICAvKiBTaG91bGQgbm90IGhhcHBlbiAqL1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgfVxuICB9XG4gIC8vIFNBVkVcbiAgZW52W2Vudl9zcF0gPSBzcDtcbiAgZW52W2Vudl9zdGF0ZV0gPSBzdGF0ZTtcbiAgZW52W2Vudl9lcnJmbGFnXSA9IGVycmZsYWc7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3BhcnNlcl90cmFjZVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZXJfdHJhY2VcbmZ1bmN0aW9uIGNhbWxfc2V0X3BhcnNlcl90cmFjZShib29sKSB7XG4gIHZhciBvbGRmbGFnID0gY2FtbF9wYXJzZXJfdHJhY2U7XG4gIGNhbWxfcGFyc2VyX3RyYWNlID0gYm9vbDtcbiAgcmV0dXJuIG9sZGZsYWc7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9pbnQgY29uc3QgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nLCBjYW1sX3N0cl9yZXBlYXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2ludChmbXQsIGkpIHtcbiAgaWYgKGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KSA9PSBcIiVkXCIpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIraSk7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGkgPCAwKSB7IGlmIChmLnNpZ25lZGNvbnYpIHsgZi5zaWduID0gLTE7IGkgPSAtaTsgfSBlbHNlIGkgPj4+PSAwOyB9XG4gIHZhciBzID0gaS50b1N0cmluZyhmLmJhc2UpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9ICcgJztcbiAgICB2YXIgbiA9IGYucHJlYyAtIHMubGVuZ3RoO1xuICAgIGlmIChuID4gMCkgcyA9IGNhbWxfc3RyX3JlcGVhdCAobiwgJzAnKSArIHM7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpIHtcbiAgdmFyIGkgPSAwLCBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyksIGJhc2UgPSAxMCwgc2lnbiA9IDE7XG4gIGlmIChsZW4gPiAwKSB7XG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSkpIHtcbiAgICBjYXNlIDQ1OiBpKys7IHNpZ24gPSAtMTsgYnJlYWs7XG4gICAgY2FzZSA0MzogaSsrOyBzaWduID0gMTsgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChpICsgMSA8IGxlbiAmJiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpID09IDQ4KVxuICAgIHN3aXRjaCAoY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpICsgMSkpIHtcbiAgICBjYXNlIDEyMDogY2FzZSA4ODogYmFzZSA9IDE2OyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgMTExOiBjYXNlIDc5OiBiYXNlID0gIDg7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAgOTg6IGNhc2UgNjY6IGJhc2UgPSAgMjsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlIDExNzogY2FzZSA4NTogaSArPSAyOyBicmVhaztcbiAgICB9XG4gIHJldHVybiBbaSwgc2lnbiwgYmFzZV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZGlnaXRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZGlnaXQoYykge1xuICBpZiAoYyA+PSA0OCAmJiBjIDw9IDU3KSAgcmV0dXJuIGMgLSA0ODtcbiAgaWYgKGMgPj0gNjUgJiYgYyA8PSA5MCkgIHJldHVybiBjIC0gNTU7XG4gIGlmIChjID49IDk3ICYmIGMgPD0gMTIyKSByZXR1cm4gYyAtIDg3O1xuICByZXR1cm4gLTE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50X29mX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSwgY2FtbF9wYXJzZV9kaWdpdCwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9pbnRfb2Zfc3RyaW5nIChzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKTtcbiAgdmFyIGkgPSByWzBdLCBzaWduID0gclsxXSwgYmFzZSA9IHJbMl07XG4gIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciB0aHJlc2hvbGQgPSAtMSA+Pj4gMDtcbiAgdmFyIGMgPSAoaSA8IGxlbik/Y2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTowO1xuICB2YXIgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB2YXIgcmVzID0gZDtcbiAgZm9yIChpKys7aTxsZW47aSsrKSB7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT0gOTUpIGNvbnRpbnVlO1xuICAgIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICAgIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGJyZWFrO1xuICAgIHJlcyA9IGJhc2UgKiByZXMgKyBkO1xuICAgIGlmIChyZXMgPiB0aHJlc2hvbGQpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB9XG4gIGlmIChpICE9IGxlbikgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIC8vIEZvciBiYXNlIGRpZmZlcmVudCBmcm9tIDEwLCB3ZSBleHBlY3QgYW4gdW5zaWduZWQgcmVwcmVzZW50YXRpb24sXG4gIC8vIGhlbmNlIGFueSB2YWx1ZSBvZiAncmVzJyAobGVzcyB0aGFuICd0aHJlc2hvbGQnKSBpcyBhY2NlcHRhYmxlLlxuICAvLyBCdXQgd2UgaGF2ZSB0byBjb252ZXJ0IHRoZSByZXN1bHQgYmFjayB0byBhIHNpZ25lZCBpbnRlZ2VyLlxuICByZXMgPSBzaWduICogcmVzO1xuICBpZiAoKGJhc2UgPT0gMTApICYmICgocmVzIHwgMCkgIT0gcmVzKSlcbiAgICAvKiBTaWduZWQgcmVwcmVzZW50YXRpb24gZXhwZWN0ZWQsIGFsbG93IC0yXihuYml0cy0xKSB0byAyXihuYml0cy0xKSAtIDEgKi9cbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgcmV0dXJuIHJlcyB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbXVsIGNvbnN0XG5mdW5jdGlvbiBjYW1sX211bChhLGIpe1xuICByZXR1cm4gTWF0aC5pbXVsKGEsYik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGl2XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBjYW1sX2Rpdih4LHkpIHtcbiAgaWYgKHkgPT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgcmV0dXJuICh4L3kpfDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW9kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBjYW1sX21vZCh4LHkpIHtcbiAgaWYgKHkgPT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgcmV0dXJuIHgleTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ic3dhcDE2XG5mdW5jdGlvbiBjYW1sX2Jzd2FwMTYoeCkge1xuICByZXR1cm4gKCgoKHggJiAweDAwRkYpIDw8IDgpIHxcbiAgICAgICAgICAgKCh4ICYgMHhGRjAwKSA+PiA4KSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9ic3dhcFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9ic3dhcCh4KSB7XG4gIHJldHVybiAoKCh4ICYgMHgwMDAwMDBGRikgPDwgMjQpIHxcbiAgICAgICAgICAoKHggJiAweDAwMDBGRjAwKSA8PCA4KSB8XG4gICAgICAgICAgKCh4ICYgMHgwMEZGMDAwMCkgPj4+IDgpIHxcbiAgICAgICAgICAoKHggJiAweEZGMDAwMDAwKSA+Pj4gMjQpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYnN3YXBcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYnN3YXAoeCkge1xuICB2YXIgeSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoeCk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFt5WzddLCB5WzZdLCB5WzVdLCB5WzRdLCB5WzNdLCB5WzJdLCB5WzFdLCB5WzBdXSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEhhc2h0YmxcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfdW5pdl9wYXJhbSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vVmVyc2lvbjogPCA0LjEyXG5mdW5jdGlvbiBjYW1sX2hhc2hfdW5pdl9wYXJhbSAoY291bnQsIGxpbWl0LCBvYmopIHtcbiAgdmFyIGhhc2hfYWNjdSA9IDA7XG4gIGZ1bmN0aW9uIGhhc2hfYXV4IChvYmopIHtcbiAgICBsaW1pdCAtLTtcbiAgICBpZiAoY291bnQgPCAwIHx8IGxpbWl0IDwgMCkgcmV0dXJuO1xuICAgIGlmIChvYmogaW5zdGFuY2VvZiBBcnJheSAmJiBvYmpbMF0gPT09IChvYmpbMF18MCkpIHtcbiAgICAgIHN3aXRjaCAob2JqWzBdKSB7XG4gICAgICBjYXNlIDI0ODpcbiAgICAgICAgLy8gT2JqZWN0XG4gICAgICAgIGNvdW50IC0tO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBvYmpbMl0pIHwgMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MDpcbiAgICAgICAgLy8gRm9yd2FyZFxuICAgICAgICBsaW1pdCsrOyBoYXNoX2F1eChvYmopOyBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvdW50IC0tO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBvYmpbMF0pIHwgMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IG9iai5sZW5ndGggLSAxOyBpID4gMDsgaS0tKSBoYXNoX2F1eCAob2JqW2ldKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMob2JqKSkge1xuICAgICAgY291bnQgLS07XG4gICAgICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudChvYmopO1xuICAgICAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgZm9yICh2YXIgYiA9IGNvbnRlbnQsIGwgPSBiLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgICB9IGVsc2UgeyAvKiBBUlJBWSAqL1xuICAgICAgICBmb3IgKHZhciBhID0gY29udGVudCwgbCA9IGEubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBhW2ldKSB8IDA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhvYmopKSB7XG4gICAgICB2YXIganNieXRlcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob2JqKTtcbiAgICAgIGZvciAodmFyIGIgPSBqc2J5dGVzLCBsID0ganNieXRlcy5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGZvciAodmFyIGIgPSBvYmosIGwgPSBvYmoubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgfSBlbHNlIGlmIChvYmogPT09IChvYmp8MCkpIHtcbiAgICAgIC8vIEludGVnZXJcbiAgICAgIGNvdW50IC0tO1xuICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgb2JqKSB8IDA7XG4gICAgfSBlbHNlIGlmIChvYmogPT09ICtvYmopIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBjb3VudC0tO1xuICAgICAgdmFyIHAgPSBjYW1sX2ludDY0X3RvX2J5dGVzIChjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKG9iaikpO1xuICAgICAgZm9yICh2YXIgaSA9IDc7IGkgPj0gMDsgaS0tKSBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBwW2ldKSB8IDA7XG4gICAgfSBlbHNlIGlmKG9iaiAmJiBvYmouY2FtbF9jdXN0b20pIHtcbiAgICAgIGlmKGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dLmhhc2gpIHtcbiAgICAgICAgdmFyIGggPSBjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXS5oYXNoKG9iaikgfCAwO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBoKSB8IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGhhc2hfYXV4IChvYmopO1xuICByZXR1cm4gaGFzaF9hY2N1ICYgMHgzRkZGRkZGRjtcbn1cblxuLy9mdW5jdGlvbiBST1RMMzIoeCxuKSB7IHJldHVybiAoKHggPDwgbikgfCAoeCA+Pj4gKDMyLW4pKSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX211bFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQoaCxkKSB7XG4gIGQgPSBjYW1sX211bChkLCAweGNjOWUyZDUxfDApO1xuICBkID0gKChkIDw8IDE1KSB8IChkID4+PiAoMzItMTUpKSk7IC8vIFJPVEwzMihkLCAxNSk7XG4gIGQgPSBjYW1sX211bChkLCAweDFiODczNTkzKTtcbiAgaCBePSBkO1xuICBoID0gKChoIDw8IDEzKSB8IChoID4+PiAoMzItMTMpKSk7ICAgLy9ST1RMMzIoaCwgMTMpO1xuICByZXR1cm4gKCgoaCArIChoIDw8IDIpKXwwKSArICgweGU2NTQ2YjY0fDApKXwwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX211bFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9maW5hbChoKSB7XG4gIGggXj0gaCA+Pj4gMTY7XG4gIGggPSBjYW1sX211bCAoaCwgMHg4NWViY2E2YnwwKTtcbiAgaCBePSBoID4+PiAxMztcbiAgaCA9IGNhbWxfbXVsIChoLCAweGMyYjJhZTM1fDApO1xuICBoIF49IGggPj4+IDE2O1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2hhc2hfbWl4X2ludDY0XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2Zsb2F0IChoLCB2MCkge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9pbnQ2NChoLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKHYwKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9sbzMyLCBjYW1sX2ludDY0X2hpMzJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50NjQgKGgsIHYpIHtcbiAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGNhbWxfaW50NjRfbG8zMih2KSk7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2hpMzIodikpO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIHMpIHtcbiAgdmFyIGxlbiA9IHMubGVuZ3RoLCBpLCB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzLmNoYXJDb2RlQXQoaSlcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDgpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSsyKSA8PCAxNilcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzMpIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICBjYXNlIDM6IHcgID0gcy5jaGFyQ29kZUF0KGkrMikgPDwgMTY7XG4gIGNhc2UgMjogdyB8PSBzLmNoYXJDb2RlQXQoaSsxKSA8PCA4O1xuICBjYXNlIDE6XG4gICAgdyB8PSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICBkZWZhdWx0OlxuICB9XG4gIGggXj0gbGVuO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCwgaSwgdztcbiAgZm9yIChpID0gMDsgaSArIDQgPD0gbGVuOyBpICs9IDQpIHtcbiAgICB3ID0gc1tpXVxuICAgICAgfCAoc1tpKzFdIDw8IDgpXG4gICAgICB8IChzW2krMl0gPDwgMTYpXG4gICAgICB8IChzW2krM10gPDwgMjQpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICB3ID0gMDtcbiAgc3dpdGNoIChsZW4gJiAzKSB7XG4gIGNhc2UgMzogdyAgPSBzW2krMl0gPDwgMTY7XG4gIGNhc2UgMjogdyB8PSBzW2krMV0gPDwgODtcbiAgY2FzZSAxOiB3IHw9IHNbaV07XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICBkZWZhdWx0OlxuICB9XG4gIGggXj0gbGVuO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2J5dGVzKGgsIHYpIHtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQodik7XG4gIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKVxuICAgIHJldHVybiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgY29udGVudClcbiAgZWxzZSAvKiBBUlJBWSAqL1xuICAgIHJldHVybiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLCBjb250ZW50KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9zdHJpbmcoaCwgdikge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmcodikpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaCBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQsIGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmxvYXQsIGNhbWxfaGFzaF9taXhfc3RyaW5nLCBjYW1sX2hhc2hfbWl4X2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG5mdW5jdGlvbiBjYW1sX2hhc2ggKGNvdW50LCBsaW1pdCwgc2VlZCwgb2JqKSB7XG4gIHZhciBxdWV1ZSwgcmQsIHdyLCBzeiwgbnVtLCBoLCB2LCBpLCBsZW47XG4gIHN6ID0gbGltaXQ7XG4gIGlmIChzeiA8IDAgfHwgc3ogPiAyNTYpIHN6ID0gMjU2O1xuICBudW0gPSBjb3VudDtcbiAgaCA9IHNlZWQ7XG4gIHF1ZXVlID0gW29ial07IHJkID0gMDsgd3IgPSAxO1xuICB3aGlsZSAocmQgPCB3ciAmJiBudW0gPiAwKSB7XG4gICAgdiA9IHF1ZXVlW3JkKytdO1xuICAgIGlmICh2ICYmIHYuY2FtbF9jdXN0b20pe1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoaCA9IGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKHYpO1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQgKGgsIGhoKTtcbiAgICAgICAgbnVtIC0tO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgIHN3aXRjaCAodlswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdlsyXSk7XG4gICAgICAgIG51bS0tO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIHF1ZXVlWy0tcmRdID0gdlsxXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZihjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodlswXSkpIHtcbiAgICAgICAgICAvKiBBbGwgY29udGludWF0aW9ucyBoYXNoIHRvIHRoZSBzYW1lIHZhbHVlLFxuICAgICAgICAgICAgIHNpbmNlIHdlIGhhdmUgbm8gaWRlYSBob3cgdG8gZGlzdGluZ3Vpc2ggdGhlbS4gKi9cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGFnID0gKCh2Lmxlbmd0aCAtIDEpIDw8IDEwKSB8IHZbMF07XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB0YWcpO1xuICAgICAgICBmb3IgKGkgPSAxLCBsZW4gPSB2Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgaWYgKHdyID49IHN6KSBicmVhaztcbiAgICAgICAgICBxdWV1ZVt3cisrXSA9IHZbaV07XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9ieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfanNieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHYgPT09ICh2fDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdit2KzEpO1xuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJudW1iZXJcIikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsdik7XG4gICAgICBudW0tLTtcbiAgICB9XG4gIH1cbiAgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfaGFzaFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9maW5hbCwgY2FtbF9oYXNoX21peF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2hhc2goaCwgdil7XG4gIHZhciBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCx2KTtcbiAgdmFyIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuZnVuY3Rpb24gY2FtbF91cGRhdGVfZHVtbXkgKHgsIHkpIHtcbiAgaWYoIHkuZnVuICkgeyB4LmZ1biA9IHkuZnVuOyByZXR1cm4gMDsgfVxuICBpZiggdHlwZW9mIHk9PT1cImZ1bmN0aW9uXCIgKSB7IHguZnVuID0geTsgcmV0dXJuIDA7IH1cbiAgdmFyIGkgPSB5Lmxlbmd0aDsgd2hpbGUgKGktLSkgeFtpXSA9IHlbaV07IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX2R1bW15X2luZml4XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2FsbG9jX2R1bW15X2luZml4ICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGYgKHgpIHsgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZi5mdW4sIFt4XSkgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19ibG9jayBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9pc19ibG9jayAoeCkgeyByZXR1cm4gKyh4IGluc3RhbmNlb2YgQXJyYXkpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9vYmpfdGFnICh4KSB7XG4gIGlmICgoeCBpbnN0YW5jZW9mIEFycmF5KSAmJiB4WzBdID09ICh4WzBdID4+PiAwKSlcbiAgICByZXR1cm4geFswXVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmICgoeCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB8fCB0eXBlb2YgeCA9PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuIDI0N1xuICBlbHNlIGlmICh4ICYmIHguY2FtbF9jdXN0b20pXG4gICAgcmV0dXJuIDI1NVxuICBlbHNlXG4gICAgcmV0dXJuIDEwMDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3RhZyAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfdGFnICh4LCB0YWcpIHsgeFswXSA9IHRhZzsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2Jsb2NrIGNvbnN0IChjb25zdCxjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2Jsb2NrICh0YWcsIHNpemUpIHtcbiAgdmFyIG8gPSBuZXcgQXJyYXkoc2l6ZSsxKTtcbiAgb1swXT10YWc7XG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IHNpemU7IGkrKykgb1tpXSA9IDA7XG4gIHJldHVybiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial93aXRoX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfd2l0aF90YWcodGFnLHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSB0YWc7XG4gIGZvcih2YXIgaSA9IDE7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2R1cCBtdXRhYmxlIChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9vYmpfZHVwICh4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbDsgaSsrICkgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial90cnVuY2F0ZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfb2JqX3RydW5jYXRlICh4LCBzKSB7XG4gIGlmIChzPD0wIHx8IHMgKyAxID4geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIk9iai50cnVuY2F0ZVwiKTtcbiAgaWYgKHgubGVuZ3RoICE9IHMgKyAxKSB4Lmxlbmd0aCA9IHMgKyAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfbWFrZV9mb3J3YXJkXG5mdW5jdGlvbiBjYW1sX29ial9tYWtlX2ZvcndhcmQgKGIsdikge1xuICBiWzBdPTI1MDtcbiAgYlsxXT12O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwXG5mdW5jdGlvbiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwKHgsaSxvbGQsbil7XG4gIGlmKHhbaSsxXSA9PSBvbGQpIHtcbiAgICB4W2krMV0gPSBuO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX3NoYXJlZFxuZnVuY3Rpb24gY2FtbF9vYmpfaXNfc2hhcmVkKHgpe1xuICByZXR1cm4gMVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkIGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9sYXp5X21ha2VfZm9yd2FyZCAodikgeyByZXR1cm4gWzI1MCwgdl07IH1cblxuLy8vLy8vLy8vLy8vLyBDYW1saW50ZXJuYWxPT1xuLy9Qcm92aWRlczogY2FtbF9nZXRfcHVibGljX21ldGhvZCBjb25zdFxudmFyIGNhbWxfbWV0aG9kX2NhY2hlID0gW107XG5mdW5jdGlvbiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIChvYmosIHRhZywgY2FjaGVpZCkge1xuICB2YXIgbWV0aHMgPSBvYmpbMV07XG4gIHZhciBvZnMgPSBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXTtcbiAgaWYgKG9mcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gTWFrZSBzdXJlIHRoZSBhcnJheSBpcyBub3Qgc3BhcnNlXG4gICAgZm9yICh2YXIgaSA9IGNhbWxfbWV0aG9kX2NhY2hlLmxlbmd0aDsgaSA8IGNhY2hlaWQ7IGkrKylcbiAgICAgIGNhbWxfbWV0aG9kX2NhY2hlW2ldID0gMDtcbiAgfSBlbHNlIGlmIChtZXRoc1tvZnNdID09PSB0YWcpIHtcbiAgICByZXR1cm4gbWV0aHNbb2ZzIC0gMV07XG4gIH1cbiAgdmFyIGxpID0gMywgaGkgPSBtZXRoc1sxXSAqIDIgKyAxLCBtaTtcbiAgd2hpbGUgKGxpIDwgaGkpIHtcbiAgICBtaSA9ICgobGkraGkpID4+IDEpIHwgMTtcbiAgICBpZiAodGFnIDwgbWV0aHNbbWkrMV0pIGhpID0gbWktMjtcbiAgICBlbHNlIGxpID0gbWk7XG4gIH1cbiAgY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF0gPSBsaSArIDE7XG4gIC8qIHJldHVybiAwIGlmIHRhZyBpcyBub3QgdGhlcmUgKi9cbiAgcmV0dXJuICh0YWcgPT0gbWV0aHNbbGkrMV0gPyBtZXRoc1tsaV0gOiAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vb19sYXN0X2lkXG52YXIgY2FtbF9vb19sYXN0X2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9zZXRfb29faWRcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9zZXRfb29faWQgKGIpIHtcbiAgYlsyXT1jYW1sX29vX2xhc3RfaWQrKztcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnJlc2hfb29faWQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9mcmVzaF9vb19pZCgpIHtcbiAgcmV0dXJuIGNhbWxfb29fbGFzdF9pZCsrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3Jhd19maWVsZChvLGkpIHsgcmV0dXJuIG9baSsxXSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF9yYXdfZmllbGQobyxpLHYpIHsgcmV0dXJuIG9baSsxXSA9IHYgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yZWFjaGFibGVfd29yZHNcbmZ1bmN0aW9uIGNhbWxfb2JqX3JlYWNoYWJsZV93b3JkcyhvKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2FkZF9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfb2JqX2FkZF9vZmZzZXQodixvZmZzZXQpIHtcbiAgY2FtbF9mYWlsd2l0aChcIk9iai5hZGRfb2Zmc2V0IGlzIG5vdCBzdXBwb3J0ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfb2JqX3VwZGF0ZV90YWcoYixvLG4pIHtcbiAgICBpZihiWzBdPT1vKSB7IGJbMF0gPSBuOyByZXR1cm4gMSB9XG4gICAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nXG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmcobykge1xuICBpZiAoKG8gaW5zdGFuY2VvZiBBcnJheSkgJiYgb1swXSA9PSAob1swXSA+Pj4gMCkgJiZcbiAgICAgIGNhbWxfb2JqX3VwZGF0ZV90YWcobywgMjQ2LCAyNDQpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkXG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG4gIGZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZChvKSB7XG4gIGNhbWxfb2JqX3VwZGF0ZV90YWcobywyNDQsMjUwKTtcbiAgcmV0dXJuIDA7IC8vIHVuaXRcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVzZXRfdG9fbGF6eVxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenkobykge1xuICBjYW1sX29ial91cGRhdGVfdGFnKG8sMjQ0LDI0Nik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVhZF9yZXN1bHRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3JlYWRfcmVzdWx0KG8pIHtcbiAgcmV0dXJuIChjYW1sX29ial90YWcobykgPT0gMjUwKT9vWzFdOm87XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG4vL1ZlcnNpb246IDwgNVxuZnVuY3Rpb24gY2FtbF9pc19jb250aW51YXRpb25fdGFnKHQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodCkge1xuICByZXR1cm4gKHQgPT0gMjQ1KSA/IDEgOiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF90YWdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKXtcbiAgaWYgKHR5cGVvZiBhID09PSBcIm51bWJlclwiKSByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhhKSkgcmV0dXJuIDI1MjsgLy8gc3RyaW5nX3RhZ1xuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhhKSkgcmV0dXJuIDEyNTI7IC8vIG9jYW1sIHN0cmluZyAoaWYgZGlmZmVyZW50IGZyb20gYnl0ZXMpXG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBBcnJheSAmJiBhWzBdID09PSAoYVswXT4+PjApICYmIGFbMF0gPD0gMjU1KSB7XG4gICAgLy8gTG9vayBsaWtlIGFuIG9jYW1sIGJsb2NrXG4gICAgdmFyIHRhZyA9IGFbMF0gfCAwO1xuICAgIC8vIGlnbm9yZSBkb3VibGVfYXJyYXlfdGFnIGJlY2F1c2Ugd2UgY2Fubm90IGFjY3VyYXRlbHkgc2V0XG4gICAgLy8gdGhpcyB0YWcgd2hlbiB3ZSBjcmVhdGUgYW4gYXJyYXkgb2YgZmxvYXQuXG4gICAgcmV0dXJuICh0YWcgPT0gMjU0KT8wOnRhZ1xuICB9XG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBTdHJpbmcpIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcInN0cmluZ1wiKSByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIE51bWJlcikgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGEgJiYgYS5jYW1sX2N1c3RvbSkgcmV0dXJuIDEyNTU7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmIChhICYmIGEuY29tcGFyZSkgcmV0dXJuIDEyNTY7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcImZ1bmN0aW9uXCIpIHJldHVybiAxMjQ3OyAvLyBsaWtlIGNsb3N1cmVfdGFnICgyNDcpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwic3ltYm9sXCIpIHJldHVybiAxMjUxO1xuICByZXR1cm4gMTAwMTsgLy9vdXRfb2ZfaGVhcF90YWdcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKXtcbiAgcmV0dXJuIGNhbWxfY3VzdG9tX29wc1thLmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0uY29tcGFyZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShudW0sIGN1c3RvbSwgc3dhcCwgdG90YWwpIHtcbiAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oY3VzdG9tKTtcbiAgaWYoY29tcCkge1xuICAgIHZhciB4ID0gKHN3YXAgPiAwKT9jb21wKGN1c3RvbSxudW0sdG90YWwpOmNvbXAobnVtLGN1c3RvbSx0b3RhbCk7XG4gICAgaWYodG90YWwgJiYgeCAhPSB4KSByZXR1cm4gc3dhcDsgLy8gdG90YWwgJiYgbmFuXG4gICAgaWYoK3ggIT0gK3gpIHJldHVybiAreDsgLy8gbmFuXG4gICAgaWYoKHggfCAwKSAhPSAwKSByZXR1cm4gKHggfCAwKTsgLy8gIW5hblxuICB9XG4gIHJldHVybiBzd2FwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWwgKGNvbnN0LCBjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludF9jb21wYXJlLCBjYW1sX3N0cmluZ19jb21wYXJlLCBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tLCBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRvdGFsKSB7XG4gIHZhciBzdGFjayA9IFtdO1xuICBmb3IoOzspIHtcbiAgICBpZiAoISh0b3RhbCAmJiBhID09PSBiKSkge1xuICAgICAgdmFyIHRhZ19hID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSk7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZih0YWdfYSA9PSAyNTApIHsgYSA9IGFbMV07IGNvbnRpbnVlIH1cblxuICAgICAgdmFyIHRhZ19iID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYik7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZih0YWdfYiA9PSAyNTApIHsgYiA9IGJbMV07IGNvbnRpbnVlIH1cblxuICAgICAgLy8gdGFncyBhcmUgZGlmZmVyZW50XG4gICAgICBpZih0YWdfYSAhPT0gdGFnX2IpIHtcbiAgICAgICAgaWYodGFnX2EgPT0gMTAwMCkge1xuICAgICAgICAgIGlmKHRhZ19iID09IDEyNTUpIHsgLy9pbW1lZGlhdGUgY2FuIGNvbXBhcmUgYWdhaW5zdCBjdXN0b21cbiAgICAgICAgICAgIHJldHVybiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20oYSwgYiwgLTEsIHRvdGFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYodGFnX2IgPT0gMTAwMCkge1xuICAgICAgICAgIGlmKHRhZ19hID09IDEyNTUpIHsgLy9pbW1lZGlhdGUgY2FuIGNvbXBhcmUgYWdhaW5zdCBjdXN0b21cbiAgICAgICAgICAgIHJldHVybiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20oYiwgYSwgMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gMVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAodGFnX2EgPCB0YWdfYik/LTE6MTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCh0YWdfYSl7XG4gICAgICAgIC8vIDI0NjogTGF6eV90YWcgaGFuZGxlZCBiZWxsb3dcbiAgICAgIGNhc2UgMjQ3OiAvLyBDbG9zdXJlX3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI0ODogLy8gT2JqZWN0XG4gICAgICAgIHZhciB4ID0gY2FtbF9pbnRfY29tcGFyZShhWzJdLCBiWzJdKTtcbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDk6IC8vIEluZml4XG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjUwOiAvLyBGb3J3YXJkIHRhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRm9yd2FyZF90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUxOiAvL0Fic3RyYWN0XG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBhYnN0cmFjdCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MjogLy8gT0NhbWwgYnl0ZXNcbiAgICAgICAgaWYgKGEgIT09IGIpIHtcbiAgICAgICAgICB2YXIgeCA9IGNhbWxfYnl0ZXNfY29tcGFyZShhLCBiKTtcbiAgICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MzogLy8gRG91YmxlX3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlbiwgaGFuZGxlZCBhYm92ZVxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IERvdWJsZV9hcnJheV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTU6IC8vIEN1c3RvbV90YWdcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBDdXN0b21fdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNDc6IC8vIEZ1bmN0aW9uXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjU1OiAvLyBDdXN0b21cbiAgICAgICAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYSk7XG4gICAgICAgIGlmKGNvbXAgIT0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGIpKXtcbiAgICAgICAgICByZXR1cm4gKGEuY2FtbF9jdXN0b208Yi5jYW1sX2N1c3RvbSk/LTE6MTtcbiAgICAgICAgfVxuICAgICAgICBpZighY29tcClcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBhYnN0cmFjdCB2YWx1ZVwiKTtcbiAgICAgICAgdmFyIHggPSBjb21wKGEsYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIFVOT1JERVJFRFxuICAgICAgICAgIHJldHVybiB0b3RhbD8tMTp4O1xuICAgICAgICB9XG4gICAgICAgIGlmKHggIT09ICh4fDApKXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjU2OiAvLyBjb21wYXJlIGZ1bmN0aW9uXG4gICAgICAgIHZhciB4ID0gYS5jb21wYXJlKGIsdG90YWwpO1xuICAgICAgICBpZih4ICE9IHgpIHsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwMDA6IC8vIE51bWJlclxuICAgICAgICBhID0gK2E7XG4gICAgICAgIGIgPSArYjtcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMTogLy8gVGhlIHJlc3RcbiAgICAgICAgLy8gSGVyZSB3ZSBjYW4gYmUgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAgICAgLy8gMS4gSmF2YVNjcmlwdCBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy8gMi4gSmF2YVNjcmlwdCBvYmplY3QgdGhhdCBjYW4gYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy8gMy4gSmF2YVNjcmlwdCBvYmplY3QgdGhhbiBjYW5ub3QgYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy9cbiAgICAgICAgLy8gKDMpIHdpbGwgcmFpc2UgYSBbVHlwZUVycm9yXVxuICAgICAgICAvLyAoMikgd2lsbCBjb2VyY2UgdG8gcHJpbWl0aXZlIHR5cGVzIHVzaW5nIFt2YWx1ZU9mXSBvciBbdG9TdHJpbmddXG4gICAgICAgIC8vICgyKSBhbmQgKDMpLCBhZnRlciBldmVudHVhbCBjb2VyY2lvblxuICAgICAgICAvLyAtIGlmIGEgYW5kIGIgYXJlIHN0cmluZ3MsIGFwcGx5IGxleGljb2dyYXBoaWMgY29tcGFyaXNvblxuICAgICAgICAvLyAtIGlmIGEgb3IgYiBhcmUgbm90IHN0cmluZ3MsIGNvbnZlcnQgYSBhbmQgYiB0byBudW1iZXJcbiAgICAgICAgLy8gICBhbmQgYXBwbHkgc3RhbmRhcmQgY29tcGFyaXNvblxuICAgICAgICAvL1xuICAgICAgICAvLyBFeGNlcHRpb246IGAhPWAgd2lsbCBub3QgY29lcmNlL2NvbnZlcnQgaWYgYm90aCBhIGFuZCBiIGFyZSBvYmplY3RzXG4gICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICBpZiAoYSAhPSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICBpZiAoYSA9PSBhKSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoYiA9PSBiKSByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTE6IC8vIEphdmFTY3JpcHQgU3ltYm9sLCBubyBvcmRlcmluZy5cbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTI6IC8vIG9jYW1sIHN0cmluZ3NcbiAgICAgICAgdmFyIGEgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGEpO1xuICAgICAgICB2YXIgYiA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYik7XG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjA6IC8vIGphdmFzY3JpcHQgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGEudG9TdHJpbmcoKTtcbiAgICAgICAgdmFyIGIgPSBiLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjQ2OiAvLyBMYXp5X3RhZ1xuICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheVxuICAgICAgZGVmYXVsdDogLy8gQmxvY2sgd2l0aCBvdGhlciB0YWdcbiAgICAgICAgaWYoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHRhZ19hKSkge1xuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGNvbnRpbnVhdGlvbiB2YWx1ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoYS5sZW5ndGggIT0gYi5sZW5ndGgpIHJldHVybiAoYS5sZW5ndGggPCBiLmxlbmd0aCk/LTE6MTtcbiAgICAgICAgaWYgKGEubGVuZ3RoID4gMSkgc3RhY2sucHVzaChhLCBiLCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzdGFjay5sZW5ndGggPT0gMCkgcmV0dXJuIDA7XG4gICAgdmFyIGkgPSBzdGFjay5wb3AoKTtcbiAgICBiID0gc3RhY2sucG9wKCk7XG4gICAgYSA9IHN0YWNrLnBvcCgpO1xuICAgIGlmIChpICsgMSA8IGEubGVuZ3RoKSBzdGFjay5wdXNoKGEsIGIsIGkgKyAxKTtcbiAgICBhID0gYVtpXTtcbiAgICBiID0gYltpXTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmUgKGEsIGIpIHsgcmV0dXJuIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRydWUpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9jb21wYXJlIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfaW50X2NvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKGEgPCBiKSByZXR1cm4gKC0xKTsgaWYgKGEgPT0gYikgcmV0dXJuIDA7IHJldHVybiAxO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA9PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX25vdGVxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSAhPSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ncmVhdGVyZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVyZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID49IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJ0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZ3JlYXRlcnRoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID4gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbGVzc2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzdGhhbiBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3N0aGFuICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8IDApOyB9XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWI6IGNvZGUgc3BlY2lmaWMgdG8gSnNfb2Zfb2NhbWxcblxuLy9Qcm92aWRlczogY2FtbF9qc19vbl9pZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19vbl9pZSAoKSB7XG4gIHZhciB1YSA9XG4gICAgICAoZ2xvYmFsVGhpcy5uYXZpZ2F0b3ImJmdsb2JhbFRoaXMubmF2aWdhdG9yLnVzZXJBZ2VudClcbiAgICAgID9nbG9iYWxUaGlzLm5hdmlnYXRvci51c2VyQWdlbnQ6XCJcIjtcbiAgcmV0dXJuIHVhLmluZGV4T2YoXCJNU0lFXCIpICE9IC0xICYmIHVhLmluZGV4T2YoXCJPcGVyYVwiKSAhPSAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2h0bWxfZXNjYXBlIGNvbnN0IChjb25zdClcbnZhciBjYW1sX2pzX3JlZ2V4cHMgPSB7IGFtcDovJi9nLCBsdDovPC9nLCBxdW90Oi9cXFwiL2csIGFsbDovWyY8XFxcIl0vIH07XG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZXNjYXBlIChzKSB7XG4gIGlmICghY2FtbF9qc19yZWdleHBzLmFsbC50ZXN0KHMpKSByZXR1cm4gcztcbiAgcmV0dXJuIHMucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMuYW1wLCBcIiZhbXA7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmx0LCBcIiZsdDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMucXVvdCwgXCImcXVvdDtcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lbnRpdGllc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VudGl0aWVzKHMpIHtcbiAgdmFyIGVudGl0eSA9IC9eJiM/WzAtOWEtekEtWl0rOyQvXG4gIGlmKHMubWF0Y2goZW50aXR5KSlcbiAge1xuICAgIHZhciBzdHIsIHRlbXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gICAgdGVtcC5pbm5lckhUTUw9IHM7XG4gICAgc3RyPSB0ZW1wLnRleHRDb250ZW50IHx8IHRlbXAuaW5uZXJUZXh0O1xuICAgIHRlbXA9bnVsbDtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJJbnZhbGlkIGVudGl0eSBcIiArIHMpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0X2NvbnNvbGUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0X2NvbnNvbGUgKCkge1xuICB2YXIgYyA9IGNvbnNvbGU7XG4gIHZhciBtID0gW1wibG9nXCIsIFwiZGVidWdcIiwgXCJpbmZvXCIsIFwid2FyblwiLCBcImVycm9yXCIsIFwiYXNzZXJ0XCIsIFwiZGlyXCIsIFwiZGlyeG1sXCIsXG4gICAgICAgICAgIFwidHJhY2VcIiwgXCJncm91cFwiLCBcImdyb3VwQ29sbGFwc2VkXCIsIFwiZ3JvdXBFbmRcIiwgXCJ0aW1lXCIsIFwidGltZUVuZFwiXTtcbiAgZnVuY3Rpb24gZiAoKSB7fVxuICBmb3IgKHZhciBpID0gMDsgaSA8IG0ubGVuZ3RoOyBpKyspIGlmICghY1ttW2ldXSkgY1ttW2ldXT1mO1xuICByZXR1cm4gYztcbn1cblxuLy9Qcm92aWRlczogY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGUodW5pdCl7XG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLlhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5YTUxIdHRwUmVxdWVzdCB9IGNhdGNoIChlKSB7IH07XG4gIH1cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1zeG1sMi5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNc3htbDMuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTWljcm9zb2Z0LlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgfVxuICBjYW1sX2ZhaWx3aXRoKFwiQ2Fubm90IGNyZWF0ZSBhIFhNTEh0dHBSZXF1ZXN0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmKGV4bi5qc19lcnJvcikgeyByZXR1cm4gZXhuLmpzX2Vycm9yOyB9XG4gIHJldHVybiBudWxsO1xufVxuIiwiLy8vLy8vLy8vIEJJR1NUUklOR1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nKGgsIGJzKSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLGJzLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIoYnMpIHtcbiAgcmV0dXJuIGJzLmRhdGEuYnVmZmVyXG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ190b190eXBlZF9hcnJheSBtdXRhYmxlXG5mdW5jdGlvbiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkoYnMpIHtcbiAgcmV0dXJuIGJzLmRhdGFcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIoYWIpIHtcbiAgdmFyIHRhID0gbmV3IFVpbnQ4QXJyYXkoYWIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKDEyLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkoYmEpIHtcbiAgdmFyIHRhID0gbmV3IFVpbnQ4QXJyYXkoYmEuYnVmZmVyLCBiYS5ieXRlT2Zmc2V0LCBiYS5sZW5ndGggKiBiYS5CWVRFU19QRVJfRUxFTUVOVCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX21lbWNtcFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfbWVtY21wKHMxLCBwb3MxLCBzMiwgcG9zMiwgbGVuKXtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBhID0gY2FtbF9iYV9nZXRfMShzMSxwb3MxICsgaSk7XG4gICAgdmFyIGIgPSBjYW1sX2JhX2dldF8xKHMyLHBvczIgKyBpKTtcbiAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEoYmExLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMS5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKG9mczEgKyBsZW4gPiBiYTEuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gYmExLmRhdGEuc3ViYXJyYXkob2ZzMSxvZnMxK2xlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxwb3MyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3RyMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKHBvczEgKyBsZW4gPiBjYW1sX21sX3N0cmluZ19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEoc3RyMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKHBvczEgKyBsZW4gPiBjYW1sX21sX2J5dGVzX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoc3RyMSkuc2xpY2UocG9zMSxwb3MxICsgbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLG9mczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoYmExLCBwb3MxLCBieXRlczIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMS5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMxID0gYmExLm9mZnNldChwb3MxKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKHBvczIgKyBsZW4gPiBjYW1sX21sX2J5dGVzX2xlbmd0aChieXRlczIpKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gYmExLmRhdGEuc2xpY2Uob2ZzMSwgb2ZzMStsZW4pO1xuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShzbGljZSksIDAsIGJ5dGVzMiwgcG9zMiwgbGVuKTtcbiAgcmV0dXJuIDBcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9jaGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfY2hhbihjaGFuaWQsdG9yZWFkKXtcbiAgdmFyIGN0eCA9IGNhbWxfTUQ1SW5pdCgpO1xuICB2YXIgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoNDA5Nik7XG4gIGlmKHRvcmVhZCA8IDApe1xuICAgIHdoaWxlKHRydWUpe1xuICAgICAgdmFyIHJlYWQgPSBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCxidWZmZXIsMCxidWZmZXIubGVuZ3RoKTtcbiAgICAgIGlmKHJlYWQgPT0gMCkgYnJlYWs7XG4gICAgICBjYW1sX01ENVVwZGF0ZShjdHgsYnVmZmVyLnN1YmFycmF5KDAsIHJlYWQpLCByZWFkKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUodG9yZWFkID4gMCkge1xuICAgICAgdmFyIHJlYWQgPSBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCxidWZmZXIsMCwgKHRvcmVhZCA+IGJ1ZmZlci5sZW5ndGggPyBidWZmZXIubGVuZ3RoIDogdG9yZWFkKSk7XG4gICAgICBpZihyZWFkID09IDApIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCxidWZmZXIuc3ViYXJyYXkoMCwgcmVhZCksIHJlYWQpO1xuICAgICAgdG9yZWFkIC09IHJlYWRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfbWQ1X2J5dGVzXG5mdW5jdGlvbiBjYW1sX21kNV9zdHJpbmcocywgb2ZzLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfbWQ1X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpLG9mcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENVRyYW5zZm9ybVxudmFyIGNhbWxfTUQ1VHJhbnNmb3JtID0gKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gYWRkICh4LCB5KSB7IHJldHVybiAoeCArIHkpIHwgMDsgfVxuICBmdW5jdGlvbiB4eChxLGEsYix4LHMsdCkge1xuICAgIGEgPSBhZGQoYWRkKGEsIHEpLCBhZGQoeCwgdCkpO1xuICAgIHJldHVybiBhZGQoKGEgPDwgcykgfCAoYSA+Pj4gKDMyIC0gcykpLCBiKTtcbiAgfVxuICBmdW5jdGlvbiBmZihhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgYykgfCAoKH5iKSAmIGQpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBnZyhhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgZCkgfCAoYyAmICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBoaChhLGIsYyxkLHgscyx0KSB7IHJldHVybiB4eChiIF4gYyBeIGQsIGEsIGIsIHgsIHMsIHQpOyB9XG4gIGZ1bmN0aW9uIGlpKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGMgXiAoYiB8ICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTsgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAodywgYnVmZmVyKSB7XG4gICAgdmFyIGEgPSB3WzBdLCBiID0gd1sxXSwgYyA9IHdbMl0sIGQgPSB3WzNdO1xuXG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMF0sIDcsIDB4RDc2QUE0NzgpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDFdLCAxMiwgMHhFOEM3Qjc1Nik7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsgMl0sIDE3LCAweDI0MjA3MERCKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWyAzXSwgMjIsIDB4QzFCRENFRUUpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDRdLCA3LCAweEY1N0MwRkFGKTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyA1XSwgMTIsIDB4NDc4N0M2MkEpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbIDZdLCAxNywgMHhBODMwNDYxMyk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsgN10sIDIyLCAweEZENDY5NTAxKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyA4XSwgNywgMHg2OTgwOThEOCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgOV0sIDEyLCAweDhCNDRGN0FGKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTcsIDB4RkZGRjVCQjEpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTFdLCAyMiwgMHg4OTVDRDdCRSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0sIDcsIDB4NkI5MDExMjIpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbMTNdLCAxMiwgMHhGRDk4NzE5Myk7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNF0sIDE3LCAweEE2Nzk0MzhFKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzE1XSwgMjIsIDB4NDlCNDA4MjEpO1xuXG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMV0sIDUsIDB4RjYxRTI1NjIpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbIDZdLCA5LCAweEMwNDBCMzQwKTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWzExXSwgMTQsIDB4MjY1RTVBNTEpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDBdLCAyMCwgMHhFOUI2QzdBQSk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNV0sIDUsIDB4RDYyRjEwNUQpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbMTBdLCA5LCAweDAyNDQxNDUzKTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWzE1XSwgMTQsIDB4RDhBMUU2ODEpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDRdLCAyMCwgMHhFN0QzRkJDOCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOV0sIDUsIDB4MjFFMUNERTYpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbMTRdLCA5LCAweEMzMzcwN0Q2KTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWyAzXSwgMTQsIDB4RjRENTBEODcpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDhdLCAyMCwgMHg0NTVBMTRFRCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDUsIDB4QTlFM0U5MDUpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbIDJdLCA5LCAweEZDRUZBM0Y4KTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWyA3XSwgMTQsIDB4Njc2RjAyRDkpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbMTJdLCAyMCwgMHg4RDJBNEM4QSk7XG5cbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyA1XSwgNCwgMHhGRkZBMzk0Mik7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgOF0sIDExLCAweDg3NzFGNjgxKTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWzExXSwgMTYsIDB4NkQ5RDYxMjIpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTRdLCAyMywgMHhGREU1MzgwQyk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMV0sIDQsIDB4QTRCRUVBNDQpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDRdLCAxMSwgMHg0QkRFQ0ZBOSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsgN10sIDE2LCAweEY2QkI0QjYwKTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWzEwXSwgMjMsIDB4QkVCRkJDNzApO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbMTNdLCA0LCAweDI4OUI3RUM2KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyAwXSwgMTEsIDB4RUFBMTI3RkEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbIDNdLCAxNiwgMHhENEVGMzA4NSk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNl0sIDIzLCAweDA0ODgxRDA1KTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyA5XSwgNCwgMHhEOUQ0RDAzOSk7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMl0sIDExLCAweEU2REI5OUU1KTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWzE1XSwgMTYsIDB4MUZBMjdDRjgpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbIDJdLCAyMywgMHhDNEFDNTY2NSk7XG5cbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyAwXSwgNiwgMHhGNDI5MjI0NCk7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsgN10sIDEwLCAweDQzMkFGRjk3KTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTUsIDB4QUI5NDIzQTcpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDVdLCAyMSwgMHhGQzkzQTAzOSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0sIDYsIDB4NjU1QjU5QzMpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbIDNdLCAxMCwgMHg4RjBDQ0M5Mik7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMF0sIDE1LCAweEZGRUZGNDdEKTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWyAxXSwgMjEsIDB4ODU4NDVERDEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDhdLCA2LCAweDZGQTg3RTRGKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzE1XSwgMTAsIDB4RkUyQ0U2RTApO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbIDZdLCAxNSwgMHhBMzAxNDMxNCk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsxM10sIDIxLCAweDRFMDgxMUExKTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyA0XSwgNiwgMHhGNzUzN0U4Mik7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMV0sIDEwLCAweEJEM0FGMjM1KTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWyAyXSwgMTUsIDB4MkFEN0QyQkIpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDldLCAyMSwgMHhFQjg2RDM5MSk7XG5cbiAgICB3WzBdID0gYWRkKGEsIHdbMF0pO1xuICAgIHdbMV0gPSBhZGQoYiwgd1sxXSk7XG4gICAgd1syXSA9IGFkZChjLCB3WzJdKTtcbiAgICB3WzNdID0gYWRkKGQsIHdbM10pO1xuICB9fSkoKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUluaXRcbmZ1bmN0aW9uIGNhbWxfTUQ1SW5pdCgpIHtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7XG4gIHZhciBiMzIgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyKTtcbiAgdmFyIGI4ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIHtsZW46MCxcbiAgICAgICAgICB3Om5ldyBVaW50MzJBcnJheShbMHg2NzQ1MjMwMSwgMHhFRkNEQUI4OSwgMHg5OEJBRENGRSwgMHgxMDMyNTQ3Nl0pLFxuICAgICAgICAgIGIzMjpiMzIsXG4gICAgICAgICAgYjg6Yjh9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VXBkYXRlXG4vL1JlcXVpcmVzOiBjYW1sX01ENVRyYW5zZm9ybVxuZnVuY3Rpb24gY2FtbF9NRDVVcGRhdGUoY3R4LCBpbnB1dCwgaW5wdXRfbGVuKXtcbiAgdmFyIGluX2J1ZiA9IGN0eC5sZW4gJiAweDNmO1xuICB2YXIgaW5wdXRfcG9zID0gMDtcbiAgY3R4LmxlbiArPSBpbnB1dF9sZW47XG4gIGlmKGluX2J1Zil7XG4gICAgdmFyIG1pc3NpbmcgPSA2NCAtIGluX2J1ZjtcbiAgICBpZihpbnB1dF9sZW4gPCBtaXNzaW5nKSB7XG4gICAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KDAsaW5wdXRfbGVuKSxpbl9idWYpO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCxtaXNzaW5nKSxpbl9idWYpO1xuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBpbnB1dF9sZW4gLT0gbWlzc2luZztcbiAgICBpbnB1dF9wb3MgKz0gbWlzc2luZztcbiAgfVxuICB3aGlsZShpbnB1dF9sZW4gPj0gNjQpe1xuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoaW5wdXRfcG9zLGlucHV0X3BvcyArIDY0KSwgMCk7XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGlucHV0X2xlbiAtPSA2NDtcbiAgICBpbnB1dF9wb3MgKz0gNjQ7XG4gIH1cbiAgaWYoaW5wdXRfbGVuKVxuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoaW5wdXRfcG9zLGlucHV0X3BvcyArIGlucHV0X2xlbiksIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX01ENVRyYW5zZm9ybVxuZnVuY3Rpb24gY2FtbF9NRDVGaW5hbChjdHgpe1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIGN0eC5iOFtpbl9idWZdID0gMHg4MDtcbiAgaW5fYnVmICsrO1xuICBpZihpbl9idWYgPiA1Nikge1xuICAgIGZvcih2YXIgaiA9IGluX2J1ZjsgaiA8IDY0OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGZvcih2YXIgaiA9IDA7IGogPCA1NjsgaisrKXtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvcih2YXIgaiA9IGluX2J1ZjsgaiA8IDU2OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH1cbiAgY3R4LmIzMlsxNF0gPSBjdHgubGVuIDw8IDM7XG4gIGN0eC5iMzJbMTVdID0gKGN0eC5sZW4gPj4gMjkpICYgMHgxRkZGRkZGRjtcbiAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICB2YXIgdCA9IG5ldyBVaW50OEFycmF5KDE2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCA0OyBqKyspXG4gICAgICB0W2kgKiA0ICsgal0gPSAoY3R4LndbaV0gPj4gKDggKiBqKSkgJiAweEZGO1xuICByZXR1cm4gdDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1SW5pdCwgY2FtbF9NRDVVcGRhdGUsIGNhbWxfTUQ1RmluYWxcbmZ1bmN0aW9uIGNhbWxfbWQ1X2J5dGVzKHMsIG9mcywgbGVuKSB7XG4gIHZhciBjdHggPSBjYW1sX01ENUluaXQoKTtcbiAgdmFyIGEgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpO1xuICBjYW1sX01ENVVwZGF0ZShjdHgsYS5zdWJhcnJheShvZnMsIG9mcyArIGxlbiksIGxlbik7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShjYW1sX01ENUZpbmFsKGN0eCkpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDIwIC0gSHVnbyBIZXV6YXJkXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBTaGFjaGFyIEl0emhha3lcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9ibG9iLzQuMDcvb3RoZXJsaWJzL3N0ci9zdHJzdHVicy5jXG4vLyBDb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vanNjb3EvanNjb3EvYmxvYi92OC4xMS9jb3EtanMvanNfc3R1Yi9zdHIuanNcblxuLy9Qcm92aWRlczogcmVfbWF0Y2hcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2dldFxuXG52YXIgcmVfbWF0Y2ggPSBmdW5jdGlvbigpe1xuICB2YXIgcmVfd29yZF9sZXR0ZXJzID0gW1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4MDAtMHgxRjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4RkYsIDB4MDMsICAgICAgIC8qIDB4MjAtMHgzRjogZGlnaXRzIDAtOSAqL1xuICAgIDB4RkUsIDB4RkYsIDB4RkYsIDB4ODcsICAgICAgIC8qIDB4NDAtMHg1RjogQSB0byBaLCBfICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHgwNywgICAgICAgLyogMHg2MC0weDdGOiBhIHRvIHogKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweDgwLTB4OUY6IG5vbmUgKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweEEwLTB4QkY6IG5vbmUgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGLCAgICAgICAvKiAweEMwLTB4REY6IExhdGluLTEgYWNjZW50ZWQgdXBwZXJjYXNlICovXG4gICAgMHhGRiwgMHhGRiwgMHg3RiwgMHhGRiAgICAgICAgLyogMHhFMC0weEZGOiBMYXRpbi0xIGFjY2VudGVkIGxvd2VyY2FzZSAqL1xuICBdO1xuXG4gIHZhciBvcGNvZGVzID0ge1xuICAgIENIQVI6IDAsIENIQVJOT1JNOiAxLCBTVFJJTkc6IDIsIFNUUklOR05PUk06IDMsIENIQVJDTEFTUzogNCxcbiAgICBCT0w6IDUsIEVPTDogNiwgV09SREJPVU5EQVJZOiA3LFxuICAgIEJFR0dST1VQOiA4LCBFTkRHUk9VUDogOSwgUkVGR1JPVVA6IDEwLFxuICAgIEFDQ0VQVDogMTEsXG4gICAgU0lNUExFT1BUOiAxMiwgU0lNUExFU1RBUjogMTMsIFNJTVBMRVBMVVM6IDE0LFxuICAgIEdPVE86IDE1LCBQVVNIQkFDSzogMTYsIFNFVE1BUks6IDE3LFxuICAgIENIRUNLUFJPR1JFU1M6IDE4XG4gIH07XG5cbiAgZnVuY3Rpb24gaXNfd29yZF9sZXR0ZXIoYykge1xuICAgIHJldHVybiAocmVfd29yZF9sZXR0ZXJzWyAgKGMgPj4gMyldID4+IChjICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluX2JpdHNldChzLGkpIHtcbiAgICByZXR1cm4gKGNhbWxfc3RyaW5nX2dldChzLChpID4+IDMpKSA+PiAoaSAmIDcpKSAmIDE7XG4gIH1cblxuICBmdW5jdGlvbiByZV9tYXRjaF9pbXBsKHJlLCBzLCBwb3MsIHBhcnRpYWwpIHtcblxuICAgIHZhciBwcm9nICAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzFdKSxcbiAgICAgICAgY3Bvb2wgICAgICAgICA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsyXSksXG4gICAgICAgIG5vcm10YWJsZSAgICAgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlWzNdKSxcbiAgICAgICAgbnVtZ3JvdXBzICAgICA9IHJlWzRdIHwgMCxcbiAgICAgICAgbnVtcmVnaXN0ZXJzICA9IHJlWzVdIHwgMCxcbiAgICAgICAgc3RhcnRjaGFycyAgICA9IHJlWzZdIHwgMDtcblxuICAgIHZhciBzID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcocyk7XG5cbiAgICB2YXIgcGMgPSAwLFxuICAgICAgICBxdWl0ID0gZmFsc2UsXG4gICAgICAgIHN0YWNrID0gW10sXG4gICAgICAgIGdyb3VwcyA9IG5ldyBBcnJheShudW1ncm91cHMpLFxuICAgICAgICByZV9yZWdpc3RlciA9IG5ldyBBcnJheShudW1yZWdpc3RlcnMpO1xuXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICBncm91cHNbaV0gPSB7c3RhcnQ6IC0xLCBlbmQ6LTF9XG4gICAgfVxuICAgIGdyb3Vwc1swXS5zdGFydCA9IHBvcztcblxuICAgIHZhciBiYWNrdHJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7XG4gICAgICAgIHZhciBpdGVtID0gc3RhY2sucG9wKCk7XG4gICAgICAgIGlmIChpdGVtLnVuZG8pIHtcbiAgICAgICAgICBpdGVtLnVuZG8ub2JqW2l0ZW0udW5kby5wcm9wXSA9IGl0ZW0udW5kby52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKGl0ZW0ucG9zKSB7XG4gICAgICAgICAgcGMgPSBpdGVtLnBvcy5wYztcbiAgICAgICAgICBwb3MgPSBpdGVtLnBvcy50eHQ7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBxdWl0ID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgdmFyIHB1c2ggPSBmdW5jdGlvbihpdGVtKSB7IHN0YWNrLnB1c2goaXRlbSk7IH07XG5cbiAgICB2YXIgYWNjZXB0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZ3JvdXBzWzBdLmVuZCA9IHBvcztcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkoMSArIGdyb3Vwcy5sZW5ndGgqMik7XG4gICAgICByZXN1bHRbMF0gPSAwOyAvLyB0YWdcbiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspe1xuICAgICAgICB2YXIgZyA9IGdyb3Vwc1tpXTtcbiAgICAgICAgaWYoZy5zdGFydCA8IDAgfHwgZy5lbmQgPCAwKSB7XG4gICAgICAgICAgZy5zdGFydCA9IGcuZW5kID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0WzIqaSArIDEgXSA9IGcuc3RhcnQ7XG4gICAgICAgIHJlc3VsdFsyKmkgKyAxICsgMSBdID0gZy5lbmQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH07XG5cbiAgICB2YXIgcHJlZml4X21hdGNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYocGFydGlhbCkgcmV0dXJuIGFjY2VwdCAoKTtcbiAgICAgIGVsc2UgYmFja3RyYWNrICgpO1xuICAgIH1cblxuICAgIC8qIE1haW4gREZBIGludGVycHJldGVyIGxvb3AgKi9cbiAgICB3aGlsZSAoIXF1aXQpIHtcbiAgICAgIHZhciBvcCA9IHByb2dbcGNdICYgMHhmZixcbiAgICAgICAgICBzYXJnID0gcHJvZ1twY10gPj4gOCxcbiAgICAgICAgICB1YXJnID0gc2FyZyAmIDB4ZmYsXG4gICAgICAgICAgYyA9IHNbcG9zXSxcbiAgICAgICAgICBncm91cDtcblxuICAgICAgcGMrKztcblxuICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVI6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGMgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSTk9STTpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TVFJJTkc6XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAoYyA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklOR05PUk06XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IGFyZy5jaGFyQ29kZUF0KGkpKVxuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIGVsc2UgeyBiYWNrdHJhY2soKTsgYnJlYWs7IH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSQ0xBU1M6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CT0w6XG4gICAgICAgIGlmKHBvcyA+IDAgJiYgc1twb3MgLSAxXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuRU9MOlxuICAgICAgICBpZihwb3MgPCBzLmxlbmd0aCAmJiBzW3Bvc10gIT0gMTAgLyogXFxuICovKSB7YmFja3RyYWNrKCl9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLldPUkRCT1VOREFSWTpcbiAgICAgICAgaWYocG9zID09IDApIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1swXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjaygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzW3BvcyAtIDFdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pICE9IGlzX3dvcmRfbGV0dGVyKHNbcG9zXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjayAoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CRUdHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6Z3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ3JvdXAuc3RhcnR9fSk7XG4gICAgICAgIGdyb3VwLnN0YXJ0ID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FTkRHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6IGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDonZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5lbmR9fSk7XG4gICAgICAgIGdyb3VwLmVuZCA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUkVGR1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBpZihncm91cC5zdGFydCA8IDAgfHwgZ3JvdXAuZW5kIDwgMCkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgIGZvciAodmFyIGkgPSBncm91cC5zdGFydDsgaSA8IGdyb3VwLmVuZDsgaSsrKXtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoc1tpXSAhPSBzW3Bvc10pIHtiYWNrdHJhY2sgKCk7IGJyZWFrfVxuICAgICAgICAgIHBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRU9QVDpcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVTVEFSOlxuICAgICAgICB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSlcbiAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVBMVVM6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgfSB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQUNDRVBUOlxuICAgICAgICByZXR1cm4gYWNjZXB0KCk7XG4gICAgICBjYXNlIG9wY29kZXMuR09UTzpcbiAgICAgICAgcGMgPSBwYyArIHNhcmc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlBVU0hCQUNLOlxuICAgICAgICBwdXNoKHtwb3M6IHtwYzogcGMgKyBzYXJnLCB0eHQ6IHBvc319KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0VUTUFSSzpcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpyZV9yZWdpc3RlcixcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6IHVhcmcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcmVfcmVnaXN0ZXJbdWFyZ119fSk7XG4gICAgICAgIHJlX3JlZ2lzdGVyW3VhcmddID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEVDS1BST0dSRVNTOlxuICAgICAgICBpZiAocmVfcmVnaXN0ZXJbdWFyZ10gPT09IHBvcykgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBieXRlY29kZVwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gcmVfbWF0Y2hfaW1wbDtcbn0oKTtcblxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfZm9yd2FyZFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zZWFyY2hfZm9yd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfZm9yd2FyZFwiKVxuICB3aGlsZSAocG9zIDw9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkge1xuICAgIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgIHBvcysrO1xuICB9XG5cbiAgcmV0dXJuIFswXTsgIC8qIFt8fF0gOiBpbnQgYXJyYXkgKi9cbn1cblxuLy9Qcm92aWRlczogcmVfc2VhcmNoX2JhY2t3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9iYWNrd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfYmFja3dhcmRcIilcbiAgd2hpbGUgKHBvcyA+PSAwKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zLS07XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG5cbi8vUHJvdmlkZXM6IHJlX3N0cmluZ19tYXRjaFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zdHJpbmdfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc3RyaW5nX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9wYXJ0aWFsX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3BhcnRpYWxfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIucGFydGlhbF9tYXRjaFwiKVxuICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMSk7XG4gIGlmIChyZXMpIHJldHVybiByZXM7XG4gIGVsc2UgcmV0dXJuIFswXTtcbn1cblxuLy9Qcm92aWRlczogcmVfcmVwbGFjZW1lbnRfdGV4dFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9hcnJheV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vIGV4dGVybmFsIHJlX3JlcGxhY2VtZW50X3RleHQ6IHN0cmluZyAtPiBpbnQgYXJyYXkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuZnVuY3Rpb24gcmVfcmVwbGFjZW1lbnRfdGV4dChyZXBsLGdyb3VwcyxvcmlnKSB7XG4gIHZhciByZXBsID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhyZXBsKTtcbiAgdmFyIGxlbiA9IHJlcGwubGVuZ3RoO1xuICB2YXIgb3JpZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob3JpZyk7XG4gIHZhciByZXMgPSBcIlwiOyAvL3Jlc3VsdFxuICB2YXIgbiA9IDA7IC8vIGN1cnJlbnQgcG9zaXRpb25cbiAgdmFyIGN1cjsgLy9jdXJyZW50IGNoYXJcbiAgdmFyIHN0YXJ0LCBlbmQsIGM7XG4gIHdoaWxlKG4gPCBsZW4pe1xuICAgIGN1ciA9IHJlcGwuY2hhckF0KG4rKyk7XG4gICAgaWYoY3VyICE9ICdcXFxcJyl7XG4gICAgICByZXMgKz0gY3VyO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKG4gPT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCIpO1xuICAgICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICAgIHN3aXRjaChjdXIpe1xuICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgIHJlcyArPSBjdXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOlxuICAgICAgY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgICBjID0gK2N1cjtcbiAgICAgICAgaWYgKGMqMiA+PSBncm91cHMubGVuZ3RoIC0gMSApXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIgKTtcbiAgICAgICAgc3RhcnQgPSBjYW1sX2FycmF5X2dldChncm91cHMsYyoyKTtcbiAgICAgICAgZW5kID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLCBjKjIgKzEpO1xuICAgICAgICBpZiAoc3RhcnQgPT0gLTEpXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIpO1xuICAgICAgICByZXMrPW9yaWcuc2xpY2Uoc3RhcnQsZW5kKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXMgKz0gKCdcXFxcJyAgKyBjdXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhyZXMpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9zdHJfaW5pdGlhbGl6ZVxuZnVuY3Rpb24gY2FtbF9zdHJfaW5pdGlhbGl6ZSh1bml0KSB7XG4gIHJldHVybiAwO1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IGxleGluZy5jIDYwNDUgMjAwNC0wMS0wMSAxNjo0Mjo0M1ogZG9saWdleiAkICovXG5cbi8qIFRoZSB0YWJsZS1kcml2ZW4gYXV0b21hdG9uIGZvciBsZXhlcnMgZ2VuZXJhdGVkIGJ5IGNhbWxsZXguICovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2xleF9hcnJheShzKSB7XG4gIHMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpO1xuICB2YXIgbCA9IHMubGVuZ3RoIC8gMjtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgIGFbaV0gPSAocy5jaGFyQ29kZUF0KDIgKiBpKSB8IChzLmNoYXJDb2RlQXQoMiAqIGkgKyAxKSA8PCA4KSkgPDwgMTYgPj4gMTY7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuXG4gIGlmICghdGJsLmxleF9kZWZhdWx0KSB7XG4gICAgdGJsLmxleF9iYXNlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV0pO1xuICAgIHRibC5sZXhfYmFja3RyayA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF0pO1xuICB9XG5cbiAgdmFyIGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMobGV4YnVmW2xleF9idWZmZXJdKTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvcig7Oykge1xuICAgIC8qIExvb2t1cCBiYXNlIGFkZHJlc3Mgb3IgYWN0aW9uIG51bWJlciBmb3IgY3VycmVudCBzdGF0ZSAqL1xuICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0YXRlXTtcbiAgICBpZiAoYmFzZSA8IDApIHJldHVybiAtYmFzZS0xO1xuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09IHN0YXRlKVxuICAgICAgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfZGVmYXVsdFtzdGF0ZV07XG4gICAgLyogSWYgbm8gdHJhbnNpdGlvbiBvbiB0aGlzIGNoYXIsIHJldHVybiB0byBsYXN0IGJhY2t0cmFjayBwb2ludCAqL1xuICAgIGlmIChzdGF0ZSA8IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0X3Bvc107XG4gICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfWVsc2V7XG4gICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlmIHRoZSBFT0YgcHNldWRvLWNoYXJhY3RlciB3YXNcbiAgICAgICAgIGNvbnN1bWVkIGJ5IHRoZSBhdXRvbWF0b24gKGkuZS4gdGhlcmUgd2FzIG5vIGJhY2t0cmFjayBhYm92ZSlcbiAgICAgICovXG4gICAgICBpZiAoYyA9PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogTmV3IGxleGVyIGVuZ2luZSwgd2l0aCBtZW1vcnkgb2YgcG9zaXRpb25zICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9sZXhfcnVuX21lbShzLCBpLCBtZW0sIGN1cnJfcG9zKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm47XG4gICAgdmFyIHNyYyA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChzcmMgPT0gMHhmZilcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBjdXJyX3BvcztcbiAgICBlbHNlXG4gICAgICBtZW0gW2RzdCArIDFdID0gbWVtIFtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fdGFnKHMsIGksIG1lbSkge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChkc3QgPT0gMHhmZikgcmV0dXJuIDtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IC0xO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbmV3X2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9tZW0gPSAxMDtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuICB2YXIgbGV4X2Jhc2VfY29kZSA9IDY7XG4gIHZhciBsZXhfYmFja3Rya19jb2RlID0gNztcbiAgdmFyIGxleF9kZWZhdWx0X2NvZGUgPSA4O1xuICB2YXIgbGV4X3RyYW5zX2NvZGUgPSA5O1xuICB2YXIgbGV4X2NoZWNrX2NvZGUgPSAxMDtcbiAgdmFyIGxleF9jb2RlID0gMTE7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHRfY29kZSkge1xuICAgIHRibC5sZXhfYmFzZV9jb2RlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV9jb2RlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrX2NvZGUgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrX2NvZGVdKTtcbiAgICB0YmwubGV4X2NoZWNrX2NvZGUgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrX2NvZGVdKTtcbiAgICB0YmwubGV4X3RyYW5zX2NvZGUgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zX2NvZGVdKTtcbiAgICB0YmwubGV4X2RlZmF1bHRfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRfY29kZV0pO1xuICB9XG4gIGlmICh0YmwubGV4X2NvZGUgPT0gbnVsbCkgdGJsLmxleF9jb2RlID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh0YmxbbGV4X2NvZGVdKTtcblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkge1xuICAgICAgdmFyIHBjX29mZiA9IHRibC5sZXhfYmFzZV9jb2RlW3N0YXRlXTtcbiAgICAgIGNhbWxfbGV4X3J1bl90YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSk7XG4gICAgICByZXR1cm4gLWJhc2UtMTtcbiAgICB9XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgdmFyIHBjX29mZiA9IHRibC5sZXhfYmFja3Rya19jb2RlW3N0YXRlXTtcbiAgICAgIGNhbWxfbGV4X3J1bl90YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSk7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKXtcbiAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PSAwKVxuICAgICAgICByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2VcbiAgICAgICAgYyA9IDI1NjtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIFJlYWQgbmV4dCBpbnB1dCBjaGFyICovXG4gICAgICBjID0gYnVmZmVyW2xleGJ1ZltsZXhfY3Vycl9wb3NdXTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdICsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIHZhciBwc3RhdGUgPSBzdGF0ZSA7XG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09IHN0YXRlKVxuICAgICAgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfZGVmYXVsdFtzdGF0ZV07XG4gICAgLyogSWYgbm8gdHJhbnNpdGlvbiBvbiB0aGlzIGNoYXIsIHJldHVybiB0byBsYXN0IGJhY2t0cmFjayBwb2ludCAqL1xuICAgIGlmIChzdGF0ZSA8IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0X3Bvc107XG4gICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfWVsc2V7XG4gICAgICAvKiBJZiBzb21lIHRyYW5zaXRpb24sIGdldCBhbmQgcGVyZm9ybSBtZW1vcnkgbW92ZXMgKi9cbiAgICAgIHZhciBiYXNlX2NvZGUgPSB0YmwubGV4X2Jhc2VfY29kZVtwc3RhdGVdLCBwY19vZmY7XG4gICAgICBpZiAodGJsLmxleF9jaGVja19jb2RlW2Jhc2VfY29kZSArIGNdID09IHBzdGF0ZSlcbiAgICAgICAgcGNfb2ZmID0gdGJsLmxleF90cmFuc19jb2RlW2Jhc2VfY29kZSArIGNdO1xuICAgICAgZWxzZVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X2RlZmF1bHRfY29kZVtwc3RhdGVdO1xuICAgICAgaWYgKHBjX29mZiA+IDApXG4gICAgICAgIGNhbWxfbGV4X3J1bl9tZW1cbiAgICAgICh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dLCBsZXhidWZbbGV4X2N1cnJfcG9zXSk7XG4gICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlmIHRoZSBFT0YgcHNldWRvLWNoYXJhY3RlciB3YXNcbiAgICAgICAgIGNvbnN1bWVkIGJ5IHRoZSBhdXRvbWF0b24gKGkuZS4gdGhlcmUgd2FzIG5vIGJhY2t0cmFjayBhYm92ZSlcbiAgICAgICovXG4gICAgICBpZiAoYyA9PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gQXJyYXlcblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9zdWIgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9zdWIgKGEsIGksIGxlbikge1xuICB2YXIgYTIgPSBuZXcgQXJyYXkobGVuKzEpO1xuICBhMlswXT0wO1xuICBmb3IodmFyIGkyID0gMSwgaTE9IGkrMTsgaTIgPD0gbGVuOyBpMisrLGkxKysgKXtcbiAgICBhMltpMl09YVtpMV07XG4gIH1cbiAgcmV0dXJuIGEyO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2FwcGVuZCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X2FwcGVuZChhMSwgYTIpIHtcbiAgdmFyIGwxID0gYTEubGVuZ3RoLCBsMiA9IGEyLmxlbmd0aDtcbiAgdmFyIGwgPSBsMStsMi0xXG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBhWzBdID0gMDtcbiAgdmFyIGkgPSAxLGogPSAxO1xuICBmb3IoO2k8bDE7aSsrKSBhW2ldPWExW2ldO1xuICBmb3IoO2k8bDtpKyssaisrKSBhW2ldPWEyW2pdO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9jb25jYXQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9jb25jYXQobCkge1xuICB2YXIgYSA9IFswXTtcbiAgd2hpbGUgKGwgIT09IDApIHtcbiAgICB2YXIgYiA9IGxbMV07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiLmxlbmd0aDsgaSsrKSBhLnB1c2goYltpXSk7XG4gICAgbCA9IGxbMl07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9ibGl0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIGlmIChpMiA8PSBpMSkge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IGxlbjsgaisrKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBqID0gbGVuOyBqID49IDE7IGotLSkgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH07XG4gIHJldHVybiAwO1xufVxuXG4vLy8vLy8vLy8vLy8vIFBlcnZhc2l2ZVxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9zZXQgKGFycmF5LCBpbmRleCwgbmV3dmFsKSB7XG4gIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYXJyYXlbaW5kZXgrMV09bmV3dmFsOyByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9nZXQgbXV0YWJsZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2FycmF5X2dldCAoYXJyYXksIGluZGV4KSB7XG4gIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5W2luZGV4KzFdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfZmlsbChhcnJheSwgb2ZzLCBsZW4sIHYpe1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIGFycmF5W29mcytpKzFdID0gdjtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jaGVja19ib3VuZCAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2NoZWNrX2JvdW5kIChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKGluZGV4ID4+PiAwID49IGFycmF5Lmxlbmd0aCAtIDEpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfdmVjdCBjb25zdCAoY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21ha2VfdmVjdCAobGVuLCBpbml0KSB7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0wO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gaW5pdDtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9mbG9hdF92ZWN0IGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV9mbG9hdF92ZWN0KGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlKGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuIiwiLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzXG52YXIgY2FtbF9kb21haW5fZGxzID0gWzBdO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9kbHNcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX2Rsc19zZXQoYSkge1xuICBjYW1sX2RvbWFpbl9kbHMgPSBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9kbHNcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX2Rsc19nZXQodW5pdCkge1xuICByZXR1cm4gY2FtbF9kb21haW5fZGxzO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2xvYWRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2xvYWQocmVmKXtcbiAgcmV0dXJuIHJlZlsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfY2FzXG5mdW5jdGlvbiBjYW1sX2F0b21pY19jYXMocmVmLG8sbikge1xuICBpZihyZWZbMV0gPT09IG8pe1xuICAgIHJlZlsxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2ZldGNoX2FkZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZmV0Y2hfYWRkKHJlZiwgaSkge1xuICB2YXIgb2xkID0gcmVmWzFdO1xuICByZWZbMV0gKz0gaTtcbiAgcmV0dXJuIG9sZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfZXhjaGFuZ2VcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2V4Y2hhbmdlKHJlZiwgdikge1xuICB2YXIgciA9IHJlZlsxXTtcbiAgcmVmWzFdID0gdjtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZChhKSB7XG4gIHJldHVybiBbMCwgYV1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXG4vL1ZlcnNpb246IDwgNS4yXG52YXIgY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXyA9IFswXVxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuKHVuaXQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl9cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9zZXRfbmFtZVxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fc2V0X25hbWUoX25hbWUpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XG5mdW5jdGlvbiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCh1bml0KSB7IHJldHVybiAxIH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9pZFxudmFyIGNhbWxfZG9tYWluX2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA+PSA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMVxuZnVuY3Rpb24gY2FtbF9kb21haW5fc3Bhd24oZix0ZXJtX3N5bmMpe1xuICAgIHZhciBpZCA9IGNhbWxfZG9tYWluX2xhdGVzdF9pZHgrKztcbiAgICB2YXIgb2xkID0gY2FtbF9kb21haW5faWQ7XG4gICAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLFswXSk7XG4gICAgY2FtbF9kb21haW5faWQgPSBvbGQ7XG4gICAgY2FtbF9tbF9tdXRleF91bmxvY2sodGVybV9zeW5jWzJdKTtcbiAgICAvL1RPRE86IGZpeCBleG4gY2FzZVxuICAgIHRlcm1fc3luY1sxXSA9IFswLCBbMCwgcmVzXV07XG4gICAgcmV0dXJuIGlkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9zcGF3blxuLy9SZXF1aXJlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG4vL1ZlcnNpb246IDwgNS4yXG52YXIgY2FtbF9kb21haW5fbGF0ZXN0X2lkeCA9IDFcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX3NwYXduKGYsbXV0ZXgpe1xuICAgIHZhciBpZCA9IGNhbWxfZG9tYWluX2xhdGVzdF9pZHgrKztcbiAgICB2YXIgb2xkID0gY2FtbF9kb21haW5faWQ7XG4gICAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLFswXSk7XG4gICAgY2FtbF9kb21haW5faWQgPSBvbGQ7XG4gICAgY2FtbF9tbF9tdXRleF91bmxvY2sobXV0ZXgpO1xuICAgIHJldHVybiBpZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX2lkKHVuaXQpe1xuICAgIHJldHVybiBjYW1sX2RvbWFpbl9pZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXhcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX2NwdV9yZWxheCh1bml0KXtcbiAgICByZXR1cm4gMDtcbn1cbiIsIlxuLy9Qcm92aWRlczogTWxNdXRleFxuZnVuY3Rpb24gTWxNdXRleCgpIHtcbiAgdGhpcy5sb2NrZWQgPSBmYWxzZVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X25ld1xuLy9SZXF1aXJlczogTWxNdXRleFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9uZXcodW5pdCkge1xuICByZXR1cm4gbmV3IE1sTXV0ZXgoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF9sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X2xvY2sodCkge1xuICBpZih0LmxvY2tlZClcbiAgICBjYW1sX2ZhaWx3aXRoKFwiTXV0ZXgubG9jazogbXV0ZXggYWxyZWFkeSBsb2NrZWQuIENhbm5vdCB3YWl0LlwiKTtcbiAgZWxzZSB0LmxvY2tlZCA9IHRydWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X3RyeV9sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3RyeV9sb2NrKHQpIHtcbiAgaWYoIXQubG9ja2VkKSB7XG4gICAgdC5sb2NrZWQgPSB0cnVlO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF91bmxvY2sodCkge1xuICB0LmxvY2tlZCA9IGZhbHNlO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBXZWFrIEFQSVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxudmFyIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ID0gM1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbnZhciBjYW1sX2VwaGVfZGF0YV9vZmZzZXQgPSAyXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2tleSh4LCBpLCB2KSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5zZXRcIik7XG4gIGlmICh2IGluc3RhbmNlb2YgT2JqZWN0ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKHhbMV0ucmVnaXN0ZXIpIHhbMV0ucmVnaXN0ZXIodiwgdW5kZWZpbmVkLCB2KTtcbiAgICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSBuZXcgZ2xvYmFsVGhpcy5XZWFrUmVmKHYpO1xuICB9XG4gIGVsc2UgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdjtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3Vuc2V0X2tleSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5zZXRcIik7XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYgJiYgeFsxXS51bnJlZ2lzdGVyKSB7XG4gICAgdmFyIG9sZCA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXS5kZXJlZigpO1xuICAgIGlmKG9sZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgY291bnQgPSAwXG4gICAgICBmb3IodmFyIGogPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaiA8IHgubGVuZ3RoOyBqKyspe1xuICAgICAgICB2YXIga2V5ID0geFtqXTtcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKXtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKVxuICAgICAgICAgIGlmKGtleSA9PT0gb2xkKSBjb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZihjb3VudCA9PSAxKSB4WzFdLnVucmVnaXN0ZXIob2xkKTtcbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdW5kZWZpbmVkO1xuICByZXR1cm4gMFxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19jcmVhdGUsIGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2NyZWF0ZSAobikge1xuICB2YXIgeCA9IGNhbWxfd2Vha19jcmVhdGUobik7XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF93ZWFrX2NyZWF0ZSAobikge1xuICBpZiAobiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmNyZWF0ZVwiKTtcbiAgdmFyIHggPSBbMjUxLFwiY2FtbF9lcGhlX2xpc3RfaGVhZFwiXTtcbiAgeC5sZW5ndGggPSBjYW1sX2VwaGVfa2V5X29mZnNldCArIG47XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9zZXRfa2V5LCBjYW1sX2VwaGVfdW5zZXRfa2V5XG5mdW5jdGlvbiBjYW1sX3dlYWtfc2V0KHgsIGksIHYpIHtcbiAgaWYodiA9PSAwKSBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsaSlcbiAgZWxzZSBjYW1sX2VwaGVfc2V0X2tleSh4LGksdlsxXSlcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9BbGlhczogY2FtbF93ZWFrX2dldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9rZXkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2tleVwiKTtcbiAgdmFyIHdlYWsgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSBdO1xuICBpZihnbG9iYWxUaGlzLldlYWtSZWYgJiYgd2VhayBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikgd2VhayA9IHdlYWsuZGVyZWYoKTtcbiAgcmV0dXJuICh3ZWFrPT09dW5kZWZpbmVkKT8wOlswLCB3ZWFrXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfa2V5LGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXAsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9BbGlhczogY2FtbF93ZWFrX2dldF9jb3B5XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmdldF9jb3B5XCIpO1xuICB2YXIgeSA9IGNhbWxfZXBoZV9nZXRfa2V5KHgsIGkpO1xuICBpZiAoeSA9PT0gMCkgcmV0dXJuIHk7XG4gIHZhciB6ID0geVsxXTtcbiAgaWYgKHogaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeildO1xuICByZXR1cm4geTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2tleSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9BbGlhczogY2FtbF93ZWFrX2NoZWNrXG5mdW5jdGlvbiBjYW1sX2VwaGVfY2hlY2tfa2V5KHgsIGkpIHtcbiAgdmFyIHdlYWsgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV07XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB3ZWFrID0gd2Vhay5kZXJlZigpO1xuICBpZih3ZWFrPT09dW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2tleVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9BbGlhczogY2FtbF93ZWFrX2JsaXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9ibGl0X2tleShhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIC8vIG1pbnVzIG9uZSBiZWNhdXNlIGNhbWxfYXJyYXlfYmxpdCB3b3JrcyBvbiBvY2FtbCBhcnJheVxuICBjYW1sX2FycmF5X2JsaXQoYTEsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTEgLSAxLFxuICAgICAgICAgICAgICAgICAgYTIsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTIgLSAxLFxuICAgICAgICAgICAgICAgICAgbGVuKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX3NldF9kYXRhLCBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfZGF0YShzcmMsIGRzdCl7XG4gIHZhciBuID0gc3JjW2NhbWxfZXBoZV9kYXRhX29mZnNldF07XG4gIGlmKG4gPT09IHVuZGVmaW5lZCkgY2FtbF9lcGhlX3Vuc2V0X2RhdGEoZHN0KTtcbiAgZWxzZSBjYW1sX2VwaGVfc2V0X2RhdGEoZHN0LCBuKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF1dO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXBcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5KHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiBbMCwgY2FtbF9vYmpfZHVwKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2RhdGEoeCwgZGF0YSl7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoISAoeFsxXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkpKSB7XG4gICAgICB4WzFdID0gbmV3IGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkoZnVuY3Rpb24gKCkgeyBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4KSB9KTtcbiAgICAgIC8vcmVnaXN0ZXIgYWxsIGtleXNcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKTtcbiAgICAgICAgICBpZihrZXkpIHhbMV0ucmVnaXN0ZXIoa2V5LCB1bmRlZmluZWQsIGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gZGF0YTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4KXtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZih4WzFdIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSl7XG4gICAgICAvL3VucmVnaXN0ZXIgYWxsIGtleXNcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKTtcbiAgICAgICAgICBpZihrZXkpIHhbMV0udW5yZWdpc3RlcihrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IHVuZGVmaW5lZDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19kYXRhKHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiAxO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiBjYW1sX2x4bV9uZXh0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfeG9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FkZFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9tdWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2V0XzFcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX25ld19zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbHhtX25leHQodikge1xuICBmdW5jdGlvbiBzaGlmdF9sKHgsIGspe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQoeCxrKTtcbiAgfVxuICBmdW5jdGlvbiBzaGlmdF9yKHgsIGspe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsayk7XG4gIH1cbiAgZnVuY3Rpb24gb3IoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfb3IoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiB4b3IoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfeG9yKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gYWRkKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X2FkZChhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIG11bChhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9tdWwoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiByb3RsKHgsIGspIHtcbiAgICByZXR1cm4gb3Ioc2hpZnRfbCh4LGspLHNoaWZ0X3IgKHgsIDY0IC0gaykpO1xuICB9XG4gIGZ1bmN0aW9uIGdldChhLCBpKSB7XG4gICAgcmV0dXJuIGNhbWxfYmFfZ2V0XzEoYSwgaSk7XG4gIH1cbiAgZnVuY3Rpb24gc2V0KGEsIGksIHgpIHtcbiAgICByZXR1cm4gY2FtbF9iYV9zZXRfMShhLCBpLCB4KTtcbiAgfVxuICB2YXIgTSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKGNhbWxfbmV3X3N0cmluZyhcIjB4ZDEzNDI1NDNkZTgyZWY5NVwiKSk7XG4gIHZhciBkYWJhID0gY2FtbF9pbnQ2NF9vZl9zdHJpbmcoY2FtbF9uZXdfc3RyaW5nKFwiMHhkYWJhMGI2ZWIwOTMyMmUzXCIpKTtcbiAgdmFyIHosIHEwLCBxMTtcbiAgdmFyIHN0ID0gdjtcbiAgdmFyIGEgPSBnZXQoc3QsMCk7XG4gIHZhciBzID0gZ2V0KHN0LDEpO1xuICB2YXIgeDAgPSBnZXQoc3QsMik7XG4gIHZhciB4MSA9IGdldChzdCwzKTtcbiAgLyogQ29tYmluaW5nIG9wZXJhdGlvbiAqL1xuICB6ID0gYWRkKHMsIHgwKTtcbiAgLyogTWl4aW5nIGZ1bmN0aW9uICovXG4gIHogPSBtdWwoeG9yKHosc2hpZnRfcih6LDMyKSksIGRhYmEpO1xuICB6ID0gbXVsKHhvcih6LHNoaWZ0X3IoeiwzMikpLCBkYWJhKTtcbiAgeiA9IHhvcih6LHNoaWZ0X3IoeiwzMikpO1xuICAvKiBMQ0cgdXBkYXRlICovXG4gIHNldChzdCwgMSwgYWRkIChtdWwocyxNKSwgYSkpO1xuICAvKiBYQkcgdXBkYXRlICovXG4gIHZhciBxMCA9IHgwXG4gIHZhciBxMSA9IHgxXG4gIHExID0geG9yKHExLHEwKTtcbiAgcTAgPSByb3RsKHEwLCAyNCk7XG4gIHEwID0geG9yKHhvcihxMCwgcTEpLCAoc2hpZnRfbChxMSwxNikpKTtcbiAgcTEgPSByb3RsKHExLCAzNyk7XG4gIHNldChzdCwgMiwgcTApO1xuICBzZXQoc3QsIDMsIHExKTtcbiAgLyogUmV0dXJuIHJlc3VsdCAqL1xuICByZXR1cm4gejtcbn1cbiIsIlxuLy9Qcm92aWRlczogenN0ZF9kZWNvbXByZXNzXG4vL1ZlcnNpb246ID49IDUuMVxudmFyIHpzdGRfZGVjb21wcmVzcyA9IChmdW5jdGlvbiAoKSB7XG5cInVzZSBzdHJpY3RcIjtcbi8vIGFsaWFzZXMgZm9yIHNob3J0ZXIgY29tcHJlc3NlZCBjb2RlIChtb3N0IG1pbmlmZXJzIGRvbid0IGRvIHRoaXMpXG52YXIgYWIgPSBBcnJheUJ1ZmZlciwgdTggPSBVaW50OEFycmF5LCB1MTYgPSBVaW50MTZBcnJheSwgaTE2ID0gSW50MTZBcnJheSwgdTMyID0gVWludDMyQXJyYXksIGkzMiA9IEludDMyQXJyYXk7XG52YXIgc2xjID0gZnVuY3Rpb24gKHYsIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLnNsaWNlKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLnNsaWNlLmNhbGwodiwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICB2YXIgbiA9IG5ldyB1OChlIC0gcyk7XG4gICAgbi5zZXQodi5zdWJhcnJheShzLCBlKSk7XG4gICAgcmV0dXJuIG47XG59O1xudmFyIGZpbGwgPSBmdW5jdGlvbiAodiwgbiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuZmlsbClcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5maWxsLmNhbGwodiwgbiwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICBmb3IgKDsgcyA8IGU7ICsrcylcbiAgICAgICAgdltzXSA9IG47XG4gICAgcmV0dXJuIHY7XG59O1xudmFyIGNwdyA9IGZ1bmN0aW9uICh2LCB0LCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5jb3B5V2l0aGluKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLmNvcHlXaXRoaW4uY2FsbCh2LCB0LCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIHdoaWxlIChzIDwgZSkge1xuICAgICAgICB2W3QrK10gPSB2W3MrK107XG4gICAgfVxufTtcbi8qKlxuICogQ29kZXMgZm9yIGVycm9ycyBnZW5lcmF0ZWQgd2l0aGluIHRoaXMgbGlicmFyeVxuICovXG4vLyBlcnJvciBjb2Rlc1xudmFyIGVjID0gW1xuICAgICdpbnZhbGlkIHpzdGQgZGF0YScsXG4gICAgJ3dpbmRvdyBzaXplIHRvbyBsYXJnZSAoPjIwNDZNQiknLFxuICAgICdpbnZhbGlkIGJsb2NrIHR5cGUnLFxuICAgICdGU0UgYWNjdXJhY3kgdG9vIGhpZ2gnLFxuICAgICdtYXRjaCBkaXN0YW5jZSB0b28gZmFyIGJhY2snLFxuICAgICd1bmV4cGVjdGVkIEVPRidcbl07XG47XG52YXIgZXJyID0gZnVuY3Rpb24gKGluZCwgbXNnLCBudCkge1xuICAgIHZhciBlID0gbmV3IEVycm9yKG1zZyB8fCBlY1tpbmRdKTtcbiAgICBlLmNvZGUgPSBpbmQ7XG4gICAgaWYgKCFudClcbiAgICAgICAgdGhyb3cgZTtcbiAgICByZXR1cm4gZTtcbn07XG52YXIgcmIgPSBmdW5jdGlvbiAoZCwgYiwgbikge1xuICAgIHZhciBpID0gMCwgbyA9IDA7XG4gICAgZm9yICg7IGkgPCBuOyArK2kpXG4gICAgICAgIG8gfD0gZFtiKytdIDw8IChpIDw8IDMpO1xuICAgIHJldHVybiBvO1xufTtcbnZhciBiNCA9IGZ1bmN0aW9uIChkLCBiKSB7IHJldHVybiAoZFtiXSB8IChkW2IgKyAxXSA8PCA4KSB8IChkW2IgKyAyXSA8PCAxNikgfCAoZFtiICsgM10gPDwgMjQpKSA+Pj4gMDsgfTtcbi8vIHJlYWQgWnN0YW5kYXJkIGZyYW1lIGhlYWRlclxudmFyIHJ6ZmggPSBmdW5jdGlvbiAoZGF0LCB3KSB7XG4gICAgdmFyIG4zID0gZGF0WzBdIHwgKGRhdFsxXSA8PCA4KSB8IChkYXRbMl0gPDwgMTYpO1xuICAgIGlmIChuMyA9PSAweDJGQjUyOCAmJiBkYXRbM10gPT0gMjUzKSB7XG4gICAgICAgIC8vIFpzdGFuZGFyZFxuICAgICAgICB2YXIgZmxnID0gZGF0WzRdO1xuICAgICAgICAvLyAgICBzaW5nbGUgc2VnbWVudCAgICAgICBjaGVja3N1bSAgICAgICAgICAgICBkaWN0IGZsYWcgICAgIGZyYW1lIGNvbnRlbnQgZmxhZ1xuICAgICAgICB2YXIgc3MgPSAoZmxnID4+IDUpICYgMSwgY2MgPSAoZmxnID4+IDIpICYgMSwgZGYgPSBmbGcgJiAzLCBmY2YgPSBmbGcgPj4gNjtcbiAgICAgICAgaWYgKGZsZyAmIDgpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIC8vIGJ5dGVcbiAgICAgICAgdmFyIGJ0ID0gNiAtIHNzO1xuICAgICAgICAvLyBkaWN0IGJ5dGVzXG4gICAgICAgIHZhciBkYiA9IGRmID09IDMgPyA0IDogZGY7XG4gICAgICAgIC8vIGRpY3Rpb25hcnkgaWRcbiAgICAgICAgdmFyIGRpID0gcmIoZGF0LCBidCwgZGIpO1xuICAgICAgICBidCArPSBkYjtcbiAgICAgICAgLy8gZnJhbWUgc2l6ZSBieXRlc1xuICAgICAgICB2YXIgZnNiID0gZmNmID8gKDEgPDwgZmNmKSA6IHNzO1xuICAgICAgICAvLyBmcmFtZSBzb3VyY2Ugc2l6ZVxuICAgICAgICB2YXIgZnNzID0gcmIoZGF0LCBidCwgZnNiKSArICgoZmNmID09IDEpICYmIDI1Nik7XG4gICAgICAgIC8vIHdpbmRvdyBzaXplXG4gICAgICAgIHZhciB3cyA9IGZzcztcbiAgICAgICAgaWYgKCFzcykge1xuICAgICAgICAgICAgLy8gd2luZG93IGRlc2NyaXB0b3JcbiAgICAgICAgICAgIHZhciB3YiA9IDEgPDwgKDEwICsgKGRhdFs1XSA+PiAzKSk7XG4gICAgICAgICAgICB3cyA9IHdiICsgKHdiID4+IDMpICogKGRhdFs1XSAmIDcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh3cyA+IDIxNDUzODY0OTYpXG4gICAgICAgICAgICBlcnIoMSk7XG4gICAgICAgIHZhciBidWYgPSBuZXcgdTgoKHcgPT0gMSA/IChmc3MgfHwgd3MpIDogdyA/IDAgOiB3cykgKyAxMik7XG4gICAgICAgIGJ1ZlswXSA9IDEsIGJ1Zls0XSA9IDQsIGJ1Zls4XSA9IDg7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiOiBidCArIGZzYixcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBsOiAwLFxuICAgICAgICAgICAgZDogZGksXG4gICAgICAgICAgICB3OiAodyAmJiB3ICE9IDEpID8gdyA6IGJ1Zi5zdWJhcnJheSgxMiksXG4gICAgICAgICAgICBlOiB3cyxcbiAgICAgICAgICAgIG86IG5ldyBpMzIoYnVmLmJ1ZmZlciwgMCwgMyksXG4gICAgICAgICAgICB1OiBmc3MsXG4gICAgICAgICAgICBjOiBjYyxcbiAgICAgICAgICAgIG06IE1hdGgubWluKDEzMTA3Miwgd3MpXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKCgobjMgPj4gNCkgfCAoZGF0WzNdIDw8IDIwKSkgPT0gMHgxODREMkE1KSB7XG4gICAgICAgIC8vIHNraXBwYWJsZVxuICAgICAgICByZXR1cm4gYjQoZGF0LCA0KSArIDg7XG4gICAgfVxuICAgIGVycigwKTtcbn07XG4vLyBtb3N0IHNpZ25pZmljYW50IGJpdCBmb3Igbm9uemVyb1xudmFyIG1zYiA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgICB2YXIgYml0cyA9IDA7XG4gICAgZm9yICg7ICgxIDw8IGJpdHMpIDw9IHZhbDsgKytiaXRzKVxuICAgICAgICA7XG4gICAgcmV0dXJuIGJpdHMgLSAxO1xufTtcbi8vIHJlYWQgZmluaXRlIHN0YXRlIGVudHJvcHlcbnZhciByZnNlID0gZnVuY3Rpb24gKGRhdCwgYnQsIG1hbCkge1xuICAgIC8vIHRhYmxlIHBvc1xuICAgIHZhciB0cG9zID0gKGJ0IDw8IDMpICsgNDtcbiAgICAvLyBhY2N1cmFjeSBsb2dcbiAgICB2YXIgYWwgPSAoZGF0W2J0XSAmIDE1KSArIDU7XG4gICAgaWYgKGFsID4gbWFsKVxuICAgICAgICBlcnIoMyk7XG4gICAgLy8gc2l6ZVxuICAgIHZhciBzeiA9IDEgPDwgYWw7XG4gICAgLy8gcHJvYmFiaWxpdGllcyBzeW1ib2xzICByZXBlYXQgICBpbmRleCAgIGhpZ2ggdGhyZXNob2xkXG4gICAgdmFyIHByb2JzID0gc3osIHN5bSA9IC0xLCByZSA9IC0xLCBpID0gLTEsIGh0ID0gc3o7XG4gICAgLy8gb3B0aW1pemF0aW9uOiBzaW5nbGUgYWxsb2NhdGlvbiBpcyBtdWNoIGZhc3RlclxuICAgIHZhciBidWYgPSBuZXcgYWIoNTEyICsgKHN6IDw8IDIpKTtcbiAgICB2YXIgZnJlcSA9IG5ldyBpMTYoYnVmLCAwLCAyNTYpO1xuICAgIC8vIHNhbWUgdmlldyBhcyBmcmVxXG4gICAgdmFyIGRzdGF0ZSA9IG5ldyB1MTYoYnVmLCAwLCAyNTYpO1xuICAgIHZhciBuc3RhdGUgPSBuZXcgdTE2KGJ1ZiwgNTEyLCBzeik7XG4gICAgdmFyIGJiMSA9IDUxMiArIChzeiA8PCAxKTtcbiAgICB2YXIgc3ltcyA9IG5ldyB1OChidWYsIGJiMSwgc3opO1xuICAgIHZhciBuYml0cyA9IG5ldyB1OChidWYsIGJiMSArIHN6KTtcbiAgICB3aGlsZSAoc3ltIDwgMjU1ICYmIHByb2JzID4gMCkge1xuICAgICAgICB2YXIgYml0cyA9IG1zYihwcm9icyArIDEpO1xuICAgICAgICB2YXIgY2J0ID0gdHBvcyA+PiAzO1xuICAgICAgICAvLyBtYXNrXG4gICAgICAgIHZhciBtc2sgPSAoMSA8PCAoYml0cyArIDEpKSAtIDE7XG4gICAgICAgIHZhciB2YWwgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAodHBvcyAmIDcpKSAmIG1zaztcbiAgICAgICAgLy8gbWFzayAoMSBmZXdlciBiaXQpXG4gICAgICAgIHZhciBtc2sxZmIgPSAoMSA8PCBiaXRzKSAtIDE7XG4gICAgICAgIC8vIG1heCBzbWFsbCB2YWx1ZVxuICAgICAgICB2YXIgbXN2ID0gbXNrIC0gcHJvYnMgLSAxO1xuICAgICAgICAvLyBzbWFsbCB2YWx1ZVxuICAgICAgICB2YXIgc3ZhbCA9IHZhbCAmIG1zazFmYjtcbiAgICAgICAgaWYgKHN2YWwgPCBtc3YpXG4gICAgICAgICAgICB0cG9zICs9IGJpdHMsIHZhbCA9IHN2YWw7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdHBvcyArPSBiaXRzICsgMTtcbiAgICAgICAgICAgIGlmICh2YWwgPiBtc2sxZmIpXG4gICAgICAgICAgICAgICAgdmFsIC09IG1zdjtcbiAgICAgICAgfVxuICAgICAgICBmcmVxWysrc3ltXSA9IC0tdmFsO1xuICAgICAgICBpZiAodmFsID09IC0xKSB7XG4gICAgICAgICAgICBwcm9icyArPSB2YWw7XG4gICAgICAgICAgICBzeW1zWy0taHRdID0gc3ltO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHByb2JzIC09IHZhbDtcbiAgICAgICAgaWYgKCF2YWwpIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAvLyByZXBlYXQgYnl0ZVxuICAgICAgICAgICAgICAgIHZhciByYnQgPSB0cG9zID4+IDM7XG4gICAgICAgICAgICAgICAgcmUgPSAoKGRhdFtyYnRdIHwgKGRhdFtyYnQgKyAxXSA8PCA4KSkgPj4gKHRwb3MgJiA3KSkgJiAzO1xuICAgICAgICAgICAgICAgIHRwb3MgKz0gMjtcbiAgICAgICAgICAgICAgICBzeW0gKz0gcmU7XG4gICAgICAgICAgICB9IHdoaWxlIChyZSA9PSAzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3ltID4gMjU1IHx8IHByb2JzKVxuICAgICAgICBlcnIoMCk7XG4gICAgdmFyIHN5bXBvcyA9IDA7XG4gICAgLy8gc3ltIHN0ZXAgKGNvcHJpbWUgd2l0aCBzeiAtIGZvcm11bGEgZnJvbSB6c3RkIHNvdXJjZSlcbiAgICB2YXIgc3N0ZXAgPSAoc3ogPj4gMSkgKyAoc3ogPj4gMykgKyAzO1xuICAgIC8vIHN5bSBtYXNrXG4gICAgdmFyIHNtYXNrID0gc3ogLSAxO1xuICAgIGZvciAodmFyIHMgPSAwOyBzIDw9IHN5bTsgKytzKSB7XG4gICAgICAgIHZhciBzZiA9IGZyZXFbc107XG4gICAgICAgIGlmIChzZiA8IDEpIHtcbiAgICAgICAgICAgIGRzdGF0ZVtzXSA9IC1zZjtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoaXMgaXMgc3BsaXQgaW50byB0d28gbG9vcHMgaW4genN0ZCB0byBhdm9pZCBicmFuY2hpbmcsIGJ1dCBhcyBKUyBpcyBoaWdoZXItbGV2ZWwgdGhhdCBpcyB1bm5lY2Vzc2FyeVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2Y7ICsraSkge1xuICAgICAgICAgICAgc3ltc1tzeW1wb3NdID0gcztcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBzeW1wb3MgPSAoc3ltcG9zICsgc3N0ZXApICYgc21hc2s7XG4gICAgICAgICAgICB9IHdoaWxlIChzeW1wb3MgPj0gaHQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEFmdGVyIHNwcmVhZGluZyBzeW1ib2xzLCBzaG91bGQgYmUgemVybyBhZ2FpblxuICAgIGlmIChzeW1wb3MpXG4gICAgICAgIGVycigwKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc3o7ICsraSkge1xuICAgICAgICAvLyBuZXh0IHN0YXRlXG4gICAgICAgIHZhciBucyA9IGRzdGF0ZVtzeW1zW2ldXSsrO1xuICAgICAgICAvLyBudW0gYml0c1xuICAgICAgICB2YXIgbmIgPSBuYml0c1tpXSA9IGFsIC0gbXNiKG5zKTtcbiAgICAgICAgbnN0YXRlW2ldID0gKG5zIDw8IG5iKSAtIHN6O1xuICAgIH1cbiAgICByZXR1cm4gWyh0cG9zICsgNykgPj4gMywge1xuICAgICAgICAgICAgYjogYWwsXG4gICAgICAgICAgICBzOiBzeW1zLFxuICAgICAgICAgICAgbjogbmJpdHMsXG4gICAgICAgICAgICB0OiBuc3RhdGVcbiAgICAgICAgfV07XG59O1xuLy8gcmVhZCBodWZmbWFuXG52YXIgcmh1ID0gZnVuY3Rpb24gKGRhdCwgYnQpIHtcbiAgICAvLyAgaW5kZXggIHdlaWdodCBjb3VudFxuICAgIHZhciBpID0gMCwgd2MgPSAtMTtcbiAgICAvLyAgICBidWZmZXIgICAgICAgICAgICAgaGVhZGVyIGJ5dGVcbiAgICB2YXIgYnVmID0gbmV3IHU4KDI5MiksIGhiID0gZGF0W2J0XTtcbiAgICAvLyBodWZmbWFuIHdlaWdodHNcbiAgICB2YXIgaHcgPSBidWYuc3ViYXJyYXkoMCwgMjU2KTtcbiAgICAvLyByYW5rIGNvdW50XG4gICAgdmFyIHJjID0gYnVmLnN1YmFycmF5KDI1NiwgMjY4KTtcbiAgICAvLyByYW5rIGluZGV4XG4gICAgdmFyIHJpID0gbmV3IHUxNihidWYuYnVmZmVyLCAyNjgpO1xuICAgIC8vIE5PVEU6IGF0IHRoaXMgcG9pbnQgYnQgaXMgMSBsZXNzIHRoYW4gZXhwZWN0ZWRcbiAgICBpZiAoaGIgPCAxMjgpIHtcbiAgICAgICAgLy8gZW5kIGJ5dGUsIGZzZSBkZWNvZGUgdGFibGVcbiAgICAgICAgdmFyIF9hID0gcmZzZShkYXQsIGJ0ICsgMSwgNiksIGVidCA9IF9hWzBdLCBmZHQgPSBfYVsxXTtcbiAgICAgICAgYnQgKz0gaGI7XG4gICAgICAgIHZhciBlcG9zID0gZWJ0IDw8IDM7XG4gICAgICAgIC8vIGxhc3QgYnl0ZVxuICAgICAgICB2YXIgbGIgPSBkYXRbYnRdO1xuICAgICAgICBpZiAoIWxiKVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAvLyAgc3RhdGUxICAgc3RhdGUyICAgc3RhdGUxIGJpdHMgICBzdGF0ZTIgYml0c1xuICAgICAgICB2YXIgc3QxID0gMCwgc3QyID0gMCwgYnRyMSA9IGZkdC5iLCBidHIyID0gYnRyMTtcbiAgICAgICAgLy8gZnNlIHBvc1xuICAgICAgICAvLyBwcmUtaW5jcmVtZW50IHRvIGFjY291bnQgZm9yIG9yaWdpbmFsIGRlZmljaXQgb2YgMVxuICAgICAgICB2YXIgZnBvcyA9ICgrK2J0IDw8IDMpIC0gOCArIG1zYihsYik7XG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAgIGZwb3MgLT0gYnRyMTtcbiAgICAgICAgICAgIGlmIChmcG9zIDwgZXBvcylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIHZhciBjYnQgPSBmcG9zID4+IDM7XG4gICAgICAgICAgICBzdDEgKz0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChmcG9zICYgNykpICYgKCgxIDw8IGJ0cjEpIC0gMSk7XG4gICAgICAgICAgICBod1srK3djXSA9IGZkdC5zW3N0MV07XG4gICAgICAgICAgICBmcG9zIC09IGJ0cjI7XG4gICAgICAgICAgICBpZiAoZnBvcyA8IGVwb3MpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYnQgPSBmcG9zID4+IDM7XG4gICAgICAgICAgICBzdDIgKz0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChmcG9zICYgNykpICYgKCgxIDw8IGJ0cjIpIC0gMSk7XG4gICAgICAgICAgICBod1srK3djXSA9IGZkdC5zW3N0Ml07XG4gICAgICAgICAgICBidHIxID0gZmR0Lm5bc3QxXTtcbiAgICAgICAgICAgIHN0MSA9IGZkdC50W3N0MV07XG4gICAgICAgICAgICBidHIyID0gZmR0Lm5bc3QyXTtcbiAgICAgICAgICAgIHN0MiA9IGZkdC50W3N0Ml07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCsrd2MgPiAyNTUpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB3YyA9IGhiIC0gMTI3O1xuICAgICAgICBmb3IgKDsgaSA8IHdjOyBpICs9IDIpIHtcbiAgICAgICAgICAgIHZhciBieXRlID0gZGF0WysrYnRdO1xuICAgICAgICAgICAgaHdbaV0gPSBieXRlID4+IDQ7XG4gICAgICAgICAgICBod1tpICsgMV0gPSBieXRlICYgMTU7XG4gICAgICAgIH1cbiAgICAgICAgKytidDtcbiAgICB9XG4gICAgLy8gd2VpZ2h0IGV4cG9uZW50aWFsIHN1bVxuICAgIHZhciB3ZXMgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciB3dCA9IGh3W2ldO1xuICAgICAgICAvLyBiaXRzIG11c3QgYmUgYXQgbW9zdCAxMSwgc2FtZSBhcyB3ZWlnaHRcbiAgICAgICAgaWYgKHd0ID4gMTEpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIHdlcyArPSB3dCAmJiAoMSA8PCAod3QgLSAxKSk7XG4gICAgfVxuICAgIC8vIG1heCBiaXRzXG4gICAgdmFyIG1iID0gbXNiKHdlcykgKyAxO1xuICAgIC8vIHRhYmxlIHNpemVcbiAgICB2YXIgdHMgPSAxIDw8IG1iO1xuICAgIC8vIHJlbWFpbmluZyBzdW1cbiAgICB2YXIgcmVtID0gdHMgLSB3ZXM7XG4gICAgLy8gbXVzdCBiZSBwb3dlciBvZiAyXG4gICAgaWYgKHJlbSAmIChyZW0gLSAxKSlcbiAgICAgICAgZXJyKDApO1xuICAgIGh3W3djKytdID0gbXNiKHJlbSkgKyAxO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciB3dCA9IGh3W2ldO1xuICAgICAgICArK3JjW2h3W2ldID0gd3QgJiYgKG1iICsgMSAtIHd0KV07XG4gICAgfVxuICAgIC8vIGh1ZiBidWZcbiAgICB2YXIgaGJ1ZiA9IG5ldyB1OCh0cyA8PCAxKTtcbiAgICAvLyAgICBzeW1ib2xzICAgICAgICAgICAgICAgICAgICAgIG51bSBiaXRzXG4gICAgdmFyIHN5bXMgPSBoYnVmLnN1YmFycmF5KDAsIHRzKSwgbmIgPSBoYnVmLnN1YmFycmF5KHRzKTtcbiAgICByaVttYl0gPSAwO1xuICAgIGZvciAoaSA9IG1iOyBpID4gMDsgLS1pKSB7XG4gICAgICAgIHZhciBwdiA9IHJpW2ldO1xuICAgICAgICBmaWxsKG5iLCBpLCBwdiwgcmlbaSAtIDFdID0gcHYgKyByY1tpXSAqICgxIDw8IChtYiAtIGkpKSk7XG4gICAgfVxuICAgIGlmIChyaVswXSAhPSB0cylcbiAgICAgICAgZXJyKDApO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciBiaXRzID0gaHdbaV07XG4gICAgICAgIGlmIChiaXRzKSB7XG4gICAgICAgICAgICB2YXIgY29kZSA9IHJpW2JpdHNdO1xuICAgICAgICAgICAgZmlsbChzeW1zLCBpLCBjb2RlLCByaVtiaXRzXSA9IGNvZGUgKyAoMSA8PCAobWIgLSBiaXRzKSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbYnQsIHtcbiAgICAgICAgICAgIG46IG5iLFxuICAgICAgICAgICAgYjogbWIsXG4gICAgICAgICAgICBzOiBzeW1zXG4gICAgICAgIH1dO1xufTtcbi8vIFRhYmxlcyBnZW5lcmF0ZWQgdXNpbmcgdGhpczpcbi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tLzEwMWFycm93ei9hOTc5NDUyZDQzNTU5OTJjYmY4ZjI1N2NiZmZjOWVkZFxuLy8gZGVmYXVsdCBsaXRlcmFsIGxlbmd0aCB0YWJsZVxudmFyIGRsbHQgPSAvKiNfX1BVUkVfXyovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDgxLCAxNiwgOTksIDE0MCwgNDksIDE5OCwgMjQsIDk5LCAxMiwgMzMsIDE5NiwgMjQsIDk5LCAxMDIsIDEwMiwgMTM0LCA3MCwgMTQ2LCA0XG5dKSwgMCwgNilbMV07XG4vLyBkZWZhdWx0IG1hdGNoIGxlbmd0aCB0YWJsZVxudmFyIGRtbHQgPSAvKiNfX1BVUkVfXyovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDMzLCAyMCwgMTk2LCAyNCwgOTksIDE0MCwgMzMsIDEzMiwgMTYsIDY2LCA4LCAzMywgMTMyLCAxNiwgNjYsIDgsIDMzLCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDM2LCA5XG5dKSwgMCwgNilbMV07XG4vLyBkZWZhdWx0IG9mZnNldCBjb2RlIHRhYmxlXG52YXIgZG9jdCA9IC8qI19fUFVSRV9fICovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDMyLCAxMzIsIDE2LCA2NiwgMTAyLCA3MCwgNjgsIDY4LCA2OCwgNjgsIDM2LCA3MywgMlxuXSksIDAsIDUpWzFdO1xuLy8gYml0cyB0byBiYXNlbGluZVxudmFyIGIyYmwgPSBmdW5jdGlvbiAoYiwgcykge1xuICAgIHZhciBsZW4gPSBiLmxlbmd0aCwgYmwgPSBuZXcgaTMyKGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgICBibFtpXSA9IHM7XG4gICAgICAgIHMgKz0gMSA8PCBiW2ldO1xuICAgIH1cbiAgICByZXR1cm4gYmw7XG59O1xuLy8gbGl0ZXJhbCBsZW5ndGggYml0c1xudmFyIGxsYiA9IC8qI19fUFVSRV9fICovIG5ldyB1OCgoIC8qI19fUFVSRV9fICovbmV3IGkzMihbXG4gICAgMCwgMCwgMCwgMCwgMTY4NDMwMDksIDUwNTI4NzcwLCAxMzQ2NzgwMjAsIDIwMjA1MDA1NywgMjY5NDIyMDkzXG5dKSkuYnVmZmVyLCAwLCAzNik7XG4vLyBsaXRlcmFsIGxlbmd0aCBiYXNlbGluZVxudmFyIGxsYmwgPSAvKiNfX1BVUkVfXyAqLyBiMmJsKGxsYiwgMCk7XG4vLyBtYXRjaCBsZW5ndGggYml0c1xudmFyIG1sYiA9IC8qI19fUFVSRV9fICovIG5ldyB1OCgoIC8qI19fUFVSRV9fICovbmV3IGkzMihbXG4gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4NDMwMDksIDUwNTI4NzcwLCAxMTc3NjkyMjAsIDE4NTIwNzA0OCwgMjUyNTc5MDg0LCAxNlxuXSkpLmJ1ZmZlciwgMCwgNTMpO1xuLy8gbWF0Y2ggbGVuZ3RoIGJhc2VsaW5lXG52YXIgbWxibCA9IC8qI19fUFVSRV9fICovIGIyYmwobWxiLCAzKTtcbi8vIGRlY29kZSBodWZmbWFuIHN0cmVhbVxudmFyIGRodSA9IGZ1bmN0aW9uIChkYXQsIG91dCwgaHUpIHtcbiAgICB2YXIgbGVuID0gZGF0Lmxlbmd0aCwgc3MgPSBvdXQubGVuZ3RoLCBsYiA9IGRhdFtsZW4gLSAxXSwgbXNrID0gKDEgPDwgaHUuYikgLSAxLCBlYiA9IC1odS5iO1xuICAgIGlmICghbGIpXG4gICAgICAgIGVycigwKTtcbiAgICB2YXIgc3QgPSAwLCBidHIgPSBodS5iLCBwb3MgPSAobGVuIDw8IDMpIC0gOCArIG1zYihsYikgLSBidHIsIGkgPSAtMTtcbiAgICBmb3IgKDsgcG9zID4gZWIgJiYgaSA8IHNzOykge1xuICAgICAgICB2YXIgY2J0ID0gcG9zID4+IDM7XG4gICAgICAgIHZhciB2YWwgPSAoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChwb3MgJiA3KTtcbiAgICAgICAgc3QgPSAoKHN0IDw8IGJ0cikgfCB2YWwpICYgbXNrO1xuICAgICAgICBvdXRbKytpXSA9IGh1LnNbc3RdO1xuICAgICAgICBwb3MgLT0gKGJ0ciA9IGh1Lm5bc3RdKTtcbiAgICB9XG4gICAgaWYgKHBvcyAhPSBlYiB8fCBpICsgMSAhPSBzcylcbiAgICAgICAgZXJyKDApO1xufTtcbi8vIGRlY29kZSBodWZmbWFuIHN0cmVhbSA0eFxuLy8gVE9ETzogdXNlIHdvcmtlcnMgdG8gcGFyYWxsZWxpemVcbnZhciBkaHU0ID0gZnVuY3Rpb24gKGRhdCwgb3V0LCBodSkge1xuICAgIHZhciBidCA9IDY7XG4gICAgdmFyIHNzID0gb3V0Lmxlbmd0aCwgc3oxID0gKHNzICsgMykgPj4gMiwgc3oyID0gc3oxIDw8IDEsIHN6MyA9IHN6MSArIHN6MjtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbMF0gfCAoZGF0WzFdIDw8IDgpKSwgb3V0LnN1YmFycmF5KDAsIHN6MSksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbMl0gfCAoZGF0WzNdIDw8IDgpKSwgb3V0LnN1YmFycmF5KHN6MSwgc3oyKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFs0XSB8IChkYXRbNV0gPDwgOCkpLCBvdXQuc3ViYXJyYXkoc3oyLCBzejMpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCksIG91dC5zdWJhcnJheShzejMpLCBodSk7XG59O1xuLy8gcmVhZCBac3RhbmRhcmQgYmxvY2tcbnZhciByemIgPSBmdW5jdGlvbiAoZGF0LCBzdCwgb3V0KSB7XG4gICAgdmFyIF9hO1xuICAgIHZhciBidCA9IHN0LmI7XG4gICAgLy8gICAgYnl0ZSAwICAgICAgICBibG9jayB0eXBlXG4gICAgdmFyIGIwID0gZGF0W2J0XSwgYnR5cGUgPSAoYjAgPj4gMSkgJiAzO1xuICAgIHN0LmwgPSBiMCAmIDE7XG4gICAgdmFyIHN6ID0gKGIwID4+IDMpIHwgKGRhdFtidCArIDFdIDw8IDUpIHwgKGRhdFtidCArIDJdIDw8IDEzKTtcbiAgICAvLyBlbmQgYnl0ZSBmb3IgYmxvY2tcbiAgICB2YXIgZWJ0ID0gKGJ0ICs9IDMpICsgc3o7XG4gICAgaWYgKGJ0eXBlID09IDEpIHtcbiAgICAgICAgaWYgKGJ0ID49IGRhdC5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHN0LmIgPSBidCArIDE7XG4gICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgIGZpbGwob3V0LCBkYXRbYnRdLCBzdC55LCBzdC55ICs9IHN6KTtcbiAgICAgICAgICAgIHJldHVybiBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbGwobmV3IHU4KHN6KSwgZGF0W2J0XSk7XG4gICAgfVxuICAgIGlmIChlYnQgPiBkYXQubGVuZ3RoKVxuICAgICAgICByZXR1cm47XG4gICAgaWYgKGJ0eXBlID09IDApIHtcbiAgICAgICAgc3QuYiA9IGVidDtcbiAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgb3V0LnNldChkYXQuc3ViYXJyYXkoYnQsIGVidCksIHN0LnkpO1xuICAgICAgICAgICAgc3QueSArPSBzejtcbiAgICAgICAgICAgIHJldHVybiBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNsYyhkYXQsIGJ0LCBlYnQpO1xuICAgIH1cbiAgICBpZiAoYnR5cGUgPT0gMikge1xuICAgICAgICAvLyAgICBieXRlIDMgICAgICAgIGxpdCBidHlwZSAgICAgc2l6ZSBmb3JtYXRcbiAgICAgICAgdmFyIGIzID0gZGF0W2J0XSwgbGJ0ID0gYjMgJiAzLCBzZiA9IChiMyA+PiAyKSAmIDM7XG4gICAgICAgIC8vIGxpdCBzcmMgc2l6ZSAgbGl0IGNtcCBzeiA0IHN0cmVhbXNcbiAgICAgICAgdmFyIGxzcyA9IGIzID4+IDQsIGxjcyA9IDAsIHM0ID0gMDtcbiAgICAgICAgaWYgKGxidCA8IDIpIHtcbiAgICAgICAgICAgIGlmIChzZiAmIDEpXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKHNmICYgMikgJiYgKGRhdFsrK2J0XSA8PCAxMikpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxzcyA9IGIzID4+IDM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHNmO1xuICAgICAgICAgICAgaWYgKHNmIDwgMilcbiAgICAgICAgICAgICAgICBsc3MgfD0gKChkYXRbKytidF0gJiA2MykgPDwgNCksIGxjcyA9IChkYXRbYnRdID4+IDYpIHwgKGRhdFsrK2J0XSA8PCAyKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHNmID09IDIpXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKGRhdFsrK2J0XSAmIDMpIDw8IDEyKSwgbGNzID0gKGRhdFtidF0gPj4gMikgfCAoZGF0WysrYnRdIDw8IDYpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChkYXRbKytidF0gJiA2MykgPDwgMTIpLCBsY3MgPSAoZGF0W2J0XSA+PiA2KSB8IChkYXRbKytidF0gPDwgMikgfCAoZGF0WysrYnRdIDw8IDEwKTtcbiAgICAgICAgfVxuICAgICAgICArK2J0O1xuICAgICAgICAvLyBhZGQgbGl0ZXJhbHMgdG8gZW5kIC0gY2FuIG5ldmVyIG92ZXJsYXAgd2l0aCBiYWNrcmVmZXJlbmNlcyBiZWNhdXNlIHVudXNlZCBsaXRlcmFscyBhbHdheXMgYXBwZW5kZWRcbiAgICAgICAgdmFyIGJ1ZiA9IG91dCA/IG91dC5zdWJhcnJheShzdC55LCBzdC55ICsgc3QubSkgOiBuZXcgdTgoc3QubSk7XG4gICAgICAgIC8vIHN0YXJ0aW5nIHBvaW50IGZvciBsaXRlcmFsc1xuICAgICAgICB2YXIgc3BsID0gYnVmLmxlbmd0aCAtIGxzcztcbiAgICAgICAgaWYgKGxidCA9PSAwKVxuICAgICAgICAgICAgYnVmLnNldChkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGxzcyksIHNwbCk7XG4gICAgICAgIGVsc2UgaWYgKGxidCA9PSAxKVxuICAgICAgICAgICAgZmlsbChidWYsIGRhdFtidCsrXSwgc3BsKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBodWZmbWFuIHRhYmxlXG4gICAgICAgICAgICB2YXIgaHUgPSBzdC5oO1xuICAgICAgICAgICAgaWYgKGxidCA9PSAyKSB7XG4gICAgICAgICAgICAgICAgdmFyIGh1ZCA9IHJodShkYXQsIGJ0KTtcbiAgICAgICAgICAgICAgICAvLyBzdWJ0cmFjdCBkZXNjcmlwdGlvbiBsZW5ndGhcbiAgICAgICAgICAgICAgICBsY3MgKz0gYnQgLSAoYnQgPSBodWRbMF0pO1xuICAgICAgICAgICAgICAgIHN0LmggPSBodSA9IGh1ZFsxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFodSlcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICAoczQgPyBkaHU0IDogZGh1KShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGxjcyksIGJ1Zi5zdWJhcnJheShzcGwpLCBodSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbnVtIHNlcXVlbmNlc1xuICAgICAgICB2YXIgbnMgPSBkYXRbYnQrK107XG4gICAgICAgIGlmIChucykge1xuICAgICAgICAgICAgaWYgKG5zID09IDI1NSlcbiAgICAgICAgICAgICAgICBucyA9IChkYXRbYnQrK10gfCAoZGF0W2J0KytdIDw8IDgpKSArIDB4N0YwMDtcbiAgICAgICAgICAgIGVsc2UgaWYgKG5zID4gMTI3KVxuICAgICAgICAgICAgICAgIG5zID0gKChucyAtIDEyOCkgPDwgOCkgfCBkYXRbYnQrK107XG4gICAgICAgICAgICAvLyBzeW1ib2wgY29tcHJlc3Npb24gbW9kZXNcbiAgICAgICAgICAgIHZhciBzY20gPSBkYXRbYnQrK107XG4gICAgICAgICAgICBpZiAoc2NtICYgMylcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICB2YXIgZHRzID0gW2RtbHQsIGRvY3QsIGRsbHRdO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPiAtMTsgLS1pKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1kID0gKHNjbSA+PiAoKGkgPDwgMSkgKyAyKSkgJiAzO1xuICAgICAgICAgICAgICAgIGlmIChtZCA9PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJsZSBidWZcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJidWYgPSBuZXcgdTgoWzAsIDAsIGRhdFtidCsrXV0pO1xuICAgICAgICAgICAgICAgICAgICBkdHNbaV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOiByYnVmLnN1YmFycmF5KDIsIDMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbjogcmJ1Zi5zdWJhcnJheSgwLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHQ6IG5ldyB1MTYocmJ1Zi5idWZmZXIsIDAsIDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYjogMFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtZCA9PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFjY3VyYWN5IGxvZyA4IGZvciBvZmZzZXRzLCA5IGZvciBvdGhlcnNcbiAgICAgICAgICAgICAgICAgICAgX2EgPSByZnNlKGRhdCwgYnQsIDkgLSAoaSAmIDEpKSwgYnQgPSBfYVswXSwgZHRzW2ldID0gX2FbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1kID09IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdC50KVxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgICAgICAgICBkdHNbaV0gPSBzdC50W2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBfYiA9IHN0LnQgPSBkdHMsIG1sdCA9IF9iWzBdLCBvY3QgPSBfYlsxXSwgbGx0ID0gX2JbMl07XG4gICAgICAgICAgICB2YXIgbGIgPSBkYXRbZWJ0IC0gMV07XG4gICAgICAgICAgICBpZiAoIWxiKVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIHZhciBzcG9zID0gKGVidCA8PCAzKSAtIDggKyBtc2IobGIpIC0gbGx0LmIsIGNidCA9IHNwb3MgPj4gMywgb3VidCA9IDA7XG4gICAgICAgICAgICB2YXIgbHN0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxsdC5iKSAtIDEpO1xuICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2N0LmIpID4+IDM7XG4gICAgICAgICAgICB2YXIgb3N0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG9jdC5iKSAtIDEpO1xuICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWx0LmIpID4+IDM7XG4gICAgICAgICAgICB2YXIgbXN0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1sdC5iKSAtIDEpO1xuICAgICAgICAgICAgZm9yICgrK25zOyAtLW5zOykge1xuICAgICAgICAgICAgICAgIHZhciBsbGMgPSBsbHQuc1tsc3RdO1xuICAgICAgICAgICAgICAgIHZhciBsYnRyID0gbGx0Lm5bbHN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbWxjID0gbWx0LnNbbXN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbWJ0ciA9IG1sdC5uW21zdF07XG4gICAgICAgICAgICAgICAgdmFyIG9mYyA9IG9jdC5zW29zdF07XG4gICAgICAgICAgICAgICAgdmFyIG9idHIgPSBvY3Qubltvc3RdO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9mYykgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgb2ZwID0gMSA8PCBvZmM7XG4gICAgICAgICAgICAgICAgdmFyIG9mZiA9IG9mcCArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpIHwgKGRhdFtjYnQgKyAzXSA8PCAyNCkpID4+PiAoc3BvcyAmIDcpKSAmIChvZnAgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWxiW21sY10pID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIG1sID0gbWxibFttbGNdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1sYlttbGNdKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBsbGJbbGxjXSkgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgbGwgPSBsbGJsW2xsY10gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGxiW2xsY10pIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IGxidHIpID4+IDM7XG4gICAgICAgICAgICAgICAgbHN0ID0gbGx0LnRbbHN0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGJ0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWJ0cikgPj4gMztcbiAgICAgICAgICAgICAgICBtc3QgPSBtbHQudFttc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIG9zdCA9IG9jdC50W29zdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG9idHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGlmIChvZmYgPiAzKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMl0gPSBzdC5vWzFdO1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzFdID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1swXSA9IG9mZiAtPSAzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlkeCA9IG9mZiAtIChsbCAhPSAwKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gaWR4ID09IDMgPyBzdC5vWzBdIC0gMSA6IHN0Lm9baWR4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHggPiAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMl0gPSBzdC5vWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1sxXSA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzBdID0gb2ZmO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGw7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gYnVmW3NwbCArIGldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdWJ0ICs9IGxsLCBzcGwgKz0gbGw7XG4gICAgICAgICAgICAgICAgdmFyIHN0aW4gPSBvdWJ0IC0gb2ZmO1xuICAgICAgICAgICAgICAgIGlmIChzdGluIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGVuID0gLXN0aW47XG4gICAgICAgICAgICAgICAgICAgIHZhciBicyA9IHN0LmUgKyBzdGluO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGVuID4gbWwpXG4gICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBtbDtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IHN0LndbYnMgKyBpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvdWJ0ICs9IGxlbiwgbWwgLT0gbGVuLCBzdGluID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtbDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBidWZbc3RpbiArIGldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdWJ0ICs9IG1sO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG91YnQgIT0gc3BsKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHNwbCA8IGJ1Zi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQrK10gPSBidWZbc3BsKytdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBvdWJ0ID0gYnVmLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChvdXQpXG4gICAgICAgICAgICAgICAgc3QueSArPSBvdWJ0O1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGJ1ZiA9IHNsYyhidWYsIDAsIG91YnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgICAgIHN0LnkgKz0gbHNzO1xuICAgICAgICAgICAgICAgIGlmIChzcGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsc3M7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmW2ldID0gYnVmW3NwbCArIGldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc3BsKVxuICAgICAgICAgICAgICAgIGJ1ZiA9IHNsYyhidWYsIHNwbCk7XG4gICAgICAgIH1cbiAgICAgICAgc3QuYiA9IGVidDtcbiAgICAgICAgcmV0dXJuIGJ1ZjtcbiAgICB9XG4gICAgZXJyKDIpO1xufTtcbi8vIGNvbmNhdFxudmFyIGNjdCA9IGZ1bmN0aW9uIChidWZzLCBvbCkge1xuICAgIGlmIChidWZzLmxlbmd0aCA9PSAxKVxuICAgICAgICByZXR1cm4gYnVmc1swXTtcbiAgICB2YXIgYnVmID0gbmV3IHU4KG9sKTtcbiAgICBmb3IgKHZhciBpID0gMCwgYiA9IDA7IGkgPCBidWZzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBjaGsgPSBidWZzW2ldO1xuICAgICAgICBidWYuc2V0KGNoaywgYik7XG4gICAgICAgIGIgKz0gY2hrLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIGJ1Zjtcbn07XG4vKipcbiAqIERlY29tcHJlc3NlcyBac3RhbmRhcmQgZGF0YVxuICogQHBhcmFtIGRhdCBUaGUgaW5wdXQgZGF0YVxuICogQHBhcmFtIGJ1ZiBUaGUgb3V0cHV0IGJ1ZmZlci4gSWYgdW5zcGVjaWZpZWQsIHRoZSBmdW5jdGlvbiB3aWxsIGFsbG9jYXRlXG4gKiAgICAgICAgICAgIGV4YWN0bHkgZW5vdWdoIG1lbW9yeSB0byBmaXQgdGhlIGRlY29tcHJlc3NlZCBkYXRhLiBJZiB5b3VyXG4gKiAgICAgICAgICAgIGRhdGEgaGFzIG11bHRpcGxlIGZyYW1lcyBhbmQgeW91IGtub3cgdGhlIG91dHB1dCBzaXplLCBzcGVjaWZ5aW5nXG4gKiAgICAgICAgICAgIGl0IHdpbGwgeWllbGQgYmV0dGVyIHBlcmZvcm1hbmNlLlxuICogQHJldHVybnMgVGhlIGRlY29tcHJlc3NlZCBkYXRhXG4gKi9cbnJldHVybiBmdW5jdGlvbiBkZWNvbXByZXNzKGRhdCwgYnVmKSB7XG4gICAgdmFyIGJ0ID0gMCwgYnVmcyA9IFtdLCBuYiA9ICshYnVmLCBvbCA9IDA7XG4gICAgZm9yICg7IGRhdC5sZW5ndGg7KSB7XG4gICAgICAgIHZhciBzdCA9IHJ6ZmgoZGF0LCBuYiB8fCBidWYpO1xuICAgICAgICBpZiAodHlwZW9mIHN0ID09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBpZiAobmIpIHtcbiAgICAgICAgICAgICAgICBidWYgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChzdC53Lmxlbmd0aCA9PSBzdC51KSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChidWYgPSBzdC53KTtcbiAgICAgICAgICAgICAgICAgICAgb2wgKz0gc3QudTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBidWZzLnB1c2goYnVmKTtcbiAgICAgICAgICAgICAgICBzdC5lID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoOyAhc3QubDspIHtcbiAgICAgICAgICAgICAgICB2YXIgYmxrID0gcnpiKGRhdCwgc3QsIGJ1Zik7XG4gICAgICAgICAgICAgICAgaWYgKCFibGspXG4gICAgICAgICAgICAgICAgICAgIGVycig1KTtcbiAgICAgICAgICAgICAgICBpZiAoYnVmKVxuICAgICAgICAgICAgICAgICAgICBzdC5lID0gc3QueTtcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJsayk7XG4gICAgICAgICAgICAgICAgICAgIG9sICs9IGJsay5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGNwdyhzdC53LCAwLCBibGsubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgc3Qudy5zZXQoYmxrLCBzdC53Lmxlbmd0aCAtIGJsay5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ0ID0gc3QuYiArIChzdC5jICogNCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYnQgPSBzdDtcbiAgICAgICAgZGF0ID0gZGF0LnN1YmFycmF5KGJ0KTtcbiAgICB9XG4gICAgcmV0dXJuIGNjdChidWZzLCBvbCk7XG59XG59KSAoKVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA8IDUuMS4wXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0gbnVsbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4xLjBcbi8vVmVyc2lvbjogPCA1LjEuMVxuLy9SZXF1aXJlczogenN0ZF9kZWNvbXByZXNzXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4xLjFcbi8vVmVyc2lvbjogPCA1LjIuMFxudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IG51bGxcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMlxuLy9SZXF1aXJlczogenN0ZF9kZWNvbXByZXNzXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3pzdGRfaW5pdGlhbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3Ncbi8vVmVyc2lvbjogPj0gNS4xLjFcbmZ1bmN0aW9uIGNhbWxfenN0ZF9pbml0aWFsaXplKHVuaXQpIHtcbiAgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuICByZXR1cm4gMVxufVxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBhZGRpbmcgcG9zaXRpb24uICopXG50eXBlIHBhZHR5ID1cbiAgfCBMZWZ0ICAgKCogVGV4dCBpcyBsZWZ0IGp1c3RpZmllZCAoJy0nIG9wdGlvbikuICAgICAgICAgICAgICAgKilcbiAgfCBSaWdodCAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgKG5vICctJyBvcHRpb24pLiAgICAgICAgICAgKilcbiAgfCBaZXJvcyAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgYnkgemVyb3MgKHNlZSAnMCcgb3B0aW9uKS4gKilcblxuKCoqKilcblxuKCogSW50ZWdlciBjb252ZXJzaW9uLiAqKVxudHlwZSBpbnRfY29udiA9XG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgICAgICAgICgqICAlZCB8ICUrZCB8ICUgZCAgKilcbiAgfCBJbnRfaSB8IEludF9waSB8IEludF9zaSAgICAgICAgKCogICVpIHwgJStpIHwgJSBpICAqKVxuICB8IEludF94IHwgSW50X0N4ICAgICAgICAgICAgICAgICAoKiAgJXggfCAlI3ggICAgICAgICopXG4gIHwgSW50X1ggfCBJbnRfQ1ggICAgICAgICAgICAgICAgICgqICAlWCB8ICUjWCAgICAgICAgKilcbiAgfCBJbnRfbyB8IEludF9DbyAgICAgICAgICAgICAgICAgKCogICVvIHwgJSNvICAgICAgICAqKVxuICB8IEludF91ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJXUgICAgICAgICAgICAgICopXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1ICAgICAgICgqICAlI2QgfCAlI2kgfCAlI3UgKilcblxuKCogRmxvYXQgY29udmVyc2lvbi4gKilcbnR5cGUgZmxvYXRfZmxhZ19jb252ID1cbiAgfCBGbG9hdF9mbGFnXyAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3AgICAgICAgICAgICAgICAgICAgKCogJStbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19zICAgICAgICAgICAgICAgICAgICgqICUgW2ZlRWdHRmhIXSAqKVxudHlwZSBmbG9hdF9raW5kX2NvbnYgPVxuICB8IEZsb2F0X2YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWYgfCAlK2YgfCAlIGYgICopXG4gIHwgRmxvYXRfZSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZSB8ICUrZSB8ICUgZSAgKilcbiAgfCBGbG9hdF9FICAgICAgICAgICAgICAgICAgICAgICAgKCogICVFIHwgJStFIHwgJSBFICAqKVxuICB8IEZsb2F0X2cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWcgfCAlK2cgfCAlIGcgICopXG4gIHwgRmxvYXRfRyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRyB8ICUrRyB8ICUgRyAgKilcbiAgfCBGbG9hdF9GICAgICAgICAgICAgICAgICAgICAgICAgKCogICVGIHwgJStGIHwgJSBGICAqKVxuICB8IEZsb2F0X2ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWggfCAlK2ggfCAlIGggICopXG4gIHwgRmxvYXRfSCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlSCB8ICUrSCB8ICUgSCAgKilcbiAgfCBGbG9hdF9DRiAgICAgICAgICAgICAgICAgICAgICAgKCogICUjRnwgJSsjRnwgJSAjRiAqKVxudHlwZSBmbG9hdF9jb252ID0gZmxvYXRfZmxhZ19jb252ICogZmxvYXRfa2luZF9jb252XG5cbigqKiopXG5cbigqIENoYXIgc2V0cyAoc2VlICVbLi4uXSkgYXJlIGJpdG1hcHMgaW1wbGVtZW50ZWQgYXMgMzItY2hhciBzdHJpbmdzLiAqKVxudHlwZSBjaGFyX3NldCA9IHN0cmluZ1xuXG4oKioqKVxuXG4oKiBDb3VudGVyIHVzZWQgaW4gU2NhbmYuICopXG50eXBlIGNvdW50ZXIgPVxuICB8IExpbmVfY291bnRlciAgICAgKCogICVsICAgICAgKilcbiAgfCBDaGFyX2NvdW50ZXIgICAgICgqICAlbiAgICAgICopXG4gIHwgVG9rZW5fY291bnRlciAgICAoKiAgJU4sICVMICAqKVxuXG4oKioqKVxuXG4oKiBQYWRkaW5nIG9mIHN0cmluZ3MgYW5kIG51bWJlcnMuICopXG50eXBlICgnYSwgJ2IpIHBhZGRpbmcgPVxuICAoKiBObyBwYWRkaW5nIChleDogXCIlZFwiKSAqKVxuICB8IE5vX3BhZGRpbmcgIDogKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBMaXRlcmFsIHBhZGRpbmcgKGV4OiBcIiU4ZFwiKSAqKVxuICB8IExpdF9wYWRkaW5nIDogcGFkdHkgKiBpbnQgLT4gKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBQYWRkaW5nIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlKmRcIikgKilcbiAgfCBBcmdfcGFkZGluZyA6IHBhZHR5IC0+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+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuZXh0ZXJuYWwgaW5jciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWluY3JcIlxuZXh0ZXJuYWwgZGVjciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWRlY3JcIlxudHlwZSBub25yZWMgKCdhLCdiKSByZXN1bHQgPSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdjLCAnYywgJ2QpIGZvcm1hdDZcbnR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjLCAnYykgZm9ybWF0NFxubGV0IHN0cmluZ19vZl9mb3JtYXQgPSBzdHJpbmdfb2ZfZm9ybWF0XG5leHRlcm5hbCBmb3JtYXRfb2Zfc3RyaW5nIDpcbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSBcIiVpZGVudGl0eVwiXG5sZXQgKCBeXiApID0gKCBeXiApXG5sZXQgZXhpdCA9IGV4aXRcbmxldCBhdF9leGl0ID0gYXRfZXhpdFxubGV0IHZhbGlkX2Zsb2F0X2xleGVtID0gdmFsaWRfZmxvYXRfbGV4ZW1cbmxldCBkb19hdF9leGl0ID0gZG9fYXRfZXhpdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgIFNpbW9uIENydWFuZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW1NlcV06IGZ1bmN0aW9uYWwgaXRlcmF0b3JzICopXG5cbnR5cGUgKydhIG5vZGUgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5cbmFuZCAnYSB0ID0gdW5pdCAtPiAnYSBub2RlXG5cbmxldCBlbXB0eSAoKSA9IE5pbFxuXG5sZXQgcmV0dXJuIHggKCkgPSBDb25zICh4LCBlbXB0eSlcblxubGV0IGNvbnMgeCBuZXh0ICgpID0gQ29ucyAoeCwgbmV4dClcblxubGV0IHJlYyBhcHBlbmQgc2VxMSBzZXEyICgpID1cbiAgbWF0Y2ggc2VxMSgpIHdpdGhcbiAgfCBOaWwgLT4gc2VxMigpXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoeCwgYXBwZW5kIG5leHQgc2VxMilcblxubGV0IHJlYyBtYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+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+IGNcblxudHlwZSB0ID0gY2hhclxuXG5sZXQgY29tcGFyZSBjMSBjMiA9IGNvZGUgYzEgLSBjb2RlIGMyXG5sZXQgZXF1YWwgKGMxOiB0KSAoYzI6IHQpID0gY29tcGFyZSBjMSBjMiA9IDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgRGFuaWVsIEMuIEJ1ZW56bGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuXG5sZXQgZXJyX25vX3ByZWQgPSBcIlUrMDAwMCBoYXMgbm8gcHJlZGVjZXNzb3JcIlxubGV0IGVycl9ub19zdWNjID0gXCJVKzEwRkZGRiBoYXMgbm8gc3VjY2Vzc29yXCJcbmxldCBlcnJfbm90X3N2IGkgPSBmb3JtYXRfaW50IFwiJVhcIiBpIF4gXCIgaXMgbm90IGFuIFVuaWNvZGUgc2NhbGFyIHZhbHVlXCJcbmxldCBlcnJfbm90X2xhdGluMSB1ID0gXCJVK1wiIF4gZm9ybWF0X2ludCBcIiUwNFhcIiB1IF4gXCIgaXMgbm90IGEgbGF0aW4xIGNoYXJhY3RlclwiXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgbWluID0gMHgwMDAwXG5sZXQgbWF4ID0gMHgxMEZGRkZcbmxldCBsb19ib3VuZCA9IDB4RDdGRlxubGV0IGhpX2JvdW5kID0gMHhFMDAwXG5cbmxldCBib20gPSAweEZFRkZcbmxldCByZXAgPSAweEZGRkRcblxubGV0IHN1Y2MgdSA9XG4gIGlmIHUgPSBsb19ib3VuZCB0aGVuIGhpX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1heCB0aGVuIGludmFsaWRfYXJnIGVycl9ub19zdWNjIGVsc2VcbiAgdSArIDFcblxubGV0IHByZWQgdSA9XG4gIGlmIHUgPSBoaV9ib3VuZCB0aGVuIGxvX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1pbiB0aGVuIGludmFsaWRfYXJnIGVycl9ub19wcmVkIGVsc2VcbiAgdSAtIDFcblxubGV0IGlzX3ZhbGlkIGkgPSAobWluIDw9IGkgJiYgaSA8PSBsb19ib3VuZCkgfHwgKGhpX2JvdW5kIDw9IGkgJiYgaSA8PSBtYXgpXG5sZXQgb2ZfaW50IGkgPSBpZiBpc192YWxpZCBpIHRoZW4gaSBlbHNlIGludmFsaWRfYXJnIChlcnJfbm90X3N2IGkpXG5leHRlcm5hbCB1bnNhZmVfb2ZfaW50IDogaW50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0b19pbnQgOiB0IC0+IGludCA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX2NoYXIgdSA9IHUgPCAyNTZcbmxldCBvZl9jaGFyIGMgPSBDaGFyLmNvZGUgY1xubGV0IHRvX2NoYXIgdSA9XG4gIGlmIHUgPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyAoZXJyX25vdF9sYXRpbjEgdSkgZWxzZVxuICBDaGFyLnVuc2FmZV9jaHIgdVxuXG5sZXQgdW5zYWZlX3RvX2NoYXIgPSBDaGFyLnVuc2FmZV9jaHJcblxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IGhhc2ggPSB0b19pbnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIGxpc3RzLiAqKVxudHlwZSAnYSB0ID0gJ2EgbGlzdCA9IFtdIHwgKDo6KSBvZiAnYSAqICdhIGxpc3RcblxuKCogTGlzdCBvcGVyYXRpb25zICopXG5cbmxldCByZWMgbGVuZ3RoX2F1eCBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGxlblxuICB8IF86OmwgLT4gbGVuZ3RoX2F1eCAobGVuICsgMSkgbFxuXG5sZXQgbGVuZ3RoIGwgPSBsZW5ndGhfYXV4IDAgbFxuXG5sZXQgY29ucyBhIGwgPSBhOjpsXG5cbmxldCBoZCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJoZFwiXG4gIHwgYTo6XyAtPiBhXG5cbmxldCB0bCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJ0bFwiXG4gIHwgXzo6bCAtPiBsXG5cbmxldCBudGggbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGZhaWx3aXRoIFwibnRoXCJcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBudGhfb3B0IGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gU29tZSBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBhcHBlbmQgPSAoQClcblxubGV0IHJlYyByZXZfYXBwZW5kIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICAgIFtdIC0+IGwyXG4gIHwgYSA6OiBsIC0+IHJldl9hcHBlbmQgbCAoYSA6OiBsMilcblxubGV0IHJldiBsID0gcmV2X2FwcGVuZCBsIFtdXG5cbmxldCByZWMgaW5pdF90YWlscmVjX2F1eCBhY2MgaSBuIGYgPVxuICBpZiBpID49IG4gdGhlbiBhY2NcbiAgZWxzZSBpbml0X3RhaWxyZWNfYXV4IChmIGkgOjogYWNjKSAoaSsxKSBuIGZcblxubGV0IHJlYyBpbml0X2F1eCBpIG4gZiA9XG4gIGlmIGkgPj0gbiB0aGVuIFtdXG4gIGVsc2VcbiAgICBsZXQgciA9IGYgaSBpblxuICAgIHIgOjogaW5pdF9hdXggKGkrMSkgbiBmXG5cbmxldCByZXZfaW5pdF90aHJlc2hvbGQgPVxuICBtYXRjaCBTeXMuYmFja2VuZF90eXBlIHdpdGhcbiAgfCBTeXMuTmF0aXZlIHwgU3lzLkJ5dGVjb2RlIC0+IDEwXzAwMFxuICAoKiBXZSBkb24ndCBrbm93IHRoZSBzaXplIG9mIHRoZSBzdGFjaywgYmV0dGVyIGJlIHNhZmUgYW5kIGFzc3VtZSBpdCdzXG4gICAgIHNtYWxsLiAqKVxuICB8IFN5cy5PdGhlciBfIC0+IDUwXG5cbmxldCBpbml0IGxlbiBmID1cbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5pbml0XCIgZWxzZVxuICBpZiBsZW4gPiByZXZfaW5pdF90aHJlc2hvbGQgdGhlbiByZXYgKGluaXRfdGFpbHJlY19hdXggW10gMCBsZW4gZilcbiAgZWxzZSBpbml0X2F1eCAwIGxlbiBmXG5cbmxldCByZWMgZmxhdHRlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBsOjpyIC0+IGwgQCBmbGF0dGVuIHJcblxubGV0IGNvbmNhdCA9IGZsYXR0ZW5cblxubGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBhOjpsIC0+IGxldCByID0gZiBhIGluIHIgOjogbWFwIGYgbFxuXG5sZXQgcmVjIG1hcGkgaSBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGE6OmwgLT4gbGV0IHIgPSBmIGkgYSBpbiByIDo6IG1hcGkgKGkgKyAxKSBmIGxcblxubGV0IG1hcGkgZiBsID0gbWFwaSAwIGYgbFxuXG5sZXQgcmV2X21hcCBmIGwgPVxuICBsZXQgcmVjIHJtYXBfZiBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VcbiAgICB8IGE6OmwgLT4gcm1hcF9mIChmIGEgOjogYWNjdSkgbFxuICBpblxuICBybWFwX2YgW10gbFxuXG5cbmxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBhOyBpdGVyIGYgbFxuXG5sZXQgcmVjIGl0ZXJpIGkgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgaSBhOyBpdGVyaSAoaSArIDEpIGYgbFxuXG5sZXQgaXRlcmkgZiBsID0gaXRlcmkgMCBmIGxcblxubGV0IHJlYyBmb2xkX2xlZnQgZiBhY2N1IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmb2xkX2xlZnQgZiAoZiBhY2N1IGEpIGxcblxubGV0IHJlYyBmb2xkX3JpZ2h0IGYgbCBhY2N1ID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZiBhIChmb2xkX3JpZ2h0IGYgbCBhY2N1KVxuXG5sZXQgcmVjIG1hcDIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBbXVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gbGV0IHIgPSBmIGExIGEyIGluIHIgOjogbWFwMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5tYXAyXCJcblxubGV0IHJldl9tYXAyIGYgbDEgbDIgPVxuICBsZXQgcmVjIHJtYXAyX2YgYWNjdSBsMSBsMiA9XG4gICAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIHwgKFtdLCBbXSkgLT4gYWNjdVxuICAgIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBybWFwMl9mIChmIGExIGEyIDo6IGFjY3UpIGwxIGwyXG4gICAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJldl9tYXAyXCJcbiAgaW5cbiAgcm1hcDJfZiBbXSBsMSBsMlxuXG5cbmxldCByZWMgaXRlcjIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiAoKVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMjsgaXRlcjIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuaXRlcjJcIlxuXG5sZXQgcmVjIGZvbGRfbGVmdDIgZiBhY2N1IGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGZvbGRfbGVmdDIgZiAoZiBhY2N1IGExIGEyKSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9sZWZ0MlwiXG5cbmxldCByZWMgZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1ID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTIgKGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSlcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfcmlnaHQyXCJcblxubGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IHRydWVcbiAgfCBhOjpsIC0+IHAgYSAmJiBmb3JfYWxsIHAgbFxuXG5sZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gcCBhIHx8IGV4aXN0cyBwIGxcblxubGV0IHJlYyBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IHRydWVcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgJiYgZm9yX2FsbDIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9yX2FsbDJcIlxuXG5sZXQgcmVjIGV4aXN0czIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBmYWxzZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiB8fCBleGlzdHMyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmV4aXN0czJcIlxuXG5sZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbSB4IGxcblxubGV0IHJlYyBtZW1xIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBhID09IHggfHwgbWVtcSB4IGxcblxubGV0IHJlYyBhc3NvYyB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBiIGVsc2UgYXNzb2MgeCBsXG5cbmxldCByZWMgYXNzb2Nfb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBTb21lIGIgZWxzZSBhc3NvY19vcHQgeCBsXG5cbmxldCByZWMgYXNzcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBiIGVsc2UgYXNzcSB4IGxcblxubGV0IHJlYyBhc3NxX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gU29tZSBiIGVsc2UgYXNzcV9vcHQgeCBsXG5cbmxldCByZWMgbWVtX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbV9hc3NvYyB4IGxcblxubGV0IHJlYyBtZW1fYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGEgPT0geCB8fCBtZW1fYXNzcSB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+XG4gICAgICBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzb2MgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+IGlmIGEgPT0geCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NxIHggbFxuXG5sZXQgcmVjIGZpbmQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHggZWxzZSBmaW5kIHAgbFxuXG5sZXQgcmVjIGZpbmRfb3B0IHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZF9vcHQgcCBsXG5cbmxldCByZWMgZmluZF9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXAgZiBsXG4gICAgIGVuZFxuXG5sZXQgZmluZF9hbGwgcCA9XG4gIGxldCByZWMgZmluZCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByZXYgYWNjdVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBmaW5kICh4IDo6IGFjY3UpIGwgZWxzZSBmaW5kIGFjY3UgbCBpblxuICBmaW5kIFtdXG5cbmxldCBmaWx0ZXIgPSBmaW5kX2FsbFxuXG5sZXQgZmlsdGVyaSBwIGwgPVxuICBsZXQgcmVjIGF1eCBpIGFjYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmV2IGFjY1xuICB8IHg6OmwgLT4gYXV4IChpICsgMSkgKGlmIHAgaSB4IHRoZW4geDo6YWNjIGVsc2UgYWNjKSBsXG4gIGluXG4gIGF1eCAwIFtdIGxcblxubGV0IGZpbHRlcl9tYXAgZiA9XG4gIGxldCByZWMgYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY3VcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IGFjY3UgbFxuICAgICAgICB8IFNvbWUgdiAtPiBhdXggKHYgOjogYWNjdSkgbFxuICBpblxuICBhdXggW11cblxubGV0IGNvbmNhdF9tYXAgZiBsID1cbiAgbGV0IHJlYyBhdXggZiBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgbGV0IHhzID0gZiB4IGluXG4gICAgICAgYXV4IGYgKHJldl9hcHBlbmQgeHMgYWNjKSBsXG4gIGluIGF1eCBmIFtdIGxcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2N1IGwgPVxuICBsZXQgcmVjIGF1eCBhY2N1IGxfYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1LCByZXYgbF9hY2N1XG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgbGV0IGFjY3UsIHggPSBmIGFjY3UgeCBpblxuICAgICAgICBhdXggYWNjdSAoeCA6OiBsX2FjY3UpIGwgaW5cbiAgYXV4IGFjY3UgW10gbFxuXG5sZXQgcGFydGl0aW9uIHAgbCA9XG4gIGxldCByZWMgcGFydCB5ZXMgbm8gPSBmdW5jdGlvblxuICB8IFtdIC0+IChyZXYgeWVzLCByZXYgbm8pXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHBhcnQgKHggOjogeWVzKSBubyBsIGVsc2UgcGFydCB5ZXMgKHggOjogbm8pIGwgaW5cbiAgcGFydCBbXSBbXSBsXG5cbmxldCBwYXJ0aXRpb25fbWFwIHAgbCA9XG4gIGxldCByZWMgcGFydCBsZWZ0IHJpZ2h0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IGxlZnQsIHJldiByaWdodClcbiAgfCB4IDo6IGwgLT5cbiAgICAgYmVnaW4gbWF0Y2ggcCB4IHdpdGhcbiAgICAgICB8IEVpdGhlci5MZWZ0IHYgLT4gcGFydCAodiA6OiBsZWZ0KSByaWdodCBsXG4gICAgICAgfCBFaXRoZXIuUmlnaHQgdiAtPiBwYXJ0IGxlZnQgKHYgOjogcmlnaHQpIGxcbiAgICAgZW5kXG4gIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcmVjIHNwbGl0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoW10sIFtdKVxuICB8ICh4LHkpOjpsIC0+XG4gICAgICBsZXQgKHJ4LCByeSkgPSBzcGxpdCBsIGluICh4OjpyeCwgeTo6cnkpXG5cbmxldCByZWMgY29tYmluZSBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBbXVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gKGExLCBhMikgOjogY29tYmluZSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuY29tYmluZVwiXG5cbigqKiBzb3J0aW5nICopXG5cbmxldCByZWMgbWVyZ2UgY21wIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgbDIgLT4gbDJcbiAgfCBsMSwgW10gLT4gbDFcbiAgfCBoMSA6OiB0MSwgaDIgOjogdDIgLT5cbiAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICB0aGVuIGgxIDo6IG1lcmdlIGNtcCB0MSBsMlxuICAgICAgZWxzZSBoMiA6OiBtZXJnZSBjbXAgbDEgdDJcblxuXG5sZXQgc3RhYmxlX3NvcnQgY21wIGwgPVxuICBsZXQgcmVjIHJldl9tZXJnZSBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgaWYgY21wIGgxIGgyIDw9IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2UgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZSBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgcmV2X21lcmdlX3JldiBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgaWYgY21wIGgxIGgyID4gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZV9yZXYgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZV9yZXYgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHNvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID0gaWYgY21wIHgxIHgyIDw9IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBjbXAgeDEgeDIgPD0gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPD0gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA8PSAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPD0gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHJldl9zb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHJldl9zb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2VfcmV2IHMxIHMyIFtdLCB0bClcbiAgYW5kIHJldl9zb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBjbXAgeDEgeDIgPiAwIHRoZW5cbiAgICAgICAgICAgIGlmIGNtcCB4MiB4MyA+IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MiB4MyA+IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgc29ydCA9IHN0YWJsZV9zb3J0XG5sZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuKCogTm90ZTogb24gYSBsaXN0IG9mIGxlbmd0aCBiZXR3ZWVuIGFib3V0IDEwMDAwMCAoZGVwZW5kaW5nIG9uIHRoZSBtaW5vclxuICAgaGVhcCBzaXplIGFuZCB0aGUgdHlwZSBvZiB0aGUgbGlzdCkgYW5kIFN5cy5tYXhfYXJyYXlfc2l6ZSwgaXQgaXNcbiAgIGFjdHVhbGx5IGZhc3RlciB0byB1c2UgdGhlIGZvbGxvd2luZywgYnV0IGl0IG1pZ2h0IGFsc28gdXNlIG1vcmUgbWVtb3J5XG4gICBiZWNhdXNlIHRoZSBhcmd1bWVudCBsaXN0IGNhbm5vdCBiZSBkZWFsbG9jYXRlZCBpbmNyZW1lbnRhbGx5LlxuXG4gICBBbHNvLCB0aGVyZSBzZWVtcyB0byBiZSBhIGJ1ZyBpbiB0aGlzIGNvZGUgb3IgaW4gdGhlXG4gICBpbXBsZW1lbnRhdGlvbiBvZiBvYmpfdHJ1bmNhdGUuXG5cbmV4dGVybmFsIG9ial90cnVuY2F0ZSA6ICdhIGFycmF5IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX29ial90cnVuY2F0ZVwiXG5cbmxldCBhcnJheV90b19saXN0X2luX3BsYWNlIGEgPVxuICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBhY2N1IG4gcCA9XG4gICAgaWYgcCA8PSAwIHRoZW4gYWNjdSBlbHNlIGJlZ2luXG4gICAgICBpZiBwID0gbiB0aGVuIGJlZ2luXG4gICAgICAgIG9ial90cnVuY2F0ZSBhIHA7XG4gICAgICAgIGxvb3AgKGEuKHAtMSkgOjogYWNjdSkgKG4tMTAwMCkgKHAtMSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxvb3AgKGEuKHAtMSkgOjogYWNjdSkgbiAocC0xKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGluXG4gIGxvb3AgW10gKGwtMTAwMCkgbFxuXG5cbmxldCBzdGFibGVfc29ydCBjbXAgbCA9XG4gIGxldCBhID0gQXJyYXkub2ZfbGlzdCBsIGluXG4gIEFycmF5LnN0YWJsZV9zb3J0IGNtcCBhO1xuICBhcnJheV90b19saXN0X2luX3BsYWNlIGFcblxuKilcblxuXG4oKiogc29ydGluZyArIHJlbW92aW5nIGR1cGxpY2F0ZXMgKilcblxubGV0IHNvcnRfdW5pcSBjbXAgbCA9XG4gIGxldCByZWMgcmV2X21lcmdlIGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZSB0MSB0MiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2UgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZSBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgcmV2X21lcmdlX3JldiBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgbGV0IGMgPSBjbXAgaDEgaDIgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjID4gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZV9yZXYgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZV9yZXYgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHNvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxXSBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDJdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgzXSBlbHNlIFt4MzsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gcmV2X3NvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gcmV2X3NvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZV9yZXYgczEgczIgW10sIHRsKVxuICBhbmQgcmV2X3NvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxXSBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDJdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgzXSBlbHNlIFt4MzsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHJlYyBjb21wYXJlX2xlbmd0aHMgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgXyA6OiBsMSwgXyA6OiBsMiAtPiBjb21wYXJlX2xlbmd0aHMgbDEgbDJcbjs7XG5cbmxldCByZWMgY29tcGFyZV9sZW5ndGhfd2l0aCBsIG4gPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIGlmIG4gPSAwIHRoZW4gMCBlbHNlXG4gICAgICBpZiBuID4gMCB0aGVuIC0xIGVsc2UgMVxuICB8IF8gOjogbCAtPlxuICAgIGlmIG4gPD0gMCB0aGVuIDEgZWxzZVxuICAgICAgY29tcGFyZV9sZW5ndGhfd2l0aCBsIChuLTEpXG47O1xuXG4oKiogezEgQ29tcGFyaXNvbn0gKilcblxuKCogTm90ZTogd2UgYXJlICpub3QqIHNob3J0Y3V0dGluZyB0aGUgbGlzdCBieSB1c2luZ1xuICAgW0xpc3QuY29tcGFyZV9sZW5ndGhzXSBmaXJzdDsgdGhpcyBtYXkgYmUgc2xvd2VyIG9uIGxvbmcgbGlzdHNcbiAgIGltbWVkaWF0ZWx5IHN0YXJ0IHdpdGggZGlzdGluY3QgZWxlbWVudHMuIEl0IGlzIGFsc28gaW5jb3JyZWN0IGZvclxuICAgW2NvbXBhcmVdIGJlbG93LCBhbmQgaXQgaXMgYmV0dGVyIChwcmluY2lwbGUgb2YgbGVhc3Qgc3VycHJpc2UpIHRvXG4gICB1c2UgdGhlIHNhbWUgYXBwcm9hY2ggZm9yIGJvdGggZnVuY3Rpb25zLiAqKVxubGV0IHJlYyBlcXVhbCBlcSBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IHRydWVcbiAgfCBbXSwgXzo6XyB8IF86Ol8sIFtdIC0+IGZhbHNlXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT4gZXEgYTEgYTIgJiYgZXF1YWwgZXEgbDEgbDJcblxubGV0IHJlYyBjb21wYXJlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXzo6XyAtPiAtMVxuICB8IF86Ol8sIFtdIC0+IDFcbiAgfCBhMTo6bDEsIGEyOjpsMiAtPlxuICAgIGxldCBjID0gY21wIGExIGEyIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gY1xuICAgIGVsc2UgY29tcGFyZSBjbXAgbDEgbDJcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBsID1cbiAgbGV0IHJlYyBhdXggbCAoKSA9IG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gU2VxLk5pbFxuICAgIHwgeCA6OiB0YWlsIC0+IFNlcS5Db25zICh4LCBhdXggdGFpbClcbiAgaW5cbiAgYXV4IGxcblxubGV0IG9mX3NlcSBzZXEgPVxuICBsZXQgcmVjIGRpcmVjdCBkZXB0aCBzZXEgOiBfIGxpc3QgPVxuICAgIGlmIGRlcHRoPTBcbiAgICB0aGVuXG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBzZXFcbiAgICAgIHw+IHJldiAoKiB0YWlscmVjICopXG4gICAgZWxzZSBtYXRjaCBzZXEoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gW11cbiAgICAgIHwgU2VxLkNvbnMgKHgsIG5leHQpIC0+IHggOjogZGlyZWN0IChkZXB0aC0xKSBuZXh0XG4gIGluXG4gIGRpcmVjdCA1MDAgc2VxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgemVybyA9IDBcbmxldCBvbmUgPSAxXG5sZXQgbWludXNfb25lID0gLTFcbmV4dGVybmFsIG5lZyA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgYWRkIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgc3ViIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgbXVsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgZGl2IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgcmVtIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcbmxldCBtYXhfaW50ID0gKC0xKSBsc3IgMVxubGV0IG1pbl9pbnQgPSBtYXhfaW50ICsgMVxuZXh0ZXJuYWwgbG9nYW5kIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsIGxvZ3hvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcbmxldCBsb2dub3QgeCA9IGxvZ3hvciB4ICgtMSlcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuXG4oKlxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nIHMgPSB0cnkgU29tZSAoaW50X29mX3N0cmluZyBzKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG4qKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5sZXQgdG9fc3RyaW5nIHggPSBmb3JtYXRfaW50IFwiJWRcIiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zLiBXaGVuIHlvdSBtb2RpZnkgdGhlIG9uZSBpbiB0aGlzIGZpbGUgeW91IG5lZWQgdG9cbiAgIG1vZGlmeSBpdHMgZHVwbGljYXRlIGluIHN0cmluZy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIHN0cmluZ19sZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBnZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9maWxsIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2ZpbGxfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5leHRlcm5hbCB1bnNhZmVfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGJ5dGVzID0gXCIlYnl0ZXNfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV9ibGl0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmxldCBtYWtlIG4gYyA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgdW5zYWZlX2ZpbGwgcyAwIG4gYztcbiAgc1xuXG5sZXQgaW5pdCBuIGYgPVxuICBsZXQgcyA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgcyBpIChmIGkpXG4gIGRvbmU7XG4gIHNcblxubGV0IGVtcHR5ID0gY3JlYXRlIDBcblxubGV0IGNvcHkgcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXQgcyAwIHIgMCBsZW47XG4gIHJcblxubGV0IHRvX3N0cmluZyBiID0gdW5zYWZlX3RvX3N0cmluZyAoY29weSBiKVxubGV0IG9mX3N0cmluZyBzID0gY29weSAodW5zYWZlX29mX3N0cmluZyBzKVxuXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLnN1YiAvIEJ5dGVzLnN1YlwiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBzIG9mcyByIDAgbGVuO1xuICAgIHJcbiAgZW5kXG5cbmxldCBzdWJfc3RyaW5nIGIgb2ZzIGxlbiA9IHVuc2FmZV90b19zdHJpbmcgKHN1YiBiIG9mcyBsZW4pXG5cbigqIGFkZGl0aW9uIHdpdGggYW4gb3ZlcmZsb3cgY2hlY2sgKilcbmxldCAoKyspIGEgYiA9XG4gIGxldCBjID0gYSArIGIgaW5cbiAgbWF0Y2ggYSA8IDAsIGIgPCAwLCBjIDwgMCB3aXRoXG4gIHwgdHJ1ZSAsIHRydWUgLCBmYWxzZVxuICB8IGZhbHNlLCBmYWxzZSwgdHJ1ZSAgLT4gaW52YWxpZF9hcmcgXCJCeXRlcy5leHRlbmRcIiAoKiBvdmVyZmxvdyAqKVxuICB8IF8gLT4gY1xuXG5sZXQgZXh0ZW5kIHMgbGVmdCByaWdodCA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyArKyBsZWZ0ICsrIHJpZ2h0IGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICBsZXQgKHNyY29mZiwgZHN0b2ZmKSA9IGlmIGxlZnQgPCAwIHRoZW4gLWxlZnQsIDAgZWxzZSAwLCBsZWZ0IGluXG4gIGxldCBjcHlsZW4gPSBJbnQubWluIChsZW5ndGggcyAtIHNyY29mZikgKGxlbiAtIGRzdG9mZikgaW5cbiAgaWYgY3B5bGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IHMgc3Jjb2ZmIHIgZHN0b2ZmIGNweWxlbjtcbiAgclxuXG5sZXQgZmlsbCBzIG9mcyBsZW4gYyA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmZpbGwgLyBCeXRlcy5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBzIG9mcyBsZW4gY1xuXG5sZXQgYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIHMxIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBzMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnl0ZXMuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG5sZXQgYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IHN0cmluZ19sZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuYmxpdCAvIEJ5dGVzLmJsaXRfc3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGl0ZXIgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiQnl0ZXMuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBlbXB0eVxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW5cbiAgICAgICAgICB1bnNhZmVfYmxpdHNcbiAgICAgICAgICAgIChjcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCBzMSBzMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBzMSBpblxuICBsZXQgbDIgPSBsZW5ndGggczIgaW5cbiAgbGV0IHIgPSBjcmVhdGUgKGwxICsgbDIpIGluXG4gIHVuc2FmZV9ibGl0IHMxIDAgciAwIGwxO1xuICB1bnNhZmVfYmxpdCBzMiAwIHIgbDEgbDI7XG4gIHJcblxuXG5leHRlcm5hbCBjaGFyX2NvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgY2hhcl9jaHI6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXDAxMicgfCAnXFxuJyB8ICdcXHInIHwgJ1xcdCcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHRyaW0gcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWkpIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGxldCBqID0gcmVmIChsZW4gLSAxKSBpblxuICB3aGlsZSAhaiA+PSAhaSAmJiBpc19zcGFjZSAodW5zYWZlX2dldCBzICFqKSBkb1xuICAgIGRlY3IgalxuICBkb25lO1xuICBpZiAhaiA+PSAhaSB0aGVuXG4gICAgc3ViIHMgIWkgKCFqIC0gIWkgKyAxKVxuICBlbHNlXG4gICAgZW1wdHlcblxubGV0IGVzY2FwZWQgcyA9XG4gIGxldCBuID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgIG4gOj0gIW4gK1xuICAgICAgKG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXG4nIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXGInIC0+IDJcbiAgICAgICB8ICcgJyAuLiAnficgLT4gMVxuICAgICAgIHwgXyAtPiA0KVxuICBkb25lO1xuICBpZiAhbiA9IGxlbmd0aCBzIHRoZW4gY29weSBzIGVsc2UgYmVnaW5cbiAgICBsZXQgcycgPSBjcmVhdGUgIW4gaW5cbiAgICBuIDo9IDA7XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgICAgYmVnaW4gbWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAoJ1xcXCInIHwgJ1xcXFwnKSBhcyBjIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnbidcbiAgICAgIHwgJ1xcdCcgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICd0J1xuICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ3InXG4gICAgICB8ICdcXGInIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnYidcbiAgICAgIHwgKCcgJyAuLiAnficpIGFzIGMgLT4gdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8IGMgLT5cbiAgICAgICAgICBsZXQgYSA9IGNoYXJfY29kZSBjIGluXG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgLyAxMDApKTtcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgKGEgLyAxMCkgbW9kIDEwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgbW9kIDEwKSk7XG4gICAgICBlbmQ7XG4gICAgICBpbmNyIG5cbiAgICBkb25lO1xuICAgIHMnXG4gIGVuZFxuXG5sZXQgbWFwIGYgcyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgbCA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IG1hcGkgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBzIGkpKSBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhclxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgcyBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLnVwcGVyY2FzZV9hc2NpaSBzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPSBtYXAgQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG5sZXQgYXBwbHkxIGYgcyA9XG4gIGlmIGxlbmd0aCBzID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY29weSBzIGluXG4gICAgdW5zYWZlX3NldCByIDAgKGYodW5zYWZlX2dldCBzIDApKTtcbiAgICByXG4gIGVuZFxuXG5sZXQgY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9IGFwcGx5MSBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9wcmUgPSBsZW5ndGggcHJlZml4IGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fcHJlIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIGkgPD4gdW5zYWZlX2dldCBwcmVmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBsZW5fcyA+PSBsZW5fcHJlICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjX29wdCBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSBpbmRleF9yZWNfb3B0IHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICBpbmRleF9yZWMgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXggcyBjID0gcmluZGV4X3JlYyBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9vcHQgcyBjID0gcmluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbnR5cGUgdCA9IGJ5dGVzXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfYnl0ZXNfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbigqIERlcHJlY2F0ZWQgZnVuY3Rpb25zIGltcGxlbWVudGVkIHZpYSBvdGhlciBkZXByZWNhdGVkIGZ1bmN0aW9ucyAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubGV0IHVwcGVyY2FzZSBzID0gbWFwIENoYXIudXBwZXJjYXNlIHNcbmxldCBsb3dlcmNhc2UgcyA9IG1hcCBDaGFyLmxvd2VyY2FzZSBzXG5cbmxldCBjYXBpdGFsaXplIHMgPSBhcHBseTEgQ2hhci51cHBlcmNhc2Ugc1xubGV0IHVuY2FwaXRhbGl6ZSBzID0gYXBwbHkxIENoYXIubG93ZXJjYXNlIHNcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA9IGxlbmd0aCBzIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gZ2V0IHMgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGxldCBidWYgPSByZWYgKG1ha2UgMjU2ICdcXDAwMCcpIGluXG4gIGxldCByZXNpemUgKCkgPVxuICAgICgqIHJlc2l6ZSAqKVxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1pbiAoMiAqIGxlbmd0aCAhYnVmKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICBpZiBsZW5ndGggIWJ1ZiA9IG5ld19sZW4gdGhlbiBmYWlsd2l0aCBcIkJ5dGVzLm9mX3NlcTogY2Fubm90IGdyb3cgYnl0ZXNcIjtcbiAgICBsZXQgbmV3X2J1ZiA9IG1ha2UgbmV3X2xlbiAnXFwwMDAnIGluXG4gICAgYmxpdCAhYnVmIDAgbmV3X2J1ZiAwICFuO1xuICAgIGJ1ZiA6PSBuZXdfYnVmXG4gIGluXG4gIFNlcS5pdGVyXG4gICAgKGZ1biBjIC0+XG4gICAgICAgaWYgIW4gPSBsZW5ndGggIWJ1ZiB0aGVuIHJlc2l6ZSgpO1xuICAgICAgIHNldCAhYnVmICFuIGM7XG4gICAgICAgaW5jciBuKVxuICAgIGk7XG4gIHN1YiAhYnVmIDAgIW5cblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuKCogVGhlIGdldF8gZnVuY3Rpb25zIGFyZSBhbGwgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcblxuZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbmV4dGVybmFsIGdldF91aW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9ieXRlc19nZXQxNlwiXG5leHRlcm5hbCBnZXRfaW50MzJfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2J5dGVzX2dldDMyXCJcbmV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYnl0ZXNfZ2V0NjRcIlxuZXh0ZXJuYWwgc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBzZXRfaW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcbmV4dGVybmFsIHNldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMlwiXG5leHRlcm5hbCBzZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjRcIlxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxubGV0IGdldF9pbnQ4IGIgaSA9XG4gICgoZ2V0X3VpbnQ4IGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSA4KSkgYXNyIChTeXMuaW50X3NpemUgLSA4KVxuXG5sZXQgZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiAoZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IGdldF91aW50MTZfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X2ludDE2X25lIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9uZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2xlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9sZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2JlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9iZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDMyX2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIChnZXRfaW50MzJfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQzMl9uZSBiIGlcblxubGV0IGdldF9pbnQzMl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IChnZXRfaW50NjRfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQ2NF9uZSBiIGlcblxubGV0IGdldF9pbnQ2NF9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgc2V0X2ludDE2X2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSBzZXRfaW50MTZfbmUgYiBpIHhcblxubGV0IHNldF9pbnQxNl9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHNldF9pbnQxNl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDMyX2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MzJfbmUgYiBpIChzd2FwMzIgeClcbiAgZWxzZSBzZXRfaW50MzJfbmUgYiBpIHhcblxubGV0IHNldF9pbnQzMl9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQzMl9uZSBiIGkgKHN3YXAzMiB4KVxuICBlbHNlIHNldF9pbnQzMl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDY0X2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50NjRfbmUgYiBpIChzd2FwNjQgeClcbiAgZWxzZSBzZXRfaW50NjRfbmUgYiBpIHhcblxubGV0IHNldF9pbnQ2NF9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQ2NF9uZSBiIGkgKHN3YXA2NCB4KVxuICBlbHNlIHNldF9pbnQ2NF9uZSBiIGkgeFxuXG5sZXQgc2V0X3VpbnQ4ID0gc2V0X2ludDhcbmxldCBzZXRfdWludDE2X25lID0gc2V0X2ludDE2X25lXG5sZXQgc2V0X3VpbnQxNl9iZSA9IHNldF9pbnQxNl9iZVxubGV0IHNldF91aW50MTZfbGUgPSBzZXRfaW50MTZfbGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IEdhbGxpdW0sIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU3RyaW5nIG9wZXJhdGlvbnMsIGJhc2VkIG9uIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gYnl0ZXMubWwuXG4gICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBhIFwiZHVwbGljYXRlZFwiIGNvbW1lbnQgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbi5cbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlc3RyaW5nX3NhZmVfc2V0XCJcbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfc3RyaW5nXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJXN0cmluZ191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDogc3RyaW5nIC0+IGludCAtPiAgYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9maWxsX3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbm1vZHVsZSBCID0gQnl0ZXNcblxubGV0IGJ0cyA9IEIudW5zYWZlX3RvX3N0cmluZ1xubGV0IGJvcyA9IEIudW5zYWZlX29mX3N0cmluZ1xuXG5sZXQgbWFrZSBuIGMgPVxuICBCLm1ha2UgbiBjIHw+IGJ0c1xubGV0IGluaXQgbiBmID1cbiAgQi5pbml0IG4gZiB8PiBidHNcbmxldCBlbXB0eSA9IFwiXCJcbmxldCBjb3B5IHMgPVxuICBCLmNvcHkgKGJvcyBzKSB8PiBidHNcbmxldCBvZl9ieXRlcyA9IEIudG9fc3RyaW5nXG5sZXQgdG9fYnl0ZXMgPSBCLm9mX3N0cmluZ1xubGV0IHN1YiBzIG9mcyBsZW4gPVxuICBCLnN1YiAoYm9zIHMpIG9mcyBsZW4gfD4gYnRzXG5sZXQgZmlsbCA9XG4gIEIuZmlsbFxubGV0IGJsaXQgPVxuICBCLmJsaXRfc3RyaW5nXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbmNhdFwiXG5cbmxldCByZWMgc3VtX2xlbmd0aHMgYWNjIHNlcGxlbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjXG4gIHwgaGQgOjogW10gLT4gbGVuZ3RoIGhkICsgYWNjXG4gIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgc2VwbGVuICsgYWNjKSBhY2MpIHNlcGxlbiB0bFxuXG5sZXQgcmVjIHVuc2FmZV9ibGl0cyBkc3QgcG9zIHNlcCBzZXBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGRzdFxuICB8IGhkIDo6IFtdIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpOyBkc3RcbiAgfCBoZCA6OiB0bCAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTtcbiAgICB1bnNhZmVfYmxpdCBzZXAgMCBkc3QgKHBvcyArIGxlbmd0aCBoZCkgc2VwbGVuO1xuICAgIHVuc2FmZV9ibGl0cyBkc3QgKHBvcyArIGxlbmd0aCBoZCArIHNlcGxlbikgc2VwIHNlcGxlbiB0bFxuXG5sZXQgY29uY2F0IHNlcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gXCJcIlxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW4gYnRzIEBAXG4gICAgICAgICAgdW5zYWZlX2JsaXRzXG4gICAgICAgICAgICAoQi5jcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCA9ICggXiApXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyIGYgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG8gZiAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGl0ZXJpIGYgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IHMgaSkgZG9uZVxuXG5sZXQgbWFwIGYgcyA9XG4gIEIubWFwIGYgKGJvcyBzKSB8PiBidHNcbmxldCBtYXBpIGYgcyA9XG4gIEIubWFwaSBmIChib3MgcykgfD4gYnRzXG5sZXQgZm9sZF9yaWdodCBmIHggYSA9XG4gIEIuZm9sZF9yaWdodCBmIChib3MgeCkgYVxubGV0IGZvbGRfbGVmdCBmIGEgeCA9XG4gIEIuZm9sZF9sZWZ0IGYgYSAoYm9zIHgpXG5sZXQgZXhpc3RzIGYgcyA9XG4gIEIuZXhpc3RzIGYgKGJvcyBzKVxubGV0IGZvcl9hbGwgZiBzID1cbiAgQi5mb3JfYWxsIGYgKGJvcyBzKVxuXG4oKiBCZXdhcmU6IHdlIGNhbm5vdCB1c2UgQi50cmltIG9yIEIuZXNjYXBlIGJlY2F1c2UgdGhleSBhbHdheXMgbWFrZSBhXG4gICBjb3B5LCBidXQgU3RyaW5nLm1saSBzcGVsbHMgb3V0IHNvbWUgY2FzZXMgd2hlcmUgd2UgYXJlIG5vdCBhbGxvd2VkXG4gICB0byBtYWtlIGEgY29weS4gKilcblxubGV0IGlzX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFwwMTInIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHQnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCB0cmltIHMgPVxuICBpZiBzID0gXCJcIiB0aGVuIHNcbiAgZWxzZSBpZiBpc19zcGFjZSAodW5zYWZlX2dldCBzIDApIHx8IGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgKGxlbmd0aCBzIC0gMSkpXG4gICAgdGhlbiBidHMgKEIudHJpbSAoYm9zIHMpKVxuICBlbHNlIHNcblxubGV0IGVzY2FwZWQgcyA9XG4gIGxldCByZWMgZXNjYXBlX2lmX25lZWRlZCBzIG4gaSA9XG4gICAgaWYgaSA+PSBuIHRoZW4gcyBlbHNlXG4gICAgICBtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXDAwMCcuLidcXDAzMScgfCAnXFwxMjcnLi4gJ1xcMjU1JyAtPlxuICAgICAgICAgIGJ0cyAoQi5lc2NhcGVkIChib3MgcykpXG4gICAgICB8IF8gLT4gZXNjYXBlX2lmX25lZWRlZCBzIG4gKGkrMSlcbiAgaW5cbiAgZXNjYXBlX2lmX25lZWRlZCBzIChsZW5ndGggcykgMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlY19vcHQgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgaW5kZXhfcmVjX29wdCBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gICAgaW5kZXhfcmVjIHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4IHMgYyA9IHJpbmRleF9yZWMgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfb3B0IHMgYyA9IHJpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9XG4gIEIudXBwZXJjYXNlX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPVxuICBCLmxvd2VyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIuY2FwaXRhbGl6ZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID1cbiAgQi51bmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHN0YXJ0c193aXRoIH5wcmVmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fcHJlID0gbGVuZ3RoIHByZWZpeCBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3ByZSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyBpIDw+IHVuc2FmZV9nZXQgcHJlZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gbGVuX3MgPj0gbGVuX3ByZSAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzcGxpdF9vbl9jaGFyIHNlcCBzID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCBzKSBpblxuICBmb3IgaSA9IGxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHVuc2FmZV9nZXQgcyBpID0gc2VwIHRoZW4gYmVnaW5cbiAgICAgIHIgOj0gc3ViIHMgKGkgKyAxKSAoIWogLSBpIC0gMSkgOjogIXI7XG4gICAgICBqIDo9IGlcbiAgICBlbmRcbiAgZG9uZTtcbiAgc3ViIHMgMCAhaiA6OiAhclxuXG4oKiBEZXByZWNhdGVkIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCB2aWEgb3RoZXIgZGVwcmVjYXRlZCBmdW5jdGlvbnMgKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbmxldCB1cHBlcmNhc2UgcyA9XG4gIEIudXBwZXJjYXNlIChib3MgcykgfD4gYnRzXG5sZXQgbG93ZXJjYXNlIHMgPVxuICBCLmxvd2VyY2FzZSAoYm9zIHMpIHw+IGJ0c1xubGV0IGNhcGl0YWxpemUgcyA9XG4gIEIuY2FwaXRhbGl6ZSAoYm9zIHMpIHw+IGJ0c1xubGV0IHVuY2FwaXRhbGl6ZSBzID1cbiAgQi51bmNhcGl0YWxpemUgKGJvcyBzKSB8PiBidHNcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N0cmluZ19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IGJvcyBzIHw+IEIudG9fc2VxXG5cbmxldCB0b19zZXFpIHMgPSBib3MgcyB8PiBCLnRvX3NlcWlcblxubGV0IG9mX3NlcSBnID0gQi5vZl9zZXEgZyB8PiBidHNcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfc3RyaW5nX2dldDMyXCJcbmV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NFwiXG5cbmxldCBnZXRfaW50OCBzIGkgPSBCLmdldF9pbnQ4IChib3MgcykgaVxubGV0IGdldF91aW50MTZfbGUgcyBpID0gQi5nZXRfdWludDE2X2xlIChib3MgcykgaVxubGV0IGdldF91aW50MTZfYmUgcyBpID0gQi5nZXRfdWludDE2X2JlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9uZSBzIGkgPSBCLmdldF9pbnQxNl9uZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbGUgcyBpID0gQi5nZXRfaW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2JlIHMgaSA9IEIuZ2V0X2ludDE2X2JlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9sZSBzIGkgPSBCLmdldF9pbnQzMl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfYmUgcyBpID0gQi5nZXRfaW50MzJfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2xlIHMgaSA9IEIuZ2V0X2ludDY0X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9iZSBzIGkgPSBCLmdldF9pbnQ2NF9iZSAoYm9zIHMpIGlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gdW5pdCA9ICgpXG5cbmxldCBlcXVhbCAoKSAoKSA9IHRydWVcbmxldCBjb21wYXJlICgpICgpID0gMFxubGV0IHRvX3N0cmluZyAoKSA9IFwiKClcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGV4dGVybl9mbGFncyA9XG4gICAgTm9fc2hhcmluZ1xuICB8IENsb3N1cmVzXG4gIHwgQ29tcGF0XzMyXG4oKiBub3RlOiB0aGlzIHR5cGUgZGVmaW5pdGlvbiBpcyB1c2VkIGluICdydW50aW1lL2RlYnVnZ2VyLmMnICopXG5cbmV4dGVybmFsIHRvX2NoYW5uZWw6IG91dF9jaGFubmVsIC0+ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVcIlxuZXh0ZXJuYWwgdG9fYnl0ZXM6ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IGJ5dGVzXG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzXCJcbmV4dGVybmFsIHRvX3N0cmluZzogJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gc3RyaW5nXG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZ1wiXG5leHRlcm5hbCB0b19idWZmZXJfdW5zYWZlOlxuICAgICAgYnl0ZXMgLT4gaW50IC0+IGludCAtPiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBpbnRcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyXCJcblxubGV0IHRvX2J1ZmZlciBidWZmIG9mcyBsZW4gdiBmbGFncyA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC50b19idWZmZXI6IHN1YnN0cmluZyBvdXQgb2YgYm91bmRzXCJcbiAgZWxzZSB0b19idWZmZXJfdW5zYWZlIGJ1ZmYgb2ZzIGxlbiB2IGZsYWdzXG5cbigqIFRoZSBmdW5jdGlvbnMgYmVsb3cgdXNlIGJ5dGUgc2VxdWVuY2VzIGFzIGlucHV0LCBuZXZlciB1c2luZyBhbnlcbiAgIG11dGF0aW9uLiBJdCBtYWtlcyBzZW5zZSB0byB1c2Ugbm9uLW11dGF0ZWQgW2J5dGVzXSByYXRoZXIgdGhhblxuICAgW3N0cmluZ10sIGJlY2F1c2Ugd2UgcmVhbGx5IHdvcmsgd2l0aCBzZXF1ZW5jZXMgb2YgYnl0ZXMsIG5vdFxuICAgYSB0ZXh0IHJlcHJlc2VudGF0aW9uLlxuKilcblxuZXh0ZXJuYWwgZnJvbV9jaGFubmVsOiBpbl9jaGFubmVsIC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlXCJcbmV4dGVybmFsIGZyb21fYnl0ZXNfdW5zYWZlOiBieXRlcyAtPiBpbnQgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlc1wiXG5leHRlcm5hbCBkYXRhX3NpemVfdW5zYWZlOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX21hcnNoYWxfZGF0YV9zaXplXCJcblxubGV0IGhlYWRlcl9zaXplID0gMjBcbmxldCBkYXRhX3NpemUgYnVmZiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gaGVhZGVyX3NpemVcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZGF0YV9zaXplXCJcbiAgZWxzZSBkYXRhX3NpemVfdW5zYWZlIGJ1ZmYgb2ZzXG5sZXQgdG90YWxfc2l6ZSBidWZmIG9mcyA9IGhlYWRlcl9zaXplICsgZGF0YV9zaXplIGJ1ZmYgb2ZzXG5cbmxldCBmcm9tX2J5dGVzIGJ1ZmYgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGhlYWRlcl9zaXplXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmZyb21fYnl0ZXNcIlxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGxlbiA9IGRhdGFfc2l6ZV91bnNhZmUgYnVmZiBvZnMgaW5cbiAgICBpZiBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIChoZWFkZXJfc2l6ZSArIGxlbilcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5mcm9tX2J5dGVzXCJcbiAgICBlbHNlIGZyb21fYnl0ZXNfdW5zYWZlIGJ1ZmYgb2ZzXG4gIGVuZFxuXG5sZXQgZnJvbV9zdHJpbmcgYnVmZiBvZnMgPVxuICAoKiBCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIGlzIHNhZmUgaGVyZSwgYXMgdGhlIHByb2R1Y2VkIGJ5dGVcbiAgICAgc2VxdWVuY2UgaXMgbmV2ZXIgbXV0YXRlZCAqKVxuICBmcm9tX2J5dGVzIChCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIGJ1ZmYpIG9mc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBPcGVyYXRpb25zIG9uIGludGVybmFsIHJlcHJlc2VudGF0aW9ucyBvZiB2YWx1ZXMgKilcblxudHlwZSB0XG5cbnR5cGUgcmF3X2RhdGEgPSBuYXRpdmVpbnRcblxuZXh0ZXJuYWwgcmVwciA6ICdhIC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBvYmogOiB0IC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgbWFnaWMgOiAnYSAtPiAnYiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGlzX2ludCA6IHQgLT4gYm9vbCA9IFwiJW9ial9pc19pbnRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gaXNfYmxvY2sgYSA9IG5vdCAoaXNfaW50IGEpXG5leHRlcm5hbCB0YWcgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfdGFnXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHNldF90YWcgOiB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX29ial9zZXRfdGFnXCJcbmV4dGVybmFsIHNpemUgOiB0IC0+IGludCA9IFwiJW9ial9zaXplXCJcbmV4dGVybmFsIHJlYWNoYWJsZV93b3JkcyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial9yZWFjaGFibGVfd29yZHNcIlxuZXh0ZXJuYWwgZmllbGQgOiB0IC0+IGludCAtPiB0ID0gXCIlb2JqX2ZpZWxkXCJcbmV4dGVybmFsIHNldF9maWVsZCA6IHQgLT4gaW50IC0+IHQgLT4gdW5pdCA9IFwiJW9ial9zZXRfZmllbGRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdGFycmF5X2dldFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X3NldCA6XG4gICAgZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiY2FtbF9mbG9hdGFycmF5X3NldFwiXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBkb3VibGVfZmllbGQgeCBpID0gZmxvYXRhcnJheV9nZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaVxubGV0IFtAaW5saW5lIGFsd2F5c10gc2V0X2RvdWJsZV9maWVsZCB4IGkgdiA9XG4gIGZsb2F0YXJyYXlfc2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGkgdlxuZXh0ZXJuYWwgcmF3X2ZpZWxkIDogdCAtPiBpbnQgLT4gcmF3X2RhdGEgPSBcImNhbWxfb2JqX3Jhd19maWVsZFwiXG5leHRlcm5hbCBzZXRfcmF3X2ZpZWxkIDogdCAtPiBpbnQgLT4gcmF3X2RhdGEgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfb2JqX3NldF9yYXdfZmllbGRcIlxuXG5leHRlcm5hbCBuZXdfYmxvY2sgOiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfb2JqX2Jsb2NrXCJcbmV4dGVybmFsIGR1cCA6IHQgLT4gdCA9IFwiY2FtbF9vYmpfZHVwXCJcbmV4dGVybmFsIHRydW5jYXRlIDogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfdHJ1bmNhdGVcIlxuZXh0ZXJuYWwgYWRkX29mZnNldCA6IHQgLT4gSW50MzIudCAtPiB0ID0gXCJjYW1sX29ial9hZGRfb2Zmc2V0XCJcbmV4dGVybmFsIHdpdGhfdGFnIDogaW50IC0+IHQgLT4gdCA9IFwiY2FtbF9vYmpfd2l0aF90YWdcIlxuXG5sZXQgbWFyc2hhbCAob2JqIDogdCkgPVxuICBNYXJzaGFsLnRvX2J5dGVzIG9iaiBbXVxubGV0IHVubWFyc2hhbCBzdHIgcG9zID1cbiAgKE1hcnNoYWwuZnJvbV9ieXRlcyBzdHIgcG9zLCBwb3MgKyBNYXJzaGFsLnRvdGFsX3NpemUgc3RyIHBvcylcblxubGV0IGZpcnN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAwXG5sZXQgbGFzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMjQ1XG5cbmxldCBsYXp5X3RhZyA9IDI0NlxubGV0IGNsb3N1cmVfdGFnID0gMjQ3XG5sZXQgb2JqZWN0X3RhZyA9IDI0OFxubGV0IGluZml4X3RhZyA9IDI0OVxubGV0IGZvcndhcmRfdGFnID0gMjUwXG5cbmxldCBub19zY2FuX3RhZyA9IDI1MVxuXG5sZXQgYWJzdHJhY3RfdGFnID0gMjUxXG5sZXQgc3RyaW5nX3RhZyA9IDI1MlxubGV0IGRvdWJsZV90YWcgPSAyNTNcbmxldCBkb3VibGVfYXJyYXlfdGFnID0gMjU0XG5sZXQgY3VzdG9tX3RhZyA9IDI1NVxubGV0IGZpbmFsX3RhZyA9IGN1c3RvbV90YWdcblxuXG5sZXQgaW50X3RhZyA9IDEwMDBcbmxldCBvdXRfb2ZfaGVhcF90YWcgPSAxMDAxXG5sZXQgdW5hbGlnbmVkX3RhZyA9IDEwMDJcblxubW9kdWxlIENsb3N1cmUgPSBzdHJ1Y3RcbiAgdHlwZSBpbmZvID0ge1xuICAgIGFyaXR5OiBpbnQ7XG4gICAgc3RhcnRfZW52OiBpbnQ7XG4gIH1cblxuICBsZXQgaW5mb19vZl9yYXcgKGluZm8gOiBuYXRpdmVpbnQpID1cbiAgICBsZXQgb3BlbiBOYXRpdmVpbnQgaW5cbiAgICBsZXQgYXJpdHkgPVxuICAgICAgKCogc2lnbmVkOiBuZWdhdGl2ZSBmb3IgdHVwbGVkIGZ1bmN0aW9ucyAqKVxuICAgICAgaWYgU3lzLndvcmRfc2l6ZSA9IDY0IHRoZW5cbiAgICAgICAgdG9faW50IChzaGlmdF9yaWdodCBpbmZvIDU2KVxuICAgICAgZWxzZVxuICAgICAgICB0b19pbnQgKHNoaWZ0X3JpZ2h0IGluZm8gMjQpXG4gICAgaW5cbiAgICBsZXQgc3RhcnRfZW52ID1cbiAgICAgICgqIHN0YXJ0X2VudiBpcyB1bnNpZ25lZCwgYnV0IHdlIGtub3cgaXQgY2FuIGFsd2F5cyBmaXQgYW4gT0NhbWxcbiAgICAgICAgIGludGVnZXIgc28gd2UgdXNlIFt0b19pbnRdIGluc3RlYWQgb2YgW3Vuc2lnbmVkX3RvX2ludF0uICopXG4gICAgICB0b19pbnQgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKHNoaWZ0X2xlZnQgaW5mbyA4KSA5KSBpblxuICAgIHsgYXJpdHk7IHN0YXJ0X2VudiB9XG5cbiAgKCogbm90ZTogd2UgZXhwZWN0IGEgY2xvc3VyZSwgbm90IGFuIGluZml4IHBvaW50ZXIgKilcbiAgbGV0IGluZm8gKG9iaiA6IHQpID1cbiAgICBhc3NlcnQgKHRhZyBvYmogPSBjbG9zdXJlX3RhZyk7XG4gICAgaW5mb19vZl9yYXcgKHJhd19maWVsZCBvYmogMSlcbmVuZFxuXG5tb2R1bGUgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbnN0cnVjdFxuICB0eXBlIHQgPSBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgbGV0IG9mX3ZhbCB4ID1cbiAgICBsZXQgeCA9IHJlcHIgeCBpblxuICAgIGxldCBzbG90ID1cbiAgICAgIGlmIChpc19ibG9jayB4KSAmJiAodGFnIHgpIDw+IG9iamVjdF90YWcgJiYgKHNpemUgeCkgPj0gMSB0aGVuIGZpZWxkIHggMFxuICAgICAgZWxzZSB4XG4gICAgaW5cbiAgICBsZXQgbmFtZSA9XG4gICAgICBpZiAoaXNfYmxvY2sgc2xvdCkgJiYgKHRhZyBzbG90KSA9IG9iamVjdF90YWcgdGhlbiBmaWVsZCBzbG90IDBcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcbiAgICBpblxuICAgICAgaWYgKHRhZyBuYW1lKSA9IHN0cmluZ190YWcgdGhlbiAob2JqIHNsb3QgOiB0KVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIG5hbWUgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMCkgOiBzdHJpbmcpXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gaWQgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMSkgOiBpbnQpXG5lbmRcblxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IEV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWxcbmxldCBleHRlbnNpb25fbmFtZSA9IEV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5uYW1lXG5sZXQgZXh0ZW5zaW9uX2lkID0gRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkXG5cbm1vZHVsZSBFcGhlbWVyb24gPSBzdHJ1Y3RcbiAgdHlwZSBvYmpfdCA9IHRcblxuICB0eXBlIHQgKCoqIGVwaGVtZXJvbiAqKVxuXG4gICAoKiogVG8gY2hhbmdlIGluIHN5bmMgd2l0aCB3ZWFrLmggKilcbiAgbGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMlxuICBsZXQgbWF4X2VwaGVfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2VwaGVfY3JlYXRlXCI7O1xuICBsZXQgY3JlYXRlIGwgPVxuICAgIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gbWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uY3JlYXRlXCI7XG4gICAgY3JlYXRlIGxcblxuICBsZXQgbGVuZ3RoIHggPSBzaXplKHJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGV4dGVybmFsIGdldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlcIlxuICBsZXQgZ2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleVwiO1xuICAgIGdldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleV9jb3B5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcIlxuICBsZXQgZ2V0X2tleV9jb3B5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5X2NvcHlcIjtcbiAgICBnZXRfa2V5X2NvcHkgZSBvXG5cbiAgZXh0ZXJuYWwgc2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuICBsZXQgc2V0X2tleSBlIG8geCA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5zZXRfa2V5XCI7XG4gICAgc2V0X2tleSBlIG8geFxuXG4gIGV4dGVybmFsIHVuc2V0X2tleTogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG4gIGxldCB1bnNldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnVuc2V0X2tleVwiO1xuICAgIHVuc2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBjaGVja19rZXk6IHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19rZXlcIlxuICBsZXQgY2hlY2tfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5jaGVja19rZXlcIjtcbiAgICBjaGVja19rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgYmxpdF9rZXkgOiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgID0gXCJjYW1sX2VwaGVfYmxpdF9rZXlcIlxuXG4gIGxldCBibGl0X2tleSBlMSBvMSBlMiBvMiBsID1cbiAgICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgICAgfHwgbzIgPCAwIHx8IG8yID4gbGVuZ3RoIGUyIC0gbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmJsaXRfa2V5XCJcbiAgICBlbHNlIGlmIGwgPD4gMCB0aGVuIGJsaXRfa2V5IGUxIG8xIGUyIG8yIGxcblxuICBleHRlcm5hbCBnZXRfZGF0YTogdCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfZGF0YVwiXG4gIGV4dGVybmFsIGdldF9kYXRhX2NvcHk6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVwiXG4gIGV4dGVybmFsIHNldF9kYXRhOiB0IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfZGF0YVwiXG4gIGV4dGVybmFsIHVuc2V0X2RhdGE6IHQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2RhdGFcIlxuICBleHRlcm5hbCBjaGVja19kYXRhOiB0IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19kYXRhXCJcbiAgZXh0ZXJuYWwgYmxpdF9kYXRhIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9ibGl0X2RhdGFcIlxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIGFycmF5cy4gKilcbnR5cGUgJ2EgdCA9ICdhIGFycmF5XG5cbigqIEFycmF5IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogJ2EgYXJyYXkgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcbmV4dGVybmFsIGdldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3NhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcbmV4dGVybmFsIG1ha2U6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuZXh0ZXJuYWwgY3JlYXRlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIHVuc2FmZV9zdWIgOiAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X3N1YlwiXG5leHRlcm5hbCBhcHBlbmRfcHJpbSA6ICdhIGFycmF5IC0+ICdhIGFycmF5IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X2FwcGVuZFwiXG5leHRlcm5hbCBjb25jYXQgOiAnYSBhcnJheSBsaXN0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X2NvbmNhdFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6XG4gICdhIGFycmF5IC0+IGludCAtPiAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfYmxpdFwiXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6XG4gICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9hcnJheV9maWxsXCJcbmV4dGVybmFsIGNyZWF0ZV9mbG9hdDogaW50IC0+IGZsb2F0IGFycmF5ID0gXCJjYW1sX21ha2VfZmxvYXRfdmVjdFwiXG5sZXQgbWFrZV9mbG9hdCA9IGNyZWF0ZV9mbG9hdFxuXG5tb2R1bGUgRmxvYXRhcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gZmxvYXRhcnJheSA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IGZsb2F0YXJyYXkgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5lbmRcblxubGV0IGluaXQgbCBmID1cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2VcbiAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmluaXRcIlxuICAoKiBTZWUgIzY1NzUuIFdlIGNvdWxkIGFsc28gY2hlY2sgZm9yIG1heGltdW0gYXJyYXkgc2l6ZSwgYnV0IHRoaXMgZGVwZW5kc1xuICAgICBvbiB3aGV0aGVyIHdlIGNyZWF0ZSBhIGZsb2F0IGFycmF5IG9yIGEgcmVndWxhciBvbmUuLi4gKilcbiAgZWxzZVxuICAgbGV0IHJlcyA9IGNyZWF0ZSBsIChmIDApIGluXG4gICBmb3IgaSA9IDEgdG8gcHJlZCBsIGRvXG4gICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgIGRvbmU7XG4gICByZXNcblxubGV0IG1ha2VfbWF0cml4IHN4IHN5IGluaXQgPVxuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgZm9yIHggPSAwIHRvIHByZWQgc3ggZG9cbiAgICB1bnNhZmVfc2V0IHJlcyB4IChjcmVhdGUgc3kgaW5pdClcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBjcmVhdGVfbWF0cml4ID0gbWFrZV9tYXRyaXhcblxubGV0IGNvcHkgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW4gaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgdW5zYWZlX3N1YiBhIDAgbFxuXG5sZXQgYXBwZW5kIGExIGEyID1cbiAgbGV0IGwxID0gbGVuZ3RoIGExIGluXG4gIGlmIGwxID0gMCB0aGVuIGNvcHkgYTJcbiAgZWxzZSBpZiBsZW5ndGggYTIgPSAwIHRoZW4gdW5zYWZlX3N1YiBhMSAwIGwxXG4gIGVsc2UgYXBwZW5kX3ByaW0gYTEgYTJcblxubGV0IHN1YiBhIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGEgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LnN1YlwiXG4gIGVsc2UgdW5zYWZlX3N1YiBhIG9mcyBsZW5cblxubGV0IGZpbGwgYSBvZnMgbGVuIHYgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGEgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmZpbGxcIlxuICBlbHNlIHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2XG5cbmxldCBibGl0IGExIG9mczEgYTIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBsZW5ndGggYTEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIGEyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5ibGl0XCJcbiAgZWxzZSB1bnNhZmVfYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuXG5cbmxldCBpdGVyIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZih1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgaXRlcjIgZiBhIGIgPVxuICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICBlbHNlXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSBkb25lXG5cbmxldCBtYXAgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IG1hcDIgZiBhIGIgPVxuICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBsYSA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIChmICh1bnNhZmVfZ2V0IGEgMCkgKHVuc2FmZV9nZXQgYiAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcbiAgZW5kXG5cbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IG1hcGkgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYgMCAodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IHRvX2xpc3QgYSA9XG4gIGxldCByZWMgdG9saXN0IGkgcmVzID1cbiAgICBpZiBpIDwgMCB0aGVuIHJlcyBlbHNlIHRvbGlzdCAoaSAtIDEpICh1bnNhZmVfZ2V0IGEgaSA6OiByZXMpIGluXG4gIHRvbGlzdCAobGVuZ3RoIGEgLSAxKSBbXVxuXG4oKiBDYW5ub3QgdXNlIExpc3QubGVuZ3RoIGhlcmUgYmVjYXVzZSB0aGUgTGlzdCBtb2R1bGUgZGVwZW5kcyBvbiBBcnJheS4gKilcbmxldCByZWMgbGlzdF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjdVxuICB8IF86OnQgLT4gbGlzdF9sZW5ndGggKHN1Y2MgYWNjdSkgdFxuXG5sZXQgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgYSA9IGNyZWF0ZSAobGlzdF9sZW5ndGggMCBsKSBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGkrMSkgdGwgaW5cbiAgICAgIGZpbGwgMSB0bFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2MgaW5wdXRfYXJyYXkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0X2FycmF5IGluXG4gIGlmIGxlbiA9IDAgdGhlbiAoYWNjLCBbfHxdKSBlbHNlIGJlZ2luXG4gICAgbGV0IGFjYywgZWx0ID0gZiBhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgMCkgaW5cbiAgICBsZXQgb3V0cHV0X2FycmF5ID0gY3JlYXRlIGxlbiBlbHQgaW5cbiAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgYWNjJywgZWx0ID0gZiAhYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IGkpIGluXG4gICAgICBhY2MgOj0gYWNjJztcbiAgICAgIHVuc2FmZV9zZXQgb3V0cHV0X2FycmF5IGkgZWx0O1xuICAgIGRvbmU7XG4gICAgIWFjYywgb3V0cHV0X2FycmF5XG4gIGVuZFxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZm9yX2FsbDJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBleGlzdHMyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5leGlzdHMyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBtZW1xIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHggPT0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX29wdCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBpZiBwIHggdGhlbiBTb21lIHhcbiAgICAgIGVsc2UgbG9vcCAoc3VjYyBpKVxuICBpblxuICBsb29wIDBcblxubGV0IGZpbmRfbWFwIGYgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGYgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoc3VjYyBpKVxuICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgeCA9XG4gIGlmIHggPSBbfHxdIHRoZW4gW3x8XSwgW3x8XVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGEwLCBiMCA9IHVuc2FmZV9nZXQgeCAwIGluXG4gICAgbGV0IG4gPSBsZW5ndGggeCBpblxuICAgIGxldCBhID0gY3JlYXRlIG4gYTAgaW5cbiAgICBsZXQgYiA9IGNyZWF0ZSBuIGIwIGluXG4gICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICBsZXQgYWksIGJpID0gdW5zYWZlX2dldCB4IGkgaW5cbiAgICAgIHVuc2FmZV9zZXQgYSBpIGFpO1xuICAgICAgdW5zYWZlX3NldCBiIGkgYmlcbiAgICBkb25lO1xuICAgIGEsIGJcbiAgZW5kXG5cbmxldCBjb21iaW5lIGEgYiA9XG4gIGxldCBuYSA9IGxlbmd0aCBhIGluXG4gIGxldCBuYiA9IGxlbmd0aCBiIGluXG4gIGlmIG5hIDw+IG5iIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5jb21iaW5lXCI7XG4gIGlmIG5hID0gMCB0aGVuIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCB4ID0gY3JlYXRlIG5hICh1bnNhZmVfZ2V0IGEgMCwgdW5zYWZlX2dldCBiIDApIGluXG4gICAgZm9yIGkgPSAxIHRvIG5hIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCB4IGkgKHVuc2FmZV9nZXQgYSBpLCB1bnNhZmVfZ2V0IGIgaSlcbiAgICBkb25lO1xuICAgIHhcbiAgZW5kXG5cbmV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG5sZXQgc29ydCBjbXAgYSA9XG4gIGxldCBtYXhzb24gbCBpID1cbiAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICF4XG4gICAgZW5kIGVsc2VcbiAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgdGhlbiBpMzErMVxuICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICBpblxuICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgIGJ1YmJsZWRvd24gbCBqXG4gIGluXG4gIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgc2V0IGEgaSBlO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgZG9uZTtcbiAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuXG5sZXQgY3V0b2ZmID0gNVxubGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICBlbmRcbiAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgaW5cbiAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgZGVjciBqO1xuICAgICAgZG9uZTtcbiAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICBkb25lO1xuICBpblxuICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgbGV0IHQgPSBtYWtlIGwyIChnZXQgYSAwKSBpblxuICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICBlbmRcblxuXG5sZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgb2ZfcmV2X2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGxlbiA9IGxpc3RfbGVuZ3RoIDAgbCBpblxuICAgICAgbGV0IGEgPSBjcmVhdGUgbGVuIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgICAgaW5cbiAgICAgIGZpbGwgKGxlbi0yKSB0bFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgb2ZfcmV2X2xpc3QgbFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICBOaWNvbGFzIE9qZWRhIEJhciwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBuZWcgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsIGFkZCA6IGZsb2F0IC0+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+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgICBkZWNyIGo7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICAgIGRvbmU7XG4gICAgaW5cbiAgICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgICAgaWYgbGVuIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgICBzb3J0dG8gKHNyY29mcyArIGwxKSBkc3QgKGRzdG9mcyArIGwxKSBsMjtcbiAgICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gMCBhIDAgbCBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgICBsZXQgdCA9IGNyZWF0ZSBsMiBpblxuICAgICAgc29ydHRvIGwxIHQgMCBsMjtcbiAgICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICAgIGVuZFxuXG4gIGxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxIGEgPVxuICAgIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgICB0aGVuXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHRvX3NlcWkgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9yZXZfbGlzdCBsID1cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCBhID0gY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgW10gLT4gYVxuICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICBpblxuICAgIGZpbGwgKGxlbi0xKSBsXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9zZXEgaSA9XG4gICAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gICAgb2ZfcmV2X2xpc3QgbFxuXG5cbiAgbGV0IG1hcF90b19hcnJheSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsID0gMCB0aGVuIFt8IHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gQXJyYXkubWFrZSBsIChmICh1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgbGV0IG1hcF9mcm9tX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbmVuZFxuXG5tb2R1bGUgQXJyYXlMYWJlbHMgPSBBcnJheVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDMyXTogMzItYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDMyID0gXCIlaW50MzJfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDMyIC0+IGludCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX29mX2Zsb2F0XCIgXCJjYW1sX2ludDMyX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQzMiAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQzMl90b19mbG9hdFwiIFwiY2FtbF9pbnQzMl90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgemVybyA9IDBsXG5sZXQgb25lID0gMWxcbmxldCBtaW51c19vbmUgPSAtMWxcbmxldCBzdWNjIG4gPSBhZGQgbiAxbFxubGV0IHByZWQgbiA9IHN1YiBuIDFsXG5sZXQgYWJzIG4gPSBpZiBuID49IDBsIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgbWluX2ludCA9IDB4ODAwMDAwMDBsXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZsXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFsKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbWF0Y2ggU3lzLndvcmRfc2l6ZSB3aXRoXG4gIHwgMzIgLT5cbiAgICAgIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gICAgICBmdW4gbiAtPlxuICAgICAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICB8IDY0IC0+XG4gICAgICAoKiBTbyB0aGF0IGl0IGNvbXBpbGVzIGluIDMyLWJpdCAqKVxuICAgICAgbGV0IG1hc2sgPSAweEZGRkYgbHNsIDE2IGxvciAweEZGRkYgaW5cbiAgICAgIGZ1biBuIC0+IFNvbWUgKHRvX2ludCBuIGxhbmQgbWFzaylcbiAgfCBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZyA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMiA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxudHlwZSB0ID0gaW50MzJcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDY0XTogNjQtYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG5cbmxldCB6ZXJvID0gMExcbmxldCBvbmUgPSAxTFxubGV0IG1pbnVzX29uZSA9IC0xTFxubGV0IHN1Y2MgbiA9IGFkZCBuIDFMXG5sZXQgcHJlZCBuID0gc3ViIG4gMUxcbmxldCBhYnMgbiA9IGlmIG4gPj0gMEwgdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBtaW5faW50ID0gMHg4MDAwMDAwMDAwMDAwMDAwTFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGRkZGRkZGRkZMXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFMKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5cblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbnR5cGUgdCA9IGludDY0XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtOYXRpdmVpbnRdOiBwcm9jZXNzb3ItbmF0aXZlIGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZzogbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9uZWdcIlxuZXh0ZXJuYWwgYWRkOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hZGRcIlxuZXh0ZXJuYWwgc3ViOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9zdWJcIlxuZXh0ZXJuYWwgbXVsOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9tdWxcIlxuZXh0ZXJuYWwgZGl2OiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9kaXZcIlxuZXh0ZXJuYWwgcmVtOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3I6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29yXCJcbmV4dGVybmFsIGxvZ3hvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQ6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWw6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2xzclwiXG5leHRlcm5hbCBvZl9pbnQ6IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludDogbmF0aXZlaW50IC0+IGludCA9IFwiJW5hdGl2ZWludF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBuYXRpdmVpbnRcbiAgPSBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogbmF0aXZlaW50IC0+IGZsb2F0XG4gID0gXCJjYW1sX25hdGl2ZWludF90b19mbG9hdFwiIFwiY2FtbF9uYXRpdmVpbnRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBvZl9pbnQzMjogaW50MzIgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyOiBuYXRpdmVpbnQgLT4gaW50MzIgPSBcIiVuYXRpdmVpbnRfdG9faW50MzJcIlxuXG5sZXQgemVybyA9IDBuXG5sZXQgb25lID0gMW5cbmxldCBtaW51c19vbmUgPSAtMW5cbmxldCBzdWNjIG4gPSBhZGQgbiAxblxubGV0IHByZWQgbiA9IHN1YiBuIDFuXG5sZXQgYWJzIG4gPSBpZiBuID49IDBuIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgc2l6ZSA9IFN5cy53b3JkX3NpemVcbmxldCBtaW5faW50ID0gc2hpZnRfbGVmdCAxbiAoc2l6ZSAtIDEpXG5sZXQgbWF4X2ludCA9IHN1YiBtaW5faW50IDFuXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFuKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gbmF0aXZlaW50IC0+IHN0cmluZyA9IFwiY2FtbF9uYXRpdmVpbnRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmc6IHN0cmluZyAtPiBuYXRpdmVpbnQgPSBcImNhbWxfbmF0aXZlaW50X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG50eXBlIHQgPSBuYXRpdmVpbnRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4ICopXG5cbnR5cGUgcG9zaXRpb24gPSB7XG4gIHBvc19mbmFtZSA6IHN0cmluZztcbiAgcG9zX2xudW0gOiBpbnQ7XG4gIHBvc19ib2wgOiBpbnQ7XG4gIHBvc19jbnVtIDogaW50O1xufVxuXG5sZXQgZHVtbXlfcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDA7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IC0xO1xufVxuXG50eXBlIGxleGJ1ZiA9XG4gIHsgcmVmaWxsX2J1ZmYgOiBsZXhidWYgLT4gdW5pdDtcbiAgICBtdXRhYmxlIGxleF9idWZmZXIgOiBieXRlcztcbiAgICBtdXRhYmxlIGxleF9idWZmZXJfbGVuIDogaW50O1xuICAgIG11dGFibGUgbGV4X2Fic19wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2N1cnJfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfYWN0aW9uIDogaW50O1xuICAgIG11dGFibGUgbGV4X2VvZl9yZWFjaGVkIDogYm9vbDtcbiAgICBtdXRhYmxlIGxleF9tZW0gOiBpbnQgYXJyYXk7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcCA6IHBvc2l0aW9uO1xuICAgIG11dGFibGUgbGV4X2N1cnJfcCA6IHBvc2l0aW9uO1xuICB9XG5cbnR5cGUgbGV4X3RhYmxlcyA9XG4gIHsgbGV4X2Jhc2U6IHN0cmluZztcbiAgICBsZXhfYmFja3Ryazogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0OiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrOiBzdHJpbmc7XG4gICAgbGV4X2Jhc2VfY29kZSA6IHN0cmluZztcbiAgICBsZXhfYmFja3Rya19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0X2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NvZGU6IHN0cmluZzt9XG5cbmV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcbmV4dGVybmFsIGNfbmV3X2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9uZXdfbGV4X2VuZ2luZVwiXG5cbmxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gIGlmIHJlc3VsdCA+PSAwICYmIGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3BvcyB0aGVuIGJlZ2luXG4gICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gIGVuZDtcbiAgcmVzdWx0XG5cblxubGV0IG5ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX25ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5sZXQgbGV4X3JlZmlsbCByZWFkX2Z1biBhdXhfYnVmZmVyIGxleGJ1ZiA9XG4gIGxldCByZWFkID1cbiAgICByZWFkX2Z1biBhdXhfYnVmZmVyIChCeXRlcy5sZW5ndGggYXV4X2J1ZmZlcikgaW5cbiAgbGV0IG4gPVxuICAgIGlmIHJlYWQgPiAwXG4gICAgdGhlbiByZWFkXG4gICAgZWxzZSAobGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlOyAwKSBpblxuICAoKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBidWZmZXI6XG4gICAgICAgIDwtLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLT5cbiAgICAgICAgfCAganVuayB8ICAgICAgdmFsaWQgZGF0YSAgICAgfCAgIGp1bmsgICAgfFxuICAgICAgICBeICAgICAgIF4gICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICBeXG4gICAgICAgIDAgICAgc3RhcnRfcG9zICAgICAgICAgICAgIGJ1ZmZlcl9lbmQgICAgQnl0ZXMubGVuZ3RoIGJ1ZmZlclxuICAqKVxuICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuID4gQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyIHRoZW4gYmVnaW5cbiAgICAoKiBUaGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgblxuICAgICAgIDw9IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlclxuICAgIHRoZW4gYmVnaW5cbiAgICAgICgqIEJ1dCB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgaWYgd2UgcmVjbGFpbSB0aGUganVuayBhdCB0aGUgYmVnaW5uaW5nXG4gICAgICAgICBvZiB0aGUgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBsZXhidWYubGV4X2J1ZmZlciAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICgqIFdlIG11c3QgZ3JvdyB0aGUgYnVmZmVyLiAgRG91YmxpbmcgaXRzIHNpemUgd2lsbCBwcm92aWRlIGVub3VnaFxuICAgICAgICAgc3BhY2Ugc2luY2UgbiA8PSBTdHJpbmcubGVuZ3RoIGF1eF9idWZmZXIgPD0gU3RyaW5nLmxlbmd0aCBidWZmZXIuXG4gICAgICAgICBXYXRjaCBvdXQgZm9yIHN0cmluZyBsZW5ndGggb3ZlcmZsb3csIHRob3VnaC4gKilcbiAgICAgIGxldCBuZXdsZW4gPVxuICAgICAgICBJbnQubWluICgyICogQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgbiA+IG5ld2xlblxuICAgICAgdGhlbiBmYWlsd2l0aCBcIkxleGluZy5sZXhfcmVmaWxsOiBjYW5ub3QgZ3JvdyBidWZmZXJcIjtcbiAgICAgIGxldCBuZXdidWYgPSBCeXRlcy5jcmVhdGUgbmV3bGVuIGluXG4gICAgICAoKiBDb3B5IHRoZSB2YWxpZCBkYXRhIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5ldyBidWZmZXIgKilcbiAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgIG5ld2J1ZiAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpO1xuICAgICAgbGV4YnVmLmxleF9idWZmZXIgPC0gbmV3YnVmXG4gICAgZW5kO1xuICAgICgqIFJlYWxsb2NhdGlvbiBvciBub3QsIHdlIGhhdmUgc2hpZnRlZCB0aGUgZGF0YSBsZWZ0IGJ5XG4gICAgICAgc3RhcnRfcG9zIGNoYXJhY3RlcnM7IHVwZGF0ZSB0aGUgcG9zaXRpb25zICopXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBzO1xuICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIHM7XG4gICAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gMDtcbiAgICBsZXhidWYubGV4X2xhc3RfcG9zIDwtIGxleGJ1Zi5sZXhfbGFzdF9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBzIDtcbiAgICBsZXQgdCA9IGxleGJ1Zi5sZXhfbWVtIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LTEgZG9cbiAgICAgIGxldCB2ID0gdC4oaSkgaW5cbiAgICAgIGlmIHYgPj0gMCB0aGVuXG4gICAgICAgIHQuKGkpIDwtIHYtc1xuICAgIGRvbmVcbiAgZW5kO1xuICAoKiBUaGVyZSBpcyBub3cgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICBCeXRlcy5ibGl0IGF1eF9idWZmZXIgMCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X2J1ZmZlcl9sZW4gbjtcbiAgbGV4YnVmLmxleF9idWZmZXJfbGVuIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiArIG5cblxubGV0IHplcm9fcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDE7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IDA7XG59XG5cbmxldCBmcm9tX2Z1bmN0aW9uID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBmID1cbiAgeyByZWZpbGxfYnVmZiA9IGxleF9yZWZpbGwgZiAoQnl0ZXMuY3JlYXRlIDUxMik7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAxMDI0O1xuICAgIGxleF9idWZmZXJfbGVuID0gMDtcbiAgICBsZXhfYWJzX3BvcyA9IDA7XG4gICAgbGV4X3N0YXJ0X3BvcyA9IDA7XG4gICAgbGV4X2N1cnJfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9wb3MgPSAwO1xuICAgIGxleF9sYXN0X2FjdGlvbiA9IDA7XG4gICAgbGV4X21lbSA9IFt8fF07XG4gICAgbGV4X2VvZl9yZWFjaGVkID0gZmFsc2U7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBmcm9tX2NoYW5uZWwgP3dpdGhfcG9zaXRpb25zIGljID1cbiAgZnJvbV9mdW5jdGlvbiA/d2l0aF9wb3NpdGlvbnMgKGZ1biBidWYgbiAtPiBpbnB1dCBpYyBidWYgMCBuKVxuXG5sZXQgZnJvbV9zdHJpbmcgPyh3aXRoX3Bvc2l0aW9ucyA9IHRydWUpIHMgPVxuICB7IHJlZmlsbF9idWZmID0gKGZ1biBsZXhidWYgLT4gbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlKTtcbiAgICBsZXhfYnVmZmVyID0gQnl0ZXMub2Zfc3RyaW5nIHM7ICgqIGhhdmUgdG8gbWFrZSBhIGNvcHkgZm9yIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdW5zYWZlLXN0cmluZyBtb2RlICopXG4gICAgbGV4X2J1ZmZlcl9sZW4gPSBTdHJpbmcubGVuZ3RoIHM7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IHRydWU7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBzZXRfcG9zaXRpb24gbGV4YnVmIHBvc2l0aW9uID1cbiAgbGV4YnVmLmxleF9jdXJyX3AgIDwtIHtwb3NpdGlvbiB3aXRoIHBvc19mbmFtZSA9IGxleGJ1Zi5sZXhfY3Vycl9wLnBvc19mbmFtZX07XG4gIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBwb3NpdGlvbi5wb3NfY251bVxuXG5sZXQgc2V0X2ZpbGVuYW1lIGxleGJ1ZiBmbmFtZSA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHtsZXhidWYubGV4X2N1cnJfcCB3aXRoIHBvc19mbmFtZSA9IGZuYW1lfVxuXG5sZXQgd2l0aF9wb3NpdGlvbnMgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zXG5cbmxldCBsZXhlbWUgbGV4YnVmID1cbiAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICBCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG5sZXQgc3ViX2xleGVtZSBsZXhidWYgaTEgaTIgPVxuICBsZXQgbGVuID0gaTItaTEgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBpMSBsZW5cblxubGV0IHN1Yl9sZXhlbWVfb3B0IGxleGJ1ZiBpMSBpMiA9XG4gIGlmIGkxID49IDAgdGhlbiBiZWdpblxuICAgIGxldCBsZW4gPSBpMi1pMSBpblxuICAgIFNvbWUgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuKVxuICBlbmQgZWxzZSBiZWdpblxuICAgIE5vbmVcbiAgZW5kXG5cbmxldCBzdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGkgPSBCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgaVxuXG5sZXQgc3ViX2xleGVtZV9jaGFyX29wdCBsZXhidWYgaSA9XG4gIGlmIGkgPj0gMCB0aGVuXG4gICAgU29tZSAoQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGkpXG4gIGVsc2VcbiAgICBOb25lXG5cblxubGV0IGxleGVtZV9jaGFyIGxleGJ1ZiBpID1cbiAgQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIChsZXhidWYubGV4X3N0YXJ0X3BvcyArIGkpXG5cbmxldCBsZXhlbWVfc3RhcnQgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wLnBvc19jbnVtXG5sZXQgbGV4ZW1lX2VuZCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfY251bVxuXG5sZXQgbGV4ZW1lX3N0YXJ0X3AgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wXG5sZXQgbGV4ZW1lX2VuZF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wXG5cbmxldCBuZXdfbGluZSBsZXhidWYgPVxuICBsZXQgbGNwID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICAgIHsgbGNwIHdpdGhcbiAgICAgICAgcG9zX2xudW0gPSBsY3AucG9zX2xudW0gKyAxO1xuICAgICAgICBwb3NfYm9sID0gbGNwLnBvc19jbnVtO1xuICAgICAgfVxuXG5cblxuKCogRGlzY2FyZCBkYXRhIGxlZnQgaW4gbGV4ZXIgYnVmZmVyLiAqKVxuXG5sZXQgZmx1c2hfaW5wdXQgbGIgPVxuICBsYi5sZXhfY3Vycl9wb3MgPC0gMDtcbiAgbGIubGV4X2Fic19wb3MgPC0gMDtcbiAgbGV0IGxjcCA9IGxiLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGIubGV4X2N1cnJfcCA8LSB7emVyb19wb3Mgd2l0aCBwb3NfZm5hbWUgPSBsY3AucG9zX2ZuYW1lfTtcbiAgbGIubGV4X2J1ZmZlcl9sZW4gPC0gMDtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHBhcnNpbmcgZW5naW5lICopXG5cbm9wZW4gTGV4aW5nXG5cbigqIEludGVybmFsIGludGVyZmFjZSB0byB0aGUgcGFyc2luZyBlbmdpbmUgKilcblxudHlwZSBwYXJzZXJfZW52ID1cbiAgeyBtdXRhYmxlIHNfc3RhY2sgOiBpbnQgYXJyYXk7ICAgICAgICAoKiBTdGF0ZXMgKilcbiAgICBtdXRhYmxlIHZfc3RhY2sgOiBPYmoudCBhcnJheTsgICAgICAoKiBTZW1hbnRpYyBhdHRyaWJ1dGVzICopXG4gICAgbXV0YWJsZSBzeW1iX3N0YXJ0X3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICgqIFN0YXJ0IHBvc2l0aW9ucyAqKVxuICAgIG11dGFibGUgc3ltYl9lbmRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgICAoKiBFbmQgcG9zaXRpb25zICopXG4gICAgbXV0YWJsZSBzdGFja3NpemUgOiBpbnQ7ICAgICAgICAgICAgKCogU2l6ZSBvZiB0aGUgc3RhY2tzICopXG4gICAgbXV0YWJsZSBzdGFja2Jhc2UgOiBpbnQ7ICAgICAgICAgICAgKCogQmFzZSBzcCBmb3IgY3VycmVudCBwYXJzZSAqKVxuICAgIG11dGFibGUgY3Vycl9jaGFyIDogaW50OyAgICAgICAgICAgICgqIExhc3QgdG9rZW4gcmVhZCAqKVxuICAgIG11dGFibGUgbHZhbCA6IE9iai50OyAgICAgICAgICAgICAgICgqIEl0cyBzZW1hbnRpYyBhdHRyaWJ1dGUgKilcbiAgICBtdXRhYmxlIHN5bWJfc3RhcnQgOiBwb3NpdGlvbjsgICAgICAoKiBTdGFydCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCopXG4gICAgbXV0YWJsZSBzeW1iX2VuZCA6IHBvc2l0aW9uOyAgICAgICAgKCogRW5kIHBvcy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sICopXG4gICAgbXV0YWJsZSBhc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogVGhlIHN0YWNrIHBvaW50ZXIgZm9yIGF0dHJpYnV0ZXMgKilcbiAgICBtdXRhYmxlIHJ1bGVfbGVuIDogaW50OyAgICAgICAgICAgICAoKiBOdW1iZXIgb2YgcmhzIGl0ZW1zIGluIHRoZSBydWxlICopXG4gICAgbXV0YWJsZSBydWxlX251bWJlciA6IGludDsgICAgICAgICAgKCogUnVsZSBudW1iZXIgdG8gcmVkdWNlIGJ5ICopXG4gICAgbXV0YWJsZSBzcCA6IGludDsgICAgICAgICAgICAgICAgICAgKCogU2F2ZWQgc3AgZm9yIHBhcnNlX2VuZ2luZSAqKVxuICAgIG11dGFibGUgc3RhdGUgOiBpbnQ7ICAgICAgICAgICAgICAgICgqIFNhdmVkIHN0YXRlIGZvciBwYXJzZV9lbmdpbmUgKilcbiAgICBtdXRhYmxlIGVycmZsYWcgOiBpbnQgfSAgICAgICAgICAgICAoKiBTYXZlZCBlcnJvciBmbGFnIGZvciBwYXJzZV9lbmdpbmUgKilcbltAQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdXG5cbnR5cGUgcGFyc2VfdGFibGVzID1cbiAgeyBhY3Rpb25zIDogKHBhcnNlcl9lbnYgLT4gT2JqLnQpIGFycmF5O1xuICAgIHRyYW5zbF9jb25zdCA6IGludCBhcnJheTtcbiAgICB0cmFuc2xfYmxvY2sgOiBpbnQgYXJyYXk7XG4gICAgbGhzIDogc3RyaW5nO1xuICAgIGxlbiA6IHN0cmluZztcbiAgICBkZWZyZWQgOiBzdHJpbmc7XG4gICAgZGdvdG8gOiBzdHJpbmc7XG4gICAgc2luZGV4IDogc3RyaW5nO1xuICAgIHJpbmRleCA6IHN0cmluZztcbiAgICBnaW5kZXggOiBzdHJpbmc7XG4gICAgdGFibGVzaXplIDogaW50O1xuICAgIHRhYmxlIDogc3RyaW5nO1xuICAgIGNoZWNrIDogc3RyaW5nO1xuICAgIGVycm9yX2Z1bmN0aW9uIDogc3RyaW5nIC0+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+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgODtcbiAgdW5zYWZlX3NldF9pbnQ2NCBiLmJ1ZmZlciBiLnBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbGUgYiB4ID1cbiAgYWRkX2ludDE2X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDE2X2JlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcblxubGV0IGFkZF9pbnQzMl9sZSBiIHggPVxuICBhZGRfaW50MzJfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50MzJfYmUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuXG5sZXQgYWRkX2ludDY0X2xlIGIgeCA9XG4gIGFkZF9pbnQ2NF9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQ2NF9iZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHgpXG5cbmxldCBhZGRfdWludDggPSBhZGRfaW50OFxubGV0IGFkZF91aW50MTZfbmUgPSBhZGRfaW50MTZfbmVcbmxldCBhZGRfdWludDE2X2xlID0gYWRkX2ludDE2X2xlXG5sZXQgYWRkX3VpbnQxNl9iZSA9IGFkZF9pbnQxNl9iZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgIEJlbm9pdCBWYXVnb24sIEVOU1RBICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAoKiBUb29scyB0byBtYW5pcHVsYXRlIHNjYW5uaW5nIHNldCBvZiBjaGFycyAoc2VlICVbLi4uXSkgKilcblxudHlwZSBtdXRhYmxlX2NoYXJfc2V0ID0gYnl0ZXNcblxuKCogQ3JlYXRlIGEgZnJlc2gsIGVtcHR5LCBtdXRhYmxlIGNoYXIgc2V0LiAqKVxubGV0IGNyZWF0ZV9jaGFyX3NldCAoKSA9IEJ5dGVzLm1ha2UgMzIgJ1xcMDAwJ1xuXG4oKiBBZGQgYSBjaGFyIGluIGEgbXV0YWJsZSBjaGFyIHNldC4gKilcbmxldCBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyA9XG4gIGxldCBpbmQgPSBpbnRfb2ZfY2hhciBjIGluXG4gIGxldCBzdHJfaW5kID0gaW5kIGxzciAzIGFuZCBtYXNrID0gMSBsc2wgKGluZCBsYW5kIDBiMTExKSBpblxuICBCeXRlcy5zZXQgY2hhcl9zZXQgc3RyX2luZFxuICAgIChjaGFyX29mX2ludCAoaW50X29mX2NoYXIgKEJ5dGVzLmdldCBjaGFyX3NldCBzdHJfaW5kKSBsb3IgbWFzaykpXG5cbmxldCBmcmVlemVfY2hhcl9zZXQgY2hhcl9zZXQgPVxuICBCeXRlcy50b19zdHJpbmcgY2hhcl9zZXRcblxuKCogQ29tcHV0ZSB0aGUgY29tcGxlbWVudCBvZiBhIGNoYXIgc2V0LiAqKVxubGV0IHJldl9jaGFyX3NldCBjaGFyX3NldCA9XG4gIGxldCBjaGFyX3NldCcgPSBjcmVhdGVfY2hhcl9zZXQgKCkgaW5cbiAgZm9yIGkgPSAwIHRvIDMxIGRvXG4gICAgQnl0ZXMuc2V0IGNoYXJfc2V0JyBpXG4gICAgICAoY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIChTdHJpbmcuZ2V0IGNoYXJfc2V0IGkpIGx4b3IgMHhGRikpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGNoYXJfc2V0J1xuXG4oKiBSZXR1cm4gdHJ1ZSBpZiBhIGBjJyBpcyBpbiBgY2hhcl9zZXQnLiAqKVxubGV0IGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgPVxuICBsZXQgaW5kID0gaW50X29mX2NoYXIgYyBpblxuICBsZXQgc3RyX2luZCA9IGluZCBsc3IgMyBhbmQgbWFzayA9IDEgbHNsIChpbmQgbGFuZCAwYjExMSkgaW5cbiAgKGludF9vZl9jaGFyIChTdHJpbmcuZ2V0IGNoYXJfc2V0IHN0cl9pbmQpIGxhbmQgbWFzaykgPD4gMFxuXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCogSWdub3JlZCBwYXJhbSBjb252ZXJzaW9uICopXG5cbigqIEdBRFQgdXNlZCB0byBhYnN0cmFjdCBhbiBleGlzdGVudGlhbCB0eXBlIHBhcmFtZXRlci4gKilcbigqIFNlZSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYXJhbV9mb3JtYXRfZWJiID0gUGFyYW1fZm9ybWF0X0VCQiA6XG4gICAgKCd4IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYXJhbV9mb3JtYXRfZWJiXG5cbigqIENvbXB1dGUgYSBwYWRkaW5nIGFzc29jaWF0ZWQgdG8gYSBwYWRfb3B0aW9uIChzZWUgXCIlXzQyZFwiKS4gKilcbmxldCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0ID0gbWF0Y2ggcGFkX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBOb19wYWRkaW5nXG4gIHwgU29tZSB3aWR0aCAtPiBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKVxuXG4oKiBDb21wdXRlIGEgcHJlY2lzaW9uIGFzc29jaWF0ZWQgdG8gYSBwcmVjX29wdGlvbiAoc2VlIFwiJV8uNDJmXCIpLiAqKVxubGV0IHByZWNfb2ZfcHJlY19vcHQgcHJlY19vcHQgPSBtYXRjaCBwcmVjX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBOb19wcmVjaXNpb25cbiAgfCBTb21lIG5kZWMgLT4gTGl0X3ByZWNpc2lvbiBuZGVjXG5cbigqIFR1cm4gYW4gaWdub3JlZCBwYXJhbSBpbnRvIGl0cyBlcXVpdmFsZW50IG5vdC1pZ25vcmVkIGZvcm1hdCBub2RlLiAqKVxuKCogVXNlZCBmb3IgZm9ybWF0IHByZXR0eS1wcmludGluZyBhbmQgU2NhbmYuICopXG5sZXQgcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgLlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+ICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT5cbiAgICAgIChhLCBiLCBjLCBkLCBlLCBmKSBwYXJhbV9mb3JtYXRfZWJiID1cbmZ1biBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2hhciBmbXQpXG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDYW1sX2NoYXIgZm10KVxuICB8IElnbm9yZWRfc3RyaW5nIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTdHJpbmcgKHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEludCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2ludDMyIChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoSW50MzIgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChOYXRpdmVpbnQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQ2NCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEludDY0IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfZmxvYXQgKHBhZF9vcHQsIHByZWNfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChGbG9hdCAoKEZsb2F0X2ZsYWdfLCBGbG9hdF9mKSxcbiAgICAgICAgICAgICAgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgcHJlY19vZl9wcmVjX29wdCBwcmVjX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2Jvb2wgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEJvb2wgKHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgZm10KSlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHkpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIGZtdCkpXG4gIHwgSWdub3JlZF9yZWFkZXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChSZWFkZXIgZm10KVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXQpKVxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10KSlcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9uZXh0X2NoYXIgZm10KVxuXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUeXBlcyAqKVxuXG50eXBlICgnYiwgJ2MpIGFjY19mb3JtYXR0aW5nX2dlbiA9XG4gIHwgQWNjX29wZW5fdGFnIG9mICgnYiwgJ2MpIGFjY1xuICB8IEFjY19vcGVuX2JveCBvZiAoJ2IsICdjKSBhY2NcblxuKCogUmV2ZXJzZWQgbGlzdCBvZiBwcmludGluZyBhdG9tcy4gKilcbigqIFVzZWQgdG8gYWNjdW11bGF0ZSBwcmludGYgYXJndW1lbnRzLiAqKVxuYW5kICgnYiwgJ2MpIGFjYyA9XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IG9mICgnYiwgJ2MpIGFjYyAqIGZvcm1hdHRpbmdfbGl0XG4gICAgICAoKiBTcGVjaWFsIGZtdHRpbmcgKGJveCkgKilcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gb2YgKCdiLCAnYykgYWNjICogKCdiLCAnYykgYWNjX2Zvcm1hdHRpbmdfZ2VuXG4gICAgICAoKiBTcGVjaWFsIGZtdHRpbmcgKGJveCkgKilcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nICAgICAoKiBMaXRlcmFsIHN0cmluZyAqKVxuICB8IEFjY19jaGFyX2xpdGVyYWwgICBvZiAoJ2IsICdjKSBhY2MgKiBjaGFyICAgICAgICgqIExpdGVyYWwgY2hhciAqKVxuICB8IEFjY19kYXRhX3N0cmluZyAgICBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmcgICAgICgqIEdlbmVyYXRlZCBzdHJpbmcgKilcbiAgfCBBY2NfZGF0YV9jaGFyICAgICAgb2YgKCdiLCAnYykgYWNjICogY2hhciAgICAgICAoKiBHZW5lcmF0ZWQgY2hhciAqKVxuICB8IEFjY19kZWxheSAgICAgICAgICBvZiAoJ2IsICdjKSBhY2MgKiAoJ2IgLT4gJ2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBEZWxheWVkIHByaW50aW5nICglYSwgJXQpICopXG4gIHwgQWNjX2ZsdXNoICAgICAgICAgIG9mICgnYiwgJ2MpIGFjYyAgICAgICAgICAgICAgKCogRmx1c2ggKilcbiAgfCBBY2NfaW52YWxpZF9hcmcgICAgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nXG4gICAgICAoKiBSYWlzZSBJbnZhbGlkX2FyZ3VtZW50IG1zZyAqKVxuICB8IEVuZF9vZl9hY2NcblxuKCogTGlzdCBvZiBoZXRlcm9nZW5lb3VzIHZhbHVlcy4gKilcbigqIFVzZWQgdG8gYWNjdW11bGF0ZSBzY2FuZiBjYWxsYmFjayBhcmd1bWVudHMuICopXG50eXBlICgnYSwgJ2IpIGhldGVyX2xpc3QgPVxuICB8IENvbnMgOiAnYyAqICgnYSwgJ2IpIGhldGVyX2xpc3QgLT4gKCdjIC0+ICdhLCAnYikgaGV0ZXJfbGlzdFxuICB8IE5pbCA6ICgnYiwgJ2IpIGhldGVyX2xpc3RcblxuKCogRXhpc3RlbnRpYWwgQmxhY2sgQm94ZXMuICopXG4oKiBVc2VkIHRvIGFic3RyYWN0IHNvbWUgZXhpc3RlbnRpYWwgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nIGFuZCBhbiBmbXR0eS4gKilcbigqIFNlZSB0aGUgdHlwZV9wYWRkaW5nIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkZGluZ19mbXR0eV9lYmIgPSBQYWRkaW5nX2ZtdHR5X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZGRpbmdfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXR0eS4gKilcbigqIFNlZSB0aGUgdHlwZV9wYWRwcmVjIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkcHJlY19mbXR0eV9lYmIgPSBQYWRwcmVjX2ZtdHR5X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICd6KSBwcmVjaXNpb24gKiAoJ3osICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZHByZWNfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcgYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3BhZGRpbmdfZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdlLCAnZikgcGFkZGluZ19mbXRfZWJiID0gUGFkZGluZ19mbXRfRUJCIDpcbiAgICAgKF8sICd4IC0+ICdhKSBwYWRkaW5nICpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2UsICdmKSBwYWRkaW5nX2ZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wcmVjaXNpb25fZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdlLCAnZikgcHJlY2lzaW9uX2ZtdF9lYmIgPSBQcmVjaXNpb25fZm10X0VCQiA6XG4gICAgIChfLCAneCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2UsICdmKSBwcmVjaXNpb25fZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcGFkcHJlY19mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ3AsICdiLCAnYywgJ2UsICdmKSBwYWRwcmVjX2ZtdF9lYmIgPSBQYWRwcmVjX2ZtdF9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAncCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ3AsICdiLCAnYywgJ2UsICdmKSBwYWRwcmVjX2ZtdF9lYmJcblxuKCogQWJzdHJhY3QgdGhlICdhIGFuZCAnZCBwYXJhbWV0ZXJzIG9mIGFuIGZtdC4gKilcbigqIE91dHB1dCB0eXBlIG9mIHRoZSBmb3JtYXQgcGFyc2luZyBmdW5jdGlvbi4gKilcbnR5cGUgKCdiLCAnYywgJ2UsICdmKSBmbXRfZWJiID0gRm10X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCdiLCAnYywgJ2UsICdmKSBmbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhbiBmbXR0eSBhbmQgYW4gZm10LiAqKVxuKCogU2VlIHRoZSB0eXBlX2Zvcm1hdF9nZW4gZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRfZm10dHlfZWJiID0gRm10X2ZtdHR5X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBmbXQgKlxuICAgICAoJ3gsICdiLCAnYywgJ3ksICdlLCAnZikgZm10dHkgLT5cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGFuIGZtdHR5IGFuZCBhbiBmbXQuICopXG4oKiBTZWUgdGhlIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfZm10X2ViYiA9IEZtdHR5X2ZtdF9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgZm10dHkgKlxuICAgICAoJ3gsICdiLCAnYywgJ3ksICdlLCAnZikgZm10X2ZtdHR5X2ViYiAtPlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfZm10X2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgZm10dHkgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIGZvcm1hdCB0eXBlcy4gKilcbnR5cGUgZm10dHlfZWJiID0gRm10dHlfRUJCIDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+IGZtdHR5X2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgcGFkZGluZyB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgcGFkZGluZ3MuICopXG50eXBlIHBhZGRpbmdfZWJiID0gUGFkZGluZ19FQkIgOiAoJ2EsICdiKSBwYWRkaW5nIC0+IHBhZGRpbmdfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBwcmVjaXNpb24gdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIHByZWNpc2lvbnMuICopXG50eXBlIHByZWNpc2lvbl9lYmIgPSBQcmVjaXNpb25fRUJCIDogKCdhLCAnYikgcHJlY2lzaW9uIC0+IHByZWNpc2lvbl9lYmJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBDb25zdGFudHMgKilcblxuKCogRGVmYXVsdCBwcmVjaXNpb24gZm9yIGZsb2F0IHByaW50aW5nLiAqKVxubGV0IGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252ID1cbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRyB8IEZsb2F0X2ggfCBGbG9hdF9IXG4gIHwgRmxvYXRfQ0YgLT4gLTZcbiAgKCogRm9yICVoICVIIGFuZCAlI0YgZm9ybWF0cywgYSBuZWdhdGl2ZSBwcmVjaXNpb24gbWVhbnMgXCJhcyBtYW55IGRpZ2l0cyBhc1xuICAgICBuZWNlc3NhcnlcIi4gIEZvciB0aGUgb3RoZXIgRlAgZm9ybWF0cywgd2UgdGFrZSB0aGUgYWJzb2x1dGUgdmFsdWVcbiAgICAgb2YgdGhlIHByZWNpc2lvbiwgaGVuY2UgNiBkaWdpdHMgYnkgZGVmYXVsdC4gKilcbiAgfCBGbG9hdF9GIC0+IDEyXG4gICgqIERlZmF1bHQgcHJlY2lzaW9uIGZvciBPQ2FtbCBmbG9hdCBwcmludGluZyAoJUYpLiAqKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEV4dGVybmFscyAqKVxuXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQ6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQ6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDMyOiBzdHJpbmcgLT4gaW50MzIgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2ludDMyX2Zvcm1hdFwiXG5leHRlcm5hbCBmb3JtYXRfbmF0aXZlaW50OiBzdHJpbmcgLT4gbmF0aXZlaW50IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9uYXRpdmVpbnRfZm9ybWF0XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQ2NDogc3RyaW5nIC0+IGludDY0IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9pbnQ2NF9mb3JtYXRcIlxuZXh0ZXJuYWwgaGV4c3RyaW5nX29mX2Zsb2F0OiBmbG9hdCAtPiBpbnQgLT4gY2hhciAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0XCJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICgqIFRvb2xzIHRvIHByZXR0eS1wcmludCBmb3JtYXRzICopXG5cbigqIFR5cGUgb2YgZXh0ZW5zaWJsZSBjaGFyYWN0ZXIgYnVmZmVycy4gKilcbnR5cGUgYnVmZmVyID0ge1xuICBtdXRhYmxlIGluZCA6IGludDtcbiAgbXV0YWJsZSBieXRlcyA6IGJ5dGVzO1xufVxuXG4oKiBDcmVhdGUgYSBmcmVzaCBidWZmZXIuICopXG5sZXQgYnVmZmVyX2NyZWF0ZSBpbml0X3NpemUgPSB7IGluZCA9IDA7IGJ5dGVzID0gQnl0ZXMuY3JlYXRlIGluaXRfc2l6ZSB9XG5cbigqIENoZWNrIHNpemUgb2YgdGhlIGJ1ZmZlciBhbmQgZ3JvdyBpdCBpZiBuZWVkZWQuICopXG5sZXQgYnVmZmVyX2NoZWNrX3NpemUgYnVmIG92ZXJoZWFkID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBidWYuYnl0ZXMgaW5cbiAgbGV0IG1pbl9sZW4gPSBidWYuaW5kICsgb3ZlcmhlYWQgaW5cbiAgaWYgbWluX2xlbiA+IGxlbiB0aGVuIChcbiAgICBsZXQgbmV3X2xlbiA9IEludC5tYXggKGxlbiAqIDIpIG1pbl9sZW4gaW5cbiAgICBsZXQgbmV3X3N0ciA9IEJ5dGVzLmNyZWF0ZSBuZXdfbGVuIGluXG4gICAgQnl0ZXMuYmxpdCBidWYuYnl0ZXMgMCBuZXdfc3RyIDAgbGVuO1xuICAgIGJ1Zi5ieXRlcyA8LSBuZXdfc3RyO1xuICApXG5cbigqIEFkZCB0aGUgY2hhcmFjdGVyIGBjJyB0byB0aGUgYnVmZmVyIGBidWYnLiAqKVxubGV0IGJ1ZmZlcl9hZGRfY2hhciBidWYgYyA9XG4gIGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiAxO1xuICBCeXRlcy5zZXQgYnVmLmJ5dGVzIGJ1Zi5pbmQgYztcbiAgYnVmLmluZCA8LSBidWYuaW5kICsgMVxuXG4oKiBBZGQgdGhlIHN0cmluZyBgcycgdG8gdGhlIGJ1ZmZlciBgYnVmJy4gKilcbmxldCBidWZmZXJfYWRkX3N0cmluZyBidWYgcyA9XG4gIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiBzdHJfbGVuO1xuICBTdHJpbmcuYmxpdCBzIDAgYnVmLmJ5dGVzIGJ1Zi5pbmQgc3RyX2xlbjtcbiAgYnVmLmluZCA8LSBidWYuaW5kICsgc3RyX2xlblxuXG4oKiBHZXQgdGhlIGNvbnRlbnQgb2YgdGhlIGJ1ZmZlci4gKilcbmxldCBidWZmZXJfY29udGVudHMgYnVmID1cbiAgQnl0ZXMuc3ViX3N0cmluZyBidWYuYnl0ZXMgMCBidWYuaW5kXG5cbigqKiopXG5cbigqIENvbnZlcnQgYW4gaW50ZWdlciBjb252ZXJzaW9uIHRvIGNoYXIuICopXG5sZXQgY2hhcl9vZl9pY29udiBpY29udiA9IG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfZCB8IEludF9wZCB8IEludF9zZCB8IEludF9DZCAtPiAnZCcgfCBJbnRfaSB8IEludF9waSB8IEludF9zaVxuICB8IEludF9DaSAtPiAnaScgfCBJbnRfeCB8IEludF9DeCAtPiAneCcgfCBJbnRfWCB8IEludF9DWCAtPiAnWCcgfCBJbnRfb1xuICB8IEludF9DbyAtPiAnbycgfCBJbnRfdSB8IEludF9DdSAtPiAndSdcblxuKCogQ29udmVydCBhIGZsb2F0IGNvbnZlcnNpb24gdG8gY2hhci4gKilcbigqIGBjRicgd2lsbCBiZSAnRicgZm9yIGRpc3BsYXlpbmcgZm9ybWF0IGFuZCAnZycgdG8gY2FsbCBsaWJjIHByaW50ZiAqKVxubGV0IGNoYXJfb2ZfZmNvbnYgPyhjRj0nRicpIGZjb252ID0gbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9mIC0+ICdmJyB8IEZsb2F0X2UgLT4gJ2UnXG4gIHwgRmxvYXRfRSAtPiAnRScgfCBGbG9hdF9nIC0+ICdnJ1xuICB8IEZsb2F0X0cgLT4gJ0cnIHwgRmxvYXRfRiAtPiBjRlxuICB8IEZsb2F0X2ggLT4gJ2gnIHwgRmxvYXRfSCAtPiAnSCdcbiAgfCBGbG9hdF9DRiAtPiAnRidcblxuXG4oKiBDb252ZXJ0IGEgc2Nhbm5pbmcgY291bnRlciB0byBjaGFyLiAqKVxubGV0IGNoYXJfb2ZfY291bnRlciBjb3VudGVyID0gbWF0Y2ggY291bnRlciB3aXRoXG4gIHwgTGluZV9jb3VudGVyICAtPiAnbCdcbiAgfCBDaGFyX2NvdW50ZXIgIC0+ICduJ1xuICB8IFRva2VuX2NvdW50ZXIgLT4gJ04nXG5cbigqKiopXG5cbigqIFByaW50IGEgY2hhcl9zZXQgaW4gYSBidWZmZXIgd2l0aCB0aGUgT0NhbWwgZm9ybWF0IGxleGljYWwgY29udmVudGlvbi4gKilcbmxldCBicHJpbnRfY2hhcl9zZXQgYnVmIGNoYXJfc2V0ID1cbiAgbGV0IHJlYyBwcmludF9zdGFydCBzZXQgPVxuICAgIGxldCBpc19hbG9uZSBjID1cbiAgICAgIGxldCBiZWZvcmUsIGFmdGVyID0gQ2hhci4oY2hyIChjb2RlIGMgLSAxKSwgY2hyIChjb2RlIGMgKyAxKSkgaW5cbiAgICAgIGlzX2luX2NoYXJfc2V0IHNldCBjXG4gICAgICAmJiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCBiZWZvcmUgJiYgaXNfaW5fY2hhcl9zZXQgc2V0IGFmdGVyKSBpblxuICAgIGlmIGlzX2Fsb25lICddJyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ10nO1xuICAgIHByaW50X291dCBzZXQgMTtcbiAgICBpZiBpc19hbG9uZSAnLScgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICctJztcbiAgYW5kIHByaW50X291dCBzZXQgaSA9XG4gICAgaWYgaSA8IDI1NiB0aGVuXG4gICAgICBpZiBpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGkpIHRoZW4gcHJpbnRfZmlyc3Qgc2V0IGlcbiAgICAgIGVsc2UgcHJpbnRfb3V0IHNldCAoaSArIDEpXG4gIGFuZCBwcmludF9maXJzdCBzZXQgaSA9XG4gICAgbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgfCAnXFwyNTUnIC0+IHByaW50X2NoYXIgYnVmIDI1NTtcbiAgICB8ICddJyB8ICctJyAtPiBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgfCBfIC0+IHByaW50X3NlY29uZCBzZXQgKGkgKyAxKTtcbiAgYW5kIHByaW50X3NlY29uZCBzZXQgaSA9XG4gICAgaWYgaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBpKSB0aGVuXG4gICAgICBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICAgIHwgJ1xcMjU1JyAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAyNTQ7XG4gICAgICAgIHByaW50X2NoYXIgYnVmIDI1NTtcbiAgICAgIHwgJ10nIHwgJy0nIHdoZW4gbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IChpICsgMSkpKSAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgICBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgICB8IF8gd2hlbiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgKGkgKyAxKSkpIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICAgIHByaW50X2NoYXIgYnVmIGk7XG4gICAgICAgIHByaW50X291dCBzZXQgKGkgKyAyKTtcbiAgICAgIHwgXyAtPlxuICAgICAgICBwcmludF9pbiBzZXQgKGkgLSAxKSAoaSArIDIpO1xuICAgIGVsc2UgKFxuICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgIHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICApXG4gIGFuZCBwcmludF9pbiBzZXQgaSBqID1cbiAgICBpZiBqID0gMjU2IHx8IG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBqKSkgdGhlbiAoXG4gICAgICBwcmludF9jaGFyIGJ1ZiBpO1xuICAgICAgcHJpbnRfY2hhciBidWYgKGludF9vZl9jaGFyICctJyk7XG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaiAtIDEpO1xuICAgICAgaWYgaiA8IDI1NiB0aGVuIHByaW50X291dCBzZXQgKGogKyAxKTtcbiAgICApIGVsc2VcbiAgICAgIHByaW50X2luIHNldCBpIChqICsgMSk7XG4gIGFuZCBwcmludF9jaGFyIGJ1ZiBpID0gbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgfCAnJScgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICAgIHwgJ0AnIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICdAJztcbiAgICB8IGMgICAtPiBidWZmZXJfYWRkX2NoYXIgYnVmIGM7XG4gIGluXG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ1snO1xuICBwcmludF9zdGFydCAoXG4gICAgaWYgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgJ1xcMDAwJ1xuICAgIHRoZW4gKCBidWZmZXJfYWRkX2NoYXIgYnVmICdeJzsgcmV2X2NoYXJfc2V0IGNoYXJfc2V0IClcbiAgICBlbHNlIGNoYXJfc2V0XG4gICk7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ10nXG5cbigqKiopXG5cbigqIFByaW50IGEgcGFkdHkgaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wYWR0eSBidWYgcGFkdHkgPSBtYXRjaCBwYWR0eSB3aXRoXG4gIHwgTGVmdCAgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLSdcbiAgfCBSaWdodCAtPiAoKVxuICB8IFplcm9zIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJzAnXG5cbigqIFByaW50IHRoZSAnXycgb2YgYW4gaWdub3JlZCBmbGFnIGlmIG5lZWRlZC4gKilcbmxldCBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZyA9XG4gIGlmIGlnbl9mbGFnIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXydcblxuKCoqKilcblxubGV0IGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0ID0gbWF0Y2ggcGFkX29wdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgd2lkdGggLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIHdpZHRoKVxuXG4oKioqKVxuXG4oKiBQcmludCBwYWRkaW5nIGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcGFkZGluZyA6IHR5cGUgYSBiIC4gYnVmZmVyIC0+IChhLCBiKSBwYWRkaW5nIC0+IHVuaXQgPVxuZnVuIGJ1ZiBwYWQgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nIC0+ICgpXG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCBuKSAtPlxuICAgIGJwcmludF9wYWR0eSBidWYgcGFkdHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIG4pO1xuICB8IEFyZ19wYWRkaW5nIHBhZHR5IC0+XG4gICAgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eTtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcqJ1xuXG4oKiBQcmludCBwcmVjaXNpb24gaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wcmVjaXNpb24gOiB0eXBlIGEgYiAuIGJ1ZmZlciAtPiAoYSwgYikgcHJlY2lzaW9uIC0+IHVuaXQgPVxuICBmdW4gYnVmIHByZWMgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gIHwgTm9fcHJlY2lzaW9uIC0+ICgpXG4gIHwgTGl0X3ByZWNpc2lvbiBuIC0+XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLic7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIG4pO1xuICB8IEFyZ19wcmVjaXNpb24gLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIuKlwiXG5cbigqKiopXG5cbigqIFByaW50IHRoZSBvcHRpb25hbCAnKycsICcgJyBvciAnIycgYXNzb2NpYXRlZCB0byBhbiBpbnQgY29udmVyc2lvbi4gKilcbmxldCBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnYgPSBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X3BkIHwgSW50X3BpIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJysnXG4gIHwgSW50X3NkIHwgSW50X3NpIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyAnXG4gIHwgSW50X0N4IHwgSW50X0NYIHwgSW50X0NvIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcjJ1xuICB8IEludF9kIHwgSW50X2kgfCBJbnRfeCB8IEludF9YIHwgSW50X28gfCBJbnRfdSAtPiAoKVxuXG4oKiBQcmludCBhbiBjb21wbGV0ZSBpbnQgZm9ybWF0IGluIGEgYnVmZmVyIChleDogXCIlMy4qZFwiKS4gKilcbmxldCBicHJpbnRfaW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9pY29udiBpY29udilcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBpbnQzMiwgbmF0aXZlaW50IG9yIGludDY0IGZvcm1hdCBpbiBhIGJ1ZmZlci4gKilcbmxldCBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIGM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpXG5cbigqKiopXG5cbigqIFByaW50IHRoZSBvcHRpb25hbCAnKycsICcgJyBhbmQvb3IgJyMnIGFzc29jaWF0ZWQgdG8gYSBmbG9hdCBjb252ZXJzaW9uLiAqKVxubGV0IGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udiA9XG4gIGJlZ2luIG1hdGNoIGZzdCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZmxhZ19wIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJysnXG4gIHwgRmxvYXRfZmxhZ19zIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyAnXG4gIHwgRmxvYXRfZmxhZ18gLT4gKCkgZW5kO1xuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X0NGIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyMnXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0dcbiAgfCBGbG9hdF9GIHwgRmxvYXRfaCB8IEZsb2F0X0ggLT4gKClcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmbG9hdCBmb3JtYXQgaW4gYSBidWZmZXIgKGV4OiBcIiUrKi4zZlwiKS4gKilcbmxldCBicHJpbnRfZmxvYXRfZm10IGJ1ZiBpZ25fZmxhZyBmY29udiBwYWQgcHJlYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2Zjb252IGZjb252KVxuXG4oKiBDb21wdXRlIHRoZSBsaXRlcmFsIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIEZvcm1hdHRpbmdfbGl0LiAqKVxuKCogVXNlZCBieSBQcmludGYgYW5kIFNjYW5mIHdoZXJlIGZvcm1hdHRpbmcgaXMgbm90IGludGVycHJldGVkLiAqKVxubGV0IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmb3JtYXR0aW5nX2xpdCA9IG1hdGNoIGZvcm1hdHRpbmdfbGl0IHdpdGhcbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAtPiBcIkBdXCJcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAtPiBcIkB9XCJcbiAgfCBCcmVhayAoc3RyLCBfLCBfKSAgICAtPiBzdHJcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAtPiBcIkA/XCJcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAtPiBcIkBcXG5cIlxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgIC0+IFwiQC5cIlxuICB8IE1hZ2ljX3NpemUgKHN0ciwgXykgIC0+IHN0clxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgIC0+IFwiQEBcIlxuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgIC0+IFwiQCVcIlxuICB8IFNjYW5faW5kaWMgYyAtPiBcIkBcIiBeIChTdHJpbmcubWFrZSAxIGMpXG5cbigqKiopXG5cbigqIFByaW50IGEgbGl0ZXJhbCBjaGFyIGluIGEgYnVmZmVyLCBlc2NhcGUgJyUnIGJ5IFwiJSVcIi4gKilcbmxldCBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBjaHIgPSBtYXRjaCBjaHIgd2l0aFxuICB8ICclJyAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlJVwiXG4gIHwgXyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmIGNoclxuXG4oKiBQcmludCBhIGxpdGVyYWwgc3RyaW5nIGluIGEgYnVmZmVyLCBlc2NhcGUgYWxsICclJyBieSBcIiUlXCIuICopXG5sZXQgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBzdHIgPVxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdHIgLSAxIGRvXG4gICAgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgc3RyLltpXVxuICBkb25lXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCBwcmV0dHktcHJpbnRpbmcgKilcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmb3JtYXQgdHlwZSAoYW4gZm10dHkpIGluIGEgYnVmZmVyLiAqKVxubGV0IHJlYyBicHJpbnRfZm10dHkgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIC5cbiAgICBidWZmZXIgLT4gKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGksIGosIGssIGwpIGZtdHR5X3JlbCAtPiB1bml0ID1cbmZ1biBidWYgZm10dHkgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVjXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXNcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlaVwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludDMyX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVsaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJW5pXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlTGlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEZsb2F0X3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVmXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQm9vbF90eSByZXN0ICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJUJcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBBbHBoYV90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlYVwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFRoZXRhX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV0XCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQW55X3R5IHJlc3QgICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJT9cIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBSZWFkZXJfdHkgcmVzdCAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlclwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVfclwiO1xuICAgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IEZvcm1hdF9hcmdfdHkgKHN1Yl9mbXR0eSwgcmVzdCkgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIle1wiOyBicHJpbnRfZm10dHkgYnVmIHN1Yl9mbXR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlfVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgRm9ybWF0X3N1YnN0X3R5IChzdWJfZm10dHksIF8sIHJlc3QpIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJShcIjsgYnByaW50X2ZtdHR5IGJ1ZiBzdWJfZm10dHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgRW5kX29mX2ZtdHR5IC0+ICgpXG5cbigqKiopXG5cbmxldCByZWMgaW50X29mX2N1c3RvbV9hcml0eSA6IHR5cGUgYSBiIGMgLlxuICAoYSwgYiwgYykgY3VzdG9tX2FyaXR5IC0+IGludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQ3VzdG9tX3plcm8gLT4gMFxuICB8IEN1c3RvbV9zdWNjIHggLT4gMSArIGludF9vZl9jdXN0b21fYXJpdHkgeFxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZvcm1hdCBpbiBhIGJ1ZmZlci4gKilcbmxldCBicHJpbnRfZm10IGJ1ZiBmbXQgPVxuICBsZXQgcmVjIGZtdGl0ZXIgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYm9vbCAtPiB1bml0ID1cbiAgZnVuIGZtdCBpZ25fZmxhZyAtPiBtYXRjaCBmbXQgd2l0aFxuICAgIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdzJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdTJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2ludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ2wnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICduJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICdMJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2Zsb2F0X2ZtdCBidWYgaWduX2ZsYWcgZmNvbnYgcGFkIHByZWM7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IENoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnYyc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdDJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQic7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBBbHBoYSByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdhJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgVGhldGEgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAndCc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpIC0+XG4gICAgICBmb3IgX2kgPSAxIHRvIGludF9vZl9jdXN0b21fYXJpdHkgYXJpdHkgZG9cbiAgICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICc/JztcbiAgICAgIGRvbmU7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBSZWFkZXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAncic7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEZsdXNoIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUhXCI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIHN0cjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcbiAgICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgICAgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgY2hyO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0OyBidWZmZXJfYWRkX2NoYXIgYnVmICd7JztcbiAgICAgIGJwcmludF9mbXR0eSBidWYgZm10dHk7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICd9JztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKCc7XG4gICAgICBicHJpbnRfZm10dHkgYnVmIGZtdHR5OyBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKSc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgd2lkdGhfb3B0OyBicHJpbnRfY2hhcl9zZXQgYnVmIGNoYXJfc2V0O1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfY291bnRlciBjb3VudGVyKTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgXCIwY1wiOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICAgIGxldCBQYXJhbV9mb3JtYXRfRUJCIGZtdCcgPSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3QgaW5cbiAgICAgIGZtdGl0ZXIgZm10JyB0cnVlO1xuXG4gICAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgKHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0KTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZm10aW5nX2dlbiB3aXRoXG4gICAgICB8IE9wZW5fdGFnIChGb3JtYXQgKF8sIHN0cikpIC0+XG4gICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIkB7XCI7IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzdHJcbiAgICAgIHwgT3Blbl9ib3ggKEZvcm1hdCAoXywgc3RyKSkgLT5cbiAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiQFtcIjsgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHN0clxuICAgICAgZW5kO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBFbmRfb2ZfZm9ybWF0IC0+ICgpXG5cbiAgaW4gZm10aXRlciBmbXQgZmFsc2VcblxuKCoqKilcblxuKCogQ29udmVydCBhIGZvcm1hdCB0byBzdHJpbmcuICopXG5sZXQgc3RyaW5nX29mX2ZtdCBmbXQgPVxuICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICBicHJpbnRfZm10IGJ1ZiBmbXQ7XG4gIGJ1ZmZlcl9jb250ZW50cyBidWZcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVHlwZSBleHRyYWN0aW9uICopXG5cbnR5cGUgKF8sIF8pIGVxID0gUmVmbCA6ICgnYSwgJ2EpIGVxXG5cbigqIEludmFyaWFudDogdGhpcyBmdW5jdGlvbiBpcyB0aGUgaWRlbnRpdHkgb24gdmFsdWVzLlxuXG4gICBJbiBwYXJ0aWN1bGFyLCBpZiAodHkxLCB0eTIpIGhhdmUgZXF1YWwgdmFsdWVzLCB0aGVuXG4gICAodHJhbnMgKHN5bW0gdHkxKSB0eTIpIHJlc3BlY3RzIHRoZSAndHJhbnMnIHByZWNvbmRpdGlvbi4gKilcbmxldCByZWMgc3ltbSA6IHR5cGUgYTEgYjEgYzEgZDEgZTEgZjEgYTIgYjIgYzIgZDIgZTIgZjIgLlxuICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4tPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMixcbiAgICBhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXR0eV9yZWxcbj0gZnVuY3Rpb25cbiAgfCBDaGFyX3R5IHJlc3QgLT4gQ2hhcl90eSAoc3ltbSByZXN0KVxuICB8IEludF90eSByZXN0IC0+IEludF90eSAoc3ltbSByZXN0KVxuICB8IEludDMyX3R5IHJlc3QgLT4gSW50MzJfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnQ2NF90eSByZXN0IC0+IEludDY0X3R5IChzeW1tIHJlc3QpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT4gTmF0aXZlaW50X3R5IChzeW1tIHJlc3QpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPiBGbG9hdF90eSAoc3ltbSByZXN0KVxuICB8IEJvb2xfdHkgcmVzdCAtPiBCb29sX3R5IChzeW1tIHJlc3QpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT4gU3RyaW5nX3R5IChzeW1tIHJlc3QpXG4gIHwgVGhldGFfdHkgcmVzdCAtPiBUaGV0YV90eSAoc3ltbSByZXN0KVxuICB8IEFscGhhX3R5IHJlc3QgLT4gQWxwaGFfdHkgKHN5bW0gcmVzdClcbiAgfCBBbnlfdHkgcmVzdCAtPiBBbnlfdHkgKHN5bW0gcmVzdClcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPiBSZWFkZXJfdHkgKHN5bW0gcmVzdClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+IElnbm9yZWRfcmVhZGVyX3R5IChzeW1tIHJlc3QpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIHN5bW0gcmVzdClcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkyLCB0eTEsIHN5bW0gcmVzdClcbiAgfCBFbmRfb2ZfZm10dHkgLT4gRW5kX29mX2ZtdHR5XG5cbmxldCByZWMgZm10dHlfcmVsX2RldCA6IHR5cGUgYTEgYiBjIGQxIGUxIGYxIGEyIGQyIGUyIGYyIC5cbiAgKGExLCBiLCBjLCBkMSwgZTEsIGYxLFxuICAgYTIsIGIsIGMsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbCAtPlxuICAgICgoZjEsIGYyKSBlcSAtPiAoYTEsIGEyKSBlcSlcbiAgKiAoKGExLCBhMikgZXEgLT4gKGYxLCBmMikgZXEpXG4gICogKChlMSwgZTIpIGVxIC0+IChkMSwgZDIpIGVxKVxuICAqICgoZDEsIGQyKSBlcSAtPiAoZTEsIGUyKSBlcSlcbj0gZnVuY3Rpb25cbiAgfCBFbmRfb2ZfZm10dHkgLT5cbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbClcbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG4gIHwgRm9ybWF0X2FyZ190eSAoX3R5LCByZXN0KSAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgbGV0IGFnLCBnYSwgZGosIGpkID0gZm10dHlfcmVsX2RldCB0eSBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gbGV0IFJlZmwgPSBhZyBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGdhIFJlZmwgaW4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gbGV0IFJlZmwgPSBkaiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGpkIFJlZmwgaW4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG5cbigqIFByZWNvbmRpdGlvbjogd2UgYXNzdW1lIHRoYXQgdGhlIHR3byBmbXR0eV9yZWwgYXJndW1lbnRzIGhhdmUgZXF1YWxcbiAgIHZhbHVlcyAoYXQgcG9zc2libHkgZGlzdGluY3QgdHlwZXMpOyB0aGlzIGludmFyaWFudCBjb21lcyBmcm9tIHRoZSB3YXlcbiAgIGZtdHR5X3JlbCB3aXRuZXNzZXMgYXJlIHByb2R1Y2VkIGJ5IHRoZSB0eXBlLWNoZWNrZXJcblxuICAgVGhlIGNvZGUgYmVsb3cgdXNlcyAoYXNzZXJ0IGZhbHNlKSB3aGVuIHRoaXMgYXNzdW1wdGlvbiBpcyBicm9rZW4uIFRoZVxuICAgY29kZSBwYXR0ZXJuIGlzIHRoZSBmb2xsb3dpbmc6XG5cbiAgICAgfCBGb28geCwgRm9vIHkgLT5cbiAgICAgICAoKiBjYXNlIHdoZXJlIGluZGVlZCBib3RoIHZhbHVlc1xuICAgICAgICAgIHN0YXJ0IHdpdGggY29uc3RydWN0b3IgRm9vICopXG4gICAgIHwgRm9vIF8sIF9cbiAgICAgfCBfLCBGb28gXyAtPlxuICAgICAgICgqIGRpZmZlcmVudCBoZWFkIGNvbnN0cnVjdG9yczogYnJva2VuIHByZWNvbmRpdGlvbiAqKVxuICAgICAgIGFzc2VydCBmYWxzZVxuKilcbmFuZCB0cmFucyA6IHR5cGVcbiAgYTEgYjEgYzEgZDEgZTEgZjFcbiAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgYTMgYjMgYzMgZDMgZTMgZjNcbi5cbiAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIsXG4gICAgYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHlfcmVsXG4tPiAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eV9yZWxcbj0gZnVuIHR5MSB0eTIgLT4gbWF0Y2ggdHkxLCB0eTIgd2l0aFxuICB8IENoYXJfdHkgcmVzdDEsIENoYXJfdHkgcmVzdDIgLT4gQ2hhcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgU3RyaW5nX3R5IHJlc3QxLCBTdHJpbmdfdHkgcmVzdDIgLT4gU3RyaW5nX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBCb29sX3R5IHJlc3QxLCBCb29sX3R5IHJlc3QyIC0+IEJvb2xfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludF90eSByZXN0MSwgSW50X3R5IHJlc3QyIC0+IEludF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50MzJfdHkgcmVzdDEsIEludDMyX3R5IHJlc3QyIC0+IEludDMyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnQ2NF90eSByZXN0MSwgSW50NjRfdHkgcmVzdDIgLT4gSW50NjRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IE5hdGl2ZWludF90eSByZXN0MSwgTmF0aXZlaW50X3R5IHJlc3QyIC0+IE5hdGl2ZWludF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRmxvYXRfdHkgcmVzdDEsIEZsb2F0X3R5IHJlc3QyIC0+IEZsb2F0X3R5ICh0cmFucyByZXN0MSByZXN0MilcblxuICB8IEFscGhhX3R5IHJlc3QxLCBBbHBoYV90eSByZXN0MiAtPiBBbHBoYV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQWxwaGFfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBBbHBoYV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgVGhldGFfdHkgcmVzdDEsIFRoZXRhX3R5IHJlc3QyIC0+IFRoZXRhX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBUaGV0YV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIFRoZXRhX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBBbnlfdHkgcmVzdDEsIEFueV90eSByZXN0MiAtPiBBbnlfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEFueV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEFueV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgUmVhZGVyX3R5IHJlc3QxLCBSZWFkZXJfdHkgcmVzdDIgLT4gUmVhZGVyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBSZWFkZXJfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBSZWFkZXJfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QxLCBJZ25vcmVkX3JlYWRlcl90eSByZXN0MiAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIElnbm9yZWRfcmVhZGVyX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBGb3JtYXRfYXJnX3R5ICh0eTEsIHJlc3QxKSwgRm9ybWF0X2FyZ190eSAodHkyLCByZXN0MikgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0cmFucyB0eTEgdHkyLCB0cmFucyByZXN0MSByZXN0MilcbiAgfCBGb3JtYXRfYXJnX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRm9ybWF0X2FyZ190eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTExLCB0eTEyLCByZXN0MSksXG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTIxLCB0eTIyLCByZXN0MikgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEyKSB0eTIxIGluXG4gICAgbGV0IF8sIGYyLCBfLCBmNCA9IGZtdHR5X3JlbF9kZXQgdHkgaW5cbiAgICBsZXQgUmVmbCA9IGYyIFJlZmwgaW5cbiAgICBsZXQgUmVmbCA9IGY0IFJlZmwgaW5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MTEsIHR5MjIsIHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZvcm1hdF9zdWJzdF90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEZvcm1hdF9zdWJzdF90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRW5kX29mX2ZtdHR5LCBFbmRfb2ZfZm10dHkgLT4gRW5kX29mX2ZtdHR5XG4gIHwgRW5kX29mX2ZtdHR5LCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEVuZF9vZl9mbXR0eSAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHJlYyBmbXR0eV9vZl9mb3JtYXR0aW5nX2dlbiA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm9ybWF0dGluZ19nZW4gLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGZvcm1hdHRpbmdfZ2VuIC0+IG1hdGNoIGZvcm1hdHRpbmdfZ2VuIHdpdGhcbiAgfCBPcGVuX3RhZyAoRm9ybWF0IChmbXQsIF8pKSAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgT3Blbl9ib3ggKEZvcm1hdCAoZm10LCBfKSkgLT4gZm10dHlfb2ZfZm10IGZtdFxuXG4oKiBFeHRyYWN0IHRoZSB0eXBlIHJlcHJlc2VudGF0aW9uIChhbiBmbXR0eSkgb2YgYSBmb3JtYXQuICopXG5hbmQgZm10dHlfb2ZfZm10IDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBmbXR0eSAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKFN0cmluZ190eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKFN0cmluZ190eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuXG4gIHwgSW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBJbnQzMiAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnQzMl90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBOYXRpdmVpbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoTmF0aXZlaW50X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEludDY0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludDY0X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEZsb2F0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEZsb2F0X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuXG4gIHwgQ2hhciByZXN0ICAgICAgICAgICAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgICAgICAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQm9vbCAocGFkLCByZXN0KSAgICAgICAgICAgLT5cbiAgICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChCb29sX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG4gIHwgQWxwaGEgcmVzdCAgICAgICAgICAgICAgICAgLT4gQWxwaGFfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFRoZXRhIHJlc3QgICAgICAgICAgICAgICAgIC0+IFRoZXRhX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAgICAtPiBmbXR0eV9vZl9jdXN0b20gYXJpdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFJlYWRlciByZXN0ICAgICAgICAgICAgICAgIC0+IFJlYWRlcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBGb3JtYXRfYXJnIChfLCB0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChfLCB0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5LCB0eSwgZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBGbHVzaCByZXN0ICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IFN0cmluZ19saXRlcmFsIChfLCByZXN0KSAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAgICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+IFN0cmluZ190eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT4gSW50X3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBTY2FuX25leHRfY2hhciByZXN0ICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpICAtPiBmbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdFxuICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpICAtPlxuICAgIGNvbmNhdF9mbXR0eSAoZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4gZm10aW5nX2dlbikgKGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRW5kX29mX2Zvcm1hdCAgICAgICAgICAgICAgLT4gRW5kX29mX2ZtdHR5XG5cbmFuZCBmbXR0eV9vZl9jdXN0b20gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gIChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICh5LCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gYXJpdHkgZm10dHkgLT4gbWF0Y2ggYXJpdHkgd2l0aFxuICB8IEN1c3RvbV96ZXJvIC0+IGZtdHR5XG4gIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT4gQW55X3R5IChmbXR0eV9vZl9jdXN0b20gYXJpdHkgZm10dHkpXG5cbigqIEV4dHJhY3QgdGhlIGZtdHR5IG9mIGFuIGlnbm9yZWQgcGFyYW1ldGVyIGZvbGxvd2VkIGJ5IHRoZSByZXN0IG9mXG4gICB0aGUgZm9ybWF0LiAqKVxuYW5kIGZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfbmF0aXZlaW50IChfLCBfKSAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gY29uY2F0X2ZtdHR5IGZtdHR5IChmbXR0eV9vZl9mbXQgZm10KVxuICB8IElnbm9yZWRfcmVhZGVyICAgICAgICAgICAgICAgICAgLT4gSWdub3JlZF9yZWFkZXJfdHkgKGZtdHR5X29mX2ZtdCBmbXQpXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG5cbigqIEFkZCBhbiBJbnRfdHkgbm9kZSBpZiBwYWRkaW5nIGlzIHRha2VuIGFzIGFuIGV4dHJhIGFyZ3VtZW50IChleDogXCIlKnNcIikuICopXG5hbmQgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSA6IHR5cGUgeCBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIGEpIHBhZGRpbmcgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+ICh4LCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG4gIGZ1biBwYWQgZm10dHkgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgICAgLT4gZm10dHlcbiAgICB8IExpdF9wYWRkaW5nIF8gLT4gZm10dHlcbiAgICB8IEFyZ19wYWRkaW5nIF8gLT4gSW50X3R5IGZtdHR5XG5cbigqIEFkZCBhbiBJbnRfdHkgbm9kZSBpZiBwcmVjaXNpb24gaXMgdGFrZW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUuKmZcIikuKilcbmFuZCBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgOiB0eXBlIHggYSBiIGMgZCBlIGYgLlxuICAgICh4LCBhKSBwcmVjaXNpb24gLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+ICh4LCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG4gIGZ1biBwcmVjIGZtdHR5IC0+IG1hdGNoIHByZWMgd2l0aFxuICAgIHwgTm9fcHJlY2lzaW9uICAgIC0+IGZtdHR5XG4gICAgfCBMaXRfcHJlY2lzaW9uIF8gLT4gZm10dHlcbiAgICB8IEFyZ19wcmVjaXNpb24gICAtPiBJbnRfdHkgZm10dHlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgdHlwaW5nICopXG5cbigqIEV4Y2VwdGlvbiByYWlzZWQgd2hlbiBhIGZvcm1hdCBkb2VzIG5vdCBtYXRjaCBhIGdpdmVuIGZvcm1hdCB0eXBlLiAqKVxuZXhjZXB0aW9uIFR5cGVfbWlzbWF0Y2hcblxuKCogVHlwZSBhIHBhZGRpbmcuICopXG4oKiBUYWtlIGFuIEludF90eSBmcm9tIHRoZSBmbXR0eSBpZiB0aGUgaW50ZWdlciBzaG91bGQgYmUga2VwdCBhcyBhcmd1bWVudC4gKilcbigqIFJhaXNlIFR5cGVfbWlzbWF0Y2ggaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHR5cGVfcGFkZGluZyA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IC5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAgIChhLCBiLCBjLCBkLCBlLCBmKSBwYWRkaW5nX2ZtdHR5X2ViYiA9XG5mdW4gcGFkIGZtdHR5IC0+IG1hdGNoIHBhZCwgZm10dHkgd2l0aFxuICB8IE5vX3BhZGRpbmcsIF8gLT4gUGFkZGluZ19mbXR0eV9FQkIgKE5vX3BhZGRpbmcsIGZtdHR5KVxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIF8gLT4gUGFkZGluZ19mbXR0eV9FQkIgKExpdF9wYWRkaW5nIChwYWR0eSx3KSxmbXR0eSlcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgSW50X3R5IHJlc3QgLT4gUGFkZGluZ19mbXR0eV9FQkIgKEFyZ19wYWRkaW5nIHBhZHR5LHJlc3QpXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIENvbnZlcnQgYSAodXBhZGRpbmcsIHVwcmVjaXNpb24pIHRvIGEgKHBhZGRpbmcsIHByZWNpc2lvbikuICopXG4oKiBUYWtlIG9uZSBvciB0d28gSW50X3R5IGZyb20gdGhlIGZtdHR5IGlmIG5lZWRlZC4gKilcbigqIFJhaXNlIFR5cGVfbWlzbWF0Y2ggaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHR5cGVfcGFkcHJlYyA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IHogLlxuICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeikgcHJlY2lzaW9uIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBwYWRwcmVjX2ZtdHR5X2ViYiA9XG5mdW4gcGFkIHByZWMgZm10dHkgLT4gbWF0Y2ggcHJlYywgdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gIHwgTm9fcHJlY2lzaW9uLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIE5vX3ByZWNpc2lvbiwgcmVzdClcbiAgfCBMaXRfcHJlY2lzaW9uIHAsIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgTGl0X3ByZWNpc2lvbiBwLCByZXN0KVxuICB8IEFyZ19wcmVjaXNpb24sIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIEludF90eSByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIEFyZ19wcmVjaXNpb24sIHJlc3QpXG4gIHwgXywgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogVHlwZSBhIGZvcm1hdCBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG4oKiBJZiB0eXBpbmcgc3VjY2VlZCwgZ2VuZXJhdGUgYSBjb3B5IG9mIHRoZSBmb3JtYXQgd2l0aCB0aGUgc2FtZVxuICAgIHR5cGUgcGFyYW1ldGVycyBhcyB0aGUgZm10dHkuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCByZWMgdHlwZV9mb3JtYXQgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjIgIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdFxuPSBmdW4gZm10IGZtdHR5IC0+IG1hdGNoIHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkgd2l0aFxuICB8IEZtdF9mbXR0eV9FQkIgKGZtdCcsIEVuZF9vZl9mbXR0eSkgLT4gZm10J1xuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG5hbmQgdHlwZV9mb3JtYXRfZ2VuIDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRfZm10dHlfZWJiXG49IGZ1biBmbXQgZm10dHkgLT4gbWF0Y2ggZm10LCBmbXR0eSB3aXRoXG4gIHwgQ2hhciBmbXRfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKENoYXIgZm10JywgZm10dHknKVxuICB8IENhbWxfY2hhciBmbXRfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKENhbWxfY2hhciBmbXQnLCBmbXR0eScpXG4gIHwgU3RyaW5nIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBTdHJpbmdfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKFN0cmluZyAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBTdHJpbmdfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKENhbWxfc3RyaW5nIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50MzJfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludDMyIChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgTmF0aXZlaW50X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludDY0X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgRmxvYXRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEJvb2wgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIEJvb2xfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEJvb2wgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBGbHVzaCBmbXRfcmVzdCwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGbHVzaCBmbXQnLCBmbXR0eScpXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU3RyaW5nX2xpdGVyYWwgKHN0ciwgZm10JyksIGZtdHR5JylcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKENoYXJfbGl0ZXJhbCAoY2hyLCBmbXQnKSwgZm10dHknKVxuXG4gIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5LCBmbXRfcmVzdCksXG4gICAgRm9ybWF0X2FyZ190eSAoc3ViX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgc3ViX2ZtdHR5IDw+IEZtdHR5X0VCQiBzdWJfZm10dHknIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5JywgZm10JyksIGZtdHR5JylcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAoc3ViX2ZtdHR5MSwgX3N1Yl9mbXR0eTIsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWJfZm10dHkxKSB0aGVuXG4gICAgICByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID1cbiAgICAgIHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCAoZXJhc2VfcmVsIGZtdHR5X3Jlc3QpXG4gICAgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eTEsIGZtdCcpLCBmbXR0eScpXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBBbHBoYSBmbXRfcmVzdCwgQWxwaGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChBbHBoYSBmbXQnLCBmbXR0eScpXG4gIHwgVGhldGEgZm10X3Jlc3QsIFRoZXRhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoVGhldGEgZm10JywgZm10dHknKVxuXG4gICgqIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXQnKSwgZm10dHknKVxuICB8IEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nX2dlbiwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgdHlwZV9mb3JtYXR0aW5nX2dlbiBmb3JtYXR0aW5nX2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0XG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IFJlYWRlciBmbXRfcmVzdCwgUmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoUmVhZGVyIGZtdCcsIGZtdHR5JylcbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXRfcmVzdCksIFN0cmluZ190eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdCcpLCBmbXR0eScpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpLCBJbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXQnKSwgZm10dHknKVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICB0eXBlX2lnbm9yZWRfcGFyYW0gaWduIHJlc3QgZm10dHlfcmVzdFxuXG4gIHwgRW5kX29mX2Zvcm1hdCwgZm10dHlfcmVzdCAtPiBGbXRfZm10dHlfRUJCIChFbmRfb2ZfZm9ybWF0LCBmbXR0eV9yZXN0KVxuXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbmFuZCB0eXBlX2Zvcm1hdHRpbmdfZ2VuIDogdHlwZSBhMSBhMyBiMSBiMyBjMSBjMyBkMSBkMyBlMSBlMiBlMyBmMSBmMiBmMyAuXG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZvcm1hdHRpbmdfZ2VuIC0+XG4gICAgKGYxLCBiMSwgYzEsIGUxLCBlMiwgZjIpIGZtdCAtPlxuICAgIChhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eSAtPlxuICAgIChhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXRfZm10dHlfZWJiID1cbmZ1biBmb3JtYXR0aW5nX2dlbiBmbXQwIGZtdHR5MCAtPiBtYXRjaCBmb3JtYXR0aW5nX2dlbiB3aXRoXG4gIHwgT3Blbl90YWcgKEZvcm1hdCAoZm10MSwgc3RyKSkgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MiwgZm10dHkyKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQxIGZtdHR5MCBpblxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQzLCBmbXR0eTMpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDAgZm10dHkyIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdDIsIHN0cikpLCBmbXQzKSwgZm10dHkzKVxuICB8IE9wZW5fYm94IChGb3JtYXQgKGZtdDEsIHN0cikpIC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDIsIGZtdHR5MikgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MSBmbXR0eTAgaW5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MywgZm10dHkzKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQwIGZtdHR5MiBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQyLCBzdHIpKSwgZm10MyksIGZtdHR5MylcblxuKCogVHlwZSBhbiBJZ25vcmVkX3BhcmFtIG5vZGUgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuYW5kIHR5cGVfaWdub3JlZF9wYXJhbSA6IHR5cGUgcCBxIHggeSB6IHQgdSB2IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgeSwgeiwgdCwgcSwgcCkgaWdub3JlZCAtPlxuICAgIChwLCB5LCB6LCBxLCB1LCB2KSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10X2ZtdHR5X2ViYiA9XG5mdW4gaWduIGZtdCBmbXR0eSAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfaW50IF8gICAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfaW50MzIgXyAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfbmF0aXZlaW50IF8gICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfaW50NjQgXyAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZmxvYXQgXyAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5KSAtPlxuICAgIHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgKElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5KSkgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eSkgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5JywgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSkgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5IGZtdCBmbXR0eSBpblxuICAgIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHknKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQnKSxcbiAgICAgICAgICAgICAgICAgICBmbXR0eScpXG4gIHwgSWdub3JlZF9yZWFkZXIgLT4gKFxuICAgIG1hdGNoIGZtdHR5IHdpdGhcbiAgICB8IElnbm9yZWRfcmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3JlYWRlciwgZm10JyksIGZtdHR5JylcbiAgICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG5cbmFuZCB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIDogdHlwZSBhMSBhMiBiMSBiMiBjMSBjMiBkMSBkMiBlMSBlMiBmMSBmMiAuXG4gICAgKGEyLCBiMiwgYzIsIGQyLCBkMiwgYTIpIGlnbm9yZWQgLT5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10IC0+XG4gICAgKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5IC0+XG4gICAgKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdF9mbXR0eV9lYmJcbj0gZnVuIGlnbiBmbXQgZm10dHkgLT5cbiAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5IGluXG4gIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbiwgZm10JyksIGZtdHR5JylcblxuKCogVHlwaW5nIG9mIHRoZSBjb21wbGV4IGNhc2U6IFwiJV8oLi4uJSlcIi4gKilcbmFuZCB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiA6IHR5cGUgdyB4IHkgeiBwIHMgdCB1IGEgYiBjIGQgZSBmIC5cbiAgICAodywgeCwgeSwgeiwgcywgcCkgZm10dHkgLT5cbiAgICAocCwgeCwgeSwgcywgdCwgdSkgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eV9mbXRfZWJiID1cbmZ1biBzdWJfZm10dHkgZm10IGZtdHR5IC0+IG1hdGNoIHN1Yl9mbXR0eSwgZm10dHkgd2l0aFxuICB8IENoYXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQ2hhcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgU3RyaW5nX3R5IHN1Yl9mbXR0eV9yZXN0LCBTdHJpbmdfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoU3RyaW5nX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludDMyX3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnQzMl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnQzMl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgTmF0aXZlaW50X3R5IHN1Yl9mbXR0eV9yZXN0LCBOYXRpdmVpbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoTmF0aXZlaW50X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnQ2NF90eSBzdWJfZm10dHlfcmVzdCwgSW50NjRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50NjRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEZsb2F0X3R5IHN1Yl9mbXR0eV9yZXN0LCBGbG9hdF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGbG9hdF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgQm9vbF90eSBzdWJfZm10dHlfcmVzdCwgQm9vbF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChCb29sX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBBbHBoYV90eSBzdWJfZm10dHlfcmVzdCwgQWxwaGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQWxwaGFfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFRoZXRhX3R5IHN1Yl9mbXR0eV9yZXN0LCBUaGV0YV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChUaGV0YV90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgUmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0LCBSZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoUmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBzdWJfZm10dHlfcmVzdCwgSWdub3JlZF9yZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSWdub3JlZF9yZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuXG4gIHwgRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eSwgc3ViX2ZtdHR5X3Jlc3QpLFxuICAgIEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiBzdWIyX2ZtdHR5IDw+IEZtdHR5X0VCQiBzdWIyX2ZtdHR5JyB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5Jywgc3ViX2ZtdHR5X3Jlc3QnKSwgZm10JylcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHksICBzdWIyX2ZtdHR5LCAgc3ViX2ZtdHR5X3Jlc3QpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eScsIHN1YjJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgICgqIFRPRE8gZGVmaW5lIEZtdHR5X3JlbF9FQkIgdG8gcmVtb3ZlIHRob3NlIGVyYXNlX3JlbCAqKVxuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjFfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjFfZm10dHknKVxuICAgIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIyX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIyX2ZtdHR5JylcbiAgICB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IHN1Yl9mbXR0eScgPSB0cmFucyAoc3ltbSBzdWIxX2ZtdHR5Jykgc3ViMl9mbXR0eScgaW5cbiAgICBsZXQgXywgZjIsIF8sIGY0ID0gZm10dHlfcmVsX2RldCBzdWJfZm10dHknIGluXG4gICAgbGV0IFJlZmwgPSBmMiBSZWZsIGluXG4gICAgbGV0IFJlZmwgPSBmNCBSZWZsIGluXG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gKGVyYXNlX3JlbCBzdWJfZm10dHlfcmVzdCkgZm10IGZtdHR5X3Jlc3RcbiAgICBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eScsIHN1YjJfZm10dHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltbSBzdWJfZm10dHlfcmVzdCcpLFxuICAgICAgICAgICAgICAgICAgIGZtdCcpXG4gIHwgRW5kX29mX2ZtdHR5LCBmbXR0eSAtPlxuICAgIEZtdHR5X2ZtdF9FQkIgKEVuZF9vZl9mbXR0eSwgdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSlcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBgcmVjYXN0YCBpcyBhIGJpdCBkaXNhcHBvaW50aW5nLiBUaGVcbiAgIGludmFyaWFudCBwcm92aWRlZCBieSB0aGUgdHlwZSBhcmUgdmVyeSBzdHJvbmc6IHRoZSBpbnB1dCBmb3JtYXQnc1xuICAgdHlwZSBpcyBpbiByZWxhdGlvbiB0byB0aGUgb3V0cHV0IHR5cGUncyBhcyB3aXRuZXNzZWQgYnkgdGhlXG4gICBmbXR0eV9yZWwgYXJndW1lbnQuIE9uZSB3b3VsZCBhdCBmaXJzdCBleHBlY3QgdGhpcyBmdW5jdGlvbiB0byBiZVxuICAgdG90YWwsIGFuZCBpbXBsZW1lbnRhYmxlIGJ5IGV4aGF1c3RpdmUgcGF0dGVybiBtYXRjaGluZy4gSW5zdGVhZCxcbiAgIHdlIHJldXNlIHRoZSBoaWdobHkgcGFydGlhbCBhbmQgbXVjaCBsZXNzIHdlbGwtZGVmaW5lZCBmdW5jdGlvblxuICAgYHR5cGVfZm9ybWF0YCB0aGF0IGhhcyBsb3N0IGFsbCBrbm93bGVkZ2Ugb2YgdGhlIGNvcnJlc3BvbmRlbmNlXG4gICBiZXR3ZWVuIHRoZSBhcmd1bWVudCdzIHR5cGVzLlxuXG4gICBCZXNpZGVzIHRoZSBmYWN0IHRoYXQgdGhpcyBmdW5jdGlvbiByZXVzZXMgYSBsb3Qgb2YgdGhlXG4gICBgdHlwZV9mb3JtYXRgIGxvZ2ljIChlZy46IHNlZWluZyBJbnRfdHkgaW4gdGhlIGZtdHR5IHBhcmFtZXRlciBkb2VzXG4gICBub3QgbGV0IHlvdSBtYXRjaCBvbiBJbnQgb25seSwgYXMgeW91IG1heSBpbiBmYWN0IGhhdmUgRmxvYXRcbiAgIChBcmdfcGFkZGluZywgLi4uKSAoXCIlLipkXCIpIGJlZ2lubmluZyB3aXRoIGFuIEludF90eSksIGl0IGlzIGFsc29cbiAgIGEgcGFydGlhbCBmdW5jdGlvbiwgYmVjYXVzZSB0aGUgdHlwaW5nIGluZm9ybWF0aW9uIGluIGEgZm9ybWF0IGlzXG4gICBub3QgcXVpdGUgZW5vdWdoIHRvIHJlY29uc3RydWN0IGl0IHVuYW1iaWd1b3VzbHkuIEZvciBleGFtcGxlLCB0aGVcbiAgIGZvcm1hdCB0eXBlcyBvZiBcIiVkJV9yXCIgYW5kIFwiJV9yJWRcIiBoYXZlIHRoZSBzYW1lIGZvcm1hdDZcbiAgIHBhcmFtZXRlcnMsIGJ1dCB0aGV5IGFyZSBub3QgYXQgYWxsIGV4Y2hhbmdlYWJsZSwgYW5kIHB1dHRpbmcgb25lXG4gICBpbiBwbGFjZSBvZiB0aGUgb3RoZXIgbXVzdCByZXN1bHQgaW4gYSBkeW5hbWljIGZhaWx1cmUuXG5cbiAgIEdpdmVuIHRoYXQ6XG4gICAtIHdlJ2QgaGF2ZSB0byBkdXBsaWNhdGUgYSBsb3Qgb2Ygbm9uLXRyaXZpYWwgdHlwaW5nIGxvZ2ljIGZyb20gdHlwZV9mb3JtYXRcbiAgIC0gdGhpcyB3b3VsZG4ndCBldmVuIGVsaW1pbmF0ZSAoYWxsKSB0aGUgZHluYW1pYyBmYWlsdXJlc1xuICAgd2UgZGVjaWRlZCB0byBqdXN0IHJldXNlIHR5cGVfZm9ybWF0IGRpcmVjdGx5IGZvciBub3cuXG4qKVxubGV0IHJlY2FzdCA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMlxuICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdFxuPSBmdW4gZm10IGZtdHR5IC0+XG4gIHR5cGVfZm9ybWF0IGZtdCAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUHJpbnRpbmcgdG9vbHMgKilcblxuKCogQWRkIHBhZGRpbmcgc3BhY2VzIGFyb3VuZCBhIHN0cmluZy4gKilcbmxldCBmaXhfcGFkZGluZyBwYWR0eSB3aWR0aCBzdHIgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHdpZHRoLCBwYWR0eSA9XG4gICAgYWJzIHdpZHRoLFxuICAgICgqIHdoaWxlIGxpdGVyYWwgcGFkZGluZyB3aWR0aHMgYXJlIGFsd2F5cyBub24tbmVnYXRpdmUsXG4gICAgICAgZHluYW1pY2FsbHktc2V0IHdpZHRocyAoQXJnX3BhZGRpbmcsIGVnLiAlKmQpIG1heSBiZSBuZWdhdGl2ZTtcbiAgICAgICB3ZSBpbnRlcnByZXQgdGhvc2UgYXMgc3BlY2lmeWluZyBhIHBhZGRpbmctdG8tdGhlLWxlZnQ7IHRoaXNcbiAgICAgICBtZWFucyB0aGF0ICcwJyBtYXkgZ2V0IGRyb3BwZWQgZXZlbiBpZiBpdCB3YXMgZXhwbGljaXRseSBzZXQsXG4gICAgICAgYnV0OlxuICAgICAgIC0gdGhpcyBpcyB3aGF0IHRoZSBsZWdhY3kgaW1wbGVtZW50YXRpb24gZG9lcywgYW5kXG4gICAgICAgICB3ZSBwcmVzZXJ2ZSBjb21wYXRpYmlsaXR5IGlmIHBvc3NpYmxlXG4gICAgICAgLSB3ZSBjb3VsZCBvbmx5IHNpZ25hbCB0aGlzIGlzc3VlIGJ5IGZhaWxpbmcgYXQgcnVudGltZSxcbiAgICAgICAgIHdoaWNoIGlzIG5vdCB2ZXJ5IG5pY2UuLi4gKilcbiAgICBpZiB3aWR0aCA8IDAgdGhlbiBMZWZ0IGVsc2UgcGFkdHkgaW5cbiAgaWYgd2lkdGggPD0gbGVuIHRoZW4gc3RyIGVsc2VcbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSB3aWR0aCAoaWYgcGFkdHkgPSBaZXJvcyB0aGVuICcwJyBlbHNlICcgJykgaW5cbiAgICBiZWdpbiBtYXRjaCBwYWR0eSB3aXRoXG4gICAgfCBMZWZ0ICAtPiBTdHJpbmcuYmxpdCBzdHIgMCByZXMgMCBsZW5cbiAgICB8IFJpZ2h0IC0+IFN0cmluZy5ibGl0IHN0ciAwIHJlcyAod2lkdGggLSBsZW4pIGxlblxuICAgIHwgWmVyb3Mgd2hlbiBsZW4gPiAwICYmIChzdHIuWzBdID0gJysnIHx8IHN0ci5bMF0gPSAnLScgfHwgc3RyLlswXSA9ICcgJykgLT5cbiAgICAgIEJ5dGVzLnNldCByZXMgMCBzdHIuWzBdO1xuICAgICAgU3RyaW5nLmJsaXQgc3RyIDEgcmVzICh3aWR0aCAtIGxlbiArIDEpIChsZW4gLSAxKVxuICAgIHwgWmVyb3Mgd2hlbiBsZW4gPiAxICYmIHN0ci5bMF0gPSAnMCcgJiYgKHN0ci5bMV0gPSAneCcgfHwgc3RyLlsxXSA9ICdYJykgLT5cbiAgICAgIEJ5dGVzLnNldCByZXMgMSBzdHIuWzFdO1xuICAgICAgU3RyaW5nLmJsaXQgc3RyIDIgcmVzICh3aWR0aCAtIGxlbiArIDIpIChsZW4gLSAyKVxuICAgIHwgWmVyb3MgLT5cbiAgICAgIFN0cmluZy5ibGl0IHN0ciAwIHJlcyAod2lkdGggLSBsZW4pIGxlblxuICAgIGVuZDtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBBZGQgJzAnIHBhZGRpbmcgdG8gaW50LCBpbnQzMiwgbmF0aXZlaW50IG9yIGludDY0IHN0cmluZyByZXByZXNlbnRhdGlvbi4gKilcbmxldCBmaXhfaW50X3ByZWNpc2lvbiBwcmVjIHN0ciA9XG4gIGxldCBwcmVjID0gYWJzIHByZWMgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIG1hdGNoIHN0ci5bMF0gd2l0aFxuICB8ICgnKycgfCAnLScgfCAnICcpIGFzIGMgd2hlbiBwcmVjICsgMSA+IGxlbiAtPlxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIChwcmVjICsgMSkgJzAnIGluXG4gICAgQnl0ZXMuc2V0IHJlcyAwIGM7XG4gICAgU3RyaW5nLmJsaXQgc3RyIDEgcmVzIChwcmVjIC0gbGVuICsgMikgKGxlbiAtIDEpO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgJzAnIHdoZW4gcHJlYyArIDIgPiBsZW4gJiYgbGVuID4gMSAmJiAoc3RyLlsxXSA9ICd4JyB8fCBzdHIuWzFdID0gJ1gnKSAtPlxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIChwcmVjICsgMikgJzAnIGluXG4gICAgQnl0ZXMuc2V0IHJlcyAxIHN0ci5bMV07XG4gICAgU3RyaW5nLmJsaXQgc3RyIDIgcmVzIChwcmVjIC0gbGVuICsgNCkgKGxlbiAtIDIpO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIHdoZW4gcHJlYyA+IGxlbiAtPlxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIHByZWMgJzAnIGluXG4gICAgU3RyaW5nLmJsaXQgc3RyIDAgcmVzIChwcmVjIC0gbGVuKSBsZW47XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCBfIC0+XG4gICAgc3RyXG5cbigqIEVzY2FwZSBhIHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIE9DYW1sIGxleGluZyBjb252ZW50aW9uLiAqKVxubGV0IHN0cmluZ190b19jYW1sX3N0cmluZyBzdHIgPVxuICBsZXQgc3RyID0gU3RyaW5nLmVzY2FwZWQgc3RyIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKGwgKyAyKSAnXFxcIicgaW5cbiAgU3RyaW5nLnVuc2FmZV9ibGl0IHN0ciAwIHJlcyAxIGw7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIEdlbmVyYXRlIHRoZSBmb3JtYXRfaW50L2ludDMyL25hdGl2ZWludC9pbnQ2NCBmaXJzdCBhcmd1bWVudFxuICAgZnJvbSBhbiBpbnRfY29udi4gKilcbmxldCBmb3JtYXRfb2ZfaWNvbnYgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJWRcIiB8IEludF9wZCAtPiBcIiUrZFwiIHwgSW50X3NkIC0+IFwiJSBkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVpXCIgfCBJbnRfcGkgLT4gXCIlK2lcIiB8IEludF9zaSAtPiBcIiUgaVwiXG4gIHwgSW50X3ggLT4gXCIleFwiIHwgSW50X0N4IC0+IFwiJSN4XCJcbiAgfCBJbnRfWCAtPiBcIiVYXCIgfCBJbnRfQ1ggLT4gXCIlI1hcIlxuICB8IEludF9vIC0+IFwiJW9cIiB8IEludF9DbyAtPiBcIiUjb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIldVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZMID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVMZFwiIHwgSW50X3BkIC0+IFwiJStMZFwiIHwgSW50X3NkIC0+IFwiJSBMZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlTGlcIiB8IEludF9waSAtPiBcIiUrTGlcIiB8IEludF9zaSAtPiBcIiUgTGlcIlxuICB8IEludF94IC0+IFwiJUx4XCIgfCBJbnRfQ3ggLT4gXCIlI0x4XCJcbiAgfCBJbnRfWCAtPiBcIiVMWFwiIHwgSW50X0NYIC0+IFwiJSNMWFwiXG4gIHwgSW50X28gLT4gXCIlTG9cIiB8IEludF9DbyAtPiBcIiUjTG9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJUx1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udmwgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJWxkXCIgfCBJbnRfcGQgLT4gXCIlK2xkXCIgfCBJbnRfc2QgLT4gXCIlIGxkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVsaVwiIHwgSW50X3BpIC0+IFwiJStsaVwiIHwgSW50X3NpIC0+IFwiJSBsaVwiXG4gIHwgSW50X3ggLT4gXCIlbHhcIiB8IEludF9DeCAtPiBcIiUjbHhcIlxuICB8IEludF9YIC0+IFwiJWxYXCIgfCBJbnRfQ1ggLT4gXCIlI2xYXCJcbiAgfCBJbnRfbyAtPiBcIiVsb1wiIHwgSW50X0NvIC0+IFwiJSNsb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlbHVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252biA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlbmRcIiB8IEludF9wZCAtPiBcIiUrbmRcIiB8IEludF9zZCAtPiBcIiUgbmRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJW5pXCIgfCBJbnRfcGkgLT4gXCIlK25pXCIgfCBJbnRfc2kgLT4gXCIlIG5pXCJcbiAgfCBJbnRfeCAtPiBcIiVueFwiIHwgSW50X0N4IC0+IFwiJSNueFwiXG4gIHwgSW50X1ggLT4gXCIlblhcIiB8IEludF9DWCAtPiBcIiUjblhcIlxuICB8IEludF9vIC0+IFwiJW5vXCIgfCBJbnRfQ28gLT4gXCIlI25vXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVudVwiXG5cbigqIEdlbmVyYXRlIHRoZSBmb3JtYXRfZmxvYXQgZmlyc3QgYXJndW1lbnQgZnJvbSBhIGZsb2F0X2NvbnYuICopXG5sZXQgZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMgPVxuICAgIGxldCBwcmVjID0gYWJzIHByZWMgaW5cbiAgICBsZXQgc3ltYiA9IGNoYXJfb2ZfZmNvbnYgfmNGOidnJyBmY29udiBpblxuICAgIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252O1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy4nO1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBwcmVjKTtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmIHN5bWI7XG4gICAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG5sZXQgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgcyA9XG4gIG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgLT5cbiAgICBsZXQgZGlnaXRzID1cbiAgICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgIHwgJzAnLi4nOScgLT4gaW5jciBuXG4gICAgICAgIHwgXyAtPiAoKVxuICAgICAgZG9uZTtcbiAgICAgICFuXG4gICAgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKyAoZGlnaXRzIC0gMSkgLyAzKSBpblxuICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgIGxldCBwdXQgYyA9IEJ5dGVzLnNldCBidWYgIXBvcyBjOyBpbmNyIHBvcyBpblxuICAgIGxldCBsZWZ0ID0gcmVmICgoZGlnaXRzIC0gMSkgbW9kIDMgKyAxKSBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAnMCcuLic5JyBhcyBjIC0+XG4gICAgICAgICAgaWYgIWxlZnQgPSAwIHRoZW4gKHB1dCAnXyc7IGxlZnQgOj0gMyk7IGRlY3IgbGVmdDsgcHV0IGNcbiAgICAgIHwgYyAtPiBwdXQgY1xuICAgIGRvbmU7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWZcbiAgfCBfIC0+IHNcblxuKCogQ29udmVydCBhbiBpbnRlZ2VyIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byBhIGNvbnZlcnNpb24uICopXG5sZXQgY29udmVydF9pbnQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50IChmb3JtYXRfb2ZfaWNvbnYgaWNvbnYpIG4pXG5sZXQgY29udmVydF9pbnQzMiBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQzMiAoZm9ybWF0X29mX2ljb252bCBpY29udikgbilcbmxldCBjb252ZXJ0X25hdGl2ZWludCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9uYXRpdmVpbnQgKGZvcm1hdF9vZl9pY29udm4gaWNvbnYpIG4pXG5sZXQgY29udmVydF9pbnQ2NCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQ2NCAoZm9ybWF0X29mX2ljb252TCBpY29udikgbilcblxuKCogQ29udmVydCBhIGZsb2F0IHRvIHN0cmluZy4gKilcbigqIEZpeCBzcGVjaWFsIGNhc2Ugb2YgXCJPQ2FtbCBmbG9hdCBmb3JtYXRcIi4gKilcbmxldCBjb252ZXJ0X2Zsb2F0IGZjb252IHByZWMgeCA9XG4gIGxldCBoZXggKCkgPVxuICAgIGxldCBzaWduID1cbiAgICAgIG1hdGNoIGZzdCBmY29udiB3aXRoXG4gICAgICB8IEZsb2F0X2ZsYWdfcCAtPiAnKydcbiAgICAgIHwgRmxvYXRfZmxhZ19zIC0+ICcgJ1xuICAgICAgfCBfIC0+ICctJyBpblxuICAgIGhleHN0cmluZ19vZl9mbG9hdCB4IHByZWMgc2lnbiBpblxuICBsZXQgYWRkX2RvdF9pZl9uZWVkZWQgc3RyID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcmVjIGlzX3ZhbGlkIGkgPVxuICAgICAgaWYgaSA9IGxlbiB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICAgIHwgJy4nIHwgJ2UnIHwgJ0UnIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGlzX3ZhbGlkIChpICsgMSkgaW5cbiAgICBpZiBpc192YWxpZCAwIHRoZW4gc3RyIGVsc2Ugc3RyIF4gXCIuXCIgaW5cbiAgbGV0IGNhbWxfc3BlY2lhbF92YWwgc3RyID0gbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgfCBGUF96ZXJvIC0+IHN0clxuICAgIHwgRlBfaW5maW5pdGUgLT4gaWYgeCA8IDAuMCB0aGVuIFwibmVnX2luZmluaXR5XCIgZWxzZSBcImluZmluaXR5XCJcbiAgICB8IEZQX25hbiAtPiBcIm5hblwiIGluXG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfaCAtPiBoZXggKClcbiAgfCBGbG9hdF9IIC0+IFN0cmluZy51cHBlcmNhc2VfYXNjaWkgKGhleCAoKSlcbiAgfCBGbG9hdF9DRiAtPiBjYW1sX3NwZWNpYWxfdmFsIChoZXggKCkpXG4gIHwgRmxvYXRfRiAtPlxuICAgIGxldCBzdHIgPSBmb3JtYXRfZmxvYXQgKGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjKSB4IGluXG4gICAgY2FtbF9zcGVjaWFsX3ZhbCAoYWRkX2RvdF9pZl9uZWVkZWQgc3RyKVxuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HIC0+XG4gICAgZm9ybWF0X2Zsb2F0IChmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYykgeFxuXG4oKiBDb252ZXJ0IGEgY2hhciB0byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIE9DYW1sIGxleGljYWwgY29udmVudGlvbi4gKilcbmxldCBmb3JtYXRfY2FtbF9jaGFyIGMgPVxuICBsZXQgc3RyID0gQ2hhci5lc2NhcGVkIGMgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVzID0gQnl0ZXMubWFrZSAobCArIDIpICdcXCcnIGluXG4gIFN0cmluZy51bnNhZmVfYmxpdCBzdHIgMCByZXMgMSBsO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBDb252ZXJ0IGEgZm9ybWF0IHR5cGUgdG8gc3RyaW5nICopXG5sZXQgc3RyaW5nX29mX2ZtdHR5IGZtdHR5ID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTtcbiAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgKCogR2VuZXJpYyBwcmludGluZyBmdW5jdGlvbiAqKVxuXG4oKiBNYWtlIGEgZ2VuZXJpYyBwcmludGluZyBmdW5jdGlvbi4gKilcbigqIFVzZWQgdG8gZ2VuZXJhdGUgUHJpbnRmIGFuZCBGb3JtYXQgcHJpbnRpbmcgZnVuY3Rpb25zLiAqKVxuKCogUGFyYW1ldGVyczpcbiAgICAgazogYSBjb250aW51YXRpb24gZmluYWxseSBhcHBsaWVkIHRvIHRoZSBvdXRwdXQgc3RyZWFtIGFuZCB0aGUgYWNjdW11bGF0b3IuXG4gICAgIG86IHRoZSBvdXRwdXQgc3RyZWFtIChzZWUgaywgJWEgYW5kICV0KS5cbiAgICAgYWNjOiByZXYgbGlzdCBvZiBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzaCwgZm9ybWF0dGluZywgLi4uKS5cbiAgICAgZm10OiB0aGUgZm9ybWF0LiAqKVxubGV0IHJlYyBtYWtlX3ByaW50ZiA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IENoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX2NoYXIgKGFjYywgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZm9ybWF0X2NhbWxfY2hhciBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgKGZ1biBzdHIgLT4gc3RyKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIHN0cmluZ190b19jYW1sX3N0cmluZ1xuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50IGljb252XG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludDMyIGljb252XG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9uYXRpdmVpbnQgaWNvbnZcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50NjQgaWNvbnZcbiAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2Zsb2F0X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgZmNvbnZcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIHN0cmluZ19vZl9ib29sXG4gIHwgQWxwaGEgcmVzdCAtPlxuICAgIGZ1biBmIHggLT4gbWFrZV9wcmludGYgayAoQWNjX2RlbGF5IChhY2MsIGZ1biBvIC0+IGYgbyB4KSkgcmVzdFxuICB8IFRoZXRhIHJlc3QgLT5cbiAgICBmdW4gZiAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGVsYXkgKGFjYywgZikpIHJlc3RcbiAgfCBDdXN0b20gKGFyaXR5LCBmLCByZXN0KSAtPlxuICAgIG1ha2VfY3VzdG9tIGsgYWNjIHJlc3QgYXJpdHkgKGYgKCkpXG4gIHwgUmVhZGVyIF8gLT5cbiAgICAoKiBUaGlzIGNhc2UgaXMgaW1wb3NzaWJsZSwgYnkgdHlwaW5nIG9mIGZvcm1hdHMuICopXG4gICAgKCogSW5kZWVkLCBzaW5jZSBwcmludGYgYW5kIGNvLiB0YWtlIGEgZm9ybWF0NCBhcyBhcmd1bWVudCwgdGhlICdkIGFuZCAnZVxuICAgICAgIHR5cGUgcGFyYW1ldGVycyBvZiBmbXQgYXJlIG9idmlvdXNseSBlcXVhbHMuIFRoZSBSZWFkZXIgaXMgdGhlXG4gICAgICAgb25seSBjb25zdHJ1Y3RvciB3aGljaCB0b3VjaCAnZCBhbmQgJ2UgdHlwZSBwYXJhbWV0ZXJzIG9mIHRoZSBmb3JtYXRcbiAgICAgICB0eXBlLCBpdCBhZGRzIGFuICgtPikgdG8gdGhlICdkIHBhcmFtZXRlcnMuIENvbnNlcXVlbnRseSwgYSBmb3JtYXQ0XG4gICAgICAgY2Fubm90IGNvbnRhaW4gYSBSZWFkZXIgbm9kZSwgZXhjZXB0IGluIHRoZSBzdWItZm9ybWF0IGFzc29jaWF0ZWQgdG9cbiAgICAgICBhbiAley4uLiV9LiBJdCdzIG5vdCBhIHByb2JsZW0gYmVjYXVzZSBtYWtlX3ByaW50ZiBkbyBub3QgY2FsbFxuICAgICAgIGl0c2VsZiByZWN1cnNpdmVseSBvbiB0aGUgc3ViLWZvcm1hdCBhc3NvY2lhdGVkIHRvICV7Li4uJX0uICopXG4gICAgYXNzZXJ0IGZhbHNlXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mbHVzaCBhY2MpIHJlc3RcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX3N0cmluZ19saXRlcmFsIChhY2MsIHN0cikpIHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfY2hhcl9saXRlcmFsIChhY2MsIGNocikpIHJlc3RcblxuICB8IEZvcm1hdF9hcmcgKF8sIHN1Yl9mbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSBzdHJpbmdfb2ZfZm10dHkgc3ViX2ZtdHR5IGluXG4gICAgKGZ1biBzdHIgLT5cbiAgICAgIGlnbm9yZSBzdHI7XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgdHkpKSByZXN0KVxuICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpIC0+XG4gICAgZnVuIChGb3JtYXQgKGZtdCwgXykpIC0+IG1ha2VfcHJpbnRmIGsgYWNjXG4gICAgICAoY29uY2F0X2ZtdCAocmVjYXN0IGZtdCBmbXR0eSkgcmVzdClcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+XG4gICAgbGV0IG5ld19hY2MgPSBBY2NfaW52YWxpZF9hcmcgKGFjYywgXCJQcmludGY6IGJhZCBjb252ZXJzaW9uICVbXCIpIGluXG4gICAgZnVuIF8gLT4gbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPlxuICAgICgqIFRoaXMgY2FzZSBzaG91bGQgYmUgcmVmdXNlZCBmb3IgUHJpbnRmLiAqKVxuICAgICgqIEFjY2VwdGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAqKVxuICAgICgqIEludGVycHJldCAlbCwgJW4gYW5kICVMIGFzICV1LiAqKVxuICAgIGZ1biBuIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmb3JtYXRfaW50IFwiJXVcIiBuKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfY2hhciAoYWNjLCBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgbWFrZV9pZ25vcmVkX3BhcmFtIGsgYWNjIGlnbiByZXN0XG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19saXQgKGFjYywgZm10aW5nX2xpdCkpIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGxldCBrJyBrYWNjID1cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2dlbiAoYWNjLCBBY2Nfb3Blbl90YWcga2FjYykpIHJlc3QgaW5cbiAgICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdCdcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGxldCBrJyBrYWNjID1cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2dlbiAoYWNjLCBBY2Nfb3Blbl9ib3gga2FjYykpIHJlc3QgaW5cbiAgICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdCdcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBrIGFjY1xuXG4oKiBEZWxheSB0aGUgZXJyb3IgKEludmFsaWRfYXJndW1lbnQgXCJQcmludGY6IGJhZCBjb252ZXJzaW9uICVfXCIpLiAqKVxuKCogR2VuZXJhdGUgZnVuY3Rpb25zIHRvIHRha2UgcmVtYWluaW5nIGFyZ3VtZW50cyAoYWZ0ZXIgdGhlIFwiJV9cIikuICopXG5hbmQgbWFrZV9pZ25vcmVkX3BhcmFtIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfbmF0aXZlaW50IChfLCBfKSAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgZm10dHkgZm10XG4gIHwgSWdub3JlZF9yZWFkZXIgICAgICAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcblxuXG4oKiBTcGVjaWFsIGNhc2Ugb2YgcHJpbnRmIFwiJV8oXCIuICopXG5hbmQgbWFrZV9mcm9tX2ZtdHR5IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgZm10dHkgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGZtdHR5IGZtdCAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0ICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgSW50X3R5IHJlc3QgICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQm9vbF90eSByZXN0ICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBUaGV0YV90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBSZWFkZXJfdHkgXyAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBfICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBGb3JtYXRfYXJnX3R5IChfLCByZXN0KSAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBFbmRfb2ZfZm10dHkgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgKGNvbmNhdF9mbXR0eSB0eSByZXN0KSBmbXRcblxuKCogSW5zZXJ0IGFuIEFjY19pbnZhbGlkX2FyZyBpbiB0aGUgYWNjdW11bGF0b3IgYW5kIGNvbnRpbnVlIHRvIGdlbmVyYXRlXG4gICBjbG9zdXJlcyB0byBnZXQgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMuICopXG5hbmQgbWFrZV9pbnZhbGlkX2FyZyA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGZtdCAtPlxuICBtYWtlX3ByaW50ZiBrIChBY2NfaW52YWxpZF9hcmcgKGFjYywgXCJQcmludGY6IGJhZCBjb252ZXJzaW9uICVfXCIpKSBmbXRcblxuKCogRml4IHBhZGRpbmcsIHRha2UgaXQgYXMgYW4gZXh0cmEgaW50ZWdlciBhcmd1bWVudCBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9wYWRkaW5nIDogdHlwZSB4IHogYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHogLT4gYSkgcGFkZGluZyAtPiAoeiAtPiBzdHJpbmcpIC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCB0cmFucyAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgdHJhbnMgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHdpZHRoKSAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmaXhfcGFkZGluZyBwYWR0eSB3aWR0aCAodHJhbnMgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHkgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcblxuKCogRml4IHBhZGRpbmcgYW5kIHByZWNpc2lvbiBmb3IgaW50LCBpbnQzMiwgbmF0aXZlaW50IG9yIGludDY0LiAqKVxuKCogVGFrZSBvbmUgb3IgdHdvIGV4dHJhIGludGVnZXIgYXJndW1lbnRzIGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiA6IHR5cGUgeCB5IHogYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHogLT4gYSkgcHJlY2lzaW9uIC0+IChpbnRfY29udiAtPiB6IC0+IHN0cmluZykgLT5cbiAgICBpbnRfY29udiAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgcHJlYyB0cmFucyBpY29udiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gdHJhbnMgaWNvbnYgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuXG4oKiBDb252ZXJ0IGEgZmxvYXQsIGZpeCBwYWRkaW5nIGFuZCBwcmVjaXNpb24gaWYgbmVlZGVkLiAqKVxuKCogVGFrZSB0aGUgZmxvYXQgYXJndW1lbnQgYW5kIG9uZSBvciB0d28gZXh0cmEgaW50ZWdlciBhcmd1bWVudHMgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfZmxvYXRfcGFkZGluZ19wcmVjaXNpb24gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgZmxvYXQgLT4gYSkgcHJlY2lzaW9uIC0+IGZsb2F0X2NvbnYgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHByZWMgZmNvbnYgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgKGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252KSB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiBwIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgKGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252KSB4IGluXG4gICAgICBsZXQgc3RyJyA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgc3RyIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyJykpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgKGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252KSB4IGluXG4gICAgICBsZXQgc3RyJyA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgc3RyIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyJykpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbmFuZCBtYWtlX2N1c3RvbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gIChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4geCAtPiB5ID1cbiAgZnVuIGsgYWNjIHJlc3QgYXJpdHkgZiAtPiBtYXRjaCBhcml0eSB3aXRoXG4gIHwgQ3VzdG9tX3plcm8gLT4gbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIGYpKSByZXN0XG4gIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbWFrZV9jdXN0b20gayBhY2MgcmVzdCBhcml0eSAoZiB4KVxuXG5sZXQgY29uc3QgeCBfID0geFxuXG5sZXQgcmVjIG1ha2VfaXByaW50ZiA6IHR5cGUgYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPiBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGEgPVxuICBmdW4gayBvIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICAgIHwgQ2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU3RyaW5nIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU3RyaW5nIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU3RyaW5nIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBDYW1sX3N0cmluZyAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfc3RyaW5nIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9zdHJpbmcgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IEludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgSW50MzIgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IE5hdGl2ZWludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgSW50NjQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEZsb2F0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBCb29sIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQm9vbCAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEJvb2wgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IEFscGhhIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgVGhldGEgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfY3VzdG9tX2FyaXR5IGsgbyByZXN0IGFyaXR5XG4gICAgfCBSZWFkZXIgXyAtPlxuICAgICAgICAoKiBUaGlzIGNhc2UgaXMgaW1wb3NzaWJsZSwgYnkgdHlwaW5nIG9mIGZvcm1hdHMuICBTZWUgdGhlXG4gICAgICAgICAgIG5vdGUgaW4gdGhlIGNvcnJlc3BvbmRpbmcgY2FzZSBmb3IgbWFrZV9wcmludGYuICopXG4gICAgICAgIGFzc2VydCBmYWxzZVxuICAgIHwgRmx1c2ggcmVzdCAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IFN0cmluZ19saXRlcmFsIChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBGb3JtYXRfYXJnIChfLCBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgICAgZnVuIChGb3JtYXQgKGZtdCwgXykpIC0+XG4gICAgICAgICAgbWFrZV9pcHJpbnRmIGsgb1xuICAgICAgICAgICAgKGNvbmNhdF9mbXQgKHJlY2FzdCBmbXQgZm10dHkpIHJlc3QpXG4gICAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pZ25vcmVkX3BhcmFtIChmdW4gXyAtPiBrIG8pIChFbmRfb2ZfYWNjKSBpZ24gcmVzdFxuICAgIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIChmdW4ga29jIC0+IG1ha2VfaXByaW50ZiBrIGtvYyByZXN0KSBvIGZtdCdcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiAoZnVuIGtvYyAtPiBtYWtlX2lwcmludGYgayBrb2MgcmVzdCkgbyBmbXQnXG4gICAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgICAgIGsgb1xuYW5kIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIDpcbiAgdHlwZSB4IHkgeiBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+IHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHogLT4gYSkgcHJlY2lzaW9uIC0+IHggPVxuICBmdW4gayBvIGZtdCBwYWQgcHJlYyAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAgICwgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IE5vX3BhZGRpbmcgICAsIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBOb19wYWRkaW5nICAgLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTGl0X3BhZGRpbmcgXywgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IExpdF9wYWRkaW5nIF8sIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IEFyZ19wYWRkaW5nIF8sIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IEFyZ19wYWRkaW5nIF8sIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IEFyZ19wYWRkaW5nIF8sIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpKVxuYW5kIGZuX29mX2N1c3RvbV9hcml0eSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT5cbiAgc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IHkgPVxuICBmdW4gayBvIGZtdCAtPiBmdW5jdGlvblxuICAgIHwgQ3VzdG9tX3plcm8gLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyBmbXRcbiAgICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+XG4gICAgICAgIGNvbnN0IChmbl9vZl9jdXN0b21fYXJpdHkgayBvIGZtdCBhcml0eSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQ29udGludWF0aW9ucyBmb3IgbWFrZV9wcmludGYgKilcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhbiBvdXRwdXRfc3RyZWFtLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgb3V0cHV0X2FjYyBvIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIFwiQHtcIjsgb3V0cHV0X2FjYyBvIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIFwiQFtcIjsgb3V0cHV0X2FjYyBvIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X2NoYXIgbyBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBmIG9cbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IGZsdXNoIG9cbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gb3V0cHV0X2FjYyBvIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIGJ1ZnB1dF9hY2MgYiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQHtcIjsgYnVmcHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkBbXCI7IGJ1ZnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBmIGJcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gYnVmcHV0X2FjYyBiIHA7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IGJ1ZnB1dF9hY2MgYiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBEaWZmZXIgZnJvbSBidWZwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiAlYSBhbmQgJXQuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBzdHJwdXRfYWNjIGIgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkB7XCI7IHN0cnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAW1wiOyBzdHJwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiAoZiAoKSlcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gc3RycHV0X2FjYyBiIHA7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IHN0cnB1dF9hY2MgYiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEVycm9yIG1hbmFnZW1lbnQgKilcblxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBwcmV0dHktcHJpbnRlZCBlcnJvciBtZXNzYWdlLiAqKVxubGV0IGZhaWx3aXRoX21lc3NhZ2UgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IGsgYWNjID0gc3RycHV0X2FjYyBidWYgYWNjOyBmYWlsd2l0aCAoQnVmZmVyLmNvbnRlbnRzIGJ1ZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdHRpbmcgdG9vbHMgKilcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhbiBvcGVuIGJsb2NrIGRlc2NyaXB0aW9uIChpbmRlbnQsIGJsb2NrX3R5cGUpICopXG5sZXQgb3Blbl9ib3hfb2Zfc3RyaW5nIHN0ciA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiAoMCwgUHBfYm94KSBlbHNlXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IGludmFsaWRfYm94ICgpID0gZmFpbHdpdGhfbWVzc2FnZSBcImludmFsaWQgYm94IGRlc2NyaXB0aW9uICVTXCIgc3RyIGluXG4gICAgbGV0IHJlYyBwYXJzZV9zcGFjZXMgaSA9XG4gICAgICBpZiBpID0gbGVuIHRoZW4gaSBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgICB8ICcgJyB8ICdcXHQnIC0+IHBhcnNlX3NwYWNlcyAoaSArIDEpXG4gICAgICAgIHwgXyAtPiBpXG4gICAgYW5kIHBhcnNlX2x3b3JkIGkgaiA9XG4gICAgICBpZiBqID0gbGVuIHRoZW4gaiBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5bal0gd2l0aFxuICAgICAgICB8ICdhJyAuLiAneicgLT4gcGFyc2VfbHdvcmQgaSAoaiArIDEpXG4gICAgICAgIHwgXyAtPiBqXG4gICAgYW5kIHBhcnNlX2ludCBpIGogPVxuICAgICAgaWYgaiA9IGxlbiB0aGVuIGogZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2pdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IHBhcnNlX2ludCBpIChqICsgMSlcbiAgICAgICAgfCBfIC0+IGogaW5cbiAgICBsZXQgd3N0YXJ0ID0gcGFyc2Vfc3BhY2VzIDAgaW5cbiAgICBsZXQgd2VuZCA9IHBhcnNlX2x3b3JkIHdzdGFydCB3c3RhcnQgaW5cbiAgICBsZXQgYm94X25hbWUgPSBTdHJpbmcuc3ViIHN0ciB3c3RhcnQgKHdlbmQgLSB3c3RhcnQpIGluXG4gICAgbGV0IG5zdGFydCA9IHBhcnNlX3NwYWNlcyB3ZW5kIGluXG4gICAgbGV0IG5lbmQgPSBwYXJzZV9pbnQgbnN0YXJ0IG5zdGFydCBpblxuICAgIGxldCBpbmRlbnQgPVxuICAgICAgaWYgbnN0YXJ0ID0gbmVuZCB0aGVuIDAgZWxzZVxuICAgICAgICB0cnkgaW50X29mX3N0cmluZyAoU3RyaW5nLnN1YiBzdHIgbnN0YXJ0IChuZW5kIC0gbnN0YXJ0KSlcbiAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT4gaW52YWxpZF9ib3ggKCkgaW5cbiAgICBsZXQgZXhwX2VuZCA9IHBhcnNlX3NwYWNlcyBuZW5kIGluXG4gICAgaWYgZXhwX2VuZCA8PiBsZW4gdGhlbiBpbnZhbGlkX2JveCAoKTtcbiAgICBsZXQgYm94X3R5cGUgPSBtYXRjaCBib3hfbmFtZSB3aXRoXG4gICAgICB8IFwiXCIgfCBcImJcIiAtPiBQcF9ib3hcbiAgICAgIHwgXCJoXCIgICAgICAtPiBQcF9oYm94XG4gICAgICB8IFwidlwiICAgICAgLT4gUHBfdmJveFxuICAgICAgfCBcImh2XCIgICAgIC0+IFBwX2h2Ym94XG4gICAgICB8IFwiaG92XCIgICAgLT4gUHBfaG92Ym94XG4gICAgICB8IF8gICAgICAgIC0+IGludmFsaWRfYm94ICgpIGluXG4gICAgKGluZGVudCwgYm94X3R5cGUpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUGFyc2luZyB0b29scyAqKVxuXG4oKiBDcmVhdGUgYSBwYWRkaW5nX2ZtdF9lYmIgZnJvbSBhIHBhZGRpbmcgYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcGFkZGluZyB0byBkaXNqb2luIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnQgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3BhZGRpbmdfZm10X2ViYiA6IHR5cGUgeCB5IC5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgICAoXywgXywgXywgXywgXykgcGFkZGluZ19mbXRfZWJiID1cbmZ1biBwYWQgZm10IC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAgICAgICAgIC0+IFBhZGRpbmdfZm10X0VCQiAoTm9fcGFkZGluZywgZm10KVxuICB8IExpdF9wYWRkaW5nIChzLCB3KSAtPiBQYWRkaW5nX2ZtdF9FQkIgKExpdF9wYWRkaW5nIChzLCB3KSwgZm10KVxuICB8IEFyZ19wYWRkaW5nIHMgICAgICAtPiBQYWRkaW5nX2ZtdF9FQkIgKEFyZ19wYWRkaW5nIHMsIGZtdClcblxuKCogQ3JlYXRlIGEgcHJlY2lzaW9uX2ZtdF9lYmIgZnJvbSBhIHByZWNpc2lvbiBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwcmVjaXNpb24gdG8gZGlzam9pbiB0aGUgdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50IGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wcmVjaXNpb25fZm10X2ViYiA6IHR5cGUgeCB5IC5cbiAgICAoeCwgeSkgcHJlY2lzaW9uIC0+IChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAgIChfLCBfLCBfLCBfLCBfKSBwcmVjaXNpb25fZm10X2ViYiA9XG5mdW4gcHJlYyBmbXQgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gIHwgTm9fcHJlY2lzaW9uICAgIC0+IFByZWNpc2lvbl9mbXRfRUJCIChOb19wcmVjaXNpb24sIGZtdClcbiAgfCBMaXRfcHJlY2lzaW9uIHAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKExpdF9wcmVjaXNpb24gcCwgZm10KVxuICB8IEFyZ19wcmVjaXNpb24gICAtPiBQcmVjaXNpb25fZm10X0VCQiAoQXJnX3ByZWNpc2lvbiwgZm10KVxuXG4oKiBDcmVhdGUgYSBwYWRwcmVjX2ZtdF9lYmIgZnJvbSBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHBhZGRpbmcgYW5kIHRoZSBwcmVjaXNpb24gdG8gZGlzam9pbiB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnRzXG4gICBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcGFkcHJlY19mbXRfZWJiIDogdHlwZSB4IHkgeiB0IC5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeiwgdCkgcHJlY2lzaW9uIC0+XG4gICAgKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgIChfLCBfLCBfLCBfLCBfKSBwYWRwcmVjX2ZtdF9lYmIgPVxuZnVuIHBhZCBwcmVjIGZtdCAtPlxuICBsZXQgUHJlY2lzaW9uX2ZtdF9FQkIgKHByZWMsIGZtdCcpID0gbWFrZV9wcmVjaXNpb25fZm10X2ViYiBwcmVjIGZtdCBpblxuICBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgICAgICAgICAtPiBQYWRwcmVjX2ZtdF9FQkIgKE5vX3BhZGRpbmcsIHByZWMsIGZtdCcpXG4gIHwgTGl0X3BhZGRpbmcgKHMsIHcpIC0+IFBhZHByZWNfZm10X0VCQiAoTGl0X3BhZGRpbmcgKHMsIHcpLCBwcmVjLCBmbXQnKVxuICB8IEFyZ19wYWRkaW5nIHMgICAgICAtPiBQYWRwcmVjX2ZtdF9FQkIgKEFyZ19wYWRkaW5nIHMsIHByZWMsIGZtdCcpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCBwYXJzaW5nICopXG5cbigqIFBhcnNlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhIGZvcm1hdCBhbmQgY3JlYXRlIGEgZm10X2ViYi4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSBpbiBjYXNlIG9mIGludmFsaWQgZm9ybWF0LiAqKVxubGV0IGZtdF9lYmJfb2Zfc3RyaW5nID9sZWdhY3lfYmVoYXZpb3Igc3RyID1cbiAgKCogUGFyYW1ldGVycyBuYW1pbmcgY29udmVudGlvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gbGl0X3N0YXJ0OiBzdGFydCBvZiB0aGUgbGl0ZXJhbCBzZXF1ZW5jZS4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBzdHJfaW5kOiBjdXJyZW50IGluZGV4IGluIHRoZSBzdHJpbmcuICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIGVuZF9pbmQ6IGVuZCBvZiB0aGUgY3VycmVudCAoc3ViLSlmb3JtYXQuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gcGN0X2luZDogaW5kZXggb2YgdGhlICclJyBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICopXG4gICgqICAgLSB6ZXJvOiAgaXMgdGhlICcwJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIG1pbnVzOiBpcyB0aGUgJy0nIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gcGx1czogIGlzIHRoZSAnKycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBoYXNoOiAgaXMgdGhlICcjJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHNwYWNlOiBpcyB0aGUgJyAnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gaWduOiAgIGlzIHRoZSAnXycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBwYWQ6IHBhZGRpbmcgb2YgdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHByZWM6IHByZWNpc2lvbiBvZiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gc3ltYjogY2hhciByZXByZXNlbnRpbmcgdGhlIGNvbnZlcnNpb24gKCdjJywgJ3MnLCAnZCcsIC4uLikuICopXG4gICgqICAgLSBjaGFyX3NldDogc2V0IG9mIGNoYXJhY3RlcnMgYXMgYml0bWFwIChzZWUgc2NhbmYgJVsuLi5dKS4gICAgKilcblxuICBsZXQgbGVnYWN5X2JlaGF2aW9yID0gbWF0Y2ggbGVnYWN5X2JlaGF2aW9yIHdpdGhcbiAgICB8IFNvbWUgZmxhZyAtPiBmbGFnXG4gICAgfCBOb25lIC0+IHRydWVcbiAgKCogIFdoZW4gdGhpcyBmbGFnIGlzIGVuYWJsZWQsIHRoZSBmb3JtYXQgcGFyc2VyIHRyaWVzIHRvIGJlaGF2ZSBhc1xuICAgICAgdGhlIDw0LjAyIGltcGxlbWVudGF0aW9ucywgaW4gcGFydGljdWxhciBpdCBpZ25vcmVzIG1vc3QgYmVuaW5lXG4gICAgICBub25zZW5zaWNhbCBmb3JtYXQuIFdoZW4gdGhlIGZsYWcgaXMgZGlzYWJsZWQsIGl0IHdpbGwgcmVqZWN0IGFueVxuICAgICAgZm9ybWF0IHRoYXQgaXMgbm90IGFjY2VwdGVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLlxuXG4gICAgICBBIHR5cGljYWwgZXhhbXBsZSB3b3VsZCBiZSBcIiUrIGRcIjogc3BlY2lmeWluZyBib3RoICcrJyAoaWYgdGhlXG4gICAgICBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoIGEgJysnIHRvIGdldCB0aGUgc2FtZSB3aWR0aCBhc1xuICAgICAgbmVnYXRpdmUgbnVtYmVycykgYW5kICcgJyAoaWYgdGhlIG51bWJlciBpcyBwb3NpdGl2ZSwgcGFkIHdpdGhcbiAgICAgIGEgc3BhY2UpIGRvZXMgbm90IG1ha2Ugc2Vuc2UsIGJ1dCB0aGUgbGVnYWN5ICg8IDQuMDIpXG4gICAgICBpbXBsZW1lbnRhdGlvbiB3YXMgaGFwcHkgdG8ganVzdCBpZ25vcmUgdGhlIHNwYWNlLlxuICAqKVxuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZS4gKilcbiAgbGV0IGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZCBtc2cgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIG1zZ1xuICBpblxuXG4gICgqIFVzZWQgd2hlbiB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgKG9yIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXQpIHdhcyBlbmNvdW50ZXJlZFxuICAgICAgdW5leHBlY3RlZGx5LiAqKVxuICBsZXQgdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UgZW5kX2luZFxuICAgICAgXCJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXRcIlxuICBpblxuXG4gICgqIFVzZWQgZm9yICUwYzogbm8gb3RoZXIgd2lkdGhzIGFyZSBpbXBsZW1lbnRlZCAqKVxuICBsZXQgaW52YWxpZF9ub25udWxsX2NoYXJfd2lkdGggc3RyX2luZCA9XG4gICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBzdHJfaW5kXG4gICAgICBcIm5vbi16ZXJvIHdpZHRocyBhcmUgdW5zdXBwb3J0ZWQgZm9yICVjIGNvbnZlcnNpb25zXCJcbiAgaW5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIG9wdGlvbiBkZXBlbmRlbmN5XG4gICAgIHByb2JsZW0uICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IHN0cl9pbmQgYyBzID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAnJWMnIHdpdGhvdXQgJXNcIlxuICAgICAgc3RyIHN0cl9pbmQgYyBzXG4gIGluXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIHVuZXhwZWN0ZWRcbiAgICAgY2hhcmFjdGVyLiAqKVxuICBsZXQgZXhwZWN0ZWRfY2hhcmFjdGVyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZCA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlcyBleHBlY3RlZCwgcmVhZCAlQ1wiXG4gICAgICBzdHIgc3RyX2luZCBleHBlY3RlZCByZWFkXG4gIGluXG5cbiAgKCogUGFyc2UgdGhlIHN0cmluZyBmcm9tIGJlZ19pbmQgKGluY2x1ZGVkKSB0byBlbmRfaW5kIChleGNsdWRlZCkuICopXG4gIGxldCByZWMgcGFyc2UgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gYmVnX2luZCBlbmRfaW5kIC0+IHBhcnNlX2xpdGVyYWwgYmVnX2luZCBiZWdfaW5kIGVuZF9pbmRcblxuICAoKiBSZWFkIGxpdGVyYWwgY2hhcmFjdGVycyB1cCB0byAnJScgb3IgJ0AnIHNwZWNpYWwgY2hhcmFjdGVycy4gKilcbiAgYW5kIHBhcnNlX2xpdGVyYWwgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGxpdF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIEVuZF9vZl9mb3JtYXQgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2Zvcm1hdCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgZm10X3Jlc3RcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2VfYWZ0ZXJfYXQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8IF8gLT5cbiAgICAgICAgcGFyc2VfbGl0ZXJhbCBsaXRfc3RhcnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG5cbiAgKCogUGFyc2UgYSBmb3JtYXQgYWZ0ZXIgJyUnICopXG4gIGFuZCBwYXJzZV9mb3JtYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBlbmRfaW5kIC0+IHBhcnNlX2lnbiBwY3RfaW5kIChwY3RfaW5kICsgMSkgZW5kX2luZFxuXG4gIGFuZCBwYXJzZV9pZ24gOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ18nIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgKHN0cl9pbmQrMSkgZW5kX2luZCB0cnVlXG4gICAgICB8IF8gLT4gcGFyc2VfZmxhZ3MgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgZmFsc2VcblxuICBhbmQgcGFyc2VfZmxhZ3MgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmJcbiAgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgaWduIC0+XG4gICAgbGV0IHplcm8gPSByZWYgZmFsc2UgYW5kIG1pbnVzID0gcmVmIGZhbHNlXG4gICAgYW5kIHBsdXMgPSByZWYgZmFsc2UgYW5kIHNwYWNlID0gcmVmIGZhbHNlXG4gICAgYW5kIGhhc2ggPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgc2V0X2ZsYWcgc3RyX2luZCBmbGFnID1cbiAgICAgICgqIGluIGxlZ2FjeSBtb2RlLCBkdXBsaWNhdGUgZmxhZ3MgYXJlIGFjY2VwdGVkICopXG4gICAgICBpZiAhZmxhZyAmJiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIGR1cGxpY2F0ZSBmbGFnICVDXCJcbiAgICAgICAgICBzdHIgc3RyX2luZCBzdHIuW3N0cl9pbmRdO1xuICAgICAgZmxhZyA6PSB0cnVlO1xuICAgIGluXG4gICAgbGV0IHJlYyByZWFkX2ZsYWdzIHN0cl9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnMCcgLT4gc2V0X2ZsYWcgc3RyX2luZCB6ZXJvOyAgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICctJyAtPiBzZXRfZmxhZyBzdHJfaW5kIG1pbnVzOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJysnIC0+IHNldF9mbGFnIHN0cl9pbmQgcGx1czsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnIycgLT4gc2V0X2ZsYWcgc3RyX2luZCBoYXNoOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyAnIC0+IHNldF9mbGFnIHN0cl9pbmQgc3BhY2U7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmRcbiAgICAgICAgICAhemVybyAhbWludXMgIXBsdXMgIWhhc2ggIXNwYWNlIGlnblxuICAgICAgZW5kXG4gICAgaW5cbiAgICByZWFkX2ZsYWdzIHN0cl9pbmRcblxuICAoKiBUcnkgdG8gcmVhZCBhIGRpZ2l0YWwgb3IgYSAnKicgcGFkZGluZy4gKilcbiAgYW5kIHBhcnNlX3BhZGRpbmcgOiB0eXBlIGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCB6ZXJvIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYWR0eSA9IG1hdGNoIHplcm8sIG1pbnVzIHdpdGhcbiAgICAgIHwgZmFsc2UsIGZhbHNlIC0+IFJpZ2h0XG4gICAgICB8IGZhbHNlLCB0cnVlICAtPiBMZWZ0XG4gICAgICB8ICB0cnVlLCBmYWxzZSAtPiBaZXJvc1xuICAgICAgfCAgdHJ1ZSwgdHJ1ZSAgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGVmdFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnLScgXCIwXCIgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgIGxldCBuZXdfaW5kLCB3aWR0aCA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgKExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZVxuICAgICAgICBpZ24gKEFyZ19wYWRkaW5nIHBhZHR5KVxuICAgIHwgXyAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgICAgfCBMZWZ0ICAtPlxuICAgICAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy0nIFwicGFkZGluZ1wiO1xuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICB8IFplcm9zIC0+XG4gICAgICAgICAoKiBhICcwJyBwYWRkaW5nIGluZGljYXRpb24gbm90IGZvbGxvd2VkIGJ5IGFueXRoaW5nIHNob3VsZFxuICAgICAgICAgICBiZSBpbnRlcnByZXRlZCBhcyBhIFJpZ2h0IHBhZGRpbmcgb2Ygd2lkdGggMC4gVGhpcyBpcyB1c2VkXG4gICAgICAgICAgIGJ5IHNjYW5uaW5nIGNvbnZlcnNpb25zICUwcyBhbmQgJTBjICopXG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIChMaXRfcGFkZGluZyAoUmlnaHQsIDApKVxuICAgICAgfCBSaWdodCAtPlxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICBlbmRcblxuICAoKiBJcyBwcmVjaXNpb24gZGVmaW5lZD8gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3BhZGRpbmcgOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnLicgLT5cbiAgICAgIHBhcnNlX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIHBhZFxuICAgIHwgc3ltYiAtPlxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBOb19wcmVjaXNpb24gcGFkIHN5bWJcblxuICAoKiBSZWFkIHRoZSBkaWdpdGFsIG9yICcqJyBwcmVjaXNpb24uICopXG4gIGFuZCBwYXJzZV9wcmVjaXNpb24gOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZCA9XG4gICAgICBsZXQgbmV3X2luZCwgcHJlYyA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBuZXdfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gcHJlYykgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfbGl0ZXJhbCBtaW51cyBzdHJfaW5kXG4gICAgfCAoJysnIHwgJy0nKSBhcyBzeW1iIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+XG4gICAgICAoKiBMZWdhY3kgbW9kZSB3b3VsZCBhY2NlcHQgYW5kIGlnbm9yZSAnKycgb3IgJy0nIGJlZm9yZSB0aGVcbiAgICAgICAgIGludGVnZXIgZGVzY3JpYmluZyB0aGUgZGVzaXJlZCBwcmVjaXNpb247IG5vdGUgdGhhdCB0aGlzXG4gICAgICAgICBjYW5ub3QgaGFwcGVuIGZvciBwYWRkaW5nIHdpZHRoLCBhcyAnKycgYW5kICctJyBhbHJlYWR5IGhhdmVcbiAgICAgICAgIGEgc2VtYW50aWNzIHRoZXJlLlxuXG4gICAgICAgICBUaGF0IHNhaWQsIHRoZSBpZGVhIChzdXBwb3J0ZWQgYnkgdGhpcyB0d2VhaykgdGhhdCB3aWR0aCBhbmRcbiAgICAgICAgIHByZWNpc2lvbiBsaXRlcmFscyBhcmUgXCJpbnRlZ2VyIGxpdGVyYWxzXCIgaW4gdGhlIE9DYW1sIHNlbnNlIGlzXG4gICAgICAgICBzdGlsbCBibGF0YW50bHkgd3JvbmcsIGFzIDEyM180NTYgb3IgMHhGRiBhcmUgcmVqZWN0ZWQuICopXG4gICAgICBwYXJzZV9saXRlcmFsIChtaW51cyB8fCBzeW1iID0gJy0nKSAoc3RyX2luZCArIDEpXG4gICAgfCAnKicgLT5cbiAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIHBhZCBBcmdfcHJlY2lzaW9uXG4gICAgfCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBub3RlIHRoYXQgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRpZCBub3QgaWdub3JlICcuJyB3aXRob3V0XG4gICAgICAgICAgIGEgbnVtYmVyIChhcyBpdCBkb2VzIGZvciBwYWRkaW5nIGluZGljYXRpb25zKSwgYnV0XG4gICAgICAgICAgIGludGVycHJldHMgaXQgYXMgJy4wJyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIHBhZCAoTGl0X3ByZWNpc2lvbiAwKVxuICAgICAgZWxzZVxuICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy4nIFwicHJlY2lzaW9uXCJcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiA6IHR5cGUgeCB5IHogdCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgcHJlYyAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2NvbnYgKHR5cGUgdSkgKHR5cGUgdikgKHBhZHByZWMgOiAodSwgdikgcGFkZGluZykgPVxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBwcmVjIHBhZHByZWMgc3RyLltzdHJfaW5kXSBpblxuICAgICgqIGluIGxlZ2FjeSBtb2RlLCBzb21lIGZvcm1hdHMgKCVzIGFuZCAlUykgYWNjZXB0IGEgd2VpcmQgbWl4IG9mXG4gICAgICAgcGFkZGluZyBhbmQgcHJlY2lzaW9uLCB3aGljaCBpcyBtZXJnZWQgYXMgYSBzaW5nbGUgcGFkZGluZ1xuICAgICAgIGluZm9ybWF0aW9uLiBGb3IgZXhhbXBsZSwgaW4gJS4xMHMgdGhlIHByZWNpc2lvbiBpcyBpbXBsaWNpdGx5XG4gICAgICAgdW5kZXJzdG9vZCBhcyBwYWRkaW5nICUxMHMsIGJ1dCB0aGUgbGVmdC1wYWRkaW5nIGNvbXBvbmVudCBtYXlcbiAgICAgICBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgbGVmdCBwYWRkaW5nIG9yIGEgbmVnYXRpdmUgcHJlY2lzaW9uOlxuICAgICAgICUtLjNzIGFuZCAlLi0zcyBhcmUgZXF1aXZhbGVudCB0byAlLTNzICopXG4gICAgbWF0Y2ggcGFkIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgLT4gKFxuICAgICAgbWF0Y2ggbWludXMsIHByZWMgd2l0aFxuICAgICAgICB8IF8sIE5vX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IE5vX3BhZGRpbmdcbiAgICAgICAgfCBmYWxzZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChSaWdodCwgbikpXG4gICAgICAgIHwgdHJ1ZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChMZWZ0LCBuKSlcbiAgICAgICAgfCBmYWxzZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBSaWdodClcbiAgICAgICAgfCB0cnVlLCBBcmdfcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgKEFyZ19wYWRkaW5nIExlZnQpXG4gICAgKVxuICAgIHwgcGFkIC0+IHBhcnNlX2NvbnYgcGFkXG5cbiAgKCogQ2FzZSBhbmFseXNpcyBvbiBjb252ZXJzaW9uLiAqKVxuICBhbmQgcGFyc2VfY29udmVyc2lvbiA6IHR5cGUgeCB5IHogdCB1IHYgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gKHgsIHkpIHBhZGRpbmcgLT5cbiAgICAgICAgKHosIHQpIHByZWNpc2lvbiAtPiAodSwgdikgcGFkZGluZyAtPiBjaGFyIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgcGFkcHJlYyBzeW1iIC0+XG4gICAgKCogRmxhZ3MgdXNlZCB0byBjaGVjayBvcHRpb24gdXNhZ2VzL2NvbXBhdGliaWxpdGllcy4gKilcbiAgICBsZXQgcGx1c191c2VkICA9IHJlZiBmYWxzZSBhbmQgaGFzaF91c2VkID0gcmVmIGZhbHNlXG4gICAgYW5kIHNwYWNlX3VzZWQgPSByZWYgZmFsc2UgYW5kIGlnbl91c2VkICAgPSByZWYgZmFsc2VcbiAgICBhbmQgcGFkX3VzZWQgICA9IHJlZiBmYWxzZSBhbmQgcHJlY191c2VkICA9IHJlZiBmYWxzZSBpblxuXG4gICAgKCogQWNjZXNzIHRvIG9wdGlvbnMsIHVwZGF0ZSBmbGFncy4gKilcbiAgICBsZXQgZ2V0X3BsdXMgICAgKCkgPSBwbHVzX3VzZWQgIDo9IHRydWU7IHBsdXNcbiAgICBhbmQgZ2V0X2hhc2ggICAoKSA9IGhhc2hfdXNlZCA6PSB0cnVlOyBoYXNoXG4gICAgYW5kIGdldF9zcGFjZSAgICgpID0gc3BhY2VfdXNlZCA6PSB0cnVlOyBzcGFjZVxuICAgIGFuZCBnZXRfaWduICAgICAoKSA9IGlnbl91c2VkICAgOj0gdHJ1ZTsgaWduXG4gICAgYW5kIGdldF9wYWQgICAgICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRcbiAgICBhbmQgZ2V0X3ByZWMgICAgKCkgPSBwcmVjX3VzZWQgIDo9IHRydWU7IHByZWNcbiAgICBhbmQgZ2V0X3BhZHByZWMgKCkgPSBwYWRfdXNlZCAgIDo9IHRydWU7IHBhZHByZWMgaW5cblxuICAgIGxldCBnZXRfaW50X3BhZCAoKSA6ICh4LHkpIHBhZGRpbmcgPVxuICAgICAgKCogJTUuM2QgaXMgYWNjZXB0ZWQgYW5kIG1lYW5pbmdmdWw6IHBhZCB0byBsZW5ndGggNSB3aXRoXG4gICAgICAgICBzcGFjZXMsIGJ1dCBmaXJzdCBwYWQgd2l0aCB6ZXJvcyB1cHRvIGxlbmd0aCAzICgwLXBhZGRpbmdcbiAgICAgICAgIGlzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBcInByZWNpc2lvblwiIGZvciBpbnRlZ2VyIGZvcm1hdHMpLlxuXG4gICAgICAgICAlMDUuM2QgaXMgcmVkdW5kYW50OiBwYWQgdG8gbGVuZ3RoIDUgKndpdGggemVyb3MqLCBidXRcbiAgICAgICAgIGZpcnN0IHBhZCB3aXRoIHplcm9zLi4uIFRvIGFkZCBpbnN1bHQgdG8gdGhlIGluanVyeSwgdGhlXG4gICAgICAgICBsZWdhY3kgaW1wbGVtZW50YXRpb24gaWdub3JlcyB0aGUgMC1wYWRkaW5nIGluZGljYXRpb24gYW5kXG4gICAgICAgICBkb2VzIHRoZSA1IHBhZGRpbmcgd2l0aCBzcGFjZXMgaW5zdGVhZC4gV2UgcmV1c2UgdGhpc1xuICAgICAgICAgaW50ZXJwcmV0YXRpb24gZm9yIGNvbXBhdGliaWxpdHksIGJ1dCBzdGF0aWNhbGx5IHJlamVjdCB0aGlzXG4gICAgICAgICBmb3JtYXQgd2hlbiB0aGUgbGVnYWN5IG1vZGUgaXMgZGlzYWJsZWQsIHRvIHByb3RlY3Qgc3RyaWN0XG4gICAgICAgICB1c2VycyBmcm9tIHRoaXMgY29ybmVyIGNhc2UuICopXG4gICAgICAgbWF0Y2ggZ2V0X3BhZCAoKSwgZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgICAgfCBwYWQsIE5vX3ByZWNpc2lvbiAtPiBwYWRcbiAgICAgICAgIHwgTm9fcGFkZGluZywgXyAgICAgLT4gTm9fcGFkZGluZ1xuICAgICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIG4pLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgbilcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MsIF8gLT5cbiAgICAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgXyBhcyBwYWQsIF8gLT4gcGFkXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZCBpblxuXG4gICAgKCogQ2hlY2sgdGhhdCBwYWR0eSA8PiBaZXJvcy4gKilcbiAgICBsZXQgY2hlY2tfbm9fMCBzeW1iICh0eXBlIGEgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA6IChhLGIpIHBhZGRpbmcgPVxuICAgICAgbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBwYWRcbiAgICAgIHwgTGl0X3BhZGRpbmcgKChMZWZ0IHwgUmlnaHQpLCBfKSAtPiBwYWRcbiAgICAgIHwgQXJnX3BhZGRpbmcgKExlZnQgfCBSaWdodCkgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIjBcIlxuICAgIGluXG5cbiAgICAoKiBHZXQgcGFkZGluZyBhcyBhIHBhZF9vcHRpb24gKHNlZSBcIiVfXCIsIFwiJXtcIiwgXCIlKFwiIGFuZCBcIiVbXCIpLlxuICAgICAgIChubyBuZWVkIGZvciBsZWdhY3kgbW9kZSB0d2Vha2luZywgdGhvc2Ugd2VyZSByZWplY3RlZCBieSB0aGVcbiAgICAgICBsZWdhY3kgcGFyc2VyIGFzIHdlbGwpICopXG4gICAgbGV0IG9wdF9vZl9wYWQgYyAodHlwZSBhKSAodHlwZSBiKSAocGFkIDogKGEsIGIpIHBhZGRpbmcpID0gbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBOb25lXG4gICAgICB8IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpIC0+IFNvbWUgd2lkdGhcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJzAnXCJcbiAgICAgIHwgTGl0X3BhZGRpbmcgKExlZnQsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBTb21lIHdpZHRoXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInLSdcIlxuICAgICAgfCBBcmdfcGFkZGluZyBfIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJyonXCJcbiAgICBpblxuICAgIGxldCBnZXRfcGFkX29wdCBjID0gb3B0X29mX3BhZCBjIChnZXRfcGFkICgpKSBpblxuICAgIGxldCBnZXRfcGFkcHJlY19vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZHByZWMgKCkpIGluXG5cbiAgICAoKiBHZXQgcHJlY2lzaW9uIGFzIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfZlwiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBnZXRfcHJlY19vcHQgKCkgPSBtYXRjaCBnZXRfcHJlYyAoKSB3aXRoXG4gICAgICB8IE5vX3ByZWNpc2lvbiAgICAgICAtPiBOb25lXG4gICAgICB8IExpdF9wcmVjaXNpb24gbmRlYyAtPiBTb21lIG5kZWNcbiAgICAgIHwgQXJnX3ByZWNpc2lvbiAgICAgIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKidcIlxuICAgIGluXG5cbiAgICBsZXQgZm10X3Jlc3VsdCA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJywnIC0+XG4gICAgICBwYXJzZSBzdHJfaW5kIGVuZF9pbmRcbiAgICB8ICdjJyAtPlxuICAgICAgbGV0IGNoYXJfZm9ybWF0IGZtdF9yZXN0ID0gKCogJWMgKilcbiAgICAgICAgaWYgZ2V0X2lnbiAoKVxuICAgICAgICB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKENoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IHNjYW5fZm9ybWF0IGZtdF9yZXN0ID0gKCogJTBjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3NjYW5fbmV4dF9jaGFyLCBmbXRfcmVzdCkpXG4gICAgICAgIGVsc2UgRm10X0VCQiAoU2Nhbl9uZXh0X2NoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIGdldF9wYWRfb3B0ICdjJyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBjaGFyX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgMCAtPiBzY2FuX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgX24gLT5cbiAgICAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvclxuICAgICAgICAgICB0aGVuIGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmRcbiAgICAgICAgICAgZWxzZSAoKiBsZWdhY3kgaWdub3JlcyAlYyB3aWR0aHMgKikgY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgIGVuZFxuICAgIHwgJ0MnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2FtbF9jaGFyLGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoQ2FtbF9jaGFyIGZtdF9yZXN0KVxuICAgIHwgJ3MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoU3RyaW5nIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ1MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2NhbWxfc3RyaW5nIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChDYW1sX3N0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPlxuICAgICAgbGV0IGljb252ID0gY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgIChnZXRfc3BhY2UgKCkpIHN5bWIgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ04nIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBUb2tlbl9jb3VudGVyIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSlcbiAgICB8ICdsJyB8ICduJyB8ICdMJyB3aGVuIHN0cl9pbmQ9ZW5kX2luZCB8fCBub3QgKGlzX2ludF9iYXNlIHN0ci5bc3RyX2luZF0pIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBjb3VudGVyX29mX2NoYXIgc3ltYiBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDMyIChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50MzIgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICduJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKVxuICAgICAgICAgIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnTCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDY0IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50NjQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdmJyB8ICdlJyB8ICdFJyB8ICdnJyB8ICdHJyB8ICdGJyB8ICdoJyB8ICdIJyAtPlxuICAgICAgbGV0IGZjb252ID1cbiAgICAgICAgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZFxuICAgICAgICAgIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKSAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mbG9hdCAoZ2V0X3BhZF9vcHQgJ18nLCBnZXRfcHJlY19vcHQgKCkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEZsb2F0IChmY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnYicgfCAnQicgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfYm9vbCAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQm9vbCAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdhJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEFscGhhIGZtdF9yZXN0KVxuICAgIHwgJ3QnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoVGhldGEgZm10X3Jlc3QpXG4gICAgfCAncicgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoUmVhZGVyIGZtdF9yZXN0KVxuICAgIHwgJyEnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRmx1c2ggZm10X3Jlc3QpXG4gICAgfCAoJyUnIHwgJ0AnKSBhcyBjIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsIChjLCBmbXRfcmVzdCkpXG4gICAgfCAneycgLT5cbiAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kICd9JyBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3ViX2VuZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm10dHkgPSBmbXR0eV9vZl9mbXQgc3ViX2ZtdCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mb3JtYXRfYXJnIChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfYXJnIChnZXRfcGFkX29wdCAneycsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJygnIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnKScgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCBzdWJfZW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfc3Vic3QgKGdldF9wYWRfb3B0ICcoJywgc3ViX2ZtdHR5LCBmbXRfcmVzdCkpXG4gICAgfCAnWycgLT5cbiAgICAgIGxldCBuZXh0X2luZCwgY2hhcl9zZXQgPSBwYXJzZV9jaGFyX3NldCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnXycsIGNoYXJfc2V0KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fY2hhcl9zZXQgKGdldF9wYWRfb3B0ICdbJywgY2hhcl9zZXQsIGZtdF9yZXN0KSlcbiAgICB8ICctJyB8ICcrJyB8ICcjJyB8ICcgJyB8ICdfJyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgZmxhZyAlQyBpcyBvbmx5IGFsbG93ZWQgYWZ0ZXIgdGhlICclJScsIGJlZm9yZSBwYWRkaW5nIGFuZCBwcmVjaXNpb25cIlxuICAgICAgICBzdHIgcGN0X2luZCBzeW1iXG4gICAgfCBfIC0+XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICBpbnZhbGlkIGNvbnZlcnNpb24gXFxcIiUlJWNcXFwiXCIgc3RyIChzdHJfaW5kIC0gMSkgc3ltYlxuICAgIGluXG4gICAgKCogQ2hlY2sgZm9yIHVudXNlZCBvcHRpb25zLCBhbmQgcmVqZWN0IHRoZW0gYXMgaW5jb21wYXRpYmxlLlxuXG4gICAgICAgU3VjaCBjaGVja3MgbmVlZCB0byBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSwgYXMgdGhlIGxlZ2FjeVxuICAgICAgIHBhcnNlciBzaWxlbnRseSBpZ25vcmVkIGluY29tcGF0aWJsZSBmbGFncy4gKilcbiAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW4gYmVnaW5cbiAgICBpZiBub3QgIXBsdXNfdXNlZCAmJiBwbHVzIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCI7XG4gICAgaWYgbm90ICFoYXNoX3VzZWQgJiYgaGFzaCB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiO1xuICAgIGlmIG5vdCAhc3BhY2VfdXNlZCAmJiBzcGFjZSB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicgJ1wiO1xuICAgIGlmIG5vdCAhcGFkX3VzZWQgICYmIFBhZGRpbmdfRUJCIHBhZCA8PiBQYWRkaW5nX0VCQiBOb19wYWRkaW5nIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiYHBhZGRpbmcnXCI7XG4gICAgaWYgbm90ICFwcmVjX3VzZWQgJiYgUHJlY2lzaW9uX0VCQiBwcmVjIDw+IFByZWNpc2lvbl9FQkIgTm9fcHJlY2lzaW9uIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAoaWYgaWduIHRoZW4gJ18nIGVsc2Ugc3ltYilcbiAgICAgICAgXCJgcHJlY2lzaW9uJ1wiO1xuICAgIGlmIGlnbiAmJiBwbHVzIHRoZW4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICdfJyBcIicrJ1wiO1xuICAgIGVuZDtcbiAgICAoKiB0aGlzIGxhc3QgdGVzdCBtdXN0IG5vdCBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSxcbiAgICAgICBhcyBpZ25vcmluZyBpdCB3b3VsZCB0eXBpY2FsbHkgcmVzdWx0IGluIGEgZGlmZmVyZW50IHR5cGluZ1xuICAgICAgIHRoYW4gd2hhdCB0aGUgbGVnYWN5IHBhcnNlciB1c2VkICopXG4gICAgaWYgbm90ICFpZ25fdXNlZCAmJiBpZ24gdGhlblxuICAgICAgYmVnaW4gbWF0Y2ggc3ltYiB3aXRoXG4gICAgICAgICgqIGFyZ3VtZW50LWxlc3MgZm9ybWF0cyBjYW4gc2FmZWx5IGJlIGlnbm9yZWQgaW4gbGVnYWN5IG1vZGUgKilcbiAgICAgICAgfCAoJ0AnIHwgJyUnIHwgJyEnIHwgJywnKSB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIidfJ1wiXG4gICAgICBlbmQ7XG4gICAgZm10X3Jlc3VsdFxuXG4gICgqIFBhcnNlIGZvcm1hdHRpbmcgaW5mb3JtYXRpb24gKGFmdGVyICdAJykuICopXG4gIGFuZCBwYXJzZV9hZnRlcl9hdCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoJ0AnLCBFbmRfb2ZfZm9ybWF0KSlcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ1snIC0+XG4gICAgICAgIHBhcnNlX3RhZyBmYWxzZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV9ib3gsIGZtdF9yZXN0KSlcbiAgICAgIHwgJ3snIC0+XG4gICAgICAgIHBhcnNlX3RhZyB0cnVlIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnfScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKENsb3NlX3RhZywgZm10X3Jlc3QpKVxuICAgICAgfCAnLCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAsXCIsIDAsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQnJlYWsgKFwiQCBcIiwgMSwgMCksIGZtdF9yZXN0KSlcbiAgICAgIHwgJzsnIC0+XG4gICAgICAgIHBhcnNlX2dvb2RfYnJlYWsgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICc/JyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRkZsdXNoLCBmbXRfcmVzdCkpXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGb3JjZV9uZXdsaW5lLCBmbXRfcmVzdCkpXG4gICAgICB8ICcuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRmx1c2hfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgcGFyc2VfbWFnaWNfc2l6ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChFc2NhcGVkX2F0LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyB3aGVuIHN0cl9pbmQgKyAxIDwgZW5kX2luZCAmJiBzdHIuW3N0cl9pbmQgKyAxXSA9ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMikgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9wZXJjZW50LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgZm10X3Jlc3QpKVxuICAgICAgfCBjIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljIGMsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPG5hbWU+IGFmdGVyIFwiQHtcIiBvciBcIkBbXCIuICopXG4gIGFuZCBwYXJzZV90YWcgOiB0eXBlIGUgZiAuIGJvb2wgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBpc19vcGVuX3RhZyBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICB0cnlcbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICc8JyAtPlxuICAgICAgICBsZXQgaW5kID0gU3RyaW5nLmluZGV4X2Zyb20gc3RyIChzdHJfaW5kICsgMSkgJz4nIGluXG4gICAgICAgIGlmIGluZCA+PSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIHN0cl9pbmQgKGluZCAtIHN0cl9pbmQgKyAxKSBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChpbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIChpbmQgKyAxKSBpblxuICAgICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoc3ViX2ZtdCwgc3ViX3N0cikgaW5cbiAgICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICAgIGlmIGlzX29wZW5fdGFnIHRoZW4gT3Blbl90YWcgc3ViX2Zvcm1hdCBlbHNlIE9wZW5fYm94IHN1Yl9mb3JtYXQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcbiAgICAgIHwgXyAtPlxuICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm9ybWF0ID0gRm9ybWF0IChFbmRfb2ZfZm9ybWF0LCBcIlwiKSBpblxuICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZywgZm10X3Jlc3QpKVxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBvcHRpb25hbCA8d2lkdGggb2Zmc2V0PiBhZnRlciBcIkA7XCIuICopXG4gIGFuZCBwYXJzZV9nb29kX2JyZWFrIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGxldCBuZXh0X2luZCwgZm9ybWF0dGluZ19saXQgPVxuICAgICAgdHJ5XG4gICAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHx8IHN0ci5bc3RyX2luZF0gPD4gJzwnIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3RyX2luZF8xID0gcGFyc2Vfc3BhY2VzIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfMV0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gKFxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHdpZHRoID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzEgZW5kX2luZCBpblxuICAgICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzNdIHdpdGhcbiAgICAgICAgICAgICAgfCAnPicgLT5cbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzMtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfMyArIDEsIEJyZWFrIChzLCB3aWR0aCwgMClcbiAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHN0cl9pbmRfNCwgb2Zmc2V0ID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzMgZW5kX2luZCBpblxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzUgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF80IGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBpZiBzdHIuW3N0cl9pbmRfNV0gPD4gJz4nIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQtMikgKHN0cl9pbmRfNS1zdHJfaW5kKzMpIGluXG4gICAgICAgICAgICAgICAgc3RyX2luZF81ICsgMSwgQnJlYWsgKHMsIHdpZHRoLCBvZmZzZXQpXG4gICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgKVxuICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPlxuICAgICAgICBzdHJfaW5kLCBCcmVhayAoXCJAO1wiLCAxLCAwKVxuICAgIGluXG4gICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgdGhlIHNpemUgaW4gYSA8bj4uICopXG4gIGFuZCBwYXJzZV9tYWdpY19zaXplIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIG1hdGNoXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgbGV0IHN0cl9pbmRfMiwgc2l6ZSA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICBsZXQgc3RyX2luZF8zID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfMiBlbmRfaW5kIGluXG4gICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzNdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kIC0gMikgKHN0cl9pbmRfMyAtIHN0cl9pbmQgKyAzKSBpblxuICAgICAgICAgIFNvbWUgKHN0cl9pbmRfMyArIDEsIE1hZ2ljX3NpemUgKHMsIHNpemUpKVxuICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgTm9uZVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKG5leHRfaW5kLCBmb3JtYXR0aW5nX2xpdCkgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKFNjYW5faW5kaWMgJzwnLCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgYW5kIGNvbnN0cnVjdCBhIGNoYXIgc2V0LiAqKVxuICBhbmQgcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuXG4gICAgbGV0IGNoYXJfc2V0ID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gICAgbGV0IGFkZF9jaGFyIGMgPVxuICAgICAgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGM7XG4gICAgaW5cbiAgICBsZXQgYWRkX3JhbmdlIGMgYycgPVxuICAgICAgZm9yIGkgPSBpbnRfb2ZfY2hhciBjIHRvIGludF9vZl9jaGFyIGMnIGRvXG4gICAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCAoY2hhcl9vZl9pbnQgaSk7XG4gICAgICBkb25lO1xuICAgIGluXG5cbiAgICBsZXQgZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kID1cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogJyUlJyBhbG9uZSBpcyBub3QgYWNjZXB0ZWQgaW4gY2hhcmFjdGVyIHNldHMsIFxcXG4gICAgICAgICB1c2UgJSUlJSBpbnN0ZWFkIGF0IHBvc2l0aW9uICVkLlwiIHN0ciBzdHJfaW5kXG4gICAgaW5cblxuICAgICgqIFBhcnNlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSBjaGFyIHNldC4gKilcbiAgICBsZXQgcmVjIHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbGV0IGMgPSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgICAoKiBQYXJzZSB0aGUgY29udGVudCBvZiBhIGNoYXIgc2V0IHVudGlsIHRoZSBmaXJzdCAnXScuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgc3RyX2luZCBlbmRfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBhZGRfY2hhciAnLSc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMgLT5cbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogVGVzdCBmb3IgcmFuZ2UgaW4gY2hhciBzZXQuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJy0nIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG4gICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIHdoZW4gYyA9ICclJyAtPlxuICAgICAgICBhZGRfY2hhciBjJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgaWYgYyA9ICclJyB0aGVuIGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZDtcbiAgICAgICAgKCogbm90ZSB0aGF0ICdAJyBhbG9uZSBpcyBhY2NlcHRlZCwgYXMgZG9uZSBieSB0aGUgbGVnYWN5XG4gICAgICAgICAgIGltcGxlbWVudGF0aW9uOyB0aGUgZG9jdW1lbnRhdGlvbiBzcGVjaWZpY2FsbHkgcmVxdWlyZXMgJUBcbiAgICAgICAgICAgc28gd2UgY291bGQgd2FybiBvbiB0aGF0ICopXG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGMnXG5cbiAgICAoKiBNYW5hZ2UgcmFuZ2UgaW4gY2hhciBzZXQgKGV4Y2VwdCBpZiB0aGUgJy0nIHRoZSBsYXN0IGNoYXIgYmVmb3JlICddJykgKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfbWludXMgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIC0+XG4gICAgICAgICAgICBhZGRfcmFuZ2UgYyBjJztcbiAgICAgICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kXG4gICAgICAgICAgfCBfIC0+IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZFxuICAgICAgICBlbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgaW5cbiAgICBsZXQgc3RyX2luZCwgcmV2ZXJzZSA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICAgIHwgJ14nIC0+IHN0cl9pbmQgKyAxLCB0cnVlXG4gICAgICAgIHwgXyAtPiBzdHJfaW5kLCBmYWxzZSBpblxuICAgIGxldCBuZXh0X2luZCA9IHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgIGxldCBjaGFyX3NldCA9IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCBpblxuICAgIG5leHRfaW5kLCAoaWYgcmV2ZXJzZSB0aGVuIHJldl9jaGFyX3NldCBjaGFyX3NldCBlbHNlIGNoYXJfc2V0KVxuXG4gICgqIENvbnN1bWUgYWxsIG5leHQgc3BhY2VzLCByYWlzZSBhbiBGYWlsdXJlIGlmIGVuZF9pbmQgaXMgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgaWYgc3RyLltzdHJfaW5kXSA9ICcgJyB0aGVuIHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgZWxzZSBzdHJfaW5kXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmUgaWYgZW5kX2luZCBpc1xuICAgICByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIGFjYyA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBhY2MgKiAxMCArIChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnKSBpblxuICAgICAgaWYgbmV3X2FjYyA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBpbnRlZ2VyICVkIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGltaXQgJWRcIlxuICAgICAgICAgIHN0ciBuZXdfYWNjIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgbmV3X2FjY1xuICAgIHwgXyAtPiBzdHJfaW5kLCBhY2NcblxuICAoKiBSZWFkIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW50ZWdlciBmcm9tIHRoZSBzdHJpbmcsIHJhaXNlIGEgRmFpbHVyZVxuICAgICBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9pbnRlZ2VyIHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDBcbiAgICB8ICctJyAtPiAoXG4gICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICBsZXQgbmV4dF9pbmQsIG4gPSBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgMCBpblxuICAgICAgICBuZXh0X2luZCwgLW5cbiAgICAgIHwgYyAtPlxuICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImRpZ2l0XCIgY1xuICAgIClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQWRkIGEgbGl0ZXJhbCB0byBhIGZvcm1hdCBmcm9tIGEgbGl0ZXJhbCBjaGFyYWN0ZXIgc3ViLXNlcXVlbmNlLiAqKVxuICBhbmQgYWRkX2xpdGVyYWwgOiB0eXBlIGEgZCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiAoYSwgXywgXywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBmbXQgLT4gbWF0Y2ggc3RyX2luZCAtIGxpdF9zdGFydCB3aXRoXG4gICAgfCAwICAgIC0+IEZtdF9FQkIgZm10XG4gICAgfCAxICAgIC0+IEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoc3RyLltsaXRfc3RhcnRdLCBmbXQpKVxuICAgIHwgc2l6ZSAtPiBGbXRfRUJCIChTdHJpbmdfbGl0ZXJhbCAoU3RyaW5nLnN1YiBzdHIgbGl0X3N0YXJ0IHNpemUsIGZtdCkpXG5cbiAgKCogU2VhcmNoIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3ViLWZvcm1hdFxuICAgICAoaS5lLiB0aGUgY29ycmVzcG9uZGluZyBcIiV9XCIgb3IgXCIlKVwiKSAqKVxuICBhbmQgc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogdW5jbG9zZWQgc3ViLWZvcm1hdCwgXFxcbiAgICAgICAgIGV4cGVjdGVkIFxcXCIlJSVjXFxcIiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkXCIgc3RyIGMgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICclJyAtPlxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBpZiBzdHIuW3N0cl9pbmQgKyAxXSA9IGMgdGhlbiAoKiBFbmQgb2YgZm9ybWF0IGZvdW5kICopIHN0cl9pbmQgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgIHwgJ18nIC0+XG4gICAgICAgICAgKCogU2VhcmNoIGZvciBcIiVfKFwiIG9yIFwiJV97XCIuICopXG4gICAgICAgICAgaWYgc3RyX2luZCArIDIgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMl0gd2l0aFxuICAgICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnfScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgICB8IF8gLT4gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kIGNcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCAneycgLT5cbiAgICAgICAgICAoKiAley4uLiV9IHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAoKiAlKC4uLiUpIHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJyknIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnfScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJSguLi4lfS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnKSdcIiAnfSdcbiAgICAgICAgfCAnKScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJXsuLi4lKS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnfSdcIiAnKSdcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgZW5kXG4gICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgKCogQ2hlY2sgaWYgc3ltYiBpcyBhIHZhbGlkIGludCBjb252ZXJzaW9uIGFmdGVyIFwiJWxcIiwgXCIlblwiIG9yIFwiJUxcIiAqKVxuICBhbmQgaXNfaW50X2Jhc2Ugc3ltYiA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJ2QnIHwgJ2knIHwgJ3gnIHwgJ1gnIHwgJ28nIHwgJ3UnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICAoKiBDb252ZXJ0IGEgY2hhciAobCwgbiBvciBMKSB0byBpdHMgYXNzb2NpYXRlZCBjb3VudGVyLiAqKVxuICBhbmQgY291bnRlcl9vZl9jaGFyIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdsJyAtPiBMaW5lX2NvdW50ZXIgIHwgJ24nIC0+IENoYXJfY291bnRlclxuICAgIHwgJ0wnIC0+IFRva2VuX2NvdW50ZXIgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHN5bWIpIHRvIGl0cyBhc3NvY2lhdGVkIGludF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIG1hdGNoIHBsdXMsIGhhc2gsIHNwYWNlLCBzeW1iIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdkJyAtPiBJbnRfZCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnaScgLT4gSW50X2lcbiAgICB8IGZhbHNlLCBmYWxzZSwgIHRydWUsICdkJyAtPiBJbnRfc2QgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnaScgLT4gSW50X3NpXG4gICAgfCAgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X3BkIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9waVxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3gnIC0+IEludF94ICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdYJyAtPiBJbnRfWFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3gnIC0+IEludF9DeCB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdYJyAtPiBJbnRfQ1hcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdvJyAtPiBJbnRfb1xuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ28nIC0+IEludF9Db1xuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3UnIC0+IEludF91XG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnZCcgLT4gSW50X0NkXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnaScgLT4gSW50X0NpXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAndScgLT4gSW50X0N1XG4gICAgfCBfLCB0cnVlLCBfLCAneCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0N4XG4gICAgfCBfLCB0cnVlLCBfLCAnWCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NYXG4gICAgfCBfLCB0cnVlLCBfLCAnbycgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NvXG4gICAgfCBfLCB0cnVlLCBfLCAoJ2QnIHwgJ2knIHwgJ3UnKSAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgZmFsc2Ugc3BhY2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiXG4gICAgfCB0cnVlLCBfLCB0cnVlLCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBwbHVzIGFuZCBzcGFjZTogbGVnYWN5IGltcGxlbWVudGF0aW9uIHByZWZlcnMgcGx1cyAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggZmFsc2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCB0cnVlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIlxuICAgIHwgdHJ1ZSwgXywgZmFsc2UsIF8gICAgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBmYWxzZSBoYXNoIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInKydcIlxuICAgIHwgZmFsc2UsIF8sIGZhbHNlLCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHNwYWNlLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBmbG9hdF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggc3BhY2Ugc3ltYiA9XG4gICAgbGV0IGZsYWcgPSBtYXRjaCBwbHVzLCBzcGFjZSB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19cbiAgICB8IGZhbHNlLCAgdHJ1ZSAtPiBGbG9hdF9mbGFnX3NcbiAgICB8ICB0cnVlLCBmYWxzZSAtPiBGbG9hdF9mbGFnX3BcbiAgICB8ICB0cnVlLCAgdHJ1ZSAtPlxuICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEZsb2F0X2ZsYWdfcFxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCIgaW5cbiAgICBsZXQga2luZCA9IG1hdGNoIGhhc2gsIHN5bWIgd2l0aFxuICAgIHwgXywgJ2YnIC0+IEZsb2F0X2ZcbiAgICB8IF8sICdlJyAtPiBGbG9hdF9lXG4gICAgfCBfLCAnRScgLT4gRmxvYXRfRVxuICAgIHwgXywgJ2cnIC0+IEZsb2F0X2dcbiAgICB8IF8sICdHJyAtPiBGbG9hdF9HXG4gICAgfCBfLCAnaCcgLT4gRmxvYXRfaFxuICAgIHwgXywgJ0gnIC0+IEZsb2F0X0hcbiAgICB8IGZhbHNlLCAnRicgLT4gRmxvYXRfRlxuICAgIHwgdHJ1ZSwgJ0YnIC0+IEZsb2F0X0NGXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSBpblxuICAgIGZsYWcsIGtpbmRcblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgaW5jb21wYXRpYmxlIG9wdGlvbnMuKilcbiAgYW5kIGluY29tcGF0aWJsZV9mbGFnIDogdHlwZSBhIC4gaW50IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZyAtPiBhID1cbiAgICBmdW4gcGN0X2luZCBzdHJfaW5kIHN5bWIgb3B0aW9uIC0+XG4gICAgICBsZXQgc3ViZm10ID0gU3RyaW5nLnN1YiBzdHIgcGN0X2luZCAoc3RyX2luZCAtIHBjdF9pbmQpIGluXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICAlcyBpcyBpbmNvbXBhdGlibGUgd2l0aCAnJWMnIGluIHN1Yi1mb3JtYXQgJVNcIlxuICAgICAgICBzdHIgcGN0X2luZCBvcHRpb24gc3ltYiBzdWJmbXRcblxuICBpbiBwYXJzZSAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICgqIEd1YXJkZWQgc3RyaW5nIHRvIGZvcm1hdCBjb252ZXJzaW9ucyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgc3RyIGZtdHR5ID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCBmbXR0eSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIlxuICAgICAgc3RyIChzdHJpbmdfb2ZfZm10dHkgZm10dHkpXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgY29tcGF0aWJsZSB3aXRoIGFuIG90aGVyIGZvcm1hdC4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0IHN0ciAoRm9ybWF0IChmbXQnLCBzdHInKSkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IChmbXR0eV9vZl9mbXQgZm10JyksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCIgc3RyIHN0cidcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgWGF2aWVyIExlcm95IGFuZCBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbmxldCBrZnByaW50ZiBrIG8gKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIG8gYWNjOyBrIG8pIEVuZF9vZl9hY2MgZm10XG5sZXQga2JwcmludGYgayBiIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gYnVmcHV0X2FjYyBiIGFjYzsgayBiKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGlrZnByaW50ZiBrIG9jIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgb2MgZm10XG5sZXQgaWticHJpbnRmID0gaWtmcHJpbnRmXG5cbmxldCBmcHJpbnRmIG9jIGZtdCA9IGtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBicHJpbnRmIGIgZm10ID0ga2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgaWZwcmludGYgb2MgZm10ID0gaWtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBpYnByaW50ZiBiIGZtdCA9IGlrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBwcmludGYgZm10ID0gZnByaW50ZiBzdGRvdXQgZm10XG5sZXQgZXByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZGVyciBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgaycgYWNjID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHN0cnB1dF9hY2MgYnVmIGFjYztcbiAgICBrIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgLT4gcykgZm10XG5cbmxldCBrcHJpbnRmID0ga3NwcmludGZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBrZXkgPSBzdHJpbmdcbnR5cGUgZG9jID0gc3RyaW5nXG50eXBlIHVzYWdlX21zZyA9IHN0cmluZ1xudHlwZSBhbm9uX2Z1biA9IChzdHJpbmcgLT4gdW5pdClcblxudHlwZSBzcGVjID1cbiAgfCBVbml0IG9mICh1bml0IC0+IHVuaXQpICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHVuaXQgYXJndW1lbnQgKilcbiAgfCBCb29sIG9mIChib29sIC0+IHVuaXQpICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgYm9vbCBhcmd1bWVudCAqKVxuICB8IFNldCBvZiBib29sIHJlZiAgICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRydWUgKilcbiAgfCBDbGVhciBvZiBib29sIHJlZiAgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byBmYWxzZSAqKVxuICB8IFN0cmluZyBvZiAoc3RyaW5nIC0+IHVuaXQpICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBTZXRfc3RyaW5nIG9mIHN0cmluZyByZWYgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgc3RyaW5nIGFyZ3VtZW50ICopXG4gIHwgSW50IG9mIChpbnQgLT4gdW5pdCkgICAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhbiBpbnQgYXJndW1lbnQgKilcbiAgfCBTZXRfaW50IG9mIGludCByZWYgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgaW50IGFyZ3VtZW50ICopXG4gIHwgRmxvYXQgb2YgKGZsb2F0IC0+IHVuaXQpICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIGZsb2F0IGFyZ3VtZW50ICopXG4gIHwgU2V0X2Zsb2F0IG9mIGZsb2F0IHJlZiAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIGZsb2F0IGFyZ3VtZW50ICopXG4gIHwgVHVwbGUgb2Ygc3BlYyBsaXN0ICAgICAgICAgKCogVGFrZSBzZXZlcmFsIGFyZ3VtZW50cyBhY2NvcmRpbmcgdG8gdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYyBsaXN0ICopXG4gIHwgU3ltYm9sIG9mIHN0cmluZyBsaXN0ICogKHN0cmluZyAtPiB1bml0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFRha2Ugb25lIG9mIHRoZSBzeW1ib2xzIGFzIGFyZ3VtZW50IGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIHN5bWJvbC4gKilcbiAgfCBSZXN0IG9mIChzdHJpbmcgLT4gdW5pdCkgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGVhY2ggcmVtYWluaW5nIGFyZ3VtZW50ICopXG4gIHwgUmVzdF9hbGwgb2YgKHN0cmluZyBsaXN0IC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogU3RvcCBpbnRlcnByZXRpbmcga2V5d29yZHMgYW5kIGNhbGwgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2l0aCBhbGwgcmVtYWluaW5nIGFyZ3VtZW50cy4gKilcbiAgfCBFeHBhbmQgb2YgKHN0cmluZyAtPiBzdHJpbmcgYXJyYXkpICgqIElmIHRoZSByZW1haW5pbmcgYXJndW1lbnRzIHRvIHByb2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBvZiB0aGUgZm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1tcIi1mb29cIjsgXCJhcmdcIl0gQCByZXN0XSB3aGVyZSBcImZvb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyByZWdpc3RlcmVkIGFzIFtFeHBhbmQgZl0sIHRoZW4gdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgW2YgXCJhcmdcIiBAIHJlc3RdIGFyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkLiBPbmx5IGFsbG93ZWQgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY10uICopXG5cbmV4Y2VwdGlvbiBCYWQgb2Ygc3RyaW5nXG5leGNlcHRpb24gSGVscCBvZiBzdHJpbmdcblxudHlwZSBlcnJvciA9XG4gIHwgVW5rbm93biBvZiBzdHJpbmdcbiAgfCBXcm9uZyBvZiBzdHJpbmcgKiBzdHJpbmcgKiBzdHJpbmcgICgqIG9wdGlvbiwgYWN0dWFsLCBleHBlY3RlZCAqKVxuICB8IE1pc3Npbmcgb2Ygc3RyaW5nXG4gIHwgTWVzc2FnZSBvZiBzdHJpbmdcblxuZXhjZXB0aW9uIFN0b3Agb2YgZXJyb3IgKCogdXNlZCBpbnRlcm5hbGx5ICopXG5cbm9wZW4gUHJpbnRmXG5cbmxldCByZWMgYXNzb2MzIHggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8ICh5MSwgeTIsIF8pIDo6IF8gd2hlbiB5MSA9IHggLT4geTJcbiAgfCBfIDo6IHQgLT4gYXNzb2MzIHggdFxuXG5cbmxldCBzcGxpdCBzID1cbiAgbGV0IGkgPSBTdHJpbmcuaW5kZXggcyAnPScgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBTdHJpbmcuc3ViIHMgMCBpLCBTdHJpbmcuc3ViIHMgKGkrMSkgKGxlbi0oaSsxKSlcblxuXG5sZXQgbWFrZV9zeW1saXN0IHByZWZpeCBzZXAgc3VmZml4IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBcIjxub25lPlwiXG4gIHwgaDo6dCAtPiAoTGlzdC5mb2xkX2xlZnQgKGZ1biB4IHkgLT4geCBeIHNlcCBeIHkpIChwcmVmaXggXiBoKSB0KSBeIHN1ZmZpeFxuXG5cbmxldCBwcmludF9zcGVjIGJ1ZiAoa2V5LCBzcGVjLCBkb2MpID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBkb2MgPiAwIHRoZW5cbiAgICBtYXRjaCBzcGVjIHdpdGhcbiAgICB8IFN5bWJvbCAobCwgXykgLT5cbiAgICAgICAgYnByaW50ZiBidWYgXCIgICVzICVzJXNcXG5cIiBrZXkgKG1ha2Vfc3ltbGlzdCBcIntcIiBcInxcIiBcIn1cIiBsKSBkb2NcbiAgICB8IF8gLT5cbiAgICAgICAgYnByaW50ZiBidWYgXCIgICVzICVzXFxuXCIga2V5IGRvY1xuXG5cbmxldCBoZWxwX2FjdGlvbiAoKSA9IHJhaXNlIChTdG9wIChVbmtub3duIFwiLWhlbHBcIikpXG5cbmxldCBhZGRfaGVscCBzcGVjbGlzdCA9XG4gIGxldCBhZGQxID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItaGVscFwiIHNwZWNsaXN0KTsgW11cbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgW1wiLWhlbHBcIiwgVW5pdCBoZWxwX2FjdGlvbiwgXCIgRGlzcGxheSB0aGlzIGxpc3Qgb2Ygb3B0aW9uc1wiXVxuICBhbmQgYWRkMiA9XG4gICAgdHJ5IGlnbm9yZSAoYXNzb2MzIFwiLS1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItLWhlbHBcIiwgVW5pdCBoZWxwX2FjdGlvbiwgXCIgRGlzcGxheSB0aGlzIGxpc3Qgb2Ygb3B0aW9uc1wiXVxuICBpblxuICBzcGVjbGlzdCBAIChhZGQxIEAgYWRkMilcblxuXG5sZXQgdXNhZ2VfYiBidWYgc3BlY2xpc3QgZXJybXNnID1cbiAgYnByaW50ZiBidWYgXCIlc1xcblwiIGVycm1zZztcbiAgTGlzdC5pdGVyIChwcmludF9zcGVjIGJ1ZikgKGFkZF9oZWxwIHNwZWNsaXN0KVxuXG5cbmxldCB1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICB1c2FnZV9iIGIgc3BlY2xpc3QgZXJybXNnO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCB1c2FnZSBzcGVjbGlzdCBlcnJtc2cgPVxuICBlcHJpbnRmIFwiJXNcIiAodXNhZ2Vfc3RyaW5nIHNwZWNsaXN0IGVycm1zZylcblxuXG5sZXQgY3VycmVudCA9IHJlZiAwXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChib29sX29mX3N0cmluZyB4KVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG5cbmxldCBpbnRfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgeClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggYWxsb3dfZXhwYW5kIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm1zZyA9XG4gIGxldCBpbml0cG9zID0gIWN1cnJlbnQgaW5cbiAgbGV0IGNvbnZlcnRfZXJyb3IgZXJyb3IgPVxuICAgICgqIGNvbnZlcnQgYW4gaW50ZXJuYWwgZXJyb3IgdG8gYSBCYWQvSGVscCBleGNlcHRpb25cbiAgICAgICAqb3IqIGFkZCB0aGUgcHJvZ3JhbSBuYW1lIGFzIGEgcHJlZml4IGFuZCB0aGUgdXNhZ2UgbWVzc2FnZSBhcyBhIHN1ZmZpeFxuICAgICAgIHRvIGFuIHVzZXItcmFpc2VkIEJhZCBleGNlcHRpb24uXG4gICAgKilcbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gICAgbGV0IHByb2duYW1lID1cbiAgICAgIGlmIGluaXRwb3MgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSB0aGVuICFhcmd2Lihpbml0cG9zKSBlbHNlIFwiKD8pXCIgaW5cbiAgICBiZWdpbiBtYXRjaCBlcnJvciB3aXRoXG4gICAgICB8IFVua25vd24gXCItaGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gXCItLWhlbHBcIiAtPiAoKVxuICAgICAgfCBVbmtub3duIHMgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogdW5rbm93biBvcHRpb24gJyVzJy5cXG5cIiBwcm9nbmFtZSBzXG4gICAgICB8IE1pc3NpbmcgcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiBvcHRpb24gJyVzJyBuZWVkcyBhbiBhcmd1bWVudC5cXG5cIiBwcm9nbmFtZSBzXG4gICAgICB8IFdyb25nIChvcHQsIGFyZywgZXhwZWN0ZWQpIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IHdyb25nIGFyZ3VtZW50ICclcyc7IG9wdGlvbiAnJXMnIGV4cGVjdHMgJXMuXFxuXCJcbiAgICAgICAgICAgICAgICAgIHByb2duYW1lIGFyZyBvcHQgZXhwZWN0ZWRcbiAgICAgIHwgTWVzc2FnZSBzIC0+ICgqIHVzZXIgZXJyb3IgbWVzc2FnZSAqKVxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiAlcy5cXG5cIiBwcm9nbmFtZSBzXG4gICAgZW5kO1xuICAgIHVzYWdlX2IgYiAhc3BlY2xpc3QgZXJybXNnO1xuICAgIGlmIGVycm9yID0gVW5rbm93biBcIi1oZWxwXCIgfHwgZXJyb3IgPSBVbmtub3duIFwiLS1oZWxwXCJcbiAgICB0aGVuIEhlbHAgKEJ1ZmZlci5jb250ZW50cyBiKVxuICAgIGVsc2UgQmFkIChCdWZmZXIuY29udGVudHMgYilcbiAgaW5cbiAgaW5jciBjdXJyZW50O1xuICB3aGlsZSAhY3VycmVudCA8IChBcnJheS5sZW5ndGggIWFyZ3YpIGRvXG4gICAgYmVnaW4gdHJ5XG4gICAgICBsZXQgcyA9ICFhcmd2LighY3VycmVudCkgaW5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggcyA+PSAxICYmIHMuWzBdID0gJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IGFjdGlvbiwgZm9sbG93ID1cbiAgICAgICAgICB0cnkgYXNzb2MzIHMgIXNwZWNsaXN0LCBOb25lXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBrZXl3b3JkLCBhcmcgPSBzcGxpdCBzIGluXG4gICAgICAgICAgICBhc3NvYzMga2V5d29yZCAhc3BlY2xpc3QsIFNvbWUgYXJnXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgKFN0b3AgKFVua25vd24gcykpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBub19hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIGFyZyAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJubyBhcmd1bWVudFwiKSkpIGluXG4gICAgICAgIGxldCBnZXRfYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBpZiAhY3VycmVudCArIDEgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSB0aGVuICFhcmd2LighY3VycmVudCArIDEpXG4gICAgICAgICAgICAgIGVsc2UgcmFpc2UgKFN0b3AgKE1pc3NpbmcgcykpXG4gICAgICAgICAgfCBTb21lIGFyZyAtPiBhcmdcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvbnN1bWVfYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpbmNyIGN1cnJlbnRcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIHRyZWF0X2FjdGlvbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVW5pdCBmIC0+IG5vX2FyZyAoKTsgZiAoKTtcbiAgICAgICAgfCBCb29sIGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBib29sX29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGJvb2xlYW5cIikpKVxuICAgICAgICAgICAgfCBTb21lIHMgLT4gZiBzXG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXQgciAtPiBub19hcmcgKCk7IHIgOj0gdHJ1ZTtcbiAgICAgICAgfCBDbGVhciByIC0+IG5vX2FyZyAoKTsgciA6PSBmYWxzZTtcbiAgICAgICAgfCBTdHJpbmcgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGYgYXJnO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU3ltYm9sIChzeW1iLCBmKSAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGlmIExpc3QubWVtIGFyZyBzeW1iIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAgZiBhcmc7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwib25lIG9mOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiAobWFrZV9zeW1saXN0IFwiXCIgXCIgXCIgXCJcIiBzeW1iKSkpKVxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgU2V0X3N0cmluZyByIC0+XG4gICAgICAgICAgICByIDo9IGdldF9hcmcgKCk7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBJbnQgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGludF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYW4gaW50ZWdlclwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiBmIHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldF9pbnQgciAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGludF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYW4gaW50ZWdlclwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiByIDo9IHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IEZsb2F0IGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBmbG9hdF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBmbG9hdFwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiBmIHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldF9mbG9hdCByIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZmxvYXRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgZmxvYXRcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gciA6PSB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBUdXBsZSBzcGVjcyAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgTGlzdC5pdGVyIHRyZWF0X2FjdGlvbiBzcGVjcztcbiAgICAgICAgfCBSZXN0IGYgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIHdoaWxlICFjdXJyZW50IDwgKEFycmF5Lmxlbmd0aCAhYXJndikgLSAxIGRvXG4gICAgICAgICAgICAgIGYgIWFyZ3YuKCFjdXJyZW50ICsgMSk7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgfCBSZXN0X2FsbCBmIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICB3aGlsZSAhY3VycmVudCA8IEFycmF5Lmxlbmd0aCAhYXJndiAtIDEgZG9cbiAgICAgICAgICAgICAgYWNjIDo9ICFhcmd2LighY3VycmVudCArIDEpIDo6ICFhY2M7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgIGYgKExpc3QucmV2ICFhY2MpXG4gICAgICAgIHwgRXhwYW5kIGYgLT5cbiAgICAgICAgICAgIGlmIG5vdCBhbGxvd19leHBhbmQgdGhlblxuICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkFyZy5FeHBhbmQgaXMgaXMgb25seSBhbGxvd2VkIHdpdGggXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZy5wYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY1wiKTtcbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBsZXQgbmV3YXJnID0gZiBhcmcgaW5cbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IEFycmF5LnN1YiAhYXJndiAwICghY3VycmVudCArIDEpXG4gICAgICAgICAgICBhbmQgYWZ0ZXIgPVxuICAgICAgICAgICAgICBBcnJheS5zdWIgIWFyZ3YgKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICgoQXJyYXkubGVuZ3RoICFhcmd2KSAtICFjdXJyZW50IC0gMSkgaW5cbiAgICAgICAgICAgIGFyZ3Y6PSBBcnJheS5jb25jYXQgW2JlZm9yZTtuZXdhcmc7YWZ0ZXJdO1xuICAgICAgICBpblxuICAgICAgICB0cmVhdF9hY3Rpb24gYWN0aW9uIGVuZFxuICAgICAgZWxzZSBhbm9uZnVuIHNcbiAgICB3aXRoIHwgQmFkIG0gLT4gcmFpc2UgKGNvbnZlcnRfZXJyb3IgKE1lc3NhZ2UgbSkpO1xuICAgICAgICAgfCBTdG9wIGUgLT4gcmFpc2UgKGNvbnZlcnRfZXJyb3IgZSk7XG4gICAgZW5kO1xuICAgIGluY3IgY3VycmVudFxuICBkb25lXG5cbmxldCBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggdHJ1ZSBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2dcblxubGV0IHBhcnNlX2FyZ3ZfZHluYW1pYyA/KGN1cnJlbnQ9Y3VycmVudCkgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCBmYWxzZSBjdXJyZW50IChyZWYgYXJndikgc3BlY2xpc3QgYW5vbmZ1blxuICAgIGVycm1zZ1xuXG5cbmxldCBwYXJzZV9hcmd2ID8oY3VycmVudD1jdXJyZW50KSBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYXJndl9keW5hbWljIH5jdXJyZW50OmN1cnJlbnQgYXJndiAocmVmIHNwZWNsaXN0KSBhbm9uZnVuIGVycm1zZ1xuXG5cbmxldCBwYXJzZSBsIGYgbXNnID1cbiAgdHJ5XG4gICAgcGFyc2VfYXJndiBTeXMuYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5cbmxldCBwYXJzZV9keW5hbWljIGwgZiBtc2cgPVxuICB0cnlcbiAgICBwYXJzZV9hcmd2X2R5bmFtaWMgU3lzLmFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxubGV0IHBhcnNlX2V4cGFuZCBsIGYgbXNnID1cbiAgdHJ5XG4gICAgbGV0IGFyZ3YgPSByZWYgU3lzLmFyZ3YgaW5cbiAgICBsZXQgc3BlYyA9IHJlZiBsIGluXG4gICAgbGV0IGN1cnJlbnQgPSByZWYgKCFjdXJyZW50KSBpblxuICAgIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIGN1cnJlbnQgYXJndiBzcGVjIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5cbmxldCBzZWNvbmRfd29yZCBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgbiA9XG4gICAgaWYgbiA+PSBsZW4gdGhlbiBsZW5cbiAgICBlbHNlIGlmIHMuW25dID0gJyAnIHRoZW4gbG9vcCAobisxKVxuICAgIGVsc2UgblxuICBpblxuICBtYXRjaCBTdHJpbmcuaW5kZXggcyAnXFx0JyB3aXRoXG4gIHwgbiAtPiBsb29wIChuKzEpXG4gIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggU3RyaW5nLmluZGV4IHMgJyAnIHdpdGhcbiAgICAgIHwgbiAtPiBsb29wIChuKzEpXG4gICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gbGVuXG4gICAgICBlbmRcblxuXG5sZXQgbWF4X2FyZ19sZW4gY3VyIChrd2QsIHNwZWMsIGRvYykgPVxuICBtYXRjaCBzcGVjIHdpdGhcbiAgfCBTeW1ib2wgXyAtPiBJbnQubWF4IGN1ciAoU3RyaW5nLmxlbmd0aCBrd2QpXG4gIHwgXyAtPiBJbnQubWF4IGN1ciAoU3RyaW5nLmxlbmd0aCBrd2QgKyBzZWNvbmRfd29yZCBkb2MpXG5cblxubGV0IHJlcGxhY2VfbGVhZGluZ190YWIgcyA9XG4gIGxldCBzZWVuID0gcmVmIGZhbHNlIGluXG4gIFN0cmluZy5tYXAgKGZ1bmN0aW9uICdcXHQnIHdoZW4gbm90ICFzZWVuIC0+IHNlZW4gOj0gdHJ1ZTsgJyAnIHwgYyAtPiBjKSBzXG5cbmxldCBhZGRfcGFkZGluZyBsZW4ga3NkID1cbiAgbWF0Y2gga3NkIHdpdGhcbiAgfCAoXywgXywgXCJcIikgLT5cbiAgICAgICgqIERvIG5vdCBwYWQgdW5kb2N1bWVudGVkIG9wdGlvbnMsIHNvIHRoYXQgdGhleSBzdGlsbCBkb24ndCBzaG93IHVwIHdoZW5cbiAgICAgICAqIHJ1biB0aHJvdWdoIFt1c2FnZV0gb3IgW3BhcnNlXS4gKilcbiAgICAgIGtzZFxuICB8IChrd2QsIChTeW1ib2wgXyBhcyBzcGVjKSwgbXNnKSAtPlxuICAgICAgbGV0IGN1dGNvbCA9IHNlY29uZF93b3JkIG1zZyBpblxuICAgICAgbGV0IHNwYWNlcyA9IFN0cmluZy5tYWtlICgoSW50Lm1heCAwIChsZW4gLSBjdXRjb2wpKSArIDMpICcgJyBpblxuICAgICAgKGt3ZCwgc3BlYywgXCJcXG5cIiBeIHNwYWNlcyBeIHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKVxuICB8IChrd2QsIHNwZWMsIG1zZykgLT5cbiAgICAgIGxldCBjdXRjb2wgPSBzZWNvbmRfd29yZCBtc2cgaW5cbiAgICAgIGxldCBrd2RfbGVuID0gU3RyaW5nLmxlbmd0aCBrd2QgaW5cbiAgICAgIGxldCBkaWZmID0gbGVuIC0ga3dkX2xlbiAtIGN1dGNvbCBpblxuICAgICAgaWYgZGlmZiA8PSAwIHRoZW5cbiAgICAgICAgKGt3ZCwgc3BlYywgcmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBzcGFjZXMgPSBTdHJpbmcubWFrZSBkaWZmICcgJyBpblxuICAgICAgICBsZXQgcHJlZml4ID0gU3RyaW5nLnN1YiAocmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpIDAgY3V0Y29sIGluXG4gICAgICAgIGxldCBzdWZmaXggPSBTdHJpbmcuc3ViIG1zZyBjdXRjb2wgKFN0cmluZy5sZW5ndGggbXNnIC0gY3V0Y29sKSBpblxuICAgICAgICAoa3dkLCBzcGVjLCBwcmVmaXggXiBzcGFjZXMgXiBzdWZmaXgpXG5cblxubGV0IGFsaWduID8obGltaXQ9bWF4X2ludCkgc3BlY2xpc3QgPVxuICBsZXQgY29tcGxldGVkID0gYWRkX2hlbHAgc3BlY2xpc3QgaW5cbiAgbGV0IGxlbiA9IExpc3QuZm9sZF9sZWZ0IG1heF9hcmdfbGVuIDAgY29tcGxldGVkIGluXG4gIGxldCBsZW4gPSBJbnQubWluIGxlbiBsaW1pdCBpblxuICBMaXN0Lm1hcCAoYWRkX3BhZGRpbmcgbGVuKSBjb21wbGV0ZWRcblxubGV0IHRyaW1fY3IgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgbGVuID4gMCAmJiBTdHJpbmcuZ2V0IHMgKGxlbiAtIDEpID0gJ1xccicgdGhlblxuICAgIFN0cmluZy5zdWIgcyAwIChsZW4gLSAxKVxuICBlbHNlXG4gICAgc1xuXG5sZXQgcmVhZF9hdXggdHJpbSBzZXAgZmlsZSA9XG4gIGxldCBpYyA9IG9wZW5faW5fYmluIGZpbGUgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gIGxldCB3b3JkcyA9IHJlZiBbXSBpblxuICBsZXQgc3Rhc2ggKCkgPVxuICAgIGxldCB3b3JkID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIGxldCB3b3JkID0gaWYgdHJpbSB0aGVuIHRyaW1fY3Igd29yZCBlbHNlIHdvcmQgaW5cbiAgICB3b3JkcyA6PSB3b3JkIDo6ICF3b3JkcztcbiAgICBCdWZmZXIuY2xlYXIgYnVmXG4gIGluXG4gIGJlZ2luXG4gICAgdHJ5IHdoaWxlIHRydWUgZG9cbiAgICAgICAgbGV0IGMgPSBpbnB1dF9jaGFyIGljIGluXG4gICAgICAgIGlmIGMgPSBzZXAgdGhlbiBzdGFzaCAoKSBlbHNlIEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICAgICAgZG9uZVxuICAgIHdpdGggRW5kX29mX2ZpbGUgLT4gKClcbiAgZW5kO1xuICBpZiBCdWZmZXIubGVuZ3RoIGJ1ZiA+IDAgdGhlbiBzdGFzaCAoKTtcbiAgY2xvc2VfaW4gaWM7XG4gIEFycmF5Lm9mX2xpc3QgKExpc3QucmV2ICF3b3JkcylcblxubGV0IHJlYWRfYXJnID0gcmVhZF9hdXggdHJ1ZSAnXFxuJ1xuXG5sZXQgcmVhZF9hcmcwID0gcmVhZF9hdXggZmFsc2UgJ1xceDAwJ1xuXG5sZXQgd3JpdGVfYXV4IHNlcCBmaWxlIGFyZ3MgPVxuICBsZXQgb2MgPSBvcGVuX291dF9iaW4gZmlsZSBpblxuICBBcnJheS5pdGVyIChmdW4gcyAtPiBmcHJpbnRmIG9jIFwiJXMlY1wiIHMgc2VwKSBhcmdzO1xuICBjbG9zZV9vdXQgb2NcblxubGV0IHdyaXRlX2FyZyA9IHdyaXRlX2F1eCAnXFxuJ1xuXG5sZXQgd3JpdGVfYXJnMCA9IHdyaXRlX2F1eCAnXFx4MDAnXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gUHJpbnRmXG5cbnR5cGUgdCA9IGV4biA9IC4uXG5cbmxldCBwcmludGVycyA9IEF0b21pYy5tYWtlIFtdXG5cbmxldCBsb2NmbXQgPSBmb3JtYXRfb2Zfc3RyaW5nIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkOiAlc1wiXG5cbmxldCBmaWVsZCB4IGkgPVxuICBsZXQgZiA9IE9iai5maWVsZCB4IGkgaW5cbiAgaWYgbm90IChPYmouaXNfYmxvY2sgZikgdGhlblxuICAgIHNwcmludGYgXCIlZFwiIChPYmoubWFnaWMgZiA6IGludCkgICAgICAgICAgICgqIGNhbiBhbHNvIGJlIGEgY2hhciAqKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5zdHJpbmdfdGFnIHRoZW5cbiAgICBzcHJpbnRmIFwiJVNcIiAoT2JqLm1hZ2ljIGYgOiBzdHJpbmcpXG4gIGVsc2UgaWYgT2JqLnRhZyBmID0gT2JqLmRvdWJsZV90YWcgdGhlblxuICAgIHN0cmluZ19vZl9mbG9hdCAoT2JqLm1hZ2ljIGYgOiBmbG9hdClcbiAgZWxzZVxuICAgIFwiX1wiXG5cbmxldCByZWMgb3RoZXJfZmllbGRzIHggaSA9XG4gIGlmIGkgPj0gT2JqLnNpemUgeCB0aGVuIFwiXCJcbiAgZWxzZSBzcHJpbnRmIFwiLCAlcyVzXCIgKGZpZWxkIHggaSkgKG90aGVyX2ZpZWxkcyB4IChpKzEpKVxuXG5sZXQgZmllbGRzIHggPVxuICBtYXRjaCBPYmouc2l6ZSB4IHdpdGhcbiAgfCAwIC0+IFwiXCJcbiAgfCAxIC0+IFwiXCJcbiAgfCAyIC0+IHNwcmludGYgXCIoJXMpXCIgKGZpZWxkIHggMSlcbiAgfCBfIC0+IHNwcmludGYgXCIoJXMlcylcIiAoZmllbGQgeCAxKSAob3RoZXJfZmllbGRzIHggMilcblxubGV0IHVzZV9wcmludGVycyB4ID1cbiAgbGV0IHJlYyBjb252ID0gZnVuY3Rpb25cbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCBoZCB4IHdpdGhcbiAgICAgICAgIHwgTm9uZSB8IGV4Y2VwdGlvbiBfIC0+IGNvbnYgdGxcbiAgICAgICAgIHwgU29tZSBzIC0+IFNvbWUgcylcbiAgICB8IFtdIC0+IE5vbmUgaW5cbiAgY29udiAoQXRvbWljLmdldCBwcmludGVycylcblxubGV0IHRvX3N0cmluZ19kZWZhdWx0ID0gZnVuY3Rpb25cbiAgfCBPdXRfb2ZfbWVtb3J5IC0+IFwiT3V0IG9mIG1lbW9yeVwiXG4gIHwgU3RhY2tfb3ZlcmZsb3cgLT4gXCJTdGFjayBvdmVyZmxvd1wiXG4gIHwgTWF0Y2hfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNSkgXCJQYXR0ZXJuIG1hdGNoaW5nIGZhaWxlZFwiXG4gIHwgQXNzZXJ0X2ZhaWx1cmUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiQXNzZXJ0aW9uIGZhaWxlZFwiXG4gIHwgVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiVW5kZWZpbmVkIHJlY3Vyc2l2ZSBtb2R1bGVcIlxuICB8IHggLT5cbiAgICAgIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICAgICAgaWYgT2JqLnRhZyB4IDw+IDAgdGhlblxuICAgICAgICAoT2JqLm1hZ2ljIChPYmouZmllbGQgeCAwKSA6IHN0cmluZylcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNvbnN0cnVjdG9yID1cbiAgICAgICAgICAoT2JqLm1hZ2ljIChPYmouZmllbGQgKE9iai5maWVsZCB4IDApIDApIDogc3RyaW5nKSBpblxuICAgICAgICBjb25zdHJ1Y3RvciBeIChmaWVsZHMgeClcblxubGV0IHRvX3N0cmluZyBlID1cbiAgbWF0Y2ggdXNlX3ByaW50ZXJzIGUgd2l0aFxuICB8IFNvbWUgcyAtPiBzXG4gIHwgTm9uZSAtPiB0b19zdHJpbmdfZGVmYXVsdCBlXG5cbmxldCBwcmludCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZmx1c2ggc3RkZXJyO1xuICAgIHJhaXNlIHhcblxubGV0IGNhdGNoIGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGZsdXNoIHN0ZG91dDtcbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZXhpdCAyXG5cbnR5cGUgcmF3X2JhY2t0cmFjZV9zbG90XG50eXBlIHJhd19iYWNrdHJhY2VfZW50cnkgPSBwcml2YXRlIGludFxudHlwZSByYXdfYmFja3RyYWNlID0gcmF3X2JhY2t0cmFjZV9lbnRyeSBhcnJheVxuXG5sZXQgcmF3X2JhY2t0cmFjZV9lbnRyaWVzIGJ0ID0gYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2U6XG4gIHVuaXQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2VcIlxuXG5leHRlcm5hbCByYWlzZV93aXRoX2JhY2t0cmFjZTogZXhuIC0+IHJhd19iYWNrdHJhY2UgLT4gJ2FcbiAgPSBcIiVyYWlzZV93aXRoX2JhY2t0cmFjZVwiXG5cbnR5cGUgYmFja3RyYWNlX3Nsb3QgPVxuICB8IEtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlICAgIDogYm9vbDtcbiAgICAgIGZpbGVuYW1lICAgIDogc3RyaW5nO1xuICAgICAgbGluZV9udW1iZXIgOiBpbnQ7XG4gICAgICBzdGFydF9jaGFyICA6IGludDtcbiAgICAgIGVuZF9jaGFyICAgIDogaW50O1xuICAgICAgaXNfaW5saW5lICAgOiBib29sO1xuICAgICAgZGVmbmFtZSAgICAgOiBzdHJpbmc7XG4gICAgfVxuICB8IFVua25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgOiBib29sXG4gICAgfVxuXG4oKiB0byBhdm9pZCB3YXJuaW5nICopXG5sZXQgXyA9IFtLbm93bl9sb2NhdGlvbiB7IGlzX3JhaXNlID0gZmFsc2U7IGZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXIgPSAwOyBzdGFydF9jaGFyID0gMDsgZW5kX2NoYXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpc19pbmxpbmUgPSBmYWxzZTsgZGVmbmFtZSA9IFwiXCIgfTtcbiAgICAgICAgIFVua25vd25fbG9jYXRpb24geyBpc19yYWlzZSA9IGZhbHNlIH1dXG5cbmV4dGVybmFsIGNvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90OlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gYmFja3RyYWNlX3Nsb3QgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2U6XG4gIHJhd19iYWNrdHJhY2UgLT4gYmFja3RyYWNlX3Nsb3QgYXJyYXkgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlXCJcblxubGV0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSBidCA9XG4gIHRyeSBTb21lIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBwb3Mgc2xvdCA9XG4gIGxldCBpbmZvIGlzX3JhaXNlID1cbiAgICBpZiBpc19yYWlzZSB0aGVuXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYXRcIiBlbHNlIFwiUmUtcmFpc2VkIGF0XCJcbiAgICBlbHNlXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYnkgcHJpbWl0aXZlIG9wZXJhdGlvbiBhdFwiIGVsc2UgXCJDYWxsZWQgZnJvbVwiXG4gIGluXG4gIG1hdGNoIHNsb3Qgd2l0aFxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgaWYgbC5pc19yYWlzZSB0aGVuXG4gICAgICAgICgqIGNvbXBpbGVyLWluc2VydGVkIHJlLXJhaXNlLCBza2lwcGVkICopIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgU29tZSAoc3ByaW50ZiBcIiVzIHVua25vd24gbG9jYXRpb25cIiAoaW5mbyBmYWxzZSkpXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgU29tZSAoc3ByaW50ZiBcIiVzICVzIGluIGZpbGUgXFxcIiVzXFxcIiVzLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgKGluZm8gbC5pc19yYWlzZSkgbC5kZWZuYW1lIGwuZmlsZW5hbWVcbiAgICAgICAgICAgICAgKGlmIGwuaXNfaW5saW5lIHRoZW4gXCIgKGlubGluZWQpXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICBsLmxpbmVfbnVtYmVyIGwuc3RhcnRfY2hhciBsLmVuZF9jaGFyKVxuXG5sZXQgcHJpbnRfZXhjZXB0aW9uX2JhY2t0cmFjZSBvdXRjaGFuIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgZnByaW50ZiBvdXRjaGFuXG4gICAgICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgIG1hdGNoIGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBpIGEuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc3RyIC0+IGZwcmludGYgb3V0Y2hhbiBcIiVzXFxuXCIgc3RyXG4gICAgICBkb25lXG5cbmxldCBwcmludF9yYXdfYmFja3RyYWNlIG91dGNoYW4gcmF3X2JhY2t0cmFjZSA9XG4gIHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOiBwcmludHMgdGhlIGdsb2JhbCBjdXJyZW50IGJhY2t0cmFjZSAqKVxubGV0IHByaW50X2JhY2t0cmFjZSBvdXRjaGFuID1cbiAgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxubGV0IGJhY2t0cmFjZV90b19zdHJpbmcgYmFja3RyYWNlID1cbiAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBicHJpbnRmIGIgXCIlc1xcblwiIHN0clxuICAgICAgZG9uZTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCByYXdfYmFja3RyYWNlX3RvX3N0cmluZyByYXdfYmFja3RyYWNlID1cbiAgYmFja3RyYWNlX3RvX3N0cmluZyAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfcmFpc2VcblxubGV0IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX2lubGluZVxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBmYWxzZVxuXG50eXBlIGxvY2F0aW9uID0ge1xuICBmaWxlbmFtZSA6IHN0cmluZztcbiAgbGluZV9udW1iZXIgOiBpbnQ7XG4gIHN0YXJ0X2NoYXIgOiBpbnQ7XG4gIGVuZF9jaGFyIDogaW50O1xufVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfbG9jYXRpb24gPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgIFNvbWUge1xuICAgICAgZmlsZW5hbWUgICAgPSBsLmZpbGVuYW1lO1xuICAgICAgbGluZV9udW1iZXIgPSBsLmxpbmVfbnVtYmVyO1xuICAgICAgc3RhcnRfY2hhciAgPSBsLnN0YXJ0X2NoYXI7XG4gICAgICBlbmRfY2hhciAgICA9IGwuZW5kX2NoYXI7XG4gICAgfVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfXG4gIHwgS25vd25fbG9jYXRpb24geyBkZWZuYW1lID0gXCJcIiB9IC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IFNvbWUgbC5kZWZuYW1lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHMgcmF3X2JhY2t0cmFjZSA9XG4gICgqIFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0aGF0IFNvbWUgaXNcbiAgICAgcmV0dXJuZWQgb25seSBpZiBhIHBhcnQgb2YgdGhlIHRyYWNlIGlzIHVzYWJsZS4gVGhpcyBnaXZlcyB1c1xuICAgICBhIGJpdCBtb3JlIHdvcmsgdGhhbiBqdXN0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSwgYnV0IGl0IG1ha2VzIHRoZVxuICAgICBBUEkgbW9yZSB1c2VyLWZyaWVuZGx5IC0tIG90aGVyd2lzZSBtb3N0IHVzZXJzIHdvdWxkIGhhdmUgdG9cbiAgICAgcmVpbXBsZW1lbnQgdGhlIFwiUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIHNvcnJ5XCIgbG9naWNcbiAgICAgdGhlbXNlbHZlcy4gKilcbiAgbWF0Y2ggY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGJhY2t0cmFjZSAtPlxuICAgICAgbGV0IHVzYWJsZV9zbG90ID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgfCBLbm93bl9sb2NhdGlvbiBfIC0+IHRydWUgaW5cbiAgICAgIGxldCByZWMgZXhpc3RzX3VzYWJsZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKC0xKSAtPiBmYWxzZVxuICAgICAgICB8IGkgLT4gdXNhYmxlX3Nsb3QgYmFja3RyYWNlLihpKSB8fCBleGlzdHNfdXNhYmxlIChpIC0gMSkgaW5cbiAgICAgIGlmIGV4aXN0c191c2FibGUgKEFycmF5Lmxlbmd0aCBiYWNrdHJhY2UgLSAxKVxuICAgICAgdGhlbiBTb21lIGJhY2t0cmFjZVxuICAgICAgZWxzZSBOb25lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IGVudHJ5ID1cbiAgYmFja3RyYWNlX3Nsb3RzIFt8IGVudHJ5IHxdXG5cbm1vZHVsZSBTbG90ID0gc3RydWN0XG4gIHR5cGUgdCA9IGJhY2t0cmFjZV9zbG90XG4gIGxldCBmb3JtYXQgPSBmb3JtYXRfYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGlzX3JhaXNlID0gYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2VcbiAgbGV0IGlzX2lubGluZSA9IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZVxuICBsZXQgbG9jYXRpb24gPSBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvblxuICBsZXQgbmFtZSA9IGJhY2t0cmFjZV9zbG90X2RlZm5hbWVcbmVuZFxuXG5sZXQgcmF3X2JhY2t0cmFjZV9sZW5ndGggYnQgPSBBcnJheS5sZW5ndGggYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2UgLT4gaW50IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QgOlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gcmF3X2JhY2t0cmFjZV9zbG90IG9wdGlvblxuICA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFwiXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOlxuICAgcmV0dXJucyB0aGUgKnN0cmluZyogY29ycmVzcG9uZGluZyB0byB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgZ2V0X2JhY2t0cmFjZSAoKSA9IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxuZXh0ZXJuYWwgcmVjb3JkX2JhY2t0cmFjZTogYm9vbCAtPiB1bml0ID0gXCJjYW1sX3JlY29yZF9iYWNrdHJhY2VcIlxuZXh0ZXJuYWwgYmFja3RyYWNlX3N0YXR1czogdW5pdCAtPiBib29sID0gXCJjYW1sX2JhY2t0cmFjZV9zdGF0dXNcIlxuXG5sZXQgcmVjIHJlZ2lzdGVyX3ByaW50ZXIgZm4gPVxuICBsZXQgb2xkX3ByaW50ZXJzID0gQXRvbWljLmdldCBwcmludGVycyBpblxuICBsZXQgbmV3X3ByaW50ZXJzID0gZm4gOjogb2xkX3ByaW50ZXJzIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwcmludGVycyBvbGRfcHJpbnRlcnMgbmV3X3ByaW50ZXJzIGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gcmVnaXN0ZXJfcHJpbnRlciBmblxuXG5leHRlcm5hbCBnZXRfY2FsbHN0YWNrOiBpbnQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2tcIlxuXG5sZXQgZXhuX3Nsb3QgeCA9XG4gIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmoudGFnIHggPSAwIHRoZW4gT2JqLmZpZWxkIHggMCBlbHNlIHhcblxubGV0IGV4bl9zbG90X2lkIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDEpIDogaW50KVxuXG5sZXQgZXhuX3Nsb3RfbmFtZSB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAwKSA6IHN0cmluZylcblxuZXh0ZXJuYWwgZ2V0X2RlYnVnX2luZm9fc3RhdHVzIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXNcIlxuXG4oKiBEZXNjcmlwdGlvbnMgZm9yIGVycm9ycyBpbiBzdGFydHVwLmguIFNlZSBhbHNvIGJhY2t0cmFjZS5jICopXG5sZXQgZXJyb3JzID0gW3wgXCJcIjtcbiAgKCogRklMRV9OT1RfRk9VTkQgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIG5vdCBmb3VuZClcIjtcbiAgKCogQkFEX0JZVEVDT0RFICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQpXCI7XG4gICgqIFdST05HX01BR0lDICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBoYXMgd3JvbmcgbWFnaWMgbnVtYmVyKVwiO1xuICAoKiBOT19GRFMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQ7XFxuIFxcXG4gICAgICAtLSB0b28gbWFueSBvcGVuIGZpbGVzLiBUcnkgcnVubmluZyB3aXRoIE9DQU1MUlVOUEFSQU09Yj0yKVwiXG58XVxuXG5sZXQgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZSA9XG4gIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICBsZXQgc3RhdHVzID0gZ2V0X2RlYnVnX2luZm9fc3RhdHVzICgpIGluXG4gIGlmIHN0YXR1cyA8IDAgdGhlblxuICAgIHByZXJyX2VuZGxpbmUgZXJyb3JzLihhYnMgc3RhdHVzKTtcbiAgZmx1c2ggc3RkZXJyXG5cbmxldCB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA9IHJlZiBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyXG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZm4gPSB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA6PSBmblxuXG5sZXQgZW1wdHlfYmFja3RyYWNlIDogcmF3X2JhY2t0cmFjZSA9IFt8IHxdXG5cbmxldCB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgPVxuICB0cnlcbiAgICBnZXRfcmF3X2JhY2t0cmFjZSAoKVxuICB3aXRoIF8gKCogT3V0X29mX21lbW9yeT8gKikgLT5cbiAgICBlbXB0eV9iYWNrdHJhY2VcblxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICAoKiBHZXQgdGhlIGJhY2t0cmFjZSBub3csIGluIGNhc2Ugb25lIG9mIHRoZSBbYXRfZXhpdF0gZnVuY3Rpb25cbiAgICAgICBkZXN0cm95cyBpdC4gKilcbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9XG4gICAgICBpZiBkZWJ1Z2dlcl9pbl91c2UgKCogU2FtZSB0ZXN0IGFzIGluIFtydW50aW1lL3ByaW50ZXhjLmNdICopIHRoZW5cbiAgICAgICAgZW1wdHlfYmFja3RyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKVxuICAgIGluXG4gICAgKHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgIHRyeVxuICAgICAgIXVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlXG4gICAgd2l0aCBleG4nIC0+XG4gICAgICBsZXQgcmF3X2JhY2t0cmFjZScgPSB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvciBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlcjogZXhjZXB0aW9uICVzXFxuXCJcbiAgICAgICAgKHRvX3N0cmluZyBleG4nKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2UnO1xuICAgICAgZmx1c2ggc3RkZXJyXG4gIHdpdGhcbiAgICB8IE91dF9vZl9tZW1vcnkgLT5cbiAgICAgICAgcHJlcnJfZW5kbGluZVxuICAgICAgICAgIFwiRmF0YWwgZXJyb3I6IG91dCBvZiBtZW1vcnkgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXJcIlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBbY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25dIGluXG4gICBbcnVudGltZS9wcmludGV4Yy5jXSB3aGljaCBleHBlY3RzIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZVxuICB3aXRoIF8gLT5cbiAgICAoKiBUaGVyZSBpcyBub3QgbXVjaCB3ZSBjYW4gZG8gYXQgdGhpcyBwb2ludCAqKVxuICAgICgpXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIlxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgaWQgOiAnYSAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmxldCBjb25zdCBjIF8gPSBjXG5sZXQgZmxpcCBmIHggeSA9IGYgeSB4XG5sZXQgbmVnYXRlIHAgdiA9IG5vdCAocCB2KVxuXG5leGNlcHRpb24gRmluYWxseV9yYWlzZWQgb2YgZXhuXG5cbmxldCAoKSA9IFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgQEAgZnVuY3Rpb25cbnwgRmluYWxseV9yYWlzZWQgZXhuIC0+IFNvbWUgKFwiRnVuLkZpbmFsbHlfcmFpc2VkOiBcIiBeIFByaW50ZXhjLnRvX3N0cmluZyBleG4pXG58IF8gLT4gTm9uZVxuXG5sZXQgcHJvdGVjdCB+KGZpbmFsbHkgOiB1bml0IC0+IHVuaXQpIHdvcmsgPVxuICBsZXQgZmluYWxseV9ub19leG4gKCkgPVxuICAgIHRyeSBmaW5hbGx5ICgpIHdpdGggZSAtPlxuICAgICAgbGV0IGJ0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIChGaW5hbGx5X3JhaXNlZCBlKSBidFxuICBpblxuICBtYXRjaCB3b3JrICgpIHdpdGhcbiAgfCByZXN1bHQgLT4gZmluYWxseV9ub19leG4gKCkgOyByZXN1bHRcbiAgfCBleGNlcHRpb24gd29ya19leG4gLT5cbiAgICAgIGxldCB3b3JrX2J0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGZpbmFsbHlfbm9fZXhuICgpIDtcbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIHdvcmtfZXhuIHdvcmtfYnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSmFjcXVlcy1IZW5yaSBKb3VyZGFuLCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUGFyaXMgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYtMjAxNiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlICAgKilcbigqICAgICBldCBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzdGF0ID0ge1xuICBtaW5vcl93b3JkcyA6IGZsb2F0O1xuICBwcm9tb3RlZF93b3JkcyA6IGZsb2F0O1xuICBtYWpvcl93b3JkcyA6IGZsb2F0O1xuICBtaW5vcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnQ7XG4gIGhlYXBfd29yZHMgOiBpbnQ7XG4gIGhlYXBfY2h1bmtzIDogaW50O1xuICBsaXZlX3dvcmRzIDogaW50O1xuICBsaXZlX2Jsb2NrcyA6IGludDtcbiAgZnJlZV93b3JkcyA6IGludDtcbiAgZnJlZV9ibG9ja3MgOiBpbnQ7XG4gIGxhcmdlc3RfZnJlZSA6IGludDtcbiAgZnJhZ21lbnRzIDogaW50O1xuICBjb21wYWN0aW9ucyA6IGludDtcbiAgdG9wX2hlYXBfd29yZHMgOiBpbnQ7XG4gIHN0YWNrX3NpemUgOiBpbnQ7XG4gIGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogaW50O1xufVxuXG50eXBlIGNvbnRyb2wgPSB7XG4gIG11dGFibGUgbWlub3JfaGVhcF9zaXplIDogaW50O1xuICBtdXRhYmxlIG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50O1xuICBtdXRhYmxlIHNwYWNlX292ZXJoZWFkIDogaW50O1xuICBtdXRhYmxlIHZlcmJvc2UgOiBpbnQ7XG4gIG11dGFibGUgbWF4X292ZXJoZWFkIDogaW50O1xuICBtdXRhYmxlIHN0YWNrX2xpbWl0IDogaW50O1xuICBtdXRhYmxlIGFsbG9jYXRpb25fcG9saWN5IDogaW50O1xuICB3aW5kb3dfc2l6ZSA6IGludDtcbiAgY3VzdG9tX21ham9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnQ7XG4gIGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludDtcbn1cblxuZXh0ZXJuYWwgc3RhdCA6IHVuaXQgLT4gc3RhdCA9IFwiY2FtbF9nY19zdGF0XCJcbmV4dGVybmFsIHF1aWNrX3N0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2NfcXVpY2tfc3RhdFwiXG5leHRlcm5hbCBjb3VudGVycyA6IHVuaXQgLT4gKGZsb2F0ICogZmxvYXQgKiBmbG9hdCkgPSBcImNhbWxfZ2NfY291bnRlcnNcIlxuZXh0ZXJuYWwgbWlub3Jfd29yZHMgOiB1bml0IC0+IChmbG9hdCBbQHVuYm94ZWRdKVxuICA9IFwiY2FtbF9nY19taW5vcl93b3Jkc1wiIFwiY2FtbF9nY19taW5vcl93b3Jkc191bmJveGVkXCJcbmV4dGVybmFsIGdldCA6IHVuaXQgLT4gY29udHJvbCA9IFwiY2FtbF9nY19nZXRcIlxuZXh0ZXJuYWwgc2V0IDogY29udHJvbCAtPiB1bml0ID0gXCJjYW1sX2djX3NldFwiXG5leHRlcm5hbCBtaW5vciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19taW5vclwiXG5leHRlcm5hbCBtYWpvcl9zbGljZSA6IGludCAtPiBpbnQgPSBcImNhbWxfZ2NfbWFqb3Jfc2xpY2VcIlxuZXh0ZXJuYWwgbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWFqb3JcIlxuZXh0ZXJuYWwgZnVsbF9tYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19mdWxsX21ham9yXCJcbmV4dGVybmFsIGNvbXBhY3QgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfY29tcGFjdGlvblwiXG5leHRlcm5hbCBnZXRfbWlub3JfZnJlZSA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2dldF9taW5vcl9mcmVlXCJcbmV4dGVybmFsIGdldF9idWNrZXQgOiBpbnQgLT4gaW50ID0gXCJjYW1sX2dldF9tYWpvcl9idWNrZXRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZ2V0X2NyZWRpdCA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2dldF9tYWpvcl9jcmVkaXRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHVnZV9mYWxsYmFja19jb3VudCA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnRcIlxuZXh0ZXJuYWwgZXZlbnRsb2dfcGF1c2UgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZXZlbnRsb2dfcGF1c2VcIlxuZXh0ZXJuYWwgZXZlbnRsb2dfcmVzdW1lIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2V2ZW50bG9nX3Jlc3VtZVwiXG5cbm9wZW4gUHJpbnRmXG5cbmxldCBwcmludF9zdGF0IGMgPVxuICBsZXQgc3QgPSBzdGF0ICgpIGluXG4gIGZwcmludGYgYyBcIm1pbm9yX2NvbGxlY3Rpb25zOiAgICAgICVkXFxuXCIgc3QubWlub3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcIm1ham9yX2NvbGxlY3Rpb25zOiAgICAgICVkXFxuXCIgc3QubWFqb3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcImNvbXBhY3Rpb25zOiAgICAgICAgICAgICVkXFxuXCIgc3QuY29tcGFjdGlvbnM7XG4gIGZwcmludGYgYyBcImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogJWRcXG5cIiBzdC5mb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBsZXQgbDEgPSBTdHJpbmcubGVuZ3RoIChzcHJpbnRmIFwiJS4wZlwiIHN0Lm1pbm9yX3dvcmRzKSBpblxuICBmcHJpbnRmIGMgXCJtaW5vcl93b3JkczogICAgJSouMGZcXG5cIiBsMSBzdC5taW5vcl93b3JkcztcbiAgZnByaW50ZiBjIFwicHJvbW90ZWRfd29yZHM6ICUqLjBmXFxuXCIgbDEgc3QucHJvbW90ZWRfd29yZHM7XG4gIGZwcmludGYgYyBcIm1ham9yX3dvcmRzOiAgICAlKi4wZlxcblwiIGwxIHN0Lm1ham9yX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgbGV0IGwyID0gU3RyaW5nLmxlbmd0aCAoc3ByaW50ZiBcIiVkXCIgc3QudG9wX2hlYXBfd29yZHMpIGluXG4gIGZwcmludGYgYyBcInRvcF9oZWFwX3dvcmRzOiAlKmRcXG5cIiBsMiBzdC50b3BfaGVhcF93b3JkcztcbiAgZnByaW50ZiBjIFwiaGVhcF93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmhlYXBfd29yZHM7XG4gIGZwcmludGYgYyBcImxpdmVfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5saXZlX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJmcmVlX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QuZnJlZV93b3JkcztcbiAgZnByaW50ZiBjIFwibGFyZ2VzdF9mcmVlOiAgICUqZFxcblwiIGwyIHN0Lmxhcmdlc3RfZnJlZTtcbiAgZnByaW50ZiBjIFwiZnJhZ21lbnRzOiAgICAgICUqZFxcblwiIGwyIHN0LmZyYWdtZW50cztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGZwcmludGYgYyBcImxpdmVfYmxvY2tzOiAlZFxcblwiIHN0LmxpdmVfYmxvY2tzO1xuICBmcHJpbnRmIGMgXCJmcmVlX2Jsb2NrczogJWRcXG5cIiBzdC5mcmVlX2Jsb2NrcztcbiAgZnByaW50ZiBjIFwiaGVhcF9jaHVua3M6ICVkXFxuXCIgc3QuaGVhcF9jaHVua3NcblxuXG5sZXQgYWxsb2NhdGVkX2J5dGVzICgpID1cbiAgbGV0IChtaSwgcHJvLCBtYSkgPSBjb3VudGVycyAoKSBpblxuICAobWkgKy4gbWEgLS4gcHJvKSAqLiBmbG9hdF9vZl9pbnQgKFN5cy53b3JkX3NpemUgLyA4KVxuXG5cbmV4dGVybmFsIGZpbmFsaXNlIDogKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfZmluYWxfcmVnaXN0ZXJcIlxuZXh0ZXJuYWwgZmluYWxpc2VfbGFzdCA6ICh1bml0IC0+IHVuaXQpIC0+ICdhIC0+IHVuaXQgPVxuICBcImNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWVcIlxuZXh0ZXJuYWwgZmluYWxpc2VfcmVsZWFzZSA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9maW5hbF9yZWxlYXNlXCJcblxuXG50eXBlIGFsYXJtID0gYm9vbCByZWZcbnR5cGUgYWxhcm1fcmVjID0ge2FjdGl2ZSA6IGFsYXJtOyBmIDogdW5pdCAtPiB1bml0fVxuXG5sZXQgcmVjIGNhbGxfYWxhcm0gYXJlYyA9XG4gIGlmICEoYXJlYy5hY3RpdmUpIHRoZW4gYmVnaW5cbiAgICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gICAgYXJlYy5mICgpO1xuICBlbmRcblxuXG5sZXQgY3JlYXRlX2FsYXJtIGYgPVxuICBsZXQgYXJlYyA9IHsgYWN0aXZlID0gcmVmIHRydWU7IGYgPSBmIH0gaW5cbiAgZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjO1xuICBhcmVjLmFjdGl2ZVxuXG5cbmxldCBkZWxldGVfYWxhcm0gYSA9IGEgOj0gZmFsc2VcblxubW9kdWxlIE1lbXByb2YgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGFsbG9jYXRpb25fc291cmNlID0gTm9ybWFsIHwgTWFyc2hhbCB8IEN1c3RvbVxuICAgIHR5cGUgYWxsb2NhdGlvbiA9XG4gICAgICB7IG5fc2FtcGxlcyA6IGludDtcbiAgICAgICAgc2l6ZSA6IGludDtcbiAgICAgICAgc291cmNlIDogYWxsb2NhdGlvbl9zb3VyY2U7XG4gICAgICAgIGNhbGxzdGFjayA6IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgfVxuXG4gICAgdHlwZSAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgPSB7XG4gICAgICBhbGxvY19taW5vcjogYWxsb2NhdGlvbiAtPiAnbWlub3Igb3B0aW9uO1xuICAgICAgYWxsb2NfbWFqb3I6IGFsbG9jYXRpb24gLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIHByb21vdGU6ICdtaW5vciAtPiAnbWFqb3Igb3B0aW9uO1xuICAgICAgZGVhbGxvY19taW5vcjogJ21pbm9yIC0+IHVuaXQ7XG4gICAgICBkZWFsbG9jX21ham9yOiAnbWFqb3IgLT4gdW5pdDtcbiAgICB9XG5cbiAgICBsZXQgbnVsbF90cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBhbGxvY19tYWpvciA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIHByb21vdGUgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBkZWFsbG9jX21pbm9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICAgIGRlYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gKCkpO1xuICAgIH1cblxuICAgIGV4dGVybmFsIGNfc3RhcnQgOlxuICAgICAgZmxvYXQgLT4gaW50IC0+ICgnbWlub3IsICdtYWpvcikgdHJhY2tlciAtPiB1bml0XG4gICAgICA9IFwiY2FtbF9tZW1wcm9mX3N0YXJ0XCJcblxuICAgIGxldCBzdGFydFxuICAgICAgfnNhbXBsaW5nX3JhdGVcbiAgICAgID8oY2FsbHN0YWNrX3NpemUgPSBtYXhfaW50KVxuICAgICAgdHJhY2tlciA9XG4gICAgICBjX3N0YXJ0IHNhbXBsaW5nX3JhdGUgY2FsbHN0YWNrX3NpemUgdHJhY2tlclxuXG4gICAgZXh0ZXJuYWwgc3RvcCA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9tZW1wcm9mX3N0b3BcIlxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTWVzc2FnZSBkaWdlc3QgKE1ENSkgKilcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmVcbmxldCBlcXVhbCA9IFN0cmluZy5lcXVhbFxuXG5leHRlcm5hbCB1bnNhZmVfc3RyaW5nOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9zdHJpbmdcIlxuZXh0ZXJuYWwgY2hhbm5lbDogaW5fY2hhbm5lbCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9tZDVfY2hhblwiXG5cbmxldCBzdHJpbmcgc3RyID1cbiAgdW5zYWZlX3N0cmluZyBzdHIgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbmxldCBieXRlcyBiID0gc3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpXG5cbmxldCBzdWJzdHJpbmcgc3RyIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gU3RyaW5nLmxlbmd0aCBzdHIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5zdWJzdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9zdHJpbmcgc3RyIG9mcyBsZW5cblxubGV0IHN1YmJ5dGVzIGIgb2ZzIGxlbiA9IHN1YnN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKSBvZnMgbGVuXG5cbmxldCBmaWxlIGZpbGVuYW1lID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZmlsZW5hbWUgaW5cbiAgbWF0Y2ggY2hhbm5lbCBpYyAoLTEpIHdpdGhcbiAgICB8IGQgLT4gY2xvc2VfaW4gaWM7IGRcbiAgICB8IGV4Y2VwdGlvbiBlIC0+IGNsb3NlX2luIGljOyByYWlzZSBlXG5cbmxldCBvdXRwdXQgY2hhbiBkaWdlc3QgPVxuICBvdXRwdXRfc3RyaW5nIGNoYW4gZGlnZXN0XG5cbmxldCBpbnB1dCBjaGFuID0gcmVhbGx5X2lucHV0X3N0cmluZyBjaGFuIDE2XG5cbmxldCBjaGFyX2hleCBuID1cbiAgQ2hhci51bnNhZmVfY2hyIChuICsgaWYgbiA8IDEwIHRoZW4gQ2hhci5jb2RlICcwJyBlbHNlIChDaGFyLmNvZGUgJ2EnIC0gMTApKVxuXG5sZXQgdG9faGV4IGQgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGQgPD4gMTYgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC50b19oZXhcIjtcbiAgbGV0IHJlc3VsdCA9IEJ5dGVzLmNyZWF0ZSAzMiBpblxuICBmb3IgaSA9IDAgdG8gMTUgZG9cbiAgICBsZXQgeCA9IENoYXIuY29kZSBkLltpXSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIpIChjaGFyX2hleCAoeCBsc3IgNCkpO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIrMSkgKGNoYXJfaGV4ICh4IGxhbmQgMHgwZikpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc3VsdFxuXG5sZXQgZnJvbV9oZXggcyA9XG4gIGlmIFN0cmluZy5sZW5ndGggcyA8PiAzMiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LmZyb21faGV4XCI7XG4gIGxldCBkaWdpdCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcwJy4uJzknIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ0EnLi4nRicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbiAgICB8ICdhJy4uJ2YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gICAgfCBfIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRGlnZXN0LmZyb21faGV4XCIpXG4gIGluXG4gIGxldCBieXRlIGkgPSBkaWdpdCBzLltpXSBsc2wgNCArIGRpZ2l0IHMuW2krMV0gaW5cbiAgbGV0IHJlc3VsdCA9IEJ5dGVzLmNyZWF0ZSAxNiBpblxuICBmb3IgaSA9IDAgdG8gMTUgZG9cbiAgICBCeXRlcy5zZXQgcmVzdWx0IGkgKENoYXIuY2hyIChieXRlICgyICogaSkpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yXG4gICBUaGlzIGlzIGEgbGFnZ2VkLUZpYm9uYWNjaSBGKDU1LCAyNCwgKykgd2l0aCBhIG1vZGlmaWVkIGFkZGl0aW9uXG4gICBmdW5jdGlvbiB0byBlbmhhbmNlIHRoZSBtaXhpbmcgb2YgYml0cy5cbiAgIElmIHdlIHVzZSBub3JtYWwgYWRkaXRpb24sIHRoZSBsb3ctb3JkZXIgYml0IGZhaWxzIHRlc3RzIDEgYW5kIDdcbiAgIG9mIHRoZSBEaWVoYXJkIHRlc3Qgc3VpdGUsIGFuZCBiaXRzIDEgYW5kIDIgYWxzbyBmYWlsIHRlc3QgNy5cbiAgIElmIHdlIHVzZSBtdWx0aXBsaWNhdGlvbiBhcyBzdWdnZXN0ZWQgYnkgTWFyc2FnbGlhLCBpdCBkb2Vzbid0IGZhcmVcbiAgIG11Y2ggYmV0dGVyLlxuICAgQnkgbWl4aW5nIHRoZSBiaXRzIG9mIG9uZSBvZiB0aGUgbnVtYmVycyBiZWZvcmUgYWRkaXRpb24gKFhPUiB0aGVcbiAgIDUgaGlnaC1vcmRlciBiaXRzIGludG8gdGhlIGxvdy1vcmRlciBiaXRzKSwgd2UgZ2V0IGEgZ2VuZXJhdG9yIHRoYXRcbiAgIHBhc3NlcyBhbGwgdGhlIERpZWhhcmQgdGVzdHMuXG4qKVxuXG5leHRlcm5hbCByYW5kb21fc2VlZDogdW5pdCAtPiBpbnQgYXJyYXkgPSBcImNhbWxfc3lzX3JhbmRvbV9zZWVkXCJcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgdHlwZSB0ID0geyBzdCA6IGludCBhcnJheTsgbXV0YWJsZSBpZHggOiBpbnQgfVxuXG4gIGxldCBuZXdfc3RhdGUgKCkgPSB7IHN0ID0gQXJyYXkubWFrZSA1NSAwOyBpZHggPSAwIH1cbiAgbGV0IGFzc2lnbiBzdDEgc3QyID1cbiAgICBBcnJheS5ibGl0IHN0Mi5zdCAwIHN0MS5zdCAwIDU1O1xuICAgIHN0MS5pZHggPC0gc3QyLmlkeFxuXG5cbiAgbGV0IGZ1bGxfaW5pdCBzIHNlZWQgPVxuICAgIGxldCBjb21iaW5lIGFjY3UgeCA9IERpZ2VzdC5zdHJpbmcgKGFjY3UgXiBJbnQudG9fc3RyaW5nIHgpIGluXG4gICAgbGV0IGV4dHJhY3QgZCA9XG4gICAgICBDaGFyLmNvZGUgZC5bMF0gKyAoQ2hhci5jb2RlIGQuWzFdIGxzbCA4KSArIChDaGFyLmNvZGUgZC5bMl0gbHNsIDE2KVxuICAgICAgKyAoQ2hhci5jb2RlIGQuWzNdIGxzbCAyNClcbiAgICBpblxuICAgIGxldCBzZWVkID0gaWYgQXJyYXkubGVuZ3RoIHNlZWQgPSAwIHRoZW4gW3wgMCB8XSBlbHNlIHNlZWQgaW5cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBzZWVkIGluXG4gICAgZm9yIGkgPSAwIHRvIDU0IGRvXG4gICAgICBzLnN0LihpKSA8LSBpO1xuICAgIGRvbmU7XG4gICAgbGV0IGFjY3UgPSByZWYgXCJ4XCIgaW5cbiAgICBmb3IgaSA9IDAgdG8gNTQgKyBJbnQubWF4IDU1IGwgZG9cbiAgICAgIGxldCBqID0gaSBtb2QgNTUgaW5cbiAgICAgIGxldCBrID0gaSBtb2QgbCBpblxuICAgICAgYWNjdSA6PSBjb21iaW5lICFhY2N1IHNlZWQuKGspO1xuICAgICAgcy5zdC4oaikgPC0gKHMuc3QuKGopIGx4b3IgZXh0cmFjdCAhYWNjdSkgbGFuZCAweDNGRkZGRkZGOyAgKCogUFIjNTU3NSAqKVxuICAgIGRvbmU7XG4gICAgcy5pZHggPC0gMFxuXG5cbiAgbGV0IG1ha2Ugc2VlZCA9XG4gICAgbGV0IHJlc3VsdCA9IG5ld19zdGF0ZSAoKSBpblxuICAgIGZ1bGxfaW5pdCByZXN1bHQgc2VlZDtcbiAgICByZXN1bHRcblxuXG4gIGxldCBtYWtlX3NlbGZfaW5pdCAoKSA9IG1ha2UgKHJhbmRvbV9zZWVkICgpKVxuXG4gIGxldCBjb3B5IHMgPVxuICAgIGxldCByZXN1bHQgPSBuZXdfc3RhdGUgKCkgaW5cbiAgICBhc3NpZ24gcmVzdWx0IHM7XG4gICAgcmVzdWx0XG5cblxuICAoKiBSZXR1cm5zIDMwIHJhbmRvbSBiaXRzIGFzIGFuIGludGVnZXIgMCA8PSB4IDwgMTA3Mzc0MTgyNCAqKVxuICBsZXQgYml0cyBzID1cbiAgICBzLmlkeCA8LSAocy5pZHggKyAxKSBtb2QgNTU7XG4gICAgbGV0IGN1cnZhbCA9IHMuc3QuKHMuaWR4KSBpblxuICAgIGxldCBuZXd2YWwgPSBzLnN0Ligocy5pZHggKyAyNCkgbW9kIDU1KVxuICAgICAgICAgICAgICAgICArIChjdXJ2YWwgbHhvciAoKGN1cnZhbCBsc3IgMjUpIGxhbmQgMHgxRikpIGluXG4gICAgbGV0IG5ld3ZhbDMwID0gbmV3dmFsIGxhbmQgMHgzRkZGRkZGRiBpbiAgKCogUFIjNTU3NSAqKVxuICAgIHMuc3QuKHMuaWR4KSA8LSBuZXd2YWwzMDtcbiAgICBuZXd2YWwzMFxuXG5cbiAgbGV0IHJlYyBpbnRhdXggcyBuID1cbiAgICBsZXQgciA9IGJpdHMgcyBpblxuICAgIGxldCB2ID0gciBtb2QgbiBpblxuICAgIGlmIHIgLSB2ID4gMHgzRkZGRkZGRiAtIG4gKyAxIHRoZW4gaW50YXV4IHMgbiBlbHNlIHZcblxuICBsZXQgaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kID4gMHgzRkZGRkZGRiB8fCBib3VuZCA8PSAwXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnRcIlxuICAgIGVsc2UgaW50YXV4IHMgYm91bmRcblxuICBsZXQgcmVjIGludDYzYXV4IHMgbiA9XG4gICAgbGV0IG1heF9pbnRfMzIgPSAoMSBsc2wgMzApICsgMHgzRkZGRkZGRiBpbiAoKiAweDdGRkZGRkZGICopXG4gICAgbGV0IGIxID0gYml0cyBzIGluXG4gICAgbGV0IGIyID0gYml0cyBzIGluXG4gICAgbGV0IChyLCBtYXhfaW50KSA9XG4gICAgICBpZiBuIDw9IG1heF9pbnRfMzIgdGhlblxuICAgICAgICAoKiAzMSByYW5kb20gYml0cyBvbiBib3RoIDY0LWJpdCBPQ2FtbCBhbmQgSmF2YVNjcmlwdC5cbiAgICAgICAgICAgVXNlIHVwcGVyIDE1IGJpdHMgb2YgYjEgYW5kIDE2IGJpdHMgb2YgYjIuICopXG4gICAgICAgIGxldCBicG9zID1cbiAgICAgICAgICAoKChiMiBsYW5kIDB4M0ZGRkMwMDApIGxzbCAxKSBsb3IgKGIxIGxzciAxNSkpXG4gICAgICAgIGluXG4gICAgICAgICAgKGJwb3MsIG1heF9pbnRfMzIpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBiMyA9IGJpdHMgcyBpblxuICAgICAgICAoKiA2MiByYW5kb20gYml0cyBvbiA2NC1iaXQgT0NhbWw7IHVucmVhY2hhYmxlIG9uIEphdmFTY3JpcHQuXG4gICAgICAgICAgIFVzZSB1cHBlciAyMCBiaXRzIG9mIGIxIGFuZCAyMSBiaXRzIG9mIGIyIGFuZCBiMy4gKilcbiAgICAgICAgbGV0IGJwb3MgPVxuICAgICAgICAgICgoKChiMyBsYW5kIDB4M0ZGRkZFMDApIGxzbCAxMikgbG9yIChiMiBsc3IgOSkpIGxzbCAyMClcbiAgICAgICAgICAgIGxvciAoYjEgbHNyIDEwKVxuICAgICAgICBpblxuICAgICAgICAgIChicG9zLCBtYXhfaW50KVxuICAgIGluXG4gICAgbGV0IHYgPSByIG1vZCBuIGluXG4gICAgaWYgciAtIHYgPiBtYXhfaW50IC0gbiArIDEgdGhlbiBpbnQ2M2F1eCBzIG4gZWxzZSB2XG5cbiAgbGV0IGZ1bGxfaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uZnVsbF9pbnRcIlxuICAgIGVsc2UgaWYgYm91bmQgPiAweDNGRkZGRkZGIHRoZW5cbiAgICAgIGludDYzYXV4IHMgYm91bmRcbiAgICBlbHNlXG4gICAgICBpbnRhdXggcyBib3VuZFxuXG5cbiAgbGV0IHJlYyBpbnQzMmF1eCBzIG4gPVxuICAgIGxldCBiMSA9IEludDMyLm9mX2ludCAoYml0cyBzKSBpblxuICAgIGxldCBiMiA9IEludDMyLnNoaWZ0X2xlZnQgKEludDMyLm9mX2ludCAoYml0cyBzIGxhbmQgMSkpIDMwIGluXG4gICAgbGV0IHIgPSBJbnQzMi5sb2dvciBiMSBiMiBpblxuICAgIGxldCB2ID0gSW50MzIucmVtIHIgbiBpblxuICAgIGlmIEludDMyLnN1YiByIHYgPiBJbnQzMi5hZGQgKEludDMyLnN1YiBJbnQzMi5tYXhfaW50IG4pIDFsXG4gICAgdGhlbiBpbnQzMmF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50MzIgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyXCJcbiAgICBlbHNlIGludDMyYXV4IHMgYm91bmRcblxuXG4gIGxldCByZWMgaW50NjRhdXggcyBuID1cbiAgICBsZXQgYjEgPSBJbnQ2NC5vZl9pbnQgKGJpdHMgcykgaW5cbiAgICBsZXQgYjIgPSBJbnQ2NC5zaGlmdF9sZWZ0IChJbnQ2NC5vZl9pbnQgKGJpdHMgcykpIDMwIGluXG4gICAgbGV0IGIzID0gSW50NjQuc2hpZnRfbGVmdCAoSW50NjQub2ZfaW50IChiaXRzIHMgbGFuZCA3KSkgNjAgaW5cbiAgICBsZXQgciA9IEludDY0LmxvZ29yIGIxIChJbnQ2NC5sb2dvciBiMiBiMykgaW5cbiAgICBsZXQgdiA9IEludDY0LnJlbSByIG4gaW5cbiAgICBpZiBJbnQ2NC5zdWIgciB2ID4gSW50NjQuYWRkIChJbnQ2NC5zdWIgSW50NjQubWF4X2ludCBuKSAxTFxuICAgIHRoZW4gaW50NjRhdXggcyBuXG4gICAgZWxzZSB2XG5cbiAgbGV0IGludDY0IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDBMXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQ2NFwiXG4gICAgZWxzZSBpbnQ2NGF1eCBzIGJvdW5kXG5cblxuICBsZXQgbmF0aXZlaW50ID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyBib3VuZCAtPiBOYXRpdmVpbnQub2ZfaW50MzIgKGludDMyIHMgKE5hdGl2ZWludC50b19pbnQzMiBib3VuZCkpXG4gICAgZWxzZSBmdW4gcyBib3VuZCAtPiBJbnQ2NC50b19uYXRpdmVpbnQgKGludDY0IHMgKEludDY0Lm9mX25hdGl2ZWludCBib3VuZCkpXG5cblxuICAoKiBSZXR1cm5zIGEgZmxvYXQgMCA8PSB4IDw9IDEgd2l0aCBhdCBtb3N0IDYwIGJpdHMgb2YgcHJlY2lzaW9uLiAqKVxuICBsZXQgcmF3ZmxvYXQgcyA9XG4gICAgbGV0IHNjYWxlID0gMTA3Mzc0MTgyNC4wICAoKiAyXjMwICopXG4gICAgYW5kIHIxID0gU3RkbGliLmZsb2F0IChiaXRzIHMpXG4gICAgYW5kIHIyID0gU3RkbGliLmZsb2F0IChiaXRzIHMpXG4gICAgaW4gKHIxIC8uIHNjYWxlICsuIHIyKSAvLiBzY2FsZVxuXG5cbiAgbGV0IGZsb2F0IHMgYm91bmQgPSByYXdmbG9hdCBzICouIGJvdW5kXG5cbiAgbGV0IGJvb2wgcyA9IChiaXRzIHMgbGFuZCAxID0gMClcblxuZW5kXG5cbigqIFRoaXMgaXMgdGhlIHN0YXRlIHlvdSBnZXQgd2l0aCBbaW5pdCAyNzE4MjgxOF0gYW5kIHRoZW4gYXBwbHlpbmdcbiAgIHRoZSBcImxhbmQgMHgzRkZGRkZGRlwiIGZpbHRlciB0byB0aGVtLiAgU2VlICM1NTc1LCAjNTc5MywgIzU5NzcuICopXG5sZXQgZGVmYXVsdCA9IHtcbiAgU3RhdGUuc3QgPSBbfFxuICAgICAgMHgzYWUyNTIyYjsgMHgxZDhkNDYzNDsgMHgxNWI0ZmFkMDsgMHgxOGIxNGFjZTsgMHgxMmY4YTNjNDsgMHgzYjA4NmM0NztcbiAgICAgIDB4MTZkNDY3ZDY7IDB4MTAxZDkxYzc7IDB4MzIxZGYxNzc7IDB4MDE3NmMxOTM7IDB4MWZmNzJiZjE7IDB4MWU4ODkxMDk7XG4gICAgICAweDBiNDY0YjE4OyAweDJiODZiOTdjOyAweDA4OTFkYTQ4OyAweDAzMTM3NDYzOyAweDA4NWFjNWExOyAweDE1ZDYxZjJmO1xuICAgICAgMHgzYmNlZDM1OTsgMHgyOWMxYzEzMjsgMHgzYTg2NzY2ZTsgMHgzNjZkOGM4NjsgMHgxZjViNjIyMjsgMHgzY2UxYjU5ZjtcbiAgICAgIDB4MmViZjc4ZTE7IDB4MjdjZDFiODY7IDB4MjU4ZjNkYzM7IDB4Mzg5YTgxOTQ7IDB4MDJlNGM0NGM7IDB4MThjNDNmN2Q7XG4gICAgICAweDBmNmU1MzRmOyAweDFlN2RmMzU5OyAweDA1NWQwYjdlOyAweDEwZTg0ZTdlOyAweDEyNjE5OGU0OyAweDBlNzcyMmNiO1xuICAgICAgMHgxY2JlZGUyODsgMHgzMzkxYjk2NDsgMHgzZDQwZTkyYTsgMHgwYzU5OTMzZDsgMHgwYjhjZDBiNzsgMHgyNGVmZmYxYztcbiAgICAgIDB4MjgwM2ZkYWE7IDB4MDhlYmM3MmU7IDB4MGY1MjJlMzI7IDB4MDUzOThlZGM7IDB4MjE0NGEwNGM7IDB4MGFlZjNjYmQ7XG4gICAgICAweDAxYWQ0NzE5OyAweDM1YjkzY2Q2OyAweDJhNTU5ZDRmOyAweDFlNmZkNzY4OyAweDI2ZTI3ZjM2OyAweDE4NmYxOGMzO1xuICAgICAgMHgyZmJmOTY3YTtcbiAgICB8XTtcbiAgU3RhdGUuaWR4ID0gMDtcbn1cblxubGV0IGJpdHMgKCkgPSBTdGF0ZS5iaXRzIGRlZmF1bHRcbmxldCBpbnQgYm91bmQgPSBTdGF0ZS5pbnQgZGVmYXVsdCBib3VuZFxubGV0IGZ1bGxfaW50IGJvdW5kID0gU3RhdGUuZnVsbF9pbnQgZGVmYXVsdCBib3VuZFxubGV0IGludDMyIGJvdW5kID0gU3RhdGUuaW50MzIgZGVmYXVsdCBib3VuZFxubGV0IG5hdGl2ZWludCBib3VuZCA9IFN0YXRlLm5hdGl2ZWludCBkZWZhdWx0IGJvdW5kXG5sZXQgaW50NjQgYm91bmQgPSBTdGF0ZS5pbnQ2NCBkZWZhdWx0IGJvdW5kXG5sZXQgZmxvYXQgc2NhbGUgPSBTdGF0ZS5mbG9hdCBkZWZhdWx0IHNjYWxlXG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgZGVmYXVsdFxuXG5sZXQgZnVsbF9pbml0IHNlZWQgPSBTdGF0ZS5mdWxsX2luaXQgZGVmYXVsdCBzZWVkXG5sZXQgaW5pdCBzZWVkID0gU3RhdGUuZnVsbF9pbml0IGRlZmF1bHQgW3wgc2VlZCB8XVxubGV0IHNlbGZfaW5pdCAoKSA9IGZ1bGxfaW5pdCAocmFuZG9tX3NlZWQoKSlcblxuKCogTWFuaXB1bGF0aW5nIHRoZSBjdXJyZW50IHN0YXRlLiAqKVxuXG5sZXQgZ2V0X3N0YXRlICgpID0gU3RhdGUuY29weSBkZWZhdWx0XG5sZXQgc2V0X3N0YXRlIHMgPSBTdGF0ZS5hc3NpZ24gZGVmYXVsdCBzXG5cbigqKioqKioqKioqKioqKioqKioqKlxuXG4oKiBUZXN0IGZ1bmN0aW9ucy4gIE5vdCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeS5cbiAgIFRoZSBbY2hpc3F1YXJlXSBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIHdpdGggbiA+IDEwci5cbiAgIEl0IHJldHVybnMgYSB0cmlwbGUgKGxvdywgYWN0dWFsLCBoaWdoKS5cbiAgIElmIGxvdyA8PSBhY3R1YWwgPD0gaGlnaCwgdGhlIFtnXSBmdW5jdGlvbiBwYXNzZWQgdGhlIHRlc3QsXG4gICBvdGhlcndpc2UgaXQgZmFpbGVkLlxuXG4gIFNvbWUgcmVzdWx0czpcblxuaW5pdCAyNzE4MjgxODsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAwMFxuaW5pdCAyNzE4MjgxODsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCA1MDAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMDAgMTAwMFxuaW5pdCAyNzE4MjgxODsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAyNFxuaW5pdCAyOTk3OTI2NDM7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDEwMjRcbmluaXQgMTQxNDIxMzY7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDEwMjRcbmluaXQgMjcxODI4MTg7IGluaXRfZGlmZiAxMDI0OyBjaGlzcXVhcmUgZGlmZiAxMDAwMDAgMTAyNFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmIDEwMDsgY2hpc3F1YXJlIGRpZmYgMTAwMDAwIDEwMFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmMiAxMDI0OyBjaGlzcXVhcmUgZGlmZjIgMTAwMDAwIDEwMjRcbmluaXQgMjcxODI4MTg7IGluaXRfZGlmZjIgMTAwOyBjaGlzcXVhcmUgZGlmZjIgMTAwMDAwIDEwMFxuaW5pdCAxNDE0MjEzNjsgaW5pdF9kaWZmMiAxMDA7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAwXG5pbml0IDI5OTc5MjY0MzsgaW5pdF9kaWZmMiAxMDA7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAwXG4tIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDkzNi43NTQ0NDY3OTY2MzI0NjUsIDk5Ny41LCAxMDYzLjI0NTU1MzIwMzM2NzU0KVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgODkuNzQwMDAwMDAwMDA1MjM4NywgMTIwLilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg0ODU4LjU3ODY0Mzc2MjY5LCA1MDQ1LjUsIDUxNDEuNDIxMzU2MjM3MzEpXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPVxuKDkzNi43NTQ0NDY3OTY2MzI0NjUsIDk0NC44MDU5OTk5OTk5ODIzMDUsIDEwNjMuMjQ1NTUzMjAzMzY3NTQpXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTYwLiwgMTAxOS4xOTc0NDAwMDAwMDM1NSwgMTA4OC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTYwLiwgMTA1OS4zMTc3NjAwMDAwMDUzNiwgMTA4OC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTYwLiwgMTAzOS45ODQ2Mzk5OTk5OTUxMiwgMTA4OC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTYwLiwgMTA1NC4zODIwNzk5OTk5OTU3NywgMTA4OC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA5MC4wOTYwMDAwMDAwMDUsIDEyMC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTYwLiwgMTA3Ni43ODcyMDAwMDAwMDYxMiwgMTA4OC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4NS4xNzYwMDAwMDAwMDY3NTIxLCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgODUuMjE2MDAwMDAwMDAwMzQ5MiwgMTIwLilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDgwLjYyMjAwMDAwMDAwMzAyNjgsIDEyMC4pXG5cbiopXG5cbigqIFJldHVybiB0aGUgc3VtIG9mIHRoZSBzcXVhcmVzIG9mIHZbaTAsaTFbICopXG5sZXQgcmVjIHN1bXNxIHYgaTAgaTEgPVxuICBpZiBpMCA+PSBpMSB0aGVuIDAuMFxuICBlbHNlIGlmIGkxID0gaTAgKyAxIHRoZW4gU3RkbGliLmZsb2F0IHYuKGkwKSAqLiBTdGRsaWIuZmxvYXQgdi4oaTApXG4gIGVsc2Ugc3Vtc3EgdiBpMCAoKGkwK2kxKS8yKSArLiBzdW1zcSB2ICgoaTAraTEpLzIpIGkxXG5cblxubGV0IGNoaXNxdWFyZSBnIG4gciA9XG4gIGlmIG4gPD0gMTAgKiByIHRoZW4gaW52YWxpZF9hcmcgXCJjaGlzcXVhcmVcIjtcbiAgbGV0IGYgPSBBcnJheS5tYWtlIHIgMCBpblxuICBmb3IgaSA9IDEgdG8gbiBkb1xuICAgIGxldCB0ID0gZyByIGluXG4gICAgZi4odCkgPC0gZi4odCkgKyAxXG4gIGRvbmU7XG4gIGxldCB0ID0gc3Vtc3EgZiAwIHJcbiAgYW5kIHIgPSBTdGRsaWIuZmxvYXQgclxuICBhbmQgbiA9IFN0ZGxpYi5mbG9hdCBuIGluXG4gIGxldCBzciA9IDIuMCAqLiBzcXJ0IHIgaW5cbiAgKHIgLS4gc3IsICAgKHIgKi4gdCAvLiBuKSAtLiBuLCAgIHIgKy4gc3IpXG5cblxuKCogVGhpcyBpcyB0byB0ZXN0IGZvciBsaW5lYXIgZGVwZW5kZW5jaWVzIGJldHdlZW4gc3VjY2Vzc2l2ZSByYW5kb20gbnVtYmVycy5cbiopXG5sZXQgc3QgPSByZWYgMFxubGV0IGluaXRfZGlmZiByID0gc3QgOj0gaW50IHJcbmxldCBkaWZmIHIgPVxuICBsZXQgeDEgPSAhc3RcbiAgYW5kIHgyID0gaW50IHJcbiAgaW5cbiAgc3QgOj0geDI7XG4gIGlmIHgxID49IHgyIHRoZW5cbiAgICB4MSAtIHgyXG4gIGVsc2VcbiAgICByICsgeDEgLSB4MlxuXG5cbmxldCBzdDEgPSByZWYgMFxuYW5kIHN0MiA9IHJlZiAwXG5cblxuKCogVGhpcyBpcyB0byB0ZXN0IGZvciBxdWFkcmF0aWMgZGVwZW5kZW5jaWVzIGJldHdlZW4gc3VjY2Vzc2l2ZSByYW5kb21cbiAgIG51bWJlcnMuXG4qKVxubGV0IGluaXRfZGlmZjIgciA9IHN0MSA6PSBpbnQgcjsgc3QyIDo9IGludCByXG5sZXQgZGlmZjIgciA9XG4gIGxldCB4MSA9ICFzdDFcbiAgYW5kIHgyID0gIXN0MlxuICBhbmQgeDMgPSBpbnQgclxuICBpblxuICBzdDEgOj0geDI7XG4gIHN0MiA6PSB4MztcbiAgKHgzIC0geDIgLSB4MiArIHgxICsgMipyKSBtb2QgclxuXG5cbioqKioqKioqKioqKioqKioqKioqKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBIYXNoIHRhYmxlcyAqKVxuXG4oKiBXZSBkbyBkeW5hbWljIGhhc2hpbmcsIGFuZCByZXNpemUgdGhlIHRhYmxlIGFuZCByZWhhc2ggdGhlIGVsZW1lbnRzXG4gICB3aGVuIGJ1Y2tldHMgYmVjb21lIHRvbyBsb25nLiAqKVxuXG50eXBlICgnYSwgJ2IpIHQgPVxuICB7IG11dGFibGUgc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIG51bWJlciBvZiBlbnRyaWVzICopXG4gICAgbXV0YWJsZSBkYXRhOiAoJ2EsICdiKSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc2l6ZTogaW50OyAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgfVxuXG5hbmQgKCdhLCAnYikgYnVja2V0bGlzdCA9XG4gICAgRW1wdHlcbiAgfCBDb25zIG9mIHsgbXV0YWJsZSBrZXk6ICdhO1xuICAgICAgICAgICAgICBtdXRhYmxlIGRhdGE6ICdiO1xuICAgICAgICAgICAgICBtdXRhYmxlIG5leHQ6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgfVxuXG4oKiBUaGUgc2lnbiBvZiBpbml0aWFsX3NpemUgZW5jb2RlcyB0aGUgZmFjdCB0aGF0IGEgdHJhdmVyc2FsIGlzXG4gICBvbmdvaW5nIG9yIG5vdC5cblxuICAgVGhpcyBkaXNhYmxlcyB0aGUgZWZmaWNpZW50IGluIHBsYWNlIGltcGxlbWVudGF0aW9uIG9mIHJlc2l6aW5nLlxuKilcblxubGV0IG9uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgfHwgaC5pbml0aWFsX3NpemUgPCAwXG5cbmxldCBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBoLmluaXRpYWxfc2l6ZSA8LSAtIGguaW5pdGlhbF9zaXplXG5cbigqIFRvIHBpY2sgcmFuZG9tIHNlZWRzIGlmIHJlcXVlc3RlZCAqKVxuXG5sZXQgcmFuZG9taXplZF9kZWZhdWx0ID1cbiAgbGV0IHBhcmFtcyA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJPQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0cnkgU3lzLmdldGVudiBcIkNBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+IFwiXCIgaW5cbiAgU3RyaW5nLmNvbnRhaW5zIHBhcmFtcyAnUidcblxubGV0IHJhbmRvbWl6ZWQgPSByZWYgcmFuZG9taXplZF9kZWZhdWx0XG5cbmxldCByYW5kb21pemUgKCkgPSByYW5kb21pemVkIDo9IHRydWVcbmxldCBpc19yYW5kb21pemVkICgpID0gIXJhbmRvbWl6ZWRcblxubGV0IHBybmcgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQoKSlcblxuKCogRnVuY3Rpb25zIHdoaWNoIGFwcGVhciBiZWZvcmUgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIG11c3QgZWl0aGVyIGJlXG4gICBpbmRlcGVuZGVudCBvZiB0aGUgaGFzaCBmdW5jdGlvbiBvciB0YWtlIGl0IGFzIGEgcGFyYW1ldGVyIChzZWUgIzIyMDIgYW5kXG4gICBjb2RlIGJlbG93IHRoZSBmdW5jdG9yIGRlZmluaXRpb25zLiAqKVxuXG4oKiBDcmVhdGluZyBhIGZyZXNoLCBlbXB0eSB0YWJsZSAqKVxuXG5sZXQgcmVjIHBvd2VyXzJfYWJvdmUgeCBuID1cbiAgaWYgeCA+PSBuIHRoZW4geFxuICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gIGVsc2UgcG93ZXJfMl9hYm92ZSAoeCAqIDIpIG5cblxubGV0IGNyZWF0ZSA/KHJhbmRvbSA9ICFyYW5kb21pemVkKSBpbml0aWFsX3NpemUgPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgaW5pdGlhbF9zaXplIGluXG4gIGxldCBzZWVkID0gaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZykgZWxzZSAwIGluXG4gIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxubGV0IGNsZWFyIGggPVxuICBpZiBoLnNpemUgPiAwIHRoZW4gYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBBcnJheS5maWxsIGguZGF0YSAwIChBcnJheS5sZW5ndGggaC5kYXRhKSBFbXB0eVxuICBlbmRcblxubGV0IHJlc2V0IGggPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgICB8fCBsZW4gPSBhYnMgaC5pbml0aWFsX3NpemUgdGhlblxuICAgIGNsZWFyIGhcbiAgZWxzZSBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIChhYnMgaC5pbml0aWFsX3NpemUpIEVtcHR5XG4gIGVuZFxuXG5sZXQgY29weV9idWNrZXRsaXN0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGxldCByZWMgbG9vcCBwcmVjID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBDb25zIHByZWMgLT4gIHByZWMubmV4dCA8LSByXG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBsb29wIHIgbmV4dFxuICAgICAgaW5cbiAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgbG9vcCByIG5leHQ7XG4gICAgICByXG5cbmxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkubWFwIGNvcHlfYnVja2V0bGlzdCBoLmRhdGEgfVxuXG5sZXQgbGVuZ3RoIGggPSBoLnNpemVcblxubGV0IGluc2VydF9hbGxfYnVja2V0cyBpbmRleGZ1biBpbnBsYWNlIG9kYXRhIG5kYXRhID1cbiAgbGV0IG5zaXplID0gQXJyYXkubGVuZ3RoIG5kYXRhIGluXG4gIGxldCBuZGF0YV90YWlsID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICBsZXQgcmVjIGluc2VydF9idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gYXMgY2VsbCAtPlxuICAgICAgICBsZXQgY2VsbCA9XG4gICAgICAgICAgaWYgaW5wbGFjZSB0aGVuIGNlbGxcbiAgICAgICAgICBlbHNlIENvbnMge2tleTsgZGF0YTsgbmV4dCA9IEVtcHR5fVxuICAgICAgICBpblxuICAgICAgICBsZXQgbmlkeCA9IGluZGV4ZnVuIGtleSBpblxuICAgICAgICBiZWdpbiBtYXRjaCBuZGF0YV90YWlsLihuaWR4KSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gbmRhdGEuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBjZWxsO1xuICAgICAgICBlbmQ7XG4gICAgICAgIG5kYXRhX3RhaWwuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIGluc2VydF9idWNrZXQgbmV4dFxuICBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIG9kYXRhIC0gMSBkb1xuICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gIGRvbmU7XG4gIGlmIGlucGxhY2UgdGhlblxuICAgIGZvciBpID0gMCB0byBuc2l6ZSAtIDEgZG9cbiAgICAgIG1hdGNoIG5kYXRhX3RhaWwuKGkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBFbXB0eVxuICAgIGRvbmVcblxubGV0IHJlc2l6ZSBpbmRleGZ1biBoID1cbiAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gIGxldCBvc2l6ZSA9IEFycmF5Lmxlbmd0aCBvZGF0YSBpblxuICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgaWYgbnNpemUgPCBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgIGxldCBpbnBsYWNlID0gbm90IChvbmdvaW5nX3RyYXZlcnNhbCBoKSBpblxuICAgIGguZGF0YSA8LSBuZGF0YTsgICAgICAgICAgKCogc28gdGhhdCBpbmRleGZ1biBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgaW5zZXJ0X2FsbF9idWNrZXRzIChpbmRleGZ1biBoKSBpbnBsYWNlIG9kYXRhIG5kYXRhXG4gIGVuZFxuXG5sZXQgaXRlciBmIGggPVxuICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICAoKVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGYga2V5IGRhdGE7IGRvX2J1Y2tldCBuZXh0IGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGRvX2J1Y2tldCBkLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IHJlYyBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBFbXB0eVxuICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIEVtcHR5XG4gICAgICBlbmRcbiAgfCAoQ29ucyAoe2tleTsgZGF0YTsgbmV4dH0gYXMgYykpIGFzIHNsb3QgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGYga2V5IGRhdGEgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjIG5leHRcbiAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIHNsb3RcbiAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gc2xvdFxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBjLmRhdGEgPC0gZGF0YTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHNsb3QgbmV4dFxuICAgICAgZW5kXG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgZiBoID1cbiAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgRW1wdHkgaC5kYXRhLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoXG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgZm9sZCBmIGggaW5pdCA9XG4gIGxldCByZWMgZG9fYnVja2V0IGIgYWNjdSA9XG4gICAgbWF0Y2ggYiB3aXRoXG4gICAgICBFbXB0eSAtPlxuICAgICAgICBhY2N1XG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZG9fYnVja2V0IG5leHQgKGYga2V5IGRhdGEgYWNjdSkgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgbGV0IGFjY3UgPSByZWYgaW5pdCBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGFjY3UgOj0gZG9fYnVja2V0IGQuKGkpICFhY2N1XG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgIWFjY3VcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbnR5cGUgc3RhdGlzdGljcyA9IHtcbiAgbnVtX2JpbmRpbmdzOiBpbnQ7XG4gIG51bV9idWNrZXRzOiBpbnQ7XG4gIG1heF9idWNrZXRfbGVuZ3RoOiBpbnQ7XG4gIGJ1Y2tldF9oaXN0b2dyYW06IGludCBhcnJheVxufVxuXG5sZXQgcmVjIGJ1Y2tldF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYWNjdVxuICB8IENvbnN7bmV4dH0gLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIG5leHRcblxubGV0IHN0YXRzIGggPVxuICBsZXQgbWJsID1cbiAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgQXJyYXkuaXRlclxuICAgIChmdW4gYiAtPlxuICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgaC5kYXRhO1xuICB7IG51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSB0YmwgPVxuICAoKiBjYXB0dXJlIGN1cnJlbnQgYXJyYXksIHNvIHRoYXQgZXZlbiBpZiB0aGUgdGFibGUgaXMgcmVzaXplZCB3ZVxuICAgICBrZWVwIGl0ZXJhdGluZyBvbiB0aGUgc2FtZSBhcnJheSAqKVxuICBsZXQgdGJsX2RhdGEgPSB0YmwuZGF0YSBpblxuICAoKiBzdGF0ZTogaW5kZXggKiBuZXh0IGJ1Y2tldCB0byB0cmF2ZXJzZSAqKVxuICBsZXQgcmVjIGF1eCBpIGJ1Y2sgKCkgPSBtYXRjaCBidWNrIHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdGJsX2RhdGFcbiAgICAgICAgdGhlbiBTZXEuTmlsXG4gICAgICAgIGVsc2UgYXV4KGkrMSkgdGJsX2RhdGEuKGkpICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIFNlcS5Db25zICgoa2V5LCBkYXRhKSwgYXV4IGkgbmV4dClcbiAgaW5cbiAgYXV4IDAgRW1wdHlcblxubGV0IHRvX3NlcV9rZXlzIG0gPSBTZXEubWFwIGZzdCAodG9fc2VxIG0pXG5cbmxldCB0b19zZXFfdmFsdWVzIG0gPSBTZXEubWFwIHNuZCAodG9fc2VxIG0pXG5cbigqIEZ1bmN0b3JpYWwgaW50ZXJmYWNlICopXG5cbm1vZHVsZSB0eXBlIEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGhhc2g6IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTZWVkZWRIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBoYXNoOiBpbnQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlOiBpbnQgLT4gJ2EgdFxuICAgIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBjb3B5OiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIHJlbW92ZTogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICAgIHZhbCBmaW5kOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gICAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQ6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoOiAnYSB0IC0+IGludFxuICAgIHZhbCBzdGF0czogJ2EgdCAtPiBzdGF0aXN0aWNzXG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTZWVkZWRTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICEnYSB0XG4gICAgdmFsIGNyZWF0ZSA6ID9yYW5kb206Ym9vbCAtPiBpbnQgLT4gJ2EgdFxuICAgIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZCA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICAgIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyIDogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQgOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlU2VlZGVkKEg6IFNlZWRlZEhhc2hlZFR5cGUpOiAoU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIHR5cGUga2V5ID0gSC50XG4gICAgdHlwZSAnYSBoYXNodGJsID0gKGtleSwgJ2EpIHRcbiAgICB0eXBlICdhIHQgPSAnYSBoYXNodGJsXG4gICAgbGV0IGNyZWF0ZSA9IGNyZWF0ZVxuICAgIGxldCBjbGVhciA9IGNsZWFyXG4gICAgbGV0IHJlc2V0ID0gcmVzZXRcbiAgICBsZXQgY29weSA9IGNvcHlcblxuICAgIGxldCBrZXlfaW5kZXggaCBrZXkgPVxuICAgICAgKEguaGFzaCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBhZGQgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG4gICAgbGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgKClcbiAgICAgIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGJlZ2luXG4gICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbiAgICBsZXQgcmVtb3ZlIGgga2V5ID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXQgcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBbXVxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhPWQ7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gZCA6OiBmaW5kX2luX2J1Y2tldCBuZXh0XG4gICAgICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gICAgICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCByZWMgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgQ29ucyAoe2tleT1rOyBuZXh0fSBhcyBzbG90KSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxuICAgIGxldCByZXBsYWNlIGgga2V5IGRhdGEgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgaWYgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbCB0aGVuIGJlZ2luXG4gICAgICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG4gICAgICBlbmRcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgICAgIEguZXF1YWwgayBrZXkgfHwgbWVtX2luX2J1Y2tldCBuZXh0IGluXG4gICAgICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IGFkZF9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG4gICAgbGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcblxuICAgIGxldCBpdGVyID0gaXRlclxuICAgIGxldCBmaWx0ZXJfbWFwX2lucGxhY2UgPSBmaWx0ZXJfbWFwX2lucGxhY2VcbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IHN0YXRzID0gc3RhdHNcbiAgICBsZXQgdG9fc2VxID0gdG9fc2VxXG4gICAgbGV0IHRvX3NlcV9rZXlzID0gdG9fc2VxX2tleXNcbiAgICBsZXQgdG9fc2VxX3ZhbHVlcyA9IHRvX3NlcV92YWx1ZXNcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKEg6IEhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuKCogUG9seW1vcnBoaWMgaGFzaCBmdW5jdGlvbi1iYXNlZCB0YWJsZXMgKilcbigqIENvZGUgaW5jbHVkZWQgYmVsb3cgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIHRvIGd1YXJkIGFnYWluc3QgYWNjaWRlbnRhbFxuICAgdXNlIC0gc2VlICMyMjAyICopXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxuXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxubGV0IGhhc2hfcGFyYW0gbjEgbjIgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIG4xIG4yIDAgeFxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcblxubGV0IGtleV9pbmRleCBoIGtleSA9XG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0XG4gIHRoZW4gKHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkhhc2h0Ymw6IHVuc3VwcG9ydGVkIGhhc2ggdGFibGUgZm9ybWF0XCJcblxubGV0IGFkZCBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG5sZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgKClcbiAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBiZWdpblxuICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICBlbmRcbiAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG5sZXQgcmVtb3ZlIGgga2V5ID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxubGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxubGV0IGZpbmQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbmxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxubGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxubGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIFtdXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGRhdGEgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG5sZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICBlbmRcblxubGV0IG1lbSBoIGtleSA9XG4gIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgIGNvbXBhcmUgayBrZXkgPSAwIHx8IG1lbV9pbl9idWNrZXQgbmV4dCBpblxuICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgYWRkX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxubGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgdGJsXG5cbmxldCByZWJ1aWxkID8ocmFuZG9tID0gIXJhbmRvbWl6ZWQpIGggPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgKEFycmF5Lmxlbmd0aCBoLmRhdGEpIGluXG4gIGxldCBzZWVkID1cbiAgICBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKVxuICAgIGVsc2UgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLnNlZWRcbiAgICBlbHNlIDAgaW5cbiAgbGV0IGgnID0ge1xuICAgIHNpemUgPSBoLnNpemU7XG4gICAgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eTtcbiAgICBzZWVkID0gc2VlZDtcbiAgICBpbml0aWFsX3NpemUgPSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguaW5pdGlhbF9zaXplIGVsc2Ugc1xuICB9IGluXG4gIGluc2VydF9hbGxfYnVja2V0cyAoa2V5X2luZGV4IGgnKSBmYWxzZSBoLmRhdGEgaCcuZGF0YTtcbiAgaCdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFdlYWsgYXJyYXkgb3BlcmF0aW9ucyAqKVxuXG50eXBlICEnYSB0XG5cbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiAnYSB0ID0gXCJjYW1sX3dlYWtfY3JlYXRlXCJcblxubGV0IGNyZWF0ZSBsID1cbiAgaWYgbm90ICgwIDw9IGwgJiYgbCA8PSBPYmouRXBoZW1lcm9uLm1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgIGludmFsaWRfYXJnKFwiV2Vhay5jcmVhdGVcIik7XG4gIGNyZWF0ZSBsXG5cbigqKiBudW1iZXIgb2YgYWRkaXRpb25hbCB2YWx1ZXMgaW4gYSB3ZWFrIHBvaW50ZXIgKilcbmxldCBhZGRpdGlvbmFsX3ZhbHVlcyA9IDJcblxubGV0IGxlbmd0aCB4ID0gT2JqLnNpemUoT2JqLnJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG5sZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gIGlmIG5vdCAoMCA8PSBvICYmIG8gPCBsZW5ndGggZSkgdGhlblxuICAgIGludmFsaWRfYXJnKG1zZylcblxuZXh0ZXJuYWwgc2V0JyA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbmV4dGVybmFsIHVuc2V0IDogJ2EgdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG5sZXQgc2V0IGUgbyB4ID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5zZXRcIjtcbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiB1bnNldCBlIG9cbiAgfCBTb21lIHggLT4gc2V0JyBlIG8geFxuXG5leHRlcm5hbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYSBvcHRpb24gPSBcImNhbWxfd2Vha19nZXRcIlxubGV0IGdldCBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmdldFwiO1xuICBnZXQgZSBvXG5cbmV4dGVybmFsIGdldF9jb3B5IDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uID0gXCJjYW1sX3dlYWtfZ2V0X2NvcHlcIlxubGV0IGdldF9jb3B5IGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuZ2V0X2NvcHlcIjtcbiAgZ2V0X2NvcHkgZSBvXG5cbmV4dGVybmFsIGNoZWNrIDogJ2EgdCAtPiBpbnQgLT4gYm9vbCA9IFwiY2FtbF93ZWFrX2NoZWNrXCJcbmxldCBjaGVjayBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmNoZWNrXCI7XG4gIGNoZWNrIGUgb1xuXG5leHRlcm5hbCBibGl0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfd2Vha19ibGl0XCJcblxuKCogYmxpdDogc3JjIHNyY29mZiBkc3QgZHN0b2ZmIGxlbiAqKVxubGV0IGJsaXQgZTEgbzEgZTIgbzIgbCA9XG4gIGlmIGwgPCAwIHx8IG8xIDwgMCB8fCBvMSA+IGxlbmd0aCBlMSAtIGxcbiAgICAgfHwgbzIgPCAwIHx8IG8yID4gbGVuZ3RoIGUyIC0gbFxuICB0aGVuIGludmFsaWRfYXJnIFwiV2Vhay5ibGl0XCJcbiAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0IGUxIG8xIGUyIG8yIGxcblxubGV0IGZpbGwgYXIgb2ZzIGxlbiB4ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhciAtIGxlblxuICB0aGVuIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiV2Vhay5maWxsXCIpXG4gIGVsc2UgYmVnaW5cbiAgICBmb3IgaSA9IG9mcyB0byAob2ZzICsgbGVuIC0gMSkgZG9cbiAgICAgIHNldCBhciBpIHhcbiAgICBkb25lXG4gIGVuZFxuXG5cbigqKiBXZWFrIGhhc2ggdGFibGVzICopXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBkYXRhXG4gIHR5cGUgdFxuICB2YWwgY3JlYXRlIDogaW50IC0+IHRcbiAgdmFsIGNsZWFyIDogdCAtPiB1bml0XG4gIHZhbCBtZXJnZSA6IHQgLT4gZGF0YSAtPiBkYXRhXG4gIHZhbCBhZGQgOiB0IC0+IGRhdGEgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogdCAtPiBkYXRhIC0+IHVuaXRcbiAgdmFsIGZpbmQgOiB0IC0+IGRhdGEgLT4gZGF0YVxuICB2YWwgZmluZF9vcHQgOiB0IC0+IGRhdGEgLT4gZGF0YSBvcHRpb25cbiAgdmFsIGZpbmRfYWxsIDogdCAtPiBkYXRhIC0+IGRhdGEgbGlzdFxuICB2YWwgbWVtIDogdCAtPiBkYXRhIC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoZGF0YSAtPiB1bml0KSAtPiB0IC0+IHVuaXRcbiAgdmFsIGZvbGQgOiAoZGF0YSAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgY291bnQgOiB0IC0+IGludFxuICB2YWwgc3RhdHMgOiB0IC0+IGludCAqIGludCAqIGludCAqIGludCAqIGludCAqIGludFxuZW5kXG5cbm1vZHVsZSBNYWtlIChIIDogSGFzaHRibC5IYXNoZWRUeXBlKSA6IChTIHdpdGggdHlwZSBkYXRhID0gSC50KSA9IHN0cnVjdFxuXG4gIHR5cGUgJ2Egd2Vha190ID0gJ2EgdFxuICBsZXQgd2Vha19jcmVhdGUgPSBjcmVhdGVcbiAgbGV0IGVtcHR5YnVja2V0ID0gd2Vha19jcmVhdGUgMFxuXG4gIHR5cGUgZGF0YSA9IEgudFxuXG4gIHR5cGUgdCA9IHtcbiAgICBtdXRhYmxlIHRhYmxlIDogZGF0YSB3ZWFrX3QgYXJyYXk7XG4gICAgbXV0YWJsZSBoYXNoZXMgOiBpbnQgYXJyYXkgYXJyYXk7XG4gICAgbXV0YWJsZSBsaW1pdCA6IGludDsgICAgICAgICAgICAgICAoKiBidWNrZXQgc2l6ZSBsaW1pdCAqKVxuICAgIG11dGFibGUgb3ZlcnNpemUgOiBpbnQ7ICAgICAgICAgICAgKCogbnVtYmVyIG9mIG92ZXJzaXplIGJ1Y2tldHMgKilcbiAgICBtdXRhYmxlIHJvdmVyIDogaW50OyAgICAgICAgICAgICAgICgqIGZvciBpbnRlcm5hbCBib29ra2VlcGluZyAqKVxuICB9XG5cbiAgbGV0IGdldF9pbmRleCB0IGggPSAoaCBsYW5kIG1heF9pbnQpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cbiAgbGV0IGxpbWl0ID0gN1xuICBsZXQgb3Zlcl9saW1pdCA9IDJcblxuICBsZXQgY3JlYXRlIHN6ID1cbiAgICBsZXQgc3ogPSBpZiBzeiA8IDcgdGhlbiA3IGVsc2Ugc3ogaW5cbiAgICBsZXQgc3ogPSBpZiBzeiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gU3lzLm1heF9hcnJheV9sZW5ndGggZWxzZSBzeiBpblxuICAgIHtcbiAgICAgIHRhYmxlID0gQXJyYXkubWFrZSBzeiBlbXB0eWJ1Y2tldDtcbiAgICAgIGhhc2hlcyA9IEFycmF5Lm1ha2Ugc3ogW3wgfF07XG4gICAgICBsaW1pdCA9IGxpbWl0O1xuICAgICAgb3ZlcnNpemUgPSAwO1xuICAgICAgcm92ZXIgPSAwO1xuICAgIH1cblxuICBsZXQgY2xlYXIgdCA9XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgICAgdC50YWJsZS4oaSkgPC0gZW1wdHlidWNrZXQ7XG4gICAgICB0Lmhhc2hlcy4oaSkgPC0gW3wgfF07XG4gICAgZG9uZTtcbiAgICB0LmxpbWl0IDwtIGxpbWl0O1xuICAgIHQub3ZlcnNpemUgPC0gMFxuXG5cbiAgbGV0IGZvbGQgZiB0IGluaXQgPVxuICAgIGxldCByZWMgZm9sZF9idWNrZXQgaSBiIGFjY3UgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIChmIHYgYWNjdSlcbiAgICAgIHwgTm9uZSAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIGFjY3VcbiAgICBpblxuICAgIEFycmF5LmZvbGRfcmlnaHQgKGZvbGRfYnVja2V0IDApIHQudGFibGUgaW5pdFxuXG5cbiAgbGV0IGl0ZXIgZiB0ID1cbiAgICBsZXQgcmVjIGl0ZXJfYnVja2V0IGkgYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmIHY7IGl0ZXJfYnVja2V0IChpKzEpIGJcbiAgICAgIHwgTm9uZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgaXRlcl93ZWFrIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGogYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggY2hlY2sgYiBpIHdpdGhcbiAgICAgIHwgdHJ1ZSAtPiBmIGIgdC5oYXNoZXMuKGopIGk7IGl0ZXJfYnVja2V0IChpKzEpIGogYlxuICAgICAgfCBmYWxzZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICBpblxuICAgIEFycmF5Lml0ZXJpIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgcmVjIGNvdW50X2J1Y2tldCBpIGIgYWNjdSA9XG4gICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgIGNvdW50X2J1Y2tldCAoaSsxKSBiIChhY2N1ICsgKGlmIGNoZWNrIGIgaSB0aGVuIDEgZWxzZSAwKSlcblxuXG4gIGxldCBjb3VudCB0ID1cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChjb3VudF9idWNrZXQgMCkgdC50YWJsZSAwXG5cblxuICBsZXQgbmV4dF9zeiBuID0gSW50Lm1pbiAoMyAqIG4gLyAyICsgMykgU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgbGV0IHByZXZfc3ogbiA9ICgobiAtIDMpICogMiArIDIpIC8gM1xuXG4gIGxldCB0ZXN0X3Nocmlua19idWNrZXQgdCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKHQucm92ZXIpIGluXG4gICAgbGV0IGhidWNrZXQgPSB0Lmhhc2hlcy4odC5yb3ZlcikgaW5cbiAgICBsZXQgbGVuID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCBwcmV2X2xlbiA9IHByZXZfc3ogbGVuIGluXG4gICAgbGV0IGxpdmUgPSBjb3VudF9idWNrZXQgMCBidWNrZXQgMCBpblxuICAgIGlmIGxpdmUgPD0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IHJlYyBsb29wIGkgaiA9XG4gICAgICAgIGlmIGogPj0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgICAgIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gbG9vcCAoaSArIDEpIGpcbiAgICAgICAgICBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBqIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGJsaXQgYnVja2V0IGogYnVja2V0IGkgMTtcbiAgICAgICAgICAgIGhidWNrZXQuKGkpIDwtIGhidWNrZXQuKGopO1xuICAgICAgICAgICAgbG9vcCAoaSArIDEpIChqIC0gMSk7XG4gICAgICAgICAgZW5kIGVsc2UgbG9vcCBpIChqIC0gMSk7XG4gICAgICAgIGVuZDtcbiAgICAgIGluXG4gICAgICBsb29wIDAgKGxlbmd0aCBidWNrZXQgLSAxKTtcbiAgICAgIGlmIHByZXZfbGVuID0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gW3wgfF07XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgcHJldl9sZW4gaW5cbiAgICAgICAgYmxpdCBidWNrZXQgMCBuZXdidWNrZXQgMCBwcmV2X2xlbjtcbiAgICAgICAgdC50YWJsZS4odC5yb3ZlcikgPC0gbmV3YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gQXJyYXkuc3ViIGhidWNrZXQgMCBwcmV2X2xlblxuICAgICAgZW5kO1xuICAgICAgaWYgbGVuID4gdC5saW1pdCAmJiBwcmV2X2xlbiA8PSB0LmxpbWl0IHRoZW4gdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplIC0gMTtcbiAgICBlbmQ7XG4gICAgdC5yb3ZlciA8LSAodC5yb3ZlciArIDEpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cblxuICBsZXQgcmVjIHJlc2l6ZSB0ID1cbiAgICBsZXQgb2xkbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbmV3bGVuID0gbmV4dF9zeiBvbGRsZW4gaW5cbiAgICBpZiBuZXdsZW4gPiBvbGRsZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IG5ld3QgPSBjcmVhdGUgbmV3bGVuIGluXG4gICAgICBsZXQgYWRkX3dlYWsgb2Igb2ggb2kgPVxuICAgICAgICBsZXQgc2V0dGVyIG5iIG5pIF8gPSBibGl0IG9iIG9pIG5iIG5pIDEgaW5cbiAgICAgICAgbGV0IGggPSBvaC4ob2kpIGluXG4gICAgICAgIGFkZF9hdXggbmV3dCBzZXR0ZXIgTm9uZSBoIChnZXRfaW5kZXggbmV3dCBoKTtcbiAgICAgIGluXG4gICAgICBpdGVyX3dlYWsgYWRkX3dlYWsgdDtcbiAgICAgIHQudGFibGUgPC0gbmV3dC50YWJsZTtcbiAgICAgIHQuaGFzaGVzIDwtIG5ld3QuaGFzaGVzO1xuICAgICAgdC5saW1pdCA8LSBuZXd0LmxpbWl0O1xuICAgICAgdC5vdmVyc2l6ZSA8LSBuZXd0Lm92ZXJzaXplO1xuICAgICAgdC5yb3ZlciA8LSB0LnJvdmVyIG1vZCBBcnJheS5sZW5ndGggbmV3dC50YWJsZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgdC5saW1pdCA8LSBtYXhfaW50OyAgICAgICAgICAgICAoKiBtYXhpbXVtIHNpemUgYWxyZWFkeSByZWFjaGVkICopXG4gICAgICB0Lm92ZXJzaXplIDwtIDA7XG4gICAgZW5kXG5cbiAgYW5kIGFkZF9hdXggdCBzZXR0ZXIgZCBoIGluZGV4ID1cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZXdzeiA9XG4gICAgICAgICAgSW50Lm1pbiAoMyAqIHN6IC8gMiArIDMpIChTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzKVxuICAgICAgICBpblxuICAgICAgICBpZiBuZXdzeiA8PSBzeiB0aGVuIGZhaWx3aXRoIFwiV2Vhay5NYWtlOiBoYXNoIGJ1Y2tldCBjYW5ub3QgZ3JvdyBtb3JlXCI7XG4gICAgICAgIGxldCBuZXdidWNrZXQgPSB3ZWFrX2NyZWF0ZSBuZXdzeiBpblxuICAgICAgICBsZXQgbmV3aGFzaGVzID0gQXJyYXkubWFrZSBuZXdzeiAwIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgc3o7XG4gICAgICAgIEFycmF5LmJsaXQgaGFzaGVzIDAgbmV3aGFzaGVzIDAgc3o7XG4gICAgICAgIHNldHRlciBuZXdidWNrZXQgc3ogZDtcbiAgICAgICAgbmV3aGFzaGVzLihzeikgPC0gaDtcbiAgICAgICAgdC50YWJsZS4oaW5kZXgpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKGluZGV4KSA8LSBuZXdoYXNoZXM7XG4gICAgICAgIGlmIHN6IDw9IHQubGltaXQgJiYgbmV3c3ogPiB0LmxpbWl0IHRoZW4gYmVnaW5cbiAgICAgICAgICB0Lm92ZXJzaXplIDwtIHQub3ZlcnNpemUgKyAxO1xuICAgICAgICAgIGZvciBfaSA9IDAgdG8gb3Zlcl9saW1pdCBkbyB0ZXN0X3Nocmlua19idWNrZXQgdCBkb25lO1xuICAgICAgICBlbmQ7XG4gICAgICAgIGlmIHQub3ZlcnNpemUgPiBBcnJheS5sZW5ndGggdC50YWJsZSAvIG92ZXJfbGltaXQgdGhlbiByZXNpemUgdDtcbiAgICAgIGVuZCBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gYmVnaW5cbiAgICAgICAgbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXR0ZXIgYnVja2V0IGkgZDtcbiAgICAgICAgaGFzaGVzLihpKSA8LSBoO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgYWRkIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCAoZ2V0X2luZGV4IHQgaClcblxuXG4gIGxldCBmaW5kX29yIHQgZCBpZm5vdGZvdW5kID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gaWZub3Rmb3VuZCBoIGluZGV4XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBtZXJnZSB0IGQgPVxuICAgIGZpbmRfb3IgdCBkIChmdW4gaCBpbmRleCAtPiBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggaW5kZXg7IGQpXG5cblxuICBsZXQgZmluZCB0IGQgPSBmaW5kX29yIHQgZCAoZnVuIF9oIF9pbmRleCAtPiByYWlzZSBOb3RfZm91bmQpXG5cbiAgbGV0IGZpbmRfb3B0IHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIE5vbmVcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIF8gYXMgdiAtPiB2XG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgZmluZF9zaGFkb3cgdCBkIGlmZm91bmQgaWZub3Rmb3VuZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGlmbm90Zm91bmRcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGQgLT4gaWZmb3VuZCBidWNrZXQgaVxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IHJlbW92ZSB0IGQgPSBmaW5kX3NoYWRvdyB0IGQgKGZ1biB3IGkgLT4gc2V0IHcgaSBOb25lKSAoKVxuXG5cbiAgbGV0IG1lbSB0IGQgPSBmaW5kX3NoYWRvdyB0IGQgKGZ1biBfdyBfaSAtPiB0cnVlKSBmYWxzZVxuXG5cbiAgbGV0IGZpbmRfYWxsIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgYWNjdSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gYWNjdVxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBsb29wIChpICsgMSkgKHYgOjogYWNjdSlcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpIGFjY3VcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgaW5cbiAgICBsb29wIDAgW11cblxuXG4gIGxldCBzdGF0cyB0ID1cbiAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbGVucyA9IEFycmF5Lm1hcCBsZW5ndGggdC50YWJsZSBpblxuICAgIEFycmF5LnNvcnQgY29tcGFyZSBsZW5zO1xuICAgIGxldCB0b3RsZW4gPSBBcnJheS5mb2xkX2xlZnQgKCArICkgMCBsZW5zIGluXG4gICAgKGxlbiwgY291bnQgdCwgdG90bGVuLCBsZW5zLigwKSwgbGVucy4obGVuLzIpLCBsZW5zLihsZW4tMSkpXG5cblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgcHJldHR5LXByaW50aW5nIGZhY2lsaXR5IGFuZCBkZWZpbml0aW9uIG9mIGZvcm1hdHRlcnMgZm9yICdwYXJhbGxlbCdcbiAgIChpLmUuIHVucmVsYXRlZCBvciBpbmRlcGVuZGVudCkgcHJldHR5LXByaW50aW5nIG9uIG11bHRpcGxlIG91dCBjaGFubmVscy4gKilcblxuKCpcbiAgIFRoZSBwcmV0dHktcHJpbnRpbmcgZW5naW5lIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy5cbiopXG5cbmxldCBpZCB4ID0geFxuXG4oKiBBIGRldm90ZWQgdHlwZSBmb3Igc2l6ZXMgdG8gYXZvaWQgY29uZnVzaW9uXG4gICBiZXR3ZWVuIHNpemVzIGFuZCBtZXJlIGludGVnZXJzLiAqKVxubW9kdWxlIFNpemUgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICB2YWwgemVybyA6IHRcbiAgdmFsIHVua25vd24gOiB0XG4gIHZhbCBpc19rbm93biA6IHQgLT4gYm9vbFxuZW5kICA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgdG9faW50ID0gaWRcbiAgbGV0IG9mX2ludCA9IGlkXG4gIGxldCB6ZXJvID0gMFxuICBsZXQgdW5rbm93biA9IC0xXG4gIGxldCBpc19rbm93biBuID0gbiA+PSAwXG5lbmRcblxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgYm94ZXMgZGVmaW5pdGlvbjpcbiAgIGEgcHJldHR5LXByaW50aW5nIGJveCBpcyBlaXRoZXJcbiAgIC0gaGJveDogaG9yaXpvbnRhbCBib3ggKG5vIGxpbmUgc3BsaXR0aW5nKVxuICAgLSB2Ym94OiB2ZXJ0aWNhbCBib3ggKGV2ZXJ5IGJyZWFrIGhpbnQgc3BsaXRzIHRoZSBsaW5lKVxuICAgLSBodmJveDogaG9yaXpvbnRhbC92ZXJ0aWNhbCBib3hcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIGJveCBpZiBpdCBmaXRzIG9uXG4gICAgICB0aGUgY3VycmVudCBsaW5lLCBvdGhlcndpc2UgdGhlIGJveCBiZWhhdmVzIGFzIGEgdmVydGljYWwgYm94KVxuICAgLSBob3Zib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3hcbiAgICAgKHRoZSBib3ggaXMgY29tcGFjdGluZyBtYXRlcmlhbCwgcHJpbnRpbmcgYXMgbXVjaCBtYXRlcmlhbCBhcyBwb3NzaWJsZVxuICAgICAgb24gZXZlcnkgbGluZXMpXG4gICAtIGJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveCB3aXRoIGVuaGFuY2VkIGJveCBzdHJ1Y3R1cmVcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGJveCBidXQgYnJlYWsgaGludHMgc3BsaXRcbiAgICAgIHRoZSBsaW5lIGlmIHNwbGl0dGluZyB3b3VsZCBtb3ZlIHRvIHRoZSBsZWZ0KVxuKilcbnR5cGUgYm94X3R5cGUgPSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHNcblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIHRva2VucyBkZWZpbml0aW9uOlxuICAgYXJlIGVpdGhlciB0ZXh0IHRvIHByaW50IG9yIHByZXR0eSBwcmludGluZ1xuICAgZWxlbWVudHMgdGhhdCBkcml2ZSBpbmRlbnRhdGlvbiBhbmQgbGluZSBzcGxpdHRpbmcuICopXG50eXBlIHBwX3Rva2VuID1cbiAgfCBQcF90ZXh0IG9mIHN0cmluZyAgICAgICAgICAoKiBub3JtYWwgdGV4dCAqKVxuICB8IFBwX2JyZWFrIG9mIHsgICAgICAgICAgICAgICgqIGNvbXBsZXRlIGJyZWFrICopXG4gICAgICBmaXRzOiBzdHJpbmcgKiBpbnQgKiBzdHJpbmc7ICAgKCogbGluZSBpcyBub3Qgc3BsaXQgKilcbiAgICAgIGJyZWFrczogc3RyaW5nICogaW50ICogc3RyaW5nOyAoKiBsaW5lIGlzIHNwbGl0ICopXG4gICAgfVxuICB8IFBwX3RicmVhayBvZiBpbnQgKiBpbnQgICAgICgqIGdvIHRvIG5leHQgdGFidWxhdGlvbiAqKVxuICB8IFBwX3N0YWIgICAgICAgICAgICAgICAgICAgICgqIHNldCBhIHRhYnVsYXRpb24gKilcbiAgfCBQcF9iZWdpbiBvZiBpbnQgKiBib3hfdHlwZSAoKiBiZWdpbm5pbmcgb2YgYSBib3ggKilcbiAgfCBQcF9lbmQgICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSBib3ggKilcbiAgfCBQcF90YmVnaW4gb2YgdGJveCAgICAgICAgICAoKiBiZWdpbm5pbmcgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX3RlbmQgICAgICAgICAgICAgICAgICAgICgqIGVuZCBvZiBhIHRhYnVsYXRpb24gYm94ICopXG4gIHwgUHBfbmV3bGluZSAgICAgICAgICAgICAgICAgKCogdG8gZm9yY2UgYSBuZXdsaW5lIGluc2lkZSBhIGJveCAqKVxuICB8IFBwX2lmX25ld2xpbmUgICAgICAgICAgICAgICgqIHRvIGRvIHNvbWV0aGluZyBvbmx5IGlmIHRoaXMgdmVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgaGFzIGJlZW4gYnJva2VuICopXG4gIHwgUHBfb3Blbl90YWcgb2Ygc3RhZyAgICAgICAgICgqIG9wZW5pbmcgYSB0YWcgbmFtZSAqKVxuICB8IFBwX2Nsb3NlX3RhZyAgICAgICAgICAgICAgICgqIGNsb3NpbmcgdGhlIG1vc3QgcmVjZW50bHkgb3BlbiB0YWcgKilcblxuYW5kIHN0YWcgPSAuLlxuXG5hbmQgdGJveCA9IFBwX3Rib3ggb2YgaW50IGxpc3QgcmVmICAoKiBUYWJ1bGF0aW9uIGJveCAqKVxuXG50eXBlIHRhZyA9IHN0cmluZ1xudHlwZSBzdGFnICs9IFN0cmluZ190YWcgb2YgdGFnXG5cblxuKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlOlxuICAgcHJldHR5LXByaW50aW5nIG1hdGVyaWFsIGlzIG5vdCB3cml0dGVuIGluIHRoZSBvdXRwdXQgYXMgc29vbiBhcyBlbWl0dGVkO1xuICAgaW5zdGVhZCwgdGhlIG1hdGVyaWFsIGlzIHNpbXBseSByZWNvcmRlZCBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUsXG4gICB1bnRpbCB0aGUgZW5jbG9zaW5nIGJveCBoYXMgYSBrbm93biBjb21wdXRlZCBzaXplIGFuZCBwcm9wZXIgc3BsaXR0aW5nXG4gICBkZWNpc2lvbnMgY2FuIGJlIG1hZGUuXG5cbiAgIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBjb250YWlucyBmb3JtYXR0aW5nIGVsZW1lbnRzIHRvIGJlIHByaW50ZWQuXG4gICBFYWNoIGZvcm1hdHRpbmcgZWxlbWVudCBpcyBhIHR1cGxlIChzaXplLCB0b2tlbiwgbGVuZ3RoKSwgd2hlcmVcbiAgIC0gbGVuZ3RoIGlzIHRoZSBkZWNsYXJlZCBsZW5ndGggb2YgdGhlIHRva2VuLFxuICAgLSBzaXplIGlzIGVmZmVjdGl2ZSBzaXplIG9mIHRoZSB0b2tlbiB3aGVuIGl0IGlzIHByaW50ZWRcbiAgICAgKHNpemUgaXMgc2V0IHdoZW4gdGhlIHNpemUgb2YgdGhlIGJveCBpcyBrbm93biwgc28gdGhhdCBzaXplIG9mIGJyZWFrXG4gICAgICBoaW50cyBhcmUgZGVmaW5pdGl2ZSkuICopXG50eXBlIHBwX3F1ZXVlX2VsZW0gPSB7XG4gIG11dGFibGUgc2l6ZSA6IFNpemUudDtcbiAgdG9rZW4gOiBwcF90b2tlbjtcbiAgbGVuZ3RoIDogaW50O1xufVxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBkZWZpbml0aW9uLiAqKVxudHlwZSBwcF9xdWV1ZSA9IHBwX3F1ZXVlX2VsZW0gUXVldWUudFxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjazogc2Nhbm5pbmcgZWxlbWVudCBkZWZpbml0aW9uLiAqKVxudHlwZSBwcF9zY2FuX2VsZW0gPSB7XG4gIGxlZnRfdG90YWwgOiBpbnQ7ICgqIFZhbHVlIG9mIHBwX2xlZnRfdG90YWwgd2hlbiB0aGUgZWxlbWVudCB3YXMgZW5xdWV1ZWQuICopXG4gIHF1ZXVlX2VsZW0gOiBwcF9xdWV1ZV9lbGVtXG59XG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrOlxuICAgdGhlIGZvcm1hdHRpbmcgc3RhY2sgY29udGFpbnMgdGhlIGRlc2NyaXB0aW9uIG9mIGFsbCB0aGUgY3VycmVudGx5IGFjdGl2ZVxuICAgYm94ZXM7IHRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrIGlzIHVzZWQgdG8gc3BsaXQgdGhlIGxpbmVzXG4gICB3aGlsZSBwcmludGluZyB0b2tlbnMuICopXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrOiBmb3JtYXR0aW5nIHN0YWNrIGVsZW1lbnQgZGVmaW5pdGlvbi5cbiAgIEVhY2ggc3RhY2sgZWxlbWVudCBkZXNjcmliZXMgYSBwcmV0dHktcHJpbnRpbmcgYm94LiAqKVxudHlwZSBwcF9mb3JtYXRfZWxlbSA9IHsgYm94X3R5cGUgOiBib3hfdHlwZTsgd2lkdGggOiBpbnQgfVxuXG4oKiBUaGUgZm9ybWF0dGVyIGRlZmluaXRpb24uXG4gICBFYWNoIGZvcm1hdHRlciB2YWx1ZSBpcyBhIHByZXR0eS1wcmludGVyIGluc3RhbmNlIHdpdGggYWxsIGl0c1xuICAgbWFjaGluZXJ5LiAqKVxudHlwZSBmb3JtYXR0ZXIgPSB7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay4gKilcbiAgcHBfc2Nhbl9zdGFjayA6IHBwX3NjYW5fZWxlbSBTdGFjay50O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjay4gKilcbiAgcHBfZm9ybWF0X3N0YWNrIDogcHBfZm9ybWF0X2VsZW0gU3RhY2sudDtcbiAgcHBfdGJveF9zdGFjayA6IHRib3ggU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHNlbWFudGljcyB0YWcgc3RhY2suICopXG4gIHBwX3RhZ19zdGFjayA6IHN0YWcgU3RhY2sudDtcbiAgcHBfbWFya19zdGFjayA6IHN0YWcgU3RhY2sudDtcbiAgKCogVmFsdWUgb2YgcmlnaHQgbWFyZ2luLiAqKVxuICBtdXRhYmxlIHBwX21hcmdpbiA6IGludDtcbiAgKCogTWluaW1hbCBzcGFjZSBsZWZ0IGJlZm9yZSBtYXJnaW4sIHdoZW4gb3BlbmluZyBhIGJveC4gKilcbiAgbXV0YWJsZSBwcF9taW5fc3BhY2VfbGVmdCA6IGludDtcbiAgKCogTWF4aW11bSB2YWx1ZSBvZiBpbmRlbnRhdGlvbjpcbiAgICAgbm8gYm94IGNhbiBiZSBvcGVuZWQgZnVydGhlci4gKilcbiAgbXV0YWJsZSBwcF9tYXhfaW5kZW50IDogaW50O1xuICAoKiBTcGFjZSByZW1haW5pbmcgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbiAgbXV0YWJsZSBwcF9zcGFjZV9sZWZ0IDogaW50O1xuICAoKiBDdXJyZW50IHZhbHVlIG9mIGluZGVudGF0aW9uLiAqKVxuICBtdXRhYmxlIHBwX2N1cnJlbnRfaW5kZW50IDogaW50O1xuICAoKiBUcnVlIHdoZW4gdGhlIGxpbmUgaGFzIGJlZW4gYnJva2VuIGJ5IHRoZSBwcmV0dHktcHJpbnRlci4gKilcbiAgbXV0YWJsZSBwcF9pc19uZXdfbGluZSA6IGJvb2w7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBhbHJlYWR5IHByaW50ZWQuICopXG4gIG11dGFibGUgcHBfbGVmdF90b3RhbCA6IGludDtcbiAgKCogVG90YWwgd2lkdGggb2YgdG9rZW5zIGV2ZXIgcHV0IGluIHF1ZXVlLiAqKVxuICBtdXRhYmxlIHBwX3JpZ2h0X3RvdGFsIDogaW50O1xuICAoKiBDdXJyZW50IG51bWJlciBvZiBvcGVuIGJveGVzLiAqKVxuICBtdXRhYmxlIHBwX2N1cnJfZGVwdGggOiBpbnQ7XG4gICgqIE1heGltdW0gbnVtYmVyIG9mIGJveGVzIHdoaWNoIGNhbiBiZSBzaW11bHRhbmVvdXNseSBvcGVuLiAqKVxuICBtdXRhYmxlIHBwX21heF9ib3hlcyA6IGludDtcbiAgKCogRWxsaXBzaXMgc3RyaW5nLiAqKVxuICBtdXRhYmxlIHBwX2VsbGlwc2lzIDogc3RyaW5nO1xuICAoKiBPdXRwdXQgZnVuY3Rpb24uICopXG4gIG11dGFibGUgcHBfb3V0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQ7XG4gICgqIEZsdXNoaW5nIGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9mbHVzaCA6IHVuaXQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIG5ldyBsaW5lcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIGJyZWFrIGhpbnRzIHNwYWNlcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfc3BhY2VzIDogaW50IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X2luZGVudCA6IGludCAtPiB1bml0O1xuICAoKiBBcmUgdGFncyBwcmludGVkID8gKilcbiAgbXV0YWJsZSBwcF9wcmludF90YWdzIDogYm9vbDtcbiAgKCogQXJlIHRhZ3MgbWFya2VkID8gKilcbiAgbXV0YWJsZSBwcF9tYXJrX3RhZ3MgOiBib29sO1xuICAoKiBGaW5kIG9wZW5pbmcgYW5kIGNsb3NpbmcgbWFya2VycyBvZiB0YWdzLiAqKVxuICBtdXRhYmxlIHBwX21hcmtfb3Blbl90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9tYXJrX2Nsb3NlX3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtdXRhYmxlIHBwX3ByaW50X29wZW5fdGFnIDogc3RhZyAtPiB1bml0O1xuICBtdXRhYmxlIHBwX3ByaW50X2Nsb3NlX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxuICBwcF9xdWV1ZSA6IHBwX3F1ZXVlO1xufVxuXG5cbigqIFRoZSBmb3JtYXR0ZXIgc3BlY2lmaWMgdGFnIGhhbmRsaW5nIGZ1bmN0aW9ucy4gKilcbnR5cGUgZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zID0ge1xuICBtYXJrX29wZW5fc3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtYXJrX2Nsb3NlX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgcHJpbnRfb3Blbl9zdGFnIDogc3RhZyAtPiB1bml0O1xuICBwcmludF9jbG9zZV9zdGFnIDogc3RhZyAtPiB1bml0O1xufVxuXG5cbigqIFRoZSBmb3JtYXR0ZXIgZnVuY3Rpb25zIHRvIG91dHB1dCBtYXRlcmlhbC4gKilcbnR5cGUgZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgPSB7XG4gIG91dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICBvdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gIG91dF9uZXdsaW5lIDogdW5pdCAtPiB1bml0O1xuICBvdXRfc3BhY2VzIDogaW50IC0+IHVuaXQ7XG4gIG91dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbn1cblxuXG4oKlxuXG4gIEF1eGlsaWFyaWVzIGFuZCBiYXNpYyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEVudGVyIGEgdG9rZW4gaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxubGV0IHBwX2VucXVldWUgc3RhdGUgdG9rZW4gPVxuICBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSBzdGF0ZS5wcF9yaWdodF90b3RhbCArIHRva2VuLmxlbmd0aDtcbiAgUXVldWUuYWRkIHRva2VuIHN0YXRlLnBwX3F1ZXVlXG5cblxubGV0IHBwX2NsZWFyX3F1ZXVlIHN0YXRlID1cbiAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSAxOyBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSAxO1xuICBRdWV1ZS5jbGVhciBzdGF0ZS5wcF9xdWV1ZVxuXG5cbigqIFBwX2luZmluaXR5OiBsYXJnZSB2YWx1ZSBmb3IgZGVmYXVsdCB0b2tlbnMgc2l6ZS5cblxuICAgUHBfaW5maW5pdHkgaXMgZG9jdW1lbnRlZCBhcyBiZWluZyBncmVhdGVyIHRoYW4gMWUxMDsgdG8gYXZvaWRcbiAgIGNvbmZ1c2lvbiBhYm91dCB0aGUgd29yZCAnZ3JlYXRlcicsIHdlIGNob29zZSBwcF9pbmZpbml0eSBncmVhdGVyXG4gICB0aGFuIDFlMTAgKyAxOyBmb3IgY29ycmVjdCBoYW5kbGluZyBvZiB0ZXN0cyBpbiB0aGUgYWxnb3JpdGhtLFxuICAgcHBfaW5maW5pdHkgbXVzdCBiZSBldmVuIG9uZSBtb3JlIHRoYW4gMWUxMCArIDE7IGxldCdzIHN0YW5kIG9uIHRoZVxuICAgc2FmZSBzaWRlIGJ5IGNob29zaW5nIDEuZTEwKzEwLlxuXG4gICBQcF9pbmZpbml0eSBjb3VsZCBwcm9iYWJseSBiZSAxMDczNzQxODIzIHRoYXQgaXMgMl4zMCAtIDEsIHRoYXQgaXNcbiAgIHRoZSBtaW5pbWFsIHVwcGVyIGJvdW5kIGZvciBpbnRlZ2Vyczsgbm93IHRoYXQgbWF4X2ludCBpcyBkZWZpbmVkLFxuICAgdGhpcyBsaW1pdCBjb3VsZCBhbHNvIGJlIGRlZmluZWQgYXMgbWF4X2ludCAtIDEuXG5cbiAgIEhvd2V2ZXIsIGJlZm9yZSBzZXR0aW5nIHBwX2luZmluaXR5IHRvIHNvbWV0aGluZyBhcm91bmQgbWF4X2ludCwgd2VcbiAgIG11c3QgY2FyZWZ1bGx5IGRvdWJsZS1jaGVjayBhbGwgdGhlIGludGVnZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zXG4gICB0aGF0IGludm9sdmUgcHBfaW5maW5pdHksIHNpbmNlIGFueSBvdmVyZmxvdyB3b3VsZCB3cmVjayBoYXZvYyB0aGVcbiAgIHByZXR0eS1wcmludGluZyBhbGdvcml0aG0ncyBpbnZhcmlhbnRzLiBHaXZlbiB0aGF0IHRoaXMgYXJpdGhtZXRpY1xuICAgY29ycmVjdG5lc3MgY2hlY2sgaXMgZGlmZmljdWx0IGFuZCBlcnJvciBwcm9uZSBhbmQgZ2l2ZW4gdGhhdCAxZTEwXG4gICArIDEgaXMgaW4gcHJhY3RpY2UgbGFyZ2UgZW5vdWdoLCB0aGVyZSBpcyBubyBuZWVkIHRvIGF0dGVtcHQgdG8gc2V0XG4gICBwcF9pbmZpbml0eSB0byB0aGUgdGhlb3JldGljYWxseSBtYXhpbXVtIGxpbWl0LiBJdCBpcyBub3Qgd29ydGggdGhlXG4gICBidXJkZW4gISAqKVxubGV0IHBwX2luZmluaXR5ID0gMTAwMDAwMDAxMFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIGZvciB0aGUgZm9ybWF0dGVyLiAqKVxubGV0IHBwX291dHB1dF9zdHJpbmcgc3RhdGUgcyA9IHN0YXRlLnBwX291dF9zdHJpbmcgcyAwIChTdHJpbmcubGVuZ3RoIHMpXG5hbmQgcHBfb3V0cHV0X25ld2xpbmUgc3RhdGUgPSBzdGF0ZS5wcF9vdXRfbmV3bGluZSAoKVxuYW5kIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgbiA9IHN0YXRlLnBwX291dF9zcGFjZXMgblxuYW5kIHBwX291dHB1dF9pbmRlbnQgc3RhdGUgbiA9IHN0YXRlLnBwX291dF9pbmRlbnQgblxuXG4oKiBGb3JtYXQgYSB0ZXh0dWFsIHRva2VuICopXG5sZXQgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSB0ZXh0ID1cbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gc2l6ZTtcbiAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSB0ZXh0O1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSBmYWxzZVxuXG4oKiBGb3JtYXQgYSBzdHJpbmcgYnkgaXRzIGxlbmd0aCwgaWYgbm90IGVtcHR5ICopXG5sZXQgZm9ybWF0X3N0cmluZyBzdGF0ZSBzID1cbiAgaWYgcyA8PiBcIlwiIHRoZW4gZm9ybWF0X3BwX3RleHQgc3RhdGUgKFN0cmluZy5sZW5ndGggcykgc1xuXG4oKiBUbyBmb3JtYXQgYSBicmVhaywgaW5kZW50aW5nIGEgbmV3IGxpbmUuICopXG5sZXQgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKGJlZm9yZSwgb2Zmc2V0LCBhZnRlcikgd2lkdGggPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgcHBfb3V0cHV0X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIHRydWU7XG4gIGxldCBpbmRlbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSB3aWR0aCArIG9mZnNldCBpblxuICAoKiBEb24ndCBpbmRlbnQgbW9yZSB0aGFuIHBwX21heF9pbmRlbnQuICopXG4gIGxldCByZWFsX2luZGVudCA9IEludC5taW4gc3RhdGUucHBfbWF4X2luZGVudCBpbmRlbnQgaW5cbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gcmVhbF9pbmRlbnQ7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfY3VycmVudF9pbmRlbnQ7XG4gIHBwX291dHB1dF9pbmRlbnQgc3RhdGUgc3RhdGUucHBfY3VycmVudF9pbmRlbnQ7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBmb3JjZSBhIGxpbmUgYnJlYWsgaW5zaWRlIGEgYm94OiBubyBvZmZzZXQgaXMgYWRkZWQuICopXG5sZXQgYnJlYWtfbGluZSBzdGF0ZSB3aWR0aCA9IGJyZWFrX25ld19saW5lIHN0YXRlIChcIlwiLCAwLCBcIlwiKSB3aWR0aFxuXG4oKiBUbyBmb3JtYXQgYSBicmVhayB0aGF0IGZpdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCBicmVha19zYW1lX2xpbmUgc3RhdGUgKGJlZm9yZSwgd2lkdGgsIGFmdGVyKSA9XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYmVmb3JlO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSB3aWR0aDtcbiAgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSB3aWR0aDtcbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBhZnRlclxuXG5cbigqIFRvIGluZGVudCBubyBtb3JlIHRoYW4gcHBfbWF4X2luZGVudCwgaWYgb25lIHRyaWVzIHRvIG9wZW4gYSBib3hcbiAgIGJleW9uZCBwcF9tYXhfaW5kZW50LCB0aGVuIHRoZSBib3ggaXMgcmVqZWN0ZWQgb24gdGhlIGxlZnRcbiAgIGJ5IHNpbXVsYXRpbmcgYSBicmVhay4gKilcbmxldCBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlID1cbiAgbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGVcbiAgfCBTb21lIHsgYm94X3R5cGU7IHdpZHRoIH0gLT5cbiAgICBpZiB3aWR0aCA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlblxuICAgICAgbWF0Y2ggYm94X3R5cGUgd2l0aFxuICAgICAgfCBQcF9maXRzIHwgUHBfaGJveCAtPiAoKVxuICAgICAgfCBQcF92Ym94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuXG5cbigqIFRvIHNraXAgYSB0b2tlbiwgaWYgdGhlIHByZXZpb3VzIGxpbmUgaGFzIGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3NraXBfdG9rZW4gc3RhdGUgPVxuICBtYXRjaCBRdWV1ZS50YWtlX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBwcmludF9pZl9uZXdsaW5lIG11c3QgaGF2ZSBiZWVuIHRoZSBsYXN0IHByaW50aW5nIGNvbW1hbmQgKilcbiAgfCBTb21lIHsgc2l6ZTsgbGVuZ3RoOyBfIH0gLT5cbiAgICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIHN0YXRlLnBwX2xlZnRfdG90YWwgLSBsZW5ndGg7XG4gICAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0ICsgU2l6ZS50b19pbnQgc2l6ZVxuXG5cbigqXG5cbiAgVGhlIG1haW4gcHJldHR5IHByaW50aW5nIGZ1bmN0aW9ucy5cblxuKilcblxuKCogRm9ybWF0dGluZyBhIHRva2VuIHdpdGggYSBnaXZlbiBzaXplLiAqKVxubGV0IGZvcm1hdF9wcF90b2tlbiBzdGF0ZSBzaXplID0gZnVuY3Rpb25cblxuICB8IFBwX3RleHQgcyAtPlxuICAgIGZvcm1hdF9wcF90ZXh0IHN0YXRlIHNpemUgc1xuXG4gIHwgUHBfYmVnaW4gKG9mZiwgdHkpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBpZiBpbnNlcnRpb25fcG9pbnQgPiBzdGF0ZS5wcF9tYXhfaW5kZW50IHRoZW5cbiAgICAgICgqIGNhbiBub3Qgb3BlbiBhIGJveCByaWdodCB0aGVyZS4gKilcbiAgICAgIGJlZ2luIHBwX2ZvcmNlX2JyZWFrX2xpbmUgc3RhdGUgZW5kO1xuICAgIGxldCB3aWR0aCA9IHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBvZmYgaW5cbiAgICBsZXQgYm94X3R5cGUgPVxuICAgICAgbWF0Y2ggdHkgd2l0aFxuICAgICAgfCBQcF92Ym94IC0+IFBwX3Zib3hcbiAgICAgIHwgUHBfaGJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IHwgUHBfZml0cyAtPlxuICAgICAgICBpZiBzaXplID4gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIHR5IGVsc2UgUHBfZml0cyBpblxuICAgIFN0YWNrLnB1c2ggeyBib3hfdHlwZTsgd2lkdGggfSBzdGF0ZS5wcF9mb3JtYXRfc3RhY2tcblxuICB8IFBwX2VuZCAtPlxuICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHw+IGlnbm9yZVxuXG4gIHwgUHBfdGJlZ2luIChQcF90Ym94IF8gYXMgdGJveCkgLT5cbiAgICBTdGFjay5wdXNoIHRib3ggc3RhdGUucHBfdGJveF9zdGFja1xuXG4gIHwgUHBfdGVuZCAtPlxuICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3N0YWIgLT5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHJlYyBhZGRfdGFiIG4gPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IFtuXVxuICAgICAgICB8IHggOjogbCBhcyBscyAtPiBpZiBuIDwgeCB0aGVuIG4gOjogbHMgZWxzZSB4IDo6IGFkZF90YWIgbiBsIGluXG4gICAgICB0YWJzIDo9IGFkZF90YWIgKHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQpICF0YWJzXG4gICAgZW5kXG5cbiAgfCBQcF90YnJlYWsgKG4sIG9mZikgLT5cbiAgICBsZXQgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCBpblxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gdGFidWxhdGlvbiBib3guICopXG4gICAgfCBTb21lIChQcF90Ym94IHRhYnMpIC0+XG4gICAgICBsZXQgdGFiID1cbiAgICAgICAgbWF0Y2ggIXRhYnMgd2l0aFxuICAgICAgICB8IFtdIC0+IGluc2VydGlvbl9wb2ludFxuICAgICAgICB8IGZpcnN0IDo6IF8gLT5cbiAgICAgICAgICBsZXQgcmVjIGZpbmQgPSBmdW5jdGlvblxuICAgICAgICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICAgICAgaWYgaGVhZCA+PSBpbnNlcnRpb25fcG9pbnQgdGhlbiBoZWFkIGVsc2UgZmluZCB0YWlsXG4gICAgICAgICAgICB8IFtdIC0+IGZpcnN0IGluXG4gICAgICAgICAgZmluZCAhdGFicyBpblxuICAgICAgbGV0IG9mZnNldCA9IHRhYiAtIGluc2VydGlvbl9wb2ludCBpblxuICAgICAgaWYgb2Zmc2V0ID49IDBcbiAgICAgIHRoZW4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIChcIlwiLCBvZmZzZXQgKyBuLCBcIlwiKVxuICAgICAgZWxzZSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgdGFiICsgb2ZmLCBcIlwiKSBzdGF0ZS5wcF9tYXJnaW5cbiAgICBlbmRcblxuICB8IFBwX25ld2xpbmUgLT5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IHdpZHRoOyBffSAtPiBicmVha19saW5lIHN0YXRlIHdpZHRoXG4gICAgZW5kXG5cbiAgfCBQcF9pZl9uZXdsaW5lIC0+XG4gICAgaWYgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgIT0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgIHRoZW4gcHBfc2tpcF90b2tlbiBzdGF0ZVxuXG4gIHwgUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSAtPlxuICAgIGxldCBiZWZvcmUsIG9mZiwgXyA9IGJyZWFrcyBpblxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiBib3guICopXG4gICAgfCBTb21lIHsgYm94X3R5cGU7IHdpZHRoIH0gLT5cbiAgICAgIGJlZ2luIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfaG92Ym94IC0+XG4gICAgICAgIGlmIHNpemUgKyBTdHJpbmcubGVuZ3RoIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9ib3ggLT5cbiAgICAgICAgKCogSGF2ZSB0aGUgbGluZSBqdXN0IGJlZW4gYnJva2VuIGhlcmUgPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9pc19uZXdfbGluZSB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzIGVsc2VcbiAgICAgICAgaWYgc2l6ZSArIFN0cmluZy5sZW5ndGggYmVmb3JlID4gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoIGVsc2VcbiAgICAgICAgKCogYnJlYWsgdGhlIGxpbmUgaGVyZSBsZWFkcyB0byBuZXcgaW5kZW50YXRpb24gPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA+IHN0YXRlLnBwX21hcmdpbiAtIHdpZHRoICsgb2ZmXG4gICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICAgIGVsc2UgYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfaHZib3ggLT4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICB8IFBwX2ZpdHMgLT4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfdmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfaGJveCAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgIHwgUHBfb3Blbl90YWcgdGFnX25hbWUgLT5cbiAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfb3Blbl90YWcgdGFnX25hbWUgaW5cbiAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXI7XG4gICAgIFN0YWNrLnB1c2ggdGFnX25hbWUgc3RhdGUucHBfbWFya19zdGFja1xuXG4gICB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICBiZWdpbiBtYXRjaCBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX21hcmtfc3RhY2sgd2l0aFxuICAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgIHwgU29tZSB0YWdfbmFtZSAtPlxuICAgICAgIGxldCBtYXJrZXIgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyB0YWdfbmFtZSBpblxuICAgICAgIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgbWFya2VyXG4gICAgIGVuZFxuXG5cbigqIFByaW50IGlmIHRva2VuIHNpemUgaXMga25vd24gZWxzZSBwcmludGluZyBpcyBkZWxheWVkLlxuICAgUHJpbnRpbmcgaXMgZGVsYXllZCB3aGVuIHRoZSB0ZXh0IHdhaXRpbmcgaW4gdGhlIHF1ZXVlIHJlcXVpcmVzXG4gICBtb3JlIHJvb20gdG8gZm9ybWF0IHRoYW4gZXhpc3RzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgcmVjIGFkdmFuY2VfbGVmdCBzdGF0ZSA9XG4gIG1hdGNoIFF1ZXVlLnBlZWtfb3B0IHN0YXRlLnBwX3F1ZXVlIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIE5vIHRva2VucyB0byBwcmludCAqKVxuICB8IFNvbWUgeyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gLT5cbiAgICBsZXQgcGVuZGluZ19jb3VudCA9IHN0YXRlLnBwX3JpZ2h0X3RvdGFsIC0gc3RhdGUucHBfbGVmdF90b3RhbCBpblxuICAgIGlmIFNpemUuaXNfa25vd24gc2l6ZSB8fCBwZW5kaW5nX2NvdW50ID49IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiBiZWdpblxuICAgICAgUXVldWUudGFrZSBzdGF0ZS5wcF9xdWV1ZSB8PiBpZ25vcmU7ICgqIE5vdCBlbXB0eTogd2UgcGVlayBpbnRvIGl0ICopXG4gICAgICBsZXQgc2l6ZSA9IGlmIFNpemUuaXNfa25vd24gc2l6ZSB0aGVuIFNpemUudG9faW50IHNpemUgZWxzZSBwcF9pbmZpbml0eSBpblxuICAgICAgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgdG9rZW47XG4gICAgICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIGxlbmd0aCArIHN0YXRlLnBwX2xlZnRfdG90YWw7XG4gICAgICAoYWR2YW5jZV9sZWZ0IFtAdGFpbGNhbGxdKSBzdGF0ZVxuICAgIGVuZFxuXG5cbigqIFRvIGVucXVldWUgYSB0b2tlbiA6IHRyeSB0byBhZHZhbmNlLiAqKVxubGV0IGVucXVldWVfYWR2YW5jZSBzdGF0ZSB0b2sgPSBwcF9lbnF1ZXVlIHN0YXRlIHRvazsgYWR2YW5jZV9sZWZ0IHN0YXRlXG5cblxuKCogVG8gZW5xdWV1ZSBzdHJpbmdzLiAqKVxubGV0IGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIHNpemUgcyA9XG4gIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemU7IHRva2VuID0gUHBfdGV4dCBzOyBsZW5ndGggPSBTaXplLnRvX2ludCBzaXplIH1cblxuXG5sZXQgZW5xdWV1ZV9zdHJpbmcgc3RhdGUgcyA9XG4gIGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIChTaXplLm9mX2ludCAoU3RyaW5nLmxlbmd0aCBzKSkgc1xuXG5cbigqIFJvdXRpbmVzIGZvciBzY2FuIHN0YWNrXG4gICBkZXRlcm1pbmUgc2l6ZSBvZiBib3hlcy4gKilcblxuKCogVGhlIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG5sZXQgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YWNrID1cbiAgU3RhY2suY2xlYXIgc3RhY2s7XG4gIGxldCBxdWV1ZV9lbGVtID0geyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX3RleHQgXCJcIjsgbGVuZ3RoID0gMCB9IGluXG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gLTE7IHF1ZXVlX2VsZW0gfSBzdGFja1xuXG4oKiBTZXR0aW5nIHRoZSBzaXplIG9mIGJveGVzIG9uIHNjYW4gc3RhY2s6XG4gICBpZiB0eSA9IHRydWUgdGhlbiBzaXplIG9mIGJyZWFrIGlzIHNldCBlbHNlIHNpemUgb2YgYm94IGlzIHNldDtcbiAgIGluIGVhY2ggY2FzZSBwcF9zY2FuX3N0YWNrIGlzIHBvcHBlZC5cblxuICAgTm90ZTpcbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gc2NhbiBzdGFjayBpcyBleGhhdXN0aXZlLCBzaW5jZSBzY2FuX3N0YWNrIGlzIG5ldmVyXG4gICBlbXB0eS5cbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gdG9rZW4gaW4gc2NhbiBzdGFjayBpcyBhbHNvIGV4aGF1c3RpdmUsXG4gICBzaW5jZSBzY2FuX3B1c2ggaXMgdXNlZCBvbiBicmVha3MgYW5kIG9wZW5pbmcgb2YgYm94ZXMuICopXG5sZXQgc2V0X3NpemUgc3RhdGUgdHkgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbiAgfCBTb21lIHsgbGVmdF90b3RhbDsgcXVldWVfZWxlbSB9IC0+XG4gICAgbGV0IHNpemUgPSBTaXplLnRvX2ludCBxdWV1ZV9lbGVtLnNpemUgaW5cbiAgICAoKiB0ZXN0IGlmIHNjYW4gc3RhY2sgY29udGFpbnMgYW55IGRhdGEgdGhhdCBpcyBub3Qgb2Jzb2xldGUuICopXG4gICAgaWYgbGVmdF90b3RhbCA8IHN0YXRlLnBwX2xlZnRfdG90YWwgdGhlblxuICAgICAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2tcbiAgICBlbHNlXG4gICAgICBtYXRjaCBxdWV1ZV9lbGVtLnRva2VuIHdpdGhcbiAgICAgIHwgUHBfYnJlYWsgXyB8IFBwX3RicmVhayAoXywgXykgLT5cbiAgICAgICAgaWYgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF9iZWdpbiAoXywgXykgLT5cbiAgICAgICAgaWYgbm90IHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfdGV4dCBfIHwgUHBfc3RhYiB8IFBwX3RiZWdpbiBfIHwgUHBfdGVuZCB8IFBwX2VuZFxuICAgICAgfCBQcF9uZXdsaW5lIHwgUHBfaWZfbmV3bGluZSB8IFBwX29wZW5fdGFnIF8gfCBQcF9jbG9zZV90YWcgLT5cbiAgICAgICAgKCkgKCogc2Nhbl9wdXNoIGlzIG9ubHkgdXNlZCBmb3IgYnJlYWtzIGFuZCBib3hlcy4gKilcblxuXG4oKiBQdXNoIGEgdG9rZW4gb24gcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suXG4gICBJZiBiIGlzIHRydWUgc2V0X3NpemUgaXMgY2FsbGVkLiAqKVxubGV0IHNjYW5fcHVzaCBzdGF0ZSBiIHRva2VuID1cbiAgcHBfZW5xdWV1ZSBzdGF0ZSB0b2tlbjtcbiAgaWYgYiB0aGVuIHNldF9zaXplIHN0YXRlIHRydWU7XG4gIGxldCBlbGVtID0geyBsZWZ0X3RvdGFsID0gc3RhdGUucHBfcmlnaHRfdG90YWw7IHF1ZXVlX2VsZW0gPSB0b2tlbiB9IGluXG4gIFN0YWNrLnB1c2ggZWxlbSBzdGF0ZS5wcF9zY2FuX3N0YWNrXG5cblxuKCogVG8gb3BlbiBhIG5ldyBib3ggOlxuICAgdGhlIHVzZXIgbWF5IHNldCB0aGUgZGVwdGggYm91bmQgcHBfbWF4X2JveGVzXG4gICBhbnkgdGV4dCBuZXN0ZWQgZGVlcGVyIGlzIHByaW50ZWQgYXMgdGhlIGVsbGlwc2lzIHN0cmluZy4gKilcbmxldCBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IGJyX3R5ID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF9iZWdpbiAoaW5kZW50LCBicl90eSk7IGxlbmd0aCA9IDAgfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSBmYWxzZSBlbGVtIGVsc2VcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA9IHN0YXRlLnBwX21heF9ib3hlc1xuICB0aGVuIGVucXVldWVfc3RyaW5nIHN0YXRlIHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVGhlIGJveCB3aGljaCBpcyBhbHdheXMgb3Blbi4gKilcbmxldCBwcF9vcGVuX3N5c19ib3ggc3RhdGUgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9ob3Zib3hcblxuKCogQ2xvc2UgYSBib3gsIHNldHRpbmcgc2l6ZXMgb2YgaXRzIHN1YiBib3hlcy4gKilcbmxldCBwcF9jbG9zZV9ib3ggc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSB0aGVuXG4gIGJlZ2luXG4gICAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgYmVnaW5cbiAgICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2VuZDsgbGVuZ3RoID0gMCB9O1xuICAgICAgc2V0X3NpemUgc3RhdGUgdHJ1ZTsgc2V0X3NpemUgc3RhdGUgZmFsc2VcbiAgICBlbmQ7XG4gICAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoIC0gMTtcbiAgZW5kXG5cblxuKCogT3BlbiBhIHRhZywgcHVzaGluZyBpdCBvbiB0aGUgdGFnIHN0YWNrLiAqKVxubGV0IHBwX29wZW5fc3RhZyBzdGF0ZSB0YWdfbmFtZSA9XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICBiZWdpblxuICAgIFN0YWNrLnB1c2ggdGFnX25hbWUgc3RhdGUucHBfdGFnX3N0YWNrO1xuICAgIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIHRhZ19uYW1lXG4gIGVuZDtcbiAgaWYgc3RhdGUucHBfbWFya190YWdzIHRoZW5cbiAgICBsZXQgdG9rZW4gPSBQcF9vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbjsgbGVuZ3RoID0gMCB9XG5cblxuKCogQ2xvc2UgYSB0YWcsIHBvcHBpbmcgaXQgZnJvbSB0aGUgdGFnIHN0YWNrLiAqKVxubGV0IHBwX2Nsb3NlX3N0YWcgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2Nsb3NlX3RhZzsgbGVuZ3RoID0gMCB9O1xuICBpZiBzdGF0ZS5wcF9wcmludF90YWdzIHRoZW5cbiAgICBtYXRjaCBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3RhZ19zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG1vcmUgdGFnIHRvIGNsb3NlLiAqKVxuICAgIHwgU29tZSB0YWdfbmFtZSAtPlxuICAgICAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIHRhZ19uYW1lXG5cbmxldCBwcF9vcGVuX3RhZyBzdGF0ZSBzID0gcHBfb3Blbl9zdGFnIHN0YXRlIChTdHJpbmdfdGFnIHMpXG5sZXQgcHBfY2xvc2VfdGFnIHN0YXRlICgpID0gcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKVxuXG5sZXQgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX3ByaW50X3RhZ3MgPC0gYlxubGV0IHBwX3NldF9tYXJrX3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX21hcmtfdGFncyA8LSBiXG5sZXQgcHBfZ2V0X3ByaW50X3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9wcmludF90YWdzXG5sZXQgcHBfZ2V0X21hcmtfdGFncyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmtfdGFnc1xubGV0IHBwX3NldF90YWdzIHN0YXRlIGIgPVxuICBwcF9zZXRfcHJpbnRfdGFncyBzdGF0ZSBiOyBwcF9zZXRfbWFya190YWdzIHN0YXRlIGJcblxuXG4oKiBIYW5kbGluZyB0YWcgaGFuZGxpbmcgZnVuY3Rpb25zOiBnZXQvc2V0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0YXRlICgpID0ge1xuICBtYXJrX29wZW5fc3RhZyA9IHN0YXRlLnBwX21hcmtfb3Blbl90YWc7XG4gIG1hcmtfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnO1xuICBwcmludF9vcGVuX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZztcbiAgcHJpbnRfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZztcbn1cblxuXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgIG1hcmtfb3Blbl9zdGFnID0gbW90O1xuICAgICBtYXJrX2Nsb3NlX3N0YWcgPSBtY3Q7XG4gICAgIHByaW50X29wZW5fc3RhZyA9IHBvdDtcbiAgICAgcHJpbnRfY2xvc2Vfc3RhZyA9IHBjdDtcbiAgfSA9XG4gIHN0YXRlLnBwX21hcmtfb3Blbl90YWcgPC0gbW90O1xuICBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyA8LSBtY3Q7XG4gIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIDwtIHBvdDtcbiAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIDwtIHBjdFxuXG5cbigqIEluaXRpYWxpemUgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfcmluaXQgc3RhdGUgPVxuICBwcF9jbGVhcl9xdWV1ZSBzdGF0ZTtcbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX2Zvcm1hdF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGJveF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGFnX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9tYXJrX3N0YWNrO1xuICBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA8LSAwO1xuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIDA7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfbWFyZ2luO1xuICBwcF9vcGVuX3N5c19ib3ggc3RhdGVcblxubGV0IGNsZWFyX3RhZ19zdGFjayBzdGF0ZSA9XG4gIFN0YWNrLml0ZXIgKGZ1biBfIC0+IHBwX2Nsb3NlX3RhZyBzdGF0ZSAoKSkgc3RhdGUucHBfdGFnX3N0YWNrXG5cblxuKCogRmx1c2hpbmcgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG5sZXQgcHBfZmx1c2hfcXVldWUgc3RhdGUgYiA9XG4gIGNsZWFyX3RhZ19zdGFjayBzdGF0ZTtcbiAgd2hpbGUgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgZG9cbiAgICBwcF9jbG9zZV9ib3ggc3RhdGUgKClcbiAgZG9uZTtcbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gcHBfaW5maW5pdHk7XG4gIGFkdmFuY2VfbGVmdCBzdGF0ZTtcbiAgaWYgYiB0aGVuIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBwcF9yaW5pdCBzdGF0ZVxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gZm9ybWF0IHZhbHVlcyBhbmQgdXNlIGJveGVzLlxuXG4qKVxuXG4oKiBUbyBmb3JtYXQgYSBzdHJpbmcuICopXG5sZXQgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSBzaXplIHMgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzXG5cblxubGV0IHBwX3ByaW50X2FzIHN0YXRlIGlzaXplIHMgPVxuICBwcF9wcmludF9hc19zaXplIHN0YXRlIChTaXplLm9mX2ludCBpc2l6ZSkgc1xuXG5cbmxldCBwcF9wcmludF9zdHJpbmcgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxubGV0IHBwX3ByaW50X2J5dGVzIHN0YXRlIHMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAoQnl0ZXMubGVuZ3RoIHMpIChCeXRlcy50b19zdHJpbmcgcylcblxuKCogVG8gZm9ybWF0IGFuIGludGVnZXIuICopXG5sZXQgcHBfcHJpbnRfaW50IHN0YXRlIGkgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKEludC50b19zdHJpbmcgaSlcblxuKCogVG8gZm9ybWF0IGEgZmxvYXQuICopXG5sZXQgcHBfcHJpbnRfZmxvYXQgc3RhdGUgZiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Zsb2F0IGYpXG5cbigqIFRvIGZvcm1hdCBhIGJvb2xlYW4uICopXG5sZXQgcHBfcHJpbnRfYm9vbCBzdGF0ZSBiID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfYm9vbCBiKVxuXG4oKiBUbyBmb3JtYXQgYSBjaGFyLiAqKVxubGV0IHBwX3ByaW50X2NoYXIgc3RhdGUgYyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIDEgKFN0cmluZy5tYWtlIDEgYylcblxuXG4oKiBPcGVuaW5nIGJveGVzLiAqKVxubGV0IHBwX29wZW5faGJveCBzdGF0ZSAoKSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hib3hcbmFuZCBwcF9vcGVuX3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF92Ym94XG5cbmFuZCBwcF9vcGVuX2h2Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaHZib3hcbmFuZCBwcF9vcGVuX2hvdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2hvdmJveFxuYW5kIHBwX29wZW5fYm94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfYm94XG5cblxuKCogUHJpbnRpbmcgcXVldWVkIHRleHQuXG5cbiAgIFtwcF9wcmludF9mbHVzaF0gcHJpbnRzIGFsbCBwZW5kaW5nIGl0ZW1zIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBhbmRcbiAgIHRoZW4gZmx1c2hlcyB0aGUgbG93IGxldmVsIG91dHB1dCBkZXZpY2Ugb2YgdGhlIGZvcm1hdHRlciB0byBhY3R1YWxseVxuICAgZGlzcGxheSBwcmludGluZyBtYXRlcmlhbC5cblxuICAgW3BwX3ByaW50X25ld2xpbmVdIGJlaGF2ZXMgYXMgW3BwX3ByaW50X2ZsdXNoXSBhZnRlciBwcmludGluZyBhbiBhZGRpdGlvbmFsXG4gICBuZXcgbGluZS4gKilcbmxldCBwcF9wcmludF9uZXdsaW5lIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgdHJ1ZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5hbmQgcHBfcHJpbnRfZmx1c2ggc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSBmYWxzZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5cblxuKCogVG8gZ2V0IGEgbmV3bGluZSB3aGVuIG9uZSBkb2VzIG5vdCB3YW50IHRvIGNsb3NlIHRoZSBjdXJyZW50IGJveC4gKilcbmxldCBwcF9mb3JjZV9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBUbyBmb3JtYXQgc29tZXRoaW5nLCBvbmx5IGluIGNhc2UgdGhlIGxpbmUgaGFzIGp1c3QgYmVlbiBicm9rZW4uICopXG5sZXQgcHBfcHJpbnRfaWZfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZVxuICAgICAgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2lmX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIEdlbmVyYWxpemVkIGJyZWFrIGhpbnQgdGhhdCBhbGxvd3MgcHJpbnRpbmcgc3RyaW5ncyBiZWZvcmUvYWZ0ZXJcbiAgIHNhbWUtbGluZSBvZmZzZXQgKHdpZHRoKSBvciBuZXctbGluZSBvZmZzZXQgKilcbmxldCBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGUgfmZpdHMgfmJyZWFrcyA9XG4gIGxldCBiZWZvcmUsIHdpZHRoLCBhZnRlciA9IGZpdHMgaW5cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgdG9rZW4gPSBQcF9icmVhayB7IGZpdHM7IGJyZWFrcyB9IGluXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggYmVmb3JlICsgd2lkdGggKyBTdHJpbmcubGVuZ3RoIGFmdGVyIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuKCogUHJpbnRpbmcgYnJlYWsgaGludHM6XG4gICBBIGJyZWFrIGhpbnQgaW5kaWNhdGVzIHdoZXJlIGEgYm94IG1heSBiZSBicm9rZW4uXG4gICBJZiBsaW5lIGlzIGJyb2tlbiB0aGVuIG9mZnNldCBpcyBhZGRlZCB0byB0aGUgaW5kZW50YXRpb24gb2YgdGhlIGN1cnJlbnRcbiAgIGJveCBlbHNlICh0aGUgdmFsdWUgb2YpIHdpZHRoIGJsYW5rcyBhcmUgcHJpbnRlZC4gKilcbmxldCBwcF9wcmludF9icmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGVcbiAgICB+Zml0czooXCJcIiwgd2lkdGgsIFwiXCIpIH5icmVha3M6KFwiXCIsIG9mZnNldCwgXCJcIilcblxuXG4oKiBQcmludCBhIHNwYWNlIDpcbiAgIGEgc3BhY2UgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIGEgc2luZ2xlIHNwYWNlIGlmIHRoZSBicmVhayBkb2VzIG5vdFxuICAgc3BsaXQgdGhlIGxpbmU7XG4gICBhIGN1dCBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgbm90aGluZyBpZiB0aGUgYnJlYWsgZG9lcyBub3Qgc3BsaXQgdGhlXG4gICBsaW5lLiAqKVxubGV0IHBwX3ByaW50X3NwYWNlIHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMSAwXG5hbmQgcHBfcHJpbnRfY3V0IHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMCAwXG5cblxuKCogVGFidWxhdGlvbiBib3hlcy4gKilcbmxldCBwcF9vcGVuX3Rib3ggc3RhdGUgKCkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUuemVybyBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RiZWdpbiAoUHBfdGJveCAocmVmIFtdKSk7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCogQ2xvc2UgYSB0YWJ1bGF0aW9uIGJveC4gKilcbmxldCBwcF9jbG9zZV90Ym94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3RlbmQ7IGxlbmd0aCA9IDAgfSBpblxuICAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbTtcbiAgICAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoIC0gMVxuICBlbmRcblxuXG4oKiBQcmludCBhIHRhYnVsYXRpb24gYnJlYWsuICopXG5sZXQgcHBfcHJpbnRfdGJyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJyZWFrICh3aWR0aCwgb2Zmc2V0KTsgbGVuZ3RoID0gd2lkdGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuXG5sZXQgcHBfcHJpbnRfdGFiIHN0YXRlICgpID0gcHBfcHJpbnRfdGJyZWFrIHN0YXRlIDAgMFxuXG5sZXQgcHBfc2V0X3RhYiBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3N0YWI7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCpcblxuICBQcm9jZWR1cmVzIHRvIGNvbnRyb2wgdGhlIHByZXR0eS1wcmludGVyc1xuXG4qKVxuXG4oKiBTZXRfbWF4X2JveGVzLiAqKVxubGV0IHBwX3NldF9tYXhfYm94ZXMgc3RhdGUgbiA9IGlmIG4gPiAxIHRoZW4gc3RhdGUucHBfbWF4X2JveGVzIDwtIG5cblxuKCogVG8ga25vdyB0aGUgY3VycmVudCBtYXhpbXVtIG51bWJlciBvZiBib3hlcyBhbGxvd2VkLiAqKVxubGV0IHBwX2dldF9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxubGV0IHBwX292ZXJfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfY3Vycl9kZXB0aCA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG4oKiBFbGxpcHNpcy4gKilcbmxldCBwcF9zZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSBzID0gc3RhdGUucHBfZWxsaXBzaXMgPC0gc1xuYW5kIHBwX2dldF9lbGxpcHNpc190ZXh0IHN0YXRlICgpID0gc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUbyBzZXQgdGhlIG1hcmdpbiBvZiBwcmV0dHktcHJpbnRlci4gKilcbmxldCBwcF9saW1pdCBuID1cbiAgaWYgbiA8IHBwX2luZmluaXR5IHRoZW4gbiBlbHNlIHByZWQgcHBfaW5maW5pdHlcblxuXG4oKiBJbnRlcm5hbCBwcmV0dHktcHJpbnRlciBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0IDwtIG47XG4gICAgc3RhdGUucHBfbWF4X2luZGVudCA8LSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9yaW5pdCBzdGF0ZVxuXG5cbigqIEluaXRpYWxseSwgd2UgaGF2ZSA6XG4gICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQsIGFuZFxuICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbi4gKilcbmxldCBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuID1cbiAgaWYgbiA+IDEgdGhlblxuICAgIHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSAoc3RhdGUucHBfbWFyZ2luIC0gbilcblxuXG5sZXQgcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfaW5kZW50XG5cbmxldCBwcF9zZXRfbWFyZ2luIHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21hcmdpbiA8LSBuO1xuICAgIGxldCBuZXdfbWF4X2luZGVudCA9XG4gICAgICAoKiBUcnkgdG8gbWFpbnRhaW4gbWF4X2luZGVudCB0byBpdHMgYWN0dWFsIHZhbHVlLiAqKVxuICAgICAgaWYgc3RhdGUucHBfbWF4X2luZGVudCA8PSBzdGF0ZS5wcF9tYXJnaW5cbiAgICAgIHRoZW4gc3RhdGUucHBfbWF4X2luZGVudCBlbHNlXG4gICAgICAoKiBJZiBwb3NzaWJsZSBtYWludGFpbiBwcF9taW5fc3BhY2VfbGVmdCB0byBpdHMgYWN0dWFsIHZhbHVlLFxuICAgICAgICAgaWYgdGhpcyBsZWFkcyB0byBhIHRvbyBzbWFsbCBtYXhfaW5kZW50LCB0YWtlIGhhbGYgb2YgdGhlXG4gICAgICAgICBuZXcgbWFyZ2luLCBpZiBpdCBpcyBncmVhdGVyIHRoYW4gMS4gKilcbiAgICAgICBJbnQubWF4IChJbnQubWF4IChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdClcbiAgICAgICAgICAgICAgICAoc3RhdGUucHBfbWFyZ2luIC8gMikpIDEgaW5cbiAgICAoKiBSZWJ1aWxkIGludmFyaWFudHMuICopXG4gICAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbmV3X21heF9pbmRlbnRcblxuXG4oKiogR2VvbWV0cnkgZnVuY3Rpb25zIGFuZCB0eXBlcyAqKVxudHlwZSBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDppbnQ7IG1hcmdpbjogaW50fVxuXG5sZXQgdmFsaWRhdGVfZ2VvbWV0cnkge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBpZiBtYXhfaW5kZW50IDwgMiB0aGVuXG4gICAgRXJyb3IgXCJtYXhfaW5kZW50IDwgMlwiXG4gIGVsc2UgaWYgbWFyZ2luIDw9IG1heF9pbmRlbnQgdGhlblxuICAgIEVycm9yIFwibWFyZ2luIDw9IG1heF9pbmRlbnRcIlxuICBlbHNlIE9rICgpXG5cbmxldCBjaGVja19nZW9tZXRyeSBnZW9tZXRyeSA9XG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBPayAoKSAtPiB0cnVlXG4gIHwgRXJyb3IgXyAtPiBmYWxzZVxuXG5sZXQgcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmdpblxuXG5sZXQgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBwcF9zZXRfbWFyZ2luIHN0YXRlIG1hcmdpbjtcbiAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbWF4X2luZGVudDtcbiAgKClcblxubGV0IHBwX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgbXNnIC0+XG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiRm9ybWF0LnBwX3NldF9nZW9tZXRyeTogXCIgXiBtc2cpKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX3NhZmVfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBfbXNnIC0+XG4gICAgICgpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpID1cbiAgeyBtYXJnaW4gPSBwcF9nZXRfbWFyZ2luIHN0YXRlICgpOyBtYXhfaW5kZW50ID0gcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgfVxuXG5sZXQgcHBfdXBkYXRlX2dlb21ldHJ5IHN0YXRlIHVwZGF0ZSA9XG4gIGxldCBnZW9tZXRyeSA9IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSBpblxuICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSAodXBkYXRlIGdlb21ldHJ5KVxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgIG91dF9zdHJpbmcgPSBmO1xuICAgICAgb3V0X2ZsdXNoID0gZztcbiAgICAgIG91dF9uZXdsaW5lID0gaDtcbiAgICAgIG91dF9zcGFjZXMgPSBpO1xuICAgICAgb3V0X2luZGVudCA9IGo7XG4gICAgfSA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjtcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGc7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGg7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gaTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBqXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUgKCkgPSB7XG4gIG91dF9zdHJpbmcgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nO1xuICBvdXRfZmx1c2ggPSBzdGF0ZS5wcF9vdXRfZmx1c2g7XG4gIG91dF9uZXdsaW5lID0gc3RhdGUucHBfb3V0X25ld2xpbmU7XG4gIG91dF9zcGFjZXMgPSBzdGF0ZS5wcF9vdXRfc3BhY2VzO1xuICBvdXRfaW5kZW50ID0gc3RhdGUucHBfb3V0X2luZGVudDtcbn1cblxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIHN0cmluZyBvdXRwdXQgYW5kIGZsdXNoIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgZiBnID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmOyBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZ1xuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlICgpID1cbiAgKHN0YXRlLnBwX291dF9zdHJpbmcsIHN0YXRlLnBwX291dF9mbHVzaClcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfbmV3bGluZSBzdGF0ZSAoKSA9IHN0YXRlLnBwX291dF9zdHJpbmcgXCJcXG5cIiAwICAxXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBzcGFjZXMuICopXG5sZXQgYmxhbmtfbGluZSA9IFN0cmluZy5tYWtlIDgwICcgJ1xubGV0IHJlYyBkaXNwbGF5X2JsYW5rcyBzdGF0ZSBuID1cbiAgaWYgbiA+IDAgdGhlblxuICBpZiBuIDw9IDgwIHRoZW4gc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgbiBlbHNlXG4gIGJlZ2luXG4gICAgc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgODA7XG4gICAgZGlzcGxheV9ibGFua3Mgc3RhdGUgKG4gLSA4MClcbiAgZW5kXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IGluZGVudGF0aW9uIG9mIG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X2luZGVudCA9IGRpc3BsYXlfYmxhbmtzXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucyBhcyBwcmludGluZyB0byBhIGdpdmVuXG4gICBbUGVydmFzaXZlLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHN0YXRlIG9jID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBvdXRwdXRfc3Vic3RyaW5nIG9jO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gKGZ1biAoKSAtPiBmbHVzaCBvYyk7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBzdGF0ZVxuXG4oKlxuXG4gIERlZmluaW5nIHNwZWNpZmljIGZvcm1hdHRlcnNcblxuKilcblxubGV0IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPFwiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5sZXQgZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPC9cIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxuXG5sZXQgZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyA9IGlnbm9yZVxubGV0IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnID0gaWdub3JlXG5cbigqIEJ1aWxkaW5nIGEgZm9ybWF0dGVyIGdpdmVuIGl0cyBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLlxuICAgT3RoZXIgZmllbGRzIGdldCByZWFzb25hYmxlIGRlZmF1bHQgdmFsdWVzLiAqKVxubGV0IHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgaiA9XG4gICgqIFRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBmb3JtYXR0ZXIgY29udGFpbnMgYSBkdW1teSBib3guICopXG4gIGxldCBwcF9xdWV1ZSA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQgc3lzX3RvayA9XG4gICAgeyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX2JlZ2luICgwLCBQcF9ob3Zib3gpOyBsZW5ndGggPSAwIH0gaW5cbiAgUXVldWUuYWRkIHN5c190b2sgcHBfcXVldWU7XG4gIGxldCBzY2FuX3N0YWNrID0gU3RhY2suY3JlYXRlICgpIGluXG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzY2FuX3N0YWNrO1xuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IDE7IHF1ZXVlX2VsZW0gPSBzeXNfdG9rIH0gc2Nhbl9zdGFjaztcbiAgbGV0IHBwX21hcmdpbiA9IDc4XG4gIGFuZCBwcF9taW5fc3BhY2VfbGVmdCA9IDEwIGluXG4gIHtcbiAgICBwcF9zY2FuX3N0YWNrID0gc2Nhbl9zdGFjaztcbiAgICBwcF9mb3JtYXRfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGJveF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90YWdfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFya19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJnaW4gPSBwcF9tYXJnaW47XG4gICAgcHBfbWluX3NwYWNlX2xlZnQgPSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbjtcbiAgICBwcF9jdXJyZW50X2luZGVudCA9IDA7XG4gICAgcHBfaXNfbmV3X2xpbmUgPSB0cnVlO1xuICAgIHBwX2xlZnRfdG90YWwgPSAxO1xuICAgIHBwX3JpZ2h0X3RvdGFsID0gMTtcbiAgICBwcF9jdXJyX2RlcHRoID0gMTtcbiAgICBwcF9tYXhfYm94ZXMgPSBtYXhfaW50O1xuICAgIHBwX2VsbGlwc2lzID0gXCIuXCI7XG4gICAgcHBfb3V0X3N0cmluZyA9IGY7XG4gICAgcHBfb3V0X2ZsdXNoID0gZztcbiAgICBwcF9vdXRfbmV3bGluZSA9IGg7XG4gICAgcHBfb3V0X3NwYWNlcyA9IGk7XG4gICAgcHBfb3V0X2luZGVudCA9IGo7XG4gICAgcHBfcHJpbnRfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfb3Blbl90YWcgPSBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWc7XG4gICAgcHBfbWFya19jbG9zZV90YWcgPSBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnO1xuICAgIHBwX3ByaW50X29wZW5fdGFnID0gZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZztcbiAgICBwcF9wcmludF9jbG9zZV90YWcgPSBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZztcbiAgICBwcF9xdWV1ZSA9IHBwX3F1ZXVlO1xuICB9XG5cblxuKCogQnVpbGQgYSBmb3JtYXR0ZXIgb3V0IG9mIGl0cyBvdXQgZnVuY3Rpb25zLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfZnVuY3Rpb25zIG91dF9mdW5zID1cbiAgcHBfbWFrZV9mb3JtYXR0ZXJcbiAgICBvdXRfZnVucy5vdXRfc3RyaW5nXG4gICAgb3V0X2Z1bnMub3V0X2ZsdXNoXG4gICAgb3V0X2Z1bnMub3V0X25ld2xpbmVcbiAgICBvdXRfZnVucy5vdXRfc3BhY2VzXG4gICAgb3V0X2Z1bnMub3V0X2luZGVudFxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd2l0aCBkZWZhdWx0IGZ1bmN0aW9ucyB0byBvdXRwdXQgc3BhY2VzLFxuICBpbmRlbnRhdGlvbiwgYW5kIG5ldyBsaW5lcy4gKilcbmxldCBtYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggPVxuICBsZXQgcHBmID0gcHBfbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoIGlnbm9yZSBpZ25vcmUgaWdub3JlIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgcHBmXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW1BlcnZhc2l2ZS5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jID1cbiAgbWFrZV9mb3JtYXR0ZXIgKG91dHB1dF9zdWJzdHJpbmcgb2MpIChmdW4gKCkgLT4gZmx1c2ggb2MpXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW0J1ZmZlci50XSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgPVxuICBtYWtlX2Zvcm1hdHRlciAoQnVmZmVyLmFkZF9zdWJzdHJpbmcgYikgaWdub3JlXG5cblxuKCogQWxsb2NhdGluZyBidWZmZXIgZm9yIHByZXR0eS1wcmludGluZyBwdXJwb3Nlcy5cbiAgIERlZmF1bHQgYnVmZmVyIHNpemUgaXMgcHBfYnVmZmVyX3NpemUgb3IgNTEyLlxuKilcbmxldCBwcF9idWZmZXJfc2l6ZSA9IDUxMlxubGV0IHBwX21ha2VfYnVmZmVyICgpID0gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZVxuXG4oKiBUaGUgc3RhbmRhcmQgKHNoYXJlZCkgYnVmZmVyLiAqKVxubGV0IHN0ZGJ1ZiA9IHBwX21ha2VfYnVmZmVyICgpXG5cbigqIFByZWRlZmluZWQgZm9ybWF0dGVycyBzdGFuZGFyZCBmb3JtYXR0ZXIgdG8gcHJpbnRcbiAgIHRvIFtTdGRsaWIuc3Rkb3V0XSwgW1N0ZGxpYi5zdGRlcnJdLCBhbmQgeyFzdGRidWZ9LiAqKVxubGV0IHN0ZF9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZG91dFxuYW5kIGVycl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZGVyclxuYW5kIHN0cl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIHN0ZGJ1ZlxuXG5cbigqIFtmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGZdIGZsdXNoZXMgZm9ybWF0dGVyIFtwcGZdLFxuICAgdGhlbiByZXR1cm5zIHRoZSBjb250ZW50cyBvZiBidWZmZXIgW2J1Zl0gdGhhdCBpcyByZXNldC5cbiAgIEZvcm1hdHRlciBbcHBmXSBpcyBzdXBwb3NlZCB0byBwcmludCB0byBidWZmZXIgW2J1Zl0sIG90aGVyd2lzZSB0aGlzXG4gICBmdW5jdGlvbiBpcyBub3QgcmVhbGx5IHVzZWZ1bC4gKilcbmxldCBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGYgPVxuICBwcF9mbHVzaF9xdWV1ZSBwcGYgZmFsc2U7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBCdWZmZXIucmVzZXQgYnVmO1xuICBzXG5cblxuKCogRmx1c2ggW3N0cl9mb3JtYXR0ZXJdIGFuZCBnZXQgdGhlIGNvbnRlbnRzIG9mIFtzdGRidWZdLiAqKVxubGV0IGZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkgPSBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIHN0ZGJ1ZiBzdHJfZm9ybWF0dGVyXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZ1xuKilcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nIGlzIHByZXR0eS1wcmludGluZyB3aXRoIG5vIGxvdyBsZXZlbCBvdXRwdXQuXG5cbiAgV2hlbiB1c2luZyBhIHN5bWJvbGljIGZvcm1hdHRlciwgYWxsIHJlZ3VsYXIgcHJldHR5LXByaW50aW5nIGFjdGl2aXRpZXNcbiAgb2NjdXIgYnV0IG91dHB1dCBtYXRlcmlhbCBpcyBzeW1ib2xpYyBhbmQgc3RvcmVkIGluIGEgYnVmZmVyIG9mIG91dHB1dFxuICBpdGVtcy4gQXQgdGhlIGVuZCBvZiBwcmV0dHktcHJpbnRpbmcsIGZsdXNoaW5nIHRoZSBvdXRwdXQgYnVmZmVyIGFsbG93c1xuICBwb3N0LXByb2Nlc3Npbmcgb2Ygc3ltYm9saWMgb3V0cHV0IGJlZm9yZSBsb3cgbGV2ZWwgb3V0cHV0IG9wZXJhdGlvbnMuXG4qKVxuXG50eXBlIHN5bWJvbGljX291dHB1dF9pdGVtID1cbiAgfCBPdXRwdXRfZmx1c2hcbiAgfCBPdXRwdXRfbmV3bGluZVxuICB8IE91dHB1dF9zdHJpbmcgb2Ygc3RyaW5nXG4gIHwgT3V0cHV0X3NwYWNlcyBvZiBpbnRcbiAgfCBPdXRwdXRfaW5kZW50IG9mIGludFxuXG50eXBlIHN5bWJvbGljX291dHB1dF9idWZmZXIgPSB7XG4gIG11dGFibGUgc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDogc3ltYm9saWNfb3V0cHV0X2l0ZW0gbGlzdDtcbn1cblxubGV0IG1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciAoKSA9XG4gIHsgc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzID0gW10gfVxuXG5sZXQgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIFtdXG5cbmxldCBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBMaXN0LnJldiBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzXG5cbmxldCBmbHVzaF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBpdGVtcyA9IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiBpblxuICBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYjtcbiAgaXRlbXNcblxubGV0IGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgaXRlbSA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gaXRlbSA6OiBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzXG5cbmxldCBmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgc3ltYm9saWNfZmx1c2ggc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9mbHVzaFxuICBhbmQgc3ltYm9saWNfbmV3bGluZSBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X25ld2xpbmVcbiAgYW5kIHN5bWJvbGljX3N0cmluZyBzb2IgcyBpIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zdHJpbmcgKFN0cmluZy5zdWIgcyBpIG4pKVxuICBhbmQgc3ltYm9saWNfc3BhY2VzIHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3BhY2VzIG4pXG4gIGFuZCBzeW1ib2xpY19pbmRlbnQgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9pbmRlbnQgbikgaW5cblxuICBsZXQgZiA9IHN5bWJvbGljX3N0cmluZyBzb2JcbiAgYW5kIGcgPSBzeW1ib2xpY19mbHVzaCBzb2JcbiAgYW5kIGggPSBzeW1ib2xpY19uZXdsaW5lIHNvYlxuICBhbmQgaSA9IHN5bWJvbGljX3NwYWNlcyBzb2JcbiAgYW5kIGogPSBzeW1ib2xpY19pbmRlbnQgc29iIGluXG4gIHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgalxuXG4oKlxuXG4gIEJhc2ljIGZ1bmN0aW9ucyBvbiB0aGUgJ3N0YW5kYXJkJyBmb3JtYXR0ZXJcbiAgKHRoZSBmb3JtYXR0ZXIgdGhhdCBwcmludHMgdG8gW1N0ZGxpYi5zdGRvdXRdKS5cblxuKilcblxubGV0IG9wZW5faGJveCA9IHBwX29wZW5faGJveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl92Ym94ID0gcHBfb3Blbl92Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX2h2Ym94ID0gcHBfb3Blbl9odmJveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl9ob3Zib3ggPSBwcF9vcGVuX2hvdmJveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl9ib3ggPSBwcF9vcGVuX2JveCBzdGRfZm9ybWF0dGVyXG5hbmQgY2xvc2VfYm94ID0gcHBfY2xvc2VfYm94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX3RhZyA9IHBwX29wZW5fdGFnIHN0ZF9mb3JtYXR0ZXJcbmFuZCBjbG9zZV90YWcgPSBwcF9jbG9zZV90YWcgc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5fc3RhZyA9IHBwX29wZW5fc3RhZyBzdGRfZm9ybWF0dGVyXG5hbmQgY2xvc2Vfc3RhZyA9IHBwX2Nsb3NlX3N0YWcgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2FzID0gcHBfcHJpbnRfYXMgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X3N0cmluZyA9IHBwX3ByaW50X3N0cmluZyBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfYnl0ZXMgPSBwcF9wcmludF9ieXRlcyBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfaW50ID0gcHBfcHJpbnRfaW50IHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9mbG9hdCA9IHBwX3ByaW50X2Zsb2F0IHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9jaGFyID0gcHBfcHJpbnRfY2hhciBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfYm9vbCA9IHBwX3ByaW50X2Jvb2wgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2JyZWFrID0gcHBfcHJpbnRfYnJlYWsgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2N1dCA9IHBwX3ByaW50X2N1dCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfc3BhY2UgPSBwcF9wcmludF9zcGFjZSBzdGRfZm9ybWF0dGVyXG5hbmQgZm9yY2VfbmV3bGluZSA9IHBwX2ZvcmNlX25ld2xpbmUgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2ZsdXNoID0gcHBfcHJpbnRfZmx1c2ggc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X25ld2xpbmUgPSBwcF9wcmludF9uZXdsaW5lIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9pZl9uZXdsaW5lID0gcHBfcHJpbnRfaWZfbmV3bGluZSBzdGRfZm9ybWF0dGVyXG5cbmFuZCBvcGVuX3Rib3ggPSBwcF9vcGVuX3Rib3ggc3RkX2Zvcm1hdHRlclxuYW5kIGNsb3NlX3Rib3ggPSBwcF9jbG9zZV90Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF90YnJlYWsgPSBwcF9wcmludF90YnJlYWsgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X3RhYiA9IHBwX3NldF90YWIgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X3RhYiA9IHBwX3ByaW50X3RhYiBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfbWFyZ2luID0gcHBfc2V0X21hcmdpbiBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X21hcmdpbiA9IHBwX2dldF9tYXJnaW4gc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X21heF9pbmRlbnQgPSBwcF9zZXRfbWF4X2luZGVudCBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X21heF9pbmRlbnQgPSBwcF9nZXRfbWF4X2luZGVudCBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZ2VvbWV0cnkgPSBwcF9zZXRfZ2VvbWV0cnkgc3RkX2Zvcm1hdHRlclxuYW5kIHNhZmVfc2V0X2dlb21ldHJ5ID0gcHBfc2FmZV9zZXRfZ2VvbWV0cnkgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9nZW9tZXRyeSA9IHBwX2dldF9nZW9tZXRyeSBzdGRfZm9ybWF0dGVyXG5hbmQgdXBkYXRlX2dlb21ldHJ5ID0gcHBfdXBkYXRlX2dlb21ldHJ5IHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9tYXhfYm94ZXMgPSBwcF9zZXRfbWF4X2JveGVzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfbWF4X2JveGVzID0gcHBfZ2V0X21heF9ib3hlcyBzdGRfZm9ybWF0dGVyXG5hbmQgb3Zlcl9tYXhfYm94ZXMgPSBwcF9vdmVyX21heF9ib3hlcyBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZWxsaXBzaXNfdGV4dCA9IHBwX3NldF9lbGxpcHNpc190ZXh0IHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZWxsaXBzaXNfdGV4dCA9IHBwX2dldF9lbGxpcHNpc190ZXh0IHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgPVxuICBwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgc2V0X3ByaW50X3RhZ3MgPVxuICBwcF9zZXRfcHJpbnRfdGFncyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X3ByaW50X3RhZ3MgPVxuICBwcF9nZXRfcHJpbnRfdGFncyBzdGRfZm9ybWF0dGVyXG5hbmQgc2V0X21hcmtfdGFncyA9XG4gIHBwX3NldF9tYXJrX3RhZ3Mgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9tYXJrX3RhZ3MgPVxuICBwcF9nZXRfbWFya190YWdzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBzZXRfdGFncyA9XG4gIHBwX3NldF90YWdzIHN0ZF9mb3JtYXR0ZXJcblxuXG4oKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgKilcblxuKCogVG8gZm9ybWF0IGEgbGlzdCAqKVxubGV0IHJlYyBwcF9wcmludF9saXN0ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBbdl0gLT4gcHBfdiBwcGYgdlxuICB8IHYgOjogdnMgLT5cbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3NlcCBwcGYgKCk7XG4gICAgcHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBwX3YgcHBmIHZzXG5cbigqIFRvIGZvcm1hdCBhIHNlcXVlbmNlICopXG5sZXQgcmVjIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgU2VxLk5pbCAtPiAoKVxuICB8IFNlcS5Db25zICh2LCBzZXEpIC0+XG4gICAgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcVxuXG5sZXQgcHBfcHJpbnRfc2VxID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gKClcbiAgfCBTZXEuQ29ucyAodiwgc2VxKSAtPlxuICAgIHBwX3YgcHBmIHY7XG4gICAgcHBfcHJpbnRfc2VxX2luIH5wcF9zZXAgcHBfdiBwcGYgc2VxXG5cbigqIFRvIGZvcm1hdCBmcmVlLWZsb3dpbmcgdGV4dCAqKVxubGV0IHBwX3ByaW50X3RleHQgcHBmIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsZWZ0ID0gcmVmIDAgaW5cbiAgbGV0IHJpZ2h0ID0gcmVmIDAgaW5cbiAgbGV0IGZsdXNoICgpID1cbiAgICBwcF9wcmludF9zdHJpbmcgcHBmIChTdHJpbmcuc3ViIHMgIWxlZnQgKCFyaWdodCAtICFsZWZ0KSk7XG4gICAgaW5jciByaWdodDsgbGVmdCA6PSAhcmlnaHQ7XG4gIGluXG4gIHdoaWxlICghcmlnaHQgPD4gbGVuKSBkb1xuICAgIG1hdGNoIHMuWyFyaWdodF0gd2l0aFxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBmbHVzaCAoKTtcbiAgICAgICAgcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgICAgIHwgJyAnIC0+XG4gICAgICAgIGZsdXNoICgpOyBwcF9wcmludF9zcGFjZSBwcGYgKClcbiAgICAgICgqIHRoZXJlIGlzIG5vIHNwZWNpZmljIHN1cHBvcnQgZm9yICdcXHQnXG4gICAgICAgICBhcyBpdCBpcyB1bmNsZWFyIHdoYXQgYSByaWdodCBzZW1hbnRpY3Mgd291bGQgYmUgKilcbiAgICAgIHwgXyAtPiBpbmNyIHJpZ2h0XG4gIGRvbmU7XG4gIGlmICFsZWZ0IDw+IGxlbiB0aGVuIGZsdXNoICgpXG5cbmxldCBwcF9wcmludF9vcHRpb24gPyhub25lID0gZnVuIF8gKCkgLT4gKCkpIHBwX3YgcHBmID0gZnVuY3Rpb25cbnwgTm9uZSAtPiBub25lIHBwZiAoKVxufCBTb21lIHYgLT4gcHBfdiBwcGYgdlxuXG5sZXQgcHBfcHJpbnRfcmVzdWx0IH5vayB+ZXJyb3IgcHBmID0gZnVuY3Rpb25cbnwgT2sgdiAtPiBvayBwcGYgdlxufCBFcnJvciBlIC0+IGVycm9yIHBwZiBlXG5cbmxldCBwcF9wcmludF9laXRoZXIgfmxlZnQgfnJpZ2h0IHBwZiA9IGZ1bmN0aW9uXG58IEVpdGhlci5MZWZ0IGwgLT4gbGVmdCBwcGYgbFxufCBFaXRoZXIuUmlnaHQgciAtPiByaWdodCBwcGYgclxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY29tcHV0ZV90YWcgb3V0cHV0IHRhZ19hY2MgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxNiBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgb3V0cHV0IHBwZiB0YWdfYWNjO1xuICBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIGxldCBsZW4gPSBCdWZmZXIubGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPCAyIHRoZW4gQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICBlbHNlIEJ1ZmZlci5zdWIgYnVmIDEgKGxlbiAtIDIpXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuICBEZWZpbmluZyBjb250aW51YXRpb25zIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudHMgb2ZcbiAgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLlxuXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxuKCogSW50ZXJwcmV0IGEgZm9ybWF0dGluZyBlbnRpdHkgb24gYSBmb3JtYXR0ZXIuICopXG5sZXQgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmbXRpbmdfbGl0ID0gbWF0Y2ggZm10aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV9ib3ggcHBmICgpXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV90YWcgcHBmICgpXG4gIHwgQnJlYWsgKF8sIHdpZHRoLCBvZmZzZXQpICAtPiBwcF9wcmludF9icmVhayBwcGYgd2lkdGggb2Zmc2V0XG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9mbHVzaCBwcGYgKClcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9wcmludF9uZXdsaW5lIHBwZiAoKVxuICB8IE1hZ2ljX3NpemUgKF8sIF8pICAgICAgICAgLT4gKClcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJ1xuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJyUnXG4gIHwgU2Nhbl9pbmRpYyBjICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCc7IHBwX3ByaW50X2NoYXIgcHBmIGNcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhbiBvdXRwdXRfc3RyZWFtLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLm91dHB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgb3V0cHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgZiBwcGY7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gb3V0cHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLmJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZGVsYXkgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChmICgpKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiAoZiAoKSk7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKlxuXG4gIERlZmluaW5nIFtmcHJpbnRmXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtmcHJpbnRmXS5cblxuKilcblxubGV0IGtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIHBwZiBhY2M7IGsgcHBmKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmFuZCBpa2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBwcGYgZm10XG5cbmxldCBpZnByaW50ZiBfcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGlnbm9yZSAoKSBmbXRcblxubGV0IGZwcmludGYgcHBmID0ga2ZwcmludGYgaWdub3JlIHBwZlxubGV0IHByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZF9mb3JtYXR0ZXIgZm10XG5sZXQgZXByaW50ZiBmbXQgPSBmcHJpbnRmIGVycl9mb3JtYXR0ZXIgZm10XG5cbmxldCBrZHByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBrIChmdW4gcHBmIC0+IG91dHB1dF9hY2MgcHBmIGFjYykpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGRwcmludGYgZm10ID0ga2RwcmludGYgKGZ1biBpIC0+IGkpIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBiID0gcHBfbWFrZV9idWZmZXIgKCkgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPVxuICAgIHN0cnB1dF9hY2MgcHBmIGFjYztcbiAgICBrIChmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGIgcHBmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxubGV0IHNwcmludGYgZm10ID0ga3NwcmludGYgaWQgZm10XG5cbmxldCBrYXNwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBiID0gcHBfbWFrZV9idWZmZXIgKCkgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPVxuICAgIG91dHB1dF9hY2MgcHBmIGFjYztcbiAgICBrIChmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGIgcHBmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxubGV0IGFzcHJpbnRmIGZtdCA9IGthc3ByaW50ZiBpZCBmbXRcblxuKCogRmx1c2hpbmcgc3RhbmRhcmQgZm9ybWF0dGVycyBhdCBlbmQgb2YgZXhlY3V0aW9uLiAqKVxuXG5sZXQgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyAoKSA9XG4gIHBwX3ByaW50X2ZsdXNoIHN0ZF9mb3JtYXR0ZXIgKCk7XG4gIHBwX3ByaW50X2ZsdXNoIGVycl9mb3JtYXR0ZXIgKClcblxubGV0ICgpID0gYXRfZXhpdCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzXG5cbigqXG5cbiAgRGVwcmVjYXRlZCBzdHVmZi5cblxuKilcblxuKCogRGVwcmVjYXRlZCA6IHN1YnN1bWVkIGJ5IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAqKVxubGV0IHBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGVcbiAgICB+b3V0OmYgfmZsdXNoOmcgfm5ld2xpbmU6aCB+c3BhY2VzOmkgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgZiBnO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBoO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGlcblxuKCogRGVwcmVjYXRlZCA6IHN1YnN1bWVkIGJ5IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAqKVxubGV0IHBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgKCkgPVxuICAoc3RhdGUucHBfb3V0X3N0cmluZywgc3RhdGUucHBfb3V0X2ZsdXNoLFxuICAgc3RhdGUucHBfb3V0X25ld2xpbmUsIHN0YXRlLnBwX291dF9zcGFjZXMpXG5cblxuKCogRGVwcmVjYXRlZCA6IHN1YnN1bWVkIGJ5IHNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAqKVxubGV0IHNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPVxuICBwcF9zZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcblxuXG4oKiBEZXByZWNhdGVkIDogc3Vic3VtZWQgYnkgZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICopXG5sZXQgZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuXG5cbigqIERlcHJlY2F0ZWQgOiBlcnJvciBwcm9uZSBmdW5jdGlvbiwgZG8gbm90IHVzZSBpdC5cbiAgIFRoaXMgZnVuY3Rpb24gaXMgbmVpdGhlciBjb21wb3NpdGlvbmFsIG5vciBpbmNyZW1lbnRhbCwgc2luY2UgaXQgZmx1c2hlc1xuICAgdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGF0IGVhY2ggY2FsbC5cbiAgIFRvIGdldCB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5LCBkZWZpbmUgYSBmb3JtYXR0ZXIgb2YgeW91ciBvd24gd3JpdGluZyB0b1xuICAgdGhlIGJ1ZmZlciBhcmd1bWVudCwgYXMgaW5cbiAgIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGJcbiAgIHRoZW4gdXNlIHshZnByaW50ZiBwcGZ9IGFzIHVzdWFsLiAqKVxubGV0IGJwcmludGYgYiAoRm9ybWF0IChmbXQsIF8pIDogKCdhLCBmb3JtYXR0ZXIsIHVuaXQpIGZvcm1hdCkgPVxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9IG91dHB1dF9hY2MgcHBmIGFjYzsgcHBfZmx1c2hfcXVldWUgcHBmIGZhbHNlIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG4oKiBEZXByZWNhdGVkIDogYWxpYXMgZm9yIGtzcHJpbnRmLiAqKVxubGV0IGtwcmludGYgPSBrc3ByaW50ZlxuXG5cblxuKCogRGVwcmVjYXRlZCB0YWcgZnVuY3Rpb25zICopXG5cbnR5cGUgZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgPSB7XG4gIG1hcmtfb3Blbl90YWcgOiB0YWcgLT4gc3RyaW5nO1xuICBtYXJrX2Nsb3NlX3RhZyA6IHRhZyAtPiBzdHJpbmc7XG4gIHByaW50X29wZW5fdGFnIDogdGFnIC0+IHVuaXQ7XG4gIHByaW50X2Nsb3NlX3RhZyA6IHRhZyAtPiB1bml0O1xufVxuXG5cbmxldCBwcF9zZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgc3RhdGUge1xuICAgICBtYXJrX29wZW5fdGFnID0gbW90O1xuICAgICBtYXJrX2Nsb3NlX3RhZyA9IG1jdDtcbiAgICAgcHJpbnRfb3Blbl90YWcgPSBwb3Q7XG4gICAgIHByaW50X2Nsb3NlX3RhZyA9IHBjdDtcbiAgIH0gPVxuICBsZXQgc3RyaW5naWZ5IGYgZSA9IGZ1bmN0aW9uIFN0cmluZ190YWcgcyAtPiBmIHMgfCBfIC0+IGUgaW5cbiAgc3RhdGUucHBfbWFya19vcGVuX3RhZyA8LSBzdHJpbmdpZnkgbW90IFwiXCI7XG4gIHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIDwtIHN0cmluZ2lmeSBtY3QgXCJcIjtcbiAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgPC0gc3RyaW5naWZ5IHBvdCAoKTtcbiAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIDwtIHN0cmluZ2lmeSBwY3QgKClcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyBmbXQgKCkgPVxuICBsZXQgZnVucyA9IHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgZm10ICgpIGluXG4gIGxldCBtYXJrX29wZW5fdGFnIHMgPSBmdW5zLm1hcmtfb3Blbl9zdGFnIChTdHJpbmdfdGFnIHMpIGluXG4gIGxldCBtYXJrX2Nsb3NlX3RhZyBzID0gZnVucy5tYXJrX2Nsb3NlX3N0YWcgKFN0cmluZ190YWcgcykgaW5cbiAgbGV0IHByaW50X29wZW5fdGFnIHMgPSBmdW5zLnByaW50X29wZW5fc3RhZyAoU3RyaW5nX3RhZyBzKSBpblxuICBsZXQgcHJpbnRfY2xvc2VfdGFnIHMgPSBmdW5zLnByaW50X2Nsb3NlX3N0YWcgKFN0cmluZ190YWcgcykgaW5cbiAge21hcmtfb3Blbl90YWc7IG1hcmtfY2xvc2VfdGFnOyBwcmludF9vcGVuX3RhZzsgcHJpbnRfY2xvc2VfdGFnfVxuXG5sZXQgc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgPVxuICBwcF9nZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxuKCogYWxpYXMgdG8gYXZvaWQgd2FybmluZyBmb3IgYW1iaWd1aXR5IGJldHdlZW5cbiAgIFN0ZGxpYi5mb3JtYXQ2XG4gICBhbmQgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcblxuICAgKHRoZSBmb3JtZXIgaXMgaW4gZmFjdCBhbiBhbGlhcyBmb3IgdGhlIGxhdHRlcixcbiAgICBidXQgdGhlIGFtYmlndWl0eSB3YXJuaW5nIGRvZXNuJ3QgY2FyZSlcbiopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIFN0ZGxpYi5mb3JtYXQ2XG5cblxuKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIHNjYW5uZXJzLiAqKVxuXG4oKiBTY2FubmluZyBidWZmZXJzLiAqKVxubW9kdWxlIHR5cGUgU0NBTk5JTkcgPSBzaWdcblxuICB0eXBlIGluX2NoYW5uZWxcblxuICB0eXBlIHNjYW5idWYgPSBpbl9jaGFubmVsXG5cbiAgdHlwZSBmaWxlX25hbWUgPSBzdHJpbmdcblxuICB2YWwgc3RkaW4gOiBpbl9jaGFubmVsXG4gICgqIFRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLlxuICAgICBbc3RkaWJdIGlzIGVxdWl2YWxlbnQgdG8gW1NjYW5uaW5nLmZyb21fY2hhbm5lbCBTdGRsaWIuc3RkaW5dLiAqKVxuXG4gIHZhbCBzdGRpYiA6IGluX2NoYW5uZWxcbiAgKCogQW4gYWxpYXMgZm9yIFtTY2FuZi5zdGRpbl0sIHRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tXG4gICAgIFtTdGRsaWIuc3RkaW5dLiAqKVxuXG4gIHZhbCBuZXh0X2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogW1NjYW5uaW5nLm5leHRfY2hhciBpYl0gYWR2YW5jZSB0aGUgc2Nhbm5pbmcgYnVmZmVyIGZvclxuICAgICBvbmUgY2hhcmFjdGVyLlxuICAgICBJZiBubyBtb3JlIGNoYXJhY3RlciBjYW4gYmUgcmVhZCwgc2V0cyBhIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiBhbmRcbiAgICAgcmV0dXJucyAnXFwwMDAnLiAqKVxuXG4gIHZhbCBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciA6IHNjYW5idWYgLT4gdW5pdFxuICAoKiBbU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJdIG1hcmsgdGhlIGN1cnJlbnRfY2hhciBhcyBhbHJlYWR5XG4gICAgIHNjYW5uZWQuICopXG5cbiAgdmFsIHBlZWtfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBbU2Nhbm5pbmcucGVla19jaGFyIGliXSByZXR1cm5zIHRoZSBjdXJyZW50IGNoYXIgYXZhaWxhYmxlIGluXG4gICAgIHRoZSBidWZmZXIgb3IgcmVhZHMgb25lIGlmIG5lY2Vzc2FyeSAod2hlbiB0aGUgY3VycmVudCBjaGFyYWN0ZXIgaXNcbiAgICAgYWxyZWFkeSBzY2FubmVkKS5cbiAgICAgSWYgbm8gY2hhcmFjdGVyIGNhbiBiZSByZWFkLCBzZXRzIGFuIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiBhbmRcbiAgICAgcmV0dXJucyAnXFwwMDAnLiAqKVxuXG4gIHZhbCBjaGVja2VkX3BlZWtfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBTYW1lIGFzIFtTY2FubmluZy5wZWVrX2NoYXJdIGFib3ZlIGJ1dCBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGNoYXIgb3JcbiAgICAgZmFpbHM6IGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgbnVsbCBjaGFyIHdoZW4gdGhlIHJlYWRpbmcgbWV0aG9kIG9mIHRoZVxuICAgICBpbnB1dCBidWZmZXIgaGFzIHJlYWNoZWQgYW4gZW5kIG9mIGZpbGUsIHRoZSBmdW5jdGlvbiByYWlzZXMgZXhjZXB0aW9uXG4gICAgIFtFbmRfb2ZfZmlsZV0uICopXG5cbiAgdmFsIHN0b3JlX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBjaGFyIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuc3RvcmVfY2hhciBsaW0gaWIgY10gYWRkcyBbY10gdG8gdGhlIHRva2VuIGJ1ZmZlclxuICAgICBvZiB0aGUgc2Nhbm5pbmcgYnVmZmVyIFtpYl0uIEl0IGFsc28gYWR2YW5jZXMgdGhlIHNjYW5uaW5nIGJ1ZmZlciBmb3JcbiAgICAgb25lIGNoYXJhY3RlciBhbmQgcmV0dXJucyBbbGltIC0gMV0sIGluZGljYXRpbmcgdGhlIG5ldyBsaW1pdCBmb3IgdGhlXG4gICAgIGxlbmd0aCBvZiB0aGUgY3VycmVudCB0b2tlbi4gKilcblxuICB2YWwgc2tpcF9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5za2lwX2NoYXIgbGltIGliXSBpZ25vcmVzIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4gKilcblxuICB2YWwgaWdub3JlX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmlnbm9yZV9jaGFyIGliIGxpbV0gaWdub3JlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIgYW5kXG4gICAgIGRlY3JlbWVudHMgdGhlIGxpbWl0LiAqKVxuXG4gIHZhbCB0b2tlbiA6IHNjYW5idWYgLT4gc3RyaW5nXG4gICgqIFtTY2FubmluZy50b2tlbiBpYl0gcmV0dXJucyB0aGUgc3RyaW5nIHN0b3JlZCBpbnRvIHRoZSB0b2tlblxuICAgICBidWZmZXIgb2YgdGhlIHNjYW5uaW5nIGJ1ZmZlcjogaXQgcmV0dXJucyB0aGUgdG9rZW4gbWF0Y2hlZCBieSB0aGVcbiAgICAgZm9ybWF0LiAqKVxuXG4gIHZhbCByZXNldF90b2tlbiA6IHNjYW5idWYgLT4gdW5pdFxuICAoKiBbU2Nhbm5pbmcucmVzZXRfdG9rZW4gaWJdIHJlc2V0cyB0aGUgdG9rZW4gYnVmZmVyIG9mXG4gICAgIHRoZSBnaXZlbiBzY2FubmluZyBidWZmZXIuICopXG5cbiAgdmFsIGNoYXJfY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuY2hhcl9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnNcbiAgICAgcmVhZCBzbyBmYXIgZnJvbSB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBsaW5lX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmxpbmVfY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiBuZXcgbGluZVxuICAgICBjaGFyYWN0ZXJzIHJlYWQgc28gZmFyIGZyb20gdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgdG9rZW5fY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcudG9rZW5fY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiB0b2tlbnMgcmVhZFxuICAgICBzbyBmYXIgZnJvbSBbaWJdLiAqKVxuXG4gIHZhbCBlb2YgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmVvZiBpYl0gcmV0dXJucyB0aGUgZW5kIG9mIGlucHV0IGNvbmRpdGlvblxuICAgICBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBlbmRfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYl0gdGVzdHMgdGhlIGVuZCBvZiBpbnB1dCBjb25kaXRpb25cbiAgICAgb2YgdGhlIGdpdmVuIGJ1ZmZlciAoaWYgbm8gY2hhciBoYXMgZXZlciBiZWVuIHJlYWQsIGFuIGF0dGVtcHQgdG9cbiAgICAgcmVhZCBvbmUgaXMgcGVyZm9ybWVkKS4gKilcblxuICB2YWwgYmVnaW5uaW5nX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5iZWdpbm5pbmdfb2ZfaW5wdXQgaWJdIHRlc3RzIHRoZSBiZWdpbm5pbmcgb2YgaW5wdXRcbiAgICAgY29uZGl0aW9uIG9mIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIG5hbWVfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IHN0cmluZ1xuICAoKiBbU2Nhbm5pbmcubmFtZV9vZl9pbnB1dCBpYl0gcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgY2hhcmFjdGVyXG4gICAgIHNvdXJjZSBmb3IgaW5wdXQgYnVmZmVyIFtpYl0uICopXG5cbiAgdmFsIG9wZW5faW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgb3Blbl9pbl9iaW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9maWxlIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZmlsZV9iaW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9zdHJpbmcgOiBzdHJpbmcgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9mdW5jdGlvbiA6ICh1bml0IC0+IGNoYXIpIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fY2hhbm5lbCA6IFN0ZGxpYi5pbl9jaGFubmVsIC0+IGluX2NoYW5uZWxcblxuICB2YWwgY2xvc2VfaW4gOiBpbl9jaGFubmVsIC0+IHVuaXRcblxuICB2YWwgbWVtb19mcm9tX2NoYW5uZWwgOiBTdGRsaWIuaW5fY2hhbm5lbCAtPiBpbl9jaGFubmVsXG4gICgqIE9ic29sZXRlLiAqKVxuXG5lbmRcblxuXG5tb2R1bGUgU2Nhbm5pbmcgOiBTQ0FOTklORyA9IHN0cnVjdFxuXG4gICgqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FuZi4gKilcblxuICB0eXBlIGZpbGVfbmFtZSA9IHN0cmluZ1xuXG4gIHR5cGUgaW5fY2hhbm5lbF9uYW1lID1cbiAgICB8IEZyb21fY2hhbm5lbCBvZiBTdGRsaWIuaW5fY2hhbm5lbFxuICAgIHwgRnJvbV9maWxlIG9mIGZpbGVfbmFtZSAqIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2Z1bmN0aW9uXG4gICAgfCBGcm9tX3N0cmluZ1xuXG5cbiAgdHlwZSBpbl9jaGFubmVsID0ge1xuICAgIG11dGFibGUgaWNfZW9mIDogYm9vbDtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhciA6IGNoYXI7XG4gICAgbXV0YWJsZSBpY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgOiBib29sO1xuICAgIG11dGFibGUgaWNfY2hhcl9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX2xpbmVfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBpY190b2tlbl9jb3VudCA6IGludDtcbiAgICBpY19nZXRfbmV4dF9jaGFyIDogdW5pdCAtPiBjaGFyO1xuICAgIGljX3Rva2VuX2J1ZmZlciA6IEJ1ZmZlci50O1xuICAgIGljX2lucHV0X25hbWUgOiBpbl9jaGFubmVsX25hbWU7XG4gIH1cblxuXG4gIHR5cGUgc2NhbmJ1ZiA9IGluX2NoYW5uZWxcblxuICBsZXQgbnVsbF9jaGFyID0gJ1xcMDAwJ1xuXG4gICgqIFJlYWRzIGEgbmV3IGNoYXJhY3RlciBmcm9tIGlucHV0IGJ1ZmZlci5cbiAgICAgTmV4dF9jaGFyIG5ldmVyIGZhaWxzLCBldmVuIGluIGNhc2Ugb2YgZW5kIG9mIGlucHV0OlxuICAgICBpdCB0aGVuIHNpbXBseSBzZXRzIHRoZSBlbmQgb2YgZmlsZSBjb25kaXRpb24uICopXG4gIGxldCBuZXh0X2NoYXIgaWIgPVxuICAgIHRyeVxuICAgICAgbGV0IGMgPSBpYi5pY19nZXRfbmV4dF9jaGFyICgpIGluXG4gICAgICBpYi5pY19jdXJyZW50X2NoYXIgPC0gYztcbiAgICAgIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSB0cnVlO1xuICAgICAgaWIuaWNfY2hhcl9jb3VudCA8LSBzdWNjIGliLmljX2NoYXJfY291bnQ7XG4gICAgICBpZiBjID0gJ1xcbicgdGhlbiBpYi5pY19saW5lX2NvdW50IDwtIHN1Y2MgaWIuaWNfbGluZV9jb3VudDtcbiAgICAgIGMgd2l0aFxuICAgIHwgRW5kX29mX2ZpbGUgLT5cbiAgICAgIGxldCBjID0gbnVsbF9jaGFyIGluXG4gICAgICBpYi5pY19jdXJyZW50X2NoYXIgPC0gYztcbiAgICAgIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZTtcbiAgICAgIGliLmljX2VvZiA8LSB0cnVlO1xuICAgICAgY1xuXG5cbiAgbGV0IHBlZWtfY2hhciBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jdXJyZW50X2NoYXJcbiAgICBlbHNlIG5leHRfY2hhciBpYlxuXG5cbiAgKCogUmV0dXJucyBhIHZhbGlkIGN1cnJlbnQgY2hhciBmb3IgdGhlIGlucHV0IGJ1ZmZlci4gSW4gcGFydGljdWxhclxuICAgICBubyBpcnJlbGV2YW50IG51bGwgY2hhcmFjdGVyIChhcyBzZXQgYnkgW25leHRfY2hhcl0gaW4gY2FzZSBvZiBlbmRcbiAgICAgb2YgaW5wdXQpIGlzIHJldHVybmVkLCBzaW5jZSBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuXG4gICAgIFtuZXh0X2NoYXJdIHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiB3aGlsZSB0cnlpbmcgdG8gcmVhZCBhXG4gICAgIG5ldyBjaGFyYWN0ZXIuICopXG4gIGxldCBjaGVja2VkX3BlZWtfY2hhciBpYiA9XG4gICAgbGV0IGMgPSBwZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpYi5pY19lb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZTtcbiAgICBjXG5cblxuICBsZXQgZW5kX29mX2lucHV0IGliID1cbiAgICBpZ25vcmUgKHBlZWtfY2hhciBpYik7XG4gICAgaWIuaWNfZW9mXG5cblxuICBsZXQgZW9mIGliID0gaWIuaWNfZW9mXG5cbiAgbGV0IGJlZ2lubmluZ19vZl9pbnB1dCBpYiA9IGliLmljX2NoYXJfY291bnQgPSAwXG5cbiAgbGV0IG5hbWVfb2ZfaW5wdXQgaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIF9pYyAtPiBcInVubmFtZWQgU3RkbGliIGlucHV0IGNoYW5uZWxcIlxuICAgIHwgRnJvbV9maWxlIChmbmFtZSwgX2ljKSAtPiBmbmFtZVxuICAgIHwgRnJvbV9mdW5jdGlvbiAtPiBcInVubmFtZWQgZnVuY3Rpb25cIlxuICAgIHwgRnJvbV9zdHJpbmcgLT4gXCJ1bm5hbWVkIGNoYXJhY3RlciBzdHJpbmdcIlxuXG5cbiAgbGV0IGNoYXJfY291bnQgaWIgPVxuICAgIGlmIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZFxuICAgIHRoZW4gaWIuaWNfY2hhcl9jb3VudCAtIDFcbiAgICBlbHNlIGliLmljX2NoYXJfY291bnRcblxuXG4gIGxldCBsaW5lX2NvdW50IGliID0gaWIuaWNfbGluZV9jb3VudFxuXG4gIGxldCByZXNldF90b2tlbiBpYiA9IEJ1ZmZlci5yZXNldCBpYi5pY190b2tlbl9idWZmZXJcblxuICBsZXQgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWIgPSBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gZmFsc2VcblxuICBsZXQgdG9rZW4gaWIgPVxuICAgIGxldCB0b2tlbl9idWZmZXIgPSBpYi5pY190b2tlbl9idWZmZXIgaW5cbiAgICBsZXQgdG9rID0gQnVmZmVyLmNvbnRlbnRzIHRva2VuX2J1ZmZlciBpblxuICAgIEJ1ZmZlci5jbGVhciB0b2tlbl9idWZmZXI7XG4gICAgaWIuaWNfdG9rZW5fY291bnQgPC0gc3VjYyBpYi5pY190b2tlbl9jb3VudDtcbiAgICB0b2tcblxuXG4gIGxldCB0b2tlbl9jb3VudCBpYiA9IGliLmljX3Rva2VuX2NvdW50XG5cbiAgbGV0IHNraXBfY2hhciB3aWR0aCBpYiA9XG4gICAgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7XG4gICAgd2lkdGhcblxuXG4gIGxldCBpZ25vcmVfY2hhciB3aWR0aCBpYiA9IHNraXBfY2hhciAod2lkdGggLSAxKSBpYlxuXG4gIGxldCBzdG9yZV9jaGFyIHdpZHRoIGliIGMgPVxuICAgIEJ1ZmZlci5hZGRfY2hhciBpYi5pY190b2tlbl9idWZmZXIgYztcbiAgICBpZ25vcmVfY2hhciB3aWR0aCBpYlxuXG5cbiAgbGV0IGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemUgPSAxMDI0XG5cbiAgbGV0IGNyZWF0ZSBpbmFtZSBuZXh0ID0ge1xuICAgIGljX2VvZiA9IGZhbHNlO1xuICAgIGljX2N1cnJlbnRfY2hhciA9IG51bGxfY2hhcjtcbiAgICBpY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPSBmYWxzZTtcbiAgICBpY19jaGFyX2NvdW50ID0gMDtcbiAgICBpY19saW5lX2NvdW50ID0gMDtcbiAgICBpY190b2tlbl9jb3VudCA9IDA7XG4gICAgaWNfZ2V0X25leHRfY2hhciA9IG5leHQ7XG4gICAgaWNfdG9rZW5fYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSBkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplO1xuICAgIGljX2lucHV0X25hbWUgPSBpbmFtZTtcbiAgfVxuXG5cbiAgbGV0IGZyb21fc3RyaW5nIHMgPVxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWkgPj0gbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGUgZWxzZVxuICAgICAgbGV0IGMgPSBzLlshaV0gaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGMgaW5cbiAgICBjcmVhdGUgRnJvbV9zdHJpbmcgbmV4dFxuXG5cbiAgbGV0IGZyb21fZnVuY3Rpb24gPSBjcmVhdGUgRnJvbV9mdW5jdGlvblxuXG4gICgqIFNjYW5uaW5nIGZyb20gYW4gaW5wdXQgY2hhbm5lbC4gKilcblxuICAoKiBQb3NpdGlvbiBvZiB0aGUgcHJvYmxlbTpcblxuICAgICBXZSBjYW5ub3QgcHJldmVudCB0aGUgc2Nhbm5pbmcgbWVjaGFuaXNtIHRvIHVzZSBvbmUgbG9va2FoZWFkIGNoYXJhY3RlcixcbiAgICAgaWYgbmVlZGVkIGJ5IHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGZvcm1hdCBzdHJpbmcgc3BlY2lmaWNhdGlvbnMgKGUuZy4gYVxuICAgICB0cmFpbGluZyAnc2tpcCBzcGFjZScgc3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9ybWF0IHN0cmluZyk7IGluIHRoaXMgY2FzZSxcbiAgICAgdGhlIG1hbmRhdG9yeSBsb29rYWhlYWQgY2hhcmFjdGVyIGlzIGluZGVlZCByZWFkIGZyb20gdGhlIGlucHV0IGFuZCBub3RcbiAgICAgdXNlZCB0byByZXR1cm4gdGhlIHRva2VuIHJlYWQuIEl0IGlzIHRodXMgbWFuZGF0b3J5IHRvIGJlIGFibGUgdG8gc3RvcmVcbiAgICAgYW4gdW51c2VkIGxvb2thaGVhZCBjaGFyYWN0ZXIgc29tZXdoZXJlIHRvIGdldCBpdCBhcyB0aGUgZmlyc3QgY2hhcmFjdGVyXG4gICAgIG9mIHRoZSBuZXh0IHNjYW4uXG5cbiAgICAgVG8gY2lyY3VtdmVudCB0aGlzIHByb2JsZW0sIGFsbCB0aGUgc2Nhbm5pbmcgZnVuY3Rpb25zIGdldCBhIGxvdyBsZXZlbFxuICAgICBpbnB1dCBidWZmZXIgYXJndW1lbnQgd2hlcmUgdGhleSBzdG9yZSB0aGUgbG9va2FoZWFkIGNoYXJhY3RlciB3aGVuXG4gICAgIG5lZWRlZDsgYWRkaXRpb25hbGx5LCB0aGUgaW5wdXQgYnVmZmVyIGlzIHRoZSBvbmx5IHNvdXJjZSBvZiBjaGFyYWN0ZXIgb2ZcbiAgICAgYSBzY2FubmVyLiBUaGUgW3NjYW5idWZdIGlucHV0IGJ1ZmZlcnMgYXJlIGRlZmluZWQgaW4gbW9kdWxlIHshU2Nhbm5pbmd9LlxuXG4gICAgIE5vdyB3ZSB1bmRlcnN0YW5kIHRoYXQgaXQgaXMgZXh0cmVtZWx5IGltcG9ydGFudCB0aGF0IHJlbGF0ZWQgYW5kXG4gICAgIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gc2Nhbm5lcnMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgc2FtZSBpbnB1dCBidWZmZXIuXG4gICAgIEluIGVmZmVjdCwgaWYgYSBzY2FubmVyIFtzY2FuMV0gaXMgcmVhZGluZyBmcm9tIFtpYjFdIGFuZCBzdG9yZXMgYW5cbiAgICAgdW51c2VkIGxvb2thaGVhZCBjaGFyYWN0ZXIgW2MxXSBpbnRvIGl0cyBpbnB1dCBidWZmZXIgW2liMV0sIHRoZW5cbiAgICAgYW5vdGhlciBzY2FubmVyIFtzY2FuMl0gbm90IHJlYWRpbmcgZnJvbSB0aGUgc2FtZSBidWZmZXIgW2liMV0gd2lsbCBtaXNzXG4gICAgIHRoZSBjaGFyYWN0ZXIgW2MxXSwgc2VlbWluZ2x5IHZhbmlzaGVkIGluIHRoZSBhaXIgZnJvbSB0aGUgcG9pbnQgb2Ygdmlld1xuICAgICBvZiBbc2NhbjJdLlxuXG4gICAgIFRoaXMgbWVjaGFuaXNtIHdvcmtzIHBlcmZlY3RseSB0byByZWFkIGZyb20gc3RyaW5ncywgZnJvbSBmaWxlcywgYW5kIGZyb21cbiAgICAgZnVuY3Rpb25zLCBzaW5jZSBpbiB0aG9zZSBjYXNlcywgYWxsb2NhdGluZyB0d28gYnVmZmVycyByZWFkaW5nIGZyb20gdGhlXG4gICAgIHNhbWUgc291cmNlIGlzIHVubmF0dXJhbC5cblxuICAgICBTdGlsbCwgdGhlcmUgaXMgYSBkaWZmaWN1bHR5IGluIHRoZSBjYXNlIG9mIHNjYW5uaW5nIGZyb20gYW4gaW5wdXRcbiAgICAgY2hhbm5lbC4gSW4gZWZmZWN0LCB3aGVuIHNjYW5uaW5nIGZyb20gYW4gaW5wdXQgY2hhbm5lbCBbaWNdLCB0aGlzIGNoYW5uZWxcbiAgICAgbWF5IG5vdCBoYXZlIGJlZW4gYWxsb2NhdGVkIGZyb20gd2l0aGluIHRoaXMgbGlicmFyeS4gSGVuY2UsIGl0IG1heSBiZVxuICAgICBzaGFyZWQgKHR3byBmdW5jdGlvbnMgb2YgdGhlIHVzZXIncyBwcm9ncmFtIG1heSBzdWNjZXNzaXZlbHkgcmVhZCBmcm9tXG4gICAgIFtpY10pLiBUaGlzIGlzIGhpZ2hseSBlcnJvciBwcm9uZSBzaW5jZSwgb25lIG9mIHRoZSBmdW5jdGlvbiBtYXkgc2VlayB0aGVcbiAgICAgaW5wdXQgY2hhbm5lbCwgd2hpbGUgdGhlIG90aGVyIGZ1bmN0aW9uIGhhcyBzdGlsbCBhbiB1bnVzZWQgbG9va2FoZWFkXG4gICAgIGNoYXJhY3RlciBpbiBpdHMgaW5wdXQgYnVmZmVyLiBJbiBjb25jbHVzaW9uLCB5b3Ugc2hvdWxkIG5ldmVyIG1peCBkaXJlY3RcbiAgICAgbG93IGxldmVsIHJlYWRpbmcgYW5kIGhpZ2ggbGV2ZWwgc2Nhbm5pbmcgZnJvbSB0aGUgc2FtZSBpbnB1dCBjaGFubmVsLlxuXG4gICopXG5cbiAgKCogUGVyZm9ybSBidWZmZXJpemVkIGlucHV0IHRvIGltcHJvdmUgZWZmaWNpZW5jeS4gKilcbiAgbGV0IGZpbGVfYnVmZmVyX3NpemUgPSByZWYgMTAyNFxuXG4gICgqIFRoZSBzY2FubmVyIGNsb3NlcyB0aGUgaW5wdXQgY2hhbm5lbCBhdCBlbmQgb2YgaW5wdXQuICopXG4gIGxldCBzY2FuX2Nsb3NlX2F0X2VuZCBpYyA9IFN0ZGxpYi5jbG9zZV9pbiBpYzsgcmFpc2UgRW5kX29mX2ZpbGVcblxuICAoKiBUaGUgc2Nhbm5lciBkb2VzIG5vdCBjbG9zZSB0aGUgaW5wdXQgY2hhbm5lbCBhdCBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IGp1c3QgcmFpc2VzIFtFbmRfb2ZfZmlsZV0uICopXG4gIGxldCBzY2FuX3JhaXNlX2F0X2VuZCBfaWMgPSByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gIGxldCBmcm9tX2ljIHNjYW5fY2xvc2VfaWMgaW5hbWUgaWMgPVxuICAgIGxldCBsZW4gPSAhZmlsZV9idWZmZXJfc2l6ZSBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsaW0gPSByZWYgMCBpblxuICAgIGxldCBlb2YgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA8ICFsaW0gdGhlbiBiZWdpbiBsZXQgYyA9IEJ5dGVzLmdldCBidWYgIWkgaW4gaW5jciBpOyBjIGVuZCBlbHNlXG4gICAgICBpZiAhZW9mIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGUgZWxzZSBiZWdpblxuICAgICAgICBsaW0gOj0gaW5wdXQgaWMgYnVmIDAgbGVuO1xuICAgICAgICBpZiAhbGltID0gMCB0aGVuIGJlZ2luIGVvZiA6PSB0cnVlOyBzY2FuX2Nsb3NlX2ljIGljIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgaSA6PSAxO1xuICAgICAgICAgIEJ5dGVzLmdldCBidWYgMFxuICAgICAgICBlbmRcbiAgICAgIGVuZCBpblxuICAgIGNyZWF0ZSBpbmFtZSBuZXh0XG5cblxuICBsZXQgZnJvbV9pY19jbG9zZV9hdF9lbmQgPSBmcm9tX2ljIHNjYW5fY2xvc2VfYXRfZW5kXG4gIGxldCBmcm9tX2ljX3JhaXNlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcblxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS5cbiAgICAgT25lIGNvdWxkIHRyeSB0byBkZWZpbmUgW3N0ZGliXSBhcyBhIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGEgY2hhcmFjdGVyXG4gICAgIGF0IGEgdGltZSAobm8gYnVmZmVyaXphdGlvbiBhdCBhbGwpLCBidXQgdW5mb3J0dW5hdGVseSB0aGUgdG9wLWxldmVsXG4gICAgIGludGVyYWN0aW9uIHdvdWxkIGJlIHdyb25nLiBUaGlzIGlzIGR1ZSB0byBzb21lIGtpbmQgb2ZcbiAgICAgJ3JhY2UgY29uZGl0aW9uJyB3aGVuIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXSxcbiAgICAgc2luY2UgdGhlIGludGVyYWN0aXZlIGNvbXBpbGVyIGFuZCBbU2NhbmYuc2NhbmZdIHdpbGwgc2ltdWx0YW5lb3VzbHlcbiAgICAgcmVhZCB0aGUgbWF0ZXJpYWwgdGhleSBuZWVkIGZyb20gW1N0ZGxpYi5zdGRpbl07IHRoZW4sIGNvbmZ1c2lvblxuICAgICB3aWxsIHJlc3VsdCBmcm9tIHdoYXQgc2hvdWxkIGJlIHJlYWQgYnkgdGhlIHRvcC1sZXZlbCBhbmQgd2hhdCBzaG91bGQgYmVcbiAgICAgcmVhZCBieSBbU2NhbmYuc2NhbmZdLlxuICAgICBUaGlzIGlzIGV2ZW4gbW9yZSBjb21wbGljYXRlZCBieSB0aGUgb25lIGNoYXJhY3RlciBsb29rYWhlYWQgdGhhdFxuICAgICBbU2NhbmYuc2NhbmZdIGlzIHNvbWV0aW1lcyBvYmxpZ2VkIHRvIG1haW50YWluOiB0aGUgbG9va2FoZWFkIGNoYXJhY3RlclxuICAgICB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgW1NjYW5mLnNjYW5mXSBlbnRyeSwgc2VlbWluZ2x5IGNvbWluZyBmcm9tXG4gICAgIG5vd2hlcmUuXG4gICAgIEFsc28gbm8gW0VuZF9vZl9maWxlXSBpcyByYWlzZWQgd2hlbiByZWFkaW5nIGZyb20gc3RkaW46IGlmIG5vdCBlbm91Z2hcbiAgICAgY2hhcmFjdGVycyBoYXZlIGJlZW4gcmVhZCwgd2Ugc2ltcGx5IGFzayB0byByZWFkIG1vcmUuICopXG4gIGxldCBzdGRpbiA9XG4gICAgZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuICAgICAgKEZyb21fZmlsZSAoXCItXCIsIFN0ZGxpYi5zdGRpbikpIFN0ZGxpYi5zdGRpblxuXG5cbiAgbGV0IHN0ZGliID0gc3RkaW5cblxuICBsZXQgb3Blbl9pbl9maWxlIG9wZW5faW4gZm5hbWUgPVxuICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICB8IFwiLVwiIC0+IHN0ZGluXG4gICAgfCBmbmFtZSAtPlxuICAgICAgbGV0IGljID0gb3Blbl9pbiBmbmFtZSBpblxuICAgICAgZnJvbV9pY19jbG9zZV9hdF9lbmQgKEZyb21fZmlsZSAoZm5hbWUsIGljKSkgaWNcblxuXG4gIGxldCBvcGVuX2luID0gb3Blbl9pbl9maWxlIFN0ZGxpYi5vcGVuX2luXG4gIGxldCBvcGVuX2luX2JpbiA9IG9wZW5faW5fZmlsZSBTdGRsaWIub3Blbl9pbl9iaW5cblxuICBsZXQgZnJvbV9maWxlID0gb3Blbl9pblxuICBsZXQgZnJvbV9maWxlX2JpbiA9IG9wZW5faW5fYmluXG5cbiAgbGV0IGZyb21fY2hhbm5lbCBpYyA9XG4gICAgZnJvbV9pY19yYWlzZV9hdF9lbmQgKEZyb21fY2hhbm5lbCBpYykgaWNcblxuXG4gIGxldCBjbG9zZV9pbiBpYiA9XG4gICAgbWF0Y2ggaWIuaWNfaW5wdXRfbmFtZSB3aXRoXG4gICAgfCBGcm9tX2NoYW5uZWwgaWMgLT5cbiAgICAgIFN0ZGxpYi5jbG9zZV9pbiBpY1xuICAgIHwgRnJvbV9maWxlIChfZm5hbWUsIGljKSAtPiBTdGRsaWIuY2xvc2VfaW4gaWNcbiAgICB8IEZyb21fZnVuY3Rpb24gfCBGcm9tX3N0cmluZyAtPiAoKVxuXG5cbiAgKCpcbiAgICAgT2Jzb2xldGU6IGEgbWVtbyBbZnJvbV9jaGFubmVsXSB2ZXJzaW9uIHRvIGJ1aWxkIGEgW1NjYW5uaW5nLmluX2NoYW5uZWxdXG4gICAgIHNjYW5uaW5nIGJ1ZmZlciBvdXQgb2YgYSBbU3RkbGliLmluX2NoYW5uZWxdLlxuICAgICBUaGlzIGZ1bmN0aW9uIHdhcyB1c2VkIHRvIHRyeSB0byBwcmVzZXJ2ZSB0aGUgc2Nhbm5pbmdcbiAgICAgc2VtYW50aWNzIGZvciB0aGUgKG5vdyBvYnNvbGV0ZSkgZnVuY3Rpb24gW2ZzY2FuZl0uXG4gICAgIEdpdmVuIHRoYXQgYWxsIHNjYW5uZXIgbXVzdCByZWFkIGZyb20gYSBbU2Nhbm5pbmcuaW5fY2hhbm5lbF0gc2Nhbm5pbmdcbiAgICAgYnVmZmVyLCBbZnNjYW5mXSBtdXN0IHJlYWQgZnJvbSBvbmUhXG4gICAgIE1vcmUgcHJlY2lzZWx5LCBnaXZlbiBbaWNdLCBhbGwgc3VjY2Vzc2l2ZSBjYWxscyBbZnNjYW5mIGljXSBtdXN0IHJlYWRcbiAgICAgZnJvbSB0aGUgc2FtZSBzY2FubmluZyBidWZmZXIuXG4gICAgIFRoaXMgb2JsaWdlZCB0aGlzIGxpYnJhcnkgdG8gYWxsb2NhdGVkIHNjYW5uaW5nIGJ1ZmZlcnMgdGhhdCB3ZXJlXG4gICAgIG5vdCBwcm9wZXJseSBnYXJiYWdlIGNvbGxlY3RhYmxlLCBoZW5jZSBsZWFkaW5nIHRvIG1lbW9yeSBsZWFrcy5cbiAgICAgSWYgeW91IG5lZWQgdG8gcmVhZCBmcm9tIGEgW1N0ZGxpYi5pbl9jaGFubmVsXSBpbnB1dCBjaGFubmVsXG4gICAgIFtpY10sIHNpbXBseSBkZWZpbmUgYSBbU2Nhbm5pbmcuaW5fY2hhbm5lbF0gZm9ybWF0dGVkIGlucHV0IGNoYW5uZWwgYXMgaW5cbiAgICAgW2xldCBpYiA9IFNjYW5uaW5nLmZyb21fY2hhbm5lbCBpY10sIHRoZW4gdXNlIFtTY2FuZi5ic2NhbmYgaWJdIGFzIHVzdWFsLlxuICAqKVxuICBsZXQgbWVtb19mcm9tX2ljID1cbiAgICBsZXQgbWVtbyA9IHJlZiBbXSBpblxuICAgIChmdW4gc2Nhbl9jbG9zZV9pYyBpYyAtPlxuICAgICB0cnkgTGlzdC5hc3NxIGljICFtZW1vIHdpdGhcbiAgICAgfCBOb3RfZm91bmQgLT5cbiAgICAgICBsZXQgaWIgPVxuICAgICAgICAgZnJvbV9pYyBzY2FuX2Nsb3NlX2ljIChGcm9tX2NoYW5uZWwgaWMpIGljIGluXG4gICAgICAgbWVtbyA6PSAoaWMsIGliKSA6OiAhbWVtbztcbiAgICAgICBpYilcblxuXG4gICgqIE9ic29sZXRlOiBzZWUgeyFtZW1vX2Zyb21faWN9IGFib3ZlLiAqKVxuICBsZXQgbWVtb19mcm9tX2NoYW5uZWwgPSBtZW1vX2Zyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcblxuZW5kXG5cblxuKCogRm9ybWF0dGVkIGlucHV0IGZ1bmN0aW9ucy4gKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHNjYW5uZXIgPVxuICAgICAoJ2EsIFNjYW5uaW5nLmluX2NoYW5uZWwsICdiLCAnYywgJ2EgLT4gJ2QsICdkKSBmb3JtYXQ2IC0+ICdjXG5cblxuKCogUmVwb3J0aW5nIGVycm9ycy4gKilcbmV4Y2VwdGlvbiBTY2FuX2ZhaWx1cmUgb2Ygc3RyaW5nXG5cbmxldCBiYWRfaW5wdXQgcyA9IHJhaXNlIChTY2FuX2ZhaWx1cmUgcylcblxubGV0IGJhZF9pbnB1dF9lc2NhcGUgYyA9XG4gIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJpbGxlZ2FsIGVzY2FwZSBjaGFyYWN0ZXIgJUNcIiBjKVxuXG5cbmxldCBiYWRfdG9rZW5fbGVuZ3RoIG1lc3NhZ2UgPVxuICBiYWRfaW5wdXRcbiAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICBcInNjYW5uaW5nIG9mICVzIGZhaWxlZDogXFxcbiAgICAgICAgdGhlIHNwZWNpZmllZCBsZW5ndGggd2FzIHRvbyBzaG9ydCBmb3IgdG9rZW5cIlxuICAgICAgIG1lc3NhZ2UpXG5cblxubGV0IGJhZF9lbmRfb2ZfaW5wdXQgbWVzc2FnZSA9XG4gIGJhZF9pbnB1dFxuICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgIFwic2Nhbm5pbmcgb2YgJXMgZmFpbGVkOiBcXFxuICAgICAgICBwcmVtYXR1cmUgZW5kIG9mIGZpbGUgb2NjdXJyZWQgYmVmb3JlIGVuZCBvZiB0b2tlblwiXG4gICAgICAgbWVzc2FnZSlcblxuXG5sZXQgYmFkX2Zsb2F0ICgpID1cbiAgYmFkX2lucHV0IFwibm8gZG90IG9yIGV4cG9uZW50IHBhcnQgZm91bmQgaW4gZmxvYXQgdG9rZW5cIlxuXG5cbmxldCBiYWRfaGV4X2Zsb2F0ICgpID1cbiAgYmFkX2lucHV0IFwibm90IGEgdmFsaWQgZmxvYXQgaW4gaGV4YWRlY2ltYWwgbm90YXRpb25cIlxuXG5cbmxldCBjaGFyYWN0ZXJfbWlzbWF0Y2hfZXJyIGMgY2kgPVxuICBQcmludGYuc3ByaW50ZiBcImxvb2tpbmcgZm9yICVDLCBmb3VuZCAlQ1wiIGMgY2lcblxuXG5sZXQgY2hhcmFjdGVyX21pc21hdGNoIGMgY2kgPVxuICBiYWRfaW5wdXQgKGNoYXJhY3Rlcl9taXNtYXRjaF9lcnIgYyBjaSlcblxuXG5sZXQgcmVjIHNraXBfd2hpdGVzIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgbm90IChTY2FubmluZy5lb2YgaWIpIHRoZW4gYmVnaW5cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyAtPlxuICAgICAgU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7IHNraXBfd2hpdGVzIGliXG4gICAgfCBfIC0+ICgpXG4gIGVuZFxuXG5cbigqIENoZWNraW5nIHRoYXQgW2NdIGlzIGluZGVlZCBpbiB0aGUgaW5wdXQsIHRoZW4gc2tpcHMgaXQuXG4gICBJbiB0aGlzIGNhc2UsIHRoZSBjaGFyYWN0ZXIgW2NdIGhhcyBiZWVuIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGluIHRoZVxuICAgZm9ybWF0IGFzIGJlaW5nIG1hbmRhdG9yeSBpbiB0aGUgaW5wdXQ7IGhlbmNlIHdlIHNob3VsZCBmYWlsIHdpdGhcbiAgIFtFbmRfb2ZfZmlsZV0gaW4gY2FzZSBvZiBlbmRfb2ZfaW5wdXQuXG4gICAoUmVtZW1iZXIgdGhhdCBbU2Nhbl9mYWlsdXJlXSBpcyByYWlzZWQgb25seSB3aGVuICh3ZSBjYW4gcHJvdmUgYnlcbiAgIGV2aWRlbmNlKSB0aGF0IHRoZSBpbnB1dCBkb2VzIG5vdCBtYXRjaCB0aGUgZm9ybWF0IHN0cmluZyBnaXZlbi4gV2UgbXVzdFxuICAgdGh1cyBkaWZmZXJlbnRpYXRlIFtFbmRfb2ZfZmlsZV0gYXMgYW4gZXJyb3IgZHVlIHRvIGxhY2sgb2YgaW5wdXQsIGFuZFxuICAgW1NjYW5fZmFpbHVyZV0gd2hpY2ggaXMgZHVlIHRvIHByb3ZhYmx5IHdyb25nIGlucHV0LiBJIGFtIG5vdCBzdXJlIHRoaXMgaXNcbiAgIHdvcnRoIHRoZSBidXJkZW46IGl0IGlzIGNvbXBsZXggYW5kIHNvbWVob3cgc3VibGltaW5hbDsgc2hvdWxkIGJlIGNsZWFyZXJcbiAgIHRvIGZhaWwgd2l0aCBTY2FuX2ZhaWx1cmUgXCJOb3QgZW5vdWdoIGlucHV0IHRvIGNvbXBsZXRlIHNjYW5uaW5nXCIhKVxuXG4gICBUaGF0J3Mgd2h5LCB3YWl0aW5nIGZvciBhIGJldHRlciBzb2x1dGlvbiwgd2UgdXNlIGNoZWNrZWRfcGVla19jaGFyIGhlcmUuXG4gICBXZSBhcmUgYWxzbyBjYXJlZnVsIHRvIHRyZWF0IFwiXFxyXFxuXCIgaW4gdGhlIGlucHV0IGFzIGFuIGVuZCBvZiBsaW5lIG1hcmtlcjpcbiAgIGl0IGFsd2F5cyBtYXRjaGVzIGEgJ1xcbicgc3BlY2lmaWNhdGlvbiBpbiB0aGUgaW5wdXQgZm9ybWF0IHN0cmluZy4gKilcbmxldCByZWMgY2hlY2tfY2hhciBpYiBjID1cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJyAnIC0+IHNraXBfd2hpdGVzIGliXG4gIHwgJ1xcbicgLT4gY2hlY2tfbmV3bGluZSBpYlxuICB8IGMgLT4gY2hlY2tfdGhpc19jaGFyIGliIGNcblxuYW5kIGNoZWNrX3RoaXNfY2hhciBpYiBjID1cbiAgbGV0IGNpID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgaWYgY2kgPSBjIHRoZW4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWIgZWxzZVxuICBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaVxuXG5hbmQgY2hlY2tfbmV3bGluZSBpYiA9XG4gIGxldCBjaSA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGNpIHdpdGhcbiAgfCAnXFxuJyAtPiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYlxuICB8ICdcXHInIC0+IFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliOyBjaGVja190aGlzX2NoYXIgaWIgJ1xcbidcbiAgfCBfIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFxuJyBjaVxuXG5cbigqIEV4dHJhY3RpbmcgdG9rZW5zIGZyb20gdGhlIG91dHB1dCB0b2tlbiBidWZmZXIuICopXG5cbmxldCB0b2tlbl9jaGFyIGliID0gKFNjYW5uaW5nLnRva2VuIGliKS5bMF1cblxubGV0IHRva2VuX3N0cmluZyA9IFNjYW5uaW5nLnRva2VuXG5cbmxldCB0b2tlbl9ib29sIGliID1cbiAgbWF0Y2ggU2Nhbm5pbmcudG9rZW4gaWIgd2l0aFxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gZmFsc2VcbiAgfCBzIC0+IGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJpbnZhbGlkIGJvb2xlYW4gJyVzJ1wiIHMpXG5cblxuKCogVGhlIHR5cGUgb2YgaW50ZWdlciBjb252ZXJzaW9ucy4gKilcbnR5cGUgaW50ZWdlcl9jb252ZXJzaW9uID1cbiAgfCBCX2NvbnZlcnNpb24gKCogVW5zaWduZWQgYmluYXJ5IGNvbnZlcnNpb24gKilcbiAgfCBEX2NvbnZlcnNpb24gKCogU2lnbmVkIGRlY2ltYWwgY29udmVyc2lvbiAqKVxuICB8IElfY29udmVyc2lvbiAoKiBTaWduZWQgaW50ZWdlciBjb252ZXJzaW9uICopXG4gIHwgT19jb252ZXJzaW9uICgqIFVuc2lnbmVkIG9jdGFsIGNvbnZlcnNpb24gKilcbiAgfCBVX2NvbnZlcnNpb24gKCogVW5zaWduZWQgZGVjaW1hbCBjb252ZXJzaW9uICopXG4gIHwgWF9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGhleGFkZWNpbWFsIGNvbnZlcnNpb24gKilcblxuXG5sZXQgaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgPSBmdW5jdGlvblxuICB8ICdiJyAtPiBCX2NvbnZlcnNpb25cbiAgfCAnZCcgLT4gRF9jb252ZXJzaW9uXG4gIHwgJ2knIC0+IElfY29udmVyc2lvblxuICB8ICdvJyAtPiBPX2NvbnZlcnNpb25cbiAgfCAndScgLT4gVV9jb252ZXJzaW9uXG4gIHwgJ3gnIHwgJ1gnIC0+IFhfY29udmVyc2lvblxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cblxuKCogRXh0cmFjdCBhbiBpbnRlZ2VyIGxpdGVyYWwgdG9rZW4uXG4gICBTaW5jZSB0aGUgZnVuY3Rpb25zIFN0ZGxpYi4qaW50Kl9vZl9zdHJpbmcgZG8gbm90IGFjY2VwdCBhIGxlYWRpbmcgKyxcbiAgIHdlIHNraXAgaXQgaWYgbmVjZXNzYXJ5LiAqKVxubGV0IHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIgPVxuICBsZXQgdG9rID1cbiAgICBtYXRjaCBjb252IHdpdGhcbiAgICB8IERfY29udmVyc2lvbiB8IElfY29udmVyc2lvbiAtPiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgVV9jb252ZXJzaW9uIC0+IFwiMHVcIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBPX2NvbnZlcnNpb24gLT4gXCIwb1wiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IFhfY29udmVyc2lvbiAtPiBcIjB4XCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgQl9jb252ZXJzaW9uIC0+IFwiMGJcIiBeIFNjYW5uaW5nLnRva2VuIGliIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCB0b2sgaW5cbiAgaWYgbCA9IDAgfHwgdG9rLlswXSA8PiAnKycgdGhlbiB0b2sgZWxzZSBTdHJpbmcuc3ViIHRvayAxIChsIC0gMSlcblxuXG4oKiBBbGwgdGhlIGZ1bmN0aW9ucyB0aGF0IGNvbnZlcnQgYSBzdHJpbmcgdG8gYSBudW1iZXIgcmFpc2UgdGhlIGV4Y2VwdGlvblxuICAgRmFpbHVyZSB3aGVuIHRoZSBjb252ZXJzaW9uIGlzIG5vdCBwb3NzaWJsZS5cbiAgIFRoaXMgZXhjZXB0aW9uIGlzIHRoZW4gdHJhcHBlZCBpbiBba3NjYW5mXS4gKilcbmxldCB0b2tlbl9pbnQgY29udiBpYiA9IGludF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5cbmxldCB0b2tlbl9mbG9hdCBpYiA9IGZsb2F0X29mX3N0cmluZyAoU2Nhbm5pbmcudG9rZW4gaWIpXG5cbigqIFRvIHNjYW4gbmF0aXZlIGludHMsIGludDMyIGFuZCBpbnQ2NCBpbnRlZ2Vycy5cbiAgIFdlIGNhbm5vdCBhY2Nlc3MgdG8gY29udmVyc2lvbnMgdG8vZnJvbSBzdHJpbmdzIGZvciB0aG9zZSB0eXBlcyxcbiAgIE5hdGl2ZWludC5vZl9zdHJpbmcsIEludDMyLm9mX3N0cmluZywgYW5kIEludDY0Lm9mX3N0cmluZyxcbiAgIHNpbmNlIHRob3NlIG1vZHVsZXMgYXJlIG5vdCBhdmFpbGFibGUgdG8gW1NjYW5mXS5cbiAgIEhvd2V2ZXIsIHdlIGNhbiBiaW5kIGFuZCB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgcHJpbWl0aXZlcyB0aGF0IGFyZVxuICAgYXZhaWxhYmxlIGluIHRoZSBydW50aW1lLiAqKVxuZXh0ZXJuYWwgbmF0aXZlaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBuYXRpdmVpbnRcbiAgPSBcImNhbWxfbmF0aXZlaW50X29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIGludDMyX29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnQ2NF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcblxuXG5sZXQgdG9rZW5fbmF0aXZlaW50IGNvbnYgaWIgPSBuYXRpdmVpbnRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxubGV0IHRva2VuX2ludDMyIGNvbnYgaWIgPSBpbnQzMl9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5sZXQgdG9rZW5faW50NjQgY29udiBpYiA9IGludDY0X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcblxuKCogU2Nhbm5pbmcgbnVtYmVycy4gKilcblxuKCogRGlnaXRzIHNjYW5uaW5nIGZ1bmN0aW9ucyBzdXBwb3NlIHRoYXQgb25lIGNoYXJhY3RlciBoYXMgYmVlbiBjaGVja2VkIGFuZFxuICAgaXMgYXZhaWxhYmxlLCBzaW5jZSB0aGV5IHJldHVybiBhdCBlbmQgb2YgZmlsZSB3aXRoIHRoZSBjdXJyZW50bHkgZm91bmRcbiAgIHRva2VuIHNlbGVjdGVkLlxuXG4gICBQdXQgaXQgaW4gYW5vdGhlciB3YXksIHRoZSBkaWdpdHMgc2Nhbm5pbmcgZnVuY3Rpb25zIHNjYW4gZm9yIGEgcG9zc2libHlcbiAgIGVtcHR5IHNlcXVlbmNlIG9mIGRpZ2l0cywgKGhlbmNlLCBhIHN1Y2Nlc3NmdWwgc2Nhbm5pbmcgZnJvbSBvbmUgb2YgdGhvc2VcbiAgIGZ1bmN0aW9ucyBkb2VzIG5vdCBpbXBseSB0aGF0IHRoZSB0b2tlbiBpcyBhIHdlbGwtZm9ybWVkIG51bWJlcjogdG8gZ2V0IGFcbiAgIHRydWUgbnVtYmVyLCBpdCBpcyBtYW5kYXRvcnkgdG8gY2hlY2sgdGhhdCBhdCBsZWFzdCBvbmUgdmFsaWQgZGlnaXQgaXNcbiAgIGF2YWlsYWJsZSBiZWZvcmUgY2FsbGluZyBvbmUgb2YgdGhlIGRpZ2l0IHNjYW5uaW5nIGZ1bmN0aW9ucykuICopXG5cbigqIFRoZSBkZWNpbWFsIGNhc2UgaXMgdHJlYXRlZCBlc3BlY2lhbGx5IGZvciBvcHRpbWl6YXRpb24gcHVycG9zZXMuICopXG5sZXQgcmVjIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgJ18nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG5sZXQgc2Nhbl9kZWNpbWFsX2RpZ2l0X3BsdXMgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiZGVjaW1hbCBkaWdpdHNcIiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgYyAtPlxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJjaGFyYWN0ZXIgJUMgaXMgbm90IGEgZGVjaW1hbCBkaWdpdFwiIGMpXG5cblxuKCogVG8gc2NhbiBudW1iZXJzIGZyb20gb3RoZXIgYmFzZXMsIHdlIHVzZSBhIHByZWRpY2F0ZSBhcmd1bWVudCB0b1xuICAgc2NhbiBkaWdpdHMuICopXG5sZXQgc2Nhbl9kaWdpdF9zdGFyIGRpZ2l0cCB3aWR0aCBpYiA9XG4gIGxldCByZWMgc2Nhbl9kaWdpdHMgd2lkdGggaWIgPVxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8IGMgd2hlbiBkaWdpdHAgYyAtPlxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuICAgIHwgJ18nIC0+XG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYiBpblxuICAgICAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcbiAgICB8IF8gLT4gd2lkdGggaW5cbiAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcblxuXG5sZXQgc2Nhbl9kaWdpdF9wbHVzIGJhc2lzIGRpZ2l0cCB3aWR0aCBpYiA9XG4gICgqIEVuc3VyZSB3ZSBoYXZlIGdvdCBlbm91Z2ggd2lkdGggbGVmdCxcbiAgICAgYW5kIHJlYWQgYXQgbGVhc3Qgb25lIGRpZ2l0LiAqKVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiZGlnaXRzXCIgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGlmIGRpZ2l0cCBjIHRoZW5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RpZ2l0X3N0YXIgZGlnaXRwIHdpZHRoIGliXG4gIGVsc2VcbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiY2hhcmFjdGVyICVDIGlzIG5vdCBhIHZhbGlkICVzIGRpZ2l0XCIgYyBiYXNpcylcblxuXG5sZXQgaXNfYmluYXJ5X2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzEnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5fYmluYXJ5X2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcImJpbmFyeVwiIGlzX2JpbmFyeV9kaWdpdFxuXG5sZXQgaXNfb2N0YWxfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnNycgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9vY3RhbF9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJvY3RhbFwiIGlzX29jdGFsX2RpZ2l0XG5cbmxldCBpc19oZXhhX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9oZXhhZGVjaW1hbF9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJoZXhhZGVjaW1hbFwiIGlzX2hleGFfZGlnaXRcblxuKCogU2NhbiBhIGRlY2ltYWwgaW50ZWdlci4gKilcbmxldCBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50ID0gc2Nhbl9kZWNpbWFsX2RpZ2l0X3BsdXNcblxubGV0IHNjYW5fc2lnbiB3aWR0aCBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJysnIC0+IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgY1xuICB8ICctJyAtPiBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGNcbiAgfCBfIC0+IHdpZHRoXG5cblxubGV0IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbigqIFNjYW4gYW4gdW5zaWduZWQgaW50ZWdlciB0aGF0IGNvdWxkIGJlIGdpdmVuIGluIGFueSAoY29tbW9uKSBiYXNpcy5cbiAgIElmIGRpZ2l0cyBhcmUgcHJlZml4ZWQgYnkgb25lIG9mIDB4LCAwWCwgMG8sIG9yIDBiLCB0aGUgbnVtYmVyIGlzXG4gICBhc3N1bWVkIHRvIGJlIHdyaXR0ZW4gcmVzcGVjdGl2ZWx5IGluIGhleGFkZWNpbWFsLCBoZXhhZGVjaW1hbCxcbiAgIG9jdGFsLCBvciBiaW5hcnkuICopXG5sZXQgc2Nhbl91bnNpZ25lZF9pbnQgd2lkdGggaWIgPVxuICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgYmVnaW4gbWF0Y2ggYyB3aXRoXG4gICAgfCAneCcgfCAnWCcgLT4gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8ICdvJyAtPiBzY2FuX29jdGFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgJ2InIC0+IHNjYW5fYmluYXJ5X2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgXyAtPiBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiBlbmRcbiAgfCBfIC0+IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG5sZXQgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9pbnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl91bnNpZ25lZF9pbnQgd2lkdGggaWJcblxuXG5sZXQgc2Nhbl9pbnRfY29udmVyc2lvbiBjb252IHdpZHRoIGliID1cbiAgbWF0Y2ggY29udiB3aXRoXG4gIHwgQl9jb252ZXJzaW9uIC0+IHNjYW5fYmluYXJ5X2ludCB3aWR0aCBpYlxuICB8IERfY29udmVyc2lvbiAtPiBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gIHwgSV9jb252ZXJzaW9uIC0+IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfaW50IHdpZHRoIGliXG4gIHwgT19jb252ZXJzaW9uIC0+IHNjYW5fb2N0YWxfaW50IHdpZHRoIGliXG4gIHwgVV9jb252ZXJzaW9uIC0+IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgfCBYX2NvbnZlcnNpb24gLT4gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG4oKiBTY2FubmluZyBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAqKVxuXG4oKiBGcmFjdGlvbmFsIHBhcnQgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZWR1Y2VkIHRvIDAgZGlnaXRzLiAqKVxubGV0IHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbigqIEV4cCBwYXJ0IGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgcmVkdWNlZCB0byAwIGRpZ2l0cy4gKilcbmxldCBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJ2UnIHwgJ0UnIGFzIGMgLT5cbiAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbigqIFNjYW4gdGhlIGludGVnZXIgcGFydCBvZiBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgKG5vdCB1c2luZyB0aGVcbiAgIE9DYW1sIGxleGljYWwgY29udmVudGlvbiBzaW5jZSB0aGUgaW50ZWdlciBwYXJ0IGNhbiBiZSBlbXB0eSk6XG4gICBhbiBvcHRpb25hbCBzaWduLCBmb2xsb3dlZCBieSBhIHBvc3NpYmx5IGVtcHR5IHNlcXVlbmNlIG9mIGRlY2ltYWxcbiAgIGRpZ2l0cyAoZS5nLiAtLjEpLiAqKVxubGV0IHNjYW5faW50ZWdlcl9wYXJ0IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG5cblxuKCpcbiAgIEZvciB0aGUgdGltZSBiZWluZyB3ZSBoYXZlIChhcyBmb3VuZCBpbiBzY2FuZi5tbGkpOlxuICAgdGhlIGZpZWxkIHdpZHRoIGlzIGNvbXBvc2VkIG9mIGFuIG9wdGlvbmFsIGludGVnZXIgbGl0ZXJhbFxuICAgaW5kaWNhdGluZyB0aGUgbWF4aW1hbCB3aWR0aCBvZiB0aGUgdG9rZW4gdG8gcmVhZC5cbiAgIFVuZm9ydHVuYXRlbHksIHRoZSB0eXBlLWNoZWNrZXIgbGV0IHRoZSB1c2VyIHdyaXRlIGFuIG9wdGlvbmFsIHByZWNpc2lvbixcbiAgIHNpbmNlIHRoaXMgaXMgdmFsaWQgZm9yIHByaW50ZiBmb3JtYXQgc3RyaW5ncy5cblxuICAgVGh1cywgdGhlIG5leHQgc3RlcCBmb3IgU2NhbmYgaXMgdG8gc3VwcG9ydCBhIGZ1bGwgd2lkdGggYW5kIHByZWNpc2lvblxuICAgaW5kaWNhdGlvbiwgbW9yZSBvciBsZXNzIHNpbWlsYXIgdG8gdGhlIG9uZSBmb3IgcHJpbnRmLCBwb3NzaWJseSBleHRlbmRlZFxuICAgdG8gdGhlIHNwZWNpZmljYXRpb24gb2YgYSBbbWF4LCBtaW5dIHJhbmdlIGZvciB0aGUgd2lkdGggb2YgdGhlIHRva2VuIHJlYWRcbiAgIGZvciBzdHJpbmdzLiBTb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nIHNwZWMgZm9yIHNjYW5mLm1saTpcblxuICAgVGhlIG9wdGlvbmFsIFt3aWR0aF0gaXMgYW4gaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBtYXhpbWFsXG4gICB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZC4gRm9yIGluc3RhbmNlLCBbJTZkXSByZWFkcyBhbiBpbnRlZ2VyLFxuICAgaGF2aW5nIGF0IG1vc3QgNiBjaGFyYWN0ZXJzLlxuXG4gICBUaGUgb3B0aW9uYWwgW3ByZWNpc2lvbl0gaXMgYSBkb3QgWy5dIGZvbGxvd2VkIGJ5IGFuIGludGVnZXI6XG5cbiAgIC0gaW4gdGhlIGZsb2F0aW5nIHBvaW50IG51bWJlciBjb252ZXJzaW9ucyAoWyVmXSwgWyVlXSwgWyVnXSwgWyVGXSwgWyVFXSxcbiAgIGFuZCBbJUZdIGNvbnZlcnNpb25zLCB0aGUgW3ByZWNpc2lvbl0gaW5kaWNhdGVzIHRoZSBtYXhpbXVtIG51bWJlciBvZlxuICAgZGlnaXRzIHRoYXQgbWF5IGZvbGxvdyB0aGUgZGVjaW1hbCBwb2ludC4gRm9yIGluc3RhbmNlLCBbJS40Zl0gcmVhZHMgYVxuICAgW2Zsb2F0XSB3aXRoIGF0IG1vc3QgNCBmcmFjdGlvbmFsIGRpZ2l0cyxcblxuICAgLSBpbiB0aGUgc3RyaW5nIGNvbnZlcnNpb25zIChbJXNdLCBbJVNdLCBbJVxcWyByYW5nZSBcXF1dKSwgYW5kIGluIHRoZVxuICAgaW50ZWdlciBudW1iZXIgY29udmVyc2lvbnMgKFslaV0sIFslZF0sIFsldV0sIFsleF0sIFslb10sIGFuZCB0aGVpclxuICAgW2ludDMyXSwgW2ludDY0XSwgYW5kIFtuYXRpdmVfaW50XSBjb3JyZXNwb25kZW50KSwgdGhlIFtwcmVjaXNpb25dXG4gICBpbmRpY2F0ZXMgdGhlIHJlcXVpcmVkIG1pbmltdW0gd2lkdGggb2YgdGhlIHRva2VuIHJlYWQsXG5cbiAgIC0gb24gYWxsIG90aGVyIGNvbnZlcnNpb25zLCB0aGUgd2lkdGggYW5kIHByZWNpc2lvbiBzcGVjaWZ5IHRoZSBbbWF4LCBtaW5dXG4gICByYW5nZSBmb3IgdGhlIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLlxuKilcbmxldCBzY2FuX2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5faW50ZWdlcl9wYXJ0IHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoLCBwcmVjaXNpb24gZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCwgcHJlY2lzaW9uIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJy4nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgbGV0IHdpZHRoID0gd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9mcmFjdGlvbmFsX3BhcnQgcHJlY2lzaW9uIGliKSBpblxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiwgcHJlY2lzaW9uXG4gIHwgXyAtPlxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiwgcHJlY2lzaW9uXG5cblxubGV0IGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGVycm9yIHN0ciA9XG4gIGxldCBsb3dlcmNhc2UgYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnQScgLi4gJ1onIC0+XG4gICAgICBjaGFyX29mX2ludCAoaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyArIGludF9vZl9jaGFyICdhJylcbiAgICB8IF8gLT4gYyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHdpZHRoID0gcmVmIHdpZHRoIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBsb3dlcmNhc2UgYyA8PiBsb3dlcmNhc2Ugc3RyLltpXSB0aGVuIGVycm9yICgpO1xuICAgIGlmICF3aWR0aCA9IDAgdGhlbiBlcnJvciAoKTtcbiAgICB3aWR0aCA6PSBTY2FubmluZy5zdG9yZV9jaGFyICF3aWR0aCBpYiBjO1xuICBkb25lO1xuICAhd2lkdGhcblxuXG5sZXQgc2Nhbl9oZXhfZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPiAoXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgbGV0IHdpZHRoID0gY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcInhcIiBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICcuJyB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWIgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgfCAnLicgYXMgYyAtPiAoXG4gICAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICAgICAgICAgICAgIHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5faGV4YWRlY2ltYWxfaW50IHByZWNpc2lvbiBpYilcbiAgICAgICAgICApXG4gICAgICAgICAgfCBfIC0+IHdpZHRoIGluXG4gICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICB8ICdwJyB8ICdQJyBhcyBjIC0+XG4gICAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgICAgICAgICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICAgICAgICAgIHwgXyAtPiB3aWR0aFxuICApXG4gIHwgJ24nIHwgJ04nIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwiYW5cIlxuICB8ICdpJyB8ICdJJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcIm5maW5pdHlcIlxuICB8IF8gLT4gYmFkX2hleF9mbG9hdCAoKVxuXG5cbmxldCBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnLicgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAoKiBUaGUgZWZmZWN0aXZlIHdpZHRoIGF2YWlsYWJsZSBmb3Igc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCBpc1xuICAgICAgIHRoZSBtaW5pbXVtIG9mIGRlY2xhcmVkIHByZWNpc2lvbiBhbmQgd2lkdGggbGVmdC4gKilcbiAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAoKiBBZnRlciBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IHdpdGggW3ByZWNpc2lvbl0gcHJvdmlzaW9uYWwgd2lkdGgsXG4gICAgICAgW3dpZHRoX3ByZWNpc2lvbl0gaXMgbGVmdC4gKilcbiAgICBsZXQgd2lkdGhfcHJlY2lzaW9uID0gc2Nhbl9mcmFjdGlvbmFsX3BhcnQgcHJlY2lzaW9uIGliIGluXG4gICAgKCogSGVuY2UsIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgdG9vayBleGFjdGx5XG4gICAgICAgW3ByZWNpc2lvbiAtIHdpZHRoX3ByZWNpc2lvbl0gY2hhcnMuICopXG4gICAgbGV0IGZyYWNfd2lkdGggPSBwcmVjaXNpb24gLSB3aWR0aF9wcmVjaXNpb24gaW5cbiAgICAoKiBBbmQgbmV3IHByb3Zpc2lvbmFsIHdpZHRoIGlzIFt3aWR0aCAtIHdpZHRoX3ByZWNpc2lvbi4gKilcbiAgICBsZXQgd2lkdGggPSB3aWR0aCAtIGZyYWNfd2lkdGggaW5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWJcbiAgfCAnZScgfCAnRScgLT5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWJcbiAgfCBfIC0+IGJhZF9mbG9hdCAoKVxuXG5cbmxldCBzY2FuX2NhbWxfZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT4gKFxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICB8ICd4JyB8ICdYJyBhcyBjIC0+IChcbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICAgIGxldCB3aWR0aCA9IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAnLicgYXMgYyAtPiAoXG4gICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICAgICAgICAgICB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2hleGFkZWNpbWFsX2ludCBwcmVjaXNpb24gaWIpXG4gICAgICAgIClcbiAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IGJhZF9mbG9hdCAoKSBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAncCcgfCAnUCcgYXMgYyAtPlxuICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgICAgICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgICAgICAgfCBfIC0+IHdpZHRoXG4gICAgKVxuICAgIHwgXyAtPlxuICAgICAgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliXG4gIClcbiAgfCAnMScgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgIHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYlxuKCogU3BlY2lhbCBjYXNlIG9mIG5hbiBhbmQgaW5maW5pdHk6XG4gIHwgJ2knIC0+XG4gIHwgJ24nIC0+XG4qKVxuICB8IF8gLT4gYmFkX2Zsb2F0ICgpXG5cblxuKCogU2NhbiBhIHJlZ3VsYXIgc3RyaW5nOlxuICAgc3RvcHMgd2hlbiBlbmNvdW50ZXJpbmcgYSBzcGFjZSwgaWYgbm8gc2Nhbm5pbmcgaW5kaWNhdGlvbiBoYXMgYmVlbiBnaXZlbjtcbiAgIG90aGVyd2lzZSwgc3RvcHMgd2hlbiBlbmNvdW50ZXJpbmcgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHNjYW5uaW5nXG4gICBpbmRpY2F0aW9uIFtzdHBdLlxuICAgSXQgYWxzbyBzdG9wcyBhdCBlbmQgb2YgZmlsZSBvciB3aGVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGhhc1xuICAgYmVlbiByZWFkLiAqKVxubGV0IHNjYW5fc3RyaW5nIHN0cCB3aWR0aCBpYiA9XG4gIGxldCByZWMgbG9vcCB3aWR0aCA9XG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgbWF0Y2ggc3RwIHdpdGhcbiAgICAgIHwgU29tZSBjJyB3aGVuIGMgPSBjJyAtPiBTY2FubmluZy5za2lwX2NoYXIgd2lkdGggaWJcbiAgICAgIHwgU29tZSBfIC0+IGxvb3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IGxvb3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaW5cbiAgbG9vcCB3aWR0aFxuXG5cbigqIFNjYW4gYSBjaGFyOiBwZWVrIHN0cmljdGx5IG9uZSBjaGFyYWN0ZXIgaW4gdGhlIGlucHV0LCB3aGF0c29ldmVyLiAqKVxubGV0IHNjYW5fY2hhciB3aWR0aCBpYiA9XG4gICgqIFRoZSBjYXNlIHdpZHRoID0gMCBjb3VsZCBub3QgaGFwcGVuIGhlcmUsIHNpbmNlIGl0IGlzIHRlc3RlZCBiZWZvcmVcbiAgICAgY2FsbGluZyBzY2FuX2NoYXIsIGluIHRoZSBtYWluIHNjYW5uaW5nIGZ1bmN0aW9uLlxuICAgIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJhIGNoYXJhY3RlclwiIGVsc2UgKilcbiAgU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAoU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIpXG5cblxubGV0IGNoYXJfZm9yX2JhY2tzbGFzaCA9IGZ1bmN0aW9uXG4gIHwgJ24nIC0+ICdcXDAxMCdcbiAgfCAncicgLT4gJ1xcMDEzJ1xuICB8ICdiJyAtPiAnXFwwMDgnXG4gIHwgJ3QnIC0+ICdcXDAwOSdcbiAgfCBjIC0+IGNcblxuXG4oKiBUaGUgaW50ZWdlciB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmYWNpYWwgdmFsdWUgb2YgYSB2YWxpZFxuICAgZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIuICopXG5sZXQgZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMgPSBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG5cbmxldCBjaGFyX2Zvcl9kZWNpbWFsX2NvZGUgYzAgYzEgYzIgPVxuICBsZXQgYyA9XG4gICAgMTAwICogZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMwICtcbiAgICAgMTAgKiBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzEgK1xuICAgICAgICAgIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMiBpblxuICBpZiBjIDwgMCB8fCBjID4gMjU1IHRoZW5cbiAgICBiYWRfaW5wdXRcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgXCJiYWQgY2hhcmFjdGVyIGRlY2ltYWwgZW5jb2RpbmcgXFxcXCVjJWMlY1wiIGMwIGMxIGMyKSBlbHNlXG4gIGNoYXJfb2ZfaW50IGNcblxuXG4oKiBUaGUgaW50ZWdlciB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmYWNpYWwgdmFsdWUgb2YgYSB2YWxpZFxuICAgaGV4YWRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyLiAqKVxubGV0IGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYyA9XG4gIGxldCBkID0gaW50X29mX2NoYXIgYyBpblxuICAoKiBDb3VsZCBhbHNvIGJlOlxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJzknIHRoZW4gZCAtIGludF9vZl9jaGFyICcwJyBlbHNlXG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnRicgdGhlbiAxMCArIGQgLSBpbnRfb2ZfY2hhciAnQScgZWxzZVxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJ2YnIHRoZW4gMTAgKyBkIC0gaW50X29mX2NoYXIgJ2EnIGVsc2UgYXNzZXJ0IGZhbHNlXG4gICopXG4gIGlmIGQgPj0gaW50X29mX2NoYXIgJ2EnIHRoZW5cbiAgICBkIC0gODcgKCogMTAgKyBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ2EnICopIGVsc2VcbiAgaWYgZCA+PSBpbnRfb2ZfY2hhciAnQScgdGhlblxuICAgIGQgLSA1NSAgKCogMTAgKyBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICopIGVsc2VcbiAgICBkIC0gaW50X29mX2NoYXIgJzAnXG5cblxubGV0IGNoYXJfZm9yX2hleGFkZWNpbWFsX2NvZGUgYzEgYzIgPVxuICBsZXQgYyA9XG4gICAgMTYgKiBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMxICtcbiAgICAgICAgIGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzIgaW5cbiAgaWYgYyA8IDAgfHwgYyA+IDI1NSB0aGVuXG4gICAgYmFkX2lucHV0XG4gICAgICAoUHJpbnRmLnNwcmludGYgXCJiYWQgY2hhcmFjdGVyIGhleGFkZWNpbWFsIGVuY29kaW5nIFxcXFwlYyVjXCIgYzEgYzIpIGVsc2VcbiAgY2hhcl9vZl9pbnQgY1xuXG5cbigqIENhbGxlZCBpbiBwYXJ0aWN1bGFyIHdoZW4gZW5jb3VudGVyaW5nICdcXFxcJyBhcyBzdGFydGVyIG9mIGEgY2hhci5cbiAgIFN0b3BzIGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyAnXFwnJy4gKilcbmxldCBjaGVja19uZXh0X2NoYXIgbWVzc2FnZSB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggbWVzc2FnZSBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIGJhZF9lbmRfb2ZfaW5wdXQgbWVzc2FnZSBlbHNlXG4gIGNcblxuXG5sZXQgY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyID0gY2hlY2tfbmV4dF9jaGFyIFwiYSBDaGFyXCJcbmxldCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyA9IGNoZWNrX25leHRfY2hhciBcImEgU3RyaW5nXCJcblxubGV0IHNjYW5fYmFja3NsYXNoX2NoYXIgd2lkdGggaWIgPVxuICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICB8ICdcXFxcJyB8ICdcXCcnIHwgJ1xcXCInIHwgJ24nIHwgJ3QnIHwgJ2InIHwgJ3InIGFzIGMgLT5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIChjaGFyX2Zvcl9iYWNrc2xhc2ggYylcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgZ2V0X2RpZ2l0ICgpID1cbiAgICAgIGxldCBjID0gU2Nhbm5pbmcubmV4dF9jaGFyIGliIGluXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+IGNcbiAgICAgIHwgYyAtPiBiYWRfaW5wdXRfZXNjYXBlIGMgaW5cbiAgICBsZXQgYzAgPSBjIGluXG4gICAgbGV0IGMxID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgbGV0IGMyID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciAod2lkdGggLSAyKSBpYiAoY2hhcl9mb3JfZGVjaW1hbF9jb2RlIGMwIGMxIGMyKVxuICB8ICd4JyAtPlxuICAgIGxldCBnZXRfZGlnaXQgKCkgPVxuICAgICAgbGV0IGMgPSBTY2FubmluZy5uZXh0X2NoYXIgaWIgaW5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyB8ICdhJyAuLiAnZicgYXMgYyAtPiBjXG4gICAgICB8IGMgLT4gYmFkX2lucHV0X2VzY2FwZSBjIGluXG4gICAgbGV0IGMxID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgbGV0IGMyID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciAod2lkdGggLSAyKSBpYiAoY2hhcl9mb3JfaGV4YWRlY2ltYWxfY29kZSBjMSBjMilcbiAgfCBjIC0+XG4gICAgYmFkX2lucHV0X2VzY2FwZSBjXG5cblxuKCogU2NhbiBhIGNoYXJhY3RlciAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fY2FtbF9jaGFyIHdpZHRoIGliID1cblxuICBsZXQgcmVjIGZpbmRfc3RhcnQgd2lkdGggPVxuICAgIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgICB8ICdcXCcnIC0+IGZpbmRfY2hhciAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFwnJyBjXG5cbiAgYW5kIGZpbmRfY2hhciB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXFxcJyAtPlxuICAgICAgZmluZF9zdG9wIChzY2FuX2JhY2tzbGFzaF9jaGFyIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYikgaWIpXG4gICAgfCBjIC0+XG4gICAgICBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcblxuICBhbmQgZmluZF9zdG9wIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcJycgLT4gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWJcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXCcnIGMgaW5cblxuICBmaW5kX3N0YXJ0IHdpZHRoXG5cblxuKCogU2NhbiBhIGRlbGltaXRlZCBzdHJpbmcgKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2NhbWxfc3RyaW5nIHdpZHRoIGliID1cblxuICBsZXQgcmVjIGZpbmRfc3RhcnQgd2lkdGggPVxuICAgIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgICB8ICdcXFwiJyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcXCInIGNcblxuICBhbmQgZmluZF9zdG9wIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxcIicgLT4gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWJcbiAgICB8ICdcXFxcJyAtPiBzY2FuX2JhY2tzbGFzaCAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuXG4gIGFuZCBzY2FuX2JhY2tzbGFzaCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xccicgLT4gc2tpcF9uZXdsaW5lIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8ICdcXG4nIC0+IHNraXBfc3BhY2VzIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IF8gLT4gZmluZF9zdG9wIChzY2FuX2JhY2tzbGFzaF9jaGFyIHdpZHRoIGliKVxuXG4gIGFuZCBza2lwX25ld2xpbmUgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXG4nIC0+IHNraXBfc3BhY2VzIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IF8gLT4gZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliICdcXHInKVxuXG4gIGFuZCBza2lwX3NwYWNlcyB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJyAnIC0+IHNraXBfc3BhY2VzIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IF8gLT4gZmluZF9zdG9wIHdpZHRoIGluXG5cbiAgZmluZF9zdGFydCB3aWR0aFxuXG5cbigqIFNjYW4gYSBib29sZWFuIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9ib29sIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBsZXQgbSA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAndCcgLT4gNFxuICAgIHwgJ2YnIC0+IDVcbiAgICB8IGMgLT5cbiAgICAgIGJhZF9pbnB1dFxuICAgICAgICAoUHJpbnRmLnNwcmludGYgXCJ0aGUgY2hhcmFjdGVyICVDIGNhbm5vdCBzdGFydCBhIGJvb2xlYW5cIiBjKSBpblxuICBzY2FuX3N0cmluZyBOb25lIG0gaWJcblxuXG4oKiBTY2FuIGEgc3RyaW5nIGNvbnRhaW5pbmcgZWxlbWVudHMgaW4gY2hhcl9zZXQgYW5kIHRlcm1pbmF0ZWQgYnkgc2Nhbl9pbmRpY1xuICAgaWYgcHJvdmlkZWQuICopXG5sZXQgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCBzY2FuX2luZGljIHdpZHRoIGliID1cbiAgbGV0IHJlYyBzY2FuX2NoYXJzIGkgc3RwID1cbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIGkgPiAwICYmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSAmJlxuICAgICAgIGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgJiZcbiAgICAgICBpbnRfb2ZfY2hhciBjIDw+IHN0cCB0aGVuXG4gICAgICBsZXQgXyA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgbWF4X2ludCBpYiBjIGluXG4gICAgICBzY2FuX2NoYXJzIChpIC0gMSkgc3RwIGluXG4gIG1hdGNoIHNjYW5faW5kaWMgd2l0aFxuICB8IE5vbmUgLT4gc2Nhbl9jaGFycyB3aWR0aCAoLTEpO1xuICB8IFNvbWUgYyAtPlxuICAgIHNjYW5fY2hhcnMgd2lkdGggKGludF9vZl9jaGFyIGMpO1xuICAgIGlmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSB0aGVuXG4gICAgICBsZXQgY2kgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICAgIGlmIGMgPSBjaVxuICAgICAgdGhlbiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYlxuICAgICAgZWxzZSBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaVxuXG5cbigqIFRoZSBnbG9iYWwgZXJyb3IgcmVwb3J0IGZ1bmN0aW9uIGZvciBbU2NhbmZdLiAqKVxubGV0IHNjYW5mX2JhZF9pbnB1dCBpYiA9IGZ1bmN0aW9uXG4gIHwgU2Nhbl9mYWlsdXJlIHMgfCBGYWlsdXJlIHMgLT5cbiAgICBsZXQgaSA9IFNjYW5uaW5nLmNoYXJfY291bnQgaWIgaW5cbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwic2NhbmY6IGJhZCBpbnB1dCBhdCBjaGFyIG51bWJlciAlaTogJXNcIiBpIHMpXG4gIHwgeCAtPiByYWlzZSB4XG5cblxuKCogR2V0IHRoZSBjb250ZW50IG9mIGEgY291bnRlciBmcm9tIGFuIGlucHV0IGJ1ZmZlci4gKilcbmxldCBnZXRfY291bnRlciBpYiBjb3VudGVyID1cbiAgbWF0Y2ggY291bnRlciB3aXRoXG4gIHwgTGluZV9jb3VudGVyIC0+IFNjYW5uaW5nLmxpbmVfY291bnQgaWJcbiAgfCBDaGFyX2NvdW50ZXIgLT4gU2Nhbm5pbmcuY2hhcl9jb3VudCBpYlxuICB8IFRva2VuX2NvdW50ZXIgLT4gU2Nhbm5pbmcudG9rZW5fY291bnQgaWJcblxuXG4oKiBDb21wdXRlIHRoZSB3aWR0aCBvZiBhIHBhZGRpbmcgb3B0aW9uIChzZWUgXCIlNDJ7XCIgYW5kIFwiJTEyMyhcIikuICopXG5sZXQgd2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0ID0gbWF0Y2ggcGFkX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBtYXhfaW50XG4gIHwgU29tZSB3aWR0aCAtPiB3aWR0aFxuXG5cbmxldCBzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZyA9XG4gIGlmIGZtdGluZyA9IEVzY2FwZWRfcGVyY2VudCB0aGVuICclJywgXCJcIiBlbHNlXG4gICAgbGV0IHN0ciA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmcgaW5cbiAgICBsZXQgc3RwID0gc3RyLlsxXSBpblxuICAgIGxldCBzdWJfc3RyID0gU3RyaW5nLnN1YiBzdHIgMiAoU3RyaW5nLmxlbmd0aCBzdHIgLSAyKSBpblxuICAgIHN0cCwgc3ViX3N0clxuXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBSZWFkZXIgbWFuYWdlbWVudCAqKVxuXG4oKiBBIGNhbGwgdG8gdGFrZV9mb3JtYXRfcmVhZGVycyBvbiBhIGZvcm1hdCBpcyBldmFsdWF0ZWQgaW50byBmdW5jdGlvbnNcbiAgIHRha2luZyByZWFkZXJzIGFzIGFyZ3VtZW50cyBhbmQgYWdncmVnYXRlIHRoZW0gaW50byBhbiBoZXRlcm9nZW5lb3VzIGxpc3QgKilcbigqIFdoZW4gYWxsIHJlYWRlcnMgYXJlIHRha2VuLCBmaW5hbGx5IHBhc3MgdGhlIGxpc3Qgb2YgdGhlIHJlYWRlcnMgdG8gdGhlXG4gICBjb250aW51YXRpb24gay4gKilcbmxldCByZWMgdGFrZV9mb3JtYXRfcmVhZGVycyA6IHR5cGUgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgIGQgPVxuZnVuIGsgZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgUmVhZGVyIGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3RcbiAgfCBDaGFyIHJlc3QgICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENhbWxfY2hhciByZXN0ICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU3RyaW5nIChfLCByZXN0KSAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDYW1sX3N0cmluZyAoXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50MzIgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBOYXRpdmVpbnQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludDY0IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRmxvYXQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBCb29sIChfLCByZXN0KSAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEFscGhhIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgVGhldGEgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGbHVzaCByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFN0cmluZ19saXRlcmFsIChfLCByZXN0KSAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDdXN0b20gKF8sIF8sIHJlc3QpICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQsIF8pKSwgcmVzdCkgLT5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdCBmbXQgcmVzdClcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10LCBfKSksIHJlc3QpIC0+XG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXQgZm10IHJlc3QpXG5cbiAgfCBGb3JtYXRfYXJnIChfLCBfLCByZXN0KSAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpICAgIC0+XG4gICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSkgcmVzdFxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgICAgICAgIC0+IHRha2VfaWdub3JlZF9mb3JtYXRfcmVhZGVycyBrIGlnbiByZXN0XG5cbiAgfCBFbmRfb2ZfZm9ybWF0ICAgICAgICAgICAgICAgICAgICAtPiBrIE5pbFxuXG4oKiBUYWtlIHJlYWRlcnMgYXNzb2NpYXRlZCB0byBhbiBmbXR0eSBjb21pbmcgZnJvbSBhIEZvcm1hdF9zdWJzdCBcIiUoLi4uJSlcIi4gKilcbmFuZCB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIDogdHlwZSB4IHkgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIHgsIHkpIGZtdHR5IC0+XG4gICAgICAoeSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgeCwgZSwgZikgZm10IC0+IGQgPVxuZnVuIGsgZm10dHkgZm10IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBSZWFkZXJfdHkgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdCBmbXRcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0IGZtdFxuICB8IENoYXJfdHkgcmVzdCAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50X3R5IHJlc3QgICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludDMyX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEZsb2F0X3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBCb29sX3R5IHJlc3QgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IFRoZXRhX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRm9ybWF0X2FyZ190eSAoXywgcmVzdCkgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEVuZF9vZl9mbXR0eSAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdHR5IHR5IHJlc3QpIGZtdFxuXG4oKiBUYWtlIHJlYWRlcnMgYXNzb2NpYXRlZCB0byBhbiBpZ25vcmVkIHBhcmFtZXRlci4gKilcbmFuZCB0YWtlX2lnbm9yZWRfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIHggeSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgeCwgeSkgaWdub3JlZCAtPlxuICAgICAgKHksIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIHgsIGUsIGYpIGZtdCAtPiBkID1cbmZ1biBrIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX3JlYWRlciAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfbmF0aXZlaW50IChfLCBfKSAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIGZtdHR5IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBHZW5lcmljIHNjYW5uaW5nICopXG5cbigqIE1ha2UgYSBnZW5lcmljIHNjYW5uaW5nIGZ1bmN0aW9uLiAqKVxuKCogU2NhbiBhIHN0cmVhbSBhY2NvcmRpbmcgdG8gYSBmb3JtYXQgYW5kIHJlYWRlcnMgb2J0YWluZWQgYnlcbiAgIHRha2VfZm9ybWF0X3JlYWRlcnMsIGFuZCBhZ2dyZWdhdGUgc2Nhbm5lZCB2YWx1ZXMgaW50byBhblxuICAgaGV0ZXJvZ2VuZW91cyBsaXN0LiAqKVxuKCogUmV0dXJuIHRoZSBoZXRlcm9nZW5lb3VzIGxpc3Qgb2Ygc2Nhbm5lZCB2YWx1ZXMuICopXG5sZXQgcmVjIG1ha2Vfc2NhbmYgOiB0eXBlIGEgYyBkIGUgZi5cbiAgICBTY2FubmluZy5pbl9jaGFubmVsIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChkLCBlKSBoZXRlcl9saXN0IC0+IChhLCBmKSBoZXRlcl9saXN0ID1cbmZ1biBpYiBmbXQgcmVhZGVycyAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IENoYXIgcmVzdCAtPlxuICAgIGxldCBfID0gc2Nhbl9jaGFyIDAgaWIgaW5cbiAgICBsZXQgYyA9IHRva2VuX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX2NoYXIgMCBpYiBpblxuICAgIGxldCBjID0gdG9rZW5fY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSkgLT5cbiAgICBsZXQgc3RwLCBzdHIgPSBzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgc3RwKSB3aWR0aCBpYiBpblxuICAgIGxldCBzdHJfcmVzdCA9IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgc3RyX3Jlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpKSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSAneycpIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhblxuICAgICAgICAgICAgICAgICAgIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgJ1snKSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW5cbiAgICAgICAgICAgICAgICAgICB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgTm9uZSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG5cbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2NhbWxfc3RyaW5nIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludCBjKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQzMiBjKVxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5fbmF0aXZlaW50IGMpXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludDY0IGMpXG4gIHwgRmxvYXQgKChfLCAoRmxvYXRfRiB8IEZsb2F0X0NGKSksIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9jYW1sX2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgRmxvYXQgKChfLCAoRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cpKSxcbiAgICAgICAgICAgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgRmxvYXQgKChfLCAoRmxvYXRfaCB8IEZsb2F0X0gpKSwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2hleF9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiBfIF8gaWIgPSBzY2FuX2Jvb2wgaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX2Jvb2xcbiAgfCBBbHBoYSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiVhXFxcIlwiXG4gIHwgVGhldGEgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIldFxcXCJcIlxuICB8IEN1c3RvbSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiU/XFxcIiAoY3VzdG9tIGNvbnZlcnRlcilcIlxuICB8IFJlYWRlciBmbXRfcmVzdCAtPlxuICAgIGJlZ2luIG1hdGNoIHJlYWRlcnMgd2l0aFxuICAgIHwgQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpIC0+XG4gICAgICAgIGxldCB4ID0gcmVhZGVyIGliIGluXG4gICAgICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10X3Jlc3QgcmVhZGVyc19yZXN0KVxuICAgIHwgTmlsIC0+XG4gICAgICAgIGludmFsaWRfYXJnIFwic2NhbmY6IG1pc3NpbmcgcmVhZGVyXCJcbiAgICBlbmRcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgaWYgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgICBlbHNlIGJhZF9pbnB1dCBcImVuZCBvZiBpbnB1dCBub3QgZm91bmRcIlxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBTdHJpbmcuaXRlciAoY2hlY2tfY2hhciBpYikgc3RyO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiBjaHI7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcblxuICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyAod2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0KSBpYiBpblxuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCA9XG4gICAgICB0cnkgZm9ybWF0X29mX3N0cmluZ19mbXR0eSBzIGZtdHR5XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2dcbiAgICBpblxuICAgIENvbnMgKGZtdCwgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgKHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCkgaWIgaW5cbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQsIGZtdCcgPVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10JyA9IGZtdF9lYmJfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgKCogVE9ETzogZmluZCBhIHdheSB0byBhdm9pZCByZXBhcnNpbmcgdHdpY2UgKilcblxuICAgICAgICAoKiBUT0RPOiB0aGVzZSB0eXBlLWNoZWNrcyBiZWxvdyAqY2FuKiBmYWlsIGJlY2F1c2Ugb2YgdHlwZVxuICAgICAgICAgICBhbWJpZ3VpdHkgaW4gcHJlc2VuY2Ugb2YgaWdub3JlZC1yZWFkZXJzOiBcIiVfciVkXCIgYW5kIFwiJWQlX3JcIlxuICAgICAgICAgICBhcmUgdHlwZWQgaW4gdGhlIHNhbWUgd2F5LlxuXG4gICAgICAgICAgICMgU2NhbmYuc3NjYW5mIFwiXFxcIiVfciVkXFxcIjNcIiBcIiUoJWQlX3IlKVwiIGlnbm9yZVxuICAgICAgICAgICAgIChmdW4gZm10IG4gLT4gc3RyaW5nX29mX2Zvcm1hdCBmbXQsIG4pXG4gICAgICAgICAgIEV4Y2VwdGlvbjogQ2FtbGludGVybmFsRm9ybWF0LlR5cGVfbWlzbWF0Y2guXG5cbiAgICAgICAgICAgV2Ugc2hvdWxkIHByb3Blcmx5IGNhdGNoIHRoaXMgZXhjZXB0aW9uLlxuICAgICAgICAqKVxuICAgICAgICB0eXBlX2Zvcm1hdCBmbXQgKGVyYXNlX3JlbCBmbXR0eSksXG4gICAgICAgIHR5cGVfZm9ybWF0IGZtdCcgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpXG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2dcbiAgICBpblxuICAgIENvbnMgKEZvcm1hdCAoZm10LCBzKSxcbiAgICAgICAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycylcblxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSkgLT5cbiAgICBsZXQgc3RwLCBzdHIgPSBzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBsZXQgd2lkdGggPSB3aWR0aF9vZl9wYWRfb3B0IHdpZHRoX29wdCBpblxuICAgIHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgKFNvbWUgc3RwKSB3aWR0aCBpYjtcbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBzdHJfcmVzdCA9IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIGluXG4gICAgQ29ucyAocywgbWFrZV9zY2FuZiBpYiBzdHJfcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgbGV0IHdpZHRoID0gd2lkdGhfb2ZfcGFkX29wdCB3aWR0aF9vcHQgaW5cbiAgICBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IE5vbmUgd2lkdGggaWI7XG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBDb25zIChzLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgIGxldCBjb3VudCA9IGdldF9jb3VudGVyIGliIGNvdW50ZXIgaW5cbiAgICBDb25zIChjb3VudCwgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBTdHJpbmcuaXRlciAoY2hlY2tfY2hhciBpYikgKHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmb3JtYXR0aW5nX2xpdCk7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgJ0AnOyBjaGVja19jaGFyIGliICd7JztcbiAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVyc1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiAnQCc7IGNoZWNrX2NoYXIgaWIgJ1snO1xuICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzXG5cbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgbGV0IFBhcmFtX2Zvcm1hdF9FQkIgZm10JyA9IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdCBpblxuICAgIGJlZ2luIG1hdGNoIG1ha2Vfc2NhbmYgaWIgZm10JyByZWFkZXJzIHdpdGhcbiAgICB8IENvbnMgKF8sIGFyZ19yZXN0KSAtPiBhcmdfcmVzdFxuICAgIHwgTmlsIC0+IGFzc2VydCBmYWxzZVxuICAgIGVuZFxuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIE5pbFxuXG4oKiBDYXNlIGFuYWx5c2lzIG9uIHBhZGRpbmcgYW5kIHByZWNpc2lvbi4gKilcbigqIFJlamVjdCBmb3JtYXRzIGNvbnRhaW5pbmcgXCIlKlwiIG9yIFwiJS4qXCIuICopXG4oKiBQYXNzIHBhZGRpbmcgYW5kIHByZWNpc2lvbiB0byB0aGUgZ2VuZXJpYyBzY2FubmVyIGBzY2FuJy4gKilcbmFuZCBwYWRfcHJlY19zY2FuZiA6IHR5cGUgYSBjIGQgZSBmIHggeSB6IHQgLlxuICAgIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKGQsIGUpIGhldGVyX2xpc3QgLT4gKHgsIHkpIHBhZGRpbmcgLT4gKHksIHogLT4gYSkgcHJlY2lzaW9uIC0+XG4gICAgICAoaW50IC0+IGludCAtPiBTY2FubmluZy5pbl9jaGFubmVsIC0+IHQpIC0+XG4gICAgICAoU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiB6KSAtPlxuICAgICAgKHgsIGYpIGhldGVyX2xpc3QgPVxuZnVuIGliIGZtdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gdG9rZW4gLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBsZXQgXyA9IHNjYW4gbWF4X2ludCBtYXhfaW50IGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgbGV0IF8gPSBzY2FuIG1heF9pbnQgcCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBsZXQgXyA9IHNjYW4gdyBtYXhfaW50IGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgdyksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGxldCBfID0gc2NhbiB3IHAgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoTGVmdCwgXyksIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJS1cXFwiXCJcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCBfKSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuICB8IEFyZ19wYWRkaW5nIF8sIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAoKiBEZWZpbmluZyBbc2NhbmZdIGFuZCB2YXJpb3VzIGZsYXZvcnMgb2YgW3NjYW5mXSAqKVxuXG50eXBlICdhIGtzY2FuZl9yZXN1bHQgPSBBcmdzIG9mICdhIHwgRXhjIG9mIGV4blxuXG5sZXQga3NjYW5mIGliIGVmIChGb3JtYXQgKGZtdCwgc3RyKSkgPVxuICBsZXQgcmVjIGFwcGx5IDogdHlwZSBhIGIgLiBhIC0+IChhLCBiKSBoZXRlcl9saXN0IC0+IGIgPVxuICAgIGZ1biBmIGFyZ3MgLT4gbWF0Y2ggYXJncyB3aXRoXG4gICAgfCBDb25zICh4LCByKSAtPiBhcHBseSAoZiB4KSByXG4gICAgfCBOaWwgLT4gZlxuICBpblxuICBsZXQgayByZWFkZXJzIGYgPVxuICAgIFNjYW5uaW5nLnJlc2V0X3Rva2VuIGliO1xuICAgIG1hdGNoIHRyeSBBcmdzIChtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKSB3aXRoXG4gICAgICB8IChTY2FuX2ZhaWx1cmUgXyB8IEZhaWx1cmUgXyB8IEVuZF9vZl9maWxlKSBhcyBleGMgLT4gRXhjIGV4Y1xuICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPlxuICAgICAgICBpbnZhbGlkX2FyZyAobXNnIF4gXCIgaW4gZm9ybWF0IFxcXCJcIiBeIFN0cmluZy5lc2NhcGVkIHN0ciBeIFwiXFxcIlwiKVxuICAgIHdpdGhcbiAgICAgIHwgQXJncyBhcmdzIC0+IGFwcGx5IGYgYXJnc1xuICAgICAgfCBFeGMgZXhjIC0+IGVmIGliIGV4Y1xuICBpblxuICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbigqKiopXG5cbmxldCBrYnNjYW5mID0ga3NjYW5mXG5sZXQgYnNjYW5mIGliIGZtdCA9IGtic2NhbmYgaWIgc2NhbmZfYmFkX2lucHV0IGZtdFxuXG5sZXQga3NzY2FuZiBzIGVmIGZtdCA9IGtic2NhbmYgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGVmIGZtdFxubGV0IHNzY2FuZiBzIGZtdCA9IGtic2NhbmYgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIHNjYW5mX2JhZF9pbnB1dCBmbXRcblxubGV0IHNjYW5mIGZtdCA9IGtzY2FuZiBTY2FubmluZy5zdGRpYiBzY2FuZl9iYWRfaW5wdXQgZm10XG5cbigqKiopXG5cbigqIFNjYW5uaW5nIGZvcm1hdCBzdHJpbmdzLiAqKVxubGV0IGJzY2FuZl9mb3JtYXQgOlxuICBTY2FubmluZy5pbl9jaGFubmVsIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAnZykgLT4gJ2cgPVxuICBmdW4gaWIgZm9ybWF0IGYgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgbWF4X2ludCBpYiBpblxuICAgIGxldCBzdHIgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10JyA9XG4gICAgICB0cnkgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIGZvcm1hdFxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnIGluXG4gICAgZiBmbXQnXG5cblxubGV0IHNzY2FuZl9mb3JtYXQgOlxuICBzdHJpbmcgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBzIGZvcm1hdCBmIC0+IGJzY2FuZl9mb3JtYXQgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGZvcm1hdCBmXG5cblxubGV0IGZvcm1hdF9mcm9tX3N0cmluZyBzIGZtdCA9XG4gIHNzY2FuZl9mb3JtYXQgKFwiXFxcIlwiIF4gU3RyaW5nLmVzY2FwZWQgcyBeIFwiXFxcIlwiKSBmbXQgKGZ1biB4IC0+IHgpXG5cblxubGV0IHVuZXNjYXBlZCBzID1cbiAgc3NjYW5mIChcIlxcXCJcIiBeIHMgXiBcIlxcXCJcIikgXCIlUyUhXCIgKGZ1biB4IC0+IHgpXG5cblxuKCogRGVwcmVjYXRlZCAqKVxubGV0IGtmc2NhbmYgaWMgZWYgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcubWVtb19mcm9tX2NoYW5uZWwgaWMpIGVmIGZtdFxubGV0IGZzY2FuZiBpYyBmbXQgPSBrc2NhbmYgKFNjYW5uaW5nLm1lbW9fZnJvbV9jaGFubmVsIGljKSBzY2FuZl9iYWRfaW5wdXQgZm10XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFJlZ2lzdGVyaW5nIE9DYW1sIHZhbHVlcyB3aXRoIHRoZSBDIHJ1bnRpbWUgZm9yIGxhdGVyIGNhbGxiYWNrcyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiBPYmoudCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCByZWdpc3RlciBuYW1lIHYgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIChPYmoucmVwciB2KVxuXG5sZXQgcmVnaXN0ZXJfZXhjZXB0aW9uIG5hbWUgKGV4biA6IGV4bikgPVxuICBsZXQgZXhuID0gT2JqLnJlcHIgZXhuIGluXG4gIGxldCBzbG90ID0gaWYgT2JqLnRhZyBleG4gPSBPYmoub2JqZWN0X3RhZyB0aGVuIGV4biBlbHNlIE9iai5maWVsZCBleG4gMCBpblxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIHNsb3RcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIEplcm9tZSBWb3VpbGxvbiwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBPYmpcblxuKCoqKiogT2JqZWN0IHJlcHJlc2VudGF0aW9uICoqKiopXG5cbmV4dGVybmFsIHNldF9pZDogJ2EgLT4gJ2EgPSBcImNhbWxfc2V0X29vX2lkXCIgW0BAbm9hbGxvY11cblxuKCoqKiogT2JqZWN0IGNvcHkgKioqKilcblxubGV0IGNvcHkgbyA9XG4gIGxldCBvID0gKE9iai5vYmogKE9iai5kdXAgKE9iai5yZXByIG8pKSkgaW5cbiAgc2V0X2lkIG9cblxuKCoqKiogQ29tcHJlc3Npb24gb3B0aW9ucyAqKioqKVxuKCogUGFyYW1ldGVycyAqKVxudHlwZSBwYXJhbXMgPSB7XG4gICAgbXV0YWJsZSBjb21wYWN0X3RhYmxlIDogYm9vbDtcbiAgICBtdXRhYmxlIGNvcHlfcGFyZW50IDogYm9vbDtcbiAgICBtdXRhYmxlIGNsZWFuX3doZW5fY29weWluZyA6IGJvb2w7XG4gICAgbXV0YWJsZSByZXRyeV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGJ1Y2tldF9zbWFsbF9zaXplIDogaW50XG4gIH1cblxubGV0IHBhcmFtcyA9IHtcbiAgY29tcGFjdF90YWJsZSA9IHRydWU7XG4gIGNvcHlfcGFyZW50ID0gdHJ1ZTtcbiAgY2xlYW5fd2hlbl9jb3B5aW5nID0gdHJ1ZTtcbiAgcmV0cnlfY291bnQgPSAzO1xuICBidWNrZXRfc21hbGxfc2l6ZSA9IDE2XG59XG5cbigqKioqIFBhcmFtZXRlcnMgKioqKilcblxubGV0IGluaXRpYWxfb2JqZWN0X3NpemUgPSAyXG5cbigqKioqIEl0ZW1zICoqKiopXG5cbnR5cGUgaXRlbSA9IER1bW15QSB8IER1bW15QiB8IER1bW15QyBvZiBpbnRcbmxldCBfID0gW0R1bW15QTsgRHVtbXlCOyBEdW1teUMgMF0gKCogdG8gYXZvaWQgd2FybmluZ3MgKilcblxubGV0IGR1bW15X2l0ZW0gPSAobWFnaWMgKCkgOiBpdGVtKVxuXG4oKioqKiBUeXBlcyAqKioqKVxuXG50eXBlIHRhZ1xudHlwZSBsYWJlbCA9IGludFxudHlwZSBjbG9zdXJlID0gaXRlbVxudHlwZSB0ID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG50eXBlIG9iaiA9IHQgYXJyYXlcbmV4dGVybmFsIHJldCA6IChvYmogLT4gJ2EpIC0+IGNsb3N1cmUgPSBcIiVpZGVudGl0eVwiXG5cbigqKioqIExhYmVscyAqKioqKVxuXG5sZXQgcHVibGljX21ldGhvZF9sYWJlbCBzIDogdGFnID1cbiAgbGV0IGFjY3UgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIGFjY3UgOj0gMjIzICogIWFjY3UgKyBDaGFyLmNvZGUgcy5baV1cbiAgZG9uZTtcbiAgKCogcmVkdWNlIHRvIDMxIGJpdHMgKilcbiAgYWNjdSA6PSAhYWNjdSBsYW5kICgxIGxzbCAzMSAtIDEpO1xuICAoKiBtYWtlIGl0IHNpZ25lZCBmb3IgNjQgYml0cyBhcmNoaXRlY3R1cmVzICopXG4gIGxldCB0YWcgPSBpZiAhYWNjdSA+IDB4M0ZGRkZGRkYgdGhlbiAhYWNjdSAtICgxIGxzbCAzMSkgZWxzZSAhYWNjdSBpblxuICAoKiBQcmludGYuZXByaW50ZiBcIiVzID0gJWRcXG5cIiBzIHRhZzsgZmx1c2ggc3RkZXJyOyAqKVxuICBtYWdpYyB0YWdcblxuKCoqKiogU3BhcnNlIGFycmF5ICoqKiopXG5cbm1vZHVsZSBWYXJzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHN0cmluZyBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSB2YXJzID0gaW50IFZhcnMudFxuXG5tb2R1bGUgTWV0aHMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gc3RyaW5nIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIG1ldGhzID0gbGFiZWwgTWV0aHMudFxubW9kdWxlIExhYnMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gbGFiZWwgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgbGFicyA9IGJvb2wgTGFicy50XG5cbigqIFRoZSBjb21waWxlciBhc3N1bWVzIHRoYXQgdGhlIGZpcnN0IGZpZWxkIG9mIHRoaXMgc3RydWN0dXJlIGlzIFtzaXplXS4gKilcbnR5cGUgdGFibGUgPVxuIHsgbXV0YWJsZSBzaXplOiBpbnQ7XG4gICBtdXRhYmxlIG1ldGhvZHM6IGNsb3N1cmUgYXJyYXk7XG4gICBtdXRhYmxlIG1ldGhvZHNfYnlfbmFtZTogbWV0aHM7XG4gICBtdXRhYmxlIG1ldGhvZHNfYnlfbGFiZWw6IGxhYnM7XG4gICBtdXRhYmxlIHByZXZpb3VzX3N0YXRlczpcbiAgICAgKG1ldGhzICogbGFicyAqIChsYWJlbCAqIGl0ZW0pIGxpc3QgKiB2YXJzICpcbiAgICAgIGxhYmVsIGxpc3QgKiBzdHJpbmcgbGlzdCkgbGlzdDtcbiAgIG11dGFibGUgaGlkZGVuX21ldGhzOiAobGFiZWwgKiBpdGVtKSBsaXN0O1xuICAgbXV0YWJsZSB2YXJzOiB2YXJzO1xuICAgbXV0YWJsZSBpbml0aWFsaXplcnM6IChvYmogLT4gdW5pdCkgbGlzdCB9XG5cbmxldCBkdW1teV90YWJsZSA9XG4gIHsgbWV0aG9kcyA9IFt8IGR1bW15X2l0ZW0gfF07XG4gICAgbWV0aG9kc19ieV9uYW1lID0gTWV0aHMuZW1wdHk7XG4gICAgbWV0aG9kc19ieV9sYWJlbCA9IExhYnMuZW1wdHk7XG4gICAgcHJldmlvdXNfc3RhdGVzID0gW107XG4gICAgaGlkZGVuX21ldGhzID0gW107XG4gICAgdmFycyA9IFZhcnMuZW1wdHk7XG4gICAgaW5pdGlhbGl6ZXJzID0gW107XG4gICAgc2l6ZSA9IDAgfVxuXG5sZXQgdGFibGVfY291bnQgPSByZWYgMFxuXG4oKiBkdW1teV9tZXQgc2hvdWxkIGJlIGEgcG9pbnRlciwgc28gdXNlIGFuIGF0b20gKilcbmxldCBkdW1teV9tZXQgOiBpdGVtID0gb2JqIChPYmoubmV3X2Jsb2NrIDAgMClcbigqIGlmIGRlYnVnZ2luZyBpcyBuZWVkZWQsIHRoaXMgY291bGQgYmUgYSBnb29kIGlkZWE6ICopXG4oKiBsZXQgZHVtbXlfbWV0ICgpID0gZmFpbHdpdGggXCJVbmRlZmluZWQgbWV0aG9kXCIgKilcblxubGV0IHJlYyBmaXRfc2l6ZSBuID1cbiAgaWYgbiA8PSAyIHRoZW4gbiBlbHNlXG4gIGZpdF9zaXplICgobisxKS8yKSAqIDJcblxubGV0IG5ld190YWJsZSBwdWJfbGFiZWxzID1cbiAgaW5jciB0YWJsZV9jb3VudDtcbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBwdWJfbGFiZWxzIGluXG4gIGxldCBtZXRob2RzID0gQXJyYXkubWFrZSAobGVuKjIrMikgZHVtbXlfbWV0IGluXG4gIG1ldGhvZHMuKDApIDwtIG1hZ2ljIGxlbjtcbiAgbWV0aG9kcy4oMSkgPC0gbWFnaWMgKGZpdF9zaXplIGxlbiAqIFN5cy53b3JkX3NpemUgLyA4IC0gMSk7XG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvIG1ldGhvZHMuKGkqMiszKSA8LSBtYWdpYyBwdWJfbGFiZWxzLihpKSBkb25lO1xuICB7IG1ldGhvZHMgPSBtZXRob2RzO1xuICAgIG1ldGhvZHNfYnlfbmFtZSA9IE1ldGhzLmVtcHR5O1xuICAgIG1ldGhvZHNfYnlfbGFiZWwgPSBMYWJzLmVtcHR5O1xuICAgIHByZXZpb3VzX3N0YXRlcyA9IFtdO1xuICAgIGhpZGRlbl9tZXRocyA9IFtdO1xuICAgIHZhcnMgPSBWYXJzLmVtcHR5O1xuICAgIGluaXRpYWxpemVycyA9IFtdO1xuICAgIHNpemUgPSBpbml0aWFsX29iamVjdF9zaXplIH1cblxubGV0IHJlc2l6ZSBhcnJheSBuZXdfc2l6ZSA9XG4gIGxldCBvbGRfc2l6ZSA9IEFycmF5Lmxlbmd0aCBhcnJheS5tZXRob2RzIGluXG4gIGlmIG5ld19zaXplID4gb2xkX3NpemUgdGhlbiBiZWdpblxuICAgIGxldCBuZXdfYnVjayA9IEFycmF5Lm1ha2UgbmV3X3NpemUgZHVtbXlfbWV0IGluXG4gICAgQXJyYXkuYmxpdCBhcnJheS5tZXRob2RzIDAgbmV3X2J1Y2sgMCBvbGRfc2l6ZTtcbiAgICBhcnJheS5tZXRob2RzIDwtIG5ld19idWNrXG4gZW5kXG5cbmxldCBwdXQgYXJyYXkgbGFiZWwgZWxlbWVudCA9XG4gIHJlc2l6ZSBhcnJheSAobGFiZWwgKyAxKTtcbiAgYXJyYXkubWV0aG9kcy4obGFiZWwpIDwtIGVsZW1lbnRcblxuKCoqKiogQ2xhc3NlcyAqKioqKVxuXG5sZXQgbWV0aG9kX2NvdW50ID0gcmVmIDBcbmxldCBpbnN0X3Zhcl9jb3VudCA9IHJlZiAwXG5cbigqIHR5cGUgdCAqKVxudHlwZSBtZXRoID0gaXRlbVxuXG5sZXQgbmV3X21ldGhvZCB0YWJsZSA9XG4gIGxldCBpbmRleCA9IEFycmF5Lmxlbmd0aCB0YWJsZS5tZXRob2RzIGluXG4gIHJlc2l6ZSB0YWJsZSAoaW5kZXggKyAxKTtcbiAgaW5kZXhcblxubGV0IGdldF9tZXRob2RfbGFiZWwgdGFibGUgbmFtZSA9XG4gIHRyeVxuICAgIE1ldGhzLmZpbmQgbmFtZSB0YWJsZS5tZXRob2RzX2J5X25hbWVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgbGFiZWwgPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gICAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtIE1ldGhzLmFkZCBuYW1lIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbmFtZTtcbiAgICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIExhYnMuYWRkIGxhYmVsIHRydWUgdGFibGUubWV0aG9kc19ieV9sYWJlbDtcbiAgICBsYWJlbFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbHMgdGFibGUgbmFtZXMgPVxuICBBcnJheS5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIG5hbWVzXG5cbmxldCBzZXRfbWV0aG9kIHRhYmxlIGxhYmVsIGVsZW1lbnQgPVxuICBpbmNyIG1ldGhvZF9jb3VudDtcbiAgaWYgTGFicy5maW5kIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgdGhlblxuICAgIHB1dCB0YWJsZSBsYWJlbCBlbGVtZW50XG4gIGVsc2VcbiAgICB0YWJsZS5oaWRkZW5fbWV0aHMgPC0gKGxhYmVsLCBlbGVtZW50KSA6OiB0YWJsZS5oaWRkZW5fbWV0aHNcblxubGV0IGdldF9tZXRob2QgdGFibGUgbGFiZWwgPVxuICB0cnkgTGlzdC5hc3NvYyBsYWJlbCB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgd2l0aCBOb3RfZm91bmQgLT4gdGFibGUubWV0aG9kcy4obGFiZWwpXG5cbmxldCB0b19saXN0IGFyciA9XG4gIGlmIGFyciA9PSBtYWdpYyAwIHRoZW4gW10gZWxzZSBBcnJheS50b19saXN0IGFyclxuXG5sZXQgbmFycm93IHRhYmxlIHZhcnMgdmlydF9tZXRocyBjb25jcl9tZXRocyA9XG4gIGxldCB2YXJzID0gdG9fbGlzdCB2YXJzXG4gIGFuZCB2aXJ0X21ldGhzID0gdG9fbGlzdCB2aXJ0X21ldGhzXG4gIGFuZCBjb25jcl9tZXRocyA9IHRvX2xpc3QgY29uY3JfbWV0aHMgaW5cbiAgbGV0IHZpcnRfbWV0aF9sYWJzID0gTGlzdC5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIHZpcnRfbWV0aHMgaW5cbiAgbGV0IGNvbmNyX21ldGhfbGFicyA9IExpc3QubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSBjb25jcl9tZXRocyBpblxuICB0YWJsZS5wcmV2aW91c19zdGF0ZXMgPC1cbiAgICAgKHRhYmxlLm1ldGhvZHNfYnlfbmFtZSwgdGFibGUubWV0aG9kc19ieV9sYWJlbCwgdGFibGUuaGlkZGVuX21ldGhzLFxuICAgICAgdGFibGUudmFycywgdmlydF9tZXRoX2xhYnMsIHZhcnMpXG4gICAgIDo6IHRhYmxlLnByZXZpb3VzX3N0YXRlcztcbiAgdGFibGUudmFycyA8LVxuICAgIFZhcnMuZm9sZFxuICAgICAgKGZ1biBsYWIgaW5mbyB0dmFycyAtPlxuICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmFycyB0aGVuIFZhcnMuYWRkIGxhYiBpbmZvIHR2YXJzIGVsc2UgdHZhcnMpXG4gICAgICB0YWJsZS52YXJzIFZhcnMuZW1wdHk7XG4gIGxldCBieV9uYW1lID0gcmVmIE1ldGhzLmVtcHR5IGluXG4gIGxldCBieV9sYWJlbCA9IHJlZiBMYWJzLmVtcHR5IGluXG4gIExpc3QuaXRlcjJcbiAgICAoZnVuIG1ldCBsYWJlbCAtPlxuICAgICAgIGJ5X25hbWUgOj0gTWV0aHMuYWRkIG1ldCBsYWJlbCAhYnlfbmFtZTtcbiAgICAgICBieV9sYWJlbCA6PVxuICAgICAgICAgIExhYnMuYWRkIGxhYmVsXG4gICAgICAgICAgICAodHJ5IExhYnMuZmluZCBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIHdpdGggTm90X2ZvdW5kIC0+IHRydWUpXG4gICAgICAgICAgICAhYnlfbGFiZWwpXG4gICAgY29uY3JfbWV0aHMgY29uY3JfbWV0aF9sYWJzO1xuICBMaXN0Lml0ZXIyXG4gICAgKGZ1biBtZXQgbGFiZWwgLT5cbiAgICAgICBieV9uYW1lIDo9IE1ldGhzLmFkZCBtZXQgbGFiZWwgIWJ5X25hbWU7XG4gICAgICAgYnlfbGFiZWwgOj0gTGFicy5hZGQgbGFiZWwgZmFsc2UgIWJ5X2xhYmVsKVxuICAgIHZpcnRfbWV0aHMgdmlydF9tZXRoX2xhYnM7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSAhYnlfbmFtZTtcbiAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSAhYnlfbGFiZWw7XG4gIHRhYmxlLmhpZGRlbl9tZXRocyA8LVxuICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICgobGFiLCBfKSBhcyBtZXQpIGhtIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZpcnRfbWV0aF9sYWJzIHRoZW4gaG0gZWxzZSBtZXQ6OmhtKVxuICAgICAgIHRhYmxlLmhpZGRlbl9tZXRoc1xuICAgICAgIFtdXG5cbmxldCB3aWRlbiB0YWJsZSA9XG4gIGxldCAoYnlfbmFtZSwgYnlfbGFiZWwsIHNhdmVkX2hpZGRlbl9tZXRocywgc2F2ZWRfdmFycywgdmlydF9tZXRocywgdmFycykgPVxuICAgIExpc3QuaGQgdGFibGUucHJldmlvdXNfc3RhdGVzXG4gIGluXG4gIHRhYmxlLnByZXZpb3VzX3N0YXRlcyA8LSBMaXN0LnRsIHRhYmxlLnByZXZpb3VzX3N0YXRlcztcbiAgdGFibGUudmFycyA8LVxuICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgIChmdW4gcyB2IC0+IFZhcnMuYWRkIHYgKFZhcnMuZmluZCB2IHRhYmxlLnZhcnMpIHMpXG4gICAgICAgc2F2ZWRfdmFycyB2YXJzO1xuICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gYnlfbmFtZTtcbiAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBieV9sYWJlbDtcbiAgdGFibGUuaGlkZGVuX21ldGhzIDwtXG4gICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgIChmdW4gKChsYWIsIF8pIGFzIG1ldCkgaG0gLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmlydF9tZXRocyB0aGVuIGhtIGVsc2UgbWV0OjpobSlcbiAgICAgICB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgICAgICBzYXZlZF9oaWRkZW5fbWV0aHNcblxubGV0IG5ld19zbG90IHRhYmxlID1cbiAgbGV0IGluZGV4ID0gdGFibGUuc2l6ZSBpblxuICB0YWJsZS5zaXplIDwtIGluZGV4ICsgMTtcbiAgaW5kZXhcblxubGV0IG5ld192YXJpYWJsZSB0YWJsZSBuYW1lID1cbiAgdHJ5IFZhcnMuZmluZCBuYW1lIHRhYmxlLnZhcnNcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgaW5kZXggPSBuZXdfc2xvdCB0YWJsZSBpblxuICAgIGlmIG5hbWUgPD4gXCJcIiB0aGVuIHRhYmxlLnZhcnMgPC0gVmFycy5hZGQgbmFtZSBpbmRleCB0YWJsZS52YXJzO1xuICAgIGluZGV4XG5cbmxldCB0b19hcnJheSBhcnIgPVxuICBpZiBhcnIgPSBPYmoubWFnaWMgMCB0aGVuIFt8fF0gZWxzZSBhcnJcblxubGV0IG5ld19tZXRob2RzX3ZhcmlhYmxlcyB0YWJsZSBtZXRocyB2YWxzID1cbiAgbGV0IG1ldGhzID0gdG9fYXJyYXkgbWV0aHMgaW5cbiAgbGV0IG5tZXRocyA9IEFycmF5Lmxlbmd0aCBtZXRocyBhbmQgbnZhbHMgPSBBcnJheS5sZW5ndGggdmFscyBpblxuICBsZXQgcmVzID0gQXJyYXkubWFrZSAobm1ldGhzICsgbnZhbHMpIDAgaW5cbiAgZm9yIGkgPSAwIHRvIG5tZXRocyAtIDEgZG9cbiAgICByZXMuKGkpIDwtIGdldF9tZXRob2RfbGFiZWwgdGFibGUgbWV0aHMuKGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMCB0byBudmFscyAtIDEgZG9cbiAgICByZXMuKGkrbm1ldGhzKSA8LSBuZXdfdmFyaWFibGUgdGFibGUgdmFscy4oaSlcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBnZXRfdmFyaWFibGUgdGFibGUgbmFtZSA9XG4gIHRyeSBWYXJzLmZpbmQgbmFtZSB0YWJsZS52YXJzIHdpdGggTm90X2ZvdW5kIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgZ2V0X3ZhcmlhYmxlcyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X3ZhcmlhYmxlIHRhYmxlKSBuYW1lc1xuXG5sZXQgYWRkX2luaXRpYWxpemVyIHRhYmxlIGYgPVxuICB0YWJsZS5pbml0aWFsaXplcnMgPC0gZjo6dGFibGUuaW5pdGlhbGl6ZXJzXG5cbigqXG5tb2R1bGUgS2V5cyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSB0YWcgYXJyYXkgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbmxldCBrZXlfbWFwID0gcmVmIEtleXMuZW1wdHlcbmxldCBnZXRfa2V5IHRhZ3MgOiBpdGVtID1cbiAgdHJ5IG1hZ2ljIChLZXlzLmZpbmQgdGFncyAha2V5X21hcCA6IHRhZyBhcnJheSlcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBrZXlfbWFwIDo9IEtleXMuYWRkIHRhZ3MgdGFncyAha2V5X21hcDtcbiAgICBtYWdpYyB0YWdzXG4qKVxuXG5sZXQgY3JlYXRlX3RhYmxlIHB1YmxpY19tZXRob2RzID1cbiAgaWYgcHVibGljX21ldGhvZHMgPT0gbWFnaWMgMCB0aGVuIG5ld190YWJsZSBbfHxdIGVsc2VcbiAgKCogW3B1YmxpY19tZXRob2RzXSBtdXN0IGJlIGluIGFzY2VuZGluZyBvcmRlciBmb3IgYnl0ZWNvZGUgKilcbiAgbGV0IHRhZ3MgPSBBcnJheS5tYXAgcHVibGljX21ldGhvZF9sYWJlbCBwdWJsaWNfbWV0aG9kcyBpblxuICBsZXQgdGFibGUgPSBuZXdfdGFibGUgdGFncyBpblxuICBBcnJheS5pdGVyaVxuICAgIChmdW4gaSBtZXQgLT5cbiAgICAgIGxldCBsYWIgPSBpKjIrMiBpblxuICAgICAgdGFibGUubWV0aG9kc19ieV9uYW1lICA8LSBNZXRocy5hZGQgbWV0IGxhYiB0YWJsZS5tZXRob2RzX2J5X25hbWU7XG4gICAgICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIExhYnMuYWRkIGxhYiB0cnVlIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwpXG4gICAgcHVibGljX21ldGhvZHM7XG4gIHRhYmxlXG5cbmxldCBpbml0X2NsYXNzIHRhYmxlID1cbiAgaW5zdF92YXJfY291bnQgOj0gIWluc3RfdmFyX2NvdW50ICsgdGFibGUuc2l6ZSAtIDE7XG4gIHRhYmxlLmluaXRpYWxpemVycyA8LSBMaXN0LnJldiB0YWJsZS5pbml0aWFsaXplcnM7XG4gIHJlc2l6ZSB0YWJsZSAoMyArIG1hZ2ljIHRhYmxlLm1ldGhvZHMuKDEpICogMTYgLyBTeXMud29yZF9zaXplKVxuXG5sZXQgaW5oZXJpdHMgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocyAoXywgc3VwZXIsIF8sIGVudikgdG9wID1cbiAgbmFycm93IGNsYSB2YWxzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHM7XG4gIGxldCBpbml0ID1cbiAgICBpZiB0b3AgdGhlbiBzdXBlciBjbGEgZW52IGVsc2UgT2JqLnJlcHIgKHN1cGVyIGNsYSkgaW5cbiAgd2lkZW4gY2xhO1xuICBBcnJheS5jb25jYXRcbiAgICBbW3wgcmVwciBpbml0IHxdO1xuICAgICBtYWdpYyAoQXJyYXkubWFwIChnZXRfdmFyaWFibGUgY2xhKSAodG9fYXJyYXkgdmFscykgOiBpbnQgYXJyYXkpO1xuICAgICBBcnJheS5tYXBcbiAgICAgICAoZnVuIG5tIC0+IHJlcHIgKGdldF9tZXRob2QgY2xhIChnZXRfbWV0aG9kX2xhYmVsIGNsYSBubSkgOiBjbG9zdXJlKSlcbiAgICAgICAodG9fYXJyYXkgY29uY3JfbWV0aHMpIF1cblxubGV0IG1ha2VfY2xhc3MgcHViX21ldGhzIGNsYXNzX2luaXQgPVxuICBsZXQgdGFibGUgPSBjcmVhdGVfdGFibGUgcHViX21ldGhzIGluXG4gIGxldCBlbnZfaW5pdCA9IGNsYXNzX2luaXQgdGFibGUgaW5cbiAgaW5pdF9jbGFzcyB0YWJsZTtcbiAgKGVudl9pbml0IChPYmoucmVwciAwKSwgY2xhc3NfaW5pdCwgZW52X2luaXQsIE9iai5yZXByIDApXG5cbnR5cGUgaW5pdF90YWJsZSA9IHsgbXV0YWJsZSBlbnZfaW5pdDogdDsgbXV0YWJsZSBjbGFzc19pbml0OiB0YWJsZSAtPiB0IH1cbltAQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdXG5cbmxldCBtYWtlX2NsYXNzX3N0b3JlIHB1Yl9tZXRocyBjbGFzc19pbml0IGluaXRfdGFibGUgPVxuICBsZXQgdGFibGUgPSBjcmVhdGVfdGFibGUgcHViX21ldGhzIGluXG4gIGxldCBlbnZfaW5pdCA9IGNsYXNzX2luaXQgdGFibGUgaW5cbiAgaW5pdF9jbGFzcyB0YWJsZTtcbiAgaW5pdF90YWJsZS5jbGFzc19pbml0IDwtIGNsYXNzX2luaXQ7XG4gIGluaXRfdGFibGUuZW52X2luaXQgPC0gZW52X2luaXRcblxubGV0IGR1bW15X2NsYXNzIGxvYyA9XG4gIGxldCB1bmRlZiA9IGZ1biBfIC0+IHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpIGluXG4gIChPYmoubWFnaWMgdW5kZWYsIHVuZGVmLCB1bmRlZiwgT2JqLnJlcHIgMClcblxuKCoqKiogT2JqZWN0cyAqKioqKVxuXG5sZXQgY3JlYXRlX29iamVjdCB0YWJsZSA9XG4gICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gIGxldCBvYmogPSBPYmoubmV3X2Jsb2NrIE9iai5vYmplY3RfdGFnIHRhYmxlLnNpemUgaW5cbiAgKCogWFhYIEFwcGVsIGRlIFtjYW1sX21vZGlmeV0gfCBDYWxsIHRvIFtjYW1sX21vZGlmeV0gKilcbiAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gIE9iai5vYmogKHNldF9pZCBvYmopXG5cbmxldCBjcmVhdGVfb2JqZWN0X29wdCBvYmpfMCB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9ial8wIGVsc2UgYmVnaW5cbiAgICAoKiBYWFggQXBwZWwgZGUgW29ial9ibG9ja10gfCBDYWxsIHRvIFtvYmpfYmxvY2tdICAqKVxuICAgIGxldCBvYmogPSBPYmoubmV3X2Jsb2NrIE9iai5vYmplY3RfdGFnIHRhYmxlLnNpemUgaW5cbiAgICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICAgIE9iai5zZXRfZmllbGQgb2JqIDAgKE9iai5yZXByIHRhYmxlLm1ldGhvZHMpO1xuICAgIE9iai5vYmogKHNldF9pZCBvYmopXG4gIGVuZFxuXG5sZXQgcmVjIGl0ZXJfZiBvYmogPVxuICBmdW5jdGlvblxuICAgIFtdICAgLT4gKClcbiAgfCBmOjpsIC0+IGYgb2JqOyBpdGVyX2Ygb2JqIGxcblxubGV0IHJ1bl9pbml0aWFsaXplcnMgb2JqIHRhYmxlID1cbiAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gIGlmIGluaXRzIDw+IFtdIHRoZW5cbiAgICBpdGVyX2Ygb2JqIGluaXRzXG5cbmxldCBydW5faW5pdGlhbGl6ZXJzX29wdCBvYmpfMCBvYmogdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmogZWxzZSBiZWdpblxuICAgIGxldCBpbml0cyA9IHRhYmxlLmluaXRpYWxpemVycyBpblxuICAgIGlmIGluaXRzIDw+IFtdIHRoZW4gaXRlcl9mIG9iaiBpbml0cztcbiAgICBvYmpcbiAgZW5kXG5cbmxldCBjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGl6ZXJzIG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgIGxldCBvYmogPSBjcmVhdGVfb2JqZWN0IHRhYmxlIGluXG4gICAgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGU7XG4gICAgb2JqXG4gIGVuZFxuXG4oKiBFcXVpdmFsZW50IHByaW1pdGl2ZSBiZWxvd1xubGV0IHNlbmRzZWxmIG9iaiBsYWIgPVxuICAobWFnaWMgb2JqIDogKG9iaiAtPiB0KSBhcnJheSBhcnJheSkuKDApLihsYWIpIG9ialxuKilcbmV4dGVybmFsIHNlbmQgOiBvYmogLT4gdGFnIC0+ICdhID0gXCIlc2VuZFwiXG5leHRlcm5hbCBzZW5kY2FjaGUgOiBvYmogLT4gdGFnIC0+IHQgLT4gaW50IC0+ICdhID0gXCIlc2VuZGNhY2hlXCJcbmV4dGVybmFsIHNlbmRzZWxmIDogb2JqIC0+IGxhYmVsIC0+ICdhID0gXCIlc2VuZHNlbGZcIlxuZXh0ZXJuYWwgZ2V0X3B1YmxpY19tZXRob2QgOiBvYmogLT4gdGFnIC0+IGNsb3N1cmVcbiAgICA9IFwiY2FtbF9nZXRfcHVibGljX21ldGhvZFwiIFtAQG5vYWxsb2NdXG5cbigqKioqIHRhYmxlIGNvbGxlY3Rpb24gYWNjZXNzICoqKiopXG5cbnR5cGUgdGFibGVzID1cbiAgfCBFbXB0eVxuICB8IENvbnMgb2Yge2tleSA6IGNsb3N1cmU7IG11dGFibGUgZGF0YTogdGFibGVzOyBtdXRhYmxlIG5leHQ6IHRhYmxlc31cblxubGV0IHNldF9kYXRhIHRhYmxlcyB2ID0gbWF0Y2ggdGFibGVzIHdpdGhcbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMuZGF0YSA8LSB2XG5sZXQgc2V0X25leHQgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5uZXh0IDwtIHZcbmxldCBnZXRfa2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMua2V5XG5sZXQgZ2V0X2RhdGEgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhXG5sZXQgZ2V0X25leHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5uZXh0XG5cbmxldCBidWlsZF9wYXRoIG4ga2V5cyB0YWJsZXMgPVxuICBsZXQgcmVzID0gQ29ucyB7a2V5ID0gT2JqLm1hZ2ljIDA7IGRhdGEgPSBFbXB0eTsgbmV4dCA9IEVtcHR5fSBpblxuICBsZXQgciA9IHJlZiByZXMgaW5cbiAgZm9yIGkgPSAwIHRvIG4gZG9cbiAgICByIDo9IENvbnMge2tleSA9IGtleXMuKGkpOyBkYXRhID0gIXI7IG5leHQgPSBFbXB0eX1cbiAgZG9uZTtcbiAgc2V0X2RhdGEgdGFibGVzICFyO1xuICByZXNcblxubGV0IHJlYyBsb29rdXBfa2V5cyBpIGtleXMgdGFibGVzID1cbiAgaWYgaSA8IDAgdGhlbiB0YWJsZXMgZWxzZVxuICBsZXQga2V5ID0ga2V5cy4oaSkgaW5cbiAgbGV0IHJlYyBsb29rdXBfa2V5ICh0YWJsZXM6dGFibGVzKSA9XG4gICAgaWYgZ2V0X2tleSB0YWJsZXMgPT0ga2V5IHRoZW5cbiAgICAgIG1hdGNoIGdldF9kYXRhIHRhYmxlcyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBDb25zIF8gYXMgdGFibGVzX2RhdGEgLT5cbiAgICAgICAgICBsb29rdXBfa2V5cyAoaS0xKSBrZXlzIHRhYmxlc19kYXRhXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZ2V0X25leHQgdGFibGVzIHdpdGhcbiAgICAgIHwgQ29ucyBfIGFzIG5leHQgLT4gbG9va3VwX2tleSBuZXh0XG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgbGV0IG5leHQgOiB0YWJsZXMgPSBDb25zIHtrZXk7IGRhdGEgPSBFbXB0eTsgbmV4dCA9IEVtcHR5fSBpblxuICAgICAgICAgIHNldF9uZXh0IHRhYmxlcyBuZXh0O1xuICAgICAgICAgIGJ1aWxkX3BhdGggKGktMSkga2V5cyBuZXh0XG4gIGluXG4gIGxvb2t1cF9rZXkgdGFibGVzXG5cbmxldCBsb29rdXBfdGFibGVzIHJvb3Qga2V5cyA9XG4gIG1hdGNoIGdldF9kYXRhIHJvb3Qgd2l0aFxuICB8IENvbnMgXyBhcyByb290X2RhdGEgLT5cbiAgICBsb29rdXBfa2V5cyAoQXJyYXkubGVuZ3RoIGtleXMgLSAxKSBrZXlzIHJvb3RfZGF0YVxuICB8IEVtcHR5IC0+XG4gICAgYnVpbGRfcGF0aCAoQXJyYXkubGVuZ3RoIGtleXMgLSAxKSBrZXlzIHJvb3RcblxuKCoqKiogYnVpbHRpbiBtZXRob2RzICoqKiopXG5cbmxldCBnZXRfY29uc3QgeCA9IHJldCAoZnVuIF9vYmogLT4geClcbmxldCBnZXRfdmFyIG4gICA9IHJldCAoZnVuIG9iaiAtPiBBcnJheS51bnNhZmVfZ2V0IG9iaiBuKVxubGV0IGdldF9lbnYgZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbilcbmxldCBnZXRfbWV0aCBuICA9IHJldCAoZnVuIG9iaiAtPiBzZW5kc2VsZiBvYmogbilcbmxldCBzZXRfdmFyIG4gICA9IHJldCAoZnVuIG9iaiB4IC0+IEFycmF5LnVuc2FmZV9zZXQgb2JqIG4geClcbmxldCBhcHBfY29uc3QgZiB4ID0gcmV0IChmdW4gX29iaiAtPiBmIHgpXG5sZXQgYXBwX3ZhciBmIG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSlcbmxldCBhcHBfZW52IGYgZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikpXG5sZXQgYXBwX21ldGggZiBuICA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikpXG5sZXQgYXBwX2NvbnN0X2NvbnN0IGYgeCB5ID0gcmV0IChmdW4gX29iaiAtPiBmIHggeSlcbmxldCBhcHBfY29uc3RfdmFyIGYgeCBuICAgPSByZXQgKGZ1biBvYmogLT4gZiB4IChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSlcbmxldCBhcHBfY29uc3RfbWV0aCBmIHggbiA9IHJldCAoZnVuIG9iaiAtPiBmIHggKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfdmFyX2NvbnN0IGYgbiB4ID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pIHgpXG5sZXQgYXBwX21ldGhfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoc2VuZHNlbGYgb2JqIG4pIHgpXG5sZXQgYXBwX2NvbnN0X2VudiBmIHggZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiB4IChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfZW52X2NvbnN0IGYgZSBuIHggPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSB4KVxubGV0IG1ldGhfYXBwX2NvbnN0IG4geCA9IHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIHgpXG5sZXQgbWV0aF9hcHBfdmFyIG4gbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIChBcnJheS51bnNhZmVfZ2V0IG9iaiBtKSlcbmxldCBtZXRoX2FwcF9lbnYgbiBlIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG0pKVxubGV0IG1ldGhfYXBwX21ldGggbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKHNlbmRzZWxmIG9iaiBtKSlcbmxldCBzZW5kX2NvbnN0IG0geCBjID1cbiAgcmV0IChmdW4gb2JqIC0+IHNlbmRjYWNoZSB4IG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF92YXIgbSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGUgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgOiBvYmopIG1cbiAgICAgIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfZW52IG0gZSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGVcbiAgICAgIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXRcbiAgICAgICAgICAgICAgICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIDogb2JqKVxuICAgICAgbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX21ldGggbSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGUgKHNlbmRzZWxmIG9iaiBuKSBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IG5ld19jYWNoZSB0YWJsZSA9XG4gIGxldCBuID0gbmV3X21ldGhvZCB0YWJsZSBpblxuICBsZXQgbiA9XG4gICAgaWYgbiBtb2QgMiA9IDAgfHwgbiA+IDIgKyBtYWdpYyB0YWJsZS5tZXRob2RzLigxKSAqIDE2IC8gU3lzLndvcmRfc2l6ZVxuICAgIHRoZW4gbiBlbHNlIG5ld19tZXRob2QgdGFibGVcbiAgaW5cbiAgdGFibGUubWV0aG9kcy4obikgPC0gT2JqLm1hZ2ljIDA7XG4gIG5cblxudHlwZSBpbXBsID1cbiAgICBHZXRDb25zdFxuICB8IEdldFZhclxuICB8IEdldEVudlxuICB8IEdldE1ldGhcbiAgfCBTZXRWYXJcbiAgfCBBcHBDb25zdFxuICB8IEFwcFZhclxuICB8IEFwcEVudlxuICB8IEFwcE1ldGhcbiAgfCBBcHBDb25zdENvbnN0XG4gIHwgQXBwQ29uc3RWYXJcbiAgfCBBcHBDb25zdEVudlxuICB8IEFwcENvbnN0TWV0aFxuICB8IEFwcFZhckNvbnN0XG4gIHwgQXBwRW52Q29uc3RcbiAgfCBBcHBNZXRoQ29uc3RcbiAgfCBNZXRoQXBwQ29uc3RcbiAgfCBNZXRoQXBwVmFyXG4gIHwgTWV0aEFwcEVudlxuICB8IE1ldGhBcHBNZXRoXG4gIHwgU2VuZENvbnN0XG4gIHwgU2VuZFZhclxuICB8IFNlbmRFbnZcbiAgfCBTZW5kTWV0aFxuICB8IENsb3N1cmUgb2YgY2xvc3VyZVxuXG5sZXQgbWV0aG9kX2ltcGwgdGFibGUgaSBhcnIgPVxuICBsZXQgbmV4dCAoKSA9IGluY3IgaTsgbWFnaWMgYXJyLighaSkgaW5cbiAgbWF0Y2ggbmV4dCgpIHdpdGhcbiAgICBHZXRDb25zdCAtPiBsZXQgeCA6IHQgPSBuZXh0KCkgaW4gZ2V0X2NvbnN0IHhcbiAgfCBHZXRWYXIgICAtPiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfdmFyIG5cbiAgfCBHZXRFbnYgICAtPiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfZW52IGUgblxuICB8IEdldE1ldGggIC0+IGxldCBuID0gbmV4dCgpIGluIGdldF9tZXRoIG5cbiAgfCBTZXRWYXIgICAtPiBsZXQgbiA9IG5leHQoKSBpbiBzZXRfdmFyIG5cbiAgfCBBcHBDb25zdCAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBhcHBfY29uc3QgZiB4XG4gIHwgQXBwVmFyICAgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIGFwcF92YXIgZiBuXG4gIHwgQXBwRW52ICAgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluICBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2VudiBmIGUgblxuICB8IEFwcE1ldGggIC0+IGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBhcHBfbWV0aCBmIG5cbiAgfCBBcHBDb25zdENvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgeSA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X2NvbnN0IGYgeCB5XG4gIHwgQXBwQ29uc3RWYXIgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfdmFyIGYgeCBuXG4gIHwgQXBwQ29uc3RFbnYgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCAoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X2VudiBmIHggZSBuXG4gIHwgQXBwQ29uc3RNZXRoIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X21ldGggZiB4IG5cbiAgfCBBcHBWYXJDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF92YXJfY29uc3QgZiBuIHhcbiAgfCBBcHBFbnZDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0ICgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfZW52X2NvbnN0IGYgZSBuIHhcbiAgfCBBcHBNZXRoQ29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfbWV0aF9jb25zdCBmIG4geFxuICB8IE1ldGhBcHBDb25zdCAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbWV0aF9hcHBfY29uc3QgbiB4XG4gIHwgTWV0aEFwcFZhciAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW4gbWV0aF9hcHBfdmFyIG4gbVxuICB8IE1ldGhBcHBFbnYgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluXG4gICAgICBtZXRoX2FwcF9lbnYgbiBlIG1cbiAgfCBNZXRoQXBwTWV0aCAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW4gbWV0aF9hcHBfbWV0aCBuIG1cbiAgfCBTZW5kQ29uc3QgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIHNlbmRfY29uc3QgbSB4IChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZFZhciAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIHNlbmRfdmFyIG0gbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRFbnYgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBzZW5kX2VudiBtIGUgbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRNZXRoIC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gc2VuZF9tZXRoIG0gbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IENsb3N1cmUgXyBhcyBjbG8gLT4gbWFnaWMgY2xvXG5cbmxldCBzZXRfbWV0aG9kcyB0YWJsZSBtZXRob2RzID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBtZXRob2RzIGluIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICBsZXQgbGFiZWwgPSBtZXRob2RzLighaSkgaW4gbGV0IGNsbyA9IG1ldGhvZF9pbXBsIHRhYmxlIGkgbWV0aG9kcyBpblxuICAgIHNldF9tZXRob2QgdGFibGUgbGFiZWwgY2xvO1xuICAgIGluY3IgaVxuICBkb25lXG5cbigqKioqIFN0YXRpc3RpY3MgKioqKilcblxudHlwZSBzdGF0cyA9XG4gIHsgY2xhc3NlczogaW50OyBtZXRob2RzOiBpbnQ7IGluc3RfdmFyczogaW50OyB9XG5cbmxldCBzdGF0cyAoKSA9XG4gIHsgY2xhc3NlcyA9ICF0YWJsZV9jb3VudDtcbiAgICBtZXRob2RzID0gIW1ldGhvZF9jb3VudDsgaW5zdF92YXJzID0gIWluc3RfdmFyX2NvdW50OyB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDA0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc2hhcGUgPVxuICB8IEZ1bmN0aW9uXG4gIHwgTGF6eVxuICB8IENsYXNzXG4gIHwgTW9kdWxlIG9mIHNoYXBlIGFycmF5XG4gIHwgVmFsdWUgb2YgT2JqLnRcblxubGV0IHJlYyBpbml0X21vZF9maWVsZCBtb2R1IGkgbG9jIHNoYXBlID1cbiAgbGV0IGluaXQgPVxuICAgIG1hdGNoIHNoYXBlIHdpdGhcbiAgICB8IEZ1bmN0aW9uIC0+XG4gICAgICAgbGV0IHJlYyBmbiAoeCA6ICdhKSA9XG4gICAgICAgICBsZXQgZm4nIDogJ2EgLT4gJ2IgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgaWYgZm4gPT0gZm4nIHRoZW5cbiAgICAgICAgICAgcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZm4nIHggaW5cbiAgICAgICBPYmoucmVwciBmblxuICAgIHwgTGF6eSAtPlxuICAgICAgIGxldCByZWMgbCA9XG4gICAgICAgICBsYXp5IChcbiAgICAgICAgICAgbGV0IGwnID0gT2JqLm9iaiAoT2JqLmZpZWxkIG1vZHUgaSkgaW5cbiAgICAgICAgICAgaWYgbCA9PSBsJyB0aGVuXG4gICAgICAgICAgICAgcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYylcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIExhenkuZm9yY2UgbCcpIGluXG4gICAgICAgT2JqLnJlcHIgbFxuICAgIHwgQ2xhc3MgLT5cbiAgICAgICBPYmoucmVwciAoQ2FtbGludGVybmFsT08uZHVtbXlfY2xhc3MgbG9jKVxuICAgIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgICAgT2JqLnJlcHIgKGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcylcbiAgICB8IFZhbHVlIHYgLT4gdlxuICBpblxuICBPYmouc2V0X2ZpZWxkIG1vZHUgaSBpbml0XG5cbmFuZCBpbml0X21vZF9ibG9jayBsb2MgY29tcHMgPVxuICBsZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGNvbXBzIGluXG4gIGxldCBtb2R1ID0gT2JqLm5ld19ibG9jayAwIGxlbmd0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2MgY29tcHMuKGkpXG4gIGRvbmU7XG4gIG1vZHVcblxubGV0IGluaXRfbW9kIGxvYyBzaGFwZSA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgT2JqLnJlcHIgKGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcylcbiAgfCBfIC0+IGZhaWx3aXRoIFwiQ2FtbGludGVybmFsTW9kLmluaXRfbW9kOiBub3QgYSBtb2R1bGVcIlxuXG5sZXQgcmVjIHVwZGF0ZV9tb2RfZmllbGQgbW9kdSBpIHNoYXBlIG4gPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgRnVuY3Rpb24gfCBMYXp5IC0+XG4gICAgIE9iai5zZXRfZmllbGQgbW9kdSBpIG5cbiAgfCBWYWx1ZSBfIC0+XG4gICAgICgpICgqIHRoZSB2YWx1ZSBpcyBhbHJlYWR5IHRoZXJlICopXG4gIHwgQ2xhc3MgLT5cbiAgICAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPSA0KTtcbiAgICAgbGV0IGNsID0gT2JqLmZpZWxkIG1vZHUgaSBpblxuICAgICBmb3IgaiA9IDAgdG8gMyBkb1xuICAgICAgIE9iai5zZXRfZmllbGQgY2wgaiAoT2JqLmZpZWxkIG4gailcbiAgICAgZG9uZVxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIChPYmouZmllbGQgbW9kdSBpKSBuXG5cbmFuZCB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gbiA9XG4gIGFzc2VydCAoT2JqLnRhZyBuID0gMCAmJiBPYmouc2l6ZSBuID49IEFycmF5Lmxlbmd0aCBjb21wcyk7XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY29tcHMgLSAxIGRvXG4gICAgdXBkYXRlX21vZF9maWVsZCBvIGkgY29tcHMuKGkpIChPYmouZmllbGQgbiBpKVxuICBkb25lXG5cbmxldCB1cGRhdGVfbW9kIHNoYXBlIG8gbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgdXBkYXRlX21vZF9ibG9jayBjb21wcyBvIG5cbiAgfCBfIC0+IGZhaWx3aXRoIFwiQ2FtbGludGVybmFsTW9kLnVwZGF0ZV9tb2Q6IG5vdCBhIG1vZHVsZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdG9rZW4gPVxuICAgIEt3ZCBvZiBzdHJpbmdcbiAgfCBJZGVudCBvZiBzdHJpbmdcbiAgfCBJbnQgb2YgaW50XG4gIHwgRmxvYXQgb2YgZmxvYXRcbiAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gIHwgQ2hhciBvZiBjaGFyXG5cbigqIFRoZSBzdHJpbmcgYnVmZmVyaW5nIG1hY2hpbmVyeSAqKVxuXG5sZXQgaW5pdGlhbF9idWZmZXIgPSBCeXRlcy5jcmVhdGUgMzJcblxubGV0IGJ1ZmZlciA9IHJlZiBpbml0aWFsX2J1ZmZlclxubGV0IGJ1ZnBvcyA9IHJlZiAwXG5cbmxldCByZXNldF9idWZmZXIgKCkgPSBidWZmZXIgOj0gaW5pdGlhbF9idWZmZXI7IGJ1ZnBvcyA6PSAwXG5cbmxldCBzdG9yZSBjID1cbiAgaWYgIWJ1ZnBvcyA+PSBCeXRlcy5sZW5ndGggIWJ1ZmZlciB0aGVuIGJlZ2luXG4gICAgbGV0IG5ld2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAoMiAqICFidWZwb3MpIGluXG4gICAgQnl0ZXMuYmxpdCAhYnVmZmVyIDAgbmV3YnVmZmVyIDAgIWJ1ZnBvcztcbiAgICBidWZmZXIgOj0gbmV3YnVmZmVyXG4gIGVuZDtcbiAgQnl0ZXMuc2V0ICFidWZmZXIgIWJ1ZnBvcyBjO1xuICBpbmNyIGJ1ZnBvc1xuXG5sZXQgZ2V0X3N0cmluZyAoKSA9XG4gIGxldCBzID0gQnl0ZXMuc3ViX3N0cmluZyAhYnVmZmVyIDAgIWJ1ZnBvcyBpbiBidWZmZXIgOj0gaW5pdGlhbF9idWZmZXI7IHNcblxuKCogVGhlIGxleGVyICopXG5cbmxldCBtYWtlX2xleGVyIGtleXdvcmRzID1cbiAgbGV0IGt3ZF90YWJsZSA9IEhhc2h0YmwuY3JlYXRlIDE3IGluXG4gIExpc3QuaXRlciAoZnVuIHMgLT4gSGFzaHRibC5hZGQga3dkX3RhYmxlIHMgKEt3ZCBzKSkga2V5d29yZHM7XG4gIGxldCBpZGVudF9vcl9rZXl3b3JkIGlkID1cbiAgICB0cnkgSGFzaHRibC5maW5kIGt3ZF90YWJsZSBpZCB3aXRoXG4gICAgICBOb3RfZm91bmQgLT4gSWRlbnQgaWRcbiAgYW5kIGtleXdvcmRfb3JfZXJyb3IgYyA9XG4gICAgbGV0IHMgPSBTdHJpbmcubWFrZSAxIGMgaW5cbiAgICB0cnkgSGFzaHRibC5maW5kIGt3ZF90YWJsZSBzIHdpdGhcbiAgICAgIE5vdF9mb3VuZCAtPiByYWlzZSAoU3RyZWFtLkVycm9yIChcIklsbGVnYWwgY2hhcmFjdGVyIFwiIF4gcykpXG4gIGluXG4gIGxldCByZWMgbmV4dF90b2tlbiAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnICcgfCAnXFwwMTAnIHwgJ1xcMDEzJyB8ICdcXDAwOScgfCAnXFwwMjYnIHwgJ1xcMDEyJykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBuZXh0X3Rva2VuIHN0cm1fX1xuICAgIHwgU29tZSAoJ0EnLi4nWicgfCAnYScuLid6JyB8ICdfJyB8ICdcXDE5MicuLidcXDI1NScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlIGM7IGlkZW50IHNcbiAgICB8IFNvbWVcbiAgICAgICAgKCchJyB8ICclJyB8ICcmJyB8ICckJyB8ICcjJyB8ICcrJyB8ICcvJyB8ICc6JyB8ICc8JyB8ICc9JyB8ICc+JyB8XG4gICAgICAgICAnPycgfCAnQCcgfCAnXFxcXCcgfCAnficgfCAnXicgfCAnfCcgfCAnKicgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlIGM7IGlkZW50MiBzXG4gICAgfCBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgYzsgbnVtYmVyIHNcbiAgICB8IFNvbWUgJ1xcJycgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgYyA9XG4gICAgICAgICAgdHJ5IGNoYXIgc3RybV9fIHdpdGhcbiAgICAgICAgICAgIFN0cmVhbS5GYWlsdXJlIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgICAgICBTb21lICdcXCcnIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgU29tZSAoQ2hhciBjKVxuICAgICAgICB8IF8gLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgJ1xcXCInIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBTb21lIChTdHJpbmcgKHN0cmluZyBzKSlcbiAgICB8IFNvbWUgJy0nIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbmVnX251bWJlciBzdHJtX19cbiAgICB8IFNvbWUgJygnIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfY29tbWVudCBzdHJtX19cbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IFNvbWUgKGtleXdvcmRfb3JfZXJyb3IgYylcbiAgICB8IF8gLT4gTm9uZVxuICBhbmQgaWRlbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZVxuICAgICAgICAoJ0EnLi4nWicgfCAnYScuLid6JyB8ICdcXDE5MicuLidcXDI1NScgfCAnMCcuLic5JyB8ICdfJyB8ICdcXCcnIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgaWRlbnQgc1xuICAgIHwgXyAtPiBTb21lIChpZGVudF9vcl9rZXl3b3JkIChnZXRfc3RyaW5nICgpKSlcbiAgYW5kIGlkZW50MiAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lXG4gICAgICAgICgnIScgfCAnJScgfCAnJicgfCAnJCcgfCAnIycgfCAnKycgfCAnLScgfCAnLycgfCAnOicgfCAnPCcgfCAnPScgfFxuICAgICAgICAgJz4nIHwgJz8nIHwgJ0AnIHwgJ1xcXFwnIHwgJ34nIHwgJ14nIHwgJ3wnIHwgJyonIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgaWRlbnQyIHNcbiAgICB8IF8gLT4gU29tZSAoaWRlbnRfb3Jfa2V5d29yZCAoZ2V0X3N0cmluZyAoKSkpXG4gIGFuZCBuZWdfbnVtYmVyIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSAnLSc7IHN0b3JlIGM7IG51bWJlciBzXG4gICAgfCBfIC0+IGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgJy0nOyBpZGVudDIgc1xuICBhbmQgbnVtYmVyIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgbnVtYmVyIHNcbiAgICB8IFNvbWUgJy4nIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgJy4nOyBkZWNpbWFsX3BhcnQgc1xuICAgIHwgU29tZSAoJ2UnIHwgJ0UnKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlICdFJzsgZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IFNvbWUgKEludCAoaW50X29mX3N0cmluZyAoZ2V0X3N0cmluZyAoKSkpKVxuICBhbmQgZGVjaW1hbF9wYXJ0IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgZGVjaW1hbF9wYXJ0IHNcbiAgICB8IFNvbWUgKCdlJyB8ICdFJykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSAnRSc7IGV4cG9uZW50X3BhcnQgc1xuICAgIHwgXyAtPiBTb21lIChGbG9hdCAoZmxvYXRfb2Zfc3RyaW5nIChnZXRfc3RyaW5nICgpKSkpXG4gIGFuZCBleHBvbmVudF9wYXJ0IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcrJyB8ICctJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGVuZF9leHBvbmVudF9wYXJ0IHNcbiAgICB8IF8gLT4gZW5kX2V4cG9uZW50X3BhcnQgc3RybV9fXG4gIGFuZCBlbmRfZXhwb25lbnRfcGFydCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGVuZF9leHBvbmVudF9wYXJ0IHNcbiAgICB8IF8gLT4gU29tZSAoRmxvYXQgKGZsb2F0X29mX3N0cmluZyAoZ2V0X3N0cmluZyAoKSkpKVxuICBhbmQgc3RyaW5nIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJ1xcXCInIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgZ2V0X3N0cmluZyAoKVxuICAgIHwgU29tZSAnXFxcXCcgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgYyA9XG4gICAgICAgICAgdHJ5IGVzY2FwZSBzdHJtX18gd2l0aFxuICAgICAgICAgICAgU3RyZWFtLkZhaWx1cmUgLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBzdHJpbmcgc1xuICAgIHwgU29tZSBjIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgc3RyaW5nIHNcbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIGNoYXIgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnXFxcXCcgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBiZWdpbiB0cnkgZXNjYXBlIHN0cm1fXyB3aXRoXG4gICAgICAgICAgU3RyZWFtLkZhaWx1cmUgLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNcbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIGVzY2FwZSAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICduJyAtPiBTdHJlYW0uanVuayBzdHJtX187ICdcXG4nXG4gICAgfCBTb21lICdyJyAtPiBTdHJlYW0uanVuayBzdHJtX187ICdcXHInXG4gICAgfCBTb21lICd0JyAtPiBTdHJlYW0uanVuayBzdHJtX187ICdcXHQnXG4gICAgfCBTb21lICgnMCcuLic5JyBhcyBjMSkgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBiZWdpbiBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMyKSAtPlxuICAgICAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgICAgICAgICAgU29tZSAoJzAnLi4nOScgYXMgYzMpIC0+XG4gICAgICAgICAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICAgICAgICAgIENoYXIuY2hyXG4gICAgICAgICAgICAgICAgICAoKENoYXIuY29kZSBjMSAtIDQ4KSAqIDEwMCArIChDaGFyLmNvZGUgYzIgLSA0OCkgKiAxMCArXG4gICAgICAgICAgICAgICAgICAgICAoQ2hhci5jb2RlIGMzIC0gNDgpKVxuICAgICAgICAgICAgfCBfIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNcbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIG1heWJlX2NvbW1lbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnKicgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBjb21tZW50IHM7IG5leHRfdG9rZW4gc1xuICAgIHwgXyAtPiBTb21lIChrZXl3b3JkX29yX2Vycm9yICcoJylcbiAgYW5kIGNvbW1lbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnKCcgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBtYXliZV9uZXN0ZWRfY29tbWVudCBzdHJtX19cbiAgICB8IFNvbWUgJyonIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfZW5kX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lIF8gLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjb21tZW50IHN0cm1fX1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgbWF5YmVfbmVzdGVkX2NvbW1lbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnKicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBjb21tZW50IHM7IGNvbW1lbnQgc1xuICAgIHwgU29tZSBfIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY29tbWVudCBzdHJtX19cbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIG1heWJlX2VuZF9jb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJyknIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgKClcbiAgICB8IFNvbWUgJyonIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfZW5kX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lIF8gLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjb21tZW50IHN0cm1fX1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBpblxuICBmdW4gaW5wdXQgLT4gU3RyZWFtLmZyb20gKGZ1biBfY291bnQgLT4gbmV4dF90b2tlbiBpbnB1dClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9IHNpZ1xuICBpbmNsdWRlIEhhc2h0YmwuU2VlZGVkU1xuICB2YWwgY2xlYW46ICdhIHQgLT4gdW5pdFxuICB2YWwgc3RhdHNfYWxpdmU6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gICAgKCoqIHNhbWUgYXMgeyFzdGF0c30gYnV0IG9ubHkgY291bnQgdGhlIGFsaXZlIGJpbmRpbmdzICopXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBpbmNsdWRlIEhhc2h0YmwuU1xuICB2YWwgY2xlYW46ICdhIHQgLT4gdW5pdFxuICB2YWwgc3RhdHNfYWxpdmU6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gICAgKCoqIHNhbWUgYXMgeyFzdGF0c30gYnV0IG9ubHkgY291bnQgdGhlIGFsaXZlIGJpbmRpbmdzICopXG5lbmRcblxubW9kdWxlIEdlbkhhc2hUYWJsZSA9IHN0cnVjdFxuXG4gIHR5cGUgZXF1YWwgPVxuICB8IEVUcnVlIHwgRUZhbHNlXG4gIHwgRURlYWQgKCoqIHRoZSBnYXJiYWdlIGNvbGxlY3RvciByZWNsYWltZWQgdGhlIGRhdGEgKilcblxuICBtb2R1bGUgTWFrZVNlZWRlZChIOiBzaWdcbiAgICB0eXBlIHRcbiAgICB0eXBlICdhIGNvbnRhaW5lclxuICAgIHZhbCBjcmVhdGU6IHQgLT4gJ2EgLT4gJ2EgY29udGFpbmVyXG4gICAgdmFsIGhhc2g6IGludCAtPiB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogJ2EgY29udGFpbmVyIC0+IHQgLT4gZXF1YWxcbiAgICB2YWwgZ2V0X2RhdGE6ICdhIGNvbnRhaW5lciAtPiAnYSBvcHRpb25cbiAgICB2YWwgZ2V0X2tleTogJ2EgY29udGFpbmVyIC0+IHQgb3B0aW9uXG4gICAgdmFsIHNldF9rZXlfZGF0YTogJ2EgY29udGFpbmVyIC0+IHQgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBjaGVja19rZXk6ICdhIGNvbnRhaW5lciAtPiBib29sXG4gIGVuZCkgOiBTZWVkZWRTIHdpdGggdHlwZSBrZXkgPSBILnRcbiAgPSBzdHJ1Y3RcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IG11dGFibGUgc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICgqIG51bWJlciBvZiBlbnRyaWVzICopXG4gICAgICAgIG11dGFibGUgZGF0YTogJ2EgYnVja2V0bGlzdCBhcnJheTsgICgqIHRoZSBidWNrZXRzICopXG4gICAgICAgIHNlZWQ6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGZvciByYW5kb21pemF0aW9uICopXG4gICAgICAgIGluaXRpYWxfc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICgqIGluaXRpYWwgYXJyYXkgc2l6ZSAqKVxuICAgICAgfVxuXG4gICAgYW5kICdhIGJ1Y2tldGxpc3QgPVxuICAgIHwgRW1wdHlcbiAgICB8IENvbnMgb2YgaW50ICgqIGhhc2ggb2YgdGhlIGtleSAqKSAqICdhIEguY29udGFpbmVyICogJ2EgYnVja2V0bGlzdFxuXG4gICAgKCoqIHRoZSBoYXNoIG9mIHRoZSBrZXkgaXMga2VwdCBpbiBvcmRlciB0byB0ZXN0IHRoZSBlcXVhbGl0eSBvZiB0aGUgaGFzaFxuICAgICAgYmVmb3JlIHRoZSBrZXkuIFNhbWUgcmVhc29uIGFzIGZvciBXZWFrLk1ha2UgKilcblxuICAgIHR5cGUga2V5ID0gSC50XG5cbiAgICBsZXQgcmVjIHBvd2VyXzJfYWJvdmUgeCBuID1cbiAgICAgIGlmIHggPj0gbiB0aGVuIHhcbiAgICAgIGVsc2UgaWYgeCAqIDIgPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIHhcbiAgICAgIGVsc2UgcG93ZXJfMl9hYm92ZSAoeCAqIDIpIG5cblxuICAgIGxldCBwcm5nID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0KCkpXG5cbiAgICBsZXQgY3JlYXRlID8ocmFuZG9tID0gKEhhc2h0YmwuaXNfcmFuZG9taXplZCAoKSkpIGluaXRpYWxfc2l6ZSA9XG4gICAgICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgaW5pdGlhbF9zaXplIGluXG4gICAgICBsZXQgc2VlZCA9IGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpIGVsc2UgMCBpblxuICAgICAgeyBpbml0aWFsX3NpemUgPSBzOyBzaXplID0gMDsgc2VlZCA9IHNlZWQ7IGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHkgfVxuXG4gICAgbGV0IGNsZWFyIGggPVxuICAgICAgaC5zaXplIDwtIDA7XG4gICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgaC5kYXRhLihpKSA8LSBFbXB0eVxuICAgICAgZG9uZVxuXG4gICAgbGV0IHJlc2V0IGggPVxuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgICAgIGlmIGxlbiA9IGguaW5pdGlhbF9zaXplIHRoZW5cbiAgICAgICAgY2xlYXIgaFxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBoLnNpemUgPC0gMDtcbiAgICAgICAgaC5kYXRhIDwtIEFycmF5Lm1ha2UgaC5pbml0aWFsX3NpemUgRW1wdHlcbiAgICAgIGVuZFxuXG4gICAgbGV0IGNvcHkgaCA9IHsgaCB3aXRoIGRhdGEgPSBBcnJheS5jb3B5IGguZGF0YSB9XG5cbiAgICBsZXQga2V5X2luZGV4IGggaGtleSA9XG4gICAgICBoa2V5IGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuXG4gICAgbGV0IGNsZWFuIGggPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICBFbXB0eVxuICAgICAgICB8IENvbnMoXywgYywgcmVzdCkgd2hlbiBub3QgKEguY2hlY2tfa2V5IGMpIC0+XG4gICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0XG4gICAgICAgIHwgQ29ucyhoa2V5LCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgQ29ucyhoa2V5LCBjLCBkb19idWNrZXQgcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBkLihpKSA8LSBkb19idWNrZXQgZC4oaSlcbiAgICAgIGRvbmVcblxuICAgICgqKiByZXNpemUgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdG8gZG8gdGhlIGFjdHVhbCBjbGVhbmluZyBvZiBkZWFkIGtleXNcbiAgICAgICAgKHJlbW92ZSBkb2VzIGl0IGp1c3QgYmVjYXVzZSBpdCBjb3VsZCkuXG5cbiAgICAgICAgVGhlIGdvYWwgaXMgdG86XG5cbiAgICAgICAgLSBub3QgcmVzaXplIGluZmluaXRlbHkgd2hlbiB0aGUgYWN0dWFsIG51bWJlciBvZiBhbGl2ZSBrZXlzIGlzXG4gICAgICAgIGJvdW5kZWQgYnV0IGtleXMgYXJlIGNvbnRpbnVvdXNseSBhZGRlZC4gVGhhdCB3b3VsZCBoYXBwZW4gaWZcbiAgICAgICAgdGhpcyBmdW5jdGlvbiBhbHdheXMgcmVzaXplLlxuICAgICAgICAtIG5vdCBjYWxsIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgZWFjaCBhZGRpdGlvbiwgdGhhdCB3b3VsZCBoYXBwZW4gaWYgdGhpc1xuICAgICAgICBmdW5jdGlvbiBkb24ndCByZXNpemUgZXZlbiB3aGVuIG9ubHkgb25lIGtleSBpcyBkZWFkLlxuXG4gICAgICAgIFNvIHRoZSBhbGdvcml0aG06XG4gICAgICAgIC0gY2xlYW4gdGhlIGtleXMgYmVmb3JlIHJlc2l6aW5nXG4gICAgICAgIC0gaWYgdGhlIG51bWJlciBvZiByZW1haW5pbmcga2V5cyBpcyBsZXNzIHRoYW4gaGFsZiB0aGUgc2l6ZSBvZiB0aGVcbiAgICAgICAgYXJyYXksIGRvbid0IHJlc2l6ZS5cbiAgICAgICAgLSBpZiBpdCBpcyBtb3JlLCByZXNpemUuXG5cbiAgICAgICAgVGhlIHNlY29uZCBwcm9ibGVtIHJlbWFpbnMgaWYgdGhlIHRhYmxlIHJlYWNoZXMgeyFTeXMubWF4X2FycmF5X2xlbmd0aH0uXG5cbiAgICAqKVxuICAgIGxldCByZXNpemUgaCA9XG4gICAgICBsZXQgb2RhdGEgPSBoLmRhdGEgaW5cbiAgICAgIGxldCBvc2l6ZSA9IEFycmF5Lmxlbmd0aCBvZGF0YSBpblxuICAgICAgbGV0IG5zaXplID0gb3NpemUgKiAyIGluXG4gICAgICBjbGVhbiBoO1xuICAgICAgaWYgbnNpemUgPCBTeXMubWF4X2FycmF5X2xlbmd0aCAmJiBoLnNpemUgPj0gb3NpemUgbHNyIDEgdGhlbiBiZWdpblxuICAgICAgICBsZXQgbmRhdGEgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gICAgICAgIGguZGF0YSA8LSBuZGF0YTsgICAgICAgKCogc28gdGhhdCBrZXlfaW5kZXggc2VlcyB0aGUgbmV3IGJ1Y2tldCBjb3VudCAqKVxuICAgICAgICBsZXQgcmVjIGluc2VydF9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgICAgICB8IENvbnMoaGtleSwgZGF0YSwgcmVzdCkgLT5cbiAgICAgICAgICAgICAgaW5zZXJ0X2J1Y2tldCByZXN0OyAoKiBwcmVzZXJ2ZSBvcmlnaW5hbCBvcmRlciBvZiBlbGVtZW50cyAqKVxuICAgICAgICAgICAgICBsZXQgbmlkeCA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgICAgICAgICAgbmRhdGEuKG5pZHgpIDwtIENvbnMoaGtleSwgZGF0YSwgbmRhdGEuKG5pZHgpKSBpblxuICAgICAgICBmb3IgaSA9IDAgdG8gb3NpemUgLSAxIGRvXG4gICAgICAgICAgaW5zZXJ0X2J1Y2tldCBvZGF0YS4oaSlcbiAgICAgICAgZG9uZVxuICAgICAgZW5kXG5cbiAgICBsZXQgYWRkIGgga2V5IGluZm8gPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBsZXQgY29udGFpbmVyID0gSC5jcmVhdGUga2V5IGluZm8gaW5cbiAgICAgIGxldCBidWNrZXQgPSBDb25zKGhrZXksIGNvbnRhaW5lciwgaC5kYXRhLihpKSkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGhcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZW1vdmVfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gaC5zaXplIDwtIGguc2l6ZSAtIDE7IG5leHRcbiAgICAgICAgICAgIHwgRUZhbHNlIC0+IENvbnMoaGssIGMsIHJlbW92ZV9idWNrZXQgbmV4dClcbiAgICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgICAoKiBUaGUgZGVhZCBrZXkgaXMgYXV0b21hdGljYWxseSByZW1vdmVkLiBJdCBpcyBhY2NlcHRhYmxlXG4gICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIGZ1bmN0aW9uIHNpbmNlIGl0IGFscmVhZHkgcmVtb3ZlcyBhIGJpbmRpbmcgKilcbiAgICAgICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgICAgICByZW1vdmVfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoaGssYyxuZXh0KSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gcmVtb3ZlX2J1Y2tldCBoLmRhdGEuKGkpXG5cbiAgICAoKiogeyFmaW5kfSBkb24ndCByZW1vdmUgZGVhZCBrZXlzIGJlY2F1c2UgaXQgd291bGQgYmUgc3VycHJpc2luZyBmb3JcbiAgICAgICAgdGhlIHVzZXIgdGhhdCBhIHJlYWQtb25seSBmdW5jdGlvbiBtdXRhdGVzIHRoZSBzdGF0ZSAoZWcuIGNvbmN1cnJlbnRcbiAgICAgICAgYWNjZXNzKS4gU2FtZSBmb3IgeyFpdGVyfSwgeyFmb2xkfSwgeyFtZW19LlxuICAgICopXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgaGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgICgqIFRPRE8gaW5saW5lIDMgaXRlcmF0aW9ucyAqKVxuICAgICAgZmluZF9yZWMga2V5IGhrZXkgKGguZGF0YS4oa2V5X2luZGV4IGggaGtleSkpXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgaGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIGlzIG5vdCBpbXBvc3NpYmxlIGJlY2F1c2UgdGhlIGdjIGNhbiBydW4gYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICAgIEguZXF1YWwgYW5kIEguZ2V0X2RhdGEgKilcbiAgICAgICAgICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBfIGFzIGQgLT4gZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG5cbiAgICBsZXQgZmluZF9vcHQgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgKCogVE9ETyBpbmxpbmUgMyBpdGVyYXRpb25zICopXG4gICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgKGguZGF0YS4oa2V5X2luZGV4IGggaGtleSkpXG5cbiAgICBsZXQgZmluZF9hbGwgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IFtdXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBkIC0+IGQ6OmZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3QgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIHJlcGxhY2VfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgfCBDb25zKGhrLCBjLCBuZXh0KSB3aGVuIGhrZXkgPSBoayAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgICB8IEVUcnVlIC0+IEguc2V0X2tleV9kYXRhIGMga2V5IGluZm9cbiAgICAgICAgICAgIHwgRUZhbHNlIHwgRURlYWQgLT4gcmVwbGFjZV9idWNrZXQgbmV4dFxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgQ29ucyhfLF8sbmV4dCkgLT4gcmVwbGFjZV9idWNrZXQgbmV4dFxuICAgICAgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gICAgICB0cnlcbiAgICAgICAgcmVwbGFjZV9idWNrZXQgbFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgbGV0IGNvbnRhaW5lciA9IEguY3JlYXRlIGtleSBpbmZvIGluXG4gICAgICAgIGguZGF0YS4oaSkgPC0gQ29ucyhoa2V5LCBjb250YWluZXIsIGwpO1xuICAgICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBoXG5cbiAgICBsZXQgbWVtIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoayA9IGhrZXkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+IHRydWVcbiAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IG1lbV9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF9oaywgX2MsIHJlc3QpIC0+IG1lbV9pbl9idWNrZXQgcmVzdCBpblxuICAgICAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpXG5cbiAgICBsZXQgaXRlciBmIGggPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICAoKVxuICAgICAgICB8IENvbnMoXywgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2tleSBjLCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIGssIFNvbWUgZCAtPiBmIGsgZFxuICAgICAgICAgICAgZW5kOyBkb19idWNrZXQgcmVzdCBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICBsZXQgZm9sZCBmIGggaW5pdCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCBiIGFjY3UgPVxuICAgICAgICBtYXRjaCBiIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICAgYWNjdVxuICAgICAgICB8IENvbnMoXywgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBhY2N1ID0gYmVnaW4gbWF0Y2ggSC5nZXRfa2V5IGMsIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gYWNjdVxuICAgICAgICAgICAgICB8IFNvbWUgaywgU29tZSBkIC0+IGYgayBkIGFjY3VcbiAgICAgICAgICAgIGVuZCBpblxuICAgICAgICAgICAgZG9fYnVja2V0IHJlc3QgYWNjdSAgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBsZXQgYWNjdSA9IHJlZiBpbml0IGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGFjY3UgOj0gZG9fYnVja2V0IGQuKGkpICFhY2N1XG4gICAgICBkb25lO1xuICAgICAgIWFjY3VcblxuICAgIGxldCBmaWx0ZXJfbWFwX2lucGxhY2UgZiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgRW1wdHlcbiAgICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggSC5nZXRfa2V5IGMsIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+XG4gICAgICAgICAgICAgICAgZG9fYnVja2V0IHJlc3RcbiAgICAgICAgICAgIHwgU29tZSBrLCBTb21lIGQgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBmIGsgZCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0XG4gICAgICAgICAgICAgICAgfCBTb21lIG5ld19kIC0+XG4gICAgICAgICAgICAgICAgICAgIEguc2V0X2tleV9kYXRhIGMgayBuZXdfZDtcbiAgICAgICAgICAgICAgICAgICAgQ29ucyhoaywgYywgZG9fYnVja2V0IHJlc3QpXG4gICAgICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZC4oaSkgPC0gZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICBsZXQgbGVuZ3RoIGggPSBoLnNpemVcblxuICAgIGxldCByZWMgYnVja2V0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSByZXN0XG5cbiAgICBsZXQgc3RhdHMgaCA9XG4gICAgICBsZXQgbWJsID1cbiAgICAgICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICAgICAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICAgICAgaC5kYXRhO1xuICAgICAgeyBIYXNodGJsLm51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICAgICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgICAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICAgICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuICAgIGxldCByZWMgYnVja2V0X2xlbmd0aF9hbGl2ZSBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gSC5jaGVja19rZXkgYyAtPlxuICAgICAgICAgIGJ1Y2tldF9sZW5ndGhfYWxpdmUgKGFjY3UgKyAxKSByZXN0XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aF9hbGl2ZSBhY2N1IHJlc3RcblxuICAgIGxldCBzdGF0c19hbGl2ZSBoID1cbiAgICAgIGxldCBzaXplID0gcmVmIDAgaW5cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGhfYWxpdmUgMCBiKSkgMCBoLmRhdGFcbiAgICAgIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGhfYWxpdmUgMCBiIGluXG4gICAgICAgICAgIHNpemUgOj0gIXNpemUgKyBsO1xuICAgICAgICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICAgICAgaC5kYXRhO1xuICAgICAgeyBIYXNodGJsLm51bV9iaW5kaW5ncyA9ICFzaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IHRvX3NlcSB0YmwgPVxuICAgICAgKCogY2FwdHVyZSBjdXJyZW50IGFycmF5LCBzbyB0aGF0IGV2ZW4gaWYgdGhlIHRhYmxlIGlzIHJlc2l6ZWQgd2VcbiAgICAgICAgIGtlZXAgaXRlcmF0aW5nIG9uIHRoZSBzYW1lIGFycmF5ICopXG4gICAgICBsZXQgdGJsX2RhdGEgPSB0YmwuZGF0YSBpblxuICAgICAgKCogc3RhdGU6IGluZGV4ICogbmV4dCBidWNrZXQgdG8gdHJhdmVyc2UgKilcbiAgICAgIGxldCByZWMgYXV4IGkgYnVjayAoKSA9IG1hdGNoIGJ1Y2sgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRibF9kYXRhXG4gICAgICAgICAgICB0aGVuIFNlcS5OaWxcbiAgICAgICAgICAgIGVsc2UgYXV4KGkrMSkgdGJsX2RhdGEuKGkpICgpXG4gICAgICAgIHwgQ29ucyAoXywgYywgbmV4dCkgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2tleSBjLCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IGF1eCBpIG5leHQgKClcbiAgICAgICAgICAgICAgfCBTb21lIGtleSwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICAgICAgICBTZXEuQ29ucyAoKGtleSwgZGF0YSksIGF1eCBpIG5leHQpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBhdXggMCBFbXB0eVxuXG4gICAgbGV0IHRvX3NlcV9rZXlzIG0gPSBTZXEubWFwIGZzdCAodG9fc2VxIG0pXG5cbiAgICBsZXQgdG9fc2VxX3ZhbHVlcyBtID0gU2VxLm1hcCBzbmQgKHRvX3NlcSBtKVxuXG4gICAgbGV0IGFkZF9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG4gICAgbGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcblxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2JqRXBoID0gT2JqLkVwaGVtZXJvblxuXG5sZXQgX29ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiB4XG4gIHwgU29tZSB2IC0+IFNvbWUgKE9iai5vYmogdilcblxuKCoqIFRoZSBwcmV2aW91cyBmdW5jdGlvbiBpcyB0eXBlZCBzbyB0aGlzIG9uZSBpcyBhbHNvIGNvcnJlY3QgKilcbmxldCBvYmpfb3B0IDogT2JqLnQgb3B0aW9uIC0+ICdhIG9wdGlvbiA9IGZ1biB4IC0+IE9iai5tYWdpYyB4XG5cblxubW9kdWxlIEsxID0gc3RydWN0XG4gIHR5cGUgKCdrLCdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSAxXG5cbiAgbGV0IGdldF9rZXkgKHQ6KCdrLCdkKSB0KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IGdldF9rZXlfY29weSAodDooJ2ssJ2QpIHQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXlfY29weSB0IDApXG4gIGxldCBzZXRfa2V5ICh0OignaywnZCkgdCkgKGs6J2spIDogdW5pdCA9IE9iakVwaC5zZXRfa2V5IHQgMCAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9rZXkgdCAwXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBibGl0X2tleSAodDE6KCdrLCdkKSB0KSAodDI6KCdrLCdkKSB0KTogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIDAgdDIgMCAxXG5cbiAgbGV0IGdldF9kYXRhICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IGdldF9kYXRhX2NvcHkgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YV9jb3B5IHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG4gIGxldCBjaGVja19kYXRhICh0OignaywnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2RhdGEgdFxuICBsZXQgYmxpdF9kYXRhICh0MTooXywnZCkgdCkgKHQyOihfLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGguYmxpdF9kYXRhIHQxIHQyXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQgKEg6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChILnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgbGV0IGNyZWF0ZSBrIGQgPVxuICAgICAgICBsZXQgYyA9IGNyZWF0ZSAoKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIHNldF9rZXkgYyBrO1xuICAgICAgICBjXG4gICAgICBsZXQgaGFzaCA9IEguaGFzaFxuICAgICAgbGV0IGVxdWFsIGMgayA9XG4gICAgICAgICgqIHshZ2V0X2tleV9jb3B5fSBpcyBub3QgdXNlZCBiZWNhdXNlIHRoZSBlcXVhbGl0eSBvZiB0aGUgdXNlciBjYW4gYmVcbiAgICAgICAgICAgIHRoZSBwaHlzaWNhbCBlcXVhbGl0eSAqKVxuICAgICAgICBtYXRjaCBnZXRfa2V5IGMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrJyAtPlxuICAgICAgICAgICAgaWYgSC5lcXVhbCBrIGsnIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBnZXRfa2V5ID0gZ2V0X2tleVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIGsgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgc2V0X2tleSBjIGs7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSA9IGNoZWNrX2tleVxuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIOiBIYXNodGJsLkhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBLMiA9IHN0cnVjdFxuICB0eXBlICgnazEsICdrMiwgJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2sxLCdrMiwnZCkgdCA9IE9iakVwaC5jcmVhdGUgMlxuXG4gIGxldCBnZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazEgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgZ2V0X2tleTFfY29weSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazEgb3B0aW9uID1cbiAgICBvYmpfb3B0IChPYmpFcGguZ2V0X2tleV9jb3B5IHQgMClcbiAgbGV0IHNldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSAoazonazEpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCAwIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2tleSB0IDBcbiAgbGV0IGNoZWNrX2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAwXG5cbiAgbGV0IGdldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSA6ICdrMiBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IDEpXG4gIGxldCBnZXRfa2V5Ml9jb3B5ICh0OignazEsJ2syLCdkKSB0KSA6ICdrMiBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfa2V5X2NvcHkgdCAxKVxuICBsZXQgc2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMikgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDEgKE9iai5yZXByIGspXG4gIGxldCB1bnNldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfa2V5IHQgMVxuICBsZXQgY2hlY2tfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDFcblxuXG4gIGxldCBibGl0X2tleTEgKHQxOignazEsXyxfKSB0KSAodDI6KCdrMSxfLF8pIHQpIDogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIDAgdDIgMCAxXG4gIGxldCBibGl0X2tleTIgKHQxOihfLCdrMixfKSB0KSAodDI6KF8sJ2syLF8pIHQpIDogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIDEgdDIgMSAxXG4gIGxldCBibGl0X2tleTEyICh0MTooJ2sxLCdrMixfKSB0KSAodDI6KCdrMSwnazIsXykgdCkgOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgMCB0MiAwIDJcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBnZXRfZGF0YV9jb3B5ICh0OignazEsJ2syLCdkKSB0KSA6ICdkIG9wdGlvbiA9XG4gICAgb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhX2NvcHkgdClcbiAgbGV0IHNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSAoZDonZCkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcbiAgbGV0IGNoZWNrX2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19kYXRhIHRcbiAgbGV0IGJsaXRfZGF0YSAodDE6KF8sXywnZCkgdCkgKHQyOihfLF8sJ2QpIHQpIDogdW5pdCA9IE9iakVwaC5ibGl0X2RhdGEgdDEgdDJcblxuICBtb2R1bGUgTWFrZVNlZWRlZFxuICAgICAgKEgxOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSlcbiAgICAgIChIMjpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgxLnQsSDIudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSDEudCAqIEgyLnRcbiAgICAgIGxldCBjcmVhdGUgKGsxLGsyKSBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBjXG4gICAgICBsZXQgaGFzaCBzZWVkIChrMSxrMikgPVxuICAgICAgICBIMS5oYXNoIHNlZWQgazEgKyBIMi5oYXNoIHNlZWQgazIgKiA2NTU5OVxuICAgICAgbGV0IGVxdWFsIGMgKGsxLGsyKSA9XG4gICAgICAgIG1hdGNoIGdldF9rZXkxIGMsIGdldF9rZXkyIGMgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gfCBfICwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgfCBTb21lIGsxJywgU29tZSBrMicgLT5cbiAgICAgICAgICAgIGlmIEgxLmVxdWFsIGsxIGsxJyAmJiBIMi5lcXVhbCBrMiBrMidcbiAgICAgICAgICAgIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBnZXRfa2V5IGMgPVxuICAgICAgICBtYXRjaCBnZXRfa2V5MSBjLCBnZXRfa2V5MiBjIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIHwgXyAsIE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgazEnLCBTb21lIGsyJyAtPiBTb21lIChrMScsIGsyJylcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyAoazEsazIpIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkxIGMgazE7IHNldF9rZXkyIGMgazI7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSBjID0gY2hlY2tfa2V5MSBjICYmIGNoZWNrX2tleTIgY1xuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIMTogSGFzaHRibC5IYXNoZWRUeXBlKShIMjogSGFzaHRibC5IYXNoZWRUeXBlKTpcbiAgICAoUyB3aXRoIHR5cGUga2V5ID0gSDEudCAqIEgyLnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBIMS50XG4gICAgICAgICAgbGV0IGVxdWFsID0gSDEuZXF1YWxcbiAgICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEgxLmhhc2ggeFxuICAgICAgICBlbmQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBIMi50XG4gICAgICAgICAgbGV0IGVxdWFsID0gSDIuZXF1YWxcbiAgICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEgyLmhhc2ggeFxuICAgICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIEtuID0gc3RydWN0XG4gIHR5cGUgKCdrLCdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlIG4gOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIG5cbiAgbGV0IGxlbmd0aCAoazooJ2ssJ2QpIHQpIDogaW50ID0gT2JqRXBoLmxlbmd0aCBrXG5cbiAgbGV0IGdldF9rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCBuKVxuICBsZXQgZ2V0X2tleV9jb3B5ICh0OignaywnZCkgdCkgKG46aW50KSA6ICdrIG9wdGlvbiA9XG4gICAgb2JqX29wdCAoT2JqRXBoLmdldF9rZXlfY29weSB0IG4pXG4gIGxldCBzZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSAoazonaykgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IG4gKE9iai5yZXByIGspXG4gIGxldCB1bnNldF9rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogdW5pdCA9IE9iakVwaC51bnNldF9rZXkgdCBuXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCBuXG5cbiAgbGV0IGJsaXRfa2V5ICh0MTooJ2ssJ2QpIHQpIChvMTppbnQpICh0MjooJ2ssJ2QpIHQpIChvMjppbnQpIChsOmludCkgOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgbzEgdDIgbzIgbFxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBnZXRfZGF0YV9jb3B5ICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGFfY29weSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSAoZDonZCkgOiB1bml0ID0gT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuICBsZXQgY2hlY2tfZGF0YSAodDooJ2ssJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19kYXRhIHRcbiAgbGV0IGJsaXRfZGF0YSAodDE6KF8sJ2QpIHQpICh0MjooXywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLmJsaXRfZGF0YSB0MSB0MlxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnQgYXJyYXlcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKEFycmF5Lmxlbmd0aCBrKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgY1xuICAgICAgbGV0IGhhc2ggc2VlZCBrID1cbiAgICAgICAgbGV0IGggPSByZWYgMCBpblxuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgaCA6PSBILmhhc2ggc2VlZCBrLihpKSAqIDY1NTk5ICsgIWg7XG4gICAgICAgIGRvbmU7XG4gICAgICAgICFoXG4gICAgICBsZXQgZXF1YWwgYyBrID1cbiAgICAgICAgbGV0IGxlbiAgPSBBcnJheS5sZW5ndGggayBpblxuICAgICAgICBsZXQgbGVuJyA9IGxlbmd0aCBjIGluXG4gICAgICAgIGlmIGxlbiAhPSBsZW4nIHRoZW4gR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHJlYyBlcXVhbF9hcnJheSBrIGMgaSA9XG4gICAgICAgICAgICBpZiBpIDwgMCB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBnZXRfa2V5IGMgaSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgICAgICAgfCBTb21lIGtpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGsuKGkpIGtpXG4gICAgICAgICAgICAgICAgICB0aGVuIGVxdWFsX2FycmF5IGsgYyAoaS0xKVxuICAgICAgICAgICAgICAgICAgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcXVhbF9hcnJheSBrIGMgKGxlbi0xKVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBnZXRfa2V5IGMgPVxuICAgICAgICBsZXQgbGVuID0gbGVuZ3RoIGMgaW5cbiAgICAgICAgaWYgbGVuID0gMCB0aGVuIFNvbWUgW3x8XVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIDAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGswIC0+XG4gICAgICAgICAgICAgIGxldCByZWMgZmlsbCBhIGkgPVxuICAgICAgICAgICAgICAgIGlmIGkgPCAxIHRoZW4gU29tZSBhXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIGkgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBraSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGEuKGkpIDwtIGtpO1xuICAgICAgICAgICAgICAgICAgICAgIGZpbGwgYSAoaS0xKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIGswIGluXG4gICAgICAgICAgICAgIGZpbGwgYSAobGVuLTEpXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgayBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgc2V0X2tleSBjIGkgay4oaSk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSBjID1cbiAgICAgICAgbGV0IHJlYyBjaGVjayBjIGkgPVxuICAgICAgICAgIGkgPCAwIHx8IChjaGVja19rZXkgYyBpICYmIGNoZWNrIGMgKGktMSkpIGluXG4gICAgICAgIGNoZWNrIGMgKGxlbmd0aCBjIC0gMSlcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDogSGFzaHRibC5IYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCBhcnJheSkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIERhbWllbiBEb2xpZ2V6LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGdlbmVyaWNfcXVvdGUgcXVvdGVxdW90ZSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBiICdcXCcnO1xuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBpZiBzLltpXSA9ICdcXCcnXG4gICAgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIHF1b3RlcXVvdGVcbiAgICBlbHNlIEJ1ZmZlci5hZGRfY2hhciBiICBzLltpXVxuICBkb25lO1xuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1sxXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Jhc2VuYW1lLmh0bWxcbiAgSW4gc3RlcCAxIG9mIFtbMV1dLCB3ZSBjaG9vc2UgdG8gcmV0dXJuIFwiLlwiIGZvciBlbXB0eSBpbnB1dC5cbiAgICAoZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiBPQ2FtbClcbiAgSW4gc3RlcCAyLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4gIFN0ZXAgNiBpcyBub3QgaW1wbGVtZW50ZWQ6IHdlIGNvbnNpZGVyIHRoYXQgdGhlIFtzdWZmaXhdIG9wZXJhbmQgaXNcbiAgICBhbHdheXMgYWJzZW50LiAgU3VmZml4ZXMgYXJlIGhhbmRsZWQgYnkgW2Nob3Bfc3VmZml4XSBhbmQgW2Nob3BfZXh0ZW5zaW9uXS5cbiopXG5sZXQgZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgZmluZF9lbmQgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGZpbmRfZW5kIChuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIG4gKG4gKyAxKVxuICBhbmQgZmluZF9iZWcgbiBwID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIHBcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gU3RyaW5nLnN1YiBuYW1lIChuICsgMSkgKHAgLSBuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIChuIC0gMSkgcFxuICBpblxuICBpZiBuYW1lID0gXCJcIlxuICB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgZWxzZSBmaW5kX2VuZCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1syXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Rpcm5hbWUuaHRtbFxuICBJbiBzdGVwIDYgb2YgW1syXV0sIHdlIGNob29zZSB0byBwcm9jZXNzIFwiLy9cIiBub3JtYWxseS5cbiopXG5sZXQgZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBuYW1lID1cbiAgbGV0IHJlYyB0cmFpbGluZ19zZXAgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIHRyYWlsaW5nX3NlcCAobiAtIDEpXG4gICAgZWxzZSBiYXNlIG5cbiAgYW5kIGJhc2UgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGludGVybWVkaWF0ZV9zZXAgblxuICAgIGVsc2UgYmFzZSAobiAtIDEpXG4gIGFuZCBpbnRlcm1lZGlhdGVfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIChuIC0gMSlcbiAgICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChuICsgMSlcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgdHJhaWxpbmdfc2VwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5tb2R1bGUgdHlwZSBTWVNERVBTID0gc2lnXG4gIHZhbCBudWxsIDogc3RyaW5nXG4gIHZhbCBjdXJyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBwYXJlbnRfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIGRpcl9zZXAgOiBzdHJpbmdcbiAgdmFsIGlzX2Rpcl9zZXAgOiBzdHJpbmcgLT4gaW50IC0+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+PSAwLjBcbiAgICB0aGVuIHsgcmUgPSB3OyAgaW0gPSAwLjUgKi4geC5pbSAvLiB3IH1cbiAgICBlbHNlIHsgcmUgPSAwLjUgKi4gaSAvLiB3OyAgaW0gPSBpZiB4LmltID49IDAuMCB0aGVuIHcgZWxzZSAtLiB3IH1cbiAgZW5kXG5cbmxldCBleHAgeCA9XG4gIGxldCBlID0gZXhwIHgucmUgaW4geyByZSA9IGUgKi4gY29zIHguaW07IGltID0gZSAqLiBzaW4geC5pbSB9XG5cbmxldCBsb2cgeCA9IHsgcmUgPSBsb2cgKG5vcm0geCk7IGltID0gYXRhbjIgeC5pbSB4LnJlIH1cblxubGV0IHBvdyB4IHkgPSBleHAgKG11bCB5IChsb2cgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgTWFudWVsIFNlcnJhbm8gZXQgWGF2aWVyIExlcm95LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbQmlnYXJyYXldOiBsYXJnZSwgbXVsdGktZGltZW5zaW9uYWwsIG51bWVyaWNhbCBhcnJheXMgKilcblxuKCogVGhlc2UgdHlwZXMgaW4gbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgdGFibGVzIGluXG4gICAuLi90eXBpbmcvdHlwZW9wdC5tbCAqKVxuXG50eXBlIGZsb2F0MzJfZWx0ID0gRmxvYXQzMl9lbHRcbnR5cGUgZmxvYXQ2NF9lbHQgPSBGbG9hdDY0X2VsdFxudHlwZSBpbnQ4X3NpZ25lZF9lbHQgPSBJbnQ4X3NpZ25lZF9lbHRcbnR5cGUgaW50OF91bnNpZ25lZF9lbHQgPSBJbnQ4X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQxNl9zaWduZWRfZWx0ID0gSW50MTZfc2lnbmVkX2VsdFxudHlwZSBpbnQxNl91bnNpZ25lZF9lbHQgPSBJbnQxNl91bnNpZ25lZF9lbHRcbnR5cGUgaW50MzJfZWx0ID0gSW50MzJfZWx0XG50eXBlIGludDY0X2VsdCA9IEludDY0X2VsdFxudHlwZSBpbnRfZWx0ID0gSW50X2VsdFxudHlwZSBuYXRpdmVpbnRfZWx0ID0gTmF0aXZlaW50X2VsdFxudHlwZSBjb21wbGV4MzJfZWx0ID0gQ29tcGxleDMyX2VsdFxudHlwZSBjb21wbGV4NjRfZWx0ID0gQ29tcGxleDY0X2VsdFxuXG50eXBlICgnYSwgJ2IpIGtpbmQgPVxuICAgIEZsb2F0MzIgOiAoZmxvYXQsIGZsb2F0MzJfZWx0KSBraW5kXG4gIHwgRmxvYXQ2NCA6IChmbG9hdCwgZmxvYXQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3NpZ25lZCA6IChpbnQsIGludDhfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDhfdW5zaWduZWQgOiAoaW50LCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3NpZ25lZCA6IChpbnQsIGludDE2X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl91bnNpZ25lZCA6IChpbnQsIGludDE2X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDMyIDogKGludDMyLCBpbnQzMl9lbHQpIGtpbmRcbiAgfCBJbnQ2NCA6IChpbnQ2NCwgaW50NjRfZWx0KSBraW5kXG4gIHwgSW50IDogKGludCwgaW50X2VsdCkga2luZFxuICB8IE5hdGl2ZWludCA6IChuYXRpdmVpbnQsIG5hdGl2ZWludF9lbHQpIGtpbmRcbiAgfCBDb21wbGV4MzIgOiAoQ29tcGxleC50LCBjb21wbGV4MzJfZWx0KSBraW5kXG4gIHwgQ29tcGxleDY0IDogKENvbXBsZXgudCwgY29tcGxleDY0X2VsdCkga2luZFxuICB8IENoYXIgOiAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcblxudHlwZSBjX2xheW91dCA9IENfbGF5b3V0X3R5cFxudHlwZSBmb3J0cmFuX2xheW91dCA9IEZvcnRyYW5fbGF5b3V0X3R5cCAoKiopXG5cbnR5cGUgJ2EgbGF5b3V0ID1cbiAgICBDX2xheW91dDogY19sYXlvdXQgbGF5b3V0XG4gIHwgRm9ydHJhbl9sYXlvdXQ6IGZvcnRyYW5fbGF5b3V0IGxheW91dFxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfa2luZCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgZmxvYXQzMiA9IEZsb2F0MzJcbmxldCBmbG9hdDY0ID0gRmxvYXQ2NFxubGV0IGludDhfc2lnbmVkID0gSW50OF9zaWduZWRcbmxldCBpbnQ4X3Vuc2lnbmVkID0gSW50OF91bnNpZ25lZFxubGV0IGludDE2X3NpZ25lZCA9IEludDE2X3NpZ25lZFxubGV0IGludDE2X3Vuc2lnbmVkID0gSW50MTZfdW5zaWduZWRcbmxldCBpbnQzMiA9IEludDMyXG5sZXQgaW50NjQgPSBJbnQ2NFxubGV0IGludCA9IEludFxubGV0IG5hdGl2ZWludCA9IE5hdGl2ZWludFxubGV0IGNvbXBsZXgzMiA9IENvbXBsZXgzMlxubGV0IGNvbXBsZXg2NCA9IENvbXBsZXg2NFxubGV0IGNoYXIgPSBDaGFyXG5cbmxldCBraW5kX3NpemVfaW5fYnl0ZXMgOiB0eXBlIGEgYi4gKGEsIGIpIGtpbmQgLT4gaW50ID0gZnVuY3Rpb25cbiAgfCBGbG9hdDMyIC0+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+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzJcIlxuZXh0ZXJuYWwgc2V0MzogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8zXCJcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzb29fcnVudGltZS5SdW50aW1lX3ZlcnNpb24gKilcbm1vZHVsZSBSdW50aW1lX3ZlcnNpb24gPSBKc29vX3J1bnRpbWVfX1J1bnRpbWVfdmVyc2lvblxuXG5tb2R1bGUgSnNvb19ydW50aW1lX18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIm1vZHVsZSBKcyA9IHN0cnVjdFxuICB0eXBlIHRcblxuICB0eXBlICdhIGpzX2FycmF5ID0gdFxuXG4gIHR5cGUgKCdhLCAnYikgbWV0aF9jYWxsYmFjayA9IHRcblxuICBleHRlcm5hbCBzdHJpbmcgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgYnl0ZXN0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19ieXRlc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcIlxuXG4gIGV4dGVybmFsIGJvb2wgOiBib29sIC0+IHQgPSBcImNhbWxfanNfZnJvbV9ib29sXCJcblxuICBleHRlcm5hbCB0b19ib29sIDogdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuXG4gIGV4dGVybmFsIGFycmF5IDogJ2EgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcblxuICBleHRlcm5hbCB0b19hcnJheSA6IHQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfanNfdG9fYXJyYXlcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9mbG9hdCA6IGZsb2F0IC0+IHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbiAgZXh0ZXJuYWwgZmxvYXRfb2ZfbnVtYmVyIDogdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX2ludDMyIDogaW50MzIgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2ludDMyXCJcblxuICBleHRlcm5hbCBpbnQzMl9vZl9udW1iZXIgOiB0IC0+IGludDMyID0gXCJjYW1sX2pzX3RvX2ludDMyXCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IHQgPSBcImNhbWxfanNfZnJvbV9uYXRpdmVpbnRcIlxuXG4gIGV4dGVybmFsIG5hdGl2ZWludF9vZl9udW1iZXIgOiB0IC0+IG5hdGl2ZWludCA9IFwiY2FtbF9qc190b19uYXRpdmVpbnRcIlxuXG4gIGV4dGVybmFsIHR5cGVvZiA6IHQgLT4gdCA9IFwiY2FtbF9qc190eXBlb2ZcIlxuXG4gIGV4dGVybmFsIGluc3RhbmNlb2YgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19pbnN0YW5jZW9mXCJcblxuICBleHRlcm5hbCBkZWJ1Z2dlciA6IHVuaXQgLT4gdW5pdCA9IFwiZGVidWdnZXJcIlxuXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gdCAtPiB0ID0gXCJjYW1sX2pzX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0IDogdCAtPiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG4gIGV4dGVybmFsIGRlbGV0ZSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbiAgZXh0ZXJuYWwgY2FsbCA6IHQgLT4gdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfY2FsbFwiXG5cbiAgZXh0ZXJuYWwgZnVuX2NhbGwgOiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsIDogdCAtPiBzdHJpbmcgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX21ldGhfY2FsbFwiXG5cbiAgZXh0ZXJuYWwgbmV3X29iaiA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX25ld1wiXG5cbiAgZXh0ZXJuYWwgbmV3X29ial9hcnIgOiB0IC0+IHQganNfYXJyYXkgLT4gdCA9IFwiY2FtbF9vanNfbmV3X2FyclwiXG5cbiAgZXh0ZXJuYWwgb2JqIDogKHN0cmluZyAqIHQpIGFycmF5IC0+IHQgPSBcImNhbWxfanNfb2JqZWN0XCJcblxuICBleHRlcm5hbCBlcXVhbHMgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICBleHRlcm5hbCBwdXJlX2V4cHIgOiAodW5pdCAtPiAnYSkgLT4gJ2EgPSBcImNhbWxfanNfcHVyZV9leHByXCJcblxuICBleHRlcm5hbCBldmFsX3N0cmluZyA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19ldmFsX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwganNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19leHByXCJcblxuICBleHRlcm5hbCBwdXJlX2pzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfcHVyZV9qc19leHByXCJcblxuICBleHRlcm5hbCBjYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlXCJcblxuICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgKHQganNfYXJyYXkgLT4gJ2IpIC0+ICgnYywgdCBqc19hcnJheSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3RcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICgnYiAtPiB0IGpzX2FycmF5IC0+ICdhKSAtPiAoJ2IsIHQganNfYXJyYXkgLT4gJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICBleHRlcm5hbCB3cmFwX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9tZXRoX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrXCJcbmVuZFxuXG5tb2R1bGUgU3lzID0gc3RydWN0XG4gIHR5cGUgJ2EgY2FsbGJhY2sgPSAnYVxuXG4gIGV4dGVybmFsIGNyZWF0ZV9maWxlIDogbmFtZTpzdHJpbmcgLT4gY29udGVudDpzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9jcmVhdGVfZmlsZVwiXG5cbiAgZXh0ZXJuYWwgcmVhZF9maWxlIDogbmFtZTpzdHJpbmcgLT4gc3RyaW5nID0gXCJjYW1sX3JlYWRfZmlsZV9jb250ZW50XCJcblxuICBleHRlcm5hbCBzZXRfY2hhbm5lbF9vdXRwdXQnIDogb3V0X2NoYW5uZWwgLT4gKGpzX3N0cmluZzpKcy50IC0+IHVuaXQpIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcIlxuXG4gIGV4dGVybmFsIHNldF9jaGFubmVsX2lucHV0JyA6IGluX2NoYW5uZWwgLT4gKHVuaXQgLT4gc3RyaW5nKSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXCJcblxuICBleHRlcm5hbCBtb3VudF9wb2ludCA6IHVuaXQgLT4gc3RyaW5nIGxpc3QgPSBcImNhbWxfbGlzdF9tb3VudF9wb2ludFwiXG5cbiAgZXh0ZXJuYWwgbW91bnRfYXV0b2xvYWQgOiBzdHJpbmcgLT4gKHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbikgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21vdW50X2F1dG9sb2FkXCJcblxuICBleHRlcm5hbCB1bm1vdW50IDogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfdW5tb3VudFwiXG5cbiAgbW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICAgIGV4dGVybmFsIHVzZV9qc19zdHJpbmcgOiB1bml0IC0+IGJvb2wgPSBcImNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nXCJcblxuICAgIGV4dGVybmFsIGVmZmVjdHMgOiB1bml0IC0+IGJvb2wgPSBcImNhbWxfanNvb19mbGFnc19lZmZlY3RzXCJcbiAgZW5kXG5cbiAgbGV0IHZlcnNpb24gPSBSdW50aW1lX3ZlcnNpb24uc1xuXG4gIGxldCBnaXRfdmVyc2lvbiA9IFJ1bnRpbWVfdmVyc2lvbi5naXRfdmVyc2lvblxuZW5kXG5cbm1vZHVsZSBFcnJvciA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgcmFpc2VfIDogdCAtPiAnYVxuXG4gIHZhbCBhdHRhY2hfanNfYmFja3RyYWNlIDogZXhuIC0+IGZvcmNlOmJvb2wgLT4gZXhuXG4gICgqKiBBdHRhY2ggYSBKYXZhc1NjcmlwdCBlcnJvciB0byBhbiBPQ2FtbCBleGNlcHRpb24uICBpZiBbZm9yY2UgPSBmYWxzZV0gYW5kIGFcbiAgICBKYXZhc1NjcmlwdCBlcnJvciBpcyBhbHJlYWR5IGF0dGFjaGVkLCBpdCB3aWxsIGRvIG5vdGhpbmcuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIHRvXG4gICAgc3RvcmUgYW5kIHJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0IEphdmFTY3JpcHQgc3RhY2sgdHJhY2VzLlxuXG4gICAgQXR0YWNoaW5nIEphdmFzU2NyaXB0IGVycm9ycyB3aWxsIGhhcHBlbiBhdXRvbWF0aWNhbGx5IHdoZW4gY29tcGlsaW5nIHdpdGhcbiAgICBbLS1lbmFibGUgd2l0aC1qcy1lcnJvcl0uICopXG5cbiAgdmFsIG9mX2V4biA6IGV4biAtPiB0IG9wdGlvblxuICAoKiogRXh0cmFjdCBhIEphdmFTY3JpcHQgZXJyb3IgYXR0YWNoZWQgdG8gYW4gT0NhbWwgZXhjZXB0aW9uLCBpZiBhbnkuICBUaGlzIGlzIHVzZWZ1bCB0b1xuICAgICAgaW5zcGVjdCBhbiBldmVudHVhbCBzdGFjayBzdHJhY2UsIGVzcGVjaWFsbHkgd2hlbiBzb3VyY2VtYXAgaXMgZW5hYmxlZC4gKilcblxuICBleGNlcHRpb24gRXhuIG9mIHRcbiAgKCoqIFRoZSBbRXJyb3JdIGV4Y2VwdGlvbiB3cmFwIGphdmFzY3JpcHQgZXhjZXB0aW9ucyB3aGVuIGNhdWdodCBieSBPQ2FtbCBjb2RlLlxuICAgICAgSW4gY2FzZSB0aGUgamF2YXNjcmlwdCBleGNlcHRpb24gaXMgbm90IGFuIGluc3RhbmNlIG9mIGphdmFzY3JpcHQgW0Vycm9yXSxcbiAgICAgIGl0IHdpbGwgYmUgc2VyaWFsaXplZCBhbmQgd3JhcHBlZCBpbnRvIGEgW0ZhaWx1cmVdIGV4Y2VwdGlvbi5cbiAgKilcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHRcblxuICBleGNlcHRpb24gRXhuIG9mIHRcblxuICBsZXQgXyA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcImpzRXJyb3JcIiAoRXhuIChPYmoubWFnaWMgW3x8XSkpXG5cbiAgbGV0IHJhaXNlXyA6IHQgLT4gJ2EgPSBKcy5qc19leHByIFwiKGZ1bmN0aW9uIChleG4pIHsgdGhyb3cgZXhuIH0pXCJcblxuICBleHRlcm5hbCBvZl9leG4gOiBleG4gLT4gdCBvcHRpb24gPSBcImNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvblwiXG5cbiAgZXh0ZXJuYWwgYXR0YWNoX2pzX2JhY2t0cmFjZSA6IGV4biAtPiBmb3JjZTpib29sIC0+IGV4biA9IFwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2VcIlxuZW5kXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyLTYwXCJdXG5cbm1vZHVsZSBGb3JfY29tcGF0aWJpbGl0eV9vbmx5ID0gc3RydWN0XG4gICgqIEFkZCBwcmltaXRpdmVzIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMuIEV4aXN0aW5nIHVzZXJzIG1pZ2h0XG4gICAgIGRlcGVuZCBvbiBpdCAoZS5nLiBnZW5fanNfYXBpKSwgd2UgZG9udCB3YW50IHRoZSBvY2FtbCBjb21waWxlclxuICAgICB0byBjb21wbGFpbiBhYm91dCB0aGVzZXMgbWlzc2luZyBwcmltaXRpdmVzLiAqKVxuXG4gIGV4dGVybmFsIGNhbWxfanNfZnJvbV9zdHJpbmcgOiBzdHJpbmcgLT4gSnMudCA9IFwiY2FtbF9qc19mcm9tX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc190b19ieXRlX3N0cmluZyA6IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2pzX3RvX3N0cmluZyA6IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX2pzX3RvX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9saXN0X29mX2pzX2FycmF5IDogJ2EgSnMuanNfYXJyYXkgLT4gJ2EgbGlzdCA9IFwiY2FtbF9saXN0X29mX2pzX2FycmF5XCJcblxuICBleHRlcm5hbCBjYW1sX2xpc3RfdG9fanNfYXJyYXkgOiAnYSBsaXN0IC0+ICdhIEpzLmpzX2FycmF5ID0gXCJjYW1sX2xpc3RfdG9fanNfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHZhcmlhYmxlIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX3ZhclwiXG5lbmRcblxubW9kdWxlIFR5cGVkX2FycmF5ID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdHlwZWRBcnJheSA9IEpzLnRcblxuICB0eXBlIGFycmF5QnVmZmVyID0gSnMudFxuXG4gIHR5cGUgdWludDhBcnJheSA9IEpzLnRcblxuICBleHRlcm5hbCBraW5kIDogKCdhLCAnYikgdHlwZWRBcnJheSAtPiAoJ2EsICdiKSBCaWdhcnJheS5raW5kXG4gICAgPSBcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgZnJvbV9nZW5hcnJheSA6XG4gICAgKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheVxuICAgID0gXCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCB0b19nZW5hcnJheSA6XG4gICAgKCdhLCAnYikgdHlwZWRBcnJheSAtPiAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudFxuICAgID0gXCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXlcIlxuXG4gIG1vZHVsZSBCaWdzdHJpbmcgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSAoY2hhciwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG4gICAgZXh0ZXJuYWwgdG9fYXJyYXlCdWZmZXIgOiB0IC0+IGFycmF5QnVmZmVyID0gXCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyXCJcblxuICAgIGV4dGVybmFsIHRvX3VpbnQ4QXJyYXkgOiB0IC0+IHVpbnQ4QXJyYXkgPSBcImJpZ3N0cmluZ190b190eXBlZF9hcnJheVwiXG5cbiAgICBleHRlcm5hbCBvZl9hcnJheUJ1ZmZlciA6IGFycmF5QnVmZmVyIC0+IHQgPSBcImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXJcIlxuXG4gICAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgLT4gdCA9IFwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5XCJcbiAgZW5kXG5cbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9hcnJheVwiXG5lbmRcblxubW9kdWxlIEludDY0ID0gc3RydWN0XG4gIGV4dGVybmFsIGNyZWF0ZV9pbnQ2NF9sb19taV9oaSA6IGludCAtPiBpbnQgLT4gaW50IC0+IEludDY0LnRcbiAgICA9IFwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcIlxuZW5kXG4iLCIoKiBnZW5lcmF0ZWQgYnkgZHVuZSAqKVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5DU1MgKilcbm1vZHVsZSBDU1MgPSBKc19vZl9vY2FtbF9fQ1NTXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbSAqKVxubW9kdWxlIERvbSA9IEpzX29mX29jYW1sX19Eb21cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX2V2ZW50cyAqKVxubW9kdWxlIERvbV9ldmVudHMgPSBKc19vZl9vY2FtbF9fRG9tX2V2ZW50c1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21faHRtbCAqKVxubW9kdWxlIERvbV9odG1sID0gSnNfb2Zfb2NhbWxfX0RvbV9odG1sXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9zdmcgKilcbm1vZHVsZSBEb21fc3ZnID0gSnNfb2Zfb2NhbWxfX0RvbV9zdmdcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRXZlbnRTb3VyY2UgKilcbm1vZHVsZSBFdmVudFNvdXJjZSA9IEpzX29mX29jYW1sX19FdmVudFNvdXJjZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5GaWxlICopXG5tb2R1bGUgRmlsZSA9IEpzX29mX29jYW1sX19GaWxlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZpcmVidWcgKilcbm1vZHVsZSBGaXJlYnVnID0gSnNfb2Zfb2NhbWxfX0ZpcmVidWdcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRm9ybSAqKVxubW9kdWxlIEZvcm0gPSBKc19vZl9vY2FtbF9fRm9ybVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5HZW9sb2NhdGlvbiAqKVxubW9kdWxlIEdlb2xvY2F0aW9uID0gSnNfb2Zfb2NhbWxfX0dlb2xvY2F0aW9uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkltcG9ydCAqKVxubW9kdWxlIEltcG9ydCA9IEpzX29mX29jYW1sX19JbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgKilcbm1vZHVsZSBJbnRlcnNlY3Rpb25PYnNlcnZlciA9IEpzX29mX29jYW1sX19JbnRlcnNlY3Rpb25PYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbnRsICopXG5tb2R1bGUgSW50bCA9IEpzX29mX29jYW1sX19JbnRsXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzICopXG5tb2R1bGUgSnMgPSBKc19vZl9vY2FtbF9fSnNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnNvbiAqKVxubW9kdWxlIEpzb24gPSBKc19vZl9vY2FtbF9fSnNvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Kc3RhYmxlICopXG5tb2R1bGUgSnN0YWJsZSA9IEpzX29mX29jYW1sX19Kc3RhYmxlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkxpYl92ZXJzaW9uICopXG5tb2R1bGUgTGliX3ZlcnNpb24gPSBKc19vZl9vY2FtbF9fTGliX3ZlcnNpb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuTXV0YXRpb25PYnNlcnZlciAqKVxubW9kdWxlIE11dGF0aW9uT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fTXV0YXRpb25PYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5QZXJmb3JtYW5jZU9ic2VydmVyICopXG5tb2R1bGUgUGVyZm9ybWFuY2VPYnNlcnZlciA9IEpzX29mX29jYW1sX19QZXJmb3JtYW5jZU9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlJlZ2V4cCAqKVxubW9kdWxlIFJlZ2V4cCA9IEpzX29mX29jYW1sX19SZWdleHBcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUmVzaXplT2JzZXJ2ZXIgKilcbm1vZHVsZSBSZXNpemVPYnNlcnZlciA9IEpzX29mX29jYW1sX19SZXNpemVPYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5TeXNfanMgKilcbm1vZHVsZSBTeXNfanMgPSBKc19vZl9vY2FtbF9fU3lzX2pzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlR5cGVkX2FycmF5ICopXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBKc19vZl9vY2FtbF9fVHlwZWRfYXJyYXlcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuVXJsICopXG5tb2R1bGUgVXJsID0gSnNfb2Zfb2NhbWxfX1VybFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5XZWJHTCAqKVxubW9kdWxlIFdlYkdMID0gSnNfb2Zfb2NhbWxfX1dlYkdMXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldlYlNvY2tldHMgKilcbm1vZHVsZSBXZWJTb2NrZXRzID0gSnNfb2Zfb2NhbWxfX1dlYlNvY2tldHNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV29ya2VyICopXG5tb2R1bGUgV29ya2VyID0gSnNfb2Zfb2NhbWxfX1dvcmtlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5YbWxIdHRwUmVxdWVzdCAqKVxubW9kdWxlIFhtbEh0dHBSZXF1ZXN0ID0gSnNfb2Zfb2NhbWxfX1htbEh0dHBSZXF1ZXN0XG5cbm1vZHVsZSBKc19vZl9vY2FtbF9fID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcInRoaXMgbW9kdWxlIGlzIHNoYWRvd2VkXCJdXG4iLCIoKiBKc19vZl9vY2FtbFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuXG4gIGV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbiAgZXh0ZXJuYWwgZXF1YWwgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZW5kXG5cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGV4dGVybmFsICggPCApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuXG4gIGV4dGVybmFsICggPD0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPiApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbiAgZXh0ZXJuYWwgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgbGV0IG1heCAoeCA6IGludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCBlcXVhbCAoeCA6IHN0cmluZykgKHkgOiBzdHJpbmcpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5tb2R1bGUgQ2hhciA9IHN0cnVjdFxuICBpbmNsdWRlIENoYXJcblxuICBsZXQgZXF1YWwgKHggOiBjaGFyKSAoeSA6IGNoYXIpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbigqIFRoaXMgbG9jYWwgbW9kdWxlIFtKc10gaXMgbmVlZGVkIHNvIHRoYXQgdGhlIHBweF9qcyBleHRlbnNpb24gd29yayB3aXRoaW4gdGhhdCBmaWxlLiAqKVxubW9kdWxlIEpzID0gc3RydWN0XG4gIHR5cGUgKydhIHRcblxuICB0eXBlICgtJ2EsICsnYikgbWV0aF9jYWxsYmFja1xuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgICB0eXBlIHRvcFxuXG4gICAgdHlwZSBhbnkgPSB0b3AgdFxuXG4gICAgdHlwZSBhbnlfanNfYXJyYXkgPSBhbnlcblxuICAgIGV4dGVybmFsIGluamVjdCA6ICdhIC0+IGFueSA9IFwiJWlkZW50aXR5XCJcblxuICAgIGV4dGVybmFsIGNvZXJjZSA6IF8gdCAtPiBfIHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgICBleHRlcm5hbCBnZXQgOiAnYSAtPiAnYiAtPiAnYyA9IFwiY2FtbF9qc19nZXRcIlxuXG4gICAgZXh0ZXJuYWwgc2V0IDogJ2EgLT4gJ2IgLT4gJ2MgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG4gICAgZXh0ZXJuYWwgZGVsZXRlIDogJ2EgLT4gJ2IgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbCA6ICdhIC0+ICdiIC0+IGFueSBhcnJheSAtPiAnYyA9IFwiY2FtbF9qc19jYWxsXCJcblxuICAgIGV4dGVybmFsIGZ1bl9jYWxsIDogJ2EgLT4gYW55IGFycmF5IC0+ICdiID0gXCJjYW1sX2pzX2Z1bl9jYWxsXCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbCA6ICdhIC0+IHN0cmluZyAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuICAgIGV4dGVybmFsIG5ld19vYmogOiAnYSAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfbmV3XCJcblxuICAgIGV4dGVybmFsIG5ld19vYmpfYXJyIDogJ2EgLT4gYW55X2pzX2FycmF5IC0+ICdiID0gXCJjYW1sX29qc19uZXdfYXJyXCJcblxuICAgIGV4dGVybmFsIG9iaiA6IChzdHJpbmcgKiBhbnkpIGFycmF5IC0+ICdhID0gXCJjYW1sX2pzX29iamVjdFwiXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiAnYSAtPiAnYiAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogJ2EgLT4gJ2IgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHB1cmVfZXhwciA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9qc19wdXJlX2V4cHJcIlxuXG4gICAgZXh0ZXJuYWwgZXZhbF9zdHJpbmcgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXZhbF9zdHJpbmdcIlxuXG4gICAgZXh0ZXJuYWwganNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19leHByXCJcblxuICAgIGV4dGVybmFsIHB1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuXG4gICAgbGV0IGdsb2JhbCA9IHB1cmVfanNfZXhwciBcImdsb2JhbFRoaXNcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAgIChhbnlfanNfYXJyYXkgLT4gJ2IpIC0+ICgnYywgYW55X2pzX2FycmF5IC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3RcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0XCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICAgKCdiIC0+IGFueV9qc19hcnJheSAtPiAnYSkgLT4gKCdiLCBhbnlfanNfYXJyYXkgLT4gJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gICAgKCogREVQUkVDQVRFRCAqKVxuICAgIGV4dGVybmFsIHZhcmlhYmxlIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX3ZhclwiXG4gIGVuZFxuXG4gICgqKioqKVxuXG4gIHR5cGUgJ2Egb3B0ID0gJ2FcblxuICB0eXBlICdhIG9wdGRlZiA9ICdhXG5cbiAgZXh0ZXJuYWwgZGVidWdnZXIgOiB1bml0IC0+IHVuaXQgPSBcImRlYnVnZ2VyXCJcblxuICBsZXQgbnVsbCA6ICdhIG9wdCA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJudWxsXCJcblxuICBleHRlcm5hbCBzb21lIDogJ2EgLT4gJ2Egb3B0ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCB1bmRlZmluZWQgOiAnYSBvcHRkZWYgPSBVbnNhZmUucHVyZV9qc19leHByIFwidW5kZWZpbmVkXCJcblxuICBleHRlcm5hbCBkZWYgOiAnYSAtPiAnYSBvcHRkZWYgPSBcIiVpZGVudGl0eVwiXG5cbiAgbW9kdWxlIHR5cGUgT1BUID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZW1wdHkgOiAnYSB0XG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICAgdmFsIG1hcCA6ICdhIHQgLT4gKCdhIC0+ICdiKSAtPiAnYiB0XG5cbiAgICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcblxuICAgIHZhbCB0ZXN0IDogJ2EgdCAtPiBib29sXG5cbiAgICB2YWwgaXRlciA6ICdhIHQgLT4gKCdhIC0+IHVuaXQpIC0+IHVuaXRcblxuICAgIHZhbCBjYXNlIDogJ2EgdCAtPiAodW5pdCAtPiAnYikgLT4gKCdhIC0+ICdiKSAtPiAnYlxuXG4gICAgdmFsIGdldCA6ICdhIHQgLT4gKHVuaXQgLT4gJ2EpIC0+ICdhXG5cbiAgICB2YWwgb3B0aW9uIDogJ2Egb3B0aW9uIC0+ICdhIHRcblxuICAgIHZhbCB0b19vcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvblxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuICBlbmRcblxuICBtb2R1bGUgT3B0IDogT1BUIHdpdGggdHlwZSAnYSB0ID0gJ2Egb3B0ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2Egb3B0XG5cbiAgICBsZXQgZW1wdHkgPSBudWxsXG5cbiAgICBsZXQgcmV0dXJuID0gc29tZVxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgbGV0IG1hcCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gbnVsbCBlbHNlIHJldHVybiAoZiB4KVxuXG4gICAgbGV0IGJpbmQgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIG51bGwgZWxzZSBmIHhcblxuICAgIGxldCB0ZXN0IHggPSBub3QgKGVxdWFscyB4IG51bGwpXG5cbiAgICBsZXQgaXRlciB4IGYgPSBpZiBub3QgKGVxdWFscyB4IG51bGwpIHRoZW4gZiB4XG5cbiAgICBsZXQgY2FzZSB4IGYgZyA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBmICgpIGVsc2UgZyB4XG5cbiAgICBsZXQgZ2V0IHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBmICgpIGVsc2UgeFxuXG4gICAgbGV0IG9wdGlvbiB4ID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGVtcHR5XG4gICAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuXG4gICAgbGV0IHRvX29wdGlvbiB4ID0gY2FzZSB4IChmdW4gKCkgLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeClcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdGRlZiA6IE9QVCB3aXRoIHR5cGUgJ2EgdCA9ICdhIG9wdGRlZiA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGRlZlxuXG4gICAgbGV0IGVtcHR5ID0gdW5kZWZpbmVkXG5cbiAgICBsZXQgcmV0dXJuID0gZGVmXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBsZXQgbWFwIHggZiA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiB1bmRlZmluZWQgZWxzZSByZXR1cm4gKGYgeClcblxuICAgIGxldCBiaW5kIHggZiA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiB1bmRlZmluZWQgZWxzZSBmIHhcblxuICAgIGxldCB0ZXN0IHggPSBub3QgKHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQpXG5cbiAgICBsZXQgaXRlciB4IGYgPSBpZiBub3QgKHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQpIHRoZW4gZiB4XG5cbiAgICBsZXQgY2FzZSB4IGYgZyA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiBmICgpIGVsc2UgZyB4XG5cbiAgICBsZXQgZ2V0IHggZiA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiBmICgpIGVsc2UgeFxuXG4gICAgbGV0IG9wdGlvbiB4ID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGVtcHR5XG4gICAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuXG4gICAgbGV0IHRvX29wdGlvbiB4ID0gY2FzZSB4IChmdW4gKCkgLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeClcbiAgZW5kXG5cbiAgKCoqKiopXG5cbiAgbGV0IGNvZXJjZSB4IGYgZyA9IE9wdC5nZXQgKGYgeCkgKGZ1biAoKSAtPiBnIHgpXG5cbiAgbGV0IGNvZXJjZV9vcHQgeCBmIGcgPSBPcHQuZ2V0IChPcHQuYmluZCB4IGYpIChmdW4gKCkgLT4gZyB4KVxuXG4gICgqKioqKVxuXG4gIHR5cGUgKydhIG1ldGhcblxuICB0eXBlICsnYSBnZW5fcHJvcFxuXG4gIHR5cGUgJ2EgcmVhZG9ubHlfcHJvcCA9IDwgZ2V0IDogJ2EgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2Egd3JpdGVvbmx5X3Byb3AgPSA8IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2EgcHJvcCA9IDwgZ2V0IDogJ2EgOyBzZXQgOiAnYSAtPiB1bml0ID4gZ2VuX3Byb3BcblxuICB0eXBlICdhIG9wdGRlZl9wcm9wID0gPCBnZXQgOiAnYSBvcHRkZWYgOyBzZXQgOiAnYSAtPiB1bml0ID4gZ2VuX3Byb3BcblxuICB0eXBlICsnYSBjb25zdHJcblxuICAoKioqKilcblxuICB0eXBlICdhIGNhbGxiYWNrID0gKHVuaXQsICdhKSBtZXRoX2NhbGxiYWNrXG5cbiAgZXh0ZXJuYWwgd3JhcF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tcIlxuXG4gIGV4dGVybmFsIHdyYXBfbWV0aF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdhLCAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja1wiXG5cbiAgKCoqKiopXG5cbiAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAoKioqKilcblxuICBsZXQgX3RydWUgPSBVbnNhZmUucHVyZV9qc19leHByIFwidHJ1ZVwiXG5cbiAgbGV0IF9mYWxzZSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJmYWxzZVwiXG5cbiAgdHlwZSBtYXRjaF9yZXN1bHRfaGFuZGxlXG5cbiAgdHlwZSBzdHJpbmdfYXJyYXlcblxuICB0eXBlIG51bWJlcl90ID0gZmxvYXRcblxuICBjbGFzcyB0eXBlIG51bWJlciA9IG9iamVjdFxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1N0cmluZ19yYWRpeCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9GaXhlZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9FeHBvbmVudGlhbCA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0V4cG9uZW50aWFsX2RpZ2l0cyA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9QcmVjaXNpb24gOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuICBlbmRcblxuICBhbmQganNfc3RyaW5nID0gb2JqZWN0XG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHZhbHVlT2YgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY2hhckF0IDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjaGFyQ29kZUF0IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICAgICgqIFRoaXMgbWF5IHJldHVybiBOYU4uLi4gKilcbiAgICBtZXRob2QgY29uY2F0IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNvbmNhdF8yIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNvbmNhdF8zIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNvbmNhdF80IDpcbiAgICAgIGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBpbmRleE9mIDoganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBpbmRleE9mX2Zyb20gOiBqc19zdHJpbmcgdCAtPiBpbnQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsYXN0SW5kZXhPZiA6IGpzX3N0cmluZyB0IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbGFzdEluZGV4T2ZfZnJvbSA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxvY2FsZUNvbXBhcmUgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgICBtZXRob2QgX21hdGNoIDogcmVnRXhwIHQgLT4gbWF0Y2hfcmVzdWx0X2hhbmRsZSB0IG9wdCBtZXRoXG5cbiAgICBtZXRob2Qgbm9ybWFsaXplIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIG5vcm1hbGl6ZV9mb3JtIDogbm9ybWFsaXphdGlvbiB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCByZXBsYWNlIDogcmVnRXhwIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHJlcGxhY2Vfc3RyaW5nIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNlYXJjaCA6IHJlZ0V4cCB0IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzbGljZV9lbmQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0IDoganNfc3RyaW5nIHQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X2xpbWl0ZWQgOiBqc19zdHJpbmcgdCAtPiBpbnQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X3JlZ0V4cCA6IHJlZ0V4cCB0IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdF9yZWdFeHBMaW1pdGVkIDogcmVnRXhwIHQgLT4gaW50IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzdWJzdHJpbmcgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzdWJzdHJpbmdfdG9FbmQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG93ZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG9jYWxlTG93ZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvVXBwZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG9jYWxlVXBwZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRyaW0gOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgYW5kIHJlZ0V4cCA9IG9iamVjdFxuICAgIG1ldGhvZCBleGVjIDoganNfc3RyaW5nIHQgLT4gbWF0Y2hfcmVzdWx0X2hhbmRsZSB0IG9wdCBtZXRoXG5cbiAgICBtZXRob2QgdGVzdCA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc291cmNlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGdsb2JhbCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlQ2FzZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbXVsdGlsaW5lIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBsYXN0SW5kZXggOiBpbnQgcHJvcFxuICBlbmRcblxuICBhbmQgbm9ybWFsaXphdGlvbiA9IGpzX3N0cmluZ1xuXG4gICgqIHN0cmluZyBpcyB1c2VkIGJ5IHBweF9qcywgaXQgbmVlZHMgdG8gY29tZSBiZWZvcmUgYW55IHVzZSBvZiB0aGVcbiAgICAgbmV3IHN5bnRheCBpbiB0aGlzIGZpbGUgKilcbiAgZXh0ZXJuYWwgc3RyaW5nIDogc3RyaW5nIC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fc3RyaW5nIDoganNfc3RyaW5nIHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1wiXG5cbiAgbGV0IG5mYyA9IHN0cmluZyBcIk5GQ1wiXG5cbiAgbGV0IG5mZCA9IHN0cmluZyBcIk5GRFwiXG5cbiAgbGV0IG5ma2MgPSBzdHJpbmcgXCJORktDXCJcblxuICBsZXQgbmZrZCA9IHN0cmluZyBcIk5GS0RcIlxuZW5kXG5cbmluY2x1ZGUgSnNcblxuY2xhc3MgdHlwZSBzdHJpbmdfY29uc3RyID0gb2JqZWN0XG4gIG1ldGhvZCBmcm9tQ2hhckNvZGUgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBzdHJpbmdfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9TdHJpbmdcblxubGV0IHJlZ0V4cCA9IFVuc2FmZS5nbG9iYWwjIy5fUmVnRXhwXG5cbmxldCByZWdFeHBfY29weSA9IHJlZ0V4cFxuXG5sZXQgcmVnRXhwX3dpdGhGbGFncyA9IHJlZ0V4cFxuXG5jbGFzcyB0eXBlIFsnYV0ganNfYXJyYXkgPSBvYmplY3RcbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgY29uY2F0IDogJ2EganNfYXJyYXkgdCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgam9pbiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcG9wIDogJ2Egb3B0ZGVmIG1ldGhcblxuICBtZXRob2QgcHVzaCA6ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hfMiA6ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hfMyA6ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hfNCA6ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHJldmVyc2UgOiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2hpZnQgOiAnYSBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX2VuZCA6IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc29ydCA6ICgnYSAtPiAnYSAtPiBudW1iZXJfdCkgY2FsbGJhY2sgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNvcnRfYXNTdHJpbmdzIDogJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZSA6IGludCAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8xIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzIgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMyA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV80IDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdCA6ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnRfMiA6ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnRfMyA6ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnRfNCA6ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHNvbWUgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gYm9vbCB0KSBjYWxsYmFjayAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBldmVyeSA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGZvckVhY2ggOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gdW5pdCkgY2FsbGJhY2sgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1hcCA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGZpbHRlciA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VfaW5pdCA6ICgnYiAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IgLT4gJ2IgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2UgOiAoJ2EgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2EpIGNhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2QgcmVkdWNlUmlnaHRfaW5pdCA6XG4gICAgKCdiIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZVJpZ2h0IDogKCdhIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdhKSBjYWxsYmFjayAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCBwcm9wXG5lbmRcblxubGV0IG9iamVjdF9jb25zdHJ1Y3RvciA9IFVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBvYmplY3Rfa2V5cyBvIDoganNfc3RyaW5nIHQganNfYXJyYXkgdCA9IG9iamVjdF9jb25zdHJ1Y3RvciMja2V5cyBvXG5cbmxldCBhcnJheV9jb25zdHJ1Y3RvciA9IFVuc2FmZS5nbG9iYWwjIy5fQXJyYXlcblxubGV0IGFycmF5X2VtcHR5ID0gYXJyYXlfY29uc3RydWN0b3JcblxubGV0IGFycmF5X2xlbmd0aCA9IGFycmF5X2NvbnN0cnVjdG9yXG5cbmxldCBhcnJheV9nZXQgOiAnYSAjanNfYXJyYXkgdCAtPiBpbnQgLT4gJ2Egb3B0ZGVmID0gVW5zYWZlLmdldFxuXG5sZXQgYXJyYXlfc2V0IDogJ2EgI2pzX2FycmF5IHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBVbnNhZmUuc2V0XG5cbmxldCBhcnJheV9tYXBfcG9seSA6XG4gICAgJ2EgI2pzX2FycmF5IHQgLT4gKCdhIC0+IGludCAtPiAnYSAjanNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IgI2pzX2FycmF5IHQgPVxuIGZ1biBhIGNiIC0+IChVbnNhZmUuY29lcmNlIGEpIyNtYXAgY2JcblxubGV0IGFycmF5X21hcCBmIGEgPSBhcnJheV9tYXBfcG9seSBhICh3cmFwX2NhbGxiYWNrIChmdW4geCBfaWR4IF8gLT4gZiB4KSlcblxubGV0IGFycmF5X21hcGkgZiBhID0gYXJyYXlfbWFwX3BvbHkgYSAod3JhcF9jYWxsYmFjayAoZnVuIHggaWR4IF8gLT4gZiBpZHggeCkpXG5cbmNsYXNzIHR5cGUgbWF0Y2hfcmVzdWx0ID0gb2JqZWN0XG4gIGluaGVyaXQgW2pzX3N0cmluZyB0XSBqc19hcnJheVxuXG4gIG1ldGhvZCBpbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlucHV0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBzdHJfYXJyYXkgOiBzdHJpbmdfYXJyYXkgdCAtPiBqc19zdHJpbmcgdCBqc19hcnJheSB0ID0gVW5zYWZlLmNvZXJjZVxuXG5sZXQgbWF0Y2hfcmVzdWx0IDogbWF0Y2hfcmVzdWx0X2hhbmRsZSB0IC0+IG1hdGNoX3Jlc3VsdCB0ID0gVW5zYWZlLmNvZXJjZVxuXG5jbGFzcyB0eXBlIGRhdGUgPSBvYmplY3RcbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvVGltZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlRGF0ZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVUaW1lU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB2YWx1ZU9mIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGdWxsWWVhciA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0Z1bGxZZWFyIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TW9udGggOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENNb250aCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldERhdGUgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENEYXRlIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0RGF5IDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRGF5IDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SG91cnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENIb3VycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1pbnV0ZXMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENNaW51dGVzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0U2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ1NlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNaWxsaXNlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENNaWxsaXNlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRUaW1lem9uZU9mZnNldCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIHNldFRpbWUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZ1bGxZZWFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRnVsbFllYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNb250aCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ01vbnRoIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RGF0ZSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0RhdGUgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXkgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENEYXkgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRIb3VycyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0hvdXJzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TWludXRlcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ01pbnV0ZXMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRTZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDU2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1pbGxpc2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ01pbGxpc2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHRvVVRDU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0lTT1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9KU09OIDogJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgZGF0ZV9jb25zdHIgPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX21vbnRoIDogaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfZGF5IDogaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfaG91ciA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbWluIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfc2VjIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX21zIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgbm93IDogbnVtYmVyX3QgbWV0aFxuZW5kXG5cbmxldCBkYXRlX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRGF0ZVxuXG5sZXQgZGF0ZSA6IGRhdGVfY29uc3RyIHQgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9ub3cgOiBkYXRlIHQgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfZnJvbVRpbWVWYWx1ZSA6IChudW1iZXJfdCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX21vbnRoIDogKGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9kYXkgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9ob3VyIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX21pbiA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfc2VjIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbXMgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID1cbiAgZGF0ZV9jb25zdHJcblxuY2xhc3MgdHlwZSBtYXRoID0gb2JqZWN0XG4gIG1ldGhvZCBfRSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xOMiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xOMTAgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT0cyRSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPRzEwRSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BJIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1FSVDFfMl8gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUVJUMiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWJzIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhY29zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhc2luIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhdGFuIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhdGFuMiA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgY2VpbCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgY29zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBleHAgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGZsb29yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBsb2cgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1heCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4XzMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1heF80IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbl8zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtaW5fNCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgcG93IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCByYW5kb20gOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHJvdW5kIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNxcnQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHRhbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcbmVuZFxuXG5sZXQgbWF0aCA9IFVuc2FmZS5nbG9iYWwjIy5fTWF0aFxuXG5jbGFzcyB0eXBlIGVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZXNzYWdlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGFjayA6IGpzX3N0cmluZyB0IG9wdGRlZiBwcm9wXG5cbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBlcnJvcl9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0Vycm9yXG5cbm1vZHVsZSBKc19lcnJvciA9IHN0cnVjdFxuICB0eXBlIGVycm9yX3QgPSBlcnJvciB0XG5cbiAgaW5jbHVkZSBKc29vX3J1bnRpbWUuRXJyb3JcblxuICBleHRlcm5hbCBvZl9lcnJvciA6IGVycm9yX3QgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxuICBleHRlcm5hbCB0b19lcnJvciA6IHQgLT4gZXJyb3JfdCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgbmFtZSBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjLm5hbWVcblxuICBsZXQgbWVzc2FnZSBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjLm1lc3NhZ2VcblxuICBsZXQgc3RhY2sgKGUgOiB0KSA6IHN0cmluZyBvcHRpb24gPVxuICAgIE9wdC50b19vcHRpb24gKE9wdC5tYXAgKHRvX2Vycm9yIGUpIyMuc3RhY2sgdG9fc3RyaW5nKVxuXG4gIGxldCB0b19zdHJpbmcgZSA9IHRvX3N0cmluZyAodG9fZXJyb3IgZSkjI3RvU3RyaW5nXG5lbmRcblxubW9kdWxlIE1hZ2ljID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgICBleGNlcHRpb24gRXJyb3Igb2YgZXJyb3IgdFxuICBlbmRcblxuICB0eXBlICgnYSwgJ2IpIGVxID0gRXEgOiAoJ2EsICdhKSBlcVxuXG4gIGxldCAoZXEgOiAoZXJyb3IgdCwgSnNfZXJyb3IudCkgZXEpID0gT2JqLm1hZ2ljIEVxXG5cbiAgbGV0IG0gPVxuICAgIG1hdGNoIGVxIHdpdGhcbiAgICB8IEVxIC0+XG4gICAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgICAgZXhjZXB0aW9uIEVycm9yID0gSnNfZXJyb3IuRXhuXG4gICAgICAgIGVuZCA6IFQpXG5cbiAgbW9kdWxlIEVycm9yID0gKHZhbCBtIDogVClcbmVuZFxuXG5pbmNsdWRlIE1hZ2ljLkVycm9yXG5cbmxldCByYWlzZV9qc19lcnJvciBlID0gSnNfZXJyb3IucmFpc2VfIChKc19lcnJvci5vZl9lcnJvciBlKVxuXG5sZXQgc3RyaW5nX29mX2Vycm9yIGUgPSBKc19lcnJvci50b19zdHJpbmcgKEpzX2Vycm9yLm9mX2Vycm9yIGUpXG5cbmxldCBleG5fd2l0aF9qc19iYWNrdHJhY2UgPSBKc19lcnJvci5hdHRhY2hfanNfYmFja3RyYWNlXG5cbmV4dGVybmFsIGpzX2Vycm9yX29mX2V4biA6IGV4biAtPiBlcnJvciB0IG9wdCA9IFwiY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb25cIlxuXG5jbGFzcyB0eXBlIGpzb24gPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlIDoganNfc3RyaW5nIHQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnkgOiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IF9KU09OIDoganNvbiB0ID0gVW5zYWZlLmdsb2JhbCMjLl9KU09OXG5cbmxldCBkZWNvZGVVUkkgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZGVjb2RlVVJJIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZGVjb2RlVVJJQ29tcG9uZW50IChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmRlY29kZVVSSUNvbXBvbmVudCBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVuY29kZVVSSSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lbmNvZGVVUkkgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlbmNvZGVVUklDb21wb25lbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZW5jb2RlVVJJQ29tcG9uZW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZXNjYXBlIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVzY2FwZSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IHVuZXNjYXBlIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLnVuZXNjYXBlIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5leHRlcm5hbCBib29sIDogYm9vbCAtPiBib29sIHQgPSBcImNhbWxfanNfZnJvbV9ib29sXCJcblxuZXh0ZXJuYWwgdG9fYm9vbCA6IGJvb2wgdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuXG5leHRlcm5hbCBhcnJheSA6ICdhIGFycmF5IC0+ICdhIGpzX2FycmF5IHQgPSBcImNhbWxfanNfZnJvbV9hcnJheVwiXG5cbmV4dGVybmFsIHRvX2FycmF5IDogJ2EganNfYXJyYXkgdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9qc190b19hcnJheVwiXG5cbmV4dGVybmFsIGJ5dGVzdHJpbmcgOiBzdHJpbmcgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNieXRlc19vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCB0b19ieXRlc3RyaW5nIDoganNfc3RyaW5nIHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzXCJcblxuZXh0ZXJuYWwgZmxvYXQgOiBmbG9hdCAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBudW1iZXJfdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5cbmV4dGVybmFsIG51bWJlcl9vZl9mbG9hdCA6IGZsb2F0IC0+IG51bWJlciB0ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG5leHRlcm5hbCBmbG9hdF9vZl9udW1iZXIgOiBudW1iZXIgdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5cbmV4dGVybmFsIGludDMyIDogaW50MzIgLT4gbnVtYmVyX3QgPSBcImNhbWxfanNfZnJvbV9pbnQzMlwiXG5cbmV4dGVybmFsIHRvX2ludDMyIDogbnVtYmVyX3QgLT4gaW50MzIgPSBcImNhbWxfanNfdG9faW50MzJcIlxuXG5leHRlcm5hbCBuYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gbnVtYmVyX3QgPSBcImNhbWxfanNfZnJvbV9uYXRpdmVpbnRcIlxuXG5leHRlcm5hbCB0b19uYXRpdmVpbnQgOiBudW1iZXJfdCAtPiBuYXRpdmVpbnQgPSBcImNhbWxfanNfdG9fbmF0aXZlaW50XCJcblxuZXh0ZXJuYWwgdHlwZW9mIDogXyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX3R5cGVvZlwiXG5cbmV4dGVybmFsIGluc3RhbmNlb2YgOiBfIHQgLT4gXyBjb25zdHIgLT4gYm9vbCA9IFwiY2FtbF9qc19pbnN0YW5jZW9mXCJcblxubGV0IGlzTmFOIChpIDogJ2EpIDogYm9vbCA9XG4gIHRvX2Jvb2wgKFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuaXNOYU4gW3wgVW5zYWZlLmluamVjdCBpIHxdKVxuXG5sZXQgcGFyc2VJbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBpbnQgPVxuICBsZXQgcyA9IFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMucGFyc2VJbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdIGluXG4gIGlmIGlzTmFOIHMgdGhlbiBmYWlsd2l0aCBcInBhcnNlSW50XCIgZWxzZSBzXG5cbmxldCBwYXJzZUZsb2F0IChzIDoganNfc3RyaW5nIHQpIDogbnVtYmVyX3QgPVxuICBsZXQgcyA9IFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMucGFyc2VGbG9hdCBbfCBVbnNhZmUuaW5qZWN0IHMgfF0gaW5cbiAgaWYgaXNOYU4gcyB0aGVuIGZhaWx3aXRoIFwicGFyc2VGbG9hdFwiIGVsc2Ugc1xuXG5sZXQgXyA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1bmN0aW9uXG4gICAgICB8IEpzX2Vycm9yLkV4biBlIC0+IFNvbWUgKEpzX2Vycm9yLnRvX3N0cmluZyBlKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBfID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuIGUgLT5cbiAgICAgIGxldCBlIDogPCAuLiA+IHQgPSBPYmoubWFnaWMgZSBpblxuICAgICAgaWYgaW5zdGFuY2VvZiBlIGFycmF5X2NvbnN0cnVjdG9yIHRoZW4gTm9uZSBlbHNlIFNvbWUgKHRvX3N0cmluZyBlIyN0b1N0cmluZykpXG5cbmxldCBleHBvcnRfanMgKGZpZWxkIDoganNfc3RyaW5nIHQpIHggPVxuICBVbnNhZmUuc2V0XG4gICAgKFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJqc29vX2V4cG9ydHNcIilcbiAgICBmaWVsZFxuICAgIChpZiBTdHJpbmcuZXF1YWwgKEpzLnRvX3N0cmluZyAodHlwZW9mIChPYmoubWFnaWMgeCkpKSBcImZ1bmN0aW9uXCJcbiAgICAgICAgKCogZnVuY3Rpb24gd2l0aCBhcml0eS9sZW5ndGggZXF1YWwgdG8gemVybyBhcmUgYWxyZWFkeSB3cmFwcGVkICopXG4gICAgICAgICYmIFVuc2FmZS5nZXQgKE9iai5tYWdpYyB4KSAoSnMuc3RyaW5nIFwibGVuZ3RoXCIpID4gMFxuICAgICB0aGVuIE9iai5tYWdpYyAod3JhcF9jYWxsYmFjayAoT2JqLm1hZ2ljIHgpKVxuICAgICBlbHNlIHgpXG5cbmxldCBleHBvcnQgZmllbGQgeCA9IGV4cG9ydF9qcyAoc3RyaW5nIGZpZWxkKSB4XG5cbmxldCBleHBvcnRfYWxsIG9iaiA9XG4gIGxldCBrZXlzID0gb2JqZWN0X2tleXMgb2JqIGluXG4gIGtleXMjI2ZvckVhY2hcbiAgICAod3JhcF9jYWxsYmFjayAoZnVuIChrZXkgOiBqc19zdHJpbmcgdCkgXyBfIC0+IGV4cG9ydF9qcyBrZXkgKFVuc2FmZS5nZXQgb2JqIGtleSkpKVxuXG4oKioqKilcblxuKCogREVQUkVDQVRFRCAqKVxuXG50eXBlIGZsb2F0X3Byb3AgPSBudW1iZXJfdCBwcm9wXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgWydub2RlXSBub2RlTGlzdCA9IG9iamVjdFxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGxpc3Rfb2Zfbm9kZUxpc3QgKG5vZGVMaXN0IDogJ2Egbm9kZUxpc3QgdCkgPVxuICBsZXQgbGVuZ3RoID0gbm9kZUxpc3QjIy5sZW5ndGggaW5cbiAgbGV0IHJlYyBhZGRfaXRlbSBhY2MgaSA9XG4gICAgaWYgaSA8IGxlbmd0aFxuICAgIHRoZW5cbiAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKG5vZGVMaXN0IyNpdGVtIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhZGRfaXRlbSBhY2MgKGkgKyAxKVxuICAgICAgfCBTb21lIGUgLT4gYWRkX2l0ZW0gKGUgOjogYWNjKSAoaSArIDEpXG4gICAgZWxzZSBMaXN0LnJldiBhY2NcbiAgaW5cbiAgYWRkX2l0ZW0gW10gMFxuXG50eXBlIG5vZGVUeXBlID1cbiAgfCBPVEhFUlxuICAoKiBXaWxsIG5vdCBoYXBwZW4gKilcbiAgfCBFTEVNRU5UXG4gIHwgQVRUUklCVVRFXG4gIHwgVEVYVFxuICB8IENEQVRBX1NFQ1RJT05cbiAgfCBFTlRJVFlfUkVGRVJFTkNFXG4gIHwgRU5USVRZXG4gIHwgUFJPQ0VTU0lOR19JTlNUUlVDVElPTlxuICB8IENPTU1FTlRcbiAgfCBET0NVTUVOVFxuICB8IERPQ1VNRU5UX1RZUEVcbiAgfCBET0NVTUVOVF9GUkFHTUVOVFxuICB8IE5PVEFUSU9OXG5cbm1vZHVsZSBEb2N1bWVudFBvc2l0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIHR5cGUgbWFzayA9IGludFxuXG4gIGxldCBkaXNjb25uZWN0ZWQgPSAweDAxXG5cbiAgbGV0IHByZWNlZGluZyA9IDB4MDJcblxuICBsZXQgZm9sbG93aW5nID0gMHgwNFxuXG4gIGxldCBjb250YWlucyA9IDB4MDhcblxuICBsZXQgY29udGFpbmVkX2J5ID0gMHgxMFxuXG4gIGxldCBpbXBsZW1lbnRhdGlvbl9zcGVjaWZpYyA9IDB4MjBcblxuICBsZXQgaGFzIHQgbWFzayA9IHQgbGFuZCBtYXNrID0gbWFza1xuXG4gIGxldCBhZGQgeCB5ID0geCBsb3IgeVxuXG4gIGxldCAoICsgKSA9IGFkZFxuZW5kXG5cbmNsYXNzIHR5cGUgbm9kZSA9IG9iamVjdFxuICBtZXRob2Qgbm9kZU5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5vZGVWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5vZGVUeXBlIDogbm9kZVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXJlbnROb2RlIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGNoaWxkTm9kZXMgOiBub2RlIG5vZGVMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBmaXJzdENoaWxkIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGxhc3RDaGlsZCA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbmV4dFNpYmxpbmcgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbmFtZXNwYWNlVVJJIDoganNfc3RyaW5nIHQgb3B0IHByb3BcblxuICBtZXRob2QgaW5zZXJ0QmVmb3JlIDogbm9kZSB0IC0+IG5vZGUgdCBvcHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZUNoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVDaGlsZCA6IG5vZGUgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRDaGlsZCA6IG5vZGUgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCBoYXNDaGlsZE5vZGVzIDogYm9vbCB0IG1ldGhcblxuICBtZXRob2QgY2xvbmVOb2RlIDogYm9vbCB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIDogbm9kZSB0IC0+IERvY3VtZW50UG9zaXRpb24udCBtZXRoXG5cbiAgbWV0aG9kIGxvb2t1cE5hbWVzcGFjZVVSSSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxvb2t1cFByZWZpeCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5lbmRcblxubGV0IGFwcGVuZENoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSA9IGlnbm9yZSAocCMjYXBwZW5kQ2hpbGQgKG4gOj4gbm9kZSB0KSlcblxubGV0IHJlbW92ZUNoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSA9IGlnbm9yZSAocCMjcmVtb3ZlQ2hpbGQgKG4gOj4gbm9kZSB0KSlcblxubGV0IHJlcGxhY2VDaGlsZCAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgKG8gOiAjbm9kZSB0KSA9XG4gIGlnbm9yZSAocCMjcmVwbGFjZUNoaWxkIChuIDo+IG5vZGUgdCkgKG8gOj4gbm9kZSB0KSlcblxubGV0IGluc2VydEJlZm9yZSAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgKG8gOiAjbm9kZSB0IG9wdCkgPVxuICBpZ25vcmUgKHAjI2luc2VydEJlZm9yZSAobiA6PiBub2RlIHQpIChvIDo+IG5vZGUgdCBvcHQpKVxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbQXR0cl0gb2JqZWN0cy4gKilcbmNsYXNzIHR5cGUgYXR0ciA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3BlY2lmaWVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG93bmVyRWxlbWVudCA6IGVsZW1lbnQgdCBwcm9wXG5lbmRcblxuKCoqIFNwZWNpZmljYXRpb24gb2YgW05hbWVkTm9kZU1hcF0gb2JqZWN0cy4gKilcbmFuZCBbJ25vZGVdIG5hbWVkTm9kZU1hcCA9IG9iamVjdFxuICBtZXRob2QgZ2V0TmFtZWRJdGVtIDoganNfc3RyaW5nIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXROYW1lZEl0ZW0gOiAnbm9kZSB0IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlTmFtZWRJdGVtIDoganNfc3RyaW5nIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbRWxlbWVudF0gb2JqZWN0cy4gKilcbmFuZCBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCB0YWdOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0F0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaGFzQXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOb2RlIDoganNfc3RyaW5nIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZU5vZGUgOiBhdHRyIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZU5vZGUgOiBhdHRyIHQgLT4gYXR0ciB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTm9kZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZU5vZGVOUyA6IGF0dHIgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeVRhZ05hbWUgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IG5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0ciBuYW1lZE5vZGVNYXAgdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBjaGFyYWN0ZXJEYXRhID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdWJqc19zdHJpbmdEYXRhIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZERhdGEgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5zZXJ0RGF0YSA6IGludCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRGF0YSA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VEYXRhIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGNvbW1lbnQgPSBjaGFyYWN0ZXJEYXRhXG5cbmNsYXNzIHR5cGUgdGV4dCA9IGNoYXJhY3RlckRhdGFcblxuY2xhc3MgdHlwZSBkb2N1bWVudEZyYWdtZW50ID0gbm9kZVxuXG5jbGFzcyB0eXBlIFsnZWxlbWVudF0gZG9jdW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIGRvY3VtZW50RWxlbWVudCA6ICdlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjcmVhdGVEb2N1bWVudEZyYWdtZW50IDogZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlRWxlbWVudCA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVFbGVtZW50TlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVGV4dE5vZGUgOiBqc19zdHJpbmcgdCAtPiB0ZXh0IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVDb21tZW50IDoganNfc3RyaW5nIHQgLT4gY29tbWVudCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudEJ5SWQgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlUYWdOYW1lIDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgbm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGltcG9ydE5vZGUgOiBlbGVtZW50IHQgLT4gYm9vbCB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBhZG9wdE5vZGUgOiBlbGVtZW50IHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5lbmRcblxudHlwZSBub2RlX3R5cGUgPVxuICB8IEVsZW1lbnQgb2YgZWxlbWVudCB0XG4gIHwgQXR0ciBvZiBhdHRyIHRcbiAgfCBUZXh0IG9mIHRleHQgdFxuICB8IE90aGVyIG9mIG5vZGUgdFxuXG5sZXQgbm9kZVR5cGUgZSA9XG4gIG1hdGNoIGUjIy5ub2RlVHlwZSB3aXRoXG4gIHwgRUxFTUVOVCAtPiBFbGVtZW50IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gIHwgQVRUUklCVVRFIC0+IEF0dHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBDREFUQV9TRUNUSU9OIHwgVEVYVCAtPiBUZXh0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gIHwgXyAtPiBPdGhlciAoZSA6PiBub2RlIHQpXG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBsZXQgY2FzdCAoZSA6ICNub2RlIEpzLnQpIHQgPVxuICAgIGlmIGUjIy5ub2RlVHlwZSA9PSB0IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgZWxlbWVudCBlIDogZWxlbWVudCBKcy50IEpzLm9wdCA9IGNhc3QgZSBFTEVNRU5UXG5cbiAgbGV0IHRleHQgZSA6IHRleHQgSnMudCBKcy5vcHQgPVxuICAgIGlmIGUjIy5ub2RlVHlwZSA9PSBURVhUIHx8IGUjIy5ub2RlVHlwZSA9PSBDREFUQV9TRUNUSU9OXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGF0dHIgZSA6IGF0dHIgSnMudCBKcy5vcHQgPSBjYXN0IGUgQVRUUklCVVRFXG5lbmRcblxudHlwZSAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9ICgnYSwgJ2IgLT4gYm9vbCB0KSBtZXRoX2NhbGxiYWNrIG9wdFxuKCoqIFRoZSB0eXBlIG9mIGV2ZW50IGxpc3RlbmVyIGZ1bmN0aW9ucy4gIFRoZSBmaXJzdCB0eXBlIHBhcmFtZXRlclxuICAgICAgWydhXSBpcyB0aGUgdHlwZSBvZiB0aGUgdGFyZ2V0IG9iamVjdDsgdGhlIHNlY29uZCBwYXJhbWV0ZXJcbiAgICAgIFsnYl0gaXMgdGhlIHR5cGUgb2YgdGhlIGV2ZW50IG9iamVjdC4gKilcblxuY2xhc3MgdHlwZSBbJ2FdIGV2ZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0IDogJ2EgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VGFyZ2V0IDogJ2EgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gICgqIExlZ2FjeSBtZXRob2RzICopXG4gIG1ldGhvZCBzcmNFbGVtZW50IDogJ2EgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gY3VzdG9tRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIGV2ZW50XG5cbiAgbWV0aG9kIGRldGFpbCA6ICdiIEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxubGV0IG5vX2hhbmRsZXIgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9IEpzLm51bGxcblxubGV0IHdpbmRvd19ldmVudCAoKSA6ICdhICNldmVudCB0ID0gSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcImV2ZW50XCJcblxuKCogVGhlIGZ1bmN0aW9uIHByZXZlbnREZWZhdWx0IG11c3QgYmUgY2FsbGVkIGV4cGxpY2l0bHkgd2hlblxuICAgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lci4uLiAqKVxubGV0IGhhbmRsZXIgZiA9XG4gIEpzLnNvbWVcbiAgICAoSnMuVW5zYWZlLmNhbGxiYWNrIChmdW4gZSAtPlxuICAgICAgICAgKCogZGVwZW5kaW5nIG9uIHRoZSBpbnRlcm5ldCBleHBsb3JlciB2ZXJzaW9uLCBlIGNhbiBiZSBudWxsIG9yIHVuZGVmaW5lZC4gKilcbiAgICAgICAgIGlmIG5vdCAoSnMuT3B0LnRlc3QgKHNvbWUgZSkpXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgbGV0IGUgPSB3aW5kb3dfZXZlbnQgKCkgaW5cbiAgICAgICAgICAgbGV0IHJlcyA9IGYgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIGUjIy5yZXR1cm5WYWx1ZSA6PSByZXM7XG4gICAgICAgICAgIHJlcylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbGV0IHJlcyA9IGYgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGUpIyNwcmV2ZW50RGVmYXVsdDtcbiAgICAgICAgICAgcmVzKSlcblxubGV0IGZ1bGxfaGFuZGxlciBmID1cbiAgSnMuc29tZVxuICAgIChKcy5VbnNhZmUubWV0aF9jYWxsYmFjayAoZnVuIHRoaXMgZSAtPlxuICAgICAgICAgKCogZGVwZW5kaW5nIG9uIHRoZSBpbnRlcm5ldCBleHBsb3JlciB2ZXJzaW9uLCBlIGNhbiBiZSBudWxsIG9yIHVuZGVmaW5lZCAqKVxuICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCAoc29tZSBlKSlcbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBsZXQgZSA9IHdpbmRvd19ldmVudCAoKSBpblxuICAgICAgICAgICBsZXQgcmVzID0gZiB0aGlzIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiBlIyMucmV0dXJuVmFsdWUgOj0gcmVzO1xuICAgICAgICAgICByZXMpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGxldCByZXMgPSBmIHRoaXMgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGUpIyNwcmV2ZW50RGVmYXVsdDtcbiAgICAgICAgICAgcmVzKSlcblxubGV0IGludm9rZV9oYW5kbGVyIChmIDogKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIpICh0aGlzIDogJ2EpIChldmVudCA6ICdiKSA6IGJvb2wgdCA9XG4gIEpzLlVuc2FmZS5jYWxsIGYgdGhpcyBbfCBKcy5VbnNhZmUuaW5qZWN0IGV2ZW50IHxdXG5cbmxldCBldmVudFRhcmdldCAoZSA6ICg8IC4uID4gYXMgJ2EpICNldmVudCB0KSA6ICdhIHQgPVxuICBsZXQgdGFyZ2V0ID1cbiAgICBPcHQuZ2V0IGUjIy50YXJnZXQgKGZ1biAoKSAtPiBPcHQuZ2V0IGUjIy5zcmNFbGVtZW50IChmdW4gKCkgLT4gcmFpc2UgTm90X2ZvdW5kKSlcbiAgaW5cbiAgaWYgSnMuaW5zdGFuY2VvZiB0YXJnZXQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Ob2RlXG4gIHRoZW5cbiAgICAoKiBXb3JrYXJvdW5kIGZvciBTYWZhcmkgYnVnICopXG4gICAgbGV0IHRhcmdldCcgOiBub2RlIEpzLnQgPSBKcy5VbnNhZmUuY29lcmNlIHRhcmdldCBpblxuICAgIGlmIHRhcmdldCcjIy5ub2RlVHlwZSA9PSBURVhUXG4gICAgdGhlbiBKcy5VbnNhZmUuY29lcmNlIChPcHQuZ2V0IHRhcmdldCcjIy5wYXJlbnROb2RlIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICBlbHNlIHRhcmdldFxuICBlbHNlIHRhcmdldFxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0eXAgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gIGxldCBtYWtlIHMgPSBKcy5zdHJpbmcgc1xuZW5kXG5cbnR5cGUgZXZlbnRfbGlzdGVuZXJfaWQgPSB1bml0IC0+IHVuaXRcblxuY2xhc3MgdHlwZSBldmVudF9saXN0ZW5lcl9vcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCBjYXB0dXJlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2UgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcGFzc2l2ZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmxldCBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgKGUgOiAoPCAuLiA+IGFzICdhKSB0KSB0eXAgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgaCA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgZSkjIy5hZGRFdmVudExpc3RlbmVyKVxuICB0aGVuXG4gICAgbGV0IGV2ID0gKEpzLnN0cmluZyBcIm9uXCIpIyNjb25jYXQgdHlwIGluXG4gICAgbGV0IGNhbGxiYWNrIGUgPSBKcy5VbnNhZmUuY2FsbCAoaCwgZSwgW3x8XSkgaW5cbiAgICBsZXQgKCkgPSAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjYXR0YWNoRXZlbnQgZXYgY2FsbGJhY2sgaW5cbiAgICBmdW4gKCkgLT4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI2RldGFjaEV2ZW50IGV2IGNhbGxiYWNrXG4gIGVsc2VcbiAgICBsZXQgb3B0cyA6IGV2ZW50X2xpc3RlbmVyX29wdGlvbnMgdCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICAgIGxldCBpdGVyIHQgZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGIgLT4gZiBiXG4gICAgaW5cbiAgICBpdGVyIGNhcHR1cmUgKGZ1biBiIC0+IG9wdHMjIy5jYXB0dXJlIDo9IGIpO1xuICAgIGl0ZXIgb25jZSAoZnVuIGIgLT4gb3B0cyMjLm9uY2UgOj0gYik7XG4gICAgaXRlciBwYXNzaXZlIChmdW4gYiAtPiBvcHRzIyMucGFzc2l2ZSA6PSBiKTtcbiAgICBsZXQgKCkgPSAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjYWRkRXZlbnRMaXN0ZW5lciB0eXAgaCBvcHRzIGluXG4gICAgZnVuICgpIC0+IChKcy5VbnNhZmUuY29lcmNlIGUpIyNyZW1vdmVFdmVudExpc3RlbmVyIHR5cCBoIG9wdHNcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgKGUgOiAoPCAuLiA+IGFzICdhKSB0KSB0eXAgaCBjYXB0ID1cbiAgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIGUgdHlwIH5jYXB0dXJlOmNhcHQgaFxuXG5sZXQgcmVtb3ZlRXZlbnRMaXN0ZW5lciBpZCA9IGlkICgpXG5cbmxldCBwcmV2ZW50RGVmYXVsdCBldiA9XG4gIGlmIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGV2KSMjLnByZXZlbnREZWZhdWx0ICgqIElFIGhhY2sgKilcbiAgdGhlbiAoSnMuVW5zYWZlLmNvZXJjZSBldikjI3ByZXZlbnREZWZhdWx0XG4gIGVsc2UgKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyMucmV0dXJuVmFsdWUgOj0gSnMuYm9vbCBmYWxzZVxuXG5sZXQgY3JlYXRlQ3VzdG9tRXZlbnQgP2J1YmJsZXMgP2NhbmNlbGFibGUgP2RldGFpbCB0eXAgPVxuICBsZXQgb3B0X2l0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGxldCBvcHRzID0gVW5zYWZlLm9iaiBbfHxdIGluXG4gIG9wdF9pdGVyIChmdW4geCAtPiBvcHRzIyMuYnViYmxlcyA6PSBib29sIHgpIGJ1YmJsZXM7XG4gIG9wdF9pdGVyIChmdW4geCAtPiBvcHRzIyMuY2FuY2VsYWJsZSA6PSBib29sIHgpIGNhbmNlbGFibGU7XG4gIG9wdF9pdGVyIChmdW4geCAtPiBvcHRzIyMuZGV0YWlsIDo9IHNvbWUgeCkgZGV0YWlsO1xuICBsZXQgY29uc3RyIDpcbiAgICAgICggICAoJ2EsICdiKSAjY3VzdG9tRXZlbnQgSnMudCBFdmVudC50eXBcbiAgICAgICAtPiA8IGRldGFpbCA6ICdiIG9wdCBwcm9wID4gdFxuICAgICAgIC0+ICgnYSwgJ2IpIGN1c3RvbUV2ZW50IHQpXG4gICAgICBjb25zdHIgPVxuICAgIFVuc2FmZS5nbG9iYWwjIy5fQ3VzdG9tRXZlbnRcbiAgaW5cbiAgbmV3JWpzIGNvbnN0ciB0eXAgb3B0c1xuXG4oKiBJRSA8IDkgKilcblxuY2xhc3MgdHlwZSBzdHJpbmdMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRhaW5zIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMiBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcbm9wZW4gSnNcblxudHlwZSB1aW50MzIgPSBmbG9hdFxuXG5jbGFzcyB0eXBlIGFycmF5QnVmZmVyID0gb2JqZWN0XG4gIG1ldGhvZCBieXRlTGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGFycmF5QnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV90b0VuZCA6IGludCAtPiBhcnJheUJ1ZmZlciB0IG1ldGhcbmVuZFxuXG5sZXQgYXJyYXlCdWZmZXIgOiAoaW50IC0+IGFycmF5QnVmZmVyIHQpIGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fQXJyYXlCdWZmZXJcblxuY2xhc3MgdHlwZSBhcnJheUJ1ZmZlclZpZXcgPSBvYmplY3RcbiAgbWV0aG9kIGJ1ZmZlciA6IGFycmF5QnVmZmVyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBieXRlT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnl0ZUxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSB0eXBlZEFycmF5ID0gb2JqZWN0XG4gIGluaGVyaXQgYXJyYXlCdWZmZXJWaWV3XG5cbiAgbWV0aG9kIF9CWVRFU19QRVJfRUxFTUVOVCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldF9mcm9tQXJyYXkgOiAnYSBqc19hcnJheSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0X2Zyb21UeXBlZEFycmF5IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3ViYXJyYXkgOiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHN1YmFycmF5X3RvRW5kIDogaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV90b0VuZCA6IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gICgqIFRoaXMgZmFrZSBtZXRob2QgaXMgbmVlZGVkIGZvciB0eXBpbmcgcHVycG9zZXMuXG4gICAgIFdpdGhvdXQgaXQsIFsnYl0gd291bGQgbm90IGJlIGNvbnN0cmFpbmVkLiAqKVxuICBtZXRob2QgX2NvbnRlbnRfdHlwZV8gOiAnYiBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbnR5cGUgaW50OEFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50OF9zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDhBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgaW50MTZBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDE2X3NpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50MTZBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDE2X3Vuc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGludDMyQXJyYXkgPSAoaW50MzIsIEJpZ2FycmF5LmludDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQzMkFycmF5ID0gKGludDMyLCBCaWdhcnJheS5pbnQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBmbG9hdDMyQXJyYXkgPSAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgZmxvYXQ2NEFycmF5ID0gKGZsb2F0LCBCaWdhcnJheS5mbG9hdDY0X2VsdCkgdHlwZWRBcnJheVxuXG5leHRlcm5hbCBraW5kIDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+ICgnYSwgJ2IpIEJpZ2FycmF5LmtpbmRcbiAgPSBcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVwiXG5cbmV4dGVybmFsIGZyb21fZ2VuYXJyYXkgOlxuICAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHRcbiAgPSBcImNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcIlxuXG5leHRlcm5hbCB0b19nZW5hcnJheSA6XG4gICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudFxuICA9IFwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5XCJcblxubGV0IGludDhBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfZnJvbUFycmF5ID0gaW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tQnVmZmVyID0gaW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfaW5CdWZmZXIgPSBpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1VpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfZnJvbUFycmF5ID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfZnJvbUJ1ZmZlciA9IHVpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfaW5CdWZmZXIgPSB1aW50OEFycmF5XG5cbmxldCBpbnQxNkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2Zyb21BcnJheSA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBpbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2Zyb21CdWZmZXIgPSBpbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2luQnVmZmVyID0gaW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1VpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tQXJyYXkgPSB1aW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSB1aW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfZnJvbUJ1ZmZlciA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9pbkJ1ZmZlciA9IHVpbnQxNkFycmF5XG5cbmxldCBpbnQzMkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2Zyb21BcnJheSA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBpbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2Zyb21CdWZmZXIgPSBpbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2luQnVmZmVyID0gaW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1VpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tQXJyYXkgPSB1aW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSB1aW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfZnJvbUJ1ZmZlciA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9pbkJ1ZmZlciA9IHVpbnQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2Zyb21BcnJheSA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2Zyb21UeXBlZEFycmF5ID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbUJ1ZmZlciA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2luQnVmZmVyID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2Zyb21BcnJheSA9IGZsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2Zyb21UeXBlZEFycmF5ID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbUJ1ZmZlciA9IGZsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2luQnVmZmVyID0gZmxvYXQ2NEFycmF5XG5cbmxldCBzZXQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPVxuIGZ1biBhIGkgdiAtPiBhcnJheV9zZXQgKFVuc2FmZS5jb2VyY2UgYSkgaSB2XG5cbmxldCBnZXQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+ICdhIG9wdGRlZiA9IGZ1biBhIGkgLT4gSnMuVW5zYWZlLmdldCBhIGlcblxubGV0IHVuc2FmZV9nZXQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+ICdhID0gZnVuIGEgaSAtPiBKcy5VbnNhZmUuZ2V0IGEgaVxuXG5jbGFzcyB0eXBlIGRhdGFWaWV3ID0gb2JqZWN0XG4gIGluaGVyaXQgYXJyYXlCdWZmZXJWaWV3XG5cbiAgbWV0aG9kIGdldEludDggOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDggOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MTYgOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MTZfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MTYgOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDE2XyA6IGludCAtPiBib29sIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MzIgOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MzJfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MzIgOiBpbnQgLT4gdWludDMyIG1ldGhcblxuICBtZXRob2QgZ2V0VWludDMyXyA6IGludCAtPiBib29sIHQgLT4gdWludDMyIG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQzMiA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0MzJfIDogaW50IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0NjQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDY0XyA6IGludCAtPiBib29sIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQ4IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDggOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQxNiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDE2XyA6IGludCAtPiBpbnQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MTYgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MTZfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDMyIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MzJfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQzMiA6IGludCAtPiB1aW50MzIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQzMl8gOiBpbnQgLT4gdWludDMyIC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQzMiA6IGludCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQzMl8gOiBpbnQgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDY0IDogaW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDY0XyA6IGludCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxubGV0IGRhdGFWaWV3ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9EYXRhVmlld1xuXG5sZXQgZGF0YVZpZXdfaW5CdWZmZXIgPSBkYXRhVmlld1xuXG5tb2R1bGUgQmlnc3RyaW5nID0gc3RydWN0XG4gIHR5cGUgdCA9IChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbiAgZXh0ZXJuYWwgdG9fYXJyYXlCdWZmZXIgOiB0IC0+IGFycmF5QnVmZmVyIEpzLnQgPSBcImJpZ3N0cmluZ190b19hcnJheV9idWZmZXJcIlxuXG4gIGV4dGVybmFsIHRvX3VpbnQ4QXJyYXkgOiB0IC0+IHVpbnQ4QXJyYXkgSnMudCA9IFwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBvZl9hcnJheUJ1ZmZlciA6IGFycmF5QnVmZmVyIEpzLnQgLT4gdCA9IFwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlclwiXG5cbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgSnMudCAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcIlxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2FycmF5XCJcblxuICBsZXQgb2ZfYXJyYXlCdWZmZXIgYWIgPVxuICAgIGxldCB1aW50OCA9IG5ldyVqcyB1aW50OEFycmF5X2Zyb21CdWZmZXIgYWIgaW5cbiAgICBvZl91aW50OEFycmF5IHVpbnQ4XG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21cbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGJsb2IgPSBvYmplY3RcbiAgbWV0aG9kIHNpemUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGJsb2IgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3dpdGhDb250ZW50VHlwZSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gYmxvYiB0IG1ldGhcbmVuZFxuXG5sZXQgYmxvYl9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0Jsb2JcblxudHlwZSAnYSBtYWtlX2Jsb2IgPVxuICA/Y29udGVudFR5cGU6c3RyaW5nIC0+ID9lbmRpbmdzOlsgYFRyYW5zcGFyZW50IHwgYE5hdGl2ZSBdIC0+ICdhIC0+IGJsb2IgdFxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB2IDo6IHEgLT4gKFxuICAgICAgbWF0Y2ggZiB2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgcVxuICAgICAgfCBTb21lIHYnIC0+IHYnIDo6IGZpbHRlcl9tYXAgZiBxKVxuXG5sZXQgbWFrZV9ibG9iX29wdGlvbnMgY29udGVudFR5cGUgZW5kaW5ncyA9XG4gIGxldCBvcHRpb25zID1cbiAgICBmaWx0ZXJfbWFwXG4gICAgICAoZnVuIChuYW1lLCB2KSAtPlxuICAgICAgICBtYXRjaCB2IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHYgLT4gU29tZSAobmFtZSwgVW5zYWZlLmluamVjdCAoc3RyaW5nIHYpKSlcbiAgICAgIFsgXCJ0eXBlXCIsIGNvbnRlbnRUeXBlXG4gICAgICA7ICggXCJlbmRpbmdzXCJcbiAgICAgICAgLCBtYXRjaCBlbmRpbmdzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBgVHJhbnNwYXJlbnQgLT4gU29tZSBcInRyYW5zcGFyZW50XCJcbiAgICAgICAgICB8IFNvbWUgYE5hdGl2ZSAtPiBTb21lIFwibmF0aXZlXCIgKVxuICAgICAgXVxuICBpblxuICBtYXRjaCBvcHRpb25zIHdpdGhcbiAgfCBbXSAtPiB1bmRlZmluZWRcbiAgfCBsIC0+IFVuc2FmZS5vYmogKEFycmF5Lm9mX2xpc3QgbClcblxubGV0IGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBhID1cbiAgbGV0IG9wdGlvbnMgPSBtYWtlX2Jsb2Jfb3B0aW9ucyBjb250ZW50VHlwZSBlbmRpbmdzIGluXG4gIG5ldyVqcyBibG9iX2NvbnN0ciAoYXJyYXkgYSkgb3B0aW9uc1xuXG5sZXQgYmxvYl9mcm9tX3N0cmluZyA/Y29udGVudFR5cGUgP2VuZGluZ3MgcyA9XG4gIGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBbfCBzdHJpbmcgcyB8XVxuXG5sZXQgYmxvYl9mcm9tX2FueSA/Y29udGVudFR5cGUgP2VuZGluZ3MgbCA9XG4gIGxldCBsID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgYGFycmF5QnVmZmVyIGEgLT4gVW5zYWZlLmluamVjdCBhXG4gICAgICAgIHwgYGFycmF5QnVmZmVyVmlldyBhIC0+IFVuc2FmZS5pbmplY3QgYVxuICAgICAgICB8IGBzdHJpbmcgcyAtPiBVbnNhZmUuaW5qZWN0IChzdHJpbmcgcylcbiAgICAgICAgfCBganNfc3RyaW5nIHMgLT4gVW5zYWZlLmluamVjdCBzXG4gICAgICAgIHwgYGJsb2IgYiAtPiBVbnNhZmUuaW5qZWN0IGIpXG4gICAgICBsXG4gIGluXG4gIGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyAoQXJyYXkub2ZfbGlzdCBsKVxuXG5jbGFzcyB0eXBlIGZpbGUgPSBvYmplY3RcbiAgaW5oZXJpdCBibG9iXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RNb2RpZmllZERhdGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW4gZmlyZWZveCAzLjAtMy41IGZpbGUubmFtZSBpcyBub3QgYXZhaWxhYmxlLCB3ZSB1c2UgdGhlIG5vbnN0YW5kYXJkIGZpbGVOYW1lIGluc3RlYWQgKilcbmNsYXNzIHR5cGUgZmlsZV9uYW1lX29ubHkgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxlTmFtZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGZpbGVuYW1lIGZpbGUgPVxuICBsZXQgZmlsZSA6IGZpbGVfbmFtZV9vbmx5IHQgPSBKcy5VbnNhZmUuY29lcmNlIGZpbGUgaW5cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBmaWxlIyMubmFtZSB3aXRoXG4gIHwgTm9uZSAtPiAoXG4gICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGZpbGUjIy5maWxlTmFtZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJjYW4ndCByZXRyaWV2ZSBmaWxlIG5hbWU6IG5vdCBpbXBsZW1lbnRlZFwiXG4gICAgICB8IFNvbWUgbmFtZSAtPiBuYW1lKVxuICB8IFNvbWUgbmFtZSAtPiBuYW1lXG5cbnR5cGUgZmlsZV9hbnkgPSA8ID4gdFxuXG5sZXQgZG9jX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRG9jdW1lbnRcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGV4dGVybmFsIGpzb24gOiBmaWxlX2FueSAtPiAnYSBPcHQudCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgZG9jdW1lbnQgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBkb2NfY29uc3RyXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBlbGVtZW50IGRvY3VtZW50IHQpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGJsb2IgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBibG9iX2NvbnN0ciB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6ICNibG9iIHQpIGVsc2UgSnMubnVsbFxuXG4gIGxldCBzdHJpbmcgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIEpzLmVxdWFscyAodHlwZW9mIGUpIChzdHJpbmcgXCJzdHJpbmdcIilcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IGpzX3N0cmluZyB0KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhcnJheUJ1ZmZlciAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIFR5cGVkX2FycmF5LmFycmF5QnVmZmVyXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0KVxuICAgIGVsc2UgSnMubnVsbFxuZW5kXG5cbmNsYXNzIHR5cGUgZmlsZUxpc3QgPSBvYmplY3RcbiAgaW5oZXJpdCBbZmlsZV0gRG9tLm5vZGVMaXN0XG5lbmRcblxuY2xhc3MgdHlwZSBmaWxlRXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIGNvZGUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBwcm9ncmVzc0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBldmVudFxuXG4gIG1ldGhvZCBsZW5ndGhDb21wdXRhYmxlIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9hZGVkIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG90YWwgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcHJvZ3Jlc3NFdmVudFRhcmdldCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbmxvYWRzdGFydCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucHJvZ3Jlc3MgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFib3J0IDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVuZCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBFTVBUWVxuICB8IExPQURJTkdcbiAgfCBET05FXG5cbmNsYXNzIHR5cGUgZmlsZVJlYWRlciA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCByZWFkQXNBcnJheUJ1ZmZlciA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc0JpbmFyeVN0cmluZyA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc1RleHQgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNUZXh0X3dpdGhFbmNvZGluZyA6ICNibG9iIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc0RhdGFVUkwgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3VsdCA6IGZpbGVfYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZXJyb3IgOiBmaWxlRXJyb3IgdCByZWFkb25seV9wcm9wXG5cbiAgaW5oZXJpdCBwcm9ncmVzc0V2ZW50VGFyZ2V0XG5lbmRcblxubW9kdWxlIFJlYWRlckV2ZW50ID0gc3RydWN0XG4gIHR5cGUgdHlwID0gZmlsZVJlYWRlciBwcm9ncmVzc0V2ZW50IHQgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCBsb2Fkc3RhcnQgPSBFdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBFdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCBhYm9ydCA9IEV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IGVycm9yID0gRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgbG9hZCA9IEV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgbG9hZGVuZCA9IEV2ZW50Lm1ha2UgXCJsb2FkZW5kXCJcbmVuZFxuXG5sZXQgZmlsZVJlYWRlciA6IGZpbGVSZWFkZXIgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ZpbGVSZWFkZXJcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5leHRlcm5hbCBjYW1sX2pzX29uX2llIDogdW5pdCAtPiBib29sIHQgPSBcImNhbWxfanNfb25faWVcIlxuXG5sZXQgb25JRSA9IEpzLnRvX2Jvb2wgKGNhbWxfanNfb25faWUgKCkpXG5cbmV4dGVybmFsIGh0bWxfZXNjYXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfaHRtbF9lc2NhcGVcIlxuXG5leHRlcm5hbCBkZWNvZGVfaHRtbF9lbnRpdGllcyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX2h0bWxfZW50aXRpZXNcIlxuXG5jbGFzcyB0eXBlIGNzc1N0eWxlRGVjbGFyYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIHNldFByb3BlcnR5IDpcbiAgICBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHRkZWYgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9wZXJ0eVZhbHVlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9wZXJ0eVByaW9yaXR5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVQcm9wZXJ0eSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYW5pbWF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EZWxheSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EdXJhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRmlsbE1vZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25OYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25QbGF5U3RhdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kQXR0YWNobWVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kSW1hZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRQb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZFJlcGVhdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbUNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21TdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckNvbGxhcHNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmFkaXVzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2FwdGlvblNpZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsZWFyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGlwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY291bnRlckluY3JlbWVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY291bnRlclJlc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjc3NGbG9hdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3NzVGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3Vyc29yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc3BsYXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVtcHR5Q2VsbHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRGYW1pbHkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRTaXplIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRWYXJpYW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250V2VpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxldHRlclNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVIZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlSW1hZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZVBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpblRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWF4SGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWluSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3BhY2l0eSA6IGpzX3N0cmluZyB0IG9wdGRlZiBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZU9mZnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZVN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvd1ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93WSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ0JvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ0xlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdSaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ1RvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFnZUJyZWFrQWZ0ZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZ2VCcmVha0JlZm9yZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcG9pbnRlckV2ZW50cyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJsZUxheW91dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QW5jaG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0RGVjb3JhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEluZGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dFRyYW5zZm9ybSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZlcnRpY2FsQWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZpc2liaWxpdHkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdoaXRlU3BhY2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3b3JkU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgekluZGV4IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbnR5cGUgKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSAoJ2EsICdiKSBEb20uZXZlbnRfbGlzdGVuZXJcblxudHlwZSBtb3VzZV9idXR0b24gPVxuICB8IE5vX2J1dHRvblxuICB8IExlZnRfYnV0dG9uXG4gIHwgTWlkZGxlX2J1dHRvblxuICB8IFJpZ2h0X2J1dHRvblxuXG50eXBlIGRlbHRhX21vZGUgPVxuICB8IERlbHRhX3BpeGVsXG4gIHwgRGVsdGFfbGluZVxuICB8IERlbHRhX3BhZ2VcblxuY2xhc3MgdHlwZSBldmVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZXZlbnRcbmVuZFxuXG5hbmQgWydhXSBjdXN0b21FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50LCAnYV0gRG9tLmN1c3RvbUV2ZW50XG5lbmRcblxuYW5kIGZvY3VzRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5YIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ1dHRvbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoaWNoIDogbW91c2VfYnV0dG9uIG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZyb21FbGVtZW50IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b0VsZW1lbnQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VYIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VZIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGtleWJvYXJkRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9jYXRpb24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXkgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hpY2ggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhckNvZGUgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5Q29kZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldE1vZGlmaWVyU3RhdGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBrZXlJZGVudGlmaWVyIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2V3aGVlbEV2ZW50ID0gb2JqZWN0XG4gICgqIEFsbCBtb2Rlcm4gYnJvd3NlcnMgKilcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIHdoZWVsRGVsdGEgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhWCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhWSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFaIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YU1vZGUgOiBkZWx0YV9tb2RlIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2VTY3JvbGxFdmVudCA9IG9iamVjdFxuICAoKiBGaXJlZm94ICopXG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBkZXRhaWwgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBheGlzIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9IT1JJWk9OVEFMX0FYSVMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRJQ0FMX0FYSVMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdG91Y2hFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldFRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYW5nZWRUb3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdG91Y2hMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IHRvdWNoIHQgb3B0ZGVmIG1ldGhcbmVuZFxuXG5hbmQgdG91Y2ggPSBvYmplY3RcbiAgbWV0aG9kIGlkZW50aWZpZXIgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBlbGVtZW50IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdWJtaXRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHN1Ym1pdHRlciA6IGVsZW1lbnQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBkcmFnRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIGRhdGFUcmFuc2ZlciA6IGRhdGFUcmFuc2ZlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2xpcGJvYXJkRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBjbGlwYm9hcmREYXRhIDogZGF0YVRyYW5zZmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBkYXRhVHJhbnNmZXIgPSBvYmplY3RcbiAgbWV0aG9kIGRyb3BFZmZlY3QgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVmZmVjdEFsbG93ZWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHlwZXMgOiBqc19zdHJpbmcgdCBqc19hcnJheSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWRkRWxlbWVudCA6IGVsZW1lbnQgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEYXRhIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGF0YV9hbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0RGF0YSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgc2V0RGF0YSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXREcmFnSW1hZ2UgOiBlbGVtZW50IHQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgZXZlbnRUYXJnZXQgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25jbGljayA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZGJsY2xpY2sgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlZG93biA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2V1cCA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2VvdmVyIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW1vdmUgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlb3V0IDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXlwcmVzcyA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5ZG93biA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5dXAgOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNjcm9sbCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndoZWVsIDogKCdzZWxmIHQsIG1vdXNld2hlZWxFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdzdGFydCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnZW5kIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdlbnRlciA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnb3ZlciA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnbGVhdmUgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZyA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcm9wIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbnN0YXJ0IDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uZW5kIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uaXRlcmF0aW9uIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uY2FuY2VsIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbnJ1biA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uc3RhcnQgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbmVuZCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uY2FuY2VsIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmdvdHBvaW50ZXJjYXB0dXJlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvc3Rwb2ludGVyY2FwdHVyZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyZW50ZXIgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmNhbmNlbCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyZG93biA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVybGVhdmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm1vdmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm91dCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyb3ZlciA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVydXAgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGRpc3BhdGNoRXZlbnQgOiBldmVudCB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcblxuYW5kIHBvcFN0YXRlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBzdGF0ZSA6IEpzLlVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBwb2ludGVyRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIHBvaW50ZXJJZCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNzdXJlIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YW5nZW50aWFsUHJlc3N1cmUgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbHRYIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGlsdFkgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0d2lzdCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvaW50ZXJUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc1ByaW1hcnkgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdG9yYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBrZXkgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbGRWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXJsIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdG9yYWdlQXJlYSA6IHN0b3JhZ2UgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdG9yYWdlID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXkgOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0SXRlbSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEl0ZW0gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlSXRlbSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhciA6IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBoYXNoQ2hhbmdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBvbGRVUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ld1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgYW5pbWF0aW9uRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBhbmltYXRpb25OYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbGFwc2VkVGltZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHNldWRvRWxlbWVudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdHJhbnNpdGlvbkV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcHJvcGVydHlOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbGFwc2VkVGltZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHNldWRvRWxlbWVudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbWVkaWFFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5lbmRcblxuYW5kIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBVbnNhZmUuYW55IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNvdXJjZSA6IFVuc2FmZS5hbnkgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbm9kZVNlbGVjdG9yID0gb2JqZWN0XG4gIG1ldGhvZCBxdWVyeVNlbGVjdG9yIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHF1ZXJ5U2VsZWN0b3JBbGwgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcbmVuZFxuXG5hbmQgdG9rZW5MaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGpzX3N0cmluZyB0IG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIGNvbnRhaW5zIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgYWRkIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0b2dnbGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZmllciA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5hbmQgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbS5lbGVtZW50XG5cbiAgaW5oZXJpdCBub2RlU2VsZWN0b3JcblxuICBtZXRob2QgaWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsYXNzTmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xhc3NMaXN0IDogdG9rZW5MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZXN0IDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHN0eWxlIDogY3NzU3R5bGVEZWNsYXJhdGlvbiB0IHByb3BcblxuICBtZXRob2QgaW5uZXJIVE1MIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRlckhUTUwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRDb250ZW50IDoganNfc3RyaW5nIHQgb3B0IHByb3BcblxuICBtZXRob2QgaW5uZXJUZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRMZWZ0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50VG9wIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50V2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRMZWZ0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0VG9wIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0UGFyZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0SGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Nyb2xsTGVmdCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbFRvcCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbFdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsSGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgZ2V0Q2xpZW50UmVjdHMgOiBjbGllbnRSZWN0TGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IDogY2xpZW50UmVjdCB0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsSW50b1ZpZXcgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsaWNrIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvY3VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsdXIgOiB1bml0IG1ldGhcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxuYW5kIGNsaWVudFJlY3QgPSBvYmplY3RcbiAgbWV0aG9kIHRvcCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmlnaHQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvdHRvbSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVmdCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjbGllbnRSZWN0TGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBjbGllbnRSZWN0IHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgbm9faGFuZGxlciA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gRG9tLm5vX2hhbmRsZXJcblxubGV0IGhhbmRsZXIgPSBEb20uaGFuZGxlclxuXG5sZXQgZnVsbF9oYW5kbGVyID0gRG9tLmZ1bGxfaGFuZGxlclxuXG5sZXQgaW52b2tlX2hhbmRsZXIgPSBEb20uaW52b2tlX2hhbmRsZXJcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdHlwID0gJ2EgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCBjbGljayA9IERvbS5FdmVudC5tYWtlIFwiY2xpY2tcIlxuXG4gIGxldCBjb3B5ID0gRG9tLkV2ZW50Lm1ha2UgXCJjb3B5XCJcblxuICBsZXQgY3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJjdXRcIlxuXG4gIGxldCBwYXN0ZSA9IERvbS5FdmVudC5tYWtlIFwicGFzdGVcIlxuXG4gIGxldCBkYmxjbGljayA9IERvbS5FdmVudC5tYWtlIFwiZGJsY2xpY2tcIlxuXG4gIGxldCBtb3VzZWRvd24gPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlZG93blwiXG5cbiAgbGV0IG1vdXNldXAgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNldXBcIlxuXG4gIGxldCBtb3VzZW92ZXIgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlb3ZlclwiXG5cbiAgbGV0IG1vdXNlbW92ZSA9IERvbS5FdmVudC5tYWtlIFwibW91c2Vtb3ZlXCJcblxuICBsZXQgbW91c2VvdXQgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlb3V0XCJcblxuICBsZXQga2V5cHJlc3MgPSBEb20uRXZlbnQubWFrZSBcImtleXByZXNzXCJcblxuICBsZXQga2V5ZG93biA9IERvbS5FdmVudC5tYWtlIFwia2V5ZG93blwiXG5cbiAgbGV0IGtleXVwID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXl1cFwiXG5cbiAgbGV0IG1vdXNld2hlZWwgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNld2hlZWxcIlxuXG4gIGxldCB3aGVlbCA9IERvbS5FdmVudC5tYWtlIFwid2hlZWxcIlxuXG4gIGxldCBfRE9NTW91c2VTY3JvbGwgPSBEb20uRXZlbnQubWFrZSBcIkRPTU1vdXNlU2Nyb2xsXCJcblxuICBsZXQgdG91Y2hzdGFydCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hzdGFydFwiXG5cbiAgbGV0IHRvdWNobW92ZSA9IERvbS5FdmVudC5tYWtlIFwidG91Y2htb3ZlXCJcblxuICBsZXQgdG91Y2hlbmQgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoZW5kXCJcblxuICBsZXQgdG91Y2hjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoY2FuY2VsXCJcblxuICBsZXQgZHJhZ3N0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnc3RhcnRcIlxuXG4gIGxldCBkcmFnZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnZW5kXCJcblxuICBsZXQgZHJhZ2VudGVyID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnZW50ZXJcIlxuXG4gIGxldCBkcmFnb3ZlciA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ292ZXJcIlxuXG4gIGxldCBkcmFnbGVhdmUgPSBEb20uRXZlbnQubWFrZSBcImRyYWdsZWF2ZVwiXG5cbiAgbGV0IGRyYWcgPSBEb20uRXZlbnQubWFrZSBcImRyYWdcIlxuXG4gIGxldCBkcm9wID0gRG9tLkV2ZW50Lm1ha2UgXCJkcm9wXCJcblxuICBsZXQgaGFzaGNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiaGFzaGNoYW5nZVwiXG5cbiAgbGV0IGNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiY2hhbmdlXCJcblxuICBsZXQgaW5wdXQgPSBEb20uRXZlbnQubWFrZSBcImlucHV0XCJcblxuICBsZXQgdGltZXVwZGF0ZSA9IERvbS5FdmVudC5tYWtlIFwidGltZXVwZGF0ZVwiXG5cbiAgbGV0IHN1Ym1pdCA9IERvbS5FdmVudC5tYWtlIFwic3VibWl0XCJcblxuICBsZXQgc2Nyb2xsID0gRG9tLkV2ZW50Lm1ha2UgXCJzY3JvbGxcIlxuXG4gIGxldCBmb2N1cyA9IERvbS5FdmVudC5tYWtlIFwiZm9jdXNcIlxuXG4gIGxldCBibHVyID0gRG9tLkV2ZW50Lm1ha2UgXCJibHVyXCJcblxuICBsZXQgbG9hZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IHVubG9hZCA9IERvbS5FdmVudC5tYWtlIFwidW5sb2FkXCJcblxuICBsZXQgYmVmb3JldW5sb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJiZWZvcmV1bmxvYWRcIlxuXG4gIGxldCByZXNpemUgPSBEb20uRXZlbnQubWFrZSBcInJlc2l6ZVwiXG5cbiAgbGV0IG9yaWVudGF0aW9uY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJvcmllbnRhdGlvbmNoYW5nZVwiXG5cbiAgbGV0IHBvcHN0YXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb3BzdGF0ZVwiXG5cbiAgbGV0IGVycm9yID0gRG9tLkV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGFib3J0ID0gRG9tLkV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IHNlbGVjdCA9IERvbS5FdmVudC5tYWtlIFwic2VsZWN0XCJcblxuICBsZXQgb25saW5lID0gRG9tLkV2ZW50Lm1ha2UgXCJvbmxpbmVcIlxuXG4gIGxldCBvZmZsaW5lID0gRG9tLkV2ZW50Lm1ha2UgXCJvZmZsaW5lXCJcblxuICBsZXQgY2hlY2tpbmcgPSBEb20uRXZlbnQubWFrZSBcImNoZWNraW5nXCJcblxuICBsZXQgbm91cGRhdGUgPSBEb20uRXZlbnQubWFrZSBcIm5vdXBkYXRlXCJcblxuICBsZXQgZG93bmxvYWRpbmcgPSBEb20uRXZlbnQubWFrZSBcImRvd25sb2FkaW5nXCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBEb20uRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgdXBkYXRlcmVhZHkgPSBEb20uRXZlbnQubWFrZSBcInVwZGF0ZXJlYWR5XCJcblxuICBsZXQgY2FjaGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJjYWNoZWRcIlxuXG4gIGxldCBvYnNvbGV0ZSA9IERvbS5FdmVudC5tYWtlIFwib2Jzb2xldGVcIlxuXG4gIGxldCBkb21Db250ZW50TG9hZGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJET01Db250ZW50TG9hZGVkXCJcblxuICBsZXQgYW5pbWF0aW9uc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbnN0YXJ0XCJcblxuICBsZXQgYW5pbWF0aW9uZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25lbmRcIlxuXG4gIGxldCBhbmltYXRpb25pdGVyYXRpb24gPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbml0ZXJhdGlvblwiXG5cbiAgbGV0IGFuaW1hdGlvbmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uY2FuY2VsXCJcblxuICBsZXQgdHJhbnNpdGlvbnJ1biA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbnJ1blwiXG5cbiAgbGV0IHRyYW5zaXRpb25zdGFydCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbnN0YXJ0XCJcblxuICBsZXQgdHJhbnNpdGlvbmVuZCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbmVuZFwiXG5cbiAgbGV0IHRyYW5zaXRpb25jYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25jYW5jZWxcIlxuXG4gIGxldCBjYW5wbGF5ID0gRG9tLkV2ZW50Lm1ha2UgXCJjYW5wbGF5XCJcblxuICBsZXQgY2FucGxheXRocm91Z2ggPSBEb20uRXZlbnQubWFrZSBcImNhbnBsYXl0aHJvdWdoXCJcblxuICBsZXQgZHVyYXRpb25jaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcImR1cmF0aW9uY2hhbmdlXCJcblxuICBsZXQgZW1wdGllZCA9IERvbS5FdmVudC5tYWtlIFwiZW1wdGllZFwiXG5cbiAgbGV0IGVuZGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJlbmRlZFwiXG5cbiAgbGV0IGdvdHBvaW50ZXJjYXB0dXJlID0gRG9tLkV2ZW50Lm1ha2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiXG5cbiAgbGV0IGxvYWRlZGRhdGEgPSBEb20uRXZlbnQubWFrZSBcImxvYWRlZGRhdGFcIlxuXG4gIGxldCBsb2FkZWRtZXRhZGF0YSA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVkbWV0YWRhdGFcIlxuXG4gIGxldCBsb2Fkc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IGxvc3Rwb2ludGVyY2FwdHVyZSA9IERvbS5FdmVudC5tYWtlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCJcblxuICBsZXQgbWVzc2FnZSA9IERvbS5FdmVudC5tYWtlIFwibWVzc2FnZVwiXG5cbiAgbGV0IHBhdXNlID0gRG9tLkV2ZW50Lm1ha2UgXCJwYXVzZVwiXG5cbiAgbGV0IHBsYXkgPSBEb20uRXZlbnQubWFrZSBcInBsYXlcIlxuXG4gIGxldCBwbGF5aW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJwbGF5aW5nXCJcblxuICBsZXQgcG9pbnRlcmVudGVyID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyZW50ZXJcIlxuXG4gIGxldCBwb2ludGVyY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyY2FuY2VsXCJcblxuICBsZXQgcG9pbnRlcmRvd24gPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJkb3duXCJcblxuICBsZXQgcG9pbnRlcmxlYXZlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVybGVhdmVcIlxuXG4gIGxldCBwb2ludGVybW92ZSA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm1vdmVcIlxuXG4gIGxldCBwb2ludGVyb3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyb3V0XCJcblxuICBsZXQgcG9pbnRlcm92ZXIgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJvdmVyXCJcblxuICBsZXQgcG9pbnRlcnVwID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVydXBcIlxuXG4gIGxldCByYXRlY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJyYXRlY2hhbmdlXCJcblxuICBsZXQgc2Vla2VkID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWVrZWRcIlxuXG4gIGxldCBzZWVraW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWVraW5nXCJcblxuICBsZXQgc3RhbGxlZCA9IERvbS5FdmVudC5tYWtlIFwic3RhbGxlZFwiXG5cbiAgbGV0IHN1c3BlbmQgPSBEb20uRXZlbnQubWFrZSBcInN1c3BlbmRcIlxuXG4gIGxldCB2b2x1bWVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInZvbHVtZWNoYW5nZVwiXG5cbiAgbGV0IHdhaXRpbmcgPSBEb20uRXZlbnQubWFrZSBcIndhaXRpbmdcIlxuXG4gIGxldCBtYWtlID0gRG9tLkV2ZW50Lm1ha2VcbmVuZFxuXG50eXBlIGV2ZW50X2xpc3RlbmVyX2lkID0gRG9tLmV2ZW50X2xpc3RlbmVyX2lkXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcblxubGV0IGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyA9IERvbS5hZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcblxubGV0IHJlbW92ZUV2ZW50TGlzdGVuZXIgPSBEb20ucmVtb3ZlRXZlbnRMaXN0ZW5lclxuXG5sZXQgY3JlYXRlQ3VzdG9tRXZlbnQgPSBEb20uY3JlYXRlQ3VzdG9tRXZlbnRcblxuY2xhc3MgdHlwZSBbJ25vZGVdIGNvbGxlY3Rpb24gPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBuYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBodG1sRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBoZWFkRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgcHJvZmlsZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxpbmtFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNyb3Nzb3JpZ2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVkaWEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmV2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGl0bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbWV0YUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNvbnRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGh0dHBFcXVpdiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2NoZW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYmFzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHN0eWxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBib2R5RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBmb3JtRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZWxlbWVudHMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2VwdENoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZW5jdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX21ldGhvZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdWJtaXQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVzZXQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25zdWJtaXQgOiAoJ3NlbGYgdCwgc3VibWl0RXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdEdyb3VwRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBsYWJlbCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBvcHRHcm91cEVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVmYXVsdFNlbGVjdGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgdGV4dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3RlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2VsZWN0RWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VsZWN0ZWRJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcHRpb25zIDogb3B0aW9uRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG11bHRpcGxlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2l6ZSA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgYWRkIDogI29wdEdyb3VwRWxlbWVudCB0IC0+ICNvcHRHcm91cEVsZW1lbnQgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZSA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jaGFuZ2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmlucHV0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGlucHV0RWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkZWZhdWx0VmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlZmF1bHRDaGVja2VkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2NlcHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hlY2tlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbWF4TGVuZ3RoIDogaW50IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaXplIDogaW50IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhY2Vob2xkZXIgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25EaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvblN0YXJ0IDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRW5kIDogaW50IHByb3BcblxuICBtZXRob2Qgb25zZWxlY3QgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0ZXh0QXJlYUVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGVmYXVsdFZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbHMgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWRPbmx5IDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRW5kIDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uU3RhcnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYWNlaG9sZGVyIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWxlY3QgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBidXR0b25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBsYWJlbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHRtbEZvciA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGZpZWxkU2V0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxlZ2VuZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHVMaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBvTGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgZExpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGxpRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBkaXZFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHBhcmFncmFwaEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaGVhZGluZ0VsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgcXVvdGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjaXRlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcHJlRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBickVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaHJFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIG1vZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNpdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRhdGVUaW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYW5jaG9yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb29yZHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRvd25sb2FkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNoYXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbWFnZUVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaXNNYXAgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIG5hdHVyYWxXaWR0aCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYXR1cmFsSGVpZ2h0IDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbXBsZXRlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgb25sb2FkIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYWJvcnQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb2JqZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXJjaGl2ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29kZUJhc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvZGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZWNsYXJlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGFuZGJ5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwYXJhbUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXJlYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb29yZHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5vSHJlZiA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNoYXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG1hcEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFyZWFzIDogYXJlYUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNjcmlwdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlZmVyIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXN5bmMgOiBib29sIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZW1iZWRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDZWxsRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2VsbEluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWJiciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGF4aXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sU3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlYWRlcnMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd1NwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY29wZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVSb3dFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCByb3dJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlY3Rpb25Sb3dJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNlbGxzIDogdGFibGVDZWxsRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGluc2VydENlbGwgOiBpbnQgLT4gdGFibGVDZWxsRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ2VsbCA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ29sRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZVNlY3Rpb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiB0YWJsZVJvd0VsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5zZXJ0Um93IDogaW50IC0+IHRhYmxlUm93RWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUm93IDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDYXB0aW9uRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSB0YWJsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNhcHRpb24gOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCB0SGVhZCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHRGb290IDogdGFibGVTZWN0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IHRhYmxlUm93RWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0Qm9kaWVzIDogdGFibGVTZWN0aW9uRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjZWxsUGFkZGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2VsbFNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZyYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBydWxlcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3VtbWFyeSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZVRIZWFkIDogdGFibGVTZWN0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVEhlYWQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVEZvb3QgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVURm9vdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVDYXB0aW9uIDogdGFibGVDYXB0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ2FwdGlvbiA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnRSb3cgOiBpbnQgLT4gdGFibGVSb3dFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSb3cgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0aW1lUmFuZ2VzID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGVuZF8gOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuZW5kXG5cbnR5cGUgbmV0d29ya1N0YXRlID1cbiAgfCBORVRXT1JLX0VNUFRZXG4gIHwgTkVUV09SS19JRExFXG4gIHwgTkVUV09SS19MT0FESU5HXG4gIHwgTkVUV09SS19OT19TT1VSQ0VcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBIQVZFX05PVEhJTkdcbiAgfCBIQVZFX01FVEFEQVRBXG4gIHwgSEFWRV9DVVJSRU5UX0RBVEFcbiAgfCBIQVZFX0ZVVFVSRV9EQVRBXG4gIHwgSEFWRV9FTk9VR0hfREFUQVxuXG4oKiBodHRwOi8vd3d3Lnczc2Nob29scy5jb20vdGFncy9yZWZfYXZfZG9tLmFzcCAqKVxuKCogb25seSBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgYWxsIGJyb3dzZXIuIChJRTkrKSAqKVxuY2xhc3MgdHlwZSBtZWRpYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNhblBsYXlUeXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBsb2FkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBsYXkgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGF1c2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYXV0b3BsYXkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBidWZmZXJlZCA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRyb2xzIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgY3VycmVudFNyYyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFRpbWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR1cmF0aW9uIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvb3AgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYWdyb3VwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtdXRlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5ldHdvcmtTdGF0ZV9pbnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXR3b3JrU3RhdGUgOiBuZXR3b3JrU3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXVzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGF5YmFja1JhdGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHBsYXllZCA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZWxvYWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGVfaW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWVrYWJsZSA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlZWtpbmcgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZvbHVtZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgb25jYW5wbGF5IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jYW5wbGF5dGhyb3VnaCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHVyYXRpb25jaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVtcHRpZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVuZGVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZWRkYXRhIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZWRtZXRhZGF0YSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZHN0YXJ0IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wYXVzZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGxheSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGxheWluZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucmF0ZWNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Vla2VkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWVraW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zdGFsbGVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zdXNwZW5kIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb252b2x1bWVjaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndhaXRpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXVkaW9FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbWVkaWFFbGVtZW50XG5lbmRcblxuY2xhc3MgdHlwZSB2aWRlb0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtZWRpYUVsZW1lbnRcbmVuZFxuXG50eXBlIGNvbnRleHQgPSBqc19zdHJpbmcgdFxuXG5sZXQgXzJkXyA9IEpzLnN0cmluZyBcIjJkXCJcblxudHlwZSBjYW52YXNQYXR0ZXJuXG5cbmNsYXNzIHR5cGUgY2FudmFzRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgd2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0b0RhdGFVUkwgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0YVVSTF90eXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGFVUkxfdHlwZV9jb21wcmVzc2lvbiA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29udGV4dCA6IGpzX3N0cmluZyB0IC0+IGNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB0IG1ldGhcbmVuZFxuXG5hbmQgY2FudmFzUmVuZGVyaW5nQ29udGV4dDJEID0gb2JqZWN0XG4gIG1ldGhvZCBjYW52YXMgOiBjYW52YXNFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzYXZlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlc3RvcmUgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2NhbGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUcmFuc2Zvcm0gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnbG9iYWxBbHBoYSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZSA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlX2dyYWRpZW50IDogY2FudmFzR3JhZGllbnQgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZV9wYXR0ZXJuIDogY2FudmFzUGF0dGVybiB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZSA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZV9ncmFkaWVudCA6IGNhbnZhc0dyYWRpZW50IHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlX3BhdHRlcm4gOiBjYW52YXNQYXR0ZXJuIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY3JlYXRlTGluZWFyR3JhZGllbnQgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGNhbnZhc0dyYWRpZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSYWRpYWxHcmFkaWVudCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gY2FudmFzR3JhZGllbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm4gOiBpbWFnZUVsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuX2Zyb21DYW52YXMgOiBjYW52YXNFbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybl9mcm9tVmlkZW8gOiB2aWRlb0VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lV2lkdGggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVDYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVKb2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaXRlckxpbWl0IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dPZmZzZXRYIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dPZmZzZXRZIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dCbHVyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xlYXJSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGxSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmVnaW5QYXRoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlUGF0aCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtb3ZlVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbGluZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHF1YWRyYXRpY0N1cnZlVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmV6aWVyQ3VydmVUbyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFyY1RvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXJjIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVsbGlwc2UgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsaXAgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaXNQb2ludEluUGF0aCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdGb2N1c1JpbmcgOiAjZWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBmb250IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRCYXNlbGluZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsbFRleHQgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbFRleHRfd2l0aFdpZHRoIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVRleHQgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlVGV4dF93aXRoV2lkdGggOlxuICAgIGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtZWFzdXJlVGV4dCA6IGpzX3N0cmluZyB0IC0+IHRleHRNZXRyaWNzIHQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2UgOiBpbWFnZUVsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX3dpdGhTaXplIDpcbiAgICBpbWFnZUVsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGwgOlxuICAgICAgIGltYWdlRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbUNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21DYW52YXNXaXRoU2l6ZSA6XG4gICAgY2FudmFzRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbEZyb21DYW52YXMgOlxuICAgICAgIGNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21WaWRlb1dpdGhWaWRlbyA6XG4gICAgdmlkZW9FbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tVmlkZW9XaXRoU2l6ZSA6XG4gICAgdmlkZW9FbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsRnJvbVZpZGVvIDpcbiAgICAgICB2aWRlb0VsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlSW1hZ2VEYXRhIDogaW50IC0+IGludCAtPiBpbWFnZURhdGEgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEltYWdlRGF0YSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGltYWdlRGF0YSB0IG1ldGhcblxuICBtZXRob2QgcHV0SW1hZ2VEYXRhIDogaW1hZ2VEYXRhIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIGNhbnZhc0dyYWRpZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBhZGRDb2xvclN0b3AgOiBudW1iZXJfdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgdGV4dE1ldHJpY3MgPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBpbWFnZURhdGEgPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YSA6IGNhbnZhc1BpeGVsQXJyYXkgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNhbnZhc1BpeGVsQXJyYXkgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuZXh0ZXJuYWwgcGl4ZWxfZ2V0IDogY2FudmFzUGl4ZWxBcnJheSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfanNfZ2V0XCJcblxuZXh0ZXJuYWwgcGl4ZWxfc2V0IDogY2FudmFzUGl4ZWxBcnJheSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG5jbGFzcyB0eXBlIHJhbmdlID0gb2JqZWN0XG4gIG1ldGhvZCBjb2xsYXBzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydE9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZE9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0Q29udGFpbmVyIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZENvbnRhaW5lciA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRTdGFydCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U3RhcnRCZWZvcmUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmRCZWZvcmUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTdGFydEFmdGVyIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kQWZ0ZXIgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3ROb2RlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0Tm9kZUNvbnRlbnRzIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2UgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lQ29udGVudHMgOiBEb20uZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgZXh0cmFjdENvbnRlbnRzIDogRG9tLmRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNvbnRlbnRzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydE5vZGUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdXJyb3VuZENvbnRlbnRzIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvbmVSYW5nZSA6IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG4oKiogSW5mb3JtYXRpb24gb24gY3VycmVudCBzZWxlY3Rpb24gKilcbmNsYXNzIHR5cGUgc2VsZWN0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBhbmNob3JOb2RlIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuY2hvck9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvY3VzTm9kZSA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb2N1c09mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzQ29sbGFwc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmFuZ2VDb3VudCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFJhbmdlQXQgOiBpbnQgLT4gcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBleHRlbmQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbW9kaWZ5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlVG9TdGFydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZVRvRW5kIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdEFsbENoaWxkcmVuIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWRkUmFuZ2UgOiByYW5nZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVSYW5nZSA6IHJhbmdlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUFsbFJhbmdlcyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVGcm9tRG9jdW1lbnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udGFpbnNOb2RlIDogRG9tLm5vZGUgdCAtPiBib29sIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZG9jdW1lbnRcblxuICBpbmhlcml0IG5vZGVTZWxlY3RvclxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlZmVycmVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkb21haW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlYWQgOiBoZWFkRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgYm9keSA6IGJvZHlFbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCBkb2N1bWVudEVsZW1lbnQgOiBodG1sRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW1hZ2VzIDogaW1hZ2VFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcGxldHMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxpbmtzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb3JtcyA6IGZvcm1FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuY2hvcnMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvb2tpZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVzaWduTW9kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3Blbl8gOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgd3JpdGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXhlY0NvbW1hbmQgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSYW5nZSA6IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGFjdGl2ZUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGlkZGVuIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25mdWxsc2NyZWVuY2hhbmdlIDogKGRvY3VtZW50IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZSA6IChkb2N1bWVudCB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG50eXBlIGludGVydmFsX2lkXG5cbnR5cGUgdGltZW91dF9pZFxuXG50eXBlIGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkXG5cbmNsYXNzIHR5cGUgbG9jYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHByb3RvY29sIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBob3N0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBob3N0bmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3JpZ2luIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcG9ydCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGF0aG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlYXJjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGFzaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXNzaWduIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2UgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVsb2FkIDogdW5pdCBtZXRoXG5lbmRcblxubGV0IGxvY2F0aW9uX29yaWdpbiAobG9jIDogbG9jYXRpb24gdCkgPVxuICBPcHRkZWYuY2FzZVxuICAgIGxvYyMjLm9yaWdpblxuICAgIChmdW4gKCkgLT5cbiAgICAgIGxldCBwcm90b2NvbCA9IGxvYyMjLnByb3RvY29sIGluXG4gICAgICBsZXQgaG9zdG5hbWUgPSBsb2MjIy5ob3N0bmFtZSBpblxuICAgICAgbGV0IHBvcnQgPSBsb2MjIy5wb3J0IGluXG4gICAgICBpZiBwcm90b2NvbCMjLmxlbmd0aCA9IDAgJiYgaG9zdG5hbWUjIy5sZW5ndGggPSAwXG4gICAgICB0aGVuIEpzLnN0cmluZyBcIlwiXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBvcmlnaW4gPSBwcm90b2NvbCMjY29uY2F0XzIgKEpzLnN0cmluZyBcIi8vXCIpIGhvc3RuYW1lIGluXG4gICAgICAgIGlmIHBvcnQjIy5sZW5ndGggPiAwIHRoZW4gb3JpZ2luIyNjb25jYXRfMiAoSnMuc3RyaW5nIFwiOlwiKSBsb2MjIy5wb3J0IGVsc2Ugb3JpZ2luKVxuICAgIChmdW4gbyAtPiBvKVxuXG5jbGFzcyB0eXBlIGhpc3RvcnkgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXRlIDogSnMuVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdvIDogaW50IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmFjayA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb3J3YXJkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hTdGF0ZSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VTdGF0ZSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB1bmRvTWFuYWdlciA9IG9iamVjdCBlbmRcblxuY2xhc3MgdHlwZSBuYXZpZ2F0b3IgPSBvYmplY3RcbiAgbWV0aG9kIGFwcENvZGVOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBWZXJzaW9uIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb29raWVFbmFibGVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25MaW5lIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhdGZvcm0gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZlbmRvciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlckFnZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYW5ndWFnZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZXJMYW5ndWFnZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1heFRvdWNoUG9pbnRzIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNjcmVlbiA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdmFpbFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXZhaWxIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXBwbGljYXRpb25DYWNoZSA9IG9iamVjdFxuICBtZXRob2Qgc3RhdHVzIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXBkYXRlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN3YXBDYWNoZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbmNoZWNraW5nIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm5vdXBkYXRlIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmRvd25sb2FkaW5nIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnByb2dyZXNzIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnVwZGF0ZXJlYWR5IDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNhY2hlZCA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vYnNvbGV0ZSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxuY2xhc3MgdHlwZSBfVVJMID0gb2JqZWN0XG4gIG1ldGhvZCBjcmVhdGVPYmplY3RVUkwgOiAjRmlsZS5ibG9iIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZXZva2VPYmplY3RVUkwgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHdpbmRvdyA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIGRvY3VtZW50IDogZG9jdW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcGxpY2F0aW9uQ2FjaGUgOiBhcHBsaWNhdGlvbkNhY2hlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoaXN0b3J5IDogaGlzdG9yeSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdW5kb01hbmFnZXIgOiB1bmRvTWFuYWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmF2aWdhdG9yIDogbmF2aWdhdG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRTZWxlY3Rpb24gOiBzZWxlY3Rpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0b3AgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9jdXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYmx1ciA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGwgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGxCeSA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlc3Npb25TdG9yYWdlIDogc3RvcmFnZSB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvY2FsU3RvcmFnZSA6IHN0b3JhZ2UgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b3AgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudCA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnJhbWVFbGVtZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9wZW5fIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHdpbmRvdyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGFsZXJ0IDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbmZpcm0gOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBwcm9tcHQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBwcmludCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnRlcnZhbCA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IG51bWJlcl90IC0+IGludGVydmFsX2lkIG1ldGhcblxuICBtZXRob2QgY2xlYXJJbnRlcnZhbCA6IGludGVydmFsX2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUaW1lb3V0IDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gbnVtYmVyX3QgLT4gdGltZW91dF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyVGltZW91dCA6IHRpbWVvdXRfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVlc3RBbmltYXRpb25GcmFtZSA6XG4gICAgKG51bWJlcl90IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkIG1ldGhcblxuICBtZXRob2QgY2FuY2VsQW5pbWF0aW9uRnJhbWUgOiBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2NyZWVuIDogc2NyZWVuIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbm5lcldpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5uZXJIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvdXRlcldpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3V0ZXJIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFN0eWxlIDogI2VsZW1lbnQgdCAtPiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFN0eWxlX3BzZXVkb0VsdCA6XG4gICAgI2VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBhdG9iIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBidG9hIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb251bmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25iZWZvcmV1bmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ibHVyIDogKHdpbmRvdyB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICh3aW5kb3cgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucmVzaXplIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub3JpZW50YXRpb25jaGFuZ2UgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25wb3BzdGF0ZSA6ICh3aW5kb3cgdCwgcG9wU3RhdGVFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaGFzaGNoYW5nZSA6ICh3aW5kb3cgdCwgaGFzaENoYW5nZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vbmxpbmUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ub2ZmbGluZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgX1VSTCA6IF9VUkwgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRldmljZVBpeGVsUmF0aW8gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHdpbmRvdyA6IHdpbmRvdyB0ID0gSnMuVW5zYWZlLmdsb2JhbFxuXG4oKiBUaGUgdG9wbGV2ZWwgb2JqZWN0ICopXG5cbmxldCBkb2N1bWVudCA9IHdpbmRvdyMjLmRvY3VtZW50XG5cbmxldCBnZXRFbGVtZW50QnlJZCBpZCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAoZnVuIHBub2RlIC0+IHBub2RlKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfZXhuIGlkID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gZmFpbHdpdGggKFByaW50Zi5zcHJpbnRmIFwiZ2V0RWxlbWVudEJ5SWRfZXhuOiAlUyBub3QgZm91bmRcIiBpZCkpXG4gICAgKGZ1biBwbm9kZSAtPiBwbm9kZSlcblxubGV0IGdldEVsZW1lbnRCeUlkX29wdCBpZCA9IEpzLk9wdC50b19vcHRpb24gKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcblxubGV0IGdldEVsZW1lbnRCeUlkX2NvZXJjZSBpZCBjb2VyY2UgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiBOb25lKVxuICAgIChmdW4gZSAtPiBKcy5PcHQudG9fb3B0aW9uIChjb2VyY2UgZSkpXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIGZyYW1lU2V0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY29scyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGZyYW1lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZnJhbWVCb3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvbmdEZXNjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBub1Jlc2l6ZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpRnJhbWVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmcmFtZUJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9uZ0Rlc2MgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRXaW5kb3cgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqKiopXG5cbigqWFhYIFNob3VsZCBwcm92aWRlIGNyZWF0aW9uIGZ1bmN0aW9ucyBhIGxhIGxhYmxndGsuLi4gKilcblxubGV0IG9wdF9pdGVyIHggZiA9XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHYgLT4gZiB2XG5cbmxldCBjcmVhdGVFbGVtZW50IChkb2MgOiBkb2N1bWVudCB0KSBuYW1lID0gZG9jIyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgbmFtZSlcblxubGV0IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBuYW1lKVxuXG5sZXQgY3JlYXRlRWxlbWVudFN5bnRheCA9IHJlZiBgVW5rbm93blxuXG5sZXQgcmVjIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIGVsdCA9XG4gIGlmIFBvbHkuKF90eXBlID0gTm9uZSkgJiYgUG9seS4obmFtZSA9IE5vbmUpXG4gIHRoZW4gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgZWx0KVxuICBlbHNlXG4gICAgbWF0Y2ggIWNyZWF0ZUVsZW1lbnRTeW50YXggd2l0aFxuICAgIHwgYFN0YW5kYXJkIC0+XG4gICAgICAgIGxldCByZXMgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBlbHQpIGluXG4gICAgICAgIG9wdF9pdGVyIF90eXBlIChmdW4gdCAtPiByZXMjIy5fdHlwZSA6PSB0KTtcbiAgICAgICAgb3B0X2l0ZXIgbmFtZSAoZnVuIG4gLT4gcmVzIyMubmFtZSA6PSBuKTtcbiAgICAgICAgcmVzXG4gICAgfCBgRXh0ZW5kZWQgLT5cbiAgICAgICAgbGV0IGEgPSBuZXclanMgSnMuYXJyYXlfZW1wdHkgaW5cbiAgICAgICAgaWdub3JlIChhIyNwdXNoXzIgKEpzLnN0cmluZyBcIjxcIikgKEpzLnN0cmluZyBlbHQpKTtcbiAgICAgICAgb3B0X2l0ZXIgX3R5cGUgKGZ1biB0IC0+XG4gICAgICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMyAoSnMuc3RyaW5nIFwiIHR5cGU9XFxcIlwiKSAoaHRtbF9lc2NhcGUgdCkgKEpzLnN0cmluZyBcIlxcXCJcIikpKTtcbiAgICAgICAgb3B0X2l0ZXIgbmFtZSAoZnVuIG4gLT5cbiAgICAgICAgICAgIGlnbm9yZSAoYSMjcHVzaF8zIChKcy5zdHJpbmcgXCIgbmFtZT1cXFwiXCIpIChodG1sX2VzY2FwZSBuKSAoSnMuc3RyaW5nIFwiXFxcIlwiKSkpO1xuICAgICAgICBpZ25vcmUgKGEjI3B1c2ggKEpzLnN0cmluZyBcIj5cIikpO1xuICAgICAgICBKcy5VbnNhZmUuY29lcmNlIChkb2MjI2NyZWF0ZUVsZW1lbnQgKGEjI2pvaW4gKEpzLnN0cmluZyBcIlwiKSkpXG4gICAgfCBgVW5rbm93biAtPlxuICAgICAgICBjcmVhdGVFbGVtZW50U3ludGF4IDo9XG4gICAgICAgICAgaWYgdHJ5XG4gICAgICAgICAgICAgICBsZXQgZWwgOiBpbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgICAgICAgICAgICAgIEpzLlVuc2FmZS5jb2VyY2VcbiAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBcIjxpbnB1dCBuYW1lPVxcXCJ4XFxcIj5cIikpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgSnMuZXF1YWxzIGVsIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyBcImlucHV0XCIpXG4gICAgICAgICAgICAgICAmJiBKcy5lcXVhbHMgZWwjIy5uYW1lIChKcy5zdHJpbmcgXCJ4XCIpXG4gICAgICAgICAgICAgd2l0aCBfIC0+IGZhbHNlXG4gICAgICAgICAgdGhlbiBgRXh0ZW5kZWRcbiAgICAgICAgICBlbHNlIGBTdGFuZGFyZDtcbiAgICAgICAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgZWx0XG5cbmxldCBjcmVhdGVIdG1sIGRvYyA6IGh0bWxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImh0bWxcIlxuXG5sZXQgY3JlYXRlSGVhZCBkb2MgOiBoZWFkRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoZWFkXCJcblxubGV0IGNyZWF0ZUxpbmsgZG9jIDogbGlua0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGlua1wiXG5cbmxldCBjcmVhdGVUaXRsZSBkb2MgOiB0aXRsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGl0bGVcIlxuXG5sZXQgY3JlYXRlTWV0YSBkb2MgOiBtZXRhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtZXRhXCJcblxubGV0IGNyZWF0ZUJhc2UgZG9jIDogYmFzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYmFzZVwiXG5cbmxldCBjcmVhdGVTdHlsZSBkb2MgOiBzdHlsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3R5bGVcIlxuXG5sZXQgY3JlYXRlQm9keSBkb2MgOiBib2R5RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJib2R5XCJcblxubGV0IGNyZWF0ZUZvcm0gZG9jIDogZm9ybUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9ybVwiXG5cbmxldCBjcmVhdGVPcHRncm91cCBkb2MgOiBvcHRHcm91cEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib3B0Z3JvdXBcIlxuXG5sZXQgY3JlYXRlT3B0aW9uIGRvYyA6IG9wdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib3B0aW9uXCJcblxubGV0IGNyZWF0ZVNlbGVjdCA/X3R5cGUgP25hbWUgZG9jIDogc2VsZWN0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJzZWxlY3RcIlxuXG5sZXQgY3JlYXRlSW5wdXQgP190eXBlID9uYW1lIGRvYyA6IGlucHV0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJpbnB1dFwiXG5cbmxldCBjcmVhdGVUZXh0YXJlYSA/X3R5cGUgP25hbWUgZG9jIDogdGV4dEFyZWFFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcInRleHRhcmVhXCJcblxubGV0IGNyZWF0ZUJ1dHRvbiA/X3R5cGUgP25hbWUgZG9jIDogYnV0dG9uRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJidXR0b25cIlxuXG5sZXQgY3JlYXRlTGFiZWwgZG9jIDogbGFiZWxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxhYmVsXCJcblxubGV0IGNyZWF0ZUZpZWxkc2V0IGRvYyA6IGZpZWxkU2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmaWVsZHNldFwiXG5cbmxldCBjcmVhdGVMZWdlbmQgZG9jIDogbGVnZW5kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsZWdlbmRcIlxuXG5sZXQgY3JlYXRlVWwgZG9jIDogdUxpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInVsXCJcblxubGV0IGNyZWF0ZU9sIGRvYyA6IG9MaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvbFwiXG5cbmxldCBjcmVhdGVEbCBkb2MgOiBkTGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGxcIlxuXG5sZXQgY3JlYXRlTGkgZG9jIDogbGlFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpXCJcblxubGV0IGNyZWF0ZURpdiBkb2MgOiBkaXZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRpdlwiXG5cbmxldCBjcmVhdGVFbWJlZCBkb2MgOiBlbWJlZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZW1iZWRcIlxuXG5sZXQgY3JlYXRlUCBkb2MgOiBwYXJhZ3JhcGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBcIlxuXG5sZXQgY3JlYXRlSDEgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDFcIlxuXG5sZXQgY3JlYXRlSDIgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDJcIlxuXG5sZXQgY3JlYXRlSDMgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDNcIlxuXG5sZXQgY3JlYXRlSDQgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDRcIlxuXG5sZXQgY3JlYXRlSDUgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDVcIlxuXG5sZXQgY3JlYXRlSDYgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDZcIlxuXG5sZXQgY3JlYXRlUSBkb2MgOiBxdW90ZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicVwiXG5cbmxldCBjcmVhdGVCbG9ja3F1b3RlIGRvYyA6IHF1b3RlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJibG9ja3F1b3RlXCJcblxubGV0IGNyZWF0ZVByZSBkb2MgOiBwcmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInByZVwiXG5cbmxldCBjcmVhdGVCciBkb2MgOiBickVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYnJcIlxuXG5sZXQgY3JlYXRlSHIgZG9jIDogaHJFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhyXCJcblxubGV0IGNyZWF0ZUlucyBkb2MgOiBtb2RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImluc1wiXG5cbmxldCBjcmVhdGVEZWwgZG9jIDogbW9kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZWxcIlxuXG5sZXQgY3JlYXRlQSBkb2MgOiBhbmNob3JFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFcIlxuXG5sZXQgY3JlYXRlSW1nIGRvYyA6IGltYWdlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbWdcIlxuXG5sZXQgY3JlYXRlT2JqZWN0IGRvYyA6IG9iamVjdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib2JqZWN0XCJcblxubGV0IGNyZWF0ZVBhcmFtIGRvYyA6IHBhcmFtRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwYXJhbVwiXG5cbmxldCBjcmVhdGVNYXAgZG9jIDogbWFwRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtYXBcIlxuXG5sZXQgY3JlYXRlQXJlYSBkb2MgOiBhcmVhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhcmVhXCJcblxubGV0IGNyZWF0ZVNjcmlwdCBkb2MgOiBzY3JpcHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNjcmlwdFwiXG5cbmxldCBjcmVhdGVUYWJsZSBkb2MgOiB0YWJsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGFibGVcIlxuXG5sZXQgY3JlYXRlQ2FwdGlvbiBkb2MgOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNhcHRpb25cIlxuXG5sZXQgY3JlYXRlQ29sIGRvYyA6IHRhYmxlQ29sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xcIlxuXG5sZXQgY3JlYXRlQ29sZ3JvdXAgZG9jIDogdGFibGVDb2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbGdyb3VwXCJcblxubGV0IGNyZWF0ZVRoZWFkIGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGhlYWRcIlxuXG5sZXQgY3JlYXRlVGZvb3QgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0Zm9vdFwiXG5cbmxldCBjcmVhdGVUYm9keSBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRib2R5XCJcblxubGV0IGNyZWF0ZVRyIGRvYyA6IHRhYmxlUm93RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0clwiXG5cbmxldCBjcmVhdGVUaCBkb2MgOiB0YWJsZUNlbGxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRoXCJcblxubGV0IGNyZWF0ZVRkIGRvYyA6IHRhYmxlQ2VsbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGRcIlxuXG5sZXQgY3JlYXRlU3ViIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3ViXCJcblxubGV0IGNyZWF0ZVN1cCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInN1cFwiXG5cbmxldCBjcmVhdGVTcGFuIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3BhblwiXG5cbmxldCBjcmVhdGVUdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInR0XCJcblxubGV0IGNyZWF0ZUkgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJpXCJcblxubGV0IGNyZWF0ZUIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJiXCJcblxubGV0IGNyZWF0ZUJpZyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImJpZ1wiXG5cbmxldCBjcmVhdGVTbWFsbCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInNtYWxsXCJcblxubGV0IGNyZWF0ZUVtIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZW1cIlxuXG5sZXQgY3JlYXRlU3Ryb25nIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3Ryb25nXCJcblxubGV0IGNyZWF0ZUNpdGUgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJjaXRlXCJcblxubGV0IGNyZWF0ZURmbiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImRmblwiXG5cbmxldCBjcmVhdGVDb2RlIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiY29kZVwiXG5cbmxldCBjcmVhdGVTYW1wIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic2FtcFwiXG5cbmxldCBjcmVhdGVLYmQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJrYmRcIlxuXG5sZXQgY3JlYXRlVmFyIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwidmFyXCJcblxubGV0IGNyZWF0ZUFiYnIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJhYmJyXCJcblxubGV0IGNyZWF0ZURkIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZGRcIlxuXG5sZXQgY3JlYXRlRHQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkdFwiXG5cbmxldCBjcmVhdGVOb3NjcmlwdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcIm5vc2NyaXB0XCJcblxubGV0IGNyZWF0ZUFkZHJlc3MgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJhZGRyZXNzXCJcblxubGV0IGNyZWF0ZUZyYW1lc2V0IGRvYyA6IGZyYW1lU2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmcmFtZXNldFwiXG5cbmxldCBjcmVhdGVGcmFtZSBkb2MgOiBmcmFtZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZnJhbWVcIlxuXG5sZXQgY3JlYXRlSWZyYW1lIGRvYyA6IGlGcmFtZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaWZyYW1lXCJcblxubGV0IGNyZWF0ZUF1ZGlvIGRvYyA6IGF1ZGlvRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhdWRpb1wiXG5cbmxldCBjcmVhdGVWaWRlbyBkb2MgOiBhdWRpb0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmlkZW9cIlxuXG5leGNlcHRpb24gQ2FudmFzX25vdF9hdmFpbGFibGVcblxubGV0IGNyZWF0ZUNhbnZhcyBkb2MgOiBjYW52YXNFbGVtZW50IHQgPVxuICBsZXQgYyA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2FudmFzXCIgaW5cbiAgaWYgbm90IChPcHQudGVzdCBjIyMuZ2V0Q29udGV4dCkgdGhlbiByYWlzZSBDYW52YXNfbm90X2F2YWlsYWJsZTtcbiAgY1xuXG5sZXQgaHRtbF9lbGVtZW50IDogaHRtbEVsZW1lbnQgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0hUTUxFbGVtZW50XG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBsZXQgZWxlbWVudCA6ICNEb20ubm9kZSBKcy50IC0+IGVsZW1lbnQgSnMudCBKcy5vcHQgPVxuICAgIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKGRlZiBodG1sX2VsZW1lbnQpKVxuICAgIHRoZW5cbiAgICAgICgqIGllIDwgOSBkb2VzIG5vdCBoYXZlIEhUTUxFbGVtZW50OiB3ZSBoYXZlIHRvIGNoZWF0IHRvIGNoZWNrXG4gICAgICAgICB0aGF0IHNvbWV0aGluZyBpcyBhbiBodG1sIGVsZW1lbnQgKilcbiAgICAgIGZ1biBlIC0+XG4gICAgICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IChkZWYgKEpzLlVuc2FmZS5jb2VyY2UgZSkjIy5pbm5lckhUTUwpKVxuICAgICAgdGhlbiBKcy5udWxsXG4gICAgICBlbHNlIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlXG4gICAgICBmdW4gZSAtPlxuICAgICAgaWYgSnMuaW5zdGFuY2VvZiBlIGh0bWxfZWxlbWVudCB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IHVuc2FmZUNvZXJjZSB0YWcgKGUgOiAjZWxlbWVudCB0KSA9XG4gICAgaWYgSnMuZXF1YWxzIGUjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSAoSnMuc3RyaW5nIHRhZylcbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYSBlID0gdW5zYWZlQ29lcmNlIFwiYVwiIGVcblxuICBsZXQgYXJlYSBlID0gdW5zYWZlQ29lcmNlIFwiYXJlYVwiIGVcblxuICBsZXQgYmFzZSBlID0gdW5zYWZlQ29lcmNlIFwiYmFzZVwiIGVcblxuICBsZXQgYmxvY2txdW90ZSBlID0gdW5zYWZlQ29lcmNlIFwiYmxvY2txdW90ZVwiIGVcblxuICBsZXQgYm9keSBlID0gdW5zYWZlQ29lcmNlIFwiYm9keVwiIGVcblxuICBsZXQgYnIgZSA9IHVuc2FmZUNvZXJjZSBcImJyXCIgZVxuXG4gIGxldCBidXR0b24gZSA9IHVuc2FmZUNvZXJjZSBcImJ1dHRvblwiIGVcblxuICBsZXQgY2FudmFzIGUgPSB1bnNhZmVDb2VyY2UgXCJjYW52YXNcIiBlXG5cbiAgbGV0IGNhcHRpb24gZSA9IHVuc2FmZUNvZXJjZSBcImNhcHRpb25cIiBlXG5cbiAgbGV0IGNvbCBlID0gdW5zYWZlQ29lcmNlIFwiY29sXCIgZVxuXG4gIGxldCBjb2xncm91cCBlID0gdW5zYWZlQ29lcmNlIFwiY29sZ3JvdXBcIiBlXG5cbiAgbGV0IGRlbCBlID0gdW5zYWZlQ29lcmNlIFwiZGVsXCIgZVxuXG4gIGxldCBkaXYgZSA9IHVuc2FmZUNvZXJjZSBcImRpdlwiIGVcblxuICBsZXQgZGwgZSA9IHVuc2FmZUNvZXJjZSBcImRsXCIgZVxuXG4gIGxldCBmaWVsZHNldCBlID0gdW5zYWZlQ29lcmNlIFwiZmllbGRzZXRcIiBlXG5cbiAgbGV0IGVtYmVkIGUgPSB1bnNhZmVDb2VyY2UgXCJlbWJlZFwiIGVcblxuICBsZXQgZm9ybSBlID0gdW5zYWZlQ29lcmNlIFwiZm9ybVwiIGVcblxuICBsZXQgZnJhbWVzZXQgZSA9IHVuc2FmZUNvZXJjZSBcImZyYW1lc2V0XCIgZVxuXG4gIGxldCBmcmFtZSBlID0gdW5zYWZlQ29lcmNlIFwiZnJhbWVcIiBlXG5cbiAgbGV0IGgxIGUgPSB1bnNhZmVDb2VyY2UgXCJoMVwiIGVcblxuICBsZXQgaDIgZSA9IHVuc2FmZUNvZXJjZSBcImgyXCIgZVxuXG4gIGxldCBoMyBlID0gdW5zYWZlQ29lcmNlIFwiaDNcIiBlXG5cbiAgbGV0IGg0IGUgPSB1bnNhZmVDb2VyY2UgXCJoNFwiIGVcblxuICBsZXQgaDUgZSA9IHVuc2FmZUNvZXJjZSBcImg1XCIgZVxuXG4gIGxldCBoNiBlID0gdW5zYWZlQ29lcmNlIFwiaDZcIiBlXG5cbiAgbGV0IGhlYWQgZSA9IHVuc2FmZUNvZXJjZSBcImhlYWRcIiBlXG5cbiAgbGV0IGhyIGUgPSB1bnNhZmVDb2VyY2UgXCJoclwiIGVcblxuICBsZXQgaHRtbCBlID0gdW5zYWZlQ29lcmNlIFwiaHRtbFwiIGVcblxuICBsZXQgaWZyYW1lIGUgPSB1bnNhZmVDb2VyY2UgXCJpZnJhbWVcIiBlXG5cbiAgbGV0IGltZyBlID0gdW5zYWZlQ29lcmNlIFwiaW1nXCIgZVxuXG4gIGxldCBpbnB1dCBlID0gdW5zYWZlQ29lcmNlIFwiaW5wdXRcIiBlXG5cbiAgbGV0IGlucyBlID0gdW5zYWZlQ29lcmNlIFwiaW5zXCIgZVxuXG4gIGxldCBsYWJlbCBlID0gdW5zYWZlQ29lcmNlIFwibGFiZWxcIiBlXG5cbiAgbGV0IGxlZ2VuZCBlID0gdW5zYWZlQ29lcmNlIFwibGVnZW5kXCIgZVxuXG4gIGxldCBsaSBlID0gdW5zYWZlQ29lcmNlIFwibGlcIiBlXG5cbiAgbGV0IGxpbmsgZSA9IHVuc2FmZUNvZXJjZSBcImxpbmtcIiBlXG5cbiAgbGV0IG1hcCBlID0gdW5zYWZlQ29lcmNlIFwibWFwXCIgZVxuXG4gIGxldCBtZXRhIGUgPSB1bnNhZmVDb2VyY2UgXCJtZXRhXCIgZVxuXG4gIGxldCBfb2JqZWN0IGUgPSB1bnNhZmVDb2VyY2UgXCJvYmplY3RcIiBlXG5cbiAgbGV0IG9sIGUgPSB1bnNhZmVDb2VyY2UgXCJvbFwiIGVcblxuICBsZXQgb3B0Z3JvdXAgZSA9IHVuc2FmZUNvZXJjZSBcIm9wdGdyb3VwXCIgZVxuXG4gIGxldCBvcHRpb24gZSA9IHVuc2FmZUNvZXJjZSBcIm9wdGlvblwiIGVcblxuICBsZXQgcCBlID0gdW5zYWZlQ29lcmNlIFwicFwiIGVcblxuICBsZXQgcGFyYW0gZSA9IHVuc2FmZUNvZXJjZSBcInBhcmFtXCIgZVxuXG4gIGxldCBwcmUgZSA9IHVuc2FmZUNvZXJjZSBcInByZVwiIGVcblxuICBsZXQgcSBlID0gdW5zYWZlQ29lcmNlIFwicVwiIGVcblxuICBsZXQgc2NyaXB0IGUgPSB1bnNhZmVDb2VyY2UgXCJzY3JpcHRcIiBlXG5cbiAgbGV0IHNlbGVjdCBlID0gdW5zYWZlQ29lcmNlIFwic2VsZWN0XCIgZVxuXG4gIGxldCBzdHlsZSBlID0gdW5zYWZlQ29lcmNlIFwic3R5bGVcIiBlXG5cbiAgbGV0IHRhYmxlIGUgPSB1bnNhZmVDb2VyY2UgXCJ0YWJsZVwiIGVcblxuICBsZXQgdGJvZHkgZSA9IHVuc2FmZUNvZXJjZSBcInRib2R5XCIgZVxuXG4gIGxldCB0ZCBlID0gdW5zYWZlQ29lcmNlIFwidGRcIiBlXG5cbiAgbGV0IHRleHRhcmVhIGUgPSB1bnNhZmVDb2VyY2UgXCJ0ZXh0YXJlYVwiIGVcblxuICBsZXQgdGZvb3QgZSA9IHVuc2FmZUNvZXJjZSBcInRmb290XCIgZVxuXG4gIGxldCB0aCBlID0gdW5zYWZlQ29lcmNlIFwidGhcIiBlXG5cbiAgbGV0IHRoZWFkIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aGVhZFwiIGVcblxuICBsZXQgdGl0bGUgZSA9IHVuc2FmZUNvZXJjZSBcInRpdGxlXCIgZVxuXG4gIGxldCB0ciBlID0gdW5zYWZlQ29lcmNlIFwidHJcIiBlXG5cbiAgbGV0IHVsIGUgPSB1bnNhZmVDb2VyY2UgXCJ1bFwiIGVcblxuICBsZXQgYXVkaW8gZSA9IHVuc2FmZUNvZXJjZSBcImF1ZGlvXCIgZVxuXG4gIGxldCB2aWRlbyBlID0gdW5zYWZlQ29lcmNlIFwidmlkZW9cIiBlXG5cbiAgbGV0IHVuc2FmZUNvZXJjZUV2ZW50IGNvbnN0ciAoZXYgOiAjZXZlbnQgdCkgPVxuICAgIGlmIEpzLk9wdGRlZi50ZXN0IChkZWYgY29uc3RyKSAmJiBKcy5pbnN0YW5jZW9mIGV2IGNvbnN0clxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBldilcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgbW91c2VFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTW91c2VFdmVudCBldlxuXG4gIGxldCBrZXlib2FyZEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9LZXlib2FyZEV2ZW50IGV2XG5cbiAgbGV0IHdoZWVsRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX1doZWVsRXZlbnQgZXZcblxuICBsZXQgbW91c2VTY3JvbGxFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTW91c2VTY3JvbGxFdmVudCBldlxuXG4gIGxldCBwb3BTdGF0ZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Qb3BTdGF0ZUV2ZW50IGV2XG5cbiAgbGV0IG1lc3NhZ2VFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTWVzc2FnZUV2ZW50IGV2XG5lbmRcblxuKCoqKiopXG5cbmxldCBldmVudFRhcmdldCA9IERvbS5ldmVudFRhcmdldFxuXG5sZXQgZXZlbnRSZWxhdGVkVGFyZ2V0IChlIDogI21vdXNlRXZlbnQgdCkgPVxuICBPcHRkZWYuZ2V0IGUjIy5yZWxhdGVkVGFyZ2V0IChmdW4gKCkgLT5cbiAgICAgIG1hdGNoIEpzLnRvX3N0cmluZyBlIyMuX3R5cGUgd2l0aFxuICAgICAgfCBcIm1vdXNlb3ZlclwiIC0+IE9wdGRlZi5nZXQgZSMjLmZyb21FbGVtZW50IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgfCBcIm1vdXNlb3V0XCIgLT4gT3B0ZGVmLmdldCBlIyMudG9FbGVtZW50IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgfCBfIC0+IEpzLm51bGwpXG5cbmxldCBldmVudEFic29sdXRlUG9zaXRpb24nIChlIDogI21vdXNlRXZlbnQgdCkgPVxuICBsZXQgYm9keSA9IGRvY3VtZW50IyMuYm9keSBpblxuICBsZXQgaHRtbCA9IGRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IGluXG4gICggZSMjLmNsaWVudFggKyBib2R5IyMuc2Nyb2xsTGVmdCArIGh0bWwjIy5zY3JvbGxMZWZ0XG4gICwgZSMjLmNsaWVudFkgKyBib2R5IyMuc2Nyb2xsVG9wICsgaHRtbCMjLnNjcm9sbFRvcCApXG5cbmxldCBldmVudEFic29sdXRlUG9zaXRpb24gKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIE9wdGRlZi5jYXNlXG4gICAgZSMjLnBhZ2VYXG4gICAgKGZ1biAoKSAtPiBldmVudEFic29sdXRlUG9zaXRpb24nIGUpXG4gICAgKGZ1biB4IC0+IE9wdGRlZi5jYXNlIGUjIy5wYWdlWSAoZnVuICgpIC0+IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgZSkgKGZ1biB5IC0+IHgsIHkpKVxuXG5sZXQgZWxlbWVudENsaWVudFBvc2l0aW9uIChlIDogI2VsZW1lbnQgdCkgPVxuICBsZXQgciA9IGUjI2dldEJvdW5kaW5nQ2xpZW50UmVjdCBpblxuICBsZXQgYm9keSA9IGRvY3VtZW50IyMuYm9keSBpblxuICBsZXQgaHRtbCA9IGRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IGluXG4gICggdHJ1bmNhdGUgKEpzLnRvX2Zsb2F0IHIjIy5sZWZ0KSAtIGJvZHkjIy5jbGllbnRMZWZ0IC0gaHRtbCMjLmNsaWVudExlZnRcbiAgLCB0cnVuY2F0ZSAoSnMudG9fZmxvYXQgciMjLnRvcCkgLSBib2R5IyMuY2xpZW50VG9wIC0gaHRtbCMjLmNsaWVudFRvcCApXG5cbmxldCBnZXREb2N1bWVudFNjcm9sbCAoKSA9XG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgYm9keSMjLnNjcm9sbExlZnQgKyBodG1sIyMuc2Nyb2xsTGVmdCwgYm9keSMjLnNjcm9sbFRvcCArIGh0bWwjIy5zY3JvbGxUb3BcblxubGV0IGJ1dHRvblByZXNzZWQgKGV2IDogI21vdXNlRXZlbnQgSnMudCkgPVxuICBKcy5PcHRkZWYuY2FzZVxuICAgIGV2IyMud2hpY2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBtYXRjaCBldiMjLmJ1dHRvbiB3aXRoXG4gICAgICB8IDEgLT4gTGVmdF9idXR0b25cbiAgICAgIHwgMiAtPiBSaWdodF9idXR0b25cbiAgICAgIHwgNCAtPiBNaWRkbGVfYnV0dG9uXG4gICAgICB8IF8gLT4gTm9fYnV0dG9uKVxuICAgIChmdW4geCAtPiB4KVxuXG5sZXQgYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyBlID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGggPVxuICBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcbiAgICA/Y2FwdHVyZVxuICAgID9vbmNlXG4gICAgP3Bhc3NpdmVcbiAgICBlXG4gICAgRXZlbnQud2hlZWxcbiAgICAoaGFuZGxlciAoZnVuIChlIDogbW91c2V3aGVlbEV2ZW50IHQpIC0+XG4gICAgICAgICBsZXQgZHggPSAtT3B0ZGVmLmdldCBlIyMud2hlZWxEZWx0YVggKGZ1biAoKSAtPiAwKSAvIDQwIGluXG4gICAgICAgICBsZXQgZHkgPSAtT3B0ZGVmLmdldCBlIyMud2hlZWxEZWx0YVkgKGZ1biAoKSAtPiBlIyMud2hlZWxEZWx0YSkgLyA0MCBpblxuICAgICAgICAgaCAoZSA6PiBtb3VzZUV2ZW50IHQpIH5keCB+ZHkpKVxuXG5sZXQgYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXIgZSBoIGNhcHQgPVxuICBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIH5jYXB0dXJlOmNhcHQgZSBoXG5cbigqKioqKilcblxubW9kdWxlIEtleWJvYXJkX2NvZGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFVuaWRlbnRpZmllZFxuICAgICgqIEFscGhhYmV0aWMgQ2hhcmFjdGVycyAqKVxuICAgIHwgS2V5QVxuICAgIHwgS2V5QlxuICAgIHwgS2V5Q1xuICAgIHwgS2V5RFxuICAgIHwgS2V5RVxuICAgIHwgS2V5RlxuICAgIHwgS2V5R1xuICAgIHwgS2V5SFxuICAgIHwgS2V5SVxuICAgIHwgS2V5SlxuICAgIHwgS2V5S1xuICAgIHwgS2V5TFxuICAgIHwgS2V5TVxuICAgIHwgS2V5TlxuICAgIHwgS2V5T1xuICAgIHwgS2V5UFxuICAgIHwgS2V5UVxuICAgIHwgS2V5UlxuICAgIHwgS2V5U1xuICAgIHwgS2V5VFxuICAgIHwgS2V5VVxuICAgIHwgS2V5VlxuICAgIHwgS2V5V1xuICAgIHwgS2V5WFxuICAgIHwgS2V5WVxuICAgIHwgS2V5WlxuICAgICgqIERpZ2l0cyAqKVxuICAgIHwgRGlnaXQwXG4gICAgfCBEaWdpdDFcbiAgICB8IERpZ2l0MlxuICAgIHwgRGlnaXQzXG4gICAgfCBEaWdpdDRcbiAgICB8IERpZ2l0NVxuICAgIHwgRGlnaXQ2XG4gICAgfCBEaWdpdDdcbiAgICB8IERpZ2l0OFxuICAgIHwgRGlnaXQ5XG4gICAgfCBNaW51c1xuICAgIHwgRXF1YWxcbiAgICAoKiBXaGl0ZXNwYWNlICopXG4gICAgfCBUYWJcbiAgICB8IEVudGVyXG4gICAgfCBTcGFjZVxuICAgICgqIEVkaXRpbmcgKilcbiAgICB8IEVzY2FwZVxuICAgIHwgQmFja3NwYWNlXG4gICAgfCBJbnNlcnRcbiAgICB8IERlbGV0ZVxuICAgIHwgQ2Fwc0xvY2tcbiAgICAoKiBNaXNjIFByaW50YWJsZSAqKVxuICAgIHwgQnJhY2tldExlZnRcbiAgICB8IEJyYWNrZXRSaWdodFxuICAgIHwgU2VtaWNvbG9uXG4gICAgfCBRdW90ZVxuICAgIHwgQmFja3F1b3RlXG4gICAgfCBCYWNrc2xhc2hcbiAgICB8IENvbW1hXG4gICAgfCBQZXJpb2RcbiAgICB8IFNsYXNoXG4gICAgKCogRnVuY3Rpb24ga2V5cyAqKVxuICAgIHwgRjFcbiAgICB8IEYyXG4gICAgfCBGM1xuICAgIHwgRjRcbiAgICB8IEY1XG4gICAgfCBGNlxuICAgIHwgRjdcbiAgICB8IEY4XG4gICAgfCBGOVxuICAgIHwgRjEwXG4gICAgfCBGMTFcbiAgICB8IEYxMlxuICAgICgqIE51bXBhZCBrZXlzICopXG4gICAgfCBOdW1wYWQwXG4gICAgfCBOdW1wYWQxXG4gICAgfCBOdW1wYWQyXG4gICAgfCBOdW1wYWQzXG4gICAgfCBOdW1wYWQ0XG4gICAgfCBOdW1wYWQ1XG4gICAgfCBOdW1wYWQ2XG4gICAgfCBOdW1wYWQ3XG4gICAgfCBOdW1wYWQ4XG4gICAgfCBOdW1wYWQ5XG4gICAgfCBOdW1wYWRNdWx0aXBseVxuICAgIHwgTnVtcGFkU3VidHJhY3RcbiAgICB8IE51bXBhZEFkZFxuICAgIHwgTnVtcGFkRGVjaW1hbFxuICAgIHwgTnVtcGFkRXF1YWxcbiAgICB8IE51bXBhZEVudGVyXG4gICAgfCBOdW1wYWREaXZpZGVcbiAgICB8IE51bUxvY2tcbiAgICAoKiBNb2RpZmllciBrZXlzICopXG4gICAgfCBDb250cm9sTGVmdFxuICAgIHwgQ29udHJvbFJpZ2h0XG4gICAgfCBNZXRhTGVmdFxuICAgIHwgTWV0YVJpZ2h0XG4gICAgfCBTaGlmdExlZnRcbiAgICB8IFNoaWZ0UmlnaHRcbiAgICB8IEFsdExlZnRcbiAgICB8IEFsdFJpZ2h0XG4gICAgKCogQXJyb3cga2V5cyAqKVxuICAgIHwgQXJyb3dMZWZ0XG4gICAgfCBBcnJvd1JpZ2h0XG4gICAgfCBBcnJvd1VwXG4gICAgfCBBcnJvd0Rvd25cbiAgICAoKiBOYXZpZ2F0aW9uICopXG4gICAgfCBQYWdlVXBcbiAgICB8IFBhZ2VEb3duXG4gICAgfCBIb21lXG4gICAgfCBFbmRcbiAgICAoKiBTb3VuZCAqKVxuICAgIHwgVm9sdW1lTXV0ZVxuICAgIHwgVm9sdW1lRG93blxuICAgIHwgVm9sdW1lVXBcbiAgICAoKiBNZWRpYSAqKVxuICAgIHwgTWVkaWFUcmFja1ByZXZpb3VzXG4gICAgfCBNZWRpYVRyYWNrTmV4dFxuICAgIHwgTWVkaWFQbGF5UGF1c2VcbiAgICB8IE1lZGlhU3RvcFxuICAgICgqIEJyb3dzZXIgc3BlY2lhbCAqKVxuICAgIHwgQ29udGV4dE1lbnVcbiAgICB8IEJyb3dzZXJTZWFyY2hcbiAgICB8IEJyb3dzZXJIb21lXG4gICAgfCBCcm93c2VyRmF2b3JpdGVzXG4gICAgfCBCcm93c2VyUmVmcmVzaFxuICAgIHwgQnJvd3NlclN0b3BcbiAgICB8IEJyb3dzZXJGb3J3YXJkXG4gICAgfCBCcm93c2VyQmFja1xuICAgICgqIE1pc2MgKilcbiAgICB8IE9TTGVmdFxuICAgIHwgT1NSaWdodFxuICAgIHwgU2Nyb2xsTG9ja1xuICAgIHwgUHJpbnRTY3JlZW5cbiAgICB8IEludGxCYWNrc2xhc2hcbiAgICB8IEludGxZZW5cbiAgICB8IFBhdXNlXG5cbiAgbGV0IHRyeV9jb2RlIHYgPVxuICAgIG1hdGNoIEpzLnRvX3N0cmluZyB2IHdpdGhcbiAgICAoKiBBbHBoYWJldGljIENoYXJhY3RlcnMgKilcbiAgICB8IFwiS2V5QVwiIC0+IEtleUFcbiAgICB8IFwiS2V5QlwiIC0+IEtleUJcbiAgICB8IFwiS2V5Q1wiIC0+IEtleUNcbiAgICB8IFwiS2V5RFwiIC0+IEtleURcbiAgICB8IFwiS2V5RVwiIC0+IEtleUVcbiAgICB8IFwiS2V5RlwiIC0+IEtleUZcbiAgICB8IFwiS2V5R1wiIC0+IEtleUdcbiAgICB8IFwiS2V5SFwiIC0+IEtleUhcbiAgICB8IFwiS2V5SVwiIC0+IEtleUlcbiAgICB8IFwiS2V5SlwiIC0+IEtleUpcbiAgICB8IFwiS2V5S1wiIC0+IEtleUtcbiAgICB8IFwiS2V5TFwiIC0+IEtleUxcbiAgICB8IFwiS2V5TVwiIC0+IEtleU1cbiAgICB8IFwiS2V5TlwiIC0+IEtleU5cbiAgICB8IFwiS2V5T1wiIC0+IEtleU9cbiAgICB8IFwiS2V5UFwiIC0+IEtleVBcbiAgICB8IFwiS2V5UVwiIC0+IEtleVFcbiAgICB8IFwiS2V5UlwiIC0+IEtleVJcbiAgICB8IFwiS2V5U1wiIC0+IEtleVNcbiAgICB8IFwiS2V5VFwiIC0+IEtleVRcbiAgICB8IFwiS2V5VVwiIC0+IEtleVVcbiAgICB8IFwiS2V5VlwiIC0+IEtleVZcbiAgICB8IFwiS2V5V1wiIC0+IEtleVdcbiAgICB8IFwiS2V5WFwiIC0+IEtleVhcbiAgICB8IFwiS2V5WVwiIC0+IEtleVlcbiAgICB8IFwiS2V5WlwiIC0+IEtleVpcbiAgICAoKiBEaWdpdHMgKilcbiAgICB8IFwiRGlnaXQwXCIgLT4gRGlnaXQwXG4gICAgfCBcIkRpZ2l0MVwiIC0+IERpZ2l0MVxuICAgIHwgXCJEaWdpdDJcIiAtPiBEaWdpdDJcbiAgICB8IFwiRGlnaXQzXCIgLT4gRGlnaXQzXG4gICAgfCBcIkRpZ2l0NFwiIC0+IERpZ2l0NFxuICAgIHwgXCJEaWdpdDVcIiAtPiBEaWdpdDVcbiAgICB8IFwiRGlnaXQ2XCIgLT4gRGlnaXQ2XG4gICAgfCBcIkRpZ2l0N1wiIC0+IERpZ2l0N1xuICAgIHwgXCJEaWdpdDhcIiAtPiBEaWdpdDhcbiAgICB8IFwiRGlnaXQ5XCIgLT4gRGlnaXQ5XG4gICAgfCBcIk1pbnVzXCIgLT4gTWludXNcbiAgICB8IFwiRXF1YWxcIiAtPiBFcXVhbFxuICAgICgqIFdoaXRlc3BhY2UgKilcbiAgICB8IFwiVGFiXCIgLT4gVGFiXG4gICAgfCBcIkVudGVyXCIgLT4gRW50ZXJcbiAgICB8IFwiU3BhY2VcIiAtPiBTcGFjZVxuICAgICgqIEVkaXRpbmcgKilcbiAgICB8IFwiRXNjYXBlXCIgLT4gRXNjYXBlXG4gICAgfCBcIkJhY2tzcGFjZVwiIC0+IEJhY2tzcGFjZVxuICAgIHwgXCJJbnNlcnRcIiAtPiBJbnNlcnRcbiAgICB8IFwiRGVsZXRlXCIgLT4gRGVsZXRlXG4gICAgfCBcIkNhcHNMb2NrXCIgLT4gQ2Fwc0xvY2tcbiAgICAoKiBNaXNjIFByaW50YWJsZSAqKVxuICAgIHwgXCJCcmFja2V0TGVmdFwiIC0+IEJyYWNrZXRMZWZ0XG4gICAgfCBcIkJyYWNrZXRSaWdodFwiIC0+IEJyYWNrZXRSaWdodFxuICAgIHwgXCJTZW1pY29sb25cIiAtPiBTZW1pY29sb25cbiAgICB8IFwiUXVvdGVcIiAtPiBRdW90ZVxuICAgIHwgXCJCYWNrcXVvdGVcIiAtPiBCYWNrcXVvdGVcbiAgICB8IFwiQmFja3NsYXNoXCIgLT4gQmFja3NsYXNoXG4gICAgfCBcIkNvbW1hXCIgLT4gQ29tbWFcbiAgICB8IFwiUGVyaW9kXCIgLT4gUGVyaW9kXG4gICAgfCBcIlNsYXNoXCIgLT4gU2xhc2hcbiAgICAoKiBGdW5jdGlvbiBrZXlzICopXG4gICAgfCBcIkYxXCIgLT4gRjFcbiAgICB8IFwiRjJcIiAtPiBGMlxuICAgIHwgXCJGM1wiIC0+IEYzXG4gICAgfCBcIkY0XCIgLT4gRjRcbiAgICB8IFwiRjVcIiAtPiBGNVxuICAgIHwgXCJGNlwiIC0+IEY2XG4gICAgfCBcIkY3XCIgLT4gRjdcbiAgICB8IFwiRjhcIiAtPiBGOFxuICAgIHwgXCJGOVwiIC0+IEY5XG4gICAgfCBcIkYxMFwiIC0+IEYxMFxuICAgIHwgXCJGMTFcIiAtPiBGMTFcbiAgICB8IFwiRjEyXCIgLT4gRjEyXG4gICAgKCogTnVtcGFkIGtleXMgKilcbiAgICB8IFwiTnVtcGFkMFwiIC0+IE51bXBhZDBcbiAgICB8IFwiTnVtcGFkMVwiIC0+IE51bXBhZDFcbiAgICB8IFwiTnVtcGFkMlwiIC0+IE51bXBhZDJcbiAgICB8IFwiTnVtcGFkM1wiIC0+IE51bXBhZDNcbiAgICB8IFwiTnVtcGFkNFwiIC0+IE51bXBhZDRcbiAgICB8IFwiTnVtcGFkNVwiIC0+IE51bXBhZDVcbiAgICB8IFwiTnVtcGFkNlwiIC0+IE51bXBhZDZcbiAgICB8IFwiTnVtcGFkN1wiIC0+IE51bXBhZDdcbiAgICB8IFwiTnVtcGFkOFwiIC0+IE51bXBhZDhcbiAgICB8IFwiTnVtcGFkOVwiIC0+IE51bXBhZDlcbiAgICB8IFwiTnVtcGFkTXVsdGlwbHlcIiAtPiBOdW1wYWRNdWx0aXBseVxuICAgIHwgXCJOdW1wYWRTdWJ0cmFjdFwiIC0+IE51bXBhZFN1YnRyYWN0XG4gICAgfCBcIk51bXBhZEFkZFwiIC0+IE51bXBhZEFkZFxuICAgIHwgXCJOdW1wYWREZWNpbWFsXCIgLT4gTnVtcGFkRGVjaW1hbFxuICAgIHwgXCJOdW1wYWRFcXVhbFwiIC0+IE51bXBhZEVxdWFsXG4gICAgfCBcIk51bXBhZEVudGVyXCIgLT4gTnVtcGFkRW50ZXJcbiAgICB8IFwiTnVtcGFkRGl2aWRlXCIgLT4gTnVtcGFkRGl2aWRlXG4gICAgfCBcIk51bUxvY2tcIiAtPiBOdW1Mb2NrXG4gICAgKCogTW9kaWZpZXIga2V5cyAqKVxuICAgIHwgXCJDb250cm9sTGVmdFwiIC0+IENvbnRyb2xMZWZ0XG4gICAgfCBcIkNvbnRyb2xSaWdodFwiIC0+IENvbnRyb2xSaWdodFxuICAgIHwgXCJNZXRhTGVmdFwiIC0+IE1ldGFMZWZ0XG4gICAgfCBcIk1ldGFSaWdodFwiIC0+IE1ldGFSaWdodFxuICAgIHwgXCJTaGlmdExlZnRcIiAtPiBTaGlmdExlZnRcbiAgICB8IFwiU2hpZnRSaWdodFwiIC0+IFNoaWZ0UmlnaHRcbiAgICB8IFwiQWx0TGVmdFwiIC0+IEFsdExlZnRcbiAgICB8IFwiQWx0UmlnaHRcIiAtPiBBbHRSaWdodFxuICAgICgqIEFycm93IGtleXMgKilcbiAgICB8IFwiQXJyb3dMZWZ0XCIgLT4gQXJyb3dMZWZ0XG4gICAgfCBcIkFycm93UmlnaHRcIiAtPiBBcnJvd1JpZ2h0XG4gICAgfCBcIkFycm93VXBcIiAtPiBBcnJvd1VwXG4gICAgfCBcIkFycm93RG93blwiIC0+IEFycm93RG93blxuICAgICgqIE5hdmlnYXRpb24gKilcbiAgICB8IFwiUGFnZVVwXCIgLT4gUGFnZVVwXG4gICAgfCBcIlBhZ2VEb3duXCIgLT4gUGFnZURvd25cbiAgICB8IFwiSG9tZVwiIC0+IEhvbWVcbiAgICB8IFwiRW5kXCIgLT4gRW5kXG4gICAgKCogU291bmQgKilcbiAgICB8IFwiVm9sdW1lTXV0ZVwiIC0+IFZvbHVtZU11dGVcbiAgICB8IFwiVm9sdW1lRG93blwiIC0+IFZvbHVtZURvd25cbiAgICB8IFwiVm9sdW1lVXBcIiAtPiBWb2x1bWVVcFxuICAgICgqIE1lZGlhICopXG4gICAgfCBcIk1lZGlhVHJhY2tQcmV2aW91c1wiIC0+IE1lZGlhVHJhY2tQcmV2aW91c1xuICAgIHwgXCJNZWRpYVRyYWNrTmV4dFwiIC0+IE1lZGlhVHJhY2tOZXh0XG4gICAgfCBcIk1lZGlhUGxheVBhdXNlXCIgLT4gTWVkaWFQbGF5UGF1c2VcbiAgICB8IFwiTWVkaWFTdG9wXCIgLT4gTWVkaWFTdG9wXG4gICAgKCogQnJvd3NlciBzcGVjaWFsICopXG4gICAgfCBcIkNvbnRleHRNZW51XCIgLT4gQ29udGV4dE1lbnVcbiAgICB8IFwiQnJvd3NlclNlYXJjaFwiIC0+IEJyb3dzZXJTZWFyY2hcbiAgICB8IFwiQnJvd3NlckhvbWVcIiAtPiBCcm93c2VySG9tZVxuICAgIHwgXCJCcm93c2VyRmF2b3JpdGVzXCIgLT4gQnJvd3NlckZhdm9yaXRlc1xuICAgIHwgXCJCcm93c2VyUmVmcmVzaFwiIC0+IEJyb3dzZXJSZWZyZXNoXG4gICAgfCBcIkJyb3dzZXJTdG9wXCIgLT4gQnJvd3NlclN0b3BcbiAgICB8IFwiQnJvd3NlckZvcndhcmRcIiAtPiBCcm93c2VyRm9yd2FyZFxuICAgIHwgXCJCcm93c2VyQmFja1wiIC0+IEJyb3dzZXJCYWNrXG4gICAgKCogTWlzYyAqKVxuICAgIHwgXCJPU0xlZnRcIiAtPiBPU0xlZnRcbiAgICB8IFwiT1NSaWdodFwiIC0+IE9TUmlnaHRcbiAgICB8IFwiU2Nyb2xsTG9ja1wiIC0+IFNjcm9sbExvY2tcbiAgICB8IFwiUHJpbnRTY3JlZW5cIiAtPiBQcmludFNjcmVlblxuICAgIHwgXCJJbnRsQmFja3NsYXNoXCIgLT4gSW50bEJhY2tzbGFzaFxuICAgIHwgXCJJbnRsWWVuXCIgLT4gSW50bFllblxuICAgIHwgXCJQYXVzZVwiIC0+IFBhdXNlXG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbGVmdCA9IGZ1bmN0aW9uXG4gICAgfCAxNiAtPiBTaGlmdExlZnRcbiAgICB8IDE3IC0+IENvbnRyb2xMZWZ0XG4gICAgfCAxOCAtPiBBbHRMZWZ0XG4gICAgfCA5MSAtPiBNZXRhTGVmdFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX3JpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IDE2IC0+IFNoaWZ0UmlnaHRcbiAgICB8IDE3IC0+IENvbnRyb2xSaWdodFxuICAgIHwgMTggLT4gQWx0UmlnaHRcbiAgICB8IDkxIC0+IE1ldGFSaWdodFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX251bXBhZCA9IGZ1bmN0aW9uXG4gICAgfCA0NiAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCA0NSAtPiBOdW1wYWQwXG4gICAgfCAzNSAtPiBOdW1wYWQxXG4gICAgfCA0MCAtPiBOdW1wYWQyXG4gICAgfCAzNCAtPiBOdW1wYWQzXG4gICAgfCAzNyAtPiBOdW1wYWQ0XG4gICAgfCAxMiAtPiBOdW1wYWQ1XG4gICAgfCAzOSAtPiBOdW1wYWQ2XG4gICAgfCAzNiAtPiBOdW1wYWQ3XG4gICAgfCAzOCAtPiBOdW1wYWQ4XG4gICAgfCAzMyAtPiBOdW1wYWQ5XG4gICAgfCAxMyAtPiBOdW1wYWRFbnRlclxuICAgIHwgMTExIC0+IE51bXBhZERpdmlkZVxuICAgIHwgMTA3IC0+IE51bXBhZEFkZFxuICAgIHwgMTA5IC0+IE51bXBhZFN1YnRyYWN0XG4gICAgfCAxMDYgLT4gTnVtcGFkTXVsdGlwbHlcbiAgICB8IDExMCAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCA5NiAtPiBOdW1wYWQwXG4gICAgfCA5NyAtPiBOdW1wYWQxXG4gICAgfCA5OCAtPiBOdW1wYWQyXG4gICAgfCA5OSAtPiBOdW1wYWQzXG4gICAgfCAxMDAgLT4gTnVtcGFkNFxuICAgIHwgMTAxIC0+IE51bXBhZDVcbiAgICB8IDEwMiAtPiBOdW1wYWQ2XG4gICAgfCAxMDMgLT4gTnVtcGFkN1xuICAgIHwgMTA0IC0+IE51bXBhZDhcbiAgICB8IDEwNSAtPiBOdW1wYWQ5XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbm9ybWFsID0gZnVuY3Rpb25cbiAgICB8IDI3IC0+IEVzY2FwZVxuICAgIHwgMTEyIC0+IEYxXG4gICAgfCAxMTMgLT4gRjJcbiAgICB8IDExNCAtPiBGM1xuICAgIHwgMTE1IC0+IEY0XG4gICAgfCAxMTYgLT4gRjVcbiAgICB8IDExNyAtPiBGNlxuICAgIHwgMTE4IC0+IEY3XG4gICAgfCAxMTkgLT4gRjhcbiAgICB8IDEyMCAtPiBGOVxuICAgIHwgMTIxIC0+IEYxMFxuICAgIHwgMTIyIC0+IEYxMVxuICAgIHwgMTIzIC0+IEYxMlxuICAgIHwgNDIgLT4gUHJpbnRTY3JlZW5cbiAgICB8IDE0NSAtPiBTY3JvbGxMb2NrXG4gICAgfCAxOSAtPiBQYXVzZVxuICAgIHwgMTkyIC0+IEJhY2txdW90ZVxuICAgIHwgNDkgLT4gRGlnaXQxXG4gICAgfCA1MCAtPiBEaWdpdDJcbiAgICB8IDUxIC0+IERpZ2l0M1xuICAgIHwgNTIgLT4gRGlnaXQ0XG4gICAgfCA1MyAtPiBEaWdpdDVcbiAgICB8IDU0IC0+IERpZ2l0NlxuICAgIHwgNTUgLT4gRGlnaXQ3XG4gICAgfCA1NiAtPiBEaWdpdDhcbiAgICB8IDU3IC0+IERpZ2l0OVxuICAgIHwgNDggLT4gRGlnaXQwXG4gICAgfCAxODkgLT4gTWludXNcbiAgICB8IDE4NyAtPiBFcXVhbFxuICAgIHwgOCAtPiBCYWNrc3BhY2VcbiAgICB8IDkgLT4gVGFiXG4gICAgfCA4MSAtPiBLZXlRXG4gICAgfCA4NyAtPiBLZXlXXG4gICAgfCA2OSAtPiBLZXlFXG4gICAgfCA4MiAtPiBLZXlSXG4gICAgfCA4NCAtPiBLZXlUXG4gICAgfCA4OSAtPiBLZXlZXG4gICAgfCA4NSAtPiBLZXlVXG4gICAgfCA3MyAtPiBLZXlJXG4gICAgfCA3OSAtPiBLZXlPXG4gICAgfCA4MCAtPiBLZXlQXG4gICAgfCAyMTkgLT4gQnJhY2tldExlZnRcbiAgICB8IDIyMSAtPiBCcmFja2V0UmlnaHRcbiAgICB8IDIyMCAtPiBCYWNrc2xhc2hcbiAgICB8IDIwIC0+IENhcHNMb2NrXG4gICAgfCA2NSAtPiBLZXlBXG4gICAgfCA4MyAtPiBLZXlTXG4gICAgfCA2OCAtPiBLZXlEXG4gICAgfCA3MCAtPiBLZXlGXG4gICAgfCA3MSAtPiBLZXlHXG4gICAgfCA3MiAtPiBLZXlIXG4gICAgfCA3NCAtPiBLZXlKXG4gICAgfCA3NSAtPiBLZXlLXG4gICAgfCA3NiAtPiBLZXlMXG4gICAgfCAxODYgLT4gU2VtaWNvbG9uXG4gICAgfCAyMjIgLT4gUXVvdGVcbiAgICB8IDEzIC0+IEVudGVyXG4gICAgfCA5MCAtPiBLZXlaXG4gICAgfCA4OCAtPiBLZXlYXG4gICAgfCA2NyAtPiBLZXlDXG4gICAgfCA4NiAtPiBLZXlWXG4gICAgfCA2NiAtPiBLZXlCXG4gICAgfCA3OCAtPiBLZXlOXG4gICAgfCA3NyAtPiBLZXlNXG4gICAgfCAxODggLT4gQ29tbWFcbiAgICB8IDE5MCAtPiBQZXJpb2RcbiAgICB8IDE5MSAtPiBTbGFzaFxuICAgIHwgMzIgLT4gU3BhY2VcbiAgICB8IDkzIC0+IENvbnRleHRNZW51XG4gICAgfCA0NSAtPiBJbnNlcnRcbiAgICB8IDM2IC0+IEhvbWVcbiAgICB8IDMzIC0+IFBhZ2VVcFxuICAgIHwgNDYgLT4gRGVsZXRlXG4gICAgfCAzNSAtPiBFbmRcbiAgICB8IDM0IC0+IFBhZ2VEb3duXG4gICAgfCAzNyAtPiBBcnJvd0xlZnRcbiAgICB8IDQwIC0+IEFycm93RG93blxuICAgIHwgMzkgLT4gQXJyb3dSaWdodFxuICAgIHwgMzggLT4gQXJyb3dVcFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgbWFrZV91bmlkZW50aWZpZWQgXyA9IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfbmV4dCB2YWx1ZSBmID0gZnVuY3Rpb25cbiAgICB8IFVuaWRlbnRpZmllZCAtPiBPcHRkZWYuY2FzZSB2YWx1ZSBtYWtlX3VuaWRlbnRpZmllZCBmXG4gICAgfCB2IC0+IHZcblxuICBsZXQgcnVuX25leHQgdmFsdWUgZiA9IGZ1bmN0aW9uXG4gICAgfCBVbmlkZW50aWZpZWQgLT4gZiB2YWx1ZVxuICAgIHwgdiAtPiB2XG5cbiAgbGV0IGdldF9rZXlfY29kZSBldnQgPSBldnQjIy5rZXlDb2RlXG5cbiAgbGV0IHRyeV9rZXlfbG9jYXRpb24gZXZ0ID1cbiAgICBtYXRjaCBldnQjIy5sb2NhdGlvbiB3aXRoXG4gICAgfCAxIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbGVmdFxuICAgIHwgMiAtPiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX3JpZ2h0XG4gICAgfCAzIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbnVtcGFkXG4gICAgfCBfIC0+IG1ha2VfdW5pZGVudGlmaWVkXG5cbiAgbGV0ICggfD4gKSB4IGYgPSBmIHhcblxuICBsZXQgb2ZfZXZlbnQgZXZ0ID1cbiAgICBVbmlkZW50aWZpZWRcbiAgICB8PiB0cnlfbmV4dCBldnQjIy5jb2RlIHRyeV9jb2RlXG4gICAgfD4gdHJ5X2tleV9sb2NhdGlvbiBldnRcbiAgICB8PiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX25vcm1hbFxuXG4gIGxldCBvZl9rZXlfY29kZSA9IHRyeV9rZXlfY29kZV9ub3JtYWxcbmVuZFxuXG5tb2R1bGUgS2V5Ym9hcmRfa2V5ID0gc3RydWN0XG4gIHR5cGUgdCA9IFVjaGFyLnQgb3B0aW9uXG5cbiAgbGV0IGNoYXJfb2ZfaW50IHZhbHVlID1cbiAgICBpZiAwIDwgdmFsdWUgdGhlbiB0cnkgU29tZSAoVWNoYXIub2ZfaW50IHZhbHVlKSB3aXRoIF8gLT4gTm9uZSBlbHNlIE5vbmVcblxuICBsZXQgZW1wdHlfc3RyaW5nIF8gPSBKcy5zdHJpbmcgXCJcIlxuXG4gIGxldCBub25lIF8gPSBOb25lXG5cbiAgbGV0IG9mX2V2ZW50IGV2dCA9XG4gICAgbGV0IGtleSA9IE9wdGRlZi5nZXQgZXZ0IyMua2V5IGVtcHR5X3N0cmluZyBpblxuICAgIG1hdGNoIGtleSMjLmxlbmd0aCB3aXRoXG4gICAgfCAwIC0+IE9wdGRlZi5jYXNlIGV2dCMjLmNoYXJDb2RlIG5vbmUgY2hhcl9vZl9pbnRcbiAgICB8IDEgLT4gY2hhcl9vZl9pbnQgKGludF9vZl9mbG9hdCAoSnMudG9fZmxvYXQgKGtleSMjY2hhckNvZGVBdCAwKSkpXG4gICAgfCBfIC0+IE5vbmVcbmVuZFxuXG4oKioqKiopXG5cbmxldCBlbGVtZW50IDogI0RvbS5lbGVtZW50IHQgLT4gZWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZVxuXG50eXBlIHRhZ2dlZEVsZW1lbnQgPVxuICB8IEEgb2YgYW5jaG9yRWxlbWVudCB0XG4gIHwgQXJlYSBvZiBhcmVhRWxlbWVudCB0XG4gIHwgQXVkaW8gb2YgYXVkaW9FbGVtZW50IHRcbiAgfCBCYXNlIG9mIGJhc2VFbGVtZW50IHRcbiAgfCBCbG9ja3F1b3RlIG9mIHF1b3RlRWxlbWVudCB0XG4gIHwgQm9keSBvZiBib2R5RWxlbWVudCB0XG4gIHwgQnIgb2YgYnJFbGVtZW50IHRcbiAgfCBCdXR0b24gb2YgYnV0dG9uRWxlbWVudCB0XG4gIHwgQ2FudmFzIG9mIGNhbnZhc0VsZW1lbnQgdFxuICB8IENhcHRpb24gb2YgdGFibGVDYXB0aW9uRWxlbWVudCB0XG4gIHwgQ29sIG9mIHRhYmxlQ29sRWxlbWVudCB0XG4gIHwgQ29sZ3JvdXAgb2YgdGFibGVDb2xFbGVtZW50IHRcbiAgfCBEZWwgb2YgbW9kRWxlbWVudCB0XG4gIHwgRGl2IG9mIGRpdkVsZW1lbnQgdFxuICB8IERsIG9mIGRMaXN0RWxlbWVudCB0XG4gIHwgRW1iZWQgb2YgZW1iZWRFbGVtZW50IHRcbiAgfCBGaWVsZHNldCBvZiBmaWVsZFNldEVsZW1lbnQgdFxuICB8IEZvcm0gb2YgZm9ybUVsZW1lbnQgdFxuICB8IEZyYW1lc2V0IG9mIGZyYW1lU2V0RWxlbWVudCB0XG4gIHwgRnJhbWUgb2YgZnJhbWVFbGVtZW50IHRcbiAgfCBIMSBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDIgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEgzIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINCBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDUgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg2IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIZWFkIG9mIGhlYWRFbGVtZW50IHRcbiAgfCBIciBvZiBockVsZW1lbnQgdFxuICB8IEh0bWwgb2YgaHRtbEVsZW1lbnQgdFxuICB8IElmcmFtZSBvZiBpRnJhbWVFbGVtZW50IHRcbiAgfCBJbWcgb2YgaW1hZ2VFbGVtZW50IHRcbiAgfCBJbnB1dCBvZiBpbnB1dEVsZW1lbnQgdFxuICB8IElucyBvZiBtb2RFbGVtZW50IHRcbiAgfCBMYWJlbCBvZiBsYWJlbEVsZW1lbnQgdFxuICB8IExlZ2VuZCBvZiBsZWdlbmRFbGVtZW50IHRcbiAgfCBMaSBvZiBsaUVsZW1lbnQgdFxuICB8IExpbmsgb2YgbGlua0VsZW1lbnQgdFxuICB8IE1hcCBvZiBtYXBFbGVtZW50IHRcbiAgfCBNZXRhIG9mIG1ldGFFbGVtZW50IHRcbiAgfCBPYmplY3Qgb2Ygb2JqZWN0RWxlbWVudCB0XG4gIHwgT2wgb2Ygb0xpc3RFbGVtZW50IHRcbiAgfCBPcHRncm91cCBvZiBvcHRHcm91cEVsZW1lbnQgdFxuICB8IE9wdGlvbiBvZiBvcHRpb25FbGVtZW50IHRcbiAgfCBQIG9mIHBhcmFtRWxlbWVudCB0XG4gIHwgUGFyYW0gb2YgcGFyYW1FbGVtZW50IHRcbiAgfCBQcmUgb2YgcHJlRWxlbWVudCB0XG4gIHwgUSBvZiBxdW90ZUVsZW1lbnQgdFxuICB8IFNjcmlwdCBvZiBzY3JpcHRFbGVtZW50IHRcbiAgfCBTZWxlY3Qgb2Ygc2VsZWN0RWxlbWVudCB0XG4gIHwgU3R5bGUgb2Ygc3R5bGVFbGVtZW50IHRcbiAgfCBUYWJsZSBvZiB0YWJsZUVsZW1lbnQgdFxuICB8IFRib2R5IG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRkIG9mIHRhYmxlQ2VsbEVsZW1lbnQgdFxuICB8IFRleHRhcmVhIG9mIHRleHRBcmVhRWxlbWVudCB0XG4gIHwgVGZvb3Qgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGggb2YgdGFibGVDZWxsRWxlbWVudCB0XG4gIHwgVGhlYWQgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGl0bGUgb2YgdGl0bGVFbGVtZW50IHRcbiAgfCBUciBvZiB0YWJsZVJvd0VsZW1lbnQgdFxuICB8IFVsIG9mIHVMaXN0RWxlbWVudCB0XG4gIHwgVmlkZW8gb2YgdmlkZW9FbGVtZW50IHRcbiAgfCBPdGhlciBvZiBlbGVtZW50IHRcblxubGV0IG90aGVyIGUgPSBPdGhlciAoZSA6ICNlbGVtZW50IHQgOj4gZWxlbWVudCB0KVxuXG5sZXQgdGFnZ2VkIChlIDogI2VsZW1lbnQgdCkgPVxuICBsZXQgdGFnID0gSnMudG9fYnl0ZXN0cmluZyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgaW5cbiAgaWYgU3RyaW5nLmxlbmd0aCB0YWcgPSAwXG4gIHRoZW4gb3RoZXIgZVxuICBlbHNlXG4gICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgdGFnIDAgd2l0aFxuICAgIHwgJ2EnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImFcIiAtPiBBIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJhcmVhXCIgLT4gQXJlYSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYXVkaW9cIiAtPiBBdWRpbyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdiJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJiYXNlXCIgLT4gQmFzZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYmxvY2txdW90ZVwiIC0+IEJsb2NrcXVvdGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJvZHlcIiAtPiBCb2R5IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJiclwiIC0+IEJyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJidXR0b25cIiAtPiBCdXR0b24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnYycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiY2FudmFzXCIgLT4gQ2FudmFzIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjYXB0aW9uXCIgLT4gQ2FwdGlvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY29sXCIgLT4gQ29sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjb2xncm91cFwiIC0+IENvbGdyb3VwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2QnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImRlbFwiIC0+IERlbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZGl2XCIgLT4gRGl2IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJkbFwiIC0+IERsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2UnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImVtYmVkXCIgLT4gRW1iZWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZmllbGRzZXRcIiAtPiBGaWVsZHNldCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZm9ybVwiIC0+IEZvcm0gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZyYW1lc2V0XCIgLT4gRnJhbWVzZXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZyYW1lXCIgLT4gRnJhbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnaCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiaDFcIiAtPiBIMSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDJcIiAtPiBIMiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDNcIiAtPiBIMyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDRcIiAtPiBINCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDVcIiAtPiBINSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDZcIiAtPiBINiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaGVhZFwiIC0+IEhlYWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImhyXCIgLT4gSHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImh0bWxcIiAtPiBIdG1sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2knIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImlmcmFtZVwiIC0+IElmcmFtZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW1nXCIgLT4gSW1nIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbnB1dFwiIC0+IElucHV0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbnNcIiAtPiBJbnMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwibGFiZWxcIiAtPiBMYWJlbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGVnZW5kXCIgLT4gTGVnZW5kIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsaVwiIC0+IExpIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsaW5rXCIgLT4gTGluayAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdtJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJtYXBcIiAtPiBNYXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm1ldGFcIiAtPiBNZXRhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ28nIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcIm9iamVjdFwiIC0+IE9iamVjdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib2xcIiAtPiBPbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib3B0Z3JvdXBcIiAtPiBPcHRncm91cCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib3B0aW9uXCIgLT4gT3B0aW9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3AnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInBcIiAtPiBQIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJwYXJhbVwiIC0+IFBhcmFtIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJwcmVcIiAtPiBQcmUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwicVwiIC0+IFEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwic2NyaXB0XCIgLT4gU2NyaXB0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJzZWxlY3RcIiAtPiBTZWxlY3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInN0eWxlXCIgLT4gU3R5bGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidGFibGVcIiAtPiBUYWJsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGJvZHlcIiAtPiBUYm9keSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGRcIiAtPiBUZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGV4dGFyZWFcIiAtPiBUZXh0YXJlYSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGZvb3RcIiAtPiBUZm9vdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGhcIiAtPiBUaCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGhlYWRcIiAtPiBUaGVhZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGl0bGVcIiAtPiBUaXRsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidHJcIiAtPiBUciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd1JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ1bFwiIC0+IFVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3YnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInZpZGVvXCIgLT4gVmlkZW8gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCBfIC0+IG90aGVyIGVcblxubGV0IG9wdF90YWdnZWQgZSA9IE9wdC5jYXNlIGUgKGZ1biAoKSAtPiBOb25lKSAoZnVuIGUgLT4gU29tZSAodGFnZ2VkIGUpKVxuXG50eXBlIHRhZ2dlZEV2ZW50ID1cbiAgfCBNb3VzZUV2ZW50IG9mIG1vdXNlRXZlbnQgdFxuICB8IEtleWJvYXJkRXZlbnQgb2Yga2V5Ym9hcmRFdmVudCB0XG4gIHwgTWVzc2FnZUV2ZW50IG9mIG1lc3NhZ2VFdmVudCB0XG4gIHwgTW91c2V3aGVlbEV2ZW50IG9mIG1vdXNld2hlZWxFdmVudCB0XG4gIHwgTW91c2VTY3JvbGxFdmVudCBvZiBtb3VzZVNjcm9sbEV2ZW50IHRcbiAgfCBQb3BTdGF0ZUV2ZW50IG9mIHBvcFN0YXRlRXZlbnQgdFxuICB8IE90aGVyRXZlbnQgb2YgZXZlbnQgdFxuXG5sZXQgdGFnZ2VkRXZlbnQgKGV2IDogI2V2ZW50IEpzLnQpID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoQ29lcmNlVG8ubW91c2VFdmVudCBldilcbiAgICAoZnVuICgpIC0+XG4gICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAoQ29lcmNlVG8ua2V5Ym9hcmRFdmVudCBldilcbiAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoQ29lcmNlVG8ud2hlZWxFdmVudCBldilcbiAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAoQ29lcmNlVG8ubW91c2VTY3JvbGxFdmVudCBldilcbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgICAgICAoQ29lcmNlVG8ucG9wU3RhdGVFdmVudCBldilcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQ29lcmNlVG8ubWVzc2FnZUV2ZW50IGV2KVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiBPdGhlckV2ZW50IChldiA6PiBldmVudCB0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gTWVzc2FnZUV2ZW50IGV2KSlcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBldiAtPiBQb3BTdGF0ZUV2ZW50IGV2KSlcbiAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IE1vdXNlU2Nyb2xsRXZlbnQgZXYpKVxuICAgICAgICAgICAgKGZ1biBldiAtPiBNb3VzZXdoZWVsRXZlbnQgZXYpKVxuICAgICAgICAoZnVuIGV2IC0+IEtleWJvYXJkRXZlbnQgZXYpKVxuICAgIChmdW4gZXYgLT4gTW91c2VFdmVudCBldilcblxubGV0IG9wdF90YWdnZWRFdmVudCBldiA9IE9wdC5jYXNlIGV2IChmdW4gKCkgLT4gTm9uZSkgKGZ1biBldiAtPiBTb21lICh0YWdnZWRFdmVudCBldikpXG5cbmxldCBzdG9wUHJvcGFnYXRpb24gZXYgPVxuICBsZXQgZSA9IEpzLlVuc2FmZS5jb2VyY2UgZXYgaW5cbiAgT3B0ZGVmLmNhc2VcbiAgICBlIyMuc3RvcFByb3BhZ2F0aW9uXG4gICAgKGZ1biAoKSAtPiBlIyMuY2FuY2VsQnViYmxlIDo9IEpzLl90cnVlKVxuICAgIChmdW4gXyAtPiBlIyNfc3RvcFByb3BhZ2F0aW9uKVxuXG5sZXQgX3JlcXVlc3RBbmltYXRpb25GcmFtZSA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IHVuaXQgPVxuICBKcy5VbnNhZmUucHVyZV9leHByIChmdW4gXyAtPlxuICAgICAgbGV0IHcgPSBKcy5VbnNhZmUuY29lcmNlIHdpbmRvdyBpblxuICAgICAgbGV0IGwgPVxuICAgICAgICBbIHcjIy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5vUmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIF1cbiAgICAgIGluXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHJlcSA9IExpc3QuZmluZCAoZnVuIGMgLT4gSnMuT3B0ZGVmLnRlc3QgYykgbCBpblxuICAgICAgICBmdW4gY2FsbGJhY2sgLT4gSnMuVW5zYWZlLmZ1bl9jYWxsIHJlcSBbfCBKcy5VbnNhZmUuaW5qZWN0IGNhbGxiYWNrIHxdXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBsZXQgbm93ICgpID0gSnMudG9fZmxvYXQgKG5ldyVqcyBKcy5kYXRlX25vdykjI2dldFRpbWUgaW5cbiAgICAgICAgbGV0IGxhc3QgPSByZWYgKG5vdyAoKSkgaW5cbiAgICAgICAgZnVuIGNhbGxiYWNrIC0+XG4gICAgICAgICAgbGV0IHQgPSBub3cgKCkgaW5cbiAgICAgICAgICBsZXQgZHQgPSAhbGFzdCArLiAoMTAwMC4gLy4gNjAuKSAtLiB0IGluXG4gICAgICAgICAgbGV0IGR0ID0gaWYgUG9seS4oZHQgPCAwLikgdGhlbiAwLiBlbHNlIGR0IGluXG4gICAgICAgICAgbGFzdCA6PSB0O1xuICAgICAgICAgIGlnbm9yZSAod2luZG93IyNzZXRUaW1lb3V0IGNhbGxiYWNrIChKcy5mbG9hdCBkdCkpKVxuXG4oKioqKilcblxubGV0IGhhc1B1c2hTdGF0ZSAoKSA9IEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIHdpbmRvdyMjLmhpc3RvcnkpIyMucHVzaFN0YXRlXG5cbmxldCBoYXNQbGFjZWhvbGRlciAoKSA9XG4gIGxldCBpID0gY3JlYXRlSW5wdXQgZG9jdW1lbnQgaW5cbiAgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgaSkjIy5wbGFjZWhvbGRlclxuXG5sZXQgaGFzUmVxdWlyZWQgKCkgPVxuICBsZXQgaSA9IGNyZWF0ZUlucHV0IGRvY3VtZW50IGluXG4gIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGkpIyMucmVxdWlyZWRcblxubGV0IG92ZXJmbG93X2xpbWl0ID0gMjE0NzQ4M18wMDAuXG5cbigqIG1zICopXG5cbnR5cGUgdGltZW91dF9pZF9zYWZlID0gdGltZW91dF9pZCBvcHRpb24gcmVmXG5cbmxldCBzZXRUaW1lb3V0IGNhbGxiYWNrIGQgOiB0aW1lb3V0X2lkX3NhZmUgPVxuICBsZXQgaWQgPSByZWYgTm9uZSBpblxuICBsZXQgcmVjIGxvb3AgZCAoKSA9XG4gICAgbGV0IHN0ZXAsIHJlbWFpbiA9XG4gICAgICBpZiBQb2x5LihkID4gb3ZlcmZsb3dfbGltaXQpIHRoZW4gb3ZlcmZsb3dfbGltaXQsIGQgLS4gb3ZlcmZsb3dfbGltaXQgZWxzZSBkLCAwLlxuICAgIGluXG4gICAgbGV0IGNiID0gaWYgUG9seS4ocmVtYWluID0gMC4pIHRoZW4gY2FsbGJhY2sgZWxzZSBsb29wIHJlbWFpbiBpblxuICAgIGlkIDo9IFNvbWUgKHdpbmRvdyMjc2V0VGltZW91dCAoSnMud3JhcF9jYWxsYmFjayBjYikgKEpzLmZsb2F0IHN0ZXApKVxuICBpblxuICBsb29wIGQgKCk7XG4gIGlkXG5cbmxldCBjbGVhclRpbWVvdXQgKGlkIDogdGltZW91dF9pZF9zYWZlKSA9XG4gIG1hdGNoICFpZCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeCAtPlxuICAgICAgaWQgOj0gTm9uZTtcbiAgICAgIHdpbmRvdyMjY2xlYXJUaW1lb3V0IHhcblxubGV0IGpzX2FycmF5X29mX2NvbGxlY3Rpb24gKGMgOiAjZWxlbWVudCBjb2xsZWN0aW9uIEpzLnQpIDogI2VsZW1lbnQgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgPVxuICBKcy5VbnNhZmUuKG1ldGhfY2FsbCAoanNfZXhwciBcIltdLnNsaWNlXCIpIFwiY2FsbFwiIFt8IGluamVjdCBjIHxdKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbV9odG1sXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBmb3JtRGF0YSA9IG9iamVjdFxuICBtZXRob2QgYXBwZW5kIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZF9ibG9iIDoganNfc3RyaW5nIHQgLT4gRmlsZS5ibG9iIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxubGV0IGZvcm1EYXRhIDogZm9ybURhdGEgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zvcm1EYXRhXG5cbmxldCBmb3JtRGF0YV9mb3JtIDogKGZvcm1FbGVtZW50IHQgLT4gZm9ybURhdGEgdCkgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9Gb3JtRGF0YVxuXG50eXBlIGZvcm1fZWx0ID1cbiAgWyBgU3RyaW5nIG9mIGpzX3N0cmluZyB0XG4gIHwgYEZpbGUgb2YgRmlsZS5maWxlIHRcbiAgXVxuXG50eXBlIGZvcm1fY29udGVudHMgPVxuICBbIGBGaWVsZHMgb2YgKHN0cmluZyAqIGZvcm1fZWx0KSBsaXN0IHJlZlxuICB8IGBGb3JtRGF0YSBvZiBmb3JtRGF0YSB0XG4gIF1cblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgdiA6OiBxIC0+IChcbiAgICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIHFcbiAgICAgIHwgU29tZSB2JyAtPiB2JyA6OiBmaWx0ZXJfbWFwIGYgcSlcblxuY2xhc3MgdHlwZSBzdWJtaXR0YWJsZUVsZW1lbnQgPSBvYmplY3RcbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxubGV0IGhhdmVfY29udGVudCAoZWx0IDogc3VibWl0dGFibGVFbGVtZW50IHQpID1cbiAgZWx0IyMubmFtZSMjLmxlbmd0aCA+IDAgJiYgbm90IChKcy50b19ib29sIGVsdCMjLmRpc2FibGVkKVxuXG5sZXQgZ2V0X3RleHRhcmVhX3ZhbCAoZWx0IDogdGV4dEFyZWFFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgWyBuYW1lLCBgU3RyaW5nIGVsdCMjLnZhbHVlIF1cbiAgZWxzZSBbXVxuXG5sZXQgZ2V0X3NlbGVjdF92YWwgKGVsdCA6IHNlbGVjdEVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBpZiB0b19ib29sIGVsdCMjLm11bHRpcGxlXG4gICAgdGhlblxuICAgICAgbGV0IG9wdGlvbnMgPVxuICAgICAgICBBcnJheS5pbml0IGVsdCMjLm9wdGlvbnMjIy5sZW5ndGggKGZ1biBpIC0+IE9wdC50b19vcHRpb24gKGVsdCMjLm9wdGlvbnMjI2l0ZW0gaSkpXG4gICAgICBpblxuICAgICAgZmlsdGVyX21hcFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBlIC0+XG4gICAgICAgICAgICAgIGlmIEpzLnRvX2Jvb2wgZSMjLnNlbGVjdGVkIHRoZW4gU29tZSAobmFtZSwgYFN0cmluZyBlIyMudmFsdWUpIGVsc2UgTm9uZSlcbiAgICAgICAgKEFycmF5LnRvX2xpc3Qgb3B0aW9ucylcbiAgICBlbHNlIFsgbmFtZSwgYFN0cmluZyBlbHQjIy52YWx1ZSBdXG4gIGVsc2UgW11cblxuY2xhc3MgdHlwZSBmaWxlX2lucHV0ID0gb2JqZWN0XG4gIGluaGVyaXQgaW5wdXRFbGVtZW50XG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG11bHRpcGxlIDogYm9vbCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBnZXRfaW5wdXRfdmFsID8oZ2V0ID0gZmFsc2UpIChlbHQgOiBpbnB1dEVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBsZXQgdmFsdWUgPSBlbHQjIy52YWx1ZSBpblxuICAgIG1hdGNoIHRvX2J5dGVzdHJpbmcgZWx0IyMuX3R5cGUjI3RvTG93ZXJDYXNlIHdpdGhcbiAgICB8IFwiY2hlY2tib3hcIiB8IFwicmFkaW9cIiAtPlxuICAgICAgICBpZiB0b19ib29sIGVsdCMjLmNoZWNrZWQgdGhlbiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXSBlbHNlIFtdXG4gICAgfCBcInN1Ym1pdFwiIHwgXCJyZXNldFwiIC0+IFtdXG4gICAgfCBcInRleHRcIiB8IFwicGFzc3dvcmRcIiAtPiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICAgIHwgXCJmaWxlXCIgLT4gKFxuICAgICAgICBpZiBnZXRcbiAgICAgICAgdGhlbiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGVsdCA6IGZpbGVfaW5wdXQgdCA9IFVuc2FmZS5jb2VyY2UgZWx0IGluXG4gICAgICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBlbHQjIy5maWxlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGxpc3QgLT4gKFxuICAgICAgICAgICAgICBpZiBsaXN0IyMubGVuZ3RoID0gMFxuICAgICAgICAgICAgICB0aGVuIFsgbmFtZSwgYFN0cmluZyAoSnMuc3RyaW5nIFwiXCIpIF1cbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZWx0IyMubXVsdGlwbGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgZmFsc2UgLT4gKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChsaXN0IyNpdGVtIDApIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBmaWxlIC0+IFsgbmFtZSwgYEZpbGUgZmlsZSBdKVxuICAgICAgICAgICAgICAgIHwgU29tZSB0cnVlIC0+XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcl9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gZiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGZpbGUgLT4gU29tZSAobmFtZSwgYEZpbGUgZmlsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgKEFycmF5LnRvX2xpc3QgKEFycmF5LmluaXQgbGlzdCMjLmxlbmd0aCAoZnVuIGkgLT4gbGlzdCMjaXRlbSBpKSkpKSlcbiAgICB8IF8gLT4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgZWxzZSBbXVxuXG5sZXQgZ2V0X2Zvcm1fZWxlbWVudHMgKGZvcm0gOiBmb3JtRWxlbWVudCB0KSA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9XG4gICAgaWYgaSA8IDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKGZvcm0jIy5lbGVtZW50cyMjaXRlbSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCBhY2MgKGkgLSBpKVxuICAgICAgfCBTb21lIHggLT4gbG9vcCAoeCA6OiBhY2MpIChpIC0gMSlcbiAgaW5cbiAgbG9vcCBbXSAoZm9ybSMjLmVsZW1lbnRzIyMubGVuZ3RoIC0gMSlcblxubGV0IGdldF9lbGVtZW50X2NvbnRlbnQgP2dldCB2ID1cbiAgbWF0Y2ggdGFnZ2VkIHYgd2l0aFxuICB8IFNlbGVjdCB2IC0+IGdldF9zZWxlY3RfdmFsIHZcbiAgfCBJbnB1dCB2IC0+IGdldF9pbnB1dF92YWwgP2dldCB2XG4gIHwgVGV4dGFyZWEgdiAtPiBnZXRfdGV4dGFyZWFfdmFsIHZcbiAgfCBfIC0+IFtdXG5cbmxldCBmb3JtX2VsZW1lbnRzID9nZXQgKGZvcm0gOiBmb3JtRWxlbWVudCB0KSA9XG4gIExpc3QuZmxhdHRlbiAoTGlzdC5tYXAgKGZ1biB2IC0+IGdldF9lbGVtZW50X2NvbnRlbnQgP2dldCB2KSAoZ2V0X2Zvcm1fZWxlbWVudHMgZm9ybSkpXG5cbmxldCBhcHBlbmQgKGZvcm1fY29udGVudHMgOiBmb3JtX2NvbnRlbnRzKSAoZm9ybV9lbHQgOiBzdHJpbmcgKiBmb3JtX2VsdCkgPVxuICBtYXRjaCBmb3JtX2NvbnRlbnRzIHdpdGhcbiAgfCBgRmllbGRzIGxpc3QgLT4gbGlzdCA6PSBmb3JtX2VsdCA6OiAhbGlzdFxuICB8IGBGb3JtRGF0YSBmIC0+IChcbiAgICAgIG1hdGNoIGZvcm1fZWx0IHdpdGhcbiAgICAgIHwgbmFtZSwgYFN0cmluZyBzIC0+IGYjI2FwcGVuZCAoc3RyaW5nIG5hbWUpIHNcbiAgICAgIHwgbmFtZSwgYEZpbGUgZmlsZSAtPiBmIyNhcHBlbmRfYmxvYiAoc3RyaW5nIG5hbWUpIChmaWxlIDo+IEZpbGUuYmxvYiB0KSlcblxubGV0IGVtcHR5X2Zvcm1fY29udGVudHMgKCkgPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIChKcy5kZWYgZm9ybURhdGEpIHdpdGhcbiAgfCBOb25lIC0+IGBGaWVsZHMgKHJlZiBbXSlcbiAgfCBTb21lIGNvbnN0ciAtPiBgRm9ybURhdGEgKG5ldyVqcyBjb25zdHIpXG5cbmxldCBwb3N0X2Zvcm1fY29udGVudHMgZm9ybSA9XG4gIGxldCBjb250ZW50cyA9IGVtcHR5X2Zvcm1fY29udGVudHMgKCkgaW5cbiAgTGlzdC5pdGVyIChhcHBlbmQgY29udGVudHMpIChmb3JtX2VsZW1lbnRzIGZvcm0pO1xuICBjb250ZW50c1xuXG5sZXQgZ2V0X2Zvcm1fY29udGVudHMgZm9ybSA9XG4gIExpc3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IG5hbWUsIGBTdHJpbmcgcyAtPiBuYW1lLCB0b19zdHJpbmcgc1xuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICAoZm9ybV9lbGVtZW50cyB+Z2V0OnRydWUgZm9ybSlcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBVTlNFTlRcbiAgfCBPUEVORURcbiAgfCBIRUFERVJTX1JFQ0VJVkVEXG4gIHwgTE9BRElOR1xuICB8IERPTkVcblxudHlwZSBfIHJlc3BvbnNlID1cbiAgfCBBcnJheUJ1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBCbG9iIDogI0ZpbGUuYmxvYiB0IE9wdC50IHJlc3BvbnNlXG4gIHwgRG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBPcHQudCByZXNwb25zZVxuICB8IEpTT04gOiAnYSBPcHQudCByZXNwb25zZVxuICB8IFRleHQgOiBqc19zdHJpbmcgdCByZXNwb25zZVxuICB8IERlZmF1bHQgOiBzdHJpbmcgcmVzcG9uc2VcblxuY2xhc3MgdHlwZSB4bWxIdHRwUmVxdWVzdCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbnJlYWR5c3RhdGVjaGFuZ2UgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9vcGVuIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBfb3Blbl9mdWxsIDpcbiAgICAgICBqc19zdHJpbmcgdFxuICAgIC0+IGpzX3N0cmluZyB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4ganNfc3RyaW5nIHQgb3B0XG4gICAgLT4ganNfc3RyaW5nIHQgb3B0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJlcXVlc3RIZWFkZXIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgb3ZlcnJpZGVNaW1lVHlwZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kIDoganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Jsb2IgOiAjRmlsZS5ibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfZG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9mb3JtRGF0YSA6IEZvcm0uZm9ybURhdGEgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RhdHVzIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhdHVzVGV4dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0UmVzcG9uc2VIZWFkZXIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBbGxSZXNwb25zZUhlYWRlcnMgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJlc3BvbnNlIDogRmlsZS5maWxlX2FueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlVGV4dCA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlWE1MIDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBpbmhlcml0IEZpbGUucHJvZ3Jlc3NFdmVudFRhcmdldFxuXG4gIG1ldGhvZCBvbnRpbWVvdXQgOlxuICAgICgnc2VsZiB0LCAnc2VsZiBGaWxlLnByb2dyZXNzRXZlbnQgdCkgRG9tLmV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHVwbG9hZCA6IHhtbEh0dHBSZXF1ZXN0VXBsb2FkIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgeG1sSHR0cFJlcXVlc3RVcGxvYWQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IEZpbGUucHJvZ3Jlc3NFdmVudFRhcmdldFxuZW5kXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlIHR5cCA9IHhtbEh0dHBSZXF1ZXN0IEZpbGUucHJvZ3Jlc3NFdmVudCB0IERvbS5FdmVudC50eXBcblxuICBsZXQgcmVhZHlzdGF0ZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwicmVhZHlzdGF0ZWNoYW5nZVwiXG5cbiAgbGV0IGxvYWRzdGFydCA9IERvbS5FdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBEb20uRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgYWJvcnQgPSBEb20uRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgZXJyb3IgPSBEb20uRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgbG9hZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IHRpbWVvdXQgPSBEb20uRXZlbnQubWFrZSBcInRpbWVvdXRcIlxuXG4gIGxldCBsb2FkZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZW5kXCJcbmVuZFxuXG5leHRlcm5hbCBjcmVhdGUgOiB1bml0IC0+IHhtbEh0dHBSZXF1ZXN0IEpzLnQgPSBcImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXCJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgT0NhbWxQcm86IEdyw6lnb2lyZSBIZW5yeSwgw4dhxJ9kYcWfIEJvem1hbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21faHRtbFxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gd29ya2VyID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsIGVycm9yRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tZXNzYWdlIDogKCdzZWxmIHQsICdiIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb3N0TWVzc2FnZSA6ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXJtaW5hdGUgOiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgZXJyb3JFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGVuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsaW5lbm8gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2xubyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVycm9yIDogVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgZGF0YSA6ICdhIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd29ya2VyID0gVW5zYWZlLmdsb2JhbCMjLl9Xb3JrZXJcblxubGV0IGNyZWF0ZSBzY3JpcHQgPSBuZXclanMgd29ya2VyIChzdHJpbmcgc2NyaXB0KVxuXG5sZXQgaW1wb3J0X3NjcmlwdHMgc2NyaXB0cyA6IHVuaXQgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5pbXBvcnRTY3JpcHRzKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLmltcG9ydF9zY3JpcHRzIGlzIHVuZGVmaW5lZFwiO1xuICBVbnNhZmUuZnVuX2NhbGxcbiAgICBVbnNhZmUuZ2xvYmFsIyMuaW1wb3J0U2NyaXB0c1xuICAgIChBcnJheS5tYXAgKGZ1biBzIC0+IFVuc2FmZS5pbmplY3QgKHN0cmluZyBzKSkgKEFycmF5Lm9mX2xpc3Qgc2NyaXB0cykpXG5cbmxldCBzZXRfb25tZXNzYWdlIGhhbmRsZXIgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5vbm1lc3NhZ2UpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIub25tZXNzYWdlIGlzIHVuZGVmaW5lZFwiO1xuICBsZXQganNfaGFuZGxlciAoZXYgOiAnYSBtZXNzYWdlRXZlbnQgSnMudCkgPSBoYW5kbGVyIGV2IyMuZGF0YSBpblxuICBVbnNhZmUuZ2xvYmFsIyMub25tZXNzYWdlIDo9IHdyYXBfY2FsbGJhY2sganNfaGFuZGxlclxuXG5sZXQgcG9zdF9tZXNzYWdlIG1zZyA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLnBvc3RNZXNzYWdlKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLm9ubWVzc2FnZSBpcyB1bmRlZmluZWRcIjtcbiAgVW5zYWZlLmdsb2JhbCMjcG9zdE1lc3NhZ2UgbXNnXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIEphY3F1ZXMtUGFzY2FsIERlcGxhaXhcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBDT05ORUNUSU5HXG4gIHwgT1BFTlxuICB8IENMT1NJTkdcbiAgfCBDTE9TRURcblxuY2xhc3MgdHlwZSBbJ2FdIGNsb3NlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBjb2RlIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhc29uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3YXNDbGVhbiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGFfYnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGFfYmxvYiA6IEZpbGUuYmxvYiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHdlYlNvY2tldCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdXJsIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ1ZmZlcmVkQW1vdW50IDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25vcGVuIDogKCdzZWxmIEpzLnQsICdzZWxmIERvbS5ldmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jbG9zZSA6XG4gICAgKCdzZWxmIEpzLnQsICdzZWxmIGNsb3NlRXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgSnMudCwgJ3NlbGYgRG9tLmV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBleHRlbnNpb25zIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcm90b2NvbCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgY2xvc2Vfd2l0aENvZGUgOiBpbnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsb3NlX3dpdGhDb2RlQW5kUmVhc29uIDogaW50IC0+IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOlxuICAgICgnc2VsZiBKcy50LCAnc2VsZiBtZXNzYWdlRXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGJpbmFyeVR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgbWV0aG9kIHNlbmQgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgc2VuZF9idWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Jsb2IgOiBGaWxlLmJsb2IgSnMudCAtPiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgd2ViU29ja2V0ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9XZWJTb2NrZXRcblxubGV0IHdlYlNvY2tldF93aXRoUHJvdG9jb2wgPSB3ZWJTb2NrZXRcblxubGV0IHdlYlNvY2tldF93aXRoUHJvdG9jb2xzID0gd2ViU29ja2V0XG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCB3ZWJTb2NrZXRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuKCoqIDUuMSBUeXBlcyAqKVxuXG50eXBlIHNpemVpID0gaW50XG5cbnR5cGUgc2l6ZWlwdHIgPSBpbnRcblxudHlwZSBpbnRwdHIgPSBpbnRcblxudHlwZSB1aW50ID0gaW50XG5cbnR5cGUgY2xhbXBmID0gbnVtYmVyX3RcblxudHlwZSB2b2lkXG5cbnR5cGUgY2xlYXJCdWZmZXJNYXNrID0gaW50XG5cbnR5cGUgYmVnaW5Nb2RlXG5cbnR5cGUgYmxlbmRpbmdGYWN0b3JcblxudHlwZSBibGVuZE1vZGVcblxudHlwZSBidWZmZXJUYXJnZXRcblxudHlwZSBidWZmZXJVc2FnZVxuXG50eXBlIGN1bGxGYWNlTW9kZVxuXG50eXBlIGRlcHRoRnVuY3Rpb25cblxudHlwZSBlbmFibGVDYXBcblxudHlwZSBlcnJvckNvZGVcblxudHlwZSBmcm9udEZhY2VEaXJcblxudHlwZSBoaW50VGFyZ2V0XG5cbnR5cGUgaGludE1vZGVcblxudHlwZSB0ZXh0dXJlVW5pdCA9IGludFxuXG50eXBlICdhIHBpeGVsU3RvcmVQYXJhbVxuXG50eXBlIHN0ZW5jaWxPcFxuXG50eXBlIGZiVGFyZ2V0XG5cbnR5cGUgYXR0YWNobWVudFBvaW50XG5cbnR5cGUgcmJUYXJnZXRcblxudHlwZSB0ZXhUYXJnZXRcblxudHlwZSAnYSBwYXJhbWV0ZXJcblxudHlwZSAnYSBidWZmZXJQYXJhbWV0ZXJcblxudHlwZSAnYSB2ZXJ0ZXhBdHRyaWJQYXJhbVxuXG50eXBlIHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbVxuXG50eXBlICdhIGF0dGFjaFBhcmFtXG5cbnR5cGUgZnJhbWVidWZmZXJTdGF0dXNcblxudHlwZSAnYSByZW5kZXJidWZmZXJQYXJhbVxuXG50eXBlIGZvcm1hdFxuXG50eXBlIHBpeGVsRm9ybWF0XG5cbnR5cGUgcGl4ZWxUeXBlXG5cbnR5cGUgJ2EgdGV4UGFyYW1cblxudHlwZSBkYXRhVHlwZVxuXG50eXBlIHNoYWRlclR5cGVcblxudHlwZSAnYSBwcm9ncmFtUGFyYW1cblxudHlwZSAnYSBzaGFkZXJQYXJhbVxuXG50eXBlIHRleHR1cmVGaWx0ZXJcblxudHlwZSB3cmFwTW9kZVxuXG50eXBlIHRleEZpbHRlclxuXG50eXBlIHVuaWZvcm1UeXBlXG5cbnR5cGUgY29sb3JzcGFjZUNvbnZlcnNpb25cblxudHlwZSBzaGFkZXJQcmVjaXNpb25UeXBlXG5cbnR5cGUgb2JqZWN0VHlwZVxuXG4oKiogNS4yIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgKilcbmNsYXNzIHR5cGUgY29udGV4dEF0dHJpYnV0ZXMgPSBvYmplY3RcbiAgbWV0aG9kIGFscGhhIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZGVwdGggOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGVuY2lsIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgYW50aWFsaWFzIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlbXVsdGlwbGllZEFscGhhIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlc2VydmVEcmF3aW5nQnVmZmVyIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlZmVyTG93UG93ZXJUb0hpZ2hQZXJmb3JtYW5jZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQgOiBib29sIHQgcHJvcFxuZW5kXG5cbmxldCBkZWZhdWx0Q29udGV4dEF0dHJpYnV0ZXMgPVxuICBKcy5VbnNhZmUuKFxuICAgIG9ialxuICAgICAgW3wgXCJhbHBoYVwiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwiZGVwdGhcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcInN0ZW5jaWxcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJhbnRpYWxpYXNcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcInByZW11bHRpcGxpZWRBbHBoYVwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcInByZXNlcnZlRHJhd2luZ0J1ZmZlclwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcInByZWZlckxvd1Bvd2VyVG9IaWdoUGVyZm9ybWFuY2VcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0XCIsIGluamVjdCBfZmFsc2VcbiAgICAgIHxdKVxuXG50eXBlIGJ1ZmZlclxuXG50eXBlIGZyYW1lYnVmZmVyXG5cbnR5cGUgcHJvZ3JhbVxuXG50eXBlIHJlbmRlcmJ1ZmZlclxuXG50eXBlIHNoYWRlclxuXG50eXBlIHRleHR1cmVcblxudHlwZSAnYSB1bmlmb3JtTG9jYXRpb25cblxuY2xhc3MgdHlwZSBhY3RpdmVJbmZvID0gb2JqZWN0XG4gIG1ldGhvZCBzaXplIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX3R5cGUgOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzaGFkZXJQcmVjaXNpb25Gb3JtYXQgPSBvYmplY3RcbiAgbWV0aG9kIHJhbmdlTWluIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmFuZ2VNYXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVjaXNpb24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVuZGVyaW5nQ29udGV4dCA9IG9iamVjdFxuICAoKiogNS4xMy4xIEF0dHJpYnV0ZXMgKilcblxuICBtZXRob2QgY2FudmFzIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHJhd2luZ0J1ZmZlcldpZHRoIDogc2l6ZWkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkcmF3aW5nQnVmZmVySGVpZ2h0IDogc2l6ZWkgcmVhZG9ubHlfcHJvcFxuXG4gICgqKiA1LjEzLjIgR2V0dGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udGV4dCAqKVxuXG4gIG1ldGhvZCBnZXRDb250ZXh0QXR0cmlidXRlcyA6IGNvbnRleHRBdHRyaWJ1dGVzIHQgbWV0aFxuXG4gICgqKiA1LjEzLjMgU2V0dGluZyBhbmQgZ2V0dGluZyBzdGF0ZSAqKVxuXG4gIG1ldGhvZCBhY3RpdmVUZXh0dXJlIDogdGV4dHVyZVVuaXQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kQ29sb3IgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRXF1YXRpb24gOiBibGVuZE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRXF1YXRpb25TZXBhcmF0ZSA6IGJsZW5kTW9kZSAtPiBibGVuZE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRnVuYyA6IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEZ1bmNTZXBhcmF0ZSA6XG4gICAgYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyQ29sb3IgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGVwdGggOiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyU3RlbmNpbCA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sb3JNYXNrIDogYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sIHQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjdWxsRmFjZSA6IGN1bGxGYWNlTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhGdW5jIDogZGVwdGhGdW5jdGlvbiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhNYXNrIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aFJhbmdlIDogY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlzYWJsZSA6IGVuYWJsZUNhcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZW5hYmxlIDogZW5hYmxlQ2FwIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcm9udEZhY2UgOiBmcm9udEZhY2VEaXIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBhcmFtZXRlciA6ICdhLiAnYSBwYXJhbWV0ZXIgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRFcnJvciA6IGVycm9yQ29kZSBtZXRoXG5cbiAgbWV0aG9kIGhpbnQgOiBoaW50VGFyZ2V0IC0+IGhpbnRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpc0VuYWJsZWQgOiBlbmFibGVDYXAgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgbGluZVdpZHRoIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBpeGVsU3RvcmVpIDogJ2EuICdhIHBpeGVsU3RvcmVQYXJhbSAtPiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcG9seWdvbk9mZnNldCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzYW1wbGVDb3ZlcmFnZSA6IGNsYW1wZiAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxGdW5jIDogZGVwdGhGdW5jdGlvbiAtPiBpbnQgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbEZ1bmNTZXBhcmF0ZSA6IGN1bGxGYWNlTW9kZSAtPiBkZXB0aEZ1bmN0aW9uIC0+IGludCAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsTWFzayA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxNYXNrU2VwYXJhdGUgOiBjdWxsRmFjZU1vZGUgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE9wIDogc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxPcFNlcGFyYXRlIDpcbiAgICBjdWxsRmFjZU1vZGUgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuNCBWaWV3aW5nIGFuZCBjbGlwcGluZyAqKVxuXG4gIG1ldGhvZCBzY2lzc29yIDogaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgdmlld3BvcnQgOiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjUgQnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZEJ1ZmZlciA6IGJ1ZmZlclRhcmdldCAtPiBidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEJ1ZmZlcl8gOiBidWZmZXJUYXJnZXQgLT4gYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhX2NyZWF0ZSA6IGJ1ZmZlclRhcmdldCAtPiBzaXplaXB0ciAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YSA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdCAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YV9yYXcgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJTdWJEYXRhIDpcbiAgICBidWZmZXJUYXJnZXQgLT4gaW50cHRyIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyU3ViRGF0YV9yYXcgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBpbnRwdHIgLT4gVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQnVmZmVyIDogYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVCdWZmZXIgOiBidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QnVmZmVyUGFyYW1ldGVyIDogJ2EuIGJ1ZmZlclRhcmdldCAtPiAnYSBidWZmZXJQYXJhbWV0ZXIgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc0J1ZmZlciA6IGJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuNiBGcmFtZWJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRGcmFtZWJ1ZmZlciA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRGcmFtZWJ1ZmZlcl8gOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyU3RhdHVzIG1ldGhcblxuICBtZXRob2QgY3JlYXRlRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciA6XG4gICAgZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcmFtZWJ1ZmZlclRleHR1cmUyRCA6XG4gICAgZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIgOlxuICAgICdhLiBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gJ2EgYXR0YWNoUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc0ZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjcgUmVuZGVyYnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZFJlbmRlcmJ1ZmZlciA6IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kUmVuZGVyYnVmZmVyXyA6IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyIDogJ2EuIHJiVGFyZ2V0IC0+ICdhIHJlbmRlcmJ1ZmZlclBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCByZW5kZXJidWZmZXJTdG9yYWdlIDogcmJUYXJnZXQgLT4gZm9ybWF0IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjggVGV4dHVyZSBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRUZXh0dXJlIDogdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZFRleHR1cmVfIDogdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXByZXNzZWRUZXhJbWFnZTJEIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcHJlc3NlZFRleFN1YkltYWdlMkQgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb3B5VGV4SW1hZ2UyRCA6XG4gICAgdGV4VGFyZ2V0IC0+IGludCAtPiBwaXhlbEZvcm1hdCAtPiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29weVRleFN1YkltYWdlMkQgOlxuICAgIHRleFRhcmdldCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVUZXh0dXJlIDogdGV4dHVyZSB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVGV4dHVyZSA6IHRleHR1cmUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2VuZXJhdGVNaXBtYXAgOiB0ZXhUYXJnZXQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRleFBhcmFtZXRlciA6IHRleFRhcmdldCAtPiAnYSB0ZXhQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzVGV4dHVyZSA6IHRleHR1cmUgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX25ldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiB2b2lkIG9wdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21WaWV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21JbWFnZURhdGEgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZURhdGEgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21JbWFnZSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUNhbnZhcyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21WaWRlbyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLnZpZGVvRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoge1tcbiAgICAgIG1ldGhvZCB0ZXhQYXJhbWV0ZXJmIDogdGV4VGFyZ2V0IC0+IHRleFBhcmFtIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuICAgICBdfVxuICAqKVxuICBtZXRob2QgdGV4UGFyYW1ldGVyaSA6IHRleFRhcmdldCAtPiAnYSB0ZXhQYXJhbSAtPiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tVmlldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUltYWdlRGF0YSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZURhdGEgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21JbWFnZSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZUVsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21DYW52YXMgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbVZpZGVvIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLnZpZGVvRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuOSBQcm9ncmFtcyBhbmQgU2hhZGVycyAqKVxuXG4gIG1ldGhvZCBhdHRhY2hTaGFkZXIgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRBdHRyaWJMb2NhdGlvbiA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21waWxlU2hhZGVyIDogc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVByb2dyYW0gOiBwcm9ncmFtIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTaGFkZXIgOiBzaGFkZXJUeXBlIC0+IHNoYWRlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlU2hhZGVyIDogc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRldGFjaFNoYWRlciA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0YWNoZWRTaGFkZXJzIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9ncmFtUGFyYW1ldGVyIDogJ2EuIHByb2dyYW0gdCAtPiAnYSBwcm9ncmFtUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9ncmFtSW5mb0xvZyA6IHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclBhcmFtZXRlciA6ICdhLiBzaGFkZXIgdCAtPiAnYSBzaGFkZXJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdCA6XG4gICAgc2hhZGVyVHlwZSAtPiBzaGFkZXJQcmVjaXNpb25UeXBlIC0+IHNoYWRlclByZWNpc2lvbkZvcm1hdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVySW5mb0xvZyA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyU291cmNlIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBpc1Byb2dyYW0gOiBwcm9ncmFtIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgaXNTaGFkZXIgOiBzaGFkZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5rUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2hhZGVyU291cmNlIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVzZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZhbGlkYXRlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMCBVbmlmb3JtcyBhbmQgYXR0cmlidXRlcyAqKVxuXG4gIG1ldGhvZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFjdGl2ZUF0dHJpYiA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGFjdGl2ZUluZm8gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFjdGl2ZVVuaWZvcm0gOiBwcm9ncmFtIHQgLT4gdWludCAtPiBhY3RpdmVJbmZvIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJMb2NhdGlvbiA6IHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVbmlmb3JtIDogJ2EgJ2IuIHByb2dyYW0gdCAtPiAnYSB1bmlmb3JtTG9jYXRpb24gdCAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIGdldFVuaWZvcm1Mb2NhdGlvbiA6ICdhLiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgLT4gJ2EgdW5pZm9ybUxvY2F0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRWZXJ0ZXhBdHRyaWIgOiAnYS4gdWludCAtPiAnYSB2ZXJ0ZXhBdHRyaWJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFZlcnRleEF0dHJpYk9mZnNldCA6IHVpbnQgLT4gdmVydGV4QXR0cmliUG9pbnRlclBhcmFtIC0+IHNpemVpcHRyIG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmIDogbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZnZfdHlwZWQgOlxuICAgIG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWZ2IDogbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpIDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpdl90eXBlZCA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaXYgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZiA6IFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmdl90eXBlZCA6XG4gICAgWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmZ2IDogWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaSA6IFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpdiA6IFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaXZfdHlwZWQgOlxuICAgIFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2YgOlxuICAgIFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmdl90eXBlZCA6XG4gICAgWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2Z2IDogWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaSA6IFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaXYgOiBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2l2X3R5cGVkIDpcbiAgICBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmIDpcbiAgICAgICBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGZ2X3R5cGVkIDpcbiAgICBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZnYgOiBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpIDogWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aXYgOiBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGl2X3R5cGVkIDpcbiAgICBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDJmdiA6XG4gICAgWyBgbWF0MiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4MmZ2X3R5cGVkIDpcbiAgICBbIGBtYXQyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4M2Z2IDpcbiAgICBbIGBtYXQzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgzZnZfdHlwZWQgOlxuICAgIFsgYG1hdDMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXg0ZnYgOlxuICAgIFsgYG1hdDQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDRmdl90eXBlZCA6XG4gICAgWyBgbWF0NCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWYgOiB1aW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmIDogdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2Z2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGYgOlxuICAgIHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliUG9pbnRlciA6XG4gICAgdWludCAtPiBpbnQgLT4gZGF0YVR5cGUgLT4gYm9vbCB0IC0+IHNpemVpIC0+IGludHB0ciAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMSBXcml0aW5nIHRvIHRoZSBkcmF3aW5nIGJ1ZmZlciAqKVxuXG4gIG1ldGhvZCBjbGVhciA6IGNsZWFyQnVmZmVyTWFzayAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0FycmF5cyA6IGJlZ2luTW9kZSAtPiBpbnQgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdFbGVtZW50cyA6IGJlZ2luTW9kZSAtPiBzaXplaSAtPiBkYXRhVHlwZSAtPiBpbnRwdHIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbmlzaCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmbHVzaCA6IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEyIFJlYWRpbmcgYmFjayBwaXhlbHMgKilcblxuICBtZXRob2QgcmVhZFBpeGVscyA6XG4gICAgICAgaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTMgRGV0ZWN0aW5nIGNvbnRleHQgbG9zdCBldmVudHMgKilcblxuICBtZXRob2QgaXNDb250ZXh0TG9zdCA6IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTQgRGV0ZWN0aW5nIGFuZCBlbmFibGluZyBleHRlbnNpb25zICopXG5cbiAgbWV0aG9kIGdldFN1cHBvcnRlZEV4dGVuc2lvbnMgOiBqc19zdHJpbmcgdCBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZ2V0RXh0ZW5zaW9uIDogJ2EuIGpzX3N0cmluZyB0IC0+ICdhIHQgb3B0IG1ldGhcblxuICAoKiBVbnR5cGVkISAqKVxuICAoKiogQ29uc3RhbnRzICopXG5cbiAgbWV0aG9kIF9ERVBUSF9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPSU5UUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX0xPT1BfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfU1RSSVBfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRV9TVFJJUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVfRkFOXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9aRVJPIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19TUkNfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFNUX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19EU1RfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0FMUEhBX1NBVFVSQVRFXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfQUREXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX1NVQlRSQUNUXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1RfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlNUQU5UX0NPTE9SXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1JfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlNUQU5UX0FMUEhBXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEFfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FSUkFZX0JVRkZFUl8gOiBidWZmZXJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRUxFTUVOVF9BUlJBWV9CVUZGRVJfIDogYnVmZmVyVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NUUkVBTV9EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NUQVRJQ19EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RZTkFNSUNfRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVCA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CQUNLIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UX0FORF9CQUNLXyA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RJVEhFUiA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRklMTF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PX0VSUk9SXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX0VOVU1fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfVkFMVUVfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfT1BFUkFUSU9OXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PVVRfT0ZfTUVNT1JZXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05URVhUX0xPU1RfV0VCR0xfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVyA6IGZyb250RmFjZURpciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DQ1cgOiBmcm9udEZhY2VEaXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRE9OVF9DQVJFXyA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZBU1RFU1QgOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OSUNFU1QgOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRU5FUkFURV9NSVBNQVBfSElOVF8gOiBoaW50VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fUkdCXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fQUxQSEFfIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9EU1RfUkdCXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9TUkNfUkdCXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfQ09MT1JfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6IGJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElOR18gOiBidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RJVEhFUl9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZJTExfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfV0lEVEhfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfTU9ERV8gOiBjdWxsRmFjZU1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UX0ZBQ0VfIDogZnJvbnRGYWNlRGlyIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfV1JJVEVNQVNLXyA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ0xFQVJfVkFMVUVfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0ZVTkNfIDogZGVwdGhGdW5jdGlvbiBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9DTEVBUl9WQUxVRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfRlVOQ18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1NfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1JFRl8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVkFMVUVfTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfV1JJVEVNQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX0ZVTkNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1JFRl8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1dSSVRFTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZJRVdQT1JUIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX0JPWF8gOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0NMRUFSX1ZBTFVFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9XUklURU1BU0tfIDogYm9vbCB0IGpzX2FycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19BTElHTk1FTlRfUEFSQU0gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BBQ0tfQUxJR05NRU5UXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1RFWFRVUkVfU0laRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WSUVXUE9SVF9ESU1TXyA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1VCUElYRUxfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFRF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR1JFRU5fQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMVUVfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMUEhBX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfVU5JVFNfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUl8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9CSU5ESU5HXzJEXyA6IHRleHR1cmUgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQklORElOR19DVUJFX01BUF8gOiB0ZXh0dXJlIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQlVGRkVSU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfVkFMVUVfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlRfIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU18gOiBUeXBlZF9hcnJheS51aW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRU5FUkFURV9NSVBNQVBfSElOVF9QQVJBTV8gOiBoaW50TW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlVGRkVSX1NJWkVfIDogaW50IGJ1ZmZlclBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CVUZGRVJfVVNBR0VfIDogYnVmZmVyVXNhZ2UgYnVmZmVyUGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JZVEUgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9CWVRFX0RUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hPUlQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF8gOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9JTlRfIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9CWVRFXyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF80XzRfNF80XyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF81XzVfNV8xXyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF81XzZfNV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxQSEEgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0IgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0JBIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTFVNSU5BTkNFIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTFVNSU5BTkNFX0FMUEhBXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfSU5ERVhfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfU1RFTkNJTF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DT01QT05FTlRfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBR01FTlRfU0hBREVSXyA6IHNoYWRlclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX1NIQURFUl8gOiBzaGFkZXJUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfQVRUUklCU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZBUllJTkdfVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hBREVSX1RZUEVfIDogc2hhZGVyVHlwZSBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUxFVEVfU1RBVFVTXyA6IGJvb2wgdCBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT01QSUxFX1NUQVRVU18gOiBib29sIHQgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVMRVRFX1NUQVRVU19QUk9HIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5LX1NUQVRVU18gOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZBTElEQVRFX1NUQVRVU18gOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FUVEFDSEVEX1NIQURFUlNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfVU5JRk9STVNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfQVRUUklCVVRFU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIQURJTkdfTEFOR1VBR0VfVkVSU0lPTl8gOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VSUkVOVF9QUk9HUkFNXyA6IHByb2dyYW0gdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFTkRPUiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJFUiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJTSU9OIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfVEVYVFVSRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0JJTkRJTkdfIDogZnJhbWVidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9CSU5ESU5HXyA6IHJlbmRlcmJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1JFTkRFUkJVRkZFUl9TSVpFIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORVZFUiA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTEVTUyA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR1JFQVRFUiA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9URVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxXQVlTIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9LRUVQIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFUExBQ0UgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5DUiA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUNSIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkVSVCA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTkNSX1dSQVBfIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFQ1JfV1JBUF8gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfWkVST18gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVCA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVIgOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVF8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSX01JUE1BUF9ORUFSRVNUXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUX01JUE1BUF9MSU5FQVJfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUl9NSVBNQVBfTElORUFSXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX01BR19GSUxURVJfIDogdGV4RmlsdGVyIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfTUlOX0ZJTFRFUl8gOiB0ZXhGaWx0ZXIgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9XUkFQX1NfIDogd3JhcE1vZGUgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9XUkFQX1RfIDogd3JhcE1vZGUgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9ORV9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFXzJEXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1lfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWl8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFUEVBVCA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NMQU1QX1RPX0VER0VfIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUlSUk9SRURfUkVQRUFUXyA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQ0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVJfMkRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFUl9DVUJFXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRF8gOiBib29sIHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRURfIDogYm9vbCB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUl8gOiB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElOR18gOlxuICAgIGJ1ZmZlciB0IG9wdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUJfIDpcbiAgICBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT1dfRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NRURJVU1fRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ISUdIX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9XX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01FRElVTV9JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ISUdIX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSIDogZmJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSIDogcmJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCQTQgOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCNV9BMV8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCNTY1IDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NPTVBPTkVOVDE2XyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0lOREVYOF8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1dJRFRIXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfSEVJR0hUXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUXyA6IGZvcm1hdCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfUkVEX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9HUkVFTl9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQkxVRV9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQUxQSEFfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEVfIDogb2JqZWN0VHlwZSBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FX1JFTkRFUkJVRkZFUiA6XG4gICAgcmVuZGVyYnVmZmVyIHQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRV9URVhUVVJFIDogdGV4dHVyZSB0IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTF8gOiBpbnQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0VfIDogaW50IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0FUVEFDSE1FTlQwXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQ09NUExFVEVfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OU18gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfRkxJUF9ZX1dFQkdMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0xfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xfUEFSQU0gOlxuICAgIGNvbG9yc3BhY2VDb252ZXJzaW9uIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT05FIDogY29sb3JzcGFjZUNvbnZlcnNpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlJPV1NFUl9ERUZBVUxUX1dFQkdMXyA6IGNvbG9yc3BhY2VDb252ZXJzaW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19BTElHTk1FTlRfIDogaW50IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfRkxJUF9ZX1dFQkdMXyA6IGJvb2wgdCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMXyA6IGJvb2wgdCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTF8gOiBpbnQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiogNS4xNCBXZWJHTENvbnRleHRFdmVudCAqKVxuXG5jbGFzcyB0eXBlIGNvbnRleHRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50XG5cbiAgbWV0aG9kIHN0YXR1c01lc3NhZ2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIGxldCB3ZWJnbGNvbnRleHRsb3N0ID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dGxvc3RcIlxuXG4gIGxldCB3ZWJnbGNvbnRleHRyZXN0b3JlZCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRyZXN0b3JlZFwiXG5cbiAgbGV0IHdlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvclwiXG5lbmRcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgY2FudmFzRWxlbWVudCA9IG9iamVjdFxuICBtZXRob2QgZ2V0Q29udGV4dCA6IGpzX3N0cmluZyB0IC0+IHJlbmRlcmluZ0NvbnRleHQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb250ZXh0XyA6IGpzX3N0cmluZyB0IC0+IGNvbnRleHRBdHRyaWJ1dGVzIHQgLT4gcmVuZGVyaW5nQ29udGV4dCB0IG9wdCBtZXRoXG5lbmRcblxubGV0IGdldENvbnRleHQgKGMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQpID1cbiAgbGV0IGMgOiBjYW52YXNFbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlIGMgaW5cbiAgbGV0IGN0eCA9IGMjI2dldENvbnRleHQgKEpzLnN0cmluZyBcIndlYmdsXCIpIGluXG4gIGlmIE9wdC50ZXN0IGN0eCB0aGVuIGN0eCBlbHNlIGMgIyMgKGdldENvbnRleHQgKEpzLnN0cmluZyBcImV4cGVyaW1lbnRhbC13ZWJnbFwiKSlcblxubGV0IGdldENvbnRleHRXaXRoQXR0cmlidXRlcyAoYyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCkgYXR0cmlicyA9XG4gIGxldCBjIDogY2FudmFzRWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZSBjIGluXG4gIGxldCBjdHggPSBjIyNnZXRDb250ZXh0XyAoSnMuc3RyaW5nIFwid2ViZ2xcIikgYXR0cmlicyBpblxuICBpZiBPcHQudGVzdCBjdHggdGhlbiBjdHggZWxzZSBjIyNnZXRDb250ZXh0XyAoSnMuc3RyaW5nIFwiZXhwZXJpbWVudGFsLXdlYmdsXCIpIGF0dHJpYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0LCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWdleHAgPSBKcy5yZWdFeHAgSnMudFxuXG50eXBlIHJlc3VsdCA9IEpzLm1hdGNoX3Jlc3VsdCBKcy50XG5cbmxldCByZWdleHAgcyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCByZWdleHBfY2FzZV9mb2xkIHMgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIFwiZ2lcIilcblxubGV0IHJlZ2V4cF93aXRoX2ZsYWcgcyBmID1cbiAgbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyAoXCJnXCIgXiBmKSlcblxubGV0IGJsdW50X3N0cl9hcnJheV9nZXQgYSBpID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IGEgaSkgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuXG5sZXQgc3RyaW5nX21hdGNoIHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSBpO1xuICBKcy5PcHQudG9fb3B0aW9uIChKcy5PcHQubWFwIChyIyNleGVjIChKcy5ieXRlc3RyaW5nIHMpKSBKcy5tYXRjaF9yZXN1bHQpXG5cbmxldCBzZWFyY2ggciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IGk7XG4gIEpzLk9wdC50b19vcHRpb25cbiAgICAoSnMuT3B0Lm1hcFxuICAgICAgIChyIyNleGVjIChKcy5ieXRlc3RyaW5nIHMpKVxuICAgICAgIChmdW4gcmVzX3ByZSAtPlxuICAgICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCByZXNfcHJlIGluXG4gICAgICAgICByZXMjIy5pbmRleCwgcmVzKSlcblxubGV0IHNlYXJjaF9mb3J3YXJkID0gc2VhcmNoXG5cbmxldCBtYXRjaGVkX3N0cmluZyByID0gYmx1bnRfc3RyX2FycmF5X2dldCByIDBcblxubGV0IG1hdGNoZWRfZ3JvdXAgciBpID1cbiAgSnMuT3B0ZGVmLnRvX29wdGlvbiAoSnMuT3B0ZGVmLm1hcCAoSnMuYXJyYXlfZ2V0IHIgaSkgSnMudG9fYnl0ZXN0cmluZylcblxubGV0IHF1b3RlX3JlcGxfcmUgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuc3RyaW5nIFwiWyRdXCIpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCBxdW90ZV9yZXBsIHMgPSAoSnMuYnl0ZXN0cmluZyBzKSMjcmVwbGFjZSBxdW90ZV9yZXBsX3JlIChKcy5zdHJpbmcgXCIkJCQkXCIpXG5cbmxldCBnbG9iYWxfcmVwbGFjZSByIHMgc19ieSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSByIChxdW90ZV9yZXBsIHNfYnkpKVxuXG5sZXQgcmVwbGFjZV9maXJzdCByIHMgc19ieSA9XG4gIGxldCBmbGFncyA9XG4gICAgbWF0Y2ggSnMudG9fYm9vbCByIyMuaWdub3JlQ2FzZSwgSnMudG9fYm9vbCByIyMubXVsdGlsaW5lIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBKcy5zdHJpbmcgXCJcIlxuICAgIHwgZmFsc2UsIHRydWUgLT4gSnMuc3RyaW5nIFwibVwiXG4gICAgfCB0cnVlLCBmYWxzZSAtPiBKcy5zdHJpbmcgXCJpXCJcbiAgICB8IHRydWUsIHRydWUgLT4gSnMuc3RyaW5nIFwibWlcIlxuICBpblxuICBsZXQgcicgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyByIyMuc291cmNlIGZsYWdzIGluXG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgcicgKHF1b3RlX3JlcGwgc19ieSkpXG5cbmxldCBsaXN0X29mX2pzX2FycmF5IGEgPVxuICBsZXQgcmVjIGF1eCBhY2N1IGlkeCA9XG4gICAgaWYgaWR4IDwgMCB0aGVuIGFjY3UgZWxzZSBhdXggKGJsdW50X3N0cl9hcnJheV9nZXQgYSBpZHggOjogYWNjdSkgKGlkeCAtIDEpXG4gIGluXG4gIGF1eCBbXSAoYSMjLmxlbmd0aCAtIDEpXG5cbmxldCBzcGxpdCByIHMgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIGxpc3Rfb2ZfanNfYXJyYXkgKEpzLnN0cl9hcnJheSAoSnMuYnl0ZXN0cmluZyBzKSAjIyAoc3BsaXRfcmVnRXhwIHIpKVxuXG5sZXQgYm91bmRlZF9zcGxpdCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgbGlzdF9vZl9qc19hcnJheSAoSnMuc3RyX2FycmF5IChKcy5ieXRlc3RyaW5nIHMpICMjIChzcGxpdF9yZWdFeHBMaW1pdGVkIHIgaSkpXG5cbigqIE1vcmUgY29uc3RydWN0b3JzICopXG5cbmxldCBxdW90ZV9yZSA9IHJlZ2V4cCBcIltcXFxcXVsoKVxcXFxcXFxcfCsqLj97fV4kXVwiXG5cbmxldCBxdW90ZSBzID0gSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSBxdW90ZV9yZSAoSnMuc3RyaW5nIFwiXFxcXCQmXCIpKVxuXG5sZXQgcmVnZXhwX3N0cmluZyBzID0gcmVnZXhwIChxdW90ZSBzKVxuXG5sZXQgcmVnZXhwX3N0cmluZ19jYXNlX2ZvbGQgcyA9IHJlZ2V4cF9jYXNlX2ZvbGQgKHF1b3RlIHMpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuKCogVXJsIHRhbXBlcmluZy4gKilcblxubGV0IHNwbGl0IGMgcyA9IEpzLnN0cl9hcnJheSAocyMjc3BsaXQgKEpzLnN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKSkpXG5cbmxldCBzcGxpdF8yIGMgcyA9XG4gIGxldCBpbmRleCA9IHMjI2luZGV4T2YgKEpzLnN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKSkgaW5cbiAgaWYgaW5kZXggPCAwIHRoZW4gSnMudW5kZWZpbmVkIGVsc2UgSnMuZGVmIChzIyNzbGljZSAwIGluZGV4LCBzIyNzbGljZV9lbmQgKGluZGV4ICsgMSkpXG5cbmV4Y2VwdGlvbiBMb2NhbF9leG5cblxubGV0IGludGVycnVwdCAoKSA9IHJhaXNlIExvY2FsX2V4blxuXG4oKiB1cmwgKEFLQSBwZXJjZW50KSBlbmNvZGluZy9kZWNvZGluZyAqKVxuXG5sZXQgcGx1c19yZSA9IFJlZ2V4cC5yZWdleHBfc3RyaW5nIFwiK1wiXG5cbmxldCBlc2NhcGVfcGx1cyBzID0gUmVnZXhwLmdsb2JhbF9yZXBsYWNlIHBsdXNfcmUgcyBcIiUyQlwiXG5cbmxldCB1bmVzY2FwZV9wbHVzIHMgPSBSZWdleHAuZ2xvYmFsX3JlcGxhY2UgcGx1c19yZSBzIFwiIFwiXG5cbmxldCBwbHVzX3JlX2pzX3N0cmluZyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5zdHJpbmcgXCJcXFxcK1wiKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgdW5lc2NhcGVfcGx1c19qc19zdHJpbmcgcyA9XG4gIHBsdXNfcmVfanNfc3RyaW5nIyMubGFzdEluZGV4IDo9IDA7XG4gIHMjI3JlcGxhY2UgcGx1c19yZV9qc19zdHJpbmcgKEpzLnN0cmluZyBcIiBcIilcblxubGV0IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIHMgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy51bmVzY2FwZSAodW5lc2NhcGVfcGx1c19qc19zdHJpbmcgcykpXG5cbmxldCB1cmxkZWNvZGUgcyA9IEpzLnRvX2J5dGVzdHJpbmcgKEpzLnVuZXNjYXBlIChKcy5ieXRlc3RyaW5nICh1bmVzY2FwZV9wbHVzIHMpKSlcblxuKCpsZXQgdXJsZW5jb2RlX2pzX3N0cmluZ19zdHJpbmcgcyA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSBzKSopXG5cbmxldCB1cmxlbmNvZGUgPyh3aXRoX3BsdXMgPSB0cnVlKSBzID1cbiAgaWYgd2l0aF9wbHVzXG4gIHRoZW4gZXNjYXBlX3BsdXMgKEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSAoSnMuYnl0ZXN0cmluZyBzKSkpXG4gIGVsc2UgSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIChKcy5ieXRlc3RyaW5nIHMpKVxuXG50eXBlIGh0dHBfdXJsID1cbiAgeyBodV9ob3N0IDogc3RyaW5nICAoKiogVGhlIGhvc3QgcGFydCBvZiB0aGUgdXJsLiAqKVxuICA7IGh1X3BvcnQgOiBpbnQgICgqKiBUaGUgcG9ydCBmb3IgdGhlIGNvbm5lY3Rpb24gaWYgYW55LiAqKVxuICA7IGh1X3BhdGggOiBzdHJpbmcgbGlzdCAgKCoqIFRoZSBwYXRoIHNwbGl0IG9uIFsnLyddIGNoYXJhY3RlcnMuICopXG4gIDsgaHVfcGF0aF9zdHJpbmcgOiBzdHJpbmcgICgqKiBUaGUgb3JpZ2luYWwgZW50aXJlIHBhdGguICopXG4gIDsgaHVfYXJndW1lbnRzIDogKHN0cmluZyAqIHN0cmluZykgbGlzdFxuICAgICAgICAoKiogQXJndW1lbnRzIGFzIGEgZmllbGQtdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc29jaWF0aW9uIGxpc3QuKilcbiAgOyBodV9mcmFnbWVudCA6IHN0cmluZyAgKCoqIFRoZSBmcmFnbWVudCBwYXJ0IChhZnRlciB0aGUgWycjJ10gY2hhcmFjdGVyKS4gKilcbiAgfVxuKCoqIFRoZSB0eXBlIGZvciBIVFRQIHVybC4gKilcblxudHlwZSBmaWxlX3VybCA9XG4gIHsgZnVfcGF0aCA6IHN0cmluZyBsaXN0XG4gIDsgZnVfcGF0aF9zdHJpbmcgOiBzdHJpbmdcbiAgOyBmdV9hcmd1bWVudHMgOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gIDsgZnVfZnJhZ21lbnQgOiBzdHJpbmdcbiAgfVxuKCoqIFRoZSB0eXBlIGZvciBsb2NhbCBmaWxlIHVybHMuICopXG5cbnR5cGUgdXJsID1cbiAgfCBIdHRwIG9mIGh0dHBfdXJsXG4gIHwgSHR0cHMgb2YgaHR0cF91cmxcbiAgfCBGaWxlIG9mIGZpbGVfdXJsXG4gICAgICAoKiogVGhlIHR5cGUgZm9yIHVybHMuIFtGaWxlXSBpcyBmb3IgbG9jYWwgZmlsZXMgYW5kIFtFeG90aWMgc10gaXMgZm9yXG4gICAgdW5rbm93bi91bnN1cHBvcnRlZCBwcm90b2NvbHMuICopXG5cbmV4Y2VwdGlvbiBOb3RfYW5faHR0cF9wcm90b2NvbFxuXG5sZXQgaXNfc2VjdXJlIHByb3Rfc3RyaW5nID1cbiAgbWF0Y2ggSnMudG9fYnl0ZXN0cmluZyBwcm90X3N0cmluZyMjdG9Mb3dlckNhc2Ugd2l0aFxuICB8IFwiaHR0cHM6XCIgfCBcImh0dHBzXCIgLT4gdHJ1ZVxuICB8IFwiaHR0cDpcIiB8IFwiaHR0cFwiIC0+IGZhbHNlXG4gIHwgXCJmaWxlOlwiIHwgXCJmaWxlXCIgfCBfIC0+IHJhaXNlIE5vdF9hbl9odHRwX3Byb3RvY29sXG5cbigqIHBvcnQgbnVtYmVyICopXG5sZXQgZGVmYXVsdF9odHRwX3BvcnQgPSA4MFxuXG5sZXQgZGVmYXVsdF9odHRwc19wb3J0ID0gNDQzXG5cbigqIHBhdGggKilcbmxldCBwYXRoX29mX3BhdGhfc3RyaW5nIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBsZXQgaiA9IHRyeSBTdHJpbmcuaW5kZXhfZnJvbSBzIGkgJy8nIHdpdGggTm90X2ZvdW5kIC0+IGwgaW5cbiAgICBsZXQgd29yZCA9IFN0cmluZy5zdWIgcyBpIChqIC0gaSkgaW5cbiAgICBpZiBqID49IGwgdGhlbiBbIHdvcmQgXSBlbHNlIHdvcmQgOjogYXV4IChqICsgMSlcbiAgaW5cbiAgbWF0Y2ggYXV4IDAgd2l0aFxuICB8IFsgXCJcIiBdIC0+IFtdXG4gIHwgWyBcIlwiOyBcIlwiIF0gLT4gWyBcIlwiIF1cbiAgfCBhIC0+IGFcblxuKCogQXJndW1lbnRzICopXG5sZXQgZW5jb2RlX2FyZ3VtZW50cyBsID1cbiAgU3RyaW5nLmNvbmNhdCBcIiZcIiAoTGlzdC5tYXAgKGZ1biAobiwgdikgLT4gdXJsZW5jb2RlIG4gXiBcIj1cIiBeIHVybGVuY29kZSB2KSBsKVxuXG5sZXQgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmcgcyA9XG4gIGxldCBhcnIgPSBzcGxpdCAnJicgcyBpblxuICBsZXQgbGVuID0gYXJyIyMubGVuZ3RoIGluXG4gIGxldCBuYW1lX3ZhbHVlX3NwbGl0IHMgPSBzcGxpdF8yICc9JyBzIGluXG4gIGxldCByZWMgYXV4IGFjYyBpZHggPVxuICAgIGlmIGlkeCA8IDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBhdXhcbiAgICAgICAgICAoSnMuT3B0ZGVmLmNhc2UgKEpzLmFycmF5X2dldCBhcnIgaWR4KSBpbnRlcnJ1cHQgKGZ1biBzIC0+XG4gICAgICAgICAgICAgICBKcy5PcHRkZWYuY2FzZSAobmFtZV92YWx1ZV9zcGxpdCBzKSBpbnRlcnJ1cHQgKGZ1biAoeCwgeSkgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgZ2V0ID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgaW5cbiAgICAgICAgICAgICAgICAgICBnZXQgeCwgZ2V0IHkpKVxuICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAocHJlZCBpZHgpXG4gICAgICB3aXRoIExvY2FsX2V4biAtPiBhdXggYWNjIChwcmVkIGlkeClcbiAgaW5cbiAgYXV4IFtdIChsZW4gLSAxKVxuXG5sZXQgZGVjb2RlX2FyZ3VtZW50cyBzID0gZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcylcblxubGV0IHVybF9yZSA9XG4gIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAoSnMuYnl0ZXN0cmluZ1xuICAgICAgIFwiXihbSGhdW1R0XVtUdF1bUHBdW1NzXT8pOi8vKFswLTlhLXpBLVouLV0rfFxcXFxbWzAtOWEtekEtWi4tXStcXFxcXXxcXFxcW1swLTlBLUZhLWY6Ll0rXFxcXF0pPyg6KFswLTldKykpPygvKFteXFxcXD8jXSopKFxcXFw/KFteI10qKSk/KCMoLiopKT8pPyRcIilcblxubGV0IGZpbGVfcmUgPVxuICBuZXclanMgSnMucmVnRXhwXG4gICAgKEpzLmJ5dGVzdHJpbmcgXCJeKFtGZl1bSWldW0xsXVtFZV0pOi8vKFteXFxcXD8jXSopKFxcXFw/KFteI10qKSk/KCMoLiopKT8kXCIpXG5cbmxldCB1cmxfb2ZfanNfc3RyaW5nIHMgPVxuICBKcy5PcHQuY2FzZVxuICAgICh1cmxfcmUjI2V4ZWMgcylcbiAgICAoZnVuICgpIC0+XG4gICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAoZmlsZV9yZSMjZXhlYyBzKVxuICAgICAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgICAgIChmdW4gaGFuZGxlIC0+XG4gICAgICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCBoYW5kbGUgaW5cbiAgICAgICAgICBsZXQgcGF0aF9zdHIgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMikgaW50ZXJydXB0KVxuICAgICAgICAgIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKEZpbGVcbiAgICAgICAgICAgICAgIHsgZnVfcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJcbiAgICAgICAgICAgICAgIDsgZnVfcGF0aF9zdHJpbmcgPSBwYXRoX3N0clxuICAgICAgICAgICAgICAgOyBmdV9hcmd1bWVudHMgPVxuICAgICAgICAgICAgICAgICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA0KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgICAgICAgICA7IGZ1X2ZyYWdtZW50ID1cbiAgICAgICAgICAgICAgICAgICBKcy50b19ieXRlc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA2KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgICAgICAgICB9KSkpXG4gICAgKGZ1biBoYW5kbGUgLT5cbiAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgaGFuZGxlIGluXG4gICAgICBsZXQgc3NsID0gaXNfc2VjdXJlIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDEpIGludGVycnVwdCkgaW5cbiAgICAgIGxldCBwb3J0X29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgXCJcIiAtPiBpZiBzc2wgdGhlbiA0NDMgZWxzZSA4MFxuICAgICAgICB8IHMgLT4gaW50X29mX3N0cmluZyBzXG4gICAgICBpblxuICAgICAgbGV0IHBhdGhfc3RyID1cbiAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmdcbiAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA2KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICBpblxuICAgICAgbGV0IHVybCA9XG4gICAgICAgIHsgaHVfaG9zdCA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAyKSBpbnRlcnJ1cHQpXG4gICAgICAgIDsgaHVfcG9ydCA9XG4gICAgICAgICAgICBwb3J0X29mX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMudG9fYnl0ZXN0cmluZ1xuICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA0KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpKVxuICAgICAgICA7IGh1X3BhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyXG4gICAgICAgIDsgaHVfcGF0aF9zdHJpbmcgPSBwYXRoX3N0clxuICAgICAgICA7IGh1X2FyZ3VtZW50cyA9XG4gICAgICAgICAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA4KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgIDsgaHVfZnJhZ21lbnQgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMTApIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIFNvbWUgKGlmIHNzbCB0aGVuIEh0dHBzIHVybCBlbHNlIEh0dHAgdXJsKSlcblxubGV0IHVybF9vZl9zdHJpbmcgcyA9IHVybF9vZl9qc19zdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcylcblxubGV0IHN0cmluZ19vZl91cmwgPSBmdW5jdGlvblxuICB8IEZpbGUgeyBmdV9wYXRoID0gcGF0aDsgZnVfYXJndW1lbnRzID0gYXJnczsgZnVfZnJhZ21lbnQgPSBmcmFnOyBfIH0gLT4gKFxuICAgICAgXCJmaWxlOi8vXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcbiAgfCBIdHRwXG4gICAgICB7IGh1X2hvc3QgPSBob3N0XG4gICAgICA7IGh1X3BvcnQgPSBwb3J0XG4gICAgICA7IGh1X3BhdGggPSBwYXRoXG4gICAgICA7IGh1X2FyZ3VtZW50cyA9IGFyZ3NcbiAgICAgIDsgaHVfZnJhZ21lbnQgPSBmcmFnXG4gICAgICA7IF9cbiAgICAgIH0gLT4gKFxuICAgICAgXCJodHRwOi8vXCJcbiAgICAgIF4gdXJsZW5jb2RlIGhvc3RcbiAgICAgIF4gKG1hdGNoIHBvcnQgd2l0aFxuICAgICAgICB8IDgwIC0+IFwiXCJcbiAgICAgICAgfCBuIC0+IFwiOlwiIF4gc3RyaW5nX29mX2ludCBuKVxuICAgICAgXiBcIi9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuICB8IEh0dHBzXG4gICAgICB7IGh1X2hvc3QgPSBob3N0XG4gICAgICA7IGh1X3BvcnQgPSBwb3J0XG4gICAgICA7IGh1X3BhdGggPSBwYXRoXG4gICAgICA7IGh1X2FyZ3VtZW50cyA9IGFyZ3NcbiAgICAgIDsgaHVfZnJhZ21lbnQgPSBmcmFnXG4gICAgICA7IF9cbiAgICAgIH0gLT4gKFxuICAgICAgXCJodHRwczovL1wiXG4gICAgICBeIHVybGVuY29kZSBob3N0XG4gICAgICBeIChtYXRjaCBwb3J0IHdpdGhcbiAgICAgICAgfCA0NDMgLT4gXCJcIlxuICAgICAgICB8IG4gLT4gXCI6XCIgXiBzdHJpbmdfb2ZfaW50IG4pXG4gICAgICBeIFwiL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG5cbm1vZHVsZSBDdXJyZW50ID0gc3RydWN0XG4gIGxldCBsID1cbiAgICBpZiBKcy5PcHRkZWYudGVzdCAoSnMuT3B0ZGVmLnJldHVybiBEb21faHRtbC53aW5kb3cjIy5sb2NhdGlvbilcbiAgICB0aGVuIERvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uXG4gICAgZWxzZVxuICAgICAgbGV0IGVtcHR5ID0gSnMuc3RyaW5nIFwiXCIgaW5cbiAgICAgIG9iamVjdCVqc1xuICAgICAgICB2YWwgbXV0YWJsZSBocmVmID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwcm90b2NvbCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaG9zdCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaG9zdG5hbWUgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHBvcnQgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHBhdGhuYW1lID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBzZWFyY2ggPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhhc2ggPSBlbXB0eVxuXG4gICAgICAgIHZhbCBvcmlnaW4gPSBKcy51bmRlZmluZWRcblxuICAgICAgICBtZXRob2QgcmVsb2FkID0gKClcblxuICAgICAgICBtZXRob2QgcmVwbGFjZSBfID0gKClcblxuICAgICAgICBtZXRob2QgYXNzaWduIF8gPSAoKVxuICAgICAgZW5kXG5cbiAgbGV0IGhvc3QgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMuaG9zdG5hbWVcblxuICBsZXQgcHJvdG9jb2wgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMucHJvdG9jb2xcblxuICBsZXQgcG9ydCA9XG4gICAgKGZ1biAoKSAtPlxuICAgICAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgKEpzLnRvX2J5dGVzdHJpbmcgbCMjLnBvcnQpKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lKVxuICAgICAgKClcblxuICBsZXQgcGF0aF9zdHJpbmcgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMucGF0aG5hbWVcblxuICBsZXQgcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJpbmdcblxuICBsZXQgYXJndW1lbnRzID1cbiAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgKGlmIEpzLmVxdWFscyAobCMjLnNlYXJjaCMjY2hhckF0IDApIChKcy5zdHJpbmcgXCI/XCIpXG4gICAgICAgdGhlbiBsIyMuc2VhcmNoIyNzbGljZV9lbmQgMVxuICAgICAgIGVsc2UgbCMjLnNlYXJjaClcblxuICBsZXQgZ2V0X2ZyYWdtZW50ICgpID1cbiAgICBsZXQgcyA9IEpzLnRvX2J5dGVzdHJpbmcgbCMjLmhhc2ggaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPiAwICYmIENoYXIuZXF1YWwgcy5bMF0gJyMnXG4gICAgdGhlbiBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICBlbHNlIHNcblxuICBsZXQgc2V0X2ZyYWdtZW50IHMgPSBsIyMuaGFzaCA6PSBKcy5ieXRlc3RyaW5nIHNcblxuICBsZXQgZ2V0ICgpID0gdXJsX29mX2pzX3N0cmluZyBsIyMuaHJlZlxuXG4gIGxldCBzZXQgdSA9IGwjIy5ocmVmIDo9IEpzLmJ5dGVzdHJpbmcgKHN0cmluZ19vZl91cmwgdSlcblxuICBsZXQgYXNfc3RyaW5nID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLmhyZWZcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5leHRlcm5hbCBjcmVhdGVfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IGNvbnRlbnQ6c3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfY3JlYXRlX2ZpbGVcIlxuXG5leHRlcm5hbCByZWFkX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfcmVhZF9maWxlX2NvbnRlbnRcIlxuXG5sZXQgdXBkYXRlX2ZpbGUgfm5hbWUgfmNvbnRlbnQgPVxuICBsZXQgb2MgPSBvcGVuX291dCBuYW1lIGluXG4gIG91dHB1dF9zdHJpbmcgb2MgY29udGVudDtcbiAgY2xvc2Vfb3V0IG9jXG5cbmV4dGVybmFsIHNldF9jaGFubmVsX291dHB1dCcgOlxuICBvdXRfY2hhbm5lbCAtPiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcIlxuXG5leHRlcm5hbCBzZXRfY2hhbm5lbF9pbnB1dCcgOiBpbl9jaGFubmVsIC0+ICh1bml0IC0+IHN0cmluZykgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcIlxuXG5sZXQgc2V0X2NoYW5uZWxfZmx1c2hlciAob3V0X2NoYW5uZWwgOiBvdXRfY2hhbm5lbCkgKGYgOiBzdHJpbmcgLT4gdW5pdCkgPVxuICBsZXQgZicgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgPVxuICAgIEpzLndyYXBfY2FsbGJhY2sgKGZ1biBzIC0+IGYgKEpzLnRvX2J5dGVzdHJpbmcgcykpXG4gIGluXG4gIHNldF9jaGFubmVsX291dHB1dCcgb3V0X2NoYW5uZWwgZidcblxubGV0IHNldF9jaGFubmVsX2ZpbGxlciAoaW5fY2hhbm5lbCA6IGluX2NoYW5uZWwpIChmIDogdW5pdCAtPiBzdHJpbmcpID1cbiAgbGV0IGYnIDogKHVuaXQgLT4gc3RyaW5nKSBKcy5jYWxsYmFjayA9IEpzLndyYXBfY2FsbGJhY2sgZiBpblxuICBzZXRfY2hhbm5lbF9pbnB1dCcgaW5fY2hhbm5lbCBmJ1xuXG5leHRlcm5hbCBtb3VudF9wb2ludCA6IHVuaXQgLT4gc3RyaW5nIGxpc3QgPSBcImNhbWxfbGlzdF9tb3VudF9wb2ludFwiXG5cbmV4dGVybmFsIG1vdW50X2F1dG9sb2FkIDpcbiAgc3RyaW5nIC0+IChzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbW91bnRfYXV0b2xvYWRcIlxuXG5leHRlcm5hbCB1bm1vdW50IDogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfdW5tb3VudFwiXG5cbmxldCBtb3VudCB+cGF0aCBmID1cbiAgbW91bnRfYXV0b2xvYWQgcGF0aCAoSnMud3JhcF9jYWxsYmFjayAoZnVuIHByZWZpeCBwYXRoIC0+IGYgfnByZWZpeCB+cGF0aCkpXG5cbmxldCB1bm1vdW50IH5wYXRoID0gdW5tb3VudCBwYXRoXG5cbmxldCBqc19vZl9vY2FtbF92ZXJzaW9uID1cbiAgaWYgU3RyaW5nLmVxdWFsIExpYl92ZXJzaW9uLmdpdF92ZXJzaW9uIFwiXCJcbiAgdGhlbiBMaWJfdmVyc2lvbi5zXG4gIGVsc2UgTGliX3ZlcnNpb24ucyBeIFwiK1wiIF4gTGliX3ZlcnNpb24uZ2l0X3ZlcnNpb25cbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQWxleGFuZGVyIFlhbmluXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlclNpemUgPSBvYmplY3RcbiAgbWV0aG9kIGlubGluZVNpemUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJsb2NrU2l6ZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50UmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJveFNpemUgOiByZXNpemVPYnNlcnZlclNpemUgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudEJveFNpemUgOiByZXNpemVPYnNlcnZlclNpemUgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgYm94IDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9ic2VydmVfd2l0aE9wdGlvbnMgOlxuICAgICNEb20ubm9kZSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyT3B0aW9ucyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB1bm9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9yZXNpemVfb2JzZXJ2ZXJfb3B0aW9ucyAoKSA6IHJlc2l6ZU9ic2VydmVyT3B0aW9ucyBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCByZXNpemVPYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fUmVzaXplT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHJlc2l6ZU9ic2VydmVyXG5cbmxldCByZXNpemVPYnNlcnZlciA6XG4gICAgKCAgIChyZXNpemVPYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiByZXNpemVPYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgICAgIEpzLmNhbGxiYWNrXG4gICAgIC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgcmVzaXplT2JzZXJ2ZXJcblxubGV0IG9ic2VydmVcbiAgICB+KG5vZGUgOiAjRG9tLm5vZGUgSnMudClcbiAgICB+KGYgOiByZXNpemVPYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiByZXNpemVPYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgPyhib3ggOiBKcy5qc19zdHJpbmcgSnMudCBvcHRpb24pXG4gICAgKCkgOiByZXNpemVPYnNlcnZlciBKcy50ID1cbiAgbGV0IG9icyA9IG5ldyVqcyByZXNpemVPYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICAobWF0Y2ggYm94IHdpdGhcbiAgfCBOb25lIC0+IG9icyMjb2JzZXJ2ZSBub2RlXG4gIHwgU29tZSBib3ggLT5cbiAgICAgIGxldCBvcHRzID0gZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMgKCkgaW5cbiAgICAgIG9wdHMjIy5ib3ggOj0gYm94O1xuICAgICAgb2JzIyNvYnNlcnZlX3dpdGhPcHRpb25zIG5vZGUgb3B0cyk7XG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAyMSBQaGlsaXAgV2hpdGVcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgPSBvYmplY3RcbiAgbWV0aG9kIGVudHJ5VHlwZXMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZUVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbnRyeVR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0VGltZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHVyYXRpb24gOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRFbnRyaWVzIDogcGVyZm9ybWFuY2VFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6IHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0IEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBwZXJmb3JtYW5jZUVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1BlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHBlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgOlxuICAgICggICAocGVyZm9ybWFuY2VPYnNlcnZlckVudHJ5TGlzdCBKcy50IC0+IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAtPiBwZXJmb3JtYW5jZU9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgcGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZSB+ZW50cnlfdHlwZXMgfmYgPVxuICBsZXQgZW50cnlfdHlwZXMgPSBlbnRyeV90eXBlcyB8PiBMaXN0Lm1hcCBKcy5zdHJpbmcgfD4gQXJyYXkub2ZfbGlzdCB8PiBKcy5hcnJheSBpblxuICBsZXQgcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCA6IHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0IEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgbGV0ICgpID0gcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCMjLmVudHJ5VHlwZXMgOj0gZW50cnlfdHlwZXMgaW5cbiAgbGV0IG9icyA9IG5ldyVqcyBwZXJmb3JtYW5jZU9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIGxldCAoKSA9IG9icyMjb2JzZXJ2ZSBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IGluXG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgbXV0YXRpb25PYnNlcnZlckluaXQgPSBvYmplY3RcbiAgbWV0aG9kIGNoaWxkTGlzdCA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlcyA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhcmFjdGVyRGF0YSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VidHJlZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlT2xkVmFsdWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJhY3RlckRhdGFPbGRWYWx1ZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlRmlsdGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbXV0YXRpb25SZWNvcmQgPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWRkZWROb2RlcyA6IERvbS5ub2RlIERvbS5ub2RlTGlzdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVtb3ZlZE5vZGVzIDogRG9tLm5vZGUgRG9tLm5vZGVMaXN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlTmFtZXNwYWNlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2xkVmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbXV0YXRpb25PYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXJJbml0IEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0ICgpIDogbXV0YXRpb25PYnNlcnZlckluaXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgbXV0YXRpb25PYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fTXV0YXRpb25PYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgbXV0YXRpb25PYnNlcnZlclxuXG5sZXQgbXV0YXRpb25PYnNlcnZlciA6XG4gICAgKCAgIChtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgIC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBtdXRhdGlvbk9ic2VydmVyXG5cbmxldCBvYnNlcnZlXG4gICAgfihub2RlIDogI0RvbS5ub2RlIEpzLnQpXG4gICAgfihmIDogbXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgID8oY2hpbGRfbGlzdCA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlcyA6IGJvb2wgb3B0aW9uKVxuICAgID8oY2hhcmFjdGVyX2RhdGEgOiBib29sIG9wdGlvbilcbiAgICA/KHN1YnRyZWUgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZV9vbGRfdmFsdWUgOiBib29sIG9wdGlvbilcbiAgICA/KGNoYXJhY3Rlcl9kYXRhX29sZF92YWx1ZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlX2ZpbHRlciA6IEpzLmpzX3N0cmluZyBKcy50IGxpc3Qgb3B0aW9uKVxuICAgICgpIDogbXV0YXRpb25PYnNlcnZlciBKcy50ID1cbiAgbGV0IG9wdF9pdGVyIHggZiA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGxldCBvYnMgPSBuZXclanMgbXV0YXRpb25PYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICBsZXQgY2ZnID0gZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCAoKSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBjaGlsZF9saXN0IChmdW4gdiAtPiBjZmcjIy5jaGlsZExpc3QgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgYXR0cmlidXRlcyAoZnVuIHYgLT4gY2ZnIyMuYXR0cmlidXRlcyA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBjaGFyYWN0ZXJfZGF0YSAoZnVuIHYgLT4gY2ZnIyMuY2hhcmFjdGVyRGF0YSA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBzdWJ0cmVlIChmdW4gdiAtPiBjZmcjIy5zdWJ0cmVlIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGF0dHJpYnV0ZV9vbGRfdmFsdWUgKGZ1biB2IC0+IGNmZyMjLmF0dHJpYnV0ZU9sZFZhbHVlIDo9IHYpIGluXG4gIGxldCAoKSA9XG4gICAgb3B0X2l0ZXIgY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIChmdW4gdiAtPiBjZmcjIy5jaGFyYWN0ZXJEYXRhT2xkVmFsdWUgOj0gdilcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBvcHRfaXRlciBhdHRyaWJ1dGVfZmlsdGVyIChmdW4gbCAtPlxuICAgICAgICBjZmcjIy5hdHRyaWJ1dGVGaWx0ZXIgOj0gSnMuYXJyYXkgKEFycmF5Lm9mX2xpc3QgbCkpXG4gIGluXG4gIGxldCAoKSA9IG9icyMjb2JzZXJ2ZSBub2RlIGNmZyBpblxuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgUGllcnJlIENoYW1iYXJ0IDIwMTIuXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gPCA+IEpzLnRcblxubGV0IG9iaiA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBjcmVhdGUgKCkgOiAnYSB0ID0gbmV3JWpzIG9ialxuXG5sZXQgYWRkICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgKHYgOiAnYSkgPVxuICAoKiAnXycgaXMgYWRkZWQgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggb2JqZWN0cyBtZXRob2RzICopXG4gIEpzLlVuc2FmZS5zZXQgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKSB2XG5cbmxldCByZW1vdmUgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSA9XG4gIEpzLlVuc2FmZS5kZWxldGUgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKVxuXG5sZXQgZmluZCAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpIDogJ2EgSnMuT3B0ZGVmLnQgPVxuICBKcy5VbnNhZmUuZ2V0IHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSlcblxubGV0IGtleXMgKHQgOiAnYSB0KSA6IEpzLmpzX3N0cmluZyBKcy50IGxpc3QgPVxuICBsZXQga2V5X2FycmF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCA9XG4gICAgSnMuVW5zYWZlLmdsb2JhbCMjLl9PYmplY3QjI2tleXMgdFxuICBpblxuICBsZXQgcmVzID0gcmVmIFtdIGluXG4gIGZvciBpID0gMCB0byBwcmVkIGtleV9hcnJheSMjLmxlbmd0aCBkb1xuICAgIGxldCBrZXkgPVxuICAgICAgSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IGtleV9hcnJheSBpKSAoZnVuICgpIC0+IGZhaWx3aXRoIFwiSnN0YWJsZS5rZXlzXCIpXG4gICAgaW5cbiAgICByZXMgOj0ga2V5IyNzdWJzdHJpbmcgMCAocHJlZCBrZXkjIy5sZW5ndGgpIDo6ICFyZXNcbiAgZG9uZTtcbiAgTGlzdC5yZXYgIXJlc1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCBHcsOpZ29pcmUgSGVucnkgMjAxMC5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUganNvbiA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiAnYS4ganNfc3RyaW5nIHQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBwYXJzZV8gOlxuICAgICdhICdiICdjICdkLiBqc19zdHJpbmcgdCAtPiAoJ2IgdCwganNfc3RyaW5nIHQgLT4gJ2MgLT4gJ2QpIG1ldGhfY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnkgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnlfIDpcbiAgICAnYSAnYiAnYyAnZC4gJ2EgLT4gKCdiLCBqc19zdHJpbmcgdCAtPiAnYyAtPiAnZCkgbWV0aF9jYWxsYmFjayAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IGpzb24gOiBqc29uIEpzLnQgPSBVbnNhZmUuZ2xvYmFsIyMuX0pTT05cblxubGV0IGlucHV0X3Jldml2ZXIgPVxuICBsZXQgcmV2aXZlciBfdGhpcyBfa2V5ICh2YWx1ZSA6IFVuc2FmZS5hbnkpIDogT2JqLnQgPVxuICAgIGlmIEpzLmVxdWFscyAodHlwZW9mIHZhbHVlKSAoc3RyaW5nIFwic3RyaW5nXCIpXG4gICAgdGhlbiBPYmoucmVwciAodG9fYnl0ZXN0cmluZyAoVW5zYWZlLmNvZXJjZSB2YWx1ZSkpXG4gICAgZWxzZSBpZiBpbnN0YW5jZW9mIHZhbHVlIEpzLmFycmF5X2VtcHR5XG4gICAgICAgICAgICAmJiAoVW5zYWZlLmNvZXJjZSB2YWx1ZSkjIy5sZW5ndGggPT0gNFxuICAgICAgICAgICAgJiYgVW5zYWZlLmdldCB2YWx1ZSAwID09IDI1NVxuICAgIHRoZW5cbiAgICAgIE9iai5yZXByXG4gICAgICAgIChKc29vX3J1bnRpbWUuSW50NjQuY3JlYXRlX2ludDY0X2xvX21pX2hpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDEpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDIpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDMpKVxuICAgIGVsc2UgT2JqLnJlcHIgdmFsdWVcbiAgaW5cbiAgd3JhcF9tZXRoX2NhbGxiYWNrIHJldml2ZXJcblxubGV0IHVuc2FmZV9pbnB1dCBzID0ganNvbiMjcGFyc2VfIHMgaW5wdXRfcmV2aXZlclxuXG5jbGFzcyB0eXBlIG9iaiA9IG9iamVjdFxuICBtZXRob2QgY29uc3RydWN0b3IgOiAnYS4gJ2EgY29uc3RyIEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbWxJbnQ2NF9jb25zdHIgPVxuICBsZXQgZHVtbXlfaW50NjQgPSAxTCBpblxuICBsZXQgZHVtbXlfb2JqIDogb2JqIHQgPSBPYmoubWFnaWMgZHVtbXlfaW50NjQgaW5cbiAgZHVtbXlfb2JqIyMuY29uc3RydWN0b3JcblxubGV0IG91dHB1dF9yZXZpdmVyIF9rZXkgKHZhbHVlIDogVW5zYWZlLmFueSkgOiBPYmoudCA9XG4gIGlmIE9iai50YWcgKE9iai5yZXByIHZhbHVlKSA9IE9iai5zdHJpbmdfdGFnXG4gIHRoZW4gT2JqLnJlcHIgKGJ5dGVzdHJpbmcgKE9iai5tYWdpYyB2YWx1ZSA6IHN0cmluZykpXG4gIGVsc2UgaWYgaW5zdGFuY2VvZiB2YWx1ZSBtbEludDY0X2NvbnN0clxuICB0aGVuXG4gICAgbGV0IHZhbHVlID0gVW5zYWZlLmNvZXJjZSB2YWx1ZSBpblxuICAgIE9iai5yZXByIChhcnJheSBbfCAyNTU7IHZhbHVlIyMubG87IHZhbHVlIyMubWk7IHZhbHVlIyMuaGkgfF0pXG4gIGVsc2UgT2JqLnJlcHIgdmFsdWVcblxubGV0IG91dHB1dCBvYmogPSBqc29uIyNzdHJpbmdpZnlfIG9iaiAoSnMud3JhcF9jYWxsYmFjayBvdXRwdXRfcmV2aXZlcilcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBDb2xvciA9IHN0cnVjdFxuICAoKiBUaGUgdHlwZSBvZiBDU1MgY29sb3JzLiBGaXJzdCBieSBuYW1lIGFuZCB0aGVuIGJ5IGNvbnN0cnVjdG9yLiAqKVxuICB0eXBlIG5hbWUgPVxuICAgIHwgQWxpY2VibHVlXG4gICAgfCBBbnRpcXVld2hpdGVcbiAgICB8IEFxdWFcbiAgICB8IEFxdWFtYXJpbmVcbiAgICB8IEF6dXJlXG4gICAgfCBCZWlnZVxuICAgIHwgQmlzcXVlXG4gICAgfCBCbGFja1xuICAgIHwgQmxhbmNoZWRhbG1vbmRcbiAgICB8IEJsdWVcbiAgICB8IEJsdWV2aW9sZXRcbiAgICB8IEJyb3duXG4gICAgfCBCdXJseXdvb2RcbiAgICB8IENhZGV0Ymx1ZVxuICAgIHwgQ2hhcnRyZXVzZVxuICAgIHwgQ2hvY29sYXRlXG4gICAgfCBDb3JhbFxuICAgIHwgQ29ybmZsb3dlcmJsdWVcbiAgICB8IENvcm5zaWxrXG4gICAgfCBDcmltc29uXG4gICAgfCBDeWFuXG4gICAgfCBEYXJrYmx1ZVxuICAgIHwgRGFya2N5YW5cbiAgICB8IERhcmtnb2xkZW5yb2RcbiAgICB8IERhcmtncmF5XG4gICAgfCBEYXJrZ3JlZW5cbiAgICB8IERhcmtncmV5XG4gICAgfCBEYXJra2hha2lcbiAgICB8IERhcmttYWdlbnRhXG4gICAgfCBEYXJrb2xpdmVncmVlblxuICAgIHwgRGFya29yYW5nZVxuICAgIHwgRGFya29yY2hpZFxuICAgIHwgRGFya3JlZFxuICAgIHwgRGFya3NhbG1vblxuICAgIHwgRGFya3NlYWdyZWVuXG4gICAgfCBEYXJrc2xhdGVibHVlXG4gICAgfCBEYXJrc2xhdGVncmF5XG4gICAgfCBEYXJrc2xhdGVncmV5XG4gICAgfCBEYXJrdHVycXVvaXNlXG4gICAgfCBEYXJrdmlvbGV0XG4gICAgfCBEZWVwcGlua1xuICAgIHwgRGVlcHNreWJsdWVcbiAgICB8IERpbWdyYXlcbiAgICB8IERpbWdyZXlcbiAgICB8IERvZGdlcmJsdWVcbiAgICB8IEZpcmVicmlja1xuICAgIHwgRmxvcmFsd2hpdGVcbiAgICB8IEZvcmVzdGdyZWVuXG4gICAgfCBGdWNoc2lhXG4gICAgfCBHYWluc2Jvcm9cbiAgICB8IEdob3N0d2hpdGVcbiAgICB8IEdvbGRcbiAgICB8IEdvbGRlbnJvZFxuICAgIHwgR3JheVxuICAgIHwgR3JleVxuICAgIHwgR3JlZW5cbiAgICB8IEdyZWVueWVsbG93XG4gICAgfCBIb25leWRld1xuICAgIHwgSG90cGlua1xuICAgIHwgSW5kaWFucmVkXG4gICAgfCBJbmRpZ29cbiAgICB8IEl2b3J5XG4gICAgfCBLaGFraVxuICAgIHwgTGF2ZW5kZXJcbiAgICB8IExhdmVuZGVyYmx1c2hcbiAgICB8IExhd25ncmVlblxuICAgIHwgTGVtb25jaGlmZm9uXG4gICAgfCBMaWdodGJsdWVcbiAgICB8IExpZ2h0Y29yYWxcbiAgICB8IExpZ2h0Y3lhblxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3dcbiAgICB8IExpZ2h0Z3JheVxuICAgIHwgTGlnaHRncmVlblxuICAgIHwgTGlnaHRncmV5XG4gICAgfCBMaWdodHBpbmtcbiAgICB8IExpZ2h0c2FsbW9uXG4gICAgfCBMaWdodHNlYWdyZWVuXG4gICAgfCBMaWdodHNreWJsdWVcbiAgICB8IExpZ2h0c2xhdGVncmF5XG4gICAgfCBMaWdodHNsYXRlZ3JleVxuICAgIHwgTGlnaHRzdGVlbGJsdWVcbiAgICB8IExpZ2h0eWVsbG93XG4gICAgfCBMaW1lXG4gICAgfCBMaW1lZ3JlZW5cbiAgICB8IExpbmVuXG4gICAgfCBNYWdlbnRhXG4gICAgfCBNYXJvb25cbiAgICB8IE1lZGl1bWFxdWFtYXJpbmVcbiAgICB8IE1lZGl1bWJsdWVcbiAgICB8IE1lZGl1bW9yY2hpZFxuICAgIHwgTWVkaXVtcHVycGxlXG4gICAgfCBNZWRpdW1zZWFncmVlblxuICAgIHwgTWVkaXVtc2xhdGVibHVlXG4gICAgfCBNZWRpdW1zcHJpbmdncmVlblxuICAgIHwgTWVkaXVtdHVycXVvaXNlXG4gICAgfCBNZWRpdW12aW9sZXRyZWRcbiAgICB8IE1pZG5pZ2h0Ymx1ZVxuICAgIHwgTWludGNyZWFtXG4gICAgfCBNaXN0eXJvc2VcbiAgICB8IE1vY2Nhc2luXG4gICAgfCBOYXZham93aGl0ZVxuICAgIHwgTmF2eVxuICAgIHwgT2xkbGFjZVxuICAgIHwgT2xpdmVcbiAgICB8IE9saXZlZHJhYlxuICAgIHwgT3JhbmdlXG4gICAgfCBPcmFuZ2VyZWRcbiAgICB8IE9yY2hpZFxuICAgIHwgUGFsZWdvbGRlbnJvZFxuICAgIHwgUGFsZWdyZWVuXG4gICAgfCBQYWxldHVycXVvaXNlXG4gICAgfCBQYWxldmlvbGV0cmVkXG4gICAgfCBQYXBheWF3aGlwXG4gICAgfCBQZWFjaHB1ZmZcbiAgICB8IFBlcnVcbiAgICB8IFBpbmtcbiAgICB8IFBsdW1cbiAgICB8IFBvd2RlcmJsdWVcbiAgICB8IFB1cnBsZVxuICAgIHwgUmVkXG4gICAgfCBSb3N5YnJvd25cbiAgICB8IFJveWFsYmx1ZVxuICAgIHwgU2FkZGxlYnJvd25cbiAgICB8IFNhbG1vblxuICAgIHwgU2FuZHlicm93blxuICAgIHwgU2VhZ3JlZW5cbiAgICB8IFNlYXNoZWxsXG4gICAgfCBTaWVubmFcbiAgICB8IFNpbHZlclxuICAgIHwgU2t5Ymx1ZVxuICAgIHwgU2xhdGVibHVlXG4gICAgfCBTbGF0ZWdyYXlcbiAgICB8IFNsYXRlZ3JleVxuICAgIHwgU25vd1xuICAgIHwgU3ByaW5nZ3JlZW5cbiAgICB8IFN0ZWVsYmx1ZVxuICAgIHwgVGFuXG4gICAgfCBUZWFsXG4gICAgfCBUaGlzdGxlXG4gICAgfCBUb21hdG9cbiAgICB8IFR1cnF1b2lzZVxuICAgIHwgVmlvbGV0XG4gICAgfCBXaGVhdFxuICAgIHwgV2hpdGVcbiAgICB8IFdoaXRlc21va2VcbiAgICB8IFllbGxvd1xuICAgIHwgWWVsbG93Z3JlZW5cblxuICBsZXQgc3RyaW5nX29mX25hbWUgPSBmdW5jdGlvblxuICAgIHwgQWxpY2VibHVlIC0+IFwiYWxpY2VibHVlXCJcbiAgICB8IEFudGlxdWV3aGl0ZSAtPiBcImFudGlxdWV3aGl0ZVwiXG4gICAgfCBBcXVhIC0+IFwiYXF1YVwiXG4gICAgfCBBcXVhbWFyaW5lIC0+IFwiYXF1YW1hcmluZVwiXG4gICAgfCBBenVyZSAtPiBcImF6dXJlXCJcbiAgICB8IEJlaWdlIC0+IFwiYmVpZ2VcIlxuICAgIHwgQmlzcXVlIC0+IFwiYmlzcXVlXCJcbiAgICB8IEJsYWNrIC0+IFwiYmxhY2tcIlxuICAgIHwgQmxhbmNoZWRhbG1vbmQgLT4gXCJibGFuY2hlZGFsbW9uZFwiXG4gICAgfCBCbHVlIC0+IFwiYmx1ZVwiXG4gICAgfCBCbHVldmlvbGV0IC0+IFwiYmx1ZXZpb2xldFwiXG4gICAgfCBCcm93biAtPiBcImJyb3duXCJcbiAgICB8IEJ1cmx5d29vZCAtPiBcImJ1cmx5d29vZFwiXG4gICAgfCBDYWRldGJsdWUgLT4gXCJjYWRldGJsdWVcIlxuICAgIHwgQ2hhcnRyZXVzZSAtPiBcImNoYXJ0cmV1c2VcIlxuICAgIHwgQ2hvY29sYXRlIC0+IFwiY2hvY29sYXRlXCJcbiAgICB8IENvcmFsIC0+IFwiY29yYWxcIlxuICAgIHwgQ29ybmZsb3dlcmJsdWUgLT4gXCJjb3JuZmxvd2VyYmx1ZVwiXG4gICAgfCBDb3Juc2lsayAtPiBcImNvcm5zaWxrXCJcbiAgICB8IENyaW1zb24gLT4gXCJjcmltc29uXCJcbiAgICB8IEN5YW4gLT4gXCJjeWFuXCJcbiAgICB8IERhcmtibHVlIC0+IFwiZGFya2JsdWVcIlxuICAgIHwgRGFya2N5YW4gLT4gXCJkYXJrY3lhblwiXG4gICAgfCBEYXJrZ29sZGVucm9kIC0+IFwiZGFya2dvbGRlbnJvZFwiXG4gICAgfCBEYXJrZ3JheSAtPiBcImRhcmtncmF5XCJcbiAgICB8IERhcmtncmVlbiAtPiBcImRhcmtncmVlblwiXG4gICAgfCBEYXJrZ3JleSAtPiBcImRhcmtncmV5XCJcbiAgICB8IERhcmtraGFraSAtPiBcImRhcmtraGFraVwiXG4gICAgfCBEYXJrbWFnZW50YSAtPiBcImRhcmttYWdlbnRhXCJcbiAgICB8IERhcmtvbGl2ZWdyZWVuIC0+IFwiZGFya29saXZlZ3JlZW5cIlxuICAgIHwgRGFya29yYW5nZSAtPiBcImRhcmtvcmFuZ2VcIlxuICAgIHwgRGFya29yY2hpZCAtPiBcImRhcmtvcmNoaWRcIlxuICAgIHwgRGFya3JlZCAtPiBcImRhcmtyZWRcIlxuICAgIHwgRGFya3NhbG1vbiAtPiBcImRhcmtzYWxtb25cIlxuICAgIHwgRGFya3NlYWdyZWVuIC0+IFwiZGFya3NlYWdyZWVuXCJcbiAgICB8IERhcmtzbGF0ZWJsdWUgLT4gXCJkYXJrc2xhdGVibHVlXCJcbiAgICB8IERhcmtzbGF0ZWdyYXkgLT4gXCJkYXJrc2xhdGVncmF5XCJcbiAgICB8IERhcmtzbGF0ZWdyZXkgLT4gXCJkYXJrc2xhdGVncmV5XCJcbiAgICB8IERhcmt0dXJxdW9pc2UgLT4gXCJkYXJrdHVycXVvaXNlXCJcbiAgICB8IERhcmt2aW9sZXQgLT4gXCJkYXJrdmlvbGV0XCJcbiAgICB8IERlZXBwaW5rIC0+IFwiZGVlcHBpbmtcIlxuICAgIHwgRGVlcHNreWJsdWUgLT4gXCJkZWVwc2t5Ymx1ZVwiXG4gICAgfCBEaW1ncmF5IC0+IFwiZGltZ3JheVwiXG4gICAgfCBEaW1ncmV5IC0+IFwiZGltZ3JleVwiXG4gICAgfCBEb2RnZXJibHVlIC0+IFwiZG9kZ2VyYmx1ZVwiXG4gICAgfCBGaXJlYnJpY2sgLT4gXCJmaXJlYnJpY2tcIlxuICAgIHwgRmxvcmFsd2hpdGUgLT4gXCJmbG9yYWx3aGl0ZVwiXG4gICAgfCBGb3Jlc3RncmVlbiAtPiBcImZvcmVzdGdyZWVuXCJcbiAgICB8IEZ1Y2hzaWEgLT4gXCJmdWNoc2lhXCJcbiAgICB8IEdhaW5zYm9ybyAtPiBcImdhaW5zYm9yb1wiXG4gICAgfCBHaG9zdHdoaXRlIC0+IFwiZ2hvc3R3aGl0ZVwiXG4gICAgfCBHb2xkIC0+IFwiZ29sZFwiXG4gICAgfCBHb2xkZW5yb2QgLT4gXCJnb2xkZW5yb2RcIlxuICAgIHwgR3JheSAtPiBcImdyYXlcIlxuICAgIHwgR3JlZW4gLT4gXCJncmVlblwiXG4gICAgfCBHcmVlbnllbGxvdyAtPiBcImdyZWVueWVsbG93XCJcbiAgICB8IEdyZXkgLT4gXCJncmV5XCJcbiAgICB8IEhvbmV5ZGV3IC0+IFwiaG9uZXlkZXdcIlxuICAgIHwgSG90cGluayAtPiBcImhvdHBpbmtcIlxuICAgIHwgSW5kaWFucmVkIC0+IFwiaW5kaWFucmVkXCJcbiAgICB8IEluZGlnbyAtPiBcImluZGlnb1wiXG4gICAgfCBJdm9yeSAtPiBcIml2b3J5XCJcbiAgICB8IEtoYWtpIC0+IFwia2hha2lcIlxuICAgIHwgTGF2ZW5kZXIgLT4gXCJsYXZlbmRlclwiXG4gICAgfCBMYXZlbmRlcmJsdXNoIC0+IFwibGF2ZW5kZXJibHVzaFwiXG4gICAgfCBMYXduZ3JlZW4gLT4gXCJsYXduZ3JlZW5cIlxuICAgIHwgTGVtb25jaGlmZm9uIC0+IFwibGVtb25jaGlmZm9uXCJcbiAgICB8IExpZ2h0Ymx1ZSAtPiBcImxpZ2h0Ymx1ZVwiXG4gICAgfCBMaWdodGNvcmFsIC0+IFwibGlnaHRjb3JhbFwiXG4gICAgfCBMaWdodGN5YW4gLT4gXCJsaWdodGN5YW5cIlxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3cgLT4gXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiXG4gICAgfCBMaWdodGdyYXkgLT4gXCJsaWdodGdyYXlcIlxuICAgIHwgTGlnaHRncmVlbiAtPiBcImxpZ2h0Z3JlZW5cIlxuICAgIHwgTGlnaHRncmV5IC0+IFwibGlnaHRncmV5XCJcbiAgICB8IExpZ2h0cGluayAtPiBcImxpZ2h0cGlua1wiXG4gICAgfCBMaWdodHNhbG1vbiAtPiBcImxpZ2h0c2FsbW9uXCJcbiAgICB8IExpZ2h0c2VhZ3JlZW4gLT4gXCJsaWdodHNlYWdyZWVuXCJcbiAgICB8IExpZ2h0c2t5Ymx1ZSAtPiBcImxpZ2h0c2t5Ymx1ZVwiXG4gICAgfCBMaWdodHNsYXRlZ3JheSAtPiBcImxpZ2h0c2xhdGVncmF5XCJcbiAgICB8IExpZ2h0c2xhdGVncmV5IC0+IFwibGlnaHRzbGF0ZWdyZXlcIlxuICAgIHwgTGlnaHRzdGVlbGJsdWUgLT4gXCJsaWdodHN0ZWVsYmx1ZVwiXG4gICAgfCBMaWdodHllbGxvdyAtPiBcImxpZ2h0eWVsbG93XCJcbiAgICB8IExpbWUgLT4gXCJsaW1lXCJcbiAgICB8IExpbWVncmVlbiAtPiBcImxpbWVncmVlblwiXG4gICAgfCBMaW5lbiAtPiBcImxpbmVuXCJcbiAgICB8IE1hZ2VudGEgLT4gXCJtYWdlbnRhXCJcbiAgICB8IE1hcm9vbiAtPiBcIm1hcm9vblwiXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lIC0+IFwibWVkaXVtYXF1YW1hcmluZVwiXG4gICAgfCBNZWRpdW1ibHVlIC0+IFwibWVkaXVtYmx1ZVwiXG4gICAgfCBNZWRpdW1vcmNoaWQgLT4gXCJtZWRpdW1vcmNoaWRcIlxuICAgIHwgTWVkaXVtcHVycGxlIC0+IFwibWVkaXVtcHVycGxlXCJcbiAgICB8IE1lZGl1bXNlYWdyZWVuIC0+IFwibWVkaXVtc2VhZ3JlZW5cIlxuICAgIHwgTWVkaXVtc2xhdGVibHVlIC0+IFwibWVkaXVtc2xhdGVibHVlXCJcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuIC0+IFwibWVkaXVtc3ByaW5nZ3JlZW5cIlxuICAgIHwgTWVkaXVtdHVycXVvaXNlIC0+IFwibWVkaXVtdHVycXVvaXNlXCJcbiAgICB8IE1lZGl1bXZpb2xldHJlZCAtPiBcIm1lZGl1bXZpb2xldHJlZFwiXG4gICAgfCBNaWRuaWdodGJsdWUgLT4gXCJtaWRuaWdodGJsdWVcIlxuICAgIHwgTWludGNyZWFtIC0+IFwibWludGNyZWFtXCJcbiAgICB8IE1pc3R5cm9zZSAtPiBcIm1pc3R5cm9zZVwiXG4gICAgfCBNb2NjYXNpbiAtPiBcIm1vY2Nhc2luXCJcbiAgICB8IE5hdmFqb3doaXRlIC0+IFwibmF2YWpvd2hpdGVcIlxuICAgIHwgTmF2eSAtPiBcIm5hdnlcIlxuICAgIHwgT2xkbGFjZSAtPiBcIm9sZGxhY2VcIlxuICAgIHwgT2xpdmUgLT4gXCJvbGl2ZVwiXG4gICAgfCBPbGl2ZWRyYWIgLT4gXCJvbGl2ZWRyYWJcIlxuICAgIHwgT3JhbmdlIC0+IFwib3JhbmdlXCJcbiAgICB8IE9yYW5nZXJlZCAtPiBcIm9yYW5nZXJlZFwiXG4gICAgfCBPcmNoaWQgLT4gXCJvcmNoaWRcIlxuICAgIHwgUGFsZWdvbGRlbnJvZCAtPiBcInBhbGVnb2xkZW5yb2RcIlxuICAgIHwgUGFsZWdyZWVuIC0+IFwicGFsZWdyZWVuXCJcbiAgICB8IFBhbGV0dXJxdW9pc2UgLT4gXCJwYWxldHVycXVvaXNlXCJcbiAgICB8IFBhbGV2aW9sZXRyZWQgLT4gXCJwYWxldmlvbGV0cmVkXCJcbiAgICB8IFBhcGF5YXdoaXAgLT4gXCJwYXBheWF3aGlwXCJcbiAgICB8IFBlYWNocHVmZiAtPiBcInBlYWNocHVmZlwiXG4gICAgfCBQZXJ1IC0+IFwicGVydVwiXG4gICAgfCBQaW5rIC0+IFwicGlua1wiXG4gICAgfCBQbHVtIC0+IFwicGx1bVwiXG4gICAgfCBQb3dkZXJibHVlIC0+IFwicG93ZGVyYmx1ZVwiXG4gICAgfCBQdXJwbGUgLT4gXCJwdXJwbGVcIlxuICAgIHwgUmVkIC0+IFwicmVkXCJcbiAgICB8IFJvc3licm93biAtPiBcInJvc3licm93blwiXG4gICAgfCBSb3lhbGJsdWUgLT4gXCJyb3lhbGJsdWVcIlxuICAgIHwgU2FkZGxlYnJvd24gLT4gXCJzYWRkbGVicm93blwiXG4gICAgfCBTYWxtb24gLT4gXCJzYWxtb25cIlxuICAgIHwgU2FuZHlicm93biAtPiBcInNhbmR5YnJvd25cIlxuICAgIHwgU2VhZ3JlZW4gLT4gXCJzZWFncmVlblwiXG4gICAgfCBTZWFzaGVsbCAtPiBcInNlYXNoZWxsXCJcbiAgICB8IFNpZW5uYSAtPiBcInNpZW5uYVwiXG4gICAgfCBTaWx2ZXIgLT4gXCJzaWx2ZXJcIlxuICAgIHwgU2t5Ymx1ZSAtPiBcInNreWJsdWVcIlxuICAgIHwgU2xhdGVibHVlIC0+IFwic2xhdGVibHVlXCJcbiAgICB8IFNsYXRlZ3JheSAtPiBcInNsYXRlZ3JheVwiXG4gICAgfCBTbGF0ZWdyZXkgLT4gXCJzbGF0ZWdyZXlcIlxuICAgIHwgU25vdyAtPiBcInNub3dcIlxuICAgIHwgU3ByaW5nZ3JlZW4gLT4gXCJzcHJpbmdncmVlblwiXG4gICAgfCBTdGVlbGJsdWUgLT4gXCJzdGVlbGJsdWVcIlxuICAgIHwgVGFuIC0+IFwidGFuXCJcbiAgICB8IFRlYWwgLT4gXCJ0ZWFsXCJcbiAgICB8IFRoaXN0bGUgLT4gXCJ0aGlzdGxlXCJcbiAgICB8IFRvbWF0byAtPiBcInRvbWF0b1wiXG4gICAgfCBUdXJxdW9pc2UgLT4gXCJ0dXJxdW9pc2VcIlxuICAgIHwgVmlvbGV0IC0+IFwidmlvbGV0XCJcbiAgICB8IFdoZWF0IC0+IFwid2hlYXRcIlxuICAgIHwgV2hpdGUgLT4gXCJ3aGl0ZVwiXG4gICAgfCBXaGl0ZXNtb2tlIC0+IFwid2hpdGVzbW9rZVwiXG4gICAgfCBZZWxsb3cgLT4gXCJ5ZWxsb3dcIlxuICAgIHwgWWVsbG93Z3JlZW4gLT4gXCJ5ZWxsb3dncmVlblwiXG5cbiAgbGV0IG5hbWVfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFwiYWxpY2VibHVlXCIgLT4gQWxpY2VibHVlXG4gICAgfCBcImFudGlxdWV3aGl0ZVwiIC0+IEFudGlxdWV3aGl0ZVxuICAgIHwgXCJhcXVhXCIgLT4gQXF1YVxuICAgIHwgXCJhcXVhbWFyaW5lXCIgLT4gQXF1YW1hcmluZVxuICAgIHwgXCJhenVyZVwiIC0+IEF6dXJlXG4gICAgfCBcImJlaWdlXCIgLT4gQmVpZ2VcbiAgICB8IFwiYmlzcXVlXCIgLT4gQmlzcXVlXG4gICAgfCBcImJsYWNrXCIgLT4gQmxhY2tcbiAgICB8IFwiYmxhbmNoZWRhbG1vbmRcIiAtPiBCbGFuY2hlZGFsbW9uZFxuICAgIHwgXCJibHVlXCIgLT4gQmx1ZVxuICAgIHwgXCJibHVldmlvbGV0XCIgLT4gQmx1ZXZpb2xldFxuICAgIHwgXCJicm93blwiIC0+IEJyb3duXG4gICAgfCBcImJ1cmx5d29vZFwiIC0+IEJ1cmx5d29vZFxuICAgIHwgXCJjYWRldGJsdWVcIiAtPiBDYWRldGJsdWVcbiAgICB8IFwiY2hhcnRyZXVzZVwiIC0+IENoYXJ0cmV1c2VcbiAgICB8IFwiY2hvY29sYXRlXCIgLT4gQ2hvY29sYXRlXG4gICAgfCBcImNvcmFsXCIgLT4gQ29yYWxcbiAgICB8IFwiY29ybmZsb3dlcmJsdWVcIiAtPiBDb3JuZmxvd2VyYmx1ZVxuICAgIHwgXCJjb3Juc2lsa1wiIC0+IENvcm5zaWxrXG4gICAgfCBcImNyaW1zb25cIiAtPiBDcmltc29uXG4gICAgfCBcImN5YW5cIiAtPiBDeWFuXG4gICAgfCBcImRhcmtibHVlXCIgLT4gRGFya2JsdWVcbiAgICB8IFwiZGFya2N5YW5cIiAtPiBEYXJrY3lhblxuICAgIHwgXCJkYXJrZ29sZGVucm9kXCIgLT4gRGFya2dvbGRlbnJvZFxuICAgIHwgXCJkYXJrZ3JheVwiIC0+IERhcmtncmF5XG4gICAgfCBcImRhcmtncmVlblwiIC0+IERhcmtncmVlblxuICAgIHwgXCJkYXJrZ3JleVwiIC0+IERhcmtncmV5XG4gICAgfCBcImRhcmtraGFraVwiIC0+IERhcmtraGFraVxuICAgIHwgXCJkYXJrbWFnZW50YVwiIC0+IERhcmttYWdlbnRhXG4gICAgfCBcImRhcmtvbGl2ZWdyZWVuXCIgLT4gRGFya29saXZlZ3JlZW5cbiAgICB8IFwiZGFya29yYW5nZVwiIC0+IERhcmtvcmFuZ2VcbiAgICB8IFwiZGFya29yY2hpZFwiIC0+IERhcmtvcmNoaWRcbiAgICB8IFwiZGFya3JlZFwiIC0+IERhcmtyZWRcbiAgICB8IFwiZGFya3NhbG1vblwiIC0+IERhcmtzYWxtb25cbiAgICB8IFwiZGFya3NlYWdyZWVuXCIgLT4gRGFya3NlYWdyZWVuXG4gICAgfCBcImRhcmtzbGF0ZWJsdWVcIiAtPiBEYXJrc2xhdGVibHVlXG4gICAgfCBcImRhcmtzbGF0ZWdyYXlcIiAtPiBEYXJrc2xhdGVncmF5XG4gICAgfCBcImRhcmtzbGF0ZWdyZXlcIiAtPiBEYXJrc2xhdGVncmV5XG4gICAgfCBcImRhcmt0dXJxdW9pc2VcIiAtPiBEYXJrdHVycXVvaXNlXG4gICAgfCBcImRhcmt2aW9sZXRcIiAtPiBEYXJrdmlvbGV0XG4gICAgfCBcImRlZXBwaW5rXCIgLT4gRGVlcHBpbmtcbiAgICB8IFwiZGVlcHNreWJsdWVcIiAtPiBEZWVwc2t5Ymx1ZVxuICAgIHwgXCJkaW1ncmF5XCIgLT4gRGltZ3JheVxuICAgIHwgXCJkaW1ncmV5XCIgLT4gRGltZ3JleVxuICAgIHwgXCJkb2RnZXJibHVlXCIgLT4gRG9kZ2VyYmx1ZVxuICAgIHwgXCJmaXJlYnJpY2tcIiAtPiBGaXJlYnJpY2tcbiAgICB8IFwiZmxvcmFsd2hpdGVcIiAtPiBGbG9yYWx3aGl0ZVxuICAgIHwgXCJmb3Jlc3RncmVlblwiIC0+IEZvcmVzdGdyZWVuXG4gICAgfCBcImZ1Y2hzaWFcIiAtPiBGdWNoc2lhXG4gICAgfCBcImdhaW5zYm9yb1wiIC0+IEdhaW5zYm9yb1xuICAgIHwgXCJnaG9zdHdoaXRlXCIgLT4gR2hvc3R3aGl0ZVxuICAgIHwgXCJnb2xkXCIgLT4gR29sZFxuICAgIHwgXCJnb2xkZW5yb2RcIiAtPiBHb2xkZW5yb2RcbiAgICB8IFwiZ3JheVwiIC0+IEdyYXlcbiAgICB8IFwiZ3JlZW5cIiAtPiBHcmVlblxuICAgIHwgXCJncmVlbnllbGxvd1wiIC0+IEdyZWVueWVsbG93XG4gICAgfCBcImdyZXlcIiAtPiBHcmV5XG4gICAgfCBcImhvbmV5ZGV3XCIgLT4gSG9uZXlkZXdcbiAgICB8IFwiaG90cGlua1wiIC0+IEhvdHBpbmtcbiAgICB8IFwiaW5kaWFucmVkXCIgLT4gSW5kaWFucmVkXG4gICAgfCBcImluZGlnb1wiIC0+IEluZGlnb1xuICAgIHwgXCJpdm9yeVwiIC0+IEl2b3J5XG4gICAgfCBcImtoYWtpXCIgLT4gS2hha2lcbiAgICB8IFwibGF2ZW5kZXJcIiAtPiBMYXZlbmRlclxuICAgIHwgXCJsYXZlbmRlcmJsdXNoXCIgLT4gTGF2ZW5kZXJibHVzaFxuICAgIHwgXCJsYXduZ3JlZW5cIiAtPiBMYXduZ3JlZW5cbiAgICB8IFwibGVtb25jaGlmZm9uXCIgLT4gTGVtb25jaGlmZm9uXG4gICAgfCBcImxpZ2h0Ymx1ZVwiIC0+IExpZ2h0Ymx1ZVxuICAgIHwgXCJsaWdodGNvcmFsXCIgLT4gTGlnaHRjb3JhbFxuICAgIHwgXCJsaWdodGN5YW5cIiAtPiBMaWdodGN5YW5cbiAgICB8IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIiAtPiBMaWdodGdvbGRlbnJvZHllbGxvd1xuICAgIHwgXCJsaWdodGdyYXlcIiAtPiBMaWdodGdyYXlcbiAgICB8IFwibGlnaHRncmVlblwiIC0+IExpZ2h0Z3JlZW5cbiAgICB8IFwibGlnaHRncmV5XCIgLT4gTGlnaHRncmV5XG4gICAgfCBcImxpZ2h0cGlua1wiIC0+IExpZ2h0cGlua1xuICAgIHwgXCJsaWdodHNhbG1vblwiIC0+IExpZ2h0c2FsbW9uXG4gICAgfCBcImxpZ2h0c2VhZ3JlZW5cIiAtPiBMaWdodHNlYWdyZWVuXG4gICAgfCBcImxpZ2h0c2t5Ymx1ZVwiIC0+IExpZ2h0c2t5Ymx1ZVxuICAgIHwgXCJsaWdodHNsYXRlZ3JheVwiIC0+IExpZ2h0c2xhdGVncmF5XG4gICAgfCBcImxpZ2h0c2xhdGVncmV5XCIgLT4gTGlnaHRzbGF0ZWdyZXlcbiAgICB8IFwibGlnaHRzdGVlbGJsdWVcIiAtPiBMaWdodHN0ZWVsYmx1ZVxuICAgIHwgXCJsaWdodHllbGxvd1wiIC0+IExpZ2h0eWVsbG93XG4gICAgfCBcImxpbWVcIiAtPiBMaW1lXG4gICAgfCBcImxpbWVncmVlblwiIC0+IExpbWVncmVlblxuICAgIHwgXCJsaW5lblwiIC0+IExpbmVuXG4gICAgfCBcIm1hZ2VudGFcIiAtPiBNYWdlbnRhXG4gICAgfCBcIm1hcm9vblwiIC0+IE1hcm9vblxuICAgIHwgXCJtZWRpdW1hcXVhbWFyaW5lXCIgLT4gTWVkaXVtYXF1YW1hcmluZVxuICAgIHwgXCJtZWRpdW1ibHVlXCIgLT4gTWVkaXVtYmx1ZVxuICAgIHwgXCJtZWRpdW1vcmNoaWRcIiAtPiBNZWRpdW1vcmNoaWRcbiAgICB8IFwibWVkaXVtcHVycGxlXCIgLT4gTWVkaXVtcHVycGxlXG4gICAgfCBcIm1lZGl1bXNlYWdyZWVuXCIgLT4gTWVkaXVtc2VhZ3JlZW5cbiAgICB8IFwibWVkaXVtc2xhdGVibHVlXCIgLT4gTWVkaXVtc2xhdGVibHVlXG4gICAgfCBcIm1lZGl1bXNwcmluZ2dyZWVuXCIgLT4gTWVkaXVtc3ByaW5nZ3JlZW5cbiAgICB8IFwibWVkaXVtdHVycXVvaXNlXCIgLT4gTWVkaXVtdHVycXVvaXNlXG4gICAgfCBcIm1lZGl1bXZpb2xldHJlZFwiIC0+IE1lZGl1bXZpb2xldHJlZFxuICAgIHwgXCJtaWRuaWdodGJsdWVcIiAtPiBNaWRuaWdodGJsdWVcbiAgICB8IFwibWludGNyZWFtXCIgLT4gTWludGNyZWFtXG4gICAgfCBcIm1pc3R5cm9zZVwiIC0+IE1pc3R5cm9zZVxuICAgIHwgXCJtb2NjYXNpblwiIC0+IE1vY2Nhc2luXG4gICAgfCBcIm5hdmFqb3doaXRlXCIgLT4gTmF2YWpvd2hpdGVcbiAgICB8IFwibmF2eVwiIC0+IE5hdnlcbiAgICB8IFwib2xkbGFjZVwiIC0+IE9sZGxhY2VcbiAgICB8IFwib2xpdmVcIiAtPiBPbGl2ZVxuICAgIHwgXCJvbGl2ZWRyYWJcIiAtPiBPbGl2ZWRyYWJcbiAgICB8IFwib3JhbmdlXCIgLT4gT3JhbmdlXG4gICAgfCBcIm9yYW5nZXJlZFwiIC0+IE9yYW5nZXJlZFxuICAgIHwgXCJvcmNoaWRcIiAtPiBPcmNoaWRcbiAgICB8IFwicGFsZWdvbGRlbnJvZFwiIC0+IFBhbGVnb2xkZW5yb2RcbiAgICB8IFwicGFsZWdyZWVuXCIgLT4gUGFsZWdyZWVuXG4gICAgfCBcInBhbGV0dXJxdW9pc2VcIiAtPiBQYWxldHVycXVvaXNlXG4gICAgfCBcInBhbGV2aW9sZXRyZWRcIiAtPiBQYWxldmlvbGV0cmVkXG4gICAgfCBcInBhcGF5YXdoaXBcIiAtPiBQYXBheWF3aGlwXG4gICAgfCBcInBlYWNocHVmZlwiIC0+IFBlYWNocHVmZlxuICAgIHwgXCJwZXJ1XCIgLT4gUGVydVxuICAgIHwgXCJwaW5rXCIgLT4gUGlua1xuICAgIHwgXCJwbHVtXCIgLT4gUGx1bVxuICAgIHwgXCJwb3dkZXJibHVlXCIgLT4gUG93ZGVyYmx1ZVxuICAgIHwgXCJwdXJwbGVcIiAtPiBQdXJwbGVcbiAgICB8IFwicmVkXCIgLT4gUmVkXG4gICAgfCBcInJvc3licm93blwiIC0+IFJvc3licm93blxuICAgIHwgXCJyb3lhbGJsdWVcIiAtPiBSb3lhbGJsdWVcbiAgICB8IFwic2FkZGxlYnJvd25cIiAtPiBTYWRkbGVicm93blxuICAgIHwgXCJzYWxtb25cIiAtPiBTYWxtb25cbiAgICB8IFwic2FuZHlicm93blwiIC0+IFNhbmR5YnJvd25cbiAgICB8IFwic2VhZ3JlZW5cIiAtPiBTZWFncmVlblxuICAgIHwgXCJzZWFzaGVsbFwiIC0+IFNlYXNoZWxsXG4gICAgfCBcInNpZW5uYVwiIC0+IFNpZW5uYVxuICAgIHwgXCJzaWx2ZXJcIiAtPiBTaWx2ZXJcbiAgICB8IFwic2t5Ymx1ZVwiIC0+IFNreWJsdWVcbiAgICB8IFwic2xhdGVibHVlXCIgLT4gU2xhdGVibHVlXG4gICAgfCBcInNsYXRlZ3JheVwiIC0+IFNsYXRlZ3JheVxuICAgIHwgXCJzbGF0ZWdyZXlcIiAtPiBTbGF0ZWdyZXlcbiAgICB8IFwic25vd1wiIC0+IFNub3dcbiAgICB8IFwic3ByaW5nZ3JlZW5cIiAtPiBTcHJpbmdncmVlblxuICAgIHwgXCJzdGVlbGJsdWVcIiAtPiBTdGVlbGJsdWVcbiAgICB8IFwidGFuXCIgLT4gVGFuXG4gICAgfCBcInRlYWxcIiAtPiBUZWFsXG4gICAgfCBcInRoaXN0bGVcIiAtPiBUaGlzdGxlXG4gICAgfCBcInRvbWF0b1wiIC0+IFRvbWF0b1xuICAgIHwgXCJ0dXJxdW9pc2VcIiAtPiBUdXJxdW9pc2VcbiAgICB8IFwidmlvbGV0XCIgLT4gVmlvbGV0XG4gICAgfCBcIndoZWF0XCIgLT4gV2hlYXRcbiAgICB8IFwid2hpdGVcIiAtPiBXaGl0ZVxuICAgIHwgXCJ3aGl0ZXNtb2tlXCIgLT4gV2hpdGVzbW9rZVxuICAgIHwgXCJ5ZWxsb3dcIiAtPiBZZWxsb3dcbiAgICB8IFwieWVsbG93Z3JlZW5cIiAtPiBZZWxsb3dncmVlblxuICAgIHwgcyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yIG5hbWVcIikpXG5cbiAgbGV0IHJnYl9vZl9uYW1lID0gZnVuY3Rpb25cbiAgICB8IEFsaWNlYmx1ZSAtPiAyNDAsIDI0OCwgMjU1XG4gICAgfCBBbnRpcXVld2hpdGUgLT4gMjUwLCAyMzUsIDIxNVxuICAgIHwgQXF1YSAtPiAwLCAyNTUsIDI1NVxuICAgIHwgQXF1YW1hcmluZSAtPiAxMjcsIDI1NSwgMjEyXG4gICAgfCBBenVyZSAtPiAyNDAsIDI1NSwgMjU1XG4gICAgfCBCZWlnZSAtPiAyNDUsIDI0NSwgMjIwXG4gICAgfCBCaXNxdWUgLT4gMjU1LCAyMjgsIDE5NlxuICAgIHwgQmxhY2sgLT4gMCwgMCwgMFxuICAgIHwgQmxhbmNoZWRhbG1vbmQgLT4gMjU1LCAyMzUsIDIwNVxuICAgIHwgQmx1ZSAtPiAwLCAwLCAyNTVcbiAgICB8IEJsdWV2aW9sZXQgLT4gMTM4LCA0MywgMjI2XG4gICAgfCBCcm93biAtPiAxNjUsIDQyLCA0MlxuICAgIHwgQnVybHl3b29kIC0+IDIyMiwgMTg0LCAxMzVcbiAgICB8IENhZGV0Ymx1ZSAtPiA5NSwgMTU4LCAxNjBcbiAgICB8IENoYXJ0cmV1c2UgLT4gMTI3LCAyNTUsIDBcbiAgICB8IENob2NvbGF0ZSAtPiAyMTAsIDEwNSwgMzBcbiAgICB8IENvcmFsIC0+IDI1NSwgMTI3LCA4MFxuICAgIHwgQ29ybmZsb3dlcmJsdWUgLT4gMTAwLCAxNDksIDIzN1xuICAgIHwgQ29ybnNpbGsgLT4gMjU1LCAyNDgsIDIyMFxuICAgIHwgQ3JpbXNvbiAtPiAyMjAsIDIwLCA2MFxuICAgIHwgQ3lhbiAtPiAwLCAyNTUsIDI1NVxuICAgIHwgRGFya2JsdWUgLT4gMCwgMCwgMTM5XG4gICAgfCBEYXJrY3lhbiAtPiAwLCAxMzksIDEzOVxuICAgIHwgRGFya2dvbGRlbnJvZCAtPiAxODQsIDEzNCwgMTFcbiAgICB8IERhcmtncmF5IC0+IDE2OSwgMTY5LCAxNjlcbiAgICB8IERhcmtncmVlbiAtPiAwLCAxMDAsIDBcbiAgICB8IERhcmtncmV5IC0+IDE2OSwgMTY5LCAxNjlcbiAgICB8IERhcmtraGFraSAtPiAxODksIDE4MywgMTA3XG4gICAgfCBEYXJrbWFnZW50YSAtPiAxMzksIDAsIDEzOVxuICAgIHwgRGFya29saXZlZ3JlZW4gLT4gODUsIDEwNywgNDdcbiAgICB8IERhcmtvcmFuZ2UgLT4gMjU1LCAxNDAsIDBcbiAgICB8IERhcmtvcmNoaWQgLT4gMTUzLCA1MCwgMjA0XG4gICAgfCBEYXJrcmVkIC0+IDEzOSwgMCwgMFxuICAgIHwgRGFya3NhbG1vbiAtPiAyMzMsIDE1MCwgMTIyXG4gICAgfCBEYXJrc2VhZ3JlZW4gLT4gMTQzLCAxODgsIDE0M1xuICAgIHwgRGFya3NsYXRlYmx1ZSAtPiA3MiwgNjEsIDEzOVxuICAgIHwgRGFya3NsYXRlZ3JheSAtPiA0NywgNzksIDc5XG4gICAgfCBEYXJrc2xhdGVncmV5IC0+IDQ3LCA3OSwgNzlcbiAgICB8IERhcmt0dXJxdW9pc2UgLT4gMCwgMjA2LCAyMDlcbiAgICB8IERhcmt2aW9sZXQgLT4gMTQ4LCAwLCAyMTFcbiAgICB8IERlZXBwaW5rIC0+IDI1NSwgMjAsIDE0N1xuICAgIHwgRGVlcHNreWJsdWUgLT4gMCwgMTkxLCAyNTVcbiAgICB8IERpbWdyYXkgLT4gMTA1LCAxMDUsIDEwNVxuICAgIHwgRGltZ3JleSAtPiAxMDUsIDEwNSwgMTA1XG4gICAgfCBEb2RnZXJibHVlIC0+IDMwLCAxNDQsIDI1NVxuICAgIHwgRmlyZWJyaWNrIC0+IDE3OCwgMzQsIDM0XG4gICAgfCBGbG9yYWx3aGl0ZSAtPiAyNTUsIDI1MCwgMjQwXG4gICAgfCBGb3Jlc3RncmVlbiAtPiAzNCwgMTM5LCAzNFxuICAgIHwgRnVjaHNpYSAtPiAyNTUsIDAsIDI1NVxuICAgIHwgR2FpbnNib3JvIC0+IDIyMCwgMjIwLCAyMjBcbiAgICB8IEdob3N0d2hpdGUgLT4gMjQ4LCAyNDgsIDI1NVxuICAgIHwgR29sZCAtPiAyNTUsIDIxNSwgMFxuICAgIHwgR29sZGVucm9kIC0+IDIxOCwgMTY1LCAzMlxuICAgIHwgR3JheSAtPiAxMjgsIDEyOCwgMTI4XG4gICAgfCBHcmVlbiAtPiAwLCAxMjgsIDBcbiAgICB8IEdyZWVueWVsbG93IC0+IDE3MywgMjU1LCA0N1xuICAgIHwgR3JleSAtPiAxMjgsIDEyOCwgMTI4XG4gICAgfCBIb25leWRldyAtPiAyNDAsIDI1NSwgMjQwXG4gICAgfCBIb3RwaW5rIC0+IDI1NSwgMTA1LCAxODBcbiAgICB8IEluZGlhbnJlZCAtPiAyMDUsIDkyLCA5MlxuICAgIHwgSW5kaWdvIC0+IDc1LCAwLCAxMzBcbiAgICB8IEl2b3J5IC0+IDI1NSwgMjU1LCAyNDBcbiAgICB8IEtoYWtpIC0+IDI0MCwgMjMwLCAxNDBcbiAgICB8IExhdmVuZGVyIC0+IDIzMCwgMjMwLCAyNTBcbiAgICB8IExhdmVuZGVyYmx1c2ggLT4gMjU1LCAyNDAsIDI0NVxuICAgIHwgTGF3bmdyZWVuIC0+IDEyNCwgMjUyLCAwXG4gICAgfCBMZW1vbmNoaWZmb24gLT4gMjU1LCAyNTAsIDIwNVxuICAgIHwgTGlnaHRibHVlIC0+IDE3MywgMjE2LCAyMzBcbiAgICB8IExpZ2h0Y29yYWwgLT4gMjQwLCAxMjgsIDEyOFxuICAgIHwgTGlnaHRjeWFuIC0+IDIyNCwgMjU1LCAyNTVcbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93IC0+IDI1MCwgMjUwLCAyMTBcbiAgICB8IExpZ2h0Z3JheSAtPiAyMTEsIDIxMSwgMjExXG4gICAgfCBMaWdodGdyZWVuIC0+IDE0NCwgMjM4LCAxNDRcbiAgICB8IExpZ2h0Z3JleSAtPiAyMTEsIDIxMSwgMjExXG4gICAgfCBMaWdodHBpbmsgLT4gMjU1LCAxODIsIDE5M1xuICAgIHwgTGlnaHRzYWxtb24gLT4gMjU1LCAxNjAsIDEyMlxuICAgIHwgTGlnaHRzZWFncmVlbiAtPiAzMiwgMTc4LCAxNzBcbiAgICB8IExpZ2h0c2t5Ymx1ZSAtPiAxMzUsIDIwNiwgMjUwXG4gICAgfCBMaWdodHNsYXRlZ3JheSAtPiAxMTksIDEzNiwgMTUzXG4gICAgfCBMaWdodHNsYXRlZ3JleSAtPiAxMTksIDEzNiwgMTUzXG4gICAgfCBMaWdodHN0ZWVsYmx1ZSAtPiAxNzYsIDE5NiwgMjIyXG4gICAgfCBMaWdodHllbGxvdyAtPiAyNTUsIDI1NSwgMjI0XG4gICAgfCBMaW1lIC0+IDAsIDI1NSwgMFxuICAgIHwgTGltZWdyZWVuIC0+IDUwLCAyMDUsIDUwXG4gICAgfCBMaW5lbiAtPiAyNTAsIDI0MCwgMjMwXG4gICAgfCBNYWdlbnRhIC0+IDI1NSwgMCwgMjU1XG4gICAgfCBNYXJvb24gLT4gMTI4LCAwLCAwXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lIC0+IDEwMiwgMjA1LCAxNzBcbiAgICB8IE1lZGl1bWJsdWUgLT4gMCwgMCwgMjA1XG4gICAgfCBNZWRpdW1vcmNoaWQgLT4gMTg2LCA4NSwgMjExXG4gICAgfCBNZWRpdW1wdXJwbGUgLT4gMTQ3LCAxMTIsIDIxOVxuICAgIHwgTWVkaXVtc2VhZ3JlZW4gLT4gNjAsIDE3OSwgMTEzXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWUgLT4gMTIzLCAxMDQsIDIzOFxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW4gLT4gMCwgMjUwLCAxNTRcbiAgICB8IE1lZGl1bXR1cnF1b2lzZSAtPiA3MiwgMjA5LCAyMDRcbiAgICB8IE1lZGl1bXZpb2xldHJlZCAtPiAxOTksIDIxLCAxMzNcbiAgICB8IE1pZG5pZ2h0Ymx1ZSAtPiAyNSwgMjUsIDExMlxuICAgIHwgTWludGNyZWFtIC0+IDI0NSwgMjU1LCAyNTBcbiAgICB8IE1pc3R5cm9zZSAtPiAyNTUsIDIyOCwgMjI1XG4gICAgfCBNb2NjYXNpbiAtPiAyNTUsIDIyOCwgMTgxXG4gICAgfCBOYXZham93aGl0ZSAtPiAyNTUsIDIyMiwgMTczXG4gICAgfCBOYXZ5IC0+IDAsIDAsIDEyOFxuICAgIHwgT2xkbGFjZSAtPiAyNTMsIDI0NSwgMjMwXG4gICAgfCBPbGl2ZSAtPiAxMjgsIDEyOCwgMFxuICAgIHwgT2xpdmVkcmFiIC0+IDEwNywgMTQyLCAzNVxuICAgIHwgT3JhbmdlIC0+IDI1NSwgMTY1LCAwXG4gICAgfCBPcmFuZ2VyZWQgLT4gMjU1LCA2OSwgMFxuICAgIHwgT3JjaGlkIC0+IDIxOCwgMTEyLCAyMTRcbiAgICB8IFBhbGVnb2xkZW5yb2QgLT4gMjM4LCAyMzIsIDE3MFxuICAgIHwgUGFsZWdyZWVuIC0+IDE1MiwgMjUxLCAxNTJcbiAgICB8IFBhbGV0dXJxdW9pc2UgLT4gMTc1LCAyMzgsIDIzOFxuICAgIHwgUGFsZXZpb2xldHJlZCAtPiAyMTksIDExMiwgMTQ3XG4gICAgfCBQYXBheWF3aGlwIC0+IDI1NSwgMjM5LCAyMTNcbiAgICB8IFBlYWNocHVmZiAtPiAyNTUsIDIxOCwgMTg1XG4gICAgfCBQZXJ1IC0+IDIwNSwgMTMzLCA2M1xuICAgIHwgUGluayAtPiAyNTUsIDE5MiwgMjAzXG4gICAgfCBQbHVtIC0+IDIyMSwgMTYwLCAyMjFcbiAgICB8IFBvd2RlcmJsdWUgLT4gMTc2LCAyMjQsIDIzMFxuICAgIHwgUHVycGxlIC0+IDEyOCwgMCwgMTI4XG4gICAgfCBSZWQgLT4gMjU1LCAwLCAwXG4gICAgfCBSb3N5YnJvd24gLT4gMTg4LCAxNDMsIDE0M1xuICAgIHwgUm95YWxibHVlIC0+IDY1LCAxMDUsIDIyNVxuICAgIHwgU2FkZGxlYnJvd24gLT4gMTM5LCA2OSwgMTlcbiAgICB8IFNhbG1vbiAtPiAyNTAsIDEyOCwgMTE0XG4gICAgfCBTYW5keWJyb3duIC0+IDI0NCwgMTY0LCA5NlxuICAgIHwgU2VhZ3JlZW4gLT4gNDYsIDEzOSwgODdcbiAgICB8IFNlYXNoZWxsIC0+IDI1NSwgMjQ1LCAyMzhcbiAgICB8IFNpZW5uYSAtPiAxNjAsIDgyLCA0NVxuICAgIHwgU2lsdmVyIC0+IDE5MiwgMTkyLCAxOTJcbiAgICB8IFNreWJsdWUgLT4gMTM1LCAyMDYsIDIzNVxuICAgIHwgU2xhdGVibHVlIC0+IDEwNiwgOTAsIDIwNVxuICAgIHwgU2xhdGVncmF5IC0+IDExMiwgMTI4LCAxNDRcbiAgICB8IFNsYXRlZ3JleSAtPiAxMTIsIDEyOCwgMTQ0XG4gICAgfCBTbm93IC0+IDI1NSwgMjUwLCAyNTBcbiAgICB8IFNwcmluZ2dyZWVuIC0+IDAsIDI1NSwgMTI3XG4gICAgfCBTdGVlbGJsdWUgLT4gNzAsIDEzMCwgMTgwXG4gICAgfCBUYW4gLT4gMjEwLCAxODAsIDE0MFxuICAgIHwgVGVhbCAtPiAwLCAxMjgsIDEyOFxuICAgIHwgVGhpc3RsZSAtPiAyMTYsIDE5MSwgMjE2XG4gICAgfCBUb21hdG8gLT4gMjU1LCA5OSwgNzFcbiAgICB8IFR1cnF1b2lzZSAtPiA2NCwgMjI0LCAyMDhcbiAgICB8IFZpb2xldCAtPiAyMzgsIDEzMCwgMjM4XG4gICAgfCBXaGVhdCAtPiAyNDUsIDIyMiwgMTc5XG4gICAgfCBXaGl0ZSAtPiAyNTUsIDI1NSwgMjU1XG4gICAgfCBXaGl0ZXNtb2tlIC0+IDI0NSwgMjQ1LCAyNDVcbiAgICB8IFllbGxvdyAtPiAyNTUsIDI1NSwgMFxuICAgIHwgWWVsbG93Z3JlZW4gLT4gMTU0LCAyMDUsIDUwXG5cbiAgdHlwZSB0ID1cbiAgICB8IE5hbWUgb2YgbmFtZVxuICAgIHwgUkdCIG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBSZWQsIEdyZWVuIGFuZCBCbHVlIHZhbHVlcy4gQ2xpcHBlZCB0byBbWzAuLjI1NV1dIGJ5IG1vc3QgKEFsbD8pXG4gICAgICAgICAgICBicm93c2Vycy4gKilcbiAgICB8IFJHQl9wZXJjZW50IG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBSR0IgY2hhbm5lbHMgYXJlIHNwZWNpZmllZCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgbWF4aW1hbCB2YWx1ZS4gKilcbiAgICB8IFJHQkEgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogU2FtZSBhcyBSR0Igd2l0aCBhZGRpdGlvbmFsIHRyYW5zcGFyZW5jeSBhcmd1bWVudC4gT3BhY2l0eSBzaG91bGQgYmUgaW5cbiAgICAgICAgICAgIFswLl0gKGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQpIGFuZCBbMS5dIChjb21wbGV0ZWx5IG9wYXF1ZSkuICopXG4gICAgfCBSR0JBX3BlcmNlbnQgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogUkdCIGNoYW5uZWxzIHNwZWNpZmllZCBhcyBwZXJjZW50YWdlIG9mIHRoZWlyIG1heGltYWwgdmFsdWUuIEFscGhhXG4gICAgICAgICAgICBjaGFubmVsIChvcGFjaXR5KSBpcyBzdGlsbCBhIFswLl0gdG8gWzEuXSBmbG9hdC4gKilcbiAgICB8IEhTTCBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogSHVlLCBTYXR1cmF0aW9uIGFuZCBMaWdodG5lc3MgdmFsdWVzLiBIdWUgaXMgYW4gYW5nbGUgaW4gZGVncmVlIChpblxuICAgICAgICAgICAgaW50ZXJ2YWwgW1swLi4zNjBbXSkuIFNhdHVyYXRpb24gaXMgYSBwZXJjZW50YWdlIChbWzAuLjEwMF1dKSB3aXRoIFswXVxuICAgICAgICAgICAgYmVpbmcgY29sb3JsZXNzLiBMaWdodG5lc3MgaXMgYWxzbyBhIHBlcmNlbnRhZ2UgKFtbMC4uMTAwXV0pIHdpdGggWzBdXG4gICAgICAgICAgICBiZWluZyBibGFjay4gKilcbiAgICB8IEhTTEEgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogU2FtZSBhcyBIU0wgd2l0aCBhbiBvcGFjaXR5IGFyZ3VtZW50IGJldHdlZW4gWzAuXSBhbmQgWzEuXS4gKilcblxuICBsZXQgcmdiID9hIHIgZyBiID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IE5vbmUgLT4gUkdCIChyLCBnLCBiKVxuICAgIHwgU29tZSBhIC0+IFJHQkEgKHIsIGcsIGIsIGEpXG5cbiAgbGV0IGhzbCA/YSBoIHMgbCA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBOb25lIC0+IEhTTCAoaCwgcywgbClcbiAgICB8IFNvbWUgYSAtPiBIU0xBIChoLCBzLCBsLCBhKVxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBOYW1lIG4gLT4gc3RyaW5nX29mX25hbWUgblxuICAgIHwgUkdCIChyLCBnLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYiglZCwlZCwlZClcIiByIGcgYlxuICAgIHwgUkdCX3BlcmNlbnQgKHIsIGcsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiKCVkJSUsJWQlJSwlZCUlKVwiIHIgZyBiXG4gICAgfCBSR0JBIChyLCBnLCBiLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYmEoJWQsJWQsJWQsJWYpXCIgciBnIGIgYVxuICAgIHwgUkdCQV9wZXJjZW50IChyLCBnLCBiLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYmEoJWQlJSwlZCUlLCVkJSUsJWYpXCIgciBnIGIgYVxuICAgIHwgSFNMIChoLCBzLCBsKSAtPiBQcmludGYuc3ByaW50ZiBcImhzbCglZCwlZCUlLCVkJSUpXCIgaCBzIGxcbiAgICB8IEhTTEEgKGgsIHMsIGwsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwiaHNsYSglZCwlZCUlLCVkJSUsJWYpXCIgaCBzIGwgYVxuXG4gIGxldCBoZXhfb2ZfcmdiIChyZWQsIGdyZWVuLCBibHVlKSA9XG4gICAgbGV0IGluX3JhbmdlIGkgPVxuICAgICAgaWYgaSA8IDAgfHwgaSA+IDI1NVxuICAgICAgdGhlbiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoc3RyaW5nX29mX2ludCBpIF4gXCIgaXMgb3V0IG9mIHZhbGlkIHJhbmdlXCIpKVxuICAgIGluXG4gICAgaW5fcmFuZ2UgcmVkO1xuICAgIGluX3JhbmdlIGdyZWVuO1xuICAgIGluX3JhbmdlIGJsdWU7XG4gICAgUHJpbnRmLnNwcmludGYgXCIjJTAyWCUwMlglMDJYXCIgcmVkIGdyZWVuIGJsdWVcblxuICAoKiBPY2FtbCA8LT4gSlMgcmVwcmVzZW50YXRpb24gKilcbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICAoKiBUT0RPPyBiZSBtb3JlIHJlc3RyaWN0aXZlLCBjbGlwIHZhbHVlcyBpbnRvIHN0YW5kYXJkIHJhbmdlICopXG4gIGxldCBqc190X29mX2pzX3N0cmluZyBzID1cbiAgICBsZXQgcmdiX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYl9wY3RfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JcXFxcKFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiYV9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXnJnYmFcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYmFfcGN0X3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiYVxcXFwoXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgaHNsX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJeaHNsXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgaHNsYV9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXmhzbGFcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBpZiBKcy50b19ib29sIChyZ2JfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JhX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiX3BjdF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYmFfcGN0X3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAoaHNsX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAoaHNsYV9yZSMjdGVzdCBzKVxuICAgIHRoZW4gc1xuICAgIGVsc2UgaWYgTGlzdC5tZW1cbiAgICAgICAgICAgICAgKEpzLnRvX3N0cmluZyBzKVxuICAgICAgICAgICAgICBbIFwiYWxpY2VibHVlXCJcbiAgICAgICAgICAgICAgOyBcImFudGlxdWV3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJhcXVhXCJcbiAgICAgICAgICAgICAgOyBcImFxdWFtYXJpbmVcIlxuICAgICAgICAgICAgICA7IFwiYXp1cmVcIlxuICAgICAgICAgICAgICA7IFwiYmVpZ2VcIlxuICAgICAgICAgICAgICA7IFwiYmlzcXVlXCJcbiAgICAgICAgICAgICAgOyBcImJsYWNrXCJcbiAgICAgICAgICAgICAgOyBcImJsYW5jaGVkYWxtb25kXCJcbiAgICAgICAgICAgICAgOyBcImJsdWVcIlxuICAgICAgICAgICAgICA7IFwiYmx1ZXZpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJicm93blwiXG4gICAgICAgICAgICAgIDsgXCJidXJseXdvb2RcIlxuICAgICAgICAgICAgICA7IFwiY2FkZXRibHVlXCJcbiAgICAgICAgICAgICAgOyBcImNoYXJ0cmV1c2VcIlxuICAgICAgICAgICAgICA7IFwiY2hvY29sYXRlXCJcbiAgICAgICAgICAgICAgOyBcImNvcmFsXCJcbiAgICAgICAgICAgICAgOyBcImNvcm5mbG93ZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImNvcm5zaWxrXCJcbiAgICAgICAgICAgICAgOyBcImNyaW1zb25cIlxuICAgICAgICAgICAgICA7IFwiY3lhblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrY3lhblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJra2hha2lcIlxuICAgICAgICAgICAgICA7IFwiZGFya21hZ2VudGFcIlxuICAgICAgICAgICAgICA7IFwiZGFya29saXZlZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya29yYW5nZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtyZWRcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya3R1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrdmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcImRlZXBwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImRlZXBza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcImRpbWdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGltZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkb2RnZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImZpcmVicmlja1wiXG4gICAgICAgICAgICAgIDsgXCJmbG9yYWx3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJmb3Jlc3RncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJmdWNoc2lhXCJcbiAgICAgICAgICAgICAgOyBcImdhaW5zYm9yb1wiXG4gICAgICAgICAgICAgIDsgXCJnaG9zdHdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImdvbGRcIlxuICAgICAgICAgICAgICA7IFwiZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcImdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZ3JlZW55ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwiZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJob25leWRld1wiXG4gICAgICAgICAgICAgIDsgXCJob3RwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImluZGlhbnJlZFwiXG4gICAgICAgICAgICAgIDsgXCJpbmRpZ29cIlxuICAgICAgICAgICAgICA7IFwiaXZvcnlcIlxuICAgICAgICAgICAgICA7IFwia2hha2lcIlxuICAgICAgICAgICAgICA7IFwibGF2ZW5kZXJcIlxuICAgICAgICAgICAgICA7IFwibGF2ZW5kZXJibHVzaFwiXG4gICAgICAgICAgICAgIDsgXCJsYXduZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGVtb25jaGlmZm9uXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGNvcmFsXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Y3lhblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyYXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyZXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c3RlZWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0eWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImxpbWVcIlxuICAgICAgICAgICAgICA7IFwibGltZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpbmVuXCJcbiAgICAgICAgICAgICAgOyBcIm1hZ2VudGFcIlxuICAgICAgICAgICAgICA7IFwibWFyb29uXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bWFxdWFtYXJpbmVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1vcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtcHVycGxlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zcHJpbmdncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW10dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtdmlvbGV0cmVkXCJcbiAgICAgICAgICAgICAgOyBcIm1pZG5pZ2h0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtaW50Y3JlYW1cIlxuICAgICAgICAgICAgICA7IFwibWlzdHlyb3NlXCJcbiAgICAgICAgICAgICAgOyBcIm1vY2Nhc2luXCJcbiAgICAgICAgICAgICAgOyBcIm5hdmFqb3doaXRlXCJcbiAgICAgICAgICAgICAgOyBcIm5hdnlcIlxuICAgICAgICAgICAgICA7IFwib2xkbGFjZVwiXG4gICAgICAgICAgICAgIDsgXCJvbGl2ZVwiXG4gICAgICAgICAgICAgIDsgXCJvbGl2ZWRyYWJcIlxuICAgICAgICAgICAgICA7IFwib3JhbmdlXCJcbiAgICAgICAgICAgICAgOyBcIm9yYW5nZXJlZFwiXG4gICAgICAgICAgICAgIDsgXCJvcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwicGFsZWdvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJwYWxlZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwicGFsZXR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJwYWxldmlvbGV0cmVkXCJcbiAgICAgICAgICAgICAgOyBcInBhcGF5YXdoaXBcIlxuICAgICAgICAgICAgICA7IFwicGVhY2hwdWZmXCJcbiAgICAgICAgICAgICAgOyBcInBlcnVcIlxuICAgICAgICAgICAgICA7IFwicGlua1wiXG4gICAgICAgICAgICAgIDsgXCJwbHVtXCJcbiAgICAgICAgICAgICAgOyBcInBvd2RlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwicHVycGxlXCJcbiAgICAgICAgICAgICAgOyBcInJlZFwiXG4gICAgICAgICAgICAgIDsgXCJyb3N5YnJvd25cIlxuICAgICAgICAgICAgICA7IFwicm95YWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcInNhZGRsZWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInNhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJzYW5keWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInNlYXNoZWxsXCJcbiAgICAgICAgICAgICAgOyBcInNpZW5uYVwiXG4gICAgICAgICAgICAgIDsgXCJzaWx2ZXJcIlxuICAgICAgICAgICAgICA7IFwic2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJzbm93XCJcbiAgICAgICAgICAgICAgOyBcInNwcmluZ2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInN0ZWVsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJ0YW5cIlxuICAgICAgICAgICAgICA7IFwidGVhbFwiXG4gICAgICAgICAgICAgIDsgXCJ0aGlzdGxlXCJcbiAgICAgICAgICAgICAgOyBcInRvbWF0b1wiXG4gICAgICAgICAgICAgIDsgXCJ0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwidmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcIndoZWF0XCJcbiAgICAgICAgICAgICAgOyBcIndoaXRlXCJcbiAgICAgICAgICAgICAgOyBcIndoaXRlc21va2VcIlxuICAgICAgICAgICAgICA7IFwieWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcInllbGxvd2dyZWVuXCJcbiAgICAgICAgICAgICAgXVxuICAgIHRoZW4gc1xuICAgIGVsc2UgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKEpzLnRvX3N0cmluZyBzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3JcIikpXG5cbiAgbGV0IG5hbWUgY24gPSBKcy5zdHJpbmcgKHN0cmluZ19vZl9uYW1lIGNuKVxuXG4gIGxldCBqcyA9IGZ1bmN0aW9uXG4gICAgfCBOYW1lIG4gLT4gbmFtZSBuXG4gICAgfCAoUkdCIF8gfCBSR0JfcGVyY2VudCBfIHwgUkdCQSBfIHwgUkdCQV9wZXJjZW50IF8gfCBIU0wgXyB8IEhTTEEgXykgYXMgYyAtPlxuICAgICAgICBKcy5zdHJpbmcgKHN0cmluZ19vZl90IGMpXG5cbiAgbGV0IG1sIGMgPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIGMgaW5cbiAgICB0cnkgTmFtZSAobmFtZV9vZl9zdHJpbmcgcylcbiAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiAoXG4gICAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3JcIikpIGluXG4gICAgICBsZXQgcmVfcmdiID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihyZ2JhPylcXFxcKCg/OihcXFxcZCopLChcXFxcZCopLChcXFxcZCopKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgcmVfcmdiX3BjdCA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIocmdiYT8pXFxcXCgoPzooXFxcXGQqKSUsKFxcXFxkKiklLChcXFxcZCopJSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IHJlX2hzbCA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIoaHNsYT8pXFxcXCgoPzooXFxcXGQqKSwoXFxcXGQqKSUsKFxcXFxkKiklKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgaV9vZl9zX28gPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICB8IFNvbWUgaSAtPiAoXG4gICAgICAgICAgICB0cnkgaW50X29mX3N0cmluZyBpXG4gICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyB8IEZhaWx1cmUgcyAtPlxuICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJjb2xvciBjb252ZXJzaW9uIGVycm9yIChcIiBeIGkgXiBcIik6IFwiIF4gcykpKVxuICAgICAgaW5cbiAgICAgIGxldCBmX29mX3MgZiA9XG4gICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyB8IEZhaWx1cmUgcyAtPlxuICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImNvbG9yIGNvbnZlcnNpb24gZXJyb3IgKFwiIF4gZiBeIFwiKTogXCIgXiBzKSlcbiAgICAgIGluXG4gICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX3JnYiBzIDAgd2l0aFxuICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgfCBTb21lIFwicmdiXCIgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFJHQiAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgfCBTb21lIFwicmdiYVwiIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBSR0JBIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSkpXG4gICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfcmdiX3BjdCBzIDAgd2l0aFxuICAgICAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBcInJnYlwiIC0+IChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBSR0JfcGVyY2VudCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgICAgIHwgU29tZSBcInJnYmFcIiAtPiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICBSR0JBX3BlcmNlbnQgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX2hzbCBzIDAgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXCJoc2xcIiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gSFNMIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBcImhzbGFcIiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgSFNMQSAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpKSkpXG5lbmRcblxubW9kdWxlIExlbmd0aCA9IHN0cnVjdFxuICAoKiBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXZhbHVlcy8jbGVuZ3RocyAqKVxuXG4gICgqIFRPRE86XG4gICAgIHtbXG4gICAgICAgdHlwZSBqc190ID0gcHJpdmF0ZSBKcy5zdHJpbmcgSnMudFxuICAgICAgIHZhbCBqc190X29mX3RcbiAgICAgICB2YWwgdF9vZl9qc190XG4gICAgICAgdmFsIHRfb2Zfc3RyaW5nXG4gICAgIF19XG4gICopXG5cbiAgdHlwZSB0ID1cbiAgICB8IFplcm9cbiAgICAoKiByZWxhdGl2ZSAqKVxuICAgIHwgRW0gb2YgZmxvYXRcbiAgICB8IEV4IG9mIGZsb2F0XG4gICAgfCBQeCBvZiBmbG9hdFxuICAgIHwgR2Qgb2YgZmxvYXRcbiAgICB8IFJlbSBvZiBmbG9hdFxuICAgIHwgVncgb2YgZmxvYXRcbiAgICB8IFZoIG9mIGZsb2F0XG4gICAgfCBWbSBvZiBmbG9hdFxuICAgIHwgQ2ggb2YgZmxvYXRcbiAgICAoKiBhYnNvbHV0ZSAqKVxuICAgIHwgTW0gb2YgZmxvYXRcbiAgICB8IENtIG9mIGZsb2F0XG4gICAgfCBJbiBvZiBmbG9hdFxuICAgIHwgUHQgb2YgZmxvYXRcbiAgICB8IFBjIG9mIGZsb2F0XG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IFplcm8gLT4gXCIwXCJcbiAgICB8IEVtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImVtXCJcbiAgICB8IEV4IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImV4XCJcbiAgICB8IFB4IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInB4XCJcbiAgICB8IEdkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImdkXCJcbiAgICB8IFJlbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJyZW1cIlxuICAgIHwgVncgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidndcIlxuICAgIHwgVmggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidmhcIlxuICAgIHwgVm0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidm1cIlxuICAgIHwgQ2ggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiY2hcIlxuICAgIHwgTW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwibW1cIlxuICAgIHwgQ20gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiY21cIlxuICAgIHwgSW4gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiaW5cIlxuICAgIHwgUHQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicHRcIlxuICAgIHwgUGMgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicGNcIlxuXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IGpzIHQgPSBKcy5zdHJpbmcgKHN0cmluZ19vZl90IHQpXG5cbiAgbGV0IG1sIHQgPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIHQgaW5cbiAgICBpZiBTdHJpbmcuZXF1YWwgcyBcIjBcIlxuICAgIHRoZW4gWmVyb1xuICAgIGVsc2VcbiAgICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBsZW5ndGhcIikpIGluXG4gICAgICBsZXQgcmUgPSBSZWdleHAucmVnZXhwIFwiXihcXFxcZCooPzpcXFxcLlxcXFxkKik/KVxcXFxzKihcXFxcUyopJFwiIGluXG4gICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlIHMgMCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgIGxldCBmID1cbiAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgfCBTb21lIGYgLT4gKFxuICAgICAgICAgICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIC0+XG4gICAgICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJsZW5ndGggY29udmVyc2lvbiBlcnJvcjogXCIgXiBzKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgfCBTb21lIFwiZW1cIiAtPiBFbSBmXG4gICAgICAgICAgfCBTb21lIFwiZXhcIiAtPiBFeCBmXG4gICAgICAgICAgfCBTb21lIFwicHhcIiAtPiBQeCBmXG4gICAgICAgICAgfCBTb21lIFwiZ2RcIiAtPiBHZCBmXG4gICAgICAgICAgfCBTb21lIFwicmVtXCIgLT4gUmVtIGZcbiAgICAgICAgICB8IFNvbWUgXCJ2d1wiIC0+IFZ3IGZcbiAgICAgICAgICB8IFNvbWUgXCJ2aFwiIC0+IFZoIGZcbiAgICAgICAgICB8IFNvbWUgXCJ2bVwiIC0+IFZtIGZcbiAgICAgICAgICB8IFNvbWUgXCJjaFwiIC0+IENoIGZcbiAgICAgICAgICB8IFNvbWUgXCJtbVwiIC0+IE1tIGZcbiAgICAgICAgICB8IFNvbWUgXCJjbVwiIC0+IENtIGZcbiAgICAgICAgICB8IFNvbWUgXCJpblwiIC0+IEluIGZcbiAgICAgICAgICB8IFNvbWUgXCJwdFwiIC0+IFB0IGZcbiAgICAgICAgICB8IFNvbWUgXCJwY1wiIC0+IFBjIGZcbiAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpKVxuZW5kXG5cbm1vZHVsZSBBbmdsZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRGVnIG9mIGZsb2F0XG4gICAgfCBHcmFkIG9mIGZsb2F0XG4gICAgfCBSYWQgb2YgZmxvYXRcbiAgICB8IFR1cm5zIG9mIGZsb2F0XG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IERlZyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJkZWdcIlxuICAgIHwgR3JhZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJncmFkXCJcbiAgICB8IFJhZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJyYWRcIlxuICAgIHwgVHVybnMgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidHVybnNcIlxuXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IGpzIHQgPSBKcy5zdHJpbmcgKHN0cmluZ19vZl90IHQpXG5cbiAgbGV0IG1sIGogPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIGogaW5cbiAgICBsZXQgcmUgPSBSZWdleHAucmVnZXhwIFwiXihcXFxcZCooPzpcXFxcLlxcXFxkKikpKGRlZ3xncmFkfHJhZHx0dXJucykkXCIgaW5cbiAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgbGVuZ3RoXCIpKSBpblxuICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmUgcyAwIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyAtPlxuICAgICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImxlbmd0aCBjb252ZXJzaW9uIGVycm9yOiBcIiBeIHMpKSlcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIHdpdGhcbiAgICAgICAgfCBTb21lIFwiZGVnXCIgLT4gRGVnIGZcbiAgICAgICAgfCBTb21lIFwiZ3JhZFwiIC0+IEdyYWQgZlxuICAgICAgICB8IFNvbWUgXCJyYWRcIiAtPiBSYWQgZlxuICAgICAgICB8IFNvbWUgXCJ0dXJuc1wiIC0+IFR1cm5zIGZcbiAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG4oKiogSmF2YXNjcmlwdCBldmVudHMuICopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIFR5cCA9IERvbV9odG1sLkV2ZW50XG5cbnR5cGUgbGlzdGVuZXIgPSBEb21faHRtbC5ldmVudF9saXN0ZW5lcl9pZFxuXG5sZXQgbGlzdGVuID8oY2FwdHVyZSA9IGZhbHNlKSB0YXJnZXQgdHlwIGNiID1cbiAgRG9tX2h0bWwuYWRkRXZlbnRMaXN0ZW5lclxuICAgIHRhcmdldFxuICAgIHR5cFxuICAgIChEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biBuIGUgLT4gSnMuYm9vbCAoY2IgbiBlKSkpXG4gICAgKEpzLmJvb2wgY2FwdHVyZSlcblxubGV0IHN0b3BfbGlzdGVuID0gRG9tX2h0bWwucmVtb3ZlRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxubGV0IHhtbG5zID0gSnMuc3RyaW5nIFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuXG4oKiB0cmFuc2xhdGUgc3BlYyBmcm9tIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9pZGwuaHRtbCAqKVxuKCogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL3N0cnVjdC5odG1sICopXG5cbnR5cGUgZXJyb3JfY29kZSA9XG4gIHwgV1JPTkdfVFlQRV9FUlJcbiAgfCBJTlZBTElEX1ZBTFVFX0VSUlxuICB8IE1BVFJJWF9OT1RfSU5WRVJUQUJMRVxuXG5jbGFzcyB0eXBlIHN2Z19lcnJvciA9IG9iamVjdFxuICBpbmhlcml0IEpzLmVycm9yXG5cbiAgbWV0aG9kIGNvZGUgOiBlcnJvcl9jb2RlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmV4Y2VwdGlvbiBTVkdFcnJvciBvZiBzdmdfZXJyb3JcblxudHlwZSBsZW5ndGhVbml0VHlwZSA9XG4gIHwgTEVOR1RIVFlQRV9VTktOT1dOXG4gIHwgTEVOR1RIVFlQRV9OVU1CRVJcbiAgfCBMRU5HVEhUWVBFX1BFUkNFTlRBR0VcbiAgfCBMRU5HVEhUWVBFX0VNU1xuICB8IExFTkdUSFRZUEVfRVhTXG4gIHwgTEVOR1RIVFlQRV9QWFxuICB8IExFTkdUSFRZUEVfQ01cbiAgfCBMRU5HVEhUWVBFX01NXG4gIHwgTEVOR1RIVFlQRV9JTlxuICB8IExFTkdUSFRZUEVfUFRcbiAgfCBMRU5HVEhUWVBFX1BDXG5cbnR5cGUgYW5nbGVVbml0VHlwZSA9XG4gIHwgQU5HTEVUWVBFX1VOS05PV05cbiAgfCBBTkdMRVRZUEVfVU5TUEVDSUZJRURcbiAgfCBBTkdMRVRZUEVfREVHXG4gIHwgQU5HTEVUWVBFX1JBRFxuICB8IEFOR0xFVFlQRV9HUkFEXG5cbnR5cGUgY29sb3JUeXBlID1cbiAgfCBDT0xPUlRZUEVfVU5LTk9XTlxuICB8IENPTE9SVFlQRV9SR0JDT0xPUlxuICB8IENPTE9SVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUlxuICB8IENPTE9SVFlQRV9DVVJSRU5UQ09MT1JcblxudHlwZSBhbGlnbm1lbnRUeXBlID1cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1VOS05PV05cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX05PTkVcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUFYXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1BWFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNQVhcblxudHlwZSBtZWV0T3JTbGljZVR5cGUgPVxuICB8IE1FRVRPUlNMSUNFX1VOS05PV05cbiAgfCBNRUVUT1JTTElDRV9NRUVUXG4gIHwgTUVFVE9SU0xJQ0VfU0xJQ0VcblxudHlwZSB0cmFuc2Zvcm1UeXBlID1cbiAgfCBUUkFOU0ZPUk1fVU5LTk9XTlxuICB8IFRSQU5TRk9STV9NQVRSSVhcbiAgfCBUUkFOU0ZPUk1fVFJBTlNMQVRFXG4gIHwgVFJBTlNGT1JNX1NDQUxFXG4gIHwgVFJBTlNGT1JNX1JPVEFURVxuICB8IFRSQU5TRk9STV9TS0VXWFxuICB8IFRSQU5TRk9STV9TS0VXWVxuXG50eXBlIHpvb21BbmRQYW5UeXBlID1cbiAgfCBaT09NQU5EUEFOX1VOS05PV05cbiAgfCBaT09NQU5EUEFOX0RJU0FCTEVcbiAgfCBaT09NQU5EUEFOX01BR05JRllcblxudHlwZSBsZW5ndGhBZGp1c3QgPVxuICB8IExFTkdUSEFESlVTVF9VTktOT1dOXG4gIHwgTEVOR1RIQURKVVNUX1NQQUNJTkdcbiAgfCBMRU5HVEhBREpVU1RfU1BBQ0lOR0FOREdMWVBIU1xuXG50eXBlIHVuaXRUeXBlID1cbiAgfCBVTklUX1RZUEVfVU5LTk9XTlxuICB8IFVOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRVxuICB8IFVOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVuZGVyaW5nSW50ZW50ICopXG50eXBlIGludGVudFR5cGUgPVxuICB8IFJFTkRFUklOR19JTlRFTlRfVU5LTk9XTlxuICB8IFJFTkRFUklOR19JTlRFTlRfQVVUT1xuICB8IFJFTkRFUklOR19JTlRFTlRfUEVSQ0VQVFVBTFxuICB8IFJFTkRFUklOR19JTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9TQVRVUkFUSU9OXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9BQlNPTFVURV9DT0xPUklNRVRSSUNcblxuKCogUGF0aCBTZWdtZW50IFR5cGVzICopXG50eXBlIHBhdGhTZWdtZW50VHlwZSA9XG4gIHwgUEFUSFNFR19VTktOT1dOXG4gIHwgUEFUSFNFR19DTE9TRVBBVEhcbiAgfCBQQVRIU0VHX01PVkVUT19BQlNcbiAgfCBQQVRIU0VHX01PVkVUT19SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19SRUxcbiAgfCBQQVRIU0VHX0FSQ19BQlNcbiAgfCBQQVRIU0VHX0FSQ19SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX1JFTFxuXG4oKiB0ZXh0UGF0aCBNZXRob2QgVHlwZXMgKilcbnR5cGUgdGV4dFBhdGhNZXRob2RUeXBlID1cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX1VOS05PV05cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX0FMSUdOXG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJFVENIXG5cbigqIHRleHRQYXRoIFNwYWNpbmcgVHlwZXMgKilcbnR5cGUgdGV4dFBhdGhTcGFjaW5nVHlwZSA9XG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfVU5LTk9XTlxuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX0FVVE9cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVFxuXG4oKiBTcHJlYWQgTWV0aG9kIFR5cGVzICopXG50eXBlIHNwcmVhZE1ldGhvZFR5cGUgPVxuICB8IFNQUkVBRE1FVEhPRF9VTktOT1dOXG4gIHwgU1BSRUFETUVUSE9EX1BBRFxuICB8IFNQUkVBRE1FVEhPRF9SRUZMRUNUXG4gIHwgU1BSRUFETUVUSE9EX1JFUEVBVFxuXG50eXBlIHN1c3BlbmRIYW5kbGVJRFxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBbJ2FdIGFuaW1hdGVkID0gb2JqZWN0XG4gIG1ldGhvZCBiYXNlVmFsIDogJ2EgcHJvcFxuXG4gIG1ldGhvZCBhbmltVmFsIDogJ2EgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBsaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBudW1iZXJPZkl0ZW1zIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xlYXIgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5pdGlhbGl6ZSA6ICdhIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0SXRlbSA6IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGluc2VydEl0ZW1CZWZvcmUgOiAnYSAtPiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlSXRlbSA6ICdhIC0+IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUl0ZW0gOiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRJdGVtIDogJ2EgLT4gJ2EgbWV0aFxuZW5kXG5cbigqKioqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tLmVsZW1lbnRcblxuICBtZXRob2QgaWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHhtbGJhc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG93bmVyU1ZHRWxlbWVudCA6IHN2Z0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkU3RyaW5nICopXG5hbmQgYW5pbWF0ZWRTdHJpbmcgPSBbanNfc3RyaW5nIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEJvb2xlYW4gKilcbmFuZCBhbmltYXRlZEJvb2xlYW4gPSBbYm9vbCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3RyaW5nTGlzdCAqKVxuYW5kIHN0cmluZ0xpc3QgPSBbanNfc3RyaW5nIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gKilcbmFuZCBhbmltYXRlZEVudW1lcmF0aW9uID0gW2ludCAoKnNob3J0KildIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEludGVnZXIgKilcbmFuZCBhbmltYXRlZEludGVnZXIgPSBbaW50XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWROdW1iZXIgKilcbmFuZCBhbmltYXRlZE51bWJlciA9IFtudW1iZXJfdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR051bWJlckxpc3QgKilcbmFuZCBudW1iZXJMaXN0ID0gW251bWJlciB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZE51bWJlckxpc3QgKilcbmFuZCBhbmltYXRlZE51bWJlckxpc3QgPSBbbnVtYmVyTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGVuZ3RoICopXG5hbmQgbGVuZ3RoID0gb2JqZWN0XG4gIG1ldGhvZCB1bml0VHlwZSA6IGxlbmd0aFVuaXRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlSW5TcGVjaWZpZWRVbml0cyA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVBc1N0cmluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyA6IGxlbmd0aFVuaXRUeXBlIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyA6IGxlbmd0aFVuaXRUeXBlIC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZExlbmd0aCAqKVxuYW5kIGFuaW1hdGVkTGVuZ3RoID0gW2xlbmd0aCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGVuZ3RoTGlzdCAqKVxuYW5kIGxlbmd0aExpc3QgPSBbbGVuZ3RoIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCAqKVxuYW5kIGFuaW1hdGVkTGVuZ3RoTGlzdCA9IFtsZW5ndGhMaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmdsZSAqKVxuYW5kIGFuZ2xlID0gb2JqZWN0XG4gIG1ldGhvZCB1bml0VHlwZSA6IGFuZ2xlVW5pdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVJblNwZWNpZmllZFVuaXRzIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUFzU3RyaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzIDogYW5nbGVVbml0VHlwZSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udmVydFRvU3BlY2lmaWVkVW5pdHMgOiBhbmdsZVVuaXRUeXBlIC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEFuZ2xlICopXG5hbmQgYW5pbWF0ZWRBbmdsZSA9IFthbmdsZSB0XSBhbmltYXRlZFxuXG4oKiBYWFhYWCBNb3ZlIGl0ICopXG5hbmQgcmdiQ29sb3IgPSBvYmplY3QgZW5kXG5cbigqIGludGVyZmFjZSBTVkdDb2xvciAqKVxuYW5kIGNvbG9yID0gb2JqZWN0XG4gICgqIFhYWCBpbmhlcml0IGNzc1ZhbHVlICopXG4gIG1ldGhvZCBjb2xvclR5cGUgOiBjb2xvclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZ2JDb2xvciA6IHJnYkNvbG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpY2NDb2xvciA6IGljY0NvbG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRSR0JDb2xvciA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSR0JDb2xvcklDQ0NvbG9yIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldENvbG9yIDogY29sb3JUeXBlIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdJQ0NDb2xvciAqKVxuYW5kIGljY0NvbG9yID0gb2JqZWN0XG4gIG1ldGhvZCBjb2xvclByb2ZpbGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbG9ycyA6IG51bWJlckxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JlY3QgKilcbmFuZCByZWN0ID0gb2JqZWN0XG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFJlY3QgKilcbmFuZCBhbmltYXRlZFJlY3QgPSBbcmVjdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3R5bGFibGUgKilcbmFuZCBzdHlsYWJsZSA9IG9iamVjdFxuICBtZXRob2QgY2xhc3NOYW1lIDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0eWxlIDogRG9tX2h0bWwuY3NzU3R5bGVEZWNsYXJhdGlvbiB0IHJlYWRvbmx5X3Byb3BcbiAgKCogICBDU1NWYWx1ZSBnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoaW4gRE9NU3RyaW5nIG5hbWUpOyAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMb2NhdGFibGUgKilcbmFuZCBsb2NhdGFibGUgPSBvYmplY3RcbiAgbWV0aG9kIG5lYXJlc3RWaWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEJCb3ggOiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDVE0gOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNjcmVlbkNUTSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZ2V0VHJhbnNmb3JtVG9FbGVtZW50IDogZWxlbWVudCB0IC0+IG1hdHJpeCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtYWJsZSAqKVxuYW5kIHRyYW5zZm9ybWFibGUgPSBvYmplY3RcbiAgaW5oZXJpdCBsb2NhdGFibGVcblxuICBtZXRob2QgdHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXN0cyAqKVxuYW5kIHRlc3RzID0gb2JqZWN0XG4gIG1ldGhvZCByZXF1aXJlZEZlYXR1cmVzIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVxdWlyZWRFeHRlbnNpb25zIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3lzdGVtTGFuZ3VhZ2UgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoYXNFeHRlbnNpb24gOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMYW5nU3BhY2UgKilcbmFuZCBsYW5nU3BhY2UgPSBvYmplY3RcbiAgbWV0aG9kIHhtbGxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHhtbHNwYWNlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkICopXG5hbmQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA9IG9iamVjdFxuICBtZXRob2QgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA6IGFuaW1hdGVkQm9vbGVhbiB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRml0VG9WaWV3Qm94ICopXG5hbmQgZml0VG9WaWV3Qm94ID0gb2JqZWN0XG4gIG1ldGhvZCB2aWV3Qm94IDogYW5pbWF0ZWRSZWN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvIDogYW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdab29tQW5kUGFuICopXG5hbmQgem9vbUFuZFBhbiA9IG9iamVjdFxuICBtZXRob2Qgem9vbUFuZFBhbiA6IHpvb21BbmRQYW5UeXBlIHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVmlld1NwZWMgKilcbmFuZCB2aWV3U3BlYyA9IG9iamVjdFxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiB0cmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld0JveFN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc2VydmVBc3BlY3RSYXRpb1N0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHJhbnNmb3JtU3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0U3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdVUklSZWZlcmVuY2UgKilcbmFuZCB1cmlSZWZlcmVuY2UgPSBvYmplY3RcbiAgbWV0aG9kIGhyZWYgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ1NTUnVsZSA6IENTU1J1bGUgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ09MT1JfUFJPRklMRV9SVUxFID0gNzsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdEb2N1bWVudCAqKVxuYW5kIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5kb2N1bWVudFxuXG4gICgqWFhYIGluaGVyaXQgZG9jdW1lbnRFdmVudCAqKVxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlZmVycmVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkb21haW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RFbGVtZW50IDogc3ZnRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG4gICgqIHJvb3RFbGVtZW50IHdpbGwgYmUgbnVsbCBvciB1bmRlZmluZWQgaW4gYW4gaHRtbCBjb250ZXh0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NWR0VsZW1lbnQgKilcbmFuZCBzdmdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGxvY2F0YWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgKCpYWFggaW5oZXJpdCBkb2N1bWVudGV2ZW50LCB2aWV3Y3NzLCBkb2N1bWVudGNzcyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50U2NyaXB0VHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudFN0eWxlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgdmlld3BvcnQgOiByZWN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwaXhlbFVuaXRUb01pbGxpbWV0ZXJYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwaXhlbFVuaXRUb01pbGxpbWV0ZXJZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5QaXhlbFVuaXRUb01pbGxpbWV0ZXJYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5QaXhlbFVuaXRUb01pbGxpbWV0ZXJZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VDdXJyZW50VmlldyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRWaWV3IDogdmlld1NwZWMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRTY2FsZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgY3VycmVudFRyYW5zbGF0ZSA6IHBvaW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdXNwZW5kUmVkcmF3IDogaW50IC0+IHN1c3BlbmRIYW5kbGVJRCBtZXRoXG5cbiAgbWV0aG9kIHVuc3VzcGVuZFJlZHJhdyA6IHN1c3BlbmRIYW5kbGVJRCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5zdXNwZW5kUmVkcmF3QWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvcmNlUmVkcmF3IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBhdXNlQW5pbWF0aW9ucyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bnBhdXNlQW5pbWF0aW9ucyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhbmltYXRpb25zUGF1c2VkIDogYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q3VycmVudFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEN1cnJlbnRUaW1lIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnRlcnNlY3Rpb25MaXN0IDogcmVjdCB0IC0+IGVsZW1lbnQgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RW5jbG9zdXJlTGlzdCA6IHJlY3QgdCAtPiBlbGVtZW50IHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGNoZWNrSW50ZXJzZWN0aW9uIDogZWxlbWVudCB0IC0+IHJlY3QgdCAtPiBib29sIHRcblxuICBtZXRob2QgY2hlY2tFbmNsb3N1cmUgOiBlbGVtZW50IHQgLT4gcmVjdCB0IC0+IGJvb2wgdFxuXG4gIG1ldGhvZCBkZXNlbGVjdEFsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdOdW1iZXIgOiBudW1iZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR0xlbmd0aCA6IGxlbmd0aCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHQW5nbGUgOiBhbmdsZSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUG9pbnQgOiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTWF0cml4IDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdSZWN0IDogcmVjdCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtIDogdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4IDogbWF0cml4IHQgLT4gdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50QnlJZCA6IGpzX3N0cmluZyB0IC0+IERvbS5lbGVtZW50IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdHRWxlbWVudCAqKVxuYW5kIGdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0RlZnNFbGVtZW50ICopXG5hbmQgZGVmc0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuICAoKiBYWFhYWFhYID8gaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdEZXNjRWxlbWVudCAqKVxuYW5kIGRlc2NFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuICAoKiBYWFhYWFhYID8gaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUaXRsZUVsZW1lbnQgKilcbmFuZCB0aXRsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1N5bWJvbEVsZW1lbnQgKilcbmFuZCBzeW1ib2xFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdVc2VFbGVtZW50ICopXG5hbmQgdXNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnN0YW5jZVJvb3QgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkSW5zdGFuY2VSb290IDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBlbGVtZW50SW5zdGFuY2UgPSBvYmplY3RcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCBjb3JyZXNwb25kaW5nRWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvcnJlc3BvbmRpbmdVc2VFbGVtZW50IDogdXNlRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50Tm9kZSA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hpbGROb2RlcyA6IGVsZW1lbnRJbnN0YW5jZUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpcnN0Q2hpbGQgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RDaGlsZCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxlbWVudEluc3RhbmNlTGlzdCAqKVxuYW5kIGVsZW1lbnRJbnN0YW5jZUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gZWxlbWVudEluc3RhbmNlIHRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSW1hZ2VFbGVtZW50ICopXG5hbmQgaW1hZ2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG4gICgqIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuZW5kXG5cbmFuZCBzd2l0Y2hFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbmVuZFxuXG4oKiBYWFggZGVwcmVjYXRlZCA9PiBpbnRlcmZhY2UgR2V0U1ZHRG9jdW1lbnQgPT4gU1ZHRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKSAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHU3R5bGVFbGVtZW50ICopXG5hbmQgc3R5bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgbWV0aG9kIHR5cGVfIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvaW50ICopXG5hbmQgcG9pbnQgPSBvYmplY3RcbiAgbWV0aG9kIHggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1hdHJpeFRyYW5zZm9ybSA6IG1hdHJpeCB0IC0+IHBvaW50IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2ludExpc3QgKilcbmFuZCBwb2ludExpc3QgPSBbcG9pbnQgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWF0cml4ICopXG5hbmQgbWF0cml4ID0gb2JqZWN0XG4gIG1ldGhvZCBhIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBiIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtdWx0aXBseSA6IG1hdHJpeCB0IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgaW52ZXJzZSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgdHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2NhbGVOb25Vbmlmb3JtIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGUgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZUZyb21WZWN0b3IgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGZsaXBYIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBmbGlwWSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2tld1ggOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNrZXdZIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm0gKilcbmFuZCB0cmFuc2Zvcm0gPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDogdHJhbnNmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1hdHJpeCA6IG1hdHJpeCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5nbGUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldE1hdHJpeCA6IG1hdHJpeCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUcmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2NhbGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0Um90YXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNrZXdYIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNrZXdZIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybUxpc3QgKilcbmFuZCB0cmFuc2Zvcm1MaXN0ID0gb2JqZWN0XG4gIGluaGVyaXQgW3RyYW5zZm9ybSB0XSBsaXN0XG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXggOiBtYXRyaXggLT4gdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBjb25zb2xpZGF0ZSA6IHRyYW5zZm9ybSB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ICopXG5hbmQgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ID0gW3RyYW5zZm9ybUxpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmFuZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvID0gb2JqZWN0XG4gIG1ldGhvZCBhbGlnbiA6IGFsaWdubWVudFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZWV0T3JTbGljZSA6IG1lZXRPclNsaWNlVHlwZSByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuYW5kIGFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyA9IFtwcmVzZXJ2ZUFzcGVjdFJhdGlvIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnICopXG5hbmQgcGF0aFNlZyA9IG9iamVjdFxuICBtZXRob2QgcGF0aFNlZ1R5cGUgOiBwYXRoU2VnbWVudFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXRoU2VnVHlwZUFzTGV0dGVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ2xvc2VQYXRoICopXG5hbmQgcGF0aFNlZ0Nsb3NlUGF0aCA9IHBhdGhTZWdcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdNb3ZldG9BYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTW92ZXRvUmVsICopXG5hbmQgcGF0aFNlZ01vdmV0byA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9SZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkyIDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsICopXG5hbmQgcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0FyY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdBcmNSZWwqKVxuYW5kIHBhdGhTZWdBcmMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHIxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCByMiA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgYW5nbGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGxhcmdlQXJjRmxhZyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHN3ZWVwRmxhZyA6IGJvb2wgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5lbmRcblxuYW5kIHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcblxuICBtZXRob2QgeDIgOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5MiA6IG51bWJlcl90XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwgICopXG5hbmQgcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcbmVuZFxuXG5hbmQgcGF0aFNlZ0xpc3QgPSBbcGF0aFNlZyB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFBhdGhEYXRhICopXG5hbmQgYW5pbWF0ZWRQYXRoRGF0YSA9IG9iamVjdFxuICBtZXRob2QgcGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2Qgbm9ybWFsaXplZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0ZWROb3JtYWxpemVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aEVsZW1lbnQgKilcbmFuZCBwYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBhdGhEYXRhXG5cbiAgbWV0aG9kIHBhdGhMZW5ndGggOiBhbmltYXRlZE51bWJlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0VG90YWxMZW5ndGggOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBvaW50QXRMZW5ndGggOiBudW1iZXJfdCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0UGF0aFNlZ0F0TGVuZ3RoIDogbnVtYmVyX3QgLT4gaW50XG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDbG9zZVBhdGggOiBwYXRoU2VnQ2xvc2VQYXRoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b0FicyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdNb3ZldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTW92ZXRvUmVsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ01vdmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9BYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1JlbCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBwYXRoU2VnQ3VydmV0b0N1YmljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gcGF0aFNlZ0N1cnZldG9DdWJpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdBcmNBYnMgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBib29sIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBwYXRoU2VnQXJjIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0FyY1JlbCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHBhdGhTZWdBcmMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicyA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoIG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVjdEVsZW1lbnQgKilcbmFuZCByZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ2lyY2xlRWxlbWVudCAqKVxuYW5kIGNpcmNsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0VsbGlwc2VFbGVtZW50ICopXG5hbmQgZWxsaXBzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMaW5lRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBsaW5lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB4MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFBvaW50cyAqKVxuYW5kIGFuaW1hdGVkUG9pbnRzID0gb2JqZWN0XG4gIG1ldGhvZCBwb2ludHMgOiBwb2ludExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkcG9pbnRzIDogcG9pbnRMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2x5bGluZUVsZW1lbnQgKilcbmFuZCBwb2x5TGluZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQb2ludHNcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9seWdvbkVsZW1lbnQgKilcbmFuZCBwb2x5Z29uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBvaW50c1xuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0Q29udGVudEVsZW1lbnQgKilcbmFuZCB0ZXh0Q29udGVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdGV4dExlbmd0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGhBZGp1c3QgOiBsZW5ndGhBZGp1c3QgYW5pbWF0ZWQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldE51bWJlck9mQ2hhcnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFRleHRMZW5ndGggOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFN1YlN0cmluZ0xlbmd0aCA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTdGFydFBvc2l0aW9uT2ZDaGFyIDogaW50IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbmRQb3NpdGlvbk9mQ2hhciA6IGludCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RXh0ZW50T2ZDaGFyIDogaW50IC0+IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFJvdGF0aW9uT2ZDaGFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0Q2hhck51bUF0UG9zaXRpb24gOiBwb2ludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3RTdWJTdHJpbmcgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50ICopXG5hbmQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRDb250ZW50RWxlbWVudFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkeCA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHkgOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IGFuaW1hdGVkTnVtYmVyTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dEVsZW1lbnQgKilcbmFuZCB0ZXh0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbmVuZFxuXG5hbmQgdHNwYW5FbGVtZW50ID0gdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG5hbmQgdHJlZkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dFBhdGhFbGVtZW50ICopXG5hbmQgdGV4dFBhdGhFbGVtZW50TWV0aG9kID0gW3RleHRQYXRoTWV0aG9kVHlwZV0gYW5pbWF0ZWRcblxuYW5kIHRleHRQYXRoRWxlbWVudFNwYWNpbmcgPSBbdGV4dFBhdGhTcGFjaW5nVHlwZV0gYW5pbWF0ZWRcblxuYW5kIHRleHRQYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRDb250ZW50RWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgbWV0aG9kIHN0YXJ0T2Zmc2V0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGhvZF8gOiB0ZXh0UGF0aEVsZW1lbnRNZXRob2QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGFjaW5nIDogdGV4dFBhdGhFbGVtZW50U3BhY2luZyByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIG1ldGhvZCBnbHlwaFJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybWF0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaERlZkVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaERlZkVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaEl0ZW1FbGVtZW50ICopXG5hbmQgYWx0R2x5cGhJdGVtRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0dseXBoUmVmRWxlbWVudCAqKVxuYW5kIGdseXBoUmVmRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBtZXRob2QgZ2x5cGhSZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm1hdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYWludCA6IFNWR0NvbG9yIHsgKilcblxuKCogICAvLyBQYWludCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUiA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfTk9ORSA9IDEwMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IgPSAxMDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX05PTkUgPSAxMDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUiA9IDEwNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1IgPSAxMDU7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SX0lDQ0NPTE9SID0gMTA2OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSSA9IDEwNzsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcGFpbnRUeXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVyaTsgKilcblxuKCogICB2b2lkIHNldFVyaShpbiBET01TdHJpbmcgdXJpKTsgKilcbigqICAgdm9pZCBzZXRQYWludChpbiB1bnNpZ25lZCBzaG9ydCBwYWludFR5cGUsIGluIERPTVN0cmluZyB1cmksIGluIERPTVN0cmluZyByZ2JDb2xvciwgaW4gRE9NU3RyaW5nIGljY0NvbG9yKSByYWlzZXMoU1ZHRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdNYXJrZXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTGFuZ1NwYWNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdTdHlsYWJsZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRml0VG9WaWV3Qm94IHsgKilcblxuKCogICAvLyBNYXJrZXIgVW5pdCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19VU0VSU1BBQ0VPTlVTRSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19TVFJPS0VXSURUSCA9IDI7ICopXG5cbigqICAgLy8gTWFya2VyIE9yaWVudGF0aW9uIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9BVVRPID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfQU5HTEUgPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCByZWZYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggcmVmWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFya2VyVW5pdHM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBtYXJrZXJXaWR0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIG1hcmtlckhlaWdodDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3JpZW50VHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkQW5nbGUgb3JpZW50QW5nbGU7ICopXG5cbigqICAgdm9pZCBzZXRPcmllbnRUb0F1dG8oKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgdm9pZCBzZXRPcmllbnRUb0FuZ2xlKGluIFNWR0FuZ2xlIGFuZ2xlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb2xvclByb2ZpbGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHVVJJUmVmZXJlbmNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdSZW5kZXJpbmdJbnRlbnQgeyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxvY2FsOyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7ICopXG4oKiAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZW5kZXJpbmdJbnRlbnQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3JQcm9maWxlUnVsZSA6IFNWR0NTU1J1bGUsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1JlbmRlcmluZ0ludGVudCB7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgc3JjIHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWUgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZW5kZXJpbmdJbnRlbnQgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHR3JhZGllbnRFbGVtZW50ICopXG5hbmQgYW5pbWF0ZWRTcHJlYWRNZXRob2QgPSBbc3ByZWFkTWV0aG9kVHlwZV0gYW5pbWF0ZWRcblxuYW5kIGdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGdyYWRpZW50VW5pdHM7ICopXG4gIG1ldGhvZCBncmFkaWVudFRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3ByZWFkTWV0aG9kIDogYW5pbWF0ZWRTcHJlYWRNZXRob2QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCAqKVxuYW5kIGxpbmVhckdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGdyYWRpZW50RWxlbWVudFxuXG4gIG1ldGhvZCB4MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQgKilcbmFuZCByYWRpYWxHcmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBncmFkaWVudEVsZW1lbnRcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgciA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTdG9wRWxlbWVudCAqKVxuYW5kIHN0b3BFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBtZXRob2Qgb2Zmc2V0IDogYW5pbWF0ZWROdW1iZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdHRlcm5FbGVtZW50ICopXG5hbmQgcGF0dGVybkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHBhdHRlcm5Vbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwYXR0ZXJuQ29udGVudFVuaXRzOyAqKVxuICBtZXRob2QgcGF0dGVyblRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDbGlwUGF0aEVsZW1lbnQgKilcbmFuZCBjbGlwUGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGNsaXBQYXRoVW5pdHM7ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR01hc2tFbGVtZW50ICopXG5hbmQgbWFza0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFza1VuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hc2tDb250ZW50VW5pdHM7ICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpbHRlckVsZW1lbnQgKilcbmFuZCBmaWx0ZXJFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBmaWx0ZXJVbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwcmltaXRpdmVVbml0czsgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsdGVyUmVzWCA6IGFuaW1hdGVkSW50ZWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsdGVyUmVzWSA6IGFuaW1hdGVkSW50ZWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0RmlsdGVyUmVzIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIDogU1ZHU3R5bGFibGUgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB3aWR0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIGhlaWdodDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIHJlc3VsdDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUJsZW5kRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIEJsZW5kIE1vZGUgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9OT1JNQUwgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX01VTFRJUExZID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9TQ1JFRU4gPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX0RBUktFTiA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTElHSFRFTiA9IDU7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbW9kZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbG9yTWF0cml4RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENvbG9yIE1hdHJpeCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEUgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfTFVNSU5BTkNFVE9BTFBIQSA9IDQ7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCB2YWx1ZXM7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuXG4oKiAgIC8vIENvbXBvbmVudCBUcmFuc2ZlciBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0lERU5USVRZID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9UQUJMRSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfRElTQ1JFVEUgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUiA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfR0FNTUEgPSA1OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3QgdGFibGVWYWx1ZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzbG9wZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGludGVyY2VwdDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGFtcGxpdHVkZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgb2Zmc2V0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY1JFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0dFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0JFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0FFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29tcG9zaXRlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDb21wb3NpdGUgT3BlcmF0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfSU4gPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VUID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0FUT1AgPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SID0gNTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUMgPSA2OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9wZXJhdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGszOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBFZGdlIE1vZGUgVmFsdWVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX0RVUExJQ0FURSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9XUkFQID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX05PTkUgPSAzOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgb3JkZXJYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG9yZGVyWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCBrZXJuZWxNYXRyaXg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkaXZpc29yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmlhczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciB0YXJnZXRYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIHRhcmdldFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGVkZ2VNb2RlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkQm9vbGVhbiBwcmVzZXJ2ZUFscGhhOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN1cmZhY2VTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGRpZmZ1c2VDb25zdGFudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBhemltdXRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZWxldmF0aW9uOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgejsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVNwb3RMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgejsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyRXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBsaW1pdGluZ0NvbmVBbmdsZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ2hhbm5lbCBTZWxlY3RvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX1IgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9HID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfQiA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0EgPSA0OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24geENoYW5uZWxTZWxlY3RvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24geUNoYW5uZWxTZWxlY3RvcjsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZsb29kRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3RkRGV2aWF0aW9uWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN0ZERldmlhdGlvblk7ICopXG5cbigqICAgdm9pZCBzZXRTdGREZXZpYXRpb24oaW4gZmxvYXQgc3RkRGV2aWF0aW9uWCwgaW4gZmxvYXQgc3RkRGV2aWF0aW9uWSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVJbWFnZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHVVJJUmVmZXJlbmNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTGFuZ1NwYWNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbzsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1lcmdlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIE1vcnBob2xvZ3kgT3BlcmF0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX0RJTEFURSA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3BlcmF0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciByYWRpdXNYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcmFkaXVzWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU9mZnNldEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGR5OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3VyZmFjZVNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJDb25zdGFudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyRXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFVGlsZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIFR1cmJ1bGVuY2UgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9GUkFDVEFMTk9JU0UgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0UgPSAyOyAqKVxuXG4oKiAgIC8vIFN0aXRjaCBPcHRpb25zICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9TVElUQ0ggPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9OT1NUSVRDSCA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJhc2VGcmVxdWVuY3lYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmFzZUZyZXF1ZW5jeVk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgbnVtT2N0YXZlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNlZWQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHN0aXRjaFRpbGVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0N1cnNvckVsZW1lbnQgKilcbmFuZCBjdXJzb3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQUVsZW1lbnQgKilcbmFuZCBhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgdGFyZ2V0IDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1ZpZXdFbGVtZW50ICopXG5hbmQgdmlld0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICBtZXRob2Qgdmlld1RhcmdldCA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NjcmlwdEVsZW1lbnQgKilcbmFuZCBzY3JpcHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgbWV0aG9kIHR5cGVfIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdab29tRXZlbnQgOiBVSUV2ZW50ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdSZWN0IHpvb21SZWN0U2NyZWVuOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgcHJldmlvdXNTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1BvaW50IHByZXZpb3VzVHJhbnNsYXRlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgbmV3U2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdQb2ludCBuZXdUcmFuc2xhdGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0aW9uRWxlbWVudCAqKVxuYW5kIGFuaW1hdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gICgqIGluaGVyaXQgZWxlbWVudFRpbWVDb250cm9sICopXG4gIG1ldGhvZCB0YXJnZXRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0U3RhcnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRDdXJyZW50VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U2ltcGxlRHVyYXRpb24gOiBudW1iZXJfdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVFbGVtZW50ICopXG5hbmQgYW5pbWF0ZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBhbmltYXRpb25FbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTZXRFbGVtZW50ICopXG5hbmQgc2V0RWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50ICopXG5hbmQgYW5pbWF0ZU1vdGlvbkVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdNUGF0aEVsZW1lbnQgKilcbmFuZCBtUGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVDb2xvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBhbmltYXRpb25FbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEVsZW1lbnQgKilcbmFuZCBmb250RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0dseXBoRWxlbWVudCAqKVxuKCogaW50ZXJmYWNlIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQqKVxuYW5kIGdseXBoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0hLZXJuRWxlbWVudCA6IFNWR0VsZW1lbnQgKilcbigqIGludGVyZmFjZSBTVkdWS2VybkVsZW1lbnQgOiBTVkdFbGVtZW50ICopXG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VTcmNFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlU3JjRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlVXJpRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZVVyaUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZUZvcm1hdEVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VGb3JtYXRFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VOYW1lRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZU5hbWVFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWV0YWRhdGFFbGVtZW50ICopXG5jbGFzcyB0eXBlIG1ldGFkYXRhRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvcmVpZ25PYmplY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBjcmVhdGVFbGVtZW50IChkb2MgOiBkb2N1bWVudCB0KSBuYW1lID0gZG9jIyNjcmVhdGVFbGVtZW50TlMgeG1sbnMgKEpzLnN0cmluZyBuYW1lKVxuXG5sZXQgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgbmFtZSA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUpXG5cbmxldCBjcmVhdGVBIGRvYyA6IGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGggZG9jIDogYWx0R2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoRGVmIGRvYyA6IGFsdEdseXBoRGVmRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaGRlZlwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaEl0ZW0gZG9jIDogYWx0R2x5cGhJdGVtRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaGl0ZW1cIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZSBkb2MgOiBhbmltYXRlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVDb2xvciBkb2MgOiBhbmltYXRlQ29sb3JFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVjb2xvclwiXG5cbmxldCBjcmVhdGVBbmltYXRlTW90aW9uIGRvYyA6IGFuaW1hdGVNb3Rpb25FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVtb3Rpb25cIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSBkb2MgOiBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRldHJhbnNmb3JtXCJcblxubGV0IGNyZWF0ZUNpcmNsZSBkb2MgOiBjaXJjbGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNpcmNsZVwiXG5cbmxldCBjcmVhdGVDbGlwUGF0aCBkb2MgOiBjbGlwUGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2xpcHBhdGhcIlxuXG4oKiBsZXQgY3JlYXRlQ29sb3JQcm9maWxlIGRvYyA6IGNvbG9yUHJvZmlsZSB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xvci1wcm9maWxlXCIgKilcbmxldCBjcmVhdGVDdXJzb3IgZG9jIDogY3Vyc29yRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjdXJzb3JcIlxuXG5sZXQgY3JlYXRlRGVmcyBkb2MgOiBkZWZzRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZWZzXCJcblxubGV0IGNyZWF0ZURlc2MgZG9jIDogZGVzY0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVzY1wiXG5cbmxldCBjcmVhdGVFbGxpcHNlIGRvYyA6IGVsbGlwc2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImVsbGlwc2VcIlxuXG4oKiBsZXQgY3JlYXRlRmUqICopXG5sZXQgY3JlYXRlRmlsdGVyIGRvYyA6IGZpbHRlckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZmlsdGVyXCJcblxubGV0IGNyZWF0ZUZvbnQgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udFwiXG5cbmxldCBjcmVhdGVGb250RmFjZSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2VcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VGb3JtYXQgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLWZvcm1hdFwiXG5cbmxldCBjcmVhdGVGb250RmFjZU5hbWUgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLW5hbWVcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VTcmMgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLXNyY1wiXG5cbmxldCBjcmVhdGVGb250RmFjZVVyaSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtdXJpXCJcblxubGV0IGNyZWF0ZUZvcmVpZ25PYmplY3QgZG9jIDogZm9yZWlnbk9iamVjdEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9yZWlnbk9iamVjdFwiXG5cbmxldCBjcmVhdGVHIGRvYyA6IGdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdcIlxuXG5sZXQgY3JlYXRlR2x5cGggZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdseXBoXCJcblxubGV0IGNyZWF0ZUdseXBoUmVmIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnbHlwaHJlZlwiXG5cbmxldCBjcmVhdGVoa2VybiBkb2MgOiBlbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhrZXJuXCJcblxubGV0IGNyZWF0ZUltYWdlIGRvYyA6IGltYWdlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbWFnZVwiXG5cbmxldCBjcmVhdGVMaW5lRWxlbWVudCBkb2MgOiBsaW5lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5lXCJcblxubGV0IGNyZWF0ZUxpbmVhckVsZW1lbnQgZG9jIDogbGluZWFyR3JhZGllbnRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmVhcmdyYWRpZW50XCJcblxuKCogbGV0IGNyZWF0ZU1hcmtlciBkb2MgOiBtYXJrZXJFbGVtZW50ICopXG5sZXQgY3JlYXRlTWFzayBkb2MgOiBtYXNrRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtYXNrXCJcblxubGV0IGNyZWF0ZU1ldGFEYXRhIGRvYyA6IG1ldGFkYXRhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtZXRhZGF0YVwiXG5cbmxldCBjcmVhdGVNaXNzaW5nR2x5cGggZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1pc3NpbmctZ2x5cGhcIlxuXG5sZXQgY3JlYXRlTVBhdGggZG9jIDogbVBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1wYXRoXCJcblxubGV0IGNyZWF0ZVBhdGggZG9jIDogcGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGF0aFwiXG5cbmxldCBjcmVhdGVQYXR0ZXJuIGRvYyA6IHBhdHRlcm5FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhdHRlcm5cIlxuXG5sZXQgY3JlYXRlUG9seWdvbiBkb2MgOiBwb2x5Z29uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwb2x5Z29uXCJcblxubGV0IGNyZWF0ZVBvbHlsaW5lIGRvYyA6IHBvbHlMaW5lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwb2x5bGluZVwiXG5cbmxldCBjcmVhdGVSYWRpYWxncmFkaWVudCBkb2MgOiByYWRpYWxHcmFkaWVudEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicmFkaWFsZ3JhZGllbnRcIlxuXG5sZXQgY3JlYXRlUmVjdCBkb2MgOiByZWN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJyZWN0XCJcblxubGV0IGNyZWF0ZVNjcmlwdCBkb2MgOiBzY3JpcHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNjcmlwdFwiXG5cbmxldCBjcmVhdGVTZXQgZG9jIDogc2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzZXRcIlxuXG5sZXQgY3JlYXRlU3RvcCBkb2MgOiBzdG9wRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdG9wXCJcblxubGV0IGNyZWF0ZVN0eWxlIGRvYyA6IHN0eWxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdHlsZVwiXG5cbmxldCBjcmVhdGVTdmcgZG9jIDogc3ZnRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdmdcIlxuXG5sZXQgY3JlYXRlU3dpdGNoIGRvYyA6IHN3aXRjaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3dpdGNoXCJcblxubGV0IGNyZWF0ZVN5bWJvbCBkb2MgOiBzeW1ib2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN5bWJvbFwiXG5cbmxldCBjcmVhdGVUZXh0RWxlbWVudCBkb2MgOiB0ZXh0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZXh0XCJcblxubGV0IGNyZWF0ZVRleHRwYXRoIGRvYyA6IHRleHRQYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZXh0cGF0aFwiXG5cbmxldCBjcmVhdGVUaXRsZSBkb2MgOiB0aXRsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGl0bGVcIlxuXG5sZXQgY3JlYXRlVHJlZiBkb2MgOiB0cmVmRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0cmVmXCJcblxubGV0IGNyZWF0ZVRzcGFuIGRvYyA6IHRzcGFuRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0c3BhblwiXG5cbmxldCBjcmVhdGVVc2UgZG9jIDogdXNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ1c2VcIlxuXG5sZXQgY3JlYXRlVmlldyBkb2MgOiB2aWV3RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2aWV3XCJcblxubGV0IGNyZWF0ZXZrZXJuIGRvYyA6IGVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmtlcm5cIlxuXG4oKioqKilcblxubGV0IHN2Z19lbGVtZW50IDogZWxlbWVudCB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fU1ZHRWxlbWVudFxuXG5sZXQgZG9jdW1lbnQgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuZG9jdW1lbnRcblxubGV0IGdldEVsZW1lbnRCeUlkIGlkIDogZWxlbWVudCB0ID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoSnMuVW5zYWZlLmdsb2JhbCMjLmRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAoZnVuIGUgLT4gaWYgSnMuaW5zdGFuY2VvZiBlIHN2Z19lbGVtZW50IHRoZW4gZSBlbHNlIHJhaXNlIE5vdF9mb3VuZClcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBlbGVtZW50IChlIDogI0RvbS5ub2RlIEpzLnQpIDogZWxlbWVudCBKcy50IEpzLm9wdCA9XG4gICAgaWYgSnMuaW5zdGFuY2VvZiBlIHN2Z19lbGVtZW50IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgdW5zYWZlQ29lcmNlIChlIDogI2VsZW1lbnQgdCkgdGFnID1cbiAgICBpZiBKcy5lcXVhbHMgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgdGFnKVxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhIGUgOiBhRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYVwiXG5cbiAgbGV0IGFsdEdseXBoIGUgOiBhbHRHbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoXCJcblxuICBsZXQgYWx0R2x5cGhEZWYgZSA6IGFsdEdseXBoRGVmRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhkZWZcIlxuXG4gIGxldCBhbHRHbHlwaEl0ZW0gZSA6IGFsdEdseXBoSXRlbUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoaXRlbVwiXG5cbiAgbGV0IGFuaW1hdGUgZSA6IGFuaW1hdGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlXCJcblxuICBsZXQgYW5pbWF0ZUNvbG9yIGUgOiBhbmltYXRlQ29sb3JFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlY29sb3JcIlxuXG4gIGxldCBhbmltYXRlTW90aW9uIGUgOiBhbmltYXRlTW90aW9uRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZW1vdGlvblwiXG5cbiAgbGV0IGFuaW1hdGVUcmFuc2Zvcm0gZSA6IGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50IHQgb3B0ID1cbiAgICB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGV0cmFuc2Zvcm1cIlxuXG4gIGxldCBjaXJjbGUgZSA6IGNpcmNsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNpcmNsZVwiXG5cbiAgbGV0IGNsaXBQYXRoIGUgOiBjbGlwUGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNsaXBwYXRoXCJcblxuICAoKiBsZXQgQ29sb3JQcm9maWxlIGUgOiBjb2xvclByb2ZpbGUgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNvbG9yLXByb2ZpbGVcIiAqKVxuICBsZXQgY3Vyc29yIGUgOiBjdXJzb3JFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjdXJzb3JcIlxuXG4gIGxldCBkZWZzIGUgOiBkZWZzRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZGVmc1wiXG5cbiAgbGV0IGRlc2MgZSA6IGRlc2NFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJkZXNjXCJcblxuICBsZXQgZWxsaXBzZSBlIDogZWxsaXBzZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImVsbGlwc2VcIlxuXG4gICgqIGxldCBGZSogKilcbiAgbGV0IGZpbHRlciBlIDogZmlsdGVyRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZmlsdGVyXCJcblxuICBsZXQgZm9udCBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnRcIlxuXG4gIGxldCBmb250RmFjZSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZVwiXG5cbiAgbGV0IGZvbnRGYWNlRm9ybWF0IGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLWZvcm1hdFwiXG5cbiAgbGV0IGZvbnRGYWNlTmFtZSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1uYW1lXCJcblxuICBsZXQgZm9udEZhY2VTcmMgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2Utc3JjXCJcblxuICBsZXQgZm9udEZhY2VVcmkgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtdXJpXCJcblxuICBsZXQgZm9yZWlnbk9iamVjdCBlIDogZm9yZWlnbk9iamVjdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvcmVpZ25vYmplY3RcIlxuXG4gIGxldCBnIGUgOiBnRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ1wiXG5cbiAgbGV0IGdseXBoIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdseXBoXCJcblxuICBsZXQgZ2x5cGhSZWYgZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ2x5cGhyZWZcIlxuXG4gIGxldCBoa2VybiBlIDogZWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiaGtlcm5cIlxuXG4gIGxldCBpbWFnZSBlIDogaW1hZ2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJpbWFnZVwiXG5cbiAgbGV0IGxpbmVFbGVtZW50IGUgOiBsaW5lRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibGluZVwiXG5cbiAgbGV0IGxpbmVhckVsZW1lbnQgZSA6IGxpbmVhckdyYWRpZW50RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibGluZWFyZ3JhZGllbnRcIlxuXG4gICgqIGxldCBNYXJrZXIgZSA6IG1hcmtlckVsZW1lbnQgKilcbiAgbGV0IG1hc2sgZSA6IG1hc2tFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtYXNrXCJcblxuICBsZXQgbWV0YURhdGEgZSA6IG1ldGFkYXRhRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWV0YWRhdGFcIlxuXG4gIGxldCBtaXNzaW5nR2x5cGggZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWlzc2luZy1nbHlwaFwiXG5cbiAgbGV0IG1QYXRoIGUgOiBtUGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1wYXRoXCJcblxuICBsZXQgcGF0aCBlIDogcGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBhdGhcIlxuXG4gIGxldCBwYXR0ZXJuIGUgOiBwYXR0ZXJuRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicGF0dGVyblwiXG5cbiAgbGV0IHBvbHlnb24gZSA6IHBvbHlnb25FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwb2x5Z29uXCJcblxuICBsZXQgcG9seWxpbmUgZSA6IHBvbHlMaW5lRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicG9seWxpbmVcIlxuXG4gIGxldCByYWRpYWxncmFkaWVudCBlIDogcmFkaWFsR3JhZGllbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJyYWRpYWxncmFkaWVudFwiXG5cbiAgbGV0IHJlY3QgZSA6IHJlY3RFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJyZWN0XCJcblxuICBsZXQgc2NyaXB0IGUgOiBzY3JpcHRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzY3JpcHRcIlxuXG4gIGxldCBzZXQgZSA6IHNldEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInNldFwiXG5cbiAgbGV0IHN0b3AgZSA6IHN0b3BFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdG9wXCJcblxuICBsZXQgc3R5bGUgZSA6IHN0eWxlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3R5bGVcIlxuXG4gIGxldCBzdmcgZSA6IHN2Z0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN2Z1wiXG5cbiAgbGV0IHN3aXRjaCBlIDogc3dpdGNoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3dpdGNoXCJcblxuICBsZXQgc3ltYm9sIGUgOiBzeW1ib2xFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzeW1ib2xcIlxuXG4gIGxldCB0ZXh0RWxlbWVudCBlIDogdGV4dEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRleHRcIlxuXG4gIGxldCB0ZXh0cGF0aCBlIDogdGV4dFBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0ZXh0cGF0aFwiXG5cbiAgbGV0IHRpdGxlIGUgOiB0aXRsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRpdGxlXCJcblxuICBsZXQgdHJlZiBlIDogdHJlZkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRyZWZcIlxuXG4gIGxldCB0c3BhbiBlIDogdHNwYW5FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0c3BhblwiXG5cbiAgbGV0IHVzZSBlIDogdXNlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidXNlXCJcblxuICBsZXQgdmlldyBlIDogdmlld0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInZpZXdcIlxuXG4gIGxldCB2a2VybiBlIDogZWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidmtlcm5cIlxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG4oKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRTb3VyY2UgKilcbm9wZW4gSnNcbm9wZW4gRG9tXG5vcGVuISBJbXBvcnRcblxudHlwZSBzdGF0ZSA9XG4gIHwgQ09OTkVDVElOR1xuICB8IE9QRU5cbiAgfCBDTE9TRURcblxuY2xhc3MgdHlwZSBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9yaWdpbiA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdEV2ZW50SWQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG4gICgqIG1ldGhvZCBzb3VyY2UgOiB1bml0ICopXG5lbmRcblxuY2xhc3MgdHlwZSBldmVudFNvdXJjZSA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCB1cmwgOiBzdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiBzdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9ub3BlbiA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tZXNzYWdlIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IHdpdGhDcmVkZW50aWFscyBiIDogb3B0aW9ucyB0ID1cbiAgbGV0IGluaXQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgaW5pdCMjLndpdGhDcmVkZW50aWFscyA6PSBKcy5ib29sIGI7XG4gIGluaXRcblxubGV0IGV2ZW50U291cmNlID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9FdmVudFNvdXJjZVxuXG5sZXQgZXZlbnRTb3VyY2Vfb3B0aW9ucyA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRXZlbnRTb3VyY2VcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGNvbnNvbGUgPSBvYmplY3RcbiAgbWV0aG9kIGxvZyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNiA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNyA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ184IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1ZyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm8gOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm4gOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XyA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzEgOiBib29sIHQgLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzIgOiBib29sIHQgLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMyA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzQgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzUgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXIgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXJ4bWwgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFjZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cCA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBFbmQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgdGltZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0aW1lRW5kIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuZXh0ZXJuYWwgZ2V0X2NvbnNvbGUgOiB1bml0IC0+IGNvbnNvbGUgdCA9IFwiY2FtbF9qc19nZXRfY29uc29sZVwiXG5cbmxldCBjb25zb2xlID0gZ2V0X2NvbnNvbGUgKClcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlIHBvc2l0aW9uRXJyb3JDb2RlXG5cbnR5cGUgd2F0Y2hJZFxuXG5jbGFzcyB0eXBlIGNvb3JkaW5hdGVzID0gb2JqZWN0XG4gIG1ldGhvZCBsYXRpdHVkZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9uZ2l0dWRlIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRpdHVkZSA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY3VyYWN5IDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRpdHVkZUFjY3VyYWN5IDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVhZGluZyA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwZWVkIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBjb29yZHMgOiBjb29yZGluYXRlcyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZXN0YW1wIDogSnMuZGF0ZSBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbk9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGVuYWJsZUhpZ2hBY2N1cmFjeSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZW91dCA6IGludCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXhpbXVtQWdlIDogaW50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbkVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBfUEVSTUlTU0lPTl9ERU5JRURfIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9TSVRJT05fVU5BVkFJTEFCTEVfIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVElNRU9VVCA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWVzc2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGdlb2xvY2F0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRDdXJyZW50UG9zaXRpb24gOlxuICAgICAgIChwb3NpdGlvbiBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gKHBvc2l0aW9uRXJyb3IgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IHBvc2l0aW9uT3B0aW9ucyBKcy50XG4gICAgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHdhdGNoUG9zaXRpb24gOlxuICAgICAgIChwb3NpdGlvbiBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gKHBvc2l0aW9uRXJyb3IgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IHBvc2l0aW9uT3B0aW9ucyBKcy50XG4gICAgLT4gd2F0Y2hJZCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsZWFyV2F0Y2ggOiB3YXRjaElkIC0+IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9wb3NpdGlvbl9vcHRpb25zICgpID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBnZW9sb2NhdGlvbiA9XG4gIGxldCB4ID0gSnMuVW5zYWZlLmdsb2JhbCMjLm5hdmlnYXRvciBpblxuICBpZiBKcy5PcHRkZWYudGVzdCB4IHRoZW4geCMjLmdlb2xvY2F0aW9uIGVsc2UgeFxuXG4oKiB1bmRlZmluZWQgKilcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGdlb2xvY2F0aW9uXG4iLCJjbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3VuZGluZ0NsaWVudFJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290Qm91bmRzIDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGludGVyc2VjdGlvblJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnRlcnNlY3Rpb25SYXRpbyA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNJbnRlcnNlY3RpbmcgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCByb290IDogRG9tLm5vZGUgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290TWFyZ2luIDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdGhyZXNob2xkIDogSnMubnVtYmVyX3QgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIHJvb3QgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RNYXJnaW4gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRocmVzaG9sZHMgOiBKcy5udW1iZXJfdCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB1bm9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X2ludGVyc2VjdGlvbl9vYnNlcnZlcl9vcHRpb25zICgpIDogaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zIEpzLnQgPVxuICBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZVxuXG5sZXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgOlxuICAgICggICAoICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyIEpzLnRcbiAgICAgICAgIC0+IHVuaXQpXG4gICAgICAgIEpzLmNhbGxiYWNrXG4gICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyBKcy50XG4gICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE4IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgU2hhcmVkID0gc2lnXG4gIGNsYXNzIHR5cGUgb2JqZWN0X29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgdmFsIG9iamVjdF9vcHRpb25zIDogdW5pdCAtPiBvYmplY3Rfb3B0aW9ucyBKcy50XG5cbiAgY2xhc3MgdHlwZSBfb2JqZWN0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHN1cHBvcnRlZExvY2FsZXNPZiA6XG4gICAgICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAtPiBvYmplY3Rfb3B0aW9ucyBKcy50IEpzLm9wdGRlZlxuICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTaGFyZWQgOiBTaGFyZWQgPSBzdHJ1Y3RcbiAgY2xhc3MgdHlwZSBvYmplY3Rfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb2JqZWN0X29wdGlvbnMgKCkgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIF9vYmplY3QgPSBvYmplY3RcbiAgICBtZXRob2Qgc3VwcG9ydGVkTG9jYWxlc09mIDpcbiAgICAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgIC0+IG9iamVjdF9vcHRpb25zIEpzLnQgSnMub3B0ZGVmXG4gICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIENvbGxhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB1c2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzZW5zaXRpdml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBpZ25vcmVQdW5jdHVhdGlvbiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY29sbGF0aW9uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWVyaWMgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNhc2VGaXJzdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdXNhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2Vuc2l0aXZpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlUHVuY3R1YXRpb24gOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWVyaWMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIGNhc2VGaXJzdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgdXNhZ2UgPSBKcy5zdHJpbmcgXCJzb3J0XCJcblxuICAgICAgdmFsIG11dGFibGUgc2Vuc2l0aXZpdHkgPSBKcy5zdHJpbmcgXCJ2YXJpYW50XCJcblxuICAgICAgdmFsIG11dGFibGUgaWdub3JlUHVuY3R1YXRpb24gPSBKcy5fZmFsc2VcblxuICAgICAgdmFsIG11dGFibGUgbnVtZXJpYyA9IEpzLl9mYWxzZVxuXG4gICAgICB2YWwgbXV0YWJsZSBjYXNlRmlyc3QgPSBKcy5zdHJpbmcgXCJmYWxzZVwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGNvbXBhcmUgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgLT4gaW50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRGF0ZVRpbWVGb3JtYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNhbGVuZGFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBob3VyMTIgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHdlZWtkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGVyYSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgeWVhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbW9udGggOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGRheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgaG91ciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWludXRlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBzZWNvbmQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBkYXRlU3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVTdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY2FsZW5kYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGRheVBlcmlvZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyMTIgOiBib29sIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyQ3ljbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdE1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgd2Vla2RheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZXJhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB5ZWFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtb250aCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW51dGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNlY29uZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZnJhY3Rpb25hbFNlY29uZERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGRhdGVTdHlsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lU3R5bGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY2FsZW5kYXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZGF5UGVyaW9kID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWJlcmluZ1N5c3RlbSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lWm9uZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyMTIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91ckN5Y2xlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGZvcm1hdE1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHdlZWtkYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZXJhID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHllYXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbW9udGggPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWludXRlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNlY29uZCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVab25lTmFtZSA9IEpzLnVuZGVmaW5lZFxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgZm9ybWF0X3BhcnQgPSBvYmplY3RcbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3ZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgZm9ybWF0IDogKEpzLmRhdGUgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdFRvUGFydHMgOlxuICAgICAgSnMuZGF0ZSBKcy50IEpzLm9wdGRlZiAtPiBmb3JtYXRfcGFydCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIE51bWJlckZvcm1hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeURpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHVzZUdyb3VwaW5nIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgY29tcGFjdERpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeURpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5U2lnbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBub3RhdGlvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzaWduRGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdW5pdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdW5pdERpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVzZUdyb3VwaW5nIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ01vZGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nUHJpb3JpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nSW5jcmVtZW50IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0cmFpbGluZ1plcm9EaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBjb21wYWN0RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeURpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3lTaWduID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIG5vdGF0aW9uID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWJlcmluZ1N5c3RlbSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzaWduRGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzdHlsZSA9IEpzLnN0cmluZyBcImRlY2ltYWxcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB1bml0ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVuaXREaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVzZUdyb3VwaW5nID0gSnMuX3RydWVcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdNb2RlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nUHJpb3JpdHkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdJbmNyZW1lbnQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdHJhaWxpbmdaZXJvRGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtSW50ZWdlckRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBKcy51bmRlZmluZWRcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIGZvcm1hdF9wYXJ0ID0gb2JqZWN0XG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF92YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGZvcm1hdCA6IChKcy5udW1iZXIgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdFRvUGFydHMgOlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMub3B0ZGVmIC0+IGZvcm1hdF9wYXJ0IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGx1cmFsUnVsZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHBsdXJhbENhdGVnb3JpZXMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgX3R5cGUgPSBKcy5zdHJpbmcgXCJjYXJkaW5hbFwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHNlbGVjdCA6IEpzLm51bWJlciBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50bCA9IG9iamVjdFxuICBtZXRob2QgX0NvbGxhdG9yIDogQ29sbGF0b3IuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RhdGVUaW1lRm9ybWF0IDogRGF0ZVRpbWVGb3JtYXQuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX051bWJlckZvcm1hdCA6IE51bWJlckZvcm1hdC5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUGx1cmFsUnVsZXMgOiBQbHVyYWxSdWxlcy5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRDYW5vbmljYWxMb2NhbGVzIDpcbiAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBpbnRsID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsXG5cbmxldCBjb2xsYXRvcl9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fQ29sbGF0b3JcblxubGV0IGRhdGVUaW1lRm9ybWF0X2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9EYXRlVGltZUZvcm1hdFxuXG5sZXQgbnVtYmVyRm9ybWF0X2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9OdW1iZXJGb3JtYXRcblxubGV0IHBsdXJhbFJ1bGVzX2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9QbHVyYWxSdWxlc1xuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgaW50bFxuIiwiXG50eXBlIHQgPSBpbnRcbmxldCBlcXVhbCAoeCA6IGludCkgKHkgOiBpbnQpID0geCA9IHlcbmxldCBjb21wYXJlICh4IDogaW50KSAoeSA6IGludCkgPSBjb21wYXJlIHggeVxubGV0IHRvX2ludCB4ID0geFxubGV0IHBwID0gRm9ybWF0LnBwX3ByaW50X2ludFxuXG5sZXQgaW50ZXJzZWN0IHggeSA9IHggbGFuZCB5IDw+IDBcbmxldCAoKyspIHggeSA9IHggbG9yIHlcblxubGV0IGR1bW15ID0gLTFcbmxldCBpbmV4aXN0YW50ID0gMVxubGV0IGxldHRlciA9IDJcbmxldCBub3RfbGV0dGVyID0gNFxubGV0IG5ld2xpbmUgPSA4XG5sZXQgbGFzdG5ld2xpbmUgPSAxNlxubGV0IHNlYXJjaF9ib3VuZGFyeSA9IDMyXG5cbmxldCBmcm9tX2NoYXIgPSBmdW5jdGlvblxuICAoKiBTaG91bGQgbWF0Y2ggW2N3b3JkXSBkZWZpbml0aW9uICopXG4gIHwgJ2EnLi4neicgfCAnQScuLidaJyB8ICcwJy4uJzknIHwgJ18nIHwgJ1xcMTcwJyB8ICdcXDE4MScgfCAnXFwxODYnXG4gIHwgJ1xcMTkyJy4uJ1xcMjE0JyB8ICdcXDIxNicuLidcXDI0NicgfCAnXFwyNDgnLi4nXFwyNTUnIC0+XG4gICAgbGV0dGVyXG4gIHwgJ1xcbicgLT5cbiAgICBub3RfbGV0dGVyICsrIG5ld2xpbmVcbiAgfCBfIC0+XG4gICAgbm90X2xldHRlclxuIiwiKCoqIFZlcnkgc21hbGwgdG9vbGluZyBmb3IgZm9ybWF0IHByaW50ZXJzLiAqKVxuXG5pbmNsdWRlIEZvcm1hdFxuXG50eXBlICdhIHQgPSBGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXRcblxubGV0IGxpc3QgPSBwcF9wcmludF9saXN0XG5sZXQgc3RyID0gcHBfcHJpbnRfc3RyaW5nXG5sZXQgc2V4cCBmbXQgcyBwcCB4ID0gZnByaW50ZiBmbXQgXCJAWzwzPiglc0AgJWEpQF1cIiBzIHBwIHhcbmxldCBwYWlyIHBwMSBwcDIgZm10ICh2MSx2MikgPVxuICBwcDEgZm10IHYxOyBwcF9wcmludF9zcGFjZSBmbXQgKCkgOyBwcDIgZm10IHYyXG5sZXQgdHJpcGxlIHBwMSBwcDIgcHAzIGZtdCAodjEsIHYyLCB2MykgPVxuICBwcDEgZm10IHYxOyBwcF9wcmludF9zcGFjZSBmbXQgKCkgO1xuICBwcDIgZm10IHYyOyBwcF9wcmludF9zcGFjZSBmbXQgKCkgO1xuICBwcDMgZm10IHYzXG5sZXQgaW50ID0gcHBfcHJpbnRfaW50XG5sZXQgb3B0aW50IGZtdCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgaSAtPiBmcHJpbnRmIGZtdCBcIkAgJWRcIiBpXG5cbmxldCBxdW90ZSBmbXQgcyA9IEZvcm1hdC5mcHJpbnRmIGZtdCBcIlxcXCIlc1xcXCJcIiBzXG5cbmxldCBwcF9vbGlzdCBwcF9lbGVtIGZtdCA9XG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDM+W0AgJWFAIF1AXVwiXG4gICAgKHBwX3ByaW50X2xpc3RcbiAgICAgICB+cHBfc2VwOihmdW4gZm10ICgpIC0+IGZwcmludGYgZm10IFwiO0AgXCIpXG4gICAgICAgcHBfZWxlbSlcblxubGV0IHBwX3N0cl9saXN0ID0gcHBfb2xpc3QgcXVvdGVcblxubGV0IHRvX3RvX3N0cmluZyBwcCB4ID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDE2IGluXG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIHBwIGZtdCB4O1xuICBCdWZmZXIuY29udGVudHMgYlxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxudHlwZSBjID0gaW50XG50eXBlIHQgPSAoYyAqIGMpIGxpc3RcblxubGV0IHJlYyB1bmlvbiBsIGwnID1cbiAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIF8sIFtdIC0+IGxcbiAgfCBbXSwgXyAtPiBsJ1xuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyICsgMSA8IGMxJyB0aGVuXG4gICAgICAoYzEsIGMyKTo6dW5pb24gciBsJ1xuICAgIGVsc2UgaWYgYzInICsgMSA8IGMxIHRoZW5cbiAgICAgIChjMScsIGMyJyk6OnVuaW9uIGwgcidcbiAgICBlbHNlIGlmIGMyIDwgYzInIHRoZW5cbiAgICAgIHVuaW9uIHIgKChtaW4gYzEgYzEnLCBjMicpOjpyJylcbiAgICBlbHNlXG4gICAgICB1bmlvbiAoKG1pbiBjMSBjMScsIGMyKTo6cikgcidcblxubGV0IHJlYyBpbnRlciBsIGwnID1cbiAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIF8sIFtdIC0+IFtdXG4gIHwgW10sIF8gLT4gW11cbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiA8IGMxJyB0aGVuXG4gICAgICBpbnRlciByIGwnXG4gICAgZWxzZSBpZiBjMicgPCBjMSB0aGVuXG4gICAgICBpbnRlciBsIHInXG4gICAgZWxzZSBpZiBjMiA8IGMyJyB0aGVuXG4gICAgICAobWF4IGMxIGMxJywgYzIpOjppbnRlciByIGwnXG4gICAgZWxzZVxuICAgICAgKG1heCBjMSBjMScsIGMyJyk6OmludGVyIGwgcidcblxubGV0IHJlYyBkaWZmIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gbFxuICB8IFtdLCBfIC0+IFtdXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgPCBjMScgdGhlblxuICAgICAgKGMxLCBjMik6OmRpZmYgciBsJ1xuICAgIGVsc2UgaWYgYzInIDwgYzEgdGhlblxuICAgICAgZGlmZiBsIHInXG4gICAgZWxzZVxuICAgICAgbGV0IHInJyA9IGlmIGMyJyA8IGMyIHRoZW4gKGMyJyArIDEsIGMyKSA6OiByIGVsc2UgciBpblxuICAgICAgaWYgYzEgPCBjMScgdGhlblxuICAgICAgICAoYzEsIGMxJyAtIDEpOjpkaWZmIHInJyByJ1xuICAgICAgZWxzZVxuICAgICAgICBkaWZmIHInJyByJ1xuXG5sZXQgc2luZ2xlIGMgPSBbYywgY11cblxubGV0IGFkZCBjIGwgPSB1bmlvbiAoc2luZ2xlIGMpIGxcblxubGV0IHNlcSBjIGMnID0gaWYgYyA8PSBjJyB0aGVuIFtjLCBjJ10gZWxzZSBbYycsIGNdXG5cbmxldCByZWMgb2Zmc2V0IG8gbCA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAgICAgICAgLT4gW11cbiAgfCAoYzEsIGMyKSA6OiByIC0+IChjMSArIG8sIGMyICsgbykgOjogb2Zmc2V0IG8gclxuXG5sZXQgZW1wdHkgPSBbXVxuXG5sZXQgcmVjIG1lbSAoYyA6IGludCkgcyA9XG4gIG1hdGNoIHMgd2l0aFxuICAgIFtdICAgICAgICAgICAgICAtPiBmYWxzZVxuICB8IChjMSwgYzIpIDo6IHJlbSAtPiBpZiBjIDw9IGMyIHRoZW4gYyA+PSBjMSBlbHNlIG1lbSBjIHJlbVxuXG4oKioqKilcblxudHlwZSBoYXNoID0gaW50XG5cbmxldCByZWMgaGFzaF9yZWMgPSBmdW5jdGlvblxuICB8IFtdICAgICAgICAtPiAwXG4gIHwgKGksIGopOjpyIC0+IGkgKyAxMyAqIGogKyAyNTcgKiBoYXNoX3JlYyByXG5sZXQgaGFzaCBsID0gKGhhc2hfcmVjIGwpIGxhbmQgMHgzRkZGRkZGRlxuXG4oKioqKilcblxubGV0IHByaW50X29uZSBjaCAoYzEsIGMyKSA9XG4gIGlmIGMxID0gYzIgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiJWRcIiBjMVxuICBlbHNlXG4gICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZC0lZFwiIGMxIGMyXG5cbmxldCBwcCA9IEZtdC5saXN0IHByaW50X29uZVxuXG5sZXQgcmVjIGl0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgKHgsIHkpOjp4cyAtPlxuICAgIGYgeCB5O1xuICAgIGl0ZXIgeHMgIH5mXG5cbmxldCBvbmVfY2hhciA9IGZ1bmN0aW9uXG4gIHwgW2ksIGpdIHdoZW4gaSA9IGogLT4gU29tZSBpXG4gIHwgXyAtPiBOb25lXG5cblxubW9kdWxlIENTZXRNYXAgPSBNYXAuTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gaW50ICogKGludCAqIGludCkgbGlzdFxuICAgIGxldCBjb21wYXJlIChpLCB1KSAoaiwgdikgPVxuICAgICAgbGV0IGMgPSBjb21wYXJlIGkgaiBpblxuICAgICAgaWYgYyA8PiAwXG4gICAgICB0aGVuIGNcbiAgICAgIGVsc2UgY29tcGFyZSB1IHZcbiAgZW5kKVxuXG5sZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gTGlzdC5mb2xkX3JpZ2h0IGYgdCBpbml0XG5cbmxldCBjc2luZ2xlIGMgPSBzaW5nbGUgKENoYXIuY29kZSBjKVxuXG5sZXQgY2FueSA9IFswLCAyNTVdXG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHJlYyBwcmVwZW5kIHMgeCBsID1cbiAgbWF0Y2ggcywgbCB3aXRoXG4gIHwgW10sIF8gLT4gbFxuICB8IF9yLCBbXSAtPiBbXVxuICB8IChfYywgYycpIDo6IHIsIChbZCwgX2QnXSwgX3gnKSA6OiBfcicgd2hlbiBjJyA8IGQgLT4gcHJlcGVuZCByIHggbFxuICB8IChjLCBjJykgOjogciwgKFtkLCBkJ10sIHgnKSA6OiByJyAtPlxuICAgIGlmIGMgPD0gZCB0aGVuIGJlZ2luXG4gICAgICBpZiBjJyA8IGQnXG4gICAgICB0aGVuIChbZCwgYyddLCB4IEAgeCcpIDo6IHByZXBlbmQgciB4ICgoW2MnICsgMSwgZCddLCB4JykgOjogcicpXG4gICAgICBlbHNlIChbZCwgZCddLCB4IEAgeCcpIDo6IHByZXBlbmQgcyB4IHInXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGMgPiBkJ1xuICAgICAgdGhlbiAoW2QsIGQnXSwgeCcpIDo6IHByZXBlbmQgcyB4IHInXG4gICAgICBlbHNlIChbZCwgYyAtIDFdLCB4JykgOjogcHJlcGVuZCBzIHggKChbYywgZCddLCB4JykgOjogcicpXG4gICAgZW5kXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHBpY2sgPSBmdW5jdGlvblxuICB8IFtdIC0+IGludmFsaWRfYXJnIFwiUmVfY3NldC5waWNrXCJcbiAgfCAoeCwgXyk6Ol8gLT4geFxuIiwiXG5tb2R1bGUgUG1hcmsgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG4gIGxldCBlcXVhbCAoeCA6IGludCkgKHkgOiBpbnQpID0geCA9IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBpbnQpICh5IDogaW50KSA9IGNvbXBhcmUgeCB5XG4gIGxldCByID0gcmVmIDBcbiAgbGV0IGdlbiAoKSA9IGluY3IgciA7ICFyXG5cbiAgbGV0IHBwID0gRm9ybWF0LnBwX3ByaW50X2ludFxuZW5kXG5cbmluY2x1ZGUgUG1hcmtcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZShQbWFyaylcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbnR5cGUgc2VtID0gWyBgTG9uZ2VzdCB8IGBTaG9ydGVzdCB8IGBGaXJzdCBdXG5cbnR5cGUgcmVwX2tpbmQgPSBbIGBHcmVlZHkgfCBgTm9uX2dyZWVkeSBdXG5cbnR5cGUgbWFyayA9IGludFxudHlwZSBpZHggPSBpbnRcblxudHlwZSBleHByID0geyBpZCA6IGludDsgZGVmIDogZGVmIH1cblxuYW5kIGRlZiA9XG4gICAgQ3N0IG9mIENzZXQudFxuICB8IEFsdCBvZiBleHByIGxpc3RcbiAgfCBTZXEgb2Ygc2VtICogZXhwciAqIGV4cHJcbiAgfCBFcHNcbiAgfCBSZXAgb2YgcmVwX2tpbmQgKiBzZW0gKiBleHByXG4gIHwgTWFyayBvZiBpbnRcbiAgfCBFcmFzZSBvZiBpbnQgKiBpbnRcbiAgfCBCZWZvcmUgb2YgQ2F0ZWdvcnkudFxuICB8IEFmdGVyIG9mIENhdGVnb3J5LnRcbiAgfCBQbWFyayBvZiBQbWFyay50XG5cbmxldCBoYXNoX2NvbWJpbmUgaCBhY2N1ID0gYWNjdSAqIDY1NTk5ICsgaFxuXG5tb2R1bGUgTWFya3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG1hcmtzIDogKGludCAqIGludCkgbGlzdFxuICAgIDsgcG1hcmtzIDogUG1hcmsuU2V0LnQgfVxuXG4gIGxldCBlbXB0eSA9IHsgbWFya3MgPSBbXSA7IHBtYXJrcyA9IFBtYXJrLlNldC5lbXB0eSB9XG5cbiAgbGV0IHJlYyBtZXJnZV9tYXJrc19vZmZzZXQgb2xkID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBvbGRcbiAgICB8IChpLCB2KSA6OiByZW0gLT5cbiAgICAgIGxldCBudycgPSBtZXJnZV9tYXJrc19vZmZzZXQgKExpc3QucmVtb3ZlX2Fzc3EgaSBvbGQpIHJlbSBpblxuICAgICAgaWYgdiA9IC0yIHRoZW5cbiAgICAgICAgbncnXG4gICAgICBlbHNlXG4gICAgICAgIChpLCB2KSA6OiBudydcblxuICBsZXQgbWVyZ2Ugb2xkIG53ID1cbiAgICB7IG1hcmtzID0gbWVyZ2VfbWFya3Nfb2Zmc2V0IG9sZC5tYXJrcyBudy5tYXJrc1xuICAgIDsgcG1hcmtzID0gUG1hcmsuU2V0LnVuaW9uIG9sZC5wbWFya3MgbncucG1hcmtzIH1cblxuICBsZXQgcmVjIGhhc2hfbWFya3Nfb2Zmc2V0IGwgYWNjdSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAgICAgICAgICAtPiBhY2N1XG4gICAgfCAoYSwgaSkgOjogciAtPiBoYXNoX21hcmtzX29mZnNldCByIChoYXNoX2NvbWJpbmUgYSAoaGFzaF9jb21iaW5lIGkgYWNjdSkpXG5cbiAgbGV0IGhhc2ggbSBhY2N1ID1cbiAgICBoYXNoX21hcmtzX29mZnNldCBtLm1hcmtzIChoYXNoX2NvbWJpbmUgKEhhc2h0YmwuaGFzaCBtLnBtYXJrcykgYWNjdSlcblxuICBsZXQgcmVjIG1hcmtzX3NldF9pZHggaWR4ID0gZnVuY3Rpb25cbiAgICB8IChhLCAtMSkgOjogcmVtIC0+XG4gICAgICAoYSwgaWR4KSA6OiBtYXJrc19zZXRfaWR4IGlkeCByZW1cbiAgICB8IG1hcmtzIC0+XG4gICAgICBtYXJrc1xuXG4gIGxldCBtYXJrc19zZXRfaWR4IG1hcmtzIGlkeCA9XG4gICAgeyBtYXJrcyB3aXRoIG1hcmtzID0gbWFya3Nfc2V0X2lkeCBpZHggbWFya3MubWFya3MgfVxuXG4gIGxldCBwcF9tYXJrcyBjaCB0ID1cbiAgICBtYXRjaCB0Lm1hcmtzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICAoKVxuICAgIHwgKGEsIGkpIDo6IHIgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiJWQtJWRcIiBhIGk7XG4gICAgICBMaXN0Lml0ZXIgKGZ1biAoYSwgaSkgLT4gRm9ybWF0LmZwcmludGYgY2ggXCIgJWQtJWRcIiBhIGkpIHJcbmVuZFxuXG4oKioqKilcblxubGV0IHBwX3NlbSBjaCBrID1cbiAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBjaFxuICAgIChtYXRjaCBrIHdpdGhcbiAgICAgICBgU2hvcnRlc3QgLT4gXCJzaG9ydFwiXG4gICAgIHwgYExvbmdlc3QgIC0+IFwibG9uZ1wiXG4gICAgIHwgYEZpcnN0ICAgIC0+IFwiZmlyc3RcIilcblxuXG5sZXQgcHBfcmVwX2tpbmQgZm10ID0gZnVuY3Rpb25cbiAgfCBgR3JlZWR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiR3JlZWR5XCJcbiAgfCBgTm9uX2dyZWVkeSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5vbl9ncmVlZHlcIlxuXG5sZXQgcmVjIHBwIGNoIGUgPVxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbWF0Y2ggZS5kZWYgd2l0aFxuICAgIENzdCBsIC0+XG4gICAgc2V4cCBjaCBcImNzdFwiIENzZXQucHAgbDtcbiAgfCBBbHQgbCAtPlxuICAgIHNleHAgY2ggXCJhbHRcIiAobGlzdCBwcCkgbFxuICB8IFNlcSAoaywgZSwgZScpIC0+XG4gICAgc2V4cCBjaCBcInNlcVwiICh0cmlwbGUgcHBfc2VtIHBwIHBwKSAoaywgZSwgZScpXG4gIHwgRXBzIC0+XG4gICAgc3RyIGNoIFwiZXBzXCJcbiAgfCBSZXAgKF9yaywgaywgZSkgLT5cbiAgICBzZXhwIGNoIFwicmVwXCIgKHBhaXIgcHBfc2VtIHBwKSAoaywgZSlcbiAgfCBNYXJrIGkgLT5cbiAgICBzZXhwIGNoIFwibWFya1wiIGludCBpXG4gIHwgUG1hcmsgaSAtPlxuICAgIHNleHAgY2ggXCJwbWFya1wiIGludCAoaSA6PiBpbnQpXG4gIHwgRXJhc2UgKGIsIGUpIC0+XG4gICAgc2V4cCBjaCBcImVyYXNlXCIgKHBhaXIgaW50IGludCkgKGIsIGUpXG4gIHwgQmVmb3JlIGMgLT5cbiAgICBzZXhwIGNoIFwiYmVmb3JlXCIgQ2F0ZWdvcnkucHAgY1xuICB8IEFmdGVyIGMgLT5cbiAgICBzZXhwIGNoIFwiYWZ0ZXJcIiBDYXRlZ29yeS5wcCBjXG5cblxuKCoqKiopXG5cbmxldCByZWMgZmlyc3QgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBOb25lXG4gIHwgeCA6OiByIC0+XG4gICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIE5vbmUgICAgICAgICAgLT4gZmlyc3QgZiByXG4gICAgfCBTb21lIF8gYXMgcmVzIC0+IHJlc1xuXG4oKioqKilcblxudHlwZSBpZHMgPSBpbnQgcmVmXG5sZXQgY3JlYXRlX2lkcyAoKSA9IHJlZiAwXG5cbmxldCBlcHNfZXhwciA9IHsgaWQgPSAwOyBkZWYgPSBFcHMgfVxuXG5sZXQgbWtfZXhwciBpZHMgZGVmID1cbiAgaW5jciBpZHM7XG4gIHsgaWQgPSAhaWRzOyBkZWYgPSBkZWYgfVxuXG5sZXQgZW1wdHkgaWRzID0gbWtfZXhwciBpZHMgKEFsdCBbXSlcblxubGV0IGNzdCBpZHMgcyA9XG4gIGlmIENzZXQuaXNfZW1wdHkgc1xuICB0aGVuIGVtcHR5IGlkc1xuICBlbHNlIG1rX2V4cHIgaWRzIChDc3QgcylcblxubGV0IGFsdCBpZHMgPSBmdW5jdGlvblxuICB8IFtdICAtPiBlbXB0eSBpZHNcbiAgfCBbY10gLT4gY1xuICB8IGwgICAtPiBta19leHByIGlkcyAoQWx0IGwpXG5cbmxldCBzZXEgaWRzIGtpbmQgeCB5ID1cbiAgbWF0Y2ggeC5kZWYsIHkuZGVmIHdpdGhcbiAgICBBbHQgW10sIF8gICAgICAgICAgICAgICAgIC0+IHhcbiAgfCBfLCBBbHQgW10gICAgICAgICAgICAgICAgIC0+IHlcbiAgfCBFcHMsIF8gICAgICAgICAgICAgICAgICAgIC0+IHlcbiAgfCBfLCBFcHMgd2hlbiBraW5kID0gYEZpcnN0IC0+IHhcbiAgfCBfICAgICAgICAgICAgICAgICAgICAgICAgIC0+IG1rX2V4cHIgaWRzIChTZXEgKGtpbmQsIHgsIHkpKVxuXG5sZXQgaXNfZXBzIGV4cHIgPVxuICBtYXRjaCBleHByLmRlZiB3aXRoXG4gIHwgRXBzIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCBlcHMgaWRzID0gbWtfZXhwciBpZHMgRXBzXG5cbmxldCByZXAgaWRzIGtpbmQgc2VtIHggPSBta19leHByIGlkcyAoUmVwIChraW5kLCBzZW0sIHgpKVxuXG5sZXQgbWFyayBpZHMgbSA9IG1rX2V4cHIgaWRzIChNYXJrIG0pXG5cbmxldCBwbWFyayBpZHMgaSA9IG1rX2V4cHIgaWRzIChQbWFyayBpKVxuXG5sZXQgZXJhc2UgaWRzIG0gbScgPSBta19leHByIGlkcyAoRXJhc2UgKG0sIG0nKSlcblxubGV0IGJlZm9yZSBpZHMgYyA9IG1rX2V4cHIgaWRzIChCZWZvcmUgYylcblxubGV0IGFmdGVyIGlkcyBjID0gbWtfZXhwciBpZHMgKEFmdGVyIGMpXG5cbigqKioqKVxuXG5sZXQgcmVjIHJlbmFtZSBpZHMgeCA9XG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgICBDc3QgXyB8IEVwcyB8IE1hcmsgXyB8IFBtYXJrIF8gfCBFcmFzZSBfIHwgQmVmb3JlIF8gfCBBZnRlciBfIC0+XG4gICAgbWtfZXhwciBpZHMgeC5kZWZcbiAgfCBBbHQgbCAtPlxuICAgIG1rX2V4cHIgaWRzIChBbHQgKExpc3QubWFwIChyZW5hbWUgaWRzKSBsKSlcbiAgfCBTZXEgKGssIHksIHopIC0+XG4gICAgbWtfZXhwciBpZHMgKFNlcSAoaywgcmVuYW1lIGlkcyB5LCByZW5hbWUgaWRzIHopKVxuICB8IFJlcCAoZywgaywgeSkgLT5cbiAgICBta19leHByIGlkcyAoUmVwIChnLCBrLCByZW5hbWUgaWRzIHkpKVxuXG4oKioqKilcblxudHlwZSBoYXNoID0gaW50XG50eXBlIG1hcmtfaW5mb3MgPSBpbnQgYXJyYXlcbnR5cGUgc3RhdHVzID0gRmFpbGVkIHwgTWF0Y2ggb2YgbWFya19pbmZvcyAqIFBtYXJrLlNldC50IHwgUnVubmluZ1xuXG5tb2R1bGUgRSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVFNlcSBvZiB0IGxpc3QgKiBleHByICogc2VtXG4gICAgfCBURXhwIG9mIE1hcmtzLnQgKiBleHByXG4gICAgfCBUTWF0Y2ggb2YgTWFya3MudFxuXG4gIGxldCByZWMgZXF1YWwgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgW10gLT5cbiAgICAgIHRydWVcbiAgICB8IFRTZXEgKGwxJywgZTEsIF8pIDo6IHIxLCBUU2VxIChsMicsIGUyLCBfKSA6OiByMiAtPlxuICAgICAgZTEuaWQgPSBlMi5pZCAmJiBlcXVhbCBsMScgbDInICYmIGVxdWFsIHIxIHIyXG4gICAgfCBURXhwIChtYXJrczEsIGUxKSA6OiByMSwgVEV4cCAobWFya3MyLCBlMikgOjogcjIgLT5cbiAgICAgIGUxLmlkID0gZTIuaWQgJiYgbWFya3MxID0gbWFya3MyICYmIGVxdWFsIHIxIHIyXG4gICAgfCBUTWF0Y2ggbWFya3MxIDo6IHIxLCBUTWF0Y2ggbWFya3MyIDo6IHIyIC0+XG4gICAgICBtYXJrczEgPSBtYXJrczIgJiYgZXF1YWwgcjEgcjJcbiAgICB8IF8gLT5cbiAgICAgIGZhbHNlXG5cbiAgbGV0IHJlYyBoYXNoIGwgYWNjdSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgYWNjdVxuICAgIHwgVFNlcSAobCcsIGUsIF8pIDo6IHIgLT5cbiAgICAgIGhhc2ggciAoaGFzaF9jb21iaW5lIDB4MTcyYTFiY2UgKGhhc2hfY29tYmluZSBlLmlkIChoYXNoIGwnIGFjY3UpKSlcbiAgICB8IFRFeHAgKG1hcmtzLCBlKSA6OiByIC0+XG4gICAgICBoYXNoIHJcbiAgICAgICAgKGhhc2hfY29tYmluZSAweDJiNGMwZDc3IChoYXNoX2NvbWJpbmUgZS5pZCAoTWFya3MuaGFzaCBtYXJrcyBhY2N1KSkpXG4gICAgfCBUTWF0Y2ggbWFya3MgOjogciAtPlxuICAgICAgaGFzaCByIChoYXNoX2NvbWJpbmUgMHgxYzIwNWFkNSAoTWFya3MuaGFzaCBtYXJrcyBhY2N1KSlcblxuICBsZXQgdGV4cCBtYXJrcyB4ID0gVEV4cCAobWFya3MsIHgpXG5cbiAgbGV0IHRzZXEga2luZCB4IHkgcmVtID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gcmVtXG4gICAgfCBbVEV4cCAobWFya3MsIHtkZWYgPSBFcHMgOyBffSldIC0+IFRFeHAgKG1hcmtzLCB5KSA6OiByZW1cbiAgICB8IF8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gVFNlcSAoeCwgeSwga2luZCkgOjogcmVtXG5cbiAgbGV0IHJlYyBwcmludF9zdGF0ZV9yZWMgY2ggZSB5ID1cbiAgICBtYXRjaCBlIHdpdGhcbiAgICB8IFRNYXRjaCBtYXJrcyAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihNYXRjaEAgJWEpQF1cIiBNYXJrcy5wcF9tYXJrcyBtYXJrc1xuICAgIHwgVFNlcSAobCcsIHgsIF9raW5kKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihTZXFAIFwiO1xuICAgICAgcHJpbnRfc3RhdGVfbHN0IGNoIGwnIHg7XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkAgJWEpQF1cIiBwcCB4XG4gICAgfCBURXhwIChtYXJrcywge2RlZiA9IEVwczsgX30pIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KEV4cEAgJWRAICglYSlAIChlcHMpKUBdXCIgeS5pZCBNYXJrcy5wcF9tYXJrcyBtYXJrc1xuICAgIHwgVEV4cCAobWFya3MsIHgpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KEV4cEAgJWRAICglYSlAICVhKUBdXCIgeC5pZCBNYXJrcy5wcF9tYXJrcyBtYXJrcyBwcCB4XG5cbiAgYW5kIHByaW50X3N0YXRlX2xzdCBjaCBsIHkgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgW10gLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiKClcIlxuICAgIHwgZSA6OiByZW0gLT5cbiAgICAgIHByaW50X3N0YXRlX3JlYyBjaCBlIHk7XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biBlIC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQCB8IFwiO1xuICAgICAgICAgICBwcmludF9zdGF0ZV9yZWMgY2ggZSB5KVxuICAgICAgICByZW1cblxuICBsZXQgcHAgY2ggdCA9IHByaW50X3N0YXRlX2xzdCBjaCBbdF0geyBpZCA9IDA7IGRlZiA9IEVwcyB9XG5lbmRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBpZHg6IGlkeFxuICAgIDsgY2F0ZWdvcnk6IENhdGVnb3J5LnRcbiAgICA7IGRlc2M6IEUudCBsaXN0XG4gICAgOyBtdXRhYmxlIHN0YXR1czogc3RhdHVzIG9wdGlvblxuICAgIDsgaGFzaDogaGFzaCB9XG5cbiAgbGV0IGR1bW15ID1cbiAgICB7IGlkeCA9IC0xXG4gICAgOyBjYXRlZ29yeSA9IENhdGVnb3J5LmR1bW15XG4gICAgOyBkZXNjID0gW11cbiAgICA7IHN0YXR1cyA9IE5vbmVcbiAgICA7IGhhc2ggPSAtMSB9XG5cbiAgbGV0IGhhc2ggaWR4IGNhdCBkZXNjID1cbiAgICBFLmhhc2ggZGVzYyAoaGFzaF9jb21iaW5lIGlkeCAoaGFzaF9jb21iaW5lIChDYXRlZ29yeS50b19pbnQgY2F0KSAwKSkgbGFuZCAweDNGRkZGRkZGXG5cbiAgbGV0IG1rIGlkeCBjYXQgZGVzYyA9XG4gICAgeyBpZHhcbiAgICA7IGNhdGVnb3J5ID0gY2F0XG4gICAgOyBkZXNjXG4gICAgOyBzdGF0dXMgPSBOb25lXG4gICAgOyBoYXNoID0gaGFzaCBpZHggY2F0IGRlc2N9XG5cbiAgbGV0IGNyZWF0ZSBjYXQgZSA9IG1rIDAgY2F0IFtFLlRFeHAgKE1hcmtzLmVtcHR5LCBlKV1cblxuICBsZXQgZXF1YWwgeCB5ID1cbiAgICAoeC5oYXNoIDogaW50KSA9IHkuaGFzaCAmJiAoeC5pZHggOiBpbnQpID0geS5pZHggJiZcbiAgICBDYXRlZ29yeS5lcXVhbCB4LmNhdGVnb3J5IHkuY2F0ZWdvcnkgJiYgRS5lcXVhbCB4LmRlc2MgeS5kZXNjXG5cbiAgbGV0IGNvbXBhcmUgeCB5ID1cbiAgICBsZXQgYyA9IGNvbXBhcmUgKHguaGFzaCA6IGludCkgeS5oYXNoIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICBsZXQgYyA9IENhdGVnb3J5LmNvbXBhcmUgeC5jYXRlZ29yeSB5LmNhdGVnb3J5IGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgY29tcGFyZSB4LmRlc2MgeS5kZXNjXG5cbiAgdHlwZSB0JyA9IHRcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdCdcbiAgICAgIGxldCBlcXVhbCA9IGVxdWFsXG4gICAgICBsZXQgaGFzaCB0ID0gdC5oYXNoXG4gICAgZW5kKVxuZW5kXG5cbigqKioqIEZpbmQgYSBmcmVlIGluZGV4ICoqKiopXG5cbnR5cGUgd29ya2luZ19hcmVhID0gYm9vbCBhcnJheSByZWZcblxubGV0IGNyZWF0ZV93b3JraW5nX2FyZWEgKCkgPSByZWYgW3wgZmFsc2UgfF1cblxubGV0IGluZGV4X2NvdW50IHcgPSBBcnJheS5sZW5ndGggIXdcblxubGV0IHJlc2V0X3RhYmxlIGEgPSBBcnJheS5maWxsIGEgMCAoQXJyYXkubGVuZ3RoIGEpIGZhbHNlXG5cbmxldCByZWMgbWFya191c2VkX2luZGljZXMgdGJsID1cbiAgTGlzdC5pdGVyIChmdW5jdGlvblxuICAgICAgfCBFLlRTZXEgKGwsIF8sIF8pIC0+IG1hcmtfdXNlZF9pbmRpY2VzIHRibCBsXG4gICAgICB8IEUuVEV4cCAobWFya3MsIF8pXG4gICAgICB8IEUuVE1hdGNoIG1hcmtzIC0+XG4gICAgICAgIExpc3QuaXRlciAoZnVuIChfLCBpKSAtPiBpZiBpID49IDAgdGhlbiB0YmwuKGkpIDwtIHRydWUpXG4gICAgICAgICAgbWFya3MuTWFya3MubWFya3MpXG5cbmxldCByZWMgZmluZF9mcmVlIHRibCBpZHggbGVuID1cbiAgaWYgaWR4ID0gbGVuIHx8IG5vdCB0YmwuKGlkeCkgdGhlbiBpZHggZWxzZSBmaW5kX2ZyZWUgdGJsIChpZHggKyAxKSBsZW5cblxubGV0IGZyZWVfaW5kZXggdGJsX3JlZiBsID1cbiAgbGV0IHRibCA9ICF0YmxfcmVmIGluXG4gIHJlc2V0X3RhYmxlIHRibDtcbiAgbWFya191c2VkX2luZGljZXMgdGJsIGw7XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdGJsIGluXG4gIGxldCBpZHggPSBmaW5kX2ZyZWUgdGJsIDAgbGVuIGluXG4gIGlmIGlkeCA9IGxlbiB0aGVuIHRibF9yZWYgOj0gQXJyYXkubWFrZSAoMiAqIGxlbikgZmFsc2U7XG4gIGlkeFxuXG4oKioqKiBDb21wdXRhdGlvbiBvZiB0aGUgbmV4dCBzdGF0ZSAqKioqKVxuXG5sZXQgcmVtb3ZlX21hdGNoZXMgPSBMaXN0LmZpbHRlciAoZnVuY3Rpb24gRS5UTWF0Y2ggXyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcblxubGV0IHJlYyBzcGxpdF9hdF9tYXRjaF9yZWMgbCcgPSBmdW5jdGlvblxuICB8IFtdICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRS5UTWF0Y2ggXyA6OiByIC0+IChMaXN0LnJldiBsJywgcmVtb3ZlX21hdGNoZXMgcilcbiAgfCB4IDo6IHIgICAgICAgIC0+IHNwbGl0X2F0X21hdGNoX3JlYyAoeCA6OiBsJykgclxuXG5sZXQgc3BsaXRfYXRfbWF0Y2ggbCA9IHNwbGl0X2F0X21hdGNoX3JlYyBbXSBsXG5cbmxldCByZWMgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiBsIHkgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPlxuICAgIChbXSwgcHJldilcbiAgfCBFLlRNYXRjaCBfIGFzIHggOjogXyAtPiAoKiBUcnVuY2F0ZSBhZnRlciBmaXJzdCBtYXRjaCAqKVxuICAgIChbeF0sIHByZXYpXG4gIHwgRS5UU2VxIChsJywgeCwga2luZCkgOjogciAtPlxuICAgIGxldCAobCcnLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyBwcmV2IGwnIHggaW5cbiAgICBsZXQgKHInLCBwcmV2JycpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldicgciB5IGluXG4gICAgKEUudHNlcSBraW5kIGwnJyB4IHInLCBwcmV2JycpXG4gIHwgRS5URXhwIChfbWFya3MsIHtkZWYgPSBFcHM7IF99KSBhcyBlIDo6IHIgLT5cbiAgICBpZiBMaXN0Lm1lbXEgeS5pZCBwcmV2IHRoZW5cbiAgICAgIHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgciB5XG4gICAgZWxzZVxuICAgICAgbGV0IChyJywgcHJldicpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgKHkuaWQgOjogcHJldikgciB5IGluXG4gICAgICAoZSA6OiByJywgcHJldicpXG4gIHwgRS5URXhwIChfbWFya3MsIHgpIGFzIGUgOjogciAtPlxuICAgIGlmIExpc3QubWVtcSB4LmlkIHByZXYgdGhlblxuICAgICAgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiByIHlcbiAgICBlbHNlXG4gICAgICBsZXQgKHInLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyAoeC5pZCA6OiBwcmV2KSByIHkgaW5cbiAgICAgIChlIDo6IHInLCBwcmV2JylcblxubGV0IHJlYyBzZXRfaWR4IGlkeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBbXVxuICB8IEUuVE1hdGNoIG1hcmtzIDo6IHIgLT5cbiAgICBFLlRNYXRjaCAoTWFya3MubWFya3Nfc2V0X2lkeCBtYXJrcyBpZHgpIDo6IHNldF9pZHggaWR4IHJcbiAgfCBFLlRTZXEgKGwnLCB4LCBraW5kKSA6OiByIC0+XG4gICAgRS5UU2VxIChzZXRfaWR4IGlkeCBsJywgeCwga2luZCkgOjogc2V0X2lkeCBpZHggclxuICB8IEUuVEV4cCAobWFya3MsIHgpIDo6IHIgLT5cbiAgICBFLlRFeHAgKChNYXJrcy5tYXJrc19zZXRfaWR4IG1hcmtzIGlkeCksIHgpIDo6IHNldF9pZHggaWR4IHJcblxubGV0IGZpbHRlcl9tYXJrcyBiIGUgbWFya3MgPVxuICB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IExpc3QuZmlsdGVyIChmdW4gKGksIF8pIC0+IGkgPCBiIHx8IGkgPiBlKSBtYXJrcy5NYXJrcy5tYXJrcyB9XG5cbmxldCByZWMgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeCByZW0gPVxuICAoKkZvcm1hdC5lcHJpbnRmIFwiJWRALlwiIHguaWQ7KilcbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICAgIENzdCBzIC0+XG4gICAgaWYgQ3NldC5tZW0gYyBzIHRoZW4gRS50ZXhwIG1hcmtzIGVwc19leHByIDo6IHJlbSBlbHNlIHJlbVxuICB8IEFsdCBsIC0+XG4gICAgZGVsdGFfMiBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgbCByZW1cbiAgfCBTZXEgKGtpbmQsIHksIHopIC0+XG4gICAgbGV0IHknID0gZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeSBbXSBpblxuICAgIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5JyB6IHJlbVxuICB8IFJlcCAocmVwX2tpbmQsIGtpbmQsIHkpIC0+XG4gICAgbGV0IHknID0gZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeSBbXSBpblxuICAgIGxldCAoeScnLCBtYXJrcycpID1cbiAgICAgIG1hdGNoXG4gICAgICAgIGZpcnN0XG4gICAgICAgICAgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpIHknXG4gICAgICB3aXRoXG4gICAgICAgIE5vbmUgICAgICAgIC0+ICh5JywgbWFya3MpXG4gICAgICB8IFNvbWUgbWFya3MnIC0+IChyZW1vdmVfbWF0Y2hlcyB5JywgbWFya3MnKVxuICAgIGluXG4gICAgYmVnaW4gbWF0Y2ggcmVwX2tpbmQgd2l0aFxuICAgICAgICBgR3JlZWR5ICAgICAtPiBFLnRzZXEga2luZCB5JycgeCAoRS5UTWF0Y2ggbWFya3MnIDo6IHJlbSlcbiAgICAgIHwgYE5vbl9ncmVlZHkgLT4gRS5UTWF0Y2ggbWFya3MgOjogRS50c2VxIGtpbmQgeScnIHggcmVtXG4gICAgZW5kXG4gIHwgRXBzIC0+XG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgTWFyayBpIC0+XG4gICAgbGV0IG1hcmtzID0geyBtYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gKGksIC0xKSA6OiBMaXN0LnJlbW92ZV9hc3NxIGkgbWFya3MuTWFya3MubWFya3MgfSBpblxuICAgIEUuVE1hdGNoIG1hcmtzIDo6IHJlbVxuICB8IFBtYXJrIGkgLT5cbiAgICBsZXQgbWFya3MgPSB7IG1hcmtzIHdpdGggTWFya3MucG1hcmtzID0gUG1hcmsuU2V0LmFkZCBpIG1hcmtzLk1hcmtzLnBtYXJrcyB9IGluXG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgRXJhc2UgKGIsIGUpIC0+XG4gICAgRS5UTWF0Y2ggKGZpbHRlcl9tYXJrcyBiIGUgbWFya3MpIDo6IHJlbVxuICB8IEJlZm9yZSBjYXQnJyAtPlxuICAgIGlmIENhdGVnb3J5LmludGVyc2VjdCBuZXh0X2NhdCBjYXQnJyB0aGVuIEUuVE1hdGNoIG1hcmtzIDo6IHJlbSBlbHNlIHJlbVxuICB8IEFmdGVyIGNhdCcnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IHByZXZfY2F0IGNhdCcnIHRoZW4gRS5UTWF0Y2ggbWFya3MgOjogcmVtIGVsc2UgcmVtXG5cbmFuZCBkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT5cbiAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5XG4gICAgICAoZGVsdGFfMiBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgciByZW0pXG5cbmFuZCBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeSB6IHJlbSA9XG4gIG1hdGNoXG4gICAgZmlyc3QgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpIHlcbiAgd2l0aFxuICAgIE5vbmUgLT5cbiAgICBFLnRzZXEga2luZCB5IHogcmVtXG4gIHwgU29tZSBtYXJrcyAtPlxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgYExvbmdlc3QgLT5cbiAgICAgIEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6XG4gICAgICAgIChkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6IHJlbSlcbiAgICB8IGBTaG9ydGVzdCAtPlxuICAgICAgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgelxuICAgICAgICAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogcmVtKVxuICAgIHwgYEZpcnN0IC0+XG4gICAgICBsZXQgKHknLCB5JycpID0gc3BsaXRfYXRfbWF0Y2ggeSBpblxuICAgICAgRS50c2VxIGtpbmQgeScgelxuICAgICAgICAoZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeiAoRS50c2VxIGtpbmQgeScnIHogcmVtKSlcblxubGV0IHJlYyBkZWx0YV8zIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB4IHJlbSA9XG4gIG1hdGNoIHggd2l0aFxuICAgIEUuVFNlcSAoeSwgeiwga2luZCkgLT5cbiAgICBsZXQgeScgPSBkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHknIHogcmVtXG4gIHwgRS5URXhwIChtYXJrcywgZSkgLT5cbiAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBlIHJlbVxuICB8IEUuVE1hdGNoIF8gLT5cbiAgICB4IDo6IHJlbVxuXG5hbmQgZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+XG4gICAgZGVsdGFfMyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeVxuICAgICAgKGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHIgcmVtKVxuXG5sZXQgZGVsdGEgdGJsX3JlZiBuZXh0X2NhdCBjaGFyIHN0ID1cbiAgbGV0IHByZXZfY2F0ID0gc3QuU3RhdGUuY2F0ZWdvcnkgaW5cbiAgbGV0IChleHByJywgXykgPVxuICAgIHJlbW92ZV9kdXBsaWNhdGVzIFtdXG4gICAgICAoZGVsdGFfNCBjaGFyIH5uZXh0X2NhdCB+cHJldl9jYXQgc3QuU3RhdGUuZGVzYyBbXSlcbiAgICAgIGVwc19leHByIGluXG4gIGxldCBpZHggPSBmcmVlX2luZGV4IHRibF9yZWYgZXhwcicgaW5cbiAgbGV0IGV4cHInJyA9IHNldF9pZHggaWR4IGV4cHInIGluXG4gIFN0YXRlLm1rIGlkeCBuZXh0X2NhdCBleHByJydcblxuKCoqKiopXG5cbmxldCByZWMgcmVkX3RyID0gZnVuY3Rpb25cbiAgfCBbXSB8IFtfXSBhcyBsIC0+XG4gICAgbFxuICB8ICgoczEsIHN0MSkgYXMgdHIxKSA6OiAoKHMyLCBzdDIpIGFzIHRyMikgOjogcmVtIC0+XG4gICAgaWYgU3RhdGUuZXF1YWwgc3QxIHN0MiB0aGVuXG4gICAgICByZWRfdHIgKChDc2V0LnVuaW9uIHMxIHMyLCBzdDEpIDo6IHJlbSlcbiAgICBlbHNlXG4gICAgICB0cjEgOjogcmVkX3RyICh0cjIgOjogcmVtKVxuXG5sZXQgc2ltcGxfdHIgbCA9XG4gIExpc3Quc29ydFxuICAgIChmdW4gKHMxLCBfKSAoczIsIF8pIC0+IGNvbXBhcmUgczEgczIpXG4gICAgKHJlZF90ciAoTGlzdC5zb3J0IChmdW4gKF8sIHN0MSkgKF8sIHN0MikgLT4gU3RhdGUuY29tcGFyZSBzdDEgc3QyKSBsKSlcblxuKCoqKiopXG5cbmxldCBwcmVwZW5kX2Rlcml2ID0gTGlzdC5mb2xkX3JpZ2h0IChmdW4gKHMsIHgpIGwgLT4gQ3NldC5wcmVwZW5kIHMgeCBsKVxuXG5sZXQgcmVjIHJlc3RyaWN0IHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKHMnLCB4JykgOjogcmVtIC0+XG4gICAgbGV0IHMnJyA9IENzZXQuaW50ZXIgcyBzJyBpblxuICAgIGlmIENzZXQuaXNfZW1wdHkgcycnXG4gICAgdGhlbiByZXN0cmljdCBzIHJlbVxuICAgIGVsc2UgKHMnJywgeCcpIDo6IHJlc3RyaWN0IHMgcmVtXG5cbmxldCByZWMgcmVtb3ZlX21hcmtzIGIgZSByZW0gPVxuICBpZiBiID4gZSB0aGVuIHJlbSBlbHNlIHJlbW92ZV9tYXJrcyBiIChlIC0gMSkgKChlLCAtMikgOjogcmVtKVxuXG5sZXQgcmVjIHByZXBlbmRfbWFya3NfZXhwciBtID0gZnVuY3Rpb25cbiAgfCBFLlRTZXEgKGwsIGUnLCBzKSAtPiBFLlRTZXEgKHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSBsLCBlJywgcylcbiAgfCBFLlRFeHAgKG0nLCBlJykgICAtPiBFLlRFeHAgKE1hcmtzLm1lcmdlIG0gbScsIGUnKVxuICB8IEUuVE1hdGNoIG0nICAgICAgIC0+IEUuVE1hdGNoIChNYXJrcy5tZXJnZSBtIG0nKVxuXG5hbmQgcHJlcGVuZF9tYXJrc19leHByX2xzdCBtIGwgPVxuICBMaXN0Lm1hcCAocHJlcGVuZF9tYXJrc19leHByIG0pIGxcblxubGV0IHByZXBlbmRfbWFya3MgbSA9XG4gIExpc3QubWFwIChmdW4gKHMsIHgpIC0+IChzLCBwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0geCkpXG5cbmxldCByZWMgZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeCByZW0gPVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gIHwgQ3N0IHMgLT5cbiAgICBDc2V0LnByZXBlbmQgcyBbRS50ZXhwIG1hcmtzIGVwc19leHByXSByZW1cbiAgfCBBbHQgbCAtPlxuICAgIGRlcml2XzIgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGwgcmVtXG4gIHwgU2VxIChraW5kLCB5LCB6KSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeScgeiByZW1cbiAgfCBSZXAgKHJlcF9raW5kLCBraW5kLCB5KSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHopIHJlbSAtPlxuICAgICAgICAgbGV0ICh6JywgbWFya3MnKSA9XG4gICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgZmlyc3RcbiAgICAgICAgICAgICAgIChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKVxuICAgICAgICAgICAgICAgelxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgTm9uZSAgICAgICAgLT4gKHosIG1hcmtzKVxuICAgICAgICAgICB8IFNvbWUgbWFya3MnIC0+IChyZW1vdmVfbWF0Y2hlcyB6LCBtYXJrcycpXG4gICAgICAgICBpblxuICAgICAgICAgQ3NldC5wcmVwZW5kIHNcbiAgICAgICAgICAgKG1hdGNoIHJlcF9raW5kIHdpdGhcbiAgICAgICAgICAgICAgYEdyZWVkeSAgICAgLT4gRS50c2VxIGtpbmQgeicgeCBbRS5UTWF0Y2ggbWFya3MnXVxuICAgICAgICAgICAgfCBgTm9uX2dyZWVkeSAtPiBFLlRNYXRjaCBtYXJrcyA6OiBFLnRzZXEga2luZCB6JyB4IFtdKVxuICAgICAgICAgICByZW0pXG4gICAgICB5JyByZW1cbiAgfCBFcHMgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCBtYXJrc10gcmVtXG4gIHwgTWFyayBpIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2gge21hcmtzIHdpdGggTWFya3MubWFya3MgPSAoKGksIC0xKSA6OiBMaXN0LnJlbW92ZV9hc3NxIGkgbWFya3MuTWFya3MubWFya3MpfV0gcmVtXG4gIHwgUG1hcmsgXyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzXG4gICAgICBbRS5UTWF0Y2gge21hcmtzIHdpdGggTWFya3MubWFya3MgPSAocmVtb3ZlX21hcmtzIGIgZSAoZmlsdGVyX21hcmtzIGIgZSBtYXJrcykuTWFya3MubWFya3MpfV0gcmVtXG4gIHwgQmVmb3JlIGNhdCcgLT5cbiAgICBDc2V0LnByZXBlbmQgKExpc3QuYXNzcSBjYXQnIGNhdGVnb3JpZXMpIFtFLlRNYXRjaCBtYXJrc10gcmVtXG4gIHwgQWZ0ZXIgY2F0JyAtPlxuICAgIGlmIENhdGVnb3J5LmludGVyc2VjdCBjYXQgY2F0JyB0aGVuIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW0gZWxzZSByZW1cblxuYW5kIGRlcml2XzIgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPiBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB5XG4gICAgICAgICAgICAgICAgKGRlcml2XzIgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHIgcmVtKVxuXG5hbmQgZGVyaXZfc2VxIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBraW5kIHkgeiByZW0gPVxuICBpZlxuICAgIExpc3QuZXhpc3RzXG4gICAgICAoZnVuIChfcywgeGwpIC0+XG4gICAgICAgICBMaXN0LmV4aXN0cyAoZnVuY3Rpb24gRS5UTWF0Y2ggXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgeGwpXG4gICAgICB5XG4gIHRoZW5cbiAgICBsZXQgeicgPSBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIE1hcmtzLmVtcHR5IGNhdCB6IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChzLCB5KSByZW0gLT5cbiAgICAgICAgIG1hdGNoXG4gICAgICAgICAgIGZpcnN0IChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKVxuICAgICAgICAgICAgIHlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgICAgTm9uZSAtPlxuICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeSB6IFtdKSByZW1cbiAgICAgICAgIHwgU29tZSBtYXJrcyAtPlxuICAgICAgICAgICBsZXQgeicnID0gcHJlcGVuZF9tYXJrcyBtYXJrcyB6JyBpblxuICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgICBgTG9uZ2VzdCAtPlxuICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiBbXSkgKFxuICAgICAgICAgICAgICAgcHJlcGVuZF9kZXJpdiAocmVzdHJpY3QgcyB6JycpIHJlbSlcbiAgICAgICAgICAgfCBgU2hvcnRlc3QgLT5cbiAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgKFxuICAgICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IFtdKSByZW0pXG4gICAgICAgICAgIHwgYEZpcnN0IC0+XG4gICAgICAgICAgICAgbGV0ICh5JywgeScnKSA9IHNwbGl0X2F0X21hdGNoIHkgaW5cbiAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeScgeiBbXSkgKFxuICAgICAgICAgICAgICAgcHJlcGVuZF9kZXJpdiAocmVzdHJpY3QgcyB6JycpIChcbiAgICAgICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHknJyB6IFtdKSByZW0pKSlcbiAgICAgIHkgcmVtXG4gIGVsc2VcbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHhsKSByZW0gLT4gQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHhsIHogW10pIHJlbSkgeSByZW1cblxubGV0IHJlYyBkZXJpdl8zIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCB4IHJlbSA9XG4gIG1hdGNoIHggd2l0aFxuICAgIEUuVFNlcSAoeSwgeiwga2luZCkgLT5cbiAgICBsZXQgeScgPSBkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCB5IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgZGVyaXZfc2VxIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBraW5kIHknIHogcmVtXG4gIHwgRS5URXhwIChtYXJrcywgZSkgLT5cbiAgICBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCBlIHJlbVxuICB8IEUuVE1hdGNoIF8gLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFt4XSByZW1cblxuYW5kIGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPiBkZXJpdl8zIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCB5XG4gICAgICAgICAgICAgICAgKGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHIgcmVtKVxuXG5sZXQgZGVyaXYgdGJsX3JlZiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBzdCA9XG4gIGxldCBkZXIgPSBkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIHN0LlN0YXRlLmNhdGVnb3J5IHN0LlN0YXRlLmRlc2NcbiAgICAgIFsoYWxsX2NoYXJzLCBbXSldIGluXG4gIHNpbXBsX3RyIChcbiAgICBMaXN0LmZvbGRfcmlnaHQgKGZ1biAocywgZXhwcikgcmVtIC0+XG4gICAgICAgIGxldCAoZXhwcicsIF8pID0gcmVtb3ZlX2R1cGxpY2F0ZXMgW10gZXhwciBlcHNfZXhwciBpblxuKCpcbkZvcm1hdC5lcHJpbnRmIFwiQFs8Mz5AWyVhQF06ICVhIC8gJWFAXUAuXCIgQ3NldC5wcmludCBzIHByaW50X3N0YXRlIGV4cHIgcHJpbnRfc3RhdGUgZXhwcic7XG4qKVxuICAgICAgICBsZXQgaWR4ID0gZnJlZV9pbmRleCB0YmxfcmVmIGV4cHInIGluXG4gICAgICAgIGxldCBleHByJycgPSBzZXRfaWR4IGlkeCBleHByJyBpblxuICAgICAgICBMaXN0LmZvbGRfcmlnaHQgKGZ1biAoY2F0JywgcycpIHJlbSAtPlxuICAgICAgICAgICAgbGV0IHMnJyA9IENzZXQuaW50ZXIgcyBzJyBpblxuICAgICAgICAgICAgaWYgQ3NldC5pc19lbXB0eSBzJydcbiAgICAgICAgICAgIHRoZW4gcmVtXG4gICAgICAgICAgICBlbHNlIChzJycsIFN0YXRlLm1rIGlkeCBjYXQnIGV4cHInJykgOjogcmVtKVxuICAgICAgICAgIGNhdGVnb3JpZXMgcmVtKSBkZXIgW10pXG5cbigqKioqKVxuXG5sZXQgZmxhdHRlbl9tYXRjaCBtID1cbiAgbGV0IG1hID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBtYSAoaSwgXykgLT4gbWF4IG1hIGkpICgtMSkgbSBpblxuICBsZXQgcmVzID0gQXJyYXkubWFrZSAobWEgKyAxKSAoLTEpIGluXG4gIExpc3QuaXRlciAoZnVuIChpLCB2KSAtPiByZXMuKGkpIDwtIHYpIG07XG4gIHJlc1xuXG5sZXQgc3RhdHVzIHMgPVxuICBtYXRjaCBzLlN0YXRlLnN0YXR1cyB3aXRoXG4gICAgU29tZSBzdCAtPlxuICAgIHN0XG4gIHwgTm9uZSAtPlxuICAgIGxldCBzdCA9XG4gICAgICBtYXRjaCBzLlN0YXRlLmRlc2Mgd2l0aFxuICAgICAgICBbXSAgICAgICAgICAgICAgLT4gRmFpbGVkXG4gICAgICB8IEUuVE1hdGNoIG0gOjogXyAtPiBNYXRjaCAoZmxhdHRlbl9tYXRjaCBtLk1hcmtzLm1hcmtzLCBtLk1hcmtzLnBtYXJrcylcbiAgICAgIHwgXyAgICAgICAgICAgICAgIC0+IFJ1bm5pbmdcbiAgICBpblxuICAgIHMuU3RhdGUuc3RhdHVzIDwtIFNvbWUgc3Q7XG4gICAgc3RcbiIsIigqIEluIHJlYWxpdHksIHRoaXMgY2FuIHJlYWxseSBiZSByZXByZXNlbnRlZCBhcyBhIGJvb2wgYXJyYXkuXG5cbiAgIFRoZSByZXByZXNlbnRhdGlvbiBpcyBiZXN0IHRob3VnaHQgb2YgYXMgYSBsaXN0IG9mIGFsbCBjaGFycyBhbG9uZyB3aXRoIGFcbiAgIGZsYWc6XG5cbiAgIChhLCAwKSwgKGIsIDEpLCAoYywgMCksIChkLCAwKSwgLi4uXG5cbiAgIGNoYXJhY3RlcnMgYmVsb25naW5nIHRvIHRoZSBzYW1lIGNvbG9yIGFyZSByZXByZXNlbnRlZCBieSBzZXF1bmNlcyBvZlxuICAgY2hhcmFjdGVycyB3aXRoIHRoZSBmbGFnIHNldCB0byAwLlxuKilcblxudHlwZSB0ID0gQnl0ZXMudFxuXG5sZXQgbWFrZSAoKSA9IEJ5dGVzLm1ha2UgMjU3ICdcXDAwMCdcblxubGV0IGZsYXR0ZW4gY20gPVxuICBsZXQgYyA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IGNvbG9yX3JlcHIgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGxldCB2ID0gcmVmIDAgaW5cbiAgQnl0ZXMuc2V0IGMgMCAnXFwwMDAnO1xuICBCeXRlcy5zZXQgY29sb3JfcmVwciAwICdcXDAwMCc7XG4gIGZvciBpID0gMSB0byAyNTUgZG9cbiAgICBpZiBCeXRlcy5nZXQgY20gaSA8PiAnXFwwMDAnIHRoZW4gaW5jciB2O1xuICAgIEJ5dGVzLnNldCBjIGkgKENoYXIuY2hyICF2KTtcbiAgICBCeXRlcy5zZXQgY29sb3JfcmVwciAhdiAoQ2hhci5jaHIgaSlcbiAgZG9uZTtcbiAgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYywgQnl0ZXMuc3ViX3N0cmluZyBjb2xvcl9yZXByIDAgKCF2ICsgMSksICF2ICsgMSlcblxuKCogbWFyayBhbGwgdGhlIGVuZHBvaW50cyBvZiB0aGUgaW50ZXJ2YWxzIG9mIHRoZSBjaGFyIHNldCB3aXRoIHRoZSAxIGJ5dGUgKilcbmxldCBzcGxpdCBzIGNtID1cbiAgQ3NldC5pdGVyIHMgfmY6KGZ1biBpIGogLT5cbiAgICAgIEJ5dGVzLnNldCBjbSBpICdcXDAwMSc7XG4gICAgICBCeXRlcy5zZXQgY20gKGogKyAxKSAnXFwwMDEnO1xuICAgIClcbiIsIigqIFJlc3VsdCBvZiBhIHN1Y2Nlc3NmdWwgbWF0Y2guICopXG50eXBlIHQgPVxuICB7IHMgOiBzdHJpbmdcbiAgOyBtYXJrcyA6IEF1dG9tYXRhLm1hcmtfaW5mb3NcbiAgOyBwbWFya3MgOiBQbWFyay5TZXQudFxuICA7IGdwb3MgOiBpbnQgYXJyYXlcbiAgOyBnY291bnQgOiBpbnRcbiAgfVxuXG5sZXQgb2Zmc2V0IHQgaSA9XG4gIGlmIDIgKiBpICsgMSA+PSBBcnJheS5sZW5ndGggdC5tYXJrcyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gIGlmIG0xID0gLTEgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgKHAxLCBwMilcblxubGV0IGdldCB0IGkgPVxuICBsZXQgKHAxLCBwMikgPSBvZmZzZXQgdCBpIGluXG4gIFN0cmluZy5zdWIgdC5zIHAxIChwMiAtIHAxKVxuXG5sZXQgc3RhcnQgc3VicyBpID0gZnN0IChvZmZzZXQgc3VicyBpKVxuXG5sZXQgc3RvcCBzdWJzIGkgPSBzbmQgKG9mZnNldCBzdWJzIGkpXG5cbmxldCB0ZXN0IHQgaSA9XG4gIGlmIDIgKiBpID49IEFycmF5Lmxlbmd0aCB0Lm1hcmtzIHRoZW5cbiAgICBmYWxzZVxuICBlbHNlXG4gICAgbGV0IGlkeCA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlkeCA8PiAtMVxuXG5sZXQgZ2V0X29wdCB0IGkgPVxuICBpZiB0ZXN0IHQgaVxuICB0aGVuIFNvbWUgKGdldCB0IGkpXG4gIGVsc2UgTm9uZVxuXG5sZXQgZHVtbXlfb2Zmc2V0ID0gKC0xLCAtMSlcblxubGV0IGFsbF9vZmZzZXQgdCA9XG4gIGxldCByZXMgPSBBcnJheS5tYWtlIHQuZ2NvdW50IGR1bW15X29mZnNldCBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQubWFya3MgLyAyIC0gMSBkb1xuICAgIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlmIG0xIDw+IC0xIHRoZW4gYmVnaW5cbiAgICAgIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gICAgICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gICAgICByZXMuKGkpIDwtIChwMSwgcDIpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgZHVtbXlfc3RyaW5nID0gXCJcIlxuXG5sZXQgYWxsIHQgPVxuICBsZXQgcmVzID0gQXJyYXkubWFrZSB0Lmdjb3VudCBkdW1teV9zdHJpbmcgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0Lm1hcmtzIC8gMiAtIDEgZG9cbiAgICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgICBpZiBtMSA8PiAtMSB0aGVuIGJlZ2luXG4gICAgICBsZXQgcDEgPSB0Lmdwb3MuKG0xKSBpblxuICAgICAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAgICAgcmVzLihpKSA8LSBTdHJpbmcuc3ViIHQucyBwMSAocDIgLSBwMSlcbiAgICBlbmRcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBwcCBmbXQgdCA9XG4gIGxldCBtYXRjaGVzID1cbiAgICBsZXQgb2Zmc2V0cyA9IGFsbF9vZmZzZXQgdCBpblxuICAgIGxldCBzdHJzID0gYWxsIHQgaW5cbiAgICBBcnJheS50b19saXN0IChcbiAgICAgIEFycmF5LmluaXQgKEFycmF5Lmxlbmd0aCBzdHJzKSAoZnVuIGkgLT4gc3Rycy4oaSksIG9mZnNldHMuKGkpKVxuICAgICkgaW5cbiAgbGV0IG9wZW4gRm10IGluXG4gIGxldCBwcF9tYXRjaCBmbXQgKHN0ciwgKHN0YXJ0LCBzdG9wKSkgPVxuICAgIGZwcmludGYgZm10IFwiQFsoJXMgKCVkICVkKSlAXVwiIHN0ciBzdGFydCBzdG9wIGluXG4gIHNleHAgZm10IFwiR3JvdXBcIiAobGlzdCBwcF9tYXRjaCkgbWF0Y2hlc1xuXG5sZXQgbmJfZ3JvdXBzIHQgPSB0Lmdjb3VudFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubGV0IHJlYyBpdGVyIG4gZiB2ID0gaWYgbiA9IDAgdGhlbiB2IGVsc2UgaXRlciAobiAtIDEpIGYgKGYgdilcblxuKCoqKiopXG5cbmxldCB1bmtub3duID0gLTJcbmxldCBicmVhayA9IC0zXG5cbnR5cGUgbWF0Y2hfaW5mbyA9XG4gIHwgTWF0Y2ggb2YgR3JvdXAudFxuICB8IEZhaWxlZFxuICB8IFJ1bm5pbmcgb2YgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIDogaW50IH1cblxudHlwZSBzdGF0ZSA9XG4gIHsgaWR4IDogaW50O1xuICAgICgqIEluZGV4IG9mIHRoZSBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBwb3NpdGlvbiB0YWJsZS5cbiAgICAgICBOb3QgeWV0IGNvbXB1dGVkIHRyYW5zaXRpb25zIHBvaW50IHRvIGEgZHVtbXkgc3RhdGUgd2hlcmVcbiAgICAgICBbaWR4XSBpcyBzZXQgdG8gW3Vua25vd25dO1xuICAgICAgIElmIFtpZHhdIGlzIHNldCB0byBbYnJlYWtdIGZvciBzdGF0ZXMgdGhhdCBlaXRoZXIgYWx3YXlzXG4gICAgICAgc3VjY2VlZCBvciBhbHdheXMgZmFpbC4gKilcbiAgICByZWFsX2lkeCA6IGludDtcbiAgICAoKiBUaGUgcmVhbCBpbmRleCwgaW4gY2FzZSBbaWR4XSBpcyBzZXQgdG8gW2JyZWFrXSAqKVxuICAgIG5leHQgOiBzdGF0ZSBhcnJheTtcbiAgICAoKiBUcmFuc2l0aW9uIHRhYmxlLCBpbmRleGVkIGJ5IGNvbG9yICopXG4gICAgbXV0YWJsZSBmaW5hbCA6XG4gICAgICAoQ2F0ZWdvcnkudCAqXG4gICAgICAgKEF1dG9tYXRhLmlkeCAqIEF1dG9tYXRhLnN0YXR1cykpIGxpc3Q7XG4gICAgKCogTWFwcGluZyBmcm9tIHRoZSBjYXRlZ29yeSBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG9cbiAgICAgICAtIHRoZSBpbmRleCB3aGVyZSB0aGUgbmV4dCBwb3NpdGlvbiBzaG91bGQgYmUgc2F2ZWRcbiAgICAgICAtIHBvc3NpYmx5LCB0aGUgbGlzdCBvZiBtYXJrcyAoYW5kIHRoZSBjb3JyZXNwb25kaW5nIGluZGljZXMpXG4gICAgICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBiZXN0IG1hdGNoICopXG4gICAgZGVzYyA6IEF1dG9tYXRhLlN0YXRlLnRcbiAgICAoKiBEZXNjcmlwdGlvbiBvZiB0aGlzIHN0YXRlIG9mIHRoZSBhdXRvbWF0YSAqKSB9XG5cbigqIEF1dG9tYXRhIChjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb24pICopXG50eXBlIHJlID1cbiAgeyBpbml0aWFsIDogQXV0b21hdGEuZXhwcjtcbiAgICAoKiBUaGUgd2hvbGUgcmVndWxhciBleHByZXNzaW9uICopXG4gICAgbXV0YWJsZSBpbml0aWFsX3N0YXRlcyA6IChDYXRlZ29yeS50ICogc3RhdGUpIGxpc3Q7XG4gICAgKCogSW5pdGlhbCBzdGF0ZXMsIGluZGV4ZWQgYnkgaW5pdGlhbCBjYXRlZ29yeSAqKVxuICAgIGNvbG9ycyA6IHN0cmluZztcbiAgICAoKiBDb2xvciB0YWJsZSAqKVxuICAgIGNvbG9yX3JlcHIgOiBzdHJpbmc7XG4gICAgKCogVGFibGUgZnJvbSBjb2xvcnMgdG8gb25lIGNoYXJhY3RlciBvZiB0aGlzIGNvbG9yICopXG4gICAgbmNvbG9yIDogaW50O1xuICAgICgqIE51bWJlciBvZiBjb2xvcnMuICopXG4gICAgbG5sIDogaW50O1xuICAgICgqIENvbG9yIG9mIHRoZSBsYXN0IG5ld2xpbmUuIC0xIGlmIHVubmVjZXNzYXJ5ICopXG4gICAgdGJsIDogQXV0b21hdGEud29ya2luZ19hcmVhO1xuICAgICgqIFRlbXBvcmFyeSB0YWJsZSB1c2VkIHRvIGNvbXB1dGUgdGhlIGZpcnN0IGF2YWlsYWJsZSBpbmRleFxuICAgICAgIHdoZW4gY29tcHV0aW5nIGEgbmV3IHN0YXRlICopXG4gICAgc3RhdGVzIDogc3RhdGUgQXV0b21hdGEuU3RhdGUuVGFibGUudDtcbiAgICAoKiBTdGF0ZXMgb2YgdGhlIGRldGVybWluaXN0aWMgYXV0b21hdGEgKilcbiAgICBncm91cF9uYW1lcyA6IChzdHJpbmcgKiBpbnQpIGxpc3Q7XG4gICAgKCogTmFtZWQgZ3JvdXBzIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gKilcbiAgICBncm91cF9jb3VudCA6IGludFxuICAgICgqIE51bWJlciBvZiBncm91cHMgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKSB9XG5cbmxldCBwcF9yZSBjaCByZSA9IEF1dG9tYXRhLnBwIGNoIHJlLmluaXRpYWxcblxubGV0IHByaW50X3JlID0gcHBfcmVcblxubGV0IGdyb3VwX2NvdW50IHJlID0gcmUuZ3JvdXBfY291bnRcblxubGV0IGdyb3VwX25hbWVzIHJlID0gcmUuZ3JvdXBfbmFtZXNcblxuKCogSW5mb3JtYXRpb24gdXNlZCBkdXJpbmcgbWF0Y2hpbmcgKilcbnR5cGUgaW5mbyA9XG4gIHsgcmUgOiByZTtcbiAgICAoKiBUaGUgYXV0b21hdGEgKilcbiAgICBjb2xvcnMgOiBzdHJpbmc7XG4gICAgKCogQ29sb3IgdGFibGUgKFt4LmNvbG9ycyA9IHgucmUuY29sb3JzXSlcbiAgICAgICBTaG9ydGN1dCB1c2VkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zICopXG4gICAgbXV0YWJsZSBwb3NpdGlvbnMgOiBpbnQgYXJyYXk7XG4gICAgKCogQXJyYXkgb2YgbWFyayBwb3NpdGlvbnNcbiAgICAgICBUaGUgbWFyayBhcmUgb2ZmIGJ5IG9uZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyAqKVxuICAgIHBvcyA6IGludDtcbiAgICAoKiBQb3NpdGlvbiB3aGVyZSB0aGUgbWF0Y2ggaXMgc3RhcnRlZCAqKVxuICAgIGxhc3QgOiBpbnRcbiAgICAoKiBQb3NpdGlvbiB3aGVyZSB0aGUgbWF0Y2ggc2hvdWxkIHN0b3AgKikgfVxuXG5cbigqKioqKVxuXG5sZXQgY2F0ZWdvcnkgcmUgfmNvbG9yID1cbiAgaWYgY29sb3IgPSAtMSB0aGVuXG4gICAgQ2F0ZWdvcnkuaW5leGlzdGFudFxuICAgICgqIFNwZWNpYWwgY2F0ZWdvcnkgZm9yIHRoZSBsYXN0IG5ld2xpbmUgKilcbiAgZWxzZSBpZiBjb2xvciA9IHJlLmxubCB0aGVuXG4gICAgQ2F0ZWdvcnkuKGxhc3RuZXdsaW5lICsrIG5ld2xpbmUgKysgbm90X2xldHRlcilcbiAgZWxzZVxuICAgIENhdGVnb3J5LmZyb21fY2hhciAocmUuY29sb3JfcmVwci5bY29sb3JdKVxuXG4oKioqKilcblxubGV0IGR1bW15X25leHQgPSBbfHxdXG5cbmxldCB1bmtub3duX3N0YXRlID1cbiAgeyBpZHggPSB1bmtub3duOyByZWFsX2lkeCA9IDA7XG4gICAgbmV4dCA9IGR1bW15X25leHQ7IGZpbmFsID0gW107XG4gICAgZGVzYyA9IEF1dG9tYXRhLlN0YXRlLmR1bW15IH1cblxubGV0IG1rX3N0YXRlIG5jb2wgZGVzYyA9XG4gIGxldCBicmVha19zdGF0ZSA9XG4gICAgbWF0Y2ggQXV0b21hdGEuc3RhdHVzIGRlc2Mgd2l0aFxuICAgIHwgQXV0b21hdGEuUnVubmluZyAtPiBmYWxzZVxuICAgIHwgQXV0b21hdGEuRmFpbGVkXG4gICAgfCBBdXRvbWF0YS5NYXRjaCBfIC0+IHRydWVcbiAgaW5cbiAgeyBpZHggPSBpZiBicmVha19zdGF0ZSB0aGVuIGJyZWFrIGVsc2UgZGVzYy5BdXRvbWF0YS5TdGF0ZS5pZHg7XG4gICAgcmVhbF9pZHggPSBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeDtcbiAgICBuZXh0ID0gaWYgYnJlYWtfc3RhdGUgdGhlbiBkdW1teV9uZXh0IGVsc2UgQXJyYXkubWFrZSBuY29sIHVua25vd25fc3RhdGU7XG4gICAgZmluYWwgPSBbXTtcbiAgICBkZXNjIH1cblxubGV0IGZpbmRfc3RhdGUgcmUgZGVzYyA9XG4gIHRyeVxuICAgIEF1dG9tYXRhLlN0YXRlLlRhYmxlLmZpbmQgcmUuc3RhdGVzIGRlc2NcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QgPSBta19zdGF0ZSByZS5uY29sb3IgZGVzYyBpblxuICAgIEF1dG9tYXRhLlN0YXRlLlRhYmxlLmFkZCByZS5zdGF0ZXMgZGVzYyBzdDtcbiAgICBzdFxuXG4oKioqKiBNYXRjaCB3aXRoIG1hcmtzICoqKiopXG5cbmxldCBkZWx0YSBpbmZvIGNhdCB+Y29sb3Igc3QgPVxuICBsZXQgZGVzYyA9IEF1dG9tYXRhLmRlbHRhIGluZm8ucmUudGJsIGNhdCBjb2xvciBzdC5kZXNjIGluXG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaW5mby5wb3NpdGlvbnMgaW5cbiAgaWYgZGVzYy5BdXRvbWF0YS5TdGF0ZS5pZHggPSBsZW4gJiYgbGVuID4gMCB0aGVuIGJlZ2luXG4gICAgbGV0IHBvcyA9IGluZm8ucG9zaXRpb25zIGluXG4gICAgaW5mby5wb3NpdGlvbnMgPC0gQXJyYXkubWFrZSAoMiAqIGxlbikgMDtcbiAgICBBcnJheS5ibGl0IHBvcyAwIGluZm8ucG9zaXRpb25zIDAgbGVuXG4gIGVuZDtcbiAgZGVzY1xuXG5sZXQgdmFsaWRhdGUgaW5mbyAoczpzdHJpbmcpIH5wb3Mgc3QgPVxuICBsZXQgY29sb3IgPSBDaGFyLmNvZGUgKGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gIGxldCBjYXQgPSBjYXRlZ29yeSBpbmZvLnJlIH5jb2xvciBpblxuICBsZXQgZGVzYycgPSBkZWx0YSBpbmZvIGNhdCB+Y29sb3Igc3QgaW5cbiAgbGV0IHN0JyA9IGZpbmRfc3RhdGUgaW5mby5yZSBkZXNjJyBpblxuICBzdC5uZXh0Lihjb2xvcikgPC0gc3QnXG5cbmxldCByZWMgbG9vcCBpbmZvIHMgfnBvcyBzdCA9XG4gIGlmIHBvcyA8IGluZm8ubGFzdCB0aGVuXG4gICAgbGV0IHN0JyA9IHN0Lm5leHQuKENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICAgIGxldCBpZHggPSBzdCcuaWR4IGluXG4gICAgaWYgaWR4ID49IDAgdGhlbiBiZWdpblxuICAgICAgaW5mby5wb3NpdGlvbnMuKGlkeCkgPC0gcG9zO1xuICAgICAgbG9vcCBpbmZvIHMgfnBvczoocG9zICsgMSkgc3QnXG4gICAgZW5kIGVsc2UgaWYgaWR4ID0gYnJlYWsgdGhlbiBiZWdpblxuICAgICAgaW5mby5wb3NpdGlvbnMuKHN0Jy5yZWFsX2lkeCkgPC0gcG9zO1xuICAgICAgc3QnXG4gICAgZW5kIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgICAgdmFsaWRhdGUgaW5mbyBzIH5wb3Mgc3Q7XG4gICAgICBsb29wIGluZm8gcyB+cG9zIHN0XG4gICAgZW5kXG4gIGVsc2VcbiAgICBzdFxuXG5sZXQgcmVjIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvcyB+bGFzdCBzdCA9XG4gIGlmIHBvcyA8IGxhc3QgdGhlblxuICAgIGxldCBzdCcgPSBzdC5uZXh0LihDaGFyLmNvZGUgaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgICBpZiBzdCcuaWR4ID49IDAgdGhlblxuICAgICAgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zOihwb3MgKyAxKSB+bGFzdCBzdCdcbiAgICBlbHNlIGlmIHN0Jy5pZHggPSBicmVhayB0aGVuXG4gICAgICBzdCdcbiAgICBlbHNlIGJlZ2luICgqIFVua25vd24gKilcbiAgICAgIHZhbGlkYXRlIGluZm8gcyB+cG9zIHN0O1xuICAgICAgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IHN0XG4gICAgZW5kXG4gIGVsc2VcbiAgICBzdFxuXG5sZXQgZmluYWwgaW5mbyBzdCBjYXQgPVxuICB0cnlcbiAgICBMaXN0LmFzc3EgY2F0IHN0LmZpbmFsXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0JyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvcjooLTEpIHN0IGluXG4gICAgbGV0IHJlcyA9IChzdCcuQXV0b21hdGEuU3RhdGUuaWR4LCBBdXRvbWF0YS5zdGF0dXMgc3QnKSBpblxuICAgIHN0LmZpbmFsIDwtIChjYXQsIHJlcykgOjogc3QuZmluYWw7XG4gICAgcmVzXG5cbmxldCBmaW5kX2luaXRpYWxfc3RhdGUgcmUgY2F0ID1cbiAgdHJ5XG4gICAgTGlzdC5hc3NxIGNhdCByZS5pbml0aWFsX3N0YXRlc1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCA9IGZpbmRfc3RhdGUgcmUgKEF1dG9tYXRhLlN0YXRlLmNyZWF0ZSBjYXQgcmUuaW5pdGlhbCkgaW5cbiAgICByZS5pbml0aWFsX3N0YXRlcyA8LSAoY2F0LCBzdCkgOjogcmUuaW5pdGlhbF9zdGF0ZXM7XG4gICAgc3RcblxubGV0IGdldF9jb2xvciByZSAoczpzdHJpbmcpIHBvcyA9XG4gIGlmIHBvcyA8IDAgdGhlblxuICAgIC0xXG4gIGVsc2VcbiAgICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGlmIHBvcyA+PSBzbGVuIHRoZW5cbiAgICAgIC0xXG4gICAgZWxzZSBpZiBwb3MgPSBzbGVuIC0gMSAmJiByZS5sbmwgPD4gLTEgJiYgcy5bcG9zXSA9ICdcXG4nIHRoZW5cbiAgICAgICgqIFNwZWNpYWwgY2FzZSBmb3IgdGhlIGxhc3QgbmV3bGluZSAqKVxuICAgICAgcmUubG5sXG4gICAgZWxzZVxuICAgICAgQ2hhci5jb2RlIHJlLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dXG5cbmxldCByZWMgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3Mgc3Qgfmdyb3VwcyA9XG4gIGxldCBzdCcgPSBzdC5uZXh0LihpbmZvLnJlLmxubCkgaW5cbiAgaWYgc3QnLmlkeCA+PSAwIHRoZW4gYmVnaW5cbiAgICBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oc3QnLmlkeCkgPC0gcG9zO1xuICAgIHN0J1xuICBlbmQgZWxzZSBpZiBzdCcuaWR4ID0gYnJlYWsgdGhlbiBiZWdpblxuICAgIGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLihzdCcucmVhbF9pZHgpIDwtIHBvcztcbiAgICBzdCdcbiAgZW5kIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgIGxldCBjb2xvciA9IGluZm8ucmUubG5sIGluXG4gICAgbGV0IHJlYWxfYyA9IENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlICdcXG4nXSBpblxuICAgIGxldCBjYXQgPSBjYXRlZ29yeSBpbmZvLnJlIH5jb2xvciBpblxuICAgIGxldCBkZXNjJyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvcjpyZWFsX2Mgc3QgaW5cbiAgICBsZXQgc3QnID0gZmluZF9zdGF0ZSBpbmZvLnJlIGRlc2MnIGluXG4gICAgc3QubmV4dC4oY29sb3IpIDwtIHN0JztcbiAgICBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvcyBzdCB+Z3JvdXBzXG4gIGVuZFxuXG5sZXQgcmVjIHNjYW5fc3RyIGluZm8gKHM6c3RyaW5nKSBpbml0aWFsX3N0YXRlIH5ncm91cHMgPVxuICBsZXQgcG9zID0gaW5mby5wb3MgaW5cbiAgbGV0IGxhc3QgPSBpbmZvLmxhc3QgaW5cbiAgaWYgKGxhc3QgPSBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICYmIGluZm8ucmUubG5sIDw+IC0xXG4gICAgICAmJiBsYXN0ID4gcG9zXG4gICAgICAmJiBTdHJpbmcuZ2V0IHMgKGxhc3QgLSAxKSA9ICdcXG4nKVxuICB0aGVuIGJlZ2luXG4gICAgbGV0IGluZm8gPSB7IGluZm8gd2l0aCBsYXN0ID0gbGFzdCAtIDEgfSBpblxuICAgIGxldCBzdCA9IHNjYW5fc3RyIGluZm8gcyBpbml0aWFsX3N0YXRlIH5ncm91cHMgaW5cbiAgICBpZiBzdC5pZHggPSBicmVhayB0aGVuXG4gICAgICBzdFxuICAgIGVsc2VcbiAgICAgIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zOihsYXN0IC0gMSkgc3Qgfmdyb3Vwc1xuICBlbmQgZWxzZSBpZiBncm91cHMgdGhlblxuICAgIGxvb3AgaW5mbyBzIH5wb3MgaW5pdGlhbF9zdGF0ZVxuICBlbHNlXG4gICAgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IGluaXRpYWxfc3RhdGVcblxuKCogVGhpcyBmdW5jdGlvbiBhZGRzIGEgZmluYWwgYm91bmRhcnkgY2hlY2sgb24gdGhlIGlucHV0LlxuICAgVGhpcyBpcyB1c2VmdWwgdG8gaW5kaWNhdGUgdGhhdCB0aGUgb3V0cHV0IGZhaWxlZCBiZWNhdXNlXG4gICBvZiBpbnN1ZmZpY2llbnQgaW5wdXQsIG9yIHRvIHZlcmlmeSB0aGF0IHRoZSBvdXRwdXQgYWN0dWFsbHlcbiAgIG1hdGNoZXMgZm9yIHJlZ2V4IHRoYXQgaGF2ZSBib3VuZGFyeSBjb25kaXRpb25zIHdpdGggcmVzcGVjdFxuICAgdG8gdGhlIGlucHV0IHN0cmluZy5cbiAqKVxubGV0IGZpbmFsX2JvdW5kYXJ5X2NoZWNrIH5sYXN0IH5zbGVuIHJlIHMgfmluZm8gfnN0IH5ncm91cHMgPVxuICBsZXQgZmluYWxfY2F0ID1cbiAgICBpZiBsYXN0ID0gc2xlbiB0aGVuXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGluZXhpc3RhbnQpXG4gICAgZWxzZVxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBjYXRlZ29yeSByZSB+Y29sb3I6KGdldF9jb2xvciByZSBzIGxhc3QpKVxuICBpblxuICBsZXQgKGlkeCwgcmVzKSA9IGZpbmFsIGluZm8gc3QgZmluYWxfY2F0IGluXG4gIChtYXRjaCBncm91cHMsIHJlcyB3aXRoXG4gIHwgdHJ1ZSwgTWF0Y2ggXyAtPiBpbmZvLnBvc2l0aW9ucy4oaWR4KSA8LSBsYXN0XG4gIHwgXyAtPiAoKSk7XG4gIHJlc1xuXG5sZXQgbWF0Y2hfc3RyIH5ncm91cHMgfnBhcnRpYWwgcmUgcyB+cG9zIH5sZW4gPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbGFzdCA9IGlmIGxlbiA9IC0xIHRoZW4gc2xlbiBlbHNlIHBvcyArIGxlbiBpblxuICBsZXQgaW5mbyA9XG4gICAgeyByZSA7IGNvbG9ycyA9IHJlLmNvbG9yczsgcG9zIDsgbGFzdFxuICAgIDsgcG9zaXRpb25zID1cbiAgICAgICAgaWYgZ3JvdXBzIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgbiA9IEF1dG9tYXRhLmluZGV4X2NvdW50IHJlLnRibCArIDEgaW5cbiAgICAgICAgICBpZiBuIDw9IDEwIHRoZW5cbiAgICAgICAgICAgIFt8MDswOzA7MDswOzA7MDswOzA7MHxdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQXJyYXkubWFrZSBuIDBcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICBbfHxdIH1cbiAgaW5cbiAgbGV0IGluaXRpYWxfY2F0ID1cbiAgICBpZiBwb3MgPSAwIHRoZW5cbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgaW5leGlzdGFudClcbiAgICBlbHNlXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5XG4gICAgICAgICAgICAgICAgKysgY2F0ZWdvcnkgcmUgfmNvbG9yOihnZXRfY29sb3IgcmUgcyAocG9zIC0gMSkpKVxuICBpblxuICBsZXQgaW5pdGlhbF9zdGF0ZSA9IGZpbmRfaW5pdGlhbF9zdGF0ZSByZSBpbml0aWFsX2NhdCBpblxuICBsZXQgc3QgPSBzY2FuX3N0ciBpbmZvIHMgaW5pdGlhbF9zdGF0ZSB+Z3JvdXBzIGluXG4gIGxldCByZXMgPVxuICAgIGlmIHN0LmlkeCA9IGJyZWFrIHx8IChwYXJ0aWFsICYmIG5vdCBncm91cHMpIHRoZW5cbiAgICAgIEF1dG9tYXRhLnN0YXR1cyBzdC5kZXNjXG4gICAgZWxzZSBpZiBwYXJ0aWFsICYmIGdyb3VwcyB0aGVuXG4gICAgICBtYXRjaCBBdXRvbWF0YS5zdGF0dXMgc3QuZGVzYyB3aXRoXG4gICAgICB8IE1hdGNoIF8gfCBGYWlsZWQgYXMgc3RhdHVzIC0+IHN0YXR1c1xuICAgICAgfCBSdW5uaW5nIC0+XG4gICAgICAgICgqIFRoaXMgY291bGQgYmUgYmVjYXVzZSBpdCdzIHN0aWxsIG5vdCBmdWxseSBtYXRjaGVkLCBvciBpdFxuICAgICAgICAgICBjb3VsZCBiZSB0aGF0IGJlY2F1c2Ugd2UgbmVlZCB0byBydW4gc3BlY2lhbCBlbmQgb2YgaW5wdXRcbiAgICAgICAgICAgY2hlY2tzLiAqKVxuICAgICAgICAobWF0Y2ggZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3VwcyB3aXRoXG4gICAgICAgICB8IE1hdGNoIF8gYXMgc3RhdHVzIC0+IHN0YXR1c1xuICAgICAgICAgfCBGYWlsZWQgfCBSdW5uaW5nIC0+XG4gICAgICAgICAgICgqIEEgZmFpbHVyZSBoZXJlIGp1c3QgbWVhbnMgdGhhdCB3ZSBuZWVkIG1vcmUgZGF0YSwgaS5lLlxuICAgICAgICAgICAgICBpdCdzIGEgcGFydGlhbCBtYXRjaC4gKilcbiAgICAgICAgICAgUnVubmluZylcbiAgICBlbHNlIGZpbmFsX2JvdW5kYXJ5X2NoZWNrIH5sYXN0IH5zbGVuIHJlIHMgfmluZm8gfnN0IH5ncm91cHNcbiAgaW5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgICBBdXRvbWF0YS5NYXRjaCAobWFya3MsIHBtYXJrcykgLT5cbiAgICBNYXRjaCB7IHMgOyBtYXJrczsgcG1hcmtzIDsgZ3BvcyA9IGluZm8ucG9zaXRpb25zOyBnY291bnQgPSByZS5ncm91cF9jb3VudH1cbiAgfCBBdXRvbWF0YS5GYWlsZWQgLT4gRmFpbGVkXG4gIHwgQXV0b21hdGEuUnVubmluZyAtPlxuICAgIGxldCBub19tYXRjaF9zdGFydHNfYmVmb3JlID0gaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKDApIGVsc2UgMCBpblxuICAgIFJ1bm5pbmcgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIH1cblxubGV0IG1rX3JlIH5pbml0aWFsIH5jb2xvcnMgfmNvbG9yX3JlcHIgfm5jb2xvciB+bG5sIH5ncm91cF9uYW1lcyB+Z3JvdXBfY291bnQgPVxuICB7IGluaXRpYWwgO1xuICAgIGluaXRpYWxfc3RhdGVzID0gW107XG4gICAgY29sb3JzO1xuICAgIGNvbG9yX3JlcHI7XG4gICAgbmNvbG9yO1xuICAgIGxubDtcbiAgICB0YmwgPSBBdXRvbWF0YS5jcmVhdGVfd29ya2luZ19hcmVhICgpO1xuICAgIHN0YXRlcyA9IEF1dG9tYXRhLlN0YXRlLlRhYmxlLmNyZWF0ZSA5NztcbiAgICBncm91cF9uYW1lcztcbiAgICBncm91cF9jb3VudCB9XG5cbigqKioqIENoYXJhY3RlciBzZXRzICoqKiopXG5cbmxldCBjc2VxIGMgYycgPSBDc2V0LnNlcSAoQ2hhci5jb2RlIGMpIChDaGFyLmNvZGUgYycpXG5sZXQgY2FkZCBjIHMgPSBDc2V0LmFkZCAoQ2hhci5jb2RlIGMpIHNcblxubGV0IHRyYW5zX3NldCBjYWNoZSBjbSBzID1cbiAgbWF0Y2ggQ3NldC5vbmVfY2hhciBzIHdpdGhcbiAgfCBTb21lIGkgLT4gQ3NldC5jc2luZ2xlIGNtLltpXVxuICB8IE5vbmUgLT5cbiAgICBsZXQgdiA9IChDc2V0Lmhhc2hfcmVjIHMsIHMpIGluXG4gICAgdHJ5XG4gICAgICBDc2V0LkNTZXRNYXAuZmluZCB2ICFjYWNoZVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBsZXQgbCA9XG4gICAgICAgIENzZXQuZm9sZF9yaWdodFxuICAgICAgICAgIHNcbiAgICAgICAgICB+ZjooZnVuIChpLCBqKSBsIC0+IENzZXQudW5pb24gKGNzZXEgY20uW2ldIGNtLltqXSkgbClcbiAgICAgICAgICB+aW5pdDpDc2V0LmVtcHR5XG4gICAgICBpblxuICAgICAgY2FjaGUgOj0gQ3NldC5DU2V0TWFwLmFkZCB2IGwgIWNhY2hlO1xuICAgICAgbFxuXG4oKioqKilcblxudHlwZSByZWdleHAgPVxuICAgIFNldCBvZiBDc2V0LnRcbiAgfCBTZXF1ZW5jZSBvZiByZWdleHAgbGlzdFxuICB8IEFsdGVybmF0aXZlIG9mIHJlZ2V4cCBsaXN0XG4gIHwgUmVwZWF0IG9mIHJlZ2V4cCAqIGludCAqIGludCBvcHRpb25cbiAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lXG4gIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcFxuICB8IFNlbSBvZiBBdXRvbWF0YS5zZW0gKiByZWdleHBcbiAgfCBTZW1fZ3JlZWR5IG9mIEF1dG9tYXRhLnJlcF9raW5kICogcmVnZXhwXG4gIHwgR3JvdXAgb2Ygc3RyaW5nIG9wdGlvbiAqIHJlZ2V4cCB8IE5vX2dyb3VwIG9mIHJlZ2V4cCB8IE5lc3Qgb2YgcmVnZXhwXG4gIHwgQ2FzZSBvZiByZWdleHAgfCBOb19jYXNlIG9mIHJlZ2V4cFxuICB8IEludGVyc2VjdGlvbiBvZiByZWdleHAgbGlzdFxuICB8IENvbXBsZW1lbnQgb2YgcmVnZXhwIGxpc3RcbiAgfCBEaWZmZXJlbmNlIG9mIHJlZ2V4cCAqIHJlZ2V4cFxuICB8IFBtYXJrIG9mIFBtYXJrLnQgKiByZWdleHBcblxubW9kdWxlIFZpZXcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gcmVnZXhwID1cbiAgICAgIFNldCBvZiBDc2V0LnRcbiAgICB8IFNlcXVlbmNlIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBBbHRlcm5hdGl2ZSBvZiByZWdleHAgbGlzdFxuICAgIHwgUmVwZWF0IG9mIHJlZ2V4cCAqIGludCAqIGludCBvcHRpb25cbiAgICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBOb3RfYm91bmRcbiAgICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gICAgfCBTZW0gb2YgQXV0b21hdGEuc2VtICogcmVnZXhwXG4gICAgfCBTZW1fZ3JlZWR5IG9mIEF1dG9tYXRhLnJlcF9raW5kICogcmVnZXhwXG4gICAgfCBHcm91cCBvZiBzdHJpbmcgb3B0aW9uICogcmVnZXhwIHwgTm9fZ3JvdXAgb2YgcmVnZXhwIHwgTmVzdCBvZiByZWdleHBcbiAgICB8IENhc2Ugb2YgcmVnZXhwIHwgTm9fY2FzZSBvZiByZWdleHBcbiAgICB8IEludGVyc2VjdGlvbiBvZiByZWdleHAgbGlzdFxuICAgIHwgQ29tcGxlbWVudCBvZiByZWdleHAgbGlzdFxuICAgIHwgRGlmZmVyZW5jZSBvZiByZWdleHAgKiByZWdleHBcbiAgICB8IFBtYXJrIG9mIFBtYXJrLnQgKiByZWdleHBcblxuICBsZXQgdmlldyB0ID0gdFxuZW5kXG5cbmxldCByZWMgcHAgZm10IHQgPVxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbGV0IHZhciBzIHJlID0gc2V4cCBmbXQgcyBwcCByZSBpblxuICBsZXQgc2VxIHMgcmVsID0gc2V4cCBmbXQgcyAobGlzdCBwcCkgcmVsIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNldCBzIC0+ICBzZXhwIGZtdCBcIlNldFwiIENzZXQucHAgc1xuICB8IFNlcXVlbmNlIHNxIC0+IHNlcSBcIlNlcXVlbmNlXCIgc3FcbiAgfCBBbHRlcm5hdGl2ZSBhbHQgLT4gc2VxIFwiQWx0ZXJuYXRpdmVcIiBhbHRcbiAgfCBSZXBlYXQgKHJlLCBzdGFydCwgc3RvcCkgLT5cbiAgICBsZXQgcHAnIGZtdCAoKSA9IGZwcmludGYgZm10IFwiJWFAICVkJWFcIiBwcCByZSAgIHN0YXJ0ICAgb3B0aW50IHN0b3AgaW5cbiAgICBzZXhwIGZtdCBcIlJlcGVhdFwiIHBwJyAoKVxuICB8IEJlZ19vZl9saW5lICAgICAgLT4gc3RyIGZtdCBcIkJlZ19vZl9saW5lXCJcbiAgfCBFbmRfb2ZfbGluZSAgICAgIC0+IHN0ciBmbXQgXCJFbmRfb2ZfbGluZVwiXG4gIHwgQmVnX29mX3dvcmQgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX3dvcmRcIlxuICB8IEVuZF9vZl93b3JkICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl93b3JkXCJcbiAgfCBOb3RfYm91bmQgICAgICAgIC0+IHN0ciBmbXQgXCJOb3RfYm91bmRcIlxuICB8IEJlZ19vZl9zdHIgICAgICAgLT4gc3RyIGZtdCBcIkJlZ19vZl9zdHJcIlxuICB8IEVuZF9vZl9zdHIgICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl9zdHJcIlxuICB8IExhc3RfZW5kX29mX2xpbmUgLT4gc3RyIGZtdCBcIkxhc3RfZW5kX29mX2xpbmVcIlxuICB8IFN0YXJ0ICAgICAgICAgICAgLT4gc3RyIGZtdCBcIlN0YXJ0XCJcbiAgfCBTdG9wICAgICAgICAgICAgIC0+IHN0ciBmbXQgXCJTdG9wXCJcbiAgfCBTZW0gKHNlbSwgcmUpICAgIC0+XG4gICAgc2V4cCBmbXQgXCJTZW1cIiAocGFpciBBdXRvbWF0YS5wcF9zZW0gcHApIChzZW0sIHJlKVxuICB8IFNlbV9ncmVlZHkgKGssIHJlKSAtPlxuICAgIHNleHAgZm10IFwiU2VtX2dyZWVkeVwiIChwYWlyIEF1dG9tYXRhLnBwX3JlcF9raW5kIHBwKSAoaywgcmUpXG4gIHwgR3JvdXAgKE5vbmUsIGMpICAgLT4gdmFyIFwiR3JvdXBcIiBjXG4gIHwgR3JvdXAgKFNvbWUgbiwgYykgLT4gc2V4cCBmbXQgXCJOYW1lZF9ncm91cFwiIChwYWlyIHN0ciBwcCkgKG4sIGMpXG4gIHwgTm9fZ3JvdXAgYyAgICAgLT4gdmFyIFwiTm9fZ3JvdXBcIiBjXG4gIHwgTmVzdCBjICAgICAgICAgLT4gdmFyIFwiTmVzdFwiIGNcbiAgfCBDYXNlIGMgICAgICAgICAtPiB2YXIgXCJDYXNlXCIgY1xuICB8IE5vX2Nhc2UgYyAgICAgIC0+IHZhciBcIk5vX2Nhc2VcIiBjXG4gIHwgSW50ZXJzZWN0aW9uIGMgLT4gc2VxIFwiSW50ZXJzZWN0aW9uXCIgY1xuICB8IENvbXBsZW1lbnQgYyAgIC0+IHNlcSBcIkNvbXBsZW1lbnRcIiBjXG4gIHwgRGlmZmVyZW5jZSAoYSwgYikgLT4gc2V4cCBmbXQgXCJEaWZmZXJlbmNlXCIgKHBhaXIgcHAgcHApIChhLCBiKVxuICB8IFBtYXJrIChtLCByKSAgICAgIC0+IHNleHAgZm10IFwiUG1hcmtcIiAocGFpciBQbWFyay5wcCBwcCkgKG0sIHIpXG5cbmxldCByZWMgaXNfY2hhcnNldCA9IGZ1bmN0aW9uXG4gIHwgU2V0IF8gLT5cbiAgICB0cnVlXG4gIHwgQWx0ZXJuYXRpdmUgbCB8IEludGVyc2VjdGlvbiBsIHwgQ29tcGxlbWVudCBsIC0+XG4gICAgTGlzdC5mb3JfYWxsIGlzX2NoYXJzZXQgbFxuICB8IERpZmZlcmVuY2UgKHIsIHInKSAtPlxuICAgIGlzX2NoYXJzZXQgciAmJiBpc19jaGFyc2V0IHInXG4gIHwgU2VtIChfLCByKSB8IFNlbV9ncmVlZHkgKF8sIHIpXG4gIHwgTm9fZ3JvdXAgciB8IENhc2UgciB8IE5vX2Nhc2UgciAtPlxuICAgIGlzX2NoYXJzZXQgclxuICB8IFNlcXVlbmNlIF8gfCBSZXBlYXQgXyB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgfCBOb3RfYm91bmQgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gIHwgR3JvdXAgXyB8IE5lc3QgXyB8IFBtYXJrIChfLF8pLT5cbiAgICBmYWxzZVxuXG4oKlhYWCBVc2UgYSBiZXR0ZXIgYWxnb3JpdGhtIGFsbG93aW5nIG5vbi1jb250aWd1b3VzIHJlZ2lvbnM/ICopXG5cbmxldCBjdXBwZXIgPVxuICBDc2V0LnVuaW9uIChjc2VxICdBJyAnWicpXG4gICAgKENzZXQudW5pb24gKGNzZXEgJ1xcMTkyJyAnXFwyMTQnKSAoY3NlcSAnXFwyMTYnICdcXDIyMicpKVxubGV0IGNsb3dlciA9IENzZXQub2Zmc2V0IDMyIGN1cHBlclxubGV0IGNhbHBoYSA9XG4gIExpc3QuZm9sZF9yaWdodCBjYWRkIFsnXFwxNzAnOyAnXFwxODEnOyAnXFwxODYnOyAnXFwyMjMnOyAnXFwyNTUnXVxuICAgIChDc2V0LnVuaW9uIGNsb3dlciBjdXBwZXIpXG5sZXQgY2RpZ2l0ID0gY3NlcSAnMCcgJzknXG5sZXQgY2FsbnVtID0gQ3NldC51bmlvbiBjYWxwaGEgY2RpZ2l0XG5sZXQgY3dvcmQgPSBjYWRkICdfJyBjYWxudW1cblxubGV0IGNvbG9yaXplIGMgcmVnZXhwID1cbiAgbGV0IGxubCA9IHJlZiBmYWxzZSBpblxuICBsZXQgcmVjIGNvbG9yaXplIHJlZ2V4cCA9XG4gICAgbWF0Y2ggcmVnZXhwIHdpdGhcbiAgICAgIFNldCBzICAgICAgICAgICAgICAgICAgICAgLT4gQ29sb3JfbWFwLnNwbGl0IHMgY1xuICAgIHwgU2VxdWVuY2UgbCAgICAgICAgICAgICAgICAtPiBMaXN0Lml0ZXIgY29sb3JpemUgbFxuICAgIHwgQWx0ZXJuYXRpdmUgbCAgICAgICAgICAgICAtPiBMaXN0Lml0ZXIgY29sb3JpemUgbFxuICAgIHwgUmVwZWF0IChyLCBfLCBfKSAgICAgICAgICAtPiBjb2xvcml6ZSByXG4gICAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIC0+IENvbG9yX21hcC5zcGxpdCAoQ3NldC5jc2luZ2xlICdcXG4nKSBjXG4gICAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkXG4gICAgfCBOb3RfYm91bmQgICAgICAgICAgICAgICAgIC0+IENvbG9yX21hcC5zcGxpdCBjd29yZCBjXG4gICAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICAgIHwgU3RhcnQgfCBTdG9wICAgICAgICAgICAgICAtPiAoKVxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZSAgICAgICAgICAtPiBsbmwgOj0gdHJ1ZVxuICAgIHwgU2VtIChfLCByKVxuICAgIHwgU2VtX2dyZWVkeSAoXywgcilcbiAgICB8IEdyb3VwIChfLCByKSB8IE5vX2dyb3VwIHJcbiAgICB8IE5lc3QgciB8IFBtYXJrIChfLHIpICAgICAtPiBjb2xvcml6ZSByXG4gICAgfCBDYXNlIF8gfCBOb19jYXNlIF9cbiAgICB8IEludGVyc2VjdGlvbiBfXG4gICAgfCBDb21wbGVtZW50IF9cbiAgICB8IERpZmZlcmVuY2UgXyAgICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIGluXG4gIGNvbG9yaXplIHJlZ2V4cDtcbiAgIWxubFxuXG4oKioqKiBDb21waWxhdGlvbiAqKioqKVxuXG5sZXQgcmVjIGVxdWFsIHgxIHgyID1cbiAgbWF0Y2ggeDEsIHgyIHdpdGhcbiAgICBTZXQgczEsIFNldCBzMiAtPlxuICAgIHMxID0gczJcbiAgfCBTZXF1ZW5jZSBsMSwgU2VxdWVuY2UgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgQWx0ZXJuYXRpdmUgbDEsIEFsdGVybmF0aXZlIGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IFJlcGVhdCAoeDEnLCBpMSwgajEpLCBSZXBlYXQgKHgyJywgaTIsIGoyKSAtPlxuICAgIGkxID0gaTIgJiYgajEgPSBqMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgQmVnX29mX2xpbmUsIEJlZ19vZl9saW5lXG4gIHwgRW5kX29mX2xpbmUsIEVuZF9vZl9saW5lXG4gIHwgQmVnX29mX3dvcmQsIEJlZ19vZl93b3JkXG4gIHwgRW5kX29mX3dvcmQsIEVuZF9vZl93b3JkXG4gIHwgTm90X2JvdW5kLCBOb3RfYm91bmRcbiAgfCBCZWdfb2Zfc3RyLCBCZWdfb2Zfc3RyXG4gIHwgRW5kX29mX3N0ciwgRW5kX29mX3N0clxuICB8IExhc3RfZW5kX29mX2xpbmUsIExhc3RfZW5kX29mX2xpbmVcbiAgfCBTdGFydCwgU3RhcnRcbiAgfCBTdG9wLCBTdG9wIC0+XG4gICAgdHJ1ZVxuICB8IFNlbSAoc2VtMSwgeDEnKSwgU2VtIChzZW0yLCB4MicpIC0+XG4gICAgc2VtMSA9IHNlbTIgJiYgZXF1YWwgeDEnIHgyJ1xuICB8IFNlbV9ncmVlZHkgKGsxLCB4MScpLCBTZW1fZ3JlZWR5IChrMiwgeDInKSAtPlxuICAgIGsxID0gazIgJiYgZXF1YWwgeDEnIHgyJ1xuICB8IEdyb3VwIF8sIEdyb3VwIF8gLT4gKCogRG8gbm90IG1lcmdlIGdyb3VwcyEgKilcbiAgICBmYWxzZVxuICB8IE5vX2dyb3VwIHgxJywgTm9fZ3JvdXAgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IE5lc3QgeDEnLCBOZXN0IHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBDYXNlIHgxJywgQ2FzZSB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgTm9fY2FzZSB4MScsIE5vX2Nhc2UgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IEludGVyc2VjdGlvbiBsMSwgSW50ZXJzZWN0aW9uIGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IENvbXBsZW1lbnQgbDEsIENvbXBsZW1lbnQgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgRGlmZmVyZW5jZSAoeDEnLCB4MScnKSwgRGlmZmVyZW5jZSAoeDInLCB4MicnKSAtPlxuICAgIGVxdWFsIHgxJyB4MicgJiYgZXF1YWwgeDEnJyB4MicnXG4gIHwgUG1hcmsgKG0xLCByMSksIFBtYXJrIChtMiwgcjIpIC0+XG4gICAgUG1hcmsuZXF1YWwgbTEgbTIgJiYgZXF1YWwgcjEgcjJcbiAgfCBfIC0+XG4gICAgZmFsc2VcblxuYW5kIGVxX2xpc3QgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIFtdLCBbXSAtPlxuICAgIHRydWVcbiAgfCB4MSA6OiByMSwgeDIgOjogcjIgLT5cbiAgICBlcXVhbCB4MSB4MiAmJiBlcV9saXN0IHIxIHIyXG4gIHwgXyAtPlxuICAgIGZhbHNlXG5cbmxldCBzZXF1ZW5jZSA9IGZ1bmN0aW9uXG4gIHwgW3hdIC0+IHhcbiAgfCBsICAgLT4gU2VxdWVuY2UgbFxuXG5sZXQgcmVjIG1lcmdlX3NlcXVlbmNlcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBbXVxuICB8IEFsdGVybmF0aXZlIGwnIDo6IHIgLT5cbiAgICBtZXJnZV9zZXF1ZW5jZXMgKGwnIEAgcilcbiAgfCBTZXF1ZW5jZSAoeCA6OiB5KSA6OiByIC0+XG4gICAgYmVnaW4gbWF0Y2ggbWVyZ2Vfc2VxdWVuY2VzIHIgd2l0aFxuICAgICAgICBTZXF1ZW5jZSAoeCcgOjogeScpIDo6IHInIHdoZW4gZXF1YWwgeCB4JyAtPlxuICAgICAgICBTZXF1ZW5jZSBbeDsgQWx0ZXJuYXRpdmUgW3NlcXVlbmNlIHk7IHNlcXVlbmNlIHknXV0gOjogcidcbiAgICAgIHwgcicgLT5cbiAgICAgICAgU2VxdWVuY2UgKHggOjogeSkgOjogcidcbiAgICBlbmRcbiAgfCB4IDo6IHIgLT5cbiAgICB4IDo6IG1lcmdlX3NlcXVlbmNlcyByXG5cbm1vZHVsZSBBID0gQXV0b21hdGFcblxubGV0IGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjciA9XG4gIG1hdGNoIGtpbmQsIGtpbmQnIHdpdGhcbiAgICBgRmlyc3QsIGBGaXJzdCAtPiBjclxuICB8IGBGaXJzdCwgayAgICAgICAtPiBBLnNlcSBpZHMgayBjciAoQS5lcHMgaWRzKVxuICB8ICBfICAgICAgICAgICAgICAgLT4gY3JcblxuKCogWFhYIHNob3VsZCBwcm9iYWJseSBjb21wdXRlIGEgY2F0ZWdvcnkgbWFzayAqKVxubGV0IHJlYyB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT5cbiAgICAoQS5jc3QgaWRzICh0cmFuc19zZXQgY2FjaGUgYyBzKSwga2luZClcbiAgfCBTZXF1ZW5jZSBsIC0+XG4gICAgKHRyYW5zX3NlcSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIGwsIGtpbmQpXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIGJlZ2luIG1hdGNoIG1lcmdlX3NlcXVlbmNlcyBsIHdpdGhcbiAgICAgICAgW3InXSAtPlxuICAgICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAgIChlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3IsIGtpbmQpXG4gICAgICB8IG1lcmdlZF9zZXF1ZW5jZXMgLT5cbiAgICAgICAgKEEuYWx0IGlkc1xuICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgKGZ1biByJyAtPlxuICAgICAgICAgICAgICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5XG4gICAgICAgICAgICAgICAgICAgICBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgICAgICAgICAgICBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3IpXG4gICAgICAgICAgICAgIG1lcmdlZF9zZXF1ZW5jZXMpLFxuICAgICAgICAga2luZClcbiAgICBlbmRcbiAgfCBSZXBlYXQgKHInLCBpLCBqKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIGxldCByZW0gPVxuICAgICAgbWF0Y2ggaiB3aXRoXG4gICAgICAgIE5vbmUgLT5cbiAgICAgICAgQS5yZXAgaWRzIGdyZWVkeSBraW5kJyBjclxuICAgICAgfCBTb21lIGogLT5cbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIG1hdGNoIGdyZWVkeSB3aXRoXG4gICAgICAgICAgICBgR3JlZWR5IC0+XG4gICAgICAgICAgICBmdW4gcmVtIC0+XG4gICAgICAgICAgICAgIEEuYWx0IGlkc1xuICAgICAgICAgICAgICAgIFtBLnNlcSBpZHMga2luZCcgKEEucmVuYW1lIGlkcyBjcikgcmVtOyBBLmVwcyBpZHNdXG4gICAgICAgICAgfCBgTm9uX2dyZWVkeSAtPlxuICAgICAgICAgICAgZnVuIHJlbSAtPlxuICAgICAgICAgICAgICBBLmFsdCBpZHNcbiAgICAgICAgICAgICAgICBbQS5lcHMgaWRzOyBBLnNlcSBpZHMga2luZCcgKEEucmVuYW1lIGlkcyBjcikgcmVtXVxuICAgICAgICBpblxuICAgICAgICBpdGVyIChqIC0gaSkgZiAoQS5lcHMgaWRzKVxuICAgIGluXG4gICAgKGl0ZXIgaSAoZnVuIHJlbSAtPiBBLnNlcSBpZHMga2luZCcgKEEucmVuYW1lIGlkcyBjcikgcmVtKSByZW0sIGtpbmQpXG4gIHwgQmVnX29mX2xpbmUgLT5cbiAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbmV3bGluZSksIGtpbmQpXG4gIHwgRW5kX29mX2xpbmUgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5ld2xpbmUpLCBraW5kKVxuICB8IEJlZ19vZl93b3JkIC0+XG4gICAgKEEuc2VxIGlkcyBgRmlyc3RcbiAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXG4gICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5sZXR0ZXIpLFxuICAgICBraW5kKVxuICB8IEVuZF9vZl93b3JkIC0+XG4gICAgKEEuc2VxIGlkcyBgRmlyc3RcbiAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkubGV0dGVyKVxuICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpLFxuICAgICBraW5kKVxuICB8IE5vdF9ib3VuZCAtPlxuICAgIChBLmFsdCBpZHMgW0Euc2VxIGlkcyBgRmlyc3RcbiAgICAgICAgICAgICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5sZXR0ZXIpXG4gICAgICAgICAgICAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmxldHRlcik7XG4gICAgICAgICAgICAgICAgQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgICAgICAgICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKVxuICAgICAgICAgICAgICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSldLFxuICAgICBraW5kKVxuICB8IEJlZ19vZl9zdHIgLT5cbiAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuaW5leGlzdGFudCwga2luZClcbiAgfCBFbmRfb2Zfc3RyIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5pbmV4aXN0YW50LCBraW5kKVxuICB8IExhc3RfZW5kX29mX2xpbmUgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIGxhc3RuZXdsaW5lKSwga2luZClcbiAgfCBTdGFydCAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5zZWFyY2hfYm91bmRhcnksIGtpbmQpXG4gIHwgU3RvcCAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuc2VhcmNoX2JvdW5kYXJ5LCBraW5kKVxuICB8IFNlbSAoa2luZCcsIHInKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kJyBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgKGVuZm9yY2Vfa2luZCBpZHMga2luZCcga2luZCcnIGNyLFxuICAgICBraW5kJylcbiAgfCBTZW1fZ3JlZWR5IChncmVlZHknLCByJykgLT5cbiAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeScgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgfCBHcm91cCAobiwgcicpIC0+XG4gICAgaWYgaWduX2dyb3VwIHRoZW5cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gICAgZWxzZVxuICAgICAgbGV0IHAgPSAhcG9zIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBtYXRjaCBuIHdpdGhcbiAgICAgICAgfCBTb21lIG5hbWUgLT4gbmFtZXMgOj0gKG5hbWUsIHAgLyAyKSA6OiAhbmFtZXNcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICBpblxuICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgbGV0IChjciwga2luZCcpID1cbiAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLm1hcmsgaWRzIHApIChcbiAgICAgICAgICBBLnNlcSBpZHMgYEZpcnN0IGNyIChBLm1hcmsgaWRzIChwICsgMSkpKSxcbiAgICAgICBraW5kJylcbiAgfCBOb19ncm91cCByJyAtPlxuICAgIHRyYW5zbGF0ZSBpZHMga2luZCB0cnVlIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICB8IE5lc3QgcicgLT5cbiAgICBsZXQgYiA9ICFwb3MgaW5cbiAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgICBpblxuICAgIGxldCBlID0gIXBvcyAtIDEgaW5cbiAgICBpZiBlIDwgYiB0aGVuXG4gICAgICAoY3IsIGtpbmQnKVxuICAgIGVsc2VcbiAgICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLmVyYXNlIGlkcyBiIGUpIGNyLCBraW5kJylcbiAgfCBEaWZmZXJlbmNlIF8gfCBDb21wbGVtZW50IF8gfCBJbnRlcnNlY3Rpb24gXyB8IE5vX2Nhc2UgXyB8IENhc2UgXyAtPlxuICAgIGFzc2VydCBmYWxzZVxuICB8IFBtYXJrIChpLCByJykgLT5cbiAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdCAoQS5wbWFyayBpZHMgaSkgY3IsIGtpbmQnKVxuXG5hbmQgdHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgQS5lcHMgaWRzXG4gIHwgW3JdIC0+XG4gICAgbGV0IChjcicsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByIGluXG4gICAgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyJ1xuICB8IHIgOjogcmVtIC0+XG4gICAgbGV0IChjcicsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByIGluXG4gICAgbGV0IGNyJycgPVxuICAgICAgdHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcmVtIGluXG4gICAgaWYgQS5pc19lcHMgY3InJyB0aGVuXG4gICAgICBjcidcbiAgICBlbHNlIGlmIEEuaXNfZXBzIGNyJyB0aGVuXG4gICAgICBjcicnXG4gICAgZWxzZVxuICAgICAgQS5zZXEgaWRzIGtpbmQnIGNyJyBjcicnXG5cbigqKioqIENhc2UgKioqKilcblxubGV0IGNhc2VfaW5zZW5zIHMgPVxuICBDc2V0LnVuaW9uIHMgKENzZXQudW5pb24gKENzZXQub2Zmc2V0IDMyIChDc2V0LmludGVyIHMgY3VwcGVyKSlcbiAgICAgICAgICAgICAgICAgIChDc2V0Lm9mZnNldCAoLTMyKSAoQ3NldC5pbnRlciBzIGNsb3dlcikpKVxuXG5sZXQgYXNfc2V0ID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPiBzXG4gIHwgXyAgICAgLT4gYXNzZXJ0IGZhbHNlXG5cbigqIFhYWCBTaG91bGQgc3BsaXQgYWx0ZXJuYXRpdmVzIGludG8gKDEpIGNoYXJzZXRzIGFuZCAoMikgbW9yZVxuICAgY29tcGxleCByZWd1bGFyIGV4cHJlc3Npb25zOyBhbHRlcm5hdGl2ZSBzaG91bGQgdGhlcmVmb3JlIHByb2JhYmx5XG4gICBiZSBmbGF0dGVuIGhlcmUgKilcbmxldCByZWMgaGFuZGxlX2Nhc2UgaWduX2Nhc2UgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+XG4gICAgU2V0IChpZiBpZ25fY2FzZSB0aGVuIGNhc2VfaW5zZW5zIHMgZWxzZSBzKVxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICBTZXF1ZW5jZSAoTGlzdC5tYXAgKGhhbmRsZV9jYXNlIGlnbl9jYXNlKSBsKVxuICB8IEFsdGVybmF0aXZlIGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UpIGwgaW5cbiAgICBpZiBpc19jaGFyc2V0IChBbHRlcm5hdGl2ZSBsJykgdGhlblxuICAgICAgU2V0IChMaXN0LmZvbGRfbGVmdCAoZnVuIHMgciAtPiBDc2V0LnVuaW9uIHMgKGFzX3NldCByKSkgQ3NldC5lbXB0eSBsJylcbiAgICBlbHNlXG4gICAgICBBbHRlcm5hdGl2ZSBsJ1xuICB8IFJlcGVhdCAociwgaSwgaikgLT5cbiAgICBSZXBlYXQgKGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIsIGksIGopXG4gIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBOb3RfYm91bmRcbiAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0ciB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3AgYXMgciAtPlxuICAgIHJcbiAgfCBTZW0gKGssIHIpIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIFNlbSAoaywgcicpXG4gIHwgU2VtX2dyZWVkeSAoaywgcikgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgU2VtX2dyZWVkeSAoaywgcicpXG4gIHwgR3JvdXAgKG4sIHIpIC0+XG4gICAgR3JvdXAgKG4sIGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpXG4gIHwgTm9fZ3JvdXAgciAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBOb19ncm91cCByJ1xuICB8IE5lc3QgciAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBOZXN0IHInXG4gIHwgQ2FzZSByIC0+XG4gICAgaGFuZGxlX2Nhc2UgZmFsc2UgclxuICB8IE5vX2Nhc2UgciAtPlxuICAgIGhhbmRsZV9jYXNlIHRydWUgclxuICB8IEludGVyc2VjdGlvbiBsIC0+XG4gICAgbGV0IGwnID0gTGlzdC5tYXAgKGZ1biByIC0+IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpIGwgaW5cbiAgICBTZXQgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQuaW50ZXIgcyAoYXNfc2V0IHIpKSBDc2V0LmNhbnkgbCcpXG4gIHwgQ29tcGxlbWVudCBsIC0+XG4gICAgbGV0IGwnID0gTGlzdC5tYXAgKGZ1biByIC0+IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpIGwgaW5cbiAgICBTZXQgKENzZXQuZGlmZiBDc2V0LmNhbnlcbiAgICAgICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQudW5pb24gcyAoYXNfc2V0IHIpKVxuICAgICAgICAgICAgICBDc2V0LmVtcHR5IGwnKSlcbiAgfCBEaWZmZXJlbmNlIChyLCByJykgLT5cbiAgICBTZXQgKENzZXQuaW50ZXIgKGFzX3NldCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikpXG4gICAgICAgICAgIChDc2V0LmRpZmYgQ3NldC5jYW55IChhc19zZXQgKGhhbmRsZV9jYXNlIGlnbl9jYXNlIHInKSkpKVxuICB8IFBtYXJrIChpLHIpIC0+IFBtYXJrIChpLGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpXG5cbigqKioqKVxuXG5sZXQgY29tcGlsZV8xIHJlZ2V4cCA9XG4gIGxldCByZWdleHAgPSBoYW5kbGVfY2FzZSBmYWxzZSByZWdleHAgaW5cbiAgbGV0IGMgPSBDb2xvcl9tYXAubWFrZSAoKSBpblxuICBsZXQgbmVlZF9sbmwgPSBjb2xvcml6ZSBjIHJlZ2V4cCBpblxuICBsZXQgKGNvbG9ycywgY29sb3JfcmVwciwgbmNvbG9yKSA9IENvbG9yX21hcC5mbGF0dGVuIGMgaW5cbiAgbGV0IGxubCA9IGlmIG5lZWRfbG5sIHRoZW4gbmNvbG9yIGVsc2UgLTEgaW5cbiAgbGV0IG5jb2xvciA9IGlmIG5lZWRfbG5sIHRoZW4gbmNvbG9yICsgMSBlbHNlIG5jb2xvciBpblxuICBsZXQgaWRzID0gQS5jcmVhdGVfaWRzICgpIGluXG4gIGxldCBwb3MgPSByZWYgMCBpblxuICBsZXQgbmFtZXMgPSByZWYgW10gaW5cbiAgbGV0IChyLCBraW5kKSA9XG4gICAgdHJhbnNsYXRlIGlkc1xuICAgICAgYEZpcnN0IGZhbHNlIGZhbHNlIGBHcmVlZHkgcG9zIG5hbWVzIChyZWYgQ3NldC5DU2V0TWFwLmVtcHR5KSBjb2xvcnMgcmVnZXhwIGluXG4gIGxldCByID0gZW5mb3JjZV9raW5kIGlkcyBgRmlyc3Qga2luZCByIGluXG4gICgqRm9ybWF0LmVwcmludGYgXCI8JWQgJWQ+QC5cIiAhaWRzIG5jb2w7KilcbiAgbWtfcmUgfmluaXRpYWw6ciB+Y29sb3JzIH5jb2xvcl9yZXByIH5uY29sb3IgfmxubCB+Z3JvdXBfbmFtZXM6KExpc3QucmV2ICFuYW1lcykgfmdyb3VwX2NvdW50OighcG9zIC8gMilcblxuKCoqKiopXG5cbmxldCByZWMgYW5jaG9yZWQgPSBmdW5jdGlvblxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICBMaXN0LmV4aXN0cyBhbmNob3JlZCBsXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIExpc3QuZm9yX2FsbCBhbmNob3JlZCBsXG4gIHwgUmVwZWF0IChyLCBpLCBfKSAtPlxuICAgIGkgPiAwICYmIGFuY2hvcmVkIHJcbiAgfCBTZXQgXyB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkXG4gIHwgTm90X2JvdW5kIHwgRW5kX29mX3N0ciB8IExhc3RfZW5kX29mX2xpbmUgfCBTdG9wXG4gIHwgSW50ZXJzZWN0aW9uIF8gfCBDb21wbGVtZW50IF8gfCBEaWZmZXJlbmNlIF8gLT5cbiAgICBmYWxzZVxuICB8IEJlZ19vZl9zdHIgfCBTdGFydCAtPlxuICAgIHRydWVcbiAgfCBTZW0gKF8sIHIpIHwgU2VtX2dyZWVkeSAoXywgcikgfCBHcm91cCAoXywgcikgfCBOb19ncm91cCByIHwgTmVzdCByXG4gIHwgQ2FzZSByIHwgTm9fY2FzZSByIHwgUG1hcmsgKF8sIHIpIC0+XG4gICAgYW5jaG9yZWQgclxuXG4oKioqKilcblxudHlwZSB0ID0gcmVnZXhwXG5cbmxldCBzdHIgcyA9XG4gIGxldCBsID0gcmVmIFtdIGluXG4gIGZvciBpID0gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGwgOj0gU2V0IChDc2V0LmNzaW5nbGUgcy5baV0pIDo6ICFsXG4gIGRvbmU7XG4gIFNlcXVlbmNlICFsXG5sZXQgY2hhciBjID0gU2V0IChDc2V0LmNzaW5nbGUgYylcblxubGV0IGFsdCA9IGZ1bmN0aW9uXG4gIHwgW3JdIC0+IHJcbiAgfCBsICAgLT4gQWx0ZXJuYXRpdmUgbFxubGV0IHNlcSA9IGZ1bmN0aW9uXG4gIHwgW3JdIC0+IHJcbiAgfCBsICAgLT4gU2VxdWVuY2UgbFxuXG5sZXQgZW1wdHkgPSBhbHQgW11cbmxldCBlcHNpbG9uID0gc2VxIFtdXG5sZXQgcmVwbiByIGkgaiA9XG4gIGlmIGkgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBuXCI7XG4gIGJlZ2luIG1hdGNoIGogd2l0aFxuICAgIHwgU29tZSBqIHdoZW4gaiA8IGkgLT4gaW52YWxpZF9hcmcgXCJSZS5yZXBuXCJcbiAgICB8IF8gLT4gKClcbiAgZW5kO1xuICBSZXBlYXQgKHIsIGksIGopXG5sZXQgcmVwIHIgPSByZXBuIHIgMCBOb25lXG5sZXQgcmVwMSByID0gcmVwbiByIDEgTm9uZVxubGV0IG9wdCByID0gcmVwbiByIDAgKFNvbWUgMSlcbmxldCBib2wgPSBCZWdfb2ZfbGluZVxubGV0IGVvbCA9IEVuZF9vZl9saW5lXG5sZXQgYm93ID0gQmVnX29mX3dvcmRcbmxldCBlb3cgPSBFbmRfb2Zfd29yZFxubGV0IHdvcmQgciA9IHNlcSBbYm93OyByOyBlb3ddXG5sZXQgbm90X2JvdW5kYXJ5ID0gTm90X2JvdW5kXG5sZXQgYm9zID0gQmVnX29mX3N0clxubGV0IGVvcyA9IEVuZF9vZl9zdHJcbmxldCB3aG9sZV9zdHJpbmcgciA9IHNlcSBbYm9zOyByOyBlb3NdXG5sZXQgbGVvbCA9IExhc3RfZW5kX29mX2xpbmVcbmxldCBzdGFydCA9IFN0YXJ0XG5sZXQgc3RvcCA9IFN0b3BcbmxldCBsb25nZXN0IHIgPSBTZW0gKGBMb25nZXN0LCByKVxubGV0IHNob3J0ZXN0IHIgPSBTZW0gKGBTaG9ydGVzdCwgcilcbmxldCBmaXJzdCByID0gU2VtIChgRmlyc3QsIHIpXG5sZXQgZ3JlZWR5IHIgPSBTZW1fZ3JlZWR5IChgR3JlZWR5LCByKVxubGV0IG5vbl9ncmVlZHkgciA9IFNlbV9ncmVlZHkgKGBOb25fZ3JlZWR5LCByKVxubGV0IGdyb3VwID9uYW1lIHIgPSBHcm91cCAobmFtZSwgcilcbmxldCBub19ncm91cCByID0gTm9fZ3JvdXAgclxubGV0IG5lc3QgciA9IE5lc3QgclxubGV0IG1hcmsgciA9IGxldCBpID0gUG1hcmsuZ2VuICgpIGluIChpLFBtYXJrIChpLHIpKVxuXG5sZXQgc2V0IHN0ciA9XG4gIGxldCBzID0gcmVmIENzZXQuZW1wdHkgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3RyIC0gMSBkb1xuICAgIHMgOj0gQ3NldC51bmlvbiAoQ3NldC5jc2luZ2xlIHN0ci5baV0pICFzXG4gIGRvbmU7XG4gIFNldCAhc1xuXG5sZXQgcmcgYyBjJyA9IFNldCAoY3NlcSBjIGMnKVxuXG5sZXQgaW50ZXIgbCA9XG4gIGxldCByID0gSW50ZXJzZWN0aW9uIGwgaW5cbiAgaWYgaXNfY2hhcnNldCByIHRoZW5cbiAgICByXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZyBcIlJlLmludGVyXCJcblxubGV0IGNvbXBsIGwgPVxuICBsZXQgciA9IENvbXBsZW1lbnQgbCBpblxuICBpZiBpc19jaGFyc2V0IHIgdGhlblxuICAgIHJcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuY29tcGxcIlxuXG5sZXQgZGlmZiByIHInID1cbiAgbGV0IHInJyA9IERpZmZlcmVuY2UgKHIsIHInKSBpblxuICBpZiBpc19jaGFyc2V0IHInJyB0aGVuXG4gICAgcicnXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZyBcIlJlLmRpZmZcIlxuXG5sZXQgYW55ID0gU2V0IENzZXQuY2FueVxubGV0IG5vdG5sID0gU2V0IChDc2V0LmRpZmYgQ3NldC5jYW55IChDc2V0LmNzaW5nbGUgJ1xcbicpKVxuXG5sZXQgbG93ZXIgPSBhbHQgW3JnICdhJyAneic7IGNoYXIgJ1xcMTgxJzsgcmcgJ1xcMjIzJyAnXFwyNDYnOyByZyAnXFwyNDgnICdcXDI1NSddXG5sZXQgdXBwZXIgPSBhbHQgW3JnICdBJyAnWic7IHJnICdcXDE5MicgJ1xcMjE0JzsgcmcgJ1xcMjE2JyAnXFwyMjInXVxubGV0IGFscGhhID0gYWx0IFtsb3dlcjsgdXBwZXI7IGNoYXIgJ1xcMTcwJzsgY2hhciAnXFwxODYnXVxubGV0IGRpZ2l0ID0gcmcgJzAnICc5J1xubGV0IGFsbnVtID0gYWx0IFthbHBoYTsgZGlnaXRdXG5sZXQgd29yZGMgPSBhbHQgW2FsbnVtOyBjaGFyICdfJ11cbmxldCBhc2NpaSA9IHJnICdcXDAwMCcgJ1xcMTI3J1xubGV0IGJsYW5rID0gc2V0IFwiXFx0IFwiXG5sZXQgY250cmwgPSBhbHQgW3JnICdcXDAwMCcgJ1xcMDMxJzsgcmcgJ1xcMTI3JyAnXFwxNTknXVxubGV0IGdyYXBoID0gYWx0IFtyZyAnXFwwMzMnICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMjU1J11cbmxldCBwcmludCA9IGFsdCBbcmcgJ1xcMDMyJyAnXFwxMjYnOyByZyAnXFwxNjAnICdcXDI1NSddXG5sZXQgcHVuY3QgPVxuICBhbHQgW3JnICdcXDAzMycgJ1xcMDQ3JzsgcmcgJ1xcMDU4JyAnXFwwNjQnOyByZyAnXFwwOTEnICdcXDA5Nic7XG4gICAgICAgcmcgJ1xcMTIzJyAnXFwxMjYnOyByZyAnXFwxNjAnICdcXDE2OSc7IHJnICdcXDE3MScgJ1xcMTgwJztcbiAgICAgICByZyAnXFwxODInICdcXDE4NSc7IHJnICdcXDE4NycgJ1xcMTkxJzsgY2hhciAnXFwyMTUnOyBjaGFyICdcXDI0NyddXG5sZXQgc3BhY2UgPSBhbHQgW2NoYXIgJyAnOyByZyAnXFwwMDknICdcXDAxMyddXG5sZXQgeGRpZ2l0ID0gYWx0IFtkaWdpdDsgcmcgJ2EnICdmJzsgcmcgJ0EnICdGJ11cblxubGV0IGNhc2UgciA9IENhc2UgclxubGV0IG5vX2Nhc2UgciA9IE5vX2Nhc2UgclxuXG4oKioqKilcblxubGV0IGNvbXBpbGUgciA9XG4gIGNvbXBpbGVfMSAoXG4gICAgaWYgYW5jaG9yZWQgciB0aGVuXG4gICAgICBncm91cCByXG4gICAgZWxzZVxuICAgICAgc2VxIFtzaG9ydGVzdCAocmVwIGFueSk7IGdyb3VwIHJdXG4gIClcblxubGV0IGV4ZWNfaW50ZXJuYWwgbmFtZSA/KHBvcz0wKSA/KGxlbiA9IC0xKSB+cGFydGlhbCB+Z3JvdXBzIHJlIHMgPVxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IC0xIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgbmFtZTtcbiAgbWF0Y2hfc3RyIH5ncm91cHMgfnBhcnRpYWwgcmUgcyB+cG9zIH5sZW5cblxubGV0IGV4ZWMgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIFwiUmUuZXhlY1wiID9wb3MgP2xlbiB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgcyB3aXRoXG4gICAgTWF0Y2ggc3Vic3RyIC0+IHN1YnN0clxuICB8IF8gICAgICAgICAgICAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGV4ZWNfb3B0ID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCBcIlJlLmV4ZWNfb3B0XCIgP3BvcyA/bGVuIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZVxuICAgICAgICAgIHJlIHMgd2l0aFxuICAgIE1hdGNoIHN1YnN0ciAtPiBTb21lIHN1YnN0clxuICB8IF8gICAgICAgICAgICAtPiBOb25lXG5cbmxldCBleGVjcCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3VwczpmYWxzZSB+cGFydGlhbDpmYWxzZSBcIlJlLmV4ZWNwXCIgP3BvcyA/bGVuIHJlIHMgd2l0aFxuICAgIE1hdGNoIF9zdWJzdHIgLT4gdHJ1ZVxuICB8IF8gICAgICAgICAgICAgLT4gZmFsc2VcblxubGV0IGV4ZWNfcGFydGlhbCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3VwczpmYWxzZSB+cGFydGlhbDp0cnVlIFwiUmUuZXhlY19wYXJ0aWFsXCJcbiAgICAgICAgICA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggXyAtPiBgRnVsbFxuICB8IFJ1bm5pbmcgXyAtPiBgUGFydGlhbFxuICB8IEZhaWxlZCAgLT4gYE1pc21hdGNoXG5cbmxldCBleGVjX3BhcnRpYWxfZGV0YWlsZWQgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDp0cnVlIFwiUmUuZXhlY19wYXJ0aWFsX2RldGFpbGVkXCJcbiAgICAgICAgICA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggZ3JvdXAgLT4gYEZ1bGwgZ3JvdXBcbiAgfCBSdW5uaW5nIHsgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSB9IC0+IGBQYXJ0aWFsIG5vX21hdGNoX3N0YXJ0c19iZWZvcmVcbiAgfCBGYWlsZWQgIC0+IGBNaXNtYXRjaFxuXG5tb2R1bGUgTWFyayA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9IFBtYXJrLnRcblxuICBsZXQgdGVzdCAoZyA6IEdyb3VwLnQpIHAgPVxuICAgIFBtYXJrLlNldC5tZW0gcCBnLnBtYXJrc1xuXG4gIGxldCBhbGwgKGcgOiBHcm91cC50KSA9IGcucG1hcmtzXG5cbiAgbW9kdWxlIFNldCA9IFBtYXJrLlNldFxuXG4gIGxldCBlcXVhbCA9IFBtYXJrLmVxdWFsXG5cbiAgbGV0IGNvbXBhcmUgPSBQbWFyay5jb21wYXJlXG5cbmVuZFxuXG50eXBlIHNwbGl0X3Rva2VuID1cbiAgWyBgVGV4dCBvZiBzdHJpbmdcbiAgfCBgRGVsaW0gb2YgR3JvdXAudFxuICBdXG5cbm1vZHVsZSBSc2VxID0gc3RydWN0XG4gIGxldCBhbGwgPyhwb3M9MCkgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUuYWxsXCI7XG4gICAgKCogaW5kZXggb2YgdGhlIGZpcnN0IHBvc2l0aW9uIHdlIGRvIG5vdCBjb25zaWRlci5cbiAgICAgICAhcG9zIDwgbGltaXQgaXMgYW4gaW52YXJpYW50ICopXG4gICAgbGV0IGxpbWl0ID0gbWF0Y2ggbGVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgIGlmIGw8MCB8fCBwb3MrbCA+IFN0cmluZy5sZW5ndGggcyB0aGVuIGludmFsaWRfYXJnIFwiUmUuYWxsXCI7XG4gICAgICAgIHBvcytsXG4gICAgaW5cbiAgICAoKiBpdGVyYXRlIG9uIG1hdGNoZXMuIFdoZW4gYSBtYXRjaCBpcyBmb3VuZCwgc2VhcmNoIGZvciB0aGUgbmV4dFxuICAgICAgIG9uZSBqdXN0IGFmdGVyIGl0cyBlbmQgKilcbiAgICBsZXQgcmVjIGF1eCBwb3MgKCkgPVxuICAgICAgaWYgcG9zID49IGxpbWl0XG4gICAgICB0aGVuIFNlcS5OaWwgKCogbm8gbW9yZSBtYXRjaGVzICopXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIG1hdGNoX3N0ciB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgc1xuICAgICAgICAgICAgICAgIH5wb3MgfmxlbjoobGltaXQgLSBwb3MpIHdpdGhcbiAgICAgICAgfCBNYXRjaCBzdWJzdHIgLT5cbiAgICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICAgbGV0IHBvcyA9IGlmIHAxPXAyIHRoZW4gcDIrMSBlbHNlIHAyIGluXG4gICAgICAgICAgU2VxLkNvbnMgKHN1YnN0ciwgYXV4IHBvcylcbiAgICAgICAgfCBSdW5uaW5nIF9cbiAgICAgICAgfCBGYWlsZWQgLT4gU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IHBvc1xuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgYWxsID9wb3MgP2xlbiByZSBzXG4gICAgfD4gU2VxLm1hcCAoZnVuIHN1YiAtPiBHcm91cC5nZXQgc3ViIDApXG5cbiAgbGV0IHNwbGl0X2Z1bGwgPyhwb3M9MCkgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUuc3BsaXRcIjtcbiAgICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5zcGxpdFwiO1xuICAgICAgICBwb3MrbFxuICAgIGluXG4gICAgKCogaTogc3RhcnQgb2YgZGVsaW1pdGVkIHN0cmluZ1xuICAgICAgIHBvczogZmlyc3QgcG9zaXRpb24gYWZ0ZXIgbGFzdCBtYXRjaCBvZiBbcmVdXG4gICAgICAgbGltaXQ6IGZpcnN0IGluZGV4IHdlIGlnbm9yZSAoIXBvcyA8IGxpbWl0IGlzIGFuIGludmFyaWFudCkgKilcbiAgICBsZXQgcG9zMCA9IHBvcyBpblxuICAgIGxldCByZWMgYXV4IHN0YXRlIGkgcG9zICgpID0gbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgfCBgSWRsZSB3aGVuIHBvcyA+PSBsaW1pdCAtPlxuICAgICAgICBpZiBpIDwgbGltaXQgdGhlbiAoXG4gICAgICAgICAgbGV0IHN1YiA9IFN0cmluZy5zdWIgcyBpIChsaW1pdCAtIGkpIGluXG4gICAgICAgICAgU2VxLkNvbnMgKGBUZXh0IHN1YiwgYXV4IHN0YXRlIChpKzEpIHBvcylcbiAgICAgICAgKSBlbHNlIFNlcS5OaWxcbiAgICAgIHwgYElkbGUgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIH5wb3NcbiAgICAgICAgICAgICAgICAgICAgICB+bGVuOihsaW1pdCAtIHBvcykgd2l0aFxuICAgICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgICBsZXQgcG9zID0gaWYgcDE9cDIgdGhlbiBwMisxIGVsc2UgcDIgaW5cbiAgICAgICAgICBsZXQgb2xkX2kgPSBpIGluXG4gICAgICAgICAgbGV0IGkgPSBwMiBpblxuICAgICAgICAgIGlmIHAxID4gcG9zMCB0aGVuIChcbiAgICAgICAgICAgICgqIHN0cmluZyBkb2VzIG5vdCBzdGFydCBieSBhIGRlbGltaXRlciAqKVxuICAgICAgICAgICAgbGV0IHRleHQgPSBTdHJpbmcuc3ViIHMgb2xkX2kgKHAxIC0gb2xkX2kpIGluXG4gICAgICAgICAgICBsZXQgc3RhdGUgPSBgWWllbGQgKGBEZWxpbSBzdWJzdHIpIGluXG4gICAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgdGV4dCwgYXV4IHN0YXRlIGkgcG9zKVxuICAgICAgICAgICkgZWxzZSBTZXEuQ29ucyAoYERlbGltIHN1YnN0ciwgYXV4IHN0YXRlIGkgcG9zKVxuICAgICAgICB8IFJ1bm5pbmcgXyAtPiBTZXEuTmlsXG4gICAgICAgIHwgRmFpbGVkIC0+XG4gICAgICAgICAgaWYgaSA8IGxpbWl0XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgdGV4dCA9IFN0cmluZy5zdWIgcyBpIChsaW1pdCAtIGkpIGluXG4gICAgICAgICAgICAoKiB5aWVsZCBsYXN0IHN0cmluZyAqKVxuICAgICAgICAgICAgU2VxLkNvbnMgKGBUZXh0IHRleHQsIGF1eCBzdGF0ZSBsaW1pdCBwb3MpXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIGVuZFxuICAgICAgfCBgWWllbGQgeCAtPlxuICAgICAgICBTZXEuQ29ucyAoeCwgYXV4IGBJZGxlIGkgcG9zKVxuICAgIGluXG4gICAgYXV4IGBJZGxlIHBvcyBwb3NcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBsZXQgc2VxID0gc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyBpblxuICAgIGxldCByZWMgZmlsdGVyIHNlcSAoKSA9IG1hdGNoIHNlcSAoKSAgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IFNlcS5OaWxcbiAgICAgIHwgU2VxLkNvbnMgKGBEZWxpbSBfLCB0bCkgLT4gZmlsdGVyIHRsICgpXG4gICAgICB8IFNlcS5Db25zIChgVGV4dCBzLHRsKSAtPiBTZXEuQ29ucyAocywgZmlsdGVyIHRsKVxuICAgIGluIGZpbHRlciBzZXFcbmVuZFxuXG5tb2R1bGUgUmxpc3QgPSBzdHJ1Y3RcbiAgbGV0IGxpc3Rfb2Zfc2VxIChzOidhIFNlcS50KSA6ICdhIGxpc3QgPVxuICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBsIHggLT4geCA6OiBsKSBbXSBzIHw+IExpc3QucmV2XG5cbiAgbGV0IGFsbCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuYWxsID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLm1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuc3BsaXQgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcbmVuZFxuXG5tb2R1bGUgR2VuID0gc3RydWN0XG4gIHR5cGUgJ2EgZ2VuID0gdW5pdCAtPiAnYSBvcHRpb25cbiAgbGV0IGdlbl9vZl9zZXEgKHM6J2EgU2VxLnQpIDogJ2EgZ2VuID1cbiAgICBsZXQgciA9IHJlZiBzIGluXG4gICAgZnVuICgpIC0+IG1hdGNoICFyICgpIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBOb25lXG4gICAgICB8IFNlcS5Db25zICh4LCB0bCkgLT5cbiAgICAgICAgciA6PSB0bDtcbiAgICAgICAgU29tZSB4XG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzIDogXyBnZW4gPVxuICAgIFJzZXEuc3BsaXQgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIDogXyBnZW4gPVxuICAgIFJzZXEuc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IGFsbCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuYWxsID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA9IFJzZXEubWF0Y2hlcyA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5lbmRcblxubGV0IHJlcGxhY2UgPyhwb3M9MCkgP2xlbiA/KGFsbD10cnVlKSByZSB+ZiBzID1cbiAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUucmVwbGFjZVwiO1xuICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICB8IFNvbWUgbCAtPlxuICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBsYWNlXCI7XG4gICAgICBwb3MrbFxuICBpblxuICAoKiBidWZmZXIgaW50byB3aGljaCB3ZSB3cml0ZSB0aGUgcmVzdWx0ICopXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMpIGluXG4gICgqIGl0ZXJhdGUgb24gbWF0Y2hlZCBzdWJzdHJpbmdzLiAqKVxuICBsZXQgcmVjIGl0ZXIgcG9zID1cbiAgICBpZiBwb3MgPCBsaW1pdFxuICAgIHRoZW5cbiAgICAgIG1hdGNoIG1hdGNoX3N0ciB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgcyB+cG9zIH5sZW46KGxpbWl0LXBvcykgd2l0aFxuICAgICAgfCBNYXRjaCBzdWJzdHIgLT5cbiAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAoKiBhZGQgc3RyaW5nIGJldHdlZW4gcHJldmlvdXMgbWF0Y2ggYW5kIGN1cnJlbnQgbWF0Y2ggKilcbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcG9zIChwMS1wb3MpO1xuICAgICAgICAoKiB3aGF0IHNob3VsZCB3ZSByZXBsYWNlIHRoZSBtYXRjaGVkIGdyb3VwIHdpdGg/ICopXG4gICAgICAgIGxldCByZXBsYWNpbmcgPSBmIHN1YnN0ciBpblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgcmVwbGFjaW5nO1xuICAgICAgICBpZiBhbGwgdGhlblxuICAgICAgICAgICgqIGlmIHdlIG1hdGNoZWQgYSBub24tY2hhciBlLmcuIF4gd2UgbXVzdCBtYW51YWxseSBhZHZhbmNlIGJ5IDEgKilcbiAgICAgICAgICBpdGVyIChcbiAgICAgICAgICAgIGlmIHAxPXAyIHRoZW4gKFxuICAgICAgICAgICAgICAoKiBhIG5vbiBjaGFyIGNvdWxkIGJlIHBhc3QgdGhlIGVuZCBvZiBzdHJpbmcuIGUuZy4gJCAqKVxuICAgICAgICAgICAgICBpZiBwMiA8IGxpbWl0IHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBzLltwMl07XG4gICAgICAgICAgICAgIHAyKzFcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBwMilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHAyIChsaW1pdC1wMilcbiAgICAgIHwgUnVubmluZyBfIC0+ICgpXG4gICAgICB8IEZhaWxlZCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwb3MgKGxpbWl0LXBvcylcbiAgaW5cbiAgaXRlciBwb3M7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IHJlcGxhY2Vfc3RyaW5nID9wb3MgP2xlbiA/YWxsIHJlIH5ieSBzID1cbiAgcmVwbGFjZSA/cG9zID9sZW4gP2FsbCByZSBzIH5mOihmdW4gXyAtPiBieSlcblxubGV0IHdpdG5lc3MgdCA9XG4gIGxldCByZWMgd2l0bmVzcyA9IGZ1bmN0aW9uXG4gICAgfCBTZXQgYyAtPiBTdHJpbmcubWFrZSAxIChDaGFyLmNociAoQ3NldC5waWNrIGMpKVxuICAgIHwgU2VxdWVuY2UgeHMgLT4gU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0Lm1hcCB3aXRuZXNzIHhzKVxuICAgIHwgQWx0ZXJuYXRpdmUgKHggOjogXykgLT4gd2l0bmVzcyB4XG4gICAgfCBBbHRlcm5hdGl2ZSBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFJlcGVhdCAociwgZnJvbSwgX3RvKSAtPlxuICAgICAgbGV0IHcgPSB3aXRuZXNzIHIgaW5cbiAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCB3ICogZnJvbSkgaW5cbiAgICAgIGZvciBfaT0xIHRvIGZyb20gZG9cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiB3XG4gICAgICBkb25lO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICB8IE5vX2Nhc2UgciAtPiB3aXRuZXNzIHJcbiAgICB8IEludGVyc2VjdGlvbiBfXG4gICAgfCBDb21wbGVtZW50IF9cbiAgICB8IERpZmZlcmVuY2UgKF8sIF8pIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgR3JvdXAgKF8sIHIpXG4gICAgfCBOb19ncm91cCByXG4gICAgfCBOZXN0IHJcbiAgICB8IFNlbSAoXywgcilcbiAgICB8IFBtYXJrIChfLCByKVxuICAgIHwgQ2FzZSByXG4gICAgfCBTZW1fZ3JlZWR5IChfLCByKSAtPiB3aXRuZXNzIHJcbiAgICB8IEJlZ19vZl9saW5lXG4gICAgfCBFbmRfb2ZfbGluZVxuICAgIHwgQmVnX29mX3dvcmRcbiAgICB8IEVuZF9vZl93b3JkXG4gICAgfCBOb3RfYm91bmRcbiAgICB8IEJlZ19vZl9zdHJcbiAgICB8IExhc3RfZW5kX29mX2xpbmVcbiAgICB8IFN0YXJ0XG4gICAgfCBTdG9wXG4gICAgfCBFbmRfb2Zfc3RyIC0+IFwiXCIgaW5cbiAgd2l0bmVzcyAoaGFuZGxlX2Nhc2UgZmFsc2UgdClcblxubW9kdWxlIFNlcSA9IFJzZXFcbm1vZHVsZSBMaXN0ID0gUmxpc3Rcbm1vZHVsZSBHcm91cCA9IEdyb3VwXG5cbigqKiB7MiBEZXByZWNhdGVkIGZ1bmN0aW9uc30gKilcblxubGV0IHNwbGl0X2Z1bGxfc2VxID0gU2VxLnNwbGl0X2Z1bGxcbmxldCBzcGxpdF9zZXEgPSBTZXEuc3BsaXRcbmxldCBtYXRjaGVzX3NlcSA9IFNlcS5tYXRjaGVzXG5sZXQgYWxsX3NlcSA9IFNlcS5hbGxcblxudHlwZSAnYSBnZW4gICAgICAgID0gJ2EgR2VuLmdlblxubGV0IGFsbF9nZW4gICAgICAgID0gR2VuLmFsbFxubGV0IG1hdGNoZXNfZ2VuICAgID0gR2VuLm1hdGNoZXNcbmxldCBzcGxpdF9nZW4gICAgICA9IEdlbi5zcGxpdFxubGV0IHNwbGl0X2Z1bGxfZ2VuID0gR2VuLnNwbGl0X2Z1bGxcblxuXG50eXBlIHN1YnN0cmluZ3MgPSBHcm91cC50XG5cbmxldCBnZXQgPSBHcm91cC5nZXRcbmxldCBnZXRfb2ZzID0gR3JvdXAub2Zmc2V0XG5sZXQgZ2V0X2FsbCA9IEdyb3VwLmFsbFxubGV0IGdldF9hbGxfb2ZzID0gR3JvdXAuYWxsX29mZnNldFxubGV0IHRlc3QgPSBHcm91cC50ZXN0XG5cbnR5cGUgbWFya2lkID0gTWFyay50XG5cbmxldCBtYXJrZWQgPSBNYXJrLnRlc3RcbmxldCBtYXJrX3NldCA9IE1hcmsuYWxsXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKlxuSW5mb3JtYXRpb24gYWJvdXQgdGhlIHByZXZpb3VzIGNoYXJhY3Rlcjpcbi0gZG9lcyBub3QgZXhpc3RzXG4tIGlzIGEgbGV0dGVyXG4tIGlzIG5vdCBhIGxldHRlclxuLSBpcyBhIG5ld2xpbmVcbi0gaXMgbGFzdCBuZXdsaW5lXG5cbkJlZ2lubmluZyBvZiB3b3JkOlxuLSBwcmV2aW91cyBpcyBub3QgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3Rcbi0gY3VycmVudCBpcyBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2Ygd29yZDpcbi0gcHJldmlvdXMgaXMgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3Rcbi0gY3VycmVudCBpcyBub3QgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3RcblxuQmVnaW5uaW5nIG9mIGxpbmU6XG4tIHByZXZpb3VzIGlzIGEgbmV3bGluZSBvciBkb2VzIG5vdCBleGlzdFxuXG5CZWdpbm5pbmcgb2YgYnVmZmVyOlxuLSBwcmV2aW91cyBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2YgYnVmZmVyXG4tIGN1cnJlbnQgZG9lcyBub3QgZXhpc3RcblxuRW5kIG9mIGxpbmVcbi0gY3VycmVudCBpcyBhIG5ld2xpbmUgb3IgZG9lcyBub3QgZXhpc3RcbiopXG5cbigqXG5SZXA6IGUgPSBULGUgfCAoKVxuICAtIHNlbWFudGljcyBvZiB0aGUgY29tbWEgKHNob3J0ZXN0L2xvbmdlc3QvZmlyc3QpXG4gIC0gc2VtYW50aWNzIG9mIHRoZSB1bmlvbiAoZ3JlZWR5L25vbi1ncmVlZHkpXG5cbkJvdW5kZWQgcmVwZXRpdGlvblxuICBhezAsM30gPSAoYSwoYSxhPyk/KT9cbiopXG5cbnR5cGUgZ3JvdXBzID0gR3JvdXAudFxuXG5pbmNsdWRlIFJsaXN0XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWRcblxubGV0IHBhcnNlIHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCB0ZXN0MiBjIGMnID0gIWkgKyAxIDwgbCAmJiBzLlshaV0gPSBjICYmIHMuWyFpICsgMV0gPSBjJyBpblxuICBsZXQgYWNjZXB0IGMgPSBsZXQgciA9IHRlc3QgYyBpbiBpZiByIHRoZW4gaW5jciBpOyByIGluXG4gIGxldCBhY2NlcHQyIGMgYycgPSBsZXQgciA9IHRlc3QyIGMgYycgaW4gaWYgciB0aGVuIGkgOj0gIWkgKyAyOyByIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0MiAnXFxcXCcgJ3wnIHRoZW4gcmVnZXhwJyAoUmUuYWx0IFtsZWZ0OyBicmFuY2ggKCldKSBlbHNlIGxlZnRcbiAgYW5kIGJyYW5jaCAoKSA9IGJyYW5jaCcgW11cbiAgYW5kIGJyYW5jaCcgbGVmdCA9XG4gICAgaWYgZW9zICgpIHx8IHRlc3QyICdcXFxcJyAnfCcgfHwgdGVzdDIgJ1xcXFwnICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIFJlLnJlcCByIGVsc2VcbiAgICBpZiBhY2NlcHQgJysnIHRoZW4gUmUucmVwMSByIGVsc2VcbiAgICBpZiBhY2NlcHQgJz8nIHRoZW4gUmUub3B0IHIgZWxzZVxuICAgIHJcbiAgYW5kIGF0b20gKCkgPVxuICAgIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgUmUubm90bmxcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIFJlLmJvbFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgUmUuZW9sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuY29tcGwgKGJyYWNrZXQgW10pXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdDIgJ1xcXFwnICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgUmUuZ3JvdXAgclxuICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdgJyB0aGVuXG4gICAgICAgIFJlLmJvc1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJ1xcJycgdGhlblxuICAgICAgICBSZS5lb3NcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc9JyB0aGVuXG4gICAgICAgIFJlLnN0YXJ0XG4gICAgICBlbHNlIGlmIGFjY2VwdCAnYicgdGhlblxuICAgICAgICBSZS5hbHQgW1JlLmJvdzsgUmUuZW93XVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJ0InIHRoZW5cbiAgICAgICAgUmUubm90X2JvdW5kYXJ5XG4gICAgICBlbHNlIGlmIGFjY2VwdCAnPCcgdGhlblxuICAgICAgICBSZS5ib3dcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc+JyB0aGVuXG4gICAgICAgIFJlLmVvd1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJ3cnIHRoZW5cbiAgICAgICAgUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnVycgdGhlblxuICAgICAgICBSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgICAnKicgfCAnKycgfCAnPycgfCAnWycgfCAnXScgfCAnLicgfCAnXicgfCAnJCcgfCAnXFxcXCcgYXMgYyAtPlxuICAgICAgICAgICAgUmUuY2hhciBjXG4gICAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICBlbmRcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnKicgfCAnKycgfCAnPycgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgICAgICAgIGMgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGdldCAoKVxuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxubGV0IHJlID8oY2FzZSA9IHRydWUpIHMgPSBsZXQgciA9IHBhcnNlIHMgaW4gaWYgY2FzZSB0aGVuIHIgZWxzZSBSZS5ub19jYXNlIHJcblxubGV0IGNvbXBpbGUgPSBSZS5jb21waWxlXG5sZXQgY29tcGlsZV9wYXQgPyhjYXNlID0gdHJ1ZSkgcyA9IGNvbXBpbGUgKHJlIH5jYXNlIHMpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICopXG4oKiAgbGlua2luZyBleGNlcHRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZGlmaWVkIGJ5IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mciBmb3IgaW50ZWdyYXRpb24gaW4gUkUgKilcblxuKCogJElkOiByZV9zdHIubWwsdiAxLjMgMjAwMi8wNy8wMyAxNTo0Nzo1NCB2b3VpbGxvbiBFeHAgJCAqKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbnR5cGUgcmVnZXhwID1cbiAgeyByZTogUmUudFxuICA7IG10Y2g6IFJlLnJlIExhenkudFxuICA7IHNyY2g6IFJlLnJlIExhenkudCB9XG5cbmxldCBjb21waWxlX3JlZ2V4cCBzIGMgPVxuICBsZXQgcmUgPSBFbWFjcy5yZSB+Y2FzZToobm90IGMpIHMgaW5cbiAgeyByZVxuICA7IG10Y2ggPSBsYXp5IChSZS5jb21waWxlIChSZS5zZXEgW1JlLnN0YXJ0OyByZV0pKVxuICA7IHNyY2ggPSBsYXp5IChSZS5jb21waWxlIHJlKSB9XG5cbmxldCBzdGF0ZSA9IHJlZiBOb25lXG5cbmxldCBzdHJpbmdfbWF0Y2ggcmUgcyBwID1cbiAgdHJ5XG4gICAgc3RhdGUgOj0gU29tZSAoUmUuZXhlYyB+cG9zOnAgKExhenkuZm9yY2UgcmUubXRjaCkgcyk7XG4gICAgdHJ1ZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHN0YXRlIDo9IE5vbmU7XG4gICAgZmFsc2VcblxubGV0IHN0cmluZ19wYXJ0aWFsX21hdGNoIHJlIHMgcCA9XG4gIG1hdGNoXG4gICAgUmUuZXhlY19wYXJ0aWFsIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzXG4gIHdpdGhcbiAgICBgRnVsbCAgICAgLT4gc3RyaW5nX21hdGNoIHJlIHMgcFxuICB8IGBQYXJ0aWFsICAtPiB0cnVlXG4gIHwgYE1pc21hdGNoIC0+IGZhbHNlXG5cbmxldCBzZWFyY2hfZm9yd2FyZCByZSBzIHAgPVxuICB0cnlcbiAgICBsZXQgcmVzID0gUmUuZXhlYyB+cG9zOnAgKExhenkuZm9yY2UgcmUuc3JjaCkgcyBpblxuICAgIHN0YXRlIDo9IFNvbWUgcmVzO1xuICAgIGZzdCAoUmUuR3JvdXAub2Zmc2V0IHJlcyAwKVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHN0YXRlIDo9IE5vbmU7XG4gICAgcmFpc2UgTm90X2ZvdW5kXG5cbmxldCByZWMgc2VhcmNoX2JhY2t3YXJkIHJlIHMgcCA9XG4gIHRyeVxuICAgIGxldCByZXMgPSBSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzIGluXG4gICAgc3RhdGUgOj0gU29tZSByZXM7XG4gICAgcFxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHN0YXRlIDo9IE5vbmU7XG4gICAgaWYgcCA9IDAgdGhlblxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgZWxzZVxuICAgICAgc2VhcmNoX2JhY2t3YXJkIHJlIHMgKHAgLSAxKVxuXG5sZXQgdmFsaWRfZ3JvdXAgbiA9XG4gIG4gPj0gMCAmJiBuIDwgMTAgJiYgKFxuICAgIG1hdGNoICFzdGF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIG0gLT4gbiA8IFJlLkdyb3VwLm5iX2dyb3VwcyBtXG4gIClcblxubGV0IG9mZnNldF9ncm91cCBpID1cbiAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgfCBTb21lIG0gLT4gUmUuR3JvdXAub2Zmc2V0IG0gaVxuICB8IE5vbmUgICAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGdyb3VwX2xlbiBpID1cbiAgdHJ5XG4gICAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCBpIGluXG4gICAgZSAtIGJcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAwXG5cbmxldCByZWMgcmVwbF9sZW5ndGggcmVwbCBwIHEgbGVuID1cbiAgaWYgcCA8IGxlbiB0aGVuIGJlZ2luXG4gICAgaWYgcmVwbC5bcF0gPD4gJ1xcXFwnIHRoZW5cbiAgICAgIHJlcGxfbGVuZ3RoIHJlcGwgKHAgKyAxKSAocSArIDEpIGxlblxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCBwID0gcCArIDEgaW5cbiAgICAgIGlmIHAgPSBsZW4gdGhlbiBmYWlsd2l0aCBcIlN0ci5yZXBsYWNlOiBpbGxlZ2FsIGJhY2tzbGFzaCBzZXF1ZW5jZVwiO1xuICAgICAgbGV0IHEgPVxuICAgICAgICBtYXRjaCByZXBsLltwXSB3aXRoXG4gICAgICAgIHwgJ1xcXFwnIC0+IHEgKyAxXG4gICAgICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+IHEgKyBncm91cF9sZW4gKENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJylcbiAgICAgICAgfCBfIC0+IHEgKyAyIGluXG4gICAgICByZXBsX2xlbmd0aCByZXBsIChwICsgMSkgcSBsZW5cbiAgICBlbmRcbiAgZW5kIGVsc2VcbiAgICBxXG5cbmxldCByZWMgcmVwbGFjZSBvcmlnIHJlcGwgcCByZXMgcSBsZW4gPVxuICBpZiBwIDwgbGVuIHRoZW4gYmVnaW5cbiAgICBsZXQgYyA9IHJlcGwuW3BdIGluXG4gICAgaWYgYyA8PiAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgQnl0ZXMuc2V0IHJlcyBxIGM7XG4gICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDEpIHJlcyAocSArIDEpIGxlblxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBtYXRjaCByZXBsLltwICsgMV0gd2l0aFxuICAgICAgICAnXFxcXCcgLT5cbiAgICAgICAgQnl0ZXMuc2V0IHJlcyBxICdcXFxcJztcbiAgICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAyKSByZXMgKHEgKyAxKSBsZW5cbiAgICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgICAgIGxldCBkID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCAoYiwgZSkgPSBvZmZzZXRfZ3JvdXAgKENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJykgaW5cbiAgICAgICAgICAgIGxldCBkID0gZSAtIGIgaW5cbiAgICAgICAgICAgIGlmIGQgPiAwIHRoZW4gU3RyaW5nLmJsaXQgb3JpZyBiIHJlcyBxIGQ7XG4gICAgICAgICAgICBkXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIDBcbiAgICAgICAgaW5cbiAgICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAyKSByZXMgKHEgKyBkKSBsZW5cbiAgICAgIHwgYyAtPlxuICAgICAgICBCeXRlcy5zZXQgcmVzIHEgJ1xcXFwnO1xuICAgICAgICBCeXRlcy5zZXQgcmVzIChxICsgMSkgYztcbiAgICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAyKSByZXMgKHEgKyAyKSBsZW5cbiAgICBlbmRcbiAgZW5kXG5cbmxldCByZXBsYWNlbWVudF90ZXh0IHJlcGwgb3JpZyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHJlcGwgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAocmVwbF9sZW5ndGggcmVwbCAwIDAgbGVuKSBpblxuICByZXBsYWNlIG9yaWcgcmVwbCAwIHJlcyAwIChTdHJpbmcubGVuZ3RoIHJlcGwpO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKDIgKiBsZW4pIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgJ1snIHwgJ10nIHwgJyonIHwgJy4nIHwgJ1xcXFwnIHwgJz8nIHwgJysnIHwgJ14nIHwgJyQnIGFzIGMgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1xcXFwnO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICBkb25lO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbmxldCBzdHJpbmdfYmVmb3JlIHMgbiA9IFN0cmluZy5zdWIgcyAwIG5cblxubGV0IHN0cmluZ19hZnRlciBzIG4gPSBTdHJpbmcuc3ViIHMgbiAoU3RyaW5nLmxlbmd0aCBzIC0gbilcblxubGV0IGZpcnN0X2NoYXJzIHMgbiA9IFN0cmluZy5zdWIgcyAwIG5cblxubGV0IGxhc3RfY2hhcnMgcyBuID0gU3RyaW5nLnN1YiBzIChTdHJpbmcubGVuZ3RoIHMgLSBuKSBuXG5cbmxldCByZWdleHAgZSA9IGNvbXBpbGVfcmVnZXhwIGUgZmFsc2VcblxubGV0IHJlZ2V4cF9jYXNlX2ZvbGQgZSA9IGNvbXBpbGVfcmVnZXhwIGUgdHJ1ZVxuXG5sZXQgcmVnZXhwX3N0cmluZyBzID0gY29tcGlsZV9yZWdleHAgKHF1b3RlIHMpIGZhbHNlXG5cbmxldCByZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCBzID0gY29tcGlsZV9yZWdleHAgKHF1b3RlIHMpIHRydWVcblxubGV0IGdyb3VwX2JlZ2lubmluZyBuID1cbiAgaWYgbm90ICh2YWxpZF9ncm91cCBuKSB0aGVuIGludmFsaWRfYXJnIFwiU3RyLmdyb3VwX2JlZ2lubmluZ1wiO1xuICBsZXQgcG9zID0gZnN0IChvZmZzZXRfZ3JvdXAgbikgaW5cbiAgaWYgcG9zID0gLTEgdGhlblxuICAgIHJhaXNlIE5vdF9mb3VuZFxuICBlbHNlXG4gICAgcG9zXG5cbmxldCBncm91cF9lbmQgbiA9XG4gIGlmIG5vdCAodmFsaWRfZ3JvdXAgbikgdGhlbiBpbnZhbGlkX2FyZyBcIlN0ci5ncm91cF9lbmRcIjtcbiAgbGV0IHBvcyA9IHNuZCAob2Zmc2V0X2dyb3VwIG4pIGluXG4gIGlmIHBvcyA9IC0xIHRoZW5cbiAgICByYWlzZSBOb3RfZm91bmRcbiAgZWxzZVxuICAgIHBvc1xuXG5sZXQgbWF0Y2hlZF9ncm91cCBuIHR4dCA9XG4gIGxldCAoYiwgZSkgPSBvZmZzZXRfZ3JvdXAgbiBpblxuICBTdHJpbmcuc3ViIHR4dCBiIChlIC0gYilcblxubGV0IHJlcGxhY2VfbWF0Y2hlZCByZXBsIG1hdGNoZWQgPSByZXBsYWNlbWVudF90ZXh0IHJlcGwgbWF0Y2hlZFxuXG5sZXQgbWF0Y2hfYmVnaW5uaW5nICgpID0gZ3JvdXBfYmVnaW5uaW5nIDBcbmFuZCBtYXRjaF9lbmQgKCkgPSBncm91cF9lbmQgMFxuYW5kIG1hdGNoZWRfc3RyaW5nIHR4dCA9IG1hdGNoZWRfZ3JvdXAgMCB0eHRcblxubGV0IHN1YnN0aXR1dGVfZmlyc3QgZXhwciByZXBsX2Z1biB0ZXh0ID1cbiAgdHJ5XG4gICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkIGV4cHIgdGV4dCAwIGluXG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIFtzdHJpbmdfYmVmb3JlIHRleHQgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgIHJlcGxfZnVuIHRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX2FmdGVyIHRleHQgKG1hdGNoX2VuZCAoKSldXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgdGV4dFxuXG5sZXQgZ2xvYmFsX3N1YnN0aXR1dGUgZXhwciByZXBsX2Z1biB0ZXh0ID1cbiAgbGV0IHJlYyByZXBsYWNlIGFjY3Ugc3RhcnQgbGFzdF93YXNfZW1wdHkgPVxuICAgIGxldCBzdGFydHBvcyA9IGlmIGxhc3Rfd2FzX2VtcHR5IHRoZW4gc3RhcnQgKyAxIGVsc2Ugc3RhcnQgaW5cbiAgICBpZiBzdGFydHBvcyA+IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzZWFyY2hfZm9yd2FyZCBleHByIHRleHQgc3RhcnRwb3Mgd2l0aFxuICAgICAgfCBwb3MgLT5cbiAgICAgICAgbGV0IGVuZF9wb3MgPSBtYXRjaF9lbmQgKCkgaW5cbiAgICAgICAgbGV0IHJlcGxfdGV4dCA9IHJlcGxfZnVuIHRleHQgaW5cbiAgICAgICAgcmVwbGFjZSAocmVwbF90ZXh0IDo6IFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSA6OiBhY2N1KVxuICAgICAgICAgIGVuZF9wb3MgKGVuZF9wb3MgPSBwb3MpXG4gICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gIGluXG4gIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXYgKHJlcGxhY2UgW10gMCBmYWxzZSkpXG5cbmxldCBnbG9iYWxfcmVwbGFjZSBleHByIHJlcGwgdGV4dCA9XG4gIGdsb2JhbF9zdWJzdGl0dXRlIGV4cHIgKHJlcGxhY2VtZW50X3RleHQgcmVwbCkgdGV4dFxuYW5kIHJlcGxhY2VfZmlyc3QgZXhwciByZXBsIHRleHQgPVxuICBzdWJzdGl0dXRlX2ZpcnN0IGV4cHIgKHJlcGxhY2VtZW50X3RleHQgcmVwbCkgdGV4dFxuXG5sZXQgc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgcmUgcyBwID1cbiAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkIHJlIHMgcCBpblxuICBpZiBtYXRjaF9lbmQgKCkgPiBwIHRoZW5cbiAgICBwb3NcbiAgZWxzZSBpZiBwIDwgU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICBzZWFyY2hfZm9yd2FyZCByZSBzIChwICsgMSlcbiAgZWxzZVxuICAgIHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgYm91bmRlZF9zcGxpdCBleHByIHRleHQgbnVtID1cbiAgbGV0IHN0YXJ0ID1cbiAgICBpZiBzdHJpbmdfbWF0Y2ggZXhwciB0ZXh0IDAgdGhlbiBtYXRjaF9lbmQgKCkgZWxzZSAwIGluXG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+PSBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyBleHByIHRleHQgc3RhcnQgaW5cbiAgICAgICAgc3BsaXQgKChTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcy1zdGFydCkpIDo6IGFjY3UpXG4gICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIExpc3QucmV2IChzcGxpdCBbXSBzdGFydCBudW0pXG5cbmxldCBzcGxpdCBleHByIHRleHQgPSBib3VuZGVkX3NwbGl0IGV4cHIgdGV4dCAwXG5cbmxldCBib3VuZGVkX3NwbGl0X2RlbGltIGV4cHIgdGV4dCBudW0gPVxuICBsZXQgcmVjIHNwbGl0IGFjY3Ugc3RhcnQgbiA9XG4gICAgaWYgc3RhcnQgPiBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyBleHByIHRleHQgc3RhcnQgaW5cbiAgICAgICAgc3BsaXQgKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSA6OiBhY2N1KVxuICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBpZiB0ZXh0ID0gXCJcIiB0aGVuXG4gICAgW11cbiAgZWxzZVxuICAgIExpc3QucmV2IChzcGxpdCBbXSAwIG51bSlcblxubGV0IHNwbGl0X2RlbGltIGV4cHIgdGV4dCA9IGJvdW5kZWRfc3BsaXRfZGVsaW0gZXhwciB0ZXh0IDBcblxudHlwZSBzcGxpdF9yZXN1bHQgPSBUZXh0IG9mIHN0cmluZyB8IERlbGltIG9mIHN0cmluZ1xuXG5sZXQgYm91bmRlZF9mdWxsX3NwbGl0IGV4cHIgdGV4dCBudW0gPVxuICBsZXQgcmVjIHNwbGl0IGFjY3Ugc3RhcnQgbiA9XG4gICAgaWYgc3RhcnQgPj0gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIG4gPSAxIHRoZW5cbiAgICAgIFRleHQgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyBleHByIHRleHQgc3RhcnQgaW5cbiAgICAgICAgbGV0IHMgPSBtYXRjaGVkX3N0cmluZyB0ZXh0IGluXG4gICAgICAgIGlmIHBvcyA+IHN0YXJ0IHRoZW5cbiAgICAgICAgICBzcGxpdCAoRGVsaW0gKHMpIDo6XG4gICAgICAgICAgICAgICAgIFRleHQgKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zIC0gc3RhcnQpKSA6OlxuICAgICAgICAgICAgICAgICBhY2N1KVxuICAgICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgc3BsaXQgKERlbGltIChzKSA6OiBhY2N1KVxuICAgICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgVGV4dCAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgTGlzdC5yZXYgKHNwbGl0IFtdIDAgbnVtKVxuXG5sZXQgZnVsbF9zcGxpdCBleHByIHRleHQgPSBib3VuZGVkX2Z1bGxfc3BsaXQgZXhwciB0ZXh0IDBcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5cbnR5cGUgZW5jbG9zZWQgPVxuICB8IENoYXIgb2YgY2hhclxuICB8IFJhbmdlIG9mIGNoYXIgKiBjaGFyXG5cbnR5cGUgcGllY2UgPVxuICB8IEV4YWN0bHkgb2YgY2hhclxuICB8IEFueV9vZiBvZiBlbmNsb3NlZCBsaXN0XG4gIHwgQW55X2J1dCBvZiBlbmNsb3NlZCBsaXN0XG4gIHwgT25lXG4gIHwgTWFueVxuICB8IE1hbnlNYW55XG5cbnR5cGUgdCA9IHBpZWNlIGxpc3RcblxubGV0IG9mX3N0cmluZyB+ZG91YmxlX2FzdGVyaXNrIHMgOiB0ID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCByZWFkIGMgPVxuICAgIGxldCByID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgICBpZiByIHRoZW4gaW5jciBpO1xuICAgIHJcbiAgaW5cblxuICAoKipcbiAgIFtyZWFkX2FoZWFkIHBhdHRlcm5dIHdpbGwgYXR0ZW1wdCB0byByZWFkIFtwYXR0ZXJuXSBhbmQgd2lsbCByZXR1cm4gW3RydWVdIGlmIGl0IHdhcyBzdWNjZXNzZnVsLlxuICAgSWYgaXQgZmFpbHMsIGl0IHdpbGwgcmV0dXJuIFtmYWxzZV0gYW5kIG5vdCBpbmNyZW1lbnQgdGhlIHJlYWQgaW5kZXguXG4gICopXG4gIGxldCByZWFkX2FoZWFkIHBhdHRlcm4gPVxuICAgIGxldCBwYXR0ZXJuX2xlbiA9IFN0cmluZy5sZW5ndGggcGF0dGVybiBpblxuICAgICgqIGlmIHRoZSBwYXR0ZXJuIHdlIGFyZSBsb29raW5nIGZvciBleGVlZHMgdGhlIHJlbWFpbmluZyBsZW5ndGggb2YgcywgcmV0dXJuIGZhbHNlIGltbWVkaWF0ZWx5ICopXG4gICAgaWYgIWkgKyBwYXR0ZXJuX2xlbiA+PSBsIHRoZW5cbiAgICAgIGZhbHNlXG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGZvciBqID0gMCB0byBwYXR0ZXJuX2xlbiAtIDEgZG9cbiAgICAgICAgICBsZXQgZm91bmQgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWkgKyBqXSA9IHBhdHRlcm4uW2pdIGluXG4gICAgICAgICAgaWYgbm90IGZvdW5kIHRoZW4gcmFpc2Vfbm90cmFjZSBFeGl0O1xuICAgICAgICBkb25lO1xuICAgICAgICBpIDo9ICFpICsgcGF0dGVybl9sZW47XG4gICAgICAgIHRydWVcbiAgICAgIHdpdGggfCBFeGl0ICAtPiBmYWxzZVxuICBpblxuXG4gIGxldCBjaGFyICgpID1cbiAgICBpZ25vcmUgKHJlYWQgJ1xcXFwnIDogYm9vbCk7XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IHIgPSBzLlshaV0gaW5cbiAgICBpbmNyIGk7XG4gICAgclxuICBpblxuXG4gIGxldCBlbmNsb3NlZCAoKSA6IGVuY2xvc2VkIGxpc3QgPVxuICAgIGxldCByZWMgbG9vcCBzID1cbiAgICAgICgqIFRoaXMgcmV0dXJucyB0aGUgbGlzdCBpbiByZXZlcnNlIG9yZGVyLCBidXQgb3JkZXIgaXNuJ3QgaW1wb3J0YW50IGFueXdheSAqKVxuICAgICAgaWYgcyA8PiBbXSAmJiByZWFkICddJ1xuICAgICAgdGhlbiBzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgICBpZiBub3QgKHJlYWQgJy0nKVxuICAgICAgICB0aGVuIGxvb3AgKENoYXIgYyA6OiBzKVxuICAgICAgICBlbHNlIGlmIHJlYWQgJ10nXG4gICAgICAgIHRoZW4gQ2hhciBjIDo6IENoYXIgJy0nIDo6IHNcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBjJyA9IGNoYXIgKCkgaW5cbiAgICAgICAgICBsb29wIChSYW5nZSAoYywgYycpIDo6IHMpXG4gICAgaW5cbiAgICBsb29wIFtdXG4gIGluXG5cbiAgbGV0IHBpZWNlICgpID1cbiAgICBpZiBkb3VibGVfYXN0ZXJpc2sgJiYgcmVhZF9haGVhZCBcIi8qKlwiICYmIG5vdCAoZW9zICgpKVxuICAgIHRoZW4gTWFueU1hbnlcbiAgICBlbHNlIGlmIHJlYWQgJyonXG4gICAgdGhlbiBpZiBkb3VibGVfYXN0ZXJpc2sgJiYgcmVhZCAnKidcbiAgICAgIHRoZW4gTWFueU1hbnlcbiAgICAgIGVsc2UgTWFueVxuICAgIGVsc2UgaWYgcmVhZCAnPydcbiAgICB0aGVuIE9uZVxuICAgIGVsc2UgaWYgbm90IChyZWFkICdbJylcbiAgICB0aGVuIEV4YWN0bHkgKGNoYXIgKCkpXG4gICAgZWxzZSBpZiByZWFkICdeJyB8fCByZWFkICchJ1xuICAgIHRoZW4gQW55X2J1dCAoZW5jbG9zZWQgKCkpXG4gICAgZWxzZSBBbnlfb2YgKGVuY2xvc2VkICgpKVxuICBpblxuXG4gIGxldCByZWMgbG9vcCBwaWVjZXMgPVxuICAgIGlmIGVvcyAoKVxuICAgIHRoZW4gTGlzdC5yZXYgcGllY2VzXG4gICAgZWxzZSBsb29wIChwaWVjZSAoKSA6OiBwaWVjZXMpXG4gIGluXG5cbiAgbG9vcCBbXVxuXG5sZXQgbXVsIGwgbCcgPVxuICBMaXN0LmZsYXR0ZW4gKExpc3QubWFwIChmdW4gcyAtPiBMaXN0Lm1hcCAoZnVuIHMnIC0+IHMgXiBzJykgbCcpIGwpXG5cbmxldCBleHBsb2RlIHN0ciA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlYyBleHBsIGlubmVyIHMgaSBhY2MgYmVnID1cbiAgICBpZiBpID49IGwgdGhlbiBiZWdpblxuICAgICAgaWYgaW5uZXIgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIChtdWwgYmVnIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldLCBpKVxuICAgIGVuZCBlbHNlXG4gICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgIHwgJ1xcXFwnIC0+IGV4cGwgaW5uZXIgcyAoaSArIDIpIGFjYyBiZWdcbiAgICAgIHwgJ3snIC0+XG4gICAgICAgIGxldCAodCwgaScpID0gZXhwbCB0cnVlIChpICsgMSkgKGkgKyAxKSBbXSBbXCJcIl0gaW5cbiAgICAgICAgZXhwbCBpbm5lciBpJyBpJyBhY2NcbiAgICAgICAgICAobXVsIGJlZyAobXVsIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldIHQpKVxuICAgICAgfCAnLCcgd2hlbiBpbm5lciAtPlxuICAgICAgICBleHBsIGlubmVyIChpICsgMSkgKGkgKyAxKVxuICAgICAgICAgIChtdWwgYmVnIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldIEAgYWNjKSBbXCJcIl1cbiAgICAgIHwgJ30nIHdoZW4gaW5uZXIgLT5cbiAgICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gQCBhY2MsIGkgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIGV4cGwgaW5uZXIgcyAoaSArIDEpIGFjYyBiZWdcbiAgaW5cbiAgTGlzdC5yZXYgKGZzdCAoZXhwbCBmYWxzZSAwIDAgW10gW1wiXCJdKSlcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICByZV9waWVjZXMgICAgICAgICAgICAgICAgOiBSZS50IGxpc3Q7ICAoKiBsYXN0IHBpZWNlIGF0IGhlYWQgb2YgbGlzdC4gKilcbiAgICByZW1haW5pbmcgICAgICAgICAgICAgICAgOiBwaWVjZSBsaXN0OyAoKiBsYXN0IHBpZWNlIGF0IHRhaWwgb2YgbGlzdC4gKilcbiAgICBhbV9hdF9zdGFydF9vZl9wYXR0ZXJuICAgOiBib29sOyAgICAgICAoKiB0cnVlIGF0IHN0YXJ0IG9mIHBhdHRlcm4gKilcbiAgICBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgOiBib29sOyAgICAgICAoKiB0cnVlIGF0IHN0YXJ0IG9mIHBhdHRlcm4gb3IgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlciAnLycgKilcbiAgICBwYXRobmFtZSAgICAgICAgICAgICAgICAgOiBib29sO1xuICAgIG1hdGNoX2JhY2tzbGFzaGVzICAgICAgICA6IGJvb2w7XG4gICAgcGVyaW9kICAgICAgICAgICAgICAgICAgIDogYm9vbDtcbiAgfVxuXG4gIGxldCBjcmVhdGUgfnBlcmlvZCB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIHJlbWFpbmluZyA9XG4gICAge1xuICAgICAgcmVfcGllY2VzID0gW107XG4gICAgICBhbV9hdF9zdGFydF9vZl9wYXR0ZXJuID0gdHJ1ZTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA9IHRydWU7XG4gICAgICBwYXRobmFtZTtcbiAgICAgIG1hdGNoX2JhY2tzbGFzaGVzO1xuICAgICAgcGVyaW9kO1xuICAgICAgcmVtYWluaW5nO1xuICAgIH1cblxuICBsZXQgZXhwbGljaXRfcGVyaW9kIHQgPVxuICAgIHQucGVyaW9kICYmIChcbiAgICAgIHQuYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiB8fFxuICAgICAgKHQuYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ICYmIHQucGF0aG5hbWUpXG4gICAgKVxuXG4gIGxldCBleHBsaWNpdF9zbGFzaCB0ID0gdC5wYXRobmFtZVxuXG4gIGxldCBzbGFzaGVzIHQgPVxuICAgIGlmIHQubWF0Y2hfYmFja3NsYXNoZXMgdGhlbiBbJy8nOyAnXFxcXCddIGVsc2UgWycvJ11cblxuICBsZXQgYXBwZW5kID8oYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50PWZhbHNlKSB0IHBpZWNlID1cbiAgICB7IHQgd2l0aFxuICAgICAgcmVfcGllY2VzID0gcGllY2UgOjogdC5yZV9waWVjZXM7XG4gICAgICBhbV9hdF9zdGFydF9vZl9wYXR0ZXJuID0gZmFsc2U7XG4gICAgICBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQ7XG4gICAgfVxuXG4gIGxldCB0b19yZSB0ID0gUmUuc2VxIChMaXN0LnJldiB0LnJlX3BpZWNlcylcblxuICBsZXQgbmV4dCB0ID1cbiAgICBtYXRjaCB0LnJlbWFpbmluZyB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBwaWVjZSA6OiByZW1haW5pbmcgLT4gU29tZSAocGllY2UsIHsgdCB3aXRoIHJlbWFpbmluZyB9KVxuZW5kXG5cbmxldCBvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QgPVxuICBSZS5jb21wbCAoXG4gICAgTGlzdC5jb25jYXQgW1xuICAgICAgaWYgZXhwbGljaXRfc2xhc2ggIHRoZW4gTGlzdC5tYXAgUmUuY2hhciBzbGFzaGVzIGVsc2UgW107XG4gICAgICBpZiBleHBsaWNpdF9wZXJpb2QgdGhlbiBbUmUuY2hhciAnLiddIGVsc2UgW107XG4gICAgXVxuICApXG5cbmxldCBlbmNsb3NlZCBlbmNsb3NlZCA9XG4gIG1hdGNoIGVuY2xvc2VkIHdpdGhcbiAgfCBDaGFyIGMgLT4gUmUuY2hhciBjXG4gIHwgUmFuZ2UgKGxvdywgaGlnaCkgLT4gUmUucmcgbG93IGhpZ2hcblxubGV0IGVuY2xvc2VkX3NldCB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBraW5kIHNldCA9XG4gIGxldCBzZXQgPSBMaXN0Lm1hcCBlbmNsb3NlZCBzZXQgaW5cbiAgbGV0IGVuY2xvc3VyZSA9XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgfCBgQW55X29mIC0+IFJlLmFsdCBzZXRcbiAgICB8IGBBbnlfYnV0IC0+IFJlLmNvbXBsIHNldFxuICBpblxuICBSZS5pbnRlciBbZW5jbG9zdXJlOyBvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2RdXG5cbmxldCBleGFjdGx5IHN0YXRlIGMgPVxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbGV0IGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA9IExpc3QubWVtIGMgc2xhc2hlcyBpblxuICBsZXQgY2hhcnMgPSBpZiBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgdGhlbiBzbGFzaGVzIGVsc2UgW2NdIGluXG4gIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUuYWx0IChMaXN0Lm1hcCBSZS5jaGFyIGNoYXJzKSkgfmFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudFxuXG5sZXQgbWFueV9tYW55IHN0YXRlID1cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IHN0YXRlLlN0YXRlLnBlcmlvZCAmJiBzdGF0ZS5TdGF0ZS5wYXRobmFtZSBpblxuICBsZXQgZmlyc3RfZXhwbGljaXRfcGVyaW9kID0gU3RhdGUuZXhwbGljaXRfcGVyaW9kIHN0YXRlIGluXG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBsZXQgbWF0Y2hfY29tcG9uZW50IH5leHBsaWNpdF9wZXJpb2QgPVxuICAgIFJlLnNlcSBbXG4gICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kO1xuICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZSk7XG4gICAgXVxuICBpblxuICAoKiBXZSBtdXN0IG1hdGNoIGNvbXBvbmVudHMgaW5kaXZpZHVhbGx5IHdoZW4gW3BlcmlvZF0gZmxhZyBpcyBzZXQsXG4gICAgIG1ha2luZyBzdXJlIHRvIG5vdCBtYXRjaCBbXCJmb28vLmJhclwiXS4gKilcbiAgU3RhdGUuYXBwZW5kIHN0YXRlIChcbiAgICBSZS5zZXEgW1xuICAgICAgUmUub3B0IChtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZDpmaXJzdF9leHBsaWNpdF9wZXJpb2QpO1xuICAgICAgUmUucmVwIChcbiAgICAgICAgUmUuc2VxIFtcbiAgICAgICAgICBSZS5hbHQgKExpc3QubWFwIFJlLmNoYXIgc2xhc2hlcyk7XG4gICAgICAgICAgUmUub3B0IChtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZCk7XG4gICAgICAgIF1cbiAgICAgICk7XG4gICAgXSlcblxubGV0IG1hbnkgKHN0YXRlIDogU3RhdGUudCkgPVxuICBsZXQgZXhwbGljaXRfc2xhc2ggPSBTdGF0ZS5leHBsaWNpdF9zbGFzaCBzdGF0ZSBpblxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gU3RhdGUuZXhwbGljaXRfcGVyaW9kIHN0YXRlIGluXG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICAoKiBXaGV0aGVyIHdlIG11c3QgZXhwbGljaXRseSBtYXRjaCBwZXJpb2QgZGVwZW5kcyBvbiB0aGUgc3Vycm91bmRpbmcgY2hhcmFjdGVycywgYnV0XG4gICAgIHNsYXNoZXMgYXJlIGVhc3kgdG8gZXhwbGljaXQgbWF0Y2guIFRoaXMgY29uZGl0aW9uYWwgc3BsaXRzIG91dCBzb21lIHNpbXBsZSBjYXNlcy5cbiAgKilcbiAgaWYgbm90IGV4cGxpY2l0X3BlcmlvZCB0aGVuIGJlZ2luXG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCkpXG4gIGVuZCBlbHNlIGlmIG5vdCBleHBsaWNpdF9zbGFzaCB0aGVuIGJlZ2luXG4gICAgKCogSW4gdGhpcyBzdGF0ZSwgd2UgZXhwbGljaXRseSBtYXRjaCBwZXJpb2RzIG9ubHkgYXQgdGhlIHZlcnkgYmVnaW5uaW5nICopXG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5vcHQgKFxuICAgICAgUmUuc2VxIFtcbiAgICAgICAgb25lICAgICAgICAgfmV4cGxpY2l0X3NsYXNoOmZhbHNlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q7XG4gICAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDpmYWxzZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICAgIF1cbiAgICApKVxuICBlbmQgZWxzZSBiZWdpblxuICAgIGxldCBub3RfZW1wdHkgPVxuICAgICAgUmUuc2VxIFtcbiAgICAgICAgb25lICAgICAgICAgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDp0cnVlO1xuICAgICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICAgIF1cbiAgICBpblxuICAgICgqIFttYXliZV9lbXB0eV0gaXMgdGhlIGRlZmF1bHQgdHJhbnNsYXRpb24gb2YgTWFueSwgZXhjZXB0IGluIHNvbWUgc3BlY2lhbCBjYXNlcy5cbiAgICAqKVxuICAgIGxldCBtYXliZV9lbXB0eSA9IFJlLm9wdCBub3RfZW1wdHkgaW5cbiAgICBsZXQgZW5jbG9zZWRfc2V0IHN0YXRlIGtpbmQgc2V0ID1cbiAgICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUuYWx0IFtcbiAgICAgICAgZW5jbG9zZWRfc2V0IGtpbmQgc2V0IH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6dHJ1ZTtcbiAgICAgICAgUmUuc2VxIFtcbiAgICAgICAgICBub3RfZW1wdHk7XG4gICAgICAgICAgKCogU2luY2UgW25vdF9lbXB0eV0gbWF0Y2hlZCwgc3Vic2VxdWVudCBkb3RzIGFyZSBub3QgbGVhZGluZy4gKilcbiAgICAgICAgICBlbmNsb3NlZF9zZXQga2luZCBzZXQgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZTtcbiAgICAgICAgXTtcbiAgICAgIF0pXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb2thaGVhZCBzdGF0ZSA9XG4gICAgICBtYXRjaCBTdGF0ZS5uZXh0IHN0YXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgbWF5YmVfZW1wdHlcbiAgICAgICgqIGdsb2IgKiogPT09IGdsb2IgKiAuICopXG4gICAgICB8IFNvbWUgKE1hbnksIHN0YXRlKSAtPiBsb29rYWhlYWQgc3RhdGVcbiAgICAgIHwgU29tZSAoRXhhY3RseSBjLCBzdGF0ZSkgLT5cbiAgICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgICBTdGF0ZS5hcHBlbmQgc3RhdGVcbiAgICAgICAgICAgIChpZiBjID0gJy4nXG4gICAgICAgICAgICAgdGhlbiBub3RfZW1wdHlcbiAgICAgICAgICAgICBlbHNlIG1heWJlX2VtcHR5KVxuICAgICAgICBpblxuICAgICAgICBleGFjdGx5IHN0YXRlIGNcbiAgICAgICgqIGdsb2IgKj8gPT09IGdsb2IgPyogKilcbiAgICAgIHwgU29tZSAoT25lLCBzdGF0ZSkgLT4gU3RhdGUuYXBwZW5kIHN0YXRlIG5vdF9lbXB0eVxuICAgICAgfCBTb21lIChBbnlfb2YgZW5jbG9zZWQsIHN0YXRlKSAtPiBlbmNsb3NlZF9zZXQgc3RhdGUgYEFueV9vZiBlbmNsb3NlZFxuICAgICAgfCBTb21lIChBbnlfYnV0IGVuY2xvc2VkLCBzdGF0ZSkgLT4gZW5jbG9zZWRfc2V0IHN0YXRlIGBBbnlfYnV0IGVuY2xvc2VkXG4gICAgICAoKiAqIHRoZW4gKiogPT09ICoqICopXG4gICAgICB8IFNvbWUgKE1hbnlNYW55LCBzdGF0ZSkgLT4gbWFueV9tYW55IHN0YXRlXG4gICAgaW5cbiAgICBsb29rYWhlYWQgc3RhdGVcbiAgZW5kXG5cbmxldCBwaWVjZSBzdGF0ZSBwaWVjZSA9XG4gIGxldCBleHBsaWNpdF9zbGFzaCA9IFN0YXRlLmV4cGxpY2l0X3NsYXNoIHN0YXRlIGluXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIG1hdGNoIHBpZWNlIHdpdGhcbiAgfCBPbmUgLT4gU3RhdGUuYXBwZW5kIHN0YXRlIChvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QpXG4gIHwgTWFueSAtPiBtYW55IHN0YXRlXG4gIHwgQW55X29mIGVuY2xvc2VkIC0+XG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChlbmNsb3NlZF9zZXQgYEFueV9vZiB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBlbmNsb3NlZClcbiAgfCBBbnlfYnV0IGVuY2xvc2VkIC0+XG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChlbmNsb3NlZF9zZXQgYEFueV9idXQgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QgZW5jbG9zZWQpXG4gIHwgRXhhY3RseSBjIC0+IGV4YWN0bHkgc3RhdGUgY1xuICB8IE1hbnlNYW55IC0+IG1hbnlfbWFueSBzdGF0ZVxuXG5sZXQgZ2xvYiB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIH5wZXJpb2QgZ2xvYiA9XG4gIGxldCByZWMgbG9vcCBzdGF0ZSA9XG4gICAgbWF0Y2ggU3RhdGUubmV4dCBzdGF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IFN0YXRlLnRvX3JlIHN0YXRlXG4gICAgfCBTb21lIChwLCBzdGF0ZSkgLT4gbG9vcCAocGllY2Ugc3RhdGUgcClcbiAgaW5cbiAgbG9vcCAoU3RhdGUuY3JlYXRlIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCBnbG9iKVxuXG5sZXQgZ2xvYlxuICAgICAgPyhhbmNob3JlZCA9IGZhbHNlKVxuICAgICAgPyhwYXRobmFtZSA9IHRydWUpXG4gICAgICA/KG1hdGNoX2JhY2tzbGFzaGVzID0gZmFsc2UpXG4gICAgICA/KHBlcmlvZCA9IHRydWUpXG4gICAgICA/KGV4cGFuZF9icmFjZXMgPSBmYWxzZSlcbiAgICAgID8oZG91YmxlX2FzdGVyaXNrID0gdHJ1ZSlcbiAgICAgIHNcbiAgPVxuICBsZXQgdG9fcmUgcyA9XG4gICAgbGV0IHJlID0gZ2xvYiB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIH5wZXJpb2QgKG9mX3N0cmluZyB+ZG91YmxlX2FzdGVyaXNrIHMpIGluXG4gICAgaWYgYW5jaG9yZWRcbiAgICB0aGVuIFJlLndob2xlX3N0cmluZyByZVxuICAgIGVsc2UgcmVcbiAgaW5cbiAgaWYgZXhwYW5kX2JyYWNlc1xuICB0aGVuIFJlLmFsdCAoTGlzdC5tYXAgdG9fcmUgKGV4cGxvZGUgcykpXG4gIGVsc2UgdG9fcmUgc1xuXG5sZXQgZ2xvYicgP2FuY2hvcmVkIHBlcmlvZCBzID0gZ2xvYiA/YW5jaG9yZWQgfnBlcmlvZCBzXG5cbmxldCBnbG9ieCA/YW5jaG9yZWQgcyA9IGdsb2IgP2FuY2hvcmVkIH5leHBhbmRfYnJhY2VzOnRydWUgc1xuXG5sZXQgZ2xvYngnID9hbmNob3JlZCBwZXJpb2QgcyA9IGdsb2IgP2FuY2hvcmVkIH5leHBhbmRfYnJhY2VzOnRydWUgfnBlcmlvZCBzXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWRcblxubGV0IHBvc2l4X2NsYXNzX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJhbHBoYVwiICAtPiBSZS5hbHBoYVxuICB8IFwiYWxudW1cIiAgLT4gUmUuYWxudW1cbiAgfCBcImFzY2lpXCIgIC0+IFJlLmFzY2lpXG4gIHwgXCJibGFua1wiICAtPiBSZS5ibGFua1xuICB8IFwiY250cmxcIiAgLT4gUmUuY250cmxcbiAgfCBcImRpZ2l0XCIgIC0+IFJlLmRpZ2l0XG4gIHwgXCJsb3dlclwiICAtPiBSZS5sb3dlclxuICB8IFwicHJpbnRcIiAgLT4gUmUucHJpbnRcbiAgfCBcInNwYWNlXCIgIC0+IFJlLnNwYWNlXG4gIHwgXCJ1cHBlclwiICAtPiBSZS51cHBlclxuICB8IFwid29yZFwiICAgLT4gUmUud29yZGNcbiAgfCBcInB1bmN0XCIgIC0+IFJlLnB1bmN0XG4gIHwgXCJncmFwaFwiICAtPiBSZS5ncmFwaFxuICB8IFwieGRpZ2l0XCIgLT4gUmUueGRpZ2l0XG4gIHwgY2xhc3NfICAgLT4gaW52YWxpZF9hcmcgKFwiSW52YWxpZCBwY3JlIGNsYXNzOiBcIiBeIGNsYXNzXylcblxubGV0IHBvc2l4X2NsYXNzX3N0cmluZ3MgPVxuICBbIFwiYWxwaGFcIiA7IFwiYWxudW1cIiA7IFwiYXNjaWlcIlxuICA7IFwiYmxhbmtcIiA7IFwiY250cmxcIiA7IFwiZGlnaXRcIlxuICA7IFwibG93ZXJcIiA7IFwicHJpbnRcIiA7IFwic3BhY2VcIlxuICA7IFwidXBwZXJcIiA7IFwid29yZFwiICA7IFwicHVuY3RcIlxuICA7IFwiZ3JhcGhcIiA7IFwieGRpZ2l0XCIgXVxuXG5sZXQgcGFyc2UgbXVsdGlsaW5lIGRvbGxhcl9lbmRvbmx5IGRvdGFsbCB1bmdyZWVkeSBzID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCB0ZXN0IGMgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICBsZXQgYWNjZXB0IGMgPSBsZXQgciA9IHRlc3QgYyBpbiBpZiByIHRoZW4gaW5jciBpOyByIGluXG4gIGxldCBhY2NlcHRfcyBzJyA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcycgaW5cbiAgICB0cnlcbiAgICAgIGZvciBqID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIHRyeSBpZiBzJy5bal0gPD4gcy5bIWkgKyBqXSB0aGVuIHJhaXNlIEV4aXRcbiAgICAgICAgd2l0aCBfIC0+IHJhaXNlIEV4aXRcbiAgICAgIGRvbmU7XG4gICAgICBpIDo9ICFpICsgbGVuO1xuICAgICAgdHJ1ZVxuICAgIHdpdGggRXhpdCAtPiBmYWxzZSBpblxuICBsZXQgZ2V0ICgpID0gbGV0IHIgPSBzLlshaV0gaW4gaW5jciBpOyByIGluXG4gIGxldCB1bmdldCAoKSA9IGRlY3IgaSBpblxuICBsZXQgZ3JlZWR5X21vZCByID1cbiAgICBsZXQgZ3IgPSBhY2NlcHQgJz8nIGluXG4gICAgbGV0IGdyID0gaWYgdW5ncmVlZHkgdGhlbiBub3QgZ3IgZWxzZSBnciBpblxuICAgIGlmIGdyIHRoZW4gUmUubm9uX2dyZWVkeSByIGVsc2UgUmUuZ3JlZWR5IHJcbiAgaW5cbiAgbGV0IHJlYyByZWdleHAgKCkgPSByZWdleHAnIChicmFuY2ggKCkpXG4gIGFuZCByZWdleHAnIGxlZnQgPVxuICAgIGlmIGFjY2VwdCAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdCAnfCcgfHwgdGVzdCAnKScgdGhlbiBSZS5zZXEgKExpc3QucmV2IGxlZnQpXG4gICAgZWxzZSBicmFuY2gnIChwaWVjZSAoKSA6OiBsZWZ0KVxuICBhbmQgcGllY2UgKCkgPVxuICAgIGxldCByID0gYXRvbSAoKSBpblxuICAgIGlmIGFjY2VwdCAnKicgdGhlbiBncmVlZHlfbW9kIChSZS5yZXAgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBncmVlZHlfbW9kIChSZS5yZXAxIHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJz8nIHRoZW4gZ3JlZWR5X21vZCAoUmUub3B0IHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJ3snIHRoZW5cbiAgICAgIG1hdGNoIGludGVnZXIgKCkgd2l0aFxuICAgICAgICBTb21lIGkgLT5cbiAgICAgICAgICBsZXQgaiA9IGlmIGFjY2VwdCAnLCcgdGhlbiBpbnRlZ2VyICgpIGVsc2UgU29tZSBpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJ30nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIGogd2l0aFxuICAgICAgICAgICAgU29tZSBqIHdoZW4gaiA8IGkgLT4gcmFpc2UgUGFyc2VfZXJyb3IgfCBfIC0+ICgpXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGdyZWVkeV9tb2QgKFJlLnJlcG4gciBpIGopXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICB1bmdldCAoKTsgclxuICAgIGVsc2VcbiAgICAgIHJcbiAgYW5kIGF0b20gKCkgPVxuICAgIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgaWYgZG90YWxsIHRoZW4gUmUuYW55IGVsc2UgUmUubm90bmxcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJygnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPycgdGhlbiBiZWdpblxuICAgICAgICBpZiBhY2NlcHQgJzonIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICByXG4gICAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnIycgdGhlbiBiZWdpblxuICAgICAgICAgIGNvbW1lbnQgKClcbiAgICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICc8JyB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lICgpIGluXG4gICAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgUmUuZ3JvdXAgfm5hbWUgclxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIFJlLmdyb3VwIHJcbiAgICAgIGVuZFxuICAgIGVuZCBlbHNlXG4gICAgaWYgYWNjZXB0ICdeJyB0aGVuIGJlZ2luXG4gICAgICBpZiBtdWx0aWxpbmUgdGhlbiBSZS5ib2wgZWxzZSBSZS5ib3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyQnIHRoZW4gYmVnaW5cbiAgICAgIGlmIG11bHRpbGluZSB0aGVuIFJlLmVvbCBlbHNlIGlmIGRvbGxhcl9lbmRvbmx5IHRoZW4gUmUubGVvbCBlbHNlIFJlLmVvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIChicmFja2V0IFtdKVxuICAgICAgZWxzZVxuICAgICAgICBSZS5hbHQgKGJyYWNrZXQgW10pXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdcXFxcJyB0aGVuIGJlZ2luXG4oKiBYWFhcbiAgIC0gQmFjay1yZWZlcmVuY2VzXG4gICAtIFxcY3ggKGNvbnRyb2wteCksIFxcZGRkXG4qKVxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAndycgLT5cbiAgICAgICAgICBSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIHwgJ1cnIC0+XG4gICAgICAgICAgUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIHwgJ3MnIC0+XG4gICAgICAgICAgUmUuc3BhY2VcbiAgICAgIHwgJ1MnIC0+XG4gICAgICAgICAgUmUuY29tcGwgW1JlLnNwYWNlXVxuICAgICAgfCAnZCcgLT5cbiAgICAgICAgICBSZS5kaWdpdFxuICAgICAgfCAnRCcgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuZGlnaXRdXG4gICAgICB8ICdiJyAtPlxuICAgICAgICAgIFJlLmFsdCBbUmUuYm93OyBSZS5lb3ddXG4gICAgICB8ICdCJyAtPlxuICAgICAgICAgIFJlLm5vdF9ib3VuZGFyeVxuICAgICAgfCAnQScgLT5cbiAgICAgICAgICBSZS5ib3NcbiAgICAgIHwgJ1onIC0+XG4gICAgICAgICAgUmUubGVvbFxuICAgICAgfCAneicgLT5cbiAgICAgICAgICBSZS5lb3NcbiAgICAgIHwgJ0cnIC0+XG4gICAgICAgICAgUmUuc3RhcnRcbiAgICAgIHwgJ2UnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx4MWInXG4gICAgICB8ICdmJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xceDBjJ1xuICAgICAgfCAnbicgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXG4nXG4gICAgICB8ICdyJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xccidcbiAgICAgIHwgJ3QnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx0J1xuICAgICAgfCAneCcgLT5cbiAgICAgICAgICBsZXQgYzEgPSBoZXhkaWdpdCAoKSBpblxuICAgICAgICAgIGxldCBjMiA9IGhleGRpZ2l0ICgpIGluXG4gICAgICAgICAgbGV0IGNvZGUgPSBjMSAqIDE2ICsgYzIgaW5cbiAgICAgICAgICBSZS5jaGFyIChjaGFyX29mX2ludCBjb2RlKVxuICAgICAgfCAnYScuLid6JyB8ICdBJy4uJ1onIC0+XG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgJzAnLi4nOScgLT5cbiAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICB8IGMgLT5cbiAgICAgICAgICBSZS5jaGFyIGNcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnKicgfCAnKycgfCAnPycgfCAneycgfCAnXFxcXCcgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAtPiBSZS5jaGFyIGNcbiAgICBlbmRcbiAgYW5kIGhleGRpZ2l0ICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCdcbiAgICB8ICdhJy4uJ2YnIGFzIGQgLT4gQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgICB8ICdBJy4uJ0YnIGFzIGQgLT4gQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbiAgICB8IF8gLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgYW5kIGludGVnZXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIE5vbmUgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IGludGVnZXInIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpXG4gICAgfCAgICAgXyAgICAgICAgLT4gdW5nZXQgKCk7IE5vbmVcbiAgYW5kIGludGVnZXInIGkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIFNvbWUgaSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT5cbiAgICAgICAgbGV0IGknID0gMTAgKiBpICsgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJykgaW5cbiAgICAgICAgaWYgaScgPCBpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGludGVnZXInIGknXG4gICAgfCBfIC0+XG4gICAgICAgIHVuZ2V0ICgpOyBTb21lIGlcbiAgYW5kIG5hbWUgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgKCdfJyB8ICdhJy4uJ3onIHwgJ0EnLi4nWicpIGFzIGMgLT5cbiAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAzMiBpblxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYztcbiAgICAgIG5hbWUnIGJcbiAgICB8IF8gLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgYW5kIG5hbWUnIGIgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgKCdfJyB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgfCAnMCcuLic5JykgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYztcbiAgICAgIG5hbWUnIGJcbiAgICB8ICc+JyAtPiBCdWZmZXIuY29udGVudHMgYlxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIG1hdGNoIGNoYXIgKCkgd2l0aFxuICAgICAgfCBgQ2hhciBjIC0+XG4gICAgICAgIGlmIGFjY2VwdCAnLScgdGhlbiBiZWdpblxuICAgICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgICBtYXRjaCBjaGFyICgpIHdpdGhcbiAgICAgICAgICAgICAgYENoYXIgYycgLT5cbiAgICAgICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICAgICAgfCBgU2V0IHN0JyAtPlxuICAgICAgICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogc3QnIDo6IHMpXG4gICAgICAgICAgZW5kXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IHMpXG4gICAgICB8IGBTZXQgc3QgLT4gYnJhY2tldCAoc3QgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgaWYgYyA9ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz0nIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZDtcbiAgICAgIGlmIGFjY2VwdCAnOicgdGhlblxuICAgICAgICBsZXQgY29tcGwgPSBhY2NlcHQgJ14nIGluXG4gICAgICAgIGxldCBjbHMgPVxuICAgICAgICAgIHRyeSBMaXN0LmZpbmQgYWNjZXB0X3MgcG9zaXhfY2xhc3Nfc3RyaW5nc1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIFBhcnNlX2Vycm9yIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0X3MgXCI6XVwiKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBsZXQgcmUgPVxuICAgICAgICAgIGxldCBwb3NpeF9jbGFzcyA9IHBvc2l4X2NsYXNzX29mX3N0cmluZyBjbHMgaW5cbiAgICAgICAgICBpZiBjb21wbCB0aGVuIFJlLmNvbXBsIFtwb3NpeF9jbGFzc10gZWxzZSBwb3NpeF9jbGFzcyBpblxuICAgICAgICBgU2V0IChyZSlcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdCAnLicpIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZDtcbiAgICAgICAgaWYgbm90IChhY2NlcHQgJ10nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBgQ2hhciBjXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBgQ2hhciBjXG4gICAgZW5kIGVsc2UgaWYgYyA9ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4oKiBYWFhcbiAgIFxcMTI3LCAuLi5cbiopXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgJ2InIC0+IGBDaGFyICdcXDAwOCdcbiAgICAgIHwgJ24nIC0+IGBDaGFyICdcXG4nICgqWFhYKilcbiAgICAgIHwgJ3InIC0+IGBDaGFyICdcXHInICgqWFhYKilcbiAgICAgIHwgJ3QnIC0+IGBDaGFyICdcXHQnICgqWFhYKilcbiAgICAgIHwgJ3cnIC0+IGBTZXQgKFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXSlcbiAgICAgIHwgJ1cnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddKVxuICAgICAgfCAncycgLT4gYFNldCAoUmUuc3BhY2UpXG4gICAgICB8ICdTJyAtPiBgU2V0IChSZS5jb21wbCBbUmUuc3BhY2VdKVxuICAgICAgfCAnZCcgLT4gYFNldCAoUmUuZGlnaXQpXG4gICAgICB8ICdEJyAtPiBgU2V0IChSZS5jb21wbCBbUmUuZGlnaXRdKVxuICAgICAgfCAnYScuLid6JyB8ICdBJy4uJ1onIC0+XG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgJzAnLi4nOScgLT5cbiAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBgQ2hhciBjXG4gICAgZW5kIGVsc2VcbiAgICAgIGBDaGFyIGNcbiAgYW5kIGNvbW1lbnQgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGlmIGFjY2VwdCAnKScgdGhlbiBSZS5lcHNpbG9uIGVsc2UgYmVnaW4gaW5jciBpOyBjb21tZW50ICgpIGVuZFxuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxudHlwZSBvcHQgPVxuICBbIGBVbmdyZWVkeSB8IGBEb3RhbGwgfCBgRG9sbGFyX2VuZG9ubHlcbiAgfCBgTXVsdGlsaW5lIHwgYEFuY2hvcmVkIHwgYENhc2VsZXNzIF1cblxubGV0IHJlICA/KG9wdHMgPSBbXSkgcyA9XG4gIGxldCByID1cbiAgICBwYXJzZVxuICAgICAgKExpc3QubWVtcSBgTXVsdGlsaW5lIG9wdHMpIChMaXN0Lm1lbXEgYERvbGxhcl9lbmRvbmx5IG9wdHMpXG4gICAgICAoTGlzdC5tZW1xIGBEb3RhbGwgb3B0cykgKExpc3QubWVtcSBgVW5ncmVlZHkgb3B0cylcbiAgICAgIHNcbiAgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYEFuY2hvcmVkIG9wdHMgdGhlbiBSZS5zZXEgW1JlLnN0YXJ0OyByXSBlbHNlIHIgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYENhc2VsZXNzIG9wdHMgdGhlbiBSZS5ub19jYXNlIHIgZWxzZSByIGluXG4gIHJcblxubGV0IGNvbXBpbGUgPSBSZS5jb21waWxlXG5sZXQgY29tcGlsZV9wYXQgPyhvcHRzID0gW10pIHMgPSBjb21waWxlIChyZSB+b3B0cyBzKVxuIiwibW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3IgPSBQZXJsLlBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZCA9IFBlcmwuTm90X3N1cHBvcnRlZFxuXG50eXBlIHJlZ2V4cCA9IFJlLnJlXG5cbnR5cGUgZmxhZyA9IFsgYENBU0VMRVNTIHwgYE1VTFRJTElORSB8IGBBTkNIT1JFRCB8IGBET1RBTEwgXVxuXG50eXBlIHNwbGl0X3Jlc3VsdCA9XG4gIHwgVGV4dCAgb2Ygc3RyaW5nXG4gIHwgRGVsaW0gb2Ygc3RyaW5nXG4gIHwgR3JvdXAgb2YgaW50ICogc3RyaW5nXG4gIHwgTm9Hcm91cFxuXG50eXBlIGdyb3VwcyA9IENvcmUuR3JvdXAudFxuXG5sZXQgcmUgPyhmbGFncyA9IFtdKSBwYXQgPVxuICBsZXQgb3B0cyA9IExpc3QubWFwIChmdW5jdGlvblxuICAgIHwgYENBU0VMRVNTIC0+IGBDYXNlbGVzc1xuICAgIHwgYE1VTFRJTElORSAtPiBgTXVsdGlsaW5lXG4gICAgfCBgQU5DSE9SRUQgLT4gYEFuY2hvcmVkXG4gICAgfCBgRE9UQUxMIC0+IGBEb3RhbGxcbiAgKSBmbGFncyBpblxuICBQZXJsLnJlIH5vcHRzIHBhdFxuXG5sZXQgcmVnZXhwID9mbGFncyBwYXQgPSBSZS5jb21waWxlIChyZSA/ZmxhZ3MgcGF0KVxuXG5sZXQgZXh0cmFjdCB+cmV4IHMgPVxuICBSZS5Hcm91cC5hbGwgKFJlLmV4ZWMgcmV4IHMpXG5cbmxldCBleGVjIH5yZXggP3BvcyBzID1cbiAgUmUuZXhlYyByZXggP3BvcyBzXG5cbmxldCBnZXRfc3Vic3RyaW5nIHMgaSA9XG4gIFJlLkdyb3VwLmdldCBzIGlcblxubGV0IG5hbWVzIHJleCA9XG4gIFJlLmdyb3VwX25hbWVzIHJleFxuICB8PiBMaXN0Lm1hcCBmc3RcbiAgfD4gQXJyYXkub2ZfbGlzdFxuXG5sZXQgZ2V0X25hbWVkX3N1YnN0cmluZyByZXggbmFtZSBzID1cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgIHwgKG4sIGkpIDo6IHJlbSB3aGVuIG4gPSBuYW1lIC0+XG4gICAgICAgYmVnaW5cbiAgICAgICAgIHRyeSBnZXRfc3Vic3RyaW5nIHMgaVxuICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gbG9vcCByZW1cbiAgICAgICBlbmRcbiAgICB8IF8gOjogcmVtIC0+IGxvb3AgcmVtXG4gIGluXG4gIGxvb3AgKFJlLmdyb3VwX25hbWVzIHJleClcblxubGV0IGdldF9zdWJzdHJpbmdfb2ZzIHMgaSA9XG4gIFJlLkdyb3VwLm9mZnNldCBzIGlcblxubGV0IHBtYXRjaCB+cmV4IHMgPVxuICBSZS5leGVjcCByZXggc1xuXG5sZXQgc3Vic3RpdHV0ZSB+cmV4IH5zdWJzdCBzdHIgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgcmVjIGxvb3AgcG9zID1cbiAgICBpZiBwb3MgPj0gU3RyaW5nLmxlbmd0aCBzdHIgdGhlblxuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICBlbHNlIGlmIFJlLmV4ZWNwIH5wb3MgcmV4IHN0ciB0aGVuIChcbiAgICAgIGxldCBzcyA9IFJlLmV4ZWMgfnBvcyByZXggc3RyIGluXG4gICAgICBsZXQgc3RhcnQsIGZpbiA9IFJlLkdyb3VwLm9mZnNldCBzcyAwIGluXG4gICAgICBsZXQgcGF0ID0gUmUuR3JvdXAuZ2V0IHNzIDAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIgc3RyIHBvcyAoc3RhcnQgLSBwb3MpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3Vic3QgcGF0KTtcbiAgICAgIGxvb3AgZmluXG4gICAgKSBlbHNlIChcbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIgc3RyIHBvcyAoU3RyaW5nLmxlbmd0aCBzdHIgLSBwb3MpO1xuICAgICAgbG9vcCAoU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgKVxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IH5yZXggc3RyID1cbiAgbGV0IHJlYyBsb29wIGFjY3UgcG9zID1cbiAgICBpZiBwb3MgPj0gU3RyaW5nLmxlbmd0aCBzdHIgdGhlblxuICAgICAgTGlzdC5yZXYgYWNjdVxuICAgIGVsc2UgaWYgUmUuZXhlY3AgfnBvcyByZXggc3RyIHRoZW4gKFxuICAgICAgbGV0IHNzID0gUmUuZXhlYyB+cG9zIHJleCBzdHIgaW5cbiAgICAgIGxldCBzdGFydCwgZmluID0gUmUuR3JvdXAub2Zmc2V0IHNzIDAgaW5cbiAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgcG9zIChzdGFydCAtIHBvcykgaW5cbiAgICAgIGxvb3AgKHMgOjogYWNjdSkgZmluXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgcG9zIChTdHJpbmcubGVuZ3RoIHN0ciAtIHBvcykgaW5cbiAgICAgIGxvb3AgKHMgOjogYWNjdSkgKFN0cmluZy5sZW5ndGggc3RyKVxuICAgICkgaW5cbiAgbG9vcCBbXSAwXG5cbigqIEZyb20gUENSRSAqKVxubGV0IHN0cmluZ191bnNhZmVfc3ViIHMgb2ZzIGxlbiA9XG4gIGxldCByID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBCeXRlcy51bnNhZmVfYmxpdCBzIG9mcyByIDAgbGVuO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJcblxubGV0IHF1b3RlIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgKGxlbiBsc2wgMSkgaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICB8ICdcXFxcJyB8ICdeJyB8ICckJyB8ICcuJyB8ICdbJyB8ICd8J1xuICAgIHwgJygnICB8ICcpJyB8ICc/JyB8ICcqJyB8ICcrJyB8ICd7JyBhcyBjIC0+XG4gICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zICdcXFxcJztcbiAgICAgIGluY3IgcG9zO1xuICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgIXBvcyBjOyBpbmNyIHBvc1xuICAgIHwgYyAtPiBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zXG4gIGRvbmU7XG4gIHN0cmluZ191bnNhZmVfc3ViIGJ1ZiAwICFwb3NcblxubGV0IGZ1bGxfc3BsaXQgPyhtYXg9MCkgfnJleCBzID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzID0gMCB0aGVuIFtdXG4gIGVsc2UgaWYgbWF4ID0gMSB0aGVuIFtUZXh0IHNdXG4gIGVsc2VcbiAgICBsZXQgcmVzdWx0cyA9IFJlLnNwbGl0X2Z1bGwgcmV4IHMgaW5cbiAgICBsZXQgbWF0Y2hlcyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuY3Rpb25cbiAgICAgICAgfCBgVGV4dCBzIC0+IFtUZXh0IHNdXG4gICAgICAgIHwgYERlbGltIGQgLT5cbiAgICAgICAgICBsZXQgbWF0Y2hlcyA9IFJlLkdyb3VwLmFsbF9vZmZzZXQgZCBpblxuICAgICAgICAgIGxldCBkZWxpbSA9IFJlLkdyb3VwLmdldCBkIDAgaW5cbiAgICAgICAgICAoRGVsaW0gZGVsaW0pOjooXG4gICAgICAgICAgICBsZXQgbCA9IHJlZiBbXSBpblxuICAgICAgICAgICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBtYXRjaGVzIC0gMSBkb1xuICAgICAgICAgICAgICBsIDo9XG4gICAgICAgICAgICAgICAgKGlmIG1hdGNoZXMuKGkpID0gKC0xLCAtMSlcbiAgICAgICAgICAgICAgICAgdGhlbiBOb0dyb3VwXG4gICAgICAgICAgICAgICAgIGVsc2UgR3JvdXAgKGksIFJlLkdyb3VwLmdldCBkIGkpKVxuICAgICAgICAgICAgICAgIDo6KCFsKVxuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgIExpc3QucmV2ICFsKSkgcmVzdWx0cyBpblxuICAgIExpc3QuY29uY2F0IG1hdGNoZXNcblxuXG50eXBlIHN1YnN0cmluZ3MgPSBHcm91cC50XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG4oKlxuV2hhdCB3ZSBjb3VsZCAoc2hvdWxkPykgZG86XG4tIGEqID09PiBsb25nZXN0ICgoc2hvcnRlc3QgKG5vX2dyb3VwIGEpKiApLCBhIHwgKCkpICAoISEhKVxuLSBhYmMgdW5kZXJzdG9vZCBhcyAoYWIpY1xuLSBcIigoYT8pfGIpXCIgYWdhaW5zdCBcImFiXCIgc2hvdWxkIG5vdCBiaW5kIHRoZSBmaXJzdCBzdWJwYXR0ZXJuIHRvIGFueXRoaW5nXG5cbk5vdGUgdGhhdCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gaGFuZGxlIFwiKCgoYWIpYylkKWVcIiBlZmZpY2llbnRseVxuKilcbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcGFyc2UgbmV3bGluZSBzID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCB0ZXN0IGMgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICBsZXQgYWNjZXB0IGMgPSBsZXQgciA9IHRlc3QgYyBpbiBpZiByIHRoZW4gaW5jciBpOyByIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cbiAgbGV0IHVuZ2V0ICgpID0gZGVjciBpIGluXG5cbiAgbGV0IHJlYyByZWdleHAgKCkgPSByZWdleHAnIChicmFuY2ggKCkpXG4gIGFuZCByZWdleHAnIGxlZnQgPVxuICAgIGlmIGFjY2VwdCAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdCAnfCcgfHwgdGVzdCAnKScgdGhlbiBSZS5zZXEgKExpc3QucmV2IGxlZnQpXG4gICAgZWxzZSBicmFuY2gnIChwaWVjZSAoKSA6OiBsZWZ0KVxuICBhbmQgcGllY2UgKCkgPVxuICAgIGxldCByID0gYXRvbSAoKSBpblxuICAgIGlmIGFjY2VwdCAnKicgdGhlbiBSZS5yZXAgKFJlLm5lc3QgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBSZS5yZXAxIChSZS5uZXN0IHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJz8nIHRoZW4gUmUub3B0IHIgZWxzZVxuICAgIGlmIGFjY2VwdCAneycgdGhlblxuICAgICAgbWF0Y2ggaW50ZWdlciAoKSB3aXRoXG4gICAgICAgIFNvbWUgaSAtPlxuICAgICAgICAgIGxldCBqID0gaWYgYWNjZXB0ICcsJyB0aGVuIGludGVnZXIgKCkgZWxzZSBTb21lIGkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnfScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgICAgICAgICBTb21lIGogd2hlbiBqIDwgaSAtPiByYWlzZSBQYXJzZV9lcnJvciB8IF8gLT4gKClcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgUmUucmVwbiAoUmUubmVzdCByKSBpIGpcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIHVuZ2V0ICgpOyByXG4gICAgZWxzZVxuICAgICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBpZiBuZXdsaW5lIHRoZW4gUmUubm90bmwgZWxzZSBSZS5hbnlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJygnIHRoZW4gYmVnaW5cbiAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBSZS5ncm91cCByXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5ib2wgZWxzZSBSZS5ib3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyQnIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5lb2wgZWxzZSBSZS5lb3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5kaWZmIChSZS5jb21wbCAoYnJhY2tldCBbXSkpIChSZS5jaGFyICdcXG4nKVxuICAgICAgZWxzZVxuICAgICAgICBSZS5hbHQgKGJyYWNrZXQgW10pXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJ3wnIHwgJygnIHwgJyknIHwgJyonIHwgJysnIHwgJz8nXG4gICAgICB8ICdbJyB8ICcuJyB8ICdeJyB8ICckJyB8ICd7JyB8ICdcXFxcJyBhcyBjIC0+IFJlLmNoYXIgY1xuICAgICAgfCAgICAgICAgICAgICAgICAgXyAgICAgICAgICAgICAgICAgICAgICAgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnKicgfCAnKycgfCAnPycgfCAneycgfCAnXFxcXCcgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAtPiBSZS5jaGFyIGNcbiAgICBlbmRcbiAgYW5kIGludGVnZXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIE5vbmUgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IGludGVnZXInIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpXG4gICAgfCAgICAgXyAgICAgICAgLT4gdW5nZXQgKCk7IE5vbmVcbiAgYW5kIGludGVnZXInIGkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIFNvbWUgaSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT5cbiAgICAgICAgbGV0IGknID0gMTAgKiBpICsgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJykgaW5cbiAgICAgICAgaWYgaScgPCBpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGludGVnZXInIGknXG4gICAgfCBfIC0+XG4gICAgICAgIHVuZ2V0ICgpOyBTb21lIGlcbiAgYW5kIGJyYWNrZXQgcyA9XG4gICAgaWYgcyA8PiBbXSAmJiBhY2NlcHQgJ10nIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgICBsZXQgYyA9IGNoYXIgKCkgaW5cbiAgICAgIGlmIGFjY2VwdCAnLScgdGhlbiBiZWdpblxuICAgICAgICBpZiBhY2NlcHQgJ10nIHRoZW4gUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHMgZWxzZSBiZWdpblxuICAgICAgICAgIGxldCBjJyA9IGNoYXIgKCkgaW5cbiAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IHMpXG4gICAgZW5kXG4gIGFuZCBjaGFyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgIGlmIGMgPSAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc9JyB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc6JyB0aGVuIGJlZ2luXG4gICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWQgKCpYWFgqKVxuICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdCAnLicpIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZDtcbiAgICAgICAgaWYgbm90IChhY2NlcHQgJ10nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBjXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBjXG4gICAgZW5kIGVsc2VcbiAgICAgIGNcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZ2V4cCAoKSBpblxuICBpZiBub3QgKGVvcyAoKSkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgcmVzXG5cbnR5cGUgb3B0ID0gW2BJQ2FzZSB8IGBOb1N1YiB8IGBOZXdsaW5lXVxuXG5sZXQgcmUgPyhvcHRzID0gW10pIHMgPVxuICBsZXQgciA9IHBhcnNlIChMaXN0Lm1lbXEgYE5ld2xpbmUgb3B0cykgcyBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgSUNhc2Ugb3B0cyB0aGVuIFJlLm5vX2Nhc2UgciBlbHNlIHIgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYE5vU3ViIG9wdHMgdGhlbiBSZS5ub19ncm91cCByIGVsc2UgciBpblxuICByXG5cbmxldCBjb21waWxlIHJlID0gUmUuY29tcGlsZSAoUmUubG9uZ2VzdCByZSlcbmxldCBjb21waWxlX3BhdCA/KG9wdHMgPSBbXSkgcyA9IGNvbXBpbGUgKHJlIH5vcHRzIHMpXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDEzIEdhYnJpZWwgUmFkYW5uZSA8ZHJ1cHlvZytjYW1sQHpvaG8uY29tPlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxubW9kdWxlIHR5cGUgVCA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICB0eXBlICgtJ2EsICdiKSBmdFxuICB2YWwgZm1hcCA6ICgnYSwgJ2IpIGZ0IC0+ICdhIHQgLT4gJ2IgdFxuXG4gIHR5cGUgJ2EgdGxpc3RcbiAgdmFsIG5pbCA6IHVuaXQgLT4gJ2EgdGxpc3RcbiAgdmFsIHNpbmdsZXRvbiA6ICdhIHQgLT4gJ2EgdGxpc3RcbiAgdmFsIGNvbnMgOiAnYSB0IC0+ICdhIHRsaXN0IC0+ICdhIHRsaXN0XG4gIHZhbCBhcHBlbmQgOiAnYSB0bGlzdCAtPiAnYSB0bGlzdCAtPiAnYSB0bGlzdFxuICB2YWwgbWFwIDogKCdhLCAnYikgZnQgLT4gJ2EgdGxpc3QgLT4gJ2IgdGxpc3RcbmVuZFxuXG5tb2R1bGUgdHlwZSBOb1dyYXAgPVxuICBUIHdpdGggdHlwZSAnYSB0ID0gJ2FcbiAgICAgYW5kIHR5cGUgJ2EgdGxpc3QgPSAnYSBsaXN0XG4gICAgIGFuZCB0eXBlICgtJ2EsICdiKSBmdCA9ICdhIC0+ICdiXG5cbm1vZHVsZSBOb1dyYXAgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2FcbiAgdHlwZSAnYSB0bGlzdCA9ICdhIGxpc3RcbiAgdHlwZSAoLSdhLCAnYikgZnQgPSAnYSAtPiAnYlxuICBleHRlcm5hbCByZXR1cm4gOiAnYSAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbiAgbGV0IGZtYXAgZiA6ICAnYSB0IC0+ICdiIHQgPSBmXG5cbiAgbGV0IG5pbCAoKSA9IFtdXG4gIGxldCBzaW5nbGV0b24geCA9IFt4XVxuICBsZXQgY29ucyB4IHhzID0geDo6eHNcbiAgbGV0IGFwcGVuZCB4IHk9IHhAeVxuICBsZXQgbWFwID0gTGlzdC5tYXBcbmVuZFxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAxOCBHYWJyaWVsIFJhZGFubmVcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cbnR5cGUgbmFtZSA9IHN0cmluZyAqIHN0cmluZ1xuXG4oKiogSW5wdXQgKilcblxudHlwZSBzaWduYWwgPSBbXG4gIHwgYENvbW1lbnQgb2Ygc3RyaW5nXG4gIHwgYEVuZF9lbGVtZW50XG4gIHwgYFN0YXJ0X2VsZW1lbnQgb2YgbmFtZSAqIChuYW1lICogc3RyaW5nKSBsaXN0XG4gIHwgYFRleHQgb2Ygc3RyaW5nIGxpc3Rcbl1cblxuZXhjZXB0aW9uIE1hbGZvcm1lZF9zdHJlYW1cblxubW9kdWxlIEltcG9ydFxuICAgIChYbWwgOiBYbWxfc2lncy5UKVxuPSBzdHJ1Y3RcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gYSBiIC0+IFhtbC5XLihjb25zIChyZXR1cm4gYSkgYikpXG4gICAgICBsIChYbWwuVy5uaWwgKCkpXG5cbiAgbGV0IG1rX2F0dHJpYnMgYXR0cnMgPVxuICAgICgqIFRPRE86IFRoaXMgaXMgbm90IHZlcnkgc3RydWN0dXJlZCAqKVxuICAgIGxldCBmICgoXyxuYW1lKSwgdikgPSBYbWwuc3RyaW5nX2F0dHJpYiBuYW1lIChYbWwuVy5yZXR1cm4gdikgaW5cbiAgICBMaXN0Lm1hcCBmIGF0dHJzXG5cbiAgbGV0IHJlYyBtayBjaGlsZHJlbiAoc2VxIDogc2lnbmFsIFNlcS50KSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBDb25zIChgQ29tbWVudCBzLCBxKSAtPlxuICAgICAgbWsgKFhtbC5jb21tZW50IHMgOjogY2hpbGRyZW4pIHFcbiAgICB8IENvbnMgKGBUZXh0IHMsIHEpIC0+XG4gICAgICBtayAoTGlzdC5tYXAgKGZ1biB4IC0+IFhtbC5wY2RhdGEgQEAgWG1sLlcucmV0dXJuIHgpIHMgQCBjaGlsZHJlbikgcVxuICAgIHwgQ29ucyAoYFN0YXJ0X2VsZW1lbnQgKChfLCBuYW1lKSwgYXR0cnMpLCBxKSAtPlxuICAgICAgbGV0IGEgPSBta19hdHRyaWJzIGF0dHJzIGluXG4gICAgICBsZXQgc3ViX2NoaWxkcmVuLCByZXN0ID0gbWsgW10gcSBpblxuICAgICAgbWsgKFhtbC5ub2RlIH5hIG5hbWUgc3ViX2NoaWxkcmVuIDo6IGNoaWxkcmVuKSByZXN0XG4gICAgfCBDb25zIChgRW5kX2VsZW1lbnQsIHJlc3QpIC0+XG4gICAgICBvZl9saXN0IChMaXN0LnJldiBjaGlsZHJlbiksIHJlc3RcbiAgICB8IE5pbCAtPlxuICAgICAgb2ZfbGlzdCAoTGlzdC5yZXYgY2hpbGRyZW4pLCBTZXEuZW1wdHlcblxuICBsZXQgb2Zfc2VxIHNlcSA9XG4gICAgbGV0IGwsIHJlc3QgPSBtayBbXSBzZXEgaW5cbiAgICBtYXRjaCByZXN0ICgpIHdpdGhcbiAgICB8IFNlcS5OaWwgLT4gbFxuICAgIHwgXyAtPiByYWlzZSBNYWxmb3JtZWRfc3RyZWFtXG5cbmVuZFxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAwOCBWaW5jZW50IEJhbGF0LCBNYXVyaWNpbyBGZXJuYW5kZXpcbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnQsIEdyw6lnb2lyZSBIZW5yeVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxubGV0IGlzX2NvbnRyb2wgYyA9XG4gIGxldCBjYyA9IENoYXIuY29kZSBjIGluXG4gIChjYyA8PSA4IHx8IGNjID0gMTEgfHwgY2MgPSAxMiB8fCAoMTQgPD0gY2MgJiYgY2MgPD0gMzEpIHx8IGNjID0gMTI3KVxuXG5sZXQgYWRkX3Vuc2FmZV9jaGFyIGIgPSBmdW5jdGlvblxuICB8ICc8JyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmx0O1wiXG4gIHwgJz4nIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImZ3Q7XCJcbiAgfCAnXCInIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImcXVvdDtcIlxuICB8ICcmJyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmFtcDtcIlxuICB8IGMgd2hlbiBpc19jb250cm9sIGMgLT5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJiNcIiA7XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2ludCAoQ2hhci5jb2RlIGMpKSA7XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjtcIlxuICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGIgY1xuXG5sZXQgZW5jb2RlX3Vuc2FmZV9jaGFyIHMgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgU3RyaW5nLml0ZXIgKGFkZF91bnNhZmVfY2hhciBiKSBzO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgZW5jb2RlX3Vuc2FmZV9jaGFyX2FuZF9hdCBzID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMpIGluXG4gIGxldCBmID0gZnVuY3Rpb25cbiAgICB8ICdAJyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJiM2NDtcIlxuICAgIHwgYyAtPiBhZGRfdW5zYWZlX2NoYXIgYiBjXG4gIGluXG4gIFN0cmluZy5pdGVyIGYgcztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IGNvbXBvc2VfZGVjbCA/KHZlcnNpb24gPSBcIjEuMFwiKSA/KGVuY29kaW5nID0gXCJVVEYtOFwiKSAoKSA9XG4gIEZvcm1hdC5zcHJpbnRmXG4gICAge3w8P3htbCB2ZXJzaW9uPVwiJXNcIiBlbmNvZGluZz1cIiVzXCI/Plxcbnx9XG4gICAgdmVyc2lvbiBlbmNvZGluZ1xuXG5sZXQgY29tcG9zZV9kb2N0eXBlIGR0IGFyZ3MgPVxuICBsZXQgcHBfYXJncyBmbXQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IGwgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiBQVUJMSUMgJWFcIlxuICAgICAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcDpGb3JtYXQucHBfcHJpbnRfc3BhY2VcbiAgICAgICAgICAgKGZ1biBmbXQgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVzXFxcIlwiKSlcbiAgICAgICAgbFxuICBpblxuICBGb3JtYXQuYXNwcmludGZcbiAgICBcIjwhRE9DVFlQRSAlcyVhPlwiXG4gICAgZHRcbiAgICBwcF9hcmdzIGFyZ3NcblxubGV0IHJlX2VuZF9jb21tZW50ID0gUmUuKGNvbXBpbGUgQEAgYWx0IFtcbiAgc2VxIFsgYm9zIDsgc3RyIFwiPlwiIF0gO1xuICBzZXEgWyBib3MgOyBzdHIgXCItPlwiIF0gO1xuICBzdHIgXCItLT5cIiA7XG4gIHN0ciBcIi0tIT5cIiA7XG5dKVxubGV0IGVzY2FwZV9jb21tZW50IHMgPVxuICBsZXQgZiBnID0gbWF0Y2ggUmUuR3JvdXAuZ2V0IGcgMCB3aXRoXG4gICAgfCBcIj5cIiAtPiBcIiZndDtcIlxuICAgIHwgXCItPlwiIC0+IFwiLSZndDtcIlxuICAgIHwgXCItLT5cIiAtPiBcIi0tJmd0O1wiXG4gICAgfCBcIi0tIT5cIiAtPiBcIi0tISZndDtcIlxuICAgIHwgcyAtPiBzXG4gIGluXG4gIFJlLnJlcGxhY2UgfmFsbDp0cnVlIHJlX2VuZF9jb21tZW50IH5mIHNcblxuKCogY29waWVkIGZvcm0ganNfb2Zfb2NhbWw6IGNvbXBpbGVyL2phdmFzY3JpcHQubWwgKilcbmxldCBwcF9udW1iZXIgZm10IHYgPVxuICBpZiB2ID0gaW5maW5pdHlcbiAgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIkluZmluaXR5XCJcbiAgZWxzZSBpZiB2ID0gbmVnX2luZmluaXR5XG4gIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCItSW5maW5pdHlcIlxuICBlbHNlIGlmIHYgPD4gdlxuICB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTmFOXCJcbiAgZWxzZVxuICAgIGxldCB2aW50ID0gaW50X29mX2Zsb2F0IHYgaW5cbiAgICAoKiBjb21waWxlciAxMDAwIGludG8gMWUzICopXG4gICAgaWYgZmxvYXRfb2ZfaW50IHZpbnQgPSB2XG4gICAgdGhlblxuICAgICAgbGV0IHJlYyBkaXYgbiBpID1cbiAgICAgICAgaWYgbiA8PiAwICYmIG4gbW9kIDEwID0gMFxuICAgICAgICB0aGVuIGRpdiAobi8xMCkgKHN1Y2MgaSlcbiAgICAgICAgZWxzZVxuICAgICAgICBpZiBpID4gMlxuICAgICAgICB0aGVuIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkZSVkXCIgbiBpXG4gICAgICAgIGVsc2UgRm9ybWF0LnBwX3ByaW50X2ludCBmbXQgdmludCBpblxuICAgICAgZGl2IHZpbnQgMFxuICAgIGVsc2VcbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xMmdcIiB2IGluXG4gICAgICBpZiB2ID0gZmxvYXRfb2Zfc3RyaW5nIHMxXG4gICAgICB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IHMxXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBzMiA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNWdcIiB2IGluXG4gICAgICAgIGlmIHYgPSBmbG9hdF9vZl9zdHJpbmcgczJcbiAgICAgICAgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBzMlxuICAgICAgICBlbHNlICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlLjE4Z1wiIHZcblxubGV0IHN0cmluZ19vZl9udW1iZXIgdiA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHBfbnVtYmVyIHZcblxubW9kdWxlIFV0ZjggPSBzdHJ1Y3RcbiAgdHlwZSB1dGY4ID0gc3RyaW5nXG5cbiAgbGV0IG5vcm1hbGl6ZSBzcmMgPVxuICAgIGxldCB3YXJuID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IGJ1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggc3JjKSBpblxuICAgIFV1dGYuU3RyaW5nLmZvbGRfdXRmXzhcbiAgICAgIChmdW4gXyBfIGQgLT5cbiAgICAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgICAgfCBgVWNoYXIgY29kZSAtPiBVdXRmLkJ1ZmZlci5hZGRfdXRmXzggYnVmZmVyIGNvZGVcbiAgICAgICAgIHwgYE1hbGZvcm1lZCBfIC0+XG4gICAgICAgICAgICAgICBVdXRmLkJ1ZmZlci5hZGRfdXRmXzggYnVmZmVyIFV1dGYudV9yZXA7XG4gICAgICAgICAgICAgICB3YXJuOj10cnVlKVxuICAgICAgKCkgc3JjO1xuICAgIChCdWZmZXIuY29udGVudHMgYnVmZmVyLCAhd2FybilcblxuICBsZXQgbm9ybWFsaXphdGlvbl9uZWVkZWQgc3JjID1cbiAgICBsZXQgcmVjIGxvb3Agc3JjIGkgbCA9XG4gICAgICBpIDwgbCAmJlxuICAgICAgbWF0Y2ggc3JjLltpXSB3aXRoXG4gICAgICAoKiBDaGFyYWN0ZXJzIHRoYXQgbmVlZCB0byBiZSBlbmNvZGVkIGluIEhUTUwgKilcbiAgICAgIHwgJ1xcMDM0JyB8ICdcXDAzOCcgfCAnXFwwNjAnIHwnXFwwNjInIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgKCogQVNDSUkgY2hhcmFjdGVycyAqKVxuICAgICAgfCAnXFwwMDknIHwgJ1xcMDEwJyB8ICdcXDAxMycgfCAnXFwwMzInLi4nXFwxMjYnIC0+XG4gICAgICAgICAgbG9vcCBzcmMgKGkgKyAxKSBsXG4gICAgICB8IF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgaW5cbiAgICBsb29wIHNyYyAwIChTdHJpbmcubGVuZ3RoIHNyYylcblxuICBsZXQgbm9ybWFsaXplX2h0bWwgc3JjID1cbiAgICBpZiBub3JtYWxpemF0aW9uX25lZWRlZCBzcmMgdGhlbiBiZWdpblxuICAgICAgbGV0IHdhcm4gPSByZWYgZmFsc2UgaW5cbiAgICAgIGxldCBidWZmZXIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHNyYykgaW5cbiAgICAgIFV1dGYuU3RyaW5nLmZvbGRfdXRmXzhcbiAgICAgICAgKGZ1biBfIF8gZCAtPlxuICAgICAgICAgICBtYXRjaCBkIHdpdGhcbiAgICAgICAgICAgfCBgVWNoYXIgdSAtPlxuICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICAgICAgICAgICAgICAgfCAzNCAtPlxuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZmZlciBcIiZxdW90O1wiXG4gICAgICAgICAgICAgICB8IDM4IC0+XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmZmVyIFwiJmFtcDtcIlxuICAgICAgICAgICAgICAgfCA2MCAtPlxuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZmZlciBcIiZsdDtcIlxuICAgICAgICAgICAgICAgfCA2MiAtPlxuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZmZlciBcIiZndDtcIlxuICAgICAgICAgICAgICAgfCBjb2RlIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IHUgPVxuICAgICAgICAgICAgICAgICAgICAgKCogSWxsZWdhbCBjaGFyYWN0ZXJzIGluIGh0bWxcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2hhcmFjdGVyX2VuY29kaW5nc19pbl9IVE1MXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCAqKVxuICAgICAgICAgICAgICAgICAgICAgaWYgKCogQS4gY29udHJvbCBDMCAqKVxuICAgICAgICAgICAgICAgICAgICAgICAoY29kZSA8PSAzMSAmJiBjb2RlIDw+IDkgJiYgY29kZSA8PiAxMCAmJiBjb2RlIDw+IDEzKVxuICAgICAgICAgICAgICAgICAgICAgICAoKiBCLiBERUwgKyBjb250cm9sIEMxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0gaW52YWxpZCBpbiBodG1sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0gZGlzY291cmFnZWQgaW4geG1sO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgMHg4NSBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgbGV0J3MgZGlzY2FyZCBpdCBhbnl3YXkgKilcbiAgICAgICAgICAgICAgICAgICAgICAgfHwgKGNvZGUgPj0gMTI3ICYmIGNvZGUgPD0gMTU5KVxuICAgICAgICAgICAgICAgICAgICAgICAoKiBDLiBVVEYtMTYgc3Vycm9nYXRlIGhhbHZlcyA6IGFscmVhZHkgZGlzY2FyZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHV1dGYgfHwgKGNvZGUgPj0gMHhEODAwICYmIGNvZGUgPD0gMHhERkZGKSAqKVxuICAgICAgICAgICAgICAgICAgICAgICAoKiBELiBCT00gcmVsYXRlZCAqKVxuICAgICAgICAgICAgICAgICAgICAgICB8fCBjb2RlIGxhbmQgMHhGRkZGID0gMHhGRkZFXG4gICAgICAgICAgICAgICAgICAgICAgIHx8IGNvZGUgbGFuZCAweEZGRkYgPSAweEZGRkZcbiAgICAgICAgICAgICAgICAgICAgIHRoZW4gKHdhcm46PXRydWU7IFV1dGYudV9yZXApXG4gICAgICAgICAgICAgICAgICAgICBlbHNlIHVcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIFV1dGYuQnVmZmVyLmFkZF91dGZfOCBidWZmZXIgdVxuICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgIHwgYE1hbGZvcm1lZCBfIC0+XG4gICAgICAgICAgICAgICBVdXRmLkJ1ZmZlci5hZGRfdXRmXzggYnVmZmVyIFV1dGYudV9yZXA7XG4gICAgICAgICAgICAgICB3YXJuOj10cnVlKVxuICAgICAgICAoKSBzcmM7XG4gICAgICAoQnVmZmVyLmNvbnRlbnRzIGJ1ZmZlciwgIXdhcm4pXG4gICAgZW5kIGVsc2VcbiAgICAgIChzcmMsIGZhbHNlKVxuXG5lbmRcblxubW9kdWxlIHR5cGUgVGFnTGlzdCA9IHNpZyB2YWwgZW1wdHl0YWdzIDogc3RyaW5nIGxpc3QgZW5kXG5cbigqKiBGb3JtYXQgYmFzZWQgcHJpbnRlcnMgKilcblxubGV0IHBwX25vb3AgX2ZtdCBfID0gKClcblxubW9kdWxlIE1ha2VfZm10XG4gICAgKFhtbCA6IFhtbF9zaWdzLkl0ZXJhYmxlKVxuICAgIChJIDogVGFnTGlzdCkgPVxuc3RydWN0XG4gIG9wZW4gWG1sXG5cbiAgbGV0IG9wZW5fYm94IGluZGVudCBmbXQgPSBpZiBpbmRlbnQgdGhlbiBGb3JtYXQucHBfb3Blbl9ib3ggZm10IDAgZWxzZSAoKVxuICBsZXQgY2xvc2VfYm94IGluZGVudCBmbXQgPSBpZiBpbmRlbnQgdGhlbiBGb3JtYXQucHBfY2xvc2VfYm94IGZtdCAoKSBlbHNlICgpXG4gIGxldCBzcCBpbmRlbnQgZm10ID1cbiAgICBpZiBpbmRlbnQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZm10ICgpIGVsc2UgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCJcbiAgbGV0IGN1dCBpbmRlbnQgZm10ID1cbiAgICBpZiBpbmRlbnQgdGhlbiBGb3JtYXQucHBfcHJpbnRfY3V0IGZtdCAoKSBlbHNlICgpXG5cbiAgbW9kdWxlIFMgPSBTZXQuTWFrZShTdHJpbmcpXG4gIGxldCBpc19lbXB0eXRhZyA9IG1hdGNoIEkuZW1wdHl0YWdzIHdpdGhcbiAgICB8IFtdIC0+IGZ1biBfIC0+IGZhbHNlXG4gICAgfCBsIC0+XG4gICAgICBsZXQgc2V0ID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHggLT4gUy5hZGQgeCBzKSBTLmVtcHR5IGwgaW5cbiAgICAgIGZ1biB4IC0+IFMubWVtIHggc2V0XG5cbiAgbGV0IHBwX2VuY29kZSBlbmNvZGUgaW5kZW50IGZtdCBzID1cbiAgICBsZXQgcyA9IGVuY29kZSBzIGluXG4gICAgaWYgaW5kZW50IHRoZW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbJWFAXVwiIEZvcm1hdC5wcF9wcmludF90ZXh0IHNcbiAgICBlbHNlXG4gICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBzXG5cbiAgbGV0IHBwX3NlcCBpbmRlbnQgPSBmdW5jdGlvblxuICAgIHwgU3BhY2UgLT4gZnVuIGZtdCAoKSAtPiBzcCBpbmRlbnQgZm10XG4gICAgfCBDb21tYSAtPiBmdW4gZm10ICgpIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiwldFwiIChzcCBpbmRlbnQpXG5cbiAgbGV0IHBwX2F0dHJpYl92YWx1ZSBlbmNvZGUgaW5kZW50IGZtdCBhID0gbWF0Y2ggYWNvbnRlbnQgYSB3aXRoXG4gICAgfCBBRmxvYXQgZiAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCJcXFwiJWFcXFwiXCIgcHBfbnVtYmVyIGZcbiAgICB8IEFJbnQgaSAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCJcXFwiJWRcXFwiXCIgaVxuICAgIHwgQVN0ciBzIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIlxcXCIlc1xcXCJcIiAoZW5jb2RlIHMpXG4gICAgfCBBU3RyTCAoc2VwLCBzbGlzdCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIlxcXCIlYVxcXCJcIlxuICAgICAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcDoocHBfc2VwIGluZGVudCBzZXApXG4gICAgICAgICAgIChwcF9lbmNvZGUgZW5jb2RlIGluZGVudCkpIHNsaXN0XG5cbiAgbGV0IHBwX2F0dHJpYiBlbmNvZGUgaW5kZW50IGZtdCBhID1cbiAgICBGb3JtYXQuZnByaW50ZiBmbXRcbiAgICAgIFwiJXQlcz0lYVwiIChzcCBpbmRlbnQpIChhbmFtZSBhKSAocHBfYXR0cmliX3ZhbHVlIGVuY29kZSBpbmRlbnQpIGFcblxuICBsZXQgcHBfYXR0cmlicyBlbmNvZGUgaW5kZW50ID1cbiAgICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwOnBwX25vb3AgKHBwX2F0dHJpYiBlbmNvZGUgaW5kZW50KVxuXG4gIGxldCBwcF90YWdfYW5kX2F0dHJpYnMgZW5jb2RlIGluZGVudCBmbXQgKHRhZywgYXR0cnMpID1cbiAgICBvcGVuX2JveCBpbmRlbnQgZm10IDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlcyVhJXRcIiB0YWcgKHBwX2F0dHJpYnMgZW5jb2RlIGluZGVudCkgYXR0cnMgKGN1dCBpbmRlbnQpO1xuICAgIGNsb3NlX2JveCBpbmRlbnQgZm10XG5cbiAgbGV0IHBwX2Nsb3NlZHRhZyBlbmNvZGUgaW5kZW50IGZtdCB0YWcgYXR0cnMgPVxuICAgIGlmIGlzX2VtcHR5dGFnIHRhZyB0aGVuXG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI8JWEvPlwiIChwcF90YWdfYW5kX2F0dHJpYnMgZW5jb2RlIGluZGVudCkgKHRhZywgYXR0cnMpXG4gICAgZWxzZSBiZWdpblxuICAgICAgb3Blbl9ib3ggaW5kZW50IGZtdCA7XG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI8JWE+JXQ8LyVzPlwiXG4gICAgICAgIChwcF90YWdfYW5kX2F0dHJpYnMgZW5jb2RlIGluZGVudCkgKHRhZywgYXR0cnMpXG4gICAgICAgIChjdXQgaW5kZW50KVxuICAgICAgICB0YWcgO1xuICAgICAgY2xvc2VfYm94IGluZGVudCBmbXRcbiAgICBlbmRcblxuICBsZXQgcmVjIHBwX3RhZyBlbmNvZGUgaW5kZW50IGZtdCB0YWcgYXR0cnMgY2hpbGRyZW4gPVxuICAgIG1hdGNoIGNoaWxkcmVuIHdpdGhcbiAgICB8IFtdIC0+IHBwX2Nsb3NlZHRhZyBlbmNvZGUgaW5kZW50IGZtdCB0YWcgYXR0cnNcbiAgICB8IF8gLT5cbiAgICAgIG9wZW5fYm94IGluZGVudCBmbXQgO1xuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiPCV0JWE+JXQlYSV0JXQ8LyVzPlwiXG4gICAgICAgIChvcGVuX2JveCBpbmRlbnQpXG4gICAgICAgIChwcF90YWdfYW5kX2F0dHJpYnMgZW5jb2RlIGluZGVudCkgKHRhZywgYXR0cnMpXG4gICAgICAgIChjdXQgaW5kZW50KVxuICAgICAgICAocHBfZWx0cyBlbmNvZGUgaW5kZW50KSBjaGlsZHJlblxuICAgICAgICAoY2xvc2VfYm94IGluZGVudClcbiAgICAgICAgKGN1dCBpbmRlbnQpXG4gICAgICAgIHRhZyA7XG4gICAgICBjbG9zZV9ib3ggaW5kZW50IGZtdFxuXG4gIGFuZCBwcF9lbHQgZW5jb2RlIGluZGVudCBmbXQgZWx0ID0gbWF0Y2ggY29udGVudCBlbHQgd2l0aFxuICAgIHwgQ29tbWVudCB0ZXh0ZSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiPCEtLSVzLS0+XCIgKGVzY2FwZV9jb21tZW50IHRleHRlKVxuXG4gICAgfCBFbnRpdHkgZSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJiVzO1wiIGVcblxuICAgIHwgUENEQVRBIHRleHRlIC0+XG4gICAgICBwcF9lbmNvZGUgZW5jb2RlIGluZGVudCBmbXQgdGV4dGVcblxuICAgIHwgRW5jb2RlZFBDREFUQSB0ZXh0ZSAtPlxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgdGV4dGVcblxuICAgIHwgTm9kZSAobmFtZSwgeGhfYXR0cnMsIHhoX3RhZ2xpc3QpIC0+XG4gICAgICBwcF90YWcgZW5jb2RlIGluZGVudCBmbXQgbmFtZSB4aF9hdHRycyB4aF90YWdsaXN0XG5cbiAgICB8IExlYWYgKG5hbWUsIHhoX2F0dHJzKSAtPlxuICAgICAgcHBfY2xvc2VkdGFnIGVuY29kZSBpbmRlbnQgZm10IG5hbWUgeGhfYXR0cnNcblxuICAgIHwgRW1wdHkgLT4gKClcblxuICBhbmQgcHBfZWx0cyBlbmNvZGUgaW5kZW50ID1cbiAgICBGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgfnBwX3NlcDooZnVuIGZtdCAoKSAtPiBjdXQgaW5kZW50IGZtdClcbiAgICAgIChwcF9lbHQgZW5jb2RlIGluZGVudClcblxuICBsZXQgcHAgPyhlbmNvZGU9ZW5jb2RlX3Vuc2FmZV9jaGFyKSA/KGluZGVudD1mYWxzZSkgKCkgPVxuICAgIHBwX2VsdCBlbmNvZGUgaW5kZW50XG5cbmVuZFxuXG5tb2R1bGUgTWFrZV90eXBlZF9mbXRcbiAgICAoWG1sIDogWG1sX3NpZ3MuSXRlcmFibGUpXG4gICAgKFR5cGVkX3htbCA6IFhtbF9zaWdzLlR5cGVkX3htbCB3aXRoIG1vZHVsZSBYbWwgOj0gWG1sKSA9XG5zdHJ1Y3RcblxuICBtb2R1bGUgUCA9IE1ha2VfZm10KFhtbCkoVHlwZWRfeG1sLkluZm8pXG5cbiAgKCogQWRkIGFuIHhtbG5zIHRhZyBvbiB0aGUgaHRtbCBlbGVtZW50IGlmIGl0J3Mgbm90IGFscmVhZHkgcHJlc2VudCAqKVxuICBsZXQgcHJlcGFyZV9kb2N1bWVudCBkb2MgPVxuICAgIGxldCBkb2MgPSBUeXBlZF94bWwuZG9jX3RvZWx0IGRvYyBpblxuICAgIG1hdGNoIFhtbC5jb250ZW50IGRvYyB3aXRoXG4gICAgfCBYbWwuTm9kZSAobiwgYSwgYykgLT5cbiAgICAgIGxldCBhID1cbiAgICAgICAgaWYgTGlzdC5leGlzdHMgKGZ1biBhIC0+IFhtbC5hbmFtZSBhID0gXCJ4bWxuc1wiKSBhXG4gICAgICAgIHRoZW4gYVxuICAgICAgICBlbHNlIFhtbC5zdHJpbmdfYXR0cmliIFwieG1sbnNcIiBUeXBlZF94bWwuSW5mby5uYW1lc3BhY2UgOjogYVxuICAgICAgaW5cbiAgICAgIFhtbC5ub2RlIH5hIG4gY1xuICAgIHwgXyAtPiBkb2NcblxuICBsZXQgcHBfZWx0ID8oZW5jb2RlPWVuY29kZV91bnNhZmVfY2hhcikgPyhpbmRlbnQ9ZmFsc2UpICgpIGZtdCBmb3JldCA9XG4gICAgUC5wcF9lbHQgZW5jb2RlIGluZGVudCBmbXQgKFR5cGVkX3htbC50b2VsdCBmb3JldClcblxuICBsZXQgcHAgPyhlbmNvZGUgPSBlbmNvZGVfdW5zYWZlX2NoYXIpID8oaW5kZW50PWZhbHNlKSA/YWR2ZXJ0ICgpIGZtdCBkb2MgPVxuICAgIEZvcm1hdC5wcF9vcGVuX3Zib3ggZm10IDAgO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzQCxcIiBUeXBlZF94bWwuSW5mby5kb2N0eXBlIDtcblxuICAgIGJlZ2luIG1hdGNoIGFkdmVydCB3aXRoXG4gICAgICB8IFNvbWUgcyAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCI8IS0tICVzIC0tPkAsXCIgc1xuICAgICAgfCBOb25lIC0+ICgpXG4gICAgZW5kIDtcblxuICAgIFAucHBfZWx0IGVuY29kZSBpbmRlbnQgZm10IChwcmVwYXJlX2RvY3VtZW50IGRvYykgO1xuICAgIEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpO1xuXG5lbmRcblxubW9kdWxlIE1ha2VcbiAgICAoWG1sIDogWG1sX3NpZ3MuSXRlcmFibGUpXG4gICAgKEkgOiBUYWdMaXN0KVxuICAgIChPIDogWG1sX3NpZ3MuT3V0cHV0KSA9XG5zdHJ1Y3RcblxuICBsZXQgKCsrKSA9IE8uY29uY2F0XG5cbiAgb3BlbiBYbWxcblxuICBsZXQgc2VwYXJhdG9yX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBTcGFjZSAtPiBcIiBcIlxuICAgIHwgQ29tbWEgLT4gXCIsIFwiXG5cbiAgbGV0IGF0dHJpYl92YWx1ZV90b19zdHJpbmcgZW5jb2RlIGEgPSBtYXRjaCBhY29udGVudCBhIHdpdGhcbiAgICB8IEFGbG9hdCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiXFxcIiVzXFxcIlwiIChzdHJpbmdfb2ZfbnVtYmVyIGYpXG4gICAgfCBBSW50IGkgLT4gUHJpbnRmLnNwcmludGYgXCJcXFwiJWRcXFwiXCIgaVxuICAgIHwgQVN0ciBzIC0+IFByaW50Zi5zcHJpbnRmIFwiXFxcIiVzXFxcIlwiIChlbmNvZGUgcylcbiAgICB8IEFTdHJMIChzZXAsIHNsaXN0KSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJcXFwiJXNcXFwiXCJcbiAgICAgICAgKGVuY29kZSAoU3RyaW5nLmNvbmNhdCAoc2VwYXJhdG9yX3RvX3N0cmluZyBzZXApIHNsaXN0KSlcblxuICBsZXQgYXR0cmliX3RvX3N0cmluZyBlbmNvZGUgYSA9XG4gICAgUHJpbnRmLnNwcmludGYgXCIlcz0lc1wiIChhbmFtZSBhKSAoYXR0cmliX3ZhbHVlX3RvX3N0cmluZyBlbmNvZGUgYSlcblxuICBsZXQgcmVjIHhoX3ByaW50X2F0dHJzIGVuY29kZSBhdHRycyA9IG1hdGNoIGF0dHJzIHdpdGhcbiAgICB8IFtdIC0+IE8uZW1wdHlcbiAgICB8IGF0dHI6OnF1ZXVlIC0+XG4gICAgICBPLnB1dCAoXCIgXCJeIGF0dHJpYl90b19zdHJpbmcgZW5jb2RlIGF0dHIpXG4gICAgICArKyB4aF9wcmludF9hdHRycyBlbmNvZGUgcXVldWVcblxuICBhbmQgeGhfcHJpbnRfY2xvc2VkdGFnIGVuY29kZSB0YWcgYXR0cnMgPVxuICAgIGlmIEkuZW1wdHl0YWdzID0gW10gfHwgTGlzdC5tZW0gdGFnIEkuZW1wdHl0YWdzXG4gICAgdGhlblxuICAgICAgKE8ucHV0IChcIjxcIl50YWcpXG4gICAgICAgKysgeGhfcHJpbnRfYXR0cnMgZW5jb2RlIGF0dHJzXG4gICAgICAgKysgTy5wdXQgXCIgLz5cIilcbiAgICBlbHNlXG4gICAgICAoTy5wdXQgKFwiPFwiXnRhZylcbiAgICAgICArKyB4aF9wcmludF9hdHRycyBlbmNvZGUgYXR0cnNcbiAgICAgICArKyBPLnB1dCAoXCI+PC9cIl50YWdeXCI+XCIpKVxuXG4gIGFuZCB4aF9wcmludF90YWcgZW5jb2RlIHRhZyBhdHRycyB0YWdsaXN0ID1cbiAgICBpZiB0YWdsaXN0ID0gW11cbiAgICB0aGVuIHhoX3ByaW50X2Nsb3NlZHRhZyBlbmNvZGUgdGFnIGF0dHJzXG4gICAgZWxzZVxuICAgICAgKE8ucHV0IChcIjxcIl50YWcpXG4gICAgICAgKysgeGhfcHJpbnRfYXR0cnMgZW5jb2RlIGF0dHJzXG4gICAgICAgKysgTy5wdXQgXCI+XCJcbiAgICAgICArKyB4aF9wcmludF90YWdsaXN0IGVuY29kZSB0YWdsaXN0XG4gICAgICAgKysgTy5wdXQgKFwiPC9cIl50YWdeXCI+XCIpKVxuXG4gIGFuZCBwcmludF9ub2RlcyBlbmNvZGUgbmFtZSB4aF9hdHRycyB4aF90YWdsaXN0IHF1ZXVlID1cbiAgICB4aF9wcmludF90YWcgZW5jb2RlIG5hbWUgeGhfYXR0cnMgeGhfdGFnbGlzdFxuICAgICsrIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHF1ZXVlXG5cbiAgYW5kIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHRhZ2xpc3QgPVxuICAgIG1hdGNoIHRhZ2xpc3Qgd2l0aFxuXG4gICAgfCBbXSAtPiBPLmVtcHR5XG5cbiAgICB8IGVsdCA6OiBxdWV1ZSAtPiBtYXRjaCBjb250ZW50IGVsdCB3aXRoXG5cbiAgICAgIHwgQ29tbWVudCB0ZXh0ZSAtPlxuICAgICAgICBPLnB1dCAoXCI8IS0tXCJeKGVuY29kZSB0ZXh0ZSleXCItLT5cIilcbiAgICAgICAgKysgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgcXVldWVcblxuICAgICAgfCBFbnRpdHkgZSAtPlxuICAgICAgICBPLnB1dCAoXCImXCJeZV5cIjtcIikgKCogbm8gZW5jb2RpbmcgKilcbiAgICAgICAgKysgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgcXVldWVcblxuICAgICAgfCBQQ0RBVEEgdGV4dGUgLT5cbiAgICAgICAgTy5wdXQgKGVuY29kZSB0ZXh0ZSlcbiAgICAgICAgKysgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgcXVldWVcblxuICAgICAgfCBFbmNvZGVkUENEQVRBIHRleHRlIC0+XG4gICAgICAgIE8ucHV0IHRleHRlXG4gICAgICAgICsrIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHF1ZXVlXG5cbiAgICAgIHwgTm9kZSAobmFtZSwgeGhfYXR0cnMsIHhoX3RhZ2xpc3QpIC0+XG4gICAgICAgIHByaW50X25vZGVzIGVuY29kZSBuYW1lIHhoX2F0dHJzIHhoX3RhZ2xpc3QgcXVldWVcblxuICAgICAgfCBMZWFmIChuYW1lLCB4aF9hdHRycykgLT5cbiAgICAgICAgcHJpbnRfbm9kZXMgZW5jb2RlIG5hbWUgeGhfYXR0cnMgW10gcXVldWVcblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICB4aF9wcmludF90YWdsaXN0IGVuY29kZSBxdWV1ZVxuXG4gIGxldCBwcmludF9saXN0ID8oZW5jb2RlID0gZW5jb2RlX3Vuc2FmZV9jaGFyKSBmb3JldCA9XG4gICAgTy5tYWtlICh4aF9wcmludF90YWdsaXN0IGVuY29kZSBmb3JldClcblxuZW5kXG5cbm1vZHVsZSBNYWtlX3R5cGVkXG4gICAgKFhtbCA6IFhtbF9zaWdzLkl0ZXJhYmxlKVxuICAgIChUeXBlZF94bWwgOiBYbWxfc2lncy5UeXBlZF94bWwgd2l0aCBtb2R1bGUgWG1sIDo9IFhtbClcbiAgICAoTyA6IFhtbF9zaWdzLk91dHB1dCkgPVxuc3RydWN0XG5cbiAgbW9kdWxlIFAgPSBNYWtlKFhtbCkoVHlwZWRfeG1sLkluZm8pKE8pXG4gIGxldCAoKyspID0gTy5jb25jYXRcblxuICBsZXQgcHJpbnRfbGlzdCA/KGVuY29kZSA9IGVuY29kZV91bnNhZmVfY2hhcikgZm9yZXQgPVxuICAgIE8ubWFrZSAoUC54aF9wcmludF90YWdsaXN0IGVuY29kZSAoTGlzdC5tYXAgVHlwZWRfeG1sLnRvZWx0IGZvcmV0KSlcblxuICBsZXQgcHJpbnQgPyhlbmNvZGUgPSBlbmNvZGVfdW5zYWZlX2NoYXIpID8oYWR2ZXJ0ID0gXCJcIikgZG9jID1cbiAgICBsZXQgZG9jID0gVHlwZWRfeG1sLmRvY190b2VsdCBkb2MgaW5cbiAgICBsZXQgZG9jID0gbWF0Y2ggWG1sLmNvbnRlbnQgZG9jIHdpdGhcbiAgICAgIHwgWG1sLk5vZGUgKG4sIGEsIGMpIC0+XG4gICAgICAgIGxldCBhID1cbiAgICAgICAgICBpZiBMaXN0LmV4aXN0cyAoZnVuIGEgLT4gWG1sLmFuYW1lIGEgPSBcInhtbG5zXCIpIGFcbiAgICAgICAgICB0aGVuIGFcbiAgICAgICAgICBlbHNlIFhtbC5zdHJpbmdfYXR0cmliIFwieG1sbnNcIiBUeXBlZF94bWwuSW5mby5uYW1lc3BhY2UgOjogYVxuICAgICAgICBpblxuICAgICAgICBYbWwubm9kZSB+YSBuIGNcbiAgICAgIHwgXyAtPiBkb2MgaW5cbiAgICBPLm1ha2VcbiAgICAgIChPLnB1dCBUeXBlZF94bWwuSW5mby5kb2N0eXBlXG4gICAgICAgKysgTy5wdXQgKGlmIGFkdmVydCA8PiBcIlwiIHRoZW4gKFwiPCEtLSBcIiBeIGFkdmVydCBeIFwiIC0tPlxcblwiKSBlbHNlIFwiXFxuXCIpXG4gICAgICAgKysgUC54aF9wcmludF90YWdsaXN0IGVuY29kZSBbZG9jXSlcblxuZW5kXG5cbm1vZHVsZSBTaW1wbGVfb3V0cHV0KE0gOiBzaWcgdmFsIHB1dDogc3RyaW5nIC0+IHVuaXQgZW5kKSA9IHN0cnVjdFxuICB0eXBlIG91dCA9IHVuaXRcbiAgdHlwZSBtID0gdW5pdCAtPiB1bml0XG4gIGxldCBlbXB0eSAoKSA9ICgpXG4gIGxldCBjb25jYXQgZjEgZjIgKCkgPSBmMSAoKTsgZjIgKClcbiAgbGV0IHB1dCBzICgpID0gTS5wdXQgc1xuICBsZXQgbWFrZSBmID0gZiAoKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3NpbXBsZVxuICAgIChYbWwgOiBYbWxfc2lncy5JdGVyYWJsZSlcbiAgICAoSSA6IFRhZ0xpc3QpID1cbnN0cnVjdFxuXG4gIGxldCBwcmludF9saXN0IH5vdXRwdXQgPVxuICAgIGxldCBtb2R1bGUgTSA9IE1ha2UoWG1sKShJKShTaW1wbGVfb3V0cHV0KHN0cnVjdCBsZXQgcHV0ID0gb3V0cHV0IGVuZCkpIGluXG4gICAgTS5wcmludF9saXN0XG5cbmVuZFxuXG5tb2R1bGUgTWFrZV90eXBlZF9zaW1wbGVcbiAgICAoWG1sIDogWG1sX3NpZ3MuSXRlcmFibGUpXG4gICAgKFR5cGVkX3htbCA6IFhtbF9zaWdzLlR5cGVkX3htbCB3aXRoICBtb2R1bGUgWG1sIDo9IFhtbCkgPVxuc3RydWN0XG5cbiAgbGV0IHByaW50X2xpc3Qgfm91dHB1dCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIE1ha2VfdHlwZWQoWG1sKShUeXBlZF94bWwpKFNpbXBsZV9vdXRwdXQoc3RydWN0IGxldCBwdXQgPSBvdXRwdXQgZW5kKSkgaW5cbiAgICBNLnByaW50X2xpc3RcblxuICBsZXQgcHJpbnQgfm91dHB1dCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIE1ha2VfdHlwZWQoWG1sKShUeXBlZF94bWwpKFNpbXBsZV9vdXRwdXQoc3RydWN0IGxldCBwdXQgPSBvdXRwdXQgZW5kKSkgaW5cbiAgICBNLnByaW50XG5cbmVuZFxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAwNCBUaG9yc3RlbiBPaGwgPG9obEBwaHlzaWsudW5pLXd1ZXJ6YnVyZy5kZT5cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnQsIEdyw6lnb2lyZSBIZW5yeVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxubW9kdWxlIE1ha2UoWG1sIDogWG1sX3NpZ3MuSXRlcmFibGUpID0gc3RydWN0XG5cbiAgb3BlbiBYbWxcblxuICAoKiogSXRlcmF0b3JzICopXG5cbiAgbGV0IGFtYXAxIGYgbiA9XG4gICAgbWF0Y2ggY29udGVudCBuIHdpdGhcbiAgICB8IEVtcHR5IHwgQ29tbWVudCBfIHwgUENEQVRBIF8gfCBFbmNvZGVkUENEQVRBIF8gfCBFbnRpdHkgXyAtPiBuXG4gICAgfCBMZWFmIChuYW1lLCBhdHRyaWJzKSAtPiBsZWFmIH5hOihmIG5hbWUgYXR0cmlicykgbmFtZVxuICAgIHwgTm9kZSAobmFtZSwgYXR0cmlicywgZWx0cykgLT4gbm9kZSB+YTooZiBuYW1lIGF0dHJpYnMpIG5hbWUgZWx0c1xuXG4gIGxldCByZWMgYW1hcCBmIG4gPVxuICAgIG1hdGNoIGNvbnRlbnQgbiB3aXRoXG4gICAgfCBFbXB0eSB8IENvbW1lbnQgXyB8IFBDREFUQSBfIHwgRW5jb2RlZFBDREFUQSBfIHwgRW50aXR5IF8gLT4gblxuICAgIHwgTGVhZiAobmFtZSwgYXR0cmlicykgLT4gbGVhZiB+YTooZiBuYW1lIGF0dHJpYnMpIG5hbWVcbiAgICB8IE5vZGUgKG5hbWUsIGF0dHJpYnMsIGVsdHMpIC0+XG4gICAgICBub2RlIH5hOihmIG5hbWUgYXR0cmlicykgbmFtZSAoTGlzdC5tYXAgKGFtYXAgZikgZWx0cylcblxuICBsZXQgcmVjIGFkZF9mbG9hdF9hdHRyaWIgbmFtZSB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbZmxvYXRfYXR0cmliIG5hbWUgdmFsdWVdXG4gICAgfCBoZWFkIDo6IHRhaWwgd2hlbiBhbmFtZSBoZWFkID0gbmFtZSAtPlxuICAgICAgZmxvYXRfYXR0cmliIG5hbWUgdmFsdWUgOjogdGFpbFxuICAgIHwgaGVhZCA6OiB0YWlsIC0+IGhlYWQgOjogYWRkX2Zsb2F0X2F0dHJpYiBuYW1lIHZhbHVlIHRhaWxcblxuICBsZXQgbWFwX2Zsb2F0X2F0dHJpYiBpc19hdHRyaWIgZiBsID1cbiAgICBsZXQgYXV4IGhlYWQgPSBtYXRjaCBhY29udGVudCBoZWFkIHdpdGhcbiAgICAgIHwgQUZsb2F0IHZhbHVlIHdoZW4gaXNfYXR0cmliIChhbmFtZSBoZWFkKSAtPiBmbG9hdF9hdHRyaWIgKGFuYW1lIGhlYWQpIChmIHZhbHVlKVxuICAgICAgfCBfIC0+IGhlYWQgaW5cbiAgICBMaXN0Lm1hcCBhdXggbFxuXG4gIGxldCByZWMgYWRkX2ludF9hdHRyaWIgbmFtZSB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbaW50X2F0dHJpYiBuYW1lIHZhbHVlXVxuICAgIHwgaGVhZCA6OiB0YWlsIHdoZW4gYW5hbWUgaGVhZCA9IG5hbWUgLT5cbiAgICAgIGludF9hdHRyaWIgbmFtZSB2YWx1ZSA6OiB0YWlsXG4gICAgfCBoZWFkIDo6IHRhaWwgLT4gaGVhZCA6OiBhZGRfaW50X2F0dHJpYiBuYW1lIHZhbHVlIHRhaWxcblxuICBsZXQgcmVjIHJtX2F0dHJpYiBpc19hdHRyaWIgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IGhlYWQgOjogdGFpbCB3aGVuIGlzX2F0dHJpYiAoYW5hbWUgaGVhZCkgLT4gcm1fYXR0cmliIGlzX2F0dHJpYiB0YWlsXG4gICAgfCBoZWFkIDo6IHRhaWwgLT4gaGVhZCA6OiBybV9hdHRyaWIgaXNfYXR0cmliIHRhaWxcblxuICBsZXQgbWFwX2ludF9hdHRyaWIgaXNfYXR0cmliIGYgbCA9XG4gICAgbGV0IGF1eCBoZWFkID0gbWF0Y2ggYWNvbnRlbnQgaGVhZCB3aXRoXG4gICAgICB8IEFJbnQgdmFsdWUgd2hlbiBpc19hdHRyaWIgKGFuYW1lIGhlYWQpIC0+IGludF9hdHRyaWIgKGFuYW1lIGhlYWQpIChmIHZhbHVlKVxuICAgICAgfCBfIC0+IGhlYWQgaW5cbiAgICBMaXN0Lm1hcCBhdXggbFxuXG4gIGxldCByZWMgYWRkX3N0cmluZ19hdHRyaWIgbmFtZSB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbc3RyaW5nX2F0dHJpYiBuYW1lIHZhbHVlXVxuICAgIHwgaGVhZCA6OiB0YWlsIHdoZW4gYW5hbWUgaGVhZCA9IG5hbWUgLT5cbiAgICAgIHN0cmluZ19hdHRyaWIgbmFtZSB2YWx1ZSA6OiB0YWlsXG4gICAgfCBoZWFkIDo6IHRhaWwgLT4gaGVhZCA6OiBhZGRfc3RyaW5nX2F0dHJpYiBuYW1lIHZhbHVlIHRhaWxcblxuICBsZXQgbWFwX3N0cmluZ19hdHRyaWIgaXNfYXR0cmliIGYgbCA9XG4gICAgbGV0IGF1eCBoZWFkID0gbWF0Y2ggYWNvbnRlbnQgaGVhZCB3aXRoXG4gICAgICB8IEFTdHIgdmFsdWUgd2hlbiBpc19hdHRyaWIgKGFuYW1lIGhlYWQpIC0+IHN0cmluZ19hdHRyaWIgKGFuYW1lIGhlYWQpIChmIHZhbHVlKVxuICAgICAgfCBfIC0+IGhlYWQgaW5cbiAgICBMaXN0Lm1hcCBhdXggbFxuXG4gIGxldCByZWMgYWRkX3NwYWNlX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbc3BhY2Vfc2VwX2F0dHJpYiBuYW1lIFt2YWx1ZV1dXG4gICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgIG1hdGNoIGFjb250ZW50IGhlYWQgd2l0aFxuICAgICAgfCBBU3RyTCAoU3BhY2UsIHZhbHVlcycpIHdoZW4gYW5hbWUgaGVhZCA9IG5hbWUgLT5cbiAgICAgICAgc3BhY2Vfc2VwX2F0dHJpYiBuYW1lICh2YWx1ZSA6OiB2YWx1ZXMnKSA6OiB0YWlsXG4gICAgICB8IF8gd2hlbiBhbmFtZSBoZWFkID0gbmFtZSAtPlxuICAgICAgICBzcGFjZV9zZXBfYXR0cmliIG5hbWUgW3ZhbHVlXSA6OiB0YWlsXG4gICAgICB8IF8gLT4gaGVhZCA6OiBhZGRfc3BhY2Vfc2VwX2F0dHJpYiBuYW1lIHZhbHVlIHRhaWxcblxuICBsZXQgcmVjIGFkZF9jb21tYV9zZXBfYXR0cmliIG5hbWUgdmFsdWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW2NvbW1hX3NlcF9hdHRyaWIgbmFtZSBbdmFsdWVdXVxuICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICBtYXRjaCBhY29udGVudCBoZWFkIHdpdGhcbiAgICAgIHwgQVN0ckwgKENvbW1hLCB2YWx1ZXMnKSB3aGVuIGFuYW1lIGhlYWQgPSBuYW1lIC0+XG4gICAgICAgIGNvbW1hX3NlcF9hdHRyaWIgbmFtZSAodmFsdWUgOjogdmFsdWVzJykgOjogdGFpbFxuICAgICAgfCBfIHdoZW4gYW5hbWUgaGVhZCA9IG5hbWUgLT5cbiAgICAgICAgY29tbWFfc2VwX2F0dHJpYiBuYW1lIFt2YWx1ZV0gOjogdGFpbFxuICAgICAgfCBfIC0+IGhlYWQgOjogYWRkX2NvbW1hX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZSB0YWlsXG5cbiAgbGV0IHJlYyBybV9hdHRyaWJfZnJvbV9saXN0IGlzX2F0dHJpYiBpc192YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICBtYXRjaCBhY29udGVudCBoZWFkIHdpdGhcbiAgICAgIHwgQVN0ckwgKHNlcCwgdmFsdWVzKSB3aGVuIGlzX2F0dHJpYiAoYW5hbWUgaGVhZCkgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggTGlzdC5maWx0ZXIgKGZ1biB2IC0+IG5vdCAoaXNfdmFsdWUgdikpIHZhbHVlcyB3aXRoXG4gICAgICAgICAgfCBbXSAtPiB0YWlsXG4gICAgICAgICAgfCB2YWx1ZXMnIC0+XG4gICAgICAgICAgICBtYXRjaCBzZXAgd2l0aFxuICAgICAgICAgICAgfCBTcGFjZSAtPiBzcGFjZV9zZXBfYXR0cmliIChhbmFtZSBoZWFkKSB2YWx1ZXMnIDo6IHRhaWxcbiAgICAgICAgICAgIHwgQ29tbWEgLT4gY29tbWFfc2VwX2F0dHJpYiAoYW5hbWUgaGVhZCkgdmFsdWVzJyA6OiB0YWlsXG4gICAgICAgIGVuZFxuICAgICAgfCBfIC0+IGhlYWQgOjogcm1fYXR0cmliX2Zyb21fbGlzdCBpc19hdHRyaWIgaXNfdmFsdWUgdGFpbFxuXG4gIGxldCBtYXBfc3RyaW5nX2F0dHJpYl9pbl9saXN0IGlzX2F0dHJpYiBmIGwgPVxuICAgIGxldCBhdXggaGVhZCA9IG1hdGNoIGFjb250ZW50IGhlYWQgd2l0aFxuICAgICAgfCBBU3RyTCAoc2VwLCB2YWx1ZXMpIHdoZW4gaXNfYXR0cmliIChhbmFtZSBoZWFkKSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBzZXAgd2l0aFxuICAgICAgICAgIHwgQ29tbWEgLT4gY29tbWFfc2VwX2F0dHJpYiAoYW5hbWUgaGVhZCkgKExpc3QubWFwIGYgdmFsdWVzKVxuICAgICAgICAgIHwgU3BhY2UgLT4gc3BhY2Vfc2VwX2F0dHJpYiAoYW5hbWUgaGVhZCkgKExpc3QubWFwIGYgdmFsdWVzKVxuICAgICAgICBlbmRcbiAgICAgIHwgXyAtPiBoZWFkIGluXG4gICAgTGlzdC5tYXAgYXV4IGxcblxuICBsZXQgcmVjIGZvbGQgb2ZfZW1wdHkgb2ZfY29tbWVudCBvZl90eHQgb2ZfZW5jb2RlZHBjZGF0YSBvZl9lbnRpdHlcbiAgICAgIG9mX2xlYWYgb2Zfbm9kZSBuID1cbiAgICBtYXRjaCBjb250ZW50IG4gd2l0aFxuICAgIHwgRW1wdHkgLT4gb2ZfZW1wdHkgKClcbiAgICB8IENvbW1lbnQgcyAtPiBvZl9jb21tZW50IHNcbiAgICB8IFBDREFUQSBzIC0+IG9mX3R4dCBzXG4gICAgfCBFbmNvZGVkUENEQVRBIHMgLT4gb2ZfZW5jb2RlZHBjZGF0YSBzXG4gICAgfCBFbnRpdHkgcyAtPiBvZl9lbnRpdHkgc1xuICAgIHwgTGVhZiAobmFtZSwgYXR0cmlicykgLT4gb2ZfbGVhZiBuYW1lIGF0dHJpYnNcbiAgICB8IE5vZGUgKG5hbWUsIGF0dHJpYnMsIGVsdHMpIC0+XG4gICAgICBvZl9ub2RlIG5hbWUgYXR0cmlic1xuICAgICAgICAoTGlzdC5tYXAgKGZvbGQgb2ZfZW1wdHkgb2ZfY29tbWVudCBvZl90eHQgb2ZfZW5jb2RlZHBjZGF0YSBvZl9lbnRpdHkgb2ZfbGVhZiBvZl9ub2RlKSBlbHRzKVxuXG4gIGxldCBhbGxfZW50aXRpZXMgZWx0ID1cbiAgICBsZXQgZiBfID0gW10gaW5cbiAgICBmb2xkIGYgZiBmIGYgZlxuICAgICAgKGZ1biBfZW5hbWUgX2F0dHJpYnMgLT4gW10pIChmdW4gX2VuYW1lIF9hdHRyaWJzIGVsdHMgLT4gTGlzdC5mbGF0dGVuIGVsdHMpXG4gICAgICBlbHRcblxuICBsZXQgZmxhdG1hcCBmIGwgPSBMaXN0LmNvbmNhdCAoTGlzdC5tYXAgZiBsKVxuXG4gIGxldCB0cmFuc2xhdGUgcm9vdF9sZWFmIHJvb3Rfbm9kZSBzdWJfbGVhZiBzdWJfbm9kZSB1cGRhdGVfc3RhdGUgc3RhdGUgbiA9XG4gICAgbGV0IHJlYyB0cmFuc2xhdGUnIHN0YXRlICBuID1cbiAgICAgIG1hdGNoIGNvbnRlbnQgbiB3aXRoXG4gICAgICB8IChFbXB0eSB8IENvbW1lbnQgXyB8IFBDREFUQSBfIHwgRW5jb2RlZFBDREFUQSBfIHwgRW50aXR5IF8pIC0+IFtuXVxuICAgICAgfCBMZWFmIChuYW1lLCBhdHRyaWJzKSAtPlxuICAgICAgICBzdWJfbGVhZiBzdGF0ZSBuYW1lIGF0dHJpYnNcbiAgICAgIHwgTm9kZSAobmFtZSwgYXR0cmlicywgZWx0cykgLT5cbiAgICAgICAgc3ViX25vZGUgc3RhdGUgbmFtZSBhdHRyaWJzXG4gICAgICAgICAgKGZsYXRtYXAgKHRyYW5zbGF0ZScgKHVwZGF0ZV9zdGF0ZSBuYW1lIGF0dHJpYnMgc3RhdGUpKSBlbHRzKVxuICAgIGluXG4gICAgbWF0Y2ggY29udGVudCBuIHdpdGhcbiAgICB8IChFbXB0eSB8IENvbW1lbnQgXyB8IFBDREFUQSBfIHwgRW5jb2RlZFBDREFUQSBfIHwgRW50aXR5IF8pIC0+IG5cbiAgICB8IExlYWYgKG5hbWUsIGF0dHJpYnMpIC0+XG4gICAgICByb290X2xlYWYgbmFtZSBhdHRyaWJzXG4gICAgfCBOb2RlIChuYW1lLCBhdHRyaWJzLCBlbHRzKSAtPlxuICAgICAgcm9vdF9ub2RlIG5hbWUgYXR0cmlicyAoZmxhdG1hcCAodHJhbnNsYXRlJyBzdGF0ZSkgZWx0cylcblxuZW5kXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDEwIGJ5IFNpbW9uIENhc3RlbGxhblxuICogQ29weXJpZ2h0IChDKSAyMDEwIGJ5IENlY2lsZSBIZXJiZWxpblxuICogQ29weXJpZ2h0IChDKSAyMDEwIGJ5IFZpbmNlbnQgQmFsYXRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cbigqKiBUeXBlIGluc3RhbnRpYXRpb25zIGZvciBTVkcgKilcblxuKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgYmFzaWMgZGF0YSB0eXBlcyBmb3IgZGF0YSwgYXR0cmlidXRlc1xuICAgIGFuZCBlbGVtZW50IG9jY3VycmluZyBpbiBTVkcgZG9jdW1lbnRzLlxuICAgIEl0IGlzIGJhc2VkIG9uIHRoZSBzcGVjaWZpY2F0aW9uIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvLlxuXG4gICAgVGhpcyBtb2R1bGUgaXMgZXhwZXJpbWVudGFsLCBpdCBtYXkgbGFjayBvZiBzb21lIGF0dHJpYnV0ZXMsXG4gICAgYW5kIHRoZSBpbnRlcmZhY2UgaXMgdmVyeSBsb3cgbGV2ZWwgYW5kIGRvIG5vdCB0YWtlIGRlZXBseSBpbnRvIGFjY291bnRcbiAgICB0aGUgbmVlZHMgb2YgU1ZHIGVsZW1lbnRzLiAqKVxuXG5vcGVuIFN2Z190eXBlc1xuXG5vcGVuIFVuaXRcblxubGV0IHN0cmluZ19vZl9pcmkgeCA9IFByaW50Zi5zcHJpbnRmIFwidXJsKCVzKVwiIHhcblxubW9kdWxlIFVuaXQgPSBzdHJ1Y3RcblxuICAoKiBsZXQgcmVsIHggICAgID0gKHgsIE5vbmUpICopXG4gICgqIGxldCBkZWcgeCAgICAgPSAoeCwgU29tZSBgRGVnKSAqKVxuICAoKiBsZXQgZ3JhZCB4ICAgID0gKHgsIFNvbWUgYEdyYWQpICopXG4gICgqIGxldCByYWQgeCAgICAgPSAoeCwgU29tZSBgUmFkKSAqKVxuICAoKiBsZXQgbXMgeCAgICAgID0gKHgsIFNvbWUgYE1zKSAqKVxuICAoKiBsZXQgcyB4ICAgICAgID0gKHgsIFNvbWUgYFMpICopXG4gICgqIGxldCBlbSB4ICAgICAgPSAoeCwgU29tZSBgRW0pICopXG4gICgqIGxldCBleCB4ICAgICAgPSAoeCwgU29tZSBgRXgpICopXG4gICgqIGxldCBweCB4ICAgICAgPSAoeCwgU29tZSBgUHgpICopXG4gICgqIGxldCBpbl8geCAgICAgPSAoeCwgU29tZSBgSW4pICopXG4gICgqIGxldCBjbSB4ICAgICAgPSAoeCwgU29tZSBgQ20pICopXG4gICgqIGxldCBtbSB4ICAgICAgPSAoeCwgU29tZSBgTW0pICopXG4gICgqIGxldCBwdCB4ICAgICAgPSAoeCwgU29tZSBgUHQpICopXG4gICgqIGxldCBwYyB4ICAgICAgPSAoeCwgU29tZSBgUGMpICopXG4gICgqIGxldCBwZXJjZW50IHggPSAoeCwgU29tZSBgUGVyY2VudCkgKilcbiAgKCogbGV0IGh6IHggICAgICA9ICh4LCBTb21lIGBIeikgKilcbiAgKCogbGV0IGtoeiB4ICAgICA9ICh4LCBTb21lIGBLSHopICopXG5cbiAgbGV0IHRvX3N0cmluZyBmIChuLCB1bml0KSA9IFByaW50Zi5zcHJpbnRmIFwiJWclc1wiIG4gYmVnaW5cbiAgICBtYXRjaCB1bml0IHdpdGhcbiAgICB8IFNvbWUgdW5pdCAtPiBmIHVuaXRcbiAgICB8IE5vbmUgLT4gXCJcIlxuICBlbmRcblxuICBsZXQgYW5nbGVfbmFtZXMgPSBmdW5jdGlvbiBgRGVnIC0+IFwiZGVnXCIgfCBgR3JhZCAtPiBcImdyYWRcIiB8IGBSYWQgLT4gXCJyYWRcIlxuICBsZXQgc3RyaW5nX29mX2FuZ2xlIGEgPSB0b19zdHJpbmcgYW5nbGVfbmFtZXMgYVxuXG4gICgqIGxldCB0aW1lX25hbWVzID0gZnVuY3Rpb24gYE1zIC0+IFwibXNcIiB8IGBTIC0+IFwic1wiICopXG4gICgqIGxldCBzdHJpbmdfb2ZfdGltZSBhID0gdG9fc3RyaW5nIHRpbWVfbmFtZXMgYSAqKVxuXG4gIGxldCBsZW5ndGhfbmFtZXMgPSBmdW5jdGlvblxuICAgIHwgYEVtIC0+IFwiZW1cIiB8IGBFeCAtPiBcImV4XCIgfCBgUHggLT4gXCJweFwiIHwgYEluIC0+IFwiaW5cIiB8IGBDbSAtPiBcImNtXCJcbiAgICB8IGBNbSAtPiBcIm1tXCIgfCBgUHQgLT4gXCJwdFwiIHwgYFBjIC0+IFwicGNcIiB8IGBQZXJjZW50IC0+IFwiJVwiXG4gIGxldCBzdHJpbmdfb2ZfbGVuZ3RoIChhOiBsZW5ndGgpID0gdG9fc3RyaW5nIGxlbmd0aF9uYW1lcyBhXG5cbiAgKCogbGV0IGZyZXFfbmFtZXMgPSBmdW5jdGlvbiBgSHogLT4gXCJIelwiIHwgYEtIeiAtPiBcImtIelwiICopXG4gICgqIGxldCBzdHJpbmdfb2ZfZnJlcSBhID0gdG9fc3RyaW5nIGZyZXFfbmFtZXMgYSAqKVxuXG5lbmRcblxub3BlbiBVbml0XG5cbmxldCBvcHRfY29uY2F0ID8oc2VwPVwiIFwiKSBzIGYgPSBmdW5jdGlvblxuICB8IFNvbWUgeCAtPiBzIF4gc2VwIF4gKGYgeClcbiAgfCBOb25lIC0+IHNcblxubGV0IGxpc3QgPyhzZXA9XCIgXCIpIGYgbCA9IFN0cmluZy5jb25jYXQgc2VwIChMaXN0Lm1hcCBmIGwpXG5cbmxldCBzdHJpbmdfb2ZfY29sb3IgcyA9IHNcbigqIEZvciBub3cganVzdCBzdHJpbmcsIHdlIG1heSB3YW50IHNvbWV0aGluZyBiZXR0ZXIgaW4gdGhlIGZ1dHVyZS4gKilcblxubGV0IHN0cmluZ19vZl9pY2Njb2xvciBzID0gc1xuXG5sZXQgc3RyaW5nX29mX3BhaW50X3doaXRvdXRfaWNjID0gZnVuY3Rpb25cbiAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICB8IGBDdXJyZW50Q29sb3IgLT4gXCJjdXJyZW50Q29sb3JcIlxuICB8IGBDb2xvciAoYywgaWNjKSAtPiBvcHRfY29uY2F0IChzdHJpbmdfb2ZfY29sb3IgYykgc3RyaW5nX29mX2ljY2NvbG9yIGljY1xuXG5sZXQgc3RyaW5nX29mX3BhaW50ID0gZnVuY3Rpb25cbiAgfCBgSWNjIChpcmksIE5vbmUpIC0+IHN0cmluZ19vZl9pcmkgaXJpXG4gIHwgYEljYyAoaXJpLCBTb21lIGIpIC0+XG4gICAgKHN0cmluZ19vZl9pcmkgaXJpKSBeXCIgXCJeIChzdHJpbmdfb2ZfcGFpbnRfd2hpdG91dF9pY2MgYilcbiAgfCAjcGFpbnRfd2hpdG91dF9pY2MgYXMgYyAtPiBzdHJpbmdfb2ZfcGFpbnRfd2hpdG91dF9pY2MgY1xuXG5sZXQgc3RyaW5nX29mX2ZpbGxfcnVsZSA9IGZ1bmN0aW9uXG4gIHwgYE5vbnplcm8gLT4gXCJub256ZXJvXCJcbiAgfCBgRXZlbm9kZCAtPiBcImV2ZW5vZGRcIlxuXG5tb2R1bGUgTWFrZV93aXRoX3dyYXBwZWRfZnVuY3Rpb25zXG5cbiAgICAoWG1sIDogWG1sX3NpZ3MuVClcbiAgICAoQyA6IFN2Z19zaWdzLldyYXBwZWRfZnVuY3Rpb25zIHdpdGggbW9kdWxlIFhtbCA9IFhtbCkgPVxuXG5zdHJ1Y3RcblxuICBtb2R1bGUgWG1sID0gWG1sXG4gIG1vZHVsZSBXID0gWG1sLldcblxuICBtb2R1bGUgSW5mbyA9IHN0cnVjdFxuICAgIGxldCBjb250ZW50X3R5cGUgPSBcImltYWdlL3N2Zyt4bWxcIlxuICAgIGxldCBhbHRlcm5hdGl2ZV9jb250ZW50X3R5cGVzID0gW11cbiAgICBsZXQgZW1wdHl0YWdzID0gW11cbiAgICBsZXQgdmVyc2lvbiA9IFwiU1ZHIDEuMVwiXG4gICAgbGV0IHN0YW5kYXJkID0gXCJodHRwOi8vd3d3LnczLm9yZy9UUi9zdmcxMS9cIlxuICAgIGxldCBuYW1lc3BhY2UgPSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICBsZXQgZG9jdHlwZSA9XG4gICAgICBYbWxfcHJpbnQuY29tcG9zZV9kb2N0eXBlXCJzdmdcIlxuICAgICAgICBbXCItLy9XM0MvL0RURCBTVkcgMS4xLy9FTlwiO1xuICAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGRcIl1cbiAgZW5kXG5cbiAgdHlwZSB1cmkgPSBYbWwudXJpXG4gIGxldCBzdHJpbmdfb2ZfdXJpID0gWG1sLnN0cmluZ19vZl91cmlcbiAgbGV0IHVyaV9vZl9zdHJpbmcgPSBYbWwudXJpX29mX3N0cmluZ1xuXG5cbiAgKCogTWFuZGF0b3J5IFhNTCBzdHVmZi4gKilcblxuICB0eXBlICdhIGF0dHJpYiA9IFhtbC5hdHRyaWJcblxuICB0eXBlICsnYSBlbHQgPSBYbWwuZWx0XG5cbiAgdHlwZSAnYSB3cmFwID0gJ2EgVy50XG4gIHR5cGUgJ2EgbGlzdF93cmFwID0gJ2EgVy50bGlzdFxuXG4gIHR5cGUgKCdhLCAnYikgbnVsbGFyeSA9ID9hOiAoKCdhIGF0dHJpYikgbGlzdCkgLT4gdW5pdCAtPiAnYiBlbHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSB1bmFyeSA9ID9hOiAoKCdhIGF0dHJpYikgbGlzdCkgLT4gJ2IgZWx0IHdyYXAgLT4gJ2MgZWx0XG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgc3RhciA9XG4gICAgP2E6ICgoJ2EgYXR0cmliKSBsaXN0KSAtPiAoJ2IgZWx0KSBsaXN0X3dyYXAgLT4gJ2MgZWx0XG5cbiAgbGV0IHRvdCB4ID0geFxuXG4gIGxldCB0b3RsIHggPSB4XG5cbiAgbGV0IHRvZWx0IHggPSB4XG5cbiAgbGV0IHRvZWx0bCB4ID0geFxuXG4gIGxldCB0b19hdHRyaWIgeCA9IHhcblxuICBsZXQgbnVsbGFyeSB0YWcgP2EgKCkgPVxuICAgIFhtbC5ub2RlID9hIHRhZyAoVy5uaWwgKCkpXG5cbiAgbGV0IHVuYXJ5IHRhZyA/YSBlbHQgPVxuICAgIFhtbC5ub2RlID9hIHRhZyAoVy5zaW5nbGV0b24gZWx0KVxuXG4gIGxldCBzdGFyIHRhZyA/YSBlbHRzID0gWG1sLm5vZGUgP2EgdGFnIGVsdHNcblxuICB0eXBlIGFsdGdseXBoZGVmX2NvbnRlbnQgPVxuICAgIFsgYFJlZiBvZiAoZ2x5cGhyZWYgZWx0KSBsaXN0XG4gICAgfCBgSXRlbSBvZiAoYWx0Z2x5cGhpdGVtIGVsdCkgbGlzdFxuICAgIF1cblxuICBsZXQgdG9feG1sYXR0cmlicyB4ID0geFxuXG4gIGxldCBmbG9hdF9hdHRyaWIgPSBYbWwuZmxvYXRfYXR0cmliXG5cbiAgbGV0IHN0cmluZ19hdHRyaWIgPSBYbWwuc3RyaW5nX2F0dHJpYlxuXG4gICgqIHdyYXAgQyBtb2R1bGUgZnVuY3Rpb25zICopXG5cbiAgbGV0IHN0cmluZ19vZl9jb29yZCA9IEMuc3RyaW5nX29mX2xlbmd0aFxuXG4gIGxldCBzdHJpbmdfb2ZfbGVuZ3RoID0gQy5zdHJpbmdfb2ZfbGVuZ3RoXG5cbiAgbGV0IHN0cmluZ19vZl9sZW5ndGhzID0gQy5zdHJpbmdfb2ZfbGVuZ3Roc1xuXG4gICgqIEN1c3RvbSBYTUwgYXR0cmlidXRlcyAqKVxuXG4gIGxldCB1c2VyX2F0dHJpYiBmIG5hbWUgdiA9XG4gICAgWG1sLnN0cmluZ19hdHRyaWIgbmFtZSAoVy5mbWFwIGYgdilcblxuICBsZXQgbnVtYmVyX2F0dHJpYiA9IGZsb2F0X2F0dHJpYlxuXG4gICgqIGZvciBub3cgc3RyaW5nX2F0dHJpYiwgd2UgbWF5IHdhbnQgc29tZXRoaW5nIGJldHRlciBpbiB0aGVcbiAgICAgZnV0dXJlLiAqKVxuICBsZXQgY29sb3JfYXR0cmliID0gWG1sLnN0cmluZ19hdHRyaWJcblxuICAoKiBTVkcgYXR0cmlidXRlcyAqKVxuXG4gIGxldCBtZXRhZGF0YSA/YSBjaGlsZHJlbiA9IFhtbC5ub2RlID9hIFwibWV0YWRhdGFcIiBjaGlsZHJlblxuXG4gIGxldCBmb3JlaWduT2JqZWN0ID9hIGNoaWxkcmVuID0gWG1sLm5vZGUgP2EgXCJmb3JlaWduT2JqZWN0XCIgY2hpbGRyZW5cblxuICBsZXQgdHh0IHMgPSBYbWwucGNkYXRhIHNcbiAgbGV0IHBjZGF0YSA9IHR4dFxuXG4gICgqIGdlbmVyYXRlZCAqKVxuICBsZXQgYV92ZXJzaW9uID0gc3RyaW5nX2F0dHJpYiBcInZlcnNpb25cIlxuXG4gIGxldCBhX2Jhc2VQcm9maWxlID0gc3RyaW5nX2F0dHJpYiBcImJhc2VQcm9maWxlXCJcblxuICBsZXQgYV94ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwieFwiXG5cbiAgbGV0IGFfeSA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcInlcIlxuXG4gIGxldCBhX3dpZHRoID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcIndpZHRoXCJcblxuICBsZXQgYV9oZWlnaHQgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwiaGVpZ2h0XCJcblxuICBsZXQgYV9wcmVzZXJ2ZUFzcGVjdFJhdGlvID1cbiAgICBzdHJpbmdfYXR0cmliIFwicHJlc2VydmVBc3BlY3RSYXRpb1wiXG5cbiAgbGV0IGFfY29udGVudFNjcmlwdFR5cGUgPVxuICAgIHN0cmluZ19hdHRyaWIgXCJjb250ZW50U2NyaXB0VHlwZVwiXG5cbiAgbGV0IGFfY29udGVudFN0eWxlVHlwZSA9IHN0cmluZ19hdHRyaWIgXCJjb250ZW50U3R5bGVUeXBlXCJcblxuICBsZXQgYV96b29tQW5kUGFuIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiem9vbUFuZFNwYW5cIiB4XG5cbiAgbGV0IGFfaHJlZiA9IHN0cmluZ19hdHRyaWIgXCJocmVmXCJcblxuICBsZXQgYV94bGlua19ocmVmID0gc3RyaW5nX2F0dHJpYiBcInhsaW5rOmhyZWZcIlxuXG4gIGxldCBhX3JlcXVpcmVkRmVhdHVyZXMgPVxuICAgIFhtbC5zcGFjZV9zZXBfYXR0cmliIFwicmVxdWlyZWRGZWF0dXJlc1wiXG5cbiAgbGV0IGFfcmVxdWlyZWRFeHRlbnNpb25zID1cbiAgICBYbWwuc3BhY2Vfc2VwX2F0dHJpYiBcInJlcXVpcmVkRXh0ZW5zaW9uXCJcblxuICBsZXQgYV9zeXN0ZW1MYW5ndWFnZSA9XG4gICAgWG1sLmNvbW1hX3NlcF9hdHRyaWIgXCJzeXN0ZW1MYW5ndWFnZVwiXG5cbiAgbGV0IGFfZXh0ZXJuYWxSZXNzb3VyY2VzUmVxdWlyZWQgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2Jvb2wgXCJleHRlcm5hbFJlc3NvdXJjZXNSZXF1aXJlZFwiXG5cbiAgbGV0IGFfaWQgPSBzdHJpbmdfYXR0cmliIFwiaWRcIlxuXG4gIGxldCBhX3VzZXJfZGF0YSBuYW1lID0gc3RyaW5nX2F0dHJpYiAoXCJkYXRhLVwiIF4gbmFtZSlcblxuICBsZXQgYV94bWxfYmFzZSA9IHN0cmluZ19hdHRyaWIgXCJ4bWw6YmFzZVwiXG5cbiAgbGV0IGFfeG1sX2xhbmcgPSBzdHJpbmdfYXR0cmliIFwieG1sOmxhbmdcIlxuXG4gIGxldCBhX3htbF9zcGFjZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInhtbDpzcGFjZVwiIHhcblxuICBsZXQgYV90eXBlID0gc3RyaW5nX2F0dHJpYiBcInR5cGVcIlxuXG4gIGxldCBhX21lZGlhID0gWG1sLmNvbW1hX3NlcF9hdHRyaWIgXCJtZWRpYVwiXG5cbiAgbGV0IGFfeGxpbmtfdGl0bGUgPSBzdHJpbmdfYXR0cmliIFwieGxpbms6dGl0bGVcIlxuXG4gIGxldCBhX2NsYXNzID0gWG1sLnNwYWNlX3NlcF9hdHRyaWIgXCJjbGFzc1wiXG5cbiAgbGV0IGFfc3R5bGUgPSBzdHJpbmdfYXR0cmliIFwic3R5bGVcIlxuXG4gIGxldCBhX3RyYW5zZm9ybSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3RyYW5zZm9ybXMgXCJ0cmFuc2Zvcm1cIlxuXG4gIGxldCBhX3ZpZXdCb3ggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9mb3VyZmxvYXRzIFwidmlld0JveFwiXG5cbiAgbGV0IGFfZCA9IHN0cmluZ19hdHRyaWIgXCJkXCJcblxuICBsZXQgYV9wYXRoTGVuZ3RoID0gbnVtYmVyX2F0dHJpYiBcInBhdGhMZW5ndGhcIlxuXG4gIGxldCBhX3J4ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcInJ4XCJcblxuICBsZXQgYV9yeSA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJyeVwiXG5cbiAgbGV0IGFfY3ggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwiY3hcIlxuXG4gIGxldCBhX2N5ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcImN5XCJcblxuICBsZXQgYV9yID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcInJcIlxuXG4gIGxldCBhX3gxID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwieDFcIlxuXG4gIGxldCBhX3kxID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwieTFcIlxuXG4gIGxldCBhX3gyID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwieDJcIlxuXG4gIGxldCBhX3kyID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwieTJcIlxuXG4gIGxldCBhX3BvaW50cyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2Nvb3JkcyBcInBvaW50c1wiXG5cbiAgbGV0IGFfeF9saXN0ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aHMgXCJ4XCJcblxuICBsZXQgYV95X2xpc3QgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RocyBcInlcIlxuXG4gIGxldCBhX2R4ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiZHhcIlxuXG4gIGxldCBhX2R5ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiZHlcIlxuXG4gIGxldCBhX2R4X2xpc3QgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RocyBcImR4XCJcblxuICBsZXQgYV9keV9saXN0ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aHMgXCJkeVwiXG5cbiAgbGV0IGFfbGVuZ3RoQWRqdXN0IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibGVuZ3RoQWRqdXN0XCIgeFxuXG4gIGxldCBhX3RleHRMZW5ndGggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwidGV4dExlbmd0aFwiXG5cbiAgbGV0IGFfdGV4dF9hbmNob3IgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0ZXh0LWFuY2hvclwiIHhcblxuICBsZXQgYV90ZXh0X2RlY29yYXRpb24geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0ZXh0LWRlY29yYXRpb25cIiB4XG5cbiAgbGV0IGFfdGV4dF9yZW5kZXJpbmcgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0ZXh0LXJlbmRlcmluZ1wiIHhcblxuICBsZXQgYV9yb3RhdGUgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJzIFwicm90YXRlXCJcblxuICBsZXQgYV9zdGFydE9mZnNldCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJzdGFydE9mZnNldFwiXG5cbiAgbGV0IGFfbWV0aG9kIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibWV0aG9kXCIgeFxuXG4gIGxldCBhX3NwYWNpbmcgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzcGFjaW5nXCIgeFxuXG4gIGxldCBhX2dseXBoUmVmID0gc3RyaW5nX2F0dHJpYiBcImdseXBoUmVmXCJcblxuICBsZXQgYV9mb3JtYXQgPSBzdHJpbmdfYXR0cmliIFwiZm9ybWF0XCJcblxuICBsZXQgYV9tYXJrZXJVbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm1hcmtlclVuaXRzXCIgeFxuXG4gIGxldCBhX3JlZlggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJyZWZYXCJcblxuICBsZXQgYV9yZWZZID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwicmVmWVwiXG5cbiAgbGV0IGFfbWFya2VyV2lkdGggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwibWFya2VyV2lkdGhcIlxuXG4gIGxldCBhX21hcmtlckhlaWdodCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJtYXJrZXJIZWlnaHRcIlxuXG4gIGxldCBhX29yaWVudCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9vcmllbnQgXCJvcmllbnRcIiB4XG5cbiAgbGV0IGFfbG9jYWwgPSBzdHJpbmdfYXR0cmliIFwibG9jYWxcIlxuXG4gIGxldCBhX3JlbmRlcmluZ19pbnRlbnQgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJyZW5kZXJpbmctaW50ZW50XCIgeFxuXG4gIGxldCBhX2dyYWRpZW50VW5pdHMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJncmFkaWVudFVuaXRzXCIgeFxuXG4gIGxldCBhX2dyYWRpZW50VHJhbnNmb3JtID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl90cmFuc2Zvcm1zIFwiZ3JhZGllbnRUcmFuc2Zvcm1cIlxuXG4gIGxldCBhX3NwcmVhZE1ldGhvZCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInNwcmVhZE1ldGhvZFwiIHhcblxuICBsZXQgYV9meCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcImZ4XCJcblxuICBsZXQgYV9meSA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcImZ5XCJcblxuICBsZXQgYV9vZmZzZXQgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2Zfb2Zmc2V0IFwib2Zmc2V0XCIgeFxuXG4gIGxldCBhX3BhdHRlcm5Vbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInBhdHRlcm5Vbml0c1wiIHhcblxuICBsZXQgYV9wYXR0ZXJuQ29udGVudFVuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwicGF0dGVybkNvbnRlbnRVbml0c1wiIHhcblxuICBsZXQgYV9wYXR0ZXJuVHJhbnNmb3JtIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3RyYW5zZm9ybXMgXCJwYXR0ZXJuVHJhbnNmb3JtXCIgeFxuXG4gIGxldCBhX2NsaXBQYXRoVW5pdHMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJjbGlwUGF0aFVuaXRzXCIgeFxuXG4gIGxldCBhX21hc2tVbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm1hc2tVbml0c1wiIHhcblxuICBsZXQgYV9tYXNrQ29udGVudFVuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibWFza0NvbnRlbnRVbml0c1wiIHhcblxuICBsZXQgYV9wcmltaXRpdmVVbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInByaW1pdGl2ZVVuaXRzXCIgeFxuXG4gIGxldCBhX2ZpbHRlclJlcyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciBcImZpbHRlclJlc1VuaXRzXCJcblxuICBsZXQgYV9yZXN1bHQgPSBzdHJpbmdfYXR0cmliIFwicmVzdWx0XCJcblxuICBsZXQgYV9pbiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9pbl92YWx1ZSBcImluXCIgeFxuXG4gIGxldCBhX2luMiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9pbl92YWx1ZSBcImluMlwiIHhcblxuICBsZXQgYV9hemltdXRoID0gbnVtYmVyX2F0dHJpYiBcImF6aW11dGhcIlxuXG4gIGxldCBhX2VsZXZhdGlvbiA9IG51bWJlcl9hdHRyaWIgXCJlbGV2YXRpb25cIlxuXG4gIGxldCBhX3BvaW50c0F0WCA9IG51bWJlcl9hdHRyaWIgXCJwb2ludHNBdFhcIlxuXG4gIGxldCBhX3BvaW50c0F0WSA9IG51bWJlcl9hdHRyaWIgXCJwb2ludHNBdFlcIlxuXG4gIGxldCBhX3BvaW50c0F0WiA9IG51bWJlcl9hdHRyaWIgXCJwb2ludHNBdFpcIlxuXG4gIGxldCBhX3NwZWN1bGFyRXhwb25lbnQgPSBudW1iZXJfYXR0cmliIFwic3BlY3VsYXJFeHBvbmVudFwiXG5cbiAgbGV0IGFfc3BlY3VsYXJDb25zdGFudCA9IG51bWJlcl9hdHRyaWIgXCJzcGVjdWxhckNvbnN0YW50XCJcblxuICBsZXQgYV9saW1pdGluZ0NvbmVBbmdsZSA9IG51bWJlcl9hdHRyaWIgXCJsaW1pdGluZ0NvbmVBbmdsZVwiXG5cbiAgbGV0IGFfbW9kZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm1vZGVcIiB4XG5cbiAgbGV0IGFfZmVDb2xvck1hdHJpeF90eXBlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidHlwZVwiIHhcblxuICBsZXQgYV92YWx1ZXMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJzIFwidmFsdWVzXCJcblxuICBsZXQgYV90cmFuc2Zlcl90eXBlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidHlwZVwiIHhcblxuICBsZXQgYV90YWJsZVZhbHVlcyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcnMgXCJ0YWJsZVZhbHVlc1wiXG5cbiAgbGV0IGFfaW50ZXJjZXB0ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiaW50ZXJjZXB0XCJcblxuICBsZXQgYV9hbXBsaXR1ZGUgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJhbXBsaXR1ZGVcIlxuXG4gIGxldCBhX2V4cG9uZW50ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiZXhwb25lbnRcIlxuXG4gIGxldCBhX3RyYW5zZmVyX29mZnNldCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcIm9mZnNldFwiXG5cbiAgbGV0IGFfZmVDb21wb3NpdGVfb3BlcmF0b3IgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJvcGVyYXRvclwiIHhcblxuICBsZXQgYV9rMSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImsxXCJcblxuICBsZXQgYV9rMiA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImsyXCJcblxuICBsZXQgYV9rMyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImszXCJcblxuICBsZXQgYV9rNCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcIms0XCJcblxuICBsZXQgYV9vcmRlciA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgXCJvcmRlclwiXG5cbiAgbGV0IGFfa2VybmVsTWF0cml4ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVycyBcImtlcm5lbE1hdHJpeFwiXG5cbiAgbGV0IGFfZGl2aXNvciA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImRpdmlzb3JcIlxuXG4gIGxldCBhX2JpYXMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJiaWFzXCJcblxuICBsZXQgYV9rZXJuZWxVbml0TGVuZ3RoID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyIFwia2VybmVsVW5pdExlbmd0aFwiXG5cbiAgbGV0IGFfdGFyZ2V0WCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2ludCBcInRhcmdldFhcIlxuXG4gIGxldCBhX3RhcmdldFkgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9pbnQgXCJ0YXJnZXRZXCJcblxuICBsZXQgYV9lZGdlTW9kZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInRhcmdldFlcIiB4XG5cbiAgbGV0IGFfcHJlc2VydmVBbHBoYSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2Jvb2wgXCJwcmVzZXJ2ZUFscGhhXCJcblxuICBsZXQgYV9zdXJmYWNlU2NhbGUgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdXJmYWNlU2NhbGVcIlxuXG4gIGxldCBhX2RpZmZ1c2VDb25zdGFudCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiZGlmZnVzZUNvbnN0YW50XCJcblxuICBsZXQgYV9zY2FsZSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInNjYWxlXCJcblxuICBsZXQgYV94Q2hhbm5lbFNlbGVjdG9yIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieENoYW5uZWxTZWxlY3RvclwiIHhcblxuICBsZXQgYV95Q2hhbm5lbFNlbGVjdG9yIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieUNoYW5uZWxTZWxlY3RvclwiIHhcblxuICBsZXQgYV9zdGREZXZpYXRpb24gPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgXCJzdGREZXZpYXRpb25cIlxuXG4gIGxldCBhX2ZlTW9ycGhvbG9neV9vcGVyYXRvciB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm9wZXJhdG9yXCIgeFxuXG4gIGxldCBhX3JhZGl1cyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgXCJyYWRpdXNcIlxuXG4gIGxldCBhX2Jhc2VGcmVucXVlbmN5ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyIFwiYmFzZUZyZXF1ZW5jeVwiXG5cbiAgbGV0IGFfbnVtT2N0YXZlcyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2ludCBcIm51bU9jdGF2ZXNcIlxuXG4gIGxldCBhX3NlZWQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzZWVkXCJcblxuICBsZXQgYV9zdGl0Y2hUaWxlcyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInN0aXRjaFRpbGVzXCIgeFxuXG4gIGxldCBhX2ZlVHVyYnVsZW5jZV90eXBlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidHlwZVwiIHhcblxuICBsZXQgYV94bGlua19zaG93IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieGxpbms6c2hvd1wiIHhcblxuICBsZXQgYV94bGlua19hY3R1YXRlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieGxpbms6YWN0dWF0ZVwiIHhcblxuICBsZXQgYV90YXJnZXQgPSBzdHJpbmdfYXR0cmliIFwieGxpbms6dGFyZ2V0XCJcblxuICBsZXQgYV92aWV3VGFyZ2V0ID0gc3RyaW5nX2F0dHJpYiBcInZpZXdUYXJnZXRcIlxuXG4gIGxldCBhX2F0dHJpYnV0ZU5hbWUgPSBzdHJpbmdfYXR0cmliIFwiYXR0cmlidXRlTmFtZVwiXG5cbiAgbGV0IGFfYXR0cmlidXRlVHlwZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImF0dHJpYnV0ZVR5cGVcIiB4XG5cbiAgbGV0IGFfYmVnaW4gPSBzdHJpbmdfYXR0cmliIFwiYmVnaW5cIlxuXG4gIGxldCBhX2R1ciA9IHN0cmluZ19hdHRyaWIgXCJkdXJcIlxuXG4gIGxldCBhX21pbiA9IHN0cmluZ19hdHRyaWIgXCJtaW5cIlxuXG4gIGxldCBhX21heCA9IHN0cmluZ19hdHRyaWIgXCJtYXhcIlxuXG4gIGxldCBhX3Jlc3RhcnQgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJyZXN0YXJ0XCIgeFxuXG4gIGxldCBhX3JlcGVhdENvdW50ID0gc3RyaW5nX2F0dHJpYiBcInJlcGVhdENvdW50XCJcblxuICBsZXQgYV9yZXBlYXREdXIgPSBzdHJpbmdfYXR0cmliIFwicmVwZWF0RHVyXCJcblxuICBsZXQgYV9maWxsID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfcGFpbnQgXCJmaWxsXCJcblxuICBsZXQgYV9hbmltYXRpb25fZmlsbCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImZpbGxcIiB4XG5cbiAgbGV0IGFfZmlsbF9ydWxlID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfZmlsbF9ydWxlIFwiZmlsbC1ydWxlXCJcblxuICBsZXQgYV9jYWxjTW9kZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImNhbGNNb2RlXCIgeFxuXG4gIGxldCBhX2FuaW1hdGlvbl92YWx1ZXMgPSBYbWwuY29tbWFfc2VwX2F0dHJpYiBcInZhbHVlc1wiXG5cbiAgbGV0IGFfa2V5VGltZXMgPSBYbWwuY29tbWFfc2VwX2F0dHJpYiBcImtleVRpbWVzXCJcblxuICBsZXQgYV9rZXlTcGxpbmVzID0gWG1sLmNvbW1hX3NlcF9hdHRyaWIgXCJrZXlTcGxpbmVzXCJcblxuICBsZXQgYV9mcm9tID0gc3RyaW5nX2F0dHJpYiBcImZyb21cIlxuXG4gIGxldCBhX3RvID0gc3RyaW5nX2F0dHJpYiBcInRvXCJcblxuICBsZXQgYV9ieSA9IHN0cmluZ19hdHRyaWIgXCJieVwiXG5cbiAgbGV0IGFfYWRkaXRpdmUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJhZGRpdGl2ZVwiIHhcblxuICBsZXQgYV9hY2N1bXVsYXRlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiYWNjdW11bGF0ZVwiIHhcblxuICBsZXQgYV9rZXlQb2ludHMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJzX3NlbWljb2xvbiBcImtleVBvaW50c1wiXG5cbiAgbGV0IGFfcGF0aCA9IHN0cmluZ19hdHRyaWIgXCJwYXRoXCJcblxuICBsZXQgYV9hbmltYXRlVHJhbnNmb3JtX3R5cGUgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidHlwZVwiXG5cbiAgbGV0IGFfaG9yaXpfb3JpZ2luX3ggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJob3Jpei1vcmlnaW4teFwiXG5cbiAgbGV0IGFfaG9yaXpfb3JpZ2luX3kgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJob3Jpei1vcmlnaW4teVwiXG5cbiAgbGV0IGFfaG9yaXpfYWR2X3ggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJob3Jpei1hZHYteFwiXG5cbiAgbGV0IGFfdmVydF9vcmlnaW5feCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInZlcnQtb3JpZ2luLXhcIlxuXG4gIGxldCBhX3ZlcnRfb3JpZ2luX3kgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ2ZXJ0LW9yaWdpbi15XCJcblxuICBsZXQgYV92ZXJ0X2Fkdl95ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidmVydC1hZHYteVwiXG5cbiAgbGV0IGFfdW5pY29kZSA9IHN0cmluZ19hdHRyaWIgXCJ1bmljb2RlXCJcblxuICBsZXQgYV9nbHlwaF9uYW1lID0gc3RyaW5nX2F0dHJpYiBcImdseXBobmFtZVwiXG5cbiAgbGV0IGFfb3JpZW50YXRpb24geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJvcmllbnRhdGlvblwiIHhcblxuICBsZXQgYV9hcmFiaWNfZm9ybSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImFyYWJpYy1mb3JtXCIgeFxuXG4gIGxldCBhX2xhbmcgPSBzdHJpbmdfYXR0cmliIFwibGFuZ1wiXG5cbiAgbGV0IGFfdTEgPSBzdHJpbmdfYXR0cmliIFwidTFcIlxuXG4gIGxldCBhX3UyID0gc3RyaW5nX2F0dHJpYiBcInUyXCJcblxuICBsZXQgYV9nMSA9IHN0cmluZ19hdHRyaWIgXCJnMVwiXG5cbiAgbGV0IGFfZzIgPSBzdHJpbmdfYXR0cmliIFwiZzJcIlxuXG4gIGxldCBhX2sgPSBzdHJpbmdfYXR0cmliIFwia1wiXG5cbiAgbGV0IGFfZm9udF9mYW1pbHkgPSBzdHJpbmdfYXR0cmliIFwiZm9udC1mYW1pbHlcIlxuXG4gIGxldCBhX2ZvbnRfc3R5bGUgPSBzdHJpbmdfYXR0cmliIFwiZm9udC1zdHlsZVwiXG5cbiAgbGV0IGFfZm9udF92YXJpYW50ID0gc3RyaW5nX2F0dHJpYiBcImZvbnQtdmFyaWFudFwiXG5cbiAgbGV0IGFfZm9udF93ZWlnaHQgPSBzdHJpbmdfYXR0cmliIFwiZm9udC13ZWlnaHRcIlxuXG4gIGxldCBhX2ZvbnRfc3RyZXRjaCA9IHN0cmluZ19hdHRyaWIgXCJmb250LXN0cmV0Y2hcIlxuXG4gIGxldCBhX2ZvbnRfc2l6ZSA9IHN0cmluZ19hdHRyaWIgXCJmb250LXNpemVcIlxuXG4gIGxldCBhX3VuaWNvZGVfcmFuZ2UgPSBzdHJpbmdfYXR0cmliIFwidW5pY29kZS1yYW5nZVwiXG5cbiAgbGV0IGFfdW5pdHNfcGVyX2VtID0gc3RyaW5nX2F0dHJpYiBcInVuaXRzLXBlci1lbVwiXG5cbiAgbGV0IGFfc3RlbXYgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdGVtdlwiXG5cbiAgbGV0IGFfc3RlbWggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdGVtaFwiXG5cbiAgbGV0IGFfc2xvcGUgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzbG9wZVwiXG5cbiAgbGV0IGFfY2FwX2hlaWdodCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImNhcC1oZWlnaHRcIlxuXG4gIGxldCBhX3hfaGVpZ2h0ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwieC1oZWlnaHRcIlxuXG4gIGxldCBhX2FjY2VudF9oZWlnaHQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJhY2NlbnQtaGVpZ2h0XCJcblxuICBsZXQgYV9hc2NlbnQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJhc2NlbnRcIlxuXG4gIGxldCBhX3dpZHRocyA9IHN0cmluZ19hdHRyaWIgXCJ3aWR0aHNcIlxuXG4gIGxldCBhX2Jib3ggPSBzdHJpbmdfYXR0cmliIFwiYmJveFwiXG5cbiAgbGV0IGFfaWRlb2dyYXBoaWMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJpZGVvZ3JhcGhpY1wiXG5cbiAgbGV0IGFfYWxwaGFiZXRpYyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImFscGhhYmV0aWNcIlxuXG4gIGxldCBhX21hdGhlbWF0aWNhbCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcIm1hdGhlbWF0aWNhbFwiXG5cbiAgbGV0IGFfaGFuZ2luZyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImhhbmdpbmdcIlxuXG4gIGxldCBhX3ZpZGVvZ3JhcGhpYyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInYtaWRlb2dyYXBoaWNcIlxuXG4gIGxldCBhX3ZfYWxwaGFiZXRpYyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInYtYWxwaGFiZXRpY1wiXG5cbiAgbGV0IGFfdl9tYXRoZW1hdGljYWwgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ2LW1hdGhlbWF0aWNhbFwiXG5cbiAgbGV0IGFfdl9oYW5naW5nID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidi1oYW5naW5nXCJcblxuICBsZXQgYV91bmRlcmxpbmVfcG9zaXRpb24gPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInVuZGVybGluZS1wb3NpdGlvblwiXG5cbiAgbGV0IGFfdW5kZXJsaW5lX3RoaWNrbmVzcyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidW5kZXJsaW5lLXRoaWNrbmVzc1wiXG5cbiAgbGV0IGFfc3RyaWtldGhyb3VnaF9wb3NpdGlvbiA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic3RyaWtldGhyb3VnaC1wb3NpdGlvblwiXG5cbiAgbGV0IGFfc3RyaWtldGhyb3VnaF90aGlja25lc3MgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN0cmlrZXRocm91Z2gtdGhpY2tuZXNzXCJcblxuICBsZXQgYV9vdmVybGluZV9wb3NpdGlvbiA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcIm92ZXJsaW5lLXBvc2l0aW9uXCJcblxuICBsZXQgYV9vdmVybGluZV90aGlja25lc3MgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcIm92ZXJsaW5lLXRoaWNrbmVzc1wiXG5cbiAgbGV0IGFfc3RyaW5nID0gc3RyaW5nX2F0dHJpYiBcInN0cmluZ1wiXG5cbiAgbGV0IGFfbmFtZSA9IHN0cmluZ19hdHRyaWIgXCJuYW1lXCJcblxuICBsZXQgYV9hbGlnbm1lbnRfYmFzZWxpbmUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYWxpZ25tZW50X2Jhc2VsaW5lIFwiYWxpZ25tZW50LWJhc2VsaW5lXCIgeFxuXG4gIGxldCBhX2RvbWluYW50X2Jhc2VsaW5lIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2RvbWluYW50X2Jhc2VsaW5lIFwiZG9taW5hbnQtYmFzZWxpbmVcIiB4XG5cbiAgKCoqIEphdmFzY3JpcHQgZXZlbnRzICopXG5cbiAgbGV0IGFfb25hYm9ydCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYWJvcnRcIlxuICBsZXQgYV9vbmFjdGl2YXRlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25hY3RpdmF0ZVwiXG4gIGxldCBhX29uYmVnaW4gPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmJlZ2luXCJcbiAgbGV0IGFfb25lbmQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmVuZFwiXG4gIGxldCBhX29uZXJyb3IgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmVycm9yXCJcbiAgbGV0IGFfb25mb2N1c2luID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25mb2N1c2luXCJcbiAgbGV0IGFfb25mb2N1c291dCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZm9jdXNvdXRcIlxuICBsZXQgYV9vbmxvYWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmxvYWRcIlxuICBsZXQgYV9vbnJlcGVhdCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucmVwZWF0XCJcbiAgbGV0IGFfb25yZXNpemUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnJlc2l6ZVwiXG4gIGxldCBhX29uc2Nyb2xsID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zY3JvbGxcIlxuICBsZXQgYV9vbnVubG9hZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udW5sb2FkXCJcbiAgbGV0IGFfb256b29tID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib256b29tXCJcblxuICAoKiogSmF2YXNjcmlwdCBtb3VzZSBldmVudHMgKilcblxuICBsZXQgYV9vbmNsaWNrID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25jbGlja1wiXG4gIGxldCBhX29ubW91c2Vkb3duID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZWRvd25cIlxuICBsZXQgYV9vbm1vdXNldXAgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNldXBcIlxuICBsZXQgYV9vbm1vdXNlb3ZlciA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2VvdmVyXCJcbiAgbGV0IGFfb25tb3VzZW91dCA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2VvdXRcIlxuICBsZXQgYV9vbm1vdXNlbW92ZSA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2Vtb3ZlXCJcblxuICAoKiogSmF2YXNjcmlwdCB0b3VjaCBldmVudHMgKilcbiAgbGV0IGFfb250b3VjaHN0YXJ0ID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaHN0YXJ0XCJcbiAgbGV0IGFfb250b3VjaGVuZCA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udG91Y2hlbmRcIlxuICBsZXQgYV9vbnRvdWNobW92ZSA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udG91Y2htb3ZlXCJcbiAgbGV0IGFfb250b3VjaGNhbmNlbCA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udG91Y2hjYW5jZWxcIlxuXG4gIGxldCBhX3N0b3BfY29sb3IgPSBjb2xvcl9hdHRyaWIgXCJzdG9wLWNvbG9yXCJcblxuICBsZXQgYV9zdG9wX29wYWNpdHkgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdG9wLW9wYWNpdHlcIlxuXG4gIGxldCBhX3N0cm9rZSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3BhaW50IFwic3Ryb2tlXCJcblxuICBsZXQgYV9zdHJva2Vfd2lkdGggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9sZW5ndGggXCJzdHJva2Utd2lkdGhcIlxuXG4gIGxldCBhX3N0cm9rZV9saW5lY2FwIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwic3Ryb2tlLWxpbmVjYXBcIiB4XG5cbiAgbGV0IGFfc3Ryb2tlX2xpbmVqb2luIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwic3Ryb2tlLWxpbmVqb2luXCIgeFxuXG4gIGxldCBhX3N0cm9rZV9taXRlcmxpbWl0ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdHJva2UtbWl0ZXJsaW1pdFwiXG5cbiAgbGV0IGFfc3Ryb2tlX2Rhc2hhcnJheSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9zdHJva2VkYXNoYXJyYXkgXCJzdHJva2UtZGFzaGFycmF5XCIgeFxuXG4gIGxldCBhX3N0cm9rZV9kYXNob2Zmc2V0ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9sZW5ndGggXCJzdHJva2UtZGFzaG9mZnNldFwiXG5cbiAgbGV0IGFfc3Ryb2tlX29wYWNpdHkgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN0cm9rZS1vcGFjaXR5XCJcblxuICAoKiB4bGluayBuYW1lc3BhY2UgZ2l2ZW4gYSBuaWNrbmFtZSBzaW5jZSBzb21lIGF0dHJpYnV0ZXMgbWFuZGF0ZWQgYnlcbiAgICAgdGhlIHN2ZyBzdGFuZGFyZCBzdWNoIGFzIHhsaW5rOmhyZWYgbGl2ZSBpbiB0aGF0IG5hbWVzcGFjZSwgYW5kIHdlXG4gICAgIHJlZmVyIHRvIHRoZW0gYXMgXCJ4bGluazp3aGF0ZXZlclwiIChzZWUgYV94bGlua19ocmVmIG9yIGFfeGxpbmtzaG93KVxuICAqKVxuICBsZXQgc3ZnID8oYSA9IFtdKSBjaGlsZHJlbiA9XG4gICAgbGV0IGF0dHJpYnMgPVxuICAgICAgc3RyaW5nX2F0dHJpYiBcInhtbG5zXCIgKFcucmV0dXJuIFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIilcbiAgICAgIDo6IHN0cmluZ19hdHRyaWIgXCJ4bWxuczp4bGlua1wiIChXLnJldHVybiBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIilcbiAgICAgIDo6IHRvX3htbGF0dHJpYnMgYVxuICAgIGluXG4gICAgc3RhciB+YTooYXR0cmlicykgXCJzdmdcIiBjaGlsZHJlblxuXG4gICgqIGFsc28gZ2VuZXJhdGVkICopXG4gIGxldCBnID0gc3RhciBcImdcIlxuXG4gIGxldCBkZWZzID0gc3RhciBcImRlZnNcIlxuXG4gIGxldCBkZXNjID0gdW5hcnkgXCJkZXNjXCJcblxuICBsZXQgdGl0bGUgPSB1bmFyeSBcInRpdGxlXCJcblxuICBsZXQgc3ltYm9sID0gc3RhciBcInN5bWJvbFwiXG5cbiAgbGV0IHVzZSA9IHN0YXIgXCJ1c2VcIlxuXG4gIGxldCBpbWFnZSA9IHN0YXIgXCJpbWFnZVwiXG5cbiAgbGV0IHN3aXRjaCA9IHN0YXIgXCJzd2l0Y2hcIlxuXG4gIGxldCBzdHlsZSA9IHVuYXJ5IFwic3R5bGVcIlxuXG4gIGxldCBwYXRoID0gc3RhciBcInBhdGhcIlxuXG4gIGxldCByZWN0ID0gc3RhciBcInJlY3RcIlxuXG4gIGxldCBjaXJjbGUgPSBzdGFyIFwiY2lyY2xlXCJcblxuICBsZXQgZWxsaXBzZSA9IHN0YXIgXCJlbGxpcHNlXCJcblxuICBsZXQgbGluZSA9IHN0YXIgXCJsaW5lXCJcblxuICBsZXQgcG9seWxpbmUgPSBzdGFyIFwicG9seWxpbmVcIlxuXG4gIGxldCBwb2x5Z29uID0gc3RhciBcInBvbHlnb25cIlxuXG4gIGxldCB0ZXh0ID0gc3RhciBcInRleHRcIlxuXG4gIGxldCB0c3BhbiA9IHN0YXIgXCJ0c3BhblwiXG5cbiAgbGV0IHRyZWYgPSBzdGFyIFwidHJlZlwiXG5cbiAgbGV0IHRleHRQYXRoID0gc3RhciBcInRleHRQYXRoXCJcblxuICBsZXQgYWx0R2x5cGggPSB1bmFyeSBcImFsdEdseXBoXCJcblxuICBsZXQgYWx0R2x5cGhEZWYgPSB1bmFyeSBcImFsdEdseXBoRGVmXCJcblxuICBsZXQgYWx0R2x5cGhJdGVtID0gc3RhciBcImFsdEdseXBoSXRlbVwiXG5cbiAgbGV0IGdseXBoUmVmID0gbnVsbGFyeSBcImdseXBoUmVmXCJcblxuICBsZXQgbWFya2VyID0gc3RhciBcIm1hcmtlclwiXG5cbiAgbGV0IGNvbG9yX3Byb2ZpbGUgPSBzdGFyIFwiY29sb3ItcHJvZmlsZVwiXG5cbiAgbGV0IGxpbmVhckdyYWRpZW50ID0gc3RhciBcImxpbmVhckdyYWRpZW50XCJcblxuICBsZXQgcmFkaWFsR3JhZGllbnQgPSBzdGFyIFwicmFkaWFsR3JhZGllbnRcIlxuXG4gIGxldCBzdG9wID0gc3RhciBcInN0b3BcIlxuXG4gIGxldCBwYXR0ZXJuID0gc3RhciBcInBhdHRlcm5cIlxuXG4gIGxldCBjbGlwUGF0aCA9IHN0YXIgXCJjbGlwUGF0aFwiXG5cbiAgbGV0IGZpbHRlciA9IHN0YXIgXCJmaWx0ZXJcIlxuXG4gIGxldCBmZURpc3RhbnRMaWdodCA9IHN0YXIgXCJmZURpc3RhbnRMaWdodFwiXG5cbiAgbGV0IGZlUG9pbnRMaWdodCA9IHN0YXIgXCJmZVBvaW50TGlnaHRcIlxuXG4gIGxldCBmZVNwb3RMaWdodCA9IHN0YXIgXCJmZVNwb3RMaWdodFwiXG5cbiAgbGV0IGZlQmxlbmQgPSBzdGFyIFwiZmVCbGVuZFwiXG5cbiAgbGV0IGZlQ29sb3JNYXRyaXggPSBzdGFyIFwiZmVDb2xvck1hdHJpeFwiXG5cbiAgbGV0IGZlQ29tcG9uZW50VHJhbnNmZXIgPSBzdGFyIFwiZmVDb21wb25lbnRUcmFuc2ZlclwiXG5cbiAgbGV0IGZlRnVuY0EgPSBzdGFyIFwiZmVGdW5jQVwiXG5cbiAgbGV0IGZlRnVuY0cgPSBzdGFyIFwiZmVGdW5jR1wiXG5cbiAgbGV0IGZlRnVuY0IgPSBzdGFyIFwiZmVGdW5jQlwiXG5cbiAgbGV0IGZlRnVuY1IgPSBzdGFyIFwiZmVGdW5jUlwiXG5cbiAgbGV0IGZlQ29tcG9zaXRlID0gc3RhciBcImZlQ29tcG9zaXRlXCJcblxuICBsZXQgZmVDb252b2x2ZU1hdHJpeCA9IHN0YXIgXCJmZUNvbnZvbHZlTWF0cml4XCJcblxuICBsZXQgZmVEaWZmdXNlTGlnaHRpbmcgPSBzdGFyIFwiZmVEaWZmdXNlTGlnaHRpbmdcIlxuXG4gIGxldCBmZURpc3BsYWNlbWVudE1hcCA9IHN0YXIgXCJmZURpc3BsYWNlbWVudE1hcFwiXG5cbiAgbGV0IGZlRmxvb2QgPSBzdGFyIFwiZmVGbG9vZFwiXG5cbiAgbGV0IGZlR2F1c3NpYW5CbHVyID0gc3RhciBcImZlR2F1c3NpYW5CbHVyXCJcblxuICBsZXQgZmVJbWFnZSA9IHN0YXIgXCJmZUltYWdlXCJcblxuICBsZXQgZmVNZXJnZSA9IHN0YXIgXCJmZU1lcmdlXCJcblxuICBsZXQgZmVNb3JwaG9sb2d5ID0gc3RhciBcImZlTW9ycGhvbG9neVwiXG5cbiAgbGV0IGZlT2Zmc2V0ID0gc3RhciBcImZlT2Zmc2V0XCJcblxuICBsZXQgZmVTcGVjdWxhckxpZ2h0aW5nID0gc3RhciBcImZlU3BlY3VsYXJMaWdodGluZ1wiXG5cbiAgbGV0IGZlVGlsZSA9IHN0YXIgXCJmZVRpbGVcIlxuXG4gIGxldCBmZVR1cmJ1bGVuY2UgPSBzdGFyIFwiZmVUdXJidWxlbmNlXCJcblxuICBsZXQgY3Vyc29yID0gc3RhciBcImN1cnNvclwiXG5cbiAgbGV0IGEgPSBzdGFyIFwiYVwiXG5cbiAgbGV0IHZpZXcgPSBzdGFyIFwidmlld1wiXG5cbiAgbGV0IHNjcmlwdCA9IHVuYXJ5IFwic2NyaXB0XCJcblxuICBsZXQgYW5pbWF0ZSA9IHN0YXIgXCJhbmltYXRlXCJcblxuICBsZXQgYW5pbWF0aW9uID0gYW5pbWF0ZVxuXG4gIGxldCBzZXQgPSBzdGFyIFwic2V0XCJcblxuICBsZXQgYW5pbWF0ZU1vdGlvbiA9IHN0YXIgXCJhbmltYXRlTW90aW9uXCJcblxuICBsZXQgbXBhdGggPSBzdGFyIFwibXBhdGhcIlxuXG4gIGxldCBhbmltYXRlQ29sb3IgPSBzdGFyIFwiYW5pbWF0ZUNvbG9yXCJcblxuICBsZXQgYW5pbWF0ZVRyYW5zZm9ybSA9IHN0YXIgXCJhbmltYXRlVHJhbnNmb3JtXCJcblxuICBsZXQgZm9udCA9IHN0YXIgXCJmb250XCJcblxuICBsZXQgZ2x5cGggPSBzdGFyIFwiZ2x5cGhcIlxuXG4gIGxldCBtaXNzaW5nX2dseXBoID0gc3RhciBcIm1pc3NpbmctZ2x5cGhcIlxuXG4gIGxldCBoa2VybiA9IG51bGxhcnkgXCJoa2VyblwiXG5cbiAgbGV0IHZrZXJuID0gbnVsbGFyeSBcInZrZXJuXCJcblxuICBsZXQgZm9udF9mYWNlID0gbnVsbGFyeSBcImZvbnQtZmFjZVwiXG5cbiAgbGV0IGZvbnRfZmFjZV9zcmMgPSBzdGFyIFwiZm9udC1mYWNlLXNyY1wiXG5cbiAgbGV0IGZvbnRfZmFjZV91cmkgPSBzdGFyIFwiZm9udC1mYWNlLXVyaVwiXG5cbiAgbGV0IGZvbnRfZmFjZV9mb3JtYXQgPSBudWxsYXJ5IFwiZm9udC1mYWNlLXVyaVwiXG5cbiAgbGV0IGZvbnRfZmFjZV9uYW1lID0gbnVsbGFyeSBcImZvbnQtZmFjZS1uYW1lXCJcblxuICB0eXBlIGRvYyA9IFsgYFN2ZyBdIGVsdFxuICBsZXQgZG9jX3RvZWx0IHggPSB4XG5cbiAgbW9kdWxlIEkgPSBYbWxfc3RyZWFtLkltcG9ydChYbWwpXG4gIGxldCBvZl9zZXEgcyA9IHRvdGwgQEAgSS5vZl9zZXEgc1xuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcblxuICAgIGxldCBkYXRhIHMgPSBYbWwuZW5jb2RlZHBjZGF0YSBzXG5cbiAgICBsZXQgbGVhZiB0YWcgP2EgKCkgPSBYbWwubGVhZiA/YSB0YWdcblxuICAgIGxldCBub2RlIHRhZyA/YSBlbHRzID0gWG1sLm5vZGUgP2EgdGFnIGVsdHNcblxuICAgIGxldCBjb2VyY2VfZWx0IHggPSB4XG5cbiAgICBsZXQgZmxvYXRfYXR0cmliID0gWG1sLmZsb2F0X2F0dHJpYlxuXG4gICAgbGV0IGludF9hdHRyaWIgPSBYbWwuaW50X2F0dHJpYlxuXG4gICAgbGV0IHN0cmluZ19hdHRyaWIgPSBYbWwuc3RyaW5nX2F0dHJpYlxuXG4gICAgbGV0IHVyaV9hdHRyaWIgYSBzID0gWG1sLnVyaV9hdHRyaWIgYSBzXG5cbiAgICBsZXQgc3BhY2Vfc2VwX2F0dHJpYiA9IFhtbC5zcGFjZV9zZXBfYXR0cmliXG5cbiAgICBsZXQgY29tbWFfc2VwX2F0dHJpYiA9IFhtbC5jb21tYV9zZXBfYXR0cmliXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgV3JhcHBlZF9mdW5jdGlvbnNcbiAgICAoWG1sIDogWG1sX3NpZ3MuVCB3aXRoIHR5cGUgKCdhLCdiKSBXLmZ0ID0gJ2EgLT4gJ2IpID1cbnN0cnVjdFxuXG4gIG1vZHVsZSBYbWwgPSBYbWxcblxuICBsZXQgc3RyaW5nX29mX2FsaWdubWVudF9iYXNlbGluZSA9IGZ1bmN0aW9uXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgYEJhc2VsaW5lIC0+IFwiYmFzZWxpbmVcIlxuICAgIHwgYEJlZm9yZV9lZGdlIC0+IFwiYmVmb3JlLWVkZ2VcIlxuICAgIHwgYFRleHRfYmVmb3JlX2VkZ2UgLT4gXCJ0ZXh0LWJlZm9yZS1lZGdlXCJcbiAgICB8IGBNaWRkbGUgLT4gXCJtaWRkbGVcIlxuICAgIHwgYENlbnRyYWwgLT4gXCJjZW50cmFsXCJcbiAgICB8IGBBZnRlcl9lZGdlIC0+IFwiYWZ0ZXItZWRnZVwiXG4gICAgfCBgVGV4dF9hZnRlcl9lZGdlIC0+IFwidGV4dC1hZnRlci1lZGdlXCJcbiAgICB8IGBJZGVvZ3JhcGhpYyAtPiBcImlkZW9ncmFwaGljXCJcbiAgICB8IGBBbHBoYWJldGljIC0+IFwiYWxwaGFiZXRpY1wiXG4gICAgfCBgSGFuZ2luZy0+IFwiaGFuZ2luZ1wiXG4gICAgfCBgTWF0aGVtYXRpY2FsIC0+IFwibWF0aGVtYXRpY2FsXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG5cbiAgbGV0IHN0cmluZ19vZl9iaWdfdmFyaWFudCA9IGZ1bmN0aW9uXG4gICAgfCBgQSAtPiBcImFcIlxuICAgIHwgYEFic29sdXRlX2NvbG9yaW1ldHJpYyAtPiBcImFic29sdXRlX2NvbG9yaW1ldHJpY1wiXG4gICAgfCBgQWxpZ24gLT4gXCJcIlxuICAgIHwgYEFsd2F5cyAtPiBcImFsd2F5c1wiXG4gICAgfCBgQXRvcCAtPiBcImF0b3BcIlxuICAgIHwgYEFyaXRobWV0aWMgLT4gXCJhcml0aG1ldGljXCJcbiAgICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gICAgfCBgQiAtPiBcImJcIlxuICAgIHwgYEJldmVyIC0+IFwiYmV2ZWxcIlxuICAgIHwgYEJsaW5rIC0+IFwiYmxpbmtcIlxuICAgIHwgYEJ1dHQgLT4gXCJidXR0XCJcbiAgICB8IGBDU1MgLT4gXCJDU1NcIlxuICAgIHwgYERhcmtlbiAtPiBcImRhcmtlblwiXG4gICAgfCBgRGVmYXVsdCAtPiBcImRlZmF1bHRcIlxuICAgIHwgYERpbGF0ZSAtPiBcImRpbGF0ZVwiXG4gICAgfCBgRGlzYWJsZSAtPiBcImRpc2FibGVcIlxuICAgIHwgYERpc2NyZXRlIC0+IFwiZGlzY3JldGVcIlxuICAgIHwgYER1cGxpY2F0ZSAtPiBcImR1cGxpY2F0ZVwiXG4gICAgfCBgRW5kIC0+IFwiZW5kXCJcbiAgICB8IGBFcm9kZSAtPiBcImVyb2RlXCJcbiAgICB8IGBFeGFjdCAtPiBcImV4YWN0XCJcbiAgICB8IGBGcmFjdGFsTm9pc2UgLT4gXCJmcmFjdGFsTm9pc2VcIlxuICAgIHwgYEZyZWV6ZSAtPiBcImZyZWV6ZVwiXG4gICAgfCBgSHVlUm90YXRlIC0+IFwiaHVlUm90YXRlXCJcbiAgICB8IGBHIC0+IFwiZ1wiXG4gICAgfCBgR2FtbWEgLT4gXCJnYW1tYVwiXG4gICAgfCBgR2VvbWV0cmljUHJlY2lzaW9uIC0+IFwiZ2VvbWV0cmljUHJlY2lzaW9uXCJcbiAgICB8IGBIIC0+IFwiaFwiXG4gICAgfCBgSWRlbnRpdHkgLT4gXCJpZGVudGl0eVwiXG4gICAgfCBgSW4gLT4gXCJpblwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBJc29sYXRlZCAtPiBcImlzb2xhdGVkXCJcbiAgICB8IGBMaWdodGVuIC0+IFwibGlnaHRlblwiXG4gICAgfCBgTGluZV90aHJvdWdoIC0+IFwibGluZS10aHJvdWdoXCJcbiAgICB8IGBMaW5lYXIgLT4gXCJsaW5lYXJcIlxuICAgIHwgYEx1bWluYW5jZVRvQWxwaGEgLT4gXCJsdW1pbmFuY2VUb0FscGhhXCJcbiAgICB8IGBNYWduaWZ5IC0+IFwibWFnbmlmeVwiXG4gICAgfCBgTWF0cml4IC0+IFwibWF0cml4XCJcbiAgICB8IGBNZWRpYWwgLT4gXCJtZWRpYWxcIlxuICAgIHwgYE1pZGRsZSAtPiBcIm1pZGRsZVwiXG4gICAgfCBgTWl0ZXIgLT4gXCJtaXRlclwiXG4gICAgfCBgTXVsdGlwbHkgLT4gXCJtdWx0aXBseVwiXG4gICAgfCBgTmV2ZXIgLT4gXCJuZXZlclwiXG4gICAgfCBgTmV3IC0+IFwibmV3XCJcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBOb1N0aXRjaCAtPiBcIm5vU3RpdGNoXCJcbiAgICB8IGBPYmplY3RCb3VuZGluZ0JveCAtPiBcIm9iamVjdEJvdW5kaW5nQm94XCJcbiAgICB8IGBPbkxvYWQgLT4gXCJvbkxvYWRcIlxuICAgIHwgYE9uUmVxdWVzdCAtPiBcIm9uUmVxdWVzdFwiXG4gICAgfCBgT3B0aW1pemVMZWdpYmlsaXR5IC0+IFwib3B0aW1pemVMZWdpYmlsaXR5XCJcbiAgICB8IGBPcHRpbWl6ZVNwZWVkIC0+IFwib3B0aW1pemVTcGVlZFwiXG4gICAgfCBgT3RoZXIgLT4gXCJvdGhlclwiXG4gICAgfCBgT3V0IC0+IFwib3V0XCJcbiAgICB8IGBPdmVyIC0+IFwib3ZlclwiXG4gICAgfCBgT3ZlcmxpbmUgLT4gXCJvdmVybGluZVwiXG4gICAgfCBgUGFjZWQgLT4gXCJwYWNlZFwiXG4gICAgfCBgUGFkIC0+IFwicGFkXCJcbiAgICB8IGBQZXJjZXB0dWFsIC0+IFwicGVyY2VwdHVhbFwiXG4gICAgfCBgUHJlc2VydmUgLT4gXCJwcmVzZXJ2ZVwiXG4gICAgfCBgUiAtPiBcInJcIlxuICAgIHwgYFJlZmxlY3QgLT4gXCJyZWZsZWN0XCJcbiAgICB8IGBSZW1vdmUgLT4gXCJyZW1vdmVcIlxuICAgIHwgYFJlcGVhdCAtPiBcInJlcGVhdFwiXG4gICAgfCBgUmVwbGFjZSAtPiBcInJlcGxhY2VcIlxuICAgIHwgYFJlbGF0aXZlX2NvbG9yaW1ldHJpYyAtPiBcInJlbGF0aXZlX2NvbG9yaW1ldHJpY1wiXG4gICAgfCBgUm90YXRlIC0+IFwicm90YXRlXCJcbiAgICB8IGBSb3VuZCAtPiBcInJvdW5kXCJcbiAgICB8IGBTYXR1cmF0ZSAtPiBcInNhdHVyYXRlXCJcbiAgICB8IGBTYXR1cmF0aW9uIC0+IFwic2F0dXJhdGlvblwiXG4gICAgfCBgU2NhbGUgLT4gXCJzY2FsZVwiXG4gICAgfCBgU2NyZWVuIC0+IFwic2NyZWVuXCJcbiAgICB8IGBTa2V3WCAtPiBcInNrZXdYXCJcbiAgICB8IGBTa2V3WSAtPiBcInNrZXdZXCJcbiAgICB8IGBTcGFjaW5nIC0+IFwic3BhY2luZ1wiXG4gICAgfCBgU3BhY2luZ0FuZEdseXBocyAtPiBcInNwYWNpbmdBbmRHbHlwaHNcIlxuICAgIHwgYFNwbGluZSAtPiBcInNwbGluZVwiXG4gICAgfCBgU3F1YXJlIC0+IFwic3F1YXJlXCJcbiAgICB8IGBTdGFydCAtPiBcInN0YXJ0XCJcbiAgICB8IGBTdGl0Y2ggLT4gXCJzdGl0Y2hcIlxuICAgIHwgYFN0cmV0Y2ggLT4gXCJzdHJldGNoXCJcbiAgICB8IGBTdHJva2VXaWR0aCAtPiBcInN0cm9rZS13aWR0aFwiXG4gICAgfCBgU3VtIC0+IFwic3VtXCJcbiAgICB8IGBUYWJsZSAtPiBcInRhYmxlXCJcbiAgICB8IGBUZXJtaW5hbCAtPiBcInRlcm1pbmFsXCJcbiAgICB8IGBUcmFuc2xhdGUgLT4gXCJ0cmFuc2xhdGVcIlxuICAgIHwgYFR1cmJ1bGVuY2UgLT4gXCJ0dXJidWxlbmNlXCJcbiAgICB8IGBVbmRlcmxpbmUgLT4gXCJ1bmRlcmxpbmVcIlxuICAgIHwgYFVzZXJTcGFjZU9uVXNlIC0+IFwidXNlclNwYWNlT25Vc2VcIlxuICAgIHwgYFYgLT4gXCJ2XCJcbiAgICB8IGBXaGVuTm90QWN0aXZlIC0+IFwid2hlbk5vdEFjdGl2ZVwiXG4gICAgfCBgV3JhcCAtPiBcIndyYXBcIlxuICAgIHwgYFhNTCAtPiBcIlhNTFwiXG4gICAgfCBgWG9yIC0+IFwieG9yXCJcblxuICBsZXQgc3RyaW5nX29mX2Jvb2wgPSBzdHJpbmdfb2ZfYm9vbFxuXG4gIGxldCBzdHJpbmdfb2ZfY29vcmRzID1cbiAgICBsaXN0IChmdW4gKGEsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwiJWcsICVnXCIgYSBiKVxuXG4gIGxldCBzdHJpbmdfb2ZfZG9taW5hbnRfYmFzZWxpbmUgPSBmdW5jdGlvblxuICAgIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgICB8IGBVc2Vfc2NyaXB0IC0+IFwidXNlc2NyaXB0XCJcbiAgICB8IGBOb19jaGFuZ2UgLT4gXCJub2NoYW5nZVwiXG4gICAgfCBgUmVzZXRfc2l6ZSAtPiBcInJlc2V0c2l6ZVwiXG4gICAgfCBgSWRlb2dyYXBoaWMgLT4gXCJpZGVvZ3JhcGhpY1wiXG4gICAgfCBgQWxwaGFiZXRpYyAtPiBcImFscGhhYmV0aWNcIlxuICAgIHwgYEhhbmdpbmcgLT4gXCJoYW5naW5nXCJcbiAgICB8IGBNYXRoZW1hdGljYWwgLT4gXCJtYXRoZW1hdGljYWxcIlxuICAgIHwgYENlbnRyYWwgLT4gXCJjZW50cmFsXCJcbiAgICB8IGBNaWRkbGUgLT4gXCJtaWRkbGVcIlxuICAgIHwgYFRleHRfYWZ0ZXJfZWRnZSAtPiBcInRleHRhZnRlcmVkZ2VcIlxuICAgIHwgYFRleHRfYmVmb3JlX2VkZ2UgLT4gXCJ0ZXh0YmVmb3JlZWRnZVwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuXG5cbiAgbGV0IHN0cmluZ19vZl9pbl92YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBgU291cmNlR3JhcGhpYyAtPiBcInNvdXJjZUdyYXBoaWNcIlxuICAgIHwgYFNvdXJjZUFscGhhIC0+IFwic291cmNlQWxwaGFcIlxuICAgIHwgYEJhY2tncm91bmRJbWFnZSAtPiBcImJhY2tncm91bmRJbWFnZVwiXG4gICAgfCBgQmFja2dyb3VuZEFscGhhIC0+IFwiYmFja2dyb3VuZEFscGhhXCJcbiAgICB8IGBGaWxsUGFpbnQgLT4gXCJmaWxsUGFpbnRcIlxuICAgIHwgYFN0cm9rZVBhaW50IC0+IFwic3Ryb2tlUGFpbnRcIlxuICAgIHwgYFJlZiBfc3ZnIC0+IF9zdmdcblxuICBsZXQgc3RyaW5nX29mX2ludCA9IHN0cmluZ19vZl9pbnRcblxuICBsZXQgc3RyaW5nX29mX2xlbmd0aCA9IFVuaXQuc3RyaW5nX29mX2xlbmd0aFxuXG4gIGxldCBzdHJpbmdfb2ZfbGVuZ3RocyA9IGxpc3Qgc3RyaW5nX29mX2xlbmd0aFxuXG4gIGxldCBzdHJpbmdfb2ZfbnVtYmVyID0gWG1sX3ByaW50LnN0cmluZ19vZl9udW1iZXJcblxuICBsZXQgc3RyaW5nX29mX3BlcmNlbnRhZ2UgeCA9IChzdHJpbmdfb2ZfbnVtYmVyIHgpIF4gXCIlXCJcblxuICBsZXQgc3RyaW5nX29mX2ZvdXJmbG9hdHMgKGEsIGIsIGMsIGQpID1cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzICVzICVzXCJcbiAgICAgIChzdHJpbmdfb2ZfbnVtYmVyIGEpIChzdHJpbmdfb2ZfbnVtYmVyIGIpIChzdHJpbmdfb2ZfbnVtYmVyIGMpIChzdHJpbmdfb2ZfbnVtYmVyIGQpXG5cbiAgbGV0IHN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyID0gZnVuY3Rpb25cbiAgICB8IHgsIFNvbWUgeSAtPiBQcmludGYuc3ByaW50ZiBcIiVnLCAlZ1wiIHggeVxuICAgIHwgeCwgTm9uZSAtPiBQcmludGYuc3ByaW50ZiBcIiVnXCIgeFxuXG4gIGxldCBzdHJpbmdfb2ZfbnVtYmVycyA9IGxpc3Qgc3RyaW5nX29mX251bWJlclxuXG4gIGxldCBzdHJpbmdfb2ZfbnVtYmVyc19zZW1pY29sb24gPSBsaXN0IH5zZXA6XCI7IFwiIHN0cmluZ19vZl9udW1iZXJcblxuICBsZXQgc3RyaW5nX29mX29mZnNldCA9IGZ1bmN0aW9uXG4gICAgfCBgTnVtYmVyIHggLT4gc3RyaW5nX29mX251bWJlciB4XG4gICAgfCBgUGVyY2VudGFnZSB4IC0+IHN0cmluZ19vZl9wZXJjZW50YWdlIHhcblxuICBsZXQgc3RyaW5nX29mX29yaWVudCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IFwiYXV0b1wiXG4gICAgfCBTb21lIF9fc3ZnIC0+IHN0cmluZ19vZl9hbmdsZSBfX3N2Z1xuXG4gIGxldCBzdHJpbmdfb2ZfcGFpbnQgPSBzdHJpbmdfb2ZfcGFpbnRcblxuICBsZXQgc3RyaW5nX29mX2ZpbGxfcnVsZSA9IHN0cmluZ19vZl9maWxsX3J1bGVcblxuICBsZXQgc3RyaW5nX29mX3N0cm9rZWRhc2hhcnJheSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBcIm5vbmVcIlxuICAgIHwgbCAtPiBsaXN0IHN0cmluZ19vZl9sZW5ndGggbFxuXG4gIGxldCBzdHJpbmdfb2ZfdHJhbnNmb3JtID0gZnVuY3Rpb25cbiAgICB8IGBNYXRyaXggKGEsIGIsIGMsIGQsIGUsIGYpIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIm1hdHJpeCglZyAlZyAlZyAlZyAlZyAlZylcIiBhIGIgYyBkIGUgZlxuICAgIHwgYFRyYW5zbGF0ZSB4IC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcInRyYW5zbGF0ZSglcylcIlxuICAgICAgICAoc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgeClcbiAgICB8IGBTY2FsZSB4IC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcInNjYWxlKCVzKVwiIChzdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciB4KVxuICAgIHwgYFJvdGF0ZSAoKGFuZ2xlLCB4KSkgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwicm90YXRlKCVzICVzKVwiIChzdHJpbmdfb2ZfYW5nbGUgYW5nbGUpXG4gICAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICAgIHwgU29tZSAoKHgsIHkpKSAtPiBQcmludGYuc3ByaW50ZiBcIiVnICVnXCIgeCB5XG4gICAgICAgICB8IE5vbmUgLT4gXCJcIilcbiAgICB8IGBTa2V3WCBhbmdsZSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJza2V3WCglcylcIiAoc3RyaW5nX29mX2FuZ2xlIGFuZ2xlKVxuICAgIHwgYFNrZXdZIGFuZ2xlIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcInNrZXdZKCVzKVwiIChzdHJpbmdfb2ZfYW5nbGUgYW5nbGUpXG5cbiAgbGV0IHN0cmluZ19vZl90cmFuc2Zvcm1zIGwgPVxuICAgIFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHN0cmluZ19vZl90cmFuc2Zvcm0gbClcblxuZW5kXG5cbm1vZHVsZSBNYWtlXG4gICAgKFhtbCA6IFhtbF9zaWdzLlQgd2l0aCB0eXBlICgnYSwgJ2IpIFcuZnQgPSAoJ2EgLT4gJ2IpKSA9XG4gIE1ha2Vfd2l0aF93cmFwcGVkX2Z1bmN0aW9ucyhYbWwpKFdyYXBwZWRfZnVuY3Rpb25zKFhtbCkpXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDA0IGJ5IFRob3JzdGVuIE9obCA8b2hsQHBoeXNpay51bmktd3VlcnpidXJnLmRlPlxuICogQ29weXJpZ2h0IChDKSAyMDA3IGJ5IFZpbmNlbnQgQmFsYXQsIEdhYnJpZWwgS2VybmVpc1xuICogQ29weXJpZ2h0IChDKSAyMDEwIGJ5IENlY2lsZSBIZXJiZWxpblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxubW9kdWxlIE1ha2Vfd2l0aF93cmFwcGVkX2Z1bmN0aW9uc1xuXG4gICAgKFhtbCA6IFhtbF9zaWdzLlQpXG4gICAgKEMgOiBIdG1sX3NpZ3MuV3JhcHBlZF9mdW5jdGlvbnMgd2l0aCBtb2R1bGUgWG1sID0gWG1sKVxuICAgIChTdmcgOiBTdmdfc2lncy5UIHdpdGggbW9kdWxlIFhtbCA6PSBYbWwpID1cblxuc3RydWN0XG5cbiAgbW9kdWxlIFhtbCA9IFhtbFxuXG4gIG1vZHVsZSBXID0gWG1sLldcblxuICBtb2R1bGUgSW5mbyA9IHN0cnVjdFxuICAgIGxldCBjb250ZW50X3R5cGUgPSBcInRleHQvaHRtbFwiXG4gICAgbGV0IGFsdGVybmF0aXZlX2NvbnRlbnRfdHlwZXMgPSBbXCJhcHBsaWNhdGlvbi94aHRtbCt4bWxcIjtcImFwcGxpY2F0aW9uL3htbFwiO1widGV4dC94bWxcIl1cbiAgICBsZXQgdmVyc2lvbiA9IFwiSFRNTDUtZHJhZnRcIlxuICAgIGxldCBzdGFuZGFyZCA9IFwiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvXCJcbiAgICBsZXQgbmFtZXNwYWNlID0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCJcbiAgICBsZXQgZG9jdHlwZSA9XG4gICAgICBYbWxfcHJpbnQuY29tcG9zZV9kb2N0eXBlIFwiaHRtbFwiIFtdXG4gICAgbGV0IGVtcHR5dGFncyA9XG4gICAgICBbIFwiYXJlYVwiOyBcImJhc2VcIjsgXCJiclwiOyBcImNvbFwiOyBcImNvbW1hbmRcIjsgXCJlbWJlZFwiOyBcImhyXCI7IFwiaW1nXCI7XG4gICAgICAgIFwiaW5wdXRcIjsgXCJrZXlnZW5cIjsgXCJsaW5rXCI7IFwibWV0YVwiOyBcInBhcmFtXCI7IFwic291cmNlXCI7IFwid2JyXCIgXVxuICBlbmRcblxuICB0eXBlICdhIHdyYXAgPSAnYSBXLnRcbiAgdHlwZSAnYSBsaXN0X3dyYXAgPSAnYSBXLnRsaXN0XG5cbiAgdHlwZSB1cmkgPSBYbWwudXJpXG4gIGxldCBzdHJpbmdfb2ZfdXJpID0gWG1sLnN0cmluZ19vZl91cmlcbiAgbGV0IHVyaV9vZl9zdHJpbmcgPSBYbWwudXJpX29mX3N0cmluZ1xuXG4gIHR5cGUgaW1hZ2VfY2FuZGlkYXRlID1cbiAgICBbIGBVcmwgb2YgdXJpXG4gICAgfCBgVXJsX3dpZHRoIG9mIHVyaSAqIEh0bWxfdHlwZXMubnVtYmVyXG4gICAgfCBgVXJsX3BpeGVsIG9mIHVyaSAqIEh0bWxfdHlwZXMuZmxvYXRfbnVtYmVyIF1cblxuICB0eXBlICdhIGF0dHJpYiA9IFhtbC5hdHRyaWJcblxuICBsZXQgdG9feG1sYXR0cmlicyB4ID0geFxuICBsZXQgdG9fYXR0cmliIHggPSB4XG5cbiAgKCogVkIgKilcbiAgbGV0IGZsb2F0X2F0dHJpYiA9IFhtbC5mbG9hdF9hdHRyaWJcblxuICBsZXQgaW50X2F0dHJpYiA9IFhtbC5pbnRfYXR0cmliXG5cbiAgbGV0IHN0cmluZ19hdHRyaWIgPSBYbWwuc3RyaW5nX2F0dHJpYlxuXG4gIGxldCB1cmlfYXR0cmliIGEgcyA9IFhtbC51cmlfYXR0cmliIGEgc1xuXG4gIGxldCBzcGFjZV9zZXBfYXR0cmliID0gWG1sLnNwYWNlX3NlcF9hdHRyaWJcblxuICBsZXQgY29tbWFfc2VwX2F0dHJpYiA9IFhtbC5jb21tYV9zZXBfYXR0cmliXG5cbiAgbGV0IHVzZXJfYXR0cmliIGYgbmFtZSB2ID0gWG1sLnN0cmluZ19hdHRyaWIgbmFtZSAoVy5mbWFwIGYgdilcblxuICBsZXQgYm9vbF9hdHRyaWIgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9ib29sXG5cbiAgbGV0IGNvbnN0YW50X2F0dHJpYiBhICgpID1cbiAgICBzdHJpbmdfYXR0cmliIGEgKFcucmV0dXJuIGEpXG5cbiAgbGV0IGxpbmt0eXBlc19hdHRyaWIgbmFtZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9saW5rdHlwZXMgbmFtZSB4XG5cbiAgbGV0IG1lZGlhZGVzY19hdHRyaWIgbmFtZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9tZWRpYWRlc2MgbmFtZSB4XG5cbiAgbGV0IHNyY3NldF9hdHRyaWIgbmFtZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9zcmNzZXQgbmFtZSB4XG5cbiAgKCogQ29yZTogKilcbiAgbGV0IGFfY2xhc3MgPSBzcGFjZV9zZXBfYXR0cmliIFwiY2xhc3NcIlxuXG4gIGxldCBhX2lkID0gc3RyaW5nX2F0dHJpYiBcImlkXCJcblxuICBsZXQgYV91c2VyX2RhdGEgbmFtZSA9IHN0cmluZ19hdHRyaWIgKFwiZGF0YS1cIiBeIG5hbWUpXG5cbiAgbGV0IGFfdGl0bGUgPSBzdHJpbmdfYXR0cmliIFwidGl0bGVcIlxuXG4gICgqIEkxOE46ICopXG4gIGxldCBhX3htbF9sYW5nID0gc3RyaW5nX2F0dHJpYiBcInhtbDpsYW5nXCJcbiAgbGV0IGFfbGFuZyA9IHN0cmluZ19hdHRyaWIgXCJsYW5nXCJcblxuICAoKiBTdHlsZTogKilcbiAgbGV0IGFfc3R5bGUgPSBzdHJpbmdfYXR0cmliIFwic3R5bGVcIlxuXG4gIGxldCBhX3Byb3BlcnR5ID0gc3RyaW5nX2F0dHJpYiBcInByb3BlcnR5XCJcblxuICAoKiBFdmVudHM6ICopXG4gIGxldCBhX29uYWJvcnQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmFib3J0XCJcbiAgbGV0IGFfb25hZnRlcnByaW50ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25hZnRlcnByaW50XCJcbiAgbGV0IGFfb25iZWZvcmVwcmludCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYmVmb3JlcHJpbnRcIlxuICBsZXQgYV9vbmJlZm9yZXVubG9hZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYmVmb3JldW5sb2FkXCJcbiAgbGV0IGFfb25ibHVyID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25ibHVyXCJcbiAgbGV0IGFfb25jYW5wbGF5ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25jYW5wbGF5XCJcbiAgbGV0IGFfb25jYW5wbGF5dGhyb3VnaCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uY2FucGxheXRocm91Z2hcIlxuICBsZXQgYV9vbmNoYW5nZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uY2hhbmdlXCJcbiAgbGV0IGFfb25jbG9zZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uY2xvc2VcIlxuICBsZXQgYV9vbmR1cmF0aW9uY2hhbmdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kdXJhdGlvbmNoYW5nZVwiXG4gIGxldCBhX29uZW1wdGllZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZW1wdGllZFwiXG4gIGxldCBhX29uZW5kZWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmVuZGVkXCJcbiAgbGV0IGFfb25lcnJvciA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZXJyb3JcIlxuICBsZXQgYV9vbmZvY3VzID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25mb2N1c1wiXG4gIGxldCBhX29uZm9ybWNoYW5nZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZm9ybWNoYW5nZVwiXG4gIGxldCBhX29uZm9ybWlucHV0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25mb3JtaW5wdXRcIlxuICBsZXQgYV9vbmhhc2hjaGFuZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmhhc2hjaGFuZ2VcIlxuICBsZXQgYV9vbmlucHV0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25pbnB1dFwiXG4gIGxldCBhX29uaW52YWxpZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uaW52YWxpZFwiXG4gIGxldCBhX29ub2ZmbGluZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ub2ZmbGluZVwiXG4gIGxldCBhX29ub25saW5lID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25vbmxpbmVcIlxuICBsZXQgYV9vbnBhdXNlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25wYXVzZVwiXG4gIGxldCBhX29ucGxheSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucGxheVwiXG4gIGxldCBhX29ucGxheWluZyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucGxheWluZ1wiXG4gIGxldCBhX29ucGFnZWhpZGUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnBhZ2VoaWRlXCJcbiAgbGV0IGFfb25wYWdlc2hvdyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucGFnZXNob3dcIlxuICBsZXQgYV9vbnBvcHN0YXRlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25wb3BzdGF0ZVwiXG4gIGxldCBhX29ucHJvZ3Jlc3MgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnByb2dyZXNzXCJcbiAgbGV0IGFfb25yYXRlY2hhbmdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25yYXRlY2hhbmdlXCJcbiAgbGV0IGFfb25yZWFkeXN0YXRlY2hhbmdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25yZWFkeXN0YXRlY2hhbmdlXCJcbiAgbGV0IGFfb25yZWRvID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25yZWRvXCJcbiAgbGV0IGFfb25yZXNpemUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnJlc2l6ZVwiXG4gIGxldCBhX29uc2Nyb2xsID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zY3JvbGxcIlxuICBsZXQgYV9vbnNlZWtlZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc2Vla2VkXCJcbiAgbGV0IGFfb25zZWVraW5nID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zZWVraW5nXCJcbiAgbGV0IGFfb25zZWxlY3QgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnNlbGVjdFwiXG4gIGxldCBhX29uc2hvdyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc2hvd1wiXG4gIGxldCBhX29uc3RhbGxlZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc3RhbGxlZFwiXG4gIGxldCBhX29uc3RvcmFnZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc3RvcmFnZVwiXG4gIGxldCBhX29uc3VibWl0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zdWJtaXRcIlxuICBsZXQgYV9vbnN1c3BlbmQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnN1c3BlbmRcIlxuICBsZXQgYV9vbnRpbWV1cGRhdGUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRpbWV1cGRhdGVcIlxuICBsZXQgYV9vbnVuZG8gPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnVuZG9cIlxuICBsZXQgYV9vbnVubG9hZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udW5sb2FkXCJcbiAgbGV0IGFfb252b2x1bWVjaGFuZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnZvbHVtZWNoYW5nZVwiXG4gIGxldCBhX29ud2FpdGluZyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ud2FpdGluZ1wiXG4gIGxldCBhX29ubG9hZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubG9hZFwiXG4gIGxldCBhX29ubG9hZGVkZGF0YSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubG9hZGVkZGF0YVwiXG4gIGxldCBhX29ubG9hZGVkbWV0YWRhdGEgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmxvYWRlZG1ldGFkYXRhXCJcbiAgbGV0IGFfb25sb2Fkc3RhcnQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmxvYWRzdGFydFwiXG4gIGxldCBhX29ubWVzc2FnZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubWVzc2FnZVwiXG4gIGxldCBhX29ubW91c2V3aGVlbCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2V3aGVlbFwiXG5cbiAgKCoqIEphdmFzY3JpcHQgbW91c2UgZXZlbnRzICopXG4gIGxldCBhX29uY2xpY2sgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmNsaWNrXCJcbiAgbGV0IGFfb25jb250ZXh0bWVudSA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uY29udGV4dG1lbnVcIlxuICBsZXQgYV9vbmRibGNsaWNrID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kYmxjbGlja1wiXG4gIGxldCBhX29uZHJhZyA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHJhZ1wiXG4gIGxldCBhX29uZHJhZ2VuZCA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHJhZ2VuZFwiXG4gIGxldCBhX29uZHJhZ2VudGVyID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcmFnZW50ZXJcIlxuICBsZXQgYV9vbmRyYWdsZWF2ZSA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHJhZ2xlYXZlXCJcbiAgbGV0IGFfb25kcmFnb3ZlciA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHJhZ292ZXJcIlxuICBsZXQgYV9vbmRyYWdzdGFydCA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHJhZ3N0YXJ0XCJcbiAgbGV0IGFfb25kcm9wID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcm9wXCJcbiAgbGV0IGFfb25tb3VzZWRvd24gPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNlZG93blwiXG4gIGxldCBhX29ubW91c2V1cCA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2V1cFwiXG4gIGxldCBhX29ubW91c2VvdmVyID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZW92ZXJcIlxuICBsZXQgYV9vbm1vdXNlbW92ZSA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2Vtb3ZlXCJcbiAgbGV0IGFfb25tb3VzZW91dCA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2VvdXRcIlxuXG4gICgqKiBKYXZhc2NyaXB0IHRvdWNoIGV2ZW50cyAqKVxuICBsZXQgYV9vbnRvdWNoc3RhcnQgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNoc3RhcnRcIlxuICBsZXQgYV9vbnRvdWNoZW5kID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaGVuZFwiXG4gIGxldCBhX29udG91Y2htb3ZlID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaG1vdmVcIlxuICBsZXQgYV9vbnRvdWNoY2FuY2VsID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaGNhbmNlbFwiXG5cbiAgKCoqIEphdmFzY3JpcHQga2V5Ym9hcmQgZXZlbnRzICopXG4gIGxldCBhX29ua2V5cHJlc3MgPSBYbWwua2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmtleXByZXNzXCJcbiAgbGV0IGFfb25rZXlkb3duID0gWG1sLmtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25rZXlkb3duXCJcbiAgbGV0IGFfb25rZXl1cCA9IFhtbC5rZXlib2FyZF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ua2V5dXBcIlxuXG4gICgqIE90aGVyIEF0dHJpYnV0ZXMgKilcbiAgbGV0IGFfdmVyc2lvbiA9IHN0cmluZ19hdHRyaWIgXCJ2ZXJzaW9uXCJcblxuICBsZXQgYV94bWxucyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInhtbG5zXCIgeFxuXG4gIGxldCBhX21hbmlmZXN0ID0gdXJpX2F0dHJpYiBcIm1hbmlmZXN0XCJcblxuICBsZXQgYV9jaXRlID0gdXJpX2F0dHJpYiBcImNpdGVcIlxuXG4gIGxldCBhX3htbF9zcGFjZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInhtbDpzcGFjZVwiIHhcblxuICBsZXQgYV9hY2Nlc3NrZXkgYyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfY2hhcmFjdGVyIFwiYWNjZXNza2V5XCIgY1xuXG4gIGxldCBhX2NoYXJzZXQgPSBzdHJpbmdfYXR0cmliIFwiY2hhcnNldFwiXG5cbiAgbGV0IGFfYWNjZXB0X2NoYXJzZXQgPSBzcGFjZV9zZXBfYXR0cmliIFwiYWNjZXB0LWNoYXJzZXRcIlxuXG4gIGxldCBhX2FjY2VwdCA9IGNvbW1hX3NlcF9hdHRyaWIgXCJhY2NlcHRcIlxuXG4gIGxldCBhX2hyZWYgPSB1cmlfYXR0cmliIFwiaHJlZlwiXG5cbiAgbGV0IGFfaHJlZmxhbmcgPSBzdHJpbmdfYXR0cmliIFwiaHJlZmxhbmdcIlxuXG4gIGxldCBhX2Rvd25sb2FkIGZpbGUgPVxuICAgIHVzZXJfYXR0cmliIChDLnVub3B0aW9uX3N0cmluZykgXCJkb3dubG9hZFwiIGZpbGVcblxuICBsZXQgYV9yZWwgPSBsaW5rdHlwZXNfYXR0cmliIFwicmVsXCJcblxuICBsZXQgYV90YWJpbmRleCA9IGludF9hdHRyaWIgXCJ0YWJpbmRleFwiXG5cbiAgbGV0IGFfbWltZV90eXBlID0gc3RyaW5nX2F0dHJpYiBcInR5cGVcIlxuXG4gIGxldCBhX2FsdCA9IHN0cmluZ19hdHRyaWIgXCJhbHRcIlxuXG4gIGxldCBhX2hlaWdodCBwID0gaW50X2F0dHJpYiBcImhlaWdodFwiIHBcblxuICBsZXQgYV9zcmMgPSB1cmlfYXR0cmliIFwic3JjXCJcblxuICBsZXQgYV93aWR0aCBwID0gaW50X2F0dHJpYiBcIndpZHRoXCIgcFxuXG4gIGxldCBhX2xhYmVsX2ZvciA9IHN0cmluZ19hdHRyaWIgXCJmb3JcIlxuICBsZXQgYV9mb3IgPSBhX2xhYmVsX2ZvclxuXG4gIGxldCBhX291dHB1dF9mb3IgPSBzcGFjZV9zZXBfYXR0cmliIFwiZm9yXCJcbiAgbGV0IGFfZm9yX2xpc3QgPSBhX291dHB1dF9mb3JcblxuICBsZXQgYV9zZWxlY3RlZCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwic2VsZWN0ZWRcIlxuXG4gIGxldCBhX3RleHRfdmFsdWUgPSBzdHJpbmdfYXR0cmliIFwidmFsdWVcIlxuXG4gIGxldCBhX2ludF92YWx1ZSA9IGludF9hdHRyaWIgXCJ2YWx1ZVwiXG5cbiAgbGV0IGFfdmFsdWUgPSBzdHJpbmdfYXR0cmliIFwidmFsdWVcIlxuXG4gIGxldCBhX2Zsb2F0X3ZhbHVlID0gZmxvYXRfYXR0cmliIFwidmFsdWVcIlxuXG4gIGxldCBhX2FjdGlvbiA9IHVyaV9hdHRyaWIgXCJhY3Rpb25cIlxuXG4gIGxldCBhX21ldGhvZCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm1ldGhvZFwiIHhcblxuICBsZXQgYV9mb3JtbWV0aG9kIHggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImZvcm1tZXRob2RcIiB4XG5cbiAgbGV0IGFfZW5jdHlwZSA9IHN0cmluZ19hdHRyaWIgXCJlbmN0eXBlXCJcblxuICBsZXQgYV9jaGVja2VkID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJjaGVja2VkXCJcblxuICBsZXQgYV9kaXNhYmxlZCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiZGlzYWJsZWRcIlxuXG4gIGxldCBhX3JlYWRvbmx5ID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJyZWFkb25seVwiXG5cbiAgbGV0IGFfbWF4bGVuZ3RoID0gaW50X2F0dHJpYiBcIm1heGxlbmd0aFwiXG5cbiAgbGV0IGFfbWlubGVuZ3RoID0gaW50X2F0dHJpYiBcIm1pbmxlbmd0aFwiXG5cbiAgbGV0IGFfbmFtZSA9IHN0cmluZ19hdHRyaWIgXCJuYW1lXCJcblxuICBsZXQgYV9hbGxvd2Z1bGxzY3JlZW4gPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImFsbG93ZnVsbHNjcmVlblwiXG5cbiAgbGV0IGFfYWxsb3dwYXltZW50cmVxdWVzdCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiYWxsb3dwYXltZW50cmVxdWVzdFwiXG5cbiAgbGV0IGFfcmVmZXJyZXJwb2xpY3kgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfcmVmZXJyZXJwb2xpY3kgXCJyZWZlcnJlcnBvbGljeVwiIHhcblxuICBsZXQgYV9hdXRvY29tcGxldGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYXV0b2NvbXBsZXRlIFwiYXV0b2NvbXBsZXRlXCIgeFxuXG4gIGxldCBhX2FzeW5jID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJhc3luY1wiXG5cbiAgbGV0IGFfYXV0b2ZvY3VzID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJhdXRvZm9jdXNcIlxuXG4gIGxldCBhX2F1dG9wbGF5ID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJhdXRvcGxheVwiXG5cbiAgbGV0IGFfbXV0ZWQgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcIm11dGVkXCJcblxuICBsZXQgYV9jcm9zc29yaWdpbiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImNyb3Nzb3JpZ2luXCIgeFxuXG4gIGxldCBhX2ludGVncml0eSA9IHN0cmluZ19hdHRyaWIgXCJpbnRlZ3JpdHlcIlxuXG4gIGxldCBhX21lZGlhZ3JvdXAgPSBzdHJpbmdfYXR0cmliIFwibWVkaWFncm91cFwiXG5cbiAgbGV0IGFfY2hhbGxlbmdlID0gc3RyaW5nX2F0dHJpYiBcImNoYWxsZW5nZVwiXG5cbiAgbGV0IGFfY29udGVudGVkaXRhYmxlIGNlID1cbiAgICBib29sX2F0dHJpYiBcImNvbnRlbnRlZGl0YWJsZVwiIGNlXG5cbiAgbGV0IGFfY29udGV4dG1lbnUgPSBzdHJpbmdfYXR0cmliIFwiY29udGV4dG1lbnVcIlxuXG4gIGxldCBhX2NvbnRyb2xzID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJjb250cm9sc1wiXG5cbiAgbGV0IGFfZGlyIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiZGlyXCIgeFxuXG4gIGxldCBhX2RyYWdnYWJsZSBkID1cbiAgICBib29sX2F0dHJpYiBcImRyYWdnYWJsZVwiIGRcblxuICBsZXQgYV9mb3JtID0gc3RyaW5nX2F0dHJpYiBcImZvcm1cIlxuXG4gIGxldCBhX2Zvcm1hY3Rpb24gPSB1cmlfYXR0cmliIFwiZm9ybWFjdGlvblwiXG5cbiAgbGV0IGFfZm9ybWVuY3R5cGUgPSBzdHJpbmdfYXR0cmliIFwiZm9ybWVuY3R5cGVcIlxuXG4gIGxldCBhX2Zvcm1ub3ZhbGlkYXRlID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJmb3Jtbm92YWxpZGF0ZVwiXG5cbiAgbGV0IGFfZm9ybXRhcmdldCA9IHN0cmluZ19hdHRyaWIgXCJmb3JtdGFyZ2V0XCJcblxuICBsZXQgYV9oaWRkZW4gPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImhpZGRlblwiXG5cbiAgbGV0IGFfaGlnaCA9IGZsb2F0X2F0dHJpYiBcImhpZ2hcIlxuXG4gIGxldCBhX2ljb24gPSB1cmlfYXR0cmliIFwiaWNvblwiXG5cbiAgbGV0IGFfaXNtYXAgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImlzbWFwXCJcblxuICBsZXQgYV9rZXl0eXBlID0gc3RyaW5nX2F0dHJpYiBcImtleXR5cGVcIlxuXG4gIGxldCBhX2xpc3QgPSBzdHJpbmdfYXR0cmliIFwibGlzdFwiXG5cbiAgbGV0IGFfbG9vcCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwibG9vcFwiXG5cbiAgbGV0IGFfbG93ID0gZmxvYXRfYXR0cmliIFwibG93XCJcblxuICBsZXQgYV9tYXggPSBmbG9hdF9hdHRyaWIgXCJtYXhcIlxuXG4gIGxldCBhX2lucHV0X21heCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcl9kYXRldGltZSBcIm1heFwiXG5cbiAgbGV0IGFfbWluID0gZmxvYXRfYXR0cmliIFwibWluXCJcblxuICBsZXQgYV9pbnB1dF9taW4gPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJfb3JfZGF0ZXRpbWUgXCJtaW5cIlxuXG4gIGxldCBhX2lucHV0bW9kZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImlucHV0bW9kZVwiIHhcblxuICBsZXQgYV9ub3ZhbGlkYXRlID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJub3ZhbGlkYXRlXCJcblxuICBsZXQgYV9vcGVuID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJvcGVuXCJcblxuICBsZXQgYV9vcHRpbXVtID0gZmxvYXRfYXR0cmliIFwib3B0aW11bVwiXG5cbiAgbGV0IGFfcGF0dGVybiA9IHN0cmluZ19hdHRyaWIgXCJwYXR0ZXJuXCJcblxuICBsZXQgYV9wbGFjZWhvbGRlciA9IHN0cmluZ19hdHRyaWIgXCJwbGFjZWhvbGRlclwiXG5cbiAgbGV0IGFfcG9zdGVyID0gdXJpX2F0dHJpYiBcInBvc3RlclwiXG5cbiAgbGV0IGFfcHJlbG9hZCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInByZWxvYWRcIiB4XG5cbiAgbGV0IGFfcHViZGF0ZSA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwicHViZGF0ZVwiXG5cbiAgbGV0IGFfcmFkaW9ncm91cCA9IHN0cmluZ19hdHRyaWIgXCJyYWRpb2dyb3VwXCJcblxuICBsZXQgYV9yZXF1aXJlZCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwicmVxdWlyZWRcIlxuXG4gIGxldCBhX3JldmVyc2VkID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJyZXNlcnZlZFwiXG5cbiAgbGV0IGFfc2FuZGJveCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9zYW5kYm94IFwic2FuZGJveFwiIHhcblxuICBsZXQgYV9zcGVsbGNoZWNrIHNjID1cbiAgICBib29sX2F0dHJpYiBcInNwZWxsY2hlY2tcIiBzY1xuXG4gIGxldCBhX3Njb3BlZCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwic2NvcGVkXCJcblxuICBsZXQgYV9zZWFtbGVzcyA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwic2VhbWxlc3NcIlxuXG4gIGxldCBhX3NpemVzIHNpemVzID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9zaXplcyBcInNpemVzXCIgc2l6ZXNcblxuICBsZXQgYV9zcGFuID0gaW50X2F0dHJpYiBcInNwYW5cIlxuXG4gICgqbGV0IGFfc3JjZG9jKilcbiAgbGV0IGFfc3JjbGFuZyA9IHN0cmluZ19hdHRyaWIgXCJ4bWw6bGFuZ1wiXG5cbiAgbGV0IGFfc3Jjc2V0ID0gc3Jjc2V0X2F0dHJpYiBcInNyY3NldFwiXG5cbiAgbGV0IGFfaW1nX3NpemVzID0gY29tbWFfc2VwX2F0dHJpYiBcInNpemVzXCJcblxuICBsZXQgYV9zdGFydCA9IGludF9hdHRyaWIgXCJzdGFydFwiXG5cbiAgbGV0IGFfc3RlcCBzdGVwID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9zdGVwIFwic3RlcFwiIHN0ZXBcblxuICBsZXQgYV90cmFuc2xhdGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0cmFuc2xhdGVcIiB4XG4gIFxuICBsZXQgYV93cmFwIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwid3JhcFwiIHhcblxuICBsZXQgYV9zaXplID0gaW50X2F0dHJpYiBcInNpemVcIlxuXG4gIGxldCBhX2lucHV0X3R5cGUgaXQgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2lucHV0X3R5cGUgXCJ0eXBlXCIgaXRcblxuICBsZXQgYV9tZW51X3R5cGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0eXBlXCIgeFxuXG4gIGxldCBhX2NvbW1hbmRfdHlwZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInR5cGVcIiB4XG5cbiAgbGV0IGFfYnV0dG9uX3R5cGUgYnQgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2lucHV0X3R5cGUgXCJ0eXBlXCIgYnRcblxuICBsZXQgYV9zY3JpcHRfdHlwZSBzYyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3NjcmlwdF90eXBlIFwidHlwZVwiIHNjXG5cbiAgbGV0IGFfbXVsdGlwbGUgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcIm11bHRpcGxlXCJcblxuICBsZXQgYV9jb2xzID0gaW50X2F0dHJpYiBcImNvbHNcIlxuXG4gIGxldCBhX3Jvd3MgPSBpbnRfYXR0cmliIFwicm93c1wiXG5cbiAgbGV0IGFfc3VtbWFyeSA9IHN0cmluZ19hdHRyaWIgXCJzdW1tYXJ5XCJcblxuICBsZXQgYV9hbGlnbiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImFsaWduXCIgeFxuXG4gIGxldCBhX2F4aXMgPSBzdHJpbmdfYXR0cmliIFwiYXhpc1wiXG5cbiAgbGV0IGFfY29sc3BhbiA9IGludF9hdHRyaWIgXCJjb2xzcGFuXCJcblxuICBsZXQgYV9oZWFkZXJzID0gc3BhY2Vfc2VwX2F0dHJpYiBcImhlYWRlcnNcIlxuXG4gIGxldCBhX3Jvd3NwYW4gPSBpbnRfYXR0cmliIFwicm93c3BhblwiXG5cbiAgbGV0IGFfc2NvcGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzY29wZVwiIHhcblxuICBsZXQgYV9ib3JkZXIgPSBpbnRfYXR0cmliIFwiYm9yZGVyXCJcblxuICBsZXQgYV9ydWxlcyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInJ1bGVzXCIgeFxuXG4gIGxldCBhX2NoYXIgYyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfY2hhcmFjdGVyIFwiY2hhclwiIGNcblxuICBsZXQgYV9kYXRhID0gdXJpX2F0dHJpYiBcImRhdGFcIlxuXG4gIGxldCBhX2NvZGV0eXBlID0gc3RyaW5nX2F0dHJpYiBcImNvZGV0eXBlXCJcblxuICBsZXQgYV9mcmFtZWJvcmRlciB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImZyYW1lYm9yZGVyXCIgeFxuXG4gIGxldCBhX21hcmdpbmhlaWdodCA9IGludF9hdHRyaWIgXCJtYXJnaW5oZWlnaHRcIlxuXG4gIGxldCBhX21hcmdpbndpZHRoID0gaW50X2F0dHJpYiBcIm1hcmdpbndpZHRoXCJcblxuICBsZXQgYV9zY3JvbGxpbmcgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzY3JvbGxpbmdcIiB4XG5cbiAgbGV0IGFfdGFyZ2V0ID0gc3RyaW5nX2F0dHJpYiBcInRhcmdldFwiXG5cbiAgbGV0IGFfY29udGVudCA9IHN0cmluZ19hdHRyaWIgXCJjb250ZW50XCJcblxuICBsZXQgYV9odHRwX2VxdWl2ID0gc3RyaW5nX2F0dHJpYiBcImh0dHAtZXF1aXZcIlxuXG4gIGxldCBhX21lZGlhID0gbWVkaWFkZXNjX2F0dHJpYiBcIm1lZGlhXCJcblxuICAoKiBBUklBICopXG5cbiAgbGV0IGFfcm9sZSA9IHNwYWNlX3NlcF9hdHRyaWIgXCJyb2xlXCJcblxuICBsZXQgYV9hcmlhIG5hbWUgPSBzcGFjZV9zZXBfYXR0cmliIChcImFyaWEtXCIgXiBuYW1lKVxuXG4gIHR5cGUgJ2EgZWx0ID0gWG1sLmVsdFxuXG4gIHR5cGUgKCdhLCAnYikgbnVsbGFyeSA9ID9hOiAoKCdhIGF0dHJpYikgbGlzdCkgLT4gdW5pdCAtPiAnYiBlbHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSB1bmFyeSA9ID9hOiAoKCdhIGF0dHJpYikgbGlzdCkgLT4gJ2IgZWx0IHdyYXAgLT4gJ2MgZWx0XG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgc3RhciA9XG4gICAgP2E6ICgoJ2EgYXR0cmliKSBsaXN0KSAtPiAoJ2IgZWx0KSBsaXN0X3dyYXAgLT4gJ2MgZWx0XG5cbiAgbGV0IHRlcm1pbmFsIHRhZyA/YSAoKSA9IFhtbC5sZWFmID9hIHRhZ1xuXG4gIGxldCB1bmFyeSB0YWcgP2EgZWx0ID1cbiAgICBYbWwubm9kZSA/YSB0YWcgKFcuc2luZ2xldG9uIGVsdClcblxuICBsZXQgc3RhciB0YWcgP2EgZWx0cyA9IFhtbC5ub2RlID9hIHRhZyBlbHRzXG5cbiAgbGV0IHBsdXMgdGFnID9hIGVsdCBlbHRzID1cbiAgICBYbWwubm9kZSA/YSB0YWcgKFcuY29ucyBlbHQgZWx0cylcblxuICBsZXQgb3B0aW9uX2NvbnMgb3B0IGVsdHMgPVxuICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgfCBOb25lIC0+IGVsdHNcbiAgICB8IFNvbWUgeCAtPiBXLmNvbnMgeCBlbHRzXG5cbiAgbGV0IGJvZHkgPSBzdGFyIFwiYm9keVwiXG5cbiAgbGV0IGhlYWQgPSBwbHVzIFwiaGVhZFwiXG5cbiAgbGV0IHRpdGxlID0gdW5hcnkgXCJ0aXRsZVwiXG5cbiAgbGV0IGh0bWwgP2EgaGVhZCBib2R5ID1cbiAgICBsZXQgY29udGVudCA9IFcuY29ucyBoZWFkIChXLnNpbmdsZXRvbiBib2R5KSBpblxuICAgIFhtbC5ub2RlID9hIFwiaHRtbFwiIGNvbnRlbnRcblxuICBsZXQgZm9vdGVyID0gc3RhciBcImZvb3RlclwiXG5cbiAgbGV0IGhlYWRlciA9IHN0YXIgXCJoZWFkZXJcIlxuXG4gIGxldCBzZWN0aW9uID0gc3RhciBcInNlY3Rpb25cIlxuXG4gIGxldCBuYXYgPSBzdGFyIFwibmF2XCJcblxuICBsZXQgdHh0IHMgPSBYbWwucGNkYXRhIHNcbiAgbGV0IHBjZGF0YSA9IHR4dFxuXG4gIGxldCBlbnRpdHkgPSBYbWwuZW50aXR5XG5cbiAgbGV0IHNwYWNlICgpID0gZW50aXR5IFwibmJzcFwiXG5cbiAgbGV0IGNkYXRhID0gWG1sLmNkYXRhXG5cbiAgbGV0IGNkYXRhX3NjcmlwdCA9IFhtbC5jZGF0YV9zY3JpcHRcblxuICBsZXQgY2RhdGFfc3R5bGUgPSBYbWwuY2RhdGFfc3R5bGVcblxuICBsZXQgaDEgPSBzdGFyIFwiaDFcIlxuXG4gIGxldCBoMiA9IHN0YXIgXCJoMlwiXG5cbiAgbGV0IGgzID0gc3RhciBcImgzXCJcblxuICBsZXQgaDQgPSBzdGFyIFwiaDRcIlxuXG4gIGxldCBoNSA9IHN0YXIgXCJoNVwiXG5cbiAgbGV0IGg2ID0gc3RhciBcImg2XCJcblxuICBsZXQgaGdyb3VwID0gc3RhciBcImhncm91cFwiXG5cbiAgbGV0IGFkZHJlc3MgPSBzdGFyIFwiYWRkcmVzc1wiXG5cbiAgbGV0IGJsb2NrcXVvdGUgPSBzdGFyIFwiYmxvY2txdW90ZVwiXG5cbiAgbGV0IGRpYWxvZyA9IHN0YXIgXCJkaWFsb2dcIlxuXG4gIGxldCBkaXYgPSBzdGFyIFwiZGl2XCJcblxuICBsZXQgcCA9IHN0YXIgXCJwXCJcblxuICBsZXQgcHJlID0gc3RhciBcInByZVwiXG5cbiAgbGV0IGFiYnIgPSBzdGFyIFwiYWJiclwiXG5cbiAgbGV0IGJyID0gdGVybWluYWwgXCJiclwiXG5cbiAgbGV0IGNpdGUgPSBzdGFyIFwiY2l0ZVwiXG5cbiAgbGV0IGNvZGUgPSBzdGFyIFwiY29kZVwiXG5cbiAgbGV0IGRmbiA9IHN0YXIgXCJkZm5cIlxuXG4gIGxldCBlbSA9IHN0YXIgXCJlbVwiXG5cbiAgbGV0IGtiZCA9IHN0YXIgXCJrYmRcIlxuXG4gIGxldCBxID0gc3RhciBcInFcIlxuXG4gIGxldCBzYW1wID0gc3RhciBcInNhbXBcIlxuXG4gIGxldCBzcGFuID0gc3RhciBcInNwYW5cIlxuXG4gIGxldCBzdHJvbmcgPSBzdGFyIFwic3Ryb25nXCJcblxuICBsZXQgdGltZSA9IHN0YXIgXCJ0aW1lXCJcblxuICBsZXQgdmFyID0gc3RhciBcInZhclwiXG5cbiAgbGV0IGEgPSBzdGFyIFwiYVwiXG5cbiAgbGV0IGRsID0gc3RhciBcImRsXCJcblxuICBsZXQgb2wgPSBzdGFyIFwib2xcIlxuXG4gIGxldCB1bCA9IHN0YXIgXCJ1bFwiXG5cbiAgbGV0IGRkID0gc3RhciBcImRkXCJcblxuICBsZXQgZHQgPSBzdGFyIFwiZHRcIlxuXG4gIGxldCBsaSA9IHN0YXIgXCJsaVwiXG5cbiAgbGV0IGhyID0gdGVybWluYWwgXCJoclwiXG5cbiAgbGV0IGIgPSBzdGFyIFwiYlwiXG5cbiAgbGV0IGkgPSBzdGFyIFwiaVwiXG5cbiAgbGV0IHUgPSBzdGFyIFwidVwiXG5cbiAgbGV0IHNtYWxsID0gc3RhciBcInNtYWxsXCJcblxuICBsZXQgc3ViID0gc3RhciBcInN1YlwiXG5cbiAgbGV0IHN1cCA9IHN0YXIgXCJzdXBcIlxuXG4gIGxldCBtYXJrID0gc3RhciBcIm1hcmtcIlxuXG4gIGxldCBycCA9IHN0YXIgXCJycFwiXG5cbiAgbGV0IHJ0ID0gc3RhciBcInJ0XCJcblxuICBsZXQgcnVieSA9IHN0YXIgXCJydWJ5XCJcblxuICBsZXQgd2JyID0gdGVybWluYWwgXCJ3YnJcIlxuXG4gICgqIFZCICopXG4gIHR5cGUgc2hhcGUgPSBbIHwgYFJlY3QgfCBgQ2lyY2xlIHwgYFBvbHkgfCBgRGVmYXVsdCBdXG5cbiAgbGV0IGJkbyB+ZGlyID8oYSA9IFtdKSBlbHRzID0gWG1sLm5vZGUgfmE6ICgoYV9kaXIgZGlyKSA6OiBhKSBcImJkb1wiIGVsdHNcblxuICBsZXQgYV9kYXRldGltZSA9IHN0cmluZ19hdHRyaWIgXCJkYXRldGltZVwiXG5cbiAgbGV0IGFfc2hhcGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzaGFwZVwiIHhcblxuICBsZXQgYV9jb29yZHMgY29vcmRzID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJzIFwiY29vcmRzXCIgY29vcmRzXG5cbiAgbGV0IGFfdXNlbWFwID0gc3RyaW5nX2F0dHJpYiBcInVzZW1hcFwiXG5cbiAgbGV0IGFfZGVmZXIgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImRlZmVyXCJcblxuICBsZXQgYV9sYWJlbCA9IHN0cmluZ19hdHRyaWIgXCJsYWJlbFwiXG5cbiAgbGV0IGFyZWEgfmFsdCA/KGEgPSBbXSkgKCkgPSBYbWwubGVhZiB+YTogKChhX2FsdCBhbHQpIDo6IGEpIFwiYXJlYVwiXG5cbiAgbGV0IG1hcCA9IHN0YXIgXCJtYXBcIlxuXG4gIGxldCBkZWwgPSBzdGFyIFwiZGVsXCJcblxuICBsZXQgaW5zID0gc3RhciBcImluc1wiXG5cbiAgbGV0IHNjcmlwdCA9IHVuYXJ5IFwic2NyaXB0XCJcblxuICBsZXQgbm9zY3JpcHQgPSBzdGFyIFwibm9zY3JpcHRcIlxuXG4gIGxldCB0ZW1wbGF0ZSA9IHN0YXIgXCJ0ZW1wbGF0ZVwiXG5cbiAgbGV0IGFydGljbGUgPSBzdGFyIFwiYXJ0aWNsZVwiXG5cbiAgbGV0IGFzaWRlID0gc3RhciBcImFzaWRlXCJcblxuICBsZXQgbWFpbiA9IHN0YXIgXCJtYWluXCJcblxuICBsZXQgdmlkZW9fYXVkaW8gbmFtZSA/c3JjID9zcmNzID8oYSA9IFtdKSBlbHRzID1cbiAgICBsZXQgYSA9XG4gICAgICBtYXRjaCBzcmMgd2l0aFxuICAgICAgfCBOb25lIC0+IGFcbiAgICAgIHwgU29tZSB1cmkgLT4gKGFfc3JjIHVyaSkgOjogYVxuICAgIGluXG4gICAgbWF0Y2ggc3JjcyB3aXRoXG4gICAgfCBOb25lIC0+IFhtbC5ub2RlIG5hbWUgfmEgZWx0c1xuICAgIHwgU29tZSBzcmNzIC0+IFhtbC5ub2RlIG5hbWUgfmEgKFcuYXBwZW5kIHNyY3MgZWx0cylcblxuICBsZXQgYXVkaW8gPSB2aWRlb19hdWRpbyBcImF1ZGlvXCJcblxuICBsZXQgdmlkZW8gPSB2aWRlb19hdWRpbyBcInZpZGVvXCJcblxuICBsZXQgY2FudmFzID0gc3RhciBcImNhbnZhc1wiXG5cbiAgbGV0IGNvbW1hbmQgfmxhYmVsID8oYSA9IFtdKSAoKSA9XG4gICAgWG1sLmxlYWYgfmE6ICgoYV9sYWJlbCBsYWJlbCkgOjogYSkgXCJjb21tYW5kXCJcblxuICBsZXQgbWVudSA/Y2hpbGRyZW4gP2EgKCkgPVxuICAgIGxldCBjaGlsZHJlbiA9IG1hdGNoIGNoaWxkcmVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBXLm5pbCAoKVxuICAgICAgfCBTb21lIChgTGlzIGwpXG4gICAgICB8IFNvbWUgKGBGbG93cyBsKSAtPiBsIGluXG4gICAgWG1sLm5vZGUgP2EgXCJtZW51XCIgY2hpbGRyZW5cblxuICBsZXQgZW1iZWQgPSB0ZXJtaW5hbCBcImVtYmVkXCJcblxuICBsZXQgc291cmNlID0gdGVybWluYWwgXCJzb3VyY2VcIlxuXG4gIGxldCBtZXRlciA9IHN0YXIgXCJtZXRlclwiXG5cbiAgbGV0IG91dHB1dF9lbHQgPSBzdGFyIFwib3V0cHV0XCJcblxuICBsZXQgZm9ybSA9IHN0YXIgXCJmb3JtXCJcblxuICBsZXQgc3ZnID8oYSA9IFtdKSBjaGlsZHJlbiA9XG4gICAgU3ZnLnRvZWx0IChTdmcuc3ZnIH5hIGNoaWxkcmVuKVxuXG4gIGxldCBpbnB1dCA9IHRlcm1pbmFsIFwiaW5wdXRcIlxuXG4gIGxldCBrZXlnZW4gPSB0ZXJtaW5hbCBcImtleWdlblwiXG5cbiAgbGV0IGxhYmVsID0gc3RhciBcImxhYmVsXCJcblxuICBsZXQgb3B0aW9uID0gdW5hcnkgXCJvcHRpb25cIlxuXG4gIGxldCBzZWxlY3QgPSBzdGFyIFwic2VsZWN0XCJcblxuICBsZXQgdGV4dGFyZWEgPSB1bmFyeSBcInRleHRhcmVhXCJcblxuICBsZXQgYnV0dG9uID0gc3RhciBcImJ1dHRvblwiXG5cbiAgbGV0IGRhdGFsaXN0ID9jaGlsZHJlbiA/YSAoKSA9XG4gICAgbGV0IGNoaWxkcmVuID0gbWF0Y2ggY2hpbGRyZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFcubmlsICgpXG4gICAgICB8IFNvbWUgKGBPcHRpb25zIHggfCBgUGhyYXMgeCkgLT4geCBpblxuICAgIFhtbC5ub2RlID9hIFwiZGF0YWxpc3RcIiBjaGlsZHJlblxuXG4gIGxldCBwcm9ncmVzcyA9IHN0YXIgXCJwcm9ncmVzc1wiXG5cbiAgbGV0IGxlZ2VuZCA9IHN0YXIgXCJsZWdlbmRcIlxuXG4gIGxldCBkZXRhaWxzIHN1bW1hcnkgP2EgY2hpbGRyZW4gPVxuICAgIHBsdXMgXCJkZXRhaWxzXCIgP2Egc3VtbWFyeSBjaGlsZHJlblxuXG4gIGxldCBzdW1tYXJ5ID0gc3RhciBcInN1bW1hcnlcIlxuXG4gIGxldCBmaWVsZHNldCA/bGVnZW5kID9hIGVsdHMgPVxuICAgIFhtbC5ub2RlID9hIFwiZmllbGRzZXRcIiAob3B0aW9uX2NvbnMgbGVnZW5kIGVsdHMpXG5cbiAgbGV0IG9wdGdyb3VwIH5sYWJlbCA/KGEgPSBbXSkgZWx0cyA9XG4gICAgWG1sLm5vZGUgfmE6ICgoYV9sYWJlbCBsYWJlbCkgOjogYSkgXCJvcHRncm91cFwiIGVsdHNcblxuICBsZXQgZmlnY2FwdGlvbiA9IHN0YXIgXCJmaWdjYXB0aW9uXCJcbiAgbGV0IGZpZ3VyZSA/ZmlnY2FwdGlvbiA/YSBlbHRzID1cbiAgICBsZXQgY29udGVudCA9IG1hdGNoIGZpZ2NhcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGVsdHNcbiAgICAgIHwgU29tZSAoYFRvcCBjKSAtPiBXLmNvbnMgYyBlbHRzXG4gICAgICB8IFNvbWUgKGBCb3R0b20gYykgLT4gVy5hcHBlbmQgZWx0cyAoVy5zaW5nbGV0b24gYylcbiAgICBpblxuICAgIFhtbC5ub2RlID9hIFwiZmlndXJlXCIgY29udGVudFxuXG4gIGxldCBjYXB0aW9uID0gc3RhciBcImNhcHRpb25cIlxuXG4gIGxldCB0YWJsZXggP2NhcHRpb24gP2NvbHVtbnMgP3RoZWFkID90Zm9vdCA/YSBlbHRzID1cbiAgICBsZXQgY29udGVudCA9IG9wdGlvbl9jb25zIHRoZWFkIChvcHRpb25fY29ucyB0Zm9vdCBlbHRzKSBpblxuICAgIGxldCBjb250ZW50ID0gbWF0Y2ggY29sdW1ucyB3aXRoXG4gICAgICB8IE5vbmUgLT4gY29udGVudFxuICAgICAgfCBTb21lIGNvbHVtbnMgLT4gVy5hcHBlbmQgY29sdW1ucyBjb250ZW50IGluXG4gICAgbGV0IGNvbnRlbnQgPSBvcHRpb25fY29ucyBjYXB0aW9uIGNvbnRlbnQgaW5cbiAgICBYbWwubm9kZSA/YSBcInRhYmxlXCIgY29udGVudFxuXG4gIGxldCB0YWJsZSA9IHRhYmxleFxuXG4gIGxldCB0ZCA9IHN0YXIgXCJ0ZFwiXG5cbiAgbGV0IHRoID0gc3RhciBcInRoXCJcblxuICBsZXQgdHIgPSBzdGFyIFwidHJcIlxuXG4gIGxldCBjb2xncm91cCA9IHN0YXIgXCJjb2xncm91cFwiXG5cbiAgbGV0IGNvbCA9IHRlcm1pbmFsIFwiY29sXCJcblxuICBsZXQgdGhlYWQgPSBzdGFyIFwidGhlYWRcIlxuXG4gIGxldCB0Ym9keSA9IHN0YXIgXCJ0Ym9keVwiXG5cbiAgbGV0IHRmb290ID0gc3RhciBcInRmb290XCJcblxuICBsZXQgaWZyYW1lID0gc3RhciBcImlmcmFtZVwiXG5cbiAgbGV0IG9iamVjdF8gP3BhcmFtcyA/KGEgPSBbXSkgZWx0cyA9XG4gICAgbGV0IGVsdHMgPSBtYXRjaCBwYXJhbXMgd2l0aFxuICAgICAgfCBOb25lIC0+IGVsdHNcbiAgICAgIHwgU29tZSBlIC0+IFcuYXBwZW5kIGUgZWx0cyBpblxuICAgIFhtbC5ub2RlIH5hIFwib2JqZWN0XCIgZWx0c1xuXG4gIGxldCBwYXJhbSA9IHRlcm1pbmFsIFwicGFyYW1cIlxuXG4gIGxldCBpbWcgfnNyYyB+YWx0ID8oYSA9IFtdKSAoKSA9XG4gICAgbGV0IGEgPSAoYV9zcmMgc3JjKSA6OiAoYV9hbHQgYWx0KSA6OiBhIGluXG4gICAgWG1sLmxlYWYgfmEgXCJpbWdcIlxuXG4gIGxldCBwaWN0dXJlIH5pbWcgP2EgZWx0cyA9XG4gICAgbGV0IHRhaWxfbm9kZSA9IFcuY29ucyBpbWcgKFcubmlsICgpKSBpblxuICAgIGxldCBjb250ZW50ID0gVy5hcHBlbmQgZWx0cyB0YWlsX25vZGUgaW5cbiAgICBYbWwubm9kZSA/YSBcInBpY3R1cmVcIiBjb250ZW50XG5cbiAgbGV0IG1ldGEgPSB0ZXJtaW5hbCBcIm1ldGFcIlxuXG4gIGxldCBzdHlsZSA/KGEgPSBbXSkgZWx0cyA9IFhtbC5ub2RlIH5hIFwic3R5bGVcIiBlbHRzXG5cbiAgbGV0IGxpbmsgfnJlbCB+aHJlZiA/KGEgPSBbXSkgKCkgPVxuICAgIFhtbC5sZWFmIH5hOiAoKGFfcmVsIHJlbCkgOjogKGFfaHJlZiBocmVmKSA6OiBhKSBcImxpbmtcIlxuXG4gIGxldCBiYXNlID0gdGVybWluYWwgXCJiYXNlXCJcblxuICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAoKiBDb252ZXJzaW9uIGZyb20gYW5kIHRvIFhtbCBtb2R1bGUgKilcbiAgbGV0IHRvdCB4ID0geFxuXG4gIGxldCB0b3RsIHggPSB4XG5cbiAgbGV0IHRvZWx0IHggPSB4XG5cbiAgbGV0IHRvZWx0bCB4ID0geFxuXG4gIHR5cGUgZG9jICA9IFsgYEh0bWwgXSBlbHRcbiAgbGV0IGRvY190b2VsdCB4ID0geFxuXG4gIG1vZHVsZSBJID0gWG1sX3N0cmVhbS5JbXBvcnQoWG1sKVxuICBsZXQgb2Zfc2VxIHMgPSB0b3RsIEBAIEkub2Zfc2VxIHNcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG5cbiAgICBsZXQgZGF0YSBzID0gWG1sLmVuY29kZWRwY2RhdGEgc1xuXG4gICAgbGV0IGxlYWYgdGFnID9hICgpID0gWG1sLmxlYWYgP2EgdGFnXG5cbiAgICBsZXQgbm9kZSB0YWcgP2EgZWx0cyA9IFhtbC5ub2RlID9hIHRhZyBlbHRzXG5cbiAgICBsZXQgY29lcmNlX2VsdCB4ID0geFxuXG4gICAgbGV0IGZsb2F0X2F0dHJpYiA9IFhtbC5mbG9hdF9hdHRyaWJcblxuICAgIGxldCBpbnRfYXR0cmliID0gWG1sLmludF9hdHRyaWJcblxuICAgIGxldCBzdHJpbmdfYXR0cmliID0gWG1sLnN0cmluZ19hdHRyaWJcblxuICAgIGxldCB1cmlfYXR0cmliIGEgcyA9IFhtbC51cmlfYXR0cmliIGEgc1xuXG4gICAgbGV0IHNwYWNlX3NlcF9hdHRyaWIgPSBYbWwuc3BhY2Vfc2VwX2F0dHJpYlxuXG4gICAgbGV0IGNvbW1hX3NlcF9hdHRyaWIgPSBYbWwuY29tbWFfc2VwX2F0dHJpYlxuXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIFdyYXBwZWRfZnVuY3Rpb25zXG4gICAgKFhtbCA6IFhtbF9zaWdzLlQgd2l0aCB0eXBlICgnYSwnYikgVy5mdCA9ICdhIC0+ICdiKSA9XG5zdHJ1Y3RcblxuICBtb2R1bGUgWG1sID0gWG1sXG5cbiAgbGV0IHN0cmluZ19vZl9zYW5kYm94X3Rva2VuID0gZnVuY3Rpb25cbiAgICB8IGBBbGxvd19mb3JtcyAtPiBcImFsbG93LWZvcm1zXCJcbiAgICB8IGBBbGxvd19wb2ludGVyX2xvY2sgLT4gXCJhbGxvdy1wb2ludGVyLWxvY2tcIlxuICAgIHwgYEFsbG93X3BvcHVwcyAtPiBcImFsbG93LXBvcHVwc1wiXG4gICAgfCBgQWxsb3dfdG9wX25hdmlnYXRpb24gLT4gXCJhbGxvdy10b3AtbmF2aWdhdGlvblwiXG4gICAgfCBgQWxsb3dfc2FtZV9vcmlnaW4gLT4gXCJhbGxvdy1zYW1lLW9yaWdpblwiXG4gICAgfCBgQWxsb3dfc2NyaXB0IC0+IFwiYWxsb3ctc2NyaXB0XCJcblxuICBsZXQgc3RyaW5nX29mX2xpbmt0eXBlID0gZnVuY3Rpb25cbiAgICB8IGBBbHRlcm5hdGUgLT4gXCJhbHRlcm5hdGVcIlxuICAgIHwgYEFyY2hpdmVzIC0+IFwiYXJjaGl2ZXNcIlxuICAgIHwgYEF1dGhvciAtPiBcImF1dGhvclwiXG4gICAgfCBgQm9va21hcmsgLT4gXCJib29rbWFya1wiXG4gICAgfCBgQ2Fub25pY2FsIC0+IFwiY2Fub25pY2FsXCJcbiAgICB8IGBEbnNfcHJlZmV0Y2ggLT4gXCJkbnMtcHJlZmV0Y2hcIlxuICAgIHwgYEV4dGVybmFsIC0+IFwiZXh0ZXJuYWxcIlxuICAgIHwgYEZpcnN0IC0+IFwiZmlyc3RcIlxuICAgIHwgYEhlbHAgLT4gXCJoZWxwXCJcbiAgICB8IGBJY29uIC0+IFwiaWNvblwiXG4gICAgfCBgSW5kZXggLT4gXCJpbmRleFwiXG4gICAgfCBgTGFzdCAtPiBcImxhc3RcIlxuICAgIHwgYExpY2Vuc2UgLT4gXCJsaWNlbnNlXCJcbiAgICB8IGBNYW5pZmVzdCAtPiBcIm1hbmlmZXN0XCJcbiAgICB8IGBNZSAtPiBcIm1lXCJcbiAgICB8IGBNb2R1bGVwcmVsb2FkIC0+IFwibW9kdWxlcHJlbG9hZFwiXG4gICAgfCBgTmV4dCAtPiBcIm5leHRcIlxuICAgIHwgYE5vZm9sbG93IC0+IFwibm9mb2xsb3dcIlxuICAgIHwgYE5vb3BlbmVyIC0+IFwibm9vcGVuZXJcIlxuICAgIHwgYE5vcmVmZXJyZXIgLT4gXCJub3JlZmVycmVyXCJcbiAgICB8IGBPcGVuZXIgLT4gXCJvcGVuZXJcIlxuICAgIHwgYFBpbmdiYWNrIC0+IFwicGluZ2JhY2tcIlxuICAgIHwgYFByZWNvbm5lY3QgLT4gXCJwcmVjb25uZWN0XCJcbiAgICB8IGBQcmVmZXRjaCAtPiBcInByZWZldGNoXCJcbiAgICB8IGBQcmVsb2FkIC0+IFwicHJlbG9hZFwiXG4gICAgfCBgUHJlcmVuZGVyIC0+IFwicHJlcmVuZGVyXCJcbiAgICB8IGBQcmV2IC0+IFwicHJldlwiXG4gICAgfCBgU2VhcmNoIC0+IFwic2VhcmNoXCJcbiAgICB8IGBTdHlsZXNoZWV0IC0+IFwic3R5bGVzaGVldFwiXG4gICAgfCBgU2lkZWJhciAtPiBcInNpZGViYXJcIlxuICAgIHwgYFRhZyAtPiBcInRhZ1wiXG4gICAgfCBgVXAgLT4gXCJ1cFwiXG4gICAgfCBgT3RoZXIgcyAtPiBzXG5cbiAgbGV0IHN0cmluZ19vZl9tZWRpYWRlc2NfdG9rZW4gPVxuICAgIGZ1bmN0aW9uXG4gICAgfCBgQWxsIC0+IFwiYWxsXCJcbiAgICB8IGBBdXJhbCAtPiBcImF1cmFsXCJcbiAgICB8IGBCcmFpbGxlIC0+IFwiYnJhaWxsZVwiXG4gICAgfCBgRW1ib3NzZWQgLT4gXCJlbWJvc3NlZFwiXG4gICAgfCBgSGFuZGhlbGQgLT4gXCJoYW5kaGVsZFwiXG4gICAgfCBgUHJpbnQgLT4gXCJwcmludFwiXG4gICAgfCBgUHJvamVjdGlvbiAtPiBcInByb2plY3Rpb25cIlxuICAgIHwgYFNjcmVlbiAtPiBcInNjcmVlblwiXG4gICAgfCBgU3BlZWNoIC0+IFwic3BlZWNoXCJcbiAgICB8IGBUdHkgLT4gXCJ0dHlcIlxuICAgIHwgYFR2IC0+IFwidHZcIlxuICAgIHwgYFJhd19tZWRpYWRlc2MgcyAtPiBzXG5cbiAgbGV0IHN0cmluZ19vZl9yZWZlcnJlcnBvbGljeSA9IGZ1bmN0aW9uXG4gICAgfCBgRW1wdHkgLT4gXCJcIlxuICAgIHwgYE5vX3JlZmVycmVyIC0+IFwibm8tcmVmZXJyZXJcIlxuICAgIHwgYE5vX3JlZmVycmVyX3doZW5fZG93bmdyYWRlIC0+IFwibm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGVcIlxuICAgIHwgYE9yaWdpbiAtPiBcIm9yaWdpblwiXG4gICAgfCBgT3JpZ2luX3doZW5fY3Jvc3Nfb3JpZ2luIC0+IFwib3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luXCJcbiAgICB8IGBTYW1lX29yaWdpbiAtPiBcInNhbWUtb3JpZ2luXCJcbiAgICB8IGBTdHJpY3Rfb3JpZ2luIC0+IFwic3RyaWN0LW9yaWdpblwiXG4gICAgfCBgU3RyaWN0X29yaWdpbl93aGVuX2Nyb3NzX29yaWdpbiAtPiBcInN0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5cIlxuICAgIHwgYFVuc2FmZV91cmwgLT4gXCJ1bnNhZmUtdXJsXCJcblxuICBsZXQgc3RyaW5nX29mX2JpZ192YXJpYW50ID0gZnVuY3Rpb25cbiAgICB8IGBBbm9ueW1vdXMgLT4gXCJhbm9ueW1vdXNcIlxuICAgIHwgYEFzeW5jIC0+IFwiYXN5bmNcIlxuICAgIHwgYEF1dG9mb2N1cyAtPiBcImF1dG9mb2N1c1wiXG4gICAgfCBgQXV0b3BsYXkgLT4gXCJhdXRvcGxheVwiXG4gICAgfCBgQ2hlY2tlZCAtPiBcImNoZWNrZWRcIlxuICAgIHwgYERlZmVyIC0+IFwiZGVmZXJcIlxuICAgIHwgYERpc2FibGVkIC0+IFwiZGlzYWJsZWRcIlxuICAgIHwgYE11dGVkIC0+IFwibXV0ZWRcIlxuICAgIHwgYFJlYWRPbmx5IC0+IFwicmVhZG9ubHlcIlxuICAgIHwgYFJlY3QgLT4gXCJyZWN0XCJcbiAgICB8IGBTZWxlY3RlZCAtPiBcInNlbGVjdGVkXCJcbiAgICB8IGBVc2VfY3JlZGVudGlhbHMgLT4gXCJ1c2UtY3JlZGVudGlhbHNcIlxuICAgIHwgYFczX29yZ18xOTk5X3hodG1sIC0+IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiXG4gICAgfCBgQWxsIC0+IFwiYWxsXCJcbiAgICB8IGBQcmVzZXJ2ZSAtPiBcInByZXNlcnZlXCJcbiAgICB8IGBEZWZhdWx0IC0+IFwiZGVmYXVsdFwiXG4gICAgfCBgQ29udHJvbHMgLT4gXCJjb250cm9sc1wiXG4gICAgfCBgTHRyIC0+IFwibHRyXCJcbiAgICB8IGBSdGwgLT4gXCJydGxcIlxuICAgIHwgYEdldCAtPiBcIkdFVFwiXG4gICAgfCBgUG9zdCAtPiBcIlBPU1RcIlxuICAgIHwgYEZvcm1ub3ZhbGlkYXRlIC0+IFwiZm9ybW5vdmFsaWRhdGVcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgSXNtYXAgLT4gXCJpc21hcFwiXG4gICAgfCBgTG9vcCAtPiBcImxvb3BcIlxuICAgIHwgYE5vdmFsaWRhdGUgLT4gXCJub3ZhbGlkYXRlXCJcbiAgICB8IGBPcGVuIC0+IFwib3BlblwiXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYE1ldGFkYXRhIC0+IFwibWV0YWRhdGFcIlxuICAgIHwgYEF1ZGlvIC0+IFwiYXVkaW9cIlxuICAgIHwgYFB1YmRhdGUgLT4gXCJwdWJkYXRlXCJcbiAgICB8IGBSZXF1aXJlZCAtPiBcInJlcXVpcmVkXCJcbiAgICB8IGBSZXZlcnNlZCAtPiBcInJlc2VydmVkXCJcbiAgICB8IGBTY29wZWQgLT4gXCJzY29wZWRcIlxuICAgIHwgYFNlYW1sZXNzIC0+IFwic2VhbWxlc3NcIlxuICAgIHwgYEFueSAtPiBcImFueVwiXG4gICAgfCBgU29mdCAtPiBcInNvZnRcIlxuICAgIHwgYEhhcmQgLT4gXCJoYXJkXCJcbiAgICB8IGBDb250ZXh0IC0+IFwiY29udGV4dFwiXG4gICAgfCBgVG9vbGJhciAtPiBcInRvb2xiYXJcIlxuICAgIHwgYENvbW1hbmQgLT4gXCJjb21tYW5kXCJcbiAgICB8IGBDaGVja2JveCAtPiBcImNoZWNrYm94XCJcbiAgICB8IGBSYWRpbyAtPiBcInJhZGlvXCJcbiAgICB8IGBNdWx0aXBsZSAtPiBcIm11bHRpcGxlXCJcbiAgICB8IGBMZWZ0IC0+IFwibGVmdFwiXG4gICAgfCBgUmlnaHQgLT4gXCJyaWdodFwiXG4gICAgfCBgSnVzdGlmeSAtPiBcImp1c3RpZnlcIlxuICAgIHwgYENoYXIgLT4gXCJjaGFyXCJcbiAgICB8IGBSb3cgLT4gXCJyb3dcIlxuICAgIHwgYENvbCAtPiBcImNvbFwiXG4gICAgfCBgUm93Z3JvdXAgLT4gXCJyb3dncm91cFwiXG4gICAgfCBgQ29sZ3JvdXAgLT4gXCJjb2xncm91cFwiXG4gICAgfCBgR3JvdXBzIC0+IFwiZ3JvdXBzXCJcbiAgICB8IGBSb3dzIC0+IFwicm93c1wiXG4gICAgfCBgQ29scyAtPiBcImNvbHNcIlxuICAgIHwgYFplcm8gLT4gXCIwXCJcbiAgICB8IGBPbmUgLT4gXCIxXCJcbiAgICB8IGBZZXMgLT4gXCJ5ZXNcIlxuICAgIHwgYE5vIC0+IFwibm9cIlxuICAgIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgICB8IGBDaXJjbGUgLT4gXCJjaXJjbGVcIlxuICAgIHwgYFBvbHkgLT4gXCJwb2x5XCJcbiAgICB8IGBBbHRlcm5hdGUgLT4gXCJhbHRlcm5hdGVcIlxuICAgIHwgYEFyY2hpdmVzIC0+IFwiYXJjaGl2ZXNcIlxuICAgIHwgYEF1dGhvciAtPiBcImF1dGhvclwiXG4gICAgfCBgQm9va21hcmsgLT4gXCJib29rbWFya1wiXG4gICAgfCBgRXh0ZXJuYWwgLT4gXCJleHRlcm5hbFwiXG4gICAgfCBgRmlyc3QgLT4gXCJmaXJzdFwiXG4gICAgfCBgSGVscCAtPiBcImhlbHBcIlxuICAgIHwgYEljb24gLT4gXCJpY29uXCJcbiAgICB8IGBJbmRleCAtPiBcImluZGV4XCJcbiAgICB8IGBMYXN0IC0+IFwibGFzdFwiXG4gICAgfCBgTGljZW5zZSAtPiBcImxpY2Vuc2VcIlxuICAgIHwgYE5leHQgLT4gXCJuZXh0XCJcbiAgICB8IGBOb2ZvbGxvdyAtPiBcIm5vZm9sbG93XCJcbiAgICB8IGBOb3JlZmVycmVyIC0+IFwibm9yZWZlcnJlclwiXG4gICAgfCBgUGluZ2JhY2sgLT4gXCJwaW5nYmFja1wiXG4gICAgfCBgUHJlZmV0Y2ggLT4gXCJwcmVmZXRjaFwiXG4gICAgfCBgUHJldiAtPiBcInByZXZcIlxuICAgIHwgYFNlYXJjaCAtPiBcInNlYXJjaFwiXG4gICAgfCBgU3R5bGVzaGVldCAtPiBcInN0eWxlc2hlZXRcIlxuICAgIHwgYFNpZGViYXIgLT4gXCJzaWRlYmFyXCJcbiAgICB8IGBUYWcgLT4gXCJ0YWdcIlxuICAgIHwgYFVwIC0+IFwidXBcIlxuICAgIHwgYFZlcmJhdGltIC0+IFwidmVyYmF0aW1cIlxuICAgIHwgYExhdGluIC0+IFwibGF0aW5cIlxuICAgIHwgYExhdGluX25hbWUgLT4gXCJsYXRpbi1uYW1lXCJcbiAgICB8IGBMYXRpbl9wcm9zZSAtPiBcImxhdGluLXByb3NlXCJcbiAgICB8IGBGdWxsX3dpZHRoX2xhdGluIC0+IFwiZnVsbC13aWR0aC1sYXRpblwiXG4gICAgfCBgS2FuYSAtPiBcImthbmFcIlxuICAgIHwgYEthdGFrYW5hIC0+IFwia2F0YWthbmFcIlxuICAgIHwgYE51bWVyaWMgLT4gXCJudW1lcmljXCJcbiAgICB8IGBUZWwgLT4gXCJ0ZWxcIlxuICAgIHwgYEVtYWlsIC0+IFwiZW1haWxcIlxuICAgIHwgYFVybCAtPiBcInVybFwiXG4gICAgfCBgVGV4dCAtPiBcInRleHRcIlxuICAgIHwgYERlY2ltYWwgLT4gXCJkZWNpbWFsXCJcbiAgICB8IGBPdGhlciBzIC0+IHNcblxuICBsZXQgc3RyaW5nX29mX2lucHV0X3R5cGUgPSBmdW5jdGlvblxuICAgIHwgYEJ1dHRvbiAtPiBcImJ1dHRvblwiXG4gICAgfCBgQ2hlY2tib3ggLT4gXCJjaGVja2JveFwiXG4gICAgfCBgQ29sb3IgLT4gXCJjb2xvclwiXG4gICAgfCBgRGF0ZSAtPiBcImRhdGVcIlxuICAgIHwgYERhdGV0aW1lIC0+IFwiZGF0ZXRpbWVcIlxuICAgIHwgYERhdGV0aW1lX2xvY2FsIC0+IFwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgIHwgYEVtYWlsIC0+IFwiZW1haWxcIlxuICAgIHwgYEZpbGUgLT4gXCJmaWxlXCJcbiAgICB8IGBIaWRkZW4gLT4gXCJoaWRkZW5cIlxuICAgIHwgYEltYWdlIC0+IFwiaW1hZ2VcIlxuICAgIHwgYE1vbnRoIC0+IFwibW9udGhcIlxuICAgIHwgYE51bWJlciAtPiBcIm51bWJlclwiXG4gICAgfCBgUGFzc3dvcmQgLT4gXCJwYXNzd29yZFwiXG4gICAgfCBgUmFkaW8gLT4gXCJyYWRpb1wiXG4gICAgfCBgUmFuZ2UgLT4gXCJyYW5nZVwiXG4gICAgfCBgUmVhZG9ubHkgLT4gXCJyZWFkb25seVwiXG4gICAgfCBgUmVzZXQgLT4gXCJyZXNldFwiXG4gICAgfCBgU2VhcmNoIC0+IFwic2VhcmNoXCJcbiAgICB8IGBTdWJtaXQgLT4gXCJzdWJtaXRcIlxuICAgIHwgYFRlbCAtPiBcInRlbFwiXG4gICAgfCBgVGV4dCAtPiBcInRleHRcIlxuICAgIHwgYFRpbWUgLT4gXCJ0aW1lXCJcbiAgICB8IGBVcmwgLT4gXCJ1cmxcIlxuICAgIHwgYFdlZWsgLT4gXCJ3ZWVrXCJcblxuICBsZXQgc3RyaW5nX29mX3NjcmlwdF90eXBlID0gZnVuY3Rpb25cbiAgfCBgSmF2YXNjcmlwdCAtPiBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIlxuICB8IGBNb2R1bGUgLT4gXCJtb2R1bGVcIlxuICB8IGBNaW1lIHMgLT4gc1xuXG4gIGxldCBzdHJpbmdfb2ZfbnVtYmVyX29yX2RhdGV0aW1lID0gZnVuY3Rpb25cbiAgICB8IGBOdW1iZXIgbiAtPiBzdHJpbmdfb2ZfaW50IG5cbiAgICB8IGBEYXRldGltZSB0IC0+IHRcblxuICBsZXQgc3RyaW5nX29mX2NoYXJhY3RlciA9IFN0cmluZy5tYWtlIDFcblxuICBsZXQgc3RyaW5nX29mX251bWJlciA9IHN0cmluZ19vZl9pbnRcblxuICBsZXQgc3RyaW5nX29mX2Jvb2wgPSBzdHJpbmdfb2ZfYm9vbFxuXG4gIGxldCBvbm9mZl9vZl9ib29sID0gZnVuY3Rpb25cbiAgICB8IGZhbHNlIC0+IFwib2ZmXCJcbiAgICB8IHRydWUgLT4gXCJvblwiXG5cbiAgbGV0IHVub3B0aW9uX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBcIlwiXG5cbiAgbGV0IHN0cmluZ19vZl9zdGVwID0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPiBYbWxfcHJpbnQuc3RyaW5nX29mX251bWJlciB4XG4gICAgfCBOb25lIC0+IFwiYW55XCJcblxuICBsZXQgc3RyaW5nX29mX3NpemVzID0gZnVuY3Rpb25cbiAgICB8IFNvbWUgbCAtPlxuICAgICAgU3RyaW5nLmNvbmNhdCBcIiBcIlxuICAgICAgICAoTGlzdC5tYXAgKGZ1biAoeCwgeSkgLT4gUHJpbnRmLnNwcmludGYgXCIlZHglZFwiIHggeSkgbClcbiAgICB8IE5vbmUgLT5cbiAgICAgIFwiYW55XCJcblxuICBsZXQgc3RyaW5nX29mX3NhbmRib3ggbCA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgc3RyaW5nX29mX3NhbmRib3hfdG9rZW4gbClcblxuICBsZXQgc3RyaW5nX29mX251bWJlcnMgbCA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIixcIiAoTGlzdC5tYXAgc3RyaW5nX29mX251bWJlciBsKVxuXG4gIGxldCBzdHJpbmdfb2ZfbWVkaWFkZXNjIGwgPVxuICAgIFN0cmluZy5jb25jYXQgXCIsIFwiIChMaXN0Lm1hcCBzdHJpbmdfb2ZfbWVkaWFkZXNjX3Rva2VuIGwpXG5cbiAgbGV0IHN0cmluZ19vZl9saW5rdHlwZXMgbCA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2xpbmt0eXBlIGwpXG5cbiAgdHlwZSBpbWFnZV9jYW5kaWRhdGUgPVxuICAgIFsgYFVybCBvZiBYbWwudXJpXG4gICAgfCBgVXJsX3dpZHRoIG9mIFhtbC51cmkgKiBIdG1sX3R5cGVzLm51bWJlclxuICAgIHwgYFVybF9waXhlbCBvZiBYbWwudXJpICogSHRtbF90eXBlcy5mbG9hdF9udW1iZXIgXVxuXG4gIGxldCBzdHJpbmdfb2Zfc3Jjc2V0IChsIDogWzwgaW1hZ2VfY2FuZGlkYXRlXSBsaXN0KSA9XG4gICAgbGV0IGYgPSBmdW5jdGlvblxuICAgIHwgYFVybCB1cmwgLT4gWG1sLnN0cmluZ19vZl91cmkgdXJsXG4gICAgfCBgVXJsX3dpZHRoICh1cmwsIHYpIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzd1wiIChYbWwuc3RyaW5nX29mX3VyaSB1cmwpIChzdHJpbmdfb2ZfbnVtYmVyIHYpXG4gICAgfCBgVXJsX3BpeGVsICh1cmwsIHYpIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzeFwiIChYbWwuc3RyaW5nX29mX3VyaSB1cmwpIChYbWxfcHJpbnQuc3RyaW5nX29mX251bWJlciB2KVxuICAgIGluXG4gICAgU3RyaW5nLmNvbmNhdCBcIiwgXCIgKExpc3QubWFwIGYgbClcblxuICBsZXQgc3RyaW5nX29mX2F1dG9jb21wbGV0ZSAobCA6IEh0bWxfdHlwZXMuYXV0b2NvbXBsZXRlX29wdGlvbikgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgYE9uIHwgYFRva2VucyBbXSAtPiBcIm9uXCJcbiAgICB8IGBPZmYgLT4gXCJvZmZcIlxuICAgIHwgYFRva2VucyBzdHJzIC0+IFN0cmluZy5jb25jYXQgXCIgXCIgc3Ryc1xuXG5lbmRcblxubW9kdWxlIE1ha2VcbiAgICAoWG1sIDogWG1sX3NpZ3MuVCB3aXRoIHR5cGUgKCdhLCAnYikgVy5mdCA9ICdhIC0+ICdiKVxuICAgIChTdmcgOiBTdmdfc2lncy5UIHdpdGggbW9kdWxlIFhtbCA6PSBYbWwpID1cbiAgTWFrZV93aXRoX3dyYXBwZWRfZnVuY3Rpb25zKFhtbCkoV3JhcHBlZF9mdW5jdGlvbnMoWG1sKSkoU3ZnKVxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAwNCBUaG9yc3RlbiBPaGwgPG9obEBwaHlzaWsudW5pLXd1ZXJ6YnVyZy5kZT5cbiAqIENvcHlyaWdodCAoQykgMjAwNyBHYWJyaWVsIEtlcm5laXNcbiAqIENvcHlyaWdodCAoQykgMjAxMCBDZWNpbGUgSGVyYmVsaW5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cblxubW9kdWxlIE0gPSBzdHJ1Y3RcblxuICBtb2R1bGUgVyA9IFhtbF93cmFwLk5vV3JhcFxuXG4gIHR5cGUgJ2Egd3JhcCA9ICdhXG4gIHR5cGUgJ2EgbGlzdF93cmFwID0gJ2EgbGlzdFxuXG4gIHR5cGUgdXJpID0gc3RyaW5nXG4gIGxldCB1cmlfb2Zfc3RyaW5nIHMgPSBzXG4gIGxldCBzdHJpbmdfb2ZfdXJpIHMgPSBzXG5cbiAgdHlwZSBzZXBhcmF0b3IgPSBTcGFjZSB8IENvbW1hXG5cbiAgKCoqIEF0dHJpYnV0ZXMgKilcblxuICB0eXBlIGFuYW1lID0gc3RyaW5nXG4gIHR5cGUgYWNvbnRlbnQgPVxuICAgIHwgQUZsb2F0IG9mIGZsb2F0XG4gICAgfCBBSW50IG9mIGludFxuICAgIHwgQVN0ciBvZiBzdHJpbmdcbiAgICB8IEFTdHJMIG9mIHNlcGFyYXRvciAqIHN0cmluZyBsaXN0XG4gIHR5cGUgYXR0cmliID0gYW5hbWUgKiBhY29udGVudFxuXG4gIHR5cGUgZXZlbnRfaGFuZGxlciA9IHN0cmluZ1xuICB0eXBlIG1vdXNlX2V2ZW50X2hhbmRsZXIgPSBzdHJpbmdcbiAgdHlwZSBrZXlib2FyZF9ldmVudF9oYW5kbGVyID0gc3RyaW5nXG4gIHR5cGUgdG91Y2hfZXZlbnRfaGFuZGxlciA9IHN0cmluZ1xuXG4gIGxldCBhY29udGVudCAoXywgYSkgPSBhXG4gIGxldCBhbmFtZSAobmFtZSwgXykgPSBuYW1lXG5cbiAgbGV0IGZsb2F0X2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQUZsb2F0IHZhbHVlXG4gIGxldCBpbnRfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBSW50IHZhbHVlXG4gIGxldCBzdHJpbmdfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBU3RyIHZhbHVlXG4gIGxldCBzcGFjZV9zZXBfYXR0cmliIG5hbWUgdmFsdWVzID0gbmFtZSwgQVN0ckwgKFNwYWNlLCB2YWx1ZXMpXG4gIGxldCBjb21tYV9zZXBfYXR0cmliIG5hbWUgdmFsdWVzID0gbmFtZSwgQVN0ckwgKENvbW1hLCB2YWx1ZXMpXG4gIGxldCBldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQVN0ciB2YWx1ZVxuICBsZXQgbW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSB2YWx1ZSA9IG5hbWUsIEFTdHIgdmFsdWVcbiAgbGV0IGtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBU3RyIHZhbHVlXG4gIGxldCB0b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQVN0ciB2YWx1ZVxuICBsZXQgdXJpX2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQVN0ciB2YWx1ZVxuICBsZXQgdXJpc19hdHRyaWIgbmFtZSB2YWx1ZXMgPSBuYW1lLCBBU3RyTCAoU3BhY2UsIHZhbHVlcylcblxuXG4gICgqKiBFbGVtZW50ICopXG5cbiAgdHlwZSBlbmFtZSA9IHN0cmluZ1xuICB0eXBlIGVjb250ZW50ID1cbiAgICB8IEVtcHR5XG4gICAgfCBDb21tZW50IG9mIHN0cmluZ1xuICAgIHwgRW5jb2RlZFBDREFUQSBvZiBzdHJpbmdcbiAgICB8IFBDREFUQSBvZiBzdHJpbmdcbiAgICB8IEVudGl0eSBvZiBzdHJpbmdcbiAgICB8IExlYWYgb2YgZW5hbWUgKiBhdHRyaWIgbGlzdFxuICAgIHwgTm9kZSBvZiBlbmFtZSAqIGF0dHJpYiBsaXN0ICogZWNvbnRlbnQgbGlzdFxuXG4gIHR5cGUgZWx0ID0gIGVjb250ZW50XG5cbiAgbGV0IGNvbnRlbnQgZWx0ID0gZWx0XG5cbiAgbGV0IGVtcHR5ICgpID0gRW1wdHlcblxuICBsZXQgY29tbWVudCBjID0gQ29tbWVudCBjXG5cbiAgbGV0IHBjZGF0YSBkID0gUENEQVRBIGRcbiAgbGV0IGVuY29kZWRwY2RhdGEgZCA9IEVuY29kZWRQQ0RBVEEgZFxuICBsZXQgZW50aXR5IGUgPSBFbnRpdHkgZVxuXG4gICgqIEZvciBzZWN1cml0eSByZWFzb25zLCB3ZSBkbyBub3QgYWxsb3cgXCJdXT5cIiBpbnNpZGUgQ0RBVEFcbiAgICAgKGFzIHRoaXMgc3RyaW5nIGlzIHRvIGJlIGNvbnNpZGVyZWQgYXMgdGhlIGVuZCBvZiB0aGUgY2RhdGEpXG4gICopXG4gIGxldCByZV9lbmRfY2RhdGEgPSBSZS4oY29tcGlsZSBAQCBzdHIgXCJdXT5cIilcbiAgbGV0IGVuY29kZWRfY2RhdGEgczEgczIgcyA9XG4gICAgZW5jb2RlZHBjZGF0YVxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiXFxuJXNcXG4lc1xcbiVzXFxuXCJcbiAgICAgICAgIHMxXG4gICAgICAgICAoUmUucmVwbGFjZV9zdHJpbmcgfmFsbDp0cnVlIHJlX2VuZF9jZGF0YSB+Ynk6XCJcIiBzKVxuICAgICAgICAgczIgKVxuXG4gIGxldCBjZGF0YSA9IGVuY29kZWRfY2RhdGEgXCI8IVtDREFUQVtcIiBcIl1dPlwiXG4gIGxldCBjZGF0YV9zY3JpcHQgPSBlbmNvZGVkX2NkYXRhIFwiLy88IVtDREFUQVtcIiBcIi8vXV0+XCJcbiAgbGV0IGNkYXRhX3N0eWxlID0gZW5jb2RlZF9jZGF0YSBcIi8qIDwhW0NEQVRBWyAqL1wiIFwiLyogXV0+ICovXCJcblxuICBsZXQgbGVhZiA/KGE9W10pIG5hbWUgPSBMZWFmIChuYW1lLCBhKVxuICBsZXQgbm9kZSA/KGE9W10pIG5hbWUgY2hpbGRyZW4gPSBOb2RlIChuYW1lLCBhLCBjaGlsZHJlbilcblxuZW5kXG5cbmluY2x1ZGUgTVxuaW5jbHVkZSBYbWxfcHJpbnQuTWFrZV9zaW1wbGUoTSkoc3RydWN0IGxldCBlbXB0eXRhZ3MgPSBbXSBlbmQpXG5bQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuaW5jbHVkZSBYbWxfaXRlci5NYWtlKE0pXG5pbmNsdWRlIFhtbF9wcmludC5NYWtlX2ZtdChNKShzdHJ1Y3QgbGV0IGVtcHR5dGFncyA9IFtdIGVuZClcblxuaW5jbHVkZSBYbWxfc3RyZWFtLkltcG9ydChNKVxubGV0IHByaW50IGZtdCB4ID0gcHJpbnRfbGlzdCB+b3V0cHV0OihGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCkgW3hdXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydCwgR3LDqWdvaXJlIEhlbnJ5XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG5tb2R1bGUgTSA9IFN2Z19mLk1ha2UoVHl4bWxfeG1sKVxubW9kdWxlIFAgPSBYbWxfcHJpbnQuTWFrZV90eXBlZF9mbXQoVHl4bWxfeG1sKShNKVxubW9kdWxlIE1ha2VfcHJpbnRlciA9IFhtbF9wcmludC5NYWtlX3R5cGVkKFR5eG1sX3htbCkoTSlcbltAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG5cbmluY2x1ZGUgTVxuaW5jbHVkZSBQXG5cbmxldCBfcHAgPSBwcCAoKVxubGV0IF9wcF9lbHQgPSBwcF9lbHQgKClcbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0LCBHcsOpZ29pcmUgSGVucnlcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cbm1vZHVsZSBNID0gSHRtbF9mLk1ha2UoVHl4bWxfeG1sKShUeXhtbF9zdmcpXG5tb2R1bGUgUCA9IFhtbF9wcmludC5NYWtlX3R5cGVkX2ZtdChUeXhtbF94bWwpKE0pXG5tb2R1bGUgTWFrZV9wcmludGVyID0gWG1sX3ByaW50Lk1ha2VfdHlwZWQoVHl4bWxfeG1sKShNKVxuW0BAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbmluY2x1ZGUgTVxuaW5jbHVkZSBQXG5cbmxldCBfcHAgPSBwcCAoKVxubGV0IF9wcF9lbHQgPSBwcF9lbHQgKClcbiIsIigqIFJlYWN0aXZlRGF0YVxuICogaHR0cHM6Ly9naXRodWIuY29tL2hodWdvL3JlYWN0aXZlRGF0YVxuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgdHlwZSBEQVRBID0gc2lnXG4gIHR5cGUgJ2EgZGF0YVxuICB0eXBlICdhIHBhdGNoXG4gIHZhbCBtZXJnZSA6ICdhIHBhdGNoIC0+ICdhIGRhdGEgLT4gJ2EgZGF0YVxuICB2YWwgbWFwX3BhdGNoIDogKCdhIC0+ICdiKSAtPiAnYSBwYXRjaCAtPiAnYiBwYXRjaFxuICB2YWwgbWFwX2RhdGEgOiAoJ2EgLT4gJ2IpIC0+ICdhIGRhdGEgLT4gJ2IgZGF0YVxuICB2YWwgZW1wdHkgOiAnYSBkYXRhXG4gIHZhbCBlcXVhbCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSBkYXRhIC0+ICdhIGRhdGEgLT4gYm9vbFxuICB2YWwgZGlmZiA6IGVxOignYSAtPiAnYSAtPiBib29sKSAtPiAnYSBkYXRhIC0+ICdhIGRhdGEgLT4gJ2EgcGF0Y2hcbmVuZFxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAnYSBkYXRhXG4gIHR5cGUgJ2EgcGF0Y2hcbiAgdHlwZSAnYSBtc2cgPSBQYXRjaCBvZiAnYSBwYXRjaCB8IFNldCBvZiAnYSBkYXRhXG4gIHR5cGUgJ2EgaGFuZGxlXG4gIHZhbCBlbXB0eSA6ICdhIHRcbiAgdmFsIGNyZWF0ZSA6ICdhIGRhdGEgLT4gJ2EgdCAqICdhIGhhbmRsZVxuICB2YWwgZnJvbV9ldmVudCA6ICdhIGRhdGEgLT4gJ2EgbXNnIFJlYWN0LkUudCAtPiAnYSB0XG4gIHZhbCBmcm9tX3NpZ25hbCA6ID9lcTooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgZGF0YSBSZWFjdC5TLnQgLT4gJ2EgdFxuICB2YWwgY29uc3QgOiAnYSBkYXRhIC0+ICdhIHRcbiAgdmFsIHBhdGNoIDogJ2EgaGFuZGxlIC0+ICdhIHBhdGNoIC0+IHVuaXRcbiAgdmFsIHNldCAgIDogJ2EgaGFuZGxlIC0+ICdhIGRhdGEgLT4gdW5pdFxuICB2YWwgbWFwX21zZyA6ICgnYSAtPiAnYikgLT4gJ2EgbXNnIC0+ICdiIG1zZ1xuICB2YWwgbWFwIDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgdmFsIHZhbHVlIDogJ2EgdCAtPiAnYSBkYXRhXG4gIHZhbCBmb2xkIDogKCdhIC0+ICdiIG1zZyAtPiAnYSkgLT4gJ2IgdCAtPiAnYSAtPiAnYSBSZWFjdC5zaWduYWxcbiAgdmFsIHNpZ25hbCA6ID9lcTooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSBkYXRhIFJlYWN0LlMudFxuICB2YWwgZXZlbnQgOiAnYSB0IC0+ICdhIG1zZyBSZWFjdC5FLnRcbmVuZFxuXG5tb2R1bGUgTWFrZShEIDogREFUQSkgOlxuICBTIHdpdGggdHlwZSAnYSBkYXRhID0gJ2EgRC5kYXRhXG4gICAgIGFuZCB0eXBlICdhIHBhdGNoID0gJ2EgRC5wYXRjaCA9IHN0cnVjdFxuXG4gIHR5cGUgJ2EgZGF0YSA9ICdhIEQuZGF0YVxuICB0eXBlICdhIHBhdGNoID0gJ2EgRC5wYXRjaFxuICBsZXQgbWVyZ2UgPSBELm1lcmdlXG4gIGxldCBtYXBfcGF0Y2ggPSBELm1hcF9wYXRjaFxuICBsZXQgbWFwX2RhdGEgPSBELm1hcF9kYXRhXG5cbiAgdHlwZSAnYSBtc2cgPVxuICAgIHwgUGF0Y2ggb2YgJ2EgcGF0Y2hcbiAgICB8IFNldCBvZiAnYSBkYXRhXG5cbiAgdHlwZSAnYSBoYW5kbGUgPSA/c3RlcDpSZWFjdC5zdGVwIC0+ICdhIG1zZyAtPiB1bml0XG5cbiAgdHlwZSAnYSBtdXQgPSB7XG4gICAgY3VycmVudCA6ICdhIGRhdGEgcmVmO1xuICAgIGV2ZW50IDogJ2EgbXNnIFJlYWN0LkUudDtcbiAgfVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBDb25zdCBvZiAnYSBkYXRhXG4gICAgfCBNdXQgb2YgJ2EgbXV0XG5cbiAgbGV0IGVtcHR5ID0gQ29uc3QgRC5lbXB0eVxuXG4gIGxldCBjcmVhdGUgbCA9XG4gICAgbGV0IGluaXRpYWxfZXZlbnQsc2VuZCA9IFJlYWN0LkUuY3JlYXRlICgpIGluXG4gICAgbGV0IGN1cnJlbnQgPSByZWYgbCBpblxuICAgIGxldCBldmVudCA9IFJlYWN0LkUubWFwIChmdW4gbXNnIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIG1zZyB3aXRoXG4gICAgICAgICAgfCBTZXQgbCAtPiBjdXJyZW50IDo9IGw7XG4gICAgICAgICAgfCBQYXRjaCBwIC0+IGN1cnJlbnQgOj0gbWVyZ2UgcCAhY3VycmVudFxuICAgICAgICBlbmQ7XG4gICAgICAgIG1zZykgaW5pdGlhbF9ldmVudCBpblxuICAgIE11dCB7Y3VycmVudDtldmVudH0sc2VuZFxuXG4gIGxldCBmcm9tX2V2ZW50IGwgaW5pdGlhbF9ldmVudCA9XG4gICAgbGV0IGN1cnJlbnQgPSByZWYgbCBpblxuICAgIGxldCBldmVudCA9IFJlYWN0LkUubWFwIChmdW4gbXNnIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIG1zZyB3aXRoXG4gICAgICAgICAgfCBTZXQgbCAtPiBjdXJyZW50IDo9IGw7XG4gICAgICAgICAgfCBQYXRjaCBwIC0+IGN1cnJlbnQgOj0gbWVyZ2UgcCAhY3VycmVudFxuICAgICAgICBlbmQ7XG4gICAgICAgIG1zZykgaW5pdGlhbF9ldmVudCBpblxuICAgIE11dCB7Y3VycmVudDtldmVudH1cblxuICBsZXQgY29uc3QgeCA9IENvbnN0IHhcblxuICBsZXQgbWFwX21zZyAoZiA6ICdhIC0+ICdiKSA6ICdhIG1zZyAtPiAnYiBtc2cgPSBmdW5jdGlvblxuICAgIHwgU2V0IGwgLT4gU2V0IChtYXBfZGF0YSBmIGwpXG4gICAgfCBQYXRjaCBwIC0+IFBhdGNoIChtYXBfcGF0Y2ggZiBwKVxuXG4gIGxldCBtYXAgZiBzID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IENvbnN0IHggLT4gQ29uc3QgKG1hcF9kYXRhIGYgeClcbiAgICB8IE11dCBzIC0+XG4gICAgICBsZXQgY3VycmVudCA9IHJlZiAobWFwX2RhdGEgZiAhKHMuY3VycmVudCkpIGluXG4gICAgICBsZXQgZXZlbnQgPSBSZWFjdC5FLm1hcCAoZnVuIG1zZyAtPlxuICAgICAgICAgIGxldCBtc2cgPSBtYXBfbXNnIGYgbXNnIGluXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbXNnIHdpdGhcbiAgICAgICAgICAgIHwgU2V0IGwgLT4gY3VycmVudCA6PSBsO1xuICAgICAgICAgICAgfCBQYXRjaCBwIC0+IGN1cnJlbnQgOj0gbWVyZ2UgcCAhY3VycmVudFxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBtc2cpIHMuZXZlbnQgaW5cbiAgICAgIE11dCB7Y3VycmVudCA7ZXZlbnR9XG5cbiAgbGV0IHZhbHVlIHMgPSBtYXRjaCBzIHdpdGhcbiAgICB8IENvbnN0IGMgLT4gY1xuICAgIHwgTXV0IHMgLT4gIShzLmN1cnJlbnQpXG5cbiAgbGV0IGV2ZW50IHMgPSBtYXRjaCBzIHdpdGhcbiAgICB8IENvbnN0IF8gLT4gUmVhY3QuRS5uZXZlclxuICAgIHwgTXV0IHMgLT4gcy5ldmVudFxuXG4gIGxldCBwYXRjaCAocyA6ICdhIGhhbmRsZSkgcCA9IHMgKFBhdGNoIHApXG5cbiAgbGV0IHNldCAocyA6ICdhIGhhbmRsZSkgcCA9IHMgKFNldCBwKVxuXG4gIGxldCBmb2xkIGYgcyBhY2MgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgQ29uc3QgYyAtPiBSZWFjdC5TLmNvbnN0IChmIGFjYyAoU2V0IGMpKVxuICAgIHwgTXV0IHMgLT5cbiAgICAgIGxldCBhY2MgPSBmIGFjYyAoU2V0ICghKHMuY3VycmVudCkpKSBpblxuICAgICAgUmVhY3QuUy5mb2xkIGYgYWNjIHMuZXZlbnRcblxuICBsZXQgc2lnbmFsID8oZXEgPSAoPSkpIChzIDogJ2EgdCkgOiAnYSBkYXRhIFJlYWN0LlMudCA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBDb25zdCBjIC0+IFJlYWN0LlMuY29uc3QgY1xuICAgIHwgTXV0IHMgLT5cbiAgICAgIFJlYWN0LlMuZm9sZCB+ZXE6KEQuZXF1YWwgZXEpIChmdW4gbCBtc2cgLT5cbiAgICAgICAgICBtYXRjaCBtc2cgd2l0aFxuICAgICAgICAgIHwgU2V0IGwgLT4gbFxuICAgICAgICAgIHwgUGF0Y2ggcCAtPiBtZXJnZSBwIGwpICghKHMuY3VycmVudCkpIHMuZXZlbnRcblxuICBsZXQgZnJvbV9zaWduYWwgPyhlcSA9ICg9KSkgcyA9XG4gICAgbGV0IGYgZCcgZCA9IFBhdGNoIChELmRpZmYgfmVxIGQgZCcpIGluXG4gICAgZnJvbV9ldmVudCAoUmVhY3QuUy52YWx1ZSBzKSAoUmVhY3QuUy5kaWZmIGYgcylcblxuZW5kXG5cbm1vZHVsZSBEYXRhTGlzdCA9IHN0cnVjdFxuICB0eXBlICdhIGRhdGEgPSAnYSBsaXN0XG4gIHR5cGUgJ2EgcCA9XG4gICAgfCBJIG9mIGludCAqICdhXG4gICAgfCBSIG9mIGludFxuICAgIHwgVSBvZiBpbnQgKiAnYVxuICAgIHwgWCBvZiBpbnQgKiBpbnRcbiAgdHlwZSAnYSBwYXRjaCA9ICdhIHAgbGlzdFxuICBsZXQgZW1wdHkgPSBbXVxuICBsZXQgbWFwX2RhdGEgPSBMaXN0Lm1hcFxuICBsZXQgbWFwX3BhdGNoIGYgPSBmdW5jdGlvblxuICAgIHwgSSAoaSx4KSAtPiBJIChpLCBmIHgpXG4gICAgfCBSIGkgLT4gUiBpXG4gICAgfCBYIChpLGopIC0+IFggKGksailcbiAgICB8IFUgKGkseCkgLT4gVSAoaSxmIHgpXG4gIGxldCBtYXBfcGF0Y2ggZiA9IExpc3QubWFwIChtYXBfcGF0Y2ggZilcblxuICBsZXQgbWVyZ2VfcCBvcCBsID1cbiAgICBtYXRjaCBvcCB3aXRoXG4gICAgfCBJIChpJyx4KSAtPlxuICAgICAgbGV0IGkgPSBpZiBpJyA8IDAgdGhlbiBMaXN0Lmxlbmd0aCBsICsgMSArIGknIGVsc2UgaScgaW5cbiAgICAgIGxldCByZWMgYXV4IGFjYyBuIGwgPSBtYXRjaCBuLGwgd2l0aFxuICAgICAgICB8IDAsbCAtPiBMaXN0LnJldl9hcHBlbmQgYWNjICh4OjpsKVxuICAgICAgICB8IF8sW10gLT4gZmFpbHdpdGggXCJSZWFjdGl2ZURhdGEuUmxpc3QubWVyZ2VcIlxuICAgICAgICB8IG4seDo6eHMgLT4gYXV4ICh4OjphY2MpIChwcmVkIG4pIHhzXG4gICAgICBpbiBhdXggW10gaSBsXG4gICAgfCBSIGknIC0+XG4gICAgICBsZXQgaSA9IGlmIGknIDwgMCB0aGVuIExpc3QubGVuZ3RoIGwgKyBpJyBlbHNlIGknIGluXG4gICAgICBsZXQgcmVjIGF1eCBhY2MgbiBsID0gbWF0Y2ggbixsIHdpdGhcbiAgICAgICAgfCAwLF86OmwgLT4gTGlzdC5yZXZfYXBwZW5kIGFjYyBsXG4gICAgICAgIHwgXyxbXSAtPiBmYWlsd2l0aCBcIlJlYWN0aXZlRGF0YS5SbGlzdC5tZXJnZVwiXG4gICAgICAgIHwgbix4Ojp4cyAtPiBhdXggKHg6OmFjYykgKHByZWQgbikgeHNcbiAgICAgIGluIGF1eCBbXSBpIGxcbiAgICB8IFUgKGknLHgpIC0+XG4gICAgICBsZXQgaSA9IGlmIGknIDwgMCB0aGVuIExpc3QubGVuZ3RoIGwgKyBpJyBlbHNlIGknIGluXG4gICAgICBsZXQgYSA9IEFycmF5Lm9mX2xpc3QgbCBpblxuICAgICAgYS4oaSkgPC0geDtcbiAgICAgIEFycmF5LnRvX2xpc3QgYVxuICAgIHwgWCAoaScsb2Zmc2V0KSAtPlxuICAgICAgbGV0IGEgPSBBcnJheS5vZl9saXN0IGwgaW5cbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICAgICAgbGV0IGkgPSBpZiBpJyA8IDAgdGhlbiBsZW4gKyBpJyBlbHNlIGknIGluXG4gICAgICBsZXQgdiA9IGEuKGkpIGluXG4gICAgICBpZiBvZmZzZXQgPiAwXG4gICAgICB0aGVuIGJlZ2luXG4gICAgICAgIGlmIChpICsgb2Zmc2V0ID49IGxlbikgdGhlbiBmYWlsd2l0aCBcIlJlYWN0aXZlRGF0YS5SbGlzdC5tZXJnZVwiO1xuICAgICAgICBmb3IgaiA9IGkgdG8gaSArIG9mZnNldCAtIDEgZG9cbiAgICAgICAgICBhLihqKSA8LSBhLihqICsgMSlcbiAgICAgICAgZG9uZTtcbiAgICAgICAgYS4oaStvZmZzZXQpIDwtIHZcbiAgICAgIGVuZFxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBpZiAoaSArIG9mZnNldCA8IDApIHRoZW4gZmFpbHdpdGggXCJSZWFjdGl2ZURhdGEuUmxpc3QubWVyZ2VcIjtcbiAgICAgICAgZm9yIGogPSBpIGRvd250byBpICsgb2Zmc2V0ICsgMSBkb1xuICAgICAgICAgIGEuKGopIDwtIGEuKGogLSAxKVxuICAgICAgICBkb25lO1xuICAgICAgICBhLihpK29mZnNldCkgPC0gdlxuICAgICAgZW5kO1xuICAgICAgQXJyYXkudG9fbGlzdCBhXG5cbiAgKCogYWNjdW11bGF0ZXMgaW50byBhY2MgaSB1bm1vZGlmaWVkIGVsZW1lbnRzIGZyb20gbCAqKVxuICBsZXQgcmVjIGxpbmVhcl9tZXJnZV9md2QgfmFjYyBpIGwgPVxuICAgIGFzc2VydCAoaSA+PSAwKTtcbiAgICBpZiBpID4gMCB0aGVuXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgaCA6OiBsIC0+XG4gICAgICAgIGxldCBhY2MgPSBoIDo6IGFjYyBpblxuICAgICAgICBsaW5lYXJfbWVyZ2VfZndkIH5hY2MgKGkgLSAxKSBsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGludmFsaWRfYXJnIFwiaW52YWxpZCBpbmRleFwiXG4gICAgZWxzZVxuICAgICAgbCwgYWNjXG5cbiAgbGV0IHJlYyBsaW5lYXJfbWVyZ2UgfmFjYyBpMCBwIGwgPVxuICAgIGxldCBsLCBhY2MgPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IChJIChpLCBfKSB8IFIgaSB8IFUgKGksIF8pKSA6OiBfIHdoZW4gaSA+IGkwIC0+XG4gICAgICAgIGxpbmVhcl9tZXJnZV9md2QgfmFjYyAoaSAtIGkwKSBsXG4gICAgICB8IF8gLT5cbiAgICAgICAgbCwgYWNjXG4gICAgaW5cbiAgICBtYXRjaCBwLCBsIHdpdGhcbiAgICB8IEkgKGksIHgpIDo6IHAsIF8gLT5cbiAgICAgIGxpbmVhcl9tZXJnZSB+YWNjIGkgcCAoeCA6OiBsKVxuICAgIHwgUiBpIDo6IHAsIF8gOjogbCAtPlxuICAgICAgbGluZWFyX21lcmdlIH5hY2MgaSBwIGxcbiAgICB8IFIgXyA6OiBfLCBbXSAtPlxuICAgICAgaW52YWxpZF9hcmcgXCJtZXJnZTogaW52YWxpZCBpbmRleFwiXG4gICAgfCBVIChpLCB4KSA6OiBwLCBfIDo6IGwgLT5cbiAgICAgIGxpbmVhcl9tZXJnZSB+YWNjIGkgcCAoeCA6OiBsKVxuICAgIHwgVSAoXywgXykgOjogXywgW10gLT5cbiAgICAgIGludmFsaWRfYXJnIFwibWVyZ2U6IGludmFsaWQgaW5kZXhcIlxuICAgIHwgW10sIGwgLT5cbiAgICAgIExpc3QucmV2X2FwcGVuZCBhY2MgbFxuICAgIHwgWCAoXywgXykgOjogXywgXyAtPlxuICAgICAgZmFpbHdpdGggXCJsaW5lYXJfbWVyZ2U6IFggbm90IHN1cHBvcnRlZFwiXG5cbiAgbGV0IHJlYyBsaW5lYXJfbWVyZ2VhYmxlIH5uIHAgPVxuICAgIGFzc2VydCAobiA+PSAwKTtcbiAgICBtYXRjaCBwIHdpdGhcbiAgICB8IChJIChpLCBfKSB8IFIgaSB8IFUgKGksIF8pKSA6OiBwIHdoZW4gaSA+PSBuIC0+XG4gICAgICAoKiBuZWdhdGl2ZSBpJ3MgcnVsZWQgb3V0IChhbW9uZyBvdGhlcnMpICopXG4gICAgICBsaW5lYXJfbWVyZ2VhYmxlIH5uOmkgcFxuICAgIHwgXyA6OiBfIC0+XG4gICAgICBmYWxzZVxuICAgIHwgW10gLT5cbiAgICAgIHRydWVcblxuICBsZXQgbWVyZ2UgcCBsID1cbiAgICBpZiBsaW5lYXJfbWVyZ2VhYmxlIH5uOjAgcCB0aGVuXG4gICAgICBsaW5lYXJfbWVyZ2UgfmFjYzpbXSAwIHAgbFxuICAgIGVsc2VcbiAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbCB4IC0+IG1lcmdlX3AgeCBsKSBsIHBcblxuICBsZXQgcmVjIGVxdWFsIGYgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCB4MSA6OiBsMSwgeDIgOjogbDIgd2hlbiBmIHgxIHgyIC0+XG4gICAgICBlcXVhbCBmIGwxIGwyXG4gICAgfCBbXSwgW10gLT5cbiAgICAgIHRydWVcbiAgICB8IF8gOjogXyAsIF8gOjogX1xuICAgIHwgXyA6OiBfICwgW11cbiAgICB8IFtdICAgICAsIF8gOjogXyAtPlxuICAgICAgZmFsc2VcblxuICBsZXQgbWVtICh0eXBlIHUpIGwgPVxuICAgIGxldCBtb2R1bGUgSCA9XG4gICAgICBIYXNodGJsLk1ha2VcbiAgICAgICAgKHN0cnVjdCB0eXBlIHQgPSB1IGxldCBoYXNoID0gSGFzaHRibC5oYXNoIGxldCBlcXVhbCA9ICg9PSkgZW5kKSBpblxuICAgIGxldCBoID0gSC5jcmVhdGUgMTYgaW5cbiAgICBMaXN0Lml0ZXIgKGZ1biB4IC0+IEguYWRkIGggeCAoKSkgbDtcbiAgICBILm1lbSBoXG5cbiAgbGV0IGZvbGRfZGlmZiA/KGVxID0gKD0pKSB+YWNjIH5yZW1vdmUgfmFkZCBseCBseSA9XG4gICAgbGV0IG1lbXggPSBtZW0gbHhcbiAgICBhbmQgbWVteSA9IG1lbSBseSBpblxuICAgIGxldCByZWMgZiB+YWNjIH5sZWZ0IGx4IGx5IG4gPVxuICAgICAgbWF0Y2ggbHgsIGx5IHdpdGhcbiAgICAgICgqIHRyYWlsaW5nIGVsZW1lbnRzIHRvIGJlIHJlbW92ZWQgKilcbiAgICAgIHwgXyA6OiBseCwgW10gLT5cbiAgICAgICAgbGV0IGFjYyA9IHJlbW92ZSBhY2MgbiBpblxuICAgICAgICBmIH5hY2MgfmxlZnQgbHggW10gblxuICAgICAgKCogdHJhaWxpbmcgZWxlbWVudHMgdG8gYmUgYWRkZWQgKilcbiAgICAgIHwgW10sIHkgOjogbHkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGFkZCBhY2MgbiB5IGluXG4gICAgICAgIGYgfmFjYyB+bGVmdCBbXSBseSAobiArIDEpXG4gICAgICAoKiBkb25lISAqKVxuICAgICAgfCBbXSwgW10gLT5cbiAgICAgICAgYWNjXG4gICAgICAoKiBzYW1lICopXG4gICAgICB8IHggOjogbHgsIHkgOjogbHkgd2hlbiBlcSB4IHkgLT5cbiAgICAgICAgZiB+YWNjIH5sZWZ0IGx4IGx5IChuICsgMSlcbiAgICAgICgqIHggbmVlZHMgdG8gYmUgcmVtb3ZlZCBmb3Igc3VyZSAqKVxuICAgICAgfCB4IDo6IGx4LCBfIDo6IF8gd2hlbiBub3QgKG1lbXkgeCkgLT5cbiAgICAgICAgbGV0IGFjYyA9IHJlbW92ZSBhY2MgbiBpblxuICAgICAgICBmIH5hY2MgfmxlZnQgbHggbHkgblxuICAgICAgKCogeSBuZWVkcyB0byBiZSBhZGRlZCBmb3Igc3VyZSAqKVxuICAgICAgfCBfIDo6IF8sIHkgOjogbHkgd2hlbiBub3QgKG1lbXggeSkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGFkZCBhY2MgbiB5IGluXG4gICAgICAgIGYgfmFjYyB+bGVmdCBseCBseSAobiArIDEpXG4gICAgICAoKiBubyBtb3JlIGNlcnRhaW50eSwgfmxlZnQgZGVjaWRlcyB3aGF0IHRvIHJlY3VyIG9uICopXG4gICAgICB8IF8gOjogbHgsIF8gOjogXyB3aGVuIGxlZnQgLT5cbiAgICAgICAgbGV0IGFjYyA9IHJlbW92ZSBhY2MgbiBpblxuICAgICAgICBmIH5hY2MgfmxlZnQ6ZmFsc2UgbHggbHkgblxuICAgICAgfCBfIDo6IF8sIHkgOjogbHkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGFkZCBhY2MgbiB5IGluXG4gICAgICAgIGYgfmFjYyB+bGVmdDp0cnVlIGx4IGx5IChuICsgMSlcbiAgICBpblxuICAgIGYgfmFjYyB+bGVmdDp0cnVlIGx4IGx5IDBcblxuICBsZXQgcmVjIGxpc3RfcmV2ID8oYWNjID0gW10pID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IGFjYyA9IGggOjogYWNjIGluXG4gICAgICBsaXN0X3JldiB+YWNjIHRcbiAgICB8IFtdIC0+XG4gICAgICBhY2NcblxuICBsZXQgZGlmZiB+ZXEgeCB5ID1cbiAgICBsZXQgYWRkIGFjYyBpIHYgPSBJIChpLCB2KSA6OiBhY2NcbiAgICBhbmQgcmVtb3ZlIGFjYyBpID0gUiBpIDo6IGFjY1xuICAgIGFuZCBhY2MgPSBbXSBpblxuICAgIGxpc3RfcmV2IChmb2xkX2RpZmYgfmVxIH5hY2MgfmFkZCB+cmVtb3ZlIHggeSlcblxuZW5kXG5cbm1vZHVsZSBSTGlzdCA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKERhdGFMaXN0KVxuICBtb2R1bGUgRCA9IERhdGFMaXN0XG4gIHR5cGUgJ2EgcCA9ICdhIEQucCA9XG4gICAgfCBJIG9mIGludCAqICdhXG4gICAgfCBSIG9mIGludFxuICAgIHwgVSBvZiBpbnQgKiAnYVxuICAgIHwgWCBvZiBpbnQgKiBpbnRcblxuICBsZXQgY29ucyB4IHMgPSBwYXRjaCBzIFtELkkgKDAseCldXG4gIGxldCBzbm9jIHggcyA9IHBhdGNoIHMgW0QuSSAoLTEseCldXG4gIGxldCBpbnNlcnQgeCBpIHMgPSBwYXRjaCBzIFtELkkgKGkseCldXG4gIGxldCB1cGRhdGUgeCBpIHMgPSBwYXRjaCBzIFtELlUgKGkseCldXG4gIGxldCBtb3ZlIGkgaiBzID0gcGF0Y2ggcyBbRC5YIChpLGopXVxuICBsZXQgcmVtb3ZlIGkgcyA9IHBhdGNoIHMgW0QuUiBpXVxuXG4gIGxldCBpbmRleCA/KGVxID0gKD0pKSBsIHggPVxuICAgIGxldCByZWMgZiBuID0gZnVuY3Rpb25cbiAgICAgIHwgaGQgOjogXyB3aGVuIGVxIGhkIHggLT4gblxuICAgICAgfCBfIDo6IHRsIC0+IGYgKG4gKyAxKSB0bFxuICAgICAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICBpblxuICAgIGYgMCBsXG5cbiAgbGV0IHVwZGF0ZV9lcSA/ZXEgKGRhdGEsIGhhbmRsZSkgeCB5ID1cbiAgICBsZXQgaSA9IGluZGV4ID9lcSAodmFsdWUgZGF0YSkgeCBpblxuICAgIHVwZGF0ZSB5IGkgaGFuZGxlXG5cbiAgbGV0IHJlbW92ZV9sYXN0IChkYXRhLCBoYW5kbGUpID1cbiAgICByZW1vdmUgKExpc3QubGVuZ3RoICh2YWx1ZSBkYXRhKSAtIDEpIGhhbmRsZVxuXG4gIGxldCByZW1vdmVfZXEgP2VxIChkYXRhLCBoYW5kbGUpIHggPVxuICAgIGxldCBpID0gaW5kZXggP2VxICh2YWx1ZSBkYXRhKSB4IGluXG4gICAgcmVtb3ZlIGkgaGFuZGxlXG5cbiAgbGV0IHNpbmdsZXRvbiB4ID0gY29uc3QgW3hdXG5cbiAgbGV0IHNpbmdsZXRvbl9zIHMgPVxuICAgIGxldCBmaXJzdCA9IHJlZiB0cnVlIGluXG4gICAgbGV0IGUsc2VuZCA9IFJlYWN0LkUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlc3VsdCA9IGZyb21fZXZlbnQgW10gZSBpblxuICAgIGxldCBfID0gUmVhY3QuUy5tYXAgKGZ1biB4IC0+XG4gICAgICAgIGlmICFmaXJzdFxuICAgICAgICB0aGVuIGJlZ2luXG4gICAgICAgICAgZmlyc3Q6PWZhbHNlO1xuICAgICAgICAgIHNlbmQgKFBhdGNoIFtJKDAseCldKVxuICAgICAgICBlbmRcbiAgICAgICAgZWxzZSBzZW5kIChQYXRjaCBbVSgwLHgpXSkpIHMgaW5cbiAgICByZXN1bHRcblxuICBsZXQgY29uY2F0IDogJ2EgdCAtPiAnYSB0IC0+ICdhIHQgPSBmdW4geCB5IC0+XG4gICAgbGV0IHYxID0gdmFsdWUgeFxuICAgIGFuZCB2MiA9IHZhbHVlIHkgaW5cbiAgICBsZXQgc2l6ZTEgPSByZWYgMFxuICAgIGFuZCBzaXplMiA9IHJlZiAwIGluXG4gICAgbGV0IHNpemVfd2l0aF9wYXRjaCBzaXpleCA6ICdhIEQucCAtPiB1bml0ID0gZnVuY3Rpb25cbiAgICAgIHwgKEQuSSBfKSAtPiBpbmNyIHNpemV4XG4gICAgICB8IChELlIgXykgLT4gZGVjciBzaXpleFxuICAgICAgfCAoRC5YIF8gfCBELlUgXykgLT4gKCkgaW5cbiAgICBsZXQgc2l6ZV93aXRoX3NldCBzaXpleCBsID0gc2l6ZXg6PUxpc3QubGVuZ3RoIGwgaW5cblxuICAgIHNpemVfd2l0aF9zZXQgc2l6ZTEgdjE7XG4gICAgc2l6ZV93aXRoX3NldCBzaXplMiB2MjtcblxuICAgIGxldCB1cGRhdGVfcGF0Y2gxID0gTGlzdC5tYXAgKGZ1biBwIC0+XG4gICAgICAgIGxldCBtID0gbWF0Y2ggcCB3aXRoXG4gICAgICAgICAgfCBELkkgKHBvcyx4KSAtPlxuICAgICAgICAgICAgbGV0IGkgPSBpZiBwb3MgPCAwIHRoZW4gcG9zIC0gIXNpemUyIGVsc2UgcG9zIGluXG4gICAgICAgICAgICBELkkgKGksIHgpXG4gICAgICAgICAgfCBELlIgcG9zICAgICAtPiBELlIgIChpZiBwb3MgPCAwIHRoZW4gcG9zIC0gIXNpemUyIGVsc2UgcG9zKVxuICAgICAgICAgIHwgRC5VIChwb3MseCkgLT4gRC5VICgoaWYgcG9zIDwgMCB0aGVuIHBvcyAtICFzaXplMiBlbHNlIHBvcyksIHgpXG4gICAgICAgICAgfCBELlggKGksaikgLT4gICBELlggKChpZiBpIDwgMCB0aGVuIGkgLSAhc2l6ZTIgZWxzZSBpKSxqKVxuICAgICAgICBpblxuICAgICAgICBzaXplX3dpdGhfcGF0Y2ggc2l6ZTEgbTtcbiAgICAgICAgbSkgaW5cbiAgICBsZXQgdXBkYXRlX3BhdGNoMiA9IExpc3QubWFwIChmdW4gcCAtPlxuICAgICAgICBsZXQgbSA9IG1hdGNoIHAgd2l0aFxuICAgICAgICAgIHwgRC5JIChwb3MseCkgLT4gRC5JICgoaWYgcG9zIDwgMCB0aGVuIHBvcyBlbHNlICFzaXplMSArIHBvcyksIHgpXG4gICAgICAgICAgfCBELlIgcG9zICAgICAtPiBELlIgIChpZiBwb3MgPCAwIHRoZW4gcG9zIGVsc2UgIXNpemUxICsgcG9zKVxuICAgICAgICAgIHwgRC5VIChwb3MseCkgLT4gRC5VICgoaWYgcG9zIDwgMCB0aGVuIHBvcyBlbHNlICFzaXplMSArIHBvcyksIHgpXG4gICAgICAgICAgfCBELlggKGksaikgLT4gICBELlggKChpZiBpIDwgMCB0aGVuIGkgZWxzZSAhc2l6ZTEgKyBpKSxqKVxuICAgICAgICBpblxuICAgICAgICBzaXplX3dpdGhfcGF0Y2ggc2l6ZTIgbTtcbiAgICAgICAgbSkgaW5cbiAgICBsZXQgdHVwbGVfZXYgPVxuICAgICAgUmVhY3QuRS5tZXJnZSAoZnVuIGFjYyB4IC0+XG4gICAgICAgICAgbWF0Y2ggYWNjLHggd2l0aFxuICAgICAgICAgIHwgKE5vbmUscDIpLGBFMSB4IC0+IFNvbWUgeCxwMlxuICAgICAgICAgIHwgKHAxLE5vbmUpLGBFMiB4IC0+IHAxLCBTb21lIHhcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgICAoTm9uZSxOb25lKVxuICAgICAgICBbUmVhY3QuRS5tYXAgKGZ1biBlIC0+IGBFMSBlKSAoZXZlbnQgeCk7XG4gICAgICAgICBSZWFjdC5FLm1hcCAoZnVuIGUgLT4gYEUyIGUpIChldmVudCB5KV0gaW5cbiAgICBsZXQgbWVyZ2VkX2V2ID0gUmVhY3QuRS5tYXAgKGZ1biBwIC0+XG4gICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICB8IFNvbWUgKFNldCBwMSksIFNvbWUgKFNldCBwMikgLT5cbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUxIHAxO1xuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTIgcDI7XG4gICAgICAgICAgU2V0IChwMSBAIHAyKVxuICAgICAgICB8IFNvbWUgKFNldCBwMSksIE5vbmUgLT5cbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUxIHAxO1xuICAgICAgICAgIFNldCAocDEgQCB2YWx1ZSB5KVxuICAgICAgICB8IE5vbmUsIFNvbWUgKFNldCBwMikgLT5cbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUyIHAyO1xuICAgICAgICAgIFNldCAodmFsdWUgeCBAIHAyIClcbiAgICAgICAgfCBTb21lIChQYXRjaCBwMSksIFNvbWUgKFBhdGNoIHAyKSAtPlxuICAgICAgICAgIGxldCBwMSA9IHVwZGF0ZV9wYXRjaDEgcDEgaW5cbiAgICAgICAgICBsZXQgcDIgPSB1cGRhdGVfcGF0Y2gyIHAyIGluXG4gICAgICAgICAgUGF0Y2ggKHAxIEAgcDIpXG4gICAgICAgIHwgU29tZSAoUGF0Y2ggcDEpLCBOb25lIC0+IFBhdGNoICh1cGRhdGVfcGF0Y2gxIHAxKVxuICAgICAgICB8IE5vbmUsIFNvbWUgKFBhdGNoIHAyKSAtPiBQYXRjaCAodXBkYXRlX3BhdGNoMiBwMilcbiAgICAgICAgfCBTb21lIChQYXRjaCBfKSwgU29tZSAoU2V0IHMyKSAtPlxuICAgICAgICAgIGxldCBzMSA9IHZhbHVlIHggaW5cbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUxIHMxO1xuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTIgczI7XG4gICAgICAgICAgU2V0KHMxIEAgczIpXG4gICAgICAgIHwgU29tZSAoU2V0IHMxKSwgU29tZSAoUGF0Y2ggXykgLT5cbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUxIHMxO1xuICAgICAgICAgIGxldCBzMiA9IHZhbHVlIHkgaW5cbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUyIHMyO1xuICAgICAgICAgIFNldChzMSBAIHMyKVxuICAgICAgICB8IE5vbmUsTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICkgdHVwbGVfZXYgaW5cbiAgICBmcm9tX2V2ZW50ICh2MSBAIHYyKSBtZXJnZWRfZXZcblxuICBsZXQgaW52ZXJzZSA6ICdhIC4gJ2EgcCAtPiAnYSBwID0gZnVuY3Rpb25cbiAgICB8IEkgKGkseCkgLT4gSSgtaS0xLCB4KVxuICAgIHwgVSAoaSx4KSAtPiBVKC1pLTEsIHgpXG4gICAgfCBSIGkgLT4gUiAoLWktMSlcbiAgICB8IFggKGksaikgLT4gWCAoLWktMSwtailcblxuICBsZXQgcmV2IHQgPVxuICAgIGxldCBlID0gUmVhY3QuRS5tYXAgKGZ1bmN0aW9uXG4gICAgICAgIHwgU2V0IGwgLT4gU2V0IChMaXN0LnJldiBsKVxuICAgICAgICB8IFBhdGNoIHAgLT4gUGF0Y2ggKExpc3QubWFwIGludmVyc2UgcCkpICAoZXZlbnQgdClcbiAgICBpblxuICAgIGZyb21fZXZlbnQgKExpc3QucmV2ICh2YWx1ZSB0KSkgZVxuXG4gIGxldCBmaWx0ZXIgcHJlZCBsID1cbiAgICBsZXQgbW9kdWxlIEludE1hcCA9IE1hcC5NYWtlKEludCkgaW5cblxuICAgIGxldCBpbmRleCA9IHJlZiBJbnRNYXAuZW1wdHkgaW5cbiAgICBsZXQgc2l6ZSA9IHJlZiAwIGluXG5cbiAgICBsZXQgZmlsdGVyX2xpc3QgbCA9XG4gICAgICBsZXQgcmVjIGF1eCAobDogJ2EgbGlzdCkgcmVzIHRoZWlyX2kgbXlfaSA9IG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IHJlc1xuICAgICAgICB8IHg6OnhzIC0+XG4gICAgICAgICAgIGlmIHByZWQgeFxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgdGhlaXJfaSAobXlfaSArIDEpICFpbmRleDtcbiAgICAgICAgICAgICAgIGF1eCB4cyAoeDo6cmVzKSAodGhlaXJfaSArIDEpIChteV9pICsgMSlcbiAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICBhdXggeHMgcmVzICh0aGVpcl9pICsgMSkgbXlfaVxuICAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNpemUgOj0gTGlzdC5sZW5ndGggbDtcbiAgICAgIGluZGV4IDo9IEludE1hcC5lbXB0eTtcbiAgICAgIExpc3QucmV2IChhdXggbCBbXSAwICgtMSkpXG4gICAgaW5cblxuICAgIGxldCBub3JtYWxpc2UgaSA9IGlmIGkgPCAwIHRoZW4gIXNpemUgKyAxICsgaSBlbHNlIGkgaW5cblxuICAgIGxldCB1cGRhdGVfaW5kZXhfaW5zZXJ0IGluc2VydF9wb3NfZnVsbF9saXN0IHZpc2libGUgPVxuICAgICAgbGV0IGluc2VydF9wb3NfZnVsbF9saXN0ID0gbm9ybWFsaXNlIGluc2VydF9wb3NfZnVsbF9saXN0IGluXG4gICAgICBsZXQgbGVmdF9hbG9uZSwgZGlzcGxhY2VkLCB1cGRhdGFibGVzID0gSW50TWFwLnNwbGl0IGluc2VydF9wb3NfZnVsbF9saXN0ICFpbmRleCBpblxuICAgICAgbGV0IHVwZGF0YWJsZXMgPSBtYXRjaCBkaXNwbGFjZWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdXBkYXRhYmxlc1xuICAgICAgICB8IFNvbWUgZGlzcGxhY2VkX2luX2ZpbHRlcmVkIC0+XG4gICAgICAgICAgIEludE1hcC5hZGQgaW5zZXJ0X3Bvc19mdWxsX2xpc3QgZGlzcGxhY2VkX2luX2ZpbHRlcmVkIHVwZGF0YWJsZXNcbiAgICAgIGluXG4gICAgICBsZXQgdXBkYXRlX2ogal9mdWxsX2xpc3Qgal9maWx0ZXJlZF9saXN0ID1cbiAgICAgICAgbGV0IG5ld19qX2ZpbHRlcmVkID0gaWYgdmlzaWJsZSB0aGVuIGpfZmlsdGVyZWRfbGlzdCArIDEgZWxzZSBqX2ZpbHRlcmVkX2xpc3QgaW5cbiAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCAoal9mdWxsX2xpc3QgKyAxKSBuZXdfal9maWx0ZXJlZCAhaW5kZXhcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBJbnRNYXAuaXRlciB1cGRhdGVfaiB1cGRhdGFibGVzIGluXG4gICAgICBsZXQgaW5zZXJ0X3Bvc19maWx0ZXJlZCA9IGlmIEludE1hcC5pc19lbXB0eSBsZWZ0X2Fsb25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChzbmQgKEludE1hcC5tYXhfYmluZGluZyBsZWZ0X2Fsb25lKSkgKyAxXG4gICAgICBpblxuICAgICAgaWYgdmlzaWJsZSB0aGVuIGluZGV4IDo9IEludE1hcC5hZGQgaW5zZXJ0X3Bvc19mdWxsX2xpc3QgaW5zZXJ0X3Bvc19maWx0ZXJlZCAhaW5kZXg7XG4gICAgICBpbmNyIHNpemU7XG4gICAgICBpbnNlcnRfcG9zX2ZpbHRlcmVkXG4gICAgaW5cblxuICAgIGxldCB1cGRhdGVfaW5kZXhfcmVtb3ZlIHJlbW92ZV9wb3NfZnVsbF9saXN0ID1cbiAgICAgIGxldCB3YXNfdmlzaWJsZSA9IEludE1hcC5tZW0gcmVtb3ZlX3Bvc19mdWxsX2xpc3QgIWluZGV4IGluXG4gICAgICBsZXQgXyxfLHVwZGF0YWJsZXMgPSBJbnRNYXAuc3BsaXQgcmVtb3ZlX3Bvc19mdWxsX2xpc3QgIWluZGV4IGluXG4gICAgICBsZXQgdXBkYXRlX2ogal9mdWxsX2xpc3Qgal9maWx0ZXJlZF9saXN0ID1cbiAgICAgICAgbGV0IG5ld19qID0gaWYgd2FzX3Zpc2libGUgdGhlbiBqX2ZpbHRlcmVkX2xpc3QgZWxzZSBqX2ZpbHRlcmVkX2xpc3QgLSAxIGluXG4gICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgKGpfZnVsbF9saXN0IC0gMSkgbmV3X2ogIWluZGV4XG4gICAgICBpblxuICAgICAgaWYgbm90IChJbnRNYXAuaXNfZW1wdHkgIWluZGV4KVxuICAgICAgdGhlblxuICAgICAgICBsZXQgbGFzdF9pLCBfID0gSW50TWFwLm1heF9iaW5kaW5nICFpbmRleCBpblxuICAgICAgICBpbmRleCA6PSBJbnRNYXAucmVtb3ZlIGxhc3RfaSAhaW5kZXhcbiAgICAgIGVsc2UgKCk7XG4gICAgICBkZWNyIHNpemU7XG4gICAgICBJbnRNYXAuaXRlciB1cGRhdGVfaiB1cGRhdGFibGVzXG4gICAgaW5cblxuICAgIGxldCB1cGRhdGVfaW5kZXhfdXBkYXRlX2RlbGV0ZSB1cGRhdGVfcG9zX2Z1bGxfbGlzdCA9XG4gICAgICBsZXQgXywgXywgdXBkYXRhYmxlcyA9IEludE1hcC5zcGxpdCB1cGRhdGVfcG9zX2Z1bGxfbGlzdCAhaW5kZXggaW5cbiAgICAgIGxldCB1cGRhdGVfaiBqX2Z1bGxfbGlzdCBqX2ZpbHRlcmVkX2xpc3QgPVxuICAgICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIGpfZnVsbF9saXN0IChqX2ZpbHRlcmVkX2xpc3QgLSAxKSAhaW5kZXhcbiAgICAgIGluXG4gICAgICBpbmRleCA6PSBJbnRNYXAucmVtb3ZlIHVwZGF0ZV9wb3NfZnVsbF9saXN0ICFpbmRleDtcbiAgICAgIEludE1hcC5pdGVyIHVwZGF0ZV9qIHVwZGF0YWJsZXNcbiAgICBpblxuXG4gICAgbGV0IHVwZGF0ZV9pbmRleF91cGRhdGVfaW5zZXJ0IHVwZGF0ZV9wb3NfZnVsbF9saXN0ID1cbiAgICAgIGxldCBsZWZ0X2Fsb25lLCBub25lLCB1cGRhdGFibGVzID0gSW50TWFwLnNwbGl0IHVwZGF0ZV9wb3NfZnVsbF9saXN0ICFpbmRleCBpblxuICAgICAgYXNzZXJ0IChub25lID0gTm9uZSk7XG4gICAgICBsZXQgdXBkYXRlX2ogal9mdWxsX2xpc3Qgal9maWx0ZXJlZF9saXN0ID1cbiAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCBqX2Z1bGxfbGlzdCAoal9maWx0ZXJlZF9saXN0ICsgMSkgIWluZGV4XG4gICAgICBpblxuICAgICAgbGV0IG5ld19wb3NfZmlsdGVyZWRfbGlzdCA9XG4gICAgICAgIGxldCBwcmV2aW91c19wb3NfZmlsdGVyZWQgPSB0cnkgKHNuZCAoSW50TWFwLm1heF9iaW5kaW5nIGxlZnRfYWxvbmUpKSB3aXRoIE5vdF9mb3VuZCAtPiAoLTEpIGluXG4gICAgICAgIHByZXZpb3VzX3Bvc19maWx0ZXJlZCArIDFcbiAgICAgIGluXG4gICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIHVwZGF0ZV9wb3NfZnVsbF9saXN0IG5ld19wb3NfZmlsdGVyZWRfbGlzdCAhaW5kZXg7XG4gICAgICBJbnRNYXAuaXRlciB1cGRhdGVfaiB1cGRhdGFibGVzO1xuICAgICAgbmV3X3Bvc19maWx0ZXJlZF9saXN0XG4gICAgaW5cblxuICAgIGxldCB1cGRhdGVfaW5kZXhfbW92ZSBmcm9tX2Z1bGxfbGlzdCB0b19mdWxsX2xpc3QgdG9fZmlsdGVyZWQgPVxuICAgICAgbGV0IHdhc192aXNpYmxlID0gbWF0Y2ggdG9fZmlsdGVyZWQgd2l0aCB8IFNvbWUgXyAtPiB0cnVlIHwgTm9uZSAtPiBmYWxzZSBpblxuICAgICAgbGV0IGZvcndhcmQgPSBmcm9tX2Z1bGxfbGlzdCA8IHRvX2Z1bGxfbGlzdCBpblxuICAgICAgaWYgZm9yd2FyZCB0aGVuXG4gICAgICAgIGZvciBpX2Z1bGwgPSBmcm9tX2Z1bGxfbGlzdCArIDEgdG8gdG9fZnVsbF9saXN0IGRvXG4gICAgICAgICAgbGV0IGRlbHRhID0gaWYgd2FzX3Zpc2libGUgdGhlbiAoLTEpIGVsc2UgMCBpblxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGlfZmlsdGVyZWQgPSBJbnRNYXAuZmluZCBpX2Z1bGwgIWluZGV4IGluXG4gICAgICAgICAgICBsZXQgbmV3X3ZhbCA9IGlfZmlsdGVyZWQgKyBkZWx0YSBpblxuICAgICAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCAoaV9mdWxsIC0gMSkgbmV3X3ZhbCAhaW5kZXhcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb3RfZm91bmQgLT4gKClcbiAgICAgICAgZG9uZVxuICAgICAgZWxzZVxuICAgICAgICBmb3IgaV9mdWxsID0gZnJvbV9mdWxsX2xpc3QgLSAxIGRvd250byB0b19mdWxsX2xpc3QgZG9cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBkZWx0YSA9IGlmIHdhc192aXNpYmxlIHRoZW4gMSBlbHNlIDAgaW5cbiAgICAgICAgICAgIGxldCBpX2ZpbHRlcmVkID0gSW50TWFwLmZpbmQgaV9mdWxsICFpbmRleCBpblxuICAgICAgICAgICAgbGV0IG5ld192YWwgPSBpX2ZpbHRlcmVkICsgZGVsdGEgaW5cbiAgICAgICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgKGlfZnVsbCArIDEpIG5ld192YWwgIWluZGV4XG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm90X2ZvdW5kIC0+ICgpXG4gICAgICAgIGRvbmU7XG4gICAgICBtYXRjaCB0b19maWx0ZXJlZCB3aXRoXG4gICAgICB8IFNvbWUgdG9fZmlsdGVyZWQgLT5cbiAgICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgdG9fZnVsbF9saXN0IHRvX2ZpbHRlcmVkICFpbmRleFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICBpbmRleCA6PSBJbnRNYXAucmVtb3ZlIHRvX2Z1bGxfbGlzdCAhaW5kZXhcbiAgICBpblxuXG4gICAgbGV0IGNvbnZlcnRfcCA9IGZ1bmN0aW9uXG4gICAgICB8IEkgKGksIHgpIC0+XG4gICAgICAgICBpZiBwcmVkIHhcbiAgICAgICAgIHRoZW5cbiAgICAgICAgICAgbGV0IG15X2kgPSB1cGRhdGVfaW5kZXhfaW5zZXJ0IGkgdHJ1ZSBpblxuICAgICAgICAgICBbSSAobXlfaSwgeCldXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgaWdub3JlICh1cGRhdGVfaW5kZXhfaW5zZXJ0IGkgZmFsc2UpO1xuICAgICAgICAgICAgIFtdXG4gICAgICAgICAgIGVuZFxuICAgICAgfCBSIGkgLT5cbiAgICAgICAgIGxldCBpID0gbm9ybWFsaXNlIGkgaW5cbiAgICAgICAgIGxldCByZXQgPSB0cnkgbGV0IGogPSBJbnRNYXAuZmluZCBpICFpbmRleCBpbiBbUiBqXSB3aXRoIHwgTm90X2ZvdW5kIC0+IFtdIGluXG4gICAgICAgICBsZXQgKCkgPSB1cGRhdGVfaW5kZXhfcmVtb3ZlIGkgaW5cbiAgICAgICAgIHJldFxuICAgICAgfCBVIChpLCB4KSAtPlxuICAgICAgICAgbGV0IGkgPSBub3JtYWxpc2UgaSBpblxuICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgbGV0IG9sZF9qID0gSW50TWFwLmZpbmQgaSAhaW5kZXggaW5cbiAgICAgICAgICAgICBpZiBwcmVkIHhcbiAgICAgICAgICAgICB0aGVuIFtVIChvbGRfaiwgeCldXG4gICAgICAgICAgICAgZWxzZSAodXBkYXRlX2luZGV4X3VwZGF0ZV9kZWxldGUgaTsgW1Igb2xkX2pdKVxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgIHwgTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAgIGlmIHByZWQgeFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgbGV0IG5ld19qID0gdXBkYXRlX2luZGV4X3VwZGF0ZV9pbnNlcnQgaSBpblxuICAgICAgICAgICAgICAgIFtJIChuZXdfaiwgeCldXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgZW5kXG4gICAgICB8IFggKG9yaWdpbl9mdWxsLCBvZmZzZXRfZnVsbCkgLT5cbiAgICAgICAgIGxldCBvcmlnaW5fZnVsbCA9IG5vcm1hbGlzZSBvcmlnaW5fZnVsbCBpblxuICAgICAgICAgbGV0IGRlc3RfZnVsbCA9IG9yaWdpbl9mdWxsICsgb2Zmc2V0X2Z1bGwgaW5cbiAgICAgICAgIHRyeVxuICAgICAgICAgICBsZXQgb3JpZ2luX2ZpbHRlcmVkID0gSW50TWFwLmZpbmQgb3JpZ2luX2Z1bGwgIWluZGV4IGluXG4gICAgICAgICAgIGxldCBkZXN0X2ZpbHRlcmVkID1cbiAgICAgICAgICAgICB0cnkgSW50TWFwLmZpbmQgZGVzdF9mdWxsICFpbmRleFxuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgICAgIGxldCBzbWFsbF9vbmVzLCBfLCBfID0gSW50TWFwLnNwbGl0IG9yaWdpbl9mdWxsICFpbmRleCBpblxuICAgICAgICAgICAgICAgIGlmIEludE1hcC5pc19lbXB0eSBzbWFsbF9vbmVzXG4gICAgICAgICAgICAgICAgdGhlbiAwXG4gICAgICAgICAgICAgICAgZWxzZSBzbmQgKEludE1hcC5tYXhfYmluZGluZyBzbWFsbF9vbmVzKSArIDFcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgdXBkYXRlX2luZGV4X21vdmUgb3JpZ2luX2Z1bGwgZGVzdF9mdWxsIChTb21lIGRlc3RfZmlsdGVyZWQpO1xuICAgICAgICAgICBpZiBkZXN0X2ZpbHRlcmVkICE9IG9yaWdpbl9maWx0ZXJlZFxuICAgICAgICAgICB0aGVuIFtYIChvcmlnaW5fZmlsdGVyZWQsIGRlc3RfZmlsdGVyZWQgLSBvcmlnaW5fZmlsdGVyZWQpXVxuICAgICAgICAgICBlbHNlIFtdXG4gICAgICAgICB3aXRoXG4gICAgICAgICB8IE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgKCogbW92aW5nIGFuIGVsZW1lbnQgdGhhdCB3YXMgZmlsdGVyZWQgb3V0ICopXG4gICAgICAgICAgICB1cGRhdGVfaW5kZXhfbW92ZSBvcmlnaW5fZnVsbCBkZXN0X2Z1bGwgTm9uZTtcbiAgICAgICAgICAgIFtdXG4gICAgaW5cblxuICAgIGxldCBmaWx0ZXJfZSA9IGZ1bmN0aW9uXG4gICAgICB8IFNldCBsIC0+IFNldCAoZmlsdGVyX2xpc3QgbClcbiAgICAgIHwgUGF0Y2ggcCAtPlxuICAgICAgICAgUGF0Y2ggKExpc3QuY29uY2F0IChMaXN0Lm1hcCBjb252ZXJ0X3AgcCkpXG4gICAgaW5cbiAgICBsZXQgZSA9IFJlYWN0LkUubWFwIGZpbHRlcl9lIChldmVudCBsKSBpblxuICAgIGZyb21fZXZlbnQgKGZpbHRlcl9saXN0ICh2YWx1ZSBsKSkgZVxuXG4gIG1vZHVsZSBJbnRTZXQgPSBTZXQuTWFrZSAoSW50KVxuXG4gIGxldCBmb3JfYWxsIGZuIGRhdGEgPVxuICAgIGxldCBtYXliZV91cGRhdGUgYWNjIGkgdiA9IGlmIGZuIHYgdGhlbiBhY2MgZWxzZSBJbnRTZXQuYWRkIGkgYWNjIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbGV0IHJlYyBmb2xkIGkgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgfCB2IDo6IHRsIC0+IGZvbGQgKGkgKyAxKSAobWF5YmVfdXBkYXRlIGFjYyBpIHYpIHRsXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICBpblxuICAgICAgZm9sZCAwIEludFNldC5lbXB0eVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9pZHhfYWZ0ZXIgaSBmIGFjYyA9XG4gICAgICBJbnRTZXQubWFwIChmdW4gaScgLT4gaWYgaScgPj0gaSB0aGVuIGYgaScgMSBlbHNlIGknKSBhY2NcbiAgICBpblxuICAgIGxldCBmID0gZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXQgeCAtPiBpbml0IHhcbiAgICAgIHwgUGF0Y2ggdXBkYXRlcyAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBYIChpLCBpJykgLT5cbiAgICAgICAgICAgICAgIGlmIEludFNldC5tZW0gaSBhY2MgPSBJbnRTZXQubWVtIGknIGFjY1xuICAgICAgICAgICAgICAgdGhlbiBhY2NcbiAgICAgICAgICAgICAgIGVsc2UgaWYgSW50U2V0Lm1lbSBpIGFjY1xuICAgICAgICAgICAgICAgdGhlbiBJbnRTZXQuYWRkIGknIChJbnRTZXQucmVtb3ZlIGkgYWNjKVxuICAgICAgICAgICAgICAgZWxzZSBJbnRTZXQuYWRkIGkgKEludFNldC5yZW1vdmUgaScgYWNjKVxuICAgICAgICAgICAgIHwgUiBpIC0+XG4gICAgICAgICAgICAgICB1cGRhdGVfaWR4X2FmdGVyIGkgKC0pIChJbnRTZXQucmVtb3ZlIGkgYWNjKVxuICAgICAgICAgICAgIHwgSSAoaSwgdikgLT5cbiAgICAgICAgICAgICAgIGxldCBhY2MgPSB1cGRhdGVfaWR4X2FmdGVyIGkgKCspIGFjYyBpblxuICAgICAgICAgICAgICAgbWF5YmVfdXBkYXRlIGFjYyBpIHZcbiAgICAgICAgICAgICB8IFUgKGksIHYpIC0+XG4gICAgICAgICAgICAgICBtYXliZV91cGRhdGUgKEludFNldC5yZW1vdmUgaSBhY2MpIGkgdilcbiAgICAgICAgICBhY2NcbiAgICAgICAgICB1cGRhdGVzXG4gICAgaW5cbiAgICBSZWFjdC5TLmZvbGQgZiAoaW5pdCAodmFsdWUgZGF0YSkpIChldmVudCBkYXRhKVxuICAgIHw+IFJlYWN0LlMubWFwIEludFNldC5pc19lbXB0eVxuXG5lbmRcblxubW9kdWxlIFJNYXAoTSA6IE1hcC5TKSA9IHN0cnVjdFxuXG4gIG1vZHVsZSBEYXRhID0gc3RydWN0XG5cbiAgICB0eXBlICdhIGRhdGEgPSAnYSBNLnRcblxuICAgIHR5cGUgJ2EgcCA9IFtgQWRkIG9mIChNLmtleSAqICdhKSB8IGBEZWwgb2YgTS5rZXldXG5cbiAgICB0eXBlICdhIHBhdGNoID0gJ2EgcCBsaXN0XG5cbiAgICBsZXQgbWVyZ2VfcCBwIHMgPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IGBBZGQgKGssYSkgLT4gTS5hZGQgayBhIHNcbiAgICAgIHwgYERlbCBrIC0+IE0ucmVtb3ZlIGsgc1xuXG4gICAgbGV0IG1lcmdlIHAgYWNjID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgcCAtPiBtZXJnZV9wIHAgYWNjKSBhY2MgcFxuXG4gICAgbGV0IG1hcF9wIGYgPSBmdW5jdGlvblxuICAgICAgfCBgQWRkIChrLGEpIC0+IGBBZGQgKGssZiBhKVxuICAgICAgfCBgRGVsIGsgLT4gYERlbCBrXG5cbiAgICBsZXQgbWFwX3BhdGNoIGYgPSBMaXN0Lm1hcCAobWFwX3AgZilcblxuICAgIGxldCBtYXBfZGF0YSBmIGQgPSBNLm1hcCBmIGRcblxuICAgIGxldCBlbXB0eSA9IE0uZW1wdHlcblxuICAgIGxldCBlcXVhbCBmID0gTS5lcXVhbCBmXG5cbiAgICBsZXQgZGlmZiB+ZXEgeCB5ID1cbiAgICAgIGxldCBtID1cbiAgICAgICAgbGV0IGcgX2tleSB2IHcgPVxuICAgICAgICAgIG1hdGNoIHYsIHcgd2l0aFxuICAgICAgICAgIHwgU29tZSB2LCBTb21lIHcgd2hlbiBlcSB2IHcgLT5cbiAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICB8IFNvbWUgXywgU29tZSB3IC0+XG4gICAgICAgICAgICBTb21lIChgVSB3KVxuICAgICAgICAgIHwgU29tZSBfLCBOb25lIC0+XG4gICAgICAgICAgICBTb21lIGBEXG4gICAgICAgICAgfCBOb25lLCBTb21lIHYgLT5cbiAgICAgICAgICAgIFNvbWUgKGBBIHYpXG4gICAgICAgICAgfCBOb25lLCBOb25lIC0+XG4gICAgICAgICAgICBOb25lXG4gICAgICAgIGluXG4gICAgICAgIE0ubWVyZ2UgZyB4IHlcbiAgICAgIGFuZCBnIGtleSB4IGFjYyA9XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IGBVIHYgLT5cbiAgICAgICAgICBgRGVsIGtleSA6OiBgQWRkIChrZXksIHYpIDo6IGFjY1xuICAgICAgICB8IGBEIC0+XG4gICAgICAgICAgYERlbCBrZXkgOjogYWNjXG4gICAgICAgIHwgYEEgdiAtPlxuICAgICAgICAgIGBBZGQgKGtleSwgdikgOjogYWNjXG4gICAgICBhbmQgYWNjID0gW10gaW5cbiAgICAgIExpc3QucmV2IChNLmZvbGQgZyBtIGFjYylcblxuICBlbmRcblxuICBpbmNsdWRlIE1ha2UoRGF0YSlcblxuICBsZXQgZmlsdGVyIHByZWQgbSA9XG5cbiAgICBsZXQgY29udmVydF9wID0gZnVuY3Rpb25cbiAgICAgIHwgYEFkZCAoayx2KSAtPlxuICAgICAgICAgaWYgcHJlZCBrIHZcbiAgICAgICAgIHRoZW4gW2BBZGQgKGssdildXG4gICAgICAgICBlbHNlIFtdXG4gICAgICB8IGBEZWwgayAtPiBbYERlbCBrXVxuICAgIGluXG5cbiAgICBsZXQgZmlsdGVyX2UgPSBmdW5jdGlvblxuICAgICAgfCBTZXQgbSAtPiBTZXQgKE0uZmlsdGVyIHByZWQgbSlcbiAgICAgIHwgUGF0Y2ggcCAtPiBQYXRjaCAoTGlzdC5jb25jYXQgKExpc3QubWFwIGNvbnZlcnRfcCBwKSlcbiAgICBpblxuXG4gICAgbGV0IGUgPSBSZWFjdC5FLm1hcCBmaWx0ZXJfZSAoZXZlbnQgbSkgaW5cbiAgICBmcm9tX2V2ZW50IChNLmZpbHRlciBwcmVkICh2YWx1ZSBtKSkgZVxuZW5kXG4iLCIoKiBnZW5lcmF0ZWQgYnkgZHVuZSAqKVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF90eXhtbC5JbXBvcnQgKilcbm1vZHVsZSBJbXBvcnQgPSBKc19vZl9vY2FtbF90eXhtbF9fSW1wb3J0XG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX3R5eG1sLlR5eG1sX2Nhc3QgKilcbm1vZHVsZSBUeXhtbF9jYXN0ID0gSnNfb2Zfb2NhbWxfdHl4bWxfX1R5eG1sX2Nhc3RcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfdHl4bWwuVHl4bWxfY2FzdF9zaWdzICopXG5tb2R1bGUgVHl4bWxfY2FzdF9zaWdzID0gSnNfb2Zfb2NhbWxfdHl4bWxfX1R5eG1sX2Nhc3Rfc2lnc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF90eXhtbC5UeXhtbF9qcyAqKVxubW9kdWxlIFR5eG1sX2pzID0gSnNfb2Zfb2NhbWxfdHl4bWxfX1R5eG1sX2pzXG5cbm1vZHVsZSBKc19vZl9vY2FtbF90eXhtbF9fID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcInRoaXMgbW9kdWxlIGlzIHNoYWRvd2VkXCJdXG4iLCIoKiBKc19vZl9vY2FtbFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuXG4gIGV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbiAgZXh0ZXJuYWwgZXF1YWwgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZW5kXG5cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGludCkgeSA9IHggPCB5XG5cbiAgbGV0ICggPD0gKSAoeCA6IGludCkgeSA9IHggPD0geVxuXG4gIGxldCAoIDw+ICkgKHggOiBpbnQpIHkgPSB4IDw+IHlcblxuICBsZXQgKCA9ICkgKHggOiBpbnQpIHkgPSB4ID0geVxuXG4gIGxldCAoID4gKSAoeCA6IGludCkgeSA9IHggPiB5XG5cbiAgbGV0ICggPj0gKSAoeCA6IGludCkgeSA9IHggPj0geVxuXG4gIGxldCBjb21wYXJlICh4IDogaW50KSB5ID0gY29tcGFyZSB4IHlcblxuICBsZXQgZXF1YWwgKHggOiBpbnQpIHkgPSB4ID0geVxuXG4gIGxldCBtYXggKHggOiBpbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4gIGxldCBtaW4gKHggOiBpbnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgZXF1YWwgKHggOiBzdHJpbmcpICh5IDogc3RyaW5nKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxubW9kdWxlIENoYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDaGFyXG5cbiAgbGV0IGVxdWFsICh4IDogY2hhcikgKHkgOiBjaGFyKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIE1ha2VUbyAoQyA6IHNpZ1xuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBlbHQgOiAnYSBlbHQgLT4gRG9tLm5vZGUgSnMudFxuZW5kKSA6IFR5eG1sX2Nhc3Rfc2lncy5UTyB3aXRoIHR5cGUgJ2EgZWx0ID0gJ2EgQy5lbHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBlbHQgPSAnYSBDLmVsdFxuXG4gIGxldCByZWJ1aWxkX25vZGUgXyB4ID0gSnMuVW5zYWZlLmNvZXJjZSAoQy5lbHQgeClcblxuICBsZXQgb2ZfZWxlbWVudCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9lbGVtZW50XCIgZWx0XG5cbiAgbGV0IG9mX25vZGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfbm9kZVwiIGVsdFxuXG4gIGxldCBvZl9wY2RhdGEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcGNkYXRhXCIgZWx0XG5cbiAgbGV0IG9mX2h0bWwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaHRtbFwiIGVsdFxuXG4gIGxldCBvZl9oZWFkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hlYWRcIiBlbHRcblxuICBsZXQgb2ZfbGluayBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9saW5rXCIgZWx0XG5cbiAgbGV0IG9mX3RpdGxlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RpdGxlXCIgZWx0XG5cbiAgbGV0IG9mX21ldGEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWV0YVwiIGVsdFxuXG4gIGxldCBvZl9iYXNlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Jhc2VcIiBlbHRcblxuICBsZXQgb2Zfc3R5bGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3R5bGVcIiBlbHRcblxuICBsZXQgb2ZfYm9keSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ib2R5XCIgZWx0XG5cbiAgbGV0IG9mX2Zvcm0gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZm9ybVwiIGVsdFxuXG4gIGxldCBvZl9vcHRncm91cCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vcHRncm91cFwiIGVsdFxuXG4gIGxldCBvZl9vcHRpb24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb3B0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX3NlbGVjdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zZWxlY3RcIiBlbHRcblxuICBsZXQgb2ZfaW5wdXQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaW5wdXRcIiBlbHRcblxuICBsZXQgb2ZfdGV4dGFyZWEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGV4dGFyZWFcIiBlbHRcblxuICBsZXQgb2ZfYnV0dG9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2J1dHRvblwiIGVsdFxuXG4gIGxldCBvZl9sYWJlbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9sYWJlbFwiIGVsdFxuXG4gIGxldCBvZl9maWVsZHNldCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9maWVsZHNldFwiIGVsdFxuXG4gIGxldCBvZl9sZWdlbmQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbGVnZW5kXCIgZWx0XG5cbiAgbGV0IG9mX3VsIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3VsXCIgZWx0XG5cbiAgbGV0IG9mX29sIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29sXCIgZWx0XG5cbiAgbGV0IG9mX2RsIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RsXCIgZWx0XG5cbiAgbGV0IG9mX2xpIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xpXCIgZWx0XG5cbiAgbGV0IG9mX2RpdiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kaXZcIiBlbHRcblxuICBsZXQgb2ZfcCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wXCIgZWx0XG5cbiAgbGV0IG9mX2hlYWRpbmcgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaGVhZGluZ1wiIGVsdFxuXG4gIGxldCBvZl9ibG9ja3F1b3RlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Jsb2NrcXVvdGVcIiBlbHRcblxuICBsZXQgb2ZfcHJlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3ByZVwiIGVsdFxuXG4gIGxldCBvZl9iciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9iclwiIGVsdFxuXG4gIGxldCBvZl9ociBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oclwiIGVsdFxuXG4gIGxldCBvZl9pbnMgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaW5zXCIgZWx0XG5cbiAgbGV0IG9mX2RlbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kZWxcIiBlbHRcblxuICBsZXQgb2ZfYSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hXCIgZWx0XG5cbiAgbGV0IG9mX2ltZyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9pbWdcIiBlbHRcblxuICBsZXQgb2Zfb2JqZWN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29iamVjdFwiIGVsdFxuXG4gIGxldCBvZl9wYXJhbSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wYXJhbVwiIGVsdFxuXG4gIGxldCBvZl9hcmVhIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FyZWFcIiBlbHRcblxuICBsZXQgb2ZfbWFwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21hcFwiIGVsdFxuXG4gIGxldCBvZl9zY3JpcHQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc2NyaXB0XCIgZWx0XG5cbiAgbGV0IG9mX3RkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RkXCIgZWx0XG5cbiAgbGV0IG9mX3RyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RyXCIgZWx0XG5cbiAgbGV0IG9mX2NvbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jb2xcIiBlbHRcblxuICBsZXQgb2ZfdGZvb3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGZvb3RcIiBlbHRcblxuICBsZXQgb2ZfdGhlYWQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGhlYWRcIiBlbHRcblxuICBsZXQgb2ZfdGJvZHkgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGJvZHlcIiBlbHRcblxuICBsZXQgb2ZfY2FwdGlvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jYXB0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX3RhYmxlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RhYmxlXCIgZWx0XG5cbiAgbGV0IG9mX2NhbnZhcyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jYW52YXNcIiBlbHRcblxuICBsZXQgb2ZfaWZyYW1lIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2lmcmFtZVwiIGVsdFxuXG4gIGxldCBvZl9hdWRpbyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hdWRpb1wiIGVsdFxuXG4gIGxldCBvZl92aWRlbyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl92aWRlb1wiIGVsdFxuXG4gICgqIERvbV9odG1sLmhlYWRpbmdFbGVtZW50ICopXG5cbiAgbGV0IG9mX2gxIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2gxXCIgZWx0XG5cbiAgbGV0IG9mX2gyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2gyXCIgZWx0XG5cbiAgbGV0IG9mX2gzIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2gzXCIgZWx0XG5cbiAgbGV0IG9mX2g0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2g0XCIgZWx0XG5cbiAgbGV0IG9mX2g1IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2g1XCIgZWx0XG5cbiAgbGV0IG9mX2g2IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2g2XCIgZWx0XG5cbiAgKCogRG9tX2h0bWwuZWxlbWVudCAqKVxuXG4gIGxldCBvZl9hYmJyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FiYnJcIiBlbHRcblxuICBsZXQgb2ZfYWRkcmVzcyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hZGRyZXNzXCIgZWx0XG5cbiAgbGV0IG9mX2FydGljbGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYXJ0aWNsZVwiIGVsdFxuXG4gIGxldCBvZl9hc2lkZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hc2lkZVwiIGVsdFxuXG4gIGxldCBvZl9iIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2JcIiBlbHRcblxuICBsZXQgb2ZfYmRvIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Jkb1wiIGVsdFxuXG4gIGxldCBvZl9jaXRlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NpdGVcIiBlbHRcblxuICBsZXQgb2ZfY29kZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jb2RlXCIgZWx0XG5cbiAgbGV0IG9mX2NvbGdyb3VwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NvbGdyb3VwXCIgZWx0XG5cbiAgbGV0IG9mX2NvbW1hbmQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfY29tbWFuZFwiIGVsdFxuXG4gIGxldCBvZl9kYXRhbGlzdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kYXRhbGlzdFwiIGVsdFxuXG4gIGxldCBvZl9kZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kZFwiIGVsdFxuXG4gIGxldCBvZl9kZXRhaWxzIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RldGFpbHNcIiBlbHRcblxuICBsZXQgb2ZfZGZuIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RmblwiIGVsdFxuXG4gIGxldCBvZl9kdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kdFwiIGVsdFxuXG4gIGxldCBvZl9lbSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9lbVwiIGVsdFxuXG4gIGxldCBvZl9lbWJlZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9lbWJlZFwiIGVsdFxuXG4gIGxldCBvZl9maWdjYXB0aW9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2ZpZ2NhcHRpb25cIiBlbHRcblxuICBsZXQgb2ZfZmlndXJlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2ZpZ3VyZVwiIGVsdFxuXG4gIGxldCBvZl9mb290ZXIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZm9vdGVyXCIgZWx0XG5cbiAgbGV0IG9mX2hlYWRlciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oZWFkZXJcIiBlbHRcblxuICBsZXQgb2ZfaGdyb3VwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hncm91cFwiIGVsdFxuXG4gIGxldCBvZl9pIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2lcIiBlbHRcblxuICBsZXQgb2Zfa2JkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2tiZFwiIGVsdFxuXG4gIGxldCBvZl9rZXlnZW4gZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfa2V5Z2VuXCIgZWx0XG5cbiAgbGV0IG9mX21haW4gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWFpblwiIGVsdFxuXG4gIGxldCBvZl9tYXJrIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21hcmtcIiBlbHRcblxuICBsZXQgb2ZfbWVudSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tZW51XCIgZWx0XG5cbiAgbGV0IG9mX21ldGVyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21ldGVyXCIgZWx0XG5cbiAgbGV0IG9mX25hdiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9uYXZcIiBlbHRcblxuICBsZXQgb2Zfbm9zY3JpcHQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfbm9zY3JpcHRcIiBlbHRcblxuICBsZXQgb2Zfb3V0cHV0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX291dHB1dFwiIGVsdFxuXG4gIGxldCBvZl9wcm9ncmVzcyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wcm9ncmVzc1wiIGVsdFxuXG4gIGxldCBvZl9xIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3FcIiBlbHRcblxuICBsZXQgb2ZfcnAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcnBcIiBlbHRcblxuICBsZXQgb2ZfcnQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcnRcIiBlbHRcblxuICBsZXQgb2ZfcnVieSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ydWJ5XCIgZWx0XG5cbiAgbGV0IG9mX3NhbXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc2FtcFwiIGVsdFxuXG4gIGxldCBvZl9zZWN0aW9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NlY3Rpb25cIiBlbHRcblxuICBsZXQgb2Zfc21hbGwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc21hbGxcIiBlbHRcblxuICBsZXQgb2Zfc291cmNlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NvdXJjZVwiIGVsdFxuXG4gIGxldCBvZl9zcGFuIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NwYW5cIiBlbHRcblxuICBsZXQgb2Zfc3Ryb25nIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3N0cm9uZ1wiIGVsdFxuXG4gIGxldCBvZl9zdWIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3ViXCIgZWx0XG5cbiAgbGV0IG9mX3N1bW1hcnkgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3VtbWFyeVwiIGVsdFxuXG4gIGxldCBvZl9zdXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3VwXCIgZWx0XG5cbiAgbGV0IG9mX3RoIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RoXCIgZWx0XG5cbiAgbGV0IG9mX3RpbWUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGltZVwiIGVsdFxuXG4gIGxldCBvZl91IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3VcIiBlbHRcblxuICBsZXQgb2ZfdmFyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3ZhclwiIGVsdFxuXG4gIGxldCBvZl93YnIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfd2JyXCIgZWx0XG5lbmRcblxubW9kdWxlIE1ha2VPZiAoQyA6IHNpZ1xuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBlbHQgOiBEb20ubm9kZSBKcy50IC0+ICdhIGVsdFxuZW5kKSA6IFR5eG1sX2Nhc3Rfc2lncy5PRiB3aXRoIHR5cGUgJ2EgZWx0ID0gJ2EgQy5lbHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBlbHQgPSAnYSBDLmVsdFxuXG4gIGxldCByZWJ1aWxkX25vZGUgXyB4ID0gQy5lbHQgKEpzLlVuc2FmZS5jb2VyY2UgeClcblxuICBsZXQgb2ZfZWxlbWVudCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9lbGVtZW50XCIgZWx0XG5cbiAgbGV0IG9mX2h0bWwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaHRtbFwiIGVsdFxuXG4gIGxldCBvZl9oZWFkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hlYWRcIiBlbHRcblxuICBsZXQgb2ZfbGluayBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9saW5rXCIgZWx0XG5cbiAgbGV0IG9mX3RpdGxlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RpdGxlXCIgZWx0XG5cbiAgbGV0IG9mX21ldGEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWV0YVwiIGVsdFxuXG4gIGxldCBvZl9iYXNlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Jhc2VcIiBlbHRcblxuICBsZXQgb2Zfc3R5bGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3R5bGVcIiBlbHRcblxuICBsZXQgb2ZfYm9keSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ib2R5XCIgZWx0XG5cbiAgbGV0IG9mX2Zvcm0gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZm9ybVwiIGVsdFxuXG4gIGxldCBvZl9vcHRHcm91cCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vcHRHcm91cFwiIGVsdFxuXG4gIGxldCBvZl9vcHRpb24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb3B0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX3NlbGVjdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zZWxlY3RcIiBlbHRcblxuICBsZXQgb2ZfaW5wdXQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaW5wdXRcIiBlbHRcblxuICBsZXQgb2ZfdGV4dEFyZWEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGV4dEFyZWFcIiBlbHRcblxuICBsZXQgb2ZfYnV0dG9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2J1dHRvblwiIGVsdFxuXG4gIGxldCBvZl9sYWJlbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9sYWJlbFwiIGVsdFxuXG4gIGxldCBvZl9maWVsZFNldCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9maWVsZFNldFwiIGVsdFxuXG4gIGxldCBvZl9sZWdlbmQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbGVnZW5kXCIgZWx0XG5cbiAgbGV0IG9mX3VMaXN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3VMaXN0XCIgZWx0XG5cbiAgbGV0IG9mX29MaXN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29MaXN0XCIgZWx0XG5cbiAgbGV0IG9mX2RMaXN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RMaXN0XCIgZWx0XG5cbiAgbGV0IG9mX2xpIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xpXCIgZWx0XG5cbiAgbGV0IG9mX2RpdiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kaXZcIiBlbHRcblxuICBsZXQgb2ZfcGFyYWdyYXBoIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3BhcmFncmFwaFwiIGVsdFxuXG4gIGxldCBvZl9oZWFkaW5nIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hlYWRpbmdcIiBlbHRcblxuICBsZXQgb2ZfcXVvdGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcXVvdGVcIiBlbHRcblxuICBsZXQgb2ZfcHJlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3ByZVwiIGVsdFxuXG4gIGxldCBvZl9iciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9iclwiIGVsdFxuXG4gIGxldCBvZl9ociBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oclwiIGVsdFxuXG4gIGxldCBvZl9tb2QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbW9kXCIgZWx0XG5cbiAgbGV0IG9mX2FuY2hvciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hbmNob3JcIiBlbHRcblxuICBsZXQgb2ZfaW1hZ2UgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaW1hZ2VcIiBlbHRcblxuICBsZXQgb2Zfb2JqZWN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29iamVjdFwiIGVsdFxuXG4gIGxldCBvZl9wYXJhbSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wYXJhbVwiIGVsdFxuXG4gIGxldCBvZl9hcmVhIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FyZWFcIiBlbHRcblxuICBsZXQgb2ZfbWFwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21hcFwiIGVsdFxuXG4gIGxldCBvZl9zY3JpcHQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc2NyaXB0XCIgZWx0XG5cbiAgbGV0IG9mX2VtYmVkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2VtYmVkXCIgZWx0XG5cbiAgbGV0IG9mX3RhYmxlQ2VsbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90YWJsZUNlbGxcIiBlbHRcblxuICBsZXQgb2ZfdGFibGVSb3cgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVSb3dcIiBlbHRcblxuICBsZXQgb2ZfdGFibGVDb2wgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVDb2xcIiBlbHRcblxuICBsZXQgb2ZfdGFibGVTZWN0aW9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RhYmxlU2VjdGlvblwiIGVsdFxuXG4gIGxldCBvZl90YWJsZUNhcHRpb24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVDYXB0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX3RhYmxlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RhYmxlXCIgZWx0XG5cbiAgbGV0IG9mX2NhbnZhcyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jYW52YXNcIiBlbHRcblxuICBsZXQgb2ZfaUZyYW1lIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2lGcmFtZVwiIGVsdFxuXG4gIGxldCBvZl9hdWRpbyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hdWRpb1wiIGVsdFxuXG4gIGxldCBvZl92aWRlbyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl92aWRlb1wiIGVsdFxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuISBJbXBvcnRcblxubGV0IGpzX3N0cmluZ19vZl9mbG9hdCBmID0gKEpzLm51bWJlcl9vZl9mbG9hdCBmKSMjdG9TdHJpbmdcblxubGV0IGpzX3N0cmluZ19vZl9pbnQgaSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgKGZsb2F0X29mX2ludCBpKSkjI3RvU3RyaW5nXG5cbm1vZHVsZSB0eXBlIFhNTCA9XG4gIFhtbF9zaWdzLlRcbiAgICB3aXRoIHR5cGUgdXJpID0gc3RyaW5nXG4gICAgIGFuZCB0eXBlIGV2ZW50X2hhbmRsZXIgPSBEb21faHRtbC5ldmVudCBKcy50IC0+IGJvb2xcbiAgICAgYW5kIHR5cGUgbW91c2VfZXZlbnRfaGFuZGxlciA9IERvbV9odG1sLm1vdXNlRXZlbnQgSnMudCAtPiBib29sXG4gICAgIGFuZCB0eXBlIGtleWJvYXJkX2V2ZW50X2hhbmRsZXIgPSBEb21faHRtbC5rZXlib2FyZEV2ZW50IEpzLnQgLT4gYm9vbFxuICAgICBhbmQgdHlwZSBlbHQgPSBEb20ubm9kZSBKcy50XG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gd2Vha01hcCA9IG9iamVjdFxuICBtZXRob2Qgc2V0IDogJ2EgLT4gJ2IgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGdldCA6ICdhIC0+ICdiIEpzLk9wdGRlZi50IEpzLm1ldGhcbmVuZFxuXG5sZXQgcmV0YWluID1cbiAgbGV0IG1hcCA6IChEb20ubm9kZSBKcy50LCBPYmoudCBKcy5qc19hcnJheSBKcy50KSB3ZWFrTWFwIEpzLnQgPVxuICAgIGxldCB3ZWFrTWFwID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9XZWFrTWFwIGluXG4gICAgbmV3JWpzIHdlYWtNYXBcbiAgaW5cbiAgZnVuICh0eXBlIGEpIG5vZGUgfihrZWVwbWUgOiBhKSAtPlxuICAgIGxldCBwcmV2ID1cbiAgICAgIEpzLk9wdGRlZi5jYXNlIChtYXAjI2dldCBub2RlKSAoZnVuICgpIC0+IG5ldyVqcyBKcy5hcnJheV9lbXB0eSkgKGZ1biB4IC0+IHgpXG4gICAgaW5cbiAgICBsZXQgKF8gOiBpbnQpID0gcHJldiMjcHVzaCAoT2JqLnJlcHIga2VlcG1lKSBpblxuICAgIG1hcCMjc2V0IG5vZGUgcHJldlxuXG5tb2R1bGUgWG1sID0gc3RydWN0XG4gIG1vZHVsZSBXID0gWG1sX3dyYXAuTm9XcmFwXG5cbiAgdHlwZSAnYSB3cmFwID0gJ2FcblxuICB0eXBlICdhIGxpc3Rfd3JhcCA9ICdhIGxpc3RcblxuICB0eXBlIHVyaSA9IHN0cmluZ1xuXG4gIGxldCB1cmlfb2Zfc3RyaW5nIHMgPSBzXG5cbiAgbGV0IHN0cmluZ19vZl91cmkgcyA9IHNcblxuICB0eXBlIGFuYW1lID0gc3RyaW5nXG5cbiAgdHlwZSBldmVudF9oYW5kbGVyID0gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiBib29sXG5cbiAgdHlwZSBtb3VzZV9ldmVudF9oYW5kbGVyID0gRG9tX2h0bWwubW91c2VFdmVudCBKcy50IC0+IGJvb2xcblxuICB0eXBlIGtleWJvYXJkX2V2ZW50X2hhbmRsZXIgPSBEb21faHRtbC5rZXlib2FyZEV2ZW50IEpzLnQgLT4gYm9vbFxuXG4gIHR5cGUgdG91Y2hfZXZlbnRfaGFuZGxlciA9IERvbV9odG1sLnRvdWNoRXZlbnQgSnMudCAtPiBib29sXG5cbiAgdHlwZSBhdHRyaWJfayA9XG4gICAgfCBFdmVudCBvZiBldmVudF9oYW5kbGVyXG4gICAgfCBNb3VzZUV2ZW50IG9mIG1vdXNlX2V2ZW50X2hhbmRsZXJcbiAgICB8IEtleWJvYXJkRXZlbnQgb2Yga2V5Ym9hcmRfZXZlbnRfaGFuZGxlclxuICAgIHwgVG91Y2hFdmVudCBvZiB0b3VjaF9ldmVudF9oYW5kbGVyXG4gICAgfCBBdHRyIG9mIEpzLmpzX3N0cmluZyBKcy50IG9wdGlvbiBSZWFjdC5TLnRcblxuICB0eXBlIGF0dHJpYiA9IGFuYW1lICogYXR0cmliX2tcblxuICBsZXQgYXR0ciBuYW1lIHYgPSBuYW1lLCBBdHRyIChSZWFjdC5TLmNvbnN0IChTb21lIHYpKVxuXG4gIGxldCBmbG9hdF9hdHRyaWIgbmFtZSB2YWx1ZSA6IGF0dHJpYiA9IGF0dHIgbmFtZSAoanNfc3RyaW5nX29mX2Zsb2F0IHZhbHVlKVxuXG4gIGxldCBpbnRfYXR0cmliIG5hbWUgdmFsdWUgPSBhdHRyIG5hbWUgKGpzX3N0cmluZ19vZl9pbnQgdmFsdWUpXG5cbiAgbGV0IHN0cmluZ19hdHRyaWIgbmFtZSB2YWx1ZSA9IGF0dHIgbmFtZSAoSnMuc3RyaW5nIHZhbHVlKVxuXG4gIGxldCBzcGFjZV9zZXBfYXR0cmliIG5hbWUgdmFsdWVzID0gYXR0ciBuYW1lIChKcy5zdHJpbmcgKFN0cmluZy5jb25jYXQgXCIgXCIgdmFsdWVzKSlcblxuICBsZXQgY29tbWFfc2VwX2F0dHJpYiBuYW1lIHZhbHVlcyA9IGF0dHIgbmFtZSAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IFwiLFwiIHZhbHVlcykpXG5cbiAgbGV0IGV2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgKHZhbHVlIDogZXZlbnRfaGFuZGxlcikgPSBuYW1lLCBFdmVudCB2YWx1ZVxuXG4gIGxldCBtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lICh2YWx1ZSA6IG1vdXNlX2V2ZW50X2hhbmRsZXIpID1cbiAgICBuYW1lLCBNb3VzZUV2ZW50IHZhbHVlXG5cbiAgbGV0IGtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgKHZhbHVlIDoga2V5Ym9hcmRfZXZlbnRfaGFuZGxlcikgPVxuICAgIG5hbWUsIEtleWJvYXJkRXZlbnQgdmFsdWVcblxuICBsZXQgdG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSAodmFsdWUgOiB0b3VjaF9ldmVudF9oYW5kbGVyKSA9XG4gICAgbmFtZSwgVG91Y2hFdmVudCB2YWx1ZVxuXG4gIGxldCB1cmlfYXR0cmliIG5hbWUgdmFsdWUgPSBhdHRyIG5hbWUgKEpzLnN0cmluZyB2YWx1ZSlcblxuICBsZXQgdXJpc19hdHRyaWIgbmFtZSB2YWx1ZXMgPSBhdHRyIG5hbWUgKEpzLnN0cmluZyAoU3RyaW5nLmNvbmNhdCBcIiBcIiB2YWx1ZXMpKVxuXG4gICgqKiBFbGVtZW50ICopXG5cbiAgdHlwZSBlbHQgPSBEb20ubm9kZSBKcy50XG5cbiAgdHlwZSBlbmFtZSA9IHN0cmluZ1xuXG4gIGxldCBlbXB0eSAoKSA9IChEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRG9jdW1lbnRGcmFnbWVudCA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBjb21tZW50IGMgPSAoRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZUNvbW1lbnQgKEpzLnN0cmluZyBjKSA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBwY2RhdGEgcyA9IChEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlVGV4dE5vZGUgKEpzLnN0cmluZyBzKSA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBlbmNvZGVkcGNkYXRhIHMgPSAoRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZVRleHROb2RlIChKcy5zdHJpbmcgcykgOj4gRG9tLm5vZGUgSnMudClcblxuICBsZXQgZW50aXR5ID1cbiAgICBsZXQgc3RyaW5nX2ZvbGQgcyB+cG9zIH5pbml0IH5mID1cbiAgICAgIGxldCByID0gcmVmIGluaXQgaW5cbiAgICAgIGZvciBpID0gcG9zIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgbGV0IGMgPSBzLltpXSBpblxuICAgICAgICByIDo9IGYgIXIgY1xuICAgICAgZG9uZTtcbiAgICAgICFyXG4gICAgaW5cbiAgICBsZXQgaW52YWxpZF9lbnRpdHkgZSA9IGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiBcIkludmFsaWQgZW50aXR5ICVTXCIgZSkgaW5cbiAgICBsZXQgaW50X29mX2NoYXIgPSBmdW5jdGlvblxuICAgICAgfCAnMCcgLi4gJzknIGFzIHggLT4gU29tZSAoQ2hhci5jb2RlIHggLSBDaGFyLmNvZGUgJzAnKVxuICAgICAgfCAnYScgLi4gJ2YnIGFzIHggLT4gU29tZSAoQ2hhci5jb2RlIHggLSBDaGFyLmNvZGUgJ2EnICsgMTApXG4gICAgICB8ICdBJyAuLiAnRicgYXMgeCAtPiBTb21lIChDaGFyLmNvZGUgeCAtIENoYXIuY29kZSAnQScgKyAxMClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgcGFyc2VfaW50IH5wb3MgfmJhc2UgZSA9XG4gICAgICBzdHJpbmdfZm9sZCBlIH5wb3MgfmluaXQ6MCB+ZjooZnVuIGFjYyB4IC0+XG4gICAgICAgICAgbWF0Y2ggaW50X29mX2NoYXIgeCB3aXRoXG4gICAgICAgICAgfCBTb21lIGQgd2hlbiBkIDwgYmFzZSAtPiAoYWNjICogYmFzZSkgKyBkXG4gICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGludmFsaWRfZW50aXR5IGUpXG4gICAgaW5cbiAgICBsZXQgaXNfYWxwaGFfbnVtID0gZnVuY3Rpb25cbiAgICAgIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgZnVuIGUgLT5cbiAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGUgaW5cbiAgICAgIGxldCBzdHIgPVxuICAgICAgICBpZiBsZW4gPj0gMSAmJiBDaGFyLmVxdWFsIGUuWzBdICcjJ1xuICAgICAgICB0aGVuXG4gICAgICAgICAgbGV0IGkgPVxuICAgICAgICAgICAgaWYgbGVuID49IDIgJiYgKENoYXIuZXF1YWwgZS5bMV0gJ3gnIHx8IENoYXIuZXF1YWwgZS5bMV0gJ1gnKVxuICAgICAgICAgICAgdGhlbiBwYXJzZV9pbnQgfnBvczoyIH5iYXNlOjE2IGVcbiAgICAgICAgICAgIGVsc2UgcGFyc2VfaW50IH5wb3M6MSB+YmFzZToxMCBlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBKcy5zdHJpbmdfY29uc3RyIyNmcm9tQ2hhckNvZGUgaVxuICAgICAgICBlbHNlIGlmIHN0cmluZ19mb2xkIGUgfnBvczowIH5pbml0OnRydWUgfmY6KGZ1biBhY2MgeCAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBUaGlzIGlzIG5vdCBxdWl0ZSByaWdodCBhY2NvcmRpbmcgdG9cbiAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly93d3cueG1sLmNvbS9heG1sL3RhcmdldC5odG1sI05ULU5hbWUuXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1dCBpdCBzZWVtcyB0byBjb3ZlciBhbGwgaHRtbDUgZW50aXRpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly9kZXYudzMub3JnL2h0bWw1L2h0bWwtYXV0aG9yL2NoYXJyZWYgKilcbiAgICAgICAgICAgICAgICAgICAgYWNjICYmIGlzX2FscGhhX251bSB4KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgICAgfCBcInF1b3RcIiAtPiBKcy5zdHJpbmcgXCJcXFwiXCJcbiAgICAgICAgICB8IFwiYW1wXCIgLT4gSnMuc3RyaW5nIFwiJlwiXG4gICAgICAgICAgfCBcImFwb3NcIiAtPiBKcy5zdHJpbmcgXCInXCJcbiAgICAgICAgICB8IFwibHRcIiAtPiBKcy5zdHJpbmcgXCI8XCJcbiAgICAgICAgICB8IFwiZ3RcIiAtPiBKcy5zdHJpbmcgXCI+XCJcbiAgICAgICAgICB8IFwiXCIgLT4gaW52YWxpZF9lbnRpdHkgZVxuICAgICAgICAgIHwgXyAtPiBEb21faHRtbC5kZWNvZGVfaHRtbF9lbnRpdGllcyAoSnMuc3RyaW5nIChcIiZcIiBeIGUgXiBcIjtcIikpXG4gICAgICAgIGVsc2UgaW52YWxpZF9lbnRpdHkgZVxuICAgICAgaW5cbiAgICAgIChEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlVGV4dE5vZGUgc3RyIDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgKCogVE9ETzogZml4IGdldF9wcm9wXG4gICAgIGl0IG9ubHkgd29yayB3aGVuIGh0bWwgYXR0cmlidXRlIGFuZCBkb20gcHJvcGVydHkgbmFtZXMgY29ycmVzcG9uZC5cbiAgICAgZmluZCBhIHdheSB0byBnZXQgZG9tIHByb3BlcnR5IG5hbWUgY29ycmVzcG9uZGluZyB0byBodG1sIGF0dHJpYnV0ZVxuICAqKVxuXG4gIGxldCBnZXRfcHJvcCBub2RlIG5hbWUgPVxuICAgIGlmIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuZ2V0IG5vZGUgbmFtZSkgdGhlbiBTb21lIG5hbWUgZWxzZSBOb25lXG5cbiAgbGV0IGl0ZXJfcHJvcF9wcm90ZWN0ZWQgbm9kZSBuYW1lIGYgPVxuICAgIG1hdGNoIGdldF9wcm9wIG5vZGUgbmFtZSB3aXRoXG4gICAgfCBTb21lIG4gLT4gKCB0cnkgZiBuIHdpdGggXyAtPiAoKSlcbiAgICB8IE5vbmUgLT4gKClcblxuICBsZXQgYXR0YWNoX2F0dHJpYnMgbm9kZSBsID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gKG4nLCBhdHQpIC0+XG4gICAgICAgIGxldCBuID0gSnMuc3RyaW5nIG4nIGluXG4gICAgICAgIG1hdGNoIGF0dCB3aXRoXG4gICAgICAgIHwgQXR0ciBhIC0+XG4gICAgICAgICAgICBsZXQgKGtlZXBtZSA6IHVuaXQgUmVhY3QuUy50KSA9XG4gICAgICAgICAgICAgIFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgaWdub3JlIChub2RlIyNzZXRBdHRyaWJ1dGUgbiB2KTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBuJyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBcInN0eWxlXCIgLT4gbm9kZSMjLnN0eWxlIyMuY3NzVGV4dCA6PSB2XG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJfcHJvcF9wcm90ZWN0ZWQgbm9kZSBuIChmdW4gbmFtZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnMuVW5zYWZlLnNldCBub2RlIG5hbWUgdikpXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZSAobm9kZSMjcmVtb3ZlQXR0cmlidXRlIG4pO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIG4nIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFwic3R5bGVcIiAtPiBub2RlIyMuc3R5bGUjIy5jc3NUZXh0IDo9IEpzLnN0cmluZyBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJfcHJvcF9wcm90ZWN0ZWQgbm9kZSBuIChmdW4gbmFtZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnMuVW5zYWZlLnNldCBub2RlIG5hbWUgSnMubnVsbCkpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICByZXRhaW4gKG5vZGUgOj4gRG9tLm5vZGUgSnMudCkgfmtlZXBtZVxuICAgICAgICB8IEV2ZW50IGggLT4gSnMuVW5zYWZlLnNldCBub2RlIG4gKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBldiAtPiBKcy5ib29sIChoIGV2KSkpXG4gICAgICAgIHwgTW91c2VFdmVudCBoIC0+XG4gICAgICAgICAgICBKcy5VbnNhZmUuc2V0IG5vZGUgbiAoSnMud3JhcF9jYWxsYmFjayAoZnVuIGV2IC0+IEpzLmJvb2wgKGggZXYpKSlcbiAgICAgICAgfCBLZXlib2FyZEV2ZW50IGggLT5cbiAgICAgICAgICAgIEpzLlVuc2FmZS5zZXQgbm9kZSBuIChKcy53cmFwX2NhbGxiYWNrIChmdW4gZXYgLT4gSnMuYm9vbCAoaCBldikpKVxuICAgICAgICB8IFRvdWNoRXZlbnQgaCAtPlxuICAgICAgICAgICAgSnMuVW5zYWZlLnNldCBub2RlIG4gKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBldiAtPiBKcy5ib29sIChoIGV2KSkpKVxuICAgICAgbFxuXG4gIGxldCBsZWFmID8oYSA9IFtdKSBuYW1lID1cbiAgICBsZXQgZSA9IERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgbmFtZSkgaW5cbiAgICBhdHRhY2hfYXR0cmlicyBlIGE7XG4gICAgKGUgOj4gRG9tLm5vZGUgSnMudClcblxuICBsZXQgbm9kZSA/KGEgPSBbXSkgbmFtZSBjaGlsZHJlbiA9XG4gICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIG5hbWUpIGluXG4gICAgYXR0YWNoX2F0dHJpYnMgZSBhO1xuICAgIExpc3QuaXRlciAoZnVuIGMgLT4gaWdub3JlIChlIyNhcHBlbmRDaGlsZCBjKSkgY2hpbGRyZW47XG4gICAgKGUgOj4gRG9tLm5vZGUgSnMudClcblxuICBsZXQgY2RhdGEgcyA9IHBjZGF0YSBzXG5cbiAgbGV0IGNkYXRhX3NjcmlwdCBzID0gY2RhdGEgc1xuXG4gIGxldCBjZGF0YV9zdHlsZSBzID0gY2RhdGEgc1xuZW5kXG5cbm1vZHVsZSBYbWxfU3ZnID0gc3RydWN0XG4gIGluY2x1ZGUgWG1sXG5cbiAgbGV0IGxlYWYgPyhhID0gW10pIG5hbWUgPVxuICAgIGxldCBlID0gRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnROUyBEb21fc3ZnLnhtbG5zIChKcy5zdHJpbmcgbmFtZSkgaW5cbiAgICBhdHRhY2hfYXR0cmlicyBlIGE7XG4gICAgKGUgOj4gRG9tLm5vZGUgSnMudClcblxuICBsZXQgbm9kZSA/KGEgPSBbXSkgbmFtZSBjaGlsZHJlbiA9XG4gICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRWxlbWVudE5TIERvbV9zdmcueG1sbnMgKEpzLnN0cmluZyBuYW1lKSBpblxuICAgIGF0dGFjaF9hdHRyaWJzIGUgYTtcbiAgICBMaXN0Lml0ZXIgKGZ1biBjIC0+IGlnbm9yZSAoZSMjYXBwZW5kQ2hpbGQgYykpIGNoaWxkcmVuO1xuICAgIChlIDo+IERvbS5ub2RlIEpzLnQpXG5lbmRcblxubW9kdWxlIFN2ZyA9IFN2Z19mLk1ha2UgKFhtbF9TdmcpXG5tb2R1bGUgSHRtbCA9IEh0bWxfZi5NYWtlIChYbWwpIChTdmcpXG5tb2R1bGUgSHRtbDUgPSBIdG1sXG5cbm1vZHVsZSBUb19kb20gPSBUeXhtbF9jYXN0Lk1ha2VUbyAoc3RydWN0XG4gIHR5cGUgJ2EgZWx0ID0gJ2EgSHRtbC5lbHRcblxuICBsZXQgZWx0ID0gSHRtbC50b2VsdFxuZW5kKVxuXG5tb2R1bGUgT2ZfZG9tID0gVHl4bWxfY2FzdC5NYWtlT2YgKHN0cnVjdFxuICB0eXBlICdhIGVsdCA9ICdhIEh0bWwuZWx0XG5cbiAgbGV0IGVsdCA9IEh0bWwudG90XG5lbmQpXG5cbm1vZHVsZSBSZWdpc3RlciA9IHN0cnVjdFxuICBsZXQgcmVtb3ZlQ2hpbGRyZW4gKG5vZGUgOiAjRG9tLmVsZW1lbnQgSnMudCkgPVxuICAgIGxldCBsID0gbm9kZSMjLmNoaWxkTm9kZXMgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCMjLmxlbmd0aCAtIDEgZG9cbiAgICAgIEpzLk9wdC5pdGVyIChsIyNpdGVtIGkpIChmdW4geCAtPiBpZ25vcmUgKG5vZGUjI3JlbW92ZUNoaWxkIHgpKVxuICAgIGRvbmVcblxuICBsZXQgYWRkX3RvID8oa2VlcCA9IHRydWUpIG5vZGUgY29udGVudCA9XG4gICAgaWYgbm90IGtlZXAgdGhlbiByZW1vdmVDaGlsZHJlbiBub2RlO1xuICAgIExpc3QuaXRlciAoZnVuIHggLT4gRG9tLmFwcGVuZENoaWxkIG5vZGUgKFRvX2RvbS5vZl9lbGVtZW50IHgpKSBjb250ZW50XG5cbiAgbGV0IGlkID9rZWVwIGlkIGNvbnRlbnQgPVxuICAgIGxldCBub2RlID0gRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWQgaWQgaW5cbiAgICBhZGRfdG8gP2tlZXAgbm9kZSBjb250ZW50XG5cbiAgbGV0IGJvZHkgP2tlZXAgY29udGVudCA9IGFkZF90byA/a2VlcCBEb21faHRtbC5kb2N1bWVudCMjLmJvZHkgY29udGVudFxuXG4gIGxldCBoZWFkID9rZWVwIGNvbnRlbnQgPSBhZGRfdG8gP2tlZXAgRG9tX2h0bWwuZG9jdW1lbnQjIy5oZWFkIGNvbnRlbnRcblxuICBsZXQgaHRtbCA/aGVhZCBib2R5ID1cbiAgICAobWF0Y2ggaGVhZCB3aXRoXG4gICAgfCBTb21lIGggLT4gRG9tX2h0bWwuZG9jdW1lbnQjIy5oZWFkIDo9IFRvX2RvbS5vZl9oZWFkIGhcbiAgICB8IE5vbmUgLT4gKCkpO1xuICAgIERvbV9odG1sLmRvY3VtZW50IyMuYm9keSA6PSBUb19kb20ub2ZfYm9keSBib2R5O1xuICAgICgpXG5lbmRcblxubW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgUmVhY3Quc2lnbmFsXG5cbiAgdHlwZSAnYSB0bGlzdCA9ICdhIFJlYWN0aXZlRGF0YS5STGlzdC50XG5cbiAgdHlwZSAoJ2EsICdiKSBmdCA9ICdhIC0+ICdiXG5cbiAgbGV0IHJldHVybiA9IFJlYWN0LlMuY29uc3RcblxuICBsZXQgZm1hcCBmID0gUmVhY3QuUy5tYXAgZlxuXG4gIGxldCBuaWwgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcblxuICBsZXQgc2luZ2xldG9uID0gUmVhY3RpdmVEYXRhLlJMaXN0LnNpbmdsZXRvbl9zXG5cbiAgbGV0IGNvbnMgeCB4cyA9IFJlYWN0aXZlRGF0YS5STGlzdC5jb25jYXQgKHNpbmdsZXRvbiB4KSB4c1xuXG4gIGxldCBtYXAgZiA9IFJlYWN0aXZlRGF0YS5STGlzdC5tYXAgZlxuXG4gIGxldCBhcHBlbmQgeCB5ID0gUmVhY3RpdmVEYXRhLlJMaXN0LmNvbmNhdCB4IHlcbmVuZFxuXG5tb2R1bGUgVXRpbCA9IHN0cnVjdFxuICBvcGVuIFJlYWN0aXZlRGF0YVxuICBvcGVuIFJMaXN0XG5cbiAgbGV0IGluc2VydEF0IGRvbSBpIHggPVxuICAgIGxldCBub2RlcyA9IGRvbSMjLmNoaWxkTm9kZXMgaW5cbiAgICBhc3NlcnQgKGkgPD0gbm9kZXMjIy5sZW5ndGgpO1xuICAgIGlmIGkgPSBub2RlcyMjLmxlbmd0aFxuICAgIHRoZW4gaWdub3JlIChkb20jI2FwcGVuZENoaWxkICh4IDo+IERvbS5ub2RlIEpzLnQpKVxuICAgIGVsc2UgaWdub3JlIChkb20jI2luc2VydEJlZm9yZSB4IChub2RlcyMjaXRlbSBpKSlcblxuICBsZXQgbWVyZ2Vfb25lX3BhdGNoIChkb20gOiBEb20ubm9kZSBKcy50KSAocCA6IERvbS5ub2RlIEpzLnQgcCkgPVxuICAgIG1hdGNoIHAgd2l0aFxuICAgIHwgSSAoaSwgeCkgLT5cbiAgICAgICAgbGV0IGkgPSBpZiBpIDwgMCB0aGVuIGRvbSMjLmNoaWxkTm9kZXMjIy5sZW5ndGggKyAxICsgaSBlbHNlIGkgaW5cbiAgICAgICAgaW5zZXJ0QXQgZG9tIGkgeFxuICAgIHwgUiBpIC0+XG4gICAgICAgIGxldCBpID0gaWYgaSA8IDAgdGhlbiBkb20jIy5jaGlsZE5vZGVzIyMubGVuZ3RoICsgaSBlbHNlIGkgaW5cbiAgICAgICAgbGV0IG5vZGVzID0gZG9tIyMuY2hpbGROb2RlcyBpblxuICAgICAgICBhc3NlcnQgKGkgPj0gMCAmJiBpIDwgbm9kZXMjIy5sZW5ndGgpO1xuICAgICAgICBKcy5PcHQuaXRlciAobm9kZXMjI2l0ZW0gaSkgKGZ1biBuIC0+IERvbS5yZW1vdmVDaGlsZCBkb20gbilcbiAgICB8IFUgKGksIHgpIC0+IChcbiAgICAgICAgbGV0IGkgPSBpZiBpIDwgMCB0aGVuIGRvbSMjLmNoaWxkTm9kZXMjIy5sZW5ndGggKyBpIGVsc2UgaSBpblxuICAgICAgICBtYXRjaCBKcy5PcHQudG9fb3B0aW9uIChkb20jIy5jaGlsZE5vZGVzIyNpdGVtIGkpIHdpdGhcbiAgICAgICAgfCBTb21lIG9sZCAtPiBpZ25vcmUgKGRvbSMjcmVwbGFjZUNoaWxkIHggb2xkKVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIHwgWCAoaSwgbW92ZSkgLT4gKFxuICAgICAgICBsZXQgaSA9IGlmIGkgPCAwIHRoZW4gZG9tIyMuY2hpbGROb2RlcyMjLmxlbmd0aCArIGkgZWxzZSBpIGluXG4gICAgICAgIGlmIG1vdmUgPSAwXG4gICAgICAgIHRoZW4gKClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIEpzLk9wdC50b19vcHRpb24gKGRvbSMjLmNoaWxkTm9kZXMjI2l0ZW0gaSkgd2l0aFxuICAgICAgICAgIHwgU29tZSBpJyAtPiBpbnNlcnRBdCBkb20gKGkgKyBpZiBtb3ZlID4gMCB0aGVuIG1vdmUgKyAxIGVsc2UgbW92ZSkgaSdcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuXG4gIGxldCByZWMgcmVtb3ZlQ2hpbGRyZW4gZG9tID1cbiAgICBtYXRjaCBKcy5PcHQudG9fb3B0aW9uIGRvbSMjLmxhc3RDaGlsZCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGMgLT5cbiAgICAgICAgaWdub3JlIChkb20jI3JlbW92ZUNoaWxkIGMpO1xuICAgICAgICByZW1vdmVDaGlsZHJlbiBkb21cblxuICBsZXQgbWVyZ2VfbXNnIChkb20gOiBEb20ubm9kZSBKcy50KSAobXNnIDogRG9tLm5vZGUgSnMudCBtc2cpID1cbiAgICBtYXRjaCBtc2cgd2l0aFxuICAgIHwgU2V0IGwgLT5cbiAgICAgICAgKCogRm9ybWF0LmVwcmludGYgXCJyZXBsYWNlIGFsbEAuXCI7ICopXG4gICAgICAgIHJlbW92ZUNoaWxkcmVuIGRvbTtcbiAgICAgICAgTGlzdC5pdGVyIChmdW4gbCAtPiBpZ25vcmUgKGRvbSMjYXBwZW5kQ2hpbGQgbCkpIGxcbiAgICB8IFBhdGNoIHAgLT5cbiAgICAgICAgKCogRm9ybWF0LmVwcmludGYgXCJwYXRjaEAuXCI7ICopXG4gICAgICAgIExpc3QuaXRlciAobWVyZ2Vfb25lX3BhdGNoIGRvbSkgcFxuXG4gIGxldCB1cGRhdGVfY2hpbGRyZW4gKGRvbSA6IERvbS5ub2RlIEpzLnQpIChub2RlcyA6IERvbS5ub2RlIEpzLnQgdCkgPVxuICAgIHJlbW92ZUNoaWxkcmVuIGRvbTtcbiAgICBsZXQga2VlcG1lIDogdW5pdCBSZWFjdC5TLnQgPSBmb2xkIChmdW4gKCkgbXNnIC0+IG1lcmdlX21zZyBkb20gbXNnKSBub2RlcyAoKSBpblxuICAgIHJldGFpbiAoZG9tIDogRG9tLm5vZGUgSnMudCkgfmtlZXBtZTtcbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBSID0gc3RydWN0XG4gIGxldCBmaWx0ZXJfYXR0cmliIChuYW1lLCBhKSBvbiA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBYbWwuRXZlbnQgXyB8IFhtbC5Nb3VzZUV2ZW50IF8gfCBYbWwuS2V5Ym9hcmRFdmVudCBfIHwgWG1sLlRvdWNoRXZlbnQgXyAtPlxuICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImZpbHRlcl9hdHRyaWIgbm90IGltcGxlbWVudGVkIGZvciBldmVudCBoYW5kbGVyXCIpXG4gICAgfCBYbWwuQXR0ciBhIC0+IG5hbWUsIFhtbC5BdHRyIChSZWFjdC5TLmwyIChmdW4gb24gYSAtPiBpZiBvbiB0aGVuIGEgZWxzZSBOb25lKSBvbiBhKVxuXG4gIGxldCBhdHRhY2hfYXR0cmlicyA9IFhtbC5hdHRhY2hfYXR0cmlic1xuXG4gIG1vZHVsZSBYbWwgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVyA9IFdyYXBcblxuICAgIHR5cGUgJ2Egd3JhcCA9ICdhIFcudFxuXG4gICAgdHlwZSAnYSBsaXN0X3dyYXAgPSAnYSBXLnRsaXN0XG5cbiAgICB0eXBlIHVyaSA9IFhtbC51cmlcblxuICAgIGxldCBzdHJpbmdfb2ZfdXJpID0gWG1sLnN0cmluZ19vZl91cmlcblxuICAgIGxldCB1cmlfb2Zfc3RyaW5nID0gWG1sLnVyaV9vZl9zdHJpbmdcblxuICAgIHR5cGUgYW5hbWUgPSBYbWwuYW5hbWVcblxuICAgIHR5cGUgZXZlbnRfaGFuZGxlciA9IFhtbC5ldmVudF9oYW5kbGVyXG5cbiAgICB0eXBlIG1vdXNlX2V2ZW50X2hhbmRsZXIgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlclxuXG4gICAgdHlwZSBrZXlib2FyZF9ldmVudF9oYW5kbGVyID0gWG1sLmtleWJvYXJkX2V2ZW50X2hhbmRsZXJcblxuICAgIHR5cGUgdG91Y2hfZXZlbnRfaGFuZGxlciA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyXG5cbiAgICB0eXBlIGF0dHJpYiA9IFhtbC5hdHRyaWJcblxuICAgIGxldCBhdHRyIG5hbWUgZiBzID1cbiAgICAgIGxldCBhID0gVy5mbWFwIGYgcyBpblxuICAgICAgbmFtZSwgWG1sLkF0dHIgYVxuXG4gICAgbGV0IGZsb2F0X2F0dHJpYiBuYW1lIHMgPSBhdHRyIG5hbWUgKGZ1biBmIC0+IFNvbWUgKGpzX3N0cmluZ19vZl9mbG9hdCBmKSkgc1xuXG4gICAgbGV0IGludF9hdHRyaWIgbmFtZSBzID0gYXR0ciBuYW1lIChmdW4gZiAtPiBTb21lIChqc19zdHJpbmdfb2ZfaW50IGYpKSBzXG5cbiAgICBsZXQgc3RyaW5nX2F0dHJpYiBuYW1lIHMgPSBhdHRyIG5hbWUgKGZ1biBmIC0+IFNvbWUgKEpzLnN0cmluZyBmKSkgc1xuXG4gICAgbGV0IHNwYWNlX3NlcF9hdHRyaWIgbmFtZSBzID1cbiAgICAgIGF0dHIgbmFtZSAoZnVuIGYgLT4gU29tZSAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IFwiIFwiIGYpKSkgc1xuXG4gICAgbGV0IGNvbW1hX3NlcF9hdHRyaWIgbmFtZSBzID1cbiAgICAgIGF0dHIgbmFtZSAoZnVuIGYgLT4gU29tZSAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IFwiLFwiIGYpKSkgc1xuXG4gICAgbGV0IGV2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgcyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHNcblxuICAgIGxldCBtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHMgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSBzXG5cbiAgICBsZXQga2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSBzID0gWG1sLmtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgc1xuXG4gICAgbGV0IHRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgcyA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHNcblxuICAgIGxldCB1cmlfYXR0cmliIG5hbWUgcyA9IGF0dHIgbmFtZSAoZnVuIGYgLT4gU29tZSAoSnMuc3RyaW5nIGYpKSBzXG5cbiAgICBsZXQgdXJpc19hdHRyaWIgbmFtZSBzID0gYXR0ciBuYW1lIChmdW4gZiAtPiBTb21lIChKcy5zdHJpbmcgKFN0cmluZy5jb25jYXQgXCIgXCIgZikpKSBzXG5cbiAgICB0eXBlIGVsdCA9IFhtbC5lbHRcblxuICAgIHR5cGUgZW5hbWUgPSBYbWwuZW5hbWVcblxuICAgIGxldCBlbXB0eSA9IFhtbC5lbXB0eVxuXG4gICAgbGV0IGNvbW1lbnQgPSBYbWwuY29tbWVudFxuXG4gICAgbGV0IHBjZGF0YSBzID1cbiAgICAgIGxldCBlID0gRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZVRleHROb2RlIChKcy5zdHJpbmcgXCJcIikgaW5cbiAgICAgIGxldCBrZWVwbWUgPSBSZWFjdC5TLm1hcCAoZnVuIHMgLT4gZSMjLmRhdGEgOj0gSnMuc3RyaW5nIHMpIHMgaW5cbiAgICAgIHJldGFpbiAoZSA6PiBEb20ubm9kZSBKcy50KSB+a2VlcG1lO1xuICAgICAgKGUgOj4gRG9tLm5vZGUgSnMudClcblxuICAgIGxldCBlbmNvZGVkcGNkYXRhIHMgPSBwY2RhdGEgc1xuXG4gICAgbGV0IGVudGl0eSBzID0gWG1sLmVudGl0eSBzXG5cbiAgICBsZXQgbGVhZiA9IFhtbC5sZWFmXG5cbiAgICBsZXQgbm9kZSA/KGEgPSBbXSkgbmFtZSBsID1cbiAgICAgIGxldCBlID0gRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBuYW1lKSBpblxuICAgICAgYXR0YWNoX2F0dHJpYnMgZSBhO1xuICAgICAgVXRpbC51cGRhdGVfY2hpbGRyZW4gKGUgOj4gRG9tLm5vZGUgSnMudCkgbDtcbiAgICAgIChlIDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgICBsZXQgY2RhdGEgPSBYbWwuY2RhdGFcblxuICAgIGxldCBjZGF0YV9zY3JpcHQgPSBYbWwuY2RhdGFfc2NyaXB0XG5cbiAgICBsZXQgY2RhdGFfc3R5bGUgPSBYbWwuY2RhdGFfc3R5bGVcbiAgZW5kXG5cbiAgbW9kdWxlIFhtbF9TdmcgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFhtbFxuXG4gICAgbGV0IGxlYWYgPSBYbWxfU3ZnLmxlYWZcblxuICAgIGxldCBub2RlID8oYSA9IFtdKSBuYW1lIGwgPVxuICAgICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRWxlbWVudE5TIERvbV9zdmcueG1sbnMgKEpzLnN0cmluZyBuYW1lKSBpblxuICAgICAgYXR0YWNoX2F0dHJpYnMgZSBhO1xuICAgICAgVXRpbC51cGRhdGVfY2hpbGRyZW4gKGUgOj4gRG9tLm5vZGUgSnMudCkgbDtcbiAgICAgIChlIDo+IERvbS5ub2RlIEpzLnQpXG4gIGVuZFxuXG4gIG1vZHVsZSBTdmcgPSBTdmdfZi5NYWtlIChYbWxfU3ZnKVxuICBtb2R1bGUgSHRtbCA9IEh0bWxfZi5NYWtlIChYbWwpIChTdmcpXG4gIG1vZHVsZSBIdG1sNSA9IEh0bWxcbmVuZFxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG5leGNlcHRpb24gRW1wdHlcblxudHlwZSAnYSB0ID0ge1xuICBtdXRhYmxlIHByZXYgOiAnYSB0O1xuICBtdXRhYmxlIG5leHQgOiAnYSB0O1xufVxuXG50eXBlICdhIG5vZGUgPSB7XG4gIG5vZGVfcHJldiA6ICdhIHQ7XG4gIG5vZGVfbmV4dCA6ICdhIHQ7XG4gIG11dGFibGUgbm9kZV9kYXRhIDogJ2E7XG4gIG11dGFibGUgbm9kZV9hY3RpdmUgOiBib29sO1xufVxuXG5leHRlcm5hbCBzZXFfb2Zfbm9kZSA6ICdhIG5vZGUgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG5vZGVfb2Zfc2VxIDogJ2EgdCAtPiAnYSBub2RlID0gXCIlaWRlbnRpdHlcIlxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wZXJhdGlvbnMgb24gbm9kZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBnZXQgbm9kZSA9XG4gIG5vZGUubm9kZV9kYXRhXG5cbmxldCBzZXQgbm9kZSBkYXRhID1cbiAgbm9kZS5ub2RlX2RhdGEgPC0gZGF0YVxuXG5sZXQgcmVtb3ZlIG5vZGUgPVxuICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW4gYmVnaW5cbiAgICBub2RlLm5vZGVfYWN0aXZlIDwtIGZhbHNlO1xuICAgIGxldCBzZXEgPSBzZXFfb2Zfbm9kZSBub2RlIGluXG4gICAgc2VxLnByZXYubmV4dCA8LSBzZXEubmV4dDtcbiAgICBzZXEubmV4dC5wcmV2IDwtIHNlcS5wcmV2XG4gIGVuZFxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wZXJhdGlvbnMgb24gc2VxdWVuY2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgcmVjIHNlcSA9IHsgcHJldiA9IHNlcTsgbmV4dCA9IHNlcSB9IGluXG4gIHNlcVxuXG5sZXQgY2xlYXIgc2VxID1cbiAgc2VxLnByZXYgPC0gc2VxO1xuICBzZXEubmV4dCA8LSBzZXFcblxubGV0IGlzX2VtcHR5IHNlcSA9IHNlcS5uZXh0ID09IHNlcVxuXG5sZXQgbGVuZ3RoIHNlcSA9XG4gIGxldCByZWMgbG9vcCBjdXJyIGxlbiA9XG4gICAgaWYgY3VyciA9PSBzZXEgdGhlblxuICAgICAgbGVuXG4gICAgZWxzZVxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluIGxvb3Agbm9kZS5ub2RlX25leHQgKGxlbiArIDEpXG4gIGluXG4gIGxvb3Agc2VxLm5leHQgMFxuXG5sZXQgYWRkX2wgZGF0YSBzZXEgPVxuICBsZXQgbm9kZSA9IHsgbm9kZV9wcmV2ID0gc2VxOyBub2RlX25leHQgPSBzZXEubmV4dDsgbm9kZV9kYXRhID0gZGF0YTsgbm9kZV9hY3RpdmUgPSB0cnVlIH0gaW5cbiAgc2VxLm5leHQucHJldiA8LSBzZXFfb2Zfbm9kZSBub2RlO1xuICBzZXEubmV4dCA8LSBzZXFfb2Zfbm9kZSBub2RlO1xuICBub2RlXG5cbmxldCBhZGRfciBkYXRhIHNlcSA9XG4gIGxldCBub2RlID0geyBub2RlX3ByZXYgPSBzZXEucHJldjsgbm9kZV9uZXh0ID0gc2VxOyBub2RlX2RhdGEgPSBkYXRhOyBub2RlX2FjdGl2ZSA9IHRydWUgfSBpblxuICBzZXEucHJldi5uZXh0IDwtIHNlcV9vZl9ub2RlIG5vZGU7XG4gIHNlcS5wcmV2IDwtIHNlcV9vZl9ub2RlIG5vZGU7XG4gIG5vZGVcblxubGV0IHRha2VfbCBzZXEgPVxuICBpZiBpc19lbXB0eSBzZXEgdGhlblxuICAgIHJhaXNlIEVtcHR5XG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIHNlcS5uZXh0IGluXG4gICAgcmVtb3ZlIG5vZGU7XG4gICAgbm9kZS5ub2RlX2RhdGFcbiAgZW5kXG5cbmxldCB0YWtlX3Igc2VxID1cbiAgaWYgaXNfZW1wdHkgc2VxIHRoZW5cbiAgICByYWlzZSBFbXB0eVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBzZXEucHJldiBpblxuICAgIHJlbW92ZSBub2RlO1xuICAgIG5vZGUubm9kZV9kYXRhXG4gIGVuZFxuXG5sZXQgdGFrZV9vcHRfbCBzZXEgPVxuICBpZiBpc19lbXB0eSBzZXEgdGhlblxuICAgIE5vbmVcbiAgZWxzZSBiZWdpblxuICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgc2VxLm5leHQgaW5cbiAgICByZW1vdmUgbm9kZTtcbiAgICBTb21lIG5vZGUubm9kZV9kYXRhXG4gIGVuZFxuXG5sZXQgdGFrZV9vcHRfciBzZXEgPVxuICBpZiBpc19lbXB0eSBzZXEgdGhlblxuICAgIE5vbmVcbiAgZWxzZSBiZWdpblxuICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgc2VxLnByZXYgaW5cbiAgICByZW1vdmUgbm9kZTtcbiAgICBTb21lIG5vZGUubm9kZV9kYXRhXG4gIGVuZFxuXG5sZXQgdHJhbnNmZXJfbCBzMSBzMiA9XG4gIHMyLm5leHQucHJldiA8LSBzMS5wcmV2O1xuICBzMS5wcmV2Lm5leHQgPC0gczIubmV4dDtcbiAgczIubmV4dCA8LSBzMS5uZXh0O1xuICBzMS5uZXh0LnByZXYgPC0gczI7XG4gIHMxLnByZXYgPC0gczE7XG4gIHMxLm5leHQgPC0gczFcblxubGV0IHRyYW5zZmVyX3IgczEgczIgPVxuICBzMi5wcmV2Lm5leHQgPC0gczEubmV4dDtcbiAgczEubmV4dC5wcmV2IDwtIHMyLnByZXY7XG4gIHMyLnByZXYgPC0gczEucHJldjtcbiAgczEucHJldi5uZXh0IDwtIHMyO1xuICBzMS5wcmV2IDwtIHMxO1xuICBzMS5uZXh0IDwtIHMxXG5cbmxldCBpdGVyX2wgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlbiBiZWdpblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW4gZiBub2RlLm5vZGVfZGF0YTtcbiAgICAgIGxvb3Agbm9kZS5ub2RlX25leHRcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBzZXEubmV4dFxuXG5sZXQgaXRlcl9yIGYgc2VxID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgPVxuICAgIGlmIGN1cnIgIT0gc2VxIHRoZW4gYmVnaW5cbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuIGYgbm9kZS5ub2RlX2RhdGE7XG4gICAgICBsb29wIG5vZGUubm9kZV9wcmV2XG4gICAgZW5kXG4gIGluXG4gIGxvb3Agc2VxLnByZXZcblxubGV0IGl0ZXJfbm9kZV9sIGYgc2VxID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgPVxuICAgIGlmIGN1cnIgIT0gc2VxIHRoZW4gYmVnaW5cbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuIGYgbm9kZTtcbiAgICAgIGxvb3Agbm9kZS5ub2RlX25leHRcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBzZXEubmV4dFxuXG5sZXQgaXRlcl9ub2RlX3IgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlbiBiZWdpblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW4gZiBub2RlO1xuICAgICAgbG9vcCBub2RlLm5vZGVfcHJldlxuICAgIGVuZFxuICBpblxuICBsb29wIHNlcS5wcmV2XG5cbmxldCBmb2xkX2wgZiBzZXEgYWNjID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgYWNjID1cbiAgICBpZiBjdXJyID09IHNlcSB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlXG4gICAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIGN1cnIgaW5cbiAgICAgIGlmIG5vZGUubm9kZV9hY3RpdmUgdGhlblxuICAgICAgICBsb29wIG5vZGUubm9kZV9uZXh0IChmIG5vZGUubm9kZV9kYXRhIGFjYylcbiAgICAgIGVsc2VcbiAgICAgICAgbG9vcCBub2RlLm5vZGVfbmV4dCBhY2NcbiAgaW5cbiAgbG9vcCBzZXEubmV4dCBhY2NcblxubGV0IGZvbGRfciBmIHNlcSBhY2MgPVxuICBsZXQgcmVjIGxvb3AgY3VyciBhY2MgPVxuICAgIGlmIGN1cnIgPT0gc2VxIHRoZW5cbiAgICAgIGFjY1xuICAgIGVsc2VcbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuXG4gICAgICAgIGxvb3Agbm9kZS5ub2RlX3ByZXYgKGYgbm9kZS5ub2RlX2RhdGEgYWNjKVxuICAgICAgZWxzZVxuICAgICAgICBsb29wIG5vZGUubm9kZV9wcmV2IGFjY1xuICBpblxuICBsb29wIHNlcS5wcmV2IGFjY1xuXG5sZXQgZmluZF9ub2RlX2wgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW5cbiAgICAgICAgaWYgZiBub2RlLm5vZGVfZGF0YSB0aGVuXG4gICAgICAgICAgbm9kZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCBub2RlLm5vZGVfbmV4dFxuICAgICAgZWxzZVxuICAgICAgICBsb29wIG5vZGUubm9kZV9uZXh0XG4gICAgZWxzZVxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gIGluXG4gIGxvb3Agc2VxLm5leHRcblxubGV0IGZpbmRfbm9kZV9yIGYgc2VxID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgPVxuICAgIGlmIGN1cnIgIT0gc2VxIHRoZW5cbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuXG4gICAgICAgIGlmIGYgbm9kZS5ub2RlX2RhdGEgdGhlblxuICAgICAgICAgIG5vZGVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3Agbm9kZS5ub2RlX3ByZXZcbiAgICAgIGVsc2VcbiAgICAgICAgbG9vcCBub2RlLm5vZGVfcHJldlxuICAgIGVsc2VcbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICBpblxuICBsb29wIHNlcS5wcmV2XG5cbmxldCBmaW5kX25vZGVfb3B0X2wgZiBzZXEgPVxuICB0cnkgU29tZSAoZmluZF9ub2RlX2wgZiBzZXEpIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxubGV0IGZpbmRfbm9kZV9vcHRfciBmIHNlcSA9XG4gIHRyeSBTb21lIChmaW5kX25vZGVfciBmIHNlcSkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG4oKiBSZWFkaW5nIGd1aWRlXG5cbiAgIFdlbGNvbWUgdG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBMd3QgY29yZSEgVGhpcyBpcyBhIGJpZyBmaWxlLCBidXQgd2VcbiAgIGhvcGUgdGhhdCByZWFkaW5nIGl0IChwYXJ0cyBhdCBhIHRpbWUhKSB3aWxsIG5vdCBiZSBzY2FyeSA6KSBIZXJlIGlzIHdoeTpcblxuXG4gICAqIFNlY3Rpb25pbmdcblxuICAgVGhlIGNvZGUgaXMgYnJva2VuIHVwIGludG8gc2VjdGlvbnMsIGVhY2ggb25lIG9mIHdoaWNoIGlzIGFuIGludGVybmFsIG1vZHVsZS5cbiAgIE1vc3Qgb2YgdGhlIG1vZHVsZXMgaGF2ZSBhIHNpZ25hdHVyZSwgd2hpY2ggc2VydmVzIGFzIGEgbmVhdCB0YWJsZSBvZlxuICAgY29udGVudHMuXG5cbiAgIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHJlYWQgdGhpcyBmaWxlIHdpdGggY29kZSBmb2xkaW5nIGVuYWJsZWQuIElmIHlvdVxuICAgZm9sZCBhbGwgdGhlIG1vZHVsZXMsIHlvdSBjYW4gdmlzdWFsaXplIHRoZSBsb2dpY2FsIHN0cnVjdHVyZSBvZiBMd3QgcXVpdGVcbiAgIGVhc2lseS4gWW91IGNhbiB0aGVuIGV4cGFuZCBtb2R1bGVzIGFzIG5lZWRlZCwgZGVwZW5kaW5nIG9uIHdoYXQgcGFydCBvZiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIHlvdSBhcmUgaW50ZXJlc3RlZCBpbi4gV2l0aG91dCBjb2RlIGZvbGRpbmcsIHlvdSBmYWNlIGFuXG4gICBpbnRpbWlkYXRpbmcgd2FsbCBvZiBjb2RlIDooIFlvdSBjYW4gc3RpbGwgdmlzdWFsbHkgcGFyc2UgdGhlIGZpbGUsIGhvd2V2ZXIsXG4gICBiZWNhdXNlIHRoZXJlIGFyZSBwbGVudHkgb2YgYmxhbmsgbGluZXMgdG8gaGVscCBzZWN0aW9uIHRoaW5ncyBvZmYuIFlvdSBjYW5cbiAgIGFsc28gdmlldyB0aGlzIGZpbGUgZm9sZGVkIG9ubGluZTpcblxuICAgICBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9hYW50cm9uLzlmYWIwYmRlYWQ5OGE2MGZjY2YwNmUwMTg5MTg2ODYzXG4gICAgIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2FhbnRyb24vOTdiNTg1MjBkNWJiNDg1OGNjYWM2ZjU0NzAwYTI0ZDdcblxuICAgVGhlIHNpZ25hdHVyZXMgYXJlIHVudXN1YWw6IGJpZyBjb21tZW50cyBhcmUgYWJzZW50LiBUaGV5IGFyZSBtb3ZlZCBpbnRvIHRoZVxuICAgbW9kdWxlcywgc28gdGhhdCB0aGV5IGFyZSBoaWRkZW4gYnkgY29kZSBmb2xkaW5nIHdoZW4geW91ICh0aGUgcmVhZGVyISkgYXJlXG4gICBub3QgaW50ZXJlc3RlZCBpbiB0aG9zZSBtb2R1bGVzLlxuXG5cbiAgICogRG9jdW1lbnRhdGlvblxuXG4gICBUaGUgZG9jdW1lbnRhdGlvbiBiZWdpbnMgd2l0aCBhbiBvdmVydmlldyBvZiBtYWpvciBjb25jZXB0cyBhbmQgY29tcG9uZW50cy5cbiAgIFRoaXMgb3ZlcnZpZXcgcHV0cyBldmVyeXRoaW5nIGludG8gY29udGV4dC4gWW91IGRvbid0IGhhdmUgdG8gcmVhZCB0aGUgd2hvbGVcbiAgIHRoaW5nLiBUaGUgb3ZlcnZpZXcgYmVnaW5zIHdpdGggYmFzaWMgY29uY2VwdHMsIG1vdmVzIG9uIHRvIGFkdmFuY2VkIG9uZXMsXG4gICBhbmQgdGhlbiBnZXRzIGludG8gdGhlIHRydWx5IGVzb3RlcmljLiBZb3UgY2FuIHJlYWQgYWJvdXQgZWFjaCBjb25jZXB0IG9uIGFuXG4gICBhcy1uZWVkZWQgYmFzaXMuIEhvd2V2ZXIsIG9uY2UgeW91IGhhdmUgcmVhZCB0aGUgd2hvbGUgb3ZlcnZpZXcsIHlvdSB3aWxsIGJlXG4gICBhd2FyZSBvZiAqZXZlcnl0aGluZyogdGhhdCBpcyBuZWVkZWQgdG8gdW5kZXJzdGFuZCwgYW5kIHdvcmsgd2l0aCwgdGhlIGNvcmVcbiAgIG9mIEx3dC5cblxuICAgTGl0dGVyZWQgaW4gdGhlIGNvZGUgYXJlIGFkZGl0aW9uYWwgY29tbWVudHMsIHRoYXQgZ28gaW4tZGVwdGggb24gdmFyaW91c1xuICAgbG9jYWwgaW1wbGVtZW50YXRpb24gZGV0YWlscywgb3Bwb3J0dW5pdGllcywgcmVncmV0cywgYW5kIHRoZSBsaWtlLlxuXG4gICBUaGUgc2VjdGlvbnMgKG1vZHVsZXMpIG9mIHRoZSBjb2RlIGNvcnJlc3BvbmQgY2xvc2VseSB0byBzZWN0aW9ucyBvZiB0aGVcbiAgIG92ZXJ2aWV3LlxuXG5cbiAgICogV2hpdGVzcGFjZVxuXG4gICBUaGUgdG90YWwgbGluZSBjb3VudCBvZiB0aGlzIGZpbGUgbWF5IHNlZW0gZnJpZ2h0ZW5pbmcsIGJ1dCBvbmUgdGhpcmQgb2YgaXRcbiAgIGlzIHdoaXRlc3BhY2UgYW5kIGNvbW1lbnRzLCBib3RoIHRoZXJlIHRvIGhlbHAgeW91IHJlYWQgdGhlIHJlbWFpbmluZyB0d29cbiAgIHRoaXJkcyFcblxuICAgQWxzbywgd2l0aGluIHRob3NlIHR3byB0aGlyZHMsIHRoZXJlIGFyZSBsYXJnZSBncm91cHMgb2YgZnVuY3Rpb25zIHRoYXQgYXJlXG4gICByZXBldGl0aXZlIGFuZCBmb3JtdWxhaWMsIHNvIHRoZXJlIGlzIG11Y2ggbGVzcyBjb25jZXB0dWFsbHktdW5pcXVlIGNvZGUgaW5cbiAgIEx3dCB0aGFuIHlvdSBtaWdodCB0aGluayBhdCBmaXJzdC5cblxuXG4gICAqIFBsZWFzZSBlZGl0IHRoZSBjb2RlIGFuZCB0aGUgZG9jcyFcblxuICAgVGhpcyBjb2RlIGlzIG1lYW50IHRvIGJlIHJlYWRhYmxlLCBhbmQgdG8gYmUgZWRpdGVkLiBJZiB5b3UgYXJlIHJlYWRpbmdcbiAgIHNvbWV0aGluZywgYW5kIHRoaW5rIHRoZXJlIGlzIGEgYmV0dGVyIHdheSB0byBleHByZXNzIGl0LCBwbGVhc2UgZ28gYWhlYWQgYW5kXG4gICBvcGVuIGEgcHVsbCByZXF1ZXN0IHRvIHRoZSBMd3QgcmVwb3NpdG9yeSBhdFxuXG4gICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dFxuXG4gICBFdmVuIGlmIHlvdXIgcHVsbCByZXF1ZXN0IHNvbWVob3cgZG9lc24ndCBnZXQgbWVyZ2VkLCB5b3Ugd2lsbCBoYXZlIGVkdWNhdGVkXG4gICB0aGUgbWFpbnRhaW5lcnMsIG5vdCB0byBtZW50aW9uIG90aGVyIGNvbnRyaWJ1dG9ycywgYW5kIHVzZXJzLiBUaGlzIGlzIHRydWVcbiAgIGV2ZW4gaWYgdGhlIGNoYW5nZSBpcyB0cml2aWFsIC0tIHNvbWV0aW1lcywgbWFpbnRhaW5lcnMganVzdCBuZWVkIHRvIGJlXG4gICBlZHVjYXRlZCBtdWx0aXBsZSB0aW1lcyBiZWZvcmUgdGhleSBzZWUgdGhlIHdpc2RvbSBvZiBpdCA6L1xuXG4gICBMaWtld2lzZSwgaWYgeW91IHdvdWxkIGxpa2UgdG8gbWFrZSBhIGNvZGUgY29udHJpYnV0aW9uIHRvIHRoZSBMd3QgY29yZSwgaXRcbiAgIGlzIHF1aXRlIHdlbGNvbWUsIGFuZCB3ZSBob3BlIHRoYXQgdGhpcyBjb2RlIGlzIHJlYWRhYmxlIGVub3VnaCBmb3IgeW91IHRvIGJlXG4gICBhYmxlIHRvIG1ha2UgaXQhXG5cblxuICAgRW5qb3khICopXG5cblxuXG4oKiBPdmVydmlld1xuXG4gICBJbiB0aGlzIGZpbGUsIHRoZXJlIGlzIGEgXCJtb2RlbFwiIGZ1bmN0aW9uIC0tIFtMd3QuYmluZF0gLS0gd2hpY2ggcHVsbHNcbiAgIHRvZ2V0aGVyIG1hbnkgKHRob3VnaCBub3QgYWxsKSBvZiB0aGUgY29uY2VwdHMgYW5kIGhlbHBlcnMgZGlzY3Vzc2VkIGluIHRoaXNcbiAgIG92ZXJ2aWV3LiBUbyBmaW5kIGl0LCBzZWFyY2ggZm9yIFwibGV0IGJpbmQsXCIgYW5kIHlvdSBjYW4gZXhhbWluZSBpdCB3aGlsZVxuICAgcmVhZGluZyB0aGUgb3ZlcnZpZXcuIFRoZSBhdXRob3JzIG9mIHRoaXMgZmlsZSBpbnRlbmQgdG8gcHV0IGV4dHJhIGVmZm9ydFxuICAgaW50byB3cml0aW5nIG5pY2UgY29tbWVudHMgaW5zaWRlIFtMd3QuYmluZF0gOilcblxuXG4gICAwLiBNYWluIG1lY2hhbmlzbSBhbmQgdHdvIGFzcGVjdHNcblxuICAgVGhlIEx3dCBpbnRlcmZhY2UgKFtsd3QubWxpXSkgcHJvdmlkZXMgb25lIG1haW4gbWVjaGFuaXNtLCBwcm9taXNlcywgYW5kIHR3b1xuICAgXCJhc3BlY3RzLFwiIHdoaWNoIGFyZSAqbm90KiBuZWNlc3NhcnkgdG8gdW5kZXJzdGFuZCB0aGUgbWFpbiBtZWNoYW5pc21cbiAgIHByb21pc2VzLCBidXQgdGhleSBhcmUgc3RpbGwgdGhlcmU6XG5cbiAgIC0gcHJvbWlzZSBjYW5jZWxsYXRpb25cbiAgIC0gc2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlXG5cbiAgIElmIHlvdSBhcmUgbm90IGludGVyZXN0ZWQgaW4gY2FuY2VsbGF0aW9uIG9yIHN0b3JhZ2UsIHlvdSBjYW4gaWdub3JlIHRoZXNlXG4gICB0d28gY29tcGxpY2F0aW9ucywgYW5kIHN0aWxsIGdldCBhIHByZXR0eSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUuIFRvXG4gICBoZWxwLCBhbGwgaWRlbnRpZmllcnMgcmVsYXRlZCB0byBjYW5jZWxsYXRpb24gY29udGFpbiB0aGUgc3RyaW5nIFwiY2FuY2VsLFwiXG4gICBhbmQgYWxsIGlkZW50aWZpZXJzIHJlbGF0ZWQgdG8gc3RvcmFnZSBjb250YWluIFwic3RvcmFnZS5cIlxuXG5cbiAgIDEuIFByb21pc2VzXG5cbiAgIEEgcHJvbWlzZSBpcyBhIGNlbGwgdGhhdCBjYW4gYmUgaW4gb25lIG9mIHR3byBzdGF0ZXM6IFwicmVzb2x2ZWRcIiBvclxuICAgXCJwZW5kaW5nLlwiXG5cbiAgIC0gUmVzb2x2ZWQgcHJvbWlzZXNcblxuICAgICBBIHJlc29sdmVkIHByb21pc2UgaXMgZWl0aGVyIFwiZnVsZmlsbGVkXCIgd2l0aCBhIHZhbHVlLCBvciBcInJlamVjdGVkXCIgd2l0aFxuICAgICBhbiBleGNlcHRpb24uIFRoZSBzdGF0ZSBvZiBhIHJlc29sdmVkIHByb21pc2Ugd2lsbCBuZXZlciBjaGFuZ2UgYWdhaW46IGFcbiAgICAgcmVzb2x2ZWQgcHJvbWlzZSBpcyBpbW11dGFibGUuIEEgcmVzb2x2ZWQgcHJvbWlzZSBpcyBiYXNpY2FsbHkgZXF1aXZhbGVudFxuICAgICB0byBhbiBbKCdhLCBleG4pIFN0ZGxpYi5yZXN1bHRdLiBSZXNvbHZlZCBwcm9taXNlcyBhcmUgcHJvZHVjZWQgaW4gdHdvXG4gICAgIHdheXM6XG5cbiAgICAgLSBbTHd0LnJldHVybl0sIFtMd3QuZmFpbF0sIGFuZCByZWxhdGVkIGZ1bmN0aW9ucywgcHJvZHVjZSBcInRyaXZpYWxcIlxuICAgICAgIHByb21pc2VzIHRoYXQgYXJlIHJlc29sdmVkIGZyb20gdGhlIHN0YXJ0LlxuICAgICAtIFRoZSBvdGhlciB3YXkgaXMgdG8gcmVzb2x2ZSBhIHByb21pc2UgdGhhdCBzdGFydGVkIG91dCBwZW5kaW5nLlxuXG4gICAgIE5vdGUgdGhhdCByZWplY3RlZCBwcm9taXNlcyBoYXZlIG5vdGhpbmcgdG8gZG8gd2l0aCB1bmhhbmRsZWQgZXhjZXB0aW9ucy5cblxuICAgLSBQZW5kaW5nIHByb21pc2VzXG5cbiAgICAgLi4uYXJlIHRob3NlIHRoYXQgbWF5IGJlY29tZSByZXNvbHZlZCBpbiB0aGUgZnV0dXJlLiBFYWNoIHBlbmRpbmcgcHJvbWlzZVxuICAgICBjYXJyaWVzIGEgbGlzdCBvZiBjYWxsYmFja3MuIFRoZXNlIGNhbGxiYWNrcyBhcmUgYWRkZWQgYnkgZnVuY3Rpb25zIGxpa2VcbiAgICAgW0x3dC5iaW5kXSwgYW5kIGNhbGxlZCBieSBMd3QgaWYvd2hlbiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZC4gVGhlc2VcbiAgICAgY2FsbGJhY2tzIHR5cGljYWxseSBlbmQgdXAgcmVzb2x2aW5nIGFkZGl0aW9uYWwgcHJvbWlzZXM7IHNlZSBzZWN0aW9uXG4gICAgIFwiUmVzb2x1dGlvbiBsb29wXCIgYmVsb3cuXG5cbiAgICAgUGVuZGluZyBwcm9taXNlcyBhcmUgcHJvZHVjZWQgaW4gdGhyZWUgd2F5cywgYWNjb3JkaW5nIHRvIGhvdyB0aGV5IGNhbiBiZVxuICAgICByZXNvbHZlZDpcblxuICAgICAtIEluaXRpYWwgcHJvbWlzZXNcblxuICAgICAgIC4uLmFyZSBjcmVhdGVkIGJ5IFtMd3Qud2FpdF0gYW5kIFtMd3QudGFza10uIFRoZSB1c2VyIG9mIEx3dCByZXNvbHZlc1xuICAgICAgIHRoZXNlIHByb21pc2VzIG1hbnVhbGx5LCB0aHJvdWdoIHRoZSByZXNvbHZlcnMgcmV0dXJuZWQgYnkgdGhvc2VcbiAgICAgICBmdW5jdGlvbnMuXG5cbiAgICAgLSBTZXF1ZW50aWFsIGNvbXBvc2l0aW9uXG5cbiAgICAgICBGb3IgZXhhbXBsZSwgW0x3dC5iaW5kXS4gVGhlc2UgcHJvbWlzZXMgb25seSBhcmUgb25seSByZXNvbHZlZCB3aGVuIHRoZVxuICAgICAgIHByZWNlZGluZyBzZXF1ZW5jZSBvZiBwcm9taXNlcyByZXNvbHZlcy4gVGhlIHVzZXIgY2Fubm90IHJlc29sdmUgdGhlc2VcbiAgICAgICBwcm9taXNlcyBkaXJlY3RseSAoYnV0IHNlZSB0aGUgc2VjdGlvbiBvbiBjYW5jZWxsYXRpb24gYmVsb3cpLlxuXG4gICAgIC0gQ29uY3VycmVudCBjb21wb3NpdGlvblxuXG4gICAgICAgRm9yIGV4YW1wbGUsIFtMd3Quam9pbl0gb3IgW0x3dC5jaG9vc2VdLiBUaGVzZSBwcm9taXNlcyBhcmUgb25seSByZXNvbHZlZFxuICAgICAgIHdoZW4gYWxsIG9yIG9uZSBvZiBhIHNldCBvZiBcInByZWNlZGluZ1wiIHByb21pc2VzIHJlc29sdmUuIFRoZSB1c2VyIGNhbm5vdFxuICAgICAgIHJlc29sdmUgdGhlc2UgcHJvbWlzZXMgZGlyZWN0bHkgKGJ1dCBzZWUgdGhlIHNlY3Rpb24gb24gY2FuY2VsbGF0aW9uXG4gICAgICAgYmVsb3cpLlxuXG5cbiAgIDIuIFJlc29sdmVyc1xuXG4gICBSZXNvbHZlcnMgYXJlIGdpdmVuIHRvIHRoZSB1c2VyIGJ5IFtMd3Qud2FpdF0gYW5kIFtMd3QudGFza10sIGFuZCBjYW4gYmUgdXNlZFxuICAgYnkgdGhlIHVzZXIgdG8gcmVzb2x2ZSB0aGUgY29ycmVzcG9uZGluZyBwcm9taXNlcy4gTm90ZSB0aGF0IHRoaXMgbWVhbnMgdGhlXG4gICB1c2VyIG9ubHkgZXZlciBnZXRzIHJlc29sdmVycyBmb3IgaW5pdGlhbCBwcm9taXNlcy5cblxuICAgSW50ZXJuYWxseSwgcmVzb2x2ZXJzIGFyZSB0aGUgZXhhY3Qgc2FtZSBvYmplY3RzIGFzIHRoZSBwcm9taXNlcyB0aGV5XG4gICByZXNvbHZlLCBldmVuIHRob3VnaCB0aGUgcmVzb2x2ZXIgaXMgZXhwb3NlZCBhcyBhIHJlZmVyZW5jZSBvZiBhIGRpZmZlcmVudFxuICAgdHlwZSBieSBbbHd0Lm1saV0uIEZvciBkZXRhaWxzIG9uIHdoeSwgc2VlIHNlY3Rpb24gXCJUeXBlIHN5c3RlbSBhYnVzZVwiIGJlbG93LlxuXG5cbiAgIDMuIENhbGxiYWNrc1xuXG4gICAuLi5hcmUgYXR0YWNoZWQgYnkgTHd0IHRvIHBlbmRpbmcgcHJvbWlzZXMsIGFuZCBhcmUgcnVuIGJ5IEx3dCBpZi93aGVuIHRob3NlXG4gICBwcm9taXNlcyBhcmUgcmVzb2x2ZWQuIFRoZXNlIGNhbGxiYWNrcyBhcmUgbm90IGRpcmVjdGx5IGV4cG9zZWQgdGhyb3VnaFxuICAgW2x3dC5tbGldIC0tIHRoZXkgYXJlIGEgbG93LWxldmVsIG1lY2hhbmlzbS4gRm9yIGV4YW1wbGUsIHRvIGltcGxlbWVudFxuICAgW0x3dC5iaW5kIHAgZl0sIEx3dCBhdHRhY2hlcyBhIGNhbGxiYWNrIHRvIFtwXSB0aGF0IGRvZXMgc29tZSBpbnRlcm5hbCBMd3RcbiAgIGJvb2sta2VlcGluZywgYW5kIHRoZW4gY2FsbHMgW2ZdIGlmIFtwXSBpcyBmdWxmaWxsZWQsIGFuZCBkb2VzIHNvbWV0aGluZyBlbHNlXG4gICBpZiBbcF0gaXMgcmVqZWN0ZWQuXG5cbiAgIENhbGxiYWNrcyBjb21lIGluIHR3byBmbGF2b3JzOiByZWd1bGFyIGNhbGxiYWNrcyBhbmQgY2FuY2VsIGNhbGxiYWNrcy4gVGhlXG4gICBvbmx5IG1hdGVyaWFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlbSBhcmUgdGhhdDpcblxuICAgLSByZWd1bGFyIGNhbGxiYWNrcyBhcmUgYWx3YXlzIGNhbGxlZCB3aGVuIGEgcHJvbWlzZSBpcyByZXNvbHZlZCwgYnV0IGNhbmNlbFxuICAgICBjYWxsYmFja3MgYXJlIGNhbGxlZCwgaW4gYWRkaXRpb24sIG9ubHkgaWYgdGhlIHByb21pc2UgaXMgY2FuY2VsZWQsIGFuZFxuICAgLSBhbGwgY2FuY2VsIGNhbGxiYWNrcyBvZiBhIHByb21pc2UgYXJlIGNhbGxlZCBiZWZvcmUgYW55IHJlZ3VsYXIgY2FsbGJhY2tcbiAgICAgaXMgY2FsbGVkLlxuXG4gICBDYW5jZWxsYXRpb24gaXMgYSBzcGVjaWFsIGNhc2Ugb2YgcmVzb2x1dGlvbiwgaW4gcGFydGljdWxhciwgYSBzcGVjaWFsIGNhc2VcbiAgIG9mIHJlamVjdGlvbiwgYnV0IHNlZSB0aGUgc2VjdGlvbiBvbiBjYW5jZWxsYXRpb24gbGF0ZXIgYmVsb3cuXG5cblxuICAgNC4gUmVzb2x1dGlvbiBsb29wXG5cbiAgIFJlc29sdmluZyBhIHBlbmRpbmcgcHJvbWlzZSB0cmlnZ2VycyBpdHMgY2FsbGJhY2tzLCBhbmQgdGhvc2UgbWlnaHQgcmVzb2x2ZVxuICAgbW9yZSBwZW5kaW5nIHByb21pc2VzLCB0cmlnZ2VyaW5nIG1vcmUgY2FsbGJhY2tzLCBldGMuIFRoaXMgYmVoYXZpb3IgaXMgdGhlXG4gICAqcmVzb2x1dGlvbiBsb29wKi4gTHd0IGhhcyBzb21lIG1hY2hpbmVyeSB0byBhdm9pZCBzdGFjayBvdmVyZmxvdyBhbmQgb3RoZXJcbiAgIHVuZm9ydHVuYXRlIHNpdHVhdGlvbnMgZHVyaW5nIHRoaXMgbG9vcC5cblxuICAgVGhpcyBjaGFpbmluZyBvZiBwcm9taXNlIHJlc29sdXRpb25zIHRocm91Z2ggY2FsbGJhY2tzIGNhbiBiZSBzZWVuIGFzIGEga2luZFxuICAgb2YgcHJvbWlzZSBkZXBlbmRlbmN5IGdyYXBoLCBpbiB3aGljaCB0aGUgbm9kZXMgYXJlIHBlbmRpbmcgcHJvbWlzZXMsIGFuZCB0aGVcbiAgIGVkZ2VzIGFyZSBjYWxsYmFja3MuIER1cmluZyB0aGUgcmVzb2x1dGlvbiBsb29wLCBMd3Qgc3RhcnRzIGF0IHNvbWUgaW5pdGlhbFxuICAgcHJvbWlzZSB0aGF0IGlzIGdldHRpbmcgcmVzb2x2ZWQgYnkgdGhlIHVzZXIsIGFuZCByZWN1cnNpdmVseSByZXNvbHZlcyBhbGxcbiAgIGRlcGVuZGVudCBwcm9taXNlcy4gVGhlIGdyYXBoIGlzIG1vZGlmaWVkOiByZXNvbHZlZCBwcm9taXNlcyBhcmUgbm8gbG9uZ2VyXG4gICBwZW5kaW5nLCBzbyB0aGV5IGFyZSBubyBsb25nZXIgcGFydCBvZiB0aGUgZ3JhcGguXG5cbiAgIFNvbWUgb2YgdGhlc2UgZGVwZW5kZW5jaWVzIGFyZSBleHBsaWNpdCB0byBMd3QsIGUuZy4gdGhlIGNhbGxiYWNrcyByZWdpc3RlcmVkXG4gICBieSBbTHd0LmJpbmRdLiBPdGhlcnMgYXJlIG5vdCB2aXNpYmxlIHRvIEx3dCwgYmVjYXVzZSB0aGUgdXNlciBjYW4gYWx3YXlzXG4gICByZWdpc3RlciBhIGNhbGxiYWNrIHVzaW5nIGEgZnVuY3Rpb24gbGlrZSBbTHd0Lm9uX3N1Y2Nlc3NdLCBhbmQgdXNlIHRoYXRcbiAgIGNhbGxiYWNrIHRvIHJlc29sdmUgYW5vdGhlciBpbml0aWFsIHByb21pc2UuIEFsbCB0aGUgZXhwbGljaXQgZGVwZW5kZW5jaWVzXG4gICBhcmUgY3JlYXRlZCBieSBMd3QncyBvd24gc2VxdWVudGlhbCBhbmQgY29uY3VycmVudCBjb21wb3NpdGlvbiBmdW5jdGlvbnNcbiAgIChzbywgW0x3dC5iaW5kXSwgW0x3dC5qb2luXSwgZXRjKS4gV2hldGhlciBkZXBlbmRlbmNpZXMgYXJlIGV4cGxpY2l0IG9yIG5vdFxuICAgaXMgcmVsZXZhbnQgb25seSB0byBjYW5jZWxsYXRpb24uXG5cblxuICAgNS4gQ2FuY2VsbGF0aW9uXG5cbiAgIEFzIGRlc2NyaWJlZCBhYm92ZSwgb3JkaW5hcnkgcHJvbWlzZSByZXNvbHV0aW9uIHByb2NlZWRzIGZyb20gYW4gaW5pdGlhbFxuICAgcHJvbWlzZSwgZm9yd2FyZCBhbG9uZyBjYWxsYmFja3MgdGhyb3VnaCB0aGUgZGVwZW5kZW5jeSBncmFwaC4gU2luY2UgaXRcbiAgIHN0YXJ0cyBmcm9tIGFuIGluaXRpYWwgcHJvbWlzZSwgaXQgY2FuIG9ubHkgYmUgdHJpZ2dlcmVkIHVzaW5nIGEgcmVzb2x2ZXIuXG5cbiAgIENhbmNlbGxhdGlvbiBpcyBhIHNvcnQgb2YgZHVhbCB0byBvcmRpbmFyeSByZXNvbHV0aW9uLiBJbnN0ZWFkIG9mIHN0YXJ0aW5nIGF0XG4gICBhbiBpbml0aWFsIHByb21pc2UvcmVzb2x2ZXIsIGNhbmNlbGxhdGlvbiBzdGFydHMgYXQgKmFueSogcHJvbWlzZS4gSXQgdGhlblxuICAgZ29lcyAqYmFja3dhcmRzKiB0aHJvdWdoIHRoZSBleHBsaWNpdCBkZXBlbmRlbmN5IGdyYXBoLCBsb29raW5nIGZvclxuICAgY2FuY2VsYWJsZSBpbml0aWFsIHByb21pc2VzIHRvIGNhbmNlbCAtLSB0aG9zZSB0aGF0IHdlcmUgY3JlYXRlZCBieVxuICAgW0x3dC50YXNrXS4gQWZ0ZXIgZmluZGluZyB0aGVtLCBjYW5jZWxsYXRpb24gcmVzb2x2ZXMgdGhlbSBub3JtYWxseSB3aXRoXG4gICBbUmVqZWN0ZWQgTHd0LkNhbmNlbGVkXSwgY2F1c2luZyBhbiBvcmRpbmFyeSBwcm9taXNlIHJlc29sdXRpb24gcHJvY2Vzcy5cblxuICAgVG8gc3VtbWFyaXplLCBjYW5jZWxsYXRpb24gaXMgYSB3YXkgdG8gdHJpZ2dlciBhbiAqb3JkaW5hcnkqIHJlc29sdXRpb24gb2ZcbiAgIHByb21pc2VzIGNyZWF0ZWQgd2l0aCBbTHd0LnRhc2tdLCBieSBmaXJzdCBzZWFyY2hpbmcgZm9yIHRoZW0gaW4gdGhlIHByb21pc2VcbiAgIGRlcGVuZGVuY3kgZ3JhcGggKHdoaWNoIGlzIGFzc2VtYmxlZCBieSBbTHd0LmJpbmRdLCBbTHd0LmpvaW5dLCBldGMpLlxuXG4gICBUaGlzIGJhY2t3YXJkcyBzZWFyY2ggaXMgdHJpZ2dlcmVkIG9ubHkgYnkgW0x3dC5jYW5jZWxdLiBJdCBpcyBhbHNvIHBvc3NpYmxlXG4gICBmb3IgdGhlIHVzZXIgdG8gY2FuY2VsIGEgcHJvbWlzZSBkaXJlY3RseSBieSByZWplY3RpbmcgaXQgd2l0aFxuICAgW0x3dC5DYW5jZWxlZF0sIGJ1dCBpbiBhbGwgY2FzZXMgd2hlcmUgdGhlIHVzZXIgY2FuIGRvIHNvLCB0aGUgc2VhcmNoIHdvdWxkXG4gICBiZSByZWR1bmRhbnQgYW55d2F5IC0tIHRoZSB1c2VyIGhhcyBvbmx5IHR3byB3YXlzIG9mIGRpcmVjdGx5IHJlamVjdGluZyBhXG4gICBwcm9taXNlIHdpdGggW0x3dC5DYW5jZWxlZF0gKG9yIGFueSBleGNlcHRpb24sIGZvciB0aGF0IG1hdHRlcik6XG5cbiAgIC0gVGhlIHVzZXIgY2FuIGNyZWF0ZSBhbiBpbml0aWFsIHByb21pc2UsIHRoZW4gcmVqZWN0IGl0IHRocm91Z2ggaXRzXG4gICAgIHJlc29sdmVyLiBUaGUgc2VhcmNoIGlzIHJlZHVuZGFudCBiZWNhdXNlIGl0IHdvdWxkIGZpbmQgb25seSB0aGUgc2FtZVxuICAgICBpbml0aWFsIHByb21pc2UgdG8gY2FuY2VsLlxuICAgLSBUaGUgdXNlciBjYW4gY3JlYXRlIGEgdHJpdmlhbCBwcm9taXNlIGJ5IGNhbGxpbmcgW0x3dC5mYWlsIEx3dC5DYW5jZWxlZF0uXG4gICAgIFRoZSBzZWFyY2ggaXMgYWdhaW4gcmVkdW5kYW50OyBpbiB0aGlzIGNhc2UgaXQgd291bGQgZmluZCBub3RoaW5nIHRvXG4gICAgIGNhbmNlbC5cblxuICAgTm90ZSB0aGF0IHRoZXJlIGlzIGEgcXVpcms6IG9ubHkgcHJvbWlzZXMgY3JlYXRlZCBieSBbTHd0LnRhc2tdIGFyZVxuICAgc3VzY2VwdGlibGUgdG8gYmVpbmcgY2FuY2VsZWQgYnkgW0x3dC5jYW5jZWxdLCBidXQgdGhlIHVzZXIgY2FuIG1hbnVhbGx5XG4gICBjYW5jZWwgaW5pdGlhbCBwcm9taXNlcyBjcmVhdGVkIGJ5IGJvdGggW0x3dC50YXNrXSBhbmQgW0x3dC53YWl0XS5cblxuICAgRHVlIHRvIFtMd3QuY2FuY2VsXSwgcHJvbWlzZSBjYW5jZWxsYXRpb24sIGFuZCB0aGVyZWZvcmUgcmVzb2x1dGlvbiwgY2FuIGJlXG4gICBpbml0aWF0ZWQgYnkgdGhlIHVzZXIgd2l0aG91dCBhY2Nlc3MgdG8gYSByZXNvbHZlci4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yXG4gICByZWFzb25pbmcgYWJvdXQgc3RhdGUgY2hhbmdlcyBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgTHd0LCBhbmQgaXMgcmVmZXJlbmNlZFxuICAgaW4gc29tZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgY29tbWVudHMuXG5cblxuICAgNi4gTm8gSS9PXG5cbiAgIFRoZSBMd3QgY29yZSBkZWxpYmVyYXRlbHkgZG9lc24ndCBkbyBJL08uIFRoZSByZXNvbHV0aW9uIGxvb3Agc3RvcHMgcnVubmluZ1xuICAgb25jZSBubyBwcm9taXNlcyBjYW4gYmUgcmVzb2x2ZWQgaW1tZWRpYXRlbHkuIEl0IGhhcyB0byBiZSByZXN0YXJ0ZWQgbGF0ZXJcbiAgIGJ5IHNvbWUgc3Vycm91bmRpbmcgSS9PIGxvb3AuIFRoaXMgSS9PIGxvb3AgdHlwaWNhbGx5IGtlZXBzIHRyYWNrIG9mIHBlbmRpbmdcbiAgIHByb21pc2VzIHRoYXQgcmVwcmVzZW50IGJsb2NrZWQgb3IgaW4tcHJvZ3Jlc3MgSS9POyBvdGhlciBwZW5kaW5nIHByb21pc2VzXG4gICB0aGF0IGluZGlyZWN0bHkgZGVwZW5kIG9uIEkvTyBhcmUgbm90IGV4cGxpY2l0bHkgdHJhY2tlZC4gVGhleSBhcmUgcmV0YWluZWRcbiAgIGluIG1lbW9yeSBieSByZWZlcmVuY2VzIGNhcHR1cmVkIGluc2lkZSBjYWxsYmFja3MuXG5cbiAgIE9uIFVuaXggYW5kIFdpbmRvd3MsIGEgc2VwYXJhdGUgdG9wLWxldmVsIGxvb3AsIHR5cGljYWxseSBbTHd0X21haW4ucnVuXSwgaXNcbiAgIG5lY2Vzc2FyeSB0byByZXBlYXRlZGx5IGNhbGwgW3NlbGVjdF0sIFtlcG9sbF0sIG9yIFtrZXZlbnRdLCBhbmQgcmVzb2x2ZVxuICAgYmxvY2tlZCBJL08gcHJvbWlzZXMuXG5cbiAgIEluIEphdmFTY3JpcHQsIHJlZmVyZW5jZXMgdG8gcHJvbWlzZXMgYXJlIHJldGFpbmVkIGJ5IEphdmFTY3JpcHQgY29kZSwgd2hpY2hcbiAgIGlzLCBpbiB0dXJuLCB0cmlnZ2VyZWQgYnkgdGhlIEpTIGVuZ2luZS4gSW4gb3RoZXIgd29yZHMsIHRoZSB0b3AtbGV2ZWwgbG9vcFxuICAgaXMgYnVyaWVkIGluc2lkZSB0aGUgSlMgZW5naW5lLlxuXG4gICBUaGlzIHNlcGFyYXRpb24gb2YgdGhlIEx3dCBjb3JlIGZyb20gdGhlIHRvcC1sZXZlbCBJL08gbG9vcCBrZWVwcyB0aGUgY29yZVxuICAgcG9ydGFibGUuXG5cblxuICAgNy4gUHJvbWlzZSBcInByb3h5aW5nXCJcblxuICAgSW4gW0x3dC5iaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdF0sIHRoZSBvdXRlciBbJ2IgdF0gaXMgY3JlYXRlZCBieVxuICAgW2JpbmRdIGZpcnN0LCBhbmQgcmV0dXJuZWQgdG8gdGhlIHVzZXIuIFRoZSBpbm5lciBbJ2IgdF0gaXMgY3JlYXRlZCBieSB0aGVcbiAgIHVzZXIgbGF0ZXIsIGFuZCB0aGVuIHJldHVybmVkIHRvIFtiaW5kXS4gQXQgdGhhdCBwb2ludCwgW2JpbmRdIG5lZWRzIHRvIG1ha2VcbiAgIHRoZSBpbm5lciBhbmQgb3V0ZXIgWydiIHRdcyBiZWhhdmUgaWRlbnRpY2FsbHkuXG5cbiAgIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IG1ha2luZyBvbmUgb2YgdGhlIHByb21pc2VzIHBvaW50IHRvIHRoZSBvdGhlci4gVGhlXG4gICBmaXJzdCBvZiB0aGUgcHJvbWlzZXMgdGh1cyBiZWNvbWVzIGEgXCJwcm94eSxcIiBhbmQgdGhlIG90aGVyIGlzIGl0c1xuICAgXCJ1bmRlcmx5aW5nXCIgcHJvbWlzZS5cblxuICAgQWZ0ZXIgdGhhdCwgYWxsIG9wZXJhdGlvbnMgdGhhdCB3b3VsZCBiZSBwZXJmb3JtZWQgYnkgTHd0IG9uIHRoZSBwcm94eSBhcmVcbiAgIGluc3RlYWQgcGVyZm9ybWVkIG9uIHRoZSB1bmRlcmx5aW5nIHByb21pc2UuIFRoaXMgaXMgZW5zdXJlZCBieSB0aGUgbnVtZXJvdXNcbiAgIGNhbGxzIHRvIHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBbdW5kZXJseWluZ10gaW4gdGhpcyBmaWxlLlxuXG4gICBCZWNhdXNlIG9mIHRoZSBwZXJ2YXNpdmUgdXNlIG9mIFt1bmRlcmx5aW5nXSwgcHJveGllcyBjYW4gYmUgbW9yZSBvciBsZXNzXG4gICBpZ25vcmVkIG9uIGEgZmlyc3QgcmVhZGluZyB0aGUgY29kZS4gSG93ZXZlciwgYmVjb21pbmcgYSBwcm94eSBpcyBhIGtpbmQgb2ZcbiAgIHN0YXRlIGNoYW5nZSwgYW5kIGFueSBwcm9taXNlIHRoYXQgaXMgcmV0dXJuZWQgYnkgYSBjYWxsYmFjayB0byBbYmluZF0sIG9yIHRvXG4gICBhIHNpbWlsYXIgTHd0IGZ1bmN0aW9uLCBtaWdodCBiZWNvbWUgYSBwcm94eS4gVGhhdCBtZWFuczoganVzdCBhYm91dCBhbnlcbiAgIHByb21pc2UgdGhhdCBpcyBoYW5kZWQgdG8gdGhlIHVzZXIsIG1pZ2h0IGJlY29tZSBhIHByb3h5IHByb21pc2UgYnkgdGhlIG5leHRcbiAgIHRpbWUgTHd0IHNlZXMgaXQuIFRoaXMgaXMgaW1wb3J0YW50IGZvciByZWFzb25pbmcgYWJvdXQgcG9zc2libGUgc3RhdGVcbiAgIGNoYW5nZXMgaW4gaW1wbGVtZW50YXRpb24gb2YgTHd0LCBhbmQgaXMgcmVmZXJlbmNlZCBpbiBzb21lIGltcGxlbWVudGF0aW9uXG4gICBkZXRhaWwgY29tbWVudHMuXG5cblxuICAgOC4gU2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlXG5cbiAgIEx3dCBoYXMgYSBnbG9iYWwga2V5LXZhbHVlIG1hcC4gVGhlIG1hcCBjYW4gYmUgcHJlc2VydmVkIGFjcm9zcyBzZXF1ZW50aWFsXG4gICBjb21wb3NpdGlvbiBmdW5jdGlvbnMsIHNvIHRoYXQgaXQgaGFzIHRoZSBzYW1lIHN0YXRlIGluIHRoZSB1c2VyJ3MgY2FsbGJhY2tcbiAgIFtmXSBhcyBpdCBkaWQgYXQgdGhlIHRpbWUgdGhlIHVzZXIgY2FsbGVkIFtMd3QuYmluZCBwIGZdLlxuXG4gICBUaGUgZGV0YWlscyBhcmUgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYW5kIGRpc2N1c3NlZCBpbiBtb2R1bGVcbiAgIFtTZXF1ZW5jZV9hc3NvY2lhdGVkX3N0b3JhZ2VdLiBUaGUgbWFpbiB0aGluZyB0byBiZSBhd2FyZSBvZiBpcyB0aGUgbWFueVxuICAgcmVmZXJlbmNlcyB0byBbY3VycmVudF9zdG9yYWdlXSB0aHJvdWdob3V0IEx3dCwgd2hpY2ggYXJlIG5lZWRlZCB0byBwcm9wZXJseVxuICAgc2F2ZSBhbmQgcmVzdG9yZSB0aGUgbWFwcGluZy5cblxuXG4gICA5LiBUeXBlIHN5c3RlbSBhYnVzZVxuXG4gICBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyB0aGUgdHlwZSBzeXN0ZW0gc29tZXdoYXQgZXh0ZW5zaXZlbHkuIEdlbnRsZVxuICAgaW50cm9kdWN0aW9ucyBjYW4gYmUgZm91bmQgaGVyZTpcblxuICAgICBodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvMTYxLzdcbiAgICAgaHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90LzE2MS8xNlxuXG4gICBBIHNob3J0IHN1bW1hcnkgZm9sbG93cy5cblxuICAgVGhlIHByb21pc2Ugc3RhdGUgaXMsIGludGVybmFsbHksIGEgR0FEVCB3aGljaCBlbmNvZGVzIHRoZSBzdGF0ZSBpbiBpdHMgdHlwZVxuICAgcGFyYW1ldGVycy4gVGh1cywgaWYgeW91IGRvIFtsZXQgcCA9IHVuZGVybHlpbmcgcF0sIHRoZSBzaGFkb3dpbmcgcmVmZXJlbmNlXG4gICBbcF0gaXMgc3RhdGljYWxseSBrbm93biAqbm90KiB0byBiZSBhIHByb3h5LCBhbmQgdGhlIGNvbXBpbGVyIGtub3dzIHRoYXQgdGhlXG4gICBjb3JyZXNwb25kaW5nIG1hdGNoIGNhc2UgW1Byb3h5IF9dIGlzIGltcG9zc2libGUuXG5cbiAgIFRoZSBleHRlcm5hbCBwcm9taXNlIHR5cGUsIFsnYSB0XSwgYW5kIHRoZSBleHRlcm5hbCByZXNvbHZlciB0eXBlLCBbJ2EgdV0sXG4gICBhcmUgbm90IEdBRFRzLiBGdXJ0aGVybW9yZSwgdGhleSBhcmUsIHJlc3BlY3RpdmVseSwgY292YXJpYW50IGFuZFxuICAgY29udHJhdmFyaWFudCBpbiBbJ2FdLCB3aGlsZSB0aGUgaW50ZXJuYWwgcHJvbWlzZSB0eXBlIGlzIGludmFyaWFudCBpbiBbJ2FdLlxuICAgRm9yIHRoZXNlIHJlYXNvbnMsIHRoZXJlIGFyZSBuYXN0eSBjYXN0cyBiZXR3ZWVuIFsnYSB0XSwgWydhIHVdLCBhbmQgdGhlXG4gICBpbnRlcm5hbCBwcm9taXNlIHR5cGUuIFRoZSBpbXBsZW1lbnRhdGlvbiBpcywgb2YgY291cnNlLCB3cml0dGVuIGluIHRlcm1zIG9mXG4gICB0aGUgaW50ZXJuYWwgdHlwZS5cblxuICAgQ2FzdGluZyBmcm9tIGFuIFsnYSB0XSB0byBhbiBpbnRlcm5hbCBwcm9taXNlIHByb2R1Y2VzIGEgcmVmZXJlbmNlIGZvclxuICAgd2hpY2ggdGhlIHN0YXRlIGlzIFwidW5rbm93blwiOiB0aGlzIGlzIHNpbXVsYXRlZCB3aXRoIGEgaGVscGVyIEdBRFQsIHdoaWNoXG4gICBlbmNvZGVzIGV4aXN0ZW50aWFsIHR5cGVzLiBUaGVyZSBhcmUgc2V2ZXJhbCBzaW1pbGFyIGNhc3RzLCB3aGljaCBhcmUgdXNlZFxuICAgdG8gZG9jdW1lbnQgcG9zc2libGUgc3RhdGUgY2hhbmdlcyBiZXR3ZWVuIHRoZSB0aW1lIGEgcHJvbWlzZSBpcyBjcmVhdGVkLFxuICAgYW5kIHRoZSBsYXRlciB0aW1lIGl0IGlzIHVzZWQgaW4gYSBjYWxsYmFjay4gWW91IGNhbiBzZWUgdGhlc2UgY2FzdHMgaW5cbiAgIGFjdGlvbiBpbiBbTHd0LmJpbmRdLiBUaGUgY2FzdCBzeW50YXggaXMgcHJldHR5IGxpZ2h0LCBhbmQsIGJlc2lkZXMgYmVpbmdcbiAgIGNvbW1lbnRlZCBpbiBbYmluZF0sIGFsbCBzdWNoIGNhc3RzIGFyZSBkb2N1bWVudGVkIGluIG1vZHVsZXMgW1B1YmxpY190eXBlc11cbiAgIGFuZCBbQmFzaWNfaGVscGVyc10uXG5cblxuICAgSWYgeW91J3ZlIG1hZGUgaXQgdGhpcyBmYXIsIHlvdSBhcmUgYW4gTHd0IGV4cGVydCEgUmVqb2ljZSEgKilcblxuXG5cbigqIFtMd3Rfc2VxdWVuY2VdIGlzIGRlcHJlY2F0ZWQg4oCTIHdlIGRvbid0IHdhbnQgdXNlcnMgb3V0c2lkZSBMd3QgdXNpbmcgaXQuXG4gICBIb3dldmVyLCBpdCBpcyBzdGlsbCB1c2VkIGludGVybmFsbHkgYnkgTHd0LiBTbywgYnJpZWZseSBkaXNhYmxlIHdhcm5pbmcgM1xuICAgKFwiZGVwcmVjYXRlZFwiKSwgYW5kIGNyZWF0ZSBhIGxvY2FsLCBub24tZGVwcmVjYXRlZCBhbGlhcyBmb3JcbiAgIFtMd3Rfc2VxdWVuY2VdIHRoYXQgY2FuIGJlIHJlZmVycmVkIHRvIGJ5IHRoZSByZXN0IG9mIHRoZSBjb2RlIGluIHRoaXNcbiAgIG1vZHVsZSB3aXRob3V0IHRyaWdnZXJpbmcgYW55IG1vcmUgd2FybmluZ3MuICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5tb2R1bGUgTHd0X3NlcXVlbmNlID0gTHd0X3NlcXVlbmNlXG5bQEBAb2NhbWwud2FybmluZyBcIiszXCJdXG5cbigqIFNvbWUgc2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlIHR5cGVzXG5cbiAgIFNlcXVlbmNlLWFzc29jaWF0ZWQgc3RvcmFnZSBpcyBkZWZpbmVkIGFuZCBkb2N1bWVudGVkIGxhdGVyLCBpbiBtb2R1bGVcbiAgIFtTZXF1ZW5jZV9hc3NvY2lhdGVkX3N0b3JhZ2VdLiBIb3dldmVyLCB0aGUgZm9sbG93aW5nIHR5cGVzIGFyZSBtZW50aW9uZWQgaW5cbiAgIHRoZSBkZWZpbml0aW9uIG9mIFtwcm9taXNlXSwgc28gdGhleSBtdXN0IGJlIGRlZmluZWQgaGVyZSBmaXJzdC4gKilcbm1vZHVsZSBTdG9yYWdlX21hcCA9XG4gIE1hcC5NYWtlXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50XG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBlbmQpXG50eXBlIHN0b3JhZ2UgPSAodW5pdCAtPiB1bml0KSBTdG9yYWdlX21hcC50XG5cblxuXG5tb2R1bGUgTWFpbl9pbnRlcm5hbF90eXBlcyA9XG5zdHJ1Y3RcbiAgKCogUGhhbnRvbSB0eXBlcyBmb3IgdXNlIHdpdGggdHlwZXMgW3Byb21pc2VdIGFuZCBbc3RhdGVdLiBUaGVzZSBhcmUgbmV2ZXJcbiAgICAgY29uc3RydWN0ZWQ7IHRoZSBwdXJwb3NlIG9mIHRoZSBjb25zdHJ1Y3RvcnMgaXMgdG8gcHJvdmUgdG8gdGhlIHR5cGVcbiAgICAgY2hlY2tlciB0aGF0IHRoZXNlIHR5cGVzIGFyZSBkaXN0aW5jdCBmcm9tIGVhY2ggb3RoZXIuIFdhcm5pbmcgMzcsIFwidW51c2VkXG4gICAgIGNvbnN0cnVjdG9yLFwiIHRoZXJlZm9yZSBoYXMgdG8gYmUgdGVtcG9yYXJpbHkgc3VwcHJlc3NlZC4gKilcblxuICBbQEBAb2NhbWwud2FybmluZyBcIi0zN1wiXVxuXG4gIHR5cGUgdW5kZXJseWluZyA9IHByaXZhdGUgVW5kZXJseWluZ19hbmRfdGhpc19jb25zdHJ1Y3Rvcl9pc19ub3RfdXNlZFxuICB0eXBlIHByb3h5ID0gcHJpdmF0ZSBQcm94eV9hbmRfdGhpc19jb25zdHJ1Y3Rvcl9pc19ub3RfdXNlZFxuXG4gIHR5cGUgcmVzb2x2ZWQgPSBwcml2YXRlIFJlc29sdmVkX2FuZF90aGlzX2NvbnN0cnVjdG9yX2lzX25vdF91c2VkXG4gIHR5cGUgcGVuZGluZyA9IHByaXZhdGUgUGVuZGluZ19hbmRfdGhpc19jb25zdHJ1Y3Rvcl9pc19ub3RfdXNlZFxuXG4gIFtAQEBvY2FtbC53YXJuaW5nIFwiKzM3XCJdXG5cblxuXG4gICgqIFByb21pc2VzIHByb3Blci4gKilcblxuICB0eXBlICgnYSwgJ3UsICdjKSBwcm9taXNlID0ge1xuICAgIG11dGFibGUgc3RhdGUgOiAoJ2EsICd1LCAnYykgc3RhdGU7XG4gIH1cblxuICBhbmQgKF8sIF8sIF8pIHN0YXRlID1cbiAgICB8IEZ1bGZpbGxlZCA6ICdhICAgICAgICAgICAgICAgICAgLT4gKCdhLCB1bmRlcmx5aW5nLCByZXNvbHZlZCkgc3RhdGVcbiAgICB8IFJlamVjdGVkICA6IGV4biAgICAgICAgICAgICAgICAgLT4gKCBfLCB1bmRlcmx5aW5nLCByZXNvbHZlZCkgc3RhdGVcbiAgICB8IFBlbmRpbmcgICA6ICdhIGNhbGxiYWNrcyAgICAgICAgLT4gKCdhLCB1bmRlcmx5aW5nLCBwZW5kaW5nKSAgc3RhdGVcbiAgICB8IFByb3h5ICAgICA6ICgnYSwgXywgJ2MpIHByb21pc2UgLT4gKCdhLCBwcm94eSwgICAgICAnYykgICAgICAgc3RhdGVcblxuICAoKiBOb3RlOlxuXG4gICAgIEEgcHJvbWlzZSB3aG9zZSBzdGF0ZSBpcyBbUHJveHkgX10gaXMgYSBcInByb3h5XCIgcHJvbWlzZS4gQSBwcm9taXNlIHdob3NlXG4gICAgIHN0YXRlIGlzICpub3QqIFtQcm94eSBfXSBpcyBhbiBcInVuZGVybHlpbmdcIiBwcm9taXNlLlxuXG4gICAgIFRoZSBcInVuZGVybHlpbmcgcHJvbWlzZSBvZiBbcF1cIiBpczpcblxuICAgICAtIFtwXSwgaWYgW3BdIGlzIGl0c2VsZiB1bmRlcmx5aW5nLlxuICAgICAtIE90aGVyd2lzZSwgW3BdIGlzIGEgcHJveHkgYW5kIGhhcyBzdGF0ZSBbUHJveHkgcCddLiBUaGUgdW5kZXJseWluZ1xuICAgICAgIHByb21pc2Ugb2YgW3BdIGlzIHRoZSB1bmRlcmx5aW5nIHByb21pc2Ugb2YgW3AnXS5cblxuICAgICBJbiBvdGhlciB3b3JkcywgdG8gZmluZCB0aGUgdW5kZXJseWluZyBwcm9taXNlIG9mIGEgcHJveHksIEx3dCBmb2xsb3dzIHRoZVxuICAgICBbUHJveHkgX10gbGlua3MgdG8gdGhlIGVuZC4gKilcblxuICAoKiBOb3RlOlxuXG4gICAgIFdoZW4gYSBwcm9taXNlIGlzIHJlc29sdmVkLCBvciBiZWNvbWVzIGEgcHJveHksIGl0cyBzdGF0ZSBmaWVsZCBpc1xuICAgICBtdXRhdGVkLiBUaGlzIGludmFsaWRhdGVzIHRoZSB0eXBlIGludmFyaWFudHMgb24gdGhlIHByb21pc2UuIFNlZSBpbnRlcm5hbFxuICAgICBmdW5jdGlvbiBbc2V0X3Byb21pc2Vfc3RhdGVdIGZvciBkZXRhaWxzIGFib3V0IHRoYXQuXG5cbiAgICAgV2hlbiBhbiBMd3QgZnVuY3Rpb24gaGFzIGEgcmVmZXJlbmNlIHRvIGEgcHJvbWlzZSwgYW5kIGFsc28gcmVnaXN0ZXJzIGFcbiAgICAgY2FsbGJhY2sgdGhhdCBoYXMgYSByZWZlcmVuY2UgdG8gdGhlIHNhbWUgcHJvbWlzZSwgdGhlIGludmFyaWFudHMgb24gdGhlXG4gICAgIHJlZmVyZW5jZSBtYXkgYmVjb21lIGludmFsaWQgYnkgdGhlIHRpbWUgdGhlIGNhbGxiYWNrIGlzIGNhbGxlZC4gQWxsIHN1Y2hcbiAgICAgY2FsbGJhY2tzIGhhdmUgY29tbWVudHMgZXhwbGFpbmluZyB3aGF0IHRoZSB2YWxpZCBpbnZhcmlhbnRzIGFyZSBhdCB0aGF0XG4gICAgIHBvaW50LCBhbmQvb3IgY2FzdHMgdG8gKDEpIGdldCB0aGUgY29ycmVjdCB0eXBpbmcgYW5kICgyKSBkb2N1bWVudCB0aGVcbiAgICAgcG90ZW50aWFsIHN0YXRlIGNoYW5nZSBmb3IgcmVhZGVycyBvZiB0aGUgY29kZS4gKilcblxuXG5cbiAgKCogQ2FsbGJhY2sgaW5mb3JtYXRpb24gZm9yIHBlbmRpbmcgcHJvbWlzZXMuICopXG5cbiAgYW5kICdhIGNhbGxiYWNrcyA9IHtcbiAgICBtdXRhYmxlIHJlZ3VsYXJfY2FsbGJhY2tzIDogJ2EgcmVndWxhcl9jYWxsYmFja19saXN0O1xuICAgIG11dGFibGUgY2FuY2VsX2NhbGxiYWNrcyAgOiAnYSBjYW5jZWxfY2FsbGJhY2tfbGlzdDtcbiAgICBtdXRhYmxlIGhvd190b19jYW5jZWwgICAgIDogaG93X3RvX2NhbmNlbDtcbiAgICBtdXRhYmxlIGNsZWFudXBzX2RlZmVycmVkIDogaW50O1xuICB9XG5cbiAgYW5kICdhIHJlZ3VsYXJfY2FsbGJhY2sgPSAnYSByZXNvbHZlZF9zdGF0ZSAtPiB1bml0XG5cbiAgYW5kIGNhbmNlbF9jYWxsYmFjayA9IHVuaXQgLT4gdW5pdFxuXG4gIGFuZCAnYSByZXNvbHZlZF9zdGF0ZSA9ICgnYSwgdW5kZXJseWluZywgcmVzb2x2ZWQpIHN0YXRlXG5cbiAgYW5kIGhvd190b19jYW5jZWwgPVxuICAgIHwgTm90X2NhbmNlbGFibGUgICAgICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICBob3dfdG9fY2FuY2VsXG4gICAgfCBDYW5jZWxfdGhpc19wcm9taXNlICAgICAgICAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvd190b19jYW5jZWxcbiAgICB8IFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lICAgICA6IChfLCBfLCBfKSBwcm9taXNlICAgICAgLT4gaG93X3RvX2NhbmNlbFxuICAgIHwgUHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIDogKF8sIF8sIF8pIHByb21pc2UgbGlzdCAtPiBob3dfdG9fY2FuY2VsXG5cbiAgYW5kICdhIHJlZ3VsYXJfY2FsbGJhY2tfbGlzdCA9XG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHlcbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9jb25jYXQgb2ZcbiAgICAgICdhIHJlZ3VsYXJfY2FsbGJhY2tfbGlzdCAqICdhIHJlZ3VsYXJfY2FsbGJhY2tfbGlzdFxuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBvZlxuICAgICAgJ2EgcmVndWxhcl9jYWxsYmFja1xuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrIG9mXG4gICAgICAnYSByZWd1bGFyX2NhbGxiYWNrIG9wdGlvbiByZWZcblxuICBhbmQgXyBjYW5jZWxfY2FsbGJhY2tfbGlzdCA9XG4gICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9lbXB0eSA6XG4gICAgICBfIGNhbmNlbF9jYWxsYmFja19saXN0XG4gICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jb25jYXQgOlxuICAgICAgJ2EgY2FuY2VsX2NhbGxiYWNrX2xpc3QgKiAnYSBjYW5jZWxfY2FsbGJhY2tfbGlzdCAtPlxuICAgICAgICAnYSBjYW5jZWxfY2FsbGJhY2tfbGlzdFxuICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY2FsbGJhY2sgOlxuICAgICAgc3RvcmFnZSAqIGNhbmNlbF9jYWxsYmFjayAtPlxuICAgICAgICBfIGNhbmNlbF9jYWxsYmFja19saXN0XG4gICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9yZW1vdmVfc2VxdWVuY2Vfbm9kZSA6XG4gICAgICAoJ2EsIF8sIF8pIHByb21pc2UgTHd0X3NlcXVlbmNlLm5vZGUgLT5cbiAgICAgICAgJ2EgY2FuY2VsX2NhbGxiYWNrX2xpc3RcblxuICAoKiBOb3RlczpcblxuICAgICBUaGVzZSB0eXBlIGRlZmluaXRpb25zIGFyZSBndWlsdHkgb2YgcGVyZm9ybWluZyBzZXZlcmFsIG9wdGltaXphdGlvbnMsXG4gICAgIHdpdGhvdXQgd2hpY2ggdGhleSB3b3VsZCBiZSBtdWNoIGVhc2llciB0byB1bmRlcnN0YW5kLlxuXG4gICAgIC0gVGhlIHR5cGUgcGFyYW1ldGVycyBvZiBbJ2EgcmVzb2x2ZWRfc3RhdGVdIGd1YXJhbnRlZSB0aGF0IGl0IGlzIGVpdGhlclxuICAgICAgIFtGdWxmaWxsZWQgX10gb3IgW1JlamVjdGVkIF9dLiBTbywgaXQgaXMgZXF1aXZhbGVudCB0b1xuICAgICAgIFsoJ2EsIGV4bikgU3RkbGliLnJlc3VsdF0sIGFuZCwgaW5kZWVkLCBzaG91bGQgaGF2ZSBhbiBpZGVudGljYWxcbiAgICAgICBtZW1vcnkgcmVwcmVzZW50YXRpb24uXG5cbiAgICAgLSBBcyBwZXIgdGhlIE92ZXJ2aWV3LCB0aGVyZSBhcmUgcmVndWxhciBjYWxsYmFja3MgYW5kIGNhbmNlbCBjYWxsYmFja3MuXG4gICAgICAgQ2FuY2VsIGNhbGxiYWNrcyBhcmUgY2FsbGVkIG9ubHkgb24gY2FuY2VsbGF0aW9uLCBhbmQsIHRoZW4sIGJlZm9yZSBhbnlcbiAgICAgICByZWd1bGFyIGNhbGxiYWNrcyBhcmUgY2FsbGVkLlxuXG4gICAgICAgRGVzcGl0ZSB0aGUgZGlmZmVyZW50IHR5cGVzIGZvciB0aGUgdHdvIGtpbmRzIG9mIGNhbGxiYWNrcywgdGhleSBhcmVcbiAgICAgICBvdGhlcndpc2UgdGhlIHNhbWUuIENhbmNlbCBjYWxsYmFja3MganVzdCBkb24ndCBuZWVkIGEgcmVzdWx0IHN0YXRlXG4gICAgICAgYXJndW1lbnQsIGJlY2F1c2UgaXQgaXMga25vd24gdG8gYmUgW1JlamVjdGVkIENhbmNlbGVkXS5cblxuICAgICAtIFJlZ3VsYXIgY2FsbGJhY2tzIGFyZSBub3QgYWxsb3dlZCB0byByYWlzZSBleGNlcHRpb25zLiBBbGwgcmVndWxhclxuICAgICAgIGNhbGxiYWNrcyBhcmUgY3JlYXRlZCBpbiB0aGlzIGZpbGUsIHNvIHRoaXMgY2FuIGJlIGNoZWNrZWQuXG5cbiAgICAgICBDYW5jZWwgY2FsbGJhY2tzIGNhbiByYWlzZSBleGNlcHRpb25zLCBidXQgaWYgdGhleSBkbyBzbywgdGhlIGV4Y2VwdGlvbnNcbiAgICAgICBhcmUgcGFzc2VkIHRvIFthc3luY19leGNlcHRpb25faG9va10uXG5cbiAgICAgLSBbaG93X3RvX2NhbmNlbF0gaW1wbGVtZW50cyB0aGUgZGVwZW5kZW5jeSBncmFwaCBtZW50aW9uZWQgaW4gdGhlXG4gICAgICAgT3ZlcnZpZXcuIEl0IGlzIHRyYXZlcnNlZCBiYWNrd2FyZHMgZHVyaW5nIFtMd3QuY2FuY2VsXS4gSXQgaXMgYSBHQURUXG4gICAgICAgYmVjYXVzZSB3ZSBkb24ndCBjYXJlIGFib3V0IHRoZSBhY3R1YWwgdHlwZXMgb2YgdGhlIHByb21pc2UgcmVmZXJlbmNlc1xuICAgICAgIHN0b3JlZCwgb3IgdGhlaXIgaW52YXJpYW50cy4gVGhlIGNvbnN0cnVjdG9ycyBjb3JyZXNwb25kIHRvIHBlbmRpbmdcbiAgICAgICBwcm9taXNlIGtpbmRzIGFzIGZvbGxvd3M6XG4gICAgICAgICAtIFtOb3RfY2FuY2VsYWJsZV06IGluaXRpYWwsIFtMd3Qud2FpdF0uXG4gICAgICAgICAtIFtDYW5jZWxfdGhpc19wcm9taXNlXTogaW5pdGlhbCwgW0x3dC50YXNrXS5cbiAgICAgICAgIC0gW1Byb3BhZ2F0ZV9jYW5jZWxfdG9fb25lXTogc2VxdWVudGlhbCBjb21wb3NpdGlvbiwgZS5nLiBbTHd0LmJpbmRdLlxuICAgICAgICAgLSBbUHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsXTogY29uY3VycmVudCBjb21wb3NpdGlvbiwgZS5nLlxuICAgICAgICAgICBbTHd0LmpvaW5dLlxuXG4gICAgIC0gVGhlIHR3byBjYWxsYmFjayBsaXN0IHR5cGVzIGFyZSBvcmRpbmFyeSBhcHBlbmQtZnJpZW5kbHkgbGlzdHMsIHdpdGggdHdvXG4gICAgICAgb3B0aW1pemF0aW9ucyBpbmxpbmVkOlxuXG4gICAgICAgLSBbJ2EgcmVndWxhcl9jYWxsYmFja19saXN0XSBhcHBhcmVudGx5IGhhcyB0d28gXCJraW5kc1wiIG9mIHJlZ3VsYXJcbiAgICAgICAgIGNhbGxiYWNrcywgaW1wbGljaXRseSByZW1vdmVkIGFuZCBleHBsaWNpdGx5IHJlbW92YWJsZS4gQWxsIGNhbGxiYWNrc1xuICAgICAgICAgYXJlIHJlbW92YWJsZS4gSXQncyBqdXN0IHRoYXQsIGZvciBzb21lIGNhbGxiYWNrcywgdGhleSB3aWxsIG9ubHkgYmVcbiAgICAgICAgIHJlbW92ZWQgYXQgdGhlIHNhbWUgdGltZSB0aGF0IHRoZSBwcm9taXNlIHRoZXkgYXJlIGF0dGFjaGVkIHRvIGJlY29tZXNcbiAgICAgICAgIHJlc29sdmVkLiBXaGVuIHRoYXQgaGFwcGVucywgdGhlIGVudGlyZSBzdGF0ZSBvZiB0aGF0IHByb21pc2UgY2hhbmdlc1xuICAgICAgICAgdG8gW0Z1bGZpbGxlZCBfXSBvciBbUmVqZWN0ZWQgX10sIGFuZCB0aGUgcmVmZXJlbmNlIHRvIHRoZSB3aG9sZVxuICAgICAgICAgY2FsbGJhY2sgbGlzdCBpcyBzaW1wbHkgbG9zdC4gVGhpcyBcInJlbW92ZXNcIiB0aGUgY2FsbGJhY2suIEZvciB0aGVzZVxuICAgICAgICAgY2FsbGJhY2tzLCBbJ2EgcmVndWxhcl9jYWxsYmFja19saXN0XSBhdHRlbXB0cyB0byB0cmltIGFuIG9wdGlvbiBhbmQgYVxuICAgICAgICAgcmVmZXJlbmNlIGNlbGwgd2l0aCB0aGVcbiAgICAgICAgIFtSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrXSBjb25zdHJ1Y3Rvci5cblxuICAgICAgIC0gWydhIGNhbmNlbF9jYWxsYmFja19saXN0XSBoYXNcbiAgICAgICAgIFtDYW5jZWxfY2FsbGJhY2tfbGlzdF9yZW1vdmVfc2VxdWVuY2Vfbm9kZSBub2RlXSwgd2hpY2ggaXMgdGhlIHNhbWUgYXNcbiAgICAgICAgIFtDYW5jZWxfY2FsbGJhY2tfbGlzdF9jYWxsYmFjayAoXywgKGZ1biBfIC0+XG4gICAgICAgICAgIEx3dF9zZXF1ZW5jZS5yZW1vdmUgbm9kZSkpXS5cbiAgICAgICAgIFRoaXMgd2FzIHByb2JhYmx5IGRvbmUgdG8gYXZvaWQgYSBjbG9zdXJlIGFsbG9jYXRpb24uXG5cbiAgICAgLSBUaGUgW2NsZWFudXBzX2RlZmVycmVkXSBmaWVsZCBpcyBleHBsYWluZWQgaW4gbW9kdWxlXG4gICAgICAgW1BlbmRpbmdfY2FsbGJhY2tzXS4gKilcbmVuZFxub3BlbiBNYWluX2ludGVybmFsX3R5cGVzXG5cblxuXG5tb2R1bGUgUHVibGljX3R5cGVzID1cbnN0cnVjdFxuICB0eXBlICsnYSB0XG4gIHR5cGUgLSdhIHVcblxuICBsZXQgdG9fcHVibGljX3Byb21pc2UgOiAoJ2EsIF8sIF8pIHByb21pc2UgLT4gJ2EgdCA9IE9iai5tYWdpY1xuICBsZXQgdG9fcHVibGljX3Jlc29sdmVyIDogKCdhLCBfLCBfKSBwcm9taXNlIC0+ICdhIHUgPSBPYmoubWFnaWNcblxuICB0eXBlIF8gcGFja2VkX3Byb21pc2UgPVxuICAgIHwgSW50ZXJuYWwgOiAoJ2EsIF8sIF8pIHByb21pc2UgLT4gJ2EgcGFja2VkX3Byb21pc2VcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuXG4gIGxldCB0b19pbnRlcm5hbF9wcm9taXNlIChwIDogJ2EgdCkgOiAnYSBwYWNrZWRfcHJvbWlzZSA9XG4gICAgSW50ZXJuYWwgKE9iai5tYWdpYyBwKVxuICBsZXQgdG9faW50ZXJuYWxfcmVzb2x2ZXIgKHIgOiAnYSB1KSA6ICdhIHBhY2tlZF9wcm9taXNlID1cbiAgICBJbnRlcm5hbCAoT2JqLm1hZ2ljIHIpXG5cbiAgKCogTW9zdCBmdW5jdGlvbnMgdGhhdCB0YWtlIGEgcHVibGljIHByb21pc2UgKFsnYSB0XSkgY29udmVydCBpdCB0byBhblxuICAgICBpbnRlcm5hbCBwcm9taXNlIGFzIGZvbGxvd3M6XG5cbiAgICAgICAoKiBwIDogJ2EgdCAqKVxuXG4gICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cblxuICAgICAgICgqIHAgOiAoJ2EsIHUsIGMpIHByb21pc2UsIHdoZXJlIHUgYW5kIGMgYXJlIGZyZXNoIHR5cGVzLCBpLmUuIHRoZVxuICAgICAgICAgIGludmFyaWFudHMgb24gcCBhcmUgdW5rbm93bi4gKilcblxuICAgICBUaGlzIGNhc3QgaXMgYSBuby1vcCBjYXN0LiBJdCBvbmx5IHByb2R1Y2VzIGEgcmVmZXJlbmNlIHdpdGggYSBkaWZmZXJlbnRcbiAgICAgdHlwZS4gVGhlIGludHJvZHVjdGlvbiBhbmQgaW1tZWRpYXRlIGVsaW1pbmF0aW9uIG9mIFtJbnRlcm5hbCBfXSBzZWVtcyB0b1xuICAgICBiZSBvcHRpbWl6ZWQgYXdheSBldmVuIG9uIG9sZGVyIHZlcnNpb25zIG9mIE9DYW1sIHRoYXQgZG9uJ3QgaGF2ZSBGbGFtYmRhXG4gICAgIGFuZCBkb24ndCBzdXBwb3J0IFtbQEBvY2FtbC51bmJveGVkXV0uICopXG5cbiAgKCogVGhpcyBjb3VsZCBwcm9iYWJseSBzYXZlIGFuIGFsbG9jYXRpb24gYnkgdXNpbmcgW09iai5tYWdpY10uICopXG4gIGxldCBzdGF0ZV9vZl9yZXN1bHQgPSBmdW5jdGlvblxuICAgIHwgT2sgeCAtPiBGdWxmaWxsZWQgeFxuICAgIHwgRXJyb3IgZXhuIC0+IFJlamVjdGVkIGV4blxuZW5kXG5pbmNsdWRlIFB1YmxpY190eXBlc1xuXG5cblxubW9kdWxlIEJhc2ljX2hlbHBlcnMgOlxuc2lnXG4gIHZhbCBpZGVudGljYWwgOiAoJ2EsIF8sIF8pIHByb21pc2UgLT4gKCdhLCBfLCBfKSBwcm9taXNlIC0+IGJvb2xcbiAgdmFsIHVuZGVybHlpbmcgOiAoJ2EsICd1LCAnYykgcHJvbWlzZSAtPiAoJ2EsIHVuZGVybHlpbmcsICdjKSBwcm9taXNlXG5cbiAgdHlwZSAoJ2EsICd1LCAnYykgc3RhdGVfY2hhbmdlZCA9XG4gICAgfCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIG9mICgnYSwgJ3UsICdjKSBwcm9taXNlXG4gICAgW0BAb2NhbWwudW5ib3hlZF1cbiAgdmFsIHNldF9wcm9taXNlX3N0YXRlIDpcbiAgICAoJ2EsIF8sIF8pIHByb21pc2UgLT4gKCdhLCAndSwgJ2MpIHN0YXRlIC0+ICgnYSwgJ3UsICdjKSBzdGF0ZV9jaGFuZ2VkXG5cbiAgdHlwZSAnYSBtYXlfbm93X2JlX3Byb3h5ID1cbiAgICB8IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSA6XG4gICAgICAoJ2EsIF8sIHBlbmRpbmcpIHByb21pc2UgLT4gJ2EgbWF5X25vd19iZV9wcm94eVxuICAgIFtAQG9jYW1sLnVuYm94ZWRdXG4gIHZhbCBtYXlfbm93X2JlX3Byb3h5IDpcbiAgICAoJ2EsIHVuZGVybHlpbmcsIHBlbmRpbmcpIHByb21pc2UgLT4gJ2EgbWF5X25vd19iZV9wcm94eVxuZW5kID1cbnN0cnVjdFxuICAoKiBDaGVja3MgcGh5c2ljYWwgZXF1YWxpdHkgKFs9PV0pIG9mIHR3byBpbnRlcm5hbCBwcm9taXNlcy4gVW5saWtlIFs9PV0sIGRvZXNcbiAgICAgbm90IGZvcmNlIHVuaWZpY2F0aW9uIG9mIHRoZWlyIGludmFyaWFudHMuICopXG4gIGxldCBpZGVudGljYWwgcDEgcDIgPVxuICAgICh0b19wdWJsaWNfcHJvbWlzZSBwMSkgPT0gKHRvX3B1YmxpY19wcm9taXNlIHAyKVxuXG4gICgqIFt1bmRlcmx5aW5nIHBdIGV2YWx1YXRlcyB0byB0aGUgdW5kZXJseWluZyBwcm9taXNlIG9mIFtwXS5cblxuICAgICBJZiBtdWx0aXBsZSBbUHJveHkgX10gbGlua3MgYXJlIHRyYXZlcnNlZCwgW3VuZGVybHlpbmddIHVwZGF0ZXMgYWxsIHRoZVxuICAgICBwcm94aWVzIHRvIHBvaW50IGltbWVkaWF0ZWx5IHRvIHRoZWlyIGZpbmFsIHVuZGVybHlpbmcgcHJvbWlzZS4gKilcbiAgbGV0IHJlYyB1bmRlcmx5aW5nXG4gICAgICA6IHR5cGUgdSBjLiAoJ2EsIHUsIGMpIHByb21pc2UgLT4gKCdhLCB1bmRlcmx5aW5nLCBjKSBwcm9taXNlID1cbiAgICBmdW4gcCAtPlxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPiAocCA6IChfLCB1bmRlcmx5aW5nLCBfKSBwcm9taXNlKVxuICAgIHwgUmVqZWN0ZWQgXyAtPiBwXG4gICAgfCBQZW5kaW5nIF8gLT4gcFxuICAgIHwgUHJveHkgcCcgLT5cbiAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnIGluXG4gICAgICBpZiBub3QgKGlkZW50aWNhbCBwJycgcCcpIHRoZW5cbiAgICAgICAgcC5zdGF0ZSA8LSBQcm94eSBwJyc7XG4gICAgICBwJydcblxuXG5cbiAgdHlwZSAoJ2EsICd1LCAnYykgc3RhdGVfY2hhbmdlZCA9XG4gICAgfCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIG9mICgnYSwgJ3UsICdjKSBwcm9taXNlXG4gICAgW0BAb2NhbWwudW5ib3hlZF1cblxuICBsZXQgc2V0X3Byb21pc2Vfc3RhdGUgcCBzdGF0ZSA9XG4gICAgbGV0IHAgOiAoXywgXywgXykgcHJvbWlzZSA9IE9iai5tYWdpYyBwIGluXG4gICAgcC5zdGF0ZSA8LSBzdGF0ZTtcbiAgICBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHBcblxuICAoKiBbc2V0X3Byb21pc2Vfc3RhdGUgcCBzdGF0ZV0gbXV0YXRlcyB0aGUgc3RhdGUgb2YgW3BdLCBhbmQgZXZhbHVhdGVzIHRvIGFcbiAgICAgKHdyYXBwZWQpIHJlZmVyZW5jZSB0byBbcF0gd2l0aCB0aGUgc2FtZSBpbnZhcmlhbnRzIGFzIG9uIFtzdGF0ZV0uIFRoZVxuICAgICBvcmlnaW5hbCByZWZlcmVuY2UgW3BdIHNob3VsZCBiZSBzaGFkb3dlZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbjpcblxuICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPSBzZXRfcHJvbWlzZV9zdGF0ZSBwIChGdWxmaWxsZWQgNDIpIGluIC4uLlxuXG4gICAgIFRoaXMgaXMgYSBraW5kIG9mIGNoZWFwIGltaXRhdGlvbiBvZiBsaW5lYXIgdHlwaW5nLCB3aGljaCBpcyBnb29kIGVub3VnaFxuICAgICBmb3IgdGhlIG5lZWRzIG9mIFtsd3QubWxdLlxuXG4gICAgIEludGVybmFsIGZ1bmN0aW9ucyB0aGF0IHRyYW5zaXRpdmVseSBjYWxsIFtzZXRfcHJvbWlzZV9zdGF0ZV0gbGlrZXdpc2VcbiAgICAgcmV0dXJuIHRoZSBuZXcgcmVmZXJlbmNlLiBUaGlzIGVuZHMgYXQgc29tZSB0b3AtbGV2ZWwgZnVuY3Rpb24sIHR5cGljYWxseVxuICAgICBlaXRoZXIgYSBjYWxsYmFjayBvciBhIGZ1bmN0aW9uIGluIHRoZSBwdWJsaWMgQVBJLiBUaGVyZSwgdGhlIG5ldyByZWZlcmVuY2VcbiAgICAgaXMgc3RpbGwgYm91bmQsIGJ1dCBpcyB0aGVuIGV4cGxpY2l0bHkgaWdub3JlZC5cblxuICAgICBUaGUgc3RhdGUgb2YgYSBwcm9taXNlIGlzIG5ldmVyIHVwZGF0ZWQgZGlyZWN0bHkgb3V0c2lkZSB0aGlzIG1vZHVsZVxuICAgICBbQmFzaWNfaGVscGVyc10uIEFsbCB1cGRhdGVzIGVsc2V3aGVyZSBhcmUgZG9uZSB0aHJvdWdoXG4gICAgIFtzZXRfcHJvbWlzZV9zdGF0ZV0uXG5cbiAgICAgVG8gYXZvaWQgcHJvYmxlbXMgd2l0aCB0eXBlLWxldmVsIGludmFyaWFudHMgbm90IG1hdGNoaW5nIHJlYWxpdHksIGRhdGFcbiAgICAgc3RydWN0dXJlcyBkbyBub3Qgc3RvcmUgcHJvbWlzZXMgd2l0aCBjb25jcmV0ZSBpbnZhcmlhbnRzIC0tIGV4Y2VwdFxuICAgICByZXNvbHZlZCBwcm9taXNlcywgd2hpY2ggYXJlIGltbXV0YWJsZS4gSW5kZWVkLCBpZiBvbmUgbG9va3MgYXRcbiAgICAgZGVmaW5pdGlvbnMgb2YgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgY2FuIHN0b3JlIHBlbmRpbmcgcHJvbWlzZXMsIGUuZy4gdGhlXG4gICAgIFtob3dfdG9fY2FuY2VsXSBncmFwaCwgdGhlIGludmFyaWFudHMgYXJlIGV4aXN0ZW50aWFsbHkgcXVhbnRpZmllZC5cblxuICAgICBOb3RlOiBpdCdzIHBvc3NpYmxlIHRvIHN0YXRpY2FsbHkgZGlzYWxsb3cgdGhlIHNldHRpbmcgb2YgdGhlIFtzdGF0ZV0gZmllbGRcbiAgICAgYnkgbWFraW5nIHR5cGUgW3Byb21pc2VdIHByaXZhdGUuIEhvd2V2ZXIsIHRoYXQgc2VlbXMgdG8gcmVxdWlyZSB3cml0aW5nIGFcbiAgICAgc2lnbmF0dXJlIHRoYXQgaXMgYSBuZWFyLWR1cGxpY2F0ZSBvZiBbTWFpbl9pbnRlcm5hbF90eXBlc10sIG9yIHNvbWUgYWJ1c2VcbiAgICAgb2YgZnVuY3RvcnMuICopXG5cblxuXG4gIHR5cGUgJ2EgbWF5X25vd19iZV9wcm94eSA9XG4gICAgfCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgOlxuICAgICAgKCdhLCBfLCBwZW5kaW5nKSBwcm9taXNlIC0+ICdhIG1heV9ub3dfYmVfcHJveHlcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuXG4gIGxldCBtYXlfbm93X2JlX3Byb3h5IHAgPSBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcFxuXG4gICgqIE1hbnkgZnVuY3Rpb25zLCBmb3IgZXhhbXBsZSBbTHd0LmJpbmRdIGFuZCBbTHd0LmpvaW5dLCBjcmVhdGUgYSBmcmVzaFxuICAgICBwZW5kaW5nIHByb21pc2UgW3BdIGFuZCByZXR1cm4gaXQgdG8gdGhlIHVzZXIuXG5cbiAgICAgVGhleSBkbyBub3QgcmV0dXJuIGEgY29ycmVzcG9uZGluZyByZXNvbHZlci4gVGhhdCBtZWFucyB0aGF0IG9ubHkgdGhlXG4gICAgIGZ1bmN0aW9uIGl0c2VsZiAodHlwaWNhbGx5LCBhIGNhbGxiYWNrIHJlZ2lzdGVyZWQgYnkgaXQpIGNhbiByZXNvbHZlIFtwXS5cbiAgICAgVGhlIG9ubHkgdGhpbmcgdGhlIHVzZXIgY2FuIGRvIGRpcmVjdGx5IGlzIHRyeSB0byBjYW5jZWwgW3BdLCBidXQsIHNpbmNlXG4gICAgIFtwXSBpcyBub3QgYW4gaW5pdGlhbCBwcm9taXNlLCB0aGUgY2FuY2VsbGF0aW9uIGF0dGVtcHQgc2ltcGx5IHByb3BhZ2F0ZXNcbiAgICAgcGFzdCBbcF0gdG8gW3BdJ3MgcHJlZGVjZXNzb3JzLiBJZiB0aGF0IGV2ZW50dWFsbHkgcmVzdWx0cyBpbiBjYW5jZWxpbmdcbiAgICAgW3BdLCBpdCB3aWxsIGJlIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc21zIG9mIHRoZSBmdW5jdGlvbiAoZS5nLlxuICAgICBbTHd0LmJpbmRdJ3MgY2FsbGJhY2spLlxuXG4gICAgIEFzIGEgcmVzdWx0LCB0aGUgb25seSBwb3NzaWJsZSBzdGF0ZSBjaGFuZ2UsIGJlZm9yZSB0aGUgY2FsbGJhY2ssIGlzIHRoYXRcbiAgICAgW3BdIG1heSBoYXZlIGJlY29tZSBhIHByb3h5LiBOb3csXG5cbiAgICAgLSBJZiBbcF0gZG9lcyBub3QgdW5kZXJnbyB0aGlzIHN0YXRlIGNoYW5nZSBhbmQgYmVjb21lIGEgcHJveHksIGl0IHJlbWFpbnNcbiAgICAgICBhbiB1bmRlcmx5aW5nLCBwZW5kaW5nIHByb21pc2UuXG4gICAgIC0gSWYgW3BdIGRvZXMgYmVjb21lIGEgcHJveHksIGl0IHdpbGwgYmUgYSBwcm94eSBmb3IgYW5vdGhlciBwcm9taXNlIFtwJ11cbiAgICAgICBjcmVhdGVkIGZyZXNoIGJ5IFtMd3QuYmluZF0sIHRvIHdoaWNoIHRoaXMgc2FtZSBhcmd1bWVudCBhcHBsaWVzLiBTZWVcbiAgICAgICBbbWFrZV9pbnRvX3Byb3h5XS5cblxuICAgICBTbywgYnkgaW5kdWN0aW9uIG9uIHRoZSBsZW5ndGggb2YgdGhlIHByb3h5IChbUHJveHkgX10pIGNoYWluLCBhdCB0aGUgdGltZVxuICAgICB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkLCBbcF0gaXMgZWl0aGVyIGFuIHVuZGVybHlpbmcsIHBlbmRpbmcgcHJvbWlzZSwgb3IgYVxuICAgICBwcm94eSBmb3IgYSBwZW5kaW5nIHByb21pc2UuXG5cbiAgICAgVGhlIGNhc3RcblxuICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpbiAuLi5cblxuICAgICBlbmNvZGVzIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGlzIHN0YXRlIGNoYW5nZS4gSXQgcmVwbGFjZXMgYSByZWZlcmVuY2VcblxuICAgICAgIHAgOiAoJ2EsIHVuZGVybHlpbmcsIHBlbmRpbmcpXG5cbiAgICAgd2l0aFxuXG4gICAgICAgcCA6ICgnYSwgJFVua25vd24sIHBlbmRpbmcpXG5cbiAgICAgYW5kIGlzIHR5cGljYWxseSBzZWVuIGF0IHRoZSBiZWdpbm5pbmcgb2YgY2FsbGJhY2tzIHJlZ2lzdGVyZWQgYnlcbiAgICAgW0x3dC5iaW5kXSBhbmQgc2ltaWxhciBmdW5jdGlvbnMuXG5cbiAgICAgVGhlIGNhc3QgaXMgYSBuby1vcCBjYXN0LiBUaGUgaW50cm9kdWN0aW9uIGFuZCBpbW1lZGlhdGUgZWxpbWluYXRpb24gb2ZcbiAgICAgW1N0YXRlX21heV9oYXZlX2NoYW5nZWQgX10gc2VlbXMgdG8gYmUgb3B0aW1pemVkIGF3YXkgZXZlbiBvbiBvbGQgdmVyc2lvbnNcbiAgICAgb2YgT0NhbWwuICopXG5lbmRcbm9wZW4gQmFzaWNfaGVscGVyc1xuXG4oKiBTbWFsbCBoZWxwZXJzIHRvIGF2b2lkIGNhdGNoaW5nIG9jYW1sLXJ1bnRpbWUgZXhjZXB0aW9ucyAqKVxubW9kdWxlIEV4Y2VwdGlvbl9maWx0ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZXhuIC0+IGJvb2xcbiAgbGV0IGhhbmRsZV9hbGwgPSBmdW4gXyAtPiB0cnVlXG4gIGxldCBoYW5kbGVfYWxsX2V4Y2VwdF9ydW50aW1lID0gZnVuY3Rpb25cbiAgICB8IE91dF9vZl9tZW1vcnkgLT4gZmFsc2VcbiAgICB8IFN0YWNrX292ZXJmbG93IC0+IGZhbHNlXG4gICAgfCBfIC0+IHRydWVcbiAgbGV0IHYgPVxuICAgICgqIERlZmF1bHQgdmFsdWU6IHRoZSBsZWdhY3kgYmVoYXZpb3VyIHRvIGF2b2lkIGJyZWFraW5nIHByb2dyYW1zICopXG4gICAgcmVmIGhhbmRsZV9hbGxcbiAgbGV0IHNldCBmID0gdiA6PSBmXG4gIGxldCBydW4gZSA9ICF2IGVcbmVuZFxuXG5tb2R1bGUgU2VxdWVuY2VfYXNzb2NpYXRlZF9zdG9yYWdlIDpcbnNpZ1xuICAoKiBQdWJsaWMgaW50ZXJmYWNlICopXG4gIHR5cGUgJ3Yga2V5XG4gIHZhbCBuZXdfa2V5IDogdW5pdCAtPiBfIGtleVxuICB2YWwgZ2V0IDogJ3Yga2V5IC0+ICd2IG9wdGlvblxuICB2YWwgd2l0aF92YWx1ZSA6ICd2IGtleSAtPiAndiBvcHRpb24gLT4gKHVuaXQgLT4gJ2IpIC0+ICdiXG5cbiAgKCogSW50ZXJuYWwgaW50ZXJmYWNlICopXG4gIHZhbCBjdXJyZW50X3N0b3JhZ2UgOiBzdG9yYWdlIHJlZlxuZW5kID1cbnN0cnVjdFxuICAoKiBUaGUgaWRlYSBiZWhpbmQgc2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlIGlzIHRvIHByZXNlcnZlIHNvbWUgdmFsdWVzXG4gICAgIGR1cmluZyBhIGNhbGwgdG8gW2JpbmRdIG9yIG90aGVyIHNlcXVlbnRpYWwgY29tcG9zaXRpb24gb3BlcmF0aW9uLCBhbmRcbiAgICAgcmVzdG9yZSB0aG9zZSB2YWx1ZXMgaW4gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uOlxuXG4gICAgICAgTHd0LndpdGhfdmFsdWUgbXlfa2V5IChTb21lIFwiZm9vXCIpIChmdW4gKCkgLT5cbiAgICAgICBwID58PSBmdW4gKCkgLT5cbiAgICAgICBhc3NlcnQgKEx3dC5nZXQgbXlfa2V5ID0gU29tZSBcImZvb1wiKSlcbiAgICAgICAgICgqIFdpbGwgc3VjY2VlZCBldmVuIGlmIHRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIGxhdGVyLiAqKVxuXG4gICAgIE5vdGUgdGhhdCBpdCBkb2VzIG5vdCBtYXR0ZXIgdGhhdCB0aGUgY2FsbGJhY2sgaXMgZGVmaW5lZCB3aXRoaW4gYW5cbiAgICAgYXJndW1lbnQgb2YgW3dpdGhfdmFsdWVdLCBpLmUuLCB0aGlzIGRvZXMgdGhlIHNhbWU6XG5cbiAgICAgICBsZXQgZiA9IGZ1biAoKSAtPiBhc3NlcnQgKEx3dC5nZXQgbXlfa2V5ID0gU29tZSBcImZvb1wiKSBpblxuICAgICAgIEx3dC53aXRoX3ZhbHVlIG15X2tleSAoU29tZSBcImZvb1wiKSAoZnVuICgpIC0+IHAgPnw9IGYpXG5cbiAgICAgQWxsIHRoYXQgbWF0dGVycyBpcyB0aGF0IHRoZSB0b3AtbW9zdCBzZXF1ZW5jaW5nIG9wZXJhdGlvbiAoaW4gdGhpcyBjYXNlLFxuICAgICBtYXApIGlzIGV4ZWN1dGVkIGJ5IHRoYXQgYXJndW1lbnQuXG5cbiAgICAgVGhpcyBpcyBpbXBsZW1lbnRlZCB1c2luZyBhIHNpbmdsZSBnbG9iYWwgaGV0ZXJvZ2VuZW91cyBrZXktdmFsdWUgbWFwLlxuICAgICBTZXF1ZW50aWFsIGNvbXBvc2l0aW9uIGZ1bmN0aW9ucyBzbmFwc2hvdCB0aGlzIG1hcCB3aGVuIHRoZXkgYXJlIGNhbGxlZCxcbiAgICAgYW5kIHJlc3RvcmUgdGhlIHNuYXBzaG90IHJpZ2h0IGJlZm9yZSBjYWxsaW5nIHRoZSB1c2VyJ3MgY2FsbGJhY2suIFRoZSBzYW1lXG4gICAgIGhhcHBlbnMgZm9yIGNhbmNlbCB0cmlnZ2VycyBhZGRlZCBieSBbb25fY2FuY2VsXS5cblxuICAgICBNYWludGFpbmVyJ3Mgbm90ZTogSSB0aGluayB1c2luZyB0aGlzIG1lY2hhbmlzbSBzaG91bGQgYmUgZGlzY291cmFnZWQgaW5cbiAgICAgbmV3IGNvZGUuICopXG5cbiAgdHlwZSAndiBrZXkgPSB7XG4gICAgaWQgOiBpbnQ7XG4gICAgbXV0YWJsZSB2YWx1ZSA6ICd2IG9wdGlvbjtcbiAgfVxuXG4gIGxldCBuZXh0X2tleV9pZCA9IHJlZiAwXG5cbiAgbGV0IG5ld19rZXkgKCkgPVxuICAgIGxldCBpZCA9ICFuZXh0X2tleV9pZCBpblxuICAgIG5leHRfa2V5X2lkIDo9IGlkICsgMTtcbiAgICB7aWQgPSBpZDsgdmFsdWUgPSBOb25lfVxuXG4gIGxldCBjdXJyZW50X3N0b3JhZ2UgPSByZWYgU3RvcmFnZV9tYXAuZW1wdHlcblxuICBsZXQgZ2V0IGtleSA9XG4gICAgaWYgU3RvcmFnZV9tYXAubWVtIGtleS5pZCAhY3VycmVudF9zdG9yYWdlIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWZyZXNoID0gU3RvcmFnZV9tYXAuZmluZCBrZXkuaWQgIWN1cnJlbnRfc3RvcmFnZSBpblxuICAgICAgcmVmcmVzaCAoKTtcbiAgICAgIGxldCB2YWx1ZSA9IGtleS52YWx1ZSBpblxuICAgICAga2V5LnZhbHVlIDwtIE5vbmU7XG4gICAgICB2YWx1ZVxuICAgIGVuZFxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuICBsZXQgd2l0aF92YWx1ZSBrZXkgdmFsdWUgZiA9XG4gICAgbGV0IG5ld19zdG9yYWdlID1cbiAgICAgIG1hdGNoIHZhbHVlIHdpdGhcbiAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgIGxldCByZWZyZXNoID0gZnVuICgpIC0+IGtleS52YWx1ZSA8LSB2YWx1ZSBpblxuICAgICAgICBTdG9yYWdlX21hcC5hZGQga2V5LmlkIHJlZnJlc2ggIWN1cnJlbnRfc3RvcmFnZVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIFN0b3JhZ2VfbWFwLnJlbW92ZSBrZXkuaWQgIWN1cnJlbnRfc3RvcmFnZVxuICAgIGluXG5cbiAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cbiAgICBjdXJyZW50X3N0b3JhZ2UgOj0gbmV3X3N0b3JhZ2U7XG4gICAgdHJ5XG4gICAgICBsZXQgcmVzdWx0ID0gZiAoKSBpblxuICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG4gICAgICByZXN1bHRcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPlxuICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG4gICAgICByYWlzZSBleG5cbmVuZFxuaW5jbHVkZSBTZXF1ZW5jZV9hc3NvY2lhdGVkX3N0b3JhZ2VcblxuXG5cbm1vZHVsZSBQZW5kaW5nX2NhbGxiYWNrcyA6XG5zaWdcbiAgKCogTXV0YXRpbmcgY2FsbGJhY2sgbGlzdHMgYXR0YWNoZWQgdG8gcGVuZGluZyBwcm9taXNlcyAqKVxuICB2YWwgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayA6XG4gICAgJ2EgY2FsbGJhY2tzIC0+ICdhIHJlZ3VsYXJfY2FsbGJhY2sgLT4gdW5pdFxuICB2YWwgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgOlxuICAgICdhIHQgbGlzdCAtPiAnYSByZWd1bGFyX2NhbGxiYWNrIC0+IHVuaXRcbiAgdmFsIGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19hbmRfZ2l2ZV9yZW1vdmVfZnVuY3Rpb24gOlxuICAgICdhIHQgbGlzdCAtPiAnYSByZWd1bGFyX2NhbGxiYWNrIC0+IGNhbmNlbF9jYWxsYmFja1xuICB2YWwgYWRkX2NhbmNlbF9jYWxsYmFjayA6ICdhIGNhbGxiYWNrcyAtPiBjYW5jZWxfY2FsbGJhY2sgLT4gdW5pdFxuICB2YWwgbWVyZ2VfY2FsbGJhY2tzIDogZnJvbTonYSBjYWxsYmFja3MgLT4gaW50bzonYSBjYWxsYmFja3MgLT4gdW5pdFxuZW5kID1cbnN0cnVjdFxuICBsZXQgY29uY2F0X3JlZ3VsYXJfY2FsbGJhY2tzIGwxIGwyID1cbiAgICBiZWdpbiBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5LCBfIC0+IGwyXG4gICAgfCBfLCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHkgLT4gbDFcbiAgICB8IF8sIF8gLT4gUmVndWxhcl9jYWxsYmFja19saXN0X2NvbmNhdCAobDEsIGwyKVxuICAgIGVuZCBbQG9jYW1sLndhcm5pbmcgXCItNFwiXVxuXG4gIGxldCBjb25jYXRfY2FuY2VsX2NhbGxiYWNrcyBsMSBsMiA9XG4gICAgYmVnaW4gbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2VtcHR5LCBfIC0+IGwyXG4gICAgfCBfLCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9lbXB0eSAtPiBsMVxuICAgIHwgXywgXyAtPiBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jb25jYXQgKGwxLCBsMilcbiAgICBlbmQgW0BvY2FtbC53YXJuaW5nIFwiLTRcIl1cblxuICAoKiBJbiBhIGNhbGxiYWNrIGxpc3QsIGZpbHRlcnMgb3V0IGNlbGxzIG9mIGV4cGxpY2l0bHkgcmVtb3ZhYmxlIGNhbGxiYWNrc1xuICAgICB0aGF0IGhhdmUgYmVlbiByZW1vdmVkLiAqKVxuICBsZXQgcmVjIGNsZWFuX3VwX2NhbGxiYWNrX2NlbGxzID0gZnVuY3Rpb25cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFjayB7Y29udGVudHMgPSBOb25lfSAtPlxuICAgICAgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5XG5cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFjayB7Y29udGVudHMgPSBTb21lIF99XG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIF9cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eSBhcyBjYWxsYmFja3MgLT5cbiAgICAgIGNhbGxiYWNrc1xuXG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfY29uY2F0IChsMSwgbDIpIC0+XG4gICAgICBsZXQgbDEgPSBjbGVhbl91cF9jYWxsYmFja19jZWxscyBsMSBpblxuICAgICAgbGV0IGwyID0gY2xlYW5fdXBfY2FsbGJhY2tfY2VsbHMgbDIgaW5cbiAgICAgIGNvbmNhdF9yZWd1bGFyX2NhbGxiYWNrcyBsMSBsMlxuXG4gICgqIFNlZSBbY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfY2VsbF0gYW5kIFttZXJnZV9jYWxsYmFja3NdLiAqKVxuICBsZXQgY2xlYW51cF90aHJvdHRsZSA9IDQyXG5cbiAgKCogRXhwbGljaXRseSByZW1vdmFibGUgY2FsbGJhY2tzIGFyZSBhZGRlZCAobWFpbmx5KSBieSBbTHd0LmNob29zZV0gYW5kIGl0c1xuICAgICBzaW1pbGFyIGZ1bmN0aW9ucy4gSW4gW0x3dC5jaG9vc2UgW3A7IHAnXV0sIGlmIFtwJ10gcmVzb2x2ZXMgZmlyc3QsIHRoZVxuICAgICBjYWxsYmFjayBhZGRlZCBieSBbTHd0LmNob29zZV0gdG8gW3BdIGlzIHJlbW92ZWQuXG5cbiAgICAgVGhlIHJlbW92YWwgaXRzZWxmIGlzIGFjY29tcGxpc2hlZCB3aGVuIHRoaXMgZnVuY3Rpb24gY2xlYXJzIHRoZSByZWZlcmVuY2VcbiAgICAgY2VsbCBbY2VsbF0sIHdoaWNoIGNvbnRhaW5zIHRoZSByZWZlcmVuY2UgdG8gdGhhdCBjYWxsYmFjay5cblxuICAgICBJZiBbcF0gaXMgYSBsb25nLXBlbmRpbmcgcHJvbWlzZSB0aGF0IHJlcGVhdGVkbHkgcGFydGljaXBhdGVzIGluXG4gICAgIFtMd3QuY2hvb3NlXSwgcGVyaGFwcyBpbiBhIGxvb3AsIGl0IHdpbGwgYWNjdW11bGF0ZSBhIGxhcmdlIG51bWJlciBvZlxuICAgICBjbGVhcmVkIHJlZmVyZW5jZSBjZWxscyBpbiB0aGlzIGZhc2hpb24uIFRvIGF2b2lkIGEgbWVtb3J5IGxlYWssIHRoZXkgbXVzdFxuICAgICBiZSBjbGVhbmVkIHVwLiBIb3dldmVyLCB0aGUgY2VsbHMgYXJlIG5vdCBjbGVhbmVkIHVwIG9uICpldmVyeSogcmVtb3ZhbCxcbiAgICAgcHJlc3VtYWJseSBiZWNhdXNlIHNjYW5uaW5nIHRoZSBjYWxsYmFjayBsaXN0IHRoYXQgb2Z0ZW4sIGFuZCByZWJ1aWxkaW5nXG4gICAgIGl0LCBjYW4gZ2V0IGV4cGVuc2l2ZS5cblxuICAgICBDbGVhbnVwIGlzIHRocm90dGxlZCBieSBtYWludGFpbmluZyBhIGNvdW50ZXIsIFtjbGVhbnVwc19kZWZlcnJlZF0sIG9uIGVhY2hcbiAgICAgcGVuZGluZyBwcm9taXNlLiBUaGUgY291bnRlciBpcyBpbmNyZW1lbnRlZCBlYWNoIHRpbWUgdGhpcyBmdW5jdGlvbiB3YW50c1xuICAgICB0byBjbGVhbiB0aGUgY2FsbGJhY2sgbGlzdCAocmlnaHQgYWZ0ZXIgY2xlYXJpbmcgYSBjZWxsKS4gV2hlbiB0aGUgY291bnRlclxuICAgICByZWFjaGVzIFtjbGVhbnVwX3Rocm90dGxlXSwgdGhlIGNhbGxiYWNrIGxpc3QgaXMgYWN0dWFsbHkgc2Nhbm5lZCBhbmRcbiAgICAgY2xlYXJlZCBjYWxsYmFjayBjZWxscyBhcmUgcmVtb3ZlZC4gKilcbiAgbGV0IGNsZWFyX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2NlbGwgY2VsbCB+b3JpZ2luYWxseV9hZGRlZF90bzpwcyA9XG4gICAgY2VsbCA6PSBOb25lO1xuXG4gICAgKCogR28gdGhyb3VnaCB0aGUgcHJvbWlzZXMgdGhlIGNlbGwgaGFkIG9yaWdpbmFsbHkgYmVlbiBhZGRlZCB0bywgYW5kIGVpdGhlclxuICAgICAgIGRlZmVyIGEgY2xlYW51cCwgb3IgYWN0dWFsbHkgY2xlYW4gdXAgdGhlaXIgY2FsbGJhY2sgbGlzdHMuICopXG4gICAgcHMgfD4gTGlzdC5pdGVyIChmdW4gcCAtPlxuICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgICgqIFNvbWUgb2YgdGhlIHByb21pc2VzIG1heSBhbHJlYWR5IGhhdmUgYmVlbiByZXNvbHZlZCBhdCB0aGUgdGltZSB0aGlzXG4gICAgICAgICBmdW5jdGlvbiBpcyBjYWxsZWQuICopXG4gICAgICB8IEZ1bGZpbGxlZCBfIC0+ICgpXG4gICAgICB8IFJlamVjdGVkIF8gLT4gKClcblxuICAgICAgfCBQZW5kaW5nIGNhbGxiYWNrcyAtPlxuICAgICAgICBtYXRjaCBjYWxsYmFja3MucmVndWxhcl9jYWxsYmFja3Mgd2l0aFxuICAgICAgICAoKiBJZiB0aGUgcHJvbWlzZSBoYXMgb25seSBvbmUgcmVndWxhciBjYWxsYmFjaywgYW5kIGl0IGlzIHJlbW92YWJsZSwgaXRcbiAgICAgICAgICAgbXVzdCBoYXZlIGJlZW4gdGhlIGNlbGwgY2xlYXJlZCBpbiB0aGlzIGZ1bmN0aW9uLCBhYm92ZS4gSW4gdGhhdFxuICAgICAgICAgICBjYXNlLCBqdXN0IHNldCBpdHMgY2FsbGJhY2sgbGlzdCB0byBlbXB0eS4gKilcbiAgICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2sgXyAtPlxuICAgICAgICAgIGNhbGxiYWNrcy5yZWd1bGFyX2NhbGxiYWNrcyA8LSBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHlcblxuICAgICAgICAoKiBNYWludGFpbmVyJ3Mgbm90ZTogSSB0aGluayB0aGlzIGZ1bmN0aW9uIHNob3VsZG4ndCB0cnkgdG8gdHJpZ2dlciBhXG4gICAgICAgICAgIGNsZWFudXAgaW4gdGhlIGZpcnN0IHR3byBjYXNlcywgYnV0IEkgYW0gcHJlc2VydmluZyB0aGVtIGZvciBub3csIGFzXG4gICAgICAgICAgIHRoaXMgaXMgaG93IHRoZSBjb2RlIHdhcyB3cml0dGVuIGluIHRoZSBwYXN0LiAqKVxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eVxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgX1xuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9jb25jYXQgXyAtPlxuICAgICAgICAgIGxldCBjbGVhbnVwc19kZWZlcnJlZCA9IGNhbGxiYWNrcy5jbGVhbnVwc19kZWZlcnJlZCArIDEgaW5cbiAgICAgICAgICBpZiBjbGVhbnVwc19kZWZlcnJlZCA+IGNsZWFudXBfdGhyb3R0bGUgdGhlbiBiZWdpblxuICAgICAgICAgICAgY2FsbGJhY2tzLmNsZWFudXBzX2RlZmVycmVkIDwtIDA7XG4gICAgICAgICAgICBjYWxsYmFja3MucmVndWxhcl9jYWxsYmFja3MgPC1cbiAgICAgICAgICAgICAgY2xlYW5fdXBfY2FsbGJhY2tfY2VsbHMgY2FsbGJhY2tzLnJlZ3VsYXJfY2FsbGJhY2tzXG4gICAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICAgIGNhbGxiYWNrcy5jbGVhbnVwc19kZWZlcnJlZCA8LSBjbGVhbnVwc19kZWZlcnJlZClcblxuICAoKiBDb25jYXRlbmF0ZXMgYm90aCBraW5kcyBvZiBjYWxsYmFja3Mgb24gW35mcm9tXSB0byB0aGUgY29ycmVzcG9uZGluZyBsaXN0c1xuICAgICBvZiBbfmludG9dLiBUaGUgY2FsbGJhY2sgbGlzdHMgb24gW35mcm9tXSBhcmUgKm5vdCogdGhlbiBjbGVhcmVkLCBiZWNhdXNlXG4gICAgIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgYnkgW1NlcXVlbnRpYWxfY29tcG9zaXRpb24ubWFrZV9pbnRvX3Byb3h5XSxcbiAgICAgd2hpY2ggaW1tZWRpYXRlbHkgY2hhbmdlcyB0aGUgc3RhdGUgb2YgW35mcm9tXSBhbmQgbG9zZXMgcmVmZXJlbmNlcyB0byB0aGVcbiAgICAgb3JpZ2luYWwgY2FsbGJhY2sgbGlzdHMuXG5cbiAgICAgVGhlIFtjbGVhbnVwc19kZWZlcnJlZF0gZmllbGRzIG9mIGJvdGggcHJvbWlzZXMgYXJlIHN1bW1lZCwgYW5kIGlmIHRoZSBzdW1cbiAgICAgZXhjZWVkcyBbY2xlYW51cF90aHJvdHRsZV0sIGEgY2xlYW51cCBvZiByZWd1bGFyIGNhbGxiYWNrcyBpcyB0cmlnZ2VyZWQuXG4gICAgIFRoaXMgaXMgdG8gcHJldmVudCBtZW1vcnkgbGVha3M7IHNlZVxuICAgICBbY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfY2VsbF0uICopXG4gIGxldCBtZXJnZV9jYWxsYmFja3MgfmZyb20gfmludG8gPVxuICAgIGxldCByZWd1bGFyX2NhbGxiYWNrcyA9XG4gICAgICBjb25jYXRfcmVndWxhcl9jYWxsYmFja3MgaW50by5yZWd1bGFyX2NhbGxiYWNrcyBmcm9tLnJlZ3VsYXJfY2FsbGJhY2tzIGluXG4gICAgbGV0IGNsZWFudXBzX2RlZmVycmVkID0gaW50by5jbGVhbnVwc19kZWZlcnJlZCArIGZyb20uY2xlYW51cHNfZGVmZXJyZWQgaW5cblxuICAgIGxldCByZWd1bGFyX2NhbGxiYWNrcywgY2xlYW51cHNfZGVmZXJyZWQgPVxuICAgICAgaWYgY2xlYW51cHNfZGVmZXJyZWQgPiBjbGVhbnVwX3Rocm90dGxlIHRoZW5cbiAgICAgICAgY2xlYW5fdXBfY2FsbGJhY2tfY2VsbHMgcmVndWxhcl9jYWxsYmFja3MsIDBcbiAgICAgIGVsc2VcbiAgICAgICAgcmVndWxhcl9jYWxsYmFja3MsIGNsZWFudXBzX2RlZmVycmVkXG4gICAgaW5cblxuICAgIGxldCBjYW5jZWxfY2FsbGJhY2tzID1cbiAgICAgIGNvbmNhdF9jYW5jZWxfY2FsbGJhY2tzIGludG8uY2FuY2VsX2NhbGxiYWNrcyBmcm9tLmNhbmNlbF9jYWxsYmFja3MgaW5cblxuICAgIGludG8ucmVndWxhcl9jYWxsYmFja3MgPC0gcmVndWxhcl9jYWxsYmFja3M7XG4gICAgaW50by5jYW5jZWxfY2FsbGJhY2tzIDwtIGNhbmNlbF9jYWxsYmFja3M7XG4gICAgaW50by5jbGVhbnVwc19kZWZlcnJlZCA8LSBjbGVhbnVwc19kZWZlcnJlZFxuXG5cblxuICAoKiBHZW5lcmFsLCBpbnRlcm5hbCwgZnVuY3Rpb24gZm9yIGFkZGluZyBhIHJlZ3VsYXIgY2FsbGJhY2suICopXG4gIGxldCBhZGRfcmVndWxhcl9jYWxsYmFja19saXN0X25vZGUgY2FsbGJhY2tzIG5vZGUgPVxuICAgIGNhbGxiYWNrcy5yZWd1bGFyX2NhbGxiYWNrcyA8LVxuICAgICAgbWF0Y2ggY2FsbGJhY2tzLnJlZ3VsYXJfY2FsbGJhY2tzIHdpdGhcbiAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5IC0+XG4gICAgICAgIG5vZGVcbiAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBfXG4gICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFjayBfXG4gICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9jb25jYXQgXyBhcyBleGlzdGluZyAtPlxuICAgICAgICBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfY29uY2F0IChub2RlLCBleGlzdGluZylcblxuICBsZXQgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBjYWxsYmFja3MgZiA9XG4gICAgYWRkX3JlZ3VsYXJfY2FsbGJhY2tfbGlzdF9ub2RlXG4gICAgICBjYWxsYmFja3MgKFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgZilcblxuICAoKiBBZGRzIFtjYWxsYmFja10gYXMgcmVtb3ZhYmxlIHRvIGVhY2ggcHJvbWlzZSBpbiBbcHNdLiBUaGUgZmlyc3QgcHJvbWlzZSBpblxuICAgICBbcHNdIHRvIHRyaWdnZXIgW2NhbGxiYWNrXSByZW1vdmVzIFtjYWxsYmFja10gZnJvbSB0aGUgb3RoZXIgcHJvbWlzZXM7IHRoaXNcbiAgICAgZ3VhcmFudGVlcyB0aGF0IFtjYWxsYmFja10gaXMgY2FsbGVkIGF0IG1vc3Qgb25jZS4gQWxsIHRoZSBwcm9taXNlcyBpbiBbcHNdXG4gICAgIG11c3QgYmUgcGVuZGluZy5cblxuICAgICBUaGlzIGlzIGFuIGludGVybmFsIGZ1bmN0aW9uLCBpbmRpcmVjdGx5IHVzZWQgYnkgdGhlIGltcGxlbWVudGF0aW9ucyBvZlxuICAgICBbTHd0LmNob29zZV0gYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLiAqKVxuICBsZXQgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2FuZF9naXZlX2NlbGwgcHMgZiA9XG4gICAgbGV0IHJlYyBjZWxsID0gcmVmIChTb21lIHNlbGZfcmVtb3ZpbmdfY2FsbGJhY2tfd3JhcHBlcilcbiAgICBhbmQgc2VsZl9yZW1vdmluZ19jYWxsYmFja193cmFwcGVyIHJlc3VsdCA9XG4gICAgICBjbGVhcl9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19jZWxsIGNlbGwgfm9yaWdpbmFsbHlfYWRkZWRfdG86cHM7XG4gICAgICBmIHJlc3VsdFxuICAgIGluXG5cbiAgICBsZXQgbm9kZSA9IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFjayBjZWxsIGluXG4gICAgcHMgfD4gTGlzdC5pdGVyIChmdW4gcCAtPlxuICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgIHwgUGVuZGluZyBjYWxsYmFja3MgLT4gYWRkX3JlZ3VsYXJfY2FsbGJhY2tfbGlzdF9ub2RlIGNhbGxiYWNrcyBub2RlXG4gICAgICB8IEZ1bGZpbGxlZCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBSZWplY3RlZCBfIC0+IGFzc2VydCBmYWxzZSk7XG5cbiAgICBjZWxsXG5cbiAgbGV0IGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja190b19lYWNoX29mIHBzIGYgPVxuICAgIGlnbm9yZSAoYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2FuZF9naXZlX2NlbGwgcHMgZilcblxuICAoKiBUaGlzIGlzIGJhc2ljYWxseSBqdXN0IHRvIHN1cHBvcnQgW0x3dC5wcm90ZWN0ZWRdLCB3aGljaCBuZWVkcyB0byByZW1vdmVcbiAgICAgdGhlIGNhbGxiYWNrIGluIGNpcmN1bXN0YW5jZXMgb3RoZXIgdGhhbiB0aGUgY2FsbGJhY2sgYmVpbmcgY2FsbGVkLiAqKVxuICBsZXQgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2FuZF9naXZlX3JlbW92ZV9mdW5jdGlvbiBwcyBmID1cbiAgICBsZXQgY2VsbCA9IGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19hbmRfZ2l2ZV9jZWxsIHBzIGYgaW5cbiAgICBmdW4gKCkgLT5cbiAgICAgIGNsZWFyX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2NlbGwgY2VsbCB+b3JpZ2luYWxseV9hZGRlZF90bzpwc1xuXG4gIGxldCBhZGRfY2FuY2VsX2NhbGxiYWNrIGNhbGxiYWNrcyBmID1cbiAgICBsZXQgbm9kZSA9IENhbmNlbF9jYWxsYmFja19saXN0X2NhbGxiYWNrICghY3VycmVudF9zdG9yYWdlLCBmKSBpblxuXG4gICAgY2FsbGJhY2tzLmNhbmNlbF9jYWxsYmFja3MgPC1cbiAgICAgIG1hdGNoIGNhbGxiYWNrcy5jYW5jZWxfY2FsbGJhY2tzIHdpdGhcbiAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfZW1wdHkgLT5cbiAgICAgICAgbm9kZVxuXG4gICAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2NhbGxiYWNrIF9cbiAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfcmVtb3ZlX3NlcXVlbmNlX25vZGUgX1xuICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jb25jYXQgXyAtPlxuICAgICAgICBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jb25jYXQgKG5vZGUsIGNhbGxiYWNrcy5jYW5jZWxfY2FsbGJhY2tzKVxuZW5kXG5vcGVuIFBlbmRpbmdfY2FsbGJhY2tzXG5cblxuXG5tb2R1bGUgUmVzb2x1dGlvbl9sb29wIDpcbnNpZ1xuICAoKiBBbGwgdXNlci1wcm92aWRlZCBjYWxsYmFja3MgYXJlIGNhbGxlZCBieSBMd3Qgb25seSB0aHJvdWdoIHRoaXMgbW9kdWxlLiBJdFxuICAgICB0cmFja3MgdGhlIGN1cnJlbnQgY2FsbGJhY2sgc3RhY2sgZGVwdGgsIGFuZCBkZWNpZGVzIHdoZXRoZXIgZWFjaCBjYWxsYmFja1xuICAgICBjYWxsIHNob3VsZCBiZSBkZWZlcnJlZCBvciBub3QuICopXG5cbiAgKCogSW50ZXJuYWwgaW50ZXJmYWNlIHVzZWQgb25seSBpbiB0aGlzIG1vZHVsZSBMd3QgKilcbiAgdmFsIHJlc29sdmUgOlxuICAgID9hbGxvd19kZWZlcnJpbmc6Ym9vbCAtPlxuICAgID9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGg6aW50IC0+XG4gICAgKCdhLCB1bmRlcmx5aW5nLCBwZW5kaW5nKSBwcm9taXNlIC0+XG4gICAgJ2EgcmVzb2x2ZWRfc3RhdGUgLT5cbiAgICAgICgnYSwgdW5kZXJseWluZywgcmVzb2x2ZWQpIHN0YXRlX2NoYW5nZWRcblxuICB2YWwgcnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtIDpcbiAgICA/YWxsb3dfZGVmZXJyaW5nOmJvb2wgLT5cbiAgICA/bWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoOmludCAtPlxuICAgICgnYSBjYWxsYmFja3MpIC0+XG4gICAgJ2EgcmVzb2x2ZWRfc3RhdGUgLT5cbiAgICAgIHVuaXRcblxuICB2YWwgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0IDpcbiAgICA/cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOmJvb2wgLT5cbiAgICBjYWxsYmFjazoodW5pdCAtPiAnYSkgLT5cbiAgICBpZl9kZWZlcnJlZDoodW5pdCAtPiAnYSAqICdiIHJlZ3VsYXJfY2FsbGJhY2sgKiAnYiByZXNvbHZlZF9zdGF0ZSkgLT5cbiAgICAgICdhXG5cbiAgdmFsIGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIDogKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcblxuICAoKiBJbnRlcm5hbCBpbnRlcmZhY2UgZXhwb3NlZCB0byBvdGhlciBtb2R1bGVzIGluIEx3dCAqKVxuICB2YWwgYWJhbmRvbl93YWtldXBzIDogdW5pdCAtPiB1bml0XG5cbiAgKCogUHVibGljIGludGVyZmFjZSAqKVxuICBleGNlcHRpb24gQ2FuY2VsZWRcblxuICB2YWwgYXN5bmNfZXhjZXB0aW9uX2hvb2sgOiAoZXhuIC0+IHVuaXQpIHJlZlxuZW5kID1cbnN0cnVjdFxuICAoKiBXaGVuIEx3dCBuZWVkcyB0byBjYWxsIGEgY2FsbGJhY2ssIGl0IGVudGVycyB0aGUgcmVzb2x1dGlvbiBsb29wLiBUaGlzXG4gICAgIHR5cGljYWxseSBoYXBwZW5zIHdoZW4gTHd0IHNldHMgdGhlIHN0YXRlIG9mIG9uZSBwcm9taXNlIHRvIFtGdWxmaWxsZWQgX11cbiAgICAgb3IgW1JlamVjdGVkIF9dLiBUaGUgY2FsbGJhY2tzIHRoYXQgd2VyZSBhdHRhY2hlZCB0byB0aGUgcHJvbWlzZSB3aGVuIGl0XG4gICAgIHdhcyBwZW5kaW5nIG11c3QgdGhlbiBiZSBjYWxsZWQuXG5cbiAgICAgVGhpcyBhbHNvIGhhcHBlbnMgaW4gYSBmZXcgb3RoZXIgc2l0dWF0aW9ucy4gRm9yIGV4YW1wbGUsIHdoZW4gW0x3dC5iaW5kXVxuICAgICBpcyBjYWxsZWQgb24gYSBwcm9taXNlLCBidXQgdGhhdCBwcm9taXNlIGlzIGFscmVhZHkgcmVzb2x2ZWQsIHRoZSBjYWxsYmFja1xuICAgICBwYXNzZWQgdG8gW2JpbmRdIG11c3QgYmUgY2FsbGVkLlxuXG4gICAgIFRoZSBjYWxsYmFja3MgdHJpZ2dlcmVkIGR1cmluZyB0aGUgcmVzb2x1dGlvbiBsb29wIG1pZ2h0IHJlc29sdmUgbW9yZVxuICAgICBwcm9taXNlcywgdHJpZ2dlcmluZyBtb3JlIGNhbGxiYWNrcywgYW5kIHNvIG9uLiBUaGlzIGlzIHdoYXQgbWFrZXMgdGhlXG4gICAgIHJlc29sdXRpb24gbG9vcCBhIHtlIGxvb3B9LlxuXG4gICAgIEx3dCBnZW5lcmFsbHkgdHJpZXMgdG8gY2FsbCBlYWNoIGNhbGxiYWNrIGltbWVkaWF0ZWx5LiBIb3dldmVyLCB0aGlzIGNhblxuICAgICBsZWFkIHRvIGEgcHJvZ3Jlc3NpdmUgZGVlcGVuaW5nIG9mIHRoZSBjYWxsIHN0YWNrLCB1bnRpbCB0aGVyZSBpcyBhIHN0YWNrXG4gICAgIG92ZXJmbG93LiBUaGlzIGNhbid0IGJlIGF2b2lkZWQgYnkgZG9pbmcgdGFpbCBjYWxscywgYmVjYXVzZSBMd3QgYWx3YXlzXG4gICAgIG5lZWRzIHRvIGRvIGV4Y2VwdGlvbiBoYW5kbGluZyBhcm91bmQgY2FsbGJhY2tzIGNhbGxzOiBlYWNoIGNhbGxiYWNrIGNhbGxcbiAgICAgaXMgZm9sbG93ZWQgYnkgYW4gZXhjZXB0aW9uIGhhbmRsZXIuIEluc3RlYWQsIHdoYXQgTHd0IGRvZXMgaXMgdHJhY2sgdGhlXG4gICAgIGN1cnJlbnQgY2FsbGJhY2sgY2FsbCBkZXB0aC4gT25jZSB0aGF0IGRlcHRoIHJlYWNoZXMgYSBjZXJ0YWluIG51bWJlcixcbiAgICAgW2RlZmF1bHRfbWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoXSwgZGVmaW5lZCBiZWxvdywgZnVydGhlciBjYWxsYmFja3NcbiAgICAgYXJlIGRlZmVycmVkIGludG8gYSBxdWV1ZSBpbnN0ZWFkLiBUaGF0IHF1ZXVlIGlzIGRyYWluZWQgd2hlbiBMd3QgZXhpdHNcbiAgICAgZnJvbSB0aGUgdG9wLW1vc3QgY2FsbGJhY2sgY2FsbCB0aGF0IHRyaWdnZXJlZCB0aGUgcmVzb2x1dGlvbiBsb29wIGluIHRoZVxuICAgICBmaXJzdCBwbGFjZS5cblxuICAgICBUbyBlbnN1cmUgdGhhdCB0aGlzIGRlZmVycmFsIG1lY2hhbmlzbSBpcyBhbHdheXMgcHJvcGVybHkgaW52b2tlZCwgYWxsXG4gICAgIGNhbGxiYWNrcyBjYWxsZWQgYnkgTHd0IGFyZSBjYWxsZWQgdGhyb3VnaCBvbmUgb2YgdGhyZWUgZnVuY3Rpb25zIHByb3ZpZGVkXG4gICAgIGJ5IHRoaXMgbW9kdWxlOlxuXG4gICAgIC0gW3Jlc29sdmVdLCB3aGljaCBjYWxscyBhbGwgdGhlIGNhbGxiYWNrcyBhc3NvY2lhdGVkIHRvIGEgcGVuZGluZyBwcm9taXNlXG4gICAgICAgKGFuZCByZXNvbHZlcyBpdCwgY2hhbmdpbmcgaXRzIHN0YXRlKS5cbiAgICAgLSBbcnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtXSwgd2hpY2ggaXMgaW50ZXJuYWxseSB1c2VkIGJ5IFtyZXNvbHZlXSB0b1xuICAgICAgIGNhbGwgY2FsbGJhY2tzIHRoYXQgYXJlIGluIGEgcmVjb3JkIG9mIHR5cGUgWydhIGNhbGxiYWNrc10sIHdoaWNoIHJlY29yZHNcbiAgICAgICBhcmUgYXNzb2NpYXRlZCB3aXRoIHBlbmRpbmcgcHJvbWlzZXMuIFRoaXMgZnVuY3Rpb24gaXMgZXhwb3NlZCBiZWNhdXNlXG4gICAgICAgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgW0x3dC5jYW5jZWxdIG5lZWRzIHRvIGNhbGwgaXQgZGlyZWN0bHkuXG4gICAgICAgUHJvbWlzZSByZXNvbHV0aW9uIGFuZCBjYWxsYmFjayBjYWxsaW5nIGFyZSBzZXBhcmF0ZWQgaW4gYSB1bmlxdWUgd2F5IGluXG4gICAgICAgW2NhbmNlbF0uXG4gICAgIC0gW3J1bl9jYWxsYmFja19vcl9kZWZlcl9pdF0sIHdoaWNoIGlzIHVzZWQgYnkgW0x3dC5iaW5kXSBhbmQgc2ltaWxhclxuICAgICAgIGZ1bmN0aW9ucyB0byBjYWxsIHNpbmdsZSBjYWxsYmFja3Mgd2hlbiB0aGUgcHJvbWlzZXMgcGFzc2VkIHRvXG4gICAgICAgW0x3dC5iaW5kXSwgZXRjLiwgYXJlIGFscmVhZHkgcmVzb2x2ZWQuXG5cbiAgICAgQ3VycmVudCBMd3QgYWN0dWFsbHkgaGFzIGEgbWVzc3kgbWl4IG9mIGNhbGxiYWNrLWNhbGxpbmcgYmVoYXZpb3JzLiBGb3JcbiAgICAgZXhhbXBsZSwgW0x3dC5iaW5kXSBpcyBleHBlY3RlZCB0byBhbHdheXMgY2FsbCBpdHMgY2FsbGJhY2sgaW1tZWRpYXRlbHksXG4gICAgIHdoaWxlIFtMd3Qud2FrZXVwX2xhdGVyXSBpcyBleHBlY3RlZCB0byBkZWZlciBhbGwgY2FsbGJhY2tzIG9mIHRoZSBwcm9taXNlXG4gICAgIHJlc29sdmVkLCB7ZSB1bmxlc3N9IEx3dCBpcyBub3QgYWxyZWFkeSBpbnNpZGUgdGhlIHJlc29sdXRpb24gbG9vcC5cblxuICAgICBXZSBwbGFubmVkIHRvIG1ha2UgdGhlc2UgYmVoYXZpb3JzIHVuaWZvcm0gaW4gTHd0IDQuMC4wLCBidXQgZGVjaWRlZFxuICAgICBhZ2FpbnN0IGl0IGR1ZSB0byB0aGUgcmlzayBvZiBicmVha2luZyB1c2Vycy4gU2VlXG5cbiAgICAgLSBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvcHVsbC81MDBcbiAgICAgLSBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvcHVsbC81MTlcblxuICAgICBBcyBwYXJ0IG9mIHRoZSBwcmVwYXJhdGlvbiBmb3IgdGhlIGNoYW5nZSwgdGhlIGFib3ZlIGNhbGxiYWNrLWludm9raW5nXG4gICAgIGZ1bmN0aW9ucyBzdXBwb3J0IHNldmVyYWwgb3B0aW9uYWwgYXJndW1lbnRzIHRvIGVtdWxhdGUgdGhlIHZhcmlvdXNcbiAgICAgYmVoYXZpb3JzLiBXZSBkZWNpZGVkIG5vdCB0byByZW1vdmUgdGhpcyBtYWNoaW5lcnksIGJlY2F1c2Ugd2UgbWlnaHQgd2FudFxuICAgICB0byBleHBvc2UgZGlmZmVyZW50IEFQSXMgdG8gTHd0IGluIHRoZSBmdXR1cmUuXG5cbiAgICAgLSBbfmFsbG93X2RlZmVycmluZzpmYWxzZV0gYWxsb3dzIGlnbm9yaW5nIHRoZSBjYWxsYmFjayBzdGFjayBkZXB0aCwgYW5kXG4gICAgICAgY2FsbGluZyB0aGUgY2FsbGJhY2tzIGltbWVkaWF0ZWx5LiBUaGlzIGVtdWxhdGVzIHRoZSBvbGQgcmVzb2x1dGlvblxuICAgICAgIGJlaGF2aW9yLlxuICAgICAtIFt+bWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoOjFdIGFsbG93cyBsaW1pdGluZyB0aGUgZGVwdGggd2hpY2hcbiAgICAgICB0cmlnZ2VycyBkZWZlcnJhbCBvbiBhIHBlci1jYWxsLXNpdGUgYmFzaXMuIFRoaXMgaXMgdXNlZCBieVxuICAgICAgIFtMd3Qud2FrZXVwX2xhdGVyXS5cbiAgICAgLSBbfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXSBpcyBsaWtlXG4gICAgICAgW35hbGxvd19kZWZlcnJpbmc6ZmFsc2VdLCB3aGljaCBpZ25vcmVzIHRoZSBjYWxsYmFjayBzdGFjayBkZXB0aC5cbiAgICAgICBIb3dldmVyLCB0byBlbnN1cmUgdGhhdCB0aGUgY2FsbGJhY2sgaXMgdGFpbC1jYWxsZWQsIEx3dCBkb2Vzbid0IGV2ZW5cbiAgICAgICB1cGRhdGUgdGhlIGNhbGxiYWNrIHN0YWNrIGRlcHRoIGZvciB0aGUgYmVuZWZpdCBvZiAqb3RoZXIqIGNhbGxiYWNrXG4gICAgICAgY2FsbHMuIEl0IGp1c3QgYmxpbmRseSBjYWxscyB0aGUgY2FsbGJhY2suXG5cbiAgICAgU2VlIGRpc2N1c3Npb24gb2YgY2FsbGJhY2stY2FsbGluZyBzZW1hbnRpY3MgaW46XG5cbiAgICAgICBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvaXNzdWVzLzMyOVxuXG4gICAgICogQ29udGV4dFxuXG4gICAgIFRoZSByZXNvbHV0aW9uIGxvb3AgZWZmZWN0aXZlbHkgaGFuZGxlcyBhbGwgcHJvbWlzZXMgdGhhdCBjYW4gYmUgcmVzb2x2ZWRcbiAgICAgaW1tZWRpYXRlbHksIHdpdGhvdXQgYmxvY2tpbmcgb24gSS9PLiBBIGNvbXBsZXRlIHByb2dyYW0gdGhhdCBkb2VzIEkvT1xuICAgICBjYWxscyBbTHd0X21haW4ucnVuXS4gU2VlIFwiTm8gSS9PXCIgaW4gdGhlIE92ZXJ2aWV3LiAqKVxuXG5cblxuICBsZXQgYXN5bmNfZXhjZXB0aW9uX2hvb2sgPVxuICAgIHJlZiAoZnVuIGV4biAtPlxuICAgICAgcHJlcnJfc3RyaW5nIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiBcIjtcbiAgICAgIHByZXJyX3N0cmluZyAoUHJpbnRleGMudG9fc3RyaW5nIGV4bik7XG4gICAgICBwcmVycl9jaGFyICdcXG4nO1xuICAgICAgUHJpbnRleGMucHJpbnRfYmFja3RyYWNlIHN0ZGVycjtcbiAgICAgIGZsdXNoIHN0ZGVycjtcbiAgICAgIGV4aXQgMilcblxuICBsZXQgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiB2ID1cbiAgICAoKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjYXJlIGlmIFtmXSBldmFsdWF0ZXMgdG8gYSBwcm9taXNlLiBJblxuICAgICAgIHBhcnRpY3VsYXIsIGlmIFtmIHZdIGV2YWx1YXRlcyB0byBbcF0gYW5kIFtwXSBpcyBhbHJlYWR5IHJlamVjdGVkIG9yIHdpbGxcbiAgICAgICBiZSByZWplY3QgbGF0ZXIsIGl0IGlzIG5vdCB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhpcyBmdW5jdGlvbiB0byBwYXNzXG4gICAgICAgdGhlIGV4Y2VwdGlvbiB0byBbIWFzeW5jX2V4Y2VwdGlvbl9ob29rXS4gKilcbiAgICB0cnkgZiB2XG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT5cbiAgICAgICFhc3luY19leGNlcHRpb25faG9vayBleG5cblxuXG5cbiAgZXhjZXB0aW9uIENhbmNlbGVkXG5cblxuXG4gICgqIFJ1bnMgdGhlIGNhbGxiYWNrcyAoZm9ybWVybHkpIGFzc29jaWF0ZWQgdG8gYSBwcm9taXNlLiBDYW5jZWwgY2FsbGJhY2tzIGFyZVxuICAgICBydW4gZmlyc3QsIGlmIHRoZSBwcm9taXNlIHdhcyBjYW5jZWxlZC4gVGhlc2UgYXJlIGZvbGxvd2VkIGJ5IHJlZ3VsYXJcbiAgICAgY2FsbGJhY2tzLlxuXG4gICAgIFRoZSByZWFzb24gZm9yIHRoZSBcImZvcm1lcmx5XCIgaXMgdGhhdCB0aGUgcHJvbWlzZSdzIHN0YXRlIGhhcyBhbHJlYWR5IGJlZW5cbiAgICAgc2V0IHRvIFtGdWxmaWxsZWQgX10gb3IgW1JlamVjdGVkIF9dLCBzbyB0aGUgY2FsbGJhY2tzIGFyZSBubyBsb25nZXJcbiAgICAgcmVhY2hhYmxlIHRocm91Z2ggdGhlIHByb21pc2UgcmVmZXJlbmNlLiBUaGlzIGlzIHdoeSB0aGUgZGlyZWN0IFtjYWxsYmFja3NdXG4gICAgIHJlY29yZCBtdXN0IGJlIGdpdmVuIHRvIHRoaXMgZnVuY3Rpb24uICopXG4gIGxldCBydW5fY2FsbGJhY2tzXG4gICAgICAoY2FsbGJhY2tzIDogJ2EgY2FsbGJhY2tzKVxuICAgICAgKHJlc3VsdCA6ICdhIHJlc29sdmVkX3N0YXRlKSA6IHVuaXQgPVxuXG4gICAgbGV0IHJ1bl9jYW5jZWxfY2FsbGJhY2tzIGZzID1cbiAgICAgIGxldCByZWMgaXRlcl9jYWxsYmFja19saXN0IGZzIHJlc3QgPVxuICAgICAgICBtYXRjaCBmcyB3aXRoXG4gICAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfZW1wdHkgLT5cbiAgICAgICAgICBpdGVyX2xpc3QgcmVzdFxuICAgICAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2NhbGxiYWNrIChzdG9yYWdlLCBmKSAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzdG9yYWdlO1xuICAgICAgICAgIGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgKCk7XG4gICAgICAgICAgaXRlcl9saXN0IHJlc3RcbiAgICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9yZW1vdmVfc2VxdWVuY2Vfbm9kZSBub2RlIC0+XG4gICAgICAgICAgTHd0X3NlcXVlbmNlLnJlbW92ZSBub2RlO1xuICAgICAgICAgIGl0ZXJfbGlzdCByZXN0XG4gICAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY29uY2F0IChmcywgZnMnKSAtPlxuICAgICAgICAgIGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyAoZnMnOjpyZXN0KVxuXG4gICAgICBhbmQgaXRlcl9saXN0IHJlc3QgPVxuICAgICAgICBtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGZzOjpyZXN0IC0+IGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyByZXN0XG5cbiAgICAgIGluXG5cbiAgICAgIGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyBbXVxuICAgIGluXG5cbiAgICBsZXQgcnVuX3JlZ3VsYXJfY2FsbGJhY2tzIGZzID1cbiAgICAgIGxldCByZWMgaXRlcl9jYWxsYmFja19saXN0IGZzIHJlc3QgPVxuICAgICAgICBtYXRjaCBmcyB3aXRoXG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5IC0+XG4gICAgICAgICAgaXRlcl9saXN0IHJlc3RcbiAgICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIGYgLT5cbiAgICAgICAgICBmIHJlc3VsdDtcbiAgICAgICAgICBpdGVyX2xpc3QgcmVzdFxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja1xuICAgICAgICAgICAge2NvbnRlbnRzID0gTm9uZX0gLT5cbiAgICAgICAgICBpdGVyX2xpc3QgcmVzdFxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja1xuICAgICAgICAgICAge2NvbnRlbnRzID0gU29tZSBmfSAtPlxuICAgICAgICAgIGYgcmVzdWx0O1xuICAgICAgICAgIGl0ZXJfbGlzdCByZXN0XG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2NvbmNhdCAoZnMsIGZzJykgLT5cbiAgICAgICAgICBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgKGZzJzo6cmVzdClcblxuICAgICAgYW5kIGl0ZXJfbGlzdCByZXN0ID1cbiAgICAgICAgbWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBmczo6cmVzdCAtPiBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgcmVzdFxuXG4gICAgICBpblxuXG4gICAgICBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgW11cbiAgICBpblxuXG4gICAgKCogUGF0dGVybiBtYXRjaGluZyBpcyBtdWNoIGZhc3RlciB0aGFuIHBvbHltb3JwaGljIGNvbXBhcmlzb24uICopXG4gICAgbGV0IGlzX2NhbmNlbGVkID1cbiAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICB8IFJlamVjdGVkIENhbmNlbGVkIC0+IHRydWVcbiAgICAgIHwgUmVqZWN0ZWQgXyAtPiBmYWxzZVxuICAgICAgfCBGdWxmaWxsZWQgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgaWYgaXNfY2FuY2VsZWQgdGhlblxuICAgICAgcnVuX2NhbmNlbF9jYWxsYmFja3MgY2FsbGJhY2tzLmNhbmNlbF9jYWxsYmFja3M7XG4gICAgcnVuX3JlZ3VsYXJfY2FsbGJhY2tzIGNhbGxiYWNrcy5yZWd1bGFyX2NhbGxiYWNrc1xuXG5cblxuICBsZXQgZGVmYXVsdF9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGggPSA0MlxuXG4gIGxldCBjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGggPSByZWYgMFxuXG4gIHR5cGUgZGVmZXJyZWRfY2FsbGJhY2tzID1cbiAgICBEZWZlcnJlZCA6ICgnYSBjYWxsYmFja3MgKiAnYSByZXNvbHZlZF9zdGF0ZSkgLT4gZGVmZXJyZWRfY2FsbGJhY2tzXG4gICAgW0BAb2NhbWwudW5ib3hlZF1cblxuICBsZXQgZGVmZXJyZWRfY2FsbGJhY2tzIDogZGVmZXJyZWRfY2FsbGJhY2tzIFF1ZXVlLnQgPSBRdWV1ZS5jcmVhdGUgKClcblxuICAoKiBCZWZvcmUgZW50ZXJpbmcgYSByZXNvbHV0aW9uIGxvb3AsIGl0IGlzIG5lY2Vzc2FyeSB0byB0YWtlIGEgc25hcHNob3Qgb2ZcbiAgICAgdGhlIGN1cnJlbnQgc3RhdGUgb2Ygc2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlLiBUaGlzIGlzIGJlY2F1c2UgbWFueSBvZlxuICAgICB0aGUgY2FsbGJhY2tzIHRoYXQgd2lsbCBiZSBydW4gd2lsbCBtb2RpZnkgdGhlIHN0b3JhZ2UuIFRoZSBzdG9yYWdlIGlzXG4gICAgIHJlc3RvcmVkIHRvIHRoZSBzbmFwc2hvdCB3aGVuIHRoZSByZXNvbHV0aW9uIGxvb3AgaXMgZXhpdGVkLiAqKVxuICBsZXQgZW50ZXJfcmVzb2x1dGlvbl9sb29wICgpID1cbiAgICBjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGggOj0gIWN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCArIDE7XG4gICAgbGV0IHN0b3JhZ2Vfc25hcHNob3QgPSAhY3VycmVudF9zdG9yYWdlIGluXG4gICAgc3RvcmFnZV9zbmFwc2hvdFxuXG4gIGxldCBsZWF2ZV9yZXNvbHV0aW9uX2xvb3AgKHN0b3JhZ2Vfc25hcHNob3QgOiBzdG9yYWdlKSA6IHVuaXQgPVxuICAgIGlmICFjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGggPSAxIHRoZW4gYmVnaW5cbiAgICAgIHdoaWxlIG5vdCAoUXVldWUuaXNfZW1wdHkgZGVmZXJyZWRfY2FsbGJhY2tzKSBkb1xuICAgICAgICBsZXQgRGVmZXJyZWQgKGNhbGxiYWNrcywgcmVzdWx0KSA9IFF1ZXVlLnBvcCBkZWZlcnJlZF9jYWxsYmFja3MgaW5cbiAgICAgICAgcnVuX2NhbGxiYWNrcyBjYWxsYmFja3MgcmVzdWx0XG4gICAgICBkb25lXG4gICAgZW5kO1xuICAgIGN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA6PSAhY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoIC0gMTtcbiAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc3RvcmFnZV9zbmFwc2hvdFxuXG4gIGxldCBydW5faW5fcmVzb2x1dGlvbl9sb29wIGYgPVxuICAgIGxldCBzdG9yYWdlX3NuYXBzaG90ID0gZW50ZXJfcmVzb2x1dGlvbl9sb29wICgpIGluXG4gICAgbGV0IHJlc3VsdCA9IGYgKCkgaW5cbiAgICBsZWF2ZV9yZXNvbHV0aW9uX2xvb3Agc3RvcmFnZV9zbmFwc2hvdDtcbiAgICByZXN1bHRcblxuICAoKiBUaGlzIGlzIGJhc2ljYWxseSBhIGhhY2sgdG8gZml4IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9pc3N1ZXMvNDguXG4gICAgIElmIGN1cnJlbnRseSByZXNvbHZpbmcgcHJvbWlzZXMsIGl0IGltbWVkaWF0ZWx5IGV4aXRzIGFsbCByZWN1cnNpdmVcbiAgICAgZW50cmllcyBvZiB0aGUgcmVzb2x1dGlvbiBsb29wLCBnb2VzIHRvIHRoZSB0b3AgbGV2ZWwsIHJ1bnMgYW55IGRlZmVycmVkXG4gICAgIGNhbGxiYWNrcywgYW5kIGV4aXRzIHRoZSB0b3AtbGV2ZWwgcmVzb2x1dGlvbiBsb29wLlxuXG4gICAgIFRoZSBuYW1lIHNob3VsZCBwcm9iYWJseSBiZSBbYWJhb25kb25fcmVzb2x1dGlvbl9sb29wXS4gKilcbiAgbGV0IGFiYW5kb25fd2FrZXVwcyAoKSA9XG4gICAgaWYgIWN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA8PiAwIHRoZW5cbiAgICAgIGxlYXZlX3Jlc29sdXRpb25fbG9vcCBTdG9yYWdlX21hcC5lbXB0eVxuXG5cblxuICBsZXQgcnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtXG4gICAgICA/KGFsbG93X2RlZmVycmluZyA9IHRydWUpXG4gICAgICA/KG1heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA9IGRlZmF1bHRfbWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoKVxuICAgICAgY2FsbGJhY2tzIHJlc3VsdCA9XG5cbiAgICBsZXQgc2hvdWxkX2RlZmVyID1cbiAgICAgIGFsbG93X2RlZmVycmluZ1xuICAgICAgJiYgIWN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA+PSBtYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGhcbiAgICBpblxuXG4gICAgaWYgc2hvdWxkX2RlZmVyIHRoZW5cbiAgICAgIFF1ZXVlLnB1c2ggKERlZmVycmVkIChjYWxsYmFja3MsIHJlc3VsdCkpIGRlZmVycmVkX2NhbGxiYWNrc1xuICAgIGVsc2VcbiAgICAgIHJ1bl9pbl9yZXNvbHV0aW9uX2xvb3AgKGZ1biAoKSAtPlxuICAgICAgICBydW5fY2FsbGJhY2tzIGNhbGxiYWNrcyByZXN1bHQpXG5cbiAgbGV0IHJlc29sdmUgP2FsbG93X2RlZmVycmluZyA/bWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoIHAgcmVzdWx0ID1cbiAgICBsZXQgUGVuZGluZyBjYWxsYmFja3MgPSBwLnN0YXRlIGluXG4gICAgbGV0IHAgPSBzZXRfcHJvbWlzZV9zdGF0ZSBwIHJlc3VsdCBpblxuXG4gICAgcnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtXG4gICAgICA/YWxsb3dfZGVmZXJyaW5nID9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGggY2FsbGJhY2tzIHJlc3VsdDtcblxuICAgIHBcblxuICBsZXQgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICA/KHJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbCA9IGZhbHNlKVxuICAgICAgfmNhbGxiYWNrOmZcbiAgICAgIH5pZl9kZWZlcnJlZCA9XG5cbiAgICBpZiBydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGwgdGhlblxuICAgICAgZiAoKVxuXG4gICAgZWxzZVxuICAgICAgbGV0IHNob3VsZF9kZWZlciA9XG4gICAgICAgICFjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGhcbiAgICAgICAgICA+PSBkZWZhdWx0X21heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aFxuICAgICAgaW5cblxuICAgICAgaWYgc2hvdWxkX2RlZmVyIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IGltbWVkaWF0ZV9yZXN1bHQsIGRlZmVycmVkX2NhbGxiYWNrLCBkZWZlcnJlZF9yZXN1bHQgPVxuICAgICAgICAgIGlmX2RlZmVycmVkICgpIGluXG4gICAgICAgIGxldCBkZWZlcnJlZF9yZWNvcmQgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlZ3VsYXJfY2FsbGJhY2tzID1cbiAgICAgICAgICAgICAgUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFja1xuICAgICAgICAgICAgICAgIGRlZmVycmVkX2NhbGxiYWNrO1xuICAgICAgICAgICAgY2FuY2VsX2NhbGxiYWNrcyA9IENhbmNlbF9jYWxsYmFja19saXN0X2VtcHR5O1xuICAgICAgICAgICAgaG93X3RvX2NhbmNlbCA9IE5vdF9jYW5jZWxhYmxlO1xuICAgICAgICAgICAgY2xlYW51cHNfZGVmZXJyZWQgPSAwXG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBRdWV1ZS5wdXNoXG4gICAgICAgICAgKERlZmVycmVkIChkZWZlcnJlZF9yZWNvcmQsIGRlZmVycmVkX3Jlc3VsdCkpIGRlZmVycmVkX2NhbGxiYWNrcztcbiAgICAgICAgaW1tZWRpYXRlX3Jlc3VsdFxuICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIHJ1bl9pbl9yZXNvbHV0aW9uX2xvb3AgKGZ1biAoKSAtPlxuICAgICAgICAgIGYgKCkpXG5lbmRcbmluY2x1ZGUgUmVzb2x1dGlvbl9sb29wXG5cblxuXG5tb2R1bGUgUmVzb2x2aW5nIDpcbnNpZ1xuICB2YWwgd2FrZXVwX2xhdGVyX3Jlc3VsdCA6ICdhIHUgLT4gKCdhLCBleG4pIHJlc3VsdCAtPiB1bml0XG4gIHZhbCB3YWtldXBfbGF0ZXIgOiAnYSB1IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHdha2V1cF9sYXRlcl9leG4gOiBfIHUgLT4gZXhuIC0+IHVuaXRcblxuICB2YWwgd2FrZXVwX3Jlc3VsdCA6ICdhIHUgLT4gKCdhLCBleG4pIHJlc3VsdCAtPiB1bml0XG4gIHZhbCB3YWtldXAgOiAnYSB1IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHdha2V1cF9leG4gOiBfIHUgLT4gZXhuIC0+IHVuaXRcblxuICB2YWwgY2FuY2VsIDogJ2EgdCAtPiB1bml0XG5lbmQgPVxuc3RydWN0XG4gICgqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGRldmlhdGVzIGZyb20gdGhlIFwiaWRlYWxcIiBjYWxsYmFjayBkZWZlcnJhbFxuICAgICBiZWhhdmlvcjogaXQgcnVucyBjYWxsYmFja3MgZGlyZWN0bHkgb24gdGhlIGN1cnJlbnQgc3RhY2suIEl0IHNob3VsZFxuICAgICB0aGVyZWZvcmUgYmUgcG9zc2libGUgdG8gY2F1c2UgYSBzdGFjayBvdmVyZmxvdyB1c2luZyB0aGlzIGZ1bmN0aW9uLiAqKVxuICBsZXQgd2FrZXVwX2dlbmVyYWwgYXBpX2Z1bmN0aW9uX25hbWUgciByZXN1bHQgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcmVzb2x2ZXIgciBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IFJlamVjdGVkIENhbmNlbGVkIC0+XG4gICAgICAoKVxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZyBcIkx3dC4lc1wiIGFwaV9mdW5jdGlvbl9uYW1lXG4gICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmcgXCJMd3QuJXNcIiBhcGlfZnVuY3Rpb25fbmFtZVxuXG4gICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgIGxldCByZXN1bHQgPSBzdGF0ZV9vZl9yZXN1bHQgcmVzdWx0IGluXG4gICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID0gcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAgcmVzdWx0IGluXG4gICAgICBpZ25vcmUgcFxuXG4gIGxldCB3YWtldXBfcmVzdWx0IHIgcmVzdWx0ID0gd2FrZXVwX2dlbmVyYWwgXCJ3YWtldXBfcmVzdWx0XCIgciByZXN1bHRcbiAgbGV0IHdha2V1cCByIHYgPSB3YWtldXBfZ2VuZXJhbCBcIndha2V1cFwiIHIgKE9rIHYpXG4gIGxldCB3YWtldXBfZXhuIHIgZXhuID0gd2FrZXVwX2dlbmVyYWwgXCJ3YWtldXBfZXhuXCIgciAoRXJyb3IgZXhuKVxuXG4gIGxldCB3YWtldXBfbGF0ZXJfZ2VuZXJhbCBhcGlfZnVuY3Rpb25fbmFtZSByIHJlc3VsdCA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9yZXNvbHZlciByIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgUmVqZWN0ZWQgQ2FuY2VsZWQgLT5cbiAgICAgICgpXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnIFwiTHd0LiVzXCIgYXBpX2Z1bmN0aW9uX25hbWVcbiAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZyBcIkx3dC4lc1wiIGFwaV9mdW5jdGlvbl9uYW1lXG5cbiAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgbGV0IHJlc3VsdCA9IHN0YXRlX29mX3Jlc3VsdCByZXN1bHQgaW5cbiAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPVxuICAgICAgICByZXNvbHZlIH5tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGg6MSBwIHJlc3VsdCBpblxuICAgICAgaWdub3JlIHBcblxuICBsZXQgd2FrZXVwX2xhdGVyX3Jlc3VsdCByIHJlc3VsdCA9XG4gICAgd2FrZXVwX2xhdGVyX2dlbmVyYWwgXCJ3YWtldXBfbGF0ZXJfcmVzdWx0XCIgciByZXN1bHRcbiAgbGV0IHdha2V1cF9sYXRlciByIHYgPVxuICAgIHdha2V1cF9sYXRlcl9nZW5lcmFsIFwid2FrZXVwX2xhdGVyXCIgciAoT2sgdilcbiAgbGV0IHdha2V1cF9sYXRlcl9leG4gciBleG4gPVxuICAgIHdha2V1cF9sYXRlcl9nZW5lcmFsIFwid2FrZXVwX2xhdGVyX2V4blwiIHIgKEVycm9yIGV4bilcblxuXG5cbiAgdHlwZSBwYWNrZWRfY2FsbGJhY2tzID1cbiAgICB8IFBhY2tlZCA6IF8gY2FsbGJhY2tzIC0+IHBhY2tlZF9jYWxsYmFja3NcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuXG4gICgqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGRldmlhdGVzIGZyb20gdGhlIFwiaWRlYWxcIiBjYWxsYmFjayBkZWZlcnJhbFxuICAgICBiZWhhdmlvcjogaXQgcnVucyBjYWxsYmFja3MgZGlyZWN0bHkgb24gdGhlIGN1cnJlbnQgc3RhY2suIEl0IHNob3VsZFxuICAgICB0aGVyZWZvcmUgYmUgcG9zc2libGUgdG8gY2F1c2UgYSBzdGFjayBvdmVyZmxvdyB1c2luZyB0aGlzIGZ1bmN0aW9uLiAqKVxuICBsZXQgY2FuY2VsIHAgPVxuICAgIGxldCBjYW5jZWxlZF9yZXN1bHQgPSBSZWplY3RlZCBDYW5jZWxlZCBpblxuXG4gICAgKCogV2Fsa3MgdGhlIHByb21pc2UgZGVwZW5kZW5jeSBncmFwaCBiYWNrd2FyZHMsIGxvb2tpbmcgZm9yIGNhbmNlbGFibGVcbiAgICAgICBpbml0aWFsIHByb21pc2VzLCBhbmQgY2FuY2VscyAob25seSkgdGhlbS5cblxuICAgICAgIEZvdW5kIGluaXRpYWwgcHJvbWlzZXMgYXJlIGNhbmNlbGVkIGltbWVkaWF0ZWx5LCBhcyB0aGV5IGFyZSBmb3VuZCwgYnlcbiAgICAgICBzZXR0aW5nIHRoZWlyIHN0YXRlIHRvIFtSZWplY3RlZCBDYW5jZWxlZF0uIFRoaXMgaXMgdG8gcHJldmVudCB0aGVtIGZyb21cbiAgICAgICBiZWluZyBcImZvdW5kIHR3aWNlXCIgaWYgdGhleSBhcmUgcmVhY2hhYmxlIGJ5IHR3byBvciBtb3JlIGRpc3RpbmN0IHBhdGhzXG4gICAgICAgdGhyb3VnaCB0aGUgcHJvbWlzZSBkZXBlbmRlbmN5IGdyYXBoLlxuXG4gICAgICAgVGhlIGNhbGxiYWNrcyBvZiB0aGVzZSBpbml0aWFsIHByb21pc2VzIGFyZSB0aGVuIHJ1biwgaW4gYSBzZXBhcmF0ZVxuICAgICAgIHBoYXNlLiBUaGVzZSBjYWxsYmFja3MgcHJvcGFnYXRlIGNhbmNlbGxhdGlvbiBmb3J3YXJkcyB0byBhbnkgZGVwZW5kZW50XG4gICAgICAgcHJvbWlzZXMuIFNlZSBcIkNhbmNlbGxhdGlvblwiIGluIHRoZSBPdmVydmlldy4gKilcbiAgICBsZXQgcHJvcGFnYXRlX2NhbmNlbCA6IChfLCBfLCBfKSBwcm9taXNlIC0+IHBhY2tlZF9jYWxsYmFja3MgbGlzdCA9XG4gICAgICAgIGZ1biBwIC0+XG4gICAgICBsZXQgcmVjIGNhbmNlbF9hbmRfY29sbGVjdF9jYWxsYmFja3MgOlxuICAgICAgICAgICdhICd1ICdjLiBwYWNrZWRfY2FsbGJhY2tzIGxpc3QgLT4gKCdhLCAndSwgJ2MpIHByb21pc2UgLT5cbiAgICAgICAgICAgIHBhY2tlZF9jYWxsYmFja3MgbGlzdCA9XG4gICAgICAgICAgZnVuICh0eXBlIGMpIGNhbGxiYWNrc19hY2N1bXVsYXRvciAocCA6IChfLCBfLCBjKSBwcm9taXNlKSAtPlxuXG4gICAgICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG4gICAgICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgICAgICAoKiBJZiB0aGUgcHJvbWlzZSBpcyBub3Qgc3RpbGwgcGVuZGluZywgaXQgY2FuJ3QgYmUgY2FuY2VsZWQuICopXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgICBjYWxsYmFja3NfYWNjdW11bGF0b3JcbiAgICAgICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICAgICAgY2FsbGJhY2tzX2FjY3VtdWxhdG9yXG5cbiAgICAgICAgfCBQZW5kaW5nIGNhbGxiYWNrcyAtPlxuICAgICAgICAgIG1hdGNoIGNhbGxiYWNrcy5ob3dfdG9fY2FuY2VsIHdpdGhcbiAgICAgICAgICB8IE5vdF9jYW5jZWxhYmxlIC0+XG4gICAgICAgICAgICBjYWxsYmFja3NfYWNjdW11bGF0b3JcbiAgICAgICAgICB8IENhbmNlbF90aGlzX3Byb21pc2UgLT5cbiAgICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPVxuICAgICAgICAgICAgICBzZXRfcHJvbWlzZV9zdGF0ZSBwIGNhbmNlbGVkX3Jlc3VsdCBpblxuICAgICAgICAgICAgaWdub3JlIHA7XG4gICAgICAgICAgICAoUGFja2VkIGNhbGxiYWNrcyk6OmNhbGxiYWNrc19hY2N1bXVsYXRvclxuICAgICAgICAgIHwgUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCcgLT5cbiAgICAgICAgICAgIGNhbmNlbF9hbmRfY29sbGVjdF9jYWxsYmFja3MgY2FsbGJhY2tzX2FjY3VtdWxhdG9yIHAnXG4gICAgICAgICAgfCBQcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMgLT5cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IGNhbmNlbF9hbmRfY29sbGVjdF9jYWxsYmFja3MgY2FsbGJhY2tzX2FjY3VtdWxhdG9yIHBzXG4gICAgICBpblxuICAgICAgY2FuY2VsX2FuZF9jb2xsZWN0X2NhbGxiYWNrcyBbXSBwXG4gICAgaW5cblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IGNhbGxiYWNrcyA9IHByb3BhZ2F0ZV9jYW5jZWwgcCBpblxuXG4gICAgY2FsbGJhY2tzIHw+IExpc3QuaXRlciAoZnVuIChQYWNrZWQgY2FsbGJhY2tzKSAtPlxuICAgICAgcnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtXG4gICAgICAgIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgY2FsbGJhY2tzIGNhbmNlbGVkX3Jlc3VsdClcbmVuZFxuaW5jbHVkZSBSZXNvbHZpbmdcblxuXG5cbm1vZHVsZSBUcml2aWFsX3Byb21pc2VzIDpcbnNpZ1xuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICB2YWwgZmFpbCA6IGV4biAtPiBfIHRcbiAgdmFsIG9mX3Jlc3VsdCA6ICgnYSwgZXhuKSByZXN1bHQgLT4gJ2EgdFxuXG4gIHZhbCByZXR1cm5fdW5pdCA6IHVuaXQgdFxuICB2YWwgcmV0dXJuX3RydWUgOiBib29sIHRcbiAgdmFsIHJldHVybl9mYWxzZSA6IGJvb2wgdFxuICB2YWwgcmV0dXJuX25vbmUgOiBfIG9wdGlvbiB0XG4gIHZhbCByZXR1cm5fc29tZSA6ICdhIC0+ICdhIG9wdGlvbiB0XG4gIHZhbCByZXR1cm5fb2sgOiAnYSAtPiAoJ2EsIF8pIHJlc3VsdCB0XG4gIHZhbCByZXR1cm5fZXJyb3IgOiAnZSAtPiAoXywgJ2UpIHJlc3VsdCB0XG4gIHZhbCByZXR1cm5fbmlsIDogXyBsaXN0IHRcblxuICB2YWwgZmFpbF93aXRoIDogc3RyaW5nIC0+IF8gdFxuICB2YWwgZmFpbF9pbnZhbGlkX2FyZyA6IHN0cmluZyAtPiBfIHRcbmVuZCA9XG5zdHJ1Y3RcbiAgbGV0IHJldHVybiB2ID1cbiAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSBGdWxmaWxsZWQgdn1cblxuICBsZXQgb2ZfcmVzdWx0IHJlc3VsdCA9XG4gICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gc3RhdGVfb2ZfcmVzdWx0IHJlc3VsdH1cblxuICBsZXQgZmFpbCBleG4gPVxuICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IFJlamVjdGVkIGV4bn1cblxuICBsZXQgcmV0dXJuX3VuaXQgPSByZXR1cm4gKClcbiAgbGV0IHJldHVybl9ub25lID0gcmV0dXJuIE5vbmVcbiAgbGV0IHJldHVybl9zb21lIHggPSByZXR1cm4gKFNvbWUgeClcbiAgbGV0IHJldHVybl9uaWwgPSByZXR1cm4gW11cbiAgbGV0IHJldHVybl90cnVlID0gcmV0dXJuIHRydWVcbiAgbGV0IHJldHVybl9mYWxzZSA9IHJldHVybiBmYWxzZVxuICBsZXQgcmV0dXJuX29rIHggPSByZXR1cm4gKE9rIHgpXG4gIGxldCByZXR1cm5fZXJyb3IgeCA9IHJldHVybiAoRXJyb3IgeClcblxuICBsZXQgZmFpbF93aXRoIG1zZyA9XG4gICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gUmVqZWN0ZWQgKEZhaWx1cmUgbXNnKX1cblxuICBsZXQgZmFpbF9pbnZhbGlkX2FyZyBtc2cgPVxuICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IFJlamVjdGVkIChJbnZhbGlkX2FyZ3VtZW50IG1zZyl9XG5lbmRcbmluY2x1ZGUgVHJpdmlhbF9wcm9taXNlc1xuXG5cblxubW9kdWxlIFBlbmRpbmdfcHJvbWlzZXMgOlxuc2lnXG4gICgqIEludGVybmFsICopXG4gIHZhbCBuZXdfcGVuZGluZyA6XG4gICAgaG93X3RvX2NhbmNlbDpob3dfdG9fY2FuY2VsIC0+ICgnYSwgdW5kZXJseWluZywgcGVuZGluZykgcHJvbWlzZVxuICB2YWwgcHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIDogXyB0IGxpc3QgLT4gaG93X3RvX2NhbmNlbFxuXG4gICgqIEluaXRpYWwgcGVuZGluZyBwcm9taXNlcyAocHVibGljKSAqKVxuICB2YWwgd2FpdCA6IHVuaXQgLT4gJ2EgdCAqICdhIHVcbiAgdmFsIHRhc2sgOiB1bml0IC0+ICdhIHQgKiAnYSB1XG5cbiAgdmFsIGFkZF90YXNrX3IgOiAnYSB1IEx3dF9zZXF1ZW5jZS50IC0+ICdhIHRcbiAgdmFsIGFkZF90YXNrX2wgOiAnYSB1IEx3dF9zZXF1ZW5jZS50IC0+ICdhIHRcblxuICB2YWwgcHJvdGVjdGVkIDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBub19jYW5jZWwgOiAnYSB0IC0+ICdhIHRcbmVuZCA9XG5zdHJ1Y3RcbiAgbGV0IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsID1cbiAgICBsZXQgc3RhdGUgPVxuICAgICAgUGVuZGluZyB7XG4gICAgICAgIHJlZ3VsYXJfY2FsbGJhY2tzID0gUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5O1xuICAgICAgICBjYW5jZWxfY2FsbGJhY2tzID0gQ2FuY2VsX2NhbGxiYWNrX2xpc3RfZW1wdHk7XG4gICAgICAgIGhvd190b19jYW5jZWw7XG4gICAgICAgIGNsZWFudXBzX2RlZmVycmVkID0gMDtcbiAgICAgIH1cbiAgICBpblxuICAgIHtzdGF0ZX1cblxuICBsZXQgcHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIHBzID1cbiAgICAoKiBVc2luZyBhIGRpcnR5IGNhc3QgaGVyZSB0byBhdm9pZCByZWJ1aWxkaW5nIHRoZSBsaXN0IDooIE5vdCBib3RoZXJpbmdcbiAgICAgICB3aXRoIHRoZSBpbnZhcmlhbnRzLCBiZWNhdXNlIFtQcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWxdIHBhY2tzIHRoZW0sXG4gICAgICAgYW5kIGNvZGUgdGhhdCBtYXRjaGVzIG9uIFtQcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWxdIGRvZXNuJ3QgY2FyZSBhYm91dFxuICAgICAgIHRoZW0gYW55d2F5LiAqKVxuICAgIGxldCBjYXN0X3Byb21pc2VfbGlzdCA6ICdhIHQgbGlzdCAtPiAoJ2EsIF8sIF8pIHByb21pc2UgbGlzdCA9IE9iai5tYWdpYyBpblxuICAgIFByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCAoY2FzdF9wcm9taXNlX2xpc3QgcHMpXG5cblxuXG4gIGxldCB3YWl0ICgpID1cbiAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOk5vdF9jYW5jZWxhYmxlIGluXG4gICAgdG9fcHVibGljX3Byb21pc2UgcCwgdG9fcHVibGljX3Jlc29sdmVyIHBcblxuICBsZXQgdGFzayAoKSA9XG4gICAgbGV0IHAgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDpDYW5jZWxfdGhpc19wcm9taXNlIGluXG4gICAgdG9fcHVibGljX3Byb21pc2UgcCwgdG9fcHVibGljX3Jlc29sdmVyIHBcblxuXG5cblxuICBsZXQgY2FzdF9zZXF1ZW5jZV9ub2RlXG4gICAgICAobm9kZSA6ICdhIHUgTHd0X3NlcXVlbmNlLm5vZGUpXG4gICAgICAoX2FjdHVhbF9jb250ZW50OignYSwgJ3UsICdjKSBwcm9taXNlKVxuICAgICAgICA6ICgnYSwgJ3UsICdjKSBwcm9taXNlIEx3dF9zZXF1ZW5jZS5ub2RlID1cbiAgICBPYmoubWFnaWMgbm9kZVxuXG4gIGxldCBhZGRfdGFza19yIHNlcXVlbmNlID1cbiAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOkNhbmNlbF90aGlzX3Byb21pc2UgaW5cbiAgICBsZXQgbm9kZSA9IEx3dF9zZXF1ZW5jZS5hZGRfciAodG9fcHVibGljX3Jlc29sdmVyIHApIHNlcXVlbmNlIGluXG4gICAgbGV0IG5vZGUgPSBjYXN0X3NlcXVlbmNlX25vZGUgbm9kZSBwIGluXG5cbiAgICBsZXQgUGVuZGluZyBjYWxsYmFja3MgPSBwLnN0YXRlIGluXG4gICAgY2FsbGJhY2tzLmNhbmNlbF9jYWxsYmFja3MgPC1cbiAgICAgIENhbmNlbF9jYWxsYmFja19saXN0X3JlbW92ZV9zZXF1ZW5jZV9ub2RlIG5vZGU7XG5cbiAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgbGV0IGFkZF90YXNrX2wgc2VxdWVuY2UgPVxuICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6Q2FuY2VsX3RoaXNfcHJvbWlzZSBpblxuICAgIGxldCBub2RlID0gTHd0X3NlcXVlbmNlLmFkZF9sICh0b19wdWJsaWNfcmVzb2x2ZXIgcCkgc2VxdWVuY2UgaW5cbiAgICBsZXQgbm9kZSA9IGNhc3Rfc2VxdWVuY2Vfbm9kZSBub2RlIHAgaW5cblxuICAgIGxldCBQZW5kaW5nIGNhbGxiYWNrcyA9IHAuc3RhdGUgaW5cbiAgICBjYWxsYmFja3MuY2FuY2VsX2NhbGxiYWNrcyA8LVxuICAgICAgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfcmVtb3ZlX3NlcXVlbmNlX25vZGUgbm9kZTtcblxuICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuXG5cbiAgbGV0IHByb3RlY3RlZCBwID1cbiAgICBsZXQgSW50ZXJuYWwgcF9pbnRlcm5hbCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHBfaW50ZXJuYWwpLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+IHBcbiAgICB8IFJlamVjdGVkIF8gLT4gcFxuXG4gICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgIGxldCBwJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOkNhbmNlbF90aGlzX3Byb21pc2UgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJyA9IG1heV9ub3dfYmVfcHJveHkgcCcgaW5cbiAgICAgICAgbGV0IHAnID0gdW5kZXJseWluZyBwJyBpblxuICAgICAgICAoKiBJbiB0aGlzIGNhbGxiYWNrLCBbcCddIHdpbGwgZWl0aGVyIHN0aWxsIGl0c2VsZiBiZSBwZW5kaW5nLCBvciBpdFxuICAgICAgICAgICB3aWxsIGhhdmUgYmVjb21lIGEgcHJveHkgZm9yIGEgcGVuZGluZyBwcm9taXNlLiBUaGUgcmVhc29uaW5nIGZvclxuICAgICAgICAgICB0aGlzIGlzIGFsbW9zdCB0aGUgc2FtZSBhcyBpbiB0aGUgY29tbWVudCBhdCBbbWF5X25vd19iZV9wcm94eV0uIFRoZVxuICAgICAgICAgICBkaWZmZXJlbmNlcyBhcmU6XG5cbiAgICAgICAgICAgLSBbcCddICppcyogYW4gaW5pdGlhbCBwcm9taXNlLCBzbyBpdCAqY2FuKiBnZXQgY2FuY2VsZWQuIEhvd2V2ZXIsIGlmXG4gICAgICAgICAgICAgaXQgZG9lcywgdGhlIFtvbl9jYW5jZWxdIGhhbmRsZXIgaW5zdGFsbGVkIGJlbG93IHdpbGwgcmVtb3ZlIHRoaXNcbiAgICAgICAgICAgICBjYWxsYmFjay5cbiAgICAgICAgICAgLSBbcCddIG5ldmVyIGdldHMgcGFzc2VkIHRvIFttYWtlX2ludG9fcHJveHldLCB0aGUgb25seSBlZmZlY3Qgb2ZcbiAgICAgICAgICAgICB3aGljaCBpcyB0aGF0IGl0IGNhbm5vdCBiZSB0aGUgdW5kZXJseWluZyBwcm9taXNlIG9mIGFub3RoZXJcbiAgICAgICAgICAgICAocHJveHkpIHByb21pc2UuIFNvLCBbcCddIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgaGVhZCBvZiBhIGNoYWluIG9mXG4gICAgICAgICAgICAgW1Byb3h5IF9dIGxpbmtzLCBhbmQgaXQncyBub3QgbmVjZXNzYXJ5IHRvIHdvcnJ5IGFib3V0IHdoZXRoZXIgdGhlXG4gICAgICAgICAgICAgaW5kdWN0aXZlIHJlYXNvbmluZyBhdCBbbWF5X25vd19iZV9wcm94eV0gYXBwbGllcy4gKilcblxuICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJyA9XG4gICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnIHBfcmVzdWx0IGluXG4gICAgICAgIGlnbm9yZSBwJ1xuICAgICAgaW5cblxuICAgICAgbGV0IHJlbW92ZV90aGVfY2FsbGJhY2sgPVxuICAgICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfYW5kX2dpdmVfcmVtb3ZlX2Z1bmN0aW9uXG4gICAgICAgICAgW3BdIGNhbGxiYWNrXG4gICAgICBpblxuXG4gICAgICBsZXQgUGVuZGluZyBwJ19jYWxsYmFja3MgPSBwJy5zdGF0ZSBpblxuICAgICAgYWRkX2NhbmNlbF9jYWxsYmFjayBwJ19jYWxsYmFja3MgcmVtb3ZlX3RoZV9jYWxsYmFjaztcblxuICAgICAgdG9fcHVibGljX3Byb21pc2UgcCdcblxuICBsZXQgbm9fY2FuY2VsIHAgPVxuICAgIGxldCBJbnRlcm5hbCBwX2ludGVybmFsID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcF9pbnRlcm5hbCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT4gcFxuICAgIHwgUmVqZWN0ZWQgXyAtPiBwXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBwJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOk5vdF9jYW5jZWxhYmxlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcgPSBtYXlfbm93X2JlX3Byb3h5IHAnIGluXG4gICAgICAgIGxldCBwJyA9IHVuZGVybHlpbmcgcCcgaW5cbiAgICAgICAgKCogSW4gdGhpcyBjYWxsYmFjaywgW3AnXSB3aWxsIGVpdGhlciBzdGlsbCBpdHNlbGYgYmUgcGVuZGluZywgb3IgaXRcbiAgICAgICAgICAgd2lsbCBoYXZlIGJlY29tZSBhIHByb3h5IGZvciBhIHBlbmRpbmcgcHJvbWlzZS4gVGhlIHJlYXNvbmluZyBmb3JcbiAgICAgICAgICAgdGhpcyBpcyBhcyBpbiBbcHJvdGVjdGVkXSBhbmQgW21heV9ub3dfYmVfcHJveHldLCBidXQgZXZlbiBzaW1wbGVyLFxuICAgICAgICAgICBiZWNhdXNlIFtwJ10gaXMgbm90IGNhbmNlbGFibGUuICopXG5cbiAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcgPVxuICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwJyBwX3Jlc3VsdCBpblxuICAgICAgICBpZ25vcmUgcCdcbiAgICAgIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuXG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSBwJ1xuZW5kXG5pbmNsdWRlIFBlbmRpbmdfcHJvbWlzZXNcblxuXG5cbm1vZHVsZSBTZXF1ZW50aWFsX2NvbXBvc2l0aW9uIDpcbnNpZ1xuICAoKiBNYWluIGludGVyZmFjZSAocHVibGljKSAqKVxuICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcbiAgdmFsIG1hcCA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gIGV4dGVybmFsIHJlcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyZXJhaXNlXCJcbiAgdmFsIGNhdGNoIDogKHVuaXQgLT4gJ2EgdCkgLT4gKGV4biAtPiAnYSB0KSAtPiAnYSB0XG4gIHZhbCBmaW5hbGl6ZSA6ICh1bml0IC0+ICdhIHQpIC0+ICh1bml0IC0+IHVuaXQgdCkgLT4gJ2EgdFxuICB2YWwgdHJ5X2JpbmQgOiAodW5pdCAtPiAnYSB0KSAtPiAoJ2EgLT4gJ2IgdCkgLT4gKGV4biAtPiAnYiB0KSAtPiAnYiB0XG5cbiAgKCogQ2FuY2VsIGNhbGxiYWNrcyAocHVibGljKS4gKilcbiAgdmFsIG9uX2NhbmNlbCA6ICdhIHQgLT4gKHVuaXQgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqIE5vbi1wcm9taXNlIGNhbGxiYWNrcyAocHVibGljKSAqKVxuICB2YWwgb25fc3VjY2VzcyA6ICdhIHQgLT4gKCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIG9uX2ZhaWx1cmUgOiBfIHQgLT4gKGV4biAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBvbl90ZXJtaW5hdGlvbiA6IF8gdCAtPiAodW5pdCAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBvbl9hbnkgOiAnYSB0IC0+ICgnYSAtPiB1bml0KSAtPiAoZXhuIC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiBCYWNrdHJhY2Ugc3VwcG9ydCAoaW50ZXJuYWw7IGZvciB1c2UgYnkgdGhlIFBQWCkgKilcbiAgdmFsIGJhY2t0cmFjZV9iaW5kIDpcbiAgICAoZXhuIC0+IGV4bikgLT4gJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICB2YWwgYmFja3RyYWNlX2NhdGNoIDpcbiAgICAoZXhuIC0+IGV4bikgLT4gKHVuaXQgLT4gJ2EgdCkgLT4gKGV4biAtPiAnYSB0KSAtPiAnYSB0XG4gIHZhbCBiYWNrdHJhY2VfZmluYWxpemUgOlxuICAgIChleG4gLT4gZXhuKSAtPiAodW5pdCAtPiAnYSB0KSAtPiAodW5pdCAtPiB1bml0IHQpIC0+ICdhIHRcbiAgdmFsIGJhY2t0cmFjZV90cnlfYmluZCA6XG4gICAgKGV4biAtPiBleG4pIC0+ICh1bml0IC0+ICdhIHQpIC0+ICgnYSAtPiAnYiB0KSAtPiAoZXhuIC0+ICdiIHQpIC0+ICdiIHRcbmVuZCA9XG5zdHJ1Y3RcbiAgKCogVGhlcmUgYXJlIGZpdmUgcHJpbWFyeSBzZXF1ZW50aWFsIGNvbXBvc2l0aW9uIGZ1bmN0aW9uczogW2JpbmRdLCBbbWFwXSxcbiAgICAgW2NhdGNoXSwgW2ZpbmFsaXplXSwgYW5kIFt0cnlfYmluZF0uIE9mIHRoZXNlLCBbdHJ5X2JpbmRdIGlzIHRoZSBtb3N0XG4gICAgIGdlbmVyYWwgLS0gYWxsIHRoZSBvdGhlcnMgY2FuIGJlIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIGl0LlxuXG4gICAgIEx3dCBjb25mbGF0ZXMgY29uY3VycmVuY3kgd2l0aCBlcnJvciBwcm9wYWdhdGlvbi4gSWYgTHd0IGRpZCBub3QgZG8gdGhpcyxcbiAgICAgdGhlcmUgd291bGQgYmUgb25seSB0d28gcHJpbWFyeSBmdW5jdGlvbnM6IFtiaW5kXSBhbmQgW21hcF0sIGFuZCwgb2YgdGhlc2VcbiAgICAgdHdvLCBbYmluZF0gaXMgdGhlIG1vc3QgZ2VuZXJhbC4gU2luY2UgW2JpbmRdIGlzIHRoZSBtb3N0IHJlbGV2YW50XG4gICAgIHNwZWNpZmljYWxseSB0byBjb25jdXJyZW5jeSwgYW5kIGlzIGFsc28gdGhlIG1vc3QgZmFtaWxpYXIgZnVuY3Rpb24gaW4gTHd0LFxuICAgICBpdHMgaW1wbGVtZW50YXRpb24gc2VydmVzIGFzIGEga2luZCBvZiBcIm1vZGVsXCIgZm9yIHRoZSByZXN0LiBJdCBpcyB0aGUgbW9zdFxuICAgICBjb21tZW50ZWQsIGFuZCBhbGwgdGhlIG90aGVyIGZ1bmN0aW9ucyBmb2xsb3cgYSBzaW1pbGFyIHBhdHRlcm4gdG8gW2JpbmRdLlxuXG4gICAgIEZvdXIgb2YgdGhlIHByaW1hcnkgZnVuY3Rpb25zIGhhdmUgW2JhY2t0cmFjZV8qXSB2ZXJzaW9ucywgd2hpY2ggYXJlIG5vdFxuICAgICB0cnVseSBwdWJsaWMsIGFuZCBleGlzdCB0byBzdXBwb3J0IHRoZSBQUFguIFtiYWNrdHJhY2VfbWFwXSBkb2VzIG5vdCBleGlzdFxuICAgICBiZWNhdXNlIHRoZSBQUFggZG9lcyBub3QgbmVlZCBpdC5cblxuICAgICBUaGUgcmVtYWluaW5nIGZvdXIgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiBhdHRhY2ggXCJsb3dlci1sZXZlbC1pc2hcIlxuICAgICBub24tcHJvbWlzZS1wcm9kdWNpbmcgY2FsbGJhY2tzIHRvIHByb21pc2VzOiB0aGVzZSBhcmUgdGhlIFtvbl8qXVxuICAgICBmdW5jdGlvbnMuIE9mIHRoZXNlLCBbb25fYW55XSBpcyB0aGUgbW9zdCBnZW5lcmFsLiBJZiBMd3QgZGlkIG5vdCBjb25mbGF0ZVxuICAgICBjb25jdXJyZW5jeSB3aXRoIGVycm9yIGhhbmRsaW5nLCB0aGVyZSB3b3VsZCBvbmx5IGJlIG9uZTogW29uX3N1Y2Nlc3NdLiAqKVxuXG5cblxuICAoKiBNYWtlcyBbfnVzZXJfcHJvdmlkZWRfcHJvbWlzZV0gaW50byBhIHByb3h5IG9mIFt+b3V0ZXJfcHJvbWlzZV0uIEFmdGVyXG4gICAgIFttYWtlX2ludG9fcHJveHldLCB0aGVzZSB0d28gcHJvbWlzZSByZWZlcmVuY2VzIFwiYmVoYXZlIGlkZW50aWNhbGx5LlwiXG5cbiAgICAgTm90ZSB0aGF0IHRoaXMgaXMgbm90IHN5bW1ldHJpYzogW3VzZXJfcHJvdmlkZWRfcHJvbWlzZV0gYWx3YXlzIGJlY29tZXMgdGhlXG4gICAgIHByb3h5LiBbbWFrZV9pbnRvX3Byb3h5XSBpcyBjYWxsZWQgb25seSBieSBbYmluZF0gYW5kIHNpbWlsYXIgZnVuY3Rpb25zIGluXG4gICAgIHRoaXMgbW9kdWxlLiBUaGlzIG1lYW5zIHRoYXQ6XG5cbiAgICAgLSB0aGUgb25seSB3YXkgZm9yIGEgcHJvbWlzZSB0byBiZWNvbWUgYSBwcm94eSBpcyBieSBiZWluZyByZXR1cm5lZCBmcm9tXG4gICAgICAgdGhlIGNhbGxiYWNrIGdpdmVuIGJ5IHRoZSB1c2VyIHRvIFtiaW5kXSwgb3IgYSBzaW1pbGFyIGZ1bmN0aW9uLCBhbmRcbiAgICAgLSB0aGUgb25seSB3YXkgZm9yIGEgcHJvbWlzZSB0byBiZWNvbWUgdW5kZXJseWluZyBmb3IgYSBwcm9taXNlIG90aGVyIHRoYW5cbiAgICAgICBpdHNlbGYgaXMgdG8gYmUgdGhlIG91dGVyIHByb21pc2Ugb3JpZ2luYWxseSByZXR1cm5lZCB0byB0aGUgdXNlciBmcm9tXG4gICAgICAgW2JpbmRdLCBvciBhIHNpbWlsYXIgZnVuY3Rpb24uXG5cbiAgICAgVGhlc2UgdHdvIGZhY3RzIGFyZSBpbXBvcnRhbnQgZm9yIHJlYXNvbmluZyBhYm91dCBob3cgYW5kIHdoaWNoIHByb21pc2VzXG4gICAgIGNhbiBiZWNvbWUgcHJveGllcywgdW5kZXJseWluZywgZXRjLjsgaW4gcGFydGljdWxhciwgaXQgaXMgdXNlZCBpbiB0aGVcbiAgICAgYXJndW1lbnQgaW4gW21heV9ub3dfYmVfcHJveHldIGZvciBjb3JyZWN0IHByZWRpY3Rpb25zIGFib3V0IHN0YXRlIGNoYW5nZXMuXG5cbiAgICAgW35vdXRlcl9wcm9taXNlXSBpcyBhbHdheXMgYSBwZW5kaW5nIHByb21pc2Ugd2hlbiBbbWFrZV9pbnRvX3Byb3h5XSBpc1xuICAgICBjYWxsZWQ7IGZvciB0aGUgZXhwbGFuYXRpb24sIHNlZSBbbWF5X25vd19iZV9wcm94eV0gKHRob3VnaCB0aGUgY2FsbGVyIG9mXG4gICAgIFttYWtlX2ludG9fcHJveHldIGFsd2F5cyBjYWxscyBbdW5kZXJseWluZ10gZmlyc3QgdG8gcGFzcyB0aGUgdW5kZXJseWluZ1xuICAgICBwZW5kaW5nIHByb21pc2UgdG8gW21ha2VfaW50b19wcm94eV0pLlxuXG4gICAgIFRoZSByZWFzb25zIHByb3h5aW5nIGlzIHVzZWQsIGluc3RlYWQgb2YgYWRkaW5nIGEgY2FsbGJhY2sgdG9cbiAgICAgW351c2VyX3Byb3ZpZGVkX3Byb21pc2VdIHRvIHJlc29sdmUgW35vdXRlcl9wcm9taXNlXSB3aGVuIHRoZSBmb3JtZXJcbiAgICAgYmVjb21lcyByZXNvbHZlZCBwcm9iYWJseSBhcmU6XG5cbiAgICAgLSBQcm9taXNlcyBoYXZlIG1vcmUgYmVoYXZpb3JzIHRoYW4gcmVzb2x1dGlvbi4gT25lIHdvdWxkIGhhdmUgdG8gYWRkIGFcbiAgICAgICBjYW5jZWxsYXRpb24gaGFuZGxlciB0byBbfm91dGVyX3Byb21pc2VdIHRvIHByb3BhZ2F0ZSB0aGUgY2FuY2VsbGF0aW9uXG4gICAgICAgYmFjayB0byBbfnVzZXJfcHJvdmlkZWRfcHJvbWlzZV0sIGZvciBleGFtcGxlLiBJdCBtYXkgYmUgZWFzaWVyIHRvIGp1c3RcbiAgICAgICB0aGluayBvZiB0aGVtIGFzIHRoZSBzYW1lIHByb21pc2UuXG4gICAgIC0gSWYgdXNpbmcgY2FsbGJhY2tzLCByZXNvbHZpbmcgW351c2VyX3Byb3ZpZGVkX3Byb21pc2VdIHdvdWxkIG5vdFxuICAgICAgIGltbWVkaWF0ZWx5IHJlc29sdmUgW35vdXRlcl9wcm9taXNlXS4gQW5vdGhlciBjYWxsYmFjayBhZGRlZCB0b1xuICAgICAgIFt+dXNlcl9wcm92aWRlZF9wcm9taXNlXSBtaWdodCBzZWUgW351c2VyX3Byb3ZpZGVkX3Byb21pc2VdIHJlc29sdmVkLFxuICAgICAgIGJ1dCBbfm91dGVyX3Byb21pc2VdIHN0aWxsIHBlbmRpbmcsIGRlcGVuZGluZyBvbiB0aGUgb3JkZXIgaW4gd2hpY2hcbiAgICAgICBjYWxsYmFja3MgYXJlIHJ1bi4gKilcbiAgbGV0IG1ha2VfaW50b19wcm94eVxuICAgICAgKHR5cGUgYylcbiAgICAgIH4ob3V0ZXJfcHJvbWlzZSA6ICgnYSwgdW5kZXJseWluZywgcGVuZGluZykgcHJvbWlzZSlcbiAgICAgIH4odXNlcl9wcm92aWRlZF9wcm9taXNlIDogKCdhLCBfLCBjKSBwcm9taXNlKVxuICAgICAgICA6ICgnYSwgdW5kZXJseWluZywgYykgc3RhdGVfY2hhbmdlZCA9XG5cbiAgICAoKiBVc2luZyBbcCddIGFzIGl0J3MgdGhlIG5hbWUgdXNlZCBpbnNpZGUgW2JpbmRdLCBldGMuLCBmb3IgcHJvbWlzZXMgd2l0aFxuICAgICAgIHRoaXMgcm9sZSAtLSBbcCddIGlzIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSB1c2VyJ3MgZnVuY3Rpb24uICopXG4gICAgbGV0IHAnID0gdW5kZXJseWluZyB1c2VyX3Byb3ZpZGVkX3Byb21pc2UgaW5cblxuICAgIGlmIGlkZW50aWNhbCBwJyBvdXRlcl9wcm9taXNlIHRoZW5cbiAgICAgIFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCdcbiAgICAgICgqIFdlIHJlYWxseSB3YW50IHRvIHJldHVybiBbU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBvdXRlcl9wcm9taXNlXSwgYnV0XG4gICAgICAgICB0aGUgcmVmZXJlbmNlIHRocm91Z2ggW3AnXSBoYXMgdGhlIHJpZ2h0IHR5cGUuICopXG5cbiAgICBlbHNlXG4gICAgICBtYXRjaCBwJy5zdGF0ZSB3aXRoXG4gICAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBvdXRlcl9wcm9taXNlIHAnLnN0YXRlXG4gICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIG91dGVyX3Byb21pc2UgcCcuc3RhdGVcblxuICAgICAgfCBQZW5kaW5nIHAnX2NhbGxiYWNrcyAtPlxuICAgICAgICBsZXQgUGVuZGluZyBvdXRlcl9jYWxsYmFja3MgPSBvdXRlcl9wcm9taXNlLnN0YXRlIGluXG5cbiAgICAgICAgbWVyZ2VfY2FsbGJhY2tzIH5mcm9tOnAnX2NhbGxiYWNrcyB+aW50bzpvdXRlcl9jYWxsYmFja3M7XG4gICAgICAgIG91dGVyX2NhbGxiYWNrcy5ob3dfdG9fY2FuY2VsIDwtIHAnX2NhbGxiYWNrcy5ob3dfdG9fY2FuY2VsO1xuXG4gICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnID1cbiAgICAgICAgICBzZXRfcHJvbWlzZV9zdGF0ZSBwJyAoUHJveHkgb3V0ZXJfcHJvbWlzZSkgaW5cbiAgICAgICAgaWdub3JlIHAnO1xuXG4gICAgICAgIFN0YXRlX21heV9oYXZlX2NoYW5nZWQgb3V0ZXJfcHJvbWlzZVxuICAgICAgICAoKiBUaGUgc3RhdGUgaGFzbid0IGFjdHVhbGx5IGNoYW5nZWQsIGJ1dCB3ZSBzdGlsbCBoYXZlIHRvIHdyYXBcbiAgICAgICAgICAgW291dGVyX3Byb21pc2VdIGZvciB0eXBlIGNoZWNraW5nLiAqKVxuXG4gICAgICAgICgqIFRoZSBzdGF0ZSBvZiBbcCddIG1heSBpbnN0ZWFkIGhhdmUgY2hhbmdlZCAtLSBpdCBtYXkgaGF2ZSBiZWNvbWUgYVxuICAgICAgICAgICBwcm94eS4gSG93ZXZlciwgY2FsbGVycyBvZiBbbWFrZV9pbnRvX3Byb3h5XSBkb24ndCBrbm93IGlmXG4gICAgICAgICAgIFt1c2VyX3Byb3ZpZGVkX3Byb21pc2VdIHdhcyBhIHByb3h5IG9yIG5vdCAodGhhdCdzIHdoeSB3ZSBjYWxsXG4gICAgICAgICAgIHVuZGVybHlpbmcgb24gaXQgYXQgdGhlIHRvcCBvZiB0aGlzIGZ1bmN0aW9uLCB0byBnZXQgW3AnXSkuIFdlIGNhblxuICAgICAgICAgICB0aGVyZWZvcmUgdGFrZSBhIGRhbmdlcm91cyBzaG9ydGN1dCBhbmQgbm90IGJvdGhlciByZXR1cm5pbmcgYSBuZXdcbiAgICAgICAgICAgcmVmZXJlbmNlIHRvIFt1c2VyX3Byb3ZpZGVkX3Byb21pc2VdIGZvciBzaGFkb3dpbmcuICopXG5cblxuXG4gICgqIE1haW50YWluZXIncyBub3RlOiBhIGxvdCBvZiB0aGUgY29kZSBiZWxvdyBjYW4gcHJvYmFibHkgYmUgZGVkdXBsaWNhdGVkIGluXG4gICAgIHNvbWUgd2F5LCBlc3BlY2lhbGx5IGlmIGFzc3VtaW5nIEZsYW1iZGEuICopXG5cbiAgbGV0IGJpbmQgcCBmID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICAoKiBJbiBjYXNlIFtMd3QuYmluZF0gbmVlZHMgdG8gZGVmZXIgdGhlIGNhbGwgdG8gW2ZdLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYmVcbiAgICAgICBjYWxsZWQgdG8gY3JlYXRlOlxuXG4gICAgICAgMS4gVGhlIHByb21pc2UsIFtwJyddLCB0aGF0IG11c3QgYmUgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciBpbW1lZGlhdGVseS5cbiAgICAgICAyLiBUaGUgY2FsbGJhY2sgdGhhdCByZXNvbHZlcyBbcCcnXS5cblxuICAgICAgIFtMd3QuYmluZF0gZGVmZXJzIHRoZSBjYWxsIHRvIFtmXSBpbiB0d28gY2lyY3Vtc3RhbmNlczpcblxuICAgICAgIDEuIFRoZSBwcm9taXNlIFtwXSBpcyBwZW5kaW5nLlxuICAgICAgIDIuIFRoZSBwcm9taXNlIFtwXSBpcyBmdWxmaWxsZWQsIGJ1dCB0aGUgY3VycmVudCBjYWxsYmFjayBjYWxsIG5lc3RpbmdcbiAgICAgICAgICBkZXB0aCBpcyBzdWNoIHRoYXQgdGhlIGNhbGwgdG8gW2ZdIG11c3QgZ28gaW50byB0aGUgY2FsbGJhY2sgcXVldWUsIGluXG4gICAgICAgICAgb3JkZXIgdG8gYXZvaWQgc3RhY2sgb3ZlcmZsb3cuXG5cbiAgICAgIE1lY2hhbmlzbSAoMikgaXMgY3VycmVudGx5IGRpc2FibGVkLiBJdCBtYXkgYmUgdXNlZCBpbiBhbiBhbHRlcm5hdGl2ZSBMd3RcbiAgICAgIEFQSS5cblxuICAgICAgRnVuY3Rpb25zIG90aGVyIHRoYW4gW0x3dC5iaW5kXSBoYXZlIGFuYWxvZ291cyBkZWZlcnJhbCBiZWhhdmlvci4gKilcbiAgICBsZXQgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgcCcnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lIHApIGluXG4gICAgICAoKiBUaGUgcmVzdWx0IHByb21pc2UgaXMgYSBmcmVzaCBwZW5kaW5nIHByb21pc2UuXG5cbiAgICAgICAgIEluaXRpYWxseSwgdHJ5aW5nIHRvIGNhbmNlbCB0aGlzIGZyZXNoIHBlbmRpbmcgcHJvbWlzZSBbcCcnXSB3aWxsXG4gICAgICAgICBwcm9wYWdhdGUgdGhlIGNhbmNlbGxhdGlvbiBhdHRlbXB0IHRvIFtwXSAoYmFja3dhcmRzIHRocm91Z2ggdGhlXG4gICAgICAgICBwcm9taXNlIGRlcGVuZGVuY3kgZ3JhcGgpLiBJZi93aGVuIFtwXSBpcyBmdWxmaWxsZWQsIEx3dCB3aWxsIGNhbGwgdGhlXG4gICAgICAgICB1c2VyJ3MgY2FsbGJhY2sgW2ZdIGJlbG93LCB3aGljaCB3aWxsIHByb3ZpZGUgYSBuZXcgcHJvbWlzZSBbcCddLCBhbmRcbiAgICAgICAgIFtwJ10gd2lsbCBiZWNvbWUgYSBwcm94eSBvZiBbcCcnXS4gQXQgdGhhdCBwb2ludCwgdHJ5aW5nIHRvIGNhbmNlbFxuICAgICAgICAgW3AnJ10gd2lsbCBiZSBlcXVpdmFsZW50IHRvIHRyeWluZyB0byBjYW5jZWwgW3AnXSwgc28gdGhlIGJlaGF2aW9yIHdpbGxcbiAgICAgICAgIGRlcGVuZCBvbiBob3cgdGhlIHVzZXIgb2J0YWluZWQgW3AnXS4gKilcblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBmIHYgd2l0aCBleG5cbiAgICAgICAgICAgIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG4gICAgICAgICAgKCogUnVuIHRoZSB1c2VyJ3MgZnVuY3Rpb24gW2ZdLiAqKVxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuICAgICAgICAgICgqIFtwJyddIHdhcyBhbiB1bmRlcmx5aW5nIHByb21pc2Ugd2hlbiBpdCB3YXMgY3JlYXRlZCBhYm92ZSwgYnV0IGl0XG4gICAgICAgICAgICAgbWF5IGhhdmUgYmVjb21lIGEgcHJveHkgYnkgdGhlIHRpbWUgdGhpcyBjb2RlIGlzIGJlaW5nIGV4ZWN1dGVkLlxuICAgICAgICAgICAgIEhvd2V2ZXIsIGl0IGlzIHN0aWxsIGVpdGhlciBhbiB1bmRlcmx5aW5nIHBlbmRpbmcgcHJvbWlzZSwgb3IgYVxuICAgICAgICAgICAgIHByb3h5IGZvciBhIHBlbmRpbmcgcHJvbWlzZS4gVGhlcmVmb3JlLCBbbWF5X25vd19iZV9wcm94eV0gcHJvZHVjZXNcbiAgICAgICAgICAgICBhIHJlZmVyZW5jZSB3aXRoIHRoZSByaWdodCB0eXBlIHZhcmlhYmxlcy4gV2UgaW1tZWRpYXRlbHkgZ2V0XG4gICAgICAgICAgICAgW3AnJ10ncyBjdXJyZW50IHVuZGVybHlpbmcgcHJvbWlzZS4gKilcblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICAgICAgKCogTWFrZSB0aGUgb3V0ZXIgcHJvbWlzZSBbcCcnXSBiZWhhdmlvcmFsbHkgaWRlbnRpY2FsIHRvIHRoZSBwcm9taXNlXG4gICAgICAgICAgICAgW3AnXSByZXR1cm5lZCBieSBbZl0gYnkgbWFraW5nIFtwJ10gaW50byBhIHByb3h5IG9mIFtwJyddLiAqKVxuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyBwX3Jlc3VsdCAtPlxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcnIHBfcmVzdWx0IGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuICAgICAgaW5cblxuICAgICAgKHRvX3B1YmxpY19wcm9taXNlIHAnJywgY2FsbGJhY2spXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gZiB2KVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICBwJydcblxuICBsZXQgYmFja3RyYWNlX2JpbmQgYWRkX2xvYyBwIGYgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBmIHZcbiAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+XG4gICAgICAgICAgICAgIGZhaWwgKGFkZF9sb2MgZXhuKSBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnJyAoUmVqZWN0ZWQgKGFkZF9sb2MgZXhuKSkgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBmIHYpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9XG4gICAgICAgICAgICBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKHAnJywgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IFJlamVjdGVkIChhZGRfbG9jIGV4bil9XG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IG1hcCBmIHAgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnJ19yZXN1bHQgPVxuICAgICAgICAgICAgdHJ5IEZ1bGZpbGxlZCAoZiB2KSB3aXRoIGV4blxuICAgICAgICAgICAgd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gUmVqZWN0ZWQgZXhuXG4gICAgICAgICAgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcnIHAnJ19yZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHBfcmVzdWx0IC0+XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwJycgcF9yZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPlxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlXG4gICAgICAgICAgICB7c3RhdGUgPVxuICAgICAgICAgICAgICB0cnkgRnVsZmlsbGVkIChmIHYpXG4gICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IFJlamVjdGVkIGV4bn0pXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9XG4gICAgICAgICAgICBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKHAnJywgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gcmVzdWx0fVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgKHAnJywgY2FsbGJhY2spID0gY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFjaztcbiAgICAgIHAnJ1xuXG4gIGV4dGVybmFsIHJlcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyZXJhaXNlXCJcblxuICBsZXQgY2F0Y2ggZiBoID1cbiAgICBsZXQgcCA9XG4gICAgICB0cnkgZiAoKVxuICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICBpblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgXyBhcyBwX3Jlc3VsdCAtPlxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcnIHBfcmVzdWx0IGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcgPVxuICAgICAgICAgICAgdHJ5IGggZXhuXG4gICAgICAgICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIG1ha2VfaW50b19wcm94eSB+b3V0ZXJfcHJvbWlzZTpwJycgfnVzZXJfcHJvdmlkZWRfcHJvbWlzZTpwJyBpblxuICAgICAgICAgIGlnbm9yZSBwJydcbiAgICAgIGluXG5cbiAgICAgICh0b19wdWJsaWNfcHJvbWlzZSBwJycsIGNhbGxiYWNrKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoIGV4bilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IGJhY2t0cmFjZV9jYXRjaCBhZGRfbG9jIGYgaCA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgcCcnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lIHApIGluXG5cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcF9yZXN1bHQgPVxuICAgICAgICBtYXRjaCBwX3Jlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gYXMgcF9yZXN1bHQgLT5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnJyBwX3Jlc3VsdCBpblxuICAgICAgICAgIGlnbm9yZSBwJydcblxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBoIGV4blxuICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT5cbiAgICAgICAgICAgICAgZmFpbCAoYWRkX2xvYyBleG4pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgbWFrZV9pbnRvX3Byb3h5IH5vdXRlcl9wcm9taXNlOnAnJyB+dXNlcl9wcm92aWRlZF9wcm9taXNlOnAnIGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuICAgICAgaW5cblxuICAgICAgKHRvX3B1YmxpY19wcm9taXNlIHAnJywgY2FsbGJhY2spXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGggKGFkZF9sb2MgZXhuKSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IHRyeV9iaW5kIGYgZicgaCA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgcCcnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lIHApIGluXG5cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcF9yZXN1bHQgPVxuICAgICAgICBtYXRjaCBwX3Jlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgZicgdlxuICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgaCBleG5cbiAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgbWFrZV9pbnRvX3Byb3h5IH5vdXRlcl9wcm9taXNlOnAnJyB+dXNlcl9wcm92aWRlZF9wcm9taXNlOnAnIGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuICAgICAgaW5cblxuICAgICAgKHRvX3B1YmxpY19wcm9taXNlIHAnJywgY2FsbGJhY2spXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gZicgdilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoIGV4bilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IGJhY2t0cmFjZV90cnlfYmluZCBhZGRfbG9jIGYgZicgaCA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgcCcnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lIHApIGluXG5cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcF9yZXN1bHQgPVxuICAgICAgICBtYXRjaCBwX3Jlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgZicgdlxuICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT5cbiAgICAgICAgICAgICAgZmFpbCAoYWRkX2xvYyBleG4pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgbWFrZV9pbnRvX3Byb3h5IH5vdXRlcl9wcm9taXNlOnAnJyB+dXNlcl9wcm92aWRlZF9wcm9taXNlOnAnIGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcgPVxuICAgICAgICAgICAgdHJ5IGggZXhuXG4gICAgICAgICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPlxuICAgICAgICAgICAgICBmYWlsIChhZGRfbG9jIGV4bilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBmJyB2KVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGggKGFkZF9sb2MgZXhuKSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IGZpbmFsaXplIGYgZicgPVxuICAgIHRyeV9iaW5kIGZcbiAgICAgIChmdW4geCAtPiBiaW5kIChmJyAoKSkgKGZ1biAoKSAtPiByZXR1cm4geCkpXG4gICAgICAoZnVuIGUgLT4gYmluZCAoZicgKCkpIChmdW4gKCkgLT4gZmFpbCBlKSlcblxuICBsZXQgYmFja3RyYWNlX2ZpbmFsaXplIGFkZF9sb2MgZiBmJyA9XG4gICAgYmFja3RyYWNlX3RyeV9iaW5kIGFkZF9sb2MgZlxuICAgICAgKGZ1biB4IC0+IGJpbmQgKGYnICgpKSAoZnVuICgpIC0+IHJldHVybiB4KSlcbiAgICAgIChmdW4gZSAtPiBiaW5kIChmJyAoKSkgKGZ1biAoKSAtPiBmYWlsIChhZGRfbG9jIGUpKSlcblxuXG5cbiAgbGV0IG9uX2NhbmNlbCBwIGYgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgUmVqZWN0ZWQgQ2FuY2VsZWQgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiAoKSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICAoKCksIChmdW4gXyAtPiBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmICgpKSwgRnVsZmlsbGVkICgpKSlcblxuICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgKClcblxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICgpXG5cbiAgICB8IFBlbmRpbmcgY2FsbGJhY2tzIC0+XG4gICAgICBhZGRfY2FuY2VsX2NhbGxiYWNrIGNhbGxiYWNrcyBmXG5cblxuXG4gIGxldCBvbl9zdWNjZXNzIHAgZiA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBmdW4gcmVzdWx0IC0+XG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgICAgICBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmIHZcblxuICAgICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICAgICAoKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgdilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgICgoKSwgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICAoKVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFja1xuXG4gIGxldCBvbl9mYWlsdXJlIHAgZiA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBmdW4gcmVzdWx0IC0+XG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgICAoKVxuXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG4gICAgICAgICAgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiBleG5cbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgKClcblxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgZXhuKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKCgpLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrXG5cbiAgbGV0IG9uX3Rlcm1pbmF0aW9uIHAgZiA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBmdW4gX3Jlc3VsdCAtPlxuICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgICAgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiAoKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgKCkpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAoKCksIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiAoKSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgICgoKSwgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFja1xuXG4gIGxldCBvbl9hbnkgcCBmIGcgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgZnVuIHJlc3VsdCAtPlxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG4gICAgICAgICAgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiB2XG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgICAgICBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBnIGV4blxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgdilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgICgoKSwgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZyBleG4pXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAoKCksIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2tcbmVuZFxuaW5jbHVkZSBTZXF1ZW50aWFsX2NvbXBvc2l0aW9uXG5cblxuKCogVGhpcyBiZWxvbmdzIHdpdGggdGhlIFtwcm90ZWN0ZWRdIGFuZCBzdWNoLCBidXQgaXQgZGVwZW5kcyBvbiBwcmltaXRpdmVzIGZyb21cbiAgIFtTZXF1ZW50aWFsX2NvbXBvc2l0aW9uXS4gKilcbmxldCB3cmFwX2luX2NhbmNlbGFibGUgcCA9XG4gbGV0IEludGVybmFsIHBfaW50ZXJuYWwgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiBsZXQgcF91bmRlcmx5aW5nID0gdW5kZXJseWluZyBwX2ludGVybmFsIGluXG4gbWF0Y2ggcF91bmRlcmx5aW5nLnN0YXRlIHdpdGhcbiB8IEZ1bGZpbGxlZCBfIC0+IHBcbiB8IFJlamVjdGVkIF8gLT4gcFxuIHwgUGVuZGluZyBfIC0+XG4gICBsZXQgcCcsIHIgPSB0YXNrICgpIGluXG4gICBvbl9jYW5jZWwgcCcgKGZ1biAoKSAtPiBjYW5jZWwgcCk7XG4gICBvbl9hbnkgcCAod2FrZXVwIHIpICh3YWtldXBfZXhuIHIpO1xuICAgcCdcblxuXG5tb2R1bGUgQ29uY3VycmVudF9jb21wb3NpdGlvbiA6XG5zaWdcbiAgdmFsIGRvbnRfd2FpdCA6ICh1bml0IC0+IF8gdCkgLT4gKGV4biAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBhc3luYyA6ICh1bml0IC0+IF8gdCkgLT4gdW5pdFxuICB2YWwgaWdub3JlX3Jlc3VsdCA6IF8gdCAtPiB1bml0XG5cbiAgdmFsIGJvdGggOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcbiAgdmFsIGpvaW4gOiB1bml0IHQgbGlzdCAtPiB1bml0IHRcbiAgdmFsIGFsbCA6ICgnYSB0KSBsaXN0IC0+ICgnYSBsaXN0KSB0XG5cbiAgdmFsIGNob29zZSA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gIHZhbCBwaWNrIDogJ2EgdCBsaXN0IC0+ICdhIHRcblxuICB2YWwgbmNob29zZSA6ICdhIHQgbGlzdCAtPiAnYSBsaXN0IHRcbiAgdmFsIG5waWNrIDogJ2EgdCBsaXN0IC0+ICdhIGxpc3QgdFxuXG4gIHZhbCBuY2hvb3NlX3NwbGl0IDogJ2EgdCBsaXN0IC0+ICgnYSBsaXN0ICogJ2EgdCBsaXN0KSB0XG5lbmQgPVxuc3RydWN0XG4gIGV4dGVybmFsIHJlcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyZXJhaXNlXCJcblxuICBsZXQgZG9udF93YWl0IGYgaCA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICgpXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIGggZXhuXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBjYWxsYmFjayByZXN1bHQgPVxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAgICAgKClcbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBoIGV4blxuICAgICAgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2tcblxuICBsZXQgYXN5bmMgZiA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICgpXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICFhc3luY19leGNlcHRpb25faG9vayBleG5cblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IGNhbGxiYWNrIHJlc3VsdCA9XG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgICAoKVxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgICFhc3luY19leGNlcHRpb25faG9vayBleG5cbiAgICAgIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrXG5cbiAgbGV0IGlnbm9yZV9yZXN1bHQgcCA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAoKVxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICByZXJhaXNlIGV4blxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgY2FsbGJhY2sgcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICAgICgpXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgIWFzeW5jX2V4Y2VwdGlvbl9ob29rIGV4blxuICAgICAgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2tcblxuXG5cbiAgbGV0IGpvaW4gcHMgPVxuICAgIGxldCBwJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMpIGluXG5cbiAgICBsZXQgbnVtYmVyX3BlbmRpbmdfaW5fcHMgPSByZWYgMCBpblxuICAgIGxldCBqb2luX3Jlc3VsdCA9IHJlZiAoRnVsZmlsbGVkICgpKSBpblxuXG4gICAgKCogQ2FsbGJhY2sgYXR0YWNoZWQgdG8gZWFjaCBwcm9taXNlIGluIFtwc10gdGhhdCBpcyBzdGlsbCBwZW5kaW5nIGF0IHRoZVxuICAgICAgIHRpbWUgW2pvaW5dIGlzIGNhbGxlZC4gKilcbiAgICBsZXQgY2FsbGJhY2sgbmV3X3Jlc3VsdCA9XG4gICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnID0gbWF5X25vd19iZV9wcm94eSBwJyBpblxuXG4gICAgICBiZWdpbiBtYXRjaCBuZXdfcmVzdWx0IHdpdGhcbiAgICAgIHwgRnVsZmlsbGVkICgpIC0+ICgpXG4gICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICgqIEZvciB0aGUgZmlyc3QgcHJvbWlzZSBpbiBbcHNdIHRvIGJlIHJlamVjdGVkLCBzZXQgdGhlIHJlc3VsdCBvZiB0aGVcbiAgICAgICAgIFtqb2luXSB0byByZWplY3RlZCB3aXRoIHRoZSBzYW1lIGV4Y2VwdGlvbi4uICopXG4gICAgICAgIG1hdGNoICFqb2luX3Jlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkICgpIC0+IGpvaW5fcmVzdWx0IDo9IG5ld19yZXN1bHRcbiAgICAgICAgfCBSZWplY3RlZCBfIC0+ICgpXG4gICAgICBlbmQ7XG5cbiAgICAgICgqIEluIGFsbCBjYXNlcywgZGVjcmVtZW50IHRoZSBudW1iZXIgb2YgcHJvbWlzZXMgc3RpbGwgcGVuZGluZywgYW5kXG4gICAgICAgICByZXNvbHZlIHRoZSBbam9pbl0gb25jZSBhbGwgcHJvbWlzZXMgcmVzb2x2ZS4gKilcbiAgICAgIG51bWJlcl9wZW5kaW5nX2luX3BzIDo9ICFudW1iZXJfcGVuZGluZ19pbl9wcyAtIDE7XG4gICAgICBpZiAhbnVtYmVyX3BlbmRpbmdfaW5fcHMgPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IHAnID0gdW5kZXJseWluZyBwJyBpblxuICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJyA9XG4gICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlICh1bmRlcmx5aW5nIHAnKSAham9pbl9yZXN1bHQgaW5cbiAgICAgICAgaWdub3JlIHAnXG4gICAgICBlbmRcbiAgICBpblxuXG4gICAgKCogQXR0YWNoIHRoZSBhYm92ZSBjYWxsYmFjay4gU2ltdWx0YW5lb3VzbHkgY291bnQgaG93IG1hbnkgcGVuZGluZyBwcm9taXNlc1xuICAgICAgIHRoZXJlIGFyZSBpbiBbcHNdIChpbml0aWFsbHkpLiBJZiB0aGF0IG51bWJlciBpcyB6ZXJvLCB0aGUgW2pvaW5dIG11c3RcbiAgICAgICByZXNvbHZlIGltbWVkaWF0ZWx5LiAqKVxuICAgIGxldCByZWMgYXR0YWNoX2NhbGxiYWNrX29yX3Jlc29sdmVfaW1tZWRpYXRlbHkgcHMgPVxuICAgICAgbWF0Y2ggcHMgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBpZiAhbnVtYmVyX3BlbmRpbmdfaW5fcHMgPSAwIHRoZW5cbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSAham9pbl9yZXN1bHR9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSBwJ1xuXG4gICAgICB8IHA6OnBzIC0+XG4gICAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgICAgICBudW1iZXJfcGVuZGluZ19pbl9wcyA6PSAhbnVtYmVyX3BlbmRpbmdfaW5fcHMgKyAxO1xuICAgICAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICAgICAgYXR0YWNoX2NhbGxiYWNrX29yX3Jlc29sdmVfaW1tZWRpYXRlbHkgcHNcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcF9yZXN1bHQgLT5cbiAgICAgICAgICAoKiBBcyBpbiB0aGUgY2FsbGJhY2sgYWJvdmUsIGJ1dCBmb3IgYWxyZWFkeS1yZXNvbHZlZCBwcm9taXNlcyBpblxuICAgICAgICAgICAgIFtwc106IHJlamVjdCB0aGUgW2pvaW5dIHdpdGggdGhlIHNhbWUgZXhjZXB0aW9uIGFzIGluIHRoZSBmaXJzdFxuICAgICAgICAgICAgIHJlamVjdGVkIHByb21pc2UgZm91bmQuIFtqb2luXSBzdGlsbCB3YWl0cyBmb3IgYW55IHBlbmRpbmcgcHJvbWlzZXNcbiAgICAgICAgICAgICBiZWZvcmUgYWN0dWFsbHkgcmVzb2x2aW5nLCB0aG91Z2guICopXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggIWpvaW5fcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IEZ1bGZpbGxlZCAoKSAtPiBqb2luX3Jlc3VsdCA6PSBwX3Jlc3VsdDtcbiAgICAgICAgICB8IFJlamVjdGVkIF8gLT4gKClcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgYXR0YWNoX2NhbGxiYWNrX29yX3Jlc29sdmVfaW1tZWRpYXRlbHkgcHNcblxuICAgICAgICB8IEZ1bGZpbGxlZCAoKSAtPlxuICAgICAgICAgIGF0dGFjaF9jYWxsYmFja19vcl9yZXNvbHZlX2ltbWVkaWF0ZWx5IHBzXG4gICAgaW5cblxuICAgIGF0dGFjaF9jYWxsYmFja19vcl9yZXNvbHZlX2ltbWVkaWF0ZWx5IHBzXG5cbiAgKCogdGhpcyBpcyAzIHdvcmRzLCBzbWFsbGVyIHRoYW4gdGhlIDIgdGltZXMgMiB3b3JkcyBhIHBhaXIgb2YgcmVmZXJlbmNlc1xuICAgICB3b3VsZCB0YWtlLiAqKVxuICB0eXBlICgnYSwnYikgcGFpciA9IHtcbiAgICBtdXRhYmxlIHgxOiAnYSBvcHRpb247XG4gICAgbXV0YWJsZSB4MjogJ2Igb3B0aW9uO1xuICB9XG5cbiAgbGV0IGJvdGggcDEgcDIgPVxuICAgIGxldCBwYWlyID0ge3gxID0gTm9uZTsgeDIgPSBOb25lfSBpblxuICAgIGxldCBwMScgPSBiaW5kIHAxIChmdW4gdiAtPiBwYWlyLngxIDwtIFNvbWUgdjsgcmV0dXJuX3VuaXQpIGluXG4gICAgbGV0IHAyJyA9IGJpbmQgcDIgKGZ1biB2IC0+IHBhaXIueDIgPC0gU29tZSB2OyByZXR1cm5fdW5pdCkgaW5cbiAgICBqb2luIFtwMSc7IHAyJ10gfD4gbWFwIChmdW4gKCkgLT5cbiAgICAgIG1hdGNoIHBhaXIueDEsIHBhaXIueDIgd2l0aFxuICAgICAgfCBTb21lIHYxLCBTb21lIHYyIC0+IHYxLCB2MlxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcblxuICBsZXQgYWxsIHBzID1cbiAgICBtYXRjaCBwcyB3aXRoXG4gICAgfCBbXSAtPiByZXR1cm5fbmlsXG4gICAgfCBbeF0gLT4gbWFwIChmdW4geSAtPiBbeV0pIHhcbiAgICB8IFt4OyB5XSAtPiBtYXAgKGZ1biAoeCwgeSkgLT4gW3g7IHldKSAoYm90aCB4IHkpXG4gICAgfCBfIC0+XG4gICAgICBsZXQgdnMgPSBBcnJheS5tYWtlIChMaXN0Lmxlbmd0aCBwcykgTm9uZSBpblxuICAgICAgcHNcbiAgICAgIHw+IExpc3QubWFwaSAoZnVuIGluZGV4IHAgLT5cbiAgICAgICAgYmluZCBwIChmdW4gdiAtPiB2cy4oaW5kZXgpIDwtIFNvbWUgdjsgcmV0dXJuX3VuaXQpKVxuICAgICAgfD4gam9pblxuICAgICAgfD4gbWFwIChmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgcmVjIHRvX2xpc3RfdW5vcHQgaSBhY2MgPVxuICAgICAgICAgICAgaWYgaSA8IDAgdGhlblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCB2cyBpIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB0b19saXN0X3Vub3B0IChpIC0gMSkgKHg6OmFjYylcbiAgICAgICAgICBpblxuICAgICAgICAgIHRvX2xpc3RfdW5vcHQgKEFycmF5Lmxlbmd0aCB2cyAtIDEpIFtdKVxuXG4gICgqIE1haW50YWluZXIncyBub3RlOiB0aGUgbmV4dCBmZXcgZnVuY3Rpb25zIGFyZSBoZWxwZXJzIGZvciBbY2hvb3NlXSBhbmRcbiAgICAgW3BpY2tdLiBQZXJoYXBzIHRoZXkgc2hvdWxkIGJlIGZhY3RvcmVkIGludG8gc29tZSBraW5kIG9mIGdlbmVyaWNcbiAgICAgW2Nob29zZV0vW3BpY2tdIGltcGxlbWVudGF0aW9uLCB3aGljaCBtYXkgYWN0dWFsbHkgYmUgb3B0aW1hbCBhbnl3YXkgd2l0aFxuICAgICBGbGFtYmRhLiAqKVxuXG4gIGxldCBjb3VudF9yZXNvbHZlZF9wcm9taXNlc19pbiAocHMgOiAnYSB0IGxpc3QpID1cbiAgICBsZXQgcmVjIGNvdW50X2FuZF9nYXRoZXJfcmVqZWN0ZWQgdG90YWwgcmVqZWN0ZWQgcHMgPVxuICAgICAgIG1hdGNoIHBzIHdpdGhcbiAgICAgICB8IFtdIC0+IEVycm9yICh0b3RhbCwgcmVqZWN0ZWQpXG4gICAgICAgfCBwIDo6IHBzIC0+XG4gICAgICAgICAgICBsZXQgSW50ZXJuYWwgcSA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcSkuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBGdWxmaWxsZWQgXyAtPiBjb3VudF9hbmRfZ2F0aGVyX3JlamVjdGVkIHRvdGFsIHJlamVjdGVkIHBzXG4gICAgICAgICAgICB8IFJlamVjdGVkIF8gLT4gY291bnRfYW5kX2dhdGhlcl9yZWplY3RlZCAodG90YWwgKyAxKSAocCA6OiByZWplY3RlZCkgcHNcbiAgICAgICAgICAgIHwgUGVuZGluZyBfIC0+IGNvdW50X2FuZF9nYXRoZXJfcmVqZWN0ZWQgdG90YWwgcmVqZWN0ZWQgcHNcbiAgICBpblxuICAgIGxldCByZWMgY291bnRfZnVsZmlsbGVkIHRvdGFsIHBzID1cbiAgICAgICBtYXRjaCBwcyB3aXRoXG4gICAgICAgfCBbXSAtPiBPayB0b3RhbFxuICAgICAgIHwgcCA6OiBwcyAtPlxuICAgICAgICAgICAgbGV0IEludGVybmFsIHEgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHEpLnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgRnVsZmlsbGVkIF8gLT4gY291bnRfZnVsZmlsbGVkICh0b3RhbCArIDEpIHBzXG4gICAgICAgICAgICB8IFJlamVjdGVkIF8gLT4gY291bnRfYW5kX2dhdGhlcl9yZWplY3RlZCAxIFtwXSBwc1xuICAgICAgICAgICAgfCBQZW5kaW5nIF8gLT4gY291bnRfZnVsZmlsbGVkIHRvdGFsIHBzXG4gICAgaW5cbiAgICBjb3VudF9mdWxmaWxsZWQgMCBwc1xuXG4gICgqIEV2YWx1YXRlcyB0byB0aGUgW25ddGggcHJvbWlzZSBpbiBbcHNdLCBhbW9uZyBvbmx5IHRob3NlIHByb21pc2VzIGluIFtwc11cbiAgICAgdGhhdCBhcmUgcmVzb2x2ZWQuIFRoZSBjYWxsZXIgaXMgZXhwZWN0ZWQgdG8gZW5zdXJlIHRoYXQgdGhlcmUgYXJlIGF0XG4gICAgIGxlYXN0IFtuXSByZXNvbHZlZCBwcm9taXNlcyBpbiBbcHNdLiAqKVxuICBsZXQgcmVjIG50aF9yZXNvbHZlZCAocHMgOiAnYSB0IGxpc3QpIChuIDogaW50KSA6ICdhIHQgPVxuICAgIG1hdGNoIHBzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuICAgIHwgcDo6cHMgLT5cbiAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCcpLnN0YXRlIHdpdGhcbiAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgIG50aF9yZXNvbHZlZCBwcyBuXG5cbiAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgaWYgbiA8PSAwIHRoZW4gcFxuICAgICAgICBlbHNlIG50aF9yZXNvbHZlZCBwcyAobiAtIDEpXG4gICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICAgaWYgbiA8PSAwIHRoZW4gcFxuICAgICAgICBlbHNlIG50aF9yZXNvbHZlZCBwcyAobiAtIDEpXG5cbiAgKCogTGlrZSBbbnRoX3Jlc29sdmVkXSwgYnV0IGNhbmNlbHMgYWxsIHBlbmRpbmcgcHJvbWlzZXMgZm91bmQgd2hpbGVcbiAgICAgdHJhdmVyc2luZyBbcHNdLiAqKVxuICBsZXQgcmVjIG50aF9yZXNvbHZlZF9hbmRfY2FuY2VsX3BlbmRpbmcgKHBzIDogJ2EgdCBsaXN0KSAobiA6IGludCkgOiAnYSB0ID1cbiAgICBtYXRjaCBwcyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbiAgICB8IHA6OnBzIC0+XG4gICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHAnKS5zdGF0ZSB3aXRoXG4gICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICBjYW5jZWwgcDtcbiAgICAgICAgbnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluZyBwcyBuXG5cbiAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgaWYgbiA8PSAwIHRoZW4gKExpc3QuaXRlciBjYW5jZWwgcHM7IHApXG4gICAgICAgIGVsc2UgbnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluZyBwcyAobiAtIDEpXG4gICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICAgaWYgbiA8PSAwIHRoZW4gKExpc3QuaXRlciBjYW5jZWwgcHM7IHApXG4gICAgICAgIGVsc2UgbnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluZyBwcyAobiAtIDEpXG5cbiAgKCogVGhlIFBSTkcgc3RhdGUgaXMgaW5pdGlhbGl6ZWQgd2l0aCBhIGNvbnN0YW50IHRvIG1ha2Ugbm9uLUlPLWJhc2VkIHByb2dyYW1zXG4gICAgIGRldGVybWluaXN0aWMuICopXG4gICgqIE1haW50YWluZXIncyBub3RlOiBpcyB0aGlzIG5lY2Vzc2FyeT8gKilcbiAgbGV0IHBybmcgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZSBbfHxdKVxuXG4gIGxldCBjaG9vc2UgcHMgPVxuICAgIGlmIHBzID0gW10gdGhlblxuICAgICAgaW52YWxpZF9hcmdcbiAgICAgICAgXCJMd3QuY2hvb3NlIFtdIHdvdWxkIHJldHVybiBhIHByb21pc2UgdGhhdCBpcyBwZW5kaW5nIGZvcmV2ZXJcIjtcbiAgICBtYXRjaCBjb3VudF9yZXNvbHZlZF9wcm9taXNlc19pbiBwcyB3aXRoXG4gICAgfCBPayAwIC0+XG4gICAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMpIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayByZXN1bHQgPVxuICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAgPSBtYXlfbm93X2JlX3Byb3h5IHAgaW5cbiAgICAgICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cbiAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9XG4gICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAgcmVzdWx0IGluXG4gICAgICAgIGlnbm9yZSBwXG4gICAgICBpblxuICAgICAgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgcHMgY2FsbGJhY2s7XG5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuICAgIHwgT2sgMSAtPlxuICAgICAgbnRoX3Jlc29sdmVkIHBzIDBcblxuICAgIHwgT2sgbiAtPlxuICAgICAgbnRoX3Jlc29sdmVkIHBzIChSYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHBybmcpIG4pXG5cbiAgICB8IEVycm9yIChuLCBwcykgLT5cbiAgICAgIG50aF9yZXNvbHZlZCBwcyAoUmFuZG9tLlN0YXRlLmludCAoTGF6eS5mb3JjZSBwcm5nKSBuKVxuXG4gIGxldCBwaWNrIHBzID1cbiAgICBpZiBwcyA9IFtdIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiTHd0LnBpY2sgW10gd291bGQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IGlzIHBlbmRpbmcgZm9yZXZlclwiO1xuICAgIG1hdGNoIGNvdW50X3Jlc29sdmVkX3Byb21pc2VzX2luIHBzIHdpdGhcbiAgICB8IE9rIDAgLT5cbiAgICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KHByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcykgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHJlc3VsdCA9XG4gICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpblxuICAgICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID1cbiAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCByZXN1bHQgaW5cbiAgICAgICAgaWdub3JlIHBcbiAgICAgIGluXG4gICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiBwcyBjYWxsYmFjaztcblxuICAgICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gICAgfCBPayAxIC0+XG4gICAgICBudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW5nIHBzIDBcblxuICAgIHwgT2sgbiAtPlxuICAgICAgbnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluZyBwc1xuICAgICAgICAoUmFuZG9tLlN0YXRlLmludCAoTGF6eS5mb3JjZSBwcm5nKSBuKVxuXG4gICAgfCBFcnJvciAobiwgcXMpIC0+XG4gICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgbnRoX3Jlc29sdmVkIHFzIChSYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHBybmcpIG4pXG5cblxuXG4gICgqIElmIFtuY2hvb3NlIHBzXSBvciBbbnBpY2sgcHNdIGZvdW5kIGFsbCBwcm9taXNlcyBpbiBbcHNdIHBlbmRpbmcsIHRoZVxuICAgICBjYWxsYmFjayBhZGRlZCB0byBlYWNoIHByb21pc2UgaW4gW3BzXSBldmVudHVhbGx5IGNhbGxzIHRoaXMgZnVuY3Rpb24uIFRoZVxuICAgICBmdW5jdGlvbiBjb2xsZWN0cyBwcm9taXNlcyBpbiBbcHNdIHRoYXQgaGF2ZSBiZWNvbWUgZnVsZmlsbGVkLCBvciBmaW5kcyBvbmVcbiAgICAgcHJvbWlzZSBpbiBbcHNdIHRoYXQgaGFzIGJlZW4gcmVqZWN0ZWQuIEl0IHRoZW4gcmV0dXJucyB0aGUgZGVzaXJlZCBzdGF0ZVxuICAgICBvZiB0aGUgZmluYWwgcHJvbWlzZTogZWl0aGVyIHRoZSBsaXN0IG9mIHJlc3VsdHMgY29sbGVjdGVkLCBvciB0aGVcbiAgICAgZXhjZXB0aW9uIGZvdW5kLiAqKVxuICBsZXQgcmVjIGNvbGxlY3RfZnVsZmlsbGVkX3Byb21pc2VzX2FmdGVyX3BlbmRpbmdcbiAgICAgIChyZXN1bHRzIDogJ2EgbGlzdClcbiAgICAgIChwcyA6ICdhIHQgbGlzdCkgOlxuICAgICAgICAoJ2EgbGlzdCByZXNvbHZlZF9zdGF0ZSkgPVxuXG4gICAgbWF0Y2ggcHMgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIEZ1bGZpbGxlZCAoTGlzdC5yZXYgcmVzdWx0cylcblxuICAgIHwgcDo6cHMgLT5cbiAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG5cbiAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0ZXJfcGVuZGluZyAodjo6cmVzdWx0cykgcHNcblxuICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICByZXN1bHRcblxuICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0ZXJfcGVuZGluZyByZXN1bHRzIHBzXG5cbiAgbGV0IG5jaG9vc2UgcHMgPVxuICAgICgqIElmIGF0IGxlYXN0IG9uZSBwcm9taXNlIGluIFtwc10gaXMgZm91bmQgZnVsZmlsbGVkLCB0aGlzIGZ1bmN0aW9uIGlzXG4gICAgICAgY2FsbGVkIHRvIGZpbmQgYWxsIHN1Y2ggcHJvbWlzZXMuICopXG4gICAgaWYgcHMgPSBbXSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkx3dC5uY2hvb3NlIFtdIHdvdWxkIHJldHVybiBhIHByb21pc2UgdGhhdCBpcyBwZW5kaW5nIGZvcmV2ZXJcIjtcbiAgICBsZXQgcmVjIGNvbGxlY3RfYWxyZWFkeV9mdWxmaWxsZWRfcHJvbWlzZXNfb3JfZmluZF9yZWplY3RlZCBhY2MgcHMgPVxuICAgICAgbWF0Y2ggcHMgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICByZXR1cm4gKExpc3QucmV2IGFjYylcblxuICAgICAgfCBwOjpwcyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgKHY6OmFjYykgcHNcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gcmVzdWx0fVxuXG4gICAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkIGFjYyBwc1xuICAgIGluXG5cbiAgICAoKiBMb29rcyBmb3IgYWxyZWFkeS1yZXNvbHZlZCBwcm9taXNlcyBpbiBbcHNdLiBJZiBub25lIGFyZSBmdWxmaWxsZWQgb3JcbiAgICAgICByZWplY3RlZCwgYWRkcyBhIGNhbGxiYWNrIHRvIGFsbCBwcm9taXNlcyBpbiBbcHNdIChhbGwgb2Ygd2hpY2ggYXJlXG4gICAgICAgcGVuZGluZykuICopXG4gICAgbGV0IHJlYyBjaGVja19mb3JfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyBwcycgPVxuICAgICAgbWF0Y2ggcHMnIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IHAgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDoocHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIHBzKSBpblxuXG4gICAgICAgIGxldCBjYWxsYmFjayBfcmVzdWx0ID1cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAgPSBtYXlfbm93X2JlX3Byb3h5IHAgaW5cbiAgICAgICAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBjb2xsZWN0X2Z1bGZpbGxlZF9wcm9taXNlc19hZnRlcl9wZW5kaW5nIFtdIHBzIGluXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCByZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcFxuICAgICAgICBpblxuICAgICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiBwcyBjYWxsYmFjaztcblxuICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgICAgIHwgcDo6cHMgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkIFt2XSBwc1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgICBjaGVja19mb3JfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyBwc1xuICAgIGluXG5cbiAgICBsZXQgcCA9IGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzIGluXG4gICAgcFxuXG4gICgqIFNlZSBbbmNob29zZV0uIFRoaXMgZnVuY3Rpb24gZGlmZmVycyBvbmx5IGluIGhhdmluZyBhZGRpdGlvbmFsIGNhbGxzIHRvXG4gICAgIFtjYW5jZWxdLiAqKVxuICBsZXQgbnBpY2sgcHMgPVxuICAgIGlmIHBzID0gW10gdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJMd3QubnBpY2sgW10gd291bGQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IGlzIHBlbmRpbmcgZm9yZXZlclwiO1xuICAgIGxldCByZWMgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkIGFjYyBwcycgPVxuICAgICAgbWF0Y2ggcHMnIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgTGlzdC5pdGVyIGNhbmNlbCBwcztcbiAgICAgICAgcmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbiAgICAgIHwgcDo6cHMnIC0+XG4gICAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9mdWxmaWxsZWRfcHJvbWlzZXNfb3JfZmluZF9yZWplY3RlZCAodjo6YWNjKSBwcydcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgTGlzdC5pdGVyIGNhbmNlbCBwcztcbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgYWNjIHBzJ1xuICAgIGluXG5cbiAgICBsZXQgcmVjIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzJyA9XG4gICAgICBtYXRjaCBwcycgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMpIGluXG5cbiAgICAgICAgbGV0IGNhbGxiYWNrIF9yZXN1bHQgPVxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpblxuICAgICAgICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGNvbGxlY3RfZnVsZmlsbGVkX3Byb21pc2VzX2FmdGVyX3BlbmRpbmcgW10gcHMgaW5cbiAgICAgICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPVxuICAgICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAgcmVzdWx0IGluXG4gICAgICAgICAgaWdub3JlIHBcbiAgICAgICAgaW5cbiAgICAgICAgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgcHMgY2FsbGJhY2s7XG5cbiAgICAgICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gICAgICB8IHA6OnBzJyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgW3ZdIHBzJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzJ1xuICAgIGluXG5cbiAgICBsZXQgcCA9IGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzIGluXG4gICAgcFxuXG5cblxuICAoKiBTYW1lIGdlbmVyYWwgcGF0dGVybiBhcyBbbnBpY2tdIGFuZCBbbmNob29zZV0uICopXG4gIGxldCBuY2hvb3NlX3NwbGl0IHBzID1cbiAgICBpZiBwcyA9IFtdIHRoZW5cbiAgICAgIGludmFsaWRfYXJnXG4gICAgICAgIFwiTHd0Lm5jaG9vc2Vfc3BsaXQgW10gd291bGQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IGlzIHBlbmRpbmcgZm9yZXZlclwiO1xuICAgIGxldCByZWMgZmluaXNoXG4gICAgICAgICh0b19yZXNvbHZlIDogKCdhIGxpc3QgKiAnYSB0IGxpc3QsIHVuZGVybHlpbmcsIHBlbmRpbmcpIHByb21pc2UpXG4gICAgICAgIChmdWxmaWxsZWQgOiAnYSBsaXN0KVxuICAgICAgICAocGVuZGluZyA6ICdhIHQgbGlzdClcbiAgICAgICAgKHBzIDogJ2EgdCBsaXN0KVxuICAgICAgICAgIDogKCdhIGxpc3QgKiAnYSB0IGxpc3QsIHVuZGVybHlpbmcsIHJlc29sdmVkKSBzdGF0ZV9jaGFuZ2VkID1cblxuICAgICAgbWF0Y2ggcHMgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgdG9fcmVzb2x2ZVxuICAgICAgICAgIChGdWxmaWxsZWQgKExpc3QucmV2IGZ1bGZpbGxlZCwgTGlzdC5yZXYgcGVuZGluZykpXG5cbiAgICAgIHwgcDo6cHMgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHBfaW50ZXJuYWwgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcF9pbnRlcm5hbCkuc3RhdGUgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgZmluaXNoIHRvX3Jlc29sdmUgKHY6OmZ1bGZpbGxlZCkgcGVuZGluZyBwc1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgdG9fcmVzb2x2ZSByZXN1bHRcblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGZpbmlzaCB0b19yZXNvbHZlIGZ1bGZpbGxlZCAocDo6cGVuZGluZykgcHNcbiAgICBpblxuXG4gICAgbGV0IHJlYyBjb2xsZWN0X2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcmVzdWx0cyBwZW5kaW5nIHBzID1cbiAgICAgIG1hdGNoIHBzIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKCogTWFpbnRhaW5lcidzIG5vdGU6IHNob3VsZCB0aGUgcGVuZGluZyBwcm9taXNlIGxpc3QgYWxzbyBiZVxuICAgICAgICAgICByZXZlcnNlZD8gSXQgaXMgcmV2ZXJzZWQgaW4gZmluaXNoLiAqKVxuICAgICAgICByZXR1cm4gKExpc3QucmV2IHJlc3VsdHMsIHBlbmRpbmcpXG5cbiAgICAgIHwgcDo6cHMgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHBfaW50ZXJuYWwgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcF9pbnRlcm5hbCkuc3RhdGUgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzICh2OjpyZXN1bHRzKSBwZW5kaW5nIHBzXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyByZXN1bHRzIChwOjpwZW5kaW5nKSBwc1xuICAgIGluXG5cbiAgICBsZXQgcmVjIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBlbmRpbmdfYWNjIHBzJyA9XG4gICAgICBtYXRjaCBwcycgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMpIGluXG5cbiAgICAgICAgbGV0IGNhbGxiYWNrIF9yZXN1bHQgPVxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpblxuICAgICAgICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9IGZpbmlzaCBwIFtdIFtdIHBzIGluXG4gICAgICAgICAgaWdub3JlIHBcbiAgICAgICAgaW5cbiAgICAgICAgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgcHMgY2FsbGJhY2s7XG5cbiAgICAgICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gICAgICB8IHA6OnBzJyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcF9pbnRlcm5hbCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwX2ludGVybmFsKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgW3ZdIHBlbmRpbmdfYWNjIHBzJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgICBjaGVja19mb3JfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyAocDo6cGVuZGluZ19hY2MpIHBzJ1xuICAgIGluXG5cbiAgICBsZXQgcCA9IGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIFtdIHBzIGluXG4gICAgcFxuZW5kXG5pbmNsdWRlIENvbmN1cnJlbnRfY29tcG9zaXRpb25cblxuXG5cbm1vZHVsZSBNaXNjZWxsYW5lb3VzIDpcbnNpZ1xuICAoKiBQcm9taXNlIHN0YXRlIHF1ZXJ5ICopXG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHwgUmV0dXJuIG9mICdhXG4gICAgfCBGYWlsIG9mIGV4blxuICAgIHwgU2xlZXBcblxuICB2YWwgc3RhdGUgOiAnYSB0IC0+ICdhIHN0YXRlXG4gIHZhbCBpc19zbGVlcGluZyA6ICdhIHQgLT4gYm9vbFxuICB2YWwgZGVidWdfc3RhdGVfaXMgOiAnYSBzdGF0ZSAtPiAnYSB0IC0+IGJvb2wgdFxuXG4gICgqIEZ1bmN0aW9uIGxpZnRlcnMgKilcbiAgdmFsIGFwcGx5IDogKCdhIC0+ICdiIHQpIC0+ICdhIC0+ICdiIHRcblxuICB2YWwgd3JhcCA6XG4gICAgKHVuaXQgLT4gJ2IpIC0+XG4gICAgJ2IgdFxuICB2YWwgd3JhcDEgOlxuICAgICgnYTEgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYiB0KVxuICB2YWwgd3JhcDIgOlxuICAgICgnYTEgLT4gJ2EyIC0+ICdiKSAtPlxuICAgICgnYTEgLT4gJ2EyIC0+ICdiIHQpXG4gIHZhbCB3cmFwMyA6XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdiKSAtPlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYiB0KVxuICB2YWwgd3JhcDQgOlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYiB0KVxuICB2YWwgd3JhcDUgOlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdiKSAtPlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdiIHQpXG4gIHZhbCB3cmFwNiA6XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdiKSAtPlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYiB0KVxuICB2YWwgd3JhcDcgOlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYiB0KVxuXG4gICgqIFBhdXNlZCBwcm9taXNlcyAqKVxuICB2YWwgcGF1c2UgOiB1bml0IC0+IHVuaXQgdFxuICB2YWwgd2FrZXVwX3BhdXNlZCA6IHVuaXQgLT4gdW5pdFxuICB2YWwgcGF1c2VkX2NvdW50IDogdW5pdCAtPiBpbnRcbiAgdmFsIHJlZ2lzdGVyX3BhdXNlX25vdGlmaWVyIDogKGludCAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBhYmFuZG9uX3BhdXNlZCA6IHVuaXQgLT4gdW5pdFxuXG4gICgqIEludGVybmFsIGludGVyZmFjZSBmb3Igb3RoZXIgbW9kdWxlcyBpbiBMd3QgKilcbiAgdmFsIHBvbGwgOiAnYSB0IC0+ICdhIG9wdGlvblxuZW5kID1cbnN0cnVjdFxuICB0eXBlICdhIHN0YXRlID1cbiAgICB8IFJldHVybiBvZiAnYVxuICAgIHwgRmFpbCBvZiBleG5cbiAgICB8IFNsZWVwXG5cbiAgZXh0ZXJuYWwgcmVyYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJlcmFpc2VcIlxuXG4gIGxldCBzdGF0ZSBwID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+IFJldHVybiB2XG4gICAgfCBSZWplY3RlZCBleG4gLT4gRmFpbCBleG5cbiAgICB8IFBlbmRpbmcgXyAtPiBTbGVlcFxuXG4gIGxldCBkZWJ1Z19zdGF0ZV9pcyBleHBlY3RlZF9zdGF0ZSBwID1cbiAgICByZXR1cm4gKHN0YXRlIHAgPSBleHBlY3RlZF9zdGF0ZSlcblxuICBsZXQgaXNfc2xlZXBpbmcgcCA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPiBmYWxzZVxuICAgIHwgUmVqZWN0ZWQgXyAtPiBmYWxzZVxuICAgIHwgUGVuZGluZyBfIC0+IHRydWVcblxuICBsZXQgcG9sbCBwID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICB8IFJlamVjdGVkIGUgLT4gcmVyYWlzZSBlXG4gICAgfCBGdWxmaWxsZWQgdiAtPiBTb21lIHZcbiAgICB8IFBlbmRpbmcgXyAtPiBOb25lXG5cblxuXG4gIGxldCBhcHBseSBmIHggPVxuICAgIHRyeSBmIHggd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcCBmID1cbiAgICB0cnkgcmV0dXJuIChmICgpKVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXAxIGYgeDEgPVxuICAgIHRyeSByZXR1cm4gKGYgeDEpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcDIgZiB4MSB4MiA9XG4gICAgdHJ5IHJldHVybiAoZiB4MSB4MilcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG4gIGxldCB3cmFwMyBmIHgxIHgyIHgzID1cbiAgICB0cnkgcmV0dXJuIChmIHgxIHgyIHgzKVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXA0IGYgeDEgeDIgeDMgeDQgPVxuICAgIHRyeSByZXR1cm4gKGYgeDEgeDIgeDMgeDQpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcDUgZiB4MSB4MiB4MyB4NCB4NSA9XG4gICAgdHJ5IHJldHVybiAoZiB4MSB4MiB4MyB4NCB4NSlcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG4gIGxldCB3cmFwNiBmIHgxIHgyIHgzIHg0IHg1IHg2ID1cbiAgICB0cnkgcmV0dXJuIChmIHgxIHgyIHgzIHg0IHg1IHg2KVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXA3IGYgeDEgeDIgeDMgeDQgeDUgeDYgeDcgPVxuICAgIHRyeSByZXR1cm4gKGYgeDEgeDIgeDMgeDQgeDUgeDYgeDcpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuXG5cbiAgbGV0IHBhdXNlX2hvb2sgPSByZWYgaWdub3JlXG5cbiAgbGV0IHBhdXNlZCA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKClcbiAgbGV0IHBhdXNlZF9jb3VudCA9IHJlZiAwXG5cbiAgbGV0IHBhdXNlICgpID1cbiAgICBsZXQgcCA9IGFkZF90YXNrX3IgcGF1c2VkIGluXG4gICAgaW5jciBwYXVzZWRfY291bnQ7XG4gICAgIXBhdXNlX2hvb2sgIXBhdXNlZF9jb3VudDtcbiAgICBwXG5cbiAgbGV0IHdha2V1cF9wYXVzZWQgKCkgPVxuICAgIGlmIEx3dF9zZXF1ZW5jZS5pc19lbXB0eSBwYXVzZWQgdGhlblxuICAgICAgcGF1c2VkX2NvdW50IDo9IDBcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdG1wID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKSBpblxuICAgICAgTHd0X3NlcXVlbmNlLnRyYW5zZmVyX3IgcGF1c2VkIHRtcDtcbiAgICAgIHBhdXNlZF9jb3VudCA6PSAwO1xuICAgICAgTHd0X3NlcXVlbmNlLml0ZXJfbCAoZnVuIHIgLT4gd2FrZXVwIHIgKCkpIHRtcFxuICAgIGVuZFxuXG4gIGxldCByZWdpc3Rlcl9wYXVzZV9ub3RpZmllciBmID0gcGF1c2VfaG9vayA6PSBmXG5cbiAgbGV0IGFiYW5kb25fcGF1c2VkICgpID1cbiAgICBMd3Rfc2VxdWVuY2UuY2xlYXIgcGF1c2VkO1xuICAgIHBhdXNlZF9jb3VudCA6PSAwXG5cbiAgbGV0IHBhdXNlZF9jb3VudCAoKSA9ICFwYXVzZWRfY291bnRcbmVuZFxuaW5jbHVkZSBNaXNjZWxsYW5lb3VzXG5cbm1vZHVsZSBMZXRfc3ludGF4ID1cbnN0cnVjdFxuICBtb2R1bGUgTGV0X3N5bnRheCA9XG4gIHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwIHQgfmYgPSBtYXAgZiB0XG4gICAgbGV0IGJpbmQgdCB+ZiA9IGJpbmQgdCBmXG4gICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPVxuICAgIHN0cnVjdFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgSW5maXggPVxuc3RydWN0XG4gIGxldCAoPj49KSA9IGJpbmRcbiAgbGV0ICg9PDwpIGYgcCA9IGJpbmQgcCBmXG4gIGxldCAoPnw9KSBwIGYgPSBtYXAgZiBwXG4gIGxldCAoPXw8KSA9IG1hcFxuICBsZXQgKDwmPikgcCBwJyA9IGpvaW4gW3A7IHAnXVxuICBsZXQgKDw/PikgcCBwJyA9IGNob29zZSBbcDsgcCddXG5cbiAgaW5jbHVkZSBMZXRfc3ludGF4XG5lbmRcbmluY2x1ZGUgKCBJbmZpeCA6IG1vZHVsZSB0eXBlIG9mIEluZml4IHdpdGggbW9kdWxlIExldF9zeW50YXggOj0gTGV0X3N5bnRheC5MZXRfc3ludGF4IClcblxubW9kdWxlIFN5bnRheCA9XG5zdHJ1Y3RcbiAgbGV0IChsZXQqKSA9IGJpbmRcbiAgbGV0IChhbmQqKSA9IGJvdGhcblxuICBsZXQgKGxldCspIHggZiA9IG1hcCBmIHhcbiAgbGV0IChhbmQrKSA9IGJvdGhcbmVuZFxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG5leGNlcHRpb24gT2ZmXG5cbnR5cGUgb25fc3dpdGNoID0ge1xuICBtdXRhYmxlIGhvb2tzIDogKHVuaXQgLT4gdW5pdCBMd3QudCkgbGlzdDtcbn1cblxudHlwZSBzdGF0ZSA9XG4gIHwgU3Rfb24gb2Ygb25fc3dpdGNoXG4gIHwgU3Rfb2ZmXG5cbnR5cGUgdCA9IHsgbXV0YWJsZSBzdGF0ZSA6IHN0YXRlIH1cblxubGV0IGNyZWF0ZSAoKSA9IHsgc3RhdGUgPSBTdF9vbiB7IGhvb2tzID0gW10gfSB9XG5cbmxldCBpc19vbiBzd2l0Y2ggPVxuICBtYXRjaCBzd2l0Y2guc3RhdGUgd2l0aFxuICB8IFN0X29uIF8gLT4gdHJ1ZVxuICB8IFN0X29mZiAtPiBmYWxzZVxuXG5sZXQgY2hlY2sgPSBmdW5jdGlvblxuICB8IFNvbWV7IHN0YXRlID0gU3Rfb2ZmIH0gLT4gcmFpc2UgT2ZmXG4gIHwgU29tZSB7c3RhdGUgPSBTdF9vbiBffSB8IE5vbmUgLT4gKClcblxubGV0IGFkZF9ob29rIHN3aXRjaCBob29rID1cbiAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgfCBTb21lIHsgc3RhdGUgPSBTdF9vbiBvcyB9IC0+XG4gICAgb3MuaG9va3MgPC0gaG9vayA6OiBvcy5ob29rc1xuICB8IFNvbWUgeyBzdGF0ZSA9IFN0X29mZiB9IC0+XG4gICAgcmFpc2UgT2ZmXG4gIHwgTm9uZSAtPlxuICAgICgpXG5cbmxldCBhZGRfaG9va19vcl9leGVjIHN3aXRjaCBob29rID1cbiAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgfCBTb21lIHsgc3RhdGUgPSBTdF9vbiBvcyB9IC0+XG4gICAgb3MuaG9va3MgPC0gaG9vayA6OiBvcy5ob29rcztcbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgfCBTb21lIHsgc3RhdGUgPSBTdF9vZmYgfSAtPlxuICAgIGhvb2sgKClcbiAgfCBOb25lIC0+XG4gICAgTHd0LnJldHVybl91bml0XG5cbmxldCB0dXJuX29mZiBzd2l0Y2ggPVxuICBtYXRjaCBzd2l0Y2guc3RhdGUgd2l0aFxuICB8IFN0X29uIHsgaG9va3MgPSBob29rcyB9IC0+XG4gICAgc3dpdGNoLnN0YXRlIDwtIFN0X29mZjtcbiAgICBMd3Quam9pbiAoTGlzdC5tYXAgKGZ1biBob29rIC0+IEx3dC5hcHBseSBob29rICgpKSBob29rcylcbiAgfCBTdF9vZmYgLT5cbiAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IHdpdGhfc3dpdGNoIGZuID1cbiAgbGV0IHN3aXRjaCA9IGNyZWF0ZSAoKSBpblxuICBMd3QuZmluYWxpemVcbiAgICAoZnVuICgpIC0+IGZuIHN3aXRjaClcbiAgICAoZnVuICgpIC0+IHR1cm5fb2ZmIHN3aXRjaClcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5cblxub3BlbiBMd3QuU3ludGF4XG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlICsnYSBub2RlID0gTmlsIHwgQ29ucyBvZiAnYSAqICdhIHRcblxuYW5kICdhIHQgPSB1bml0IC0+ICdhIG5vZGUgTHd0LnRcblxubGV0IHJldHVybl9uaWwgPSBMd3QucmV0dXJuIE5pbFxuXG5sZXQgZW1wdHkgOiAnYSB0ID0gZnVuICgpIC0+IHJldHVybl9uaWxcblxubGV0IHJldHVybiAoeCA6ICdhKSA6ICdhIHQgPSBmdW4gKCkgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgZW1wdHkpKVxuXG5sZXQgcmV0dXJuX2x3dCAoeCA6ICdhIEx3dC50KSA6ICdhIHQgPSBmdW4gKCkgLT5cbiAgIGxldCsgeCA9IHggaW5cbiAgIENvbnMgKHgsIGVtcHR5KVxuXG5sZXQgY29ucyB4IHQgKCkgPSBMd3QucmV0dXJuIChDb25zICh4LCB0KSlcblxubGV0IGNvbnNfbHd0IHggdCAoKSA9XG4gICBsZXQrIHggPSB4IGluXG4gICBDb25zICh4LCB0KVxuXG4oKiBBIG5vdGUgb24gcmVjdXJzaW5nIHRocm91Z2ggdGhlIHNlcXM6XG4gICBXaGVuIHRyYXZlcnNpbmcgYSBzZXEsIHRoZSBmaXJzdCB0aW1lIHdlIGV2YWx1YXRlIGEgc3VzcGVuZGVkIG5vZGUgd2UgYXJlXG4gICBvbiB0aGUgbGVmdCBvZiB0aGUgZmlyc3QgYmluZCAoPj49KS4gSW4gdGhhdCBjYXNlLCB3ZSB1c2UgYXBwbHkgdG8gY2FwdHVyZVxuICAgZXhjZXB0aW9ucyBpbnRvIHByb21pc2UgcmVqZWN0aW9uLlxuXG4gICBUaGlzIGlzIG9ubHkgbmVlZGVkIG9uIHRoZSBmaXJzdCBpdGVyYXRpb24gYmVjYXVzZSB3ZSBhcmUgd2l0aGluIGEgY2FsbGJhY2tcbiAgIHBhc3NlZCB0byBMd3Qgb24gdGhlIHJpZ2h0LWhhbmQgc2lkZSBvZiBhIGJpbmQgYWZ0ZXIgdGhhdC5cblxuICAgVGhyb3VnaG91dCB0aGlzIGZpbGUgd2UgdXNlIHRoZSBzYW1lIGNvZGUgcGF0dGVybiB0byBhY2hpZXZlIHRoaXM6IHdlXG4gICBzaGFkb3cgdGhlIHJlY3Vyc2l2ZSB0cmF2ZXJzYWwgZnVuY3Rpb24gd2l0aCBhbiBpZGVudGljYWwtYnV0LWZvci10aGUtYXBwbHlcbiAgIG5vbi1yZWN1cnNpdmUgY29weS4gKilcblxubGV0IHJlYyBhcHBlbmQgc2VxMSBzZXEyICgpID1cbiAgc2VxMSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gc2VxMiAoKVxuICB8IENvbnMgKHgsIG5leHQpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIGFwcGVuZCBuZXh0IHNlcTIpKVxubGV0IGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBMd3QuYXBwbHkgc2VxMSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gc2VxMiAoKVxuICB8IENvbnMgKHgsIG5leHQpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIGFwcGVuZCBuZXh0IHNlcTIpKVxuXG5sZXQgcmVjIG1hcCBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+fD0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCB4ID0gZiB4IGluXG4gICAgICBDb25zICh4LCBtYXAgZiBuZXh0KVxubGV0IG1hcCBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPnw9IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQgeCA9IGYgeCBpblxuICAgICAgQ29ucyAoeCwgbWFwIGYgbmV4dClcblxubGV0IHJlYyBtYXBfcyBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQrIHggPSBmIHggaW5cbiAgICAgIENvbnMgKHgsIG1hcF9zIGYgbmV4dClcbmxldCBtYXBfcyBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0KyB4ID0gZiB4IGluXG4gICAgICBDb25zICh4LCBtYXBfcyBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyX21hcCBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+IChcbiAgICAgIGxldCB4ID0gZiB4IGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbmV4dCAoKVxuICAgICAgfCBTb21lIHkgLT4gTHd0LnJldHVybiAoQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpICkpXG5sZXQgZmlsdGVyX21hcCBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPiAoXG4gICAgICBsZXQgeCA9IGYgeCBpblxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIG5leHQgKClcbiAgICAgIHwgU29tZSB5IC0+IEx3dC5yZXR1cm4gKENvbnMgKHksIGZpbHRlcl9tYXAgZiBuZXh0KSApKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfcyBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+IChcbiAgICAgIGxldCogeCA9IGYgeCBpblxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcF9zIGYgbmV4dCAoKVxuICAgICAgfCBTb21lIHkgLT4gTHd0LnJldHVybiAoQ29ucyAoeSwgZmlsdGVyX21hcF9zIGYgbmV4dCkgKSlcbmxldCBmaWx0ZXJfbWFwX3MgZiBzZXEgKCkgPVxuICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gKFxuICAgICAgbGV0KiB4ID0gZiB4IGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwX3MgZiBuZXh0ICgpXG4gICAgICB8IFNvbWUgeSAtPiBMd3QucmV0dXJuIChDb25zICh5LCBmaWx0ZXJfbWFwX3MgZiBuZXh0KSApKVxuXG5sZXQgcmVjIGZpbHRlciBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQgb2sgPSBmIHggaW5cbiAgICAgIGlmIG9rIHRoZW4gTHd0LnJldHVybiAoQ29ucyAoeCwgZmlsdGVyIGYgbmV4dCkpIGVsc2UgZmlsdGVyIGYgbmV4dCAoKVxubGV0IGZpbHRlciBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0IG9rID0gZiB4IGluXG4gICAgICBpZiBvayB0aGVuIEx3dC5yZXR1cm4gKENvbnMgKHgsIGZpbHRlciBmIG5leHQpKSBlbHNlIGZpbHRlciBmIG5leHQgKClcblxubGV0IHJlYyBmaWx0ZXJfcyBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQqIG9rID0gZiB4IGluXG4gICAgICBpZiBvayB0aGVuIEx3dC5yZXR1cm4gKENvbnMgKHgsIGZpbHRlcl9zIGYgbmV4dCkpIGVsc2UgZmlsdGVyX3MgZiBuZXh0ICgpXG5sZXQgZmlsdGVyX3MgZiBzZXEgKCkgPVxuICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCogb2sgPSBmIHggaW5cbiAgICAgIGlmIG9rIHRoZW4gTHd0LnJldHVybiAoQ29ucyAoeCwgZmlsdGVyX3MgZiBuZXh0KSkgZWxzZSBmaWx0ZXJfcyBmIG5leHQgKClcblxubGV0IHJlYyBmbGF0X21hcCBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBmbGF0X21hcF9hcHAgZiAoZiB4KSBuZXh0ICgpXG5cbigqIHRoaXMgaXMgW2FwcGVuZCBzZXEgKGZsYXRfbWFwIGYgdGFpbCldICopXG5hbmQgZmxhdF9tYXBfYXBwIGYgc2VxIHRhaWwgKCkgPVxuICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IGZsYXRfbWFwIGYgdGFpbCAoKVxuICB8IENvbnMgKHgsIG5leHQpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIGZsYXRfbWFwX2FwcCBmIG5leHQgdGFpbCkpXG5cbmxldCBmbGF0X21hcCBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgZmxhdF9tYXBfYXBwIGYgKGYgeCkgbmV4dCAoKVxuXG5sZXQgZm9sZF9sZWZ0IGYgYWNjIHNlcSA9XG4gIGxldCByZWMgYXV4IGYgYWNjIHNlcSA9XG4gICAgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBhdXggZiBhY2MgbmV4dFxuICBpblxuICBsZXQgYXV4IGYgYWNjIHNlcSA9XG4gICAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuIGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIHggaW5cbiAgICAgICAgYXV4IGYgYWNjIG5leHRcbiAgaW5cbiAgYXV4IGYgYWNjIHNlcVxuXG5sZXQgZm9sZF9sZWZ0X3MgZiBhY2Mgc2VxID1cbiAgbGV0IHJlYyBhdXggZiBhY2Mgc2VxID1cbiAgICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LnJldHVybiBhY2NcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCogYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBhdXggZiBhY2MgbmV4dFxuICBpblxuICBsZXQgYXV4IGYgYWNjIHNlcSA9XG4gICAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuIGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0KiBhY2MgPSBmIGFjYyB4IGluXG4gICAgICAgIGF1eCBmIGFjYyBuZXh0XG4gIGluXG4gIGF1eCBmIGFjYyBzZXFcblxubGV0IGl0ZXIgZiBzZXEgPVxuICBsZXQgcmVjIGF1eCBzZXEgPVxuICAgIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuX3VuaXRcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGYgeDtcbiAgICAgICAgYXV4IG5leHRcbiAgaW5cbiAgbGV0IGF1eCBzZXEgPVxuICAgIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LnJldHVybl91bml0XG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBmIHg7XG4gICAgICAgIGF1eCBuZXh0XG4gIGluXG4gIGF1eCBzZXFcblxubGV0IGl0ZXJfcyBmIHNlcSA9XG4gIGxldCByZWMgYXV4IHNlcSA9XG4gICAgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm5fdW5pdFxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0KiAoKSA9IGYgeCBpblxuICAgICAgICBhdXggbmV4dFxuICBpblxuICBsZXQgYXV4IHNlcSA9XG4gICAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuX3VuaXRcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCogKCkgPSBmIHggaW5cbiAgICAgICAgYXV4IG5leHRcbiAgaW5cbiAgYXV4IHNlcVxuXG5sZXQgaXRlcl9wIGYgc2VxID1cbiAgbGV0IHJlYyBhdXggYWNjIHNlcSA9XG4gICAgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5qb2luIGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IHAgPSBmIHggaW5cbiAgICAgICAgYXV4IChwOjphY2MpIG5leHRcbiAgaW5cbiAgbGV0IGF1eCBhY2Mgc2VxID1cbiAgICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5qb2luIGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IHAgPSBmIHggaW5cbiAgICAgICAgYXV4IChwOjphY2MpIG5leHRcbiAgaW5cbiAgYXV4IFtdIHNlcVxuXG5sZXQgaXRlcl9uID8obWF4X2NvbmN1cnJlbmN5ID0gMSkgZiBzZXEgPVxuICBiZWdpblxuICAgIGlmIG1heF9jb25jdXJyZW5jeSA8PSAwIHRoZW5cbiAgICAgIGxldCBtZXNzYWdlID1cbiAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICBcIkx3dF9zZXEuaXRlcl9uOiBtYXhfY29uY3VycmVuY3kgbXVzdCBiZSA+IDAsICVkIGdpdmVuXCJcbiAgICAgICAgICBtYXhfY29uY3VycmVuY3lcbiAgICAgIGluXG4gICAgICBpbnZhbGlkX2FyZyBtZXNzYWdlXG4gIGVuZDtcbiAgbGV0IHJlYyBsb29wIHJ1bm5pbmcgYXZhaWxhYmxlIHNlcSA9XG4gICAgYmVnaW5cbiAgICAgIGlmIGF2YWlsYWJsZSA+IDAgdGhlbiAoXG4gICAgICAgIEx3dC5yZXR1cm4gKHJ1bm5pbmcsIGF2YWlsYWJsZSlcbiAgICAgIClcbiAgICAgIGVsc2UgKFxuICAgICAgICBMd3QubmNob29zZV9zcGxpdCBydW5uaW5nID4+PSBmdW4gKGNvbXBsZXRlLCBydW5uaW5nKSAtPlxuICAgICAgICBMd3QucmV0dXJuIChydW5uaW5nLCBhdmFpbGFibGUgKyBMaXN0Lmxlbmd0aCBjb21wbGV0ZSlcbiAgICAgIClcbiAgICBlbmQgPj49IGZ1biAocnVubmluZywgYXZhaWxhYmxlKSAtPlxuICAgIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPlxuICAgICAgTHd0LmpvaW4gcnVubmluZ1xuICAgIHwgQ29ucyAoZWx0LCBzZXEpIC0+XG4gICAgICBsb29wIChmIGVsdCA6OiBydW5uaW5nKSAocHJlZCBhdmFpbGFibGUpIHNlcVxuICBpblxuICAoKiBiZWNhdXNlIHRoZSByZWN1cnNpb24gaXMgbW9yZSBjb21wbGljYXRlZCBoZXJlLCB3ZSBhcHBseSB0aGUgc2VxIGRpcmVjdGx5IGF0XG4gICAgIHRoZSBjYWxsLXNpdGUgaW5zdGVhZCAqKVxuICBsb29wIFtdIG1heF9jb25jdXJyZW5jeSAoZnVuICgpIC0+IEx3dC5hcHBseSBzZXEgKCkpXG5cbmxldCByZWMgdW5mb2xkIGYgdSAoKSA9XG4gIG1hdGNoIGYgdSB3aXRoXG4gIHwgTm9uZSAtPiByZXR1cm5fbmlsXG4gIHwgU29tZSAoeCwgdScpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIHVuZm9sZCBmIHUnKSlcbiAgfCBleGNlcHRpb24gZXhjIHdoZW4gTHd0LkV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4YyAtPiBMd3QuZmFpbCBleGNcblxubGV0IHJlYyB1bmZvbGRfbHd0IGYgdSAoKSA9XG4gIGxldCogeCA9IGYgdSBpblxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHJldHVybl9uaWxcbiAgfCBTb21lICh4LCB1JykgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgdW5mb2xkX2x3dCBmIHUnKSlcbmxldCB1bmZvbGRfbHd0IGYgdSAoKSA9XG4gIGxldCogeCA9IEx3dC5hcHBseSBmIHUgaW5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiByZXR1cm5fbmlsXG4gIHwgU29tZSAoeCwgdScpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIHVuZm9sZF9sd3QgZiB1JykpXG5cbmxldCByZWMgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZW1wdHlcbiAgfCBoIDo6IHQgLT4gY29ucyBoIChvZl9saXN0IHQpXG5cbmxldCByZWMgdG9fbGlzdCBzZXEgPVxuICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IEx3dC5yZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBsZXQrIGwgPSB0b19saXN0IG5leHQgaW5cbiAgICB4IDo6IGxcbmxldCB0b19saXN0IHNlcSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IEx3dC5yZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBsZXQrIGwgPSB0b19saXN0IG5leHQgaW5cbiAgICB4IDo6IGxcblxubGV0IHJlYyBvZl9zZXEgc2VxICgpID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBTZXEuTmlsIC0+IHJldHVybl9uaWxcbiAgfCBTZXEuQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBMd3QucmV0dXJuIChDb25zICh4LCAob2Zfc2VxIG5leHQpKSlcbiAgfCBleGNlcHRpb24gZXhuIHdoZW4gTHd0LkV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBMd3QuZmFpbCBleG5cblxubGV0IHJlYyBvZl9zZXFfbHd0IChzZXE6ICdhIEx3dC50IFNlcS50KTogJ2EgdCA9IGZ1biAoKSAtPlxuICAgIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBTZXEuTmlsIC0+IHJldHVybl9uaWxcbiAgICB8IFNlcS5Db25zICh4LCBuZXh0KSAtPlxuICAgICAgIGxldCsgeCA9IHggaW5cbiAgICAgICBsZXQgbmV4dCA9IG9mX3NlcV9sd3QgbmV4dCBpblxuICAgICAgIENvbnMgKHgsIG5leHQpXG5sZXQgb2Zfc2VxX2x3dCAoc2VxOiAnYSBMd3QudCBTZXEudCk6ICdhIHQgPSBmdW4gKCkgLT5cbiAgICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgU2VxLk5pbCAtPiByZXR1cm5fbmlsXG4gICAgfCBTZXEuQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICBsZXQrIHggPSB4IGluXG4gICAgICAgbGV0IG5leHQgPSBvZl9zZXFfbHd0IG5leHQgaW5cbiAgICAgICBDb25zICh4LCBuZXh0KVxuICAgIHwgZXhjZXB0aW9uIGV4YyB3aGVuIEx3dC5FeGNlcHRpb25fZmlsdGVyLnJ1biBleGMgLT4gTHd0LmZhaWwgZXhjXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxub3BlbiBMd3QuSW5maXhcblxuZXhjZXB0aW9uIENsb3NlZFxuZXhjZXB0aW9uIEZ1bGxcbmV4Y2VwdGlvbiBFbXB0eVxuXG4oKiBBIG5vZGUgaW4gYSBxdWV1ZSBvZiBwZW5kaW5nIGRhdGEuICopXG50eXBlICdhIG5vZGUgPSB7XG4gIG11dGFibGUgbmV4dCA6ICdhIG5vZGU7XG4gICgqIE5leHQgbm9kZSBpbiB0aGUgcXVldWUuIEZvciB0aGUgbGFzdCBub2RlIGl0IHBvaW50cyB0byBpdHNlbGYuICopXG4gIG11dGFibGUgZGF0YSA6ICdhIG9wdGlvbjtcbiAgKCogRGF0YSBvZiB0aGlzIG5vZGUuIEZvciB0aGUgbGFzdCBub2RlIGl0IGlzIGFsd2F5cyBbTm9uZV0uICopXG59XG5cbigqIE5vdGU6IGEgcXVldWUgZm9yIGFuIGV4aGF1c3RlZCBzdHJlYW0gaXMgcmVwcmVzZW50ZWQgYnkgYSBub2RlXG4gICBjb250YWluaW5nIFtOb25lXSBmb2xsb3dlZCBieSBhIG5vZGUgd2l0aCBpdHNlbGYgYXMgbmV4dCBhbmQgW05vbmVdXG4gICBhcyBkYXRhLiAqKVxuXG5sZXQgbmV3X25vZGUgKCkgPVxuICBsZXQgcmVjIG5vZGUgPSB7IG5leHQgPSBub2RlOyBkYXRhID0gTm9uZSB9IGluXG4gIG5vZGVcblxuKCogVHlwZSBvZiBhIHN0cmVhbSBzb3VyY2UgdXNpbmcgYSBmdW5jdGlvbiB0byBjcmVhdGUgbmV3IGVsZW1lbnRzLiAqKVxudHlwZSAnYSBmcm9tID0ge1xuICBmcm9tX2NyZWF0ZSA6IHVuaXQgLT4gJ2Egb3B0aW9uIEx3dC50O1xuICAoKiBGdW5jdGlvbiB1c2VkIHRvIGNyZWF0ZSBuZXcgZWxlbWVudHMuICopXG4gIG11dGFibGUgZnJvbV90aHJlYWQgOiB1bml0IEx3dC50O1xuICAoKiBUaHJlYWQgd2hpY2g6XG5cbiAgICAgLSB3YWl0IGZvciB0aGUgdGhyZWFkIHJldHVybmVkIGJ5IHRoZSBsYXN0IGNhbGwgdG8gW2Zyb21fbmV4dF0sXG4gICAgIC0gYWRkIHRoZSBuZXh0IGVsZW1lbnQgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWUuXG5cbiAgICAgSWYgaXQgaXMgYSBzbGVlcGluZyB0aHJlYWQsIHRoZW4gaXQgbXVzdCBiZSB1c2VkIGluc3RlYWQgb2YgY3JlYXRpbmcgYVxuICAgICBuZXcgb25lIHdpdGggW2Zyb21fY3JlYXRlXS4gKilcbn1cblxuKCogVHlwZSBvZiBhIHN0cmVhbSBzb3VyY2UgZm9yIHB1c2ggc3RyZWFtcy4gKilcbnR5cGUgcHVzaCA9IHtcbiAgbXV0YWJsZSBwdXNoX3NpZ25hbCA6IHVuaXQgTHd0LnQ7XG4gICgqIFRocmVhZCBzaWduYWxlZCB3aGVuIGEgbmV3IGVsZW1lbnQgaXMgYWRkZWQgdG8gdGhlIHN0cmVhbS4gKilcbiAgbXV0YWJsZSBwdXNoX3dhaXRpbmcgOiBib29sO1xuICAoKiBJcyBhIHRocmVhZCB3YWl0aW5nIG9uIFtwdXNoX3NpZ25hbF0gPyAqKVxuICBtdXRhYmxlIHB1c2hfZXh0ZXJuYWwgOiBPYmoudCBbQG9jYW1sLndhcm5pbmcgXCItNjlcIl07XG4gICgqIFJlZmVyZW5jZSB0byBhbiBleHRlcm5hbCBzb3VyY2UuICopXG59XG5cbigqIFR5cGUgb2YgYSBzdHJlYW0gc291cmNlIGZvciBib3VuZGVkLXB1c2ggc3RyZWFtcy4gKilcbnR5cGUgJ2EgcHVzaF9ib3VuZGVkID0ge1xuICBtdXRhYmxlIHB1c2hiX3NpZ25hbCA6IHVuaXQgTHd0LnQ7XG4gICgqIFRocmVhZCBzaWduYWxlZCB3aGVuIGEgbmV3IGVsZW1lbnQgaXMgYWRkZWQgdG8gdGhlIHN0cmVhbS4gKilcbiAgbXV0YWJsZSBwdXNoYl93YWl0aW5nIDogYm9vbDtcbiAgKCogSXMgYSB0aHJlYWQgd2FpdGluZyBvbiBbcHVzaGJfc2lnbmFsXSA/ICopXG4gIG11dGFibGUgcHVzaGJfc2l6ZSA6IGludDtcbiAgKCogU2l6ZSBvZiB0aGUgcXVldWUuICopXG4gIG11dGFibGUgcHVzaGJfY291bnQgOiBpbnQ7XG4gICgqIEN1cnJlbnQgbGVuZ3RoIG9mIHRoZSBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwdXNoYl9wZW5kaW5nIDogJ2Egb3B0aW9uO1xuICAoKiBUaGUgbmV4dCBlbGVtZW50IHRvIHB1c2ggaWYgYSB0aHJlYWQgYmxvY2tlZCBvbiBwdXNoLiBXZSBzdG9yZSBpdFxuICAgICBoZXJlIHRvIGJlIHN1cmUgaXQgd2lsbCBiZSB0aGUgZmlyc3QgZWxlbWVudCB0byBiZSBhZGRlZCB3aGVuXG4gICAgIHNwYWNlIGJlY29tZXMgYXZhaWxhYmxlLiAqKVxuICBtdXRhYmxlIHB1c2hiX3B1c2hfd2FpdGVyIDogdW5pdCBMd3QudDtcbiAgbXV0YWJsZSBwdXNoYl9wdXNoX3dha2VuZXIgOiB1bml0IEx3dC51O1xuICAoKiBUaHJlYWQgYmxvY2tlZCBvbiBwdXNoLiAqKVxuICBtdXRhYmxlIHB1c2hiX2V4dGVybmFsIDogT2JqLnQgW0BvY2FtbC53YXJuaW5nIFwiLTY5XCJdO1xuICAoKiBSZWZlcmVuY2UgdG8gYW4gZXh0ZXJuYWwgc291cmNlLiAqKVxufVxuXG4oKiBTb3VyY2Ugb2YgYSBzdHJlYW0uICopXG50eXBlICdhIHNvdXJjZSA9XG4gIHwgRnJvbSBvZiAnYSBmcm9tXG4gIHwgRnJvbV9kaXJlY3Qgb2YgKHVuaXQgLT4gJ2Egb3B0aW9uKVxuICB8IFB1c2ggb2YgcHVzaFxuICB8IFB1c2hfYm91bmRlZCBvZiAnYSBwdXNoX2JvdW5kZWRcblxudHlwZSAnYSB0ID0ge1xuICBzb3VyY2UgOiAnYSBzb3VyY2U7XG4gICgqIFRoZSBzb3VyY2Ugb2YgdGhlIHN0cmVhbS4gKilcbiAgY2xvc2UgOiB1bml0IEx3dC51O1xuICAoKiBBIHdha2VuZXIgZm9yIGEgdGhyZWFkIHRoYXQgc2xlZXBzIHVudGlsIHRoZSBzdHJlYW0gaXMgY2xvc2VkLiAqKVxuICBjbG9zZWQgOiB1bml0IEx3dC50O1xuICAoKiBBIHdhaXRlciBmb3IgYSB0aHJlYWQgdGhhdCBzbGVlcHMgdW50aWwgdGhlIHN0cmVhbSBpcyBjbG9zZWQuICopXG4gIG11dGFibGUgbm9kZSA6ICdhIG5vZGU7XG4gICgqIFBvaW50ZXIgdG8gZmlyc3QgcGVuZGluZyBlbGVtZW50LCBvciB0byBbbGFzdF0gaWYgdGhlcmUgaXMgbm9cbiAgICAgcGVuZGluZyBlbGVtZW50LiAqKVxuICBsYXN0IDogJ2Egbm9kZSByZWY7XG4gICgqIE5vZGUgbWFya2luZyB0aGUgZW5kIG9mIHRoZSBxdWV1ZSBvZiBwZW5kaW5nIGVsZW1lbnRzLiAqKVxufVxuXG5jbGFzcyB0eXBlIFsnYV0gYm91bmRlZF9wdXNoID0gb2JqZWN0XG4gIG1ldGhvZCBzaXplIDogaW50XG4gIG1ldGhvZCByZXNpemUgOiBpbnQgLT4gdW5pdFxuICBtZXRob2QgcHVzaCA6ICdhIC0+IHVuaXQgTHd0LnRcbiAgbWV0aG9kIGNsb3NlIDogdW5pdFxuICBtZXRob2QgY291bnQgOiBpbnRcbiAgbWV0aG9kIGJsb2NrZWQgOiBib29sXG4gIG1ldGhvZCBjbG9zZWQgOiBib29sXG4gIG1ldGhvZCBzZXRfcmVmZXJlbmNlIDogJ2EuICdhIC0+IHVuaXRcbmVuZFxuXG4oKiBUaGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGNsb25lcyBpcyB0aGUgcG9pbnRlciB0byB0aGUgZmlyc3RcbiAgIHBlbmRpbmcgZWxlbWVudC4gKilcbmxldCBjbG9uZSBzID1cbiAgKG1hdGNoIHMuc291cmNlIHdpdGhcbiAgIHwgUHVzaF9ib3VuZGVkIF8gLT4gaW52YWxpZF9hcmcgXCJMd3Rfc3RyZWFtLmNsb25lXCJcbiAgIHwgRnJvbSBfIHwgRnJvbV9kaXJlY3QgXyB8IFB1c2ggXyAtPiAoKSk7XG4gIHtcbiAgICBzb3VyY2UgPSBzLnNvdXJjZTtcbiAgICBjbG9zZSA9IHMuY2xvc2U7XG4gICAgY2xvc2VkID0gcy5jbG9zZWQ7XG4gICAgbm9kZSA9IHMubm9kZTtcbiAgICBsYXN0ID0gcy5sYXN0O1xuICB9XG5cbmxldCBmcm9tX3NvdXJjZSBzb3VyY2UgPVxuICBsZXQgbm9kZSA9IG5ld19ub2RlICgpIGluXG4gIGxldCBjbG9zZWQsIGNsb3NlID0gTHd0LndhaXQgKCkgaW5cbiAgeyBzb3VyY2UgOyBjbG9zZSA7IGNsb3NlZCA7IG5vZGUgOyBsYXN0ID0gcmVmIG5vZGUgfVxuXG5sZXQgZnJvbSBmID1cbiAgZnJvbV9zb3VyY2UgKEZyb20geyBmcm9tX2NyZWF0ZSA9IGY7IGZyb21fdGhyZWFkID0gTHd0LnJldHVybl91bml0IH0pXG5cbmxldCBmcm9tX2RpcmVjdCBmID1cbiAgZnJvbV9zb3VyY2UgKEZyb21fZGlyZWN0IGYpXG5cbmxldCBjbG9zZWQgcyA9IHMuY2xvc2VkXG5cbmxldCBpc19jbG9zZWQgcyA9XG4gIG5vdCAoTHd0LmlzX3NsZWVwaW5nIChjbG9zZWQgcykpXG5cbmxldCBlbnF1ZXVlJyBlIGxhc3QgPVxuICBsZXQgbm9kZSA9ICFsYXN0XG4gIGFuZCBuZXdfbGFzdCA9IG5ld19ub2RlICgpIGluXG4gIG5vZGUuZGF0YSA8LSBlO1xuICBub2RlLm5leHQgPC0gbmV3X2xhc3Q7XG4gIGxhc3QgOj0gbmV3X2xhc3RcblxubGV0IGVucXVldWUgZSBzID1cbiAgZW5xdWV1ZScgZSBzLmxhc3RcblxubGV0IGNyZWF0ZV93aXRoX3JlZmVyZW5jZSAoKSA9XG4gICgqIENyZWF0ZSB0aGUgc291cmNlIGZvciBub3RpZmljYXRpb25zIG9mIG5ldyBlbGVtZW50cy4gKilcbiAgbGV0IHNvdXJjZSwgcHVzaF9zaWduYWxfcmVzb2x2ZXIgPVxuICAgIGxldCBwdXNoX3NpZ25hbCwgcHVzaF9zaWduYWxfcmVzb2x2ZXIgPSBMd3Qud2FpdCAoKSBpblxuICAgICh7IHB1c2hfc2lnbmFsO1xuICAgICAgIHB1c2hfd2FpdGluZyA9IGZhbHNlO1xuICAgICAgIHB1c2hfZXh0ZXJuYWwgPSBPYmoucmVwciAoKSB9LFxuICAgICByZWYgcHVzaF9zaWduYWxfcmVzb2x2ZXIpXG4gIGluXG4gIGxldCB0ID0gZnJvbV9zb3VyY2UgKFB1c2ggc291cmNlKSBpblxuICAoKiBbcHVzaF0gc2hvdWxkIG5vdCBjbG9zZSBvdmVyIFt0XSBzbyB0aGF0IGl0IGNhbiBiZSBnYXJiYWdlIGNvbGxlY3RlZCBldmVuXG4gICAqIHRoZXJlIGFyZSBzdGlsbCByZWZlcmVuY2VzIHRvIFtwdXNoXS4gVW5wYWNrIGFsbCB0aGUgY29tcG9uZW50cyBvZiBbdF1cbiAgICogdGhhdCBbcHVzaF0gbmVlZHMgYW5kIHJlZmVyZW5jZSB0aG9zZSBpZGVudGlmaWVycyBpbnN0ZWFkLiAqKVxuICBsZXQgY2xvc2UgPSB0LmNsb3NlIGFuZCBjbG9zZWQgPSB0LmNsb3NlZCBhbmQgbGFzdCA9IHQubGFzdCBpblxuICAoKiBUaGUgcHVzaCBmdW5jdGlvbi4gSXQgZG9lcyBub3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgc3RyZWFtLiAqKVxuICBsZXQgcHVzaCB4ID1cbiAgICBpZiBub3QgKEx3dC5pc19zbGVlcGluZyBjbG9zZWQpIHRoZW4gcmFpc2UgQ2xvc2VkO1xuICAgICgqIFB1c2ggdGhlIGVsZW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgcXVldWUuICopXG4gICAgZW5xdWV1ZScgeCBsYXN0O1xuICAgICgqIFNlbmQgYSBzaWduYWwgaWYgYXQgbGVhc3Qgb25lIHRocmVhZCBpcyB3YWl0aW5nIGZvciBhIG5ld1xuICAgICAgIGVsZW1lbnQuICopXG4gICAgaWYgc291cmNlLnB1c2hfd2FpdGluZyB0aGVuIGJlZ2luXG4gICAgICBzb3VyY2UucHVzaF93YWl0aW5nIDwtIGZhbHNlO1xuICAgICAgKCogVXBkYXRlIHRocmVhZHMuICopXG4gICAgICBsZXQgb2xkX3B1c2hfc2lnbmFsX3Jlc29sdmVyID0gIXB1c2hfc2lnbmFsX3Jlc29sdmVyIGluXG4gICAgICBsZXQgbmV3X3dhaXRlciwgbmV3X3B1c2hfc2lnbmFsX3Jlc29sdmVyID0gTHd0LndhaXQgKCkgaW5cbiAgICAgIHNvdXJjZS5wdXNoX3NpZ25hbCA8LSBuZXdfd2FpdGVyO1xuICAgICAgcHVzaF9zaWduYWxfcmVzb2x2ZXIgOj0gbmV3X3B1c2hfc2lnbmFsX3Jlc29sdmVyO1xuICAgICAgKCogU2lnbmFsIHRoYXQgYSBuZXcgdmFsdWUgaGFzIGJlZW4gcmVjZWl2ZWQuICopXG4gICAgICBMd3Qud2FrZXVwX2xhdGVyIG9sZF9wdXNoX3NpZ25hbF9yZXNvbHZlciAoKVxuICAgIGVuZDtcbiAgICAoKiBEbyB0aGlzIGF0IHRoZSBlbmQgaW4gY2FzZSBvbmUgb2YgdGhlIGZ1bmN0aW9uIHJhaXNlIGFuXG4gICAgICAgZXhjZXB0aW9uLiAqKVxuICAgIGlmIHggPSBOb25lIHRoZW4gTHd0Lndha2V1cCBjbG9zZSAoKVxuICBpblxuICAodCwgcHVzaCwgZnVuIHggLT4gc291cmNlLnB1c2hfZXh0ZXJuYWwgPC0gT2JqLnJlcHIgeClcblxubGV0IHJldHVybiBhID1cbiAgbGV0IHN0cmVhbSwgcHVzaCwgXyA9IGNyZWF0ZV93aXRoX3JlZmVyZW5jZSAoKSBpblxuICBwdXNoIChTb21lIGEpO1xuICBwdXNoIE5vbmU7XG4gIHN0cmVhbVxuXG5sZXQgcmV0dXJuX2x3dCBhID1cbiAgbGV0IHNvdXJjZSwgcHVzaCwgXyA9IGNyZWF0ZV93aXRoX3JlZmVyZW5jZSAoKSBpblxuICBMd3QuZG9udF93YWl0XG4gICAgKGZ1biAoKSAtPlxuICAgICAgTHd0LmJpbmQgYSAoZnVuIHggLT5cbiAgICAgICAgcHVzaCAoU29tZSB4KTtcbiAgICAgICAgcHVzaCBOb25lO1xuICAgICAgICBMd3QucmV0dXJuX3VuaXQpKVxuICAgIChmdW4gX2V4YyAtPiBwdXNoIE5vbmUpO1xuICBzb3VyY2VcblxubGV0IG9mX3NlcSBzID1cbiAgbGV0IHMgPSByZWYgcyBpblxuICBsZXQgZ2V0ICgpID1cbiAgICBtYXRjaCAhcyAoKSB3aXRoXG4gICAgfCBTZXEuTmlsIC0+IE5vbmVcbiAgICB8IFNlcS5Db25zIChlbHQsIHMnKSAtPiBzIDo9IHMnOyBTb21lIGVsdFxuICBpblxuICBmcm9tX2RpcmVjdCBnZXRcblxubGV0IG9mX2x3dF9zZXEgcyA9XG4gIGxldCBzID0gcmVmIHMgaW5cbiAgbGV0IGdldCAoKSA9XG4gICAgIXMgKCkgPnw9IGZ1bmN0aW9uXG4gICAgfCBMd3Rfc2VxLk5pbCAtPiBOb25lXG4gICAgfCBMd3Rfc2VxLkNvbnMgKGVsdCwgcycpIC0+IHMgOj0gcyc7IFNvbWUgZWx0XG4gIGluXG4gIGZyb20gZ2V0XG5cblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBzb3VyY2UsIHB1c2gsIF8gPSBjcmVhdGVfd2l0aF9yZWZlcmVuY2UgKCkgaW5cbiAgKHNvdXJjZSwgcHVzaClcblxubGV0IG9mX2l0ZXIgaXRlciBpID1cbiAgbGV0IHN0cmVhbSwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIChmdW4geCAtPiBwdXNoIChTb21lIHgpKSBpO1xuICBwdXNoIE5vbmU7XG4gIHN0cmVhbVxuXG5sZXQgb2ZfbGlzdCBsID1cbiAgb2ZfaXRlciBMaXN0Lml0ZXIgbFxuXG5sZXQgb2ZfYXJyYXkgYSA9XG4gIG9mX2l0ZXIgQXJyYXkuaXRlciBhXG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIG9mX2l0ZXIgU3RyaW5nLml0ZXIgc1xuXG4oKiBBZGQgdGhlIHBlbmRpbmcgZWxlbWVudCB0byB0aGUgcXVldWUgYW5kIG5vdGlmeSB0aGUgYmxvY2tlZCBwdXNoZWQuXG5cbiAgIFByZWNvbmRpdGlvbjogaW5mby5wdXNoYl9wZW5kaW5nID0gU29tZSBfXG5cbiAgIFRoaXMgZG9lcyBub3QgbW9kaWZ5IGluZm8ucHVzaGJfY291bnQuICopXG5sZXQgbm90aWZ5X3B1c2hlciBpbmZvIGxhc3QgPVxuICAoKiBQdXNoIHRoZSBlbGVtZW50IGF0IHRoZSBlbmQgb2YgdGhlIHF1ZXVlLiAqKVxuICBlbnF1ZXVlJyBpbmZvLnB1c2hiX3BlbmRpbmcgbGFzdDtcbiAgKCogQ2xlYXIgcGVuZGluZyBlbGVtZW50LiAqKVxuICBpbmZvLnB1c2hiX3BlbmRpbmcgPC0gTm9uZTtcbiAgKCogV2FrZXVwIHRoZSBwdXNoZXIuICopXG4gIGxldCBvbGRfd2FrZW5lciA9IGluZm8ucHVzaGJfcHVzaF93YWtlbmVyIGluXG4gIGxldCB3YWl0ZXIsIHdha2VuZXIgPSBMd3QudGFzayAoKSBpblxuICBpbmZvLnB1c2hiX3B1c2hfd2FpdGVyIDwtIHdhaXRlcjtcbiAgaW5mby5wdXNoYl9wdXNoX3dha2VuZXIgPC0gd2FrZW5lcjtcbiAgTHd0Lndha2V1cF9sYXRlciBvbGRfd2FrZW5lciAoKVxuXG5jbGFzcyBbJ2FdIGJvdW5kZWRfcHVzaF9pbXBsIChpbmZvIDogJ2EgcHVzaF9ib3VuZGVkKSB3YWtlbmVyX2NlbGwgbGFzdCBjbG9zZSA9IG9iamVjdFxuICB2YWwgbXV0YWJsZSBjbG9zZWQgPSBmYWxzZVxuXG4gIG1ldGhvZCBzaXplID1cbiAgICBpbmZvLnB1c2hiX3NpemVcblxuICBtZXRob2QgcmVzaXplIHNpemUgPVxuICAgIGlmIHNpemUgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMd3Rfc3RyZWFtLmJvdW5kZWRfcHVzaCNyZXNpemVcIjtcbiAgICBpbmZvLnB1c2hiX3NpemUgPC0gc2l6ZTtcbiAgICBpZiBpbmZvLnB1c2hiX2NvdW50IDwgaW5mby5wdXNoYl9zaXplICYmIGluZm8ucHVzaGJfcGVuZGluZyA8PiBOb25lIHRoZW4gYmVnaW5cbiAgICAgIGluZm8ucHVzaGJfY291bnQgPC0gaW5mby5wdXNoYl9jb3VudCArIDE7XG4gICAgICBub3RpZnlfcHVzaGVyIGluZm8gbGFzdFxuICAgIGVuZFxuXG4gIG1ldGhvZCBwdXNoIHggPVxuICAgIGlmIGNsb3NlZCB0aGVuXG4gICAgICBMd3QuZmFpbCBDbG9zZWRcbiAgICBlbHNlIGlmIGluZm8ucHVzaGJfcGVuZGluZyA8PiBOb25lIHRoZW5cbiAgICAgIEx3dC5mYWlsIEZ1bGxcbiAgICBlbHNlIGlmIGluZm8ucHVzaGJfY291bnQgPj0gaW5mby5wdXNoYl9zaXplIHRoZW4gYmVnaW5cbiAgICAgIGluZm8ucHVzaGJfcGVuZGluZyA8LSBTb21lIHg7XG4gICAgICBMd3QuY2F0Y2hcbiAgICAgICAgKGZ1biAoKSAtPiBpbmZvLnB1c2hiX3B1c2hfd2FpdGVyKVxuICAgICAgICAoZnVuIGV4biAtPlxuICAgICAgICAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgICAgICB8IEx3dC5DYW5jZWxlZCAtPlxuICAgICAgICAgICAgIGluZm8ucHVzaGJfcGVuZGluZyA8LSBOb25lO1xuICAgICAgICAgICAgIGxldCB3YWl0ZXIsIHdha2VuZXIgPSBMd3QudGFzayAoKSBpblxuICAgICAgICAgICAgIGluZm8ucHVzaGJfcHVzaF93YWl0ZXIgPC0gd2FpdGVyO1xuICAgICAgICAgICAgIGluZm8ucHVzaGJfcHVzaF93YWtlbmVyIDwtIHdha2VuZXI7XG4gICAgICAgICAgICAgTHd0LmZhaWwgZXhuXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIEx3dC5mYWlsIGV4bilcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgKCogUHVzaCB0aGUgZWxlbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBxdWV1ZS4gKilcbiAgICAgIGVucXVldWUnIChTb21lIHgpIGxhc3Q7XG4gICAgICBpbmZvLnB1c2hiX2NvdW50IDwtIGluZm8ucHVzaGJfY291bnQgKyAxO1xuICAgICAgKCogU2VuZCBhIHNpZ25hbCBpZiBhdCBsZWFzdCBvbmUgdGhyZWFkIGlzIHdhaXRpbmcgZm9yIGEgbmV3XG4gICAgICAgICBlbGVtZW50LiAqKVxuICAgICAgaWYgaW5mby5wdXNoYl93YWl0aW5nIHRoZW4gYmVnaW5cbiAgICAgICAgaW5mby5wdXNoYl93YWl0aW5nIDwtIGZhbHNlO1xuICAgICAgICAoKiBVcGRhdGUgdGhyZWFkcy4gKilcbiAgICAgICAgbGV0IG9sZF93YWtlbmVyID0gIXdha2VuZXJfY2VsbCBpblxuICAgICAgICBsZXQgbmV3X3dhaXRlciwgbmV3X3dha2VuZXIgPSBMd3Qud2FpdCAoKSBpblxuICAgICAgICBpbmZvLnB1c2hiX3NpZ25hbCA8LSBuZXdfd2FpdGVyO1xuICAgICAgICB3YWtlbmVyX2NlbGwgOj0gbmV3X3dha2VuZXI7XG4gICAgICAgICgqIFNpZ25hbCB0aGF0IGEgbmV3IHZhbHVlIGhhcyBiZWVuIHJlY2VpdmVkLiAqKVxuICAgICAgICBMd3Qud2FrZXVwX2xhdGVyIG9sZF93YWtlbmVyICgpXG4gICAgICBlbmQ7XG4gICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICBlbmRcblxuICBtZXRob2QgY2xvc2UgPVxuICAgIGlmIG5vdCBjbG9zZWQgdGhlbiBiZWdpblxuICAgICAgY2xvc2VkIDwtIHRydWU7XG4gICAgICBsZXQgbm9kZSA9ICFsYXN0IGFuZCBuZXdfbGFzdCA9IG5ld19ub2RlICgpIGluXG4gICAgICBub2RlLmRhdGEgPC0gTm9uZTtcbiAgICAgIG5vZGUubmV4dCA8LSBuZXdfbGFzdDtcbiAgICAgIGxhc3QgOj0gbmV3X2xhc3Q7XG4gICAgICBpZiBpbmZvLnB1c2hiX3BlbmRpbmcgPD4gTm9uZSB0aGVuIGJlZ2luXG4gICAgICAgIGluZm8ucHVzaGJfcGVuZGluZyA8LSBOb25lO1xuICAgICAgICBMd3Qud2FrZXVwX2xhdGVyX2V4biBpbmZvLnB1c2hiX3B1c2hfd2FrZW5lciBDbG9zZWRcbiAgICAgIGVuZDtcbiAgICAgICgqIFNlbmQgYSBzaWduYWwgaWYgYXQgbGVhc3Qgb25lIHRocmVhZCBpcyB3YWl0aW5nIGZvciBhIG5ld1xuICAgICAgICAgZWxlbWVudC4gKilcbiAgICAgIGlmIGluZm8ucHVzaGJfd2FpdGluZyB0aGVuIGJlZ2luXG4gICAgICAgIGluZm8ucHVzaGJfd2FpdGluZyA8LSBmYWxzZTtcbiAgICAgICAgbGV0IG9sZF93YWtlbmVyID0gIXdha2VuZXJfY2VsbCBpblxuICAgICAgICAoKiBTaWduYWwgdGhhdCBhIG5ldyB2YWx1ZSBoYXMgYmVlbiByZWNlaXZlZC4gKilcbiAgICAgICAgTHd0Lndha2V1cF9sYXRlciBvbGRfd2FrZW5lciAoKVxuICAgICAgZW5kO1xuICAgICAgTHd0Lndha2V1cCBjbG9zZSAoKTtcbiAgICBlbmRcblxuICBtZXRob2QgY291bnQgPVxuICAgIGluZm8ucHVzaGJfY291bnRcblxuICBtZXRob2QgYmxvY2tlZCA9XG4gICAgaW5mby5wdXNoYl9wZW5kaW5nIDw+IE5vbmVcblxuICBtZXRob2QgY2xvc2VkID1cbiAgICBjbG9zZWRcblxuICBtZXRob2Qgc2V0X3JlZmVyZW5jZSA6ICdhLiAnYSAtPiB1bml0ID1cbiAgICBmdW4geCAtPiBpbmZvLnB1c2hiX2V4dGVybmFsIDwtIE9iai5yZXByIHhcbmVuZFxuXG5sZXQgY3JlYXRlX2JvdW5kZWQgc2l6ZSA9XG4gIGlmIHNpemUgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMd3Rfc3RyZWFtLmNyZWF0ZV9ib3VuZGVkXCI7XG4gICgqIENyZWF0ZSB0aGUgc291cmNlIGZvciBub3RpZmljYXRpb25zIG9mIG5ldyBlbGVtZW50cy4gKilcbiAgbGV0IGluZm8sIHdha2VuZXJfY2VsbCA9XG4gICAgbGV0IHdhaXRlciwgd2FrZW5lciA9IEx3dC53YWl0ICgpIGluXG4gICAgbGV0IHB1c2hfd2FpdGVyLCBwdXNoX3dha2VuZXIgPSBMd3QudGFzayAoKSBpblxuICAgICh7IHB1c2hiX3NpZ25hbCA9IHdhaXRlcjtcbiAgICAgICBwdXNoYl93YWl0aW5nID0gZmFsc2U7XG4gICAgICAgcHVzaGJfc2l6ZSA9IHNpemU7XG4gICAgICAgcHVzaGJfY291bnQgPSAwO1xuICAgICAgIHB1c2hiX3BlbmRpbmcgPSBOb25lO1xuICAgICAgIHB1c2hiX3B1c2hfd2FpdGVyID0gcHVzaF93YWl0ZXI7XG4gICAgICAgcHVzaGJfcHVzaF93YWtlbmVyID0gcHVzaF93YWtlbmVyO1xuICAgICAgIHB1c2hiX2V4dGVybmFsID0gT2JqLnJlcHIgKCkgfSxcbiAgICAgcmVmIHdha2VuZXIpXG4gIGluXG4gIGxldCB0ID0gZnJvbV9zb3VyY2UgKFB1c2hfYm91bmRlZCBpbmZvKSBpblxuICAodCwgbmV3IGJvdW5kZWRfcHVzaF9pbXBsIGluZm8gd2FrZW5lcl9jZWxsIHQubGFzdCB0LmNsb3NlKVxuXG4oKiBXYWl0IGZvciBhIG5ldyBlbGVtZW50IHRvIGJlIGFkZGVkIHRvIHRoZSBxdWV1ZSBvZiBwZW5kaW5nIGVsZW1lbnRcbiAgIG9mIHRoZSBzdHJlYW0uICopXG5sZXQgZmVlZCBzID1cbiAgbWF0Y2ggcy5zb3VyY2Ugd2l0aFxuICB8IEZyb20gZnJvbSAtPlxuICAgICgqIFRoZXJlIGlzIGFscmVhZHkgYSB0aHJlYWQgc3RhcnRlZCB0byBjcmVhdGUgYSBuZXcgZWxlbWVudCxcbiAgICAgICB3YWl0IGZvciB0aGlzIG9uZSB0byB0ZXJtaW5hdGUuICopXG4gICAgaWYgTHd0LmlzX3NsZWVwaW5nIGZyb20uZnJvbV90aHJlYWQgdGhlblxuICAgICAgTHd0LnByb3RlY3RlZCBmcm9tLmZyb21fdGhyZWFkXG4gICAgZWxzZSBiZWdpblxuICAgICAgKCogT3RoZXJ3aXNlIHJlcXVlc3QgYSBuZXcgZWxlbWVudC4gKilcbiAgICAgIGxldCB0aHJlYWQgPVxuICAgICAgICBmcm9tLmZyb21fY3JlYXRlICgpID4+PSBmdW4geCAtPlxuICAgICAgICAoKiBQdXNoIHRoZSBlbGVtZW50IHRvIHRoZSBlbmQgb2YgdGhlIHF1ZXVlLiAqKVxuICAgICAgICBlbnF1ZXVlIHggcztcbiAgICAgICAgaWYgeCA9IE5vbmUgdGhlbiBMd3Qud2FrZXVwIHMuY2xvc2UgKCk7XG4gICAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgICAgaW5cbiAgICAgICgqIEFsbG93IG90aGVyIHRocmVhZHMgdG8gYWNjZXNzIHRoaXMgdGhyZWFkLiAqKVxuICAgICAgZnJvbS5mcm9tX3RocmVhZCA8LSB0aHJlYWQ7XG4gICAgICBMd3QucHJvdGVjdGVkIHRocmVhZFxuICAgIGVuZFxuICB8IEZyb21fZGlyZWN0IGYgLT5cbiAgICBsZXQgeCA9IGYgKCkgaW5cbiAgICAoKiBQdXNoIHRoZSBlbGVtZW50IHRvIHRoZSBlbmQgb2YgdGhlIHF1ZXVlLiAqKVxuICAgIGVucXVldWUgeCBzO1xuICAgIGlmIHggPSBOb25lIHRoZW4gTHd0Lndha2V1cCBzLmNsb3NlICgpO1xuICAgIEx3dC5yZXR1cm5fdW5pdFxuICB8IFB1c2ggcHVzaCAtPlxuICAgIHB1c2gucHVzaF93YWl0aW5nIDwtIHRydWU7XG4gICAgTHd0LnByb3RlY3RlZCBwdXNoLnB1c2hfc2lnbmFsXG4gIHwgUHVzaF9ib3VuZGVkIHB1c2ggLT5cbiAgICBwdXNoLnB1c2hiX3dhaXRpbmcgPC0gdHJ1ZTtcbiAgICBMd3QucHJvdGVjdGVkIHB1c2gucHVzaGJfc2lnbmFsXG5cbigqIFJlbW92ZSBbbm9kZV0gZnJvbSB0aGUgdG9wIG9mIHRoZSBxdWV1ZSwgb3IgZG8gbm90aGluZyBpZiBpdCB3YXNcbiAgIGFscmVhZHkgY29uc3VtZWQuXG5cbiAgIFByZWNvbmRpdGlvbjogbm9kZS5kYXRhIDw+IE5vbmVcbiopXG5sZXQgY29uc3VtZSBzIG5vZGUgPVxuICBpZiBub2RlID09IHMubm9kZSB0aGVuIGJlZ2luXG4gICAgcy5ub2RlIDwtIG5vZGUubmV4dDtcbiAgICBtYXRjaCBzLnNvdXJjZSB3aXRoXG4gICAgfCBQdXNoX2JvdW5kZWQgaW5mbyAtPlxuICAgICAgaWYgaW5mby5wdXNoYl9wZW5kaW5nID0gTm9uZSB0aGVuXG4gICAgICAgIGluZm8ucHVzaGJfY291bnQgPC0gaW5mby5wdXNoYl9jb3VudCAtIDFcbiAgICAgIGVsc2VcbiAgICAgICAgbm90aWZ5X3B1c2hlciBpbmZvIHMubGFzdFxuICAgIHwgRnJvbSBfIHwgRnJvbV9kaXJlY3QgXyB8IFB1c2ggXyAtPlxuICAgICAgKClcbiAgZW5kXG5cbmxldCByZWMgcGVla19yZWMgcyBub2RlID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IHBlZWtfcmVjIHMgbm9kZVxuICBlbHNlXG4gICAgTHd0LnJldHVybiBub2RlLmRhdGFcblxubGV0IHBlZWsgcyA9IHBlZWtfcmVjIHMgcy5ub2RlXG5cbmxldCByZWMgbnBlZWtfcmVjIG5vZGUgYWNjIG4gcyA9XG4gIGlmIG4gPD0gMCB0aGVuXG4gICAgTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjKVxuICBlbHNlIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBucGVla19yZWMgbm9kZSBhY2MgbiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBucGVla19yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgKG4gLSAxKSBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbmxldCBucGVlayBuIHMgPSBucGVla19yZWMgcy5ub2RlIFtdIG4gc1xuXG5sZXQgcmVjIGdldF9yZWMgcyBub2RlID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGdldF9yZWMgcyBub2RlXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBub2RlLmRhdGEgPD4gTm9uZSB0aGVuIGNvbnN1bWUgcyBub2RlO1xuICAgIEx3dC5yZXR1cm4gbm9kZS5kYXRhXG4gIGVuZFxuXG5sZXQgZ2V0IHMgPSBnZXRfcmVjIHMgcy5ub2RlXG5cbmxldCByZWMgZ2V0X2V4bl9yZWMgcyBub2RlID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIEx3dC50cnlfYmluZFxuICAgICAgKGZ1biAoKSAtPiBmZWVkIHMpXG4gICAgICAoZnVuICgpIC0+IGdldF9leG5fcmVjIHMgbm9kZSlcbiAgICAgIChmdW4gZXhuIC0+IEx3dC5yZXR1cm4gKFNvbWUgKFJlc3VsdC5FcnJvciBleG4pKSlcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIEx3dC5yZXR1cm4gKFNvbWUgKFJlc3VsdC5PayB2YWx1ZSkpXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcblxubGV0IHdyYXBfZXhuIHMgPSBmcm9tIChmdW4gKCkgLT4gZ2V0X2V4bl9yZWMgcyBzLm5vZGUpXG5cbmxldCByZWMgbmdldF9yZWMgbm9kZSBhY2MgbiBzID1cbiAgaWYgbiA8PSAwIHRoZW5cbiAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG4gIGVsc2UgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IG5nZXRfcmVjIG5vZGUgYWNjIG4gc1xuICBlbHNlXG4gICAgbWF0Y2ggcy5ub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIG5nZXRfcmVjIG5vZGUubmV4dCAoeCA6OiBhY2MpIChuIC0gMSkgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjKVxuXG5sZXQgbmdldCBuIHMgPSBuZ2V0X3JlYyBzLm5vZGUgW10gbiBzXG5cbmxldCByZWMgZ2V0X3doaWxlX3JlYyBub2RlIGFjYyBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZ2V0X3doaWxlX3JlYyBub2RlIGFjYyBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGxldCB0ZXN0ID0gZiB4IGluXG4gICAgICBpZiB0ZXN0IHRoZW4gYmVnaW5cbiAgICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICAgIGdldF93aGlsZV9yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgZiBzXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbmxldCBnZXRfd2hpbGUgZiBzID0gZ2V0X3doaWxlX3JlYyBzLm5vZGUgW10gZiBzXG5cbmxldCByZWMgZ2V0X3doaWxlX3NfcmVjIG5vZGUgYWNjIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBnZXRfd2hpbGVfc19yZWMgbm9kZSBhY2MgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+IGJlZ2luXG4gICAgICAgIGYgeCA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICAgICAgZ2V0X3doaWxlX3NfcmVjIG5vZGUubmV4dCAoeCA6OiBhY2MpIGYgc1xuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjKVxuICAgICAgZW5kXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbmxldCBnZXRfd2hpbGVfcyBmIHMgPSBnZXRfd2hpbGVfc19yZWMgcy5ub2RlIFtdIGYgc1xuXG5sZXQgcmVjIG5leHRfcmVjIHMgbm9kZSA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBuZXh0X3JlYyBzIG5vZGVcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgTHd0LnJldHVybiB4XG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QuZmFpbCBFbXB0eVxuXG5sZXQgbmV4dCBzID0gbmV4dF9yZWMgcyBzLm5vZGVcblxubGV0IHJlYyBsYXN0X25ld19yZWMgbm9kZSB4IHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgbGV0IHRocmVhZCA9IGZlZWQgcyBpblxuICAgIG1hdGNoIEx3dC5zdGF0ZSB0aHJlYWQgd2l0aFxuICAgIHwgTHd0LlJldHVybiBfIC0+XG4gICAgICBsYXN0X25ld19yZWMgbm9kZSB4IHNcbiAgICB8IEx3dC5GYWlsIGV4biAtPlxuICAgICAgTHd0LmZhaWwgZXhuXG4gICAgfCBMd3QuU2xlZXAgLT5cbiAgICAgIEx3dC5yZXR1cm4geFxuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsYXN0X25ld19yZWMgbm9kZS5uZXh0IHggc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiB4XG5cbmxldCBsYXN0X25ldyBzID1cbiAgbGV0IG5vZGUgPSBzLm5vZGUgaW5cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGxldCB0aHJlYWQgPSBuZXh0IHMgaW5cbiAgICBtYXRjaCBMd3Quc3RhdGUgdGhyZWFkIHdpdGhcbiAgICB8IEx3dC5SZXR1cm4geCAtPlxuICAgICAgbGFzdF9uZXdfcmVjIG5vZGUgeCBzXG4gICAgfCBMd3QuRmFpbCBfIHwgTHd0LlNsZWVwIC0+XG4gICAgICB0aHJlYWRcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbGFzdF9uZXdfcmVjIG5vZGUubmV4dCB4IHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5mYWlsIEVtcHR5XG5cbmxldCByZWMgdG9fbGlzdF9yZWMgbm9kZSBhY2MgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiB0b19saXN0X3JlYyBub2RlIGFjYyBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIHRvX2xpc3RfcmVjIG5vZGUubmV4dCAoeCA6OiBhY2MpIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcblxubGV0IHRvX2xpc3QgcyA9IHRvX2xpc3RfcmVjIHMubm9kZSBbXSBzXG5cbmxldCByZWMgdG9fc3RyaW5nX3JlYyBub2RlIGJ1ZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IHRvX3N0cmluZ19yZWMgbm9kZSBidWYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIHg7XG4gICAgICB0b19zdHJpbmdfcmVjIG5vZGUubmV4dCBidWYgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiAoQnVmZmVyLmNvbnRlbnRzIGJ1ZilcblxubGV0IHRvX3N0cmluZyBzID0gdG9fc3RyaW5nX3JlYyBzLm5vZGUgKEJ1ZmZlci5jcmVhdGUgMTI4KSBzXG5cbmxldCBqdW5rIHMgPVxuICBsZXQgbm9kZSA9IHMubm9kZSBpblxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuIGJlZ2luXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT5cbiAgICBpZiBub2RlLmRhdGEgPD4gTm9uZSB0aGVuIGNvbnN1bWUgcyBub2RlO1xuICAgIEx3dC5yZXR1cm5fdW5pdFxuICBlbmQgZWxzZSBiZWdpblxuICAgIGlmIG5vZGUuZGF0YSA8PiBOb25lIHRoZW4gY29uc3VtZSBzIG5vZGU7XG4gICAgTHd0LnJldHVybl91bml0XG4gIGVuZFxuXG5sZXQgcmVjIG5qdW5rX3JlYyBub2RlIG4gcyA9XG4gIGlmIG4gPD0gMCB0aGVuXG4gICAgTHd0LnJldHVybl91bml0XG4gIGVsc2UgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IG5qdW5rX3JlYyBub2RlIG4gc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgXyAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBuanVua19yZWMgbm9kZS5uZXh0IChuIC0gMSkgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBuanVuayBuIHMgPSBuanVua19yZWMgcy5ub2RlIG4gc1xuXG5sZXQgcmVjIGp1bmtfd2hpbGVfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGp1bmtfd2hpbGVfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBsZXQgdGVzdCA9IGYgeCBpblxuICAgICAgaWYgdGVzdCB0aGVuIGJlZ2luXG4gICAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgICBqdW5rX3doaWxlX3JlYyBub2RlLm5leHQgZiBzXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQganVua193aGlsZSBmIHMgPSBqdW5rX3doaWxlX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMganVua193aGlsZV9zX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBqdW5rX3doaWxlX3NfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+IGJlZ2luXG4gICAgICAgIGYgeCA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICAgICAganVua193aGlsZV9zX3JlYyBub2RlLm5leHQgZiBzXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICAgIGVuZFxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBqdW5rX3doaWxlX3MgZiBzID0ganVua193aGlsZV9zX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMganVua19vbGRfcmVjIG5vZGUgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBsZXQgdGhyZWFkID0gZmVlZCBzIGluXG4gICAgbWF0Y2ggTHd0LnN0YXRlIHRocmVhZCB3aXRoXG4gICAgfCBMd3QuUmV0dXJuIF8gLT5cbiAgICAgIGp1bmtfb2xkX3JlYyBub2RlIHNcbiAgICB8IEx3dC5GYWlsIGV4biAtPlxuICAgICAgTHd0LmZhaWwgZXhuXG4gICAgfCBMd3QuU2xlZXAgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgXyAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBqdW5rX29sZF9yZWMgbm9kZS5uZXh0IHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQganVua19vbGQgcyA9IGp1bmtfb2xkX3JlYyBzLm5vZGUgc1xuXG5sZXQgcmVjIGdldF9hdmFpbGFibGVfcmVjIG5vZGUgYWNjIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgbGV0IHRocmVhZCA9IGZlZWQgcyBpblxuICAgIG1hdGNoIEx3dC5zdGF0ZSB0aHJlYWQgd2l0aFxuICAgIHwgTHd0LlJldHVybiBfIC0+XG4gICAgICBnZXRfYXZhaWxhYmxlX3JlYyBub2RlIGFjYyBzXG4gICAgfCBMd3QuRmFpbCBleG4gLT5cbiAgICAgIHJhaXNlIGV4blxuICAgIHwgTHd0LlNsZWVwIC0+XG4gICAgICBMaXN0LnJldiBhY2NcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgZ2V0X2F2YWlsYWJsZV9yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTGlzdC5yZXYgYWNjXG5cbmxldCBnZXRfYXZhaWxhYmxlIHMgPSBnZXRfYXZhaWxhYmxlX3JlYyBzLm5vZGUgW10gc1xuXG5sZXQgcmVjIGdldF9hdmFpbGFibGVfdXBfdG9fcmVjIG5vZGUgYWNjIG4gcyA9XG4gIGlmIG4gPD0gMCB0aGVuXG4gICAgTGlzdC5yZXYgYWNjXG4gIGVsc2UgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGxldCB0aHJlYWQgPSBmZWVkIHMgaW5cbiAgICBtYXRjaCBMd3Quc3RhdGUgdGhyZWFkIHdpdGhcbiAgICB8IEx3dC5SZXR1cm4gXyAtPlxuICAgICAgZ2V0X2F2YWlsYWJsZV91cF90b19yZWMgbm9kZSBhY2MgbiBzXG4gICAgfCBMd3QuRmFpbCBleG4gLT5cbiAgICAgIHJhaXNlIGV4blxuICAgIHwgTHd0LlNsZWVwIC0+XG4gICAgICBMaXN0LnJldiBhY2NcbiAgZWxzZVxuICAgIG1hdGNoIHMubm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBnZXRfYXZhaWxhYmxlX3VwX3RvX3JlYyBub2RlLm5leHQgKHggOjogYWNjKSAobiAtIDEpIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIExpc3QucmV2IGFjY1xuXG5sZXQgZ2V0X2F2YWlsYWJsZV91cF90byBuIHMgPSBnZXRfYXZhaWxhYmxlX3VwX3RvX3JlYyBzLm5vZGUgW10gbiBzXG5cbmxldCByZWMgaXNfZW1wdHkgcyA9XG4gIGlmIHMubm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGlzX2VtcHR5IHNcbiAgZWxzZVxuICAgIEx3dC5yZXR1cm4gKHMubm9kZS5kYXRhID0gTm9uZSlcblxubGV0IG1hcCBmIHMgPVxuICBmcm9tIChmdW4gKCkgLT4gZ2V0IHMgPnw9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IC0+XG4gICAgbGV0IHggPSBmIHggaW5cbiAgICBTb21lIHhcbiAgfCBOb25lIC0+XG4gICAgTm9uZSlcblxubGV0IG1hcF9zIGYgcyA9XG4gIGZyb20gKGZ1biAoKSAtPiBnZXQgcyA+Pj0gZnVuY3Rpb25cbiAgfCBTb21lIHggLT5cbiAgICBmIHggPnw9IChmdW4geCAtPiBTb21lIHgpXG4gIHwgTm9uZSAtPlxuICAgIEx3dC5yZXR1cm5fbm9uZSlcblxubGV0IGZpbHRlciBmIHMgPVxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIGxldCB0ID0gZ2V0IHMgaW5cbiAgICB0ID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+XG4gICAgICBsZXQgdGVzdCA9IGYgeCBpblxuICAgICAgaWYgdGVzdCB0aGVuXG4gICAgICAgIHRcbiAgICAgIGVsc2VcbiAgICAgICAgbmV4dCAoKVxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgZmlsdGVyX3MgZiBzID1cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBsZXQgdCA9IGdldCBzIGluXG4gICAgdCA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPiBiZWdpblxuICAgICAgICBmIHggPj49IGZ1bmN0aW9uXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIHRcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgIG5leHQgKClcbiAgICAgIGVuZFxuICAgIHwgTm9uZSAtPlxuICAgICAgdFxuICBpblxuICBmcm9tIG5leHRcblxubGV0IGZpbHRlcl9tYXAgZiBzID1cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBnZXQgcyA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPlxuICAgICAgbGV0IHggPSBmIHggaW5cbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgTHd0LnJldHVybiB4XG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBuZXh0ICgpKVxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgZmlsdGVyX21hcF9zIGYgcyA9XG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgZ2V0IHMgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGxldCB0ID0gZiB4IGluXG4gICAgICAodCA+Pj0gZnVuY3Rpb25cbiAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgdFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbmV4dCAoKSlcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICBpblxuICBmcm9tIG5leHRcblxubGV0IG1hcF9saXN0IGYgcyA9XG4gIGxldCBwZW5kaW5ncyA9IHJlZiBbXSBpblxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIG1hdGNoICFwZW5kaW5ncyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgKGdldCBzID4+PSBmdW5jdGlvblxuICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBsZXQgbCA9IGYgeCBpblxuICAgICAgICAgcGVuZGluZ3MgOj0gbDtcbiAgICAgICAgIG5leHQgKClcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIEx3dC5yZXR1cm5fbm9uZSlcbiAgICB8IHggOjogbCAtPlxuICAgICAgcGVuZGluZ3MgOj0gbDtcbiAgICAgIEx3dC5yZXR1cm4gKFNvbWUgeClcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBtYXBfbGlzdF9zIGYgcyA9XG4gIGxldCBwZW5kaW5ncyA9IHJlZiBbXSBpblxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIG1hdGNoICFwZW5kaW5ncyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgKGdldCBzID4+PSBmdW5jdGlvblxuICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBmIHggPj49IGZ1biBsIC0+XG4gICAgICAgICBwZW5kaW5ncyA6PSBsO1xuICAgICAgICAgbmV4dCAoKVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgTHd0LnJldHVybl9ub25lKVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICBwZW5kaW5ncyA6PSBsO1xuICAgICAgTHd0LnJldHVybiAoU29tZSB4KVxuICBpblxuICBmcm9tIG5leHRcblxubGV0IGZsYXR0ZW4gcyA9XG4gIG1hcF9saXN0IChmdW4gbCAtPiBsKSBzXG5cbmxldCByZWMgZm9sZF9yZWMgbm9kZSBmIHMgYWNjID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGZvbGRfcmVjIG5vZGUgZiBzIGFjY1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsZXQgYWNjID0gZiB4IGFjYyBpblxuICAgICAgZm9sZF9yZWMgbm9kZS5uZXh0IGYgcyBhY2NcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gYWNjXG5cbmxldCBmb2xkIGYgcyBhY2MgPSBmb2xkX3JlYyBzLm5vZGUgZiBzIGFjY1xuXG5sZXQgcmVjIGZvbGRfc19yZWMgbm9kZSBmIHMgYWNjID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGZvbGRfc19yZWMgbm9kZSBmIHMgYWNjXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGYgeCBhY2MgPj49IGZ1biBhY2MgLT5cbiAgICAgIGZvbGRfc19yZWMgbm9kZS5uZXh0IGYgcyBhY2NcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gYWNjXG5cbmxldCBmb2xkX3MgZiBzIGFjYyA9IGZvbGRfc19yZWMgcy5ub2RlIGYgcyBhY2NcblxubGV0IHJlYyBpdGVyX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBpdGVyX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsZXQgKCkgPSBmIHggaW5cbiAgICAgIGl0ZXJfcmVjIG5vZGUubmV4dCBmIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgaXRlciBmIHMgPSBpdGVyX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMgaXRlcl9zX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBpdGVyX3NfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGYgeCA+Pj0gZnVuICgpIC0+XG4gICAgICBpdGVyX3NfcmVjIG5vZGUubmV4dCBmIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgaXRlcl9zIGYgcyA9IGl0ZXJfc19yZWMgcy5ub2RlIGYgc1xuXG5sZXQgcmVjIGl0ZXJfcF9yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gaXRlcl9wX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsZXQgcmVzID0gZiB4IGluXG4gICAgICBsZXQgcmVzdCA9IGl0ZXJfcF9yZWMgbm9kZS5uZXh0IGYgcyBpblxuICAgICAgcmVzID4+PSBmdW4gKCkgLT4gcmVzdFxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBpdGVyX3AgZiBzID0gaXRlcl9wX3JlYyBzLm5vZGUgZiBzXG5cbmxldCBpdGVyX24gPyhtYXhfY29uY3VycmVuY3kgPSAxKSBmIHN0cmVhbSA9XG4gIGJlZ2luXG4gICAgaWYgbWF4X2NvbmN1cnJlbmN5IDw9IDAgdGhlblxuICAgICAgbGV0IG1lc3NhZ2UgPVxuICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgIFwiTHd0X3N0cmVhbS5pdGVyX246IG1heF9jb25jdXJyZW5jeSBtdXN0IGJlID4gMCwgJWQgZ2l2ZW5cIlxuICAgICAgICAgIG1heF9jb25jdXJyZW5jeVxuICAgICAgaW5cbiAgICAgIGludmFsaWRfYXJnIG1lc3NhZ2VcbiAgZW5kO1xuICBsZXQgcmVjIGxvb3AgcnVubmluZyBhdmFpbGFibGUgPVxuICAgIGJlZ2luXG4gICAgICBpZiBhdmFpbGFibGUgPiAwIHRoZW4gKFxuICAgICAgICBMd3QucmV0dXJuIChydW5uaW5nLCBhdmFpbGFibGUpXG4gICAgICApXG4gICAgICBlbHNlIChcbiAgICAgICAgTHd0Lm5jaG9vc2Vfc3BsaXQgcnVubmluZyA+Pj0gZnVuIChjb21wbGV0ZSwgcnVubmluZykgLT5cbiAgICAgICAgTHd0LnJldHVybiAocnVubmluZywgYXZhaWxhYmxlICsgTGlzdC5sZW5ndGggY29tcGxldGUpXG4gICAgICApXG4gICAgZW5kID4+PSBmdW4gKHJ1bm5pbmcsIGF2YWlsYWJsZSkgLT5cbiAgICBnZXQgc3RyZWFtID4+PSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LmpvaW4gcnVubmluZ1xuICAgIHwgU29tZSBlbHQgLT5cbiAgICAgIGxvb3AgKGYgZWx0IDo6IHJ1bm5pbmcpIChwcmVkIGF2YWlsYWJsZSlcbiAgaW5cbiAgbG9vcCBbXSBtYXhfY29uY3VycmVuY3lcblxubGV0IHJlYyBmaW5kX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBmaW5kX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCBhcyBvcHQgLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbGV0IHRlc3QgPSBmIHggaW5cbiAgICAgIGlmIHRlc3QgdGhlblxuICAgICAgICBMd3QucmV0dXJuIG9wdFxuICAgICAgZWxzZVxuICAgICAgICBmaW5kX3JlYyBub2RlLm5leHQgZiBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcblxubGV0IGZpbmQgZiBzID0gZmluZF9yZWMgcy5ub2RlIGYgc1xuXG5sZXQgcmVjIGZpbmRfc19yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZmluZF9zX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCBhcyBvcHQgLT4gYmVnaW5cbiAgICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICAgIGYgeCA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgTHd0LnJldHVybiBvcHRcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgIGZpbmRfc19yZWMgbm9kZS5uZXh0IGYgc1xuICAgICAgZW5kXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcblxubGV0IGZpbmRfcyBmIHMgPSBmaW5kX3NfcmVjIHMubm9kZSBmIHNcblxubGV0IHJlYyBmaW5kX21hcF9yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZmluZF9tYXBfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxldCB4ID0gZiB4IGluXG4gICAgICBpZiB4ID0gTm9uZSB0aGVuXG4gICAgICAgIGZpbmRfbWFwX3JlYyBub2RlLm5leHQgZiBzXG4gICAgICBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm4geFxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG5cbmxldCBmaW5kX21hcCBmIHMgPSBmaW5kX21hcF9yZWMgcy5ub2RlIGYgc1xuXG5sZXQgcmVjIGZpbmRfbWFwX3NfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGZpbmRfbWFwX3NfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxldCB0ID0gZiB4IGluXG4gICAgICAodCA+Pj0gZnVuY3Rpb25cbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGZpbmRfbWFwX3NfcmVjIG5vZGUubmV4dCBmIHNcbiAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgdClcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuXG5sZXQgZmluZF9tYXBfcyBmIHMgPSBmaW5kX21hcF9zX3JlYyBzLm5vZGUgZiBzXG5cbmxldCBjb21iaW5lIHMxIHMyID1cbiAgbGV0IG5leHQgKCkgPVxuICAgIGxldCB0MSA9IGdldCBzMSBhbmQgdDIgPSBnZXQgczIgaW5cbiAgICB0MSA+Pj0gZnVuIG4xIC0+XG4gICAgdDIgPj49IGZ1biBuMiAtPlxuICAgIG1hdGNoIG4xLCBuMiB3aXRoXG4gICAgfCBTb21lIHgxLCBTb21lIHgyIC0+XG4gICAgICBMd3QucmV0dXJuIChTb21lKHgxLCB4MikpXG4gICAgfCBfIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBhcHBlbmQgczEgczIgPVxuICBsZXQgY3VycmVudF9zID0gcmVmIHMxIGluXG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgbGV0IHQgPSBnZXQgIWN1cnJlbnRfcyBpblxuICAgIHQgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lIF8gLT5cbiAgICAgIHRcbiAgICB8IE5vbmUgLT5cbiAgICAgIGlmICFjdXJyZW50X3MgPT0gczIgdGhlblxuICAgICAgICBMd3QucmV0dXJuX25vbmVcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgY3VycmVudF9zIDo9IHMyO1xuICAgICAgICBuZXh0ICgpXG4gICAgICBlbmRcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBjb25jYXQgc190b3AgPVxuICBsZXQgY3VycmVudF9zID0gcmVmIChmcm9tIChmdW4gKCkgLT4gTHd0LnJldHVybl9ub25lKSkgaW5cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBsZXQgdCA9IGdldCAhY3VycmVudF9zIGluXG4gICAgdCA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgXyAtPlxuICAgICAgdFxuICAgIHwgTm9uZSAtPlxuICAgICAgZ2V0IHNfdG9wID4+PSBmdW5jdGlvblxuICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgY3VycmVudF9zIDo9IHM7XG4gICAgICAgIG5leHQgKClcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBMd3QucmV0dXJuX25vbmVcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBjaG9vc2Ugc3RyZWFtcyA9XG4gIGxldCBzb3VyY2UgcyA9IChzLCBnZXQgcyA+fD0gZnVuIHggLT4gKHMsIHgpKSBpblxuICBsZXQgc3RyZWFtcyA9IHJlZiAoTGlzdC5tYXAgc291cmNlIHN0cmVhbXMpIGluXG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgbWF0Y2ggIXN0cmVhbXMgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICAgIHwgbCAtPlxuICAgICAgTHd0LmNob29zZSAoTGlzdC5tYXAgc25kIGwpID4+PSBmdW4gKHMsIHgpIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmVtb3ZlX2Fzc3EgcyBsIGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgIHN0cmVhbXMgOj0gc291cmNlIHMgOjogbDtcbiAgICAgICAgTHd0LnJldHVybiB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgc3RyZWFtcyA6PSBsO1xuICAgICAgICBuZXh0ICgpXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgcGFyc2UgcyBmID1cbiAgKG1hdGNoIHMuc291cmNlIHdpdGhcbiAgIHwgUHVzaF9ib3VuZGVkIF8gLT4gaW52YWxpZF9hcmcgXCJMd3Rfc3RyZWFtLnBhcnNlXCJcbiAgIHwgRnJvbSBfIHwgRnJvbV9kaXJlY3QgXyB8IFB1c2ggXyAtPiAoKSk7XG4gIGxldCBub2RlID0gcy5ub2RlIGluXG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT4gZiBzKVxuICAgIChmdW4gZXhuIC0+XG4gICAgICAgcy5ub2RlIDwtIG5vZGU7XG4gICAgICAgTHd0LmZhaWwgZXhuKVxuXG5sZXQgaGV4ZHVtcCBzdHJlYW0gPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA4MCBhbmQgbnVtID0gcmVmIDAgaW5cbiAgZnJvbSBiZWdpbiBmdW4gXyAtPlxuICAgIG5nZXQgMTYgc3RyZWFtID4+PSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICAgIHwgbCAtPlxuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIFByaW50Zi5icHJpbnRmIGJ1ZiBcIiUwOHh8ICBcIiAhbnVtO1xuICAgICAgbnVtIDo9ICFudW0gKyAxNjtcbiAgICAgIGxldCByZWMgYnl0ZXMgcG9zID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIGJsYW5rcyBwb3NcbiAgICAgICAgfCB4IDo6IGwgLT5cbiAgICAgICAgICBpZiBwb3MgPSA4IHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnICc7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYnVmIFwiJTAyeCBcIiAoQ2hhci5jb2RlIHgpO1xuICAgICAgICAgIGJ5dGVzIChwb3MgKyAxKSBsXG4gICAgICBhbmQgYmxhbmtzIHBvcyA9XG4gICAgICAgIGlmIHBvcyA8IDE2IHRoZW4gYmVnaW5cbiAgICAgICAgICBpZiBwb3MgPSA4IHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIiAgICBcIlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIiAgIFwiO1xuICAgICAgICAgIGJsYW5rcyAocG9zICsgMSlcbiAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgYnl0ZXMgMCBsO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiIHxcIjtcbiAgICAgIExpc3QuaXRlciAoZnVuIGNoIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgKGlmIGNoID49ICdcXHgyMCcgJiYgY2ggPD0gJ1xceDdlJyB0aGVuIGNoIGVsc2UgJy4nKSkgbDtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ3wnO1xuICAgICAgTHd0LnJldHVybiAoU29tZShCdWZmZXIuY29udGVudHMgYnVmKSlcbiAgZW5kXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuKCoqIE1vZHVsZSBbTHd0X3Jlc3VsdF06IGV4cGxpY2l0IGVycm9yIGhhbmRsaW5nICopXG5cbm9wZW4gUmVzdWx0XG5cbnR5cGUgKCsnYSwgKydiKSB0ID0gKCdhLCAnYikgUmVzdWx0LnQgTHd0LnRcblxubGV0IHJldHVybiB4ID0gTHd0LnJldHVybiAoT2sgeClcbmxldCBmYWlsIGUgPSBMd3QucmV0dXJuIChFcnJvciBlKVxuXG5sZXQgbGlmdCA9IEx3dC5yZXR1cm5cbmxldCBvayB4ID0gTHd0Lm1hcCAoZnVuIHkgLT4gT2sgeSkgeFxubGV0IGVycm9yIHggPSBMd3QubWFwIChmdW4geSAtPiBFcnJvciB5KSB4XG5cbmxldCBtYXAgZiBlID1cbiAgTHd0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgICAgIHwgT2sgeCAtPiBPayAoZiB4KSlcbiAgICBlXG5cbmxldCBtYXBfZXJyb3IgZiBlID1cbiAgTHd0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IEVycm9yIChmIGUpXG4gICAgICB8IE9rIHggLT4gT2sgeClcbiAgICBlXG5sZXQgbWFwX2VyciBmIGUgPSBtYXBfZXJyb3IgZiBlXG5cbmxldCBjYXRjaCBlID1cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPiBvayAoZSAoKSkpXG4gICAgZmFpbFxuXG5sZXQgZ2V0X2V4biBlID1cbiAgTHd0LmJpbmQgZVxuICAgIChmdW5jdGlvblxuICAgICAgfCBPayB4IC0+IEx3dC5yZXR1cm4geFxuICAgICAgfCBFcnJvciBlIC0+IEx3dC5mYWlsIGUpXG5cbmxldCBiaW5kIGUgZiA9XG4gIEx3dC5iaW5kIGVcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgRXJyb3IgZSAtPiBMd3QucmV0dXJuIChFcnJvciBlKVxuICAgICAgfCBPayB4IC0+IGYgeClcbiAgICAgIFxubGV0IGJpbmRfZXJyb3IgZSBmID1cbiAgTHd0LmJpbmQgZVxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IGYgZVxuICAgICAgfCBPayB4IC0+IEx3dC5yZXR1cm4gKE9rIHgpKVxuICAgICAgXG5sZXQgYmluZF9sd3QgZSBmID1cbiAgTHd0LmJpbmQgZVxuICAgIChmdW5jdGlvblxuICAgICAgfCBPayB4IC0+IG9rIChmIHgpXG4gICAgICB8IEVycm9yIGUgLT4gZmFpbCBlKVxuXG5sZXQgYmluZF9yZXN1bHQgZSBmID1cbiAgTHd0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgICAgIHwgT2sgeCAtPiBmIHgpXG4gICAgZVxuXG5sZXQgYmluZF9sd3RfZXJyb3IgZSBmID1cbiAgTHd0LmJpbmQgZVxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IEx3dC5iaW5kIChmIGUpIGZhaWxcbiAgICAgIHwgT2sgeCAtPiByZXR1cm4geClcbmxldCBiaW5kX2x3dF9lcnIgZSBmID0gYmluZF9sd3RfZXJyb3IgZSBmXG5cbmxldCBib3RoIGEgYiA9XG4gIGxldCBzID0gcmVmIE5vbmUgaW5cbiAgbGV0IHNldF9vbmNlIGUgPVxuICAgIG1hdGNoICFzIHdpdGhcbiAgICB8IE5vbmUgLT4gczo9IFNvbWUgZVxuICAgIHwgU29tZSBfIC0+ICgpXG4gIGluXG4gIGxldCAoYSxiKSA9IG1hcF9lcnJvciBzZXRfb25jZSBhLG1hcF9lcnJvciBzZXRfb25jZSBiIGluXG4gIGxldCBzb21lX2Fzc2VydCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgU29tZSBlIC0+IEVycm9yIGVcbiAgaW5cbiAgTHd0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBPayB4LCBPayB5IC0+IE9rICh4LHkpXG4gICAgICB8IEVycm9yIF8sIE9rIF9cbiAgICAgIHwgT2sgXyxFcnJvciBfXG4gICAgICB8IEVycm9yIF8sIEVycm9yIF8gLT4gc29tZV9hc3NlcnQgIXMpXG4gICAgKEx3dC5ib3RoIGEgYilcblxubGV0IGl0ZXIgZiByID1cbiAgTHd0LmJpbmQgclxuICAgIChmdW5jdGlvblxuICAgICAgfCBPayB4IC0+IGYgeFxuICAgICAgfCBFcnJvciBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IGl0ZXJfZXJyb3IgZiByID1cbiAgTHd0LmJpbmQgclxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IGYgZVxuICAgICAgfCBPayBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoPj49KSA9IGJpbmRcbiAgbGV0ICg+fD0pIGUgZiA9IG1hcCBmIGVcbmVuZFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwIHQgfmYgPSBtYXAgZiB0XG4gICAgbGV0IGJpbmQgdCB+ZiA9IGJpbmQgdCBmXG4gICAgbGV0IGJvdGggPSBib3RoXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTeW50YXggPSBzdHJ1Y3RcbiAgbGV0IChsZXQqKSA9IGJpbmRcbiAgbGV0IChhbmQqKSA9IGJvdGhcblxuICBsZXQgKGxldCspIHggZiA9IG1hcCBmIHhcbiAgbGV0IChhbmQrKSA9IGJvdGhcbmVuZFxuXG5pbmNsdWRlIEluZml4XG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbnNpZ1xuICB0eXBlIHRcbiAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbnNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcbiAgdmFsIGVtcHR5OiB0XG4gIHZhbCBpc19lbXB0eTogdCAtPiBib29sXG4gIHZhbCBhZGQ6IGVsdCAtPiB0IC0+IHRcbiAgdmFsIHVuaW9uOiB0IC0+IHQgLT4gdFxuICB2YWwgZmluZF9taW46IHQgLT4gZWx0XG4gIHZhbCBsb29rdXBfbWluOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIHJlbW92ZV9taW46IHQgLT4gdFxuICB2YWwgc2l6ZTogdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA6IChTIHdpdGggdHlwZSBlbHQgPSBPcmQudCkgPVxuc3RydWN0XG4gIHR5cGUgZWx0ID0gT3JkLnRcblxuICB0eXBlIHQgPSB0cmVlIGxpc3RcbiAgYW5kIHRyZWUgPSBOb2RlIG9mIGVsdCAqIGludCAqIHRyZWUgbGlzdFxuXG4gIGxldCByb290IChOb2RlICh4LCBfLCBfKSkgPSB4XG4gIGxldCByYW5rIChOb2RlIChfLCByLCBfKSkgPSByXG4gIGxldCBsaW5rIChOb2RlICh4MSwgcjEsIGMxKSBhcyB0MSkgKE5vZGUgKHgyLCByMiwgYzIpIGFzIHQyKSA9XG4gICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4MSB4MiBpblxuICAgIGlmIGMgPD0gMCB0aGVuIE5vZGUgKHgxLCByMSArIDEsIHQyOjpjMSkgZWxzZSBOb2RlKHgyLCByMiArIDEsIHQxOjpjMilcbiAgbGV0IHJlYyBpbnMgdCA9XG4gICAgZnVuY3Rpb25cbiAgICAgIFtdICAgICAtPlxuICAgICAgW3RdXG4gICAgfCAodCc6Ol8pIGFzIHRzIHdoZW4gcmFuayB0IDwgcmFuayB0JyAtPlxuICAgICAgdDo6dHNcbiAgICB8IHQnOjp0cyAtPlxuICAgICAgaW5zIChsaW5rIHQgdCcpIHRzXG5cbiAgbGV0IGVtcHR5ID0gW11cbiAgbGV0IGlzX2VtcHR5IHRzID0gdHMgPSBbXVxuICBsZXQgYWRkIHggdHMgPSBpbnMgKE5vZGUgKHgsIDAsIFtdKSkgdHNcbiAgbGV0IHJlYyB1bmlvbiB0cyB0cycgPVxuICAgIG1hdGNoIHRzLCB0cycgd2l0aFxuICAgICAgKFtdLCBfKSAtPiB0cydcbiAgICB8IChfLCBbXSkgLT4gdHNcbiAgICB8ICh0MTo6dHMxLCB0Mjo6dHMyKSAgLT5cbiAgICAgIGlmIHJhbmsgdDEgPCByYW5rIHQyIHRoZW4gdDEgOjogdW5pb24gdHMxICh0Mjo6dHMyKVxuICAgICAgZWxzZSBpZiByYW5rIHQyIDwgcmFuayB0MSB0aGVuIHQyIDo6IHVuaW9uICh0MTo6dHMxKSB0czJcbiAgICAgIGVsc2UgaW5zIChsaW5rIHQxIHQyKSAodW5pb24gdHMxIHRzMilcblxuICBsZXQgcmVjIGZpbmRfbWluID1cbiAgICBmdW5jdGlvblxuICAgICAgW10gICAgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgfCBbdF0gICAtPiByb290IHRcbiAgICB8IHQ6OnRzIC0+XG4gICAgICBsZXQgeCA9IGZpbmRfbWluIHRzIGluXG4gICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIChyb290IHQpIHggaW5cbiAgICAgIGlmIGMgPCAwIHRoZW4gcm9vdCB0IGVsc2UgeFxuXG4gIGxldCByZWMgbG9va3VwX21pbiA9XG4gICAgZnVuY3Rpb25cbiAgICB8IFtdICAgIC0+IE5vbmVcbiAgICB8IFt0XSAgIC0+IFNvbWUgKHJvb3QgdClcbiAgICB8IHQ6OnRzIC0+XG4gICAgICBtYXRjaCBsb29rdXBfbWluIHRzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgeCBhcyByZXN1bHQgLT5cbiAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSAocm9vdCB0KSB4IGluXG4gICAgICAgIGlmIGMgPCAwIHRoZW4gU29tZSAocm9vdCB0KSBlbHNlIHJlc3VsdFxuXG4gIGxldCByZWMgZ2V0X21pbiA9XG4gICAgZnVuY3Rpb25cbiAgICAgIFtdICAgIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgW3RdICAgLT4gKHQsIFtdKVxuICAgIHwgdDo6dHMgLT5cbiAgICAgIGxldCAodCcsIHRzJykgPSBnZXRfbWluIHRzIGluXG4gICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIChyb290IHQpIChyb290IHQnKSBpblxuICAgICAgaWYgYyA8IDAgdGhlbiAodCwgdHMpIGVsc2UgKHQnLCB0Ojp0cycpXG5cbiAgbGV0IHJlbW92ZV9taW4gPVxuICAgIGZ1bmN0aW9uXG4gICAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICB8IHRzIC0+XG4gICAgICBsZXQgKE5vZGUgKF8sIF8sIGMpLCB0cykgPSBnZXRfbWluIHRzIGluXG4gICAgICB1bmlvbiAoTGlzdC5yZXYgYykgdHNcblxuICBsZXQgcmVjIHNpemUgbCA9XG4gICAgbGV0IHNpemV0cmVlIChOb2RlIChfLF8sdGwpKSA9IDEgKyBzaXplIHRsIGluXG4gICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHQgLT4gcyArIHNpemV0cmVlIHQpIDAgbFxuZW5kXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbigqIEEgc3VydmV5IGFuZCBtZWFzdXJlbWVudHMgb2YgbW9yZSBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb25zIGNhbiBiZSBmb3VuZCBhdDpcblxuICAgIGh0dHBzOi8vanN0aG9tYXMuZ2l0aHViLmlvL21hcC1jb21wYXJpc29uLmh0bWxcblxuICAgU2VlIGRpc2N1c3Npb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L3B1bGwvMzQ3LiAqKVxubGV0IHRhaWxfcmVjdXJzaXZlX21hcCBmIGwgPVxuICBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGYgbClcblxubGV0IHRhaWxfcmVjdXJzaXZlX21hcGlfcmV2IGYgbCA9XG4gIGxldCByZWMgaW5uZXIgYWNjIGkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoZDo6dGwgLT4gKGlubmVyIFtAb2NhbWwudGFpbGNhbGxdKSAoKGYgaSBoZCk6OmFjYykgKGkgKyAxKSB0bFxuICBpblxuICBpbm5lciBbXSAwIGxcblxub3BlbiBMd3QuSW5maXhcblxubGV0IHJlYyBpdGVyX3MgZiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgfCB4IDo6IGwgLT5cbiAgICBMd3QuYXBwbHkgZiB4ID4+PSBmdW4gKCkgLT5cbiAgICBpdGVyX3MgZiBsXG5cbmxldCBpdGVyX3AgZiBsID1cbiAgbGV0IHRzID0gTGlzdC5yZXZfbWFwIChMd3QuYXBwbHkgZikgbCBpblxuICBMd3Quam9pbiB0c1xuXG5sZXQgcmVjIGl0ZXJpX3MgaSBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm5fdW5pdFxuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSAoZiBpKSB4ID4+PSBmdW4gKCkgLT5cbiAgICBpdGVyaV9zIChpICsgMSkgZiBsXG5cbmxldCBpdGVyaV9zIGYgbCA9IGl0ZXJpX3MgMCBmIGxcblxubGV0IGl0ZXJpX3AgZiBsID1cbiAgbGV0IGYnIGkgPSBMd3QuYXBwbHkgKGYgaSkgaW5cbiAgbGV0IHRzID0gdGFpbF9yZWN1cnNpdmVfbWFwaV9yZXYgZicgbCBpblxuICBMd3Quam9pbiB0c1xuXG5sZXQgbWFwX3MgZiBsID1cbiAgbGV0IHJlYyBpbm5lciBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjIHw+IEx3dC5yZXR1cm5cbiAgICB8IGhkOjp0bCAtPlxuICAgICAgTHd0LmFwcGx5IGYgaGQgPj49IGZ1biByIC0+XG4gICAgICAoaW5uZXIgW0BvY2FtbC50YWlsY2FsbF0pIChyOjphY2MpIHRsXG4gIGluXG4gIGlubmVyIFtdIGxcblxubGV0IHJlYyBfY29sbGVjdF9yZXYgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm4gYWNjXG4gIHwgdDo6dHMgLT5cbiAgICB0ID4+PSBmdW4gaSAtPlxuICAgIChfY29sbGVjdF9yZXYgW0BvY2FtbC50YWlsY2FsbF0pIChpOjphY2MpIHRzXG5cbmxldCBtYXBfcCBmIGwgPVxuICBsZXQgdHMgPSBMaXN0LnJldl9tYXAgKEx3dC5hcHBseSBmKSBsIGluXG4gIF9jb2xsZWN0X3JldiBbXSB0c1xuXG5sZXQgZmlsdGVyX21hcF9zIGYgbCA9XG4gIGxldCByZWMgaW5uZXIgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdICAgICAtPiBMaXN0LnJldiBhY2MgfD4gTHd0LnJldHVyblxuICAgIHwgaGQ6OnRsIC0+XG4gICAgICBMd3QuYXBwbHkgZiBoZCA+Pj0gZnVuY3Rpb25cbiAgICAgIHwgU29tZSB2IC0+IChpbm5lciBbQG9jYW1sLnRhaWxjYWxsXSkgKHY6OmFjYykgdGxcbiAgICAgIHwgTm9uZSAtPiAoaW5uZXIgW0BvY2FtbC50YWlsY2FsbF0pIGFjYyB0bFxuICBpblxuICBpbm5lciBbXSBsXG5cbmxldCBmaWx0ZXJfbWFwX3AgZiBsID1cbiAgbGV0IHJlYyBfY29sbGVjdF9vcHRpb25hbF9yZXYgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAgICAtPiBMd3QucmV0dXJuIGFjY1xuICB8IHQ6OnRzIC0+XG4gICAgdCA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgdiAtPiAoX2NvbGxlY3Rfb3B0aW9uYWxfcmV2IFtAb2NhbWwudGFpbGNhbGxdKSAodjo6YWNjKSB0c1xuICAgIHwgTm9uZSAtPiAoX2NvbGxlY3Rfb3B0aW9uYWxfcmV2IFtAb2NhbWwudGFpbGNhbGxdKSBhY2MgdHNcbiAgaW5cbiAgbGV0IHRzID0gTGlzdC5yZXZfbWFwIChMd3QuYXBwbHkgZikgbCBpblxuICBfY29sbGVjdF9vcHRpb25hbF9yZXYgW10gdHNcblxubGV0IG1hcGlfcyBmIGwgPVxuICBsZXQgcmVjIGlubmVyIGFjYyBpID0gZnVuY3Rpb25cbiAgICB8IFtdICAgICAtPiBMaXN0LnJldiBhY2MgfD4gTHd0LnJldHVyblxuICAgIHwgaGQ6OnRsIC0+XG4gICAgICBMd3QuYXBwbHkgKGYgaSkgaGQgPj49IGZ1biB2IC0+XG4gICAgICAoaW5uZXIgW0BvY2FtbC50YWlsY2FsbF0pICh2OjphY2MpIChpKzEpIHRsXG4gIGluXG4gIGlubmVyIFtdIDAgbFxuXG5sZXQgbWFwaV9wIGYgbCA9XG4gIGxldCBmJyBpID0gTHd0LmFwcGx5IChmIGkpIGluXG4gIGxldCB0cyA9IHRhaWxfcmVjdXJzaXZlX21hcGlfcmV2IGYnIGwgaW5cbiAgX2NvbGxlY3RfcmV2IFtdIHRzXG5cbmxldCByZWMgcmV2X21hcF9hcHBlbmRfcyBhY2MgZiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QucmV0dXJuIGFjY1xuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSBmIHggPj49IGZ1biB4IC0+XG4gICAgcmV2X21hcF9hcHBlbmRfcyAoeCA6OiBhY2MpIGYgbFxuXG5sZXQgcmV2X21hcF9zIGYgbCA9XG4gIHJldl9tYXBfYXBwZW5kX3MgW10gZiBsXG5cbmxldCByZWMgcmV2X21hcF9hcHBlbmRfcCBhY2MgZiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBhY2NcbiAgfCB4IDo6IGwgLT5cbiAgICByZXZfbWFwX2FwcGVuZF9wXG4gICAgICAoTHd0LmFwcGx5IGYgeCA+Pj0gZnVuIHggLT5cbiAgICAgICBhY2MgPnw9IGZ1biBsIC0+XG4gICAgICAgeCA6OiBsKSBmIGxcblxubGV0IHJldl9tYXBfcCBmIGwgPVxuICByZXZfbWFwX2FwcGVuZF9wIEx3dC5yZXR1cm5fbmlsIGYgbFxuXG5sZXQgcmVjIGZvbGRfbGVmdF9zIGYgYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm4gYWNjXG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IChmIGFjYykgeCA+Pj0gZnVuIGFjYyAtPlxuICAgIChmb2xkX2xlZnRfcyBbQG9jYW1sLnRhaWxjYWxsXSkgZiBhY2MgbFxuXG5sZXQgZm9sZF9yaWdodF9zIGYgbCBhY2MgPVxuICBsZXQgcmVjIGlubmVyIGYgYSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAgICAgLT4gTHd0LnJldHVybiBhXG4gICAgfCBoZDo6dGwgLT4gKEx3dC5hcHBseSAoZiBoZCkgYSkgPj49IGZ1biBhJyAtPlxuICAgICAgKGlubmVyIFtAb2NhbWwudGFpbGNhbGxdKSBmIGEnIHRsXG4gIGluXG4gIGlubmVyIGYgYWNjIChMaXN0LnJldiBsKVxuXG5sZXQgcmVjIGZvcl9hbGxfcyBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm5fdHJ1ZVxuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSBmIHggPj49IGZ1bmN0aW9uXG4gICAgfCB0cnVlIC0+XG4gICAgICAoZm9yX2FsbF9zIFtAb2NhbWwudGFpbGNhbGxdKSBmIGxcbiAgICB8IGZhbHNlIC0+XG4gICAgICBMd3QucmV0dXJuX2ZhbHNlXG5cbmxldCBmb3JfYWxsX3AgZiBsID1cbiAgbWFwX3AgZiBsID4+PSBmdW4gYmwgLT4gTGlzdC5mb3JfYWxsIChmdW4geCAtPiB4KSBibCB8PiBMd3QucmV0dXJuXG5cbmxldCByZWMgZXhpc3RzX3MgZiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QucmV0dXJuX2ZhbHNlXG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IGYgeCA+Pj0gZnVuY3Rpb25cbiAgICB8IHRydWUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdHJ1ZVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIChleGlzdHNfcyBbQG9jYW1sLnRhaWxjYWxsXSkgZiBsXG5cbmxldCBleGlzdHNfcCBmIGwgPVxuICBtYXBfcCBmIGwgPj49IGZ1biBibCAtPiBMaXN0LmV4aXN0cyAoZnVuIHggLT4geCkgYmwgfD4gTHd0LnJldHVyblxuXG5sZXQgcmVjIGZpbmRfcyBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5mYWlsIE5vdF9mb3VuZFxuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSBmIHggPj49IGZ1bmN0aW9uXG4gICAgfCB0cnVlIC0+XG4gICAgICBMd3QucmV0dXJuIHhcbiAgICB8IGZhbHNlIC0+XG4gICAgICAoZmluZF9zIFtAb2NhbWwudGFpbGNhbGxdKSBmIGxcblxubGV0IF9vcHRpb25hbGl6ZSBmIHggPVxuICBmIHggPj49IGZ1biBiIC0+IGlmIGIgdGhlbiBMd3QucmV0dXJuIChTb21lIHgpIGVsc2UgTHd0LnJldHVybl9ub25lXG5cbmxldCBmaWx0ZXJfcyBmIGwgPVxuICBmaWx0ZXJfbWFwX3MgKF9vcHRpb25hbGl6ZSBmKSBsXG5cbmxldCBmaWx0ZXJfcCBmIGwgPVxuICAgZmlsdGVyX21hcF9wIChfb3B0aW9uYWxpemUgZikgbFxuXG5sZXQgcGFydGl0aW9uX3MgZiBsID1cbiAgbGV0IHJlYyBpbm5lciBhY2MxIGFjYzIgPSBmdW5jdGlvblxuICAgIHwgW10gICAgIC0+IEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYzEsIExpc3QucmV2IGFjYzIpXG4gICAgfCBoZDo6dGwgLT4gTHd0LmFwcGx5IGYgaGQgPj49IGZ1biBiIC0+XG4gICAgICAgIGlmIGIgdGhlblxuICAgICAgICAgIGlubmVyIChoZDo6YWNjMSkgYWNjMiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW5uZXIgYWNjMSAoaGQ6OmFjYzIpIHRsXG4gIGluXG4gIGlubmVyIFtdIFtdIGxcblxubGV0IHBhcnRpdGlvbl9wIGYgbCA9XG4gIGxldCBnIHggPSBMd3QuYXBwbHkgZiB4ID4+PSBmdW4gYiAtPiBMd3QucmV0dXJuIChiLCB4KSBpblxuICBtYXBfcCBnIGwgPj49IGZ1biB0bCAtPlxuICBsZXQgZ3JvdXAxID0gdGFpbF9yZWN1cnNpdmVfbWFwIHNuZCBAQCBMaXN0LmZpbHRlciBmc3QgdGwgaW5cbiAgbGV0IGdyb3VwMiA9XG4gICAgdGFpbF9yZWN1cnNpdmVfbWFwIHNuZCBAQCBMaXN0LmZpbHRlciAoZnVuIHggLT4gbm90IEBAIGZzdCB4KSB0bCBpblxuICBMd3QucmV0dXJuIChncm91cDEsIGdyb3VwMilcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5cblxuKCogW0x3dF9zZXF1ZW5jZV0gaXMgZGVwcmVjYXRlZCDigJMgd2UgZG9uJ3Qgd2FudCB1c2VycyBvdXRzaWRlIEx3dCB1c2luZyBpdC5cbiAgIEhvd2V2ZXIsIGl0IGlzIHN0aWxsIHVzZWQgaW50ZXJuYWxseSBieSBMd3QuIFNvLCBicmllZmx5IGRpc2FibGUgd2FybmluZyAzXG4gICAoXCJkZXByZWNhdGVkXCIpLCBhbmQgY3JlYXRlIGEgbG9jYWwsIG5vbi1kZXByZWNhdGVkIGFsaWFzIGZvclxuICAgW0x3dF9zZXF1ZW5jZV0gdGhhdCBjYW4gYmUgcmVmZXJyZWQgdG8gYnkgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgaW4gdGhpc1xuICAgbW9kdWxlIHdpdGhvdXQgdHJpZ2dlcmluZyBhbnkgbW9yZSB3YXJuaW5ncy4gKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbm1vZHVsZSBMd3Rfc2VxdWVuY2UgPSBMd3Rfc2VxdWVuY2VcbltAQEBvY2FtbC53YXJuaW5nIFwiKzNcIl1cblxub3BlbiBMd3QuSW5maXhcblxudHlwZSAnYSB0ID0ge1xuICBjcmVhdGUgOiB1bml0IC0+ICdhIEx3dC50O1xuICAoKiBDcmVhdGUgYSBuZXcgcG9vbCBtZW1iZXIuICopXG4gIGNoZWNrIDogJ2EgLT4gKGJvb2wgLT4gdW5pdCkgLT4gdW5pdDtcbiAgKCogQ2hlY2sgdmFsaWRpdHkgb2YgYSBwb29sIG1lbWJlciB3aGVuIHVzZSByZXN1bHRlZCBpbiBmYWlsZWQgcHJvbWlzZS4gKilcbiAgdmFsaWRhdGUgOiAnYSAtPiBib29sIEx3dC50O1xuICAoKiBWYWxpZGF0ZSBhbiBleGlzdGluZyBmcmVlIHBvb2wgbWVtYmVyIGJlZm9yZSB1c2UuICopXG4gIGRpc3Bvc2UgOiAnYSAtPiB1bml0IEx3dC50O1xuICAoKiBEaXNwb3NlIG9mIGEgcG9vbCBtZW1iZXIuICopXG4gIGNsZWFyZWQgOiBib29sIHJlZiByZWY7XG4gICgqIEhhdmUgdGhlIGN1cnJlbnQgcG9vbCBlbGVtZW50cyBiZWVuIGNsZWFyZWQgb3V0PyAqKVxuICBtYXggOiBpbnQ7XG4gICgqIFNpemUgb2YgdGhlIHBvb2wuICopXG4gIG11dGFibGUgY291bnQgOiBpbnQ7XG4gICgqIE51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgcG9vbC4gKilcbiAgbGlzdCA6ICdhIFF1ZXVlLnQ7XG4gICgqIEF2YWlsYWJsZSBwb29sIG1lbWJlcnMuICopXG4gIHdhaXRlcnMgOiAnYSBMd3QudSBMd3Rfc2VxdWVuY2UudDtcbiAgKCogUHJvbWlzZSByZXNvbHZlcnMgd2FpdGluZyBmb3IgYSBmcmVlIG1lbWJlci4gKilcbn1cblxubGV0IGNyZWF0ZSBtID8odmFsaWRhdGUgPSBmdW4gXyAtPiBMd3QucmV0dXJuX3RydWUpID8oY2hlY2sgPSBmdW4gXyBmIC0+IGYgdHJ1ZSkgPyhkaXNwb3NlID0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KSBjcmVhdGUgPVxuICB7IG1heCA9IG07XG4gICAgY3JlYXRlID0gY3JlYXRlO1xuICAgIHZhbGlkYXRlID0gdmFsaWRhdGU7XG4gICAgY2hlY2sgPSBjaGVjaztcbiAgICBkaXNwb3NlID0gZGlzcG9zZTtcbiAgICBjbGVhcmVkID0gcmVmIChyZWYgZmFsc2UpO1xuICAgIGNvdW50ID0gMDtcbiAgICBsaXN0ID0gUXVldWUuY3JlYXRlICgpO1xuICAgIHdhaXRlcnMgPSBMd3Rfc2VxdWVuY2UuY3JlYXRlICgpIH1cblxuKCogQ3JlYXRlIGEgcG9vbCBtZW1iZXIuICopXG5sZXQgY3JlYXRlX21lbWJlciBwID1cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgICgqIE11c3QgYmUgZG9uZSBiZWZvcmUgcC5jcmVhdGUgdG8gcHJldmVudCBvdGhlciByZXNvbHZlcnMgZnJvbVxuICAgICAgICAgIGNyZWF0aW5nIG5ldyBtZW1iZXJzIGlmIHRoZSBsaW1pdCBpcyByZWFjaGVkLiAqKVxuICAgICAgIHAuY291bnQgPC0gcC5jb3VudCArIDE7XG4gICAgICAgcC5jcmVhdGUgKCkpXG4gICAgKGZ1biBleG4gLT5cbiAgICAgICAoKiBDcmVhdGlvbiBmYWlsZWQsIHNvIGRvbid0IGluY3JlbWVudCBjb3VudC4gKilcbiAgICAgICBwLmNvdW50IDwtIHAuY291bnQgLSAxO1xuICAgICAgIEx3dC5mYWlsIGV4bilcblxuKCogUmVsZWFzZSBhIHBvb2wgbWVtYmVyLiAqKVxubGV0IHJlbGVhc2UgcCBjID1cbiAgbWF0Y2ggTHd0X3NlcXVlbmNlLnRha2Vfb3B0X2wgcC53YWl0ZXJzIHdpdGhcbiAgfCBTb21lIHdha2VuZXIgLT5cbiAgICAoKiBBIHByb21pc2UgcmVzb2x2ZXIgaXMgd2FpdGluZywgZ2l2ZSBpdCB0aGUgcG9vbCBtZW1iZXIuICopXG4gICAgTHd0Lndha2V1cF9sYXRlciB3YWtlbmVyIGNcbiAgfCBOb25lIC0+XG4gICAgKCogTm8gb25lIGlzIHdhaXRpbmcsIHF1ZXVlIGl0LiAqKVxuICAgIFF1ZXVlLnB1c2ggYyBwLmxpc3RcblxuKCogRGlzcG9zZSBvZiBhIHBvb2wgbWVtYmVyLiAqKVxubGV0IGRpc3Bvc2UgcCBjID1cbiAgcC5kaXNwb3NlIGMgPj49IGZ1biAoKSAtPlxuICBwLmNvdW50IDwtIHAuY291bnQgLSAxO1xuICBMd3QucmV0dXJuX3VuaXRcblxuKCogQ3JlYXRlIGEgbmV3IG1lbWJlciB3aGVuIG9uZSBpcyB0aHJvd24gYXdheS4gKilcbmxldCByZXBsYWNlX2Rpc3Bvc2VkIHAgPVxuICBtYXRjaCBMd3Rfc2VxdWVuY2UudGFrZV9vcHRfbCBwLndhaXRlcnMgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAoKiBObyBvbmUgaXMgd2FpdGluZywgZG8gbm90IGNyZWF0ZSBhIG5ldyBtZW1iZXIgdG8gYXZvaWRcbiAgICAgICBsb3NpbmcgYW4gZXJyb3IgaWYgY3JlYXRpb24gZmFpbHMuICopXG4gICAgKClcbiAgfCBTb21lIHdha2VuZXIgLT5cbiAgICBMd3Qub25fYW55XG4gICAgICAoTHd0LmFwcGx5IHAuY3JlYXRlICgpKVxuICAgICAgKGZ1biBjIC0+XG4gICAgICAgICBMd3Qud2FrZXVwX2xhdGVyIHdha2VuZXIgYylcbiAgICAgIChmdW4gZXhuIC0+XG4gICAgICAgICAoKiBDcmVhdGlvbiBmYWlsZWQsIG5vdGlmeSB0aGUgd2FpdGVyIG9mIHRoZSBmYWlsdXJlLiAqKVxuICAgICAgICAgTHd0Lndha2V1cF9sYXRlcl9leG4gd2FrZW5lciBleG4pXG5cbigqIFZlcmlmeSBhIG1lbWJlciBpcyBzdGlsbCB2YWxpZCBiZWZvcmUgdXNpbmcgaXQuICopXG5sZXQgdmFsaWRhdGVfYW5kX3JldHVybiBwIGMgPVxuICBMd3QudHJ5X2JpbmRcbiAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgIHAudmFsaWRhdGUgYylcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIGNcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgICgqIFJlbW92ZSB0aGlzIG1lbWJlciBhbmQgY3JlYXRlIGEgbmV3IG9uZS4gKilcbiAgICAgICAgICBkaXNwb3NlIHAgYyA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgY3JlYXRlX21lbWJlciBwKVxuICAgICAgKGZ1biBlIC0+XG4gICAgICAgICAoKiBWYWxpZGF0aW9uIGZhaWxlZDogY3JlYXRlIGEgbmV3IG1lbWJlciBpZiBhdCBsZWFzdCBvbmVcbiAgICAgICAgICAgIHJlc29sdmVyIGlzIHdhaXRpbmcuICopXG4gICAgICAgICBkaXNwb3NlIHAgYyA+Pj0gZnVuICgpIC0+XG4gICAgICAgICByZXBsYWNlX2Rpc3Bvc2VkIHA7XG4gICAgICAgICBMd3QuZmFpbCBlKVxuXG4oKiBBY3F1aXJlIGEgcG9vbCBtZW1iZXIuICopXG5sZXQgYWNxdWlyZSBwID1cbiAgaWYgUXVldWUuaXNfZW1wdHkgcC5saXN0IHRoZW5cbiAgICAoKiBObyBtb3JlIGF2YWlsYWJsZSBtZW1iZXIuICopXG4gICAgaWYgcC5jb3VudCA8IHAubWF4IHRoZW5cbiAgICAgICgqIExpbWl0IG5vdCByZWFjaGVkOiBjcmVhdGUgYSBuZXcgb25lLiAqKVxuICAgICAgY3JlYXRlX21lbWJlciBwXG4gICAgZWxzZVxuICAgICAgKCogTGltaXQgcmVhY2hlZDogd2FpdCBmb3IgYSBmcmVlIG9uZS4gKilcbiAgICAgIChMd3QuYWRkX3Rhc2tfciBbQG9jYW1sLndhcm5pbmcgXCItM1wiXSkgcC53YWl0ZXJzID4+PSB2YWxpZGF0ZV9hbmRfcmV0dXJuIHBcbiAgZWxzZVxuICAgICgqIFRha2UgdGhlIGZpcnN0IGZyZWUgbWVtYmVyIGFuZCB2YWxpZGF0ZSBpdC4gKilcbiAgICBsZXQgYyA9IFF1ZXVlLnRha2UgcC5saXN0IGluXG4gICAgdmFsaWRhdGVfYW5kX3JldHVybiBwIGNcblxuKCogUmVsZWFzZSBhIG1lbWJlciB3aGVuIHVzZSByZXN1bHRlZCBpbiBmYWlsZWQgcHJvbWlzZSBpZiB0aGUgbWVtYmVyXG4gICBpcyBzdGlsbCB2YWxpZC4gKilcbmxldCBjaGVja19hbmRfcmVsZWFzZSBwIGMgY2xlYXJlZCA9XG4gIGxldCBvayA9IHJlZiBmYWxzZSBpblxuICBwLmNoZWNrIGMgKGZ1biByZXN1bHQgLT4gb2sgOj0gcmVzdWx0KTtcbiAgaWYgY2xlYXJlZCB8fCBub3QgIW9rIHRoZW4gKFxuICAgICgqIEVsZW1lbnQgaXMgbm90IG9rIG9yIHRoZSBwb29sIHdhcyBjbGVhcmVkIC0gZGlzcG9zZSBvZiBpdCAqKVxuICAgIGRpc3Bvc2UgcCBjXG4gIClcbiAgZWxzZSAoXG4gICAgKCogRWxlbWVudCBpcyBvayAtIHJlbGVhc2UgaXQgYmFjayB0byB0aGUgcG9vbCAqKVxuICAgIHJlbGVhc2UgcCBjO1xuICAgIEx3dC5yZXR1cm5fdW5pdFxuICApXG5cbmxldCB1c2UgcCBmID1cbiAgYWNxdWlyZSBwID4+PSBmdW4gYyAtPlxuICAoKiBDYXB0dXJlIHRoZSBjdXJyZW50IGNsZWFyZWQgc3RhdGUgc28gd2UgY2FuIHNlZSBpZiBpdCBjaGFuZ2VzIHdoaWxlIHRoaXNcbiAgICAgZWxlbWVudCBpcyBpbiB1c2UgKilcbiAgbGV0IGNsZWFyZWQgPSAhKHAuY2xlYXJlZCkgaW5cbiAgbGV0IHByb21pc2UgPVxuICAgIEx3dC5jYXRjaFxuICAgICAgKGZ1biAoKSAtPiBmIGMpXG4gICAgICAoZnVuIGUgLT5cbiAgICAgICAgIGNoZWNrX2FuZF9yZWxlYXNlIHAgYyAhY2xlYXJlZCA+Pj0gZnVuICgpIC0+XG4gICAgICAgICBMd3QuZmFpbCBlKVxuICBpblxuICBwcm9taXNlID4+PSBmdW4gXyAtPlxuICBpZiAhY2xlYXJlZCB0aGVuIChcbiAgICAoKiBwIHdhcyBjbGVhcmVkIHdoaWxlIHByb21pc2Ugd2FzIHJlc29sdmluZyAtIGRpc3Bvc2Ugb2YgdGhpcyBlbGVtZW50ICopXG4gICAgZGlzcG9zZSBwIGMgPj49IGZ1biAoKSAtPlxuICAgIHByb21pc2VcbiAgKVxuICBlbHNlIChcbiAgICByZWxlYXNlIHAgYztcbiAgICBwcm9taXNlXG4gIClcblxubGV0IGNsZWFyIHAgPVxuICBsZXQgZWxlbWVudHMgPSBRdWV1ZS5mb2xkIChmdW4gbCBlbGVtZW50IC0+IGVsZW1lbnQgOjogbCkgW10gcC5saXN0IGluXG4gIFF1ZXVlLmNsZWFyIHAubGlzdDtcbiAgKCogSW5kaWNhdGUgdG8gYW55IGN1cnJlbnRseSBpbi11c2UgZWxlbWVudHMgdGhhdCB3ZSBjbGVhcmVkIHRoZSBwb29sICopXG4gIGxldCBvbGRfY2xlYXJlZCA9ICEocC5jbGVhcmVkKSBpblxuICBvbGRfY2xlYXJlZCA6PSB0cnVlO1xuICBwLmNsZWFyZWQgOj0gcmVmIGZhbHNlO1xuICBMd3RfbGlzdC5pdGVyX3MgKGRpc3Bvc2UgcCkgZWxlbWVudHNcblxubGV0IHdhaXRfcXVldWVfbGVuZ3RoIHAgPSBMd3Rfc2VxdWVuY2UubGVuZ3RoIHAud2FpdGVyc1xuIiwiKCogT0NhbWwgcHJvbWlzZSBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2x3dFxuICogQ29weXJpZ2h0IChjKSAyMDA5LCBNZXRhd2ViIFRlY2hub2xvZ2llcywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICogYXJlIG1ldDpcbiAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlXG4gKiAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xuICogICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkXG4gKiAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBNRVRBV0VCIFRFQ0hOT0xPR0lFUyBgYEFTIElTJycgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUlxuICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTUVUQVdFQiBURUNITk9MT0dJRVMgQkVcbiAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1JcbiAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GXG4gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1JcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLFxuICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0VcbiAqIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU5cbiAqIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICopXG5cbigqIFRoaXMgY29kZSBpcyBhZGFwdGVkIGZyb21cbiAgIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDEwMTAwMTIxNTQyNS9odHRwOi8vZWlnZW5jbGFzcy5vcmc6ODAvaGlraS9saWdodHdlaWdodC10aHJlYWRzLXdpdGgtbHd0LiAqKVxuXG4oKiBbTHd0X3NlcXVlbmNlXSBpcyBkZXByZWNhdGVkIOKAkyB3ZSBkb24ndCB3YW50IHVzZXJzIG91dHNpZGUgTHd0IHVzaW5nIGl0LlxuICAgSG93ZXZlciwgaXQgaXMgc3RpbGwgdXNlZCBpbnRlcm5hbGx5IGJ5IEx3dC4gU28sIGJyaWVmbHkgZGlzYWJsZSB3YXJuaW5nIDNcbiAgIChcImRlcHJlY2F0ZWRcIiksIGFuZCBjcmVhdGUgYSBsb2NhbCwgbm9uLWRlcHJlY2F0ZWQgYWxpYXMgZm9yXG4gICBbTHd0X3NlcXVlbmNlXSB0aGF0IGNhbiBiZSByZWZlcnJlZCB0byBieSB0aGUgcmVzdCBvZiB0aGUgY29kZSBpbiB0aGlzXG4gICBtb2R1bGUgd2l0aG91dCB0cmlnZ2VyaW5nIGFueSBtb3JlIHdhcm5pbmdzLiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubW9kdWxlIEx3dF9zZXF1ZW5jZSA9IEx3dF9zZXF1ZW5jZVxuW0BAQG9jYW1sLndhcm5pbmcgXCIrM1wiXVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgbXZhcl9jb250ZW50cyA6ICdhIG9wdGlvbjtcbiAgKCogQ3VycmVudCBjb250ZW50cyAqKVxuXG4gIHdyaXRlcnMgOiAoJ2EgKiB1bml0IEx3dC51KSBMd3Rfc2VxdWVuY2UudDtcbiAgKCogVGhyZWFkcyB3YWl0aW5nIHRvIHB1dCBhIHZhbHVlICopXG5cbiAgcmVhZGVycyA6ICdhIEx3dC51IEx3dF9zZXF1ZW5jZS50O1xuICAoKiBUaHJlYWRzIHdhaXRpbmcgZm9yIGEgdmFsdWUgKilcbn1cblxubGV0IGNyZWF0ZV9lbXB0eSAoKSA9XG4gIHsgbXZhcl9jb250ZW50cyA9IE5vbmU7XG4gICAgd3JpdGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCk7XG4gICAgcmVhZGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCkgfVxuXG5sZXQgY3JlYXRlIHYgPVxuICB7IG12YXJfY29udGVudHMgPSBTb21lIHY7XG4gICAgd3JpdGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCk7XG4gICAgcmVhZGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCkgfVxuXG5sZXQgcHV0IG12YXIgdiA9XG4gIG1hdGNoIG12YXIubXZhcl9jb250ZW50cyB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGJlZ2luIG1hdGNoIEx3dF9zZXF1ZW5jZS50YWtlX29wdF9sIG12YXIucmVhZGVycyB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbXZhci5tdmFyX2NvbnRlbnRzIDwtIFNvbWUgdlxuICAgICAgfCBTb21lIHcgLT5cbiAgICAgICAgTHd0Lndha2V1cF9sYXRlciB3IHZcbiAgICBlbmQ7XG4gICAgTHd0LnJldHVybl91bml0XG4gIHwgU29tZSBfIC0+XG4gICAgbGV0IChyZXMsIHcpID0gTHd0LnRhc2sgKCkgaW5cbiAgICBsZXQgbm9kZSA9IEx3dF9zZXF1ZW5jZS5hZGRfciAodiwgdykgbXZhci53cml0ZXJzIGluXG4gICAgTHd0Lm9uX2NhbmNlbCByZXMgKGZ1biBfIC0+IEx3dF9zZXF1ZW5jZS5yZW1vdmUgbm9kZSk7XG4gICAgcmVzXG5cbmxldCBuZXh0X3dyaXRlciBtdmFyID1cbiAgbWF0Y2ggTHd0X3NlcXVlbmNlLnRha2Vfb3B0X2wgbXZhci53cml0ZXJzIHdpdGhcbiAgfCBTb21lKHYnLCB3KSAtPlxuICAgIG12YXIubXZhcl9jb250ZW50cyA8LSBTb21lIHYnO1xuICAgIEx3dC53YWtldXBfbGF0ZXIgdyAoKVxuICB8IE5vbmUgLT5cbiAgICBtdmFyLm12YXJfY29udGVudHMgPC0gTm9uZVxuXG5sZXQgdGFrZV9hdmFpbGFibGUgbXZhciA9XG4gIG1hdGNoIG12YXIubXZhcl9jb250ZW50cyB3aXRoXG4gIHwgU29tZSB2IC0+XG4gICAgbmV4dF93cml0ZXIgbXZhcjtcbiAgICBTb21lIHZcbiAgfCBOb25lIC0+XG4gICAgTm9uZVxuXG5sZXQgdGFrZSBtdmFyID1cbiAgbWF0Y2ggdGFrZV9hdmFpbGFibGUgbXZhciB3aXRoXG4gIHwgU29tZSB2IC0+IEx3dC5yZXR1cm4gdlxuICB8IE5vbmUgLT4gKEx3dC5hZGRfdGFza19yIFtAb2NhbWwud2FybmluZyBcIi0zXCJdKSBtdmFyLnJlYWRlcnNcblxubGV0IGlzX2VtcHR5IG12YXIgPVxuICBtYXRjaCBtdmFyLm12YXJfY29udGVudHMgd2l0aFxuICB8IFNvbWUgXyAtPiBmYWxzZVxuICB8IE5vbmUgLT4gdHJ1ZVxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG4oKiBbTHd0X3NlcXVlbmNlXSBpcyBkZXByZWNhdGVkIOKAkyB3ZSBkb24ndCB3YW50IHVzZXJzIG91dHNpZGUgTHd0IHVzaW5nIGl0LlxuICAgSG93ZXZlciwgaXQgaXMgc3RpbGwgdXNlZCBpbnRlcm5hbGx5IGJ5IEx3dC4gU28sIGJyaWVmbHkgZGlzYWJsZSB3YXJuaW5nIDNcbiAgIChcImRlcHJlY2F0ZWRcIiksIGFuZCBjcmVhdGUgYSBsb2NhbCwgbm9uLWRlcHJlY2F0ZWQgYWxpYXMgZm9yXG4gICBbTHd0X3NlcXVlbmNlXSB0aGF0IGNhbiBiZSByZWZlcnJlZCB0byBieSB0aGUgcmVzdCBvZiB0aGUgY29kZSBpbiB0aGlzXG4gICBtb2R1bGUgd2l0aG91dCB0cmlnZ2VyaW5nIGFueSBtb3JlIHdhcm5pbmdzLiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubW9kdWxlIEx3dF9zZXF1ZW5jZSA9IEx3dF9zZXF1ZW5jZVxuW0BAQG9jYW1sLndhcm5pbmcgXCIrM1wiXVxuXG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlIHQgPSB7IG11dGFibGUgbG9ja2VkIDogYm9vbDsgd2FpdGVycyA6IHVuaXQgTHd0LnUgTHd0X3NlcXVlbmNlLnQgIH1cblxubGV0IGNyZWF0ZSAoKSA9IHsgbG9ja2VkID0gZmFsc2U7IHdhaXRlcnMgPSBMd3Rfc2VxdWVuY2UuY3JlYXRlICgpIH1cblxubGV0IGxvY2sgbSA9XG4gIGlmIG0ubG9ja2VkIHRoZW5cbiAgICAoTHd0LmFkZF90YXNrX3IgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl0pIG0ud2FpdGVyc1xuICBlbHNlIGJlZ2luXG4gICAgbS5sb2NrZWQgPC0gdHJ1ZTtcbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgZW5kXG5cbmxldCB1bmxvY2sgbSA9XG4gIGlmIG0ubG9ja2VkIHRoZW4gYmVnaW5cbiAgICBpZiBMd3Rfc2VxdWVuY2UuaXNfZW1wdHkgbS53YWl0ZXJzIHRoZW5cbiAgICAgIG0ubG9ja2VkIDwtIGZhbHNlXG4gICAgZWxzZVxuICAgICAgKCogV2UgZG8gbm90IHVzZSBbTHd0Lndha2V1cF0gaGVyZSB0byBhdm9pZCBhIHN0YWNrIG92ZXJmbG93XG4gICAgICAgICB3aGVuIHVubG9ja2luZyBhIGxvdCBvZiB0aHJlYWRzLiAqKVxuICAgICAgTHd0Lndha2V1cF9sYXRlciAoTHd0X3NlcXVlbmNlLnRha2VfbCBtLndhaXRlcnMpICgpXG4gIGVuZFxuXG5sZXQgd2l0aF9sb2NrIG0gZiA9XG4gIGxvY2sgbSA+Pj0gZnVuICgpIC0+XG4gIEx3dC5maW5hbGl6ZSBmIChmdW4gKCkgLT4gdW5sb2NrIG07IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IGlzX2xvY2tlZCBtID0gbS5sb2NrZWRcbmxldCBpc19lbXB0eSBtID0gTHd0X3NlcXVlbmNlLmlzX2VtcHR5IG0ud2FpdGVyc1xuIiwiKCogT0NhbWwgcHJvbWlzZSBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2x3dFxuICogQ29weXJpZ2h0IChjKSAyMDA5LCBNZXRhd2ViIFRlY2hub2xvZ2llcywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICogYXJlIG1ldDpcbiAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlXG4gKiAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xuICogICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkXG4gKiAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBNRVRBV0VCIFRFQ0hOT0xPR0lFUyBgYEFTIElTJycgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUlxuICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTUVUQVdFQiBURUNITk9MT0dJRVMgQkVcbiAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1JcbiAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GXG4gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1JcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLFxuICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0VcbiAqIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU5cbiAqIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICopXG5cbigqIFtMd3Rfc2VxdWVuY2VdIGlzIGRlcHJlY2F0ZWQg4oCTIHdlIGRvbid0IHdhbnQgdXNlcnMgb3V0c2lkZSBMd3QgdXNpbmcgaXQuXG4gICBIb3dldmVyLCBpdCBpcyBzdGlsbCB1c2VkIGludGVybmFsbHkgYnkgTHd0LiBTbywgYnJpZWZseSBkaXNhYmxlIHdhcm5pbmcgM1xuICAgKFwiZGVwcmVjYXRlZFwiKSwgYW5kIGNyZWF0ZSBhIGxvY2FsLCBub24tZGVwcmVjYXRlZCBhbGlhcyBmb3JcbiAgIFtMd3Rfc2VxdWVuY2VdIHRoYXQgY2FuIGJlIHJlZmVycmVkIHRvIGJ5IHRoZSByZXN0IG9mIHRoZSBjb2RlIGluIHRoaXNcbiAgIG1vZHVsZSB3aXRob3V0IHRyaWdnZXJpbmcgYW55IG1vcmUgd2FybmluZ3MuICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5tb2R1bGUgTHd0X3NlcXVlbmNlID0gTHd0X3NlcXVlbmNlXG5bQEBAb2NhbWwud2FybmluZyBcIiszXCJdXG5cbnR5cGUgJ2EgdCA9ICdhIEx3dC51IEx3dF9zZXF1ZW5jZS50XG5cbmxldCBjcmVhdGUgPSBMd3Rfc2VxdWVuY2UuY3JlYXRlXG5cbmxldCB3YWl0ID9tdXRleCBjdmFyID1cbiAgbGV0IHdhaXRlciA9IChMd3QuYWRkX3Rhc2tfciBbQG9jYW1sLndhcm5pbmcgXCItM1wiXSkgY3ZhciBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIG11dGV4IHdpdGhcbiAgICB8IFNvbWUgbSAtPiBMd3RfbXV0ZXgudW5sb2NrIG1cbiAgICB8IE5vbmUgLT4gKClcbiAgaW5cbiAgTHd0LmZpbmFsaXplXG4gICAgKGZ1biAoKSAtPiB3YWl0ZXIpXG4gICAgKGZ1biAoKSAtPlxuICAgICAgIG1hdGNoIG11dGV4IHdpdGhcbiAgICAgICB8IFNvbWUgbSAtPiBMd3RfbXV0ZXgubG9jayBtXG4gICAgICAgfCBOb25lIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNpZ25hbCBjdmFyIGFyZyA9XG4gIHRyeVxuICAgIEx3dC53YWtldXBfbGF0ZXIgKEx3dF9zZXF1ZW5jZS50YWtlX2wgY3ZhcikgYXJnXG4gIHdpdGggTHd0X3NlcXVlbmNlLkVtcHR5IC0+XG4gICAgKClcblxubGV0IGJyb2FkY2FzdCBjdmFyIGFyZyA9XG4gIGxldCB3YWtlbmVycyA9IEx3dF9zZXF1ZW5jZS5mb2xkX3IgKGZ1biB4IGwgLT4geCA6OiBsKSBjdmFyIFtdIGluXG4gIEx3dF9zZXF1ZW5jZS5pdGVyX25vZGVfbCBMd3Rfc2VxdWVuY2UucmVtb3ZlIGN2YXI7XG4gIExpc3QuaXRlciAoZnVuIHdha2VuZXIgLT4gTHd0Lndha2V1cF9sYXRlciB3YWtlbmVyIGFyZykgd2FrZW5lcnNcblxubGV0IGJyb2FkY2FzdF9leG4gY3ZhciBleG4gPVxuICBsZXQgd2FrZW5lcnMgPSBMd3Rfc2VxdWVuY2UuZm9sZF9yIChmdW4geCBsIC0+IHggOjogbCkgY3ZhciBbXSBpblxuICBMd3Rfc2VxdWVuY2UuaXRlcl9ub2RlX2wgTHd0X3NlcXVlbmNlLnJlbW92ZSBjdmFyO1xuICBMaXN0Lml0ZXIgKGZ1biB3YWtlbmVyIC0+IEx3dC53YWtldXBfbGF0ZXJfZXhuIHdha2VuZXIgZXhuKSB3YWtlbmVyc1xuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlICdhIGV2ZW50ID0gJ2EgUmVhY3QuZXZlbnRcbnR5cGUgJ2Egc2lnbmFsID0gJ2EgUmVhY3Quc2lnbmFsXG5cbm1vZHVsZSBFID0gc3RydWN0XG4gIGluY2x1ZGUgUmVhY3QuRVxuXG4gICgqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgIHwgTHd0LXNwZWNpZmljIHV0aWxpdGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbiAgbGV0IGZpbmFsaXNlIGYgXyA9IGYgKClcblxuICBsZXQgd2l0aF9maW5hbGlzZXIgZiBldmVudCA9XG4gICAgbGV0IHIgPSByZWYgKCkgaW5cbiAgICBHYy5maW5hbGlzZSAoZmluYWxpc2UgZikgcjtcbiAgICBtYXAgKGZ1biB4IC0+IGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSByKTsgeCkgZXZlbnRcblxuICBsZXQgbmV4dCBldiA9XG4gICAgbGV0IHdhaXRlciwgd2FrZW5lciA9IEx3dC50YXNrICgpIGluXG4gICAgbGV0IGV2ID0gbWFwIChmdW4geCAtPiBMd3Qud2FrZXVwIHdha2VuZXIgeCkgKG9uY2UgZXYpIGluXG4gICAgTHd0Lm9uX2NhbmNlbCB3YWl0ZXIgKGZ1biAoKSAtPiBzdG9wIGV2KTtcbiAgICB3YWl0ZXJcblxuICBsZXQgbGltaXQgZiBlID1cbiAgICAoKiBUaHJlYWQgd2hpY2ggcHJldmVudHMgW2VdIGZyb20gb2NjdXJyaW5nIHdoaWxlIGl0IGlzIHNsZWVwaW5nICopXG4gICAgbGV0IGxpbWl0ZXIgPSByZWYgTHd0LnJldHVybl91bml0IGluXG5cbiAgICAoKiBUaGUgb2NjdXJyZW5jZSB0aGF0IGlzIGRlbGF5ZWQgdW50aWwgdGhlIGxpbWl0ZXIgcmV0dXJucy4gKilcbiAgICBsZXQgZGVsYXllZCA9IHJlZiBOb25lIGluXG5cbiAgICAoKiBUaGUgcmVzdWx0aW5nIGV2ZW50LiAqKVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgaWYgTHd0LmlzX3NsZWVwaW5nICFsaW1pdGVyIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAoKiBUaGUgbGltaXRlciBpcyBzbGVlcGluZywgd2UgcXVldWUgdGhlIGV2ZW50IGZvciBsYXRlclxuICAgICAgICAgICAgICAgIGRlbGl2ZXJpbmcuICopXG4gICAgICAgICAgICAgbWF0Y2ggIWRlbGF5ZWQgd2l0aFxuICAgICAgICAgICAgIHwgU29tZSBjZWxsIC0+XG4gICAgICAgICAgICAgICAoKiBBbiBvY2N1cnJlbmNlIGlzIGFscmVhZHkgcXVldWVkLCByZXBsYWNlIGl0LiAqKVxuICAgICAgICAgICAgICAgY2VsbCA6PSB4O1xuICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgbGV0IGNlbGwgPSByZWYgeCBpblxuICAgICAgICAgICAgICAgZGVsYXllZCA6PSBTb21lIGNlbGw7XG4gICAgICAgICAgICAgICBMd3Qub25fc3VjY2VzcyAhbGltaXRlciAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBMd3QuaXNfc2xlZXBpbmcgIWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICBkZWxheWVkIDo9IE5vbmVcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSAhY2VsbCBpblxuICAgICAgICAgICAgICAgICAgICBkZWxheWVkIDo9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgIGxpbWl0ZXIgOj0gZiAoKTtcbiAgICAgICAgICAgICAgICAgICAgcHVzaCB4KTtcbiAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAoKiBTZXQgdGhlIGxpbWl0ZXIgZm9yIGZ1dHVyZSBldmVudHMuICopXG4gICAgICAgICAgICAgbGltaXRlciA6PSBmICgpO1xuICAgICAgICAgICAgICgqIFNlbmQgdGhlIG9jY3VycmVuY2Ugbm93LiAqKVxuICAgICAgICAgICAgIHB1c2ggeDtcbiAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgIGVuZClcbiAgICAgICAgZVxuICAgIGluXG5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBjYW5jZWxfdGhyZWFkIHQgKCkgPVxuICAgIEx3dC5jYW5jZWwgdFxuXG4gIGxldCBmcm9tIGYgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICBmICgpID4+PSBmdW4geCAtPlxuICAgICAgcHVzaCB4O1xuICAgICAgbG9vcCAoKVxuICAgIGluXG4gICAgbGV0IHQgPSBMd3QucGF1c2UgKCkgPj49IGxvb3AgaW5cbiAgICB3aXRoX2ZpbmFsaXNlciAoY2FuY2VsX3RocmVhZCB0KSBldmVudFxuXG4gIGxldCB0b19zdHJlYW0gZXZlbnQgPVxuICAgIGxldCBzdHJlYW0sIHB1c2gsIHNldF9yZWYgPSBMd3Rfc3RyZWFtLmNyZWF0ZV93aXRoX3JlZmVyZW5jZSAoKSBpblxuICAgIHNldF9yZWYgKG1hcCAoZnVuIHggLT4gcHVzaCAoU29tZSB4KSkgZXZlbnQpO1xuICAgIHN0cmVhbVxuXG4gIGxldCBvZl9zdHJlYW0gc3RyZWFtID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgdCA9XG4gICAgICBMd3QucGF1c2UgKCkgPj49IGZ1biAoKSAtPlxuICAgICAgTHd0X3N0cmVhbS5pdGVyIChmdW4gdiAtPiB0cnkgcHVzaCB2IHdpdGggZXhuIC0+ICFMd3QuYXN5bmNfZXhjZXB0aW9uX2hvb2sgZXhuKSBzdHJlYW0gaW5cbiAgICB3aXRoX2ZpbmFsaXNlciAoY2FuY2VsX3RocmVhZCB0KSBldmVudFxuXG4gIGxldCBkZWxheSB0aHJlYWQgPVxuICAgIG1hdGNoIEx3dC5wb2xsIHRocmVhZCB3aXRoXG4gICAgfCBTb21lIGUgLT5cbiAgICAgIGVcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBldmVudCwgc2VuZCA9IGNyZWF0ZSAoKSBpblxuICAgICAgTHd0Lm9uX3N1Y2Nlc3MgdGhyZWFkIChmdW4gZSAtPiBzZW5kIGU7IHN0b3AgZXZlbnQpO1xuICAgICAgc3dpdGNoIG5ldmVyIGV2ZW50XG5cbiAgbGV0IGtlZXBlZCA9IHJlZiBbXVxuXG4gIGxldCBrZWVwIGUgPVxuICAgIGtlZXBlZCA6PSBtYXAgaWdub3JlIGUgOjogIWtlZXBlZFxuXG4gICgqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgIHwgRXZlbnQgdHJhbnNmb3JtYXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbiAgbGV0IHJ1bl9wIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIHQgLT4gTHd0Lm9uX3N1Y2Nlc3MgdCAoZnVuIHYgLT4gcHVzaCB2KTsgTm9uZSkgZSBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IHJ1bl9zIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4gdCAtPlxuICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gdCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpIGVcbiAgICBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IG1hcF9wIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoZiB4KSAoZnVuIHYgLT4gcHVzaCB2KTsgTm9uZSkgZSBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IG1hcF9zIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIGZtYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKSBlXG4gICAgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBhcHBfcCBlZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4gKGYsIHgpIC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzIChmIHgpIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoYXBwIChtYXAgKGZ1biBmIHggLT4gKGYsIHgpKSBlZikgZSlcbiAgICBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGFwcF9zIGVmIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4gKGYsIHgpIC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoYXBwIChtYXAgKGZ1biBmIHggLT4gKGYsIHgpKSBlZikgZSlcbiAgICBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGZpbHRlcl9wIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoZiB4KSAoZnVuY3Rpb24gdHJ1ZSAtPiBwdXNoIHggfCBmYWxzZSAtPiAoKSk7IE5vbmUpIGUgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBmaWx0ZXJfcyBmIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IGZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSkgKGZ1bmN0aW9uIHRydWUgLT4gcHVzaCB4IHwgZmFsc2UgLT4gKCkpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgZm1hcF9wIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoZiB4KSAoZnVuY3Rpb24gU29tZSB4IC0+IHB1c2ggeCB8IE5vbmUgLT4gKCkpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgZm1hcF9zIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIHggLT4gTHd0Lm9uX3N1Y2Nlc3MgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKSAoZnVuY3Rpb24gU29tZSB4IC0+IHB1c2ggeCB8IE5vbmUgLT4gKCkpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgZGlmZl9zIGYgZSA9XG4gICAgbGV0IHByZXZpb3VzID0gcmVmIE5vbmUgaW5cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgbWF0Y2ggIXByZXZpb3VzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgcHJldmlvdXMgOj0gU29tZSB4O1xuICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgfCBTb21lIHkgLT5cbiAgICAgICAgICAgICBwcmV2aW91cyA6PSBTb21lIHg7XG4gICAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4IHkpKVxuICAgICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgZVxuICAgIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgYWNjdW1fcyBlZiBhY2MgPVxuICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIGYgLT4gTHd0Lm9uX3N1Y2Nlc3MgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmICFhY2MpKSAoZnVuIHggLT4gYWNjIDo9IHg7IHB1c2ggeCk7IE5vbmUpIGVmIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgZm9sZF9zIGYgYWNjIGUgPVxuICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIHggLT4gTHd0Lm9uX3N1Y2Nlc3MgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmICFhY2MgeCkpIChmdW4geCAtPiBhY2MgOj0geDsgcHVzaCB4KTsgTm9uZSkgZSBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IHJlYyByZXZfZm9sZCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgTHd0LnJldHVybiBhY2NcbiAgICB8IHggOjogbCAtPlxuICAgICAgcmV2X2ZvbGQgZiBhY2MgbCA+Pj0gZnVuIGFjYyAtPlxuICAgICAgZiBhY2MgeFxuXG4gIGxldCBtZXJnZV9zIGYgYWNjIGVsID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgZm1hcFxuICAgICAgICAoZnVuIGwgLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IHJldl9mb2xkIGYgYWNjIGwpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAobWVyZ2UgKGZ1biBhY2MgeCAtPiB4IDo6IGFjYykgW10gZWwpXG4gICAgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuZW5kXG5cbm1vZHVsZSBTID0gc3RydWN0XG4gIGluY2x1ZGUgUmVhY3QuU1xuXG4gICgqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgIHwgTHd0LXNwZWNpZmljIHV0aWxpdGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbiAgbGV0IGZpbmFsaXNlIGYgXyA9IGYgKClcblxuICBsZXQgd2l0aF9maW5hbGlzZXIgZiBzaWduYWwgPVxuICAgIGxldCByID0gcmVmICgpIGluXG4gICAgR2MuZmluYWxpc2UgKGZpbmFsaXNlIGYpIHI7XG4gICAgbWFwXG4gICAgICAoZnVuIHggLT4gaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IHIpOyB4KVxuICAgICAgc2lnbmFsXG5cbiAgbGV0IGxpbWl0ID9lcSBmIHMgPVxuICAgICgqIFRocmVhZCB3aGljaCBwcmV2ZW50IFtzXSB0byBjaGFuZ2VzIHdoaWxlIGl0IGlzIHNsZWVwaW5nICopXG4gICAgbGV0IGxpbWl0ZXIgPSByZWYgKGYgKCkpIGluXG5cbiAgICAoKiBUaGUgb2NjdXJyZW5jZSB0aGF0IGlzIGRlbGF5ZWQgdW50aWwgdGhlIGxpbWl0ZXIgcmV0dXJucy4gKilcbiAgICBsZXQgZGVsYXllZCA9IHJlZiBOb25lIGluXG5cbiAgICAoKiBUaGUgcmVzdWx0aW5nIGV2ZW50LiAqKVxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgIGlmIEx3dC5pc19zbGVlcGluZyAhbGltaXRlciB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgKCogVGhlIGxpbWl0ZXIgaXMgc2xlZXBpbmcsIHdlIHF1ZXVlIHRoZSBldmVudCBmb3IgbGF0ZXJcbiAgICAgICAgICAgICAgICBkZWxpdmVyaW5nLiAqKVxuICAgICAgICAgICAgIG1hdGNoICFkZWxheWVkIHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgY2VsbCAtPlxuICAgICAgICAgICAgICAgKCogQW4gb2NjdXJyZW5jZSBpcyBhbHJlYWR5IHF1ZXVlZCwgcmVwbGFjZSBpdC4gKilcbiAgICAgICAgICAgICAgIGNlbGwgOj0geDtcbiAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgIGxldCBjZWxsID0gcmVmIHggaW5cbiAgICAgICAgICAgICAgIGRlbGF5ZWQgOj0gU29tZSBjZWxsO1xuICAgICAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3MgIWxpbWl0ZXIgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgIGlmIEx3dC5pc19zbGVlcGluZyAhbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICBkZWxheWVkIDo9IE5vbmVcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBsZXQgeCA9ICFjZWxsIGluXG4gICAgICAgICAgICAgICAgICBkZWxheWVkIDo9IE5vbmU7XG4gICAgICAgICAgICAgICAgICBsaW1pdGVyIDo9IGYgKCk7XG4gICAgICAgICAgICAgICAgICBwdXNoIHgpO1xuICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICgqIFNldCB0aGUgbGltaXRlciBmb3IgZnV0dXJlIGV2ZW50cy4gKilcbiAgICAgICAgICAgICBsaW1pdGVyIDo9IGYgKCk7XG4gICAgICAgICAgICAgKCogU2VuZCB0aGUgb2NjdXJyZW5jZSBub3cuICopXG4gICAgICAgICAgICAgcHVzaCB4O1xuICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgZW5kKVxuICAgICAgICAoY2hhbmdlcyBzKVxuICAgIGluXG5cbiAgICBob2xkID9lcSAodmFsdWUgcykgKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pXG5cbiAgbGV0IGtlZXBlZCA9IHJlZiBbXVxuXG4gIGxldCBrZWVwIHMgPVxuICAgIGtlZXBlZCA6PSBtYXAgaWdub3JlIHMgOjogIWtlZXBlZFxuXG4gICgqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgIHwgU2lnbmFsIHRyYW5zZm9ybWF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbiAgbGV0IHJ1bl9zID9lcSBzID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biB0IC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiB0KSlcbiAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAgKGNoYW5nZXMgcylcbiAgICBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiB2YWx1ZSBzKSA+Pj0gZnVuIHggLT5cbiAgICBMd3QucmV0dXJuIChob2xkID9lcSB4IChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcblxuICBsZXQgbWFwX3MgP2VxIGYgcyA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgRS5mbWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSkgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChjaGFuZ2VzIHMpXG4gICAgaW5cbiAgICBMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiAodmFsdWUgcykpID4+PSBmdW4geCAtPlxuICAgIEx3dC5yZXR1cm4gKGhvbGQgP2VxIHggKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pKVxuXG4gIGxldCBhcHBfcyA/ZXEgc2YgcyA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgRS5mbWFwXG4gICAgICAgIChmdW4gKGYsIHgpIC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoRS5hcHAgKEUubWFwIChmdW4gZiB4IC0+IChmLCB4KSkgKGNoYW5nZXMgc2YpKSAoY2hhbmdlcyBzKSlcbiAgICBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiAodmFsdWUgc2YpICh2YWx1ZSBzKSkgPj49IGZ1biB4IC0+XG4gICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG5cbiAgbGV0IGZpbHRlcl9zID9lcSBmIGkgcyA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBFLmZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSkgKGZ1bmN0aW9uIHRydWUgLT4gcHVzaCB4IHwgZmFsc2UgLT4gKCkpOyBOb25lKSAoY2hhbmdlcyBzKSBpblxuICAgIGxldCB4ID0gdmFsdWUgcyBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpID4+PSBmdW5jdGlvblxuICAgIHwgdHJ1ZSAtPlxuICAgICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG4gICAgfCBmYWxzZSAtPlxuICAgICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgaSAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG5cbiAgbGV0IGZtYXBfcyA/ZXEgZiBpIHMgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gRS5mbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpIChmdW5jdGlvbiBTb21lIHggLT4gcHVzaCB4IHwgTm9uZSAtPiAoKSk7IE5vbmUpIChjaGFuZ2VzIHMpIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgKHZhbHVlIHMpKSA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPlxuICAgICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChob2xkID9lcSBpIChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcblxuICBsZXQgZGlmZl9zIGYgcyA9XG4gICAgbGV0IHByZXZpb3VzID0gcmVmICh2YWx1ZSBzKSBpblxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIEUuZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgbGV0IHkgPSAhcHJldmlvdXMgaW5cbiAgICAgICAgICAgcHJldmlvdXMgOj0geDtcbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCB5KSlcbiAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAgKGNoYW5nZXMgcylcbiAgICBpblxuICAgIEUuc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgc2FtcGxlX3MgZiBlIHMgPVxuICAgIEUubWFwX3MgKGZ1biB4IC0+IGYgeCAodmFsdWUgcykpIGVcblxuICBsZXQgYWNjdW1fcyA/ZXEgZWYgaSA9XG4gICAgaG9sZCA/ZXEgaSAoRS5hY2N1bV9zIGVmIGkpXG5cbiAgbGV0IGZvbGRfcyA/ZXEgZiBpIGUgPVxuICAgIGhvbGQgP2VxIGkgKEUuZm9sZF9zIGYgaSBlKVxuXG4gIGxldCByZWMgcmV2X2ZvbGQgZiBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIEx3dC5yZXR1cm4gYWNjXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIHJldl9mb2xkIGYgYWNjIGwgPj49IGZ1biBhY2MgLT5cbiAgICAgIGYgYWNjIHhcblxuICBsZXQgbWVyZ2VfcyA/ZXEgZiBhY2Mgc2wgPVxuICAgIGxldCBzID0gbWVyZ2UgKGZ1biBhY2MgeCAtPiB4IDo6IGFjYykgW10gc2wgaW5cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biBsIC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiByZXZfZm9sZCBmIGFjYyBsKSlcbiAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAgKGNoYW5nZXMgcylcbiAgICBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiByZXZfZm9sZCBmIGFjYyAodmFsdWUgcykpID4+PSBmdW4geCAtPlxuICAgIEx3dC5yZXR1cm4gKGhvbGQgP2VxIHggKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pKVxuXG4gIGxldCBsMV9zID9lcSBmIHMxID1cbiAgICBtYXBfcyA/ZXEgZiBzMVxuXG4gIGxldCBsMl9zID9lcSBmIHMxIHMyID1cbiAgICAoKiBTb21lIGRldGFpbHMgYWJvdXQgdGhlIHVzZSBvZiBbZnVuIF8gXyAtPiBmYWxzZV0gb25cbiAgICAgICBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvcHVsbC84OTMjcHVsbHJlcXVlc3RyZXZpZXctNzgzMDgzNDk2ICopXG4gICAgbWFwX3MgP2VxIChmdW4gKHgxLCB4MikgLT4gZiB4MSB4MikgKGwyIH5lcTooZnVuIF8gXyAtPiBmYWxzZSkgKGZ1biB4MSB4MiAtPiAoeDEsIHgyKSkgczEgczIpXG5cbiAgbGV0IGwzX3MgP2VxIGYgczEgczIgczMgPVxuICAgIG1hcF9zID9lcSAoZnVuICh4MSwgeDIsIHgzKSAtPiBmIHgxIHgyIHgzKSAobDMgfmVxOihmdW4gXyBfIC0+IGZhbHNlKSAoZnVuIHgxIHgyIHgzLT4gKHgxLCB4MiwgeDMpKSBzMSBzMiBzMylcblxuICBsZXQgbDRfcyA/ZXEgZiBzMSBzMiBzMyBzNCA9XG4gICAgbWFwX3MgP2VxIChmdW4gKHgxLCB4MiwgeDMsIHg0KSAtPiBmIHgxIHgyIHgzIHg0KSAobDQgfmVxOihmdW4gXyBfIC0+IGZhbHNlKSAoZnVuIHgxIHgyIHgzIHg0LT4gKHgxLCB4MiwgeDMsIHg0KSkgczEgczIgczMgczQpXG5cbiAgbGV0IGw1X3MgP2VxIGYgczEgczIgczMgczQgczUgPVxuICAgIG1hcF9zID9lcSAoZnVuICh4MSwgeDIsIHgzLCB4NCwgeDUpIC0+IGYgeDEgeDIgeDMgeDQgeDUpIChsNSB+ZXE6KGZ1biBfIF8gLT4gZmFsc2UpIChmdW4geDEgeDIgeDMgeDQgeDUtPiAoeDEsIHgyLCB4MywgeDQsIHg1KSkgczEgczIgczMgczQgczUpXG5cbiAgbGV0IGw2X3MgP2VxIGYgczEgczIgczMgczQgczUgczYgPVxuICAgIG1hcF9zID9lcSAoZnVuICh4MSwgeDIsIHgzLCB4NCwgeDUsIHg2KSAtPiBmIHgxIHgyIHgzIHg0IHg1IHg2KSAobDYgfmVxOihmdW4gXyBfIC0+IGZhbHNlKSAoZnVuIHgxIHgyIHgzIHg0IHg1IHg2LT4gKHgxLCB4MiwgeDMsIHg0LCB4NSwgeDYpKSBzMSBzMiBzMyBzNCBzNSBzNilcblxuICAoKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgICB8IE1vbmFkaWMgaW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG4gIGxldCByZXR1cm4gPVxuICAgIGNvbnN0XG5cbiAgbGV0IGJpbmRfcyA/ZXEgcyBmID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoY2hhbmdlcyBzKVxuICAgIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgKHZhbHVlIHMpKSA+Pj0gZnVuIHggLT5cbiAgICBMd3QucmV0dXJuIChzd2l0Y2ggP2VxIChob2xkIH5lcTooID09ICkgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpKVxuZW5kXG4iLCIoKiBnZW5lcmF0ZWQgYnkgZHVuZSAqKVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF9sd3QuSW1wb3J0ICopXG5tb2R1bGUgSW1wb3J0ID0gSnNfb2Zfb2NhbWxfbHd0X19JbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9maWxlICopXG5tb2R1bGUgTHd0X2ZpbGUgPSBKc19vZl9vY2FtbF9sd3RfX0x3dF9maWxlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX2x3dC5Md3RfanMgKilcbm1vZHVsZSBMd3RfanMgPSBKc19vZl9vY2FtbF9sd3RfX0x3dF9qc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF9sd3QuTHd0X2pzX2V2ZW50cyAqKVxubW9kdWxlIEx3dF9qc19ldmVudHMgPSBKc19vZl9vY2FtbF9sd3RfX0x3dF9qc19ldmVudHNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qc29ucCAqKVxubW9kdWxlIEx3dF9qc29ucCA9IEpzX29mX29jYW1sX2x3dF9fTHd0X2pzb25wXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX2x3dC5Md3RfeG1sSHR0cFJlcXVlc3QgKilcbm1vZHVsZSBMd3RfeG1sSHR0cFJlcXVlc3QgPSBKc19vZl9vY2FtbF9sd3RfX0x3dF94bWxIdHRwUmVxdWVzdFxuXG5tb2R1bGUgSnNfb2Zfb2NhbWxfbHd0X18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIigqIEpzX29mX29jYW1sXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5lbmRcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogaW50KSB5ID0geCA8IHlcblxuICBsZXQgKCA8PSApICh4IDogaW50KSB5ID0geCA8PSB5XG5cbiAgbGV0ICggPD4gKSAoeCA6IGludCkgeSA9IHggPD4geVxuXG4gIGxldCAoID0gKSAoeCA6IGludCkgeSA9IHggPSB5XG5cbiAgbGV0ICggPiApICh4IDogaW50KSB5ID0geCA+IHlcblxuICBsZXQgKCA+PSApICh4IDogaW50KSB5ID0geCA+PSB5XG5cbiAgbGV0IGNvbXBhcmUgKHggOiBpbnQpIHkgPSBjb21wYXJlIHggeVxuXG4gIGxldCBlcXVhbCAoeCA6IGludCkgeSA9IHggPSB5XG5cbiAgbGV0IG1heCAoeCA6IGludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCBlcXVhbCAoeCA6IHN0cmluZykgKHkgOiBzdHJpbmcpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5tb2R1bGUgQ2hhciA9IHN0cnVjdFxuICBpbmNsdWRlIENoYXJcblxuICBsZXQgZXF1YWwgKHggOiBjaGFyKSAoeSA6IGNoYXIpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuIEpzXG5vcGVuIFhtbEh0dHBSZXF1ZXN0XG5vcGVuISBJbXBvcnRcblxubGV0IGVuY29kZV91cmwgbCA9XG4gIFN0cmluZy5jb25jYXRcbiAgICBcIiZcIlxuICAgIChMaXN0Lm1hcFxuICAgICAgIChmdW5jdGlvblxuICAgICAgICAgfCBuYW1lLCBgU3RyaW5nIHMgLT4gVXJsLnVybGVuY29kZSBuYW1lIF4gXCI9XCIgXiBVcmwudXJsZW5jb2RlICh0b19zdHJpbmcgcylcbiAgICAgICAgIHwgbmFtZSwgYEZpbGUgcyAtPiBVcmwudXJsZW5jb2RlIG5hbWUgXiBcIj1cIiBeIFVybC51cmxlbmNvZGUgKHRvX3N0cmluZyBzIyMubmFtZSkpXG4gICAgICAgbClcblxuKCogSGlnaGVyIGxldmVsIGludGVyZmFjZTogKilcblxudHlwZSAncmVzcG9uc2UgZ2VuZXJpY19odHRwX2ZyYW1lID1cbiAgeyB1cmwgOiBzdHJpbmdcbiAgOyBjb2RlIDogaW50XG4gIDsgaGVhZGVycyA6IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gIDsgY29udGVudCA6ICdyZXNwb25zZVxuICA7IGNvbnRlbnRfeG1sIDogdW5pdCAtPiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBvcHRpb25cbiAgfVxuKCoqIHR5cGUgb2YgdGhlIGh0dHAgaGVhZGVycyAqKVxuXG50eXBlIGh0dHBfZnJhbWUgPSBzdHJpbmcgZ2VuZXJpY19odHRwX2ZyYW1lXG5cbmV4Y2VwdGlvbiBXcm9uZ19oZWFkZXJzIG9mIChpbnQgKiAoc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pKVxuXG5sZXQgZGVmYXVsdF9yZXNwb25zZSB1cmwgY29kZSBoZWFkZXJzIHJlcSA9XG4gIHsgdXJsXG4gIDsgY29kZVxuICA7IGNvbnRlbnQgPSBKcy5PcHQuY2FzZSByZXEjIy5yZXNwb25zZVRleHQgKGZ1biAoKSAtPiBcIlwiKSAoZnVuIHggLT4gSnMudG9fc3RyaW5nIHgpXG4gIDsgY29udGVudF94bWwgPVxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICBtYXRjaCBKcy5PcHQudG9fb3B0aW9uIHJlcSMjLnJlc3BvbnNlWE1MIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGRvYyAtPiBpZiBKcy5zb21lIGRvYyMjLmRvY3VtZW50RWxlbWVudCA9PSBKcy5udWxsIHRoZW4gTm9uZSBlbHNlIFNvbWUgZG9jKVxuICA7IGhlYWRlcnNcbiAgfVxuXG5sZXQgdGV4dF9yZXNwb25zZSB1cmwgY29kZSBoZWFkZXJzIHJlcSA9XG4gIHsgdXJsXG4gIDsgY29kZVxuICA7IGNvbnRlbnQgPSBKcy5PcHQuY2FzZSByZXEjIy5yZXNwb25zZVRleHQgKGZ1biAoKSAtPiBKcy5zdHJpbmcgXCJcIikgKGZ1biB4IC0+IHgpXG4gIDsgY29udGVudF94bWwgPSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgOyBoZWFkZXJzXG4gIH1cblxubGV0IGRvY3VtZW50X3Jlc3BvbnNlIHVybCBjb2RlIGhlYWRlcnMgcmVxID1cbiAgeyB1cmxcbiAgOyBjb2RlXG4gIDsgY29udGVudCA9IEZpbGUuQ29lcmNlVG8uZG9jdW1lbnQgcmVxIyMucmVzcG9uc2VcbiAgOyBjb250ZW50X3htbCA9IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICA7IGhlYWRlcnNcbiAgfVxuXG5sZXQganNvbl9yZXNwb25zZSB1cmwgY29kZSBoZWFkZXJzIHJlcSA9XG4gIHsgdXJsXG4gIDsgY29kZVxuICA7IGNvbnRlbnQgPSBGaWxlLkNvZXJjZVRvLmpzb24gcmVxIyMucmVzcG9uc2VcbiAgOyBjb250ZW50X3htbCA9IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICA7IGhlYWRlcnNcbiAgfVxuXG5sZXQgYmxvYl9yZXNwb25zZSB1cmwgY29kZSBoZWFkZXJzIHJlcSA9XG4gIHsgdXJsXG4gIDsgY29kZVxuICA7IGNvbnRlbnQgPSBGaWxlLkNvZXJjZVRvLmJsb2IgcmVxIyMucmVzcG9uc2VcbiAgOyBjb250ZW50X3htbCA9IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICA7IGhlYWRlcnNcbiAgfVxuXG5sZXQgYXJyYXlidWZmZXJfcmVzcG9uc2UgdXJsIGNvZGUgaGVhZGVycyByZXEgPVxuICB7IHVybFxuICA7IGNvZGVcbiAgOyBjb250ZW50ID0gRmlsZS5Db2VyY2VUby5hcnJheUJ1ZmZlciByZXEjIy5yZXNwb25zZVxuICA7IGNvbnRlbnRfeG1sID0gKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gIDsgaGVhZGVyc1xuICB9XG5cbmxldCBoYXNfZ2V0X2FyZ3MgdXJsID1cbiAgdHJ5XG4gICAgaWdub3JlIChTdHJpbmcuaW5kZXggdXJsICc/Jyk7XG4gICAgdHJ1ZVxuICB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5sZXQgcGVyZm9ybV9yYXdcbiAgICA/KGhlYWRlcnMgPSBbXSlcbiAgICA/Y29udGVudF90eXBlXG4gICAgPyhnZXRfYXJncyA9IFtdKVxuICAgID8oY2hlY2tfaGVhZGVycyA9IGZ1biBfIF8gLT4gdHJ1ZSlcbiAgICA/cHJvZ3Jlc3NcbiAgICA/dXBsb2FkX3Byb2dyZXNzXG4gICAgP2NvbnRlbnRzXG4gICAgP292ZXJyaWRlX21pbWVfdHlwZVxuICAgID9vdmVycmlkZV9tZXRob2RcbiAgICA/d2l0aF9jcmVkZW50aWFsc1xuICAgICh0eXBlIHJlc3B0eXBlKVxuICAgIH4ocmVzcG9uc2VfdHlwZSA6IHJlc3B0eXBlIHJlc3BvbnNlKVxuICAgIHVybCA9XG4gIGxldCBjb250ZW50c19ub3JtYWxpemF0aW9uID0gZnVuY3Rpb25cbiAgICB8IGBQT1NUX2Zvcm0gYXJncyAtPlxuICAgICAgICBsZXQgb25seV9zdHJpbmdzID1cbiAgICAgICAgICBMaXN0LmZvcl9hbGxcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBfLCBgU3RyaW5nIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICBhcmdzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBmb3JtX2NvbnRlbnRzID1cbiAgICAgICAgICBpZiBvbmx5X3N0cmluZ3MgdGhlbiBgRmllbGRzIChyZWYgW10pIGVsc2UgRm9ybS5lbXB0eV9mb3JtX2NvbnRlbnRzICgpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QuaXRlciAoZnVuIChuYW1lLCB2YWx1ZSkgLT4gRm9ybS5hcHBlbmQgZm9ybV9jb250ZW50cyAobmFtZSwgdmFsdWUpKSBhcmdzO1xuICAgICAgICBgRm9ybV9jb250ZW50cyBmb3JtX2NvbnRlbnRzXG4gICAgfCAoYFN0cmluZyBfIHwgYEZvcm1fY29udGVudHMgXykgYXMgeCAtPiB4XG4gICAgfCBgQmxvYiBiIC0+IGBCbG9iIChiIDogI0ZpbGUuYmxvYiBKcy50IDo+IEZpbGUuYmxvYiBKcy50KVxuICBpblxuICBsZXQgY29udGVudHMgPVxuICAgIG1hdGNoIGNvbnRlbnRzIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBjIC0+IFNvbWUgKGNvbnRlbnRzX25vcm1hbGl6YXRpb24gYylcbiAgaW5cbiAgbGV0IG1ldGhvZF90b19zdHJpbmcgbSA9XG4gICAgbWF0Y2ggbSB3aXRoXG4gICAgfCBgR0VUIC0+IFwiR0VUXCJcbiAgICB8IGBQT1NUIC0+IFwiUE9TVFwiXG4gICAgfCBgSEVBRCAtPiBcIkhFQURcIlxuICAgIHwgYFBVVCAtPiBcIlBVVFwiXG4gICAgfCBgREVMRVRFIC0+IFwiREVMRVRFXCJcbiAgICB8IGBPUFRJT05TIC0+IFwiT1BUSU9OU1wiXG4gICAgfCBgUEFUQ0ggLT4gXCJQQVRDSFwiXG4gIGluXG4gIGxldCBtZXRob2RfLCBjb250ZW50X3R5cGUgPVxuICAgIGxldCBvdmVycmlkZV9tZXRob2QgbSA9XG4gICAgICBtYXRjaCBvdmVycmlkZV9tZXRob2Qgd2l0aFxuICAgICAgfCBOb25lIC0+IG1cbiAgICAgIHwgU29tZSB2IC0+IG1ldGhvZF90b19zdHJpbmcgdlxuICAgIGluXG4gICAgbGV0IG92ZXJyaWRlX2NvbnRlbnRfdHlwZSBjID1cbiAgICAgIG1hdGNoIGNvbnRlbnRfdHlwZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gU29tZSBjXG4gICAgICB8IFNvbWUgXyAtPiBjb250ZW50X3R5cGVcbiAgICBpblxuICAgIG1hdGNoIGNvbnRlbnRzIHdpdGhcbiAgICB8IE5vbmUgLT4gb3ZlcnJpZGVfbWV0aG9kIFwiR0VUXCIsIGNvbnRlbnRfdHlwZVxuICAgIHwgU29tZSAoYEZvcm1fY29udGVudHMgZm9ybSkgLT4gKFxuICAgICAgICBtYXRjaCBmb3JtIHdpdGhcbiAgICAgICAgfCBgRmllbGRzIF9zdHJpbmdzIC0+XG4gICAgICAgICAgICAoIG92ZXJyaWRlX21ldGhvZCBcIlBPU1RcIlxuICAgICAgICAgICAgLCBvdmVycmlkZV9jb250ZW50X3R5cGUgXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIiApXG4gICAgICAgIHwgYEZvcm1EYXRhIF8gLT4gb3ZlcnJpZGVfbWV0aG9kIFwiUE9TVFwiLCBjb250ZW50X3R5cGUpXG4gICAgfCBTb21lIChgU3RyaW5nIF8gfCBgQmxvYiBfKSAtPiBvdmVycmlkZV9tZXRob2QgXCJQT1NUXCIsIGNvbnRlbnRfdHlwZVxuICBpblxuICBsZXQgdXJsID1cbiAgICBpZiBQb2x5LihnZXRfYXJncyA9IFtdKVxuICAgIHRoZW4gdXJsXG4gICAgZWxzZSB1cmwgXiAoaWYgaGFzX2dldF9hcmdzIHVybCB0aGVuIFwiJlwiIGVsc2UgXCI/XCIpIF4gVXJsLmVuY29kZV9hcmd1bWVudHMgZ2V0X2FyZ3NcbiAgaW5cbiAgbGV0IChyZXMgOiByZXNwdHlwZSBnZW5lcmljX2h0dHBfZnJhbWUgTHd0LnQpLCB3ID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IHJlcSA9IGNyZWF0ZSAoKSBpblxuICByZXEjI19vcGVuIChKcy5zdHJpbmcgbWV0aG9kXykgKEpzLnN0cmluZyB1cmwpIEpzLl90cnVlO1xuICAobWF0Y2ggb3ZlcnJpZGVfbWltZV90eXBlIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBtaW1lX3R5cGUgLT4gcmVxIyNvdmVycmlkZU1pbWVUeXBlIChKcy5zdHJpbmcgbWltZV90eXBlKSk7XG4gIChtYXRjaCByZXNwb25zZV90eXBlIHdpdGhcbiAgfCBBcnJheUJ1ZmZlciAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiYXJyYXlidWZmZXJcIlxuICB8IEJsb2IgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImJsb2JcIlxuICB8IERvY3VtZW50IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJkb2N1bWVudFwiXG4gIHwgSlNPTiAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwianNvblwiXG4gIHwgVGV4dCAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwidGV4dFwiXG4gIHwgRGVmYXVsdCAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiXCIpO1xuICAobWF0Y2ggd2l0aF9jcmVkZW50aWFscyB3aXRoXG4gIHwgU29tZSBjIC0+IHJlcSMjLndpdGhDcmVkZW50aWFscyA6PSBKcy5ib29sIGNcbiAgfCBOb25lIC0+ICgpKTtcbiAgKG1hdGNoIGNvbnRlbnRfdHlwZSB3aXRoXG4gIHwgU29tZSBjb250ZW50X3R5cGUgLT5cbiAgICAgIHJlcSMjc2V0UmVxdWVzdEhlYWRlciAoSnMuc3RyaW5nIFwiQ29udGVudC10eXBlXCIpIChKcy5zdHJpbmcgY29udGVudF90eXBlKVxuICB8IF8gLT4gKCkpO1xuICBMaXN0Lml0ZXIgKGZ1biAobiwgdikgLT4gcmVxIyNzZXRSZXF1ZXN0SGVhZGVyIChKcy5zdHJpbmcgbikgKEpzLnN0cmluZyB2KSkgaGVhZGVycztcbiAgbGV0IGhlYWRlcnMgcyA9XG4gICAgT3B0LmNhc2VcbiAgICAgIChyZXEjI2dldFJlc3BvbnNlSGVhZGVyIChKcy5ieXRlc3RyaW5nIHMpKVxuICAgICAgKGZ1biAoKSAtPiBOb25lKVxuICAgICAgKGZ1biB2IC0+IFNvbWUgKEpzLnRvX3N0cmluZyB2KSlcbiAgaW5cbiAgbGV0IGRvX2NoZWNrX2hlYWRlcnMgPVxuICAgIGxldCBzdCA9IHJlZiBgTm90X3lldCBpblxuICAgIGZ1biAoKSAtPlxuICAgICAgaWYgUG9seS4oIXN0ID0gYE5vdF95ZXQpXG4gICAgICB0aGVuXG4gICAgICAgIGlmIGNoZWNrX2hlYWRlcnMgcmVxIyMuc3RhdHVzIGhlYWRlcnNcbiAgICAgICAgdGhlbiBzdCA6PSBgUGFzc2VkXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIEx3dC53YWtldXBfZXhuIHcgKFdyb25nX2hlYWRlcnMgKHJlcSMjLnN0YXR1cywgaGVhZGVycykpO1xuICAgICAgICAgIHN0IDo9IGBGYWlsZWQ7XG4gICAgICAgICAgcmVxIyNhYm9ydCk7XG4gICAgICBQb2x5Lighc3QgPD4gYEZhaWxlZClcbiAgaW5cbiAgcmVxIyMub25yZWFkeXN0YXRlY2hhbmdlIDo9XG4gICAgSnMud3JhcF9jYWxsYmFjayAoZnVuIF8gLT5cbiAgICAgICAgbWF0Y2ggcmVxIyMucmVhZHlTdGF0ZSB3aXRoXG4gICAgICAgICgqIElFIGRvZXNuJ3QgaGF2ZSB0aGUgc2FtZSBzZW1hbnRpY3MgZm9yIEhFQURFUlNfUkVDRUlWRUQuXG4gICAgICAgICAgICAgc28gd2Ugd2FpdCB0aWwgTE9BRElORyB0byBjaGVjayBoZWFkZXJzLiBTZWU6XG4gICAgICAgICAgICAgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNTM0MzYxKHY9dnMuODUpLmFzcHggKilcbiAgICAgICAgfCBIRUFERVJTX1JFQ0VJVkVEIHdoZW4gbm90IERvbV9odG1sLm9uSUUgLT4gaWdub3JlIChkb19jaGVja19oZWFkZXJzICgpKVxuICAgICAgICB8IExPQURJTkcgd2hlbiBEb21faHRtbC5vbklFIC0+IGlnbm9yZSAoZG9fY2hlY2tfaGVhZGVycyAoKSlcbiAgICAgICAgfCBET05FIC0+XG4gICAgICAgICAgICAoKiBJZiB3ZSBkaWRuJ3QgY2F0Y2ggYSBwcmV2aW91cyBldmVudCwgd2UgY2hlY2sgdGhlIGhlYWRlci4gKilcbiAgICAgICAgICAgIGlmIGRvX2NoZWNrX2hlYWRlcnMgKClcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlIDogcmVzcHR5cGUgZ2VuZXJpY19odHRwX2ZyYW1lID1cbiAgICAgICAgICAgICAgICBtYXRjaCByZXNwb25zZV90eXBlIHdpdGhcbiAgICAgICAgICAgICAgICB8IEFycmF5QnVmZmVyIC0+IGFycmF5YnVmZmVyX3Jlc3BvbnNlIHVybCByZXEjIy5zdGF0dXMgaGVhZGVycyByZXFcbiAgICAgICAgICAgICAgICB8IEJsb2IgLT4gYmxvYl9yZXNwb25zZSB1cmwgcmVxIyMuc3RhdHVzIGhlYWRlcnMgcmVxXG4gICAgICAgICAgICAgICAgfCBEb2N1bWVudCAtPiBkb2N1bWVudF9yZXNwb25zZSB1cmwgcmVxIyMuc3RhdHVzIGhlYWRlcnMgcmVxXG4gICAgICAgICAgICAgICAgfCBKU09OIC0+IGpzb25fcmVzcG9uc2UgdXJsIHJlcSMjLnN0YXR1cyBoZWFkZXJzIHJlcVxuICAgICAgICAgICAgICAgIHwgVGV4dCAtPiB0ZXh0X3Jlc3BvbnNlIHVybCByZXEjIy5zdGF0dXMgaGVhZGVycyByZXFcbiAgICAgICAgICAgICAgICB8IERlZmF1bHQgLT4gZGVmYXVsdF9yZXNwb25zZSB1cmwgcmVxIyMuc3RhdHVzIGhlYWRlcnMgcmVxXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEx3dC53YWtldXAgdyByZXNwb25zZVxuICAgICAgICB8IF8gLT4gKCkpO1xuICAobWF0Y2ggcHJvZ3Jlc3Mgd2l0aFxuICB8IFNvbWUgcHJvZ3Jlc3MgLT5cbiAgICAgIHJlcSMjLm9ucHJvZ3Jlc3MgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBlIC0+XG4gICAgICAgICAgICBwcm9ncmVzcyBlIyMubG9hZGVkIGUjIy50b3RhbDtcbiAgICAgICAgICAgIEpzLl90cnVlKVxuICB8IE5vbmUgLT4gKCkpO1xuICBPcHRkZWYuaXRlciByZXEjIy51cGxvYWQgKGZ1biB1cGxvYWQgLT5cbiAgICAgIG1hdGNoIHVwbG9hZF9wcm9ncmVzcyB3aXRoXG4gICAgICB8IFNvbWUgdXBsb2FkX3Byb2dyZXNzIC0+XG4gICAgICAgICAgdXBsb2FkIyMub25wcm9ncmVzcyA6PVxuICAgICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBlIC0+XG4gICAgICAgICAgICAgICAgdXBsb2FkX3Byb2dyZXNzIGUjIy5sb2FkZWQgZSMjLnRvdGFsO1xuICAgICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgfCBOb25lIC0+ICgpKTtcbiAgKG1hdGNoIGNvbnRlbnRzIHdpdGhcbiAgfCBOb25lIC0+IHJlcSMjc2VuZCBKcy5udWxsXG4gIHwgU29tZSAoYEZvcm1fY29udGVudHMgKGBGaWVsZHMgbCkpIC0+IHJlcSMjc2VuZCAoSnMuc29tZSAoc3RyaW5nIChlbmNvZGVfdXJsICFsKSkpXG4gIHwgU29tZSAoYEZvcm1fY29udGVudHMgKGBGb3JtRGF0YSBmKSkgLT4gcmVxIyNzZW5kX2Zvcm1EYXRhIGZcbiAgfCBTb21lIChgU3RyaW5nIHMpIC0+IHJlcSMjc2VuZCAoSnMuc29tZSAoSnMuc3RyaW5nIHMpKVxuICB8IFNvbWUgKGBCbG9iIGIpIC0+IHJlcSMjc2VuZF9ibG9iIGIpO1xuICBMd3Qub25fY2FuY2VsIHJlcyAoZnVuICgpIC0+IHJlcSMjYWJvcnQpO1xuICByZXNcblxubGV0IHBlcmZvcm1fcmF3X3VybFxuICAgID8oaGVhZGVycyA9IFtdKVxuICAgID9jb250ZW50X3R5cGVcbiAgICA/KGdldF9hcmdzID0gW10pXG4gICAgP2NoZWNrX2hlYWRlcnNcbiAgICA/cHJvZ3Jlc3NcbiAgICA/dXBsb2FkX3Byb2dyZXNzXG4gICAgP2NvbnRlbnRzXG4gICAgP292ZXJyaWRlX21pbWVfdHlwZVxuICAgID9vdmVycmlkZV9tZXRob2RcbiAgICA/d2l0aF9jcmVkZW50aWFsc1xuICAgIHVybCA9XG4gIHBlcmZvcm1fcmF3XG4gICAgfmhlYWRlcnNcbiAgICA/Y29udGVudF90eXBlXG4gICAgfmdldF9hcmdzXG4gICAgP2NvbnRlbnRzXG4gICAgP2NoZWNrX2hlYWRlcnNcbiAgICA/cHJvZ3Jlc3NcbiAgICA/dXBsb2FkX3Byb2dyZXNzXG4gICAgP292ZXJyaWRlX21pbWVfdHlwZVxuICAgID9vdmVycmlkZV9tZXRob2RcbiAgICA/d2l0aF9jcmVkZW50aWFsc1xuICAgIH5yZXNwb25zZV90eXBlOkRlZmF1bHRcbiAgICB1cmxcblxubGV0IHBlcmZvcm1cbiAgICA/KGhlYWRlcnMgPSBbXSlcbiAgICA/Y29udGVudF90eXBlXG4gICAgPyhnZXRfYXJncyA9IFtdKVxuICAgID9jaGVja19oZWFkZXJzXG4gICAgP3Byb2dyZXNzXG4gICAgP3VwbG9hZF9wcm9ncmVzc1xuICAgID9jb250ZW50c1xuICAgID9vdmVycmlkZV9taW1lX3R5cGVcbiAgICA/b3ZlcnJpZGVfbWV0aG9kXG4gICAgP3dpdGhfY3JlZGVudGlhbHNcbiAgICB1cmwgPVxuICBwZXJmb3JtX3Jhd1xuICAgIH5oZWFkZXJzXG4gICAgP2NvbnRlbnRfdHlwZVxuICAgIH5nZXRfYXJnc1xuICAgID9jb250ZW50c1xuICAgID9jaGVja19oZWFkZXJzXG4gICAgP3Byb2dyZXNzXG4gICAgP3VwbG9hZF9wcm9ncmVzc1xuICAgID9vdmVycmlkZV9taW1lX3R5cGVcbiAgICA/b3ZlcnJpZGVfbWV0aG9kXG4gICAgP3dpdGhfY3JlZGVudGlhbHNcbiAgICB+cmVzcG9uc2VfdHlwZTpEZWZhdWx0XG4gICAgKFVybC5zdHJpbmdfb2ZfdXJsIHVybClcblxubGV0IGdldCBzID0gcGVyZm9ybV9yYXdfdXJsIHNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuISBJbXBvcnRcblxubGV0IHNsZWVwIGQgPVxuICBsZXQgdCwgdyA9IEx3dC50YXNrICgpIGluXG4gIGxldCBpZCA9IERvbV9odG1sLnNldFRpbWVvdXQgKEx3dC53YWtldXAgdykgKGQgKi4gMTAwMC4pIGluXG4gIEx3dC5vbl9jYW5jZWwgdCAoZnVuICgpIC0+IERvbV9odG1sLmNsZWFyVGltZW91dCBpZCk7XG4gIHRcblxubGV0IHlpZWxkICgpID0gc2xlZXAgMC5cblxubGV0IHdha2V1cCA9IGZ1bmN0aW9uXG4gIHwgMSAtPlxuICAgICAgaWdub3JlXG4gICAgICAgIChEb21faHRtbC53aW5kb3cjI3NldFRpbWVvdXQgKEpzLndyYXBfY2FsbGJhY2sgTHd0Lndha2V1cF9wYXVzZWQpIChKcy5mbG9hdCAwLikpXG4gIHwgXyAtPiAoKVxuXG5sZXQgKCkgPSBMd3QucmVnaXN0ZXJfcGF1c2Vfbm90aWZpZXIgd2FrZXVwXG5cbmxldCBwcmVycl9zdHJpbmcgcyA9IEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgcylcblxubGV0IF8gPVxuICBMd3QuYXN5bmNfZXhjZXB0aW9uX2hvb2sgOj1cbiAgICBmdW4gZXhuIC0+XG4gICAgICBwcmVycl9zdHJpbmcgXCJFeGNlcHRpb24gZHVyaW5nIEx3dC5hc3luYzogXCI7XG4gICAgICBwcmVycl9zdHJpbmcgKFByaW50ZXhjLnRvX3N0cmluZyBleG4pO1xuICAgICAgUHJpbnRleGMucHJpbnRfYmFja3RyYWNlIHN0ZGVyclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc19vZl9vY2FtbFxub3BlbiEgSW1wb3J0XG5cbmxldCByZWMgcmFuZG9tX2lkZW50aWZpZXIgc2l6ZSA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSBzaXplIGluXG4gIGZvciBfaSA9IDAgdG8gc2l6ZSAtIDEgZG9cbiAgICBCdWZmZXIuYWRkX2NoYXIgYiAoQ2hhci5jaHIgKDk3ICsgUmFuZG9tLmludCAyNikpXG4gIGRvbmU7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGIgaW5cbiAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5nZXQgRG9tX2h0bWwud2luZG93IChKcy5zdHJpbmcgcykpXG4gIHRoZW4gKCogbmFtZSBhbHJlYWR5IGluIHVzZSwgY2hvb3NlIGFub3RoZXIgb25lKilcbiAgICByYW5kb21faWRlbnRpZmllciBzaXplXG4gIGVsc2Ugc1xuXG5sZXQgcmF3X2NhbGwgbmFtZSB1cmkgZXJyb3JfY2IgdXNlcl9jYiA9XG4gIGxldCBzY3JpcHQgPSBEb21faHRtbC4oY3JlYXRlU2NyaXB0IGRvY3VtZW50KSBpblxuICBsZXQgZmluYWxpemUgKCkgPVxuICAgIEpzLlVuc2FmZS5kZWxldGUgRG9tX2h0bWwud2luZG93IChKcy5zdHJpbmcgbmFtZSk7XG4gICAgSnMuT3B0Lml0ZXIgc2NyaXB0IyMucGFyZW50Tm9kZSAoZnVuIHBhcmVudCAtPiBEb20ucmVtb3ZlQ2hpbGQgcGFyZW50IHNjcmlwdClcbiAgaW5cbiAgbGV0IGV4ZWN1dGVkID0gcmVmIGZhbHNlIGluXG4gIEpzLlVuc2FmZS5zZXRcbiAgICBEb21faHRtbC53aW5kb3dcbiAgICAoSnMuc3RyaW5nIG5hbWUpXG4gICAgKEpzLndyYXBfY2FsbGJhY2sgKGZ1biB4IC0+XG4gICAgICAgICBleGVjdXRlZCA6PSB0cnVlO1xuICAgICAgICAgZmluYWxpemUgKCk7XG4gICAgICAgICB1c2VyX2NiIHgpKTtcbiAgc2NyaXB0IyMuc3JjIDo9IEpzLnN0cmluZyB1cmk7XG4gIHNjcmlwdCMjLl90eXBlIDo9IEpzLnN0cmluZyBcInRleHQvamF2YXNjcmlwdFwiO1xuICBzY3JpcHQjIy5hc3luYyA6PSBKcy5fdHJ1ZTtcbiAgKChKcy5VbnNhZmUuY29lcmNlIHNjcmlwdCkjIy5vbmVycm9yXG4gIDo9IGZ1biB4IC0+XG4gIGZpbmFsaXplICgpO1xuICBlcnJvcl9jYiB4KTtcbiAgKChKcy5VbnNhZmUuY29lcmNlIHNjcmlwdCkjIy5vbmxvYWRcbiAgOj0gZnVuIHggLT5cbiAgTHd0LmFzeW5jIChmdW4gKCkgLT5cbiAgICAgIEx3dC5iaW5kIChMd3RfanMuc2xlZXAgMS4pIChmdW4gKCkgLT5cbiAgICAgICAgICBpZiAhZXhlY3V0ZWRcbiAgICAgICAgICB0aGVuIEx3dC5yZXR1cm5fdW5pdFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXG4gICAgICAgICAgICAgIChKcy5zdHJpbmcgXCJKc29ucDogc2NyaXB0IGxvYWRlZCBidXQgY2FsbGJhY2sgbm90IGV4ZWN1dGVkXCIpO1xuICAgICAgICAgICAgZmluYWxpemUgKCk7XG4gICAgICAgICAgICBlcnJvcl9jYiB4O1xuICAgICAgICAgICAgTHd0LnJldHVybl91bml0KSkpKTtcbiAgbGV0IGluaXQgKCkgPSBpZ25vcmUgKERvbS5hcHBlbmRDaGlsZCBEb21faHRtbC5kb2N1bWVudCMjLmJvZHkgc2NyaXB0KSBpblxuICBpbml0LCBmaW5hbGl6ZVxuXG5sZXQgY2FsbF8gcHJlZml4IG1ha2VfdXJpIGVycm9yX2NiIHVzZXJfY2IgPVxuICBsZXQgbmFtZSA9IHByZWZpeCBeIHJhbmRvbV9pZGVudGlmaWVyIDEwIGluXG4gIGxldCB1cmkgPSBtYWtlX3VyaSBuYW1lIGluXG4gIHJhd19jYWxsIG5hbWUgdXJpIGVycm9yX2NiIHVzZXJfY2JcblxubGV0IGNhbGxfY3VzdG9tX3VybCA/dGltZW91dCA/KHByZWZpeCA9IFwiXCIpIG1ha2VfdXJpID1cbiAgbGV0IHQsIHcgPSBMd3QudGFzayAoKSBpblxuICBsZXQgaW5pdCwgZmluYWxpemUgPSBjYWxsXyBwcmVmaXggbWFrZV91cmkgKGZ1biBfIC0+IEx3dC5jYW5jZWwgdCkgKEx3dC53YWtldXAgdykgaW5cbiAgTHd0Lm9uX2NhbmNlbCB0IGZpbmFsaXplO1xuICBsZXQgbmV3X3QgPVxuICAgIG1hdGNoIHRpbWVvdXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0XG4gICAgfCBTb21lIGRlbGF5IC0+XG4gICAgICAgIGxldCB3YWl0ID1cbiAgICAgICAgICBMd3QuYmluZCAoTHd0X2pzLnNsZWVwIGRlbGF5KSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIEx3dC5jYW5jZWwgdDtcbiAgICAgICAgICAgICAgdClcbiAgICAgICAgaW5cbiAgICAgICAgTHd0LmNob29zZSBbIHdhaXQ7IHQgXVxuICBpblxuICBpbml0ICgpO1xuICBuZXdfdFxuXG5sZXQgYWRkX3BhcmFtIG5hbWUgdmFsdWUgbCA9XG4gIGxldCBsID0gTGlzdC5maWx0ZXIgKGZ1biAoeCwgXykgLT4gbm90IChTdHJpbmcuZXF1YWwgeCBuYW1lKSkgbCBpblxuICAobmFtZSwgdmFsdWUpIDo6IGxcblxubGV0IGNhbGwgP3RpbWVvdXQgPyhwYXJhbSA9IFwiY2FsbGJhY2tcIikgPyhwcmVmaXggPSBcIlwiKSB1cmwgPVxuICBsZXQgbWFrZV91cmkgY2JuYW1lID1cbiAgICBtYXRjaCBVcmwudXJsX29mX3N0cmluZyB1cmwgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkpzb25wLmNhbGw6IENhbm5vdCBwYXJzZSB1cmxcIlxuICAgIHwgU29tZSB1cmwgLT5cbiAgICAgICAgbGV0IG5ld191cmwgPVxuICAgICAgICAgIG1hdGNoIHVybCB3aXRoXG4gICAgICAgICAgfCBVcmwuSHR0cCBodHRwIC0+XG4gICAgICAgICAgICAgIFVybC5IdHRwXG4gICAgICAgICAgICAgICAgeyBodHRwIHdpdGhcbiAgICAgICAgICAgICAgICAgIFVybC5odV9hcmd1bWVudHMgPSBhZGRfcGFyYW0gcGFyYW0gY2JuYW1lIGh0dHAuVXJsLmh1X2FyZ3VtZW50c1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICB8IFVybC5IdHRwcyBodHRwIC0+XG4gICAgICAgICAgICAgIFVybC5IdHRwc1xuICAgICAgICAgICAgICAgIHsgaHR0cCB3aXRoXG4gICAgICAgICAgICAgICAgICBVcmwuaHVfYXJndW1lbnRzID0gYWRkX3BhcmFtIHBhcmFtIGNibmFtZSBodHRwLlVybC5odV9hcmd1bWVudHNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgfCBVcmwuRmlsZSBmaWxlIC0+XG4gICAgICAgICAgICAgIFVybC5GaWxlXG4gICAgICAgICAgICAgICAgeyBmaWxlIHdpdGhcbiAgICAgICAgICAgICAgICAgIFVybC5mdV9hcmd1bWVudHMgPSBhZGRfcGFyYW0gcGFyYW0gY2JuYW1lIGZpbGUuVXJsLmZ1X2FyZ3VtZW50c1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgVXJsLnN0cmluZ19vZl91cmwgbmV3X3VybFxuICBpblxuICBjYWxsX2N1c3RvbV91cmwgP3RpbWVvdXQgfnByZWZpeCBtYWtlX3VyaVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBWaW5jZW50IEJhbGF0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc19vZl9vY2FtbFxub3BlbiEgSW1wb3J0XG5cbmxldCAoID4+PSApID0gTHd0LmJpbmRcblxubGV0IGFzeW5jIGYgPSBMd3QuYXN5bmMgKGZ1biAoKSAtPiBMd3RfanMueWllbGQgKCkgPj49IGYpXG5cbmxldCBvcHRfbWFwIGYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCBtYWtlX2V2ZW50IGV2ZW50X2tpbmQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIGxldCBlbCA9IHJlZiBKcy5udWxsIGluXG4gIGxldCB0LCB3ID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IGNhbmNlbCAoKSA9IEpzLk9wdC5pdGVyICFlbCBEb21faHRtbC5yZW1vdmVFdmVudExpc3RlbmVyIGluXG4gIEx3dC5vbl9jYW5jZWwgdCBjYW5jZWw7XG4gIGVsIDo9XG4gICAgSnMuc29tZVxuICAgICAgKERvbS5hZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcbiAgICAgICAgID9jYXB0dXJlOihvcHRfbWFwIEpzLmJvb2wgdXNlX2NhcHR1cmUpXG4gICAgICAgICA/cGFzc2l2ZToob3B0X21hcCBKcy5ib29sIHBhc3NpdmUpXG4gICAgICAgICB0YXJnZXRcbiAgICAgICAgIGV2ZW50X2tpbmRcbiAgICAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gKGV2IDogI0RvbV9odG1sLmV2ZW50IEpzLnQpIC0+XG4gICAgICAgICAgICAgIGNhbmNlbCAoKTtcbiAgICAgICAgICAgICAgTHd0Lndha2V1cCB3IGV2O1xuICAgICAgICAgICAgICBKcy5ib29sIHRydWUpKVxuICAgICAgICAgKCogdHJ1ZSBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IHRvIHByZXZlbnQgZGVmYXVsdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHVzZXIgY2FuIHVzZSB0aGUgcHJldmVudERlZmF1bHQgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFib3ZlLiAqKSk7XG4gIHRcblxubGV0IGNhdGNoX2NhbmNlbCBmIHggPVxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+IGYgeClcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgTHd0LkNhbmNlbGVkIC0+IEx3dC5yZXR1cm4gKClcbiAgICAgIHwgZSAtPiBMd3QuZmFpbCBlKVxuXG5sZXQgd2l0aF9lcnJvcl9sb2cgZiB4ID1cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPiBmIHgpXG4gICAgKGZ1biBlIC0+XG4gICAgICBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIChQcmludGV4Yy50b19zdHJpbmcgZSkpO1xuICAgICAgTHd0LnJldHVybiAoKSlcblxubGV0IHNlcV9sb29wIGV2aCA/KGNhbmNlbF9oYW5kbGVyID0gZmFsc2UpID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgaGFuZGxlciA9XG4gIGxldCBjYW5jZWxsZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IGN1ciA9IHJlZiAoTHd0LmZhaWwgKEZhaWx1cmUgXCJMd3RfanNfZXZlbnRcIikpIGluXG4gICgqIFVzaW5nIEx3dC5mYWlsIGFzIGRlZmF1bHQsIHRvIGJlIHBvbHltb3JwaGljICopXG4gIGxldCBjdXJfaGFuZGxlciA9IHJlZiAoTHd0LnJldHVybiAoKSkgaW5cbiAgbGV0IGx0LCBfbHcgPSBMd3QudGFzayAoKSBpblxuICBMd3Qub25fY2FuY2VsIGx0IChmdW4gKCkgLT5cbiAgICAgIEx3dC5jYW5jZWwgIWN1cjtcbiAgICAgIGlmIGNhbmNlbF9oYW5kbGVyIHRoZW4gTHd0LmNhbmNlbCAhY3VyX2hhbmRsZXI7XG4gICAgICBjYW5jZWxsZWQgOj0gdHJ1ZSk7XG4gIGxldCByZWMgYXV4ICgpID1cbiAgICBpZiBub3QgIWNhbmNlbGxlZFxuICAgICAgICgqIEluIHRoZSBjYXNlIGl0IGhhcyBiZWVuIGNhbmNlbGxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyB0aGUgcHJldmlvdXMgaGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICB3ZSBkbyBub3QgcmVpbnN0YWxsIHRoZSBldmVudCBoYW5kbGVyICopXG4gICAgdGhlbiAoXG4gICAgICBsZXQgdCA9IGV2aCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0IGluXG4gICAgICBjdXIgOj0gdDtcbiAgICAgIHRcbiAgICAgID4+PSBmdW4gZSAtPlxuICAgICAgY3VyX2hhbmRsZXIgOj0gd2l0aF9lcnJvcl9sb2cgKGhhbmRsZXIgZSkgbHQ7XG4gICAgICAhY3VyX2hhbmRsZXIgPj49IGF1eClcbiAgICBlbHNlIEx3dC5yZXR1cm4gKClcbiAgaW5cbiAgTHd0LmFzeW5jIChjYXRjaF9jYW5jZWwgYXV4KTtcbiAgbHRcblxubGV0IGFzeW5jX2xvb3AgZXZoID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgaGFuZGxlciA9XG4gIGxldCBjYW5jZWxsZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IGN1ciA9IHJlZiAoTHd0LmZhaWwgKEZhaWx1cmUgXCJMd3RfanNfZXZlbnRcIikpIGluXG4gIGxldCBsdCwgX2x3ID0gTHd0LnRhc2sgKCkgaW5cbiAgTHd0Lm9uX2NhbmNlbCBsdCAoZnVuICgpIC0+XG4gICAgICBMd3QuY2FuY2VsICFjdXI7XG4gICAgICBjYW5jZWxsZWQgOj0gdHJ1ZSk7XG4gIGxldCByZWMgYXV4ICgpID1cbiAgICBpZiBub3QgIWNhbmNlbGxlZFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHQgPSBldmggP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCBpblxuICAgICAgY3VyIDo9IHQ7XG4gICAgICB0XG4gICAgICA+Pj0gZnVuIGUgLT5cbiAgICAgIEx3dC5hc3luYyAoZnVuICgpIC0+IHdpdGhfZXJyb3JfbG9nIChoYW5kbGVyIGUpIGx0KTtcbiAgICAgIGF1eCAoKSlcbiAgICBlbHNlIEx3dC5yZXR1cm4gKClcbiAgaW5cbiAgTHd0LmFzeW5jIChjYXRjaF9jYW5jZWwgYXV4KTtcbiAgbHRcblxubGV0IGJ1ZmZlcmVkX2xvb3BcbiAgICBldmhcbiAgICA/KGNhbmNlbF9oYW5kbGVyID0gZmFsc2UpXG4gICAgPyhjYW5jZWxfcXVldWUgPSB0cnVlKVxuICAgID91c2VfY2FwdHVyZVxuICAgID9wYXNzaXZlXG4gICAgdGFyZ2V0XG4gICAgaGFuZGxlciA9XG4gIGxldCBjYW5jZWxsZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IHF1ZXVlID0gcmVmIFtdIGluXG4gIGxldCBjdXIgPSByZWYgKEx3dC5mYWlsIChGYWlsdXJlIFwiTHd0X2pzX2V2ZW50XCIpKSBpblxuICBsZXQgY3VyX2hhbmRsZXIgPSByZWYgKEx3dC5yZXR1cm4gKCkpIGluXG4gIGxldCBsdCwgX2x3ID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IHNwYXduID0gTHd0X2NvbmRpdGlvbi5jcmVhdGUgKCkgaW5cbiAgTHd0Lm9uX2NhbmNlbCBsdCAoZnVuICgpIC0+XG4gICAgICBMd3QuY2FuY2VsICFjdXI7XG4gICAgICBpZiBjYW5jZWxfaGFuZGxlciB0aGVuIEx3dC5jYW5jZWwgIWN1cl9oYW5kbGVyO1xuICAgICAgaWYgY2FuY2VsX3F1ZXVlIHRoZW4gcXVldWUgOj0gW107XG4gICAgICBjYW5jZWxsZWQgOj0gdHJ1ZSk7XG4gIGxldCByZWMgc3Bhd25lciAoKSA9XG4gICAgaWYgbm90ICFjYW5jZWxsZWRcbiAgICB0aGVuIChcbiAgICAgIGxldCB0ID0gZXZoID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgaW5cbiAgICAgIGN1ciA6PSB0O1xuICAgICAgdFxuICAgICAgPj49IGZ1biBlIC0+XG4gICAgICBxdWV1ZSA6PSBlIDo6ICFxdWV1ZTtcbiAgICAgIEx3dF9jb25kaXRpb24uc2lnbmFsIHNwYXduICgpO1xuICAgICAgc3Bhd25lciAoKSlcbiAgICBlbHNlIEx3dC5yZXR1cm4gKClcbiAgaW5cbiAgbGV0IHJlYyBydW5uZXIgKCkgPVxuICAgIGN1cl9oYW5kbGVyIDo9IEx3dC5yZXR1cm4gKCk7XG4gICAgaWYgbm90ICFjYW5jZWxsZWRcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoICFxdWV1ZSB3aXRoXG4gICAgICB8IFtdIC0+IEx3dF9jb25kaXRpb24ud2FpdCBzcGF3biA+Pj0gcnVubmVyXG4gICAgICB8IGUgOjogdGwgLT5cbiAgICAgICAgICBxdWV1ZSA6PSB0bDtcbiAgICAgICAgICBjdXJfaGFuZGxlciA6PSB3aXRoX2Vycm9yX2xvZyAoaGFuZGxlciBlKSBsdDtcbiAgICAgICAgICAhY3VyX2hhbmRsZXIgPj49IHJ1bm5lcilcbiAgICBlbHNlIEx3dC5yZXR1cm4gKClcbiAgaW5cbiAgTHd0LmFzeW5jIChjYXRjaF9jYW5jZWwgc3Bhd25lcik7XG4gIEx3dC5hc3luYyBydW5uZXI7XG4gIGx0XG5cbmxldCBmdW5jX2xpbWl0ZWRfbG9vcCBldmVudCBsaW1pdGVkX2Z1bmMgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCBoYW5kbGVyID1cbiAgbGV0IGNvdW50ID0gcmVmIDAgaW5cbiAgYXN5bmNfbG9vcCBldmVudCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0IChmdW4gZXYgbHQgLT5cbiAgICAgIGluY3IgY291bnQ7XG4gICAgICBsZXQgbmIgPSAhY291bnQgaW5cbiAgICAgIGxpbWl0ZWRfZnVuYyAoKSA+Pj0gZnVuIF8gLT4gaWYgIWNvdW50ID0gbmIgdGhlbiBoYW5kbGVyIGV2IGx0IGVsc2UgTHd0LnJldHVybiAoKSlcblxubGV0IGxpbWl0ZWRfbG9vcCBldmVudCA/KGVsYXBzZWRfdGltZSA9IDAuMSkgPVxuICBmdW5jX2xpbWl0ZWRfbG9vcCBldmVudCAoZnVuICgpIC0+IEx3dF9qcy5zbGVlcCBlbGFwc2VkX3RpbWUpXG5cbmxldCBjbGljayA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5jbGljayA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBjb3B5ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmNvcHkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgY3V0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmN1dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwYXN0ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wYXN0ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkYmxjbGljayA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kYmxjbGljayA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBtb3VzZWRvd24gP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubW91c2Vkb3duID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IG1vdXNldXAgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubW91c2V1cCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBtb3VzZW92ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubW91c2VvdmVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IG1vdXNlbW92ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5tb3VzZW1vdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbW91c2VvdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubW91c2VvdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQga2V5cHJlc3MgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQua2V5cHJlc3MgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQga2V5ZG93biA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5rZXlkb3duID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGtleXVwID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmtleXVwID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5jaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgaW5wdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuaW5wdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgdGltZXVwZGF0ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50aW1ldXBkYXRlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGRyYWdzdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcmFnc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJhZ2VuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcmFnZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGRyYWdlbnRlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcmFnZW50ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJhZ292ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZHJhZ292ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJhZ2xlYXZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyYWdsZWF2ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkcmFnID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyYWcgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJvcCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcm9wID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGZvY3VzID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmZvY3VzID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGJsdXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuYmx1ciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBzY3JvbGwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuc2Nyb2xsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHN1Ym1pdCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5zdWJtaXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgc2VsZWN0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnNlbGVjdCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBhYm9ydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5hYm9ydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBlcnJvciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5lcnJvciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBsb2FkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmxvYWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgY2FucGxheSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5jYW5wbGF5ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGNhbnBsYXl0aHJvdWdoID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmNhbnBsYXl0aHJvdWdoID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGR1cmF0aW9uY2hhbmdlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmR1cmF0aW9uY2hhbmdlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGVtcHRpZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZW1wdGllZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBlbmRlZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5lbmRlZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBsb2FkZWRkYXRhID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmxvYWRlZGRhdGEgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbG9hZGVkbWV0YWRhdGEgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9hZGVkbWV0YWRhdGEgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbG9hZHN0YXJ0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmxvYWRzdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwYXVzZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wYXVzZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwbGF5ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBsYXkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcGxheWluZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wbGF5aW5nID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHJhdGVjaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucmF0ZWNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBzZWVrZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuc2Vla2VkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHNlZWtpbmcgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuc2Vla2luZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBzdGFsbGVkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnN0YWxsZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgc3VzcGVuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5zdXNwZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHZvbHVtZWNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC52b2x1bWVjaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgd2FpdGluZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC53YWl0aW5nID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxuKCogc3BlY2lhbCBjYXNlIGZvciBtb3VzZXdoZWVsLCBiZWNhdXNlIGl0IGRlcGVuZHMgb24gdGhlIGJyb3dzZXIgKilcbmxldCBtb3VzZXdoZWVsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBsZXQgZWwgPSByZWYgSnMubnVsbCBpblxuICBsZXQgdCwgdyA9IEx3dC50YXNrICgpIGluXG4gIGxldCBjYW5jZWwgKCkgPSBKcy5PcHQuaXRlciAhZWwgRG9tX2h0bWwucmVtb3ZlRXZlbnRMaXN0ZW5lciBpblxuICBMd3Qub25fY2FuY2VsIHQgY2FuY2VsO1xuICBlbCA6PVxuICAgIEpzLnNvbWVcbiAgICAgIChEb21faHRtbC5hZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zXG4gICAgICAgICA/Y2FwdHVyZToob3B0X21hcCBKcy5ib29sIHVzZV9jYXB0dXJlKVxuICAgICAgICAgP3Bhc3NpdmU6KG9wdF9tYXAgSnMuYm9vbCBwYXNzaXZlKVxuICAgICAgICAgdGFyZ2V0XG4gICAgICAgICAoZnVuIChldiA6ICNEb21faHRtbC5ldmVudCBKcy50KSB+ZHggfmR5IC0+XG4gICAgICAgICAgIEZpcmVidWcuY29uc29sZSMjbG9nIGV2O1xuICAgICAgICAgICBjYW5jZWwgKCk7XG4gICAgICAgICAgIEx3dC53YWtldXAgdyAoZXYsIChkeCwgZHkpKTtcbiAgICAgICAgICAgSnMuYm9vbCB0cnVlKVxuICAgICAgICAgKCogdHJ1ZSBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IHRvIHByZXZlbnQgZGVmYXVsdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHVzZXIgY2FuIHVzZSB0aGUgcHJldmVudERlZmF1bHQgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFib3ZlLiAqKSk7XG4gIHRcblxuKCogbGV0IF9ET01Nb3VzZVNjcm9sbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuX0RPTU1vdXNlU2Nyb2xsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcbiopXG5cbmxldCB3aGVlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC53aGVlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0b3VjaHN0YXJ0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRvdWNoc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgdG91Y2htb3ZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRvdWNobW92ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0b3VjaGVuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50b3VjaGVuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0b3VjaGNhbmNlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50b3VjaGNhbmNlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBsb3N0cG9pbnRlcmNhcHR1cmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9zdHBvaW50ZXJjYXB0dXJlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGdvdHBvaW50ZXJjYXB0dXJlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmdvdHBvaW50ZXJjYXB0dXJlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJlbnRlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVyZW50ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcmNhbmNlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVyY2FuY2VsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJkb3duID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJkb3duID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJsZWF2ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVybGVhdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcm1vdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucG9pbnRlcm1vdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcm91dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVyb3V0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJvdmVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJvdmVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJ1cCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVydXAgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgdHJhbnNpdGlvbmVuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50cmFuc2l0aW9uZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHRcblxubGV0IHRyYW5zaXRpb25zdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50cmFuc2l0aW9uc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIGVsdFxuXG5sZXQgdHJhbnNpdGlvbnJ1biA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50cmFuc2l0aW9ucnVuID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHRcblxubGV0IHRyYW5zaXRpb25jYW5jZWwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIGVsdCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudHJhbnNpdGlvbmNhbmNlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0XG5cbmxldCBjbGlja3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgY2xpY2sgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBjb3BpZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgY29weSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGN1dHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgY3V0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcGFzdGVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBhc3RlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZGJsY2xpY2tzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRibGNsaWNrID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbW91c2Vkb3ducyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBtb3VzZWRvd24gP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBtb3VzZXVwcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBtb3VzZXVwID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbW91c2VvdmVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBtb3VzZW92ZXIgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBtb3VzZW1vdmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIG1vdXNlbW92ZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IG1vdXNlb3V0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBtb3VzZW91dCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGtleXByZXNzZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Aga2V5cHJlc3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBrZXlkb3ducyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBrZXlkb3duID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQga2V5dXBzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGtleXVwID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgY2hhbmdlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBjaGFuZ2UgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBpbnB1dHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgaW5wdXQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB0aW1ldXBkYXRlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0aW1ldXBkYXRlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZHJhZ3N0YXJ0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcmFnc3RhcnQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcmFnZW5kcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcmFnZW5kID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZHJhZ2VudGVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcmFnZW50ZXIgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcmFnb3ZlcnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZHJhZ292ZXIgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcmFnbGVhdmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyYWdsZWF2ZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGRyYWdzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyYWcgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcm9wcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcm9wID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbW91c2V3aGVlbHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbW91c2V3aGVlbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHdoZWVscyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB3aGVlbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRvdWNoc3RhcnRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRvdWNoc3RhcnQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB0b3VjaG1vdmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRvdWNobW92ZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRvdWNoZW5kcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0b3VjaGVuZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRvdWNoY2FuY2VscyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0b3VjaGNhbmNlbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGZvY3VzZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZm9jdXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBibHVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBibHVyID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgc2Nyb2xscyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBzY3JvbGwgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBzdWJtaXRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHN1Ym1pdCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHNlbGVjdHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agc2VsZWN0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgYWJvcnRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGFib3J0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZXJyb3JzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGVycm9yID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbG9hZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbG9hZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGNhbnBsYXlzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGNhbnBsYXkgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBjYW5wbGF5dGhyb3VnaHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgY2FucGxheXRocm91Z2ggP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkdXJhdGlvbmNoYW5nZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZHVyYXRpb25jaGFuZ2UgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBlbXB0aWVkcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBlbXB0aWVkID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZW5kZWRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGVuZGVkID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbG9hZGVkZGF0YXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbG9hZGVkZGF0YSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGxvYWRlZG1ldGFkYXRhcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBsb2FkZWRtZXRhZGF0YSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGxvYWRzdGFydHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbG9hZHN0YXJ0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcGF1c2VzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBhdXNlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcGxheXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcGxheSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBsYXlpbmdzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBsYXlpbmcgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCByYXRlY2hhbmdlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCByYXRlY2hhbmdlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgc2Vla2VkcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBzZWVrZWQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBzZWVraW5ncyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBzZWVraW5nID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgc3RhbGxlZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agc3RhbGxlZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHN1c3BlbmRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHN1c3BlbmQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB2b2x1bWVjaGFuZ2VzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHZvbHVtZWNoYW5nZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHdhaXRpbmdzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHdhaXRpbmcgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBsb3N0cG9pbnRlcmNhcHR1cmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGxvc3Rwb2ludGVyY2FwdHVyZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGdvdHBvaW50ZXJjYXB0dXJlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBnb3Rwb2ludGVyY2FwdHVyZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJlbnRlcnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcmVudGVyID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcmNhbmNlbHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcmNhbmNlbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJkb3ducyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVyZG93biA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJsZWF2ZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcmxlYXZlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcm1vdmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBvaW50ZXJtb3ZlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcm91dHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcm91dCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJvdmVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVyb3ZlciA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJ1cHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcnVwID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdHJhbnNpdGlvbmVuZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdHJhbnNpdGlvbmVuZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRyYW5zaXRpb25zdGFydHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdHJhbnNpdGlvbnN0YXJ0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdHJhbnNpdGlvbnJ1bnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdHJhbnNpdGlvbnJ1biA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRyYW5zaXRpb25jYW5jZWxzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRyYW5zaXRpb25jYW5jZWwgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSAoKSA9XG4gIGxldCB0LCBzID0gTHd0LndhaXQgKCkgaW5cbiAgbGV0IChfIDogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQpID1cbiAgICBEb21faHRtbC53aW5kb3cjI3JlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgKEpzLndyYXBfY2FsbGJhY2sgKGZ1biAoXyA6IEpzLm51bWJlcl90KSAtPiBMd3Qud2FrZXVwIHMgKCkpKVxuICBpblxuICB0XG5cbmxldCBvbmxvYWQgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmxvYWQgRG9tX2h0bWwud2luZG93XG5cbmxldCBkb21Db250ZW50TG9hZGVkID1cbiAgbGV0IGNvbXBsZXRlID0gSnMuc3RyaW5nIFwiY29tcGxldGVcIiBpblxuICBsZXQgZG9jID0gRG9tX2h0bWwud2luZG93IyMuZG9jdW1lbnQgaW5cbiAgZnVuICgpIC0+XG4gICAgaWYgZG9jIyMucmVhZHlTdGF0ZSA9PSBjb21wbGV0ZVxuICAgIHRoZW4gTHd0LnJldHVybl91bml0XG4gICAgZWxzZVxuICAgICAgbGV0IHQsIHcgPSBMd3QudGFzayAoKSBpblxuICAgICAgbGV0IHdha2V1cCB3IF8gPSBpZiBMd3QuaXNfc2xlZXBpbmcgdCB0aGVuIEx3dC53YWtldXAgdyAoKSBpblxuICAgICAgbGV0IHdha2V1cF9leG4gdyBlID0gaWYgTHd0LmlzX3NsZWVwaW5nIHQgdGhlbiBMd3Qud2FrZXVwX2V4biB3IGUgaW5cbiAgICAgICgqIGh0dHBzOi8vZ2l0aHViLmNvbS9kcGVyaW5pL0NvbnRlbnRMb2FkZWQvYmxvYi9tYXN0ZXIvc3JjL2NvbnRlbnRsb2FkZWQuanMgKilcbiAgICAgIGxldCByZWd1bGFyID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kb21Db250ZW50TG9hZGVkIGRvYyBpblxuICAgICAgTHd0Lm9uX2FueSByZWd1bGFyICh3YWtldXAgdykgKHdha2V1cF9leG4gdyk7XG4gICAgICAoKiBpZTggKilcbiAgICAgIGxldCByZWFkeXN0YXRlY2hhbmdlID1cbiAgICAgICAgYXN5bmNfbG9vcFxuICAgICAgICAgIChtYWtlX2V2ZW50IChEb20uRXZlbnQubWFrZSBcInJlYWR5c3RhdGVjaGFuZ2VcIikpXG4gICAgICAgICAgZG9jXG4gICAgICAgICAgKGZ1biBlIF8gLT5cbiAgICAgICAgICAgIGlmIGRvYyMjLnJlYWR5U3RhdGUgPT0gY29tcGxldGUgdGhlbiB3YWtldXAgdyBlO1xuICAgICAgICAgICAgTHd0LnJldHVybl91bml0KVxuICAgICAgaW5cbiAgICAgICgqIGZhbGxiYWNrLCBqdXN0IGluIGNhc2UgKilcbiAgICAgIGxldCBpbml0ID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5sb2FkIERvbV9odG1sLndpbmRvdyBpblxuICAgICAgTHd0Lm9uX2FueSBpbml0ICh3YWtldXAgdykgKHdha2V1cF9leG4gdyk7XG4gICAgICAoKiBjbGVhbiBhbmQgcmV0dXJuICopXG4gICAgICBMd3QuYmluZCB0IChmdW4gX2UgLT5cbiAgICAgICAgICBMd3QuY2FuY2VsIHJlZ3VsYXI7XG4gICAgICAgICAgTHd0LmNhbmNlbCByZWFkeXN0YXRlY2hhbmdlO1xuICAgICAgICAgIEx3dC5jYW5jZWwgaW5pdDtcbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBvbnVubG9hZCAoKSA9IG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudW5sb2FkIERvbV9odG1sLndpbmRvd1xuXG5sZXQgb25iZWZvcmV1bmxvYWQgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmJlZm9yZXVubG9hZCBEb21faHRtbC53aW5kb3dcblxubGV0IG9ucmVzaXplICgpID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5yZXNpemUgRG9tX2h0bWwud2luZG93XG5cbmxldCBvbm9yaWVudGF0aW9uY2hhbmdlICgpID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5vcmllbnRhdGlvbmNoYW5nZSBEb21faHRtbC53aW5kb3dcblxubGV0IG9ucG9wc3RhdGUgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvcHN0YXRlIERvbV9odG1sLndpbmRvd1xuXG5sZXQgb25oYXNoY2hhbmdlICgpID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5oYXNoY2hhbmdlIERvbV9odG1sLndpbmRvd1xuXG5sZXQgb25vcmllbnRhdGlvbmNoYW5nZV9vcl9vbnJlc2l6ZSAoKSA9IEx3dC5waWNrIFsgb25yZXNpemUgKCk7IG9ub3JpZW50YXRpb25jaGFuZ2UgKCkgXVxuXG5sZXQgb25yZXNpemVzIHQgPSBzZXFfbG9vcCAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25yZXNpemUgKCkpICgpIHRcblxubGV0IG9ub3JpZW50YXRpb25jaGFuZ2VzIHQgPVxuICBzZXFfbG9vcCAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25vcmllbnRhdGlvbmNoYW5nZSAoKSkgKCkgdFxuXG5sZXQgb25wb3BzdGF0ZXMgdCA9IHNlcV9sb29wIChmdW4gP3VzZV9jYXB0dXJlOl8gP3Bhc3NpdmU6XyAoKSAtPiBvbnBvcHN0YXRlICgpKSAoKSB0XG5cbmxldCBvbmhhc2hjaGFuZ2VzIHQgPSBzZXFfbG9vcCAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25oYXNoY2hhbmdlICgpKSAoKSB0XG5cbmxldCBvbm9yaWVudGF0aW9uY2hhbmdlc19vcl9vbnJlc2l6ZXMgdCA9XG4gIHNlcV9sb29wIChmdW4gP3VzZV9jYXB0dXJlOl8gP3Bhc3NpdmU6XyAoKSAtPiBvbm9yaWVudGF0aW9uY2hhbmdlX29yX29ucmVzaXplICgpKSAoKSB0XG5cbmxldCBsaW1pdGVkX29ucmVzaXplcyA/ZWxhcHNlZF90aW1lIHQgPVxuICBsaW1pdGVkX2xvb3AgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9ucmVzaXplICgpKSA/ZWxhcHNlZF90aW1lICgpIHRcblxubGV0IGxpbWl0ZWRfb25vcmllbnRhdGlvbmNoYW5nZXMgP2VsYXBzZWRfdGltZSB0ID1cbiAgbGltaXRlZF9sb29wXG4gICAgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9ub3JpZW50YXRpb25jaGFuZ2UgKCkpXG4gICAgP2VsYXBzZWRfdGltZVxuICAgICgpXG4gICAgdFxuXG5sZXQgbGltaXRlZF9vbm9yaWVudGF0aW9uY2hhbmdlc19vcl9vbnJlc2l6ZXMgP2VsYXBzZWRfdGltZSB0ID1cbiAgbGltaXRlZF9sb29wXG4gICAgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9ub3JpZW50YXRpb25jaGFuZ2Vfb3Jfb25yZXNpemUgKCkpXG4gICAgP2VsYXBzZWRfdGltZVxuICAgICgpXG4gICAgdFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuIEpzXG5vcGVuIERvbVxub3BlbiBGaWxlXG5vcGVuISBJbXBvcnRcblxubGV0IHJlYWRfd2l0aF9maWxlcmVhZGVyIChmaWxlUmVhZGVyIDogZmlsZVJlYWRlciB0IGNvbnN0cikga2luZCBmaWxlID1cbiAgbGV0IHJlYWRlciA9IG5ldyVqcyBmaWxlUmVhZGVyIGluXG4gIGxldCByZXMsIHcgPSBMd3QudGFzayAoKSBpblxuICByZWFkZXIjIy5vbmxvYWRlbmQgOj1cbiAgICBoYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICBpZiByZWFkZXIjIy5yZWFkeVN0YXRlID09IERPTkVcbiAgICAgICAgdGhlblxuICAgICAgICAgIEx3dC53YWtldXBcbiAgICAgICAgICAgIHdcbiAgICAgICAgICAgIChtYXRjaCBPcHQudG9fb3B0aW9uIChDb2VyY2VUby5zdHJpbmcgcmVhZGVyIyMucmVzdWx0KSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlICgqIGNhbid0IGhhcHBlbjogY2FsbGVkIHdpdGggZ29vZCByZWFkQXNfICopXG4gICAgICAgICAgICB8IFNvbWUgcyAtPiBzKVxuICAgICAgICBlbHNlICgpO1xuICAgICAgICAoKiBDQ0MgVE9ETzogaGFuZGxlIGVycm9ycyAqKVxuICAgICAgICBKcy5fZmFsc2UpO1xuICBMd3Qub25fY2FuY2VsIHJlcyAoZnVuICgpIC0+IHJlYWRlciMjYWJvcnQpO1xuICAobWF0Y2gga2luZCB3aXRoXG4gIHwgYEJpbmFyeVN0cmluZyAtPiByZWFkZXIjI3JlYWRBc0JpbmFyeVN0cmluZyBmaWxlXG4gIHwgYFRleHQgLT4gcmVhZGVyIyNyZWFkQXNUZXh0IGZpbGVcbiAgfCBgVGV4dF93aXRoRW5jb2RpbmcgZSAtPiByZWFkZXIjI3JlYWRBc1RleHRfd2l0aEVuY29kaW5nIGZpbGUgZVxuICB8IGBEYXRhVVJMIC0+IHJlYWRlciMjcmVhZEFzRGF0YVVSTCBmaWxlKTtcbiAgcmVzXG5cbmxldCByZWFkZXIga2luZCBmaWxlID0gcmVhZF93aXRoX2ZpbGVyZWFkZXIgZmlsZVJlYWRlciBraW5kIGZpbGVcblxubGV0IHJlYWRBc0JpbmFyeVN0cmluZyBmaWxlID0gcmVhZGVyIGBCaW5hcnlTdHJpbmcgZmlsZVxuXG5sZXQgcmVhZEFzVGV4dCBmaWxlID0gcmVhZGVyIGBUZXh0IGZpbGVcblxubGV0IHJlYWRBc1RleHRfd2l0aEVuY29kaW5nIGZpbGUgZSA9IHJlYWRlciAoYFRleHRfd2l0aEVuY29kaW5nIGUpIGZpbGVcblxubGV0IHJlYWRBc0RhdGFVUkwgZmlsZSA9IHJlYWRlciBgRGF0YVVSTCBmaWxlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE3IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgWG1sSHR0cFJlcXVlc3QgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBKc19vZl9vY2FtbC5YbWxIdHRwUmVxdWVzdFxuICBpbmNsdWRlIEx3dF94bWxIdHRwUmVxdWVzdFxuZW5kXG5cbm1vZHVsZSBGaWxlID0gc3RydWN0XG4gIGluY2x1ZGUgSnNfb2Zfb2NhbWwuRmlsZVxuICBpbmNsdWRlIEx3dF9maWxlXG5lbmRcblxubW9kdWxlIEpzb25wID0gTHd0X2pzb25wXG5tb2R1bGUgTHd0X2pzID0gTHd0X2pzXG5tb2R1bGUgTHd0X2pzX2V2ZW50cyA9IEx3dF9qc19ldmVudHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIG5lZWQgdG8gc3BlY2lmeSBtZXNzYWdlcyB3aGVyZSB0aGVyZSBpcyBhbiBlcnJvciAqKVxubGV0IHRvc3MgOiAnYSAnYi4gJ2EgLT4gJ2IgPVxuIGZ1biBlIC0+XG4gIGxldCAoKSA9XG4gICAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcInRvc3NcIikgW3wgSnMuVW5zYWZlLmluamVjdCBlIHxdXG4gIGluXG4gIGFzc2VydCBmYWxzZVxuXG5sZXQgaWQgdmFsdWUgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwiaWRcIikgW3wgSnMuVW5zYWZlLmluamVjdCB2YWx1ZSB8XVxuXG5sZXQgZGVidWcgdmFsdWUgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwiZGVidWdcIikgW3wgSnMuVW5zYWZlLmluamVjdCB2YWx1ZSB8XVxuXG5sZXQgaW5mbyB2YWx1ZSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJpbmZvXCIpIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWUgfF1cblxubGV0IG5vdGljZSB2YWx1ZSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJub3RpY2VcIikgW3wgSnMuVW5zYWZlLmluamVjdCB2YWx1ZSB8XVxuXG5sZXQgd2FybmluZyB2YWx1ZSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJ3YXJuaW5nXCIpIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWUgfF1cblxubGV0IGVycm9yIHZhbHVlID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImVycm9yXCIpIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWUgfF1cblxubGV0IGZhdGFsIHZhbHVlID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImZhdGFsXCIpIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWUgfF1cblxubGV0IGpxdWVyeV9vbiAoc2VsZWN0b3IgOiBzdHJpbmcpIChldmVudCA6IHN0cmluZykgaGFuZGxlciA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcImpxdWVyeU9uXCIpXG4gICAgW3xcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBzZWxlY3Rvcik7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgZXZlbnQpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCBoYW5kbGVyO1xuICAgIHxdXG5cbmxldCBvcHRpb25fc3RyaW5nIChpZCA6IHN0cmluZyBvcHRpb24pID1cbiAgbWF0Y2ggaWQgd2l0aFxuICB8IFNvbWUgaWQgLT4gSnMuc29tZSAoSnMuc3RyaW5nIGlkKVxuICB8IE5vbmUgLT4gSnMubnVsbFxuXG5sZXQgcGxvdFBORyA/KHBsb3RTdHlsZUlkIDogc3RyaW5nIG9wdGlvbikgKHBsb3REaXZJZCA6IHN0cmluZykgKHRpdGxlIDogc3RyaW5nKVxuICAgIChwbG90TmFtZSA6IHN0cmluZykgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJwbG90UE5HXCIpXG4gICAgW3xcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBwbG90RGl2SWQpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHRpdGxlKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBwbG90TmFtZSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChvcHRpb25fc3RyaW5nIHBsb3RTdHlsZUlkKTtcbiAgICB8XVxuXG5sZXQgcGxvdFNWRyA/KHBsb3RTdHlsZUlkIDogc3RyaW5nIG9wdGlvbikgKHBsb3REaXZJZCA6IHN0cmluZykgKHRpdGxlIDogc3RyaW5nKVxuICAgIChwbG90TmFtZSA6IHN0cmluZykgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJwbG90U1ZHXCIpXG4gICAgW3xcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBwbG90RGl2SWQpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHRpdGxlKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBwbG90TmFtZSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChvcHRpb25fc3RyaW5nIHBsb3RTdHlsZUlkKTtcbiAgICB8XVxuXG5sZXQgc2F2ZUZpbGUgfihkYXRhIDogJ2EgSnMudCkgfihtaW1lIDogc3RyaW5nKSB+KGZpbGVuYW1lIDogc3RyaW5nKSA6IHVuaXQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJzYXZlRmlsZVwiKVxuICAgIFt8XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IGRhdGE7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgbWltZSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgZmlsZW5hbWUpO1xuICAgIHxdXG5cbnR5cGUgbWV0aCA9IFsgYERFTEVURSB8IGBHRVQgfCBgSEVBRCB8IGBPUFRJT05TIHwgYFBBVENIIHwgYFBPU1QgfCBgUFVUIF1cblxubGV0IG1ldGhvZF90b19zdHJpbmcgOiBtZXRoIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgYERFTEVURSAtPiBcIkRFTEVURVwiXG4gIHwgYEdFVCAtPiBcIkdFVFwiXG4gIHwgYEhFQUQgLT4gXCJIRUFEXCJcbiAgfCBgT1BUSU9OUyAtPiBcIk9QVElPTlNcIlxuICB8IGBQQVRDSCAtPiBcIlBBVENIXCJcbiAgfCBgUE9TVCAtPiBcIlBPU1RcIlxuICB8IGBQVVQgLT4gXCJQVVRcIlxuXG5sZXQgYWpheF9yZXF1ZXN0ID8odGltZW91dCA6IGZsb2F0IG9wdGlvbikgfih1cmwgOiBzdHJpbmcpIH4obWV0aCA6IG1ldGgpXG4gICAgPyhkYXRhIDogc3RyaW5nIG9wdGlvbikgfihoYW5kbGVyIDogaW50IC0+IHN0cmluZyAtPiB1bml0KSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcImFqYXhSZXF1ZXN0XCIpXG4gICAgW3xcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB1cmwpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIChtZXRob2RfdG9fc3RyaW5nIG1ldGgpKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3RcbiAgICAgICAgKEpzLk9wdC5vcHRpb25cbiAgICAgICAgICAgKG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBTb21lIChKcy5zdHJpbmcgZGF0YSkpKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3RcbiAgICAgICAgKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBzdGF0dXMgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgZGVidWdcbiAgICAgICAgICAgICAgICAgKEpzLnN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAoXCJyZXF1ZXN0IFwiIF4gdXJsIF4gXCIgYW5zd2VyOiBcIiBeIHN0cmluZ19vZl9pbnQgc3RhdHVzKSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCAoKSA9IGRlYnVnIHJlc3BvbnNlIGluXG4gICAgICAgICAgICAgaGFuZGxlciBzdGF0dXMgKEpzLnRvX3N0cmluZyByZXNwb25zZSkpKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3RcbiAgICAgICAgKEpzLk9wdC5vcHRpb25cbiAgICAgICAgICAgKG1hdGNoIHRpbWVvdXQgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICB8IFNvbWUgdGltZW91dCAtPiBTb21lIHRpbWVvdXQpKTtcbiAgICB8XVxuXG4oKiBUaGlzIGlzIHRvIGhhbmRsZSBlcnJvcnMgYmVpbmcgbG9zdCBpbiBhc3luY3NcbiAgIHNvIHRoZXJlIHNob3VsZCBiZSBubyBvdGhlciBhc3luYyBjYWxscyBpbiB0aGVcbiAgIGNvZGUuXG4qKVxubGV0IGFzeW5jIGxvYyAodGFzayA6IHVuaXQgLT4gJ2EgTHd0LnQpIDogdW5pdCA9XG4gIEpzX29mX29jYW1sX2x3dC5Md3RfanNfZXZlbnRzLmFzeW5jIChmdW4gKCkgLT5cbiAgICAgIEx3dC5jYXRjaCB0YXNrIChmdW4gZXhuIC0+XG4gICAgICAgICAgbGV0ICgpID0gaW5mbyAoSnMuc3RyaW5nIChsb2MgXiBQcmludGV4Yy50b19zdHJpbmcgZXhuKSkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBkZWJ1ZyAoSnMuc3RyaW5nIChQcmludGV4Yy5nZXRfYmFja3RyYWNlICgpKSkgaW5cbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpKVxuXG5sZXQgZ3VpZCAoKSA6IHN0cmluZyA9XG4gIEpzLnRvX3N0cmluZyAoSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImd1aWRcIikgW3x8XSlcblxubGV0IG1vZGFsIH4oaWQgOiBzdHJpbmcpIH4oYWN0aW9uIDogc3RyaW5nKSA6IHVuaXQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJtb2RhbFwiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBpZCk7IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBhY3Rpb24pIHxdXG5cbmxldCBlbGVtZW50X2RhdGEgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIChsYWJlbCA6IHN0cmluZykgOlxuICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcImVsZW1lbnREYXRhXCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCBlbGVtZW50OyBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgbGFiZWwpIHxdXG5cbmxldCBjcmVhdGVfc29ydCAoaWQgOiBzdHJpbmcpIChoYW5kbGVyIDogRG9tX2h0bWwuZXZlbnQgSnMudCAtPiAnYiAtPiB1bml0KSA6XG4gICAgdW5pdCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcImNyZWF0ZVNvcnRcIilcbiAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgaWQpOyBKcy5VbnNhZmUuaW5qZWN0IGhhbmRsZXIgfF1cblxubGV0IGNoaWxkcmVuX3ZhbHVlIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSAoc2VsZWN0b3IgOiBzdHJpbmcpXG4gICAgKG1hcCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCAtPiAnYSkgOiAnYSBsaXN0ID1cbiAgQXJyYXkudG9fbGlzdFxuICAgIChKcy50b19hcnJheVxuICAgICAgIChKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAgICAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJjaGlsZHJlblZhbHVlXCIpXG4gICAgICAgICAgW3xcbiAgICAgICAgICAgIEpzLlVuc2FmZS5pbmplY3QgZWxlbWVudDtcbiAgICAgICAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBzZWxlY3Rvcik7XG4gICAgICAgICAgICBKcy5VbnNhZmUuaW5qZWN0IG1hcDtcbiAgICAgICAgICB8XSkpXG5cbmxldCBoaWRlX2NvZGVtaXJyb3IgKCkgOiB1bml0ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImhpZGVDb2RlTWlycm9yXCIpIFt8fF1cblxubGV0IHNob3dfY29kZW1pcnJvciAoKSA6IHVuaXQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwic2hvd0NvZGVNaXJyb3JcIikgW3x8XVxuIiwibGV0IHJldl9zcGxpdCBsID1cbiAgbGV0IHJlYyBpbm5lciB4cyB5cyA9IGZ1bmN0aW9uXG4gICAgfCAoeCwgeSkgOjogeHlzIC0+XG4gICAgICAgaW5uZXIgKHg6OnhzKSAoeTo6eXMpIHh5c1xuICAgIHwgW10gLT4gKHhzLCB5cylcbiAgaW5cbiAgaW5uZXIgW10gW10gbFxuXG50eXBlIHdyYXAgPSBbXG4gIHwgYFdyYXBfYXRvbXNcbiAgfCBgQWx3YXlzX3dyYXBcbiAgfCBgTmV2ZXJfd3JhcFxuICB8IGBGb3JjZV9icmVha3NcbiAgfCBgRm9yY2VfYnJlYWtzX3JlY1xuICB8IGBOb19icmVha3Ncbl1cblxudHlwZSBsYWJlbF9icmVhayA9IFtcbiAgfCBgQXV0b1xuICB8IGBBbHdheXNcbiAgfCBgQWx3YXlzX3JlY1xuICB8IGBOZXZlclxuXVxuXG50eXBlIHN0eWxlX25hbWUgPSBzdHJpbmdcbnR5cGUgc3R5bGUgPSB7XG4gIHRhZ19vcGVuIDogc3RyaW5nO1xuICB0YWdfY2xvc2UgOiBzdHJpbmdcbn1cblxudHlwZSBhdG9tX3BhcmFtID0ge1xuICBhdG9tX3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG59XG5cbmxldCBhdG9tID0ge1xuICBhdG9tX3N0eWxlID0gTm9uZVxufVxuXG50eXBlIGxpc3RfcGFyYW0gPSB7XG4gIHNwYWNlX2FmdGVyX29wZW5pbmcgOiBib29sO1xuICBzcGFjZV9hZnRlcl9zZXBhcmF0b3IgOiBib29sO1xuICBzcGFjZV9iZWZvcmVfc2VwYXJhdG9yIDogYm9vbDtcbiAgc2VwYXJhdG9yc19zdGlja19sZWZ0IDogYm9vbDtcbiAgc3BhY2VfYmVmb3JlX2Nsb3NpbmcgOiBib29sO1xuICBzdGlja190b19sYWJlbCA6IGJvb2w7XG4gIGFsaWduX2Nsb3NpbmcgOiBib29sO1xuICB3cmFwX2JvZHkgOiB3cmFwO1xuICBpbmRlbnRfYm9keSA6IGludDtcbiAgbGlzdF9zdHlsZSA6IHN0eWxlX25hbWUgb3B0aW9uO1xuICBvcGVuaW5nX3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG4gIGJvZHlfc3R5bGUgOiBzdHlsZV9uYW1lIG9wdGlvbjtcbiAgc2VwYXJhdG9yX3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG4gIGNsb3Npbmdfc3R5bGUgOiBzdHlsZV9uYW1lIG9wdGlvbjtcbn1cblxubGV0IGxpc3QgPSB7XG4gIHNwYWNlX2FmdGVyX29wZW5pbmcgPSB0cnVlO1xuICBzcGFjZV9hZnRlcl9zZXBhcmF0b3IgPSB0cnVlO1xuICBzcGFjZV9iZWZvcmVfc2VwYXJhdG9yID0gZmFsc2U7XG4gIHNlcGFyYXRvcnNfc3RpY2tfbGVmdCA9IHRydWU7XG4gIHNwYWNlX2JlZm9yZV9jbG9zaW5nID0gdHJ1ZTtcbiAgc3RpY2tfdG9fbGFiZWwgPSB0cnVlO1xuICBhbGlnbl9jbG9zaW5nID0gdHJ1ZTtcbiAgd3JhcF9ib2R5ID0gYFdyYXBfYXRvbXM7XG4gIGluZGVudF9ib2R5ID0gMjtcbiAgbGlzdF9zdHlsZSA9IE5vbmU7XG4gIG9wZW5pbmdfc3R5bGUgPSBOb25lO1xuICBib2R5X3N0eWxlID0gTm9uZTtcbiAgc2VwYXJhdG9yX3N0eWxlID0gTm9uZTtcbiAgY2xvc2luZ19zdHlsZSA9IE5vbmU7XG59XG5cbnR5cGUgbGFiZWxfcGFyYW0gPSB7XG4gIGxhYmVsX2JyZWFrOiBsYWJlbF9icmVhaztcbiAgc3BhY2VfYWZ0ZXJfbGFiZWwgOiBib29sO1xuICBpbmRlbnRfYWZ0ZXJfbGFiZWwgOiBpbnQ7XG4gIGxhYmVsX3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG59XG5cbmxldCBsYWJlbCA9IHtcbiAgbGFiZWxfYnJlYWsgPSBgQXV0bztcbiAgc3BhY2VfYWZ0ZXJfbGFiZWwgPSB0cnVlO1xuICBpbmRlbnRfYWZ0ZXJfbGFiZWwgPSAyO1xuICBsYWJlbF9zdHlsZSA9IE5vbmU7XG59XG5cbnR5cGUgdCA9XG4gICAgQXRvbSBvZiBzdHJpbmcgKiBhdG9tX3BhcmFtXG4gIHwgTGlzdCBvZiAoc3RyaW5nICogc3RyaW5nICogc3RyaW5nICogbGlzdF9wYXJhbSkgKiB0IGxpc3RcbiAgfCBMYWJlbCBvZiAodCAqIGxhYmVsX3BhcmFtKSAqIHRcbiAgfCBDdXN0b20gb2YgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gdW5pdClcblxudHlwZSBlc2NhcGUgPVxuICAgIFsgYE5vbmVcbiAgICB8IGBFc2NhcGUgb2ZcbiAgICAgICAgKChzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0KSAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0KVxuICAgIHwgYEVzY2FwZV9zdHJpbmcgb2YgKHN0cmluZyAtPiBzdHJpbmcpIF1cblxudHlwZSBzdHlsZXMgPSAoc3R5bGVfbmFtZSAqIHN0eWxlKSBsaXN0XG5cbigqXG4gICBUcmFuc2Zvcm0gYSB0cmVlIHN0YXJ0aW5nIGZyb20gdGhlIGxlYXZlcywgcHJvcGFnYXRpbmcgYW5kIG1lcmdpbmdcbiAgIGFjY3VtdWxhdG9ycyB1bnRpbCByZWFjaGluZyB0aGUgcm9vdC5cbiopXG5sZXQgcHJvcGFnYXRlX2Zyb21fbGVhZl90b19yb290XG4gIH5pbml0X2FjYyAgKCogY3JlYXRlIGluaXRpYWwgYWNjdW11bGF0b3IgZm9yIGEgbGVhZiAqKVxuICB+bWVyZ2VfYWNjICgqIG1lcmdlIHR3byBhY2N1bXVsYXRvcnMgY29taW5nIGZyb20gY2hpbGQgbm9kZXMgKilcbiAgfm1hcF9ub2RlICAoKiAobm9kZSwgYWNjKSAtPiAobm9kZSwgYWNjKSAqKVxuICB4ID1cblxuICBsZXQgcmVjIGF1eCB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEF0b20gXyAtPlxuICAgICAgICBsZXQgYWNjID0gaW5pdF9hY2MgeCBpblxuICAgICAgICBtYXBfbm9kZSB4IGFjY1xuICAgIHwgTGlzdCAocGFyYW0sIGNoaWxkcmVuKSAtPlxuICAgICAgICBsZXQgbmV3X2NoaWxkcmVuLCBhY2NzID0gcmV2X3NwbGl0IChMaXN0LnJldl9tYXAgYXV4IGNoaWxkcmVuKSBpblxuICAgICAgICBsZXQgYWNjID0gTGlzdC5mb2xkX2xlZnQgbWVyZ2VfYWNjIChpbml0X2FjYyB4KSBhY2NzIGluXG4gICAgICAgIG1hcF9ub2RlIChMaXN0IChwYXJhbSwgbmV3X2NoaWxkcmVuKSkgYWNjXG4gICAgfCBMYWJlbCAoKHgxLCBwYXJhbSksIHgyKSAtPlxuICAgICAgICBsZXQgYWNjMCA9IGluaXRfYWNjIHggaW5cbiAgICAgICAgbGV0IG5ld194MSwgYWNjMSA9IGF1eCB4MSBpblxuICAgICAgICBsZXQgbmV3X3gyLCBhY2MyID0gYXV4IHgyIGluXG4gICAgICAgIGxldCBhY2MgPSBtZXJnZV9hY2MgKG1lcmdlX2FjYyBhY2MwIGFjYzEpIGFjYzIgaW5cbiAgICAgICAgbWFwX25vZGUgKExhYmVsICgobmV3X3gxLCBwYXJhbSksIG5ld194MikpIGFjY1xuICAgIHwgQ3VzdG9tIF8gLT5cbiAgICAgICAgbGV0IGFjYyA9IGluaXRfYWNjIHggaW5cbiAgICAgICAgbWFwX25vZGUgeCBhY2NcbiAgaW5cbiAgYXV4IHhcblxuKCpcbiAgIENvbnZlcnQgd3JhcHBhYmxlIGxpc3RzIGludG8gdmVydGljYWwgbGlzdHMgaWYgYW55IG9mIHRoZWlyIGRlc2NlbmRhbnRzXG4gICBoYXMgdGhlIGF0dHJpYnV0ZSB3cmFwX2JvZHkgPSBgRm9yY2VfYnJlYWtzX3JlYy5cbiopXG5sZXQgcHJvcGFnYXRlX2ZvcmNlZF9icmVha3MgeCA9XG4gICgqIGFjYyA9IHdoZXRoZXIgdG8gZm9yY2UgYnJlYWtzIGluIHdyYXBwYWJsZSBsaXN0cyBvciBsYWJlbHMgKilcbiAgbGV0IGluaXRfYWNjID0gZnVuY3Rpb25cbiAgICB8IExpc3QgKChfLCBfLCBfLCB7IHdyYXBfYm9keSA9IGBGb3JjZV9icmVha3NfcmVjOyBfIH0pLCBfKVxuICAgIHwgTGFiZWwgKChfLCB7IGxhYmVsX2JyZWFrID0gYEFsd2F5c19yZWM7IF8gfSksIF8pIC0+IHRydWVcbiAgICB8IEF0b20gX1xuICAgIHwgTGFiZWwgX1xuICAgIHwgQ3VzdG9tIF9cbiAgICB8IExpc3QgXyAtPiBmYWxzZVxuICBpblxuICBsZXQgbWVyZ2VfYWNjIGZvcmNlX2JyZWFrczEgZm9yY2VfYnJlYWtzMiA9XG4gICAgZm9yY2VfYnJlYWtzMSB8fCBmb3JjZV9icmVha3MyXG4gIGluXG4gIGxldCBtYXBfbm9kZSB4IGZvcmNlX2JyZWFrcyA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBMaXN0ICgoXywgXywgXywgeyB3cmFwX2JvZHkgPSBgRm9yY2VfYnJlYWtzX3JlYzsgXyB9KSwgXykgLT4geCwgdHJ1ZVxuICAgIHwgTGlzdCAoKF8sIF8sIF8sIHsgd3JhcF9ib2R5ID0gYEZvcmNlX2JyZWFrczsgXyB9KSwgXykgLT4geCwgZm9yY2VfYnJlYWtzXG5cbiAgICB8IExpc3QgKChvcCwgc2VwLCBjbCwgKHsgd3JhcF9ib2R5ID0gKGBXcmFwX2F0b21zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYE5ldmVyX3dyYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgQWx3YXlzX3dyYXApOyBfIH0gYXMgcCkpLFxuICAgICAgICAgICAgY2hpbGRyZW4pIC0+XG4gICAgICAgIGlmIGZvcmNlX2JyZWFrcyB0aGVuXG4gICAgICAgICAgbGV0IHAgPSB7IHAgd2l0aCB3cmFwX2JvZHkgPSBgRm9yY2VfYnJlYWtzIH0gaW5cbiAgICAgICAgICBMaXN0ICgob3AsIHNlcCwgY2wsIHApLCBjaGlsZHJlbiksIHRydWVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHgsIGZhbHNlXG5cbiAgICB8IExhYmVsICgoYSwgKHsgbGFiZWxfYnJlYWsgPSBgQXV0bzsgXyB9IGFzIGxwKSksIGIpIC0+XG4gICAgICAgIGlmIGZvcmNlX2JyZWFrcyB0aGVuXG4gICAgICAgICAgbGV0IGxwID0geyBscCB3aXRoIGxhYmVsX2JyZWFrID0gYEFsd2F5cyB9IGluXG4gICAgICAgICAgTGFiZWwgKChhLCBscCksIGIpLCB0cnVlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB4LCBmYWxzZVxuXG4gICAgfCBMaXN0ICgoXywgXywgXywgeyB3cmFwX2JvZHkgPSBgTm9fYnJlYWtzOyBfIH0pLCBfKVxuICAgIHwgTGFiZWwgKChfLCB7IGxhYmVsX2JyZWFrID0gKGBBbHdheXMgfCBgQWx3YXlzX3JlYyB8IGBOZXZlcik7IF8gfSksIF8pXG4gICAgfCBBdG9tIF9cbiAgICB8IEN1c3RvbSBfIC0+IHgsIGZvcmNlX2JyZWFrc1xuICBpblxuICBsZXQgbmV3X3gsIF9mb3JjZWRfYnJlYWtzID1cbiAgICBwcm9wYWdhdGVfZnJvbV9sZWFmX3RvX3Jvb3RcbiAgICAgIH5pbml0X2FjY1xuICAgICAgfm1lcmdlX2FjY1xuICAgICAgfm1hcF9ub2RlXG4gICAgICB4XG4gIGluXG4gIG5ld194XG5cbm1vZHVsZSBQcmV0dHkgPVxuc3RydWN0XG4gICgqXG4gICAgIFJld3JpdGUgdGhlIHRyZWUgdG8gYmUgcHJpbnRlZC5cbiAgICAgQ3VycmVudGx5LCB0aGlzIGlzIHVzZWQgb25seSB0byBoYW5kbGUgYEZvcmNlX2JyZWFrc19yZWMuXG4gICopXG4gIGxldCByZXdyaXRlIHggPSBwcm9wYWdhdGVfZm9yY2VkX2JyZWFrcyB4XG5cbiAgKCpcbiAgICBSZWxpZXMgb24gdGhlIGZhY3QgdGhhdCBtYXJrX29wZW5fdGFnIGFuZCBtYXJrX2Nsb3NlX3RhZ1xuICAgIGFyZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSBjYWxsaW5nIHBwX291dHB1dF9zdHJpbmcgb25jZS5cbiAgICBJdCdzIGEgcmVhc29uYWJsZSBhc3N1bXB0aW9uIGFsdGhvdWdoIG5vdCBndWFyYW50ZWVkIGJ5IHRoZVxuICAgIGRvY3VtZW50YXRpb24gb2YgdGhlIEZvcm1hdCBtb2R1bGUuXG4gICopXG4gIGxldCBzZXRfZXNjYXBlIGZtdCBlc2NhcGUgPVxuICAgIGxldCBwcmludDAsIGZsdXNoMCA9IEZvcm1hdC5wcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgZm10ICgpIGluXG4gICAgbGV0IHRhZ2YwID0gRm9ybWF0LnBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgZm10ICgpIGluXG5cbiAgICBsZXQgaXNfdGFnID0gcmVmIGZhbHNlIGluXG5cbiAgICBsZXQgbW90IHRhZyA9XG4gICAgICBpc190YWcgOj0gdHJ1ZTtcbiAgICAgIHRhZ2YwLm1hcmtfb3Blbl9zdGFnIHRhZ1xuICAgIGluXG5cbiAgICBsZXQgbWN0IHRhZyA9XG4gICAgICBpc190YWcgOj0gdHJ1ZTtcbiAgICAgIHRhZ2YwLm1hcmtfY2xvc2Vfc3RhZyB0YWdcbiAgICBpblxuXG4gICAgbGV0IHByaW50IHMgcCBuID1cbiAgICAgIGlmICFpc190YWcgdGhlblxuICAgICAgICAocHJpbnQwIHMgcCBuO1xuICAgICAgICAgaXNfdGFnIDo9IGZhbHNlKVxuICAgICAgZWxzZVxuICAgICAgICBlc2NhcGUgcHJpbnQwIHMgcCBuXG4gICAgaW5cblxuICAgIGxldCB0YWdmID0ge1xuICAgICAgdGFnZjAgd2l0aFxuICAgICAgICBtYXJrX29wZW5fc3RhZyA9IG1vdDtcbiAgICAgICAgbWFya19jbG9zZV9zdGFnID0gbWN0XG4gICAgfVxuICAgIGluXG4gICAgRm9ybWF0LnBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBmbXQgcHJpbnQgZmx1c2gwO1xuICAgIEZvcm1hdC5wcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIGZtdCB0YWdmXG5cblxuICBsZXQgc2V0X2VzY2FwZV9zdHJpbmcgZm10IGVzYyA9XG4gICAgbGV0IGVzY2FwZSBwcmludCBzIHAgbiA9XG4gICAgICBsZXQgczAgPSBTdHJpbmcuc3ViIHMgcCBuIGluXG4gICAgICBsZXQgczEgPSBlc2MgczAgaW5cbiAgICAgIHByaW50IHMxIDAgKFN0cmluZy5sZW5ndGggczEpXG4gICAgaW5cbiAgICBzZXRfZXNjYXBlIGZtdCBlc2NhcGVcblxuXG4gIGxldCBkZWZpbmVfc3R5bGVzIGZtdCBlc2NhcGUgbCA9XG4gICAgaWYgbCA8PiBbXSB0aGVuIChcbiAgICAgIEZvcm1hdC5wcF9zZXRfdGFncyBmbXQgdHJ1ZTtcbiAgICAgIGxldCB0YmwxID0gSGFzaHRibC5jcmVhdGUgKDIgKiBMaXN0Lmxlbmd0aCBsKSBpblxuICAgICAgbGV0IHRibDIgPSBIYXNodGJsLmNyZWF0ZSAoMiAqIExpc3QubGVuZ3RoIGwpIGluXG4gICAgICBMaXN0Lml0ZXIgKFxuICAgICAgICBmdW4gKHN0eWxlX25hbWUsIHN0eWxlKSAtPlxuICAgICAgICAgIEhhc2h0YmwuYWRkIHRibDEgc3R5bGVfbmFtZSBzdHlsZS50YWdfb3BlbjtcbiAgICAgICAgICBIYXNodGJsLmFkZCB0YmwyIHN0eWxlX25hbWUgc3R5bGUudGFnX2Nsb3NlXG4gICAgICApIGw7XG4gICAgICBsZXQgbWFya19vcGVuX3RhZyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRm9ybWF0LlN0cmluZ190YWcgc3R5bGVfbmFtZSAtPlxuICAgICAgICAgICAgKHRyeSBIYXNodGJsLmZpbmQgdGJsMSBzdHlsZV9uYW1lXG4gICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gXCJcIilcbiAgICAgICAgfCBfIC0+IFwiXCJcbiAgICAgIGluXG4gICAgICBsZXQgbWFya19jbG9zZV90YWcgPSBmdW5jdGlvblxuICAgICAgICB8IEZvcm1hdC5TdHJpbmdfdGFnIHN0eWxlX25hbWUgLT5cbiAgICAgICAgICAgICh0cnkgSGFzaHRibC5maW5kIHRibDIgc3R5bGVfbmFtZVxuICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFwiXCIpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgXCJcIlxuICAgICAgaW5cblxuICAgICAgbGV0IHRhZ2YgPSB7XG4gICAgICAgIChGb3JtYXQucHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBmbXQgKCkpIHdpdGhcbiAgICAgICAgICBtYXJrX29wZW5fc3RhZyA9IG1hcmtfb3Blbl90YWc7XG4gICAgICAgICAgbWFya19jbG9zZV9zdGFnID0gbWFya19jbG9zZV90YWdcbiAgICAgIH1cbiAgICAgIGluXG4gICAgICBGb3JtYXQucHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBmbXQgdGFnZlxuICAgICk7XG5cbiAgICAobWF0Y2ggZXNjYXBlIHdpdGhcbiAgICAgICAgIGBOb25lIC0+ICgpXG4gICAgICAgfCBgRXNjYXBlIGVzYyAtPiBzZXRfZXNjYXBlIGZtdCBlc2NcbiAgICAgICB8IGBFc2NhcGVfc3RyaW5nIGVzYyAtPiBzZXRfZXNjYXBlX3N0cmluZyBmbXQgZXNjKVxuXG5cbiAgbGV0IHBwX29wZW5feGJveCBmbXQgcCBpbmRlbnQgPVxuICAgIG1hdGNoIHAud3JhcF9ib2R5IHdpdGhcbiAgICAgICAgYEFsd2F5c193cmFwXG4gICAgICB8IGBOZXZlcl93cmFwXG4gICAgICB8IGBXcmFwX2F0b21zIC0+IEZvcm1hdC5wcF9vcGVuX2h2Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYEZvcmNlX2JyZWFrc1xuICAgICAgfCBgRm9yY2VfYnJlYWtzX3JlYyAtPiBGb3JtYXQucHBfb3Blbl92Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYE5vX2JyZWFrcyAtPiBGb3JtYXQucHBfb3Blbl9oYm94IGZtdCAoKVxuXG4gIGxldCBleHRyYV9ib3ggcCBsID1cbiAgICBsZXQgd3JhcCA9XG4gICAgICBtYXRjaCBwLndyYXBfYm9keSB3aXRoXG4gICAgICAgICAgYEFsd2F5c193cmFwIC0+IHRydWVcbiAgICAgICAgfCBgTmV2ZXJfd3JhcFxuICAgICAgICB8IGBGb3JjZV9icmVha3NcbiAgICAgICAgfCBgRm9yY2VfYnJlYWtzX3JlY1xuICAgICAgICB8IGBOb19icmVha3MgLT4gZmFsc2VcbiAgICAgICAgfCBgV3JhcF9hdG9tcyAtPlxuICAgICAgICAgICAgTGlzdC5mb3JfYWxsIChmdW5jdGlvbiBBdG9tIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIGxcbiAgICBpblxuICAgIGlmIHdyYXAgdGhlblxuICAgICAgKChmdW4gZm10IC0+IEZvcm1hdC5wcF9vcGVuX2hvdmJveCBmbXQgMCksXG4gICAgICAgKGZ1biBmbXQgLT4gRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKCkpKVxuICAgIGVsc2VcbiAgICAgICgoZnVuIF8gLT4gKCkpLFxuICAgICAgIChmdW4gXyAtPiAoKSkpXG5cblxuICBsZXQgcHBfb3Blbl9ub25hbGlnbmVkX2JveCBmbXQgcCBpbmRlbnQgbCA9XG4gICAgbWF0Y2ggcC53cmFwX2JvZHkgd2l0aFxuICAgICAgICBgQWx3YXlzX3dyYXAgLT4gRm9ybWF0LnBwX29wZW5faG92Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYE5ldmVyX3dyYXAgLT4gRm9ybWF0LnBwX29wZW5faHZib3ggZm10IGluZGVudFxuICAgICAgfCBgV3JhcF9hdG9tcyAtPlxuICAgICAgICAgIGlmIExpc3QuZm9yX2FsbCAoZnVuY3Rpb24gQXRvbSBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSBsIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5wcF9vcGVuX2hvdmJveCBmbXQgaW5kZW50XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgRm9ybWF0LnBwX29wZW5faHZib3ggZm10IGluZGVudFxuICAgICAgfCBgRm9yY2VfYnJlYWtzXG4gICAgICB8IGBGb3JjZV9icmVha3NfcmVjIC0+IEZvcm1hdC5wcF9vcGVuX3Zib3ggZm10IGluZGVudFxuICAgICAgfCBgTm9fYnJlYWtzIC0+IEZvcm1hdC5wcF9vcGVuX2hib3ggZm10ICgpXG5cblxuICBsZXQgb3Blbl90YWcgZm10ID0gZnVuY3Rpb25cbiAgICAgIE5vbmUgLT4gKClcbiAgICB8IFNvbWUgcyAtPiBGb3JtYXQucHBfb3Blbl9zdGFnIGZtdCAoRm9ybWF0LlN0cmluZ190YWcgcylcblxuICBsZXQgY2xvc2VfdGFnIGZtdCA9IGZ1bmN0aW9uXG4gICAgICBOb25lIC0+ICgpXG4gICAgfCBTb21lIF8gLT4gRm9ybWF0LnBwX2Nsb3NlX3N0YWcgZm10ICgpXG5cbiAgbGV0IHRhZ19zdHJpbmcgZm10IG8gcyA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgICAgIE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgc1xuICAgICAgfCBTb21lIHRhZyAtPlxuICAgICAgICAgIEZvcm1hdC5wcF9vcGVuX3N0YWcgZm10IChGb3JtYXQuU3RyaW5nX3RhZyB0YWcpO1xuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IHM7XG4gICAgICAgICAgRm9ybWF0LnBwX2Nsb3NlX3N0YWcgZm10ICgpXG5cbiAgbGV0IHJlYyBmcHJpbnRfdCBmbXQgPSBmdW5jdGlvblxuICAgICAgQXRvbSAocywgcCkgLT5cbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5hdG9tX3N0eWxlIHM7XG5cbiAgICB8IExpc3QgKChfLCBfLCBfLCBwKSBhcyBwYXJhbSwgbCkgLT5cbiAgICAgICAgb3Blbl90YWcgZm10IHAubGlzdF9zdHlsZTtcbiAgICAgICAgaWYgcC5hbGlnbl9jbG9zaW5nIHRoZW5cbiAgICAgICAgICBmcHJpbnRfbGlzdCBmbXQgTm9uZSBwYXJhbSBsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmcHJpbnRfbGlzdDIgZm10IHBhcmFtIGw7XG4gICAgICAgIGNsb3NlX3RhZyBmbXQgcC5saXN0X3N0eWxlXG5cbiAgICB8IExhYmVsIChsYWJlbCwgeCkgLT4gZnByaW50X3BhaXIgZm10IGxhYmVsIHhcbiAgICB8IEN1c3RvbSBmIC0+IGYgZm10XG5cbiAgYW5kIGZwcmludF9saXN0X2JvZHlfc3RpY2tfbGVmdCBmbXQgcCBzZXAgaGQgdGwgPVxuICAgIG9wZW5fdGFnIGZtdCBwLmJvZHlfc3R5bGU7XG4gICAgZnByaW50X3QgZm10IGhkO1xuICAgIExpc3QuaXRlciAoXG4gICAgICBmdW4geCAtPlxuICAgICAgICBpZiBwLnNwYWNlX2JlZm9yZV9zZXBhcmF0b3IgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiIFwiO1xuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLnNlcGFyYXRvcl9zdHlsZSBzZXA7XG4gICAgICAgIGlmIHAuc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZm10ICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfY3V0IGZtdCAoKTtcbiAgICAgICAgZnByaW50X3QgZm10IHhcbiAgICApIHRsO1xuICAgIGNsb3NlX3RhZyBmbXQgcC5ib2R5X3N0eWxlXG5cbiAgYW5kIGZwcmludF9saXN0X2JvZHlfc3RpY2tfcmlnaHQgZm10IHAgc2VwIGhkIHRsID1cbiAgICBvcGVuX3RhZyBmbXQgcC5ib2R5X3N0eWxlO1xuICAgIGZwcmludF90IGZtdCBoZDtcbiAgICBMaXN0Lml0ZXIgKFxuICAgICAgZnVuIHggLT5cbiAgICAgICAgaWYgcC5zcGFjZV9iZWZvcmVfc2VwYXJhdG9yIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZm10ICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfY3V0IGZtdCAoKTtcbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5zZXBhcmF0b3Jfc3R5bGUgc2VwO1xuICAgICAgICBpZiBwLnNwYWNlX2FmdGVyX3NlcGFyYXRvciB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG4gICAgICAgIGZwcmludF90IGZtdCB4XG4gICAgKSB0bDtcbiAgICBjbG9zZV90YWcgZm10IHAuYm9keV9zdHlsZVxuXG4gIGFuZCBmcHJpbnRfb3B0X2xhYmVsIGZtdCA9IGZ1bmN0aW9uXG4gICAgICBOb25lIC0+ICgpXG4gICAgfCBTb21lIChsYWIsIGxwKSAtPlxuICAgICAgICBvcGVuX3RhZyBmbXQgbHAubGFiZWxfc3R5bGU7XG4gICAgICAgIGZwcmludF90IGZtdCBsYWI7XG4gICAgICAgIGNsb3NlX3RhZyBmbXQgbHAubGFiZWxfc3R5bGU7XG4gICAgICAgIGlmIGxwLnNwYWNlX2FmdGVyX2xhYmVsIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIlxuXG4gICgqIEVpdGhlciBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGxpc3QgKilcbiAgYW5kIGZwcmludF9saXN0IGZtdCBsYWJlbCAoKG9wLCBfc2VwLCBjbCwgcCkgYXMgcGFyYW0pID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+XG4gICAgICAgIGZwcmludF9vcHRfbGFiZWwgZm10IGxhYmVsO1xuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLm9wZW5pbmdfc3R5bGUgb3A7XG4gICAgICAgIGlmIHAuc3BhY2VfYWZ0ZXJfb3BlbmluZyB8fCBwLnNwYWNlX2JlZm9yZV9jbG9zaW5nIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIjtcbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5jbG9zaW5nX3N0eWxlIGNsXG5cbiAgICB8IGhkIDo6IHRsIGFzIGwgLT5cblxuICAgICAgICBpZiB0bCA9IFtdIHx8IHAuc2VwYXJhdG9yc19zdGlja19sZWZ0IHRoZW5cbiAgICAgICAgICBmcHJpbnRfbGlzdF9zdGlja19sZWZ0IGZtdCBsYWJlbCBwYXJhbSBoZCB0bCBsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmcHJpbnRfbGlzdF9zdGlja19yaWdodCBmbXQgbGFiZWwgcGFyYW0gaGQgdGwgbFxuXG5cbiAgYW5kIGZwcmludF9saXN0X3N0aWNrX2xlZnQgZm10IGxhYmVsIChvcCwgc2VwLCBjbCwgcCkgaGQgdGwgbCA9XG4gICAgbGV0IGluZGVudCA9IHAuaW5kZW50X2JvZHkgaW5cbiAgICBwcF9vcGVuX3hib3ggZm10IHAgaW5kZW50O1xuICAgIGZwcmludF9vcHRfbGFiZWwgZm10IGxhYmVsO1xuXG4gICAgdGFnX3N0cmluZyBmbXQgcC5vcGVuaW5nX3N0eWxlIG9wO1xuXG4gICAgaWYgcC5zcGFjZV9hZnRlcl9vcGVuaW5nIHRoZW5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zcGFjZSBmbXQgKClcbiAgICBlbHNlXG4gICAgICBGb3JtYXQucHBfcHJpbnRfY3V0IGZtdCAoKTtcblxuICAgIGxldCBvcGVuX2V4dHJhLCBjbG9zZV9leHRyYSA9IGV4dHJhX2JveCBwIGwgaW5cbiAgICBvcGVuX2V4dHJhIGZtdDtcbiAgICBmcHJpbnRfbGlzdF9ib2R5X3N0aWNrX2xlZnQgZm10IHAgc2VwIGhkIHRsO1xuICAgIGNsb3NlX2V4dHJhIGZtdDtcblxuICAgIGlmIHAuc3BhY2VfYmVmb3JlX2Nsb3NpbmcgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAxICgtaW5kZW50KVxuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMCAoLWluZGVudCk7XG4gICAgdGFnX3N0cmluZyBmbXQgcC5jbG9zaW5nX3N0eWxlIGNsO1xuICAgIEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpXG5cbiAgYW5kIGZwcmludF9saXN0X3N0aWNrX3JpZ2h0IGZtdCBsYWJlbCAob3AsIHNlcCwgY2wsIHApIGhkIHRsIGwgPVxuICAgIGxldCBiYXNlX2luZGVudCA9IHAuaW5kZW50X2JvZHkgaW5cbiAgICBsZXQgc2VwX2luZGVudCA9XG4gICAgICBTdHJpbmcubGVuZ3RoIHNlcCArIChpZiBwLnNwYWNlX2FmdGVyX3NlcGFyYXRvciB0aGVuIDEgZWxzZSAwKVxuICAgIGluXG4gICAgbGV0IGluZGVudCA9IGJhc2VfaW5kZW50ICsgc2VwX2luZGVudCBpblxuXG4gICAgcHBfb3Blbl94Ym94IGZtdCBwIGluZGVudDtcbiAgICBmcHJpbnRfb3B0X2xhYmVsIGZtdCBsYWJlbDtcblxuICAgIHRhZ19zdHJpbmcgZm10IHAub3BlbmluZ19zdHlsZSBvcDtcblxuICAgIGlmIHAuc3BhY2VfYWZ0ZXJfb3BlbmluZyB0aGVuXG4gICAgICBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZm10ICgpXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LnBwX3ByaW50X2N1dCBmbXQgKCk7XG5cbiAgICBsZXQgb3Blbl9leHRyYSwgY2xvc2VfZXh0cmEgPSBleHRyYV9ib3ggcCBsIGluXG4gICAgb3Blbl9leHRyYSBmbXQ7XG5cbiAgICBmcHJpbnRfdCBmbXQgaGQ7XG4gICAgTGlzdC5pdGVyIChcbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIGlmIHAuc3BhY2VfYmVmb3JlX3NlcGFyYXRvciB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAxICgtc2VwX2luZGVudClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMCAoLXNlcF9pbmRlbnQpO1xuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLnNlcGFyYXRvcl9zdHlsZSBzZXA7XG4gICAgICAgIGlmIHAuc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIjtcbiAgICAgICAgZnByaW50X3QgZm10IHhcbiAgICApIHRsO1xuXG4gICAgY2xvc2VfZXh0cmEgZm10O1xuXG4gICAgaWYgcC5zcGFjZV9iZWZvcmVfY2xvc2luZyB0aGVuXG4gICAgICBGb3JtYXQucHBfcHJpbnRfYnJlYWsgZm10IDEgKC1pbmRlbnQpXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAwICgtaW5kZW50KTtcbiAgICB0YWdfc3RyaW5nIGZtdCBwLmNsb3Npbmdfc3R5bGUgY2w7XG4gICAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKClcblxuXG5cbiAgKCogYWxpZ25fY2xvc2luZyA9IGZhbHNlICopXG4gIGFuZCBmcHJpbnRfbGlzdDIgZm10IChvcCwgc2VwLCBjbCwgcCkgPSBmdW5jdGlvblxuICAgICAgW10gLT5cbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5vcGVuaW5nX3N0eWxlIG9wO1xuICAgICAgICBpZiBwLnNwYWNlX2FmdGVyX29wZW5pbmcgfHwgcC5zcGFjZV9iZWZvcmVfY2xvc2luZyB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAuY2xvc2luZ19zdHlsZSBjbFxuXG4gICAgfCBoZCA6OiB0bCBhcyBsIC0+XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAub3BlbmluZ19zdHlsZSBvcDtcbiAgICAgICAgaWYgcC5zcGFjZV9hZnRlcl9vcGVuaW5nIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIjtcblxuICAgICAgICBwcF9vcGVuX25vbmFsaWduZWRfYm94IGZtdCBwIDAgbCA7XG4gICAgICAgIGlmIHAuc2VwYXJhdG9yc19zdGlja19sZWZ0IHRoZW5cbiAgICAgICAgICBmcHJpbnRfbGlzdF9ib2R5X3N0aWNrX2xlZnQgZm10IHAgc2VwIGhkIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmcHJpbnRfbGlzdF9ib2R5X3N0aWNrX3JpZ2h0IGZtdCBwIHNlcCBoZCB0bDtcbiAgICAgICAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKCk7XG5cbiAgICAgICAgaWYgcC5zcGFjZV9iZWZvcmVfY2xvc2luZyB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAuY2xvc2luZ19zdHlsZSBjbFxuXG5cbiAgKCogUHJpbnRpbmcgYSBsYWJlbDp2YWx1ZSBwYWlyLlxuXG4gICAgIFRoZSBvcGVuaW5nIGJyYWNrZXQgc3RheXMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUga2V5LCBubyBtYXR0ZXIgd2hhdCxcbiAgICAgYW5kIHRoZSBjbG9zaW5nIGJyYWNrZXQgaXMgZWl0aGVyIG9uIHRoZSBzYW1lIGxpbmVcbiAgICAgb3IgdmVydGljYWxseSBhbGlnbmVkIHdpdGggdGhlIGJlZ2lubmluZyBvZiB0aGUga2V5LlxuICAqKVxuICBhbmQgZnByaW50X3BhaXIgZm10ICgobGFiLCBscCkgYXMgbGFiZWwpIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgICBMaXN0ICgob3AsIHNlcCwgY2wsIHApLCBsKSB3aGVuIHAuc3RpY2tfdG9fbGFiZWwgJiYgcC5hbGlnbl9jbG9zaW5nIC0+XG4gICAgICAgICAgZnByaW50X2xpc3QgZm10IChTb21lIGxhYmVsKSAob3AsIHNlcCwgY2wsIHApIGxcblxuICAgICAgfCBfIC0+XG4gICAgICAgICAgbGV0IGluZGVudCA9IGxwLmluZGVudF9hZnRlcl9sYWJlbCBpblxuICAgICAgICAgIEZvcm1hdC5wcF9vcGVuX2h2Ym94IGZtdCAwO1xuXG4gICAgICAgICAgb3Blbl90YWcgZm10IGxwLmxhYmVsX3N0eWxlO1xuICAgICAgICAgIGZwcmludF90IGZtdCBsYWI7XG4gICAgICAgICAgY2xvc2VfdGFnIGZtdCBscC5sYWJlbF9zdHlsZTtcblxuICAgICAgICAgIChtYXRjaCBscC5sYWJlbF9icmVhayB3aXRoXG4gICAgICAgICAgIHwgYEF1dG8gLT5cbiAgICAgICAgICAgICAgIGlmIGxwLnNwYWNlX2FmdGVyX2xhYmVsIHRoZW5cbiAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAxIGluZGVudFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfYnJlYWsgZm10IDAgaW5kZW50XG4gICAgICAgICAgIHwgYEFsd2F5c1xuICAgICAgICAgICB8IGBBbHdheXNfcmVjIC0+XG4gICAgICAgICAgICAgICBGb3JtYXQucHBfZm9yY2VfbmV3bGluZSBmbXQgKCk7XG4gICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCAoU3RyaW5nLm1ha2UgaW5kZW50ICcgJylcbiAgICAgICAgICAgfCBgTmV2ZXIgLT5cbiAgICAgICAgICAgICAgIGlmIGxwLnNwYWNlX2FmdGVyX2xhYmVsIHRoZW5cbiAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2NoYXIgZm10ICcgJ1xuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICk7XG4gICAgICAgICAgZnByaW50X3QgZm10IHg7XG4gICAgICAgICAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKClcblxuICBsZXQgdG9fZm9ybWF0dGVyIGZtdCB4ID1cbiAgICBsZXQgeCA9IHJld3JpdGUgeCBpblxuICAgIGZwcmludF90IGZtdCB4O1xuICAgIEZvcm1hdC5wcF9wcmludF9mbHVzaCBmbXQgKClcblxuICBsZXQgdG9fYnVmZmVyID8oZXNjYXBlID0gYE5vbmUpID8oc3R5bGVzID0gW10pIGJ1ZiB4ID1cbiAgICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gICAgZGVmaW5lX3N0eWxlcyBmbXQgZXNjYXBlIHN0eWxlcztcbiAgICB0b19mb3JtYXR0ZXIgZm10IHhcblxuICBsZXQgdG9fc3RyaW5nID9lc2NhcGUgP3N0eWxlcyB4ID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA1MDAgaW5cbiAgICB0b19idWZmZXIgP2VzY2FwZSA/c3R5bGVzIGJ1ZiB4O1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxuICBsZXQgdG9fY2hhbm5lbCA/KGVzY2FwZSA9IGBOb25lKSA/KHN0eWxlcyA9IFtdKSBvYyB4ID1cbiAgICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgIGRlZmluZV9zdHlsZXMgZm10IGVzY2FwZSBzdHlsZXM7XG4gICAgdG9fZm9ybWF0dGVyIGZtdCB4XG5cbiAgbGV0IHRvX3N0ZG91dCA/ZXNjYXBlID9zdHlsZXMgeCA9IHRvX2NoYW5uZWwgP2VzY2FwZSA/c3R5bGVzIHN0ZG91dCB4XG4gIGxldCB0b19zdGRlcnIgP2VzY2FwZSA/c3R5bGVzIHggPSB0b19jaGFubmVsID9lc2NhcGUgP3N0eWxlcyBzdGRlcnIgeFxuXG5lbmRcblxuXG5cblxubW9kdWxlIENvbXBhY3QgPVxuc3RydWN0XG4gIG9wZW4gUHJpbnRmXG5cbiAgbGV0IHJlYyBmcHJpbnRfdCBidWYgPSBmdW5jdGlvblxuICAgICAgQXRvbSAocywgXykgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHNcbiAgICB8IExpc3QgKHBhcmFtLCBsKSAtPiBmcHJpbnRfbGlzdCBidWYgcGFyYW0gbFxuICAgIHwgTGFiZWwgKGxhYmVsLCB4KSAtPiBmcHJpbnRfcGFpciBidWYgbGFiZWwgeFxuICAgIHwgQ3VzdG9tIGYgLT5cbiAgICAgICAgKCogV2lsbCBtb3N0IGxpa2VseSBub3QgYmUgY29tcGFjdCAqKVxuICAgICAgICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gICAgICAgIGYgZm10O1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10ICgpXG5cbiAgYW5kIGZwcmludF9saXN0IGJ1ZiAob3AsIHNlcCwgY2wsIF8pID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+IGJwcmludGYgYnVmIFwiJXMlc1wiIG9wIGNsXG4gICAgfCB4IDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBvcDtcbiAgICAgICAgZnByaW50X3QgYnVmIHg7XG4gICAgICAgIExpc3QuaXRlciAoXG4gICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBzZXA7XG4gICAgICAgICAgICBmcHJpbnRfdCBidWYgeFxuICAgICAgICApIHRsO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgY2xcblxuICBhbmQgZnByaW50X3BhaXIgYnVmIChsYWJlbCwgXykgeCA9XG4gICAgZnByaW50X3QgYnVmIGxhYmVsO1xuICAgIGZwcmludF90IGJ1ZiB4XG5cblxuICBsZXQgdG9fYnVmZmVyIGJ1ZiB4ID0gZnByaW50X3QgYnVmIHhcblxuICBsZXQgdG9fc3RyaW5nIHggPVxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDUwMCBpblxuICAgIHRvX2J1ZmZlciBidWYgeDtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IHRvX2Zvcm1hdHRlciBmbXQgeCA9XG4gICAgbGV0IHMgPSB0b19zdHJpbmcgeCBpblxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzXCIgcztcbiAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10ICgpXG5cbiAgbGV0IHRvX2NoYW5uZWwgb2MgeCA9XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNTAwIGluXG4gICAgdG9fYnVmZmVyIGJ1ZiB4O1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIGJ1ZlxuXG4gIGxldCB0b19zdGRvdXQgeCA9IHRvX2NoYW5uZWwgc3Rkb3V0IHhcbiAgbGV0IHRvX3N0ZGVyciB4ID0gdG9fY2hhbm5lbCBzdGRlcnIgeFxuZW5kXG5cblxuXG5cbigqIE9ic29sZXRlICopXG5tb2R1bGUgUGFyYW0gPVxuc3RydWN0XG4gIGxldCBsaXN0X3RydWUgPSB7XG4gICAgc3BhY2VfYWZ0ZXJfb3BlbmluZyA9IHRydWU7XG4gICAgc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yID0gdHJ1ZTtcbiAgICBzcGFjZV9iZWZvcmVfc2VwYXJhdG9yID0gdHJ1ZTtcbiAgICBzZXBhcmF0b3JzX3N0aWNrX2xlZnQgPSB0cnVlO1xuICAgIHNwYWNlX2JlZm9yZV9jbG9zaW5nID0gdHJ1ZTtcbiAgICBzdGlja190b19sYWJlbCA9IHRydWU7XG4gICAgYWxpZ25fY2xvc2luZyA9IHRydWU7XG4gICAgd3JhcF9ib2R5ID0gYFdyYXBfYXRvbXM7XG4gICAgaW5kZW50X2JvZHkgPSAyO1xuICAgIGxpc3Rfc3R5bGUgPSBOb25lO1xuICAgIG9wZW5pbmdfc3R5bGUgPSBOb25lO1xuICAgIGJvZHlfc3R5bGUgPSBOb25lO1xuICAgIHNlcGFyYXRvcl9zdHlsZSA9IE5vbmU7XG4gICAgY2xvc2luZ19zdHlsZSA9IE5vbmU7XG4gIH1cblxuICBsZXQgbGlzdF9mYWxzZSA9IHtcbiAgICBzcGFjZV9hZnRlcl9vcGVuaW5nID0gZmFsc2U7XG4gICAgc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yID0gZmFsc2U7XG4gICAgc3BhY2VfYmVmb3JlX3NlcGFyYXRvciA9IGZhbHNlO1xuICAgIHNlcGFyYXRvcnNfc3RpY2tfbGVmdCA9IGZhbHNlO1xuICAgIHNwYWNlX2JlZm9yZV9jbG9zaW5nID0gZmFsc2U7XG4gICAgc3RpY2tfdG9fbGFiZWwgPSBmYWxzZTtcbiAgICBhbGlnbl9jbG9zaW5nID0gZmFsc2U7XG4gICAgd3JhcF9ib2R5ID0gYFdyYXBfYXRvbXM7XG4gICAgaW5kZW50X2JvZHkgPSAyO1xuICAgIGxpc3Rfc3R5bGUgPSBOb25lO1xuICAgIG9wZW5pbmdfc3R5bGUgPSBOb25lO1xuICAgIGJvZHlfc3R5bGUgPSBOb25lO1xuICAgIHNlcGFyYXRvcl9zdHlsZSA9IE5vbmU7XG4gICAgY2xvc2luZ19zdHlsZSA9IE5vbmU7XG4gIH1cblxuICBsZXQgbGFiZWxfdHJ1ZSA9IHtcbiAgICBsYWJlbF9icmVhayA9IGBBdXRvO1xuICAgIHNwYWNlX2FmdGVyX2xhYmVsID0gdHJ1ZTtcbiAgICBpbmRlbnRfYWZ0ZXJfbGFiZWwgPSAyO1xuICAgIGxhYmVsX3N0eWxlID0gTm9uZTtcbiAgfVxuXG4gIGxldCBsYWJlbF9mYWxzZSA9IHtcbiAgICBsYWJlbF9icmVhayA9IGBBdXRvO1xuICAgIHNwYWNlX2FmdGVyX2xhYmVsID0gZmFsc2U7XG4gICAgaW5kZW50X2FmdGVyX2xhYmVsID0gMjtcbiAgICBsYWJlbF9zdHlsZSA9IE5vbmU7XG4gIH1cbmVuZFxuIiwiZXhjZXB0aW9uIEVycm9yIG9mIHN0cmluZ1xuXG5sZXQgZXJyb3IgcyA9IHJhaXNlIChFcnJvciBzKVxuXG5cbigqXG4gIERlYnVnZ2luZyB1dGlsaXRpZXMuXG4qKVxuXG5sZXQgc3RyaW5nOF9vZl9pbnQgeCA9XG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIDggaW5cbiAgZm9yIGkgPSAwIHRvIDcgZG9cbiAgICBCeXRlcy5zZXQgcyAoNy1pKSAoQ2hhci5jaHIgKDB4ZmYgbGFuZCAoeCBsc3IgKDggKiBpKSkpKVxuICBkb25lO1xuICBCeXRlcy50b19zdHJpbmcgc1xuXG5sZXQgc3RyaW5nNF9vZl9pbnQgeCA9XG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIDQgaW5cbiAgZm9yIGkgPSAwIHRvIDMgZG9cbiAgICBCeXRlcy5zZXQgcyAoMy1pKSAoQ2hhci5jaHIgKDB4ZmYgbGFuZCAoeCBsc3IgKDggKiBpKSkpKVxuICBkb25lO1xuICBCeXRlcy50b19zdHJpbmcgc1xuXG5sZXQgcHJpbnRfYml0cyA/KHBvcyA9IDApID9sZW4gcyA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIHBvcyA8IDAgfHwgKHBvcyA+IDAgJiYgcG9zID49IHNsZW4pIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkJpX3V0aWwucHJpbnRfYml0c1wiO1xuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICBOb25lIC0+IHNsZW4gLSBwb3NcbiAgICAgIHwgU29tZSBsZW4gLT5cbiAgICAgICAgICBpZiBsZW4gPiBzbGVuIC0gcG9zIHRoZW4gaW52YWxpZF9hcmcgXCJCaV91dGlsLnByaW50X2JpdHNcIlxuICAgICAgICAgIGVsc2UgbGVuXG4gIGluXG5cbiAgbGV0IHIgPSBCeXRlcy5jcmVhdGUgKGxlbiAqIDkpIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbGV0IGsgPSBpICogOSBpblxuICAgIGxldCB4ID0gQ2hhci5jb2RlIHMuW3BvcytpXSBpblxuICAgIGZvciBqID0gMCB0byA3IGRvXG4gICAgICBCeXRlcy5zZXQgciAoaytqKSAoaWYgKHggbHNyICg3IC0gaikpIGxhbmQgMSA9IDAgdGhlbiAnMCcgZWxzZSAnMScpXG4gICAgZG9uZTtcbiAgICBCeXRlcy5zZXQgciAoays4KSAoaWYgKGkgKyAxKSBtb2QgOCA9IDAgdGhlbiAnXFxuJyBlbHNlICcgJylcbiAgZG9uZTtcbiAgQnl0ZXMudG9fc3RyaW5nIHJcblxuKCogaW50IHNpemUgaW4gYml0cyAqKVxubGV0IGludF9zaXplID1cbiAgbGV0IGMgPSByZWYgMCBpblxuICBsZXQgciA9IHJlZiAoLTEpIGluXG4gIHdoaWxlICFyIDw+IDAgZG9cbiAgICByIDo9ICFyIGxzciAxO1xuICAgIGluY3IgY1xuICBkb25lO1xuICAhY1xuIiwidHlwZSB0eXBlX2lkID0gaW50XG5cbmxldCBkdW1teV90eXBlX2lkID0gMFxuXG5sZXQgY3JlYXRlX3R5cGVfaWQgPVxuICBsZXQgbiA9IHJlZiBkdW1teV90eXBlX2lkIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgbjtcbiAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgZmFpbHdpdGggXCJCaV9zaGFyZS5SZF9wb2x5LmNyZWF0ZV90eXBlX2lkOiBcXFxuICAgICAgICAgICAgICAgIGV4aGF1c3RlZCBhdmFpbGFibGUgdHlwZV9pZCdzXCJcbiAgICBlbHNlXG4gICAgICAhblxuXG5tb2R1bGUgV3IgPVxuc3RydWN0XG4gIG1vZHVsZSBIID0gSGFzaHRibC5NYWtlIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IE9iai50ICogdHlwZV9pZFxuICAgICAgbGV0IGVxdWFsICh4MSwgdDEpICh4MiwgdDIpID0geDEgPT0geDIgJiYgdDEgPT0gdDJcbiAgICAgIGxldCBoYXNoID0gSGFzaHRibC5oYXNoXG4gICAgZW5kXG4gIClcblxuICB0eXBlIHRibCA9IGludCBILnRcblxuICBsZXQgY3JlYXRlID0gSC5jcmVhdGVcbiAgbGV0IGNsZWFyIHRibCA9XG4gICAgaWYgSC5sZW5ndGggdGJsID4gMCB0aGVuXG4gICAgICBILmNsZWFyIHRibFxuXG4gIGxldCBwdXQgdGJsIGsgcG9zID1cbiAgICB0cnlcbiAgICAgIGxldCBwb3MwID0gSC5maW5kIHRibCAoT2JqLm1hZ2ljIGspIGluXG4gICAgICBwb3MgLSBwb3MwXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIEguYWRkIHRibCAoT2JqLm1hZ2ljIGspIHBvcztcbiAgICAgIDBcbmVuZFxuXG5tb2R1bGUgUmQgPVxuc3RydWN0XG4gIHR5cGUgdGJsID0gKChpbnQgKiB0eXBlX2lkKSwgT2JqLnQpIEhhc2h0YmwudFxuXG4gIGxldCBjcmVhdGUgbiA9IEhhc2h0YmwuY3JlYXRlIG5cbiAgbGV0IGNsZWFyID0gSGFzaHRibC5jbGVhclxuXG4gIGxldCBwdXQgdGJsIHBvcyB4ID1cbiAgICBIYXNodGJsLmFkZCB0YmwgcG9zIHhcblxuICBsZXQgZ2V0IHRibCBwb3MgPVxuICAgIHRyeSBIYXNodGJsLmZpbmQgdGJsIHBvc1xuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKGludmFsaWQgcmVmZXJlbmNlKVwiXG5lbmRcbiIsInR5cGUgdCA9IHtcbiAgbXV0YWJsZSBpX3MgOiBieXRlcztcbiAgbXV0YWJsZSBpX3BvcyA6IGludDtcbiAgbXV0YWJsZSBpX2xlbiA6IGludDtcbiAgbXV0YWJsZSBpX29mZnMgOiBpbnQ7XG4gIG11dGFibGUgaV9tYXhfbGVuIDogaW50O1xuICBpX3JlZmlsbCA6ICh0IC0+IGludCAtPiB1bml0KTtcbiAgaV9zaGFyZWQgOiBCaV9zaGFyZS5SZC50Ymw7XG59XG5cbmV4Y2VwdGlvbiBFbmRfb2ZfaW5wdXRcblxubGV0IHRyeV9wcmVyZWFkIGliIG4gPVxuICBpZiBpYi5pX2xlbiAtIGliLmlfcG9zIDwgbiB0aGVuIChcbiAgICBpYi5pX3JlZmlsbCBpYiBuO1xuICAgIG1pbiAoaWIuaV9sZW4gLSBpYi5pX3BvcykgblxuICApXG4gIGVsc2VcbiAgICBuXG5cbmxldCByZWFkIGliIG4gPVxuICBsZXQgcG9zID0gaWIuaV9wb3MgaW5cbiAgaWYgaWIuaV9sZW4gLSBwb3MgPj0gbiB0aGVuIChcbiAgICBpYi5pX3BvcyA8LSBwb3MgKyBuO1xuICAgIHBvc1xuICApXG4gIGVsc2VcbiAgICBpZiB0cnlfcHJlcmVhZCBpYiBuID49IG4gdGhlblxuICAgICAgbGV0IHBvcyA9IGliLmlfcG9zIGluXG4gICAgICBpYi5pX3BvcyA8LSBpYi5pX3BvcyArIG47XG4gICAgICBwb3NcbiAgICBlbHNlXG4gICAgICByYWlzZSBFbmRfb2ZfaW5wdXRcblxubGV0IHJlYWRfY2hhciBpYiA9XG4gIGxldCBwb3MgPSBpYi5pX3BvcyBpblxuICBpZiBpYi5pX2xlbiAtIHBvcyA+IDAgdGhlbiAoXG4gICAgbGV0IGMgPSBCeXRlcy51bnNhZmVfZ2V0IGliLmlfcyBwb3MgaW5cbiAgICBpYi5pX3BvcyA8LSBwb3MgKyAxO1xuICAgIGNcbiAgKVxuICBlbHNlXG4gICAgaWYgdHJ5X3ByZXJlYWQgaWIgMSA+IDAgdGhlblxuICAgICAgbGV0IHBvcyA9IGliLmlfcG9zIGluXG4gICAgICBsZXQgYyA9IEJ5dGVzLnVuc2FmZV9nZXQgaWIuaV9zIHBvcyBpblxuICAgICAgaWIuaV9wb3MgPC0gcG9zICsgMTtcbiAgICAgIGNcbiAgICBlbHNlXG4gICAgICByYWlzZSBFbmRfb2ZfaW5wdXRcblxubGV0IHBlZWsgaWIgPVxuICBsZXQgcG9zID0gaWIuaV9wb3MgaW5cbiAgaWYgaWIuaV9sZW4gLSBwb3MgPiAwIHRoZW4gKFxuICAgIEJ5dGVzLnVuc2FmZV9nZXQgaWIuaV9zIHBvc1xuICApXG4gIGVsc2VcbiAgICBpZiB0cnlfcHJlcmVhZCBpYiAxID4gMCB0aGVuXG4gICAgICBCeXRlcy51bnNhZmVfZ2V0IGliLmlfcyBpYi5pX3Bvc1xuICAgIGVsc2VcbiAgICAgIHJhaXNlIEVuZF9vZl9pbnB1dFxuXG5sZXQgZnJvbV9ieXRlcyA/KHBvcyA9IDApID8oc2hybGVuID0gMTYpIHMgPSB7XG4gIGlfcyA9IHM7XG4gIGlfcG9zID0gcG9zO1xuICBpX2xlbiA9IEJ5dGVzLmxlbmd0aCBzO1xuICBpX29mZnMgPSAtcG9zO1xuICBpX21heF9sZW4gPSBCeXRlcy5sZW5ndGggcztcbiAgaV9yZWZpbGwgPSAoZnVuIGliIG4gLT4gKCkpO1xuICBpX3NoYXJlZCA9IEJpX3NoYXJlLlJkLmNyZWF0ZSBzaHJsZW47XG59XG5cbmxldCBmcm9tX3N0cmluZyA/cG9zID9zaHJsZW4gcyA9IGZyb21fYnl0ZXMgP3BvcyA/c2hybGVuIChCeXRlcy5vZl9zdHJpbmcgcylcblxuKCpcbiAgTGlrZSBQZXJ2YXNpdmVzLnJlYWxseV9pbnB1dCBidXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzXG4gIHJlYWQgaW5zdGVhZCBvZiByYWlzaW5nIEVuZF9vZl9maWxlIHdoZW4gdGhlIGVuZCBvZiBmaWxlIGlzIHJlYWNoZWQuXG4qKVxubGV0IHJlYyBub3RfcmVhbGx5X2lucHV0IGljIHMgcG9zIGxlbiBhY2N1ID1cbiAgbGV0IG4gPSBpbnB1dCBpYyBzIHBvcyBsZW4gaW5cbiAgaWYgbiA8IGxlbiAmJiBuID4gMCB0aGVuXG4gICAgbm90X3JlYWxseV9pbnB1dCBpYyBzIChwb3MgKyBuKSAobGVuIC0gbikgKGFjY3UgKyBuKVxuICBlbHNlXG4gICAgYWNjdSArIG5cblxubGV0IHJlZmlsbF9mcm9tX2NoYW5uZWwgaWMgaWIgbiA9XG4gIGlmIG4gPiBpYi5pX21heF9sZW4gdGhlblxuICAgIGludmFsaWRfYXJnIFwiQmlfaW5idWYucmVmaWxsX2Zyb21fY2hhbm5lbFwiXG4gIGVsc2UgKFxuICAgIGxldCByZW1fbGVuID0gaWIuaV9sZW4gLSBpYi5pX3BvcyBpblxuICAgIGlmIHJlbV9sZW4gPCBuIHRoZW5cbiAgICAgIGxldCBzID0gaWIuaV9zIGluXG4gICAgICBCeXRlcy5ibGl0IHMgaWIuaV9wb3MgcyAwIHJlbV9sZW47XG4gICAgICBsZXQgdG9fcmVhZCA9IG4gLSByZW1fbGVuIGluXG4gICAgICBsZXQgcmVhbGx5X3JlYWQgPSBub3RfcmVhbGx5X2lucHV0IGljIHMgcmVtX2xlbiB0b19yZWFkIDAgaW5cbiAgICAgIGliLmlfb2ZmcyA8LSBpYi5pX29mZnMgKyBpYi5pX3BvcztcbiAgICAgIGliLmlfcG9zIDwtIDA7XG4gICAgICBpYi5pX2xlbiA8LSByZW1fbGVuICsgcmVhbGx5X3JlYWRcbiAgKVxuXG5sZXQgZnJvbV9jaGFubmVsID8obGVuID0gNDA5NikgPyhzaHJsZW4gPSAxNikgaWMgPSB7XG4gIGlfcyA9IEJ5dGVzLmNyZWF0ZSBsZW47XG4gIGlfcG9zID0gMDtcbiAgaV9sZW4gPSAwO1xuICBpX29mZnMgPSAwO1xuICBpX21heF9sZW4gPSBsZW47XG4gIGlfcmVmaWxsID0gcmVmaWxsX2Zyb21fY2hhbm5lbCBpYztcbiAgaV9zaGFyZWQgPSBCaV9zaGFyZS5SZC5jcmVhdGUgc2hybGVuO1xufVxuIiwidHlwZSB0ID0ge1xuICBtdXRhYmxlIG9fcyA6IGJ5dGVzO1xuICBtdXRhYmxlIG9fbWF4X2xlbiA6IGludDtcbiAgbXV0YWJsZSBvX2xlbiA6IGludDtcbiAgbXV0YWJsZSBvX29mZnMgOiBpbnQ7XG4gIG9faW5pdF9sZW4gOiBpbnQ7XG4gIG9fbWFrZV9yb29tIDogKHQgLT4gaW50IC0+IHVuaXQpO1xuICBtdXRhYmxlIG9fc2hhcmVkIDogQmlfc2hhcmUuV3IudGJsO1xuICBvX3NoYXJlZF9pbml0X2xlbiA6IGludDtcbn1cblxubGV0IHJlYWxseV9leHRlbmQgYiBuID1cbiAgbGV0IHNsZW4wID0gYi5vX21heF9sZW4gaW5cbiAgbGV0IHJlcWxlbiA9IGIub19sZW4gKyBuIGluXG4gIGxldCBzbGVuID1cbiAgICBsZXQgeCA9IG1heCByZXFsZW4gKDIgKiBzbGVuMCkgaW5cbiAgICBpZiB4IDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIHhcbiAgICBlbHNlXG4gICAgICBpZiBTeXMubWF4X3N0cmluZ19sZW5ndGggPCByZXFsZW4gdGhlblxuXHRpbnZhbGlkX2FyZyBcIkJ1Zi5leHRlbmQ6IHJlYWNoZWQgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXCJcbiAgICAgIGVsc2Vcblx0U3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gIGluXG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIHNsZW4gaW5cbiAgQnl0ZXMuYmxpdCBiLm9fcyAwIHMgMCBiLm9fbGVuO1xuICBiLm9fcyA8LSBzO1xuICBiLm9fbWF4X2xlbiA8LSBzbGVuXG5cbmxldCBmbHVzaF90b19vdXRwdXQgYWJzdHJhY3Rfb3V0cHV0IGIgbiA9XG4gIGFic3RyYWN0X291dHB1dCAoQnl0ZXMudG9fc3RyaW5nIGIub19zKSAwIGIub19sZW47XG4gIGIub19vZmZzIDwtIGIub19vZmZzICsgYi5vX2xlbjtcbiAgYi5vX2xlbiA8LSAwO1xuICBpZiBuID4gYi5vX21heF9sZW4gdGhlblxuICAgIHJlYWxseV9leHRlbmQgYiBuXG5cbmxldCBmbHVzaF90b19jaGFubmVsIG9jID0gZmx1c2hfdG9fb3V0cHV0IChvdXRwdXRfc3Vic3RyaW5nIG9jKVxuXG5cbmxldCBjcmVhdGUgPyhtYWtlX3Jvb20gPSByZWFsbHlfZXh0ZW5kKSA/KHNocmxlbiA9IDE2KSBuID0ge1xuICBvX3MgPSBCeXRlcy5jcmVhdGUgbjtcbiAgb19tYXhfbGVuID0gbjtcbiAgb19sZW4gPSAwO1xuICBvX29mZnMgPSAwO1xuICBvX2luaXRfbGVuID0gbjtcbiAgb19tYWtlX3Jvb20gPSBtYWtlX3Jvb207XG4gIG9fc2hhcmVkID0gQmlfc2hhcmUuV3IuY3JlYXRlIHNocmxlbjtcbiAgb19zaGFyZWRfaW5pdF9sZW4gPSBzaHJsZW47XG59XG5cbmxldCBjcmVhdGVfY2hhbm5lbF93cml0ZXIgPyhsZW4gPSA0MDk2KSA/c2hybGVuIG9jID1cbiAgY3JlYXRlIH5tYWtlX3Jvb206KGZsdXNoX3RvX2NoYW5uZWwgb2MpID9zaHJsZW4gbGVuXG5cbmxldCBmbHVzaF9jaGFubmVsX3dyaXRlciBiID1cbiAgYi5vX21ha2Vfcm9vbSBiIDBcblxubGV0IGNyZWF0ZV9vdXRwdXRfd3JpdGVyID8obGVuID0gNDA5NikgP3NocmxlbiBvdXQgPVxuICBjcmVhdGUgfm1ha2Vfcm9vbTooZmx1c2hfdG9fb3V0cHV0IG91dCNvdXRwdXQpID9zaHJsZW4gbGVuXG5cbmxldCBmbHVzaF9vdXRwdXRfd3JpdGVyID0gZmx1c2hfY2hhbm5lbF93cml0ZXJcblxuXG4oKlxuICBHdWFyYW50ZWUgdGhhdCB0aGUgYnVmZmVyIHN0cmluZyBoYXMgZW5vdWdoIHJvb20gZm9yIG4gYWRkaXRpb25hbCBieXRlcy5cbiopXG5sZXQgZXh0ZW5kIGIgbiA9XG4gIGlmIGIub19sZW4gKyBuID4gYi5vX21heF9sZW4gdGhlblxuICAgIGIub19tYWtlX3Jvb20gYiBuXG5cbmxldCBhbGxvYyBiIG4gPVxuICBleHRlbmQgYiBuO1xuICBsZXQgcG9zID0gYi5vX2xlbiBpblxuICBiLm9fbGVuIDwtIHBvcyArIG47XG4gIHBvc1xuXG5sZXQgYWRkX3N1YiBibGl0IGIgcyBwb3MgbGVuID1cbiAgZXh0ZW5kIGIgbGVuO1xuICBibGl0IHMgcG9zIGIub19zIGIub19sZW4gbGVuO1xuICBiLm9fbGVuIDwtIGIub19sZW4gKyBsZW5cblxubGV0IGFkZF9zdWJzdHJpbmcgPSBhZGRfc3ViIFN0cmluZy5ibGl0XG5sZXQgYWRkX3N1YmJ5dGVzID0gYWRkX3N1YiBCeXRlcy5ibGl0XG5cbmxldCBhZGRfc3RyaW5nIGIgcyA9XG4gIGFkZF9zdWJzdHJpbmcgYiBzIDAgKFN0cmluZy5sZW5ndGggcylcblxubGV0IGFkZF9ieXRlcyBiIHMgPVxuICBhZGRfc3ViYnl0ZXMgYiBzIDAgKEJ5dGVzLmxlbmd0aCBzKVxuXG5cbmxldCBhZGRfY2hhciBiIGMgPVxuICBsZXQgcG9zID0gYWxsb2MgYiAxIGluXG4gIEJ5dGVzLnNldCBiLm9fcyBwb3MgY1xuXG5sZXQgdW5zYWZlX2FkZF9jaGFyIGIgYyA9XG4gIGxldCBsZW4gPSBiLm9fbGVuIGluXG4gIEJ5dGVzLnNldCBiLm9fcyBsZW4gYztcbiAgYi5vX2xlbiA8LSBsZW4gKyAxXG5cbmxldCBhZGRfY2hhcjIgYiBjMSBjMiA9XG4gIGxldCBwb3MgPSBhbGxvYyBiIDIgaW5cbiAgbGV0IHMgPSBiLm9fcyBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgcG9zIGMxO1xuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcysxKSBjMlxuXG5sZXQgYWRkX2NoYXI0IGIgYzEgYzIgYzMgYzQgPVxuICBsZXQgcG9zID0gYWxsb2MgYiA0IGluXG4gIGxldCBzID0gYi5vX3MgaW5cbiAgQnl0ZXMudW5zYWZlX3NldCBzIHBvcyBjMTtcbiAgQnl0ZXMudW5zYWZlX3NldCBzIChwb3MrMSkgYzI7XG4gIEJ5dGVzLnVuc2FmZV9zZXQgcyAocG9zKzIpIGMzO1xuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcyszKSBjNFxuXG5cblxubGV0IGNsZWFyIGIgPVxuICBiLm9fb2ZmcyA8LSAwO1xuICBiLm9fbGVuIDwtIDA7XG4gIEJpX3NoYXJlLldyLmNsZWFyIGIub19zaGFyZWRcblxubGV0IHJlc2V0IGIgPVxuICBpZiBCeXRlcy5sZW5ndGggYi5vX3MgPD4gYi5vX2luaXRfbGVuIHRoZW5cbiAgICBiLm9fcyA8LSBCeXRlcy5jcmVhdGUgYi5vX2luaXRfbGVuO1xuICBiLm9fb2ZmcyA8LSAwO1xuICBiLm9fbGVuIDwtIDA7XG4gIGIub19zaGFyZWQgPC0gQmlfc2hhcmUuV3IuY3JlYXRlIGIub19zaGFyZWRfaW5pdF9sZW5cblxubGV0IGNvbnRlbnRzIGIgPSBCeXRlcy5zdWJfc3RyaW5nIGIub19zIDAgYi5vX2xlblxuIiwiKCogVmFyaWFibGUtYnl0ZSBlbmNvZGluZyBvZiA4LWJ5dGUgaW50ZWdlcnMgKHN0YXJ0aW5nIGZyb20gMCkuICopXG5cbm9wZW4gUHJpbnRmXG5vcGVuIEJpX291dGJ1Zlxub3BlbiBCaV9pbmJ1ZlxuXG50eXBlIHVpbnQgPSBpbnRcblxuKCogTWF4aW11bSBsZW5ndGggb2YgYSB2aW50IGRlY29kYWJsZSBpbnRvIGFuIE9DYW1sIGludCxcbiAgIG1heGltdW0gdmFsdWUgb2YgdGhlIGhpZ2hlc3QgYnl0ZSBvZiB0aGUgbGFyZ2VzdCB2aW50IHN1cHBvcnRlZCAqKVxubGV0IG1heF92aW50X2J5dGVzLCBtYXhfaGlnaGVzdF9ieXRlID1cbiAgaWYgQmlfdXRpbC5pbnRfc2l6ZSBtb2QgNyA9IDAgdGhlblxuICAgIGxldCBtID0gQmlfdXRpbC5pbnRfc2l6ZSAvIDcgaW5cbiAgICBsZXQgaCA9IDEgbHNsIDcgLSAxIGluXG4gICAgbSwgaFxuICBlbHNlXG4gICAgbGV0IG0gPSBCaV91dGlsLmludF9zaXplIC8gNyArIDEgaW5cbiAgICBsZXQgaCA9IDEgbHNsIChCaV91dGlsLmludF9zaXplIG1vZCA3KSAtIDEgaW5cbiAgICBtLCBoXG5cbmxldCBjaGVja19oaWdoZXN0X2J5dGUgeCA9XG4gIGlmIHggPiBtYXhfaGlnaGVzdF9ieXRlIHRoZW5cbiAgICBCaV91dGlsLmVycm9yIFwiVmludCBleGNlZWRpbmcgcmFuZ2Ugb2YgT0NhbWwgaW50c1wiXG5cblxubGV0IHVuc2lnbmVkX29mX3NpZ25lZCBpID1cbiAgaWYgaSA+PSAwIHRoZW5cbiAgICAoKlxuICAgICAgMCAtPiAwXG4gICAgICAxIC0+IDJcbiAgICAgIDIgLT4gNFxuICAgICAgMyAtPiA2XG4gICAgKilcbiAgICBpIGxzbCAxXG4gIGVsc2VcbiAgICAoKlxuICAgICAgLTEgLT4gMVxuICAgICAgLTIgLT4gM1xuICAgICAgLTMgLT4gNVxuICAgICopXG4gICAgKCgtMS1pKSBsc2wgMSkgbG9yIDFcblxubGV0IHNpZ25lZF9vZl91bnNpZ25lZCBpID1cbiAgaWYgaSBsYW5kIDEgPSAwIHRoZW4gaSBsc3IgMVxuICBlbHNlIC0xIC0gKGkgbHNyIDEpXG5cbmxldCB3cml0ZV91dmludCBidWYgaSAgPVxuICBCaV9vdXRidWYuZXh0ZW5kIGJ1ZiBtYXhfdmludF9ieXRlcztcblxuICBsZXQgeCA9IHJlZiBpIGluXG4gIHdoaWxlICF4IGxzciA3IDw+IDAgZG9cbiAgICBsZXQgYnl0ZSA9IDB4ODAgbG9yICgheCBsYW5kIDB4N2YpIGluXG4gICAgQmlfb3V0YnVmLnVuc2FmZV9hZGRfY2hhciBidWYgKENoYXIuY2hyIGJ5dGUpO1xuICAgIHggOj0gIXggbHNyIDc7XG4gIGRvbmU7XG4gIEJpX291dGJ1Zi51bnNhZmVfYWRkX2NoYXIgYnVmIChDaGFyLmNociAheClcblxubGV0IHdyaXRlX3N2aW50IGJ1ZiBpID1cbiAgd3JpdGVfdXZpbnQgYnVmICh1bnNpZ25lZF9vZl9zaWduZWQgaSlcblxuKCogY29udmVuaWVuY2UgKilcbmxldCB1dmludF9vZl91aW50ID9idWYgaSA9XG4gIGxldCBidWZmZXIgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICB8IE5vbmUgLT4gQmlfb3V0YnVmLmNyZWF0ZSAxMFxuICAgICAgfCBTb21lIGIgLT4gYlxuICBpblxuICBCaV9vdXRidWYuY2xlYXIgYnVmZmVyO1xuICB3cml0ZV91dmludCBidWZmZXIgaTtcbiAgQmlfb3V0YnVmLmNvbnRlbnRzIGJ1ZmZlclxuXG5sZXQgc3ZpbnRfb2ZfaW50ID9idWYgaSA9XG4gIHV2aW50X29mX3VpbnQgP2J1ZiAodW5zaWduZWRfb2Zfc2lnbmVkIGkpXG5cblxubGV0IHJlYWRfdXZpbnQgaWIgPVxuICBsZXQgYXZhaWwgPSBCaV9pbmJ1Zi50cnlfcHJlcmVhZCBpYiBtYXhfdmludF9ieXRlcyBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICBsZXQgcG9zID0gaWIuaV9wb3MgaW5cbiAgbGV0IHggPSByZWYgMCBpblxuICAodHJ5XG4gICAgIGZvciBpID0gMCB0byBhdmFpbCAtIDEgZG9cbiAgICAgICBsZXQgYiA9IENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgKHBvcytpKSkgaW5cbiAgICAgICB4IDo9ICgoYiBsYW5kIDB4N2YpIGxzbCAoNyppKSkgbG9yICF4O1xuICAgICAgIGlmIGIgPCAweDgwIHRoZW4gKFxuXHQgaWIuaV9wb3MgPC0gcG9zICsgaSArIDE7XG5cdCBpZiBpICsgMSA9IG1heF92aW50X2J5dGVzIHRoZW5cblx0ICAgY2hlY2tfaGlnaGVzdF9ieXRlIGI7XG5cdCByYWlzZSBFeGl0XG4gICAgICAgKVxuICAgICBkb25lO1xuICAgICBCaV91dGlsLmVycm9yIFwiVW50ZXJtaW5hdGVkIHZpbnQgb3IgdmludCBleGNlZWRpbmcgcmFuZ2Ugb2YgT0NhbWwgaW50c1wiXG4gICB3aXRoIEV4aXQgLT4gKClcbiAgKTtcbiAgIXhcblxuXG5sZXQgcmVhZF9zdmludCBpYiA9XG4gIHNpZ25lZF9vZl91bnNpZ25lZCAocmVhZF91dmludCBpYilcblxuKCogY29udmVuaWVuY2UgKilcblxubGV0IGNoZWNrX2VuZF9vZl9pbnB1dCBpYiA9XG4gIGlmIEJpX2luYnVmLnRyeV9wcmVyZWFkIGliIDEgPiAwIHRoZW5cbiAgICBCaV91dGlsLmVycm9yIFwiSnVuayBpbnB1dCBhZnRlciBlbmQgb2YgdmludFwiXG5cbmxldCB1aW50X29mX3V2aW50IHMgPVxuICBsZXQgaWIgPSBCaV9pbmJ1Zi5mcm9tX3N0cmluZyBzIGluXG4gIGxldCB4ID0gcmVhZF91dmludCBpYiBpblxuICBjaGVja19lbmRfb2ZfaW5wdXQgaWI7XG4gIHhcblxubGV0IGludF9vZl9zdmludCBzID1cbiAgbGV0IGliID0gQmlfaW5idWYuZnJvbV9zdHJpbmcgcyBpblxuICBsZXQgeCA9IHJlYWRfc3ZpbnQgaWIgaW5cbiAgY2hlY2tfZW5kX29mX2lucHV0IGliO1xuICB4XG5cblxuKCpcbiAgVGVzdGluZ1xuKilcblxubGV0IHN0cmluZ19vZl9saXN0IGwgPVxuICBsZXQgb2IgPSBCaV9vdXRidWYuY3JlYXRlIDEwMCBpblxuICBMaXN0Lml0ZXIgKHdyaXRlX3V2aW50IG9iKSBsO1xuICBCaV9vdXRidWYuY29udGVudHMgb2JcblxubGV0IHJlYyByZWFkX2xpc3QgaWIgPVxuICBpZiBpYi5pX3BvcyA8IGliLmlfbGVuIHRoZW5cbiAgICBsZXQgeCA9IHJlYWRfdXZpbnQgaWIgaW5cbiAgICB4IDo6IHJlYWRfbGlzdCBpYlxuICBlbHNlXG4gICAgW11cblxubGV0IGxpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2xpc3QgKEJpX2luYnVmLmZyb21fc3RyaW5nIHMpXG5cbmxldCBwcmludF9saXN0IGwgPVxuICBMaXN0Lml0ZXIgKFxuICAgIGZ1biBpIC0+XG4gICAgICBwcmludGYgXCJkZWMgJWlcXG5oZXggJXhcXG5iaW4gJXNcXG5cIiBpIGlcblx0KEJpX3V0aWwucHJpbnRfYml0cyAoQmlfdXRpbC5zdHJpbmc4X29mX2ludCBpKSlcbiAgKSBsXG5cbmxldCB0ZXN0ICgpID1cbiAgbGV0IGwgPSBbXG4gICAgMDtcbiAgICAweGZmZmZmZmY7XG4gICAgKDB4MDEwMjAzMDQgbHNsIDMyKSBsb3IgMHgwNTA2MDcwODtcbiAgICBtYXhfaW50O1xuICAgIG1pbl9pbnRcbiAgXSBpblxuICBwcmludGYgXCJJbnB1dDpcXG5cIjtcbiAgcHJpbnRfbGlzdCBsO1xuICBsZXQgbCcgPSBsaXN0X29mX3N0cmluZyAoc3RyaW5nX29mX2xpc3QgbCkgaW5cbiAgcHJpbnRmIFwiT3V0cHV0OlxcblwiO1xuICBwcmludF9saXN0IGwnO1xuICBpZiBsID0gbCcgdGhlblxuICAgIHByaW50X2VuZGxpbmUgXCJTVUNDRVNTXCJcbiAgZWxzZVxuICAgIHByaW50X2VuZGxpbmUgXCJGQUlMVVJFXCJcbiIsIm9wZW4gUHJpbnRmXG5cbmxldCBlcnJvciBzID0gZmFpbHdpdGggKFwiQmlfc3RyZWFtOiBcIiBeIHMpXG5cbmxldCBpbnB1dF9pbnQ2NCBpYyA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICAgICAgNjQgLT5cbiAgICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgICBmb3IgaSA9IDEgdG8gOCBkb1xuICAgICAgICAgIG4gOj0gKCFuIGxzbCA4KSBsb3IgKGlucHV0X2J5dGUgaWMpO1xuICAgICAgICBkb25lO1xuICAgICAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgICAgIGVycm9yIFwiQ29ycnVwdGVkIHN0cmVhbTogZXhjZXNzaXZlIGNodW5rIGxlbmd0aFwiO1xuICAgICAgICAhblxuICAgIHwgMzIgLT5cbiAgICAgICAgZm9yIGkgPSAxIHRvIDQgZG9cbiAgICAgICAgICBpZiBpbnB1dF9ieXRlIGljIDw+IDAgdGhlblxuICAgICAgICAgICAgZXJyb3IgXCJDaHVuayBsZW5ndGggZXhjZWVkcyBzdXBwb3J0ZWQgcmFuZ2Ugb24gdGhpcyBwbGF0Zm9ybVwiXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIDQgZG9cbiAgICAgICAgICBuIDo9ICghbiBsc2wgOCkgbG9yIChpbnB1dF9ieXRlIGljKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgICAgICBlcnJvciBcIkNodW5rIGxlbmd0aCBleGNlZWRzIHN1cHBvcnRlZCByYW5nZSBvbiB0aGlzIHBsYXRmb3JtXCI7XG4gICAgICAgICFuXG4gICAgfCBuIC0+XG4gICAgICAgIGVycm9yIChzcHJpbnRmIFwidW5zdXBwb3J0ZWQgd29yZCBzaXplICglaSlcIiBuKVxuXG5sZXQgb3V0cHV0X2ludDY0IG9jIG4gPVxuICBtYXRjaCBTeXMud29yZF9zaXplIHdpdGhcbiAgICAgIDY0IC0+XG4gICAgICAgIGxldCBuID0gcmVmIG4gaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIDggZG9cbiAgICAgICAgICBvdXRwdXRfY2hhciBvYyAoY2hhcl9vZl9pbnQgKCFuIGxzciA1NikpO1xuICAgICAgICAgIG4gOj0gIW4gbHNsIDhcbiAgICAgICAgZG9uZVxuICAgIHwgMzIgLT5cbiAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gICAgICAgIGxldCBuID0gcmVmIG4gaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIDQgZG9cbiAgICAgICAgICBvdXRwdXRfY2hhciBvYyAoY2hhcl9vZl9pbnQgKCFuIGxzciAyNCkpO1xuICAgICAgICAgIG4gOj0gIW4gbHNsIDhcbiAgICAgICAgZG9uZVxuICAgIHwgbiAtPlxuICAgICAgICBlcnJvciAoc3ByaW50ZiBcInVuc3VwcG9ydGVkIHdvcmQgc2l6ZSAoJWkpXCIgbilcblxubGV0IHJlYyByZWFkX2NodW5rIG9mX3N0cmluZyBpYyA9XG4gIG1hdGNoIGlucHV0X2NoYXIgaWMgd2l0aFxuICAgICAgJ1xcMDAxJyAtPlxuICAgICAgICBsZXQgbGVuID0gaW5wdXRfaW50NjQgaWMgaW5cbiAgICAgICAgaWYgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgIFwiQ29ycnVwdGVkIHN0cmVhbTogZXhjZXNzaXZlIGNodW5rIGxlbmd0aCAoJWkgYnl0ZXMpXCIgbGVuKTtcbiAgICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICAgIHJlYWxseV9pbnB1dCBpYyBzIDAgbGVuO1xuICAgICAgICBTb21lIChvZl9zdHJpbmcgKEJ5dGVzLnRvX3N0cmluZyBzKSlcblxuICAgIHwgJ1xcMDAwJyAtPiBOb25lXG5cbiAgICB8IGMgLT4gZXJyb3IgKHNwcmludGYgXCJDb3JydXB0ZWQgc3RyZWFtOiAlQ1wiIGMpXG5cblxubGV0IGZsYXR0ZW4gc3QgPVxuICBsZXQgYSA9IHJlZiBbfCB8XSBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgbGV0IHJlYyBuZXh0IGkgPVxuICAgIGlmICFwb3MgPj0gQXJyYXkubGVuZ3RoICFhIHRoZW4gKFxuICAgICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3Qgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgYScgLT5cbiAgICAgICAgICAgIFN0cmVhbS5qdW5rIHN0O1xuICAgICAgICAgICAgYSA6PSBhJztcbiAgICAgICAgICAgIHBvcyA6PSAwO1xuICAgICAgICAgICAgbmV4dCBpXG4gICAgKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHggPSAoIWEpLighcG9zKSBpblxuICAgICAgaW5jciBwb3M7XG4gICAgICBTb21lIHhcbiAgICApXG4gIGluXG4gIFN0cmVhbS5mcm9tIG5leHRcblxuXG5sZXQgcmVhZF9zdHJlYW0gb2Zfc3RyaW5nIGljID1cbiAgZmxhdHRlbiAoU3RyZWFtLmZyb20gKGZ1biBpIC0+IHJlYWRfY2h1bmsgb2Zfc3RyaW5nIGljKSlcblxubGV0IHJldl9hcnJheV9vZl9saXN0IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdIC0+IFt8fF1cbiAgICB8IHggOjogdGwgLT5cbiAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgICAgICAgICAgaGQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBhLihpKSA8LSBoZDtcbiAgICAgICAgICAgICAgICByIDo9IHRsO1xuICAgICAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZG9uZTtcbiAgICAgICAgYVxuXG5sZXQgd3JpdGVfc3RyZWFtID8oY2h1bmtfbGVuID0gMTAyNCkgdG9fc3RyaW5nIG9jIHN0ID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBsZXQgYWNjID0gcmVmIFtdIGluXG4gIGxldCBmbHVzaF9jaHVuayAoKSA9XG4gICAgbGV0IGEgPSByZXZfYXJyYXlfb2ZfbGlzdCAhYWNjIGluXG4gICAgYWNjIDo9IFtdO1xuICAgIG4gOj0gMDtcbiAgICBsZXQgcyA9IHRvX3N0cmluZyBhIGluXG4gICAgb3V0cHV0X2NoYXIgb2MgJ1xcMDAxJztcbiAgICBvdXRwdXRfaW50NjQgb2MgKFN0cmluZy5sZW5ndGggcyk7XG4gICAgb3V0cHV0X3N0cmluZyBvYyBzXG4gIGluXG4gIFN0cmVhbS5pdGVyIChcbiAgICBmdW4geCAtPlxuICAgICAgaW5jciBuO1xuICAgICAgYWNjIDo9IHggOjogIWFjYztcbiAgICAgIGlmICFuID49IGNodW5rX2xlbiB0aGVuXG4gICAgICAgIGZsdXNoX2NodW5rICgpXG4gICkgc3Q7XG4gIGlmICFuID4gMCB0aGVuXG4gICAgZmx1c2hfY2h1bmsgKCk7XG4gIG91dHB1dF9jaGFyIG9jICdcXDAwMCdcblxuXG5sZXQgdGVzdCBsID1cbiAgTGlzdC5pdGVyIChmdW4geCAtPiBhc3NlcnQgKHggPj0gMCAmJiB4IDw9IDkpKSBsO1xuICBsZXQgdG9fc3RyaW5nIGEgPVxuICAgIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2ludCAoQXJyYXkudG9fbGlzdCBhKSlcbiAgaW5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBBcnJheS5pbml0IChTdHJpbmcubGVuZ3RoIHMpIChmdW4gaSAtPiBpbnRfb2Zfc3RyaW5nIChTdHJpbmcubWFrZSAxIHMuW2ldKSlcbiAgaW5cbiAgbGV0IHN0ID0gU3RyZWFtLm9mX2xpc3QgbCBpblxuICBsZXQgb2MgPSBvcGVuX291dCBcInRlc3Qtc3RyZWFtLmRhdFwiIGluXG4gIHdyaXRlX3N0cmVhbSB+Y2h1bmtfbGVuOjIgdG9fc3RyaW5nIG9jIHN0O1xuICBjbG9zZV9vdXQgb2M7XG5cbiAgbGV0IGljID0gb3Blbl9pbiBcInRlc3Qtc3RyZWFtLmRhdFwiIGluXG4gIGxldCBzdCcgPSByZWFkX3N0cmVhbSBvZl9zdHJpbmcgaWMgaW5cbiAgbGV0IGwnID0gcmVmIFtdIGluXG4gIFN0cmVhbS5pdGVyIChmdW4gaSAtPiBsJyA6PSBpIDo6ICFsJykgc3QnO1xuICBjbG9zZV9pbiBpYztcbiAgbCA9IExpc3QucmV2ICFsJ1xuIiwib3BlbiBQcmludGZcblxub3BlbiBCaV9vdXRidWZcbm9wZW4gQmlfaW5idWZcblxudHlwZSBub2RlX3RhZyA9IGludFxuXG5sZXQgYm9vbF90YWcgPSAwXG5sZXQgaW50OF90YWcgPSAxXG5sZXQgaW50MTZfdGFnID0gMlxubGV0IGludDMyX3RhZyA9IDNcbmxldCBpbnQ2NF90YWcgPSA0XG5sZXQgZmxvYXQzMl90YWcgPSAxMVxubGV0IGZsb2F0NjRfdGFnID0gMTJcbmxldCB1dmludF90YWcgPSAxNlxubGV0IHN2aW50X3RhZyA9IDE3XG5sZXQgc3RyaW5nX3RhZyA9IDE4XG5sZXQgYXJyYXlfdGFnID0gMTlcbmxldCB0dXBsZV90YWcgPSAyMFxubGV0IHJlY29yZF90YWcgPSAyMVxubGV0IG51bV92YXJpYW50X3RhZyA9IDIyXG5sZXQgdmFyaWFudF90YWcgPSAyM1xubGV0IHVuaXRfdGFnID0gMjRcbmxldCB0YWJsZV90YWcgPSAyNVxubGV0IHNoYXJlZF90YWcgPSAyNlxuXG50eXBlIGhhc2ggPSBpbnRcblxuKCpcbiAgRGF0YSB0cmVlLCBmb3IgdGVzdGluZyBwdXJwb3Nlcy5cbiopXG50eXBlIHRyZWUgPVxuICAgIFsgYFVuaXRcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICB8IGBJbnQ4IG9mIGNoYXJcbiAgICB8IGBJbnQxNiBvZiBpbnRcbiAgICB8IGBJbnQzMiBvZiBJbnQzMi50XG4gICAgfCBgSW50NjQgb2YgSW50NjQudFxuICAgIHwgYEZsb2F0MzIgb2YgZmxvYXRcbiAgICB8IGBGbG9hdDY0IG9mIGZsb2F0XG4gICAgfCBgVXZpbnQgb2YgaW50XG4gICAgfCBgU3ZpbnQgb2YgaW50XG4gICAgfCBgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgYEFycmF5IG9mIChub2RlX3RhZyAqIHRyZWUgYXJyYXkpIG9wdGlvblxuICAgIHwgYFR1cGxlIG9mIHRyZWUgYXJyYXlcbiAgICB8IGBSZWNvcmQgb2YgKHN0cmluZyBvcHRpb24gKiBoYXNoICogdHJlZSkgYXJyYXlcbiAgICB8IGBOdW1fdmFyaWFudCBvZiAoaW50ICogdHJlZSBvcHRpb24pXG4gICAgfCBgVmFyaWFudCBvZiAoc3RyaW5nIG9wdGlvbiAqIGhhc2ggKiB0cmVlIG9wdGlvbilcbiAgICB8IGBUYWJsZSBvZlxuXHQoKHN0cmluZyBvcHRpb24gKiBoYXNoICogbm9kZV90YWcpIGFycmF5ICogdHJlZSBhcnJheSBhcnJheSkgb3B0aW9uXG4gICAgfCBgU2hhcmVkIG9mIHRyZWUgXVxuXG4oKiBleHRlbmQgc2lnbiBiaXQgKilcbmxldCBtYWtlX3NpZ25lZCB4ID1cbiAgaWYgeCA+IDB4M0ZGRkZGRkYgdGhlbiB4IC0gKDEgbHNsIDMxKSBlbHNlIHhcblxuKCpcbiAgU2FtZSBmdW5jdGlvbiBhcyB0aGUgb25lIHVzZWQgZm9yIE9DYW1sIHZhcmlhbnRzIGFuZCBvYmplY3QgbWV0aG9kcy5cbiopXG5sZXQgaGFzaF9uYW1lIHMgPVxuICBsZXQgYWNjdSA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgYWNjdSA6PSAyMjMgKiAhYWNjdSArIENoYXIuY29kZSBzLltpXVxuICBkb25lO1xuICAoKiByZWR1Y2UgdG8gMzEgYml0cyAqKVxuICBhY2N1IDo9ICFhY2N1IGxhbmQgKDEgbHNsIDMxIC0gMSk7XG4gICgqIG1ha2UgaXQgc2lnbmVkIGZvciA2NCBiaXRzIGFyY2hpdGVjdHVyZXMgKilcbiAgbWFrZV9zaWduZWQgIWFjY3VcblxuXG4oKlxuICBTdHJ1Y3R1cmUgb2YgYSBoYXNodGFnOiA0IGJ5dGVzLFxuXG4gIGFyZ2JpdCA3Yml0cyA4Yml0cyA4Yml0cyA4Yml0c1xuICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgICAgICAgICAgICAgMzEtYml0IGhhc2hcblxuICBhcmdiaXQgPSAxIGlmZiBoYXNodGFnIGlzIGZvbGxvd2VkIGJ5IGFuIGFyZ3VtZW50LCB0aGlzIGlzIGFsd2F5cyAxIGZvclxuICAgICAgICAgICByZWNvcmQgZmllbGRzLlxuXG4qKVxuXG5sZXQgbWFza18zMWJpdCA9XG4gIGxldCBuID0gQmlfdXRpbC5pbnRfc2l6ZSAtIDMxIGluXG4gIGFzc2VydCAobiA+PSAwKTtcbiAgZnVuIHggLT4gKHggbHNsIG4pIGxzciBuXG5cbmxldCB3cml0ZV9oYXNodGFnIG9iIGggaGFzX2FyZyA9XG4gIGxldCBoID0gbWFza18zMWJpdCBoIGluXG4gIGxldCBwb3MgPSBCaV9vdXRidWYuYWxsb2Mgb2IgNCBpblxuICBsZXQgcyA9IG9iLm9fcyBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcyszKSAoQ2hhci5jaHIgKGggbGFuZCAweGZmKSk7XG4gIGxldCBoID0gaCBsc3IgOCBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcysyKSAoQ2hhci5jaHIgKGggbGFuZCAweGZmKSk7XG4gIGxldCBoID0gaCBsc3IgOCBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcysxKSAoQ2hhci5jaHIgKGggbGFuZCAweGZmKSk7XG4gIGxldCBoID0gaCBsc3IgOCBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgcG9zIChcbiAgICBDaGFyLmNociAoXG4gICAgICBpZiBoYXNfYXJnIHRoZW4gaCBsb3IgMHg4MFxuICAgICAgZWxzZSBoXG4gICAgKVxuICApXG5cbmxldCBzdHJpbmdfb2ZfaGFzaHRhZyBoIGhhc19hcmcgPVxuICBsZXQgb2IgPSBCaV9vdXRidWYuY3JlYXRlIDQgaW5cbiAgd3JpdGVfaGFzaHRhZyBvYiBoIGhhc19hcmc7XG4gIEJpX291dGJ1Zi5jb250ZW50cyBvYlxuXG5sZXQgcmVhZF9oYXNodGFnIGliIGNvbnQgPVxuICBsZXQgaSA9IEJpX2luYnVmLnJlYWQgaWIgNCBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICBsZXQgeDAgPSBDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIGkpIGluXG4gIGxldCBoYXNfYXJnID0geDAgPj0gMHg4MCBpblxuICBsZXQgeDEgPSAoeDAgbGFuZCAweDdmKSBsc2wgMjQgaW5cbiAgbGV0IHgyID0gKENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgKGkrMSkpKSBsc2wgMTYgaW5cbiAgbGV0IHgzID0gKENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgKGkrMikpKSBsc2wgOCBpblxuICBsZXQgeDQgPSBDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIChpKzMpKSBpblxuICBsZXQgaCA9IG1ha2Vfc2lnbmVkICh4MSBsb3IgeDIgbG9yIHgzIGxvciB4NCkgaW5cblxuICBjb250IGliIGggaGFzX2FyZ1xuXG5cbmxldCByZWFkX2ZpZWxkX2hhc2h0YWcgaWIgPVxuICBsZXQgaSA9IEJpX2luYnVmLnJlYWQgaWIgNCBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICBsZXQgeDAgPSBDaGFyLmNvZGUgKEJ5dGVzLnVuc2FmZV9nZXQgcyBpKSBpblxuICBpZiB4MCA8IDB4ODAgdGhlblxuICAgIEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoaW52YWxpZCBmaWVsZCBoYXNodGFnKVwiO1xuICBsZXQgeDEgPSAoeDAgbGFuZCAweDdmKSBsc2wgMjQgaW5cbiAgbGV0IHgyID0gKENoYXIuY29kZSAoQnl0ZXMudW5zYWZlX2dldCBzIChpKzEpKSkgbHNsIDE2IGluXG4gIGxldCB4MyA9IChDaGFyLmNvZGUgKEJ5dGVzLnVuc2FmZV9nZXQgcyAoaSsyKSkpIGxzbCA4IGluXG4gIGxldCB4NCA9IENoYXIuY29kZSAoQnl0ZXMudW5zYWZlX2dldCBzIChpKzMpKSBpblxuICBtYWtlX3NpZ25lZCAoeDEgbG9yIHgyIGxvciB4MyBsb3IgeDQpXG5cblxudHlwZSBpbnQ3ID0gaW50XG5cbmxldCB3cml0ZV9udW10YWcgb2IgaSBoYXNfYXJnID1cbiAgaWYgaSA8IDAgfHwgaSA+IDB4N2YgdGhlblxuICAgIEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoaW52YWxpZCBudW10YWcpXCI7XG4gIGxldCB4ID1cbiAgICBpZiBoYXNfYXJnIHRoZW4gaSBsb3IgMHg4MFxuICAgIGVsc2UgaVxuICBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyIHgpXG5cbmxldCByZWFkX251bXRhZyBpYiBjb250ID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDEgaW5cbiAgbGV0IHggPSBDaGFyLmNvZGUgKEJ5dGVzLmdldCBpYi5pX3MgaSkgaW5cbiAgbGV0IGhhc19hcmcgPSB4ID49IDB4ODAgaW5cbiAgY29udCBpYiAoeCBsYW5kIDB4N2YpIGhhc19hcmdcblxubGV0IG1ha2VfdW5oYXNoIGwgPVxuICBsZXQgdGJsID0gSGFzaHRibC5jcmVhdGUgKDQgKiBMaXN0Lmxlbmd0aCBsKSBpblxuICBMaXN0Lml0ZXIgKFxuICAgIGZ1biBzIC0+XG4gICAgICBsZXQgaCA9IGhhc2hfbmFtZSBzIGluXG4gICAgICB0cnlcblx0bWF0Y2ggSGFzaHRibC5maW5kIHRibCBoIHdpdGhcblx0ICAgIFNvbWUgcycgLT5cblx0ICAgICAgaWYgcyA8PiBzJyB0aGVuXG5cdFx0ZmFpbHdpdGggKFxuXHRcdCAgc3ByaW50ZlxuXHRcdCAgICBcIkJpX2lvLm1ha2VfdW5oYXNoOiBcXFxuICAgICAgICAgICAgICAgICAgICAgJVMgYW5kICVTIGhhdmUgdGhlIHNhbWUgaGFzaCwgcGxlYXNlIHBpY2sgYW5vdGhlciBuYW1lXCJcblx0XHQgICAgcyBzJ1xuXHRcdClcblx0ICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG5cbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+IEhhc2h0YmwuYWRkIHRibCBoIChTb21lIHMpXG4gICkgbDtcbiAgZnVuIGggLT5cbiAgICB0cnkgSGFzaHRibC5maW5kIHRibCBoXG4gICAgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG5cbmxldCB3cml0ZV90YWcgb2IgeCA9XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgeClcblxubGV0IHdyaXRlX3VudGFnZ2VkX3VuaXQgb2IgKCkgPVxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgJ1xceDAwJ1xuXG5sZXQgd3JpdGVfdW50YWdnZWRfYm9vbCBvYiB4ID1cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChpZiB4IHRoZW4gJ1xceDAxJyBlbHNlICdcXHgwMCcpXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9jaGFyIG9iIHggPVxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgeFxuXG5sZXQgd3JpdGVfdW50YWdnZWRfaW50OCBvYiB4ID1cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociB4KVxuXG5sZXQgd3JpdGVfdW50YWdnZWRfaW50MTYgb2IgeCA9XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKHggbHNyIDgpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoeCBsYW5kIDB4ZmYpKVxuXG5sZXQgd3JpdGVfdW50YWdnZWRfaW50MzIgb2IgeCA9XG4gIGxldCBoaWdoID0gSW50MzIudG9faW50IChJbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsIHggMTYpIGluXG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKGhpZ2ggbHNyIDgpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoaGlnaCBsYW5kIDB4ZmYpKTtcbiAgbGV0IGxvdyA9IEludDMyLnRvX2ludCB4IGluXG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKChsb3cgbHNyIDgpIGxhbmQgMHhmZikpO1xuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyIChsb3cgbGFuZCAweGZmKSlcblxubGV0IHdyaXRlX3VudGFnZ2VkX2Zsb2F0MzIgb2IgeCA9XG4gIHdyaXRlX3VudGFnZ2VkX2ludDMyIG9iIChJbnQzMi5iaXRzX29mX2Zsb2F0IHgpXG5cbmxldCBmbG9hdF9lbmRpYW5uZXNzID0gbGF6eSAoXG4gIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IChPYmoubWFnaWMgMS4wKSAwIHdpdGhcbiAgICAgICdcXHgzZicgLT4gYEJpZ1xuICAgIHwgJ1xceDAwJyAtPiBgTGl0dGxlXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuKVxuXG5sZXQgcmVhZF91bnRhZ2dlZF9mbG9hdDY0IGliID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDggaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgbGV0IHggPSBPYmoubmV3X2Jsb2NrIE9iai5kb3VibGVfdGFnIDggaW5cbiAgKG1hdGNoIExhenkuZm9yY2UgZmxvYXRfZW5kaWFubmVzcyB3aXRoXG4gICAgICAgYExpdHRsZSAtPlxuXHQgZm9yIGogPSAwIHRvIDcgZG9cblx0ICAgQnl0ZXMudW5zYWZlX3NldCAoT2JqLm9iaiB4KSAoNy1qKSAoQnl0ZXMudW5zYWZlX2dldCBzIChpK2opKVxuXHQgZG9uZVxuICAgICB8IGBCaWcgLT5cblx0IGZvciBqID0gMCB0byA3IGRvXG5cdCAgIEJ5dGVzLnVuc2FmZV9zZXQgKE9iai5vYmogeCkgaiAoQnl0ZXMudW5zYWZlX2dldCBzIChpK2opKVxuXHQgZG9uZVxuICApO1xuICAoT2JqLm9iaiB4IDogZmxvYXQpXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9mbG9hdDY0IG9iIHggPVxuICBsZXQgaSA9IEJpX291dGJ1Zi5hbGxvYyBvYiA4IGluXG4gIGxldCBzID0gb2Iub19zIGluXG4gIChtYXRjaCBMYXp5LmZvcmNlIGZsb2F0X2VuZGlhbm5lc3Mgd2l0aFxuICAgICAgIGBMaXR0bGUgLT5cblx0IGZvciBqID0gMCB0byA3IGRvXG5cdCAgIEJ5dGVzLnVuc2FmZV9zZXQgcyAoaStqKSAoU3RyaW5nLnVuc2FmZV9nZXQgKE9iai5tYWdpYyB4KSAoNy1qKSlcblx0IGRvbmVcbiAgICAgfCBgQmlnIC0+XG5cdCBmb3IgaiA9IDAgdG8gNyBkb1xuXHQgICBCeXRlcy51bnNhZmVfc2V0IHMgKGkraikgKFN0cmluZy51bnNhZmVfZ2V0IChPYmoubWFnaWMgeCkgailcblx0IGRvbmVcbiAgKVxuXG4oKlxubGV0IHdyaXRlX3VudGFnZ2VkX2ludDY0IG9iIHggPVxuICBsZXQgeDQgPSBJbnQ2NC50b19pbnQgKEludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCA0OCkgaW5cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoeDQgbHNyIDgpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoeDQgbGFuZCAweGZmKSk7XG4gIGxldCB4MyA9IEludDY0LnRvX2ludCAoSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IDMyKSBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICgoeDMgbHNyIDgpIGxhbmQgMHhmZikpO1xuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICh4MyBsYW5kIDB4ZmYpKTtcbiAgbGV0IHgyID0gSW50NjQudG9faW50IChJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggMTYpIGluXG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKCh4MiBsc3IgOCkgbGFuZCAweGZmKSk7XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKHgyIGxhbmQgMHhmZikpO1xuICBsZXQgeDEgPSBJbnQ2NC50b19pbnQgeCBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICgoeDEgbHNyIDgpIGxhbmQgMHhmZikpO1xuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICh4MSBsYW5kIDB4ZmYpKVxuKilcblxubGV0IHdyaXRlX3VudGFnZ2VkX2ludDY0IG9iIHggPVxuICB3cml0ZV91bnRhZ2dlZF9mbG9hdDY0IG9iIChJbnQ2NC5mbG9hdF9vZl9iaXRzIHgpXG5cblxubGV0IHNhZmV0eV90ZXN0ICgpID1cbiAgbGV0IHMgPSBcIlxceDNmXFx4ZjBcXHgwNlxceDA1XFx4MDRcXHgwM1xceDAyXFx4MDFcIiBpblxuICBsZXQgeCA9IDEuMDAxNDY5NjI3MDY2NTEyODggaW5cbiAgbGV0IHkgPSByZWFkX3VudGFnZ2VkX2Zsb2F0NjQgKEJpX2luYnVmLmZyb21fc3RyaW5nIHMpIGluXG4gIGlmIHggPD4geSB0aGVuXG4gICAgYXNzZXJ0IGZhbHNlO1xuICBsZXQgb2IgPSBCaV9vdXRidWYuY3JlYXRlIDggaW5cbiAgd3JpdGVfdW50YWdnZWRfZmxvYXQ2NCBvYiB4O1xuICBpZiBCaV9vdXRidWYuY29udGVudHMgb2IgPD4gcyB0aGVuXG4gICAgYXNzZXJ0IGZhbHNlXG5cblxuXG5sZXQgd3JpdGVfdW50YWdnZWRfc3RyaW5nIG9iIHMgPVxuICBCaV92aW50LndyaXRlX3V2aW50IG9iIChTdHJpbmcubGVuZ3RoIHMpO1xuICBCaV9vdXRidWYuYWRkX3N0cmluZyBvYiBzXG5cbmxldCB3cml0ZV91bnRhZ2dlZF91dmludCA9IEJpX3ZpbnQud3JpdGVfdXZpbnRcbmxldCB3cml0ZV91bnRhZ2dlZF9zdmludCA9IEJpX3ZpbnQud3JpdGVfc3ZpbnRcblxubGV0IHdyaXRlX3VuaXQgb2IgKCkgPVxuICB3cml0ZV90YWcgb2IgdW5pdF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX3VuaXQgb2IgKClcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBib29sX3RhZztcbiAgd3JpdGVfdW50YWdnZWRfYm9vbCBvYiB4XG5cbmxldCB3cml0ZV9jaGFyIG9iIHggPVxuICB3cml0ZV90YWcgb2IgaW50OF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2NoYXIgb2IgeFxuXG5sZXQgd3JpdGVfaW50OCBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIGludDhfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9pbnQ4IG9iIHhcblxubGV0IHdyaXRlX2ludDE2IG9iIHggPVxuICB3cml0ZV90YWcgb2IgaW50MTZfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9pbnQxNiBvYiB4XG5cbmxldCB3cml0ZV9pbnQzMiBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIGludDMyX3RhZztcbiAgd3JpdGVfdW50YWdnZWRfaW50MzIgb2IgeFxuXG5sZXQgd3JpdGVfaW50NjQgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBpbnQ2NF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2ludDY0IG9iIHhcblxubGV0IHdyaXRlX2Zsb2F0MzIgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBmbG9hdDMyX3RhZztcbiAgd3JpdGVfdW50YWdnZWRfZmxvYXQzMiBvYiB4XG5cbmxldCB3cml0ZV9mbG9hdDY0IG9iIHggPVxuICB3cml0ZV90YWcgb2IgZmxvYXQ2NF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2Zsb2F0NjQgb2IgeFxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHggPVxuICB3cml0ZV90YWcgb2Igc3RyaW5nX3RhZztcbiAgd3JpdGVfdW50YWdnZWRfc3RyaW5nIG9iIHhcblxubGV0IHdyaXRlX3V2aW50IG9iIHggPVxuICB3cml0ZV90YWcgb2IgdXZpbnRfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF91dmludCBvYiB4XG5cbmxldCB3cml0ZV9zdmludCBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIHN2aW50X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfc3ZpbnQgb2IgeFxuXG5cblxuXG5sZXQgcmVjIHdyaXRlX3Qgb2IgdGFnZ2VkICh4IDogdHJlZSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBVbml0IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIHVuaXRfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF91bml0IG9iICgpXG5cbiAgICB8IGBCb29sIHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgYm9vbF90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX2Jvb2wgb2IgeFxuXG4gICAgfCBgSW50OCB4IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGludDhfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF9jaGFyIG9iIHhcblxuICAgIHwgYEludDE2IHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgaW50MTZfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF9pbnQxNiBvYiB4XG5cbiAgICB8IGBJbnQzMiB4IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGludDMyX3RhZztcblx0d3JpdGVfdW50YWdnZWRfaW50MzIgb2IgeFxuXG4gICAgfCBgSW50NjQgeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBpbnQ2NF90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX2ludDY0IG9iIHhcblxuICAgIHwgYEZsb2F0MzIgeCAtPlxuICAgICAgICBpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBmbG9hdDMyX3RhZztcblx0d3JpdGVfdW50YWdnZWRfZmxvYXQzMiBvYiB4XG5cbiAgICB8IGBGbG9hdDY0IHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgZmxvYXQ2NF90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX2Zsb2F0NjQgb2IgeFxuXG4gICAgfCBgVXZpbnQgeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiB1dmludF90YWc7XG5cdEJpX3ZpbnQud3JpdGVfdXZpbnQgb2IgeFxuXG4gICAgfCBgU3ZpbnQgeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBzdmludF90YWc7XG5cdEJpX3ZpbnQud3JpdGVfc3ZpbnQgb2IgeFxuXG4gICAgfCBgU3RyaW5nIHMgLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2Igc3RyaW5nX3RhZztcblx0d3JpdGVfdW50YWdnZWRfc3RyaW5nIG9iIHNcblxuICAgIHwgYEFycmF5IG8gLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgYXJyYXlfdGFnO1xuXHQobWF0Y2ggbyB3aXRoXG5cdCAgICAgTm9uZSAtPiBCaV92aW50LndyaXRlX3V2aW50IG9iIDBcblx0ICAgfCBTb21lIChub2RlX3RhZywgYSkgLT5cblx0ICAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuXHQgICAgICAgQmlfdmludC53cml0ZV91dmludCBvYiBsZW47XG5cdCAgICAgICBpZiBsZW4gPiAwIHRoZW4gKFxuXHRcdCB3cml0ZV90YWcgb2Igbm9kZV90YWc7XG5cdFx0IEFycmF5Lml0ZXIgKHdyaXRlX3Qgb2IgZmFsc2UpIGFcblx0ICAgICAgIClcblx0KVxuXG4gICAgfCBgVHVwbGUgYSAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiB0dXBsZV90YWc7XG5cdEJpX3ZpbnQud3JpdGVfdXZpbnQgb2IgKEFycmF5Lmxlbmd0aCBhKTtcblx0QXJyYXkuaXRlciAod3JpdGVfdCBvYiB0cnVlKSBhXG5cbiAgICB8IGBSZWNvcmQgYSAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiByZWNvcmRfdGFnO1xuXHRCaV92aW50LndyaXRlX3V2aW50IG9iIChBcnJheS5sZW5ndGggYSk7XG4gICAgICAgIEFycmF5Lml0ZXIgKHdyaXRlX2ZpZWxkIG9iKSBhXG5cbiAgICB8IGBOdW1fdmFyaWFudCAoaSwgeCkgLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgbnVtX3ZhcmlhbnRfdGFnO1xuXHR3cml0ZV9udW10YWcgb2IgaSAoeCA8PiBOb25lKTtcblx0KG1hdGNoIHggd2l0aFxuXHQgICAgIE5vbmUgLT4gKClcblx0ICAgfCBTb21lIHYgLT4gd3JpdGVfdCBvYiB0cnVlIHYpXG5cbiAgICB8IGBWYXJpYW50IChvLCBoLCB4KSAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiB2YXJpYW50X3RhZztcblx0d3JpdGVfaGFzaHRhZyBvYiBoICh4IDw+IE5vbmUpO1xuXHQobWF0Y2ggeCB3aXRoXG5cdCAgICAgTm9uZSAtPiAoKVxuXHQgICB8IFNvbWUgdiAtPiB3cml0ZV90IG9iIHRydWUgdilcblxuICAgIHwgYFRhYmxlIG8gLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgdGFibGVfdGFnO1xuXHQobWF0Y2ggbyB3aXRoXG5cdCAgICAgTm9uZSAtPiBCaV92aW50LndyaXRlX3V2aW50IG9iIDBcblx0ICAgfCBTb21lIChmaWVsZHMsIGEpIC0+XG5cdCAgICAgICBsZXQgcm93X251bSA9IEFycmF5Lmxlbmd0aCBhIGluXG5cdCAgICAgICBCaV92aW50LndyaXRlX3V2aW50IG9iIHJvd19udW07XG5cdCAgICAgICBpZiByb3dfbnVtID4gMCB0aGVuXG5cdFx0IGxldCBjb2xfbnVtID0gQXJyYXkubGVuZ3RoIGZpZWxkcyBpblxuXHRcdCBCaV92aW50LndyaXRlX3V2aW50IG9iIGNvbF9udW07XG5cdFx0IEFycmF5Lml0ZXIgKFxuXHRcdCAgIGZ1biAobmFtZSwgaCwgdGFnKSAtPlxuXHRcdCAgICAgd3JpdGVfaGFzaHRhZyBvYiBoIHRydWU7XG5cdFx0ICAgICB3cml0ZV90YWcgb2IgdGFnXG5cdFx0ICkgZmllbGRzO1xuXHRcdCBpZiByb3dfbnVtID4gMCB0aGVuIChcblx0XHQgICBmb3IgaSA9IDAgdG8gcm93X251bSAtIDEgZG9cblx0XHQgICAgIGxldCBhaSA9IGEuKGkpIGluXG5cdFx0ICAgICBpZiBBcnJheS5sZW5ndGggYWkgPD4gY29sX251bSB0aGVuXG5cdFx0ICAgICAgIGludmFsaWRfYXJnIFwiQmlfaW8ud3JpdGVfdDogTWFsZm9ybWVkIGBUYWJsZVwiO1xuXHRcdCAgICAgZm9yIGogPSAwIHRvIGNvbF9udW0gLSAxIGRvXG5cdFx0ICAgICAgIHdyaXRlX3Qgb2IgZmFsc2UgYWkuKGopXG5cdFx0ICAgICBkb25lXG5cdFx0ICAgZG9uZVxuXHRcdCApXG5cdClcblxuICAgIHwgYFNoYXJlZCB4IC0+XG4gICAgICAgIGlmIHRhZ2dlZCB0aGVuXG4gICAgICAgICAgd3JpdGVfdGFnIG9iIHNoYXJlZF90YWc7XG4gICAgICAgIGxldCBvZmZzZXQgPVxuICAgICAgICAgIEJpX3NoYXJlLldyLnB1dCBvYi5vX3NoYXJlZFxuICAgICAgICAgICAgKHgsIEJpX3NoYXJlLmR1bW15X3R5cGVfaWQpIChvYi5vX29mZnMgKyBvYi5vX2xlbikgaW5cbiAgICAgICAgQmlfdmludC53cml0ZV91dmludCBvYiBvZmZzZXQ7XG4gICAgICAgIGlmIG9mZnNldCA9IDAgdGhlblxuICAgICAgICAgIHdyaXRlX3Qgb2IgdHJ1ZSB4XG5cbmFuZCB3cml0ZV9maWVsZCBvYiAocywgaCwgeCkgPVxuICB3cml0ZV9oYXNodGFnIG9iIGggdHJ1ZTtcbiAgd3JpdGVfdCBvYiB0cnVlIHhcblxubGV0IHdyaXRlX3RyZWUgb2IgeCA9XG4gIHdyaXRlX3Qgb2IgdHJ1ZSB4XG5cbmxldCBzdHJpbmdfb2ZfdHJlZSB4ID1cbiAgbGV0IG9iID0gQmlfb3V0YnVmLmNyZWF0ZSAxMDAwIGluXG4gIHdyaXRlX3RyZWUgb2IgeDtcbiAgQmlfb3V0YnVmLmNvbnRlbnRzIG9iXG5cbmxldCB0YWdfb2ZfdHJlZSAoeCA6IHRyZWUpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgVW5pdCAtPiB1bml0X3RhZ1xuICAgIHwgYEJvb2wgXyAtPiBib29sX3RhZ1xuICAgIHwgYEludDggXyAtPiBpbnQ4X3RhZ1xuICAgIHwgYEludDE2IF8gLT4gaW50MTZfdGFnXG4gICAgfCBgSW50MzIgXyAtPiBpbnQzMl90YWdcbiAgICB8IGBJbnQ2NCBfIC0+IGludDY0X3RhZ1xuICAgIHwgYEZsb2F0MzIgXyAtPiBmbG9hdDMyX3RhZ1xuICAgIHwgYEZsb2F0NjQgXyAtPiBmbG9hdDY0X3RhZ1xuICAgIHwgYFV2aW50IF8gLT4gdXZpbnRfdGFnXG4gICAgfCBgU3ZpbnQgXyAtPiBzdmludF90YWdcbiAgICB8IGBTdHJpbmcgXyAtPiBzdHJpbmdfdGFnXG4gICAgfCBgQXJyYXkgXyAtPiBhcnJheV90YWdcbiAgICB8IGBUdXBsZSBfIC0+IHR1cGxlX3RhZ1xuICAgIHwgYFJlY29yZCBfIC0+IHJlY29yZF90YWdcbiAgICB8IGBOdW1fdmFyaWFudCBfIC0+IG51bV92YXJpYW50X3RhZ1xuICAgIHwgYFZhcmlhbnQgXyAtPiB2YXJpYW50X3RhZ1xuICAgIHwgYFRhYmxlIF8gLT4gdGFibGVfdGFnXG4gICAgfCBgU2hhcmVkIF8gLT4gc2hhcmVkX3RhZ1xuXG5cbmxldCByZWFkX3RhZyBpYiA9XG4gIENoYXIuY29kZSAoQmlfaW5idWYucmVhZF9jaGFyIGliKVxuXG5sZXQgcmVhZF91bnRhZ2dlZF91bml0IGliID1cbiAgbWF0Y2ggQmlfaW5idWYucmVhZF9jaGFyIGliIHdpdGhcbiAgICAgICdcXHgwMCcgLT4gKClcbiAgICB8IF8gLT4gQmlfdXRpbC5lcnJvciBcIkNvcnJ1cHRlZCBkYXRhICh1bml0IHZhbHVlKVwiXG5cbmxldCByZWFkX3VudGFnZ2VkX2Jvb2wgaWIgPVxuICBtYXRjaCBCaV9pbmJ1Zi5yZWFkX2NoYXIgaWIgd2l0aFxuICAgICAgJ1xceDAwJyAtPiBmYWxzZVxuICAgIHwgJ1xceDAxJyAtPiB0cnVlXG4gICAgfCBfIC0+IEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoYm9vbCB2YWx1ZSlcIlxuXG5sZXQgcmVhZF91bnRhZ2dlZF9jaGFyIGliID0gQmlfaW5idWYucmVhZF9jaGFyIGliXG5cbmxldCByZWFkX3VudGFnZ2VkX2ludDggaWIgPVxuICBDaGFyLmNvZGUgKEJpX2luYnVmLnJlYWRfY2hhciBpYilcblxubGV0IHJlYWRfdW50YWdnZWRfaW50MTYgaWIgPVxuICBsZXQgaSA9IEJpX2luYnVmLnJlYWQgaWIgMiBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICAoKENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgaSkpIGxzbCA4KSBsb3IgKENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgKGkrMSkpKVxuXG5cbmxldCByZWFkX3VudGFnZ2VkX2ludDMyIGliID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDQgaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgbGV0IGdldF9jb2RlIHMgaSA9IENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgaSkgaW5cbiAgbGV0IHgxID1cbiAgICBJbnQzMi5vZl9pbnQgKCgoZ2V0X2NvZGUgcyAoaSAgKSkgbHNsIDgpIGxvciAoZ2V0X2NvZGUgcyAoaSsxKSkpIGluXG4gIGxldCB4MiA9XG4gICAgSW50MzIub2ZfaW50ICgoKGdldF9jb2RlIHMgKGkrMikpIGxzbCA4KSBsb3IgKGdldF9jb2RlIHMgKGkrMykpKSBpblxuICBJbnQzMi5sb2dvciAoSW50MzIuc2hpZnRfbGVmdCB4MSAxNikgeDJcblxubGV0IHJlYWRfdW50YWdnZWRfZmxvYXQzMiBpYiA9XG4gIEludDMyLmZsb2F0X29mX2JpdHMgKHJlYWRfdW50YWdnZWRfaW50MzIgaWIpXG5cbigqXG5sZXQgcmVhZF91bnRhZ2dlZF9pbnQ2NCBpYiA9XG4gIGxldCBpID0gQmlfaW5idWYucmVhZCBpYiA4IGluXG4gIGxldCBzID0gaWIuaV9zIGluXG4gIGxldCB4MSA9XG4gICAgSW50NjQub2ZfaW50ICgoKENoYXIuY29kZSBzLltpICBdKSBsc2wgOCkgbG9yIChDaGFyLmNvZGUgcy5baSsxXSkpIGluXG4gIGxldCB4MiA9XG4gICAgSW50NjQub2ZfaW50ICgoKENoYXIuY29kZSBzLltpKzJdKSBsc2wgOCkgbG9yIChDaGFyLmNvZGUgcy5baSszXSkpIGluXG4gIGxldCB4MyA9XG4gICAgSW50NjQub2ZfaW50ICgoKENoYXIuY29kZSBzLltpKzRdKSBsc2wgOCkgbG9yIChDaGFyLmNvZGUgcy5baSs1XSkpIGluXG4gIGxldCB4NCA9XG4gICAgSW50NjQub2ZfaW50ICgoKENoYXIuY29kZSBzLltpKzZdKSBsc2wgOCkgbG9yIChDaGFyLmNvZGUgcy5baSs3XSkpIGluXG4gIEludDY0LmxvZ29yIChJbnQ2NC5zaGlmdF9sZWZ0IHgxIDQ4KVxuICAgIChJbnQ2NC5sb2dvciAoSW50NjQuc2hpZnRfbGVmdCB4MiAzMilcbiAgICAgICAoSW50NjQubG9nb3IgKEludDY0LnNoaWZ0X2xlZnQgeDMgMTYpIHg0KSlcbiopXG5cbmxldCByZWFkX3VudGFnZ2VkX2ludDY0IGliID1cbiAgSW50NjQuYml0c19vZl9mbG9hdCAocmVhZF91bnRhZ2dlZF9mbG9hdDY0IGliKVxuXG5cblxubGV0IHJlYWRfdW50YWdnZWRfc3RyaW5nIGliID1cbiAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgbGV0IHJlbSA9IHJlZiBsZW4gaW5cbiAgd2hpbGUgIXJlbSA+IDAgZG9cbiAgICBsZXQgYnl0ZXNfcmVhZCA9IEJpX2luYnVmLnRyeV9wcmVyZWFkIGliICFyZW0gaW5cbiAgICBpZiBieXRlc19yZWFkID0gMCB0aGVuXG4gICAgICBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKHN0cmluZylcIlxuICAgIGVsc2UgKFxuICAgICAgQnl0ZXMuYmxpdCBpYi5pX3MgaWIuaV9wb3Mgc3RyICFwb3MgYnl0ZXNfcmVhZDtcbiAgICAgIGliLmlfcG9zIDwtIGliLmlfcG9zICsgYnl0ZXNfcmVhZDtcbiAgICAgIHBvcyA6PSAhcG9zICsgYnl0ZXNfcmVhZDtcbiAgICAgIHJlbSA6PSAhcmVtIC0gYnl0ZXNfcmVhZFxuICAgIClcbiAgZG9uZTtcbiAgQnl0ZXMudG9fc3RyaW5nIHN0clxuXG5sZXQgcmVhZF91bnRhZ2dlZF91dmludCA9IEJpX3ZpbnQucmVhZF91dmludFxubGV0IHJlYWRfdW50YWdnZWRfc3ZpbnQgPSBCaV92aW50LnJlYWRfc3ZpbnRcblxubGV0IHJlYWRfdW5pdCBpYiA9IHJlYWRfdW50YWdnZWRfdW5pdCBpYjsgYFVuaXRcblxubGV0IHJlYWRfYm9vbCBpYiA9IGBCb29sIChyZWFkX3VudGFnZ2VkX2Jvb2wgaWIpXG5cbmxldCByZWFkX2ludDggaWIgPSBgSW50OCAocmVhZF91bnRhZ2dlZF9jaGFyIGliKVxuXG5sZXQgcmVhZF9pbnQxNiBpYiA9IGBJbnQxNiAocmVhZF91bnRhZ2dlZF9pbnQxNiBpYilcblxubGV0IHJlYWRfaW50MzIgaWIgPSBgSW50MzIgKHJlYWRfdW50YWdnZWRfaW50MzIgaWIpXG5cbmxldCByZWFkX2ludDY0IGliID0gYEludDY0IChyZWFkX3VudGFnZ2VkX2ludDY0IGliKVxuXG5sZXQgcmVhZF9mbG9hdDMyIGliID1cbiAgYEZsb2F0MzIgKHJlYWRfdW50YWdnZWRfZmxvYXQzMiBpYilcblxubGV0IHJlYWRfZmxvYXQ2NCBpYiA9XG4gIGBGbG9hdDY0IChyZWFkX3VudGFnZ2VkX2Zsb2F0NjQgaWIpXG5cbmxldCByZWFkX3V2aW50IGliID0gYFV2aW50IChyZWFkX3VudGFnZ2VkX3V2aW50IGliKVxubGV0IHJlYWRfc3ZpbnQgaWIgPSBgU3ZpbnQgKHJlYWRfdW50YWdnZWRfc3ZpbnQgaWIpXG5cbmxldCByZWFkX3N0cmluZyBpYiA9IGBTdHJpbmcgKHJlYWRfdW50YWdnZWRfc3RyaW5nIGliKVxuXG5sZXQgcHJpbnQgcyA9IHByaW50X3N0cmluZyBzOyBwcmludF9uZXdsaW5lICgpXG5cbmxldCByZWFkX3RyZWUgPyh1bmhhc2ggPSBtYWtlX3VuaGFzaCBbXSkgaWIgOiB0cmVlID1cblxuICBsZXQgcmVjIHJlYWRfYXJyYXkgaWIgPVxuICAgIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICBpZiBsZW4gPSAwIHRoZW4gYEFycmF5IE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgdGFnID0gcmVhZF90YWcgaWIgaW5cbiAgICAgIGxldCByZWFkID0gcmVhZGVyX29mX3RhZyB0YWcgaW5cbiAgICAgIGBBcnJheSAoU29tZSAodGFnLCBBcnJheS5pbml0IGxlbiAoZnVuIF8gLT4gcmVhZCBpYikpKVxuXG4gIGFuZCByZWFkX3R1cGxlIGliID1cbiAgICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgYFR1cGxlIChBcnJheS5pbml0IGxlbiAoZnVuIF8gLT4gcmVhZF90cmVlIGliKSlcblxuICBhbmQgcmVhZF9maWVsZCBpYiA9XG4gICAgbGV0IGggPSByZWFkX2ZpZWxkX2hhc2h0YWcgaWIgaW5cbiAgICBsZXQgbmFtZSA9IHVuaGFzaCBoIGluXG4gICAgbGV0IHggPSByZWFkX3RyZWUgaWIgaW5cbiAgICAobmFtZSwgaCwgeClcblxuICBhbmQgcmVhZF9yZWNvcmQgaWIgPVxuICAgIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICBgUmVjb3JkIChBcnJheS5pbml0IGxlbiAoZnVuIF8gLT4gcmVhZF9maWVsZCBpYikpXG5cbiAgYW5kIHJlYWRfbnVtX3ZhcmlhbnRfY29udCBpYiBpIGhhc19hcmcgPVxuICAgIGxldCB4ID1cbiAgICAgIGlmIGhhc19hcmcgdGhlblxuXHRTb21lIChyZWFkX3RyZWUgaWIpXG4gICAgICBlbHNlXG5cdE5vbmVcbiAgICBpblxuICAgIGBOdW1fdmFyaWFudCAoaSwgeClcblxuICBhbmQgcmVhZF9udW1fdmFyaWFudCBpYiA9XG4gICAgcmVhZF9udW10YWcgaWIgcmVhZF9udW1fdmFyaWFudF9jb250XG5cbiAgYW5kIHJlYWRfdmFyaWFudF9jb250IGliIGggaGFzX2FyZyA9XG4gICAgbGV0IG5hbWUgPSB1bmhhc2ggaCBpblxuICAgIGxldCB4ID1cbiAgICAgIGlmIGhhc19hcmcgdGhlblxuXHRTb21lIChyZWFkX3RyZWUgaWIpXG4gICAgICBlbHNlXG5cdE5vbmVcbiAgICBpblxuICAgIGBWYXJpYW50IChuYW1lLCBoLCB4KVxuXG4gIGFuZCByZWFkX3ZhcmlhbnQgaWIgPVxuICAgIHJlYWRfaGFzaHRhZyBpYiByZWFkX3ZhcmlhbnRfY29udFxuXG4gIGFuZCByZWFkX3RhYmxlIGliID1cbiAgICBsZXQgcm93X251bSA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICAgIGlmIHJvd19udW0gPSAwIHRoZW5cbiAgICAgIGBUYWJsZSBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IGNvbF9udW0gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICAgIGxldCBmaWVsZHMgPVxuXHRBcnJheS5pbml0IGNvbF9udW0gKFxuXHQgIGZ1biBfIC0+XG5cdCAgICBsZXQgaCA9IHJlYWRfZmllbGRfaGFzaHRhZyBpYiBpblxuXHQgICAgbGV0IG5hbWUgPSB1bmhhc2ggaCBpblxuXHQgICAgbGV0IHRhZyA9IHJlYWRfdGFnIGliIGluXG5cdCAgICAobmFtZSwgaCwgdGFnKVxuXHQpXG4gICAgICBpblxuICAgICAgbGV0IHJlYWRlcnMgPVxuXHRBcnJheS5tYXAgKGZ1biAobmFtZSwgaCwgdGFnKSAtPiByZWFkZXJfb2ZfdGFnIHRhZykgZmllbGRzIGluXG4gICAgICBsZXQgYSA9XG5cdEFycmF5LmluaXQgcm93X251bVxuXHQgIChmdW4gXyAtPlxuXHQgICAgIEFycmF5LmluaXQgY29sX251bSAoZnVuIGogLT4gcmVhZGVycy4oaikgaWIpKVxuICAgICAgaW5cbiAgICAgIGBUYWJsZSAoU29tZSAoZmllbGRzLCBhKSlcblxuICBhbmQgcmVhZF9zaGFyZWQgaWIgPVxuICAgIGxldCBwb3MgPSBpYi5pX29mZnMgKyBpYi5pX3BvcyBpblxuICAgIGxldCBvZmZzZXQgPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICBpZiBvZmZzZXQgPSAwIHRoZW5cbiAgICAgIGxldCByZWMgciA9IGBTaGFyZWQgciBpblxuICAgICAgQmlfc2hhcmUuUmQucHV0IGliLmlfc2hhcmVkXG4gICAgICAgIChwb3MsIEJpX3NoYXJlLmR1bW15X3R5cGVfaWQpIChPYmoucmVwciByKTtcbiAgICAgIGxldCB4ID0gcmVhZF90cmVlIGliIGluXG4gICAgICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciByKSAxIChPYmoucmVwciB4KTtcbiAgICAgIHJcbiAgICBlbHNlXG4gICAgICBPYmoub2JqIChCaV9zaGFyZS5SZC5nZXQgaWIuaV9zaGFyZWRcbiAgICAgICAgICAgICAgICAgKHBvcyAtIG9mZnNldCwgQmlfc2hhcmUuZHVtbXlfdHlwZV9pZCkpXG5cbiAgYW5kIHJlYWRlcl9vZl90YWcgPSBmdW5jdGlvblxuICAgICAgMCAoKiBib29sICopIC0+IHJlYWRfYm9vbFxuICAgIHwgMSAoKiBpbnQ4ICopIC0+IHJlYWRfaW50OFxuICAgIHwgMiAoKiBpbnQxNiAqKSAtPiByZWFkX2ludDE2XG4gICAgfCAzICgqIGludDMyICopIC0+IHJlYWRfaW50MzJcbiAgICB8IDQgKCogaW50NjQgKikgLT4gcmVhZF9pbnQ2NFxuICAgIHwgMTEgKCogZmxvYXQzMiAqKSAtPiByZWFkX2Zsb2F0MzJcbiAgICB8IDEyICgqIGZsb2F0NjQgKikgLT4gcmVhZF9mbG9hdDY0XG4gICAgfCAxNiAoKiB1dmludCAqKSAtPiByZWFkX3V2aW50XG4gICAgfCAxNyAoKiBzdmludCAqKSAtPiByZWFkX3N2aW50XG4gICAgfCAxOCAoKiBzdHJpbmcgKikgLT4gcmVhZF9zdHJpbmdcbiAgICB8IDE5ICgqIGFycmF5ICopIC0+IHJlYWRfYXJyYXlcbiAgICB8IDIwICgqIHR1cGxlICopIC0+IHJlYWRfdHVwbGVcbiAgICB8IDIxICgqIHJlY29yZCAqKSAtPiByZWFkX3JlY29yZFxuICAgIHwgMjIgKCogbnVtX3ZhcmlhbnQgKikgLT4gcmVhZF9udW1fdmFyaWFudFxuICAgIHwgMjMgKCogdmFyaWFudCAqKSAtPiByZWFkX3ZhcmlhbnRcbiAgICB8IDI0ICgqIHVuaXQgKikgLT4gcmVhZF91bml0XG4gICAgfCAyNSAoKiB0YWJsZSAqKSAtPiByZWFkX3RhYmxlXG4gICAgfCAyNiAoKiBzaGFyZWQgKikgLT4gcmVhZF9zaGFyZWRcbiAgICB8IF8gLT4gQmlfdXRpbC5lcnJvciBcIkNvcnJ1cHRlZCBkYXRhIChpbnZhbGlkIHRhZylcIlxuXG4gIGFuZCByZWFkX3RyZWUgaWIgOiB0cmVlID1cbiAgICByZWFkZXJfb2ZfdGFnIChyZWFkX3RhZyBpYikgaWJcblxuICBpblxuICByZWFkX3RyZWUgaWJcblxubGV0IHRyZWVfb2Zfc3RyaW5nID91bmhhc2ggcyA9IHJlYWRfdHJlZSA/dW5oYXNoIChCaV9pbmJ1Zi5mcm9tX3N0cmluZyBzKVxuXG5cbmxldCBza2lwX2J5dGVzIGliIG4gPSBpZ25vcmUgKEJpX2luYnVmLnJlYWQgaWIgbilcblxubGV0IHNraXBfdW5pdCBpYiA9IHNraXBfYnl0ZXMgaWIgMVxubGV0IHNraXBfYm9vbCBpYiA9IHNraXBfYnl0ZXMgaWIgMVxubGV0IHNraXBfaW50OCBpYiA9IHNraXBfYnl0ZXMgaWIgMVxubGV0IHNraXBfaW50MTYgaWIgPSBza2lwX2J5dGVzIGliIDJcbmxldCBza2lwX2ludDMyIGliID0gc2tpcF9ieXRlcyBpYiA0XG5sZXQgc2tpcF9pbnQ2NCBpYiA9IHNraXBfYnl0ZXMgaWIgOFxubGV0IHNraXBfZmxvYXQzMiBpYiA9IHNraXBfYnl0ZXMgaWIgNFxubGV0IHNraXBfZmxvYXQ2NCBpYiA9IHNraXBfYnl0ZXMgaWIgOFxubGV0IHNraXBfdXZpbnQgaWIgPSBpZ25vcmUgKHJlYWRfdW50YWdnZWRfdXZpbnQgaWIpXG5sZXQgc2tpcF9zdmludCBpYiA9IGlnbm9yZSAocmVhZF91bnRhZ2dlZF9zdmludCBpYilcblxubGV0IHNraXBfc3RyaW5nIGliID1cbiAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBza2lwX2J5dGVzIGliIGxlblxuXG5sZXQgcmVjIHNraXBfYXJyYXkgaWIgPVxuICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gIGlmIGxlbiA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IHRhZyA9IHJlYWRfdGFnIGliIGluXG4gICAgbGV0IHJlYWQgPSBza2lwcGVyX29mX3RhZyB0YWcgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIGRvXG4gICAgICByZWFkIGliXG4gICAgZG9uZVxuXG5hbmQgc2tpcF90dXBsZSBpYiA9XG4gIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgZm9yIGkgPSAxIHRvIGxlbiBkb1xuICAgIHNraXAgaWJcbiAgZG9uZVxuXG5hbmQgc2tpcF9maWVsZCBpYiA9XG4gIGlnbm9yZSAocmVhZF9maWVsZF9oYXNodGFnIGliKTtcbiAgc2tpcCBpYlxuXG5hbmQgc2tpcF9yZWNvcmQgaWIgPVxuICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gIGZvciBpID0gMSB0byBsZW4gZG9cbiAgICBza2lwX2ZpZWxkIGliXG4gIGRvbmVcblxuYW5kIHNraXBfbnVtX3ZhcmlhbnRfY29udCBpYiBpIGhhc19hcmcgPVxuICBpZiBoYXNfYXJnIHRoZW5cbiAgICBza2lwIGliXG5cbmFuZCBza2lwX251bV92YXJpYW50IGliID1cbiAgcmVhZF9udW10YWcgaWIgc2tpcF9udW1fdmFyaWFudF9jb250XG5cbmFuZCBza2lwX3ZhcmlhbnRfY29udCBpYiBoIGhhc19hcmcgPVxuICBpZiBoYXNfYXJnIHRoZW5cbiAgICBza2lwIGliXG5cbmFuZCBza2lwX3ZhcmlhbnQgaWIgPVxuICByZWFkX2hhc2h0YWcgaWIgc2tpcF92YXJpYW50X2NvbnRcblxuYW5kIHNraXBfdGFibGUgaWIgPVxuICBsZXQgcm93X251bSA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBpZiByb3dfbnVtID0gMCB0aGVuXG4gICAgKClcbiAgZWxzZVxuICAgIGxldCBjb2xfbnVtID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgbGV0IHJlYWRlcnMgPVxuICAgICAgQXJyYXkuaW5pdCBjb2xfbnVtIChcblx0ZnVuIF8gLT5cblx0ICBpZ25vcmUgKHJlYWRfZmllbGRfaGFzaHRhZyBpYik7XG5cdCAgc2tpcHBlcl9vZl90YWcgKHJlYWRfdGFnIGliKVxuICAgICAgKVxuICAgIGluXG4gICAgZm9yIGkgPSAxIHRvIHJvd19udW0gZG9cbiAgICAgIGZvciBqID0gMSB0byBjb2xfbnVtIGRvXG5cdHJlYWRlcnMuKGopIGliXG4gICAgICBkb25lXG4gICAgZG9uZVxuXG5hbmQgc2tpcHBlcl9vZl90YWcgPSBmdW5jdGlvblxuICAgIDAgKCogYm9vbCAqKSAtPiBza2lwX2Jvb2xcbiAgfCAxICgqIGludDggKikgLT4gc2tpcF9pbnQ4XG4gIHwgMiAoKiBpbnQxNiAqKSAtPiBza2lwX2ludDE2XG4gIHwgMyAoKiBpbnQzMiAqKSAtPiBza2lwX2ludDMyXG4gIHwgNCAoKiBpbnQ2NCAqKSAtPiBza2lwX2ludDY0XG4gIHwgMTEgKCogZmxvYXQzMiAqKSAtPiBza2lwX2Zsb2F0MzJcbiAgfCAxMiAoKiBmbG9hdDY0ICopIC0+IHNraXBfZmxvYXQ2NFxuICB8IDE2ICgqIHV2aW50ICopIC0+IHNraXBfdXZpbnRcbiAgfCAxNyAoKiBzdmludCAqKSAtPiBza2lwX3N2aW50XG4gIHwgMTggKCogc3RyaW5nICopIC0+IHNraXBfc3RyaW5nXG4gIHwgMTkgKCogYXJyYXkgKikgLT4gc2tpcF9hcnJheVxuICB8IDIwICgqIHR1cGxlICopIC0+IHNraXBfdHVwbGVcbiAgfCAyMSAoKiByZWNvcmQgKikgLT4gc2tpcF9yZWNvcmRcbiAgfCAyMiAoKiBudW1fdmFyaWFudCAqKSAtPiBza2lwX251bV92YXJpYW50XG4gIHwgMjMgKCogdmFyaWFudCAqKSAtPiBza2lwX3ZhcmlhbnRcbiAgfCAyNCAoKiB1bml0ICopIC0+IHNraXBfdW5pdFxuICB8IDI1ICgqIHRhYmxlICopIC0+IHNraXBfdGFibGVcbiAgfCBfIC0+IEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoaW52YWxpZCB0YWcpXCJcblxuYW5kIHNraXAgaWIgOiB1bml0ID1cbiAgc2tpcHBlcl9vZl90YWcgKHJlYWRfdGFnIGliKSBpYlxuXG5cbigqIEVxdWl2YWxlbnQgb2YgQXJyYXkubWFwIHRoYXQgZ3VhcmFudGVlcyBhIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbmxldCBhcnJheV9tYXAgZiBhID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGlmIGxlbiA9IDAgdGhlbiBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCByID0gQXJyYXkubWFrZSBsZW4gKGYgKEFycmF5LnVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgQXJyYXkudW5zYWZlX3NldCByIGkgKGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgKVxuXG5cbm1vZHVsZSBQcCA9XG5zdHJ1Y3RcbiAgb3BlbiBFYXN5X2Zvcm1hdFxuXG4gIGxldCBhcnJheSA9IGxpc3RcbiAgbGV0IHJlY29yZCA9IGxpc3RcbiAgbGV0IHR1cGxlID0geyBsaXN0IHdpdGhcblx0XHQgIHNwYWNlX2FmdGVyX29wZW5pbmcgPSBmYWxzZTtcblx0XHQgIHNwYWNlX2JlZm9yZV9jbG9zaW5nID0gZmFsc2U7XG5cdFx0ICBhbGlnbl9jbG9zaW5nID0gZmFsc2UgfVxuICBsZXQgdmFyaWFudCA9IHsgbGlzdCB3aXRoXG5cdFx0ICAgIHNlcGFyYXRvcnNfc3RpY2tfbGVmdCA9IHRydWUgfVxuXG4gIGxldCBtYXAgZiBhID0gQXJyYXkudG9fbGlzdCAoYXJyYXlfbWFwIGYgYSlcblxuICBsZXQgcmVjIGZvcm1hdCBzaGFyZWQgKHggOiB0cmVlKSA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIGBVbml0IC0+IEF0b20gKFwidW5pdFwiLCBhdG9tKVxuICAgICAgfCBgQm9vbCB4IC0+IEF0b20gKChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpLCBhdG9tKVxuICAgICAgfCBgSW50OCB4IC0+IEF0b20gKHNwcmludGYgXCIweCUwMnhcIiAoQ2hhci5jb2RlIHgpLCBhdG9tKVxuICAgICAgfCBgSW50MTYgeCAtPiBBdG9tIChzcHJpbnRmIFwiMHglMDR4XCIgeCwgYXRvbSlcbiAgICAgIHwgYEludDMyIHggLT4gQXRvbSAoc3ByaW50ZiBcIjB4JTA4bHhcIiB4LCBhdG9tKVxuICAgICAgfCBgSW50NjQgeCAtPiBBdG9tIChzcHJpbnRmIFwiMHglMDE2THhcIiB4LCBhdG9tKVxuICAgICAgfCBgRmxvYXQzMiB4IC0+IEF0b20gKHN0cmluZ19vZl9mbG9hdCB4LCBhdG9tKVxuICAgICAgfCBgRmxvYXQ2NCB4IC0+IEF0b20gKHN0cmluZ19vZl9mbG9hdCB4LCBhdG9tKVxuICAgICAgfCBgVXZpbnQgeCAtPiBBdG9tIChzdHJpbmdfb2ZfaW50IHgsIGF0b20pXG4gICAgICB8IGBTdmludCB4IC0+IEF0b20gKHN0cmluZ19vZl9pbnQgeCwgYXRvbSlcbiAgICAgIHwgYFN0cmluZyBzIC0+IEF0b20gKHNwcmludGYgXCIlU1wiIHMsIGF0b20pXG4gICAgICB8IGBBcnJheSBOb25lIC0+IEF0b20gKFwiW11cIiwgYXRvbSlcbiAgICAgIHwgYEFycmF5IChTb21lIChfLCBhKSkgLT5cbiAgICAgICAgICBMaXN0ICgoXCJbXCIsIFwiLFwiLCBcIl1cIiwgYXJyYXkpLCBtYXAgKGZvcm1hdCBzaGFyZWQpIGEpXG4gICAgICB8IGBUdXBsZSBhIC0+IExpc3QgKChcIihcIiwgXCIsXCIsIFwiKVwiLCB0dXBsZSksIG1hcCAoZm9ybWF0IHNoYXJlZCkgYSlcbiAgICAgIHwgYFJlY29yZCBhIC0+IExpc3QgKChcIntcIiwgXCIsXCIsIFwifVwiLCByZWNvcmQpLCBtYXAgKGZvcm1hdF9maWVsZCBzaGFyZWQpIGEpXG4gICAgICB8IGBOdW1fdmFyaWFudCAoaSwgbykgLT5cblx0ICBsZXQgc3VmZml4ID1cblx0ICAgIGlmIGkgPSAwIHRoZW4gXCJcIlxuXHQgICAgZWxzZSBzdHJpbmdfb2ZfaW50IGlcblx0ICBpblxuXHQgIChtYXRjaCBvIHdpdGhcblx0ICAgICAgIE5vbmUgLT4gQXRvbSAoXCJOb25lXCIgXiBzdWZmaXgsIGF0b20pXG5cdCAgICAgfCBTb21lIHggLT5cblx0XHQgbGV0IGNvbnMgPSBBdG9tIChcIlNvbWVcIiBeIHN1ZmZpeCwgYXRvbSkgaW5cblx0XHQgTGFiZWwgKChjb25zLCBsYWJlbCksIGZvcm1hdCBzaGFyZWQgeCkpXG4gICAgICB8IGBWYXJpYW50IChvcHRfbmFtZSwgaCwgbykgLT5cblx0ICBsZXQgbmFtZSA9XG5cdCAgICBtYXRjaCBvcHRfbmFtZSB3aXRoXG5cdFx0Tm9uZSAtPiBzcHJpbnRmIFwiIyUwOGx4XCIgKEludDMyLm9mX2ludCBoKVxuXHQgICAgICB8IFNvbWUgcyAtPiBzcHJpbnRmIFwiJVNcIiBzXG5cdCAgaW5cblx0ICAobWF0Y2ggbyB3aXRoXG5cdCAgICAgICBOb25lIC0+IEF0b20gKFwiPFwiIF4gbmFtZSBeIFwiPlwiLCBhdG9tKVxuXHQgICAgIHwgU29tZSB4IC0+XG5cdFx0IExpc3QgKChcIjxcIiwgXCJcIiwgXCI+XCIsIHR1cGxlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgWyBMYWJlbCAoKEF0b20gKG5hbWUgXiBcIjpcIiwgYXRvbSksIGxhYmVsKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0IHNoYXJlZCB4KSBdKVxuXHQgIClcbiAgICAgIHwgYFRhYmxlIE5vbmUgLT4gQXRvbSAoXCJbXVwiLCBhdG9tKVxuICAgICAgfCBgVGFibGUgKFNvbWUgKGhlYWRlciwgYWEpKSAtPlxuXHQgIGxldCByZWNvcmRfYXJyYXkgPVxuXHQgICAgYEFycmF5IChcblx0ICAgICAgU29tZSAoXG5cdFx0cmVjb3JkX3RhZyxcblx0XHRBcnJheS5tYXAgKFxuXHRcdCAgZnVuIGEgLT5cblx0XHQgICAgYFJlY29yZCAoXG5cdFx0ICAgICAgQXJyYXkubWFwaSAoXG5cdFx0XHRmdW4gaSB4IC0+XG5cdFx0XHQgIGxldCBzLCBoLCBfID0gaGVhZGVyLihpKSBpblxuXHRcdFx0ICAocywgaCwgeClcblx0XHQgICAgICApIGFcblx0XHQgICAgKVxuXHRcdCkgYWFcblx0ICAgICAgKVxuXHQgICAgKSBpblxuXHQgIGZvcm1hdCBzaGFyZWQgcmVjb3JkX2FycmF5XG5cbiAgICAgIHwgYFNoYXJlZCB4IC0+XG4gICAgICAgICAgbGV0IHRibCwgcCA9IHNoYXJlZCBpblxuICAgICAgICAgIGluY3IgcDtcbiAgICAgICAgICBsZXQgcG9zID0gIXAgaW5cbiAgICAgICAgICBsZXQgb2Zmc2V0ID0gQmlfc2hhcmUuV3IucHV0IHRibCAoeCwgQmlfc2hhcmUuZHVtbXlfdHlwZV9pZCkgcG9zIGluXG4gICAgICAgICAgaWYgb2Zmc2V0ID0gMCB0aGVuXG4gICAgICAgICAgICBMYWJlbCAoKEF0b20gKHNwcmludGYgXCJzaGFyZWQlaSAtPlwiIHBvcywgYXRvbSksIGxhYmVsKSxcbiAgICAgICAgICAgICAgICAgICBmb3JtYXQgc2hhcmVkIHgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQXRvbSAoc3ByaW50ZiBcInNoYXJlZCVpXCIgKHBvcyAtIG9mZnNldCksIGF0b20pXG5cbiAgYW5kIGZvcm1hdF9maWVsZCBzaGFyZWQgKG8sIGgsIHgpID1cbiAgICBsZXQgcyA9XG4gICAgICBtYXRjaCBvIHdpdGhcblx0ICBOb25lIC0+IHNwcmludGYgXCIjJTA4bHhcIiAoSW50MzIub2ZfaW50IGgpXG5cdHwgU29tZSBzIC0+IHNwcmludGYgXCIlU1wiIHNcbiAgICBpblxuICAgIExhYmVsICgoQXRvbSAoc3ByaW50ZiBcIiVzOlwiIHMsIGF0b20pLCBsYWJlbCksIGZvcm1hdCBzaGFyZWQgeClcbmVuZFxuXG5sZXQgaW5pdCAoKSA9IChCaV9zaGFyZS5Xci5jcmVhdGUgNTEyLCByZWYgMClcblxubGV0IHZpZXdfb2ZfdHJlZSB0ID1cbiAgRWFzeV9mb3JtYXQuUHJldHR5LnRvX3N0cmluZyAoUHAuZm9ybWF0IChpbml0ICgpKSB0KVxuXG5sZXQgcHJpbnRfdmlld19vZl90cmVlIHQgPVxuICBFYXN5X2Zvcm1hdC5QcmV0dHkudG9fc3Rkb3V0IChQcC5mb3JtYXQgKGluaXQgKCkpIHQpXG5cbmxldCBvdXRwdXRfdmlld19vZl90cmVlIG9jIHQgPVxuICBFYXN5X2Zvcm1hdC5QcmV0dHkudG9fY2hhbm5lbCBvYyAoUHAuZm9ybWF0IChpbml0ICgpKSB0KVxuXG5sZXQgdmlldyA/dW5oYXNoIHMgPVxuICB2aWV3X29mX3RyZWUgKHRyZWVfb2Zfc3RyaW5nID91bmhhc2ggcylcblxubGV0IHByaW50X3ZpZXcgP3VuaGFzaCBzID1cbiAgcHJpbnRfdmlld19vZl90cmVlICh0cmVlX29mX3N0cmluZyA/dW5oYXNoIHMpXG5cbmxldCBvdXRwdXRfdmlldyA/dW5oYXNoIG9jIHMgPVxuICBvdXRwdXRfdmlld19vZl90cmVlIG9jICh0cmVlX29mX3N0cmluZyA/dW5oYXNoIHMpXG4iLCJvcGVuIFByaW50ZlxuXG4oKlxubGV0IHNwbGl0IHMgPSBTdHIuc3BsaXQgKFN0ci5yZWdleHAgXCIsXCIpIHNcbiopXG5cbmxldCBzcGxpdCBzID1cbiAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICBsZXQgc3RvcCA9IHJlZiAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICBmb3IgaSA9ICFzdG9wIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHMuW2ldID0gJywnIHRoZW4gKFxuICAgICAgbGV0IHN0YXJ0ID0gaSArIDEgaW5cbiAgICAgIGFjYyA6PSBTdHJpbmcuc3ViIHMgc3RhcnQgKCFzdG9wIC0gc3RhcnQpIDo6ICFhY2M7XG4gICAgICBzdG9wIDo9IGlcbiAgICApXG4gIGRvbmU7XG4gIFN0cmluZy5zdWIgcyAwICFzdG9wIDo6ICFhY2NcblxuXG5sZXQgbG9hZF9saW5lcyBhY2N1IHMgPVxuICBsZXQgaWMgPSBvcGVuX2luIHMgaW5cbiAgbGV0IGwgPSByZWYgYWNjdSBpblxuICAodHJ5XG4gICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICBsIDo9IGlucHV0X2xpbmUgaWMgOjogTGlzdC5yZXYgIWxcbiAgICAgZG9uZVxuICAgd2l0aCBFbmRfb2ZfZmlsZSAtPlxuICAgICBjbG9zZV9pbiBpY1xuICApO1xuICAhbFxuXG5sZXQgbG9hZCBpYyA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDEwMDAgaW5cbiAgdHJ5XG4gICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAoaW5wdXRfY2hhciBpYyk7XG4gICAgZG9uZTtcbiAgICBhc3NlcnQgZmFsc2VcbiAgd2l0aCBFbmRfb2ZfZmlsZSAtPlxuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0ICggLy8gKSA9IEZpbGVuYW1lLmNvbmNhdFxuXG5sZXQgZGVmYXVsdF9kaWN0X3BhdGggKCkgPVxuICB0cnlcbiAgICBtYXRjaCBTeXMub3NfdHlwZSB3aXRoXG4gICAgICAgIFwiVW5peFwiIC0+IFNvbWUgKFN5cy5nZXRlbnYgXCJIT01FXCIgLy8gXCIuYmR1bXAtZGljdFwiKVxuICAgICAgfCBcIldpbjMyXCIgLT4gU29tZSAoU3lzLmdldGVudiBcIkhPTUVQQVRIXCIgLy8gXCJfYmR1bXAtZGljdFwiKVxuICAgICAgfCBcIkN5Z3dpblwiIC0+IFNvbWUgKFN5cy5nZXRlbnYgXCJIT01FXCIgLy8gXCIuYmR1bXAtZGljdFwiKVxuICAgICAgfCBfIC0+IE5vbmVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBOb25lXG5cbmxldCBsb2FkX2RpY3Rpb25hcnkgZGljX2ZpbGUgYWNjdSA9XG4gIG1hdGNoIGRpY19maWxlIHdpdGhcbiAgICAgIE5vbmUgLT4gYWNjdVxuICAgIHwgU29tZSBmbiAtPlxuICAgICAgICBpZiBTeXMuZmlsZV9leGlzdHMgZm4gdGhlblxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbG9hZF9saW5lcyBhY2N1IGZuXG4gICAgICAgICAgd2l0aCBlIC0+XG4gICAgICAgICAgICBmYWlsd2l0aCAoc3ByaW50ZiBcIkNhbm5vdCBsb2FkIGRpY3Rpb25hcnkgZnJvbSAlUzogJXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmbiAoUHJpbnRleGMudG9fc3RyaW5nIGUpKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYWNjdVxuXG5sZXQgd3JpdGVfdW5pcSBvYyBhID1cbiAgaWYgQXJyYXkubGVuZ3RoIGEgPiAwIHRoZW4gKFxuICAgIGZwcmludGYgb2MgXCIlc1xcblwiIGEuKDApO1xuICAgIGlnbm9yZSAoXG4gICAgICBBcnJheS5mb2xkX2xlZnQgKFxuICAgICAgICBmdW4gbGFzdCB4IC0+XG4gICAgICAgICAgaWYgbGFzdCA8PiB4IHRoZW5cbiAgICAgICAgICAgIGZwcmludGYgb2MgXCIlc1xcblwiIHg7XG4gICAgICAgICAgeFxuICAgICAgKSBhLigwKSBhXG4gICAgKVxuICApXG5cbmxldCBzYXZlX2RpY3Rpb25hcnkgZGljX2ZpbGUgbCA9XG4gIG1hdGNoIGRpY19maWxlIHdpdGhcbiAgICAgIE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZm4gLT5cbiAgICAgICAgbGV0IGEgPSBBcnJheS5vZl9saXN0IGwgaW5cbiAgICAgICAgQXJyYXkuc29ydCBTdHJpbmcuY29tcGFyZSBhO1xuICAgICAgICBsZXQgb2MgPSBvcGVuX291dCBmbiBpblxuICAgICAgICBsZXQgZmluYWxseSAoKSA9IGNsb3NlX291dF9ub2VyciBvYyBpblxuICAgICAgICB0cnlcbiAgICAgICAgICB3cml0ZV91bmlxIG9jIGE7XG4gICAgICAgICAgZmluYWxseSAoKVxuICAgICAgICB3aXRoIGUgLT5cbiAgICAgICAgICBmaW5hbGx5ICgpO1xuICAgICAgICAgIHJhaXNlIGVcbiIsIiMgMSBcImNvbW1vbi5tbFwiXG5sZXQgdmVyc2lvbiA9IFwiMi4xLjBcIlxuXG5leGNlcHRpb24gSnNvbl9lcnJvciBvZiBzdHJpbmdcblxubGV0IGpzb25fZXJyb3IgcyA9IHJhaXNlIChKc29uX2Vycm9yIHMpXG5cbmV4Y2VwdGlvbiBFbmRfb2ZfYXJyYXlcbmV4Y2VwdGlvbiBFbmRfb2Zfb2JqZWN0XG5leGNlcHRpb24gRW5kX29mX3R1cGxlXG5leGNlcHRpb24gRW5kX29mX2lucHV0XG5cbnR5cGUgaW5fcGFyYW0gPSB7IHN0cmluZ19idWYgOiBCdWZmZXIudCB9XG5cbmxldCBjcmVhdGVfaW5fcGFyYW0gPyhsZW4gPSAyNTYpICgpID0geyBzdHJpbmdfYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gfVxuXG5sZXQgdXRmOF9vZl9jb2RlIGJ1ZiB4ID1cbiAgbGV0IGFkZCA9IEJ1ZmZlci5hZGRfY2hhciBpblxuXG4gICgqIFN0cmFpZ2h0IDw9IGRvZXNuJ3Qgd29yayB3aXRoIHNpZ25lZCAzMS1iaXQgaW50cyAqKVxuICBsZXQgbWF4Yml0cyBuIHggPSB4IGxzciBuID0gMCBpblxuXG4gIGlmIG1heGJpdHMgNyB4IHRoZW4gKCogNyAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyIHgpXG4gIGVsc2UgaWYgbWF4Yml0cyAxMSB4IHRoZW4gKFxuICAgICgqIDUgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTEwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMDExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAxNiB4IHRoZW4gKFxuICAgICgqIDQgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAwMDExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAyMSB4IHRoZW4gKFxuICAgICgqIDMgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMDAwMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAyNiB4IHRoZW4gKFxuICAgICgqIDIgKyA2ICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTEwMDAgbG9yICgoeCBsc3IgMjQpIGxhbmQgMGIwMDAwMDAxMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgKFxuICAgIGFzc2VydCAobWF4Yml0cyAzMSB4KTtcbiAgICAoKiAxICsgNiArIDYgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMTEwMCBsb3IgKCh4IGxzciAzMCkgbGFuZCAwYjAwMDAwMDAxKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDI0KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuXG5sZXQgY29kZV9vZl9zdXJyb2dhdGVfcGFpciBpIGogPVxuICBsZXQgaGlnaDEwID0gaSAtIDB4RDgwMCBpblxuICBsZXQgbG93MTAgPSBqIC0gMHhEQzAwIGluXG4gIDB4MTAwMDAgKyAoKGhpZ2gxMCBsc2wgMTApIGxvciBsb3cxMClcblxubGV0IHV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgYnVmIGkgaiA9XG4gIHV0Zjhfb2ZfY29kZSBidWYgKGNvZGVfb2Zfc3Vycm9nYXRlX3BhaXIgaSBqKVxuXG50eXBlIGxleGVyX3N0YXRlID0ge1xuICBidWYgOiBCdWZmZXIudDsgKCogQnVmZmVyIHVzZWQgdG8gYWNjdW11bGF0ZSBzdWJzdHJpbmdzICopXG4gIG11dGFibGUgbG51bSA6IGludDsgKCogQ3VycmVudCBsaW5lIG51bWJlciAoc3RhcnRpbmcgZnJvbSAxKSAqKVxuICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICAgICgqIEFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGN1cnJlbnQgbGluZVxuICAgICAgICAgKHN0YXJ0aW5nIGZyb20gMCkgKilcbiAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247ICgqIE5hbWUgZGVzY3JpYmluZyB0aGUgaW5wdXQgZmlsZSAqKVxufVxuXG5tb2R1bGUgTGV4ZXJfc3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gbGV4ZXJfc3RhdGUgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5lbmRcblxubGV0IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgPyhsbnVtID0gMSkgKCkgPVxuICBsZXQgYnVmID0gbWF0Y2ggYnVmIHdpdGggTm9uZSAtPiBCdWZmZXIuY3JlYXRlIDI1NiB8IFNvbWUgYnVmIC0+IGJ1ZiBpblxuICB7IGJ1ZjsgbG51bTsgYm9sID0gMDsgZm5hbWUgfVxuXG4jIDEgXCJ0eXBlLm1sXCJcbigqKiB7MyBUeXBlIG9mIHRoZSBKU09OIHRyZWV9ICopXG5cbnR5cGUgdCA9XG4gICAgW1xuICAgIHwgYE51bGxcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICBcbiMgOCBcInR5cGUubWxcIlxuICAgIHwgYEludCBvZiBpbnRcbiAgICBcbiMgMTEgXCJ0eXBlLm1sXCJcbiAgICB8IGBJbnRsaXQgb2Ygc3RyaW5nXG4gICAgXG4jIDE0IFwidHlwZS5tbFwiXG4gICAgfCBgRmxvYXQgb2YgZmxvYXRcbiAgICBcbiMgMTcgXCJ0eXBlLm1sXCJcbiAgICB8IGBGbG9hdGxpdCBvZiBzdHJpbmdcbiAgICBcbiMgMjAgXCJ0eXBlLm1sXCJcbiAgICB8IGBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgXG4jIDIzIFwidHlwZS5tbFwiXG4gICAgfCBgU3RyaW5nbGl0IG9mIHN0cmluZ1xuICAgIFxuIyAyNSBcInR5cGUubWxcIlxuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICBcbiMgMjggXCJ0eXBlLm1sXCJcbiAgICB8IGBUdXBsZSBvZiB0IGxpc3RcbiAgICBcbiMgMzEgXCJ0eXBlLm1sXCJcbiAgICB8IGBWYXJpYW50IG9mIChzdHJpbmcgKiB0IG9wdGlvbilcbiAgICBcbiMgMzMgXCJ0eXBlLm1sXCJcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcbiMgMSBcIndyaXRlLm1sXCJcbigqIGluY2x1ZGVkOiB0eXBlLm1sICopXG5cbmxldCBoZXggbiA9XG4gIENoYXIuY2hyIChcbiAgICBpZiBuIDwgMTAgdGhlbiBuICsgNDhcbiAgICBlbHNlIG4gKyA4N1xuICApXG5cbmxldCB3cml0ZV9zcGVjaWFsIHNyYyBzdGFydCBzdG9wIG9iIHN0ciA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdHI7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCB3cml0ZV9jb250cm9sX2NoYXIgc3JjIHN0YXJ0IHN0b3Agb2IgYyA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXFx1MDBcIjtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxzciA0KSk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsYW5kIDB4ZikpO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgZmluaXNoX3N0cmluZyBzcmMgc3RhcnQgb2IgPVxuICB0cnlcbiAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydClcbiAgd2l0aCBleGMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcInNyYz0lUyBzdGFydD0laSBsZW49JWlcXG4lIVwiXG4gICAgICBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydCk7XG4gICAgcmFpc2UgZXhjXG5cbmxldCB3cml0ZV9zdHJpbmdfYm9keSBvYiBzID1cbiAgbGV0IHN0YXJ0ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICdcIicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcIlwiXG4gICAgICB8ICdcXFxcJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgJ1xcYicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcYlwiXG4gICAgICB8ICdcXDAxMicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcZlwiXG4gICAgICB8ICdcXG4nIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXG5cIlxuICAgICAgfCAnXFxyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxyXCJcbiAgICAgIHwgJ1xcdCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcdFwiXG4gICAgICB8ICdcXHgwMCcuLidcXHgxRidcbiAgICAgIHwgJ1xceDdGJyBhcyBjIC0+IHdyaXRlX2NvbnRyb2xfY2hhciBzIHN0YXJ0IGkgb2IgY1xuICAgICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGZpbmlzaF9zdHJpbmcgcyBzdGFydCBvYlxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHMgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcztcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IGpzb25fc3RyaW5nX29mX3N0cmluZyBzID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAxMCBpblxuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCB0ZXN0X3N0cmluZyAoKSA9XG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBmb3IgaSA9IDAgdG8gMjU1IGRvXG4gICAgQnl0ZXMuc2V0IHMgaSAoQ2hhci5jaHIgaSlcbiAgZG9uZTtcbiAganNvbl9zdHJpbmdfb2Zfc3RyaW5nIChCeXRlcy50b19zdHJpbmcgcylcblxuXG5sZXQgd3JpdGVfbnVsbCBvYiAoKSA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwibnVsbFwiXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKVxuXG5cbmxldCBtYXhfZGlnaXRzID1cbiAgbWF4XG4gICAgKFN0cmluZy5sZW5ndGggKHN0cmluZ19vZl9pbnQgbWF4X2ludCkpXG4gICAgKFN0cmluZy5sZW5ndGggKHN0cmluZ19vZl9pbnQgbWluX2ludCkpXG5cbmxldCBkZWMgbiA9XG4gIENoYXIuY2hyIChuICsgNDgpXG5cbmxldCByZWMgd3JpdGVfZGlnaXRzIHMgeCA9XG4gIGlmIHggPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCBkID0geCBtb2QgMTAgaW5cbiAgICB3cml0ZV9kaWdpdHMgcyAoeCAvIDEwKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgcyAoZGVjIChhYnMgZCkpXG5cbmxldCB3cml0ZV9pbnQgb2IgeCA9XG4gIGlmIHggPiAwIHRoZW5cbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICBlbHNlIGlmIHggPCAwIHRoZW4gKFxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLSc7XG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgKVxuICBlbHNlXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcwJ1xuXG5cbmxldCBqc29uX3N0cmluZ19vZl9pbnQgaSA9XG4gIHN0cmluZ19vZl9pbnQgaVxuXG5cbigqXG4gIEVuc3VyZSB0aGF0IHRoZSBmbG9hdCBpcyBub3QgcHJpbnRlZCBhcyBhbiBpbnQuXG4gIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IEpTT04sIGJ1dCB1c2VmdWwgaW4gb3JkZXIgdG8gZ3VhcmFudGVlXG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IGZsb2F0X25lZWRzX3BlcmlvZCBzID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAnMCcuLic5JyB8ICctJyAtPiAoKVxuICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIEV4aXQgLT5cbiAgICBmYWxzZVxuXG4oKlxuICBHdWFyYW50ZWVzIHRoYXQgYSBzdWZmaWNpZW50IG51bWJlciBvZiBkaWdpdHMgYXJlIHByaW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgd3JpdGVfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG5sZXQgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbGV0IG9wZW4gUHJpbnRmIGluXG4gIGxldCBzID1cbiAgICBtYXRjaCBzaWduaWZpY2FudF9maWd1cmVzIHdpdGhcbiAgICAgICAgMSAtPiBzcHJpbnRmIFwiJS4xZ1wiIHhcbiAgICAgIHwgMiAtPiBzcHJpbnRmIFwiJS4yZ1wiIHhcbiAgICAgIHwgMyAtPiBzcHJpbnRmIFwiJS4zZ1wiIHhcbiAgICAgIHwgNCAtPiBzcHJpbnRmIFwiJS40Z1wiIHhcbiAgICAgIHwgNSAtPiBzcHJpbnRmIFwiJS41Z1wiIHhcbiAgICAgIHwgNiAtPiBzcHJpbnRmIFwiJS42Z1wiIHhcbiAgICAgIHwgNyAtPiBzcHJpbnRmIFwiJS43Z1wiIHhcbiAgICAgIHwgOCAtPiBzcHJpbnRmIFwiJS44Z1wiIHhcbiAgICAgIHwgOSAtPiBzcHJpbnRmIFwiJS45Z1wiIHhcbiAgICAgIHwgMTAgLT4gc3ByaW50ZiBcIiUuMTBnXCIgeFxuICAgICAgfCAxMSAtPiBzcHJpbnRmIFwiJS4xMWdcIiB4XG4gICAgICB8IDEyIC0+IHNwcmludGYgXCIlLjEyZ1wiIHhcbiAgICAgIHwgMTMgLT4gc3ByaW50ZiBcIiUuMTNnXCIgeFxuICAgICAgfCAxNCAtPiBzcHJpbnRmIFwiJS4xNGdcIiB4XG4gICAgICB8IDE1IC0+IHNwcmludGYgXCIlLjE1Z1wiIHhcbiAgICAgIHwgMTYgLT4gc3ByaW50ZiBcIiUuMTZnXCIgeFxuICAgICAgfCBfIC0+IHNwcmludGYgXCIlLjE3Z1wiIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQganNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX3N0ZF9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBqc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBqc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9zdGRfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIGpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIGpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHRlc3RfZmxvYXQgKCkgPVxuICBsZXQgbCA9IFsgMC47IDEuOyAtMS4gXSBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4gMi4gKi4geCArLiAxLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAvLiBzcXJ0IDIuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4ICouIHNxcnQgMy4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgY29zIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggKi4gMS4yM2U1MCkgbCBpblxuICBsZXQgbCA9IGwgQCBbIGluZmluaXR5OyBuZWdfaW5maW5pdHkgXSBpblxuICBMaXN0Lml0ZXIgKFxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgcyA9IFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4IGluXG4gICAgICBsZXQgeSA9IGZsb2F0X29mX3N0cmluZyBzIGluXG4gICAgICBQcmludGYucHJpbnRmIFwiJWcgJWcgJVMgJUJcXG5cIiB4IHkgcyAoeCA9IHkpXG4gIClcbiAgICBsXG5cbigqXG5sZXQgKCkgPSB0ZXN0X2Zsb2F0ICgpXG4qKVxuXG5sZXQgd3JpdGVfaW50bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9mbG9hdGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfc3RyaW5nbGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcblxubGV0IHJlYyBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfc2VwIHg7XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBpdGVyMiBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgZl9zZXAgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgd3JpdGVfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIFxuIyAyNjQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICBcbiMgMjY3IFwid3JpdGUubWxcIlxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMjcwIFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfZmxvYXQgb2IgZlxuICAgIFxuIyAyNzMgXCJ3cml0ZS5tbFwiXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDI3NiBcIndyaXRlLm1sXCJcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIFxuIyAyNzkgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAyODEgXCJ3cml0ZS5tbFwiXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX2xpc3Qgb2IgbFxuICAgIFxuIyAyODQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV90dXBsZSBvYiBsXG4gICAgXG4jIDI4NyBcIndyaXRlLm1sXCJcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV92YXJpYW50IG9iIHMgb1xuXG4jIDI5MCBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG4jIDMwNiBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcoJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJyknXG5cbiMgMzEzIFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3ZhcmlhbnQgb2IgcyBvID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc8JztcbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIChtYXRjaCBvIHdpdGhcbiAgICAgICBOb25lIC0+ICgpXG4gICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgICAgICAgd3JpdGVfanNvbiBvYiB4XG4gICk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPidcblxuIyAzMjUgXCJ3cml0ZS5tbFwiXG5sZXQgd3JpdGVfdCA9IHdyaXRlX2pzb25cblxubGV0IHJlYyB3cml0ZV9zdGRfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIFxuIyAzMzIgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICBcbiMgMzM1IFwid3JpdGUubWxcIlxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzM4IFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfc3RkX2Zsb2F0IG9iIGZcbiAgICBcbiMgMzQxIFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAzNDQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzQ3IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzQ5IFwid3JpdGUubWxcIlxuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuICAgIFxuIyAzNTIgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV9zdGRfdHVwbGUgb2IgbFxuICAgIFxuIyAzNTUgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvXG5cbiMgMzU4IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbiMgMzc5IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgbyA9XG4gIG1hdGNoIG8gd2l0aFxuICAgICAgTm9uZSAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gICAgICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgICB3cml0ZV9zdGRfanNvbiBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxuIyAzOTEgXCJ3cml0ZS5tbFwiXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYik7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fZmlsZSA/bGVuID9zdGQgPyhzdWYgPSBcIlxcblwiKSBmaWxlIHggPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHRvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2MgeDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubGV0IHNlcV90b19idWZmZXIgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9iIHN0ID1cbiAgU2VxLml0ZXIgKHRvX2J1ZmZlciB+c3VmID9zdGQgb2IpIHN0XG5cbmxldCBzZXFfdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBzdCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHNlcV90b19idWZmZXIgfnN1ZiA/c3RkIG9iIHN0O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHNlcV90b19jaGFubmVsID9idWYgPyhsZW49MjA5NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9jIHNlcSA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgU2VxLml0ZXIgKGZ1biBqc29uIC0+XG4gICAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBqc29uO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgKSBzZXFcblxubGV0IHNlcV90b19maWxlID9sZW4gPyhzdWYgPSBcIlxcblwiKSA/c3RkIGZpbGUgc3QgPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHN0O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5cbmxldCByZWMgc29ydCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgc29ydCB2KSkgbCkgaW5cbiAgICAgIGBBc3NvYyAoTGlzdC5zdGFibGVfc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSBsKVxuICB8IGBMaXN0IGwgLT5cbiAgICAgIGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIFxuIyA0ODUgXCJ3cml0ZS5tbFwiXG4gIHwgYFR1cGxlIGwgLT5cbiAgICAgIGBUdXBsZSAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICBcbiMgNDg5IFwid3JpdGUubWxcIlxuICB8IGBWYXJpYW50IChrLCBTb21lIHYpIGFzIHggLT5cbiAgICAgIGxldCB2JyA9IHNvcnQgdiBpblxuICAgICAgaWYgdiA9PSB2JyB0aGVuIHhcbiAgICAgIGVsc2VcbiAgICAgICAgYFZhcmlhbnQgKGssIFNvbWUgdicpXG4gIFxuIyA0OTUgXCJ3cml0ZS5tbFwiXG4gIHwgeCAtPiB4XG4jIDEgXCJtb25vbW9ycGhpYy5tbFwiXG5sZXQgcmVjIHBwIGZtdCA9XG4gIGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJgTnVsbFwiXG4gIHwgYEJvb2wgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBCb29sIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUJcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA5IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZFwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDE1IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDIxIFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBGbG9hdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUZcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAyNyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgRmxvYXRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMzMgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFN0cmluZyB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMzkgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFN0cmluZ2xpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZ2xpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgNDQgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEFzc29jIHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEFzc29jIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBrZXk7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgICAgICAgcHAgZm10IHZhbHVlO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYExpc3QgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgTGlzdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIHggLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgNzEgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFR1cGxlIHR1cCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBUdXBsZSAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIGUgLT5cbiAgICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgICBwcCBmbXQgZTtcbiAgICAgICAgICAgdHJ1ZSkgZmFsc2UgdHVwKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA4NCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFZhcmlhbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIG5hbWU7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgKG1hdGNoIHZhbHVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5vbmVcIlxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIoU29tZSBcIjtcbiAgICAgICAgcHAgZm10IHg7XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKVwiKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuXG4jIDk5IFwibW9ub21vcnBoaWMubWxcIlxubGV0IHNob3cgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHAgeFxuXG5sZXQgcmVjIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IGBOdWxsLCBgTnVsbCAtPiB0cnVlXG4gIHwgYEJvb2wgYSwgYEJvb2wgYiAtPiBhID0gYlxuICBcbiMgMTA3IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnQgYSwgYEludCBiIC0+IGEgPSBiXG4gICAgXG4jIDExMCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBJbnRsaXQgYSwgYEludGxpdCBiIC0+IGEgPSBiXG4gICAgXG4jIDExMyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBGbG9hdCBhLCBgRmxvYXQgYiAtPiBhID0gYlxuICAgIFxuIyAxMTYgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgRmxvYXRsaXQgYSwgYEZsb2F0bGl0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTE5IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFN0cmluZyBhLCBgU3RyaW5nIGIgLT4gYSA9IGJcbiAgICBcbiMgMTIyIFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBhLCBgU3RyaW5nbGl0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTI0IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEFzc29jIHhzLCBgQXNzb2MgeXMgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleXMgPSBmdW4gKGtleSwgXykgKGtleScsIF8pIC0+IFN0cmluZy5jb21wYXJlIGtleSBrZXknIGluXG4gICAgICBsZXQgeHMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB4cyBpblxuICAgICAgbGV0IHlzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeXMgaW5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIChmdW4gKGtleSwgdmFsdWUpIChrZXknLCB2YWx1ZScpIC0+XG4gICAgICAgIG1hdGNoIGtleSA9IGtleScgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPiBlcXVhbCB2YWx1ZSB2YWx1ZScpIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgXG4jIDEzNyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBUdXBsZSB4cywgYFR1cGxlIHlzXG4gICAgXG4jIDEzOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBMaXN0IHhzLCBgTGlzdCB5cyAtPlxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgZXF1YWwgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICBcbiMgMTQ2IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSwgYFZhcmlhbnQgKG5hbWUnLCB2YWx1ZScpIC0+XG4gICAgICAobWF0Y2ggbmFtZSA9IG5hbWUnIHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBtYXRjaCB2YWx1ZSwgdmFsdWUnIHdpdGhcbiAgICAgICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcXVhbCB4IHlcbiAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIFxuIyAxNTUgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBfIC0+IGZhbHNlXG4jIDE0IFwieW9qc29uLmNwcG8ubWxcIlxubW9kdWxlIFByZXR0eSA9XG5zdHJ1Y3RcbiMgMSBcInByZXR0eS5tbFwiXG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgXG4jIDc4IFwicHJldHR5Lm1sXCJcbiAgICB8IGBJbnQgeCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2ZfaW50IHgpXG4gICAgXG4jIDgxIFwicHJldHR5Lm1sXCJcbiAgICB8IGBGbG9hdCB4IC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBzdGQgdGhlbiBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICAgIGVsc2UganNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDg5IFwicHJldHR5Lm1sXCJcbiAgICB8IGBTdHJpbmcgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG4gICAgXG4jIDkyIFwicHJldHR5Lm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDk1IFwicHJldHR5Lm1sXCJcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICBcbiMgOTggXCJwcmV0dHkubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICBcbiMgMTAwIFwicHJldHR5Lm1sXCJcbiAgICB8IGBMaXN0IFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiW11cIlxuICAgIHwgYExpc3QgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBpZiBpc19hdG9tX2xpc3QgbCB0aGVuXG4gICAgICAgICgqIHVzZSBsaW5lIHdyYXBwaW5nIGxpa2Ugd2Ugd291bGQgZG8gZm9yIGEgcGFyYWdyYXBoIG9mIHRleHQgKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxob3Y+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsXG4gICAgICBlbHNlXG4gICAgICAgICgqIHByaW50IHRoZSBlbGVtZW50cyBob3Jpem9udGFsbHkgaWYgdGhleSBmaXQgb24gdGhlIGxpbmUsXG4gICAgICAgICAgIG90aGVyd2lzZSBwcmludCB0aGVtIGluIGEgY29sdW1uICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aHY+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYEFzc29jIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwie31cIlxuICAgIHwgYEFzc29jIGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwie0A7PDEgMD4lYUA7PDEgLTI+fVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXRfZmllbGQgc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICBcbiMgMTE5IFwicHJldHR5Lm1sXCJcbiAgICB8IGBUdXBsZSBsIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpZiBsID0gW10gdGhlblxuICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCIoKVwiXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGhvdjI+XCI7XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCIoQCwlYUA7PDAgLTI+KVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICAgICAgICApXG4gICAgXG4jIDEzMiBcInByZXR0eS5tbFwiXG4gICAgfCBgVmFyaWFudCAocywgTm9uZSkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBcbiMgMTM1IFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nIHMgaW5cbiAgICAgICAgICBcbiMgMTM5IFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCByZXByZXNlbnRhdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPCVzPlwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcblxuICAgIHwgYFZhcmlhbnQgKHMsIFNvbWUgeCkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBcbiMgMTQ2IFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nIHMgaW5cbiAgICAgICAgICBcbiMgMTUwIFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgWyByZXByZXNlbnRhdGlvbjsgeCBdKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG9wID0ganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8QFs8aHYyPiVzOiAlYUBdPlwiIG9wIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxuIyAxNTYgXCJwcmV0dHkubWxcIlxuYW5kIGZvcm1hdF9maWVsZCBzdGQgb3V0IChuYW1lLCB4KSA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lczogJWFAXVwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgbmFtZSkgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5sZXQgcHAgPyhzdGQgPSBmYWxzZSkgb3V0IHggPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JWFAXVwiIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpICh4IDo+IHQpXG5cbmxldCB0b19zdHJpbmcgP3N0ZCB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAocHAgP3N0ZCkgeFxuXG5sZXQgdG9fY2hhbm5lbCA/c3RkIG9jIHggPVxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYUA/XCIgKHBwID9zdGQpIHhcbiMgMTcgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcbiMgMSBcIndyaXRlMi5tbFwiXG5sZXQgcHJldHR5X3ByaW50ID9zdGQgb3V0IHggPSBQcmV0dHkucHAgP3N0ZCBvdXQgeFxubGV0IHByZXR0eV90b19zdHJpbmcgP3N0ZCB4ID0gUHJldHR5LnRvX3N0cmluZyA/c3RkIHhcbmxldCBwcmV0dHlfdG9fY2hhbm5lbCA/c3RkIG9jIHggPSBQcmV0dHkudG9fY2hhbm5lbCA/c3RkIG9jIHhcblxuIyAyOCBcInlvanNvbi5jcHBvLm1sXCJcbm1vZHVsZSBCYXNpYyA9XG5zdHJ1Y3RcbiMgMSBcInR5cGUubWxcIlxuKCoqIHszIFR5cGUgb2YgdGhlIEpTT04gdHJlZX0gKilcblxudHlwZSB0ID1cbiAgICBbXG4gICAgfCBgTnVsbFxuICAgIHwgYEJvb2wgb2YgYm9vbFxuICAgIFxuIyA4IFwidHlwZS5tbFwiXG4gICAgfCBgSW50IG9mIGludFxuICAgIFxuIyAxNCBcInR5cGUubWxcIlxuICAgIHwgYEZsb2F0IG9mIGZsb2F0XG4gICAgXG4jIDIwIFwidHlwZS5tbFwiXG4gICAgfCBgU3RyaW5nIG9mIHN0cmluZ1xuICAgIFxuIyAyNSBcInR5cGUubWxcIlxuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICBcbiMgMzMgXCJ0eXBlLm1sXCJcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcbiMgMSBcIndyaXRlLm1sXCJcbigqIGluY2x1ZGVkOiB0eXBlLm1sICopXG5cbmxldCBoZXggbiA9XG4gIENoYXIuY2hyIChcbiAgICBpZiBuIDwgMTAgdGhlbiBuICsgNDhcbiAgICBlbHNlIG4gKyA4N1xuICApXG5cbmxldCB3cml0ZV9zcGVjaWFsIHNyYyBzdGFydCBzdG9wIG9iIHN0ciA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdHI7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCB3cml0ZV9jb250cm9sX2NoYXIgc3JjIHN0YXJ0IHN0b3Agb2IgYyA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXFx1MDBcIjtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxzciA0KSk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsYW5kIDB4ZikpO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgZmluaXNoX3N0cmluZyBzcmMgc3RhcnQgb2IgPVxuICB0cnlcbiAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydClcbiAgd2l0aCBleGMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcInNyYz0lUyBzdGFydD0laSBsZW49JWlcXG4lIVwiXG4gICAgICBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydCk7XG4gICAgcmFpc2UgZXhjXG5cbmxldCB3cml0ZV9zdHJpbmdfYm9keSBvYiBzID1cbiAgbGV0IHN0YXJ0ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICdcIicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcIlwiXG4gICAgICB8ICdcXFxcJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgJ1xcYicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcYlwiXG4gICAgICB8ICdcXDAxMicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcZlwiXG4gICAgICB8ICdcXG4nIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXG5cIlxuICAgICAgfCAnXFxyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxyXCJcbiAgICAgIHwgJ1xcdCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcdFwiXG4gICAgICB8ICdcXHgwMCcuLidcXHgxRidcbiAgICAgIHwgJ1xceDdGJyBhcyBjIC0+IHdyaXRlX2NvbnRyb2xfY2hhciBzIHN0YXJ0IGkgb2IgY1xuICAgICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGZpbmlzaF9zdHJpbmcgcyBzdGFydCBvYlxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHMgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcztcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IGpzb25fc3RyaW5nX29mX3N0cmluZyBzID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAxMCBpblxuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCB0ZXN0X3N0cmluZyAoKSA9XG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBmb3IgaSA9IDAgdG8gMjU1IGRvXG4gICAgQnl0ZXMuc2V0IHMgaSAoQ2hhci5jaHIgaSlcbiAgZG9uZTtcbiAganNvbl9zdHJpbmdfb2Zfc3RyaW5nIChCeXRlcy50b19zdHJpbmcgcylcblxuXG5sZXQgd3JpdGVfbnVsbCBvYiAoKSA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwibnVsbFwiXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKVxuXG5cbmxldCBtYXhfZGlnaXRzID1cbiAgbWF4XG4gICAgKFN0cmluZy5sZW5ndGggKHN0cmluZ19vZl9pbnQgbWF4X2ludCkpXG4gICAgKFN0cmluZy5sZW5ndGggKHN0cmluZ19vZl9pbnQgbWluX2ludCkpXG5cbmxldCBkZWMgbiA9XG4gIENoYXIuY2hyIChuICsgNDgpXG5cbmxldCByZWMgd3JpdGVfZGlnaXRzIHMgeCA9XG4gIGlmIHggPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCBkID0geCBtb2QgMTAgaW5cbiAgICB3cml0ZV9kaWdpdHMgcyAoeCAvIDEwKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgcyAoZGVjIChhYnMgZCkpXG5cbmxldCB3cml0ZV9pbnQgb2IgeCA9XG4gIGlmIHggPiAwIHRoZW5cbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICBlbHNlIGlmIHggPCAwIHRoZW4gKFxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLSc7XG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgKVxuICBlbHNlXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcwJ1xuXG5cbmxldCBqc29uX3N0cmluZ19vZl9pbnQgaSA9XG4gIHN0cmluZ19vZl9pbnQgaVxuXG5cbigqXG4gIEVuc3VyZSB0aGF0IHRoZSBmbG9hdCBpcyBub3QgcHJpbnRlZCBhcyBhbiBpbnQuXG4gIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IEpTT04sIGJ1dCB1c2VmdWwgaW4gb3JkZXIgdG8gZ3VhcmFudGVlXG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IGZsb2F0X25lZWRzX3BlcmlvZCBzID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAnMCcuLic5JyB8ICctJyAtPiAoKVxuICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIEV4aXQgLT5cbiAgICBmYWxzZVxuXG4oKlxuICBHdWFyYW50ZWVzIHRoYXQgYSBzdWZmaWNpZW50IG51bWJlciBvZiBkaWdpdHMgYXJlIHByaW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgd3JpdGVfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG5sZXQgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbGV0IG9wZW4gUHJpbnRmIGluXG4gIGxldCBzID1cbiAgICBtYXRjaCBzaWduaWZpY2FudF9maWd1cmVzIHdpdGhcbiAgICAgICAgMSAtPiBzcHJpbnRmIFwiJS4xZ1wiIHhcbiAgICAgIHwgMiAtPiBzcHJpbnRmIFwiJS4yZ1wiIHhcbiAgICAgIHwgMyAtPiBzcHJpbnRmIFwiJS4zZ1wiIHhcbiAgICAgIHwgNCAtPiBzcHJpbnRmIFwiJS40Z1wiIHhcbiAgICAgIHwgNSAtPiBzcHJpbnRmIFwiJS41Z1wiIHhcbiAgICAgIHwgNiAtPiBzcHJpbnRmIFwiJS42Z1wiIHhcbiAgICAgIHwgNyAtPiBzcHJpbnRmIFwiJS43Z1wiIHhcbiAgICAgIHwgOCAtPiBzcHJpbnRmIFwiJS44Z1wiIHhcbiAgICAgIHwgOSAtPiBzcHJpbnRmIFwiJS45Z1wiIHhcbiAgICAgIHwgMTAgLT4gc3ByaW50ZiBcIiUuMTBnXCIgeFxuICAgICAgfCAxMSAtPiBzcHJpbnRmIFwiJS4xMWdcIiB4XG4gICAgICB8IDEyIC0+IHNwcmludGYgXCIlLjEyZ1wiIHhcbiAgICAgIHwgMTMgLT4gc3ByaW50ZiBcIiUuMTNnXCIgeFxuICAgICAgfCAxNCAtPiBzcHJpbnRmIFwiJS4xNGdcIiB4XG4gICAgICB8IDE1IC0+IHNwcmludGYgXCIlLjE1Z1wiIHhcbiAgICAgIHwgMTYgLT4gc3ByaW50ZiBcIiUuMTZnXCIgeFxuICAgICAgfCBfIC0+IHNwcmludGYgXCIlLjE3Z1wiIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQganNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX3N0ZF9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBqc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBqc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9zdGRfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIGpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIGpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHRlc3RfZmxvYXQgKCkgPVxuICBsZXQgbCA9IFsgMC47IDEuOyAtMS4gXSBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4gMi4gKi4geCArLiAxLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAvLiBzcXJ0IDIuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4ICouIHNxcnQgMy4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgY29zIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggKi4gMS4yM2U1MCkgbCBpblxuICBsZXQgbCA9IGwgQCBbIGluZmluaXR5OyBuZWdfaW5maW5pdHkgXSBpblxuICBMaXN0Lml0ZXIgKFxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgcyA9IFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4IGluXG4gICAgICBsZXQgeSA9IGZsb2F0X29mX3N0cmluZyBzIGluXG4gICAgICBQcmludGYucHJpbnRmIFwiJWcgJWcgJVMgJUJcXG5cIiB4IHkgcyAoeCA9IHkpXG4gIClcbiAgICBsXG5cbigqXG5sZXQgKCkgPSB0ZXN0X2Zsb2F0ICgpXG4qKVxuXG5sZXQgd3JpdGVfaW50bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9mbG9hdGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfc3RyaW5nbGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcblxubGV0IHJlYyBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfc2VwIHg7XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBpdGVyMiBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgZl9zZXAgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgd3JpdGVfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIFxuIyAyNjQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICBcbiMgMjcwIFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfZmxvYXQgb2IgZlxuICAgIFxuIyAyNzYgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICBcbiMgMjgxIFwid3JpdGUubWxcIlxuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9saXN0IG9iIGxcblxuIyAyOTAgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG5cbiMgMzI1IFwid3JpdGUubWxcIlxubGV0IHdyaXRlX3QgPSB3cml0ZV9qc29uXG5cbmxldCByZWMgd3JpdGVfc3RkX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICBcbiMgMzMyIFwid3JpdGUubWxcIlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgXG4jIDMzOCBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX3N0ZF9mbG9hdCBvYiBmXG4gICAgXG4jIDM0NCBcIndyaXRlLm1sXCJcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIFxuIyAzNDkgXCJ3cml0ZS5tbFwiXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9zdGRfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9zdGRfbGlzdCBvYiBsXG5cbiMgMzU4IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxuXG4jIDM5MSBcIndyaXRlLm1sXCJcbmxldCB0b19idWZmZXIgPyhzdWYgPSBcIlwiKSA/KHN0ZCA9IGZhbHNlKSBvYiB4ID1cbiAgaWYgc3RkIHRoZW5cbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGVsc2VcbiAgICB3cml0ZV9qc29uIG9iIHg7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN1ZlxuXG5sZXQgdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcIikgP3N0ZCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHRvX2NoYW5uZWwgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb2MgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19vdXRwdXQgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb3V0IHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgb3V0I291dHB1dCAoQnVmZmVyLmNvbnRlbnRzIG9iKSAwIChCdWZmZXIubGVuZ3RoIG9iKTtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19maWxlID9sZW4gP3N0ZCA/KHN1ZiA9IFwiXFxuXCIpIGZpbGUgeCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyB4O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5sZXQgc2VxX3RvX2J1ZmZlciA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Igc3QgPVxuICBTZXEuaXRlciAodG9fYnVmZmVyIH5zdWYgP3N0ZCBvYikgc3RcblxubGV0IHNlcV90b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIHN0ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgc2VxX3RvX2J1ZmZlciB+c3VmID9zdGQgb2Igc3Q7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgc2VxX3RvX2NoYW5uZWwgP2J1ZiA/KGxlbj0yMDk2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Mgc2VxID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICBTZXEuaXRlciAoZnVuIGpzb24gLT5cbiAgICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIGpzb247XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gICAgQnVmZmVyLmNsZWFyIG9iO1xuICApIHNlcVxuXG5sZXQgc2VxX3RvX2ZpbGUgP2xlbiA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgZmlsZSBzdCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2Mgc3Q7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cblxubGV0IHJlYyBzb3J0ID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgbGV0IGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCBzb3J0IHYpKSBsKSBpblxuICAgICAgYEFzc29jIChMaXN0LnN0YWJsZV9zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpIGwpXG4gIHwgYExpc3QgbCAtPlxuICAgICAgYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgXG4jIDQ5NSBcIndyaXRlLm1sXCJcbiAgfCB4IC0+IHhcbiMgMzUgXCJ5b2pzb24uY3Bwby5tbFwiXG5tb2R1bGUgUHJldHR5ID1cbnN0cnVjdFxuIyAxIFwicHJldHR5Lm1sXCJcbigqXG4gICBQcmV0dHktcHJpbnQgSlNPTiBkYXRhIGluIGFuIGF0dGVtcHQgdG8gbWF4aW1pemUgcmVhZGFiaWxpdHkuXG5cbiAgIDEuIFdoYXQgZml0cyBvbiBvbmUgbGluZSBzdGF5cyBvbiBvbmUgbGluZS5cbiAgIDIuIFdoYXQgZG9lc24ndCBmaXQgb24gb25lIGxpbmUgZ2V0cyBwcmludGVkIG1vcmUgdmVydGljYWxseSBzbyBhcyB0byBub3RcbiAgICAgIGV4Y2VlZCBhIHJlYXNvbmFibGUgcGFnZSB3aWR0aCwgaWYgcG9zc2libGUuXG5cbiAgIEFycmF5cyBjb250YWluaW5nIG9ubHkgc2ltcGxlIGVsZW1lbnRzIChcImF0b21zXCIpIGFyZSBwcmV0dHktcHJpbnRlZCB3aXRoXG4gICBlbmQtb2YtbGluZSB3cmFwcGluZyBsaWtlIG9yZGluYXJ5IHRleHQ6XG5cbiAgICAgW1xuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIixcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCJcbiAgICAgXVxuXG4gICBPdGhlciBhcnJheXMgYXJlIHByaW50ZWQgZWl0aGVyIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGV5IGZpdCBvbiBhIHNpbmdsZSBsaW5lOlxuXG4gICAgIFsgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSBdXG5cbiAgIG9yXG5cbiAgICAgW1xuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfVxuICAgICBdXG4qKVxuXG5sZXQgcHBfbGlzdCBzZXAgcHB4IG91dCBsID1cbiAgbGV0IHBwX3NlcCBvdXQgKCkgPSBGb3JtYXQuZnByaW50ZiBvdXQgXCIlc0AgXCIgc2VwIGluXG4gIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXAgcHB4IG91dCBsXG5cbmxldCBpc19hdG9tICh4OiBbPiB0XSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTnVsbFxuICB8IGBCb29sIF9cbiAgfCBgSW50IF9cbiAgfCBgRmxvYXQgX1xuICB8IGBTdHJpbmcgX1xuICB8IGBJbnRsaXQgX1xuICB8IGBGbG9hdGxpdCBfXG4gIHwgYFN0cmluZ2xpdCBfXG4gIHwgYExpc3QgW11cbiAgfCBgQXNzb2MgW11cbiAgfCBgVHVwbGUgW11cbiAgfCBgVmFyaWFudCAoXywgTm9uZSkgLT4gdHJ1ZVxuICB8IGBMaXN0IF9cbiAgfCBgQXNzb2MgX1xuICB8IGBUdXBsZSBfXG4gIHwgYFZhcmlhbnQgKF8sIFNvbWUgXykgLT4gZmFsc2VcblxubGV0IGlzX2F0b21fbGlzdCBsID1cbiAgTGlzdC5mb3JfYWxsIGlzX2F0b20gbFxuXG4oKlxuICAgaW5zaWRlX2JveDogaW5kaWNhdGVzIHRoYXQgd2UncmUgYWxyZWFkeSB3aXRoaW4gYSBib3ggdGhhdCBpbXBvc2VzXG4gICBhIGNlcnRhaW4gc3R5bGUgYW5kIHdlIHNob3VsZG4ndCBjcmVhdGUgYSBuZXcgb25lLiBUaGlzIGlzIHVzZWQgZm9yXG4gICBwcmludGluZyBmaWVsZCB2YWx1ZXMgbGlrZSB0aGlzOlxuXG4gICAgIGZvbzogW1xuICAgICAgIGJhclxuICAgICBdXG5cbiAgIHJhdGhlciB0aGFuIHNvbWV0aGluZyBlbHNlIGxpa2VcblxuICAgICBmb286XG4gICAgICAgW1xuICAgICAgICAgYmFyXG4gICAgICAgXVxuKilcbmxldCByZWMgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCAob3V0OkZvcm1hdC5mb3JtYXR0ZXIpICh4OnQpIDogdW5pdCA9XG4gIG1hdGNoIHggd2l0aFxuICAgIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJudWxsXCJcbiAgICB8IGBCb29sIHggLT4gRm9ybWF0LnBwX3ByaW50X2Jvb2wgb3V0IHhcbiAgICBcbiMgNzggXCJwcmV0dHkubWxcIlxuICAgIHwgYEludCB4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9pbnQgeClcbiAgICBcbiMgODEgXCJwcmV0dHkubWxcIlxuICAgIHwgYEZsb2F0IHggLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIHN0ZCB0aGVuIHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgICAgZWxzZSBqc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICBcbiMgODkgXCJwcmV0dHkubWxcIlxuICAgIHwgYFN0cmluZyBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcbiAgICBcbiMgMTAwIFwicHJldHR5Lm1sXCJcbiAgICB8IGBMaXN0IFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiW11cIlxuICAgIHwgYExpc3QgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBpZiBpc19hdG9tX2xpc3QgbCB0aGVuXG4gICAgICAgICgqIHVzZSBsaW5lIHdyYXBwaW5nIGxpa2Ugd2Ugd291bGQgZG8gZm9yIGEgcGFyYWdyYXBoIG9mIHRleHQgKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxob3Y+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsXG4gICAgICBlbHNlXG4gICAgICAgICgqIHByaW50IHRoZSBlbGVtZW50cyBob3Jpem9udGFsbHkgaWYgdGhleSBmaXQgb24gdGhlIGxpbmUsXG4gICAgICAgICAgIG90aGVyd2lzZSBwcmludCB0aGVtIGluIGEgY29sdW1uICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aHY+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYEFzc29jIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwie31cIlxuICAgIHwgYEFzc29jIGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwie0A7PDEgMD4lYUA7PDEgLTI+fVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXRfZmllbGQgc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcblxuIyAxNTYgXCJwcmV0dHkubWxcIlxuYW5kIGZvcm1hdF9maWVsZCBzdGQgb3V0IChuYW1lLCB4KSA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lczogJWFAXVwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgbmFtZSkgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5sZXQgcHAgPyhzdGQgPSBmYWxzZSkgb3V0IHggPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JWFAXVwiIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpICh4IDo+IHQpXG5cbmxldCB0b19zdHJpbmcgP3N0ZCB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAocHAgP3N0ZCkgeFxuXG5sZXQgdG9fY2hhbm5lbCA/c3RkIG9jIHggPVxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYUA/XCIgKHBwID9zdGQpIHhcbiMgMzggXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcbiMgMSBcIm1vbm9tb3JwaGljLm1sXCJcbmxldCByZWMgcHAgZm10ID1cbiAgZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcImBOdWxsXCJcbiAgfCBgQm9vbCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEJvb2wgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlQlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDkgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEludCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMjEgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEZsb2F0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlRlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDMzIFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBTdHJpbmcgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmcgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDQ0IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBBc3NvYyB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBBc3NvYyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIChrZXksIHZhbHVlKSAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIga2V5O1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgICAgICAgIHBwIGZtdCB2YWx1ZTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBMaXN0IHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYExpc3QgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCB4IC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgcHAgZm10IHg7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxuIyA5OSBcIm1vbm9tb3JwaGljLm1sXCJcbmxldCBzaG93IHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwIHhcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBgTnVsbCwgYE51bGwgLT4gdHJ1ZVxuICB8IGBCb29sIGEsIGBCb29sIGIgLT4gYSA9IGJcbiAgXG4jIDEwNyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgSW50IGEsIGBJbnQgYiAtPiBhID0gYlxuICAgIFxuIyAxMTMgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgRmxvYXQgYSwgYEZsb2F0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTE5IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFN0cmluZyBhLCBgU3RyaW5nIGIgLT4gYSA9IGJcbiAgICBcbiMgMTI0IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEFzc29jIHhzLCBgQXNzb2MgeXMgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleXMgPSBmdW4gKGtleSwgXykgKGtleScsIF8pIC0+IFN0cmluZy5jb21wYXJlIGtleSBrZXknIGluXG4gICAgICBsZXQgeHMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB4cyBpblxuICAgICAgbGV0IHlzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeXMgaW5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIChmdW4gKGtleSwgdmFsdWUpIChrZXknLCB2YWx1ZScpIC0+XG4gICAgICAgIG1hdGNoIGtleSA9IGtleScgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPiBlcXVhbCB2YWx1ZSB2YWx1ZScpIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgXG4jIDEzOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBMaXN0IHhzLCBgTGlzdCB5cyAtPlxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgZXF1YWwgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICBcbiMgMTU1IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgXyAtPiBmYWxzZVxuIyAxIFwid3JpdGUyLm1sXCJcbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4jIDEgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBcbiMgMiBcImxpYi9yZWFkLm1sbFwiXG4gIG1vZHVsZSBMZXhpbmcgPVxuICAgICgqXG4gICAgICBXZSBvdmVycmlkZSBMZXhpbmcuZW5naW5lIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IHBvc2l0aW9uXG4gICAgICByZWNvcmQgZWFjaCB0aW1lIGEgcnVsZSBpcyBtYXRjaGVkLlxuICAgICAgVGhpcyByZWR1Y2VzIHRvdGFsIHBhcnNpbmcgdGltZSBieSBhYm91dCAzMSUuXG4gICAgKilcbiAgc3RydWN0XG4gICAgaW5jbHVkZSBMZXhpbmdcblxuICAgIGV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcblxuICAgIGxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gICAgICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICAgICAgKCpcbiAgICAgIGlmIHJlc3VsdCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgICAgIGVuZDtcbiAgICAgICopXG4gICAgICByZXN1bHRcbiAgZW5kXG5cbiAgb3BlbiBQcmludGZcbiAgb3BlbiBMZXhpbmdcblxuICAoKiBzZWUgZGVzY3JpcHRpb24gaW4gY29tbW9uLm1saSAqKVxuICB0eXBlIGxleGVyX3N0YXRlID0gTGV4ZXJfc3RhdGUudCA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgZGVjIGMgPVxuICAgIENoYXIuY29kZSBjIC0gNDhcblxuICBsZXQgaGV4IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnMCcuLic5JyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG4gICAgICB8ICdhJy4uJ2YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKyAxMFxuICAgICAgfCAnQScuLidGJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgMTBcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgY3VzdG9tX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQgb2ZmcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyAtIDEgaW5cbiAgICBsZXQgYm9sID0gdi5ib2wgaW5cbiAgICBsZXQgcG9zMSA9IG9mZnMgKyBsZXhidWYubGV4X3N0YXJ0X3BvcyAtIGJvbCAtIDEgaW5cbiAgICBsZXQgcG9zMiA9IG1heCBwb3MxIChvZmZzICsgbGV4YnVmLmxleF9jdXJyX3BvcyAtIGJvbCkgaW5cbiAgICBsZXQgZmlsZV9saW5lID1cbiAgICAgIG1hdGNoIHYuZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gXCJMaW5lXCJcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIHNwcmludGYgXCJGaWxlICVzLCBsaW5lXCIgc1xuICAgIGluXG4gICAgbGV0IGJ5dGVzID1cbiAgICAgIGlmIHBvczEgPSBwb3MyIHRoZW5cbiAgICAgICAgc3ByaW50ZiBcImJ5dGUgJWlcIiAocG9zMSsxKVxuICAgICAgZWxzZVxuICAgICAgICBzcHJpbnRmIFwiYnl0ZXMgJWktJWlcIiAocG9zMSsxKSAocG9zMisxKVxuICAgIGluXG4gICAgbGV0IG1zZyA9IHNwcmludGYgXCIlcyAlaSwgJXM6XFxuJXNcIiBmaWxlX2xpbmUgdi5sbnVtIGJ5dGVzIGRlc2NyIGluXG4gICAganNvbl9lcnJvciBtc2dcblxuXG4gIGxldCBsZXhlcl9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoc3ByaW50ZiBcIiVzICclcydcIiBkZXNjciAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgcmVhZF9qdW5rID0gcmVmIChmdW4gXyAtPiBhc3NlcnQgZmFsc2UpXG5cbiAgbGV0IGxvbmdfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGxldCBqdW5rID0gTGV4aW5nLmxleGVtZSBsZXhidWYgaW5cbiAgICBsZXQgZXh0cmFfanVuayA9ICFyZWFkX2p1bmsgbGV4YnVmIGluXG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoc3ByaW50ZiBcIiVzICclcyVzJ1wiIGRlc2NyIGp1bmsgZXh0cmFfanVuaylcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IG1pbjEwID0gbWluX2ludCAvIDEwIC0gKGlmIG1pbl9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuICBsZXQgbWF4MTAgPSBtYXhfaW50IC8gMTAgKyAoaWYgbWF4X2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG5cbiAgZXhjZXB0aW9uIEludF9vdmVyZmxvd1xuXG4gIGxldCBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWYgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA+PSBtYXgxMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gKyBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgXG4jIDEwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgXG4jIDExMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWZcblxuICBcbiMgMTEzIFwibGliL3JlYWQubWxsXCJcbiAgbGV0IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZiA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyAxIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA8PSBtaW4xMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gLSBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA+IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgXG4jIDEzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgXG4jIDEzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWZcblxuXG4gIFxuIyAxNDEgXCJsaWIvcmVhZC5tbGxcIlxuICBsZXQgc2V0X2ZpbGVfbmFtZSB2IGZuYW1lID1cbiAgICB2LmZuYW1lIDwtIGZuYW1lXG5cbiAgbGV0IG5ld2xpbmUgdiBsZXhidWYgPVxuICAgIHYubG51bSA8LSB2LmxudW0gKyAxO1xuICAgIHYuYm9sIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3NcblxuICBsZXQgYWRkX2xleGVtZSBidWYgbGV4YnVmID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgQnVmZmVyLmFkZF9zdWJieXRlcyBidWYgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbiAgbGV0IG1hcF9sZXhlbWUgZiBsZXhidWYgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBmIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlbikgMCBsZW5cblxuICB0eXBlIHZhcmlhbnRfa2luZCA9IFsgYEVkZ3lfYnJhY2tldCB8IGBTcXVhcmVfYnJhY2tldCB8IGBEb3VibGVfcXVvdGUgXVxuICB0eXBlIHR1cGxlX2tpbmQgPSBbIGBQYXJlbnRoZXNpcyB8IGBTcXVhcmVfYnJhY2tldCBdXG5cblxuIyAxNjEgXCJsaWIvcmVhZC5tbFwiXG4jIDE2MSBcImxpYi9yZWFkLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIzNlxcMjU1XFwyMzdcXDI1NVxcMDAzXFwwMDBcXDIzOVxcMjU1XFwwMTZcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNDlcXDI1NVxcMDg1XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NFxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDI1M1xcMjU1XFwwMTFcXDAwMFxcMjUyXFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjUxXFwyNTVcXDAyMVxcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDIyXFwwMDBcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIyXFwwMDBcXDAxMlxcMDAwXFwwMDhcXDAwMFxcMjUwXFwyNTVcXFxuICAgIFxcMTE5XFwwMDBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTYxXFwwMDBcXDE3MVxcMDAwXFwxODFcXDAwMFxcMTkzXFwwMDBcXDIwOVxcMDAwXFxcbiAgICBcXDI0MFxcMjU1XFwwMTFcXDAwMFxcMDM4XFwwMDBcXDI1MlxcMjU1XFwwNjVcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMTBcXDAwMFxcXG4gICAgXFwyNTJcXDI1NVxcMTYzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjM0XFwwMDBcXDI0N1xcMjU1XFwyNDhcXDI1NVxcMDQ4XFwwMDFcXFxuICAgIFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDEyNlxcMDAxXFxcbiAgICBcXDE0OVxcMDAxXFwyNDlcXDI1NVxcMDM5XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDM4XFwwMDBcXDE4N1xcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNDhcXDAwMVxcMDE1XFwwMDJcXDI1NVxcMjU1XFwyMjBcXDAwMFxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMDM5XFwwMDJcXFxuICAgIFxcMTA5XFwwMDJcXDAxNFxcMDAxXFwwODhcXDAwMlxcMTY0XFwwMDJcXDE4N1xcMDAyXFwyMjVcXDAwMlxcMDEzXFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDFcXFxuICAgIFxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDFcXDAwNVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwwMjNcXDAwMFxcMjU0XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDUzXFwwMDBcXDA0OFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAxXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDEzN1xcMDAwXFwxMDRcXDAwMFxcMDg5XFwwMDBcXDA4OFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDBcXDEzN1xcMDAwXFwxNzdcXDAwMFxcMjU0XFwyNTVcXDE4M1xcMDAwXFwxNjhcXDAwMFxcMTY2XFwwMDBcXFxuICAgIFxcMTgzXFwwMDBcXDAwMlxcMDAwXFwyNTNcXDI1NVxcMTc3XFwwMDBcXDE3MlxcMDAwXFwxODdcXDAwMFxcMDA0XFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDA1M1xcMDAyXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwxMDNcXDAwMVxcMjU1XFwyNTVcXDI0OFxcMDAyXFwyNTRcXDI1NVxcXG4gICAgXFwwMDZcXDAwM1xcMDMwXFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwM1xcMDUwXFwwMDNcXFxuICAgIFxcMDc0XFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwM1xcMDg0XFwwMDNcXDEwOFxcMDAzXFxcbiAgICBcXDI0OVxcMjU1XFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI0NFxcMDAwXFwxMjBcXDAwM1xcMTQyXFwwMDNcXDE3OVxcMDAwXFwxOTRcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDE5MFxcMDAwXFwxODhcXDAwMFxcMTg3XFwwMDBcXDE5M1xcMDAwXFwxODNcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDE5MVxcMDAwXFwyMDFcXDAwMFxcMjAwXFwwMDBcXDE5NlxcMDAwXFwyMDNcXDAwMFxcMTkzXFwwMDBcXDE4OVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwxNTdcXDAwM1xcMDk1XFwwMDNcXDE3NFxcMDAzXFwxOTZcXDAwM1xcMjA2XFwwMDNcXDIxNlxcMDAzXFwyMjhcXDAwM1xcXG4gICAgXFwyMzlcXDAwM1xcMDYwXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMDg3XFwwMDRcXDI1NVxcMjU1XFwxNDVcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjFcXDAwNFxcMjU1XFwyNTVcXDIyOVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzMVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE4XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjBcXDAwMVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIwOFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMTFcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODlcXDAwMFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDk1XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzNcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjIyXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDVcXDIzN1xcMjU1XFwyMzhcXDI1NVxcMDEwXFwwMDBcXDI0MFxcMjU1XFwwNDRcXDAwMVxcXG4gICAgXFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMDYxXFwwMDFcXDAwMlxcMDA0XFwyNDlcXDI1NVxcMDQ1XFwwMDVcXFxuICAgIFxcMjA5XFwwMDBcXDIyOFxcMDAwXFwyMTFcXDAwMFxcMjMyXFwwMDBcXDIyNVxcMDAwXFwyMjNcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIzNVxcMDAwXFwyMzRcXDAwMFxcMDA4XFwwMDFcXDI1NFxcMjU1XFwwMDRcXDAwMVxcMDIzXFwwMDFcXDI1M1xcMjU1XFwwNTRcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMDMxXFwwMDFcXDAyOVxcMDAxXFwwMzJcXDAwMVxcMDM5XFwwMDFcXDA0OVxcMDAxXFwwNDVcXDAwMVxcMjUxXFwyNTVcXFxuICAgIFxcMDU3XFwwMDFcXDA4MlxcMDAxXFwwODBcXDAwMVxcMDc4XFwwMDFcXDA4NFxcMDAxXFwwNzRcXDAwMVxcMDg2XFwwMDFcXDI1MFxcMjU1XFxcbiAgICBcXDExMFxcMDA1XFwwMTJcXDAwNFxcMTIzXFwwMDVcXDE1NVxcMDA1XFwxNjVcXDAwNVxcMTc3XFwwMDVcXDE4N1xcMDA1XFwxOTdcXDAwNVxcXG4gICAgXFwyNDFcXDI1NVxcMTk5XFwwMDFcXDA3N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDE1NFxcMDAyXFwyMjJcXDAwNVxcMjA5XFwwMDVcXFxuICAgIFxcMTU1XFwwMDJcXDIzOVxcMDA1XFwwNTNcXDAwNlxcMDc2XFwwMDZcXDExNFxcMDA2XFwwMTZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTUyXFwwMDZcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjI3XFwwMDZcXDI1NVxcMjU1XFwwODVcXDAwN1xcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAxMVxcMDAwXFwyNDdcXDI1NVxcMDc2XFwwMDJcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzFcXDAwMlxcMjQzXFwwMDVcXDA1MVxcMDA3XFwxMDBcXDAwMVxcMTE1XFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMThcXDAwMVxcMTU0XFwwMDFcXDE3MVxcMDAxXFwyNTVcXDI1NVxcMTczXFwwMDFcXDE3NlxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg3XFwwMDFcXDI1M1xcMDAxXFwyMzBcXDAwMVxcMjMwXFwwMDFcXDIzNFxcMDAxXFwyNDdcXDAwMVxcMjM3XFwwMDFcXFxuICAgIFxcMjM0XFwwMDFcXDAwOVxcMDAyXFwwMTlcXDAwMlxcMDE5XFwwMDJcXDAxNVxcMDAyXFwwMjFcXDAwMlxcMDExXFwwMDJcXDAwN1xcMDAyXFxcbiAgICBcXDE0MlxcMDA2XFwxNTJcXDAwNlxcMTE2XFwwMDdcXDE3MFxcMDA3XFwxODBcXDAwN1xcMTkwXFwwMDdcXDIwMFxcMDA3XFwyMTBcXDAwN1xcXG4gICAgXFwyNDhcXDI1NVxcMTIwXFwwMDJcXDE2N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDIxNlxcMDAyXFwwODJcXDAwN1xcMjIwXFwwMDdcXFxuICAgIFxcMjM2XFwwMDJcXDI0NFxcMDA3XFwwNThcXDAwOFxcMDgxXFwwMDhcXDExOVxcMDA4XFwwNzZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTU3XFwwMDhcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjMyXFwwMDhcXDI1NVxcMjU1XFwxMzVcXDAwMlxcXG4gICAgXFwxMjBcXDAwMlxcMjUzXFwyNTVcXDEwMFxcMDAyXFwyNTRcXDI1NVxcMTgyXFwwMDJcXDI1NVxcMjU1XFwwMTFcXDAwMlxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMlxcMjU1XFwyNTVcXDE3OFxcMDAyXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMjU1XFwyNTVcXDE4M1xcMDAyXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMlxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIxXFwwMDJcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxNDBcXDAwMVxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwxNTBcXDAwMVxcMTUxXFwwMDFcXDE1NFxcMDAxXFwxNjhcXDAwMVxcXG4gICAgXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE3MlxcMDAxXFwxNzNcXDAwMVxcMTgxXFwwMDFcXDE4NFxcMDAxXFwxODVcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5M1xcMDAxXFwxOTVcXDAwMVxcMTk2XFwwMDFcXDE5N1xcMDAxXFwyMDBcXDAwMVxcMjAzXFwwMDFcXDIyM1xcMDAxXFxcbiAgICBcXDIyNVxcMDAxXFwyMjhcXDAwMVxcMjQ5XFwwMDFcXDI1MVxcMDAxXFwwMDJcXDAwMlxcMDA0XFwwMDJcXDAxMVxcMDAyXFwwMTJcXDAwMlxcXG4gICAgXFwwMTNcXDAwMlxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxMzhcXDAwMFxcMDAwXFwwMDBcXDE0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDEyMVxcMDAxXFwxMjVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTQ0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5M1xcMDAxXFwxOTdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDIyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAyXFwwMDJcXDAwNFxcMDAyXFwwMDBcXDAwMFxcMDA1XFwwMDJcXDAwNlxcMDAyXFwwMDdcXDAwMlxcMDA4XFwwMDJcXFxuICAgIFxcMDA5XFwwMDJcXDAxMFxcMDAyXFwwMTFcXDAwMlxcMDEyXFwwMDJcXDAxM1xcMDAyXFwwMTRcXDAwMlxcMDE1XFwwMDJcXDAxNlxcMDAyXFxcbiAgICBcXDAxN1xcMDAyXFwwMThcXDAwMlxcMDE5XFwwMDJcXDAyMFxcMDAyXFwwMjFcXDAwMlxcMDIyXFwwMDJcXDAyM1xcMDAyXFwwMjRcXDAwMlxcXG4gICAgXFwwMjVcXDAwMlxcMDI2XFwwMDJcXDAyN1xcMDAyXFwwMjhcXDAwMlxcMDI5XFwwMDJcXDAzMFxcMDAyXFwwMzFcXDAwMlxcMDMyXFwwMDJcXFxuICAgIFxcMDMzXFwwMDJcXDAwM1xcMDAyXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI3XFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMDNcXDAwMFxcMTcwXFwwMDBcXDEzNFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxNFxcMDAxXFwwMTNcXDAwMFxcMDQ5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDA1NlxcMDAwXFwxMThcXDAwMFxcMDA2XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDFcXDEzN1xcMDAwXFwwMDBcXDAwMlxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMTM4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwMTRcXDAwMFxcMTEwXFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAxNVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAzMFxcMDAwXFwwNDhcXDAwMFxcMDA4XFwwMDBcXDExNFxcMDAwXFwyMDlcXDAwMFxcMjM2XFwwMDBcXDAwMFxcMDAxXFxcbiAgICBcXDAxM1xcMDAxXFwwMjlcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDAxN1xcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjVcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDIzXFwwMDBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAzNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDIwXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMzdcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA2MVxcMDAwXFwwODVcXDAwMFxcMDQ4XFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA2N1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODZcXDAwMFxcMTQzXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMTQ0XFwwMDBcXFxuICAgIFxcMTQ1XFwwMDBcXDE0NlxcMDAwXFwwNTVcXDAwMFxcMTQ4XFwwMDBcXDA1NVxcMDAwXFwxNDlcXDAwMFxcMDQ4XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwxNTBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMFxcMTYxXFwwMDBcXDA2NlxcMDAwXFwxNThcXDAwMFxcMDUzXFwwMDBcXDE1OVxcMDAwXFwwNTNcXDAwMFxcMTYwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDE2NVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDE2NlxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMTAzXFwwMDBcXDEwOFxcMDAwXFwxMTZcXDAwMFxcXG4gICAgXFwxMzJcXDAwMFxcMTM0XFwwMDBcXDEzNVxcMDAwXFwxMjhcXDAwMFxcMTM5XFwwMDBcXDEzNFxcMDAwXFwxNjRcXDAwMFxcMDkzXFwwMDBcXFxuICAgIFxcMTcxXFwwMDBcXDA3N1xcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzJcXDAwMFxcMTEyXFwwMDBcXDE3M1xcMDAwXFxcbiAgICBcXDE3NFxcMDAwXFwyMTBcXDAwMFxcMjI2XFwwMDBcXDIwOFxcMDAwXFwyMTFcXDAwMFxcMjEyXFwwMDBcXDA1OVxcMDAwXFwwODNcXDAwMFxcXG4gICAgXFwxMzRcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE2XFwwMDBcXDIxOFxcMDAwXFwxNDFcXDAwMFxcMjE5XFwwMDBcXFxuICAgIFxcMDkzXFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTIzXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMjI0XFwwMDBcXDEzNlxcMDAwXFxcbiAgICBcXDA5NVxcMDAwXFwyMjVcXDAwMFxcMDM1XFwwMDFcXDA2NVxcMDAxXFwyMzRcXDAwMFxcMTU1XFwwMDBcXDAwNVxcMDAxXFwwOTdcXDAwMVxcXG4gICAgXFwyNTBcXDAwMFxcMjU1XFwyNTVcXDI1NFxcMDAwXFwwNTdcXDAwMVxcMDYxXFwwMDFcXDA5NVxcMDAxXFwwNzdcXDAwMFxcMDQ0XFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA4OFxcMDAxXFwwMDlcXDAwMVxcMDI5XFwwMDFcXDA3NlxcMDAwXFwxMjRcXDAwMFxcMDMzXFwwMDFcXDAxOFxcMDAxXFxcbiAgICBcXDA3NVxcMDAwXFwwOThcXDAwMFxcMDE5XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDg3XFwwMDFcXDEyMFxcMDAxXFwwODlcXDAwMVxcXG4gICAgXFwwNzRcXDAwMFxcMjI1XFwwMDBcXDA1M1xcMDAxXFwxMjFcXDAwMVxcMDczXFwwMDBcXDA5MFxcMDAxXFwwNzJcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk4XFwwMDBcXDExM1xcMDAxXFwxMjJcXDAwMFxcMDkxXFwwMDFcXDA2NFxcMDAwXFwwMDRcXDAwMVxcXG4gICAgXFwwOTNcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwxNTZcXDAwMFxcMTEyXFwwMDFcXDA5NFxcMDAxXFwwOTZcXDAwMVxcMDk4XFwwMDFcXDA5OVxcMDAxXFwwNDlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwxMDBcXDAwMVxcMTU3XFwwMDBcXFxuICAgIFxcMTAxXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDE4M1xcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMDI0XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDEwMlxcMDAxXFwxMDNcXDAwMVxcMTA1XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwxMDZcXDAwMVxcMTA3XFwwMDFcXDA0OFxcMDAxXFwwNDBcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwxMTBcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwxMTFcXDAwMVxcXG4gICAgXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDE3MVxcMDAxXFwwMzFcXDAwMVxcMTcwXFwwMDFcXDAyM1xcMDAxXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA5MlxcMDAwXFwxNjhcXDAwMVxcMDYzXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMjQ4XFwwMDBcXDE2NVxcMDAxXFwyNTJcXDAwMFxcXG4gICAgXFwxNjJcXDAwMVxcMDU5XFwwMDFcXDA2OVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwyNTVcXDI1NVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDAzOVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDE2M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwxMjBcXDAwMFxcMDAyXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMTY2XFwwMDFcXDA1NVxcMDAxXFwxNTNcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMDdcXDAwMVxcMTY3XFwwMDFcXDE2NFxcMDAxXFwxNjlcXDAwMVxcMDE2XFwwMDFcXDE2NFxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA1MVxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDEzN1xcMDAxXFwxNjRcXDAwMVxcMTcyXFwwMDFcXDE4NVxcMDAxXFwxMzZcXDAwMVxcMTczXFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDE3NFxcMDAxXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNDZcXDAwMVxcXG4gICAgXFwxNzVcXDAwMVxcMTc2XFwwMDFcXDE4MFxcMDAwXFwxNjRcXDAwMVxcMTg0XFwwMDFcXDE4MVxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDEyNFxcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDE5MlxcMDAxXFwxNzhcXDAwMVxcXG4gICAgXFwwMjFcXDAwMVxcMTc5XFwwMDFcXDA5N1xcMDAwXFwxOTNcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcMTgzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDIxNlxcMDAxXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDE4NFxcMDAxXFwyMTZcXDAwMVxcMjA5XFwwMDFcXDA5N1xcMDAwXFxcbiAgICBcXDIyM1xcMDAxXFwwOTdcXDAwMFxcMjA4XFwwMDFcXDIzMFxcMDAxXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDIxOVxcMDAxXFwwMzdcXDAwMVxcXG4gICAgXFwyMTZcXDAwMVxcMjE3XFwwMDFcXDAwM1xcMDAyXFwyMjBcXDAwMVxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDAzXFwwMDJcXFxuICAgIFxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMTZcXDAwMVxcXG4gICAgXFwwMDNcXDAwMlxcMTI2XFwwMDFcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMjE4XFwwMDFcXDI1MFxcMDAxXFxcbiAgICBcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDAwM1xcMDAyXFwxMjRcXDAwMVxcMTI0XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcXG4gICAgXFwyMjFcXDAwMVxcMDAzXFwwMDJcXDI1M1xcMDAxXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDJcXDE5NlxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyMzVcXDAwMVxcMDAzXFwwMDJcXFxuICAgIFxcMjQxXFwwMDFcXDAwM1xcMDAyXFwyNTVcXDAwMVxcMjQyXFwwMDFcXDAwM1xcMDAyXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI0NlxcMDAxXFwxMjlcXDAwMVxcMTI5XFwwMDFcXFxuICAgIFxcMjI4XFwwMDFcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMDAzXFwwMDJcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDAzXFwwMDJcXDE5OFxcMDAxXFwwMDNcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMjM0XFwwMDFcXFxuICAgIFxcMTM0XFwwMDFcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDFcXDAwMVxcMTc3XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg4XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDIwMVxcMDAxXFwyMjdcXDAwMVxcMDAwXFwwMDBcXDE5MVxcMDAwXFwyMDZcXDAwMVxcMTIzXFwwMDFcXDE4OVxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTg5XFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTk1XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNDhcXDAwMVxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMjAyXFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjI2XFwwMDBcXDE5NVxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMjFcXDAwMVxcMjM5XFwwMDFcXFxuICAgIFxcMjU0XFwwMDFcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMjQ0XFwwMDFcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjAzXFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDFcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg2XFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTEzXFwwMDFcXDAwMFxcMDAwXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwMDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDIzOFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNFxcMDAxXFwwNzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwNzFcXDAwMVxcMDc2XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDFcXDExOVxcMDAxXFwwMDBcXDAwMFxcMTE5XFwwMDFcXDAwMFxcMDAwXFwwODFcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE3XFwwMDFcXDAwMFxcMDAwXFwwNzVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTg1XFwwMDFcXDAwMFxcMDAwXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE5MVxcMDAxXFwxNDJcXDAwMVxcMTkxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDZcXDAwMVxcMTQ3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMTUzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3N1xcMDAxXFwxNTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTU2XFwwMDFcXDAwMFxcMDAwXFwxNDhcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE0OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEzOVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDE1MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTg3XFwwMDFcXDAwMFxcMDAwXFwxNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNjFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OVxcMDAxXFwwMDBcXDAwMFxcMTg5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDVcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE5OVxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMTRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjVcXDAwMFxcMTM4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwM1xcMDAwXFwxNjlcXDAwMFxcMTM0XFwwMDBcXDE3NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDEyXFwwMDFcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMTI1XFwwMDBcXDEyOVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyMzZcXDAwMVxcMTM2XFwwMDBcXDI1NVxcMDAxXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDAxMFxcMDAwXFwxMzZcXDAwMFxcMTAyXFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwxMDdcXDAwMFxcMTAyXFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDI5XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDIwOFxcMDAwXFwyMzNcXDAwMFxcMjU1XFwwMDBcXFxuICAgIFxcMDEyXFwwMDFcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDYwXFwwMDBcXDAxMVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyNFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMjJcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDMzXFwwMDBcXDAxOFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMTlcXDAwMFxcMDM1XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAzNlxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NVxcMDAwXFwwNDZcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcXG4gICAgXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NVxcMDAwXFwxNDBcXDAwMFxcMDYwXFwwMDBcXDAxM1xcMDAwXFwxNDNcXDAwMFxcXG4gICAgXFwxNDRcXDAwMFxcMTQ1XFwwMDBcXDA0OFxcMDAwXFwxNDdcXDAwMFxcMDQ4XFwwMDBcXDE0OFxcMDAwXFwwMzlcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNjVcXDAwMFxcMDM5XFwwMDBcXDE0OVxcMDAwXFxcbiAgICBcXDE1MFxcMDAwXFwxNTZcXDAwMFxcMDYzXFwwMDBcXDE1N1xcMDAwXFwwNTFcXDAwMFxcMTU4XFwwMDBcXDA1MVxcMDAwXFwxNTlcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcXG4gICAgXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMTU1XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcMTU1XFwwMDBcXDA5MVxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2OFxcMDAwXFwxMDJcXDAwMFxcMTA3XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDEzMVxcMDAwXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMTMzXFwwMDBcXDE2M1xcMDAwXFwwOTRcXDAwMFxcXG4gICAgXFwxNjVcXDAwMFxcMDY4XFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE3MVxcMDAwXFwxMTFcXDAwMFxcMTcyXFwwMDBcXFxuICAgIFxcMTczXFwwMDBcXDIwNlxcMDAwXFwyMDNcXDAwMFxcMjA3XFwwMDBcXDIxMFxcMDAwXFwyMTFcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDEzM1xcMDAwXFwyMTJcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE3XFwwMDBcXDE0MFxcMDAwXFwyMThcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjE5XFwwMDBcXDIyMFxcMDAwXFwxMTlcXDAwMFxcMjIxXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMTMzXFwwMDBcXFxuICAgIFxcMDkxXFwwMDBcXDIwM1xcMDAwXFwwMzRcXDAwMVxcMDYyXFwwMDFcXDIzM1xcMDAwXFwxNTJcXDAwMFxcMDAxXFwwMDFcXDA4MFxcMDAxXFxcbiAgICBcXDI0N1xcMDAwXFwwNjBcXDAwMFxcMjUxXFwwMDBcXDA1NFxcMDAxXFwwNThcXDAwMVxcMDgxXFwwMDFcXDA2OFxcMDAwXFwwNDFcXDAwMVxcXG4gICAgXFwwODJcXDAwMVxcMDgzXFwwMDFcXDAwNlxcMDAxXFwwMjZcXDAwMVxcMDY4XFwwMDBcXDExOVxcMDAwXFwwMzBcXDAwMVxcMDE1XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDA5NFxcMDAwXFwwMTVcXDAwMVxcMDg0XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDcxXFwwMDFcXDA4OFxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwyMDNcXDAwMFxcMDUwXFwwMDFcXDA3MVxcMDAxXFwwNjhcXDAwMFxcMDg5XFwwMDFcXDA2OFxcMDAwXFwwNjhcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwOTdcXDAwMFxcMDc2XFwwMDFcXDExOVxcMDAwXFwwOTBcXDAwMVxcMDYzXFwwMDBcXDAwMVxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDE1MlxcMDAwXFwwNzZcXDAwMVxcMDkzXFwwMDFcXDA5NVxcMDAxXFwwOTdcXDAwMVxcMDk4XFwwMDFcXDA0NVxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OVxcMDAxXFwxNTJcXDAwMFxcXG4gICAgXFwxMDBcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwwMjBcXDAwMVxcMDc2XFwwMDFcXDA2NVxcMDAwXFwwMjBcXDAwMVxcMTAxXFwwMDFcXDEwMlxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDEwNVxcMDAxXFwxMDZcXDAwMVxcMDQ1XFwwMDFcXDAzNlxcMDAxXFwxMDdcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDExMFxcMDAxXFxcbiAgICBcXDAyNlxcMDAxXFwxMjFcXDAwMVxcMTU3XFwwMDFcXDAzMFxcMDAxXFwxNThcXDAwMVxcMDIwXFwwMDFcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDkxXFwwMDBcXDE1OVxcMDAxXFwwNjJcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwyNDdcXDAwMFxcMTYwXFwwMDFcXDI1MVxcMDAwXFxcbiAgICBcXDE2MVxcMDAxXFwwNThcXDAwMVxcMDY4XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA5NFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDM2XFwwMDFcXDA0MVxcMDAxXFwwOTdcXDAwMFxcMTYyXFwwMDFcXFxuICAgIFxcMTYzXFwwMDFcXDExOVxcMDAwXFwwMDFcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwxNjVcXDAwMVxcMDU0XFwwMDFcXDE1MlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwNlxcMDAxXFwxNjZcXDAwMVxcMTY3XFwwMDFcXDE2OFxcMDAxXFwwMTVcXDAwMVxcMTY5XFwwMDFcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDUwXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTMzXFwwMDFcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTU0XFwwMDFcXDEzM1xcMDAxXFwxNzJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTczXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA0NVxcMDAxXFxcbiAgICBcXDE3NFxcMDAxXFwxNzVcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAxXFwxNTRcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTIyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMTQ4XFwwMDFcXDE3N1xcMDAxXFxcbiAgICBcXDAyMFxcMDAxXFwxNzhcXDAwMVxcMDk4XFwwMDBcXDE0OFxcMDAxXFwxNzlcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcXG4gICAgXFwxODNcXDAwMVxcMjE2XFwwMDFcXDE5M1xcMDAxXFwwOTVcXDAwMFxcMTU0XFwwMDFcXDIxNlxcMDAxXFwyMDVcXDAwMVxcMDk4XFwwMDBcXFxuICAgIFxcMjIyXFwwMDFcXDA5NVxcMDAwXFwyMDVcXDAwMVxcMjI5XFwwMDFcXDAwMVxcMDAyXFwwOTVcXDAwMFxcMjE4XFwwMDFcXDAzNlxcMDAxXFxcbiAgICBcXDIxNVxcMDAxXFwyMTVcXDAwMVxcMDAyXFwwMDJcXDIxOFxcMDAxXFwyMTVcXDAwMVxcMDk1XFwwMDBcXDAwNFxcMDAyXFwwMDVcXDAwMlxcXG4gICAgXFwyMTZcXDAwMVxcMDk1XFwwMDBcXDAwNlxcMDAyXFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDIxNVxcMDAxXFxcbiAgICBcXDAwN1xcMDAyXFwxMjJcXDAwMVxcMDA4XFwwMDJcXDAwOVxcMDAyXFwwMTBcXDAwMlxcMDExXFwwMDJcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk4XFwwMDBcXDAxMlxcMDAyXFwyMTVcXDAwMVxcMjQ3XFwwMDFcXFxuICAgIFxcMDEzXFwwMDJcXDAxNFxcMDAyXFwwOThcXDAwMFxcMDE1XFwwMDJcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMDk4XFwwMDBcXDAxNlxcMDAyXFxcbiAgICBcXDIyMFxcMDAxXFwwMTdcXDAwMlxcMjUxXFwwMDFcXDAxOFxcMDAyXFwwMTlcXDAwMlxcMDIwXFwwMDJcXDA5OFxcMDAwXFwxMjFcXDAwMVxcXG4gICAgXFwwMjFcXDAwMlxcMTk0XFwwMDFcXDA5OFxcMDAwXFwwMjJcXDAwMlxcMDk4XFwwMDBcXDA5OFxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIzMVxcMDAxXFwwMjNcXDAwMlxcXG4gICAgXFwyMzhcXDAwMVxcMDI0XFwwMDJcXDI1MVxcMDAxXFwyMzhcXDAwMVxcMDI1XFwwMDJcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjQzXFwwMDFcXDEyNVxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwyMjRcXDAwMVxcMDI2XFwwMDJcXDE5N1xcMDAxXFwwMjdcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMjhcXDAwMlxcMTk0XFwwMDFcXDAyOVxcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDAzMFxcMDAyXFwwMzFcXDAwMlxcMDMyXFwwMDJcXDIwMFxcMDAxXFwyMzFcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwxNzZcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMjU1XFwyNTVcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTg1XFwwMDBcXDIwNVxcMDAxXFwxMjJcXDAwMVxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFxcbiAgICBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTJcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkzXFwwMDFcXDI0N1xcMDAxXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOTlcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwxOTlcXDAwMFxcMTI1XFwwMDFcXDEyOFxcMDAxXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcXG4gICAgXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwyMDRcXDAwMFxcMTk0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDBcXDIyMFxcMDAxXFwyMzhcXDAwMVxcXG4gICAgXFwyNTFcXDAwMVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyNDNcXDAwMVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjRcXDAwMVxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMTk3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDIyOFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFxcbiAgICBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODVcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFxcbiAgICBcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDE5OVxcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjM3XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjZcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwxMTJcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExNVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTVcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXFxuICAgIFxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXFxuICAgIFxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcXG4gICAgXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMjU1XFwyNTVcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDEyNlxcMDAxXFwxMjlcXDAwMVxcMTI2XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyOVxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTg0XFwwMDFcXDEzOFxcMDAxXFwxODRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzOFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXFxuICAgIFxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTU2XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwxODZcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTk4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDFcXDI1NVxcMjU1XFwxODdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTg2XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjAxXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCB0cnVlIClcblxuIyAxMDMyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDMzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgZmFsc2UgKVxuXG4jIDEwMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwMzggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDE5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgTnVsbCApXG5cbiMgMTA0MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA0MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAxOTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgbmFuXG4gICAgICAgICAgICAgICAgXG4jIDE5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDE5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IGluZmluaXR5XG4gICAgICAgICAgICAgICAgXG4jIDIwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwNjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgIFxuIyAyMTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDc2IFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyAyMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAyMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgYFN0cmluZyAoZmluaXNoX3N0cmluZyB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICBcbiMgMjE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA4NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA4OCBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgMjIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMjIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmIClcblxuIyAxMDkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDkzIFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyAyMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAyMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgKVxuXG4jIDEwOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwOTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgOSAtPlxuXG4jIDIyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDIyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IChmbG9hdF9vZl9zdHJpbmcgKGxleGVtZSBsZXhidWYpKVxuICAgICAgICAgICAgICAgICBcbiMgMjI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExMDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTAgLT5cblxuIyAyMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgYEFzc29jIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMTEzNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTEzNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMSAtPlxuXG4jIDI1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyNTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBMaXN0IChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMTE1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMiAtPlxuXG4jIDI3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgMjg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDI4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTc4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTc5IFwibGliL3JlYWQubWxcIlxuICB8IDEzIC0+XG5cbiMgMjkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDI5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyAyOTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgMzAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTQgLT5cblxuIyAzMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDExOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExOTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTUgLT5cblxuIyAzMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMjAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjAzIFwibGliL3JlYWQubWxcIlxuICB8IDE2IC0+XG5cbiMgMzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMjA3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjA4IFwibGliL3JlYWQubWxcIlxuICB8IDE3IC0+XG5cbiMgMzA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMjEyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjEzIFwibGliL3JlYWQubWxcIlxuICB8IDE4IC0+XG5cbiMgMzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTIxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxOSAtPlxuXG4jIDMwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuXG4jIDEyMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIDU4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBCdWZmZXIuY29udGVudHMgdi5idWYgKVxuXG4jIDEyMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDMxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTI0MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI0MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTI0NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI0NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMjUxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjUyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIDYzXG5hbmQgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGxldCBiID0gdi5idWYgaW5cbiAgICAgICAgICAgICAgICAgICAgZiAoQnVmZmVyLmNvbnRlbnRzIGIpIDAgKEJ1ZmZlci5sZW5ndGggYikgKVxuXG4jIDEyNjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDMyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcblxuIyAxMjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjcxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuXG4jIDEyNzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDMyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTI4MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI4MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgNjhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIFxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICBjXG5cbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiBjIClcblxuIyAxMjk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjk5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxiJyApXG5cbiMgMTMwMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMwNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcMDEyJyApXG5cbiMgMTMwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbicgKVxuXG4jIDEzMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHInIClcblxuIyAxMzE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzE5IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyAzMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFx0JyApXG5cbiMgMTMyMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMyNCBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5sZXRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIGFcblxuIyAxMzI5IFwibGliL3JlYWQubWxcIlxuIyAxMzI5IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSlcbmFuZFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcblxuIyAxMzM0IFwibGliL3JlYWQubWxcIlxuIyAxMzM0IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG5cbiMgMTMzOSBcImxpYi9yZWFkLm1sXCJcbiMgMTMzOSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcblxuIyAxMzQ0IFwibGliL3JlYWQubWxcIlxuIyAxMzQ0IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNCkgaW5cblxuIyAzMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeCA+PSAweEQ4MDAgJiYgeCA8PSAweERCRkYgdGhlblxuICAgICAgICAgICAgIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICB1dGY4X29mX2NvZGUgdi5idWYgeFxuICAgICAgICAgKVxuXG4jIDEzNTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzNTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgZXNjYXBlIHNlcXVlbmNlXCIgdiBsZXhidWYgKVxuXG4jIDEzNjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzNjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDM0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTM2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTM2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgODJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBhXG5cbiMgMTM3OCBcImxpYi9yZWFkLm1sXCJcbiMgMTM3OCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuXG4jIDEzODMgXCJsaWIvcmVhZC5tbFwiXG4jIDEzODMgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG5cbiMgMTM4OCBcImxpYi9yZWFkLm1sXCJcbiMgMTM4OCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpXG5hbmRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG5cbiMgMTM5MyBcImxpYi9yZWFkLm1sXCJcbiMgMTM5MyBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDUpIGluXG5cbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeSA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHkgPj0gMHhEQzAwICYmIHkgPD0gMHhERkZGIHRoZW5cbiAgICAgICAgICAgICB1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIHYuYnVmIHggeVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgbG93IHN1cnJvZ2F0ZSBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCJcbiAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICApXG5cbiMgMTQwNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQwNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiTWlzc2luZyBlc2NhcGUgc2VxdWVuY2UgcmVwcmVzZW50aW5nIGxvdyBzdXJyb2dhdGUgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiIHYgbGV4YnVmIClcblxuIyAxNDExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDEyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzNjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgOTFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICAgICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgKGxlbisxKSBpblxuICAgICAgICAgICBCeXRlcy5zZXQgcyAwICdcIic7XG4gICAgICAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgcyAxIGxlbjtcbiAgICAgICAgICAgQnl0ZXMudG9fc3RyaW5nIHNcbiAgICAgICAgIClcblxuIyAxNDMzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDM0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuXG4jIDE0MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgMTAyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPSByZWFkX2pzb24gdiBsZXhidWYgaW5cbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZjtcbiAgICAgICAgICAgU29tZSB4IClcblxuIyAxNDU4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDU5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIE5vbmUgKVxuXG4jIDE0NjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE0NjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDM4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ3MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ3NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiAxMDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDE0ODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0ODYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDM4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNDkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDkxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIDExMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDE1MDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTUxMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUxMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNTE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTE4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29tbWEgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgMTE1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMTUyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNTM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTM1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE1MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDExOVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYEVkZ3lfYnJhY2tldCApXG5cbiMgMTU1MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU1MiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGBEb3VibGVfcXVvdGUgKVxuXG4jIDE1NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgU3F1YXJlX2JyYWNrZXQgKVxuXG4jIDE1NjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnLCAnXFxcIicgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNTY3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTY4IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0MDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTU3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDEyNVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAxNTg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTg1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcblxuIyAxNTg5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTkwIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcblxuIyAxNTk0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTk1IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcblxuIyAxNTk5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjAwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2VvZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiAxMzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE2MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNjE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiAxMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjI4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjI5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTYzMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYzNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTYzOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYzOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTY0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDE2NDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgMTQwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMTY2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdudWxsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTY2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTY3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbF9pZl9wb3NzaWJsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIDE0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTY4MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY4MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE2ODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2ODggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Jvb2wgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiAxNTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNjk5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzAwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE3MDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQ0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNzA5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzEwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE3MTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQ0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3RydWUnIG9yICdmYWxzZScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE3MTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDQ0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNzI0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzI1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIDE3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTczOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTczOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE3NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQ1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnRlZ2VyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG5cbiMgMTc2MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc2NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnRlZ2VyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNzY4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzY5IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTc3MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc3NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQzMiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiAxODVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDMyLm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxNzg3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzg4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDMyLm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQzMiBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuXG4jIDE4MDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQ5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50MzIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE4MTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQ5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxODE1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODE2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50NjQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgMTkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQ2NC5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTgyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQ2NC5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50NjQgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcblxuIyAxODQ3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODQ4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA1MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDY0IGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxODUyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODUzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA1MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTg1NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg1OCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bWJlciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgMTk5XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDUxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuYW4gKVxuXG4jIDE4NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDUxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBpbmZpbml0eSApXG5cbiMgMTg3NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg3NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5lZ19pbmZpbml0eSApXG5cbiMgMTg3OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg4MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZsb2F0X29mX3N0cmluZyAobGV4ZW1lIGxleGJ1ZikgKVxuXG4jIDE4ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4ODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDUyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGZsb2F0IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3Jlcy4gKilcbiAgICAgICAgICAgICAgICAgICAgZmxvYXRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiTmFOXCIgLT4gbmFuXG4gICAgICAgICAgICAgICAgICAgICAgfCBcIkluZmluaXR5XCIgLT4gaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IFwiLUluZmluaXR5XCIgLT4gbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYSBudW1iZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhIG51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICApXG5cbiMgMTkwNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkwNyBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgNTM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBudW1iZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDUzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxOTE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgMjMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxOTI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdcXFwiJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTkzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE5MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgMjM3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDE5NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxubGV0XG5cbiMgNTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBzXG5cbiMgMTk1OCBcImxpYi9yZWFkLm1sXCJcbiMgMTk1OCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuXG4jIDU1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBzIClcblxuIyAxOTYyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTYzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTY3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTY4IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTk3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfaWRlbnQgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgMjQyXG5hbmQgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuXG4jIDE5ODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5ODYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBtYXBfbGV4ZW1lIGYgbGV4YnVmIClcblxuIyAxOTkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTkxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1NjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTk2IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjAwMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAwMSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zZXF1ZW5jZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuXG4jIDIwMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMDMxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDMyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjAzNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAzNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIDI1MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuXG4jIDIwNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwNjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMDY3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDY4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjA3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgMjU1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAyMDg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDg1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIwODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwOTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgMjU3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDYwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjEwMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjEwMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMjEwNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjEwNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMTExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTEyIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA2MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjExNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjExNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI2MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNjEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDYzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyA2MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjE1MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE1MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIxNTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDYzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMTYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTYxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiAyNjZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIxNzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjE3NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE3OCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgMjY4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTkzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMDEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjIwNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIwNiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgMjcxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjIxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjIyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjI3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjI4IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA2NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjIzMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIzMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiAyNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIyNDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIyNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyNjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDY3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjI2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNjcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIyNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiAyODJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuXG4jIDIzMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzA5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzEwIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjMxNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMxNSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xjdXJsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIDI4NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjMyNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMyNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMzM2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzM3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgMjkwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDIzNDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjM1MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM1NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiAyOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjM2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDIzNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjM3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIzODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzODEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIDI5N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjM5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzOTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDAzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV90dXBsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIDMwMVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAyNDE0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDE1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMjQxOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQyMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDI0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDI1IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA3MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIDMwNlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNDQxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDQyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ0NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ0NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiAzMTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDczMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjQ2MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ2NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0NjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDczNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDczIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDc0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIDMxNFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI0ODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0ODYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDczOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDkxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9yYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIDMxOFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDc0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNTEyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTEzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjUxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgMzIyXG5hbmQgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDc1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTQwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA3NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDc1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU0OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU1MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgNzU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTU1IFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyA3NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyNTU5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTYwIFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyA3NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNzU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgNzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTY5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTcwIFwibGliL3JlYWQubWxcIlxuICB8IDkgLT5cblxuIyA3NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjU5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMCAtPlxuXG4jIDc4NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA3ODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI2MTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2MTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTEgLT5cblxuIyA3OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNzk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDgxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyA4MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjYzNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjYzNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMiAtPlxuXG4jIDgxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgODI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDgyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNjUwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjUxIFwibGliL3JlYWQubWxcIlxuICB8IDEzIC0+XG5cbiMgODMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjU1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjU2IFwibGliL3JlYWQubWxcIlxuICB8IDE0IC0+XG5cbiMgODMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNSAtPlxuXG4jIDgzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNiAtPlxuXG4jIDgzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNyAtPlxuXG4jIDgzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI2NzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTggLT5cblxuIyA4MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcblxuIyAyNjgwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjgxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgMzc4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAyNjkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjkzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuXG4jIDI2OTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2OTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjcwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgMzg5XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWYgKVxuXG4jIDI3MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDI3MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MjIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI3MjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDg1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjczMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjczMiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIDM5NFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI3NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjc0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjc1MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc1NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgODU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI3NTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIDM5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA4NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuXG4jIDI3NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDg3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjc3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDg3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ3snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4MDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4MDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDg5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdbJztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjgyMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjgyMiBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgOTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDkxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA5MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgOTMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDkzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgOTQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDk0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODYxIFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyA5NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDk0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDk1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODc5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODgwIFwibGliL3JlYWQubWxcIlxuICB8IDkgLT5cblxuIyA5NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4ODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTAgLT5cblxuIyA5NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyODg5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODkwIFwibGliL3JlYWQubWxcIlxuICB8IDExIC0+XG5cbiMgOTU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG5cbiMgMjg5NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg5NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDQ1MFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXCInO1xuICAgICAgICAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZlxuICAgICAgICAgKVxuXG4jIDI5MDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG5cbiMgMjkxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTE5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiA0NjFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JztcbiAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX2d0IHYgbGV4YnVmIClcblxuIyAyOTMzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTM0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuXG4jIDI5MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI5NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjk0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIDQ2NlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyOTYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTYxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5NzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuXG4jIDI5NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI5NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTc2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgNDcxXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAyOTkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTkxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAyOTk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTk5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMzAwNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAwNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgOTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDMwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcblxuIyAzMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDE5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIDQ3OFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JztcbiAgICAgIHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDMwMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMDM3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDM4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgNDgwXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuXG4jIDMwNDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7IHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDMwNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMDU5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDYwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMDY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDY1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIDQ4NVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMzA3NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA3NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDMwODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwODIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiA0ODdcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcblxuIyAzMDkzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDk0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDMwOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTAzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTA0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTA5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgNDkyXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7XG4gICAgICByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDMxMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMTI3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTI4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgNDk0XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG5cbiMgMzEzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJzsgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAzMTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTQ1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE0OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE1MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTAzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzE1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiA0OTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOicgKVxuXG4jIDMxNjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxNzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxNzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiA1MDNcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcblxuIyAzMTg4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTg5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE5MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE5NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTA0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiA1MDdcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIiovXCIgKVxuXG4jIDMyMTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG5cbiMgMzIxNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIxNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTA0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcblxuIyAzMjIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjIzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMzIyNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIyOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGp1bmsgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2p1bmtfcmVjIGxleGJ1ZiA1MTNcbmFuZCBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTA1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggTGV4aW5nLmxleGVtZSBsZXhidWYgKVxuXG4jIDMyMzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyNDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuXG4jIDEwNTUgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBcbiMgMTA1NiBcImxpYi9yZWFkLm1sbFwiXG4gIGxldCBfID0gKHJlYWRfanNvbiA6IGxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gdClcblxuICBsZXQgcmVhZF90ID0gcmVhZF9qc29uXG5cbiAgbGV0ICgpID1cbiAgICByZWFkX2p1bmsgOj0ganVua1xuXG4gIGxldCByZWFkX2ludDggdiBsZXhidWYgPVxuICAgIGxldCBuID0gcmVhZF9pbnQgdiBsZXhidWYgaW5cbiAgICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW5cbiAgICAgIGxleGVyX2Vycm9yIFwiSW50OCBvdmVyZmxvd1wiIHYgbGV4YnVmXG4gICAgZWxzZVxuICAgICAgY2hhcl9vZl9pbnQgblxuXG4gIGxldCByZWFkX2xpc3QgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBMaXN0LnJldiAocmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYpXG5cbiAgbGV0IGFycmF5X29mX3Jldl9saXN0IGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICBbXSAtPiBbfCB8XVxuICAgICAgfCB4IDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgICBsZXQgciA9IHJlZiB0bCBpblxuICAgICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgICAgYS4oaSkgPC0gTGlzdC5oZCAhcjtcbiAgICAgICAgICAgIHIgOj0gTGlzdC50bCAhclxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgYVxuXG4gIGxldCByZWFkX2FycmF5IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgbGV0IGwgPSByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiBpblxuICAgIGFycmF5X29mX3Jldl9saXN0IGxcblxuICAoKiBSZWFkIGEgSlNPTiBvYmplY3QsIHJlYWRpbmcgdGhlIGtleXMgaW50byBPQ2FtbCBzdHJpbmdzXG4gICAgIChwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgKilcbiAgbGV0IHJlYWRfZmllbGRzIHJlYWRfZmllbGQgaW5pdF9hY2MgdiA9XG4gICAgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9pZGVudCByZWFkX2ZpZWxkIGluaXRfYWNjIHZcblxuICBsZXQgZmluaXNoIHYgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgIGlmIG5vdCAocmVhZF9lb2YgbGV4YnVmKSB0aGVuXG4gICAgICBsb25nX2Vycm9yIFwiSnVuayBhZnRlciBlbmQgb2YgSlNPTiB2YWx1ZTpcIiB2IGxleGJ1ZlxuXG4gIGxldCBpbml0X2xleGVyID0gaW5pdF9sZXhlclxuXG4gIGxldCBmcm9tX2xleGJ1ZiB2ID8oc3RyZWFtID0gZmFsc2UpIGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcblxuICAgIGxldCB4ID1cbiAgICAgIGlmIHJlYWRfZW9mIGxleGJ1ZiB0aGVuXG4gICAgICAgIHJhaXNlIEVuZF9vZl9pbnB1dFxuICAgICAgZWxzZVxuICAgICAgICByZWFkX2pzb24gdiBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggdiBsZXhidWY7XG5cbiAgICB4XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIEVuZF9vZl9pbnB1dCAtPlxuICAgICAganNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIEVuZF9vZl9pbnB1dCAtPlxuICAgICAganNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgdHJ5XG4gICAgICBsZXQgeCA9IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyBpblxuICAgICAgY2xvc2VfaW4gaWM7XG4gICAgICB4XG4gICAgd2l0aCBlIC0+XG4gICAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICAgIHJhaXNlIGVcblxuICBleGNlcHRpb24gRmluYWxseSBvZiBleG4gKiBleG5cblxuICBsZXQgc2VxX2Zyb21fbGV4YnVmIHYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpIGxleGJ1ZiA9XG4gICAgbGV0IHN0cmVhbSA9IFNvbWUgdHJ1ZSBpblxuICAgIGxldCByZWMgZiAoKSA9XG4gICAgICB0cnkgU2VxLkNvbnMgKGZyb21fbGV4YnVmIHYgP3N0cmVhbSBsZXhidWYsIGYpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2lucHV0IC0+XG4gICAgICAgICAgICBmaW4gKCk7XG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgICAgKHRyeSBmaW4gKCkgd2l0aCBmaW5fZSAtPiByYWlzZSAoRmluYWxseSAoZSwgZmluX2UpKSk7XG4gICAgICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICBmXG5cbiAgbGV0IHNlcV9mcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiA/ZmluIGxleGJ1ZlxuXG4gIGxldCBzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgfmZpbiBsZXhidWZcblxuICB0eXBlIGpzb25fbGluZSA9IFsgYEpzb24gb2YgdCB8IGBFeG4gb2YgZXhuIF1cblxuICBsZXQgbGluZXNlcV9mcm9tX2NoYW5uZWxcbiAgICAgID9idWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpID9mbmFtZSA/bG51bToobG51bTAgPSAxKSBpYyA9XG4gICAgbGV0IGJ1ZiA9XG4gICAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSAoQnVmZmVyLmNyZWF0ZSAyNTYpXG4gICAgICAgIHwgU29tZSBfIC0+IGJ1ZlxuICAgIGluXG4gICAgbGV0IHJlYyBmIGxudW0gPSBmdW4gKCkgLT5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgbGluZSA9IGlucHV0X2xpbmUgaWMgaW5cbiAgICAgICAgU2VxLkNvbnMgKGBKc29uIChmcm9tX3N0cmluZyA/YnVmID9mbmFtZSB+bG51bSBsaW5lKSwgZiAobG51bSArIDEpKVxuICAgICAgd2l0aFxuICAgICAgICAgIEVuZF9vZl9maWxlIC0+IGZpbiAoKTsgU2VxLk5pbFxuICAgICAgICB8IGUgLT4gU2VxLkNvbnMgKGBFeG4gZSwgZiAobG51bSArIDEpKVxuICAgIGluXG4gICAgZiBsbnVtMFxuXG4gIGxldCBsaW5lc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsaW5lc2VxX2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gP2ZuYW1lID9sbnVtIGljXG5cbiAgbGV0IHByZXR0aWZ5ID9zdGQgcyA9XG4gICAgcHJldHR5X3RvX3N0cmluZyA/c3RkIChmcm9tX3N0cmluZyBzKVxuXG4gIGxldCBjb21wYWN0ID9zdGQgcyA9XG4gICAgdG9fc3RyaW5nIChmcm9tX3N0cmluZyBzKVxuXG5cbiMgMzQwOCBcImxpYi9yZWFkLm1sXCJcbiMgNDIgXCJ5b2pzb24uY3Bwby5tbFwiXG5tb2R1bGUgVXRpbCA9XG5zdHJ1Y3RcbiMgMSBcInV0aWwubWxcIlxuZXhjZXB0aW9uIFR5cGVfZXJyb3Igb2Ygc3RyaW5nICogdFxuXG5sZXQgdHlwZW9mID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgXyAtPiBcIm9iamVjdFwiXG4gIHwgYEJvb2wgXyAtPiBcImJvb2xcIlxuICB8IGBGbG9hdCBfIC0+IFwiZmxvYXRcIlxuICBcbiMgOCBcInV0aWwubWxcIlxuICB8IGBJbnQgXyAtPiBcImludFwiXG4gIFxuIyAxMCBcInV0aWwubWxcIlxuICB8IGBMaXN0IF8gLT4gXCJhcnJheVwiXG4gIHwgYE51bGwgLT4gXCJudWxsXCJcbiAgfCBgU3RyaW5nIF8gLT4gXCJzdHJpbmdcIlxuICB8IGBJbnRsaXQgXyAtPiBcImludGxpdFwiXG4gIHwgYEZsb2F0bGl0IF8gLT4gXCJmbG9hdGxpdFwiXG4gIFxuIyAxOCBcInV0aWwubWxcIlxuICB8IGBUdXBsZSBfIC0+IFwidHVwbGVcIlxuICB8IGBWYXJpYW50IF8gLT4gXCJ2YXJpYW50XCJcblxubGV0IHR5cGVyciBtc2cganMgPSByYWlzZSAoVHlwZV9lcnJvciAobXNnIF4gdHlwZW9mIGpzLCBqcykpXG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nICogdFxuXG5sZXQgYXNzb2MgbmFtZSBvYmogPSB0cnkgTGlzdC5hc3NvYyBuYW1lIG9iaiB3aXRoIE5vdF9mb3VuZCAtPiBgTnVsbFxuXG5sZXQgbWVtYmVyIG5hbWUgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gYXNzb2MgbmFtZSBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IG1lbWJlciAnXCIgXiBuYW1lIF4gXCInIG9mIG5vbi1vYmplY3QgdHlwZSBcIikganNcblxubGV0IHJlYyBwYXRoIGwgb2JqID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gU29tZSBvYmpcbiAgfCBrZXkgOjogbCAtPiAoXG4gICAgICBtYXRjaCBvYmogd2l0aFxuICAgICAgfCBgQXNzb2MgYXNzb2MgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Mga2V5IGFzc29jIHdpdGhcbiAgICAgICAgICB8IG9iaiAtPiBwYXRoIGwgb2JqXG4gICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IGluZGV4IGkgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMganMgLT5cbiAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICBsZXQgd3JhcHBlZF9pbmRleCA9IGlmIGkgPCAwIHRoZW4gbGVuICsgaSBlbHNlIGkgaW5cbiAgICAgIGlmIHdyYXBwZWRfaW5kZXggPCAwIHx8IHdyYXBwZWRfaW5kZXggPj0gbGVuIHRoZW5cbiAgICAgICAgcmFpc2UgKFVuZGVmaW5lZCAoXCJJbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG91dCBvZiBib3VuZHNcIiwganMpKVxuICAgICAgZWxzZSBMaXN0Lm50aCBsIHdyYXBwZWRfaW5kZXhcbiAgfCBqcyAtPlxuICAgICAgdHlwZXJyIChcIkNhbid0IGdldCBpbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG9mIG5vbi1hcnJheSB0eXBlIFwiKSBqc1xuXG5sZXQgbWFwIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gYExpc3QgKExpc3QubWFwIGYgbClcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBtYXAgZnVuY3Rpb24gb3ZlciBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgdG9fYXNzb2MgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gb2JqXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgb2JqZWN0LCBnb3QgXCIganNcblxubGV0IHRvX29wdGlvbiBmID0gZnVuY3Rpb24gYE51bGwgLT4gTm9uZSB8IHggLT4gU29tZSAoZiB4KVxubGV0IHRvX2Jvb2wgPSBmdW5jdGlvbiBgQm9vbCBiIC0+IGIgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sLCBnb3QgXCIganNcblxubGV0IHRvX2Jvb2xfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgQm9vbCBiIC0+IFNvbWUgYlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyID0gZnVuY3Rpb25cbiAgXG4jIDcwIFwidXRpbC5tbFwiXG4gIHwgYEludCBpIC0+IGZsb2F0IGlcbiAgXG4jIDczIFwidXRpbC5tbFwiXG4gIHwgYEZsb2F0IGYgLT4gZlxuICBcbiMgNzUgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyX29wdGlvbiA9IGZ1bmN0aW9uXG4gIFxuIyA3OSBcInV0aWwubWxcIlxuICB8IGBJbnQgaSAtPiBTb21lIChmbG9hdCBpKVxuICBcbiMgODIgXCJ1dGlsLm1sXCJcbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgXG4jIDg0IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgXG4jIDg5IFwidXRpbC5tbFwiXG4gIHwgYEZsb2F0IGYgLT4gZlxuICBcbiMgOTEgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdF9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgOTUgXCJ1dGlsLm1sXCJcbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgXG4jIDk3IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgXG4jIDEwMiBcInV0aWwubWxcIlxuICB8IGBJbnQgaSAtPiBpXG4gIFxuIyAxMDQgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50X29wdGlvbiA9IGZ1bmN0aW9uXG4gIFxuIyAxMDggXCJ1dGlsLm1sXCJcbiAgfCBgSW50IGkgLT4gU29tZSBpXG4gIFxuIyAxMTAgXCJ1dGlsLm1sXCJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIGBMaXN0IGwgLT4gbCB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGFycmF5LCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIFxuIyAxMTcgXCJ1dGlsLm1sXCJcbiAgfCBgU3RyaW5nIHMgLT4gc1xuICBcbiMgMTE5IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nLCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZ19vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgMTIzIFwidXRpbC5tbFwiXG4gIHwgYFN0cmluZyBzIC0+IFNvbWUgc1xuICBcbiMgMTI1IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZyBvciBudWxsLCBnb3QgXCIganNcblxubGV0IGNvbnZlcnRfZWFjaCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIGYgbFxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IGNvbnZlcnQgZWFjaCBlbGVtZW50IG9mIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCByZWMgcmV2X2ZpbHRlcl9tYXAgZiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZXZfZmlsdGVyX21hcCBmIGFjYyB0bFxuICAgICAgfCBTb21lIHkgLT4gcmV2X2ZpbHRlcl9tYXAgZiAoeSA6OiBhY2MpIHRsKVxuXG5sZXQgZmlsdGVyX21hcCBmIGwgPSBMaXN0LnJldiAocmV2X2ZpbHRlcl9tYXAgZiBbXSBsKVxuXG5sZXQgcmVjIHJldl9mbGF0dGVuIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYExpc3QgbDIgLT4gcmV2X2ZsYXR0ZW4gKExpc3QucmV2X2FwcGVuZCBsMiBhY2MpIHRsXG4gICAgICB8IF8gLT4gcmV2X2ZsYXR0ZW4gYWNjIHRsKVxuXG5sZXQgZmxhdHRlbiBsID0gTGlzdC5yZXYgKHJldl9mbGF0dGVuIFtdIGwpXG5cbmxldCBmaWx0ZXJfaW5kZXggaSBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgTGlzdCBsIC0+ICggdHJ5IFNvbWUgKExpc3QubnRoIGwgaSkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9saXN0IGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgTGlzdCBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxuXG5sZXQgZmlsdGVyX21lbWJlciBrIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBBc3NvYyBsIC0+ICggdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBsKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2Fzc29jIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQXNzb2MgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfYm9vbCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEJvb2wgeCAtPiBTb21lIHggfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfaW50IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICAgIGZ1bmN0aW9uXG4gICAgICBcbiMgMTcyIFwidXRpbC5tbFwiXG4gICAgICB8ICBgSW50IHggLT4gU29tZSB4XG4gICAgICBcbiMgMTc0IFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICAgICkgbFxuXG5sZXQgZmlsdGVyX2Zsb2F0IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgXG4jIDE4MSBcInV0aWwubWxcIlxuICAgICAgYEZsb2F0IHggLT4gU29tZSB4XG4gICAgICBcbiMgMTgzIFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9udW1iZXIgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICAgIFxuIyAxOTAgXCJ1dGlsLm1sXCJcbiAgICAgICAgYEludCB4IC0+IFNvbWUgKGZsb2F0IHgpXG4gICAgICBcbiMgMTkzIFwidXRpbC5tbFwiXG4gICAgICB8IGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgXG4jIDE5NSBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfc3RyaW5nIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBcbiMgMjAyIFwidXRpbC5tbFwiXG4gICAgICAgIGBTdHJpbmcgeCAtPiBTb21lIHhcbiAgICAgIFxuIyAyMDQgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQga2V5cyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChrZXksIF8pIC0+IGtleSlcblxubGV0IHZhbHVlcyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChfLCB2YWx1ZSkgLT4gdmFsdWUpXG5cbmxldCBjb21iaW5lIChmaXJzdCA6IHQpIChzZWNvbmQgOiB0KSA9XG4gIG1hdGNoIChmaXJzdCwgc2Vjb25kKSB3aXRoXG4gIHwgYEFzc29jIGEsIGBBc3NvYyBiIC0+IChgQXNzb2MgKGEgQCBiKSA6IHQpXG4gIHwgYSwgYiAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkV4cGVjdGVkIHR3byBvYmplY3RzLCBjaGVjayBpbnB1dHNcIilcbiMgNDUgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcbiMgNDkgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcblxubW9kdWxlIFNhZmUgPVxuc3RydWN0XG4jIDEgXCJ0eXBlLm1sXCJcbigqKiB7MyBUeXBlIG9mIHRoZSBKU09OIHRyZWV9ICopXG5cbnR5cGUgdCA9XG4gICAgW1xuICAgIHwgYE51bGxcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICBcbiMgOCBcInR5cGUubWxcIlxuICAgIHwgYEludCBvZiBpbnRcbiAgICBcbiMgMTEgXCJ0eXBlLm1sXCJcbiAgICB8IGBJbnRsaXQgb2Ygc3RyaW5nXG4gICAgXG4jIDE0IFwidHlwZS5tbFwiXG4gICAgfCBgRmxvYXQgb2YgZmxvYXRcbiAgICBcbiMgMjAgXCJ0eXBlLm1sXCJcbiAgICB8IGBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgXG4jIDI1IFwidHlwZS5tbFwiXG4gICAgfCBgQXNzb2Mgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICB8IGBMaXN0IG9mIHQgbGlzdFxuICAgIFxuIyAyOCBcInR5cGUubWxcIlxuICAgIHwgYFR1cGxlIG9mIHQgbGlzdFxuICAgIFxuIyAzMSBcInR5cGUubWxcIlxuICAgIHwgYFZhcmlhbnQgb2YgKHN0cmluZyAqIHQgb3B0aW9uKVxuICAgIFxuIyAzMyBcInR5cGUubWxcIlxuICAgIF1cbigqKlxuQWxsIHBvc3NpYmxlIGNhc2VzIGRlZmluZWQgaW4gWW9qc29uOlxuLSBgTnVsbDogSlNPTiBudWxsXG4tIGBCb29sIG9mIGJvb2w6IEpTT04gYm9vbGVhblxuLSBgSW50IG9mIGludDogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LlxuLSBgSW50bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgRmxvYXQgb2YgZmxvYXQ6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTi5cbi0gYEZsb2F0bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgU3RyaW5nIG9mIHN0cmluZzogSlNPTiBzdHJpbmcuIEJ5dGVzIGluIHRoZSByYW5nZSAxMjgtMjU1IGFyZSBwcmVzZXJ2ZWRcblx0ICAgIGFzLWlzIHdpdGhvdXQgZW5jb2RpbmcgdmFsaWRhdGlvbiBmb3IgYm90aCByZWFkaW5nXG5cdCAgICBhbmQgd3JpdGluZy5cbi0gYFN0cmluZ2xpdCBvZiBzdHJpbmc6IEpTT04gc3RyaW5nIGxpdGVyYWwgaW5jbHVkaW5nIHRoZSBkb3VibGUgcXVvdGVzLlxuLSBgQXNzb2Mgb2YgKHN0cmluZyAqIGpzb24pIGxpc3Q6IEpTT04gb2JqZWN0LlxuLSBgTGlzdCBvZiBqc29uIGxpc3Q6IEpTT04gYXJyYXkuXG4tIGBUdXBsZSBvZiBqc29uIGxpc3Q6IFR1cGxlIChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbKFwiYWJjXCIsIDEyMyldLlxuLSBgVmFyaWFudCBvZiAoc3RyaW5nICoganNvbiBvcHRpb24pOiBWYXJpYW50IChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbPFwiRm9vXCI+XSBvciBbPFwiQmFyXCI6MTIzPl0uXG4qKVxuXG4oKlxuICBOb3RlIHRvIGFkdmVudHVyZXJzOiBvY2FtbGRvYyBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBjb21tZW50c1xuICBvbiBlYWNoIHBvbHltb3JwaGljIHZhcmlhbnQsIGFuZCBjcHBvIGRvZXNuJ3QgYWxsb3cgdG8gY29uY2F0ZW5hdGVcbiAgY29tbWVudHMsIHNvIGl0IHdvdWxkIGJlIGNvbXBsaWNhdGVkIHRvIGRvY3VtZW50IG9ubHkgdGhlXG4gIGNhc2VzIHRoYXQgYXJlIHByZXNlcnZlZCBieSBjcHBvIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4qKVxuIyAxIFwic2FmZS5tbFwiXG5sZXQgcmVjIHRvX2Jhc2ljIDogdCAtPiBCYXNpYy50ID0gZnVuY3Rpb25cbiAgfCAoYE51bGwgfCBgQm9vbCBfIHwgYEludCBfIHwgYEZsb2F0IF8gfCBgU3RyaW5nIF8pIGFzIHggLT4geFxuICB8IGBJbnRsaXQgcyAtPiBgU3RyaW5nIHNcbiAgfCBgTGlzdCBsIHwgYFR1cGxlIGwgLT4gYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgdG9fYmFzaWMgbCkpXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGBBc3NvYyAoTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgdG9fYmFzaWMgdikpIGwpKVxuICB8IGBWYXJpYW50IChrLCBOb25lKSAtPiBgU3RyaW5nIGtcbiAgfCBgVmFyaWFudCAoaywgU29tZSB2KSAtPiBgTGlzdCBbIGBTdHJpbmcgazsgdG9fYmFzaWMgdiBdXG4jIDEgXCJ3cml0ZS5tbFwiXG4oKiBpbmNsdWRlZDogdHlwZS5tbCAqKVxuXG5sZXQgaGV4IG4gPVxuICBDaGFyLmNociAoXG4gICAgaWYgbiA8IDEwIHRoZW4gbiArIDQ4XG4gICAgZWxzZSBuICsgODdcbiAgKVxuXG5sZXQgd3JpdGVfc3BlY2lhbCBzcmMgc3RhcnQgc3RvcCBvYiBzdHIgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3RyO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgd3JpdGVfY29udHJvbF9jaGFyIHNyYyBzdGFydCBzdG9wIG9iIGMgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFxcdTAwXCI7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsc3IgNCkpO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbGFuZCAweGYpKTtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IGZpbmlzaF9zdHJpbmcgc3JjIHN0YXJ0IG9iID1cbiAgdHJ5XG4gICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpXG4gIHdpdGggZXhjIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJzcmM9JVMgc3RhcnQ9JWkgbGVuPSVpXFxuJSFcIlxuICAgICAgc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpO1xuICAgIHJhaXNlIGV4Y1xuXG5sZXQgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcyA9XG4gIGxldCBzdGFydCA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAnXCInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXCJcIlxuICAgICAgfCAnXFxcXCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcXFwiXG4gICAgICB8ICdcXGInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGJcIlxuICAgICAgfCAnXFwwMTInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGZcIlxuICAgICAgfCAnXFxuJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxuXCJcbiAgICAgIHwgJ1xccicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcclwiXG4gICAgICB8ICdcXHQnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHRcIlxuICAgICAgfCAnXFx4MDAnLi4nXFx4MUYnXG4gICAgICB8ICdcXHg3RicgYXMgYyAtPiB3cml0ZV9jb250cm9sX2NoYXIgcyBzdGFydCBpIG9iIGNcbiAgICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBmaW5pc2hfc3RyaW5nIHMgc3RhcnQgb2JcblxubGV0IHdyaXRlX3N0cmluZyBvYiBzID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX3N0cmluZ19ib2R5IG9iIHM7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMTAgaW5cbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgdGVzdF9zdHJpbmcgKCkgPVxuICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgZm9yIGkgPSAwIHRvIDI1NSBkb1xuICAgIEJ5dGVzLnNldCBzIGkgKENoYXIuY2hyIGkpXG4gIGRvbmU7XG4gIGpzb25fc3RyaW5nX29mX3N0cmluZyAoQnl0ZXMudG9fc3RyaW5nIHMpXG5cblxubGV0IHdyaXRlX251bGwgb2IgKCkgPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuXG5sZXQgd3JpdGVfYm9vbCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIilcblxuXG5sZXQgbWF4X2RpZ2l0cyA9XG4gIG1heFxuICAgIChTdHJpbmcubGVuZ3RoIChzdHJpbmdfb2ZfaW50IG1heF9pbnQpKVxuICAgIChTdHJpbmcubGVuZ3RoIChzdHJpbmdfb2ZfaW50IG1pbl9pbnQpKVxuXG5sZXQgZGVjIG4gPVxuICBDaGFyLmNociAobiArIDQ4KVxuXG5sZXQgcmVjIHdyaXRlX2RpZ2l0cyBzIHggPVxuICBpZiB4ID0gMCB0aGVuICgpXG4gIGVsc2VcbiAgICBsZXQgZCA9IHggbW9kIDEwIGluXG4gICAgd3JpdGVfZGlnaXRzIHMgKHggLyAxMCk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHMgKGRlYyAoYWJzIGQpKVxuXG5sZXQgd3JpdGVfaW50IG9iIHggPVxuICBpZiB4ID4gMCB0aGVuXG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgZWxzZSBpZiB4IDwgMCB0aGVuIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJy0nO1xuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIClcbiAgZWxzZVxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnMCdcblxuXG5sZXQganNvbl9zdHJpbmdfb2ZfaW50IGkgPVxuICBzdHJpbmdfb2ZfaW50IGlcblxuXG4oKlxuICBFbnN1cmUgdGhhdCB0aGUgZmxvYXQgaXMgbm90IHByaW50ZWQgYXMgYW4gaW50LlxuICBUaGlzIGlzIG5vdCByZXF1aXJlZCBieSBKU09OLCBidXQgdXNlZnVsIGluIG9yZGVyIHRvIGd1YXJhbnRlZVxuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCBmbG9hdF9uZWVkc19wZXJpb2QgcyA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgJzAnLi4nOScgfCAnLScgLT4gKClcbiAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBFeGl0IC0+XG4gICAgZmFsc2VcblxuKCpcbiAgR3VhcmFudGVlcyB0aGF0IGEgc3VmZmljaWVudCBudW1iZXIgb2YgZGlnaXRzIGFyZSBwcmludGVkIGluIG9yZGVyIHRvIGFsbG93XG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IHdyaXRlX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxubGV0IHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIGxldCBvcGVuIFByaW50ZiBpblxuICBsZXQgcyA9XG4gICAgbWF0Y2ggc2lnbmlmaWNhbnRfZmlndXJlcyB3aXRoXG4gICAgICAgIDEgLT4gc3ByaW50ZiBcIiUuMWdcIiB4XG4gICAgICB8IDIgLT4gc3ByaW50ZiBcIiUuMmdcIiB4XG4gICAgICB8IDMgLT4gc3ByaW50ZiBcIiUuM2dcIiB4XG4gICAgICB8IDQgLT4gc3ByaW50ZiBcIiUuNGdcIiB4XG4gICAgICB8IDUgLT4gc3ByaW50ZiBcIiUuNWdcIiB4XG4gICAgICB8IDYgLT4gc3ByaW50ZiBcIiUuNmdcIiB4XG4gICAgICB8IDcgLT4gc3ByaW50ZiBcIiUuN2dcIiB4XG4gICAgICB8IDggLT4gc3ByaW50ZiBcIiUuOGdcIiB4XG4gICAgICB8IDkgLT4gc3ByaW50ZiBcIiUuOWdcIiB4XG4gICAgICB8IDEwIC0+IHNwcmludGYgXCIlLjEwZ1wiIHhcbiAgICAgIHwgMTEgLT4gc3ByaW50ZiBcIiUuMTFnXCIgeFxuICAgICAgfCAxMiAtPiBzcHJpbnRmIFwiJS4xMmdcIiB4XG4gICAgICB8IDEzIC0+IHNwcmludGYgXCIlLjEzZ1wiIHhcbiAgICAgIHwgMTQgLT4gc3ByaW50ZiBcIiUuMTRnXCIgeFxuICAgICAgfCAxNSAtPiBzcHJpbnRmIFwiJS4xNWdcIiB4XG4gICAgICB8IDE2IC0+IHNwcmludGYgXCIlLjE2Z1wiIHhcbiAgICAgIHwgXyAtPiBzcHJpbnRmIFwiJS4xN2dcIiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IGpzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9zdGRfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAganNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAganNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfc3RkX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBqc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBqc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfc3RkX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB0ZXN0X2Zsb2F0ICgpID1cbiAgbGV0IGwgPSBbIDAuOyAxLjsgLTEuIF0gaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IDIuICouIHggKy4gMS4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggLy4gc3FydCAyLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAqLiBzcXJ0IDMuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIGNvcyBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4ICouIDEuMjNlNTApIGwgaW5cbiAgbGV0IGwgPSBsIEAgWyBpbmZpbml0eTsgbmVnX2luZmluaXR5IF0gaW5cbiAgTGlzdC5pdGVyIChcbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHMgPSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeCBpblxuICAgICAgbGV0IHkgPSBmbG9hdF9vZl9zdHJpbmcgcyBpblxuICAgICAgUHJpbnRmLnByaW50ZiBcIiVnICVnICVTICVCXFxuXCIgeCB5IHMgKHggPSB5KVxuICApXG4gICAgbFxuXG4oKlxubGV0ICgpID0gdGVzdF9mbG9hdCAoKVxuKilcblxubGV0IHdyaXRlX2ludGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfZmxvYXRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX3N0cmluZ2xpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5cbmxldCByZWMgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX3NlcCB4O1xuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgaXRlcjIgZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGZfc2VwIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgcmVjIHdyaXRlX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICBcbiMgMjY0IFwid3JpdGUubWxcIlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgXG4jIDI2NyBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDI3MCBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX2Zsb2F0IG9iIGZcbiAgICBcbiMgMjc2IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgXG4jIDI4MSBcIndyaXRlLm1sXCJcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfbGlzdCBvYiBsXG4gICAgXG4jIDI4NCBcIndyaXRlLm1sXCJcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3R1cGxlIG9iIGxcbiAgICBcbiMgMjg3IFwid3JpdGUubWxcIlxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3ZhcmlhbnQgb2IgcyBvXG5cbiMgMjkwIFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbiMgMzA2IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJygnO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKSdcblxuIyAzMTMgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfdmFyaWFudCBvYiBzIG8gPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJzwnO1xuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgKG1hdGNoIG8gd2l0aFxuICAgICAgIE5vbmUgLT4gKClcbiAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICAgICB3cml0ZV9qc29uIG9iIHhcbiAgKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc+J1xuXG4jIDMyNSBcIndyaXRlLm1sXCJcbmxldCB3cml0ZV90ID0gd3JpdGVfanNvblxuXG5sZXQgcmVjIHdyaXRlX3N0ZF9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgXG4jIDMzMiBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIFxuIyAzMzUgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAzMzggXCJ3cml0ZS5tbFwiXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9zdGRfZmxvYXQgb2IgZlxuICAgIFxuIyAzNDQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzQ5IFwid3JpdGUubWxcIlxuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuICAgIFxuIyAzNTIgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV9zdGRfdHVwbGUgb2IgbFxuICAgIFxuIyAzNTUgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvXG5cbiMgMzU4IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbiMgMzc5IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgbyA9XG4gIG1hdGNoIG8gd2l0aFxuICAgICAgTm9uZSAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gICAgICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgICB3cml0ZV9zdGRfanNvbiBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxuIyAzOTEgXCJ3cml0ZS5tbFwiXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYik7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fZmlsZSA/bGVuID9zdGQgPyhzdWYgPSBcIlxcblwiKSBmaWxlIHggPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHRvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2MgeDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubGV0IHNlcV90b19idWZmZXIgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9iIHN0ID1cbiAgU2VxLml0ZXIgKHRvX2J1ZmZlciB+c3VmID9zdGQgb2IpIHN0XG5cbmxldCBzZXFfdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBzdCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHNlcV90b19idWZmZXIgfnN1ZiA/c3RkIG9iIHN0O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHNlcV90b19jaGFubmVsID9idWYgPyhsZW49MjA5NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9jIHNlcSA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgU2VxLml0ZXIgKGZ1biBqc29uIC0+XG4gICAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBqc29uO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgKSBzZXFcblxubGV0IHNlcV90b19maWxlID9sZW4gPyhzdWYgPSBcIlxcblwiKSA/c3RkIGZpbGUgc3QgPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHN0O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5cbmxldCByZWMgc29ydCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgc29ydCB2KSkgbCkgaW5cbiAgICAgIGBBc3NvYyAoTGlzdC5zdGFibGVfc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSBsKVxuICB8IGBMaXN0IGwgLT5cbiAgICAgIGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIFxuIyA0ODUgXCJ3cml0ZS5tbFwiXG4gIHwgYFR1cGxlIGwgLT5cbiAgICAgIGBUdXBsZSAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICBcbiMgNDg5IFwid3JpdGUubWxcIlxuICB8IGBWYXJpYW50IChrLCBTb21lIHYpIGFzIHggLT5cbiAgICAgIGxldCB2JyA9IHNvcnQgdiBpblxuICAgICAgaWYgdiA9PSB2JyB0aGVuIHhcbiAgICAgIGVsc2VcbiAgICAgICAgYFZhcmlhbnQgKGssIFNvbWUgdicpXG4gIFxuIyA0OTUgXCJ3cml0ZS5tbFwiXG4gIHwgeCAtPiB4XG4jIDYyIFwieW9qc29uLmNwcG8ubWxcIlxubW9kdWxlIFByZXR0eSA9XG5zdHJ1Y3RcbiMgMSBcInByZXR0eS5tbFwiXG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgXG4jIDc4IFwicHJldHR5Lm1sXCJcbiAgICB8IGBJbnQgeCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2ZfaW50IHgpXG4gICAgXG4jIDgxIFwicHJldHR5Lm1sXCJcbiAgICB8IGBGbG9hdCB4IC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBzdGQgdGhlbiBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICAgIGVsc2UganNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDg5IFwicHJldHR5Lm1sXCJcbiAgICB8IGBTdHJpbmcgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG4gICAgXG4jIDkyIFwicHJldHR5Lm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDEwMCBcInByZXR0eS5tbFwiXG4gICAgfCBgTGlzdCBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIltdXCJcbiAgICB8IGBMaXN0IGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgaWYgaXNfYXRvbV9saXN0IGwgdGhlblxuICAgICAgICAoKiB1c2UgbGluZSB3cmFwcGluZyBsaWtlIHdlIHdvdWxkIGRvIGZvciBhIHBhcmFncmFwaCBvZiB0ZXh0ICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aG92PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbFxuICAgICAgZWxzZVxuICAgICAgICAoKiBwcmludCB0aGUgZWxlbWVudHMgaG9yaXpvbnRhbGx5IGlmIHRoZXkgZml0IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICBvdGhlcndpc2UgcHJpbnQgdGhlbSBpbiBhIGNvbHVtbiAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGh2PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBBc3NvYyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcInt9XCJcbiAgICB8IGBBc3NvYyBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIntAOzwxIDA+JWFAOzwxIC0yPn1cIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0X2ZpZWxkIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgXG4jIDExOSBcInByZXR0eS5tbFwiXG4gICAgfCBgVHVwbGUgbCAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaWYgbCA9IFtdIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiKClcIlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxob3YyPlwiO1xuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiKEAsJWFAOzwwIC0yPilcIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgICAgICAgKVxuICAgIFxuIyAxMzIgXCJwcmV0dHkubWxcIlxuICAgIHwgYFZhcmlhbnQgKHMsIE5vbmUpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgXG4jIDEzNSBcInByZXR0eS5tbFwiXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZyBzIGluXG4gICAgICAgICAgXG4jIDEzOSBcInByZXR0eS5tbFwiXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgcmVwcmVzZW50YXRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjwlcz5cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG5cbiAgICB8IGBWYXJpYW50IChzLCBTb21lIHgpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgXG4jIDE0NiBcInByZXR0eS5tbFwiXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZyBzIGluXG4gICAgICAgICAgXG4jIDE1MCBcInByZXR0eS5tbFwiXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IFsgcmVwcmVzZW50YXRpb247IHggXSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBvcCA9IGpzb25fc3RyaW5nX29mX3N0cmluZyBzIGluXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPEBbPGh2Mj4lczogJWFAXT5cIiBvcCAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbiMgMTU2IFwicHJldHR5Lm1sXCJcbmFuZCBmb3JtYXRfZmllbGQgc3RkIG91dCAobmFtZSwgeCkgPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JXM6ICVhQF1cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIG5hbWUpIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxubGV0IHBwID8oc3RkID0gZmFsc2UpIG91dCB4ID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVhQF1cIiAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSAoeCA6PiB0KVxuXG5sZXQgdG9fc3RyaW5nID9zdGQgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKHBwID9zdGQpIHhcblxubGV0IHRvX2NoYW5uZWwgP3N0ZCBvYyB4ID1cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiJWFAP1wiIChwcCA/c3RkKSB4XG4jIDY1IFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG4jIDEgXCJtb25vbW9ycGhpYy5tbFwiXG5sZXQgcmVjIHBwIGZtdCA9XG4gIGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJgTnVsbFwiXG4gIHwgYEJvb2wgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBCb29sIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUJcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA5IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZFwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDE1IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDIxIFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBGbG9hdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUZcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAzMyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgU3RyaW5nIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA0NCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgQXNzb2MgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQXNzb2MgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIGtleTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAgICAgICBwcCBmbXQgdmFsdWU7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgTGlzdCB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBMaXN0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgeCAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIHBwIGZtdCB4O1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA3MSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgVHVwbGUgdHVwIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFR1cGxlIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgZSAtPlxuICAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgIHBwIGZtdCBlO1xuICAgICAgICAgICB0cnVlKSBmYWxzZSB0dXApO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDg0IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVmFyaWFudCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgbmFtZTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAobWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uZVwiXG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIihTb21lIFwiO1xuICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIpXCIpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG5cbiMgOTkgXCJtb25vbW9ycGhpYy5tbFwiXG5sZXQgc2hvdyB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcCB4XG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgYE51bGwsIGBOdWxsIC0+IHRydWVcbiAgfCBgQm9vbCBhLCBgQm9vbCBiIC0+IGEgPSBiXG4gIFxuIyAxMDcgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEludCBhLCBgSW50IGIgLT4gYSA9IGJcbiAgICBcbiMgMTEwIFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEludGxpdCBhLCBgSW50bGl0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTEzIFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEZsb2F0IGEsIGBGbG9hdCBiIC0+IGEgPSBiXG4gICAgXG4jIDExOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBTdHJpbmcgYSwgYFN0cmluZyBiIC0+IGEgPSBiXG4gICAgXG4jIDEyNCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBBc3NvYyB4cywgYEFzc29jIHlzIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXlzID0gZnVuIChrZXksIF8pIChrZXknLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBrZXkga2V5JyBpblxuICAgICAgbGV0IHhzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeHMgaW5cbiAgICAgIGxldCB5cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHlzIGluXG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiAoZnVuIChrZXksIHZhbHVlKSAoa2V5JywgdmFsdWUnKSAtPlxuICAgICAgICBtYXRjaCBrZXkgPSBrZXknIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgICB8IHRydWUgLT4gZXF1YWwgdmFsdWUgdmFsdWUnKSB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIFxuIyAxMzcgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgVHVwbGUgeHMsIGBUdXBsZSB5c1xuICAgIFxuIyAxMzkgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgXG4jIDE0NiBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSksIGBWYXJpYW50IChuYW1lJywgdmFsdWUnKSAtPlxuICAgICAgKG1hdGNoIG5hbWUgPSBuYW1lJyB3aXRoXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgbWF0Y2ggdmFsdWUsIHZhbHVlJyB3aXRoXG4gICAgICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICBcbiMgMTU1IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgXyAtPiBmYWxzZVxuIyAxIFwid3JpdGUyLm1sXCJcbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4jIDEgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBcbiMgMiBcImxpYi9yZWFkLm1sbFwiXG4gIG1vZHVsZSBMZXhpbmcgPVxuICAgICgqXG4gICAgICBXZSBvdmVycmlkZSBMZXhpbmcuZW5naW5lIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IHBvc2l0aW9uXG4gICAgICByZWNvcmQgZWFjaCB0aW1lIGEgcnVsZSBpcyBtYXRjaGVkLlxuICAgICAgVGhpcyByZWR1Y2VzIHRvdGFsIHBhcnNpbmcgdGltZSBieSBhYm91dCAzMSUuXG4gICAgKilcbiAgc3RydWN0XG4gICAgaW5jbHVkZSBMZXhpbmdcblxuICAgIGV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcblxuICAgIGxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gICAgICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICAgICAgKCpcbiAgICAgIGlmIHJlc3VsdCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgICAgIGVuZDtcbiAgICAgICopXG4gICAgICByZXN1bHRcbiAgZW5kXG5cbiAgb3BlbiBQcmludGZcbiAgb3BlbiBMZXhpbmdcblxuICAoKiBzZWUgZGVzY3JpcHRpb24gaW4gY29tbW9uLm1saSAqKVxuICB0eXBlIGxleGVyX3N0YXRlID0gTGV4ZXJfc3RhdGUudCA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgZGVjIGMgPVxuICAgIENoYXIuY29kZSBjIC0gNDhcblxuICBsZXQgaGV4IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnMCcuLic5JyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG4gICAgICB8ICdhJy4uJ2YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKyAxMFxuICAgICAgfCAnQScuLidGJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgMTBcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgY3VzdG9tX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQgb2ZmcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyAtIDEgaW5cbiAgICBsZXQgYm9sID0gdi5ib2wgaW5cbiAgICBsZXQgcG9zMSA9IG9mZnMgKyBsZXhidWYubGV4X3N0YXJ0X3BvcyAtIGJvbCAtIDEgaW5cbiAgICBsZXQgcG9zMiA9IG1heCBwb3MxIChvZmZzICsgbGV4YnVmLmxleF9jdXJyX3BvcyAtIGJvbCkgaW5cbiAgICBsZXQgZmlsZV9saW5lID1cbiAgICAgIG1hdGNoIHYuZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gXCJMaW5lXCJcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIHNwcmludGYgXCJGaWxlICVzLCBsaW5lXCIgc1xuICAgIGluXG4gICAgbGV0IGJ5dGVzID1cbiAgICAgIGlmIHBvczEgPSBwb3MyIHRoZW5cbiAgICAgICAgc3ByaW50ZiBcImJ5dGUgJWlcIiAocG9zMSsxKVxuICAgICAgZWxzZVxuICAgICAgICBzcHJpbnRmIFwiYnl0ZXMgJWktJWlcIiAocG9zMSsxKSAocG9zMisxKVxuICAgIGluXG4gICAgbGV0IG1zZyA9IHNwcmludGYgXCIlcyAlaSwgJXM6XFxuJXNcIiBmaWxlX2xpbmUgdi5sbnVtIGJ5dGVzIGRlc2NyIGluXG4gICAganNvbl9lcnJvciBtc2dcblxuXG4gIGxldCBsZXhlcl9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoc3ByaW50ZiBcIiVzICclcydcIiBkZXNjciAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgcmVhZF9qdW5rID0gcmVmIChmdW4gXyAtPiBhc3NlcnQgZmFsc2UpXG5cbiAgbGV0IGxvbmdfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGxldCBqdW5rID0gTGV4aW5nLmxleGVtZSBsZXhidWYgaW5cbiAgICBsZXQgZXh0cmFfanVuayA9ICFyZWFkX2p1bmsgbGV4YnVmIGluXG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoc3ByaW50ZiBcIiVzICclcyVzJ1wiIGRlc2NyIGp1bmsgZXh0cmFfanVuaylcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IG1pbjEwID0gbWluX2ludCAvIDEwIC0gKGlmIG1pbl9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuICBsZXQgbWF4MTAgPSBtYXhfaW50IC8gMTAgKyAoaWYgbWF4X2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG5cbiAgZXhjZXB0aW9uIEludF9vdmVyZmxvd1xuXG4gIGxldCBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWYgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA+PSBtYXgxMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gKyBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgXG4jIDEwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgXG4jIDEwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgIGBJbnRsaXQgKGxleGVtZSBsZXhidWYpXG5cbiAgXG4jIDExMyBcImxpYi9yZWFkLm1sbFwiXG4gIGxldCBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWYgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgMSBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPD0gbWluMTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuIC0gZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPiAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgIFxuIyAxMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgdHJ5IGBJbnQgKGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZilcbiAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgIFxuIyAxMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICBgSW50bGl0IChsZXhlbWUgbGV4YnVmKVxuXG5cbiAgXG4jIDE0MSBcImxpYi9yZWFkLm1sbFwiXG4gIGxldCBzZXRfZmlsZV9uYW1lIHYgZm5hbWUgPVxuICAgIHYuZm5hbWUgPC0gZm5hbWVcblxuICBsZXQgbmV3bGluZSB2IGxleGJ1ZiA9XG4gICAgdi5sbnVtIDwtIHYubG51bSArIDE7XG4gICAgdi5ib2wgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgbGV4YnVmLmxleF9jdXJyX3Bvc1xuXG4gIGxldCBhZGRfbGV4ZW1lIGJ1ZiBsZXhidWYgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBCdWZmZXIuYWRkX3N1YmJ5dGVzIGJ1ZiBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxuICBsZXQgbWFwX2xleGVtZSBmIGxleGJ1ZiA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGYgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuKSAwIGxlblxuXG4gIHR5cGUgdmFyaWFudF9raW5kID0gWyBgRWRneV9icmFja2V0IHwgYFNxdWFyZV9icmFja2V0IHwgYERvdWJsZV9xdW90ZSBdXG4gIHR5cGUgdHVwbGVfa2luZCA9IFsgYFBhcmVudGhlc2lzIHwgYFNxdWFyZV9icmFja2V0IF1cblxuXG4jIDE2MSBcImxpYi9yZWFkLm1sXCJcbiMgMTYxIFwibGliL3JlYWQubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjM2XFwyNTVcXDIzN1xcMjU1XFwwMDNcXDAwMFxcMjM5XFwyNTVcXDAxNlxcMDAwXFwyNDJcXDI1NVxcMjQzXFwyNTVcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMDBcXDAwMFxcMDMxXFwwMDBcXDI0OVxcMjU1XFwwODVcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU0XFwyNTVcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMjUzXFwyNTVcXDAxMVxcMDAwXFwyNTJcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwyNTFcXDI1NVxcMDIxXFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMjJcXDAwMFxcMDIwXFwwMDBcXDAxNlxcMDAwXFwwMjJcXDAwMFxcMDEyXFwwMDBcXDAwOFxcMDAwXFwyNTBcXDI1NVxcXG4gICAgXFwxMTlcXDAwMFxcMTI5XFwwMDBcXDEzOVxcMDAwXFwxNjFcXDAwMFxcMTcxXFwwMDBcXDE4MVxcMDAwXFwxOTNcXDAwMFxcMjA5XFwwMDBcXFxuICAgIFxcMjQwXFwyNTVcXDAxMVxcMDAwXFwwMzhcXDAwMFxcMjUyXFwyNTVcXDA2NVxcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDExMFxcMDAwXFxcbiAgICBcXDI1MlxcMjU1XFwxNjNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzRcXDAwMFxcMjQ3XFwyNTVcXDI0OFxcMjU1XFwwNDhcXDAwMVxcXG4gICAgXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMTI2XFwwMDFcXFxuICAgIFxcMTQ5XFwwMDFcXDI0OVxcMjU1XFwwMzlcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzhcXDAwMFxcMTg3XFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI0OFxcMDAxXFwwMTVcXDAwMlxcMjU1XFwyNTVcXDIyMFxcMDAwXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwwMzlcXDAwMlxcXG4gICAgXFwxMDlcXDAwMlxcMDE0XFwwMDFcXDA4OFxcMDAyXFwxNjRcXDAwMlxcMTg3XFwwMDJcXDIyNVxcMDAyXFwwMTNcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMVxcXG4gICAgXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMVxcMDA1XFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDAyM1xcMDAwXFwyNTRcXDI1NVxcMDIwXFwwMDBcXDI1NVxcMjU1XFwwNDZcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwNDJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwNTNcXDAwMFxcMDQ4XFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI3XFwwMDFcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMTM3XFwwMDBcXDEwNFxcMDAwXFwwODlcXDAwMFxcMDg4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMFxcMTM3XFwwMDBcXDE3N1xcMDAwXFwyNTRcXDI1NVxcMTgzXFwwMDBcXDE2OFxcMDAwXFwxNjZcXDAwMFxcXG4gICAgXFwxODNcXDAwMFxcMDAyXFwwMDBcXDI1M1xcMjU1XFwxNzdcXDAwMFxcMTcyXFwwMDBcXDE4N1xcMDAwXFwwMDRcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMDUzXFwwMDJcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDEwM1xcMDAxXFwyNTVcXDI1NVxcMjQ4XFwwMDJcXDI1NFxcMjU1XFxcbiAgICBcXDAwNlxcMDAzXFwwMzBcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAzXFwwNTBcXDAwM1xcXG4gICAgXFwwNzRcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA2MVxcMDAzXFwwODRcXDAwM1xcMTA4XFwwMDNcXFxuICAgIFxcMjQ5XFwyNTVcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjQ0XFwwMDBcXDEyMFxcMDAzXFwxNDJcXDAwM1xcMTc5XFwwMDBcXDE5NFxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMTkwXFwwMDBcXDE4OFxcMDAwXFwxODdcXDAwMFxcMTkzXFwwMDBcXDE4M1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwyNTRcXDI1NVxcMTkxXFwwMDBcXDIwMVxcMDAwXFwyMDBcXDAwMFxcMTk2XFwwMDBcXDIwM1xcMDAwXFwxOTNcXDAwMFxcMTg5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDE1N1xcMDAzXFwwOTVcXDAwM1xcMTc0XFwwMDNcXDE5NlxcMDAzXFwyMDZcXDAwM1xcMjE2XFwwMDNcXDIyOFxcMDAzXFxcbiAgICBcXDIzOVxcMDAzXFwwNjBcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwwODdcXDAwNFxcMjU1XFwyNTVcXDE0NVxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyMVxcMDA0XFwyNTVcXDI1NVxcMjI5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMxXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMThcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM4XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMFxcMDAxXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjA4XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIxMVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4OVxcMDAwXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwOTVcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzM1xcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMjJcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwNVxcMjM3XFwyNTVcXDIzOFxcMjU1XFwwMTBcXDAwMFxcMjQwXFwyNTVcXDA0NFxcMDAxXFxcbiAgICBcXDI0M1xcMjU1XFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDI0NlxcMjU1XFwwNjFcXDAwMVxcMDAyXFwwMDRcXDI0OVxcMjU1XFwwNDVcXDAwNVxcXG4gICAgXFwyMDlcXDAwMFxcMjI4XFwwMDBcXDIxMVxcMDAwXFwyMzJcXDAwMFxcMjI1XFwwMDBcXDIyM1xcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjM1XFwwMDBcXDIzNFxcMDAwXFwwMDhcXDAwMVxcMjU0XFwyNTVcXDAwNFxcMDAxXFwwMjNcXDAwMVxcMjUzXFwyNTVcXDA1NFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwwMzFcXDAwMVxcMDI5XFwwMDFcXDAzMlxcMDAxXFwwMzlcXDAwMVxcMDQ5XFwwMDFcXDA0NVxcMDAxXFwyNTFcXDI1NVxcXG4gICAgXFwwNTdcXDAwMVxcMDgyXFwwMDFcXDA4MFxcMDAxXFwwNzhcXDAwMVxcMDg0XFwwMDFcXDA3NFxcMDAxXFwwODZcXDAwMVxcMjUwXFwyNTVcXFxuICAgIFxcMTEwXFwwMDVcXDAxMlxcMDA0XFwxMjNcXDAwNVxcMTU1XFwwMDVcXDE2NVxcMDA1XFwxNzdcXDAwNVxcMTg3XFwwMDVcXDE5N1xcMDA1XFxcbiAgICBcXDI0MVxcMjU1XFwxOTlcXDAwMVxcMDc3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMTU0XFwwMDJcXDIyMlxcMDA1XFwyMDlcXDAwNVxcXG4gICAgXFwxNTVcXDAwMlxcMjM5XFwwMDVcXDA1M1xcMDA2XFwwNzZcXDAwNlxcMTE0XFwwMDZcXDAxNlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTJcXDAwNlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjdcXDAwNlxcMjU1XFwyNTVcXDA4NVxcMDA3XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDExXFwwMDBcXDI0N1xcMjU1XFwwNzZcXDAwMlxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzMVxcMDAyXFwyNDNcXDAwNVxcMDUxXFwwMDdcXDEwMFxcMDAxXFwxMTVcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDExOFxcMDAxXFwxNTRcXDAwMVxcMTcxXFwwMDFcXDI1NVxcMjU1XFwxNzNcXDAwMVxcMTc2XFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODdcXDAwMVxcMjUzXFwwMDFcXDIzMFxcMDAxXFwyMzBcXDAwMVxcMjM0XFwwMDFcXDI0N1xcMDAxXFwyMzdcXDAwMVxcXG4gICAgXFwyMzRcXDAwMVxcMDA5XFwwMDJcXDAxOVxcMDAyXFwwMTlcXDAwMlxcMDE1XFwwMDJcXDAyMVxcMDAyXFwwMTFcXDAwMlxcMDA3XFwwMDJcXFxuICAgIFxcMTQyXFwwMDZcXDE1MlxcMDA2XFwxMTZcXDAwN1xcMTcwXFwwMDdcXDE4MFxcMDA3XFwxOTBcXDAwN1xcMjAwXFwwMDdcXDIxMFxcMDA3XFxcbiAgICBcXDI0OFxcMjU1XFwxMjBcXDAwMlxcMTY3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjE2XFwwMDJcXDA4MlxcMDA3XFwyMjBcXDAwN1xcXG4gICAgXFwyMzZcXDAwMlxcMjQ0XFwwMDdcXDA1OFxcMDA4XFwwODFcXDAwOFxcMTE5XFwwMDhcXDA3NlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTdcXDAwOFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMzJcXDAwOFxcMjU1XFwyNTVcXDEzNVxcMDAyXFxcbiAgICBcXDEyMFxcMDAyXFwyNTNcXDI1NVxcMTAwXFwwMDJcXDI1NFxcMjU1XFwxODJcXDAwMlxcMjU1XFwyNTVcXDAxMVxcMDAyXFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0NlxcMDAyXFwyNTVcXDI1NVxcMTc4XFwwMDJcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyM1xcMDAwXFwyNTVcXDI1NVxcMTgzXFwwMDJcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAyXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjFcXDAwMlxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE0MFxcMDAxXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDE1MFxcMDAxXFwxNTFcXDAwMVxcMTU0XFwwMDFcXDE2OFxcMDAxXFxcbiAgICBcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTcyXFwwMDFcXDE3M1xcMDAxXFwxODFcXDAwMVxcMTg0XFwwMDFcXDE4NVxcMDAxXFwxODdcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkzXFwwMDFcXDE5NVxcMDAxXFwxOTZcXDAwMVxcMTk3XFwwMDFcXDIwMFxcMDAxXFwyMDNcXDAwMVxcMjIzXFwwMDFcXFxuICAgIFxcMjI1XFwwMDFcXDIyOFxcMDAxXFwyNDlcXDAwMVxcMjUxXFwwMDFcXDAwMlxcMDAyXFwwMDRcXDAwMlxcMDExXFwwMDJcXDAxMlxcMDAyXFxcbiAgICBcXDAxM1xcMDAyXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA5N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTIxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDEzOFxcMDAwXFwwMDBcXDAwMFxcMTQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTg3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjM1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0OVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxN1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTIxXFwwMDFcXDEyNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxNDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTkzXFwwMDFcXDE5N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjIwXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIzM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0MFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDJcXDAwMlxcMDA0XFwwMDJcXDAwMFxcMDAwXFwwMDVcXDAwMlxcMDA2XFwwMDJcXDAwN1xcMDAyXFwwMDhcXDAwMlxcXG4gICAgXFwwMDlcXDAwMlxcMDEwXFwwMDJcXDAxMVxcMDAyXFwwMTJcXDAwMlxcMDEzXFwwMDJcXDAxNFxcMDAyXFwwMTVcXDAwMlxcMDE2XFwwMDJcXFxuICAgIFxcMDE3XFwwMDJcXDAxOFxcMDAyXFwwMTlcXDAwMlxcMDIwXFwwMDJcXDAyMVxcMDAyXFwwMjJcXDAwMlxcMDIzXFwwMDJcXDAyNFxcMDAyXFxcbiAgICBcXDAyNVxcMDAyXFwwMjZcXDAwMlxcMDI3XFwwMDJcXDAyOFxcMDAyXFwwMjlcXDAwMlxcMDMwXFwwMDJcXDAzMVxcMDAyXFwwMzJcXDAwMlxcXG4gICAgXFwwMzNcXDAwMlxcMDAzXFwwMDJcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjdcXDAwMFxcMTM5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXDAwM1xcMDAwXFwxNzBcXDAwMFxcMTM0XFwwMDBcXDE3NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDExXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDE0XFwwMDFcXDAxM1xcMDAwXFwwNDlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDU2XFwwMDBcXDExOFxcMDAwXFwwMDZcXDAwMFxcMTI5XFwwMDBcXDEzMFxcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMVxcMTM3XFwwMDBcXDAwMFxcMDAyXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFwxMzhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDAxNFxcMDAwXFwxMTBcXDAwMFxcMTA1XFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDE1XFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDMwXFwwMDBcXDA0OFxcMDAwXFwwMDhcXDAwMFxcMTE0XFwwMDBcXDIwOVxcMDAwXFwyMzZcXDAwMFxcMDAwXFwwMDFcXFxuICAgIFxcMDEzXFwwMDFcXDAyOVxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDE3XFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDAyNVxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzNVxcMDAwXFwwMjNcXDAwMFxcMDI3XFwwMDBcXDAxNlxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDM0XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMjBcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDQxXFwwMDBcXDAzN1xcMDAwXFwwNDhcXDAwMFxcMDA5XFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDdcXDAwMFxcMDYxXFwwMDBcXDA4NVxcMDAwXFwwNDhcXDAwMFxcMDM4XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDY3XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NlxcMDAwXFwxNDNcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwxNDRcXDAwMFxcXG4gICAgXFwxNDVcXDAwMFxcMTQ2XFwwMDBcXDA1NVxcMDAwXFwxNDhcXDAwMFxcMDU1XFwwMDBcXDE0OVxcMDAwXFwwNDhcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDE1MFxcMDAwXFxcbiAgICBcXDE1MVxcMDAwXFwxNjFcXDAwMFxcMDY2XFwwMDBcXDE1OFxcMDAwXFwwNTNcXDAwMFxcMTU5XFwwMDBcXDA1M1xcMDAwXFwxNjBcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMTY1XFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MlxcMDAwXFwxNjNcXDAwMFxcMTY2XFwwMDBcXDA5M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwxMDNcXDAwMFxcMTA4XFwwMDBcXDExNlxcMDAwXFxcbiAgICBcXDEzMlxcMDAwXFwxMzRcXDAwMFxcMTM1XFwwMDBcXDEyOFxcMDAwXFwxMzlcXDAwMFxcMTM0XFwwMDBcXDE2NFxcMDAwXFwwOTNcXDAwMFxcXG4gICAgXFwxNzFcXDAwMFxcMDc3XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDE3MlxcMDAwXFwxMTJcXDAwMFxcMTczXFwwMDBcXFxuICAgIFxcMTc0XFwwMDBcXDIxMFxcMDAwXFwyMjZcXDAwMFxcMjA4XFwwMDBcXDIxMVxcMDAwXFwyMTJcXDAwMFxcMDU5XFwwMDBcXDA4M1xcMDAwXFxcbiAgICBcXDEzNFxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTZcXDAwMFxcMjE4XFwwMDBcXDE0MVxcMDAwXFwyMTlcXDAwMFxcXG4gICAgXFwwOTNcXDAwMFxcMjIwXFwwMDBcXDIyMVxcMDAwXFwxMjNcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwyMjRcXDAwMFxcMTM2XFwwMDBcXFxuICAgIFxcMDk1XFwwMDBcXDIyNVxcMDAwXFwwMzVcXDAwMVxcMDY1XFwwMDFcXDIzNFxcMDAwXFwxNTVcXDAwMFxcMDA1XFwwMDFcXDA5N1xcMDAxXFxcbiAgICBcXDI1MFxcMDAwXFwyNTVcXDI1NVxcMjU0XFwwMDBcXDA1N1xcMDAxXFwwNjFcXDAwMVxcMDk1XFwwMDFcXDA3N1xcMDAwXFwwNDRcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDg4XFwwMDFcXDAwOVxcMDAxXFwwMjlcXDAwMVxcMDc2XFwwMDBcXDEyNFxcMDAwXFwwMzNcXDAwMVxcMDE4XFwwMDFcXFxuICAgIFxcMDc1XFwwMDBcXDA5OFxcMDAwXFwwMTlcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwODdcXDAwMVxcMTIwXFwwMDFcXDA4OVxcMDAxXFxcbiAgICBcXDA3NFxcMDAwXFwyMjVcXDAwMFxcMDUzXFwwMDFcXDEyMVxcMDAxXFwwNzNcXDAwMFxcMDkwXFwwMDFcXDA3MlxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOThcXDAwMFxcMTEzXFwwMDFcXDEyMlxcMDAwXFwwOTFcXDAwMVxcMDY0XFwwMDBcXDAwNFxcMDAxXFxcbiAgICBcXDA5M1xcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDE1NlxcMDAwXFwxMTJcXDAwMVxcMDk0XFwwMDFcXDA5NlxcMDAxXFwwOThcXDAwMVxcMDk5XFwwMDFcXDA0OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDEwMFxcMDAxXFwxNTdcXDAwMFxcXG4gICAgXFwxMDFcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMTgzXFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwwMjRcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMTAyXFwwMDFcXDEwM1xcMDAxXFwxMDVcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDEwNlxcMDAxXFwxMDdcXDAwMVxcMDQ4XFwwMDFcXDA0MFxcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDExMFxcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDExMVxcMDAxXFxcbiAgICBcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMTcxXFwwMDFcXDAzMVxcMDAxXFwxNzBcXDAwMVxcMDIzXFwwMDFcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDkyXFwwMDBcXDE2OFxcMDAxXFwwNjNcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwyNDhcXDAwMFxcMTY1XFwwMDFcXDI1MlxcMDAwXFxcbiAgICBcXDE2MlxcMDAxXFwwNTlcXDAwMVxcMDY5XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDI1NVxcMjU1XFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDM5XFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMTYzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDEyMFxcMDAwXFwwMDJcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwxNjZcXDAwMVxcMDU1XFwwMDFcXDE1M1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAwN1xcMDAxXFwxNjdcXDAwMVxcMTY0XFwwMDFcXDE2OVxcMDAxXFwwMTZcXDAwMVxcMTY0XFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDUxXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTM3XFwwMDFcXDE2NFxcMDAxXFwxNzJcXDAwMVxcMTg1XFwwMDFcXDEzNlxcMDAxXFwxNzNcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMTc0XFwwMDFcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA0NlxcMDAxXFxcbiAgICBcXDE3NVxcMDAxXFwxNzZcXDAwMVxcMTgwXFwwMDBcXDE2NFxcMDAxXFwxODRcXDAwMVxcMTgxXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTI0XFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMTkyXFwwMDFcXDE3OFxcMDAxXFxcbiAgICBcXDAyMVxcMDAxXFwxNzlcXDAwMVxcMDk3XFwwMDBcXDE5M1xcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFwxODNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMjE2XFwwMDFcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMTg0XFwwMDFcXDIxNlxcMDAxXFwyMDlcXDAwMVxcMDk3XFwwMDBcXFxuICAgIFxcMjIzXFwwMDFcXDA5N1xcMDAwXFwyMDhcXDAwMVxcMjMwXFwwMDFcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMjE5XFwwMDFcXDAzN1xcMDAxXFxcbiAgICBcXDIxNlxcMDAxXFwyMTdcXDAwMVxcMDAzXFwwMDJcXDIyMFxcMDAxXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwM1xcMDAyXFwwMDNcXDAwMlxcXG4gICAgXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIxNlxcMDAxXFxcbiAgICBcXDAwM1xcMDAyXFwxMjZcXDAwMVxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk3XFwwMDBcXDAwM1xcMDAyXFwyMThcXDAwMVxcMjUwXFwwMDFcXFxuICAgIFxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDEyNFxcMDAxXFwxMjRcXDAwMVxcMDk3XFwwMDBcXDAwM1xcMDAyXFxcbiAgICBcXDIyMVxcMDAxXFwwMDNcXDAwMlxcMjUzXFwwMDFcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMlxcMTk2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDIzNVxcMDAxXFwwMDNcXDAwMlxcXG4gICAgXFwyNDFcXDAwMVxcMDAzXFwwMDJcXDI1NVxcMDAxXFwyNDJcXDAwMVxcMDAzXFwwMDJcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjQ2XFwwMDFcXDEyOVxcMDAxXFwxMjlcXDAwMVxcXG4gICAgXFwyMjhcXDAwMVxcMDAzXFwwMDJcXDE5NlxcMDAxXFwwMDNcXDAwMlxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwMDNcXDAwMlxcMTk4XFwwMDFcXDAwM1xcMDAyXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDE5NlxcMDAxXFwyMzRcXDAwMVxcXG4gICAgXFwxMzRcXDAwMVxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMVxcMDAxXFwxNzdcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODhcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMjAxXFwwMDFcXDIyN1xcMDAxXFwwMDBcXDAwMFxcMTkxXFwwMDBcXDIwNlxcMDAxXFwxMjNcXDAwMVxcMTg5XFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxODlcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTVcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI0OFxcMDAxXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwyMDJcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMjZcXDAwMFxcMTk1XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA2XFwwMDBcXDIyMVxcMDAxXFwyMzlcXDAwMVxcXG4gICAgXFwyNTRcXDAwMVxcMDAwXFwwMDBcXDIwN1xcMDAwXFwyNDRcXDAwMVxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMDNcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMVxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjE3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIzMFxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODZcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTNcXDAwMVxcMDAwXFwwMDBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDAwMFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDIwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMjQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjM4XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDA3OFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA0XFwwMDFcXDA3M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMVxcMDAwXFwwMDBcXDA3MVxcMDAxXFwwNzZcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwODBcXDAwMVxcMTE5XFwwMDFcXDAwMFxcMDAwXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDA4MVxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA4M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTdcXDAwMVxcMDAwXFwwMDBcXDA3NVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxODVcXDAwMVxcMDAwXFwwMDBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyN1xcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyN1xcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTkxXFwwMDFcXDE0MlxcMDAxXFwxOTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0NlxcMDAxXFwxNDdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NlxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwxNTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc3XFwwMDFcXDE1MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNTZcXDAwMVxcMDAwXFwwMDBcXDE0OFxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTQ5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTM5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OFxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxODdcXDAwMVxcMDAwXFwwMDBcXDE2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTlcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE2MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg5XFwwMDFcXDAwMFxcMDAwXFwxODlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTk5XFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIxNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjExXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDU3XFwwMDBcXDI1NVxcMjU1XFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAzXFwwMDBcXDE2OVxcMDAwXFwxMzRcXDAwMFxcMTc0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTJcXDAwMVxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMTE1XFwwMDBcXDAwMFxcMDAwXFwxMjVcXDAwMFxcMTI5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDIzNlxcMDAxXFwxMzZcXDAwMFxcMjU1XFwwMDFcXDAzOFxcMDAwXFwyNTVcXDI1NVxcMDEwXFwwMDBcXDEzNlxcMDAwXFwxMDJcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDAwXFwwMDBcXDEwN1xcMDAwXFwxMDJcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMjlcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMjA4XFwwMDBcXDIzM1xcMDAwXFwyNTVcXDAwMFxcXG4gICAgXFwwMTJcXDAwMVxcMDE1XFwwMDBcXDAxN1xcMDAwXFwwNjBcXDAwMFxcMDExXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDI0XFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDM0XFwwMDBcXDAyMlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAxNFxcMDAwXFxcbiAgICBcXDAyN1xcMDAwXFwwMzNcXDAwMFxcMDE4XFwwMDBcXDAyM1xcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXDAxOVxcMDAwXFwwMzVcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDM2XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ1XFwwMDBcXDA0NlxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXDAxMVxcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFxcbiAgICBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg1XFwwMDBcXDE0MFxcMDAwXFwwNjBcXDAwMFxcMDEzXFwwMDBcXDE0M1xcMDAwXFxcbiAgICBcXDE0NFxcMDAwXFwxNDVcXDAwMFxcMDQ4XFwwMDBcXDE0N1xcMDAwXFwwNDhcXDAwMFxcMTQ4XFwwMDBcXDAzOVxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA2NVxcMDAwXFwwMzlcXDAwMFxcMTQ5XFwwMDBcXFxuICAgIFxcMTUwXFwwMDBcXDE1NlxcMDAwXFwwNjNcXDAwMFxcMTU3XFwwMDBcXDA1MVxcMDAwXFwxNThcXDAwMFxcMDUxXFwwMDBcXDE1OVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFxcbiAgICBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwxNTVcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYxXFwwMDBcXDE2MlxcMDAwXFwxNTVcXDAwMFxcMDkxXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTdcXDAwMFxcMDY4XFwwMDBcXDEwMlxcMDAwXFwxMDdcXDAwMFxcMTE1XFwwMDBcXFxuICAgIFxcMTMxXFwwMDBcXDEzM1xcMDAwXFwxMzNcXDAwMFxcMTI1XFwwMDBcXDEzOFxcMDAwXFwxMzNcXDAwMFxcMTYzXFwwMDBcXDA5NFxcMDAwXFxcbiAgICBcXDE2NVxcMDAwXFwwNjhcXDAwMFxcMTY2XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTcxXFwwMDBcXDExMVxcMDAwXFwxNzJcXDAwMFxcXG4gICAgXFwxNzNcXDAwMFxcMjA2XFwwMDBcXDIwM1xcMDAwXFwyMDdcXDAwMFxcMjEwXFwwMDBcXDIxMVxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMTMzXFwwMDBcXDIxMlxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTdcXDAwMFxcMTQwXFwwMDBcXDIxOFxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwyMTlcXDAwMFxcMjIwXFwwMDBcXDExOVxcMDAwXFwyMjFcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwxMzNcXDAwMFxcXG4gICAgXFwwOTFcXDAwMFxcMjAzXFwwMDBcXDAzNFxcMDAxXFwwNjJcXDAwMVxcMjMzXFwwMDBcXDE1MlxcMDAwXFwwMDFcXDAwMVxcMDgwXFwwMDFcXFxuICAgIFxcMjQ3XFwwMDBcXDA2MFxcMDAwXFwyNTFcXDAwMFxcMDU0XFwwMDFcXDA1OFxcMDAxXFwwODFcXDAwMVxcMDY4XFwwMDBcXDA0MVxcMDAxXFxcbiAgICBcXDA4MlxcMDAxXFwwODNcXDAwMVxcMDA2XFwwMDFcXDAyNlxcMDAxXFwwNjhcXDAwMFxcMTE5XFwwMDBcXDAzMFxcMDAxXFwwMTVcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMDk0XFwwMDBcXDAxNVxcMDAxXFwwODRcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwNzFcXDAwMVxcMDg4XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDIwM1xcMDAwXFwwNTBcXDAwMVxcMDcxXFwwMDFcXDA2OFxcMDAwXFwwODlcXDAwMVxcMDY4XFwwMDBcXDA2OFxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA5N1xcMDAwXFwwNzZcXDAwMVxcMTE5XFwwMDBcXDA5MFxcMDAxXFwwNjNcXDAwMFxcMDAxXFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMTUyXFwwMDBcXDA3NlxcMDAxXFwwOTNcXDAwMVxcMDk1XFwwMDFcXDA5N1xcMDAxXFwwOThcXDAwMVxcMDQ1XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk5XFwwMDFcXDE1MlxcMDAwXFxcbiAgICBcXDEwMFxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDAyMFxcMDAxXFwwNzZcXDAwMVxcMDY1XFwwMDBcXDAyMFxcMDAxXFwxMDFcXDAwMVxcMTAyXFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMTA1XFwwMDFcXDEwNlxcMDAxXFwwNDVcXDAwMVxcMDM2XFwwMDFcXDEwN1xcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMTEwXFwwMDFcXFxuICAgIFxcMDI2XFwwMDFcXDEyMVxcMDAxXFwxNTdcXDAwMVxcMDMwXFwwMDFcXDE1OFxcMDAxXFwwMjBcXDAwMVxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwOTFcXDAwMFxcMTU5XFwwMDFcXDA2MlxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDI0N1xcMDAwXFwxNjBcXDAwMVxcMjUxXFwwMDBcXFxuICAgIFxcMTYxXFwwMDFcXDA1OFxcMDAxXFwwNjhcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDk0XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMzZcXDAwMVxcMDQxXFwwMDFcXDA5N1xcMDAwXFwxNjJcXDAwMVxcXG4gICAgXFwxNjNcXDAwMVxcMTE5XFwwMDBcXDAwMVxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDE2NVxcMDAxXFwwNTRcXDAwMVxcMTUyXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDA2XFwwMDFcXDE2NlxcMDAxXFwxNjdcXDAwMVxcMTY4XFwwMDFcXDAxNVxcMDAxXFwxNjlcXDAwMVxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNTBcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxMzNcXDAwMVxcMTcwXFwwMDFcXDE3MVxcMDAxXFwxNTRcXDAwMVxcMTMzXFwwMDFcXDE3MlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzNcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDQ1XFwwMDFcXFxuICAgIFxcMTc0XFwwMDFcXDE3NVxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDFcXDE1NFxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxMjJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwxNDhcXDAwMVxcMTc3XFwwMDFcXFxuICAgIFxcMDIwXFwwMDFcXDE3OFxcMDAxXFwwOThcXDAwMFxcMTQ4XFwwMDFcXDE3OVxcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFxcbiAgICBcXDE4M1xcMDAxXFwyMTZcXDAwMVxcMTkzXFwwMDFcXDA5NVxcMDAwXFwxNTRcXDAwMVxcMjE2XFwwMDFcXDIwNVxcMDAxXFwwOThcXDAwMFxcXG4gICAgXFwyMjJcXDAwMVxcMDk1XFwwMDBcXDIwNVxcMDAxXFwyMjlcXDAwMVxcMDAxXFwwMDJcXDA5NVxcMDAwXFwyMThcXDAwMVxcMDM2XFwwMDFcXFxuICAgIFxcMjE1XFwwMDFcXDIxNVxcMDAxXFwwMDJcXDAwMlxcMjE4XFwwMDFcXDIxNVxcMDAxXFwwOTVcXDAwMFxcMDA0XFwwMDJcXDAwNVxcMDAyXFxcbiAgICBcXDIxNlxcMDAxXFwwOTVcXDAwMFxcMDA2XFwwMDJcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMjE1XFwwMDFcXFxuICAgIFxcMDA3XFwwMDJcXDEyMlxcMDAxXFwwMDhcXDAwMlxcMDA5XFwwMDJcXDAxMFxcMDAyXFwwMTFcXDAwMlxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOThcXDAwMFxcMDEyXFwwMDJcXDIxNVxcMDAxXFwyNDdcXDAwMVxcXG4gICAgXFwwMTNcXDAwMlxcMDE0XFwwMDJcXDA5OFxcMDAwXFwwMTVcXDAwMlxcMTI1XFwwMDFcXDEyOFxcMDAxXFwwOThcXDAwMFxcMDE2XFwwMDJcXFxuICAgIFxcMjIwXFwwMDFcXDAxN1xcMDAyXFwyNTFcXDAwMVxcMDE4XFwwMDJcXDAxOVxcMDAyXFwwMjBcXDAwMlxcMDk4XFwwMDBcXDEyMVxcMDAxXFxcbiAgICBcXDAyMVxcMDAyXFwxOTRcXDAwMVxcMDk4XFwwMDBcXDAyMlxcMDAyXFwwOThcXDAwMFxcMDk4XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjMxXFwwMDFcXDAyM1xcMDAyXFxcbiAgICBcXDIzOFxcMDAxXFwwMjRcXDAwMlxcMjUxXFwwMDFcXDIzOFxcMDAxXFwwMjVcXDAwMlxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNDNcXDAwMVxcMTI1XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDIyNFxcMDAxXFwwMjZcXDAwMlxcMTk3XFwwMDFcXDAyN1xcMDAyXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDAyOFxcMDAyXFwxOTRcXDAwMVxcMDI5XFwwMDJcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDMwXFwwMDJcXDAzMVxcMDAyXFwwMzJcXDAwMlxcMjAwXFwwMDFcXDIzMVxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk3XFwwMDFcXDE3NlxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwyNTVcXDI1NVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjI0XFwwMDFcXDI1NVxcMjU1XFwxODVcXDAwMFxcMjA1XFwwMDFcXDEyMlxcMDAxXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXFxuICAgIFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTNcXDAwMVxcMjQ3XFwwMDFcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OVxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDE5OVxcMDAwXFwxMjVcXDAwMVxcMTI4XFwwMDFcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFxcbiAgICBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDIwNFxcMDAwXFwxOTRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjIwXFwwMDFcXDIzOFxcMDAxXFxcbiAgICBcXDI1MVxcMDAxXFwyNTVcXDI1NVxcMTk5XFwwMDBcXDI0M1xcMDAxXFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNFxcMDAxXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwxOTdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjI4XFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXFxuICAgIFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NVxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXFxuICAgIFxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTkyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMTk5XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyMzdcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTE1XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNVxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcXG4gICAgXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcXG4gICAgXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFxcbiAgICBcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMTI2XFwwMDFcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI5XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxODRcXDAwMVxcMTM4XFwwMDFcXDE4NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcXG4gICAgXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNTZcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDE4NlxcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxOThcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMVxcMjU1XFwyNTVcXDE4N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxODZcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcXG4gICAgXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyMDFcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcmVhZF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIHRydWUgKVxuXG4jIDEwMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwMzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDE4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCBmYWxzZSApXG5cbiMgMTAzNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTAzOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBOdWxsIClcblxuIyAxMDQyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDQzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDE5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBuYW5cbiAgICAgICAgICAgICAgICBcbiMgMTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA1MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA1NCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgMTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgaW5maW5pdHlcbiAgICAgICAgICAgICAgICBcbiMgMjA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgXG4jIDIxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDIxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDIxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICBgU3RyaW5nIChmaW5pc2hfc3RyaW5nIHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgIFxuIyAyMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDg3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDg4IFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyAyMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAyMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgKVxuXG4jIDEwOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDIyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDIyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiApXG5cbiMgMTA5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCA5IC0+XG5cbiMgMjIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMjIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgKGZsb2F0X29mX3N0cmluZyAobGV4ZW1lIGxleGJ1ZikpXG4gICAgICAgICAgICAgICAgIFxuIyAyMjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMTEwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTEwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMCAtPlxuXG4jIDIzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICBgQXNzb2MgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTM1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTM2IFwibGliL3JlYWQubWxcIlxuICB8IDExIC0+XG5cbiMgMjU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDI1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgYExpc3QgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTU1IFwibGliL3JlYWQubWxcIlxuICB8IDEyIC0+XG5cbiMgMjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDI3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyAyNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBgVHVwbGUgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIFxuIyAyODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMTE3OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE3OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMyAtPlxuXG4jIDI5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgMjkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgY29ucyA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBgVmFyaWFudCAoY29ucywgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgIFxuIyAzMDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMTE5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNCAtPlxuXG4jIDMwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTE5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNSAtPlxuXG4jIDMwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDEyMDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTYgLT5cblxuIyAzMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDEyMDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTcgLT5cblxuIyAzMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDEyMTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTggLT5cblxuIyAzMDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMjE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjE4IFwibGliL3JlYWQubWxcIlxuICB8IDE5IC0+XG5cbiMgMzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG5cbiMgMTIyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgNThcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzMTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jb250ZW50cyB2LmJ1ZiApXG5cbiMgMTIzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxMjQwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjQxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxMjQ2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjQ3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEyNTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX3N0cmluZyB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgNjNcbmFuZCBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggbGV0IGIgPSB2LmJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICBmIChCdWZmZXIuY29udGVudHMgYikgMCAoQnVmZmVyLmxlbmd0aCBiKSApXG5cbiMgMTI2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuXG4jIDEyNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDMyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG5cbiMgMTI3NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI3NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMjgxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjgyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiA2OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIGNcblxuIyAxMjk0IFwibGliL3JlYWQubWxcIlxuIyAxMjk0IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cblxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmIGMgKVxuXG4jIDEyOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDMzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXGInIClcblxuIyAxMzAzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzA0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFwwMTInIClcblxuIyAxMzA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzA5IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJyApXG5cbiMgMTMxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgMzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xccicgKVxuXG4jIDEzMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDMzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHQnIClcblxuIyAxMzIzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzI0IFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cbmxldFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgYVxuXG4jIDEzMjkgXCJsaWIvcmVhZC5tbFwiXG4jIDEzMjkgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKVxuYW5kXG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuXG4jIDEzMzQgXCJsaWIvcmVhZC5tbFwiXG4jIDEzMzQgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcblxuIyAxMzM5IFwibGliL3JlYWQubWxcIlxuIyAxMzM5IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuXG4jIDEzNDQgXCJsaWIvcmVhZC5tbFwiXG4jIDEzNDQgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KSBpblxuXG4jIDMzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB4ID49IDB4RDgwMCAmJiB4IDw9IDB4REJGRiB0aGVuXG4gICAgICAgICAgICAgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWZcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIHV0Zjhfb2ZfY29kZSB2LmJ1ZiB4XG4gICAgICAgICApXG5cbiMgMTM1NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTM1NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgMzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBlc2NhcGUgc2VxdWVuY2VcIiB2IGxleGJ1ZiApXG5cbiMgMTM2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTM2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgMzQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMzY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzY2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiA4MlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIGFcblxuIyAxMzc4IFwibGliL3JlYWQubWxcIlxuIyAxMzc4IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiXG5cbiMgMTM4MyBcImxpYi9yZWFkLm1sXCJcbiMgMTM4MyBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcblxuIyAxMzg4IFwibGliL3JlYWQubWxcIlxuIyAxMzg4IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNClcbmFuZFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcblxuIyAxMzkzIFwibGliL3JlYWQubWxcIlxuIyAxMzkzIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNSkgaW5cblxuIyAzNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB5ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeSA+PSAweERDMDAgJiYgeSA8PSAweERGRkYgdGhlblxuICAgICAgICAgICAgIHV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgdi5idWYgeCB5XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCBsb3cgc3Vycm9nYXRlIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIlxuICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgIClcblxuIyAxNDA1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDA2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzNTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJNaXNzaW5nIGVzY2FwZSBzZXF1ZW5jZSByZXByZXNlbnRpbmcgbG93IHN1cnJvZ2F0ZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCIgdiBsZXhidWYgKVxuXG4jIDE0MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA5MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgICAgICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAobGVuKzEpIGluXG4gICAgICAgICAgIEJ5dGVzLnNldCBzIDAgJ1wiJztcbiAgICAgICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBzIDEgbGVuO1xuICAgICAgICAgICBCeXRlcy50b19zdHJpbmcgc1xuICAgICAgICAgKVxuXG4jIDE0MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG5cbiMgMTQzOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQzOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDQ0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMDJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9IHJlYWRfanNvbiB2IGxleGJ1ZiBpblxuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmO1xuICAgICAgICAgICBTb21lIHggKVxuXG4jIDE0NTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggTm9uZSApXG5cbiMgMTQ2MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ2NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ2OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ2OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDczIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDc0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2x0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIDEwN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMTQ4NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ4NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE0OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDM4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDk2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgMTExXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMTUwNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUwOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNTEyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTEzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzOTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE1MTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb21tYSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiAxMTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAxNTI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzOTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE1MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTUzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgMTE5XG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgRWRneV9icmFja2V0IClcblxuIyAxNTUxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTUyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgYERvdWJsZV9xdW90ZSApXG5cbiMgMTU1NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU1OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBTcXVhcmVfYnJhY2tldCApXG5cbiMgMTU2MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU2MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcsICdcXFwiJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE1NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNTcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTczIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgMTI1XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDE1ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1ODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuXG4jIDE1ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1OTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDE1OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1OTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDE1OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZW9mIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIDEzMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTYxMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYxMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE2MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIDEzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2MjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjMzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjM0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjM5IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjQ0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMTY0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiAxNDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoICgpIClcblxuIyAxNjYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjYxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ251bGwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNjY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjY2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjcxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsX2lmX3Bvc3NpYmxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgMTQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNjgyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjgzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTY4NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY4OCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYm9vbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIDE1MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE2OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTcwNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcwNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE3MDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQ0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTcxNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcxNSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAndHJ1ZScgb3IgJ2ZhbHNlJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTcxOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcyMCBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgNDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE3MjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgMTc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQ1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxNzM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzM5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTc0NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc0NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludGVnZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcblxuIyAxNzYzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzY0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludGVnZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE3NjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQ3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNzczIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzc0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDMyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIDE4NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQ3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50MzIub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE3ODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3ODggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50MzIub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDMyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG5cbiMgMTgwNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgwNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQzMiBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTgxMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgxMSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE4MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQ2NCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiAxOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDY0Lm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxODI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDY0Lm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQ2NCBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuXG4jIDE4NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDUxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDUxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50NjQgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE4NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDUxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDUxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxODU3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODU4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVtYmVyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiAxOTlcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5hbiApXG5cbiMgMTg2OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg3MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGluZmluaXR5IClcblxuIyAxODc0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODc1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmVnX2luZmluaXR5IClcblxuIyAxODc5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODgwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmxvYXRfb2Zfc3RyaW5nIChsZXhlbWUgbGV4YnVmKSApXG5cbiMgMTg4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNTIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgZmxvYXQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzLiAqKVxuICAgICAgICAgICAgICAgICAgICBmbG9hdF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJOYU5cIiAtPiBuYW5cbiAgICAgICAgICAgICAgICAgICAgICB8IFwiSW5maW5pdHlcIiAtPiBpbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXCItSW5maW5pdHlcIiAtPiBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhIG51bWJlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGEgbnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgIClcblxuIyAxOTA2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTA3IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA1MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIG51bWJlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTkxMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkxMiBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgNTM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE5MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiAyMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDE5MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1xcXCInIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTM1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTkzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiAyMzdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTk1MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk1MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5sZXRcblxuIyA1NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIHNcblxuIyAxOTU4IFwibGliL3JlYWQubWxcIlxuIyAxOTU4IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG5cbiMgNTUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHMgKVxuXG4jIDE5NjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDU1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTczIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9pZGVudCB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiAyNDJcbmFuZCBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG5cbiMgMTk4NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk4NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIG1hcF9sZXhlbWUgZiBsZXhidWYgKVxuXG4jIDE5OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU2MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU2MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDU2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMDAwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDAxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NlcXVlbmNlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG5cbiMgMjAyNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAyNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIwMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMDM2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDM3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgMjUxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG5cbiMgMjA2MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA2MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIwNjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwNjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMDcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDczIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiAyNTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDYwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDIwODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDYwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjA4OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA5MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiAyNTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMTAxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTAyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAyMTA2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTA3IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIxMTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDYwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMTE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjYyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDYxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA2MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgNjE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhcG9zICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIXBvcyAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICAgICAgXG4jIDYzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyMTUwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTUxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjE1NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE1NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIxNjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIDI2NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjE3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMTc3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTc4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiAyNjhcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIxOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjIwMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIwMSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMjA1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjA2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiAyNzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMjE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjE4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMjIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjIzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDY1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMjMyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjMzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIDI3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjI0NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI0NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjYyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjYyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjI1MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI1MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjI2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjY2IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA2NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjI3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIDI4MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG5cbiMgMjMwNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMwNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMzE0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzE1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGN1cmwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgMjg2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzI2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzI3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjMzMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMzMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIzMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiAyOTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMjM0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzUzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzU0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDI5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzY2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMjM3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzc2IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjM4MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM4MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgMjk3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzkzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjM5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0MDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3R1cGxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgMzAxXG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDI0MTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCB0cnVlIClcblxuIyAyNDE5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDIwIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0MjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDcyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDMwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9scGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgMzA2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI0NDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NDIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDQ2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDQ3IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ1MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ1MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcnBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIDMxMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNDYzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDY0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ2OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ2OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0NzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgMzE0XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDczOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjQ4NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ4NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDc0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDk2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgMzE4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUwNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUwOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI1MTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNTE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTE4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiAzMjJcbmFuZCBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDc1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTM1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDc1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU0NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU0NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNzU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTUwIFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA3NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDc1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI1NTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDc1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA3NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTY1IFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyA3NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOSAtPlxuXG4jIDc2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA3NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNTk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTk2IFwibGliL3JlYWQubWxcIlxuICB8IDEwIC0+XG5cbiMgNzg0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDc4NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjYxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjYxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMSAtPlxuXG4jIDc5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA3OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgODAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgXG4jIDgxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNjM2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjM3IFwibGliL3JlYWQubWxcIlxuICB8IDEyIC0+XG5cbiMgODE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA4MjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgODI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI2NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTMgLT5cblxuIyA4MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTQgLT5cblxuIyA4MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjYxIFwibGliL3JlYWQubWxcIlxuICB8IDE1IC0+XG5cbiMgODMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjY2IFwibGliL3JlYWQubWxcIlxuICB8IDE2IC0+XG5cbiMgODMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjcxIFwibGliL3JlYWQubWxcIlxuICB8IDE3IC0+XG5cbiMgODM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjY3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxOCAtPlxuXG4jIDgzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuXG4jIDI2ODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2ODEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiAzNzhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDI2OTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2OTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG5cbiMgMjY5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNzAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzAzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiAzODlcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZiApXG5cbiMgMjcxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMjcyMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcyMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjcyNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcyNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgODUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNzMxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzMyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgMzk0XG5hbmQgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjc0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNzQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzQ5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNzUzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzU0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA4NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjc1OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc1OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgMzk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDg3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG5cbiMgMjc3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgODcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyNzc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzc2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAneyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjgwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjgwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgODk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDg5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODIxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODIyIFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA5MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDkxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcoJztcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICBcbiMgOTMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDkzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgOTM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPCc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDk0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODYxIFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyA5NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDk0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDk1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODc5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODgwIFwibGliL3JlYWQubWxcIlxuICB8IDkgLT5cblxuIyA5NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4ODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTAgLT5cblxuIyA5NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyODg5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODkwIFwibGliL3JlYWQubWxcIlxuICB8IDExIC0+XG5cbiMgOTU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG5cbiMgMjg5NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg5NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDQ1MFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXCInO1xuICAgICAgICAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZlxuICAgICAgICAgKVxuXG4jIDI5MDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG5cbiMgMjkxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTE5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiA0NjFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JztcbiAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX2d0IHYgbGV4YnVmIClcblxuIyAyOTMzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTM0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuXG4jIDI5MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI5NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjk0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIDQ2NlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyOTYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTYxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5NzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuXG4jIDI5NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI5NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTc2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgNDcxXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAyOTkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTkxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAyOTk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTk5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMzAwNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAwNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgOTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDMwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcblxuIyAzMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDE5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIDQ3OFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JztcbiAgICAgIHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDMwMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMDM3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDM4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgNDgwXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuXG4jIDMwNDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7IHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDMwNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMDU5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDYwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMDY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDY1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIDQ4NVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMzA3NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA3NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDMwODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwODIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiA0ODdcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcblxuIyAzMDkzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDk0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDMwOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTAzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTA0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTA5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgNDkyXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7XG4gICAgICByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDMxMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMTI3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTI4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgNDk0XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG5cbiMgMzEzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJzsgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAzMTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTQ1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE0OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE1MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTAzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzE1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiA0OTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOicgKVxuXG4jIDMxNjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxNzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxNzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiA1MDNcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcblxuIyAzMTg4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTg5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE5MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE5NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTA0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiA1MDdcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIiovXCIgKVxuXG4jIDMyMTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG5cbiMgMzIxNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIxNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTA0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcblxuIyAzMjIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjIzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMzIyNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIyOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGp1bmsgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2p1bmtfcmVjIGxleGJ1ZiA1MTNcbmFuZCBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTA1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggTGV4aW5nLmxleGVtZSBsZXhidWYgKVxuXG4jIDMyMzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyNDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuXG4jIDEwNTUgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBcbiMgMTA1NiBcImxpYi9yZWFkLm1sbFwiXG4gIGxldCBfID0gKHJlYWRfanNvbiA6IGxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gdClcblxuICBsZXQgcmVhZF90ID0gcmVhZF9qc29uXG5cbiAgbGV0ICgpID1cbiAgICByZWFkX2p1bmsgOj0ganVua1xuXG4gIGxldCByZWFkX2ludDggdiBsZXhidWYgPVxuICAgIGxldCBuID0gcmVhZF9pbnQgdiBsZXhidWYgaW5cbiAgICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW5cbiAgICAgIGxleGVyX2Vycm9yIFwiSW50OCBvdmVyZmxvd1wiIHYgbGV4YnVmXG4gICAgZWxzZVxuICAgICAgY2hhcl9vZl9pbnQgblxuXG4gIGxldCByZWFkX2xpc3QgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBMaXN0LnJldiAocmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYpXG5cbiAgbGV0IGFycmF5X29mX3Jldl9saXN0IGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICBbXSAtPiBbfCB8XVxuICAgICAgfCB4IDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgICBsZXQgciA9IHJlZiB0bCBpblxuICAgICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgICAgYS4oaSkgPC0gTGlzdC5oZCAhcjtcbiAgICAgICAgICAgIHIgOj0gTGlzdC50bCAhclxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgYVxuXG4gIGxldCByZWFkX2FycmF5IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgbGV0IGwgPSByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiBpblxuICAgIGFycmF5X29mX3Jldl9saXN0IGxcblxuICAoKiBSZWFkIGEgSlNPTiBvYmplY3QsIHJlYWRpbmcgdGhlIGtleXMgaW50byBPQ2FtbCBzdHJpbmdzXG4gICAgIChwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgKilcbiAgbGV0IHJlYWRfZmllbGRzIHJlYWRfZmllbGQgaW5pdF9hY2MgdiA9XG4gICAgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9pZGVudCByZWFkX2ZpZWxkIGluaXRfYWNjIHZcblxuICBsZXQgZmluaXNoIHYgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgIGlmIG5vdCAocmVhZF9lb2YgbGV4YnVmKSB0aGVuXG4gICAgICBsb25nX2Vycm9yIFwiSnVuayBhZnRlciBlbmQgb2YgSlNPTiB2YWx1ZTpcIiB2IGxleGJ1ZlxuXG4gIGxldCBpbml0X2xleGVyID0gaW5pdF9sZXhlclxuXG4gIGxldCBmcm9tX2xleGJ1ZiB2ID8oc3RyZWFtID0gZmFsc2UpIGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcblxuICAgIGxldCB4ID1cbiAgICAgIGlmIHJlYWRfZW9mIGxleGJ1ZiB0aGVuXG4gICAgICAgIHJhaXNlIEVuZF9vZl9pbnB1dFxuICAgICAgZWxzZVxuICAgICAgICByZWFkX2pzb24gdiBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggdiBsZXhidWY7XG5cbiAgICB4XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIEVuZF9vZl9pbnB1dCAtPlxuICAgICAganNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIEVuZF9vZl9pbnB1dCAtPlxuICAgICAganNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgdHJ5XG4gICAgICBsZXQgeCA9IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyBpblxuICAgICAgY2xvc2VfaW4gaWM7XG4gICAgICB4XG4gICAgd2l0aCBlIC0+XG4gICAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICAgIHJhaXNlIGVcblxuICBleGNlcHRpb24gRmluYWxseSBvZiBleG4gKiBleG5cblxuICBsZXQgc2VxX2Zyb21fbGV4YnVmIHYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpIGxleGJ1ZiA9XG4gICAgbGV0IHN0cmVhbSA9IFNvbWUgdHJ1ZSBpblxuICAgIGxldCByZWMgZiAoKSA9XG4gICAgICB0cnkgU2VxLkNvbnMgKGZyb21fbGV4YnVmIHYgP3N0cmVhbSBsZXhidWYsIGYpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2lucHV0IC0+XG4gICAgICAgICAgICBmaW4gKCk7XG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgICAgKHRyeSBmaW4gKCkgd2l0aCBmaW5fZSAtPiByYWlzZSAoRmluYWxseSAoZSwgZmluX2UpKSk7XG4gICAgICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICBmXG5cbiAgbGV0IHNlcV9mcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiA/ZmluIGxleGJ1ZlxuXG4gIGxldCBzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgfmZpbiBsZXhidWZcblxuICB0eXBlIGpzb25fbGluZSA9IFsgYEpzb24gb2YgdCB8IGBFeG4gb2YgZXhuIF1cblxuICBsZXQgbGluZXNlcV9mcm9tX2NoYW5uZWxcbiAgICAgID9idWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpID9mbmFtZSA/bG51bToobG51bTAgPSAxKSBpYyA9XG4gICAgbGV0IGJ1ZiA9XG4gICAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSAoQnVmZmVyLmNyZWF0ZSAyNTYpXG4gICAgICAgIHwgU29tZSBfIC0+IGJ1ZlxuICAgIGluXG4gICAgbGV0IHJlYyBmIGxudW0gPSBmdW4gKCkgLT5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgbGluZSA9IGlucHV0X2xpbmUgaWMgaW5cbiAgICAgICAgU2VxLkNvbnMgKGBKc29uIChmcm9tX3N0cmluZyA/YnVmID9mbmFtZSB+bG51bSBsaW5lKSwgZiAobG51bSArIDEpKVxuICAgICAgd2l0aFxuICAgICAgICAgIEVuZF9vZl9maWxlIC0+IGZpbiAoKTsgU2VxLk5pbFxuICAgICAgICB8IGUgLT4gU2VxLkNvbnMgKGBFeG4gZSwgZiAobG51bSArIDEpKVxuICAgIGluXG4gICAgZiBsbnVtMFxuXG4gIGxldCBsaW5lc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsaW5lc2VxX2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gP2ZuYW1lID9sbnVtIGljXG5cbiAgbGV0IHByZXR0aWZ5ID9zdGQgcyA9XG4gICAgcHJldHR5X3RvX3N0cmluZyA/c3RkIChmcm9tX3N0cmluZyBzKVxuXG4gIGxldCBjb21wYWN0ID9zdGQgcyA9XG4gICAgdG9fc3RyaW5nIChmcm9tX3N0cmluZyBzKVxuXG5cbiMgMzQwOCBcImxpYi9yZWFkLm1sXCJcbiMgNjkgXCJ5b2pzb24uY3Bwby5tbFwiXG5tb2R1bGUgVXRpbCA9XG5zdHJ1Y3RcbiMgMSBcInV0aWwubWxcIlxuZXhjZXB0aW9uIFR5cGVfZXJyb3Igb2Ygc3RyaW5nICogdFxuXG5sZXQgdHlwZW9mID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgXyAtPiBcIm9iamVjdFwiXG4gIHwgYEJvb2wgXyAtPiBcImJvb2xcIlxuICB8IGBGbG9hdCBfIC0+IFwiZmxvYXRcIlxuICBcbiMgOCBcInV0aWwubWxcIlxuICB8IGBJbnQgXyAtPiBcImludFwiXG4gIFxuIyAxMCBcInV0aWwubWxcIlxuICB8IGBMaXN0IF8gLT4gXCJhcnJheVwiXG4gIHwgYE51bGwgLT4gXCJudWxsXCJcbiAgfCBgU3RyaW5nIF8gLT4gXCJzdHJpbmdcIlxuICB8IGBJbnRsaXQgXyAtPiBcImludGxpdFwiXG4gIHwgYEZsb2F0bGl0IF8gLT4gXCJmbG9hdGxpdFwiXG4gIFxuIyAxOCBcInV0aWwubWxcIlxuICB8IGBUdXBsZSBfIC0+IFwidHVwbGVcIlxuICB8IGBWYXJpYW50IF8gLT4gXCJ2YXJpYW50XCJcblxubGV0IHR5cGVyciBtc2cganMgPSByYWlzZSAoVHlwZV9lcnJvciAobXNnIF4gdHlwZW9mIGpzLCBqcykpXG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nICogdFxuXG5sZXQgYXNzb2MgbmFtZSBvYmogPSB0cnkgTGlzdC5hc3NvYyBuYW1lIG9iaiB3aXRoIE5vdF9mb3VuZCAtPiBgTnVsbFxuXG5sZXQgbWVtYmVyIG5hbWUgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gYXNzb2MgbmFtZSBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IG1lbWJlciAnXCIgXiBuYW1lIF4gXCInIG9mIG5vbi1vYmplY3QgdHlwZSBcIikganNcblxubGV0IHJlYyBwYXRoIGwgb2JqID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gU29tZSBvYmpcbiAgfCBrZXkgOjogbCAtPiAoXG4gICAgICBtYXRjaCBvYmogd2l0aFxuICAgICAgfCBgQXNzb2MgYXNzb2MgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Mga2V5IGFzc29jIHdpdGhcbiAgICAgICAgICB8IG9iaiAtPiBwYXRoIGwgb2JqXG4gICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IGluZGV4IGkgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMganMgLT5cbiAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICBsZXQgd3JhcHBlZF9pbmRleCA9IGlmIGkgPCAwIHRoZW4gbGVuICsgaSBlbHNlIGkgaW5cbiAgICAgIGlmIHdyYXBwZWRfaW5kZXggPCAwIHx8IHdyYXBwZWRfaW5kZXggPj0gbGVuIHRoZW5cbiAgICAgICAgcmFpc2UgKFVuZGVmaW5lZCAoXCJJbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG91dCBvZiBib3VuZHNcIiwganMpKVxuICAgICAgZWxzZSBMaXN0Lm50aCBsIHdyYXBwZWRfaW5kZXhcbiAgfCBqcyAtPlxuICAgICAgdHlwZXJyIChcIkNhbid0IGdldCBpbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG9mIG5vbi1hcnJheSB0eXBlIFwiKSBqc1xuXG5sZXQgbWFwIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gYExpc3QgKExpc3QubWFwIGYgbClcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBtYXAgZnVuY3Rpb24gb3ZlciBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgdG9fYXNzb2MgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gb2JqXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgb2JqZWN0LCBnb3QgXCIganNcblxubGV0IHRvX29wdGlvbiBmID0gZnVuY3Rpb24gYE51bGwgLT4gTm9uZSB8IHggLT4gU29tZSAoZiB4KVxubGV0IHRvX2Jvb2wgPSBmdW5jdGlvbiBgQm9vbCBiIC0+IGIgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sLCBnb3QgXCIganNcblxubGV0IHRvX2Jvb2xfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgQm9vbCBiIC0+IFNvbWUgYlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyID0gZnVuY3Rpb25cbiAgXG4jIDcwIFwidXRpbC5tbFwiXG4gIHwgYEludCBpIC0+IGZsb2F0IGlcbiAgXG4jIDczIFwidXRpbC5tbFwiXG4gIHwgYEZsb2F0IGYgLT4gZlxuICBcbiMgNzUgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyX29wdGlvbiA9IGZ1bmN0aW9uXG4gIFxuIyA3OSBcInV0aWwubWxcIlxuICB8IGBJbnQgaSAtPiBTb21lIChmbG9hdCBpKVxuICBcbiMgODIgXCJ1dGlsLm1sXCJcbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgXG4jIDg0IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgXG4jIDg5IFwidXRpbC5tbFwiXG4gIHwgYEZsb2F0IGYgLT4gZlxuICBcbiMgOTEgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdF9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgOTUgXCJ1dGlsLm1sXCJcbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgXG4jIDk3IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgXG4jIDEwMiBcInV0aWwubWxcIlxuICB8IGBJbnQgaSAtPiBpXG4gIFxuIyAxMDQgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50X29wdGlvbiA9IGZ1bmN0aW9uXG4gIFxuIyAxMDggXCJ1dGlsLm1sXCJcbiAgfCBgSW50IGkgLT4gU29tZSBpXG4gIFxuIyAxMTAgXCJ1dGlsLm1sXCJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIGBMaXN0IGwgLT4gbCB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGFycmF5LCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIFxuIyAxMTcgXCJ1dGlsLm1sXCJcbiAgfCBgU3RyaW5nIHMgLT4gc1xuICBcbiMgMTE5IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nLCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZ19vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgMTIzIFwidXRpbC5tbFwiXG4gIHwgYFN0cmluZyBzIC0+IFNvbWUgc1xuICBcbiMgMTI1IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZyBvciBudWxsLCBnb3QgXCIganNcblxubGV0IGNvbnZlcnRfZWFjaCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIGYgbFxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IGNvbnZlcnQgZWFjaCBlbGVtZW50IG9mIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCByZWMgcmV2X2ZpbHRlcl9tYXAgZiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZXZfZmlsdGVyX21hcCBmIGFjYyB0bFxuICAgICAgfCBTb21lIHkgLT4gcmV2X2ZpbHRlcl9tYXAgZiAoeSA6OiBhY2MpIHRsKVxuXG5sZXQgZmlsdGVyX21hcCBmIGwgPSBMaXN0LnJldiAocmV2X2ZpbHRlcl9tYXAgZiBbXSBsKVxuXG5sZXQgcmVjIHJldl9mbGF0dGVuIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYExpc3QgbDIgLT4gcmV2X2ZsYXR0ZW4gKExpc3QucmV2X2FwcGVuZCBsMiBhY2MpIHRsXG4gICAgICB8IF8gLT4gcmV2X2ZsYXR0ZW4gYWNjIHRsKVxuXG5sZXQgZmxhdHRlbiBsID0gTGlzdC5yZXYgKHJldl9mbGF0dGVuIFtdIGwpXG5cbmxldCBmaWx0ZXJfaW5kZXggaSBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgTGlzdCBsIC0+ICggdHJ5IFNvbWUgKExpc3QubnRoIGwgaSkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9saXN0IGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgTGlzdCBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxuXG5sZXQgZmlsdGVyX21lbWJlciBrIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBBc3NvYyBsIC0+ICggdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBsKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2Fzc29jIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQXNzb2MgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfYm9vbCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEJvb2wgeCAtPiBTb21lIHggfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfaW50IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICAgIGZ1bmN0aW9uXG4gICAgICBcbiMgMTcyIFwidXRpbC5tbFwiXG4gICAgICB8ICBgSW50IHggLT4gU29tZSB4XG4gICAgICBcbiMgMTc0IFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICAgICkgbFxuXG5sZXQgZmlsdGVyX2Zsb2F0IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgXG4jIDE4MSBcInV0aWwubWxcIlxuICAgICAgYEZsb2F0IHggLT4gU29tZSB4XG4gICAgICBcbiMgMTgzIFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9udW1iZXIgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICAgIFxuIyAxOTAgXCJ1dGlsLm1sXCJcbiAgICAgICAgYEludCB4IC0+IFNvbWUgKGZsb2F0IHgpXG4gICAgICBcbiMgMTkzIFwidXRpbC5tbFwiXG4gICAgICB8IGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgXG4jIDE5NSBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfc3RyaW5nIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBcbiMgMjAyIFwidXRpbC5tbFwiXG4gICAgICAgIGBTdHJpbmcgeCAtPiBTb21lIHhcbiAgICAgIFxuIyAyMDQgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQga2V5cyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChrZXksIF8pIC0+IGtleSlcblxubGV0IHZhbHVlcyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChfLCB2YWx1ZSkgLT4gdmFsdWUpXG5cbmxldCBjb21iaW5lIChmaXJzdCA6IHQpIChzZWNvbmQgOiB0KSA9XG4gIG1hdGNoIChmaXJzdCwgc2Vjb25kKSB3aXRoXG4gIHwgYEFzc29jIGEsIGBBc3NvYyBiIC0+IChgQXNzb2MgKGEgQCBiKSA6IHQpXG4gIHwgYSwgYiAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkV4cGVjdGVkIHR3byBvYmplY3RzLCBjaGVjayBpbnB1dHNcIilcbiMgNzIgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcbiMgNzkgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcblxubW9kdWxlIFJhdyA9XG5zdHJ1Y3RcbiMgMSBcInR5cGUubWxcIlxuKCoqIHszIFR5cGUgb2YgdGhlIEpTT04gdHJlZX0gKilcblxudHlwZSB0ID1cbiAgICBbXG4gICAgfCBgTnVsbFxuICAgIHwgYEJvb2wgb2YgYm9vbFxuICAgIFxuIyAxMSBcInR5cGUubWxcIlxuICAgIHwgYEludGxpdCBvZiBzdHJpbmdcbiAgICBcbiMgMTcgXCJ0eXBlLm1sXCJcbiAgICB8IGBGbG9hdGxpdCBvZiBzdHJpbmdcbiAgICBcbiMgMjMgXCJ0eXBlLm1sXCJcbiAgICB8IGBTdHJpbmdsaXQgb2Ygc3RyaW5nXG4gICAgXG4jIDI1IFwidHlwZS5tbFwiXG4gICAgfCBgQXNzb2Mgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICB8IGBMaXN0IG9mIHQgbGlzdFxuICAgIFxuIyAyOCBcInR5cGUubWxcIlxuICAgIHwgYFR1cGxlIG9mIHQgbGlzdFxuICAgIFxuIyAzMSBcInR5cGUubWxcIlxuICAgIHwgYFZhcmlhbnQgb2YgKHN0cmluZyAqIHQgb3B0aW9uKVxuICAgIFxuIyAzMyBcInR5cGUubWxcIlxuICAgIF1cbigqKlxuQWxsIHBvc3NpYmxlIGNhc2VzIGRlZmluZWQgaW4gWW9qc29uOlxuLSBgTnVsbDogSlNPTiBudWxsXG4tIGBCb29sIG9mIGJvb2w6IEpTT04gYm9vbGVhblxuLSBgSW50IG9mIGludDogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LlxuLSBgSW50bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgRmxvYXQgb2YgZmxvYXQ6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTi5cbi0gYEZsb2F0bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgU3RyaW5nIG9mIHN0cmluZzogSlNPTiBzdHJpbmcuIEJ5dGVzIGluIHRoZSByYW5nZSAxMjgtMjU1IGFyZSBwcmVzZXJ2ZWRcblx0ICAgIGFzLWlzIHdpdGhvdXQgZW5jb2RpbmcgdmFsaWRhdGlvbiBmb3IgYm90aCByZWFkaW5nXG5cdCAgICBhbmQgd3JpdGluZy5cbi0gYFN0cmluZ2xpdCBvZiBzdHJpbmc6IEpTT04gc3RyaW5nIGxpdGVyYWwgaW5jbHVkaW5nIHRoZSBkb3VibGUgcXVvdGVzLlxuLSBgQXNzb2Mgb2YgKHN0cmluZyAqIGpzb24pIGxpc3Q6IEpTT04gb2JqZWN0LlxuLSBgTGlzdCBvZiBqc29uIGxpc3Q6IEpTT04gYXJyYXkuXG4tIGBUdXBsZSBvZiBqc29uIGxpc3Q6IFR1cGxlIChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbKFwiYWJjXCIsIDEyMyldLlxuLSBgVmFyaWFudCBvZiAoc3RyaW5nICoganNvbiBvcHRpb24pOiBWYXJpYW50IChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbPFwiRm9vXCI+XSBvciBbPFwiQmFyXCI6MTIzPl0uXG4qKVxuXG4oKlxuICBOb3RlIHRvIGFkdmVudHVyZXJzOiBvY2FtbGRvYyBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBjb21tZW50c1xuICBvbiBlYWNoIHBvbHltb3JwaGljIHZhcmlhbnQsIGFuZCBjcHBvIGRvZXNuJ3QgYWxsb3cgdG8gY29uY2F0ZW5hdGVcbiAgY29tbWVudHMsIHNvIGl0IHdvdWxkIGJlIGNvbXBsaWNhdGVkIHRvIGRvY3VtZW50IG9ubHkgdGhlXG4gIGNhc2VzIHRoYXQgYXJlIHByZXNlcnZlZCBieSBjcHBvIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4qKVxuIyAxIFwid3JpdGUubWxcIlxuKCogaW5jbHVkZWQ6IHR5cGUubWwgKilcblxubGV0IGhleCBuID1cbiAgQ2hhci5jaHIgKFxuICAgIGlmIG4gPCAxMCB0aGVuIG4gKyA0OFxuICAgIGVsc2UgbiArIDg3XG4gIClcblxubGV0IHdyaXRlX3NwZWNpYWwgc3JjIHN0YXJ0IHN0b3Agb2Igc3RyID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN0cjtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IHdyaXRlX2NvbnRyb2xfY2hhciBzcmMgc3RhcnQgc3RvcCBvYiBjID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcXHUwMFwiO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbHNyIDQpKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxhbmQgMHhmKSk7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCBmaW5pc2hfc3RyaW5nIHNyYyBzdGFydCBvYiA9XG4gIHRyeVxuICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KVxuICB3aXRoIGV4YyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwic3JjPSVTIHN0YXJ0PSVpIGxlbj0laVxcbiUhXCJcbiAgICAgIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KTtcbiAgICByYWlzZSBleGNcblxubGV0IHdyaXRlX3N0cmluZ19ib2R5IG9iIHMgPVxuICBsZXQgc3RhcnQgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgJ1wiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgJ1xcXFwnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXFxcIlxuICAgICAgfCAnXFxiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxiXCJcbiAgICAgIHwgJ1xcMDEyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxmXCJcbiAgICAgIHwgJ1xcbicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcblwiXG4gICAgICB8ICdcXHInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHJcIlxuICAgICAgfCAnXFx0JyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFx0XCJcbiAgICAgIHwgJ1xceDAwJy4uJ1xceDFGJ1xuICAgICAgfCAnXFx4N0YnIGFzIGMgLT4gd3JpdGVfY29udHJvbF9jaGFyIHMgc3RhcnQgaSBvYiBjXG4gICAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgZmluaXNoX3N0cmluZyBzIHN0YXJ0IG9iXG5cbmxldCB3cml0ZV9zdHJpbmcgb2IgcyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9zdHJpbmdfYm9keSBvYiBzO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDEwIGluXG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHRlc3Rfc3RyaW5nICgpID1cbiAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGZvciBpID0gMCB0byAyNTUgZG9cbiAgICBCeXRlcy5zZXQgcyBpIChDaGFyLmNociBpKVxuICBkb25lO1xuICBqc29uX3N0cmluZ19vZl9zdHJpbmcgKEJ5dGVzLnRvX3N0cmluZyBzKVxuXG5cbmxldCB3cml0ZV9udWxsIG9iICgpID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpXG5cblxubGV0IG1heF9kaWdpdHMgPVxuICBtYXhcbiAgICAoU3RyaW5nLmxlbmd0aCAoc3RyaW5nX29mX2ludCBtYXhfaW50KSlcbiAgICAoU3RyaW5nLmxlbmd0aCAoc3RyaW5nX29mX2ludCBtaW5faW50KSlcblxubGV0IGRlYyBuID1cbiAgQ2hhci5jaHIgKG4gKyA0OClcblxubGV0IHJlYyB3cml0ZV9kaWdpdHMgcyB4ID1cbiAgaWYgeCA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IGQgPSB4IG1vZCAxMCBpblxuICAgIHdyaXRlX2RpZ2l0cyBzICh4IC8gMTApO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzIChkZWMgKGFicyBkKSlcblxubGV0IHdyaXRlX2ludCBvYiB4ID1cbiAgaWYgeCA+IDAgdGhlblxuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIGVsc2UgaWYgeCA8IDAgdGhlbiAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICctJztcbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICApXG4gIGVsc2VcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzAnXG5cblxubGV0IGpzb25fc3RyaW5nX29mX2ludCBpID1cbiAgc3RyaW5nX29mX2ludCBpXG5cblxuKCpcbiAgRW5zdXJlIHRoYXQgdGhlIGZsb2F0IGlzIG5vdCBwcmludGVkIGFzIGFuIGludC5cbiAgVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgSlNPTiwgYnV0IHVzZWZ1bCBpbiBvcmRlciB0byBndWFyYW50ZWVcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgZmxvYXRfbmVlZHNfcGVyaW9kIHMgPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICcwJy4uJzknIHwgJy0nIC0+ICgpXG4gICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggRXhpdCAtPlxuICAgIGZhbHNlXG5cbigqXG4gIEd1YXJhbnRlZXMgdGhhdCBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIGRpZ2l0cyBhcmUgcHJpbnRlZCBpbiBvcmRlciB0byBhbGxvd1xuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCB3cml0ZV9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbmxldCB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBsZXQgb3BlbiBQcmludGYgaW5cbiAgbGV0IHMgPVxuICAgIG1hdGNoIHNpZ25pZmljYW50X2ZpZ3VyZXMgd2l0aFxuICAgICAgICAxIC0+IHNwcmludGYgXCIlLjFnXCIgeFxuICAgICAgfCAyIC0+IHNwcmludGYgXCIlLjJnXCIgeFxuICAgICAgfCAzIC0+IHNwcmludGYgXCIlLjNnXCIgeFxuICAgICAgfCA0IC0+IHNwcmludGYgXCIlLjRnXCIgeFxuICAgICAgfCA1IC0+IHNwcmludGYgXCIlLjVnXCIgeFxuICAgICAgfCA2IC0+IHNwcmludGYgXCIlLjZnXCIgeFxuICAgICAgfCA3IC0+IHNwcmludGYgXCIlLjdnXCIgeFxuICAgICAgfCA4IC0+IHNwcmludGYgXCIlLjhnXCIgeFxuICAgICAgfCA5IC0+IHNwcmludGYgXCIlLjlnXCIgeFxuICAgICAgfCAxMCAtPiBzcHJpbnRmIFwiJS4xMGdcIiB4XG4gICAgICB8IDExIC0+IHNwcmludGYgXCIlLjExZ1wiIHhcbiAgICAgIHwgMTIgLT4gc3ByaW50ZiBcIiUuMTJnXCIgeFxuICAgICAgfCAxMyAtPiBzcHJpbnRmIFwiJS4xM2dcIiB4XG4gICAgICB8IDE0IC0+IHNwcmludGYgXCIlLjE0Z1wiIHhcbiAgICAgIHwgMTUgLT4gc3ByaW50ZiBcIiUuMTVnXCIgeFxuICAgICAgfCAxNiAtPiBzcHJpbnRmIFwiJS4xNmdcIiB4XG4gICAgICB8IF8gLT4gc3ByaW50ZiBcIiUuMTdnXCIgeFxuICBpblxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBqc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfc3RkX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIGpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIGpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX3N0ZF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAganNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAganNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgdGVzdF9mbG9hdCAoKSA9XG4gIGxldCBsID0gWyAwLjsgMS47IC0xLiBdIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiAyLiAqLiB4ICsuIDEuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4IC8uIHNxcnQgMi4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggKi4gc3FydCAzLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCBjb3MgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAqLiAxLjIzZTUwKSBsIGluXG4gIGxldCBsID0gbCBAIFsgaW5maW5pdHk7IG5lZ19pbmZpbml0eSBdIGluXG4gIExpc3QuaXRlciAoXG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzID0gUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHggaW5cbiAgICAgIGxldCB5ID0gZmxvYXRfb2Zfc3RyaW5nIHMgaW5cbiAgICAgIFByaW50Zi5wcmludGYgXCIlZyAlZyAlUyAlQlxcblwiIHggeSBzICh4ID0geSlcbiAgKVxuICAgIGxcblxuKCpcbmxldCAoKSA9IHRlc3RfZmxvYXQgKClcbiopXG5cbmxldCB3cml0ZV9pbnRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX2Zsb2F0bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9zdHJpbmdsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xuXG5sZXQgcmVjIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9zZXAgeDtcbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGl0ZXIyIGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBmX3NlcCBvYiA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyB3cml0ZV9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgXG4jIDI2NyBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDI3MyBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMjc5IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMjgxIFwid3JpdGUubWxcIlxuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9saXN0IG9iIGxcbiAgICBcbiMgMjg0IFwid3JpdGUubWxcIlxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfdHVwbGUgb2IgbFxuICAgIFxuIyAyODcgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfdmFyaWFudCBvYiBzIG9cblxuIyAyOTAgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuIyAzMDYgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKCc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcpJ1xuXG4jIDMxMyBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV92YXJpYW50IG9iIHMgbyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPCc7XG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICAobWF0Y2ggbyB3aXRoXG4gICAgICAgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICAgICAgIHdyaXRlX2pzb24gb2IgeFxuICApO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJz4nXG5cbiMgMzI1IFwid3JpdGUubWxcIlxubGV0IHdyaXRlX3QgPSB3cml0ZV9qc29uXG5cbmxldCByZWMgd3JpdGVfc3RkX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICBcbiMgMzM1IFwid3JpdGUubWxcIlxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzQxIFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAzNDcgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAzNDkgXCJ3cml0ZS5tbFwiXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9zdGRfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9zdGRfbGlzdCBvYiBsXG4gICAgXG4jIDM1MiBcIndyaXRlLm1sXCJcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3N0ZF90dXBsZSBvYiBsXG4gICAgXG4jIDM1NSBcIndyaXRlLm1sXCJcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG9cblxuIyAzNTggXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfc3RkX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX3N0ZF9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuIyAzNzkgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvID1cbiAgbWF0Y2ggbyB3aXRoXG4gICAgICBOb25lIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgICAgICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICAgIHdyaXRlX3N0ZF9qc29uIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG4jIDM5MSBcIndyaXRlLm1sXCJcbmxldCB0b19idWZmZXIgPyhzdWYgPSBcIlwiKSA/KHN0ZCA9IGZhbHNlKSBvYiB4ID1cbiAgaWYgc3RkIHRoZW5cbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGVsc2VcbiAgICB3cml0ZV9qc29uIG9iIHg7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN1ZlxuXG5sZXQgdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcIikgP3N0ZCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHRvX2NoYW5uZWwgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb2MgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19vdXRwdXQgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb3V0IHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgb3V0I291dHB1dCAoQnVmZmVyLmNvbnRlbnRzIG9iKSAwIChCdWZmZXIubGVuZ3RoIG9iKTtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19maWxlID9sZW4gP3N0ZCA/KHN1ZiA9IFwiXFxuXCIpIGZpbGUgeCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyB4O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5sZXQgc2VxX3RvX2J1ZmZlciA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Igc3QgPVxuICBTZXEuaXRlciAodG9fYnVmZmVyIH5zdWYgP3N0ZCBvYikgc3RcblxubGV0IHNlcV90b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIHN0ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgc2VxX3RvX2J1ZmZlciB+c3VmID9zdGQgb2Igc3Q7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgc2VxX3RvX2NoYW5uZWwgP2J1ZiA/KGxlbj0yMDk2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Mgc2VxID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICBTZXEuaXRlciAoZnVuIGpzb24gLT5cbiAgICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIGpzb247XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gICAgQnVmZmVyLmNsZWFyIG9iO1xuICApIHNlcVxuXG5sZXQgc2VxX3RvX2ZpbGUgP2xlbiA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgZmlsZSBzdCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2Mgc3Q7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cblxubGV0IHJlYyBzb3J0ID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgbGV0IGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCBzb3J0IHYpKSBsKSBpblxuICAgICAgYEFzc29jIChMaXN0LnN0YWJsZV9zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpIGwpXG4gIHwgYExpc3QgbCAtPlxuICAgICAgYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgXG4jIDQ4NSBcIndyaXRlLm1sXCJcbiAgfCBgVHVwbGUgbCAtPlxuICAgICAgYFR1cGxlIChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIFxuIyA0ODkgXCJ3cml0ZS5tbFwiXG4gIHwgYFZhcmlhbnQgKGssIFNvbWUgdikgYXMgeCAtPlxuICAgICAgbGV0IHYnID0gc29ydCB2IGluXG4gICAgICBpZiB2ID09IHYnIHRoZW4geFxuICAgICAgZWxzZVxuICAgICAgICBgVmFyaWFudCAoaywgU29tZSB2JylcbiAgXG4jIDQ5NSBcIndyaXRlLm1sXCJcbiAgfCB4IC0+IHhcbiMgOTAgXCJ5b2pzb24uY3Bwby5tbFwiXG5tb2R1bGUgUHJldHR5ID1cbnN0cnVjdFxuIyAxIFwicHJldHR5Lm1sXCJcbigqXG4gICBQcmV0dHktcHJpbnQgSlNPTiBkYXRhIGluIGFuIGF0dGVtcHQgdG8gbWF4aW1pemUgcmVhZGFiaWxpdHkuXG5cbiAgIDEuIFdoYXQgZml0cyBvbiBvbmUgbGluZSBzdGF5cyBvbiBvbmUgbGluZS5cbiAgIDIuIFdoYXQgZG9lc24ndCBmaXQgb24gb25lIGxpbmUgZ2V0cyBwcmludGVkIG1vcmUgdmVydGljYWxseSBzbyBhcyB0byBub3RcbiAgICAgIGV4Y2VlZCBhIHJlYXNvbmFibGUgcGFnZSB3aWR0aCwgaWYgcG9zc2libGUuXG5cbiAgIEFycmF5cyBjb250YWluaW5nIG9ubHkgc2ltcGxlIGVsZW1lbnRzIChcImF0b21zXCIpIGFyZSBwcmV0dHktcHJpbnRlZCB3aXRoXG4gICBlbmQtb2YtbGluZSB3cmFwcGluZyBsaWtlIG9yZGluYXJ5IHRleHQ6XG5cbiAgICAgW1xuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIixcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCJcbiAgICAgXVxuXG4gICBPdGhlciBhcnJheXMgYXJlIHByaW50ZWQgZWl0aGVyIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGV5IGZpdCBvbiBhIHNpbmdsZSBsaW5lOlxuXG4gICAgIFsgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSBdXG5cbiAgIG9yXG5cbiAgICAgW1xuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfVxuICAgICBdXG4qKVxuXG5sZXQgcHBfbGlzdCBzZXAgcHB4IG91dCBsID1cbiAgbGV0IHBwX3NlcCBvdXQgKCkgPSBGb3JtYXQuZnByaW50ZiBvdXQgXCIlc0AgXCIgc2VwIGluXG4gIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXAgcHB4IG91dCBsXG5cbmxldCBpc19hdG9tICh4OiBbPiB0XSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTnVsbFxuICB8IGBCb29sIF9cbiAgfCBgSW50IF9cbiAgfCBgRmxvYXQgX1xuICB8IGBTdHJpbmcgX1xuICB8IGBJbnRsaXQgX1xuICB8IGBGbG9hdGxpdCBfXG4gIHwgYFN0cmluZ2xpdCBfXG4gIHwgYExpc3QgW11cbiAgfCBgQXNzb2MgW11cbiAgfCBgVHVwbGUgW11cbiAgfCBgVmFyaWFudCAoXywgTm9uZSkgLT4gdHJ1ZVxuICB8IGBMaXN0IF9cbiAgfCBgQXNzb2MgX1xuICB8IGBUdXBsZSBfXG4gIHwgYFZhcmlhbnQgKF8sIFNvbWUgXykgLT4gZmFsc2VcblxubGV0IGlzX2F0b21fbGlzdCBsID1cbiAgTGlzdC5mb3JfYWxsIGlzX2F0b20gbFxuXG4oKlxuICAgaW5zaWRlX2JveDogaW5kaWNhdGVzIHRoYXQgd2UncmUgYWxyZWFkeSB3aXRoaW4gYSBib3ggdGhhdCBpbXBvc2VzXG4gICBhIGNlcnRhaW4gc3R5bGUgYW5kIHdlIHNob3VsZG4ndCBjcmVhdGUgYSBuZXcgb25lLiBUaGlzIGlzIHVzZWQgZm9yXG4gICBwcmludGluZyBmaWVsZCB2YWx1ZXMgbGlrZSB0aGlzOlxuXG4gICAgIGZvbzogW1xuICAgICAgIGJhclxuICAgICBdXG5cbiAgIHJhdGhlciB0aGFuIHNvbWV0aGluZyBlbHNlIGxpa2VcblxuICAgICBmb286XG4gICAgICAgW1xuICAgICAgICAgYmFyXG4gICAgICAgXVxuKilcbmxldCByZWMgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCAob3V0OkZvcm1hdC5mb3JtYXR0ZXIpICh4OnQpIDogdW5pdCA9XG4gIG1hdGNoIHggd2l0aFxuICAgIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJudWxsXCJcbiAgICB8IGBCb29sIHggLT4gRm9ybWF0LnBwX3ByaW50X2Jvb2wgb3V0IHhcbiAgICBcbiMgOTIgXCJwcmV0dHkubWxcIlxuICAgIHwgYEludGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICBcbiMgOTUgXCJwcmV0dHkubWxcIlxuICAgIHwgYEZsb2F0bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIFxuIyA5OCBcInByZXR0eS5tbFwiXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIFxuIyAxMDAgXCJwcmV0dHkubWxcIlxuICAgIHwgYExpc3QgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJbXVwiXG4gICAgfCBgTGlzdCBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIGlmIGlzX2F0b21fbGlzdCBsIHRoZW5cbiAgICAgICAgKCogdXNlIGxpbmUgd3JhcHBpbmcgbGlrZSB3ZSB3b3VsZCBkbyBmb3IgYSBwYXJhZ3JhcGggb2YgdGV4dCAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGhvdj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGxcbiAgICAgIGVsc2VcbiAgICAgICAgKCogcHJpbnQgdGhlIGVsZW1lbnRzIGhvcml6b250YWxseSBpZiB0aGV5IGZpdCBvbiB0aGUgbGluZSxcbiAgICAgICAgICAgb3RoZXJ3aXNlIHByaW50IHRoZW0gaW4gYSBjb2x1bW4gKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxodj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgQXNzb2MgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJ7fVwiXG4gICAgfCBgQXNzb2MgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJ7QDs8MSAwPiVhQDs8MSAtMj59XCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdF9maWVsZCBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIFxuIyAxMTkgXCJwcmV0dHkubWxcIlxuICAgIHwgYFR1cGxlIGwgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgbClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGlmIGwgPSBbXSB0aGVuXG4gICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIigpXCJcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aG92Mj5cIjtcbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIihALCVhQDs8MCAtMj4pXCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgICAgICAgIClcbiAgICBcbiMgMTMyIFwicHJldHR5Lm1sXCJcbiAgICB8IGBWYXJpYW50IChzLCBOb25lKSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIFxuIyAxMzcgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmdsaXQgcyBpblxuICAgICAgICAgIFxuIyAxMzkgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IHJlcHJlc2VudGF0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8JXM+XCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuXG4gICAgfCBgVmFyaWFudCAocywgU29tZSB4KSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIFxuIyAxNDggXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmdsaXQgcyBpblxuICAgICAgICAgIFxuIyAxNTAgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBbIHJlcHJlc2VudGF0aW9uOyB4IF0pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgb3AgPSBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyBpblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjxAWzxodjI+JXM6ICVhQF0+XCIgb3AgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG4jIDE1NiBcInByZXR0eS5tbFwiXG5hbmQgZm9ybWF0X2ZpZWxkIHN0ZCBvdXQgKG5hbWUsIHgpID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVzOiAlYUBdXCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBuYW1lKSAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmxldCBwcCA/KHN0ZCA9IGZhbHNlKSBvdXQgeCA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lYUBdXCIgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgKHggOj4gdClcblxubGV0IHRvX3N0cmluZyA/c3RkIHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChwcCA/c3RkKSB4XG5cbmxldCB0b19jaGFubmVsID9zdGQgb2MgeCA9XG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVhQD9cIiAocHAgP3N0ZCkgeFxuIyA5MyBcInlvanNvbi5jcHBvLm1sXCJcbmVuZFxuIyAxIFwibW9ub21vcnBoaWMubWxcIlxubGV0IHJlYyBwcCBmbXQgPVxuICBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiYE51bGxcIlxuICB8IGBCb29sIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQm9vbCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVCXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMTUgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEludGxpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMjcgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEZsb2F0bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDM5IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBTdHJpbmdsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmdsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDQ0IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBBc3NvYyB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBBc3NvYyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIChrZXksIHZhbHVlKSAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIga2V5O1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgICAgICAgIHBwIGZtdCB2YWx1ZTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBMaXN0IHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYExpc3QgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCB4IC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgcHAgZm10IHg7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDcxIFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBUdXBsZSB0dXAgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVHVwbGUgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCBlIC0+XG4gICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICAgcHAgZm10IGU7XG4gICAgICAgICAgIHRydWUpIGZhbHNlIHR1cCk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgODQgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBWYXJpYW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBuYW1lO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgIChtYXRjaCB2YWx1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25lXCJcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKFNvbWUgXCI7XG4gICAgICAgIHBwIGZtdCB4O1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIilcIik7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxuIyA5OSBcIm1vbm9tb3JwaGljLm1sXCJcbmxldCBzaG93IHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwIHhcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBgTnVsbCwgYE51bGwgLT4gdHJ1ZVxuICB8IGBCb29sIGEsIGBCb29sIGIgLT4gYSA9IGJcbiAgICBcbiMgMTEwIFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEludGxpdCBhLCBgSW50bGl0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTE2IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEZsb2F0bGl0IGEsIGBGbG9hdGxpdCBiIC0+IGEgPSBiXG4gICAgXG4jIDEyMiBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBTdHJpbmdsaXQgYSwgYFN0cmluZ2xpdCBiIC0+IGEgPSBiXG4gICAgXG4jIDEyNCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBBc3NvYyB4cywgYEFzc29jIHlzIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXlzID0gZnVuIChrZXksIF8pIChrZXknLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBrZXkga2V5JyBpblxuICAgICAgbGV0IHhzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeHMgaW5cbiAgICAgIGxldCB5cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHlzIGluXG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiAoZnVuIChrZXksIHZhbHVlKSAoa2V5JywgdmFsdWUnKSAtPlxuICAgICAgICBtYXRjaCBrZXkgPSBrZXknIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgICB8IHRydWUgLT4gZXF1YWwgdmFsdWUgdmFsdWUnKSB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIFxuIyAxMzcgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgVHVwbGUgeHMsIGBUdXBsZSB5c1xuICAgIFxuIyAxMzkgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgXG4jIDE0NiBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSksIGBWYXJpYW50IChuYW1lJywgdmFsdWUnKSAtPlxuICAgICAgKG1hdGNoIG5hbWUgPSBuYW1lJyB3aXRoXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgbWF0Y2ggdmFsdWUsIHZhbHVlJyB3aXRoXG4gICAgICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICBcbiMgMTU1IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgXyAtPiBmYWxzZVxuIyAxIFwid3JpdGUyLm1sXCJcbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4jIDEgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBcbiMgMiBcImxpYi9yZWFkLm1sbFwiXG4gIG1vZHVsZSBMZXhpbmcgPVxuICAgICgqXG4gICAgICBXZSBvdmVycmlkZSBMZXhpbmcuZW5naW5lIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IHBvc2l0aW9uXG4gICAgICByZWNvcmQgZWFjaCB0aW1lIGEgcnVsZSBpcyBtYXRjaGVkLlxuICAgICAgVGhpcyByZWR1Y2VzIHRvdGFsIHBhcnNpbmcgdGltZSBieSBhYm91dCAzMSUuXG4gICAgKilcbiAgc3RydWN0XG4gICAgaW5jbHVkZSBMZXhpbmdcblxuICAgIGV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcblxuICAgIGxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gICAgICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICAgICAgKCpcbiAgICAgIGlmIHJlc3VsdCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgICAgIGVuZDtcbiAgICAgICopXG4gICAgICByZXN1bHRcbiAgZW5kXG5cbiAgb3BlbiBQcmludGZcbiAgb3BlbiBMZXhpbmdcblxuICAoKiBzZWUgZGVzY3JpcHRpb24gaW4gY29tbW9uLm1saSAqKVxuICB0eXBlIGxleGVyX3N0YXRlID0gTGV4ZXJfc3RhdGUudCA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgZGVjIGMgPVxuICAgIENoYXIuY29kZSBjIC0gNDhcblxuICBsZXQgaGV4IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnMCcuLic5JyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG4gICAgICB8ICdhJy4uJ2YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKyAxMFxuICAgICAgfCAnQScuLidGJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgMTBcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgY3VzdG9tX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQgb2ZmcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyAtIDEgaW5cbiAgICBsZXQgYm9sID0gdi5ib2wgaW5cbiAgICBsZXQgcG9zMSA9IG9mZnMgKyBsZXhidWYubGV4X3N0YXJ0X3BvcyAtIGJvbCAtIDEgaW5cbiAgICBsZXQgcG9zMiA9IG1heCBwb3MxIChvZmZzICsgbGV4YnVmLmxleF9jdXJyX3BvcyAtIGJvbCkgaW5cbiAgICBsZXQgZmlsZV9saW5lID1cbiAgICAgIG1hdGNoIHYuZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gXCJMaW5lXCJcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIHNwcmludGYgXCJGaWxlICVzLCBsaW5lXCIgc1xuICAgIGluXG4gICAgbGV0IGJ5dGVzID1cbiAgICAgIGlmIHBvczEgPSBwb3MyIHRoZW5cbiAgICAgICAgc3ByaW50ZiBcImJ5dGUgJWlcIiAocG9zMSsxKVxuICAgICAgZWxzZVxuICAgICAgICBzcHJpbnRmIFwiYnl0ZXMgJWktJWlcIiAocG9zMSsxKSAocG9zMisxKVxuICAgIGluXG4gICAgbGV0IG1zZyA9IHNwcmludGYgXCIlcyAlaSwgJXM6XFxuJXNcIiBmaWxlX2xpbmUgdi5sbnVtIGJ5dGVzIGRlc2NyIGluXG4gICAganNvbl9lcnJvciBtc2dcblxuXG4gIGxldCBsZXhlcl9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoc3ByaW50ZiBcIiVzICclcydcIiBkZXNjciAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgcmVhZF9qdW5rID0gcmVmIChmdW4gXyAtPiBhc3NlcnQgZmFsc2UpXG5cbiAgbGV0IGxvbmdfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGxldCBqdW5rID0gTGV4aW5nLmxleGVtZSBsZXhidWYgaW5cbiAgICBsZXQgZXh0cmFfanVuayA9ICFyZWFkX2p1bmsgbGV4YnVmIGluXG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoc3ByaW50ZiBcIiVzICclcyVzJ1wiIGRlc2NyIGp1bmsgZXh0cmFfanVuaylcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IG1pbjEwID0gbWluX2ludCAvIDEwIC0gKGlmIG1pbl9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuICBsZXQgbWF4MTAgPSBtYXhfaW50IC8gMTAgKyAoaWYgbWF4X2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG5cbiAgZXhjZXB0aW9uIEludF9vdmVyZmxvd1xuXG4gIGxldCBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWYgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA+PSBtYXgxMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gKyBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgICBcbiMgMTA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgYEludGxpdCAobGV4ZW1lIGxleGJ1ZilcblxuICBcbiMgMTEzIFwibGliL3JlYWQubWxsXCJcbiAgbGV0IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZiA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyAxIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA8PSBtaW4xMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gLSBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA+IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgICBcbiMgMTM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgYEludGxpdCAobGV4ZW1lIGxleGJ1ZilcblxuXG4gIFxuIyAxNDEgXCJsaWIvcmVhZC5tbGxcIlxuICBsZXQgc2V0X2ZpbGVfbmFtZSB2IGZuYW1lID1cbiAgICB2LmZuYW1lIDwtIGZuYW1lXG5cbiAgbGV0IG5ld2xpbmUgdiBsZXhidWYgPVxuICAgIHYubG51bSA8LSB2LmxudW0gKyAxO1xuICAgIHYuYm9sIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3NcblxuICBsZXQgYWRkX2xleGVtZSBidWYgbGV4YnVmID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgQnVmZmVyLmFkZF9zdWJieXRlcyBidWYgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbiAgbGV0IG1hcF9sZXhlbWUgZiBsZXhidWYgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBmIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlbikgMCBsZW5cblxuICB0eXBlIHZhcmlhbnRfa2luZCA9IFsgYEVkZ3lfYnJhY2tldCB8IGBTcXVhcmVfYnJhY2tldCB8IGBEb3VibGVfcXVvdGUgXVxuICB0eXBlIHR1cGxlX2tpbmQgPSBbIGBQYXJlbnRoZXNpcyB8IGBTcXVhcmVfYnJhY2tldCBdXG5cblxuIyAxNjEgXCJsaWIvcmVhZC5tbFwiXG4jIDE2MSBcImxpYi9yZWFkLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIzNlxcMjU1XFwyMzdcXDI1NVxcMDAzXFwwMDBcXDIzOVxcMjU1XFwwMTZcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNDlcXDI1NVxcMDg1XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NFxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDI1M1xcMjU1XFwwMTFcXDAwMFxcMjUyXFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjUxXFwyNTVcXDAyMVxcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDIyXFwwMDBcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIyXFwwMDBcXDAxMlxcMDAwXFwwMDhcXDAwMFxcMjUwXFwyNTVcXFxuICAgIFxcMTE5XFwwMDBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTYxXFwwMDBcXDE3MVxcMDAwXFwxODFcXDAwMFxcMTkzXFwwMDBcXDIwOVxcMDAwXFxcbiAgICBcXDI0MFxcMjU1XFwwMTFcXDAwMFxcMDM4XFwwMDBcXDI1MlxcMjU1XFwwNjVcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMTBcXDAwMFxcXG4gICAgXFwyNTJcXDI1NVxcMTYzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjM0XFwwMDBcXDI0N1xcMjU1XFwyNDhcXDI1NVxcMDQ4XFwwMDFcXFxuICAgIFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDEyNlxcMDAxXFxcbiAgICBcXDE0OVxcMDAxXFwyNDlcXDI1NVxcMDM5XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDM4XFwwMDBcXDE4N1xcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNDhcXDAwMVxcMDE1XFwwMDJcXDI1NVxcMjU1XFwyMjBcXDAwMFxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMDM5XFwwMDJcXFxuICAgIFxcMTA5XFwwMDJcXDAxNFxcMDAxXFwwODhcXDAwMlxcMTY0XFwwMDJcXDE4N1xcMDAyXFwyMjVcXDAwMlxcMDEzXFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDFcXFxuICAgIFxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDFcXDAwNVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwwMjNcXDAwMFxcMjU0XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDUzXFwwMDBcXDA0OFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAxXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDEzN1xcMDAwXFwxMDRcXDAwMFxcMDg5XFwwMDBcXDA4OFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDBcXDEzN1xcMDAwXFwxNzdcXDAwMFxcMjU0XFwyNTVcXDE4M1xcMDAwXFwxNjhcXDAwMFxcMTY2XFwwMDBcXFxuICAgIFxcMTgzXFwwMDBcXDAwMlxcMDAwXFwyNTNcXDI1NVxcMTc3XFwwMDBcXDE3MlxcMDAwXFwxODdcXDAwMFxcMDA0XFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDA1M1xcMDAyXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwxMDNcXDAwMVxcMjU1XFwyNTVcXDI0OFxcMDAyXFwyNTRcXDI1NVxcXG4gICAgXFwwMDZcXDAwM1xcMDMwXFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwM1xcMDUwXFwwMDNcXFxuICAgIFxcMDc0XFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwM1xcMDg0XFwwMDNcXDEwOFxcMDAzXFxcbiAgICBcXDI0OVxcMjU1XFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI0NFxcMDAwXFwxMjBcXDAwM1xcMTQyXFwwMDNcXDE3OVxcMDAwXFwxOTRcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDE5MFxcMDAwXFwxODhcXDAwMFxcMTg3XFwwMDBcXDE5M1xcMDAwXFwxODNcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDE5MVxcMDAwXFwyMDFcXDAwMFxcMjAwXFwwMDBcXDE5NlxcMDAwXFwyMDNcXDAwMFxcMTkzXFwwMDBcXDE4OVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwxNTdcXDAwM1xcMDk1XFwwMDNcXDE3NFxcMDAzXFwxOTZcXDAwM1xcMjA2XFwwMDNcXDIxNlxcMDAzXFwyMjhcXDAwM1xcXG4gICAgXFwyMzlcXDAwM1xcMDYwXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMDg3XFwwMDRcXDI1NVxcMjU1XFwxNDVcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjFcXDAwNFxcMjU1XFwyNTVcXDIyOVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzMVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE4XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjBcXDAwMVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIwOFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMTFcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODlcXDAwMFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDk1XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzNcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjIyXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDVcXDIzN1xcMjU1XFwyMzhcXDI1NVxcMDEwXFwwMDBcXDI0MFxcMjU1XFwwNDRcXDAwMVxcXG4gICAgXFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMDYxXFwwMDFcXDAwMlxcMDA0XFwyNDlcXDI1NVxcMDQ1XFwwMDVcXFxuICAgIFxcMjA5XFwwMDBcXDIyOFxcMDAwXFwyMTFcXDAwMFxcMjMyXFwwMDBcXDIyNVxcMDAwXFwyMjNcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIzNVxcMDAwXFwyMzRcXDAwMFxcMDA4XFwwMDFcXDI1NFxcMjU1XFwwMDRcXDAwMVxcMDIzXFwwMDFcXDI1M1xcMjU1XFwwNTRcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMDMxXFwwMDFcXDAyOVxcMDAxXFwwMzJcXDAwMVxcMDM5XFwwMDFcXDA0OVxcMDAxXFwwNDVcXDAwMVxcMjUxXFwyNTVcXFxuICAgIFxcMDU3XFwwMDFcXDA4MlxcMDAxXFwwODBcXDAwMVxcMDc4XFwwMDFcXDA4NFxcMDAxXFwwNzRcXDAwMVxcMDg2XFwwMDFcXDI1MFxcMjU1XFxcbiAgICBcXDExMFxcMDA1XFwwMTJcXDAwNFxcMTIzXFwwMDVcXDE1NVxcMDA1XFwxNjVcXDAwNVxcMTc3XFwwMDVcXDE4N1xcMDA1XFwxOTdcXDAwNVxcXG4gICAgXFwyNDFcXDI1NVxcMTk5XFwwMDFcXDA3N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDE1NFxcMDAyXFwyMjJcXDAwNVxcMjA5XFwwMDVcXFxuICAgIFxcMTU1XFwwMDJcXDIzOVxcMDA1XFwwNTNcXDAwNlxcMDc2XFwwMDZcXDExNFxcMDA2XFwwMTZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTUyXFwwMDZcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjI3XFwwMDZcXDI1NVxcMjU1XFwwODVcXDAwN1xcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAxMVxcMDAwXFwyNDdcXDI1NVxcMDc2XFwwMDJcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzFcXDAwMlxcMjQzXFwwMDVcXDA1MVxcMDA3XFwxMDBcXDAwMVxcMTE1XFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMThcXDAwMVxcMTU0XFwwMDFcXDE3MVxcMDAxXFwyNTVcXDI1NVxcMTczXFwwMDFcXDE3NlxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg3XFwwMDFcXDI1M1xcMDAxXFwyMzBcXDAwMVxcMjMwXFwwMDFcXDIzNFxcMDAxXFwyNDdcXDAwMVxcMjM3XFwwMDFcXFxuICAgIFxcMjM0XFwwMDFcXDAwOVxcMDAyXFwwMTlcXDAwMlxcMDE5XFwwMDJcXDAxNVxcMDAyXFwwMjFcXDAwMlxcMDExXFwwMDJcXDAwN1xcMDAyXFxcbiAgICBcXDE0MlxcMDA2XFwxNTJcXDAwNlxcMTE2XFwwMDdcXDE3MFxcMDA3XFwxODBcXDAwN1xcMTkwXFwwMDdcXDIwMFxcMDA3XFwyMTBcXDAwN1xcXG4gICAgXFwyNDhcXDI1NVxcMTIwXFwwMDJcXDE2N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDIxNlxcMDAyXFwwODJcXDAwN1xcMjIwXFwwMDdcXFxuICAgIFxcMjM2XFwwMDJcXDI0NFxcMDA3XFwwNThcXDAwOFxcMDgxXFwwMDhcXDExOVxcMDA4XFwwNzZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTU3XFwwMDhcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjMyXFwwMDhcXDI1NVxcMjU1XFwxMzVcXDAwMlxcXG4gICAgXFwxMjBcXDAwMlxcMjUzXFwyNTVcXDEwMFxcMDAyXFwyNTRcXDI1NVxcMTgyXFwwMDJcXDI1NVxcMjU1XFwwMTFcXDAwMlxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMlxcMjU1XFwyNTVcXDE3OFxcMDAyXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMjU1XFwyNTVcXDE4M1xcMDAyXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMlxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIxXFwwMDJcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxNDBcXDAwMVxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwxNTBcXDAwMVxcMTUxXFwwMDFcXDE1NFxcMDAxXFwxNjhcXDAwMVxcXG4gICAgXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE3MlxcMDAxXFwxNzNcXDAwMVxcMTgxXFwwMDFcXDE4NFxcMDAxXFwxODVcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5M1xcMDAxXFwxOTVcXDAwMVxcMTk2XFwwMDFcXDE5N1xcMDAxXFwyMDBcXDAwMVxcMjAzXFwwMDFcXDIyM1xcMDAxXFxcbiAgICBcXDIyNVxcMDAxXFwyMjhcXDAwMVxcMjQ5XFwwMDFcXDI1MVxcMDAxXFwwMDJcXDAwMlxcMDA0XFwwMDJcXDAxMVxcMDAyXFwwMTJcXDAwMlxcXG4gICAgXFwwMTNcXDAwMlxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxMzhcXDAwMFxcMDAwXFwwMDBcXDE0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDEyMVxcMDAxXFwxMjVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTQ0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5M1xcMDAxXFwxOTdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDIyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAyXFwwMDJcXDAwNFxcMDAyXFwwMDBcXDAwMFxcMDA1XFwwMDJcXDAwNlxcMDAyXFwwMDdcXDAwMlxcMDA4XFwwMDJcXFxuICAgIFxcMDA5XFwwMDJcXDAxMFxcMDAyXFwwMTFcXDAwMlxcMDEyXFwwMDJcXDAxM1xcMDAyXFwwMTRcXDAwMlxcMDE1XFwwMDJcXDAxNlxcMDAyXFxcbiAgICBcXDAxN1xcMDAyXFwwMThcXDAwMlxcMDE5XFwwMDJcXDAyMFxcMDAyXFwwMjFcXDAwMlxcMDIyXFwwMDJcXDAyM1xcMDAyXFwwMjRcXDAwMlxcXG4gICAgXFwwMjVcXDAwMlxcMDI2XFwwMDJcXDAyN1xcMDAyXFwwMjhcXDAwMlxcMDI5XFwwMDJcXDAzMFxcMDAyXFwwMzFcXDAwMlxcMDMyXFwwMDJcXFxuICAgIFxcMDMzXFwwMDJcXDAwM1xcMDAyXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI3XFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMDNcXDAwMFxcMTcwXFwwMDBcXDEzNFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxNFxcMDAxXFwwMTNcXDAwMFxcMDQ5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDA1NlxcMDAwXFwxMThcXDAwMFxcMDA2XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDFcXDEzN1xcMDAwXFwwMDBcXDAwMlxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMTM4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwMTRcXDAwMFxcMTEwXFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAxNVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAzMFxcMDAwXFwwNDhcXDAwMFxcMDA4XFwwMDBcXDExNFxcMDAwXFwyMDlcXDAwMFxcMjM2XFwwMDBcXDAwMFxcMDAxXFxcbiAgICBcXDAxM1xcMDAxXFwwMjlcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDAxN1xcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjVcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDIzXFwwMDBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAzNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDIwXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMzdcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA2MVxcMDAwXFwwODVcXDAwMFxcMDQ4XFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA2N1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODZcXDAwMFxcMTQzXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMTQ0XFwwMDBcXFxuICAgIFxcMTQ1XFwwMDBcXDE0NlxcMDAwXFwwNTVcXDAwMFxcMTQ4XFwwMDBcXDA1NVxcMDAwXFwxNDlcXDAwMFxcMDQ4XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwxNTBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMFxcMTYxXFwwMDBcXDA2NlxcMDAwXFwxNThcXDAwMFxcMDUzXFwwMDBcXDE1OVxcMDAwXFwwNTNcXDAwMFxcMTYwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDE2NVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDE2NlxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMTAzXFwwMDBcXDEwOFxcMDAwXFwxMTZcXDAwMFxcXG4gICAgXFwxMzJcXDAwMFxcMTM0XFwwMDBcXDEzNVxcMDAwXFwxMjhcXDAwMFxcMTM5XFwwMDBcXDEzNFxcMDAwXFwxNjRcXDAwMFxcMDkzXFwwMDBcXFxuICAgIFxcMTcxXFwwMDBcXDA3N1xcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzJcXDAwMFxcMTEyXFwwMDBcXDE3M1xcMDAwXFxcbiAgICBcXDE3NFxcMDAwXFwyMTBcXDAwMFxcMjI2XFwwMDBcXDIwOFxcMDAwXFwyMTFcXDAwMFxcMjEyXFwwMDBcXDA1OVxcMDAwXFwwODNcXDAwMFxcXG4gICAgXFwxMzRcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE2XFwwMDBcXDIxOFxcMDAwXFwxNDFcXDAwMFxcMjE5XFwwMDBcXFxuICAgIFxcMDkzXFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTIzXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMjI0XFwwMDBcXDEzNlxcMDAwXFxcbiAgICBcXDA5NVxcMDAwXFwyMjVcXDAwMFxcMDM1XFwwMDFcXDA2NVxcMDAxXFwyMzRcXDAwMFxcMTU1XFwwMDBcXDAwNVxcMDAxXFwwOTdcXDAwMVxcXG4gICAgXFwyNTBcXDAwMFxcMjU1XFwyNTVcXDI1NFxcMDAwXFwwNTdcXDAwMVxcMDYxXFwwMDFcXDA5NVxcMDAxXFwwNzdcXDAwMFxcMDQ0XFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA4OFxcMDAxXFwwMDlcXDAwMVxcMDI5XFwwMDFcXDA3NlxcMDAwXFwxMjRcXDAwMFxcMDMzXFwwMDFcXDAxOFxcMDAxXFxcbiAgICBcXDA3NVxcMDAwXFwwOThcXDAwMFxcMDE5XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDg3XFwwMDFcXDEyMFxcMDAxXFwwODlcXDAwMVxcXG4gICAgXFwwNzRcXDAwMFxcMjI1XFwwMDBcXDA1M1xcMDAxXFwxMjFcXDAwMVxcMDczXFwwMDBcXDA5MFxcMDAxXFwwNzJcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk4XFwwMDBcXDExM1xcMDAxXFwxMjJcXDAwMFxcMDkxXFwwMDFcXDA2NFxcMDAwXFwwMDRcXDAwMVxcXG4gICAgXFwwOTNcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwxNTZcXDAwMFxcMTEyXFwwMDFcXDA5NFxcMDAxXFwwOTZcXDAwMVxcMDk4XFwwMDFcXDA5OVxcMDAxXFwwNDlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwxMDBcXDAwMVxcMTU3XFwwMDBcXFxuICAgIFxcMTAxXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDE4M1xcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMDI0XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDEwMlxcMDAxXFwxMDNcXDAwMVxcMTA1XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwxMDZcXDAwMVxcMTA3XFwwMDFcXDA0OFxcMDAxXFwwNDBcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwxMTBcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwxMTFcXDAwMVxcXG4gICAgXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDE3MVxcMDAxXFwwMzFcXDAwMVxcMTcwXFwwMDFcXDAyM1xcMDAxXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA5MlxcMDAwXFwxNjhcXDAwMVxcMDYzXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMjQ4XFwwMDBcXDE2NVxcMDAxXFwyNTJcXDAwMFxcXG4gICAgXFwxNjJcXDAwMVxcMDU5XFwwMDFcXDA2OVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwyNTVcXDI1NVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDAzOVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDE2M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwxMjBcXDAwMFxcMDAyXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMTY2XFwwMDFcXDA1NVxcMDAxXFwxNTNcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMDdcXDAwMVxcMTY3XFwwMDFcXDE2NFxcMDAxXFwxNjlcXDAwMVxcMDE2XFwwMDFcXDE2NFxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA1MVxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDEzN1xcMDAxXFwxNjRcXDAwMVxcMTcyXFwwMDFcXDE4NVxcMDAxXFwxMzZcXDAwMVxcMTczXFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDE3NFxcMDAxXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNDZcXDAwMVxcXG4gICAgXFwxNzVcXDAwMVxcMTc2XFwwMDFcXDE4MFxcMDAwXFwxNjRcXDAwMVxcMTg0XFwwMDFcXDE4MVxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDEyNFxcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDE5MlxcMDAxXFwxNzhcXDAwMVxcXG4gICAgXFwwMjFcXDAwMVxcMTc5XFwwMDFcXDA5N1xcMDAwXFwxOTNcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcMTgzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDIxNlxcMDAxXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDE4NFxcMDAxXFwyMTZcXDAwMVxcMjA5XFwwMDFcXDA5N1xcMDAwXFxcbiAgICBcXDIyM1xcMDAxXFwwOTdcXDAwMFxcMjA4XFwwMDFcXDIzMFxcMDAxXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDIxOVxcMDAxXFwwMzdcXDAwMVxcXG4gICAgXFwyMTZcXDAwMVxcMjE3XFwwMDFcXDAwM1xcMDAyXFwyMjBcXDAwMVxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDAzXFwwMDJcXFxuICAgIFxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMTZcXDAwMVxcXG4gICAgXFwwMDNcXDAwMlxcMTI2XFwwMDFcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMjE4XFwwMDFcXDI1MFxcMDAxXFxcbiAgICBcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDAwM1xcMDAyXFwxMjRcXDAwMVxcMTI0XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcXG4gICAgXFwyMjFcXDAwMVxcMDAzXFwwMDJcXDI1M1xcMDAxXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDJcXDE5NlxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyMzVcXDAwMVxcMDAzXFwwMDJcXFxuICAgIFxcMjQxXFwwMDFcXDAwM1xcMDAyXFwyNTVcXDAwMVxcMjQyXFwwMDFcXDAwM1xcMDAyXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI0NlxcMDAxXFwxMjlcXDAwMVxcMTI5XFwwMDFcXFxuICAgIFxcMjI4XFwwMDFcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMDAzXFwwMDJcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDAzXFwwMDJcXDE5OFxcMDAxXFwwMDNcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMjM0XFwwMDFcXFxuICAgIFxcMTM0XFwwMDFcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDFcXDAwMVxcMTc3XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg4XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDIwMVxcMDAxXFwyMjdcXDAwMVxcMDAwXFwwMDBcXDE5MVxcMDAwXFwyMDZcXDAwMVxcMTIzXFwwMDFcXDE4OVxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTg5XFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTk1XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNDhcXDAwMVxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMjAyXFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjI2XFwwMDBcXDE5NVxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMjFcXDAwMVxcMjM5XFwwMDFcXFxuICAgIFxcMjU0XFwwMDFcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMjQ0XFwwMDFcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjAzXFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDFcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg2XFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTEzXFwwMDFcXDAwMFxcMDAwXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwMDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDIzOFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNFxcMDAxXFwwNzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwNzFcXDAwMVxcMDc2XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDFcXDExOVxcMDAxXFwwMDBcXDAwMFxcMTE5XFwwMDFcXDAwMFxcMDAwXFwwODFcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE3XFwwMDFcXDAwMFxcMDAwXFwwNzVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTg1XFwwMDFcXDAwMFxcMDAwXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE5MVxcMDAxXFwxNDJcXDAwMVxcMTkxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDZcXDAwMVxcMTQ3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMTUzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3N1xcMDAxXFwxNTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTU2XFwwMDFcXDAwMFxcMDAwXFwxNDhcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE0OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEzOVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDE1MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTg3XFwwMDFcXDAwMFxcMDAwXFwxNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNjFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OVxcMDAxXFwwMDBcXDAwMFxcMTg5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDVcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE5OVxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMTRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjVcXDAwMFxcMTM4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwM1xcMDAwXFwxNjlcXDAwMFxcMTM0XFwwMDBcXDE3NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDEyXFwwMDFcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMTI1XFwwMDBcXDEyOVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyMzZcXDAwMVxcMTM2XFwwMDBcXDI1NVxcMDAxXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDAxMFxcMDAwXFwxMzZcXDAwMFxcMTAyXFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwxMDdcXDAwMFxcMTAyXFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDI5XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDIwOFxcMDAwXFwyMzNcXDAwMFxcMjU1XFwwMDBcXFxuICAgIFxcMDEyXFwwMDFcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDYwXFwwMDBcXDAxMVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyNFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMjJcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDMzXFwwMDBcXDAxOFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMTlcXDAwMFxcMDM1XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAzNlxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NVxcMDAwXFwwNDZcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcXG4gICAgXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NVxcMDAwXFwxNDBcXDAwMFxcMDYwXFwwMDBcXDAxM1xcMDAwXFwxNDNcXDAwMFxcXG4gICAgXFwxNDRcXDAwMFxcMTQ1XFwwMDBcXDA0OFxcMDAwXFwxNDdcXDAwMFxcMDQ4XFwwMDBcXDE0OFxcMDAwXFwwMzlcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNjVcXDAwMFxcMDM5XFwwMDBcXDE0OVxcMDAwXFxcbiAgICBcXDE1MFxcMDAwXFwxNTZcXDAwMFxcMDYzXFwwMDBcXDE1N1xcMDAwXFwwNTFcXDAwMFxcMTU4XFwwMDBcXDA1MVxcMDAwXFwxNTlcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcXG4gICAgXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMTU1XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcMTU1XFwwMDBcXDA5MVxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2OFxcMDAwXFwxMDJcXDAwMFxcMTA3XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDEzMVxcMDAwXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMTMzXFwwMDBcXDE2M1xcMDAwXFwwOTRcXDAwMFxcXG4gICAgXFwxNjVcXDAwMFxcMDY4XFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE3MVxcMDAwXFwxMTFcXDAwMFxcMTcyXFwwMDBcXFxuICAgIFxcMTczXFwwMDBcXDIwNlxcMDAwXFwyMDNcXDAwMFxcMjA3XFwwMDBcXDIxMFxcMDAwXFwyMTFcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDEzM1xcMDAwXFwyMTJcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE3XFwwMDBcXDE0MFxcMDAwXFwyMThcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjE5XFwwMDBcXDIyMFxcMDAwXFwxMTlcXDAwMFxcMjIxXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMTMzXFwwMDBcXFxuICAgIFxcMDkxXFwwMDBcXDIwM1xcMDAwXFwwMzRcXDAwMVxcMDYyXFwwMDFcXDIzM1xcMDAwXFwxNTJcXDAwMFxcMDAxXFwwMDFcXDA4MFxcMDAxXFxcbiAgICBcXDI0N1xcMDAwXFwwNjBcXDAwMFxcMjUxXFwwMDBcXDA1NFxcMDAxXFwwNThcXDAwMVxcMDgxXFwwMDFcXDA2OFxcMDAwXFwwNDFcXDAwMVxcXG4gICAgXFwwODJcXDAwMVxcMDgzXFwwMDFcXDAwNlxcMDAxXFwwMjZcXDAwMVxcMDY4XFwwMDBcXDExOVxcMDAwXFwwMzBcXDAwMVxcMDE1XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDA5NFxcMDAwXFwwMTVcXDAwMVxcMDg0XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDcxXFwwMDFcXDA4OFxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwyMDNcXDAwMFxcMDUwXFwwMDFcXDA3MVxcMDAxXFwwNjhcXDAwMFxcMDg5XFwwMDFcXDA2OFxcMDAwXFwwNjhcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwOTdcXDAwMFxcMDc2XFwwMDFcXDExOVxcMDAwXFwwOTBcXDAwMVxcMDYzXFwwMDBcXDAwMVxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDE1MlxcMDAwXFwwNzZcXDAwMVxcMDkzXFwwMDFcXDA5NVxcMDAxXFwwOTdcXDAwMVxcMDk4XFwwMDFcXDA0NVxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OVxcMDAxXFwxNTJcXDAwMFxcXG4gICAgXFwxMDBcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwwMjBcXDAwMVxcMDc2XFwwMDFcXDA2NVxcMDAwXFwwMjBcXDAwMVxcMTAxXFwwMDFcXDEwMlxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDEwNVxcMDAxXFwxMDZcXDAwMVxcMDQ1XFwwMDFcXDAzNlxcMDAxXFwxMDdcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDExMFxcMDAxXFxcbiAgICBcXDAyNlxcMDAxXFwxMjFcXDAwMVxcMTU3XFwwMDFcXDAzMFxcMDAxXFwxNThcXDAwMVxcMDIwXFwwMDFcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDkxXFwwMDBcXDE1OVxcMDAxXFwwNjJcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwyNDdcXDAwMFxcMTYwXFwwMDFcXDI1MVxcMDAwXFxcbiAgICBcXDE2MVxcMDAxXFwwNThcXDAwMVxcMDY4XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA5NFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDM2XFwwMDFcXDA0MVxcMDAxXFwwOTdcXDAwMFxcMTYyXFwwMDFcXFxuICAgIFxcMTYzXFwwMDFcXDExOVxcMDAwXFwwMDFcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwxNjVcXDAwMVxcMDU0XFwwMDFcXDE1MlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwNlxcMDAxXFwxNjZcXDAwMVxcMTY3XFwwMDFcXDE2OFxcMDAxXFwwMTVcXDAwMVxcMTY5XFwwMDFcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDUwXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTMzXFwwMDFcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTU0XFwwMDFcXDEzM1xcMDAxXFwxNzJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTczXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA0NVxcMDAxXFxcbiAgICBcXDE3NFxcMDAxXFwxNzVcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAxXFwxNTRcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTIyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMTQ4XFwwMDFcXDE3N1xcMDAxXFxcbiAgICBcXDAyMFxcMDAxXFwxNzhcXDAwMVxcMDk4XFwwMDBcXDE0OFxcMDAxXFwxNzlcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcXG4gICAgXFwxODNcXDAwMVxcMjE2XFwwMDFcXDE5M1xcMDAxXFwwOTVcXDAwMFxcMTU0XFwwMDFcXDIxNlxcMDAxXFwyMDVcXDAwMVxcMDk4XFwwMDBcXFxuICAgIFxcMjIyXFwwMDFcXDA5NVxcMDAwXFwyMDVcXDAwMVxcMjI5XFwwMDFcXDAwMVxcMDAyXFwwOTVcXDAwMFxcMjE4XFwwMDFcXDAzNlxcMDAxXFxcbiAgICBcXDIxNVxcMDAxXFwyMTVcXDAwMVxcMDAyXFwwMDJcXDIxOFxcMDAxXFwyMTVcXDAwMVxcMDk1XFwwMDBcXDAwNFxcMDAyXFwwMDVcXDAwMlxcXG4gICAgXFwyMTZcXDAwMVxcMDk1XFwwMDBcXDAwNlxcMDAyXFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDIxNVxcMDAxXFxcbiAgICBcXDAwN1xcMDAyXFwxMjJcXDAwMVxcMDA4XFwwMDJcXDAwOVxcMDAyXFwwMTBcXDAwMlxcMDExXFwwMDJcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk4XFwwMDBcXDAxMlxcMDAyXFwyMTVcXDAwMVxcMjQ3XFwwMDFcXFxuICAgIFxcMDEzXFwwMDJcXDAxNFxcMDAyXFwwOThcXDAwMFxcMDE1XFwwMDJcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMDk4XFwwMDBcXDAxNlxcMDAyXFxcbiAgICBcXDIyMFxcMDAxXFwwMTdcXDAwMlxcMjUxXFwwMDFcXDAxOFxcMDAyXFwwMTlcXDAwMlxcMDIwXFwwMDJcXDA5OFxcMDAwXFwxMjFcXDAwMVxcXG4gICAgXFwwMjFcXDAwMlxcMTk0XFwwMDFcXDA5OFxcMDAwXFwwMjJcXDAwMlxcMDk4XFwwMDBcXDA5OFxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIzMVxcMDAxXFwwMjNcXDAwMlxcXG4gICAgXFwyMzhcXDAwMVxcMDI0XFwwMDJcXDI1MVxcMDAxXFwyMzhcXDAwMVxcMDI1XFwwMDJcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjQzXFwwMDFcXDEyNVxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwyMjRcXDAwMVxcMDI2XFwwMDJcXDE5N1xcMDAxXFwwMjdcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMjhcXDAwMlxcMTk0XFwwMDFcXDAyOVxcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDAzMFxcMDAyXFwwMzFcXDAwMlxcMDMyXFwwMDJcXDIwMFxcMDAxXFwyMzFcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwxNzZcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMjU1XFwyNTVcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTg1XFwwMDBcXDIwNVxcMDAxXFwxMjJcXDAwMVxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFxcbiAgICBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTJcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkzXFwwMDFcXDI0N1xcMDAxXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOTlcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwxOTlcXDAwMFxcMTI1XFwwMDFcXDEyOFxcMDAxXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcXG4gICAgXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwyMDRcXDAwMFxcMTk0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDBcXDIyMFxcMDAxXFwyMzhcXDAwMVxcXG4gICAgXFwyNTFcXDAwMVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyNDNcXDAwMVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjRcXDAwMVxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMTk3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDIyOFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFxcbiAgICBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODVcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFxcbiAgICBcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDE5OVxcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjM3XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjZcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwxMTJcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExNVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTVcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXFxuICAgIFxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXFxuICAgIFxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcXG4gICAgXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMjU1XFwyNTVcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDEyNlxcMDAxXFwxMjlcXDAwMVxcMTI2XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyOVxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTg0XFwwMDFcXDEzOFxcMDAxXFwxODRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzOFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXFxuICAgIFxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTU2XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwxODZcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTk4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDFcXDI1NVxcMjU1XFwxODdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTg2XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjAxXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCB0cnVlIClcblxuIyAxMDMyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDMzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgZmFsc2UgKVxuXG4jIDEwMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwMzggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDE5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgTnVsbCApXG5cbiMgMTA0MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA0MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAxOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgXCJOYU5cIlxuICAgICAgICAgICAgICAgIFxuIyAxOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDUzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDU0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyAxOTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxOTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdGxpdCBcIkluZmluaXR5XCJcbiAgICAgICAgICAgICAgICBcbiMgMjA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgXCItSW5maW5pdHlcIlxuICAgICAgICAgICAgICAgIFxuIyAyMTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDc2IFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyAyMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAyMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBTdHJpbmdsaXQgKGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgXG4jIDIxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwODggXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDIyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDIyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiApXG5cbiMgMTA5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgMjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmIClcblxuIyAxMDk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDk4IFwibGliL3JlYWQubWxcIlxuICB8IDkgLT5cblxuIyAyMjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAyMjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdGxpdCAobGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgXG4jIDIyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTA5IFwibGliL3JlYWQubWxcIlxuICB8IDEwIC0+XG5cbiMgMjMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDIzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBBc3NvYyAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExMzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTEgLT5cblxuIyAyNTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICBgTGlzdCAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExNTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTIgLT5cblxuIyAyNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDI3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGBUdXBsZSAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgXG4jIDI4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTc4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTc5IFwibGliL3JlYWQubWxcIlxuICB8IDEzIC0+XG5cbiMgMjkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDI5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyAyOTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBjb25zID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGBWYXJpYW50IChjb25zLCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgXG4jIDMwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTkzIFwibGliL3JlYWQubWxcIlxuICB8IDE0IC0+XG5cbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMTk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTk4IFwibGliL3JlYWQubWxcIlxuICB8IDE1IC0+XG5cbiMgMzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTIwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNiAtPlxuXG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTIwNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIwOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNyAtPlxuXG4jIDMwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTIxMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIxMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxOCAtPlxuXG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEyMTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTkgLT5cblxuIyAzMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcblxuIyAxMjIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjIzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiA1OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDMxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggQnVmZmVyLmNvbnRlbnRzIHYuYnVmIClcblxuIyAxMjM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjM1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDEyNDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNDEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDEyNDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDMxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTI1MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI1MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfc3RyaW5nIHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiA2M1xuYW5kIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBsZXQgYiA9IHYuYnVmIGluXG4gICAgICAgICAgICAgICAgICAgIGYgKEJ1ZmZlci5jb250ZW50cyBiKSAwIChCdWZmZXIubGVuZ3RoIGIpIClcblxuIyAxMjY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjY1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG5cbiMgMTI3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcblxuIyAxMjc2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjc3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzMjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEyODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyODIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIDY4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcblxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICBcbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgY1xuXG4jIDEyOTQgXCJsaWIvcmVhZC5tbFwiXG4jIDEyOTQgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgYyApXG5cbiMgMTI5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcYicgKVxuXG4jIDEzMDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDMzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXDAxMicgKVxuXG4jIDEzMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nIClcblxuIyAxMzEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzE0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyAzMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxyJyApXG5cbiMgMTMxOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMxOSBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgMzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcdCcgKVxuXG4jIDEzMjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxubGV0XG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBhXG5cbiMgMTMyOSBcImxpYi9yZWFkLm1sXCJcbiMgMTMyOSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpXG5hbmRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBiXG5cbiMgMTMzNCBcImxpYi9yZWFkLm1sXCJcbiMgMTMzNCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuXG4jIDEzMzkgXCJsaWIvcmVhZC5tbFwiXG4jIDEzMzkgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG5cbiMgMTM0NCBcImxpYi9yZWFkLm1sXCJcbiMgMTM0NCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpIGluXG5cbiMgMzM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHggPj0gMHhEODAwICYmIHggPD0gMHhEQkZGIHRoZW5cbiAgICAgICAgICAgICBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgdXRmOF9vZl9jb2RlIHYuYnVmIHhcbiAgICAgICAgIClcblxuIyAxMzU1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzU2IFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyAzNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZVwiIHYgbGV4YnVmIClcblxuIyAxMzYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzYxIFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyAzNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEzNjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzNjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIDgyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgYVxuXG4jIDEzNzggXCJsaWIvcmVhZC5tbFwiXG4jIDEzNzggXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcblxuIyAxMzgzIFwibGliL3JlYWQubWxcIlxuIyAxMzgzIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuXG4jIDEzODggXCJsaWIvcmVhZC5tbFwiXG4jIDEzODggXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KVxuYW5kXG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA1KSBpblxuXG4jIDM1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHkgPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB5ID49IDB4REMwMCAmJiB5IDw9IDB4REZGRiB0aGVuXG4gICAgICAgICAgICAgdXRmOF9vZl9zdXJyb2dhdGVfcGFpciB2LmJ1ZiB4IHlcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGxvdyBzdXJyb2dhdGUgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiXG4gICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgKVxuXG4jIDE0MDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIk1pc3NpbmcgZXNjYXBlIHNlcXVlbmNlIHJlcHJlc2VudGluZyBsb3cgc3Vycm9nYXRlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIiB2IGxleGJ1ZiApXG5cbiMgMTQxMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQxMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDkxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgICAgICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIChsZW4rMSkgaW5cbiAgICAgICAgICAgQnl0ZXMuc2V0IHMgMCAnXCInO1xuICAgICAgICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIHMgMSBsZW47XG4gICAgICAgICAgIEJ5dGVzLnRvX3N0cmluZyBzXG4gICAgICAgICApXG5cbiMgMTQzMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQzNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcblxuIyAxNDM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDM5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzNzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDEwMlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzNzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID0gcmVhZF9qc29uIHYgbGV4YnVmIGluXG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWY7XG4gICAgICAgICAgIFNvbWUgeCApXG5cbiMgMTQ1OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ1OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBOb25lIClcblxuIyAxNDYzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDY0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNDY4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDY5IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0NzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgMTA3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAxNDg1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDg2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiAxMTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAxNTA3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTA4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE1MTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTUxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbW1hIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIDExNVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDE1MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTUzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTQwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMTlcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBFZGd5X2JyYWNrZXQgKVxuXG4jIDE1NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBgRG91YmxlX3F1b3RlIClcblxuIyAxNTU3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTU4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYFNxdWFyZV9icmFja2V0IClcblxuIyAxNTYyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTYzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JywgJ1xcXCInIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTU2NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU2OCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE1NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiAxMjVcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMTU4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG5cbiMgMTU4OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU5MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMTU5NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU5NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMTU5OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYwMCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9lb2YgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgMTMxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNjExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjEyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTYxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgMTMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTYyOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYyOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcblxuIyAxNjQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjQ5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIDE0MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggKCkgKVxuXG4jIDE2NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnbnVsbCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE2NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE2NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGxfaWZfcG9zc2libGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiAxNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE2ODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2ODMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNjg3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjg4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ib29sIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgMTUyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTY5OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcwMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNzA0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzA1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTcwOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcxMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNzE0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzE1IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd0cnVlJyBvciAnZmFsc2UnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNzE5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzIwIFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA0NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTcyNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcyNSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiAxNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE3MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxNzQ1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzQ2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50ZWdlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuXG4jIDE3NjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQ3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50ZWdlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTc2OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc2OSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE3NzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50MzIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgMTg1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQzMi5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTc4NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc4OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQzMi5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50MzIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcblxuIyAxODA1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODA2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDMyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxODEwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODExIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTgxNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgxNiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDY0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIDE5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQ5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50NjQub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE4MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50NjQub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDY0IGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG5cbiMgMTg0NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg0OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNTEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQ2NCBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTg1MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg1MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE4NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udW1iZXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIDE5OVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmFuIClcblxuIyAxODY5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODcwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggaW5maW5pdHkgKVxuXG4jIDE4NzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDUxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuZWdfaW5maW5pdHkgKVxuXG4jIDE4NzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4ODAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDUxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmbG9hdF9vZl9zdHJpbmcgKGxleGVtZSBsZXhidWYpIClcblxuIyAxODg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODg1IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA1MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBmbG9hdCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMuICopXG4gICAgICAgICAgICAgICAgICAgIGZsb2F0X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk5hTlwiIC0+IG5hblxuICAgICAgICAgICAgICAgICAgICAgIHwgXCJJbmZpbml0eVwiIC0+IGluZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBcIi1JbmZpbml0eVwiIC0+IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYSBudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgKVxuXG4jIDE5MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDUzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgbnVtYmVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTEyIFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyA1MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTkxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIDIzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTkyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXFxcIicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxOTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTQwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIDIzN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxOTUyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTUzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cbmxldFxuXG4jIDU1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgc1xuXG4jIDE5NTggXCJsaWIvcmVhZC5tbFwiXG4jIDE5NTggXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cblxuIyA1NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcyApXG5cbiMgMTk2MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk2MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTk2NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk2OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX2lkZW50IHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIDI0MlxuYW5kIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcblxuIyAxOTg1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTg2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbWFwX2xleGVtZSBmIGxleGJ1ZiApXG5cbiMgMTk5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTYwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTYwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTk5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIwMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMDEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc2VxdWVuY2UgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcblxuIyAyMDI2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDI3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjAzMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAzMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIwMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiAyNTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcblxuIyAyMDYyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDYzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjA2NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA2OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIwNzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwNzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIDI1NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMjA4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMDg5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDkwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDI1N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIxMDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMDIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDYwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDIxMDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDYwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjExMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjExMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNjA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIxMTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGUgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNjJcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDYxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA2MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFwb3MgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhcG9zICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgICAgICBcbiMgNjM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDIxNTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDYzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMTU1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTU2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjE2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgMjY2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMTcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTczIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIxNzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNzggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIDI2OFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjE5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjAwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjAxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIyMDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDI3MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIyMTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIyMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjIyNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIyOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNjU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIyMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgMjc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMjQ0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjQ1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMjUyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjUzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2NjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjYxIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA2NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyNjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDY3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjcxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgMjgyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcblxuIyAyMzA0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzA1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjMwOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMxMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIzMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sY3VybCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiAyODZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzMxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzMyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjMzNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMzNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIDI5MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAyMzQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzQ5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgMjkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzNjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAyMzcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzcxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDcxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMzgwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzgxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiAyOTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzk4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdHVwbGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiAzMDFcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMjQxNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQxNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDI0MTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQyNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQyNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiAzMDZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjQ0MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ0MiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0NDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDczMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDUxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDUyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ycGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgMzEwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI0NjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDczNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDY4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDY5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ3MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ3NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiAzMTRcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNDg1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDg2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcmJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiAzMThcbmFuZCBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNTA3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTA4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjUxMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUxMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI1MTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIDMyMlxuYW5kIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDc1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNzU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTQ1IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA3NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDc1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgNzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjU1OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU2MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgNzU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDc1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDc1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU2OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU3MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA5IC0+XG5cbiMgNzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDc2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI1OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTAgLT5cblxuIyA3ODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNzg0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNjEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjE0IFwibGliL3JlYWQubWxcIlxuICB8IDExIC0+XG5cbiMgNzk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDc5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA4MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICBcbiMgODE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI2MzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2MzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTIgLT5cblxuIyA4MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDgyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyA4MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjY1MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY1MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMyAtPlxuXG4jIDgzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY1NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY1NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNCAtPlxuXG4jIDgzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTUgLT5cblxuIyA4MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTYgLT5cblxuIyA4MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTcgLT5cblxuIyA4MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNjc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjc2IFwibGliL3JlYWQubWxcIlxuICB8IDE4IC0+XG5cbiMgODM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG5cbiMgMjY4MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY4MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDM3OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMjY5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcblxuIyAyNjk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjk4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI3MDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDM4OVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmIClcblxuIyAyNzE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzE3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAyNzIxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzIyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNzI2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzI3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA4NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI3MzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiAzOTRcbmFuZCBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyNzQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzQ0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI3NDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI3NTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDg1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNzU4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzU5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiAzOTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgODcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcblxuIyAyNzcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzcxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA4NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI3NzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd7JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODAzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA4OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnWyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4MjIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDkxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgOTE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJygnO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIFxuIyA5MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjg0NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg0NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgOTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDkzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA5MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc8JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgOTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDk0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjg2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgOTQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjg3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgOTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4ODAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOSAtPlxuXG4jIDk1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjg4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMCAtPlxuXG4jIDk1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI4ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4OTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTEgLT5cblxuIyA5NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcblxuIyAyODk0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODk1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgNDUwXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcIic7XG4gICAgICAgICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmXG4gICAgICAgICApXG5cbiMgMjkwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgOTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcblxuIyAyOTEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTE0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5NjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI5MTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDQ2MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonO1xuICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfZ3QgdiBsZXhidWYgKVxuXG4jIDI5MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG5cbiMgMjkzOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkzOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjk0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgOTc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTQ5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgNDY2XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI5NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk3OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk3OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG5cbiMgMjk2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjk3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgOTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI5NzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiA0NzFcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDI5OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDI5OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5OTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAzMDA2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDA3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA5OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMzAxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgOTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDMwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgNDc4XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nO1xuICAgICAgcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMzAzMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAzMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDMwMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMzggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiA0ODBcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG5cbiMgMzA0OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA1MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JzsgcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMzA1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTAwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMwNTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDEwMTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMwNjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgNDg1XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAzMDc2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDc3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMzA4MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA4MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDQ4N1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuXG4jIDMwOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwOTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMzA5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTAxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxMDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDEwMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiA0OTJcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJztcbiAgICAgIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMzEyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzEyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDMxMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiA0OTRcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcblxuIyAzMTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTQwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknOyByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDMxNDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTUwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTU1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIDQ5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JyApXG5cbiMgMzE2NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE2NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE3MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE3MiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTAzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzE3NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE3NyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIDUwM1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTA0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuXG4jIDMxODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxODkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwNDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTkzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTk0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzE5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDUwN1xuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTA0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiKi9cIiApXG5cbiMgMzIxMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIxMSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTA0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcblxuIyAzMjE1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjE2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDMyMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDEwNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcblxuIyAzMjI3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjI4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQganVuayBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfanVua19yZWMgbGV4YnVmIDUxM1xuYW5kIF9fb2NhbWxfbGV4X2p1bmtfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTA1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBMZXhpbmcubGV4ZW1lIGxleGJ1ZiApXG5cbiMgMzIzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzI0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2p1bmtfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG5cbiMgMTA1NSBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIFxuIyAxMDU2IFwibGliL3JlYWQubWxsXCJcbiAgbGV0IF8gPSAocmVhZF9qc29uIDogbGV4ZXJfc3RhdGUgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0KVxuXG4gIGxldCByZWFkX3QgPSByZWFkX2pzb25cblxuICBsZXQgKCkgPVxuICAgIHJlYWRfanVuayA6PSBqdW5rXG5cbiAgbGV0IHJlYWRfaW50OCB2IGxleGJ1ZiA9XG4gICAgbGV0IG4gPSByZWFkX2ludCB2IGxleGJ1ZiBpblxuICAgIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlblxuICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQ4IG92ZXJmbG93XCIgdiBsZXhidWZcbiAgICBlbHNlXG4gICAgICBjaGFyX29mX2ludCBuXG5cbiAgbGV0IHJlYWRfbGlzdCByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIExpc3QucmV2IChyZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZilcblxuICBsZXQgYXJyYXlfb2ZfcmV2X2xpc3QgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIFtdIC0+IFt8IHxdXG4gICAgICB8IHggOjogdGwgLT5cbiAgICAgICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICAgIGxldCByID0gcmVmIHRsIGluXG4gICAgICAgICAgZm9yIGkgPSBsZW4gLSAyIGRvd250byAwIGRvXG4gICAgICAgICAgICBhLihpKSA8LSBMaXN0LmhkICFyO1xuICAgICAgICAgICAgciA6PSBMaXN0LnRsICFyXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBhXG5cbiAgbGV0IHJlYWRfYXJyYXkgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBsZXQgbCA9IHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmIGluXG4gICAgYXJyYXlfb2ZfcmV2X2xpc3QgbFxuXG4gICgqIFJlYWQgYSBKU09OIG9iamVjdCwgcmVhZGluZyB0aGUga2V5cyBpbnRvIE9DYW1sIHN0cmluZ3NcbiAgICAgKHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KSAqKVxuICBsZXQgcmVhZF9maWVsZHMgcmVhZF9maWVsZCBpbml0X2FjYyB2ID1cbiAgICByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2lkZW50IHJlYWRfZmllbGQgaW5pdF9hY2MgdlxuXG4gIGxldCBmaW5pc2ggdiBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgaWYgbm90IChyZWFkX2VvZiBsZXhidWYpIHRoZW5cbiAgICAgIGxvbmdfZXJyb3IgXCJKdW5rIGFmdGVyIGVuZCBvZiBKU09OIHZhbHVlOlwiIHYgbGV4YnVmXG5cbiAgbGV0IGluaXRfbGV4ZXIgPSBpbml0X2xleGVyXG5cbiAgbGV0IGZyb21fbGV4YnVmIHYgPyhzdHJlYW0gPSBmYWxzZSkgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuXG4gICAgbGV0IHggPVxuICAgICAgaWYgcmVhZF9lb2YgbGV4YnVmIHRoZW5cbiAgICAgICAgcmFpc2UgRW5kX29mX2lucHV0XG4gICAgICBlbHNlXG4gICAgICAgIHJlYWRfanNvbiB2IGxleGJ1ZlxuICAgIGluXG5cbiAgICBpZiBub3Qgc3RyZWFtIHRoZW5cbiAgICAgIGZpbmlzaCB2IGxleGJ1ZjtcblxuICAgIHhcblxuXG4gIGxldCBmcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggRW5kX29mX2lucHV0IC0+XG4gICAgICBqc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggRW5kX29mX2lucHV0IC0+XG4gICAgICBqc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICB0cnlcbiAgICAgIGxldCB4ID0gZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljIGluXG4gICAgICBjbG9zZV9pbiBpYztcbiAgICAgIHhcbiAgICB3aXRoIGUgLT5cbiAgICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgICAgcmFpc2UgZVxuXG4gIGV4Y2VwdGlvbiBGaW5hbGx5IG9mIGV4biAqIGV4blxuXG4gIGxldCBzZXFfZnJvbV9sZXhidWYgdiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgbGV4YnVmID1cbiAgICBsZXQgc3RyZWFtID0gU29tZSB0cnVlIGluXG4gICAgbGV0IHJlYyBmICgpID1cbiAgICAgIHRyeSBTZXEuQ29ucyAoZnJvbV9sZXhidWYgdiA/c3RyZWFtIGxleGJ1ZiwgZilcbiAgICAgIHdpdGhcbiAgICAgICAgICBFbmRfb2ZfaW5wdXQgLT5cbiAgICAgICAgICAgIGZpbiAoKTtcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgICAodHJ5IGZpbiAoKSB3aXRoIGZpbl9lIC0+IHJhaXNlIChGaW5hbGx5IChlLCBmaW5fZSkpKTtcbiAgICAgICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgIGZcblxuICBsZXQgc2VxX2Zyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxuICBsZXQgc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2ID9maW4gbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiB+ZmluIGxleGJ1ZlxuXG4gIHR5cGUganNvbl9saW5lID0gWyBgSnNvbiBvZiB0IHwgYEV4biBvZiBleG4gXVxuXG4gIGxldCBsaW5lc2VxX2Zyb21fY2hhbm5lbFxuICAgICAgP2J1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgP2ZuYW1lID9sbnVtOihsbnVtMCA9IDEpIGljID1cbiAgICBsZXQgYnVmID1cbiAgICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIChCdWZmZXIuY3JlYXRlIDI1NilcbiAgICAgICAgfCBTb21lIF8gLT4gYnVmXG4gICAgaW5cbiAgICBsZXQgcmVjIGYgbG51bSA9IGZ1biAoKSAtPlxuICAgICAgdHJ5XG4gICAgICAgIGxldCBsaW5lID0gaW5wdXRfbGluZSBpYyBpblxuICAgICAgICBTZXEuQ29ucyAoYEpzb24gKGZyb21fc3RyaW5nID9idWYgP2ZuYW1lIH5sbnVtIGxpbmUpLCBmIChsbnVtICsgMSkpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2ZpbGUgLT4gZmluICgpOyBTZXEuTmlsXG4gICAgICAgIHwgZSAtPiBTZXEuQ29ucyAoYEV4biBlLCBmIChsbnVtICsgMSkpXG4gICAgaW5cbiAgICBmIGxudW0wXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxpbmVzZXFfZnJvbV9jaGFubmVsID9idWYgfmZpbiA/Zm5hbWUgP2xudW0gaWNcblxuICBsZXQgcHJldHRpZnkgP3N0ZCBzID1cbiAgICBwcmV0dHlfdG9fc3RyaW5nID9zdGQgKGZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IGNvbXBhY3QgP3N0ZCBzID1cbiAgICB0b19zdHJpbmcgKGZyb21fc3RyaW5nIHMpXG5cblxuIyAzNDA4IFwibGliL3JlYWQubWxcIlxuIyA5NyBcInlvanNvbi5jcHBvLm1sXCJcbm1vZHVsZSBVdGlsID1cbnN0cnVjdFxuIyAxIFwidXRpbC5tbFwiXG5leGNlcHRpb24gVHlwZV9lcnJvciBvZiBzdHJpbmcgKiB0XG5cbmxldCB0eXBlb2YgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBfIC0+IFwib2JqZWN0XCJcbiAgfCBgQm9vbCBfIC0+IFwiYm9vbFwiXG4gIHwgYEZsb2F0IF8gLT4gXCJmbG9hdFwiXG4gIFxuIyAxMCBcInV0aWwubWxcIlxuICB8IGBMaXN0IF8gLT4gXCJhcnJheVwiXG4gIHwgYE51bGwgLT4gXCJudWxsXCJcbiAgfCBgU3RyaW5nIF8gLT4gXCJzdHJpbmdcIlxuICB8IGBJbnRsaXQgXyAtPiBcImludGxpdFwiXG4gIHwgYEZsb2F0bGl0IF8gLT4gXCJmbG9hdGxpdFwiXG4gIFxuIyAxNiBcInV0aWwubWxcIlxuICB8IGBTdHJpbmdsaXQgXyAtPiBcInN0cmluZ2xpdFwiXG4gIFxuIyAxOCBcInV0aWwubWxcIlxuICB8IGBUdXBsZSBfIC0+IFwidHVwbGVcIlxuICB8IGBWYXJpYW50IF8gLT4gXCJ2YXJpYW50XCJcblxubGV0IHR5cGVyciBtc2cganMgPSByYWlzZSAoVHlwZV9lcnJvciAobXNnIF4gdHlwZW9mIGpzLCBqcykpXG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nICogdFxuXG5sZXQgYXNzb2MgbmFtZSBvYmogPSB0cnkgTGlzdC5hc3NvYyBuYW1lIG9iaiB3aXRoIE5vdF9mb3VuZCAtPiBgTnVsbFxuXG5sZXQgbWVtYmVyIG5hbWUgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gYXNzb2MgbmFtZSBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IG1lbWJlciAnXCIgXiBuYW1lIF4gXCInIG9mIG5vbi1vYmplY3QgdHlwZSBcIikganNcblxubGV0IHJlYyBwYXRoIGwgb2JqID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gU29tZSBvYmpcbiAgfCBrZXkgOjogbCAtPiAoXG4gICAgICBtYXRjaCBvYmogd2l0aFxuICAgICAgfCBgQXNzb2MgYXNzb2MgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Mga2V5IGFzc29jIHdpdGhcbiAgICAgICAgICB8IG9iaiAtPiBwYXRoIGwgb2JqXG4gICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IGluZGV4IGkgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMganMgLT5cbiAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICBsZXQgd3JhcHBlZF9pbmRleCA9IGlmIGkgPCAwIHRoZW4gbGVuICsgaSBlbHNlIGkgaW5cbiAgICAgIGlmIHdyYXBwZWRfaW5kZXggPCAwIHx8IHdyYXBwZWRfaW5kZXggPj0gbGVuIHRoZW5cbiAgICAgICAgcmFpc2UgKFVuZGVmaW5lZCAoXCJJbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG91dCBvZiBib3VuZHNcIiwganMpKVxuICAgICAgZWxzZSBMaXN0Lm50aCBsIHdyYXBwZWRfaW5kZXhcbiAgfCBqcyAtPlxuICAgICAgdHlwZXJyIChcIkNhbid0IGdldCBpbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG9mIG5vbi1hcnJheSB0eXBlIFwiKSBqc1xuXG5sZXQgbWFwIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gYExpc3QgKExpc3QubWFwIGYgbClcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBtYXAgZnVuY3Rpb24gb3ZlciBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgdG9fYXNzb2MgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gb2JqXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgb2JqZWN0LCBnb3QgXCIganNcblxubGV0IHRvX29wdGlvbiBmID0gZnVuY3Rpb24gYE51bGwgLT4gTm9uZSB8IHggLT4gU29tZSAoZiB4KVxubGV0IHRvX2Jvb2wgPSBmdW5jdGlvbiBgQm9vbCBiIC0+IGIgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sLCBnb3QgXCIganNcblxubGV0IHRvX2Jvb2xfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgQm9vbCBiIC0+IFNvbWUgYlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyID0gZnVuY3Rpb25cbiAgXG4jIDc1IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlcl9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgODQgXCJ1dGlsLm1sXCJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvblxuICBcbiMgOTEgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdF9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgOTcgXCJ1dGlsLm1sXCJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICBcbiMgMTA0IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50LCBnb3QgXCIganNcblxubGV0IHRvX2ludF9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgMTEwIFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBgTGlzdCBsIC0+IGwgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBhcnJheSwgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICBcbiMgMTE5IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nLCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZ19vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgMTI1IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZyBvciBudWxsLCBnb3QgXCIganNcblxubGV0IGNvbnZlcnRfZWFjaCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIGYgbFxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IGNvbnZlcnQgZWFjaCBlbGVtZW50IG9mIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCByZWMgcmV2X2ZpbHRlcl9tYXAgZiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZXZfZmlsdGVyX21hcCBmIGFjYyB0bFxuICAgICAgfCBTb21lIHkgLT4gcmV2X2ZpbHRlcl9tYXAgZiAoeSA6OiBhY2MpIHRsKVxuXG5sZXQgZmlsdGVyX21hcCBmIGwgPSBMaXN0LnJldiAocmV2X2ZpbHRlcl9tYXAgZiBbXSBsKVxuXG5sZXQgcmVjIHJldl9mbGF0dGVuIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYExpc3QgbDIgLT4gcmV2X2ZsYXR0ZW4gKExpc3QucmV2X2FwcGVuZCBsMiBhY2MpIHRsXG4gICAgICB8IF8gLT4gcmV2X2ZsYXR0ZW4gYWNjIHRsKVxuXG5sZXQgZmxhdHRlbiBsID0gTGlzdC5yZXYgKHJldl9mbGF0dGVuIFtdIGwpXG5cbmxldCBmaWx0ZXJfaW5kZXggaSBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgTGlzdCBsIC0+ICggdHJ5IFNvbWUgKExpc3QubnRoIGwgaSkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9saXN0IGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgTGlzdCBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxuXG5sZXQgZmlsdGVyX21lbWJlciBrIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBBc3NvYyBsIC0+ICggdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBsKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2Fzc29jIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQXNzb2MgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfYm9vbCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEJvb2wgeCAtPiBTb21lIHggfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfaW50IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICAgIGZ1bmN0aW9uXG4gICAgICBcbiMgMTc0IFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICAgICkgbFxuXG5sZXQgZmlsdGVyX2Zsb2F0IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgXG4jIDE4MyBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfbnVtYmVyIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgXG4jIDE5NSBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfc3RyaW5nIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgXG4jIDIwNCBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBrZXlzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKGtleSwgXykgLT4ga2V5KVxuXG5sZXQgdmFsdWVzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKF8sIHZhbHVlKSAtPiB2YWx1ZSlcblxubGV0IGNvbWJpbmUgKGZpcnN0IDogdCkgKHNlY29uZCA6IHQpID1cbiAgbWF0Y2ggKGZpcnN0LCBzZWNvbmQpIHdpdGhcbiAgfCBgQXNzb2MgYSwgYEFzc29jIGIgLT4gKGBBc3NvYyAoYSBAIGIpIDogdClcbiAgfCBhLCBiIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRXhwZWN0ZWQgdHdvIG9iamVjdHMsIGNoZWNrIGlucHV0c1wiKVxuIyAxMDAgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcbiMgMTA2IFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG4iLCJcbnR5cGUgJ2Egb2NhbWxfYXJyYXkgPSAnYSBhcnJheVxuXG5sZXQgaW5wdXRfZmlsZSBmbmFtZSByZWFkID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZm5hbWUgaW5cbiAgdHJ5XG4gICAgbGV0IHggPSByZWFkIGljIGluXG4gICAgY2xvc2VfaW4gaWM7XG4gICAgeFxuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICByYWlzZSBlXG5cbmxldCBvdXRwdXRfZmlsZSBmbmFtZSB3cml0ZSA9XG4gIGxldCBvYyA9IG9wZW5fb3V0X2JpbiBmbmFtZSBpblxuICB0cnlcbiAgICB3cml0ZSBvYztcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubW9kdWxlIEJpbmlvdSA9XG5zdHJ1Y3RcbiAgdHlwZSAnYSByZWFkZXIgPSBCaV9pbmJ1Zi50IC0+ICdhXG4gIHR5cGUgJ2Egd3JpdGVyID0gQmlfb3V0YnVmLnQgLT4gJ2EgLT4gdW5pdFxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2xlbiA/KHNocmxlbiA9IDApIHJlYWQgaWMgPVxuICAgIGxldCBpYiA9IEJpX2luYnVmLmZyb21fY2hhbm5lbCA/bGVuIH5zaHJsZW4gaWMgaW5cbiAgICByZWFkIGliXG5cbiAgbGV0IGZyb21fZmlsZSA/bGVuID8oc2hybGVuID0gMCkgcmVhZCBmbmFtZSA9XG4gICAgaW5wdXRfZmlsZSBmbmFtZSAoZnVuIGljIC0+IGZyb21fY2hhbm5lbCA/bGVuIH5zaHJsZW4gcmVhZCBpYylcblxuICBsZXQgdG9fY2hhbm5lbCA/bGVuID8oc2hybGVuID0gMCkgd3JpdGUgb2MgeCA9XG4gICAgbGV0IG9iID0gQmlfb3V0YnVmLmNyZWF0ZV9jaGFubmVsX3dyaXRlciA/bGVuIH5zaHJsZW4gb2MgaW5cbiAgICB3cml0ZSBvYiB4O1xuICAgIEJpX291dGJ1Zi5mbHVzaF9jaGFubmVsX3dyaXRlciBvYlxuXG4gIGxldCB0b19maWxlID9sZW4gPyhzaHJsZW4gPSAwKSB3cml0ZSBmbmFtZSB4ID1cbiAgICBvdXRwdXRfZmlsZSBmbmFtZSAoZnVuIG9jIC0+IHRvX2NoYW5uZWwgP2xlbiB+c2hybGVuIHdyaXRlIG9jIHgpXG5lbmRcblxubW9kdWxlIEpzb24gPVxuc3RydWN0XG4gIHR5cGUgJ2EgcmVhZGVyID0gWW9qc29uLlNhZmUubGV4ZXJfc3RhdGUgLT4gTGV4aW5nLmxleGJ1ZiAtPiAnYVxuICB0eXBlICdhIHdyaXRlciA9IEJ1ZmZlci50IC0+ICdhIC0+IHVuaXRcblxuICBsZXQgZmluaXNoIGxzIGxleGJ1ZiA9XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBscyBsZXhidWY7XG4gICAgaWYgbm90IChZb2pzb24uU2FmZS5yZWFkX2VvZiBsZXhidWYpIHRoZW5cbiAgICAgIFlvanNvbi5qc29uX2Vycm9yIFwiSnVuayBhZnRlciBlbmQgb2YgSlNPTiB2YWx1ZVwiXG5cbiAgbGV0IGZyb21fbGV4YnVmID8oc3RyZWFtID0gZmFsc2UpIHJlYWQgbHMgbGV4YnVmID1cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIGxzIGxleGJ1ZjtcblxuICAgIGxldCB4ID1cbiAgICAgIGlmIFlvanNvbi5TYWZlLnJlYWRfZW9mIGxleGJ1ZiB0aGVuXG4gICAgICAgIHJhaXNlIFlvanNvbi5FbmRfb2ZfaW5wdXRcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZCBscyBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggbHMgbGV4YnVmO1xuXG4gICAgeFxuXG4gIGxldCBmcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSByZWFkIHMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcyBpblxuICAgIGxldCBscyA9IFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBmcm9tX2xleGJ1ZiByZWFkIGxzIGxleGJ1ZlxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gcmVhZCBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgbHMgPSBZb2pzb24uU2FmZS5pbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgZnJvbV9sZXhidWYgcmVhZCBscyBsZXhidWZcblxuICBsZXQgZnJvbV9maWxlID9idWYgP2ZuYW1lOnNyYyA/bG51bSByZWFkIGZuYW1lID1cbiAgICBsZXQgZm5hbWUwID1cbiAgICAgIG1hdGNoIHNyYyB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBmbmFtZVxuICAgICAgICB8IFNvbWUgcyAtPiBzXG4gICAgaW5cbiAgICBpbnB1dF9maWxlIGZuYW1lIChmdW4gaWMgLT4gZnJvbV9jaGFubmVsID9idWYgfmZuYW1lOmZuYW1lMCA/bG51bSByZWFkIGljKVxuXG4gICgqIHNlcV91bmZvbGQgaXMgU2VxLnVuZm9sZCwgbmVlZGVkIGZvciBvY2FtbCA8IDQuMTEgKilcbiAgbGV0IHJlYyBzZXFfdW5mb2xkIGYgdSAoKSA9XG4gICAgbWF0Y2ggZiB1IHdpdGhcbiAgICB8IE5vbmUgLT4gU2VxLk5pbFxuICAgIHwgU29tZSAoeCwgdScpIC0+IFNlcS5Db25zICh4LCBzZXFfdW5mb2xkIGYgdScpXG5cbiAgbGV0IHNlcV9mcm9tX2xleGJ1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgcmVhZCBscyBsZXhidWYgPVxuICAgIGxldCBmICgpID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgdiA9IGZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSByZWFkIGxzIGxleGJ1ZiBpblxuICAgICAgICBTb21lICh2LCAoKSlcbiAgICAgIHdpdGhcbiAgICAgICAgICBZb2pzb24uRW5kX29mX2lucHV0IC0+XG4gICAgICAgICAgICBmaW4gKCk7XG4gICAgICAgICAgICBOb25lXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgICAgKHRyeSBmaW4gKCkgd2l0aCBfIC0+ICgpKTtcbiAgICAgICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgICgqIFNlcS51bmZvbGQgaXMgb25seSBhdmFpbGFibGUgZnJvbSBvY2FtbCA0LjExICopXG4gICAgc2VxX3VuZm9sZCBmICgpXG5cbiAgbGV0IHNlcV9mcm9tX3N0cmluZyA/YnVmID9maW4gP2ZuYW1lID9sbnVtIHJlYWQgaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgaWMgaW5cbiAgICBsZXQgbHMgPSBZb2pzb24uU2FmZS5pbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmID9maW4gcmVhZCBscyBsZXhidWZcblxuICBsZXQgc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIHJlYWQgaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IGxzID0gWW9qc29uLlNhZmUuaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiA/ZmluIHJlYWQgbHMgbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2ZpbGUgP2J1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgP2ZuYW1lOnNyYyA/bG51bSByZWFkIGZuYW1lID1cbiAgICBsZXQgZm5hbWUwID1cbiAgICAgIG1hdGNoIHNyYyB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBmbmFtZVxuICAgICAgICB8IFNvbWUgcyAtPiBzXG4gICAgaW5cbiAgICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmbmFtZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbl9ub2VyciBpYzsgZmluICgpIGluXG4gICAgc2VxX2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gfmZuYW1lOmZuYW1lMCA/bG51bSByZWFkIGljXG5cbiAgbGV0IGxpc3RfZnJvbV9zdHJpbmcgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSByZWFkIGljID1cbiAgICBsZXQgc2VxID0gc2VxX2Zyb21fc3RyaW5nID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gcmVhZCBpYyBpblxuICAgIExpc3Qub2Zfc2VxIHNlcVxuXG4gIGxldCBsaXN0X2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIHJlYWQgaWMgPVxuICAgIGxldCBzZXEgPSBzZXFfZnJvbV9jaGFubmVsID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gcmVhZCBpYyBpblxuICAgIExpc3Qub2Zfc2VxIHNlcVxuXG4gIGxldCBsaXN0X2Zyb21fZmlsZSA/YnVmID9mbmFtZTpzcmMgP2xudW0gcmVhZCBmbmFtZSA9XG4gICAgbGV0IGZuYW1lMCA9XG4gICAgICBtYXRjaCBzcmMgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gZm5hbWVcbiAgICAgICAgfCBTb21lIHMgLT4gc1xuICAgIGluXG4gICAgbGV0IGljID0gb3Blbl9pbl9iaW4gZm5hbWUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW5fbm9lcnIgaWMgaW5cbiAgICBsaXN0X2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gfmZuYW1lOmZuYW1lMCA/bG51bSByZWFkIGljXG5cbiAgbGV0IHRvX3N0cmluZyA/KGxlbiA9IDEwMjQpIHdyaXRlIHggPVxuICAgIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgd3JpdGUgb2IgeDtcbiAgICBCdWZmZXIuY29udGVudHMgb2JcblxuICBsZXQgdG9fY2hhbm5lbCA/KGxlbiA9IDEwMjQpIHdyaXRlIG9jIHggPVxuICAgIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgd3JpdGUgb2IgeDtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYlxuXG4gIGxldCB0b19maWxlID9sZW4gd3JpdGUgZm5hbWUgeCA9XG4gICAgb3V0cHV0X2ZpbGUgZm5hbWUgKGZ1biBvYyAtPiB0b19jaGFubmVsID9sZW4gd3JpdGUgb2MgeClcblxuICBsZXQgc2VxX3RvX3N0cmluZyA/KGxlbiA9IDEwMjQpID8obGYgPSBcIlxcblwiKSB3cml0ZSBzZXEgPVxuICAgIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgU2VxLml0ZXIgKGZ1biB4IC0+IHdyaXRlIG9iIHg7IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIGxmKSBzZXE7XG4gICAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbiAgbGV0IHNlcV90b19jaGFubmVsID8obGVuID0gMTAyNCkgPyhsZiA9IFwiXFxuXCIpIHdyaXRlIG9jIHNlcSA9XG4gICAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBTZXEuaXRlciAoZnVuIHggLT4gd3JpdGUgb2IgeDsgQnVmZmVyLmFkZF9zdHJpbmcgb2IgbGYpIHNlcTtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYlxuXG4gIGxldCBzZXFfdG9fZmlsZSA/bGVuID9sZiB3cml0ZSBmbmFtZSBzZXEgPVxuICAgIG91dHB1dF9maWxlIGZuYW1lIChmdW4gb2MgLT4gc2VxX3RvX2NoYW5uZWwgP2xlbiA/bGYgd3JpdGUgb2Mgc2VxKVxuXG4gIGxldCBsaXN0X3RvX3N0cmluZyA/bGVuID9sZiB3cml0ZSBsID1cbiAgICBzZXFfdG9fc3RyaW5nID9sZW4gP2xmIHdyaXRlIChMaXN0LnRvX3NlcSBsKVxuXG4gIGxldCBsaXN0X3RvX2NoYW5uZWwgP2xlbiA/bGYgd3JpdGUgb2MgbCA9XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiA/bGYgd3JpdGUgb2MgKExpc3QudG9fc2VxIGwpXG5cbiAgbGV0IGxpc3RfdG9fZmlsZSA/bGVuID9sZiB3cml0ZSBmbmFtZSAgbCA9XG4gICAgc2VxX3RvX2ZpbGUgP2xlbiA/bGYgd3JpdGUgZm5hbWUgKExpc3QudG9fc2VxIGwpXG5cbiAgbGV0IHByZXNldF91bmtub3duX2ZpZWxkX2hhbmRsZXIgbG9jIG5hbWUgPVxuICAgIGxldCBtc2cgPVxuICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJGb3VuZCB1bmtub3duIEpTT04gZmllbGQgJXMgd2hpbGUgZXhwZWN0aW5nIHR5cGUgZGVmaW5lZCBhdDogJXNcIlxuICAgICAgICBuYW1lIGxvY1xuICAgIGluXG4gICAgZmFpbHdpdGggbXNnXG5cbiAgbGV0IHVua25vd25fZmllbGRfaGFuZGxlciA9IHJlZiBwcmVzZXRfdW5rbm93bl9maWVsZF9oYW5kbGVyXG5lbmRcblxubW9kdWxlIFZhbGlkYXRpb24gPVxuc3RydWN0XG4gIHR5cGUgcGF0aF9lbGVtID0gWyBgRmllbGQgb2Ygc3RyaW5nIHwgYEluZGV4IG9mIGludCBdXG4gIHR5cGUgcGF0aCA9IHBhdGhfZWxlbSBsaXN0XG5cbiAgbGV0IHN0cmluZ19vZl9wYXRoIGwgPVxuICAgIFN0cmluZy5jb25jYXQgXCJcIiAoXG4gICAgICBMaXN0LnJldl9tYXAgKFxuICAgICAgICBmdW5jdGlvblxuICAgICAgICAgIHwgYEZpZWxkIHMgLT4gXCIuXCIgXiBzXG4gICAgICAgICAgfCBgSW5kZXggbiAtPiBcIltcIiBeIHN0cmluZ19vZl9pbnQgbiBeIFwiXVwiXG4gICAgICApIGxcbiAgICApXG5cbiAgdHlwZSBlcnJvciA9IHtcbiAgICBlcnJvcl9wYXRoIDogcGF0aDtcbiAgICBlcnJvcl9tc2cgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGVycm9yID9tc2cgcGF0aCA9IHtcbiAgICBlcnJvcl9wYXRoID0gcGF0aDtcbiAgICBlcnJvcl9tc2cgPSBtc2c7XG4gIH1cblxuICBsZXQgc3RyaW5nX29mX2Vycm9yIHggPVxuICAgIGxldCBwYXRoID0gc3RyaW5nX29mX3BhdGggeC5lcnJvcl9wYXRoIGluXG4gICAgbWF0Y2ggeC5lcnJvcl9tc2cgd2l0aFxuICAgICAgICBOb25lIC0+XG4gICAgICAgICAgXCJWYWxpZGF0aW9uIGVycm9yOyBwYXRoID0gPHJvb3Q+XCIgXiBwYXRoXG4gICAgICB8IFNvbWUgbXNnIC0+XG4gICAgICAgICAgUHJpbnRmLnNwcmludGYgXCJWYWxpZGF0aW9uIGVycm9yOiAlczsgcGF0aCA9IDxyb290PiVzXCIgbXNnIHBhdGhcbmVuZFxuIiwibGV0IHZhbGlkYXRlX2xpc3QgZiBwYXRoIGwgPVxuICBsZXQgcmVjIGxvb3AgZiBwYXRoIGkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBzdWJwYXRoID0gYEluZGV4IGkgOjogcGF0aCBpblxuICAgICAgICBtYXRjaCBmIHN1YnBhdGggeCB3aXRoXG4gICAgICAgICAgICBOb25lIC0+IGxvb3AgZiBwYXRoIChpKzEpIGxcbiAgICAgICAgICB8IGVyciAtPiBlcnJcbiAgaW5cbiAgbG9vcCBmIHBhdGggMCBsXG5cbmxldCB2YWxpZGF0ZV9hcnJheSBmIHBhdGggYSA9XG4gIGxldCByZWMgbG9vcCBmIHBhdGggYSBsZW4gaSA9XG4gICAgaWYgaSA+PSBsZW4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiAoYEluZGV4IGkgOjogcGF0aCkgYS4oaSkgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gbG9vcCBmIHBhdGggYSBsZW4gKGkrMSlcbiAgICAgICAgfCBlcnIgLT4gZXJyXG4gIGluXG4gIGxvb3AgZiBwYXRoIGEgKEFycmF5Lmxlbmd0aCBhKSAwXG5cbmxldCB2YWxpZGF0ZV9vcHRpb24gZiBwYXRoID0gZnVuY3Rpb25cbiAgICBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHggLT4gZiBwYXRoIHhcbiIsIigqXG4gIFJ1bnRpbWUgbGlicmFyeSBmb3IgSlNPTlxuKilcblxub3BlbiBQcmludGZcblxudHlwZSAnYSB3cml0ZSA9IEJ1ZmZlci50IC0+ICdhIC0+IHVuaXRcblxuZXhjZXB0aW9uIEVycm9yIG9mIHN0cmluZ1xuXG4oKlxuICBFcnJvciBtZXNzYWdlc1xuKilcbmxldCBlcnJvciBzID0gcmFpc2UgKEVycm9yIHMpXG5cbmxldCBlcnJvcl93aXRoX2xpbmUgcCBzID1cbiAgbGV0IHMyID1cbiAgICBtYXRjaCBwLllvanNvbi5MZXhlcl9zdGF0ZS5mbmFtZSB3aXRoXG4gICAgICBTb21lIGYgLT4gc3ByaW50ZiBcIkZpbGUgJXMsIGxpbmUgJWk6XFxuJXNcIiBmIHAuWW9qc29uLkxleGVyX3N0YXRlLmxudW0gc1xuICAgIHwgTm9uZSAtPiBzcHJpbnRmIFwiTGluZSAlaTpcXG4lc1wiIHAuWW9qc29uLkxleGVyX3N0YXRlLmxudW0gc1xuICBpblxuICByYWlzZSAoRXJyb3IgczIpXG5cblxubGV0IGxpc3RfaXRlciBmIHNlcCB4IGwgPVxuICBsZXQgcmVjIGF1eCBmIHNlcCB4ID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+ICgpXG4gICAgfCB5IDo6IGwgLT5cbiAgICAgICAgc2VwIHg7XG4gICAgICAgIGYgeCB5O1xuICAgICAgICBhdXggZiBzZXAgeCBsXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICAgICAgW10gLT4gKClcbiAgICB8IHkgOjogbCAtPlxuICAgICAgICBmIHggeTtcbiAgICAgICAgYXV4IGYgc2VwIHggbFxuXG5sZXQgYXJyYXlfaXRlciBmIHNlcCB4IGEgPVxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGlmIG4gPiAwIHRoZW4gKFxuICAgIGYgeCAoQXJyYXkudW5zYWZlX2dldCBhIDApO1xuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgc2VwIHg7XG4gICAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgYSBpKVxuICAgIGRvbmVcbiAgKVxuXG5sZXQgd3JpdGVfY29tbWEgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCB3cml0ZV9saXN0IHdyaXRlX2l0ZW0gb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGxpc3RfaXRlciB3cml0ZV9pdGVtIHdyaXRlX2NvbW1hIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IHdyaXRlX2FycmF5IHdyaXRlX2l0ZW0gb2IgYSA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGFycmF5X2l0ZXIgd3JpdGVfaXRlbSB3cml0ZV9jb21tYSBvYiBhO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCB3cml0ZV9hc3NvY19saXN0IHdyaXRlX2tleSB3cml0ZV9pdGVtIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBsaXN0X2l0ZXIgKFxuICAgIGZ1biBvYiAoaywgdikgLT5cbiAgICAgIHdyaXRlX2tleSBvYiBrO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICAgIHdyaXRlX2l0ZW0gb2IgdlxuICApIHdyaXRlX2NvbW1hIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHdyaXRlX2Fzc29jX2FycmF5IHdyaXRlX2tleSB3cml0ZV9pdGVtIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBhcnJheV9pdGVyIChcbiAgICBmdW4gb2IgKGssIHYpIC0+XG4gICAgICB3cml0ZV9rZXkgb2IgaztcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICB3cml0ZV9pdGVtIG9iIHZcbiAgKSB3cml0ZV9jb21tYSBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cblxubGV0IHdyaXRlX29wdGlvbiB3cml0ZV9pdGVtIG9iID0gZnVuY3Rpb25cbiAgICBOb25lIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiPFxcXCJOb25lXFxcIj5cIlxuICB8IFNvbWUgeCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI8XFxcIlNvbWVcXFwiOlwiO1xuICAgICAgd3JpdGVfaXRlbSBvYiB4O1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI+XCJcblxubGV0IHdyaXRlX3N0ZF9vcHRpb24gd3JpdGVfaXRlbSBvYiA9IGZ1bmN0aW9uXG4gICAgTm9uZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJOb25lXFxcIlwiXG4gIHwgU29tZSB4IC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU29tZVxcXCIsXCI7XG4gICAgICB3cml0ZV9pdGVtIG9iIHg7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIl1cIlxuXG5sZXQgd3JpdGVfbnVsbGFibGUgd3JpdGVfaXRlbSBvYiA9IGZ1bmN0aW9uXG4gICAgTm9uZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuICB8IFNvbWUgeCAtPiB3cml0ZV9pdGVtIG9iIHhcblxubGV0IHdyaXRlX2ludF9hc19zdHJpbmcgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICBZb2pzb24uU2FmZS53cml0ZV9pbnQgb2IgeDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IHdyaXRlX2ludDggb2IgeCA9XG4gIFlvanNvbi5TYWZlLndyaXRlX2ludCBvYiAoaW50X29mX2NoYXIgeClcblxubGV0IHdyaXRlX2ludDhfYXNfc3RyaW5nIG9iIHggPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfaW50OCBvYiB4O1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQgd3JpdGVfaW50MzIgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChJbnQzMi50b19zdHJpbmcgeClcblxubGV0IHdyaXRlX2ludDMyX2FzX3N0cmluZyBvYiB4ID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX2ludDMyIG9iIHg7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCB3cml0ZV9pbnQ2NCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKEludDY0LnRvX3N0cmluZyB4KVxuXG5sZXQgd3JpdGVfaW50NjRfYXNfc3RyaW5nIG9iIHggPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfaW50NjQgb2IgeDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IG1pbl9mbG9hdCA9IGZsb2F0IG1pbl9pbnRcbmxldCBtYXhfZmxvYXQgPSBmbG9hdCBtYXhfaW50XG5cbmxldCB3cml0ZV9mbG9hdF9hc19pbnQgb2IgeCA9XG4gIGlmIHggPj0gbWluX2Zsb2F0ICYmIHggPD0gbWF4X2Zsb2F0IHRoZW5cbiAgICBZb2pzb24uU2FmZS53cml0ZV9pbnQgb2JcbiAgICAgIChpbnRfb2ZfZmxvYXQgKGlmIHggPCAwLiB0aGVuIHggLS4gMC41IGVsc2UgeCArLiAwLjUpKVxuICBlbHNlXG4gICAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgICAgIEZQX25vcm1hbFxuICAgICAgfCBGUF9zdWJub3JtYWxcbiAgICAgIHwgRlBfemVybyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiAoUHJpbnRmLnNwcmludGYgXCIlLjBmXCIgeClcbiAgICAgIHwgRlBfaW5maW5pdGUgLT4gZXJyb3IgXCJDYW5ub3QgY29udmVydCBpbmYgb3IgLWluZiBpbnRvIGEgSlNPTiBpbnRcIlxuICAgICAgfCBGUF9uYW4gLT4gZXJyb3IgXCJDYW5ub3QgY29udmVydCBOYU4gaW50byBhIEpTT04gaW50XCJcblxubGV0IHdyaXRlX2Zsb2F0X2FzX2ludF9zdHJpbmcgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9mbG9hdF9hc19pbnQgb2IgeDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxudHlwZSAnYSByZWFkID0gWW9qc29uLmxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gJ2FcblxubGV0IHJlYWRfbnVsbCBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX251bGwgcCBsYlxuXG5sZXQgcmVhZF9ib29sIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfYm9vbCBwIGxiXG5cbmxldCByZWFkX2ludCBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2ludCBwIGxiXG5cbmxldCByZWFkX2ludDggcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9pbnQ4IHAgbGJcblxubGV0IHJlYWRfaW50MzIgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9pbnQzMiBwIGxiXG5cbmxldCByZWFkX2ludDY0IHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfaW50NjQgcCBsYlxuXG5sZXQgcmVhZF9udW1iZXIgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9udW1iZXIgcCBsYlxuXG5sZXQgcmVhZF9zdHJpbmcgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9zdHJpbmcgcCBsYlxuXG5sZXQgcmVhZF9qc29uIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfanNvbiBwIGxiXG5cbmxldCByZWFkX2xpc3QgcmVhZF9pdGVtIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfbGlzdCByZWFkX2l0ZW0gcCBsYlxuXG5sZXQgcmVhZF9hcnJheSByZWFkX2l0ZW0gcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9hcnJheSByZWFkX2l0ZW0gcCBsYlxuXG5sZXQgcmVhZF9hc3NvY19saXN0X3JldiByZWFkX2tleSByZWFkX2l0ZW0gcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgbGV0IHJlYWQgYWNjIGsgcCBsYiA9IChrLCByZWFkX2l0ZW0gcCBsYikgOjogYWNjIGluXG4gIFlvanNvbi5TYWZlLnJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfa2V5IHJlYWQgW10gcCBsYlxuXG5sZXQgcmVhZF9hc3NvY19saXN0IHJlYWRfa2V5IHJlYWRfaXRlbSBwIGxiID1cbiAgTGlzdC5yZXYgKHJlYWRfYXNzb2NfbGlzdF9yZXYgcmVhZF9rZXkgcmVhZF9pdGVtIHAgbGIpXG5cbmxldCBhcnJheV9vZl9yZXZfbGlzdCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAtPiBbfCB8XVxuICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgZm9yIGkgPSBsZW4gLSAyIGRvd250byAwIGRvXG4gICAgICAgICAgYS4oaSkgPC0gTGlzdC5oZCAhcjtcbiAgICAgICAgICByIDo9IExpc3QudGwgIXJcbiAgICAgICAgZG9uZTtcbiAgICAgICAgYVxuXG5sZXQgcmVhZF9hc3NvY19hcnJheSByZWFkX2tleSByZWFkX2l0ZW0gcCBsYiA9XG4gIGFycmF5X29mX3Jldl9saXN0IChyZWFkX2Fzc29jX2xpc3RfcmV2IHJlYWRfa2V5IHJlYWRfaXRlbSBwIGxiKVxuXG5sZXQgcmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2NvbG9uIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYlxuXG5sZXQgbWlzc2luZ190dXBsZV9maWVsZHMgcCBsZW4gcmVxX2ZpZWxkcyA9XG4gIGxldCBtaXNzaW5nID1cbiAgICBMaXN0LmZvbGRfcmlnaHQgKFxuICAgICAgZnVuIGkgYWNjIC0+IGlmIGkgPj0gbGVuIHRoZW4gaSA6OiBhY2MgZWxzZSBhY2NcbiAgICApIHJlcV9maWVsZHMgW11cbiAgaW5cbiAgZXJyb3Jfd2l0aF9saW5lIHAgKHNwcmludGYgXCJNaXNzaW5nIHR1cGxlIGZpZWxkJXMgJXNcIlxuICAgICAgICAgICAoaWYgTGlzdC5sZW5ndGggbWlzc2luZyA+IDEgdGhlbiBcInNcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgIChTdHJpbmcuY29uY2F0IFwiLCBcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2ludCBtaXNzaW5nKSkpXG5cbmxldCBtaXNzaW5nX2ZpZWxkIHAgZmllbGRfbmFtZSA9XG4gIGVycm9yX3dpdGhfbGluZSBwIChzcHJpbnRmIFwiTWlzc2luZyByZWNvcmQgZmllbGQgJXNcIiBmaWVsZF9uYW1lKVxuXG5sZXQgbWlzc2luZ19maWVsZHMgcCBiaXRfZmllbGRzIGZpZWxkX25hbWVzID1cbiAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICBmb3IgeiA9IEFycmF5Lmxlbmd0aCBmaWVsZF9uYW1lcyAtIDEgZG93bnRvIDAgZG9cbiAgICBsZXQgaSA9IHogLyAzMSBpblxuICAgIGxldCBqID0geiBtb2QgMzEgaW5cbiAgICBpZiBiaXRfZmllbGRzLihpKSBsYW5kICgxIGxzbCBqKSA9IDAgdGhlblxuICAgICAgYWNjIDo9IGZpZWxkX25hbWVzLih6KSA6OiAhYWNjXG4gIGRvbmU7XG4gIGVycm9yX3dpdGhfbGluZSBwIChzcHJpbnRmIFwiTWlzc2luZyByZWNvcmQgZmllbGQlcyAlc1wiXG4gICAgICAgICAgIChpZiBMaXN0Lmxlbmd0aCAhYWNjID4gMSB0aGVuIFwic1wiIGVsc2UgXCJcIilcbiAgICAgICAgICAgKFN0cmluZy5jb25jYXQgXCIsIFwiICFhY2MpKVxuXG5sZXQgaW52YWxpZF92YXJpYW50X3RhZyBwIHMgPVxuICBlcnJvcl93aXRoX2xpbmUgcCAoc3ByaW50ZiBcIlVuc3VwcG9ydGVkIHZhcmlhbnQgJVNcIiBzKVxuXG5sZXQgcmVhZF93aXRoX2FkYXB0ZXIgbm9ybWFsaXplIHJlYWRlciBwIGxiID1cbiAgbGV0IGFzdCA9IFlvanNvbi5TYWZlLnJlYWRfanNvbiBwIGxiIGluXG4gIGxldCBhc3QnID0gbm9ybWFsaXplIGFzdCBpblxuICBsZXQgcycgPSBZb2pzb24uU2FmZS50b19zdHJpbmcgYXN0JyBpblxuICBsZXQgbGInID0gTGV4aW5nLmZyb21fc3RyaW5nIHMnIGluXG4gIHJlYWRlciBwIGxiJ1xuXG5sZXQgd3JpdGVfd2l0aF9hZGFwdGVyIHJlc3RvcmUgd3JpdGVyIG9iIHggPVxuICBsZXQgb2JfdG1wID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIHdyaXRlciBvYl90bXAgeDtcbiAgbGV0IHNfdG1wID0gQnVmZmVyLmNvbnRlbnRzIG9iX3RtcCBpblxuICBsZXQgYXN0ID0gWW9qc29uLlNhZmUuZnJvbV9zdHJpbmcgc190bXAgaW5cbiAgbGV0IGFzdCcgPSByZXN0b3JlIGFzdCBpblxuICBZb2pzb24uU2FmZS50b19idWZmZXIgb2IgYXN0J1xuXG4oKlxuICBDaGVja2luZyBhdCBydW50aW1lIHRoYXQgb3VyIGFzc3VtcHRpb25zIG9uIHVuc3BlY2lmaWVkIGNvbXBpbGVyIGJlaGF2aW9yXG4gIHN0aWxsIGhvbGQuXG4gICBUT0RPOiB3aGF0IGFyZSB0aGVzZSBhc3N1bXB0aW9ucyBhbmQgd2hpY2ggY29tcG9uZW50IG1ha2VzIHRoZW0/XG4qKVxudHlwZSB0ID0ge1xuICBfYSA6IGludCBvcHRpb247XG4gIF9iIDogaW50O1xufVxuXG4oKiBUaGlzIG11c3QgYmUgYSB0ZXN0IGZvciB0aGUgdHlwZSBjaGVja2VyIHNpbmNlIHRoZSBmdW5jdGlvbiBpc24ndCB1c2VkXG4gICBhbnl3aGVyZS4gKilcbmxldCBfdGVzdCAoKSA9XG4gIHsgeyBfYSA9IE5vbmU7IF9iID0gQXJyYXkubGVuZ3RoIFN5cy5hcmd2IH0gd2l0aCBfYSA9IE5vbmUgfVxuIiwiW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuKCpcbiAgUnVudGltZSBsaWJyYXJ5XG4qKVxuXG5vcGVuIFByaW50ZlxuXG5leGNlcHRpb24gRXJyb3Igb2Ygc3RyaW5nXG5cbigqXG4gIEVycm9yIG1lc3NhZ2VzXG4qKVxubGV0IGVycm9yIHMgPSByYWlzZSAoRXJyb3IgcylcblxubGV0IHJlYWRfZXJyb3IgKCkgPVxuICBlcnJvciBcIlJlYWQgZXJyb3JcIlxuXG5sZXQgcmVhZF9lcnJvcl9hdCBpYiA9XG4gIGVycm9yIChzcHJpbnRmIFwiUmVhZCBlcnJvciAoJWkpXCIgaWIuQmlfaW5idWYuaV9wb3MpXG5cbmxldCB0YWdfZXJyb3IgdGFnIHMgPVxuICBlcnJvciAoc3ByaW50ZiBcIkZvdW5kIHdyb25nIHRhZyAlaSBmb3IgJXNcIiB0YWcgcylcblxubGV0IHVuc3VwcG9ydGVkX3ZhcmlhbnQgaCBoYXNfYXJnID1cbiAgZXJyb3IgKHNwcmludGYgXCJVbnN1cHBvcnRlZCB2YXJpYW50IChoYXNoPSVpLCBhcmc9JUIpXCIgaCBoYXNfYXJnKVxuXG5cbmxldCBtaXNzaW5nX3R1cGxlX2ZpZWxkcyBsZW4gcmVxX2ZpZWxkcyA9XG4gIGxldCBtaXNzaW5nID1cbiAgICBMaXN0LmZvbGRfcmlnaHQgKFxuICAgICAgZnVuIGkgYWNjIC0+IGlmIGkgPj0gbGVuIHRoZW4gaSA6OiBhY2MgZWxzZSBhY2NcbiAgICApIHJlcV9maWVsZHMgW11cbiAgaW5cbiAgZXJyb3IgKHNwcmludGYgXCJNaXNzaW5nIHR1cGxlIGZpZWxkJXMgJXNcIlxuICAgICAgICAgICAoaWYgTGlzdC5sZW5ndGggbWlzc2luZyA+IDEgdGhlbiBcInNcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgIChTdHJpbmcuY29uY2F0IFwiLCBcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2ludCBtaXNzaW5nKSkpXG5cblxubGV0IG1pc3NpbmdfZmllbGRzIGJpdF9maWVsZHMgZmllbGRfbmFtZXMgPVxuICBsZXQgYWNjID0gcmVmIFtdIGluXG4gIGZvciB6ID0gQXJyYXkubGVuZ3RoIGZpZWxkX25hbWVzIC0gMSBkb3dudG8gMCBkb1xuICAgIGxldCBpID0geiAvIDMxIGluXG4gICAgbGV0IGogPSB6IG1vZCAzMSBpblxuICAgIGlmIGJpdF9maWVsZHMuKGkpIGxhbmQgKDEgbHNsIGopID0gMCB0aGVuXG4gICAgICBhY2MgOj0gZmllbGRfbmFtZXMuKHopIDo6ICFhY2NcbiAgZG9uZTtcbiAgZXJyb3IgKHNwcmludGYgXCJNaXNzaW5nIHJlY29yZCBmaWVsZCVzICVzXCJcbiAgICAgICAgICAgKGlmIExpc3QubGVuZ3RoICFhY2MgPiAxIHRoZW4gXCJzXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCBcIiwgXCIgIWFjYykpXG5cblxuKCpcbiAgUmVhZGVyc1xuKilcblxubGV0IGdldF91bml0X3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby51bml0X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF91bml0XG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwidW5pdFwiXG5cbmxldCByZWFkX3VuaXQgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLnVuaXRfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX3VuaXQgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9ib29sX3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5ib29sX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9ib29sXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiYm9vbFwiXG5cbmxldCByZWFkX2Jvb2wgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmJvb2xfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2Jvb2wgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9pbnRfcmVhZGVyIHRhZyA9XG4gIG1hdGNoIHRhZyB3aXRoXG4gICAgICAxIC0+IEJpX2lvLnJlYWRfdW50YWdnZWRfaW50OFxuICAgIHwgMiAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDE2XG4gICAgfCAxNiAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX3V2aW50XG4gICAgfCAxNyAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX3N2aW50XG4gICAgfCBfIC0+IHRhZ19lcnJvciB0YWcgXCJpbnRcIlxuXG5sZXQgcmVhZF9pbnQgaWIgPVxuICBtYXRjaCBCaV9pby5yZWFkX3RhZyBpYiB3aXRoXG4gICAgICAxIC0+IEJpX2lvLnJlYWRfdW50YWdnZWRfaW50OCBpYlxuICAgIHwgMiAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDE2IGliXG4gICAgfCAxNiAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX3V2aW50IGliXG4gICAgfCAxNyAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX3N2aW50IGliXG4gICAgfCBfIC0+IHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9jaGFyX3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5pbnQ4X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9jaGFyXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiY2hhclwiXG5cbmxldCByZWFkX2NoYXIgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmludDhfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2NoYXIgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9pbnQxNl9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uaW50MTZfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDE2XG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiaW50MTZcIlxuXG5sZXQgcmVhZF9pbnQxNiBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uaW50MTZfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDE2IGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCBnZXRfaW50MzJfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLmludDMyX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQzMlxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImludDMyXCJcblxubGV0IHJlYWRfaW50MzIgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmludDMyX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQzMiBpYlxuICBlbHNlXG4gICAgcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgZ2V0X2ludDY0X3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5pbnQ2NF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfaW50NjRcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJpbnQ2NFwiXG5cbmxldCByZWFkX2ludDY0IGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5pbnQ2NF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfaW50NjQgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9mbG9hdDMyX3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5mbG9hdDMyX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9mbG9hdDMyXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiZmxvYXQzMlwiXG5cbmxldCBnZXRfZmxvYXQ2NF9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uZmxvYXQ2NF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfZmxvYXQ2NFxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImZsb2F0NjRcIlxuXG5sZXQgZ2V0X2Zsb2F0X3JlYWRlciA9IGdldF9mbG9hdDY0X3JlYWRlclxuXG5sZXQgcmVhZF9mbG9hdDMyIGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5mbG9hdDMyX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9mbG9hdDMyIGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCByZWFkX2Zsb2F0NjQgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmZsb2F0NjRfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2Zsb2F0NjQgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IHJlYWRfZmxvYXQgPSByZWFkX2Zsb2F0NjRcblxubGV0IGdldF9zdHJpbmdfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLnN0cmluZ190YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfc3RyaW5nXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwic3RyaW5nXCJcblxubGV0IHJlYWRfc3RyaW5nIGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5zdHJpbmdfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX3N0cmluZyBpYlxuICBlbHNlXG4gICAgcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgcmVhZF9hcnJheV92YWx1ZSBnZXRfcmVhZGVyIGliID1cbiAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBpZiBsZW4gPSAwIHRoZW4gW3wgfF1cbiAgZWxzZVxuICAgIGxldCByZWFkZXIgPSBnZXRfcmVhZGVyIChCaV9pby5yZWFkX3RhZyBpYikgaW5cbiAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIChyZWFkZXIgaWIpIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQgYSBpIChyZWFkZXIgaWIpXG4gICAgZG9uZTtcbiAgICBhXG5cbmxldCByZWFkX2xpc3RfdmFsdWUgZ2V0X3JlYWRlciBpYiA9XG4gIEFycmF5LnRvX2xpc3QgKHJlYWRfYXJyYXlfdmFsdWUgZ2V0X3JlYWRlciBpYilcblxubGV0IGdldF9hcnJheV9yZWFkZXIgZ2V0X3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5hcnJheV90YWcgdGhlblxuICAgIHJlYWRfYXJyYXlfdmFsdWUgZ2V0X3JlYWRlclxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImFycmF5XCJcblxubGV0IGdldF9saXN0X3JlYWRlciBnZXRfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLmFycmF5X3RhZyB0aGVuXG4gICAgZnVuIGliIC0+IEFycmF5LnRvX2xpc3QgKHJlYWRfYXJyYXlfdmFsdWUgZ2V0X3JlYWRlciBpYilcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJsaXN0XCJcblxubGV0IHJlYWRfYXJyYXkgZ2V0X3JlYWRlciBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uYXJyYXlfdGFnIHRoZW5cbiAgICByZWFkX2FycmF5X3ZhbHVlIGdldF9yZWFkZXIgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IHJlYWRfbGlzdCByZWFkIGliID1cbiAgQXJyYXkudG9fbGlzdCAocmVhZF9hcnJheSByZWFkIGliKVxuXG5cbigqXG4gIFdyaXRlcnNcbiopXG5cbmxldCB3cml0ZV90YWdnZWQgdGFnIHdyaXRlIGJ1ZiB4ID1cbiAgQmlfaW8ud3JpdGVfdGFnIGJ1ZiB0YWc7XG4gIHdyaXRlIGJ1ZiB4XG5cbmxldCB3cml0ZV91bnRhZ2dlZF9vcHRpb24gd3JpdGUgYnVmIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIE5vbmUgLT4gQmlfaW8ud3JpdGVfbnVtdGFnIGJ1ZiAwIGZhbHNlXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQmlfaW8ud3JpdGVfbnVtdGFnIGJ1ZiAwIHRydWU7XG4gICAgICAgIHdyaXRlIGJ1ZiB4XG5cbmxldCB3cml0ZV9vcHRpb24gd3JpdGUgYnVmIHggPVxuICBCaV9pby53cml0ZV90YWcgYnVmIEJpX2lvLm51bV92YXJpYW50X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfb3B0aW9uIHdyaXRlIGJ1ZiB4XG5cbmxldCBhcnJheV9pbml0MiBsZW4geCBmID1cbiAgaWYgbGVuID0gMCB0aGVuIFt8IHxdXG4gIGVsc2VcbiAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIChmIDAgeCkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgQXJyYXkudW5zYWZlX3NldCBhIGkgKGYgaSB4KVxuICAgIGRvbmU7XG4gICAgYVxuXG5sZXQgYXJyYXlfaW5pdDMgbGVuIHggeSBmID1cbiAgaWYgbGVuID0gMCB0aGVuIFt8IHxdXG4gIGVsc2VcbiAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIChmIDAgeCB5KSBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGEgaSAoZiBpIHggeSlcbiAgICBkb25lO1xuICAgIGFcblxubGV0IGFycmF5X2l0ZXIyIGYgeCBhID1cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgIGYgeCAoQXJyYXkudW5zYWZlX2dldCBhIGkpXG4gIGRvbmVcblxubGV0IGFycmF5X2l0ZXIzIGYgeCB5IGEgPVxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgZiB4IHkgKEFycmF5LnVuc2FmZV9nZXQgYSBpKVxuICBkb25lXG5cblxubGV0IHJlYyBsaXN0X2l0ZXIyIGYgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGYgeCB5O1xuICAgICAgbGlzdF9pdGVyMiBmIHggbFxuXG5sZXQgcmVjIGxpc3RfaXRlcjMgZiB4IHkgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeiA6OiBsIC0+XG4gICAgICBmIHggeSB6O1xuICAgICAgbGlzdF9pdGVyMyBmIHggeSBsXG5cblxubGV0IHdyaXRlX3VudGFnZ2VkX2FycmF5IGNlbGxfdGFnIHdyaXRlIGJ1ZiBhID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIEJpX3ZpbnQud3JpdGVfdXZpbnQgYnVmIGxlbjtcbiAgaWYgbGVuID4gMCB0aGVuIChcbiAgICBCaV9pby53cml0ZV90YWcgYnVmIGNlbGxfdGFnO1xuICAgIGFycmF5X2l0ZXIyIHdyaXRlIGJ1ZiBhXG4gIClcblxubGV0IHdyaXRlX2FycmF5IGNlbGxfdGFnIHdyaXRlIGJ1ZiBhID1cbiAgQmlfaW8ud3JpdGVfdGFnIGJ1ZiBCaV9pby5hcnJheV90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2FycmF5IGNlbGxfdGFnIHdyaXRlIGJ1ZiBhXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9saXN0IGNlbGxfdGFnIHdyaXRlIGJ1ZiBsID1cbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgQmlfdmludC53cml0ZV91dmludCBidWYgbGVuO1xuICBpZiBsZW4gPiAwIHRoZW4gKFxuICAgIEJpX2lvLndyaXRlX3RhZyBidWYgY2VsbF90YWc7XG4gICAgbGlzdF9pdGVyMiB3cml0ZSBidWYgbFxuICApXG5cbmxldCB3cml0ZV9saXN0IGNlbGxfdGFnIHdyaXRlIGJ1ZiBsID1cbiAgQmlfaW8ud3JpdGVfdGFnIGJ1ZiBCaV9pby5hcnJheV90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2xpc3QgY2VsbF90YWcgd3JpdGUgYnVmIGxcblxuKCpcbiAgc2hvcnRjdXQgZm9yIGdldHRpbmcgdGhlIHRhZyBvZiBhIHBvbHltb3JwaGljIHZhcmlhbnQgc2luY2VcbiAgYmluaW91IHVzZXMgdGhlIHNhbWUgcmVwcmVzZW50YXRpb25cbiAgKHVzZWZ1bG5lc3M/KVxuKilcbmxldCBnZXRfcG9seV90YWcgKHggOiBbPiBdKSA9XG4gIGxldCByID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmouaXNfYmxvY2sgciB0aGVuXG4gICAgKE9iai5vYmogKE9iai5maWVsZCByIDApIDogaW50KVxuICBlbHNlXG4gICAgKE9iai5vYmogciA6IGludClcblxuKCogV2Ugd2FudCBhbiBpZGVudGl0eSBmdW5jdGlvbiB0aGF0IGlzIG5vdCBpbmxpbmVkICopXG50eXBlIGlkZW50aXR5X3QgPSB7IG11dGFibGUgX2lkZW50aXR5IDogJ2EuICdhIC0+ICdhIH1cbmxldCBpZGVudGl0eV9yZWYgPSB7IF9pZGVudGl0eSA9IChmdW4geCAtPiB4KSB9XG5sZXQgaWRlbnRpdHkgeCA9IGlkZW50aXR5X3JlZi5faWRlbnRpdHkgeFxuXG4oKlxuICBDaGVja2luZyBhdCBydW50aW1lIHRoYXQgb3VyIGFzc3VtcHRpb25zIG9uIHVuc3BlY2lmaWVkIGNvbXBpbGVyIGJlaGF2aW9yXG4gIHN0aWxsIGhvbGQuXG4qKVxuXG50eXBlIHQgPSB7XG4gIF9hIDogaW50IG9wdGlvbjtcbiAgX2IgOiBpbnQ7XG59XG5cbmxldCBjcmVhdGUgKCkgPVxuICB7IHsgX2EgPSBOb25lOyBfYiA9IEFycmF5Lmxlbmd0aCBTeXMuYXJndiB9IHdpdGggX2EgPSBOb25lIH1cblxuKCpcbiAgIFRoaXMgaXMgYSBydW50aW1lIHRlc3QgdGhhdCBjaGVja3Mgd2hldGhlciBvdXIgYXNzdW1wdGlvbnMgYWJvdXRcbiAgIHRoZSBjb21waWxlciBzdGlsbCBob2xkLlxuXG4gICBXZSBnZXQgdGhlIGZvbGxvd2luZyB3YXJuaW5nIHdoZW4gdXNpbmcgYW4gT0NhbWwgY29tcGlsZXIgYnVpbHRcbiAgIHdpdGggdGhlIGZsYW1iZGEgb3B0aW1pemF0aW9uLiBUaGlzIGlzIHByb2JhYmx5IGEgZ29vZCB3YXJuaW5nXG4gICBhbmQgc2hvdWxkbid0IGJlIGlnbm9yZWQgaWYgdGhlIE9DYW1sL2JpbmlvdSBpcyB0byBiZSB1c2VkLlxuICAgVGhpcyB3b24ndCBhZmZlY3QgdGhlIE9DYW1sL0pTT04gYmFja2VuZC5cblxuICAgPiBXYXJuaW5nIDU5IFtmbGFtYmRhLWFzc2lnbm1lbnQtdG8tbm9uLW11dGFibGUtdmFsdWVdOiBBIHBvdGVudGlhbFxuICAgPiBhc3NpZ25tZW50IHRvIGEgbm9uLW11dGFibGUgdmFsdWUgd2FzIGRldGVjdGVkIGluIHRoaXMgc291cmNlIGZpbGUuXG4gICA+IFN1Y2ggYXNzaWdubWVudHMgbWF5IGdlbmVyYXRlIGluY29ycmVjdCBjb2RlIHdoZW4gdXNpbmcgRmxhbWJkYS5cbiopXG5sZXQgdGVzdCAoKSA9XG4gIGxldCByID0gY3JlYXRlICgpIGluXG4gIGxldCB2ID0gU29tZSAxNyBpblxuICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciByKSAwIChPYmoucmVwciB2KTtcbiAgbGV0IHNhZmVfciA9IGlkZW50aXR5IHIgaW5cbiAgKCogci5fYSBpcyBpbmxpbmVkIGJ5IG9jYW1sb3B0IGFuZCBlcXVhbHMgTm9uZVxuICAgICBiZWNhdXNlIHRoZSBmaWVsZCBpcyBzdXBwb3NlZCB0byBiZSBpbW11dGFibGUuICopXG4gIGFzc2VydCAoc2FmZV9yLl9hID0gdilcblxubGV0ICgpID0gdGVzdCAoKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuIiwiKCogSnNvbiBhZGFwdGVycy4gU2VlIC5tbGkuICopXG5cbmxldCBub3JtYWxpemVfdHlwZV9maWVsZCB0eXBlX2ZpZWxkX25hbWUgKHggOiBZb2pzb24uU2FmZS50KSA6IFlvanNvbi5TYWZlLnQgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgQXNzb2MgZmllbGRzIC0+XG4gICAgICAobWF0Y2ggTGlzdC5hc3NvYyB0eXBlX2ZpZWxkX25hbWUgZmllbGRzIHdpdGhcbiAgICAgICB8IGBTdHJpbmcgdHlwZV8gLT4gYExpc3QgWyBgU3RyaW5nIHR5cGVfOyB4IF1cbiAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4geFxuICAgICAgIHwgXyAtPiB4ICgqIG1hbGZvcm1lZCAqKVxuICAgICAgKVxuICB8IGBTdHJpbmcgdHlwZV8gYXMgeCAtPiB4XG4gIHwgbWFsZm9ybWVkIC0+IG1hbGZvcm1lZFxuXG5sZXQgcmVzdG9yZV90eXBlX2ZpZWxkIHR5cGVfZmllbGRfbmFtZSAoeCA6IFlvanNvbi5TYWZlLnQpIDogWW9qc29uLlNhZmUudCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBMaXN0IFsgYFN0cmluZyB0eXBlXzsgYEFzc29jIGZpZWxkcyBdIC0+XG4gICAgICBsZXQgZmllbGRzID1cbiAgICAgICAgKHR5cGVfZmllbGRfbmFtZSwgYFN0cmluZyB0eXBlXykgOjpcbiAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biAoaywgdikgLT4gayA8PiB0eXBlX2ZpZWxkX25hbWUpIGZpZWxkc1xuICAgICAgaW5cbiAgICAgIGBBc3NvYyBmaWVsZHNcbiAgfCBgU3RyaW5nIHR5cGVfIGFzIHggLT4geFxuICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB2YWwgbm9ybWFsaXplIDogWW9qc29uLlNhZmUudCAtPiBZb2pzb24uU2FmZS50XG4gIHZhbCByZXN0b3JlIDogWW9qc29uLlNhZmUudCAtPiBZb2pzb24uU2FmZS50XG5lbmRcblxubW9kdWxlIFR5cGVfZmllbGQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUGFyYW0gPSBzaWdcbiAgICB2YWwgdHlwZV9maWVsZF9uYW1lIDogc3RyaW5nXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChQYXJhbSA6IFBhcmFtKSA6IFMgPSBzdHJ1Y3RcbiAgICBsZXQgbm9ybWFsaXplID0gbm9ybWFsaXplX3R5cGVfZmllbGQgUGFyYW0udHlwZV9maWVsZF9uYW1lXG5cbiAgICBsZXQgcmVzdG9yZSA9IHJlc3RvcmVfdHlwZV9maWVsZCBQYXJhbS50eXBlX2ZpZWxkX25hbWVcbiAgZW5kXG5cbiAgbW9kdWxlIERlZmF1bHRfcGFyYW0gOiBQYXJhbSA9IHN0cnVjdFxuICAgIGxldCB0eXBlX2ZpZWxkX25hbWUgPSBcInR5cGVcIlxuICBlbmRcblxuICBpbmNsdWRlIE1ha2UgKERlZmF1bHRfcGFyYW0pXG5lbmRcblxubW9kdWxlIE9uZV9maWVsZCA9IHN0cnVjdFxuICBvcGVuIFlvanNvbi5TYWZlXG5cbiAgbGV0IG5vcm1hbGl6ZSAoeCA6IHQpIDogdCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgQXNzb2MgW25hbWUsIHZhbHVlXSAtPiBgTGlzdCBbYFN0cmluZyBuYW1lOyB2YWx1ZV1cbiAgICB8IGBTdHJpbmcgXyBhcyB4IC0+IHhcbiAgICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcblxuICBsZXQgcmVzdG9yZSAoeCA6IHQpIDogdCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTGlzdCBbYFN0cmluZyBuYW1lOyB2YWx1ZV0gLT4gYEFzc29jIFtuYW1lLCB2YWx1ZV1cbiAgICB8IGBTdHJpbmcgXyBhcyB4IC0+IHhcbiAgICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcbmVuZFxuXG5tb2R1bGUgVHlwZV9hbmRfdmFsdWVfZmllbGRzID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFBhcmFtID0gc2lnXG4gICAgdmFsIHR5cGVfZmllbGRfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCB2YWx1ZV9maWVsZF9uYW1lIDogc3RyaW5nXG4gICAgdmFsIGtub3duX3RhZ3MgOiAoc3RyaW5nIGxpc3QgKiBzdHJpbmcpIG9wdGlvblxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoUGFyYW0gOiBQYXJhbSkgOiBTID0gc3RydWN0XG4gICAgb3BlbiBZb2pzb24uU2FmZVxuICAgIG9wZW4gUGFyYW1cblxuICAgIGxldCBpc19rbm93bl90YWcgPVxuICAgICAgbWF0Y2gga25vd25fdGFncyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKGZ1biBfIC0+IHRydWUpXG4gICAgICB8IFNvbWUgKGwsIF8pIC0+XG4gICAgICAgICAgbGV0IHRibCA9IEhhc2h0YmwuY3JlYXRlICgyICogTGlzdC5sZW5ndGggbCkgaW5cbiAgICAgICAgICBMaXN0Lml0ZXIgKGZ1biB4IC0+IEhhc2h0YmwuYWRkIHRibCB4ICgpKSBsO1xuICAgICAgICAgIEhhc2h0YmwubWVtIHRibFxuXG4gICAgbGV0IGlzX2NhdGNoX2FsbF90YWcgPVxuICAgICAgbWF0Y2gga25vd25fdGFncyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKGZ1biBfIC0+IGZhbHNlKVxuICAgICAgfCBTb21lIChfLCBzKSAtPiAoKD0pIHMpXG5cbiAgICBsZXQgY2F0Y2hfYWxsX3RhZyAoKSA9XG4gICAgICBtYXRjaCBrbm93bl90YWdzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgU29tZSAoXywgcykgLT4gc1xuXG4gICAgbGV0IHdyYXBfdmFyaWFudCB0eXBlXyB2YWx1ZSA9XG4gICAgICBsZXQgdmFyaWFudCA9IGBMaXN0IFtgU3RyaW5nIHR5cGVfOyB2YWx1ZV0gaW5cbiAgICAgIGlmIGlzX2tub3duX3RhZyB0eXBlXyB0aGVuXG4gICAgICAgIHZhcmlhbnRcbiAgICAgIGVsc2VcbiAgICAgICAgYExpc3QgWyBgU3RyaW5nIChjYXRjaF9hbGxfdGFnICgpKTsgdmFyaWFudCBdXG5cbiAgICBsZXQgd3JhcF9lbnVtIHR5cGVfID1cbiAgICAgIGlmIGlzX2tub3duX3RhZyB0eXBlXyB0aGVuXG4gICAgICAgIGBTdHJpbmcgdHlwZV9cbiAgICAgIGVsc2VcbiAgICAgICAgYExpc3QgWyBgU3RyaW5nIChjYXRjaF9hbGxfdGFnICgpKTsgYE51bGwgXVxuXG4gICAgbGV0IG5vcm1hbGl6ZSAoeCA6IHQpIDogdCA9XG4gICAgICBsZXQgb3BlbiBZb2pzb24uU2FmZS5VdGlsIGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYEFzc29jIGZpZWxkcyAtPlxuICAgICAgICAgIGxldCB0eXBlXyA9IG1lbWJlciB0eXBlX2ZpZWxkX25hbWUgeCB8PiB0b19zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgZm91bmQgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICBsZXQgZmllbGRzID1cbiAgICAgICAgICAgIExpc3QubWFwIChmdW4gKChrLCB2KSBhcyBmaWVsZCkgLT5cbiAgICAgICAgICAgICAgaWYgayA9IHZhbHVlX2ZpZWxkX25hbWUgdGhlbiAoXG4gICAgICAgICAgICAgICAgZm91bmQgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAoaywgd3JhcF92YXJpYW50IHR5cGVfIHYpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGZpZWxkXG4gICAgICAgICAgICApIGZpZWxkc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZpZWxkcyA9XG4gICAgICAgICAgICBpZiAhZm91bmQgdGhlblxuICAgICAgICAgICAgICBmaWVsZHNcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKHZhbHVlX2ZpZWxkX25hbWUsIHdyYXBfZW51bSB0eXBlXykgOjogZmllbGRzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBgQXNzb2MgZmllbGRzXG4gICAgICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcblxuICAgIGxldCB1bndyYXBfdmFsdWUgKHggOiB0KSA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFN0cmluZyB0YWcgLT4gKHRhZywgTm9uZSlcbiAgICAgIHwgYExpc3QgW2BTdHJpbmcgdGFnOyB2XSAtPlxuICAgICAgICAgIGlmIGlzX2NhdGNoX2FsbF90YWcgdGFnIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2ggdiB3aXRoXG4gICAgICAgICAgICB8IGBMaXN0IFtgU3RyaW5nIHJlYWxfdGFnOyBgTnVsbF0gLT4gKHJlYWxfdGFnLCBOb25lKVxuICAgICAgICAgICAgfCBgTGlzdCBbYFN0cmluZyByZWFsX3RhZzsgcmVhbF92XSAtPiAocmVhbF90YWcsIFNvbWUgcmVhbF92KVxuICAgICAgICAgICAgfCBfIC0+IGZhaWx3aXRoIChcIk1hbGZvcm1lZCBqc29uIGZpZWxkIFwiIF4gdmFsdWVfZmllbGRfbmFtZSlcbiAgICAgICAgICApXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKHRhZywgU29tZSB2KVxuICAgICAgfCBtYWxmb3JtZWQgLT4gZmFpbHdpdGggKFwiTWFsZm9ybWVkIGpzb24gZmllbGQgXCIgXiB2YWx1ZV9maWVsZF9uYW1lKVxuXG4gICAgbGV0IHJlc3RvcmUgKHggOiB0KSA6IHQgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBBc3NvYyBmaWVsZHMgLT5cbiAgICAgICAgICBsZXQgdHlwZV8gPSByZWYgTm9uZSBpblxuICAgICAgICAgIGxldCBmaWVsZHMgPVxuICAgICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IChmdW4gKChrLCB0YWdnZWQpIGFzIGZpZWxkKSBhY2MgLT5cbiAgICAgICAgICAgICAgaWYgayA9IHZhbHVlX2ZpZWxkX25hbWUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IHRhZywgb3B0X3ZhbHVlID0gdW53cmFwX3ZhbHVlIHRhZ2dlZCBpblxuICAgICAgICAgICAgICAgIHR5cGVfIDo9IFNvbWUgdGFnO1xuICAgICAgICAgICAgICAgIG1hdGNoIG9wdF92YWx1ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgIHwgU29tZSB2IC0+ICh2YWx1ZV9maWVsZF9uYW1lLCB2KSA6OiBhY2NcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBlbHNlIGlmIGsgPSB0eXBlX2ZpZWxkX25hbWUgdGhlblxuICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZmllbGQgOjogYWNjXG4gICAgICAgICAgICAgICkgZmllbGRzIFtdXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmllbGRzID1cbiAgICAgICAgICAgIG1hdGNoICF0eXBlXyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmllbGRzXG4gICAgICAgICAgICB8IFNvbWUgdGFnIC0+ICh0eXBlX2ZpZWxkX25hbWUsIGBTdHJpbmcgdGFnKSA6OiBmaWVsZHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGBBc3NvYyBmaWVsZHNcbiAgICAgIHwgbWFsZm9ybWVkIC0+IG1hbGZvcm1lZFxuICBlbmRcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIEFycmF5IHdpdGggZHluYW1pYyBzaXplXG5cbiAgICBJdCB1c2VzIGltcGVyYXRpdmUgc3R5bGVzIHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgbW9kdWxlcyAqKVxuXG5tb2R1bGUgRHluQXJyYXkgPVxuZnVuY3RvclxuICAoRyA6IEdlbkFycmF5LkdlbkFycmF5KVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSB7XG4gICAgICAgIG11dGFibGUgYXJyYXk6ICdhIEcudDtcbiAgICAgICAgbXV0YWJsZSBjdXJyZW50X3NpemU6IGludDtcbiAgICAgICAgZGVmYXVsdDogaW50IC0+ICdhO1xuICAgICAgfVxuXG4gICAgICBsZXQgY3JlYXRlIG4gYSA9XG4gICAgICAgIHsgYXJyYXkgPSBHLmNyZWF0ZSBuIGE7IGN1cnJlbnRfc2l6ZSA9IG47IGRlZmF1bHQgPSAoZnVuIF8gLT4gYSkgfVxuXG4gICAgICBsZXQgbGVuZ3RoIGEgPSBhLmN1cnJlbnRfc2l6ZVxuXG4gICAgICBsZXQgZXhwYW5kIHQgPVxuICAgICAgICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gICAgICAgIGxldCBuJyA9IG1heCAobiArIDEpIChuICogMikgaW5cbiAgICAgICAgbGV0IGFycmF5JyA9IEcuaW5pdCBuJyB0LmRlZmF1bHQgaW5cbiAgICAgICAgbGV0ICgpID0gRy5ibGl0IHQuYXJyYXkgMCBhcnJheScgMCBuIGluXG4gICAgICAgIGxldCAoKSA9IHQuYXJyYXkgPC0gYXJyYXknIGluXG4gICAgICAgIHQuY3VycmVudF9zaXplIDwtIG4nXG5cbiAgICAgIGxldCBnZXQgYSBpID1cbiAgICAgICAgaWYgbGVuZ3RoIGEgPiBpIHRoZW5cbiAgICAgICAgICBHLmdldCBhLmFycmF5IGlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGEuZGVmYXVsdCBpXG5cbiAgICAgIGxldCByZWMgc2V0IGEgaSB2ID1cbiAgICAgICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgICAgICBpZiBuID4gaSB0aGVuXG4gICAgICAgICAgRy5zZXQgYS5hcnJheSBpIHZcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gZXhwYW5kIGEgaW5cbiAgICAgICAgICBzZXQgYSBpIHZcbiAgICAgICAgKVxuXG4gICAgICBsZXQgbWFrZSA9IGNyZWF0ZVxuICAgICAgbGV0IGluaXQgbiBmID0geyBhcnJheSA9IEcuaW5pdCBuIGY7IGN1cnJlbnRfc2l6ZSA9IG47IGRlZmF1bHQgPSBmIH1cblxuICAgICAgbGV0IGFwcGVuZCBhIGIgPVxuICAgICAgICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICAgICAgICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICAgICAgICBsZXQgYyA9IGxhICsgbGIgaW5cbiAgICAgICAgaW5pdCBjIChmdW4geCAtPlxuICAgICAgICAgICAgaWYgeCA8IGxhIHRoZW5cbiAgICAgICAgICAgICAgZ2V0IGEgeFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBnZXQgYiAoeCAtIGxhKSlcblxuICAgICAgbGV0IGNvbmNhdCBsID1cbiAgICAgICAgbGV0IGwgPSBMaXN0LmZpbHRlciAoZnVuIHggLT4gbGVuZ3RoIHggPiAwKSBsIGluXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRHluYW1pY0FycmF5LmNvbmNhdFwiKVxuICAgICAgICB8IHQgOjogXyAtPlxuICAgICAgICAgIGxldCBlbHQgPSBnZXQgdCAwIGluXG4gICAgICAgICAgbGV0IGMgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIHNvbCBhIC0+IHNvbCArIGxlbmd0aCBhKSAwIGwgaW5cbiAgICAgICAgICBsZXQgbSA9IGNyZWF0ZSBjIGVsdCBpblxuICAgICAgICAgIGxldCByZWMgYXV4IGsgbCA9XG4gICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgICAgICAgIGxldCBzID0gbGVuZ3RoIHQgaW5cbiAgICAgICAgICAgICAgbGV0IHJlYyBhdXgyIG9mZnNldCBrID1cbiAgICAgICAgICAgICAgICBpZiBvZmZzZXQgPSBzIHRoZW5cbiAgICAgICAgICAgICAgICAgIGF1eCBrIHFcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIHNldCBtIGsgKGdldCB0IG9mZnNldCk7XG4gICAgICAgICAgICAgICAgICBhdXgyIChvZmZzZXQgKyAxKSAoayArIDEpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhdXgyIDAga1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gYXV4IDAgbCBpblxuICAgICAgICAgIG1cblxuICAgICAgbGV0IHN1YiBhIHN0YXJ0IGxlbiA9XG4gICAgICAgIGxldCBzaXplID0gbGVuZ3RoIGEgaW5cbiAgICAgICAgaWYgc3RhcnQgPCAwIHx8IGxlbiA8IDAgfHwgc3RhcnQgKyBsZW4gPiBzaXplIHRoZW5cbiAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkR5bmFtaWNfYXJyYXkuc3ViXCIpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbml0IGxlbiAoZnVuIHggLT4gZ2V0IGEgKHggKyBzdGFydCkpXG5cbiAgICAgIGxldCBjb3B5IGEgPVxuICAgICAgICB7XG4gICAgICAgICAgYXJyYXkgPSBHLmNvcHkgYS5hcnJheTtcbiAgICAgICAgICBjdXJyZW50X3NpemUgPSBhLmN1cnJlbnRfc2l6ZTtcbiAgICAgICAgICBkZWZhdWx0ID0gYS5kZWZhdWx0O1xuICAgICAgICB9XG5cbiAgICAgIGxldCBmaWxsIGEgc3RhcnQgbGVuIHggPVxuICAgICAgICBsZXQgcmVjIGF1eCBrIGkgPVxuICAgICAgICAgIGlmIGsgPCBsZW4gdGhlbiAoXG4gICAgICAgICAgICBsZXQgKCkgPSBzZXQgYSBpIHggaW5cbiAgICAgICAgICAgIGF1eCAoayArIDEpIChpICsgMSlcbiAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzaXplID0gbGVuZ3RoIGEgaW5cbiAgICAgICAgaWYgc3RhcnQgPCAwIHx8IGxlbiA8IDAgfHwgc3RhcnQgKyBsZW4gPiBzaXplIHRoZW5cbiAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkR5bmFtaWNfYXJyYXkuZmlsbFwiKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYXV4IDAgc3RhcnRcblxuICAgICAgbGV0IG9mX2xpc3QgfmRlZmF1bHQgbCA9XG4gICAgICAgIHtcbiAgICAgICAgICBjdXJyZW50X3NpemUgPSBMaXN0Lmxlbmd0aCBsO1xuICAgICAgICAgIGFycmF5ID0gRy5vZl9saXN0IH5kZWZhdWx0IGw7XG4gICAgICAgICAgZGVmYXVsdCA9IChmdW4gXyAtPiBkZWZhdWx0KTtcbiAgICAgICAgfVxuXG4gICAgICBsZXQgaXRlciBmIGEgPSBHLml0ZXIgZiBhLmFycmF5XG4gICAgICBsZXQgaXRlcmkgZiBhID0gRy5pdGVyaSBmIGEuYXJyYXlcbiAgICAgIGxldCBmb2xkX2xlZnRpIGYgYiBhID0gRy5mb2xkX2xlZnRpIGYgYiBhLmFycmF5XG4gICAgICBsZXQgZm9sZF9yaWdodGkgZiBhIGIgPSBHLmZvbGRfcmlnaHRpIGYgYS5hcnJheSBiXG4gICAgICBsZXQgbWFwIGYgYSA9IGluaXQgKGxlbmd0aCBhKSAoZnVuIGkgLT4gZiAoZ2V0IGEgaSkpXG5cbiAgICAgIGxldCBibGl0IGExIG9mczEgYTIgb2ZzMiBsZW4gPVxuICAgICAgICBpZlxuICAgICAgICAgIGxlbiA8IDAgfHwgb2ZzMSA8IDBcbiAgICAgICAgICB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgICAgICAgfHwgb2ZzMiA8IDBcbiAgICAgICAgICB8fCBvZnMyID4gbGVuZ3RoIGEyIC0gbGVuXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyBcIkR5bmFtaWNBcnJheS5ibGl0XCJcbiAgICAgICAgZWxzZSBpZiBvZnMxIDwgb2ZzMiB0aGVuXG4gICAgICAgICAgKCogVG9wLWRvd24gY29weSAqKVxuICAgICAgICAgIGZvciBpID0gbGVuIC0gMSBkb3dudG8gMCBkb1xuICAgICAgICAgICAgRy5zZXQgYTIuYXJyYXkgKG9mczIgKyBpKSAoRy5nZXQgYTEuYXJyYXkgKG9mczEgKyBpKSlcbiAgICAgICAgICBkb25lXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoKiBCb3R0b20tdXAgY29weSAqKVxuICAgICAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgICBHLnNldCBhMi5hcnJheSAob2ZzMiArIGkpIChHLmdldCBhMS5hcnJheSAob2ZzMSArIGkpKVxuICAgICAgICAgIGRvbmVcblxuICAgICAgbGV0IHByaW50ID90cmFpbGluZyBwcl9zIHByX2EgZiBhID0gRy5wcmludCA/dHJhaWxpbmcgcHJfcyBwcl9hIGYgYS5hcnJheVxuICAgIGVuZCA6XG4gICAgICBHZW5BcnJheS5HZW5BcnJheSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IFVuYXJ5IG9mICdhIGFycmF5IHwgQmluYXJ5IG9mICdhIGFycmF5IGFycmF5XG5cbmxldCBtYXhfYXJyYXlfc2l6ZTEgPSBTeXMubWF4X2FycmF5X2xlbmd0aCAoKiA1ICopXG5cbmxldCBtYXhfYXJyYXlfc2l6ZTIgPVxuICBpZiBmbG9hdF9vZl9pbnQgbWF4X2FycmF5X3NpemUxID4gc3FydCAoZmxvYXRfb2ZfaW50IG1heF9pbnQpIHRoZW5cbiAgICBtYXhfaW50XG4gIGVsc2VcbiAgICBtYXhfYXJyYXlfc2l6ZTEgKiBtYXhfYXJyYXlfc2l6ZTFcblxubGV0IGV1Y2xpZGVlbiBwIHEgPSBwIC8gcSwgcCBtb2QgcVxuXG5sZXQgY3JlYXRlIG4gYSA9XG4gIGlmIG4gPD0gbWF4X2FycmF5X3NpemUxIHRoZW5cbiAgICBVbmFyeSAoQXJyYXkubWFrZSBuIGEpXG4gIGVsc2UgaWYgbiA+IG1heF9hcnJheV9zaXplMiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJHZW5BcnJheTogYXJyYXkgdG9vIGxhcmdlXCJcbiAgZWxzZSAoXG4gICAgbGV0IG0gPVxuICAgICAgbGV0IHAsIHEgPSBldWNsaWRlZW4gbiBtYXhfYXJyYXlfc2l6ZTEgaW5cbiAgICAgIGxldCBsID0gQXJyYXkubWFrZSBtYXhfYXJyYXlfc2l6ZTEgYSBpblxuICAgICAgbGV0IG0gPVxuICAgICAgICBBcnJheS5tYWtlXG4gICAgICAgICAgKGlmIHEgPSAwIHRoZW5cbiAgICAgICAgICAgICBwXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBwICsgMSlcbiAgICAgICAgICBsXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBhdXggayA9XG4gICAgICAgIGlmIGsgPSAtMSB0aGVuXG4gICAgICAgICAgbVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtLihrKSA8LSBBcnJheS5tYWtlIG1heF9hcnJheV9zaXplMSBhO1xuICAgICAgICAgIGF1eCAoayAtIDEpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBpZiBxID0gMCB0aGVuXG4gICAgICAgIGF1eCAocCAtIDEpXG4gICAgICBlbHNlIChcbiAgICAgICAgbS4ocCkgPC0gQXJyYXkubWFrZSBxIGE7XG4gICAgICAgIGF1eCAocCAtIDEpXG4gICAgICApXG4gICAgaW5cbiAgICBCaW5hcnkgbVxuICApXG5cbmxldCBsZW5ndGggPSBmdW5jdGlvblxuICB8IFVuYXJ5IGEgLT4gQXJyYXkubGVuZ3RoIGFcbiAgfCBCaW5hcnkgYSAtPlxuICAgIGxldCBwID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICBsZXQgcSA9IEFycmF5Lmxlbmd0aCAoQXJyYXkudW5zYWZlX2dldCBhIChwIC0gMSkpIGluXG4gICAgKChwIC0gMSkgKiBtYXhfYXJyYXlfc2l6ZTEpICsgcVxuXG5sZXQgZ2V0MiBhIHAgcSA9IEFycmF5LnVuc2FmZV9nZXQgKEFycmF5LnVuc2FmZV9nZXQgYSBwKSBxXG5cbmxldCBnZXQgYSBpID1cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgVW5hcnkgYSAtPiBBcnJheS51bnNhZmVfZ2V0IGEgaVxuICB8IEJpbmFyeSBhIC0+XG4gICAgbGV0IHAsIHEgPSBldWNsaWRlZW4gaSBtYXhfYXJyYXlfc2l6ZTEgaW5cbiAgICBnZXQyIGEgcCBxXG5cbmxldCBzZXQyIGEgcCBxIGogPSBBcnJheS51bnNhZmVfc2V0IChBcnJheS51bnNhZmVfZ2V0IGEgcCkgcSBqXG5cbmxldCBzZXQgYSBpIGogPVxuICBtYXRjaCBhIHdpdGhcbiAgfCBVbmFyeSBhIC0+IEFycmF5LnVuc2FmZV9zZXQgYSBpIGpcbiAgfCBCaW5hcnkgYSAtPlxuICAgIGxldCBwLCBxID0gZXVjbGlkZWVuIGkgbWF4X2FycmF5X3NpemUxIGluXG4gICAgc2V0MiBhIHAgcSBqXG5cbmxldCBtYWtlID0gY3JlYXRlXG5cbmxldCBpbml0IG4gZiA9XG4gIGlmIG4gPCAwIHx8IG4gPiBtYXhfYXJyYXlfc2l6ZTIgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcIkJpZ19hcnJheS5pbml0IDogXCIgXiBzdHJpbmdfb2ZfaW50IG4pKVxuICBlbHNlIGlmIG4gPD0gbWF4X2FycmF5X3NpemUxIHRoZW5cbiAgICBVbmFyeSAoQXJyYXkuaW5pdCBuIGYpXG4gIGVsc2UgKFxuICAgIGxldCBtID1cbiAgICAgIGxldCBwLCBxID0gZXVjbGlkZWVuIG4gbWF4X2FycmF5X3NpemUxIGluXG4gICAgICBBcnJheS5pbml0XG4gICAgICAgIChpZiBxID0gMCB0aGVuXG4gICAgICAgICAgIHBcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgcCArIDEpXG4gICAgICAgIChmdW4gcCcgLT5cbiAgICAgICAgICBpZiBwJyA9IHAgdGhlblxuICAgICAgICAgICAgQXJyYXkuaW5pdCBxIChmdW4geCAtPiBmICgocCAqIG1heF9hcnJheV9zaXplMSkgKyB4KSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBcnJheS5pbml0IG1heF9hcnJheV9zaXplMSAoZnVuIHggLT4gZiAoKHAnICogbWF4X2FycmF5X3NpemUxKSArIHgpKSlcbiAgICBpblxuICAgIEJpbmFyeSBtXG4gIClcblxubGV0IGFwcGVuZCBhIGIgPVxuICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICBsZXQgYyA9IGxhICsgbGIgaW5cbiAgaW5pdCBjIChmdW4geCAtPlxuICAgICAgaWYgeCA8IGxhIHRoZW5cbiAgICAgICAgZ2V0IGEgeFxuICAgICAgZWxzZVxuICAgICAgICBnZXQgYiAoeCAtIGxhKSlcblxubGV0IGNvbmNhdCBsID1cbiAgbGV0IGwgPSBMaXN0LmZpbHRlciAoZnVuIHggLT4gbGVuZ3RoIHggPiAwKSBsIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFVuYXJ5IFt8fF1cbiAgfCB0IDo6IF8gLT5cbiAgICBsZXQgZWx0ID0gZ2V0IHQgMCBpblxuICAgIGxldCBjID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBzb2wgYSAtPiBzb2wgKyBsZW5ndGggYSkgMCBsIGluXG4gICAgbGV0IG0gPSBjcmVhdGUgYyBlbHQgaW5cbiAgICBsZXQgcmVjIGF1eCBrIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IG1cbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIGxldCBzID0gbGVuZ3RoIHQgaW5cbiAgICAgICAgbGV0IHJlYyBhdXgyIG9mZnNldCBrID1cbiAgICAgICAgICBpZiBvZmZzZXQgPSBzIHRoZW5cbiAgICAgICAgICAgIGF1eCBrIHFcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIHNldCBtIGsgKGdldCB0IG9mZnNldCk7XG4gICAgICAgICAgICBhdXgyIChvZmZzZXQgKyAxKSAoayArIDEpXG4gICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBhdXgyIDAga1xuICAgIGluXG4gICAgYXV4IDAgbFxuXG5sZXQgc3ViIGEgc3RhcnQgbGVuID1cbiAgbGV0IHNpemUgPSBsZW5ndGggYSBpblxuICBpZiBzdGFydCA8IDAgfHwgbGVuIDwgMCB8fCBzdGFydCArIGxlbiA+IHNpemUgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiQmlnX2FycmF5LnN1YlwiKVxuICBlbHNlIGlmIHNpemUgPSAwIHRoZW5cbiAgICBVbmFyeSBbfHxdXG4gIGVsc2VcbiAgICBpbml0IGxlbiAoZnVuIHggLT4gZ2V0IGEgKHggKyBzdGFydCkpXG5cbmxldCBjb3B5ID0gZnVuY3Rpb25cbiAgfCBVbmFyeSBhIC0+IFVuYXJ5IChBcnJheS5jb3B5IGEpXG4gIHwgQmluYXJ5IGInIC0+XG4gICAgbGV0IHNpemUgPSBBcnJheS5sZW5ndGggYicgaW5cbiAgICBCaW5hcnkgKEFycmF5LmluaXQgc2l6ZSAoZnVuIHggLT4gQXJyYXkuY29weSBiJy4oeCkpKVxuXG5sZXQgZmlsbCBhIHN0YXJ0IGxlbiB4ID1cbiAgbGV0IHNpemUgPSBsZW5ndGggYSBpblxuICBpZiBzdGFydCA8IDAgfHwgbGVuIDwgMCB8fCBzdGFydCArIGxlbiA+IHNpemUgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiQmlnX2FycmF5LmZpbGxcIilcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBhdXggayBpID1cbiAgICAgIGlmIGsgPCBsZW4gdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IHNldCBhIGkgeCBpblxuICAgICAgICBhdXggKGsgKyAxKSAoaSArIDEpXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCBzdGFydFxuICApXG5cbmxldCBvZl9saXN0IH5kZWZhdWx0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBVbmFyeSBbfHxdXG4gIHwgdCA6OiBfIGFzIGwgLT5cbiAgICBsZXQgX2lrbm93d2hhdGltZG9pbmcgPSBkZWZhdWx0IGluXG4gICAgbGV0IHNpemUgPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGEgPSBjcmVhdGUgc2l6ZSB0IGluXG4gICAgbGV0IHJlYyBhdXggayA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFcbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIGxldCAoKSA9IHNldCBhIGsgdCBpblxuICAgICAgICBhdXggKGsgKyAxKSBxXG4gICAgaW5cbiAgICBhdXggMCBsXG5cbmxldCBpdGVyIGYgPSBmdW5jdGlvblxuICB8IFVuYXJ5IGEgLT4gQXJyYXkuaXRlciBmIGFcbiAgfCBCaW5hcnkgYSAtPiBBcnJheS5pdGVyIChBcnJheS5pdGVyIGYpIGFcblxubGV0IGl0ZXJpIGYgPSBmdW5jdGlvblxuICB8IFVuYXJ5IGEgLT4gQXJyYXkuaXRlcmkgZiBhXG4gIHwgQmluYXJ5IGEgLT5cbiAgICBsZXQgZyBrIGsnID0gKGsgKiBtYXhfYXJyYXlfc2l6ZTEpICsgaycgaW5cbiAgICBBcnJheS5pdGVyaSAoZnVuIGsgYSAtPiBBcnJheS5pdGVyaSAoZnVuIGsnIGEgLT4gZiAoZyBrIGsnKSBhKSBhKSBhXG5cbmxldCBnZW4gZzEgZzIgaDEgaDIgZiA9IGZ1bmN0aW9uXG4gIHwgVW5hcnkgYSAtPiBoMSAoZzEgZiBhKVxuICB8IEJpbmFyeSBhIC0+IGgyIChnMiAoZzEgZikgYSlcblxubGV0IG1hcCBmIHggPSBnZW4gQXJyYXkubWFwIEFycmF5Lm1hcCAoZnVuIHggLT4gVW5hcnkgeCkgKGZ1biB4IC0+IEJpbmFyeSB4KSBmIHhcblxuKCpsZXQgZ2VuaSBnMSBnMiBoMSBoMiBmID0gZnVuY3Rpb25cbiAgICAgIHwgVW5hcnkgYSAtPiBoMSAoZzEgZiBhKVxuICAgICAgfCBCaW5hcnkgYiAtPlxuICBoMlxuICAgIChnMlxuICAgICAgIChmdW4gcCBhIC0+XG4gICAgICAgIGxldCBuID0gcCAqIG1heF9hcnJheV9zaXplMSBpblxuICAgICAgICBnMVxuICAgKGZ1biBxIGEgLT4gZiAocSArIG4pIGEpXG4gICBhKVxuICAgICAgIGIpXG5cbiAgICBsZXQgbWFwaSA9XG4gICAgICBnZW5pIEFycmF5Lm1hcGkgQXJyYXkubWFwaSAoZnVuIHggLT4gVW5hcnkgeCkgKGZ1biB4IC0+IEJpbmFyeSB4KSopXG5cbmxldCBibGl0IGExIG9mczEgYTIgb2ZzMiBsZW4gPVxuICBpZlxuICAgIGxlbiA8IDAgfHwgb2ZzMSA8IDBcbiAgICB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgfHwgb2ZzMiA8IDBcbiAgICB8fCBvZnMyID4gbGVuZ3RoIGEyIC0gbGVuXG4gIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkFycmF5LmJsaXRcIlxuICBlbHNlIGlmIG9mczEgPCBvZnMyIHRoZW5cbiAgICAoKiBUb3AtZG93biBjb3B5ICopXG4gICAgZm9yIGkgPSBsZW4gLSAxIGRvd250byAwIGRvXG4gICAgICBzZXQgYTIgKG9mczIgKyBpKSAoZ2V0IGExIChvZnMxICsgaSkpXG4gICAgZG9uZVxuICBlbHNlXG4gICAgKCogQm90dG9tLXVwIGNvcHkgKilcbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgc2V0IGEyIChvZnMyICsgaSkgKGdldCBhMSAob2ZzMSArIGkpKVxuICAgIGRvbmVcblxubGV0IGZvbGRfbGVmdGkgZiBpbml0IGEgPVxuICBsZXQgeSA9IHJlZiBpbml0IGluXG4gIGxldCAoKSA9IGl0ZXJpIChmdW4gaSBlIC0+IHkgOj0gZiBpICF5IGUpIGEgaW5cbiAgIXlcblxubGV0IGZvbGRfcmlnaHQgZiBhIGluaXQgPVxuICBtYXRjaCBhIHdpdGhcbiAgfCBVbmFyeSBhIC0+IEFycmF5LmZvbGRfcmlnaHQgZiBhIGluaXRcbiAgfCBCaW5hcnkgYSAtPiBBcnJheS5mb2xkX3JpZ2h0IChBcnJheS5mb2xkX3JpZ2h0IGYpIGEgaW5pdFxuXG5sZXQgZm9sZF9yaWdodGkgZiBhIGluaXQgPVxuICBsZXQgZyBrIChpLCBjdXJyZW50KSA9IGkgLSAxLCBmIGkgayBjdXJyZW50IGluXG4gIHNuZCAoZm9sZF9yaWdodCBnIGEgKGxlbmd0aCBhIC0gMSwgaW5pdCkpXG5cbmxldCBwcmludCA/KHRyYWlsaW5nID0gZnVuIF8gLT4gKCkpIHByX3NlcCBwcl9lbCBmIGEgPVxuICBsZXQgcmVjIGF1eCBpIGYgPVxuICAgIGlmIGkgPCBsZW5ndGggYSB0aGVuIChcbiAgICAgIGxldCAoKSA9IHByX2VsIGkgZiAoZ2V0IGEgaSkgaW5cbiAgICAgIGlmIGkgPCBsZW5ndGggYSAtIDEgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IHByX3NlcCBmIGluXG4gICAgICAgIGF1eCAoc3VjYyBpKSBmXG4gICAgICApIGVsc2UgaWYgaSA+IDAgdGhlblxuICAgICAgICB0cmFpbGluZyBmXG4gICAgKVxuICBpblxuICBhdXggMCBmXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgZmxvYXRfaXNfemVybyB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gIHwgRlBfemVybyAtPiB0cnVlXG4gIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gZmFsc2VcblxubGV0IHBvdyBpIGogPVxuICBsZXQgKCkgPSBhc3NlcnQgKDAgPD0gaikgaW5cbiAgbGV0IHJlYyBhdXggaSBrIGFjY3UgPVxuICAgIGlmIGsgPSAwIHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIGsgbGFuZCAxID0gMCB0aGVuXG4gICAgICBhdXggaSAoayAvIDIpIGFjY3UgKiBhY2N1XG4gICAgZWxzZVxuICAgICAgYXV4IGkgKGsgLyAyKSAoaSAqIGFjY3UgKiBhY2N1KVxuICBpblxuICBhdXggaSBqIDFcblxubGV0IGZhY3QgaSA9XG4gIGxldCByZWMgYXV4IGkgYWNjdSA9XG4gICAgaWYgaSA8IDIgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2VcbiAgICAgIGF1eCAoaSAtIDEpIChpICogYWNjdSlcbiAgaW5cbiAgYXV4IGkgMVxuXG5sZXQgZ2V0X3Byb2R1Y3RfaW1hZ2Vfb2NjIHN0YXJ0IGNvbWJpbmUgZiBsID1cbiAgbGV0IGwgPSBMaXN0LnNvcnQgY29tcGFyZSBsIGluXG4gIGxldCByZWMgYXV4IGwgb2xkIG9jYyBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IGggOjogdCB3aGVuIGggPSBvbGQgLT4gYXV4IHQgb2xkICgxICsgb2NjKSBhY2N1XG4gICAgfCBfIC0+XG4gICAgICBsZXQgYWNjdSA9IGNvbWJpbmUgYWNjdSAoZiBvY2MpIGluXG4gICAgICAobWF0Y2ggbCB3aXRoXG4gICAgICB8IGggOjogdCAtPiBhdXggdCBoIDEgYWNjdVxuICAgICAgfCBbXSAtPiBhY2N1KVxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiAxXG4gIHwgaCA6OiB0IC0+IGF1eCB0IGggMSBzdGFydFxuXG5sZXQgZ2V0X3Byb2R1Y3RfaW1hZ2Vfb2NjXzIgc3RhcnQgY29tYmluZSBmIGwxIGwyID1cbiAgbGV0IGwxID0gTGlzdC5zb3J0IGNvbXBhcmUgbDEgaW5cbiAgbGV0IGwyID0gTGlzdC5zb3J0IGNvbXBhcmUgbDIgaW5cbiAgbGV0IGNvdW50X2hlYWRfYW5kX2dldF90YWlsIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gW10sIDBcbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IHJlYyBhdXggbCBoIG9jYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IFtdLCBvY2NcbiAgICAgICAgfCBoJyA6OiB0IHdoZW4gaCA9IGgnIC0+IGF1eCB0IGggKG9jYyArIDEpXG4gICAgICAgIHwgXyAtPiBsLCBvY2NcbiAgICAgIGluXG4gICAgICBhdXggdCBoIDFcbiAgaW5cbiAgbGV0IHJlYyBhdXggbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IGgxIDo6IF8sIGgyIDo6IF8gd2hlbiBoMSA9IGgyIC0+XG4gICAgICBsZXQgbDEsIG9jYzEgPSBjb3VudF9oZWFkX2FuZF9nZXRfdGFpbCBsMSBpblxuICAgICAgbGV0IGwyLCBvY2MyID0gY291bnRfaGVhZF9hbmRfZ2V0X3RhaWwgbDIgaW5cbiAgICAgIGF1eCBsMSBsMiAoY29tYmluZSBhY2N1IChmIG9jYzEgb2NjMikpXG4gICAgfCBoMSA6OiBfLCBoMiA6OiBfIHdoZW4gY29tcGFyZSBoMSBoMiA8IDAgLT5cbiAgICAgIGxldCBsMSwgb2NjMSA9IGNvdW50X2hlYWRfYW5kX2dldF90YWlsIGwxIGluXG4gICAgICBhdXggbDEgbDIgKGNvbWJpbmUgYWNjdSAoZiBvY2MxIDApKVxuICAgIHwgXyA6OiBfLCBfIDo6IF8gLT5cbiAgICAgIGxldCBsMiwgb2NjMiA9IGNvdW50X2hlYWRfYW5kX2dldF90YWlsIGwyIGluXG4gICAgICBhdXggbDEgbDIgKGNvbWJpbmUgYWNjdSAoZiAwIG9jYzIpKVxuICAgIHwgW10sIF8gfCBfLCBbXSAtPiBhY2N1XG4gIGluXG4gIGF1eCBsMSBsMiBzdGFydFxuXG5sZXQgZGl2MiB4ID0gSW50NjQuZGl2IHggKEludDY0LmFkZCBJbnQ2NC5vbmUgSW50NjQub25lKVxuXG5sZXQgcG93NjQgeCBuID1cbiAgYXNzZXJ0IChuID49IEludDY0Lnplcm8pO1xuICBsZXQgcmVjIGF1eCBrIGFjY3UgPVxuICAgIGlmIGsgPSBJbnQ2NC56ZXJvIHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIEludDY0LmxvZ2FuZCBrIEludDY0Lm9uZSA9IEludDY0Lnplcm8gdGhlblxuICAgICAgYXV4IChkaXYyIGspIChJbnQ2NC5tdWwgYWNjdSBhY2N1KVxuICAgIGVsc2VcbiAgICAgIGF1eCAoZGl2MiBrKSAoSW50NjQubXVsIHggKEludDY0Lm11bCBhY2N1IGFjY3UpKVxuICBpblxuICBhdXggbiBJbnQ2NC5vbmVcblxubGV0IGNhbnRvcl9wYWlyaW5nIHggeSA9XG4gIGxldCBzID0geCArIHkgaW5cbiAgKHN1Y2MgcyAqIHMgLyAyKSArIHlcblxubGV0IHJlYWRfaW5wdXQgKCkgPVxuICBsZXQgcmVjIHBhcnNlIGFjYyBpbnB1dCA9XG4gICAgbWF0Y2ggU3RyZWFtLm5leHQgaW5wdXQgd2l0aFxuICAgIHwgJ1xcbicgLT4gYWNjXG4gICAgfCBjIC0+IHBhcnNlIChQcmludGYuc3ByaW50ZiBcIiVzJWNcIiBhY2MgYykgaW5wdXRcbiAgaW5cbiAgdHJ5XG4gICAgbGV0IHVzZXJfaW5wdXQgPSBTdHJlYW0ub2ZfY2hhbm5lbCBzdGRpbiBpblxuICAgIHBhcnNlIFwiXCIgdXNlcl9pbnB1dFxuICB3aXRoIFN0cmVhbS5GYWlsdXJlIC0+IGludmFsaWRfYXJnIFwiVG9vbHMuUmVhZF9pbnB1dDogY2Fubm90IHJlYWQgc3RyZWFtXCJcblxubGV0IG5vdF9hbl9pZCBzID1cbiAgU3RyaW5nLmxlbmd0aCBzID0gMFxuICB8fFxuICBsZXQgaSA9IGludF9vZl9jaGFyIHMuWzBdIGluXG4gIChpIDwgNjUgfHwgaSA+IDEyMiB8fCAoaSA+IDkwICYmIChpIDw+IDk1IHx8IFN0cmluZy5sZW5ndGggcyA9IDEpICYmIGkgPCA5NykpXG4gIHx8XG4gIHRyeVxuICAgIFN0cmluZy5pdGVyXG4gICAgICAoZnVuIGMgLT5cbiAgICAgICAgbGV0IGkgPSBpbnRfb2ZfY2hhciBjIGluXG4gICAgICAgIGlmXG4gICAgICAgICAgaSA8IDQ4IHx8IGkgPiAxMjJcbiAgICAgICAgICB8fCAoaSA+IDU3ICYmIChpIDwgNjUgfHwgKGkgPiA5MCAmJiBpIDw+IDk1ICYmIGkgPCA5NykpKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgcztcbiAgICBmYWxzZVxuICB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlXG5cbmxldCBhcnJheV9mb2xkX2xlZnRfbWFwaSBmIHggYSA9XG4gIGxldCB5ID0gcmVmIHggaW5cbiAgbGV0IG8gPVxuICAgIEFycmF5LmluaXQgKEFycmF5Lmxlbmd0aCBhKSAoZnVuIGkgLT5cbiAgICAgICAgbGV0IHknLCBvdXQgPSBmIGkgIXkgYS4oaSkgaW5cbiAgICAgICAgbGV0ICgpID0geSA6PSB5JyBpblxuICAgICAgICBvdXQpXG4gIGluXG4gICF5LCBvXG5cbmxldCBhcnJheV9tYXBfb2ZfbGlzdCA9XG4gIGxldCByZWMgZmlsbCBmIGkgdiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICBBcnJheS51bnNhZmVfc2V0IHYgaSAoZiB4KTtcbiAgICAgIGZpbGwgZiAoc3VjYyBpKSB2IGxcbiAgaW5cbiAgZnVuIGYgLT4gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFt8fF1cbiAgICB8IHggOjogbCAtPlxuICAgICAgbGV0IGxlbiA9IHN1Y2MgKExpc3QubGVuZ3RoIGwpIGluXG4gICAgICBsZXQgYW5zID0gQXJyYXkubWFrZSBsZW4gKGYgeCkgaW5cbiAgICAgIGxldCAoKSA9IGZpbGwgZiAxIGFucyBsIGluXG4gICAgICBhbnNcblxubGV0IGFycmF5X3Jldl9vZl9saXN0ID1cbiAgbGV0IHJlYyBmaWxsIG91dCBpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFzc2VydCAoaSA9IC0xKVxuICAgIHwgaCcgOjogdCcgLT5cbiAgICAgIGxldCAoKSA9IEFycmF5LnVuc2FmZV9zZXQgb3V0IGkgaCcgaW5cbiAgICAgIGZpbGwgb3V0IChwcmVkIGkpIHQnXG4gIGluXG4gIGZ1bmN0aW9uXG4gIHwgW10gLT4gW3x8XVxuICB8IGggOjogdCAtPlxuICAgIGxldCBsID0gc3VjYyAoTGlzdC5sZW5ndGggdCkgaW5cbiAgICBsZXQgb3V0ID0gQXJyYXkubWFrZSBsIGggaW5cbiAgICBsZXQgKCkgPSBmaWxsIG91dCAobCAtIDIpIHQgaW5cbiAgICBvdXRcblxubGV0IGFycmF5X3Jldl9tYXBfb2ZfbGlzdCA9XG4gIGxldCByZWMgZmlsbCBmIG91dCBpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFzc2VydCAoaSA9IC0xKVxuICAgIHwgaCcgOjogdCcgLT5cbiAgICAgIGxldCAoKSA9IEFycmF5LnVuc2FmZV9zZXQgb3V0IGkgKGYgaCcpIGluXG4gICAgICBmaWxsIGYgb3V0IChwcmVkIGkpIHQnXG4gIGluXG4gIGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbfHxdXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCBsID0gc3VjYyAoTGlzdC5sZW5ndGggdCkgaW5cbiAgICAgIGxldCBvdXQgPSBBcnJheS5tYWtlIGwgKGYgaCkgaW5cbiAgICAgIGxldCAoKSA9IGZpbGwgZiBvdXQgKGwgLSAyKSB0IGluXG4gICAgICBvdXRcblxubGV0IGFycmF5X2ZvbGRfbGVmdGkgZiB4IGEgPVxuICBsZXQgeSA9IHJlZiB4IGluXG4gIGxldCAoKSA9IEFycmF5Lml0ZXJpIChmdW4gaSBlIC0+IHkgOj0gZiBpICF5IGUpIGEgaW5cbiAgIXlcblxubGV0IHJlYyBhdXhfZm9sZF9yaWdodGkgaSBmIGEgeCA9XG4gIGlmIGkgPCAwIHRoZW5cbiAgICB4XG4gIGVsc2VcbiAgICBhdXhfZm9sZF9yaWdodGkgKHByZWQgaSkgZiBhIChmIGkgYS4oaSkgeClcblxubGV0IGFycmF5X2ZvbGRfcmlnaHRpIGYgYSB4ID0gYXV4X2ZvbGRfcmlnaHRpIChBcnJheS5sZW5ndGggYSAtIDEpIGYgYSB4XG5cbmxldCBhcnJheV9mb2xkX2xlZnQyaSBmIHggYTEgYTIgPVxuICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhMSBpblxuICBpZiBsIDw+IEFycmF5Lmxlbmd0aCBhMiB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJhcnJheV9mb2xkX2xlZnQyaVwiKVxuICBlbHNlXG4gICAgYXJyYXlfZm9sZF9sZWZ0aSAoZnVuIGkgeCBlIC0+IGYgaSB4IGUgYTIuKGkpKSB4IGExXG5cbmxldCBhcnJheV9maWx0ZXIgZiBhID1cbiAgYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaSBhY2MgeCAtPlxuICAgICAgaWYgZiBpIHggdGhlblxuICAgICAgICBpIDo6IGFjY1xuICAgICAgZWxzZVxuICAgICAgICBhY2MpXG4gICAgW10gYVxuXG5sZXQgYXJyYXlfbWluX2VxdWFsX25vdF9udWxsIGwxIGwyID1cbiAgaWYgQXJyYXkubGVuZ3RoIGwxIDw+IEFycmF5Lmxlbmd0aCBsMiB0aGVuXG4gICAgTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGYgaiA9XG4gICAgICBpZiBqID0gQXJyYXkubGVuZ3RoIGwxIHRoZW5cbiAgICAgICAgU29tZSAoW10sIFtdKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuYjEsIGFnMSA9IGwxLihqKSBpblxuICAgICAgICBsZXQgbmIyLCBhZzIgPSBsMi4oaikgaW5cbiAgICAgICAgaWYgbmIxIDw+IG5iMiB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlIGlmIG5iMSA9IDAgdGhlblxuICAgICAgICAgIGYgKHN1Y2MgailcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlYyBhdXggaSB2YSBvdXQgPVxuICAgICAgICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCBsMSB0aGVuXG4gICAgICAgICAgICAgIFNvbWUgb3V0XG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IG5iMSwgYWcxID0gbDEuKGkpIGluXG4gICAgICAgICAgICAgIGxldCBuYjIsIGFnMiA9IGwyLihpKSBpblxuICAgICAgICAgICAgICBpZiBuYjEgPD4gbmIyIHRoZW5cbiAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVsc2UgaWYgbmIxID4gMCAmJiBuYjEgPCB2YSB0aGVuXG4gICAgICAgICAgICAgICAgYXV4IChzdWNjIGkpIG5iMSAoYWcxLCBhZzIpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBhdXggKHN1Y2MgaSkgdmEgb3V0XG4gICAgICAgICAgICApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggKHN1Y2MgaikgbmIxIChhZzEsIGFnMilcbiAgICAgICAgKVxuICAgICAgKVxuICAgIGluXG4gICAgZiAwXG4gIClcblxubGV0IGFycmF5X2NvbXBhcmUgY29tcGFyZSBhIGIgPVxuICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGxldCBsJyA9IEFycmF5Lmxlbmd0aCBiIGluXG4gIGxldCBkID0gU3RkbGliLmNvbXBhcmUgbCBsJyBpblxuICBsZXQgcmVjIGF1eF9hcnJheV9jb21wYXJlIGsgPVxuICAgIGlmIGsgPj0gbCB0aGVuXG4gICAgICAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbyA9IGNvbXBhcmUgYS4oaykgYi4oaykgaW5cbiAgICAgIGlmIG8gPD4gMCB0aGVuXG4gICAgICAgIG9cbiAgICAgIGVsc2VcbiAgICAgICAgYXV4X2FycmF5X2NvbXBhcmUgKHN1Y2MgaylcbiAgICApXG4gIGluXG4gIGlmIGQgPD4gMCB0aGVuXG4gICAgZFxuICBlbHNlXG4gICAgYXV4X2FycmF5X2NvbXBhcmUgMFxuXG5sZXQgaXRlcmkgZiBpID1cbiAgbGV0IHJlYyBhdXggaiA9XG4gICAgaWYgaiA8IGkgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBmIGogaW5cbiAgICAgIGF1eCAoc3VjYyBqKVxuICAgIClcbiAgaW5cbiAgYXV4IDBcblxubGV0IHJlYyByZWN0aSBmIHggaSA9XG4gIGlmIDAgPCBpIHRoZW4gKFxuICAgIGxldCBpJyA9IHByZWQgaSBpblxuICAgIHJlY3RpIGYgKGYgeCBpJykgaSdcbiAgKSBlbHNlXG4gICAgeFxuXG5sZXQgbWluX3Bvc19pbnRfbm90X3plcm8gKGtleWEsIGRhdGFhKSAoa2V5YiwgZGF0YWIpID1cbiAgaWYga2V5YSA9IDAgdGhlblxuICAgIGtleWIsIGRhdGFiXG4gIGVsc2UgaWYga2V5YiA9IDAgdGhlblxuICAgIGtleWEsIGRhdGFhXG4gIGVsc2UgaWYgY29tcGFyZSBrZXlhIGtleWIgPiAwIHRoZW5cbiAgICBrZXliLCBkYXRhYlxuICBlbHNlXG4gICAga2V5YSwgZGF0YWFcblxubGV0IG1heF9wb3NfaW50X25vdF96ZXJvIChrZXlhLCBkYXRhYSkgKGtleWIsIGRhdGFiKSA9XG4gIGlmIGNvbXBhcmUga2V5YSBrZXliID4gMCB0aGVuXG4gICAga2V5YSwgZGF0YWFcbiAgZWxzZVxuICAgIGtleWIsIGRhdGFiXG5cbmxldCBmb2xkX292ZXJfcGVybXV0YXRpb25zIGYgbCBhY2N1ID1cbiAgbGV0IHJlYyBhdXggdG9fZG8gZGlzY2FyZGVkIHBlcm11dGF0aW9uIGFjY3UgPVxuICAgIG1hdGNoIHRvX2RvLCBkaXNjYXJkZWQgd2l0aFxuICAgIHwgW10sIFtdIC0+IGYgcGVybXV0YXRpb24gYWNjdVxuICAgIHwgW10sIF8gOjogXyAtPiBhY2N1XG4gICAgfCBoIDo6IHQsIF8gLT5cbiAgICAgIGxldCB0b19kbzEgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIGxpc3QgYSAtPiBhIDo6IGxpc3QpIHQgZGlzY2FyZGVkIGluXG4gICAgICBsZXQgYWNjdSA9IGF1eCB0b19kbzEgW10gKGggOjogcGVybXV0YXRpb24pIGFjY3UgaW5cbiAgICAgIGxldCBhY2N1ID0gYXV4IHQgKGggOjogZGlzY2FyZGVkKSBwZXJtdXRhdGlvbiBhY2N1IGluXG4gICAgICBhY2N1XG4gIGluXG4gIGF1eCBsIFtdIFtdIGFjY3VcblxubGV0IGdjZF8yIGEgYiA9XG4gIGxldCByZWMgYXV4IGEgYiA9XG4gICAgaWYgYiA9IDAgdGhlblxuICAgICAgYVxuICAgIGVsc2VcbiAgICAgIGF1eCBiIChhIG1vZCBiKVxuICBpblxuICBsZXQgYSA9IGFicyBhIGluXG4gIGxldCBiID0gYWJzIGIgaW5cbiAgaWYgYSA8IGIgdGhlblxuICAgIGF1eCBiIGFcbiAgZWxzZVxuICAgIGF1eCBhIGJcblxubGV0IGxjbV8yIGEgYiA9IGFicyBhICogYWJzIGIgLyBnY2RfMiBhIGJcblxubGV0IGxjbSBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgW10gLT4gMFxuICB8IGggOjogdCAtPiBMaXN0LmZvbGRfbGVmdCBsY21fMiBoIHRcblxubGV0IGdldF9pbnRlcnZhbF9saXN0IHAgaSBqID1cbiAgbGV0IGFkZCBjdXJyZW50IG91dHB1dCA9XG4gICAgbWF0Y2ggY3VycmVudCB3aXRoXG4gICAgfCBOb25lIC0+IG91dHB1dFxuICAgIHwgU29tZSBwIC0+IHAgOjogb3V0cHV0XG4gIGluXG4gIGxldCBpbnNlcnQgayBjdXJyZW50ID1cbiAgICBtYXRjaCBjdXJyZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSAoaywgaylcbiAgICB8IFNvbWUgKF8sIGopIC0+IFNvbWUgKGssIGopXG4gIGluXG4gIGxldCByZWMgYXV4IHAgayBjdXJyZW50IG91dHB1dCA9XG4gICAgaWYgayA8IGkgdGhlblxuICAgICAgYWRkIGN1cnJlbnQgb3V0cHV0XG4gICAgZWxzZSBpZiBwIGsgdGhlblxuICAgICAgYXV4IHAgKGsgLSAxKSAoaW5zZXJ0IGsgY3VycmVudCkgb3V0cHV0XG4gICAgZWxzZVxuICAgICAgYXV4IHAgKGsgLSAxKSBOb25lIChhZGQgY3VycmVudCBvdXRwdXQpXG4gIGluXG4gIGF1eCBwIGogTm9uZSBbXVxuXG5sZXQgbG93ZXJjYXNlID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaVxubGV0IGNhcGl0YWxpemUgPSBTdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaVxuXG5sZXQgc3RyaW5nX3NwbGl0X29uX2NoYXIgKGRlbGltaXRlciA6IGNoYXIpIChzIDogc3RyaW5nKSA6XG4gICAgc3RyaW5nICogc3RyaW5nIG9wdGlvbiA9XG4gIHRyeVxuICAgIGxldCBpbmRleCA9IFN0cmluZy5pbmRleCBzIGRlbGltaXRlciBpblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBTdHJpbmcuc3ViIHMgMCBpbmRleCwgU29tZSAoU3RyaW5nLnN1YiBzIChpbmRleCArIDEpIChsZW5ndGggLSBpbmRleCAtIDEpKVxuICB3aXRoIE5vdF9mb3VuZCAtPiBzLCBOb25lXG5cbmxldCBzbWFzaF9kdXBsaWNhdGVfaW5fb3JkZXJlZF9saXN0IHAgbCA9XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIEZvcm1hdC5zdGRfZm9ybWF0dGVyIFwiRFVQTCBcXG5cIiBpblxuXG4gIGxldCByZWMgYXV4IHRhaWwgbm9jYyBjdXJyZW50IGFjY3UgPVxuICAgIG1hdGNoIHRhaWwgd2l0aFxuICAgIHwgW10gLT4gKGN1cnJlbnQsIG5vY2MpIDo6IGFjY3VcbiAgICB8IChoLCBuKSA6OiB0IHdoZW4gcCBoIGN1cnJlbnQgPSAwIC0+XG4gICAgICAoKmxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIEZvcm1hdC5zdGRfZm9ybWF0dGVyIFwiRFVQTCAlaVxcblwiIChuK25vY2MpIGluKilcbiAgICAgIGF1eCB0IChuICsgbm9jYykgY3VycmVudCBhY2N1XG4gICAgfCAoaCwgbikgOjogdCAtPiBhdXggdCBuIGggKChjdXJyZW50LCBub2NjKSA6OiBhY2N1KVxuICBpblxuICBtYXRjaCBMaXN0LnJldiBsIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IChoLCBuKSA6OiB0IC0+IGF1eCB0IG4gaCBbXVxuXG5sZXQgY2hvcF9zdWZmaXhfb3JfZXh0ZW5zaW9uIG5hbWUgZXh0ID1cbiAgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IG5hbWUgZXh0IHRoZW5cbiAgICBGaWxlbmFtZS5jaG9wX3N1ZmZpeCBuYW1lIGV4dFxuICBlbHNlXG4gICAgRmlsZW5hbWUucmVtb3ZlX2V4dGVuc2lvbiBuYW1lXG5cbmxldCBmaW5kX2F2YWlsYWJsZV9uYW1lIH5hbHJlYWR5X3RoZXJlIG5hbWUgfmZhY3VsdGF0aXZlIH5leHQgPVxuICBsZXQgZXh0ID1cbiAgICBtYXRjaCBleHQgd2l0aFxuICAgIHwgU29tZSBlIC0+IGVcbiAgICB8IE5vbmUgLT4gRmlsZW5hbWUuZXh0ZW5zaW9uIG5hbWVcbiAgaW5cbiAgbGV0IGJhc2UgPSBjaG9wX3N1ZmZpeF9vcl9leHRlbnNpb24gbmFtZSBleHQgaW5cbiAgaWYgYWxyZWFkeV90aGVyZSAoYmFzZSBeIGV4dCkgdGhlbiAoXG4gICAgbGV0IGJhc2UnID1cbiAgICAgIGlmIGZhY3VsdGF0aXZlIDw+IFwiXCIgdGhlblxuICAgICAgICBiYXNlIF4gXCJfXCIgXiBmYWN1bHRhdGl2ZVxuICAgICAgZWxzZVxuICAgICAgICBiYXNlXG4gICAgaW5cbiAgICBpZiBhbHJlYWR5X3RoZXJlIChiYXNlJyBeIGV4dCkgdGhlbiAoXG4gICAgICBsZXQgdiA9IHJlZiAwIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICB3aGlsZSBhbHJlYWR5X3RoZXJlIChiYXNlJyBeIFwiflwiIF4gc3RyaW5nX29mX2ludCAhdiBeIGV4dCkgZG9cbiAgICAgICAgICBpbmNyIHZcbiAgICAgICAgZG9uZVxuICAgICAgaW5cbiAgICAgIGJhc2UnIF4gXCJ+XCIgXiBzdHJpbmdfb2ZfaW50ICF2IF4gZXh0XG4gICAgKSBlbHNlXG4gICAgICBiYXNlJyBeIGV4dFxuICApIGVsc2VcbiAgICBiYXNlIF4gZXh0XG5cbmxldCBkZWZhdWx0X21lc3NhZ2VfZGVsaW10ZXIgOiBjaGFyID0gJ1xceDFlJyAoKiBcIlxcdFwiICopXG5cbmxldCBnZXRfcmVmIHJlZiA9XG4gIGxldCBpID0gIXJlZiBpblxuICBsZXQgKCkgPSByZWYgOj0gaSArIDEgaW5cbiAgaVxuXG5sZXQgcmVtb3ZlX2RvdWJsZV9lbGVtZW50cyBsID1cbiAgbGV0IGwgPSBMaXN0LnNvcnQgY29tcGFyZSBsIGluXG4gIGxldCByZWMgYXV4IGwgYWNjdSBvbGQgPVxuICAgIG1hdGNoIGwsIG9sZCB3aXRoXG4gICAgfCBbXSwgXyAtPiBhY2N1XG4gICAgfCBoIDo6IHQsIFNvbWUgaCcgd2hlbiBoID0gaCcgLT4gYXV4IHQgYWNjdSBvbGRcbiAgICB8IGggOjogdCwgKE5vbmUgfCBTb21lIF8pIC0+IGF1eCB0IChoIDo6IGFjY3UpIChTb21lIGgpXG4gIGluXG4gIGF1eCBsIFtdIE5vbmVcblxubGV0IGZyb21fbl90b18wIG4gPVxuICBsZXQgcmVjIGF1eCBrIGFjYyA9XG4gICAgaWYgayA+IG4gdGhlblxuICAgICAgYWNjXG4gICAgZWxzZVxuICAgICAgYXV4IChrICsgMSkgKGsgOjogYWNjKVxuICBpblxuICBhdXggMCBbXVxuXG5sZXQgY2xlYXIgYSA9IEFycmF5Lml0ZXJpIChmdW4gaSBfIC0+IGEuKGkpIDwtIFtdKSBhXG5cbmxldCBzb3J0X2J5X3ByaW9yaXR5IGYgbiA9XG4gIGxldCBhID0gQXJyYXkubWFrZSAobiArIDEpIFtdIGluXG4gIGxldCBrZXlzID0gZnJvbV9uX3RvXzAgbiBpblxuICBsZXQgc29ydCBsID1cbiAgICBsZXQgcmVjIGF1eCBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgbGV0IGsgPSBmIGggaW5cbiAgICAgICAgbGV0ICgpID0gYS4oaykgPC0gaCA6OiBhLihrKSBpblxuICAgICAgICBhdXggdFxuICAgIGluXG4gICAgbGV0ICgpID0gYXV4IGwgaW5cbiAgICBsZXQgb3V0cHV0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbGlzdCBrZXkgLT5cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGxpc3QgZWx0IC0+IGVsdCA6OiBsaXN0KSBsaXN0IGEuKGtleSkpXG4gICAgICAgIFtdIGtleXNcbiAgICBpblxuICAgIGxldCAoKSA9IGNsZWFyIGEgaW5cbiAgICBvdXRwdXRcbiAgaW5cbiAgc29ydFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGluaXRpYWxfYnVmZmVyX3NpemUgPSAweDEwMDBcblxubGV0IHdyaXRlX3RvX2NoYW5uZWwgZiBkIHggPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgaW5pdGlhbF9idWZmZXJfc2l6ZSBpblxuICBsZXQgKCkgPSBmIGIgeCBpblxuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBkIGJcblxubGV0IHN0cmluZ19vZl93cml0ZSBmID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIGxldCAoKSA9IGYgb2IgeCBpblxuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHJlYWRfb2Zfc3RyaW5nIGYgeCA9XG4gIGxldCBsZXhfc3QgPSBZb2pzb24uQmFzaWMuaW5pdF9sZXhlciAoKSBpblxuICBsZXQgbGV4X2J1ZiA9IExleGluZy5mcm9tX3N0cmluZyB4IGluXG4gIGYgbGV4X3N0IGxleF9idWZcblxubGV0IHJlYWRfYmV0d2Vlbl9zcGFjZXMgZiBsZXhfc3QgbGV4X2J1ZiA9XG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX3NwYWNlIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCB4ID0gZiBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBsZXhfc3QgbGV4X2J1ZiBpblxuICB4XG5cbmxldCByZWFkX25leHRfaXRlbSBmIHN0IGIgPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBzdCBiIGluXG4gIHJlYWRfYmV0d2Vlbl9zcGFjZXMgZiBzdCBiXG5cbmxldCBidWlsZF9tc2cgcyA9IFwiTm90IGEgY29ycmVjdCBcIiBeIHNcbmxldCBvZl9zdHJpbmcgKHMgOiBzdHJpbmcpID0gYFN0cmluZyBzXG5cbmxldCB0b19zdHJpbmcgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJzdHJpbmdcIikgPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgKHMgOiBzdHJpbmcpIC0+IHNcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgb2ZfaW50IChzIDogaW50KSA9IGBJbnQgc1xuXG5sZXQgdG9faW50ID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwiaW50XCIpID0gZnVuY3Rpb25cbiAgfCBgSW50IChzIDogaW50KSAtPiBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IG9mX2Jvb2wgKHMgOiBib29sKSA9XG4gIGBTdHJpbmdcbiAgICAoaWYgcyB0aGVuXG4gICAgICAgXCJ0cnVlXCJcbiAgICAgZWxzZVxuICAgICAgIFwiZmFsc2VcIilcblxubGV0IHRvX2Jvb2wgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJib29sZWFuXCIpID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBgU3RyaW5nIFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBvZl91bml0ICgpID0gYE51bGxcblxubGV0IHRvX3VuaXQgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJ1bml0XCIpID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiAoKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBvZl9vcHRpb24gdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBgTnVsbFxuICB8IFNvbWUgeCAtPlxuICAgIChtYXRjaCB0b19qc29uIHggd2l0aFxuICAgIHwgYE51bGwgLT4gZmFpbHdpdGggXCJhbWJpZ3VvdXMgSnNvblV0aWwub2Zfb3B0aW9uXCJcbiAgICB8IHggLT4geClcblxubGV0IHRvX29wdGlvbiA9IFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvblxuXG5sZXQgd3JpdGVfb3B0aW9uIGYgb2IgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gWW9qc29uLkJhc2ljLndyaXRlX251bGwgb2IgKClcbiAgfCBTb21lIHggLT4gZiBvYiB4XG5cbmxldCByZWFkX29wdGlvbiBmIHAgbGIgPVxuICBpZiBZb2pzb24uQmFzaWMucmVhZF9udWxsX2lmX3Bvc3NpYmxlIHAgbGIgdGhlblxuICAgIE5vbmVcbiAgZWxzZVxuICAgIFNvbWUgKGYgcCBsYilcblxubGV0IG9mX2xpc3QgdG9fanNvbiBsID0gYExpc3QgKExpc3QucmV2X21hcCB0b19qc29uIChMaXN0LnJldiBsKSlcblxubGV0IHRvX2xpc3QgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJsaXN0XCIpIG9mX2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMgeCAtPlxuICAgICh0cnkgTGlzdC5yZXZfbWFwIG9mX2pzb24gKExpc3QucmV2IGwpXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKSlcbiAgfCBgTnVsbCAtPiBbXVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCB3cml0ZV9jb21tYSBvYiA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyBpdGVyMiBmX2VsdCB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgIHdyaXRlX2NvbW1hIHg7XG4gICAgZl9lbHQgeCB5O1xuICAgIGl0ZXIyIGZfZWx0IHggbFxuXG5sZXQgd3JpdGVfbGlzdCBmIG9iIGwgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgeSA6OiBsIC0+XG4gICAgICBmIG9iIHk7XG4gICAgICBpdGVyMiBmIG9iIGxcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5sZXQgb2ZfYXJyYXkgdG9fanNvbiBhID1cbiAgYExpc3QgKEFycmF5LmZvbGRfcmlnaHQgKGZ1biB4IGFjYyAtPiB0b19qc29uIHggOjogYWNjKSBhIFtdKVxuXG5sZXQgdG9fYXJyYXkgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJhcnJheVwiKSBvZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IG9mX2pzb24gbFxuICB8IGBOdWxsIC0+IFt8fF1cbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgd3JpdGVfYXJyYXkgZiBvYiBsID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICdbJyBpblxuICBsZXQgKCkgPSBpZiBBcnJheS5sZW5ndGggbCA+IDAgdGhlbiBmIG9iIGwuKDApIGluXG4gIGxldCAoKSA9XG4gICAgVG9vbHMuaXRlcmlcbiAgICAgIChmdW4gaSAtPlxuICAgICAgICBsZXQgKCkgPSB3cml0ZV9jb21tYSBvYiBpblxuICAgICAgICBmIG9iIGwuKHN1Y2MgaSkpXG4gICAgICAocHJlZCAoQXJyYXkubGVuZ3RoIGwpKVxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCByZWMgaXRlcl9zZXEgb2IgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgZiA6OiBxIC0+XG4gICAgbGV0ICgpID0gd3JpdGVfY29tbWEgb2IgaW5cbiAgICBsZXQgKCkgPSBmIG9iIGluXG4gICAgaXRlcl9zZXEgb2IgcVxuXG5sZXQgd3JpdGVfc2VxdWVuY2Ugb2IgbCA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnWycgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCBmIDo6IHEgLT5cbiAgICAgIGxldCAoKSA9IGYgb2IgaW5cbiAgICAgIGl0ZXJfc2VxIG9iIHFcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5sZXQgcmVhZF92YXJpYW50IHJlYWRfaWQgcmVhZCBzdCBiID1cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfbGJyIHN0IGIgaW5cbiAgbGV0IGNzdCA9IHJlYWRfYmV0d2Vlbl9zcGFjZXMgcmVhZF9pZCBzdCBiIGluXG4gIGxldCBvdXQgPSByZWFkIHN0IGIgY3N0IGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX3JiciBzdCBiIGluXG4gIG91dFxuXG5sZXQgc21hcnRfYXNzb2MgbCA9XG4gIGBBc3NvY1xuICAgIChMaXN0LnJldlxuICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IF8sIChgTnVsbCB8IGBBc3NvYyBbXSB8IGBMaXN0IFtdKSAtPiBhY2NcbiAgICAgICAgICAgIHwgeCAtPiB4IDo6IGFjYylcbiAgICAgICAgICBbXSBsKSlcblxubGV0IG9mX2Fzc29jIHRvX2pzb24gbCA9IGBBc3NvYyAoTGlzdC5yZXZfbWFwIHRvX2pzb24gKExpc3QucmV2IGwpKVxuXG5sZXQgdG9fYXNzb2MgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJhc3NvY2lhdGlvblwiKSBvZl9qc29uIGpzb24gPVxuICBtYXRjaCBqc29uIHdpdGhcbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeSBMaXN0LnJldl9tYXAgb2ZfanNvbiAoTGlzdC5yZXYgbClcbiAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpKVxuICB8IGBOdWxsIC0+IFtdXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IHdyaXRlX2ZpZWxkIG5hIGYgb2IgeCA9XG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgbmEgaW5cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICc6JyBpblxuICBmIG9iIHhcblxubGV0IG9mX3BhaXIgPyhsYWIxID0gXCJmaXJzdFwiKSA/KGxhYjIgPSBcInNlY29uZFwiKSB0b19qc29uMSB0b19qc29uMiAoYSwgYikgPVxuICBgQXNzb2MgWyBsYWIxLCB0b19qc29uMSBhOyBsYWIyLCB0b19qc29uMiBiIF1cblxubGV0IHRvX3RyaXBsZSA/KGxhYjEgPSBcImZpcnN0XCIpID8obGFiMiA9IFwic2Vjb25kXCIpID8obGFiMyA9IFwidGhpcmRcIilcbiAgICA/KGVycm9yX21zZyA9IGJ1aWxkX21zZyBcInRyaXBsZVwiKSBvZl9qc29uMSBvZl9qc29uMiBvZl9qc29uMyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgKHRyeVxuICAgICAgICggb2ZfanNvbjEgKExpc3QuYXNzb2MgbGFiMSBsKSxcbiAgICAgICAgIG9mX2pzb24yIChMaXN0LmFzc29jIGxhYjIgbCksXG4gICAgICAgICBvZl9qc29uMyAoTGlzdC5hc3NvYyBsYWIzIGwpIClcbiAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBvZl90cmlwbGUgPyhsYWIxID0gXCJmaXJzdFwiKSA/KGxhYjIgPSBcInNlY29uZFwiKSA/KGxhYjMgPSBcInRoaXJkXCIpIHRvX2pzb24xXG4gICAgdG9fanNvbjIgdG9fanNvbjMgKGEsIGIsIGMpID1cbiAgYEFzc29jIFsgbGFiMSwgdG9fanNvbjEgYTsgbGFiMiwgdG9fanNvbjIgYjsgbGFiMywgdG9fanNvbjMgYyBdXG5cbmxldCB0b19wYWlyID8obGFiMSA9IFwiZmlyc3RcIikgPyhsYWIyID0gXCJzZWNvbmRcIikgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJwYWlyXCIpXG4gICAgb2ZfanNvbjEgb2ZfanNvbjIgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMiAtPlxuICAgICh0cnkgb2ZfanNvbjEgKExpc3QuYXNzb2MgbGFiMSBsKSwgb2ZfanNvbjIgKExpc3QuYXNzb2MgbGFiMiBsKVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IHdyaXRlX2NvbXBhY3RfcGFpciBmIGcgb2IgKHgsIHkpID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICdbJyBpblxuICBsZXQgKCkgPSBmIG9iIHggaW5cbiAgbGV0ICgpID0gd3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID0gZyBvYiB5IGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IHJlYWRfY29tcGFjdF9wYWlyIGYgZyBzdCBiID1cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfbGJyIHN0IGIgaW5cbiAgbGV0IHggPSByZWFkX2JldHdlZW5fc3BhY2VzIGYgc3QgYiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBzdCBiIGluXG4gIGxldCB5ID0gcmVhZF9iZXR3ZWVuX3NwYWNlcyBnIHN0IGIgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfcmJyIHN0IGIgaW5cbiAgeCwgeVxuXG5sZXQgY29tcGFjdF90b19wYWlyIGYgZyA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyB4OyB5IF0gLT4gZiB4LCBnIHlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvbXBhY3QgcGFpclwiLCB4KSlcblxubGV0IG9mX21hcCA/KGxhYl9rZXkgPSBcImtleVwiKSA/KGxhYl92YWx1ZSA9IFwidmFsdWVcIikgfmZvbGQga2V5X3RvX2pzb25cbiAgICB2YWx1ZV90b19qc29uIG1hcCA9XG4gIGBMaXN0XG4gICAgKExpc3QucmV2XG4gICAgICAgKGZvbGRcbiAgICAgICAgICAoZnVuIChrZXkgOiAna2V5KSAodmFsdWUgOiAndmFsdWUpIChsaXN0IDogWW9qc29uLkJhc2ljLnQgbGlzdCkgLT5cbiAgICAgICAgICAgIGBBc3NvYyBbIGxhYl9rZXksIGtleV90b19qc29uIGtleTsgbGFiX3ZhbHVlLCB2YWx1ZV90b19qc29uIHZhbHVlIF1cbiAgICAgICAgICAgIDo6IGxpc3QpXG4gICAgICAgICAgbWFwIFtdKSlcblxubGV0IHRvX21hcCA/KGxhYl9rZXkgPSBcImtleVwiKSA/KGxhYl92YWx1ZSA9IFwidmFsdWVcIilcbiAgICA/KGVycm9yX21zZyA9IGJ1aWxkX21zZyBcIm1hcFwiKSB+YWRkIH5lbXB0eSBqc29uX3RvX2tleSBqc29uX3RvX3ZhbHVlID1cbiAgZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gbWFwIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAyIC0+XG4gICAgICAgICAgKHRyeVxuICAgICAgICAgICAgIGFkZFxuICAgICAgICAgICAgICAgKGpzb25fdG9fa2V5IChMaXN0LmFzc29jIGxhYl9rZXkgbCkpXG4gICAgICAgICAgICAgICAoanNvbl90b192YWx1ZSAoTGlzdC5hc3NvYyBsYWJfdmFsdWUgbCkpXG4gICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSkpXG4gICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSkpXG4gICAgICBlbXB0eSBsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IG9mX3VuaXhfbGFiZWwgPSBmdW5jdGlvblxuICB8IFVuaXhMYWJlbHMuRTJCSUcgLT4gYEFzc29jIFsgXCJFMkJJR1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQUNDRVMgLT4gYEFzc29jIFsgXCJFQUNDRVNcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUFHQUlOIC0+IGBBc3NvYyBbIFwiRUFHQUlOXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVCQURGIC0+IGBBc3NvYyBbIFwiRUJBREZcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUJVU1kgLT4gYEFzc29jIFsgXCJFQlVTWVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQ0hJTEQgLT4gYEFzc29jIFsgXCJFQ0hJTERcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRURFQURMSyAtPiBgQXNzb2MgWyBcIkVERUFETEtcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRURPTSAtPiBgQXNzb2MgWyBcIkVET01cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUVYSVNUIC0+IGBBc3NvYyBbIFwiRUVYSVNUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVGQVVMVCAtPiBgQXNzb2MgWyBcIkVGQVVMVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FRkJJRyAtPiBgQXNzb2MgWyBcIkVGQklHXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVJTlRSIC0+IGBBc3NvYyBbIFwiRUlOVFJcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUlOVkFMIC0+IGBBc3NvYyBbIFwiRUlOVkFMXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVJTyAtPiBgQXNzb2MgWyBcIkVJT1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSVNESVIgLT4gYEFzc29jIFsgXCJFSVNESVJcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU1GSUxFIC0+IGBBc3NvYyBbIFwiRU1GSUxFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVNTElOSyAtPiBgQXNzb2MgWyBcIkVNTElOS1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTkFNRVRPT0xPTkcgLT4gYEFzc29jIFsgXCJFTkFNRVRPT0xPTkdcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5GSUxFIC0+IGBBc3NvYyBbIFwiRU5GSUxFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT0RFViAtPiBgQXNzb2MgWyBcIkVOT0RFVlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9FTlQgLT4gYEFzc29jIFsgXCJFTk9FTlRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PRVhFQyAtPiBgQXNzb2MgWyBcIkVOT0VYRUNcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PTENLIC0+IGBBc3NvYyBbIFwiRU5PTENLXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT01FTSAtPiBgQXNzb2MgWyBcIkVOT01FTVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9TUEMgLT4gYEFzc29jIFsgXCJFTk9TUENcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PU1lTIC0+IGBBc3NvYyBbIFwiRU5PU1lTXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT1RESVIgLT4gYEFzc29jIFsgXCJFTk9URElSXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT1RFTVBUWSAtPiBgQXNzb2MgWyBcIkVOT1RFTVBUWVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9UVFkgLT4gYEFzc29jIFsgXCJFTk9UVFlcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5YSU8gLT4gYEFzc29jIFsgXCJFTlhJT1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FUEVSTSAtPiBgQXNzb2MgWyBcIkVQRVJNXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVQSVBFIC0+IGBBc3NvYyBbIFwiRVBJUEVcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVJBTkdFIC0+IGBBc3NvYyBbIFwiRVJBTkdFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVST0ZTIC0+IGBBc3NvYyBbIFwiRVJPRlNcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVNQSVBFIC0+IGBBc3NvYyBbIFwiRVNQSVBFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVTUkNIIC0+IGBBc3NvYyBbIFwiRVNSQ0hcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVhERVYgLT4gYEFzc29jIFsgXCJFWERFVlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FV09VTERCTE9DSyAtPiBgQXNzb2MgWyBcIkVXT1VMREJMT0NLXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVJTlBST0dSRVNTIC0+IGBBc3NvYyBbIFwiRUlOUFJPR1JFU1NcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUFMUkVBRFkgLT4gYEFzc29jIFsgXCJFQUxSRUFEWVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9UU09DSyAtPiBgQXNzb2MgWyBcIkVOT1RTT0NLXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVERVNUQUREUlJFUSAtPiBgQXNzb2MgWyBcIkVERVNUQUREUlJFUVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTVNHU0laRSAtPiBgQXNzb2MgWyBcIkVNU0dTSVpFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVQUk9UT1RZUEUgLT4gYEFzc29jIFsgXCJFUFJPVE9UWVBFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT1BST1RPT1BUIC0+IGBBc3NvYyBbIFwiRU5PUFJPVE9PUFRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVBST1RPTk9TVVBQT1JUIC0+IGBBc3NvYyBbIFwiRVBST1RPTk9TVVBQT1JUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVTT0NLVE5PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVTT0NLVE5PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FT1BOT1RTVVBQIC0+IGBBc3NvYyBbIFwiRU9QTk9UU1VQUFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FUEZOT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFUEZOT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUFGTk9TVVBQT1JUIC0+IGBBc3NvYyBbIFwiRUFGTk9TVVBQT1JUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVBRERSSU5VU0UgLT4gYEFzc29jIFsgXCJFQUREUklOVVNFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVBRERSTk9UQVZBSUwgLT4gYEFzc29jIFsgXCJFQUREUk5PVEFWQUlMXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVORVRET1dOIC0+IGBBc3NvYyBbIFwiRU5FVERPV05cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5FVFVOUkVBQ0ggLT4gYEFzc29jIFsgXCJFTkVUVU5SRUFDSFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTkVUUkVTRVQgLT4gYEFzc29jIFsgXCJFTkVUUkVTRVRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUNPTk5BQk9SVEVEIC0+IGBBc3NvYyBbIFwiRUNPTk5BQk9SVEVEXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVDT05OUkVTRVQgLT4gYEFzc29jIFsgXCJFQ09OTlJFU0VUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT0JVRlMgLT4gYEFzc29jIFsgXCJFTk9CVUZTXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVJU0NPTk4gLT4gYEFzc29jIFsgXCJFSVNDT05OXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT1RDT05OIC0+IGBBc3NvYyBbIFwiRU5PVENPTk5cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVNIVVRET1dOIC0+IGBBc3NvYyBbIFwiRVNIVVRET1dOXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVUT09NQU5ZUkVGUyAtPiBgQXNzb2MgWyBcIkVUT09NQU5ZUkVGU1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FVElNRURPVVQgLT4gYEFzc29jIFsgXCJFVElNRURPVVRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUNPTk5SRUZVU0VEIC0+IGBBc3NvYyBbIFwiRUNPTk5SRUZVU0VEXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVIT1NURE9XTiAtPiBgQXNzb2MgWyBcIkVIT1NURE9XTlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSE9TVFVOUkVBQ0ggLT4gYEFzc29jIFsgXCJFSE9TVFVOUkVBQ0hcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUxPT1AgLT4gYEFzc29jIFsgXCJFTE9PUFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FT1ZFUkZMT1cgLT4gYEFzc29jIFsgXCJFT1ZFUkZMT1dcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVVOS05PV05FUlIgaW50IC0+IGBBc3NvYyBbIFwiRVVOS05PV05FUlJcIiwgb2ZfaW50IGludCBdXG5cbmxldCAodG9fdW5peF9sYWJlbCA6IFlvanNvbi5CYXNpYy50IC0+IFVuaXhMYWJlbHMuZXJyb3IpID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAoXCJFMkJJR1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkUyQklHXG4gIHwgYEFzc29jIFsgKFwiRUFDQ0VTXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUFDQ0VTXG4gIHwgYEFzc29jIFsgKFwiRUFHQUlOXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUFHQUlOXG4gIHwgYEFzc29jIFsgKFwiRUJBREZcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQkFERlxuICB8IGBBc3NvYyBbIChcIkVCVVNZXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUJVU1lcbiAgfCBgQXNzb2MgWyAoXCJFQ0hJTERcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQ0hJTERcbiAgfCBgQXNzb2MgWyAoXCJFREVBRExLXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRURFQURMS1xuICB8IGBBc3NvYyBbIChcIkVET01cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FRE9NXG4gIHwgYEFzc29jIFsgKFwiRUVYSVNUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUVYSVNUXG4gIHwgYEFzc29jIFsgKFwiRUZBVUxUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUZBVUxUXG4gIHwgYEFzc29jIFsgKFwiRUZCSUdcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FRkJJR1xuICB8IGBBc3NvYyBbIChcIkVJTlRSXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlOVFJcbiAgfCBgQXNzb2MgWyAoXCJFSU5WQUxcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FSU5WQUxcbiAgfCBgQXNzb2MgWyAoXCJFSU9cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FSU9cbiAgfCBgQXNzb2MgWyAoXCJFSVNESVJcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FSVNESVJcbiAgfCBgQXNzb2MgWyAoXCJFTUZJTEVcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTUZJTEVcbiAgfCBgQXNzb2MgWyAoXCJFTUxJTktcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTUxJTktcbiAgfCBgQXNzb2MgWyAoXCJFTkFNRVRPT0xPTkdcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTkFNRVRPT0xPTkdcbiAgfCBgQXNzb2MgWyAoXCJFTkZJTEVcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTkZJTEVcbiAgfCBgQXNzb2MgWyAoXCJFTk9ERVZcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9ERVZcbiAgfCBgQXNzb2MgWyAoXCJFTk9FTlRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9FTlRcbiAgfCBgQXNzb2MgWyAoXCJFTk9FWEVDXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PRVhFQ1xuICB8IGBBc3NvYyBbIChcIkVOT0xDS1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT0xDS1xuICB8IGBBc3NvYyBbIChcIkVOT01FTVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT01FTVxuICB8IGBBc3NvYyBbIChcIkVOT1NQQ1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1NQQ1xuICB8IGBBc3NvYyBbIChcIkVOT1NZU1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1NZU1xuICB8IGBBc3NvYyBbIChcIkVOT1RESVJcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9URElSXG4gIHwgYEFzc29jIFsgKFwiRU5PVEVNUFRZXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PVEVNUFRZXG4gIHwgYEFzc29jIFsgKFwiRU5PVFRZXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PVFRZXG4gIHwgYEFzc29jIFsgKFwiRU5YSU9cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTlhJT1xuICB8IGBBc3NvYyBbIChcIkVQRVJNXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVBFUk1cbiAgfCBgQXNzb2MgWyAoXCJFUElQRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVQSVBFXG4gIHwgYEFzc29jIFsgKFwiRVJBTkdFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVJBTkdFXG4gIHwgYEFzc29jIFsgKFwiRVJPRlNcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FUk9GU1xuICB8IGBBc3NvYyBbIChcIkVTUElQRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVTUElQRVxuICB8IGBBc3NvYyBbIChcIkVTUkNIXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVNSQ0hcbiAgfCBgQXNzb2MgWyAoXCJFWERFVlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVYREVWXG4gIHwgYEFzc29jIFsgKFwiRVdPVUxEQkxPQ0tcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FV09VTERCTE9DS1xuICB8IGBBc3NvYyBbIChcIkVJTlBST0dSRVNTXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlOUFJPR1JFU1NcbiAgfCBgQXNzb2MgWyAoXCJFQUxSRUFEWVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVBTFJFQURZXG4gIHwgYEFzc29jIFsgKFwiRU5PVFNPQ0tcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9UU09DS1xuICB8IGBBc3NvYyBbIChcIkVERVNUQUREUlJFUVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVERVNUQUREUlJFUVxuICB8IGBBc3NvYyBbIChcIkVNU0dTSVpFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU1TR1NJWkVcbiAgfCBgQXNzb2MgWyAoXCJFUFJPVE9UWVBFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVBST1RPVFlQRVxuICB8IGBBc3NvYyBbIChcIkVOT1BST1RPT1BUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PUFJPVE9PUFRcbiAgfCBgQXNzb2MgWyAoXCJFUFJPVE9OT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FUFJPVE9OT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFU09DS1ROT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FU09DS1ROT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFT1BOT1RTVVBQXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU9QTk9UU1VQUFxuICB8IGBBc3NvYyBbIChcIkVQRk5PU1VQUE9SVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVQRk5PU1VQUE9SVFxuICB8IGBBc3NvYyBbIChcIkVBRk5PU1VQUE9SVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVBRk5PU1VQUE9SVFxuICB8IGBBc3NvYyBbIChcIkVBRERSSU5VU0VcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQUREUklOVVNFXG4gIHwgYEFzc29jIFsgKFwiRUFERFJOT1RBVkFJTFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVBRERSTk9UQVZBSUxcbiAgfCBgQXNzb2MgWyAoXCJFTkVURE9XTlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVORVRET1dOXG4gIHwgYEFzc29jIFsgKFwiRU5FVFVOUkVBQ0hcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTkVUVU5SRUFDSFxuICB8IGBBc3NvYyBbIChcIkVORVRSRVNFVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVORVRSRVNFVFxuICB8IGBBc3NvYyBbIChcIkVDT05OQUJPUlRFRFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVDT05OQUJPUlRFRFxuICB8IGBBc3NvYyBbIChcIkVDT05OUkVTRVRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQ09OTlJFU0VUXG4gIHwgYEFzc29jIFsgKFwiRU5PQlVGU1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT0JVRlNcbiAgfCBgQXNzb2MgWyAoXCJFSVNDT05OXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlTQ09OTlxuICB8IGBBc3NvYyBbIChcIkVOT1RDT05OXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PVENPTk5cbiAgfCBgQXNzb2MgWyAoXCJFU0hVVERPV05cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FU0hVVERPV05cbiAgfCBgQXNzb2MgWyAoXCJFVE9PTUFOWVJFRlNcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FVE9PTUFOWVJFRlNcbiAgfCBgQXNzb2MgWyAoXCJFVElNRURPVVRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FVElNRURPVVRcbiAgfCBgQXNzb2MgWyAoXCJFQ09OTlJFRlVTRURcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQ09OTlJFRlVTRURcbiAgfCBgQXNzb2MgWyAoXCJFSE9TVERPV05cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FSE9TVERPV05cbiAgfCBgQXNzb2MgWyAoXCJFSE9TVFVOUkVBQ0hcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FSE9TVFVOUkVBQ0hcbiAgfCBgQXNzb2MgWyAoXCJFTE9PUFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVMT09QXG4gIHwgYEFzc29jIFsgKFwiRU9WRVJGTE9XXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU9WRVJGTE9XXG4gIHwgYEFzc29jIFsgKFwiRVVOS05PV05FUlJcIiwgaW50KSBdIC0+IFVuaXhMYWJlbHMuRVVOS05PV05FUlIgKHRvX2ludCBpbnQpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoYnVpbGRfbXNnIFwidW5peCBsYWJlbHMgZXJyb3JcIiwgeCkpXG5cbmxldCBvZl91bml4X2Vycm9yID0gZnVuY3Rpb25cbiAgfCBVbml4LkUyQklHIC0+IGBBc3NvYyBbIFwiRTJCSUdcIiwgYE51bGwgXVxuICB8IFVuaXguRUFDQ0VTIC0+IGBBc3NvYyBbIFwiRUFDQ0VTXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVBR0FJTiAtPiBgQXNzb2MgWyBcIkVBR0FJTlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQkFERiAtPiBgQXNzb2MgWyBcIkVCQURGXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVCVVNZIC0+IGBBc3NvYyBbIFwiRUJVU1lcIiwgYE51bGwgXVxuICB8IFVuaXguRUNISUxEIC0+IGBBc3NvYyBbIFwiRUNISUxEXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVERUFETEsgLT4gYEFzc29jIFsgXCJFREVBRExLXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVET00gLT4gYEFzc29jIFsgXCJFRE9NXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVFWElTVCAtPiBgQXNzb2MgWyBcIkVFWElTVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FRkFVTFQgLT4gYEFzc29jIFsgXCJFRkFVTFRcIiwgYE51bGwgXVxuICB8IFVuaXguRUZCSUcgLT4gYEFzc29jIFsgXCJFRkJJR1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FSU5UUiAtPiBgQXNzb2MgWyBcIkVJTlRSXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVJTlZBTCAtPiBgQXNzb2MgWyBcIkVJTlZBTFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FSU8gLT4gYEFzc29jIFsgXCJFSU9cIiwgYE51bGwgXVxuICB8IFVuaXguRUlTRElSIC0+IGBBc3NvYyBbIFwiRUlTRElSXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVNRklMRSAtPiBgQXNzb2MgWyBcIkVNRklMRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTUxJTksgLT4gYEFzc29jIFsgXCJFTUxJTktcIiwgYE51bGwgXVxuICB8IFVuaXguRU5BTUVUT09MT05HIC0+IGBBc3NvYyBbIFwiRU5BTUVUT09MT05HXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVORklMRSAtPiBgQXNzb2MgWyBcIkVORklMRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9ERVYgLT4gYEFzc29jIFsgXCJFTk9ERVZcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PRU5UIC0+IGBBc3NvYyBbIFwiRU5PRU5UXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT0VYRUMgLT4gYEFzc29jIFsgXCJFTk9FWEVDXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT0xDSyAtPiBgQXNzb2MgWyBcIkVOT0xDS1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9NRU0gLT4gYEFzc29jIFsgXCJFTk9NRU1cIiwgYE51bGwgXVxuICB8IFVuaXguRU5PU1BDIC0+IGBBc3NvYyBbIFwiRU5PU1BDXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT1NZUyAtPiBgQXNzb2MgWyBcIkVOT1NZU1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9URElSIC0+IGBBc3NvYyBbIFwiRU5PVERJUlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9URU1QVFkgLT4gYEFzc29jIFsgXCJFTk9URU1QVFlcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PVFRZIC0+IGBBc3NvYyBbIFwiRU5PVFRZXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOWElPIC0+IGBBc3NvYyBbIFwiRU5YSU9cIiwgYE51bGwgXVxuICB8IFVuaXguRVBFUk0gLT4gYEFzc29jIFsgXCJFUEVSTVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FUElQRSAtPiBgQXNzb2MgWyBcIkVQSVBFXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVSQU5HRSAtPiBgQXNzb2MgWyBcIkVSQU5HRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FUk9GUyAtPiBgQXNzb2MgWyBcIkVST0ZTXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVTUElQRSAtPiBgQXNzb2MgWyBcIkVTUElQRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FU1JDSCAtPiBgQXNzb2MgWyBcIkVTUkNIXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVYREVWIC0+IGBBc3NvYyBbIFwiRVhERVZcIiwgYE51bGwgXVxuICB8IFVuaXguRVdPVUxEQkxPQ0sgLT4gYEFzc29jIFsgXCJFV09VTERCTE9DS1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FSU5QUk9HUkVTUyAtPiBgQXNzb2MgWyBcIkVJTlBST0dSRVNTXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVBTFJFQURZIC0+IGBBc3NvYyBbIFwiRUFMUkVBRFlcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PVFNPQ0sgLT4gYEFzc29jIFsgXCJFTk9UU09DS1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FREVTVEFERFJSRVEgLT4gYEFzc29jIFsgXCJFREVTVEFERFJSRVFcIiwgYE51bGwgXVxuICB8IFVuaXguRU1TR1NJWkUgLT4gYEFzc29jIFsgXCJFTVNHU0laRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FUFJPVE9UWVBFIC0+IGBBc3NvYyBbIFwiRVBST1RPVFlQRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9QUk9UT09QVCAtPiBgQXNzb2MgWyBcIkVOT1BST1RPT1BUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVQUk9UT05PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVQUk9UT05PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FU09DS1ROT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFU09DS1ROT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXguRU9QTk9UU1VQUCAtPiBgQXNzb2MgWyBcIkVPUE5PVFNVUFBcIiwgYE51bGwgXVxuICB8IFVuaXguRVBGTk9TVVBQT1JUIC0+IGBBc3NvYyBbIFwiRVBGTk9TVVBQT1JUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVBRk5PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVBRk5PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQUREUklOVVNFIC0+IGBBc3NvYyBbIFwiRUFERFJJTlVTRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQUREUk5PVEFWQUlMIC0+IGBBc3NvYyBbIFwiRUFERFJOT1RBVkFJTFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTkVURE9XTiAtPiBgQXNzb2MgWyBcIkVORVRET1dOXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVORVRVTlJFQUNIIC0+IGBBc3NvYyBbIFwiRU5FVFVOUkVBQ0hcIiwgYE51bGwgXVxuICB8IFVuaXguRU5FVFJFU0VUIC0+IGBBc3NvYyBbIFwiRU5FVFJFU0VUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVDT05OQUJPUlRFRCAtPiBgQXNzb2MgWyBcIkVDT05OQUJPUlRFRFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQ09OTlJFU0VUIC0+IGBBc3NvYyBbIFwiRUNPTk5SRVNFVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9CVUZTIC0+IGBBc3NvYyBbIFwiRU5PQlVGU1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FSVNDT05OIC0+IGBBc3NvYyBbIFwiRUlTQ09OTlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9UQ09OTiAtPiBgQXNzb2MgWyBcIkVOT1RDT05OXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVTSFVURE9XTiAtPiBgQXNzb2MgWyBcIkVTSFVURE9XTlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FVE9PTUFOWVJFRlMgLT4gYEFzc29jIFsgXCJFVE9PTUFOWVJFRlNcIiwgYE51bGwgXVxuICB8IFVuaXguRVRJTUVET1VUIC0+IGBBc3NvYyBbIFwiRVRJTUVET1VUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVDT05OUkVGVVNFRCAtPiBgQXNzb2MgWyBcIkVDT05OUkVGVVNFRFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FSE9TVERPV04gLT4gYEFzc29jIFsgXCJFSE9TVERPV05cIiwgYE51bGwgXVxuICB8IFVuaXguRUhPU1RVTlJFQUNIIC0+IGBBc3NvYyBbIFwiRUhPU1RVTlJFQUNIXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVMT09QIC0+IGBBc3NvYyBbIFwiRUxPT1BcIiwgYE51bGwgXVxuICB8IFVuaXguRU9WRVJGTE9XIC0+IGBBc3NvYyBbIFwiRU9WRVJGTE9XXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVVTktOT1dORVJSIGludCAtPiBgQXNzb2MgWyBcIkVVTktOT1dORVJSXCIsIG9mX2ludCBpbnQgXVxuXG5sZXQgKHRvX3VuaXhfZXJyb3IgOiBZb2pzb24uQmFzaWMudCAtPiBVbml4LmVycm9yKSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwiRTJCSUdcIiwgYE51bGwpIF0gLT4gVW5peC5FMkJJR1xuICB8IGBBc3NvYyBbIChcIkVBQ0NFU1wiLCBgTnVsbCkgXSAtPiBVbml4LkVBQ0NFU1xuICB8IGBBc3NvYyBbIChcIkVBR0FJTlwiLCBgTnVsbCkgXSAtPiBVbml4LkVBR0FJTlxuICB8IGBBc3NvYyBbIChcIkVCQURGXCIsIGBOdWxsKSBdIC0+IFVuaXguRUJBREZcbiAgfCBgQXNzb2MgWyAoXCJFQlVTWVwiLCBgTnVsbCkgXSAtPiBVbml4LkVCVVNZXG4gIHwgYEFzc29jIFsgKFwiRUNISUxEXCIsIGBOdWxsKSBdIC0+IFVuaXguRUNISUxEXG4gIHwgYEFzc29jIFsgKFwiRURFQURMS1wiLCBgTnVsbCkgXSAtPiBVbml4LkVERUFETEtcbiAgfCBgQXNzb2MgWyAoXCJFRE9NXCIsIGBOdWxsKSBdIC0+IFVuaXguRURPTVxuICB8IGBBc3NvYyBbIChcIkVFWElTVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVFWElTVFxuICB8IGBBc3NvYyBbIChcIkVGQVVMVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVGQVVMVFxuICB8IGBBc3NvYyBbIChcIkVGQklHXCIsIGBOdWxsKSBdIC0+IFVuaXguRUZCSUdcbiAgfCBgQXNzb2MgWyAoXCJFSU5UUlwiLCBgTnVsbCkgXSAtPiBVbml4LkVJTlRSXG4gIHwgYEFzc29jIFsgKFwiRUlOVkFMXCIsIGBOdWxsKSBdIC0+IFVuaXguRUlOVkFMXG4gIHwgYEFzc29jIFsgKFwiRUlPXCIsIGBOdWxsKSBdIC0+IFVuaXguRUlPXG4gIHwgYEFzc29jIFsgKFwiRUlTRElSXCIsIGBOdWxsKSBdIC0+IFVuaXguRUlTRElSXG4gIHwgYEFzc29jIFsgKFwiRU1GSUxFXCIsIGBOdWxsKSBdIC0+IFVuaXguRU1GSUxFXG4gIHwgYEFzc29jIFsgKFwiRU1MSU5LXCIsIGBOdWxsKSBdIC0+IFVuaXguRU1MSU5LXG4gIHwgYEFzc29jIFsgKFwiRU5BTUVUT09MT05HXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5BTUVUT09MT05HXG4gIHwgYEFzc29jIFsgKFwiRU5GSUxFXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5GSUxFXG4gIHwgYEFzc29jIFsgKFwiRU5PREVWXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PREVWXG4gIHwgYEFzc29jIFsgKFwiRU5PRU5UXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PRU5UXG4gIHwgYEFzc29jIFsgKFwiRU5PRVhFQ1wiLCBgTnVsbCkgXSAtPiBVbml4LkVOT0VYRUNcbiAgfCBgQXNzb2MgWyAoXCJFTk9MQ0tcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9MQ0tcbiAgfCBgQXNzb2MgWyAoXCJFTk9NRU1cIiwgYE51bGwpIF0gLT4gVW5peC5FTk9NRU1cbiAgfCBgQXNzb2MgWyAoXCJFTk9TUENcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9TUENcbiAgfCBgQXNzb2MgWyAoXCJFTk9TWVNcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9TWVNcbiAgfCBgQXNzb2MgWyAoXCJFTk9URElSXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PVERJUlxuICB8IGBBc3NvYyBbIChcIkVOT1RFTVBUWVwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1RFTVBUWVxuICB8IGBBc3NvYyBbIChcIkVOT1RUWVwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1RUWVxuICB8IGBBc3NvYyBbIChcIkVOWElPXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5YSU9cbiAgfCBgQXNzb2MgWyAoXCJFUEVSTVwiLCBgTnVsbCkgXSAtPiBVbml4LkVQRVJNXG4gIHwgYEFzc29jIFsgKFwiRVBJUEVcIiwgYE51bGwpIF0gLT4gVW5peC5FUElQRVxuICB8IGBBc3NvYyBbIChcIkVSQU5HRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVSQU5HRVxuICB8IGBBc3NvYyBbIChcIkVST0ZTXCIsIGBOdWxsKSBdIC0+IFVuaXguRVJPRlNcbiAgfCBgQXNzb2MgWyAoXCJFU1BJUEVcIiwgYE51bGwpIF0gLT4gVW5peC5FU1BJUEVcbiAgfCBgQXNzb2MgWyAoXCJFU1JDSFwiLCBgTnVsbCkgXSAtPiBVbml4LkVTUkNIXG4gIHwgYEFzc29jIFsgKFwiRVhERVZcIiwgYE51bGwpIF0gLT4gVW5peC5FWERFVlxuICB8IGBBc3NvYyBbIChcIkVXT1VMREJMT0NLXCIsIGBOdWxsKSBdIC0+IFVuaXguRVdPVUxEQkxPQ0tcbiAgfCBgQXNzb2MgWyAoXCJFSU5QUk9HUkVTU1wiLCBgTnVsbCkgXSAtPiBVbml4LkVJTlBST0dSRVNTXG4gIHwgYEFzc29jIFsgKFwiRUFMUkVBRFlcIiwgYE51bGwpIF0gLT4gVW5peC5FQUxSRUFEWVxuICB8IGBBc3NvYyBbIChcIkVOT1RTT0NLXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PVFNPQ0tcbiAgfCBgQXNzb2MgWyAoXCJFREVTVEFERFJSRVFcIiwgYE51bGwpIF0gLT4gVW5peC5FREVTVEFERFJSRVFcbiAgfCBgQXNzb2MgWyAoXCJFTVNHU0laRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVNU0dTSVpFXG4gIHwgYEFzc29jIFsgKFwiRVBST1RPVFlQRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVQUk9UT1RZUEVcbiAgfCBgQXNzb2MgWyAoXCJFTk9QUk9UT09QVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1BST1RPT1BUXG4gIHwgYEFzc29jIFsgKFwiRVBST1RPTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXguRVBST1RPTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRVNPQ0tUTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXguRVNPQ0tUTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRU9QTk9UU1VQUFwiLCBgTnVsbCkgXSAtPiBVbml4LkVPUE5PVFNVUFBcbiAgfCBgQXNzb2MgWyAoXCJFUEZOT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peC5FUEZOT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFQUZOT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peC5FQUZOT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFQUREUklOVVNFXCIsIGBOdWxsKSBdIC0+IFVuaXguRUFERFJJTlVTRVxuICB8IGBBc3NvYyBbIChcIkVBRERSTk9UQVZBSUxcIiwgYE51bGwpIF0gLT4gVW5peC5FQUREUk5PVEFWQUlMXG4gIHwgYEFzc29jIFsgKFwiRU5FVERPV05cIiwgYE51bGwpIF0gLT4gVW5peC5FTkVURE9XTlxuICB8IGBBc3NvYyBbIChcIkVORVRVTlJFQUNIXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5FVFVOUkVBQ0hcbiAgfCBgQXNzb2MgWyAoXCJFTkVUUkVTRVRcIiwgYE51bGwpIF0gLT4gVW5peC5FTkVUUkVTRVRcbiAgfCBgQXNzb2MgWyAoXCJFQ09OTkFCT1JURURcIiwgYE51bGwpIF0gLT4gVW5peC5FQ09OTkFCT1JURURcbiAgfCBgQXNzb2MgWyAoXCJFQ09OTlJFU0VUXCIsIGBOdWxsKSBdIC0+IFVuaXguRUNPTk5SRVNFVFxuICB8IGBBc3NvYyBbIChcIkVOT0JVRlNcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9CVUZTXG4gIHwgYEFzc29jIFsgKFwiRUlTQ09OTlwiLCBgTnVsbCkgXSAtPiBVbml4LkVJU0NPTk5cbiAgfCBgQXNzb2MgWyAoXCJFTk9UQ09OTlwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1RDT05OXG4gIHwgYEFzc29jIFsgKFwiRVNIVVRET1dOXCIsIGBOdWxsKSBdIC0+IFVuaXguRVNIVVRET1dOXG4gIHwgYEFzc29jIFsgKFwiRVRPT01BTllSRUZTXCIsIGBOdWxsKSBdIC0+IFVuaXguRVRPT01BTllSRUZTXG4gIHwgYEFzc29jIFsgKFwiRVRJTUVET1VUXCIsIGBOdWxsKSBdIC0+IFVuaXguRVRJTUVET1VUXG4gIHwgYEFzc29jIFsgKFwiRUNPTk5SRUZVU0VEXCIsIGBOdWxsKSBdIC0+IFVuaXguRUNPTk5SRUZVU0VEXG4gIHwgYEFzc29jIFsgKFwiRUhPU1RET1dOXCIsIGBOdWxsKSBdIC0+IFVuaXguRUhPU1RET1dOXG4gIHwgYEFzc29jIFsgKFwiRUhPU1RVTlJFQUNIXCIsIGBOdWxsKSBdIC0+IFVuaXguRUhPU1RVTlJFQUNIXG4gIHwgYEFzc29jIFsgKFwiRUxPT1BcIiwgYE51bGwpIF0gLT4gVW5peC5FTE9PUFxuICB8IGBBc3NvYyBbIChcIkVPVkVSRkxPV1wiLCBgTnVsbCkgXSAtPiBVbml4LkVPVkVSRkxPV1xuICB8IGBBc3NvYyBbIChcIkVVTktOT1dORVJSXCIsIGludCkgXSAtPiBVbml4LkVVTktOT1dORVJSICh0b19pbnQgaW50KVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGJ1aWxkX21zZyBcInVuaXggZXJyb3JcIiwgeCkpXG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgWW9qc29uLkJhc2ljLndyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnYikgc3RvcCA9IFN0b3Agb2YgJ2IgfCBTdWNjZXNzIG9mICdhXG5cbmxldCBzdWNjZXNzIGEgPSBTdWNjZXNzIGFcbmxldCBzdG9wIGEgPSBTdG9wIGFcblxubGV0IHN1Y2Nlc3Nfb3Jfc3RvcCBmIGcgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFN1Y2Nlc3MgYSAtPiBmIGFcbiAgfCBTdG9wIGEgLT4gZyBhXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIHByaW50IDogRm9ybWF0LmZvcm1hdHRlciAtPiB0IC0+IHVuaXRcbmVuZFxuXG50eXBlICgncGFyYW1ldGVycywgJ2Vycm9yLCAnYSkgd2l0aF9sb2dfd3JhcCA9XG4gICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24gLT4gZXhuIC0+ICdlcnJvcikgLT5cbiAgJ3BhcmFtZXRlcnMgLT5cbiAgJ2Vycm9yIC0+XG4gICdhXG5cbm1vZHVsZSB0eXBlIFNldCA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuICB2YWwgc2luZ2xldG9uIDogZWx0IC0+IHRcbiAgdmFsIGlzX3NpbmdsZXRvbiA6IHQgLT4gYm9vbFxuICB2YWwgYWRkIDogZWx0IC0+IHQgLT4gdFxuXG4gIHZhbCBhZGRfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgZWx0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCByZW1vdmUgOiBlbHQgLT4gdCAtPiB0XG5cbiAgdmFsIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiB0IC0+ICdlcnJvciAqIGJvb2wgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiB0IC0+ICdlcnJvciAqIGJvb2wgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHJlbW92ZV93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHNwbGl0IDogZWx0IC0+IHQgLT4gdCAqIGJvb2wgKiB0XG4gIHZhbCB1bmlvbiA6IHQgLT4gdCAtPiB0XG4gIHZhbCBkaXNqb2ludF91bmlvbiA6IHQgLT4gdCAtPiB0IG9wdGlvblxuICB2YWwgaW50ZXIgOiB0IC0+IHQgLT4gdFxuXG4gIHZhbCBtaW51cyA6IHQgLT4gdCAtPiB0XG4gICgqKiBbbWludXMgYSBiXSBjb250YWlucyBlbGVtZW50cyBvZiBbYV0gdGhhdCBhcmUgbm90IGluIFtiXSAqKVxuXG4gIHZhbCBkaWZmIDogdCAtPiB0IC0+IHRcbiAgKCoqIFtkaWZmIGEgYl0gPSBbbWludXMgKHVuaW9uIGEgYikgKGludGVyIGEgYildICopXG5cbiAgdmFsIG1pbnVzX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHVuaW9uX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGRpc2pvaW50X3VuaW9uX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGludGVyX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGRpZmZfd2l0aF9sb2dzIDogKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG4gICgqIHZhbCBzcGxpdF93aXRoX2xvZ3M6XG4gICAgICAgICgncGFyYW1ldGVycywnZXJyb3IsZWx0IC0+IHQgLT4gJ2Vycm9yICogKCB0ICogYm9vbCAqIHQpKSB3aXRoX2xvZ193cmFwICopXG5cbiAgdmFsIHNpemUgOiB0IC0+IGludFxuICB2YWwgbWVtIDogZWx0IC0+IHQgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgdmFsIGZpbHRlciA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0XG5cbiAgdmFsIGZpbHRlcl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBmb3JfYWxsIDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgdmFsIHBhcnRpdGlvbiA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0ICogdFxuXG4gIHZhbCBwYXJ0aXRpb25fd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgKGVsdCAtPiBib29sKSAtPiB0IC0+ICdlcnJvciAqIHQgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBzdWJzZXQgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgaXRlciA6IChlbHQgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgZm9sZF9pbnYgOiAoZWx0IC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gIHZhbCBlbGVtZW50cyA6IHQgLT4gZWx0IGxpc3RcbiAgdmFsIHByaW50IDogRm9ybWF0LmZvcm1hdHRlciAtPiB0IC0+IHVuaXRcbiAgdmFsIGNob29zZSA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgcmFuZG9tIDogUmFuZG9tLlN0YXRlLnQgLT4gdCAtPiBlbHQgb3B0aW9uXG4gIHZhbCBtaW5fZWx0IDogdCAtPiBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0IDogdCAtPiBlbHQgb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgTWFwID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgc2V0XG4gIHR5cGUgKydhIHRcblxuICB2YWwgZW1wdHkgOiAnYSB0XG4gIHZhbCBpc19lbXB0eSA6ICdhIHQgLT4gYm9vbFxuICB2YWwgc2l6ZSA6ICdhIHQgLT4gaW50XG4gIHZhbCByb290IDogJ2EgdCAtPiAoZWx0ICogJ2EpIG9wdGlvblxuICB2YWwgbWF4X2tleSA6ICdhIHQgLT4gZWx0IG9wdGlvblxuICB2YWwgYWRkIDogZWx0IC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgcmVtb3ZlIDogZWx0IC0+ICdhIHQgLT4gJ2EgdFxuXG4gIHZhbCBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICBlbHQgLT4gJ2EgLT4gJ2EgdCAtPiAnZXJyb3IgKiBib29sICogJ2EgdCApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2UgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiBib29sICogJ2EgdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBwb3AgOiBlbHQgLT4gJ2EgdCAtPiAnYSBvcHRpb24gKiAnYSB0XG4gIHZhbCBtZXJnZSA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiAoZWx0ICogJ2EpIG9wdGlvblxuICB2YWwgZmluZF9vcHRpb24gOiBlbHQgLT4gJ2EgdCAtPiAnYSBvcHRpb25cbiAgdmFsIGZpbmRfZGVmYXVsdCA6ICdhIC0+IGVsdCAtPiAnYSB0IC0+ICdhXG5cbiAgdmFsIGZpbmRfb3B0aW9uX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIG9wdGlvbikgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBmaW5kX2RlZmF1bHRfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EgLT4gZWx0IC0+ICdhIHQgLT4gJ2Vycm9yICogJ2EpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgbWVtIDogZWx0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgZGlmZiA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0ICogJ2EgdFxuICB2YWwgdW5pb24gOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgdXBkYXRlIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGRpZmZfcHJlZCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdCAqICdhIHRcblxuICB2YWwgYWRkX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiAnYSAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgcmVtb3ZlX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgam9pbl93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAnYSB0IC0+IGVsdCAtPiAnYSAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgc3BsaXRfd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgZWx0IC0+ICdhIHQgLT4gJ2Vycm9yICogKCdhIHQgKiAnYSBvcHRpb24gKiAnYSB0KSApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCB1cGRhdGVfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EgdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgbWFwMl93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+ICdhIC0+ICdlcnJvciAqICdjKSAtPlxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiAnYiAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gJ2EgLT4gJ2IgLT4gJ2Vycm9yICogJ2MpIC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiB0IC0+XG4gICAgICAnZXJyb3IgKiAnYyB0IClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIG1hcDJ6X3dpdGhfbG9ncyA6XG4gICAgKCAncGFyYW1ldGVycyxcbiAgICAgICdlcnJvcixcbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gJ2EgLT4gJ2EgLT4gJ2Vycm9yICogJ2EpIC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnZXJyb3IgKiAnYSB0IClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGZvbGQyel93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IGVsdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICdhIHQgLT5cbiAgICAgICdiIHQgLT5cbiAgICAgICdjIC0+XG4gICAgICAnZXJyb3IgKiAnYyApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBmb2xkMl93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IGVsdCAtPiAnYSAtPiAnYyAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gZWx0IC0+ICdiIC0+ICdjIC0+ICdlcnJvciAqICdjKSAtPlxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiBlbHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2Vycm9yICogJ2MpIC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiB0IC0+XG4gICAgICAnYyAtPlxuICAgICAgJ2Vycm9yICogJ2MgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyA6XG4gICAgKCAncGFyYW1ldGVycyxcbiAgICAgICdlcnJvcixcbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gZWx0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdlcnJvciAqICdjKSAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgdCAtPlxuICAgICAgJ2MgLT5cbiAgICAgICdlcnJvciAqICdjIClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGl0ZXIyX3NwYXJzZV93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IGVsdCAtPiAnYSAtPiAnYiAtPiAnZXJyb3IpIC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiB0IC0+XG4gICAgICAnZXJyb3IgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZGlmZl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCAnYSB0IC0+ICdhIHQgLT4gJ2Vycm9yICogJ2EgdCAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZGlmZl9wcmVkX3dpdGhfbG9ncyA6XG4gICAgKCAncGFyYW1ldGVycyxcbiAgICAgICdlcnJvcixcbiAgICAgICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2Vycm9yICogJ2EgdCAqICdhIHQgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgbWVyZ2Vfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EgdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgdW5pb25fd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EgdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZm9sZF9yZXN0cmljdGlvbl93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoZWx0IC0+ICdhIC0+ICdlcnJvciAqICdiIC0+ICdlcnJvciAqICdiKSAtPlxuICAgICAgc2V0IC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiAtPlxuICAgICAgJ2Vycm9yICogJ2IgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zX3dpdGhfbG9ncyA6XG4gICAgKCAncGFyYW1ldGVycyxcbiAgICAgICdlcnJvcixcbiAgICAgIChlbHQgLT4gJ2EgLT4gJ2Vycm9yICogJ2IgLT4gJ2Vycm9yICogJ2IpIC0+XG4gICAgICAoZWx0IC0+ICdlcnJvciAqICdiIC0+ICdlcnJvciAqICdiKSAtPlxuICAgICAgc2V0IC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiAtPlxuICAgICAgJ2Vycm9yICogJ2IgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgaXRlciA6IChlbHQgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGVsdCAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuXG4gIHZhbCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIDpcbiAgICAoZWx0IC0+ICdhIC0+ICdiIC0+ICgnYiwgJ2MpIFN0b3Auc3RvcCkgLT4gJ2EgdCAtPiAnYiAtPiAoJ2IsICdjKSBTdG9wLnN0b3BcblxuICB2YWwgbW9uYWRpY19mb2xkMiA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgKiAnYykgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+IGVsdCAtPiAnYSAtPiAnYyAtPiAnbWV0aG9kX2hhbmRsZXIgKiAnYykgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+IGVsdCAtPiAnYiAtPiAnYyAtPiAnbWV0aG9kX2hhbmRsZXIgKiAnYykgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgICdjIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogJ2NcblxuICB2YWwgbW9uYWRpY19mb2xkMl9zcGFyc2UgOlxuICAgICdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnYyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAqICdjXG5cbiAgdmFsIG1vbmFkaWNfaXRlcjJfc3BhcnNlIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgICgncGFyYW1ldGVycyAtPiAnbWV0aG9kX2hhbmRsZXIgLT4gZWx0IC0+ICdhIC0+ICdiIC0+ICdtZXRob2RfaGFuZGxlcikgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgICdtZXRob2RfaGFuZGxlclxuXG4gIHZhbCBtb25hZGljX2ZvbGRfcmVzdHJpY3Rpb24gOlxuICAgICdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+ICdtZXRob2RfaGFuZGxlciAtPiBlbHQgLT4gJ2EgLT4gJ2IgLT4gJ21ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgc2V0IC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogJ2JcblxuICB2YWwgbWFwaSA6IChlbHQgLT4gJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICB2YWwgbWFwIDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgdmFsIG1hcDIgOiAoJ2EgLT4gJ2EgLT4gJ2EpIC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBmb3JfYWxsIDogKGVsdCAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGZpbHRlcl9vbmUgOiAoZWx0IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gKGVsdCAqICdhKSBvcHRpb25cbiAgdmFsIGNvbXBhcmUgOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgYmluZGluZ3MgOiAnYSB0IC0+IChlbHQgKiAnYSkgbGlzdFxuXG4gIHZhbCBwcmludCA6XG4gICAgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdCkgLT4gRm9ybWF0LmZvcm1hdHRlciAtPiAnYSB0IC0+IHVuaXRcblxuICB2YWwgb2ZfanNvbiA6XG4gICAgP2xhYl9rZXk6c3RyaW5nIC0+XG4gICAgP2xhYl92YWx1ZTpzdHJpbmcgLT5cbiAgICA/ZXJyb3JfbXNnOnN0cmluZyAtPlxuICAgIChZb2pzb24uQmFzaWMudCAtPiBlbHQpIC0+XG4gICAgKFlvanNvbi5CYXNpYy50IC0+ICd2YWx1ZSkgLT5cbiAgICBZb2pzb24uQmFzaWMudCAtPlxuICAgICd2YWx1ZSB0XG5cbiAgdmFsIHRvX2pzb24gOlxuICAgID9sYWJfa2V5OnN0cmluZyAtPlxuICAgID9sYWJfdmFsdWU6c3RyaW5nIC0+XG4gICAgKGVsdCAtPiBZb2pzb24uQmFzaWMudCkgLT5cbiAgICAoJ3ZhbHVlIC0+IFlvanNvbi5CYXNpYy50KSAtPlxuICAgICd2YWx1ZSB0IC0+XG4gICAgWW9qc29uLkJhc2ljLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZWx0XG5cbiAgbW9kdWxlIFNldCA6IFNldCB3aXRoIHR5cGUgZWx0ID0gZWx0XG4gIG1vZHVsZSBNYXAgOiBNYXAgd2l0aCB0eXBlIGVsdCA9IGVsdCBhbmQgdHlwZSBzZXQgPSBTZXQudFxuZW5kXG5cbmV4Y2VwdGlvbiBEZWFkQ29kZUlzTm90RGVhZCBvZiBzdHJpbmdcblxubW9kdWxlIE1ha2UgKE9yZCA6IE9yZGVyZWRUeXBlKSA6IFMgd2l0aCB0eXBlIGVsdCA9IE9yZC50ID0gc3RydWN0XG4gIHR5cGUgZWx0ID0gT3JkLnRcblxuICBtb2R1bGUgU2V0ID0gc3RydWN0XG4gICAgdHlwZSBlbHQgPSBPcmQudFxuXG4gICAgbW9kdWxlIFByaXZhdGUgOiBzaWdcbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgRW1wdHkgfCBOb2RlIG9mIHQgKiBlbHQgKiB0ICogaW50ICogaW50XG5cbiAgICAgIHZhbCBlbXB0eSA6IHRcbiAgICAgIHZhbCBoZWlnaHQgOiB0IC0+IGludFxuICAgICAgdmFsIHNpemUgOiB0IC0+IGludFxuICAgICAgdmFsIG5vZGUgOiB0IC0+IGVsdCAtPiB0IC0+IHRcbiAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEVtcHR5IHwgTm9kZSBvZiB0ICogZWx0ICogdCAqIGludCAqIGludFxuXG4gICAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuXG4gICAgICBsZXQgc2l6ZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcblxuICAgICAgbGV0IG5vZGUgbGVmdCB2YWx1ZSByaWdodCA9XG4gICAgICAgIGxldCBobCA9IGhlaWdodCBsZWZ0IGluXG4gICAgICAgIGxldCBociA9IGhlaWdodCByaWdodCBpblxuICAgICAgICBOb2RlXG4gICAgICAgICAgKCBsZWZ0LFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgIChpZiBobCA+IGhyIHRoZW5cbiAgICAgICAgICAgICAgIGhsXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgaHIpXG4gICAgICAgICAgICArIDEsXG4gICAgICAgICAgICBzaXplIGxlZnQgKyBzaXplIHJpZ2h0ICsgMSApXG4gICAgZW5kXG5cbiAgICB0eXBlIHQgPSBQcml2YXRlLnRcblxuICAgIGxldCBlbXB0eSA9IFByaXZhdGUuZW1wdHlcbiAgICBsZXQgaGVpZ2h0ID0gUHJpdmF0ZS5oZWlnaHRcbiAgICBsZXQgc2l6ZSA9IFByaXZhdGUuc2l6ZVxuICAgIGxldCBub2RlID0gUHJpdmF0ZS5ub2RlXG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHRydWVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8gLT4gZmFsc2VcblxuICAgIGxldCBzaW5nbGV0b24gdmFsdWUgPSBub2RlIGVtcHR5IHZhbHVlIGVtcHR5XG5cbiAgICBsZXQgaXNfc2luZ2xldG9uIHNldCA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGZhbHNlXG4gICAgICB8IFByaXZhdGUuTm9kZSAoc2V0MSwgXywgc2V0MiwgXywgXykgLT4gaXNfZW1wdHkgc2V0MSAmJiBpc19lbXB0eSBzZXQyXG5cbiAgICBsZXQgYmFsYW5jZSBsZWZ0IHZhbHVlIHJpZ2h0ID1cbiAgICAgIGxldCBoZWlnaHRfbGVmdCA9IGhlaWdodCBsZWZ0IGluXG4gICAgICBsZXQgaGVpZ2h0X3JpZ2h0ID0gaGVpZ2h0IHJpZ2h0IGluXG4gICAgICBpZiBoZWlnaHRfbGVmdCA+IGhlaWdodF9yaWdodCArIDIgdGhlbiAoXG4gICAgICAgIG1hdGNoIGxlZnQgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgMjIyXCIpXG4gICAgICAgICgqIGhlaWdodF9sZWZ0ID4gaGVpZ2h0X3JpZ2h0ICsgMiA+PSAyICopXG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0bGVmdCwgbGVmdHZhbHVlLCBsZWZ0cmlnaHQsIF8sIF8pIC0+XG4gICAgICAgICAgaWYgaGVpZ2h0IGxlZnRsZWZ0ID49IGhlaWdodCBsZWZ0cmlnaHQgdGhlblxuICAgICAgICAgICAgbm9kZSBsZWZ0bGVmdCBsZWZ0dmFsdWUgKG5vZGUgbGVmdHJpZ2h0IHZhbHVlIHJpZ2h0KVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggbGVmdHJpZ2h0IHdpdGhcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiByYWlzZSAoRGVhZENvZGVJc05vdERlYWQgXCJTZXRNYXAgbGluZSAyMjlcIilcbiAgICAgICAgICAgICgqIDAgPD0gaGVpZ2h0IGxlZnRsZWZ0IDwgaGVpZ2h0IGxlZnRyaWdodCAqKVxuICAgICAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnRyaWdodGxlZnQsIGxlZnRyaWdodHZhbHVlLCBsZWZ0cmlnaHRyaWdodCwgXywgXylcbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgICAgIChub2RlIGxlZnRsZWZ0IGxlZnR2YWx1ZSBsZWZ0cmlnaHRsZWZ0KVxuICAgICAgICAgICAgICAgIGxlZnRyaWdodHZhbHVlXG4gICAgICAgICAgICAgICAgKG5vZGUgbGVmdHJpZ2h0cmlnaHQgdmFsdWUgcmlnaHQpXG4gICAgICAgICAgKVxuICAgICAgKSBlbHNlIGlmIGhlaWdodF9yaWdodCA+IGhlaWdodF9sZWZ0ICsgMiB0aGVuIChcbiAgICAgICAgbWF0Y2ggcmlnaHQgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgMjM4XCIpXG4gICAgICAgICgqIGhlaWdodF9yaWdodCA+IGhlaWdodF9sZWZ0ICsgMiA+PSAyICopXG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChyaWdodGxlZnQsIHJpZ2h0dmFsdWUsIHJpZ2h0cmlnaHQsIF8sIF8pIC0+XG4gICAgICAgICAgaWYgaGVpZ2h0IHJpZ2h0cmlnaHQgPj0gaGVpZ2h0IHJpZ2h0bGVmdCB0aGVuXG4gICAgICAgICAgICBub2RlIChub2RlIGxlZnQgdmFsdWUgcmlnaHRsZWZ0KSByaWdodHZhbHVlIHJpZ2h0cmlnaHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIHJpZ2h0bGVmdCB3aXRoXG4gICAgICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgMjQ1XCIpXG4gICAgICAgICAgICAoKiAwIDw9IGhlaWdodCByaWdodHJpZ2h0IDwgaGVpZ2h0IHJpZ2h0bGVmdCAqKVxuICAgICAgICAgICAgfCBQcml2YXRlLk5vZGUgKHJpZ2h0bGVmdGxlZnQsIHJpZ2h0bGVmdHZhbHVlLCByaWdodGxlZnRyaWdodCwgXywgXylcbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgICAgIChub2RlIGxlZnQgdmFsdWUgcmlnaHRsZWZ0bGVmdClcbiAgICAgICAgICAgICAgICByaWdodGxlZnR2YWx1ZVxuICAgICAgICAgICAgICAgIChub2RlIHJpZ2h0bGVmdHJpZ2h0IHJpZ2h0dmFsdWUgcmlnaHRyaWdodClcbiAgICAgICAgICApXG4gICAgICApIGVsc2VcbiAgICAgICAgbm9kZSBsZWZ0IHZhbHVlIHJpZ2h0XG5cbiAgICBsZXQgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQgdmFsdWUgcmlnaHQgPVxuICAgICAgdHJ5IGVycm9yLCBiYWxhbmNlIGxlZnQgdmFsdWUgcmlnaHRcbiAgICAgIHdpdGggRGVhZENvZGVJc05vdERlYWQgbG9jIC0+XG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lIChsb2MgXiBcIiBTZXQgaW52YXJpYW50IGlzIGJyb2tlbiwga2VlcCBvbiB3aXRoIHVuYmFsYW5jZWQgc2V0XCIpKVxuICAgICAgICAgICAgKEZhaWx1cmUgXCJTZXRfYW5kX01hcC5TRVQuYmFsYW5jZVwiKVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbm9kZSBsZWZ0IHZhbHVlIHJpZ2h0XG5cbiAgICAoKiogQmV3YXJlIHNvbWUgY29kZSByZWxpZXMgb24gdGhlIGludmFyaWFudCBbYWRkIHggcyA9PSBzXSBpZmYgW21lbSB4IHNdICopXG4gICAgbGV0IHJlYyBhZGQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCB2LCByLCBfLCBfKSBhcyB0IC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICB0XG4gICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IG8gPSBhZGQgeCBsIGluXG4gICAgICAgICAgaWYgbyA9PSBsIHRoZW5cbiAgICAgICAgICAgIHRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBiYWxhbmNlIG8gdiByXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IG8gPSBhZGQgeCByIGluXG4gICAgICAgICAgaWYgbyA9PSByIHRoZW5cbiAgICAgICAgICAgIHRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBiYWxhbmNlIGwgdiBvXG4gICAgICAgIClcblxuICAgIGxldCByZWMgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBuZXdfdmFsIHNldCA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCB0cnVlLCBzaW5nbGV0b24gbmV3X3ZhbFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlX3NldCwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgbmV3X3ZhbCB2YWx1ZV9zZXQgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgIGVycm9yLCBmYWxzZSwgc2V0XG4gICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBib29sLCBsZWZ0JyA9XG4gICAgICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWwgbGVmdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBzZXQgPVxuICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlX3NldCByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGJvb2wsIHNldFxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgcmlnaHQnID1cbiAgICAgICAgICAgIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbmV3X3ZhbCByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBzZXQgPVxuICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQgdmFsdWVfc2V0IHJpZ2h0J1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGJvb2wsIHNldFxuICAgICAgICApXG5cbiAgICBsZXQgYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbmV3X3ZhbHVlIHNldCA9XG4gICAgICBsZXQgZXJyb3IsIGJvb2wsIHNldCA9XG4gICAgICAgIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbmV3X3ZhbHVlIHNldFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciA9XG4gICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgIGVycm9yXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgKFNvbWUgKFwiU2V0TWFwIGxpbmUgMzAwXCIgXiBcIiBhbiBhbHJlYWR5IGVsdCBoYXMgYmVlbiBhZGRlZCB0byBhIHNldFwiKSlcbiAgICAgICAgICAgIChGYWlsdXJlIFwiU2V0X2FuZF9NYXAuU0VULmFkZFwiKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBzZXRcblxuICAgIGxldCBhZGRfZXZlbl9pZl9pdF9leGlzdHMgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWx1ZSBzZXQgPVxuICAgICAgbGV0IGVycm9yLCBfLCBzZXQgPVxuICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWx1ZSBzZXRcbiAgICAgIGluXG4gICAgICBlcnJvciwgc2V0XG5cbiAgICBsZXQgcmVjIGpvaW4gbGVmdCB2YWx1ZSByaWdodCA9XG4gICAgICBtYXRjaCBsZWZ0LCByaWdodCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gYWRkIHZhbHVlIHJpZ2h0XG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gYWRkIHZhbHVlIGxlZnRcbiAgICAgIHwgKCBQcml2YXRlLk5vZGUgKGxlZnRsZWZ0LCBsZWZ0dmFsdWUsIGxlZnRyaWdodCwgbGVmdGhlaWdodCwgXyksXG4gICAgICAgICAgUHJpdmF0ZS5Ob2RlIChyaWdodGxlZnQsIHJpZ2h0dmFsdWUsIHJpZ2h0cmlnaHQsIHJpZ2h0aGVpZ2h0LCBfKSApIC0+XG4gICAgICAgIGlmIGxlZnRoZWlnaHQgPiByaWdodGhlaWdodCArIDIgdGhlbiAoXG4gICAgICAgICAgbGV0IHJpZ2h0JyA9IGpvaW4gbGVmdHJpZ2h0IHZhbHVlIHJpZ2h0IGluXG4gICAgICAgICAgYmFsYW5jZSBsZWZ0bGVmdCBsZWZ0dmFsdWUgcmlnaHQnXG4gICAgICAgICkgZWxzZSBpZiByaWdodGhlaWdodCA+IGxlZnRoZWlnaHQgKyAyIHRoZW4gKFxuICAgICAgICAgIGxldCBsZWZ0JyA9IGpvaW4gbGVmdCB2YWx1ZSByaWdodGxlZnQgaW5cbiAgICAgICAgICBiYWxhbmNlIGxlZnQnIHJpZ2h0dmFsdWUgcmlnaHRyaWdodFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBub2RlIGxlZnQgdmFsdWUgcmlnaHRcblxuICAgIGxldCByZWMgc2FmZV9leHRyYWN0X21pbl9lbHQgbGVmdCB2YWx1ZSByaWdodCA9XG4gICAgICBtYXRjaCBsZWZ0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiB2YWx1ZSwgcmlnaHRcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0bGVmdCwgbGVmdHZhbHVlLCBsZWZ0cmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBtaW4sIGxlZnQnID0gc2FmZV9leHRyYWN0X21pbl9lbHQgbGVmdGxlZnQgbGVmdHZhbHVlIGxlZnRyaWdodCBpblxuICAgICAgICBtaW4sIGJhbGFuY2UgbGVmdCcgdmFsdWUgcmlnaHRcblxuICAgIGxldCByZWMgbWluX2VsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldCA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+XG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJtaW5fZWx0X3dpdGhfbG9ncywgbGluZSAzMDNcIilcbiAgICAgICAgICAgIE5vdF9mb3VuZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIHYsIF8sIF8sIF8pIC0+IGVycm9yLCBTb21lIHZcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBfLCBfLCBfLCBfKSAtPlxuICAgICAgICBtaW5fZWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdFxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2VsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldCA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+XG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lIFwicmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzLCBsaW5lIDMxMVwiKSBOb3RfZm91bmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAoUHJpdmF0ZS5FbXB0eSwgXywgcmlnaHQsIF8sIF8pIC0+IGVycm9yLCByaWdodFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgcmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0XG4gICAgICAgIGluXG4gICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyB2YWx1ZSByaWdodFxuXG4gICAgbGV0IG1lcmdlIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgXywgUHJpdmF0ZS5Ob2RlIChsZWZ0MiwgdmFsdWUyLCByaWdodDIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBtaW4yLCBzZXQyJyA9IHNhZmVfZXh0cmFjdF9taW5fZWx0IGxlZnQyIHZhbHVlMiByaWdodDIgaW5cbiAgICAgICAgYmFsYW5jZSBzZXQxIG1pbjIgc2V0MidcblxuICAgIGxldCBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBzZXQxXG4gICAgICB8IFByaXZhdGUuTm9kZSBfLCBQcml2YXRlLk5vZGUgXyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxlZnQyID1cbiAgICAgICAgICByZW1vdmVfbWluX2VsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBlbHRfb3B0ID0gbWluX2VsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDIgaW5cbiAgICAgICAgKG1hdGNoIGVsdF9vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJtZXJnZV93aXRoX2xvZ3MsbGluZSAzMzlcIilcbiAgICAgICAgICAgICAgTm90X2ZvdW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgc2V0MVxuICAgICAgICB8IFNvbWUgZWx0IC0+IGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIGVsdCBsZWZ0MilcblxuICAgIGxldCByZWMgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQgdmFsdWUgcmlnaHQgPVxuICAgICAgbWF0Y2ggbGVmdCwgcmlnaHQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGFkZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIHJpZ2h0XG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgbGVmdFxuICAgICAgfCAoIFByaXZhdGUuTm9kZSAobGVmdGxlZnQsIGxlZnR2YWx1ZSwgbGVmdHJpZ2h0LCBsZWZ0aGVpZ2h0LCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKHJpZ2h0bGVmdCwgcmlnaHR2YWx1ZSwgcmlnaHRyaWdodCwgcmlnaHRoZWlnaHQsIF8pICkgLT5cbiAgICAgICAgaWYgbGVmdGhlaWdodCA+IHJpZ2h0aGVpZ2h0ICsgMiB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdHJpZ2h0IHZhbHVlIHJpZ2h0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBiYWxhbmNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdGxlZnQgbGVmdHZhbHVlIHJpZ2h0J1xuICAgICAgICApIGVsc2UgaWYgcmlnaHRoZWlnaHQgPiBsZWZ0aGVpZ2h0ICsgMiB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxlZnQnID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHZhbHVlIHJpZ2h0bGVmdFxuICAgICAgICAgIGluXG4gICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHJpZ2h0dmFsdWUgcmlnaHRyaWdodFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBlcnJvciwgbm9kZSBsZWZ0IHZhbHVlIHJpZ2h0XG5cbiAgICBsZXQgY29uY2F0IHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgXywgUHJpdmF0ZS5Ob2RlIChsZWZ0MiwgdmFsdWUyLCByaWdodDIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBtaW4yLCBzZXQyJyA9IHNhZmVfZXh0cmFjdF9taW5fZWx0IGxlZnQyIHZhbHVlMiByaWdodDIgaW5cbiAgICAgICAgam9pbiBzZXQxIG1pbjIgc2V0MidcblxuICAgIGxldCBjb25jYXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gZXJyb3IsIHNldDJcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgXywgUHJpdmF0ZS5Ob2RlIF8gLT5cbiAgICAgICAgbGV0IGVycm9yLCBsZWZ0MiA9XG4gICAgICAgICAgcmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgZWx0X29wdCA9IG1pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQyIGluXG4gICAgICAgIChtYXRjaCBlbHRfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwiY29uY2F0X3dpdGhfbG9ncyxsaW5lIDM5MFwiKVxuICAgICAgICAgICAgICBOb3RfZm91bmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBzZXQxXG4gICAgICAgIHwgU29tZSBlbHQgLT4gam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgZWx0IGxlZnQyKVxuXG4gICAgbGV0IHJlYyBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNwbGl0X3ZhbCBzZXQgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgKGVtcHR5LCBmYWxzZSwgZW1wdHkpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgc2V0X3ZhbCwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgc3BsaXRfdmFsIHNldF92YWwgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgIGVycm9yLCAobGVmdCwgdHJ1ZSwgcmlnaHQpXG4gICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdGxlZnQsIGJvb2wsIHJpZ2h0bGVmdCkgPVxuICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzcGxpdF92YWwgbGVmdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodHJpZ2h0ID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodGxlZnQgc2V0X3ZhbCByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIChsZWZ0bGVmdCwgYm9vbCwgcmlnaHRyaWdodClcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIChsZWZ0cmlnaHQsIGJvb2wsIHJpZ2h0cmlnaHQpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc3BsaXRfdmFsIHJpZ2h0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxlZnRsZWZ0ID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHNldF92YWwgbGVmdHJpZ2h0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgKGxlZnRsZWZ0LCBib29sLCByaWdodHJpZ2h0KVxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgYXMgc2V0IC0+IHNldFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlX3NldCwgcmlnaHQsIF8sIF8pIGFzIHNldCAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHZhbHVlIHZhbHVlX3NldCBpblxuICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgbWVyZ2UgbGVmdCByaWdodFxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBsZWZ0JyA9IHJlbW92ZSB2YWx1ZSBsZWZ0IGluXG4gICAgICAgICAgaWYgbGVmdCA9PSBsZWZ0JyB0aGVuXG4gICAgICAgICAgICBzZXRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBiYWxhbmNlIGxlZnQnIHZhbHVlX3NldCByaWdodFxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCByaWdodCcgPSByZW1vdmUgdmFsdWUgcmlnaHQgaW5cbiAgICAgICAgICBpZiByaWdodCA9PSByaWdodCcgdGhlblxuICAgICAgICAgICAgc2V0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmFsYW5jZSBsZWZ0IHZhbHVlX3NldCByaWdodCdcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2Ugd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlID1cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgYXMgc2V0IC0+IGVycm9yLCBmYWxzZSwgc2V0XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWVfc2V0LCByaWdodCwgXywgXykgYXMgc2V0IC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdmFsdWUgdmFsdWVfc2V0IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgc2V0ID0gbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHJpZ2h0IGluXG4gICAgICAgICAgZXJyb3IsIHRydWUsIHNldFxuICAgICAgICApIGVsc2UgaWYgYyA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBib29sLCBsZWZ0JyA9XG4gICAgICAgICAgICByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2Ugd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIGxlZnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGxlZnQgPT0gbGVmdCcgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIiAoU29tZSBcIlNldE1hcCBsaW5lIDQ1NFwiKVxuICAgICAgICAgICAgICAgICAgKGZhaWx3aXRoIFwiSW52YXJpYW50IGlzIGJyb2tlblwiKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgc2V0XG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgc2V0ID1cbiAgICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlX3NldCByaWdodFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBib29sLCBzZXRcbiAgICAgICAgICApXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBib29sLCByaWdodCcgPVxuICAgICAgICAgICAgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgcmlnaHQgPT0gcmlnaHQnIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJTZXRNYXAgbGluZSA0NjdcIilcbiAgICAgICAgICAgICAgICAgIE5vdF9mb3VuZFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgc2V0XG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgc2V0ID1cbiAgICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQgdmFsdWVfc2V0IHJpZ2h0J1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBib29sLCBzZXRcbiAgICAgICAgICApXG4gICAgICAgIClcblxuICAgIGxldCByZW1vdmVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBzZXQgPVxuICAgICAgbGV0IGVycm9yLCBib29sLCBzZXQgPVxuICAgICAgICByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2Ugd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIHNldFxuICAgICAgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBlcnJvciwgc2V0XG4gICAgICBlbHNlXG4gICAgICAgICggd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lXG4gICAgICAgICAgICAgICAoXCJTZXRNYXAgbGluZSA0ODFcIlxuICAgICAgICAgICAgICBeIFwiQXR0ZW1wdCB0byByZW1vdmUgYW4gZWx0IHRoYXQgZG9lcyBub3QgZXhpc3RcIikpXG4gICAgICAgICAgICBOb3RfZm91bmQsXG4gICAgICAgICAgc2V0IClcblxuICAgIGxldCByZWMgc3BsaXQgc3BsaXRfdmFsdWUgc2V0ID1cbiAgICAgIG1hdGNoIHNldCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHksIGZhbHNlLCBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHNldF92YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgc3BsaXRfdmFsdWUgc2V0X3ZhbHVlIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICBsZWZ0LCB0cnVlLCByaWdodFxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBsZWZ0bGVmdCwgYm9vbCwgcmlnaHRsZWZ0ID0gc3BsaXQgc3BsaXRfdmFsdWUgbGVmdCBpblxuICAgICAgICAgIGxldCByaWdodHJpZ2h0ID0gam9pbiByaWdodGxlZnQgc2V0X3ZhbHVlIHJpZ2h0IGluXG4gICAgICAgICAgbGVmdGxlZnQsIGJvb2wsIHJpZ2h0cmlnaHRcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgbGVmdHJpZ2h0LCBib29sLCByaWdodHJpZ2h0ID0gc3BsaXQgc3BsaXRfdmFsdWUgcmlnaHQgaW5cbiAgICAgICAgICBsZXQgbGVmdGxlZnQgPSBqb2luIGxlZnQgc2V0X3ZhbHVlIGxlZnRyaWdodCBpblxuICAgICAgICAgIGxlZnRsZWZ0LCBib29sLCByaWdodHJpZ2h0XG4gICAgICAgIClcblxuICAgIGxldCByZWMgdW5pb24gc2V0MSBzZXQyID1cbiAgICAgIG1hdGNoIHNldDEsIHNldDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IHNldDJcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBzZXQxXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIGhlaWdodDEsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBoZWlnaHQyLCBfKSApIC0+XG4gICAgICAgIGlmIGhlaWdodDEgPiBoZWlnaHQyIHRoZW5cbiAgICAgICAgICBpZiBoZWlnaHQyID0gMSB0aGVuXG4gICAgICAgICAgICBhZGQgdmFsdWUyIHNldDFcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBsZWZ0MiwgXywgcmlnaHQyID0gc3BsaXQgdmFsdWUxIHNldDIgaW5cbiAgICAgICAgICAgIGxldCBsZWZ0JyA9IHVuaW9uIGxlZnQxIGxlZnQyIGluXG4gICAgICAgICAgICBsZXQgcmlnaHQnID0gdW5pb24gcmlnaHQxIHJpZ2h0MiBpblxuICAgICAgICAgICAgam9pbiBsZWZ0JyB2YWx1ZTEgcmlnaHQnXG4gICAgICAgICAgKVxuICAgICAgICBlbHNlIGlmIGhlaWdodDEgPSAxIHRoZW5cbiAgICAgICAgICBhZGQgdmFsdWUxIHNldDJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGxlZnQxLCBfLCByaWdodDEgPSBzcGxpdCB2YWx1ZTIgc2V0MSBpblxuICAgICAgICAgIGxldCBsZWZ0JyA9IHVuaW9uIGxlZnQxIGxlZnQyIGluXG4gICAgICAgICAgbGV0IHJpZ2h0JyA9IHVuaW9uIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgICAgICBqb2luIGxlZnQnIHZhbHVlMiByaWdodCdcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyBkaXNqb2ludF91bmlvbiBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gU29tZSBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gU29tZSBzZXQxXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIGhlaWdodDEsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBoZWlnaHQyLCBfKSApIC0+XG4gICAgICAgIGlmIGhlaWdodDEgPiBoZWlnaHQyIHRoZW5cbiAgICAgICAgICBpZiBoZWlnaHQyID0gMSB0aGVuIChcbiAgICAgICAgICAgIGxldCBvdXQgPSBhZGQgdmFsdWUyIHNldDEgaW5cbiAgICAgICAgICAgIGlmIG91dCA9PSBzZXQxIHRoZW5cbiAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBTb21lIG91dFxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbGVmdDIsIF8sIHJpZ2h0MiA9IHNwbGl0IHZhbHVlMSBzZXQyIGluXG4gICAgICAgICAgICBtYXRjaCBkaXNqb2ludF91bmlvbiBsZWZ0MSBsZWZ0MiwgZGlzam9pbnRfdW5pb24gcmlnaHQxIHJpZ2h0MiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgbGVmdCcsIFNvbWUgcmlnaHQnIC0+IFNvbWUgKGpvaW4gbGVmdCcgdmFsdWUxIHJpZ2h0JylcbiAgICAgICAgICAgIHwgXywgXyAtPiBOb25lXG4gICAgICAgICAgKVxuICAgICAgICBlbHNlIGlmIGhlaWdodDEgPSAxIHRoZW4gKFxuICAgICAgICAgIGxldCBvdXQgPSBhZGQgdmFsdWUxIHNldDIgaW5cbiAgICAgICAgICBpZiBzZXQyID09IG91dCB0aGVuXG4gICAgICAgICAgICBOb25lXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgU29tZSBvdXRcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgbGVmdDEsIF8sIHJpZ2h0MSA9IHNwbGl0IHZhbHVlMiBzZXQxIGluXG4gICAgICAgICAgbWF0Y2ggZGlzam9pbnRfdW5pb24gbGVmdDEgbGVmdDIsIGRpc2pvaW50X3VuaW9uIHJpZ2h0MSByaWdodDIgd2l0aFxuICAgICAgICAgIHwgU29tZSBsZWZ0JywgU29tZSByaWdodCcgLT4gU29tZSAoam9pbiBsZWZ0JyB2YWx1ZTIgcmlnaHQnKVxuICAgICAgICAgIHwgXywgXyAtPiBOb25lXG4gICAgICAgIClcblxuICAgIGxldCByZWMgdW5pb25fZ2VuIGFkZF9nZW4gd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBzZXQxXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIGhlaWdodDEsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBoZWlnaHQyLCBfKSApIC0+XG4gICAgICAgIGlmIGhlaWdodDEgPiBoZWlnaHQyIHRoZW5cbiAgICAgICAgICBpZiBoZWlnaHQyID0gMSB0aGVuXG4gICAgICAgICAgICBhZGRfZ2VuIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTIgc2V0MVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIF8sIHJpZ2h0MikgPVxuICAgICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlMSBzZXQyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgICAgIHVuaW9uX2dlbiBhZGRfZ2VuIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MSBsZWZ0MlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgcmlnaHQnID1cbiAgICAgICAgICAgICAgdW5pb25fZ2VuIGFkZF9nZW4gd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUxIHJpZ2h0J1xuICAgICAgICAgIClcbiAgICAgICAgZWxzZSBpZiBoZWlnaHQxID0gMSB0aGVuXG4gICAgICAgICAgYWRkX2dlbiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUxIHNldDJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdDEsIF8sIHJpZ2h0MSkgPVxuICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTIgc2V0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgICB1bmlvbl9nZW4gYWRkX2dlbiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmlnaHQnID1cbiAgICAgICAgICAgIHVuaW9uX2dlbiBhZGRfZ2VuIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodDEgcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUyIHJpZ2h0J1xuICAgICAgICApXG5cbiAgICBsZXQgdW5pb25fd2l0aF9sb2dzIHcgcCBlIHMgcycgPSB1bmlvbl9nZW4gYWRkX2V2ZW5faWZfaXRfZXhpc3RzIHcgcCBlIHMgcydcbiAgICBsZXQgZGlzam9pbnRfdW5pb25fd2l0aF9sb2dzIHcgcCBlIHMgcycgPSB1bmlvbl9nZW4gYWRkX3dpdGhfbG9ncyB3IHAgZSBzIHMnXG5cbiAgICBsZXQgc3V0dXJlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIChsZWZ0MiwgYm9vbCwgcmlnaHQyKSBmID1cbiAgICAgIGxldCBsZWZ0JyA9IGYgbGVmdDEgbGVmdDIgaW5cbiAgICAgIGxldCByaWdodCcgPSBmIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBqb2luIGxlZnQnIHZhbHVlMSByaWdodCdcbiAgICAgIGVsc2VcbiAgICAgICAgY29uY2F0IGxlZnQnIHJpZ2h0J1xuXG4gICAgbGV0IHN1dHVyZV9ub3QgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSkgKGxlZnQyLCBib29sLCByaWdodDIpIGYgPVxuICAgICAgbGV0IGxlZnQnID0gZiBsZWZ0MSBsZWZ0MiBpblxuICAgICAgbGV0IHJpZ2h0JyA9IGYgcmlnaHQxIHJpZ2h0MiBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGNvbmNhdCBsZWZ0JyByaWdodCdcbiAgICAgIGVsc2VcbiAgICAgICAgam9pbiBsZWZ0JyB2YWx1ZTEgcmlnaHQnXG5cbiAgICBsZXQgcmVjIGludGVyIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCB0cmlwbGUyID0gc3BsaXQgdmFsdWUxIHNldDIgaW5cbiAgICAgICAgc3V0dXJlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIHRyaXBsZTIgaW50ZXJcblxuICAgIGxldCBzdXR1cmVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKVxuICAgICAgICAobGVmdDIsIGJvb2wsIHJpZ2h0MikgZiA9XG4gICAgICBsZXQgZXJyb3IsIGxlZnQnID0gZiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDIgaW5cbiAgICAgIGxldCBlcnJvciwgcmlnaHQnID0gZiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MiBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyB2YWx1ZTEgcmlnaHQnXG4gICAgICBlbHNlXG4gICAgICAgIGNvbmNhdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHJpZ2h0J1xuXG4gICAgbGV0IHN1dHVyZV9ub3Rfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKVxuICAgICAgICAobGVmdDIsIGJvb2wsIHJpZ2h0MikgZiA9XG4gICAgICBsZXQgZXJyb3IsIGxlZnQnID0gZiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDIgaW5cbiAgICAgIGxldCBlcnJvciwgcmlnaHQnID0gZiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MiBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGNvbmNhdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHJpZ2h0J1xuICAgICAgZWxzZVxuICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUxIHJpZ2h0J1xuXG4gICAgbGV0IHJlYyBpbnRlcl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgbWgnLCB0cmlwbGUyID0gc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTEgc2V0MiBpblxuICAgICAgICBzdXR1cmVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBtaCcgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSkgdHJpcGxlMlxuICAgICAgICAgIGludGVyX3dpdGhfbG9nc1xuXG4gICAgbGV0IHJlYyBkaWZmIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IHRyaXBsZTIgPSBzcGxpdCB2YWx1ZTEgc2V0MiBpblxuICAgICAgICBzdXR1cmVfbm90IChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIHRyaXBsZTIgZGlmZlxuXG4gICAgbGV0IHJlYyBkaWZmX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc2V0MSBzZXQyID1cbiAgICAgIG1hdGNoIHNldDEsIHNldDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGVycm9yLCBlbXB0eVxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBzZXQxXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgZXJyb3IsIHRyaXBsZTIgPVxuICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUxIHNldDJcbiAgICAgICAgaW5cbiAgICAgICAgc3V0dXJlX25vdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIChsZWZ0MSwgdmFsdWUxLCByaWdodDEpXG4gICAgICAgICAgdHJpcGxlMiBkaWZmX3dpdGhfbG9nc1xuXG4gICAgbGV0IHJlYyBtaW51cyBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gZW1wdHlcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBzZXQxXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgdHJpcGxlMiA9IHNwbGl0IHZhbHVlMSBzZXQyIGluXG4gICAgICAgIHN1dHVyZV9ub3QgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSkgdHJpcGxlMiBtaW51c1xuXG4gICAgbGV0IHJlYyBtaW51c193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgZW1wdHlcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IGVycm9yLCB0cmlwbGUyID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlMSBzZXQyXG4gICAgICAgIGluXG4gICAgICAgIHN1dHVyZV9ub3Rfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKVxuICAgICAgICAgIHRyaXBsZTIgbWludXNfd2l0aF9sb2dzXG5cbiAgICBsZXQgcmVjIG1lbSBzZWFyY2hlZF92YWx1ZSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBzZXRfdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHNlYXJjaGVkX3ZhbHVlIHNldF92YWx1ZSBpblxuICAgICAgICBjID09IDBcbiAgICAgICAgfHwgbWVtIHNlYXJjaGVkX3ZhbHVlXG4gICAgICAgICAgICAgKGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgICAgICBsZWZ0XG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByaWdodClcblxuICAgIGxldCBmaWx0ZXIgcCBzZXQgPVxuICAgICAgbGV0IHJlYyBmaWx0IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gYWNjdVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIGZpbHRcbiAgICAgICAgICAgIChmaWx0XG4gICAgICAgICAgICAgICAoaWYgcCB2YWx1ZSB0aGVuXG4gICAgICAgICAgICAgICAgICBhZGQgdmFsdWUgYWNjdVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGFjY3UpXG4gICAgICAgICAgICAgICBsZWZ0KVxuICAgICAgICAgICAgcmlnaHRcbiAgICAgIGluXG4gICAgICBmaWx0IGVtcHR5IHNldFxuXG4gICAgbGV0IGZpbHRlcl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHAgc2V0ID1cbiAgICAgIGxldCByZWMgZmlsdCBhY2N1IHNldCA9XG4gICAgICAgIG1hdGNoIHNldCB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBhY2N1XG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsaXN0ID0gYWNjdSBpblxuICAgICAgICAgIGZpbHRcbiAgICAgICAgICAgIChmaWx0XG4gICAgICAgICAgICAgICAoaWYgcCB2YWx1ZSB0aGVuXG4gICAgICAgICAgICAgICAgICBhZGRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBsaXN0XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgYWNjdSlcbiAgICAgICAgICAgICAgIGxlZnQpXG4gICAgICAgICAgICByaWdodFxuICAgICAgaW5cbiAgICAgIGZpbHQgKGVycm9yLCBlbXB0eSkgc2V0XG5cbiAgICBsZXQgcGFydGl0aW9uIHAgc2V0ID1cbiAgICAgIGxldCByZWMgcGFydCAoKHQsIGYpIGFzIGFjY3UpID0gZnVuY3Rpb25cbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgICBwYXJ0XG4gICAgICAgICAgICAocGFydFxuICAgICAgICAgICAgICAgKGlmIHAgdmFsdWUgdGhlblxuICAgICAgICAgICAgICAgICAgYWRkIHZhbHVlIHQsIGZcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICB0LCBhZGQgdmFsdWUgZilcbiAgICAgICAgICAgICAgIGxlZnQpXG4gICAgICAgICAgICByaWdodFxuICAgICAgaW5cbiAgICAgIHBhcnQgKGVtcHR5LCBlbXB0eSkgc2V0XG5cbiAgICBsZXQgcGFydGl0aW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcCBzZXQgPVxuICAgICAgbGV0IHJlYyBwYXJ0ICgocmgsIHQsIGYpIGFzIGFjY3UpIHNldCA9XG4gICAgICAgIG1hdGNoIHNldCB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBhY2N1XG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgICAgcGFydFxuICAgICAgICAgICAgKHBhcnRcbiAgICAgICAgICAgICAgIChpZiBwIHZhbHVlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGIgPSBhZGRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyByaCB2YWx1ZSB0IGluXG4gICAgICAgICAgICAgICAgICBhLCBiLCBmXG4gICAgICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgICAgIGxldCBhLCBjID0gYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgcmggdmFsdWUgZiBpblxuICAgICAgICAgICAgICAgICAgYSwgdCwgY1xuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICBsZWZ0KVxuICAgICAgICAgICAgcmlnaHRcbiAgICAgIGluXG4gICAgICBwYXJ0IChlcnJvciwgZW1wdHksIGVtcHR5KSBzZXRcblxuICAgIHR5cGUgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGVsdCAqIHQgKiBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gZW51bSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW51bVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgY29uc19lbnVtIChNb3JlICh2YWx1ZSwgcmlnaHQsIGVudW0pKSBsZWZ0XG5cbiAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgIG1hdGNoIGUxLCBlMiB3aXRoXG4gICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgIHwgRW5kLCBfIC0+IC0xXG4gICAgICB8IF8sIEVuZCAtPiAxXG4gICAgICB8IE1vcmUgKHYxLCByMSwgZTEpLCBNb3JlICh2MiwgcjIsIGUyKSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgIGlmIGMgPD4gMCB0aGVuXG4gICAgICAgICAgY1xuICAgICAgICBlbHNlXG4gICAgICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBlMSByMSkgKGNvbnNfZW51bSBlMiByMilcblxuICAgIGxldCBjb21wYXJlIHNldDEgc2V0MiA9XG4gICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIEVuZCBzZXQxKSAoY29uc19lbnVtIEVuZCBzZXQyKVxuXG4gICAgbGV0IGVxdWFsIHNldDEgc2V0MiA9IGNvbXBhcmUgc2V0MSBzZXQyID09IDBcblxuICAgIGxldCByZWMgc3Vic2V0IHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiB0cnVlXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgKCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksXG4gICAgICAgICAgUHJpdmF0ZS5Ob2RlIChsZWZ0MiwgdmFsdWUyLCByaWdodDIsIF8sIF8pICkgLT5cbiAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2YWx1ZTEgdmFsdWUyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICBzdWJzZXQgbGVmdDEgbGVmdDIgJiYgc3Vic2V0IHJpZ2h0MSByaWdodDJcbiAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgc3Vic2V0IChub2RlIGxlZnQxIHZhbHVlMSBlbXB0eSkgbGVmdDIgJiYgc3Vic2V0IHJpZ2h0MSBzZXQyXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzdWJzZXQgKG5vZGUgZW1wdHkgdmFsdWUxIHJpZ2h0MSkgcmlnaHQyICYmIHN1YnNldCBsZWZ0MSBzZXQyXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gKClcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCAoKSA9IGl0ZXIgZiBsZWZ0IGluXG4gICAgICAgIGxldCAoKSA9IGYgdmFsdWUgaW5cbiAgICAgICAgaXRlciBmIHJpZ2h0XG5cbiAgICBsZXQgcmVjIGZvbGQgZiBzZXQgYWNjdSA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGZvbGQgZiByaWdodCAoZiB2YWx1ZSAoZm9sZCBmIGxlZnQgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvbGRfaW52IGYgcyBhY2N1ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCB2LCByLCBfLCBfKSAtPiBmb2xkX2ludiBmIGwgKGYgdiAoZm9sZF9pbnYgZiByIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHRydWVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIHAgdmFsdWUgJiYgZm9yX2FsbCBwIGxlZnQgJiYgZm9yX2FsbCBwIHJpZ2h0XG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBmYWxzZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgcCB2YWx1ZSB8fCBleGlzdHMgcCBsZWZ0IHx8IGV4aXN0cyBwIHJpZ2h0XG5cbiAgICBsZXQgZWxlbWVudHMgc2V0ID1cbiAgICAgIGxldCByZWMgZWxlbWVudHNfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gYWNjdVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIGVsZW1lbnRzX2F1eCAodmFsdWUgOjogZWxlbWVudHNfYXV4IGFjY3UgcmlnaHQpIGxlZnRcbiAgICAgIGluXG4gICAgICBlbGVtZW50c19hdXggW10gc2V0XG5cbiAgICBsZXQgcmVjIGF1eF9wcmludCBmID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiAoKVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIGtleSwgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWFAXVwiIE9yZC5wcmludCBrZXlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChQcml2YXRlLkVtcHR5LCBrZXksIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYUBdLEAgJWFcIiBPcmQucHJpbnQga2V5IGF1eF9wcmludCByaWdodFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLEAgQFslYUBdXCIgYXV4X3ByaW50IGxlZnQgT3JkLnByaW50IGtleVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSxAIEBbJWFAXSxAICVhXCIgYXV4X3ByaW50IGxlZnQgT3JkLnByaW50IGtleVxuICAgICAgICAgIGF1eF9wcmludCByaWdodFxuXG4gICAgbGV0IHByaW50IGYgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlxceEUyXFx4ODhcXHg4NVwiXG4gICAgICB8IFByaXZhdGUuTm9kZSBfIGFzIG0gLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbeyVhfUBdXCIgYXV4X3ByaW50IG1cblxuICAgIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIHYsIF8sIF8sIF8pIC0+IFNvbWUgdlxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIF8sIF8sIF8sIF8pIC0+IG1pbl9lbHQgbGVmdFxuXG4gICAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgdiwgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT4gU29tZSB2XG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgXywgcmlnaHQsIF8sIF8pIC0+IG1heF9lbHQgcmlnaHRcblxuICAgIGxldCBjaG9vc2UgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChfLCB2LCBfLCBfLCBfKSAtPiBTb21lIHZcblxuICAgIGxldCByZWMgZmluZF9hY2MgYWltX2FjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGwsIGtleSwgciwgXywgYWNjKSAtPlxuICAgICAgICBpZiBhaW1fYWNjID49IGFjYyB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgYWNjX2wgPSBzaXplIGwgaW5cbiAgICAgICAgICBsZXQgYWNjX3IgPSBzaXplIHIgaW5cbiAgICAgICAgICBpZiBhY2NfbCA+IGFpbV9hY2MgdGhlblxuICAgICAgICAgICAgZmluZF9hY2MgYWltX2FjYyBsXG4gICAgICAgICAgZWxzZSBpZiBhY2NfciArIGFjY19sID4gYWltX2FjYyB0aGVuXG4gICAgICAgICAgICBmaW5kX2FjYyAoYWltX2FjYyAtIGFjY19sKSByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgU29tZSBrZXlcbiAgICAgICAgKVxuXG4gICAgKCogbGV0IHJlYyBmaW5kX2FjYyBrIG0gPVxuICAgICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgICAgfCBQcml2YXRlLk5vZGUgKGwsIGtleSwgciwgXywgXykgLT5cbiAgICAgICAgICAgIGxldCBzID0gc2l6ZSBsIGluXG4gICAgICAgICAgICBpZiBrIDwgcyB0aGVuIGZpbmRfYWNjIGsgbFxuICAgICAgICAgICAgICBlbHNlIGlmIGsgPSBzIHRoZW4gU29tZSBrZXlcbiAgICAgICAgICAgICAgZWxzZSBmaW5kX2FjYyAoayAtIHMgLSAxKSByICopXG5cbiAgICBsZXQgcmFuZG9tIHJzIG0gPVxuICAgICAgbGV0IHMgPSBzaXplIG0gaW5cbiAgICAgIGlmIHMgPSAwIHRoZW5cbiAgICAgICAgTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBmaW5kX2FjYyAoUmFuZG9tLlN0YXRlLmludCBycyAoc2l6ZSBtKSkgbVxuXG4gICAgKCogbGV0IGFkZCA9IExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBhZGRfd2l0aF9sb2dzXG4gICAgICAgbGV0IHNwbGl0ID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIHNwbGl0X3dpdGhfbG9nc1xuICAgICAgIGxldCByZW1vdmUgPSAgTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIHJlbW92ZV93aXRoX2xvZ3NcbiAgICAgICBsZXQgdW5pb24gPSBMaWZ0X2Vycm9yX2xvZ3MubGlmdF9nZW5lcmljX2JpbmFyeV9mb3JfS2FTaW0gdW5pb25fd2l0aF9sb2dzXG4gICAgICAgbGV0IGludGVyID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIGludGVyX3dpdGhfbG9nc1xuICAgICAgIGxldCBkaWZmID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIGRpZmZfd2l0aF9sb2dzXG4gICAgICAgbGV0IG1pbnVzID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIG1pbnVzX3dpdGhfbG9nc1xuICAgICAgIGxldCBmaWx0ZXIgPSBMaWZ0X2Vycm9yX2xvZ3MubGlmdF9nZW5lcmljX2JpbmFyeV9mb3JfS2FTaW0gZmlsdGVyX3dpdGhfbG9nc1xuICAgICAgIGxldCBwYXJ0aXRpb24gPSBMaWZ0X2Vycm9yX2xvZ3MubGlmdF9nZW5lcmljX2JpbmFyeV9iaW5hcnlfZm9yX0thU2ltIHBhcnRpdGlvbl93aXRoX2xvZ3NcbiAgICAqKVxuICBlbmRcblxuICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICgqIE1hcCBpbXBsZW1lbnRhdGlvbiopXG5cbiAgbW9kdWxlIE1hcCA9IHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gT3JkLnRcblxuICAgIG1vZHVsZSBQcml2YXRlIDogc2lnXG4gICAgICB0eXBlICsnZGF0YSB0ID0gcHJpdmF0ZVxuICAgICAgICB8IEVtcHR5XG4gICAgICAgIHwgTm9kZSBvZiAnZGF0YSB0ICogZWx0ICogJ2RhdGEgKiAnZGF0YSB0ICogaW50ICogaW50XG5cbiAgICAgIHZhbCBlbXB0eSA6ICdhIHRcbiAgICAgIHZhbCBoZWlnaHQgOiAnYSB0IC0+IGludFxuICAgICAgdmFsIHNpemUgOiAnYSB0IC0+IGludFxuICAgICAgdmFsIG5vZGUgOiAnYSB0IC0+IGVsdCAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgKydkYXRhIHQgPVxuICAgICAgICB8IEVtcHR5XG4gICAgICAgIHwgTm9kZSBvZiAnZGF0YSB0ICogZWx0ICogJ2RhdGEgKiAnZGF0YSB0ICogaW50ICogaW50XG5cbiAgICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBoLCBfKSAtPiBoXG5cbiAgICAgIGxldCBzaXplID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgXywgcykgLT4gc1xuXG4gICAgICBsZXQgbm9kZSBsZWZ0IGtleTAgZGF0YSByaWdodCA9XG4gICAgICAgIGxldCBobCA9IGhlaWdodCBsZWZ0IGluXG4gICAgICAgIGxldCBociA9IGhlaWdodCByaWdodCBpblxuICAgICAgICBOb2RlXG4gICAgICAgICAgKCBsZWZ0LFxuICAgICAgICAgICAga2V5MCxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgICgxXG4gICAgICAgICAgICArXG4gICAgICAgICAgICBpZiBobCA+IGhyIHRoZW5cbiAgICAgICAgICAgICAgaGxcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgaHIpLFxuICAgICAgICAgICAgMSArIHNpemUgbGVmdCArIHNpemUgcmlnaHQgKVxuICAgIGVuZFxuXG4gICAgdHlwZSArJ2EgdCA9ICdhIFByaXZhdGUudFxuXG4gICAgbGV0IGVtcHR5ID0gUHJpdmF0ZS5lbXB0eVxuICAgIGxldCBoZWlnaHQgPSBQcml2YXRlLmhlaWdodFxuICAgIGxldCBzaXplID0gUHJpdmF0ZS5zaXplXG4gICAgbGV0IG5vZGUgPSBQcml2YXRlLm5vZGVcblxuICAgIHR5cGUgc2V0ID0gU2V0LnRcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBQcml2YXRlLk5vZGUgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJvb3QgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChfLCB4LCBkLCBfLCBfLCBfKSAtPiBTb21lICh4LCBkKVxuXG4gICAgbGV0IHJlYyBtYXhfa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgaywgXywgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT4gU29tZSBrXG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgXywgXywgbSwgXywgXykgLT4gbWF4X2tleSBtXG5cbiAgICBsZXQgYmFsYW5jZSBsZWZ0IGtleSBkYXRhIHJpZ2h0ID1cbiAgICAgIGxldCBoZWlnaHRfbGVmdCA9IGhlaWdodCBsZWZ0IGluXG4gICAgICBsZXQgaGVpZ2h0X3JpZ2h0ID0gaGVpZ2h0IHJpZ2h0IGluXG4gICAgICBpZiBoZWlnaHRfbGVmdCA+IGhlaWdodF9yaWdodCArIDIgdGhlbiAoXG4gICAgICAgIG1hdGNoIGxlZnQgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgODI4XCIpXG4gICAgICAgICgqIGhlaWdodF9sZWZ0ID4gaGVpZ2h0X3JpZ2h0ICsgMiA+PSAyICopXG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MCwga2V5MCwgZGF0YTAsIHJpZ2h0MCwgXywgXykgLT5cbiAgICAgICAgICBpZiBoZWlnaHQgbGVmdDAgPj0gaGVpZ2h0IHJpZ2h0MCB0aGVuXG4gICAgICAgICAgICBub2RlIGxlZnQwIGtleTAgZGF0YTAgKG5vZGUgcmlnaHQwIGtleSBkYXRhIHJpZ2h0KVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggcmlnaHQwIHdpdGhcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiByYWlzZSAoRGVhZENvZGVJc05vdERlYWQgXCJTZXRNYXAgbGluZSA4MzVcIilcbiAgICAgICAgICAgICgqIDAgPD0gaGVpZ2h0IGxlZnQwIDwgaGVpZ2h0IHJpZ2h0MCAqKVxuICAgICAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICAgICAgICBub2RlXG4gICAgICAgICAgICAgICAgKG5vZGUgbGVmdDAga2V5MCBkYXRhMCBsZWZ0MSlcbiAgICAgICAgICAgICAgICBrZXkxIGRhdGExXG4gICAgICAgICAgICAgICAgKG5vZGUgcmlnaHQxIGtleSBkYXRhIHJpZ2h0KVxuICAgICAgICAgIClcbiAgICAgICkgZWxzZSBpZiBoZWlnaHRfcmlnaHQgPiBoZWlnaHRfbGVmdCArIDIgdGhlbiAoXG4gICAgICAgIG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDg0NFwiKVxuICAgICAgICAoKiBoZWlnaHRfcmlnaHQgPiBoZWlnaHRfbGVmdCArIDIgPj0gMiAqKVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDAsIGtleTAsIGRhdGEwLCByaWdodDAsIF8sIF8pIC0+XG4gICAgICAgICAgaWYgaGVpZ2h0IHJpZ2h0MCA+PSBoZWlnaHQgbGVmdDAgdGhlblxuICAgICAgICAgICAgbm9kZSAobm9kZSBsZWZ0IGtleSBkYXRhIGxlZnQwKSBrZXkwIGRhdGEwIHJpZ2h0MFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggbGVmdDAgd2l0aFxuICAgICAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDg1MVwiKVxuICAgICAgICAgICAgKCogMCA8PSBoZWlnaHQgcmlnaHQwIDwgaGVpZ2h0IGxlZnQwICopXG4gICAgICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgICAgICAgIG5vZGUgKG5vZGUgbGVmdCBrZXkgZGF0YSBsZWZ0MSkga2V5MSBkYXRhMVxuICAgICAgICAgICAgICAgIChub2RlIHJpZ2h0MSBrZXkwIGRhdGEwIHJpZ2h0MClcbiAgICAgICAgICApXG4gICAgICApIGVsc2VcbiAgICAgICAgbm9kZSBsZWZ0IGtleSBkYXRhIHJpZ2h0XG5cbiAgICBsZXQgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQga2V5IGRhdGEgcmlnaHQgPVxuICAgICAgdHJ5IGVycm9yLCBiYWxhbmNlIGxlZnQga2V5IGRhdGEgcmlnaHRcbiAgICAgIHdpdGggRGVhZENvZGVJc05vdERlYWQgbG9jIC0+XG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lIChsb2MgXiBcIiBNYXAgaW52YXJpYW50IGlzIGJyb2tlbiwga2VlcCBvbiB3aXRoIHVuYmFsYW5jZWQgbWFwXCIpKVxuICAgICAgICAgICAgKEZhaWx1cmUgXCJTZXRfYW5kX01hcC5NYXAuYmFsYW5jZVwiKVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbm9kZSBsZWZ0IGtleSBkYXRhIHJpZ2h0XG5cbiAgICBsZXQgcmVjIGFkZCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gbm9kZSBlbXB0eSBrZXkgZGF0YSBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIGRhdGFfbWFwLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIG5vZGUgbGVmdCBrZXlfbWFwIGRhdGEgcmlnaHRcbiAgICAgICAgZWxzZSBpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICBiYWxhbmNlIChhZGQga2V5IGRhdGEgbGVmdCkga2V5X21hcCBkYXRhX21hcCByaWdodFxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmFsYW5jZSBsZWZ0IGtleV9tYXAgZGF0YV9tYXAgKGFkZCBrZXkgZGF0YSByaWdodClcblxuICAgIGxldCByZWMgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGtleSBkYXRhID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgdHJ1ZSwgbm9kZSBlbXB0eSBrZXkgZGF0YSBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIGRhdGFfbWFwLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIGVycm9yLCBmYWxzZSwgbm9kZSBsZWZ0IGtleV9tYXAgZGF0YSByaWdodFxuICAgICAgICBlbHNlIGlmIGNtcCA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBib29sLCBsZWZ0JyA9XG4gICAgICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5IGRhdGEgbGVmdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBtYXAgPVxuICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3IgbGVmdCcga2V5X21hcCBkYXRhX21hcCByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGJvb2wsIG1hcFxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgcmlnaHQnID1cbiAgICAgICAgICAgIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyB3YXJuIHBhcmFtZXRlciBlcnJvciBrZXkgZGF0YSByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBtYXAgPVxuICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3IgbGVmdCBrZXlfbWFwIGRhdGFfbWFwIHJpZ2h0J1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGJvb2wsIG1hcFxuICAgICAgICApXG5cbiAgICBsZXQgYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlciBlcnJvciBrZXkgZGF0YSBtYXAgPVxuICAgICAgbGV0IGVycm9yLCBib29sLCBtYXAgPVxuICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5IGRhdGEgbWFwXG4gICAgICBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGVycm9yLCBtYXBcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYSwgYiwgXywgXyA9IF9fUE9TX18gaW5cbiAgICAgICAgKCB3YXJuIHBhcmFtZXRlciBlcnJvciBcInNldE1hcC5tbCBcIlxuICAgICAgICAgICAgKFNvbWVcbiAgICAgICAgICAgICAgIChhIF4gXCIgbGluZTogXCIgXiBzdHJpbmdfb2ZfaW50IGJcbiAgICAgICAgICAgICAgXiBcIjogQXR0ZW1wdCB0byBhZGQgYW4gYXNzb2NpYXRpb24gb3ZlciBhIGZvcm1lciBvbmUgaW4gYSBtYXBcIikpXG4gICAgICAgICAgICAoRmFpbHVyZSBcIlNldF9hbmRfTWFwLk1hcC5hZGRcIiksXG4gICAgICAgICAgbWFwIClcbiAgICAgIClcblxuICAgIGxldCByZWMgZXh0cmFjdF9taW5fYmluZGluZyBtYXAga2V5IGRhdGEgbWFwJyA9XG4gICAgICBtYXRjaCBtYXAgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IChrZXksIGRhdGEpLCBtYXAnXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDIsIGtleTIsIGRhdGEyLCByaWdodDIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBtaW4sIGxlZnQnID0gZXh0cmFjdF9taW5fYmluZGluZyBsZWZ0MiBrZXkyIGRhdGEyIHJpZ2h0MiBpblxuICAgICAgICBtaW4sIGJhbGFuY2UgbGVmdCcga2V5IGRhdGEgbWFwJ1xuXG4gICAgbGV0IHJlYyBleHRyYWN0X21pbl9iaW5kaW5nX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbWFwIGtleSBkYXRhXG4gICAgICAgIG1hcCcgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgKChrZXksIGRhdGEpLCBtYXAnKVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQyLCBrZXkyLCBkYXRhMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICBsZXQgZXJyb3IsIChtaW4sIGxlZnQnKSA9XG4gICAgICAgICAgZXh0cmFjdF9taW5fYmluZGluZ193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQyIGtleTIgZGF0YTJcbiAgICAgICAgICAgIHJpZ2h0MlxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgKG1pbiwgYmFsYW5jZSBsZWZ0JyBrZXkgZGF0YSBtYXAnKVxuXG4gICAgbGV0IG1lcmdlIG1hcDEgbWFwMiA9XG4gICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBtYXAyXG4gICAgICB8IFByaXZhdGUuTm9kZSBfIC0+XG4gICAgICAgIChtYXRjaCBtYXAyIHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IG1hcDFcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQyLCBrZXkyLCBkYXRhMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCAoa2V5MywgZGF0YTMpLCBsZWZ0JyA9XG4gICAgICAgICAgICBleHRyYWN0X21pbl9iaW5kaW5nIGxlZnQyIGtleTIgZGF0YTIgcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBiYWxhbmNlIG1hcDEga2V5MyBkYXRhMyBsZWZ0JylcblxuICAgIGxldCBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcDEgbWFwMiA9XG4gICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgbWFwMlxuICAgICAgfCBQcml2YXRlLk5vZGUgXyAtPlxuICAgICAgICAobWF0Y2ggbWFwMiB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgbWFwMVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDIsIGtleTIsIGRhdGEyLCByaWdodDIsIF8sIF8pIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCAoKGtleTMsIGRhdGEzKSwgbGVmdCcpID1cbiAgICAgICAgICAgIGV4dHJhY3RfbWluX2JpbmRpbmdfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MiBrZXkyIGRhdGEyXG4gICAgICAgICAgICAgIHJpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcDEga2V5MyBkYXRhMyBsZWZ0JylcblxuICAgIGxldCByZWMgcmVtb3ZlIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIG1lcmdlIGxlZnQgcmlnaHRcbiAgICAgICAgZWxzZSBpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICBiYWxhbmNlIChyZW1vdmUga2V5IGxlZnQpIGtleV9tYXAgZGF0YSByaWdodFxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmFsYW5jZSBsZWZ0IGtleV9tYXAgZGF0YSAocmVtb3ZlIGtleSByaWdodClcblxuICAgIGxldCByZWMgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkgbWFwID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIGZhbHNlLCBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgY21wID0gT3JkLmNvbXBhcmUga2V5IGtleV9tYXAgaW5cbiAgICAgICAgaWYgY21wID0gMCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIG1hcCA9IG1lcmdlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCByaWdodCBpblxuICAgICAgICAgIGVycm9yLCB0cnVlLCBtYXBcbiAgICAgICAgKSBlbHNlIGlmIGNtcCA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBib29sLCBsZWZ0JyA9XG4gICAgICAgICAgICByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2Ugd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleSBsZWZ0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBsZWZ0JyA9PSBsZWZ0IHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJTZXRNYXAgbGluZSA5NjFcIilcbiAgICAgICAgICAgICAgICAgIChmYWlsd2l0aCBcIkludmFyaWFudCBpcyBicm9rZW5cIilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGJvb2wsIG1hcFxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIG1hcCA9XG4gICAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyBrZXlfbWFwIGRhdGEgcmlnaHRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgbWFwXG4gICAgICAgICAgKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgcmlnaHQnID1cbiAgICAgICAgICAgIHJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5IHJpZ2h0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiByaWdodCcgPT0gcmlnaHQgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIiAoU29tZSBcIlNldE1hcCBsaW5lIDk3OFwiKVxuICAgICAgICAgICAgICAgICAgKGZhaWx3aXRoIFwiSW52YXJpYW50IGlzIGJyb2tlblwiKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgbWFwXG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgbWFwID1cbiAgICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQga2V5X21hcCBkYXRhIHJpZ2h0J1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBib29sLCBtYXBcbiAgICAgICAgICApXG4gICAgICAgIClcblxuICAgIGxldCByZW1vdmVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkgbWFwID1cbiAgICAgIGxldCBlcnJvciwgYm9vbCwgbWFwID1cbiAgICAgICAgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkgbWFwXG4gICAgICBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGVycm9yLCBtYXBcbiAgICAgIGVsc2VcbiAgICAgICAgKCB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgKFNvbWVcbiAgICAgICAgICAgICAgIChcIlNldE1hcCBsaW5lIDk5NFwiXG4gICAgICAgICAgICAgIF4gXCJUcnkgdG8gcmVtb3ZlIGFuIGFzc29jaWF0aW9uIHRoYXQgaXMgbm90IGRlZmluZWQgaW4gTWFwLnJlbW92ZVwiXG4gICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgKGZhaWx3aXRoXG4gICAgICAgICAgICAgICBcIlRyeSB0byByZW1vdmUgYW4gYXNzb2NpYXRpb24gdGhhdCBpcyBub3QgZGVmaW5lZCBpbiBNYXAucmVtb3ZlXCIpLFxuICAgICAgICAgIG1hcCApXG5cbiAgICBsZXQgcmVjIHBvcCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSBhcyBtIC0+IE5vbmUsIG1cbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCB2LCBkLCByLCBfLCBfKSBhcyBtIC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICBTb21lIGQsIG1lcmdlIGwgclxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIG1hdGNoIHBvcCB4IGwgd2l0aFxuICAgICAgICAgIHwgKE5vbmUgYXMgbyksIF8gLT4gbywgbVxuICAgICAgICAgIHwgKFNvbWUgXyBhcyBvKSwgdCAtPiBvLCBiYWxhbmNlIHQgdiBkIHJcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBtYXRjaCBwb3AgeCByIHdpdGhcbiAgICAgICAgICB8IChOb25lIGFzIG8pLCBfIC0+IG8sIG1cbiAgICAgICAgICB8IChTb21lIF8gYXMgbyksIHQgLT4gbywgYmFsYW5jZSBsIHYgZCB0XG4gICAgICAgIClcblxuICAgIGxldCByZWMgam9pbiBsZWZ0IGtleSB2YWx1ZSByaWdodCA9XG4gICAgICBtYXRjaCBiYWxhbmNlIGxlZnQga2V5IHZhbHVlIHJpZ2h0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPlxuICAgICAgICByYWlzZSAoRGVhZENvZGVJc05vdERlYWQgXCJTZXRNYXAgbGluZSAxMDEzXCIpICgqIEJ5IGNhc2UgYW5hbHlzaXMgKilcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0Miwga2V5MiwgZGF0YTIsIHJpZ2h0MiwgXywgXykgYXMgbWFwMiAtPlxuICAgICAgICBsZXQgaCA9IGhlaWdodCBsZWZ0MiAtIGhlaWdodCByaWdodDIgaW5cbiAgICAgICAgaWYgaCA+IDIgfHwgaCA8IC0yIHRoZW5cbiAgICAgICAgICBqb2luIGxlZnQyIGtleTIgZGF0YTIgcmlnaHQyXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXAyXG5cbiAgICBsZXQgcmVjIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IGtleSB2YWx1ZSByaWdodCA9XG4gICAgICBtYXRjaCBiYWxhbmNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCBrZXkgdmFsdWUgcmlnaHQgd2l0aFxuICAgICAgfCBlcnJvciwgUHJpdmF0ZS5FbXB0eSAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAoU29tZVxuICAgICAgICAgICAgICAgXCJNYXAuam9pbl93aXRoX2xvZ3MsIGxpbmUgOTg2LCB0aGUgb3V0cHV0IG9mIGJhbGFuY2Ugc2hvdWxkIG5vdCBcXFxuICAgICAgICAgICAgICAgIGJlIGVtcHR5XCIpXG4gICAgICAgICAgICAoZmFpbHdpdGggXCJ0aGUgb3V0cHV0IG9mIGJhbGFuY2Ugc2hvdWxkIG5vdCBiZSBlbXB0eVwiKVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgZW1wdHlcbiAgICAgIHwgZXJyb3IsIChQcml2YXRlLk5vZGUgKGxlZnQyLCBrZXkyLCBkYXRhMiwgcmlnaHQyLCBfLCBfKSBhcyBtYXAyKSAtPlxuICAgICAgICBsZXQgaCA9IGhlaWdodCBsZWZ0MiAtIGhlaWdodCByaWdodDIgaW5cbiAgICAgICAgaWYgaCA+IDIgfHwgaCA8IC0yIHRoZW5cbiAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDIga2V5MiBkYXRhMiByaWdodDJcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGVycm9yLCBtYXAyXG5cbiAgICBsZXQgcmVjIHNwbGl0IHZhbHVlID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlbXB0eSwgTm9uZSwgZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIHZhbHVlIGtleTEgaW5cbiAgICAgICAgaWYgY21wID0gMCB0aGVuXG4gICAgICAgICAgbGVmdDEsIFNvbWUgZGF0YTEsIHJpZ2h0MVxuICAgICAgICBlbHNlIGlmIGNtcCA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQgdmFsdWUgbGVmdDEgaW5cbiAgICAgICAgICBsZXQgcmlnaHQyJyA9IGpvaW4gcmlnaHQyIGtleTEgZGF0YTEgcmlnaHQxIGluXG4gICAgICAgICAgbGVmdDIsIGRhdGEyLCByaWdodDInXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQgdmFsdWUgcmlnaHQxIGluXG4gICAgICAgICAgbGV0IGxlZnQyJyA9IGpvaW4gbGVmdDEga2V5MSBkYXRhMSBsZWZ0MiBpblxuICAgICAgICAgIGxlZnQyJywgZGF0YTIsIHJpZ2h0MlxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgbWFwID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIChlbXB0eSwgTm9uZSwgZW1wdHkpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSB2YWx1ZSBrZXkxIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIGVycm9yLCAobGVmdDEsIFNvbWUgZGF0YTEsIHJpZ2h0MSlcbiAgICAgICAgZWxzZSBpZiBjbXAgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIGxlZnQxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0MicgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MiBrZXkxIGRhdGExIHJpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MicpXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIGRhdGEyLCByaWdodDIpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgcmlnaHQxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxlZnQyJyA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEga2V5MSBkYXRhMSBsZWZ0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIChsZWZ0MicsIGRhdGEyLCByaWdodDIpXG4gICAgICAgIClcblxuICAgIGxldCByZWMgZGlmZiBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHksIG1hcDJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQga2V5MSBtYXAyIGluXG4gICAgICAgIGxldCBvbGVmdDEsIG9sZWZ0MiA9IGRpZmYgbGVmdDEgbGVmdDIgaW5cbiAgICAgICAgbGV0IG9yaWdodDEsIG9yaWdodDIgPSBkaWZmIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBTb21lIHggd2hlbiB4ID0gZGF0YTEgLT4gbWVyZ2Ugb2xlZnQxIG9yaWdodDEsIG1lcmdlIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGpvaW4gb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MSwgam9pbiBvbGVmdDIga2V5MSBkYXRhMiBvcmlnaHQyXG4gICAgICAgIHwgTm9uZSAtPiBqb2luIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDEsIG1lcmdlIG9sZWZ0MiBvcmlnaHQyKVxuXG4gICAgbGV0IHJlYyB1bmlvbiBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSwgbWFwMiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gbWFwMlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IG1hcDFcbiAgICAgIHwgKCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIGRhdGExLCByaWdodDEsIGhlaWdodDEsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgZGF0YTIsIHJpZ2h0MiwgaGVpZ2h0MiwgXykgKSAtPlxuICAgICAgICBpZiBoZWlnaHQxID49IGhlaWdodDIgdGhlbiAoXG4gICAgICAgICAgbGV0IGxlZnQyLCBvcF9kYXRhMiwgcmlnaHQyID0gc3BsaXQgdmFsdWUxIG1hcDIgaW5cbiAgICAgICAgICBqb2luICh1bmlvbiBsZWZ0MSBsZWZ0MikgdmFsdWUxXG4gICAgICAgICAgICAobWF0Y2ggb3BfZGF0YTIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGExXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gZDIpXG4gICAgICAgICAgICAodW5pb24gcmlnaHQxIHJpZ2h0MilcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgbGVmdDEsIG9wX2RhdGExLCByaWdodDEgPSBzcGxpdCB2YWx1ZTIgbWFwMSBpblxuICAgICAgICAgIGpvaW4gKHVuaW9uIGxlZnQxIGxlZnQyKSB2YWx1ZTFcbiAgICAgICAgICAgIChtYXRjaCBvcF9kYXRhMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZGF0YTJcbiAgICAgICAgICAgIHwgU29tZSBkMSAtPiBkMSlcbiAgICAgICAgICAgICh1bmlvbiByaWdodDEgcmlnaHQyKVxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHVuaW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbWFwMSBtYXAyID1cbiAgICAgIG1hdGNoIG1hcDEsIG1hcDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGVycm9yLCBtYXAyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIG1hcDFcbiAgICAgIHwgKCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIGRhdGExLCByaWdodDEsIGhlaWdodDEsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgZGF0YTIsIHJpZ2h0MiwgaGVpZ2h0MiwgXykgKSAtPlxuICAgICAgICBpZiBoZWlnaHQxID49IGhlaWdodDIgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIG9wX2RhdGEyLCByaWdodDIpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUxIG1hcDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgICAgdW5pb25fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MSBsZWZ0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodCcgPVxuICAgICAgICAgICAgdW5pb25fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodDEgcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUxXG4gICAgICAgICAgICAobWF0Y2ggb3BfZGF0YTIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGExXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gZDIpXG4gICAgICAgICAgICByaWdodCdcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIChsZWZ0MSwgb3BfZGF0YTEsIHJpZ2h0MSkgPVxuICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTIgbWFwMVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgICB1bmlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGxlZnQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9XG4gICAgICAgICAgICB1bmlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyB2YWx1ZTFcbiAgICAgICAgICAgIChtYXRjaCBvcF9kYXRhMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZGF0YTJcbiAgICAgICAgICAgIHwgU29tZSBkMSAtPiBkMSlcbiAgICAgICAgICAgIHJpZ2h0J1xuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHVwZGF0ZSBtYXAxIG1hcDIgPVxuICAgICAgaWYgbWFwMSA9PSBtYXAyIHRoZW5cbiAgICAgICAgbWFwMlxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIG1hcDEgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gbWFwMlxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQga2V5MSBtYXAyIGluXG4gICAgICAgICAgam9pbiAodXBkYXRlIGxlZnQxIGxlZnQyKSBrZXkxXG4gICAgICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGExXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gZDIpXG4gICAgICAgICAgICAodXBkYXRlIHJpZ2h0MSByaWdodDIpXG4gICAgICApXG5cbiAgICBsZXQgcmVjIHVwZGF0ZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcDEgbWFwMiA9XG4gICAgICBpZiBtYXAxID09IG1hcDIgdGhlblxuICAgICAgICBlcnJvciwgbWFwMlxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIG1hcDEgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIG1hcDJcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgbWFwMlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgICB1cGRhdGVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MSBsZWZ0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodCcgPVxuICAgICAgICAgICAgdXBkYXRlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIGtleTFcbiAgICAgICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZGF0YTFcbiAgICAgICAgICAgIHwgU29tZSBkMiAtPiBkMilcbiAgICAgICAgICAgIHJpZ2h0J1xuICAgICAgKVxuXG4gICAgbGV0IHJlYyBkaWZmX3ByZWQgcHJlZCBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHksIG1hcDJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQga2V5MSBtYXAyIGluXG4gICAgICAgIGxldCBvbGVmdDEsIG9sZWZ0MiA9IGRpZmZfcHJlZCBwcmVkIGxlZnQxIGxlZnQyIGluXG4gICAgICAgIGxldCBvcmlnaHQxLCBvcmlnaHQyID0gZGlmZl9wcmVkIHByZWQgcmlnaHQxIHJpZ2h0MiBpblxuICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICB8IFNvbWUgeCB3aGVuIHByZWQgeCBkYXRhMSAtPiBtZXJnZSBvbGVmdDEgb3JpZ2h0MSwgbWVyZ2Ugb2xlZnQyIG9yaWdodDJcbiAgICAgICAgfCBTb21lIGRhdGEyIC0+XG4gICAgICAgICAgam9pbiBvbGVmdDEga2V5MSBkYXRhMSBvcmlnaHQxLCBqb2luIG9sZWZ0MiBrZXkxIGRhdGEyIG9yaWdodDJcbiAgICAgICAgfCBOb25lIC0+IGpvaW4gb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MSwgbWVyZ2Ugb2xlZnQyIG9yaWdodDIpXG5cbiAgICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChQcml2YXRlLkVtcHR5LCBrZXksIGRhdGEsIF8sIF8sIF8pIC0+IFNvbWUgKGtleSwgZGF0YSlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBfLCBfLCBfLCBfLCBfKSAtPiBtaW5fZWx0IGxlZnRcblxuICAgIGxldCByZWMgZmluZF9vcHRpb24ga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5X21hcCwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBTb21lIGRhdGFcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZpbmRfb3B0aW9uIGtleVxuICAgICAgICAgICAgKGlmIGNtcCA8IDAgdGhlblxuICAgICAgICAgICAgICAgbGVmdFxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIHJpZ2h0KVxuXG4gICAgbGV0IHJlYyBmaW5kX2RlZmF1bHQgZCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGRcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIGRhdGFcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZpbmRfZGVmYXVsdCBkIGtleVxuICAgICAgICAgICAgKGlmIGNtcCA8IDAgdGhlblxuICAgICAgICAgICAgICAgbGVmdFxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIHJpZ2h0KVxuXG4gICAgbGV0IHJlYyBmaW5kX29wdGlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJsaW5lIDY1OVwiKSBOb3RfZm91bmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIGVycm9yLCBTb21lIGRhdGFcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZpbmRfb3B0aW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlciBlcnJvciBrZXlcbiAgICAgICAgICAgIChpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICAgICAgIGxlZnRcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICByaWdodClcblxuICAgIGxldCByZWMgZmluZF9kZWZhdWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlciBlcnJvciBkIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT5cbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwibGluZSA2NjlcIikgTm90X2ZvdW5kXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBkXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5X21hcCwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgZGF0YVxuICAgICAgICBlbHNlXG4gICAgICAgICAgZmluZF9kZWZhdWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlciBlcnJvciBkIGtleVxuICAgICAgICAgICAgKGlmIGNtcCA8IDAgdGhlblxuICAgICAgICAgICAgICAgbGVmdFxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIHJpZ2h0KVxuXG4gICAgbGV0IHJlYyBtZW0ga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBmYWxzZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIF8sIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgY21wID0gT3JkLmNvbXBhcmUga2V5IGtleV9tYXAgaW5cbiAgICAgICAgY21wID09IDBcbiAgICAgICAgfHxcbiAgICAgICAgaWYgY21wID4gMCB0aGVuXG4gICAgICAgICAgbWVtIGtleSByaWdodFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWVtIGtleSBsZWZ0XG5cbiAgICBsZXQgcmVjIGZpbHRlcl9vbmUgcCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBpZiBwIGtleSB2YWx1ZSB0aGVuXG4gICAgICAgICAgU29tZSAoa2V5LCB2YWx1ZSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggZmlsdGVyX29uZSBwIGxlZnQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfb25lIHAgcmlnaHRcbiAgICAgICAgICB8IG91dCAtPiBvdXRcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+ICgpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0ICgpID0gaXRlciBmIGxlZnQgaW5cbiAgICAgICAgbGV0ICgpID0gZiBrZXkgZGF0YSBpblxuICAgICAgICBpdGVyIGYgcmlnaHRcblxuICAgIGxldCByZWMgZm9sZCBmIG1hcCB2YWx1ZSA9XG4gICAgICBtYXRjaCBtYXAgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHZhbHVlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgZm9sZCBmIHJpZ2h0IChmIGtleSBkYXRhIChmb2xkIGYgbGVmdCB2YWx1ZSkpXG5cbiAgICBsZXQgcmVjIGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gZiBtYXAgdmFsdWUgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBmYWxzZSwgU3RvcC5zdWNjZXNzIHZhbHVlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IG91dHB1dGwgPSBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIGYgbGVmdCB2YWx1ZSBpblxuICAgICAgICBsZXQgaW50ZXJydXB0ZWQsIHZhbHVlID0gb3V0cHV0bCBpblxuICAgICAgICBpZiBpbnRlcnJ1cHRlZCB0aGVuXG4gICAgICAgICAgb3V0cHV0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgU3RvcC5zdWNjZXNzX29yX3N0b3BcbiAgICAgICAgICAgIChmdW4gdmFsdWUgLT5cbiAgICAgICAgICAgICAgbGV0IHZhbF9vcHQgPVxuICAgICAgICAgICAgICAgIHRyeSBTb21lIChmIGtleSBkYXRhIHZhbHVlKSB3aXRoIFN5cy5CcmVhayAtPiBOb25lXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIHZhbF9vcHQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gdHJ1ZSwgU3RvcC5zdWNjZXNzIHZhbHVlXG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICAgICAgICAgU3RvcC5zdWNjZXNzX29yX3N0b3BcbiAgICAgICAgICAgICAgICAgIChmdW4gdiAtPiBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIGYgcmlnaHQgdilcbiAgICAgICAgICAgICAgICAgIChmdW4gdiAtPiBmYWxzZSwgU3RvcC5zdG9wIHYpXG4gICAgICAgICAgICAgICAgICB2KVxuICAgICAgICAgICAgKGZ1biB4IC0+IGZhbHNlLCBTdG9wLnN0b3AgeClcbiAgICAgICAgICAgIHZhbHVlXG5cbiAgICBsZXQgZm9sZF93aXRoX2ludGVycnVwdGlvbiBmIG1hcCB2YWx1ZSA9XG4gICAgICBzbmQgKGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gZiBtYXAgdmFsdWUpXG5cbiAgICBsZXQgcmVjIG1vbmFkaWNfZm9sZCBwYXJhbSBlcnIgZiBtYXAgdmFsdWUgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnIsIHZhbHVlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycicsIHZhbHVlJyA9IG1vbmFkaWNfZm9sZCBwYXJhbSBlcnIgZiBsZWZ0IHZhbHVlIGluXG4gICAgICAgIGxldCBlcnInJywgdmFsdWUnJyA9IGYgcGFyYW0gZXJyJyBrZXkgZGF0YSB2YWx1ZScgaW5cbiAgICAgICAgbW9uYWRpY19mb2xkIHBhcmFtIGVycicnIGYgcmlnaHQgdmFsdWUnJ1xuXG4gICAgbGV0IHJlYyBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmggZiBnIGggbWFwMSBtYXAyIHJlcyA9XG4gICAgICBtYXRjaCBtYXAxLCBtYXAyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgUHJpdmF0ZS5FbXB0eSAtPiByaCwgcmVzXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gbW9uYWRpY19mb2xkIHBhcmFtZXRlcnMgcmggaCBtYXAyIHJlc1xuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IG1vbmFkaWNfZm9sZCBwYXJhbWV0ZXJzIHJoIGcgbWFwMSByZXNcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQga2V5MSBtYXAyIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCByaCcsIHJlcycgPSBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmggZiBnIGggbGVmdDEgbGVmdDIgcmVzIGluXG4gICAgICAgICAgbGV0IHJoJycsIHJlcycnID0gZyBwYXJhbWV0ZXJzIHJoJyBrZXkxIGRhdGExIHJlcycgaW5cbiAgICAgICAgICBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmgnJyBmIGcgaCByaWdodDEgcmlnaHQyIHJlcycnXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGxldCByaCcsIHJlcycgPSBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmggZiBnIGggbGVmdDEgbGVmdDIgcmVzIGluXG4gICAgICAgICAgbGV0IHJoJycsIHJlcycnID0gZiBwYXJhbWV0ZXJzIHJoJyBrZXkxIGRhdGExIGRhdGEyIHJlcycgaW5cbiAgICAgICAgICBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmgnJyBmIGcgaCByaWdodDEgcmlnaHQyIHJlcycnKVxuXG4gICAgbGV0IG1vbmFkaWNfZm9sZDJfc3BhcnNlIHBhcmFtZXRlcnMgcmggZiBtYXAxIG1hcDIgcmVzID1cbiAgICAgIGxldCBpZCBfIHggXyBfIHkgPSB4LCB5IGluXG4gICAgICBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmggZiBpZCBpZCBtYXAxIG1hcDIgcmVzXG5cbiAgICBsZXQgbW9uYWRpY19pdGVyMl9zcGFyc2UgcGFyYW1ldGVycyByaCBmIG1hcDEgbWFwMiA9XG4gICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgbW9uYWRpY19mb2xkMl9zcGFyc2UgcGFyYW1ldGVycyByaFxuICAgICAgICAgIChmdW4gcCBlIGsgYSBiICgpIC0+IGYgcCBlIGsgYSBiLCAoKSlcbiAgICAgICAgICBtYXAxIG1hcDIgKClcbiAgICAgIGluXG4gICAgICBlcnJvclxuXG4gICAgbGV0IHJlYyBtb25hZGljX2ZvbGRfcmVzdHJpY3Rpb24gcGFyYW1ldGVycyByaCBmIHNldCBtYXAgcmVzID1cbiAgICAgIG1hdGNoIHNldCB3aXRoXG4gICAgICB8IFNldC5Qcml2YXRlLkVtcHR5IC0+IHJoLCByZXNcbiAgICAgIHwgU2V0LlByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQga2V5MSBtYXAgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IHJoJywgcmVzJyA9XG4gICAgICAgICAgICBtb25hZGljX2ZvbGRfcmVzdHJpY3Rpb24gcGFyYW1ldGVycyByaCBmIGxlZnQxIGxlZnQyIHJlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIHBhcmFtZXRlcnMgcmgnIGYgcmlnaHQxIHJpZ2h0MiByZXMnXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGxldCByaCcsIHJlcycgPVxuICAgICAgICAgICAgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIHBhcmFtZXRlcnMgcmggZiBsZWZ0MSBsZWZ0MiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByaCcnLCByZXMnJyA9IGYgcGFyYW1ldGVycyByaCcga2V5MSBkYXRhMiByZXMnIGluXG4gICAgICAgICAgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIHBhcmFtZXRlcnMgcmgnJyBmIHJpZ2h0MSByaWdodDIgcmVzJycpXG5cbiAgICBsZXQgcmVjIG1hcGkgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBub2RlIChtYXBpIGYgbGVmdCkga2V5IChmIGtleSBkYXRhKSAobWFwaSBmIHJpZ2h0KVxuXG4gICAgbGV0IG1hcCBmIHMgPSBtYXBpIChmdW4gXyB4IC0+IGYgeCkgc1xuXG4gICAgbGV0IHJlYyBtYXBfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZiBtYXAgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvcnMsIGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycm9ycywgbGVmdCcgPSBtYXBfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZiBsZWZ0IGluXG4gICAgICAgIGxldCBlcnJvcnMsIGRhdGEnID0gZiBwYXJhbWV0ZXJzIGVycm9ycyBkYXRhIGluXG4gICAgICAgIGxldCBlcnJvciwgcmlnaHQnID0gbWFwX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JzIGYgcmlnaHQgaW5cbiAgICAgICAgZXJyb3IsIG5vZGUgbGVmdCcga2V5IGRhdGEnIHJpZ2h0J1xuXG4gICAgbGV0IHJlYyBtYXAyIGYgbWFwIG1hcCcgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBtYXAnXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwJyBpblxuICAgICAgICBqb2luIChtYXAyIGYgbGVmdDEgbGVmdDIpIGtleTFcbiAgICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBkYXRhMVxuICAgICAgICAgIHwgU29tZSBkMiAtPiBmIGRhdGExIGQyKVxuICAgICAgICAgIChtYXAyIGYgcmlnaHQxIHJpZ2h0MilcblxuICAgIGxldCByZWMgbWFwMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBmIGcgaCBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT5cbiAgICAgICAgKG1hdGNoIG1hcDIgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3JzLCBlbXB0eVxuICAgICAgICB8IFByaXZhdGUuTm9kZSBfIC0+IG1hcF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBnIG1hcDIpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnJvcnMsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MikgPVxuICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JzIGtleTEgbWFwMlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3JzLCBsZWZ0JyA9XG4gICAgICAgICAgbWFwMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBmIGcgaCBsZWZ0MSBsZWZ0MlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9XG4gICAgICAgICAgbWFwMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBmIGcgaCByaWdodDEgcmlnaHQyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgZGF0YScgPVxuICAgICAgICAgIG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZiBwYXJhbWV0ZXJzIGVycm9yIGRhdGExXG4gICAgICAgICAgfCBTb21lIGQyIC0+IGggcGFyYW1ldGVycyBlcnJvcnMgZGF0YTEgZDJcbiAgICAgICAgaW5cbiAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIGtleTEgZGF0YScgcmlnaHQnXG5cbiAgICBsZXQgbWFwMnpfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgPVxuICAgICAgbWFwMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yc1xuICAgICAgICAoZnVuIHBhcmFtZXRlcnMgZXJyb3IgYSAtPlxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgICAoU29tZSBcImxpbmUgMTI0OCwgaW5jb21wYXRpYmxlIG1hcHMgaW4gbWFwMnpfc2FmZVwiKSBOb3RfZm91bmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBhKVxuICAgICAgICAoZnVuIHBhcmFtZXRlcnMgZXJyb3IgYSAtPlxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgICAoU29tZSBcImxpbmUgMTI1MSwgaW5jb21wYXRpYmxlIG1hcHMgaW4gbWFwMnpfc2FmZVwiKSBOb3RfZm91bmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBhKVxuXG4gICAgbGV0IHJlYyBmb2xkMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgZyBoIG1hcDEgbWFwMiByZXMgPVxuICAgICAgbWF0Y2ggbWFwMSwgbWFwMiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIHJlc1xuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IG1vbmFkaWNfZm9sZCBwYXJhbWV0ZXJzIGVycm9yIGcgbWFwMiByZXNcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBtb25hZGljX2ZvbGQgcGFyYW1ldGVycyBlcnJvciBmIG1hcDEgcmVzXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcDJcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnID1cbiAgICAgICAgICAgIGZvbGQyX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBnIGggbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycnID0gZiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgZGF0YTEgcmVzJyBpblxuICAgICAgICAgIGZvbGQyX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBnIGggcmlnaHQxIHJpZ2h0MiByZXMnJ1xuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycgPVxuICAgICAgICAgICAgZm9sZDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIGcgaCBsZWZ0MSBsZWZ0MiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJycgPSBoIHBhcmFtZXRlcnMgZXJyb3IgKGtleTEgOiBlbHQpIGRhdGExIGRhdGEyIHJlcycgaW5cbiAgICAgICAgICBmb2xkMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgZyBoIHJpZ2h0MSByaWdodDIgcmVzJycpXG5cbiAgICBsZXQgZm9sZDJ6X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgPVxuICAgICAgZm9sZDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAoZnVuIHBhcmFtZXRlcnMgZXJyb3IgXyBfIGEgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgICAgKFNvbWUgXCJsaW5lIDEyNDgsIGluY29tcGF0aWJsZSBtYXBzIGluIGZvbGQyel9zYWZlXCIpIE5vdF9mb3VuZFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGEpXG4gICAgICAgIChmdW4gcGFyYW1ldGVycyBlcnJvciBfIF8gYSAtPlxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgICAoU29tZSBcImxpbmUgMTI1MSwgaW5jb21wYXRpYmxlIG1hcHMgaW4gZm9sZDJ6X3NhZmVcIikgTm90X2ZvdW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgYSlcblxuICAgIGxldCByZWMgZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBtYXAxIG1hcDIgcmVzID1cbiAgICAgIG1hdGNoIG1hcDEsIG1hcDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgcmVzXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcDJcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnID1cbiAgICAgICAgICAgIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBmb2xkMl9zcGFyc2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIHJpZ2h0MSByaWdodDIgcmVzJ1xuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycgPVxuICAgICAgICAgICAgZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBsZWZ0MSBsZWZ0MiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJycgPSBmIHBhcmFtZXRlcnMgZXJyb3Iga2V5MSBkYXRhMSBkYXRhMiByZXMnIGluXG4gICAgICAgICAgZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiByaWdodDEgcmlnaHQyIHJlcycnKVxuXG4gICAgbGV0IGl0ZXIyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgbWFwMSBtYXAyID1cbiAgICAgIGxldCBlcnJvciwgXyA9XG4gICAgICAgIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXIgZXJyIGEgYiBjIF8gLT4gZiBwYXIgZXJyIGEgYiBjLCAoKSlcbiAgICAgICAgICBtYXAxIG1hcDIgKClcbiAgICAgIGluXG4gICAgICBlcnJvclxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHRydWVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBwIGtleSBkYXRhICYmIGZvcl9hbGwgcCByaWdodCAmJiBmb3JfYWxsIHAgbGVmdFxuXG4gICAgdHlwZSAnYSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2YgZWx0ICogJ2EgKiAnYSB0ICogJ2EgZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIG0gZSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobCwgdiwgZCwgciwgXywgXykgLT4gY29uc19lbnVtIGwgKE1vcmUgKHYsIGQsIHIsIGUpKVxuXG4gICAgbGV0IGNvbXBhcmUgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICBtYXRjaCBlMSwgZTIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgICAgfCBFbmQsIF8gLT4gLTFcbiAgICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgICB8IE1vcmUgKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSAodjIsIGQyLCByMiwgZTIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMCB0aGVuXG4gICAgICAgICAgICBjXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCBkMSBkMiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW5cbiAgICAgICAgICAgICAgY1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgY21wIG0xIG0yID1cbiAgICAgIGNvbXBhcmVcbiAgICAgICAgKGZ1biB4IHkgLT5cbiAgICAgICAgICBpZiBjbXAgeCB5IHRoZW5cbiAgICAgICAgICAgIDBcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAxKVxuICAgICAgICBtMSBtMlxuICAgICAgPT0gMFxuXG4gICAgbGV0IHJlYyBiaW5kaW5nc19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gYWNjdVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGwsIHYsIGQsIHIsIF8sIF8pIC0+XG4gICAgICAgIGJpbmRpbmdzX2F1eCAoKHYsIGQpIDo6IGJpbmRpbmdzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBiaW5kaW5ncyBzID0gYmluZGluZ3NfYXV4IFtdIHNcblxuICAgIGxldCByZWMgYXV4X3ByaW50IHByIGYgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+ICgpXG4gICAgICB8IFByaXZhdGUuTm9kZSAoUHJpdmF0ZS5FbXB0eSwga2V5LCBkYXRhLCBQcml2YXRlLkVtcHR5LCBfLCBfKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS0+QCwlYUBdXCIgT3JkLnByaW50IGtleSBwciBkYXRhXG4gICAgICB8IFByaXZhdGUuTm9kZSAoUHJpdmF0ZS5FbXB0eSwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEtPiVhQF0sQCAlYVwiIE9yZC5wcmludCBrZXkgcHIgZGF0YSAoYXV4X3ByaW50IHByKVxuICAgICAgICAgIHJpZ2h0XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCBQcml2YXRlLkVtcHR5LCBfLCBfKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEsQCBAWyVhLT4lYUBdXCIgKGF1eF9wcmludCBwcikgbGVmdCBPcmQucHJpbnQga2V5IHByXG4gICAgICAgICAgZGF0YVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSxAIEBbJWEtPiVhQF0sQCAlYVwiIChhdXhfcHJpbnQgcHIpIGxlZnQgT3JkLnByaW50XG4gICAgICAgICAga2V5IHByIGRhdGEgKGF1eF9wcmludCBwcikgcmlnaHRcblxuICAgIGxldCBwcmludCBwciBmID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJcXHhFMlxceDg4XFx4ODVcIlxuICAgICAgfCBQcml2YXRlLk5vZGUgXyBhcyBtIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAW3slYX1AXVwiIChhdXhfcHJpbnQgcHIpIG1cblxuICAgIGxldCByZWMgZGlmZl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcDEgbWFwMiA9XG4gICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgZW1wdHksIG1hcDJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIGRhdGEyLCByaWdodDIpID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgbWFwMlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG9sZWZ0MSwgb2xlZnQyID1cbiAgICAgICAgICBkaWZmX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBvcmlnaHQxLCBvcmlnaHQyID1cbiAgICAgICAgICBkaWZmX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MlxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICB8IFNvbWUgeCB3aGVuIHggPSBkYXRhMSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbzEgPVxuICAgICAgICAgICAgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDEgb3JpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBvMiA9XG4gICAgICAgICAgICBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbzEsIG8yXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbzEgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbzIgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBrZXkxIGRhdGEyIG9yaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBvMSwgbzJcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBvMSA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBvMiA9XG4gICAgICAgICAgICBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbzEsIG8yKVxuXG4gICAgbGV0IHJlYyBkaWZmX3ByZWRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBwcmVkIG1hcDEgbWFwMiA9XG4gICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgZW1wdHksIG1hcDJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIGRhdGEyLCByaWdodDIpID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgbWFwMlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG9sZWZ0MSwgb2xlZnQyID1cbiAgICAgICAgICBkaWZmX3ByZWRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBwcmVkIGxlZnQxIGxlZnQyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgb3JpZ2h0MSwgb3JpZ2h0MiA9XG4gICAgICAgICAgZGlmZl9wcmVkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcHJlZCByaWdodDEgcmlnaHQyXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgU29tZSB4IHdoZW4gcHJlZCB4IGRhdGExIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBvMSA9XG4gICAgICAgICAgICBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MSBvcmlnaHQxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8yID1cbiAgICAgICAgICAgIG1lcmdlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQyIG9yaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBvMSwgbzJcbiAgICAgICAgfCBTb21lIGRhdGEyIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBvMSA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBvMiA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQyIGtleTEgZGF0YTIgb3JpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIG8xLCBvMlxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8xID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDEga2V5MSBkYXRhMSBvcmlnaHQxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8yID1cbiAgICAgICAgICAgIG1lcmdlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQyIG9yaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBvMSwgbzIpXG5cbiAgICBsZXQgcmVjIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9uc193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzXG4gICAgICAgIGVycm9yIGYgZyBzZXQgbWFwIHJlcyA9XG4gICAgICBtYXRjaCBzZXQsIG1hcCB3aXRoXG4gICAgICB8IFNldC5Qcml2YXRlLkVtcHR5LCBfIC0+IGVycm9yLCByZXNcbiAgICAgIHwgU2V0LlByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIGRhdGEyLCByaWdodDIpID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgbWFwXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJyA9XG4gICAgICAgICAgICBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyc1xuICAgICAgICAgICAgICBlcnJvciBmIGcgbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycnID0gZyBrZXkxIChlcnJvciwgcmVzJykgaW5cbiAgICAgICAgICBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyc1xuICAgICAgICAgICAgZXJyb3IgZiBnIHJpZ2h0MSByaWdodDIgcmVzJydcbiAgICAgICAgfCBTb21lIGRhdGEyIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnID1cbiAgICAgICAgICAgIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9uc193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzXG4gICAgICAgICAgICAgIGVycm9yIGYgZyBsZWZ0MSBsZWZ0MiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJycgPSBmIGtleTEgZGF0YTIgKGVycm9yLCByZXMnKSBpblxuICAgICAgICAgIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9uc193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzXG4gICAgICAgICAgICBlcnJvciBmIGcgcmlnaHQxIHJpZ2h0MiByZXMnJylcblxuICAgIGxldCBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBzZXQgbWFwIHJlcyA9XG4gICAgICBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvclxuICAgICAgICBmXG4gICAgICAgIChmdW4gXyB4IC0+IHgpXG4gICAgICAgIHNldCBtYXAgcmVzXG5cbiAgICBsZXQgdG9fanNvbiA/KGxhYl9rZXkgPSBcImtleVwiKSA/KGxhYl92YWx1ZSA9IFwidmFsdWVcIikgPVxuICAgICAgSnNvblV0aWwub2ZfbWFwIH5sYWJfa2V5IH5sYWJfdmFsdWUgfmZvbGRcblxuICAgIGxldCBvZl9qc29uID8obGFiX2tleSA9IFwia2V5XCIpID8obGFiX3ZhbHVlID0gXCJ2YWx1ZVwiKVxuICAgICAgICA/KGVycm9yX21zZyA9IEpzb25VdGlsLmJ1aWxkX21zZyBcIm1hcFwiKSA9XG4gICAgICBKc29uVXRpbC50b19tYXAgfmxhYl9rZXkgfmxhYl92YWx1ZSB+ZXJyb3JfbXNnIH5hZGQgfmVtcHR5XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFByb2plY3Rpb24gPSBzaWdcbiAgdHlwZSBlbHRfYVxuICB0eXBlIGVsdF9iXG4gIHR5cGUgJ2EgbWFwX2FcbiAgdHlwZSAnYSBtYXBfYlxuICB0eXBlIHNldF9hXG4gIHR5cGUgc2V0X2JcblxuICB2YWwgcHJval9tYXAgOlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT4gJ2IgLT4gKCdiIC0+ICdhIC0+ICdiKSAtPiAnYSBtYXBfYSAtPiAnYiBtYXBfYlxuXG4gIHZhbCBwcm9qX21hcF9tb25hZGljIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICAnYiAtPlxuICAgICgncGFyYW1ldGVycyAtPiAnbWV0aG9kX2hhbmRsZXIgLT4gJ2IgLT4gJ2EgLT4gJ21ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgKiAnYiBtYXBfYlxuXG4gIHZhbCBwcm9qX3NldCA6IChlbHRfYSAtPiBlbHRfYikgLT4gc2V0X2EgLT4gc2V0X2JcblxuICB2YWwgcHJval9zZXRfbW9uYWRpYyA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+IGVsdF9hIC0+ICdtZXRob2RfaGFuZGxlciAqIGVsdF9iKSAtPlxuICAgIHNldF9hIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogc2V0X2JcblxuICB2YWwgcGFydGl0aW9uX3NldCA6IChlbHRfYSAtPiBlbHRfYikgLT4gc2V0X2EgLT4gc2V0X2EgbWFwX2JcblxuICB2YWwgcGFydGl0aW9uX3NldF9tb25hZGljIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgICgncGFyYW1ldGVycyAtPiAnbWV0aG9kX2hhbmRsZXIgLT4gZWx0X2EgLT4gJ21ldGhvZF9oYW5kbGVyICogZWx0X2IpIC0+XG4gICAgc2V0X2EgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgKiBzZXRfYSBtYXBfYlxuZW5kXG5cbm1vZHVsZSBQcm9qIChBIDogUykgKEIgOiBTKSA9IHN0cnVjdFxuICBtb2R1bGUgTUEgPSBBLk1hcFxuICBtb2R1bGUgTUIgPSBCLk1hcFxuICBtb2R1bGUgU0EgPSBBLlNldFxuICBtb2R1bGUgU0IgPSBCLlNldFxuXG4gIHR5cGUgZWx0X2EgPSBNQS5lbHRcbiAgdHlwZSBlbHRfYiA9IE1CLmVsdFxuICB0eXBlIHNldF9hID0gU0EudFxuICB0eXBlIHNldF9iID0gU0IudFxuICB0eXBlICdhIG1hcF9hID0gJ2EgTUEudFxuICB0eXBlICdhIG1hcF9iID0gJ2EgTUIudFxuXG4gIGxldCBwcm9qX21hcCBmIGlkZW50aXR5X2VsdCBtZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIG1hcF9iIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgTUIuYWRkIGtleV9iXG4gICAgICAgICAgKG1lcmdlIChNQi5maW5kX2RlZmF1bHQgaWRlbnRpdHlfZWx0IGtleV9iIG1hcF9iKSBkYXRhX2EpXG4gICAgICAgICAgbWFwX2IpXG4gICAgICBtYXAgTUIuZW1wdHlcblxuICBsZXQgcHJval9tYXBfbW9uYWRpYyBwYXJhbWV0ZXIgaGFuZGxlciBmIGlkZW50aXR5X2VsdCBtb25hZGljX21lcmdlIG1hcCA9XG4gICAgTUEuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBkYXRhX2EgKGhhbmRsZXIsIG1hcF9iKSAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIGxldCBoYW5kbGVyLCBkYXRhJyA9XG4gICAgICAgICAgbW9uYWRpY19tZXJnZSBwYXJhbWV0ZXIgaGFuZGxlclxuICAgICAgICAgICAgKE1CLmZpbmRfZGVmYXVsdCBpZGVudGl0eV9lbHQga2V5X2IgbWFwX2IpXG4gICAgICAgICAgICBkYXRhX2FcbiAgICAgICAgaW5cbiAgICAgICAgaGFuZGxlciwgTUIuYWRkIGtleV9iIGRhdGEnIG1hcF9iKVxuICAgICAgbWFwIChoYW5kbGVyLCBNQi5lbXB0eSlcblxuICBsZXQgcHJval9zZXQgZiBzZXRfYSA9IFNBLmZvbGQgKGZ1biBrZXlfYSAtPiBTQi5hZGQgKGYga2V5X2EpKSBzZXRfYSBTQi5lbXB0eVxuXG4gIGxldCBwcm9qX3NldF9tb25hZGljIHBhcmFtZXRlciBoYW5kbGVyIGYgc2V0X2EgPVxuICAgIFNBLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgKGhhbmRsZXIsIHNldF9iKSAtPlxuICAgICAgICBsZXQgaGFuZGxlciwga2V5X2IgPSBmIHBhcmFtZXRlciBoYW5kbGVyIGtleV9hIGluXG4gICAgICAgIGhhbmRsZXIsIFNCLmFkZCBrZXlfYiBzZXRfYilcbiAgICAgIHNldF9hIChoYW5kbGVyLCBTQi5lbXB0eSlcblxuICBsZXQgcGFydGl0aW9uX3NldCBmIHNldF9hID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIG1hcF9iIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgTUIuYWRkIGtleV9iIChTQS5hZGQga2V5X2EgKE1CLmZpbmRfZGVmYXVsdCBTQS5lbXB0eSBrZXlfYiBtYXBfYikpIG1hcF9iKVxuICAgICAgc2V0X2EgTUIuZW1wdHlcblxuICBsZXQgcGFydGl0aW9uX3NldF9tb25hZGljIHBhcmFtZXRlciBoYW5kbGVyIGYgc2V0X2EgPVxuICAgIFNBLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgKGhhbmRsZXIsIG1hcF9iKSAtPlxuICAgICAgICBsZXQgaGFuZGxlciwga2V5X2IgPSBmIHBhcmFtZXRlciBoYW5kbGVyIGtleV9hIGluXG4gICAgICAgICggaGFuZGxlcixcbiAgICAgICAgICBNQi5hZGQga2V5X2JcbiAgICAgICAgICAgIChTQS5hZGQga2V5X2EgKE1CLmZpbmRfZGVmYXVsdCBTQS5lbXB0eSBrZXlfYiBtYXBfYikpXG4gICAgICAgICAgICBtYXBfYiApKVxuICAgICAgc2V0X2EgKGhhbmRsZXIsIE1CLmVtcHR5KVxuZW5kXG4oKiB0b2RvOiBhZGQgdGhlIGZvbGxvd2luZyAgdGVzdCB0byB0aGUgc2FuaXR5IHRlc3RzICopXG5cbigqXG4oKiBmb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgY29kZTogKilcblxubW9kdWxlIEludE1hcCA9IE1ha2Uoc3RydWN0IHR5cGUgdCA9IGludCBsZXQgY29tcGFyZSA9IGNvbXBhcmUgZW5kKVxubW9kdWxlIFAgPSBQcm9qKEludE1hcCkoSW50TWFwKVxuXG5cbmxldCBmID0gTGlzdC5mb2xkX2xlZnRcbihmdW4gbWFwIChhLGIpIC0+IEludE1hcC5NYXAuYWRkIGEgYiBtYXApXG5JbnRNYXAuTWFwLmVtcHR5XG5bMSxbMjszXTsyLFszOzRdOzUsWzY7N107OCxbMTI7MTNdXVxuXG4oKiBiYWQgaW1wbGVtZW50YXRpb24gKHF1YWRyYXRpYyB0aW1lIGNvbXBsZXhpdHkpICopXG5sZXQgZyA9IFAucHJvaiAoZnVuIGkgLT4gaSBtb2QgMikgW10gKExpc3QuYXBwZW5kKSBmXG5cbigqIGdvb2QgaW1wbGVtZW50YXRpb24gKGxpbmVhciB0aW1lIGNvbXBsZXhpdHkpKilcbmxldCBnJyA9IEludE1hcC5NYXAubWFwIExpc3QucmV2IChQLnByb2ogKGZ1biBpIC0+IGkgbW9kIDIpIFtdIChmdW4geCB5IC0+IExpc3QuYXBwZW5kIChMaXN0LnJldiB5KSB4KSBmKVxuXG5cbmxldCBkdW1wIChzOnN0cmluZykgZiA9XG4gIGxldCBfID0gUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiJXM6IFxcblwiIHMgaW5cbiAgbGV0IF8gPSBJbnRNYXAuTWFwLml0ZXJcbihmdW4gYSBsIC0+XG5sZXQgXyA9IFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIiAgJWk6XCIgYSBpblxubGV0IF8gPSBMaXN0Lml0ZXIgKFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIiVpLFwiKSBsIGluXG5sZXQgXyA9IFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIlxcblwiIGluICgpKVxuZiBpblxuICAoKVxubGV0IF8gPSBkdW1wIFwiZlwiIGZcbmxldCBfID0gZHVtcCBcImdcIiBnXG5sZXQgXyA9IGR1bXAgXCJnJ1wiIGcnXG5cbigqIHNob3VsZCBkdW1wOiAqKVxuKCpcblxuZjpcbiAgMToyLDMsXG4gIDI6Myw0LFxuICA1OjYsNyxcbiAgODoxMiwxMyxcbmc6XG4gIDA6Myw0LDEyLDEzLFxuICAxOjIsMyw2LDcsXG4gKilcbiAqKVxuXG5tb2R1bGUgdHlwZSBQcm9qZWN0aW9uMiA9IHNpZ1xuICB0eXBlIGVsdF9hXG4gIHR5cGUgZWx0X2JcbiAgdHlwZSBlbHRfY1xuICB0eXBlICdhIG1hcF9hXG4gIHR5cGUgJ2EgbWFwX2JcbiAgdHlwZSAnYSBtYXBfY1xuXG4gIHZhbCBwcm9qMiA6XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIChlbHRfYSAtPiBlbHRfYykgLT5cbiAgICAnYiAtPlxuICAgICgnYiAtPiAnYSAtPiAnYikgLT5cbiAgICAnYSBtYXBfYSAtPlxuICAgICdiIG1hcF9jIG1hcF9iXG5cbiAgdmFsIHByb2oyX21vbmFkaWMgOlxuICAgICdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIChlbHRfYSAtPiBlbHRfYykgLT5cbiAgICAnYiAtPlxuICAgICgncGFyYW1ldGVycyAtPiAnbWV0aG9kX2hhbmRsZXIgLT4gJ2IgLT4gJ2EgLT4gJ21ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgKiAnYiBtYXBfYyBtYXBfYlxuZW5kXG5cbm1vZHVsZSBQcm9qMiAoQSA6IFMpIChCIDogUykgKEMgOiBTKSA9IHN0cnVjdFxuICBtb2R1bGUgTUEgPSBBLk1hcFxuICBtb2R1bGUgTUIgPSBCLk1hcFxuICBtb2R1bGUgTUMgPSBDLk1hcFxuXG4gIHR5cGUgZWx0X2EgPSBNQS5lbHRcbiAgdHlwZSBlbHRfYiA9IE1CLmVsdFxuICB0eXBlIGVsdF9jID0gTUMuZWx0XG4gIHR5cGUgJ2EgbWFwX2EgPSAnYSBNQS50XG4gIHR5cGUgJ2EgbWFwX2IgPSAnYSBNQi50XG4gIHR5cGUgJ2EgbWFwX2MgPSAnYSBNQy50XG5cbiAgbGV0IHByb2oyIGYgZyBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSBtYXBfYiAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIGxldCBrZXlfYyA9IGcga2V5X2EgaW5cbiAgICAgICAgbGV0IHN1Ym1hcCA9IE1CLmZpbmRfZGVmYXVsdCBNQy5lbXB0eSBrZXlfYiBtYXBfYiBpblxuICAgICAgICBsZXQgc3VibWFwID1cbiAgICAgICAgICBNQy5hZGQga2V5X2NcbiAgICAgICAgICAgIChtZXJnZSAoTUMuZmluZF9kZWZhdWx0IGlkZW50aXR5X2VsdCBrZXlfYyBzdWJtYXApIGRhdGFfYSlcbiAgICAgICAgICAgIHN1Ym1hcFxuICAgICAgICBpblxuICAgICAgICBNQi5hZGQga2V5X2Igc3VibWFwIG1hcF9iKVxuICAgICAgbWFwIE1CLmVtcHR5XG5cbiAgbGV0IHByb2oyX21vbmFkaWMgcGFyYW1ldGVyIGhhbmRsZXIgZiBnIGlkZW50aXR5X2VsdCBtZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIChoYW5kbGVyLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBsZXQga2V5X2MgPSBnIGtleV9hIGluXG4gICAgICAgIGxldCBzdWJtYXAgPSBNQi5maW5kX2RlZmF1bHQgTUMuZW1wdHkga2V5X2IgbWFwX2IgaW5cbiAgICAgICAgbGV0IGhhbmRsZXIsIGRhdGEnID1cbiAgICAgICAgICBtZXJnZSBwYXJhbWV0ZXIgaGFuZGxlclxuICAgICAgICAgICAgKE1DLmZpbmRfZGVmYXVsdCBpZGVudGl0eV9lbHQga2V5X2Mgc3VibWFwKVxuICAgICAgICAgICAgZGF0YV9hXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzdWJtYXAgPSBNQy5hZGQga2V5X2MgZGF0YScgc3VibWFwIGluXG4gICAgICAgIGhhbmRsZXIsIE1CLmFkZCBrZXlfYiBzdWJtYXAgbWFwX2IpXG4gICAgICBtYXAgKGhhbmRsZXIsIE1CLmVtcHR5KVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgaW50X2NvbXBhcmUgKHggOiBpbnQpIHkgPSBTdGRsaWIuY29tcGFyZSB4IHlcblxubGV0IGludF9wYWlyX2NvbXBhcmUgKHAsIHEpIChwJywgcScpID1cbiAgbGV0IG8gPSBpbnRfY29tcGFyZSBwIHAnIGluXG4gIGlmIG8gPSAwIHRoZW5cbiAgICBpbnRfY29tcGFyZSBxIHEnXG4gIGVsc2VcbiAgICBvXG5cbmxldCBzdHJpbmdfcGFpcl9jb21wYXJlIChwLCBxKSAocCcsIHEnKSA9XG4gIGxldCBvID0gU3RyaW5nLmNvbXBhcmUgcCBwJyBpblxuICBpZiBvID0gMCB0aGVuXG4gICAgU3RyaW5nLmNvbXBhcmUgcSBxJ1xuICBlbHNlXG4gICAgb1xuXG5sZXQgcGFpcl9lcXVhbCBlcWEgZXFiICh4YSwgeGIpICh5YSwgeWIpID0gZXFhIHhhIHlhICYmIGVxYiB4YiB5YlxuXG5tb2R1bGUgU3RyaW5nU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmdcblxuICBsZXQgY29tcGFyZSA9IFN0cmluZy5jb21wYXJlXG4gIGxldCBwcmludCA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmdcbmVuZClcblxubW9kdWxlIFN0cmluZ1NldCA9IFN0cmluZ1NldE1hcC5TZXRcbm1vZHVsZSBTdHJpbmdNYXAgPSBTdHJpbmdTZXRNYXAuTWFwXG5cbm1vZHVsZSBTdHJpbmcyU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgKiBzdHJpbmdcblxuICBsZXQgY29tcGFyZSA9IHN0cmluZ19wYWlyX2NvbXBhcmVcbiAgbGV0IHByaW50IGYgKGEsIGIpID0gRm9ybWF0LmZwcmludGYgZiBcIiglcywgJXMpXCIgYSBiXG5lbmQpXG5cbm1vZHVsZSBTdHJpbmcyTWFwID0gU3RyaW5nMlNldE1hcC5NYXBcblxubW9kdWxlIEludFNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IGNvbXBhcmUgPSBpbnRfY29tcGFyZVxuICBsZXQgcHJpbnQgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5lbmQpXG5cbm1vZHVsZSBJbnRTZXQgPSBJbnRTZXRNYXAuU2V0XG5tb2R1bGUgSW50TWFwID0gSW50U2V0TWFwLk1hcFxuXG5tb2R1bGUgSW50MlNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50ICogaW50XG5cbiAgbGV0IGNvbXBhcmUgPSBpbnRfcGFpcl9jb21wYXJlXG4gIGxldCBwcmludCBmIChhLCBiKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIoJWksICVpKVwiIGEgYlxuZW5kKVxuXG5tb2R1bGUgSW50MlNldCA9IEludDJTZXRNYXAuU2V0XG5tb2R1bGUgSW50Mk1hcCA9IEludDJTZXRNYXAuTWFwXG5cbm1vZHVsZSBDaGFyU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBjaGFyXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBwcmludCA9IEZvcm1hdC5wcF9wcmludF9jaGFyXG5lbmQpXG5cbm1vZHVsZSBDaGFyU2V0ID0gQ2hhclNldE1hcC5TZXRcbm1vZHVsZSBDaGFyTWFwID0gQ2hhclNldE1hcC5NYXBcbm1vZHVsZSBEeW5BcnJheSA9IER5bmFtaWNBcnJheS5EeW5BcnJheSAoTGFyZ2VBcnJheSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCB1bnNvbWUgZGVmYXVsdCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBkZWZhdWx0XG4gIHwgU29tZSBhIC0+IGFcblxubGV0IHVuc29tZV9vcl9yYWlzZVxuICAgID8oZXhjZXAgPSBJbnZhbGlkX2FyZ3VtZW50IFwidW5zb21lX29yX3JhaXNlIHdhcyBwYXNzZWQgYSBOb25lXCIpID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IHJhaXNlIGV4Y2VwXG4gIHwgU29tZSBhIC0+IGFcblxubGV0IG1hcCBmID0gZnVuY3Rpb25cbiAgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuICB8IE5vbmUgLT4gTm9uZVxuXG5sZXQgYmluZCBmID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIG8gLT4gZiBvXG5cbmxldCBmb2xkIGYgeCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiB4XG4gIHwgU29tZSB5IC0+IGYgeCB5XG5cbmxldCBlcXVhbCBlcSBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgfCBTb21lIF8sIE5vbmUgfCBOb25lLCBTb21lIF8gLT4gZmFsc2VcbiAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcSB4IHlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgcG9zaXRpb24gPSB7IGNocjogaW50OyBsaW5lOiBpbnQgfVxudHlwZSB0ID0geyBmaWxlOiBzdHJpbmc7IGZyb21fcG9zaXRpb246IHBvc2l0aW9uOyB0b19wb3NpdGlvbjogcG9zaXRpb24gfVxudHlwZSAnYSBhbm5vdGVkID0gJ2EgKiB0XG5cbmxldCB2ICh2LCBfKSA9IHZcbmxldCBnZXRfYW5ub3QgKF8sIGFubm90KSA9IGFubm90XG5sZXQgY29weV9hbm5vdCAoXywgbG9jKSBhID0gYSwgbG9jXG5sZXQgbWFwX2Fubm90IGYgKGEsIGxvYykgPSBmIGEsIGxvY1xuXG5sZXQgb2ZfcG9zIHN0YXJ0X2xvY2F0aW9uIGVuZF9sb2NhdGlvbiA9XG4gIGxldCAoKSA9XG4gICAgYXNzZXJ0IChzdGFydF9sb2NhdGlvbi5MZXhpbmcucG9zX2ZuYW1lID0gZW5kX2xvY2F0aW9uLkxleGluZy5wb3NfZm5hbWUpXG4gIGluXG4gIHtcbiAgICBmaWxlID0gc3RhcnRfbG9jYXRpb24uTGV4aW5nLnBvc19mbmFtZTtcbiAgICBmcm9tX3Bvc2l0aW9uID1cbiAgICAgIHtcbiAgICAgICAgY2hyID0gc3RhcnRfbG9jYXRpb24uTGV4aW5nLnBvc19jbnVtIC0gc3RhcnRfbG9jYXRpb24uTGV4aW5nLnBvc19ib2w7XG4gICAgICAgIGxpbmUgPSBzdGFydF9sb2NhdGlvbi5MZXhpbmcucG9zX2xudW07XG4gICAgICB9O1xuICAgIHRvX3Bvc2l0aW9uID1cbiAgICAgIHtcbiAgICAgICAgY2hyID0gZW5kX2xvY2F0aW9uLkxleGluZy5wb3NfY251bSAtIGVuZF9sb2NhdGlvbi5MZXhpbmcucG9zX2JvbDtcbiAgICAgICAgbGluZSA9IGVuZF9sb2NhdGlvbi5MZXhpbmcucG9zX2xudW07XG4gICAgICB9O1xuICB9XG5cbmxldCBkdW1teV9wb3NpdGlvbiA9XG4gIHtcbiAgICBjaHIgPSBMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfY251bSAtIExleGluZy5kdW1teV9wb3MuTGV4aW5nLnBvc19ib2w7XG4gICAgbGluZSA9IExleGluZy5kdW1teV9wb3MuTGV4aW5nLnBvc19sbnVtO1xuICB9XG5cbmxldCBkdW1teSA9XG4gIHtcbiAgICBmaWxlID0gTGV4aW5nLmR1bW15X3Bvcy5MZXhpbmcucG9zX2ZuYW1lO1xuICAgIGZyb21fcG9zaXRpb24gPSBkdW1teV9wb3NpdGlvbjtcbiAgICB0b19wb3NpdGlvbiA9IGR1bW15X3Bvc2l0aW9uO1xuICB9XG5cbmxldCBhbm5vdF93aXRoX2R1bW15IHggPSB4LCBkdW1teVxuXG5sZXQgaXNfZHVtbXkgbG9jID1cbiAgbG9jLmZpbGUgPSBMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfZm5hbWVcbiAgJiYgbG9jLmZyb21fcG9zaXRpb24gPSBkdW1teV9wb3NpdGlvblxuICAmJiBsb2MudG9fcG9zaXRpb24gPSBkdW1teV9wb3NpdGlvblxuXG5sZXQgaXNfYW5ub3RlZF93aXRoX2R1bW15IChfLCBsb2MpID0gaXNfZHVtbXkgbG9jXG5cbmxldCBwcmludCBmIGxvYyA9XG4gIGxldCBwcl9mIGYgPVxuICAgIGlmIGxvYy5maWxlIDw+IFwiXCIgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiRmlsZSBcXFwiJXNcXFwiLCBcIiBsb2MuZmlsZVxuICBpblxuICBsZXQgcHJfbCBmID1cbiAgICBpZiBsb2MuZnJvbV9wb3NpdGlvbi5saW5lID0gbG9jLnRvX3Bvc2l0aW9uLmxpbmUgdGhlblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcImxpbmUgJWlcIiBsb2MuZnJvbV9wb3NpdGlvbi5saW5lXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcImxpbmVzICVpLSVpXCIgbG9jLmZyb21fcG9zaXRpb24ubGluZSBsb2MudG9fcG9zaXRpb24ubGluZVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiJXQldCwgY2hhcmFjdGVycyAlaS0laTpcIiBwcl9mIHByX2wgbG9jLmZyb21fcG9zaXRpb24uY2hyXG4gICAgbG9jLnRvX3Bvc2l0aW9uLmNoclxuXG5sZXQgdG9fc3RyaW5nIGxvYyA9IEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50IGxvY1xubGV0IHByaW50X2Fubm90ZWQgcHIgZiAoeCwgbCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiJWFAICVhXCIgcHJpbnQgbCBwciB4XG5cbmxldCByZWFkX3Bvc2l0aW9uIHAgbGIgPVxuICBtYXRjaCBZb2pzb24uQmFzaWMuZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHAgbGIgd2l0aFxuICB8IGBBc3NvYyBbIChcImxpbmVcIiwgYEludCBsaW5lKTsgKFwiY2hyXCIsIGBJbnQgY2hyKSBdXG4gIHwgYEFzc29jIFsgKFwiY2hyXCIsIGBJbnQgY2hyKTsgKFwibGluZVwiLCBgSW50IGxpbmUpIF0gLT5cbiAgICB7IGxpbmU7IGNociB9XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHBvc2l0aW9uXCIsIHgpKVxuXG5sZXQgd3JpdGVfcG9zaXRpb24gb2IgeyBsaW5lOyBjaHIgfSA9XG4gIFlvanNvbi53cml0ZV9hc3NvYyBvYiBbIFwibGluZVwiLCBgSW50IGxpbmU7IFwiY2hyXCIsIGBJbnQgY2hyIF1cblxubGV0IHRvX2NvbXBhY3RfeW9qc29uIGRlY2xzIGxvYyA9XG4gIGlmIGlzX2R1bW15IGxvYyB0aGVuXG4gICAgYE51bGxcbiAgZWxzZVxuICAgIGBBc3NvY1xuICAgICAgKChpZiBsb2MuZnJvbV9wb3NpdGlvbi5saW5lIDw+IGxvYy50b19wb3NpdGlvbi5saW5lIHRoZW5cbiAgICAgICAgICBmdW4gbCAtPlxuICAgICAgICAoXCJlbGluZVwiLCBgSW50IGxvYy50b19wb3NpdGlvbi5saW5lKSA6OiBsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmdW4gbCAtPlxuICAgICAgICBsKVxuICAgICAgICAgW1xuICAgICAgICAgICAoIFwiZmlsZVwiLFxuICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICBPcHRpb25fdXRpbC5iaW5kIChNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBsb2MuZmlsZSkgZGVjbHNcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIGkgLT4gYEludCBpXG4gICAgICAgICAgICAgfCBOb25lIC0+IGBTdHJpbmcgbG9jLmZpbGUgKTtcbiAgICAgICAgICAgXCJibGluZVwiLCBgSW50IGxvYy5mcm9tX3Bvc2l0aW9uLmxpbmU7XG4gICAgICAgICAgIFwiYmNoclwiLCBgSW50IGxvYy5mcm9tX3Bvc2l0aW9uLmNocjtcbiAgICAgICAgICAgXCJlY2hyXCIsIGBJbnQgbG9jLnRvX3Bvc2l0aW9uLmNocjtcbiAgICAgICAgIF0pXG5cbmxldCBvZl9jb21wYWN0X3lvanNvbiA/KGZpbGVuYW1lcyA9IFt8fF0pID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBkdW1teVxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsIDw9IDUgLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGZpbGUgPVxuICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBcImZpbGVcIiBsIHdpdGhcbiAgICAgICAgIHwgYFN0cmluZyB4IC0+IHhcbiAgICAgICAgIHwgYEludCBpIC0+IGZpbGVuYW1lcy4oaSlcbiAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGxvY2F0aW9uXCIsIHgpKVxuICAgICAgIGluXG4gICAgICAgbGV0IG9mX2xpbmUgPVxuICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBcImJsaW5lXCIgbCB3aXRoXG4gICAgICAgICB8IGBJbnQgaSAtPiBpXG4gICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBsb2NhdGlvblwiLCB4KSlcbiAgICAgICBpblxuICAgICAgIGxldCBvZl9jaHIgPVxuICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBcImJjaHJcIiBsIHdpdGhcbiAgICAgICAgIHwgYEludCBpIC0+IGlcbiAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGxvY2F0aW9uXCIsIHgpKVxuICAgICAgIGluXG4gICAgICAgbGV0IHRvX2NociA9XG4gICAgICAgICBtYXRjaCBMaXN0LmFzc29jIFwiZWNoclwiIGwgd2l0aFxuICAgICAgICAgfCBgSW50IGkgLT4gaVxuICAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbG9jYXRpb25cIiwgeCkpXG4gICAgICAgaW5cbiAgICAgICBsZXQgdG9fbGluZSA9XG4gICAgICAgICBtYXRjaCBZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJlbGluZVwiIHggd2l0aFxuICAgICAgICAgfCBgTnVsbCAtPiBvZl9saW5lXG4gICAgICAgICB8IGBJbnQgaSAtPiBpXG4gICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBsb2NhdGlvblwiLCB4KSlcbiAgICAgICBpblxuICAgICAgIHtcbiAgICAgICAgIGZpbGU7XG4gICAgICAgICBmcm9tX3Bvc2l0aW9uID0geyBsaW5lID0gb2ZfbGluZTsgY2hyID0gb2ZfY2hyIH07XG4gICAgICAgICB0b19wb3NpdGlvbiA9IHsgbGluZSA9IHRvX2xpbmU7IGNociA9IHRvX2NociB9O1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUIGFycm93X25vdGF0aW9uXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbG9jYXRpb25cIiwgeCkpXG5cbmxldCB5b2pzb25fb2ZfYW5ub3RlZCA/ZmlsZW5hbWVzIGYgKHgsIGwpID1cbiAgbGV0IGpwID0gdG9fY29tcGFjdF95b2pzb24gZmlsZW5hbWVzIGwgaW5cbiAgaWYganAgPSBgTnVsbCB0aGVuXG4gICAgYEFzc29jIFsgXCJ2YWxcIiwgZiB4IF1cbiAgZWxzZVxuICAgIGBBc3NvYyBbIFwidmFsXCIsIGYgeDsgXCJsb2NcIiwganAgXVxuXG5sZXQgYW5ub3RlZF9vZl95b2pzb24gP2ZpbGVuYW1lcyBmID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAoXCJ2YWxcIiwgeCk7IChcImxvY1wiLCBsKSBdIHwgYEFzc29jIFsgKFwibG9jXCIsIGwpOyAoXCJ2YWxcIiwgeCkgXSAtPlxuICAgIGYgeCwgb2ZfY29tcGFjdF95b2pzb24gP2ZpbGVuYW1lcyBsXG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIHgpIF0gLT4gZiB4LCBkdW1teVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBsb2NhdGlvblwiLCB4KSlcblxubGV0IHdyaXRlX3JhbmdlIG9iIGYgPSBZb2pzb24uQmFzaWMudG9fYnVmZmVyIG9iICh0b19jb21wYWN0X3lvanNvbiBOb25lIGYpXG5cbmxldCBzdHJpbmdfb2ZfcmFuZ2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcmFuZ2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCByZWFkX3JhbmdlIHAgbGIgPVxuICBvZl9jb21wYWN0X3lvanNvbiA/ZmlsZW5hbWVzOk5vbmUgKFlvanNvbi5CYXNpYy5mcm9tX2xleGJ1ZiB+c3RyZWFtOnRydWUgcCBsYilcblxubGV0IHJhbmdlX29mX3N0cmluZyBzID1cbiAgcmVhZF9yYW5nZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG5sZXQgaXNfaW5jbHVkZWRfaW4gZmlsZSB7IGxpbmU7IGNociB9IHJhbmdlID1cbiAgZmlsZSA9IHJhbmdlLmZpbGVcbiAgJiYgbGluZSA+PSByYW5nZS5mcm9tX3Bvc2l0aW9uLmxpbmVcbiAgJiYgbGluZSA8PSByYW5nZS50b19wb3NpdGlvbi5saW5lXG4gICYmIChsaW5lIDw+IHJhbmdlLmZyb21fcG9zaXRpb24ubGluZSB8fCBjaHIgPj0gcmFuZ2UuZnJvbV9wb3NpdGlvbi5jaHIpXG4gICYmIChsaW5lIDw+IHJhbmdlLnRvX3Bvc2l0aW9uLmxpbmUgfHwgY2hyIDw9IHJhbmdlLnRvX3Bvc2l0aW9uLmNocilcblxubGV0IG1lcmdlIGIgZSA9XG4gIGxldCAoKSA9IGFzc2VydCAoYi5maWxlID0gZS5maWxlKSBpblxuICB7XG4gICAgZmlsZSA9IGIuZmlsZTtcbiAgICBmcm9tX3Bvc2l0aW9uID0gYi5mcm9tX3Bvc2l0aW9uO1xuICAgIHRvX3Bvc2l0aW9uID0gZS50b19wb3NpdGlvbjtcbiAgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBGb3JtYXRcblxubGV0IGxpc3RpID8odHJhaWxpbmcgPSBmdW4gXyAtPiAoKSkgcHJfc2VwIHByX2VsIGYgbCA9XG4gIGxldCByZWMgYXV4IGFjYyBmID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCBbIGVsIF0gLT5cbiAgICAgIGxldCAoKSA9IHByX2VsIGFjYyBmIGVsIGluXG4gICAgICB0cmFpbGluZyBmXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCAoKSA9IHByX2VsIGFjYyBmIGggaW5cbiAgICAgIGxldCAoKSA9IHByX3NlcCBmIGluXG4gICAgICBhdXggKHN1Y2MgYWNjKSBmIHRcbiAgaW5cbiAgYXV4IDAgZiBsXG5cbmxldCBsaXN0ID90cmFpbGluZyBwcl9zZXAgcHJfZWwgZiBsID1cbiAgbGlzdGkgP3RyYWlsaW5nIHByX3NlcCAoZnVuIF8gZiB4IC0+IHByX2VsIGYgeCkgZiBsXG5cbmxldCBzZXQgP3RyYWlsaW5nIGVsZW1lbnRzIHByX3NlcCBwcl9lbCBmIHNldCA9XG4gIGxpc3QgP3RyYWlsaW5nIHByX3NlcCBwcl9lbCBmIChlbGVtZW50cyBzZXQpXG5cbmxldCBoYXNodGJsIHByX3NlcCBwcl9lbCBmIHRibCA9XG4gIGxpc3QgcHJfc2VwIHByX2VsIGYgKEhhc2h0YmwuZm9sZCAoZnVuIGEgYiBsIC0+IChhLCBiKSA6OiBsKSB0YmwgW10pXG5cbmxldCBib3R0b20gZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlxceEUyXFx4OEFcXHhBNVwiXG5sZXQgbnUgZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlxceENFXFx4QkRcIlxubGV0IGVtcHR5X3NldCBmID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiXFx4RTJcXHg4OFxceDg1XCJcbmxldCBjb21tYSBmID0gZnByaW50ZiBmIFwiLEAgXCJcbmxldCBkb3QgZiA9IGZwcmludGYgZiBcIi5cIlxubGV0IGNvbXBhY3RfY29tbWEgZiA9IGZwcmludGYgZiBcIixALFwiXG5sZXQgY29sb24gZiA9IGZwcmludGYgZiBcIjtAIFwiXG5sZXQgc3BhY2UgZiA9IHBwX3ByaW50X3NwYWNlIGYgKClcbmxldCBjdXQgZiA9IHBwX3ByaW50X2N1dCBmICgpXG5sZXQgZW1wdHkgXyA9ICgpXG5sZXQgdW5pdCBfICgpID0gKClcbmxldCBwYWlyIHBwYSBwcGIgZiAoYSwgYikgPSBmcHJpbnRmIGYgXCIoJWEsICVhKVwiIHBwYSBhIHBwYiBiXG5cbmxldCBvcHRpb24gPyh3aXRoX3NwYWNlID0gdHJ1ZSkgcHIgZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeCAtPlxuICAgIGZwcmludGYgZiBcIiV0JWFcIlxuICAgICAgKGZ1biBmIC0+XG4gICAgICAgIGlmIHdpdGhfc3BhY2UgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zcGFjZSBmICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoKSlcbiAgICAgIHByIHhcblxubGV0IGFycmF5ID8odHJhaWxpbmcgPSBmdW4gXyAtPiAoKSkgcHJfc2VwIHByX2VsIGYgYSA9XG4gIGxldCByZWMgYXV4IGkgZiA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhIHRoZW4gKFxuICAgICAgbGV0ICgpID0gcHJfZWwgaSBmIGEuKGkpIGluXG4gICAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIGEgLSAxIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBwcl9zZXAgZiBpblxuICAgICAgICBhdXggKHN1Y2MgaSkgZlxuICAgICAgKSBlbHNlIGlmIGkgPiAwIHRoZW5cbiAgICAgICAgdHJhaWxpbmcgZlxuICAgIClcbiAgaW5cbiAgYXV4IDAgZlxuXG5sZXQgcGxhaW5fYXJyYXkgcHJfZWwgZiBhID1cbiAgbGV0IHJlYyBhdXggaSBmID1cbiAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIGEgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiJWk6JWFcIiBpIHByX2VsIGEuKGkpIGluXG4gICAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIGEgLSAxIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIjtALCV0XCIgKGF1eCAoc3VjYyBpKSlcbiAgICApXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJbfCV0fF1cIiAoYXV4IDApXG5cbmxldCBlcnJvciBwciB4ID0gZXByaW50ZiBcIiVhQC5cIiAoTG9jLnByaW50X2Fubm90ZWQgcHIpIHhcblxubGV0IGxpc3RfdG9fc3RyaW5nIHByX3NlcCBwcl9lbCAoKSBsID1cbiAgbGV0IHJlYyBhdXggKCkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gXCJcIlxuICAgIHwgWyBlbCBdIC0+IHByX2VsICgpIGVsXG4gICAgfCBoIDo6IHQgLT4gc3ByaW50ZiBcIiVhJXQlYVwiIHByX2VsIGggcHJfc2VwIGF1eCB0XG4gIGluXG4gIGF1eCAoKSBsXG5cbmxldCBzZXRfdG9fc3RyaW5nIGVsZW1lbnRzIHByX3NlcCBwcl9lbCAoKSBzZXQgPVxuICBsaXN0X3RvX3N0cmluZyBwcl9zZXAgcHJfZWwgKCkgKGVsZW1lbnRzIHNldClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUga2V5ID0gaW50XG50eXBlIHQgPSBFbXB0eSB8IE5vZGUgb2YgdCAqIGtleSAqIHQgKiBpbnQgKiBJbnQ2NC50XG4oKk5vZGUobGVmdCxrZXkscmlnaHQsaGVpZ2h0LGFjYykqKVxuXG5sZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwXG4gIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuXG5sZXQgYWNjdmFsID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwTFxuICB8IE5vZGUgKF8sIF8sIF8sIF8sIGFjYykgLT4gYWNjXG5cbmxldCB0b3RhbCA9IGFjY3ZhbFxuXG5sZXQgd2VpZ2h0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwTFxuICB8IE5vZGUgKGwsIF8sIHIsIF8sIGFjYykgLT4gSW50NjQuc3ViIChJbnQ2NC5zdWIgYWNjIChhY2N2YWwgbCkpIChhY2N2YWwgcilcblxubGV0IHJlYyBwcmludCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBQcC5lbXB0eV9zZXQgZlxuICB8IE5vZGUgKGwsIGssIHIsIF8sIGFjYykgYXMgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxob3YgMj48JWQsJUxpKCVMaSk+QCxbJWFALHwlYUAsXVwiIGsgYWNjICh3ZWlnaHQgeClcbiAgICAgIHByaW50IGwgcHJpbnQgclxuXG5sZXQgY3JlYXRlIGwga2V5IGFjYyByID1cbiAgbGV0IGhsID0gaGVpZ2h0IGwgaW5cbiAgbGV0IGhyID0gaGVpZ2h0IHIgaW5cbiAgTm9kZSAobCwga2V5LCByLCBzdWNjIChtaW4gaGwgaHIpLCBhY2MpXG5cbmxldCBiYWwgbCB4IHcgciA9XG4gIGxldCBobCA9IGhlaWdodCBsIGluXG4gIGxldCBociA9IGhlaWdodCByIGluXG4gIGlmIGhsID4gaHIgKyAyIHRoZW4gKFxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJWYWxfbWFwLmJhbFwiXG4gICAgfCBOb2RlIChsbCwgbHYsIGxyLCBfLCBhY2NfbCkgLT5cbiAgICAgIGxldCBhY2NfciA9IGFjY3ZhbCByIGluXG4gICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgY3JlYXRlIGxsIGx2XG4gICAgICAgICAgKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIGFjY19yKVxuICAgICAgICAgIChjcmVhdGUgbHIgeCAoSW50NjQuYWRkIChJbnQ2NC5hZGQgdyAoYWNjdmFsIGxyKSkgYWNjX3IpIHIpXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiVmFsX21hcC5iYWxcIlxuICAgICAgICB8IE5vZGUgKGxybCwgbHJ2LCBscnIsIF8sIF8pIC0+XG4gICAgICAgICAgbGV0IGFjY19scnIgPSBhY2N2YWwgbHJyIGluXG4gICAgICAgICAgY3JlYXRlXG4gICAgICAgICAgICAoY3JlYXRlIGxsIGx2IChJbnQ2NC5zdWIgYWNjX2wgYWNjX2xycikgbHJsKVxuICAgICAgICAgICAgbHJ2XG4gICAgICAgICAgICAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2wgdykgYWNjX3IpXG4gICAgICAgICAgICAoY3JlYXRlIGxyciB4IChJbnQ2NC5hZGQgKEludDY0LmFkZCBhY2NfbHJyIHcpIGFjY19yKSByKVxuICAgICAgKVxuICApIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiAoXG4gICAgbWF0Y2ggciB3aXRoXG4gICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlZhbF9tYXAuYmFsXCJcbiAgICB8IE5vZGUgKHJsLCBydiwgcnIsIF8sIGFjY19yKSAtPlxuICAgICAgbGV0IGFjY19sID0gYWNjdmFsIGwgaW5cbiAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICBjcmVhdGVcbiAgICAgICAgICAoY3JlYXRlIGwgeCAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2wgdykgKGFjY3ZhbCBybCkpIHJsKVxuICAgICAgICAgIHJ2XG4gICAgICAgICAgKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIGFjY19yKVxuICAgICAgICAgIHJyXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiVmFsX21hcC5iYWxcIlxuICAgICAgICB8IE5vZGUgKHJsbCwgcmx2LCBybHIsIF8sIF8pIC0+XG4gICAgICAgICAgbGV0IGFjY19ybGwgPSBhY2N2YWwgcmxsIGluXG4gICAgICAgICAgY3JlYXRlXG4gICAgICAgICAgICAoY3JlYXRlIGwgeCAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2wgdykgYWNjX3JsbCkgcmxsKVxuICAgICAgICAgICAgcmx2XG4gICAgICAgICAgICAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2wgdykgYWNjX3IpXG4gICAgICAgICAgICAoY3JlYXRlIHJsciBydiAoSW50NjQuc3ViIGFjY19yIGFjY19ybGwpIHJyKVxuICAgICAgKVxuICApIGVsc2UgKFxuICAgIGxldCBhY2NfbCA9IGFjY3ZhbCBsIGluXG4gICAgbGV0IGFjY19yID0gYWNjdmFsIHIgaW5cbiAgICBjcmVhdGUgbCB4IChJbnQ2NC5hZGQgKEludDY0LmFkZCBhY2NfbCB3KSBhY2NfcikgclxuICApXG5cbmxldCBlbXB0eSA9IEVtcHR5XG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gdHJ1ZVxuICB8IE5vZGUgXyAtPiBmYWxzZVxuXG5sZXQgcmVjIGFkZCBrZXkgd2VpZ2h0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb2RlIChFbXB0eSwga2V5LCBFbXB0eSwgMSwgSW50NjQub2ZfaW50IHdlaWdodClcbiAgfCBOb2RlIChsLCBrZXknLCByLCBoLCBhY2MpIC0+XG4gICAgaWYga2V5ID0ga2V5JyB0aGVuXG4gICAgICBOb2RlXG4gICAgICAgICggbCxcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgcixcbiAgICAgICAgICBoLFxuICAgICAgICAgIEludDY0LmFkZCAoSW50NjQuYWRkIChJbnQ2NC5vZl9pbnQgd2VpZ2h0KSAoYWNjdmFsIGwpKSAoYWNjdmFsIHIpIClcbiAgICBlbHNlIChcbiAgICAgIGxldCB3ZWlnaHQnID0gSW50NjQuc3ViIChJbnQ2NC5zdWIgYWNjIChhY2N2YWwgbCkpIChhY2N2YWwgcikgaW5cbiAgICAgIGlmIGtleSA8IGtleScgdGhlblxuICAgICAgICBiYWwgKGFkZCBrZXkgd2VpZ2h0IGwpIGtleScgd2VpZ2h0JyByXG4gICAgICBlbHNlXG4gICAgICAgIGJhbCBsIGtleScgd2VpZ2h0JyAoYWRkIGtleSB3ZWlnaHQgcilcbiAgICApXG5cbmxldCByZWMgZmluZF9hY2MgYWltX2FjYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTm9kZSAobCwga2V5LCByLCBfLCBhY2MpIC0+XG4gICAgaWYgYWltX2FjYyA+PSBhY2MgdGhlblxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYWNjX2wgPSBhY2N2YWwgbCBpblxuICAgICAgbGV0IGFjY19yID0gYWNjdmFsIHIgaW5cbiAgICAgIGlmIGFjY19sID4gYWltX2FjYyB0aGVuXG4gICAgICAgIGZpbmRfYWNjIGFpbV9hY2MgbFxuICAgICAgZWxzZSBpZiBJbnQ2NC5hZGQgYWNjX3IgYWNjX2wgPiBhaW1fYWNjIHRoZW5cbiAgICAgICAgZmluZF9hY2MgKEludDY0LnN1YiBhaW1fYWNjIGFjY19sKSByXG4gICAgICBlbHNlXG4gICAgICAgIGtleVxuICAgIClcblxubGV0IHJlYyBtZW0ga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBmYWxzZVxuICB8IE5vZGUgKGwsIGtleScsIHIsIF8sIF8pIC0+XG4gICAgbGV0IGMgPSBNb2RzLmludF9jb21wYXJlIGtleSBrZXknIGluXG4gICAgYyA9IDBcbiAgICB8fCBtZW0ga2V5XG4gICAgICAgICAoaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHIpXG5cbmxldCByZWMgbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IE5vZGUgKEVtcHR5LCB4LCByLCBfLCBhY2MpIC0+IHgsIEludDY0LnN1YiBhY2MgKGFjY3ZhbCByKVxuICB8IE5vZGUgKGwsIF8sIF8sIF8sIF8pIC0+IG1pbl9iaW5kaW5nIGxcblxubGV0IHJlYyByZW1vdmVfbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiVmFsX21hcC5yZW1vdmVfbWluX2VsdFwiXG4gIHwgTm9kZSAoRW1wdHksIF8sIHIsIF8sIF8pIC0+IHJcbiAgfCBOb2RlIChsLCB4LCByLCBfLCBhY2MpIC0+XG4gICAgbGV0IHdlaWdodCA9IEludDY0LnN1YiAoSW50NjQuc3ViIGFjYyAoYWNjdmFsIGwpKSAoYWNjdmFsIHIpIGluXG4gICAgYmFsIChyZW1vdmVfbWluX2JpbmRpbmcgbCkgeCB3ZWlnaHQgclxuXG5sZXQgbWVyZ2UgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IEVtcHR5LCB0IC0+IHRcbiAgfCB0LCBFbXB0eSAtPiB0XG4gIHwgTm9kZSBfLCBOb2RlIF8gLT5cbiAgICBsZXQgeCwgdyA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgYmFsIHQxIHggdyAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG5sZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IE5vZGUgKGwsIHYsIHIsIF8sIGFjYykgLT5cbiAgICBsZXQgYyA9IGNvbXBhcmUgeCB2IGluXG4gICAgaWYgYyA9IDAgdGhlblxuICAgICAgbWVyZ2UgbCByXG4gICAgZWxzZSAoXG4gICAgICBsZXQgd2VpZ2h0ID0gSW50NjQuc3ViIChJbnQ2NC5zdWIgYWNjIChhY2N2YWwgbCkpIChhY2N2YWwgcikgaW5cbiAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgYmFsIChyZW1vdmUgeCBsKSB2IHdlaWdodCByXG4gICAgICBlbHNlXG4gICAgICAgIGJhbCBsIHYgd2VpZ2h0IChyZW1vdmUgeCByKVxuICAgIClcbigqXG5sZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBOb2RlKGwsIHYsIHIsIF8sXykgYXMgeCAtPiBpdGVyIGYgbDsgZiB2ICh3ZWlnaHQgeCk7IGl0ZXIgZiByXG5cbmxldCByZWMgZm9sZCBmIG0gYWNjdSA9XG4gIG1hdGNoIG0gd2l0aFxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBOb2RlKGwsIHYsIHIsIF8sXykgYXMgeCAtPiBmb2xkIGYgciAoZiB2ICh3ZWlnaHQgeCkgKGZvbGQgZiBsIGFjY3UpKVxuKilcblxuKCoqUmV0dXJucyAoa2V5LHZhbHVlKSBhdCByYW5kb20gaW4gdGhlIHRyZWUqKVxubGV0IHJhbmRvbSBzdGF0ZSBtID1cbiAgdHJ5XG4gICAgbGV0IHIgPSBSYW5kb20uU3RhdGUuaW50NjQgc3RhdGUgKGFjY3ZhbCBtKSBpblxuICAgIGZpbmRfYWNjIHIgbVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBpbnZhbGlkX2FyZyBcIlZhbF9tYXAucmFuZG9tX3ZhbFwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0YXR1cyA9XG4gIFsgYE9LXG4gIHwgYEFjY2VwdGVkXG4gIHwgYENyZWF0ZWRcbiAgfCBgQmFkX3JlcXVlc3RcbiAgfCBgQ29uZmxpY3RcbiAgfCBgTm90X2ZvdW5kXG4gIHwgYFJlcXVlc3RfdGltZW91dCBdXG4oKiogVGhlIHN1YnNldCBvZiBbQ29odHRwLkNvZGUuc3RhdHVzXSB3ZSBuZWVkICopXG5cbnR5cGUgbWVzc2FnZSA9IHtcbiAgc2V2ZXJpdHk6IExvZ3MubGV2ZWw7XG4gIHRleHQ6IHN0cmluZzsgKCpzaG91bGQgYmUgYW4gYWxnZWJyYWljIHR5cGUqKVxuICByYW5nZTogTG9jLnQgb3B0aW9uO1xufVxuXG50eXBlICgnYSwgJ2IpIHQgPSB7XG4gIHZhbHVlOiAoJ2EsICdiKSBSZXN1bHQucmVzdWx0O1xuICBzdGF0dXM6IHN0YXR1cztcbiAgbWVzc2FnZXM6IG1lc3NhZ2UgbGlzdDtcbn1cblxubGV0IHdyaXRlX3NldmVyaXR5IG9iIHggPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJyBpblxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiAoTG9ncy5sZXZlbF90b19zdHJpbmcgKFNvbWUgeCkpIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCByZWFkX3NldmVyaXR5IHAgbGIgPVxuICBtYXRjaCBMb2dzLmxldmVsX29mX3N0cmluZyAoWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIpIHdpdGhcbiAgfCBSZXN1bHQuT2sgKFNvbWUgeCkgLT4geFxuICB8IFJlc3VsdC5PayBOb25lIC0+IHJhaXNlIChZb2pzb24uSnNvbl9lcnJvciBcIk1lc3NhZ2Ugb2Ygbm8gc2V2ZXJpdHlcIilcbiAgfCBSZXN1bHQuRXJyb3IgKGBNc2cgeCkgLT5cbiAgICByYWlzZSAoWW9qc29uLkpzb25fZXJyb3IgKFwiV2hpbGUgcmVhZGluZyBzZXZlcml0eTogXCIgXiB4KSlcblxubGV0IHdyaXRlX3N0YXR1cyBvYiA9IGZ1bmN0aW9uXG4gIHwgYE9LIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiMjAwXCJcbiAgfCBgQWNjZXB0ZWQgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIyMDJcIlxuICB8IGBDcmVhdGVkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiMjAxXCJcbiAgfCBgQmFkX3JlcXVlc3QgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI0MDBcIlxuICB8IGBDb25mbGljdCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjQwOVwiXG4gIHwgYE5vdF9mb3VuZCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjQwNFwiXG4gIHwgYFJlcXVlc3RfdGltZW91dCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjQwOFwiXG5cbmxldCByZWFkX3N0YXR1cyBwIGxiID1cbiAgbWF0Y2ggWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGIgd2l0aFxuICB8IDIwMCAtPiBgT0tcbiAgfCAyMDIgLT4gYEFjY2VwdGVkXG4gIHwgMjAxIC0+IGBDcmVhdGVkXG4gIHwgNDAwIC0+IGBCYWRfcmVxdWVzdFxuICB8IDQwOSAtPiBgQ29uZmxpY3RcbiAgfCA0MDQgLT4gYE5vdF9mb3VuZFxuICB8IDQwOCAtPiBgUmVxdWVzdF90aW1lb3V0XG4gIHwgeCAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkpzb25fZXJyb3JcbiAgICAgICAgIChcIlN0YXR1cyBcIiBeIHN0cmluZ19vZl9pbnQgeCBeIFwiIGlzIG91dCBvZiB0aGUgc2NvcGUgb2YgS2FwcGFcIikpXG5cbmxldCB3cml0ZV9tZXNzYWdlIG9iIHsgc2V2ZXJpdHk7IHRleHQ7IHJhbmdlIH0gPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic2V2ZXJpdHlcIiB3cml0ZV9zZXZlcml0eSBvYiBzZXZlcml0eSBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9maWVsZCBcInRleHRcIiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIHRleHQgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCByYW5nZSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHIgLT5cbiAgICAgIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gICAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInJhbmdlXCIgTG9jLndyaXRlX3JhbmdlIG9iIHJcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgcmVhZF9tZXNzYWdlIHAgbGIgPVxuICBsZXQgc2V2ZXJpdHksIHRleHQsIHJhbmdlID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKHMsIHQsIHIpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwic2V2ZXJpdHlcIiB0aGVuXG4gICAgICAgICAgcmVhZF9zZXZlcml0eSBwIGxiLCB0LCByXG4gICAgICAgIGVsc2UgaWYga2V5ID0gXCJ0ZXh0XCIgdGhlblxuICAgICAgICAgIHMsIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCByXG4gICAgICAgIGVsc2UgaWYga2V5ID0gXCJyYW5nZVwiIHRoZW5cbiAgICAgICAgICBzLCB0LCBTb21lIChMb2MucmVhZF9yYW5nZSBwIGxiKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcmFpc2UgKFlvanNvbi5Kc29uX2Vycm9yIChcIk5vIGZpZWxkIFwiIF4ga2V5IF4gXCIgZXhwZWN0ZWQgaW4gbWVzc2FnZVwiKSkpXG4gICAgICAoTG9ncy5BcHAsIFwiXCIsIE5vbmUpIHAgbGJcbiAgaW5cbiAgeyBzZXZlcml0eTsgdGV4dDsgcmFuZ2UgfVxuXG5sZXQgcHJpbnRfbWVzc2FnZSBmIHsgcmFuZ2U7IHRleHQ7IF8gfSA9XG4gIG1hdGNoIHJhbmdlIHdpdGhcbiAgfCBTb21lIHJhbmdlIC0+IExvYy5wcmludF9hbm5vdGVkIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAodGV4dCwgcmFuZ2UpXG4gIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgdGV4dFxuXG5sZXQgd3JpdGVfdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yIG9iID0gZnVuY3Rpb25cbiAgfCB7IHZhbHVlID0gUmVzdWx0Lk9rIHg7IHN0YXR1czsgbWVzc2FnZXMgfSAtPlxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJPa1xcXCIsXCI7XG4gICAgd3JpdGVfX29rIG9iIHg7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICB3cml0ZV9zdGF0dXMgb2Igc3RhdHVzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgSnNvblV0aWwud3JpdGVfbGlzdCB3cml0ZV9tZXNzYWdlIG9iIG1lc3NhZ2VzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgfCB7IHZhbHVlID0gUmVzdWx0LkVycm9yIHg7IHN0YXR1czsgbWVzc2FnZXMgfSAtPlxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJFcnJvclxcXCIsXCI7XG4gICAgd3JpdGVfX2Vycm9yIG9iIHg7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICB3cml0ZV9zdGF0dXMgb2Igc3RhdHVzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgSnNvblV0aWwud3JpdGVfbGlzdCB3cml0ZV9tZXNzYWdlIG9iIG1lc3NhZ2VzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IHN0cmluZ19vZl90IHdyaXRlX19vayB3cml0ZV9fZXJyb3IgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgcmVhZF90X2NvbnRlbnQgZiBwIGxiID1cbiAgbGV0IHYgPSBmIHAgbGIgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBwIGxiIGluXG4gIGxldCBzID0gcmVhZF9zdGF0dXMgcCBsYiBpblxuICBsZXQgKCkgPSBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzIFlvanNvbi5CYXNpYy5yZWFkX2NvbW1hIHAgbGIgaW5cbiAgdiwgcywgWW9qc29uLkJhc2ljLnJlYWRfbGlzdCByZWFkX21lc3NhZ2UgcCBsYlxuXG5sZXQgcmVhZF90IHJlYWRfX29rIHJlYWRfX2Vycm9yIHAgbGIgPVxuICBsZXQgYXV4X3JlYWRfdCBjbG9zaW5nIHAgbGIgPVxuICAgIFlvanNvbi5CYXNpYy5yZWFkX3NwYWNlIHAgbGI7XG4gICAgbGV0IG91dCA9XG4gICAgICBZb2pzb24uQmFzaWMubWFwX2lkZW50IHBcbiAgICAgICAgKGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICBtYXRjaCBTdHJpbmcuc3ViIHMgcG9zIGxlbiB3aXRoXG4gICAgICAgICAgfCBcIk9rXCIgLT5cbiAgICAgICAgICAgIGxldCB2LCBzdGF0dXMsIG1lc3NhZ2VzID0gcmVhZF90X2NvbnRlbnQgcmVhZF9fb2sgcCBsYiBpblxuICAgICAgICAgICAgeyB2YWx1ZSA9IFJlc3VsdC5PayB2OyBzdGF0dXM7IG1lc3NhZ2VzIH1cbiAgICAgICAgICB8IFwiRXJyb3JcIiAtPlxuICAgICAgICAgICAgbGV0IHYsIHN0YXR1cywgbWVzc2FnZXMgPSByZWFkX3RfY29udGVudCByZWFkX19lcnJvciBwIGxiIGluXG4gICAgICAgICAgICB7IHZhbHVlID0gUmVzdWx0LkVycm9yIHY7IHN0YXR1czsgbWVzc2FnZXMgfVxuICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKFlvanNvbi5Kc29uX2Vycm9yXG4gICAgICAgICAgICAgICAgIChcIkZpZWxkIFxcXCJcIiBeIHggXiBcIlxcXCIgZG9lcyBub3QgYmVsb25nIHRvIHRoZSByZXN1bHQgdHlwZVwiKSkpXG4gICAgICAgIGxiXG4gICAgaW5cbiAgICBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBwIGxiO1xuICAgIGNsb3NpbmcgcCBsYjtcbiAgICBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBwIGxiO1xuICAgIG91dFxuICBpblxuICBtYXRjaCBZb2pzb24uQmFzaWMuc3RhcnRfYW55X3ZhcmlhbnQgcCBsYiB3aXRoXG4gIHwgYEVkZ3lfYnJhY2tldCAtPiBhdXhfcmVhZF90IFlvanNvbi5CYXNpYy5yZWFkX2d0IHAgbGJcbiAgfCBgRG91YmxlX3F1b3RlIC0+IHJhaXNlIChZb2pzb24uSnNvbl9lcnJvciBcIk5vdCBvZiByZXN1bHQgdHlwZVwiKVxuICB8IGBTcXVhcmVfYnJhY2tldCAtPiBhdXhfcmVhZF90IFlvanNvbi5CYXNpYy5yZWFkX3JiciBwIGxiXG5cbmxldCB0X29mX3N0cmluZyByZWFkX19vayByZWFkX19lcnJvciBzID1cbiAgcmVhZF90IHJlYWRfX29rIHJlYWRfX2Vycm9yIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbmxldCBsaWZ0ID8ob2tfc3RhdHVzID0gYE9LKSA/KGVycm9yX3N0YXR1cyA9IGBCYWRfcmVxdWVzdCkgPSBmdW5jdGlvblxuICB8IFJlc3VsdC5PayBfIGFzIHZhbHVlIC0+IHsgdmFsdWU7IHN0YXR1cyA9IG9rX3N0YXR1czsgbWVzc2FnZXMgPSBbXSB9XG4gIHwgUmVzdWx0LkVycm9yIF8gYXMgdmFsdWUgLT4geyB2YWx1ZTsgc3RhdHVzID0gZXJyb3Jfc3RhdHVzOyBtZXNzYWdlcyA9IFtdIH1cblxubGV0IGZvbGQgfihvayA6ICdvayAtPiAnYSkgfihlcnJvciA6ICdlcnJvciAtPiAnYSkgOiAoJ29rLCAnZXJyb3IpIHQgLT4gJ2EgPVxuICBmdW5jdGlvblxuICB8IHsgdmFsdWUgPSBSZXN1bHQuT2sgbzsgXyB9IC0+IG9rIG9cbiAgfCB7IHZhbHVlID0gUmVzdWx0LkVycm9yIGU7IF8gfSAtPiBlcnJvciBlXG5cbmxldCBiaW5kIDpcbiAgICB0eXBlIG9rIGEgZXJyLlxuICAgID9vdmVyd3JpdGVfc3RhdHVzOnN0YXR1cyAtPlxuICAgID9lcnJvcl9zdGF0dXM6c3RhdHVzIC0+XG4gICAgKG9rIC0+IChhLCBlcnIpIFJlc3VsdC5yZXN1bHQpIC0+XG4gICAgKG9rLCBlcnIpIHQgLT5cbiAgICAoYSwgZXJyKSB0ID1cbiBmdW4gP292ZXJ3cml0ZV9zdGF0dXMgPyhlcnJvcl9zdGF0dXMgPSBgQmFkX3JlcXVlc3QpIG9rIC0+IGZ1bmN0aW9uXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciBfOyBfIH0gYXMgZSAtPiBlXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5PayBvOyBzdGF0dXM7IG1lc3NhZ2VzIH0gLT5cbiAgICAobWF0Y2ggb2sgbyB3aXRoXG4gICAgfCBSZXN1bHQuRXJyb3IgXyBhcyB2YWx1ZSAtPiB7IHZhbHVlOyBzdGF0dXMgPSBlcnJvcl9zdGF0dXM7IG1lc3NhZ2VzIH1cbiAgICB8IFJlc3VsdC5PayBfIGFzIHZhbHVlIC0+XG4gICAgICAobWF0Y2ggb3ZlcndyaXRlX3N0YXR1cyB3aXRoXG4gICAgICB8IE5vbmUgLT4geyB2YWx1ZTsgc3RhdHVzOyBtZXNzYWdlcyB9XG4gICAgICB8IFNvbWUgc3RhdHVzIC0+IHsgdmFsdWU7IHN0YXR1czsgbWVzc2FnZXMgfSkpXG5cbmxldCBtYXAgOiB0eXBlIG9rIGEgZXJyLiAob2sgLT4gYSkgLT4gKG9rLCBlcnIpIHQgLT4gKGEsIGVycikgdCA9XG4gZnVuIG9rIC0+IGZ1bmN0aW9uXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5PayBvOyBzdGF0dXM7IG1lc3NhZ2VzIH0gLT5cbiAgICB7IHZhbHVlID0gUmVzdWx0Lk9rIChvayBvKTsgc3RhdHVzOyBtZXNzYWdlcyB9XG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciBfOyBfIH0gYXMgZSAtPiBlXG5cbmxldCBtYXAyIDpcbiAgICB0eXBlIGEgYiBvayBlcnIuIChhIC0+IGIgLT4gb2spIC0+IChhLCBlcnIpIHQgLT4gKGIsIGVycikgdCAtPiAob2ssIGVycikgdCA9XG4gZnVuIGYgYSBiIC0+XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8ICggeyB2YWx1ZSA9IFJlc3VsdC5PayBhOyBtZXNzYWdlczsgXyB9LFxuICAgICAgeyB2YWx1ZSA9IFJlc3VsdC5PayBiOyBzdGF0dXM7IG1lc3NhZ2VzID0gbScgfSApIC0+XG4gICAge1xuICAgICAgdmFsdWUgPSBSZXN1bHQuT2sgKGYgYSBiKTtcbiAgICAgIHN0YXR1cztcbiAgICAgIG1lc3NhZ2VzID0gTGlzdC5yZXZfYXBwZW5kIChMaXN0LnJldiBtJykgbWVzc2FnZXM7XG4gICAgfVxuICB8ICh7IHZhbHVlID0gUmVzdWx0LkVycm9yIF87IF8gfSBhcyBlKSwgXyAtPiBlXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5PayBfOyBfIH0sICh7IHZhbHVlID0gUmVzdWx0LkVycm9yIF87IF8gfSBhcyBlKSAtPiBlXG5cbmxldCBlcnJvciA/KHN0YXR1cyA9IGBCYWRfcmVxdWVzdCkgKGVycm9yIDogJ2Vycm9yKSA6ICgnb2ssICdlcnJvcikgdCA9XG4gIHsgdmFsdWUgPSBSZXN1bHQuRXJyb3IgZXJyb3I7IHN0YXR1czsgbWVzc2FnZXMgPSBbXSB9XG5cbmxldCBvayA/KHN0YXR1cyA9IGBPSykgKG9rIDogJ29rKSA6ICgnb2ssICdlcnJvcikgdCA9XG4gIHsgdmFsdWUgPSBSZXN1bHQuT2sgb2s7IHN0YXR1czsgbWVzc2FnZXMgPSBbXSB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leGNlcHRpb24gVW5kZWZpbmVkXG5leGNlcHRpb24gTm90QmlqZWN0aXZlXG5leGNlcHRpb24gQ2xhc2hpbmdcblxubGV0IHNwZWNpYWxfdmFsID0gbWF4X2ludFxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgaW1tZWRpYXRlOiBpbnQgYXJyYXk7XG4gIG11dGFibGUgZGVsYXllZDogKHQgKiB0KSBvcHRpb247XG4gIG11dGFibGUgaXNfaWRlbnRpdHk6IGJvb2w7XG4gIG11dGFibGUgZHN0czogTW9kcy5JbnRTZXQudDtcbn1cblxubGV0IGVtcHR5ICgpID1cbiAge1xuICAgIGltbWVkaWF0ZSA9IFt8fF07XG4gICAgZGVsYXllZCA9IE5vbmU7XG4gICAgaXNfaWRlbnRpdHkgPSB0cnVlO1xuICAgIGRzdHMgPSBNb2RzLkludFNldC5lbXB0eTtcbiAgfVxuXG5sZXQgZHVtbXkgPSBlbXB0eSAoKVxuXG5sZXQgaWRlbnRpdHkgbCA9XG4gIGxldCBtYXggPSBMaXN0LmZvbGRfbGVmdCBtYXggMCBsIGluXG4gIGxldCBpbW1lZGlhdGUgPSBBcnJheS5tYWtlIChzdWNjIG1heCkgc3BlY2lhbF92YWwgaW5cbiAgbGV0ICgpID0gTGlzdC5pdGVyIChmdW4geCAtPiBpbW1lZGlhdGUuKHgpIDwtIHgpIGwgaW5cbiAge1xuICAgIGltbWVkaWF0ZTtcbiAgICBkZWxheWVkID0gTm9uZTtcbiAgICBpc19pZGVudGl0eSA9IHRydWU7XG4gICAgZHN0cyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIG91dCB4IC0+IE1vZHMuSW50U2V0LmFkZCB4IG91dCkgTW9kcy5JbnRTZXQuZW1wdHkgbDtcbiAgfVxuXG5sZXQgaXNfaWRlbnRpdHkgaSA9IGkuaXNfaWRlbnRpdHlcblxubGV0IHJlYyBjb21wdXRlIGsgaSA9XG4gIGxldCB2ID0gaS5pbW1lZGlhdGUuKGspIGluXG4gIGlmIHYgPD4gc3BlY2lhbF92YWwgdGhlblxuICAgIHZcbiAgZWxzZSAoXG4gICAgbWF0Y2ggaS5kZWxheWVkIHdpdGhcbiAgICB8IE5vbmUgLT4gc3BlY2lhbF92YWxcbiAgICB8IFNvbWUgKHgsIHkpIC0+XG4gICAgICBpZiBrID49IEFycmF5Lmxlbmd0aCB4LmltbWVkaWF0ZSB0aGVuXG4gICAgICAgIHNwZWNpYWxfdmFsXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHYnID0gY29tcHV0ZSBrIHggaW5cbiAgICAgICAgaWYgdicgPSBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgICAgc3BlY2lhbF92YWxcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHYnJyA9IGNvbXB1dGUgdicgeSBpblxuICAgICAgICAgIGxldCBvID1cbiAgICAgICAgICAgIGlmIHYnJyA9IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgICAgICAgICAgdidcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgdicnXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBpLmltbWVkaWF0ZS4oaykgPC0gbyBpblxuICAgICAgICAgIG9cbiAgICAgICAgKVxuICAgICAgKVxuICApXG5cbmxldCBmb3JjZSBpID1cbiAgaWYgaS5kZWxheWVkIDw+IE5vbmUgdGhlbiAoXG4gICAgbGV0ICgpID0gQXJyYXkuaXRlcmkgKGZ1biBrIF8gLT4gaWdub3JlIChjb21wdXRlIGsgaSkpIGkuaW1tZWRpYXRlIGluXG4gICAgaS5kZWxheWVkIDwtIE5vbmVcbiAgKVxuXG5sZXQgdG9fbGlzdCBpID1cbiAgbGV0ICgpID0gZm9yY2UgaSBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpIGFjYyB2IC0+XG4gICAgICBpZiB2IDw+IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgICAgKGksIHYpIDo6IGFjY1xuICAgICAgZWxzZVxuICAgICAgICBhY2MpXG4gICAgW10gaS5pbW1lZGlhdGVcbiAgfD4gTGlzdC5yZXZcblxubGV0IGltYWdlIGkgPSBpLmRzdHNcblxubGV0IHVuc2FmZV9mdW5jdGlvbm5hbF9hZGQgeCB5IGkgPVxuICBsZXQgbCA9IG1heCAoQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlKSAoeCArIDEpIGluXG4gIGxldCBpbW1lZGlhdGUgPSBBcnJheS5tYWtlIGwgc3BlY2lhbF92YWwgaW5cbiAgbGV0ICgpID0gQXJyYXkuYmxpdCBpLmltbWVkaWF0ZSAwIGltbWVkaWF0ZSAwIChBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUpIGluXG4gIGxldCAoKSA9IGltbWVkaWF0ZS4oeCkgPC0geSBpblxuICB7XG4gICAgaW1tZWRpYXRlO1xuICAgIGRlbGF5ZWQgPSBpLmRlbGF5ZWQ7XG4gICAgaXNfaWRlbnRpdHkgPSBpLmlzX2lkZW50aXR5ICYmIHggPT0geTtcbiAgICBkc3RzID0gTW9kcy5JbnRTZXQuYWRkIHkgaS5kc3RzO1xuICB9XG5cbmxldCBhZGQgfmRlYnVnX21vZGUgeCB5IGkgPVxuICBsZXQgbm90X29rID1cbiAgICBkZWJ1Z19tb2RlICYmIHggPCBBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUgJiYgaS5pbW1lZGlhdGUuKHgpIDw+IHNwZWNpYWxfdmFsXG4gIGluXG4gIGlmIG5vdF9vayB0aGVuXG4gICAgcmFpc2UgQ2xhc2hpbmdcbiAgZWxzZSAoXG4gICAgbGV0IGknID0gdW5zYWZlX2Z1bmN0aW9ubmFsX2FkZCB4IHkgaSBpblxuICAgIGlmIGkuZHN0cyA9PSBpJy5kc3RzIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBTb21lIGknXG4gIClcblxubGV0IHVuc2FmZV9pbXBlcmF0aXZlX2FkZCB4IHkgaSA9XG4gIGxldCAoKSA9XG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUgaW5cbiAgICBpZiB4ID49IGwgdGhlbiAoXG4gICAgICBsZXQgaW1tZWRpYXRlID0gQXJyYXkubWFrZSAoc3VjYyB4KSBzcGVjaWFsX3ZhbCBpblxuICAgICAgbGV0ICgpID0gQXJyYXkuYmxpdCBpLmltbWVkaWF0ZSAwIGltbWVkaWF0ZSAwIGwgaW5cbiAgICAgIGxldCAoKSA9IGltbWVkaWF0ZS4oeCkgPC0geSBpblxuICAgICAgaS5pbW1lZGlhdGUgPC0gaW1tZWRpYXRlXG4gICAgKSBlbHNlXG4gICAgICBpLmltbWVkaWF0ZS4oeCkgPC0geVxuICBpblxuICBsZXQgKCkgPSBpLmlzX2lkZW50aXR5IDwtIGkuaXNfaWRlbnRpdHkgJiYgeCA9PSB5IGluXG4gIGkuZHN0cyA8LSBNb2RzLkludFNldC5hZGQgeSBpLmRzdHNcblxubGV0IGltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIHggeSBpID1cbiAgbGV0IG5vdF9vayA9XG4gICAgZGVidWdfbW9kZSAmJiB4IDwgQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlICYmIGkuaW1tZWRpYXRlLih4KSA8PiBzcGVjaWFsX3ZhbFxuICBpblxuICBpZiBub3Rfb2sgdGhlblxuICAgIHJhaXNlIENsYXNoaW5nXG4gIGVsc2UgKFxuICAgIGxldCBvcmlnaW4gPSBpLmRzdHMgaW5cbiAgICBsZXQgKCkgPSB1bnNhZmVfaW1wZXJhdGl2ZV9hZGQgeCB5IGkgaW5cbiAgICBub3QgKGkuZHN0cyA9PSBvcmlnaW4pXG4gIClcblxubGV0IHJlYyBjeWNsaWNfcGVybXV0YXRpb25fZnJvbV9pZGVudGl0eSBtYXggaWQgc3Vic3QgcHJlID0gZnVuY3Rpb25cbiAgfCBfIHdoZW4gcHJlID0gaWQgLT4gdW5zYWZlX2ltcGVyYXRpdmVfYWRkIHByZSBtYXggc3Vic3RcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBoIDo6IHQgLT5cbiAgICBsZXQgKCkgPSB1bnNhZmVfaW1wZXJhdGl2ZV9hZGQgcHJlIGggc3Vic3QgaW5cbiAgICBjeWNsaWNfcGVybXV0YXRpb25fZnJvbV9pZGVudGl0eSBtYXggaWQgc3Vic3QgaCB0XG5cbmxldCBjeWNsaWNfcGVybXV0YXRpb25fZnJvbV9saXN0IH5zdG9wX2F0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWlsd2l0aCBcIlJlbmFtaW5nLmN5Y2xpY19wZXJtdXRhdGlvbl9mcm9tX2xpc3RcIlxuICB8IGggOjogdCAtPlxuICAgIGxldCBvdXQgPSBlbXB0eSAoKSBpblxuICAgIGxldCAoKSA9IGN5Y2xpY19wZXJtdXRhdGlvbl9mcm9tX2lkZW50aXR5IGggc3RvcF9hdCBvdXQgaCB0IGluXG4gICAgb3V0XG5cbmxldCBtZW0geCBpID0geCA8IEFycmF5Lmxlbmd0aCBpLmltbWVkaWF0ZSAmJiBjb21wdXRlIHggaSA8PiBzcGVjaWFsX3ZhbFxuXG5sZXQgZm9sZCBmIGkgYWNjID1cbiAgbGV0ICgpID0gZm9yY2UgaSBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpIGFjYyB2IC0+XG4gICAgICBpZiB2ID0gc3BlY2lhbF92YWwgdGhlblxuICAgICAgICBhY2NcbiAgICAgIGVsc2VcbiAgICAgICAgZiBpIHYgYWNjKVxuICAgIGFjYyBpLmltbWVkaWF0ZVxuXG5sZXQgYXBwbHkgfmRlYnVnX21vZGUgaSB4ID1cbiAgaWYgKG5vdCBpLmlzX2lkZW50aXR5KSB8fCBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgIGxldCBjID0gY29tcHV0ZSB4IGkgaW5cbiAgICBpZiBjID0gc3BlY2lhbF92YWwgdGhlblxuICAgICAgcmFpc2UgVW5kZWZpbmVkXG4gICAgZWxzZVxuICAgICAgY1xuICApIGVsc2VcbiAgICB4XG5cbmxldCBjb21wb3NlIH5kZWJ1Z19tb2RlIGV4dGVuc2libGUgaSBpJyA9XG4gIGlmIChub3QgaS5pc19pZGVudGl0eSkgfHwgZXh0ZW5zaWJsZSB8fCBkZWJ1Z19tb2RlIHRoZW5cbiAgICB7XG4gICAgICBpbW1lZGlhdGUgPSBBcnJheS5tYWtlIChBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUpIHNwZWNpYWxfdmFsO1xuICAgICAgZGVsYXllZCA9IFNvbWUgKGksIGknKTtcbiAgICAgIGlzX2lkZW50aXR5ID0gaS5pc19pZGVudGl0eSAmJiBpJy5pc19pZGVudGl0eTtcbiAgICAgIGRzdHMgPVxuICAgICAgICBNb2RzLkludFNldC5mb2xkXG4gICAgICAgICAgKGZ1biB2JyBzZXQgLT5cbiAgICAgICAgICAgIGxldCB2JycgPSBjb21wdXRlIHYnIGknIGluXG4gICAgICAgICAgICBNb2RzLkludFNldC5hZGQgdicnIHNldClcbiAgICAgICAgICBpLmRzdHMgTW9kcy5JbnRTZXQuZW1wdHk7XG4gICAgfVxuICAoKiBsZXQgc2lnbWEsaXNfaWQgPVxuICAgICAgIE1vZHMuSW50TWFwLmZvbGQgKGZ1biB4IHkgKG91dCxpc19pZCkgLT5cbiAgICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24geSBpJy5zaWdtYSB3aXRoXG4gICAgICAgICAgIHwgU29tZSB6IC0+IChNb2RzLkludE1hcC5hZGQgeCB6IG91dCxpc19pZCAmJiB4PT16KVxuICAgICAgICAgICB8IE5vbmUgLT4gKG91dCxpc19pZCAmJiB4PT15KVxuICAgICAgICAgKSBpLnNpZ21hIChpLnNpZ21hLHRydWUpXG4gICAgIGluXG4gICAgIHtzaWdtYT1zaWdtYSA7IGlzX2lkZW50aXR5PWlzX2lkIDsgZHN0cyA9IGknLmRzdHN9XG4gICopXG4gIGVsc2VcbiAgICBpJ1xuXG5sZXQgaW52ZXJzZSBpID1cbiAgaWYgaS5pc19pZGVudGl0eSB0aGVuXG4gICAgaVxuICBlbHNlIChcbiAgICBsZXQgb3V0ID0gZW1wdHkgKCkgaW5cbiAgICBsZXQgKCkgPSBmb3JjZSBpIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4geCB5IC0+XG4gICAgICAgICAgaWYgeSA8PiBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICB5IDwgQXJyYXkubGVuZ3RoIG91dC5pbW1lZGlhdGUgJiYgb3V0LmltbWVkaWF0ZS4oeSkgPD4gc3BlY2lhbF92YWxcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2UgTm90QmlqZWN0aXZlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHVuc2FmZV9pbXBlcmF0aXZlX2FkZCB5IHggb3V0KVxuICAgICAgICBpLmltbWVkaWF0ZVxuICAgIGluXG4gICAgb3V0XG4gIClcblxubGV0IGNvbXBhcmUgaSBpJyA9XG4gIGxldCAoKSA9IGZvcmNlIGkgaW5cbiAgbGV0ICgpID0gZm9yY2UgaScgaW5cbiAgVG9vbHMuYXJyYXlfY29tcGFyZSBNb2RzLmludF9jb21wYXJlIGkuaW1tZWRpYXRlIGknLmltbWVkaWF0ZVxuXG5sZXQgZXF1YWwgaSBpJyA9IGNvbXBhcmUgaSBpJyA9IDBcblxubGV0IG1pbl9lbHQgaSA9XG4gIGxldCBsID0gQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlIGluXG4gIGxldCByZWMgYXV4X21pbl9lbHQgayA9XG4gICAgaWYgayA+PSBsIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIGxldCBvID0gY29tcHV0ZSBrIGkgaW5cbiAgICAgIGlmIG8gPSBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgIGF1eF9taW5fZWx0IChzdWNjIGspXG4gICAgICBlbHNlXG4gICAgICAgIFNvbWUgKGssIG8pXG4gICAgKVxuICBpblxuICBhdXhfbWluX2VsdCAwXG5cbmxldCBwcmludCBmIGkgPVxuICBsZXQgKCkgPSBmb3JjZSBpIGluXG4gIGlnbm9yZVxuICAgIChUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgKGZ1biBzcmMgYiBkc3QgLT5cbiAgICAgICAgIGlmIHNyYyA8PiBkc3QgJiYgZHN0IDw+IHNwZWNpYWxfdmFsIHRoZW4gKFxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVpLT4laVwiXG4gICAgICAgICAgICAgICAoaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICBQcC5jb21tYVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIFBwLmVtcHR5KVxuICAgICAgICAgICAgICAgc3JjIGRzdFxuICAgICAgICAgICBpblxuICAgICAgICAgICB0cnVlXG4gICAgICAgICApIGVsc2VcbiAgICAgICAgICAgYilcbiAgICAgICBmYWxzZSBpLmltbWVkaWF0ZSlcblxubGV0IHByaW50X2Z1bGwgZiBpID1cbiAgbGV0ICgpID0gZm9yY2UgaSBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFsoJWEpQF1cIlxuICAgIChQcC5hcnJheSBQcC5jb21tYSAoZnVuIHNyYyBmIGRzdCAtPlxuICAgICAgICAgaWYgZHN0IDw+IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgICAgICAgaWYgc3JjIDw+IGRzdCB0aGVuXG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVpLT4laVwiIHNyYyBkc3RcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9pbnQgZiBzcmMpKVxuICAgIGkuaW1tZWRpYXRlXG5cbmxldCB0b195b2pzb24gaSA9XG4gIGxldCAoKSA9IGZvcmNlIGkgaW5cbiAgYExpc3RcbiAgICAoVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgIChmdW4gc3JjIGFjYyBkc3QgLT5cbiAgICAgICAgIGlmIGRzdCA8PiBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgICAgIGBMaXN0IFsgYEludCBzcmM7IGBJbnQgZHN0IF0gOjogYWNjXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGFjYylcbiAgICAgICBbXSBpLmltbWVkaWF0ZSlcblxubGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPlxuICAgIGxldCBvdXQgPSBlbXB0eSAoKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBgTGlzdCBbIGBJbnQgc3JjOyBgSW50IGRzdCBdIGFzIHggLT5cbiAgICAgICAgICAgIGlmIG5vdCAoaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGU6ZmFsc2Ugc3JjIGRzdCBvdXQpIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcmVuYW1pbmcgaXRlbVwiLCB4KSlcbiAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCByZW5hbWluZyBpdGVtXCIsIHgpKSlcbiAgICAgICAgbFxuICAgIGluXG4gICAgb3V0XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcmVuYW1pbmdcIiwgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHRyZWUgPSB7XG4gIG1hc2s6IChpbnQsIGludCkgSGFzaHRibC50O1xuICB1bm1hc2s6IChpbnQsIGludCkgSGFzaHRibC50O1xuICBtdXRhYmxlIG5ld19tYXNrOiBpbnQ7XG4gIG11dGFibGUgaW5mX2xpc3Q6IE1vZHMuSW50U2V0LnQ7XG4gIHNpemU6IGludDtcbiAgd2VpZ2h0X29mX25vZGVzOiBmbG9hdCBhcnJheTtcbiAgd2VpZ2h0X29mX3N1YnRyZWVzOiBmbG9hdCBhcnJheTtcbiAgdW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXI6IGludCBsaXN0IGFycmF5O1xuICB1bmJhbGFuY2VkX2V2ZW50czogYm9vbCBhcnJheTtcbiAgbGF5ZXI6IGludCBhcnJheTtcbiAgbXV0YWJsZSBjb25zaXN0ZW50OiBib29sO1xufVxuXG5sZXQgbWFzayB0IGkgPVxuICB0cnkgSGFzaHRibC5maW5kIHQubWFzayBpXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IG0gPSB0Lm5ld19tYXNrIGluXG4gICAgbGV0ICgpID0gdC5uZXdfbWFzayA8LSBtICsgMSBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSB0Lm1hc2sgaSBtIGluXG4gICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIHQudW5tYXNrIG0gaSBpblxuICAgIG1cblxubGV0IHVubWFzayB0IG0gPVxuICB0cnkgSGFzaHRibC5maW5kIHQudW5tYXNrIG1cbiAgd2l0aCBOb3RfZm91bmQgLT4gaW52YWxpZF9hcmcgXCJSYW5kb21fdHJlZTogaW5jb2hlcmVudCBoYXNoXCJcblxubGV0IGlzX2luZmluaXRlIGkgdCA9XG4gIGxldCBpID0gbWFzayB0IGkgaW5cbiAgTW9kcy5JbnRTZXQubWVtIGkgdC5pbmZfbGlzdFxuXG5sZXQgZmluZCBpIHQgPVxuICBsZXQgaSA9IG1hc2sgdCBpIGluXG4gIHQud2VpZ2h0X29mX25vZGVzLihpKVxuXG5sZXQgY29weSB0ID1cbiAge1xuICAgIG1hc2sgPSBIYXNodGJsLmNvcHkgdC5tYXNrO1xuICAgIHVubWFzayA9IEhhc2h0YmwuY29weSB0LnVubWFzaztcbiAgICBuZXdfbWFzayA9IHQubmV3X21hc2s7XG4gICAgc2l6ZSA9IHQuc2l6ZTtcbiAgICAoKlx0dG90YWwgPSB0LnRvdGFsIDsqKVxuICAgIHdlaWdodF9vZl9ub2RlcyA9IEFycmF5LmNvcHkgdC53ZWlnaHRfb2Zfbm9kZXM7XG4gICAgd2VpZ2h0X29mX3N1YnRyZWVzID0gQXJyYXkuY29weSB0LndlaWdodF9vZl9zdWJ0cmVlcztcbiAgICBsYXllciA9IEFycmF5LmNvcHkgdC5sYXllcjtcbiAgICBjb25zaXN0ZW50ID0gdC5jb25zaXN0ZW50O1xuICAgIHVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyID0gQXJyYXkuY29weSB0LnVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyO1xuICAgIHVuYmFsYW5jZWRfZXZlbnRzID0gQXJyYXkuY29weSB0LnVuYmFsYW5jZWRfZXZlbnRzO1xuICAgIGluZl9saXN0ID0gTW9kcy5JbnRTZXQuZW1wdHk7XG4gIH1cblxubGV0IGNvcHlfdmVjdF9pbiB0IHQxID0gQXJyYXkuaXRlcmkgKGZ1biBpIGEgLT4gdDEuKGkpIDwtIGEpIHRcblxubGV0IGNvcHlfaW4gdDEgdDIgPVxuICBsZXQgKCkgPSBjb3B5X3ZlY3RfaW4gdDEud2VpZ2h0X29mX25vZGVzIHQyLndlaWdodF9vZl9ub2RlcyBpblxuICBsZXQgKCkgPSBjb3B5X3ZlY3RfaW4gdDEud2VpZ2h0X29mX3N1YnRyZWVzIHQyLndlaWdodF9vZl9zdWJ0cmVlcyBpblxuICBsZXQgKCkgPSBjb3B5X3ZlY3RfaW4gdDEubGF5ZXIgdDIubGF5ZXIgaW5cbiAgbGV0ICgpID0gY29weV92ZWN0X2luIHQxLnVuYmFsYW5jZWRfZXZlbnRzIHQyLnVuYmFsYW5jZWRfZXZlbnRzIGluXG4gIGxldCAoKSA9XG4gICAgY29weV92ZWN0X2luIHQxLnVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyIHQyLnVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyXG4gIGluXG4gIGxldCAoKSA9IHQyLmNvbnNpc3RlbnQgPC0gdDEuY29uc2lzdGVudCBpblxuICB0MlxuXG5sZXQgaXNfcm9vdCBpID0gaSA9IDFcblxubGV0IGRlY2xhcmVfdW5iYWxhbmNlZCBpIHQgPVxuICBsZXQgKCkgPVxuICAgIGlmIG5vdCB0LnVuYmFsYW5jZWRfZXZlbnRzLihpKSB0aGVuIChcbiAgICAgIGxldCBsID0gdC5sYXllci4oaSkgaW5cbiAgICAgIGxldCAoKSA9IHQudW5iYWxhbmNlZF9ldmVudHMuKGkpIDwtIHRydWUgaW5cbiAgICAgIHQudW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIuKGwpIDwtIGkgOjogdC51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllci4obClcbiAgICApXG4gIGluXG4gIHQuY29uc2lzdGVudCA8LSBmYWxzZVxuXG5sZXQgdXBkYXRlX3N0cnVjdHVyZSB0ID1cbiAgaWYgdC5jb25zaXN0ZW50IHRoZW5cbiAgICB0XG4gIGVsc2UgKFxuICAgIGxldCBuX2xheWVyID0gdC5sYXllci4odC5zaXplKSBpblxuICAgIGxldCB1cGRhdGVfc3RydWN0dXJlX2F1eCBpID1cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHQud2VpZ2h0X29mX3N1YnRyZWVzLihpKSA8LVxuICAgICAgICAgICh0LndlaWdodF9vZl9ub2Rlcy4oaSlcbiAgICAgICAgICArLiAoaWYgMiAqIGkgPiB0LnNpemUgdGhlblxuICAgICAgICAgICAgICAgIDAuXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0LndlaWdodF9vZl9zdWJ0cmVlcy4oMiAqIGkpKVxuICAgICAgICAgICsuXG4gICAgICAgICAgaWYgKDIgKiBpKSArIDEgPiB0LnNpemUgdGhlblxuICAgICAgICAgICAgMC5cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB0LndlaWdodF9vZl9zdWJ0cmVlcy4oKDIgKiBpKSArIDEpKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHQudW5iYWxhbmNlZF9ldmVudHMuKGkpIDwtIGZhbHNlIGluXG4gICAgICBpZiBub3QgKGlzX3Jvb3QgaSkgdGhlbiAoXG4gICAgICAgIGxldCBmYXRoZXIgPSBpIC8gMiBpblxuICAgICAgICBkZWNsYXJlX3VuYmFsYW5jZWQgZmF0aGVyIHRcbiAgICAgIClcbiAgICBpblxuICAgIGxldCByZWMgYXV4IGsgPVxuICAgICAgaWYgayA9IDAgdGhlblxuICAgICAgICAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsID0gdC51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllci4oaykgaW5cbiAgICAgICAgbGV0ICgpID0gdC51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllci4oaykgPC0gW10gaW5cbiAgICAgICAgbGV0ICgpID0gTGlzdC5pdGVyIHVwZGF0ZV9zdHJ1Y3R1cmVfYXV4IGwgaW5cbiAgICAgICAgYXV4IChrIC0gMSlcbiAgICAgIClcbiAgICBpblxuICAgIGxldCAoKSA9IGF1eCBuX2xheWVyIGluXG4gICAgbGV0ICgpID0gdC5jb25zaXN0ZW50IDwtIHRydWUgaW5cbiAgICB0XG4gIClcblxubGV0IGNyZWF0ZSBuID1cbiAgbGV0IHRfbm9kZSA9IEFycmF5Lm1ha2UgKG4gKyAxKSAwLiBpblxuICBsZXQgdF9zdWJ0cmVlID0gQXJyYXkubWFrZSAobiArIDEpIDAuIGluXG4gIGxldCBsYXllciA9IEFycmF5Lm1ha2UgKG4gKyAxKSAwIGluXG4gIGxldCAoKSA9XG4gICAgbGV0IHJlYyBhdXggayBjdXJyZW50X2xheWVyIGxheWVyX2VuZCA9XG4gICAgICBpZiBrIDw9IG4gdGhlblxuICAgICAgICBpZiBrID4gbGF5ZXJfZW5kIHRoZW5cbiAgICAgICAgICBhdXggayAoY3VycmVudF9sYXllciArIDEpICgoMiAqIGxheWVyX2VuZCkgKyAxKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBsYXllci4oaykgPC0gY3VycmVudF9sYXllciBpblxuICAgICAgICAgIGF1eCAoayArIDEpIGN1cnJlbnRfbGF5ZXIgbGF5ZXJfZW5kXG4gICAgICAgIClcbiAgICBpblxuICAgIGF1eCAxIDEgMVxuICBpblxuICBsZXQgdW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIgPSBBcnJheS5tYWtlIChsYXllci4obikgKyAxKSBbXSBpblxuICBsZXQgdW5iYWxhbmNlZF9ldmVudHMgPSBBcnJheS5tYWtlIChuICsgMSkgZmFsc2UgaW5cbiAge1xuICAgIHNpemUgPSBuO1xuICAgICgqXHR0b3RhbCA9IDAuOyopXG4gICAgbmV3X21hc2sgPSAxO1xuICAgIG1hc2sgPSBIYXNodGJsLmNyZWF0ZSAobiArIDEpO1xuICAgIHVubWFzayA9IEhhc2h0YmwuY3JlYXRlIChuICsgMSk7XG4gICAgaW5mX2xpc3QgPSBNb2RzLkludFNldC5lbXB0eTtcbiAgICBjb25zaXN0ZW50ID0gdHJ1ZTtcbiAgICB3ZWlnaHRfb2Zfbm9kZXMgPSB0X25vZGU7XG4gICAgd2VpZ2h0X29mX3N1YnRyZWVzID0gdF9zdWJ0cmVlO1xuICAgIHVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyO1xuICAgIHVuYmFsYW5jZWRfZXZlbnRzO1xuICAgIGxheWVyO1xuICB9XG5cbmxldCBhZGQgaSB3IHQgPVxuICBsZXQgaSA9IG1hc2sgdCBpIGluXG4gIGlmIHcgPCAwLiB0aGVuXG4gICAgZmFpbHdpdGggXCJOZWdhdGl2ZSB2YWx1ZSBmb3JiaWRkZW4gaW4gUmFuZG9tX3RyZWVcIlxuICBlbHNlIChcbiAgICBsZXQgdyA9XG4gICAgICBpZiB3ID0gaW5maW5pdHkgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IHQuaW5mX2xpc3QgPC0gTW9kcy5JbnRTZXQuYWRkIGkgdC5pbmZfbGlzdCBpblxuICAgICAgICAwLlxuICAgICAgKSBlbHNlIChcbiAgICAgICAgbGV0ICgpID0gdC5pbmZfbGlzdCA8LSBNb2RzLkludFNldC5yZW1vdmUgaSB0LmluZl9saXN0IGluXG4gICAgICAgIHdcbiAgICAgIClcbiAgICBpblxuICAgICgqXHRsZXQgdG90YWwgPSB0LnRvdGFsIC0uIHQud2VpZ2h0X29mX25vZGVzLihpKSArLiB3IGluKilcbiAgICBsZXQgKCkgPSB0LndlaWdodF9vZl9ub2Rlcy4oaSkgPC0gdyBpblxuICAgIGxldCAoKSA9IGRlY2xhcmVfdW5iYWxhbmNlZCBpIHQgaW5cbiAgICAoKSAoKnQudG90YWwgPC0gKG1heCAwLjAgdG90YWwpICgqbm90IHNhdGlzZmFjdG9yeSopKilcbiAgKVxuXG5sZXQgdG90YWwgdCA9XG4gIGlmIE1vZHMuSW50U2V0LmlzX2VtcHR5IHQuaW5mX2xpc3QgdGhlbiAoXG4gICAgbGV0IHQgPSB1cGRhdGVfc3RydWN0dXJlIHQgaW5cbiAgICBpZiB0LnNpemUgPSAwIHRoZW5cbiAgICAgIDAuXG4gICAgZWxzZVxuICAgICAgdC53ZWlnaHRfb2Zfc3VidHJlZXMuKDEpXG4gICkgZWxzZVxuICAgIGluZmluaXR5XG5cbmxldCByYW5kb20gcnMgdCA9XG4gIG1hdGNoIE1vZHMuSW50U2V0LnJhbmRvbSBycyB0LmluZl9saXN0IHdpdGhcbiAgfCBTb21lIHggLT4gdW5tYXNrIHQgeCwgaW5maW5pdHlcbiAgfCBOb25lIC0+XG4gICAgbGV0IHQgPSB1cGRhdGVfc3RydWN0dXJlIHQgaW5cbiAgICBsZXQgYSA9IHRvdGFsIHQgaW5cbiAgICBpZiBhIDw9IDAuIHRoZW5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHIgPSBSYW5kb20uU3RhdGUuZmxvYXQgcnMgYSBpblxuICAgICAgbGV0IHJlYyBmaW5kIGkgciA9XG4gICAgICAgIGxldCBub2RlID0gdC53ZWlnaHRfb2Zfbm9kZXMuKGkpIGluXG4gICAgICAgIGlmIHIgPCBub2RlIHRoZW5cbiAgICAgICAgICBpLCBub2RlXG4gICAgICAgIGVsc2UgaWYgMiAqIGkgPiB0LnNpemUgdGhlblxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcicgPSByIC0uIG5vZGUgaW5cbiAgICAgICAgICBsZXQgbHNvbiA9IDIgKiBpIGluXG4gICAgICAgICAgbGV0IHJzb24gPSAoMiAqIGkpICsgMSBpblxuICAgICAgICAgIGxldCBsZWZ0ID0gdC53ZWlnaHRfb2Zfc3VidHJlZXMuKGxzb24pIGluXG4gICAgICAgICAgaWYgcicgPCBsZWZ0IHRoZW5cbiAgICAgICAgICAgIGZpbmQgbHNvbiByJ1xuICAgICAgICAgIGVsc2UgaWYgcnNvbiA+IHQuc2l6ZSB0aGVuXG4gICAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kIHJzb24gKHInIC0uIGxlZnQpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgcmVwLCB3ID0gZmluZCAxIHIgaW5cbiAgICAgIHVubWFzayB0IHJlcCwgd1xuICAgIClcblxuKCogVE9ET1xuICAgIHdlaWdodF9vZl9zdWJ0cmVlczogZmxvYXQgYXJyYXkgO1xuICAgdW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXI6IGludCBsaXN0IGFycmF5IDtcbiopXG5sZXQgZGVidWdfcHJpbnQgZiB0ID1cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslc2NvbnNpc3RlbnQ6QCBbXCJcbiAgICAgIChpZiB0LmNvbnNpc3RlbnQgdGhlblxuICAgICAgICAgXCJcIlxuICAgICAgIGVsc2VcbiAgICAgICAgIFwidW5cIilcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBIYXNodGJsLml0ZXJcbiAgICAgIChmdW4gaSBrIC0+XG4gICAgICAgIGxldCBiYWwgPVxuICAgICAgICAgIGlmIHQudW5iYWxhbmNlZF9ldmVudHMuKGspIHRoZW5cbiAgICAgICAgICAgIFwiIVwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgXCJcIlxuICAgICAgICBpblxuICAgICAgICBsZXQgaW52ID1cbiAgICAgICAgICBpZiBIYXNodGJsLmZpbmQgdC5tYXNrIGsgPSBpIHRoZW5cbiAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBcIiBub3QgaW52b2x1dGl2ZVwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpbmYgPVxuICAgICAgICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHQud2VpZ2h0X29mX25vZGVzLihrKSB3aXRoXG4gICAgICAgICAgfCBGUF9pbmZpbml0ZSB3aGVuIE1vZHMuSW50U2V0Lm1lbSBrIHQuaW5mX2xpc3QgLT4gXCJcIlxuICAgICAgICAgIHwgRlBfaW5maW5pdGUgLT4gXCIgbm90IGluIGluZl9saXN0XCJcbiAgICAgICAgICB8IF8gd2hlbiBub3QgKE1vZHMuSW50U2V0Lm1lbSBrIHQuaW5mX2xpc3QpIC0+IFwiXCJcbiAgICAgICAgICB8IEZQX25vcm1hbCB8IEZQX3plcm8gfCBGUF9uYW4gfCBGUF9zdWJub3JtYWwgLT4gXCIgaW4gaW5mX2xpc3RcIlxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXMlaTolZiVzJXMsQCxcIiBiYWwgaSB0LndlaWdodF9vZl9ub2Rlcy4oaykgaW5mIGludilcbiAgICAgIHQudW5tYXNrXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJdQF1cIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGdyYXBoX3BhZ2UgdGl0bGUgP3N1YnRpdGxlIGRlcHMgaGVhZGVyIGNvcmUgZiA9XG4gIGxldCBkZXBlbmRlbmN5IGYgdCA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIjxzY3JpcHQgc3JjPVxcXCIlc1xcXCIgY2hhcnNldD1cXFwidXRmLThcXFwiPjwvc2NyaXB0PlwiIHRcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+PCFkb2N0eXBlIGh0bWw+QCxALDxodG1sPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48aGVhZD5ALDxtZXRhIGNoYXJzZXQ9XFxcInV0Zi04XFxcIj5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8dGl0bGU+JXQ8L3RpdGxlPkAsXCIgdGl0bGUgaW5cbiAgbGV0ICgpID0gUHAubGlzdCB+dHJhaWxpbmc6UHAuc3BhY2UgUHAuc3BhY2UgZGVwZW5kZW5jeSBmIGRlcHMgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiV0QF1ALDwvaGVhZD5ALFwiIGhlYWRlciBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxib2R5PkAsPGRpdiBjbGFzcz1cXFwiY29udGFpbmVyXFxcIj5ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIjxoMT5AWyV0JXRAXTwvaDE+QCxcIiB0aXRsZSAoZnVuIGYgLT5cbiAgICAgICAgbWF0Y2ggc3VidGl0bGUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIHQgLT4gRm9ybWF0LmZwcmludGYgZiBcIkAsPHNtYWxsPiV0PC9zbWFsbD5cIiB0KVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiJXRALDwvZGl2PkBdQCw8L2JvZHk+QCw8L2h0bWw+QF1ALlwiIGNvcmVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgYmluX2FsZ19vcCA9IE1VTFQgfCBTVU0gfCBESVYgfCBNSU5VUyB8IFBPVyB8IE1PRFVMTyB8IE1JTiB8IE1BWFxudHlwZSB1bl9hbGdfb3AgPSBMT0cgfCBTUVJUIHwgRVhQIHwgU0lOVVMgfCBDT1NJTlVTIHwgVEFOIHwgSU5UIHwgVU1JTlVTXG5cbnR5cGUgc3RhdGVfYWxnX29wID1cbiAgfCBDUFVUSU1FXG4gIHwgVElNRV9WQVJcbiAgfCBFVkVOVF9WQVJcbiAgfCBOVUxMX0VWRU5UX1ZBUlxuICB8IFRNQVhfVkFSXG4gIHwgRU1BWF9WQVJcblxudHlwZSBiaW5fYm9vbF9vcCA9IEFORCB8IE9SXG50eXBlIHVuX2Jvb2xfb3AgPSBOT1RcbnR5cGUgY29tcGFyZV9vcCA9IEdSRUFURVIgfCBTTUFMTEVSIHwgRVFVQUwgfCBESUZGXG50eXBlIHJldl9kZXAgPSBBTEcgb2YgaW50IHwgUlVMRSBvZiBpbnQgfCBNT0RJRiBvZiBpbnRcblxubGV0IGJpbl9hbGdfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBNVUxUIC0+IFwiKlwiXG4gIHwgU1VNIC0+IFwiK1wiXG4gIHwgRElWIC0+IFwiL1wiXG4gIHwgTUlOVVMgLT4gXCItXCJcbiAgfCBQT1cgLT4gXCJeXCJcbiAgfCBNT0RVTE8gLT4gXCJbbW9kXVwiXG4gIHwgTUlOIC0+IFwiW21pbl1cIlxuICB8IE1BWCAtPiBcIlttYXhdXCJcblxubGV0IGJpbl9hbGdfb3BfaXNfcHJlZml4ID0gZnVuY3Rpb25cbiAgfCBNQVggfCBNSU4gLT4gdHJ1ZVxuICB8IE1VTFQgfCBTVU0gfCBESVYgfCBNSU5VUyB8IFBPVyB8IE1PRFVMTyAtPiBmYWxzZVxuXG5sZXQgcHJpbnRfYmluX2FsZ19vcCBmeCB4IGZ5IHkgZiBvcCA9XG4gIGlmIGJpbl9hbGdfb3BfaXNfcHJlZml4IG9wIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXMgKCVhKSAoJWEpXCIgKGJpbl9hbGdfb3BfdG9fc3RyaW5nIG9wKSBmeCB4IGZ5IHlcbiAgZWxzZVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIoJWEgJXMgJWEpXCIgZnggeCAoYmluX2FsZ19vcF90b19zdHJpbmcgb3ApIGZ5IHlcblxubGV0IGJpbl9hbGdfb3BfdG9fanNvbiBvcCA9IGBTdHJpbmcgKGJpbl9hbGdfb3BfdG9fc3RyaW5nIG9wKVxuXG5sZXQgYmluX2FsZ19vcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiKlwiIC0+IE1VTFRcbiAgfCBgU3RyaW5nIFwiK1wiIC0+IFNVTVxuICB8IGBTdHJpbmcgXCIvXCIgLT4gRElWXG4gIHwgYFN0cmluZyBcIi1cIiAtPiBNSU5VU1xuICB8IGBTdHJpbmcgXCJeXCIgLT4gUE9XXG4gIHwgYFN0cmluZyBcIlttb2RdXCIgLT4gTU9EVUxPXG4gIHwgYFN0cmluZyBcIlttaW5dXCIgLT4gTUlOXG4gIHwgYFN0cmluZyBcIlttYXhdXCIgLT4gTUFYXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgYmluX2FsZ19vcFwiLCB4KSlcblxubGV0IHVuX2FsZ19vcF90b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IENPU0lOVVMgLT4gXCJbY29zXVwiXG4gIHwgU0lOVVMgLT4gXCJbc2luXVwiXG4gIHwgVEFOIC0+IFwiW3Rhbl1cIlxuICB8IEVYUCAtPiBcIltleHBdXCJcbiAgfCBTUVJUIC0+IFwiW3NxcnRdXCJcbiAgfCBJTlQgLT4gXCJbaW50XVwiXG4gIHwgTE9HIC0+IFwiW2xvZ11cIlxuICB8IFVNSU5VUyAtPiBcIi1cIlxuXG5sZXQgcHJpbnRfdW5fYWxnX29wIGYgb3AgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHVuX2FsZ19vcF90b19zdHJpbmcgb3ApXG5sZXQgdW5fYWxnX29wX3RvX2pzb24gb3AgPSBgU3RyaW5nICh1bl9hbGdfb3BfdG9fc3RyaW5nIG9wKVxuXG5sZXQgdW5fYWxnX29wX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJbY29zXVwiIC0+IENPU0lOVVNcbiAgfCBgU3RyaW5nIFwiW3Npbl1cIiAtPiBTSU5VU1xuICB8IGBTdHJpbmcgXCJbdGFuXVwiIC0+IFRBTlxuICB8IGBTdHJpbmcgXCJbZXhwXVwiIC0+IEVYUFxuICB8IGBTdHJpbmcgXCJbc3FydF1cIiAtPiBTUVJUXG4gIHwgYFN0cmluZyBcIltpbnRdXCIgLT4gSU5UXG4gIHwgYFN0cmluZyBcIltsb2ddXCIgLT4gTE9HXG4gIHwgYFN0cmluZyBcIi1cIiAtPiBVTUlOVVNcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCB1bl9hbGdfb3BcIiwgeCkpXG5cbmxldCBzdGF0ZV9hbGdfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBDUFVUSU1FIC0+IFwiW1RzaW1dXCJcbiAgfCBUSU1FX1ZBUiAtPiBcIltUXVwiXG4gIHwgRVZFTlRfVkFSIC0+IFwiW0VdXCJcbiAgfCBOVUxMX0VWRU5UX1ZBUiAtPiBcIltFLV1cIlxuICB8IFRNQVhfVkFSIC0+IFwiW1RtYXhdXCJcbiAgfCBFTUFYX1ZBUiAtPiBcIltFbWF4XVwiXG5cbmxldCBwcmludF9zdGF0ZV9hbGdfb3AgZiBvcCA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoc3RhdGVfYWxnX29wX3RvX3N0cmluZyBvcClcblxubGV0IHN0YXRlX2FsZ19vcF90b19qc29uIG9wID0gYFN0cmluZyAoc3RhdGVfYWxnX29wX3RvX3N0cmluZyBvcClcblxubGV0IHN0YXRlX2FsZ19vcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiW1RzaW1dXCIgLT4gQ1BVVElNRVxuICB8IGBTdHJpbmcgXCJbVF1cIiAtPiBUSU1FX1ZBUlxuICB8IGBTdHJpbmcgXCJbRV1cIiAtPiBFVkVOVF9WQVJcbiAgfCBgU3RyaW5nIFwiW0UtXVwiIC0+IE5VTExfRVZFTlRfVkFSXG4gIHwgYFN0cmluZyBcIltUbWF4XVwiIC0+IFRNQVhfVkFSXG4gIHwgYFN0cmluZyBcIltFbWF4XVwiIC0+IEVNQVhfVkFSXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3Qgc3RhdGVfYWxnX29wXCIsIHgpKVxuXG5sZXQgYmluX2Jvb2xfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBBTkQgLT4gXCImJlwiXG4gIHwgT1IgLT4gXCJ8fFwiXG5cbmxldCBwcmludF9iaW5fYm9vbF9vcCBmIG9wID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIChiaW5fYm9vbF9vcF90b19zdHJpbmcgb3ApXG5sZXQgYmluX2Jvb2xfb3BfdG9fanNvbiBvcCA9IGBTdHJpbmcgKGJpbl9ib29sX29wX3RvX3N0cmluZyBvcClcblxubGV0IGJpbl9ib29sX29wX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCImJlwiIC0+IEFORFxuICB8IGBTdHJpbmcgXCJ8fFwiIC0+IE9SXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgYm9vbGVhbiBvcFwiLCB4KSlcblxubGV0IHVuX2Jvb2xfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBOT1QgLT4gXCJbbm90XVwiXG5cbmxldCBwcmludF91bl9ib29sX29wIGYgb3AgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHVuX2Jvb2xfb3BfdG9fc3RyaW5nIG9wKVxubGV0IHVuX2Jvb2xfb3BfdG9fanNvbiBvcCA9IGBTdHJpbmcgKHVuX2Jvb2xfb3BfdG9fc3RyaW5nIG9wKVxuXG5sZXQgdW5fYm9vbF9vcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiW25vdF1cIiAtPiBOT1RcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCBib29sZWFuIG9wXCIsIHgpKVxuXG5sZXQgY29tcGFyZV9vcF90b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IEdSRUFURVIgLT4gXCI+XCJcbiAgfCBTTUFMTEVSIC0+IFwiPFwiXG4gIHwgRVFVQUwgLT4gXCI9XCJcbiAgfCBESUZGIC0+IFwiIT1cIlxuXG5sZXQgcHJpbnRfY29tcGFyZV9vcCBmIG9wID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIChjb21wYXJlX29wX3RvX3N0cmluZyBvcClcbmxldCBjb21wYXJlX29wX3RvX2pzb24gb3AgPSBgU3RyaW5nIChjb21wYXJlX29wX3RvX3N0cmluZyBvcClcblxubGV0IGNvbXBhcmVfb3Bfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIj5cIiAtPiBHUkVBVEVSXG4gIHwgYFN0cmluZyBcIjxcIiAtPiBTTUFMTEVSXG4gIHwgYFN0cmluZyBcIj1cIiAtPiBFUVVBTFxuICB8IGBTdHJpbmcgXCIhPVwiIC0+IERJRkZcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCBjb21wYXJlX29wXCIsIHgpKVxuXG5sZXQgcHJpbnRfcmV2X2RlcCBmID0gZnVuY3Rpb25cbiAgfCBSVUxFIGlkIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJyYXRlX29mX3J1bGUgWyVpXVwiIGlkXG4gICgqXCJyYXRlIG9mIHJ1bGUgJyVhJ1wiIChNb2RlbC5wcmludF9ydWxlIGVudikgaWQqKVxuICB8IEFMRyBpZCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiYWxnZWJyYWljIHZhcmlhYmxlIFslaV1cIiBpZFxuICAoKlwidmFyaWFibGUgJyVhJ1wiIChNb2RlbC5wcmludF9hbGcgZW52KSBpZCopXG4gIHwgTU9ESUYgaWQgLT4gRm9ybWF0LmZwcmludGYgZiBcImludGVydmVudGlvbiBbJWldXCIgaWRcblxubGV0IHJldl9kZXBfdG9feW9qc29uID0gZnVuY3Rpb25cbiAgfCBSVUxFIGlkIC0+IGBMaXN0IFsgYFN0cmluZyBcIlJVTEVcIjsgYEludCBpZCBdXG4gIHwgQUxHIGlkIC0+IGBMaXN0IFsgYFN0cmluZyBcIkFMR1wiOyBgSW50IGlkIF1cbiAgfCBNT0RJRiBpZCAtPiBgTGlzdCBbIGBTdHJpbmcgXCJNT0RJRlwiOyBgSW50IGlkIF1cblxubGV0IHJldl9kZXBfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJSVUxFXCI7IGBJbnQgaWQgXSAtPiBSVUxFIGlkXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiQUxHXCI7IGBJbnQgaWQgXSAtPiBBTEcgaWRcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJNT0RJRlwiOyBgSW50IGlkIF0gLT4gTU9ESUYgaWRcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCByZXZfZGVwXCIsIHgpKVxuXG5tb2R1bGUgRGVwU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSByZXZfZGVwXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBwcmludCA9IHByaW50X3Jldl9kZXBcbmVuZClcblxubW9kdWxlIERlcFNldCA9IERlcFNldE1hcC5TZXRcblxubGV0IGRlcHNldF90b195b2pzb24geCA9XG4gIGBMaXN0IChEZXBTZXQuZm9sZCAoZnVuIHggYSAtPiByZXZfZGVwX3RvX3lvanNvbiB4IDo6IGEpIHggW10pXG5cbmxldCBkZXBzZXRfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBEZXBTZXQuZW1wdHlcbiAgfCBgTGlzdCBsIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIHggLT4gRGVwU2V0LmFkZCAocmV2X2RlcF9vZl95b2pzb24geCkgYWNjKVxuICAgICAgRGVwU2V0LmVtcHR5IGxcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgZGVwc2V0XCIsIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gRiBvZiBmbG9hdCB8IEkgb2YgaW50IHwgSTY0IG9mIEludDY0LnRcblxubGV0IGNhc3RfYmluX29wIH5vcF9mID9vcF9pID9vcF9pNjQgeCB5ID1cbiAgbWF0Y2ggeCwgeSB3aXRoXG4gIHwgRiB4LCBGIHkgLT4gRiAob3BfZiB4IHkpXG4gIHwgSSB4LCBGIHkgLT4gRiAob3BfZiAoZmxvYXRfb2ZfaW50IHgpIHkpXG4gIHwgRiB4LCBJIHkgLT4gRiAob3BfZiB4IChmbG9hdF9vZl9pbnQgeSkpXG4gIHwgSSB4LCBJIHkgLT5cbiAgICAobWF0Y2ggb3BfaSB3aXRoXG4gICAgfCBOb25lIC0+IEYgKG9wX2YgKGZsb2F0X29mX2ludCB4KSAoZmxvYXRfb2ZfaW50IHkpKVxuICAgIHwgU29tZSBvcF9pIC0+IEkgKG9wX2kgeCB5KSlcbiAgfCBJIHgsIEk2NCB5IC0+XG4gICAgKG1hdGNoIG9wX2k2NCB3aXRoXG4gICAgfCBOb25lIC0+IEYgKG9wX2YgKGZsb2F0X29mX2ludCB4KSAoSW50NjQudG9fZmxvYXQgeSkpXG4gICAgfCBTb21lIG9wX2k2NCAtPiBJNjQgKG9wX2k2NCAoSW50NjQub2ZfaW50IHgpIHkpKVxuICB8IEk2NCB4LCBJIHkgLT5cbiAgICAobWF0Y2ggb3BfaTY0IHdpdGhcbiAgICB8IE5vbmUgLT4gRiAob3BfZiAoSW50NjQudG9fZmxvYXQgeCkgKGZsb2F0X29mX2ludCB5KSlcbiAgICB8IFNvbWUgb3BfaTY0IC0+IEk2NCAob3BfaTY0IHggKEludDY0Lm9mX2ludCB5KSkpXG4gIHwgSTY0IHgsIEk2NCB5IC0+XG4gICAgKG1hdGNoIG9wX2k2NCB3aXRoXG4gICAgfCBOb25lIC0+IEYgKG9wX2YgKEludDY0LnRvX2Zsb2F0IHgpIChJbnQ2NC50b19mbG9hdCB5KSlcbiAgICB8IFNvbWUgb3BfaTY0IC0+IEk2NCAob3BfaTY0IHggeSkpXG4gIHwgRiB4LCBJNjQgeSAtPiBGIChvcF9mIHggKEludDY0LnRvX2Zsb2F0IHkpKVxuICB8IEk2NCB4LCBGIHkgLT4gRiAob3BfZiAoSW50NjQudG9fZmxvYXQgeCkgeSlcblxubGV0IGNhc3RfdW5fb3AgP29wX2YgP29wX2kgP29wX2k2NCB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgRiB4IC0+XG4gICAgKG1hdGNoIG9wX2Ygd2l0aFxuICAgIHwgU29tZSBvcF9mIC0+IEYgKG9wX2YgeClcbiAgICB8IE5vbmUgLT5cbiAgICAgIChtYXRjaCBvcF9pIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcImNhc3RfdW5cIlxuICAgICAgfCBTb21lIG9wX2kgLT4gSSAob3BfaSAoaW50X29mX2Zsb2F0IHgpKSkpXG4gIHwgSTY0IHggLT5cbiAgICAobWF0Y2ggb3BfaTY0IHdpdGhcbiAgICB8IFNvbWUgb3BfaTY0IC0+IEk2NCAob3BfaTY0IHgpXG4gICAgfCBOb25lIC0+XG4gICAgICAobWF0Y2ggb3BfZiB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJjYXN0X3VuX29wXCJcbiAgICAgIHwgU29tZSBvcF9mIC0+IEYgKG9wX2YgKEludDY0LnRvX2Zsb2F0IHgpKSkpXG4gIHwgSSB4IC0+XG4gICAgKG1hdGNoIG9wX2kgd2l0aFxuICAgIHwgU29tZSBvcF9pIC0+IEkgKG9wX2kgeClcbiAgICB8IE5vbmUgLT5cbiAgICAgIChtYXRjaCBvcF9mIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcImNhc3RfdW5fb3BcIlxuICAgICAgfCBTb21lIG9wX2YgLT4gRiAob3BfZiAoZmxvYXRfb2ZfaW50IHgpKSkpXG5cbmxldCBjb21wYXJlIG4xIG4yID1cbiAgbWF0Y2ggbjEsIG4yIHdpdGhcbiAgfCBGIHgsIEYgeSAtPiBTdGRsaWIuY29tcGFyZSB4IHlcbiAgfCBJIHgsIEkgeSAtPiBTdGRsaWIuY29tcGFyZSB4IHlcbiAgfCBGIHgsIEkgeSAtPiBTdGRsaWIuY29tcGFyZSB4IChmbG9hdF9vZl9pbnQgeSlcbiAgfCBJIHgsIEYgeSAtPiBTdGRsaWIuY29tcGFyZSAoZmxvYXRfb2ZfaW50IHgpIHlcbiAgfCBJIHgsIEk2NCB5IC0+IFN0ZGxpYi5jb21wYXJlIChJbnQ2NC5vZl9pbnQgeCkgeVxuICB8IEk2NCB4LCBJNjQgeSAtPiBTdGRsaWIuY29tcGFyZSB4IHlcbiAgfCBJNjQgeCwgSSB5IC0+IFN0ZGxpYi5jb21wYXJlIHggKEludDY0Lm9mX2ludCB5KVxuICB8IEYgeCwgSTY0IHkgLT4gU3RkbGliLmNvbXBhcmUgeCAoSW50NjQudG9fZmxvYXQgeSlcbiAgfCBJNjQgeCwgRiB5IC0+IFN0ZGxpYi5jb21wYXJlIChJbnQ2NC50b19mbG9hdCB4KSB5XG5cbmxldCBpc19ncmVhdGVyIG4xIG4yID0gY29tcGFyZSBuMSBuMiA+IDBcbmxldCBpc19zbWFsbGVyIG4xIG4yID0gY29tcGFyZSBuMSBuMiA8IDBcbmxldCBpc19lcXVhbCBuMSBuMiA9IGNvbXBhcmUgbjEgbjIgPSAwXG5sZXQgYWRkIG4xIG4yID0gY2FzdF9iaW5fb3Agfm9wX2Y6KCArLiApIH5vcF9pOiggKyApIH5vcF9pNjQ6SW50NjQuYWRkIG4xIG4yXG5sZXQgc3ViIG4xIG4yID0gY2FzdF9iaW5fb3Agfm9wX2Y6KCAtLiApIH5vcF9pOiggLSApIH5vcF9pNjQ6SW50NjQuc3ViIG4xIG4yXG5sZXQgbXVsdCBuMSBuMiA9IGNhc3RfYmluX29wIH5vcF9mOiggKi4gKSB+b3BfaTooICogKSB+b3BfaTY0OkludDY0Lm11bCBuMSBuMlxubGV0IG1pbiBuMSBuMiA9IGNhc3RfYmluX29wIH5vcF9mOm1pbiB+b3BfaTptaW4gfm9wX2k2NDptaW4gbjEgbjJcbmxldCBtYXggbjEgbjIgPSBjYXN0X2Jpbl9vcCB+b3BfZjptYXggfm9wX2k6bWF4IH5vcF9pNjQ6bWF4IG4xIG4yXG5cbmxldCByZW0gbjEgbjIgPVxuICBjYXN0X2Jpbl9vcCB+b3BfaTooIG1vZCApIH5vcF9pNjQ6SW50NjQucmVtIH5vcF9mOm1vZF9mbG9hdCBuMSBuMlxuXG5sZXQgaW50ZXJuYWxfZGl2IG4xIG4yID1cbiAgY2FzdF9iaW5fb3Agfm9wX2k6KCAvICkgfm9wX2k2NDpJbnQ2NC5kaXYgfm9wX2Y6KCAvLiApIG4xIG4yXG5cbmxldCBzdWNjIG4gPSBjYXN0X3VuX29wIH5vcF9mOigoICsuICkgMS4pIH5vcF9pOnN1Y2Mgfm9wX2k2NDpJbnQ2NC5zdWNjIG5cbmxldCBwcmVkIG4gPSBjYXN0X3VuX29wIH5vcF9mOihmdW4geCAtPiB4IC0uIDEuKSB+b3BfaTpwcmVkIH5vcF9pNjQ6SW50NjQucHJlZCBuXG5sZXQgbmVnIG4gPSBjYXN0X3VuX29wIH5vcF9mOiggfi0uICkgfm9wX2k6KCB+LSApIH5vcF9pNjQ6SW50NjQubmVnIG5cblxubGV0IHRvX2Zsb2F0IG4gPVxuICBtYXRjaCBuIHdpdGhcbiAgfCBJIHggLT4gU29tZSAoZmxvYXRfb2ZfaW50IHgpXG4gIHwgSTY0IHggLT4gU29tZSAoSW50NjQudG9fZmxvYXQgeClcbiAgfCBGIHggLT5cbiAgICAobWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgfCBGUF96ZXJvIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+IFNvbWUgeFxuICAgIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gTm9uZSlcblxubGV0IHRvX2ludCBuID1cbiAgbWF0Y2ggbiB3aXRoXG4gIHwgRiB4IC0+IGludF9vZl9mbG9hdCB4XG4gIHwgSSB4IC0+IHhcbiAgfCBJNjQgeCAtPiBJbnQ2NC50b19pbnQgeCAoKk1pZ2h0IGV4Y2VlZCB0aGViaWdnZXN0IDMyIGJpdHMgaW50ZWdlciopXG5cbmxldCB6ZXJvID0gSSAwXG5cbmxldCBpc196ZXJvID0gZnVuY3Rpb25cbiAgfCBJNjQgeCAtPiB4ID0gSW50NjQuemVyb1xuICB8IEkgeCAtPiB4ID0gMFxuICB8IEYgeCAtPiBUb29scy5mbG9hdF9pc196ZXJvIHhcblxubGV0IG9uZSA9IEkgMVxuXG5sZXQgaXNfc3RyaWN0bHlfcG9zaXRpdmUgPSBmdW5jdGlvblxuICB8IEYgeCAtPiB4ID4gMC5cbiAgfCBJIHggLT4geCA+IDBcbiAgfCBJNjQgeCAtPiB4ID4gSW50NjQuemVyb1xuXG5sZXQgcG9zX3BvdyBuMSBuMiA9XG4gIGNhc3RfYmluX29wIH5vcF9mOiggKiogKSB+b3BfaTpUb29scy5wb3cgfm9wX2k2NDpUb29scy5wb3c2NCBuMSBuMlxuXG5sZXQgcG93IHggbiA9XG4gIGlmIGlzX3plcm8gbiB8fCBpc19zdHJpY3RseV9wb3NpdGl2ZSBuIHRoZW5cbiAgICBwb3NfcG93IHggblxuICBlbHNlIChcbiAgICBtYXRjaCB0b19mbG9hdCB4IHdpdGhcbiAgICB8IFNvbWUgeCAtPiBwb3NfcG93IChGICgxLiAvLiB4KSkgKG5lZyBuKVxuICAgIHwgTm9uZSAtPiBGIG5hblxuICApXG5cbmxldCBwcmludCBmID0gZnVuY3Rpb25cbiAgfCBGIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgKHN0cmluZ19vZl9mbG9hdCB4KVxuICB8IEk2NCB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlTGRcIiB4XG4gIHwgSSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlZFwiIHhcblxubGV0IHByZXR0eV9wcmludCBmID0gZnVuY3Rpb25cbiAgfCBGIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiVnXCIgeFxuICB8IEk2NCB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlTGRcIiB4XG4gIHwgSSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlZFwiIHhcblxubGV0IHByaW50X29wdGlvbiBmID0gZnVuY3Rpb25cbiAgfCBJIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiVkXCIgeFxuICB8IEk2NCB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlTGRcIiB4XG4gIHwgRiB4IC0+XG4gICAgKG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfemVybyB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgKHN0cmluZ19vZl9mbG9hdCB4KVxuICAgIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gKCkpXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IEYgeCAtPiBzdHJpbmdfb2ZfZmxvYXQgeFxuICB8IEk2NCB4IC0+IEludDY0LnRvX3N0cmluZyB4XG4gIHwgSSB4IC0+IHN0cmluZ19vZl9pbnQgeFxuXG5sZXQgcmVjIGl0ZXJpIGYgeCBuID1cbiAgaWYgaXNfc3RyaWN0bHlfcG9zaXRpdmUgbiB0aGVuXG4gICAgaXRlcmkgZiAoZiBuIHgpIChwcmVkIG4pXG4gIGVsc2VcbiAgICB4XG5cbmxldCByZWMgbWF5YmVfaXRlcmkgZiB4IG4gPVxuICBpZiBpc19zdHJpY3RseV9wb3NpdGl2ZSBuIHRoZW4gKFxuICAgIG1hdGNoIGYgbiB4IHdpdGhcbiAgICB8IE5vbmUgLT4geFxuICAgIHwgU29tZSB4JyAtPiBtYXliZV9pdGVyaSBmIHgnIChwcmVkIG4pXG4gICkgZWxzZVxuICAgIHhcblxubGV0IG9mX3N0cmluZyB4ID1cbiAgdHJ5IEkgKGludF9vZl9zdHJpbmcgeCkgd2l0aCBGYWlsdXJlIF8gLT4gRiAoZmxvYXRfb2Zfc3RyaW5nIHgpXG5cbmxldCB0b195b2pzb24gPSBmdW5jdGlvblxuICB8IEkgeCAtPiBgSW50IHhcbiAgfCBJNjQgeCAtPiBgU3RyaW5nIChJbnQ2NC50b19zdHJpbmcgeClcbiAgfCBGIHggLT5cbiAgICAobWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgfCBGUF96ZXJvIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+IGBGbG9hdCB4XG4gICAgfCBGUF9pbmZpbml0ZSB8IEZQX25hbiAtPiBgU3RyaW5nIChzdHJpbmdfb2ZfZmxvYXQgeCkpXG5cbmxldCBvZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBJbnQgeCAtPiBJIHhcbiAgfCBgRmxvYXQgeCAtPiBGIHhcbiAgfCBgU3RyaW5nIG4gYXMgeCAtPlxuICAgICh0cnkgSTY0IChJbnQ2NC5vZl9zdHJpbmcgbilcbiAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAodHJ5IEYgKGZsb2F0X29mX3N0cmluZyBuKVxuICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhbiBOYnJcIiwgeCkpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhbiBOYnJcIiwgeCkpXG5cbmxldCB3cml0ZV90IG9iIGYgPSBZb2pzb24uQmFzaWMudG9fYnVmZmVyIG9iICh0b195b2pzb24gZilcblxubGV0IHN0cmluZ19vZl90ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCByZWFkX3QgcCBsYiA9IG9mX3lvanNvbiAoWW9qc29uLkJhc2ljLmZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSBwIGxiKVxubGV0IHRfb2Zfc3RyaW5nIHMgPSByZWFkX3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxubGV0IG9mX2Jpbl9hbGdfb3AgPSBmdW5jdGlvblxuICB8IE9wZXJhdG9yLk1VTFQgLT4gbXVsdFxuICB8IE9wZXJhdG9yLlNVTSAtPiBhZGRcbiAgfCBPcGVyYXRvci5ESVYgLT5cbiAgICBmdW4geCB5IC0+XG4gICAgICBpZiAobm90IChpc196ZXJvIHkpKSAmJiBpc196ZXJvIChyZW0geCB5KSB0aGVuXG4gICAgICAgIGludGVybmFsX2RpdiB4IHlcbiAgICAgIGVsc2VcbiAgICAgICAgY2FzdF9iaW5fb3Agfm9wX2Y6KCAvLiApIHggeVxuICB8IE9wZXJhdG9yLk1JTlVTIC0+IHN1YlxuICB8IE9wZXJhdG9yLk1PRFVMTyAtPiByZW1cbiAgfCBPcGVyYXRvci5NSU4gLT4gbWluXG4gIHwgT3BlcmF0b3IuTUFYIC0+IG1heFxuICB8IE9wZXJhdG9yLlBPVyAtPiBwb3dcblxubGV0IG9mX3VuX2FsZ19vcCA9IGZ1bmN0aW9uXG4gIHwgT3BlcmF0b3IuTE9HIC0+IGZ1biB4IC0+IGNhc3RfdW5fb3Agfm9wX2Y6bG9nIHhcbiAgfCBPcGVyYXRvci5TUVJUIC0+IGZ1biB4IC0+IGNhc3RfdW5fb3Agfm9wX2Y6c3FydCB4XG4gIHwgT3BlcmF0b3IuRVhQIC0+IGZ1biB4IC0+IGNhc3RfdW5fb3Agfm9wX2Y6ZXhwIHhcbiAgfCBPcGVyYXRvci5TSU5VUyAtPiBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9mOnNpbiB4XG4gIHwgT3BlcmF0b3IuQ09TSU5VUyAtPiBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9mOmNvcyB4XG4gIHwgT3BlcmF0b3IuVEFOIC0+IGZ1biB4IC0+IGNhc3RfdW5fb3Agfm9wX2Y6dGFuIHhcbiAgfCBPcGVyYXRvci5JTlQgLT5cbiAgICBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9pOihmdW4gbiAtPiBuKSB+b3BfaTY0OihmdW4gbiAtPiBuKSB4XG4gIHwgT3BlcmF0b3IuVU1JTlVTIC0+IG5lZ1xuXG5sZXQgb2ZfY29tcGFyZV9vcCA9IGZ1bmN0aW9uXG4gIHwgT3BlcmF0b3IuR1JFQVRFUiAtPiBpc19ncmVhdGVyXG4gIHwgT3BlcmF0b3IuU01BTExFUiAtPiBpc19zbWFsbGVyXG4gIHwgT3BlcmF0b3IuRVFVQUwgLT4gaXNfZXF1YWxcbiAgfCBPcGVyYXRvci5ESUZGIC0+IGZ1biB2IHYnIC0+IG5vdCAoaXNfZXF1YWwgdiB2JylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4Y2VwdGlvbiBTeW50YXhfRXJyb3Igb2Ygc3RyaW5nIExvYy5hbm5vdGVkXG5leGNlcHRpb24gTWFsZm9ybWVkX0RlY2wgb2Ygc3RyaW5nIExvYy5hbm5vdGVkXG5leGNlcHRpb24gSW50ZXJuYWxfRXJyb3Igb2Ygc3RyaW5nIExvYy5hbm5vdGVkXG5cbmxldCB3YXJuaW5nX2J1ZmZlciA6IChMb2MudCBvcHRpb24gKiAoRm9ybWF0LmZvcm1hdHRlciAtPiB1bml0KSkgbGlzdCByZWYgPVxuICByZWYgW11cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IHsgZGVjbHM6IChzdHJpbmcgKiAnYSkgYXJyYXk7IGZpbmRlcjogaW50IE1vZHMuU3RyaW5nTWFwLnQgfVxuXG5sZXQgbmFtZV9tYXBfb2ZfYXJyYXkgP2ZvcmJpZGRlbiBhID1cbiAgbGV0IGJhZCA9XG4gICAgbWF0Y2ggZm9yYmlkZGVuIHdpdGhcbiAgICB8IE5vbmUgLT4gZnVuIF8gLT4gZmFsc2VcbiAgICB8IFNvbWUgcyAtPiBmdW4geCAtPiBNb2RzLlN0cmluZ1NldC5tZW0geCBzXG4gIGluXG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGkgbWFwICgoeCwgcG9zKSwgXykgLT5cbiAgICAgIGlmIGJhZCB4IHx8IE1vZHMuU3RyaW5nTWFwLm1lbSB4IG1hcCB0aGVuXG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoXCJMYWJlbCAnXCIgXiB4IF4gXCInIGFscmVhZHkgZGVmaW5lZFwiLCBwb3MpKVxuICAgICAgZWxzZVxuICAgICAgICBNb2RzLlN0cmluZ01hcC5hZGQgeCBpIG1hcClcbiAgICBNb2RzLlN0cmluZ01hcC5lbXB0eSBhXG5cbmxldCBjcmVhdGUgP2ZvcmJpZGRlbiBhID1cbiAge1xuICAgIGRlY2xzID0gQXJyYXkubWFwIChmdW4gKCh4LCBfKSwgeSkgLT4geCwgeSkgYTtcbiAgICBmaW5kZXIgPSBuYW1lX21hcF9vZl9hcnJheSA/Zm9yYmlkZGVuIGE7XG4gIH1cblxubGV0IGNyZWF0ZV9mcm9tX2xpc3QgP2ZvcmJpZGRlbiBsID0gY3JlYXRlID9mb3JiaWRkZW4gKEFycmF5Lm9mX2xpc3QgbClcblxuKCogVE9ETyBzZWUgaWYgd2Ugc2hvdWxkIGtlZXAgdGhpcyAqKVxubGV0IGNyZWF0ZV9ub19sb2MgP2ZvcmJpZGRlbiBhID1cbiAgQXJyYXkubWFwIChmdW4gKHgsIHkpIC0+ICh4LCBMb2MuZHVtbXkpLCB5KSBhIHw+IGNyZWF0ZSA/Zm9yYmlkZGVuXG5cbmxldCBzaXplIG5kID0gQXJyYXkubGVuZ3RoIG5kLmRlY2xzXG5sZXQgZWx0X25hbWUgbmQgaSA9IGZzdCBuZC5kZWNscy4oaSlcblxubGV0IGVsdF9pZCA/KGtpbmQgPSBcImVsZW1lbnRcIikgbmQgKHMsIHBvcykgPVxuICBtYXRjaCBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBzIG5kLmZpbmRlciB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiXFxcIiVzXFxcIiBpcyBub3QgYSBkZWNsYXJlZCAlcy5cIiBzIGtpbmQsIHBvcykpXG5cbmxldCBwcmludCB+c2VwIHBwIGYgbmQgPVxuICBQcC5hcnJheSBzZXAgKGZ1biBpIGYgKG4sIGVsKSAtPiBwcCBpIG4gZiBlbCkgZiBuZC5kZWNsc1xuXG5sZXQgZGVidWdfcHJpbnQgcHIgZiBuZCA9XG4gIHByaW50IH5zZXA6UHAuc3BhY2VcbiAgICAoZnVuIGkgbiBmIGVsIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVpPiVzOiBAWzwyPiVhQF1AXVwiIGkgbiBwciBlbClcbiAgICBmIG5kXG5cbmxldCBmb2xkIGYgYWNjIG5kID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aSAoZnVuIGkgYWNjIChuYSwgeCkgLT4gZiBpIG5hIGFjYyB4KSBhY2MgbmQuZGVjbHNcblxubGV0IG1hcCBmIG5kID1cbiAgeyBkZWNscyA9IEFycmF5Lm1hcCAoZnVuIChzLCB2KSAtPiBzLCBmIHMgdikgbmQuZGVjbHM7IGZpbmRlciA9IG5kLmZpbmRlciB9XG5cbmxldCBtYXBpIGYgbmQgPVxuICB7XG4gICAgZGVjbHMgPSBBcnJheS5tYXBpIChmdW4gaSAocywgdikgLT4gcywgZiBpIHMgdikgbmQuZGVjbHM7XG4gICAgZmluZGVyID0gbmQuZmluZGVyO1xuICB9XG5cbmxldCBlbHRfdmFsIG5kIGkgPSBzbmQgbmQuZGVjbHMuKGkpXG5cbmxldCB0b19qc29uIGF1eCBuZCA9XG4gIGBMaXN0XG4gICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICh4LCBhKSBhY2MgLT4gYEFzc29jIFsgXCJuYW1lXCIsIGBTdHJpbmcgeDsgXCJkZWNsXCIsIGF1eCBhIF0gOjogYWNjKVxuICAgICAgIG5kLmRlY2xzIFtdKVxuXG5sZXQgb2ZfanNvbiBhdXggPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT5cbiAgICBsZXQgZGVjbHMgPVxuICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIGBTdHJpbmcgeCk7IChcImRlY2xcIiwgYSkgXVxuICAgICAgICAgIHwgYEFzc29jIFsgKFwiZGVjbFwiLCBhKTsgKFwibmFtZVwiLCBgU3RyaW5nIHgpIF0gLT5cbiAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IHgsIGF1eCBhXG4gICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSB2YWxpZCBOYW1lZERlY2wgZWxlbWVudFwiLCB4KSkpXG4gICAgICAgIGxcbiAgICBpblxuICAgIGNyZWF0ZSBkZWNsc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgdmFsaWQgTmFtZWREZWNsXCIsIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IHJlbW92ZV9zdWZmaXhfYWZ0ZXJfbGFzdF9vY2N1cnJlbmNlIHAgbGlzdCA9XG4gIGxldCByZWMgYXV4IGxpc3QgYnVmZmVyIG91dHB1dCA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBoIDo6IHQgd2hlbiBwIGggLT4gYXV4IHQgW10gKChoIDo6IGJ1ZmZlcikgOjogb3V0cHV0KVxuICAgIHwgaCA6OiB0IC0+IGF1eCB0IChoIDo6IGJ1ZmZlcikgb3V0cHV0XG4gICAgfCBbXSAtPiBvdXRwdXRcbiAgaW5cbiAgbGV0IHJldl9jb25jYXQgbGlzdCA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKExpc3QuZm9sZF9sZWZ0IChmdW4gb3V0cHV0IGEgLT4gYSA6OiBvdXRwdXQpKSBbXSBsaXN0XG4gIGluXG4gIHJldl9jb25jYXQgKGF1eCBsaXN0IFtdIFtdKVxuXG5sZXQgcmVjIGxhc3QgPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhaWx3aXRoIFwibGlzdF9sYXN0XCJcbiAgfCBbIHggXSAtPiB4XG4gIHwgXyA6OiBsIC0+IGxhc3QgbFxuXG5sZXQgcmVjIGF1eF9wb3BfbGFzdCBhY2MgPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhaWx3aXRoIFwibGlzdF9wb3BfbGFzdFwiXG4gIHwgWyB4IF0gLT4gTGlzdC5yZXYgYWNjLCB4XG4gIHwgaCA6OiB0IC0+IGF1eF9wb3BfbGFzdCAoaCA6OiBhY2MpIHRcblxubGV0IHBvcF9sYXN0IGwgPSBhdXhfcG9wX2xhc3QgW10gbFxuXG5sZXQgY29uc19vcHRpb24gaCB0ID1cbiAgbWF0Y2ggaCB3aXRoXG4gIHwgU29tZSB4IC0+IHggOjogdFxuICB8IE5vbmUgLT4gdFxuXG5sZXQgcmVjIHNtYXJ0X2ZpbHRlciBmID0gZnVuY3Rpb25cbiAgfCB0IDo6IHEgYXMgbCAtPlxuICAgIGxldCBxJyA9IHNtYXJ0X2ZpbHRlciBmIHEgaW5cbiAgICBpZiBmIHQgdGhlblxuICAgICAgaWYgcSA9PSBxJyB0aGVuXG4gICAgICAgIGxcbiAgICAgIGVsc2VcbiAgICAgICAgdCA6OiBxJ1xuICAgIGVsc2VcbiAgICAgIHEnXG4gIHwgbCAtPiBsXG5cbmxldCByZWMgc21hcnRfbWFwIGYgPSBmdW5jdGlvblxuICB8IHQgOjogcSBhcyBsIC0+XG4gICAgbGV0IHEnID0gc21hcnRfbWFwIGYgcSBpblxuICAgIGxldCB0JyA9IGYgdCBpblxuICAgIGlmIHQnID09IHQgJiYgcScgPT0gcSB0aGVuXG4gICAgICBsXG4gICAgZWxzZVxuICAgICAgdCcgOjogcSdcbiAgfCBsIC0+IGxcblxubGV0IHJldl9tYXBpIGYgbCA9XG4gIGxldCByZWMgYXV4X21hcGkgaSBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoIDo6IHEgLT4gYXV4X21hcGkgKHByZWQgaSkgKGYgaSBoIDo6IGFjYykgcVxuICBpblxuICBhdXhfbWFwaSAoTGlzdC5sZW5ndGggbCAtIDEpIFtdIGxcblxubGV0IHJlYyBtYXBfb3B0aW9uIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgaCA6OiBxIC0+IGNvbnNfb3B0aW9uIChmIGgpIChtYXBfb3B0aW9uIGYgcSlcblxubGV0IGV4aXN0c191bmlxIGYgbCA9XG4gIGxldCByZWMgc2Vjb25kID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHRydWVcbiAgICB8IGggOjogdCAtPiAobm90IChmIGgpKSAmJiBzZWNvbmQgdFxuICBpblxuICBsZXQgcmVjIGZpcnN0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmIGYgaCB0aGVuXG4gICAgICAgIHNlY29uZCB0XG4gICAgICBlbHNlXG4gICAgICAgIGZpcnN0IHRcbiAgaW5cbiAgZmlyc3QgbFxuXG5sZXQgbWVyZ2VfdW5pcSBjbXAgbDEgbDIgPVxuICBsZXQgcmVjIGF1eF9tZXJnZV91bmlxIGwxIGwyIGsgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgXyAtPiBrIGwyXG4gICAgfCBfLCBbXSAtPiBrIGwxXG4gICAgfCBoMSA6OiB0MSwgaDIgOjogdDIgLT5cbiAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgIGF1eF9tZXJnZV91bmlxIHQxIGwyIChmdW4gbyAtPlxuICAgICAgICAgICAgaWYgbyA9PSB0MSB0aGVuXG4gICAgICAgICAgICAgIGsgbDFcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgayAoaDEgOjogbykpXG4gICAgICBlbHNlIGlmIGMgPiAwIHRoZW5cbiAgICAgICAgYXV4X21lcmdlX3VuaXEgbDEgdDIgKGZ1biBvIC0+XG4gICAgICAgICAgICBpZiBvID09IHQyIHRoZW5cbiAgICAgICAgICAgICAgayBsMlxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBrIChoMiA6OiBvKSlcbiAgICAgIGVsc2VcbiAgICAgICAgYXV4X21lcmdlX3VuaXEgdDEgdDIgKGZ1biBvIC0+XG4gICAgICAgICAgICBpZiBvID09IHQxIHRoZW5cbiAgICAgICAgICAgICAgayBsMVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBrIChoMSA6OiBvKSlcbiAgaW5cbiAgYXV4X21lcmdlX3VuaXEgbDEgbDIgKGZ1biB4IC0+IHgpXG5cbmxldCByZWMgcmV2X21hcF9hcHBlbmQgZiBsIGFjYyA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IGggOjogdCAtPiByZXZfbWFwX2FwcGVuZCBmIHQgKGYgaCA6OiBhY2MpXG5cbmxldCByZWMgbWFwX2ZsYXR0ZW4gZiA9IGZ1bmN0aW9uXG4gICgqIGxpc3RfYmluZCAqKVxuICB8IFtdIC0+IFtdXG4gIHwgaCA6OiB0IC0+IExpc3QuYXBwZW5kIChmIGgpIChtYXBfZmxhdHRlbiBmIHQpXG4oKiBMaXN0LnJldlxuICAgKExpc3QuZm9sZF9sZWZ0IChmdW4geCB5IC0+IExpc3QucmV2X2FwcGVuZCB5IHgpIFtdIChMaXN0LnJldl9tYXAgZiBsKSlcbiopXG5cbmxldCByZW1vdmVfY29uc2VjdXRpdmVfZG91YmxlIGwgPVxuICBsZXQgcmVjIGF1eCBsYXN0IGwgYWNjID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IGggOjogcSB3aGVuIGxhc3QgPSBoIC0+IGF1eCBsYXN0IHEgYWNjXG4gICAgfCBoIDo6IHEgLT4gYXV4IGggcSAoaCA6OiBhY2MpXG4gICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBoIDo6IHEgLT4gYXV4IGggcSBbIGggXVxuXG5sZXQgcmVjIGZvbGRfcmlnaHRfbWFwIGYgbCB4ID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW10sIHhcbiAgfCBoIDo6IHQgLT5cbiAgICBsZXQgdCcsIHgnID0gZm9sZF9yaWdodF9tYXAgZiB0IHggaW5cbiAgICBsZXQgaCcsIHgnJyA9IGYgaCB4JyBpblxuICAgIGgnIDo6IHQnLCB4JydcblxubGV0IHJlYyBmb2xkX2xlZnQyIGYgeCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IHhcbiAgfCBbXSwgXyA6OiBfIHwgXyA6OiBfLCBbXSAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImxpc3RfZm9sZF9sZWZ0MlwiKVxuICB8IGgxIDo6IHQxLCBoMiA6OiB0MiAtPiBmb2xkX2xlZnQyIGYgKGYgeCBoMSBoMikgdDEgdDJcblxubGV0IHJhbmRvbSBycyBsID0gTGlzdC5udGggbCAoUmFuZG9tLlN0YXRlLmludCBycyAoTGlzdC5sZW5ndGggbCkpXG5cbmxldCBmaW5kX29wdGlvbiAocCA6ICdhIC0+IGJvb2wpIChsIDogJ2EgbGlzdCkgOiAnYSBvcHRpb24gPVxuICB0cnkgU29tZSAoTGlzdC5maW5kIHAgbCkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggJCQgKSA9IGNvbnNfb3B0aW9uXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHtcbiAgYmFnOiBpbnQgTW9kcy5EeW5BcnJheS50O1xuICBtdXRhYmxlIHNpemU6IGludDtcbiAgZGljdDogKGludCwgaW50KSBIYXNodGJsLnQ7XG59XG5cbmxldCBjcmVhdGUgc2l6ZSA9XG4gIHsgc2l6ZSA9IDA7IGJhZyA9IE1vZHMuRHluQXJyYXkuY3JlYXRlIHNpemUgKC0xKTsgZGljdCA9IEhhc2h0YmwuY3JlYXRlIHNpemUgfVxuXG5sZXQgcHJpbnQgZiBzID1cbiAgaWYgcy5zaXplIDw9IDAgdGhlblxuICAgIFBwLmVtcHR5X3NldCBmXG4gIGVsc2UgKFxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcInsgXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgZm9yIGkgPSAwIHRvIHMuc2l6ZSAtIDIgZG9cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ludCBmIChNb2RzLkR5bkFycmF5LmdldCBzLmJhZyBpKTtcbiAgICAgICAgUHAuY29tbWEgZlxuICAgICAgZG9uZVxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2ludCBmIChNb2RzLkR5bkFycmF5LmdldCBzLmJhZyAocy5zaXplIC0gMSkpIGluXG4gICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIH1cIlxuICApXG5cbmxldCBpc19lbXB0eSBzID0gcy5zaXplID0gMFxuXG5sZXQgYWRkIHggcyA9XG4gIGlmIG5vdCAoSGFzaHRibC5tZW0gcy5kaWN0IHgpIHRoZW4gKFxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHMuYmFnIHMuc2l6ZSB4IGluXG4gICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIHMuZGljdCB4IHMuc2l6ZSBpblxuICAgIHMuc2l6ZSA8LSBzdWNjIHMuc2l6ZVxuICApXG5cbmxldCByZW1vdmUgeCBzID1cbiAgdHJ5XG4gICAgbGV0IHBvcyA9IEhhc2h0YmwuZmluZCBzLmRpY3QgeCBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVtb3ZlIHMuZGljdCB4IGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHBvcyA8IHMuc2l6ZSAtIDEgdGhlbiAoXG4gICAgICAgIGxldCBsYXN0ID0gTW9kcy5EeW5BcnJheS5nZXQgcy5iYWcgKHMuc2l6ZSAtIDEpIGluXG4gICAgICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBzLmRpY3QgbGFzdCBwb3MgaW5cbiAgICAgICAgTW9kcy5EeW5BcnJheS5zZXQgcy5iYWcgcG9zIGxhc3RcbiAgICAgIClcbiAgICBpblxuICAgIHMuc2l6ZSA8LSBwcmVkIHMuc2l6ZVxuICB3aXRoIE5vdF9mb3VuZCAtPiAoKVxuXG5sZXQgc2l6ZSBzID0gcy5zaXplXG5cbmxldCByYW5kb20gcnMgcyA9XG4gIGlmIHMuc2l6ZSA8IDEgdGhlblxuICAgIE5vbmVcbiAgZWxzZVxuICAgIFNvbWUgKE1vZHMuRHluQXJyYXkuZ2V0IHMuYmFnIChSYW5kb20uU3RhdGUuaW50IHJzIHMuc2l6ZSkpXG5cbmxldCBmb2xkIGYgcyBhY2MgPVxuICBUb29scy5yZWN0aSAoZnVuIGFjYyBpIC0+IGYgKE1vZHMuRHluQXJyYXkuZ2V0IHMuYmFnIGkpIGFjYykgYWNjIHMuc2l6ZVxuXG5sZXQgbWVtIHggcyA9IEhhc2h0YmwubWVtIHMuZGljdCB4XG4iLCJ0eXBlICdhIHQgPSAnYSBsaXN0XG5cbmxldCBjcmVhdGUgX2kgX2RlZmF1bHQgPSBbXVxubGV0IGFkZCB4IHQgPSB4IDo6IHRcbmxldCBpdGVyIGYgdCA9IExpc3QuaXRlciBmIChMaXN0LnJldiB0KVxubGV0IGNsZWFuIF8gPSBbXVxuIiwibW9kdWxlIHR5cGUgSGFzaCA9IHNpZ1xuICB0eXBlIGhhc2hlZF9saXN0XG4gIHR5cGUgZWx0XG4gIHR5cGUgY2FjaGVcblxuICB2YWwgaW50X29mX2hhc2hlZF9saXN0IDogaGFzaGVkX2xpc3QgLT4gaW50XG4gIHZhbCBjb21wYXJlIDogaGFzaGVkX2xpc3QgLT4gaGFzaGVkX2xpc3QgLT4gaW50XG4gIHZhbCBpbml0IDogdW5pdCAtPiBjYWNoZVxuICB2YWwgaGFzaCA6IGNhY2hlIC0+IGVsdCBsaXN0IC0+IGNhY2hlICogaGFzaGVkX2xpc3RcbiAgdmFsIGNvbnMgOiBjYWNoZSAtPiBlbHQgLT4gaGFzaGVkX2xpc3QgLT4gY2FjaGUgKiBoYXNoZWRfbGlzdFxuICB2YWwgZW1wdHkgOiBoYXNoZWRfbGlzdFxuICB2YWwgcHJpbnQgOiBGb3JtYXQuZm9ybWF0dGVyIC0+IGhhc2hlZF9saXN0IC0+IHVuaXRcbiAgdmFsIHByaW50X2NhY2hlIDogRm9ybWF0LmZvcm1hdHRlciAtPiBjYWNoZSAtPiB1bml0XG5lbmRcblxubW9kdWxlIE1ha2UgPVxuZnVuY3RvclxuICAoQSA6IFNldE1hcC5PcmRlcmVkVHlwZSlcbiAgLT5cbiAgc3RydWN0XG4gICAgdHlwZSBlbHQgPSBBLnRcbiAgICB0eXBlIGVsdF9pZCA9IGludFxuICAgIHR5cGUgaGFzaGVkX2xpc3QgPSBpbnRcblxuICAgIGxldCBpbnRfb2ZfaGFzaGVkX2xpc3QgKGggOiBoYXNoZWRfbGlzdCkgOiBpbnQgPSBoXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5cbiAgICBtb2R1bGUgU2V0TWFwID0gU2V0TWFwLk1ha2UgKEEpXG5cbiAgICB0eXBlIGNhY2hlID0ge1xuICAgICAgZGljdGlvbmFyeTogZWx0X2lkIFNldE1hcC5NYXAudDtcbiAgICAgIG5leHRfZWx0X2lkOiBlbHRfaWQ7XG4gICAgICBjb25zOiBoYXNoZWRfbGlzdCBvcHRpb24gTW9kcy5EeW5BcnJheS50IG9wdGlvbiBNb2RzLkR5bkFycmF5LnQ7XG4gICAgICBuZXh0X2xpc3RfaWQ6IGhhc2hlZF9saXN0O1xuICAgIH1cblxuICAgIGxldCBmc3RfZWx0X2lkID0gMVxuICAgIGxldCBuZXh0X2VsdF9pZCA9IHN1Y2NcblxuICAgIGxldCBmcmVzaF9lbHRfaWQgY2FjaGUgPVxuICAgICAgKCBjYWNoZS5uZXh0X2VsdF9pZCxcbiAgICAgICAgeyBjYWNoZSB3aXRoIG5leHRfZWx0X2lkID0gbmV4dF9lbHRfaWQgY2FjaGUubmV4dF9lbHRfaWQgfSApXG5cbiAgICBsZXQgZnN0X2xpc3RfaWQgPSAxXG4gICAgbGV0IG5leHRfbGlzdF9pZCA9IHN1Y2NcblxuICAgIGxldCBmcmVzaF9saXN0X2lkIGNhY2hlID1cbiAgICAgICggeyBjYWNoZSB3aXRoIG5leHRfbGlzdF9pZCA9IG5leHRfbGlzdF9pZCBjYWNoZS5uZXh0X2xpc3RfaWQgfSxcbiAgICAgICAgY2FjaGUubmV4dF9saXN0X2lkIClcblxuICAgIGxldCBpbml0ICgpID1cbiAgICAgIHtcbiAgICAgICAgZGljdGlvbmFyeSA9IFNldE1hcC5NYXAuZW1wdHk7XG4gICAgICAgIG5leHRfZWx0X2lkID0gZnN0X2VsdF9pZDtcbiAgICAgICAgY29ucyA9IE1vZHMuRHluQXJyYXkuY3JlYXRlIDAgTm9uZTtcbiAgICAgICAgbmV4dF9saXN0X2lkID0gZnN0X2xpc3RfaWQ7XG4gICAgICB9XG5cbiAgICBsZXQgZW1wdHkgPSAwXG5cbiAgICBsZXQgaGFzaF9lbHQgY2FjaGUgZWx0ID1cbiAgICAgIG1hdGNoIFNldE1hcC5NYXAuZmluZF9vcHRpb24gZWx0IGNhY2hlLmRpY3Rpb25hcnkgd2l0aFxuICAgICAgfCBTb21lIGkgLT4gY2FjaGUsIGlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgaWQsIGNhY2hlID0gZnJlc2hfZWx0X2lkIGNhY2hlIGluXG4gICAgICAgIHsgY2FjaGUgd2l0aCBkaWN0aW9uYXJ5ID0gU2V0TWFwLk1hcC5hZGQgZWx0IGlkIGNhY2hlLmRpY3Rpb25hcnkgfSwgaWRcblxuICAgIGxldCBjb25zIGNhY2hlIGhlYWQgdGFpbCA9XG4gICAgICBsZXQgY2FjaGUsIGhhc2hfaGVhZCA9IGhhc2hfZWx0IGNhY2hlIGhlYWQgaW5cbiAgICAgIGxldCBzdWJ0YWIgPVxuICAgICAgICBtYXRjaCBNb2RzLkR5bkFycmF5LmdldCBjYWNoZS5jb25zIGhhc2hfaGVhZCB3aXRoXG4gICAgICAgIHwgU29tZSBzdWJ0YWIgLT4gc3VidGFiXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBzdWJ0YWIgPSBNb2RzLkR5bkFycmF5LmNyZWF0ZSAwIE5vbmUgaW5cbiAgICAgICAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBjYWNoZS5jb25zIGhhc2hfaGVhZCAoU29tZSBzdWJ0YWIpIGluXG4gICAgICAgICAgc3VidGFiXG4gICAgICBpblxuICAgICAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgc3VidGFiIHRhaWwgd2l0aFxuICAgICAgfCBTb21lIGhhc2ggLT4gY2FjaGUsIGhhc2hcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgY2FjaGUsIGhhc2ggPSBmcmVzaF9saXN0X2lkIGNhY2hlIGluXG4gICAgICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHN1YnRhYiB0YWlsIChTb21lIGhhc2gpIGluXG4gICAgICAgIGNhY2hlLCBoYXNoXG5cbiAgICBsZXQgcmVjIGhhc2ggY2FjaGUgbGlzdCA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgW10gLT4gY2FjaGUsIGVtcHR5XG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICBsZXQgY2FjaGUsIHQgPSBoYXNoIGNhY2hlIHQgaW5cbiAgICAgICAgY29ucyBjYWNoZSBoIHRcblxuICAgIGxldCBwcmludCBmb3JtYXR0ZXIgPSBGb3JtYXQuZnByaW50ZiBmb3JtYXR0ZXIgXCIlaVwiXG5cbiAgICBsZXQgcHJpbnRfY2FjaGUgZm9ybWF0dGVyIGNhY2hlID1cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZvcm1hdHRlclxuICAgICAgICAgIFwiQ2FjaGVcXG4gbmV4dF9mcmVzaF9saXN0X2lkOiAlaTsgbmV4dF9mcmVzaF9lbHRfaWQ6ICVpXFxuXCJcbiAgICAgICAgICBjYWNoZS5uZXh0X2xpc3RfaWQgY2FjaGUubmV4dF9lbHRfaWRcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBTZXRNYXAuTWFwLml0ZXJcbiAgICAgICAgICAoZnVuIGEgaSAtPiBGb3JtYXQuZnByaW50ZiBmb3JtYXR0ZXIgXCJESUM6JWE6JWlcXG5cIiBBLnByaW50IGEgaSlcbiAgICAgICAgICBjYWNoZS5kaWN0aW9uYXJ5XG4gICAgICBpblxuICAgICAgTW9kcy5EeW5BcnJheS5pdGVyaVxuICAgICAgICAoZnVuIGEgb3B0IC0+XG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgb3B0IC0+XG4gICAgICAgICAgICBNb2RzLkR5bkFycmF5Lml0ZXJpXG4gICAgICAgICAgICAgIChmdW4gYiBrIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggayB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBTb21lIGsgLT4gRm9ybWF0LmZwcmludGYgZm9ybWF0dGVyIFwiKCVpLCVpKS0+JWkgXFxuXCIgYSBiIGspXG4gICAgICAgICAgICAgIG9wdClcbiAgICAgICAgY2FjaGUuY29uc1xuICBlbmRcbiIsInR5cGUgdCA9IHsgbnVtOiBpbnQ7IGRlbjogaW50IH1cblxubGV0IHNpZ24gZiA9XG4gIGlmIGYubnVtID0gMCB0aGVuXG4gICAgeyBudW0gPSAwOyBkZW4gPSAxIH1cbiAgZWxzZSBpZiBmLmRlbiA8IDAgdGhlblxuICAgIHsgbnVtID0gLWYubnVtOyBkZW4gPSAtZi5kZW4gfVxuICBlbHNlXG4gICAgZlxuXG5sZXQgc2ltcGxpZnkgZiA9XG4gIGxldCBnY2QgPSBUb29scy5nY2RfMiBmLm51bSBmLmRlbiBpblxuICBzaWduIHsgbnVtID0gZi5udW0gLyBnY2Q7IGRlbiA9IGYuZGVuIC8gZ2NkIH1cblxubGV0IGFkZCBhIGIgPVxuICBzaW1wbGlmeSB7IG51bSA9IChhLm51bSAqIGIuZGVuKSArIChiLm51bSAqIGEuZGVuKTsgZGVuID0gYi5kZW4gKiBhLmRlbiB9XG5cbmxldCBvcCBmID0geyBmIHdpdGggbnVtID0gLWYubnVtIH1cbmxldCBzdWIgYSBiID0gYWRkIGEgKG9wIGIpXG5sZXQgbXVsdCBhIGIgPSBzaW1wbGlmeSB7IG51bSA9IGEubnVtICogYi5udW07IGRlbiA9IGEuZGVuICogYi5kZW4gfVxuXG5sZXQgaW52IGEgPVxuICBpZiBhLm51bSA9IDAgdGhlblxuICAgIE5vbmVcbiAgZWxzZVxuICAgIFNvbWUgeyBudW0gPSBhLmRlbjsgZGVuID0gYS5udW0gfVxuXG5sZXQgZGl2IGEgYiA9XG4gIG1hdGNoIGludiBiIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGJfaW52IC0+IFNvbWUgKG11bHQgYSBiX2ludilcblxubGV0IHplcm8gPSB7IG51bSA9IDA7IGRlbiA9IDEgfVxubGV0IGlzX2VxdWFsIGEgYiA9IGEgPSBiXG5sZXQgb2ZfaW50IGkgPSBzaW1wbGlmeSB7IG51bSA9IGk7IGRlbiA9IDEgfVxubGV0IGlzX3plcm8gYSA9IGEubnVtID0gMFxubGV0IG9uZSA9IG9mX2ludCAxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7IHdhaXRpbmdfZWx0czogJ2EgbGlzdDsgbGlzdDogJ2EgbGlzdCB9XG5cbmxldCBlbXB0eSA9IHsgd2FpdGluZ19lbHRzID0gW107IGxpc3QgPSBbXSB9XG5sZXQgaXNfZW1wdHkgdCA9IHQud2FpdGluZ19lbHRzID0gW10gJiYgdC5saXN0ID0gW11cbmxldCBwdXNoIGEgdCA9IHsgdCB3aXRoIHdhaXRpbmdfZWx0cyA9IGEgOjogdC53YWl0aW5nX2VsdHMgfVxuXG5sZXQgcmVjIHBvcCB0ID1cbiAgbWF0Y2ggdC5saXN0IHdpdGhcbiAgfCBoZWFkIDo6IHRhaWwgLT4geyB0IHdpdGggbGlzdCA9IHRhaWwgfSwgU29tZSBoZWFkXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC53YWl0aW5nX2VsdHMgd2l0aFxuICAgIHwgW10gLT4gdCwgTm9uZVxuICAgIHwgbGlzdCAtPiBwb3AgeyB3YWl0aW5nX2VsdHMgPSBbXTsgbGlzdCA9IExpc3QucmV2IGxpc3QgfSlcbiIsIigqIENvcHlyaWdodCAoYykgMjAxMSwgSm9uYXRoYW4gRGVycXVlIC0gTUlUIGxpY2Vuc2VkICopXG5cbmxldCAoICYmJiApID0gSW50MzIubG9nYW5kXG5sZXQgKCBeXl4gKSA9IEludDMyLmxvZ3hvclxubGV0ICggPj4+ICkgPSBJbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsXG5cbmxldCBjcmNfdGFibGUgPVxuICBbfFxuICAgIDB4MDAwMDAwMDBsO1xuICAgIDB4NzcwNzMwOTZsO1xuICAgIDB4ZWUwZTYxMmNsO1xuICAgIDB4OTkwOTUxYmFsO1xuICAgIDB4MDc2ZGM0MTlsO1xuICAgIDB4NzA2YWY0OGZsO1xuICAgIDB4ZTk2M2E1MzVsO1xuICAgIDB4OWU2NDk1YTNsO1xuICAgIDB4MGVkYjg4MzJsO1xuICAgIDB4NzlkY2I4YTRsO1xuICAgIDB4ZTBkNWU5MWVsO1xuICAgIDB4OTdkMmQ5ODhsO1xuICAgIDB4MDliNjRjMmJsO1xuICAgIDB4N2ViMTdjYmRsO1xuICAgIDB4ZTdiODJkMDdsO1xuICAgIDB4OTBiZjFkOTFsO1xuICAgIDB4MWRiNzEwNjRsO1xuICAgIDB4NmFiMDIwZjJsO1xuICAgIDB4ZjNiOTcxNDhsO1xuICAgIDB4ODRiZTQxZGVsO1xuICAgIDB4MWFkYWQ0N2RsO1xuICAgIDB4NmRkZGU0ZWJsO1xuICAgIDB4ZjRkNGI1NTFsO1xuICAgIDB4ODNkMzg1YzdsO1xuICAgIDB4MTM2Yzk4NTZsO1xuICAgIDB4NjQ2YmE4YzBsO1xuICAgIDB4ZmQ2MmY5N2FsO1xuICAgIDB4OGE2NWM5ZWNsO1xuICAgIDB4MTQwMTVjNGZsO1xuICAgIDB4NjMwNjZjZDlsO1xuICAgIDB4ZmEwZjNkNjNsO1xuICAgIDB4OGQwODBkZjVsO1xuICAgIDB4M2I2ZTIwYzhsO1xuICAgIDB4NGM2OTEwNWVsO1xuICAgIDB4ZDU2MDQxZTRsO1xuICAgIDB4YTI2NzcxNzJsO1xuICAgIDB4M2MwM2U0ZDFsO1xuICAgIDB4NGIwNGQ0NDdsO1xuICAgIDB4ZDIwZDg1ZmRsO1xuICAgIDB4YTUwYWI1NmJsO1xuICAgIDB4MzViNWE4ZmFsO1xuICAgIDB4NDJiMjk4NmNsO1xuICAgIDB4ZGJiYmM5ZDZsO1xuICAgIDB4YWNiY2Y5NDBsO1xuICAgIDB4MzJkODZjZTNsO1xuICAgIDB4NDVkZjVjNzVsO1xuICAgIDB4ZGNkNjBkY2ZsO1xuICAgIDB4YWJkMTNkNTlsO1xuICAgIDB4MjZkOTMwYWNsO1xuICAgIDB4NTFkZTAwM2FsO1xuICAgIDB4YzhkNzUxODBsO1xuICAgIDB4YmZkMDYxMTZsO1xuICAgIDB4MjFiNGY0YjVsO1xuICAgIDB4NTZiM2M0MjNsO1xuICAgIDB4Y2ZiYTk1OTlsO1xuICAgIDB4YjhiZGE1MGZsO1xuICAgIDB4MjgwMmI4OWVsO1xuICAgIDB4NWYwNTg4MDhsO1xuICAgIDB4YzYwY2Q5YjJsO1xuICAgIDB4YjEwYmU5MjRsO1xuICAgIDB4MmY2ZjdjODdsO1xuICAgIDB4NTg2ODRjMTFsO1xuICAgIDB4YzE2MTFkYWJsO1xuICAgIDB4YjY2NjJkM2RsO1xuICAgIDB4NzZkYzQxOTBsO1xuICAgIDB4MDFkYjcxMDZsO1xuICAgIDB4OThkMjIwYmNsO1xuICAgIDB4ZWZkNTEwMmFsO1xuICAgIDB4NzFiMTg1ODlsO1xuICAgIDB4MDZiNmI1MWZsO1xuICAgIDB4OWZiZmU0YTVsO1xuICAgIDB4ZThiOGQ0MzNsO1xuICAgIDB4NzgwN2M5YTJsO1xuICAgIDB4MGYwMGY5MzRsO1xuICAgIDB4OTYwOWE4OGVsO1xuICAgIDB4ZTEwZTk4MThsO1xuICAgIDB4N2Y2YTBkYmJsO1xuICAgIDB4MDg2ZDNkMmRsO1xuICAgIDB4OTE2NDZjOTdsO1xuICAgIDB4ZTY2MzVjMDFsO1xuICAgIDB4NmI2YjUxZjRsO1xuICAgIDB4MWM2YzYxNjJsO1xuICAgIDB4ODU2NTMwZDhsO1xuICAgIDB4ZjI2MjAwNGVsO1xuICAgIDB4NmMwNjk1ZWRsO1xuICAgIDB4MWIwMWE1N2JsO1xuICAgIDB4ODIwOGY0YzFsO1xuICAgIDB4ZjUwZmM0NTdsO1xuICAgIDB4NjViMGQ5YzZsO1xuICAgIDB4MTJiN2U5NTBsO1xuICAgIDB4OGJiZWI4ZWFsO1xuICAgIDB4ZmNiOTg4N2NsO1xuICAgIDB4NjJkZDFkZGZsO1xuICAgIDB4MTVkYTJkNDlsO1xuICAgIDB4OGNkMzdjZjNsO1xuICAgIDB4ZmJkNDRjNjVsO1xuICAgIDB4NGRiMjYxNThsO1xuICAgIDB4M2FiNTUxY2VsO1xuICAgIDB4YTNiYzAwNzRsO1xuICAgIDB4ZDRiYjMwZTJsO1xuICAgIDB4NGFkZmE1NDFsO1xuICAgIDB4M2RkODk1ZDdsO1xuICAgIDB4YTRkMWM0NmRsO1xuICAgIDB4ZDNkNmY0ZmJsO1xuICAgIDB4NDM2OWU5NmFsO1xuICAgIDB4MzQ2ZWQ5ZmNsO1xuICAgIDB4YWQ2Nzg4NDZsO1xuICAgIDB4ZGE2MGI4ZDBsO1xuICAgIDB4NDQwNDJkNzNsO1xuICAgIDB4MzMwMzFkZTVsO1xuICAgIDB4YWEwYTRjNWZsO1xuICAgIDB4ZGQwZDdjYzlsO1xuICAgIDB4NTAwNTcxM2NsO1xuICAgIDB4MjcwMjQxYWFsO1xuICAgIDB4YmUwYjEwMTBsO1xuICAgIDB4YzkwYzIwODZsO1xuICAgIDB4NTc2OGI1MjVsO1xuICAgIDB4MjA2Zjg1YjNsO1xuICAgIDB4Yjk2NmQ0MDlsO1xuICAgIDB4Y2U2MWU0OWZsO1xuICAgIDB4NWVkZWY5MGVsO1xuICAgIDB4MjlkOWM5OThsO1xuICAgIDB4YjBkMDk4MjJsO1xuICAgIDB4YzdkN2E4YjRsO1xuICAgIDB4NTliMzNkMTdsO1xuICAgIDB4MmViNDBkODFsO1xuICAgIDB4YjdiZDVjM2JsO1xuICAgIDB4YzBiYTZjYWRsO1xuICAgIDB4ZWRiODgzMjBsO1xuICAgIDB4OWFiZmIzYjZsO1xuICAgIDB4MDNiNmUyMGNsO1xuICAgIDB4NzRiMWQyOWFsO1xuICAgIDB4ZWFkNTQ3MzlsO1xuICAgIDB4OWRkMjc3YWZsO1xuICAgIDB4MDRkYjI2MTVsO1xuICAgIDB4NzNkYzE2ODNsO1xuICAgIDB4ZTM2MzBiMTJsO1xuICAgIDB4OTQ2NDNiODRsO1xuICAgIDB4MGQ2ZDZhM2VsO1xuICAgIDB4N2E2YTVhYThsO1xuICAgIDB4ZTQwZWNmMGJsO1xuICAgIDB4OTMwOWZmOWRsO1xuICAgIDB4MGEwMGFlMjdsO1xuICAgIDB4N2QwNzllYjFsO1xuICAgIDB4ZjAwZjkzNDRsO1xuICAgIDB4ODcwOGEzZDJsO1xuICAgIDB4MWUwMWYyNjhsO1xuICAgIDB4NjkwNmMyZmVsO1xuICAgIDB4Zjc2MjU3NWRsO1xuICAgIDB4ODA2NTY3Y2JsO1xuICAgIDB4MTk2YzM2NzFsO1xuICAgIDB4NmU2YjA2ZTdsO1xuICAgIDB4ZmVkNDFiNzZsO1xuICAgIDB4ODlkMzJiZTBsO1xuICAgIDB4MTBkYTdhNWFsO1xuICAgIDB4NjdkZDRhY2NsO1xuICAgIDB4ZjliOWRmNmZsO1xuICAgIDB4OGViZWVmZjlsO1xuICAgIDB4MTdiN2JlNDNsO1xuICAgIDB4NjBiMDhlZDVsO1xuICAgIDB4ZDZkNmEzZThsO1xuICAgIDB4YTFkMTkzN2VsO1xuICAgIDB4MzhkOGMyYzRsO1xuICAgIDB4NGZkZmYyNTJsO1xuICAgIDB4ZDFiYjY3ZjFsO1xuICAgIDB4YTZiYzU3NjdsO1xuICAgIDB4M2ZiNTA2ZGRsO1xuICAgIDB4NDhiMjM2NGJsO1xuICAgIDB4ZDgwZDJiZGFsO1xuICAgIDB4YWYwYTFiNGNsO1xuICAgIDB4MzYwMzRhZjZsO1xuICAgIDB4NDEwNDdhNjBsO1xuICAgIDB4ZGY2MGVmYzNsO1xuICAgIDB4YTg2N2RmNTVsO1xuICAgIDB4MzE2ZThlZWZsO1xuICAgIDB4NDY2OWJlNzlsO1xuICAgIDB4Y2I2MWIzOGNsO1xuICAgIDB4YmM2NjgzMWFsO1xuICAgIDB4MjU2ZmQyYTBsO1xuICAgIDB4NTI2OGUyMzZsO1xuICAgIDB4Y2MwYzc3OTVsO1xuICAgIDB4YmIwYjQ3MDNsO1xuICAgIDB4MjIwMjE2YjlsO1xuICAgIDB4NTUwNTI2MmZsO1xuICAgIDB4YzViYTNiYmVsO1xuICAgIDB4YjJiZDBiMjhsO1xuICAgIDB4MmJiNDVhOTJsO1xuICAgIDB4NWNiMzZhMDRsO1xuICAgIDB4YzJkN2ZmYTdsO1xuICAgIDB4YjVkMGNmMzFsO1xuICAgIDB4MmNkOTllOGJsO1xuICAgIDB4NWJkZWFlMWRsO1xuICAgIDB4OWI2NGMyYjBsO1xuICAgIDB4ZWM2M2YyMjZsO1xuICAgIDB4NzU2YWEzOWNsO1xuICAgIDB4MDI2ZDkzMGFsO1xuICAgIDB4OWMwOTA2YTlsO1xuICAgIDB4ZWIwZTM2M2ZsO1xuICAgIDB4NzIwNzY3ODVsO1xuICAgIDB4MDUwMDU3MTNsO1xuICAgIDB4OTViZjRhODJsO1xuICAgIDB4ZTJiODdhMTRsO1xuICAgIDB4N2JiMTJiYWVsO1xuICAgIDB4MGNiNjFiMzhsO1xuICAgIDB4OTJkMjhlOWJsO1xuICAgIDB4ZTVkNWJlMGRsO1xuICAgIDB4N2NkY2VmYjdsO1xuICAgIDB4MGJkYmRmMjFsO1xuICAgIDB4ODZkM2QyZDRsO1xuICAgIDB4ZjFkNGUyNDJsO1xuICAgIDB4NjhkZGIzZjhsO1xuICAgIDB4MWZkYTgzNmVsO1xuICAgIDB4ODFiZTE2Y2RsO1xuICAgIDB4ZjZiOTI2NWJsO1xuICAgIDB4NmZiMDc3ZTFsO1xuICAgIDB4MThiNzQ3NzdsO1xuICAgIDB4ODgwODVhZTZsO1xuICAgIDB4ZmYwZjZhNzBsO1xuICAgIDB4NjYwNjNiY2FsO1xuICAgIDB4MTEwMTBiNWNsO1xuICAgIDB4OGY2NTllZmZsO1xuICAgIDB4Zjg2MmFlNjlsO1xuICAgIDB4NjE2YmZmZDNsO1xuICAgIDB4MTY2Y2NmNDVsO1xuICAgIDB4YTAwYWUyNzhsO1xuICAgIDB4ZDcwZGQyZWVsO1xuICAgIDB4NGUwNDgzNTRsO1xuICAgIDB4MzkwM2IzYzJsO1xuICAgIDB4YTc2NzI2NjFsO1xuICAgIDB4ZDA2MDE2ZjdsO1xuICAgIDB4NDk2OTQ3NGRsO1xuICAgIDB4M2U2ZTc3ZGJsO1xuICAgIDB4YWVkMTZhNGFsO1xuICAgIDB4ZDlkNjVhZGNsO1xuICAgIDB4NDBkZjBiNjZsO1xuICAgIDB4MzdkODNiZjBsO1xuICAgIDB4YTliY2FlNTNsO1xuICAgIDB4ZGViYjllYzVsO1xuICAgIDB4NDdiMmNmN2ZsO1xuICAgIDB4MzBiNWZmZTlsO1xuICAgIDB4YmRiZGYyMWNsO1xuICAgIDB4Y2FiYWMyOGFsO1xuICAgIDB4NTNiMzkzMzBsO1xuICAgIDB4MjRiNGEzYTZsO1xuICAgIDB4YmFkMDM2MDVsO1xuICAgIDB4Y2RkNzA2OTNsO1xuICAgIDB4NTRkZTU3MjlsO1xuICAgIDB4MjNkOTY3YmZsO1xuICAgIDB4YjM2NjdhMmVsO1xuICAgIDB4YzQ2MTRhYjhsO1xuICAgIDB4NWQ2ODFiMDJsO1xuICAgIDB4MmE2ZjJiOTRsO1xuICAgIDB4YjQwYmJlMzdsO1xuICAgIDB4YzMwYzhlYTFsO1xuICAgIDB4NWEwNWRmMWJsO1xuICAgIDB4MmQwMmVmOGRsO1xuICB8XVxuXG5sZXQgc3RyaW5nX2ZvbGRfbGVmdCBmIGFjYyBzdHIgb2Zmc2V0IGxlbmd0aCA9XG4gIGxldCBhY2NfciA9IHJlZiBhY2MgaW5cbiAgZm9yIGkgPSBvZmZzZXQgdG8gb2Zmc2V0ICsgbGVuZ3RoIC0gMSBkb1xuICAgIGFjY19yIDo9IGYgIWFjY19yIChTdHJpbmcuZ2V0IHN0ciBpKVxuICBkb25lO1xuICAhYWNjX3JcblxuKCpsZXQgYmlnc3RyaW5nX2ZvbGRfbGVmdCBmIGFjYyBzdHIgPVxuICBsZXQgYWNjX3IgPSByZWYgYWNjIGluXG4gIGZvciBpID0gMCB0byAoQmlnYXJyYXkuQXJyYXkxLmRpbSBzdHIpIC0gMSBkb1xuICAgIGFjY19yIDo9IGYgIWFjY19yIEBAIEJpZ2FycmF5LkFycmF5MS5nZXQgc3RyIGlcbiAgZG9uZTtcbiAgIWFjY19yXG4qKVxudHlwZSB0ID0gaW50MzJcblxubGV0IHVwZGF0ZV9jcmMgYWNjIGMgPVxuICBsZXQgaW5kZXggPSBJbnQzMi50b19pbnQgKGFjYyBeXl4gSW50MzIub2ZfaW50IChpbnRfb2ZfY2hhciBjKSAmJiYgMHhmZmwpIGluXG4gIGNyY190YWJsZS4oaW5kZXgpIF5eXiAoYWNjID4+PiA4KSAmJiYgMHhmZmZmZmZmZmxcblxubGV0IHN0cmluZyA/KGNyYyA9IDBsKSBzdHIgb2Zmc2V0IGxlbmd0aCA9XG4gIHN0cmluZ19mb2xkX2xlZnQgdXBkYXRlX2NyYyAoY3JjIF5eXiAweGZmZmZmZmZmbCkgc3RyIG9mZnNldCBsZW5ndGhcbiAgXl5eIDB4ZmZmZmZmZmZsXG5cbigqbGV0IGJpZ3N0cmluZyA/KGNyYz0wbCkgc3RyID1cbiAgKGJpZ3N0cmluZ19mb2xkX2xlZnQgdXBkYXRlX2NyYyAoY3JjIF5eXiAweGZmZmZmZmZmbCkgc3RyKSBeXl4gMHhmZmZmZmZmZmxcbiopXG4oKlxubGV0IGRpZ2VzdCAoY3JjIDogdCkgPyhvZmYgPSAwKSA/bGVuIGJ1ZiA9XG4gIGxldCBsZW4gPSBtYXRjaCBsZW4gd2l0aCBTb21lIGxlbiAtPiBsZW4gfCBOb25lIC0+IENzdHJ1Y3QubGVuIGJ1ZiAtIG9mZiBpblxuICBjc3RydWN0IH5jcmM6KGNyYyA6PiBpbnQzMikgKENzdHJ1Y3Quc3ViIGJ1ZiBvZmYgbGVuKVxuXG5sZXQgZGlnZXN0diA9XG4gIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIHYgLT4gZGlnZXN0IGFjYyB2KVxuXG5sZXQgZGlnZXN0YyAoY3JjIDogdCkgYnl0ZSA9XG4gICh1cGRhdGVfY3JjIChjcmMgXl5eIDB4ZmZmZmZmZmZsKSAoQ2hhci5jaHIgYnl0ZSkpIF5eXiAweGZmZmZmZmZmbFxuXG5sZXQgZGlnZXN0cyAoY3JjIDogdCkgPyhvZmYgPSAwKSA/bGVuIGJ1ZiA9XG4gIGxldCBsZW4gPSBtYXRjaCBsZW4gd2l0aCBTb21lIGxlbiAtPiBsZW4gfCBOb25lIC0+IEJ5dGVzLmxlbmd0aCBidWYgLSBvZmYgaW5cbiAgYnl0ZXMgfmNyYzooY3JjIDo+IGludDMyKSBidWYgb2ZmIGxlblxuXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0b19pbnQzMiA6IHQgLT4gaW50MzIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBwcCBwcGYgdiA9IEZtdC5wZiBwcGYgXCIlMDRseFwiICh2IDo+IGludDMyKVxuXG5sZXQgZGVmYXVsdCA9IDBsXG5cbmxldCBlcSA9IEludDMyLmVxdWFsXG5sZXQgbmVxIGEgYiA9IG5vdCAoZXEgYSBiKVxuKilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgY29sb3IgPSBSZWQgfCBHcmV5IHwgTGlnaHRibHVlIHwgQmxhY2tcblxubGV0IHRyaXBsZV9vZl9jb2xvciA9IGZ1bmN0aW9uXG4gIHwgUmVkIC0+IDI1NSwgMCwgMFxuICB8IEdyZXkgLT4gMTI4LCAxMjgsIDEyOFxuICB8IExpZ2h0Ymx1ZSAtPiAwLCAwLCAxMjhcbiAgfCBCbGFjayAtPiAwLCAwLCAwXG4iLCJ0eXBlICdhIHQgPSB7XG4gIHNpemU6IGludDtcbiAgZGVmYXVsdDogJ2E7XG4gIG11dGFibGUgc3RhcnQ6IGludDtcbiAgbXV0YWJsZSBmaW5hbDogaW50O1xuICBjb250ZW50OiAnYSBhcnJheTtcbn1cblxubGV0IGNyZWF0ZSBpIGRlZmF1bHQgPVxuICBsZXQgc2l6ZSA9IG1heCBpIDIgaW5cbiAgeyBzaXplOyBkZWZhdWx0OyBzdGFydCA9IDA7IGZpbmFsID0gMDsgY29udGVudCA9IEFycmF5Lm1ha2Ugc2l6ZSBkZWZhdWx0IH1cblxubGV0IHN1Y2MgaSB0ID1cbiAgaWYgaSA9IHQuc2l6ZSAtIDEgdGhlblxuICAgIDBcbiAgZWxzZVxuICAgIHN1Y2MgaVxuXG5sZXQgZnVsbCB0ID0gc3VjYyB0LmZpbmFsIHQgPSB0LnN0YXJ0XG5sZXQgZnJlZV9vbmUgdCA9IHQuc3RhcnQgPC0gc3VjYyB0LnN0YXJ0IHRcblxubGV0IGFkZCB4IHQgPVxuICBsZXQgKCkgPSBpZiBmdWxsIHQgdGhlbiBmcmVlX29uZSB0IGluXG4gIGxldCAoKSA9IHQuY29udGVudC4odC5maW5hbCkgPC0geCBpblxuICBsZXQgKCkgPSB0LmZpbmFsIDwtIHN1Y2MgdC5maW5hbCB0IGluXG4gIHRcblxubGV0IGl0ZXIgZiB0ID1cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA8PiB0LmZpbmFsIHRoZW4gKFxuICAgICAgbGV0ICgpID0gZiB0LmNvbnRlbnQuKGkpIGluXG4gICAgICBhdXggKHN1Y2MgaSB0KVxuICAgIClcbiAgaW5cbiAgYXV4IHQuc3RhcnRcblxubGV0IGNsZWFuIHQgPVxuICBsZXQgcmVjIGF1eCBrID1cbiAgICBpZiBrID0gdC5zaXplIHRoZW5cbiAgICAgIHRcbiAgICBlbHNlIChcbiAgICAgIGxldCAoKSA9IHQuY29udGVudC4oaykgPC0gdC5kZWZhdWx0IGluXG4gICAgICBhdXggKGsgKyAxKVxuICAgIClcbiAgaW5cbiAgYXV4IDBcbiIsIigqKlxuICAqIGNhY2hlLm1sXG4gICpcbiAgKiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjcvMDMvMjAxMlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAyNy8wMy8yMDEyXG4gICogKlxuICAqXG4gICogSXQgdXNlcyBpbXBlcmF0aXZlIHN0eWxlcyB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIG90aGVyIG1vZHVsZXNcbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIgIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgQ2FjaGUgPSBzaWdcbiAgbW9kdWxlIE8gOiBTZXRNYXAuT3JkZXJlZFR5cGVcblxuICB0eXBlIHRcblxuICB2YWwgbGFzdCA6IHQgLT4gTy50IG9wdGlvblxuICB2YWwgY3JlYXRlIDogaW50IG9wdGlvbiAtPiB0XG4gIHZhbCBhZGQgOiBPLnQgLT4gdCAtPiB0XG4gIHZhbCBmb2xkIDogKE8udCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgaXRlciA6IChPLnQgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIENhY2hlID1cbmZ1bmN0b3JcbiAgKE9PIDogU2V0TWFwLk9yZGVyZWRUeXBlKVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICBtb2R1bGUgTyA9IE9PXG4gICAgICBtb2R1bGUgU00gPSBTZXRNYXAuTWFrZSAoTylcbiAgICAgIG1vZHVsZSBTID0gU00uU2V0XG5cbiAgICAgIHR5cGUgZmluaXRlX2NhY2hlID0ge1xuICAgICAgICBzaXplOiBpbnQ7XG4gICAgICAgIG9mZnNldDogaW50O1xuICAgICAgICBjYWNoZTogTy50IG9wdGlvbiBhcnJheTtcbiAgICAgICAgYmFnOiBTLnQ7XG4gICAgICAgIGxhc3Q6IE8udCBvcHRpb247XG4gICAgICB9XG5cbiAgICAgIGxldCBjcmVhdGVfZmluaXRlIG4gPVxuICAgICAgICB7XG4gICAgICAgICAgc2l6ZSA9IG47XG4gICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICBjYWNoZSA9IEFycmF5Lm1ha2UgbiBOb25lO1xuICAgICAgICAgIGJhZyA9IFMuZW1wdHk7XG4gICAgICAgICAgbGFzdCA9IE5vbmU7XG4gICAgICAgIH1cblxuICAgICAgbGV0IG5leHQgdCA9XG4gICAgICAgIGxldCBvZmZzZXQgPSB0Lm9mZnNldCBpblxuICAgICAgICBpZiBvZmZzZXQgPSB0LnNpemUgLSAxIHRoZW5cbiAgICAgICAgICB7IHQgd2l0aCBvZmZzZXQgPSAwIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIHsgdCB3aXRoIG9mZnNldCA9IG9mZnNldCArIDEgfVxuXG4gICAgICBsZXQgYWRkX2Zpbml0ZSBrZXkgdCA9XG4gICAgICAgIGxldCB0ID0geyB0IHdpdGggbGFzdCA9IFNvbWUga2V5IH0gaW5cbiAgICAgICAgaWYgUy5tZW0ga2V5IHQuYmFnIHRoZW5cbiAgICAgICAgICB0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB0ID0geyB0IHdpdGggYmFnID0gUy5hZGQga2V5IHQuYmFnIH0gaW5cbiAgICAgICAgICBsZXQgdCA9IG5leHQgdCBpblxuICAgICAgICAgIGxldCBvdmVyd3JpdHRlbl92YWx1ZSA9IHQuY2FjaGUuKHQub2Zmc2V0KSBpblxuICAgICAgICAgIGxldCB0ID1cbiAgICAgICAgICAgIG1hdGNoIG92ZXJ3cml0dGVuX3ZhbHVlIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiB0XG4gICAgICAgICAgICB8IFNvbWUgb3ZlcndyaXR0ZW5fdmFsdWUgLT5cbiAgICAgICAgICAgICAgeyB0IHdpdGggYmFnID0gUy5yZW1vdmUgb3ZlcndyaXR0ZW5fdmFsdWUgdC5iYWcgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IF8gPSB0LmNhY2hlLih0Lm9mZnNldCkgPC0gU29tZSBrZXkgaW5cbiAgICAgICAgICB0XG4gICAgICAgIClcblxuICAgICAgbGV0IGxhc3RfZmluaXRlIHQgPSB0Lmxhc3RcblxuICAgICAgdHlwZSBpbmZpbml0ZV9jYWNoZSA9IHsgaW5mX2JhZzogUy50OyBsYXN0OiBPLnQgb3B0aW9uIH1cbiAgICAgIHR5cGUgdCA9IEZpbml0ZSBvZiBmaW5pdGVfY2FjaGUgfCBJbmZpbml0ZSBvZiBpbmZpbml0ZV9jYWNoZVxuXG4gICAgICBsZXQgY3JlYXRlX2luZmluaXRlID0geyBpbmZfYmFnID0gUy5lbXB0eTsgbGFzdCA9IE5vbmUgfVxuXG4gICAgICBsZXQgYWRkX2luZmluaXRlIGtleSB0ID1cbiAgICAgICAgeyBpbmZfYmFnID0gUy5hZGQga2V5IHQuaW5mX2JhZzsgbGFzdCA9IFNvbWUga2V5IH1cblxuICAgICAgbGV0IGNyZWF0ZSBzaXplID1cbiAgICAgICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBJbmZpbml0ZSBjcmVhdGVfaW5maW5pdGVcbiAgICAgICAgfCBTb21lIGEgLT4gRmluaXRlIChjcmVhdGVfZmluaXRlIGEpXG5cbiAgICAgIGxldCBsYXN0IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBGaW5pdGUgdCAtPiBsYXN0X2Zpbml0ZSB0XG4gICAgICAgIHwgSW5maW5pdGUgdCAtPiB0Lmxhc3RcblxuICAgICAgbGV0IGFkZCBrZXkgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEZpbml0ZSB0IC0+IEZpbml0ZSAoYWRkX2Zpbml0ZSBrZXkgdClcbiAgICAgICAgfCBJbmZpbml0ZSB0IC0+IEluZmluaXRlIChhZGRfaW5maW5pdGUga2V5IHQpXG5cbiAgICAgIGxldCBmb2xkIGYgdCBhID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRmluaXRlIHQgLT4gUy5mb2xkIGYgdC5iYWcgYVxuICAgICAgICB8IEluZmluaXRlIHQgLT4gUy5mb2xkIGYgdC5pbmZfYmFnIGFcblxuICAgICAgbGV0IGl0ZXIgZiB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRmluaXRlIHQgLT4gUy5pdGVyIGYgdC5iYWdcbiAgICAgICAgfCBJbmZpbml0ZSB0IC0+IFMuaXRlciBmIHQuaW5mX2JhZ1xuICAgIGVuZCA6XG4gICAgICBDYWNoZSB3aXRoIHR5cGUgTy50ID0gT08udClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRnJvbSkgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgIFBpZXJyZSBXZWlzIGFuZCBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXh0ZW5zaWJsZSBidWZmZXJzICopXG5cbm1vZHVsZSBCQSA9IEJpZ2FycmF5LkFycmF5MVxuXG50eXBlIGJpZ3N0cmluZyA9XG4gIChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbnR5cGUgdCA9IHtcbiAgbXV0YWJsZSBidWZmZXI6IGJpZ3N0cmluZztcbiAgbXV0YWJsZSBwb3NpdGlvbjogaW50O1xuICBtdXRhYmxlIGxlbmd0aDogaW50O1xuICBpbml0aWFsX2J1ZmZlcjogYmlnc3RyaW5nO1xufVxuXG5sZXQgY3JlYXRlIG4gPVxuICBsZXQgbiA9XG4gICAgaWYgbiA8IDEgdGhlblxuICAgICAgMVxuICAgIGVsc2VcbiAgICAgIG5cbiAgaW5cbiAgbGV0IG4gPVxuICAgIGlmIG4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgZWxzZVxuICAgICAgblxuICBpblxuICBsZXQgcyA9IEJBLmNyZWF0ZSBCaWdhcnJheS5jaGFyIEJpZ2FycmF5LmNfbGF5b3V0IG4gaW5cbiAgeyBidWZmZXIgPSBzOyBwb3NpdGlvbiA9IDA7IGxlbmd0aCA9IG47IGluaXRpYWxfYnVmZmVyID0gcyB9XG5cbmxldCBjb250ZW50cyBiID1cbiAgbGV0IG91dCA9IEJBLmNyZWF0ZSBCaWdhcnJheS5jaGFyIEJpZ2FycmF5LmNfbGF5b3V0IGIucG9zaXRpb24gaW5cbiAgbGV0ICgpID0gQkEuYmxpdCAoQkEuc3ViIGIuYnVmZmVyIDAgYi5wb3NpdGlvbikgb3V0IGluXG4gIG91dFxuXG4oKmxldCBzdWIgYiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGIucG9zaXRpb24gLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5zdWJcIlxuICBlbHNlIEJBLnN1YiBiLmJ1ZmZlciBvZnMgbGVuXG4qKVxuKCpcbmxldCBibGl0IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IHNyY29mZiA8IDAgfHwgc3Jjb2ZmID4gc3JjLnBvc2l0aW9uIC0gbGVuXG4gICAgICAgICAgICAgfHwgZHN0b2ZmIDwgMCB8fCBkc3RvZmYgPiAoQnl0ZXMubGVuZ3RoIGRzdCkgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5ibGl0XCJcbiAgZWxzZVxuICAgIEJBLmJsaXQgKHN1YiBzcmMgc3Jjb2ZmIGxlbilcbiAgICAgIChCaWdzdHJpbmcuc3ViIChCaWdzdHJpbmcub2ZfYXJyYXkgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCBkc3QpIGRzdG9mZiBsZW4pXG4qKVxuXG5sZXQgbnRoIGIgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPj0gYi5wb3NpdGlvbiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIubnRoXCJcbiAgZWxzZVxuICAgIEJBLnVuc2FmZV9nZXQgYi5idWZmZXIgb2ZzXG5cbmxldCBsZW5ndGggYiA9IGIucG9zaXRpb25cbmxldCBjbGVhciBiID0gYi5wb3NpdGlvbiA8LSAwXG5cbmxldCByZXNldCBiID1cbiAgYi5wb3NpdGlvbiA8LSAwO1xuICBiLmJ1ZmZlciA8LSBiLmluaXRpYWxfYnVmZmVyO1xuICBiLmxlbmd0aCA8LSBCQS5kaW0gYi5idWZmZXJcblxubGV0IHJlc2l6ZSBiIG1vcmUgPVxuICBsZXQgbGVuID0gYi5sZW5ndGggaW5cbiAgbGV0IG5ld19sZW4gPSByZWYgbGVuIGluXG4gIHdoaWxlIGIucG9zaXRpb24gKyBtb3JlID4gIW5ld19sZW4gZG9cbiAgICBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlblxuICBkb25lO1xuICBpZiAhbmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgaWYgYi5wb3NpdGlvbiArIG1vcmUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgIG5ld19sZW4gOj0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgZWxzZVxuICAgICAgZmFpbHdpdGggXCJCdWZmZXIuYWRkOiBjYW5ub3QgZ3JvdyBidWZmZXJcIjtcbiAgbGV0IG5ld19idWZmZXIgPSBCQS5jcmVhdGUgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCAhbmV3X2xlbiBpblxuICAoKiBQUiM2MTQ4OiBsZXQncyBrZWVwIHVzaW5nIFtibGl0XSByYXRoZXIgdGhhbiBbdW5zYWZlX2JsaXRdIGluXG4gICAgIHRoaXMgdHJpY2t5IGZ1bmN0aW9uIHRoYXQgaXMgc2xvdyBhbnl3YXkuICopXG4gIEJBLmJsaXQgKEJBLnN1YiBiLmJ1ZmZlciAwIGIucG9zaXRpb24pIChCQS5zdWIgbmV3X2J1ZmZlciAwIGIucG9zaXRpb24pO1xuICBiLmJ1ZmZlciA8LSBuZXdfYnVmZmVyO1xuICBiLmxlbmd0aCA8LSAhbmV3X2xlblxuXG5sZXQgYWRkX2NoYXIgYiBjID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMTtcbiAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciBwb3MgYztcbiAgYi5wb3NpdGlvbiA8LSBwb3MgKyAxXG5cbigqXG4gbGV0IGFkZF91dGZfOF91Y2hhciBiIHUgPSBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gfCB1IHdoZW4gdSA8PSAweDAwN0YgLT5cbiAgICAgYWRkX2NoYXIgYiAoQ2hhci51bnNhZmVfY2hyIHUpXG4gfCB1IHdoZW4gdSA8PSAweDA3RkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgMiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMjtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgIClcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweEMwIGxvciAodSBsc3IgNikpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSlcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAodSBsYW5kIDB4M0YpKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgMlxuIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDMgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDM7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHhFMCBsb3IgKHUgbHNyIDEyKSkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICgodSBsc3IgNikgbGFuZCAweDNGKSkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyAzXG4gfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyA0ID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4RjAgbG9yICh1IGxzciAxOCkpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSlcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAoKHUgbHNyIDEyKSBsYW5kIDB4M0YpKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDIpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDMpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDRcbiB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiBsZXQgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSA9IG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAyID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyICh1IGxzciA4KSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpIChDaGFyLnVuc2FmZV9jaHIgKHUgbGFuZCAweEZGKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgMlxuIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgbGV0IGhpID0gMHhEODAwIGxvciAodScgbHNyIDEwKSBpblxuICAgICBsZXQgbG8gPSAweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSBpblxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyA0ID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsc3IgOCkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsYW5kIDB4RkYpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMikgKENoYXIudW5zYWZlX2NociAobG8gbHNyIDgpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMykgKENoYXIudW5zYWZlX2NociAobG8gbGFuZCAweEZGKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgNFxuIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuIGxldCBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1ID0gbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDIgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDI7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApIChDaGFyLnVuc2FmZV9jaHIgKHUgbGFuZCAweEZGKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpIChDaGFyLnVuc2FmZV9jaHIgKHUgbHNyIDgpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyAyXG4gfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICBsZXQgdScgPSB1IC0gMHgxMDAwMCBpblxuICAgICBsZXQgaGkgPSAweEQ4MDAgbG9yICh1JyBsc3IgMTApIGluXG4gICAgIGxldCBsbyA9IDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpIGluXG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDQgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDQ7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApIChDaGFyLnVuc2FmZV9jaHIgKGhpIGxhbmQgMHhGRikpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsc3IgOCkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKSAoQ2hhci51bnNhZmVfY2hyIChsbyBsYW5kIDB4RkYpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMykgKENoYXIudW5zYWZlX2NociAobG8gbHNyIDgpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyA0XG4gfCBfIC0+IGFzc2VydCBmYWxzZVxuKilcblxubGV0IGFkZF9zdWJzdHJpbmcgYiBzIG9mZnNldCBsZW4gPVxuICBpZiBvZmZzZXQgPCAwIHx8IGxlbiA8IDAgfHwgb2Zmc2V0ID4gU3RyaW5nLmxlbmd0aCBzIC0gbGVuIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfc3Vic3RyaW5nL2FkZF9zdWJieXRlc1wiO1xuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIGxlbiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChiLnBvc2l0aW9uICsgaSkgKFN0cmluZy5nZXQgcyAob2Zmc2V0ICsgaSkpXG4gIGRvbmU7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfc3ViYnl0ZXMgYiBzIG9mZnNldCBsZW4gPVxuICBhZGRfc3Vic3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcykgb2Zmc2V0IGxlblxuXG5sZXQgYWRkX3N0cmluZyBiIHMgPSBhZGRfc3Vic3RyaW5nIGIgcyAwIChTdHJpbmcubGVuZ3RoIHMpXG5cbigqXG5sZXQgYWRkX2J5dGVzIGIgcyA9IGFkZF9zdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKVxuXG5sZXQgYWRkX2J1ZmZlciBiIGJzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnMuYnVmZmVyIDAgYnMucG9zaXRpb25cblxuKCogcmVhZCB1cCB0byBbbGVuXSBieXRlcyBmcm9tIFtpY10gaW50byBbYl0uICopXG5sZXQgcmVjIGFkZF9jaGFubmVsX3JlYyBiIGljIGxlbiA9XG4gIGlmIGxlbiA+IDAgdGhlbiAoXG4gICAgbGV0IG4gPSBpbnB1dCBpYyBiLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbiBpblxuICAgIGIucG9zaXRpb24gPC0gYi5wb3NpdGlvbiArIG47XG4gICAgaWYgbiA9IDAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgIGVsc2UgYWRkX2NoYW5uZWxfcmVjIGIgaWMgKGxlbi1uKSAgICgqIG4gPD0gbGVuICopXG4gIClcblxubGV0IGFkZF9jaGFubmVsIGIgaWMgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBsZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiAgICgqIFBSIzUwMDQgKilcbiAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfY2hhbm5lbFwiO1xuICBpZiBiLnBvc2l0aW9uICsgbGVuID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIGFkZF9jaGFubmVsX3JlYyBiIGljIGxlblxuXG5sZXQgb3V0cHV0X2J1ZmZlciBvYyBiID1cbiAgb3V0cHV0IG9jIChMd3RfYnl0ZXMudG9fYnl0ZXMgYi5idWZmZXIpIDAgYi5wb3NpdGlvblxuKilcbigqbGV0IGNsb3NpbmcgPSBmdW5jdGlvblxuICAgIHwgJygnIC0+ICcpJ1xuICAgIHwgJ3snIC0+ICd9J1xuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgICAgczogdGhlIHN0cmluZyB3aGVyZSB3ZSBhcmUgc2VhcmNoaW5nXG4gICAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbiAgbGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgICBsZXQgcmVjIGFkdmFuY2UgayBpIGxpbSA9XG4gICAgICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgICBpZiBzLltpXSA9IG9wZW5pbmcgdGhlbiBhZHZhbmNlIChrICsgMSkgKGkgKyAxKSBsaW0gZWxzZVxuICAgICAgaWYgcy5baV0gPSBjbG9zaW5nIHRoZW5cbiAgICAgICAgaWYgayA9IDAgdGhlbiBpIGVsc2UgYWR2YW5jZSAoayAtIDEpIChpICsgMSkgbGltXG4gICAgICBlbHNlIGFkdmFuY2UgayAoaSArIDEpIGxpbSBpblxuICAgIGFkdmFuY2UgayBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuXG4gIGxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgICAgaWYgaSA+PSBsaW0gdGhlbiBsaW0gZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgfCAnXycgLT4gYWR2YW5jZSAoaSArIDEpIGxpbVxuICAgICAgfCBfIC0+IGkgaW5cbiAgICBhZHZhbmNlIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbiAgKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbiAgbGV0IGZpbmRfaWRlbnQgcyBzdGFydCBsaW0gPVxuICAgIGlmIHN0YXJ0ID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgbWF0Y2ggcy5bc3RhcnRdIHdpdGhcbiAgICAoKiBQYXJlbnRoZXNpemVkIGlkZW50ID8gKilcbiAgICB8ICcoJyB8ICd7JyBhcyBjIC0+XG4gICAgICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19jbG9zaW5nIGMgKGNsb3NpbmcgYykgMCBzIG5ld19zdGFydCBpblxuICAgICAgIFN0cmluZy5zdWIgcyBuZXdfc3RhcnQgKHN0b3AgLSBzdGFydCAtIDEpLCBzdG9wICsgMVxuICAgICgqIFJlZ3VsYXIgaWRlbnQgKilcbiAgICB8IF8gLT5cbiAgICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgKHN0YXJ0ICsgMSkgaW5cbiAgICAgICBTdHJpbmcuc3ViIHMgc3RhcnQgKHN0b3AgLSBzdGFydCksIHN0b3BcblxuICAoKiBTdWJzdGl0dXRlICRpZGVudCwgJChpZGVudCksIG9yICR7aWRlbnR9IGluIHMsXG4gICAgICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbiAgbGV0IGFkZF9zdWJzdGl0dXRlIGIgZiBzID1cbiAgICBsZXQgbGltID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICAgIGlmIGkgPCBsaW0gdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9ICdcXFxcJyAtPlxuICAgICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICAgIHN1YnN0ICcgJyAoaSArIDEpXG4gICAgICAgIHwgJyQnIC0+XG4gICAgICAgICAgIGxldCBqID0gaSArIDEgaW5cbiAgICAgICAgICAgbGV0IGlkZW50LCBuZXh0X2kgPSBmaW5kX2lkZW50IHMgaiBsaW0gaW5cbiAgICAgICAgICAgYWRkX3N0cmluZyBiIChmIGlkZW50KTtcbiAgICAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgICB8IGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9PSAnXFxcXCcgLT5cbiAgICAgICAgICAgYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgICAgfCAnXFxcXCcgYXMgY3VycmVudCAtPlxuICAgICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgICAgfCBjdXJyZW50IC0+XG4gICAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICBlbmQgZWxzZVxuICAgICAgaWYgcHJldmlvdXMgPSAnXFxcXCcgdGhlbiBhZGRfY2hhciBiIHByZXZpb3VzIGluXG4gICAgc3Vic3QgJyAnIDBcblxuICBsZXQgdHJ1bmNhdGUgYiBsZW4gPVxuICAgICAgaWYgbGVuIDwgMCB8fCBsZW4gPiBsZW5ndGggYiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLnRydW5jYXRlXCJcbiAgICAgIGVsc2VcbiAgICAgICAgYi5wb3NpdGlvbiA8LSBsZW5cbiopXG4iLCIoKlxuICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDkgQ2l0cml4IFN5c3RlbXMgSW5jLlxuICogQ29weXJpZ2h0IChjKSAyMDEwIFRob21hcyBHYXphZ25haXJlIDx0aG9tYXNAZ2F6YWduYWlyZS5jb20+XG4gKlxuICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG4gKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlXG4gKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTXG4gKiBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GXG4gKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUlxuICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFU1xuICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOXG4gKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRlxuICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbiAqXG4gKilcblxubGV0IGRlZmF1bHRfYWxwaGFiZXQgPVxuICBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky9cIlxuXG5sZXQgdXJpX3NhZmVfYWxwaGFiZXQgPVxuICBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LV9cIlxuXG5sZXQgcGFkZGluZyA9ICc9J1xuXG5sZXQgb2ZfY2hhciA/KGFscGhhYmV0ID0gZGVmYXVsdF9hbHBoYWJldCkgeCA9XG4gIGlmIHggPSBwYWRkaW5nIHRoZW5cbiAgICAwXG4gIGVsc2VcbiAgICBTdHJpbmcuaW5kZXggYWxwaGFiZXQgeFxuXG5sZXQgdG9fY2hhciA/KGFscGhhYmV0ID0gZGVmYXVsdF9hbHBoYWJldCkgeCA9IGFscGhhYmV0Llt4XVxuXG5sZXQgZGVjb2RlID9hbHBoYWJldCBpbnB1dCA9XG4gIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIGlucHV0IGluXG4gIGxldCBpbnB1dCA9XG4gICAgaWYgbGVuZ3RoIG1vZCA0ID0gMCB0aGVuXG4gICAgICBpbnB1dFxuICAgIGVsc2VcbiAgICAgIGlucHV0IF4gU3RyaW5nLm1ha2UgKDQgLSAobGVuZ3RoIG1vZCA0KSkgcGFkZGluZ1xuICBpblxuICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBpbnB1dCBpblxuICBsZXQgd29yZHMgPSBsZW5ndGggLyA0IGluXG4gIGxldCBwYWRkaW5nID1cbiAgICBtYXRjaCBsZW5ndGggd2l0aFxuICAgIHwgMCAtPiAwXG4gICAgfCBfIHdoZW4gaW5wdXQuW2xlbmd0aCAtIDJdID0gcGFkZGluZyAtPiAyXG4gICAgfCBfIHdoZW4gaW5wdXQuW2xlbmd0aCAtIDFdID0gcGFkZGluZyAtPiAxXG4gICAgfCBfIC0+IDBcbiAgaW5cbiAgbGV0IG91dHB1dCA9XG4gICAgQmlnYXJyYXkuQXJyYXkxLmNyZWF0ZSBCaWdhcnJheS5jaGFyIEJpZ2FycmF5LmNfbGF5b3V0XG4gICAgICAoKHdvcmRzICogMykgLSBwYWRkaW5nKVxuICBpblxuICBmb3IgaSA9IDAgdG8gd29yZHMgLSAxIGRvXG4gICAgbGV0IGEgPSBvZl9jaGFyID9hbHBoYWJldCAoU3RyaW5nLmdldCBpbnB1dCAoKDQgKiBpKSArIDApKVxuICAgIGFuZCBiID0gb2ZfY2hhciA/YWxwaGFiZXQgKFN0cmluZy5nZXQgaW5wdXQgKCg0ICogaSkgKyAxKSlcbiAgICBhbmQgYyA9IG9mX2NoYXIgP2FscGhhYmV0IChTdHJpbmcuZ2V0IGlucHV0ICgoNCAqIGkpICsgMikpXG4gICAgYW5kIGQgPSBvZl9jaGFyID9hbHBoYWJldCAoU3RyaW5nLmdldCBpbnB1dCAoKDQgKiBpKSArIDMpKSBpblxuICAgIGxldCBuID0gKGEgbHNsIDE4KSBsb3IgKGIgbHNsIDEyKSBsb3IgKGMgbHNsIDYpIGxvciBkIGluXG4gICAgbGV0IHggPSAobiBsc3IgMTYpIGxhbmQgMjU1IGFuZCB5ID0gKG4gbHNyIDgpIGxhbmQgMjU1IGFuZCB6ID0gbiBsYW5kIDI1NSBpblxuICAgIEJpZ2FycmF5LkFycmF5MS5zZXQgb3V0cHV0ICgoMyAqIGkpICsgMCkgKGNoYXJfb2ZfaW50IHgpO1xuICAgIGlmIGkgPD4gd29yZHMgLSAxIHx8IHBhZGRpbmcgPCAyIHRoZW5cbiAgICAgIEJpZ2FycmF5LkFycmF5MS5zZXQgb3V0cHV0ICgoMyAqIGkpICsgMSkgKGNoYXJfb2ZfaW50IHkpO1xuICAgIGlmIGkgPD4gd29yZHMgLSAxIHx8IHBhZGRpbmcgPCAxIHRoZW5cbiAgICAgIEJpZ2FycmF5LkFycmF5MS5zZXQgb3V0cHV0ICgoMyAqIGkpICsgMikgKGNoYXJfb2ZfaW50IHopXG4gIGRvbmU7XG4gIG91dHB1dFxuXG5sZXQgZW5jb2RlID8ocGFkID0gdHJ1ZSkgP2FscGhhYmV0IGlucHV0ID1cbiAgbGV0IGxlbmd0aCA9IEJpZ2FycmF5LkFycmF5MS5kaW0gaW5wdXQgaW5cbiAgbGV0IHdvcmRzID0gKGxlbmd0aCArIDIpIC8gMyBpblxuICAoKiByb3VuZGVkIHVwICopXG4gIGxldCBwYWRkaW5nX2xlbiA9XG4gICAgaWYgbGVuZ3RoIG1vZCAzID0gMCB0aGVuXG4gICAgICAwXG4gICAgZWxzZVxuICAgICAgMyAtIChsZW5ndGggbW9kIDMpXG4gIGluXG4gIGxldCBvdXRwdXQgPSBCeXRlcy5tYWtlICh3b3JkcyAqIDQpICdcXDAwMCcgaW5cbiAgbGV0IGdldCBpID1cbiAgICBpZiBpID49IGxlbmd0aCB0aGVuXG4gICAgICAwXG4gICAgZWxzZVxuICAgICAgaW50X29mX2NoYXIgKEJpZ2FycmF5LkFycmF5MS5nZXQgaW5wdXQgaSlcbiAgaW5cbiAgZm9yIGkgPSAwIHRvIHdvcmRzIC0gMSBkb1xuICAgIGxldCB4ID0gZ2V0ICgoMyAqIGkpICsgMClcbiAgICBhbmQgeSA9IGdldCAoKDMgKiBpKSArIDEpXG4gICAgYW5kIHogPSBnZXQgKCgzICogaSkgKyAyKSBpblxuICAgIGxldCBuID0gKHggbHNsIDE2KSBsb3IgKHkgbHNsIDgpIGxvciB6IGluXG4gICAgbGV0IGEgPSAobiBsc3IgMTgpIGxhbmQgNjNcbiAgICBhbmQgYiA9IChuIGxzciAxMikgbGFuZCA2M1xuICAgIGFuZCBjID0gKG4gbHNyIDYpIGxhbmQgNjNcbiAgICBhbmQgZCA9IG4gbGFuZCA2MyBpblxuICAgIEJ5dGVzLnNldCBvdXRwdXQgKCg0ICogaSkgKyAwKSAodG9fY2hhciA/YWxwaGFiZXQgYSk7XG4gICAgQnl0ZXMuc2V0IG91dHB1dCAoKDQgKiBpKSArIDEpICh0b19jaGFyID9hbHBoYWJldCBiKTtcbiAgICBCeXRlcy5zZXQgb3V0cHV0ICgoNCAqIGkpICsgMikgKHRvX2NoYXIgP2FscGhhYmV0IGMpO1xuICAgIEJ5dGVzLnNldCBvdXRwdXQgKCg0ICogaSkgKyAzKSAodG9fY2hhciA/YWxwaGFiZXQgZClcbiAgZG9uZTtcbiAgZm9yIGkgPSAxIHRvIHBhZGRpbmdfbGVuIGRvXG4gICAgQnl0ZXMuc2V0IG91dHB1dCAoQnl0ZXMubGVuZ3RoIG91dHB1dCAtIGkpIHBhZGRpbmdcbiAgZG9uZTtcbiAgaWYgcGFkIHRoZW5cbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIG91dHB1dFxuICBlbHNlXG4gICAgQnl0ZXMuc3ViX3N0cmluZyBvdXRwdXQgMCAoQnl0ZXMubGVuZ3RoIG91dHB1dCAtIHBhZGRpbmdfbGVuKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBsaW5rcyA9XG4gIHwgTElOS1Mgb2YgKChpbnQgKiBpbnQpICogaW50KSBsaXN0XG4gIHwgV0hBVEVWRVJcbiAgfCBTT01FXG4gIHwgVFlQRSBvZiBzdHJpbmcgKiBzdHJpbmdcblxudHlwZSBjY19wb3J0ID0ge1xuICBwb3J0X2xpbmtzOiBsaW5rcztcbiAgcG9ydF9zdGF0ZXM6IHN0cmluZyBsaXN0IG9wdGlvbjsgICgqKiBbTm9uZV0gbWVhbnMgV0hBVEVWRVIgKilcbn1cblxudHlwZSBzaXRlID0gUG9ydCBvZiBjY19wb3J0IHwgQ291bnRlciBvZiBpbnRcbnR5cGUgY2Nfc2l0ZSA9IHsgc2l0ZV9uYW1lOiBzdHJpbmc7IHNpdGVfdHlwZTogc2l0ZSB9XG5cbnR5cGUgY2Nfbm9kZSA9IHtcbiAgbm9kZV90eXBlOiBzdHJpbmc7XG4gIG5vZGVfaWQ6IGludCBvcHRpb247XG4gIG5vZGVfc2l0ZXM6IGNjX3NpdGUgYXJyYXk7XG59XG5cbnR5cGUgY29ubmVjdGVkX2NvbXBvbmVudCA9IGNjX25vZGUgb3B0aW9uIGFycmF5IGFycmF5XG5cbm1vZHVsZSBMaW5rU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSAoaW50ICogaW50KSAqIGludFxuXG4gIGxldCBwcmludCA9XG4gICAgUHAucGFpclxuICAgICAgKFBwLnBhaXIgRm9ybWF0LnBwX3ByaW50X2ludCBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgRm9ybWF0LnBwX3ByaW50X2ludFxuXG4gIGxldCBjb21wYXJlICh4LCB5KSAoeCcsIHknKSA9XG4gICAgbGV0IGMgPSBNb2RzLmludF9wYWlyX2NvbXBhcmUgeCB4JyBpblxuICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgIE1vZHMuaW50X2NvbXBhcmUgeSB5J1xuICAgIGVsc2VcbiAgICAgIGNcbmVuZClcblxubGV0IHByaW50X2xpbmsgKGRhbmdsaW5nLCBmcmVlX2lkKSBwIGYgPSBmdW5jdGlvblxuICB8IFdIQVRFVkVSIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlsjXVwiXG4gIHwgU09NRSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbX11cIlxuICB8IFRZUEUgKHNpLCB0eSkgLT4gRm9ybWF0LmZwcmludGYgZiBcIlslcy4lc11cIiBzaSB0eVxuICB8IExJTktTIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlsuXVwiXG4gIHwgTElOS1MgbCAtPlxuICAgIGxldCBteXNlbGYgPVxuICAgICAgcmVmIChMaW5rU2V0TWFwLk1hcC5maW5kX2RlZmF1bHQgTGlua1NldE1hcC5NYXAuZW1wdHkgcCAhZGFuZ2xpbmcpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlslYV1cIlxuICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgcCcgLT5cbiAgICAgICAgICAgICBsZXQgaSA9XG4gICAgICAgICAgICAgICBpZiBwID0gcCcgdGhlblxuICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAgICAgICAgICAgICAgKExpbmtTZXRNYXAuTWFwLmZpbmRfb3B0aW9uIHApXG4gICAgICAgICAgICAgICAgICAgICAoTGlua1NldE1hcC5NYXAuZmluZF9vcHRpb24gcCcgIWRhbmdsaW5nKVxuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGluY3IgZnJlZV9pZCBpblxuICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG15c2VsZiA6PSBMaW5rU2V0TWFwLk1hcC5hZGQgcCcgIWZyZWVfaWQgIW15c2VsZiBpblxuICAgICAgICAgICAgICAgICAgICFmcmVlX2lkXG4gICAgICAgICAgICAgICAgIHwgU29tZSB2YSAtPiB2YVxuICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVpXCIgaSkpXG4gICAgICAgIGxcbiAgICBpblxuICAgIGRhbmdsaW5nIDo9IExpbmtTZXRNYXAuTWFwLmFkZCBwICFteXNlbGYgIWRhbmdsaW5nXG5cbmxldCBwcmludF9wb3J0IHdpdGhfbGluayBub2RlIHAgaWQgZiA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSVhXCJcbiAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJ7I31cIlxuICAgICAgfCBTb21lIFtdIC0+ICgpXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhfVwiXG4gICAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIGkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgaSkpXG4gICAgICAgICAgbClcbiAgICBwLnBvcnRfc3RhdGVzXG4gICAgKG1hdGNoIHdpdGhfbGluayB3aXRoXG4gICAgfCBTb21lIHBhY2sgLT4gcHJpbnRfbGluayBwYWNrIChub2RlLCBpZClcbiAgICB8IE5vbmUgLT4gZnVuIF8gXyAtPiAoKSlcbiAgICBwLnBvcnRfbGlua3NcblxubGV0IHByaW50X2ludGYgd2l0aF9saW5rIG5vZGUgPVxuICBQcC5hcnJheSBQcC5zcGFjZSAoZnVuIGlkIGYgc2kgLT5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIHNpLnNpdGVfbmFtZSBpblxuICAgICAgbWF0Y2ggc2kuc2l0ZV90eXBlIHdpdGhcbiAgICAgIHwgUG9ydCBwIC0+IHByaW50X3BvcnQgd2l0aF9saW5rIG5vZGUgcCBpZCBmXG4gICAgICB8IENvdW50ZXIgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiez0laX1cIiBpKVxuXG5sZXQgcHJpbnRfYWdlbnQgd2l0aF9pZCBsaW5rIG5vZGUgZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIuXCJcbiAgfCBTb21lIGFnIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhJXMoQFs8aD4lYUBdKVwiXG4gICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ4JWk6XCIgaSkpXG4gICAgICAoaWYgd2l0aF9pZCB0aGVuXG4gICAgICAgICBhZy5ub2RlX2lkXG4gICAgICAgZWxzZVxuICAgICAgICAgTm9uZSlcbiAgICAgIGFnLm5vZGVfdHlwZSAocHJpbnRfaW50ZiBsaW5rIG5vZGUpIGFnLm5vZGVfc2l0ZXNcblxubGV0IHByaW50X2NjIGYgbWl4ID1cbiAgbGV0IGxpbmsgPSBTb21lIChyZWYgTGlua1NldE1hcC5NYXAuZW1wdHksIHJlZiAwKSBpblxuICBQcC5hcnJheVxuICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcXEAgXCIpXG4gICAgKGZ1biBhbCAtPiBQcC5hcnJheSBQcC5jb21tYSAoZnVuIGFyIC0+IHByaW50X2FnZW50IHRydWUgbGluayAoYWwsIGFyKSkpXG4gICAgZiBtaXhcblxubGV0IGdldF9jb2xvciA9XG4gIGxldCBzdG9yZSA9IEhhc2h0YmwuY3JlYXRlIDEwIGluXG4gIGZ1biBpIC0+XG4gICAgdHJ5IEhhc2h0YmwuZmluZCBzdG9yZSBpXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCB2ID1cbiAgICAgICAgRm9ybWF0LnNwcmludGYgXCIjJXgleCV4XCIgKFJhbmRvbS5pbnQgMjU1KSAoUmFuZG9tLmludCAyNTUpXG4gICAgICAgICAgKFJhbmRvbS5pbnQgMjU1KVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEhhc2h0YmwuYWRkIHN0b3JlIGkgdiBpblxuICAgICAgdlxuXG5sZXQgcHJpbnRfZG90X2NjIG5iX2NjIGYgbWl4ID1cbiAgUHAuYXJyYXkgUHAuZW1wdHlcbiAgICAoZnVuIGlsIC0+XG4gICAgICBQcC5hcnJheSBQcC5lbXB0eSAoZnVuIGlyIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBhZyAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgIFwibm9kZSVkXyVkXyVkIFtsYWJlbCA9IFxcXCJAWzxoPiVhQF1cXFwiLCBjb2xvciA9IFxcXCIlc1xcXCIsIFxcXG4gICAgICAgICAgICAgc3R5bGU9ZmlsbGVkXTtALFwiXG4gICAgICAgICAgICBuYl9jYyBpbCBpclxuICAgICAgICAgICAgKHByaW50X2FnZW50IGZhbHNlIE5vbmUgKGlsLCBpcikpXG4gICAgICAgICAgICAoU29tZSBhZykgKGdldF9jb2xvciBhZy5ub2RlX3R5cGUpO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJub2RlJWRfJWRfJWQgLT4gY291bnRlciVkIFtzdHlsZT1pbnZpc107QCxcIiBuYl9jYyBpbFxuICAgICAgICAgICAgaXIgbmJfY2MpKVxuICAgIGYgbWl4O1xuICBpZ25vcmVcbiAgQEAgQXJyYXkuaXRlcmlcbiAgICAgICAoZnVuIGFsIC0+XG4gICAgICAgICBBcnJheS5pdGVyaSAoZnVuIGFyIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICB8IFNvbWUgYWcgLT5cbiAgICAgICAgICAgICBBcnJheS5pdGVyaVxuICAgICAgICAgICAgICAgKGZ1biBzIHNpIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIHNpLnNpdGVfdHlwZSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgQ291bnRlciBfIC0+ICgpXG4gICAgICAgICAgICAgICAgIHwgUG9ydCBwIC0+XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIHAucG9ydF9saW5rcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBXSEFURVZFUiAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB8IFNPTUUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgfCBUWVBFIChfc2ksIF90eSkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgfCBMSU5LUyBsaW5rcyAtPlxuICAgICAgICAgICAgICAgICAgICAgUHAubGlzdCBQcC5lbXB0eVxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgKChhbCcsIGFyJyksIHMnKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBhbCA8IGFsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGFsID0gYWwnICYmIChhciA8IGFyJyB8fCAoYXIgPSBhcicgJiYgcyA8IHMnKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBtaXguKGFsJykuKGFyJykgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGFnJyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJub2RlJWRfJWRfJWQgLT4gbm9kZSVkXyVkXyVkIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWlsbGFiZWw9XFxcIiVzXFxcIiwgaGVhZGxhYmVsPVxcXCIlc1xcXCIsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcj1ub25lXTtALFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmJfY2MgYWwgYXIgbmJfY2MgYWwnIGFyJyBzaS5zaXRlX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZycubm9kZV9zaXRlcy4ocycpLnNpdGVfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgIGYgbGlua3MpKVxuICAgICAgICAgICAgICAgYWcubm9kZV9zaXRlcykpXG4gICAgICAgbWl4XG5cbigqXG50eXBlIGNjX25vZGUgPSB7XG4gIG5vZGVfdHlwZTogc3RyaW5nO1xuICBub2RlX3NpdGVzOiBjY19zaXRlIGFycmF5O1xufVxudHlwZSBjb25uZWN0ZWRfY29tcG9uZW50ID0gY2Nfbm9kZSBhcnJheVxuICopXG5cbmxldCB3cml0ZV9jY19wb3J0IG9iIHAgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJwb3J0X2xpbmtzXCJcbiAgICAgIChmdW4gb2IgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBXSEFURVZFUiAtPiBZb2pzb24uQmFzaWMud3JpdGVfbnVsbCBvYiAoKVxuICAgICAgICB8IFNPTUUgLT4gWW9qc29uLkJhc2ljLndyaXRlX2Jvb2wgb2IgdHJ1ZVxuICAgICAgICB8IFRZUEUgKHNpLCB0eSkgLT5cbiAgICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIntcXFwic2l0ZV9uYW1lXFxcIjpcXFwiXCIgaW5cbiAgICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiBzaSBpblxuICAgICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIixcXFwiYWdlbnRfdHlwZVxcXCI6XFxcIlwiIGluXG4gICAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb2IgdHkgaW5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJ9XCJcbiAgICAgICAgfCBMSU5LUyBsIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpclxuICAgICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfaW50XG4gICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfaW50KVxuICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2ludClcbiAgICAgICAgICAgIG9iIGwpXG4gICAgICBvYiBwLnBvcnRfbGlua3NcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInBvcnRfc3RhdGVzXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9vcHRpb24gKEpzb25VdGlsLndyaXRlX2xpc3QgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZykpXG4gICAgICBvYiBwLnBvcnRfc3RhdGVzXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHdyaXRlX3NpdGUgb2IgZiA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnWycgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBmLnNpdGVfdHlwZSB3aXRoXG4gICAgfCBDb3VudGVyIGkgLT5cbiAgICAgIGxldCAoKSA9IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgXCJjb3VudGVyXCIgaW5cbiAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnLCcgaW5cbiAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9pbnQgb2IgaVxuICAgIHwgUG9ydCBwIC0+XG4gICAgICBsZXQgKCkgPSBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIFwicG9ydFwiIGluXG4gICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJywnIGluXG4gICAgICB3cml0ZV9jY19wb3J0IG9iIHBcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5sZXQgd3JpdGVfY2Nfc2l0ZSBvYiBmID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic2l0ZV9uYW1lXCIgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYiBmLnNpdGVfbmFtZVxuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9maWVsZCBcInNpdGVfdHlwZVwiIHdyaXRlX3NpdGUgb2IgZiBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cbmxldCBsaW5rc19vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IFdIQVRFVkVSXG4gIHwgYEJvb2wgYiAtPlxuICAgIGxldCAoKSA9IGFzc2VydCBiIGluXG4gICAgU09NRVxuICB8IGBBc3NvYyBbIChcInNpdGVfbmFtZVwiLCBgU3RyaW5nIHNpKTsgKFwiYWdlbnRfdHlwZVwiLCBgU3RyaW5nIHR5KSBdXG4gIHwgYEFzc29jIFsgKFwiYWdlbnRfdHlwZVwiLCBgU3RyaW5nIHR5KTsgKFwic2l0ZV9uYW1lXCIsIGBTdHJpbmcgc2kpIF0gLT5cbiAgICBUWVBFIChzaSwgdHkpXG4gIHwgYExpc3QgXyBhcyB4IC0+XG4gICAgbGV0IGVycm9yX21zZyA9IE5vbmUgaW5cbiAgICBMSU5LU1xuICAgICAgKEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgIChKc29uVXRpbC5jb21wYWN0X3RvX3BhaXJcbiAgICAgICAgICAgIChKc29uVXRpbC5jb21wYWN0X3RvX3BhaXJcbiAgICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZylcbiAgICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZykpXG4gICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2cpKVxuICAgICAgICAgeClcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBjY19wb3J0XCIsIHgpKVxuXG5sZXQgcmVhZF9jY19wb3J0IHAgbGIgPVxuICBsZXQgcG9ydF9saW5rcywgcG9ydF9zdGF0ZXMgPVxuICAgIFlvanNvbi5CYXNpYy5yZWFkX2ZpZWxkc1xuICAgICAgKGZ1biAocywgaSkga2V5IHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJwb3J0X2xpbmtzXCIgdGhlblxuICAgICAgICAgIGxpbmtzX29mX3lvanNvbiAoWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiKSwgaVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGtleSA9IFwicG9ydF9zdGF0ZXNcIikgaW5cbiAgICAgICAgICAoIHMsXG4gICAgICAgICAgICBKc29uVXRpbC5yZWFkX29wdGlvblxuICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcpXG4gICAgICAgICAgICAgIHAgbGIgKVxuICAgICAgICApKVxuICAgICAgKExJTktTIFtdLCBTb21lIFtdKSBwIGxiXG4gIGluXG4gIHsgcG9ydF9saW5rczsgcG9ydF9zdGF0ZXMgfVxuXG5sZXQgcmVhZF9zaXRlIHAgbGIgPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9sYnIgcCBsYiBpblxuICBsZXQga2V5ID0gSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBwIGxiIGluXG4gIGxldCBvdXQgPVxuICAgIEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXNcbiAgICAgIChmdW4gcCBsYiAtPlxuICAgICAgICBpZiBrZXkgPSBcImNvdW50ZXJcIiB0aGVuXG4gICAgICAgICAgQ291bnRlciAoWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGIpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJwb3J0XCIpIGluXG4gICAgICAgICAgUG9ydCAocmVhZF9jY19wb3J0IHAgbGIpXG4gICAgICAgICkpXG4gICAgICBwIGxiXG4gIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX3JiciBwIGxiIGluXG4gIG91dFxuXG5sZXQgcmVhZF9jY19zaXRlIHAgbGIgPVxuICBsZXQgc2l0ZV9uYW1lLCBzaXRlX3R5cGUgPVxuICAgIFlvanNvbi5CYXNpYy5yZWFkX2ZpZWxkc1xuICAgICAgKGZ1biAobiwgcykga2V5IHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJzaXRlX25hbWVcIiB0aGVuXG4gICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIsIHNcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcInNpdGVfdHlwZVwiKSBpblxuICAgICAgICAgIG4sIHJlYWRfc2l0ZSBwIGxiXG4gICAgICAgICkpXG4gICAgICAoXCJcIiwgQ291bnRlciAoLTEpKSBwIGxiXG4gIGluXG4gIHsgc2l0ZV9uYW1lOyBzaXRlX3R5cGUgfVxuXG5sZXQgd3JpdGVfY2Nfbm9kZSBvYiB4ID1cbiAgSnNvblV0aWwud3JpdGVfb3B0aW9uXG4gICAgKGZ1biBvYiBmIC0+XG4gICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcIm5vZGVfdHlwZVwiIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2JcbiAgICAgICAgICBmLm5vZGVfdHlwZVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBtYXRjaCBmLm5vZGVfaWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIG5vZGVfaWQgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJub2RlX2lkXCIgWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYiBub2RlX2lkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9jb21tYSBvYlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwibm9kZV9zaXRlc1wiXG4gICAgICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5IHdyaXRlX2NjX3NpdGUpXG4gICAgICAgICAgb2IgZi5ub2RlX3NpdGVzXG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JylcbiAgICBvYiB4XG5cbmxldCByZWFkX2NjX25vZGUgcCBsYiA9XG4gIEpzb25VdGlsLnJlYWRfb3B0aW9uXG4gICAgKGZ1biBwIGxiIC0+XG4gICAgICBsZXQgbm9kZV9pZCwgbm9kZV90eXBlLCBub2RlX3NpdGVzID1cbiAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfZmllbGRzXG4gICAgICAgICAgKGZ1biAoaWQsIG4sIHMpIGtleSBwIGxiIC0+XG4gICAgICAgICAgICBpZiBrZXkgPSBcIm5vZGVfaWRcIiB0aGVuXG4gICAgICAgICAgICAgIFNvbWUgKFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiKSwgbiwgc1xuICAgICAgICAgICAgZWxzZSBpZiBrZXkgPSBcIm5vZGVfdHlwZVwiIHRoZW5cbiAgICAgICAgICAgICAgaWQsIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCBzXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcIm5vZGVfc2l0ZXNcIikgaW5cbiAgICAgICAgICAgICAgaWQsIG4sIFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IHJlYWRfY2Nfc2l0ZSBwIGxiXG4gICAgICAgICAgICApKVxuICAgICAgICAgIChOb25lLCBcIlwiLCBbfHxdKSBwIGxiXG4gICAgICBpblxuICAgICAgeyBub2RlX2lkOyBub2RlX3R5cGU7IG5vZGVfc2l0ZXMgfSlcbiAgICBwIGxiXG5cbmxldCB3cml0ZV9jb25uZWN0ZWRfY29tcG9uZW50IG9iIGYgPVxuICBKc29uVXRpbC53cml0ZV9hcnJheSAoSnNvblV0aWwud3JpdGVfYXJyYXkgd3JpdGVfY2Nfbm9kZSkgb2IgZlxuXG5sZXQgcmVhZF9jb25uZWN0ZWRfY29tcG9uZW50IG9iIGYgPVxuICBZb2pzb24uQmFzaWMucmVhZF9hcnJheSAoWW9qc29uLkJhc2ljLnJlYWRfYXJyYXkgcmVhZF9jY19ub2RlKSBvYiBmXG5cbmxldCBzdHJpbmdfb2ZfY29ubmVjdGVkX2NvbXBvbmVudCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICBsZXQgKCkgPSB3cml0ZV9jb25uZWN0ZWRfY29tcG9uZW50IG9iIHggaW5cbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCBjb25uZWN0ZWRfY29tcG9uZW50X29mX3N0cmluZyBzID1cbiAgcmVhZF9jb25uZWN0ZWRfY29tcG9uZW50IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGNvdW50ZXJfaW5mbyA9IHtcbiAgY291bnRlcl9pbmZvX21pbjogaW50IG9wdGlvbjtcbiAgY291bnRlcl9pbmZvX21heDogaW50IG9wdGlvbjtcbiAgY291bnRlcl9kZWZhdWx0X3ZhbHVlOiBpbnQ7XG59XG5cbnR5cGUgJ2xpbmtzIHNpdGVfc2lnID0ge1xuICBpbnRlcm5hbF9zdGF0ZTogdW5pdCBOYW1lZERlY2xzLnQ7XG4gIGxpbmtzOiAnbGlua3Mgb3B0aW9uO1xuICBjb3VudGVyX2luZm86IGNvdW50ZXJfaW5mbyBvcHRpb247XG59XG5cbnR5cGUgdCA9IGJvb2wgYXJyYXkgYXJyYXkgc2l0ZV9zaWcgTmFtZWREZWNscy50XG5cbmxldCBmb2xkIGYgPSBOYW1lZERlY2xzLmZvbGQgKGZ1biBpIG4gbyBfIC0+IGYgaSBuIG8pXG5cbmxldCBudW1fb2Zfc2l0ZSA/YWdlbnRfbmFtZSBzaXRlX25hbWUgc2lnbmF0dXJlID1cbiAgbGV0IGtpbmQgPVxuICAgIG1hdGNoIGFnZW50X25hbWUgd2l0aFxuICAgIHwgTm9uZSAtPiBcInNpdGUgbmFtZVwiXG4gICAgfCBTb21lIGFnZW50X25hbWUgLT4gXCJzaXRlIG5hbWUgZm9yIGFnZW50IFwiIF4gYWdlbnRfbmFtZVxuICBpblxuICBOYW1lZERlY2xzLmVsdF9pZCB+a2luZCBzaWduYXR1cmUgc2l0ZV9uYW1lXG5cbmxldCBzaXRlX29mX251bSBhZGRyIHNpZ25hdHVyZSA9XG4gIHRyeSBOYW1lZERlY2xzLmVsdF9uYW1lIHNpZ25hdHVyZSBhZGRyXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgbnVtX29mX2ludGVybmFsX3N0YXRlIHNpdGVfaWQgc3RhdGUgc2lnbmF0dXJlID1cbiAgdHJ5XG4gICAgbGV0IHNpdGVfbmFtZSwgc2l0ZV9zaWcgPSBzaWduYXR1cmUuTmFtZWREZWNscy5kZWNscy4oc2l0ZV9pZCkgaW5cbiAgICBOYW1lZERlY2xzLmVsdF9pZFxuICAgICAgfmtpbmQ6KFwiaW50ZXJuYWwgc3RhdGUgZm9yIHNpdGUgXCIgXiBzaXRlX25hbWUpXG4gICAgICBzaXRlX3NpZy5pbnRlcm5hbF9zdGF0ZSBzdGF0ZVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGludGVybmFsX3N0YXRlX29mX3NpdGVfaWQgc2l0ZV9pZCB2YWxfaWQgc2lnbmF0dXJlID1cbiAgdHJ5XG4gICAgbGV0IHNpdGVfc2lnID0gTmFtZWREZWNscy5lbHRfdmFsIHNpZ25hdHVyZSBzaXRlX2lkIGluXG4gICAgTmFtZWREZWNscy5lbHRfbmFtZSBzaXRlX3NpZy5pbnRlcm5hbF9zdGF0ZSB2YWxfaWRcbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBjb3VudGVyX29mX3NpdGVfaWQgc2l0ZV9pZCBzaWduYXR1cmUgPVxuICB0cnkgKE5hbWVkRGVjbHMuZWx0X3ZhbCBzaWduYXR1cmUgc2l0ZV9pZCkuY291bnRlcl9pbmZvXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgaGFzX2NvdW50ZXIgc2lnbmF0dXJlID1cbiAgZm9sZFxuICAgIChmdW4gcF9pZCBfIG9rIC0+XG4gICAgICB0cnlcbiAgICAgICAgbGV0IHNpdGVfc2lnID0gTmFtZWREZWNscy5lbHRfdmFsIHNpZ25hdHVyZSBwX2lkIGluXG4gICAgICAgIG9rIHx8IG5vdCAoc2l0ZV9zaWcuY291bnRlcl9pbmZvID0gTm9uZSlcbiAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICBmYWxzZSBzaWduYXR1cmVcblxuKCpcbmxldCByZWFkX3Bvc2l0aW9uIHAgbGIgPVxuICBtYXRjaCBZb2pzb24uQmFzaWMuZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHAgbGIgd2l0aFxuICB8IGBBc3NvYyBbIChcImxpbmVcIiwgYEludCBsaW5lKTsgKFwiY2hyXCIsIGBJbnQgY2hyKSBdXG4gIHwgYEFzc29jIFsgKFwiY2hyXCIsIGBJbnQgY2hyKTsgKFwibGluZVwiLCBgSW50IGxpbmUpIF0gLT5cbiAgICB7IGxpbmU7IGNociB9XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHBvc2l0aW9uXCIsIHgpKVxuXG5sZXQgd3JpdGVfcG9zaXRpb24gb2IgeyBsaW5lOyBjaHIgfSA9XG4gIFlvanNvbi53cml0ZV9hc3NvYyBvYiBbIFwibGluZVwiLCBgSW50IGxpbmU7IFwiY2hyXCIsIGBJbnQgY2hyIF1cbiopXG5cbmxldCBvbmVfdG9fanNvbiA9XG4gIE5hbWVkRGVjbHMudG9fanNvbiAoZnVuIHNpZ25hdHVyZSAtPlxuICAgICAgYEFzc29jXG4gICAgICAgIFtcbiAgICAgICAgICAoIFwiaW50ZXJuYWxfc3RhdGVcIixcbiAgICAgICAgICAgIE5hbWVkRGVjbHMudG9fanNvbiAoZnVuICgpIC0+IGBOdWxsKSBzaWduYXR1cmUuaW50ZXJuYWxfc3RhdGUgKTtcbiAgICAgICAgICAoIFwibGlua3NcIixcbiAgICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgICAgICAoZnVuIGxpbmtzIC0+XG4gICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAoZnVuIGEgYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGBMaXN0IChBcnJheS5mb2xkX3JpZ2h0IChmdW4gYiBjIC0+IGBCb29sIGIgOjogYykgYSBbXSlcbiAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgICAgICAgbGlua3MgW10pKVxuICAgICAgICAgICAgICBzaWduYXR1cmUubGlua3MgKTtcbiAgICAgICAgICAoIFwiY291bnRlcl9pbmZvXCIsXG4gICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgKGZ1biBjIC0+XG4gICAgICAgICAgICAgICAgYEFzc29jXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICggXCJtaW5cIixcbiAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gKGZ1biB4IC0+IGBJbnQgeCkgYy5jb3VudGVyX2luZm9fbWluICk7XG4gICAgICAgICAgICAgICAgICAgICggXCJtYXhcIixcbiAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gKGZ1biB4IC0+IGBJbnQgeCkgYy5jb3VudGVyX2luZm9fbWF4ICk7XG4gICAgICAgICAgICAgICAgICAgIFwiZGVmYXVsdFwiLCBgSW50IGMuY291bnRlcl9kZWZhdWx0X3ZhbHVlO1xuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgc2lnbmF0dXJlLmNvdW50ZXJfaW5mbyApO1xuICAgICAgICBdKVxuXG5sZXQgb25lX29mX2pzb24gOiBZb2pzb24uQmFzaWMudCAtPiBib29sIGFycmF5IGFycmF5IHNpdGVfc2lnIE5hbWVkRGVjbHMudCA9XG4gIE5hbWVkRGVjbHMub2ZfanNvbiAoZnVuY3Rpb25cbiAgICB8IGBBc3NvYyBbIChcImludGVybmFsX3N0YXRlXCIsIGEpOyAoXCJsaW5rc1wiLCBiKTsgKFwiY291bnRlcl9pbmZvXCIsIGMpIF0gLT5cbiAgICAgIHtcbiAgICAgICAgaW50ZXJuYWxfc3RhdGUgPVxuICAgICAgICAgIE5hbWVkRGVjbHMub2ZfanNvblxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgYE51bGwgLT4gKClcbiAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuICAgICAgICAgICAgYTtcbiAgICAgICAgbGlua3MgPVxuICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgfCBgTGlzdCBsJyAtPlxuICAgICAgICAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgQm9vbCBiIC0+IGJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgbCdcbiAgICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuICAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChcIlByb2JsZW1hdGljIGFnZW50IHNpZ25hdHVyZVwiLCB4KSkpXG4gICAgICAgICAgICBiO1xuICAgICAgICBjb3VudGVyX2luZm8gPVxuICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgYEFzc29jXG4gICAgICAgICAgICAgICAgICBbIChcIm1pblwiLCBjMV9vcHQpOyAoXCJtYXhcIiwgYzJfb3B0KTsgKFwiZGVmYXVsdFwiLCBgSW50IGMzKSBdIC0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgY291bnRlcl9pbmZvX21pbiA9XG4gICAgICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgfCBgSW50IGMgLT4gY1xuICAgICAgICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuICAgICAgICAgICAgICAgICAgICAgIGMxX29wdDtcbiAgICAgICAgICAgICAgICAgIGNvdW50ZXJfaW5mb19tYXggPVxuICAgICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHwgYEludCBjIC0+IGNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcbiAgICAgICAgICAgICAgICAgICAgICBjMl9vcHQ7XG4gICAgICAgICAgICAgICAgICBjb3VudGVyX2RlZmF1bHRfdmFsdWUgPSBjMztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcbiAgICAgICAgICAgIGM7XG4gICAgICB9XG4gICAgfCB4IC0+XG4gICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuXG50eXBlIGNvdW50ZXJfYWdlbnRfaW5mbyA9IHsgaWQ6IGludDsgYXJpdHk6IGludDsgcG9ydHM6IGludCAqIGludCB9XG5cbnR5cGUgcyA9IHtcbiAgYWdlbnRfc2lnczogdCBOYW1lZERlY2xzLnQ7XG4gIGNvdW50ZXJfYWdlbnRfaW5mbzogY291bnRlcl9hZ2VudF9pbmZvIG9wdGlvbjtcbn1cblxubGV0IHNpemUgc2lncyA9IE5hbWVkRGVjbHMuc2l6ZSBzaWdzLmFnZW50X3NpZ3NcbmxldCBnZXQgc2lncyBhZ2VudF9pZCA9IE5hbWVkRGVjbHMuZWx0X3ZhbCBzaWdzLmFnZW50X3NpZ3MgYWdlbnRfaWRcbmxldCBhcml0eSBzaWdzIGFnZW50X2lkID0gTmFtZWREZWNscy5zaXplIChnZXQgc2lncyBhZ2VudF9pZClcblxubGV0IG1heF9hcml0eSBzaWdzID1cbiAgTmFtZWREZWNscy5mb2xkIChmdW4gXyBfIHggYSAtPiBtYXggeCAoTmFtZWREZWNscy5zaXplIGEpKSAwIHNpZ3MuYWdlbnRfc2lnc1xuXG5sZXQgYWdlbnRfb2ZfbnVtIGkgc2lncyA9IE5hbWVkRGVjbHMuZWx0X25hbWUgc2lncy5hZ2VudF9zaWdzIGlcblxubGV0IG51bV9vZl9hZ2VudCBuYW1lIHNpZ3MgPVxuICBOYW1lZERlY2xzLmVsdF9pZCB+a2luZDpcImFnZW50XCIgc2lncy5hZ2VudF9zaWdzIG5hbWVcblxubGV0IGlkX29mX3NpdGUgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ2VudF90eSkgc2l0ZV9uYW1lIHNpZ3MgPVxuICBsZXQgbiA9IG51bV9vZl9hZ2VudCBhZ2VudF90eSBzaWdzIGluXG4gIG51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHNpdGVfbmFtZSAoZ2V0IHNpZ3MgbilcblxubGV0IHNpdGVfb2ZfaWQgYWdlbnRfaWQgc2l0ZV9pZCBzaWdzID0gc2l0ZV9vZl9udW0gc2l0ZV9pZCAoZ2V0IHNpZ3MgYWdlbnRfaWQpXG5cbmxldCBpZF9vZl9pbnRlcm5hbF9zdGF0ZSAoKGFnZW50X25hbWUsIF8pIGFzIGFnZW50X3R5KSBzaXRlX25hbWUgc3RhdGUgc2lncyA9XG4gIGxldCBuID0gbnVtX29mX2FnZW50IGFnZW50X3R5IHNpZ3MgaW5cbiAgbGV0IHNpZ25hdHVyZSA9IGdldCBzaWdzIG4gaW5cbiAgbGV0IHNpdGVfaWQgPSBudW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBzaXRlX25hbWUgc2lnbmF0dXJlIGluXG4gIG51bV9vZl9pbnRlcm5hbF9zdGF0ZSBzaXRlX2lkIHN0YXRlIHNpZ25hdHVyZVxuXG5sZXQgaW50ZXJuYWxfc3RhdGVfb2ZfaWQgYWdlbnRfaWQgaWRfc2l0ZSBpZF9zdGF0ZSBzaWdzID1cbiAgaW50ZXJuYWxfc3RhdGVfb2Zfc2l0ZV9pZCBpZF9zaXRlIGlkX3N0YXRlIChnZXQgc2lncyBhZ2VudF9pZClcblxubGV0IGludGVybmFsX3N0YXRlc19udW1iZXIgYWdlbnRfaWQgc2l0ZV9pZCBzaWdzID1cbiAgdHJ5XG4gICAgbGV0IHNpdGVfc2lnID0gTmFtZWREZWNscy5lbHRfdmFsIChnZXQgc2lncyBhZ2VudF9pZCkgc2l0ZV9pZCBpblxuICAgIE5hbWVkRGVjbHMuc2l6ZSBzaXRlX3NpZy5pbnRlcm5hbF9zdGF0ZVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgYWdlbnRfaWQgc2l0ZV9pZCBzaWdzID1cbiAgdHJ5XG4gICAgbGV0IHNpdGVfc2lnID0gTmFtZWREZWNscy5lbHRfdmFsIChnZXQgc2lncyBhZ2VudF9pZCkgc2l0ZV9pZCBpblxuICAgIGlmIE5hbWVkRGVjbHMuc2l6ZSBzaXRlX3NpZy5pbnRlcm5hbF9zdGF0ZSA9IDAgdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIFNvbWUgMFxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgIGludmFsaWRfYXJnIFwiU2lnbmF0dXJlLmRlZmF1bHRfbnVtX3ZhbHVlOiBpbnZhbGlkIHNpdGUgaWRlbnRpZmllclwiXG5cbmxldCByZWMgYWxsb3dlZF9saW5rIGFnMSBzMSBhZzIgczIgc2lncyA9XG4gIGlmIGFnMSA+IGFnMiB0aGVuXG4gICAgYWxsb3dlZF9saW5rIGFnMiBzMiBhZzEgczEgc2lnc1xuICBlbHNlIChcbiAgICB0cnlcbiAgICAgIG1hdGNoIChOYW1lZERlY2xzLmVsdF92YWwgKGdldCBzaWdzIGFnMSkgczEpLmxpbmtzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICB8IFNvbWUgbCAtPiBsLihhZzIgLSBhZzEpLihzMilcbiAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgaW52YWxpZF9hcmcgXCJTaWduYXR1cmUuYWxsb3dlZF9saW5rOiBpbnZhbGlkIHNpdGUgaWRlbnRpZmllclwiXG4gIClcblxubGV0IGNyZWF0ZSB+Y291bnRlcnNfcGVyX2FnZW50IGFnZW50X3NpZ3MgPVxuICB7XG4gICAgYWdlbnRfc2lncztcbiAgICBjb3VudGVyX2FnZW50X2luZm8gPVxuICAgICAgKGlmIGNvdW50ZXJzX3Blcl9hZ2VudCA9IFtdIHRoZW5cbiAgICAgICAgIE5vbmVcbiAgICAgICBlbHNlXG4gICAgICAgICAoKiBJZiB0aGVyZSBpcyBhIGNvdW50ZXIgYWdlbnQsIHdlIGNob29zZSAwIGZvciBpdHMgYWdlbnQgaWQgYW5kIDAgYW5kIDEgYXMgaXRzIHBvcnQgaWRzICopXG4gICAgICAgICBTb21lIHsgaWQgPSAwOyBhcml0eSA9IDI7IHBvcnRzID0gMCwgMSB9KTtcbiAgfVxuXG5sZXQgaXNfY291bnRlcl9hZ2VudCBzaWdzIGFnZW50X2lkID1cbiAgbWF0Y2ggc2lncy5jb3VudGVyX2FnZW50X2luZm8gd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIGFnZW50X2luZm8gLT4gYWdlbnRfaWQgPSBhZ2VudF9pbmZvLmlkXG5cbmxldCBwb3J0c19pZl9jb3VudGVyX2FnZW50IHNpZ3MgYWdlbnRfaWQgPVxuICBtYXRjaCBzaWdzLmNvdW50ZXJfYWdlbnRfaW5mbyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhZ2VudF9pbmZvIC0+XG4gICAgaWYgYWdlbnRfaWQgPSBhZ2VudF9pbmZvLmlkIHRoZW5cbiAgICAgIFNvbWUgYWdlbnRfaW5mby5wb3J0c1xuICAgIGVsc2VcbiAgICAgIE5vbmVcblxubGV0IHNpdGVfaXNfY291bnRlciBzaWdzIGFnX3R5IGlkID1cbiAgY291bnRlcl9vZl9zaXRlX2lkIGlkIChnZXQgc2lncyBhZ190eSkgPD4gTm9uZVxuXG5sZXQgZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzID1cbiAgbWF0Y2ggc2lncy5jb3VudGVyX2FnZW50X2luZm8gd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJObyBjb3VudGVyIGFnZW50XCJcbiAgfCBTb21lIGNvdW50ZXJfYWdlbnRfaW5mbyAtPiBjb3VudGVyX2FnZW50X2luZm9cblxubGV0IGludmVydGVkX2NvdW50ZXJfc3VmZml4IDogc3RyaW5nID0gXCJfX2ludmVydGVkXCJcblxubGV0IGlzX2ludmVydGVkX2NvdW50ZXIgKGNvdW50ZXJfbmFtZSA6IHN0cmluZykgOiBib29sID1cbiAgU3RyaW5nLmVuZHNfd2l0aCB+c3VmZml4OmludmVydGVkX2NvdW50ZXJfc3VmZml4IGNvdW50ZXJfbmFtZVxuXG5sZXQgcHJpbnRfYWdlbnQgc2lncyBmIGFnX3R5ID1cbiAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIEBAIGFnZW50X29mX251bSBhZ190eSBzaWdzXG5cbmxldCBwcmludF9zaXRlIHNpZ3MgYWdfdHkgZiBpZCA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBAQCBzaXRlX29mX2lkIGFnX3R5IGlkIHNpZ3NcblxubGV0IHByaW50X2ludGVybmFsX3N0YXRlIHNpZ3MgYWdfdHkgc2l0ZSBmIGlkID1cbiAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIEBAIGludGVybmFsX3N0YXRlX29mX2lkIGFnX3R5IHNpdGUgaWQgc2lnc1xuXG5sZXQgcHJpbnRfc2l0ZV9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUgZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBwcmludF9zaXRlIHNpZ3MgYWdfdHkgZiBzaXRlXG4gIHwgU29tZSBpZCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc3slc31cIlxuICAgICAgKHNpdGVfb2ZfaWQgYWdfdHkgc2l0ZSBzaWdzKVxuICAgICAgKGludGVybmFsX3N0YXRlX29mX2lkIGFnX3R5IHNpdGUgaWQgc2lncylcblxubGV0IHByaW50X2NvdW50ZXJfaW5mbyBmID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBjIC0+XG4gICAgKG1hdGNoIGMuY291bnRlcl9pbmZvX21pbiwgYy5jb3VudGVyX2luZm9fbWF4IHdpdGhcbiAgICB8IFNvbWUgaSwgU29tZSBqIHdoZW4gaSA9IGMuY291bnRlcl9kZWZhdWx0X3ZhbHVlIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiez0lZC8rPSVkfVwiIGkgalxuICAgIHwgaV9vcHQsIGpfb3B0IC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiey09JXMvPSVkLys9JXN9XCJcbiAgICAgICAgKG1hdGNoIGlfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiLW9vXCJcbiAgICAgICAgfCBTb21lIGkgLT4gRm9ybWF0LnNwcmludGYgXCIlZFwiIGkpXG4gICAgICAgIGMuY291bnRlcl9kZWZhdWx0X3ZhbHVlXG4gICAgICAgIChtYXRjaCBqX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIi1vb1wiXG4gICAgICAgIHwgU29tZSBpIC0+IEZvcm1hdC5zcHJpbnRmIFwiJWRcIiBpKSlcblxubGV0IHByaW50X2NvdW50ZXIgc2lncyBhZ190eSBmIGlkID1cbiAgcHJpbnRfY291bnRlcl9pbmZvIGYgKGNvdW50ZXJfb2Zfc2l0ZV9pZCBpZCAoZ2V0IHNpZ3MgYWdfdHkpKVxuXG5sZXQgcHJpbnRfb25lID8oc2lncyA6IHMgb3B0aW9uKSAoaSA6IGludCkgKGYgOiBGb3JtYXQuZm9ybWF0dGVyKVxuICAgIChzaWduYXR1cmUgOiB0KSA9XG4gIGxldCBwcF9pbnQgZiB4ID1cbiAgICBpZiBOYW1lZERlY2xzLnNpemUgeCA+IDAgdGhlblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcInslYX1cIlxuICAgICAgICAoTmFtZWREZWNscy5wcmludCB+c2VwOlBwLnNwYWNlIChmdW4gXyBuYSBmICgpIC0+XG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgbmEpKVxuICAgICAgICB4XG4gIGluXG4gIGxldCBwcF9saW5rID1cbiAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICB8IE5vbmUgLT4gZnVuIF8gXyBfIC0+ICgpXG4gICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgIGZ1biBpIGYgLT4gKGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgbGlua3MgLT5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiWyVhXVwiXG4gICAgICAgICAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBhZyAtPlxuICAgICAgICAgICAgICAgICBQcC5hcnJheSBQcC5zcGFjZSAoZnVuIHNpIGYgYiAtPlxuICAgICAgICAgICAgICAgICAgICAgaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKHByaW50X3NpdGUgc2lncyAoaSArIGFnKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICBzaSAocHJpbnRfYWdlbnQgc2lncykgKGkgKyBhZykpKSlcbiAgICAgICAgICAgIGxpbmtzKVxuICBpblxuICAoTmFtZWREZWNscy5wcmludFxuICAgICB+c2VwOihmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLEAsXCIpXG4gICAgIChmdW4gXyBuYW1lIGYgc2l0ZV9zaWcgLT5cbiAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXMlYSVhJWFcIiBuYW1lIHBwX2ludCBzaXRlX3NpZy5pbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgKHBwX2xpbmsgaSkgc2l0ZV9zaWcubGlua3MgcHJpbnRfY291bnRlcl9pbmZvIHNpdGVfc2lnLmNvdW50ZXJfaW5mbykpXG4gICAgZiBzaWduYXR1cmVcblxubGV0IHByaW50IGYgc2lncyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQF1cIlxuICAgIChOYW1lZERlY2xzLnByaW50IH5zZXA6UHAuc3BhY2UgKGZ1biBpIG4gZiBzaSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JSVhZ2VudDogJXMoJWEpQF1cIiBuIChwcmludF9vbmUgfnNpZ3MgaSkgc2kpKVxuICAgIHNpZ3MuYWdlbnRfc2lnc1xuXG5sZXQgdG9fanNvbiBzaWdzID0gTmFtZWREZWNscy50b19qc29uIG9uZV90b19qc29uIHNpZ3MuYWdlbnRfc2lnc1xuXG5sZXQgb2ZfanNvbiB2ID1cbiAgbGV0IGFnZW50X3NpZ3MgOiAnYSBzaXRlX3NpZyBOYW1lZERlY2xzLnQgTmFtZWREZWNscy50ID1cbiAgICBOYW1lZERlY2xzLm9mX2pzb24gb25lX29mX2pzb24gdlxuICBpblxuICBtYXRjaFxuICAgIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIFwiX19jb3VudGVyX2FnZW50XCIgYWdlbnRfc2lncy5OYW1lZERlY2xzLmZpbmRlclxuICB3aXRoXG4gIHwgU29tZSBpZCAtPlxuICAgIGxldCBhZ2VudF9zaWduYXR1cmUgPSBOYW1lZERlY2xzLmVsdF92YWwgYWdlbnRfc2lncyBpZCBpblxuICAgIGxldCBwb3J0cyA9XG4gICAgICAoIG51bV9vZl9zaXRlIChcImFcIiwgTG9jLmR1bW15KSBhZ2VudF9zaWduYXR1cmUsXG4gICAgICAgIG51bV9vZl9zaXRlIChcImJcIiwgTG9jLmR1bW15KSBhZ2VudF9zaWduYXR1cmUgKVxuICAgIGluXG4gICAgeyBhZ2VudF9zaWdzOyBjb3VudGVyX2FnZW50X2luZm8gPSBTb21lIHsgaWQ7IGFyaXR5ID0gMjsgcG9ydHMgfSB9XG4gIHwgTm9uZSAtPiB7IGFnZW50X3NpZ3M7IGNvdW50ZXJfYWdlbnRfaW5mbyA9IE5vbmUgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBjY19zaXRlID0geyBzaXRlX2xpbms6IChpbnQgKiBpbnQpIG9wdGlvbjsgc2l0ZV9zdGF0ZTogaW50IG9wdGlvbiB9XG5cbnR5cGUgY2Nfbm9kZSA9IHtcbiAgbm9kZV90eXBlOiBpbnQ7XG4gIG5vZGVfaWRfaW5fd2l0bmVzczogaW50O1xuICBub2RlX3NpdGVzOiBjY19zaXRlIGFycmF5O1xufVxuXG50eXBlIGNvbm5lY3RlZF9jb21wb25lbnQgPSBjY19ub2RlIGFycmF5XG5cbmxldCByZWMgYWdlbnRzX2FyZV9jb21wYXRpYmxlcyBhIGIgZG9uID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgKHgsIHkpIDo6IHEgLT5cbiAgICBsZXQgbyA9IGEuKHgpIGluXG4gICAgbGV0IHAgPSBiLih5KSBpblxuICAgIG8ubm9kZV90eXBlID0gcC5ub2RlX3R5cGVcbiAgICAmJlxuICAgIGxldCBpX29rID1cbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdDJpXG4gICAgICAgIChmdW4gXyBiIHggeSAtPlxuICAgICAgICAgIGJcbiAgICAgICAgICAmJlxuICAgICAgICAgIG1hdGNoIHguc2l0ZV9zdGF0ZSwgeS5zaXRlX3N0YXRlIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSwgU29tZSBiIC0+IGEgPSBiXG4gICAgICAgICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICAgICAgICB8IChTb21lIF8gfCBOb25lKSwgXyAtPiBmYWxzZSlcbiAgICAgICAgdHJ1ZSBvLm5vZGVfc2l0ZXMgcC5ub2RlX3NpdGVzXG4gICAgaW5cbiAgICBpX29rXG4gICAgJiZcbiAgICAobWF0Y2hcbiAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnQyaVxuICAgICAgICAgKGZ1biBfIGMgeCB5IC0+XG4gICAgICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gY1xuICAgICAgICAgICB8IFNvbWUgdG9kbyAtPlxuICAgICAgICAgICAgIChtYXRjaCB4LnNpdGVfbGluaywgeS5zaXRlX2xpbmsgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gY1xuICAgICAgICAgICAgIHwgU29tZSAoYSwgcyksIFNvbWUgKGIsIHMnKSAtPlxuICAgICAgICAgICAgICAgaWYgcyA8PiBzJyB0aGVuXG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICggTGlzdC5maW5kX2FsbCAoZnVuIChhJywgYicpIC0+IGEgPSBhJyB8fCBiID0gYicpIGRvbixcbiAgICAgICAgICAgICAgICAgICAgIExpc3QuZmluZF9hbGwgKGZ1biAoYScsIGInKSAtPiBhID0gYScgfHwgYiA9IGInKSB0b2RvIClcbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICB8IF8gOjogXyA6OiBfLCBfIHwgXywgXyA6OiBfIDo6IF8gfCBbIF8gXSwgWyBfIF0gLT4gTm9uZVxuICAgICAgICAgICAgICAgICB8IFsgKGEnLCBiJykgXSwgW10gfCBbXSwgWyAoYScsIGInKSBdIC0+XG4gICAgICAgICAgICAgICAgICAgaWYgYSA9IGEnICYmIGIgPSBiJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICBjXG4gICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICB8IFtdLCBbXSAtPiBTb21lICgoYSwgYikgOjogdG9kbylcbiAgICAgICAgICAgICAgICkpKVxuICAgICAgICAgKFNvbWUgcSkgby5ub2RlX3NpdGVzIHAubm9kZV9zaXRlc1xuICAgICB3aXRoXG4gICAgfCBTb21lIHRvZG8nIC0+IGFnZW50c19hcmVfY29tcGF0aWJsZXMgYSBiICgoeCwgeSkgOjogZG9uKSB0b2RvJ1xuICAgIHwgXyAtPiBmYWxzZSlcblxubGV0IGNsYXNzaWZ5X2J5X3R5cGUgc2lncyBtaXggPVxuICBsZXQgbGVuID0gU2lnbmF0dXJlLnNpemUgc2lncyBpblxuICBsZXQgb3V0ID0gQXJyYXkubWFrZSBsZW4gKDAsIFtdKSBpblxuICBsZXQgY2xhc3NpZnkgaWQgYWcgPVxuICAgIGxldCBuYiwgYWdzID0gb3V0LihhZy5ub2RlX3R5cGUpIGluXG4gICAgb3V0LihhZy5ub2RlX3R5cGUpIDwtIHN1Y2MgbmIsIGlkIDo6IGFnc1xuICBpblxuICBsZXQgKCkgPSBBcnJheS5pdGVyaSBjbGFzc2lmeSBtaXggaW5cbiAgb3V0XG5cbmxldCBlcXVhbCBjYnRfYSBhIGNidF9iIGIgPVxuICBtYXRjaCBUb29scy5hcnJheV9taW5fZXF1YWxfbm90X251bGwgY2J0X2EgY2J0X2Igd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIChbXSwgYWdzKSAtPiBhZ3MgPSBbXVxuICB8IFNvbWUgKGgxIDo6IF8sIGFncykgLT5cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBib29sIGFnIC0+IGJvb2wgfHwgYWdlbnRzX2FyZV9jb21wYXRpYmxlcyBhIGIgW10gWyBoMSwgYWcgXSlcbiAgICAgIGZhbHNlIGFnc1xuXG5sZXQgaGFzaF9wcmltZSA9IDI5XG5cbmxldCBjb2Fyc2VfaGFzaCBjYnQgPVxuICBBcnJheS5mb2xkX3JpZ2h0IChmdW4gKGwsIF8pIGFjYyAtPiBsICsgKGhhc2hfcHJpbWUgKiBhY2MpKSBjYnQgMFxuXG50eXBlIHQgPSAoaW50ICogKGludCAqIGludCBsaXN0KSBhcnJheSAqIGNvbm5lY3RlZF9jb21wb25lbnQpIGxpc3QgTW9kcy5JbnRNYXAudFxuXG5sZXQgZW1wdHkgPSBNb2RzLkludE1hcC5lbXB0eVxuXG5sZXQgaW5jcmVtZW50X2luX3NuYXBzaG90IH5yYXcgc2lncyB4IHMgPVxuICBsZXQgY2J0X3ggPSBjbGFzc2lmeV9ieV90eXBlIHNpZ3MgeCBpblxuICBsZXQgaHMgPSBjb2Fyc2VfaGFzaCBjYnRfeCBpblxuICBsZXQgbCA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbXSBocyBzIGluXG4gIGxldCByZWMgYXV4X2luY3JlbWVudCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbIDEsIGNidF94LCB4IF1cbiAgICB8ICgobiwgY2J0X3ksIHkpIGFzIGgpIDo6IHQgLT5cbiAgICAgIGlmIGVxdWFsIGNidF94IHggY2J0X3kgeSB0aGVuXG4gICAgICAgIChzdWNjIG4sIGNidF95LCB5KSA6OiB0XG4gICAgICBlbHNlXG4gICAgICAgIGggOjogYXV4X2luY3JlbWVudCB0XG4gIGluXG4gIE1vZHMuSW50TWFwLmFkZCBoc1xuICAgIChpZiByYXcgdGhlblxuICAgICAgICgxLCBjYnRfeCwgeCkgOjogbFxuICAgICBlbHNlXG4gICAgICAgYXV4X2luY3JlbWVudCBsKVxuICAgIHNcblxubGV0IHJlYyBjb3VudGVyX3ZhbHVlIGNjIChuaWQsIHNpZCkgY291bnQgPVxuICBsZXQgYWcgPSBjYy4obmlkKSBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpZCBhY2Mgc2kgLT5cbiAgICAgIGlmIGlkID0gc2lkIHRoZW5cbiAgICAgICAgYWNjXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggc2kuc2l0ZV9saW5rIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgeCAtPiBjb3VudGVyX3ZhbHVlIGNjIHggKGFjYyArIDEpXG4gICAgICApKVxuICAgIGNvdW50IGFnLm5vZGVfc2l0ZXNcblxubGV0IGNjX3RvX3VzZXJfY2MgPyhrZWVwX2ludmVydGVkX2NvdW50ZXJzIDogYm9vbCA9IGZhbHNlKSB+ZGVidWdfbW9kZSB+cmF3IHNpZ3NcbiAgICBjYyA9XG4gIGxldCByIDogUmVuYW1pbmcudCA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gIGxldCAoY2NfbGlzdF93aXRob3V0X2NvdW50ZXJzLCBpbmRleGVzLCBfKSA6IGNjX25vZGUgbGlzdCAqIFJlbmFtaW5nLnQgKiBpbnQgPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgIChmdW4gaSAoYWNjLCBpbmRleGVzLCBwb3MpIGFnIC0+XG4gICAgICAgIGlmIFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgYWcubm9kZV90eXBlIHRoZW5cbiAgICAgICAgICBhY2MsIGluZGV4ZXMsIHBvc1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgaW5kZXhlcycgPVxuICAgICAgICAgICAgaWYgaSA9IHBvcyB0aGVuXG4gICAgICAgICAgICAgIGluZGV4ZXNcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaSBwb3MgaW5kZXhlcyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiSW5qZWN0aXZpdHkgb2YgcmVuYW1pbmcgaW4gc25hcHNob3RcIikpXG4gICAgICAgICAgICAgIHwgU29tZSByIC0+IHJcbiAgICAgICAgICAgIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGFnIDo6IGFjYywgaW5kZXhlcycsIHBvcyArIDFcbiAgICAgICAgKSlcbiAgICAgIChbXSwgciwgMCkgY2NcbiAgaW5cbiAgbGV0IGNjX3dpdGhvdXRfY291bnRlcnMgOiBjY19ub2RlIGFycmF5ID1cbiAgICBBcnJheS5vZl9saXN0IChMaXN0LnJldiBjY19saXN0X3dpdGhvdXRfY291bnRlcnMpXG4gIGluXG4gIFt8XG4gICAgQXJyYXkubWFwXG4gICAgICAoZnVuIGFnIC0+XG4gICAgICAgIGxldCBub2RlX3NpdGVzX2FsbCA6IFVzZXJfZ3JhcGguY2Nfc2l0ZSBhcnJheSA9XG4gICAgICAgICAgQXJyYXkubWFwaVxuICAgICAgICAgICAgKGZ1biBpZCBzaSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5zaXRlX25hbWUgPVxuICAgICAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZy5ub2RlX3R5cGUpXG4gICAgICAgICAgICAgICAgICAgIGlkO1xuICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID1cbiAgICAgICAgICAgICAgICAgIChsZXQgcG9ydF9zdGF0ZXMgPVxuICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2kuc2l0ZV9zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSBbXVxuICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnLm5vZGVfdHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcztcbiAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBzaS5zaXRlX2xpbmsgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPSBVc2VyX2dyYXBoLkxJTktTIFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9zdGF0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICB8IFNvbWUgKGRuX2lkLCBzKSAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IGRuX2lkJyA9XG4gICAgICAgICAgICAgICAgICAgICAgIHRyeSBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmRleGVzIGRuX2lkXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggUmVuYW1pbmcuVW5kZWZpbmVkIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IGRuX2lkXG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgaWYgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBjYy4oZG5faWQpLm5vZGVfdHlwZVxuICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLkNvdW50ZXIgKGNvdW50ZXJfdmFsdWUgY2MgKGRuX2lkLCBzKSAwKVxuICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLkxJTktTIFsgKDAsIGRuX2lkJyksIHMgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9zdGF0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBhZy5ub2RlX3NpdGVzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBub2RlX3NpdGVzIDogVXNlcl9ncmFwaC5jY19zaXRlIGFycmF5ID1cbiAgICAgICAgICBpZiBrZWVwX2ludmVydGVkX2NvdW50ZXJzIHRoZW5cbiAgICAgICAgICAgIG5vZGVfc2l0ZXNfYWxsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKCogUmVtb3ZlIGludmVydGVkIGNvdW50ZXJzIGZyb20gdXNlciBzbmFwc2hvdCAqKVxuICAgICAgICAgICAgbm9kZV9zaXRlc19hbGwgfD4gQXJyYXkudG9fbGlzdFxuICAgICAgICAgICAgfD4gTGlzdC5maWx0ZXIgKGZ1biAoc2l0ZSA6IFVzZXJfZ3JhcGguY2Nfc2l0ZSkgOiBib29sIC0+XG4gICAgICAgICAgICAgICAgICAgbm90IChTaWduYXR1cmUuaXNfaW52ZXJ0ZWRfY291bnRlciBzaXRlLnNpdGVfbmFtZSkpXG4gICAgICAgICAgICB8PiBBcnJheS5vZl9saXN0XG4gICAgICAgIGluXG5cbiAgICAgICAgU29tZVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFVzZXJfZ3JhcGgubm9kZV9pZCA9XG4gICAgICAgICAgICAgIChpZiByYXcgdGhlblxuICAgICAgICAgICAgICAgICBTb21lIGFnLm5vZGVfaWRfaW5fd2l0bmVzc1xuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBOb25lKTtcbiAgICAgICAgICAgIFVzZXJfZ3JhcGgubm9kZV90eXBlID1cbiAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpIGFnLm5vZGVfdHlwZTtcbiAgICAgICAgICAgIFVzZXJfZ3JhcGgubm9kZV9zaXRlcztcbiAgICAgICAgICB9KVxuICAgICAgY2Nfd2l0aG91dF9jb3VudGVycztcbiAgfF1cblxubGV0IGZvbGQgZiB4IHMgPVxuICBNb2RzLkludE1hcC5mb2xkXG4gICAgKGZ1biBfIGwgYWNjIC0+IExpc3QuZm9sZF9sZWZ0IChmdW4gYSAobmIsIF8sIGNjKSAtPiBmIGEgbmIgY2MpIGFjYyBsKVxuICAgIHMgeFxuXG5sZXQgZXhwb3J0IH5kZWJ1Z19tb2RlIH5yYXcgc2lncyBzID1cbiAgZm9sZCAoZnVuIGEgeCB5IC0+ICh4LCBjY190b191c2VyX2NjIH5kZWJ1Z19tb2RlIH5yYXcgc2lncyB5KSA6OiBhKSBbXSBzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbnQgKiBpbnRcbigqKiBhZ2VudF9pZCAqIGFnZW50X3R5cGUgKilcblxudHlwZSBhZyA9IHRcblxubGV0IG1ha2UgfmlkIH5zb3J0ID0gaWQsIHNvcnRcblxubGV0IHByaW50ID9zaWdzIH53aXRoX2lkIGYgKGksIHR5KSA9XG4gIG1hdGNoIHNpZ3Mgd2l0aFxuICB8IFNvbWUgc2lncyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSV0XCIgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKSB0eSAoZnVuIGYgLT5cbiAgICAgICAgaWYgd2l0aF9pZCB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCIvKiVpKi9cIiBpKVxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIm4laVwiIGlcblxubGV0IHByaW50X3NpdGUgP3NpZ3MgKGksIGFnZW50KSBmIGlkID1cbiAgbWF0Y2ggc2lncyB3aXRoXG4gIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWdlbnQgZiBpZFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIm4laXMlaVwiIGkgaWRcblxubGV0IHByaW50X2ludGVybmFsID9zaWdzIChpLCBhZ2VudCkgc2l0ZSBmIGlkID1cbiAgbWF0Y2ggc2lncyB3aXRoXG4gIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9zaXRlX2ludGVybmFsX3N0YXRlIHNpZ3MgYWdlbnQgc2l0ZSBmIChTb21lIGlkKVxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIm4laXMlaX4laVwiIGkgc2l0ZSBpZFxuXG5sZXQgcHJpbnRfcmF3X2ludGVybmFsID9zaWdzIChpLCBhZ2VudCkgc2l0ZSBmIGlkID1cbiAgbWF0Y2ggc2lncyB3aXRoXG4gIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnZW50IHNpdGUgZiBpZFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIm4laXMlaX4laVwiIGkgc2l0ZSBpZFxuXG5sZXQgcmVuYW1lIH5kZWJ1Z19tb2RlIGluaiAobl9pZCwgbl90eSkgPVxuICBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogbl9pZCwgbl90eVxuXG5sZXQgc29ydCAoXywgdHkpID0gdHlcbmxldCBpZCAoaWQsIF8pID0gaWRcbmxldCBjb21wYXJlIChpZDEsIF8pIChpZDIsIF8pID0gTW9kcy5pbnRfY29tcGFyZSBpZDEgaWQyXG5sZXQganNvbl9kaWN0aW9ubmFyeSA9IFwiXFxcImFnZW50XFxcIjp7XFxcImlkXFxcIjowLFxcXCJ0eXBlXFxcIjoxfVwiXG5cbmxldCB3cml0ZV9qc29uIG9iIGEgPVxuICBKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLndyaXRlX2ludCBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIGFcblxubGV0IHJlYWRfanNvbiBwIGxiID1cbiAgSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfaW50IFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiXG5cbmxldCB0b19qc29uIChpZCwgdHkpID0gYExpc3QgWyBgSW50IGlkOyBgSW50IHR5IF1cblxubGV0IG9mX2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYEludCBpZDsgYEludCB0eSBdIC0+IGlkLCB0eVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhZ2VudFwiLCB4KSlcblxubW9kdWxlIFNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gYWdcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IHByaW50ID0gcHJpbnQgP3NpZ3M6Tm9uZSB+d2l0aF9pZDp0cnVlXG5lbmQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRWRnZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBBZ2VudC50ICogaW50XG4gICgqKiBhZ2VudCAqIHNpdGUgKilcblxuICBsZXQgX2NvbXBhcmUgKChuLCBfKSwgcykgKChuJywgXyksIHMnKSA9XG4gICAgbGV0IGMgPSBNb2RzLmludF9jb21wYXJlIG4gbicgaW5cbiAgICBpZiBjIDw+IDAgdGhlblxuICAgICAgY1xuICAgIGVsc2VcbiAgICAgIE1vZHMuaW50X2NvbXBhcmUgcyBzJ1xuXG4gICgqIGxldCBkdW1teV9saW5rID0gKCgtMSwtMSksLTEpICopXG5lbmRcblxuKCogZnVuY3Rpb25zIHVzaW5nIHRoZSBjYWNoZSBhcmUgcmVzcG9uc2libGUgb2YgcmVzZXRpbmcgdGhlIGNhY2hlIGF0IGV4aXQgKilcbm1vZHVsZSBDYWNoZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgdGVzdHM6IGludCBNb2RzLkR5bkFycmF5LnQ7XG4gICAgYmFnOiBpbnQgTW9kcy5EeW5BcnJheS50O1xuICAgIG11dGFibGUgbGltaXQ6IGludDtcbiAgfVxuXG4gIGxldCBpbnRfbCA9IDMxICgqU3lzLmludF9zaXplKilcblxuICBsZXQgY3JlYXRlICgpID1cbiAgICB7IHRlc3RzID0gTW9kcy5EeW5BcnJheS5tYWtlIDEgMDsgYmFnID0gTW9kcy5EeW5BcnJheS5tYWtlIDEgMDsgbGltaXQgPSAwIH1cblxuICBsZXQgbWFyayB0IGkgPVxuICAgIGxldCB4ID0gaSAvIGludF9sIGluXG4gICAgbGV0IG9sZCA9IE1vZHMuRHluQXJyYXkuZ2V0IHQudGVzdHMgeCBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBvbGQgPSAwIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCB0LmJhZyB0LmxpbWl0IHggaW5cbiAgICAgICAgdC5saW1pdCA8LSBzdWNjIHQubGltaXRcbiAgICAgIClcbiAgICBpblxuICAgIE1vZHMuRHluQXJyYXkuc2V0IHQudGVzdHMgeCAob2xkIGxvciAoMSBsc2wgKGkgbW9kIGludF9sKSkpXG5cbiAgbGV0IHRlc3QgdCBpID1cbiAgICBNb2RzLkR5bkFycmF5LmdldCB0LnRlc3RzIChpIC8gaW50X2wpIGxhbmQgKDEgbHNsIChpIG1vZCBpbnRfbCkpIDw+IDBcblxuICBsZXQgcmVzZXQgdCA9XG4gICAgbGV0ICgpID1cbiAgICAgIFRvb2xzLml0ZXJpXG4gICAgICAgIChmdW4gaSAtPiBNb2RzLkR5bkFycmF5LnNldCB0LnRlc3RzIChNb2RzLkR5bkFycmF5LmdldCB0LmJhZyBpKSAwKVxuICAgICAgICB0LmxpbWl0XG4gICAgaW5cbiAgICB0LmxpbWl0IDwtIDBcblxuICBsZXQgaXRlcmlfcmVzZXQgZiB0ID1cbiAgICBsZXQgKCkgPVxuICAgICAgVG9vbHMuaXRlcmlcbiAgICAgICAgKGZ1biBrIC0+XG4gICAgICAgICAgbGV0IGkgPSBNb2RzLkR5bkFycmF5LmdldCB0LmJhZyBrIGluXG4gICAgICAgICAgbGV0IHYgPSBNb2RzLkR5bkFycmF5LmdldCB0LnRlc3RzIGkgaW5cbiAgICAgICAgICBpZiB2IDw+IDAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgYWNjID0gaW50X2wgKiBpIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBUb29scy5pdGVyaVxuICAgICAgICAgICAgICAgIChmdW4gaiAtPiBpZiB2IGxhbmQgKDEgbHNsIGopIDw+IDAgdGhlbiBmIChhY2MgKyBqKSlcbiAgICAgICAgICAgICAgICBpbnRfbFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIE1vZHMuRHluQXJyYXkuc2V0IHQudGVzdHMgaSAwXG4gICAgICAgICAgKSlcbiAgICAgICAgdC5saW1pdFxuICAgIGluXG4gICAgdC5saW1pdCA8LSAwXG5lbmRcblxubGV0IGdsdWVfY29ubmVjdGVkX2NvbXBvbmVudCBsaW5rcyBjYWNoZSBjY3Mgbm9kZTEgbm9kZTIgPVxuICBsZXQgY2NfaWRfb3AgPSBNb2RzLkR5bkFycmF5LmdldCBjY3Mgbm9kZTIgaW5cbiAgbGV0IHJlYyBleHBsb3JlX3NpdGUgaWQgc2l0ZSBuZXh0ID1cbiAgICBpZiBzaXRlID0gMCB0aGVuXG4gICAgICBuZXh0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpLihwcmVkIHNpdGUpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBleHBsb3JlX3NpdGUgaWQgKHByZWQgc2l0ZSkgbmV4dFxuICAgICAgfCBTb21lICgoaWQnLCBfKSwgXykgLT5cbiAgICAgICAgaWYgTW9kcy5EeW5BcnJheS5nZXQgY2NzIGlkJyA9IGNjX2lkX29wIHx8IENhY2hlLnRlc3QgY2FjaGUgaWQnIHRoZW5cbiAgICAgICAgICBleHBsb3JlX3NpdGUgaWQgKHByZWQgc2l0ZSkgbmV4dFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBDYWNoZS5tYXJrIGNhY2hlIGlkJyBpblxuICAgICAgICAgIGV4cGxvcmVfc2l0ZSBpZCAocHJlZCBzaXRlKSAoaWQnIDo6IG5leHQpXG4gICAgICAgIClcbiAgICApXG4gIGluXG4gIGxldCByZWMgaXNfaW5fY2MgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBpZCA6OiB0b2RvcyAtPlxuICAgICAgaXNfaW5fY2NcbiAgICAgICAgKGV4cGxvcmVfc2l0ZSBpZCAoQXJyYXkubGVuZ3RoIChNb2RzLkR5bkFycmF5LmdldCBsaW5rcyBpZCkpIG5leHQpXG4gICAgICAgIHRvZG9zXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIG5leHQgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBDYWNoZS5pdGVyaV9yZXNldCAoZnVuIGkgLT4gTW9kcy5EeW5BcnJheS5zZXQgY2NzIGkgY2NfaWRfb3ApIGNhY2hlXG4gICAgICB8IF8gLT4gaXNfaW5fY2MgW10gbmV4dClcbiAgaW5cbiAgbGV0ICgpID0gQ2FjaGUubWFyayBjYWNoZSBub2RlMSBpblxuICBpc19pbl9jYyBbXSBbIG5vZGUxIF1cblxubGV0IHNlcGFyYXRlX2Nvbm5lY3RlZF9jb21wb25lbnQgbGlua3MgKGNhY2hlMSwgY2FjaGUyKSBjY3Mgbm9kZTEgbm9kZTIgPVxuICBsZXQgb2xkX2NjX2lkID0gT3B0aW9uX3V0aWwudW5zb21lICgtMSkgKE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBub2RlMSkgaW5cbiAgbGV0IHJlYyBpbnNwZWN0X3NpdGUgY2FjaGUgP2RzdF9jYWNoZSBpZCBzaXRlIG5leHQgPVxuICAgIGlmIHNpdGUgPSAwIHRoZW5cbiAgICAgIFNvbWUgbmV4dFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggKE1vZHMuRHluQXJyYXkuZ2V0IGxpbmtzIGlkKS4ocHJlZCBzaXRlKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW5zcGVjdF9zaXRlIGNhY2hlID9kc3RfY2FjaGUgaWQgKHByZWQgc2l0ZSkgbmV4dFxuICAgICAgfCBTb21lICgoaWQnLCBfKSwgXykgLT5cbiAgICAgICAgaWZcbiAgICAgICAgICBtYXRjaCBkc3RfY2FjaGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgIHwgU29tZSBkYyAtPiBDYWNoZS50ZXN0IGRjIGlkJ1xuICAgICAgICB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlIGlmIENhY2hlLnRlc3QgY2FjaGUgaWQnIHRoZW5cbiAgICAgICAgICBpbnNwZWN0X3NpdGUgY2FjaGUgP2RzdF9jYWNoZSBpZCAocHJlZCBzaXRlKSBuZXh0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IENhY2hlLm1hcmsgY2FjaGUgaWQnIGluXG4gICAgICAgICAgaW5zcGVjdF9zaXRlIGNhY2hlID9kc3RfY2FjaGUgaWQgKHByZWQgc2l0ZSkgKGlkJyA6OiBuZXh0KVxuICAgICAgICApXG4gICAgKVxuICBpblxuICBsZXQgcmVjIG1hcmtfbmV3X2NjIG9yaWcgY2FjaGUgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBpZCA6OiB0b2RvcyAtPlxuICAgICAgKG1hdGNoXG4gICAgICAgICBpbnNwZWN0X3NpdGUgY2FjaGUgaWQgKEFycmF5Lmxlbmd0aCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpKSBuZXh0XG4gICAgICAgd2l0aFxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBTb21lIG5leHQnIC0+IG1hcmtfbmV3X2NjIG9yaWcgY2FjaGUgbmV4dCcgdG9kb3MpXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIG5leHQgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIENhY2hlLml0ZXJpX3Jlc2V0IChmdW4gaSAtPiBNb2RzLkR5bkFycmF5LnNldCBjY3MgaSAoU29tZSBvcmlnKSkgY2FjaGVcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAob2xkX2NjX2lkLCBvcmlnKVxuICAgICAgfCBfIC0+IG1hcmtfbmV3X2NjIG9yaWcgY2FjaGUgW10gbmV4dClcbiAgaW5cbiAgbGV0IHJlYyBpbl9zYW1lX2NjIG90aGVyX29yaWcgb3RoZXJfY2FjaGUgb3RoZXJfbmV4dCB0aGlzX29yaWcgdGhpc19jYWNoZVxuICAgICAgdGhpc19uZXh0ID0gZnVuY3Rpb25cbiAgICB8IGlkIDo6IHRvZG9zIC0+XG4gICAgICAobWF0Y2hcbiAgICAgICAgIGluc3BlY3Rfc2l0ZSB0aGlzX2NhY2hlIH5kc3RfY2FjaGU6b3RoZXJfY2FjaGUgaWRcbiAgICAgICAgICAgKEFycmF5Lmxlbmd0aCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpKVxuICAgICAgICAgICB0aGlzX25leHRcbiAgICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgdGhpc19jYWNoZSBpblxuICAgICAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCBvdGhlcl9jYWNoZSBpblxuICAgICAgICBOb25lXG4gICAgICB8IFNvbWUgbmV4dCcgLT5cbiAgICAgICAgaW5fc2FtZV9jYyBvdGhlcl9vcmlnIG90aGVyX2NhY2hlIG90aGVyX25leHQgdGhpc19vcmlnIHRoaXNfY2FjaGUgbmV4dCdcbiAgICAgICAgICB0b2RvcylcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggdGhpc19uZXh0IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgaWYgQ2FjaGUudGVzdCB0aGlzX2NhY2hlIG9sZF9jY19pZCB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCB0aGlzX2NhY2hlIGluXG4gICAgICAgICAgbWFya19uZXdfY2Mgb3RoZXJfb3JpZyBvdGhlcl9jYWNoZSBbXSBvdGhlcl9uZXh0XG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgb3RoZXJfY2FjaGUgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgQ2FjaGUuaXRlcmlfcmVzZXRcbiAgICAgICAgICAgICAgKGZ1biBpIC0+IE1vZHMuRHluQXJyYXkuc2V0IGNjcyBpIChTb21lIHRoaXNfb3JpZykpXG4gICAgICAgICAgICAgIHRoaXNfY2FjaGVcbiAgICAgICAgICBpblxuICAgICAgICAgIFNvbWUgKG9sZF9jY19pZCwgdGhpc19vcmlnKVxuICAgICAgICApXG4gICAgICB8IF8gLT5cbiAgICAgICAgaW5fc2FtZV9jYyB0aGlzX29yaWcgdGhpc19jYWNoZSB0aGlzX25leHQgb3RoZXJfb3JpZyBvdGhlcl9jYWNoZSBbXVxuICAgICAgICAgIG90aGVyX25leHQpXG4gIGluXG4gIGxldCAoKSA9IENhY2hlLm1hcmsgY2FjaGUxIG5vZGUxIGluXG4gIGxldCAoKSA9IENhY2hlLm1hcmsgY2FjaGUyIG5vZGUyIGluXG4gIGluX3NhbWVfY2Mgbm9kZTEgY2FjaGUxIFsgbm9kZTEgXSBub2RlMiBjYWNoZTIgW10gWyBub2RlMiBdXG5cbnR5cGUgdGFibGVzID0ge1xuICBjb25uZWN0OiBFZGdlLnQgb3B0aW9uIGFycmF5IE1vZHMuRHluQXJyYXkudDtcbiAgc3RhdGU6IGludCBvcHRpb24gYXJyYXkgTW9kcy5EeW5BcnJheS50O1xuICBzb3J0OiBpbnQgb3B0aW9uIE1vZHMuRHluQXJyYXkudDtcbiAgY29ubmVjdGVkX2NvbXBvbmVudDogaW50IG9wdGlvbiBNb2RzLkR5bkFycmF5LnQgb3B0aW9uO1xuICBjYWNoZXM6IENhY2hlLnQgKiBDYWNoZS50O1xufVxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgdGFibGVzOiB0YWJsZXMgb3B0aW9uO1xuICBtaXNzaW5nczogTW9kcy5JbnQyU2V0LnQ7XG4gIGZyZWVfaWQ6IGludCAqIGludCBsaXN0O1xufVxuKCoqIChhZ2VudCxzaXRlIC0+IGJpbmRpbmdfc3RhdGU7IG1pc3NpbmdzKTtcbiAgICBhZ2VudCxzaXRlIC0+IGludGVybmFsX3N0YXRlOyBhZ2VudCAtPiBzb3J0OyBmcmVlX2lkXG4gICAgdGhlIGZyZWUgc2l0ZXMgYXJlIG5laXRoZXIgaW4gbWlzc2luZ3Mgbm9yIGluIGxpbmtpbmdfZGVzdGluYXRpb24gKilcblxubGV0IGVtcHR5IH53aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzID1cbiAge1xuICAgIHRhYmxlcyA9XG4gICAgICBTb21lXG4gICAgICAgIHtcbiAgICAgICAgICBjb25uZWN0ID0gTW9kcy5EeW5BcnJheS5tYWtlIDEgW3x8XTtcbiAgICAgICAgICBzdGF0ZSA9IE1vZHMuRHluQXJyYXkubWFrZSAxIFt8fF07XG4gICAgICAgICAgc29ydCA9IE1vZHMuRHluQXJyYXkubWFrZSAxIE5vbmU7XG4gICAgICAgICAgY29ubmVjdGVkX2NvbXBvbmVudCA9XG4gICAgICAgICAgICAoaWYgd2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyB0aGVuXG4gICAgICAgICAgICAgICBTb21lIChNb2RzLkR5bkFycmF5Lm1ha2UgMSBOb25lKVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIE5vbmUpO1xuICAgICAgICAgIGNhY2hlcyA9IENhY2hlLmNyZWF0ZSAoKSwgQ2FjaGUuY3JlYXRlICgpO1xuICAgICAgICB9O1xuICAgIG1pc3NpbmdzID0gTW9kcy5JbnQyU2V0LmVtcHR5O1xuICAgIGZyZWVfaWQgPSAwLCBbXTtcbiAgfVxuXG5sZXQgY29weSBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIHtcbiAgICAgIHRhYmxlcyA9XG4gICAgICAgIFNvbWVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25uZWN0ID0gTW9kcy5EeW5BcnJheS5tYXAgQXJyYXkuY29weSB0YWJsZXMuY29ubmVjdDtcbiAgICAgICAgICAgIHN0YXRlID0gTW9kcy5EeW5BcnJheS5tYXAgQXJyYXkuY29weSB0YWJsZXMuc3RhdGU7XG4gICAgICAgICAgICBzb3J0ID0gTW9kcy5EeW5BcnJheS5jb3B5IHRhYmxlcy5zb3J0O1xuICAgICAgICAgICAgY29ubmVjdGVkX2NvbXBvbmVudCA9XG4gICAgICAgICAgICAgIChtYXRjaCB0YWJsZXMuY29ubmVjdGVkX2NvbXBvbmVudCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSBjY3MgLT4gU29tZSAoTW9kcy5EeW5BcnJheS5jb3B5IGNjcykpO1xuICAgICAgICAgICAgY2FjaGVzID0gQ2FjaGUuY3JlYXRlICgpLCBDYWNoZS5jcmVhdGUgKCk7XG4gICAgICAgICAgfTtcbiAgICAgIGZyZWVfaWQgPSBncmFwaC5mcmVlX2lkO1xuICAgICAgbWlzc2luZ3MgPSBncmFwaC5taXNzaW5ncztcbiAgICB9XG5cbnR5cGUgc3RhdHMgPSB7IG5iX2FnZW50czogaW50IH1cblxubGV0IHN0YXRzIGdyYXBoID1cbiAgbGV0IHRvcF9pZCwgZnJlZV9pZHMgPSBncmFwaC5mcmVlX2lkIGluXG4gIHsgbmJfYWdlbnRzID0gdG9wX2lkIC0gTGlzdC5sZW5ndGggZnJlZV9pZHMgfVxuXG5sZXQgYWRkX2FnZW50ID9pZCBzaWdzIHR5IGdyYXBoID1cbiAgbGV0IGFyID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgdHkgaW5cbiAgbGV0IGFsID0gQXJyYXkubWFrZSBhciBOb25lIGluXG4gIGxldCBhaSA9IEFycmF5Lm1ha2UgYXIgTm9uZSBpblxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCBoLCBmcmVlX2lkID1cbiAgICAgIG1hdGNoIGlkIHdpdGhcbiAgICAgIHwgU29tZSBpZCAtPlxuICAgICAgICAoIGlkLFxuICAgICAgICAgIGxldCBuZXdfaWQsIGwgPSBncmFwaC5mcmVlX2lkIGluXG4gICAgICAgICAgaWYgaWQgPCBuZXdfaWQgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaCBMaXN0LnBhcnRpdGlvbiAoZnVuIGkgLT4gaSA9IGlkKSBsIHdpdGhcbiAgICAgICAgICAgIHwgWyBfIF0sIHQgLT4gbmV3X2lkLCB0XG4gICAgICAgICAgICB8IF8sIF8gLT5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgICAgICAgIChcIlRyeSB0byBhZGQgYW4gYWdlbnQgd2l0aCBhIHRoZSBmcmVlIGlkIFwiXG4gICAgICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pbnQgaWQpKSlcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICggc3VjYyBpZCxcbiAgICAgICAgICAgICAgVG9vbHMucmVjdGkgKGZ1biBhY2MgayAtPiAoayArIG5ld19pZCkgOjogYWNjKSBsIChpZCAtIG5ld19pZCkgKSApXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIGdyYXBoLmZyZWVfaWQgd2l0aFxuICAgICAgICB8IG5ld19pZCwgaCA6OiB0IC0+IGgsIChuZXdfaWQsIHQpXG4gICAgICAgIHwgbmV3X2lkLCBbXSAtPiBuZXdfaWQsIChzdWNjIG5ld19pZCwgW10pKVxuICAgIGluXG4gICAgbGV0IG1pc3NpbmdzJyA9XG4gICAgICBUb29scy5yZWN0aSAoZnVuIGEgcyAtPiBNb2RzLkludDJTZXQuYWRkIChoLCBzKSBhKSBncmFwaC5taXNzaW5ncyBhclxuICAgIGluXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgdGFibGVzLmNvbm5lY3QgaCBhbCBpblxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHRhYmxlcy5zdGF0ZSBoIGFpIGluXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgdGFibGVzLnNvcnQgaCAoU29tZSB0eSkgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgY2NzIC0+IE1vZHMuRHluQXJyYXkuc2V0IGNjcyBoIChTb21lIGgpXG4gICAgaW5cbiAgICBoLCB7IHRhYmxlcyA9IFNvbWUgdGFibGVzOyBtaXNzaW5ncyA9IG1pc3NpbmdzJzsgZnJlZV9pZCB9XG5cbmxldCBhZGRfZnJlZSBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgKCkgPSAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcpLihzKSA8LSBOb25lIGluXG4gICAge1xuICAgICAgdGFibGVzID0gU29tZSB0YWJsZXM7XG4gICAgICBtaXNzaW5ncyA9IE1vZHMuSW50MlNldC5yZW1vdmUgKGFnLCBzKSBncmFwaC5taXNzaW5ncztcbiAgICAgIGZyZWVfaWQgPSBncmFwaC5mcmVlX2lkO1xuICAgIH1cblxubGV0IGFkZF9pbnRlcm5hbCBhZyBzIGkgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc3RhdGUgYWcpLihzKSA8LSBTb21lIGkgaW5cbiAgICB7IHRhYmxlcyA9IFNvbWUgdGFibGVzOyBtaXNzaW5ncyA9IGdyYXBoLm1pc3NpbmdzOyBmcmVlX2lkID0gZ3JhcGguZnJlZV9pZCB9XG5cbmxldCBhZGRfbGluayAoYWcsIHR5KSBzIChhZycsIHR5JykgcycgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9XG4gICAgICAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcpLihzKSA8LSBTb21lICgoYWcnLCB0eScpLCBzJylcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcnKS4ocycpIDwtIFNvbWUgKChhZywgdHkpLCBzKVxuICAgIGluXG4gICAgbGV0IG91dCA9XG4gICAgICBtYXRjaCB0YWJsZXMuY29ubmVjdGVkX2NvbXBvbmVudCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGNjcyAtPlxuICAgICAgICBsZXQgaSA9IE9wdGlvbl91dGlsLnVuc29tZSAoLTEpIChNb2RzLkR5bkFycmF5LmdldCBjY3MgYWcpIGluXG4gICAgICAgIGxldCBqID0gT3B0aW9uX3V0aWwudW5zb21lICgtMikgKE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBhZycpIGluXG4gICAgICAgIGlmIGkgPSBqIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBnbHVlX2Nvbm5lY3RlZF9jb21wb25lbnQgdGFibGVzLmNvbm5lY3QgKGZzdCB0YWJsZXMuY2FjaGVzKSBjY3MgYWdcbiAgICAgICAgICAgICAgYWcnXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTb21lIChqLCBpKVxuICAgICAgICApXG4gICAgaW5cbiAgICAoIHtcbiAgICAgICAgdGFibGVzID0gU29tZSB0YWJsZXM7XG4gICAgICAgIG1pc3NpbmdzID1cbiAgICAgICAgICBNb2RzLkludDJTZXQucmVtb3ZlIChhZywgcylcbiAgICAgICAgICAgIChNb2RzLkludDJTZXQucmVtb3ZlIChhZycsIHMnKSBncmFwaC5taXNzaW5ncyk7XG4gICAgICAgIGZyZWVfaWQgPSBncmFwaC5mcmVlX2lkO1xuICAgICAgfSxcbiAgICAgIG91dCApXG5cbmxldCByZW1vdmVfYWdlbnQgYWcgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHRhYmxlcy5jb25uZWN0IGFnIFt8fF0gaW5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCB0YWJsZXMuc3RhdGUgYWcgW3x8XSBpblxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHRhYmxlcy5zb3J0IGFnIE5vbmUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgY2NzIC0+IE1vZHMuRHluQXJyYXkuc2V0IGNjcyBhZyBOb25lXG4gICAgaW5cbiAgICB7XG4gICAgICB0YWJsZXMgPSBTb21lIHRhYmxlcztcbiAgICAgIG1pc3NpbmdzID0gTW9kcy5JbnQyU2V0LmZpbHRlciAoZnVuIChhZycsIF8pIC0+IGFnIDw+IGFnJykgZ3JhcGgubWlzc2luZ3M7XG4gICAgICBmcmVlX2lkID1cbiAgICAgICAgKGxldCBuZXdfaWQsIGlkcyA9IGdyYXBoLmZyZWVfaWQgaW5cbiAgICAgICAgIG5ld19pZCwgYWcgOjogaWRzKTtcbiAgICB9XG5cbmxldCByZW1vdmVfZnJlZSBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgKCkgPSBhc3NlcnQgKChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZykuKHMpID0gTm9uZSkgaW5cbiAgICB7XG4gICAgICB0YWJsZXMgPSBTb21lIHRhYmxlcztcbiAgICAgIG1pc3NpbmdzID0gTW9kcy5JbnQyU2V0LmFkZCAoYWcsIHMpIGdyYXBoLm1pc3NpbmdzO1xuICAgICAgZnJlZV9pZCA9IGdyYXBoLmZyZWVfaWQ7XG4gICAgfVxuXG5sZXQgZ2V0X2ludGVybmFsIGFnIHMgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICAobWF0Y2ggKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zdGF0ZSBhZykuKHMpIHdpdGhcbiAgICB8IFNvbWUgaSAtPiBpXG4gICAgfCBOb25lIC0+XG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoXCJTaXRlIFwiIF4gc3RyaW5nX29mX2ludCBzIF4gXCIgb2YgYWdlbnQgXCIgXiBzdHJpbmdfb2ZfaW50IGFnXG4gICAgICAgXiBcIiBoYXMgbm8gaW50ZXJuYWwgc3RhdGUgaW4gdGhlIGN1cnJlbnQgZ3JhcGguXCIpKVxuXG5sZXQgZ2V0X3NpdGVzIGFnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0IGFyciA9IE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zdGF0ZSBhZyBpblxuICAgIEFycmF5Lmxlbmd0aCBhcnJcblxubGV0IGdldF9zb3J0IGFnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgKG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zb3J0IGFnIHdpdGhcbiAgICB8IFNvbWUgdHkgLT4gdHlcbiAgICB8IE5vbmUgLT5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIChcIkFnZW50IFwiIF4gc3RyaW5nX29mX2ludCBhZyBeIFwiIGhhcyBubyB0eXBlIGluIHRoZSBjdXJyZW50IGdyYXBoLlwiKSlcblxubGV0IHJlbW92ZV9pbnRlcm5hbCBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgaSA9IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc3RhdGUgYWcpLihzKSBpblxuICAgIGxldCAoKSA9IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc3RhdGUgYWcpLihzKSA8LSBOb25lIGluXG4gICAgKG1hdGNoIGkgd2l0aFxuICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFNvbWUgaSAtPlxuICAgICAgKCBpLFxuICAgICAgICB7XG4gICAgICAgICAgdGFibGVzID0gU29tZSB0YWJsZXM7XG4gICAgICAgICAgbWlzc2luZ3MgPSBncmFwaC5taXNzaW5ncztcbiAgICAgICAgICBmcmVlX2lkID0gZ3JhcGguZnJlZV9pZDtcbiAgICAgICAgfSApKVxuXG5sZXQgcmVtb3ZlX2xpbmsgYWcgcyBhZycgcycgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZykuKHMpIDwtIE5vbmUgaW5cbiAgICBsZXQgKCkgPSAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcnKS4ocycpIDwtIE5vbmUgaW5cbiAgICBsZXQgb3V0ID1cbiAgICAgIG1hdGNoIHRhYmxlcy5jb25uZWN0ZWRfY29tcG9uZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgY2NzIC0+XG4gICAgICAgIHNlcGFyYXRlX2Nvbm5lY3RlZF9jb21wb25lbnQgdGFibGVzLmNvbm5lY3QgdGFibGVzLmNhY2hlcyBjY3MgYWcgYWcnXG4gICAgaW5cbiAgICAoIHtcbiAgICAgICAgdGFibGVzID0gU29tZSB0YWJsZXM7XG4gICAgICAgIG1pc3NpbmdzID1cbiAgICAgICAgICBNb2RzLkludDJTZXQuYWRkIChhZywgcykgKE1vZHMuSW50MlNldC5hZGQgKGFnJywgcycpIGdyYXBoLm1pc3NpbmdzKTtcbiAgICAgICAgZnJlZV9pZCA9IGdyYXBoLmZyZWVfaWQ7XG4gICAgICB9LFxuICAgICAgb3V0IClcblxubGV0IGlzX2FnZW50IChhZywgdHkpIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludDJTZXQuaXNfZW1wdHkgZ3JhcGgubWlzc2luZ3MpIGluXG4gICAgKG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zb3J0IGFnIHdpdGhcbiAgICB8IFNvbWUgdHknIC0+XG4gICAgICBsZXQgKCkgPSBhc3NlcnQgKHR5ID0gdHknKSBpblxuICAgICAgdHJ1ZVxuICAgIHwgTm9uZSAtPiBmYWxzZSlcblxubGV0IGlzX2FnZW50X2lkIGFnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludDJTZXQuaXNfZW1wdHkgZ3JhcGgubWlzc2luZ3MpIGluXG4gICAgTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnNvcnQgYWcgPD4gTm9uZVxuXG5sZXQgaXNfZnJlZSBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludDJTZXQuaXNfZW1wdHkgZ3JhcGgubWlzc2luZ3MpIGluXG4gICAgbGV0IHQgPSBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZyBpblxuICAgIHQgPD4gW3x8XSAmJiB0LihzKSA9IE5vbmVcblxubGV0IGlzX2ludGVybmFsIGkgYWcgcyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGFzc2VydCAoTW9kcy5JbnQyU2V0LmlzX2VtcHR5IGdyYXBoLm1pc3NpbmdzKSBpblxuICAgIGxldCB0ID0gTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnN0YXRlIGFnIGluXG4gICAgdCA8PiBbfHxdXG4gICAgJiZcbiAgICAobWF0Y2ggdC4ocykgd2l0aFxuICAgIHwgU29tZSBqIC0+IGogPSBpXG4gICAgfCBOb25lIC0+IGZhbHNlKVxuXG5sZXQgbGlua19leGlzdHMgYWcgcyBhZycgcycgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBhc3NlcnQgKE1vZHMuSW50MlNldC5pc19lbXB0eSBncmFwaC5taXNzaW5ncykgaW5cbiAgICBsZXQgdCA9IE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnIGluXG4gICAgdCA8PiBbfHxdXG4gICAgJiZcbiAgICAobWF0Y2ggdC4ocykgd2l0aFxuICAgIHwgU29tZSAoKGFnJycsIF8pLCBzJycpIC0+IGFnJyA9IGFnJycgJiYgcycgPSBzJydcbiAgICB8IE5vbmUgLT4gZmFsc2UpXG5cbmxldCBleGlzdHNfZnJlc2ggYWcgcyB0eSBzJyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGFzc2VydCAoTW9kcy5JbnQyU2V0LmlzX2VtcHR5IGdyYXBoLm1pc3NpbmdzKSBpblxuICAgIGxldCB0ID0gTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcgaW5cbiAgICBpZiB0ID0gW3x8XSB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCB0LihzKSB3aXRoXG4gICAgICB8IFNvbWUgKChhZycsIHR5JyksIHMnJykgLT5cbiAgICAgICAgaWYgdHknID0gdHkgJiYgcycgPSBzJycgdGhlblxuICAgICAgICAgIFNvbWUgYWcnXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgIClcblxubGV0IGxpbmtfZGVzdGluYXRpb24gYWcgcyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPiAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcpLihzKVxuXG5sZXQgaXRlcl9uZWlnaGJvcnMgZiBhZyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCBhZ190YWJsZSA9IE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnIGluXG4gICAgQXJyYXkuaXRlclxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgcyAtPiBmIChmc3QgcykpXG4gICAgICBhZ190YWJsZVxuXG5sZXQgYWxsX2FnZW50c193aGVyZSBmIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0IG91dCA9IEludENvbGxlY3Rpb24uY3JlYXRlIDAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kcy5EeW5BcnJheS5pdGVyaVxuICAgICAgICAoZnVuIGlkIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBTb21lIHR5IHdoZW4gZiAoaWQsIHR5KSAtPiBJbnRDb2xsZWN0aW9uLmFkZCBpZCBvdXRcbiAgICAgICAgICB8IF8gLT4gKCkpXG4gICAgICAgIHRhYmxlcy5zb3J0XG4gICAgaW5cbiAgICBvdXRcblxubGV0IGluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudCBhZyBhZycgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICAobWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgIFwiaW5fc2FtZV9jb25uZWN0ZWRfY29tcG9uZW50IHdoaWxlIG5vdCB0cmFja2luZyBjY3NcIikpXG4gICAgfCBTb21lIGNjcyAtPiBNb2RzLkR5bkFycmF5LmdldCBjY3MgYWcgPSBNb2RzLkR5bkFycmF5LmdldCBjY3MgYWcnKVxuXG5sZXQgZ2V0X2Nvbm5lY3RlZF9jb21wb25lbnQgYWcgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICAobWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgIFwiZ2V0X2Nvbm5lY3RlZF9jb21wb25lbnQgd2hpbGUgbm90IHRyYWNraW5nIGNjc1wiKSlcbiAgICB8IFNvbWUgY2NzIC0+IE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBhZylcblxuKCoqIFRoZSBzbmFwc2hvdCBtYWNoaW5lcnkgKilcbmxldCBvbmVfY29ubmVjdGVkX2NvbXBvbmVudCAoc2lncyA6IFNpZ25hdHVyZS5zKSAodHkgOiBpbnQpIChub2RlIDogaW50KVxuICAgIChncmFwaCA6IHRhYmxlcykgOiBTbmFwc2hvdC5jY19ub2RlIGFycmF5ID1cbiAgbGV0IHJlYyBidWlsZCAoaWQgOiBpbnQpXG4gICAgICAoYWNjIDogKGludCAqIGludCAqIChFZGdlLnQgb3B0aW9uICogaW50IG9wdGlvbikgbGlzdCkgbGlzdClcbiAgICAgIChrbm93biA6IGludCBNb2RzLkludE1hcC50KSA6IChpbnQgKiBpbnQpIGxpc3QgLT4gU25hcHNob3QuY2Nfbm9kZSBhcnJheSA9XG4gICAgZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBUb29scy5hcnJheV9yZXZfbWFwX29mX2xpc3RcbiAgICAgICAgKGZ1biAobm9kZV9pZF9pbl93aXRuZXNzLCBub2RlX3R5cGUsIHNpdGVzKSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFNuYXBzaG90Lm5vZGVfaWRfaW5fd2l0bmVzcztcbiAgICAgICAgICAgIFNuYXBzaG90Lm5vZGVfdHlwZTtcbiAgICAgICAgICAgIFNuYXBzaG90Lm5vZGVfc2l0ZXMgPVxuICAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGxpbmssIHNpdGVfc3RhdGUpIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFNuYXBzaG90LnNpdGVfbGluayA9XG4gICAgICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuICgobiwgXyksIHMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCAoLTEpIG4ga25vd24sIHMpXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rO1xuICAgICAgICAgICAgICAgICAgICBTbmFwc2hvdC5zaXRlX3N0YXRlO1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBzaXRlcztcbiAgICAgICAgICB9KVxuICAgICAgICBhY2NcbiAgICB8IChub2RlLCB0eSkgOjogdG9kb3MgLT5cbiAgICAgIGlmIENhY2hlLnRlc3QgKGZzdCBncmFwaC5jYWNoZXMpIG5vZGUgdGhlblxuICAgICAgICBidWlsZCBpZCBhY2Mga25vd24gdG9kb3NcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBNb2RzLkR5bkFycmF5LmdldCBncmFwaC5zb3J0IG5vZGUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJFZGdlcy5vbmVfY29ubmVjdGVkX2NvbXBvbmVudFwiXG4gICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgbGV0ICgpID0gQ2FjaGUubWFyayAoZnN0IGdyYXBoLmNhY2hlcykgbm9kZSBpblxuICAgICAgICAgIGxldCBrbm93bicgPSBNb2RzLkludE1hcC5hZGQgbm9kZSBpZCBrbm93biBpblxuICAgICAgICAgIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIHR5IGluXG4gICAgICAgICAgbGV0IHRvZG9zJywgcG9ydHMgPVxuICAgICAgICAgICAgVG9vbHMucmVjdGlcbiAgICAgICAgICAgICAgKGZ1biAodG9kb3MsIGFjYykgaSAtPlxuICAgICAgICAgICAgICAgIGxldCBsaW5rID0gKE1vZHMuRHluQXJyYXkuZ2V0IGdyYXBoLmNvbm5lY3Qgbm9kZSkuKGkpIGluXG4gICAgICAgICAgICAgICAgKCAobWF0Y2ggbGluayB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gdG9kb3NcbiAgICAgICAgICAgICAgICAgIHwgU29tZSAoKChuJywgXykgYXMgcCksIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIE1vZHMuSW50TWFwLm1lbSBuJyBrbm93bicgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIHRvZG9zXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBwIDo6IHRvZG9zKSxcbiAgICAgICAgICAgICAgICAgIChsaW5rLCAoTW9kcy5EeW5BcnJheS5nZXQgZ3JhcGguc3RhdGUgbm9kZSkuKGkpKSA6OiBhY2MgKSlcbiAgICAgICAgICAgICAgKHRvZG9zLCBbXSkgYXJpdHlcbiAgICAgICAgICBpblxuICAgICAgICAgIGJ1aWxkIChzdWNjIGlkKSAoKG5vZGUsIHR5LCBwb3J0cykgOjogYWNjKSBrbm93bicgdG9kb3MnXG4gICAgICApXG4gIGluXG4gIGJ1aWxkIDAgW10gTW9kcy5JbnRNYXAuZW1wdHkgWyBub2RlLCB0eSBdXG5cbmxldCBzcGVjaWVzIH5kZWJ1Z19tb2RlIHNpZ3Mgcm9vdCBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCBzcGVjaWUgPVxuICAgICAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnNvcnQgcm9vdCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgIChcIlNvcnQgb2Ygbm9kZSB1bmF2YWlsYWJsZSBcIiBeIHN0cmluZ19vZl9pbnQgcm9vdCkpKVxuICAgICAgfCBTb21lIHR5IC0+XG4gICAgICAgIFNuYXBzaG90LmNjX3RvX3VzZXJfY2MgfmRlYnVnX21vZGUgfnJhdzp0cnVlIHNpZ3NcbiAgICAgICAgICAob25lX2Nvbm5lY3RlZF9jb21wb25lbnQgc2lncyB0eSByb290IHRhYmxlcylcbiAgICBpblxuICAgIGxldCAoKSA9IENhY2hlLnJlc2V0IChmc3QgdGFibGVzLmNhY2hlcykgaW5cbiAgICBzcGVjaWVcblxubGV0IHJlYyBhdXhfYnVpbGRfc25hcHNob3QgKHJhdyA6IGJvb2wpIChzaWdzIDogU2lnbmF0dXJlLnMpICh0YWJsZXMgOiB0YWJsZXMpXG4gICAgKGNjcyA6IFNuYXBzaG90LnQpIChub2RlIDogaW50KSA6IFNuYXBzaG90LnQgPVxuICBpZiBub2RlID0gTW9kcy5EeW5BcnJheS5sZW5ndGggdGFibGVzLnNvcnQgdGhlbiAoXG4gICAgKCogV2Ugd2VudCB0aHJvdWdoIGFsbCBub2Rlcywgd2UgcmV0dXJuIHRoZSBmdWxsIHNuYXBzaG90ICopXG4gICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgKGZzdCB0YWJsZXMuY2FjaGVzKSBpblxuICAgIGNjc1xuICApIGVsc2UgaWYgQ2FjaGUudGVzdCAoZnN0IHRhYmxlcy5jYWNoZXMpIG5vZGUgdGhlblxuICAgICgqIEFscmVhZHkgaW4gY2FjaGUsIHdlIGNvbnRpbnVlIHRvIHRoZSBuZXh0IG5vZGUgKilcbiAgICBhdXhfYnVpbGRfc25hcHNob3QgcmF3IHNpZ3MgdGFibGVzIGNjcyAoc3VjYyBub2RlKVxuICBlbHNlIChcbiAgICBtYXRjaCBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc29ydCBub2RlIHdpdGhcbiAgICB8IE5vbmUgLT4gYXV4X2J1aWxkX3NuYXBzaG90IHJhdyBzaWdzIHRhYmxlcyBjY3MgKHN1Y2Mgbm9kZSlcbiAgICB8IFNvbWUgKHR5IDogaW50KSAtPlxuICAgICAgbGV0IG91dCA9IG9uZV9jb25uZWN0ZWRfY29tcG9uZW50IHNpZ3MgdHkgbm9kZSB0YWJsZXMgaW5cbiAgICAgIGF1eF9idWlsZF9zbmFwc2hvdCByYXcgc2lncyB0YWJsZXNcbiAgICAgICAgKFNuYXBzaG90LmluY3JlbWVudF9pbl9zbmFwc2hvdCB+cmF3IHNpZ3Mgb3V0IGNjcylcbiAgICAgICAgKHN1Y2Mgbm9kZSlcbiAgKVxuXG5sZXQgYnVpbGRfc25hcHNob3QgfihyYXcgOiBib29sKSAoc2lncyA6IFNpZ25hdHVyZS5zKSAoZ3JhcGggOiB0KSA6IFNuYXBzaG90LnQgPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT4gYXV4X2J1aWxkX3NuYXBzaG90IHJhdyBzaWdzIHRhYmxlcyBTbmFwc2hvdC5lbXB0eSAwXG5cbmxldCBidWlsZF91c2VyX3NuYXBzaG90IH4oZGVidWdfbW9kZSA6IGJvb2wpIH4ocmF3IDogYm9vbCkgKHNpZ3MgOiBTaWduYXR1cmUucylcbiAgICAoZ3JhcGggOiB0KSA6IChpbnQgKiBVc2VyX2dyYXBoLmNvbm5lY3RlZF9jb21wb25lbnQpIGxpc3QgPVxuICBTbmFwc2hvdC5leHBvcnQgfmRlYnVnX21vZGUgfnJhdyBzaWdzIChidWlsZF9zbmFwc2hvdCB+cmF3IHNpZ3MgZ3JhcGgpXG5cbmxldCBkZWJ1Z19wcmludCBmIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJPVVREQVRFREAgXCJcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCBwcmludF9zaXRlcyBhZyA9XG4gICAgICBQcC5hcnJheSBQcC5jb21tYSAoZnVuIHMgZiBsIC0+XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVpJXQldFwiIHNcbiAgICAgICAgICAgIChtYXRjaCAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnN0YXRlIGFnKS4ocykgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGludCAtPiBmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwifiVpXCIgaW50XG4gICAgICAgICAgICB8IE5vbmUgLT4gZnVuIF8gLT4gKCkpXG4gICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIGlmIE1vZHMuSW50MlNldC5tZW0gKGFnLCBzKSBncmFwaC5taXNzaW5ncyB0aGVuXG4gICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCI/XCJcbiAgICAgICAgICAgICAgfCBTb21lICgoYWcnLCB0eScpLCBzJykgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLT4laTolaS4laVwiIGFnJyB0eScgcycpKVxuICAgIGluXG4gICAgTW9kcy5EeW5BcnJheS5wcmludCBQcC5lbXB0eVxuICAgICAgKGZ1biBhZyBmIGEgLT5cbiAgICAgICAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnNvcnQgYWcgd2l0aFxuICAgICAgICB8IFNvbWUgdHkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVpOiVpKEBbJWFAXSlAIFwiIGFnIHR5IChwcmludF9zaXRlcyBhZykgYVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBhID0gW3x8XSB0aGVuXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlaTpOT1RZUEUoQFslYUBdKUAgXCIgYWcgKHByaW50X3NpdGVzIGFnKSBhKVxuICAgICAgZiB0YWJsZXMuY29ubmVjdFxuXG50eXBlIHBhdGggPSAoKEFnZW50LnQgKiBpbnQpICogKEFnZW50LnQgKiBpbnQpKSBsaXN0XG4oKiogKChhZ2VudF9pZCwgYWdlbnRfbmFtZSksc2l0ZV9uYW1lKSAqKVxuXG5sZXQgcmVjIHByaW50X3BhdGggP3NpZ3MgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gUHAuZW1wdHlfc2V0IGZcbiAgfCBbICgoYWcsIHMpLCAoYWcnLCBzJykpIF0gLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWFALC0lYS4lYVwiXG4gICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFnXG4gICAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBhZylcbiAgICAgIHNcbiAgICAgIChBZ2VudC5wcmludF9zaXRlID9zaWdzIGFnJylcbiAgICAgIHMnXG4gICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFnJ1xuICB8ICgoYWcsIHMpLCAoKChwJywgXykgYXMgYWcnKSwgcycpKSA6OiAoKCgocCcnLCBfKSwgXyksIF8pIDo6IF8gYXMgbCkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWFALC0lYS4ldCVhXCJcbiAgICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKVxuICAgICAgYWdcbiAgICAgIChBZ2VudC5wcmludF9zaXRlID9zaWdzIGFnKVxuICAgICAgc1xuICAgICAgKEFnZW50LnByaW50X3NpdGUgP3NpZ3MgYWcnKVxuICAgICAgcydcbiAgICAgIChmdW4gZiAtPlxuICAgICAgICBpZiBwJyA8PiBwJycgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSMjXCIgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpIGFnJylcbiAgICAgIChwcmludF9wYXRoID9zaWdzKSBsXG5cbmxldCBlbXB0eV9wYXRoID0gW11cbmxldCBzaW5nbGV0b25fcGF0aCBuIHMgbicgcycgPSBbIChuLCBzKSwgKG4nLCBzJykgXVxubGV0IHJldl9wYXRoIGwgPSBMaXN0LnJldl9tYXAgKGZ1biAoeCwgeSkgLT4geSwgeCkgbFxuXG5sZXQgaXNfdmFsaWRfcGF0aCBwIGdyYXBoID1cbiAgTGlzdC5mb3JfYWxsXG4gICAgKGZ1biAoKChhZywgXyksIHMpLCAoKGFnJywgXyksIHMnKSkgLT4gbGlua19leGlzdHMgYWcgcyBhZycgcycgZ3JhcGgpXG4gICAgcFxuXG5sZXQgYnJlYWR0aF9maXJzdF90cmF2ZXJzYWwgfmxvb3BpbmcgP21heF9kaXN0YW5jZSBzdG9wX29uX2ZpbmQgaXNfaW50ZXJlc3RpbmdcbiAgICBsaW5rcyBjYWNoZSBvdXQgdG9kb3MgPVxuICBsZXQgcmVjIGxvb2tfZWFjaF9zaXRlICgoKChpZCwgXykgYXMgYWcpLCBwYXRoKSBhcyB4KSBzaXRlXG4gICAgICAoKG91dCwgbmV4dCkgYXMgYWNjKSA9XG4gICAgaWYgc2l0ZSA9IDAgdGhlblxuICAgICAgU29tZSAoZmFsc2UsIG91dCwgbmV4dClcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIChNb2RzLkR5bkFycmF5LmdldCBsaW5rcyBpZCkuKHByZWQgc2l0ZSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb2tfZWFjaF9zaXRlIHggKHByZWQgc2l0ZSkgYWNjXG4gICAgICB8IFNvbWUgKCgoKGlkJywgXykgYXMgYWcnKSwgc2l0ZScpIGFzIHkpIC0+XG4gICAgICAgIGlmIGFnJyA9IGZzdCBsb29waW5nICYmIHNpdGUnIDw+IHNuZCBsb29waW5nIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2UgaWYgQ2FjaGUudGVzdCBjYWNoZSBpZCcgdGhlblxuICAgICAgICAgIGxvb2tfZWFjaF9zaXRlIHggKHByZWQgc2l0ZSkgYWNjXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IENhY2hlLm1hcmsgY2FjaGUgaWQnIGluXG4gICAgICAgICAgbGV0IHBhdGgnID0gKHksIChhZywgcHJlZCBzaXRlKSkgOjogcGF0aCBpblxuICAgICAgICAgIGxldCBuZXh0JyA9IChhZycsIHBhdGgnKSA6OiBuZXh0IGluXG4gICAgICAgICAgbGV0IG91dCcsIHN0b3JlID1cbiAgICAgICAgICAgIG1hdGNoIGlzX2ludGVyZXN0aW5nIGFnJyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiAoKHgsIGlkJyksIHBhdGgnKSA6OiBvdXQsIHRydWVcbiAgICAgICAgICAgIHwgTm9uZSAtPiBvdXQsIGZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBzdG9yZSAmJiBzdG9wX29uX2ZpbmQgdGhlblxuICAgICAgICAgICAgU29tZSAodHJ1ZSwgb3V0JywgbmV4dCcpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbG9va19lYWNoX3NpdGUgeCAocHJlZCBzaXRlKSAob3V0JywgbmV4dCcpXG4gICAgICAgIClcbiAgICApXG4gIGluXG4gICgqIGRlcHRoID0gbnVtYmVyIG9mIGVkZ2VzIGJldHdlZW4gcm9vdCBhbmQgbm9kZSAqKVxuICBsZXQgcmVjIGF1eCBkZXB0aCBvdXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCAoKChpZCwgXyksIF8pIGFzIHgpIDo6IHRvZG9zIC0+XG4gICAgICAobWF0Y2hcbiAgICAgICAgIGxvb2tfZWFjaF9zaXRlIHggKEFycmF5Lmxlbmd0aCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpKSAob3V0LCBuZXh0KVxuICAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIChzdG9wLCBvdXQnLCBuZXh0JykgLT5cbiAgICAgICAgaWYgc3RvcCB0aGVuXG4gICAgICAgICAgb3V0J1xuICAgICAgICBlbHNlXG4gICAgICAgICAgYXV4IGRlcHRoIG91dCcgbmV4dCcgdG9kb3MpXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIG5leHQgd2l0aFxuICAgICAgfCBbXSAtPiBvdXRcbiAgICAgICgqIGVuZCB3aGVuIGFsbCBncmFwaCB0cmF2ZXJzZWQgYW5kIHJldHVybiB0aGUgbGlzdCBvZiBwYXRocyAqKVxuICAgICAgfCBfIC0+XG4gICAgICAgIChtYXRjaCBtYXhfZGlzdGFuY2Ugd2l0aFxuICAgICAgICB8IFNvbWUgZCB3aGVuIGQgPD0gZGVwdGggLT4gb3V0XG4gICAgICAgICgqIHN0b3Agd2hlbiB0aGUgbWF4IGRpc3RhbmNlIGlzIHJlYWNoZWQgKilcbiAgICAgICAgfCBTb21lIF8gLT4gYXV4IChkZXB0aCArIDEpIG91dCBbXSBuZXh0XG4gICAgICAgIHwgTm9uZSAtPiBhdXggZGVwdGggb3V0IFtdIG5leHQpKVxuICBpblxuICBhdXggMSBvdXQgW10gdG9kb3NcblxuKCogbm9kZXNfeDogYWdlbnRfaWQgbGlzdCA9IChpbnQgKiBpbnQpIGxpc3RcbiAgIG5vZGVzX3k6IGFkZW50X2lkIGxpc3QgPSBpbnQgbGlzdCAqKVxubGV0IGFyZV9jb25uZWN0ZWQgP21heF9kaXN0YW5jZSBncmFwaCBub2Rlc194IG5vZGVzX3kgPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBpZlxuICAgICAgaW5fc2FtZV9jb25uZWN0ZWRfY29tcG9uZW50XG4gICAgICAgIChmc3QgKExpc3QuaGQgbm9kZXNfeCkpXG4gICAgICAgIChmc3QgKExpc3QuaGQgbm9kZXNfeSkpXG4gICAgICAgIGdyYXBoXG4gICAgdGhlbiAoXG4gICAgICAoKiBsb29rIGZvciB0aGUgY2xvc2VzdCBub2RlIGluIG5vZGVzX3kgKilcbiAgICAgIGxldCBpc19pbl9ub2Rlc195IHogPVxuICAgICAgICBpZiBMaXN0Lm1lbSB6IG5vZGVzX3kgdGhlblxuICAgICAgICAgIFNvbWUgKClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgICAgIGluXG4gICAgICAoKiBicmVhZHRoIGZpcnN0IHNlYXJjaCBpcyBjYWxsZWQgb24gYSBsaXN0IG9mIHNpdGVzO1xuICAgICAgICAgc3RhcnQgdGhlIGJyZWFkdGggZmlyc3Qgc2VhcmNoIHdpdGggdGhlIGJvdW5kYXJpZXMgb2Ygbm9kZXNfeCxcbiAgICAgICAgIHRoYXQgaXMgYWxsIHNpdGVzIHRoYXQgYXJlIGNvbm5lY3RlZCB0byBvdGhlciBub2RlcyBpbiB4XG4gICAgICAgICBhbmQgd2l0aCBhbGwgbm9kZXMgaW4gbm9kZXNfeCBtYXJrZWQgYXMgZG9uZSAqKVxuICAgICAgbGV0IHByZXBhcmUgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjICgoaWQsIF8pIGFzIGFnKSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gQ2FjaGUubWFyayAoZnN0IHRhYmxlcy5jYWNoZXMpIGlkIGluXG4gICAgICAgICAgICAoYWcsIFtdKSA6OiBhY2MpXG4gICAgICAgICAgW10gbm9kZXNfeFxuICAgICAgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIGJyZWFkdGhfZmlyc3RfdHJhdmVyc2FsXG4gICAgICAgICAgfmxvb3Bpbmc6KCgtMSwgLTEpLCAtMSlcbiAgICAgICAgICA/bWF4X2Rpc3RhbmNlIHRydWUgaXNfaW5fbm9kZXNfeSB0YWJsZXMuY29ubmVjdCAoZnN0IHRhYmxlcy5jYWNoZXMpIFtdXG4gICAgICAgICAgcHJlcGFyZVxuICAgICAgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCAoZnN0IHRhYmxlcy5jYWNoZXMpIGluXG4gICAgICAgIE5vbmVcbiAgICAgIHwgWyAoXywgcCkgXSAtPlxuICAgICAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCAoZnN0IHRhYmxlcy5jYWNoZXMpIGluXG4gICAgICAgIFNvbWUgcFxuICAgICAgfCBfIDo6IF8gLT4gZmFpbHdpdGggXCJFZGdlcy5hcmVfdGhleV9jb25uZWN0ZWQgY29tcGxldGVseSBicm9rZW5cIlxuICAgICkgZWxzZVxuICAgICAgTm9uZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBhYnN0cmFjdCA9IEV4aXN0aW5nIG9mIGludCB8IEZyZXNoIG9mIEFnZW50LnRcbnR5cGUgJ2EgcG9ydCA9ICdhICogaW50XG50eXBlICdhIGFycm93ID0gVG9Ob2RlIG9mICdhIHBvcnQgfCBUb05vdGhpbmcgfCBUb0ludGVybmFsIG9mIGludFxudHlwZSAnYSBzdGVwID0gJ2EgcG9ydCAqICdhIGFycm93XG50eXBlICdhIHQgPSAnYSBzdGVwIGxpc3RcblxubGV0IHByaW50X2lkIHNpZ3MgZiA9IGZ1bmN0aW9uXG4gIHwgRXhpc3RpbmcgaWQgLT4gRm9ybWF0LnBwX3ByaW50X2ludCBmIGlkXG4gIHwgRnJlc2ggKGlkLCB0eSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiISVhLSVpXCIgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKSB0eSBpZFxuXG5sZXQgcHJpbnRfaWRfc2l0ZSA/c291cmNlIHNpZ3MgZmluZF90eSBuID1cbiAgbGV0IHR5ID1cbiAgICBtYXRjaCBuIHdpdGhcbiAgICB8IEZyZXNoIChfLCB0eSkgLT4gdHlcbiAgICB8IEV4aXN0aW5nIGlkIC0+XG4gICAgICAobWF0Y2ggc291cmNlIHdpdGhcbiAgICAgIHwgU29tZSAoRnJlc2ggKGlkJywgdHkpKSB3aGVuIGlkID0gaWQnIC0+IHR5XG4gICAgICB8IE5vbmUgfCBTb21lIChGcmVzaCBfIHwgRXhpc3RpbmcgXykgLT4gZmluZF90eSBpZClcbiAgaW5cbiAgU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyB0eVxuXG5sZXQgcHJpbnRfaWRfaW50ZXJuYWxfc3RhdGUgc2lncyBmaW5kX3R5IG4gPVxuICBTaWduYXR1cmUucHJpbnRfc2l0ZV9pbnRlcm5hbF9zdGF0ZSBzaWdzXG4gICAgKG1hdGNoIG4gd2l0aFxuICAgIHwgRXhpc3RpbmcgaWQgLT4gZmluZF90eSBpZFxuICAgIHwgRnJlc2ggKF8sIHR5KSAtPiB0eSlcblxubGV0IGlkX3VwX3RvX2FscGhhX3RvX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgRXhpc3RpbmcgaSAtPiBgSW50IGlcbiAgfCBGcmVzaCBmIC0+IEFnZW50LnRvX2pzb24gZlxuXG5sZXQgaWRfdXBfdG9fYWxwaGFfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gRXhpc3RpbmcgaVxuICB8IHggLT4gRnJlc2ggKEFnZW50Lm9mX2pzb24geClcblxubGV0IHBvcnRfdG9feW9qc29uIChhLCBzKSA9IGBMaXN0IFsgaWRfdXBfdG9fYWxwaGFfdG9feW9qc29uIGE7IGBJbnQgcyBdXG5cbmxldCBwb3J0X29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBhOyBgSW50IHMgXSAtPiBpZF91cF90b19hbHBoYV9vZl95b2pzb24gYSwgc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IG5hdmlnYXRpb24gcG9ydFwiLCB4KSlcblxubGV0IGFycm93X3RvX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgVG9Ob2RlIHAgLT4gcG9ydF90b195b2pzb24gcFxuICB8IFRvTm90aGluZyAtPiBgTnVsbFxuICB8IFRvSW50ZXJuYWwgaSAtPiBgSW50IGlcblxubGV0IGFycm93X29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gVG9Ob3RoaW5nXG4gIHwgYEludCBpIC0+IFRvSW50ZXJuYWwgaVxuICB8IHggLT4gVG9Ob2RlIChwb3J0X29mX3lvanNvbiB4KVxuXG5sZXQgc3RlcF90b195b2pzb24gKHAsIGEpID0gYExpc3QgWyBwb3J0X3RvX3lvanNvbiBwOyBhcnJvd190b195b2pzb24gYSBdXG5cbmxldCBzdGVwX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBwOyBhIF0gLT4gcG9ydF9vZl95b2pzb24gcCwgYXJyb3dfb2ZfeW9qc29uIGFcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBuYXZpZ2F0aW9uIHN0ZXBcIiwgeCkpXG5cbmxldCB0b195b2pzb24gbCA9IGBMaXN0IChMaXN0Lm1hcCBzdGVwX3RvX3lvanNvbiBsKVxuXG5sZXQgb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIHN0ZXBfb2ZfeW9qc29uIGxcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBuYXZpZ2F0aW9uXCIsIHgpKVxuXG5sZXQgZXh0ZW5kIGYgPSBmdW5jdGlvblxuICB8IEV4aXN0aW5nIF8gLT4gZlxuICB8IEZyZXNoIChpZCwgdHkpIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGlmIHggPSBpZCB0aGVuXG4gICAgICAgIHR5XG4gICAgICBlbHNlXG4gICAgICAgIGYgeFxuXG5sZXQgcmVjIHByaW50IHNpZ3MgZmluZF90eSBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8ICgoc291cmNlLCBzaXRlKSwgVG9Ob3RoaW5nKSA6OiB0IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIi0lYSglYVsuXSktPiVhXCIgKHByaW50X2lkIHNpZ3MpIHNvdXJjZVxuICAgICAgKHByaW50X2lkX3NpdGUgc2lncyBmaW5kX3R5IHNvdXJjZSlcbiAgICAgIHNpdGVcbiAgICAgIChwcmludCBzaWdzIChleHRlbmQgZmluZF90eSBzb3VyY2UpKVxuICAgICAgdFxuICB8ICgoc291cmNlLCBzaXRlKSwgVG9Ob2RlIChpZCwgcG9ydCkpIDo6IHQgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiLSVhKCVhWyVhLiVhXSktPiVhXCIgKHByaW50X2lkIHNpZ3MpIHNvdXJjZVxuICAgICAgKHByaW50X2lkX3NpdGUgc2lncyBmaW5kX3R5IHNvdXJjZSlcbiAgICAgIHNpdGVcbiAgICAgIChwcmludF9pZF9zaXRlIH5zb3VyY2Ugc2lncyBmaW5kX3R5IGlkKVxuICAgICAgcG9ydCAocHJpbnRfaWQgc2lncykgaWRcbiAgICAgIChwcmludCBzaWdzIChleHRlbmQgKGV4dGVuZCBmaW5kX3R5IGlkKSBzb3VyY2UpKVxuICAgICAgdFxuICB8ICgoc291cmNlLCBzaXRlKSwgVG9JbnRlcm5hbCBpKSA6OiB0IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIi0lYSglYSktPiVhXCIgKHByaW50X2lkIHNpZ3MpIHNvdXJjZVxuICAgICAgKHByaW50X2lkX2ludGVybmFsX3N0YXRlIHNpZ3MgZmluZF90eSBzb3VyY2Ugc2l0ZSlcbiAgICAgIChTb21lIGkpXG4gICAgICAocHJpbnQgc2lncyAoZXh0ZW5kIGZpbmRfdHkgc291cmNlKSlcbiAgICAgIHRcblxubGV0IGNvbXBhdGlibGVfZnJlc2hfcG9pbnQgfmRlYnVnX21vZGUgZSAoc2lkLCBzdHkpIHNzaXRlIGFycm93ID1cbiAgbWF0Y2ggZSwgYXJyb3cgd2l0aFxuICB8IF8sIFRvTm9kZSAoRXhpc3RpbmcgXywgXykgLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgXCJOYXZpZ2F0aW9uLmNvbXBhdGlibGVfZnJlc2hfcG9pbnQgZG9lcyBub3QgZGVhbCB3aXRoIGV4aXN0aW5nIFxcXG4gICAgICAgICAgICAgYXJyb3dcIikpXG4gIHwgKChGcmVzaCAoaWQsIHR5KSwgc2l0ZSksIHgpLCBUb05vdGhpbmcgLT5cbiAgICBpZiB0eSA9IHN0eSAmJiBzaXRlID0gc3NpdGUgJiYgeCA9IFRvTm90aGluZyB0aGVuIChcbiAgICAgIGxldCBpbmogPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICAgICAgaWYgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQgc2lkIGluaiB0aGVuXG4gICAgICAgIFNvbWUgaW5qXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICApIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoKEZyZXNoIChpZCwgdHkpLCBzaXRlKSwgeCksIFRvSW50ZXJuYWwgaSAtPlxuICAgIGlmIHR5ID0gc3R5ICYmIHNpdGUgPSBzc2l0ZSAmJiB4ID0gVG9JbnRlcm5hbCBpIHRoZW4gKFxuICAgICAgbGV0IGluaiA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gICAgICBpZiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCBzaWQgaW5qIHRoZW5cbiAgICAgICAgU29tZSBpbmpcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgICkgZWxzZVxuICAgICAgTm9uZVxuICB8ICggKChGcmVzaCAoaWQsIHR5KSwgc2l0ZSksIFRvTm9kZSAoRnJlc2ggKGlkJywgdHknKSwgc2l0ZScpKSxcbiAgICAgIFRvTm9kZSAoRnJlc2ggKHNpZCcsIHN0eScpLCBzc2l0ZScpICkgLT5cbiAgICAoKiBsaW5rIGJldHdlZW4gMiBhZ2VudHMgKilcbiAgICBpZiB0eSA9IHN0eSAmJiBzaXRlID0gc3NpdGUgJiYgdHknID0gc3R5JyAmJiBzaXRlJyA9IHNzaXRlJyB0aGVuIChcbiAgICAgIGxldCBpbmogPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICAgICAgaWYgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQgc2lkIGluaiB0aGVuXG4gICAgICAgIGlmIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkJyBzaWQnIGluaiB0aGVuXG4gICAgICAgICAgU29tZSBpbmpcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgICkgZWxzZSBpZiB0eSA9IHN0eScgJiYgc2l0ZSA9IHNzaXRlJyAmJiB0eScgPSBzdHkgJiYgc2l0ZScgPSBzc2l0ZSB0aGVuIChcbiAgICAgIGxldCBpbmogPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICAgICAgaWYgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQgc2lkJyBpbmogdGhlblxuICAgICAgICBpZiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCcgc2lkIGluaiB0aGVuXG4gICAgICAgICAgU29tZSBpbmpcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgICkgZWxzZVxuICAgICAgTm9uZVxuICB8ICggKCAoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb05vZGUgKEZyZXNoIChpZCcsIHR5KSwgc2l0ZScpXG4gICAgICB8IChGcmVzaCAoaWQnLCB0eSksIHNpdGUpLCBUb05vZGUgKEV4aXN0aW5nIGlkLCBzaXRlJykgKSxcbiAgICAgIFRvTm9kZSAoRnJlc2ggKHNpZCcsIHN0eScpLCBzc2l0ZScpICkgLT5cbiAgICAoKiBzZWxmLWxpbmsgaW4gYWdlbnQgKilcbiAgICBpZlxuICAgICAgKChzc2l0ZSA9IHNpdGUgJiYgc3NpdGUnID0gc2l0ZScpIHx8IChzc2l0ZScgPSBzaXRlICYmIHNzaXRlID0gc2l0ZScpKVxuICAgICAgJiYgaWQgPSBpZCcgJiYgc2lkID0gc2lkJyAmJiB0eSA9IHN0eSAmJiBzdHkgPSBzdHknXG4gICAgdGhlbiAoXG4gICAgICBsZXQgaW5qID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgICAgIGlmIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkIHNpZCBpbmogdGhlblxuICAgICAgICBTb21lIGlualxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgKSBlbHNlXG4gICAgICBOb25lXG4gIHwgKChFeGlzdGluZyBfLCBfKSwgXyksIF8gLT4gTm9uZVxuICB8ICgoRnJlc2ggXywgXyksIChUb05vdGhpbmcgfCBUb0ludGVybmFsIF8pKSwgVG9Ob2RlIF8gLT4gTm9uZVxuXG5sZXQgY29tcGF0aWJsZV9wb2ludCB+ZGVidWdfbW9kZSBpbmogZSBlJyA9XG4gIG1hdGNoIGUsIGUnIHdpdGhcbiAgfCAoKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob3RoaW5nKSwgZSAtPlxuICAgIGlmXG4gICAgICBSZW5hbWluZy5tZW0gaWQgaW5qXG4gICAgICAmJiBlID0gKChFeGlzdGluZyAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkKSwgc2l0ZSksIFRvTm90aGluZylcbiAgICB0aGVuXG4gICAgICBTb21lIGlualxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9JbnRlcm5hbCBpKSwgZSAtPlxuICAgIGlmXG4gICAgICBSZW5hbWluZy5tZW0gaWQgaW5qXG4gICAgICAmJiBlID0gKChFeGlzdGluZyAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkKSwgc2l0ZSksIFRvSW50ZXJuYWwgaSlcbiAgICB0aGVuXG4gICAgICBTb21lIGlualxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob2RlIChFeGlzdGluZyBpZCcsIHNpdGUnKSksIGUgLT5cbiAgICBpZlxuICAgICAgUmVuYW1pbmcubWVtIGlkIGluaiAmJiBSZW5hbWluZy5tZW0gaWQnIGlualxuICAgICAgJiYgKGVcbiAgICAgICAgICA9ICggKEV4aXN0aW5nIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQpLCBzaXRlKSxcbiAgICAgICAgICAgICAgVG9Ob2RlIChFeGlzdGluZyAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkJyksIHNpdGUnKSApXG4gICAgICAgICB8fCBlXG4gICAgICAgICAgICA9ICggKEV4aXN0aW5nIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQnKSwgc2l0ZScpLFxuICAgICAgICAgICAgICAgIFRvTm9kZSAoRXhpc3RpbmcgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCksIHNpdGUpICkpXG4gICAgdGhlblxuICAgICAgU29tZSBpbmpcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgKCAoKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob2RlIChGcmVzaCAoaWQnLCB0eSksIHNpdGUnKSksXG4gICAgICAoKEV4aXN0aW5nIHNpZCwgc3NpdGUpLCBUb05vZGUgKEZyZXNoIChzaWQnLCB0eScpLCBzc2l0ZScpKSApXG4gIHwgKCAoKEZyZXNoIChpZCcsIHR5KSwgc2l0ZSksIFRvTm9kZSAoRXhpc3RpbmcgaWQsIHNpdGUnKSksXG4gICAgICAoKEV4aXN0aW5nIHNpZCwgc3NpdGUpLCBUb05vZGUgKEZyZXNoIChzaWQnLCB0eScpLCBzc2l0ZScpKSApXG4gIHwgKCAoKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob2RlIChGcmVzaCAoaWQnLCB0eSksIHNpdGUnKSksXG4gICAgICAoKEZyZXNoIChzaWQnLCB0eScpLCBzc2l0ZSksIFRvTm9kZSAoRXhpc3Rpbmcgc2lkLCBzc2l0ZScpKSApXG4gIHwgKCAoKEZyZXNoIChpZCcsIHR5KSwgc2l0ZSksIFRvTm9kZSAoRXhpc3RpbmcgaWQsIHNpdGUnKSksXG4gICAgICAoKEZyZXNoIChzaWQnLCB0eScpLCBzc2l0ZSksIFRvTm9kZSAoRXhpc3Rpbmcgc2lkLCBzc2l0ZScpKSApIC0+XG4gICAgaWZcbiAgICAgIHR5JyA9IHR5XG4gICAgICAmJiAobm90IChSZW5hbWluZy5tZW0gaWQnIGluaikpXG4gICAgICAmJiAoKHNzaXRlID0gc2l0ZSAmJiBzc2l0ZScgPSBzaXRlJylcbiAgICAgICAgIHx8IChpZCA9IGlkJyAmJiBzc2l0ZSA9IHNpdGUnICYmIHNzaXRlJyA9IHNpdGUpKVxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkJyBzaWQnIGluaiB3aXRoXG4gICAgICB8IFNvbWUgaW5qJ1xuICAgICAgICB3aGVuIFJlbmFtaW5nLm1lbSBpZCBpbmonICYmIHNpZCA9IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgaWQgLT5cbiAgICAgICAgU29tZSBpbmonXG4gICAgICB8IF8gLT4gTm9uZVxuICAgICkgZWxzZVxuICAgICAgTm9uZVxuICB8ICgoRXhpc3RpbmcgXywgXyksIFRvTm9kZSAoRnJlc2ggXywgXykpLCAoKChGcmVzaCBfIHwgRXhpc3RpbmcgXyksIF8pLCBfKSAtPlxuICAgIE5vbmVcbiAgfCAoKEZyZXNoIChpZCwgdHkpLCBzaXRlKSwgVG9Ob3RoaW5nKSwgKChGcmVzaCAoaWQnLCB0eScpLCBzaXRlJyksIHgpIC0+XG4gICAgaWYgdHkgPSB0eScgJiYgc2l0ZSA9IHNpdGUnICYmIHggPSBUb05vdGhpbmcgJiYgbm90IChSZW5hbWluZy5tZW0gaWQgaW5qKVxuICAgIHRoZW5cbiAgICAgIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCBpZCcgaW5qXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8ICgoRnJlc2ggKGlkLCB0eSksIHNpdGUpLCBUb0ludGVybmFsIGkpLCAoKEZyZXNoIChpZCcsIHR5JyksIHNpdGUnKSwgeCkgLT5cbiAgICBpZiB0eSA9IHR5JyAmJiBzaXRlID0gc2l0ZScgJiYgeCA9IFRvSW50ZXJuYWwgaSAmJiBub3QgKFJlbmFtaW5nLm1lbSBpZCBpbmopXG4gICAgdGhlblxuICAgICAgUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkIGlkJyBpbmpcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgKCAoKEZyZXNoIChpZCwgdHkpLCBzaXRlKSwgVG9Ob2RlIChGcmVzaCAoaWQnLCB0eScpLCBzaXRlJykpLFxuICAgICAgKChGcmVzaCAoc2lkLCBzdHkpLCBzc2l0ZSksIFRvTm9kZSAoRnJlc2ggKHNpZCcsIHN0eScpLCBzc2l0ZScpKSApIC0+XG4gICAgaWYgKG5vdCAoUmVuYW1pbmcubWVtIGlkIGluaikpICYmIG5vdCAoUmVuYW1pbmcubWVtIGlkJyBpbmopIHRoZW5cbiAgICAgIGlmIHR5ID0gc3R5ICYmIHNpdGUgPSBzc2l0ZSAmJiB0eScgPSBzdHknICYmIHNpdGUnID0gc3NpdGUnIHRoZW4gKFxuICAgICAgICBtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQgc2lkIGluaiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBpbmonIC0+XG4gICAgICAgICAgKG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCcgc2lkJyBpbmonIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBpbmonJyAtPiBTb21lIGluaicnKVxuICAgICAgKSBlbHNlIGlmIHR5ID0gc3R5JyAmJiBzaXRlID0gc3NpdGUnICYmIHR5JyA9IHN0eSAmJiBzaXRlJyA9IHNzaXRlIHRoZW4gKFxuICAgICAgICBtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQgc2lkJyBpbmogd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgaW5qJyAtPlxuICAgICAgICAgIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQnIHNpZCBpbmonIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBpbmonJyAtPiBTb21lIGluaicnKVxuICAgICAgKSBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgKChGcmVzaCBfLCBfKSwgXyksICgoRnJlc2ggXywgXyksIF8pIC0+IE5vbmVcbiAgfCAoKEZyZXNoIF8sIF8pLCBfKSwgKChFeGlzdGluZyBfLCBfKSwgXykgLT4gTm9uZVxuXG5sZXQgcmVjIGF1eF9zdWIgfmRlYnVnX21vZGUgaW5qIGdvYWwgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgaCA6OiB0IC0+XG4gICAgKG1hdGNoIGNvbXBhdGlibGVfcG9pbnQgfmRlYnVnX21vZGUgaW5qIGggZ29hbCB3aXRoXG4gICAgfCBOb25lIC0+IGF1eF9zdWIgfmRlYnVnX21vZGUgaW5qIGdvYWwgKGggOjogYWNjKSB0XG4gICAgfCBTb21lIGluaicgLT4gU29tZSAoaW5qJywgTGlzdC5yZXZfYXBwZW5kIGFjYyB0KSlcblxubGV0IHJlYyBpc19zdWJuYXZpZ2F0aW9uIH5kZWJ1Z19tb2RlIGluaiBuYXYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFNvbWUgKGluaiwgbmF2KVxuICB8IGggOjogdCAtPlxuICAgIChtYXRjaCBhdXhfc3ViIH5kZWJ1Z19tb2RlIGluaiBoIFtdIG5hdiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKGluaicsIG5hdicpIC0+IGlzX3N1Ym5hdmlnYXRpb24gfmRlYnVnX21vZGUgaW5qJyBuYXYnIHQpXG5cbmxldCByZW5hbWVfaWQgfmRlYnVnX21vZGUgaW5qMmNjID0gZnVuY3Rpb25cbiAgfCBFeGlzdGluZyBuIC0+IGluajJjYywgRXhpc3RpbmcgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluajJjYyBuKVxuICB8IEZyZXNoIChpZCwgdHkpIC0+XG4gICAgbGV0IGltZyA9IFJlbmFtaW5nLmltYWdlIGluajJjYyBpblxuICAgIGxldCBpZCcgPVxuICAgICAgaWYgTW9kcy5JbnRTZXQubWVtIGlkIGltZyB0aGVuIChcbiAgICAgICAgbWF0Y2ggTW9kcy5JbnRTZXQubWF4X2VsdCBpbWcgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gMVxuICAgICAgICB8IFNvbWUgaSAtPiBzdWNjIGlcbiAgICAgICkgZWxzZVxuICAgICAgICBpZFxuICAgIGluXG4gICAgKG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCBpZCcgaW5qMmNjIHdpdGhcbiAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBTb21lIGluaicgLT4gaW5qJywgRnJlc2ggKGlkJywgdHkpKVxuXG5sZXQgcmVjIHJlbmFtZSB+ZGVidWdfbW9kZSBpbmoyY2MgPSBmdW5jdGlvblxuICB8IFtdIC0+IGluajJjYywgW11cbiAgfCAoKHgsIGkpLCAoKFRvTm90aGluZyB8IFRvSW50ZXJuYWwgXykgYXMgYSkpIDo6IHQgLT5cbiAgICBsZXQgaW5qLCB4JyA9IHJlbmFtZV9pZCB+ZGVidWdfbW9kZSBpbmoyY2MgeCBpblxuICAgIGxldCBpbmonLCB0JyA9IHJlbmFtZSB+ZGVidWdfbW9kZSBpbmogdCBpblxuICAgIGluaicsICgoeCcsIGkpLCBhKSA6OiB0J1xuICB8ICgoeCwgaSksIFRvTm9kZSAoeSwgaikpIDo6IHQgLT5cbiAgICBsZXQgaW5qLCB4JyA9IHJlbmFtZV9pZCB+ZGVidWdfbW9kZSBpbmoyY2MgeCBpblxuICAgIGxldCBpbmonLCB5JyA9IHJlbmFtZV9pZCB+ZGVidWdfbW9kZSBpbmogeSBpblxuICAgIGxldCBpbmonJywgdCcgPSByZW5hbWUgfmRlYnVnX21vZGUgaW5qJyB0IGluXG4gICAgaW5qJycsICgoeCcsIGkpLCBUb05vZGUgKHknLCBqKSkgOjogdCdcblxubGV0IGNoZWNrX2VkZ2UgZ3JhcGggPSBmdW5jdGlvblxuICB8IChGcmVzaCAoaWQsIF8pLCBzaXRlKSwgVG9Ob3RoaW5nIC0+IEVkZ2VzLmlzX2ZyZWUgaWQgc2l0ZSBncmFwaFxuICB8IChGcmVzaCAoaWQsIF8pLCBzaXRlKSwgVG9JbnRlcm5hbCBpIC0+IEVkZ2VzLmlzX2ludGVybmFsIGkgaWQgc2l0ZSBncmFwaFxuICB8IChGcmVzaCAoaWQsIF8pLCBzaXRlKSwgVG9Ob2RlIChFeGlzdGluZyBpZCcsIHNpdGUnKSAtPlxuICAgIEVkZ2VzLmxpbmtfZXhpc3RzIGlkIHNpdGUgaWQnIHNpdGUnIGdyYXBoXG4gIHwgKEZyZXNoIChpZCwgXyksIHNpdGUpLCBUb05vZGUgKEZyZXNoIChpZCcsIF8pLCBzaXRlJykgLT5cbiAgICBFZGdlcy5saW5rX2V4aXN0cyBpZCBzaXRlIGlkJyBzaXRlJyBncmFwaFxuICB8IChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm90aGluZyAtPiBFZGdlcy5pc19mcmVlIGlkIHNpdGUgZ3JhcGhcbiAgfCAoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb0ludGVybmFsIGkgLT4gRWRnZXMuaXNfaW50ZXJuYWwgaSBpZCBzaXRlIGdyYXBoXG4gIHwgKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob2RlIChFeGlzdGluZyBpZCcsIHNpdGUnKSAtPlxuICAgIEVkZ2VzLmxpbmtfZXhpc3RzIGlkIHNpdGUgaWQnIHNpdGUnIGdyYXBoXG4gIHwgKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob2RlIChGcmVzaCAoaWQnLCBfKSwgc2l0ZScpIC0+XG4gICAgRWRnZXMubGlua19leGlzdHMgaWQgc2l0ZSBpZCcgc2l0ZScgZ3JhcGhcblxuKCppbmogaXMgdGhlIHBhcnRpYWwgaW5qZWN0aW9uIGJ1aWx0IHNvIGZhcjogaW5qOmFicy0+Y29uY3JldGUqKVxubGV0IGRzdF9pc19va2F5IH5kZWJ1Z19tb2RlIGluaicgZ3JhcGggcm9vdCBzaXRlID0gZnVuY3Rpb25cbiAgfCBUb05vdGhpbmcgLT5cbiAgICBpZiBFZGdlcy5pc19mcmVlIHJvb3Qgc2l0ZSBncmFwaCB0aGVuXG4gICAgICBTb21lIGluaidcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgVG9JbnRlcm5hbCBpIC0+XG4gICAgaWYgRWRnZXMuaXNfaW50ZXJuYWwgaSByb290IHNpdGUgZ3JhcGggdGhlblxuICAgICAgU29tZSBpbmonXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8IFRvTm9kZSAoRXhpc3RpbmcgaWQnLCBzaXRlJykgLT5cbiAgICBpZlxuICAgICAgRWRnZXMubGlua19leGlzdHMgcm9vdCBzaXRlXG4gICAgICAgIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmonIGlkJylcbiAgICAgICAgc2l0ZScgZ3JhcGhcbiAgICB0aGVuXG4gICAgICBTb21lIGluaidcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgVG9Ob2RlIChGcmVzaCAoaWQnLCB0eSksIHNpdGUnKSAtPlxuICAgIChtYXRjaCBFZGdlcy5leGlzdHNfZnJlc2ggcm9vdCBzaXRlIHR5IHNpdGUnIGdyYXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBub2RlIC0+IFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCcgbm9kZSBpbmonKVxuXG5sZXQgaW5qZWN0aW9uX2Zvcl9vbmVfbW9yZV9lZGdlIH5kZWJ1Z19tb2RlID9yb290IGluaiBncmFwaCA9IGZ1bmN0aW9uXG4gIHwgKEV4aXN0aW5nIGlkLCBzaXRlKSwgZHN0IC0+XG4gICAgZHN0X2lzX29rYXkgfmRlYnVnX21vZGUgaW5qIGdyYXBoXG4gICAgICAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkKVxuICAgICAgc2l0ZSBkc3RcbiAgfCAoRnJlc2ggKGlkLCBydHkpLCBzaXRlKSwgZHN0IC0+XG4gICAgKG1hdGNoIHJvb3Qgd2l0aFxuICAgIHwgU29tZSAocm9vdCwgcnR5Jykgd2hlbiBydHkgPSBydHknIC0+XG4gICAgICAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkIHJvb3QgaW5qIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgaW5qJyAtPiBkc3RfaXNfb2theSB+ZGVidWdfbW9kZSBpbmonIGdyYXBoIHJvb3Qgc2l0ZSBkc3QpXG4gICAgfCBfIC0+IE5vbmUpXG5cbmxldCBpbXBlcmF0aXZlX2RzdF9pc19va2F5IH5kZWJ1Z19tb2RlIGluaicgZ3JhcGggcm9vdCBzaXRlID0gZnVuY3Rpb25cbiAgfCBUb05vdGhpbmcgLT4gRWRnZXMuaXNfZnJlZSByb290IHNpdGUgZ3JhcGhcbiAgfCBUb0ludGVybmFsIGkgLT4gRWRnZXMuaXNfaW50ZXJuYWwgaSByb290IHNpdGUgZ3JhcGhcbiAgfCBUb05vZGUgKEV4aXN0aW5nIGlkJywgc2l0ZScpIC0+XG4gICAgRWRnZXMubGlua19leGlzdHMgcm9vdCBzaXRlXG4gICAgICAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qJyBpZCcpXG4gICAgICBzaXRlJyBncmFwaFxuICB8IFRvTm9kZSAoRnJlc2ggKGlkJywgdHkpLCBzaXRlJykgLT5cbiAgICAobWF0Y2ggRWRnZXMuZXhpc3RzX2ZyZXNoIHJvb3Qgc2l0ZSB0eSBzaXRlJyBncmFwaCB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIG5vZGUgLT4gUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQnIG5vZGUgaW5qJylcblxubGV0IGltcGVyYXRpdmVfZWRnZV9pc192YWxpZCB+ZGVidWdfbW9kZSA/cm9vdCBpbmogZ3JhcGggPSBmdW5jdGlvblxuICB8IChFeGlzdGluZyBpZCwgc2l0ZSksIGRzdCAtPlxuICAgIGltcGVyYXRpdmVfZHN0X2lzX29rYXkgfmRlYnVnX21vZGUgaW5qIGdyYXBoXG4gICAgICAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkKVxuICAgICAgc2l0ZSBkc3RcbiAgfCAoRnJlc2ggKGlkLCBydHkpLCBzaXRlKSwgZHN0IC0+XG4gICAgKG1hdGNoIHJvb3Qgd2l0aFxuICAgIHwgU29tZSAocm9vdCwgcnR5Jykgd2hlbiBydHkgPSBydHknIC0+XG4gICAgICBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCByb290IGlualxuICAgICAgJiYgaW1wZXJhdGl2ZV9kc3RfaXNfb2theSB+ZGVidWdfbW9kZSBpbmogZ3JhcGggcm9vdCBzaXRlIGRzdFxuICAgIHwgXyAtPiBmYWxzZSlcblxubGV0IGNvbmNyZXRpemVfcG9ydCB+ZGVidWdfbW9kZSBpbmogPSBmdW5jdGlvblxuICB8IEV4aXN0aW5nIGlkLCBzaXRlIC0+IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCwgc2l0ZVxuICB8IEZyZXNoIChpZCwgXyksIHNpdGUgLT4gUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkLCBzaXRlXG5cbmxldCBjb25jcmV0aXplX2Fycm93IH5kZWJ1Z19tb2RlIGluaiA9IGZ1bmN0aW9uXG4gIHwgKFRvTm90aGluZyB8IFRvSW50ZXJuYWwgXykgYXMgeCAtPiB4XG4gIHwgVG9Ob2RlIHggLT4gVG9Ob2RlIChjb25jcmV0aXplX3BvcnQgfmRlYnVnX21vZGUgaW5qIHgpXG5cbmxldCBjb25jcmV0aXplIH5kZWJ1Z19tb2RlIHJvb3QgZ3JhcGggbmF2ID1cbiAgbGV0IGluaiA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gIGxldCBvdXQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIG91dCAoKHAsIGRzdCkgYXMgc3RlcCkgLT5cbiAgICAgICAgbWF0Y2ggb3V0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG91dFxuICAgICAgICB8IFNvbWUgKHJvb3QsIGFjYykgLT5cbiAgICAgICAgICBpZiBpbXBlcmF0aXZlX2VkZ2VfaXNfdmFsaWQgfmRlYnVnX21vZGUgP3Jvb3QgaW5qIGdyYXBoIHN0ZXAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgc3QgPVxuICAgICAgICAgICAgICAoIGNvbmNyZXRpemVfcG9ydCB+ZGVidWdfbW9kZSBpbmogcCxcbiAgICAgICAgICAgICAgICBjb25jcmV0aXplX2Fycm93IH5kZWJ1Z19tb2RlIGluaiBkc3QgKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFNvbWUgKE5vbmUsIHN0IDo6IGFjYylcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIE5vbmUpXG4gICAgICAoU29tZSAoU29tZSByb290LCBbXSkpXG4gICAgICBuYXZcbiAgaW5cbiAgT3B0aW9uX3V0aWwubWFwIChmdW4gKF8sIGwpIC0+IExpc3QucmV2IGwpIG91dFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBpbnRlcm5hbCA9IGludCBvcHRpb25cbnR5cGUgbGluayA9IEZSRUUgfCBWQUwgb2YgaW50XG50eXBlIGFnZW50ID0geyBhX3R5cGU6IGludDsgYV9wb3J0czogbGluayBhcnJheTsgYV9pbnRzOiBpbnRlcm5hbCBhcnJheSB9XG50eXBlIHQgPSBhZ2VudCBsaXN0XG5cbmxldCBjb3B5X2FnZW50IGFnZW50ID1cbiAge1xuICAgIGFfdHlwZSA9IGFnZW50LmFfdHlwZTtcbiAgICBhX3BvcnRzID0gQXJyYXkuY29weSBhZ2VudC5hX3BvcnRzO1xuICAgIGFfaW50cyA9IEFycmF5LmNvcHkgYWdlbnQuYV9pbnRzO1xuICB9XG5cbnR5cGUgaW5jcl90ID0ge1xuICBmYXRoZXI6IGludCBNb2RzLkR5bkFycmF5LnQ7XG4gIHJhbms6IChpbnQgKiAoYm9vbCAqIGJvb2wpKSBNb2RzLkR5bkFycmF5LnQ7XG59XG5cbmxldCBjcmVhdGUgbiA9XG4gIHtcbiAgICBmYXRoZXIgPSBNb2RzLkR5bkFycmF5LmluaXQgbiAoZnVuIGkgLT4gaSk7XG4gICAgcmFuayA9IE1vZHMuRHluQXJyYXkubWFrZSBuICgxLCAodHJ1ZSwgZmFsc2UpKTtcbiAgfVxuXG5sZXQgcmVjIGZpbmRfYXV4IGEgaSA9XG4gIGxldCBhaSA9XG4gICAgaWYgTW9kcy5EeW5BcnJheS5sZW5ndGggYSA8PSBpIHRoZW5cbiAgICAgIGlcbiAgICBlbHNlXG4gICAgICBNb2RzLkR5bkFycmF5LmdldCBhIGlcbiAgaW5cbiAgaWYgYWkgPT0gaSB0aGVuXG4gICAgaVxuICBlbHNlIChcbiAgICBsZXQgcm9vdCA9IGZpbmRfYXV4IGEgYWkgaW5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBhIGkgcm9vdCBpblxuICAgIHJvb3RcbiAgKVxuXG5sZXQgZmluZCBoIHggPSBmaW5kX2F1eCBoLmZhdGhlciB4XG5sZXQgY29tYmluZV9yYW5rcyAoaXgsIChieCwgXykpIChpeSwgKGJ5LCBfKSkgPSBpeCArIGl5LCAoYnggJiYgYnksIHRydWUpXG5cbmxldCB1bmlvbiBoIHggeSA9XG4gIGxldCByb290X3ggPSBmaW5kIGggeCBpblxuICBsZXQgcm9vdF95ID0gZmluZCBoIHkgaW5cbiAgaWYgcm9vdF94ID09IHJvb3RfeSB0aGVuXG4gICAgKClcbiAgZWxzZSAoXG4gICAgbGV0IHJhbmtfeCA9IE1vZHMuRHluQXJyYXkuZ2V0IGgucmFuayByb290X3ggaW5cbiAgICBsZXQgcmFua195ID0gTW9kcy5EeW5BcnJheS5nZXQgaC5yYW5rIHJvb3RfeSBpblxuICAgIGlmIGZzdCByYW5rX3ggPiBmc3QgcmFua195IHRoZW4gKFxuICAgICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgaC5yYW5rIHJvb3RfeCAoY29tYmluZV9yYW5rcyByYW5rX3ggcmFua195KSBpblxuICAgICAgTW9kcy5EeW5BcnJheS5zZXQgaC5mYXRoZXIgcm9vdF95IHJvb3RfeFxuICAgICkgZWxzZSBpZiBmc3QgcmFua194IDwgZnN0IHJhbmtfeSB0aGVuIChcbiAgICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGgucmFuayByb290X3kgKGNvbWJpbmVfcmFua3MgcmFua194IHJhbmtfeSkgaW5cbiAgICAgIE1vZHMuRHluQXJyYXkuc2V0IGguZmF0aGVyIHJvb3RfeCByb290X3lcbiAgICApIGVsc2UgKFxuICAgICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgaC5yYW5rIHJvb3RfeCAoY29tYmluZV9yYW5rcyByYW5rX3ggcmFua195KSBpblxuICAgICAgTW9kcy5EeW5BcnJheS5zZXQgaC5mYXRoZXIgcm9vdF95IHJvb3RfeFxuICAgIClcbiAgKVxuXG5sZXQgdW5pb25fZmluZF9jb3VudGVycyBzaWdzIG1peCA9XG4gIGxldCB0ID0gY3JlYXRlIDEgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gYWcgLT5cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUucG9ydHNfaWZfY291bnRlcl9hZ2VudCBzaWdzIGFnLmFfdHlwZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIChiZWZvcmUsIGFmdGVyKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBhZy5hX3BvcnRzLihhZnRlcikgaW5cbiAgICAgICAgICAgIGxldCBiID0gYWcuYV9wb3J0cy4oYmVmb3JlKSBpblxuICAgICAgICAgICAgKG1hdGNoIGIgd2l0aFxuICAgICAgICAgICAgfCBGUkVFIC0+ICgpXG4gICAgICAgICAgICB8IFZBTCBsbmtfYiAtPlxuICAgICAgICAgICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgIHwgRlJFRSAtPlxuICAgICAgICAgICAgICAgICgqIGluIHRoaXMgY2FzZSB0aGUgZW5kcG9pbnQgb2YgdGhlIGNoYWluIG9mIGluY3JlbWVudHMgaXMgcmF3OlxuICAgICAgICAgICAgICAgICAgIHRoZSBhZ2VudCBpcyBjcmVhdGVkIHdpdGggYSBjb3VudGVyIHZhbHVlKilcbiAgICAgICAgICAgICAgICBsZXQgcm9vdCA9IGZpbmQgdCBsbmtfYiBpblxuICAgICAgICAgICAgICAgIGxldCBzLCBfID0gTW9kcy5EeW5BcnJheS5nZXQgdC5yYW5rIHJvb3QgaW5cbiAgICAgICAgICAgICAgICBNb2RzLkR5bkFycmF5LnNldCB0LnJhbmsgcm9vdCAocyAtIDEsICh0cnVlLCB0cnVlKSlcbiAgICAgICAgICAgICAgfCBWQUwgbG5rX2EgLT4gdW5pb24gdCBsbmtfYiBsbmtfYSkpKVxuICAgICAgICBtaXhcbiAgaW5cbiAgdFxuXG5sZXQgcHJpbnRfbGluayB+bm9Db3VudGVycyBjb3VudGVyX2FnZW50cyBmID0gZnVuY3Rpb25cbiAgfCBGUkVFIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlsuXVwiXG4gIHwgVkFMIGkgLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IHJvb3QgPSBmaW5kIGNvdW50ZXJfYWdlbnRzIGkgaW5cbiAgICAgICBsZXQgY291bnRlciwgKF8sIGlzX2NvdW50ZXIpID1cbiAgICAgICAgIE1vZHMuRHluQXJyYXkuZ2V0IGNvdW50ZXJfYWdlbnRzLnJhbmsgcm9vdFxuICAgICAgIGluXG4gICAgICAgaWYgaXNfY291bnRlciAmJiBub3Qgbm9Db3VudGVycyB0aGVuXG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiez0lZH1cIiBjb3VudGVyXG4gICAgICAgZWxzZVxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlslaV1cIiBpXG4gICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJbJWldXCIgaSlcblxubGV0IGF1eF9wcF9zaSBzaWdzIGEgcyBmIGkgPVxuICBtYXRjaCBzaWdzIHdpdGhcbiAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X3NpdGVfaW50ZXJuYWxfc3RhdGUgc2lncyBhIHMgZiBpXG4gIHwgTm9uZSAtPlxuICAgIChtYXRjaCBpIHdpdGhcbiAgICB8IFNvbWUgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWl7JWl9XCIgcyBpXG4gICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBzKVxuXG5sZXQgcHJpbnRfaW50ZiB+bm9Db3VudGVycyB3aXRoX2xpbmsgP3NpZ3MgY291bnRlcl9hZ2VudHMgYWdfdHkgZiAocG9ydHMsIGludHMpXG4gICAgPVxuICBsZXQgcmVjIGF1eCBlbXB0eSBpID1cbiAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIHBvcnRzIHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWElYVwiXG4gICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICBQcC5lbXB0eVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgUHAuc3BhY2UpXG4gICAgICAgICAgKGF1eF9wcF9zaSBzaWdzIGFnX3R5IGkpIGludHMuKGkpXG4gICAgICAgICAgKGlmIHdpdGhfbGluayB0aGVuXG4gICAgICAgICAgICAgcHJpbnRfbGluayB+bm9Db3VudGVycyBjb3VudGVyX2FnZW50c1xuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgZnVuIF8gXyAtPlxuICAgICAgICAgICAoKSlcbiAgICAgICAgICBwb3J0cy4oaSlcbiAgICAgIGluXG4gICAgICBhdXggZmFsc2UgKHN1Y2MgaSlcbiAgICApXG4gIGluXG4gIGF1eCB0cnVlIDBcblxubGV0IGF1eF9wcF9hZyBzaWdzIGYgYSA9XG4gIG1hdGNoIHNpZ3Mgd2l0aFxuICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncyBmIGFcbiAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBhXG5cbmxldCBwcmludF9hZ2VudCB+bm9Db3VudGVycyBjcmVhdGVkIGxpbmsgP3NpZ3MgY291bnRlcl9hZ2VudHMgZiBhZyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYShAWzxoPiVhQF0pJXRcIiAoYXV4X3BwX2FnIHNpZ3MpIGFnLmFfdHlwZVxuICAgIChwcmludF9pbnRmIH5ub0NvdW50ZXJzIGxpbmsgP3NpZ3MgY291bnRlcl9hZ2VudHMgYWcuYV90eXBlKVxuICAgIChhZy5hX3BvcnRzLCBhZy5hX2ludHMpIChmdW4gZiAtPlxuICAgICAgaWYgY3JlYXRlZCB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIitcIilcblxubGV0IHByaW50IH5ub0NvdW50ZXJzIH5jcmVhdGVkIH5pbml0aWFsX2NvbW1hID9zaWdzIGYgbWl4ID1cbiAgbGV0IGNvdW50ZXJfYWdlbnRzID0gdW5pb25fZmluZF9jb3VudGVycyBzaWdzIG1peCBpblxuICBsZXQgcmVjIGF1eF9wcmludCBzb21lID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmXG4gICAgICAgIG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgICAgICBTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIGguYV90eXBlICYmIG5vdCBub0NvdW50ZXJzXG4gICAgICB0aGVuXG4gICAgICAgIGF1eF9wcmludCBzb21lIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPSBpZiBzb21lIHRoZW4gUHAuY29tbWEgZiBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHByaW50X2FnZW50IH5ub0NvdW50ZXJzIGNyZWF0ZWQgdHJ1ZSA/c2lncyBjb3VudGVyX2FnZW50cyBmIGhcbiAgICAgICAgaW5cbiAgICAgICAgYXV4X3ByaW50IHRydWUgdFxuICAgICAgKVxuICBpblxuICBhdXhfcHJpbnQgaW5pdGlhbF9jb21tYSBtaXhcblxubGV0IGFnZW50X3RvX2pzb24gYSA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwidHlwZVwiLCBgSW50IGEuYV90eXBlO1xuICAgICAgKCBcInNpdGVzXCIsXG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAoZnVuIHggYWNjIC0+XG4gICAgICAgICAgICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICB8IEZSRUUgLT4gYE51bGxcbiAgICAgICAgICAgICAgIHwgVkFMIGkgLT4gYEludCBpKVxuICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgIGEuYV9wb3J0cyBbXSkgKTtcbiAgICAgICggXCJpbnRlcm5hbHNcIixcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgIChmdW4geCBhY2MgLT5cbiAgICAgICAgICAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBgTnVsbFxuICAgICAgICAgICAgICAgfCBTb21lIGkgLT4gYEludCBpKVxuICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgIGEuYV9pbnRzIFtdKSApO1xuICAgIF1cblxubGV0IGFnZW50X29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcInR5cGVcIiwgYEludCB0KTsgKFwic2l0ZXNcIiwgYExpc3Qgcyk7IChcImludGVybmFsc1wiLCBgTGlzdCBpKSBdXG4gIHwgYEFzc29jIFsgKFwidHlwZVwiLCBgSW50IHQpOyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSk7IChcInNpdGVzXCIsIGBMaXN0IHMpIF1cbiAgfCBgQXNzb2MgWyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSk7IChcInR5cGVcIiwgYEludCB0KTsgKFwic2l0ZXNcIiwgYExpc3QgcykgXVxuICB8IGBBc3NvYyBbIChcImludGVybmFsc1wiLCBgTGlzdCBpKTsgKFwic2l0ZXNcIiwgYExpc3Qgcyk7IChcInR5cGVcIiwgYEludCB0KSBdXG4gIHwgYEFzc29jIFsgKFwic2l0ZXNcIiwgYExpc3Qgcyk7IChcImludGVybmFsc1wiLCBgTGlzdCBpKTsgKFwidHlwZVwiLCBgSW50IHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJzaXRlc1wiLCBgTGlzdCBzKTsgKFwidHlwZVwiLCBgSW50IHQpOyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSkgXSAtPlxuICAgIHtcbiAgICAgIGFfdHlwZSA9IHQ7XG4gICAgICBhX3BvcnRzID1cbiAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYE51bGwgLT4gRlJFRVxuICAgICAgICAgICAgfCBgSW50IHAgLT4gVkFMIHBcbiAgICAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHNpdGUgbGlua1wiLCB4KSkpXG4gICAgICAgICAgcztcbiAgICAgIGFfaW50cyA9XG4gICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBOdWxsIC0+IE5vbmVcbiAgICAgICAgICAgIHwgYEludCBwIC0+IFNvbWUgcFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgaW50ZXJuYWwgc3RhdGVcIiwgeCkpKVxuICAgICAgICAgIGk7XG4gICAgfVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCByYXdfYWdlbnRcIiwgeCkpXG5cbmxldCB0b19qc29uIG0gPSBgTGlzdCAoTGlzdC5tYXAgYWdlbnRfdG9fanNvbiBtKVxuXG5sZXQgb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCBhZ2VudF9vZl9qc29uIGxcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgcmF3X21peHR1cmVcIiwgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHBlcnZhc2l2ZXNfYm9vbCA9IGJvb2xcblxudHlwZSAoJ21peCwgJ2lkKSBlID1cbiAgfCBCSU5fQUxHX09QIG9mXG4gICAgICBPcGVyYXRvci5iaW5fYWxnX29wXG4gICAgICAqICgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWRcbiAgICAgICogKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZFxuICB8IFVOX0FMR19PUCBvZiBPcGVyYXRvci51bl9hbGdfb3AgKiAoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkXG4gIHwgU1RBVEVfQUxHX09QIG9mIE9wZXJhdG9yLnN0YXRlX2FsZ19vcFxuICB8IEFMR19WQVIgb2YgJ2lkXG4gIHwgS0FQUEFfSU5TVEFOQ0Ugb2YgJ21peFxuICB8IFRPS0VOX0lEIG9mICdpZFxuICB8IENPTlNUIG9mIE5ici50XG4gIHwgSUYgb2ZcbiAgICAgICgnbWl4LCAnaWQpIGJvb2wgTG9jLmFubm90ZWRcbiAgICAgICogKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZFxuICAgICAgKiAoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkXG4gIHwgRElGRl9UT0tFTiBvZiAoKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZCAqICdpZClcbiAgfCBESUZGX0tBUFBBX0lOU1RBTkNFIG9mICgoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkICogJ21peClcblxuYW5kICgnbWl4LCAnaWQpIGJvb2wgPVxuICB8IFRSVUVcbiAgfCBGQUxTRVxuICB8IEJJTl9CT09MX09QIG9mXG4gICAgICBPcGVyYXRvci5iaW5fYm9vbF9vcFxuICAgICAgKiAoJ21peCwgJ2lkKSBib29sIExvYy5hbm5vdGVkXG4gICAgICAqICgnbWl4LCAnaWQpIGJvb2wgTG9jLmFubm90ZWRcbiAgfCBVTl9CT09MX09QIG9mIE9wZXJhdG9yLnVuX2Jvb2xfb3AgKiAoJ21peCwgJ2lkKSBib29sIExvYy5hbm5vdGVkXG4gIHwgQ09NUEFSRV9PUCBvZlxuICAgICAgT3BlcmF0b3IuY29tcGFyZV9vcFxuICAgICAgKiAoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkXG4gICAgICAqICgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWRcblxubGV0IHJlYyBlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQgPSBmdW5jdGlvblxuICB8IEJJTl9BTEdfT1AgKG9wLCBhLCBiKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIE9wZXJhdG9yLmJpbl9hbGdfb3BfdG9fanNvbiBvcDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYTtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYjtcbiAgICAgIF1cbiAgfCBVTl9BTEdfT1AgKG9wLCBhKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIE9wZXJhdG9yLnVuX2FsZ19vcF90b19qc29uIG9wO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBhO1xuICAgICAgXVxuICB8IFNUQVRFX0FMR19PUCBvcCAtPiBPcGVyYXRvci5zdGF0ZV9hbGdfb3BfdG9fanNvbiBvcFxuICB8IEFMR19WQVIgaSAtPiBgTGlzdCBbIGBTdHJpbmcgXCJWQVJcIjsgZl9pZCBpIF1cbiAgfCBLQVBQQV9JTlNUQU5DRSBjYyAtPiBgTGlzdCBbIGBTdHJpbmcgXCJNSVhcIjsgZl9taXggY2MgXVxuICB8IFRPS0VOX0lEIGkgLT4gYExpc3QgWyBgU3RyaW5nIFwiVE9LRU5cIjsgZl9pZCBpIF1cbiAgfCBDT05TVCBuIC0+IE5ici50b195b2pzb24gblxuICB8IElGIChjb25kLCB5ZXMsIG5vKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJJRlwiO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgY29uZDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgeWVzO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBubztcbiAgICAgIF1cbiAgfCBESUZGX1RPS0VOIChleHByLCB0b2tlbikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiRElGRl9UT0tFTlwiO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgZXhwcjtcbiAgICAgICAgZl9pZCB0b2tlbjtcbiAgICAgIF1cbiAgfCBESUZGX0tBUFBBX0lOU1RBTkNFIChleHByLCBtaXh0dXJlKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJESUZGX01JWFRVUkVcIjtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGV4cHI7XG4gICAgICAgIGZfbWl4IG1peHR1cmU7XG4gICAgICBdXG5cbmFuZCBib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQgPSBmdW5jdGlvblxuICB8IFRSVUUgLT4gYEJvb2wgdHJ1ZVxuICB8IEZBTFNFIC0+IGBCb29sIGZhbHNlXG4gIHwgVU5fQk9PTF9PUCAob3AsIGEpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgT3BlcmF0b3IudW5fYm9vbF9vcF90b19qc29uIG9wO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgYTtcbiAgICAgIF1cbiAgfCBCSU5fQk9PTF9PUCAob3AsIGEsIGIpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgT3BlcmF0b3IuYmluX2Jvb2xfb3BfdG9fanNvbiBvcDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGE7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGJvb2xfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICBiO1xuICAgICAgXVxuICB8IENPTVBBUkVfT1AgKG9wLCBhLCBiKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIE9wZXJhdG9yLmNvbXBhcmVfb3BfdG9fanNvbiBvcDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYTtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYjtcbiAgICAgIF1cblxubGV0IHJlYyBlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkRJRkZfTUlYVFVSRVwiOyBleHByOyBtaXh0dXJlIF0gLT5cbiAgICBESUZGX0tBUFBBX0lOU1RBTkNFXG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGV4cHIsXG4gICAgICAgIGZfbWl4IG1peHR1cmUgKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkRJRkZfVE9LRU5cIjsgZXhwcjsgdG9rIF0gLT5cbiAgICBESUZGX1RPS0VOXG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGV4cHIsXG4gICAgICAgIGZfaWQgdG9rIClcbiAgfCBgTGlzdCBbIG9wOyBhOyBiIF0gLT5cbiAgICBCSU5fQUxHX09QXG4gICAgICAoIE9wZXJhdG9yLmJpbl9hbGdfb3Bfb2ZfanNvbiBvcCxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYSxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYlxuICAgICAgKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIlZBUlwiOyBpIF0gLT4gQUxHX1ZBUiAoZl9pZCBpKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIlRPS0VOXCI7IGkgXSAtPiBUT0tFTl9JRCAoZl9pZCBpKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIk1JWFwiOyBjYyBdIC0+IEtBUFBBX0lOU1RBTkNFIChmX21peCBjYylcbiAgfCBgTGlzdCBbIG9wOyBhIF0gLT5cbiAgICBVTl9BTEdfT1BcbiAgICAgICggT3BlcmF0b3IudW5fYWxnX29wX29mX2pzb24gb3AsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGFcbiAgICAgIClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJJRlwiOyBjb25kOyB5ZXM7IG5vIF0gLT5cbiAgICBJRlxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgIChib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgY29uZCxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgeWVzLFxuICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBub1xuICAgICAgKVxuICB8IHggLT5cbiAgICAodHJ5IFNUQVRFX0FMR19PUCAoT3BlcmF0b3Iuc3RhdGVfYWxnX29wX29mX2pzb24geClcbiAgICAgd2l0aCBZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIF8gLT5cbiAgICAgICAodHJ5IENPTlNUIChOYnIub2ZfeW9qc29uIHgpXG4gICAgICAgIHdpdGggWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciBfIC0+XG4gICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBBbGdfZXhwclwiLCB4KSkpKVxuXG5hbmQgYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkID0gZnVuY3Rpb25cbiAgfCBgQm9vbCBiIC0+XG4gICAgaWYgYiB0aGVuXG4gICAgICBUUlVFXG4gICAgZWxzZVxuICAgICAgRkFMU0VcbiAgfCBgTGlzdCBbIG9wOyBhIF0gLT5cbiAgICBVTl9CT09MX09QXG4gICAgICAoIE9wZXJhdG9yLnVuX2Jvb2xfb3Bfb2ZfanNvbiBvcCxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGEgKVxuICB8IGBMaXN0IFsgb3A7IGE7IGIgXSBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIEJJTl9CT09MX09QXG4gICAgICAgICAoIE9wZXJhdG9yLmJpbl9ib29sX29wX29mX2pzb24gb3AsXG4gICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKGJvb2xfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICAgICBhLFxuICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgICAgYiApXG4gICAgIHdpdGggWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciBfIC0+XG4gICAgICAgKHRyeVxuICAgICAgICAgIENPTVBBUkVfT1BcbiAgICAgICAgICAgICggT3BlcmF0b3IuY29tcGFyZV9vcF9vZl9qc29uIG9wLFxuICAgICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgICAgICAgYSxcbiAgICAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgICAgICAgIGIgKVxuICAgICAgICB3aXRoIFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgXyAtPlxuICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBib29sIGV4cHJcIiwgeCkpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBib29sX2V4cHJcIiwgeCkpXG5cbmxldCByZWMgcHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIgZiA9IGZ1bmN0aW9uXG4gIHwgQ09OU1QgbiAtPiBOYnIucHJpbnQgZiBuXG4gIHwgQUxHX1ZBUiBsYWIgLT4gcHJfdmFyIGYgbGFiXG4gIHwgS0FQUEFfSU5TVEFOQ0UgYXN0IC0+IHByX21peCBmIGFzdFxuICB8IFRPS0VOX0lEIHRrIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCIgcHJfdG9rIHRrXG4gIHwgU1RBVEVfQUxHX09QIG9wIC0+IE9wZXJhdG9yLnByaW50X3N0YXRlX2FsZ19vcCBmIG9wXG4gIHwgQklOX0FMR19PUCAob3AsIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIE9wZXJhdG9yLnByaW50X2Jpbl9hbGdfb3BcbiAgICAgIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGFcbiAgICAgIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGIgZiBvcFxuICB8IFVOX0FMR19PUCAob3AsIChhLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEoJWEpXCIgT3BlcmF0b3IucHJpbnRfdW5fYWxnX29wIG9wXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBhXG4gIHwgSUYgKChjb25kLCBfKSwgKHllcywgXyksIChubywgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhIFs/XSAlYSBbOl0gJWFcIlxuICAgICAgKHByaW50X2Jvb2wgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBjb25kXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICB5ZXNcbiAgICAgIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIG5vXG4gIHwgRElGRl9UT0tFTiAoKGV4cHIsIF8pLCB0b2spIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcImRpZmYoJWEsJWEpXCIgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKSBleHByIHByX3RvayB0b2tcbiAgfCBESUZGX0tBUFBBX0lOU1RBTkNFICgoZXhwciwgXyksIG1peHR1cmUpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcImRpZmYoJWEsJWEpXCJcbiAgICAgIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGV4cHIgcHJfbWl4IG1peHR1cmVcblxuYW5kIHByaW50X2Jvb2wgcHJfbWl4IHByX3RvayBwcl92YXIgZiA9IGZ1bmN0aW9uXG4gIHwgVFJVRSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiW3RydWVdXCJcbiAgfCBGQUxTRSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiW2ZhbHNlXVwiXG4gIHwgVU5fQk9PTF9PUCAob3AsIChhLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEgKCVhKVwiIE9wZXJhdG9yLnByaW50X3VuX2Jvb2xfb3Agb3BcbiAgICAgIChwcmludF9ib29sIHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYVxuICB8IEJJTl9CT09MX09QIChvcCwgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiglYSAlYSAlYSlcIlxuICAgICAgKHByaW50X2Jvb2wgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBhIE9wZXJhdG9yLnByaW50X2Jpbl9ib29sX29wIG9wXG4gICAgICAocHJpbnRfYm9vbCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGJcbiAgfCBDT01QQVJFX09QIChvcCwgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiglYSAlYSAlYSlcIlxuICAgICAgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYSBPcGVyYXRvci5wcmludF9jb21wYXJlX29wIG9wXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBiXG5cbmxldCBjb25zdCBuID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKENPTlNUIG4pXG5sZXQgaW50IGkgPSBjb25zdCAoTmJyLkkgaSlcbmxldCBmbG9hdCBmID0gY29uc3QgKE5ici5GIGYpXG5sZXQgYWRkIGUxIGUyID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKEJJTl9BTEdfT1AgKE9wZXJhdG9yLlNVTSwgZTEsIGUyKSlcbmxldCBtaW51cyBlMSBlMiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChCSU5fQUxHX09QIChPcGVyYXRvci5NSU5VUywgZTEsIGUyKSlcbmxldCBtdWx0IGUxIGUyID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKEJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIGUxLCBlMikpXG5sZXQgZGl2IGUxIGUyID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKEJJTl9BTEdfT1AgKE9wZXJhdG9yLkRJViwgZTEsIGUyKSlcbmxldCBwb3cgZTEgZTIgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQklOX0FMR19PUCAoT3BlcmF0b3IuUE9XLCBlMSwgZTIpKVxubGV0IGxvZyBlMSA9IExvYy5hbm5vdF93aXRoX2R1bW15IChVTl9BTEdfT1AgKE9wZXJhdG9yLkxPRywgZTEpKVxuXG5sZXQgbG4gZTEgPVxuICAoKiBKRjogSWYgSSByZW1lbW5iZXIgd2VsbCAqKVxuICBkaXYgKGxvZyBlMSkgKGxvZyAoaW50IDEwKSlcblxubGV0IHNpbiBlMSA9IExvYy5hbm5vdF93aXRoX2R1bW15IChVTl9BTEdfT1AgKE9wZXJhdG9yLlNJTlVTLCBlMSkpXG5sZXQgY29zIGUxID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKFVOX0FMR19PUCAoT3BlcmF0b3IuQ09TSU5VUywgZTEpKVxubGV0IHVtaW51cyBlMSA9IExvYy5hbm5vdF93aXRoX2R1bW15IChVTl9BTEdfT1AgKE9wZXJhdG9yLlVNSU5VUywgZTEpKVxubGV0IHNxcnQgZTEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoVU5fQUxHX09QIChPcGVyYXRvci5TUVJULCBlMSkpXG5cbmxldCByZWMgYWRkX2RlcCAoKGluX3QsIGluX2UsIHRva3NfZCwgb3V0KSBhcyB4KSBkID0gZnVuY3Rpb25cbiAgfCBCSU5fQUxHX09QIChfLCBhLCBiKSwgXyAtPiBhZGRfZGVwIChhZGRfZGVwIHggZCBhKSBkIGJcbiAgfCAoVU5fQUxHX09QIChfLCBhKSB8IERJRkZfVE9LRU4gKGEsIF8pIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoYSwgXykpLCBfXG4gICgqIHdoZW4gd2UgZGlmZmVyZW50aWF0ZSBhZ2FpbnN0IGEgdmFyaWFibGUsIHRoZSByZXN1bHQgbWF5IGRlcGVuZCBvbiB0aGlzIHZhcmlhYmxlIG9ubHkgaWYgdGhlIHZhcmlhYmxlIG9jY3VycyBpbiB0aGUgZGlmZmVybnRpYXRlZCBleHByZXNzaW9uICopXG4gICAgLT5cbiAgICBhZGRfZGVwIHggZCBhXG4gIHwgQUxHX1ZBUiBqLCBfIC0+XG4gICAgbGV0ICgpID0gb3V0LihqKSA8LSBPcGVyYXRvci5EZXBTZXQuYWRkIGQgb3V0LihqKSBpblxuICAgIHhcbiAgfCAoS0FQUEFfSU5TVEFOQ0UgXyB8IENPTlNUIF8pLCBfIC0+IHhcbiAgfCBUT0tFTl9JRCBpLCBfIC0+XG4gICAgbGV0ICgpID0gdG9rc19kLihpKSA8LSBPcGVyYXRvci5EZXBTZXQuYWRkIGQgdG9rc19kLihpKSBpblxuICAgIHhcbiAgfCBJRiAoY29uZCwgeWVzLCBubyksIF8gLT5cbiAgICBhZGRfZGVwIChhZGRfZGVwIChhZGRfZGVwX2Jvb2wgeCBkIGNvbmQpIGQgeWVzKSBkIG5vXG4gIHwgU1RBVEVfQUxHX09QIG9wLCBfIC0+XG4gICAgKG1hdGNoIG9wIHdpdGhcbiAgICB8IE9wZXJhdG9yLkVNQVhfVkFSIHwgT3BlcmF0b3IuVE1BWF9WQVIgLT4geFxuICAgIHwgT3BlcmF0b3IuVElNRV9WQVIgLT4gT3BlcmF0b3IuRGVwU2V0LmFkZCBkIGluX3QsIGluX2UsIHRva3NfZCwgb3V0XG4gICAgfCBPcGVyYXRvci5DUFVUSU1FIHwgT3BlcmF0b3IuRVZFTlRfVkFSIHwgT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIgLT5cbiAgICAgIGluX3QsIE9wZXJhdG9yLkRlcFNldC5hZGQgZCBpbl9lLCB0b2tzX2QsIG91dClcblxuYW5kIGFkZF9kZXBfYm9vbCB4IGQgPSBmdW5jdGlvblxuICB8IChUUlVFIHwgRkFMU0UpLCBfIC0+IHhcbiAgfCBVTl9CT09MX09QIChfLCBhKSwgXyAtPiBhZGRfZGVwX2Jvb2wgeCBkIGFcbiAgfCBCSU5fQk9PTF9PUCAoXywgYSwgYiksIF8gLT4gYWRkX2RlcF9ib29sIChhZGRfZGVwX2Jvb2wgeCBkIGEpIGQgYlxuICB8IENPTVBBUkVfT1AgKF8sIGEsIGIpLCBfIC0+IGFkZF9kZXAgKGFkZF9kZXAgeCBkIGEpIGQgYlxuXG5sZXQgcmVjIGhhc19taXggOlxuICAgIHR5cGUgYS4gP3Zhcl9kZWNsczooJ2IgLT4gKCdjLCAnYikgZSkgLT4gKGEsICdiKSBlIC0+IHBlcnZhc2l2ZXNfYm9vbCA9XG4gZnVuID92YXJfZGVjbHMgLT4gZnVuY3Rpb25cbiAgfCBCSU5fQUxHX09QIChfLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBoYXNfbWl4ID92YXJfZGVjbHMgYSB8fCBoYXNfbWl4ID92YXJfZGVjbHMgYlxuICB8IFVOX0FMR19PUCAoXywgKGEsIF8pKVxuICB8IERJRkZfVE9LRU4gKChhLCBfKSwgXylcbiAgfCBESUZGX0tBUFBBX0lOU1RBTkNFICgoYSwgXyksIF8pIC0+XG4gICAgKCogd2hlbiB3ZSBkaWZmZXJlbnRpYXRlIGFnYWluc3QgYSB2YXJpYWJsZSwgdGhlIHJlc3VsdCBtYXkgZGVwZW5kIG9uIHRoaXMgdmFyaWFibGUgb25seSBpZiB0aGUgdmFyaWFibGUgb2NjdXJzIGluIHRoZSBkaWZmZXJudGlhdGVkIGV4cHJlc3Npb24gKilcbiAgICBoYXNfbWl4ID92YXJfZGVjbHMgYVxuICB8IFNUQVRFX0FMR19PUCBfIHwgQ09OU1QgXyAtPiBmYWxzZVxuICB8IFRPS0VOX0lEIF8gfCBLQVBQQV9JTlNUQU5DRSBfIC0+IHRydWVcbiAgfCBJRiAoKGNvbmQsIF8pLCAoeWVzLCBfKSwgKG5vLCBfKSkgLT5cbiAgICBoYXNfbWl4ID92YXJfZGVjbHMgeWVzIHx8IGhhc19taXggP3Zhcl9kZWNscyBub1xuICAgIHx8IGJvb2xfaGFzX21peCA/dmFyX2RlY2xzIGNvbmRcbiAgfCBBTEdfVkFSIGkgLT5cbiAgICAobWF0Y2ggdmFyX2RlY2xzIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgZiAtPiBoYXNfbWl4ID92YXJfZGVjbHMgKGYgaSkpXG5cbmFuZCBib29sX2hhc19taXggOlxuICAgIHR5cGUgYS4gP3Zhcl9kZWNsczooJ2IgLT4gKCdjLCAnYikgZSkgLT4gKGEsICdiKSBib29sIC0+IHBlcnZhc2l2ZXNfYm9vbCA9XG4gZnVuID92YXJfZGVjbHMgLT4gZnVuY3Rpb25cbiAgfCBUUlVFIHwgRkFMU0UgLT4gZmFsc2VcbiAgfCBDT01QQVJFX09QIChfLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBoYXNfbWl4ID92YXJfZGVjbHMgYSB8fCBoYXNfbWl4ID92YXJfZGVjbHMgYlxuICB8IEJJTl9CT09MX09QIChfLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBib29sX2hhc19taXggP3Zhcl9kZWNscyBhIHx8IGJvb2xfaGFzX21peCA/dmFyX2RlY2xzIGJcbiAgfCBVTl9CT09MX09QIChfLCAoYSwgXykpIC0+IGJvb2xfaGFzX21peCA/dmFyX2RlY2xzIGFcblxubGV0IHJlYyBpc19jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgQ09OU1QgXywgXyAtPiB0cnVlXG4gIHwgSUYgKGEsIGIsIGMpLCBfIC0+IGJvb2xfaXNfY29uc3RhbnQgYSAmJiBpc19jb25zdGFudCBiICYmIGlzX2NvbnN0YW50IGNcbiAgfCBCSU5fQUxHX09QIChfLCBhLCBiKSwgXyAtPiBpc19jb25zdGFudCBhICYmIGlzX2NvbnN0YW50IGJcbiAgfCAoVU5fQUxHX09QIChfLCBhKSB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEsIF8pIHwgRElGRl9UT0tFTiAoYSwgXykpLCBfIC0+XG4gICAgaXNfY29uc3RhbnQgYVxuICB8IChBTEdfVkFSIF8gfCBTVEFURV9BTEdfT1AgXyB8IFRPS0VOX0lEIF8gfCBLQVBQQV9JTlNUQU5DRSBfKSwgXyAtPiBmYWxzZVxuXG5hbmQgYm9vbF9pc19jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgKFRSVUUgfCBGQUxTRSksIF8gLT4gdHJ1ZVxuICB8IENPTVBBUkVfT1AgKF8sIGEsIGIpLCBfIC0+IGlzX2NvbnN0YW50IGEgJiYgaXNfY29uc3RhbnQgYlxuICB8IEJJTl9CT09MX09QIChfLCBhLCBiKSwgXyAtPiBib29sX2lzX2NvbnN0YW50IGEgJiYgYm9vbF9pc19jb25zdGFudCBiXG4gIHwgVU5fQk9PTF9PUCAoXywgYSksIF8gLT4gYm9vbF9pc19jb25zdGFudCBhXG5cbmxldCByZWMgaXNfdGltZV9ob21vZ2VuZW91cyA9IGZ1bmN0aW9uXG4gIHwgQ09OU1QgXywgXyAtPiB0cnVlXG4gIHwgSUYgKGEsIGIsIGMpLCBfIC0+XG4gICAgYm9vbF9pc190aW1lX2hvbW9nZW5lb3VzIGEgJiYgaXNfdGltZV9ob21vZ2VuZW91cyBiICYmIGlzX3RpbWVfaG9tb2dlbmVvdXMgY1xuICB8IEJJTl9BTEdfT1AgKF8sIGEsIGIpLCBfIC0+IGlzX3RpbWVfaG9tb2dlbmVvdXMgYSAmJiBpc190aW1lX2hvbW9nZW5lb3VzIGJcbiAgfCAoVU5fQUxHX09QIChfLCBhKSB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEsIF8pIHwgRElGRl9UT0tFTiAoYSwgXykpLCBfIC0+XG4gICAgaXNfdGltZV9ob21vZ2VuZW91cyBhXG4gIHwgKCBTVEFURV9BTEdfT1BcbiAgICAgICAgKCBPcGVyYXRvci5FVkVOVF9WQVIgfCBPcGVyYXRvci5DUFVUSU1FIHwgT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVJcbiAgICAgICAgfCBPcGVyYXRvci5UTUFYX1ZBUiB8IE9wZXJhdG9yLkVNQVhfVkFSICksXG4gICAgICBfIClcbiAgfCBBTEdfVkFSIF8sIF9cbiAgfCBUT0tFTl9JRCBfLCBfXG4gIHwgS0FQUEFfSU5TVEFOQ0UgXywgXyAtPlxuICAgIHRydWVcbiAgfCBTVEFURV9BTEdfT1AgT3BlcmF0b3IuVElNRV9WQVIsIF8gLT4gZmFsc2VcblxuYW5kIGJvb2xfaXNfdGltZV9ob21vZ2VuZW91cyA9IGZ1bmN0aW9uXG4gIHwgKFRSVUUgfCBGQUxTRSksIF8gLT4gdHJ1ZVxuICB8IENPTVBBUkVfT1AgKF8sIGEsIGIpLCBfIC0+IGlzX3RpbWVfaG9tb2dlbmVvdXMgYSAmJiBpc190aW1lX2hvbW9nZW5lb3VzIGJcbiAgfCBCSU5fQk9PTF9PUCAoXywgYSwgYiksIF8gLT5cbiAgICBib29sX2lzX3RpbWVfaG9tb2dlbmVvdXMgYSAmJiBib29sX2lzX3RpbWVfaG9tb2dlbmVvdXMgYlxuICB8IFVOX0JPT0xfT1AgKF8sIGEpLCBfIC0+IGJvb2xfaXNfdGltZV9ob21vZ2VuZW91cyBhXG5cbmxldCByZWMgYXV4X2V4dHJhY3RfY2MgYWNjID0gZnVuY3Rpb25cbiAgfCBCSU5fQUxHX09QIChfLCBhLCBiKSwgXyAtPiBhdXhfZXh0cmFjdF9jYyAoYXV4X2V4dHJhY3RfY2MgYWNjIGEpIGJcbiAgfCAoVU5fQUxHX09QIChfLCBhKSB8IERJRkZfVE9LRU4gKGEsIF8pIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoYSwgXykpLCBfIC0+XG4gICAgYXV4X2V4dHJhY3RfY2MgYWNjIGFcbiAgfCAoQUxHX1ZBUiBfIHwgQ09OU1QgXyB8IFRPS0VOX0lEIF8gfCBTVEFURV9BTEdfT1AgXyksIF8gLT4gYWNjXG4gIHwgS0FQUEFfSU5TVEFOQ0UgaSwgXyAtPiBpIDo6IGFjY1xuICB8IElGIChjb25kLCB5ZXMsIG5vKSwgXyAtPlxuICAgIGF1eF9leHRyYWN0X2NjIChhdXhfZXh0cmFjdF9jYyAoZXh0cmFjdF9jY19ib29sIGFjYyBjb25kKSB5ZXMpIG5vXG5cbmFuZCBleHRyYWN0X2NjX2Jvb2wgYWNjID0gZnVuY3Rpb25cbiAgfCAoVFJVRSB8IEZBTFNFKSwgXyAtPiBhY2NcbiAgfCBCSU5fQk9PTF9PUCAoXywgYSwgYiksIF8gLT4gZXh0cmFjdF9jY19ib29sIChleHRyYWN0X2NjX2Jvb2wgYWNjIGEpIGJcbiAgfCBVTl9CT09MX09QIChfLCBhKSwgXyAtPiBleHRyYWN0X2NjX2Jvb2wgYWNjIGFcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPiBhdXhfZXh0cmFjdF9jYyAoYXV4X2V4dHJhY3RfY2MgYWNjIGEpIGJcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHMgeCA9IGF1eF9leHRyYWN0X2NjIFtdIHhcbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2Jvb2wgeCA9IGV4dHJhY3RfY2NfYm9vbCBbXSB4XG5cbmxldCBzZXR1cF9hbGdfdmFyc19yZXZfZGVwIHRva3MgdmFycyA9XG4gIGxldCBpbl90ID0gT3BlcmF0b3IuRGVwU2V0LmVtcHR5IGluXG4gIGxldCBpbl9lID0gT3BlcmF0b3IuRGVwU2V0LmVtcHR5IGluXG4gIGxldCB0b2tzX2QgPSBBcnJheS5tYWtlIChOYW1lZERlY2xzLnNpemUgdG9rcykgT3BlcmF0b3IuRGVwU2V0LmVtcHR5IGluXG4gIGxldCBvdXQgPSBBcnJheS5tYWtlIChBcnJheS5sZW5ndGggdmFycykgT3BlcmF0b3IuRGVwU2V0LmVtcHR5IGluXG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGkgeCAoXywgeSkgLT4gYWRkX2RlcCB4IChPcGVyYXRvci5BTEcgaSkgeSlcbiAgICAoaW5fdCwgaW5fZSwgdG9rc19kLCBvdXQpIHZhcnNcblxubGV0IHJlYyBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgPVxuICBmdW5jdGlvblxuICB8IChCSU5fQUxHX09QIChvcCwgYSwgYiksIHBvcykgYXMgeCAtPlxuICAgIChtYXRjaFxuICAgICAgICggcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGEsXG4gICAgICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgYlxuICAgICAgIClcbiAgICAgd2l0aFxuICAgIHwgKENPTlNUIGMxLCBfKSwgKENPTlNUIGMyLCBfKSAtPiBDT05TVCAoTmJyLm9mX2Jpbl9hbGdfb3Agb3AgYzEgYzIpLCBwb3NcbiAgICB8ICggKCggKCBCSU5fQUxHX09QIF8gfCBVTl9BTEdfT1AgXyB8IFNUQVRFX0FMR19PUCBfIHwgS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICAgICB8IERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBBTEdfVkFSIF9cbiAgICAgICAgICAgfCBDT05TVCBfIHwgSUYgXyApLFxuICAgICAgICAgICBfICkgYXMgYScpLFxuICAgICAgICAoKCAoIEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfIHwgU1RBVEVfQUxHX09QIF8gfCBLQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgICAgIHwgRElGRl9UT0tFTiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IEFMR19WQVIgX1xuICAgICAgICAgICB8IENPTlNUIF8gfCBJRiBfICksXG4gICAgICAgICAgIF8gKSBhcyBiJykgKSAtPlxuICAgICAgaWYgYSA9PSBhJyAmJiBiID09IGInIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBCSU5fQUxHX09QIChvcCwgYScsIGInKSwgcG9zKVxuICB8IChVTl9BTEdfT1AgKG9wLCBhKSwgcG9zKSBhcyB4IC0+XG4gICAgKG1hdGNoXG4gICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGFcbiAgICAgd2l0aFxuICAgIHwgQ09OU1QgYywgXyAtPiBDT05TVCAoTmJyLm9mX3VuX2FsZ19vcCBvcCBjKSwgcG9zXG4gICAgfCAoICggRElGRl9UT0tFTiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQklOX0FMR19PUCBfIHwgVU5fQUxHX09QIF9cbiAgICAgICAgfCBTVEFURV9BTEdfT1AgXyB8IEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQUxHX1ZBUiBfIHwgSUYgXyApLFxuICAgICAgICBfICkgYXMgYScgLT5cbiAgICAgIGlmIGEgPT0gYScgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIFVOX0FMR19PUCAob3AsIGEnKSwgcG9zKVxuICB8IChESUZGX1RPS0VOIChhLCB0KSwgcG9zKSBhcyB4IC0+XG4gICAgKG1hdGNoXG4gICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGFcbiAgICAgd2l0aFxuICAgIHwgQ09OU1QgXywgXyAtPlxuICAgICAgKCogdGhlIGRlcml2YXRpdmUgb2YgYSBjb25zdGFudCBpcyB6ZXJvICopXG4gICAgICBDT05TVCBOYnIuemVybywgcG9zXG4gICAgfCAoICggRElGRl9UT0tFTiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQklOX0FMR19PUCBfIHwgVU5fQUxHX09QIF9cbiAgICAgICAgfCBJRiBfIHwgU1RBVEVfQUxHX09QIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IEFMR19WQVIgXyApLFxuICAgICAgICBfICkgYXMgYScgLT5cbiAgICAgIGlmIGEgPT0gYScgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIERJRkZfVE9LRU4gKGEnLCB0KSwgcG9zKVxuICB8IChESUZGX0tBUFBBX0lOU1RBTkNFIChhLCBtKSwgcG9zKSBhcyB4IC0+XG4gICAgKG1hdGNoXG4gICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGFcbiAgICAgd2l0aFxuICAgIHwgQ09OU1QgXywgXyAtPlxuICAgICAgKCogdGhlIGRlcml2YXRpdmUgb2YgYSBjb25zdGFudCBpcyB6ZXJvICopXG4gICAgICBDT05TVCBOYnIuemVybywgcG9zXG4gICAgfCAoICggRElGRl9UT0tFTiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQklOX0FMR19PUCBfIHwgVU5fQUxHX09QIF9cbiAgICAgICAgfCBTVEFURV9BTEdfT1AgXyB8IEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQUxHX1ZBUiBfIHwgSUYgXyApLFxuICAgICAgICBfICkgYXMgYScgLT5cbiAgICAgIGlmIGEgPT0gYScgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEnLCBtKSwgcG9zKVxuICB8IFNUQVRFX0FMR19PUCBPcGVyYXRvci5FTUFYX1ZBUiwgcG9zIC0+XG4gICAgKCBDT05TVFxuICAgICAgICAobWF0Y2ggbWF4X2V2ZW50cyB3aXRoXG4gICAgICAgIHwgU29tZSBuIC0+IE5ici5JIG5cbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAgICAgICAgICAgICAgIFwiW0VtYXhdIGNvbnN0YW50IGlzIGV2YWx1YXRlZCB0byBpbmZpbml0eVwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTmJyLkYgaW5maW5pdHkpLFxuICAgICAgcG9zIClcbiAgfCBTVEFURV9BTEdfT1AgT3BlcmF0b3IuVE1BWF9WQVIsIHBvcyAtPlxuICAgICggQ09OU1RcbiAgICAgICAgKG1hdGNoIG1heF90aW1lIHdpdGhcbiAgICAgICAgfCBTb21lIHQgLT4gTmJyLkYgdFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgICAgICAgICAgICAgICAgXCJbVG1heF0gY29uc3RhbnQgaXMgZXZhbHVhdGVkIHRvIGluZmluaXR5XCIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBOYnIuRiBpbmZpbml0eSksXG4gICAgICBwb3MgKVxuICB8ICggU1RBVEVfQUxHX09QXG4gICAgICAgICggT3BlcmF0b3IuQ1BVVElNRSB8IE9wZXJhdG9yLlRJTUVfVkFSIHwgT3BlcmF0b3IuRVZFTlRfVkFSXG4gICAgICAgIHwgT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIgKSxcbiAgICAgIF8gKSBhcyB4IC0+XG4gICAgeFxuICB8IChBTEdfVkFSIGksIHBvcykgYXMgeCAtPlxuICAgIGlmIExpc3QubWVtIGkgdXBkYXRlZF92YXJzIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHZhcnMuKGkpIHdpdGhcbiAgICAgIHwgXywgKCgoQ09OU1QgXyB8IEFMR19WQVIgXykgYXMgeSksIF8pIC0+IHksIHBvc1xuICAgICAgfCAoIF8sXG4gICAgICAgICAgKCAoIEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfIHwgU1RBVEVfQUxHX09QIF8gfCBLQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgICAgICB8IFRPS0VOX0lEIF8gfCBJRiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICB4XG4gICAgKVxuICB8ICgoS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfKSwgXykgYXMgeCAtPiB4XG4gIHwgSUYgKGNvbmQsIHllcywgbm8pLCBwb3MgLT5cbiAgICAobWF0Y2hcbiAgICAgICBwcm9wYWdhdGVfY29uc3RhbnRfYm9vbCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgICAgICAgfnZhcnMgY29uZFxuICAgICB3aXRoXG4gICAgfCBUUlVFLCBfIC0+XG4gICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgeWVzXG4gICAgfCBGQUxTRSwgXyAtPlxuICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIG5vXG4gICAgfCAoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKSBhcyBjb25kJyAtPlxuICAgICAgKCBJRlxuICAgICAgICAgICggY29uZCcsXG4gICAgICAgICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnNcbiAgICAgICAgICAgICAgfnZhcnMgeWVzLFxuICAgICAgICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgICAgICAgICAgIH52YXJzIG5vICksXG4gICAgICAgIHBvcyApKVxuXG5hbmQgcHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgPVxuICBmdW5jdGlvblxuICB8ICgoVFJVRSB8IEZBTFNFKSwgXykgYXMgeCAtPiB4XG4gIHwgVU5fQk9PTF9PUCAob3AsIGEpLCBwb3MgLT5cbiAgICAobWF0Y2hcbiAgICAgICAoIHByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgICAgICAgIH52YXJzIGEsXG4gICAgICAgICBvcCApXG4gICAgIHdpdGhcbiAgICB8IChUUlVFLCBfKSwgT3BlcmF0b3IuTk9UIC0+IEZBTFNFLCBwb3NcbiAgICB8IChGQUxTRSwgXyksIE9wZXJhdG9yLk5PVCAtPiBUUlVFLCBwb3NcbiAgICB8ICgoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKSBhcyBhJyksIF8gLT5cbiAgICAgIFVOX0JPT0xfT1AgKG9wLCBhJyksIHBvcylcbiAgfCBCSU5fQk9PTF9PUCAob3AsIGEsIGIpLCBwb3MgLT5cbiAgICAobWF0Y2hcbiAgICAgICAoIHByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgICAgICAgIH52YXJzIGEsXG4gICAgICAgICBvcCApXG4gICAgIHdpdGhcbiAgICB8IChUUlVFLCBfKSwgT3BlcmF0b3IuT1IgLT4gVFJVRSwgcG9zXG4gICAgfCAoRkFMU0UsIF8pLCBPcGVyYXRvci5BTkQgLT4gRkFMU0UsIHBvc1xuICAgIHwgKFRSVUUsIF8pLCBPcGVyYXRvci5BTkQgfCAoRkFMU0UsIF8pLCBPcGVyYXRvci5PUiAtPlxuICAgICAgcHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnNcbiAgICAgICAgYlxuICAgIHwgKCgoQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyB8IFVOX0JPT0xfT1AgXyksIF8pIGFzIGEnKSwgXyAtPlxuICAgICAgKG1hdGNoXG4gICAgICAgICAoIHByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgICAgICAgICAgfnZhcnMgYixcbiAgICAgICAgICAgb3AgKVxuICAgICAgIHdpdGhcbiAgICAgIHwgKFRSVUUsIF8pLCBPcGVyYXRvci5PUiAtPiBUUlVFLCBwb3NcbiAgICAgIHwgKEZBTFNFLCBfKSwgT3BlcmF0b3IuQU5EIC0+IEZBTFNFLCBwb3NcbiAgICAgIHwgKFRSVUUsIF8pLCBPcGVyYXRvci5BTkQgfCAoRkFMU0UsIF8pLCBPcGVyYXRvci5PUiAtPiBhJ1xuICAgICAgfCAoKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXykgYXMgYicpLCBfIC0+XG4gICAgICAgIEJJTl9CT09MX09QIChvcCwgYScsIGInKSwgcG9zKSlcbiAgfCBDT01QQVJFX09QIChvcCwgYSwgYiksIHBvcyAtPlxuICAgIGxldCBhJyA9XG4gICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgYVxuICAgIGluXG4gICAgbGV0IGInID1cbiAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBiXG4gICAgaW5cbiAgICAobWF0Y2ggYScsIGInIHdpdGhcbiAgICB8IChDT05TVCBuMSwgXyksIChDT05TVCBuMiwgXykgLT5cbiAgICAgIGlmIE5ici5vZl9jb21wYXJlX29wIG9wIG4xIG4yIHRoZW5cbiAgICAgICAgVFJVRSwgcG9zXG4gICAgICBlbHNlXG4gICAgICAgIEZBTFNFLCBwb3NcbiAgICB8ICggKCAoIERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IERJRkZfVE9LRU4gXyB8IEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfXG4gICAgICAgICAgfCBTVEFURV9BTEdfT1AgXyB8IEFMR19WQVIgXyB8IEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQ09OU1QgX1xuICAgICAgICAgIHwgSUYgXyApLFxuICAgICAgICAgIF8gKSxcbiAgICAgICAgXyApIC0+XG4gICAgICBDT01QQVJFX09QIChvcCwgYScsIGInKSwgcG9zKVxuXG5sZXQgcmVjIGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSAoKGluX3QsIF8sIF8sIGRlcHMpIGFzIHZhcnNfZGVwcykgPSBmdW5jdGlvblxuICB8IEJJTl9BTEdfT1AgKF8sIGEsIGIpLCBfIC0+XG4gICAgaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBhXG4gICAgfHwgaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBiXG4gIHwgKFVOX0FMR19PUCAoXywgYSkgfCBESUZGX1RPS0VOIChhLCBfKSB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEsIF8pKSwgXyAtPlxuICAgIGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYVxuICB8IChLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8pLCBfIC0+IGZhbHNlXG4gIHwgU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRJTUVfVkFSLCBfIC0+IHRydWVcbiAgfCBTVEFURV9BTEdfT1AgT3BlcmF0b3IuRVZFTlRfVkFSLCBfIC0+IG5vdCBvbmx5X3RpbWVcbiAgfCAoIFNUQVRFX0FMR19PUFxuICAgICAgICAoIE9wZXJhdG9yLkNQVVRJTUUgfCBPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUiB8IE9wZXJhdG9yLkVNQVhfVkFSXG4gICAgICAgIHwgT3BlcmF0b3IuVE1BWF9WQVIgKSxcbiAgICAgIF8gKSAtPlxuICAgIGZhbHNlXG4gIHwgQUxHX1ZBUiBpLCBfIC0+XG4gICAgbGV0IHJlYyBhdXggaiA9XG4gICAgICBPcGVyYXRvci5EZXBTZXQubWVtIChPcGVyYXRvci5BTEcgaikgaW5fdFxuICAgICAgfHwgT3BlcmF0b3IuRGVwU2V0LmV4aXN0c1xuICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IE9wZXJhdG9yLkFMRyBrIC0+IGF1eCBrXG4gICAgICAgICAgICAgfCBPcGVyYXRvci5SVUxFIF8gfCBPcGVyYXRvci5NT0RJRiBfIC0+IGZhbHNlKVxuICAgICAgICAgICBkZXBzLihqKVxuICAgIGluXG4gICAgYXV4IGlcbiAgfCBJRiAoY29uZCwgeWVzLCBubyksIF8gLT5cbiAgICBib29sX2hhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgY29uZFxuICAgIHx8IGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgeWVzXG4gICAgfHwgaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBub1xuXG5hbmQgYm9vbF9oYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzID0gZnVuY3Rpb25cbiAgfCAoVFJVRSB8IEZBTFNFKSwgXyAtPiBmYWxzZVxuICB8IENPTVBBUkVfT1AgKF8sIGEsIGIpLCBfIC0+XG4gICAgaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBhXG4gICAgfHwgaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBiXG4gIHwgQklOX0JPT0xfT1AgKF8sIGEsIGIpLCBfIC0+XG4gICAgYm9vbF9oYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGFcbiAgICB8fCBib29sX2hhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYlxuICB8IFVOX0JPT0xfT1AgKF8sIGEpLCBfIC0+IGJvb2xfaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBhXG5cbmxldCByZWMgaXNfZXF1YWxpdHlfdGVzdF90aW1lIHZhcnNfZGVwcyA9IGZ1bmN0aW9uXG4gIHwgVFJVRSB8IEZBTFNFIC0+IGZhbHNlXG4gIHwgVU5fQk9PTF9PUCAoT3BlcmF0b3IuTk9ULCAoYSwgXykpIC0+IGlzX2VxdWFsaXR5X3Rlc3RfdGltZSB2YXJzX2RlcHMgYVxuICB8IEJJTl9CT09MX09QIChfLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBpc19lcXVhbGl0eV90ZXN0X3RpbWUgdmFyc19kZXBzIGEgfHwgaXNfZXF1YWxpdHlfdGVzdF90aW1lIHZhcnNfZGVwcyBiXG4gIHwgQ09NUEFSRV9PUCAob3AsIGEsIGIpIC0+XG4gICAgbGV0IG9ubHlfdGltZSA9IHRydWUgaW5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuRVFVQUxcbiAgICAgIHdoZW4gaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBhXG4gICAgICAgICAgIHx8IGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYiAtPlxuICAgICAgdHJ1ZVxuICAgIHwgT3BlcmF0b3IuRVFVQUwgfCBPcGVyYXRvci5TTUFMTEVSIHwgT3BlcmF0b3IuR1JFQVRFUiB8IE9wZXJhdG9yLkRJRkYgLT5cbiAgICAgIGZhbHNlKVxuXG5sZXQgcmVjIG1hcF9vbl9taXh0dXJlIGYgPSBmdW5jdGlvblxuICB8IEtBUFBBX0lOU1RBTkNFIGksIHAgLT4gZiBpLCBwXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfLCBfIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIFwiQWxnX2V4cHIubWFwX29uX21peHR1cmUgZG9lc24ndCBrbm93IHdoYXQgdG8gZG8gb2YgRElGRl9LQVBQQV9JTlNUQU5DRVwiXG4gIHwgKENPTlNUIF8sIF8pIGFzIHggLT4geFxuICB8IChBTEdfVkFSIF8sIF8pIGFzIHggLT4geFxuICB8IChUT0tFTl9JRCBfLCBfKSBhcyB4IC0+IHhcbiAgfCBESUZGX1RPS0VOIChhLCBpKSwgcCAtPiBESUZGX1RPS0VOIChtYXBfb25fbWl4dHVyZSBmIGEsIGkpLCBwXG4gIHwgKFNUQVRFX0FMR19PUCBfLCBfKSBhcyB4IC0+IHhcbiAgfCBCSU5fQUxHX09QIChvLCB4LCB5KSwgcCAtPlxuICAgIEJJTl9BTEdfT1AgKG8sIG1hcF9vbl9taXh0dXJlIGYgeCwgbWFwX29uX21peHR1cmUgZiB5KSwgcFxuICB8IFVOX0FMR19PUCAobywgeCksIHAgLT4gVU5fQUxHX09QIChvLCBtYXBfb25fbWl4dHVyZSBmIHgpLCBwXG4gIHwgSUYgKGIsIHgsIHkpLCBwIC0+XG4gICAgSUYgKG1hcF9ib29sX29uX21peHR1cmUgZiBiLCBtYXBfb25fbWl4dHVyZSBmIHgsIG1hcF9vbl9taXh0dXJlIGYgeSksIHBcblxuYW5kIG1hcF9ib29sX29uX21peHR1cmUgZiA9IGZ1bmN0aW9uXG4gIHwgKFRSVUUsIF8pIGFzIHggLT4geFxuICB8IChGQUxTRSwgXykgYXMgeCAtPiB4XG4gIHwgQklOX0JPT0xfT1AgKG8sIHgsIHkpLCBwIC0+XG4gICAgQklOX0JPT0xfT1AgKG8sIG1hcF9ib29sX29uX21peHR1cmUgZiB4LCBtYXBfYm9vbF9vbl9taXh0dXJlIGYgeSksIHBcbiAgfCBVTl9CT09MX09QIChvLCB4KSwgcCAtPiBVTl9CT09MX09QIChvLCBtYXBfYm9vbF9vbl9taXh0dXJlIGYgeCksIHBcbiAgfCBDT01QQVJFX09QIChvLCB4LCB5KSwgcCAtPlxuICAgIENPTVBBUkVfT1AgKG8sIG1hcF9vbl9taXh0dXJlIGYgeCwgbWFwX29uX21peHR1cmUgZiB5KSwgcFxuXG5sZXQgcmVjIGZvbGRfb25fbWl4dHVyZSBmIHggPSBmdW5jdGlvblxuICB8IEtBUFBBX0lOU1RBTkNFIGksIF8gLT4gZiB4IGlcbiAgfCBESUZGX0tBUFBBX0lOU1RBTkNFIF8sIF8gLT5cbiAgICBmYWlsd2l0aFxuICAgICAgXCJBbGdfZXhwci5mb2xkX29uX21peHR1cmUgZG9lc24ndCBrbm93IHdoYXQgdG8gZG8gb2YgRElGRl9LQVBQQV9JTlNUQU5DRVwiXG4gIHwgQ09OU1QgXywgXyAtPiB4XG4gIHwgQUxHX1ZBUiBfLCBfIC0+IHhcbiAgfCBUT0tFTl9JRCBfLCBfIC0+IHhcbiAgfCBESUZGX1RPS0VOIChhLCBfKSwgXyAtPiBmb2xkX29uX21peHR1cmUgZiB4IGFcbiAgfCBTVEFURV9BTEdfT1AgXywgXyAtPiB4XG4gIHwgQklOX0FMR19PUCAoXywgYSwgYiksIF8gLT4gZm9sZF9vbl9taXh0dXJlIGYgKGZvbGRfb25fbWl4dHVyZSBmIHggYSkgYlxuICB8IFVOX0FMR19PUCAoXywgYSksIF8gLT4gZm9sZF9vbl9taXh0dXJlIGYgeCBhXG4gIHwgSUYgKGIsIHUsIHYpLCBfIC0+XG4gICAgZm9sZF9ib29sX29uX21peHR1cmUgZiAoZm9sZF9vbl9taXh0dXJlIGYgKGZvbGRfb25fbWl4dHVyZSBmIHggdSkgdikgYlxuXG5hbmQgZm9sZF9ib29sX29uX21peHR1cmUgZiB4ID0gZnVuY3Rpb25cbiAgfCBUUlVFLCBfIC0+IHhcbiAgfCBGQUxTRSwgXyAtPiB4XG4gIHwgQklOX0JPT0xfT1AgKF8sIGEsIGIpLCBfIC0+XG4gICAgZm9sZF9ib29sX29uX21peHR1cmUgZiAoZm9sZF9ib29sX29uX21peHR1cmUgZiB4IGEpIGJcbiAgfCBVTl9CT09MX09QIChfLCBhKSwgXyAtPiBmb2xkX2Jvb2xfb25fbWl4dHVyZSBmIHggYVxuICB8IENPTVBBUkVfT1AgKF8sIGEsIGIpLCBfIC0+IGZvbGRfb25fbWl4dHVyZSBmIChmb2xkX29uX21peHR1cmUgZiB4IGEpIGJcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCAoQklOX0FMR19PUCAob3BhLCBhMSwgYTIpLCBfKSwgKEJJTl9BTEdfT1AgKG9wYiwgYjEsIGIyKSwgXykgLT5cbiAgICBvcGEgPSBvcGIgJiYgZXF1YWwgYTEgYjEgJiYgZXF1YWwgYTIgYjJcbiAgfCAoIChCSU5fQUxHX09QIF8sIF8pLFxuICAgICAgKCAoIFVOX0FMR19PUCBfIHwgU1RBVEVfQUxHX09QIF8gfCBBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfICksXG4gICAgICAgIF8gKSApXG4gIHwgKCAoICggVU5fQUxHX09QIF8gfCBTVEFURV9BTEdfT1AgXyB8IEFMR19WQVIgXyB8IEtBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgfCBUT0tFTl9JRCBfIHwgQ09OU1QgXyB8IElGIF8gKSxcbiAgICAgICAgXyApLFxuICAgICAgKEJJTl9BTEdfT1AgXywgXykgKSAtPlxuICAgIGZhbHNlXG4gIHwgKFVOX0FMR19PUCAob3BhLCBhMSksIF8pLCAoVU5fQUxHX09QIChvcGIsIGIxKSwgXykgLT5cbiAgICBvcGEgPSBvcGIgJiYgZXF1YWwgYTEgYjFcbiAgfCAoIChVTl9BTEdfT1AgXywgXyksXG4gICAgICAoICggU1RBVEVfQUxHX09QIF8gfCBBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF9cbiAgICAgICAgfCBJRiBfICksXG4gICAgICAgIF8gKSApXG4gIHwgKCAoICggU1RBVEVfQUxHX09QIF8gfCBBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF9cbiAgICAgICAgfCBJRiBfICksXG4gICAgICAgIF8gKSxcbiAgICAgIChVTl9BTEdfT1AgXywgXykgKSAtPlxuICAgIGZhbHNlXG4gIHwgKFNUQVRFX0FMR19PUCBvcGEsIF8pLCAoU1RBVEVfQUxHX09QIG9wYiwgXykgLT4gb3BhID0gb3BiXG4gIHwgKCAoU1RBVEVfQUxHX09QIF8sIF8pLFxuICAgICAgKChBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfKSwgXykgKVxuICB8ICggKChBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfKSwgXyksXG4gICAgICAoU1RBVEVfQUxHX09QIF8sIF8pICkgLT5cbiAgICBmYWxzZVxuICB8IChBTEdfVkFSIGlkMSwgXyksIChBTEdfVkFSIGlkMiwgXykgLT4gaWQxID0gaWQyXG4gIHwgKEFMR19WQVIgXywgXyksICgoS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyksIF8pXG4gIHwgKChLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfKSwgXyksIChBTEdfVkFSIF8sIF8pIC0+XG4gICAgZmFsc2VcbiAgfCAoS0FQUEFfSU5TVEFOQ0UgbWl4MSwgXyksIChLQVBQQV9JTlNUQU5DRSBtaXgyLCBfKSAtPiBtaXgxID0gbWl4MlxuICB8IChLQVBQQV9JTlNUQU5DRSBfLCBfKSwgKChUT0tFTl9JRCBfIHwgQ09OU1QgXyB8IElGIF8pLCBfKVxuICB8ICgoVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfKSwgXyksIChLQVBQQV9JTlNUQU5DRSBfLCBfKSAtPlxuICAgIGZhbHNlXG4gIHwgKFRPS0VOX0lEIGlkMSwgXyksIChUT0tFTl9JRCBpZDIsIF8pIC0+IGlkMSA9IGlkMlxuICB8IChUT0tFTl9JRCBfLCBfKSwgKChDT05TVCBfIHwgSUYgXyksIF8pXG4gIHwgKChDT05TVCBfIHwgSUYgXyksIF8pLCAoVE9LRU5fSUQgXywgXykgLT5cbiAgICBmYWxzZVxuICB8IChDT05TVCBjMSwgXyksIChDT05TVCBjMiwgXykgLT4gTmJyLmlzX2VxdWFsIGMxIGMyXG4gIHwgKENPTlNUIF8sIF8pLCAoSUYgXywgXykgfCAoSUYgXywgXyksIChDT05TVCBfLCBfKSAtPiBmYWxzZVxuICB8IChJRiAoY29uZGEsIGExLCBhMiksIF8pLCAoSUYgKGNvbmRiLCBiMSwgYjIpLCBfKSAtPlxuICAgIGVxdWFsX2Jvb2wgY29uZGEgY29uZGIgJiYgZXF1YWwgYTEgYjEgJiYgZXF1YWwgYTIgYjJcbiAgfCAoKERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyksIF8pLCBfXG4gIHwgXywgKChESUZGX1RPS0VOIF8gfCBESUZGX0tBUFBBX0lOU1RBTkNFIF8pLCBfKSAtPlxuICAgIGFzc2VydCBmYWxzZVxuXG5hbmQgZXF1YWxfYm9vbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCAoVFJVRSwgXyksIChUUlVFLCBfKSAtPiB0cnVlXG4gIHwgKFRSVUUsIF8pLCAoKEZBTFNFIHwgQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyB8IFVOX0JPT0xfT1AgXyksIF8pXG4gIHwgKChGQUxTRSB8IEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKSwgKFRSVUUsIF8pIC0+XG4gICAgZmFsc2VcbiAgfCAoRkFMU0UsIF8pLCAoRkFMU0UsIF8pIC0+IHRydWVcbiAgfCAoRkFMU0UsIF8pLCAoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKVxuICB8ICgoQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyB8IFVOX0JPT0xfT1AgXyksIF8pLCAoRkFMU0UsIF8pIC0+XG4gICAgZmFsc2VcbiAgfCAoVU5fQk9PTF9PUCAob3BhLCBhKSwgXyksIChVTl9CT09MX09QIChvcGIsIGIpLCBfKSAtPlxuICAgIG9wYSA9IG9wYiAmJiBlcXVhbF9ib29sIGEgYlxuICB8IChVTl9CT09MX09QIF8sIF8pLCAoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8pLCBfKVxuICB8ICgoQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyksIF8pLCAoVU5fQk9PTF9PUCBfLCBfKSAtPlxuICAgIGZhbHNlXG4gIHwgKEJJTl9CT09MX09QIChvcGEsIGExLCBhMiksIF8pLCAoQklOX0JPT0xfT1AgKG9wYiwgYjEsIGIyKSwgXykgLT5cbiAgICBvcGEgPSBvcGIgJiYgZXF1YWxfYm9vbCBhMSBiMSAmJiBlcXVhbF9ib29sIGEyIGIyXG4gIHwgKEJJTl9CT09MX09QIF8sIF8pLCAoQ09NUEFSRV9PUCBfLCBfKSB8IChDT01QQVJFX09QIF8sIF8pLCAoQklOX0JPT0xfT1AgXywgXylcbiAgICAtPlxuICAgIGZhbHNlXG4gIHwgKENPTVBBUkVfT1AgKG9wYSwgYTEsIGEyKSwgXyksIChDT01QQVJFX09QIChvcGIsIGIxLCBiMiksIF8pIC0+XG4gICAgb3BhID0gb3BiICYmIGVxdWFsIGExIGIxICYmIGVxdWFsIGEyIGIyXG4iLCIoKipcbiAgKiBjb250YWN0X21hcC5tbFxuICAqIG9wZW5rYXBwYVxuICAqIErDqXLDtG1lIEZlcmV0ICYgTHkgS2ltIFF1eWVuLCBwcm9qZWN0IEFudGlxdWUsIElOUklBIFBhcmlzXG4gICpcbiAgKiBDcmVhdGlvbjogMjAxNywgdGhlIDIzcmQgb2YgSnVuZVxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SnVsIDA1IDIwMTc+XG4gICpcbiAgKiBDb21wdXRlIHN0cm9uZ2x5IGNvbm5lY3RlZCBjb21wb25lbnQgaW4gY29udGFjdCBtYXBcbiAgKlxuICAqIENvcHlyaWdodCAyMDEwLDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNSwyMDE2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZVxuICAqIGVuIEluZm9ybWF0aXF1ZSBldCBlbiBBdXRvbWF0aXF1ZS5cbiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgdCA9IChNb2RzLkludFNldC50ICogTW9kcy5JbnQyU2V0LnQpIGFycmF5IGFycmF5XG5cbmxldCB0b195b2pzb24gYSA9XG4gIGxldCBpbnRsc190b19qc29uIGEgPVxuICAgIGBMaXN0IChNb2RzLkludFNldC5mb2xkIChmdW4gYiBhY2MgLT4gYEludCBiIDo6IGFjYykgYSBbXSlcbiAgaW5cbiAgbGV0IHBhaXJsc190b19qc29uIGEgPVxuICAgIGBMaXN0XG4gICAgICAoTW9kcy5JbnQyU2V0LmZvbGRcbiAgICAgICAgIChmdW4gKGIsIGMpIGFjYyAtPiBgTGlzdCBbIGBJbnQgYjsgYEludCBjIF0gOjogYWNjKVxuICAgICAgICAgYSBbXSlcbiAgaW5cbiAgbGV0IGFycmF5X3RvX2pzb24gYSA9XG4gICAgYExpc3RcbiAgICAgIChBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgIChmdW4gYWNjIChhLCBiKSAtPiBgTGlzdCBbIGludGxzX3RvX2pzb24gYTsgcGFpcmxzX3RvX2pzb24gYiBdIDo6IGFjYylcbiAgICAgICAgIFtdIGEpXG4gIGluXG4gIGBMaXN0IChBcnJheS5mb2xkX2xlZnQgKGZ1biBhY2MgdCAtPiBhcnJheV90b19qc29uIHQgOjogYWNjKSBbXSBhKVxuXG5sZXQgb2ZfeW9qc29uIChhIDogWW9qc29uLkJhc2ljLnQpID1cbiAgbGV0IGludGxzX29mX2pzb24gYSA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgYEludCBiIC0+IE1vZHMuSW50U2V0LmFkZCBiIGFjY1xuICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiYmxhMVwiLCB4KSkpXG4gICAgICBNb2RzLkludFNldC5lbXB0eSBhXG4gIGluXG4gIGxldCBwYWlybHNfb2ZfanNvbiBhID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBgTGlzdCBbIGBJbnQgYjsgYEludCBjIF0gLT4gTW9kcy5JbnQyU2V0LmFkZCAoYiwgYykgYWNjXG4gICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJibGEyXCIsIHgpKSlcbiAgICAgIE1vZHMuSW50MlNldC5lbXB0eSBhXG4gIGluXG4gIGxldCBhcnJheV9vZl9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBMaXN0IGxzIC0+XG4gICAgICAobWF0Y2ggbHMgd2l0aFxuICAgICAgfCBbIGBMaXN0IGE7IGBMaXN0IGIgXSAtPiBpbnRsc19vZl9qc29uIGEsIHBhaXJsc19vZl9qc29uIGJcbiAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcImJsYTNcIiwgeCkpXG4gIGluXG4gIG1hdGNoIGEgd2l0aFxuICB8IGBMaXN0IGFycmF5MSAtPlxuICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBgTGlzdCBhcnJheTIgLT4gVG9vbHMuYXJyYXlfbWFwX29mX2xpc3QgYXJyYXlfb2ZfanNvbiBhcnJheTJcbiAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcImJsYTRcIiwgeCkpKVxuICAgICAgYXJyYXkxXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGNvbnRhY3QgbWFwXCIsIHgpKVxuXG5sZXQgcHJpbnRfa2FwcGEgfm5vQ291bnRlcnMgc2lncyBmIGMgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUBdXCJcbiAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBhZyBmIGludGYgLT5cbiAgICAgICAgIGlmIChub3QgKFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgYWcpKSB8fCBub0NvdW50ZXJzIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+JSVhZ2VudDpAICVhKEBbJWFAXSlAXVwiXG4gICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgIGFnXG4gICAgICAgICAgICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gcyBmIChpcywgbHMpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBTaWduYXR1cmUuc2l0ZV9pc19jb3VudGVyIHNpZ3MgYWcgcyAmJiBub3Qgbm9Db3VudGVycyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhJWFAXVwiXG4gICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWcpXG4gICAgICAgICAgICAgICAgICAgICAgc1xuICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfY291bnRlciBzaWdzIGFnKVxuICAgICAgICAgICAgICAgICAgICAgIHNcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEldCV0QF1cIlxuICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnKVxuICAgICAgICAgICAgICAgICAgICAgIHNcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCAoTW9kcy5JbnRTZXQuaXNfZW1wdHkgaXMpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIntAWyVhQF19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHAuc2V0IE1vZHMuSW50U2V0LmVsZW1lbnRzIFBwLnNwYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnIHMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IChNb2RzLkludDJTZXQuaXNfZW1wdHkgbHMpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkAsW0BbJWFAXV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcC5zZXQgTW9kcy5JbnQyU2V0LmVsZW1lbnRzIFBwLnNwYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBmIChhZCwgc2QpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbHMpKSlcbiAgICAgICAgICAgICBpbnRmKSlcbiAgICBjXG5cbmxldCBjdXRfYXQgaSBzJyBsID1cbiAgbGV0IHJlYyBhdXhfY3V0X2F0IG8gPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgKCgoaiwgcyksIF8pIGFzIGgpIDo6IHQgLT5cbiAgICAgIGlmIGkgPSBqIHRoZW5cbiAgICAgICAgaWYgcyA+PSBzJyB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU29tZSAoaCA6OiBvKVxuICAgICAgZWxzZVxuICAgICAgICBhdXhfY3V0X2F0IChoIDo6IG8pIHRcbiAgaW5cbiAgYXV4X2N1dF9hdCBbXSBsXG5cbmxldCBnZXRfY3ljbGVzIGNvbnRhY3RfbWFwID1cbiAgbGV0IHJlYyBkZnMgKChrbm93biwgb3V0KSBhcyBhY2MpIHBhdGggaSBsYXN0X3MgPVxuICAgIGlmIE1vZHMuSW50U2V0Lm1lbSBpIGtub3duIHRoZW4gKFxuICAgICAgbWF0Y2ggY3V0X2F0IGkgbGFzdF9zIHBhdGggd2l0aFxuICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgfCBTb21lIHggLT4ga25vd24sIHggOjogb3V0XG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBrbm93bicgPSBNb2RzLkludFNldC5hZGQgaSBrbm93biBpblxuICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAoZnVuIHMgYWNjIChfLCBsKSAtPlxuICAgICAgICAgIGlmIHMgPSBsYXN0X3MgdGhlblxuICAgICAgICAgICAgYWNjXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTW9kcy5JbnQyU2V0LmZvbGRcbiAgICAgICAgICAgICAgKGZ1biAoKHR5LCBzJykgYXMgeCkgYWNjIC0+IGRmcyBhY2MgKCgoaSwgcyksIHgpIDo6IHBhdGgpIHR5IHMnKVxuICAgICAgICAgICAgICBsIGFjYylcbiAgICAgICAgKGtub3duJywgb3V0KSBjb250YWN0X21hcC4oaSlcbiAgICApXG4gIGluXG4gIGxldCByZWMgc2NhbiAoKGtub3duLCBvdXQpIGFzIGFjYykgaSA9XG4gICAgaWYgaSA8IDAgdGhlblxuICAgICAgb3V0XG4gICAgZWxzZVxuICAgICAgc2NhblxuICAgICAgICAoaWYgTW9kcy5JbnRTZXQubWVtIGkga25vd24gdGhlblxuICAgICAgICAgICBhY2NcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZGZzIGFjYyBbXSBpICgtMSkpXG4gICAgICAgIChwcmVkIGkpXG4gIGluXG4gIHNjYW4gKE1vZHMuSW50U2V0LmVtcHR5LCBbXSkgKEFycmF5Lmxlbmd0aCBjb250YWN0X21hcCAtIDEpXG5cbmxldCBwcmludF9jeWNsZXMgc2lncyBmb3JtIGNvbnRhY3RfbWFwID1cbiAgbGV0IG8gPSBnZXRfY3ljbGVzIGNvbnRhY3RfbWFwIGluXG4gIFBwLmxpc3QgUHAuc3BhY2VcbiAgICAoUHAubGlzdCBQcC5lbXB0eSAoZnVuIGYgKChhZywgcyksIChhZycsIHMnKSkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYS0lYS5cIlxuICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgIGFnXG4gICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnKVxuICAgICAgICAgICBzXG4gICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnJylcbiAgICAgICAgICAgcycpKVxuICAgIGZvcm0gb1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIzIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzaGFyaW5nX2xldmVsID0gTm9fc2hhcmluZyB8IENvbXBhdGlibGVfcGF0dGVybnMgfCBNYXhfc2hhcmluZ1xuXG5sZXQgc2hhcmluZ19sZXZlbF9vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJub19zaGFyaW5nXCIgLT4gTm9fc2hhcmluZ1xuICB8IGBTdHJpbmcgXCJjb21wYXRpYmxlX3BhdHRlcm5zXCIgLT4gQ29tcGF0aWJsZV9wYXR0ZXJuc1xuICB8IGBTdHJpbmcgXCJtYXhfc2hhcmluZ1wiIC0+IE1heF9zaGFyaW5nXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3Qgc2hhcmluZ19sZXZlbFwiLCB4KSlcblxubGV0IHdyaXRlX3NoYXJpbmdfbGV2ZWwgb2IgPSBmdW5jdGlvblxuICB8IE5vX3NoYXJpbmcgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYiBcIm5vX3NoYXJpbmdcIlxuICB8IENvbXBhdGlibGVfcGF0dGVybnMgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYiBcImNvbXBhdGlibGVfcGF0dGVybnNcIlxuICB8IE1heF9zaGFyaW5nIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgXCJtYXhfc2hhcmluZ1wiXG5cbmxldCBzdHJpbmdfb2Zfc2hhcmluZ19sZXZlbCA/bGVuOihfID0gMTAyNCkgPSBmdW5jdGlvblxuICB8IE5vX3NoYXJpbmcgLT4gXCJcXFwibm9fc2hhcmluZ1xcXCJcIlxuICB8IENvbXBhdGlibGVfcGF0dGVybnMgLT4gXCJcXFwiY29tcGF0aWJsZV9wYXR0ZXJuc1xcXCJcIlxuICB8IE1heF9zaGFyaW5nIC0+IFwiXFxcIm1heF9zaGFyaW5nXFxcIlwiXG5cbmxldCByZWFkX3NoYXJpbmdfbGV2ZWwgcCBsYiA9XG4gIHNoYXJpbmdfbGV2ZWxfb2ZfeW9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHAgbGIpXG5cbmxldCBzaGFyaW5nX2xldmVsX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaGFyaW5nX2xldmVsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbnR5cGUgbGluayA9IFVuU3BlYyB8IEZyZWUgfCBMaW5rIG9mIGludCAqIGludCAgKCoqIG5vZGVfaWQsIHNpdGVfaWQgKilcblxudHlwZSBjYyA9IHtcbiAgbm9kZXNfYnlfdHlwZTogaW50IGxpc3QgYXJyYXk7XG4gIG5vZGVzOiAobGluayAqIGludCkgYXJyYXkgTW9kcy5JbnRNYXAudDtcbiAgKCpwYXR0ZXJuIGdyYXBoIGlkIC0+IFt8Li4uIChsaW5rX2osc3RhdGVfaikuLi58XSBpLmUgYWdlbnRfaWQgb24gc2l0ZV9qIGhhc1xuICAgIGEgbGluayBsaW5rX2ogYW5kIGludGVybmFsIHN0YXRlIHN0YXRlX2ogKC0xIG1lYW5zIGFueSkgKilcbiAgcmVjb2duX25hdjogTmF2aWdhdGlvbi5hYnN0cmFjdCBOYXZpZ2F0aW9uLnQ7XG59XG4oKiogVGhlIGxpbmsgb2Ygc2l0ZSBrIG9mIG5vZGUgaSBpcyBbZnN0IG5vZGVzKGkpLihrKV0uXG5cbiAgICBUaGUgaW50ZXJuYWwgc3RhdGUgb2Ygc2l0ZSBrIG9mIG5vZGUgaSBpcyBbc25kIG5vZGVzKGkpLihrKV0uIEFcbiAgICBuZWdhdGl2ZSBudW1iZXIgbWVhbnMgVW5TcGVjLiAqKVxuXG50eXBlIHQgPSBjY1xudHlwZSBpZCA9IGludFxuXG5sZXQgZGVidWdfcHJpbnRfaWQgZm10IGlkID0gRm9ybWF0LmZwcmludGYgZm10IFwiJWRcIiBpZFxubGV0IHNpemVfb2ZfY2MgY2MgPSBNb2RzLkludE1hcC5zaXplIGNjLm5vZGVzXG5sZXQgY29tcGFyZV9jYW5vbmljYWxzIGNjIGNjJyA9IE1vZHMuaW50X2NvbXBhcmUgY2MgY2MnXG5sZXQgaXNfZXF1YWxfY2Fub25pY2FscyBjYyBjYycgPSBjb21wYXJlX2Nhbm9uaWNhbHMgY2MgY2MnID0gMFxubGV0IGhhc2hfcHJpbWUgPSAyOVxuXG5sZXQgY29hcnNlX2hhc2ggY2MgPVxuICBsZXQgcGx1c19pbnRlcm5hbCBhY2MgcyBpID1cbiAgICBpZiBpIDwgMCB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlXG4gICAgICBUb29scy5jYW50b3JfcGFpcmluZyAoc3VjYyBzKSAoc3VjYyBpKSArIGFjY1xuICBpblxuICBsZXQgbm9kZV9zaGFwZSA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBuIGUgYWNjIC0+XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAoZnVuIHMgYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IFVuU3BlYywgaSAtPiBwbHVzX2ludGVybmFsIGFjYyBzIGlcbiAgICAgICAgICAgIHwgRnJlZSwgaSAtPiBwbHVzX2ludGVybmFsICgzICsgKHMgKiAzKSArIGFjYykgcyBpXG4gICAgICAgICAgICB8IExpbmsgKG4nLCBzJyksIGkgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYycgPSBwbHVzX2ludGVybmFsIGFjYyBzIGkgaW5cbiAgICAgICAgICAgICAgbGV0IGV4dHJhID0gVG9vbHMuY2FudG9yX3BhaXJpbmcgKDEgKyBtaW4gcyBzJykgKDEgKyBtYXggcyBzJykgaW5cbiAgICAgICAgICAgICAgaWYgKG4gPSBuJyAmJiBzIDwgcycpIHx8IG4gPCBuJyB0aGVuXG4gICAgICAgICAgICAgICAgKGV4dHJhICogNykgKyBhY2MnXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBhY2MnKVxuICAgICAgICAgIGFjYyBlKVxuICAgICAgY2Mubm9kZXMgMFxuICBpblxuICBBcnJheS5mb2xkX3JpZ2h0XG4gICAgKGZ1biBsIGFjYyAtPiBMaXN0Lmxlbmd0aCBsICsgKGhhc2hfcHJpbWUgKiBhY2MpKVxuICAgIGNjLm5vZGVzX2J5X3R5cGUgbm9kZV9zaGFwZVxuXG5sZXQgaWRfdG9feW9qc29uIGNjID0gYEludCBjY1xuXG5sZXQgaWRfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgSW50IGNjIC0+IGNjXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBwYXR0ZXJuIGlkXCIsIHgpKVxuXG5tb2R1bGUgU2V0ID0gTW9kcy5JbnRTZXRcbm1vZHVsZSBNYXAgPSBNb2RzLkludE1hcFxuXG5tb2R1bGUgT2JzTWFwID0gc3RydWN0XG4gIGluY2x1ZGUgTW9kcy5EeW5BcnJheVxuXG4gIGxldCBkdW1teSB4ID0gbWFrZSAwIHhcbmVuZFxuXG5sZXQgZW1wdHlfY2Mgc2lncyA9XG4gIGxldCBuYnQgPSBBcnJheS5tYWtlIChTaWduYXR1cmUuc2l6ZSBzaWdzKSBbXSBpblxuICB7IG5vZGVzX2J5X3R5cGUgPSBuYnQ7IHJlY29nbl9uYXYgPSBbXTsgbm9kZXMgPSBNb2RzLkludE1hcC5lbXB0eSB9XG5cbmxldCByYXdfZmluZF90eSB0eXMgaWQgPVxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBhc3NlcnQgKGkgPj0gMCk7XG4gICAgaWYgTGlzdC5tZW0gaWQgdHlzLihpKSB0aGVuXG4gICAgICBpXG4gICAgZWxzZVxuICAgICAgYXV4IChwcmVkIGkpXG4gIGluXG4gIGF1eCAoQXJyYXkubGVuZ3RoIHR5cyAtIDEpXG5cbmxldCBmaW5kX3R5IGNjIGlkID0gcmF3X2ZpbmRfdHkgY2Mubm9kZXNfYnlfdHlwZSBpZFxuXG5sZXQgYWRkX29yaWdpbiBkZXBzID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGRlcHNcbiAgfCBTb21lIHggLT4gT3BlcmF0b3IuRGVwU2V0LmFkZCB4IGRlcHNcblxubGV0IHJlY29uc3RydWN0aW9uX25hdmlnYXRpb24gY2MgPSBjYy5yZWNvZ25fbmF2XG5cbigqKiBFcnJvcnMgKilcbmxldCBhbHJlYWR5X3NwZWNpZmllZCA/c2lncyB4IGkgPVxuICBFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIlNpdGUgJWEgb2YgYWdlbnQgJWEgYWxyZWFkeSBzcGVjaWZpZWRcIlxuICAgICAgICAgIChBZ2VudC5wcmludF9zaXRlID9zaWdzIHgpIGlcbiAgICAgICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6ZmFsc2UpXG4gICAgICAgICAgeCkpXG5cbmxldCBkYW5nbGluZ19ub2RlIH5zaWdzIHR5cyB4ID1cbiAgRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJDYW5ub3QgcHJvY2VlZCBiZWNhdXNlIGxhc3QgZGVjbGFyZWQgYWdlbnQgJWEvKiVpKi8lYVwiXG4gICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgIChyYXdfZmluZF90eSB0eXMgeCkgeCBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG4gICAgICAgICAgXCIgaXMgbm90IGxpbmtlZCB0byBpdHMgY29ubmVjdGVkIGNvbXBvbmVudC5cIikpXG5cbmxldCBpZGVudGl0eV9pbmplY3Rpb24gY2MgPVxuICBSZW5hbWluZy5pZGVudGl0eVxuICAgIChBcnJheS5mb2xkX2xlZnQgKGZ1biB4IHkgLT4gTGlzdC5yZXZfYXBwZW5kIHkgeCkgW10gY2Mubm9kZXNfYnlfdHlwZSlcblxuKCoqIHBpY2sgYSByb290IGluIHRoZSBDQy4gQW55IHJvb3Qgd29ya3MuXG4gICAgSW4gdGhpcyBjYXNlIHBpY2sgdGhlIGZpcnN0IG5vZGUgb2Ygc21hbGxlc3QgdHlwZSAqKVxubGV0IHJhd19maW5kX3Jvb3Qgbm9kZXNfYnlfdHlwZSA9XG4gIGxldCByZWMgYXV4IHR5ID1cbiAgICBpZiB0eSA9IEFycmF5Lmxlbmd0aCBub2Rlc19ieV90eXBlIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5vZGVzX2J5X3R5cGUuKHR5KSB3aXRoXG4gICAgICB8IFtdIC0+IGF1eCAoc3VjYyB0eSlcbiAgICAgIHwgaCA6OiBfIC0+IFNvbWUgKGgsIHR5KVxuICAgIClcbiAgaW5cbiAgYXV4IDBcblxubGV0IGZpbmRfcm9vdCBjYyA9IHJhd19maW5kX3Jvb3QgY2Mubm9kZXNfYnlfdHlwZVxuXG5sZXQgd2VpZ2h0IGNjID1cbiAgbGV0IGxpbmtzLCBkb3VibGUgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gXyAtPlxuICAgICAgICBBcnJheS5mb2xkX3JpZ2h0IChmdW4gKGksIHMpIChsLCBkKSAtPlxuICAgICAgICAgICAgaWYgaSA8PiBVblNwZWMgdGhlblxuICAgICAgICAgICAgICAoIHN1Y2NcbiAgICAgICAgICAgICAgICAgIChpZiBzIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgIHN1Y2MgbFxuICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIGwpLFxuICAgICAgICAgICAgICAgIGlmIGkgPD4gRnJlZSB0aGVuXG4gICAgICAgICAgICAgICAgICBzdWNjIGRcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBkIClcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKCAoaWYgcyA8PiAtMSB0aGVuXG4gICAgICAgICAgICAgICAgICAgc3VjYyBsXG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICBsKSxcbiAgICAgICAgICAgICAgICBkICkpKVxuICAgICAgY2Mubm9kZXMgKDAsIDApXG4gIGluXG4gIGxpbmtzIC0gKGRvdWJsZSAvIDIpXG5cbmxldCBhcmVfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSA/cG9zc2liaWxpdGllcyB+c3RyaWN0IHJvb3QxIGNjMSByb290MiBjYzIgPVxuICBsZXQgdGljayB4ID1cbiAgICBtYXRjaCBwb3NzaWJpbGl0aWVzIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgcyAtPiBzIDo9IE1vZHMuSW50MlNldC5yZW1vdmUgeCAhc1xuICBpblxuICBsZXQgcmVjIGF1eCBhdF9sZWFzdF9vbmVfZWRnZSByZW5hbWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGlmIGF0X2xlYXN0X29uZV9lZGdlIHRoZW5cbiAgICAgICAgU29tZSByZW5hbWUsIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZSwgTm9uZVxuICAgIHwgKChvLCBwKSBhcyBwYWlyKSA6OiB0b2RvcyAtPlxuICAgICAgbGV0ICgpID0gdGljayBwYWlyIGluXG4gICAgICAobWF0Y2hcbiAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdDJpXG4gICAgICAgICAgIChmdW4gaSBjIChseCwgaXgpIChseSwgaXkpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lLCBfIC0+IGNcbiAgICAgICAgICAgICB8IFNvbWUgKG9uZV9lZGdlLCB0b2RvLCByZW4pLCBfIC0+XG4gICAgICAgICAgICAgICBpZiAoKG5vdCBzdHJpY3QpICYmIChpeCA9IC0xIHx8IGl5ID0gLTEpKSB8fCBpeCA9IGl5IHRoZW4gKFxuICAgICAgICAgICAgICAgICBtYXRjaCBseCwgbHkgd2l0aFxuICAgICAgICAgICAgICAgICB8IExpbmsgXywgRnJlZSB8IEZyZWUsIExpbmsgXyAtPlxuICAgICAgICAgICAgICAgICAgIE5vbmUsIFNvbWUgKGNjMSwgbywgY2MyLCBwLCBpLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAgfCBVblNwZWMsIEZyZWUgfCBGcmVlLCBVblNwZWMgfCBMaW5rIF8sIFVuU3BlYyB8IFVuU3BlYywgTGluayBfXG4gICAgICAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgICAgICBpZiBzdHJpY3QgdGhlblxuICAgICAgICAgICAgICAgICAgICAgTm9uZSwgU29tZSAoY2MxLCBvLCBjYzIsIHAsIGksIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIFNvbWUgKG9uZV9lZGdlIHx8IChpeCA8PiAtMSAmJiBpeCA9IGl5KSwgdG9kbywgcmVuKSwgTm9uZVxuICAgICAgICAgICAgICAgICB8IFVuU3BlYywgVW5TcGVjIC0+XG4gICAgICAgICAgICAgICAgICAgU29tZSAob25lX2VkZ2UgfHwgKGl4IDw+IC0xICYmIGl4ID0gaXkpLCB0b2RvLCByZW4pLCBOb25lXG4gICAgICAgICAgICAgICAgIHwgRnJlZSwgRnJlZSAtPiBTb21lICh0cnVlLCB0b2RvLCByZW4pLCBOb25lXG4gICAgICAgICAgICAgICAgIHwgTGluayAobjEsIHMxKSwgTGluayAobjIsIHMyKSAtPlxuICAgICAgICAgICAgICAgICAgIGlmIHMxID0gczIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgaWYgUmVuYW1pbmcubWVtIG4xIHJlbiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgIGlmIFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIHJlbiBuMSA9IG4yIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBTb21lICh0cnVlLCB0b2RvLCByZW4pLCBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBTb21lIChjYzEsIG8sIGNjMiwgcCwgaSwgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIG4xIG4yIHJlbiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lLCBTb21lIChjYzEsIG8sIGNjMiwgcCwgaSwgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSByJyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbmRfdHkgY2MxIG4xID0gZmluZF90eSBjYzIgbjIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSAodHJ1ZSwgKG4xLCBuMikgOjogdG9kbywgcicpLCBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgU29tZSAoY2MxLCBvLCBjYzIsIHAsIGksIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIE5vbmUsIFNvbWUgKGNjMSwgbywgY2MyLCBwLCBpLCBmYWxzZSlcbiAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICBOb25lLCBTb21lIChjYzEsIG8sIGNjMiwgcCwgaSwgdHJ1ZSkpXG4gICAgICAgICAgIChTb21lIChhdF9sZWFzdF9vbmVfZWRnZSwgdG9kb3MsIHJlbmFtZSksIE5vbmUpXG4gICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBvIGNjMS5ub2RlcylcbiAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHAgY2MyLm5vZGVzKVxuICAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSwgY29uZmxpY3QgLT4gTm9uZSwgY29uZmxpY3RcbiAgICAgIHwgU29tZSAob25lX2VkZ2VzJywgdG9kb3MnLCByZW4nKSwgXyAtPiBhdXggb25lX2VkZ2VzJyByZW4nIHRvZG9zJylcbiAgaW5cbiAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIHJvb3QxIHJvb3QyIChSZW5hbWluZy5lbXB0eSAoKSkgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSByIC0+XG4gICAgbGV0IGFfc2luZ2xlX2FnZW50ID1cbiAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGIgKGwsIGkpIC0+IGIgJiYgaSA9IC0xICYmIGwgPSBVblNwZWMpXG4gICAgICAgIHRydWVcbiAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHJvb3QxIGNjMS5ub2RlcylcbiAgICAgIHx8IEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAoZnVuIGIgKGwsIGkpIC0+IGIgJiYgaSA9IC0xICYmIGwgPSBVblNwZWMpXG4gICAgICAgICAgIHRydWVcbiAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHJvb3QyIGNjMi5ub2RlcylcbiAgICBpblxuICAgIGF1eCBhX3NpbmdsZV9hZ2VudCByIFsgcm9vdDEsIHJvb3QyIF1cblxuKCoqIEByZXR1cm4gaW5qZWN0aW9uIGZyb20gYSB0byBiICopXG5sZXQgZXF1YWwgfmRlYnVnX21vZGUgYSBiID1cbiAgbWF0Y2hcbiAgICBUb29scy5hcnJheV9taW5fZXF1YWxfbm90X251bGxcbiAgICAgIChBcnJheS5tYXAgKGZ1biB4IC0+IExpc3QubGVuZ3RoIHgsIHgpIGEubm9kZXNfYnlfdHlwZSlcbiAgICAgIChBcnJheS5tYXAgKGZ1biB4IC0+IExpc3QubGVuZ3RoIHgsIHgpIGIubm9kZXNfYnlfdHlwZSlcbiAgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKFtdLCBhZ3MpIC0+XG4gICAgaWYgYWdzID0gW10gdGhlblxuICAgICAgU29tZSAoUmVuYW1pbmcuZW1wdHkgKCkpXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8IFNvbWUgKGgxIDo6IF8sIGFncykgLT5cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBib29sIGFnIC0+XG4gICAgICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgICAgICB8IFNvbWUgXyAtPiBib29sXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCByZW5hbWUsIF8gPSBhcmVfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSB+c3RyaWN0OnRydWUgaDEgYSBhZyBiIGluXG4gICAgICAgICAgcmVuYW1lKVxuICAgICAgTm9uZSBhZ3NcblxubGV0IGF1dG9tb3JwaGlzbXMgfmRlYnVnX21vZGUgYSA9XG4gIG1hdGNoXG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyB4IC0+IFRvb2xzLm1pbl9wb3NfaW50X25vdF96ZXJvIGFjYyAoTGlzdC5sZW5ndGggeCwgeCkpXG4gICAgICAoMCwgW10pIGEubm9kZXNfYnlfdHlwZVxuICB3aXRoXG4gIHwgXywgW10gLT4gWyBSZW5hbWluZy5lbXB0eSAoKSBdXG4gIHwgXywgKGggOjogXyBhcyBsKSAtPlxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBhZyAtPlxuICAgICAgICBtYXRjaCBhcmVfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSB+c3RyaWN0OnRydWUgaCBhIGFnIGEgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gLT4gYWNjXG4gICAgICAgIHwgU29tZSByLCBfIC0+IHIgOjogYWNjKVxuICAgICAgW10gbFxuXG5sZXQgcG90ZW50aWFsX3BhaXJpbmcgc2lncyA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdDJpXG4gICAgKGZ1biB4IGFjYyBsYSBsYiAtPlxuICAgICAgaWYgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyB4IHRoZW5cbiAgICAgICAgYWNjXG4gICAgICBlbHNlXG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBhY2MgYiAtPlxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgYSAtPiBNb2RzLkludDJTZXQuYWRkIChhLCBiKSBhY2MpIGFjYyBsYSlcbiAgICAgICAgICBhY2MgbGIpXG4gICAgTW9kcy5JbnQyU2V0LmVtcHR5XG5cbmxldCBtYXRjaGluZ3MgfmRlYnVnX21vZGUgc2lncyBhIGIgPVxuICBsZXQgcG9zc2liaWxpdGllcyA9XG4gICAgcmVmIChwb3RlbnRpYWxfcGFpcmluZyBzaWdzIGEubm9kZXNfYnlfdHlwZSBiLm5vZGVzX2J5X3R5cGUpXG4gIGluXG4gIGxldCByZWMgZm9yX29uZV9yb290IGFjYyA9XG4gICAgbWF0Y2ggTW9kcy5JbnQyU2V0LmNob29zZSAhcG9zc2liaWxpdGllcyB3aXRoXG4gICAgfCBOb25lIC0+IGFjY1xuICAgIHwgU29tZSAoeCwgeSkgLT5cbiAgICAgIChtYXRjaFxuICAgICAgICAgYXJlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgfnBvc3NpYmlsaXRpZXMgfnN0cmljdDpmYWxzZSB4IGEgeSBiXG4gICAgICAgd2l0aFxuICAgICAgfCBOb25lLCBfIC0+IGZvcl9vbmVfcm9vdCBhY2NcbiAgICAgIHwgU29tZSByLCBfIC0+IGZvcl9vbmVfcm9vdCAociA6OiBhY2MpKVxuICBpblxuICBmb3Jfb25lX3Jvb3QgW11cblxuKCp0dXJucyBhIGNjIGludG8gYSBwYXRoKDpsaXN0KSBpbiB0aGUgZG9tYWluKilcbmxldCByYXdfdG9fbmF2aWdhdGlvbiAoZnVsbCA6IGJvb2wpIG5vZGVzX2J5X3R5cGUgbm9kZXMgPVxuICBsZXQgcmVjIGJ1aWxkX2ZvciAoZmlyc3QsIG91dCkgZG9uID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IExpc3QucmV2IG91dFxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgZmlyc3QnLCBvdXQnLCB0b2RvID1cbiAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgIChmdW4gaSAoKGZpcnN0LCBhbnMsIHJlKSBhcyBhY2MpIChsLCBzKSAtPlxuICAgICAgICAgICAgbGV0ICgoZmlyc3QnLCBhbnMnLCBfKSBhcyBhY2MnKSA9XG4gICAgICAgICAgICAgIGlmIChmdWxsIHx8IGZpcnN0KSAmJiBzID49IDAgdGhlblxuICAgICAgICAgICAgICAgICggZmFsc2UsXG4gICAgICAgICAgICAgICAgICAoICggKGlmIGZpcnN0IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLkZyZXNoIChoLCByYXdfZmluZF90eSBub2Rlc19ieV90eXBlIGgpXG4gICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLkV4aXN0aW5nIGgpLFxuICAgICAgICAgICAgICAgICAgICAgIGkgKSxcbiAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5Ub0ludGVybmFsIHMgKVxuICAgICAgICAgICAgICAgICAgOjogYW5zLFxuICAgICAgICAgICAgICAgICAgcmUgKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICB8IFVuU3BlYyAtPiBhY2MnXG4gICAgICAgICAgICB8IEZyZWUgLT5cbiAgICAgICAgICAgICAgaWYgZnVsbCB8fCBmaXJzdCcgdGhlblxuICAgICAgICAgICAgICAgICggZmFsc2UsXG4gICAgICAgICAgICAgICAgICAoICggKGlmIGZpcnN0JyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5GcmVzaCAoaCwgcmF3X2ZpbmRfdHkgbm9kZXNfYnlfdHlwZSBoKVxuICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5FeGlzdGluZyBoKSxcbiAgICAgICAgICAgICAgICAgICAgICBpICksXG4gICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uVG9Ob3RoaW5nIClcbiAgICAgICAgICAgICAgICAgIDo6IGFucycsXG4gICAgICAgICAgICAgICAgICByZSApXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBhY2MnXG4gICAgICAgICAgICB8IExpbmsgKG4sIGwpIC0+XG4gICAgICAgICAgICAgIGlmIExpc3QubWVtIG4gZG9uIHx8IChuID0gaCAmJiBpID4gbCkgdGhlblxuICAgICAgICAgICAgICAgIGFjYydcbiAgICAgICAgICAgICAgZWxzZSBpZiBuID0gaCB8fCBMaXN0Lm1lbSBuIHJlIHRoZW5cbiAgICAgICAgICAgICAgICBpZiBmdWxsIHx8IGZpcnN0JyB0aGVuXG4gICAgICAgICAgICAgICAgICAoIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAoICggKGlmIGZpcnN0JyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLkZyZXNoIChoLCByYXdfZmluZF90eSBub2Rlc19ieV90eXBlIGgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5FeGlzdGluZyBoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGkgKSxcbiAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5FeGlzdGluZyBuLCBsKSApXG4gICAgICAgICAgICAgICAgICAgIDo6IGFucycsXG4gICAgICAgICAgICAgICAgICAgIHJlIClcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBhY2MnXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAoIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgKCAoIChpZiBmaXJzdCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uRnJlc2ggKGgsIHJhd19maW5kX3R5IG5vZGVzX2J5X3R5cGUgaClcbiAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uRXhpc3RpbmcgaCksXG4gICAgICAgICAgICAgICAgICAgICAgaSApLFxuICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZVxuICAgICAgICAgICAgICAgICAgICAgIChOYXZpZ2F0aW9uLkZyZXNoIChuLCByYXdfZmluZF90eSBub2Rlc19ieV90eXBlIG4pLCBsKSApXG4gICAgICAgICAgICAgICAgICA6OiBhbnMnLFxuICAgICAgICAgICAgICAgICAgbiA6OiByZSApKVxuICAgICAgICAgIChmaXJzdCwgb3V0LCB0KVxuICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBoIG5vZGVzKVxuICAgICAgaW5cbiAgICAgIGJ1aWxkX2ZvciAoZmlyc3QnLCBvdXQnKSAoaCA6OiBkb24pIHRvZG9cbiAgaW5cbiAgbWF0Y2ggcmF3X2ZpbmRfcm9vdCBub2Rlc19ieV90eXBlIHdpdGhcbiAgfCBOb25lIC0+IFtdICgqZW1wdHkgcGF0aCBmb3IgeDAqKVxuICB8IFNvbWUgKHgsIF8pIC0+XG4gICAgKCooYWdfc29ydCxhZ19pZCkqKVxuICAgIGJ1aWxkX2ZvciAodHJ1ZSwgW10pICgqd2lwKikgW10gKCphbHJlYWR5X2RvbmUqKSBbIHggXVxuKCp0b2RvKilcblxubGV0IHJlYyBzdWJfbWluaW1pemVfcmVuYW1pbmcgfmRlYnVnX21vZGUgciA9IGZ1bmN0aW9uXG4gIHwgW10sIF8gLT4gclxuICB8IF8gOjogXywgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgKHggOjogcSBhcyBsKSwgeSA6OiBxJyAtPlxuICAgIGlmIHggPSB5IHRoZW4gKFxuICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIHggeSByIHdpdGhcbiAgICAgIHwgU29tZSByJyAtPiBzdWJfbWluaW1pemVfcmVuYW1pbmcgfmRlYnVnX21vZGUgcicgKHEsIHEnKVxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZnN0cywgbHN0ID0gTGlzdF91dGlsLnBvcF9sYXN0IGwgaW5cbiAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBsc3QgeSByIHdpdGhcbiAgICAgIHwgU29tZSByJyAtPiBzdWJfbWluaW1pemVfcmVuYW1pbmcgfmRlYnVnX21vZGUgcicgKGZzdHMsIHEnKVxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgIClcblxubGV0IG1pbmltaXplX3JlbmFtaW5nIH5kZWJ1Z19tb2RlIGRzdF9uYnQgcmVmX25idCA9XG4gIGxldCByZSA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIHR5IHIgaWRzIC0+IHN1Yl9taW5pbWl6ZV9yZW5hbWluZyB+ZGVidWdfbW9kZSByIChpZHMsIHJlZl9uYnQuKHR5KSkpXG4gICAgcmUgZHN0X25idFxuXG5sZXQgbWluaW1pemUgfmRlYnVnX21vZGUgY2FuZF9uYnQgY2FuZF9ub2RlcyByZWZfbmJ0ID1cbiAgbGV0IHJlID0gbWluaW1pemVfcmVuYW1pbmcgfmRlYnVnX21vZGUgY2FuZF9uYnQgcmVmX25idCBpblxuICBsZXQgcmVfaW1nID0gUmVuYW1pbmcuaW1hZ2UgcmUgaW5cbiAgbGV0IG5vZGVzX2J5X3R5cGUgPVxuICAgIEFycmF5Lm1hcCAoTGlzdC5maWx0ZXIgKGZ1biBhIC0+IE1vZHMuSW50U2V0Lm1lbSBhIHJlX2ltZykpIHJlZl9uYnRcbiAgaW5cbiAgbGV0IG5vZGVzID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIGlkIHNpdGVzIGFjYyAtPlxuICAgICAgICBsZXQgc2l0ZXMnID1cbiAgICAgICAgICBBcnJheS5tYXBcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IExpbmsgKG4sIHMpLCBpIC0+IExpbmsgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIHJlIG4sIHMpLCBpXG4gICAgICAgICAgICAgIHwgKChVblNwZWMgfCBGcmVlKSwgXykgYXMgeCAtPiB4KVxuICAgICAgICAgICAgc2l0ZXNcbiAgICAgICAgaW5cbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSByZSBpZCkgc2l0ZXMnIGFjYylcbiAgICAgIGNhbmRfbm9kZXMgTW9kcy5JbnRNYXAuZW1wdHlcbiAgaW5cbiAge1xuICAgIG5vZGVzX2J5X3R5cGU7XG4gICAgbm9kZXM7XG4gICAgcmVjb2duX25hdiA9IHJhd190b19uYXZpZ2F0aW9uIGZhbHNlIG5vZGVzX2J5X3R5cGUgbm9kZXM7XG4gIH1cblxuKCogcmV0dXJucyBhIGxpc3Qgb2YgY2Mgd2hlcmUgZWFjaCBjYyBpcyBpbmNsdWRlZCBpbiBjYzEqKVxubGV0IGluZnMgfmRlYnVnX21vZGUgc2lncyBjYzEgY2MyID1cbiAgbGV0IHBvc3NpYmlsaXRpZXMgPVxuICAgIHJlZiAocG90ZW50aWFsX3BhaXJpbmcgc2lncyBjYzEubm9kZXNfYnlfdHlwZSBjYzIubm9kZXNfYnlfdHlwZSlcbiAgaW5cbiAgbGV0IHJlYyBhdXggcmVuYW1lIG5vZGVzID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IG5vZGVzXG4gICAgfCAoKG8sIHApIGFzIHBhaXIpIDo6IHRvZG9zIC0+XG4gICAgICBsZXQgKCkgPSBwb3NzaWJpbGl0aWVzIDo9IE1vZHMuSW50MlNldC5yZW1vdmUgcGFpciAhcG9zc2liaWxpdGllcyBpblxuICAgICAgbGV0IGxuazEgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBvIGNjMS5ub2RlcyBpblxuICAgICAgbGV0ICh0b2RvcycsIHJlbicpLCBvdXRsID1cbiAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0X21hcGlcbiAgICAgICAgICAoZnVuIGsgKCh0b2RvLCByZW4pIGFzIGFjYykgKGx5LCBpeSkgLT5cbiAgICAgICAgICAgIGxldCBseCwgaXggPSBsbmsxLihrKSBpblxuICAgICAgICAgICAgbWF0Y2ggbHgsIGx5IHdpdGhcbiAgICAgICAgICAgIHwgTGluayBfLCBGcmVlXG4gICAgICAgICAgICB8IEZyZWUsIExpbmsgX1xuICAgICAgICAgICAgfCBMaW5rIF8sIFVuU3BlY1xuICAgICAgICAgICAgfCBVblNwZWMsIExpbmsgX1xuICAgICAgICAgICAgfCBVblNwZWMsIEZyZWVcbiAgICAgICAgICAgIHwgRnJlZSwgVW5TcGVjXG4gICAgICAgICAgICB8IFVuU3BlYywgVW5TcGVjIC0+XG4gICAgICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgICAgICggVW5TcGVjLFxuICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGl5XG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIC0xICkgKVxuICAgICAgICAgICAgfCBGcmVlLCBGcmVlIC0+XG4gICAgICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgICAgICggRnJlZSxcbiAgICAgICAgICAgICAgICAgIGlmIGl4ID0gaXkgdGhlblxuICAgICAgICAgICAgICAgICAgICBpeVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAtMSApIClcbiAgICAgICAgICAgIHwgKExpbmsgKG4xLCBzMSkgYXMgeCksIExpbmsgKG4yLCBzMikgLT5cbiAgICAgICAgICAgICAgaWYgczEgPSBzMiB0aGVuXG4gICAgICAgICAgICAgICAgaWYgUmVuYW1pbmcubWVtIG4xIHJlbiB0aGVuXG4gICAgICAgICAgICAgICAgICAoIGFjYyxcbiAgICAgICAgICAgICAgICAgICAgKCAoaWYgUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgcmVuIG4xID0gbjIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIFVuU3BlYyksXG4gICAgICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBpeVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC0xICkgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIG4xIG4yIHJlbiB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgKCBhY2MsXG4gICAgICAgICAgICAgICAgICAgICAgKCBVblNwZWMsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBpeCA9IGl5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTEgKSApXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgcicgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgZmluZF90eSBjYzEgbjEgPSBmaW5kX3R5IGNjMiBuMiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKCAoKG4xLCBuMikgOjogdG9kbywgcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKCB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpeCA9IGl5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpeVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEgKSApXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoIGFjYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICggVW5TcGVjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpeCA9IGl5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpeVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEgKSApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgKCBhY2MsXG4gICAgICAgICAgICAgICAgICAoIFVuU3BlYyxcbiAgICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIC0xICkgKSlcbiAgICAgICAgICAodG9kb3MsIHJlbmFtZSlcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gcCBjYzIubm9kZXMpXG4gICAgICBpblxuICAgICAgaWYgQXJyYXkuZm9sZF9sZWZ0IChmdW4gYiAobCwgaSkgLT4gYiAmJiBsID0gVW5TcGVjICYmIGkgPCAwKSB0cnVlIG91dGxcbiAgICAgIHRoZW5cbiAgICAgICAgYXV4IHJlbicgbm9kZXMgdG9kb3MnXG4gICAgICBlbHNlXG4gICAgICAgIGF1eCByZW4nIChNb2RzLkludE1hcC5hZGQgbyBvdXRsIG5vZGVzKSB0b2RvcydcbiAgaW5cblxuICBsZXQgcmVjIGZvcl9vbmVfcm9vdCBhY2MgPVxuICAgIG1hdGNoIE1vZHMuSW50MlNldC5jaG9vc2UgIXBvc3NpYmlsaXRpZXMgd2l0aFxuICAgIHwgTm9uZSAtPiBhY2NcbiAgICB8IFNvbWUgKHJvb3QxLCByb290MikgLT5cbiAgICAgIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgcm9vdDEgcm9vdDIgKFJlbmFtaW5nLmVtcHR5ICgpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IFNvbWUgciAtPlxuICAgICAgICBsZXQgbm9kZXMgPSBhdXggciBNb2RzLkludE1hcC5lbXB0eSBbIHJvb3QxLCByb290MiBdIGluXG4gICAgICAgIGxldCBhY2MnID1cbiAgICAgICAgICBpZiBNb2RzLkludE1hcC5pc19lbXB0eSBub2RlcyB0aGVuXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBub2Rlc19ieV90eXBlID1cbiAgICAgICAgICAgICAgQXJyYXkubWFwXG4gICAgICAgICAgICAgICAgKExpc3QuZmlsdGVyIChmdW4gYSAtPiBNb2RzLkludE1hcC5tZW0gYSBub2RlcykpXG4gICAgICAgICAgICAgICAgY2MxLm5vZGVzX2J5X3R5cGVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtaW5pbWl6ZSB+ZGVidWdfbW9kZSBub2Rlc19ieV90eXBlIG5vZGVzIGNjMS5ub2Rlc19ieV90eXBlIDo6IGFjY1xuICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgZm9yX29uZV9yb290IGFjYycpXG4gIGluXG4gIGZvcl9vbmVfcm9vdCBbXVxuXG4oKiByZW5hbWluZyBpcyBhIHRvdGFsIG1vcnBoaXNtIGZyb20gY2MxJyB0byBjYzI7IGNjMScgaXMgaW5jbHVkZWQgaW4gY2MxICopXG5sZXQgaW50ZXJzZWN0aW9uIHJlbmFtaW5nIGNjMSBjYzIgPVxuICBsZXQgbm9kZXMsIGltYWdlID1cbiAgICBSZW5hbWluZy5mb2xkXG4gICAgICAoZnVuIGkgaiAoKGFjY24sIGwpIGFzIGFjYykgLT5cbiAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBjYzEubm9kZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSBub2RlczEgLT5cbiAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaiBjYzIubm9kZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICB8IFNvbWUgbm9kZXMyIC0+XG4gICAgICAgICAgICBsZXQgb3V0ID1cbiAgICAgICAgICAgICAgQXJyYXkubWFwaVxuICAgICAgICAgICAgICAgIChmdW4gayAobDIsIGkyKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGwxLCBpMSA9IG5vZGVzMS4oaykgaW5cbiAgICAgICAgICAgICAgICAgICggKGlmIGwxID0gVW5TcGVjIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgVW5TcGVjXG4gICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgIGwyKSxcbiAgICAgICAgICAgICAgICAgICAgaWYgaTEgPSAtMSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGkyICkpXG4gICAgICAgICAgICAgICAgbm9kZXMyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGogb3V0IGFjY24sIGogOjogbCkpXG4gICAgICByZW5hbWluZyAoTW9kcy5JbnRNYXAuZW1wdHksIFtdKVxuICBpblxuICBsZXQgbm9kZXNfYnlfdHlwZSA9XG4gICAgQXJyYXkubWFwIChMaXN0LmZpbHRlciAoZnVuIGEgLT4gTGlzdC5tZW0gYSBpbWFnZSkpIGNjMi5ub2Rlc19ieV90eXBlXG4gIGluXG4gIHtcbiAgICBub2Rlc19ieV90eXBlO1xuICAgIG5vZGVzO1xuICAgIHJlY29nbl9uYXYgPSByYXdfdG9fbmF2aWdhdGlvbiBmYWxzZSBub2Rlc19ieV90eXBlIG5vZGVzO1xuICB9XG5cbnR5cGUgZXh0cmVtaXR5ID0gT3BlbiB8IENsb3NlZFxuXG5sZXQgZmV0Y2hfZXhpdF9zaXRlIF9zaWdzIHNpZCA9IHNpZCsxXG5sZXQgcmVjIGNvdW50ZXJfdmFsdWUgc2lncyBub2RlcyAobmlkLCBzaWQpIGNvdW50ID1cbiAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gbmlkIG5vZGVzIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwicGVuZGluZyBib25kcyBlbmNvdW50ZXJlZCB3aGVuIGNvbXB1dGluZyB0aGUgbGVuZ3RoIG9mIGEgY2hhaW4gKGNvdW50ZXJzKVwiXG4gIHwgU29tZSBhZyAtPlxuICAgIGxldCBvdGhlciA9IGZldGNoX2V4aXRfc2l0ZSBzaWdzIHNpZCBpblxuICAgIGxldCAoZWwsXykgPSBhZy4ob3RoZXIpIGluXG4gICAgbWF0Y2ggZWwgd2l0aFxuICAgICAgfCBVblNwZWMgLT4gY291bnQsIE9wZW5cbiAgICAgIHwgRnJlZSAtPiBjb3VudCwgQ2xvc2VkXG4gICAgICB8IExpbmsgKGRuLCBkaSkgLT5cbiAgICAgICAgICAgICBjb3VudGVyX3ZhbHVlIHNpZ3Mgbm9kZXMgKGRuLCBkaSkgKGNvdW50ICsgMSlcblxubGV0IGNvdW50ZXJfdmFsdWUgc2lncyBub2RlcyAobmlkLCBzaWQpID1cbiAgY291bnRlcl92YWx1ZSBzaWdzIG5vZGVzIChuaWQsIHNpZCkgMFxuXG5sZXQgY291bnRlcl92YWx1ZV9jYyBzaWdzIGNjIChuaWQsIHNpZCkgPVxuICBsZXQgbm9kZXMgPSBjYy5ub2RlcyBpblxuICBsZXQgY291bnQsIGV4dHJlbWl0eSA9IGNvdW50ZXJfdmFsdWUgc2lncyBub2RlcyAobmlkLCBzaWQpIGluXG4gIGxldCAoKSA9IG1hdGNoIGV4dHJlbWl0eSB3aXRoIE9wZW4gLT4gZmFpbHdpdGggXCJwZW5kaW5nIGJvbmRzIGVuY291bnRlcmVkIHdoZW4gY29tcHV0aW5nIHRoZSBsZW5ndGggb2YgYSBjaGFpbiAoY291bnRlcnMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2xvc2VkIC0+ICgpXG4gIGluIGNvdW50XG5cbmxldCBkb3Rjb21tYSBkb3RuZXQgPVxuICBpZiBkb3RuZXQgdGhlblxuICAgIGZ1biBmbXQgLT5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiLFwiXG4gIGVsc2VcbiAgICBQcC5zcGFjZVxuXG5sZXQgcHJpbnRfY2Mgfm5vQ291bnRlcnMgPyhkb3RuZXQgPSBmYWxzZSkgPyhmdWxsX3NwZWNpZXMgPSBmYWxzZSkgP3NpZ3MgP2NjX2lkXG4gICAgfndpdGhfaWQgZiBjYyA9XG4gIGxldCBwcmludF9pbnRmICgoYWdfaSwgXykgYXMgYWcpIGxpbmtfaWRzIG5laWdoID1cbiAgICBzbmRcbiAgICAgIChUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAoZnVuIHAgKG5vdF9lbXB0eSwgKChmcmVlLCBsaW5rX2lkcykgYXMgb3V0KSkgKGVsLCBzdCkgLT5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBpZiBzdCA+PSAwIHRoZW5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhXCJcbiAgICAgICAgICAgICAgICAgKGlmIG5vdF9lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGRvdGNvbW1hIGRvdG5ldFxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBQcC5lbXB0eSlcbiAgICAgICAgICAgICAgICAgKEFnZW50LnByaW50X2ludGVybmFsID9zaWdzIGFnIHApXG4gICAgICAgICAgICAgICAgIHN0XG4gICAgICAgICAgICAgZWxzZSBpZiBlbCA8PiBVblNwZWMgdGhlblxuICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWFcIlxuICAgICAgICAgICAgICAgICAoaWYgbm90X2VtcHR5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZG90Y29tbWEgZG90bmV0XG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIFBwLmVtcHR5KVxuICAgICAgICAgICAgICAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBhZylcbiAgICAgICAgICAgICAgICAgcFxuICAgICAgICAgICBpblxuICAgICAgICAgICBtYXRjaCBlbCB3aXRoXG4gICAgICAgICAgIHwgVW5TcGVjIC0+XG4gICAgICAgICAgICAgaWYgc3QgPj0gMCB0aGVuIChcbiAgICAgICAgICAgICAgIGxldCAoKSA9IGlmIGZ1bGxfc3BlY2llcyB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlsuXVwiIGluXG4gICAgICAgICAgICAgICB0cnVlLCBvdXRcbiAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgIG5vdF9lbXB0eSwgb3V0XG4gICAgICAgICAgIHwgRnJlZSAtPlxuICAgICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlsuXVwiIGluXG4gICAgICAgICAgICAgdHJ1ZSwgb3V0XG4gICAgICAgICAgIHwgTGluayAoZHN0X2EsIGRzdF9wKSAtPlxuICAgICAgICAgICAgIGxldCBkc3RfdHkgPSBmaW5kX3R5IGNjIGRzdF9hIGluXG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgIG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgICAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgICAgICAgICAgICBTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIGRzdF90eSAmJiBub3Qgbm9Db3VudGVyc1xuICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgbGV0IChjb3VudGVyLGtpbmQpID0gY291bnRlcl92YWx1ZSBzaWdzIGNjLm5vZGVzIChkc3RfYSwgZHN0X3ApIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInslcyVkfVwiXG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBraW5kIHdpdGggQ2xvc2VkIC0+IFwiPVwiIHwgT3BlbiAtPiBcIj49XCIpXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICB0cnVlLCBvdXRcbiAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgbGV0IGksIG91dCcgPVxuICAgICAgICAgICAgICAgICBtYXRjaCBNb2RzLkludDJNYXAuZmluZF9vcHRpb24gKGRzdF9hLCBkc3RfcCkgbGlua19pZHMgd2l0aFxuICAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB4LCBvdXRcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgZnJlZSwgKHN1Y2MgZnJlZSwgTW9kcy5JbnQyTWFwLmFkZCAoYWdfaSwgcCkgZnJlZSBsaW5rX2lkcylcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiWyVpXVwiIGkgaW5cbiAgICAgICAgICAgICAgIHRydWUsIG91dCdcbiAgICAgICAgICAgICApKVxuICAgICAgICAgKGZhbHNlLCBsaW5rX2lkcykgbmVpZ2gpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggY2NfaWQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBjY19pZCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLypjYyVpKi9AIFwiIGNjX2lkXG4gIGluXG4gIGxldCBfLCBfID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIHggZWwgKG5vdF9lbXB0eSwgbGlua19pZHMpIC0+XG4gICAgICAgIGxldCBhZ194ID0geCwgZmluZF90eSBjYyB4IGluXG4gICAgICAgIGlmXG4gICAgICAgICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgICAgICAgKG5vdCAoU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyAoc25kIGFnX3gpKSkgfHwgbm9Db3VudGVyc1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0QFs8aD4lYShcIlxuICAgICAgICAgICAgICAoaWYgbm90X2VtcHR5IHRoZW5cbiAgICAgICAgICAgICAgICAgaWYgZG90bmV0IHRoZW5cbiAgICAgICAgICAgICAgICAgICBmdW4gZm10IC0+XG4gICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIi5cIlxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgUHAuY29tbWFcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgUHAuZW1wdHkpXG4gICAgICAgICAgICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZClcbiAgICAgICAgICAgICAgYWdfeFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG91dCA9IHByaW50X2ludGYgYWdfeCBsaW5rX2lkcyBlbCBpblxuICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIpQF1cIiBpblxuICAgICAgICAgIHRydWUsIG91dFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBub3RfZW1wdHksIGxpbmtfaWRzKVxuICAgICAgY2Mubm9kZXNcbiAgICAgIChmYWxzZSwgKDEsIE1vZHMuSW50Mk1hcC5lbXB0eSkpXG4gIGluXG4gICgpXG5cbmxldCBwcmludF9jY19hc19pZCBzaWdzIGYgY2MgPVxuICBsZXQgcHJpbnRfaW50ZiAoKGFnX2ksIF8pIGFzIGFnKSBsaW5rX2lkcyBuZWlnaCA9XG4gICAgc25kXG4gICAgICAoVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgKGZ1biBwIChub3RfZW1wdHksICgoZnJlZSwgbGlua19pZHMpIGFzIG91dCkpIChlbCwgc3QpIC0+XG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgaWYgZWwgPD4gVW5TcGVjIHx8IHN0ID49IDAgdGhlblxuICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWFcIlxuICAgICAgICAgICAgICAgICAoaWYgbm90X2VtcHR5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIl9cIlxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBQcC5lbXB0eSlcbiAgICAgICAgICAgICAgICAgKEFnZW50LnByaW50X3NpdGUgfnNpZ3MgYWcpXG4gICAgICAgICAgICAgICAgIHBcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBpZiBzdCA+PSAwIHRoZW5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ+JWFcIiAoQWdlbnQucHJpbnRfcmF3X2ludGVybmFsIH5zaWdzIGFnIHApIHN0XG4gICAgICAgICAgIGluXG4gICAgICAgICAgIG1hdGNoIGVsIHdpdGhcbiAgICAgICAgICAgfCBVblNwZWMgLT4gbm90X2VtcHR5IHx8IHN0ID49IDAsIG91dFxuICAgICAgICAgICB8IEZyZWUgLT4gdHJ1ZSwgb3V0XG4gICAgICAgICAgIHwgTGluayAoZHN0X2EsIGRzdF9wKSAtPlxuICAgICAgICAgICAgIGxldCBkc3RfdHkgPSBmaW5kX3R5IGNjIGRzdF9hIGluXG4gICAgICAgICAgICAgaWYgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBkc3RfdHkgdGhlbiAoXG4gICAgICAgICAgICAgICBsZXQgY291bnRlcixleHRyZW1pdHkgID0gY291bnRlcl92YWx1ZSBzaWdzIGNjLm5vZGVzIChkc3RfYSwgZHN0X3ApICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID0gbWF0Y2ggZXh0cmVtaXR5IHdpdGggT3BlbiAtPiBmYWlsd2l0aCAoXCJib25kcyBzaG91bGQgbm90IGJlIG9wZW5lZFwiKSB8IENsb3NlZCAtPiAoKSBpblxuICAgICAgICAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIn4rJWRcIiBjb3VudGVyIGluXG4gICAgICAgICAgICAgICB0cnVlLCBvdXRcbiAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgbGV0IGksIG91dCcgPVxuICAgICAgICAgICAgICAgICBtYXRjaCBNb2RzLkludDJNYXAuZmluZF9vcHRpb24gKGRzdF9hLCBkc3RfcCkgbGlua19pZHMgd2l0aFxuICAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB4LCBvdXRcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgZnJlZSwgKHN1Y2MgZnJlZSwgTW9kcy5JbnQyTWFwLmFkZCAoYWdfaSwgcCkgZnJlZSBsaW5rX2lkcylcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwifiVpXCIgaSBpblxuICAgICAgICAgICAgICAgdHJ1ZSwgb3V0J1xuICAgICAgICAgICAgICkpXG4gICAgICAgICAoZmFsc2UsIGxpbmtfaWRzKSBuZWlnaClcbiAgaW5cbiAgbGV0IF8sIF8gPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4geCBlbCAobm90X2VtcHR5LCBsaW5rX2lkcykgLT5cbiAgICAgICAgbGV0IGFnX3ggPSB4LCBmaW5kX3R5IGNjIHggaW5cbiAgICAgICAgaWYgbm90IChTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIChzbmQgYWdfeCkpIHRoZW4gKFxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXRAWzxoPiVhX19cIlxuICAgICAgICAgICAgICAoaWYgbm90X2VtcHR5IHRoZW5cbiAgICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIl9fXCJcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgUHAuZW1wdHkpXG4gICAgICAgICAgICAgIChBZ2VudC5wcmludCB+c2lncyB+d2l0aF9pZDpmYWxzZSlcbiAgICAgICAgICAgICAgYWdfeFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG91dCA9IHByaW50X2ludGYgYWdfeCBsaW5rX2lkcyBlbCBpblxuICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAXVwiIGluXG4gICAgICAgICAgdHJ1ZSwgb3V0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIG5vdF9lbXB0eSwgbGlua19pZHMpXG4gICAgICBjYy5ub2Rlc1xuICAgICAgKGZhbHNlLCAoMSwgTW9kcy5JbnQyTWFwLmVtcHR5KSlcbiAgaW5cbiAgKClcblxubGV0IHRvX3lvanNvbiBjYyA9XG4gIG1hdGNoIE1vZHMuSW50TWFwLm1heF9rZXkgY2Mubm9kZXMgd2l0aFxuICB8IE5vbmUgLT4gYE51bGxcbiAgfCBTb21lIG0gLT5cbiAgICBsZXQgcyA9IHN1Y2MgbSBpblxuICAgIGxldCBzb3J0cyA9IEFycmF5Lm1ha2UgcyBOb25lIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4gdHkgLT4gTGlzdC5pdGVyIChmdW4gaWQgLT4gc29ydHMuKGlkKSA8LSBTb21lIHR5KSlcbiAgICAgICAgY2Mubm9kZXNfYnlfdHlwZVxuICAgIGluXG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgICggXCJzb3J0c1wiLFxuICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgKGZ1biB4IGFjYyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBgTnVsbFxuICAgICAgICAgICAgICAgICB8IFNvbWUgaSAtPiBgSW50IGkpXG4gICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgIHNvcnRzIFtdKSApO1xuICAgICAgICAoIFwibm9kZXNcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKFRvb2xzLnJlY3RpXG4gICAgICAgICAgICAgICAoZnVuIGFjYyBpIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIGNjLm5vZGVzIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGBOdWxsXG4gICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChsLCBzKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZyZWUgLT4gYEJvb2wgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMaW5rIChuLCBzKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgQXNzb2MgWyBcIm5vZGVcIiwgYEludCBuOyBcInNpdGVcIiwgYEludCBzIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVW5TcGVjIC0+IGBCb29sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzIDwgMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgTnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBJbnQgcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICBhIFtdKSlcbiAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgW10gcykgKTtcbiAgICAgIF1cblxubGV0IG9mX3lvanNvbiBzaWdfZGVjbCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwic29ydHNcIiwgYExpc3Qgcyk7IChcIm5vZGVzXCIsIGBMaXN0IG4pIF1cbiAgfCBgQXNzb2MgWyAoXCJub2Rlc1wiLCBgTGlzdCBuKTsgKFwic29ydHNcIiwgYExpc3QgcykgXSAtPlxuICAgIGxldCBfLCBub2RlcyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChpLCBhY2MpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBgTnVsbCAtPiBzdWNjIGksIGFjY1xuICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgKCBzdWNjIGksXG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBpXG4gICAgICAgICAgICAgICAgKFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICB8IGBMaXN0IFsgYEJvb2wgYjsgYE51bGwgXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoIChpZiBiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVblNwZWMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgIC0xIClcbiAgICAgICAgICAgICAgICAgICAgIHwgYExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGBBc3NvYyBbIChcIm5vZGVcIiwgYEludCBuKTsgKFwic2l0ZVwiLCBgSW50IHMpIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYEFzc29jIFsgKFwic2l0ZVwiLCBgSW50IHMpOyAoXCJub2RlXCIsIGBJbnQgbikgXSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYE51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBMaW5rIChuLCBzKSwgLTFcbiAgICAgICAgICAgICAgICAgICAgIHwgYExpc3QgWyBgQm9vbCBiOyBgSW50IHMgXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoIChpZiBiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVblNwZWMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHMgKVxuICAgICAgICAgICAgICAgICAgICAgfCBgTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggYEFzc29jIFsgKFwibm9kZVwiLCBgSW50IG4pOyAoXCJzaXRlXCIsIGBJbnQgcykgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgQXNzb2MgWyAoXCJzaXRlXCIsIGBJbnQgcyk7IChcIm5vZGVcIiwgYEludCBuKSBdICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBgSW50IHN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTGluayAobiwgcyksIHN0XG4gICAgICAgICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBub2RlXCIsIHgpKSlcbiAgICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgICAgICAgIGFjYyApXG4gICAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbm9kZSBsaW5rc1wiLCB4KSkpXG4gICAgICAgICgwLCBNb2RzLkludE1hcC5lbXB0eSkgblxuICAgIGluXG4gICAgbGV0IG5vZGVzX2J5X3R5cGUgPSBBcnJheS5tYWtlIChTaWduYXR1cmUuc2l6ZSBzaWdfZGVjbCkgW10gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyaVxuICAgICAgICAoZnVuIGkgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IGBOdWxsIC0+ICgpXG4gICAgICAgICAgfCBgSW50IHR5IC0+IG5vZGVzX2J5X3R5cGUuKHR5KSA8LSBpIDo6IG5vZGVzX2J5X3R5cGUuKHR5KVxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJXcm9uZyBub2RlIHR5cGVcIiwgeCkpKVxuICAgICAgICBzXG4gICAgaW5cbiAgICB7XG4gICAgICBub2Rlc19ieV90eXBlO1xuICAgICAgbm9kZXM7XG4gICAgICByZWNvZ25fbmF2ID0gcmF3X3RvX25hdmlnYXRpb24gZmFsc2Ugbm9kZXNfYnlfdHlwZSBub2RlcztcbiAgICB9XG4gIHwgYE51bGwgLT4gZW1wdHlfY2Mgc2lnX2RlY2xcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIHBhdHRlcm5cIiwgeCkpXG5cbmxldCBtZXJnZV9jb21wYXRpYmxlIH5kZWJ1Z19tb2RlIHJlc2VydmVkX2lkcyBmcmVlX2lkIGluajFfdG9fMiBjYzEgY2MyID1cbiAgbGV0IGltZyA9IFJlbmFtaW5nLmltYWdlIGluajFfdG9fMiBpblxuICBsZXQgYXZhaWxhYmxlX2lkcyA9XG4gICAgQXJyYXkubWFwXG4gICAgICAoTGlzdC5maWx0ZXIgKGZ1biBpZCAtPiBub3QgKE1vZHMuSW50U2V0Lm1lbSBpZCBpbWcpKSlcbiAgICAgIHJlc2VydmVkX2lkc1xuICBpblxuICBsZXQgdXNlZF9pZHMgPVxuICAgIEFycmF5Lm1hcFxuICAgICAgKExpc3RfdXRpbC5tYXBfb3B0aW9uIChmdW4gaWQgLT5cbiAgICAgICAgICAgaWYgUmVuYW1pbmcubWVtIGlkIGluajFfdG9fMiB0aGVuXG4gICAgICAgICAgICAgU29tZSAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qMV90b18yIGlkKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgTm9uZSkpXG4gICAgICBjYzEubm9kZXNfYnlfdHlwZVxuICBpblxuICBsZXQgYXZhaWxhYmxlX2luX2NjMSA9XG4gICAgQXJyYXkubWFwaVxuICAgICAgKGZ1biBpIGwgLT5cbiAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biB4IC0+IG5vdCAoTGlzdC5tZW0geCBjYzEubm9kZXNfYnlfdHlwZS4oaSkpKSBsKVxuICAgICAgcmVzZXJ2ZWRfaWRzXG4gIGluXG4gIGxldCBmcmVlX2lkX2Zvcl9jYzEgPSByZWYgZnJlZV9pZCBpblxuXG4gIGxldCBnZXRfY2MyIGogKCgoaW5qMSwgZnJlZV9pZCksIGluajIsICh0b2RvczEsIHRvZG9zMikpIGFzIHBhY2spID1cbiAgICBpZiBSZW5hbWluZy5tZW0gaiBpbmoyIHRoZW5cbiAgICAgIFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluajIgaiwgcGFja1xuICAgIGVsc2UgKFxuICAgICAgbGV0IHR5ID0gZmluZF90eSBjYzIgaiBpblxuICAgICAgbGV0IGltZywgZnJlZV9pZCcgPVxuICAgICAgICBtYXRjaCBhdmFpbGFibGVfaWRzLih0eSkgd2l0aFxuICAgICAgICB8IFtdIC0+IGZyZWVfaWQsIHN1Y2MgZnJlZV9pZFxuICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgIGxldCAoKSA9IGF2YWlsYWJsZV9pZHMuKHR5KSA8LSB0IGluXG4gICAgICAgICAgaCwgZnJlZV9pZFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHVzZWRfaWRzLih0eSkgPC0gaW1nIDo6IHVzZWRfaWRzLih0eSkgaW5cbiAgICAgIGxldCBvID1cbiAgICAgICAgbWF0Y2ggYXZhaWxhYmxlX2luX2NjMS4odHkpIHdpdGhcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIGxldCB4ID0gIWZyZWVfaWRfZm9yX2NjMSBpblxuICAgICAgICAgIGxldCAoKSA9IGluY3IgZnJlZV9pZF9mb3JfY2MxIGluXG4gICAgICAgICAgeFxuICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgIGxldCAoKSA9IGF2YWlsYWJsZV9pbl9jYzEuKHR5KSA8LSB0IGluXG4gICAgICAgICAgaFxuICAgICAgaW5cbiAgICAgICggaW1nLFxuICAgICAgICAoICggKG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBvIGltZyBpbmoxIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2UpLFxuICAgICAgICAgICAgZnJlZV9pZCcgKSxcbiAgICAgICAgICAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGogaW1nIGluajIgd2l0aFxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICAodG9kb3MxLCAoaiwgaW1nKSA6OiB0b2RvczIpICkgKVxuICAgIClcbiAgaW5cblxuICBsZXQgZ2V0X2NjMSBpICgoKGluajEsIGZyZWVfaWQpLCBpbmoyLCAodG9kb3MxLCB0b2RvczIpKSBhcyBwYWNrKSA9XG4gICAgaWYgUmVuYW1pbmcubWVtIGkgaW5qMSB0aGVuXG4gICAgICBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmoxIGksIHBhY2tcbiAgICBlbHNlIChcbiAgICAgIGxldCB0eSA9IGZpbmRfdHkgY2MxIGkgaW5cbiAgICAgIGxldCBpbWcsIGZyZWVfaWQnID1cbiAgICAgICAgbWF0Y2ggYXZhaWxhYmxlX2lkcy4odHkpIHdpdGhcbiAgICAgICAgfCBbXSAtPiBmcmVlX2lkLCBzdWNjIGZyZWVfaWRcbiAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICBsZXQgKCkgPSBhdmFpbGFibGVfaWRzLih0eSkgPC0gdCBpblxuICAgICAgICAgIGgsIGZyZWVfaWRcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSB1c2VkX2lkcy4odHkpIDwtIGltZyA6OiB1c2VkX2lkcy4odHkpIGluXG4gICAgICAoIGltZyxcbiAgICAgICAgKCAoIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaSBpbWcgaW5qMSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICAgIGZyZWVfaWQnICksXG4gICAgICAgICAgaW5qMixcbiAgICAgICAgICAoKGksIGltZykgOjogdG9kb3MxLCB0b2RvczIpICkgKVxuICAgIClcbiAgaW5cbiAgbGV0IHBhY2snLCBub2RlcyA9XG4gICAgbGV0IHJlYyBnbHVlIHBhY2sgaW5qMiBub2RlcyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdLCBbXSAtPiBwYWNrLCBub2Rlc1xuICAgICAgfCBbXSwgKGksIGopIDo6IHRvZG9zMiAtPlxuICAgICAgICBsZXQgbm9kZXNpID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gaSBjYzIubm9kZXMgaW5cbiAgICAgICAgbGV0IG5vZGVzbyA9IEFycmF5LmNvcHkgbm9kZXNpIGluXG4gICAgICAgIGxldCBwYWNrJywgaW5qMicsIHRvZG9zJyA9XG4gICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgKGZ1biBrIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICB8IChVblNwZWMgfCBGcmVlKSwgXyAtPiBhY2NcbiAgICAgICAgICAgICAgfCBMaW5rIChuLCBzKSwgc3QgLT5cbiAgICAgICAgICAgICAgICBsZXQgbicsIGFjYycgPSBnZXRfY2MyIG4gYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gbm9kZXNvLihrKSA8LSBMaW5rIChuJywgcyksIHN0IGluXG4gICAgICAgICAgICAgICAgYWNjJylcbiAgICAgICAgICAgIChwYWNrLCBpbmoyLCAoW10sIHRvZG9zMikpXG4gICAgICAgICAgICBub2Rlc2lcbiAgICAgICAgaW5cbiAgICAgICAgZ2x1ZSBwYWNrJyBpbmoyJyAoTW9kcy5JbnRNYXAuYWRkIGogbm9kZXNvIG5vZGVzKSB0b2RvcydcbiAgICAgIHwgKGksIGopIDo6IHRvZG9zMSwgdG9kb3MyIC0+XG4gICAgICAgIGxldCBub2Rlc2kgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBpIGNjMS5ub2RlcyBpblxuICAgICAgICBsZXQgbm9kZXNvID0gQXJyYXkuY29weSBub2Rlc2kgaW5cbiAgICAgICAgbGV0IHBhY2snLCBpbmoyJywgdG9kb3MnID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBqIGNjMi5ub2RlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgICAgIChmdW4gayBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IChVblNwZWMgfCBGcmVlKSwgXyAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IExpbmsgKG4sIHMpLCBzdCAtPlxuICAgICAgICAgICAgICAgICAgbGV0IG4nLCBhY2MnID0gZ2V0X2NjMSBuIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gbm9kZXNvLihrKSA8LSBMaW5rIChuJywgcyksIHN0IGluXG4gICAgICAgICAgICAgICAgICBhY2MnKVxuICAgICAgICAgICAgICAocGFjaywgaW5qMiwgKHRvZG9zMSwgdG9kb3MyKSlcbiAgICAgICAgICAgICAgbm9kZXNpXG4gICAgICAgICAgfCBTb21lIG5vZGVzaiAtPlxuICAgICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgICAoZnVuIGsgYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBGcmVlLCBfIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgXywgc3RqID0gbm9kZXNqLihrKSBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gaWYgc3RqIDw+IC0xIHRoZW4gbm9kZXNvLihrKSA8LSBGcmVlLCBzdGogaW5cbiAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgIHwgTGluayAobiwgcyksIHN0aSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IF8sIHN0aiA9IG5vZGVzai4oaykgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBzdG8gPVxuICAgICAgICAgICAgICAgICAgICBpZiBzdGogPD4gLTEgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIHN0alxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgc3RpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IG4nLCBhY2MnID0gZ2V0X2NjMSBuIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gbm9kZXNvLihrKSA8LSBMaW5rIChuJywgcyksIHN0byBpblxuICAgICAgICAgICAgICAgICAgYWNjJ1xuICAgICAgICAgICAgICAgIHwgVW5TcGVjLCBzdGkgLT5cbiAgICAgICAgICAgICAgICAgIChtYXRjaCBub2Rlc2ouKGspIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgVW5TcGVjLCBzdGogLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gaWYgc3RqIDw+IC0xIHRoZW4gbm9kZXNvLihrKSA8LSBVblNwZWMsIHN0aiBpblxuICAgICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICAgIHwgRnJlZSwgc3RqIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgbm9kZXNvLihrKSA8LVxuICAgICAgICAgICAgICAgICAgICAgICAgKCBGcmVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdGogPD4gLTEgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0alxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpIClcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgICB8IExpbmsgKG4sIHMpLCBzdGogLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0byA9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgc3RqIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0alxuICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0aVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbicsIGFjYycgPSBnZXRfY2MyIG4gYWNjIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG5vZGVzby4oaykgPC0gTGluayAobicsIHMpLCBzdG8gaW5cbiAgICAgICAgICAgICAgICAgICAgYWNjJykpXG4gICAgICAgICAgICAgIChwYWNrLCBpbmoyLCAodG9kb3MxLCB0b2RvczIpKVxuICAgICAgICAgICAgICBub2Rlc2lcbiAgICAgICAgaW5cbiAgICAgICAgZ2x1ZSBwYWNrJyBpbmoyJyAoTW9kcy5JbnRNYXAuYWRkIGogbm9kZXNvIG5vZGVzKSB0b2RvcydcbiAgICBpblxuICAgIGdsdWUgKGluajFfdG9fMiwgZnJlZV9pZClcbiAgICAgIChSZW5hbWluZy5pZGVudGl0eSAoTW9kcy5JbnRTZXQuZWxlbWVudHMgaW1nKSlcbiAgICAgIE1vZHMuSW50TWFwLmVtcHR5XG4gICAgICAoUmVuYW1pbmcudG9fbGlzdCBpbmoxX3RvXzIsIFtdKVxuICBpblxuICBsZXQgbm9kZXNfYnlfdHlwZSA9IEFycmF5Lm1hcCAoTGlzdC5zb3J0IE1vZHMuaW50X2NvbXBhcmUpIHVzZWRfaWRzIGluXG4gIGxldCAoKSA9XG4gICAgQXJyYXkuaXRlcmlcbiAgICAgIChmdW4gaSB4IC0+XG4gICAgICAgIHJlc2VydmVkX2lkcy4oaSkgPC1cbiAgICAgICAgICBMaXN0X3V0aWwubWVyZ2VfdW5pcSBNb2RzLmludF9jb21wYXJlIG5vZGVzX2J5X3R5cGUuKGkpIHgpXG4gICAgICBhdmFpbGFibGVfaWRzXG4gIGluXG4gICggcGFjaycsXG4gICAge1xuICAgICAgbm9kZXNfYnlfdHlwZTtcbiAgICAgIG5vZGVzO1xuICAgICAgcmVjb2duX25hdiA9IHJhd190b19uYXZpZ2F0aW9uIGZhbHNlIG5vZGVzX2J5X3R5cGUgbm9kZXM7XG4gICAgfSApXG5cbmxldCBidWlsZF9uYXZpZ2F0aW9uX2JldHdlZW4gfmRlYnVnX21vZGUgaW5qX2RfdG9fbyBjY19vIGNjX2QgPVxuICBsZXQgcmVjIGhhbmRsZV9saW5rcyBkaXNjb3ZlcmVkIG5leHRfcm91bmQgcmVjb2duIGludGVybiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgaWYgbmV4dF9yb3VuZCA9IFtdIHRoZW5cbiAgICAgICAgTGlzdC5yZXZfYXBwZW5kIHJlY29nbiBpbnRlcm5cbiAgICAgIGVsc2VcbiAgICAgICAgaGFuZGxlX2xpbmtzIGRpc2NvdmVyZWQgW10gcmVjb2duIGludGVybiBuZXh0X3JvdW5kXG4gICAgfCAoKChpLCBqLCBzKSwgKG4nLCBzJykpIGFzIGgpIDo6IHRvZG9zIC0+XG4gICAgICBsZXQgbiA9IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGlual9kX3RvX28gbicgaW5cbiAgICAgIChtYXRjaCBNb2RzLkludFNldC5tZW0gaiBkaXNjb3ZlcmVkLCBNb2RzLkludFNldC5tZW0gbicgZGlzY292ZXJlZCB3aXRoXG4gICAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgICBoYW5kbGVfbGlua3MgZGlzY292ZXJlZCAoaCA6OiBuZXh0X3JvdW5kKSByZWNvZ24gaW50ZXJuIHRvZG9zXG4gICAgICB8IHRydWUsIHRydWUgLT5cbiAgICAgICAgbGV0IGludGVybicgPVxuICAgICAgICAgICggKE5hdmlnYXRpb24uRXhpc3RpbmcgaSwgcyksXG4gICAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5FeGlzdGluZyBuLCBzJykgKVxuICAgICAgICAgIDo6IGludGVyblxuICAgICAgICBpblxuICAgICAgICBoYW5kbGVfbGlua3MgZGlzY292ZXJlZCBuZXh0X3JvdW5kIHJlY29nbiBpbnRlcm4nIHRvZG9zXG4gICAgICB8IHRydWUsIGZhbHNlIC0+XG4gICAgICAgIGxldCByZWNvZ24nID1cbiAgICAgICAgICAoIChOYXZpZ2F0aW9uLkV4aXN0aW5nIGksIHMpLFxuICAgICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRnJlc2ggKG4sIGZpbmRfdHkgY2NfZCBuJyksIHMnKSApXG4gICAgICAgICAgOjogcmVjb2duXG4gICAgICAgIGluXG4gICAgICAgIGhhbmRsZV9saW5rc1xuICAgICAgICAgIChNb2RzLkludFNldC5hZGQgbicgZGlzY292ZXJlZClcbiAgICAgICAgICBuZXh0X3JvdW5kIHJlY29nbicgaW50ZXJuIHRvZG9zXG4gICAgICB8IGZhbHNlLCB0cnVlIC0+XG4gICAgICAgIGxldCByZWNvZ24nID1cbiAgICAgICAgICAoIChOYXZpZ2F0aW9uLkV4aXN0aW5nIG4sIHMnKSxcbiAgICAgICAgICAgIE5hdmlnYXRpb24uVG9Ob2RlIChOYXZpZ2F0aW9uLkZyZXNoIChpLCBmaW5kX3R5IGNjX2QgaiksIHMpIClcbiAgICAgICAgICA6OiByZWNvZ25cbiAgICAgICAgaW5cbiAgICAgICAgaGFuZGxlX2xpbmtzXG4gICAgICAgICAgKE1vZHMuSW50U2V0LmFkZCBqIGRpc2NvdmVyZWQpXG4gICAgICAgICAgbmV4dF9yb3VuZCByZWNvZ24nIGludGVybiB0b2RvcylcbiAgaW5cbiAgbGV0IGRpc2NvdiwgYWxsX2xpbmtzLCBpbnRlcm4gPVxuICAgIFJlbmFtaW5nLmZvbGRcbiAgICAgIChmdW4gaiBpIChkaXNjLCBsaW5rcywgaW50ZXIpIC0+XG4gICAgICAgIGxldCBub2Rlc2QgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBqIGNjX2Qubm9kZXMgaW5cbiAgICAgICAgbGV0IGRpc2MnLCBub2Rlc28gPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgY2Nfby5ub2RlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGRpc2MsIEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCBub2Rlc2QpIChVblNwZWMsIC0xKVxuICAgICAgICAgIHwgU29tZSBub2Rlc28gLT4gTW9kcy5JbnRTZXQuYWRkIGogZGlzYywgbm9kZXNvXG4gICAgICAgIGluXG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdDJpXG4gICAgICAgICAgKGZ1biBzICgoZGlzLCBsaSwgaW50KSBhcyBhY2MpIChvbCwgb3MpIChkbCwgZHMpIC0+XG4gICAgICAgICAgICBsZXQgKChfLCBfLCBpbnQnKSBhcyBhY2MnKSA9XG4gICAgICAgICAgICAgIGlmIG9zID0gLTEgJiYgZHMgPD4gLTEgdGhlblxuICAgICAgICAgICAgICAgICggZGlzLFxuICAgICAgICAgICAgICAgICAgbGksXG4gICAgICAgICAgICAgICAgICAoKE5hdmlnYXRpb24uRXhpc3RpbmcgaSwgcyksIE5hdmlnYXRpb24uVG9JbnRlcm5hbCBkcykgOjogaW50XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgb2wgPD4gVW5TcGVjIHRoZW5cbiAgICAgICAgICAgICAgYWNjJ1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoIGRsIHdpdGhcbiAgICAgICAgICAgICAgfCBVblNwZWMgLT4gYWNjJ1xuICAgICAgICAgICAgICB8IEZyZWUgLT5cbiAgICAgICAgICAgICAgICAoIGRpcyxcbiAgICAgICAgICAgICAgICAgIGxpLFxuICAgICAgICAgICAgICAgICAgKChOYXZpZ2F0aW9uLkV4aXN0aW5nIGksIHMpLCBOYXZpZ2F0aW9uLlRvTm90aGluZykgOjogaW50JyApXG4gICAgICAgICAgICAgIHwgTGluayAobiwgcycpIC0+XG4gICAgICAgICAgICAgICAgaWYgbiA+ICgqbGEqKSBqIHx8IChuID0gaiAmJiBzID4gcycpIHRoZW5cbiAgICAgICAgICAgICAgICAgIGFjYydcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBkaXMsICgoaSwgaiwgcyksIChuLCBzJykpIDo6IGxpLCBpbnQnXG4gICAgICAgICAgICApKVxuICAgICAgICAgIChkaXNjJywgbGlua3MsIGludGVyKSBub2Rlc28gbm9kZXNkKVxuICAgICAgaW5qX2RfdG9fb1xuICAgICAgKE1vZHMuSW50U2V0LmVtcHR5LCBbXSwgW10pXG4gIGluXG4gIGhhbmRsZV9saW5rcyBkaXNjb3YgW10gW10gaW50ZXJuIGFsbF9saW5rc1xuXG5tb2R1bGUgRW52IDogc2lnXG4gIHR5cGUgdHJhbnNpdGlvbiA9IHtcbiAgICBuZXh0OiBOYXZpZ2F0aW9uLmFic3RyYWN0IE5hdmlnYXRpb24udDtcbiAgICBkc3Q6IGlkOyAoKiBpZCBvZiBjYyBhbmQgYWxzbyBhZGRyZXNzIGluIHRoZSBFbnYuZG9tYWluIG1hcCopXG4gICAgaW5qOiBSZW5hbWluZy50OyAoKiBGcm9tIGRzdCBUbyAoXCJ0aGlzXCIgY2MgKyBleHRyYSBlZGdlKSAqKVxuICB9XG5cbiAgdHlwZSBwb2ludCA9IHtcbiAgICBjb250ZW50OiBjYztcbiAgICByb290czogKGludCBsaXN0ICgqaWRzKikgKiBpbnQgKCp0eSopKSBvcHRpb247XG4gICAgZGVwczogT3BlcmF0b3IuRGVwU2V0LnQ7XG4gICAgbXV0YWJsZSBzb25zOiB0cmFuc2l0aW9uIGxpc3Q7XG4gIH1cblxuICB2YWwgY29udGVudCA6IHBvaW50IC0+IGNjXG4gIHZhbCByb290cyA6IHBvaW50IC0+IChpbnQgbGlzdCAoKmlkcyopICogaW50ICgqdHkqKSkgb3B0aW9uXG4gIHZhbCBkZXBzIDogcG9pbnQgLT4gT3BlcmF0b3IuRGVwU2V0LnRcbiAgdmFsIHNvbnMgOiBwb2ludCAtPiB0cmFuc2l0aW9uIGxpc3RcblxuICB0eXBlIHQgPSB7XG4gICAgc2lnX2RlY2w6IFNpZ25hdHVyZS5zO1xuICAgIGlkX2J5X3R5cGU6IGludCBsaXN0IGFycmF5O1xuICAgIG1heF9vYnM6IGludDtcbiAgICBkb21haW46IHBvaW50IGFycmF5O1xuICAgIGVsZW1lbnRhcmllczogKE5hdmlnYXRpb24uYWJzdHJhY3QgTmF2aWdhdGlvbi5zdGVwICogaWQpIGxpc3QgYXJyYXkgYXJyYXk7XG4gICAgc2luZ2xlX2FnZW50X3BvaW50czogKGlkICogT3BlcmF0b3IuRGVwU2V0LnQpIG9wdGlvbiBhcnJheTtcbiAgfVxuXG4gIHZhbCBnZXQgOiB0IC0+IGlkIC0+IHBvaW50XG4gIHZhbCBnZXRfc2luZ2xlX2FnZW50IDogaW50IC0+IHQgLT4gKGlkICogT3BlcmF0b3IuRGVwU2V0LnQpIG9wdGlvblxuICB2YWwgdG9fbmF2aWdhdGlvbiA6IHQgLT4gaWQgLT4gTmF2aWdhdGlvbi5hYnN0cmFjdCBOYXZpZ2F0aW9uLnRcblxuICB2YWwgZ2V0X2VsZW1lbnRhcnkgOlxuICAgIGRlYnVnX21vZGU6Ym9vbCAtPlxuICAgIHQgLT5cbiAgICBBZ2VudC50IC0+XG4gICAgaW50IC0+XG4gICAgTmF2aWdhdGlvbi5hYnN0cmFjdCBOYXZpZ2F0aW9uLmFycm93IC0+XG4gICAgKGlkICogcG9pbnQgKiBSZW5hbWluZy50KSBvcHRpb25cblxuICB2YWwgc2lnbmF0dXJlcyA6IHQgLT4gU2lnbmF0dXJlLnNcbiAgdmFsIG5ld19vYnNfbWFwIDogdCAtPiAoaWQgLT4gJ2EpIC0+ICdhIE9ic01hcC50XG4gIHZhbCBwcmludCA6IG5vQ291bnRlcnM6Ym9vbCAtPiBGb3JtYXQuZm9ybWF0dGVyIC0+IHQgLT4gdW5pdFxuICB2YWwgdG9feW9qc29uIDogdCAtPiBZb2pzb24uQmFzaWMudFxuICB2YWwgb2ZfeW9qc29uIDogWW9qc29uLkJhc2ljLnQgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdHJhbnNpdGlvbiA9IHtcbiAgICBuZXh0OiBOYXZpZ2F0aW9uLmFic3RyYWN0IE5hdmlnYXRpb24udDtcbiAgICBkc3Q6IGlkOyAoKiBpZCBvZiBjYyBhbmQgYWxzbyBhZGRyZXNzIGluIHRoZSBFbnYuZG9tYWluIG1hcCopXG4gICAgaW5qOiBSZW5hbWluZy50OyAoKiBGcm9tIGRzdCBUbyAoXCJ0aGlzXCIgY2MgKyBleHRyYSBlZGdlKSAqKVxuICB9XG5cbiAgdHlwZSBwb2ludCA9IHtcbiAgICBjb250ZW50OiBjYztcbiAgICByb290czogKGludCBsaXN0ICgqaWRzKikgKiBpbnQgKCp0eSopKSBvcHRpb247XG4gICAgZGVwczogT3BlcmF0b3IuRGVwU2V0LnQ7XG4gICAgbXV0YWJsZSBzb25zOiB0cmFuc2l0aW9uIGxpc3Q7XG4gIH1cblxuICBsZXQgY29udGVudCBwID0gcC5jb250ZW50XG4gIGxldCByb290cyBwID0gcC5yb290c1xuICBsZXQgZGVwcyBwID0gcC5kZXBzXG4gIGxldCBzb25zIHAgPSBwLnNvbnNcblxuICB0eXBlIHQgPSB7XG4gICAgc2lnX2RlY2w6IFNpZ25hdHVyZS5zO1xuICAgIGlkX2J5X3R5cGU6IGludCBsaXN0IGFycmF5O1xuICAgIG1heF9vYnM6IGludDtcbiAgICBkb21haW46IHBvaW50IGFycmF5O1xuICAgIGVsZW1lbnRhcmllczogKE5hdmlnYXRpb24uYWJzdHJhY3QgTmF2aWdhdGlvbi5zdGVwICogaWQpIGxpc3QgYXJyYXkgYXJyYXk7XG4gICAgc2luZ2xlX2FnZW50X3BvaW50czogKGlkICogT3BlcmF0b3IuRGVwU2V0LnQpIG9wdGlvbiBhcnJheTtcbiAgfVxuXG4gIGxldCBzaWduYXR1cmVzIGVudiA9IGVudi5zaWdfZGVjbFxuXG4gIGxldCBwcmludCB+bm9Db3VudGVycyBmIGVudiA9XG4gICAgbGV0IHBwX3BvaW50IHBfaWQgZiBwID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxob3YgMj5AWzxoPiVhQF1AICV0LT4gQFsoJWEpQF1AXVwiXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIHByaW50X2NjIH5ub0NvdW50ZXJzIH5zaWdzOmVudi5zaWdfZGVjbCB+Y2NfaWQ6cF9pZCB+d2l0aF9pZDp0cnVlIHgpXG4gICAgICAgIHAuY29udGVudFxuICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICBpZiBwLnJvb3RzIDw+IE5vbmUgdGhlblxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbWyVhXUBdQCBcIlxuICAgICAgICAgICAgICAoUHAuc2V0IE9wZXJhdG9yLkRlcFNldC5lbGVtZW50cyBQcC5zcGFjZSBPcGVyYXRvci5wcmludF9yZXZfZGVwKVxuICAgICAgICAgICAgICBwLmRlcHMpXG4gICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiBzIC0+XG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEoJWEpQCAlaUBdXCJcbiAgICAgICAgICAgICAgIChOYXZpZ2F0aW9uLnByaW50IGVudi5zaWdfZGVjbCAoZmluZF90eSBwLmNvbnRlbnQpKVxuICAgICAgICAgICAgICAgcy5uZXh0IFJlbmFtaW5nLnByaW50IHMuaW5qIHMuZHN0KSlcbiAgICAgICAgcC5zb25zXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUBdXCIgKFBwLmFycmF5IFBwLnNwYWNlIHBwX3BvaW50KSBlbnYuZG9tYWluXG5cbiAgbGV0IGdldF9zaW5nbGVfYWdlbnQgdHkgZW52ID0gZW52LnNpbmdsZV9hZ2VudF9wb2ludHMuKHR5KVxuICBsZXQgZ2V0IGVudiBjY19pZCA9IGVudi5kb21haW4uKGNjX2lkKVxuXG4gIGxldCB0b19uYXZpZ2F0aW9uIGVudiBpZCA9XG4gICAgbGV0IGNjID0gKGdldCBlbnYgaWQpLmNvbnRlbnQgaW5cbiAgICByYXdfdG9fbmF2aWdhdGlvbiB0cnVlIGNjLm5vZGVzX2J5X3R5cGUgY2Mubm9kZXNcblxuICBsZXQgdHJhbnNpdGlvbl90b195b2pzb24gdCA9XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiZHN0XCIsIGBJbnQgdC5kc3Q7XG4gICAgICAgIFwiaW5qXCIsIFJlbmFtaW5nLnRvX3lvanNvbiB0LmluajtcbiAgICAgICAgXCJuYXZcIiwgTmF2aWdhdGlvbi50b195b2pzb24gdC5uZXh0O1xuICAgICAgXVxuXG4gIGxldCB0cmFuc2l0aW9uX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgWyAoXCJkc3RcIiwgYEludCBkc3QpOyAoXCJpbmpcIiwgcik7IChcIm5hdlwiLCBuKSBdXG4gICAgfCBgQXNzb2MgWyAoXCJkc3RcIiwgYEludCBkc3QpOyAoXCJuYXZcIiwgbik7IChcImlualwiLCByKSBdXG4gICAgfCBgQXNzb2MgWyAoXCJpbmpcIiwgcik7IChcIm5hdlwiLCBuKTsgKFwiZHN0XCIsIGBJbnQgZHN0KSBdXG4gICAgfCBgQXNzb2MgWyAoXCJuYXZcIiwgbik7IChcImlualwiLCByKTsgKFwiZHN0XCIsIGBJbnQgZHN0KSBdXG4gICAgfCBgQXNzb2MgWyAoXCJpbmpcIiwgcik7IChcImRzdFwiLCBgSW50IGRzdCk7IChcIm5hdlwiLCBuKSBdXG4gICAgfCBgQXNzb2MgWyAoXCJuYXZcIiwgbik7IChcImRzdFwiLCBgSW50IGRzdCk7IChcImlualwiLCByKSBdIC0+XG4gICAgICB7IGRzdDsgaW5qID0gUmVuYW1pbmcub2ZfeW9qc29uIHI7IG5leHQgPSBOYXZpZ2F0aW9uLm9mX3lvanNvbiBuIH1cbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHRyYW5zaXRpb25cIiwgeCkpXG5cbiAgbGV0IHBvaW50X3RvX3lvanNvbiBwID1cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJjb250ZW50XCIsIHRvX3lvanNvbiBwLmNvbnRlbnQ7XG4gICAgICAgICggXCJyb290c1wiLFxuICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgICAgKGZ1biAoaWRzLCB0eSkgLT5cbiAgICAgICAgICAgICAgYExpc3QgWyBgTGlzdCAoTGlzdC5tYXAgSnNvblV0aWwub2ZfaW50IGlkcyk7IGBJbnQgdHkgXSlcbiAgICAgICAgICAgIHAucm9vdHMgKTtcbiAgICAgICAgXCJkZXBzXCIsIE9wZXJhdG9yLmRlcHNldF90b195b2pzb24gcC5kZXBzO1xuICAgICAgICBcInNvbnNcIiwgYExpc3QgKExpc3QubWFwIHRyYW5zaXRpb25fdG9feW9qc29uIHAuc29ucyk7XG4gICAgICBdXG5cbiAgbGV0IHBvaW50X29mX3lvanNvbiBzaWdfZGVjbCA9IGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDQgLT5cbiAgICAgICh0cnlcbiAgICAgICAgIHtcbiAgICAgICAgICAgY29udGVudCA9IG9mX3lvanNvbiBzaWdfZGVjbCAoTGlzdC5hc3NvYyBcImNvbnRlbnRcIiBsKTtcbiAgICAgICAgICAgcm9vdHMgPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwicm9vdHNcIiBsIHdpdGhcbiAgICAgICAgICAgICB8IGBOdWxsIC0+IE5vbmVcbiAgICAgICAgICAgICB8IGBMaXN0IFsgYExpc3QgaWRzOyBgSW50IHR5IF0gLT5cbiAgICAgICAgICAgICAgIFNvbWUgKExpc3QubWFwIFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCBpZHMsIHR5KVxuICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgICBkZXBzID0gT3BlcmF0b3IuZGVwc2V0X29mX3lvanNvbiAoTGlzdC5hc3NvYyBcImRlcHNcIiBsKTtcbiAgICAgICAgICAgc29ucyA9XG4gICAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJzb25zXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgTGlzdCBsIC0+IExpc3QubWFwIHRyYW5zaXRpb25fb2ZfeW9qc29uIGxcbiAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgIH1cbiAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGRvbWFpbiBwb2ludFwiLCB4KSkpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBkb21haW4gcG9pbnRcIiwgeCkpXG5cbiAgbGV0IHRvX3lvanNvbiBlbnYgPVxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcInNpZ25hdHVyZXNcIiwgU2lnbmF0dXJlLnRvX2pzb24gZW52LnNpZ19kZWNsO1xuICAgICAgICAoIFwic2luZ2xlX2FnZW50c1wiLFxuICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgKGZ1biB4IGFjYyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBgTnVsbFxuICAgICAgICAgICAgICAgICB8IFNvbWUgKGlkLCBfZGVwcykgLT4gYEludCBpZClcbiAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgZW52LnNpbmdsZV9hZ2VudF9wb2ludHMgW10pICk7XG4gICAgICAgICggXCJlbGVtZW50YXJpZXNcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT5cbiAgICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChzdCwgZCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgTGlzdCBbIE5hdmlnYXRpb24uc3RlcF90b195b2pzb24gc3Q7IGBJbnQgZCBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4KVxuICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgICAgICAgIHggW10pXG4gICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgIGVudi5lbGVtZW50YXJpZXMgW10pICk7XG4gICAgICAgICggXCJkYWdcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT4gcG9pbnRfdG9feW9qc29uIHggOjogYWNjKVxuICAgICAgICAgICAgICAgZW52LmRvbWFpbiBbXSkgKTtcbiAgICAgICAgKCBcImlkX2J5X3R5cGVcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT4gYExpc3QgKExpc3QubWFwIChmdW4gaSAtPiBgSW50IGkpIHgpIDo6IGFjYylcbiAgICAgICAgICAgICAgIGVudi5pZF9ieV90eXBlIFtdKSApO1xuICAgICAgICBcIm1heF9vYnNcIiwgYEludCBlbnYubWF4X29icztcbiAgICAgIF1cblxuICBsZXQgb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gNiAtPlxuICAgICAgbGV0IHNpZ19kZWNsID0gU2lnbmF0dXJlLm9mX2pzb24gKExpc3QuYXNzb2MgXCJzaWduYXR1cmVzXCIgbCkgaW5cbiAgICAgICh0cnlcbiAgICAgICAgIHtcbiAgICAgICAgICAgc2lnX2RlY2w7XG4gICAgICAgICAgIHNpbmdsZV9hZ2VudF9wb2ludHMgPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwic2luZ2xlX2FnZW50c1wiIGwgd2l0aFxuICAgICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvbiAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICB8IGBJbnQgaSAtPiBpLCBPcGVyYXRvci5EZXBTZXQuZW1wdHlcbiAgICAgICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIldyb25nIHNpbmdsZV9hZ2VudFwiLCB4KSkpKVxuICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICAgIGVsZW1lbnRhcmllcyA9XG4gICAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJlbGVtZW50YXJpZXNcIiBsIHdpdGhcbiAgICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBgTGlzdCBsIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBMaXN0IFsgczsgYEludCBkIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uc3RlcF9vZl95b2pzb24gcywgZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgICBkb21haW4gPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwiZGFnXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgTGlzdCBsIC0+IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IChwb2ludF9vZl95b2pzb24gc2lnX2RlY2wpIGxcbiAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgICAgaWRfYnlfdHlwZSA9XG4gICAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJpZF9ieV90eXBlXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgTGlzdCBsIC0+XG4gICAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgYEludCBpIC0+IGlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgICBtYXhfb2JzID1cbiAgICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcIm1heF9vYnNcIiBsIHdpdGhcbiAgICAgICAgICAgICB8IGBJbnQgaSAtPiBpXG4gICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICB9XG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCB1cGRhdGUgZG9tYWluXCIsIHgpKSlcbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHVwZGF0ZSBkb21haW5cIiwgeCkpXG5cbiAgbGV0IG5ld19vYnNfbWFwIGVudiBmID0gTW9kcy5EeW5BcnJheS5pbml0IGVudi5tYXhfb2JzIGZcblxuICBsZXQgZ2V0X2VsZW1lbnRhcnkgfmRlYnVnX21vZGUgZG9tYWluICgoXywgdHkpIGFzIG5vZGUpIHMgYXJyb3cgPVxuICAgIGxldCBzYSA9IGRvbWFpbi5lbGVtZW50YXJpZXMuKHR5KSBpblxuICAgIGxldCByZWMgZmluZF9nb29kX2VkZ2UgPSBmdW5jdGlvblxuICAgICAgKCpvbmUgc2hvdWxkIHVzZSBhIGhhc2ggaGVyZSopXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgKHN0LCBjY19pZCkgOjogdGFpbCAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgTmF2aWdhdGlvbi5jb21wYXRpYmxlX2ZyZXNoX3BvaW50IH5kZWJ1Z19tb2RlIHN0IG5vZGUgcyBhcnJvd1xuICAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmluZF9nb29kX2VkZ2UgdGFpbFxuICAgICAgICB8IFNvbWUgaW5qJyAtPlxuICAgICAgICAgIGxldCBkc3QgPSBnZXQgZG9tYWluIGNjX2lkIGluXG4gICAgICAgICAgU29tZSAoY2NfaWQsIGRzdCwgaW5qJykpXG4gICAgaW5cbiAgICBmaW5kX2dvb2RfZWRnZSBzYS4ocylcbmVuZFxuXG5sZXQgcHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZCBmIGlkID1cbiAgbWF0Y2ggZG9tYWluIHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBpZFxuICB8IFNvbWUgZW52IC0+XG4gICAgbGV0IGNjX2lkID1cbiAgICAgIGlmIHdpdGhfaWQgdGhlblxuICAgICAgICBTb21lIGlkXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBpblxuICAgIHByaW50X2NjIH5ub0NvdW50ZXJzIH5zaWdzOihFbnYuc2lnbmF0dXJlcyBlbnYpID9jY19pZCB+d2l0aF9pZCBmXG4gICAgICBlbnYuRW52LmRvbWFpbi4oaWQpLkVudi5jb250ZW50XG5cbmxldCBlbWJlZGRpbmdzX3RvX2Z1bGx5X3NwZWNpZmllZCB+ZGVidWdfbW9kZSBkb21haW4gYV9pZCBiID1cbiAgbGV0IGEgPSBkb21haW4uRW52LmRvbWFpbi4oYV9pZCkuRW52LmNvbnRlbnQgaW5cbiAgbWF0Y2ggZmluZF9yb290IGEgd2l0aFxuICB8IE5vbmUgLT4gWyBSZW5hbWluZy5lbXB0eSAoKSBdXG4gIHwgU29tZSAoaCwgdHkpIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIGFnIC0+XG4gICAgICAgIG1hdGNoIGFyZV9jb21wYXRpYmxlIH5kZWJ1Z19tb2RlIH5zdHJpY3Q6ZmFsc2UgaCBhIGFnIGIgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gLT4gYWNjXG4gICAgICAgIHwgU29tZSByLCBfIC0+IHIgOjogYWNjKVxuICAgICAgW10gYi5ub2Rlc19ieV90eXBlLih0eSlcblxudHlwZSBwcmVwb2ludCA9IHtcbiAgcF9pZDogaWQ7XG4gIGVsZW1lbnQ6IGNjO1xuICBkZXBlbmRpbmc6IE9wZXJhdG9yLkRlcFNldC50O1xuICByb290czogKGludCBsaXN0ICgqaWRzKikgKiBpbnQgKCp0eSopKSBvcHRpb247XG59XG5cbnR5cGUgd29yayA9IHtcbiAgc2lnczogU2lnbmF0dXJlLnM7XG4gIGNjX2VudjogcHJlcG9pbnQgbGlzdCBNb2RzLkludE1hcC50IE1vZHMuSW50TWFwLnQ7XG4gIHJlc2VydmVkX2lkOiBpbnQgbGlzdCBhcnJheTtcbiAgdXNlZF9pZDogaW50IGxpc3QgYXJyYXk7XG4gIGZyZWVfaWQ6IGludDtcbiAgY2Nfbm9kZXM6IChsaW5rICogaW50KSBhcnJheSBNb2RzLkludE1hcC50O1xuICBkYW5nbGluZzogaW50OyAoKiBub2RlX2lkICopXG59XG5cbm1vZHVsZSBQcmVFbnYgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHNpZ19kZWNsOiBTaWduYXR1cmUucztcbiAgICBpZF9ieV90eXBlOiBpbnQgbGlzdCBhcnJheTtcbiAgICBuYl9pZDogaW50O1xuICAgIGRvbWFpbjogcHJlcG9pbnQgbGlzdCBNb2RzLkludE1hcC50IE1vZHMuSW50TWFwLnQ7XG4gICAgbXV0YWJsZSB1c2VkX2J5X2FfYmVnaW5fbmV3OiBib29sO1xuICB9XG5cbiAgdHlwZSBzdGF0ID0geyBzdGF0X25vZGVzOiBpbnQ7IHN0YXRfbmF2X3N0ZXBzOiBpbnQgfVxuXG4gIGxldCBmcmVzaCBzaWdzIGlkX2J5X3R5cGUgbmJfaWQgZG9tYWluID1cbiAgICB7IHNpZ19kZWNsID0gc2lnczsgaWRfYnlfdHlwZTsgbmJfaWQ7IGRvbWFpbjsgdXNlZF9ieV9hX2JlZ2luX25ldyA9IGZhbHNlIH1cblxuICBsZXQgZW1wdHkgc2lncyA9XG4gICAgbGV0IG5idCcgPSBBcnJheS5tYWtlIChTaWduYXR1cmUuc2l6ZSBzaWdzKSBbXSBpblxuICAgIGZyZXNoIHNpZ3MgbmJ0JyAxIE1vZHMuSW50TWFwLmVtcHR5XG5cbiAgbGV0IGNoZWNrX3ZpdGFsaXR5IGVudiA9IGFzc2VydCAoZW52LnVzZWRfYnlfYV9iZWdpbl9uZXcgPSBmYWxzZSlcblxuICBsZXQgdG9fd29yayBlbnYgPVxuICAgIGxldCAoKSA9IGNoZWNrX3ZpdGFsaXR5IGVudiBpblxuICAgIGxldCAoKSA9IGVudi51c2VkX2J5X2FfYmVnaW5fbmV3IDwtIHRydWUgaW5cbiAgICB7XG4gICAgICBzaWdzID0gZW52LnNpZ19kZWNsO1xuICAgICAgY2NfZW52ID0gZW52LmRvbWFpbjtcbiAgICAgIHJlc2VydmVkX2lkID0gZW52LmlkX2J5X3R5cGU7XG4gICAgICB1c2VkX2lkID0gQXJyYXkubWFrZSAoQXJyYXkubGVuZ3RoIGVudi5pZF9ieV90eXBlKSBbXTtcbiAgICAgIGZyZWVfaWQgPSBlbnYubmJfaWQ7XG4gICAgICBjY19ub2RlcyA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgICAgZGFuZ2xpbmcgPSAwO1xuICAgIH1cblxuICBsZXQgc2lncyBlbnYgPSBlbnYuc2lnX2RlY2xcblxuICBsZXQgZW1wdHlfcG9pbnQgc2lncyA9XG4gICAge1xuICAgICAgRW52LmNvbnRlbnQgPSBlbXB0eV9jYyBzaWdzO1xuICAgICAgRW52LnJvb3RzID0gTm9uZTtcbiAgICAgIEVudi5kZXBzID0gT3BlcmF0b3IuRGVwU2V0LmVtcHR5O1xuICAgICAgRW52LnNvbnMgPSBbXTtcbiAgICB9XG5cbiAgbGV0IGZpbGxfZWxlbSBzaWdzIGJvdHRvbSA9XG4gICAgbGV0IGVsZW1lbnRhcmllcyA9XG4gICAgICBBcnJheS5pbml0IChTaWduYXR1cmUuc2l6ZSBzaWdzKSAoZnVuIGkgLT5cbiAgICAgICAgICBBcnJheS5tYWtlIChTaWduYXR1cmUuYXJpdHkgc2lncyBpKSBbXSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBNb2RzLkludE1hcC5pdGVyXG4gICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgIExpc3QuaXRlciAoZnVuIHAgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggcC5lbGVtZW50LnJlY29nbl9uYXYgd2l0aFxuICAgICAgICAgICAgICB8IFtdIHwgKChOYXZpZ2F0aW9uLkV4aXN0aW5nIF8sIF8pLCBfKSA6OiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICB8ICgoTmF2aWdhdGlvbi5GcmVzaCBfLCBfKSwgXykgOjogXyA6OiBfIC0+ICgpXG4gICAgICAgICAgICAgIHwgWyAoKChOYXZpZ2F0aW9uLkZyZXNoIChfLCB0eTEpLCBzMSksIGFycikgYXMgc3RlcCkgXSAtPlxuICAgICAgICAgICAgICAgIGxldCBzYTEgPSBlbGVtZW50YXJpZXMuKHR5MSkgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBzYTEuKHMxKSA8LSAoc3RlcCwgcC5wX2lkKSA6OiBzYTEuKHMxKSBpblxuICAgICAgICAgICAgICAgIChtYXRjaCBhcnIgd2l0aFxuICAgICAgICAgICAgICAgIHwgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRnJlc2ggKF8sIHR5MiksIHMyKSAtPlxuICAgICAgICAgICAgICAgICAgaWYgdHkxID0gdHkyICYmIHMxIDw+IHMyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgc2ExLihzMikgPC0gKHN0ZXAsIHAucF9pZCkgOjogc2ExLihzMilcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgc2EyID0gZWxlbWVudGFyaWVzLih0eTIpIGluXG4gICAgICAgICAgICAgICAgICAgIHNhMi4oczIpIDwtIChzdGVwLCBwLnBfaWQpIDo6IHNhMi4oczIpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfCBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5FeGlzdGluZyBfLCBzMikgLT5cbiAgICAgICAgICAgICAgICAgIHNhMS4oczIpIDwtIChzdGVwLCBwLnBfaWQpIDo6IHNhMS4oczIpXG4gICAgICAgICAgICAgICAgfCBOYXZpZ2F0aW9uLlRvTm90aGluZyB8IE5hdmlnYXRpb24uVG9JbnRlcm5hbCBfIC0+ICgpKSkpXG4gICAgICAgIGJvdHRvbVxuICAgIGluXG4gICAgZWxlbWVudGFyaWVzXG5cbiAgbGV0IHByZXNlbnRfaW5fZHN0IH5kZWJ1Z19tb2RlIGRzdCBpbmoyZHN0IG5hdiA9XG4gICAgbGV0IHJlYyBhdXhfcHJlc2VudF9pbl9kc3QgaW5qJyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFNvbWUgaW5qJ1xuICAgICAgfCAoKE5hdmlnYXRpb24uRnJlc2ggXywgXyksIF8pIDo6IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8ICgoTmF2aWdhdGlvbi5FeGlzdGluZyBhZywgc2kpLCBOYXZpZ2F0aW9uLlRvTm90aGluZykgOjogdCAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgTW9kcy5JbnRNYXAuZmluZF9vcHRpb25cbiAgICAgICAgICAgICAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qJyBhZylcbiAgICAgICAgICAgICBkc3Qubm9kZXNcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IFNvbWUgbiAtPlxuICAgICAgICAgIGlmIGZzdCBuLihzaSkgPSBGcmVlIHRoZW5cbiAgICAgICAgICAgIGF1eF9wcmVzZW50X2luX2RzdCBpbmonIHRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBOb25lKVxuICAgICAgfCAoKE5hdmlnYXRpb24uRXhpc3RpbmcgYWcsIHNpKSwgTmF2aWdhdGlvbi5Ub0ludGVybmFsIGkpIDo6IHQgLT5cbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgYWcpXG4gICAgICAgICAgICAgZHN0Lm5vZGVzXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICBpZiBzbmQgbi4oc2kpID0gaSB0aGVuXG4gICAgICAgICAgICBhdXhfcHJlc2VudF9pbl9kc3QgaW5qJyB0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTm9uZSlcbiAgICAgIHwgKCAoTmF2aWdhdGlvbi5FeGlzdGluZyBhZywgc2kpLFxuICAgICAgICAgIE5hdmlnYXRpb24uVG9Ob2RlIChOYXZpZ2F0aW9uLkV4aXN0aW5nIGFnJywgc2knKSApXG4gICAgICAgIDo6IHQgLT5cbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgYWcpXG4gICAgICAgICAgICAgZHN0Lm5vZGVzXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICBpZiBmc3Qgbi4oc2kpID0gTGluayAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qJyBhZycsIHNpJykgdGhlblxuICAgICAgICAgICAgYXV4X3ByZXNlbnRfaW5fZHN0IGluaicgdFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE5vbmUpXG4gICAgICB8ICggKE5hdmlnYXRpb24uRXhpc3RpbmcgYWcsIHNpKSxcbiAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5GcmVzaCAoYWcnLCB0eScpLCBzaScpIClcbiAgICAgICAgOjogdCAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgTW9kcy5JbnRNYXAuZmluZF9vcHRpb25cbiAgICAgICAgICAgICAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qJyBhZylcbiAgICAgICAgICAgICBkc3Qubm9kZXNcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IFNvbWUgbiAtPlxuICAgICAgICAgIChtYXRjaCBuLihzaSkgd2l0aFxuICAgICAgICAgIHwgTGluayAoYWdsLCBzaWwpLCBfIC0+XG4gICAgICAgICAgICBpZiBMaXN0Lm1lbSBhZ2wgZHN0Lm5vZGVzX2J5X3R5cGUuKHR5JykgJiYgc2knID0gc2lsIHRoZW4gKFxuICAgICAgICAgICAgICBtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgYWcnIGFnbCBpbmonIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIGluaicgLT4gYXV4X3ByZXNlbnRfaW5fZHN0IGluaicgdFxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICB8IChGcmVlIHwgVW5TcGVjKSwgXyAtPiBOb25lKSlcbiAgICBpblxuICAgIGF1eF9wcmVzZW50X2luX2RzdCBpbmoyZHN0IG5hdlxuXG4gIGxldCByZWMgaW5zZXJ0X25hdmlnYXRpb24gfmRlYnVnX21vZGUgaWRfYnlfdHlwZSBuYl9pZCBkb21haW4gZHN0X2lkIGRzdFxuICAgICAgaW5qMmRzdCBwX2lkID1cbiAgICBpZiBwX2lkID0gZHN0X2lkIHRoZW5cbiAgICAgIDBcbiAgICBlbHNlIChcbiAgICAgIGxldCBwb2ludCA9IGRvbWFpbi4ocF9pZCkgaW5cbiAgICAgIGxldCByZWMgaW5zZXJ0X25hdl9zb25zID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIGxldCAoaW5qX2Uyc3VwLCBfKSwgc3VwID1cbiAgICAgICAgICAgIG1lcmdlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgaWRfYnlfdHlwZSBuYl9pZCBpbmoyZHN0XG4gICAgICAgICAgICAgIHBvaW50LkVudi5jb250ZW50IGRzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgKG1hdGNoIGVxdWFsIH5kZWJ1Z19tb2RlIHN1cCBkc3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IFNvbWUgaW5qX3N1cDJkc3QgLT5cbiAgICAgICAgICAgIGxldCBpbmpfZHN0MnAgPVxuICAgICAgICAgICAgICBSZW5hbWluZy5pbnZlcnNlXG4gICAgICAgICAgICAgICAgKFJlbmFtaW5nLmNvbXBvc2UgfmRlYnVnX21vZGUgZmFsc2UgaW5qX2Uyc3VwIGlual9zdXAyZHN0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBuYXYgPVxuICAgICAgICAgICAgICBidWlsZF9uYXZpZ2F0aW9uX2JldHdlZW4gfmRlYnVnX21vZGUgaW5qX2RzdDJwIHBvaW50LkVudi5jb250ZW50XG4gICAgICAgICAgICAgICAgZHN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgcG9pbnQuRW52LnNvbnMgPC1cbiAgICAgICAgICAgICAgICB7IEVudi5kc3QgPSBkc3RfaWQ7IEVudi5pbmogPSBpbmpfZHN0MnA7IEVudi5uZXh0ID0gbmF2IH1cbiAgICAgICAgICAgICAgICA6OiBwb2ludC5FbnYuc29uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIExpc3QubGVuZ3RoIG5hdilcbiAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAobWF0Y2ggcHJlc2VudF9pbl9kc3QgfmRlYnVnX21vZGUgZHN0IGluajJkc3QgaC5FbnYubmV4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGluc2VydF9uYXZfc29ucyB0XG4gICAgICAgICAgfCBTb21lIGlual9wJzJkc3QgLT5cbiAgICAgICAgICAgIGluc2VydF9uYXZpZ2F0aW9uIH5kZWJ1Z19tb2RlIGlkX2J5X3R5cGUgbmJfaWQgZG9tYWluIGRzdF9pZCBkc3RcbiAgICAgICAgICAgICAgKFJlbmFtaW5nLmNvbXBvc2UgfmRlYnVnX21vZGUgZmFsc2UgaC5FbnYuaW5qIGlual9wJzJkc3QpXG4gICAgICAgICAgICAgIGguRW52LmRzdClcbiAgICAgIGluXG4gICAgICBpbnNlcnRfbmF2X3NvbnMgcG9pbnQuRW52LnNvbnNcbiAgICApXG5cbiAgbGV0IGFkZF9jYyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWwgP29yaWdpbiBlbnYgcF9pZCBlbGVtZW50ID1cbiAgICBsZXQgdyA9IHdlaWdodCBlbGVtZW50IGluXG4gICAgbGV0IGhhc2ggPSBjb2Fyc2VfaGFzaCBlbGVtZW50IGluXG4gICAgbGV0IHJlYyBhdXggPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgcm9vdHMgPVxuICAgICAgICAgIGlmIHRvcGxldmVsIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2ggZmluZF9yb290IGVsZW1lbnQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSAocmlkLCBydHkpIC0+XG4gICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAoIExpc3Quc29ydCBNb2RzLmludF9jb21wYXJlXG4gICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuIHIgLT4gUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgciByaWQpXG4gICAgICAgICAgICAgICAgICAgICAgIChhdXRvbW9ycGhpc21zIH5kZWJ1Z19tb2RlIGVsZW1lbnQpKSxcbiAgICAgICAgICAgICAgICAgIHJ0eSApXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBOb25lXG4gICAgICAgIGluXG4gICAgICAgICggW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwX2lkO1xuICAgICAgICAgICAgICBlbGVtZW50O1xuICAgICAgICAgICAgICByb290cztcbiAgICAgICAgICAgICAgZGVwZW5kaW5nID0gYWRkX29yaWdpbiBPcGVyYXRvci5EZXBTZXQuZW1wdHkgb3JpZ2luO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBdLFxuICAgICAgICAgIGlkZW50aXR5X2luamVjdGlvbiBlbGVtZW50LFxuICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgcF9pZCApXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICAobWF0Y2ggZXF1YWwgfmRlYnVnX21vZGUgZWxlbWVudCBoLmVsZW1lbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgYSwgYiwgYywgZCA9IGF1eCB0IGluXG4gICAgICAgICAgaCA6OiBhLCBiLCBjLCBkXG4gICAgICAgIHwgU29tZSByIC0+XG4gICAgICAgICAgbGV0IHJvb3RzID1cbiAgICAgICAgICAgIGlmIGgucm9vdHMgPD4gTm9uZSB8fCBub3QgdG9wbGV2ZWwgdGhlblxuICAgICAgICAgICAgICBoLnJvb3RzXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbWF0Y2ggZmluZF9yb290IGVsZW1lbnQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgKHJpZCwgcnR5KSAtPlxuICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICggTGlzdC5zb3J0IE1vZHMuaW50X2NvbXBhcmVcbiAgICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIHIgLT4gUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgciByaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGF1dG9tb3JwaGlzbXMgfmRlYnVnX21vZGUgZWxlbWVudCkpLFxuICAgICAgICAgICAgICAgICAgICBydHkgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCB7XG4gICAgICAgICAgICAgIHBfaWQgPSBoLnBfaWQ7XG4gICAgICAgICAgICAgIGVsZW1lbnQgPSBoLmVsZW1lbnQ7XG4gICAgICAgICAgICAgIGRlcGVuZGluZyA9IGFkZF9vcmlnaW4gaC5kZXBlbmRpbmcgb3JpZ2luO1xuICAgICAgICAgICAgICByb290cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDo6IHQsXG4gICAgICAgICAgICByLFxuICAgICAgICAgICAgaC5lbGVtZW50LFxuICAgICAgICAgICAgaC5wX2lkICkpXG4gICAgaW5cbiAgICBsZXQgZW52X3cgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRNYXAuZW1wdHkgdyBlbnYgaW5cbiAgICBsZXQgZW52X3dfaCwgciwgb3V0LCBvdXRfaWQgPVxuICAgICAgYXV4IChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW10gaGFzaCBlbnZfdylcbiAgICBpblxuICAgIE1vZHMuSW50TWFwLmFkZCB3IChNb2RzLkludE1hcC5hZGQgaGFzaCBlbnZfd19oIGVudl93KSBlbnYsIHIsIG91dCwgb3V0X2lkXG5cbiAgbGV0IHJlYyBzYXR1cmF0ZV9vbmUgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyB0aGlzIG1heF9sIGxldmVsXG4gICAgICAoKF8sIGRvbWFpbikgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgaWYgbGV2ZWwgPCBtYXhfbCB0aGVuXG4gICAgICAgIHNhdHVyYXRlX29uZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIHRoaXMgbWF4X2wgKHN1Y2MgbGV2ZWwpIGFjY1xuICAgICAgICAgIChNb2RzLkludE1hcC5mb2xkXG4gICAgICAgICAgICAgKGZ1biBfIC0+IExpc3QucmV2X2FwcGVuZClcbiAgICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50TWFwLmVtcHR5IChzdWNjIGxldmVsKSBkb21haW4pXG4gICAgICAgICAgICAgW10pXG4gICAgICBlbHNlXG4gICAgICAgIGFjY1xuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgbmV3cyA9XG4gICAgICAgIG1hdGNoIHNoYXJpbmcgd2l0aFxuICAgICAgICB8IE5vX3NoYXJpbmcgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgTWF4X3NoYXJpbmcgLT4gaW5mcyBzaWdzIH5kZWJ1Z19tb2RlIHRoaXMuZWxlbWVudCBoLmVsZW1lbnRcbiAgICAgICAgfCBDb21wYXRpYmxlX3BhdHRlcm5zIC0+XG4gICAgICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAgICAoZnVuIHIgLT4gaW50ZXJzZWN0aW9uIHIgdGhpcy5lbGVtZW50IGguZWxlbWVudClcbiAgICAgICAgICAgIChtYXRjaGluZ3MgfmRlYnVnX21vZGUgc2lncyB0aGlzLmVsZW1lbnQgaC5lbGVtZW50KVxuICAgICAgaW5cbiAgICAgIGxldCBhY2MnID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChtaWQsIGFjYykgY2MgLT5cbiAgICAgICAgICAgIGxldCBpZCcgPSBzdWNjIG1pZCBpblxuICAgICAgICAgICAgbGV0IHgsIF8sIF8sIGlkID0gYWRkX2NjIH5kZWJ1Z19tb2RlIH50b3BsZXZlbDpmYWxzZSBhY2MgaWQnIGNjIGluXG4gICAgICAgICAgICAoIChpZiBpZCA9IGlkJyB0aGVuXG4gICAgICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIG1pZCksXG4gICAgICAgICAgICAgIHggKSlcbiAgICAgICAgICBhY2MgbmV3c1xuICAgICAgaW5cbiAgICAgIHNhdHVyYXRlX29uZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIHRoaXMgbWF4X2wgbGV2ZWwgYWNjJyB0XG5cbiAgbGV0IHJlYyBzYXR1cmF0ZV9sZXZlbCB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIG1heF9sIGxldmVsXG4gICAgICAoKF8sIGRvbWFpbikgYXMgYWNjKSA9XG4gICAgaWYgbGV2ZWwgPCAyIHRoZW5cbiAgICAgIGFjY1xuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gbGV2ZWwgZG9tYWluIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBzYXR1cmF0ZV9sZXZlbCB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIG1heF9sIChwcmVkIGxldmVsKSBhY2NcbiAgICAgIHwgU29tZSBsaXN0IC0+XG4gICAgICAgIGxldCByZWMgYXV4IGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgc2F0dXJhdGVfbGV2ZWwgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyBtYXhfbCAocHJlZCBsZXZlbCkgYWNjXG4gICAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAgIGF1eCAoc2F0dXJhdGVfb25lIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgaCBtYXhfbCBsZXZlbCBhY2MgdCkgdFxuICAgICAgICBpblxuICAgICAgICBhdXggYWNjIChNb2RzLkludE1hcC5mb2xkIChmdW4gXyAtPiBMaXN0LnJldl9hcHBlbmQpIGxpc3QgW10pXG4gICAgKVxuXG4gIGxldCBzYXR1cmF0ZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIGRvbWFpbiA9XG4gICAgbWF0Y2ggTW9kcy5JbnRNYXAubWF4X2tleSBkb21haW4gd2l0aFxuICAgIHwgTm9uZSAtPiAwLCBkb21haW5cbiAgICB8IFNvbWUgbCAtPlxuICAgICAgbGV0IHNpID1cbiAgICAgICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgICAgTW9kcy5JbnRNYXAuZm9sZCAoZnVuIF8gbCBtIC0+XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBtIHAgLT4gbWF4IG0gcC5wX2lkKSBtIGwpKVxuICAgICAgICAgIGRvbWFpbiAwXG4gICAgICBpblxuICAgICAgKG1hdGNoIHNoYXJpbmcgd2l0aFxuICAgICAgfCBOb19zaGFyaW5nIC0+IHNpLCBkb21haW5cbiAgICAgIHwgQ29tcGF0aWJsZV9wYXR0ZXJucyB8IE1heF9zaGFyaW5nIC0+XG4gICAgICAgIHNhdHVyYXRlX2xldmVsIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgbCBsIChzaSwgZG9tYWluKSlcblxuICBsZXQgb2ZfZW52IGVudiA9XG4gICAgbGV0IGFkZF9jYyBhY2MgcCA9XG4gICAgICBsZXQgdyA9IHdlaWdodCBwLmVsZW1lbnQgaW5cbiAgICAgIGxldCBoYXNoID0gY29hcnNlX2hhc2ggcC5lbGVtZW50IGluXG4gICAgICBsZXQgYWNjX3cgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRNYXAuZW1wdHkgdyBhY2MgaW5cbiAgICAgIE1vZHMuSW50TWFwLmFkZCB3XG4gICAgICAgIChNb2RzLkludE1hcC5hZGQgaGFzaFxuICAgICAgICAgICAocCA6OiBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW10gaGFzaCBhY2NfdylcbiAgICAgICAgICAgYWNjX3cpXG4gICAgICAgIGFjY1xuICAgIGluXG4gICAgbGV0IGRvbWFpbicgPVxuICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAoZnVuIHBfaWQgYWNjIHAgLT5cbiAgICAgICAgICBhZGRfY2MgYWNjXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHBfaWQ7XG4gICAgICAgICAgICAgIGVsZW1lbnQgPSBwLkVudi5jb250ZW50O1xuICAgICAgICAgICAgICBkZXBlbmRpbmcgPSBwLkVudi5kZXBzO1xuICAgICAgICAgICAgICByb290cyA9IHAuRW52LnJvb3RzO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgTW9kcy5JbnRNYXAuZW1wdHkgZW52LkVudi5kb21haW5cbiAgICBpblxuICAgIHtcbiAgICAgIHNpZ19kZWNsID0gZW52LkVudi5zaWdfZGVjbDtcbiAgICAgIG5iX2lkID0gc3VjYyAoQXJyYXkuZm9sZF9sZWZ0IChMaXN0LmZvbGRfbGVmdCBtYXgpIDAgZW52LkVudi5pZF9ieV90eXBlKTtcbiAgICAgIGlkX2J5X3R5cGUgPSBlbnYuRW52LmlkX2J5X3R5cGU7XG4gICAgICBkb21haW4gPSBkb21haW4nO1xuICAgICAgdXNlZF9ieV9hX2JlZ2luX25ldyA9IGZhbHNlO1xuICAgIH1cblxuICBsZXQgZGVidWdfcHJpbnQgZiBlbnYgPVxuICAgIFBwLmFycmF5IFBwLmNvbW1hXG4gICAgICAoZnVuIHR5IGYgbCAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWQ6ICV0XCIgdHkgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiW1wiO1xuICAgICAgICAgICAgUHAubGlzdCBQcC5jb21tYSAoZnVuIGYgYSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWRcIiBhKSBmIGw7XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiXVwiKSlcbiAgICAgIGYgZW52LmlkX2J5X3R5cGU7XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInVzZWRfYnlfYV9iZWdpbl9uZXcgPSAlQkAuXCIgZW52LnVzZWRfYnlfYV9iZWdpbl9uZXdcbmVuZFxuXG4oKiogT3BlcmF0aW9uIHRvIGNyZWF0ZSBjYyAqKVxubGV0IGNoZWNrX2RhbmdsaW5nIHdrID1cbiAgaWYgd2suZGFuZ2xpbmcgPD4gMCB0aGVuXG4gICAgcmFpc2UgKGRhbmdsaW5nX25vZGUgfnNpZ3M6d2suc2lncyB3ay51c2VkX2lkIHdrLmRhbmdsaW5nKVxuXG5sZXQgYmVnaW5fbmV3IGVudiA9IFByZUVudi50b193b3JrIGVudlxuXG5sZXQgZnJlc2hfY2NfaWQgZG9tYWluID1cbiAgc3VjY1xuICAgIChNb2RzLkludE1hcC5mb2xkXG4gICAgICAgKGZ1biBfIC0+XG4gICAgICAgICBNb2RzLkludE1hcC5mb2xkIChmdW4gXyB4IGFjYyAtPlxuICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIHAgLT4gbWF4IGFjYyBwLnBfaWQpIGFjYyB4KSlcbiAgICAgICBkb21haW4gMClcblxubGV0IHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbCA/b3JpZ2luIHdrID1cbiAgbGV0ICgpID0gY2hlY2tfZGFuZ2xpbmcgd2sgaW5cbiAgKCogcmVidWlsZCBlbnYgKilcbiAgbGV0ICgpID1cbiAgICBUb29scy5pdGVyaVxuICAgICAgKGZ1biBpIC0+XG4gICAgICAgIHdrLnJlc2VydmVkX2lkLihpKSA8LSBMaXN0LnJldl9hcHBlbmQgd2sudXNlZF9pZC4oaSkgd2sucmVzZXJ2ZWRfaWQuKGkpKVxuICAgICAgKEFycmF5Lmxlbmd0aCB3ay51c2VkX2lkKVxuICBpblxuICBsZXQgbm9kZXNfYnlfdHlwZSA9IEFycmF5Lm1hcCBMaXN0LnJldiB3ay51c2VkX2lkIGluXG4gIGxldCBjY19jYW5kaWRhdGUgPVxuICAgIHtcbiAgICAgIG5vZGVzX2J5X3R5cGU7XG4gICAgICBub2RlcyA9IHdrLmNjX25vZGVzO1xuICAgICAgcmVjb2duX25hdiA9IHJhd190b19uYXZpZ2F0aW9uIGZhbHNlIG5vZGVzX2J5X3R5cGUgd2suY2Nfbm9kZXM7XG4gICAgfVxuICBpblxuICBsZXQgcHJlZW52LCByLCBvdXQsIG91dF9pZCA9XG4gICAgUHJlRW52LmFkZF9jYyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWwgP29yaWdpbiB3ay5jY19lbnZcbiAgICAgIChmcmVzaF9jY19pZCB3ay5jY19lbnYpIGNjX2NhbmRpZGF0ZVxuICBpblxuICBQcmVFbnYuZnJlc2ggd2suc2lncyB3ay5yZXNlcnZlZF9pZCB3ay5mcmVlX2lkIHByZWVudiwgciwgb3V0LCBvdXRfaWRcblxubGV0IGZpbmlzaF9uZXcgfmRlYnVnX21vZGUgP29yaWdpbiB3ayA9XG4gIHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbDp0cnVlID9vcmlnaW4gd2tcblxubGV0IG5ld19saW5rIHdrICgoKHgsIF8pIGFzIG4xKSwgaSkgKCgoeSwgXykgYXMgbjIpLCBqKSA9XG4gIGxldCB4X24gPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSB4IHdrLmNjX25vZGVzIGluXG4gIGxldCB5X24gPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSB5IHdrLmNjX25vZGVzIGluXG4gIG1hdGNoIHhfbi4oaSksIHlfbi4oaikgd2l0aFxuICB8IChVblNwZWMsIHN0eCksIChVblNwZWMsIHN0eSkgLT5cbiAgICBsZXQgKCkgPSB4X24uKGkpIDwtIExpbmsgKHksIGopLCBzdHggaW5cbiAgICBsZXQgKCkgPSB5X24uKGopIDwtIExpbmsgKHgsIGkpLCBzdHkgaW5cbiAgICBpZiB3ay5kYW5nbGluZyA9IHggfHwgd2suZGFuZ2xpbmcgPSB5IHRoZW5cbiAgICAgIHsgd2sgd2l0aCBkYW5nbGluZyA9IDAgfVxuICAgIGVsc2VcbiAgICAgIHdrXG4gIHwgKChGcmVlIHwgTGluayBfKSwgXyksIF8gLT4gcmFpc2UgKGFscmVhZHlfc3BlY2lmaWVkIH5zaWdzOndrLnNpZ3MgbjEgaSlcbiAgfCBfLCAoKEZyZWUgfCBMaW5rIF8pLCBfKSAtPiByYWlzZSAoYWxyZWFkeV9zcGVjaWZpZWQgfnNpZ3M6d2suc2lncyBuMiBqKVxuXG5sZXQgbmV3X2ZyZWUgd2sgKCgoeCwgXykgYXMgbiksIGkpID1cbiAgbGV0IHhfbiA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHggd2suY2Nfbm9kZXMgaW5cbiAgbWF0Y2ggeF9uLihpKSB3aXRoXG4gIHwgVW5TcGVjLCBzdCAtPlxuICAgIGxldCAoKSA9IHhfbi4oaSkgPC0gRnJlZSwgc3QgaW5cbiAgICB3a1xuICB8IChGcmVlIHwgTGluayBfKSwgXyAtPiByYWlzZSAoYWxyZWFkeV9zcGVjaWZpZWQgfnNpZ3M6d2suc2lncyBuIGkpXG5cbmxldCBuZXdfaW50ZXJuYWxfc3RhdGUgd2sgKCgoeCwgXykgYXMgbiksIGkpIHZhID1cbiAgbGV0IHhfbiA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHggd2suY2Nfbm9kZXMgaW5cbiAgbGV0IGwsIHMgPSB4X24uKGkpIGluXG4gIGlmIHMgPj0gMCB0aGVuXG4gICAgcmFpc2UgKGFscmVhZHlfc3BlY2lmaWVkIH5zaWdzOndrLnNpZ3MgbiBpKVxuICBlbHNlIChcbiAgICBsZXQgKCkgPSB4X24uKGkpIDwtIGwsIHZhIGluXG4gICAgd2tcbiAgKVxuXG5sZXQgbmV3X25vZGUgd2sgdHlwZV9pZCA9XG4gIGxldCAoKSA9IGNoZWNrX2RhbmdsaW5nIHdrIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSB3ay5zaWdzIHR5cGVfaWQgaW5cbiAgbWF0Y2ggd2sucmVzZXJ2ZWRfaWQuKHR5cGVfaWQpIHdpdGhcbiAgfCBoIDo6IHQgLT5cbiAgICBsZXQgKCkgPSB3ay51c2VkX2lkLih0eXBlX2lkKSA8LSBoIDo6IHdrLnVzZWRfaWQuKHR5cGVfaWQpIGluXG4gICAgbGV0ICgpID0gd2sucmVzZXJ2ZWRfaWQuKHR5cGVfaWQpIDwtIHQgaW5cbiAgICBsZXQgbm9kZSA9IGgsIHR5cGVfaWQgaW5cbiAgICAoIG5vZGUsXG4gICAgICB7XG4gICAgICAgIHNpZ3MgPSB3ay5zaWdzO1xuICAgICAgICBjY19lbnYgPSB3ay5jY19lbnY7XG4gICAgICAgIHJlc2VydmVkX2lkID0gd2sucmVzZXJ2ZWRfaWQ7XG4gICAgICAgIHVzZWRfaWQgPSB3ay51c2VkX2lkO1xuICAgICAgICBmcmVlX2lkID0gd2suZnJlZV9pZDtcbiAgICAgICAgZGFuZ2xpbmcgPVxuICAgICAgICAgIChpZiBNb2RzLkludE1hcC5pc19lbXB0eSB3ay5jY19ub2RlcyB0aGVuXG4gICAgICAgICAgICAgMFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgaCk7XG4gICAgICAgIGNjX25vZGVzID0gTW9kcy5JbnRNYXAuYWRkIGggKEFycmF5Lm1ha2UgYXJpdHkgKFVuU3BlYywgLTEpKSB3ay5jY19ub2RlcztcbiAgICAgIH0gKVxuICB8IFtdIC0+XG4gICAgbGV0ICgpID0gd2sudXNlZF9pZC4odHlwZV9pZCkgPC0gd2suZnJlZV9pZCA6OiB3ay51c2VkX2lkLih0eXBlX2lkKSBpblxuICAgIGxldCBub2RlID0gd2suZnJlZV9pZCwgdHlwZV9pZCBpblxuICAgICggbm9kZSxcbiAgICAgIHtcbiAgICAgICAgc2lncyA9IHdrLnNpZ3M7XG4gICAgICAgIGNjX2VudiA9IHdrLmNjX2VudjtcbiAgICAgICAgcmVzZXJ2ZWRfaWQgPSB3ay5yZXNlcnZlZF9pZDtcbiAgICAgICAgdXNlZF9pZCA9IHdrLnVzZWRfaWQ7XG4gICAgICAgIGZyZWVfaWQgPSBzdWNjIHdrLmZyZWVfaWQ7XG4gICAgICAgIGRhbmdsaW5nID1cbiAgICAgICAgICAoaWYgTW9kcy5JbnRNYXAuaXNfZW1wdHkgd2suY2Nfbm9kZXMgdGhlblxuICAgICAgICAgICAgIDBcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIHdrLmZyZWVfaWQpO1xuICAgICAgICBjY19ub2RlcyA9XG4gICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHdrLmZyZWVfaWQgKEFycmF5Lm1ha2UgYXJpdHkgKFVuU3BlYywgLTEpKSB3ay5jY19ub2RlcztcbiAgICAgIH0gKVxuXG5sZXQgbWluaW1hbF9lbnYgfmRlYnVnX21vZGUgZW52IGNvbnRhY3RfbWFwID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gdHkgLT5cbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgKGZ1biBzIGFjYyAoaW50cywgbGlua3MpIC0+XG4gICAgICAgICAgbGV0IHcgPSBiZWdpbl9uZXcgYWNjIGluXG4gICAgICAgICAgbGV0IG4sIHcgPSBuZXdfbm9kZSB3IHR5IGluXG4gICAgICAgICAgbGV0IHcgPSBuZXdfZnJlZSB3IChuLCBzKSBpblxuICAgICAgICAgIGxldCBhY2MnLCBfLCBfLCBfID0gcmF3X2ZpbmlzaF9uZXcgfmRlYnVnX21vZGUgfnRvcGxldmVsOmZhbHNlIHcgaW5cbiAgICAgICAgICBsZXQgYWNjJycgPVxuICAgICAgICAgICAgTW9kcy5JbnRTZXQuZm9sZFxuICAgICAgICAgICAgICAoZnVuIGkgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IHcgPSBiZWdpbl9uZXcgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IG4sIHcgPSBuZXdfbm9kZSB3IHR5IGluXG4gICAgICAgICAgICAgICAgbGV0IHcgPSBuZXdfaW50ZXJuYWxfc3RhdGUgdyAobiwgcykgaSBpblxuICAgICAgICAgICAgICAgIGxldCBvdXQsIF8sIF8sIF8gPVxuICAgICAgICAgICAgICAgICAgcmF3X2ZpbmlzaF9uZXcgfmRlYnVnX21vZGUgfnRvcGxldmVsOmZhbHNlIHdcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG91dClcbiAgICAgICAgICAgICAgaW50cyBhY2MnXG4gICAgICAgICAgaW5cbiAgICAgICAgICBNb2RzLkludDJTZXQuZm9sZFxuICAgICAgICAgICAgKGZ1biAodHknLCBzJykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCB3ID0gYmVnaW5fbmV3IGFjYyBpblxuICAgICAgICAgICAgICBsZXQgbiwgdyA9IG5ld19ub2RlIHcgdHkgaW5cbiAgICAgICAgICAgICAgbGV0IG4nLCB3ID0gbmV3X25vZGUgdyB0eScgaW5cbiAgICAgICAgICAgICAgbGV0IHcgPSBuZXdfbGluayB3IChuLCBzKSAobicsIHMnKSBpblxuICAgICAgICAgICAgICBsZXQgb3V0LCBfLCBfLCBfID0gcmF3X2ZpbmlzaF9uZXcgfmRlYnVnX21vZGUgfnRvcGxldmVsOmZhbHNlIHcgaW5cbiAgICAgICAgICAgICAgaWYgdHkgPSB0eScgJiYgcyA8IHMnIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCB3ID0gYmVnaW5fbmV3IG91dCBpblxuICAgICAgICAgICAgICAgIGxldCBuLCB3ID0gbmV3X25vZGUgdyB0eSBpblxuICAgICAgICAgICAgICAgIGxldCB3ID0gbmV3X2xpbmsgdyAobiwgcykgKG4sIHMnKSBpblxuICAgICAgICAgICAgICAgIGxldCBvdXQnLCBfLCBfLCBfID1cbiAgICAgICAgICAgICAgICAgIHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbDpmYWxzZSB3XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBvdXQnXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIG91dClcbiAgICAgICAgICAgIGxpbmtzIGFjYycnKSlcbiAgICBlbnYgY29udGFjdF9tYXBcblxubGV0IGZvbGRfYnlfdHlwZSBmIGNjIGFjYyA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGFnZW50X3R5cGUgYWNjIGxpc3RfcG9zIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGFjYyBwb3MgLT5cbiAgICAgICAgICBsZXQgaW50ZiA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHBvcyBjYy5ub2RlcyBpblxuICAgICAgICAgIGYgfnBvcyB+YWdlbnRfdHlwZSBpbnRmIGFjYylcbiAgICAgICAgYWNjIGxpc3RfcG9zKVxuICAgIGFjYyBjYy5ub2Rlc19ieV90eXBlXG5cbmxldCBmb2xkIGYgY2MgYWNjID0gTW9kcy5JbnRNYXAuZm9sZCBmIGNjLm5vZGVzIGFjY1xuXG5sZXQgZmluYWxpemUgfmRlYnVnX21vZGUgfnNoYXJpbmcgZW52IGNvbnRhY3RfbWFwID1cbiAgbGV0IHNpZ3MgPSBQcmVFbnYuc2lncyBlbnYgaW5cbiAgbGV0IGVudiA9IG1pbmltYWxfZW52IH5kZWJ1Z19tb2RlIGVudiBjb250YWN0X21hcCBpblxuICBsZXQgc2ksIGNvbXBsZXRlX2RvbWFpbiA9XG4gICAgUHJlRW52LnNhdHVyYXRlIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgZW52LlByZUVudi5kb21haW5cbiAgaW5cbiAgbGV0IGRvbWFpbiA9IEFycmF5Lm1ha2UgKHN1Y2Mgc2kpIChQcmVFbnYuZW1wdHlfcG9pbnQgZW52LlByZUVudi5zaWdfZGVjbCkgaW5cbiAgbGV0IHNpbmdsZXMgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRNYXAuZW1wdHkgMSBjb21wbGV0ZV9kb21haW4gaW5cbiAgbGV0IGVsZW1lbnRhcmllcyA9IFByZUVudi5maWxsX2VsZW0gZW52LlByZUVudi5zaWdfZGVjbCBzaW5nbGVzIGluXG4gIGxldCAoKSA9XG4gICAgTW9kcy5JbnRNYXAuaXRlclxuICAgICAgKGZ1biBfIC0+XG4gICAgICAgIExpc3QuaXRlciAoZnVuIHggLT5cbiAgICAgICAgICAgIGRvbWFpbi4oeC5wX2lkKSA8LVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgRW52LmNvbnRlbnQgPSB4LmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgRW52LnNvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICBFbnYuZGVwcyA9IHguZGVwZW5kaW5nO1xuICAgICAgICAgICAgICAgIEVudi5yb290cyA9IHgucm9vdHM7XG4gICAgICAgICAgICAgIH0pKVxuICAgICAgc2luZ2xlc1xuICBpblxuICBsZXQgc3RhdF9uYXZfc3RlcHMgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gbGV2ZWwgZG9tYWluX2xldmVsIGFjY19sZXZlbCAtPlxuICAgICAgICBpZiBsZXZlbCA8PSAxIHRoZW5cbiAgICAgICAgICBhY2NfbGV2ZWxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgICAgICAgIChmdW4gXyBsIGFjYyAtPlxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gYWNjIHggLT5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIGRvbWFpbi4oeC5wX2lkKSA8LVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudi5jb250ZW50ID0geC5lbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgRW52LnNvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudi5yb290cyA9IHgucm9vdHM7XG4gICAgICAgICAgICAgICAgICAgICAgICBFbnYuZGVwcyA9IHguZGVwZW5kaW5nO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAgICAgICAgICAgICAgIChmdW4gXyBsbCBhY2NsIC0+XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjIGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGluZ3MgfmRlYnVnX21vZGUgc2lncyBlLmVsZW1lbnQgeC5lbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmpzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjIGlual9lX3ggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlRW52Lmluc2VydF9uYXZpZ2F0aW9uIH5kZWJ1Z19tb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LlByZUVudi5pZF9ieV90eXBlIGVudi5QcmVFbnYubmJfaWQgZG9tYWluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wX2lkIHguZWxlbWVudCBpbmpfZV94IGUucF9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGFjYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyBpbmpzKVxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjbCBsbClcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlcyBhY2MpXG4gICAgICAgICAgICAgICAgYWNjIGwpXG4gICAgICAgICAgICBkb21haW5fbGV2ZWwgYWNjX2xldmVsKVxuICAgICAgY29tcGxldGVfZG9tYWluIDBcbiAgaW5cbiAgbGV0IGxldmVsMCA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludE1hcC5lbXB0eSAwIGNvbXBsZXRlX2RvbWFpbiBpblxuICBsZXQgc2luZ2xlX2FnZW50X3BvaW50cyA9XG4gICAgQXJyYXkubWFrZSAoQXJyYXkubGVuZ3RoIGVudi5QcmVFbnYuaWRfYnlfdHlwZSkgTm9uZVxuICBpblxuICBsZXQgKCkgPVxuICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgIChmdW4gXyAtPlxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biBwIC0+XG4gICAgICAgICAgICBtYXRjaCBmaW5kX3Jvb3QgcC5lbGVtZW50IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIChfLCB0eSkgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBkb21haW4uKHAucF9pZCkgPC1cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgRW52LmNvbnRlbnQgPSBwLmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIEVudi5yb290cyA9IHAucm9vdHM7XG4gICAgICAgICAgICAgICAgICAgIEVudi5kZXBzID0gcC5kZXBlbmRpbmc7XG4gICAgICAgICAgICAgICAgICAgIEVudi5zb25zID0gW107XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNpbmdsZV9hZ2VudF9wb2ludHMuKHR5KSA8LSBTb21lIChwLnBfaWQsIHAuZGVwZW5kaW5nKSkpXG4gICAgICBsZXZlbDBcbiAgaW5cbiAgKCB7XG4gICAgICBFbnYuc2lnX2RlY2wgPSBlbnYuUHJlRW52LnNpZ19kZWNsO1xuICAgICAgRW52LmlkX2J5X3R5cGUgPSBlbnYuUHJlRW52LmlkX2J5X3R5cGU7XG4gICAgICBFbnYubWF4X29icyA9IGZyZXNoX2NjX2lkIGVudi5QcmVFbnYuZG9tYWluO1xuICAgICAgRW52LmRvbWFpbjtcbiAgICAgIEVudi5lbGVtZW50YXJpZXM7XG4gICAgICBFbnYuc2luZ2xlX2FnZW50X3BvaW50cztcbiAgICB9LFxuICAgIHsgc3RhdF9ub2RlcyA9IHNpOyBQcmVFbnYuc3RhdF9uYXZfc3RlcHMgfSApXG5cbmxldCBtZXJnZV9vbl9pbmYgfmRlYnVnX21vZGUgZW52IG0gZzEgZzIgPVxuICBsZXQgbV9saXN0ID0gUmVuYW1pbmcudG9fbGlzdCBtIGluXG4gIGxldCByb290MSwgcm9vdDIgPSBMaXN0LmhkIG1fbGlzdCBpblxuICBsZXQgcGFpcmluZyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIChhLCBiKSAtPiBNb2RzLkludDJTZXQuYWRkIChhLCBiKSBhY2MpXG4gICAgICBNb2RzLkludDJTZXQuZW1wdHkgbV9saXN0XG4gIGluXG4gIGxldCBwb3NzaWJpbGl0aWVzID0gcmVmIHBhaXJpbmcgaW5cbiAgbWF0Y2hcbiAgICBhcmVfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSB+cG9zc2liaWxpdGllcyB+c3RyaWN0OmZhbHNlIHJvb3QxIGcxIHJvb3QyIGcyXG4gIHdpdGhcbiAgfCBTb21lIG0nLCBfIC0+XG4gICAgbGV0IF8sIHB1c2hvdXQgPVxuICAgICAgbWVyZ2VfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSBlbnYuUHJlRW52LmlkX2J5X3R5cGUgZW52LlByZUVudi5uYl9pZCBtJyBnMVxuICAgICAgICBnMlxuICAgIGluXG4gICAgU29tZSBwdXNob3V0LCBOb25lXG4gIHwgTm9uZSwgY29uZmxpY3QgLT4gTm9uZSwgY29uZmxpY3RcblxubGV0IGxlbmd0aCBjYyA9IE1vZHMuSW50TWFwLnNpemUgY2Mubm9kZXNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IFJlbmFtaW5nLnQgTW9kcy5JbnRNYXAudCAqIE1vZHMuSW50U2V0LnRcbigqIChtYXAsc2V0KVxuICAgbWFwOiBwb2ludF9pIC0+IChub2RlX2ooaSkgLT4gaWRfbm9kZV9ncmFwaF9pbl9jdXJyZW50X21hdGNoaW5nKVxuICAgc2V0OmNvZG9tYWluIG9mIGN1cnJlbnQgbWF0Y2hpbmcgKilcblxudHlwZSBtYXRjaGluZyA9IHRcblxubGV0IGVtcHR5ID0gTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50U2V0LmVtcHR5XG5cbmxldCBhZGRfY2MgKGluaiwgY28pIGlkIHIgPVxuICBsZXQgYyA9IFJlbmFtaW5nLmltYWdlIHIgaW5cbiAgbWF0Y2ggTW9kcy5JbnRTZXQuZGlzam9pbnRfdW5pb24gY28gYyB3aXRoXG4gIHwgU29tZSBjbycgLT4gU29tZSAoTW9kcy5JbnRNYXAuYWRkIGlkIHIgaW5qLCBjbycpXG4gIHwgTm9uZSAtPiBOb25lXG5cbmxldCBkZWJ1Z19wcmludCBmIChtLCBfY28pID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbKCVhKUBdXCJcbiAgICAoUHAuc2V0IE1vZHMuSW50TWFwLmJpbmRpbmdzIFBwLmNvbW1hIChmdW4gZiAoY2NpZCwgbm0pIC0+XG4gICAgICAgICBQcC5zZXQgUmVuYW1pbmcudG9fbGlzdCBQcC5jb21tYVxuICAgICAgICAgICAoZnVuIGYgKG5vZGUsIGRzdCkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVpOiVpLT4laVwiIGNjaWQgbm9kZSBkc3QpXG4gICAgICAgICAgIGYgbm0pKVxuICAgIG1cblxubGV0IHJlY29uc3RydWN0X3JlbmFtaW5nIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBjY19pZCByb290ID1cbiAgbGV0IHBvaW50ID0gUGF0dGVybi5FbnYuZ2V0IGRvbWFpbiBjY19pZCBpblxuICBtYXRjaCBQYXR0ZXJuLkVudi5yb290cyBwb2ludCB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIk1hdGNoaW5nLnJlY29uc3RydWN0IGNjIGVycm9yXCJcbiAgKCotIHJtIC0gYWRkIDogaW50IC0+IGludCAtPiBSZW5hbWluZy50IC0+IFJlbmFtaW5nLnQgKilcbiAgfCBTb21lIChyaWRzLCBydHkpIC0+XG4gICAgbGV0IGluaiA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gICAgbGV0IF8sIGluamVjdGl2ZSA9XG4gICAgICBtYXRjaCBQYXR0ZXJuLnJlY29uc3RydWN0aW9uX25hdmlnYXRpb24gKFBhdHRlcm4uRW52LmNvbnRlbnQgcG9pbnQpIHdpdGhcbiAgICAgIHwgXyA6OiBfIGFzIG5hdiAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKHJvb3QsIGluamVjdGl2ZSkgbmF2IC0+XG4gICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgIGluamVjdGl2ZVxuICAgICAgICAgICAgICAmJiBOYXZpZ2F0aW9uLmltcGVyYXRpdmVfZWRnZV9pc192YWxpZCB+ZGVidWdfbW9kZSA/cm9vdCBpbmogZ3JhcGhcbiAgICAgICAgICAgICAgICAgICBuYXYgKSlcbiAgICAgICAgICAoU29tZSAocm9vdCwgcnR5KSwgdHJ1ZSlcbiAgICAgICAgICBuYXZcbiAgICAgICgqLSBybSAtIGZpbmRfcm9vdDogY2MgLT4gKHR5cGUsIG5vZGUpIG9wdGlvbiAqKVxuICAgICAgfCBbXSAtPlxuICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgKG1hdGNoIHJpZHMgd2l0aFxuICAgICAgICAgIHwgWyByaWQgXSAtPiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSByaWQgcm9vdCBpbmpcbiAgICAgICAgICB8IF8gLT4gZmFsc2UpIClcbiAgICBpblxuICAgIGlmIGluamVjdGl2ZSB0aGVuXG4gICAgICBpbmpcbiAgICBlbHNlXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoXCJNYXRjaGluZy5yZWNvbnN0cnVjdCByZW5hbWluZyBlcnJvciBhdCByb290IFwiIF4gc3RyaW5nX29mX2ludCByb290KVxuXG4oKiByZWNvbnN0cnVjdDogUGF0dGVybi5FbnYudCAtPiBFZGdlcy50IC0+IHQgLT4gaW50IC0+IFBhdHRlcm4uaWQgLT5cbiAgIGludCAtPiB0IG9wdGlvbiopXG5sZXQgcmVjb25zdHJ1Y3QgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGluaiBpZCBjY19pZCByb290ID1cbiAgbGV0IHJlbmFtZSA9IHJlY29uc3RydWN0X3JlbmFtaW5nIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBjY19pZCByb290IGluXG4gIG1hdGNoIE1vZHMuSW50U2V0LmRpc2pvaW50X3VuaW9uIChSZW5hbWluZy5pbWFnZSByZW5hbWUpIChzbmQgaW5qKSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBjbyAtPiBTb21lIChNb2RzLkludE1hcC5hZGQgaWQgcmVuYW1lIChmc3QgaW5qKSwgY28pXG5cbmxldCByZWMgYXV4X2lzX3Jvb3Rfb2YgfmRlYnVnX21vZGUgZ3JhcGggcm9vdCBpbmogPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBoIDo6IHQgLT5cbiAgICBOYXZpZ2F0aW9uLmltcGVyYXRpdmVfZWRnZV9pc192YWxpZCB+ZGVidWdfbW9kZSA/cm9vdCBpbmogZ3JhcGggaFxuICAgICYmIGF1eF9pc19yb290X29mIH5kZWJ1Z19tb2RlIGdyYXBoIE5vbmUgaW5qIHRcblxubGV0IGlzX3Jvb3Rfb2YgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoICgoXywgcnR5KSBhcyByb290KSBjY19pZCA9XG4gIGxldCBwb2ludCA9IFBhdHRlcm4uRW52LmdldCBkb21haW4gY2NfaWQgaW5cbiAgbWF0Y2ggUGF0dGVybi5yZWNvbnN0cnVjdGlvbl9uYXZpZ2F0aW9uIChQYXR0ZXJuLkVudi5jb250ZW50IHBvaW50KSB3aXRoXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggUGF0dGVybi5FbnYucm9vdHMgcG9pbnQgd2l0aFxuICAgIHwgU29tZSAoXywgcnR5JykgLT4gcnR5ID0gcnR5J1xuICAgIHwgTm9uZSAtPiBmYWxzZSlcbiAgfCBuYXYgLT4gYXV4X2lzX3Jvb3Rfb2YgfmRlYnVnX21vZGUgZ3JhcGggKFNvbWUgcm9vdCkgKFJlbmFtaW5nLmVtcHR5ICgpKSBuYXZcblxubGV0IHJvb3RzX29mIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBjYyA9XG4gIEVkZ2VzLmFsbF9hZ2VudHNfd2hlcmVcbiAgICAoZnVuIHggLT4gaXNfcm9vdF9vZiB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggeCBjYylcbiAgICBncmFwaFxuXG4oKiBnZXQgOiAoQ29udGVudEFnZW50LnQgKiBpbnQpIC0+IHQgLT4gaW50ICopXG5sZXQgZ2V0IH5kZWJ1Z19tb2RlICgobm9kZSwgXyksIGlkKSAodCwgXykgPVxuICBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFJlbmFtaW5nLmR1bW15IGlkIHQpIG5vZGVcblxubGV0IGVsZW1lbnRzX3dpdGhfdHlwZXMgZG9tYWluIGNjcyAodCwgXykgPVxuICBsZXQgb3V0ID0gQXJyYXkubWFrZSAoTW9kcy5JbnRNYXAuc2l6ZSB0KSBbXSBpblxuICBsZXQgKCkgPVxuICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgIChmdW4gaWQgbWFwIC0+XG4gICAgICAgIG91dC4oaWQpIDwtXG4gICAgICAgICAgUmVuYW1pbmcuZm9sZFxuICAgICAgICAgICAgKGZ1biBpIG91dCBhY2MgLT5cbiAgICAgICAgICAgICAgKCBvdXQsXG4gICAgICAgICAgICAgICAgUGF0dGVybi5maW5kX3R5XG4gICAgICAgICAgICAgICAgICAoUGF0dGVybi5FbnYuY29udGVudCAoUGF0dGVybi5FbnYuZ2V0IGRvbWFpbiBjY3MuKGlkKSkpXG4gICAgICAgICAgICAgICAgICBpIClcbiAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgbWFwIFtdKVxuICAgICAgdFxuICBpblxuICBvdXRcblxubW9kdWxlIENhY2hlID0gc3RydWN0XG4gIHR5cGUgdCA9IFBhdHRlcm4uaWQgKiAoaW50ICogaW50KSBvcHRpb25cblxuICBsZXQgY29tcGFyZSAoYSwgYScpIChiLCBiJykgPVxuICAgIGxldCBjID0gUGF0dGVybi5jb21wYXJlX2Nhbm9uaWNhbHMgYSBiIGluXG4gICAgaWYgYyA9IDAgdGhlbiAoXG4gICAgICBtYXRjaCBhJywgYicgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IDBcbiAgICAgIHwgTm9uZSwgU29tZSBfIC0+IDFcbiAgICAgIHwgU29tZSBfLCBOb25lIC0+IC0xXG4gICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IE1vZHMuaW50X3BhaXJfY29tcGFyZSB4IHlcbiAgICApIGVsc2VcbiAgICAgIGNcblxuICBsZXQgcHJpbnQgZiAoYSwgYScpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWElYVwiXG4gICAgICAoUGF0dGVybi5wcmludCB+bm9Db3VudGVyczp0cnVlID9kb21haW46Tm9uZSB+d2l0aF9pZDp0cnVlKVxuICAgICAgYVxuICAgICAgKFBwLm9wdGlvbiAoUHAucGFpciBGb3JtYXQucHBfcHJpbnRfaW50IEZvcm1hdC5wcF9wcmludF9pbnQpKVxuICAgICAgYSdcbmVuZFxuXG5tb2R1bGUgQ2FjaGVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoQ2FjaGUpXG5cbnR5cGUgY2FjaGUgPSBDYWNoZVNldE1hcC5TZXQudFxuXG5sZXQgZW1wdHlfY2FjaGUgPSBDYWNoZVNldE1hcC5TZXQuZW1wdHlcblxubGV0IHN1cnZpdmVfbmF2IH5kZWJ1Z19tb2RlIGluaiBncmFwaCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBpbmogc3RlcCAtPlxuICAgICAgbWF0Y2ggaW5qIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbmpcbiAgICAgIHwgU29tZSBpbmogLT5cbiAgICAgICAgTmF2aWdhdGlvbi5pbmplY3Rpb25fZm9yX29uZV9tb3JlX2VkZ2UgfmRlYnVnX21vZGUgaW5qIGdyYXBoIHN0ZXApXG4gICAgKFNvbWUgaW5qKVxuXG4oKmVkZ2VzOiBsaXN0IG9mIGNvbmNyZXRlIGVkZ2VzLFxuICAgIHJldHVybnMgdGhlIHJvb3RzIG9mIG9ic2VydmFibGVzIHRoYXQgYXJlIGFib3ZlIGluIHRoZSBkb21haW4qKVxubGV0IGZyb21fZWRnZSB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggKChvdXQsIGNhY2hlKSBhcyBhY2MpIG5vZGUgc2l0ZSBhcnJvdyA9XG4gIGxldCByZWMgYXV4X2Zyb21fZWRnZXMgY2FjaGUgKChvYnMsIHJldl9kZXBzKSBhcyBhY2MpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjYywgY2FjaGVcbiAgICB8IChwaWQsIHBvaW50LCBpbmpfcG9pbnQyZ3JhcGgpIDo6IHJlbWFpbnMgLT5cbiAgICAgIGxldCBhY2MnID1cbiAgICAgICAgbWF0Y2ggUGF0dGVybi5FbnYucm9vdHMgcG9pbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSAoaWRzLCB0eSkgLT5cbiAgICAgICAgICAoIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gYWNjIGlkIC0+XG4gICAgICAgICAgICAgICAgKHBpZCwgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGlual9wb2ludDJncmFwaCBpZCwgdHkpKVxuICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgb2JzIGlkcyxcbiAgICAgICAgICAgIE9wZXJhdG9yLkRlcFNldC51bmlvbiByZXZfZGVwcyAoUGF0dGVybi5FbnYuZGVwcyBwb2ludCkgKVxuICAgICAgaW5cbiAgICAgIGxldCByZW1haW5zJywgY2FjaGUnID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuICgocmUsIGNhKSBhcyBwYWlyKSBzb24gLT5cbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIHN1cnZpdmVfbmF2IH5kZWJ1Z19tb2RlIGlual9wb2ludDJncmFwaCBncmFwaCBzb24uUGF0dGVybi5FbnYubmV4dFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHBhaXJcbiAgICAgICAgICAgIHwgU29tZSBpbmonIC0+XG4gICAgICAgICAgICAgIGxldCByZW5hbWUgPVxuICAgICAgICAgICAgICAgIFJlbmFtaW5nLmNvbXBvc2UgfmRlYnVnX21vZGUgZmFsc2Ugc29uLlBhdHRlcm4uRW52LmluaiBpbmonXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBjYScgPVxuICAgICAgICAgICAgICAgIENhY2hlU2V0TWFwLlNldC5hZGRcbiAgICAgICAgICAgICAgICAgIChzb24uUGF0dGVybi5FbnYuZHN0LCBSZW5hbWluZy5taW5fZWx0IHJlbmFtZSlcbiAgICAgICAgICAgICAgICAgIGNhXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGlmIGNhID09IGNhJyB0aGVuXG4gICAgICAgICAgICAgICAgcGFpclxuICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICBsZXQgcCcgPSBQYXR0ZXJuLkVudi5nZXQgZG9tYWluIHNvbi5QYXR0ZXJuLkVudi5kc3QgaW5cbiAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IHNvbi5QYXR0ZXJuLkVudi5kc3QsIHAnLCByZW5hbWUgaW5cbiAgICAgICAgICAgICAgICBuZXh0IDo6IHJlLCBjYSdcbiAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAocmVtYWlucywgY2FjaGUpIChQYXR0ZXJuLkVudi5zb25zIHBvaW50KVxuICAgICAgaW5cbiAgICAgIGF1eF9mcm9tX2VkZ2VzIGNhY2hlJyBhY2MnIHJlbWFpbnMnXG4gIGluXG4gIG1hdGNoIFBhdHRlcm4uRW52LmdldF9lbGVtZW50YXJ5IH5kZWJ1Z19tb2RlIGRvbWFpbiBub2RlIHNpdGUgYXJyb3cgd2l0aFxuICB8IE5vbmUgLT4gYWNjXG4gIHwgU29tZSB4IC0+XG4gICAgYXV4X2Zyb21fZWRnZXNcbiAgICAgICgqKCp1bm5lY2Vzc2FyeSopQ2FjaGVTZXRNYXAuU2V0LmFkZCAoY2NfaWQsUmVuYW1pbmcubWluX2VsdCBpbmonKSopXG4gICAgICBjYWNoZSBvdXQgWyB4IF1cblxubGV0IG9ic2VydmFibGVzX2Zyb21fYWdlbnQgZG9tYWluIGdyYXBoICgoKG9icywgcmRlcHMpLCBjYWNoZSkgYXMgYWNjKVxuICAgICgoXywgdHkpIGFzIG5vZGUpID1cbiAgaWYgRWRnZXMuaXNfYWdlbnQgbm9kZSBncmFwaCB0aGVuIChcbiAgICBtYXRjaCBQYXR0ZXJuLkVudi5nZXRfc2luZ2xlX2FnZW50IHR5IGRvbWFpbiB3aXRoXG4gICAgfCBTb21lIChjYywgZGVwcykgLT5cbiAgICAgICgoY2MsIG5vZGUpIDo6IG9icywgT3BlcmF0b3IuRGVwU2V0LnVuaW9uIHJkZXBzIGRlcHMpLCBjYWNoZVxuICAgIHwgTm9uZSAtPiBhY2NcbiAgKSBlbHNlXG4gICAgYWNjXG5cbmxldCBvYnNlcnZhYmxlc19mcm9tX2ZyZWUgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGFjYyBub2RlIHNpdGUgPVxuICBmcm9tX2VkZ2UgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGFjYyBub2RlIHNpdGUgTmF2aWdhdGlvbi5Ub05vdGhpbmdcblxubGV0IG9ic2VydmFibGVzX2Zyb21faW50ZXJuYWwgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGFjYyBub2RlIHNpdGUgaWQgPVxuICBmcm9tX2VkZ2UgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGFjYyBub2RlIHNpdGUgKE5hdmlnYXRpb24uVG9JbnRlcm5hbCBpZClcblxubGV0IG9ic2VydmFibGVzX2Zyb21fbGluayB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggYWNjIG4gc2l0ZSBuJyBzaXRlJyA9XG4gIGZyb21fZWRnZSBkb21haW4gfmRlYnVnX21vZGUgZ3JhcGggYWNjIG4gc2l0ZVxuICAgIChOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5GcmVzaCBuJywgc2l0ZScpKVxuXG5tb2R1bGUgQWdlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRXhpc3Rpbmcgb2YgQWdlbnQudCAqIGludCB8IEZyZXNoIG9mIGludCAqIGludCAoKiB0eXBlLCBpZCAqKVxuXG4gIGxldCByZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIChuLCBpZCcpIGFzIHggLT5cbiAgICAgIGlmIGlkIDw+IGlkJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbicgPSBBZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaW5qIG4gaW5cbiAgICAgICAgaWYgbiA9PSBuJyB0aGVuXG4gICAgICAgICAgeFxuICAgICAgICBlbHNlXG4gICAgICAgICAgRXhpc3RpbmcgKG4nLCBpZCcpXG4gICAgICApXG4gICAgfCBGcmVzaCBfIGFzIHggLT4geFxuXG4gIGxldCBwcmludCA/c2lncyBmID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIChuLCBpZCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS8qJWkqL1wiIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKSBuIGlkXG4gICAgfCBGcmVzaCAodHksIGkpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEvKiV0ICVpKi9cIlxuICAgICAgICAobWF0Y2ggc2lncyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50XG4gICAgICAgIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICB0eSBQcC5udSBpXG5cbiAgbGV0IHByaW50X3NpdGUgP3NpZ3MgcGxhY2UgZiBzaXRlID1cbiAgICBtYXRjaCBwbGFjZSB3aXRoXG4gICAgfCBFeGlzdGluZyAobiwgXykgLT4gQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBuIGYgc2l0ZVxuICAgIHwgRnJlc2ggKHR5LCBfKSAtPlxuICAgICAgKG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBzaXRlXG4gICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIHR5IGYgc2l0ZSlcblxuICBsZXQgcHJpbnRfaW50ZXJuYWwgP3NpZ3MgcGxhY2Ugc2l0ZSBmIGlkID1cbiAgICBtYXRjaCBwbGFjZSB3aXRoXG4gICAgfCBFeGlzdGluZyAobiwgXykgLT4gQWdlbnQucHJpbnRfaW50ZXJuYWwgP3NpZ3MgbiBzaXRlIGYgaWRcbiAgICB8IEZyZXNoICh0eSwgXykgLT5cbiAgICAgIChtYXRjaCBzaWdzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWl+JWlcIiBzaXRlIGlkXG4gICAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgICBTaWduYXR1cmUucHJpbnRfc2l0ZV9pbnRlcm5hbF9zdGF0ZSBzaWdzIHR5IHNpdGUgZiAoU29tZSBpZCkpXG5cbiAgbGV0IGdldF90eXBlID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIChuLCBfKSAtPiBBZ2VudC5zb3J0IG5cbiAgICB8IEZyZXNoIChpLCBfKSAtPiBpXG5cbiAgbGV0IGdldF9pZCA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyAobiwgXykgLT4gQWdlbnQuaWQgblxuICAgIHwgRnJlc2ggKF8sIGkpIC0+IGlcblxuICBsZXQgaXNfZnJlc2ggPSBmdW5jdGlvblxuICAgIHwgRXhpc3RpbmcgXyAtPiBmYWxzZVxuICAgIHwgRnJlc2ggXyAtPiB0cnVlXG5cbiAgbGV0IGNvbmNyZXRpemUgfmRlYnVnX21vZGUgKGlual9ub2RlcywgaW5qX2ZyZXNoKSA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyAobiwgaWQpIC0+IGdldCB+ZGVidWdfbW9kZSAobiwgaWQpIGlual9ub2RlcywgQWdlbnQuc29ydCBuXG4gICAgfCBGcmVzaCAodHksIGlkKSAtPlxuICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIGlual9mcmVzaCB3aXRoXG4gICAgICB8IFNvbWUgeCAtPiB4LCB0eVxuICAgICAgfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZClcblxuICBsZXQgdG9feW9qc29uID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIChuLCB0eSkgLT5cbiAgICAgIChgQXNzb2NcbiAgICAgICAgIFtcbiAgICAgICAgICAgKCBcIkV4aXN0aW5nXCIsXG4gICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgYEFzc29jIFsgXCJhZ2VudFwiLCBBZ2VudC50b19qc29uIG4gXTsgYEFzc29jIFsgXCJ0eXBlXCIsIGBJbnQgdHkgXTtcbiAgICAgICAgICAgICAgIF0gKTtcbiAgICAgICAgIF1cbiAgICAgICAgOiBZb2pzb24uQmFzaWMudClcbiAgICB8IEZyZXNoIChpZCwgdHkpIC0+XG4gICAgICBgQXNzb2MgWyBcIkZyZXNoXCIsIGBBc3NvYyBbIFwiaWRcIiwgYEludCBpZDsgXCJ0eXBlXCIsIGBJbnQgdHkgXSBdXG5cbiAgbGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgWyAoXCJFeGlzdGluZ1wiLCBgTGlzdCBsaXN0KSBdIC0+XG4gICAgICAobWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IFsgYEFzc29jIFsgKFwiYWdlbnRcIiwgYSkgXTsgYEFzc29jIFsgKFwidHlwZVwiLCBgSW50IHR5KSBdIF0gLT5cbiAgICAgICAgRXhpc3RpbmcgKEFnZW50Lm9mX2pzb24gYSwgdHkpXG4gICAgICB8IHggOjogXyAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFnZW50XCIsIHgpKVxuICAgICAgfCBbXSAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFnZW50XCIsIGBOdWxsKSkpXG4gICAgfCBgQXNzb2MgWyAoXCJGcmVzaFwiLCBhKSBdIC0+XG4gICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICB8IGBBc3NvYyBbIChcImlkXCIsIGBJbnQgaWQpOyAoXCJ0eXBlXCIsIGBJbnQgdHkpIF0gLT4gRnJlc2ggKGlkLCB0eSlcbiAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFnZW50XCIsIHgpKSlcbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhZ2VudFwiLCB4KSlcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBhZ2VudF9uYW1lID0gaW50XG50eXBlIHNpdGVfbmFtZSA9IGludFxudHlwZSBpbnRlcm5hbF9zdGF0ZSA9IGludFxudHlwZSBiaW5kaW5nX3R5cGUgPSBhZ2VudF9uYW1lICogc2l0ZV9uYW1lXG50eXBlIGFic3RyYWN0ID0gTWF0Y2hpbmcuQWdlbnQudFxudHlwZSBjb25jcmV0ZSA9IEFnZW50LnRcbnR5cGUgJ2Egc2l0ZSA9ICdhICogc2l0ZV9uYW1lXG5cbnR5cGUgJ2EgdGVzdCA9XG4gIHwgSXNfSGVyZSBvZiAnYVxuICB8IEhhc19JbnRlcm5hbCBvZiAnYSBzaXRlICogaW50ZXJuYWxfc3RhdGVcbiAgfCBJc19GcmVlIG9mICdhIHNpdGVcbiAgfCBJc19Cb3VuZCBvZiAnYSBzaXRlXG4gIHwgSGFzX0JpbmRpbmdfdHlwZSBvZiAnYSBzaXRlICogYmluZGluZ190eXBlXG4gIHwgSXNfQm91bmRfdG8gb2YgJ2Egc2l0ZSAqICdhIHNpdGVcblxudHlwZSAnYSBhY3Rpb24gPVxuICB8IENyZWF0ZSBvZiAnYSAqIChzaXRlX25hbWUgKiBpbnRlcm5hbF9zdGF0ZSBvcHRpb24pIGxpc3QgKCogcG91cnF1b2kgw6dhICopXG4gIHwgTW9kX2ludGVybmFsIG9mICdhIHNpdGUgKiBpbnRlcm5hbF9zdGF0ZVxuICB8IEJpbmQgb2YgJ2Egc2l0ZSAqICdhIHNpdGVcbiAgfCBCaW5kX3RvIG9mICdhIHNpdGUgKiAnYSBzaXRlXG4gIHwgRnJlZSBvZiAnYSBzaXRlXG4gIHwgUmVtb3ZlIG9mICdhXG5cbigqIFRoZSBzZW1hbnRpY3Mgb2YgY29uY3JldGUgYWN0aW9ucyBzZWVtcyB0byBiZSB0aGUgZm9sbG93aW5nIG9uZS5cblxuICAgLSBXaGVuIGFuIGFnZW50IGlzIHJlbW92ZWQsIG5vIG90aGVyIGFjdGlvbiBpcyBzdG9yZWQgYWJvdXQgaXQgKGluY2x1ZGluZyBib25kIHJlbGVhc2luZykuXG4gICAtIENyZWF0ZWQgYWdlbnRzIGFyZSBjcmVhdGVkIHdpdGhvdXQgZGVmYXVsdCBiaW5kaW5nL2ludGVybmFsIHN0YXRlcy5cbiAgIC0gQm9uZHMgYXJlIGluc2VydGVkIHRoYW5rcyB0byB0d28gc3ltbWV0cmljIGFjdGlvbnMgKEJpbmRfdG8gLi4uKSAqKVxuXG5sZXQgd2VpZ2h0IGFjdGlvbiA9XG4gIG1hdGNoIGFjdGlvbiB3aXRoXG4gIHwgQ3JlYXRlIF8gLT4gMVxuICB8IE1vZF9pbnRlcm5hbCBfIHwgQmluZCBfIHwgQmluZF90byBfIHwgRnJlZSBfIC0+IDJcbiAgfCBSZW1vdmUgXyAtPiAwXG5cbmxldCB3ZWlnaHRfcmV2ZXJzZSBhY3Rpb24gPVxuICBtYXRjaCBhY3Rpb24gd2l0aFxuICB8IENyZWF0ZSBfIC0+IDFcbiAgfCBNb2RfaW50ZXJuYWwgXyB8IEJpbmQgXyB8IEJpbmRfdG8gXyB8IEZyZWUgXyAtPiAwXG4gIHwgUmVtb3ZlIF8gLT4gMlxuXG5sZXQgc29ydF9jb25jcmV0ZV9hY3Rpb25fbGlzdCA9IFRvb2xzLnNvcnRfYnlfcHJpb3JpdHkgd2VpZ2h0IDJcbmxldCBzb3J0X2NvbmNyZXRlX2FjdGlvbl9saXN0X3JldmVyc2UgPSBUb29scy5zb3J0X2J5X3ByaW9yaXR5IHdlaWdodF9yZXZlcnNlIDJcbmxldCBzb3J0X2Fic3RyYWN0X2FjdGlvbl9saXN0ID0gVG9vbHMuc29ydF9ieV9wcmlvcml0eSB3ZWlnaHQgMlxubGV0IHNvcnRfYWJzdHJhY3RfYWN0aW9uX2xpc3RfcmV2ZXJzZSA9IFRvb2xzLnNvcnRfYnlfcHJpb3JpdHkgd2VpZ2h0X3JldmVyc2UgMlxuXG50eXBlICdhIGJpbmRpbmdfc3RhdGUgPVxuICB8IEFOWVxuICB8IEZSRUVcbiAgfCBCT1VORFxuICB8IEJPVU5EX1RZUEUgb2YgYmluZGluZ190eXBlXG4gIHwgQk9VTkRfdG8gb2YgJ2Egc2l0ZVxuXG50eXBlICdhIGV2ZW50ID0ge1xuICB0ZXN0czogJ2EgdGVzdCBsaXN0IGxpc3Q7XG4gIGFjdGlvbnM6ICdhIGFjdGlvbiBsaXN0O1xuICBzaWRlX2VmZmVjdHNfc3JjOiAoJ2Egc2l0ZSAqICdhIGJpbmRpbmdfc3RhdGUpIGxpc3Q7XG4gIHNpZGVfZWZmZWN0c19kc3Q6ICdhIHNpdGUgbGlzdDtcbiAgY29ubmVjdGl2aXR5X3Rlc3RzOiAnYSB0ZXN0IGxpc3Q7XG59XG5cbmxldCBlbXB0eV9ldmVudCA9XG4gIHtcbiAgICB0ZXN0cyA9IFtdO1xuICAgIGFjdGlvbnMgPSBbXTtcbiAgICBzaWRlX2VmZmVjdHNfc3JjID0gW107XG4gICAgc2lkZV9lZmZlY3RzX2RzdCA9IFtdO1xuICAgIGNvbm5lY3Rpdml0eV90ZXN0cyA9IFtdO1xuICB9XG5cbmxldCBjb25jcmV0aXplX2JpbmRpbmdfc3RhdGUgfmRlYnVnX21vZGUgaW5qMmdyYXBoID0gZnVuY3Rpb25cbiAgfCBBTlkgLT4gQU5ZXG4gIHwgRlJFRSAtPiBGUkVFXG4gIHwgQk9VTkQgLT4gQk9VTkRcbiAgfCBCT1VORF9UWVBFIGJ0IC0+IEJPVU5EX1RZUEUgYnRcbiAgfCBCT1VORF90byAocGwsIHMpIC0+XG4gICAgQk9VTkRfdG8gKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKVxuXG5sZXQgY29uY3JldGl6ZV90ZXN0IH5kZWJ1Z19tb2RlIGluajJncmFwaCA9IGZ1bmN0aW9uXG4gIHwgSXNfSGVyZSBwbCAtPiBJc19IZXJlIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbClcbiAgfCBIYXNfSW50ZXJuYWwgKChwbCwgcyksIGkpIC0+XG4gICAgSGFzX0ludGVybmFsICgoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpLCBpKVxuICB8IElzX0ZyZWUgKHBsLCBzKSAtPlxuICAgIElzX0ZyZWUgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKVxuICB8IElzX0JvdW5kIChwbCwgcykgLT5cbiAgICBJc19Cb3VuZCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpXG4gIHwgSGFzX0JpbmRpbmdfdHlwZSAoKHBsLCBzKSwgdCkgLT5cbiAgICBIYXNfQmluZGluZ190eXBlICgoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpLCB0KVxuICB8IElzX0JvdW5kX3RvICgocGwsIHMpLCAocGwnLCBzJykpIC0+XG4gICAgSXNfQm91bmRfdG9cbiAgICAgICggKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSxcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsJywgcycpIClcblxubGV0IGNvbmNyZXRpemVfYWN0aW9uIH5kZWJ1Z19tb2RlIGluajJncmFwaCA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlIChwbCwgaSkgLT5cbiAgICBDcmVhdGUgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBpKVxuICB8IE1vZF9pbnRlcm5hbCAoKHBsLCBzKSwgaSkgLT5cbiAgICBNb2RfaW50ZXJuYWwgKChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcyksIGkpXG4gIHwgQmluZCAoKHBsLCBzKSwgKHBsJywgcycpKSAtPlxuICAgIEJpbmRcbiAgICAgICggKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSxcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsJywgcycpIClcbiAgfCBCaW5kX3RvICgocGwsIHMpLCAocGwnLCBzJykpIC0+XG4gICAgQmluZF90b1xuICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpLFxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwnLCBzJykgKVxuICB8IEZyZWUgKHBsLCBzKSAtPiBGcmVlIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcylcbiAgfCBSZW1vdmUgcGwgLT4gUmVtb3ZlIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbClcblxubGV0IHRyeV9jb25jcmV0aXplX2FjdGlvbiB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggYWN0aW9ucyA9XG4gIHRyeSBTb21lIChjb25jcmV0aXplX2FjdGlvbiB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggYWN0aW9ucylcbiAgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuKCogVGhlIGFjdGlvbiBpcyBkZWFsaW5nIHdpdGggYSBmcmVzaCBhZ2VudCAqKVxuXG5sZXQgY29uY3JldGl6ZV9ldmVudCB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggZSA9XG4gIHtcbiAgICB0ZXN0cyA9XG4gICAgICBMaXN0Lm1hcCAoTGlzdC5yZXZfbWFwIChjb25jcmV0aXplX3Rlc3QgfmRlYnVnX21vZGUgaW5qMmdyYXBoKSkgZS50ZXN0cztcbiAgICBhY3Rpb25zID1cbiAgICAgICgqIGFjdGlvbnMgYXJlIHJlb3JkZXJlZCB0aGUgZm9sbG93aW5nIHdheTpcbiAgICAgICAgIDEpIFJlbW92ZSBhY3Rpb25zXG4gICAgICAgICAyKSBDcmVhdGlvbiBhY3Rpb25zXG4gICAgICAgICAzKSBBbnl0aGluZyBlbHNlLiopXG4gICAgICBzb3J0X2Fic3RyYWN0X2FjdGlvbl9saXN0XG4gICAgICAgIChMaXN0LnJldl9tYXAgKGNvbmNyZXRpemVfYWN0aW9uIH5kZWJ1Z19tb2RlIGluajJncmFwaCkgZS5hY3Rpb25zKTtcbiAgICBzaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAoZnVuICgocGwsIHMpLCBiKSAtPlxuICAgICAgICAgICggKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSxcbiAgICAgICAgICAgIGNvbmNyZXRpemVfYmluZGluZ19zdGF0ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggYiApKVxuICAgICAgICBlLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgc2lkZV9lZmZlY3RzX2RzdCA9XG4gICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgKGZ1biAocGwsIHMpIC0+IE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKVxuICAgICAgICBlLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgIExpc3QucmV2X21hcCAoY29uY3JldGl6ZV90ZXN0IH5kZWJ1Z19tb2RlIGluajJncmFwaCkgZS5jb25uZWN0aXZpdHlfdGVzdHM7XG4gIH1cblxubGV0IG1hcF90ZXN0IGYgPSBmdW5jdGlvblxuICB8IElzX0hlcmUgYVxuICB8IEhhc19JbnRlcm5hbCAoKGEsIF8pLCBfKVxuICB8IElzX0ZyZWUgKGEsIF8pXG4gIHwgSXNfQm91bmQgKGEsIF8pXG4gIHwgSGFzX0JpbmRpbmdfdHlwZSAoKGEsIF8pLCBfKVxuICB8IElzX0JvdW5kX3RvICgoYSwgXyksIF8pIC0+XG4gICAgZiBhXG5cbmxldCBtYXBfYWN0aW9uIGYgPSBmdW5jdGlvblxuICB8IENyZWF0ZSAoYSwgXylcbiAgfCBNb2RfaW50ZXJuYWwgKChhLCBfKSwgXylcbiAgfCBCaW5kICgoYSwgXyksIF8pXG4gIHwgQmluZF90byAoKGEsIF8pLCBfKVxuICB8IEZyZWUgKGEsIF8pXG4gIHwgUmVtb3ZlIGEgLT5cbiAgICBmIGFcblxubGV0IG1hdGNoX3Rlc3RzID0gZnVuY3Rpb25cbiAgKCogYWJzdHJhY3QsIGNvbmNyZXRlKilcbiAgfCBJc19IZXJlIGEsIElzX0hlcmUgYiAtPiBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiXG4gIHwgSGFzX0ludGVybmFsICgoYSwgcyksIGkpLCBIYXNfSW50ZXJuYWwgKChiLCB0KSwgaikgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiICYmIHMgPSB0ICYmIGkgPSBqXG4gIHwgSGFzX0JpbmRpbmdfdHlwZSAoKGEsIHMpLCBjKSwgSGFzX0JpbmRpbmdfdHlwZSAoKGIsIHQpLCBkKSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGIgJiYgcyA9IHQgJiYgYyA9IGRcbiAgfCBJc19GcmVlIChhLCBzKSwgSXNfRnJlZSAoYiwgdCkgfCBJc19Cb3VuZCAoYSwgcyksIElzX0JvdW5kIChiLCB0KSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGIgJiYgcyA9IHRcbiAgfCBJc19Cb3VuZF90byAoKGEsIHMpLCAoYywgdSkpLCBJc19Cb3VuZF90byAoKGIsIHQpLCAoZCwgdikpIC0+XG4gICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYlxuICAgICYmIHMgPSB0XG4gICAgJiYgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYyA9IEFnZW50LnNvcnQgZFxuICAgICYmIHUgPSB2XG4gIHwgSXNfSGVyZSBfLCBfXG4gIHwgSGFzX0ludGVybmFsIF8sIF9cbiAgfCBJc19GcmVlIF8sIF9cbiAgfCBJc19Cb3VuZCBfLCBfXG4gIHwgSXNfQm91bmRfdG8gXywgX1xuICB8IEhhc19CaW5kaW5nX3R5cGUgXywgXyAtPlxuICAgIGZhbHNlXG5cbmxldCBtYXRjaF9hY3Rpb25zID0gZnVuY3Rpb25cbiAgKCogYWJzdHJhY3QsIGNvbmNyZXRlKilcbiAgfCBDcmVhdGUgKGEsIGFscyksIENyZWF0ZSAoYiwgYmxzKSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGJcbiAgICAmJiBMaXN0LmZvbGRfbGVmdDJcbiAgICAgICAgIChmdW4gb2sgKHMsIGkpICh0LCBqKSAtPiBvayAmJiBzID0gdCAmJiBpID0gailcbiAgICAgICAgIHRydWUgYWxzIGJsc1xuICB8IE1vZF9pbnRlcm5hbCAoKGEsIHMpLCBpKSwgTW9kX2ludGVybmFsICgoYiwgdCksIGopIC0+XG4gICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYiAmJiBzID0gdCAmJiBpID0galxuICB8IEJpbmQgKChhLCBzKSwgKGMsIHUpKSwgQmluZCAoKGIsIHQpLCAoZCwgdikpXG4gIHwgQmluZF90byAoKGEsIHMpLCAoYywgdSkpLCBCaW5kX3RvICgoYiwgdCksIChkLCB2KSkgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiXG4gICAgJiYgcyA9IHRcbiAgICAmJiBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBjID0gQWdlbnQuc29ydCBkXG4gICAgJiYgdSA9IHZcbiAgfCBGcmVlIChhLCBzKSwgRnJlZSAoYiwgdCkgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiICYmIHMgPSB0XG4gIHwgUmVtb3ZlIGEsIFJlbW92ZSBiIC0+IE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGJcbiAgfCBDcmVhdGUgXywgX1xuICB8IE1vZF9pbnRlcm5hbCBfLCBfXG4gIHwgQmluZCBfLCBfXG4gIHwgQmluZF90byBfLCBfXG4gIHwgRnJlZSBfLCBfXG4gIHwgUmVtb3ZlIF8sIF8gLT5cbiAgICBmYWxzZVxuXG5sZXQgZ2V0X2lkcyBmIGF1eCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgYSAtPlxuICAgICAgbGV0IGlkID0gZiBhIGluXG4gICAgICBpZiBMaXN0Lm1lbSBpZCBhY2MgdGhlblxuICAgICAgICBhY2NcbiAgICAgIGVsc2VcbiAgICAgICAgaWQgOjogYWNjKVxuICAgIGF1eFxuXG5sZXQgcmVjIG1hdGNoX3F1YXJrcyBhX3F1YXJrcyBjX3F1YXJrcyBmbWF0Y2ggPVxuICBtYXRjaCBhX3F1YXJrcyB3aXRoXG4gIHwgYXEgOjogYXFzIC0+XG4gICAgbGV0IGNxcywgcmVzdCA9IExpc3QucGFydGl0aW9uIChmdW4gY3EgLT4gZm1hdGNoIChhcSwgY3EpKSBjX3F1YXJrcyBpblxuICAgIGlmIGNxcyA9IFtdIHRoZW5cbiAgICAgIGZhbHNlXG4gICAgZWxzZVxuICAgICAgbWF0Y2hfcXVhcmtzIGFxcyByZXN0IGZtYXRjaFxuICB8IFtdIC0+IGNfcXVhcmtzID0gW11cblxubGV0IHJlYyBmaW5kX21hdGNoIHRlc3RzIGFjdGlvbnMgY3Rlc3RzIGNhY3Rpb25zID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiYWJzdHJhY3QgYW5kIGNvbmNyZXQgcXVhcmtzIGRvbid0IG1hdGNoXCIpKVxuICB8IGNpZCA6OiB0bCAtPlxuICAgIGxldCBjdGVzdHMnID1cbiAgICAgIExpc3QuZmlsdGVyIChmdW4gdGVzdCAtPiBtYXBfdGVzdCAoZnVuIGEgLT4gQWdlbnQuaWQgYSA9IGNpZCkgdGVzdCkgY3Rlc3RzXG4gICAgaW5cbiAgICBsZXQgY2FjdGlvbnMnID1cbiAgICAgIExpc3QuZmlsdGVyXG4gICAgICAgIChmdW4gYWN0IC0+IG1hcF9hY3Rpb24gKGZ1biBhIC0+IEFnZW50LmlkIGEgPSBjaWQpIGFjdClcbiAgICAgICAgY2FjdGlvbnNcbiAgICBpblxuICAgIGlmXG4gICAgICBtYXRjaF9xdWFya3MgdGVzdHMgY3Rlc3RzJyBtYXRjaF90ZXN0c1xuICAgICAgJiYgbWF0Y2hfcXVhcmtzIGFjdGlvbnMgY2FjdGlvbnMnIG1hdGNoX2FjdGlvbnNcbiAgICB0aGVuXG4gICAgICBjaWRcbiAgICBlbHNlXG4gICAgICBmaW5kX21hdGNoIHRlc3RzIGFjdGlvbnMgY3Rlc3RzIGNhY3Rpb25zIHRsXG5cbmxldCBtYXRjaGluZ19hYnN0cmFjdF9jb25jcmV0ZSB+ZGVidWdfbW9kZSBhZSBjZSA9XG4gIGxldCBhZV90ZXN0cyA9IExpc3QuZmxhdHRlbiBhZS50ZXN0cyBpblxuICBsZXQgY2VfdGVzdHMgPSBMaXN0LmZsYXR0ZW4gY2UudGVzdHMgaW5cbiAgbGV0IGFic3RyYWN0X2lkcyA9XG4gICAgZ2V0X2lkc1xuICAgICAgKG1hcF9hY3Rpb24gTWF0Y2hpbmcuQWdlbnQuZ2V0X2lkKVxuICAgICAgKGdldF9pZHMgKG1hcF90ZXN0IE1hdGNoaW5nLkFnZW50LmdldF9pZCkgW10gYWVfdGVzdHMpXG4gICAgICBhZS5hY3Rpb25zXG4gIGluXG4gIGxldCBjb25jcmV0ZV9pZHMgPVxuICAgIGdldF9pZHMgKG1hcF9hY3Rpb24gQWdlbnQuaWQpXG4gICAgICAoZ2V0X2lkcyAobWFwX3Rlc3QgQWdlbnQuaWQpIFtdIGNlX3Rlc3RzKVxuICAgICAgY2UuYWN0aW9uc1xuICBpblxuICBsZXQgYXZhaWxhYmxlX2lkcyB1c2VkID1cbiAgICBMaXN0LmZpbHRlclxuICAgICAgKGZ1biBpIC0+IG5vdCAoTW9kcy5JbnRTZXQubWVtIGkgKFJlbmFtaW5nLmltYWdlIHVzZWQpKSlcbiAgICAgIGNvbmNyZXRlX2lkc1xuICBpblxuICBsZXQgcGFydGl0aW9uIGZtYXAgaSA9XG4gICAgTGlzdC5wYXJ0aXRpb24gKGZ1biBxIC0+IGZtYXAgKGZ1biBhIC0+IE1hdGNoaW5nLkFnZW50LmdldF9pZCBhID0gaSkgcSlcbiAgaW5cbiAgbGV0IG1hdGNoaW5nID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgbGV0IGluamVjdGl2ZSA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIGkgLT5cbiAgICAgICAgYWNjXG4gICAgICAgICYmXG4gICAgICAgIGxldCB0ZXN0cywgXyA9IHBhcnRpdGlvbiBtYXBfdGVzdCBpIGFlX3Rlc3RzIGluXG4gICAgICAgIGxldCBhY3Rpb25zLCBfID0gcGFydGl0aW9uIG1hcF9hY3Rpb24gaSBhZS5hY3Rpb25zIGluXG4gICAgICAgIGxldCBqID1cbiAgICAgICAgICBmaW5kX21hdGNoIHRlc3RzIGFjdGlvbnMgY2VfdGVzdHMgY2UuYWN0aW9ucyAoYXZhaWxhYmxlX2lkcyBtYXRjaGluZylcbiAgICAgICAgaW5cbiAgICAgICAgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaSBqIG1hdGNoaW5nKVxuICAgICAgdHJ1ZSBhYnN0cmFjdF9pZHNcbiAgaW5cbiAgaWYgaW5qZWN0aXZlIHRoZW5cbiAgICBTb21lIG1hdGNoaW5nXG4gIGVsc2VcbiAgICBOb25lXG5cbmxldCBzdWJzdF9tYXBfY29uY3JldGVfYWdlbnQgZiAoKGlkLCBuYSkgYXMgYWdlbnQpID1cbiAgdHJ5XG4gICAgaWYgZiBpZCA9PSBpZCB0aGVuXG4gICAgICBhZ2VudFxuICAgIGVsc2VcbiAgICAgIGYgaWQsIG5hXG4gIHdpdGggTm90X2ZvdW5kIC0+IGFnZW50XG5cbmxldCBzdWJzdF9tYXBfc2l0ZSBmICgoYWcsIHMpIGFzIHNpdGUpID1cbiAgbGV0IGFnJyA9IGYgYWcgaW5cbiAgaWYgYWcgPT0gYWcnIHRoZW5cbiAgICBzaXRlXG4gIGVsc2VcbiAgICBhZycsIHNcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl90ZXN0IGYgPSBmdW5jdGlvblxuICB8IElzX0hlcmUgYWdlbnQgYXMgeCAtPlxuICAgIGxldCBhZ2VudCcgPSBmIGFnZW50IGluXG4gICAgaWYgYWdlbnQgPT0gYWdlbnQnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBJc19IZXJlIGFnZW50J1xuICB8IEhhc19JbnRlcm5hbCAoc2l0ZSwgaW50ZXJuYWxfc3RhdGUpIGFzIHggLT5cbiAgICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUgaW5cbiAgICBpZiBzaXRlID09IHNpdGUnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBIYXNfSW50ZXJuYWwgKHNpdGUnLCBpbnRlcm5hbF9zdGF0ZSlcbiAgfCBJc19GcmVlIHNpdGUgYXMgeCAtPlxuICAgIGxldCBzaXRlJyA9IHN1YnN0X21hcF9zaXRlIGYgc2l0ZSBpblxuICAgIGlmIHNpdGUgPT0gc2l0ZScgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIElzX0ZyZWUgc2l0ZSdcbiAgfCBJc19Cb3VuZCBzaXRlIGFzIHggLT5cbiAgICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUgaW5cbiAgICBpZiBzaXRlID09IHNpdGUnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBJc19Cb3VuZCBzaXRlJ1xuICB8IEhhc19CaW5kaW5nX3R5cGUgKHNpdGUsIGJpbmRpbmdfdHlwZSkgYXMgeCAtPlxuICAgIGxldCBzaXRlJyA9IHN1YnN0X21hcF9zaXRlIGYgc2l0ZSBpblxuICAgIGlmIHNpdGUgPT0gc2l0ZScgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIEhhc19CaW5kaW5nX3R5cGUgKHNpdGUnLCBiaW5kaW5nX3R5cGUpXG4gIHwgSXNfQm91bmRfdG8gKHNpdGUxLCBzaXRlMikgYXMgeCAtPlxuICAgIGxldCBzaXRlMScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUxIGluXG4gICAgbGV0IHNpdGUyJyA9IHN1YnN0X21hcF9zaXRlIGYgc2l0ZTIgaW5cbiAgICBpZiBzaXRlMSA9PSBzaXRlMScgJiYgc2l0ZTIgPT0gc2l0ZTInIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBJc19Cb3VuZF90byAoc2l0ZTEnLCBzaXRlMicpXG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGVzdCBmIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYpIHhcblxubGV0IHN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3Rlc3QgaWQgaWQnIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGVzdFxuICAgIChmdW4gaiAtPlxuICAgICAgaWYgaiA9IGlkIHRoZW5cbiAgICAgICAgaWQnXG4gICAgICBlbHNlXG4gICAgICAgIGopXG4gICAgeFxuXG5sZXQgcmVuYW1lX2Fic3RyYWN0X3Rlc3QgfmRlYnVnX21vZGUgaWQgaW5qIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCAoTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaikgeFxuXG5sZXQgc3Vic3RfbWFwMl9hZ2VudF9pbl9hY3Rpb24gZiBmJyA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlIChhZ2VudCwgbGlzdCkgYXMgeCAtPlxuICAgIGxldCBhZ2VudCcgPSBmJyBhZ2VudCBpblxuICAgIGlmIGFnZW50ID09IGFnZW50JyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgQ3JlYXRlIChhZ2VudCcsIGxpc3QpXG4gIHwgTW9kX2ludGVybmFsIChzaXRlLCBpKSBhcyB4IC0+XG4gICAgbGV0IHNpdGUnID0gc3Vic3RfbWFwX3NpdGUgZicgc2l0ZSBpblxuICAgIGlmIHNpdGUgPT0gc2l0ZScgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIE1vZF9pbnRlcm5hbCAoc2l0ZScsIGkpXG4gIHwgQmluZCAoczEsIHMyKSBhcyB4IC0+XG4gICAgbGV0IHMxJyA9IHN1YnN0X21hcF9zaXRlIGYnIHMxIGluXG4gICAgbGV0IHMyJyA9IHN1YnN0X21hcF9zaXRlIGYnIHMyIGluXG4gICAgaWYgczEgPT0gczEnICYmIHMyID09IHMyJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgQmluZCAoczEnLCBzMicpXG4gIHwgQmluZF90byAoczEsIHMyKSBhcyB4IC0+XG4gICAgbGV0IHMxJyA9IHN1YnN0X21hcF9zaXRlIGYnIHMxIGluXG4gICAgbGV0IHMyJyA9IHN1YnN0X21hcF9zaXRlIGYnIHMyIGluXG4gICAgaWYgczEgPT0gczEnICYmIHMyID09IHMyJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgQmluZF90byAoczEnLCBzMicpXG4gIHwgRnJlZSBzaXRlIGFzIHggLT5cbiAgICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmJyBzaXRlIGluXG4gICAgaWYgc2l0ZSA9PSBzaXRlJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgRnJlZSBzaXRlJ1xuICB8IFJlbW92ZSBhZ2VudCBhcyB4IC0+XG4gICAgbGV0IGFnZW50JyA9IGYgYWdlbnQgaW5cbiAgICBpZiBhZ2VudCA9PSBhZ2VudCcgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIFJlbW92ZSBhZ2VudCdcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl9hY3Rpb24gZiB4ID0gc3Vic3RfbWFwMl9hZ2VudF9pbl9hY3Rpb24gZiBmIHhcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24gZiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2FjdGlvbiAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYpIHhcblxubGV0IHN1YnN0X2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiBpZCBpZCcgeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb25cbiAgICAoZnVuIGogLT5cbiAgICAgIGlmIGogPSBpZCB0aGVuXG4gICAgICAgIGlkJ1xuICAgICAgZWxzZVxuICAgICAgICBqKVxuICAgIHhcblxubGV0IHJlbmFtZV9hYnN0cmFjdF9hY3Rpb24gfmRlYnVnX21vZGUgaWQgaW5qIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fYWN0aW9uIChNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qKSB4XG5cbmxldCBzdWJzdF9tYXBfYmluZGluZ19zdGF0ZSBmID0gZnVuY3Rpb25cbiAgfCAoQU5ZIHwgRlJFRSB8IEJPVU5EIHwgQk9VTkRfVFlQRSBfKSBhcyB4IC0+IHhcbiAgfCBCT1VORF90byAoYWcsIHMpIGFzIHggLT5cbiAgICBsZXQgYWcnID0gZiBhZyBpblxuICAgIGlmIGFnID09IGFnJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgQk9VTkRfdG8gKGFnJywgcylcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl9zaWRlX2VmZmVjdCBmICgoc2l0ZSwgYnN0YXRlKSBhcyB4KSA9XG4gIGxldCBzaXRlJyA9IHN1YnN0X21hcF9zaXRlIGYgc2l0ZSBpblxuICBsZXQgYnN0YXRlJyA9IHN1YnN0X21hcF9iaW5kaW5nX3N0YXRlIGYgYnN0YXRlIGluXG4gIGlmIHNpdGUgPT0gc2l0ZScgJiYgYnN0YXRlID09IGJzdGF0ZScgdGhlblxuICAgIHhcbiAgZWxzZVxuICAgIHNpdGUnLCBic3RhdGUnXG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfc2lkZV9lZmZlY3QgZiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX3NpZGVfZWZmZWN0IChzdWJzdF9tYXBfY29uY3JldGVfYWdlbnQgZikgeFxuXG5sZXQgc3Vic3RfYWdlbnRfaW5fY29uY3JldGVfc2lkZV9lZmZlY3QgaWQgaWQnIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfc2lkZV9lZmZlY3RcbiAgICAoZnVuIGogLT5cbiAgICAgIGlmIGogPSBpZCB0aGVuXG4gICAgICAgIGlkJ1xuICAgICAgZWxzZVxuICAgICAgICBqKVxuICAgIHhcblxubGV0IHJlbmFtZV9hYnN0cmFjdF9zaWRlX2VmZmVjdCB+ZGVidWdfbW9kZSBpZCBpbmogeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9zaWRlX2VmZmVjdCAoTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaikgeFxuXG5sZXQgc3Vic3RfbWFwX2FnZW50X2luX2V2ZW50IGYgZSA9XG4gIHtcbiAgICB0ZXN0cyA9XG4gICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgIChMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCBmKSlcbiAgICAgICAgZS50ZXN0cztcbiAgICBhY3Rpb25zID0gTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX2FjdGlvbiBmKSBlLmFjdGlvbnM7XG4gICAgc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICBMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fc2lkZV9lZmZlY3QgZikgZS5zaWRlX2VmZmVjdHNfc3JjO1xuICAgIHNpZGVfZWZmZWN0c19kc3QgPSBMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfc2l0ZSBmKSBlLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgIExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcF9hZ2VudF9pbl90ZXN0IGYpIGUuY29ubmVjdGl2aXR5X3Rlc3RzO1xuICB9XG5cbmxldCBzdWJzdF9tYXAyX2FnZW50X2luX2V2ZW50IGYgZicgZSA9XG4gIHtcbiAgICB0ZXN0cyA9XG4gICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgIChMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCBmKSlcbiAgICAgICAgZS50ZXN0cztcbiAgICBhY3Rpb25zID0gTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwMl9hZ2VudF9pbl9hY3Rpb24gZiBmJykgZS5hY3Rpb25zO1xuICAgIHNpZGVfZWZmZWN0c19zcmMgPVxuICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX3NpZGVfZWZmZWN0IGYpIGUuc2lkZV9lZmZlY3RzX3NyYztcbiAgICBzaWRlX2VmZmVjdHNfZHN0ID0gTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX3NpdGUgZikgZS5zaWRlX2VmZmVjdHNfZHN0O1xuICAgIGNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICBMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCBmKSBlLmNvbm5lY3Rpdml0eV90ZXN0cztcbiAgfVxuXG5sZXQgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IGYgeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9ldmVudCAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYpIHhcblxubGV0IHN1YnN0X21hcDJfYWdlbnRfaW5fY29uY3JldGVfZXZlbnQgZiBmJyB4ID1cbiAgc3Vic3RfbWFwMl9hZ2VudF9pbl9ldmVudFxuICAgIChzdWJzdF9tYXBfY29uY3JldGVfYWdlbnQgZilcbiAgICAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYnKVxuICAgIHhcblxubGV0IHN1YnN0X2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IGlkIGlkJyB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50XG4gICAgKGZ1biBqIC0+XG4gICAgICBpZiBqID0gaWQgdGhlblxuICAgICAgICBpZCdcbiAgICAgIGVsc2VcbiAgICAgICAgailcbiAgICB4XG5cbmxldCByZW5hbWVfYWJzdHJhY3RfZXZlbnQgfmRlYnVnX21vZGUgaWQgaW5qIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fZXZlbnQgKE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmopIHhcblxubGV0IHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MgZiAoYWdlbnQsIGlkKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYVwiXG4gICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpXG4gICAgYWdlbnRcbiAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBhZ2VudClcbiAgICBpZFxuXG5sZXQgcHJpbnRfY29uY3JldGVfdGVzdCA/c2lncyBmID0gZnVuY3Rpb25cbiAgfCBJc19IZXJlIGFnZW50IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIklzX0hlcmUoJWEpXCIgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpIGFnZW50XG4gIHwgSGFzX0ludGVybmFsICgoYWcsIGlkKSwgaW50KSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJIYXNfSW50ZXJuYWwoJWEuJWEpXCJcbiAgICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKVxuICAgICAgYWdcbiAgICAgIChBZ2VudC5wcmludF9pbnRlcm5hbCA/c2lncyBhZyBpZClcbiAgICAgIGludFxuICB8IElzX0ZyZWUgc2l0ZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJc19GcmVlKCVhKVwiIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKSBzaXRlXG4gIHwgSXNfQm91bmQgc2l0ZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJc19Cb3VuZCglYSlcIiAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncykgc2l0ZVxuICB8IEhhc19CaW5kaW5nX3R5cGUgKHNpdGUsICh0eSwgc2lkKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQnR5cGUoJWEsJXQpXCIgKHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MpIHNpdGVcbiAgICAgIChmdW4gZiAtPlxuICAgICAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaS4laVwiIHR5IHNpZFxuICAgICAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYVwiXG4gICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgICB0eVxuICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgdHkpXG4gICAgICAgICAgICBzaWQpXG4gIHwgSXNfQm91bmRfdG8gKHNpdGUxLCBzaXRlMikgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiSXNfQm91bmQoJWEsJWEpXCJcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTFcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTJcblxubGV0IHByaW50X2NvbmNyZXRlX2FjdGlvbiA/c2lncyBmID0gZnVuY3Rpb25cbiAgfCBDcmVhdGUgKCgoXywgdHkpIGFzIGFnZW50KSwgbGlzdCkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQ3JlYXRlKCVhW0BbPGg+JWFAXV0pXCJcbiAgICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKVxuICAgICAgYWdlbnRcbiAgICAgIChQcC5saXN0IFBwLmNvbW1hIChmdW4gZiAoeCwgeSkgLT5cbiAgICAgICAgICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgICAgICAgIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9zaXRlX2ludGVybmFsX3N0YXRlIHNpZ3MgdHkgeCBmIHlcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgKG1hdGNoIHkgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgeFxuICAgICAgICAgICAgIHwgU29tZSB5IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaS4laVwiIHggeSkpKVxuICAgICAgbGlzdFxuICB8IE1vZF9pbnRlcm5hbCAoKGFnLCBpZCksIGludCkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiTW9kKCVhLiVhKVwiXG4gICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFnXG4gICAgICAoQWdlbnQucHJpbnRfaW50ZXJuYWwgP3NpZ3MgYWcgaWQpXG4gICAgICBpbnRcbiAgfCBCaW5kIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkJpbmQoJWEsJWEpXCJcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTFcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTJcbiAgfCBCaW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkJpbmRfdG8oJWEsJWEpXCJcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTFcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTJcbiAgfCBGcmVlIHNpdGUgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiRnJlZSglYSlcIiAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncykgc2l0ZVxuICB8IFJlbW92ZSBhZ2VudCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJSZW1vdmUoJWEpXCIgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpIGFnZW50XG5cbmxldCBwcmludF9jb25jcmV0ZV9iaW5kaW5nX3N0YXRlID9zaWdzIGYgPSBmdW5jdGlvblxuICB8IEFOWSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIqXCJcbiAgfCBGUkVFIC0+ICgpXG4gIHwgQk9VTkQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIV9cIlxuICB8IEJPVU5EX1RZUEUgKHMsIGEpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiElYS4lYVwiXG4gICAgICAobWF0Y2ggc2lncyB3aXRoXG4gICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIHNcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgYVxuICAgICAgKG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3NcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgc1xuICB8IEJPVU5EX3RvICgoYWdfaWQsIGFnKSwgcykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiISVhXyVpLiVhXCJcbiAgICAgIChtYXRjaCBzaWdzIHdpdGhcbiAgICAgIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgIGFnIGFnX2lkXG4gICAgICAobWF0Y2ggc2lncyB3aXRoXG4gICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgIHNcblxubGV0IGpzb25fZGljdGlvbm5hcnkgPVxuICBcIlxcXCJiaW5kaW5nX3R5cGVcXFwiOntcXFwidHlwZVxcXCI6MCxcXFwic2l0ZVxcXCI6MX0sXFxcInF1YXJrXFxcIjp7XFxcImFnZW50XFxcIjowLFxcXCJzaXRlXFxcIjoxfSxcXFwidGVzdFxcXCI6W1xcXCJJc19oZXJlXFxcIixcXFwiSGFzX0ludGVybmFsXFxcIixcXFwiSXNfRnJlZVxcXCIsXFxcIklzX0JvdW5kXFxcIixcXFwiSGFzX0JpbmRpbmdfdHlwZVxcXCIsXFxcIklzX0JvdW5kX3RvXFxcIl0sXFxcImFjdGlvbnNcXFwiOltcXFwiQ3JlYXRlXFxcIixcXFwiTW9kX2ludGVybmFsXFxcIixcXFwiQmluZFxcXCIsXFxcIkJpbmRfdG9cXFwiLFxcXCJGcmVlXFxcIixcXFwiUmVtb3ZlXFxcIl0sXFxcImJpbmRpbmdfc3RhdGVcXFwiOltcXFwiQU5ZXFxcIixcXFwiRlJFRVxcXCIsXFxcIkJPVU5EXFxcIixcXFwiQk9VTkRfVFlQRVxcXCIsXFxcIkJPVU5EX3RvXFxcIl0sXFxcImV2ZW50XFxcIjp7XFxcInRlc3RzXFxcIjowLFxcXCJhY3Rpb25zXFxcIjoxLFxcXCJzaWRlX2VmZmVjdF9zcmNcXFwiOjIsXFxcInNpZGVfZWZmZWN0X2RzdFxcXCI6MyxcXFwiY29ubmVjdGl2aXR5X3Rlc3RzXFxcIjo0fVwiXG5cbmxldCB3cml0ZV9iaW5kaW5nX3R5cGUgb2IgYSA9XG4gIEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfaW50IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgb2IgYVxuXG5sZXQgcmVhZF9iaW5kaW5nX3R5cGUgcCBsYiA9XG4gIEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX2ludCBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYlxuXG5sZXQgYmluZGluZ190eXBlX3RvX2pzb24gKHR5LCBzKSA9IGBMaXN0IFsgYEludCB0eTsgYEludCBzIF1cblxubGV0IGJpbmRpbmdfdHlwZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBJbnQgdHk7IGBJbnQgcyBdIC0+IHR5LCBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBiaW5kaW5nX3R5cGVcIiwgeCkpXG5cbmxldCB3cml0ZV9xdWFyayBmIG9iIGEgPVxuICBKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgZiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIGFcblxubGV0IHJlYWRfcXVhcmsgZiBwIGxiID0gSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgZiBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYlxubGV0IHF1YXJrX3RvX2pzb24gZiAoYWcsIHMpID0gYExpc3QgWyBmIGFnOyBgSW50IHMgXVxuXG5sZXQgcXVhcmtfb2ZfanNvbiBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGFnOyBgSW50IHMgXSAtPiBmIGFnLCBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcXVhcmtcIiwgeCkpXG5cbmxldCB3cml0ZV90ZXN0IGYgb2IgdCA9XG4gIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIG9iXG4gICAgKG1hdGNoIHQgd2l0aFxuICAgIHwgSXNfSGVyZSBhIC0+IFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAwKTsgKGZ1biBvIC0+IGYgbyBhKSBdXG4gICAgfCBIYXNfSW50ZXJuYWwgKHMsIGkpIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMSk7XG4gICAgICAgIChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gcyk7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gaSk7XG4gICAgICBdXG4gICAgfCBJc19GcmVlIHMgLT5cbiAgICAgIFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAyKTsgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzKSBdXG4gICAgfCBJc19Cb3VuZCBzIC0+XG4gICAgICBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMyk7IChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gcykgXVxuICAgIHwgSGFzX0JpbmRpbmdfdHlwZSAocywgYikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIDQpO1xuICAgICAgICAoZnVuIG9iIC0+IHdyaXRlX3F1YXJrIGYgb2Igcyk7XG4gICAgICAgIChmdW4gb2IgLT4gd3JpdGVfYmluZGluZ190eXBlIG9iIGIpO1xuICAgICAgXVxuICAgIHwgSXNfQm91bmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIDUpO1xuICAgICAgICAoZnVuIG9iIC0+IHdyaXRlX3F1YXJrIGYgb2IgczEpO1xuICAgICAgICAoZnVuIG9iIC0+IHdyaXRlX3F1YXJrIGYgb2IgczIpO1xuICAgICAgXSlcblxubGV0IHJlYWRfdGVzdCBmIHN0IGIgPVxuICBKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgKGZ1biBzdCBiIC0+IGZ1bmN0aW9uXG4gICAgICB8IDAgLT5cbiAgICAgICAgbGV0IHkgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBmIHN0IGIgaW5cbiAgICAgICAgSXNfSGVyZSB5XG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IHMgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIGxldCBpID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGIgaW5cbiAgICAgICAgSGFzX0ludGVybmFsIChzLCBpKVxuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCBzID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBJc19GcmVlIHNcbiAgICAgIHwgMyAtPlxuICAgICAgICBsZXQgcyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgSXNfQm91bmQgc1xuICAgICAgfCA0IC0+XG4gICAgICAgIGxldCBzID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBsZXQgYmkgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSByZWFkX2JpbmRpbmdfdHlwZSBzdCBiIGluXG4gICAgICAgIEhhc19CaW5kaW5nX3R5cGUgKHMsIGJpKVxuICAgICAgfCA1IC0+XG4gICAgICAgIGxldCBzMSA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgbGV0IHMyID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBJc19Cb3VuZF90byAoczEsIHMyKVxuICAgICAgfCBfIC0+IFlvanNvbi5qc29uX2Vycm9yIFwiV3JvbmcgdGVzdFwiICgqc3QgYiopKVxuICAgIHN0IGJcblxubGV0IHRlc3RfdG9fanNvbiBmID0gZnVuY3Rpb25cbiAgfCBJc19IZXJlIGEgLT4gYExpc3QgWyBgSW50IDA7IGYgYSBdXG4gIHwgSGFzX0ludGVybmFsIChzLCBpKSAtPiBgTGlzdCBbIGBJbnQgMTsgcXVhcmtfdG9fanNvbiBmIHM7IGBJbnQgaSBdXG4gIHwgSXNfRnJlZSBzIC0+IGBMaXN0IFsgYEludCAyOyBxdWFya190b19qc29uIGYgcyBdXG4gIHwgSXNfQm91bmQgcyAtPiBgTGlzdCBbIGBJbnQgMzsgcXVhcmtfdG9fanNvbiBmIHMgXVxuICB8IEhhc19CaW5kaW5nX3R5cGUgKHMsIGIpIC0+XG4gICAgYExpc3QgWyBgSW50IDQ7IHF1YXJrX3RvX2pzb24gZiBzOyBiaW5kaW5nX3R5cGVfdG9fanNvbiBiIF1cbiAgfCBJc19Cb3VuZF90byAoczEsIHMyKSAtPlxuICAgIGBMaXN0IFsgYEludCA1OyBxdWFya190b19qc29uIGYgczE7IHF1YXJrX3RvX2pzb24gZiBzMiBdXG5cbmxldCB0ZXN0X29mX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgSW50IDA7IGEgXSAtPiBJc19IZXJlIChmIGEpXG4gIHwgYExpc3QgWyBgSW50IDE7IHM7IGBJbnQgaSBdIC0+IEhhc19JbnRlcm5hbCAocXVhcmtfb2ZfanNvbiBmIHMsIGkpXG4gIHwgYExpc3QgWyBgSW50IDI7IHMgXSAtPiBJc19GcmVlIChxdWFya19vZl9qc29uIGYgcylcbiAgfCBgTGlzdCBbIGBJbnQgMzsgcyBdIC0+IElzX0JvdW5kIChxdWFya19vZl9qc29uIGYgcylcbiAgfCBgTGlzdCBbIGBJbnQgNDsgczsgYiBdIC0+XG4gICAgSGFzX0JpbmRpbmdfdHlwZSAocXVhcmtfb2ZfanNvbiBmIHMsIGJpbmRpbmdfdHlwZV9vZl9qc29uIGIpXG4gIHwgYExpc3QgWyBgSW50IDU7IHMxOyBzMiBdIC0+XG4gICAgSXNfQm91bmRfdG8gKHF1YXJrX29mX2pzb24gZiBzMSwgcXVhcmtfb2ZfanNvbiBmIHMyKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiV3JvbmcgdGVzdFwiLCB4KSlcblxubGV0IHdyaXRlX2FjdGlvbiBmIG9iIGEgPVxuICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgIChtYXRjaCBhIHdpdGhcbiAgICB8IENyZWF0ZSAoYWcsIGluZm8pIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMCk7XG4gICAgICAgIChmdW4gbyAtPiBmIG8gYWcpO1xuICAgICAgICAoZnVuIG8gLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy53cml0ZV9pbnRcbiAgICAgICAgICAgICAgIChKc29uVXRpbC53cml0ZV9vcHRpb24gWW9qc29uLkJhc2ljLndyaXRlX2ludCkpXG4gICAgICAgICAgICBvIGluZm8pO1xuICAgICAgXVxuICAgIHwgTW9kX2ludGVybmFsIChzLCBpKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDEpO1xuICAgICAgICAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIGkpO1xuICAgICAgXVxuICAgIHwgQmluZCAoczEsIHMyKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDIpO1xuICAgICAgICAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMxKTtcbiAgICAgICAgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzMik7XG4gICAgICBdXG4gICAgfCBCaW5kX3RvIChzMSwgczIpIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMyk7XG4gICAgICAgIChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gczEpO1xuICAgICAgICAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMyKTtcbiAgICAgIF1cbiAgICB8IEZyZWUgcyAtPlxuICAgICAgWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDQpOyAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMpIF1cbiAgICB8IFJlbW92ZSBhIC0+IFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyA1KTsgKGZ1biBvIC0+IGYgbyBhKSBdKVxuXG5sZXQgcmVhZF9hY3Rpb24gZiBzdCBiID1cbiAgSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgIChmdW4gc3QgYiAtPiBmdW5jdGlvblxuICAgICAgfCAwIC0+XG4gICAgICAgIGxldCBhZyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIGYgc3QgYiBpblxuICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0XG4gICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9vcHRpb24gWW9qc29uLkJhc2ljLnJlYWRfaW50KSkpXG4gICAgICAgICAgICBzdCBiXG4gICAgICAgIGluXG4gICAgICAgIENyZWF0ZSAoYWcsIGluZm8pXG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IHMgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIGxldCBpID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGIgaW5cbiAgICAgICAgTW9kX2ludGVybmFsIChzLCBpKVxuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCBzMSA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgbGV0IHMyID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBCaW5kIChzMSwgczIpXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IHMxID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBsZXQgczIgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIEJpbmRfdG8gKHMxLCBzMilcbiAgICAgIHwgNCAtPlxuICAgICAgICBsZXQgcyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgRnJlZSBzXG4gICAgICB8IDUgLT5cbiAgICAgICAgbGV0IGEgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBmIHN0IGIgaW5cbiAgICAgICAgUmVtb3ZlIGFcbiAgICAgIHwgXyAtPiBZb2pzb24uanNvbl9lcnJvciBcIldyb25nIGFjdGlvblwiICgqc3QgYiopKVxuICAgIHN0IGJcblxubGV0IGFjdGlvbl90b19qc29uIGYgPSBmdW5jdGlvblxuICB8IENyZWF0ZSAoYWcsIGluZm8pIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYEludCAwO1xuICAgICAgICBmIGFnO1xuICAgICAgICBgTGlzdFxuICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgIChmdW4gKHMsIGkpIC0+XG4gICAgICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICAgICAoYEludCBzXG4gICAgICAgICAgICAgICAgIDo6XG4gICAgICAgICAgICAgICAgIChtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICAgIHwgU29tZSBpIC0+IFsgYEludCBpIF0pKSlcbiAgICAgICAgICAgICBpbmZvKTtcbiAgICAgIF1cbiAgfCBNb2RfaW50ZXJuYWwgKHMsIGkpIC0+IGBMaXN0IFsgYEludCAxOyBxdWFya190b19qc29uIGYgczsgYEludCBpIF1cbiAgfCBCaW5kIChzMSwgczIpIC0+IGBMaXN0IFsgYEludCAyOyBxdWFya190b19qc29uIGYgczE7IHF1YXJrX3RvX2pzb24gZiBzMiBdXG4gIHwgQmluZF90byAoczEsIHMyKSAtPiBgTGlzdCBbIGBJbnQgMzsgcXVhcmtfdG9fanNvbiBmIHMxOyBxdWFya190b19qc29uIGYgczIgXVxuICB8IEZyZWUgcyAtPiBgTGlzdCBbIGBJbnQgNDsgcXVhcmtfdG9fanNvbiBmIHMgXVxuICB8IFJlbW92ZSBhIC0+IGBMaXN0IFsgYEludCA1OyBmIGEgXVxuXG5sZXQgYWN0aW9uX29mX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgSW50IDA7IGFnOyBgTGlzdCBpbmZvIF0gLT5cbiAgICBDcmVhdGVcbiAgICAgICggZiBhZyxcbiAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYExpc3QgWyBgSW50IHMgXSAtPiBzLCBOb25lXG4gICAgICAgICAgICB8IGBMaXN0IFsgYEludCBzOyBgSW50IGkgXSAtPiBzLCBTb21lIGlcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFjdGlvbiBpbmZvXCIsIHgpKSlcbiAgICAgICAgICBpbmZvIClcbiAgfCBgTGlzdCBbIGBJbnQgMTsgczsgYEludCBpIF0gLT4gTW9kX2ludGVybmFsIChxdWFya19vZl9qc29uIGYgcywgaSlcbiAgfCBgTGlzdCBbIGBJbnQgMjsgczE7IHMyIF0gLT4gQmluZCAocXVhcmtfb2ZfanNvbiBmIHMxLCBxdWFya19vZl9qc29uIGYgczIpXG4gIHwgYExpc3QgWyBgSW50IDM7IHMxOyBzMiBdIC0+IEJpbmRfdG8gKHF1YXJrX29mX2pzb24gZiBzMSwgcXVhcmtfb2ZfanNvbiBmIHMyKVxuICB8IGBMaXN0IFsgYEludCA0OyBzIF0gLT4gRnJlZSAocXVhcmtfb2ZfanNvbiBmIHMpXG4gIHwgYExpc3QgWyBgSW50IDU7IGEgXSAtPiBSZW1vdmUgKGYgYSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIldyb25nIGFjdGlvblwiLCB4KSlcblxubGV0IHdyaXRlX2JpbmRpbmdfc3RhdGUgZiBvYiBiZiA9XG4gIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIG9iXG4gICAgKG1hdGNoIGJmIHdpdGhcbiAgICB8IEFOWSAtPiBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMCkgXVxuICAgIHwgRlJFRSAtPiBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMSkgXVxuICAgIHwgQk9VTkQgLT4gWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDIpIF1cbiAgICB8IEJPVU5EX1RZUEUgYiAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDMpOyAoZnVuIG8gLT4gd3JpdGVfYmluZGluZ190eXBlIG8gYik7XG4gICAgICBdXG4gICAgfCBCT1VORF90byBzIC0+XG4gICAgICBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gNCk7IChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gcykgXSlcblxubGV0IHJlYWRfYmluZGluZ19zdGF0ZSBmIHN0IGIgPVxuICBKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgKGZ1biBzdCBiIC0+IGZ1bmN0aW9uXG4gICAgICB8IDAgLT4gQU5ZXG4gICAgICB8IDEgLT4gRlJFRVxuICAgICAgfCAyIC0+IEJPVU5EXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGIgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSByZWFkX2JpbmRpbmdfdHlwZSBzdCBiIGluXG4gICAgICAgIEJPVU5EX1RZUEUgYlxuICAgICAgfCA0IC0+XG4gICAgICAgIGxldCBzID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBCT1VORF90byBzXG4gICAgICB8IF8gLT4gWW9qc29uLmpzb25fZXJyb3IgXCJXcm9uZyBiaW5kaW5nIHN0YXRlXCIgKCpzdCBiKikpXG4gICAgc3QgYlxuXG5sZXQgYmluZGluZ19zdGF0ZV90b19qc29uIGYgPSBmdW5jdGlvblxuICB8IEFOWSAtPiBgTGlzdCBbIGBJbnQgMCBdXG4gIHwgRlJFRSAtPiBgTGlzdCBbIGBJbnQgMSBdXG4gIHwgQk9VTkQgLT4gYExpc3QgWyBgSW50IDIgXVxuICB8IEJPVU5EX1RZUEUgYiAtPiBgTGlzdCBbIGBJbnQgMzsgYmluZGluZ190eXBlX3RvX2pzb24gYiBdXG4gIHwgQk9VTkRfdG8gcyAtPiBgTGlzdCBbIGBJbnQgNDsgcXVhcmtfdG9fanNvbiBmIHMgXVxuXG5sZXQgYmluZGluZ19zdGF0ZV9vZl9qc29uIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYEludCAwIF0gLT4gQU5ZXG4gIHwgYExpc3QgWyBgSW50IDEgXSAtPiBGUkVFXG4gIHwgYExpc3QgWyBgSW50IDIgXSAtPiBCT1VORFxuICB8IGBMaXN0IFsgYEludCAzOyBgTGlzdCBbIGBJbnQgdHk7IGBJbnQgcyBdIF0gLT4gQk9VTkRfVFlQRSAodHksIHMpXG4gIHwgYExpc3QgWyBgSW50IDQ7IGBMaXN0IFsgYWc7IGBJbnQgcyBdIF0gLT4gQk9VTkRfdG8gKGYgYWcsIHMpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgYmluZGluZ19zdGF0ZVwiLCB4KSlcblxubGV0IHdyaXRlX2V2ZW50IGYgb2IgZSA9XG4gIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIG9iXG4gICAgW1xuICAgICAgKGZ1biBvIC0+XG4gICAgICAgIEpzb25VdGlsLndyaXRlX2xpc3QgKEpzb25VdGlsLndyaXRlX2xpc3QgKHdyaXRlX3Rlc3QgZikpIG8gZS50ZXN0cyk7XG4gICAgICAoZnVuIG8gLT4gSnNvblV0aWwud3JpdGVfbGlzdCAod3JpdGVfYWN0aW9uIGYpIG8gZS5hY3Rpb25zKTtcbiAgICAgIChmdW4gbyAtPlxuICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciAod3JpdGVfcXVhcmsgZikgKHdyaXRlX2JpbmRpbmdfc3RhdGUgZikpXG4gICAgICAgICAgbyBlLnNpZGVfZWZmZWN0c19zcmMpO1xuICAgICAgKGZ1biBvIC0+IEpzb25VdGlsLndyaXRlX2xpc3QgKHdyaXRlX3F1YXJrIGYpIG8gZS5zaWRlX2VmZmVjdHNfZHN0KTtcbiAgICAgIChmdW4gbyAtPiBKc29uVXRpbC53cml0ZV9saXN0ICh3cml0ZV90ZXN0IGYpIG8gZS5jb25uZWN0aXZpdHlfdGVzdHMpO1xuICAgIF1cblxubGV0IHJlYWRfZXZlbnQgZiBzdCBiID1cbiAgSnNvblV0aWwucmVhZF92YXJpYW50XG4gICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgKHJlYWRfdGVzdCBmKSkpXG4gICAgKGZ1biBzdCBiIHRlc3RzIC0+XG4gICAgICBsZXQgYWN0aW9ucyA9XG4gICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChZb2pzb24uQmFzaWMucmVhZF9saXN0IChyZWFkX2FjdGlvbiBmKSkgc3QgYlxuICAgICAgaW5cbiAgICAgIGxldCBzaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdFxuICAgICAgICAgICAgIChKc29uVXRpbC5yZWFkX2NvbXBhY3RfcGFpciAocmVhZF9xdWFyayBmKSAocmVhZF9iaW5kaW5nX3N0YXRlIGYpKSlcbiAgICAgICAgICBzdCBiXG4gICAgICBpblxuICAgICAgbGV0IHNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCAocmVhZF9xdWFyayBmKSkgc3QgYlxuICAgICAgaW5cbiAgICAgIGxldCBjb25uZWN0aXZpdHlfdGVzdHMgPVxuICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCAocmVhZF90ZXN0IGYpKSBzdCBiXG4gICAgICBpblxuICAgICAgeyB0ZXN0czsgYWN0aW9uczsgc2lkZV9lZmZlY3RzX3NyYzsgc2lkZV9lZmZlY3RzX2RzdDsgY29ubmVjdGl2aXR5X3Rlc3RzIH0pXG4gICAgc3QgYlxuXG5sZXQgZXZlbnRfdG9fanNvbiBmIGUgPVxuICBgTGlzdFxuICAgIFtcbiAgICAgIGBMaXN0XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIGNjdCAtPiBgTGlzdCAoTGlzdC5tYXAgKHRlc3RfdG9fanNvbiBmKSBjY3QpKSBlLnRlc3RzKTtcbiAgICAgIGBMaXN0IChMaXN0Lm1hcCAoYWN0aW9uX3RvX2pzb24gZikgZS5hY3Rpb25zKTtcbiAgICAgIGBMaXN0XG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIChzLCBiKSAtPlxuICAgICAgICAgICAgIGBMaXN0IFsgcXVhcmtfdG9fanNvbiBmIHM7IGJpbmRpbmdfc3RhdGVfdG9fanNvbiBmIGIgXSlcbiAgICAgICAgICAgZS5zaWRlX2VmZmVjdHNfc3JjKTtcbiAgICAgIGBMaXN0IChMaXN0Lm1hcCAocXVhcmtfdG9fanNvbiBmKSBlLnNpZGVfZWZmZWN0c19kc3QpO1xuICAgICAgYExpc3QgKExpc3QubWFwICh0ZXN0X3RvX2pzb24gZikgZS5jb25uZWN0aXZpdHlfdGVzdHMpO1xuICAgIF1cblxubGV0IGV2ZW50X29mX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgTGlzdCB0OyBgTGlzdCBhOyBgTGlzdCBzX2Vfc3JjOyBgTGlzdCBzX2VfZHN0OyBgTGlzdCBjX3QgXSBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIHRlc3RzID1cbiAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgYExpc3QgY2NsIC0+IExpc3QubWFwICh0ZXN0X29mX2pzb24gZikgY2NsXG4gICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgIHQ7XG4gICAgICAgICBhY3Rpb25zID0gTGlzdC5tYXAgKGFjdGlvbl9vZl9qc29uIGYpIGE7XG4gICAgICAgICBzaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgYExpc3QgWyBzOyBiIF0gLT4gcXVhcmtfb2ZfanNvbiBmIHMsIGJpbmRpbmdfc3RhdGVfb2ZfanNvbiBmIGJcbiAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgc19lX3NyYztcbiAgICAgICAgIHNpZGVfZWZmZWN0c19kc3QgPSBMaXN0Lm1hcCAocXVhcmtfb2ZfanNvbiBmKSBzX2VfZHN0O1xuICAgICAgICAgY29ubmVjdGl2aXR5X3Rlc3RzID0gTGlzdC5tYXAgKHRlc3Rfb2ZfanNvbiBmKSBjX3Q7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBldmVudFwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgZXZlbnRcIiwgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgVHJhbnNmb3JtYXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEFnZW50IG9mICdhXG4gICAgfCBGcmVlZCBvZiAnYSBJbnN0YW50aWF0aW9uLnNpdGVcbiAgICB8IExpbmtlZCBvZiAnYSBJbnN0YW50aWF0aW9uLnNpdGUgKiAnYSBJbnN0YW50aWF0aW9uLnNpdGVcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgb2YgJ2EgSW5zdGFudGlhdGlvbi5zaXRlXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCBvZlxuICAgICAgICAnYSAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lICogSW5zdGFudGlhdGlvbi5pbnRlcm5hbF9zdGF0ZVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgb2YgJ2EgSW5zdGFudGlhdGlvbi5zaXRlXG5cbiAgbGV0IHRvX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBBZ2VudCBhIC0+IGBBc3NvYyBbIFwiQWdlbnRcIiwgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGEgXVxuICAgIHwgRnJlZWQgKGEsIHMpIC0+XG4gICAgICBgQXNzb2MgWyBcIkZyZWVkXCIsIGBMaXN0IFsgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGE7IGBJbnQgcyBdIF1cbiAgICB8IExpbmtlZCAoKGEsIHMpLCAoYiwgdCkpIC0+XG4gICAgICBgQXNzb2NcbiAgICAgICAgW1xuICAgICAgICAgICggXCJMaW5rZWRcIixcbiAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBNYXRjaGluZy5BZ2VudC50b195b2pzb24gYTtcbiAgICAgICAgICAgICAgICBgSW50IHM7XG4gICAgICAgICAgICAgICAgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGI7XG4gICAgICAgICAgICAgICAgYEludCB0O1xuICAgICAgICAgICAgICBdICk7XG4gICAgICAgIF1cbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKGEsIHMpIC0+XG4gICAgICBgQXNzb2NcbiAgICAgICAgWyBcIk5lZ2F0aXZlV2hhdEV2ZXJcIiwgYExpc3QgWyBNYXRjaGluZy5BZ2VudC50b195b2pzb24gYTsgYEludCBzIF0gXVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMsIGkpIC0+XG4gICAgICBgQXNzb2NcbiAgICAgICAgW1xuICAgICAgICAgICggXCJQb3NpdGl2ZUludGVybmFsaXplZFwiLFxuICAgICAgICAgICAgYExpc3QgWyBNYXRjaGluZy5BZ2VudC50b195b2pzb24gYTsgYEludCBzOyBgSW50IGkgXSApO1xuICAgICAgICBdXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAoYSwgcykgLT5cbiAgICAgIGBBc3NvY1xuICAgICAgICBbIFwiTmVnYXRpdmVJbnRlcm5hbGl6ZWRcIiwgYExpc3QgWyBNYXRjaGluZy5BZ2VudC50b195b2pzb24gYTsgYEludCBzIF0gXVxuXG4gIGxldCBvZl95b2pzb24gPSBmdW5jdGlvblxuICAgIHwgYEFzc29jIFsgKFwiQWdlbnRcIiwgYSkgXSAtPiBBZ2VudCAoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGEpXG4gICAgfCBgQXNzb2MgWyAoXCJGcmVlZFwiLCBgTGlzdCBbIGE7IGBJbnQgcyBdKSBdIC0+XG4gICAgICBGcmVlZCAoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGEsIHMpXG4gICAgfCBgQXNzb2MgWyAoXCJMaW5rZWRcIiwgYExpc3QgWyBhOyBgSW50IHM7IGI7IGBJbnQgdCBdKSBdIC0+XG4gICAgICBMaW5rZWQgKChNYXRjaGluZy5BZ2VudC5vZl95b2pzb24gYSwgcyksIChNYXRjaGluZy5BZ2VudC5vZl95b2pzb24gYiwgdCkpXG4gICAgfCBgQXNzb2MgWyAoXCJOZWdhdGl2ZVdoYXRFdmVyXCIsIGBMaXN0IFsgYTsgYEludCBzIF0pIF0gLT5cbiAgICAgIE5lZ2F0aXZlV2hhdEV2ZXIgKE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbiBhLCBzKVxuICAgIHwgYEFzc29jIFsgKFwiUG9zaXRpdmVJbnRlcm5hbGl6ZWRcIiwgYExpc3QgWyBhOyBgSW50IHM7IGBJbnQgaSBdKSBdIC0+XG4gICAgICBQb3NpdGl2ZUludGVybmFsaXplZCAoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGEsIHMsIGkpXG4gICAgfCBgQXNzb2MgWyAoXCJOZWdhdGl2ZUludGVybmFsaXplZFwiLCBgTGlzdCBbIGE7IGBJbnQgcyBdKSBdIC0+XG4gICAgICBOZWdhdGl2ZUludGVybmFsaXplZCAoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGEsIHMpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgYWdlbnRcIiwgeCkpXG5cbiAgbGV0IHJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogPSBmdW5jdGlvblxuICAgIHwgRnJlZWQgKHAsIHMpIGFzIHggLT5cbiAgICAgIGxldCBwJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcCBpblxuICAgICAgaWYgcCA9PSBwJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgRnJlZWQgKHAnLCBzKVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAocCwgcykgYXMgeCAtPlxuICAgICAgbGV0IHAnID0gTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiBwIGluXG4gICAgICBpZiBwID09IHAnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBOZWdhdGl2ZVdoYXRFdmVyIChwJywgcylcbiAgICB8IExpbmtlZCAoKHAxLCBzMSksIChwMiwgczIpKSBhcyB4IC0+XG4gICAgICBsZXQgcDEnID0gTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiBwMSBpblxuICAgICAgbGV0IHAyJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcDIgaW5cbiAgICAgIGlmIHAxID09IHAxJyAmJiBwMiA9PSBwMicgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIExpbmtlZCAoKHAxJywgczEpLCAocDInLCBzMikpXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCAocCwgcywgaSkgYXMgeCAtPlxuICAgICAgbGV0IHAnID0gTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiBwIGluXG4gICAgICBpZiBwID09IHAnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBQb3NpdGl2ZUludGVybmFsaXplZCAocCcsIHMsIGkpXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAocCwgcykgYXMgeCAtPlxuICAgICAgbGV0IHAnID0gTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiBwIGluXG4gICAgICBpZiBwID09IHAnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBOZWdhdGl2ZUludGVybmFsaXplZCAocCcsIHMpXG4gICAgfCBBZ2VudCBwIGFzIHggLT5cbiAgICAgIGxldCBwJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcCBpblxuICAgICAgaWYgcCA9PSBwJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgQWdlbnQgcCdcblxuICBsZXQgY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggPSBmdW5jdGlvblxuICAgIHwgQWdlbnQgbiAtPiBBZ2VudCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbilcbiAgICB8IEZyZWVkIChuLCBzKSAtPlxuICAgICAgRnJlZWQgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4sIHMpXG4gICAgfCBMaW5rZWQgKChuLCBzKSwgKG4nLCBzJykpIC0+XG4gICAgICBMaW5rZWRcbiAgICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbiwgcyksXG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4nLCBzJykgKVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAobiwgcykgLT5cbiAgICAgIE5lZ2F0aXZlV2hhdEV2ZXIgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4sIHMpXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCAobiwgcywgaSkgLT5cbiAgICAgIFBvc2l0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuLCBzLCBpKVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKG4sIHMpIC0+XG4gICAgICBOZWdhdGl2ZUludGVybmFsaXplZCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbiwgcylcblxuICBsZXQgbWFwX2ZvbGRfYWdlbnQgZiB4IGFjYyA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBZ2VudCBhIC0+XG4gICAgICBsZXQgYScsIGFjYycgPSBmIGEgYWNjIGluXG4gICAgICBBZ2VudCBhJywgYWNjJ1xuICAgIHwgRnJlZWQgKGEsIHMpIC0+XG4gICAgICBsZXQgYScsIGFjYycgPSBmIGEgYWNjIGluXG4gICAgICBGcmVlZCAoYScsIHMpLCBhY2MnXG4gICAgfCBMaW5rZWQgKChhMSwgczEpLCAoYTIsIHMyKSkgLT5cbiAgICAgIGxldCBhMScsIGFjYycgPSBmIGExIGFjYyBpblxuICAgICAgbGV0IGEyJywgYWNjJycgPSBmIGEyIGFjYycgaW5cbiAgICAgIExpbmtlZCAoKGExJywgczEpLCAoYTInLCBzMikpLCBhY2MnJ1xuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAoYSwgcykgLT5cbiAgICAgIGxldCBhJywgYWNjJyA9IGYgYSBhY2MgaW5cbiAgICAgIE5lZ2F0aXZlV2hhdEV2ZXIgKGEnLCBzKSwgYWNjJ1xuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMsIGkpIC0+XG4gICAgICBsZXQgYScsIGFjYycgPSBmIGEgYWNjIGluXG4gICAgICBQb3NpdGl2ZUludGVybmFsaXplZCAoYScsIHMsIGkpLCBhY2MnXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAoYSwgcykgLT5cbiAgICAgIGxldCBhJywgYWNjJyA9IGYgYSBhY2MgaW5cbiAgICAgIE5lZ2F0aXZlSW50ZXJuYWxpemVkIChhJywgcyksIGFjYydcblxuICBsZXQgbWFwX2FnZW50IGYgPSBmdW5jdGlvblxuICAgIHwgQWdlbnQgYSAtPiBBZ2VudCAoZiBhKVxuICAgIHwgRnJlZWQgKGEsIHMpIC0+IEZyZWVkIChmIGEsIHMpXG4gICAgfCBMaW5rZWQgKChhMSwgczEpLCAoYTIsIHMyKSkgLT4gTGlua2VkICgoZiBhMSwgczEpLCAoZiBhMiwgczIpKVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAoYSwgcykgLT4gTmVnYXRpdmVXaGF0RXZlciAoZiBhLCBzKVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMsIGkpIC0+IFBvc2l0aXZlSW50ZXJuYWxpemVkIChmIGEsIHMsIGkpXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAoYSwgcykgLT4gTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKGYgYSwgcylcblxuICBsZXQgZm9sZF9hZ2VudCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBBZ2VudCBhIC0+IGYgYWNjIGFcbiAgICB8IEZyZWVkIChhLCBfKSAtPiBmIGFjYyBhXG4gICAgfCBMaW5rZWQgKChhMSwgXyksIChhMiwgXykpIC0+IGYgKGYgYWNjIGExKSBhMlxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAoYSwgXykgLT4gZiBhY2MgYVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIF8sIF8pIC0+IGYgYWNjIGFcbiAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIChhLCBfKSAtPiBmIGFjYyBhXG5cbiAgbGV0IGVxdWFsIGYgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IEFnZW50IGEsIEFnZW50IGEnIC0+IGYgYSBhJ1xuICAgIHwgKCBBZ2VudCBfLFxuICAgICAgICAoIEZyZWVkIF8gfCBMaW5rZWQgXyB8IE5lZ2F0aXZlV2hhdEV2ZXIgXyB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIF9cbiAgICAgICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCBfICkgKVxuICAgIHwgXywgQWdlbnQgXyAtPlxuICAgICAgZmFsc2VcbiAgICB8IEZyZWVkIChhLCBzKSwgRnJlZWQgKGEnLCBzJykgLT4gcyA9IHMnICYmIGYgYSBhJ1xuICAgIHwgKCBGcmVlZCBfLFxuICAgICAgICAoIExpbmtlZCBfIHwgTmVnYXRpdmVXaGF0RXZlciBfIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgX1xuICAgICAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIF8gKSApXG4gICAgfCBfLCBGcmVlZCBfIC0+XG4gICAgICBmYWxzZVxuICAgIHwgTGlua2VkICgoYTEsIHMxKSwgKGEyLCBzMikpLCBMaW5rZWQgKChhMScsIHMxJyksIChhMicsIHMyJykpIC0+XG4gICAgICAoczEgPSBzMScgJiYgczIgPSBzMicgJiYgZiBhMSBhMScgJiYgZiBhMiBhMicpXG4gICAgICB8fCAoczEgPSBzMicgJiYgczIgPSBzMScgJiYgZiBhMSBhMicgJiYgZiBhMiBhMScpXG4gICAgfCAoIExpbmtlZCBfLFxuICAgICAgICAoTmVnYXRpdmVXaGF0RXZlciBfIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgXyB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIF8pIClcbiAgICB8IF8sIExpbmtlZCBfIC0+XG4gICAgICBmYWxzZVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAoYSwgcyksIE5lZ2F0aXZlV2hhdEV2ZXIgKGEnLCBzJykgLT4gcyA9IHMnICYmIGYgYSBhJ1xuICAgIHwgTmVnYXRpdmVXaGF0RXZlciBfLCAoUG9zaXRpdmVJbnRlcm5hbGl6ZWQgXyB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIF8pXG4gICAgfCBfLCBOZWdhdGl2ZVdoYXRFdmVyIF8gLT5cbiAgICAgIGZhbHNlXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAoYSwgcyksIE5lZ2F0aXZlSW50ZXJuYWxpemVkIChhJywgcycpIC0+XG4gICAgICBzID0gcycgJiYgZiBhIGEnXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCBfLCBQb3NpdGl2ZUludGVybmFsaXplZCBfXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCBfLCBOZWdhdGl2ZUludGVybmFsaXplZCBfIC0+XG4gICAgICBmYWxzZVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMsIGkpLCBQb3NpdGl2ZUludGVybmFsaXplZCAoYScsIHMnLCBpJykgLT5cbiAgICAgIGkgPSBpJyAmJiBzID0gcycgJiYgZiBhIGEnXG5cbiAgbGV0IHByaW50ID9zaWdzIGYgPSBmdW5jdGlvblxuICAgIHwgQWdlbnQgcCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFslYUBdXCIgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKSBwXG4gICAgfCBGcmVlZCAocCwgcykgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhLiVhID0gJXRAXVwiXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludCA/c2lncylcbiAgICAgICAgcFxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBwKVxuICAgICAgICBzIFBwLmJvdHRvbVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAocCwgcykgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhLiVhID0gPz8/QF1cIlxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpXG4gICAgICAgIHBcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50X3NpdGUgP3NpZ3MgcClcbiAgICAgICAgc1xuICAgIHwgTGlua2VkICgocDEsIHMxKSwgKHAyLCBzMikpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS4lYSA9ICVhLiVhQF1cIlxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpXG4gICAgICAgIHAxXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludF9zaXRlID9zaWdzIHAxKVxuICAgICAgICBzMVxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpXG4gICAgICAgIHAyXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludF9zaXRlID9zaWdzIHAyKVxuICAgICAgICBzMlxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKHAsIHMsIGkpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS4lYSA9QF1cIlxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpXG4gICAgICAgIHBcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50X2ludGVybmFsID9zaWdzIHAgcylcbiAgICAgICAgaVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHAsIHMpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS4lYX4gPUBdXCJcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKVxuICAgICAgICBwXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludF9zaXRlID9zaWdzIHApXG4gICAgICAgIHNcblxuICBsZXQgZ2V0X25lZ2F0aXZlX3BhcnQgY3JlYXRlZF9hZ2VudHMgbG5rX2RzdCAoKChhLCBfKSwgXykgYXMgcCkgKGRvbiwgb3V0KSA9XG4gICAgaWYgTGlzdC5tZW0gcCBkb24gfHwgTGlzdC5tZW0gYSBjcmVhdGVkX2FnZW50cyB0aGVuXG4gICAgICBkb24sIG91dFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbG5rX2RzdCBwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBwIDo6IGRvbiwgRnJlZWQgcCA6OiBvdXRcbiAgICAgIHwgU29tZSBwJyAtPiBwIDo6IHAnIDo6IGRvbiwgTGlua2VkIChwLCBwJykgOjogb3V0XG4gICAgKVxuXG4gIGxldCBhZ2VudHNfY3JlYXRlZF9ieV9hY3Rpb24gPSBmdW5jdGlvblxuICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKChhZ19pZCwgXyksIF8pIC0+IFNvbWUgYWdfaWRcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZCBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF8gfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gX1xuICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgXyB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIF8gLT5cbiAgICAgIE5vbmVcblxuICBsZXQgYWdlbnRzX2NyZWF0ZWRfYnlfYWN0aW9ucyBhY3Rpb25zID1cbiAgICBMaXN0X3V0aWwubWFwX29wdGlvbiBhZ2VudHNfY3JlYXRlZF9ieV9hY3Rpb24gYWN0aW9uc1xuXG4gIGxldCBuZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbnNfb2ZfYWN0aW9ucyBzaWdzIGxua19kc3QgYWN0aW9ucyA9XG4gICAgbGV0IGNyZWF0ZWRfYWdlbnRzID0gYWdlbnRzX2NyZWF0ZWRfYnlfYWN0aW9ucyBhY3Rpb25zIGluXG4gICAgc25kXG4gICAgICAoTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgICAoZnVuIHggKChkb24sIG91dCkgYXMgYWNjKSAtPlxuICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoXywgXykgLT4gYWNjXG4gICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKCgoKGlkLCBfKSwgXykgYXMgcCksIF8pIC0+XG4gICAgICAgICAgICAgaWYgTGlzdC5tZW0gaWQgY3JlYXRlZF9hZ2VudHMgdGhlblxuICAgICAgICAgICAgICAgZG9uLCBvdXRcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBkb24sIE5lZ2F0aXZlSW50ZXJuYWxpemVkIHAgOjogb3V0XG4gICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChwMSwgcDIpIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIChwMSwgcDIpIC0+XG4gICAgICAgICAgICAgZ2V0X25lZ2F0aXZlX3BhcnQgY3JlYXRlZF9hZ2VudHMgbG5rX2RzdCBwMVxuICAgICAgICAgICAgICAgKGdldF9uZWdhdGl2ZV9wYXJ0IGNyZWF0ZWRfYWdlbnRzIGxua19kc3QgcDIgYWNjKVxuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBwIC0+XG4gICAgICAgICAgICAgZ2V0X25lZ2F0aXZlX3BhcnQgY3JlYXRlZF9hZ2VudHMgbG5rX2RzdCBwIGFjY1xuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlICgoXywgdHkpIGFzIGEpIC0+XG4gICAgICAgICAgICAgVG9vbHMucmVjdGlcbiAgICAgICAgICAgICAgIChmdW4gc3QgcyAtPiBnZXRfbmVnYXRpdmVfcGFydCBjcmVhdGVkX2FnZW50cyBsbmtfZHN0IChhLCBzKSBzdClcbiAgICAgICAgICAgICAgIChkb24sIEFnZW50IGEgOjogb3V0KVxuICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5hcml0eSBzaWdzIHR5KSlcbiAgICAgICAgIGFjdGlvbnMgKFtdLCBbXSkpXG5cbiAgbGV0IHBvc2l0aXZlX3RyYW5zZm9ybWF0aW9uc19vZl9hY3Rpb25zIHNpZ3Mgc2lkZV9lZmZlY3RfZHN0cyBhY3Rpb25zID1cbiAgICBsZXQgcmVtLCByZXYgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoKHJlbSwgb3V0KSBhcyBhY2MpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoKChfLCB0eSkgYXMgYSksIF8pIC0+XG4gICAgICAgICAgICAoIFRvb2xzLnJlY3RpXG4gICAgICAgICAgICAgICAgKGZ1biBzdCBzIC0+IChhLCBzKSA6OiBzdClcbiAgICAgICAgICAgICAgICByZW0gKFNpZ25hdHVyZS5hcml0eSBzaWdzIHR5KSxcbiAgICAgICAgICAgICAgQWdlbnQgYSA6OiBvdXQgKVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKChhLCBzKSwgaSkgLT5cbiAgICAgICAgICAgIHJlbSwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMsIGkpIDo6IG91dFxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChwMSwgcDIpIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIChwMSwgcDIpIC0+XG4gICAgICAgICAgICAoIExpc3QuZmlsdGVyIChmdW4gcCAtPiBwIDw+IHAxICYmIHAgPD4gcDIpIHJlbSxcbiAgICAgICAgICAgICAgTGlua2VkIChwMSwgcDIpIDo6IG91dCApXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcCAtPlxuICAgICAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biBwJyAtPiBwJyA8PiBwKSByZW0sIEZyZWVkIHAgOjogb3V0XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfIC0+IGFjYylcbiAgICAgICAgKFtdLCBbXSkgYWN0aW9uc1xuICAgIGluXG4gICAgTGlzdC5yZXZfYXBwZW5kIHJldlxuICAgICAgKExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZFxuICAgICAgICAgKGZ1biBwIC0+IEZyZWVkIHApXG4gICAgICAgICByZW1cbiAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHAgLT4gRnJlZWQgcCkgc2lkZV9lZmZlY3RfZHN0cykpXG5lbmRcblxudHlwZSBhbGdfZXhwciA9IChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuZVxuXG50eXBlIGVsZW1lbnRhcnlfcnVsZSA9IHtcbiAgcmF0ZTogYWxnX2V4cHIgTG9jLmFubm90ZWQ7XG4gIHVuYXJ5X3JhdGU6IChhbGdfZXhwciBMb2MuYW5ub3RlZCAqIGFsZ19leHByIG9wdGlvbikgb3B0aW9uO1xuICBjb25uZWN0ZWRfY29tcG9uZW50czogUGF0dGVybi5pZCBhcnJheTsgKCppZCAtPiBjYyopXG4gIHJlbW92ZWQ6IEluc3RhbnRpYXRpb24uYWJzdHJhY3QgVHJhbnNmb3JtYXRpb24udCBsaXN0O1xuICBpbnNlcnRlZDogSW5zdGFudGlhdGlvbi5hYnN0cmFjdCBUcmFuc2Zvcm1hdGlvbi50IGxpc3Q7XG4gIGRlbHRhX3Rva2VuczogKGFsZ19leHByIExvYy5hbm5vdGVkICogaW50KSBsaXN0O1xuICBzeW50YWN0aWNfcnVsZTogaW50OyAgKCoqIFswXSBtZWFucyBnZW5lcmF0ZWQgZm9yIHBlcnR1cmJhdGlvbi4gKilcbiAgaW5zdGFudGlhdGlvbnM6IEluc3RhbnRpYXRpb24uYWJzdHJhY3QgSW5zdGFudGlhdGlvbi5ldmVudDtcbn1cblxubGV0IGV4dHJhY3RfY2NfaWRzIHIgPSByLmNvbm5lY3RlZF9jb21wb25lbnRzXG5sZXQgZXh0cmFjdF9hYnN0cmFjdF9ldmVudCByID0gci5pbnN0YW50aWF0aW9uc1xuXG5sZXQgYWxnX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgPVxuICBBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKEpzb25VdGlsLm9mX2xpc3QgKEpzb25VdGlsLm9mX2FycmF5IFBhdHRlcm4uaWRfdG9feW9qc29uKSlcbiAgICBKc29uVXRpbC5vZl9pbnRcblxubGV0IGFsZ19leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC50b19saXN0IChKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvbikpXG4gICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpXG5cbmxldCBydWxlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIHIgPVxuICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgIFtcbiAgICAgICggXCJyYXRlXCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgci5yYXRlXG4gICAgICApO1xuICAgICAgKCBcInVuYXJ5X3JhdGVcIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGFsZ19leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykpKVxuICAgICAgICAgIHIudW5hcnlfcmF0ZSApO1xuICAgICAgKCBcImNvbm5lY3RlZF9jb21wb25lbnRzXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2FycmF5IFBhdHRlcm4uaWRfdG9feW9qc29uIHIuY29ubmVjdGVkX2NvbXBvbmVudHMgKTtcbiAgICAgIFwicmVtb3ZlZFwiLCBKc29uVXRpbC5vZl9saXN0IFRyYW5zZm9ybWF0aW9uLnRvX3lvanNvbiByLnJlbW92ZWQ7XG4gICAgICBcImluc2VydGVkXCIsIEpzb25VdGlsLm9mX2xpc3QgVHJhbnNmb3JtYXRpb24udG9feW9qc29uIHIuaW5zZXJ0ZWQ7XG4gICAgICAoIFwiZGVsdGFfdG9rZW5zXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpciB+bGFiMTpcInZhbFwiIH5sYWIyOlwidG9rXCJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGFsZ19leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICBKc29uVXRpbC5vZl9pbnQpXG4gICAgICAgICAgci5kZWx0YV90b2tlbnMgKTtcbiAgICAgIFwic3ludGFjdGljX3J1bGVcIiwgYEludCByLnN5bnRhY3RpY19ydWxlO1xuICAgICAgKCBcImluc3RhbnRpYXRpb25zXCIsXG4gICAgICAgIEluc3RhbnRpYXRpb24uZXZlbnRfdG9fanNvbiBNYXRjaGluZy5BZ2VudC50b195b2pzb24gci5pbnN0YW50aWF0aW9ucyApO1xuICAgIF1cblxubGV0IHJ1bGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgciA9XG4gIG1hdGNoIHIgd2l0aFxuICB8IChgQXNzb2MgbCA6IFlvanNvbi5CYXNpYy50KSBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIHJhdGUgPVxuICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChhbGdfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInJhdGVcIiBsKTtcbiAgICAgICAgIHVuYXJ5X3JhdGUgPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChhbGdfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykpXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpKSlcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwidW5hcnlfcmF0ZVwiIHgpO1xuICAgICAgICAgY29ubmVjdGVkX2NvbXBvbmVudHMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvblxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJjb25uZWN0ZWRfY29tcG9uZW50c1wiIHgpO1xuICAgICAgICAgcmVtb3ZlZCA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3QgVHJhbnNmb3JtYXRpb24ub2ZfeW9qc29uXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInJlbW92ZWRcIiB4KTtcbiAgICAgICAgIGluc2VydGVkID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdCBUcmFuc2Zvcm1hdGlvbi5vZl95b2pzb25cbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiaW5zZXJ0ZWRcIiB4KTtcbiAgICAgICAgIGRlbHRhX3Rva2VucyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpciB+bGFiMTpcInZhbFwiIH5sYWIyOlwidG9rXCJcbiAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKSlcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZGVsdGFfdG9rZW5zXCIgeCk7XG4gICAgICAgICBzeW50YWN0aWNfcnVsZSA9IEpzb25VdGlsLnRvX2ludCAoTGlzdC5hc3NvYyBcInN5bnRhY3RpY19ydWxlXCIgbCk7XG4gICAgICAgICBpbnN0YW50aWF0aW9ucyA9XG4gICAgICAgICAgIEluc3RhbnRpYXRpb24uZXZlbnRfb2ZfanNvbiBNYXRjaGluZy5BZ2VudC5vZl95b2pzb25cbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImluc3RhbnRpYXRpb25zXCIgbCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZWxlbWVudGFyeSBydWxlXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlbGVtZW50YXJ5IHJ1bGVcIiwgeCkpXG5cbmxldCBmdWxseV9zcGVjaWZpZWRfcGF0dGVybl90b19wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbnMgY2MgPVxuICBsZXQgXywgdHIgPVxuICAgIFBhdHRlcm4uZm9sZF9ieV90eXBlXG4gICAgICAoZnVuIH5wb3MgfmFnZW50X3R5cGUgaW50ZiAoZW1iLCBnKSAtPlxuICAgICAgICBsZXQgYSA9IHBvcywgYWdlbnRfdHlwZSBpblxuICAgICAgICBsZXQgZycgPSBUcmFuc2Zvcm1hdGlvbi5BZ2VudCBhIDo6IGcgaW5cbiAgICAgICAgbGV0IGVtYicgPSBNb2RzLkludE1hcC5hZGQgcG9zIGEgZW1iIGluXG4gICAgICAgICggZW1iJyxcbiAgICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgICAoZnVuIHNpdGUgYWNjIChsLCBpKSAtPlxuICAgICAgICAgICAgICBsZXQgYWNjJyA9XG4gICAgICAgICAgICAgICAgaWYgaSA8PiAtMSB0aGVuXG4gICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCAoYSwgc2l0ZSwgaSkgOjogYWNjXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFBhdHRlcm4uVW5TcGVjIHwgUGF0dGVybi5GcmVlIC0+XG4gICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb24uRnJlZWQgKGEsIHNpdGUpIDo6IGFjYydcbiAgICAgICAgICAgICAgfCBQYXR0ZXJuLkxpbmsgKHgnLCBzJykgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24geCcgZW1iJyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjYydcbiAgICAgICAgICAgICAgICB8IFNvbWUgYWcnIC0+XG4gICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChhLCBzaXRlKSwgKGFnJywgcycpKSA6OiBhY2MnKSlcbiAgICAgICAgICAgIGcnIGludGYgKSlcbiAgICAgIGNjIChNb2RzLkludE1hcC5lbXB0eSwgW10pXG4gIGluXG4gIExpc3QucmV2IHRyXG5cbnR5cGUgJ2FsZ19leHByIHByaW50X2V4cHIgPVxuICB8IFN0cl9wZXhwciBvZiBzdHJpbmcgTG9jLmFubm90ZWRcbiAgfCBBbGdfcGV4cHIgb2YgJ2FsZ19leHByIExvYy5hbm5vdGVkXG5cbmxldCBwcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBTdHJfcGV4cHIgcyAtPiBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9zdHJpbmcgc1xuICB8IEFsZ19wZXhwciBhIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgICggXCJBXCIsXG4gICAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgICAgYSApO1xuICAgICAgXVxuXG5sZXQgcHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhciB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYEFzc29jIFsgKFwiQVwiLCB4KSBdIC0+XG4gICAgKHRyeVxuICAgICAgIEFsZ19wZXhwclxuICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICAgIHgpXG4gICAgIHdpdGggWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciBfIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHByaW50IGV4cHJcIiwgeCkpKVxuICB8IHggLT5cbiAgICAodHJ5XG4gICAgICAgU3RyX3BleHByXG4gICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgICAgeClcbiAgICAgd2l0aCBZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIF8gLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcHJpbnQgZXhwclwiLCB4KSkpXG5cbmxldCBtYXBfZXhwcl9wcmludCBmIHggPVxuICBMaXN0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBTdHJfcGV4cHIgXyBhcyB4IC0+IHhcbiAgICAgIHwgQWxnX3BleHByIGUgLT4gQWxnX3BleHByIChmIGUpKVxuICAgIHhcblxubGV0IGZvbGRfZXhwcl9wcmludCBmIGFjYyB4ID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgfCBTdHJfcGV4cHIgXyAtPiBhY2NcbiAgICAgIHwgQWxnX3BleHByIGUgLT4gZiBhY2MgZSlcbiAgICBhY2MgeFxuXG50eXBlIGRpbl9raW5kID0gQUJTT0xVVEUgfCBSRUxBVElWRSB8IFBST0JBQklMSVRZXG5cbmxldCBkaW5fa2luZF90b195b2pzb24gPSBmdW5jdGlvblxuICB8IEFCU09MVVRFIC0+IGBTdHJpbmcgXCJBQlNPTFVURVwiXG4gIHwgUkVMQVRJVkUgLT4gYFN0cmluZyBcIlJFTEFUSVZFXCJcbiAgfCBQUk9CQUJJTElUWSAtPiBgU3RyaW5nIFwiUFJPQkFCSUxJVFlcIlxuXG5sZXQgZGluX2tpbmRfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiQUJTT0xVVEVcIiAtPiBBQlNPTFVURVxuICB8IGBTdHJpbmcgXCJSRUxBVElWRVwiIC0+IFJFTEFUSVZFXG4gIHwgYFN0cmluZyBcIlBST0JBQklMSVRZXCIgLT4gUFJPQkFCSUxJVFlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBkaW5fa2luZFwiLCB4KSlcblxubGV0IHdyaXRlX2Rpbl9raW5kIG9iIGYgPSBZb2pzb24uQmFzaWMudG9fYnVmZmVyIG9iIChkaW5fa2luZF90b195b2pzb24gZilcblxubGV0IHN0cmluZ19vZl9kaW5fa2luZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9kaW5fa2luZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHJlYWRfZGluX2tpbmQgcCBsYiA9XG4gIGRpbl9raW5kX29mX3lvanNvbiAoWW9qc29uLkJhc2ljLmZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSBwIGxiKVxuXG5sZXQgZGluX2tpbmRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Rpbl9raW5kIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbnR5cGUgbW9kaWZpY2F0aW9uID1cbiAgfCBJVEVSX1JVTEUgb2YgYWxnX2V4cHIgTG9jLmFubm90ZWQgKiBlbGVtZW50YXJ5X3J1bGVcbiAgfCBVUERBVEUgb2YgaW50ICogYWxnX2V4cHIgTG9jLmFubm90ZWRcbiAgfCBTTkFQU0hPVCBvZiBib29sICogYWxnX2V4cHIgcHJpbnRfZXhwciBsaXN0XG4gIHwgU1RPUCBvZiBhbGdfZXhwciBwcmludF9leHByIGxpc3RcbiAgfCBDRkxPVyBvZlxuICAgICAgc3RyaW5nIG9wdGlvblxuICAgICAgKiBQYXR0ZXJuLmlkIGFycmF5XG4gICAgICAqIEluc3RhbnRpYXRpb24uYWJzdHJhY3QgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3QgbGlzdFxuICB8IERJTiBvZiBkaW5fa2luZCAqIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuICB8IERJTk9GRiBvZiBhbGdfZXhwciBwcmludF9leHByIGxpc3RcbiAgfCBDRkxPV09GRiBvZiBzdHJpbmcgb3B0aW9uICogUGF0dGVybi5pZCBhcnJheVxuICB8IFBMT1RFTlRSWVxuICB8IFBSSU5UIG9mIGFsZ19leHByIHByaW50X2V4cHIgbGlzdCAqIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuICB8IFNQRUNJRVMgb2ZcbiAgICAgIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuICAgICAgKiBQYXR0ZXJuLmlkIGFycmF5XG4gICAgICAqIEluc3RhbnRpYXRpb24uYWJzdHJhY3QgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3QgbGlzdFxuICB8IFNQRUNJRVNfT0ZGIG9mIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuXG5sZXQgcHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgcHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbikpXG4gICAgSnNvblV0aWwub2ZfaW50XG5cbmxldCBwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgPVxuICBwcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKEpzb25VdGlsLnRvX2xpc3QgKEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uKSlcbiAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSlcblxubGV0IG1vZGlmaWNhdGlvbl90b195b2pzb24gfmZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgSVRFUl9SVUxFIChuLCByKSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiSVRFUlwiO1xuICAgICAgICAoIFwicmVwZWF0c1wiLFxuICAgICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgbiApO1xuICAgICAgICBcInJ1bGVcIiwgcnVsZV90b195b2pzb24gfmZpbGVuYW1lcyByO1xuICAgICAgXVxuICB8IFVQREFURSAodiwgZSkgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIlVQREFURVwiO1xuICAgICAgICBcInZhclwiLCBgSW50IHY7XG4gICAgICAgICggXCJ2YWx1ZVwiLFxuICAgICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZSApO1xuICAgICAgXVxuICB8IFNOQVBTSE9UIChyYXcsIGYpIC0+XG4gICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCI7XG4gICAgICAgIFwicmF3XCIsIGBCb29sIHJhdztcbiAgICAgICAgXCJmaWxlXCIsIEpzb25VdGlsLm9mX2xpc3QgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZjtcbiAgICAgIF1cbiAgfCBTVE9QIGYgLT5cbiAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiU1RPUFwiO1xuICAgICAgICBcImZpbGVcIiwgSnNvblV0aWwub2ZfbGlzdCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBmO1xuICAgICAgXVxuICB8IENGTE9XIChuYW1lLCBpZHMsIHRlc3RzKSAtPlxuICAgIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJDRkxPV1wiO1xuICAgICAgICBcIm5hbWVcIiwgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX3N0cmluZyBuYW1lO1xuICAgICAgICBcInBhdHRlcm5cIiwgSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24gaWRzO1xuICAgICAgICAoIFwidGVzdHNcIixcbiAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAoSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24udGVzdF90b19qc29uIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbikpXG4gICAgICAgICAgICB0ZXN0cyApO1xuICAgICAgXVxuICB8IENGTE9XT0ZGIChuYW1lLCBpZHMpIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJDRkxPV09GRlwiO1xuICAgICAgICBcIm5hbWVcIiwgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX3N0cmluZyBuYW1lO1xuICAgICAgICBcInBhdHRlcm5cIiwgSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24gaWRzO1xuICAgICAgXVxuICB8IERJTiAoa2luZCwgZikgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTlwiO1xuICAgICAgICBcImtpbmRcIiwgZGluX2tpbmRfdG9feW9qc29uIGtpbmQ7XG4gICAgICAgIFwiZmlsZVwiLCBgTGlzdCAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZik7XG4gICAgICBdXG4gIHwgRElOT0ZGIGYgLT5cbiAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOT0ZGXCI7XG4gICAgICAgIFwiZmlsZVwiLCBKc29uVXRpbC5vZl9saXN0IChwcmludF90X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIGY7XG4gICAgICBdXG4gIHwgUExPVEVOVFJZIC0+IGBBc3NvYyBbIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQTE9UTk9XXCIgXVxuICB8IFBSSU5UIChmLCB0KSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIjtcbiAgICAgICAgXCJ0ZXh0XCIsIGBMaXN0IChMaXN0Lm1hcCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSB0KTtcbiAgICAgICAgXCJmaWxlXCIsIGBMaXN0IChMaXN0Lm1hcCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBmKTtcbiAgICAgIF1cbiAgfCBTUEVDSUVTIChmLCBpZHMsIHRlc3RzKSAtPlxuICAgIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTUEVDSUVTXCI7XG4gICAgICAgIFwiZmlsZVwiLCBgTGlzdCAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZik7XG4gICAgICAgIFwicGF0dGVyblwiLCBKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbiBpZHM7XG4gICAgICAgICggXCJ0ZXN0c1wiLFxuICAgICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAgIChKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi50ZXN0X3RvX2pzb24gTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uKSlcbiAgICAgICAgICAgIHRlc3RzICk7XG4gICAgICBdXG4gIHwgU1BFQ0lFU19PRkYgZiAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiU1BFQ0lFU19PRkZcIjtcbiAgICAgICAgXCJmaWxlXCIsIGBMaXN0IChMaXN0Lm1hcCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBmKTtcbiAgICAgIF1cblxubGV0IG1vZGlmaWNhdGlvbl9vZl95b2pzb24gfmZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwidGV4dFwiLCBgTGlzdCB0KSBdXG4gIHwgYEFzc29jIFsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiZmlsZVwiLCBgTGlzdCBmKSBdXG4gIHwgYEFzc29jIFsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwiZmlsZVwiLCBgTGlzdCBmKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwidGV4dFwiLCBgTGlzdCB0KSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKSBdXG4gICAgLT5cbiAgICBQUklOVFxuICAgICAgKCBMaXN0Lm1hcCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBmLFxuICAgICAgICBMaXN0Lm1hcCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSB0IClcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwidGV4dFwiLCBgTGlzdCB0KSBdXG4gIHwgYEFzc29jIFsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcInRleHRcIiwgYExpc3QgdCk7IChcImZpbGVcIiwgYE51bGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJ0ZXh0XCIsIGBMaXN0IHQpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcInRleHRcIiwgYExpc3QgdCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJ0ZXh0XCIsIGBMaXN0IHQpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJ0ZXh0XCIsIGBMaXN0IHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJ0ZXh0XCIsIGBMaXN0IHQpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpIF0gLT5cbiAgICBQUklOVCAoW10sIExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIHQpXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5cIik7IChcImZpbGVcIiwgYExpc3QgZik7IChcImtpbmRcIiwga2luZCkgXVxuICB8IGBBc3NvYyBbIChcImtpbmRcIiwga2luZCk7IChcImZpbGVcIiwgYExpc3QgZik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTlwiKTsgKFwia2luZFwiLCBraW5kKTsgKFwiZmlsZVwiLCBgTGlzdCBmKSBdXG4gIHwgYEFzc29jIFsgKFwia2luZFwiLCBraW5kKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5cIik7IChcImZpbGVcIiwgYExpc3QgZikgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYExpc3QgZik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOXCIpOyAoXCJraW5kXCIsIGtpbmQpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBMaXN0IGYpOyAoXCJraW5kXCIsIGtpbmQpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTlwiKSBdIC0+XG4gICAgRElOIChkaW5fa2luZF9vZl95b2pzb24ga2luZCwgTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgZilcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlVQREFURVwiKTsgKFwidmFyXCIsIGBJbnQgdik7IChcInZhbHVlXCIsIGUpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YXJcIiwgYEludCB2KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJVUERBVEVcIik7IChcInZhbHVlXCIsIGUpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlVQREFURVwiKTsgKFwidmFsdWVcIiwgZSk7IChcInZhclwiLCBgSW50IHYpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YXJcIiwgYEludCB2KTsgKFwidmFsdWVcIiwgZSk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiVVBEQVRFXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YWx1ZVwiLCBlKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJVUERBVEVcIik7IChcInZhclwiLCBgSW50IHYpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YWx1ZVwiLCBlKTsgKFwidmFyXCIsIGBJbnQgdik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiVVBEQVRFXCIpIF0gLT5cbiAgICBVUERBVEVcbiAgICAgICh2LCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGUpXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJJVEVSXCIpOyAoXCJyZXBlYXRzXCIsIG4pOyAoXCJydWxlXCIsIHIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIklURVJcIik7IChcInJ1bGVcIiwgcik7IChcInJlcGVhdHNcIiwgbikgXVxuICB8IGBBc3NvYyBbIChcInJlcGVhdHNcIiwgbik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiSVRFUlwiKTsgKFwicnVsZVwiLCByKSBdXG4gIHwgYEFzc29jIFsgKFwicnVsZVwiLCByKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJJVEVSXCIpOyAoXCJyZXBlYXRzXCIsIG4pIF1cbiAgfCBgQXNzb2MgWyAoXCJyZXBlYXRzXCIsIG4pOyAoXCJydWxlXCIsIHIpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIklURVJcIikgXVxuICB8IGBBc3NvYyBbIChcInJ1bGVcIiwgcik7IChcInJlcGVhdHNcIiwgbik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiSVRFUlwiKSBdIC0+XG4gICAgSVRFUl9SVUxFXG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChhbGdfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgbixcbiAgICAgICAgcnVsZV9vZl95b2pzb24gfmZpbGVuYW1lcyByIClcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBMT1ROT1dcIikgXSAtPiBQTE9URU5UUllcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTk9GRlwiKTsgKFwiZmlsZVwiLCBgTGlzdCBsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTGlzdCBsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5PRkZcIikgXSAtPlxuICAgIERJTk9GRiAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgbClcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTk9GRlwiKTsgKFwiZmlsZVwiLCBgTnVsbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTk9GRlwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5PRkZcIikgXSAtPlxuICAgIERJTk9GRiBbXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcImZpbGVcIiwgYExpc3QgbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYExpc3QgbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXSAtPlxuICAgIFNOQVBTSE9UIChmYWxzZSwgTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgbClcbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcImZpbGVcIiwgYExpc3QgbCkgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiZmlsZVwiLCBgTGlzdCBsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJmaWxlXCIsIGBMaXN0IGwpIF1cbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwiZmlsZVwiLCBgTGlzdCBsKTsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGwpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImZpbGVcIiwgYExpc3QgbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcInJhd1wiLCBgQm9vbCByYXcpIF1cbiAgICAtPlxuICAgIFNOQVBTSE9UIChyYXcsIExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGwpXG4gIHwgYEFzc29jXG4gICAgICBbIChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcImZpbGVcIiwgYE51bGwpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KSBdXG4gIHwgYEFzc29jIFsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcInJhd1wiLCBgQm9vbCByYXcpIF0gLT5cbiAgICBTTkFQU0hPVCAocmF3LCBbXSlcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXSAtPlxuICAgIFNOQVBTSE9UIChmYWxzZSwgW10pXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTVE9QXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBMaXN0IGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNUT1BcIikgXSAtPlxuICAgIFNUT1AgKExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGwpXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTVE9QXCIpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU1RPUFwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTVE9QXCIpIF0gLT5cbiAgICBTVE9QIFtdXG4gIHwgYEFzc29jIF8gYXMgbCB3aGVuIFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImFjdGlvblwiIGwgPSBgU3RyaW5nIFwiQ0ZMT1dcIiAtPlxuICAgIENGTE9XXG4gICAgICAoIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJuYW1lXCIgbCksXG4gICAgICAgIEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInBhdHRlcm5cIiBsKSxcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgKEluc3RhbnRpYXRpb24udGVzdF9vZl9qc29uIE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbikpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInRlc3RzXCIgbCkgKVxuICB8IGBBc3NvYyBfIGFzIGwgd2hlbiBZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJhY3Rpb25cIiBsID0gYFN0cmluZyBcIkNGTE9XT0ZGXCJcbiAgICAtPlxuICAgIENGTE9XT0ZGXG4gICAgICAoIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJuYW1lXCIgbCksXG4gICAgICAgIEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInBhdHRlcm5cIiBsKSApXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTUEVDSUVTX09GRlwiKTsgKFwiZmlsZVwiLCBwKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBwKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTUEVDSUVTX09GRlwiKSBdIC0+XG4gICAgU1BFQ0lFU19PRkYgKEpzb25VdGlsLnRvX2xpc3QgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgcClcbiAgfCBgQXNzb2MgXyBhcyBsIHdoZW4gWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiYWN0aW9uXCIgbCA9IGBTdHJpbmcgXCJTUEVDSUVTXCJcbiAgICAtPlxuICAgIFNQRUNJRVNcbiAgICAgICggSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImZpbGVcIiBsKSxcbiAgICAgICAgSnNvblV0aWwudG9fYXJyYXkgUGF0dGVybi5pZF9vZl95b2pzb25cbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwicGF0dGVyblwiIGwpLFxuICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi50ZXN0X29mX2pzb24gTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uKSlcbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwidGVzdHNcIiBsKSApXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIG1vZGlmaWNhdGlvblwiLCB4KSlcblxudHlwZSBwZXJ0dXJiYXRpb24gPSB7XG4gIGFsYXJtOiBOYnIudCBvcHRpb247XG4gIHByZWNvbmRpdGlvbjogKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkO1xuICBlZmZlY3Q6IG1vZGlmaWNhdGlvbiBsaXN0O1xuICByZXBlYXQ6IChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZDtcbiAgbmVlZHNfYmFja3RyYWNrOiBib29sO1xufVxuXG5sZXQgYm9vbF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgQWxnX2V4cHIuYm9vbF90b195b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbikpXG4gICAgSnNvblV0aWwub2ZfaW50XG5cbmxldCBib29sX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgPVxuICBBbGdfZXhwci5ib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKEpzb25VdGlsLnRvX2xpc3QgKEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uKSlcbiAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSlcblxubGV0IHBlcnR1cmJhdGlvbl90b195b2pzb24gfmZpbGVuYW1lcyBwID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgXCJhbGFybVwiLCBKc29uVXRpbC5vZl9vcHRpb24gKGZ1biBuIC0+IE5ici50b195b2pzb24gbikgcC5hbGFybTtcbiAgICAgICggXCJjb25kaXRpb25cIixcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgIHAucHJlY29uZGl0aW9uICk7XG4gICAgICBcImVmZmVjdFwiLCBKc29uVXRpbC5vZl9saXN0IChtb2RpZmljYXRpb25fdG9feW9qc29uIH5maWxlbmFtZXMpIHAuZWZmZWN0O1xuICAgICAgKCBcInJlcGVhdFwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChib29sX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgcC5yZXBlYXQgKTtcbiAgICAgIFwibmVlZHNfYmFja3RyYWNrXCIsIGBCb29sIHAubmVlZHNfYmFja3RyYWNrO1xuICAgIF1cblxubGV0IHBlcnR1cmJhdGlvbl9vZl95b2pzb24gfmZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA1IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIGFsYXJtID0gSnNvblV0aWwudG9fb3B0aW9uIE5ici5vZl95b2pzb24gKExpc3QuYXNzb2MgXCJhbGFybVwiIGwpO1xuICAgICAgICAgcHJlY29uZGl0aW9uID1cbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoYm9vbF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwiY29uZGl0aW9uXCIgbCk7XG4gICAgICAgICBlZmZlY3QgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgKG1vZGlmaWNhdGlvbl9vZl95b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImVmZmVjdFwiIGwpO1xuICAgICAgICAgcmVwZWF0ID1cbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoYm9vbF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwicmVwZWF0XCIgbCk7XG4gICAgICAgICBuZWVkc19iYWNrdHJhY2sgPVxuICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IGBCb29sIGIgLT4gYlxuICAgICAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgYm9vbFwiLCB4KSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJuZWVkc19iYWNrdHJhY2tcIiBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBwZXJ0dXJiYXRpb25cIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBwZXJ0dXJiYXRpb25cIiwgeCkpXG5cbmxldCBleGlzdHNfbW9kaWZpY2F0aW9uIGNoZWNrIGwgPVxuICBBcnJheS5mb2xkX2xlZnQgKGZ1biBhY2MgcCAtPiBhY2MgfHwgTGlzdC5leGlzdHMgY2hlY2sgcC5lZmZlY3QpIGZhbHNlIGxcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhY2MgZSA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIGEgLT4gTGlzdC5yZXZfYXBwZW5kIChBcnJheS50b19saXN0IGEpIGFjYykpXG4gICAgYWNjXG4gICAgKEFsZ19leHByLmV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHMgZSlcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfYm9vbCBlID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgYSAtPiBMaXN0LnJldl9hcHBlbmQgKEFycmF5LnRvX2xpc3QgYSkgYWNjKSlcbiAgICBbXVxuICAgIChBbGdfZXhwci5leHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2Jvb2wgZSlcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcnVsZSBhY2MgciA9XG4gIGxldCBhID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgKHgsIF8pIC0+IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhY2MgeClcbiAgICAgIGFjYyByLmRlbHRhX3Rva2Vuc1xuICBpblxuICBsZXQgYiA9XG4gICAgbWF0Y2ggci51bmFyeV9yYXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gYVxuICAgIHwgU29tZSAoeCwgXykgLT4gZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19leHByIGEgeFxuICBpblxuICBsZXQgYyA9IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBiIHIucmF0ZSBpblxuICBMaXN0LnJldl9hcHBlbmQgKEFycmF5LnRvX2xpc3Qgci5jb25uZWN0ZWRfY29tcG9uZW50cykgY1xuXG5sZXQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19wcmludCBhY2MgeCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgIHwgU3RyX3BleHByIF8gLT4gYWNjXG4gICAgICB8IEFsZ19wZXhwciBlIC0+IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhY2MgZSlcbiAgICBhY2MgeFxuXG5sZXQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19tb2RpZmljYXRpb24gYWNjID0gZnVuY3Rpb25cbiAgfCBJVEVSX1JVTEUgKGUsIHIpIC0+XG4gICAgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19ydWxlXG4gICAgICAoZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19leHByIGFjYyBlKVxuICAgICAgclxuICB8IFVQREFURSAoXywgZSkgLT4gZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19leHByIGFjYyBlXG4gIHwgU05BUFNIT1QgKF8sIHApIHwgU1RPUCBwIHwgU1BFQ0lFU19PRkYgcCB8IERJTiAoXywgcCkgfCBESU5PRkYgcCAtPlxuICAgIGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcHJpbnQgYWNjIHBcbiAgfCBQUklOVCAoZm4sIHApIC0+XG4gICAgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19wcmludFxuICAgICAgKGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcHJpbnQgYWNjIHApXG4gICAgICBmblxuICB8IENGTE9XIChfLCB4LCBfKSB8IENGTE9XT0ZGIChfLCB4KSB8IFNQRUNJRVMgKF8sIHgsIF8pIC0+XG4gICAgTGlzdC5yZXZfYXBwZW5kIChBcnJheS50b19saXN0IHgpIGFjY1xuICB8IFBMT1RFTlRSWSAtPiBhY2NcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfbW9kaWZpY2F0aW9ucyBsID1cbiAgTGlzdC5mb2xkX2xlZnQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19tb2RpZmljYXRpb24gW10gbFxuXG5sZXQgbWFwX2V4cHJfcnVsZSBmIHggPVxuICB7XG4gICAgcmF0ZSA9IGYgeC5yYXRlO1xuICAgIHVuYXJ5X3JhdGUgPSBPcHRpb25fdXRpbC5tYXAgKGZ1biAoeCwgZCkgLT4gZiB4LCBkKSB4LnVuYXJ5X3JhdGU7XG4gICAgY29ubmVjdGVkX2NvbXBvbmVudHMgPSB4LmNvbm5lY3RlZF9jb21wb25lbnRzO1xuICAgIHJlbW92ZWQgPSB4LnJlbW92ZWQ7XG4gICAgaW5zZXJ0ZWQgPSB4Lmluc2VydGVkO1xuICAgIGRlbHRhX3Rva2VucyA9IExpc3QubWFwIChmdW4gKHgsIHQpIC0+IGYgeCwgdCkgeC5kZWx0YV90b2tlbnM7XG4gICAgc3ludGFjdGljX3J1bGUgPSB4LnN5bnRhY3RpY19ydWxlO1xuICAgIGluc3RhbnRpYXRpb25zID0geC5pbnN0YW50aWF0aW9ucztcbiAgfVxuXG5sZXQgZm9sZF9leHByX3J1bGUgZiB4IHIgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjICh5LCBfKSAtPiBmIGFjYyB5KVxuICAgIChPcHRpb25fdXRpbC5mb2xkIChmdW4gYSAoZSwgXykgLT4gZiBhIGUpIChmIHggci5yYXRlKSByLnVuYXJ5X3JhdGUpXG4gICAgci5kZWx0YV90b2tlbnNcblxubGV0IG1hcF9leHByX21vZGlmaWNhdGlvbiBmID0gZnVuY3Rpb25cbiAgfCBJVEVSX1JVTEUgKGUsIHIpIC0+IElURVJfUlVMRSAoZiBlLCBtYXBfZXhwcl9ydWxlIGYgcilcbiAgfCBVUERBVEUgKGksIGUpIC0+IFVQREFURSAoaSwgZiBlKVxuICB8IFNOQVBTSE9UIChyYXcsIHApIC0+IFNOQVBTSE9UIChyYXcsIG1hcF9leHByX3ByaW50IGYgcClcbiAgfCBTVE9QIHAgLT4gU1RPUCAobWFwX2V4cHJfcHJpbnQgZiBwKVxuICB8IFBSSU5UIChmbiwgcCkgLT4gUFJJTlQgKG1hcF9leHByX3ByaW50IGYgZm4sIG1hcF9leHByX3ByaW50IGYgcClcbiAgfCBESU4gKGIsIHApIC0+IERJTiAoYiwgbWFwX2V4cHJfcHJpbnQgZiBwKVxuICB8IERJTk9GRiBwIC0+IERJTk9GRiAobWFwX2V4cHJfcHJpbnQgZiBwKVxuICB8IChDRkxPVyBfIHwgQ0ZMT1dPRkYgXyB8IFNQRUNJRVNfT0ZGIF8gfCBQTE9URU5UUlkpIGFzIHggLT4geFxuICB8IFNQRUNJRVMgKHAsIHgsIHQpIC0+IFNQRUNJRVMgKG1hcF9leHByX3ByaW50IGYgcCwgeCwgdClcblxubGV0IGZvbGRfZXhwcl9tb2RpZmljYXRpb24gZiB4ID0gZnVuY3Rpb25cbiAgfCBJVEVSX1JVTEUgKGUsIHIpIC0+IGZvbGRfZXhwcl9ydWxlIGYgKGYgeCBlKSByXG4gIHwgVVBEQVRFIChfLCBlKSAtPiBmIHggZVxuICB8IFNOQVBTSE9UIChfLCBwKSAtPiBmb2xkX2V4cHJfcHJpbnQgZiB4IHBcbiAgfCBTVE9QIHAgLT4gZm9sZF9leHByX3ByaW50IGYgeCBwXG4gIHwgUFJJTlQgKGZuLCBwKSAtPiBmb2xkX2V4cHJfcHJpbnQgZiAoZm9sZF9leHByX3ByaW50IGYgeCBwKSBmblxuICB8IERJTiAoXywgcCkgLT4gZm9sZF9leHByX3ByaW50IGYgeCBwXG4gIHwgRElOT0ZGIHAgLT4gZm9sZF9leHByX3ByaW50IGYgeCBwXG4gIHwgQ0ZMT1cgXyB8IENGTE9XT0ZGIF8gfCBTUEVDSUVTX09GRiBfIHwgUExPVEVOVFJZIC0+IHhcbiAgfCBTUEVDSUVTIChwLCBfLCBfKSAtPiBmb2xkX2V4cHJfcHJpbnQgZiB4IHBcblxubGV0IG1hcF9leHByX3BlcnR1cmJhdGlvbiBmX2FsZyBmX2Jvb2wgeCA9XG4gIHtcbiAgICBhbGFybSA9IHguYWxhcm07XG4gICAgcHJlY29uZGl0aW9uID0gZl9ib29sIHgucHJlY29uZGl0aW9uO1xuICAgIGVmZmVjdCA9IExpc3QubWFwIChtYXBfZXhwcl9tb2RpZmljYXRpb24gZl9hbGcpIHguZWZmZWN0O1xuICAgIHJlcGVhdCA9IGZfYm9vbCB4LnJlcGVhdDtcbiAgICBuZWVkc19iYWNrdHJhY2sgPSB4Lm5lZWRzX2JhY2t0cmFjaztcbiAgfVxuXG5sZXQgZm9sZF9leHByX3BlcnR1cmJhdGlvbiBmX2FsZyBmX2Jvb2wgYWNjIHggPVxuICBsZXQgYTEgPSBmX2Jvb2wgYWNjIHgucHJlY29uZGl0aW9uIGluXG4gIGxldCBhMiA9IExpc3QuZm9sZF9sZWZ0IChmb2xkX2V4cHJfbW9kaWZpY2F0aW9uIGZfYWxnKSBhMSB4LmVmZmVjdCBpblxuICBmX2Jvb2wgYTIgeC5yZXBlYXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnYW5ub3QpIGxpbmsgPVxuICB8IEFOWV9GUkVFXG4gIHwgTE5LX1ZBTFVFIG9mIGludCAqICdhbm5vdFxuICB8IExOS19GUkVFXG4gIHwgTE5LX0FOWVxuICB8IExOS19TT01FXG4gIHwgTE5LX1RZUEUgb2YgJ2EgKiAnYSAgKCoqIHBvcnQgKiBhZ2VudF90eXBlICopXG5cbnR5cGUgc3dpdGNoaW5nID0gTGlua2VkIG9mIGludCB8IEZyZWVkIHwgTWFpbnRhaW5lZCB8IEVyYXNlZFxuXG50eXBlIHJ1bGVfaW50ZXJuYWwgPVxuICB8IElfQU5ZXG4gIHwgSV9BTllfQ0hBTkdFRCBvZiBpbnRcbiAgfCBJX0FOWV9FUkFTRURcbiAgfCBJX1ZBTF9DSEFOR0VEIG9mIGludCAqIGludFxuICB8IElfVkFMX0VSQVNFRCBvZiBpbnRcblxudHlwZSBydWxlX2FnZW50ID0ge1xuICByYV90eXBlOiBpbnQ7XG4gIHJhX2VyYXNlZDogYm9vbDtcbiAgcmFfcG9ydHM6ICgoaW50LCBpbnQgKiBpbnQpIGxpbmsgTG9jLmFubm90ZWQgKiBzd2l0Y2hpbmcpIGFycmF5O1xuICByYV9pbnRzOiBydWxlX2ludGVybmFsIGFycmF5O1xuICByYV9zeW50YXg6XG4gICAgKCgoaW50LCBpbnQgKiBpbnQpIGxpbmsgTG9jLmFubm90ZWQgKiBzd2l0Y2hpbmcpIGFycmF5XG4gICAgKiBydWxlX2ludGVybmFsIGFycmF5KVxuICAgIG9wdGlvbjtcbn1cblxudHlwZSBydWxlX21peHR1cmUgPSBydWxlX2FnZW50IGxpc3RcblxudHlwZSBydWxlID0ge1xuICByX21peDogcnVsZV9taXh0dXJlO1xuICByX2NyZWF0ZWQ6IFJhd19taXh0dXJlLnQ7XG4gIHJfZGVsdGFfdG9rZW5zOiAoKHJ1bGVfbWl4dHVyZSwgaW50KSBBbGdfZXhwci5lIExvYy5hbm5vdGVkICogaW50KSBsaXN0O1xuICByX3JhdGU6IChydWxlX21peHR1cmUsIGludCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZDtcbiAgcl91bl9yYXRlOlxuICAgICgocnVsZV9taXh0dXJlLCBpbnQpIEFsZ19leHByLmUgTG9jLmFubm90ZWRcbiAgICAqIChydWxlX21peHR1cmUsIGludCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCBvcHRpb24pXG4gICAgb3B0aW9uO1xuICByX2VkaXRfc3R5bGU6IGJvb2w7XG59XG5cbmxldCBwcmludF9saW5rIHByX3BvcnQgcHJfdHlwZSBwcl9hbm5vdCBmID0gZnVuY3Rpb25cbiAgfCBBTllfRlJFRSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIjXCJcbiAgfCBMTktfVFlQRSAocCwgYSkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVhLiVhXCIgKHByX3BvcnQgYSkgcCBwcl90eXBlIGFcbiAgfCBMTktfQU5ZIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiNcIlxuICB8IExOS19GUkVFIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi5cIlxuICB8IExOS19TT01FIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIl9cIlxuICB8IExOS19WQUxVRSAoaSwgYSkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVpJWFcIiBpIHByX2Fubm90IGFcblxubGV0IGxpbmtfdG9fanNvbiBwb3J0X3RvX2pzb24gdHlwZV90b19qc29uIGFubm90X3RvX2pzb24gPSBmdW5jdGlvblxuICB8IEFOWV9GUkVFIC0+IGBTdHJpbmcgXCJBTllfRlJFRVwiXG4gIHwgTE5LX0ZSRUUgLT4gYFN0cmluZyBcIkZSRUVcIlxuICB8IExOS19UWVBFIChwLCBhKSAtPiBgTGlzdCBbIHBvcnRfdG9fanNvbiBhIHA7IHR5cGVfdG9fanNvbiBhIF1cbiAgfCBMTktfQU5ZIC0+IGBOdWxsXG4gIHwgTE5LX1NPTUUgLT4gYFN0cmluZyBcIlNPTUVcIlxuICB8IExOS19WQUxVRSAoaSwgYSkgLT4gYExpc3QgKGBJbnQgaSA6OiBhbm5vdF90b19qc29uIGEpXG5cbmxldCBsaW5rX29mX2pzb24gcG9ydF9vZl9qc29uIHR5cGVfb2ZfanNvbiBhbm5vdGVkX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJBTllfRlJFRVwiIC0+IEFOWV9GUkVFXG4gIHwgYFN0cmluZyBcIkZSRUVcIiAtPiBMTktfRlJFRVxuICB8IGBMaXN0IFsgcDsgYSBdIC0+XG4gICAgbGV0IHggPSB0eXBlX29mX2pzb24gYSBpblxuICAgIExOS19UWVBFIChwb3J0X29mX2pzb24geCBwLCB4KVxuICB8IGBOdWxsIC0+IExOS19BTllcbiAgfCBgU3RyaW5nIFwiU09NRVwiIC0+IExOS19TT01FXG4gIHwgYExpc3QgKGBJbnQgaSA6OiAoKFtdIHwgXyA6OiBfIDo6IF8pIGFzIGEpKSAtPlxuICAgIExOS19WQUxVRSAoaSwgYW5ub3RlZF9vZl9qc29uIGEpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgbGlua1wiLCB4KSlcblxubGV0IHByaW50X2xpbmtfYW5ub3Qgfmx0eXBlcyBzaWdzIGYgKHMsIGEpID1cbiAgaWYgbHR5cGVzIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiLyolYS4lYSovXCJcbiAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGEpXG4gICAgICBzXG4gICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICBhXG5cbmxldCBwcmludF9ydWxlX2ludGVybmFsIHNpZ3MgfnNob3dfZXJhc2VkIGFnX3R5IHNpdGUgZiA9IGZ1bmN0aW9uXG4gIHwgSV9BTlkgLT4gKClcbiAgfCBJX0FOWV9DSEFOR0VEIGogLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwieyMvJWF9XCIgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpIGpcbiAgfCBJX0FOWV9FUkFTRUQgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwieyMldH1cIiAoZnVuIGYgLT5cbiAgICAgICAgaWYgc2hvd19lcmFzZWQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCItLVwiKVxuICB8IElfVkFMX0NIQU5HRUQgKGksIGopIC0+XG4gICAgaWYgaSA8PiBqIHRoZW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWEvJWF9XCJcbiAgICAgICAgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpXG4gICAgICAgIGlcbiAgICAgICAgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpXG4gICAgICAgIGpcbiAgICBlbHNlXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhfVwiIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlKSBpXG4gIHwgSV9WQUxfRVJBU0VEIGkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhJXR9XCIgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpIGlcbiAgICAgIChmdW4gZiAtPiBpZiBzaG93X2VyYXNlZCB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi0tXCIpXG5cbmxldCBydWxlX2ludGVybmFsX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IElfQU5ZIC0+IGBOdWxsXG4gIHwgSV9BTllfQ0hBTkdFRCBqIC0+IGBMaXN0IFsgYFN0cmluZyBcIkFOWVwiOyBgSW50IGogXVxuICB8IElfQU5ZX0VSQVNFRCAtPiBgU3RyaW5nIFwiRVJBU0VEXCJcbiAgfCBJX1ZBTF9DSEFOR0VEIChpLCBqKSAtPiBgTGlzdCBbIGBJbnQgaTsgYEludCBqIF1cbiAgfCBJX1ZBTF9FUkFTRUQgaSAtPiBgTGlzdCBbIGBJbnQgaTsgYFN0cmluZyBcIkVSQVNFRFwiIF1cblxubGV0IHJ1bGVfaW50ZXJuYWxfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gSV9BTllcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJBTllcIjsgYEludCBqIF0gLT4gSV9BTllfQ0hBTkdFRCBqXG4gIHwgYFN0cmluZyBcIkVSQVNFRFwiIC0+IElfQU5ZX0VSQVNFRFxuICB8IGBMaXN0IFsgYEludCBpOyBgSW50IGogXSAtPiBJX1ZBTF9DSEFOR0VEIChpLCBqKVxuICB8IGBMaXN0IFsgYEludCBpOyBgU3RyaW5nIFwiRVJBU0VEXCIgXSAtPiBJX1ZBTF9FUkFTRUQgaVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiVW5jb3JyZWN0IHJ1bGVfaW50ZXJuYWxcIiwgeCkpXG5cbmxldCBwcmludF9zd2l0Y2hpbmcgfnNob3dfZXJhc2VkIGYgPSBmdW5jdGlvblxuICB8IExpbmtlZCBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIvJWlcIiBpXG4gIHwgRnJlZWQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLy5cIlxuICB8IE1haW50YWluZWQgLT4gKClcbiAgfCBFcmFzZWQgLT4gaWYgc2hvd19lcmFzZWQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCItLVwiXG5cbmxldCBzd2l0Y2hpbmdfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgRnJlZWQgLT4gYFN0cmluZyBcIkZyZWVkXCJcbiAgfCBNYWludGFpbmVkIC0+IGBTdHJpbmcgXCJNYWludGFpbmVkXCJcbiAgfCBFcmFzZWQgLT4gYFN0cmluZyBcIkVyYXNlZFwiXG4gIHwgTGlua2VkIGkgLT4gSnNvblV0aWwub2ZfaW50IGlcblxubGV0IHN3aXRjaGluZ19vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiRnJlZWRcIiAtPiBGcmVlZFxuICB8IGBTdHJpbmcgXCJNYWludGFpbmVkXCIgLT4gTWFpbnRhaW5lZFxuICB8IGBTdHJpbmcgXCJFcmFzZWRcIiAtPiBFcmFzZWRcbiAgfCB4IC0+IExpbmtlZCAoSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2c6XCJJbnZhbGlkIFN3aXRjaGluZ1wiIHgpXG5cbmxldCBwcmludF9ydWxlX2xpbmsgc2lncyB+c2hvd19lcmFzZWQgfmx0eXBlcyBmICgoZSwgXyksIHMpID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIlslYSVhXVwiXG4gICAgKHByaW50X2xpbmtcbiAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncylcbiAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgKHByaW50X2xpbmtfYW5ub3Qgfmx0eXBlcyBzaWdzKSlcbiAgICBlXG4gICAgKHByaW50X3N3aXRjaGluZyB+c2hvd19lcmFzZWQpXG4gICAgc1xuXG5sZXQgcHJpbnRfY291bnRlcl90ZXN0IGYgPSBmdW5jdGlvblxuICB8IGMsIHRydWUgLT4gRm9ybWF0LmZwcmludGYgZiBcIj0laVwiIGNcbiAgfCBjLCBmYWxzZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiPj0laVwiIGNcblxubGV0IHByaW50X2NvdW50ZXJfZGVsdGEgY291bnRlcnMgaiBmIHN3aXRjaCA9XG4gIG1hdGNoIHN3aXRjaCB3aXRoXG4gIHwgTGlua2VkIGkgLT5cbiAgICBsZXQgcm9vdCA9IFJhd19taXh0dXJlLmZpbmQgY291bnRlcnMgaSBpblxuICAgIGxldCBzLCAoXywgaXNfY291bnRlcikgPSBNb2RzLkR5bkFycmF5LmdldCBjb3VudGVycy5SYXdfbWl4dHVyZS5yYW5rIHJvb3QgaW5cbiAgICBsZXQgZGVsdGEgPVxuICAgICAgaWYgaXNfY291bnRlciB0aGVuXG4gICAgICAgIHMgLSAxXG4gICAgICBlbHNlXG4gICAgICAgIGogLSBpXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiLys9JWRcIiBkZWx0YVxuICB8IEZyZWVkIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJDYW5ub3QgZXJhc2UgYWxsIGluY3JlbWVudCBhZ2VudHNcIikpXG4gIHwgTWFpbnRhaW5lZCAtPiAoKVxuICB8IEVyYXNlZCAtPiAoKVxuXG5sZXQgcHJpbnRfcnVsZV9pbnRmIH5ub0NvdW50ZXJzIHNpZ3MgfnNob3dfZXJhc2VkIH5sdHlwZXMgYWdfdHkgZlxuICAgIChwb3J0cywgaW50cywgY291bnRlcnMsIGNyZWF0ZWRfY291bnRlcnMpID1cbiAgbGV0IHJlYyBhdXggZW1wdHkgaSA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuXG4gICAgICBpZlxuICAgICAgICBtYXRjaCBwb3J0cy4oaSkgd2l0aFxuICAgICAgICB8IChMTktfQU5ZLCBfKSwgTWFpbnRhaW5lZCAtPiBpbnRzLihpKSA8PiBJX0FOWVxuICAgICAgICB8IChMTktfQU5ZLCBfKSwgKEVyYXNlZCB8IEZyZWVkIHwgTGlua2VkIF8pXG4gICAgICAgIHwgKChMTktfU09NRSB8IEFOWV9GUkVFIHwgTE5LX0ZSRUUgfCBMTktfVFlQRSBfIHwgTE5LX1ZBTFVFIF8pLCBfKSwgXyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgKGUsIF8pLCBzd2l0Y2ggPSBwb3J0cy4oaSkgaW5cbiAgICAgICAgbGV0IGlzX2NvdW50ZXIgPVxuICAgICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICAgIHwgQU5ZX0ZSRUUgfCBMTktfRlJFRSB8IExOS19BTlkgfCBMTktfVFlQRSBfIHwgTE5LX1NPTUUgLT4gZmFsc2VcbiAgICAgICAgICB8IExOS19WQUxVRSAoaiwgXykgLT5cbiAgICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgIGxldCByb290ID0gUmF3X21peHR1cmUuZmluZCBjb3VudGVycyBqIGluXG4gICAgICAgICAgICAgICBsZXQgYywgKGVxLCBpc19jb3VudGVyJykgPVxuICAgICAgICAgICAgICAgICBNb2RzLkR5bkFycmF5LmdldCBjb3VudGVycy5SYXdfbWl4dHVyZS5yYW5rIHJvb3RcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBpZiBpc19jb3VudGVyJyAmJiBub3Qgbm9Db3VudGVycyB0aGVuIChcbiAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWF7JWElYX1cIlxuICAgICAgICAgICAgICAgICAgIChpZiBlbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgUHAuZW1wdHlcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIFBwLnNwYWNlKVxuICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnX3R5KVxuICAgICAgICAgICAgICAgICAgIGkgcHJpbnRfY291bnRlcl90ZXN0XG4gICAgICAgICAgICAgICAgICAgKGMgLSAxLCBlcSlcbiAgICAgICAgICAgICAgICAgICAocHJpbnRfY291bnRlcl9kZWx0YSBjcmVhdGVkX2NvdW50ZXJzIGopXG4gICAgICAgICAgICAgICAgICAgc3dpdGNoO1xuICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBmYWxzZSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBub3QgaXNfY291bnRlciB0aGVuXG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXQlYSVhJWFcIlxuICAgICAgICAgICAgICAoaWYgZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgICBQcC5lbXB0eVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBQcC5zcGFjZSlcbiAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWdfdHkpXG4gICAgICAgICAgICAgIGlcbiAgICAgICAgICAgICAgKHByaW50X3J1bGVfaW50ZXJuYWwgc2lncyB+c2hvd19lcmFzZWQgYWdfdHkgaSlcbiAgICAgICAgICAgICAgaW50cy4oaSlcbiAgICAgICAgICAgICAgKHByaW50X3J1bGVfbGluayBzaWdzIH5zaG93X2VyYXNlZCB+bHR5cGVzKVxuICAgICAgICAgICAgICBwb3J0cy4oaSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBhdXggZmFsc2UgKHN1Y2MgaSlcbiAgICAgICkgZWxzZVxuICAgICAgICBhdXggZW1wdHkgKHN1Y2MgaSlcbiAgaW5cbiAgYXV4IHRydWUgMFxuXG5sZXQgdW5pb25fZmluZF9jb3VudGVycyBzaWdzIG1peCA9XG4gIGxldCB0ID0gUmF3X21peHR1cmUuY3JlYXRlIDEgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gYWcgLT5cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUucG9ydHNfaWZfY291bnRlcl9hZ2VudCBzaWdzIGFnLnJhX3R5cGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSAoYmVmb3JlLCBhZnRlcikgLT5cbiAgICAgICAgICAgIGxldCAoYSwgXyksIF8gPSBhZy5yYV9wb3J0cy4oYWZ0ZXIpIGluXG4gICAgICAgICAgICBsZXQgKGIsIF8pLCBfID0gYWcucmFfcG9ydHMuKGJlZm9yZSkgaW5cbiAgICAgICAgICAgIChtYXRjaCBiIHdpdGhcbiAgICAgICAgICAgIHwgQU5ZX0ZSRUUgfCBMTktfRlJFRSB8IExOS19BTlkgfCBMTktfVFlQRSBfIHwgTE5LX1NPTUUgLT4gKClcbiAgICAgICAgICAgIHwgTE5LX1ZBTFVFIChsbmtfYiwgXykgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgICAgICAgICB8IExOS19WQUxVRSAobG5rX2EsIF8pIC0+IFJhd19taXh0dXJlLnVuaW9uIHQgbG5rX2IgbG5rX2FcbiAgICAgICAgICAgICAgfCBBTllfRlJFRSB8IExOS19GUkVFIC0+XG4gICAgICAgICAgICAgICAgbGV0IHJvb3QgPSBSYXdfbWl4dHVyZS5maW5kIHQgbG5rX2IgaW5cbiAgICAgICAgICAgICAgICBsZXQgcywgXyA9IE1vZHMuRHluQXJyYXkuZ2V0IHQuUmF3X21peHR1cmUucmFuayByb290IGluXG4gICAgICAgICAgICAgICAgTW9kcy5EeW5BcnJheS5zZXQgdC5SYXdfbWl4dHVyZS5yYW5rIHJvb3QgKHMsICh0cnVlLCB0cnVlKSlcbiAgICAgICAgICAgICAgfCBMTktfQU5ZIC0+XG4gICAgICAgICAgICAgICAgbGV0IHJvb3QgPSBSYXdfbWl4dHVyZS5maW5kIHQgbG5rX2IgaW5cbiAgICAgICAgICAgICAgICBsZXQgcywgXyA9IE1vZHMuRHluQXJyYXkuZ2V0IHQuUmF3X21peHR1cmUucmFuayByb290IGluXG4gICAgICAgICAgICAgICAgTW9kcy5EeW5BcnJheS5zZXQgdC5SYXdfbWl4dHVyZS5yYW5rIHJvb3QgKHMsIChmYWxzZSwgdHJ1ZSkpXG4gICAgICAgICAgICAgIHwgTE5LX1RZUEUgXyB8IExOS19TT01FIC0+XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiUG9ydCBhIG9mIF9fY291bnRlcl9hZ2VudCBhZ2VudCBub3Qgd2VsbCBzcGVjaWZpZWRcIikpKSkpXG4gICAgICAgIG1peFxuICBpblxuICB0XG5cbmxldCBwcmludF9ydWxlX2FnZW50IH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlcyBjb3VudGVycyBjcmVhdGVkX2NvdW50ZXJzIGYgYWcgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEoQFs8aD4lYUBdKSV0XCIgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKSBhZy5yYV90eXBlXG4gICAgKHByaW50X3J1bGVfaW50ZiB+bm9Db3VudGVycyBzaWdzIH5zaG93X2VyYXNlZDpmYWxzZSB+bHR5cGVzIGFnLnJhX3R5cGUpXG4gICAgKGFnLnJhX3BvcnRzLCBhZy5yYV9pbnRzLCBjb3VudGVycywgY3JlYXRlZF9jb3VudGVycykgKGZ1biBmIC0+XG4gICAgICBpZiBhZy5yYV9lcmFzZWQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCItXCIpXG5cbmxldCBwcmludF9ydWxlX21peHR1cmUgfm5vQ291bnRlcnMgc2lncyB+bHR5cGVzIGNyZWF0ZWQgZiBtaXggPVxuICBsZXQgY291bnRlcl9hZ2VudHMgPSB1bmlvbl9maW5kX2NvdW50ZXJzIChTb21lIHNpZ3MpIG1peCBpblxuICBsZXQgY3JlYXRlZF9pbmNyID0gUmF3X21peHR1cmUudW5pb25fZmluZF9jb3VudGVycyAoU29tZSBzaWdzKSBjcmVhdGVkIGluXG4gIGxldCByZWMgYXV4X3ByaW50IHNvbWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWYgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBoLnJhX3R5cGUgJiYgbm90IG5vQ291bnRlcnMgdGhlblxuICAgICAgICBhdXhfcHJpbnQgc29tZSB0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0ICgpID0gaWYgc29tZSB0aGVuIFBwLmNvbW1hIGYgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBwcmludF9ydWxlX2FnZW50IH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlcyBjb3VudGVyX2FnZW50cyBjcmVhdGVkX2luY3JcbiAgICAgICAgICAgIGYgaFxuICAgICAgICBpblxuICAgICAgICBhdXhfcHJpbnQgdHJ1ZSB0XG4gICAgICApXG4gIGluXG4gIGF1eF9wcmludCBmYWxzZSBtaXhcblxubGV0IHByaW50X2ludGVybmFsX2xocyBzaWdzIGFnX3R5IHNpdGUgZiA9IGZ1bmN0aW9uXG4gIHwgSV9BTlkgLT4gKClcbiAgfCBJX0FOWV9DSEFOR0VEIF8gfCBJX0FOWV9FUkFTRUQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwieyN9XCJcbiAgfCBJX1ZBTF9DSEFOR0VEIChpLCBfKSB8IElfVkFMX0VSQVNFRCBpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInslYX1cIiAoU2lnbmF0dXJlLnByaW50X2ludGVybmFsX3N0YXRlIHNpZ3MgYWdfdHkgc2l0ZSkgaVxuXG5sZXQgcHJpbnRfaW50ZXJuYWxfcmhzIHNpZ3MgYWdfdHkgc2l0ZSBmID0gZnVuY3Rpb25cbiAgfCBJX0FOWSAtPiAoKVxuICB8IElfQU5ZX0NIQU5HRUQgaiB8IElfVkFMX0NIQU5HRUQgKF8sIGopIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInslYX1cIiAoU2lnbmF0dXJlLnByaW50X2ludGVybmFsX3N0YXRlIHNpZ3MgYWdfdHkgc2l0ZSkgalxuICB8IElfQU5ZX0VSQVNFRCB8IElfVkFMX0VSQVNFRCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcHJpbnRfbGlua19saHMgfmx0eXBlcyBzaWdzIGYgKChlLCBfKSwgXykgPVxuICBwcmludF9saW5rXG4gICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MpXG4gICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgIChwcmludF9saW5rX2Fubm90IH5sdHlwZXMgc2lncylcbiAgICBmIGVcblxubGV0IHByaW50X2xpbmtfcmhzIH5sdHlwZXMgc2lncyBmICgoZSwgXyksIHMpID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgTGlua2VkIGkgLT5cbiAgICBwcmludF9saW5rXG4gICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncylcbiAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgIChmdW4gXyAoKSAtPiAoKSlcbiAgICAgIGZcbiAgICAgIChMTktfVkFMVUUgKGksICgpKSlcbiAgfCBGcmVlZCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIuXCJcbiAgfCBNYWludGFpbmVkIC0+XG4gICAgcHJpbnRfbGlua1xuICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MpXG4gICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAocHJpbnRfbGlua19hbm5vdCB+bHR5cGVzIHNpZ3MpXG4gICAgICBmIGVcbiAgfCBFcmFzZWQgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBwcmludF9pbnRmX2xocyB+bHR5cGVzIHNpZ3MgYWdfdHkgZiAocG9ydHMsIGludHMpID1cbiAgbGV0IHJlYyBhdXggZW1wdHkgaSA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuXG4gICAgICBpZlxuICAgICAgICBtYXRjaCBwb3J0cy4oaSkgd2l0aFxuICAgICAgICB8ICgoTE5LX1NPTUUgfCBMTktfRlJFRSB8IEFOWV9GUkVFIHwgTE5LX1RZUEUgXyB8IExOS19WQUxVRSBfKSwgXyksIF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgKExOS19BTlksIF8pLCBfIC0+XG4gICAgICAgICAgKG1hdGNoIGludHMuKGkpIHdpdGhcbiAgICAgICAgICB8IElfQU5ZIHwgSV9BTllfRVJBU0VEIHwgSV9BTllfQ0hBTkdFRCBfIC0+IGZhbHNlXG4gICAgICAgICAgfCBJX1ZBTF9DSEFOR0VEIF8gfCBJX1ZBTF9FUkFTRUQgXyAtPiB0cnVlKVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWElYVslYV1cIlxuICAgICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgUHAuc3BhY2UpXG4gICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ190eSlcbiAgICAgICAgICAgIGlcbiAgICAgICAgICAgIChwcmludF9pbnRlcm5hbF9saHMgc2lncyBhZ190eSBpKVxuICAgICAgICAgICAgaW50cy4oaSlcbiAgICAgICAgICAgIChwcmludF9saW5rX2xocyB+bHR5cGVzIHNpZ3MpXG4gICAgICAgICAgICBwb3J0cy4oaSlcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGZhbHNlIChzdWNjIGkpXG4gICAgICApIGVsc2VcbiAgICAgICAgYXV4IGVtcHR5IChzdWNjIGkpXG4gIGluXG4gIGF1eCB0cnVlIDBcblxubGV0IHByaW50X2ludGZfcmhzIH5sdHlwZXMgc2lncyBhZ190eSBmIChwb3J0cywgaW50cykgPVxuICBsZXQgcmVjIGF1eCBlbXB0eSBpID1cbiAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIHBvcnRzIHRoZW5cbiAgICAgIGlmXG4gICAgICAgIG1hdGNoIHBvcnRzLihpKSB3aXRoXG4gICAgICAgIHwgKChMTktfU09NRSB8IExOS19GUkVFIHwgQU5ZX0ZSRUUgfCBMTktfVFlQRSBfIHwgTE5LX1ZBTFVFIF8pLCBfKSwgXyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgICAgfCAoTE5LX0FOWSwgXyksIChFcmFzZWQgfCBGcmVlZCB8IExpbmtlZCBfKSAtPiB0cnVlXG4gICAgICAgIHwgKExOS19BTlksIF8pLCBNYWludGFpbmVkIC0+XG4gICAgICAgICAgKG1hdGNoIGludHMuKGkpIHdpdGhcbiAgICAgICAgICB8IElfQU5ZIC0+IGZhbHNlXG4gICAgICAgICAgfCBJX1ZBTF9DSEFOR0VEIChpLCBqKSAtPiBpIDw+IGpcbiAgICAgICAgICB8IElfQU5ZX0VSQVNFRCB8IElfQU5ZX0NIQU5HRUQgXyB8IElfVkFMX0VSQVNFRCBfIC0+IHRydWUpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXQlYSVhWyVhXVwiXG4gICAgICAgICAgICAoaWYgZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgUHAuZW1wdHlcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBQcC5zcGFjZSlcbiAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnX3R5KVxuICAgICAgICAgICAgaVxuICAgICAgICAgICAgKHByaW50X2ludGVybmFsX3JocyBzaWdzIGFnX3R5IGkpXG4gICAgICAgICAgICBpbnRzLihpKVxuICAgICAgICAgICAgKHByaW50X2xpbmtfcmhzIH5sdHlwZXMgc2lncylcbiAgICAgICAgICAgIHBvcnRzLihpKVxuICAgICAgICBpblxuICAgICAgICBhdXggZmFsc2UgKHN1Y2MgaSlcbiAgICAgICkgZWxzZVxuICAgICAgICBhdXggZW1wdHkgKHN1Y2MgaSlcbiAgaW5cbiAgYXV4IHRydWUgMFxuXG5sZXQgcHJpbnRfYWdlbnRfbGhzIH5sdHlwZXMgc2lncyBmIGFnID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhKEBbPGg+JWFAXSlcIlxuICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICBhZy5yYV90eXBlXG4gICAgKHByaW50X2ludGZfbGhzIH5sdHlwZXMgc2lncyBhZy5yYV90eXBlKVxuICAgIChhZy5yYV9wb3J0cywgYWcucmFfaW50cylcblxubGV0IHByaW50X2FnZW50X3JocyB+bHR5cGVzIHNpZ3MgZiBhZyA9XG4gIGlmIG5vdCBhZy5yYV9lcmFzZWQgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYShAWzxoPiVhQF0pXCJcbiAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgIGFnLnJhX3R5cGVcbiAgICAgIChwcmludF9pbnRmX3JocyB+bHR5cGVzIHNpZ3MgYWcucmFfdHlwZSlcbiAgICAgIChhZy5yYV9wb3J0cywgYWcucmFfaW50cylcblxubGV0IHByaW50X3JocyB+bm9Db3VudGVycyB+bHR5cGVzIHNpZ3MgY3JlYXRlZCBmIG1peCA9XG4gIGxldCByZWMgYXV4IGVtcHR5ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBSYXdfbWl4dHVyZS5wcmludCB+bm9Db3VudGVycyB+aW5pdGlhbF9jb21tYToobm90IGVtcHR5KSB+Y3JlYXRlZDpmYWxzZVxuICAgICAgICB+c2lncyBmIGNyZWF0ZWRcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWYgaC5yYV9lcmFzZWQgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0LlwiXG4gICAgICAgICAgICAoaWYgZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgUHAuZW1wdHlcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBQcC5jb21tYSlcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGZhbHNlIHRcbiAgICAgICkgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWFcIlxuICAgICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgUHAuY29tbWEpXG4gICAgICAgICAgICAocHJpbnRfYWdlbnRfcmhzIH5sdHlwZXMgc2lncylcbiAgICAgICAgICAgIGhcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGZhbHNlIHRcbiAgICAgIClcbiAgaW5cbiAgYXV4IHRydWUgbWl4XG5cbmxldCBwcmludF9yYXRlcyB+bm9Db3VudGVycyBzaWdzIHByX3RvayBwcl92YXIgZiByID1cbiAgbGV0IGx0eXBlcyA9IGZhbHNlIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIgQEAgJWEldFwiXG4gICAgKEFsZ19leHByLnByaW50XG4gICAgICAgKGZ1biBmIG0gLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCJcbiAgICAgICAgICAgKHByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXMgW10pXG4gICAgICAgICAgIG0pXG4gICAgICAgcHJfdG9rIHByX3ZhcilcbiAgICAoZnN0IHIucl9yYXRlKVxuICAgIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggci5yX3VuX3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKChyYSwgXyksIG1heF9kaXN0KSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiIHslYSVhfVwiXG4gICAgICAgICAgKEFsZ19leHByLnByaW50XG4gICAgICAgICAgICAgKGZ1biBmIG0gLT5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCJcbiAgICAgICAgICAgICAgICAgKHByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXMgW10pXG4gICAgICAgICAgICAgICAgIG0pXG4gICAgICAgICAgICAgcHJfdG9rIHByX3ZhcilcbiAgICAgICAgICByYVxuICAgICAgICAgIChQcC5vcHRpb24gKGZ1biBmIChtZCwgXykgLT5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI6JWFcIlxuICAgICAgICAgICAgICAgICAoQWxnX2V4cHIucHJpbnRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBmIG0gLT5cbiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAocHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlcyBbXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIG0pXG4gICAgICAgICAgICAgICAgICAgIHByX3RvayBwcl92YXIpXG4gICAgICAgICAgICAgICAgIG1kKSlcbiAgICAgICAgICBtYXhfZGlzdClcblxubGV0IHByaW50X3J1bGUgfm5vQ291bnRlcnMgfmZ1bGwgc2lncyBwcl90b2sgcHJfdmFyIGYgciA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiV0JXQlYSV0QF1cIlxuICAgIChmdW4gZiAtPlxuICAgICAgaWYgZnVsbCB8fCByLnJfZWRpdF9zdHlsZSB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSVhXCJcbiAgICAgICAgICAocHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlczpmYWxzZSByLnJfY3JlYXRlZClcbiAgICAgICAgICByLnJfbWl4XG4gICAgICAgICAgKFJhd19taXh0dXJlLnByaW50IH5ub0NvdW50ZXJzIH5jcmVhdGVkOnRydWVcbiAgICAgICAgICAgICB+aW5pdGlhbF9jb21tYTooci5yX21peCA8PiBbXSkgfnNpZ3MpXG4gICAgICAgICAgci5yX2NyZWF0ZWRcbiAgICAgIGVsc2VcbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhJXQlYSAtPiAlYVwiXG4gICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKHByaW50X2FnZW50X2xocyB+bHR5cGVzOmZhbHNlIHNpZ3MpKVxuICAgICAgICAgIHIucl9taXhcbiAgICAgICAgICAoZnVuIGYgLT4gaWYgci5yX21peCA8PiBbXSAmJiByLnJfY3JlYXRlZCA8PiBbXSB0aGVuIFBwLmNvbW1hIGYpXG4gICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKGZ1biBmIF8gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLlwiKSlcbiAgICAgICAgICByLnJfY3JlYXRlZFxuICAgICAgICAgIChwcmludF9yaHMgfm5vQ291bnRlcnMgfmx0eXBlczpmYWxzZSBzaWdzIHIucl9jcmVhdGVkKVxuICAgICAgICAgIHIucl9taXgpXG4gICAgKGZ1biBmIC0+XG4gICAgICBtYXRjaCByLnJfZGVsdGFfdG9rZW5zIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgXyA6OiBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiB8IFwiKVxuICAgIChQcC5saXN0IFBwLmNvbW1hIChmdW4gZiAoKG5iLCBfKSwgdGspIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEgJWFcIlxuICAgICAgICAgICAoQWxnX2V4cHIucHJpbnRcbiAgICAgICAgICAgICAgKGZ1biBmIG0gLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiXG4gICAgICAgICAgICAgICAgICAocHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlczpmYWxzZSBbXSlcbiAgICAgICAgICAgICAgICAgIG0pXG4gICAgICAgICAgICAgIHByX3RvayBwcl92YXIpXG4gICAgICAgICAgIG5iIHByX3RvayB0aykpXG4gICAgci5yX2RlbHRhX3Rva2Vuc1xuICAgIChmdW4gZiAtPiBpZiBmdWxsIHRoZW4gcHJpbnRfcmF0ZXMgfm5vQ291bnRlcnMgc2lncyBwcl90b2sgcHJfdmFyIGYgcilcblxubGV0IHJ1bGVfYWdlbnRfdG9fanNvbiBmaWxlbmFtZXMgYSA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwidHlwZVwiLCBgSW50IGEucmFfdHlwZTtcbiAgICAgICggXCJiaW5kaW5nc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biAoZSwgcykgYyAtPlxuICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgICAobGlua190b19qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF8gaSAtPiBgSW50IGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGkgLT4gYEludCBpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocywgYSkgLT4gWyBgSW50IHM7IGBJbnQgYSBdKSlcbiAgICAgICAgICAgICAgICAgICAgIGU7XG4gICAgICAgICAgICAgICAgICAgc3dpdGNoaW5nX3RvX2pzb24gcztcbiAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgOjogYylcbiAgICAgICAgICAgICBhLnJhX3BvcnRzIFtdKSApO1xuICAgICAgKCBcInN0YXRlc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biB4IGMgLT4gcnVsZV9pbnRlcm5hbF90b19qc29uIHggOjogYylcbiAgICAgICAgICAgICBhLnJhX2ludHMgW10pICk7XG4gICAgICBcImVyYXNlZFwiLCBgQm9vbCBhLnJhX2VyYXNlZDtcbiAgICBdXG5cbmxldCBydWxlX2FnZW50X29mX2pzb24gZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDQgLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IHBvcnRzID1cbiAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgXCJiaW5kaW5nc1wiIGwgd2l0aFxuICAgICAgICAgfCBgTGlzdCBzIC0+XG4gICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IGBMaXN0IFsgZTsgcyBdIC0+XG4gICAgICAgICAgICAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgIChsaW5rX29mX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gXyAtPiBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFsgYEludCBzOyBgSW50IGEgXSAtPiBzLCBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpKVxuICAgICAgICAgICAgICAgICAgICAgZSxcbiAgICAgICAgICAgICAgICAgICBzd2l0Y2hpbmdfb2ZfanNvbiBzIClcbiAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgc1xuICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgIGluXG4gICAgICAgbGV0IGludHMgPVxuICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBcInN0YXRlc1wiIGwgd2l0aFxuICAgICAgICAgfCBgTGlzdCBzIC0+IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IHJ1bGVfaW50ZXJuYWxfb2ZfanNvbiBzXG4gICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgaW5cbiAgICAgICB7XG4gICAgICAgICByYV90eXBlID0gWW9qc29uLkJhc2ljLlV0aWwudG9faW50IChMaXN0LmFzc29jIFwidHlwZVwiIGwpO1xuICAgICAgICAgcmFfcG9ydHMgPSBwb3J0cztcbiAgICAgICAgIHJhX2ludHMgPSBpbnRzO1xuICAgICAgICAgcmFfZXJhc2VkID0gWW9qc29uLkJhc2ljLlV0aWwudG9fYm9vbCAoTGlzdC5hc3NvYyBcImVyYXNlZFwiIGwpO1xuICAgICAgICAgcmFfc3ludGF4ID0gU29tZSAocG9ydHMsIGludHMpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHJ1bGVfYWdlbnRcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBydWxlX2FnZW50XCIsIHgpKVxuXG5sZXQgcnVsZV9taXh0dXJlX3RvX2pzb24gZmlsZW5hbWVzID1cbiAgSnNvblV0aWwub2ZfbGlzdCAocnVsZV9hZ2VudF90b19qc29uIGZpbGVuYW1lcylcblxubGV0IHJ1bGVfbWl4dHVyZV9vZl9qc29uIGZpbGVuYW1lcyA9XG4gIEpzb25VdGlsLnRvX2xpc3QgKHJ1bGVfYWdlbnRfb2ZfanNvbiBmaWxlbmFtZXMpXG5cbmxldCBsYWxnX2V4cHJfdG9fanNvbiBmaWxlbmFtZXMgPVxuICBBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKHJ1bGVfbWl4dHVyZV90b19qc29uIGZpbGVuYW1lcylcbiAgICBKc29uVXRpbC5vZl9pbnRcblxubGV0IGxhbGdfZXhwcl9vZl9qc29uIGZpbGVuYW1lcyA9XG4gIEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAocnVsZV9taXh0dXJlX29mX2pzb24gZmlsZW5hbWVzKVxuICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKVxuXG5sZXQgcnVsZV90b19qc29uIH5maWxlbmFtZXMgciA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwibWl4dHVyZVwiLCBydWxlX21peHR1cmVfdG9fanNvbiBmaWxlbmFtZXMgci5yX21peDtcbiAgICAgIFwiY3JlYXRlZFwiLCBSYXdfbWl4dHVyZS50b19qc29uIHIucl9jcmVhdGVkO1xuICAgICAgKCBcImRlbHRhX3Rva2Vuc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6XCJ2YWxcIiB+bGFiMjpcInRva1wiXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChsYWxnX2V4cHJfdG9fanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgICAgIEpzb25VdGlsLm9mX2ludClcbiAgICAgICAgICByLnJfZGVsdGFfdG9rZW5zICk7XG4gICAgICAoIFwicmF0ZVwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAobGFsZ19leHByX3RvX2pzb24gZmlsZW5hbWVzKSByLnJfcmF0ZVxuICAgICAgKTtcbiAgICAgICggXCJ1bmFyeV9yYXRlXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChsYWxnX2V4cHJfdG9fanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGxhbGdfZXhwcl90b19qc29uIGZpbGVuYW1lcykpKSlcbiAgICAgICAgICByLnJfdW5fcmF0ZSApO1xuICAgICAgXCJlZGl0X3N0eWxlXCIsIGBCb29sIHIucl9lZGl0X3N0eWxlO1xuICAgIF1cblxubGV0IHJ1bGVfb2ZfanNvbiB+ZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA8IDcgLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgcl9taXggPSBydWxlX21peHR1cmVfb2ZfanNvbiBmaWxlbmFtZXMgKExpc3QuYXNzb2MgXCJtaXh0dXJlXCIgbCk7XG4gICAgICAgICByX2NyZWF0ZWQgPSBSYXdfbWl4dHVyZS5vZl9qc29uIChMaXN0LmFzc29jIFwiY3JlYXRlZFwiIGwpO1xuICAgICAgICAgcl9kZWx0YV90b2tlbnMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6XCJ2YWxcIiB+bGFiMjpcInRva1wiXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChsYWxnX2V4cHJfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImRlbHRhX3Rva2Vuc1wiIGwpO1xuICAgICAgICAgcl9yYXRlID1cbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAobGFsZ19leHByX29mX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwicmF0ZVwiIGwpO1xuICAgICAgICAgcl91bl9yYXRlID1cbiAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgIChsYWxnX2V4cHJfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIChsYWxnX2V4cHJfb2ZfanNvbiBmaWxlbmFtZXMpKSkpXG4gICAgICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJ1bmFyeV9yYXRlXCIgbClcbiAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IE5vbmUpO1xuICAgICAgICAgcl9lZGl0X3N0eWxlID0gWW9qc29uLkJhc2ljLlV0aWwudG9fYm9vbCAoTGlzdC5hc3NvYyBcImVkaXRfc3R5bGVcIiBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHJ1bGVcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHJ1bGVcIiwgeCkpXG5cbmxldCByYWlzZV9pZl9tb2RpZmljYXRpb24gcG9zID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgXyAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAoXCJBIG1vZGlmaWNhdGlvbiBpcyBmb3JiaWRkZW4gaGVyZS5cIiwgcG9zKSlcblxubGV0IHJhaXNlX3NldmVyYWxfaW50ZXJuYWxfc3RhdGVzIHBvcyA9XG4gIHJhaXNlXG4gICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAoXCJJbiBhIHBhdHRlcm4sIGEgc2l0ZSBjYW5ub3QgaGF2ZSBzZXZlcmFsIGludGVybmFsIHN0YXRlcy5cIiwgcG9zKSlcblxubGV0IHJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXMgfnNpZGUgYWdlbnRfbmFtZSAobmEsIHBvcykgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgKCBcIlRoZSBcIiBeIHN0YXR1cyBeIFwiIHN0YXRlIG9mIGFnZW50ICdcIiBeIGFnZW50X25hbWUgXiBcIicsIHNpdGUgJ1wiIF4gbmFcbiAgICAgICAgIF4gXCInIG9uIHRoZSBcIiBeIHNpZGUgXiBcIiBoYW5kIHNpZGUgaXMgdW5kZXJzcGVjaWZpZWRcIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgcmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIChuYSwgcG9zKSA9XG4gIHJhaXNlXG4gICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAoIFwiU2l0ZSAnXCIgXiBuYSBeIFwiJyBvY2N1cnMgbW9yZSB0aGFuIG9uY2UgaW4gdGhpcyBhZ2VudCAnXCIgXiBhZ2VudF9uYW1lXG4gICAgICAgICBeIFwiJ1wiLFxuICAgICAgICAgcG9zICkpXG5cbmxldCByYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSAobmEsIHBvcykgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgKCBcIlNpdGUgJ1wiIF4gbmEgXiBcIicgb2NjdXJzIGJvdGggYXMgcG9ydCBhbmQgYXMgY291bnRlciBpbiAnXCJcbiAgICAgICAgIF4gYWdlbnRfbmFtZSBeIFwiJ1wiLFxuICAgICAgICAgcG9zICkpXG5cbmxldCByYWlzZV9saW5rX29ubHlfb25lX29jY3VyZW5jZSBpIHBvcyA9XG4gIHJhaXNlXG4gICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAoIFwiVGhlIGxpbmsgJ1wiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgICAgICBeIFwiJyBvY2N1cnMgb25seSBvbmUgdGltZSBpbiB0aGUgbWl4dHVyZS5cIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgcmFpc2VfbGlua19zaG91bGRfYmVfcmVtb3ZlZCBpIGFnZW50X25hbWUgKG5hLCBwb3MpID1cbiAgcmFpc2VcbiAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICggXCJUaGUgbGluayAnXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIicgc2hvdWxkIGJlIG1hZGUgZnJlZSBpbiB0aGUgc2l0ZSAnXCJcbiAgICAgICAgIF4gbmEgXiBcIicgb2YgYWdlbnQgJ1wiIF4gYWdlbnRfbmFtZVxuICAgICAgICAgXiBcIicsIHNpbmNlIGl0IHdpbGwgbWFkZSBiZSBmcmVlIGJ5IHNpZGUtZWZmZWN0LlwiLFxuICAgICAgICAgcG9zICkpXG5cbmxldCBjb3B5X3J1bGVfYWdlbnQgYSA9XG4gIGxldCBwID0gQXJyYXkuY29weSBhLnJhX3BvcnRzIGluXG4gIGxldCBpID0gQXJyYXkuY29weSBhLnJhX2ludHMgaW5cbiAge1xuICAgIHJhX3R5cGUgPSBhLnJhX3R5cGU7XG4gICAgcmFfZXJhc2VkID0gYS5yYV9lcmFzZWQ7XG4gICAgcmFfcG9ydHMgPSBwO1xuICAgIHJhX2ludHMgPSBpO1xuICAgIHJhX3N5bnRheCA9XG4gICAgICBPcHRpb25fdXRpbC5tYXAgKGZ1biBfIC0+IEFycmF5LmNvcHkgcCwgQXJyYXkuY29weSBpKSBhLnJhX3N5bnRheDtcbiAgfVxuXG5sZXQgYWdlbnRfdG9fZXJhc2VkIHNpZ3MgciA9XG4gIGxldCByYV9wb3J0cyA9IEFycmF5Lm1hcCAoZnVuIChhLCBfKSAtPiBhLCBFcmFzZWQpIHIucmFfcG9ydHMgaW5cbiAgbGV0IHJhX2ludHMgPVxuICAgIEFycmF5Lm1hcGlcbiAgICAgIChmdW4gaiAtPiBmdW5jdGlvblxuICAgICAgICB8IElfVkFMX0NIQU5HRUQgKGksIF8pIHwgSV9WQUxfRVJBU0VEIGkgLT4gSV9WQUxfRVJBU0VEIGlcbiAgICAgICAgfCBJX0FOWSB8IElfQU5ZX0NIQU5HRUQgXyB8IElfQU5ZX0VSQVNFRCAtPlxuICAgICAgICAgIChtYXRjaCBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSByLnJhX3R5cGUgaiBzaWdzIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXyAtPiBJX0FOWV9FUkFTRURcbiAgICAgICAgICB8IE5vbmUgLT4gSV9BTlkpKVxuICAgICAgci5yYV9pbnRzXG4gIGluXG4gIHtcbiAgICByYV90eXBlID0gci5yYV90eXBlO1xuICAgIHJhX2VyYXNlZCA9IHRydWU7XG4gICAgcmFfcG9ydHM7XG4gICAgcmFfaW50cztcbiAgICByYV9zeW50YXggPVxuICAgICAgKG1hdGNoIHIucmFfc3ludGF4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgXyAtPiBTb21lIChBcnJheS5jb3B5IHJhX3BvcnRzLCBBcnJheS5jb3B5IHJhX2ludHMpKTtcbiAgfVxuXG5sZXQgdG9fZXJhc2VkIChzaWdzIDogU2lnbmF0dXJlLnMpICh4IDogcnVsZV9taXh0dXJlKSA6IHJ1bGVfbWl4dHVyZSA9XG4gIExpc3QubWFwIChhZ2VudF90b19lcmFzZWQgc2lncykgeFxuXG5sZXQgdG9fbWFpbnRhaW5lZCAoeCA6IHJ1bGVfbWl4dHVyZSkgOiBydWxlX21peHR1cmUgPVxuICBMaXN0Lm1hcFxuICAgIChmdW4gciAtPlxuICAgICAgbGV0IHBvcnRzID0gQXJyYXkubWFwIChmdW4gKGEsIF8pIC0+IGEsIE1haW50YWluZWQpIHIucmFfcG9ydHMgaW5cbiAgICAgIGxldCBpbnRzID1cbiAgICAgICAgQXJyYXkubWFwXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IElfVkFMX0NIQU5HRUQgKGksIF8pIHwgSV9WQUxfRVJBU0VEIGkgLT4gSV9WQUxfQ0hBTkdFRCAoaSwgaSlcbiAgICAgICAgICAgIHwgSV9BTlkgfCBJX0FOWV9DSEFOR0VEIF8gfCBJX0FOWV9FUkFTRUQgLT4gSV9BTlkpXG4gICAgICAgICAgci5yYV9pbnRzXG4gICAgICBpblxuICAgICAge1xuICAgICAgICByYV90eXBlID0gci5yYV90eXBlO1xuICAgICAgICByYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgICAgcmFfcG9ydHMgPSBwb3J0cztcbiAgICAgICAgcmFfaW50cyA9IGludHM7XG4gICAgICAgIHJhX3N5bnRheCA9XG4gICAgICAgICAgKG1hdGNoIHIucmFfc3ludGF4IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBfIC0+IFNvbWUgKHBvcnRzLCBpbnRzKSk7XG4gICAgICB9KVxuICAgIHhcblxubGV0IHRvX3Jhd19taXh0dXJlIHNpZ3MgeCA9XG4gIExpc3QubWFwXG4gICAgKGZ1biByIC0+XG4gICAgICBsZXQgaW50ZXJuYWxzID1cbiAgICAgICAgQXJyYXkubWFwaVxuICAgICAgICAgIChmdW4gaiAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBJX1ZBTF9DSEFOR0VEIChpLCBfKSB8IElfVkFMX0VSQVNFRCBpIC0+IFNvbWUgaVxuICAgICAgICAgICAgfCBJX0FOWSB8IElfQU5ZX0NIQU5HRUQgXyB8IElfQU5ZX0VSQVNFRCAtPlxuICAgICAgICAgICAgICBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSByLnJhX3R5cGUgaiBzaWdzKVxuICAgICAgICAgIHIucmFfaW50c1xuICAgICAgaW5cbiAgICAgIGxldCBwb3J0cyA9XG4gICAgICAgIEFycmF5Lm1hcGlcbiAgICAgICAgICAoZnVuIGogLT4gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgKExOS19TT01FLCBwb3MgfCBMTktfVFlQRSBfLCBwb3MpLCBfIC0+XG4gICAgICAgICAgICAgIGxldCBhZ2VudF9uYW1lID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncykgci5yYV90eXBlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBwb3J0X25hbWUgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3Mgci5yYV90eXBlKSBqXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICBhZ2VudF9uYW1lIChwb3J0X25hbWUsIHBvcylcbiAgICAgICAgICAgIHwgKExOS19WQUxVRSAoaSwgXyksIF8pLCBfIC0+IFJhd19taXh0dXJlLlZBTCBpXG4gICAgICAgICAgICB8ICgoTE5LX0FOWSB8IEFOWV9GUkVFIHwgTE5LX0ZSRUUpLCBfKSwgXyAtPiBSYXdfbWl4dHVyZS5GUkVFKVxuICAgICAgICAgIHIucmFfcG9ydHNcbiAgICAgIGluXG4gICAgICB7XG4gICAgICAgIFJhd19taXh0dXJlLmFfdHlwZSA9IHIucmFfdHlwZTtcbiAgICAgICAgUmF3X21peHR1cmUuYV9wb3J0cyA9IHBvcnRzO1xuICAgICAgICBSYXdfbWl4dHVyZS5hX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgICB9KVxuICAgIHhcblxubGV0IG1heF9saW5rX2lkIHIgPVxuICBsZXQgbWF4X3MgbSA9IGZ1bmN0aW9uXG4gICAgfCBMaW5rZWQgaSAtPiBtYXggaSBtXG4gICAgfCBGcmVlZCB8IE1haW50YWluZWQgfCBFcmFzZWQgLT4gbVxuICBpblxuICBsZXQgbWF4X2xpbmtfaWRfc2l0ZXMgbWF4X2lkIGFnID1cbiAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgIChmdW4gbWF4X2lkIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgKExOS19WQUxVRSAoaiwgXyksIF8pLCBzIC0+IG1heF9zIChtYXggaiBtYXhfaWQpIHNcbiAgICAgICAgfCAoKExOS19UWVBFIF8gfCBMTktfU09NRSB8IExOS19GUkVFIHwgTE5LX0FOWSB8IEFOWV9GUkVFKSwgXyksIHMgLT5cbiAgICAgICAgICBtYXhfcyBtYXhfaWQgcylcbiAgICAgIG1heF9pZCBhZy5yYV9wb3J0c1xuICBpblxuICBMaXN0LmZvbGRfbGVmdCBtYXhfbGlua19pZF9zaXRlcyAwIHJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBsaW5rX29jY3VyZW5jZV9mYWlsdXJlIGtleSBwb3MgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgKCBcIkJ1ZzogTGluayBcIiBeIHN0cmluZ19vZl9pbnQga2V5XG4gICAgICAgICBeIFwiIGlzIHByb2JsZW1hdGljISBMS2FwcGEgaXMgZWl0aGVyIGJyb2tlblwiXG4gICAgICAgICBeIFwiIG9yIHVudXNlZCEgUGxlYXNlIHJlcG9ydC5cIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgcG9ydHNfZnJvbV9jb250YWN0X21hcCBjb250YWN0X21hcCB0eV9pZCBwX2lkID1cbiAgc25kIGNvbnRhY3RfbWFwLih0eV9pZCkuKHBfaWQpXG5cbmxldCBmaW5kX2ltcGxpY2l0X2luZm9zIGNvbnRhY3RfbWFwIGFncyA9XG4gIGxldCBuZXdfc3dpdGNoID0gZnVuY3Rpb25cbiAgICB8IExLYXBwYS5NYWludGFpbmVkIC0+IExLYXBwYS5NYWludGFpbmVkXG4gICAgfCBMS2FwcGEuRnJlZWQgfCBMS2FwcGEuTGlua2VkIF8gfCBMS2FwcGEuRXJhc2VkIC0+IExLYXBwYS5GcmVlZFxuICBpblxuICBsZXQgcmVjIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgcG9ydHMgaSA9XG4gICAgbGV0IHR5X2lkID0gYWcuTEthcHBhLnJhX3R5cGUgaW5cbiAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHBvcnRzIHRoZW4gKFxuICAgICAgbGV0IGN1cnJlbnQnID1cbiAgICAgICAge1xuICAgICAgICAgIExLYXBwYS5yYV90eXBlID0gYWcuTEthcHBhLnJhX3R5cGU7XG4gICAgICAgICAgTEthcHBhLnJhX3BvcnRzID0gcG9ydHM7XG4gICAgICAgICAgTEthcHBhLnJhX2ludHMgPSBhZy5MS2FwcGEucmFfaW50cztcbiAgICAgICAgICBMS2FwcGEucmFfZXJhc2VkID0gYWcuTEthcHBhLnJhX2VyYXNlZDtcbiAgICAgICAgICBMS2FwcGEucmFfc3ludGF4ID0gYWcuTEthcHBhLnJhX3N5bnRheDtcbiAgICAgICAgfVxuICAgICAgICA6OiBjdXJyZW50XG4gICAgICBpblxuICAgICAgYXV4X2FncyBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQnIHRvZG9zIGFnX3RhaWxcbiAgICApIGVsc2UgKFxuICAgICAgbWF0Y2ggcG9ydHMuKGkpIHdpdGhcbiAgICAgIHwgKExLYXBwYS5MTktfVFlQRSAocCwgYSksIF8pLCBzIC0+XG4gICAgICAgIGxldCBvcl90eSA9IGksIHR5X2lkIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgcG9ydHMuKGkpIDwtXG4gICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAoZnJlZV9pZCwgKHAsIGEpKSksIHNcbiAgICAgICAgaW5cbiAgICAgICAgYXV4X29uZSAoc3VjYyBmcmVlX2lkKSBwcmV2aW91cyBjdXJyZW50XG4gICAgICAgICAgKChmcmVlX2lkLCAocCwgYSksIG9yX3R5LCBuZXdfc3dpdGNoIHMpIDo6IHRvZG9zKVxuICAgICAgICAgIGFnX3RhaWwgYWcgcG9ydHMgKHN1Y2MgaSlcbiAgICAgIHwgKExLYXBwYS5MTktfU09NRSwgXyksIHMgLT5cbiAgICAgICAgbGV0IG9yX3R5ID0gaSwgdHlfaWQgaW5cbiAgICAgICAgTW9kcy5JbnQyU2V0LmZvbGRcbiAgICAgICAgICAoZnVuIChhLCBwKSBwcmV2JyAtPlxuICAgICAgICAgICAgbGV0IHBvcnRzJyA9IEFycmF5LmNvcHkgcG9ydHMgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIHBvcnRzJy4oaSkgPC1cbiAgICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAoZnJlZV9pZCwgKHAsIGEpKSksIHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgdG9kb3MnID0gKGZyZWVfaWQsIChwLCBhKSwgb3JfdHksIG5ld19zd2l0Y2ggcykgOjogdG9kb3MgaW5cbiAgICAgICAgICAgIGF1eF9vbmUgKHN1Y2MgZnJlZV9pZCkgcHJldicgY3VycmVudCB0b2RvcycgYWdfdGFpbCBhZyBwb3J0cydcbiAgICAgICAgICAgICAgKHN1Y2MgaSkpXG4gICAgICAgICAgKHBvcnRzX2Zyb21fY29udGFjdF9tYXAgY29udGFjdF9tYXAgdHlfaWQgaSlcbiAgICAgICAgICBwcmV2aW91c1xuICAgICAgfCAoTEthcHBhLkxOS19WQUxVRSBfLCBfKSwgXyAtPlxuICAgICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICB8IChMS2FwcGEuTE5LX0ZSRUUsIHBvcyksICgoTEthcHBhLk1haW50YWluZWQgfCBMS2FwcGEuRXJhc2VkKSBhcyBzKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICgqIERvIG5vdCBtYWtlIHRlc3QgaWYgYmVpbmcgZnJlZSBpcyB0aGUgb25seSBwb3NzaWJpbGl0eSAqKVxuICAgICAgICAgIGlmIE1vZHMuSW50MlNldC5pc19lbXB0eSAocG9ydHNfZnJvbV9jb250YWN0X21hcCBjb250YWN0X21hcCB0eV9pZCBpKVxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIHBvcnRzLihpKSA8LSAoTEthcHBhLkxOS19BTlksIHBvcyksIHNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICB8IChMS2FwcGEuTE5LX0ZSRUUsIF8pLCBMS2FwcGEuRnJlZWQgLT5cbiAgICAgICAgZmFpbHdpdGggXCJBIGZyZWUgc2l0ZSBjYW5ub3QgYmUgZnJlZWRcIlxuICAgICAgfCAoTEthcHBhLkxOS19GUkVFLCBfKSwgTEthcHBhLkxpbmtlZCBfIC0+XG4gICAgICAgIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgcG9ydHMgKHN1Y2MgaSlcbiAgICAgIHwgKChMS2FwcGEuTE5LX0FOWSB8IExLYXBwYS5BTllfRlJFRSksIF8pLCBMS2FwcGEuTWFpbnRhaW5lZCAtPlxuICAgICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICB8ICggKChMS2FwcGEuTE5LX0FOWSB8IExLYXBwYS5BTllfRlJFRSksIHBvcyksXG4gICAgICAgICAgKChMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfIHwgTEthcHBhLkZyZWVkKSBhcyBzKSApIC0+XG4gICAgICAgIGlmXG4gICAgICAgICAgTW9kcy5JbnQyU2V0LmlzX2VtcHR5IChwb3J0c19mcm9tX2NvbnRhY3RfbWFwIGNvbnRhY3RfbWFwIHR5X2lkIGkpXG4gICAgICAgICAgJiYgcyA9IExLYXBwYS5GcmVlZFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBEbyBub3QgbWFrZSB0ZXN0IGlzIGJlaW5nIGZyZWUgaXMgdGhlIG9ubHkgcG9zc2liaWxpdHkgKilcbiAgICAgICAgICBsZXQgKCkgPSBwb3J0cy4oaSkgPC0gKExLYXBwYS5MTktfQU5ZLCBwb3MpLCBMS2FwcGEuTWFpbnRhaW5lZCBpblxuICAgICAgICAgIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgcG9ydHMgKHN1Y2MgaSlcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgYXV4X29uZSBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQgdG9kb3MgYWdfdGFpbCBhZyBwb3J0cyAoc3VjYyBpKVxuICAgIClcbiAgYW5kIGF1eF9hZ3MgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IChMaXN0LnJldiBjdXJyZW50LCB0b2RvcykgOjogcHJldmlvdXNcbiAgICB8IGFnIDo6IGFnX3RhaWwgLT5cbiAgICAgIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgYWcuTEthcHBhLnJhX3BvcnRzIDBcbiAgaW5cbiAgYXV4X2FncyAoc3VjYyAoTEthcHBhLm1heF9saW5rX2lkIGFncykpIFtdIFtdIFtdIGFnc1xuXG5sZXQgY29tcGxldGVfd2l0aF9jYW5kaWRhdGUgb3V0cyBwcmV2cyBhZyBhZ190YWlsIGlkIHRvZG8gcF9pZCBkc3RfaW5mbyBwX3N3aXRjaFxuICAgID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaSBhY2MgcG9ydCAtPlxuICAgICAgaWYgaSA8PiBwX2lkIHRoZW5cbiAgICAgICAgYWNjXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcG9ydCB3aXRoXG4gICAgICAgIHwgKChMS2FwcGEuTE5LX0FOWSB8IExLYXBwYS5BTllfRlJFRSksIF8pLCBzIC0+XG4gICAgICAgICAgaWYgcyA9IExLYXBwYS5NYWludGFpbmVkIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHBvcnRzJyA9IEFycmF5LmNvcHkgYWcuTEthcHBhLnJhX3BvcnRzIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBwb3J0cycuKGkpIDwtXG4gICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGlkLCBkc3RfaW5mbykpLCBwX3N3aXRjaFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggTGlzdC5yZXZfYXBwZW5kIHByZXZzXG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfdHlwZSA9IGFnLkxLYXBwYS5yYV90eXBlO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9wb3J0cyA9IHBvcnRzJztcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfaW50cyA9IGFnLkxLYXBwYS5yYV9pbnRzO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9lcmFzZWQgPSBhZy5MS2FwcGEucmFfZXJhc2VkO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9zeW50YXggPSBhZy5MS2FwcGEucmFfc3ludGF4O1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOjogYWdfdGFpbCksXG4gICAgICAgICAgICAgIHRvZG8gKVxuICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgKSBlbHNlIGlmIHMgPSBMS2FwcGEuRXJhc2VkICYmIHBfc3dpdGNoID0gTEthcHBhLkZyZWVkIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHBvcnRzJyA9IEFycmF5LmNvcHkgYWcuTEthcHBhLnJhX3BvcnRzIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBwb3J0cycuKGkpIDwtXG4gICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGlkLCBkc3RfaW5mbykpLCBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBMaXN0LnJldl9hcHBlbmQgcHJldnNcbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV90eXBlID0gYWcuTEthcHBhLnJhX3R5cGU7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX3BvcnRzID0gcG9ydHMnO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9pbnRzID0gYWcuTEthcHBhLnJhX2ludHM7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX2VyYXNlZCA9IGFnLkxLYXBwYS5yYV9lcmFzZWQ7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX3N5bnRheCA9IGFnLkxLYXBwYS5yYV9zeW50YXg7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6OiBhZ190YWlsKSxcbiAgICAgICAgICAgICAgdG9kbyApXG4gICAgICAgICAgICA6OiBhY2NcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IChMS2FwcGEuTE5LX1ZBTFVFIChrLCB4KSwgXyksIHMgLT5cbiAgICAgICAgICBpZiB4ID0gZHN0X2luZm8gdGhlbiAoXG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAgICAgICAgIChmdW4gKGosIF8sIChwJywgYScpLCBzdycpIC0+XG4gICAgICAgICAgICAgICAgICBqID0gayAmJiBpID0gcCcgJiYgYScgPSBhZy5MS2FwcGEucmFfdHlwZSAmJiBzdycgPSBwX3N3aXRjaClcbiAgICAgICAgICAgICAgICB0b2RvXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFsgXyBdLCB0b2RvJyAtPlxuICAgICAgICAgICAgICBsZXQgcG9ydHMnID0gQXJyYXkuY29weSBhZy5MS2FwcGEucmFfcG9ydHMgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBwb3J0cycuKGkpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChpZCwgeCkpLCBzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggTGlzdC5yZXZfYXBwZW5kIHByZXZzXG4gICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZy5MS2FwcGEucmFfdHlwZTtcbiAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9wb3J0cyA9IHBvcnRzJztcbiAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9pbnRzID0gYWcuTEthcHBhLnJhX2ludHM7XG4gICAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfZXJhc2VkID0gYWcuTEthcHBhLnJhX2VyYXNlZDtcbiAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9zeW50YXggPSBhZy5MS2FwcGEucmFfc3ludGF4O1xuICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDo6IGFnX3RhaWwpLFxuICAgICAgICAgICAgICAgIHRvZG8nIClcbiAgICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgICB8IFtdLCBfIC0+IGFjY1xuICAgICAgICAgICAgfCBfIDo6IF8gOjogXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8ICgoTEthcHBhLkxOS19UWVBFIF8gfCBMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuTE5LX1NPTUUpLCBfKSwgXyAtPiBhY2NcbiAgICAgICkpXG4gICAgb3V0cyBhZy5MS2FwcGEucmFfcG9ydHNcblxubGV0IG5ld19hZ2VudF93aXRoX29uZV9saW5rIHNpZ3MgdHlfaWQgcG9ydCBsaW5rIGRzdF9pbmZvIHN3aXRjaCA9XG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIHR5X2lkIGluXG4gIGxldCBwb3J0cyA9XG4gICAgQXJyYXkubWFrZSBhcml0eSAoTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19BTlksIExLYXBwYS5NYWludGFpbmVkKVxuICBpblxuICBsZXQgaW50ZXJuYWxzID0gQXJyYXkubWFrZSBhcml0eSBMS2FwcGEuSV9BTlkgaW5cbiAgbGV0ICgpID1cbiAgICBwb3J0cy4ocG9ydCkgPC1cbiAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChsaW5rLCBkc3RfaW5mbykpLCBzd2l0Y2hcbiAgaW5cbiAge1xuICAgIExLYXBwYS5yYV90eXBlID0gdHlfaWQ7XG4gICAgTEthcHBhLnJhX3BvcnRzID0gcG9ydHM7XG4gICAgTEthcHBhLnJhX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgTEthcHBhLnJhX2VyYXNlZCA9IGZhbHNlO1xuICAgIExLYXBwYS5yYV9zeW50YXggPSBOb25lO1xuICB9XG5cbmxldCByZWMgYWRkX29uZV9pbXBsaWNpdF9pbmZvIHNpZ3MgaWQgKCgocG9ydCwgdHlfaWQpLCBkc3RfaW5mbywgcykgYXMgaW5mbykgYWNjXG4gICAgb3V0IHRvZG8gPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgKCBMaXN0LnJldl9hcHBlbmQgYWNjXG4gICAgICAgIFsgbmV3X2FnZW50X3dpdGhfb25lX2xpbmsgc2lncyB0eV9pZCBwb3J0IGlkIGRzdF9pbmZvIHMgXSxcbiAgICAgIHRvZG8gKVxuICAgIDo6IG91dFxuICB8IGFnIDo6IGFnX3RhaWwgLT5cbiAgICBsZXQgb3V0X3RhaWwgPVxuICAgICAgYWRkX29uZV9pbXBsaWNpdF9pbmZvIHNpZ3MgaWQgaW5mbyAoYWcgOjogYWNjKSBvdXQgdG9kbyBhZ190YWlsXG4gICAgaW5cbiAgICBpZiB0eV9pZCA9IGFnLkxLYXBwYS5yYV90eXBlIHRoZW5cbiAgICAgIGNvbXBsZXRlX3dpdGhfY2FuZGlkYXRlIG91dF90YWlsIGFjYyBhZyBhZ190YWlsIGlkIHRvZG8gcG9ydCBkc3RfaW5mbyBzXG4gICAgZWxzZVxuICAgICAgb3V0X3RhaWxcblxubGV0IGFkZF9pbXBsaWNpdF9pbmZvcyBzaWdzIGwgPVxuICBsZXQgcmVjIGF1eCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCAobSwgW10pIDo6IHQgLT4gYXV4IChtIDo6IGFjYykgdFxuICAgIHwgKG0sIChpZCwgaW5mbywgZHN0X2luZm8sIHMpIDo6IHRvZG8nKSA6OiB0IC0+XG4gICAgICBhdXggYWNjIChhZGRfb25lX2ltcGxpY2l0X2luZm8gc2lncyBpZCAoaW5mbywgZHN0X2luZm8sIHMpIFtdIHQgdG9kbycgbSlcbiAgaW5cbiAgYXV4IFtdIGxcblxubGV0IGlzX2xpbmtlZF9vbl9wb3J0IG1lIGkgaWQgPSBmdW5jdGlvblxuICB8IChMS2FwcGEuTE5LX1ZBTFVFIChqLCBfKSwgXyksIF8gd2hlbiBpID0gaiAtPiBpZCA8PiBtZVxuICB8ICggKCAoIExLYXBwYS5MTktfVkFMVUUgXyB8IExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5MTktfVFlQRSBfXG4gICAgICAgIHwgTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuTE5LX1NPTUUgfCBMS2FwcGEuQU5ZX0ZSRUUgKSxcbiAgICAgICAgXyApLFxuICAgICAgXyApIC0+XG4gICAgZmFsc2VcblxubGV0IGlzX2xpbmtlZF9vbiBpIGFnID1cbiAgVG9vbHMuYXJyYXlfZmlsdGVyIChpc19saW5rZWRfb25fcG9ydCAoLTEpIGkpIGFnLkxLYXBwYS5yYV9wb3J0cyA8PiBbXVxuXG5sZXQgZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24gKChyZW1vdmVkLCBhZGRlZCkgYXMgdHJhbnNmKSBsaW5rc190cmFuc2YgcGxhY2VcbiAgICBzaXRlIChjYW5kLCBfKSBzd2l0Y2ggPVxuICBtYXRjaCBzd2l0Y2ggd2l0aFxuICB8IExLYXBwYS5GcmVlZCAtPlxuICAgICggKGNhbmQgOjogcmVtb3ZlZCwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAocGxhY2UsIHNpdGUpIDo6IGFkZGVkKSxcbiAgICAgIGxpbmtzX3RyYW5zZiApXG4gIHwgTEthcHBhLk1haW50YWluZWQgLT4gdHJhbnNmLCBsaW5rc190cmFuc2ZcbiAgfCBMS2FwcGEuRXJhc2VkIC0+IChjYW5kIDo6IHJlbW92ZWQsIGFkZGVkKSwgbGlua3NfdHJhbnNmXG4gIHwgTEthcHBhLkxpbmtlZCBpIC0+XG4gICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgbGlua3NfdHJhbnNmIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBsaW5rc190cmFuc2YnID0gTW9kcy5JbnRNYXAuYWRkIGkgKHBsYWNlLCBzaXRlKSBsaW5rc190cmFuc2YgaW5cbiAgICAgIChjYW5kIDo6IHJlbW92ZWQsIGFkZGVkKSwgbGlua3NfdHJhbnNmJ1xuICAgIHwgU29tZSBkc3QnIC0+XG4gICAgICBsZXQgbGlua3NfdHJhbnNmJyA9IE1vZHMuSW50TWFwLnJlbW92ZSBpIGxpbmtzX3RyYW5zZiBpblxuICAgICAgKCAoIGNhbmQgOjogcmVtb3ZlZCxcbiAgICAgICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKHBsYWNlLCBzaXRlKSwgZHN0JykgOjogYWRkZWQgKSxcbiAgICAgICAgbGlua3NfdHJhbnNmJyApKVxuXG5sZXQgZGVmaW5lX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uICgocmVtb3ZlZCwgYWRkZWQpIGFzIHRyYW5zZikgbGlua3NfdHJhbnNmXG4gICAgcGxhY2Ugc2l0ZSBzd2l0Y2ggPVxuICBtYXRjaCBzd2l0Y2ggd2l0aFxuICB8IExLYXBwYS5GcmVlZCAtPlxuICAgICggKHJlbW92ZWQsIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKHBsYWNlLCBzaXRlKSA6OiBhZGRlZCksXG4gICAgICBsaW5rc190cmFuc2YgKVxuICB8IExLYXBwYS5FcmFzZWQgLT4gdHJhbnNmLCBsaW5rc190cmFuc2ZcbiAgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiB0cmFuc2YsIGxpbmtzX3RyYW5zZlxuICB8IExLYXBwYS5MaW5rZWQgaSAtPlxuICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIGxpbmtzX3RyYW5zZiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgbGlua3NfdHJhbnNmJyA9IE1vZHMuSW50TWFwLmFkZCBpIChwbGFjZSwgc2l0ZSkgbGlua3NfdHJhbnNmIGluXG4gICAgICB0cmFuc2YsIGxpbmtzX3RyYW5zZidcbiAgICB8IFNvbWUgZHN0JyAtPlxuICAgICAgbGV0IGxpbmtzX3RyYW5zZicgPSBNb2RzLkludE1hcC5yZW1vdmUgaSBsaW5rc190cmFuc2YgaW5cbiAgICAgICggKCByZW1vdmVkLFxuICAgICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgocGxhY2UsIHNpdGUpLCBkc3QnKSA6OiBhZGRlZCApLFxuICAgICAgICBsaW5rc190cmFuc2YnICkpXG5cbmxldCBhZGRfaW5zdGFudGlhdGlvbl9mcmVlIGFjdGlvbnMgcGwgcyA9IGZ1bmN0aW9uXG4gIHwgTEthcHBhLkZyZWVkIC0+IEluc3RhbnRpYXRpb24uRnJlZSAocGwsIHMpIDo6IGFjdGlvbnNcbiAgfCBMS2FwcGEuTGlua2VkIF8gfCBMS2FwcGEuTWFpbnRhaW5lZCB8IExLYXBwYS5FcmFzZWQgLT4gYWN0aW9uc1xuXG5sZXQgYWRkX3NpZGVfc2l0ZSBzaWRlX3NpdGVzIGJ0IHBsIHMgPSBmdW5jdGlvblxuICB8IExLYXBwYS5GcmVlZCB8IExLYXBwYS5MaW5rZWQgXyB8IExLYXBwYS5FcmFzZWQgLT5cbiAgICAoKHBsLCBzKSwgYnQpIDo6IHNpZGVfc2l0ZXNcbiAgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiBzaWRlX3NpdGVzXG5cbmxldCBhZGRfZnJlZWRfc2lkZV9lZmZlY3Qgc2lkZV9lZmZlY3RzIHBsIHMgPSBmdW5jdGlvblxuICB8IChMS2FwcGEuTE5LX1ZBTFVFIF8sIF8pLCBMS2FwcGEuRnJlZWQgLT4gKHBsLCBzKSA6OiBzaWRlX2VmZmVjdHNcbiAgfCAoIChMS2FwcGEuTE5LX1ZBTFVFIF8sIF8pLFxuICAgICAgKExLYXBwYS5NYWludGFpbmVkIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXykgKVxuICB8ICggKCAoIExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkxOS19UWVBFIF9cbiAgICAgICAgfCBMS2FwcGEuQU5ZX0ZSRUUgKSxcbiAgICAgICAgXyApLFxuICAgICAgXyApIC0+XG4gICAgc2lkZV9lZmZlY3RzXG5cbmxldCBhZGRfZXh0cmFfc2lkZV9lZmZlY3RzIHNpZGVfZWZmZWN0cyBwbGFjZSByZWZpbmVkID1cbiAgbGV0IHJlYyBhdXggc2lkZV9lZmZlY3RzIHNpdGVfaWQgPVxuICAgIGlmIHNpdGVfaWQgPCAwIHRoZW5cbiAgICAgIHNpZGVfZWZmZWN0c1xuICAgIGVsc2VcbiAgICAgIGF1eFxuICAgICAgICAoYWRkX2ZyZWVkX3NpZGVfZWZmZWN0IHNpZGVfZWZmZWN0cyBwbGFjZSBzaXRlX2lkIHJlZmluZWQuKHNpdGVfaWQpKVxuICAgICAgICAocHJlZCBzaXRlX2lkKVxuICBpblxuICBhdXggc2lkZV9lZmZlY3RzIChwcmVkIChBcnJheS5sZW5ndGggcmVmaW5lZCkpXG5cbigqIERlYWxzIHdpdGggdGVzdHMsIGVyYXN1cmUgaW50ZXJuYWwgc3RhdGUgY2hhbmdlIGFuZCByZWxlYXNlIChidXRcbiAgIG5vdCBiaW5kaW5nKSopXG5sZXQgbWFrZV9pbnN0YW50aWF0aW9uIHBsYWNlIGxpbmtzIGV2ZW50IHJlZl9wb3J0cyBpc19lcmFzZWQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT5cbiAgICB7XG4gICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gZXZlbnQuSW5zdGFudGlhdGlvbi50ZXN0cztcbiAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGV2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9ucztcbiAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYyA9IGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdCA9XG4gICAgICAgIGFkZF9leHRyYV9zaWRlX2VmZmVjdHMgZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0IHBsYWNlXG4gICAgICAgICAgcmVmX3BvcnRzO1xuICAgICAgSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgPSBldmVudC5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cztcbiAgICB9XG4gIHwgU29tZSAocG9ydHMsIGludHMpIC0+XG4gICAgKG1hdGNoIGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHMgd2l0aFxuICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCB0aGlzX2NjX3Rlc3RzIDo6IG9fY2NfdGVzdHMgLT5cbiAgICAgIGxldCByZWMgYXV4IHNpdGVfaWQgdGVzdHMgYWN0aW9ucyBzaWRlX2VmZmVjdHNfc3JjIHNpZGVfZWZmZWN0c19kc3QgbGlua3NcbiAgICAgICAgICA9XG4gICAgICAgIGlmIHNpdGVfaWQgPj0gQXJyYXkubGVuZ3RoIHBvcnRzIHRoZW5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gdGVzdHMgOjogb19jY190ZXN0cztcbiAgICAgICAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucztcbiAgICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdDtcbiAgICAgICAgICAgIEluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgICAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHM7XG4gICAgICAgICAgfVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgdGVzdHMnLCBhY3Rpb25zJyA9XG4gICAgICAgICAgICBtYXRjaCBpbnRzLihzaXRlX2lkKSB3aXRoXG4gICAgICAgICAgICB8IExLYXBwYS5JX0FOWSB8IExLYXBwYS5JX0FOWV9FUkFTRUQgLT4gdGVzdHMsIGFjdGlvbnNcbiAgICAgICAgICAgIHwgTEthcHBhLklfQU5ZX0NIQU5HRUQgaiAtPlxuICAgICAgICAgICAgICB0ZXN0cywgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKChwbGFjZSwgc2l0ZV9pZCksIGopIDo6IGFjdGlvbnNcbiAgICAgICAgICAgIHwgTEthcHBhLklfVkFMX0NIQU5HRUQgKGksIGopIC0+XG4gICAgICAgICAgICAgICggSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgKChwbGFjZSwgc2l0ZV9pZCksIGkpIDo6IHRlc3RzLFxuICAgICAgICAgICAgICAgIGlmIGkgPD4gaiB0aGVuXG4gICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoKHBsYWNlLCBzaXRlX2lkKSwgaikgOjogYWN0aW9uc1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGFjdGlvbnMgKVxuICAgICAgICAgICAgfCBMS2FwcGEuSV9WQUxfRVJBU0VEIGkgLT5cbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgKChwbGFjZSwgc2l0ZV9pZCksIGkpIDo6IHRlc3RzLCBhY3Rpb25zXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdGVzdHMnJywgYWN0aW9ucycnLCBzaWRlX3NpdGVzJywgc2lkZV9lZmZlY3RzJywgbGlua3MnID1cbiAgICAgICAgICAgIG1hdGNoIHBvcnRzLihzaXRlX2lkKSB3aXRoXG4gICAgICAgICAgICB8ICgoTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSwgcyAtPlxuICAgICAgICAgICAgICBsZXQgc2lkZV9lZmZlY3RzJyA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPlxuICAgICAgICAgICAgICAgICAgYWRkX2ZyZWVkX3NpZGVfZWZmZWN0IHNpZGVfZWZmZWN0c19kc3QgcGxhY2Ugc2l0ZV9pZFxuICAgICAgICAgICAgICAgICAgICByZWZfcG9ydHMuKHNpdGVfaWQpXG4gICAgICAgICAgICAgICAgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfIHwgTEthcHBhLkZyZWVkIC0+XG4gICAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfZHN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggdGVzdHMnLFxuICAgICAgICAgICAgICAgIGFkZF9pbnN0YW50aWF0aW9uX2ZyZWUgYWN0aW9ucycgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgIGFkZF9zaWRlX3NpdGUgc2lkZV9lZmZlY3RzX3NyYyBJbnN0YW50aWF0aW9uLkFOWSBwbGFjZSBzaXRlX2lkIHMsXG4gICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzJyxcbiAgICAgICAgICAgICAgICBsaW5rcyApXG4gICAgICAgICAgICB8IChMS2FwcGEuTE5LX0ZSRUUsIF8pLCBzIC0+XG4gICAgICAgICAgICAgICggSW5zdGFudGlhdGlvbi5Jc19GcmVlIChwbGFjZSwgc2l0ZV9pZCkgOjogdGVzdHMnLFxuICAgICAgICAgICAgICAgIGFkZF9pbnN0YW50aWF0aW9uX2ZyZWUgYWN0aW9ucycgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19zcmMsXG4gICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX2RzdCxcbiAgICAgICAgICAgICAgICBsaW5rcyApXG4gICAgICAgICAgICB8IChMS2FwcGEuTE5LX1NPTUUsIF8pLCBzIC0+XG4gICAgICAgICAgICAgICggSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCAocGxhY2UsIHNpdGVfaWQpIDo6IHRlc3RzJyxcbiAgICAgICAgICAgICAgICBhZGRfaW5zdGFudGlhdGlvbl9mcmVlIGFjdGlvbnMnIHBsYWNlIHNpdGVfaWQgcyxcbiAgICAgICAgICAgICAgICBhZGRfc2lkZV9zaXRlIHNpZGVfZWZmZWN0c19zcmMgSW5zdGFudGlhdGlvbi5CT1VORCBwbGFjZSBzaXRlX2lkXG4gICAgICAgICAgICAgICAgICBzLFxuICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19kc3QsXG4gICAgICAgICAgICAgICAgbGlua3MgKVxuICAgICAgICAgICAgfCAoTEthcHBhLkxOS19UWVBFIChiLCBhKSwgXyksIHMgLT5cbiAgICAgICAgICAgICAgKCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKChwbGFjZSwgc2l0ZV9pZCksIChhLCBiKSlcbiAgICAgICAgICAgICAgICA6OiB0ZXN0cycsXG4gICAgICAgICAgICAgICAgYWRkX2luc3RhbnRpYXRpb25fZnJlZSBhY3Rpb25zJyBwbGFjZSBzaXRlX2lkIHMsXG4gICAgICAgICAgICAgICAgYWRkX3NpZGVfc2l0ZSBzaWRlX2VmZmVjdHNfc3JjXG4gICAgICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5CT1VORF9UWVBFIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIHBsYWNlIHNpdGVfaWQgcyxcbiAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfZHN0LFxuICAgICAgICAgICAgICAgIGxpbmtzIClcbiAgICAgICAgICAgIHwgKExLYXBwYS5MTktfVkFMVUUgKGksIF8pLCBfKSwgcyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBsaW5rcyB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICAgICAgKCB4IDo6IHRlc3RzJyxcbiAgICAgICAgICAgICAgICAgIGFkZF9pbnN0YW50aWF0aW9uX2ZyZWUgYWN0aW9ucycgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX3NyYyxcbiAgICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19kc3QsXG4gICAgICAgICAgICAgICAgICBNb2RzLkludE1hcC5yZW1vdmUgaSBsaW5rcyApXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICggdGVzdHMnLFxuICAgICAgICAgICAgICAgICAgYWRkX2luc3RhbnRpYXRpb25fZnJlZSBhY3Rpb25zJyBwbGFjZSBzaXRlX2lkIHMsXG4gICAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfc3JjLFxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX2RzdCxcbiAgICAgICAgICAgICAgICAgIGxpbmtzICkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggKHN1Y2Mgc2l0ZV9pZCkgdGVzdHMnJyBhY3Rpb25zJycgc2lkZV9zaXRlcycgc2lkZV9lZmZlY3RzJyBsaW5rcydcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCAwXG4gICAgICAgIChJbnN0YW50aWF0aW9uLklzX0hlcmUgcGxhY2UgOjogdGhpc19jY190ZXN0cylcbiAgICAgICAgKGlmIGlzX2VyYXNlZCB0aGVuXG4gICAgICAgICAgIEluc3RhbnRpYXRpb24uUmVtb3ZlIHBsYWNlIDo6IGV2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgICAgICAgZWxzZVxuICAgICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnMpXG4gICAgICAgIGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyY1xuICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3QgbGlua3MpXG5cbmxldCByZWMgYWRkX2FnZW50c19pbl9jYyBzaWdzIGlkIHdrIHJlZ2lzdGVyZWRfbGlua3NcbiAgICAoKHJlbW92ZWQsIGFkZGVkKSBhcyB0cmFuc2YpIGxpbmtzX3RyYW5zZiBpbnN0YW50aWF0aW9ucyByZW1haW5zID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIChtYXRjaCBNb2RzLkludE1hcC5yb290IHJlZ2lzdGVyZWRfbGlua3Mgd2l0aFxuICAgIHwgTm9uZSAtPiB3aywgdHJhbnNmLCBsaW5rc190cmFuc2YsIGluc3RhbnRpYXRpb25zLCByZW1haW5zXG4gICAgfCBTb21lIChrZXksIF8pIC0+IGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUga2V5IExvYy5kdW1teSlcbiAgfCBhZyA6OiBhZ19sIC0+XG4gICAgbGV0IG5vZGUsIHdrID0gUGF0dGVybi5uZXdfbm9kZSB3ayBhZy5MS2FwcGEucmFfdHlwZSBpblxuICAgIGxldCBwbGFjZSA9IE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nIChub2RlLCBpZCkgaW5cbiAgICBsZXQgdHJhbnNmJyA9XG4gICAgICBpZiBhZy5MS2FwcGEucmFfZXJhc2VkIHRoZW5cbiAgICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBwbGFjZSA6OiByZW1vdmVkLCBhZGRlZFxuICAgICAgZWxzZVxuICAgICAgICB0cmFuc2ZcbiAgICBpblxuICAgIGxldCByZWMgaGFuZGxlX3BvcnRzIHdrIHJfbCBjX2wgKHJlbW92ZWQsIGFkZGVkKSBsX3QgcmUgYWNjIHNpdGVfaWQgPVxuICAgICAgaWYgc2l0ZV9pZCA9IEFycmF5Lmxlbmd0aCBhZy5MS2FwcGEucmFfcG9ydHMgdGhlbiAoXG4gICAgICAgIGxldCBpbnN0YW50aWF0aW9ucycgPVxuICAgICAgICAgIG1ha2VfaW5zdGFudGlhdGlvbiBwbGFjZSBjX2wgaW5zdGFudGlhdGlvbnMgYWcuTEthcHBhLnJhX3BvcnRzXG4gICAgICAgICAgICBhZy5MS2FwcGEucmFfZXJhc2VkIGFnLkxLYXBwYS5yYV9zeW50YXhcbiAgICAgICAgaW5cbiAgICAgICAgYWRkX2FnZW50c19pbl9jYyBzaWdzIGlkIHdrIHJfbCAocmVtb3ZlZCwgYWRkZWQpIGxfdCBpbnN0YW50aWF0aW9ucycgcmVcbiAgICAgICAgICBhY2NcbiAgICAgICkgZWxzZSAoXG4gICAgICAgIGxldCB0cmFuc2YsIHdrJyA9XG4gICAgICAgICAgbWF0Y2ggYWcuTEthcHBhLnJhX2ludHMuKHNpdGVfaWQpIHdpdGhcbiAgICAgICAgICB8IExLYXBwYS5JX0FOWSAtPiAocmVtb3ZlZCwgYWRkZWQpLCB3a1xuICAgICAgICAgIHwgTEthcHBhLklfQU5ZX0VSQVNFRCAtPlxuICAgICAgICAgICAgKCAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHBsYWNlLCBzaXRlX2lkKVxuICAgICAgICAgICAgICAgIDo6IHJlbW92ZWQsXG4gICAgICAgICAgICAgICAgYWRkZWQgKSxcbiAgICAgICAgICAgICAgd2sgKVxuICAgICAgICAgIHwgTEthcHBhLklfQU5ZX0NIQU5HRUQgaiAtPlxuICAgICAgICAgICAgKCAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHBsYWNlLCBzaXRlX2lkKVxuICAgICAgICAgICAgICAgIDo6IHJlbW92ZWQsXG4gICAgICAgICAgICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZFxuICAgICAgICAgICAgICAgICAgKHBsYWNlLCBzaXRlX2lkLCBqKVxuICAgICAgICAgICAgICAgIDo6IGFkZGVkICksXG4gICAgICAgICAgICAgIHdrIClcbiAgICAgICAgICB8IExLYXBwYS5JX1ZBTF9DSEFOR0VEIChpLCBqKSAtPlxuICAgICAgICAgICAgKCAoaWYgaSA9IGogdGhlblxuICAgICAgICAgICAgICAgICByZW1vdmVkLCBhZGRlZFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWRcbiAgICAgICAgICAgICAgICAgICAgIChwbGFjZSwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICAgICA6OiByZW1vdmVkLFxuICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWRcbiAgICAgICAgICAgICAgICAgICAgIChwbGFjZSwgc2l0ZV9pZCwgailcbiAgICAgICAgICAgICAgICAgICA6OiBhZGRlZCApKSxcbiAgICAgICAgICAgICAgUGF0dGVybi5uZXdfaW50ZXJuYWxfc3RhdGUgd2sgKG5vZGUsIHNpdGVfaWQpIGkgKVxuICAgICAgICAgIHwgTEthcHBhLklfVkFMX0VSQVNFRCBpIC0+XG4gICAgICAgICAgICAoICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCAocGxhY2UsIHNpdGVfaWQpXG4gICAgICAgICAgICAgICAgOjogcmVtb3ZlZCxcbiAgICAgICAgICAgICAgICBhZGRlZCApLFxuICAgICAgICAgICAgICBQYXR0ZXJuLm5ld19pbnRlcm5hbF9zdGF0ZSB3ayAobm9kZSwgc2l0ZV9pZCkgaSApXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGFnLkxLYXBwYS5yYV9wb3J0cy4oc2l0ZV9pZCkgd2l0aFxuICAgICAgICB8ICgoTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBwb3MpLCBzIC0+XG4gICAgICAgICAgbGV0IHRyYW5zZicsIGxfdCcgPVxuICAgICAgICAgICAgZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24gdHJhbnNmIGxfdCBwbGFjZSBzaXRlX2lkXG4gICAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyIChwbGFjZSwgc2l0ZV9pZCksXG4gICAgICAgICAgICAgICAgU29tZSBwb3MgKVxuICAgICAgICAgICAgICBzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBoYW5kbGVfcG9ydHMgd2snIHJfbCBjX2wgdHJhbnNmJyBsX3QnIHJlIGFjYyAoc3VjYyBzaXRlX2lkKVxuICAgICAgICB8IChMS2FwcGEuTE5LX0ZSRUUsIF8pLCBzIC0+XG4gICAgICAgICAgbGV0IHdrJycgPSBQYXR0ZXJuLm5ld19mcmVlIHdrJyAobm9kZSwgc2l0ZV9pZCkgaW5cbiAgICAgICAgICBsZXQgdHJhbnNmJywgbF90JyA9XG4gICAgICAgICAgICBkZWZpbmVfZnVsbF90cmFuc2Zvcm1hdGlvbiB0cmFuc2YgbF90IHBsYWNlIHNpdGVfaWRcbiAgICAgICAgICAgICAgKFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKHBsYWNlLCBzaXRlX2lkKSwgTm9uZSlcbiAgICAgICAgICAgICAgc1xuICAgICAgICAgIGluXG4gICAgICAgICAgaGFuZGxlX3BvcnRzIHdrJycgcl9sIGNfbCB0cmFuc2YnIGxfdCcgcmUgYWNjIChzdWNjIHNpdGVfaWQpXG4gICAgICAgIHwgKChMS2FwcGEuTE5LX1NPTUUgfCBMS2FwcGEuTE5LX1RZUEUgXyksIF8pLCBfIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgIFwiVHJ5IHRvIGNyZWF0ZSB0aGUgY29ubmVjdGVkIGNvbXBvbmVudHMgb2YgYW4gYW1iaWd1b3VzIFxcXG4gICAgICAgICAgICAgICAgICAgbWl4dHVyZS5cIikpXG4gICAgICAgIHwgKExLYXBwYS5MTktfVkFMVUUgKGksIF8pLCBwb3MpLCBzIC0+XG4gICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgcl9sIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKChub2RlJywgc2l0ZScpIGFzIGRzdCkgLT5cbiAgICAgICAgICAgIGxldCBkc3RfcGxhY2UgPSBNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAobm9kZScsIGlkKSwgc2l0ZScgaW5cbiAgICAgICAgICAgIGxldCB3aycnID0gUGF0dGVybi5uZXdfbGluayB3aycgKG5vZGUsIHNpdGVfaWQpIGRzdCBpblxuICAgICAgICAgICAgbGV0IGNfbCcgPVxuICAgICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgaVxuICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvICgocGxhY2UsIHNpdGVfaWQpLCBkc3RfcGxhY2UpKVxuICAgICAgICAgICAgICAgIGNfbFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCB0cmFuc2YnLCBsX3QnID1cbiAgICAgICAgICAgICAgZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24gdHJhbnNmIGxfdCBwbGFjZSBzaXRlX2lkXG4gICAgICAgICAgICAgICAgKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKHBsYWNlLCBzaXRlX2lkKSwgZHN0X3BsYWNlKSxcbiAgICAgICAgICAgICAgICAgIFNvbWUgcG9zIClcbiAgICAgICAgICAgICAgICBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaGFuZGxlX3BvcnRzIHdrJycgKE1vZHMuSW50TWFwLnJlbW92ZSBpIHJfbCkgY19sJyB0cmFuc2YnIGxfdCcgcmVcbiAgICAgICAgICAgICAgYWNjIChzdWNjIHNpdGVfaWQpXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X2ZpbHRlclxuICAgICAgICAgICAgICAgICAoaXNfbGlua2VkX29uX3BvcnQgc2l0ZV9pZCBpKVxuICAgICAgICAgICAgICAgICBhZy5MS2FwcGEucmFfcG9ydHNcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFsgc2l0ZV9pZCcgXVxuICAgICAgICAgICAgKCogbGluayBiZXR3ZWVuIDIgc2l0ZXMgb2YgMSBhZ2VudCAqKVxuICAgICAgICAgICAgICB3aGVuIExpc3QuZm9yX2FsbCAoZnVuIHggLT4gbm90IChpc19saW5rZWRfb24gaSB4KSkgYWNjXG4gICAgICAgICAgICAgICAgICAgJiYgTGlzdC5mb3JfYWxsIChmdW4geCAtPiBub3QgKGlzX2xpbmtlZF9vbiBpIHgpKSByZSAtPlxuICAgICAgICAgICAgICBsZXQgd2snJywgKHRyYW5zZicsIGxfdCcpID1cbiAgICAgICAgICAgICAgICBpZiBzaXRlX2lkJyA+IHNpdGVfaWQgdGhlblxuICAgICAgICAgICAgICAgICAgKCBQYXR0ZXJuLm5ld19saW5rIHdrJyAobm9kZSwgc2l0ZV9pZCkgKG5vZGUsIHNpdGVfaWQnKSxcbiAgICAgICAgICAgICAgICAgICAgZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24gdHJhbnNmIGxfdCBwbGFjZSBzaXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBsYWNlLCBzaXRlX2lkKSwgKHBsYWNlLCBzaXRlX2lkJykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBwb3MgKVxuICAgICAgICAgICAgICAgICAgICAgIHMgKVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIHdrJywgZGVmaW5lX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIHRyYW5zZiBsX3QgcGxhY2Ugc2l0ZV9pZCBzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBjX2wnID1cbiAgICAgICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgaVxuICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG9cbiAgICAgICAgICAgICAgICAgICAgICgocGxhY2UsIHNpdGVfaWQpLCAocGxhY2UsIHNpdGVfaWQnKSkpXG4gICAgICAgICAgICAgICAgICBjX2xcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgaGFuZGxlX3BvcnRzIHdrJycgcl9sIGNfbCcgdHJhbnNmJyBsX3QnIHJlIGFjYyAoc3VjYyBzaXRlX2lkKVxuICAgICAgICAgICAgfCBfIDo6IF8gLT4gbGlua19vY2N1cmVuY2VfZmFpbHVyZSBpIHBvc1xuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAoKiBsaW5rIGJldHdlZW4gMiBhZ2VudHMgKilcbiAgICAgICAgICAgICAgbGV0IHJfbCcgPSBNb2RzLkludE1hcC5hZGQgaSAobm9kZSwgc2l0ZV9pZCkgcl9sIGluXG4gICAgICAgICAgICAgIGxldCB0cmFuc2YnLCBsX3QnID1cbiAgICAgICAgICAgICAgICBkZWZpbmVfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb24gdHJhbnNmIGxfdCBwbGFjZSBzaXRlX2lkIHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIExpc3QucGFydGl0aW9uIChpc19saW5rZWRfb24gaSkgcmUgd2l0aFxuICAgICAgICAgICAgICB8IFtdLCByZScgLT5cbiAgICAgICAgICAgICAgICBpZiBMaXN0X3V0aWwuZXhpc3RzX3VuaXEgKGlzX2xpbmtlZF9vbiBpKSBhY2MgdGhlblxuICAgICAgICAgICAgICAgICAgaGFuZGxlX3BvcnRzIHdrJyByX2wnIGNfbCB0cmFuc2YnIGxfdCcgcmUnIGFjYyAoc3VjYyBzaXRlX2lkKVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUgaSBwb3NcbiAgICAgICAgICAgICAgfCBbIG4gXSwgcmUnXG4gICAgICAgICAgICAgICAgd2hlbiBMaXN0LmZvcl9hbGwgKGZ1biB4IC0+IG5vdCAoaXNfbGlua2VkX29uIGkgeCkpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGhhbmRsZV9wb3J0cyB3aycgcl9sJyBjX2wgdHJhbnNmJyBsX3QnIHJlJyAobiA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICAoc3VjYyBzaXRlX2lkKVxuICAgICAgICAgICAgICB8IF8sIF8gLT4gbGlua19vY2N1cmVuY2VfZmFpbHVyZSBpIHBvcykpKVxuICAgICAgKVxuICAgIGluXG4gICAgaGFuZGxlX3BvcnRzIHdrIHJlZ2lzdGVyZWRfbGlua3MgTW9kcy5JbnRNYXAuZW1wdHkgdHJhbnNmJyBsaW5rc190cmFuc2ZcbiAgICAgIHJlbWFpbnMgYWdfbCAwXG5cbmxldCByZWMgY29tcGxldGVfd2l0aF9jcmVhdGlvbiBzaWdzIChyZW1vdmVkLCBhZGRlZCkgbGlua3NfdHJhbnNmIGNyZWF0ZV9hY3Rpb25zXG4gICAgYWN0aW9ucyBmcmVzaCA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggTW9kcy5JbnRNYXAucm9vdCBsaW5rc190cmFuc2Ygd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgTGlzdC5yZXZfYXBwZW5kIGFjdGlvbnMgY3JlYXRlX2FjdGlvbnMsIChMaXN0LnJldiByZW1vdmVkLCBMaXN0LnJldiBhZGRlZClcbiAgICB8IFNvbWUgKGksIF8pIC0+IGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUgaSBMb2MuZHVtbXkpXG4gIHwgYWcgOjogYWdfbCAtPlxuICAgIGxldCBwbGFjZSA9IE1hdGNoaW5nLkFnZW50LkZyZXNoIChhZy5SYXdfbWl4dHVyZS5hX3R5cGUsIGZyZXNoKSBpblxuICAgIGxldCByZWMgaGFuZGxlX3BvcnRzIGFkZGVkIGxfdCBhY3Rpb25zIGludGYgc2l0ZV9pZCA9XG4gICAgICBpZiBzaXRlX2lkID0gQXJyYXkubGVuZ3RoIGFnLlJhd19taXh0dXJlLmFfcG9ydHMgdGhlbiAoXG4gICAgICAgIGxldCBjcmVhdGVfYWN0aW9ucycgPVxuICAgICAgICAgIEluc3RhbnRpYXRpb24uQ3JlYXRlIChwbGFjZSwgTGlzdC5yZXYgaW50ZikgOjogY3JlYXRlX2FjdGlvbnNcbiAgICAgICAgaW5cbiAgICAgICAgY29tcGxldGVfd2l0aF9jcmVhdGlvbiBzaWdzIChyZW1vdmVkLCBhZGRlZCkgbF90IGNyZWF0ZV9hY3Rpb25zJyBhY3Rpb25zXG4gICAgICAgICAgKHN1Y2MgZnJlc2gpIGFnX2xcbiAgICAgICkgZWxzZSAoXG4gICAgICAgIGxldCBhZGRlZCcsIGFjdGlvbnMnLCBwb2ludCA9XG4gICAgICAgICAgbWF0Y2ggYWcuUmF3X21peHR1cmUuYV9pbnRzLihzaXRlX2lkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFkZGVkLCBhY3Rpb25zLCAoc2l0ZV9pZCwgTm9uZSlcbiAgICAgICAgICB8IFNvbWUgaSAtPlxuICAgICAgICAgICAgKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkIChwbGFjZSwgc2l0ZV9pZCwgaSlcbiAgICAgICAgICAgICAgOjogYWRkZWQsXG4gICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsICgocGxhY2UsIHNpdGVfaWQpLCBpKSA6OiBhY3Rpb25zLFxuICAgICAgICAgICAgICAoc2l0ZV9pZCwgU29tZSBpKSApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhZGRlZCcnLCBhY3Rpb25zJycsIGxfdCcgPVxuICAgICAgICAgIG1hdGNoIGFnLlJhd19taXh0dXJlLmFfcG9ydHMuKHNpdGVfaWQpIHdpdGhcbiAgICAgICAgICB8IFJhd19taXh0dXJlLkZSRUUgLT5cbiAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAocGxhY2UsIHNpdGVfaWQpIDo6IGFkZGVkJyxcbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5GcmVlIChwbGFjZSwgc2l0ZV9pZCkgOjogYWN0aW9ucycsXG4gICAgICAgICAgICAgIGxfdCApXG4gICAgICAgICAgfCBSYXdfbWl4dHVyZS5WQUwgaSAtPlxuICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLnBvcCBpIGxfdCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgZHN0LCBsX3QnIC0+XG4gICAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChwbGFjZSwgc2l0ZV9pZCksIGRzdClcbiAgICAgICAgICAgICAgICA6OiBhZGRlZCcsXG4gICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5CaW5kX3RvICgocGxhY2UsIHNpdGVfaWQpLCBkc3QpXG4gICAgICAgICAgICAgICAgOjogSW5zdGFudGlhdGlvbi5CaW5kX3RvIChkc3QsIChwbGFjZSwgc2l0ZV9pZCkpXG4gICAgICAgICAgICAgICAgOjogYWN0aW9ucycsXG4gICAgICAgICAgICAgICAgbF90JyApXG4gICAgICAgICAgICB8IE5vbmUsIGxfdCAtPlxuICAgICAgICAgICAgICBsZXQgbF90JyA9IE1vZHMuSW50TWFwLmFkZCBpIChwbGFjZSwgc2l0ZV9pZCkgbF90IGluXG4gICAgICAgICAgICAgIGFkZGVkJywgYWN0aW9ucycsIGxfdCcpXG4gICAgICAgIGluXG4gICAgICAgIGhhbmRsZV9wb3J0cyBhZGRlZCcnIGxfdCcgYWN0aW9ucycnIChwb2ludCA6OiBpbnRmKSAoc3VjYyBzaXRlX2lkKVxuICAgICAgKVxuICAgIGluXG4gICAgaGFuZGxlX3BvcnRzXG4gICAgICAoUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBwbGFjZSA6OiBhZGRlZClcbiAgICAgIGxpbmtzX3RyYW5zZiBhY3Rpb25zIFtdIDBcblxubGV0IGluY3Jfb3JpZ2luID0gZnVuY3Rpb25cbiAgfCAoT3BlcmF0b3IuQUxHIF8gfCBPcGVyYXRvci5NT0RJRiBfKSBhcyB4IC0+IHhcbiAgfCBPcGVyYXRvci5SVUxFIGkgLT4gT3BlcmF0b3IuUlVMRSAoc3VjYyBpKVxuXG5sZXQgY29ubmVjdGVkX2NvbXBvbmVudHNfb2ZfbWl4dHVyZSB+ZGVidWdfbW9kZSBjcmVhdGVkIG1peCAoZW52LCBvcmlnaW4pID1cbiAgbGV0IHNpZ3MgPSBQYXR0ZXJuLlByZUVudi5zaWdzIGVudiBpblxuICBsZXQgcmVjIGF1eCBlbnYgdHJhbnNmb3JtYXRpb25zIGluc3RhbnRpYXRpb25zIGxpbmtzX3RyYW5zZiBhY2MgaWQgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGxldCByZW1vdmVkLCBhZGRlZCA9IHRyYW5zZm9ybWF0aW9ucyBpblxuICAgICAgbGV0IGFjdGlvbnMnID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIGFjcyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKChheCwgXykgYXMgeCksICgoYXksIF8pIGFzIHkpKVxuICAgICAgICAgICAgICB3aGVuIE1hdGNoaW5nLkFnZW50LmlzX2ZyZXNoIGF4IHx8IE1hdGNoaW5nLkFnZW50LmlzX2ZyZXNoIGF5IC0+XG4gICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uQmluZF90byAoeCwgeSkgOjogYWNzXG4gICAgICAgICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICh4LCB5KSAtPlxuICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLkJpbmQgKHgsIHkpIDo6IGFjc1xuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIF9cbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyIF9cbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCBfXG4gICAgICAgICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgX1xuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IF8gLT5cbiAgICAgICAgICAgICAgYWNzKVxuICAgICAgICAgIGluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24uYWN0aW9ucyBhZGRlZFxuICAgICAgaW5cbiAgICAgIGxldCB0cmFuc2Zvcm1hdGlvbnMnID0gTGlzdC5yZXYgcmVtb3ZlZCwgTGlzdC5yZXYgYWRkZWQgaW5cbiAgICAgIGxldCBhY3Rpb25zJycsIHRyYW5zZm9ybWF0aW9ucycnID1cbiAgICAgICAgY29tcGxldGVfd2l0aF9jcmVhdGlvbiBzaWdzIHRyYW5zZm9ybWF0aW9ucycgbGlua3NfdHJhbnNmIFtdIGFjdGlvbnMnIDBcbiAgICAgICAgICBjcmVhdGVkXG4gICAgICBpblxuICAgICAgKCAoIG9yaWdpbixcbiAgICAgICAgICBUb29scy5hcnJheV9yZXZfb2ZfbGlzdCBhY2MsXG4gICAgICAgICAgeyBpbnN0YW50aWF0aW9ucyB3aXRoIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGFjdGlvbnMnJyB9LFxuICAgICAgICAgIHRyYW5zZm9ybWF0aW9ucycnICksXG4gICAgICAgIChlbnYsIE9wdGlvbl91dGlsLm1hcCBpbmNyX29yaWdpbiBvcmlnaW4pIClcbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IHdrID0gUGF0dGVybi5iZWdpbl9uZXcgZW52IGluXG4gICAgICBsZXQgaW5zdGFudGlhdGlvbnMnID1cbiAgICAgICAge1xuICAgICAgICAgIEluc3RhbnRpYXRpb24udGVzdHMgPSBbXSA6OiBpbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLnRlc3RzO1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24uYWN0aW9ucztcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmMgPVxuICAgICAgICAgICAgaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjO1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdCA9XG4gICAgICAgICAgICBpbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgPVxuICAgICAgICAgICAgaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHM7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgd2tfb3V0LCAocmVtb3ZlZCwgYWRkZWQpLCBsX3QsIGV2ZW50LCByZW1haW5zID1cbiAgICAgICAgYWRkX2FnZW50c19pbl9jYyBzaWdzIGlkIHdrIE1vZHMuSW50TWFwLmVtcHR5IHRyYW5zZm9ybWF0aW9uc1xuICAgICAgICAgIGxpbmtzX3RyYW5zZiBpbnN0YW50aWF0aW9ucycgdCBbIGggXVxuICAgICAgaW5cbiAgICAgIGxldCBlbnYnLCBpbmosIGNjLCBjY19pZCA9XG4gICAgICAgIFBhdHRlcm4uZmluaXNoX25ldyB+ZGVidWdfbW9kZSA/b3JpZ2luIHdrX291dFxuICAgICAgaW5cbiAgICAgIGxldCBhZGRlZCcgPVxuICAgICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgKFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24ucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluailcbiAgICAgICAgICBhZGRlZFxuICAgICAgaW5cbiAgICAgIGxldCByZW1vdmVkJyA9XG4gICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAoUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qKVxuICAgICAgICAgIHJlbW92ZWRcbiAgICAgIGluXG4gICAgICBsZXQgZXZlbnQnID1cbiAgICAgICAgSW5zdGFudGlhdGlvbi5yZW5hbWVfYWJzdHJhY3RfZXZlbnQgfmRlYnVnX21vZGUgaWQgaW5qIGV2ZW50XG4gICAgICBpblxuICAgICAgbGV0IGxfdCcgPVxuICAgICAgICBNb2RzLkludE1hcC5tYXBcbiAgICAgICAgICAoZnVuICgocCwgcykgYXMgeCkgLT5cbiAgICAgICAgICAgIGxldCBwJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcCBpblxuICAgICAgICAgICAgaWYgcCA9PSBwJyB0aGVuXG4gICAgICAgICAgICAgIHhcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgcCcsIHMpXG4gICAgICAgICAgbF90XG4gICAgICBpblxuICAgICAgYXV4IGVudicgKHJlbW92ZWQnLCBhZGRlZCcpIGV2ZW50JyBsX3QnICgoY2NfaWQsIGNjKSA6OiBhY2MpIChzdWNjIGlkKVxuICAgICAgICByZW1haW5zXG4gIGluXG4gIGF1eCBlbnYgKFtdLCBbXSkgSW5zdGFudGlhdGlvbi5lbXB0eV9ldmVudCBNb2RzLkludE1hcC5lbXB0eSBbXSAwIG1peFxuXG5sZXQgcnVsZV9taXh0dXJlc19vZl9hbWJpZ3VvdXNfcnVsZSBjb250YWN0X21hcCBzaWdzIHByZWNvbXBfbWl4cyA9XG4gIGFkZF9pbXBsaWNpdF9pbmZvcyBzaWdzXG4gICAgKGZpbmRfaW1wbGljaXRfaW5mb3MgY29udGFjdF9tYXBcbiAgICAgICAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBMS2FwcGEuY29weV9ydWxlX2FnZW50IHByZWNvbXBfbWl4cykpKVxuXG5sZXQgY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19ydWxlIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb25cbiAgICBjb250YWN0X21hcCBlbnYgP29yaWdpbiBwcmVjb21wX21peHMgY3JlYXRlZCA9XG4gIGxldCBub0NvdW50ZXJzID0gZGVidWdfbW9kZSBpblxuICBsZXQgc2lncyA9IFBhdHRlcm4uUHJlRW52LnNpZ3MgZW52IGluXG4gIGxldCBhbGxfbWl4cyA9XG4gICAgcnVsZV9taXh0dXJlc19vZl9hbWJpZ3VvdXNfcnVsZSBjb250YWN0X21hcCBzaWdzIHByZWNvbXBfbWl4c1xuICBpblxuICBsZXQgKCkgPVxuICAgIGlmIGNvbXBpbGVfbW9kZV9vbiB0aGVuXG4gICAgICBGb3JtYXQuZXByaW50ZiBcIkBbPHY+X19fX18oJWkpQCwlYUBdQC5cIiAoTGlzdC5sZW5ndGggYWxsX21peHMpXG4gICAgICAgIChQcC5saXN0IFBwLmN1dCAoZnVuIGYgeCAtPlxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhJWFAXVwiXG4gICAgICAgICAgICAgICAoTEthcHBhLnByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXM6dHJ1ZSBjcmVhdGVkKVxuICAgICAgICAgICAgICAgeFxuICAgICAgICAgICAgICAgKFJhd19taXh0dXJlLnByaW50IH5ub0NvdW50ZXJzIH5jcmVhdGVkOnRydWVcbiAgICAgICAgICAgICAgICAgIH5pbml0aWFsX2NvbW1hOih4IDw+IFtdKSB+c2lncylcbiAgICAgICAgICAgICAgIChMaXN0LnJldiBjcmVhdGVkKSkpXG4gICAgICAgIGFsbF9taXhzXG4gIGluXG4gIExpc3RfdXRpbC5mb2xkX3JpZ2h0X21hcFxuICAgIChjb25uZWN0ZWRfY29tcG9uZW50c19vZl9taXh0dXJlIH5kZWJ1Z19tb2RlIGNyZWF0ZWQpXG4gICAgYWxsX21peHMgKGVudiwgb3JpZ2luKVxuXG5sZXQgY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19taXh0dXJlIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb25cbiAgICBjb250YWN0X21hcCBlbnYgP29yaWdpbiBtaXggPVxuICBsZXQgcnVsZXMsIChjY19lbnYsIF8pID1cbiAgICBjb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW1iaWd1b3VzX3J1bGUgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgY29udGFjdF9tYXAgZW52ID9vcmlnaW4gbWl4IFtdXG4gIGluXG4gICggY2NfZW52LFxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgXywgbCwgZXZlbnQsIChbXSwgW10pIC0+IGwsIGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHNcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgIHJ1bGVzIClcblxubGV0IGF1eF9sa2FwcGFfb2ZfcGF0dGVybiBmcmVlX2lkIHAgPVxuICBQYXR0ZXJuLmZvbGRfYnlfdHlwZVxuICAgIChmdW4gfnBvcyB+YWdlbnRfdHlwZSBpbnRmIChhY2MsIGxua19wYWNrKSAtPlxuICAgICAgbGV0IHJhX3BvcnRzID1cbiAgICAgICAgQXJyYXkubWFrZSAoQXJyYXkubGVuZ3RoIGludGYpXG4gICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgICAgIGluXG4gICAgICBsZXQgcmFfaW50cyA9IEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCBpbnRmKSBMS2FwcGEuSV9BTlkgaW5cbiAgICAgIGxldCBvdXQgPVxuICAgICAgICB7XG4gICAgICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZ2VudF90eXBlO1xuICAgICAgICAgIExLYXBwYS5yYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgICAgICBMS2FwcGEucmFfc3ludGF4ID0gTm9uZTtcbiAgICAgICAgICBMS2FwcGEucmFfcG9ydHM7XG4gICAgICAgICAgTEthcHBhLnJhX2ludHM7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgYWNjJyA9IE1vZHMuSW50TWFwLmFkZCBwb3Mgb3V0IGFjYyBpblxuICAgICAgbGV0IGxua19wYWNrJyA9XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAoZnVuIHNpdGUgKChmcmVlX2lkLCBrbm93bl9zcmMpIGFzIHBhY2spIChsaW5rLCBpbnQpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBpZiBpbnQgPD4gLTEgdGhlbiByYV9pbnRzLihzaXRlKSA8LSBMS2FwcGEuSV9WQUxfQ0hBTkdFRCAoaW50LCBpbnQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggbGluayB3aXRoXG4gICAgICAgICAgICB8IFBhdHRlcm4uVW5TcGVjIC0+IHBhY2tcbiAgICAgICAgICAgIHwgUGF0dGVybi5GcmVlIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgcmFfcG9ydHMuKHNpdGUpIDwtXG4gICAgICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIExLYXBwYS5NYWludGFpbmVkXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHBhY2tcbiAgICAgICAgICAgIHwgUGF0dGVybi5MaW5rIChkc3RfYSwgZHN0X3MpIC0+XG4gICAgICAgICAgICAgIGxldCBzcmNfaW5mbyA9IHNpdGUsIGFnZW50X3R5cGUgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50Mk1hcC5maW5kX29wdGlvbiAoZHN0X2EsIGRzdF9zKSBrbm93bl9zcmMgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgKGlkLCBkc3RfaW5mbykgLT5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgcmFfcG9ydHMuKHNpdGUpIDwtXG4gICAgICAgICAgICAgICAgICAgICggTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGlkLCBkc3RfaW5mbykpLFxuICAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkIClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IG91dCBkc3RfYSBhY2MnKS5MS2FwcGEucmFfcG9ydHMuKGRzdF9zKSA8LVxuICAgICAgICAgICAgICAgICAgICAoIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChpZCwgc3JjX2luZm8pKSxcbiAgICAgICAgICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZCApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBwYWNrXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICggc3VjYyBmcmVlX2lkLFxuICAgICAgICAgICAgICAgICAgTW9kcy5JbnQyTWFwLmFkZCAocG9zLCBzaXRlKSAoZnJlZV9pZCwgc3JjX2luZm8pIGtub3duX3NyYyApKSlcbiAgICAgICAgICBsbmtfcGFjayBpbnRmXG4gICAgICBpblxuICAgICAgYWNjJywgbG5rX3BhY2snKVxuICAgIHBcbiAgICAoTW9kcy5JbnRNYXAuZW1wdHksIChmcmVlX2lkLCBNb2RzLkludDJNYXAuZW1wdHkpKVxuXG5sZXQgcmVnaXN0ZXJfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb25zIHNpZ3MgbWl4cyBmcmVlX2lkIHRyYW5zZnMgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gKChmaWQsIGZyKSBhcyBwYWNrKSAtPiBmdW5jdGlvblxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlV2hhdEV2ZXIgX1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkIF9cbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgXykgLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgKE1hdGNoaW5nLkFnZW50LkZyZXNoIChhX3R5cGUsIGlkKSkgLT5cbiAgICAgICAgbGV0IHNpID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYV90eXBlIGluXG4gICAgICAgIGxldCBuID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBSYXdfbWl4dHVyZS5hX3R5cGU7XG4gICAgICAgICAgICBSYXdfbWl4dHVyZS5hX3BvcnRzID0gQXJyYXkubWFrZSBzaSBSYXdfbWl4dHVyZS5GUkVFO1xuICAgICAgICAgICAgUmF3X21peHR1cmUuYV9pbnRzID0gQXJyYXkubWFrZSBzaSBOb25lO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgZmlkLCBNb2RzLkludE1hcC5hZGQgaWQgbiBmclxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoaWQsIF8pLCBjY19pZCksIHMsIGkpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQgbWl4cy4oY2NfaWQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgIChtYXRjaCBhLkxLYXBwYS5yYV9pbnRzLihzKSB3aXRoXG4gICAgICAgICAgICB8IExLYXBwYS5JX0FOWV9DSEFOR0VEIF8gfCBMS2FwcGEuSV9BTllfRVJBU0VEXG4gICAgICAgICAgICB8IExLYXBwYS5JX1ZBTF9FUkFTRUQgXyAtPlxuICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgTEthcHBhLklfVkFMX0NIQU5HRUQgKGosIGspIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoaiA9IGspIGluXG4gICAgICAgICAgICAgIGEuTEthcHBhLnJhX2ludHMuKHMpIDwtIExLYXBwYS5JX1ZBTF9DSEFOR0VEIChqLCBpKVxuICAgICAgICAgICAgfCBMS2FwcGEuSV9BTlkgLT4gYS5MS2FwcGEucmFfaW50cy4ocykgPC0gTEthcHBhLklfQU5ZX0NIQU5HRUQgaSlcbiAgICAgICAgaW5cbiAgICAgICAgcGFja1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkZyZXNoIChfLCBpZCksIHMsIGkpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQgZnIgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+IGEuUmF3X21peHR1cmUuYV9pbnRzLihzKSA8LSBTb21lIGlcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgcGFja1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChNYXRjaGluZy5BZ2VudC5GcmVzaCBfLCBfKSAtPiBmaWQsIGZyXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWRcbiAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKChpZCwgXyksIGNjX2lkKSwgcykgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBtaXhzLihjY19pZCkgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICBsZXQgdGVzdCwgZWRpdCA9IGEuTEthcHBhLnJhX3BvcnRzLihzKSBpblxuICAgICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChlZGl0ID0gTEthcHBhLk1haW50YWluZWQpIGluXG4gICAgICAgICAgICBhLkxLYXBwYS5yYV9wb3J0cy4ocykgPC0gdGVzdCwgTEthcHBhLkZyZWVkXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBwYWNrXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkXG4gICAgICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKChpZDEsIF8pLCBjY19pZDEpLCBzMSksXG4gICAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKChpZDIsIF8pLCBjY19pZDIpLCBzMikgKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkMSBtaXhzLihjY19pZDEpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgbGV0IHRlc3QsIGVkaXQgPSBhLkxLYXBwYS5yYV9wb3J0cy4oczEpIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGVkaXQgPSBMS2FwcGEuTWFpbnRhaW5lZCkgaW5cbiAgICAgICAgICAgIGEuTEthcHBhLnJhX3BvcnRzLihzMSkgPC0gdGVzdCwgTEthcHBhLkxpbmtlZCBmaWRcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQyIG1peHMuKGNjX2lkMikgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICBsZXQgdGVzdCwgZWRpdCA9IGEuTEthcHBhLnJhX3BvcnRzLihzMikgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoZWRpdCA9IExLYXBwYS5NYWludGFpbmVkKSBpblxuICAgICAgICAgICAgYS5MS2FwcGEucmFfcG9ydHMuKHMyKSA8LSB0ZXN0LCBMS2FwcGEuTGlua2VkIGZpZFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgc3VjYyBmaWQsIGZyXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkXG4gICAgICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggKF8sIGlkKSwgczEpLFxuICAgICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoZWlkLCBfKSwgY2NfaWQpLCBzMikgKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICggKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoZWlkLCBfKSwgY2NfaWQpLCBzMiksXG4gICAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggKF8sIGlkKSwgczEpICkgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBmciB3aXRoXG4gICAgICAgICAgfCBTb21lIGEgLT4gYS5SYXdfbWl4dHVyZS5hX3BvcnRzLihzMSkgPC0gUmF3X21peHR1cmUuVkFMIGZpZFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBlaWQgbWl4cy4oY2NfaWQpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgbGV0IHRlc3QsIGVkaXQgPSBhLkxLYXBwYS5yYV9wb3J0cy4oczIpIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGVkaXQgPSBMS2FwcGEuTWFpbnRhaW5lZCkgaW5cbiAgICAgICAgICAgIGEuTEthcHBhLnJhX3BvcnRzLihzMikgPC0gdGVzdCwgTEthcHBhLkxpbmtlZCBmaWRcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIHN1Y2MgZmlkLCBmclxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICggKE1hdGNoaW5nLkFnZW50LkZyZXNoIChfLCBpZDEpLCBzMSksXG4gICAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggKF8sIGlkMiksIHMyKSApIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQxIGZyIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhLlJhd19taXh0dXJlLmFfcG9ydHMuKHMxKSA8LSBSYXdfbWl4dHVyZS5WQUwgZmlkXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkMiBmciB3aXRoXG4gICAgICAgICAgfCBTb21lIGEgLT4gYS5SYXdfbWl4dHVyZS5hX3BvcnRzLihzMikgPC0gUmF3X21peHR1cmUuVkFMIGZpZFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgc3VjYyBmaWQsIGZyKVxuICAgIChmcmVlX2lkLCBNb2RzLkludE1hcC5lbXB0eSlcbiAgICB0cmFuc2ZzXG4gIHw+IHNuZFxuXG5sZXQgYWRkX25lZ2F0aXZlX3RyYW5zZm9ybWF0aW9ucyBzaWdzIG1peHMgdHJhbnNmcyA9XG4gIExpc3QuaXRlclxuICAgIChmdW5jdGlvblxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IChNYXRjaGluZy5BZ2VudC5GcmVzaCBfKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkZyZXNoIF8sIF8pXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgX1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKE1hdGNoaW5nLkFnZW50LkZyZXNoIF8sIF8pLCBfKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoXywgKE1hdGNoaW5nLkFnZW50LkZyZXNoIF8sIF8pKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChNYXRjaGluZy5BZ2VudC5GcmVzaCBfLCBfKSAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyIF9cbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyBfLCBfKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICgoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgXywgXyksIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyBfLCBfKSlcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgXywgXykgLT5cbiAgICAgICAgKClcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAoKGlkLCBfKSwgY2NfaWQpKSAtPlxuICAgICAgICBsZXQgYWcgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIG1peHMuKGNjX2lkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgU29tZSBhIC0+IGFcbiAgICAgICAgaW5cbiAgICAgICAgbWl4cy4oY2NfaWQpIDwtXG4gICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGlkIChMS2FwcGEuYWdlbnRfdG9fZXJhc2VkIHNpZ3MgYWcpIG1peHMuKGNjX2lkKSlcbiAgICB0cmFuc2ZzXG5cbmxldCBsa2FwcGFfb2ZfZWxlbWVudGFyeV9ydWxlIHNpZ3MgZG9tYWluIHIgPVxuICBsZXQgbmJfY2MgPSBBcnJheS5sZW5ndGggci5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzIGluXG4gIGxldCBtaXhzID0gQXJyYXkubWFrZSBuYl9jYyBNb2RzLkludE1hcC5lbXB0eSBpblxuICBsZXQgZnJlZV9pZCA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBjY19pZCBmcmVlX2lkIGNjIC0+XG4gICAgICAgIGxldCBvdXQsIChmcmVlX2lkJywgXykgPVxuICAgICAgICAgIGF1eF9sa2FwcGFfb2ZfcGF0dGVybiBmcmVlX2lkXG4gICAgICAgICAgICAoUGF0dGVybi5FbnYuY29udGVudCAoUGF0dGVybi5FbnYuZ2V0IGRvbWFpbiBjYykpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IG1peHMuKGNjX2lkKSA8LSBvdXQgaW5cbiAgICAgICAgZnJlZV9pZCcpXG4gICAgICAxIHIuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50c1xuICBpblxuICBsZXQgbmV3cyA9XG4gICAgcmVnaXN0ZXJfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb25zIHNpZ3MgbWl4cyBmcmVlX2lkIHIuUHJpbWl0aXZlcy5pbnNlcnRlZFxuICBpblxuICBsZXQgKCkgPSBhZGRfbmVnYXRpdmVfdHJhbnNmb3JtYXRpb25zIHNpZ3MgbWl4cyByLlByaW1pdGl2ZXMucmVtb3ZlZCBpblxuICBsZXQgcl9taXggPVxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhIGIgLT4gTW9kcy5JbnRNYXAuZm9sZCAoZnVuIF8geCBhY2MgLT4geCA6OiBhY2MpIGIgYSlcbiAgICAgIFtdIG1peHNcbiAgICB8PiBMaXN0LnJldlxuICBpblxuICBsZXQgcl9jcmVhdGVkID1cbiAgICBNb2RzLkludE1hcC5mb2xkIChmdW4gXyB4IGFjYyAtPiB4IDo6IGFjYykgbmV3cyBbXSB8PiBMaXN0LnJldlxuICBpblxuICByX21peCwgcl9jcmVhdGVkXG4oKntcbiAgTEthcHBhLnJfbWl4OyBMS2FwcGEucl9jcmVhdGVkOyBMS2FwcGEucl9lZGl0X3N0eWxlID0gdHJ1ZTtcbiAgTEthcHBhLnJfcmF0ZSA9IHIuUHJpbWl0aXZlcy5yYXRlO1xuICBMS2FwcGEucl91bl9yYXRlID0gci5QcmltaXRpdmVzLnVuYXJ5X3JhdGU7XG4gIExLYXBwYS5yX2RlbHRhX3Rva2VucyA9IHIuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnM7XG4gIH0qKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IG9mX3NuYXBzaG90IGcgPVxuICBsZXQgb3V0LCBfID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIG5vZGUgKGFjYywgcGFjaykgYWcgLT5cbiAgICAgICAgbGV0IHJhX3R5cGUgPSBhZy5TbmFwc2hvdC5ub2RlX3R5cGUgaW5cbiAgICAgICAgbGV0IGFyID0gQXJyYXkubGVuZ3RoIGFnLlNuYXBzaG90Lm5vZGVfc2l0ZXMgaW5cbiAgICAgICAgbGV0IHJhX3BvcnRzID1cbiAgICAgICAgICBBcnJheS5tYWtlIGFyIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIExLYXBwYS5NYWludGFpbmVkKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmFfaW50cyA9IEFycmF5Lm1ha2UgYXIgTEthcHBhLklfQU5ZIGluXG4gICAgICAgIGxldCBwYWNrJyA9XG4gICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgKGZ1biBpZCAoKGRhbmdsaW5nLCBmcmVlX2lkKSBhcyBwYWNrKSBwIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcC5TbmFwc2hvdC5zaXRlX3N0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICAgICB8IFNvbWUgaSAtPiByYV9pbnRzLihpZCkgPC0gTEthcHBhLklfVkFMX0NIQU5HRUQgKGksIGkpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIHAuU25hcHNob3Quc2l0ZV9saW5rIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHBhY2tcbiAgICAgICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnQyTWFwLnBvcCBzIGRhbmdsaW5nIHdpdGhcbiAgICAgICAgICAgICAgICB8IFNvbWUgdmEsIGRhbmdsaW5nJyAtPlxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgcmFfcG9ydHMuKGlkKSA8LVxuICAgICAgICAgICAgICAgICAgICAgICggTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKHZhLCAoLTEsIC0xKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgTEthcHBhLk1haW50YWluZWQgKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGRhbmdsaW5nJywgZnJlZV9pZFxuICAgICAgICAgICAgICAgIHwgTm9uZSwgZGFuZ2xpbmcnIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICByYV9wb3J0cy4oaWQpIDwtXG4gICAgICAgICAgICAgICAgICAgICAgKCBMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTEthcHBhLkxOS19WQUxVRSAoZnJlZV9pZCwgKC0xLCAtMSkpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkIClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBNb2RzLkludDJNYXAuYWRkIChub2RlLCBpZCkgZnJlZV9pZCBkYW5nbGluZycsIHN1Y2MgZnJlZV9pZCkpXG4gICAgICAgICAgICBwYWNrIGFnLlNuYXBzaG90Lm5vZGVfc2l0ZXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJhID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBMS2FwcGEucmFfdHlwZTtcbiAgICAgICAgICAgIHJhX2VyYXNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgcmFfcG9ydHM7XG4gICAgICAgICAgICByYV9pbnRzO1xuICAgICAgICAgICAgcmFfc3ludGF4ID0gU29tZSAoQXJyYXkuY29weSByYV9wb3J0cywgQXJyYXkuY29weSByYV9pbnRzKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIHJhIDo6IGFjYywgcGFjaycpXG4gICAgICAoW10sIChNb2RzLkludDJNYXAuZW1wdHksIDEpKVxuICAgICAgZ1xuICBpblxuICBvdXRcblxubGV0IHBhdHRlcm5zX29mX21peHR1cmUgfmRlYnVnX21vZGUgY29udGFjdF9tYXAgc2lncyBwcmVfZW52IGUgPVxuICBsZXQgc25hcCA9IEVkZ2VzLmJ1aWxkX3NuYXBzaG90IH5yYXc6ZmFsc2Ugc2lncyBlIGluXG4gIGxldCBwcmVfZW52JywgYWNjID1cbiAgICBTbmFwc2hvdC5mb2xkXG4gICAgICAoZnVuIChjY19jYWNoZSwgYWNjKSBpIG0gLT5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBQYXR0ZXJuX2NvbXBpbGVyLmNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfbWl4dHVyZVxuICAgICAgICAgICAgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbjpmYWxzZSBjb250YWN0X21hcCBjY19jYWNoZVxuICAgICAgICAgICAgKG9mX3NuYXBzaG90IG0pXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBjY19jYWNoZScsIFsgKFt8IChfLCB4KSB8XSwgXykgXSAtPlxuICAgICAgICAgIGNjX2NhY2hlJywgVG9vbHMucmVjdGkgKGZ1biBhIF8gLT4geCA6OiBhKSBhY2MgaVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgKHByZV9lbnYsIFtdKSBzbmFwXG4gIGluXG4gIHByZV9lbnYnLCBhY2NcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHtcbiAgZmlsZW5hbWVzOiBzdHJpbmcgbGlzdDtcbiAgZG9tYWluOiBQYXR0ZXJuLkVudi50O1xuICB0b2tlbnM6IHVuaXQgTmFtZWREZWNscy50O1xuICBhbGdzOiBQcmltaXRpdmVzLmFsZ19leHByIExvYy5hbm5vdGVkIE5hbWVkRGVjbHMudDtcbiAgb2JzZXJ2YWJsZXM6IFByaW1pdGl2ZXMuYWxnX2V4cHIgTG9jLmFubm90ZWQgYXJyYXk7XG4gIGFzdF9ydWxlczogKHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gKiBMS2FwcGEucnVsZSBMb2MuYW5ub3RlZCkgYXJyYXk7XG4gIHJ1bGVzOiBQcmltaXRpdmVzLmVsZW1lbnRhcnlfcnVsZSBhcnJheTtcbiAgaW50ZXJ2ZW50aW9uczogUHJpbWl0aXZlcy5wZXJ0dXJiYXRpb24gYXJyYXk7XG4gIGRlcGVuZGVuY2llc19pbl90aW1lOiBPcGVyYXRvci5EZXBTZXQudDtcbiAgZGVwZW5kZW5jaWVzX2luX2V2ZW50OiBPcGVyYXRvci5EZXBTZXQudDtcbiAgYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llczogT3BlcmF0b3IuRGVwU2V0LnQgYXJyYXk7XG4gIHRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llczogT3BlcmF0b3IuRGVwU2V0LnQgYXJyYXk7XG4gIGNvbnRhY3RfbWFwOiBDb250YWN0X21hcC50O1xufVxuXG5sZXQgaW5pdCB+ZmlsZW5hbWVzIGRvbWFpbiB0b2tlbnMgYWxncyAoZGVwc19pbl90LCBkZXBzX2luX2UsIHRva19yZCwgYWxnX3JkKVxuICAgIChhc3RfcnVsZXMsIHJ1bGVzKSBvYnNlcnZhYmxlcyBpbnRlcnZlbnRpb25zIGNvbnRhY3RfbWFwID1cbiAge1xuICAgIGZpbGVuYW1lcztcbiAgICBkb21haW47XG4gICAgdG9rZW5zO1xuICAgIGFzdF9ydWxlcztcbiAgICBydWxlcztcbiAgICBhbGdzO1xuICAgIG9ic2VydmFibGVzO1xuICAgIGFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgPSBhbGdfcmQ7XG4gICAgdG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzID0gdG9rX3JkO1xuICAgIGRlcGVuZGVuY2llc19pbl90aW1lID0gZGVwc19pbl90O1xuICAgIGRlcGVuZGVuY2llc19pbl9ldmVudCA9IGRlcHNfaW5fZTtcbiAgICBpbnRlcnZlbnRpb25zO1xuICAgIGNvbnRhY3RfbWFwO1xuICB9XG5cbmxldCBkZWNvbnN0cnVjdCBlbnYgPVxuICAoIGVudi5maWxlbmFtZXMsXG4gICAgZW52LmRvbWFpbixcbiAgICBlbnYudG9rZW5zLFxuICAgIGVudi5hbGdzLFxuICAgICggZW52LmRlcGVuZGVuY2llc19pbl90aW1lLFxuICAgICAgZW52LmRlcGVuZGVuY2llc19pbl9ldmVudCxcbiAgICAgIGVudi50b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXMsXG4gICAgICBlbnYuYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llcyApLFxuICAgIChlbnYuYXN0X3J1bGVzLCBlbnYucnVsZXMpLFxuICAgIGVudi5vYnNlcnZhYmxlcyxcbiAgICBlbnYuaW50ZXJ2ZW50aW9ucyxcbiAgICBlbnYuY29udGFjdF9tYXAgKVxuXG5sZXQgZG9tYWluIGVudiA9IGVudi5kb21haW5cbmxldCBnZXRfb2JzIGVudiA9IGVudi5vYnNlcnZhYmxlc1xubGV0IGdldF9ydWxlcyBlbnYgPSBlbnYucnVsZXNcbmxldCBuZXdfZG9tYWluIGRvbWFpbiBlbnYgPSB7IGVudiB3aXRoIGRvbWFpbiB9XG5sZXQgc2lnbmF0dXJlcyBlbnYgPSBQYXR0ZXJuLkVudi5zaWduYXR1cmVzIGVudi5kb21haW5cbmxldCB0b2tlbnNfZmluZGVyIGVudiA9IGVudi50b2tlbnMuTmFtZWREZWNscy5maW5kZXJcbmxldCBhbGdzX2ZpbmRlciBlbnYgPSBlbnYuYWxncy5OYW1lZERlY2xzLmZpbmRlclxubGV0IGNvbnRhY3RfbWFwIGVudiA9IGVudi5jb250YWN0X21hcFxubGV0IG51bV9vZl9hZ2VudCBubWUgZW52ID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBubWUgKHNpZ25hdHVyZXMgZW52KVxuXG5sZXQgZm9sZF9ydWxlcyBmIHggZW52ID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aSAoZnVuIGkgeCBydWxlIC0+IGYgaSB4IHJ1bGUpIHggZW52LnJ1bGVzXG5cbmxldCBmb2xkX3BlcnR1cmJhdGlvbnMgZiB4IGVudiA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgKGZ1biBpIHggcCAtPiBmIGkgeCBwKSB4IGVudi5pbnRlcnZlbnRpb25zXG5cbmxldCBnZXRfcnVsZSBlbnYgaSA9IGVudi5ydWxlcy4oaSlcbmxldCBnZXRfYXN0X3J1bGVfd2l0aF9sYWJlbCBlbnYgaSA9IGVudi5hc3RfcnVsZXMuKGkgLSAxKVxubGV0IGdldF9hc3RfcnVsZSBlbnYgaSA9IGZzdCAoc25kIChnZXRfYXN0X3J1bGVfd2l0aF9sYWJlbCBlbnYgaSkpXG5cbmxldCBmb2xkX2FzdF9ydWxlcyBmIHggZW52ID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaSB4IChfLCBfcnVsZSkgLT5cbiAgICAgIGxldCBsa2FwcGFfcnVsZSA9IGdldF9hc3RfcnVsZSBlbnYgaSBpblxuICAgICAgZiBpIHggbGthcHBhX3J1bGUpXG4gICAgeCBlbnYuYXN0X3J1bGVzXG5cbmxldCBnZXRfYXN0X3J1bGVfcmF0ZV9wb3MgfnVuYXJ5IGVudiBpID1cbiAgaWYgdW5hcnkgdGhlbiAoXG4gICAgbWF0Y2ggKGZzdCAoc25kIGVudi5hc3RfcnVsZXMuKGkgLSAxKSkpLkxLYXBwYS5yX3VuX3JhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIk5vIHVuYXJ5IHJhdGUgdG8gZ2V0IHBvc2l0aW9uIG9mXCJcbiAgICB8IFNvbWUgKChfLCBwb3MpLCBfKSAtPiBwb3NcbiAgKSBlbHNlXG4gICAgc25kIChmc3QgKHNuZCBlbnYuYXN0X3J1bGVzLihpIC0gMSkpKS5MS2FwcGEucl9yYXRlXG5cbmxldCBuYl9ydWxlcyBlbnYgPSBBcnJheS5sZW5ndGggZW52LnJ1bGVzXG5cbmxldCBudW1zX29mX3J1bGUgbmFtZSBlbnYgPVxuICBmb2xkX3J1bGVzXG4gICAgKGZ1biBpIGFjYyByIC0+XG4gICAgICBtYXRjaCBlbnYuYXN0X3J1bGVzLihwcmVkIHIuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZSkgd2l0aFxuICAgICAgfCBTb21lICh4LCBfKSwgXyAtPlxuICAgICAgICBpZiB4ID0gbmFtZSB0aGVuXG4gICAgICAgICAgaSA6OiBhY2NcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFjY1xuICAgICAgfCBOb25lLCBfIC0+IGFjYylcbiAgICBbXSBlbnZcblxubGV0IG5iX3N5bnRhY3RpY19ydWxlcyBlbnYgPSBBcnJheS5sZW5ndGggZW52LmFzdF9ydWxlc1xubGV0IG51bV9vZl9hbGcgcyBlbnYgPSBOYW1lZERlY2xzLmVsdF9pZCB+a2luZDpcInZhcmlhYmxlXCIgZW52LmFsZ3Mgc1xubGV0IGdldF9hbGcgZW52IGkgPSBmc3QgQEAgTmFtZWREZWNscy5lbHRfdmFsIGVudi5hbGdzIGlcbmxldCBnZXRfYWxncyBlbnYgPSBlbnYuYWxncy5OYW1lZERlY2xzLmRlY2xzXG5sZXQgbmJfYWxncyBlbnYgPSBOYW1lZERlY2xzLnNpemUgZW52LmFsZ3NcbmxldCBudW1fb2ZfdG9rZW4gc3RyIGVudiA9IE5hbWVkRGVjbHMuZWx0X2lkIH5raW5kOlwidG9rZW5cIiBlbnYudG9rZW5zIHN0clxubGV0IG5iX3Rva2VucyBlbnYgPSBOYW1lZERlY2xzLnNpemUgZW52LnRva2Vuc1xubGV0IGdldF9wZXJ0dXJiYXRpb24gZW52IGkgPSBlbnYuaW50ZXJ2ZW50aW9ucy4oaSlcbmxldCBuYl9wZXJ0dXJiYXRpb25zIGVudiA9IEFycmF5Lmxlbmd0aCBlbnYuaW50ZXJ2ZW50aW9uc1xubGV0IGdldF9hbGdfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgZW52IGkgPSBlbnYuYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llcy4oaSlcbmxldCBnZXRfdG9rZW5fcmV2ZXJzZV9kZXBlbmRlbmNpZXMgZW52IGkgPSBlbnYudG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzLihpKVxuXG5sZXQgYWxsX2RlcGVuZGVuY2llcyBlbnYgPVxuICAoIGVudi5kZXBlbmRlbmNpZXNfaW5fdGltZSxcbiAgICBlbnYuZGVwZW5kZW5jaWVzX2luX2V2ZW50LFxuICAgIGVudi50b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXMsXG4gICAgZW52LmFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgKVxuXG5sZXQgcHJpbnRfYWdlbnQgP2VudiBmIGkgPVxuICBtYXRjaCBlbnYgd2l0aFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIl9fYWdlbnRfJWlcIiBpXG4gIHwgU29tZSBlbnYgLT4gU2lnbmF0dXJlLnByaW50X2FnZW50IChzaWduYXR1cmVzIGVudikgZiBpXG5cbmxldCBwcmludF9hbGcgP2VudiBmIGlkID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJfX2FsZ18laVwiIGlkXG4gIHwgU29tZSBlbnYgLT5cbiAgICBsZXQgbmFtZSA9IE5hbWVkRGVjbHMuZWx0X25hbWUgZW52LmFsZ3MgaWQgaW5cbiAgICBsZXQgc3BlY2lhbCA9IFRvb2xzLm5vdF9hbl9pZCBuYW1lIGluXG4gICAgbGV0ICgpID0gaWYgc3BlY2lhbCB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIidcIiBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBuYW1lIGluXG4gICAgaWYgc3BlY2lhbCB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIidcIlxuXG5sZXQgcHJpbnRfdG9rZW4gP2VudiBmIGlkID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJfX3Rva2VuXyVpXCIgaWRcbiAgfCBTb21lIGVudiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJXNcIiAoTmFtZWREZWNscy5lbHRfbmFtZSBlbnYudG9rZW5zIGlkKVxuXG5sZXQgcHJpbnRfYXN0X3J1bGUgfm5vQ291bnRlcnMgP2VudiBmIGkgPVxuICBtYXRjaCBlbnYgd2l0aFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIl9fYXN0X3J1bGVfJWlcIiBpXG4gIHwgU29tZSBlbnYgLT5cbiAgICBsZXQgc2lncyA9IHNpZ25hdHVyZXMgZW52IGluXG4gICAgaWYgaSA9IDAgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiSW50ZXJ2ZW50aW9uc1wiXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBlbnYuYXN0X3J1bGVzLihwcmVkIGkpIHdpdGhcbiAgICAgIHwgU29tZSAobmEsIF8pLCBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBuYVxuICAgICAgfCBOb25lLCAociwgXykgLT5cbiAgICAgICAgTEthcHBhLnByaW50X3J1bGUgfm5vQ291bnRlcnMgfmZ1bGw6ZmFsc2Ugc2lncyAocHJpbnRfdG9rZW4gfmVudilcbiAgICAgICAgICAocHJpbnRfYWxnIH5lbnYpIGYgclxuICAgIClcblxubGV0IHByaW50X3J1bGUgfm5vQ291bnRlcnMgP2VudiBmIGlkID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJfX3J1bGVfJWlcIiBpZFxuICB8IFNvbWUgZW52IC0+XG4gICAgcHJpbnRfYXN0X3J1bGUgfm5vQ291bnRlcnMgfmVudiBmIGVudi5ydWxlcy4oaWQpLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGVcblxubGV0IG1hcF9vYnNlcnZhYmxlcyBmIGVudiA9IEFycmF5Lm1hcCAoZnVuICh4LCBfKSAtPiBmIHgpIGVudi5vYnNlcnZhYmxlc1xuXG5sZXQgcHJpbnRfa2FwcGEgfm5vQ291bnRlcnMgcHJfYWxnID9wcl9ydWxlIHByX3BlcnQgZiBlbnYgPVxuICBsZXQgc2lncyA9IHNpZ25hdHVyZXMgZW52IGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQCwlYSV0QCwlYSV0JWFALCV0JXQlYUBdXCJcbiAgICAoQ29udGFjdF9tYXAucHJpbnRfa2FwcGEgfm5vQ291bnRlcnMgc2lncylcbiAgICBlbnYuY29udGFjdF9tYXBcbiAgICAoTmFtZWREZWNscy5wcmludCB+c2VwOlBwLnNwYWNlIChmdW4gXyBuIGYgKCkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJXRva2VuOiAlc1wiIG4pKVxuICAgIGVudi50b2tlbnNcbiAgICAoZnVuIGYgLT4gaWYgZW52LnRva2Vucy5OYW1lZERlY2xzLmRlY2xzIDw+IFt8fF0gdGhlbiBQcC5zcGFjZSBmKVxuICAgIChOYW1lZERlY2xzLnByaW50IH5zZXA6UHAuc3BhY2UgKGZ1biBpIG4gZiAoZSwgXykgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiUldmFyOi8qJWkqLyAnJXMnICVhQF1cIiBpIG4gKHByX2FsZyBlbnYpIGUpKVxuICAgIGVudi5hbGdzXG4gICAgKGZ1biBmIC0+IGlmIGVudi5hbGdzLk5hbWVkRGVjbHMuZGVjbHMgPD4gW3x8XSB0aGVuIFBwLnNwYWNlIGYpXG4gICAgKFBwLmFycmF5IFBwLnNwYWNlIH50cmFpbGluZzpQcC5zcGFjZSAoZnVuIF8gZiAoZSwgXykgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiUlcGxvdDogJWFAXVwiIChwcl9hbGcgZW52KSBlKSlcbiAgICBlbnYub2JzZXJ2YWJsZXNcbiAgICAoZnVuIGYgLT5cbiAgICAgIG1hdGNoIHByX3J1bGUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIFBwLmFycmF5IFBwLnNwYWNlIH50cmFpbGluZzpQcC5zcGFjZVxuICAgICAgICAgIChmdW4gXyBmIChuYSwgKGUsIF8pKSAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhJWFcIlxuICAgICAgICAgICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiAobmEsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiclcycgXCIgbmEpKVxuICAgICAgICAgICAgICBuYVxuICAgICAgICAgICAgICAoTEthcHBhLnByaW50X3J1bGUgfm5vQ291bnRlcnMgfmZ1bGw6dHJ1ZSBzaWdzIChwcmludF90b2tlbiB+ZW52KVxuICAgICAgICAgICAgICAgICAocHJpbnRfYWxnIH5lbnYpKVxuICAgICAgICAgICAgICBlKVxuICAgICAgICAgIGYgZW52LmFzdF9ydWxlc1xuICAgICAgfCBTb21lIHByX3J1bGUgLT5cbiAgICAgICAgUHAuYXJyYXkgUHAuc3BhY2UgfnRyYWlsaW5nOlBwLnNwYWNlXG4gICAgICAgICAgKGZ1biBfIGYgciAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFs8Mj4lYUBdXCIgKHByX3J1bGUgZW52KSByKVxuICAgICAgICAgIGYgZW52LnJ1bGVzKVxuICAgIChmdW4gZiAtPiBpZiBlbnYuaW50ZXJ2ZW50aW9ucyA8PiBbfHxdIHRoZW4gUHAuc3BhY2UgZilcbiAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBpIGYgcCAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+LyolaSovJWFAXVwiIGkgKHByX3BlcnQgZW52KSBwKSlcbiAgICBlbnYuaW50ZXJ2ZW50aW9uc1xuXG5sZXQgcHJpbnQgfm5vQ291bnRlcnMgcHJfYWxnIHByX3J1bGUgcHJfcGVydCBmIGVudiA9XG4gIGxldCAoKSA9IHByaW50X2thcHBhIH5ub0NvdW50ZXJzIHByX2FsZyBwcl9wZXJ0IGYgZW52IGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJALEBbPHY+QFs8diAyPlJ1bGVzOkAsJWFAXUBdXCJcbiAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBpIGYgciAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPDI+JWk6QCAlYUBdXCIgaSAocHJfcnVsZSBlbnYpIHIpKVxuICAgIGVudi5ydWxlc1xuXG5sZXQgY2hlY2tfaWZfY291bnRlcl9pc19maWxsZWRfZW5vdWdoIHggPVxuICBpZlxuICAgIG5vdFxuICAgIEBAIFByaW1pdGl2ZXMuZXhpc3RzX21vZGlmaWNhdGlvblxuICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgUHJpbWl0aXZlcy5TVE9QIF8gLT4gdHJ1ZVxuICAgICAgICAgICB8IFByaW1pdGl2ZXMuSVRFUl9SVUxFIF8gfCBQcmltaXRpdmVzLlVQREFURSBfXG4gICAgICAgICAgIHwgUHJpbWl0aXZlcy5TTkFQU0hPVCBfIHwgUHJpbWl0aXZlcy5DRkxPVyBfIHwgUHJpbWl0aXZlcy5ESU4gX1xuICAgICAgICAgICB8IFByaW1pdGl2ZXMuRElOT0ZGIF8gfCBQcmltaXRpdmVzLkNGTE9XT0ZGIF8gfCBQcmltaXRpdmVzLlBMT1RFTlRSWVxuICAgICAgICAgICB8IFByaW1pdGl2ZXMuUFJJTlQgXyB8IFByaW1pdGl2ZXMuU1BFQ0lFUyBfXG4gICAgICAgICAgIHwgUHJpbWl0aXZlcy5TUEVDSUVTX09GRiBfIC0+XG4gICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICB4LmludGVydmVudGlvbnNcbiAgdGhlblxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiVGhlcmUgaXMgbm8gd2F5IGZvciB0aGUgc2ltdWxhdGlvbiB0byBzdG9wLlwiKSlcblxubGV0IG92ZXJ3cml0ZV92YXJzIGFsZ19vdmVyd3JpdGUgZW52ID1cbiAgbGV0IGFsZ3MnID1cbiAgICBBcnJheS5tYXBcbiAgICAgIChmdW4gKHgsIHkpIC0+IExvYy5hbm5vdF93aXRoX2R1bW15IHgsIHkpXG4gICAgICBlbnYuYWxncy5OYW1lZERlY2xzLmRlY2xzXG4gIGluXG4gIGxldCAoKSA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIChpLCB2KSAtPiBhbGdzJy4oaSkgPC0gZnN0IGFsZ3MnLihpKSwgTG9jLmFubm90X3dpdGhfZHVtbXkgdilcbiAgICAgIGFsZ19vdmVyd3JpdGVcbiAgaW5cbiAgeyBlbnYgd2l0aCBhbGdzID0gTmFtZWREZWNscy5jcmVhdGUgYWxncycgfVxuXG5sZXQgZm9sZF9hbGdfZXhwciBmX2FsZyBmX2Jvb2wgeCBlbnYgPVxuICBsZXQgeDEgPVxuICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIGFjYyAoXywgeSkgLT4gZl9hbGcgYWNjIHkpIHggZW52LmFsZ3MuTmFtZWREZWNscy5kZWNsc1xuICBpblxuICBsZXQgeDIgPSBBcnJheS5mb2xkX2xlZnQgZl9hbGcgeDEgZW52Lm9ic2VydmFibGVzIGluXG4gIGxldCB4MyA9IEFycmF5LmZvbGRfbGVmdCAoUHJpbWl0aXZlcy5mb2xkX2V4cHJfcnVsZSBmX2FsZykgeDIgZW52LnJ1bGVzIGluXG4gIEFycmF5LmZvbGRfbGVmdFxuICAgIChQcmltaXRpdmVzLmZvbGRfZXhwcl9wZXJ0dXJiYXRpb24gZl9hbGcgZl9ib29sKVxuICAgIHgzIGVudi5pbnRlcnZlbnRpb25zXG5cbmxldCBmb2xkX21peHR1cmVfaW5fZXhwciBmID1cbiAgZm9sZF9hbGdfZXhwciAoQWxnX2V4cHIuZm9sZF9vbl9taXh0dXJlIGYpIChBbGdfZXhwci5mb2xkX2Jvb2xfb25fbWl4dHVyZSBmKVxuXG5sZXQgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgfmFsZ19vdmVyd3JpdGUgeCA9XG4gIGxldCBhbGdzJyA9XG4gICAgQXJyYXkubWFwIChmdW4gKHgsIHkpIC0+IExvYy5hbm5vdF93aXRoX2R1bW15IHgsIHkpIHguYWxncy5OYW1lZERlY2xzLmRlY2xzXG4gIGluXG4gIGxldCAoKSA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIChpLCB2KSAtPiBhbGdzJy4oaSkgPC0gZnN0IGFsZ3MnLihpKSwgTG9jLmFubm90X3dpdGhfZHVtbXkgdilcbiAgICAgIGFsZ19vdmVyd3JpdGVcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBBcnJheS5pdGVyaVxuICAgICAgKGZ1biBpIChuYSwgdikgLT5cbiAgICAgICAgYWxncycuKGkpIDwtXG4gICAgICAgICAgKCBuYSxcbiAgICAgICAgICAgIEFsZ19leHByLnByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHNcbiAgICAgICAgICAgICAgfnVwZGF0ZWRfdmFycyB+dmFyczphbGdzJyB2ICkpXG4gICAgICBhbGdzJ1xuICBpblxuICB7XG4gICAgZmlsZW5hbWVzID0geC5maWxlbmFtZXM7XG4gICAgZG9tYWluID0geC5kb21haW47XG4gICAgdG9rZW5zID0geC50b2tlbnM7XG4gICAgYWxncyA9IE5hbWVkRGVjbHMuY3JlYXRlIGFsZ3MnO1xuICAgIG9ic2VydmFibGVzID1cbiAgICAgIEFycmF5Lm1hcFxuICAgICAgICAoQWxnX2V4cHIucHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50c1xuICAgICAgICAgICB+dXBkYXRlZF92YXJzIH52YXJzOmFsZ3MnKVxuICAgICAgICB4Lm9ic2VydmFibGVzO1xuICAgIGFzdF9ydWxlcyA9IHguYXN0X3J1bGVzO1xuICAgIHJ1bGVzID1cbiAgICAgIEFycmF5Lm1hcFxuICAgICAgICAoUHJpbWl0aXZlcy5tYXBfZXhwcl9ydWxlXG4gICAgICAgICAgIChBbGdfZXhwci5wcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzXG4gICAgICAgICAgICAgIH51cGRhdGVkX3ZhcnMgfnZhcnM6YWxncycpKVxuICAgICAgICB4LnJ1bGVzO1xuICAgIGludGVydmVudGlvbnMgPVxuICAgICAgQXJyYXkubWFwXG4gICAgICAgIChQcmltaXRpdmVzLm1hcF9leHByX3BlcnR1cmJhdGlvblxuICAgICAgICAgICAoQWxnX2V4cHIucHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50c1xuICAgICAgICAgICAgICB+dXBkYXRlZF92YXJzIH52YXJzOmFsZ3MnKVxuICAgICAgICAgICAoQWxnX2V4cHIucHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzXG4gICAgICAgICAgICAgIH51cGRhdGVkX3ZhcnMgfnZhcnM6YWxncycpKVxuICAgICAgICB4LmludGVydmVudGlvbnM7XG4gICAgZGVwZW5kZW5jaWVzX2luX3RpbWUgPSB4LmRlcGVuZGVuY2llc19pbl90aW1lO1xuICAgIGRlcGVuZGVuY2llc19pbl9ldmVudCA9IHguZGVwZW5kZW5jaWVzX2luX2V2ZW50O1xuICAgIGFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgPSB4LmFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXM7XG4gICAgdG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzID0geC50b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXM7XG4gICAgY29udGFjdF9tYXAgPSB4LmNvbnRhY3RfbWFwO1xuICB9XG5cbmxldCBrYXBwYV9pbnN0YW5jZV90b195b2pzb24gPVxuICBKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbilcblxubGV0IHRvX3lvanNvbiBlbnYgPVxuICBsZXQgZmlsZXMgPVxuICAgIEFycmF5Lm9mX2xpc3QgKExleGluZy5kdW1teV9wb3MuTGV4aW5nLnBvc19mbmFtZSA6OiBlbnYuZmlsZW5hbWVzKVxuICBpblxuICBsZXQgZmlsZW5hbWVzID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIGkgbWFwIHggLT4gTW9kcy5TdHJpbmdNYXAuYWRkIHggaSBtYXApXG4gICAgICBNb2RzLlN0cmluZ01hcC5lbXB0eSBmaWxlc1xuICBpblxuICBgQXNzb2NcbiAgICBbXG4gICAgICBcImZpbGVuYW1lc1wiLCBKc29uVXRpbC5vZl9hcnJheSBKc29uVXRpbC5vZl9zdHJpbmcgZmlsZXM7XG4gICAgICBcInVwZGF0ZVwiLCBQYXR0ZXJuLkVudi50b195b2pzb24gKGRvbWFpbiBlbnYpO1xuICAgICAgXCJ0b2tlbnNcIiwgTmFtZWREZWNscy50b19qc29uIChmdW4gKCkgLT4gYE51bGwpIGVudi50b2tlbnM7XG4gICAgICAoIFwiYWxnc1wiLFxuICAgICAgICBOYW1lZERlY2xzLnRvX2pzb25cbiAgICAgICAgICAoZnVuICh4LCBfKSAtPlxuICAgICAgICAgICAgQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBrYXBwYV9pbnN0YW5jZV90b195b2pzb25cbiAgICAgICAgICAgICAgSnNvblV0aWwub2ZfaW50IHgpXG4gICAgICAgICAgZW52LmFsZ3MgKTtcbiAgICAgICggXCJvYnNlcnZhYmxlc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biAoeCwgXykgbCAtPlxuICAgICAgICAgICAgICAgQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBrYXBwYV9pbnN0YW5jZV90b195b2pzb25cbiAgICAgICAgICAgICAgICAgSnNvblV0aWwub2ZfaW50IHhcbiAgICAgICAgICAgICAgIDo6IGwpXG4gICAgICAgICAgICAgZW52Lm9ic2VydmFibGVzIFtdKSApO1xuICAgICAgKCBcImFzdF9ydWxlc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biAobiwgKHIsIF8pKSBsIC0+XG4gICAgICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIG4gd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBgTnVsbFxuICAgICAgICAgICAgICAgICAgIHwgU29tZSAobiwgXykgLT4gYFN0cmluZyBuKTtcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucnVsZV90b19qc29uIH5maWxlbmFtZXMgcjtcbiAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgOjogbClcbiAgICAgICAgICAgICBlbnYuYXN0X3J1bGVzIFtdKSApO1xuICAgICAgKCBcImVsZW1lbnRhcnlfcnVsZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfYXJyYXkgKFByaW1pdGl2ZXMucnVsZV90b195b2pzb24gfmZpbGVuYW1lcykgZW52LnJ1bGVzICk7XG4gICAgICBcImNvbnRhY3RfbWFwXCIsIENvbnRhY3RfbWFwLnRvX3lvanNvbiBlbnYuY29udGFjdF9tYXA7XG4gICAgICAoIFwiaW50ZXJ2ZW50aW9uc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9hcnJheVxuICAgICAgICAgIChQcmltaXRpdmVzLnBlcnR1cmJhdGlvbl90b195b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICBlbnYuaW50ZXJ2ZW50aW9ucyApO1xuICAgICAgXCJkZXBlbmRlbmNpZXNfaW5fdGltZVwiLCBPcGVyYXRvci5kZXBzZXRfdG9feW9qc29uIGVudi5kZXBlbmRlbmNpZXNfaW5fdGltZTtcbiAgICAgICggXCJkZXBlbmRlbmNpZXNfaW5fZXZlbnRcIixcbiAgICAgICAgT3BlcmF0b3IuZGVwc2V0X3RvX3lvanNvbiBlbnYuZGVwZW5kZW5jaWVzX2luX2V2ZW50ICk7XG4gICAgICAoIFwiYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9hcnJheSBPcGVyYXRvci5kZXBzZXRfdG9feW9qc29uXG4gICAgICAgICAgZW52LmFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgKTtcbiAgICAgICggXCJ0b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfYXJyYXkgT3BlcmF0b3IuZGVwc2V0X3RvX3lvanNvblxuICAgICAgICAgIGVudi50b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgKTtcbiAgICBdXG5cbmxldCBrYXBwYV9pbnN0YW5jZV9vZl95b2pzb24gPVxuICBKc29uVXRpbC50b19saXN0IChKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvbilcblxubGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAxMyAtPlxuICAgICh0cnlcbiAgICAgICBsZXQgZmlsZW5hbWVzID1cbiAgICAgICAgIEpzb25VdGlsLnRvX2FycmF5XG4gICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgICAoTGlzdC5hc3NvYyBcImZpbGVuYW1lc1wiIGwpXG4gICAgICAgaW5cbiAgICAgICB7XG4gICAgICAgICBmaWxlbmFtZXMgPSBMaXN0LnRsIChBcnJheS50b19saXN0IGZpbGVuYW1lcyk7XG4gICAgICAgICBkb21haW4gPSBQYXR0ZXJuLkVudi5vZl95b2pzb24gKExpc3QuYXNzb2MgXCJ1cGRhdGVcIiBsKTtcbiAgICAgICAgIHRva2VucyA9IE5hbWVkRGVjbHMub2ZfanNvbiAoZnVuIF8gLT4gKCkpIChMaXN0LmFzc29jIFwidG9rZW5zXCIgbCk7XG4gICAgICAgICBhbGdzID1cbiAgICAgICAgICAgTmFtZWREZWNscy5vZl9qc29uXG4gICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBrYXBwYV9pbnN0YW5jZV9vZl95b2pzb25cbiAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpXG4gICAgICAgICAgICAgICAgICAgIHgpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwiYWxnc1wiIGwpO1xuICAgICAgICAgb2JzZXJ2YWJsZXMgPVxuICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcIm9ic2VydmFibGVzXCIgbCB3aXRoXG4gICAgICAgICAgIHwgYExpc3QgbyAtPlxuICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBrYXBwYV9pbnN0YW5jZV9vZl95b2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICB4KSlcbiAgICAgICAgICAgICAgIG9cbiAgICAgICAgICAgfCBgTnVsbCAtPiBbfHxdXG4gICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgYXN0X3J1bGVzID1cbiAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJhc3RfcnVsZXNcIiBsIHdpdGhcbiAgICAgICAgICAgfCBgTGlzdCBvIC0+XG4gICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICB8IGBMaXN0IFsgYE51bGw7IHIgXSAtPlxuICAgICAgICAgICAgICAgICAgIE5vbmUsIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEucnVsZV9vZl9qc29uIH5maWxlbmFtZXMgcilcbiAgICAgICAgICAgICAgICAgfCBgTGlzdCBbIGBTdHJpbmcgbjsgciBdIC0+XG4gICAgICAgICAgICAgICAgICAgKCBTb21lIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBuKSxcbiAgICAgICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEucnVsZV9vZl9qc29uIH5maWxlbmFtZXMgcikgKVxuICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgICAgb1xuICAgICAgICAgICB8IGBOdWxsIC0+IFt8fF1cbiAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICBydWxlcyA9XG4gICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwiZWxlbWVudGFyeV9ydWxlc1wiIGwgd2l0aFxuICAgICAgICAgICB8IGBMaXN0IG8gLT5cbiAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdCAoUHJpbWl0aXZlcy5ydWxlX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBvXG4gICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgaW50ZXJ2ZW50aW9ucyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2FycmF5XG4gICAgICAgICAgICAgKFByaW1pdGl2ZXMucGVydHVyYmF0aW9uX29mX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJpbnRlcnZlbnRpb25zXCIgeCk7XG4gICAgICAgICBkZXBlbmRlbmNpZXNfaW5fdGltZSA9XG4gICAgICAgICAgIE9wZXJhdG9yLmRlcHNldF9vZl95b2pzb25cbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZGVwZW5kZW5jaWVzX2luX3RpbWVcIiB4KTtcbiAgICAgICAgIGRlcGVuZGVuY2llc19pbl9ldmVudCA9XG4gICAgICAgICAgIE9wZXJhdG9yLmRlcHNldF9vZl95b2pzb25cbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZGVwZW5kZW5jaWVzX2luX2V2ZW50XCIgeCk7XG4gICAgICAgICBhbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fYXJyYXkgT3BlcmF0b3IuZGVwc2V0X29mX3lvanNvblxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJhbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzXCIgeCk7XG4gICAgICAgICB0b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19hcnJheSBPcGVyYXRvci5kZXBzZXRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llc1wiIHgpO1xuICAgICAgICAgY29udGFjdF9tYXAgPSBDb250YWN0X21hcC5vZl95b2pzb24gKExpc3QuYXNzb2MgXCJjb250YWN0X21hcFwiIGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVudmlyb25tZW50XCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZW52aXJvbm1lbnRcIiwgeCkpXG5cbmxldCB1bmFyeV9wYXR0ZXJucyBlbnYgPVxuICBmb2xkX3J1bGVzXG4gICAgKGZ1biBfIGFjYyByIC0+XG4gICAgICBtYXRjaCByLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICB8IFNvbWUgXyAtPlxuICAgICAgICBQYXR0ZXJuLlNldC5hZGRcbiAgICAgICAgICByLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDApXG4gICAgICAgICAgKFBhdHRlcm4uU2V0LmFkZCByLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDEpIGFjYykpXG4gICAgUGF0dGVybi5TZXQuZW1wdHkgZW52XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY2NfbWl4IH5ub0NvdW50ZXJzID9lbnYgZiBtaXggPVxuICBsZXQgZG9tYWluID1cbiAgICBtYXRjaCBlbnYgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGUgLT4gU29tZSAoTW9kZWwuZG9tYWluIGUpXG4gIGluXG4gIG1hdGNoIG1peCB3aXRoXG4gIHwgW10gLT4gRm9ybWF0LmZwcmludGYgZiBcIjBcIlxuICB8IF8gLT5cbiAgICBQcC5saXN0XG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiArQCBcIilcbiAgICAgIChmdW4gZiBjY3MgLT5cbiAgICAgICAgUHAuYXJyYXlcbiAgICAgICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIipcIilcbiAgICAgICAgICAoZnVuIF8gZiBjYyAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIlxuICAgICAgICAgICAgICAoUGF0dGVybi5wcmludCB+bm9Db3VudGVycyA/ZG9tYWluIH53aXRoX2lkOmZhbHNlKVxuICAgICAgICAgICAgICBjYylcbiAgICAgICAgICBmIGNjcylcbiAgICAgIGYgbWl4XG5cbmxldCBhbGdfZXhwciB+bm9Db3VudGVycyA/ZW52ID1cbiAgQWxnX2V4cHIucHJpbnQgKGNjX21peCB+bm9Db3VudGVycyA/ZW52KSAoTW9kZWwucHJpbnRfdG9rZW4gP2VudilcbiAgICAoTW9kZWwucHJpbnRfYWxnID9lbnYpXG5cbmxldCBib29sX2V4cHIgfm5vQ291bnRlcnMgP2VudiA9XG4gIEFsZ19leHByLnByaW50X2Jvb2wgKGNjX21peCB+bm9Db3VudGVycyA/ZW52KVxuICAgIChmdW4gZiBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCIgKE1vZGVsLnByaW50X3Rva2VuID9lbnYpIGkpXG4gICAgKE1vZGVsLnByaW50X2FsZyA/ZW52KVxuXG5sZXQgcHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52IGYgPVxuICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0ciwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCIlc1xcXCJcIiBzdHJcbiAgICB8IFByaW1pdGl2ZXMuQWxnX3BleHByIChhbGcsIF8pIC0+IGFsZ19leHByIH5ub0NvdW50ZXJzID9lbnYgZiBhbGdcbiAgaW5cbiAgZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IFsgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0ciwgXykgXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcIiVzXFxcIlwiIHN0clxuICB8IChbIFByaW1pdGl2ZXMuQWxnX3BleHByIF8gXSB8IF8gOjogXyA6OiBfKSBhcyBlIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiglYSlcIiAoUHAubGlzdCAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIi5cIikgYXV4KSBlXG5cbmxldCBwcmludF9leHByX3ZhbCBhbGdfdmFsIGYgZSA9XG4gIGxldCBhdXggZiA9IGZ1bmN0aW9uXG4gICAgfCBQcmltaXRpdmVzLlN0cl9wZXhwciAoc3RyLCBfKSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgc3RyXG4gICAgfCBQcmltaXRpdmVzLkFsZ19wZXhwciAoYWxnLCBfKSAtPiBOYnIucHJpbnQgZiAoYWxnX3ZhbCBhbGcpXG4gIGluXG4gIFBwLmxpc3QgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9jdXQgZiAoKSkgYXV4IGYgZVxuXG5sZXQgZGVjb21waWxlZF9ydWxlIH5ub0NvdW50ZXJzIH5mdWxsIGVudiBmIHIgPVxuICBsZXQgc2lncyA9IE1vZGVsLnNpZ25hdHVyZXMgZW52IGluXG4gIGxldCByX21peCwgcl9jcmVhdGVkID1cbiAgICBQYXR0ZXJuX2NvbXBpbGVyLmxrYXBwYV9vZl9lbGVtZW50YXJ5X3J1bGUgc2lncyAoTW9kZWwuZG9tYWluIGVudikgclxuICBpblxuICBsZXQgcHJfYWxnIGYgKGEsIF8pID0gYWxnX2V4cHIgfm5vQ291bnRlcnMgfmVudiBmIGEgaW5cbiAgbGV0IHByX3RvayBmICh2YSwgdG9rKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhICVhXCIgcHJfYWxnIHZhIChNb2RlbC5wcmludF90b2tlbiB+ZW52KSB0b2tcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhJWEldCVhJXRcIlxuICAgIChMS2FwcGEucHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlczpmYWxzZSByX2NyZWF0ZWQpXG4gICAgcl9taXhcbiAgICAoUmF3X21peHR1cmUucHJpbnQgfm5vQ291bnRlcnMgfmNyZWF0ZWQ6dHJ1ZSB+aW5pdGlhbF9jb21tYToocl9taXggPD4gW10pXG4gICAgICAgfnNpZ3MpXG4gICAgcl9jcmVhdGVkXG4gICAgKGlmIHIuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnMgPD4gW10gdGhlblxuICAgICAgIGZ1biBmIC0+XG4gICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ8QCBcIlxuICAgICBlbHNlXG4gICAgICAgUHAuZW1wdHkpXG4gICAgKFBwLmxpc3QgUHAuY29tbWEgcHJfdG9rKSByLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zXG4gICAgKGZ1biBmIC0+XG4gICAgICBpZiBmdWxsIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkAgQEAgJWEldFwiIHByX2FsZyByLlByaW1pdGl2ZXMucmF0ZSAoZnVuIGYgLT5cbiAgICAgICAgICAgIG1hdGNoIHIuUHJpbWl0aXZlcy51bmFyeV9yYXRlIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIChyYXRlLCBkaXN0KSAtPlxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiIHslYSVhfVwiIHByX2FsZyByYXRlXG4gICAgICAgICAgICAgICAgKFBwLm9wdGlvbiAoZnVuIGYgbWQgLT5cbiAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI6JWFcIiAoYWxnX2V4cHIgfm5vQ291bnRlcnMgfmVudikgbWQpKVxuICAgICAgICAgICAgICAgIGRpc3QpKVxuXG5sZXQgZWxlbWVudGFyeV9ydWxlIH5ub0NvdW50ZXJzID9lbnYgZiByID1cbiAgbGV0IGRvbWFpbiwgc2lncyA9XG4gICAgbWF0Y2ggZW52IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSwgTm9uZVxuICAgIHwgU29tZSBlIC0+IFNvbWUgKE1vZGVsLmRvbWFpbiBlKSwgU29tZSAoTW9kZWwuc2lnbmF0dXJlcyBlKVxuICBpblxuICBsZXQgcHJfYWxnIGYgKGEsIF8pID0gYWxnX2V4cHIgfm5vQ291bnRlcnMgP2VudiBmIGEgaW5cbiAgbGV0IHByX3RvayBmICh2YSwgdG9rKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhICVhXCIgcHJfYWxnIHZhIChNb2RlbC5wcmludF90b2tlbiA/ZW52KSB0b2tcbiAgaW5cbiAgbGV0IHByX3RyYW5zIGYgdCA9IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24ucHJpbnQgP3NpZ3MgZiB0IGluXG4gIGxldCBib3hlZF9jYyBpIGYgY2MgPVxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9vcGVuX2JveCBmIDIgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfaW50IGYgaSBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIjogXCIgaW5cbiAgICBsZXQgKCkgPSBQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQ6dHJ1ZSBmIGNjIGluXG4gICAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmICgpXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIoYXN0OiAlaSlAIEBbQFslYUBdJXRAWyVhQF1AXUAgLS0gQFslYUBdQCArKyBAWyVhQF1AIEBAJWEldFwiXG4gICAgci5QcmltaXRpdmVzLnN5bnRhY3RpY19ydWxlXG4gICAgKFBwLmFycmF5IFBwLmNvbW1hIGJveGVkX2NjKVxuICAgIHIuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50c1xuICAgIChpZiByLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zIDw+IFtdIHRoZW5cbiAgICAgICBmdW4gZiAtPlxuICAgICBGb3JtYXQuZnByaW50ZiBmIFwifEAgXCJcbiAgICAgZWxzZVxuICAgICAgIFBwLmVtcHR5KVxuICAgIChQcC5saXN0IFBwLmNvbW1hIHByX3Rvaykgci5QcmltaXRpdmVzLmRlbHRhX3Rva2Vuc1xuICAgIChQcC5saXN0IFBwLmNvbW1hIHByX3RyYW5zKVxuICAgIHIuUHJpbWl0aXZlcy5yZW1vdmVkXG4gICAgKFBwLmxpc3QgUHAuY29tbWEgcHJfdHJhbnMpXG4gICAgci5QcmltaXRpdmVzLmluc2VydGVkIHByX2FsZyByLlByaW1pdGl2ZXMucmF0ZVxuICAgIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggci5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKHJhdGUsIGRpc3QpIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgeyVhJWF9XCIgcHJfYWxnIHJhdGVcbiAgICAgICAgICAoUHAub3B0aW9uIChmdW4gZiBtZCAtPlxuICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjolYVwiIChhbGdfZXhwciB+bm9Db3VudGVycyA/ZW52KSBtZCkpXG4gICAgICAgICAgZGlzdClcblxubGV0IG1vZGlmaWNhdGlvbiB+bm9Db3VudGVycyA/ZW52IGYgbSA9XG4gIGxldCBkb21haW4gPVxuICAgIG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgZSAtPiBTb21lIChNb2RlbC5kb21haW4gZSlcbiAgaW5cbiAgbWF0Y2ggbSB3aXRoXG4gIHwgUHJpbWl0aXZlcy5QUklOVCAobm1lLCB2YSkgLT5cbiAgICBpZiBubWUgPD4gW10gdGhlblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiRQUklOVEYgJWEgPiAlYVwiXG4gICAgICAgIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpXG4gICAgICAgIHZhXG4gICAgICAgIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpXG4gICAgICAgIG5tZVxuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkUFJJTlRGICVhXCIgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudikgdmFcbiAgfCBQcmltaXRpdmVzLlBMT1RFTlRSWSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIkUExPVEVOVFJZXCJcbiAgfCBQcmltaXRpdmVzLklURVJfUlVMRSAoKG4sIF8pLCBydWxlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkQVBQTFkgJWEgJWFcIlxuICAgICAgKGFsZ19leHByIH5ub0NvdW50ZXJzID9lbnYpXG4gICAgICBuXG4gICAgICAobWF0Y2ggZW52IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbGVtZW50YXJ5X3J1bGUgfm5vQ291bnRlcnMgP2VudlxuICAgICAgfCBTb21lIGVudiAtPiBkZWNvbXBpbGVkX3J1bGUgfm5vQ291bnRlcnMgfmZ1bGw6ZmFsc2UgZW52KVxuICAgICAgcnVsZVxuICB8IFByaW1pdGl2ZXMuVVBEQVRFIChpZCwgKHZhLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFVQREFURSAlYSAlYVwiIChNb2RlbC5wcmludF9hbGcgP2VudikgaWRcbiAgICAgIChhbGdfZXhwciB+bm9Db3VudGVycyA/ZW52KVxuICAgICAgdmFcbiAgfCBQcmltaXRpdmVzLlNOQVBTSE9UIChyYXcsIGZuKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkU05BUFNIT1QgJWEldFwiIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpIGZuIChmdW4gZiAtPlxuICAgICAgICBpZiByYXcgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIgW3RydWVdXCIpXG4gIHwgUHJpbWl0aXZlcy5TVE9QIGZuIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRTVE9QICVhXCIgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudikgZm5cbiAgfCBQcmltaXRpdmVzLkRJTiAoa2luZCwgZm4pIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRESU4gJWEgJXRbdHJ1ZV1cIiAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KSBmblxuICAgICAgKGZ1biBmIC0+XG4gICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICB8IFByaW1pdGl2ZXMuQUJTT0xVVEUgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJhYnNvbHV0ZVxcXCIgXCJcbiAgICAgICAgfCBQcmltaXRpdmVzLlJFTEFUSVZFIC0+ICgpXG4gICAgICAgIHwgUHJpbWl0aXZlcy5QUk9CQUJJTElUWSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcInByb2JhYmlsaXR5XFxcIiBcIilcbiAgfCBQcmltaXRpdmVzLkRJTk9GRiBmbiAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkRElOICVhIFtmYWxzZV1cIiAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KSBmblxuICB8IFByaW1pdGl2ZXMuQ0ZMT1cgKF9uYW1lLCBjYywgXykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFRSQUNLIEBbJWFAXSBbdHJ1ZV1cIlxuICAgICAgKFBwLmFycmF5IFBwLmNvbW1hIChmdW4gXyAtPlxuICAgICAgICAgICBQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQ6ZmFsc2UpKVxuICAgICAgY2NcbiAgfCBQcmltaXRpdmVzLkNGTE9XT0ZGIChfLCBjYykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFRSQUNLICVhIFtmYWxzZV1cIlxuICAgICAgKFBwLmFycmF5IFBwLmNvbW1hIChmdW4gXyAtPlxuICAgICAgICAgICBQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQ6ZmFsc2UpKVxuICAgICAgY2NcbiAgfCBQcmltaXRpdmVzLlNQRUNJRVMgKGZuLCBjYywgXykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFNQRUNJRVNfT0YgQFslYUBdIFt0cnVlXSA+ICVhXCJcbiAgICAgIChQcC5hcnJheSBQcC5jb21tYSAoZnVuIF8gLT5cbiAgICAgICAgICAgUGF0dGVybi5wcmludCB+bm9Db3VudGVycyA/ZG9tYWluIH53aXRoX2lkOmZhbHNlKSlcbiAgICAgIGNjXG4gICAgICAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KVxuICAgICAgZm5cbiAgfCBQcmltaXRpdmVzLlNQRUNJRVNfT0ZGIGZuIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRTUEVDSUVTX09GIFtmYWxzZV0gPiAlYVwiIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpIGZuXG5cbmxldCBwZXJ0dXJiYXRpb24gfm5vQ291bnRlcnMgP2VudiBmIHBlcnQgPVxuICBsZXQgYXV4X2FsYXJtIGYgPVxuICAgIG1hdGNoIHBlcnQuUHJpbWl0aXZlcy5hbGFybSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG4gLT4gRm9ybWF0LmZwcmludGYgZiBcImFsYXJtICVhIFwiIE5ici5wcmludCBuXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlJW1vZDogJXQlYSBkbyAlYXJlcGVhdCAlYVwiIGF1eF9hbGFybVxuICAgIChib29sX2V4cHIgfm5vQ291bnRlcnMgP2VudilcbiAgICAoZnN0IHBlcnQuUHJpbWl0aXZlcy5wcmVjb25kaXRpb24pXG4gICAgKFBwLmxpc3QgfnRyYWlsaW5nOlBwLmNvbG9uIFBwLmNvbG9uIChtb2RpZmljYXRpb24gfm5vQ291bnRlcnMgP2VudikpXG4gICAgcGVydC5QcmltaXRpdmVzLmVmZmVjdFxuICAgIChib29sX2V4cHIgfm5vQ291bnRlcnMgP2VudilcbiAgICAoZnN0IHBlcnQuUHJpbWl0aXZlcy5yZXBlYXQpXG5cbmxldCBlbnYgfm5vQ291bnRlcnMgZiBlbnYgPVxuICBNb2RlbC5wcmludCB+bm9Db3VudGVyc1xuICAgIChmdW4gZW52IC0+IGFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgKGZ1biBlbnYgLT4gZWxlbWVudGFyeV9ydWxlIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgKGZ1biBlbnYgLT4gcGVydHVyYmF0aW9uIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgZiBlbnZcblxubGV0IGVudl9rYXBwYSB+bm9Db3VudGVycyBmIGVudiA9XG4gIE1vZGVsLnByaW50X2thcHBhIH5ub0NvdW50ZXJzXG4gICAgKGZ1biBlbnYgLT4gYWxnX2V4cHIgfm5vQ291bnRlcnMgfmVudilcbiAgICAoZnVuIGVudiAtPiBwZXJ0dXJiYXRpb24gfm5vQ291bnRlcnMgfmVudilcbiAgICBmIGVudlxuXG5sZXQgZGVjb21waWxlZF9lbnYgfm5vQ291bnRlcnMgZiBlbnYgPVxuICBNb2RlbC5wcmludF9rYXBwYSB+bm9Db3VudGVyc1xuICAgIChmdW4gZW52IC0+IGFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgfnByX3J1bGU6KGRlY29tcGlsZWRfcnVsZSB+bm9Db3VudGVycyB+ZnVsbDp0cnVlKVxuICAgIChmdW4gZW52IC0+IHBlcnR1cmJhdGlvbiB+bm9Db3VudGVycyB+ZW52KVxuICAgIGYgZW52XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHBlcmlvZCA9IERFIG9mIGludCB8IERUIG9mIGZsb2F0XG5cbnR5cGUgdCA9IHtcbiAgcHJvZ3Jlc3NTaXplOiBpbnQ7XG4gIHByb2dyZXNzQ2hhcjogY2hhcjtcbiAgZHVtcElmRGVhZGxvY2tlZDogYm9vbDtcbiAgaW5pdGlhbDogZmxvYXQgb3B0aW9uO1xuICBtYXhDb25zZWN1dGl2ZUNsYXNoOiBpbnQ7XG4gIG91dHB1dEZpbGVOYW1lOiBzdHJpbmcgb3B0aW9uO1xuICBwbG90UGVyaW9kOiBwZXJpb2Qgb3B0aW9uO1xuICBzZWVkOiBpbnQgb3B0aW9uO1xuICB0cmFjZUZpbGVOYW1lOiBzdHJpbmcgb3B0aW9uO1xuICBkZWx0YUFjdGl2aXRpZXNGaWxlTmFtZTogc3RyaW5nIG9wdGlvbjtcbn1cblxubGV0IGVtcHR5ID1cbiAge1xuICAgIHByb2dyZXNzU2l6ZSA9IDcwO1xuICAgIHByb2dyZXNzQ2hhciA9ICcjJztcbiAgICBkdW1wSWZEZWFkbG9ja2VkID0gdHJ1ZTtcbiAgICBpbml0aWFsID0gTm9uZTtcbiAgICBtYXhDb25zZWN1dGl2ZUNsYXNoID0gMztcbiAgICBzZWVkID0gTm9uZTtcbiAgICB0cmFjZUZpbGVOYW1lID0gTm9uZTtcbiAgICBwbG90UGVyaW9kID0gTm9uZTtcbiAgICBvdXRwdXRGaWxlTmFtZSA9IE5vbmU7XG4gICAgZGVsdGFBY3Rpdml0aWVzRmlsZU5hbWUgPSBOb25lO1xuICB9XG5cbmxldCBwYXJzZSByZXN1bHQgPVxuICBsZXQgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgZiA9XG4gICAgbWF0Y2ggdmFsdWVfbGlzdCB3aXRoXG4gICAgfCBbICh2LCBwb3MpIF0gLT4gZiB2IHBvc1xuICAgIHwgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgcGFyYW1ldGVyIFwiIF4gcGFyYW0sIHBvc19wKSlcbiAgaW5cbiAgbGV0IGdldF9ib29sX3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgPVxuICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gdmFsdWUgcG9zX3YgLT5cbiAgICAgICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgICB8IFwidHJ1ZVwiIHwgXCJ5ZXNcIiAtPiB0cnVlXG4gICAgICAgIHwgXCJmYWxzZVwiIHwgXCJub1wiIC0+IGZhbHNlXG4gICAgICAgIHwgXyBhcyBlcnJvciAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiBlcnJvciBeIFwiIHNob3VsZCBiZSBlaXRoZXIgXFxcInllc1xcXCIgb3IgXFxcIm5vXFxcIlwiLCBwb3NfdikpKVxuICBpblxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gKGNvbmYsIHN0b3J5X2NvbXByZXNzaW9uLCBmb3JtYXRDZmxvdywgY2Zsb3dGaWxlKVxuICAgICAgICAgKChwYXJhbSwgcG9zX3ApLCB2YWx1ZV9saXN0KSAtPlxuICAgICAgbWF0Y2ggcGFyYW0gd2l0aFxuICAgICAgfCBcImRpc3BsYXlDb21wcmVzc2lvblwiIC0+XG4gICAgICAgIGxldCByZWMgcGFyc2UgKGEsIGIsIGMpIGwgPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgKFwic3Ryb25nXCIsIF8pIDo6IHRsIC0+IHBhcnNlIChhLCBiLCB0cnVlKSB0bFxuICAgICAgICAgIHwgKFwid2Vha1wiLCBfKSA6OiB0bCAtPiBwYXJzZSAoYSwgdHJ1ZSwgYykgdGxcbiAgICAgICAgICB8IChcIm5vbmVcIiwgXykgOjogdGwgLT4gcGFyc2UgKHRydWUsIGIsIGMpIHRsXG4gICAgICAgICAgfCBbXSAtPiBjb25mLCAoYSwgYiwgYyksIGZvcm1hdENmbG93LCBjZmxvd0ZpbGVcbiAgICAgICAgICB8IChlcnJvciwgcG9zKSA6OiBfIC0+XG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAoXCJVbmtub3duIHZhbHVlIFwiIF4gZXJyb3IgXiBcIiBmb3IgY29tcHJlc3Npb24gbW9kZVwiLCBwb3MpKVxuICAgICAgICBpblxuICAgICAgICBwYXJzZSBzdG9yeV9jb21wcmVzc2lvbiB2YWx1ZV9saXN0XG4gICAgICB8IFwiY2Zsb3dGaWxlTmFtZVwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4geCBfIC0+XG4gICAgICAgICAgICBjb25mLCBzdG9yeV9jb21wcmVzc2lvbiwgZm9ybWF0Q2Zsb3csIFNvbWUgeClcbiAgICAgIHwgXCJzZWVkXCIgLT5cbiAgICAgICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biBzIHAgLT5cbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIHNlZWQgPSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpIH0sXG4gICAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHMgXiBcIiBzaG91bGQgYmUgYW4gaW50ZWdlclwiLCBwKSkpXG4gICAgICB8IFwiVDBcIiAtPlxuICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHMgcCAtPlxuICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICggeyBjb25mIHdpdGggaW5pdGlhbCA9IFNvbWUgKGZsb2F0X29mX3N0cmluZyBzKSB9LFxuICAgICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiBzIF4gXCIgc2hvdWxkIGJlIGEgZmxvYXRcIiwgcCkpKVxuICAgICAgfCBcInBsb3RQZXJpb2RcIiAtPlxuICAgICAgICAobWF0Y2ggdmFsdWVfbGlzdCB3aXRoXG4gICAgICAgIHwgWyAocywgcCkgXSAtPlxuICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIHBsb3RQZXJpb2QgPSBTb21lIChEVCAoZmxvYXRfb2Zfc3RyaW5nIHMpKSB9LFxuICAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHMgXiBcIiBzaG91bGQgYmUgYSBmbG9hdFwiLCBwKSkpXG4gICAgICAgIHwgWyAocywgc3ApOyAodSwgdXApIF0gLT5cbiAgICAgICAgICBpZlxuICAgICAgICAgICAgdSA9IFwiZVwiIHx8IHUgPSBcImV2ZW50XCIgfHwgdSA9IFwiZXZlbnRzXCIgfHwgdSA9IFwiRXZlbnRcIlxuICAgICAgICAgICAgfHwgdSA9IFwiRXZlbnRzXCJcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIHBsb3RQZXJpb2QgPSBTb21lIChERSAoaW50X29mX3N0cmluZyBzKSkgfSxcbiAgICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgIChcIlZhbHVlIFwiIF4gcyBeIFwiIHNob3VsZCBiZSBhbiBpbnRlZ2VyXCIsIHNwKSlcbiAgICAgICAgICApIGVsc2UgaWZcbiAgICAgICAgICAgICAgdSA9IFwidC51LlwiIHx8IHUgPSBcInRpbWUgdW5pdHNcIiB8fCB1ID0gXCJUaW1lIHVuaXRzXCJcbiAgICAgICAgICAgICAgfHwgdSA9IFwidGltZSB1bml0XCIgfHwgdSA9IFwiVGltZSB1bml0XCJcbiAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICggeyBjb25mIHdpdGggcGxvdFBlcmlvZCA9IFNvbWUgKERUIChmbG9hdF9vZl9zdHJpbmcgcykpIH0sXG4gICAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHMgXiBcIiBzaG91bGQgYmUgYSBmbG9hdFwiLCBzcCkpXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAoXCJJbmNvcnJlY3QgdW5pdCBcIiBeIHUsIHVwKSlcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoXCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBwYXJhbWV0ZXIgXCIgXiBwYXJhbSwgcG9zX3ApKSlcbiAgICAgIHwgXCJvdXRwdXRGaWxlTmFtZVwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gcyBfIC0+XG4gICAgICAgICAgICAoIHsgY29uZiB3aXRoIG91dHB1dEZpbGVOYW1lID0gU29tZSBzIH0sXG4gICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgY2Zsb3dGaWxlICkpXG4gICAgICB8IFwidHJhY2VGaWxlTmFtZVwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gcyBfIC0+XG4gICAgICAgICAgICAoIHsgY29uZiB3aXRoIHRyYWNlRmlsZU5hbWUgPSBTb21lIHMgfSxcbiAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgICAgICBjZmxvd0ZpbGUgKSlcbiAgICAgIHwgXCJkZWx0YUFjdGl2aXRpZXNGaWxlTmFtZVwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gcyBfIC0+XG4gICAgICAgICAgICAoIHsgY29uZiB3aXRoIGRlbHRhQWN0aXZpdGllc0ZpbGVOYW1lID0gU29tZSBzIH0sXG4gICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgY2Zsb3dGaWxlICkpXG4gICAgICB8IFwicHJvZ3Jlc3NCYXJTaXplXCIgLT5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBjb25mIHdpdGhcbiAgICAgICAgICAgIHByb2dyZXNzU2l6ZSA9XG4gICAgICAgICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gdiBwIC0+XG4gICAgICAgICAgICAgICAgICB0cnkgaW50X29mX3N0cmluZyB2XG4gICAgICAgICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiB2IF4gXCIgc2hvdWxkIGJlIGFuIGludGVnZXJcIiwgcCkpKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICB8IFwicHJvZ3Jlc3NCYXJTeW1ib2xcIiAtPlxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGNvbmYgd2l0aFxuICAgICAgICAgICAgcHJvZ3Jlc3NDaGFyID1cbiAgICAgICAgICAgICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biB2IHAgLT5cbiAgICAgICAgICAgICAgICAgIHRyeSBTdHJpbmcudW5zYWZlX2dldCB2IDBcbiAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiB2IF4gXCIgc2hvdWxkIGJlIGEgY2hhcmFjdGVyXCIsIHApKSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgfCBcImR1bXBJZkRlYWRsb2NrZWRcIiAtPlxuICAgICAgICAoIHsgY29uZiB3aXRoIGR1bXBJZkRlYWRsb2NrZWQgPSBnZXRfYm9vbF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IH0sXG4gICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgIHwgXCJtYXhDb25zZWN1dGl2ZUNsYXNoXCIgLT5cbiAgICAgICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biB2IHAgLT5cbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIG1heENvbnNlY3V0aXZlQ2xhc2ggPSBpbnRfb2Zfc3RyaW5nIHYgfSxcbiAgICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHYgXiBcIiBzaG91bGQgYmUgYW4gaW50ZWdlclwiLCBwKSkpXG4gICAgICB8IFwiZG90Q2Zsb3dzXCIgLT5cbiAgICAgICAgbGV0IGZvcm1hdENmbG93ID0gZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biB2IF8gLT4gdikgaW5cbiAgICAgICAgY29uZiwgc3RvcnlfY29tcHJlc3Npb24sIGZvcm1hdENmbG93LCBjZmxvd0ZpbGVcbiAgICAgICgqIGlmIGdldF9ib29sX3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgdGhlblxuICAgICAgICAgKHN0b3J5X2NvbXByZXNzaW9uLCBEb3QpIGVsc2VcbiAgICAgICAgIChzdG9yeV9jb21wcmVzc2lvbiwgSHRtbCkqKVxuICAgICAgfCBfIGFzIGVycm9yIC0+XG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKFwiVW5rbm93biBwYXJhbWV0ZXIgXCIgXiBlcnJvciwgcG9zX3ApKSlcbiAgICAoZW1wdHksIChmYWxzZSwgZmFsc2UsIGZhbHNlKSwgXCJkb3RcIiwgTm9uZSlcbiAgICByZXN1bHRcblxubGV0IHByaW50IGYgY29uZiA9XG4gIGxldCAoKSA9IEZvcm1hdC5wcF9vcGVuX3Zib3ggZiAwIGluXG4gIGxldCAoKSA9XG4gICAgUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlXG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwic2VlZFxcXCIgXFxcIiVpXFxcIkAsXCIpXG4gICAgICBmIGNvbmYuc2VlZFxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcImR1bXBJZkRlYWRsb2NrZWRcXFwiIFxcXCIlYlxcXCJALFwiXG4gICAgICBjb25mLmR1bXBJZkRlYWRsb2NrZWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJtYXhDb25zZWN1dGl2ZUNsYXNoXFxcIiBcXFwiJWlcXFwiQCxcIlxuICAgICAgY29uZi5tYXhDb25zZWN1dGl2ZUNsYXNoXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwicHJvZ3Jlc3NCYXJTaXplXFxcIiBcXFwiJWlcXFwiQCxcIiBjb25mLnByb2dyZXNzU2l6ZVxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcInByb2dyZXNzQmFyU3ltYm9sXFxcIiBcXFwiJWNcXFwiQCxcIiBjb25mLnByb2dyZXNzQ2hhclxuICBpblxuICBsZXQgKCkgPVxuICAgIFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZVxuICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcIlQwXFxcIiBcXFwiJWdcXFwiQCxcIilcbiAgICAgIGYgY29uZi5pbml0aWFsXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlXG4gICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBERSBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcInBsb3RQZXJpb2RcXFwiIFxcXCIlaVxcXCIgXFxcImV2ZW50c1xcXCJALFwiIGlcbiAgICAgICAgfCBEVCB0IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcInBsb3RQZXJpb2RcXFwiIFxcXCIlZ1xcXCIgXFxcInQudS5cXFwiQCxcIiB0KVxuICAgICAgZiBjb25mLnBsb3RQZXJpb2RcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2VcbiAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJvdXRwdXRGaWxlTmFtZVxcXCIgXFxcIiVzXFxcIkAsXCIpXG4gICAgICBmIGNvbmYub3V0cHV0RmlsZU5hbWVcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2VcbiAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJ0cmFjZUZpbGVOYW1lXFxcIiBcXFwiJXNcXFwiQCxcIilcbiAgICAgIGYgY29uZi50cmFjZUZpbGVOYW1lXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlXG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwiZGVsdGFBY3Rpdml0aWVzRmlsZU5hbWVcXFwiIFxcXCIlc1xcXCJALFwiKVxuICAgICAgZiBjb25mLmRlbHRhQWN0aXZpdGllc0ZpbGVOYW1lXG4gIGluXG4gIEZvcm1hdC5wcF9jbG9zZV9ib3ggZiAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGRpdmlkZV9leHByX2J5X2ludCBlIGkgPVxuICBMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgIChBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgKE9wZXJhdG9yLkRJViwgZSwgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIChOYnIuSSBpKSkpKVxuXG50eXBlICgnYSwgJ2IpIGNvcnJlY3RlZF9yYXRlX2NvbnN0ID0ge1xuICBudW06IE5ici50O1xuICBkZW46IE5ici50O1xuICB2YXI6ICgnYSwgJ2IpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uO1xufVxuXG5sZXQgcmVjIHNpbXBsaWZ5ID8ocm9vdF9vbmx5ID0gZmFsc2UpIGV4cHIgPVxuICBtYXRjaCBleHByIHdpdGhcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYyAtPlxuICAgIGxldCBhLCBiID1cbiAgICAgIGlmIHJvb3Rfb25seSB0aGVuXG4gICAgICAgIGEsIGJcbiAgICAgIGVsc2VcbiAgICAgICAgc2ltcGxpZnkgYSwgc2ltcGxpZnkgYlxuICAgIGluXG4gICAgbGV0IHJvb3Rfb25seSA9IHRydWUgaW5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuU1VNIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhLCBfKSwgKEFsZ19leHByLkNPTlNUIGIsIF8pIC0+XG4gICAgICAgIEFsZ19leHByLkNPTlNUIChOYnIuYWRkIGEgYiksIGxvY1xuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIF8gd2hlbiBOYnIuaXNfemVybyBhIC0+IGJcbiAgICAgIHwgXywgKEFsZ19leHByLkNPTlNUIGIsIF8pIHdoZW4gTmJyLmlzX3plcm8gYiAtPiBhXG4gICAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgICB8IE9wZXJhdG9yLk1JTlVTIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhLCBfKSwgKEFsZ19leHByLkNPTlNUIGIsIF8pIC0+XG4gICAgICAgIEFsZ19leHByLkNPTlNUIChOYnIuc3ViIGEgYiksIGxvY1xuICAgICAgfCBfLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgd2hlbiBOYnIuaXNfemVybyBiIC0+IGFcbiAgICAgIHwgKCAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuTVVMVCAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKSAtPlxuICAgICAgICBBbGdfZXhwci5DT05TVCAoTmJyLm11bHQgYSBiKSwgbG9jXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhJywgXyksIF8gd2hlbiBOYnIuaXNfZXF1YWwgYScgTmJyLnplcm8gLT4gYVxuICAgICAgfCBfLCAoQWxnX2V4cHIuQ09OU1QgYicsIF8pIHdoZW4gTmJyLmlzX2VxdWFsIGInIE5ici56ZXJvIC0+IGJcbiAgICAgIHwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCBfIHdoZW4gTmJyLmlzX2VxdWFsIGEgTmJyLm9uZSAtPiBiXG4gICAgICB8IF8sIChBbGdfZXhwci5DT05TVCBiLCBfKSB3aGVuIE5ici5pc19lcXVhbCBiIE5ici5vbmUgLT4gYVxuICAgICAgfCAoIChBbGdfZXhwci5DT05TVCBhLCBsb2NfY3N0KSxcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIChBbGdfZXhwci5DT05TVCBiLCBfKSwgYyksIF9cbiAgICAgICAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIGMsIChBbGdfZXhwci5DT05TVCBiLCBfKSksIF8gKSApXG4gICAgICB8ICggKCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCAoQWxnX2V4cHIuQ09OU1QgYiwgXyksIGMpLCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCBjLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykpLCBfICksXG4gICAgICAgICAgKEFsZ19leHByLkNPTlNUIGEsIGxvY19jc3QpICkgLT5cbiAgICAgICAgKCogYSooYipjKSAtPiAoYSpiKSpjIGlmIGEgJiBiIGFyZSBjb25zdGFudCAqKVxuICAgICAgICBzaW1wbGlmeSB+cm9vdF9vbmx5XG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgIChPcGVyYXRvci5NVUxULCAoQWxnX2V4cHIuQ09OU1QgKE5ici5tdWx0IGEgYiksIGxvY19jc3QpLCBjKSxcbiAgICAgICAgICAgIGxvYyApXG4gICAgICB8ICggKEFsZ19leHByLkNPTlNUIGEsIGxvY19jc3QpLFxuICAgICAgICAgIChBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIChBbGdfZXhwci5DT05TVCBiLCBfKSwgYyksIF8pIClcbiAgICAgIHwgKCAoQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuRElWLCAoQWxnX2V4cHIuQ09OU1QgYiwgXyksIGMpLCBfKSxcbiAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgYSwgbG9jX2NzdCkgKSAtPlxuICAgICAgICAoKiBhKihiL2MpIC0+IChhKmIpL2MgaWYgYSAmIGIgYXJlIGNvbnN0YW50ICopXG4gICAgICAgIHNpbXBsaWZ5IH5yb290X29ubHlcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgKE9wZXJhdG9yLkRJViwgKEFsZ19leHByLkNPTlNUIChOYnIubXVsdCBhIGIpLCBsb2NfY3N0KSwgYyksXG4gICAgICAgICAgICBsb2MgKVxuICAgICAgfCAoIChBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIGIsIChBbGdfZXhwci5DT05TVCBjLCBfKSksIF8pLFxuICAgICAgICAgIChBbGdfZXhwci5DT05TVCBhLCBsb2NfY3N0KSApXG4gICAgICB8ICggKEFsZ19leHByLkNPTlNUIGEsIGxvY19jc3QpLFxuICAgICAgICAgIChBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIGIsIChBbGdfZXhwci5DT05TVCBjLCBfKSksIF8pIClcbiAgICAgICAgd2hlbiAobm90IChOYnIuaXNfemVybyBjKSkgJiYgTmJyLmlzX3plcm8gKE5ici5yZW0gYSBjKSAtPlxuICAgICAgICAoKiBhKihiL2MpIC0+ICgoYS9jKSpiKSBpZiBhICYgYyBhcmUgY29uc3RhbnQgIGFuZCBjfGEgKilcbiAgICAgICAgc2ltcGxpZnkgfnJvb3Rfb25seVxuICAgICAgICAgICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAoIE9wZXJhdG9yLk1VTFQsXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLkNPTlNUIChOYnIuaW50ZXJuYWxfZGl2IGEgYyksIGxvY19jc3QpLFxuICAgICAgICAgICAgICAgIGIgKSxcbiAgICAgICAgICAgIGxvYyApXG4gICAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAgICggKCBPcGVyYXRvci5ESVYgfCBPcGVyYXRvci5NVUxUIHwgT3BlcmF0b3IuU1VNIHwgT3BlcmF0b3IuTUlOVVNcbiAgICAgICAgICAgICAgICAgIHwgT3BlcmF0b3IuUE9XIHwgT3BlcmF0b3IuTU9EVUxPIHwgT3BlcmF0b3IuTUlOIHwgT3BlcmF0b3IuTUFYXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBfLFxuICAgICAgICAgICAgICAgICAgXyApXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApLFxuICAgICAgICAgICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5ESVYgLT5cbiAgICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgXywgKEFsZ19leHByLkNPTlNUIGIsIF8pIHdoZW4gTmJyLmlzX2VxdWFsIGIgTmJyLm9uZSAtPiBhXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhLCBfKSwgKEFsZ19leHByLkNPTlNUIGIsIF8pXG4gICAgICAgIHdoZW4gKG5vdCAoTmJyLmlzX3plcm8gYikpICYmIE5ici5pc196ZXJvIChOYnIucmVtIGEgYikgLT5cbiAgICAgICAgQWxnX2V4cHIuQ09OU1QgKE5ici5pbnRlcm5hbF9kaXYgYSBiKSwgbG9jXG4gICAgICB8ICggKCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIGIpLFxuICAgICAgICAgICAgbG9jX2JpbiApLFxuICAgICAgICAgIChBbGdfZXhwci5DT05TVCBjLCBfKSApXG4gICAgICAgIHdoZW4gTmJyLmlzX3plcm8gKE5ici5yZW0gYSBjKSAtPlxuICAgICAgICAoKiAoYSpiL2MpICYgY3xhIC0+ICgoYy9hKSpiKSopXG4gICAgICAgIHNpbXBsaWZ5IH5yb290X29ubHlcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgKCBPcGVyYXRvci5NVUxULFxuICAgICAgICAgICAgICAgIChBbGdfZXhwci5DT05TVCAoTmJyLmludGVybmFsX2RpdiBjIGEpLCBsb2NfYmluKSxcbiAgICAgICAgICAgICAgICBiICksXG4gICAgICAgICAgICBsb2MgKVxuICAgICAgfCAoICggQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuTVVMVCwgYiwgKEFsZ19leHByLkNPTlNUIGEsIF8pKSxcbiAgICAgICAgICAgIGxvY19iaW4gKSxcbiAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgYywgXykgKVxuICAgICAgICB3aGVuIE5ici5pc196ZXJvIChOYnIucmVtIGEgYykgLT5cbiAgICAgICAgKCogKGIqYS9jKSAmIGN8YSAtPiAoKGMvYSkqYikqKVxuICAgICAgICBzaW1wbGlmeSB+cm9vdF9vbmx5XG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgICggT3BlcmF0b3IuTVVMVCxcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgKE5ici5pbnRlcm5hbF9kaXYgYyBhKSwgbG9jX2JpbiksXG4gICAgICAgICAgICAgICAgYiApLFxuICAgICAgICAgICAgbG9jIClcbiAgICAgIHwgKCBhLFxuICAgICAgICAgICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAoT3BlcmF0b3IuRElWLCAoQWxnX2V4cHIuQ09OU1QgYiwgXyksIChBbGdfZXhwci5DT05TVCBjLCBfKSksXG4gICAgICAgICAgICBsb2NkaXYgKSApIC0+XG4gICAgICAgICgqIChhL2IvYykgLT4gYS8oYipjKSAqKVxuICAgICAgICBzaW1wbGlmeSB+cm9vdF9vbmx5XG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgIChPcGVyYXRvci5ESVYsIGEsIEFsZ19leHByLihDT05TVCAoTmJyLm11bHQgYiBjKSwgbG9jZGl2KSksXG4gICAgICAgICAgICBsb2MgKVxuICAgICAgfCAoICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgICAoICggT3BlcmF0b3IuRElWIHwgT3BlcmF0b3IuTVVMVCB8IE9wZXJhdG9yLlNVTSB8IE9wZXJhdG9yLk1JTlVTXG4gICAgICAgICAgICAgICAgICB8IE9wZXJhdG9yLlBPVyB8IE9wZXJhdG9yLk1PRFVMTyB8IE9wZXJhdG9yLk1JTiB8IE9wZXJhdG9yLk1BWFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgXyxcbiAgICAgICAgICAgICAgICAgIF8gKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuUE9XIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IF8sIChBbGdfZXhwci5DT05TVCBiLCBfKSB3aGVuIE5ici5pc19lcXVhbCBiIE5ici5vbmUgLT4gYVxuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKVxuICAgICAgICB3aGVuIE5ici5pc19zbWFsbGVyIGEgKE5ici5JIDExKVxuICAgICAgICAgICAgICYmIE5ici5pc19ncmVhdGVyIGIgTmJyLnplcm9cbiAgICAgICAgICAgICAmJiBOYnIuaXNfc21hbGxlciBiIChOYnIuSSAxMSkgLT5cbiAgICAgICAgQWxnX2V4cHIuQ09OU1QgKE5ici5wb3cgYSBiKSwgbG9jXG4gICAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgICB8IE9wZXJhdG9yLk1PRFVMTyAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCBfLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgd2hlbiBOYnIuaXNfZXF1YWwgYiBOYnIub25lIC0+IGFcbiAgICAgIHwgKCAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuTUlOIHwgT3BlcmF0b3IuTUFYIC0+IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICB8IEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEpLCBsb2MgLT5cbiAgICBsZXQgYSA9IHNpbXBsaWZ5IGEgaW5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuVU1JTlVTIC0+XG4gICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICB8IEFsZ19leHByLkNPTlNUIGEsIF8gLT4gQWxnX2V4cHIuQ09OU1QgKE5ici5uZWcgYSksIGxvY1xuICAgICAgfCAoICggQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfIHwgQWxnX2V4cHIuVU5fQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF8gfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgIF8gKSAtPlxuICAgICAgICBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuQ09TSU5VUyB8IE9wZXJhdG9yLkVYUCAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgfCBBbGdfZXhwci5DT05TVCBhLCBfIHdoZW4gTmJyLmlzX3plcm8gYSAtPiBBbGdfZXhwci5DT05TVCBOYnIub25lLCBsb2NcbiAgICAgIHwgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgXyApIC0+XG4gICAgICAgIEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5TSU5VUyB8IE9wZXJhdG9yLlRBTiAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgfCBBbGdfZXhwci5DT05TVCBhLCBfIHdoZW4gTmJyLmlzX2VxdWFsIGEgTmJyLm9uZSAtPlxuICAgICAgICBBbGdfZXhwci5DT05TVCBOYnIuemVybywgbG9jXG4gICAgICB8ICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgIF8gKSAtPlxuICAgICAgICBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuU1FSVCB8IE9wZXJhdG9yLkxPRyB8IE9wZXJhdG9yLklOVCAtPlxuICAgICAgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSksIGxvYylcbiAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIChleHByLCBtaXgpLCBsb2MgLT5cbiAgICBsZXQgZXhwciA9IHNpbXBsaWZ5IGV4cHIgaW5cbiAgICAobWF0Y2ggZXhwciB3aXRoXG4gICAgfCBBbGdfZXhwci5DT05TVCBfLCBfIC0+IEFsZ19leHByLkNPTlNUIE5ici56ZXJvLCBsb2NcbiAgICB8ICggKCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF8gfCBBbGdfZXhwci5VTl9BTEdfT1AgX1xuICAgICAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgIF8gKSAtPlxuICAgICAgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgbWl4KSwgbG9jKVxuICB8IEFsZ19leHByLkRJRkZfVE9LRU4gKGV4cHIsIHRva2VuKSwgbG9jIC0+XG4gICAgbGV0IGV4cHIgPSBzaW1wbGlmeSBleHByIGluXG4gICAgKG1hdGNoIGV4cHIgd2l0aFxuICAgIHwgQWxnX2V4cHIuQ09OU1QgXywgXyAtPiBBbGdfZXhwci5DT05TVCBOYnIuemVybywgbG9jXG4gICAgfCAoICggQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfIHwgQWxnX2V4cHIuVU5fQUxHX09QIF9cbiAgICAgICAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgXyB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICBfICkgLT5cbiAgICAgIEFsZ19leHByLkRJRkZfVE9LRU4gKGV4cHIsIHRva2VuKSwgbG9jKVxuICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfLCBfXG4gIHwgQWxnX2V4cHIuQUxHX1ZBUiBfLCBfXG4gIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXywgX1xuICB8IEFsZ19leHByLlRPS0VOX0lEIF8sIF9cbiAgfCBBbGdfZXhwci5DT05TVCBfLCBfIC0+XG4gICAgZXhwclxuICB8IEFsZ19leHByLklGIChjb25kLCB5ZXMsIG5vKSwgbG9jIC0+XG4gICAgbGV0IGNvbmQsIHllcywgbm8gPSBzaW1wbGlmeV9ib29sIGNvbmQsIHNpbXBsaWZ5IHllcywgc2ltcGxpZnkgbm8gaW5cbiAgICAobWF0Y2ggY29uZCB3aXRoXG4gICAgfCBBbGdfZXhwci5UUlVFLCBfIC0+IHllc1xuICAgIHwgQWxnX2V4cHIuRkFMU0UsIF8gLT4gbm9cbiAgICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKF8sIF8pLCBfXG4gICAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgXywgXyksIF9cbiAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKF8sIF8sIF8pLCBfIC0+XG4gICAgICBBbGdfZXhwci5JRiAoY29uZCwgeWVzLCBubyksIGxvYylcblxuYW5kIHNpbXBsaWZ5X2Jvb2wgZXhwcl9ib29sID1cbiAgbWF0Y2ggZXhwcl9ib29sIHdpdGhcbiAgfCBBbGdfZXhwci5UUlVFLCBfIHwgQWxnX2V4cHIuRkFMU0UsIF8gLT4gZXhwcl9ib29sXG4gIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIGEpLCBsb2MgLT5cbiAgICAobWF0Y2ggc2ltcGxpZnlfYm9vbCBhIHdpdGhcbiAgICB8IEFsZ19leHByLlRSVUUsIF8gLT4gQWxnX2V4cHIuRkFMU0UsIGxvY1xuICAgIHwgQWxnX2V4cHIuRkFMU0UsIF8gLT4gQWxnX2V4cHIuVFJVRSwgbG9jXG4gICAgfCAoIEFsZ19leHByLkJJTl9CT09MX09QIChfLCBfLCBfKSwgX1xuICAgICAgfCBBbGdfZXhwci5DT01QQVJFX09QIChfLCBfLCBfKSwgX1xuICAgICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChfLCBfKSwgXyApIGFzIGEnIC0+XG4gICAgICBBbGdfZXhwci5VTl9CT09MX09QIChvcCwgYScpLCBsb2MpXG4gIHwgQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCBhLCBiKSwgbG9jIC0+XG4gICAgbGV0IGEsIGIgPSBzaW1wbGlmeV9ib29sIGEsIHNpbXBsaWZ5X2Jvb2wgYiBpblxuICAgIChtYXRjaCBvcCB3aXRoXG4gICAgfCBPcGVyYXRvci5BTkQgLT5cbiAgICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgKEFsZ19leHByLlRSVUUsIF8pLCBfIC0+IGJcbiAgICAgIHwgKEFsZ19leHByLkZBTFNFLCBfKSwgXyAtPiBhXG4gICAgICB8IF8sIChBbGdfZXhwci5UUlVFLCBfKSAtPiBhXG4gICAgICB8IF8sIChBbGdfZXhwci5GQUxTRSwgXykgLT4gYlxuICAgICAgfCAoICggKCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAoXywgXykgKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQklOX0JPT0xfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKF8sIF8pICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIGEsIGIpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5PUiAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCAoQWxnX2V4cHIuVFJVRSwgXyksIF8gLT4gYVxuICAgICAgfCAoQWxnX2V4cHIuRkFMU0UsIF8pLCBfIC0+IGJcbiAgICAgIHwgXywgKEFsZ19leHByLlRSVUUsIF8pIC0+IGJcbiAgICAgIHwgXywgKEFsZ19leHByLkZBTFNFLCBfKSAtPiBhXG4gICAgICB8ICggKCAoIEFsZ19leHByLkJJTl9CT09MX09QIChfLCBfLCBfKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5DT01QQVJFX09QIChfLCBfLCBfKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChfLCBfKSApLFxuICAgICAgICAgICAgXyApLFxuICAgICAgICAgICggKCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAoXywgXykgKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgYSwgYiksIGxvYykpXG4gIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIGEsIGIpLCBsb2MgLT5cbiAgICBsZXQgYSwgYiA9IHNpbXBsaWZ5IGEsIHNpbXBsaWZ5IGIgaW5cbiAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKSAtPlxuICAgICAgKG1hdGNoIG9wIHdpdGhcbiAgICAgIHwgT3BlcmF0b3IuR1JFQVRFUiAtPlxuICAgICAgICBpZiBOYnIuaXNfZ3JlYXRlciBhIGIgdGhlblxuICAgICAgICAgIEFsZ19leHByLlRSVUUsIGxvY1xuICAgICAgICBlbHNlXG4gICAgICAgICAgQWxnX2V4cHIuRkFMU0UsIGxvY1xuICAgICAgfCBPcGVyYXRvci5TTUFMTEVSIC0+XG4gICAgICAgIGlmIE5ici5pc19zbWFsbGVyIGEgYiB0aGVuXG4gICAgICAgICAgQWxnX2V4cHIuVFJVRSwgbG9jXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBBbGdfZXhwci5GQUxTRSwgbG9jXG4gICAgICB8IE9wZXJhdG9yLkVRVUFMIC0+XG4gICAgICAgIGlmIE5ici5pc19lcXVhbCBhIGIgdGhlblxuICAgICAgICAgIEFsZ19leHByLlRSVUUsIGxvY1xuICAgICAgICBlbHNlXG4gICAgICAgICAgQWxnX2V4cHIuRkFMU0UsIGxvY1xuICAgICAgfCBPcGVyYXRvci5ESUZGIC0+XG4gICAgICAgIGlmIE5ici5pc19lcXVhbCBhIGIgdGhlblxuICAgICAgICAgIEFsZ19leHByLkZBTFNFLCBsb2NcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEFsZ19leHByLlRSVUUsIGxvYylcbiAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfICksXG4gICAgICAgICAgXyApLFxuICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gKSxcbiAgICAgICAgICBfICkgKSAtPlxuICAgICAgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIGEsIGIpLCBsb2MpXG5cbmxldCBzaW1wbGlmeSBleHByID1cbiAgbGV0IHJvb3Rfb25seSA9IGZhbHNlIGluXG4gIHNpbXBsaWZ5IH5yb290X29ubHkgZXhwclxuXG5sZXQgcmVjIGNsZWFuIGV4cHIgPVxuICBsZXQgZXhwciA9IGZzdCBleHByIGluXG4gIG1hdGNoIGV4cHIgd2l0aFxuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgY2xlYW4gYSwgY2xlYW4gYikpXG4gIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSkgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgY2xlYW4gYSkpXG4gIHwgQWxnX2V4cHIuRElGRl9UT0tFTiAoZXhwciwgZHQpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkRJRkZfVE9LRU4gKGNsZWFuIGV4cHIsIGR0KSlcbiAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIChleHByLCBkdCkgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoY2xlYW4gZXhwciwgZHQpKVxuICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgX1xuICB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5DT05TVCBfIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgZXhwclxuICB8IEFsZ19leHByLklGIChjb25kLCB5ZXMsIG5vKSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5JRiAoY2xlYW5fYm9vbCBjb25kLCBjbGVhbiB5ZXMsIGNsZWFuIG5vKSlcblxuYW5kIGNsZWFuX2Jvb2wgZXhwcl9ib29sID1cbiAgbGV0IGV4cHIgPSBmc3QgZXhwcl9ib29sIGluXG4gIG1hdGNoIGV4cHIgd2l0aFxuICB8IEFsZ19leHByLlRSVUUgfCBBbGdfZXhwci5GQUxTRSAtPiBMb2MuYW5ub3Rfd2l0aF9kdW1teSBleHByXG4gIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIGEpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCBjbGVhbl9ib29sIGEpKVxuICB8IEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgYSwgYikgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCBjbGVhbl9ib29sIGEsIGNsZWFuX2Jvb2wgYikpXG4gIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIGEsIGIpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCBjbGVhbiBhLCBjbGVhbiBiKSlcblxubGV0IHJlYyBnZXRfY29ycmVjdGVkX3JhdGUgZSA9XG4gIG1hdGNoIGUgd2l0aFxuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIChBbGdfZXhwci5DT05TVCBjc3QsIF8pLCBlKSwgX1xuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIGUsIChBbGdfZXhwci5DT05TVCBjc3QsIF8pKSwgXyAtPlxuICAgIChtYXRjaCBnZXRfY29ycmVjdGVkX3JhdGUgZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgY29ycmVjdGVkX3JhdGUgLT5cbiAgICAgIFNvbWUgeyBjb3JyZWN0ZWRfcmF0ZSB3aXRoIG51bSA9IE5ici5tdWx0IGNzdCBjb3JyZWN0ZWRfcmF0ZS5udW0gfSlcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIGUsIChBbGdfZXhwci5DT05TVCBjc3QsIF8pKSwgXyAtPlxuICAgIChtYXRjaCBnZXRfY29ycmVjdGVkX3JhdGUgZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgY29ycmVjdGVkX3JhdGUgLT5cbiAgICAgIFNvbWUgeyBjb3JyZWN0ZWRfcmF0ZSB3aXRoIGRlbiA9IE5ici5tdWx0IGNzdCBjb3JyZWN0ZWRfcmF0ZS5kZW4gfSlcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5TVU0sIGUxLCBlMiksIF8gLT5cbiAgICAobWF0Y2ggZ2V0X2NvcnJlY3RlZF9yYXRlIGUxIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBjb3JyZWN0ZWRfcmF0ZTEgLT5cbiAgICAgIChtYXRjaCBnZXRfY29ycmVjdGVkX3JhdGUgZTIgd2l0aFxuICAgICAgfCBTb21lIGNvcnJlY3RlZF9yYXRlMlxuICAgICAgICB3aGVuIGNvbXBhcmUgY29ycmVjdGVkX3JhdGUxLnZhciBjb3JyZWN0ZWRfcmF0ZTIudmFyID0gMFxuICAgICAgICAgICAgICYmIE5ici5pc19lcXVhbCBjb3JyZWN0ZWRfcmF0ZTEuZGVuIGNvcnJlY3RlZF9yYXRlMi5kZW4gLT5cbiAgICAgICAgU29tZVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvcnJlY3RlZF9yYXRlMSB3aXRoXG4gICAgICAgICAgICBudW0gPSBOYnIuYWRkIGNvcnJlY3RlZF9yYXRlMS5udW0gY29ycmVjdGVkX3JhdGUyLm51bTtcbiAgICAgICAgICB9XG4gICAgICB8IFNvbWUgY29ycmVjdGVkX3JhdGUyXG4gICAgICAgIHdoZW4gY29tcGFyZSBjb3JyZWN0ZWRfcmF0ZTEudmFyIGNvcnJlY3RlZF9yYXRlMi52YXIgPSAwIC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb3JyZWN0ZWRfcmF0ZTEgd2l0aFxuICAgICAgICAgICAgbnVtID1cbiAgICAgICAgICAgICAgTmJyLmFkZFxuICAgICAgICAgICAgICAgIChOYnIubXVsdCBjb3JyZWN0ZWRfcmF0ZTIuZGVuIGNvcnJlY3RlZF9yYXRlMS5udW0pXG4gICAgICAgICAgICAgICAgKE5ici5tdWx0IGNvcnJlY3RlZF9yYXRlMS5kZW4gY29ycmVjdGVkX3JhdGUyLm51bSk7XG4gICAgICAgICAgICBkZW4gPSBOYnIubXVsdCBjb3JyZWN0ZWRfcmF0ZTEuZGVuIGNvcnJlY3RlZF9yYXRlMi5kZW47XG4gICAgICAgICAgfVxuICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpKVxuICB8ICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAoICggT3BlcmF0b3IuTVVMVCB8IE9wZXJhdG9yLkRJViB8IE9wZXJhdG9yLk1JTlVTIHwgT3BlcmF0b3IuUE9XXG4gICAgICAgICAgfCBPcGVyYXRvci5NT0RVTE8gfCBPcGVyYXRvci5NQVggfCBPcGVyYXRvci5NSU4gKSxcbiAgICAgICAgICBfLFxuICAgICAgICAgIF8gKSxcbiAgICAgIF8gKVxuICB8ICggKCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfXG4gICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLklGIF8gKSxcbiAgICAgIF8gKSAtPlxuICAgIE5vbmVcbiAgfCBBbGdfZXhwci5BTEdfVkFSIF8sIF8gLT4gU29tZSB7IHZhciA9IFNvbWUgZTsgbnVtID0gTmJyLm9uZTsgZGVuID0gTmJyLm9uZSB9XG4gIHwgQWxnX2V4cHIuQ09OU1QgY3N0LCBfIC0+IFNvbWUgeyB2YXIgPSBOb25lOyBudW0gPSBjc3Q7IGRlbiA9IE5ici5vbmUgfVxuXG5sZXQgZ2V0X2NvcnJlY3RlZF9yYXRlIGUgPSBnZXRfY29ycmVjdGVkX3JhdGUgKGNsZWFuIGUpXG5cbmxldCBwcmludCBwcl92YXIgZiBjb3JyZWN0ZWRfcmF0ZV9jb25zdCA9XG4gIG1hdGNoIGNvcnJlY3RlZF9yYXRlX2NvbnN0IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJOb25lXCJcbiAgfCBTb21lIGEgLT5cbiAgICAobWF0Y2ggYS52YXIgd2l0aFxuICAgIHwgU29tZSBfIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiKCVhLyVhKS4lYVwiIE5ici5wcmludCBhLm51bSBOYnIucHJpbnQgYS5kZW4gcHJfdmFyIGEudmFyXG4gICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIoJWEvJWEpXCIgTmJyLnByaW50IGEubnVtIE5ici5wcmludCBhLmRlbilcblxubGV0IG5lY2Vzc2FyaWx5X2VxdWFsIGFfb3B0IGJfb3B0ID1cbiAgbWF0Y2ggYV9vcHQsIGJfb3B0IHdpdGhcbiAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgYSwgU29tZSBiIC0+XG4gICAgT3B0aW9uX3V0aWwuZXF1YWwgQWxnX2V4cHIuZXF1YWwgYS52YXIgYi52YXJcbiAgICAmJiBOYnIuaXNfZXF1YWwgKE5ici5tdWx0IGEubnVtIGIuZGVuKSAoTmJyLm11bHQgYS5kZW4gYi5udW0pXG5cbmxldCBkZXAgZW1wdHkgYWRkX21peHR1cmUgYWRkX3Rva2VuIHVuaW9uIGRlcF9lbnYgP3RpbWVfdmFyIGV4cHIgPVxuICBsZXQgcmVjIGF1eCBhZGRfbWl4dHVyZSBhZGRfdG9rZW4gdW5pb24gZGVwX2VudiBleHByIGFjY3UgPVxuICAgIG1hdGNoIGZzdCBleHByIHdpdGhcbiAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKF8sIGUxLCBlMikgfCBBbGdfZXhwci5JRiAoXywgZTEsIGUyKSAtPlxuICAgICAgYXV4IGFkZF9taXh0dXJlIGFkZF90b2tlbiB1bmlvbiBkZXBfZW52IGUxXG4gICAgICAgIChhdXggYWRkX21peHR1cmUgYWRkX3Rva2VuIHVuaW9uIGRlcF9lbnYgZTIgYWNjdSlcbiAgICB8IEFsZ19leHByLlVOX0FMR19PUCAoXywgZSlcbiAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gKGUsIF8pXG4gICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIChlLCBfKSAtPlxuICAgICAgYXV4IGFkZF9taXh0dXJlIGFkZF90b2tlbiB1bmlvbiBkZXBfZW52IGUgYWNjdVxuICAgIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRJTUVfVkFSIC0+XG4gICAgICAobWF0Y2ggdGltZV92YXIgd2l0aFxuICAgICAgfCBTb21lIGlkIC0+IGFkZF9taXh0dXJlIGlkIGFjY3VcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgKCBcIkEgdmFyaWFibGUgZm9yIHRpbWUgc2hhbGwgYmUgcHJvdmlkZWQgdG8gYW5hbHlzZSB0aGUgXFxcbiAgICAgICAgICAgICAgICBkZXBlbmRlbmNlcyBpbiBhIHRpbWUtZGVwZW5kZW50IGV4cHJlc3Npb25cIixcbiAgICAgICAgICAgICAgIHNuZCBleHByICkpKVxuICAgIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QXG4gICAgICAgICggT3BlcmF0b3IuQ1BVVElNRSB8IE9wZXJhdG9yLkVWRU5UX1ZBUiB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSXG4gICAgICAgIHwgT3BlcmF0b3IuVE1BWF9WQVIgfCBPcGVyYXRvci5FTUFYX1ZBUiApIC0+XG4gICAgICBhY2N1XG4gICAgfCBBbGdfZXhwci5BTEdfVkFSIGlkIC0+IHVuaW9uIChkZXBfZW52IGlkKSBhY2N1XG4gICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBtaXggLT4gYWRkX21peHR1cmUgbWl4IGFjY3VcbiAgICB8IEFsZ19leHByLlRPS0VOX0lEIGlkIC0+IGFkZF90b2tlbiBpZCBhY2N1XG4gICAgfCBBbGdfZXhwci5DT05TVCBfIC0+IGFjY3VcbiAgaW5cbiAgYXV4IGFkZF9taXh0dXJlIGFkZF90b2tlbiB1bmlvbiBkZXBfZW52IGV4cHIgZW1wdHlcblxubGV0IHJlYyBkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZXhwciA9XG4gIG1hdGNoIGZzdCBleHByIHdpdGhcbiAgfCBBbGdfZXhwci5JRiAoYiwgZTEsIGUyKSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAoQWxnX2V4cHIuSUZcbiAgICAgICAgICggYixcbiAgICAgICAgICAgZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxLFxuICAgICAgICAgICBkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTIgKSlcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgZTEsIGUyKSAtPlxuICAgIChtYXRjaCBvcCB3aXRoXG4gICAgfCBPcGVyYXRvci5TVU0gLT5cbiAgICAgIEFsZ19leHByLmFkZFxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxKVxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUyKVxuICAgIHwgT3BlcmF0b3IuTVVMVCAtPlxuICAgICAgQWxnX2V4cHIuYWRkXG4gICAgICAgIChBbGdfZXhwci5tdWx0IGUxIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTIpKVxuICAgICAgICAoQWxnX2V4cHIubXVsdCBlMiAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxKSlcbiAgICB8IE9wZXJhdG9yLk1JTlVTIC0+XG4gICAgICBBbGdfZXhwci5taW51c1xuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxKVxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUyKVxuICAgIHwgT3BlcmF0b3IuTUlOIHwgT3BlcmF0b3IuTUFYIC0+IEFsZ19leHByLmludCAwXG4gICAgfCBPcGVyYXRvci5NT0RVTE8gLT4gZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxXG4gICAgfCBPcGVyYXRvci5ESVYgLT5cbiAgICAgIEFsZ19leHByLmRpdlxuICAgICAgICAoQWxnX2V4cHIubWludXNcbiAgICAgICAgICAgKEFsZ19leHByLm11bHQgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMSkgZTIpXG4gICAgICAgICAgIChBbGdfZXhwci5tdWx0IChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTIpIGUxKSlcbiAgICAgICAgKEFsZ19leHByLnBvdyBlMiAoQWxnX2V4cHIuaW50IDIpKVxuICAgIHwgT3BlcmF0b3IuUE9XIC0+XG4gICAgICAoKiAodV52KSoodicqbG4odSkrdip1Jy91KSAqKVxuICAgICAgQWxnX2V4cHIubXVsdCAoQWxnX2V4cHIucG93IGUxIGUyKVxuICAgICAgICAoQWxnX2V4cHIuYWRkXG4gICAgICAgICAgIChBbGdfZXhwci5tdWx0XG4gICAgICAgICAgICAgIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTIpXG4gICAgICAgICAgICAgIChBbGdfZXhwci5sbiBlMSkpXG4gICAgICAgICAgIChBbGdfZXhwci5kaXZcbiAgICAgICAgICAgICAgKEFsZ19leHByLm11bHQgZTIgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMSkpXG4gICAgICAgICAgICAgIGUxKSkpXG4gIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgZSkgLT5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuVU1JTlVTIC0+XG4gICAgICBBbGdfZXhwci51bWludXMgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlKVxuICAgIHwgT3BlcmF0b3IuQ09TSU5VUyAtPlxuICAgICAgQWxnX2V4cHIubXVsdFxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUpXG4gICAgICAgIChBbGdfZXhwci51bWludXMgKEFsZ19leHByLnNpbiBlKSlcbiAgICB8IE9wZXJhdG9yLlNJTlVTIC0+XG4gICAgICBBbGdfZXhwci5tdWx0IChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSkgKEFsZ19leHByLmNvcyBlKVxuICAgIHwgT3BlcmF0b3IuTE9HIC0+XG4gICAgICBBbGdfZXhwci5tdWx0XG4gICAgICAgIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSlcbiAgICAgICAgKEFsZ19leHByLmRpdiAoQWxnX2V4cHIuaW50IDEpIGUpXG4gICAgfCBPcGVyYXRvci5TUVJUIC0+XG4gICAgICBBbGdfZXhwci5tdWx0XG4gICAgICAgIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSlcbiAgICAgICAgKEFsZ19leHByLmRpdiAoQWxnX2V4cHIuaW50ICgtMSkpIChBbGdfZXhwci5zcXJ0IGUpKVxuICAgIHwgT3BlcmF0b3IuRVhQIC0+IEFsZ19leHByLm11bHQgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlKSBlXG4gICAgfCBPcGVyYXRvci5UQU4gLT5cbiAgICAgIEFsZ19leHByLm11bHRcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlKVxuICAgICAgICAoQWxnX2V4cHIuYWRkIChBbGdfZXhwci5pbnQgMSkgKEFsZ19leHByLnBvdyBlIChBbGdfZXhwci5pbnQgMikpKVxuICAgIHwgT3BlcmF0b3IuSU5UIC0+IEFsZ19leHByLmludCAwKVxuICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBPcGVyYXRvci5USU1FX1ZBUiAtPiBmX3RpbWUgKClcbiAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1BcbiAgICAgICggT3BlcmF0b3IuQ1BVVElNRSB8IE9wZXJhdG9yLkVWRU5UX1ZBUiB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSXG4gICAgICB8IE9wZXJhdG9yLlRNQVhfVkFSIHwgT3BlcmF0b3IuRU1BWF9WQVIgKSAtPlxuICAgIEFsZ19leHByLmludCAwXG4gIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgbWl4IC0+IGZfbWl4IG1peFxuICB8IEFsZ19leHByLlRPS0VOX0lEIGlkIC0+IGZfdG9rZW4gaWRcbiAgfCBBbGdfZXhwci5DT05TVCBfIC0+IEFsZ19leHByLmludCAwXG4gIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfXG4gICAgLT5cbiAgICBmX3N5bWIgZXhwclxuXG5sZXQgZGlmZl90b2tlbiBleHByIHRva2VuID1cbiAgbGV0IGZfbWl4IF8gPSBBbGdfZXhwci5pbnQgMCBpblxuICBsZXQgZl90b2tlbiBhID1cbiAgICBpZiBhID0gdG9rZW4gdGhlblxuICAgICAgQWxnX2V4cHIuaW50IDFcbiAgICBlbHNlXG4gICAgICBBbGdfZXhwci5pbnQgMFxuICBpblxuICBsZXQgZl9zeW1iIGV4cHIgPSBBbGdfZXhwci5ESUZGX1RPS0VOIChleHByLCB0b2tlbiksIExvYy5kdW1teSBpblxuICBsZXQgZl90aW1lIF8gPSBBbGdfZXhwci5pbnQgMCBpblxuICBkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZXhwclxuXG5sZXQgZGlmZl9taXh0dXJlID90aW1lX3ZhciBleHByIG1peHR1cmUgPVxuICBsZXQgZl9taXggYSA9XG4gICAgaWYgYSA9IG1peHR1cmUgdGhlblxuICAgICAgQWxnX2V4cHIuaW50IDFcbiAgICBlbHNlXG4gICAgICBBbGdfZXhwci5pbnQgMFxuICBpblxuICBsZXQgZl90b2tlbiBfID0gQWxnX2V4cHIuaW50IDAgaW5cbiAgbGV0IGZfc3ltYiBleHByID0gQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgbWl4dHVyZSksIExvYy5kdW1teSBpblxuICBsZXQgZl90aW1lICgpID1cbiAgICBtYXRjaCB0aW1lX3ZhciB3aXRoXG4gICAgfCBTb21lIGIgd2hlbiBtaXh0dXJlID0gYiAtPiBBbGdfZXhwci5pbnQgMVxuICAgIHwgU29tZSBfIC0+IEFsZ19leHByLmludCAwXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoIFwiQSB0aW1lLWRlcGVuZGVudCBleHByZXNzaW9uIGNhbm5vdCBiZSBkaWZmZXJlbnRpYXRlZCB3aXRob3V0IFxcXG4gICAgICAgICAgICAgIHNwZWNpZnlpbmcgYSB2YXJpYWJsZSBmb3IgdGltZSBwcm9ncmVzc1wiLFxuICAgICAgICAgICAgIExvYy5kdW1teSApKVxuICBpblxuICBkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZXhwclxuXG5sZXQgZm9sZF9vdmVyX21peF9pbl9saXN0IGYgbWl4IGFjY3UgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjdSBhcnJheV9pZCAtPlxuICAgICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gYWNjdSBwaWQgLT4gZiBwaWQgYWNjdSkgYWNjdSBhcnJheV9pZClcbiAgICBhY2N1IG1peFxuXG5sZXQgZm9sZF9vdmVyX21peF9pbl9hbGdfZXhwciBmIGV4cHIgYWNjdSA9XG4gIGxldCBsID0gQWxnX2V4cHIuZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50cyBleHByIGluXG4gIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjdSBtaXggLT4gZm9sZF9vdmVyX21peF9pbl9saXN0IGYgbWl4IGFjY3UpIGFjY3UgbFxuXG5sZXQgZm9sZF9vdmVyX21peHR1cmVzX2luX2FsZ19leHBycyBmIG1vZGVsIGFjY3UgPVxuICBsZXQgYWxnc19leHByID0gTW9kZWwuZ2V0X2FsZ3MgbW9kZWwgaW5cbiAgbGV0IG9ic2VydmFibGVzID0gTW9kZWwuZ2V0X29icyBtb2RlbCBpblxuICAoKmFsZ3MqKVxuICBsZXQgYWNjdSA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjY3UgKF8sIG1peCkgLT4gZm9sZF9vdmVyX21peF9pbl9hbGdfZXhwciBmIG1peCBhY2N1KVxuICAgICAgYWNjdSBhbGdzX2V4cHJcbiAgaW5cbiAgKCpvYnNlcnZhdGlvbnMqKVxuICBsZXQgYWNjdSA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjY3UgbWl4IC0+IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiBtaXggYWNjdSlcbiAgICAgIGFjY3Ugb2JzZXJ2YWJsZXNcbiAgaW5cbiAgKCpydWxlcyopXG4gIGxldCBydWxlcyA9IE1vZGVsLmdldF9ydWxlcyBtb2RlbCBpblxuICAoKnJhdGUqKVxuICBsZXQgYWNjdSA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjY3UgZWxlbWVudGFyeV9ydWxlIC0+XG4gICAgICAgIGxldCByYXRlID0gZWxlbWVudGFyeV9ydWxlLlByaW1pdGl2ZXMucmF0ZSBpblxuICAgICAgICBsZXQgYWNjdSA9IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiByYXRlIGFjY3UgaW5cbiAgICAgICAgKCp1bmFyeV9yYXRlKilcbiAgICAgICAgbGV0IHVuYXJ5X3JhdGUgPSBlbGVtZW50YXJ5X3J1bGUuUHJpbWl0aXZlcy51bmFyeV9yYXRlIGluXG4gICAgICAgIGxldCBhY2N1ID1cbiAgICAgICAgICBtYXRjaCB1bmFyeV9yYXRlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYWNjdVxuICAgICAgICAgIHwgU29tZSAoZXhwciwgXykgLT4gZm9sZF9vdmVyX21peF9pbl9hbGdfZXhwciBmIGV4cHIgYWNjdVxuICAgICAgICBpblxuICAgICAgICAoKmRlbHRhIHRva2VucyopXG4gICAgICAgIGxldCBkZWx0YV90b2tlbnMgPSBlbGVtZW50YXJ5X3J1bGUuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnMgaW5cbiAgICAgICAgbGV0IGFjY3UgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGFjY3UgKGV4cHIsIF8pIC0+IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiBleHByIGFjY3UpXG4gICAgICAgICAgICBhY2N1IGRlbHRhX3Rva2Vuc1xuICAgICAgICBpblxuICAgICAgICBhY2N1KVxuICAgICAgYWNjdSBydWxlc1xuICBpblxuICBhY2N1XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgU2ltdWxhdGlvbl9pbmZvID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IHtcbiAgICBzdG9yeV9pZDogaW50O1xuICAgIHN0b3J5X3RpbWU6IGZsb2F0O1xuICAgIHN0b3J5X2V2ZW50OiBpbnQ7XG4gICAgcHJvZmlsaW5nX2luZm86ICdhO1xuICB9XG4gICgqIHR5cGUgb2YgZGF0YSB0byBiZSBnaXZlbiB3aXRoIG9ic2VydmFibGVzIGZvciBzdG9yeSBjb21wcmVzc2lvblxuICAgICAoc3VjaCBhcyBkYXRlIHdoZW4gdGhlIG9icyBpcyB0cmlnZ2VyZWQqKVxuXG4gIGxldCB1cGRhdGVfcHJvZmlsaW5nX2luZm8gYSBpbmZvID1cbiAgICB7XG4gICAgICBzdG9yeV9pZCA9IGluZm8uc3RvcnlfaWQ7XG4gICAgICBzdG9yeV90aW1lID0gaW5mby5zdG9yeV90aW1lO1xuICAgICAgc3RvcnlfZXZlbnQgPSBpbmZvLnN0b3J5X2V2ZW50O1xuICAgICAgcHJvZmlsaW5nX2luZm8gPSBhO1xuICAgIH1cblxuICBsZXQgZXZlbnQgYSA9IGEuc3RvcnlfZXZlbnRcbiAgbGV0IHN0b3J5X2lkIGEgPSBhLnN0b3J5X2lkXG4gIGxldCBjb21wYXJlX2J5X3N0b3J5X2lkIHggeSA9IE1vZHMuaW50X2NvbXBhcmUgeC5zdG9yeV9pZCB5LnN0b3J5X2lkXG5cbiAgbGV0IGR1bW15IGEgPVxuICAgIHsgc3RvcnlfaWQgPSAwOyBzdG9yeV90aW1lID0gMC47IHN0b3J5X2V2ZW50ID0gMDsgcHJvZmlsaW5nX2luZm8gPSBhIH1cblxuICBsZXQganNvbl9kaWN0aW9ubmFyeSA9XG4gICAgXCJcXFwic2ltdWxhdGlvbl9pbmZvXFxcIjp7XFxcImlkXFxcIjowLFxcXCJ0aW1lXFxcIjoxLFxcXCJldmVudFxcXCI6MixcXFwicHJvZmlsaW5nXFxcIjozfVwiXG5cbiAgbGV0IHRvX2pzb24gZiB4ID1cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgSW50IHguc3RvcnlfaWQ7XG4gICAgICAgIGBGbG9hdCB4LnN0b3J5X3RpbWU7XG4gICAgICAgIGBJbnQgeC5zdG9yeV9ldmVudDtcbiAgICAgICAgZiB4LnByb2ZpbGluZ19pbmZvO1xuICAgICAgXVxuXG4gIGxldCBvZl9qc29uIGYgPSBmdW5jdGlvblxuICAgIHwgYExpc3QgWyBgSW50IHN0b3J5X2lkOyBgRmxvYXQgc3RvcnlfdGltZTsgYEludCBzdG9yeV9ldmVudDsgaW5mbyBdIC0+XG4gICAgICB7IHN0b3J5X2lkOyBzdG9yeV90aW1lOyBzdG9yeV9ldmVudDsgcHJvZmlsaW5nX2luZm8gPSBmIGluZm8gfVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBzaW11bGF0aW9uX2luZm9cIiwgeCkpXG5cbiAgbGV0IHdyaXRlX2pzb24gZiBvYiB4ID1cbiAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIHguc3RvcnlfaWQpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2Zsb2F0IG8geC5zdG9yeV90aW1lKTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyB4LnN0b3J5X2V2ZW50KTtcbiAgICAgICAgKGZ1biBvIC0+IGYgbyB4LnByb2ZpbGluZ19pbmZvKTtcbiAgICAgIF1cblxuICBsZXQgcmVhZF9qc29uIGYgc3QgYiA9XG4gICAgSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgICAgKGZ1biBzdCBiIHN0b3J5X2lkIC0+XG4gICAgICAgIGxldCBzdG9yeV90aW1lID1cbiAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9udW1iZXIgc3QgYlxuICAgICAgICBpblxuICAgICAgICBsZXQgc3RvcnlfZXZlbnQgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYiBpblxuICAgICAgICBsZXQgcHJvZmlsaW5nX2luZm8gPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBmIHN0IGIgaW5cbiAgICAgICAgeyBzdG9yeV9pZDsgc3RvcnlfdGltZTsgc3RvcnlfZXZlbnQ7IHByb2ZpbGluZ19pbmZvIH0pXG4gICAgICBzdCBiXG5lbmRcblxudHlwZSBldmVudF9raW5kID1cbiAgfCBSVUxFIG9mIGludFxuICB8IElOSVQgb2YgaW50IGxpc3QgKCogdGhlIGFnZW50cyAqKVxuICB8IFBFUlQgb2Ygc3RyaW5nICgqIHRoZSBydWxlICopXG5cbmxldCBwcmludF9ldmVudF9raW5kID9lbnYgZiB4ID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgKG1hdGNoIHggd2l0aFxuICAgIHwgUlVMRSBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJSVUxFKCVpKVwiIGlcbiAgICB8IElOSVQgbCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIklOSVQoJWEpXCIgKFBwLmxpc3QgUHAuY29tbWEgRm9ybWF0LnBwX3ByaW50X2ludCkgbFxuICAgIHwgUEVSVCBzIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJQRVJUKCVzKVwiIHMpXG4gIHwgU29tZSBlbnYgLT5cbiAgICAobWF0Y2ggeCB3aXRoXG4gICAgfCBQRVJUIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHNcbiAgICB8IFJVTEUgcl9pZCAtPiBNb2RlbC5wcmludF9ydWxlIH5ub0NvdW50ZXJzOmZhbHNlIH5lbnYgZiByX2lkXG4gICAgfCBJTklUIHMgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJbnRybyBAWzxoPiVhQF1cIlxuICAgICAgICAoUHAubGlzdCBQcC5jb21tYSAoTW9kZWwucHJpbnRfYWdlbnQgfmVudikpXG4gICAgICAgIHMpXG5cbmxldCBwcmludF9ldmVudF9raW5kX2RvdF9hbm5vdCBlbnYgZiA9IGZ1bmN0aW9uXG4gIHwgUlVMRSByX2lkIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIltsYWJlbD1cXFwiJWFcXFwiLCBzaGFwZT0lcywgc3R5bGU9JXMsIGZpbGxjb2xvciA9ICVzXVwiXG4gICAgICAoTW9kZWwucHJpbnRfcnVsZSB+bm9Db3VudGVyczpmYWxzZSB+ZW52KVxuICAgICAgcl9pZCBcImludmhvdXNlXCIgXCJmaWxsZWRcIiBcImxpZ2h0Ymx1ZVwiXG4gIHwgSU5JVCBzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCJbbGFiZWw9XFxcIkludHJvIEBbPGg+JWFAXVxcXCIsIHNoYXBlPSVzLCBzdHlsZT0lcywgZmlsbGNvbG9yPWdyZWVuXVwiXG4gICAgICAoUHAubGlzdCBQcC5jb21tYSAoTW9kZWwucHJpbnRfYWdlbnQgfmVudikpXG4gICAgICBzIFwiaG91c2VcIiBcImZpbGxlZFwiXG4gIHwgUEVSVCBzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIltsYWJlbD1cXFwiJXNcXFwiLCBzaGFwZT0lcywgc3R5bGU9JXMsIGZpbGxjb2xvciA9ICVzXVwiIHNcbiAgICAgIFwiaW52aG91c2VcIiBcImZpbGxlZFwiIFwiZ3JlZW5cIlxuXG50eXBlIHN0ZXAgPVxuICB8IFN1YnMgb2YgaW50ICogaW50XG4gIHwgUnVsZSBvZlxuICAgICAgaW50ICogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmV2ZW50ICogdW5pdCBTaW11bGF0aW9uX2luZm8udFxuICB8IFBlcnQgb2ZcbiAgICAgIHN0cmluZ1xuICAgICAgKiBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uZXZlbnRcbiAgICAgICogdW5pdCBTaW11bGF0aW9uX2luZm8udFxuICB8IEluaXQgb2YgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmFjdGlvbiBsaXN0XG4gIHwgT2JzIG9mXG4gICAgICBzdHJpbmdcbiAgICAgICogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCBsaXN0XG4gICAgICAqIHVuaXQgU2ltdWxhdGlvbl9pbmZvLnRcbiAgfCBEdW1teSBvZiBzdHJpbmdcblxudHlwZSB0ID0gc3RlcCBsaXN0XG5cbmxldCBzdWJzX3N0ZXAgYSBiID0gU3VicyAoYSwgYilcbmxldCBkdW1teV9zdGVwIHggPSBEdW1teSB4XG5sZXQgcHJpbnRfc3VicyBfZiAoX2EsIF9iKSA9ICgpXG5cbmxldCBwcmludF9zaXRlID9lbnYgZiAoKGFnX2lkLCBhZyksIHMpID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhXyVpLiVhXCIgKE1vZGVsLnByaW50X2FnZW50ID9lbnYpIGFnIGFnX2lkXG4gICAgKG1hdGNoIGVudiB3aXRoXG4gICAgfCBTb21lIGVudiAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZSAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpIGFnXG4gICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQpXG4gICAgc1xuXG5sZXQgcHJpbnRfaW5pdCB+Y29tcGFjdCA/ZW52IGxvZyBhY3Rpb25zID1cbiAgbGV0IHNpZ3MgPVxuICAgIG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgZW52IC0+IFNvbWUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KVxuICBpblxuICBpZiBjb21wYWN0IHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBsb2cgXCJJTklUXCJcbiAgZWxzZVxuICAgIEZvcm1hdC5mcHJpbnRmIGxvZyBcIioqKkBbPDE+SU5JVDolYUBdKioqXCJcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2FjdGlvbiA/c2lncykpXG4gICAgICBhY3Rpb25zXG5cbmxldCBwcmludF9zaWRlX2VmZmVjdHMgP2VudiA9XG4gIFBwLmxpc3RcbiAgICAoZnVuIGYgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIFwiKVxuICAgIChmdW4gZiAoc2l0ZSwgc3RhdGUpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiU2lkZV9lZmZlY3RzKCVhLCVhKVwiIChwcmludF9zaXRlID9lbnYpIHNpdGVcbiAgICAgICAgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfYmluZGluZ19zdGF0ZVxuICAgICAgICAgICA/c2lnczooT3B0aW9uX3V0aWwubWFwIE1vZGVsLnNpZ25hdHVyZXMgZW52KSlcbiAgICAgICAgc3RhdGUpXG5cbmxldCBwcmludF9ldmVudCB+Y29tcGFjdCA/ZW52IGxvZyAoZXZfa2luZCwgZSkgPVxuICBsZXQgc2lncyA9XG4gICAgbWF0Y2ggZW52IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBlbnYgLT4gU29tZSAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpXG4gIGluXG4gIGlmIGNvbXBhY3QgdGhlblxuICAgIHByaW50X2V2ZW50X2tpbmQgP2VudiBsb2cgZXZfa2luZFxuICBlbHNlXG4gICAgRm9ybWF0LmZwcmludGYgbG9nXG4gICAgICBcIkBbKioqUmVmaW5lZCBldmVudDoqKipALCogS2FwcGFfcnVsZSAlYSBTdG9yeSBlbmNvZGluZzolYSVhJWFAXVwiXG4gICAgICAocHJpbnRfZXZlbnRfa2luZCA/ZW52KSBldl9raW5kXG4gICAgICAoUHAubGlzdCBQcC5lbXB0eVxuICAgICAgICAgKFBwLmxpc3QgUHAuZW1wdHkgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfdGVzdCA/c2lncykpKVxuICAgICAgKGUuSW5zdGFudGlhdGlvbi50ZXN0cyBAIFsgZS5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyBdKVxuICAgICAgKFBwLmxpc3QgUHAuZW1wdHkgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfYWN0aW9uID9zaWdzKSlcbiAgICAgIGUuSW5zdGFudGlhdGlvbi5hY3Rpb25zIChwcmludF9zaWRlX2VmZmVjdHMgP2VudilcbiAgICAgIGUuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjXG5cbmxldCBwcmludF9vYnMgfmNvbXBhY3QgP2VudiBmIChldl9raW5kLCB0ZXN0cywgXykgPVxuICBsZXQgc2lncyA9XG4gICAgbWF0Y2ggZW52IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBlbnYgLT4gU29tZSAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpXG4gIGluXG4gIGlmIGNvbXBhY3QgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJPQlMgJXNcIiBldl9raW5kXG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiKioqQFs8MT5PQlMgJXM6JWFAXSoqKlwiIGV2X2tpbmRcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlXG4gICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSAoSW5zdGFudGlhdGlvbi5wcmludF9jb25jcmV0ZV90ZXN0ID9zaWdzKSkpXG4gICAgICB0ZXN0c1xuXG5sZXQgcHJpbnRfc3RlcCA/KGNvbXBhY3QgPSBmYWxzZSkgP2VudiBmID0gZnVuY3Rpb25cbiAgfCBTdWJzIChhLCBiKSAtPiBwcmludF9zdWJzIGYgKGEsIGIpXG4gIHwgUnVsZSAoeCwgeSwgX3opIC0+IHByaW50X2V2ZW50IH5jb21wYWN0ID9lbnYgZiAoUlVMRSB4LCB5KVxuICB8IFBlcnQgKHgsIHksIF96KSAtPiBwcmludF9ldmVudCB+Y29tcGFjdCA/ZW52IGYgKFBFUlQgeCwgeSlcbiAgfCBJbml0IGEgLT4gcHJpbnRfaW5pdCB+Y29tcGFjdCA/ZW52IGYgYVxuICB8IE9icyAoYSwgYiwgYykgLT4gcHJpbnRfb2JzIH5jb21wYWN0ID9lbnYgZiAoYSwgYiwgYylcbiAgfCBEdW1teSBfIC0+ICgpXG5cbmxldCBnZXRfdHlwZXNfZnJvbV9pbml0IGEgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIGFjdGlvbiAtPlxuICAgICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKChfLCBhdHlwZSksIF8pIC0+IGF0eXBlIDo6IGFjY1xuICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5CaW5kIF9cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF8gfCBJbnN0YW50aWF0aW9uLkZyZWUgXyB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF9cbiAgICAgICAgLT5cbiAgICAgICAgYWNjKVxuICAgIFtdIGFcblxubGV0IHByaW50X2xhYmVsX29mX3N0ZXAgP2VudiBmIHggPVxuICBtYXRjaCBlbnYgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAobWF0Y2ggeCB3aXRoXG4gICAgfCBTdWJzIF8gLT4gKClcbiAgICB8IFJ1bGUgKHgsIF8sIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaVwiIHhcbiAgICB8IFBlcnQgKHgsIF8sIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIHhcbiAgICB8IEluaXQgYSAtPlxuICAgICAgbGV0IGwgPSBnZXRfdHlwZXNfZnJvbV9pbml0IGEgaW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJTklUKCVhKVwiIChQcC5saXN0IFBwLmNvbW1hIEZvcm1hdC5wcF9wcmludF9pbnQpIGxcbiAgICB8IE9icyAoeCwgXywgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgeFxuICAgIHwgRHVtbXkgXyAtPiAoKSlcbiAgfCBTb21lIGVudiAtPlxuICAgIChtYXRjaCB4IHdpdGhcbiAgICB8IFN1YnMgXyAtPiAoKVxuICAgIHwgUnVsZSAoeCwgXywgXykgLT4gTW9kZWwucHJpbnRfcnVsZSB+bm9Db3VudGVyczpmYWxzZSB+ZW52IGYgeFxuICAgIHwgUGVydCAoeCwgXywgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHhcbiAgICB8IEluaXQgYSAtPlxuICAgICAgbGV0IGwgPSBnZXRfdHlwZXNfZnJvbV9pbml0IGEgaW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJbnRybyBAWzxoPiVhQF1cIlxuICAgICAgICAoUHAubGlzdCBQcC5jb21tYSAoTW9kZWwucHJpbnRfYWdlbnQgfmVudikpXG4gICAgICAgIGxcbiAgICB8IE9icyAoeCwgXywgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHhcbiAgICB8IER1bW15IF8gLT4gKCkpXG5cbmxldCBqc29uX2RpY3Rpb25uYXJ5ID1cbiAgXCJcXFwic3RlcFxcXCI6W1xcXCJTdWJzXFxcIixcXFwiUnVsZVxcXCIsXFxcIlBlcnRcXFwiLFxcXCJJbml0XFxcIixcXFwiT2JzXFxcIixcXFwiRHVtbXlcXFwiXVwiXG5cbmxldCB3cml0ZV9zdGVwIG9iIHMgPVxuICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgIChtYXRjaCBzIHdpdGhcbiAgICB8IFN1YnMgKGEsIGIpIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMCk7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gYSk7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gYik7XG4gICAgICBdXG4gICAgfCBSdWxlICh4LCB5LCB6KSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDEpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIHgpO1xuICAgICAgICAoZnVuIG8gLT4gSW5zdGFudGlhdGlvbi53cml0ZV9ldmVudCBBZ2VudC53cml0ZV9qc29uIG8geSk7XG4gICAgICAgIChmdW4gbyAtPiBTaW11bGF0aW9uX2luZm8ud3JpdGVfanNvbiBZb2pzb24uQmFzaWMud3JpdGVfbnVsbCBvIHopO1xuICAgICAgXVxuICAgIHwgUGVydCAoeCwgeSwgeikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAyKTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgbyB4KTtcbiAgICAgICAgKGZ1biBvIC0+IEluc3RhbnRpYXRpb24ud3JpdGVfZXZlbnQgQWdlbnQud3JpdGVfanNvbiBvIHkpO1xuICAgICAgICAoZnVuIG8gLT4gU2ltdWxhdGlvbl9pbmZvLndyaXRlX2pzb24gWW9qc29uLkJhc2ljLndyaXRlX251bGwgbyB6KTtcbiAgICAgIF1cbiAgICB8IEluaXQgYSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDMpO1xuICAgICAgICAoZnVuIG8gLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0IChJbnN0YW50aWF0aW9uLndyaXRlX2FjdGlvbiBBZ2VudC53cml0ZV9qc29uKSBvIGEpO1xuICAgICAgXVxuICAgIHwgT2JzICh4LCB5LCB6KSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDQpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvIHgpO1xuICAgICAgICAoZnVuIG8gLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfbGlzdCAoSW5zdGFudGlhdGlvbi53cml0ZV90ZXN0IEFnZW50LndyaXRlX2pzb24pKVxuICAgICAgICAgICAgbyB5KTtcbiAgICAgICAgKGZ1biBvIC0+IFNpbXVsYXRpb25faW5mby53cml0ZV9qc29uIFlvanNvbi5CYXNpYy53cml0ZV9udWxsIG8geik7XG4gICAgICBdXG4gICAgfCBEdW1teSBfIC0+IFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyA1KSBdKVxuXG5sZXQgcmVhZF9zdGVwIHN0IGIgPVxuICBKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgKGZ1biBzdCBiIC0+IGZ1bmN0aW9uXG4gICAgICB8IDAgLT5cbiAgICAgICAgbGV0IGEgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYiBpblxuICAgICAgICBsZXQgYiA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2ludCBzdCBiIGluXG4gICAgICAgIFN1YnMgKGEsIGIpXG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IHggPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYiBpblxuICAgICAgICBsZXQgeSA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnJlYWRfZXZlbnQgQWdlbnQucmVhZF9qc29uKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBsZXQgeiA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChTaW11bGF0aW9uX2luZm8ucmVhZF9qc29uIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG4gICAgICAgICAgICBzdCBiXG4gICAgICAgIGluXG4gICAgICAgIFJ1bGUgKHgsIHksIHopXG4gICAgICB8IDIgLT5cbiAgICAgICAgbGV0IHggPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYiBpblxuICAgICAgICBsZXQgeSA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnJlYWRfZXZlbnQgQWdlbnQucmVhZF9qc29uKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBsZXQgeiA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChTaW11bGF0aW9uX2luZm8ucmVhZF9qc29uIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG4gICAgICAgICAgICBzdCBiXG4gICAgICAgIGluXG4gICAgICAgIFBlcnQgKHgsIHksIHopXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGwgPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdF9yZXZcbiAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnJlYWRfYWN0aW9uIEFnZW50LnJlYWRfanNvbikpXG4gICAgICAgICAgICBzdCBiXG4gICAgICAgIGluXG4gICAgICAgIEluaXQgKExpc3QucmV2IGwpXG4gICAgICB8IDQgLT5cbiAgICAgICAgbGV0IHggPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYiBpblxuICAgICAgICBsZXQgeSA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0XG4gICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdFxuICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24ucmVhZF90ZXN0IEFnZW50LnJlYWRfanNvbikpKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBsZXQgeiA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChTaW11bGF0aW9uX2luZm8ucmVhZF9qc29uIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG4gICAgICAgICAgICBzdCBiXG4gICAgICAgIGluXG4gICAgICAgIE9icyAoeCwgeSwgeilcbiAgICAgIHwgNSAtPiBEdW1teSBcIlwiXG4gICAgICB8IF8gLT4gcmFpc2UgKFlvanNvbi5qc29uX2Vycm9yIFwiSW52YWxpZCBzdGVwXCIpXG4gICAgICAoKnN0IGIqKSlcbiAgICBzdCBiXG5cbmxldCBzdGVwX3RvX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgU3VicyAoYSwgYikgLT4gYExpc3QgWyBgSW50IDA7IGBJbnQgYTsgYEludCBiIF1cbiAgfCBSdWxlICh4LCB5LCB6KSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBJbnQgMTtcbiAgICAgICAgYEludCB4O1xuICAgICAgICBJbnN0YW50aWF0aW9uLmV2ZW50X3RvX2pzb24gQWdlbnQudG9fanNvbiB5O1xuICAgICAgICBTaW11bGF0aW9uX2luZm8udG9fanNvbiAoZnVuICgpIC0+IGBOdWxsKSB6O1xuICAgICAgXVxuICB8IFBlcnQgKHgsIHksIHopIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYEludCAyO1xuICAgICAgICBgU3RyaW5nIHg7XG4gICAgICAgIEluc3RhbnRpYXRpb24uZXZlbnRfdG9fanNvbiBBZ2VudC50b19qc29uIHk7XG4gICAgICAgIFNpbXVsYXRpb25faW5mby50b19qc29uIChmdW4gKCkgLT4gYE51bGwpIHo7XG4gICAgICBdXG4gIHwgSW5pdCBhIC0+XG4gICAgbGV0IHJldl9hY3Rpb25zID1cbiAgICAgIExpc3QucmV2X21hcCAoSW5zdGFudGlhdGlvbi5hY3Rpb25fdG9fanNvbiBBZ2VudC50b19qc29uKSBhXG4gICAgaW5cbiAgICBgTGlzdCBbIGBJbnQgMzsgYExpc3QgKExpc3QucmV2IHJldl9hY3Rpb25zKSBdXG4gIHwgT2JzICh4LCB5LCB6KSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBJbnQgNDtcbiAgICAgICAgYFN0cmluZyB4O1xuICAgICAgICBgTGlzdFxuICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgIChmdW4geiAtPlxuICAgICAgICAgICAgICAgYExpc3QgKExpc3QubWFwIChJbnN0YW50aWF0aW9uLnRlc3RfdG9fanNvbiBBZ2VudC50b19qc29uKSB6KSlcbiAgICAgICAgICAgICB5KTtcbiAgICAgICAgU2ltdWxhdGlvbl9pbmZvLnRvX2pzb24gKGZ1biAoKSAtPiBgTnVsbCkgejtcbiAgICAgIF1cbiAgfCBEdW1teSBfIC0+IGBMaXN0IFsgYEludCA1IF1cblxubGV0IHdyaXRlX2pzb24gPSBKc29uVXRpbC53cml0ZV9saXN0IHdyaXRlX3N0ZXBcbmxldCByZWFkX2pzb24gc3QgYiA9IExpc3QucmV2IChZb2pzb24uQmFzaWMucmVhZF9saXN0X3JldiByZWFkX3N0ZXAgc3QgYilcblxubGV0IHN0cmluZ19vZl9zdGVwID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3N0ZXAgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCBzdGVwX29mX3N0cmluZyBzID1cbiAgcmVhZF9zdGVwIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbmxldCBzdGVwX2lzX29icyA9IGZ1bmN0aW9uXG4gIHwgT2JzIF8gLT4gdHJ1ZVxuICB8IFJ1bGUgXyB8IFBlcnQgXyB8IFN1YnMgXyB8IER1bW15IF8gfCBJbml0IF8gLT4gZmFsc2VcblxubGV0IHN0ZXBfaXNfaW5pdCA9IGZ1bmN0aW9uXG4gIHwgSW5pdCBfIC0+IHRydWVcbiAgfCBSdWxlIF8gfCBQZXJ0IF8gfCBTdWJzIF8gfCBEdW1teSBfIHwgT2JzIF8gLT4gZmFsc2VcblxubGV0IHN0ZXBfaXNfc3VicyA9IGZ1bmN0aW9uXG4gIHwgU3VicyBfIC0+IHRydWVcbiAgfCBSdWxlIF8gfCBQZXJ0IF8gfCBJbml0IF8gfCBEdW1teSBfIHwgT2JzIF8gLT4gZmFsc2VcblxubGV0IHN0ZXBfaXNfcnVsZSA9IGZ1bmN0aW9uXG4gIHwgUnVsZSBfIC0+IHRydWVcbiAgfCBQZXJ0IF8gfCBJbml0IF8gfCBTdWJzIF8gfCBEdW1teSBfIHwgT2JzIF8gLT4gZmFsc2VcblxubGV0IHN0ZXBfaXNfcGVydCA9IGZ1bmN0aW9uXG4gIHwgUGVydCBfIC0+IHRydWVcbiAgfCBSdWxlIF8gfCBJbml0IF8gfCBTdWJzIF8gfCBEdW1teSBfIHwgT2JzIF8gLT4gZmFsc2VcblxubGV0IHNpbXVsYXRpb25faW5mb19vZl9zdGVwID0gZnVuY3Rpb25cbiAgfCBPYnMgKF8sIF8sIGluZm8pIHwgUnVsZSAoXywgXywgaW5mbykgfCBQZXJ0IChfLCBfLCBpbmZvKSAtPiBTb21lIGluZm9cbiAgfCBJbml0IF8gLT4gU29tZSAoU2ltdWxhdGlvbl9pbmZvLmR1bW15ICgpKVxuICB8IFN1YnMgXyB8IER1bW15IF8gLT4gTm9uZVxuXG5sZXQgY3JlYXRpb25fb2ZfYWN0aW9ucyBvcCBhY3Rpb25zID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGwgLT4gZnVuY3Rpb25cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKHgsIF8pIC0+IG9wIHggOjogbFxuICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5CaW5kIF9cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF8gfCBJbnN0YW50aWF0aW9uLkZyZWUgXyB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF9cbiAgICAgICAgLT5cbiAgICAgICAgbClcbiAgICBbXSBhY3Rpb25zXG5cbmxldCBjcmVhdGlvbl9vZl9zdGVwID0gZnVuY3Rpb25cbiAgfCBSdWxlIChfLCB7IEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGFjOyBfIH0sIF8pXG4gIHwgUGVydCAoXywgeyBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBhYzsgXyB9LCBfKVxuICB8IEluaXQgYWMgLT5cbiAgICBjcmVhdGlvbl9vZl9hY3Rpb25zIGZzdCBhY1xuICB8IE9icyBfIHwgRHVtbXkgXyB8IFN1YnMgXyAtPiBbXVxuXG5sZXQgaGFzX2NyZWF0aW9uX29mX3N0ZXAgeCA9IGNyZWF0aW9uX29mX3N0ZXAgeCA8PiBbXVxuXG5sZXQgdGVzdHNfb2Zfc3RlcCA9IGZ1bmN0aW9uXG4gIHwgU3VicyBfIC0+IFtdXG4gIHwgUnVsZSAoXywgZSwgXykgfCBQZXJ0IChfLCBlLCBfKSAtPlxuICAgIExpc3QuZm9sZF9yaWdodCBMaXN0LmFwcGVuZCBlLkluc3RhbnRpYXRpb24udGVzdHNcbiAgICAgIGUuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHNcbiAgfCBJbml0IF8gLT4gW11cbiAgfCBPYnMgKF8sIHgsIF8pIC0+IExpc3QuY29uY2F0IHhcbiAgfCBEdW1teSBfIC0+IFtdXG5cbmxldCBhY3Rpb25zX29mX3N0ZXAgPSBmdW5jdGlvblxuICB8IFN1YnMgXyAtPiBbXSwgW11cbiAgfCBSdWxlIChfLCBlLCBfKSB8IFBlcnQgKF8sIGUsIF8pIC0+XG4gICAgZS5JbnN0YW50aWF0aW9uLmFjdGlvbnMsIGUuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjXG4gIHwgSW5pdCB5IC0+IHksIFtdXG4gIHwgT2JzIChfLCBfLCBfKSAtPiBbXSwgW11cbiAgfCBEdW1teSBfIC0+IFtdLCBbXVxuXG5sZXQgc2lkZV9lZmZlY3RzX29mX3N0ZXAgPSBmdW5jdGlvblxuICB8IFJ1bGUgKF8sIGUsIF8pIHwgUGVydCAoXywgZSwgXykgLT4gZS5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3RcbiAgfCBTdWJzIF8gfCBPYnMgXyB8IER1bW15IF8gfCBJbml0IF8gLT4gW11cblxubGV0IGluaXRfdHJhY2VfZmlsZSB+dXVpZCBlbnYgZGVzYyA9XG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBcIntcXG5cXFwidXVpZFxcXCIgOiBcXFwiXCIgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIChzdHJpbmdfb2ZfaW50IHV1aWQpIGluXG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBcIlxcXCIsXFxuXFxcImRpY3RcXFwiOntcIiBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgQWdlbnQuanNvbl9kaWN0aW9ubmFyeSBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCIsXCIgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIEluc3RhbnRpYXRpb24uanNvbl9kaWN0aW9ubmFyeSBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCIsXCIgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIFNpbXVsYXRpb25faW5mby5qc29uX2RpY3Rpb25uYXJ5IGluXG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBcIixcIiBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MganNvbl9kaWN0aW9ubmFyeSBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCJ9LFxcblxcXCJtb2RlbFxcXCI6XCIgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnRvX2NoYW5uZWwgZGVzYyAoTW9kZWwudG9feW9qc29uIGVudikgaW5cbiAgb3V0cHV0X3N0cmluZyBkZXNjIFwiLFxcblxcXCJ0cmFjZVxcXCI6W1wiXG5cbmxldCBhc3NlcnRfZmllbGQgaWRlbnQgeCA9XG4gIGlmIGlkZW50IDw+IHggdGhlblxuICAgIFlvanNvbi5qc29uX2Vycm9yXG4gICAgICAoXCJ0cmFjZSBsYWNrcyB0aGUgZmllbGQgXFxcIlwiIF4geCBeIFwiXFxcIiAoYXQgdGhlIHJpZ2h0IHBsYWNlKVwiKVxuXG5sZXQgcmVhZF90cmFjZV9oZWFkZXJzIGxleF9zdCBsZXhfYnVmID1cbiAgbGV0IGlkZW50ID1cbiAgICBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzIFlvanNvbi5CYXNpYy5yZWFkX2lkZW50IGxleF9zdCBsZXhfYnVmXG4gIGluXG4gIGxldCBpZGVudCcsIHV1aWQgPVxuICAgIGlmIGlkZW50ID0gXCJ1dWlkXCIgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb2xvbiBsZXhfc3QgbGV4X2J1ZiBpblxuICAgICAgbGV0IHV1aWQgPVxuICAgICAgICBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBsZXhfc3QgbGV4X2J1ZlxuICAgICAgaW5cbiAgICAgIGxldCB1dWlkID0gdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgdXVpZCkgd2l0aCBfIC0+IE5vbmUgaW5cbiAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2lkZW50IGxleF9zdCBsZXhfYnVmLCB1dWlkXG4gICAgKSBlbHNlXG4gICAgICBpZGVudCwgTm9uZVxuICBpblxuICBsZXQgKCkgPSBhc3NlcnRfZmllbGQgaWRlbnQnIFwiZGljdFwiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2NvbG9uIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgWW9qc29uLkJhc2ljLnNraXBfanNvbiBsZXhfc3QgbGV4X2J1ZiBpblxuICB1dWlkXG5cbmxldCBmb2xkX3RyYWNlIGYgaW5pdCBsZXhfc3QgbGV4X2J1ZiA9XG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2xjdXJsIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCBfID0gcmVhZF90cmFjZV9oZWFkZXJzIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCBpZGVudCA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2lkZW50IGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCAoKSA9IGFzc2VydF9maWVsZCBpZGVudCBcIm1vZGVsXCIgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfY29sb24gbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0IGVudiA9XG4gICAgTW9kZWwub2ZfeW9qc29uXG4gICAgICAoSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9qc29uIGxleF9zdCBsZXhfYnVmKVxuICBpblxuICBsZXQgaWRlbnQgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pZGVudCBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBhc3NlcnRfZmllbGQgaWRlbnQgXCJ0cmFjZVwiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2NvbG9uIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCBvdXQgPVxuICAgIEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXNcbiAgICAgIChZb2pzb24uQmFzaWMucmVhZF9zZXF1ZW5jZVxuICAgICAgICAgKGZ1biBhY2MgeCB5IC0+IGYgZW52IGFjYyAocmVhZF9zdGVwIHggeSkpXG4gICAgICAgICAoaW5pdCBlbnYpKVxuICAgICAgbGV4X3N0IGxleF9idWZcbiAgaW5cbiAgbGV0ICgpID1cbiAgICB0cnkgWW9qc29uLkJhc2ljLnJlYWRfb2JqZWN0X2VuZCBsZXhfYnVmIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKClcbiAgaW5cbiAgZW52LCBvdXRcblxubGV0IGZvbGRfdHJhY2VfZmlsZSBmIGluaXQgZm5hbWUgPVxuICBsZXQgZGVzYyA9IG9wZW5faW4gZm5hbWUgaW5cbiAgbGV0IGxleF9idWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGRlc2MgaW5cbiAgbGV0IGxleF9zdCA9IFlvanNvbi5pbml0X2xleGVyIH5mbmFtZSAoKSBpblxuICBsZXQgb3V0ID0gSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyAoZm9sZF90cmFjZSBmIGluaXQpIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCAoKSA9IGNsb3NlX2luIGRlc2MgaW5cbiAgb3V0XG5cbmxldCBnZXRfaGVhZGVyc19mcm9tX2ZpbGUgZm5hbWUgPVxuICBsZXQgZGVzYyA9IG9wZW5faW4gZm5hbWUgaW5cbiAgbGV0IGxleF9idWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGRlc2MgaW5cbiAgbGV0IGxleF9zdCA9IFlvanNvbi5pbml0X2xleGVyIH5mbmFtZSAoKSBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9sY3VybCBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgdXVpZCA9IHJlYWRfdHJhY2VfaGVhZGVycyBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgaWRlbnQgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pZGVudCBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBhc3NlcnRfZmllbGQgaWRlbnQgXCJtb2RlbFwiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2NvbG9uIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCBlbnYgPVxuICAgIE1vZGVsLm9mX3lvanNvblxuICAgICAgKEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBsZXhfc3QgbGV4X2J1ZilcbiAgaW5cbiAgbGV0ICgpID0gY2xvc2VfaW4gZGVzYyBpblxuICB1dWlkLCBlbnZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBFZmZpY2llbmN5IDogc2lnXG4gIHR5cGUgdCA9IHtcbiAgICBjb25zZWN1dGl2ZTogaW50IGFycmF5O1xuICAgIG11dGFibGUgY29uc2VjdXRpdmVfYmxvY2tlZDogaW50O1xuICAgIG11dGFibGUgbm9fbW9yZV9iaW5hcnk6IGludDtcbiAgICBtdXRhYmxlIG5vX21vcmVfdW5hcnk6IGludDtcbiAgICBtdXRhYmxlIGNsYXNoaW5nX2luc3RhbmNlOiBpbnQ7XG4gICAgbXV0YWJsZSB0aW1lX2NvcnJlY3Rpb246IGludDtcbiAgfVxuXG4gIHZhbCBpbml0IDogaW50IC0+IHRcbiAgdmFsIG5iIDogdCAtPiBpbnRcbiAgdmFsIG5iX2NvbnNlY3V0aXZlIDogcnVsZV9pZDppbnQgLT4gdCAtPiBpbnRcbiAgdmFsIG5iX2NvbnNlY3V0aXZlX2Jsb2NrZWQgOiB0IC0+IGludFxuICB2YWwgcHJpbnRfZGV0YWlsIDogY3VycmVudF9ldmVudDppbnQgLT4gRm9ybWF0LmZvcm1hdHRlciAtPiB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0X2NvbnNlY3V0aXZlIDogcnVsZV9pZDppbnQgLT4gdCAtPiB0XG4gIHZhbCByZXNldF9jb25zZWN1dGl2ZV9ibG9ja2VkIDogdCAtPiB0XG4gIHZhbCBpbmNyX25vX21vcmVfYmluYXJ5IDogcnVsZV9pZDppbnQgLT4gdCAtPiB0XG4gIHZhbCBpbmNyX25vX21vcmVfdW5hcnkgOiBydWxlX2lkOmludCAtPiB0IC0+IHRcbiAgdmFsIGluY3JfY2xhc2hpbmdfaW5zdGFuY2UgOiBydWxlX2lkOmludCAtPiB0IC0+IHRcbiAgdmFsIGluY3JfdGltZV9jb3JyZWN0aW9uIDogdCAtPiB0XG4gIHZhbCBpbmNyX2NvbnNlY3V0aXZlX2Jsb2NrZWQgOiB0IC0+IHRcbiAgdmFsIHdyaXRlX3QgOiBCdWZmZXIudCAtPiB0IC0+IHVuaXRcbiAgdmFsIHN0cmluZ19vZl90IDogP2xlbjppbnQgLT4gdCAtPiBzdHJpbmdcbiAgdmFsIHJlYWRfdCA6IFlvanNvbi5TYWZlLmxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gdFxuICB2YWwgdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBjb25zZWN1dGl2ZTogaW50IGFycmF5O1xuICAgIG11dGFibGUgY29uc2VjdXRpdmVfYmxvY2tlZDogaW50O1xuICAgIG11dGFibGUgbm9fbW9yZV9iaW5hcnk6IGludDtcbiAgICBtdXRhYmxlIG5vX21vcmVfdW5hcnk6IGludDtcbiAgICBtdXRhYmxlIGNsYXNoaW5nX2luc3RhbmNlOiBpbnQ7XG4gICAgbXV0YWJsZSB0aW1lX2NvcnJlY3Rpb246IGludDtcbiAgfVxuXG4gIGxldCBpbml0IHNpemUgPVxuICAgIHtcbiAgICAgIGNvbnNlY3V0aXZlID0gQXJyYXkubWFrZSBzaXplIDA7XG4gICAgICBjb25zZWN1dGl2ZV9ibG9ja2VkID0gMDtcbiAgICAgIG5vX21vcmVfYmluYXJ5ID0gMDtcbiAgICAgIG5vX21vcmVfdW5hcnkgPSAwO1xuICAgICAgY2xhc2hpbmdfaW5zdGFuY2UgPSAwO1xuICAgICAgdGltZV9jb3JyZWN0aW9uID0gMDtcbiAgICB9XG5cbiAgbGV0IG5iIHQgPVxuICAgIHQubm9fbW9yZV9iaW5hcnkgKyB0Lm5vX21vcmVfdW5hcnkgKyB0LmNsYXNoaW5nX2luc3RhbmNlICsgdC50aW1lX2NvcnJlY3Rpb25cblxuICBsZXQgbmJfY29uc2VjdXRpdmUgfnJ1bGVfaWQgdCA9IHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpXG4gIGxldCBuYl9jb25zZWN1dGl2ZV9ibG9ja2VkIHQgPSB0LmNvbnNlY3V0aXZlX2Jsb2NrZWRcblxuICBsZXQgcmVzZXRfY29uc2VjdXRpdmUgfnJ1bGVfaWQgdCA9XG4gICAgbGV0ICgpID0gdC5jb25zZWN1dGl2ZS4ocnVsZV9pZCkgPC0gMCBpblxuICAgIHRcblxuICBsZXQgcmVzZXRfY29uc2VjdXRpdmVfYmxvY2tlZCB0ID1cbiAgICBsZXQgKCkgPSB0LmNvbnNlY3V0aXZlX2Jsb2NrZWQgPC0gMCBpblxuICAgIHRcblxuICBsZXQgaW5jcl9jb25zZWN1dGl2ZV9ibG9ja2VkIHQgPVxuICAgIGxldCAoKSA9IHQuY29uc2VjdXRpdmVfYmxvY2tlZCA8LSBzdWNjIHQuY29uc2VjdXRpdmVfYmxvY2tlZCBpblxuICAgIHRcblxuICBsZXQgaW5jcl9ub19tb3JlX2JpbmFyeSB+cnVsZV9pZCB0ID1cbiAgICBsZXQgKCkgPSB0Lm5vX21vcmVfYmluYXJ5IDwtIHN1Y2MgdC5ub19tb3JlX2JpbmFyeSBpblxuICAgIGxldCAoKSA9IHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpIDwtIHN1Y2MgdC5jb25zZWN1dGl2ZS4ocnVsZV9pZCkgaW5cbiAgICB0XG5cbiAgbGV0IGluY3Jfbm9fbW9yZV91bmFyeSB+cnVsZV9pZCB0ID1cbiAgICBsZXQgKCkgPSB0Lm5vX21vcmVfdW5hcnkgPC0gc3VjYyB0Lm5vX21vcmVfdW5hcnkgaW5cbiAgICBsZXQgKCkgPSB0LmNvbnNlY3V0aXZlLihydWxlX2lkKSA8LSBzdWNjIHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpIGluXG4gICAgdFxuXG4gIGxldCBpbmNyX2NsYXNoaW5nX2luc3RhbmNlIH5ydWxlX2lkIHQgPVxuICAgIGxldCAoKSA9IHQuY2xhc2hpbmdfaW5zdGFuY2UgPC0gc3VjYyB0LmNsYXNoaW5nX2luc3RhbmNlIGluXG4gICAgbGV0ICgpID0gdC5jb25zZWN1dGl2ZS4ocnVsZV9pZCkgPC0gc3VjYyB0LmNvbnNlY3V0aXZlLihydWxlX2lkKSBpblxuICAgIHRcblxuICBsZXQgaW5jcl90aW1lX2NvcnJlY3Rpb24gdCA9XG4gICAgbGV0ICgpID0gdC50aW1lX2NvcnJlY3Rpb24gPC0gc3VjYyB0LnRpbWVfY29ycmVjdGlvbiBpblxuICAgIHRcblxuICBsZXQgcHJpbnRfZGV0YWlsIH5jdXJyZW50X2V2ZW50IGYgdCA9XG4gICAgbGV0IGFsbCA9IGZsb2F0X29mX2ludCAobmIgdCkgaW5cbiAgICBsZXQgZXZlbnRzID0gZmxvYXRfb2ZfaW50IGN1cnJlbnRfZXZlbnQgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfb3Blbl92Ym94IGYgMCBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBhbGwgPiAwLiB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIkBbJS4yZiUlIG9mIGV2ZW50IGxvb3BzIHdlcmUgcHJvZHVjdGl2ZS5AIE51bGwgZXZlbnQgY2F1c2U6QF1ALFwiXG4gICAgICAgICAgKDEwMC4gKi4gZXZlbnRzIC8uIChhbGwgKy4gZXZlbnRzKSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiB0Lm5vX21vcmVfdW5hcnkgPiAwIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiXFx0VmFsaWQgZW1iZWRkaW5nIGJ1dCBubyBsb25nZXIgdW5hcnkgd2hlbiByZXF1aXJlZDogJS4yZiUlQCxcIlxuICAgICAgICAgICgxMDAuICouIGZsb2F0X29mX2ludCB0Lm5vX21vcmVfdW5hcnkgLy4gYWxsKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHQubm9fbW9yZV9iaW5hcnkgPiAwIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiXFx0VmFsaWQgZW1iZWRkaW5nIGJ1dCBub3QgYmluYXJ5IHdoZW4gcmVxdWlyZWQ6ICUuMmYlJUAsXCJcbiAgICAgICAgICAoMTAwLiAqLiBmbG9hdF9vZl9pbnQgdC5ub19tb3JlX2JpbmFyeSAvLiBhbGwpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgdC5jbGFzaGluZ19pbnN0YW5jZSA+IDAgdGhlblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiXFx0Q2xhc2hpbmcgaW5zdGFuY2U6ICUuMmYlJUAsXCJcbiAgICAgICAgICAoMTAwLiAqLiBmbG9hdF9vZl9pbnQgdC5jbGFzaGluZ19pbnN0YW5jZSAvLiBhbGwpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgdC50aW1lX2NvcnJlY3Rpb24gPiAwIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlxcdFBlcnR1cmJhdGlvbiBpbnRlcnJ1cHRpbmcgdGltZSBhZHZhbmNlOiAlLjJmJSVALFwiXG4gICAgICAgICAgKDEwMC4gKi4gZmxvYXRfb2ZfaW50IHQudGltZV9jb3JyZWN0aW9uIC8uIGFsbClcbiAgICBpblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAXVwiXG5cbiAgbGV0IHRvX3lvanNvbiB0ID1cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJjb25zZWN1dGl2ZVwiLCBKc29uVXRpbC5vZl9hcnJheSBKc29uVXRpbC5vZl9pbnQgdC5jb25zZWN1dGl2ZTtcbiAgICAgICAgXCJjb25zZWN1dGl2ZV9ibG9ja2VkXCIsIGBJbnQgdC5jb25zZWN1dGl2ZV9ibG9ja2VkO1xuICAgICAgICBcIm5vX21vcmVfYmluYXJ5XCIsIGBJbnQgdC5ub19tb3JlX2JpbmFyeTtcbiAgICAgICAgXCJub19tb3JlX3VuYXJ5XCIsIGBJbnQgdC5ub19tb3JlX3VuYXJ5O1xuICAgICAgICBcImNsYXNoaW5nX2luc3RhbmNlXCIsIGBJbnQgdC5jbGFzaGluZ19pbnN0YW5jZTtcbiAgICAgICAgXCJ0aW1lX2NvcnJlY3Rpb25cIiwgYEludCB0LnRpbWVfY29ycmVjdGlvbjtcbiAgICAgIF1cblxuICBsZXQgb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gNiAtPlxuICAgICAge1xuICAgICAgICBjb25zZWN1dGl2ZSA9XG4gICAgICAgICAgKEpzb25VdGlsLnRvX2FycmF5IFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludClcbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJjb25zZWN1dGl2ZVwiIHgpO1xuICAgICAgICBjb25zZWN1dGl2ZV9ibG9ja2VkID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19pbnRcbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJjb25zZWN1dGl2ZV9ibG9ja2VkXCIgeCk7XG4gICAgICAgIG5vX21vcmVfYmluYXJ5ID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcIm5vX21vcmVfYmluYXJ5XCIgeCk7XG4gICAgICAgIG5vX21vcmVfdW5hcnkgPVxuICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwibm9fbW9yZV91bmFyeVwiIHgpO1xuICAgICAgICBjbGFzaGluZ19pbnN0YW5jZSA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9faW50XG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiY2xhc2hpbmdfaW5zdGFuY2VcIiB4KTtcbiAgICAgICAgdGltZV9jb3JyZWN0aW9uID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19pbnRcbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJ0aW1lX2NvcnJlY3Rpb25cIiB4KTtcbiAgICAgIH1cbiAgICB8IHggLT5cbiAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgc2ltdWxhdGlvbiBlZmZpY2llbmN5XCIsIHgpKVxuXG4gIGxldCB3cml0ZV90IG9iIGYgPSBZb2pzb24uQmFzaWMudG9fYnVmZmVyIG9iICh0b195b2pzb24gZilcblxuICBsZXQgc3RyaW5nX29mX3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIHdyaXRlX3Qgb2IgeDtcbiAgICBCdWZmZXIuY29udGVudHMgb2JcblxuICBsZXQgcmVhZF90IHAgbGIgPSBvZl95b2pzb24gKFlvanNvbi5CYXNpYy5mcm9tX2xleGJ1ZiB+c3RyZWFtOnRydWUgcCBsYilcbiAgbGV0IHRfb2Zfc3RyaW5nIHMgPSByZWFkX3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmVuZFxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgdGltZTogZmxvYXQ7XG4gIG11dGFibGUgZXZlbnRzOiBpbnQ7XG4gIG11dGFibGUgc3RvcmllczogaW50O1xuICBtdXRhYmxlIGxhc3RfcG9pbnQ6IGludDtcbiAgbXV0YWJsZSBzdGF0X251bGw6IEVmZmljaWVuY3kudDtcbiAgaW5pdF90aW1lOiBmbG9hdDtcbiAgaW5pdF9ldmVudDogaW50O1xuICBtdXRhYmxlIHBsb3RfcGVyaW9kOiBDb25maWd1cmF0aW9uLnBlcmlvZDtcbiAgbXV0YWJsZSBtYXhfdGltZTogZmxvYXQgb3B0aW9uO1xuICBtdXRhYmxlIG1heF9ldmVudDogaW50IG9wdGlvbjtcbn1cblxubGV0IGN1cnJlbnRfc3RvcnkgYyA9IGMuc3Rvcmllc1xubGV0IGN1cnJlbnRfdGltZSBjID0gYy50aW1lXG5sZXQgY3VycmVudF9ldmVudCBjID0gYy5ldmVudHNcbmxldCBuYl9udWxsX2V2ZW50IGMgPSBFZmZpY2llbmN5Lm5iIGMuc3RhdF9udWxsXG5cbmxldCBjb25zZWN1dGl2ZV9udWxsX2V2ZW50IH5ydWxlX2lkIGMgPVxuICBFZmZpY2llbmN5Lm5iX2NvbnNlY3V0aXZlIH5ydWxlX2lkIGMuc3RhdF9udWxsXG5cbmxldCBjb25zZWN1dGl2ZV9ibG9ja2VkIGMgPSBFZmZpY2llbmN5Lm5iX2NvbnNlY3V0aXZlX2Jsb2NrZWQgYy5zdGF0X251bGxcbmxldCBpbmNfc3RvcmllcyBjID0gYy5zdG9yaWVzIDwtIGMuc3RvcmllcyArIDFcbmxldCBpbmNfZXZlbnRzIGMgPSBjLmV2ZW50cyA8LSBjLmV2ZW50cyArIDFcblxubGV0IGNoZWNrX3RpbWUgYyA9XG4gIG1hdGNoIGMubWF4X3RpbWUgd2l0aFxuICB8IE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgbWF4IC0+IGMudGltZSA8PSBtYXhcblxubGV0IGNoZWNrX291dHB1dF90aW1lIGMgb3QgPVxuICBtYXRjaCBjLm1heF90aW1lIHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIG1heCAtPiBvdCA8PSBtYXhcblxubGV0IGNoZWNrX2V2ZW50cyBjID1cbiAgbWF0Y2ggYy5tYXhfZXZlbnQgd2l0aFxuICB8IE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgbWF4IC0+IGMuZXZlbnRzIDwgbWF4XG5cbmxldCBvbmVfdGltZV9hZHZhbmNlIGMgZHQgPVxuICBsZXQgKCkgPSBjLnRpbWUgPC0gYy50aW1lICsuIGR0IGluXG4gIGNoZWNrX3RpbWUgY1xuXG5sZXQgb25lX2NvbnN0cnVjdGl2ZV9ldmVudCB+cnVsZV9pZCBjID1cbiAgbGV0ICgpID0gYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5yZXNldF9jb25zZWN1dGl2ZSB+cnVsZV9pZCBjLnN0YXRfbnVsbCBpblxuICBsZXQgKCkgPSBjLnN0YXRfbnVsbCA8LSBFZmZpY2llbmN5LnJlc2V0X2NvbnNlY3V0aXZlX2Jsb2NrZWQgYy5zdGF0X251bGwgaW5cbiAgbGV0ICgpID0gaW5jX2V2ZW50cyBjIGluXG4gIGNoZWNrX3RpbWUgYyAmJiBjaGVja19ldmVudHMgY1xuXG5sZXQgb25lX25vX21vcmVfYmluYXJ5X2V2ZW50IH5ydWxlX2lkIGMgPVxuICBsZXQgKCkgPSBjLnN0YXRfbnVsbCA8LSBFZmZpY2llbmN5LmluY3Jfbm9fbW9yZV9iaW5hcnkgfnJ1bGVfaWQgYy5zdGF0X251bGwgaW5cbiAgY2hlY2tfdGltZSBjICYmIGNoZWNrX2V2ZW50cyBjXG5cbmxldCBvbmVfbm9fbW9yZV91bmFyeV9ldmVudCB+cnVsZV9pZCBjID1cbiAgbGV0ICgpID0gYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5pbmNyX25vX21vcmVfdW5hcnkgfnJ1bGVfaWQgYy5zdGF0X251bGwgaW5cbiAgY2hlY2tfdGltZSBjICYmIGNoZWNrX2V2ZW50cyBjXG5cbmxldCBvbmVfY2xhc2hpbmdfaW5zdGFuY2VfZXZlbnQgfnJ1bGVfaWQgYyA9XG4gIGxldCAoKSA9XG4gICAgYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5pbmNyX2NsYXNoaW5nX2luc3RhbmNlIH5ydWxlX2lkIGMuc3RhdF9udWxsXG4gIGluXG4gIGNoZWNrX3RpbWUgYyAmJiBjaGVja19ldmVudHMgY1xuXG5sZXQgb25lX3RpbWVfY29ycmVjdGlvbl9ldmVudCA/dGkgYyA9XG4gIG1hdGNoIE9wdGlvbl91dGlsLmJpbmQgTmJyLnRvX2Zsb2F0IHRpIHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSB0aSAtPlxuICAgIGxldCAoKSA9IGMudGltZSA8LSB0aSBpblxuICAgIGxldCAoKSA9IGMuc3RhdF9udWxsIDwtIEVmZmljaWVuY3kuaW5jcl90aW1lX2NvcnJlY3Rpb24gYy5zdGF0X251bGwgaW5cbiAgICBjaGVja190aW1lIGMgJiYgY2hlY2tfZXZlbnRzIGNcblxubGV0IG9uZV9ibG9ja2VkX2V2ZW50IGMgPVxuICBsZXQgKCkgPSBjLnN0YXRfbnVsbCA8LSBFZmZpY2llbmN5LmluY3JfY29uc2VjdXRpdmVfYmxvY2tlZCBjLnN0YXRfbnVsbCBpblxuICBjaGVja190aW1lIGMgJiYgY2hlY2tfZXZlbnRzIGNcblxubGV0IGdldF9lZmZpY2llbmN5IGMgPSBjLnN0YXRfbnVsbFxuXG5sZXQgcHJpbnRfZWZmaWNpZW5jeSBmIGMgPVxuICBFZmZpY2llbmN5LnByaW50X2RldGFpbCB+Y3VycmVudF9ldmVudDooY3VycmVudF9ldmVudCBjKSBmIGMuc3RhdF9udWxsXG5cbmxldCBpbml0X3RpbWUgYyA9IGMuaW5pdF90aW1lXG5sZXQgbWF4X3RpbWUgYyA9IGMubWF4X3RpbWVcbmxldCBtYXhfZXZlbnRzIGMgPSBjLm1heF9ldmVudFxubGV0IHBsb3RfcGVyaW9kIGMgPSBjLnBsb3RfcGVyaW9kXG5cbmxldCB0aW1lX3JhdGlvIHQgPVxuICBtYXRjaCB0Lm1heF90aW1lIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHRtYXggLT5cbiAgICBpZiB0bWF4ID4gdC5pbml0X3RpbWUgdGhlblxuICAgICAgU29tZSAoKHQudGltZSAtLiB0LmluaXRfdGltZSkgLy4gKHRtYXggLS4gdC5pbml0X3RpbWUpKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxubGV0IGV2ZW50X3JhdGlvIHQgPVxuICBtYXRjaCB0Lm1heF9ldmVudCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBlbWF4IC0+XG4gICAgaWYgZW1heCA9IDAgdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIFNvbWVcbiAgICAgICAgKGZsb2F0X29mX2ludCAodC5ldmVudHMgLSB0LmluaXRfZXZlbnQpXG4gICAgICAgIC8uIGZsb2F0X29mX2ludCAoZW1heCAtIHQuaW5pdF9ldmVudCkpXG5cbmxldCBzZXRfbWF4X3RpbWUgYyB0ID0gYy5tYXhfdGltZSA8LSB0XG5sZXQgc2V0X21heF9ldmVudHMgYyBlID0gYy5tYXhfZXZlbnQgPC0gZVxuXG5sZXQgdHJhY2tlZF9ldmVudHMgKGNvdW50ZXIgOiB0KSA6IGludCBvcHRpb24gPVxuICBpZiBjb3VudGVyLnN0b3JpZXMgPj0gMCB0aGVuXG4gICAgU29tZSBjb3VudGVyLnN0b3JpZXNcbiAgZWxzZVxuICAgIE5vbmVcblxubGV0IHNldF9wbG90X3BlcmlvZCAodCA6IHQpIHBsb3RfcGVyaW9kIDogdW5pdCA9IHQucGxvdF9wZXJpb2QgPC0gcGxvdF9wZXJpb2RcblxubGV0IGNyZWF0ZSA/KGluaXRfdCA9IDAuKSA/KGluaXRfZSA9IDApID9tYXhfdGltZSA/bWF4X2V2ZW50IH5wbG90X3BlcmlvZFxuICAgIH5uYl9ydWxlcyAoKSA9XG4gIHtcbiAgICB0aW1lID0gaW5pdF90O1xuICAgIGV2ZW50cyA9IGluaXRfZTtcbiAgICBzdG9yaWVzID0gLTE7XG4gICAgc3RhdF9udWxsID0gRWZmaWNpZW5jeS5pbml0IG5iX3J1bGVzO1xuICAgIHBsb3RfcGVyaW9kO1xuICAgIGluaXRfdGltZSA9IGluaXRfdDtcbiAgICBpbml0X2V2ZW50ID0gaW5pdF9lO1xuICAgIG1heF90aW1lO1xuICAgIG1heF9ldmVudDtcbiAgICBsYXN0X3BvaW50ID0gMDtcbiAgfVxuXG5sZXQgcmVpbml0aWFsaXplIGNvdW50ZXIgPVxuICBjb3VudGVyLnRpbWUgPC0gY291bnRlci5pbml0X3RpbWU7XG4gIGNvdW50ZXIuZXZlbnRzIDwtIGNvdW50ZXIuaW5pdF9ldmVudDtcbiAgY291bnRlci5zdG9yaWVzIDwtIC0xO1xuICBjb3VudGVyLmxhc3RfcG9pbnQgPC0gMDtcbiAgY291bnRlci5zdGF0X251bGwgPC1cbiAgICBFZmZpY2llbmN5LmluaXQgKEFycmF5Lmxlbmd0aCBjb3VudGVyLnN0YXRfbnVsbC5FZmZpY2llbmN5LmNvbnNlY3V0aXZlKVxuXG5sZXQgbmV4dF9zdGVwX3NpbXVsYXRpb25faW5mbyBjID1cbiAge1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCA9IGN1cnJlbnRfc3RvcnkgYztcbiAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZSA9IGN1cnJlbnRfdGltZSBjO1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudCA9IGN1cnJlbnRfZXZlbnQgYyArIDE7XG4gICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnByb2ZpbGluZ19pbmZvID0gKCk7XG4gIH1cblxubGV0IGN1cnJlbnRfc2ltdWxhdGlvbl9pbmZvIGMgPVxuICB7XG4gICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2lkID0gY3VycmVudF9zdG9yeSBjO1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lID0gY3VycmVudF90aW1lIGM7XG4gICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2V2ZW50ID0gY3VycmVudF9ldmVudCBjO1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5wcm9maWxpbmdfaW5mbyA9ICgpO1xuICB9XG5cbmxldCBuZXh0X3N0b3J5IGMgPVxuICBsZXQgKCkgPSBpbmNfc3RvcmllcyBjIGluXG4gIG5leHRfc3RlcF9zaW11bGF0aW9uX2luZm8gY1xuXG5sZXQgcG9zaXRpdmVfcGxvdF9wZXJpb2QgY291bnRlciA9XG4gIG1hdGNoIHBsb3RfcGVyaW9kIGNvdW50ZXIgd2l0aFxuICB8IENvbmZpZ3VyYXRpb24uREUgZSAtPiBlID4gMFxuICB8IENvbmZpZ3VyYXRpb24uRFQgdCAtPiB0ID4gMC5cblxubGV0IG5leHRfcG9pbnQgY291bnRlciBkdCA9XG4gIG1hdGNoIGNvdW50ZXIucGxvdF9wZXJpb2Qgd2l0aFxuICB8IENvbmZpZ3VyYXRpb24uRFQgZFQgLT5cbiAgICBpZiBkVCA8PSAwLiB0aGVuXG4gICAgICAwXG4gICAgZWxzZVxuICAgICAgaW50X29mX2Zsb2F0XG4gICAgICAgICgobWluXG4gICAgICAgICAgICAoT3B0aW9uX3V0aWwudW5zb21lIGluZmluaXR5IChtYXhfdGltZSBjb3VudGVyKSlcbiAgICAgICAgICAgIChkdCArLiBjdXJyZW50X3RpbWUgY291bnRlcilcbiAgICAgICAgIC0uIGNvdW50ZXIuaW5pdF90aW1lKVxuICAgICAgICAvLiBkVClcbiAgfCBDb25maWd1cmF0aW9uLkRFIGRFIC0+XG4gICAgaWYgZEUgPD0gMCB0aGVuXG4gICAgICAwXG4gICAgZWxzZVxuICAgICAgKGN1cnJlbnRfZXZlbnQgY291bnRlciAtIGNvdW50ZXIuaW5pdF9ldmVudCkgLyBkRVxuXG5sZXQgdG9fcGxvdF9wb2ludHMgY291bnRlciBkdCA9XG4gIGxldCBuZXh0ID0gbmV4dF9wb2ludCBjb3VudGVyIGR0IGluXG4gIGxldCBsYXN0ID0gY291bnRlci5sYXN0X3BvaW50IGluXG4gIGxldCAoKSA9IGNvdW50ZXIubGFzdF9wb2ludCA8LSBuZXh0IGluXG4gIGxldCBuID0gbmV4dCAtIGxhc3QgaW5cbiAgbWF0Y2ggY291bnRlci5wbG90X3BlcmlvZCB3aXRoXG4gIHwgQ29uZmlndXJhdGlvbi5EVCBkVCAtPlxuICAgICggc25kXG4gICAgICAgIChUb29scy5yZWN0aVxuICAgICAgICAgICAoZnVuICh0aW1lLCBhY2MpIF8gLT5cbiAgICAgICAgICAgICAoIHRpbWUgLS4gZFQsXG4gICAgICAgICAgICAgICBpZiBjaGVja19vdXRwdXRfdGltZSBjb3VudGVyIHRpbWUgdGhlblxuICAgICAgICAgICAgICAgICB0aW1lIDo6IGFjY1xuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBhY2MgKSlcbiAgICAgICAgICAgKGNvdW50ZXIuaW5pdF90aW1lICsuIChmbG9hdF9vZl9pbnQgbmV4dCAqLiBkVCksIFtdKVxuICAgICAgICAgICBuKSxcbiAgICAgIGNvdW50ZXIgKVxuICB8IENvbmZpZ3VyYXRpb24uREUgXyAtPlxuICAgIGlmIG4gPSAxIHRoZW5cbiAgICAgIFsgY291bnRlci50aW1lIF0sIGNvdW50ZXJcbiAgICBlbHNlIGlmIG4gPSAwIHRoZW5cbiAgICAgIFtdLCBjb3VudGVyXG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdcbiAgICAgICAgKFwiQ291bnRlci50b19wbG90X3BvaW50czogaW52YWxpZCBpbmNyZW1lbnQgXCIgXiBzdHJpbmdfb2ZfaW50IG4pXG5cbmxldCBmaWxsIH5vdXRwdXRzIGNvdW50ZXIgfmR0ID1cbiAgbGV0IHBvaW50cywgY291bnRlcicgPSB0b19wbG90X3BvaW50cyBjb3VudGVyIGR0IGluXG4gIExpc3QuaXRlciAoZnVuIHRpbWUgLT4gb3V0cHV0cyBjb3VudGVyJyB0aW1lKSBwb2ludHNcblxubGV0IGZha2VfdGltZSB0IHRpbWUgPSB7IHQgd2l0aCB0aW1lIH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBwcmludF9pbml0aWFsX2lucHV0cyA/dXVpZCBjb25mIGVudiBpbnB1dHNfZm9ybSBpbml0ID1cbiAgbGV0IG5vQ291bnRlcnMgPSBmYWxzZSBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIHV1aWQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB1dWlkIC0+IEZvcm1hdC5mcHJpbnRmIGlucHV0c19mb3JtIFwiLy8gXFxcInV1aWRcXFwiIDogXFxcIiVpXFxcIkAuXCIgdXVpZFxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGlucHV0c19mb3JtIFwiJWFALiVhQC5cIiBDb25maWd1cmF0aW9uLnByaW50IGNvbmZcbiAgICAgIChLYXBwYV9wcmludGVyLmVudl9rYXBwYSB+bm9Db3VudGVycylcbiAgICAgIGVudlxuICBpblxuICBsZXQgc2lncyA9IE1vZGVsLnNpZ25hdHVyZXMgZW52IGluXG4gIEZvcm1hdC5mcHJpbnRmIGlucHV0c19mb3JtIFwiQC5AWzx2PiVhQF1ALlwiXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIChuLCByKSAtPlxuICAgICAgICAgbGV0IF8sIGluc19mcmVzaCA9XG4gICAgICAgICAgIFBhdHRlcm5fY29tcGlsZXIubGthcHBhX29mX2VsZW1lbnRhcnlfcnVsZSBzaWdzIChNb2RlbC5kb21haW4gZW52KSByXG4gICAgICAgICBpblxuICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgaWYgaW5zX2ZyZXNoIDw+IFtdIHRoZW4gKFxuICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aG92IDI+JSVpbml0OkAgQFslYUBdQCBAWyVhQF1AXVwiXG4gICAgICAgICAgICAgICAgIChLYXBwYV9wcmludGVyLmFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgICAgKFJhd19taXh0dXJlLnByaW50IH5ub0NvdW50ZXJzIH5jcmVhdGVkOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH5pbml0aWFsX2NvbW1hOmZhbHNlIH5zaWdzKVxuICAgICAgICAgICAgICAgICBpbnNfZnJlc2hcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGlmIHIuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnMgPD4gW10gdGhlbiBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZiAoKVxuICAgICAgICAgICApXG4gICAgICAgICBpblxuICAgICAgICAgUHAubGlzdCBQcC5zcGFjZVxuICAgICAgICAgICAoZnVuIGYgKG5iLCB0aykgLT5cbiAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aG92IDI+JSVpbml0OkAgQFslYUBdQCAlYUBdXCJcbiAgICAgICAgICAgICAgIChLYXBwYV9wcmludGVyLmFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgICAgICAgICAgICAoZnN0IChBbGdfZXhwci5tdWx0IChMb2MuYW5ub3Rfd2l0aF9kdW1teSBuKSBuYikpXG4gICAgICAgICAgICAgICAoTW9kZWwucHJpbnRfdG9rZW4gfmVudikgdGspXG4gICAgICAgICAgIGYgci5QcmltaXRpdmVzLmRlbHRhX3Rva2VucykpXG4gICAgaW5pdFxuXG50eXBlIHNuYXBzaG90ID0ge1xuICBzbmFwc2hvdF9ldmVudDogaW50O1xuICBzbmFwc2hvdF90aW1lOiBmbG9hdDtcbiAgc25hcHNob3RfYWdlbnRzOiAoaW50ICogVXNlcl9ncmFwaC5jb25uZWN0ZWRfY29tcG9uZW50KSBsaXN0O1xuICBzbmFwc2hvdF90b2tlbnM6IChzdHJpbmcgKiBOYnIudCkgYXJyYXk7XG59XG5cbmxldCBwcmludF9zbmFwc2hvdCA/dXVpZCBmIHMgPVxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2Pi8vIFNuYXBzaG90IFtFdmVudDogJWRdQCxcIlxuICAgICAgKCpcIiwgVGltZTogJWZcIiopIHMuc25hcHNob3RfZXZlbnRcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhJSVkZWY6IFxcXCJUMFxcXCIgXFxcIiVzXFxcIkAsQCwlYUAsJWFAXUAuXCJcbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiB4IC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLy8gXFxcInV1aWRcXFwiIDogXFxcIiVpXFxcIkAsXCIgeCkpXG4gICAgdXVpZFxuICAgIChKc29uVXRpbC5zdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgcy5zbmFwc2hvdF90aW1lKVxuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoaSwgbWl4KSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGhvdiAyPiUlaW5pdDogJWkgLyolaSBhZ2VudHMqLyAlYUBdXCIgaVxuICAgICAgICAgICAoQXJyYXkuZm9sZF9sZWZ0IChmdW4gcyBlIC0+IHMgKyBBcnJheS5sZW5ndGggZSkgMCBtaXgpXG4gICAgICAgICAgIFVzZXJfZ3JhcGgucHJpbnRfY2MgbWl4KSlcbiAgICBzLnNuYXBzaG90X2FnZW50c1xuICAgIChQcC5hcnJheSBQcC5zcGFjZSAoZnVuIF8gZiAobmEsIGVsKSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiUlaW5pdDogJWEgJXNcIiBOYnIucHJpbnQgZWwgbmEpKVxuICAgIHMuc25hcHNob3RfdG9rZW5zXG5cbmxldCBwcmludF9kb3Rfc25hcHNob3QgP3V1aWQgZiBzID1cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4vLyBTbmFwc2hvdCBbRXZlbnQ6ICVkXUAsXCJcbiAgICAgICgqXCIsIFRpbWU6ICVmXCIqKSBzLnNuYXBzaG90X2V2ZW50XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYWRpZ3JhcGggR3tALCVhQCwlYX1AXUAuXCJcbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiB4IC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLy8gXFxcInV1aWRcXFwiIDogXFxcIiVpXFxcIkAsXCIgeCkpXG4gICAgdXVpZFxuICAgIChQcC5saXN0aSBQcC5jdXQgKGZ1biBpIGYgKG5iLCBtaXgpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPnN1YmdyYXBoIGNsdXN0ZXIlZHtALFwiIGk7XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgIFwiY291bnRlciVkIFtsYWJlbCA9IFxcXCIlZCBpbnN0YW5jZShzKVxcXCIsIHNoYXBlPW5vbmVdO0AsJWF9QF1cIiBpIG5iXG4gICAgICAgICAgIChVc2VyX2dyYXBoLnByaW50X2RvdF9jYyBpKVxuICAgICAgICAgICBtaXgpKVxuICAgIHMuc25hcHNob3RfYWdlbnRzXG4gICAgKFBwLmFycmF5IFBwLmN1dCAoZnVuIGkgZiAobmEsIGVsKSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInRva2VuXyVkIFtsYWJlbCA9IFxcXCIlcyAoJWEpXFxcIiAsIHNoYXBlPW5vbmVdXCIgaSBuYVxuICAgICAgICAgICBOYnIucHJpbnQgZWwpKVxuICAgIHMuc25hcHNob3RfdG9rZW5zXG5cbmxldCB3cml0ZV9zbmFwc2hvdCBvYiBzID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic25hcHNob3RfZXZlbnRcIiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iXG4gICAgICBzLnNuYXBzaG90X2V2ZW50XG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJzbmFwc2hvdF90aW1lXCIgWW9qc29uLkJhc2ljLndyaXRlX2Zsb2F0IG9iXG4gICAgICBzLnNuYXBzaG90X3RpbWVcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInNuYXBzaG90X2FnZW50c1wiXG4gICAgICAoSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfaW50XG4gICAgICAgICAgICBVc2VyX2dyYXBoLndyaXRlX2Nvbm5lY3RlZF9jb21wb25lbnQpKVxuICAgICAgb2Igcy5zbmFwc2hvdF9hZ2VudHNcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInNuYXBzaG90X3Rva2Vuc1wiXG4gICAgICAoSnNvblV0aWwud3JpdGVfYXJyYXlcbiAgICAgICAgIChKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBOYnIud3JpdGVfdCkpXG4gICAgICBvYiBzLnNuYXBzaG90X3Rva2Vuc1xuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cbmxldCByZWFkX3NuYXBzaG90IHAgbGIgPVxuICBsZXQgc25hcHNob3RfZXZlbnQsIHNuYXBzaG90X3RpbWUsIHNuYXBzaG90X2FnZW50cywgc25hcHNob3RfdG9rZW5zID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKGUsIHRpLCBhLCB0KSBrZXkgcCBsYiAtPlxuICAgICAgICBpZiBrZXkgPSBcInNuYXBzaG90X2V2ZW50XCIgdGhlblxuICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiLCB0aSwgYSwgdFxuICAgICAgICBlbHNlIGlmIGtleSA9IFwic25hcHNob3RfdGltZVwiIHRoZW5cbiAgICAgICAgICBlLCBZb2pzb24uQmFzaWMucmVhZF9udW1iZXIgcCBsYiwgYSwgdFxuICAgICAgICBlbHNlIGlmIGtleSA9IFwic25hcHNob3RfYWdlbnRzXCIgdGhlblxuICAgICAgICAgICggZSxcbiAgICAgICAgICAgIHRpLFxuICAgICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfbGlzdFxuICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucmVhZF9jb25uZWN0ZWRfY29tcG9uZW50KVxuICAgICAgICAgICAgICBwIGxiLFxuICAgICAgICAgICAgdCApXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJzbmFwc2hvdF90b2tlbnNcIikgaW5cbiAgICAgICAgICAoIGUsXG4gICAgICAgICAgICB0aSxcbiAgICAgICAgICAgIGEsXG4gICAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9hcnJheVxuICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIE5ici5yZWFkX3QpXG4gICAgICAgICAgICAgIHAgbGIgKVxuICAgICAgICApKVxuICAgICAgKC0xLCBuYW4sIFtdLCBbfHxdKSBwIGxiXG4gIGluXG4gIHsgc25hcHNob3RfZXZlbnQ7IHNuYXBzaG90X3RpbWU7IHNuYXBzaG90X2FnZW50czsgc25hcHNob3RfdG9rZW5zIH1cblxubGV0IHN0cmluZ19vZl9zbmFwc2hvdCA9IEpzb25VdGlsLnN0cmluZ19vZl93cml0ZSB3cml0ZV9zbmFwc2hvdFxuXG5sZXQgc25hcHNob3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbnR5cGUgZGluX2RhdGEgPSB7XG4gIGRpbl9raW5kOiBQcmltaXRpdmVzLmRpbl9raW5kO1xuICBkaW5fc3RhcnQ6IGZsb2F0O1xuICBkaW5faGl0czogaW50IGFycmF5O1xuICBkaW5fZmx1eHM6IGZsb2F0IGFycmF5IGFycmF5O1xufVxuXG50eXBlIGRpbiA9IHsgZGluX3J1bGVzOiBzdHJpbmcgYXJyYXk7IGRpbl9kYXRhOiBkaW5fZGF0YTsgZGluX2VuZDogZmxvYXQgfVxuXG5sZXQgd3JpdGVfZGluIG9iIGYgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaW5fa2luZFwiIFByaW1pdGl2ZXMud3JpdGVfZGluX2tpbmQgb2JcbiAgICAgIGYuZGluX2RhdGEuZGluX2tpbmRcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcImRpbl9zdGFydFwiIFlvanNvbi5CYXNpYy53cml0ZV9mbG9hdCBvYlxuICAgICAgZi5kaW5fZGF0YS5kaW5fc3RhcnRcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcImRpbl9lbmRcIiBZb2pzb24uQmFzaWMud3JpdGVfZmxvYXQgb2IgZi5kaW5fZW5kXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaW5fcnVsZXNcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcpXG4gICAgICBvYiBmLmRpbl9ydWxlc1xuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiZGluX2hpdHNcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5IFlvanNvbi5CYXNpYy53cml0ZV9pbnQpXG4gICAgICBvYiBmLmRpbl9kYXRhLmRpbl9oaXRzXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaW5fZmx1eHNcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5IChKc29uVXRpbC53cml0ZV9hcnJheSBZb2pzb24uQmFzaWMud3JpdGVfZmxvYXQpKVxuICAgICAgb2IgZi5kaW5fZGF0YS5kaW5fZmx1eHNcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgcmVhZF9kaW4gcCBsYiA9XG4gIGxldCBkaW5fa2luZCwgZGluX3N0YXJ0LCBkaW5faGl0cywgZGluX2ZsdXhzLCBkaW5fcnVsZXMsIGRpbl9lbmQgPVxuICAgIFlvanNvbi5CYXNpYy5yZWFkX2ZpZWxkc1xuICAgICAgKGZ1biAoaywgcywgaCwgZiwgciwgZSkga2V5IHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJkaW5fa2luZFwiIHRoZW5cbiAgICAgICAgICBQcmltaXRpdmVzLnJlYWRfZGluX2tpbmQgcCBsYiwgcywgaCwgZiwgciwgZVxuICAgICAgICBlbHNlIGlmIGtleSA9IFwiZGluX3N0YXJ0XCIgdGhlblxuICAgICAgICAgIGssIFlvanNvbi5CYXNpYy5yZWFkX251bWJlciBwIGxiLCBoLCBmLCByLCBlXG4gICAgICAgIGVsc2UgaWYga2V5ID0gXCJkaW5faGl0c1wiIHRoZW5cbiAgICAgICAgICBrLCBzLCBZb2pzb24uQmFzaWMucmVhZF9hcnJheSBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYiwgZiwgciwgZVxuICAgICAgICBlbHNlIGlmIGtleSA9IFwiZGluX2ZsdXhzXCIgdGhlblxuICAgICAgICAgICggayxcbiAgICAgICAgICAgIHMsXG4gICAgICAgICAgICBoLFxuICAgICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfYXJyYXlcbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IFlvanNvbi5CYXNpYy5yZWFkX251bWJlcilcbiAgICAgICAgICAgICAgcCBsYixcbiAgICAgICAgICAgIHIsXG4gICAgICAgICAgICBlIClcbiAgICAgICAgZWxzZSBpZiBrZXkgPSBcImRpbl9lbmRcIiB0aGVuXG4gICAgICAgICAgaywgcywgaCwgZiwgciwgWW9qc29uLkJhc2ljLnJlYWRfbnVtYmVyIHAgbGJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcImRpbl9ydWxlc1wiKSBpblxuICAgICAgICAgIGssIHMsIGgsIGYsIFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCBlXG4gICAgICAgICkpXG4gICAgICAoUHJpbWl0aXZlcy5BQlNPTFVURSwgbmFuLCBbfHxdLCBbfHxdLCBbfHxdLCBuYW4pXG4gICAgICBwIGxiXG4gIGluXG4gIHtcbiAgICBkaW5fcnVsZXM7XG4gICAgZGluX2VuZDtcbiAgICBkaW5fZGF0YSA9IHsgZGluX2tpbmQ7IGRpbl9zdGFydDsgZGluX2hpdHM7IGRpbl9mbHV4cyB9O1xuICB9XG5cbmxldCBzdHJpbmdfb2ZfZGluID0gSnNvblV0aWwuc3RyaW5nX29mX3dyaXRlIHdyaXRlX2RpblxuXG5sZXQgZGluX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW4gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxubGV0IHByaW50X2RvdF9kaW4gP3V1aWQgZGVzYyBmbHV4ID1cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiQFs8dj4lYVwiXG4gICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiB4IC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBcXFwidXVpZFxcXCIgOiBcXFwiJWlcXFwiLEAsXCIgeCkpXG4gICAgICB1dWlkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZGVzY1xuICAgICAgXCJkaWdyYXBoIEd7IGxhYmVsPVxcXCJEeW5hbWljIGluZmx1ZW5jZSBuZXR3b3JrXFxcIiA7IGxhYmVsbG9jPVxcXCJ0XFxcIiA7IFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIm5vZGUgW3NoYXBlPWJveCxzdHlsZT1maWxsZWQsZmlsbGNvbG9yPWxpZ2h0c2t5Ymx1ZV1ALFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAuYXJyYXlcbiAgICAgIChmdW4gXyAtPiAoKSlcbiAgICAgIChmdW4gcyAtPlxuICAgICAgICBQcC5hcnJheSBQcC5lbXB0eSAoZnVuIGQgZiB2IC0+XG4gICAgICAgICAgICBpZiB2ID0gMC4gdGhlblxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBjb2xvciwgYXJyb3doZWFkID1cbiAgICAgICAgICAgICAgICBpZiB2IDwgMC4gdGhlblxuICAgICAgICAgICAgICAgICAgXCJyZWQzXCIsIFwidGVlXCJcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBcImdyZWVuM1wiLCBcIm5vcm1hbFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICBcIkBbPGg+XFxcIiVzXFxcIiAtPiBcXFwiJXNcXFwiIFxcXG4gICAgICAgICAgICAgICAgIFt3ZWlnaHQ9JWQsbGFiZWw9XFxcIiUuM2ZcXFwiLGNvbG9yPSVzLGFycm93aGVhZD0lc107QF1ALFwiXG4gICAgICAgICAgICAgICAgZmx1eC5kaW5fcnVsZXMuKHMpIGZsdXguZGluX3J1bGVzLihkKVxuICAgICAgICAgICAgICAgIChhYnMgKGludF9vZl9mbG9hdCB2KSlcbiAgICAgICAgICAgICAgICB2IGNvbG9yIGFycm93aGVhZFxuICAgICAgICAgICAgKSkpXG4gICAgICBkZXNjIGZsdXguZGluX2RhdGEuZGluX2ZsdXhzXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGRlc2MgXCJ9QF1ALlwiXG5cbmxldCBwcmludF9odG1sX2RpbiBkZXNjIGZsdXggPVxuICBQcF9odG1sLmdyYXBoX3BhZ2VcbiAgICAoZnVuIGYgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiRHluYW1pYyBpbmZsdWVuY2UgbWFwXCIpXG4gICAgfnN1YnRpdGxlOihmdW4gZiAtPlxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmXG4gICAgICAgIFwiYmV0d2VlbiB0ID0gPHNwYW4gaWQ9XFxcImJlZ2luX3RpbWVcXFwiPjwvc3Bhbj5zIGFuZCB0ID0gPHNwYW4gXFxcbiAgICAgICAgIGlkPVxcXCJlbmRfdGltZVxcXCI+PC9zcGFuPnMgKDxzcGFuIGlkPVxcXCJuYl9ldmVudHNcXFwiPjwvc3Bhbj4gZXZlbnRzKVwiKVxuICAgIFtcbiAgICAgIFwiaHR0cDovL2QzanMub3JnL2QzLnY0Lm1pbi5qc1wiO1xuICAgICAgXCJodHRwczovL2NvZGUuanF1ZXJ5LmNvbS9qcXVlcnktMy4zLjEubWluLmpzXCI7XG4gICAgXVxuICAgIChmdW4gZiAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48c3R5bGU+QCwuY2hvcmQgcGF0aCB7QCBmaWxsLW9wYWNpdHk6IC42NztAIFwiXG4gICAgICBpblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcInN0cm9rZTogIzAwMDtAIHN0cm9rZS13aWR0aDogLjVweDtAIH1AXUAsPC9zdHlsZT5cIilcbiAgICAoZnVuIGYgLT5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8ZGl2IGlkPVxcXCJmbHV4X2NvbnRhaW5lclxcXCI+PC9kaXY+QCxcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+PGZvcm0+QCxcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5ALFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPGxhYmVsIGZvcj1cXFwiY29ycmVjdGlvblxcXCI+Q29ycmVjdGlvbjwvbGFiZWw+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIjxzZWxlY3QgaWQ9XFxcInNlbGVjdF9jb3JyZWN0aW9uXFxcIiBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIiBcXFxuICAgICAgICAgICBpZD1cXFwiY29ycmVjdGlvblxcXCI+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8b3B0aW9uIHZhbHVlPVxcXCJub25lXFxcIj5Ob25lPC9vcHRpb24+QCxcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjxvcHRpb24gdmFsdWU9XFxcImhpdHNcXFwiPlJ1bGUgb2NjdXJlbmNlczwvb3B0aW9uPkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCI8b3B0aW9uIHZhbHVlPVxcXCJ0aW1lXFxcIj5UaW1lPC9vcHRpb24+QF1ALDwvc2VsZWN0PkAsPC9kaXY+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIjxpbnB1dCBpZD1cXFwidG9nZ2xlX3NlbGVjdGVkX3J1bGVzXFxcIiB0eXBlPVxcXCJidXR0b25cXFwiIHZhbHVlPVxcXCJUb2dnbGUgXFxcbiAgICAgICAgICAgc2VsZWN0ZWQgcnVsZXNcXFwiPkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxsYWJlbCBjbGFzcz1cXFwiY2hlY2tib3gtaW5saW5lXFxcIj5ALFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCI8aW5wdXQgaWQ9XFxcImNoZWNrYm94X3NlbGZfaW5mbHVlbmNlXFxcIiB0eXBlPVxcXCJjaGVja2JveFxcXCI+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJSdWxlcyBzZWxmIGluZmx1ZW5jZUBdQCw8L2xhYmVsPkBdQCw8L2Zvcm0+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8Zm9ybSBpZD1cXFwibWVudVxcXCI+PC9mb3JtPkAsXCIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PHNjcmlwdD5ALCVzQCw8L3NjcmlwdD5AXUAsXCJcbiAgICAgICAgICBSZXNvdXJjZV9zdHJpbmdzLmNvbW1vbl9qc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PHNjcmlwdD5ALCVzQCw8L3NjcmlwdD5AXUAsXCJcbiAgICAgICAgICBSZXNvdXJjZV9zdHJpbmdzLmZsdXhfanNcbiAgICAgIGluXG5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIkBbPHYgMj48c2NyaXB0PkAsXFxcInVzZSBzdHJpY3RcXFwiQCxAW3ZhciBmbHV4ID1AICVzO0BdQCxcIlxuICAgICAgICAgIChzdHJpbmdfb2ZfZGluIGZsdXgpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInZhciBpZHMgPSB7QFtALFwiIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiXFxcImJlZ2luVGltZUlkXFxcIiA6IFxcXCJiZWdpbl90aW1lXFxcIixAIFwiIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiXFxcImVuZFRpbWVJZFxcXCIgOiBcXFwiZW5kX3RpbWVcXFwiLEAgXCIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwic2VsZWN0Q29ycmVjdGlvbklkXFxcIiA6IFxcXCJzZWxlY3RfY29ycmVjdGlvblxcXCIsQCBcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwibmJFdmVudHNJZFxcXCIgOiBcXFwibmJfZXZlbnRzXFxcIixAIFwiIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiXFxcInJ1bGVzQ2hlY2tib3hlc0lkXFxcIiA6IFxcXCJtZW51XFxcIixAIFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiXFxcInRvZ2dsZVJ1bGVzSWRcXFwiIDogXFxcInRvZ2dsZV9zZWxlY3RlZF9ydWxlc1xcXCIsQCBcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIlxcXCJjaGVja2JveFNlbGZJbmZsdWVuY2VJZFxcXCIgOiBcXFwiY2hlY2tib3hfc2VsZl9pbmZsdWVuY2VcXFwifTtAXUAgXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwid2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCl7IEBbQCxcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInZhciBmbHV4X21hcCA9IG5ldyBmbHV4TWFwKGlkcyk7QCBcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcImZsdXhfbWFwLnNldEZsdXgoZmx1eCk7IH07IEBdQCxcIiBpblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBdQCw8L3NjcmlwdD5cIilcbiAgICBkZXNjXG5cbnR5cGUgcGxvdCA9IHsgcGxvdF9sZWdlbmQ6IHN0cmluZyBhcnJheTsgcGxvdF9zZXJpZXM6IGZsb2F0IG9wdGlvbiBhcnJheSBsaXN0IH1cblxubGV0IGFkZF9wbG90X2xpbmUgbmV3X29ic2VydmFibGVzIHBsb3QgPVxuICBsZXQgbmV3X3ZhbHVlcyA9IEFycmF5Lm1hcCAoZnVuIG5iciAtPiBOYnIudG9fZmxvYXQgbmJyKSBuZXdfb2JzZXJ2YWJsZXMgaW5cbiAge1xuICAgIHBsb3RfbGVnZW5kID0gcGxvdC5wbG90X2xlZ2VuZDtcbiAgICBwbG90X3NlcmllcyA9IG5ld192YWx1ZXMgOjogcGxvdC5wbG90X3NlcmllcztcbiAgfVxuXG5sZXQgaW5pdF9wbG90IGVudiA9XG4gIGxldCBub0NvdW50ZXJzID0gZmFsc2UgaW5cbiAgbGV0IHBsb3RfbGVnZW5kID1cbiAgICBNb2RlbC5tYXBfb2JzZXJ2YWJsZXNcbiAgICAgIChmdW4gbyAtPlxuICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIiAoS2FwcGFfcHJpbnRlci5hbGdfZXhwciB+bm9Db3VudGVycyB+ZW52KSBvKVxuICAgICAgZW52XG4gIGluXG4gIHsgcGxvdF9sZWdlbmQ7IHBsb3Rfc2VyaWVzID0gW10gfVxuXG5sZXQgd3JpdGVfcGxvdCBvYiBmID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwibGVnZW5kXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9hcnJheSBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nKVxuICAgICAgb2IgZi5wbG90X2xlZ2VuZFxuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic2VyaWVzXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAoSnNvblV0aWwud3JpdGVfYXJyYXkgKEpzb25VdGlsLndyaXRlX29wdGlvbiBZb2pzb24uQmFzaWMud3JpdGVfZmxvYXQpKSlcbiAgICAgIG9iIGYucGxvdF9zZXJpZXNcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgcmVhZF9wbG90IHAgbGIgPVxuICBsZXQgcGxvdF9sZWdlbmQsIHBsb3Rfc2VyaWVzID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKGwsIHMpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwic2VyaWVzXCIgdGhlblxuICAgICAgICAgICggbCxcbiAgICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2xpc3RcbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2FycmF5XG4gICAgICAgICAgICAgICAgIChKc29uVXRpbC5yZWFkX29wdGlvbiBZb2pzb24uQmFzaWMucmVhZF9udW1iZXIpKVxuICAgICAgICAgICAgICBwIGxiIClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcImxlZ2VuZFwiKSBpblxuICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCBzXG4gICAgICAgICkpXG4gICAgICAoW3x8XSwgW10pIHAgbGJcbiAgaW5cbiAgeyBwbG90X2xlZ2VuZDsgcGxvdF9zZXJpZXMgfVxuXG5sZXQgc3RyaW5nX29mX3Bsb3QgPSBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGUgd3JpdGVfcGxvdFxuXG5sZXQgcGxvdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcGxvdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG5sZXQgcHJpbnRfcGxvdF9zZXAgaXNfdHN2IGYgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAoaWYgaXNfdHN2IHRoZW5cbiAgICAgICBcIlxcdFwiXG4gICAgIGVsc2VcbiAgICAgICBcIixcIilcblxubGV0IHByaW50X3Bsb3RfbGVnZW5kIH5pc190c3YgZiBhID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JWFAXUAuXCJcbiAgICAoUHAuYXJyYXkgKHByaW50X3Bsb3Rfc2VwIGlzX3RzdikgKGZ1biBfIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcIiVzXFxcIlwiIHgpKVxuICAgIGFcblxubGV0IHByaW50X3Bsb3RfbGluZSB+aXNfdHN2IHBwIGYgbCA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiVhQF1ALlwiXG4gICAgKFBwLmFycmF5IChwcmludF9wbG90X3NlcCBpc190c3YpIChmdW4gXyAtPiBwcCkpXG4gICAgbFxuXG5sZXQgZXhwb3J0X3Bsb3QgfmlzX3RzdiBwbG90ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWElYVwiXG4gICAgKHByaW50X3Bsb3RfbGVnZW5kIH5pc190c3YpXG4gICAgcGxvdC5wbG90X2xlZ2VuZFxuICAgIChQcC5saXN0IFBwLmVtcHR5XG4gICAgICAgKHByaW50X3Bsb3RfbGluZSB+aXNfdHN2IChQcC5vcHRpb24gKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlZVwiKSkpKVxuICAgIChMaXN0LnJldiBwbG90LnBsb3Rfc2VyaWVzKVxuXG5sZXQgcHJpbnRfd2FybmluZyA/cG9zIGYgbXNnID1cbiAgbGV0IHByIGYgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiV2FybmluZzogQFsldEBdXCIgbXNnIGluXG4gIG1hdGNoIHBvcyB3aXRoXG4gIHwgU29tZSBwb3MgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFAXUAuXCIgKExvYy5wcmludF9hbm5vdGVkIHByKSAoKCksIHBvcylcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhQF1ALlwiIHByICgpXG5cbnR5cGUgZmlsZV9saW5lID0geyBmaWxlX2xpbmVfbmFtZTogc3RyaW5nIG9wdGlvbjsgZmlsZV9saW5lX3RleHQ6IHN0cmluZyB9XG5cbnR5cGUgdCA9XG4gIHwgRElOIG9mIHN0cmluZyAqIGRpblxuICB8IERlbHRhQWN0aXZpdGllcyBvZiBpbnQgKiAoaW50ICogKGZsb2F0ICogZmxvYXQpKSBsaXN0XG4gIHwgUGxvdCBvZiBOYnIudCBhcnJheSAgKCoqIE11c3QgaGF2ZSBsZW5ndGggPj0gMSAoYXQgbGVhc3QgW1RdIG9yIFtFXSkgKilcbiAgfCBQcmludCBvZiBmaWxlX2xpbmVcbiAgfCBUcmFjZVN0ZXAgb2YgVHJhY2Uuc3RlcFxuICB8IFNuYXBzaG90IG9mIHN0cmluZyAqIHNuYXBzaG90XG4gIHwgTG9nIG9mIHN0cmluZ1xuICB8IFNwZWNpZXMgb2Ygc3RyaW5nICogZmxvYXQgKiBVc2VyX2dyYXBoLmNvbm5lY3RlZF9jb21wb25lbnRcbiAgfCBXYXJuaW5nIG9mIExvYy50IG9wdGlvbiAqIChGb3JtYXQuZm9ybWF0dGVyIC0+IHVuaXQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY3JlYXRlX2ZsdXggZW52IGNvdW50ZXIgZGluX2tpbmQgPVxuICBsZXQgc2l6ZSA9IE1vZGVsLm5iX3N5bnRhY3RpY19ydWxlcyBlbnYgKyAxIGluXG4gIHtcbiAgICBEYXRhLmRpbl9raW5kO1xuICAgIERhdGEuZGluX3N0YXJ0ID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcjtcbiAgICBEYXRhLmRpbl9oaXRzID0gQXJyYXkubWFrZSBzaXplIDA7XG4gICAgRGF0YS5kaW5fZmx1eHMgPSBBcnJheS5tYWtlX21hdHJpeCBzaXplIHNpemUgMC47XG4gIH1cblxubGV0IGluY3JfZmx1eF9mbHV4IG9mX3J1bGUgb25fcnVsZSB2IGZsdXggPVxuICBmbHV4LkRhdGEuZGluX2ZsdXhzLihvZl9ydWxlKS4ob25fcnVsZSkgPC1cbiAgICBmbHV4LkRhdGEuZGluX2ZsdXhzLihvZl9ydWxlKS4ob25fcnVsZSkgKy4gdlxuXG5sZXQgaW5jcl9mbHV4X2hpdCBvZl9ydWxlIGZsdXggPVxuICBmbHV4LkRhdGEuZGluX2hpdHMuKG9mX3J1bGUpIDwtIHN1Y2MgZmx1eC5EYXRhLmRpbl9oaXRzLihvZl9ydWxlKVxuXG5sZXQgc3RvcF9mbHV4IGVudiBjb3VudGVyIGRpbl9kYXRhID1cbiAgbGV0IHNpemUgPSBNb2RlbC5uYl9zeW50YWN0aWNfcnVsZXMgZW52ICsgMSBpblxuICBsZXQgZGluX3J1bGVzID1cbiAgICBBcnJheS5pbml0IHNpemUgKGZ1biB4IC0+XG4gICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKE1vZGVsLnByaW50X2FzdF9ydWxlIH5ub0NvdW50ZXJzOmZhbHNlIH5lbnYpIHgpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggZGluX2RhdGEuRGF0YS5kaW5fa2luZCB3aXRoXG4gICAgfCBQcmltaXRpdmVzLkFCU09MVVRFIC0+ICgpXG4gICAgfCBQcmltaXRpdmVzLlJFTEFUSVZFIHwgUHJpbWl0aXZlcy5QUk9CQUJJTElUWSAtPlxuICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgKGZ1biBpIC0+XG4gICAgICAgICAgQXJyYXkuaXRlcmkgKGZ1biBqIHggLT5cbiAgICAgICAgICAgICAgZGluX2RhdGEuRGF0YS5kaW5fZmx1eHMuKGkpLihqKSA8LVxuICAgICAgICAgICAgICAgIChpZiBkaW5fZGF0YS5EYXRhLmRpbl9oaXRzLihpKSA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgIHhcbiAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgIHggLy4gZmxvYXRfb2ZfaW50IGRpbl9kYXRhLkRhdGEuZGluX2hpdHMuKGkpKSkpXG4gICAgICAgIGRpbl9kYXRhLkRhdGEuZGluX2ZsdXhzXG4gIGluXG4gIHsgRGF0YS5kaW5fcnVsZXM7IERhdGEuZGluX2RhdGE7IERhdGEuZGluX2VuZCA9IENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0ge1xuICAoKiBwYXQgLT4gc2V0IG9mIHJvb3RzICopXG4gIG9mX3BhdHRlcm5zOiBJbnRDb2xsZWN0aW9uLnQgUGF0dGVybi5PYnNNYXAudDtcbiAgKCogcGF0IC0+IGNjIC0+IHNldCBvZiByb290cyAqKVxuICBvZl91bmFyeV9wYXR0ZXJuczogTW9kcy5JbnRTZXQudCBNb2RzLkludE1hcC50IFBhdHRlcm4uT2JzTWFwLnQ7XG59XG5cbnR5cGUgbW9kX2Njc19jYWNoZSA9IChpbnQsIHVuaXQpIEhhc2h0YmwudFxuXG5sZXQgZW1wdHkgZW52ID1cbiAge1xuICAgIG9mX3BhdHRlcm5zID1cbiAgICAgIFBhdHRlcm4uRW52Lm5ld19vYnNfbWFwIChNb2RlbC5kb21haW4gZW52KSAoZnVuIF8gLT5cbiAgICAgICAgICBJbnRDb2xsZWN0aW9uLmNyZWF0ZSA2NCk7XG4gICAgb2ZfdW5hcnlfcGF0dGVybnMgPVxuICAgICAgUGF0dGVybi5FbnYubmV3X29ic19tYXAgKE1vZGVsLmRvbWFpbiBlbnYpIChmdW4gXyAtPiBNb2RzLkludE1hcC5lbXB0eSk7XG4gIH1cblxubGV0IGluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gc3RhdGUgcGF0dGVybiBtYXRjaGluZ3MgPVxuICBpZiBJbnRDb2xsZWN0aW9uLmlzX2VtcHR5IChQYXR0ZXJuLk9ic01hcC5nZXQgc3RhdGUub2ZfcGF0dGVybnMgcGF0dGVybikgdGhlblxuICAgIFBhdHRlcm4uT2JzTWFwLnNldCBzdGF0ZS5vZl9wYXR0ZXJucyBwYXR0ZXJuIG1hdGNoaW5nc1xuXG5sZXQgYWRkX2ludHNldF9pbl9pbnRtYXAgaWQgc2V0IG1hcCA9XG4gIGlmIE1vZHMuSW50U2V0LmlzX2VtcHR5IHNldCB0aGVuXG4gICAgTW9kcy5JbnRNYXAucmVtb3ZlIGlkIG1hcFxuICBlbHNlXG4gICAgTW9kcy5JbnRNYXAuYWRkIGlkIHNldCBtYXBcblxuKCogQnJlYWsgYXBhcnQgY29ubmVjdGVkIGNvbXBvbmVudDpcbiAgIFVwZGF0ZSBcInJvb3RzIG9mIHVuYXJ5IHBhdHRlcm5zXCJcbiAgIEVhc3ksIEkgc2hvdWxkIG5vdCBoYXZlIHRvIHJld3JpdGUgdGhpcy5cbiAgIFNob3VsZCBjYWNoZXMgYmUgaGFuZGxlZCBhdCB0aGlzIGxldmVsID8gSSBkbyBudCB0aGluayBzb1xuICAgYW5kIEkgd2lsbCBwcm9iYWJseSBjbGVhbiB0aGlzLlxuKilcbmxldCBicmVha19hcGFydF9jYyBzdGF0ZSBlZGdlcyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgKG9yaWdpbl9jYywgbmV3X2NjKSAtPlxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBtb2RfY29ubmVjdGl2aXR5X3N0b3JlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIG1vZF9jb25uIC0+XG4gICAgICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBtb2RfY29ubiBuZXdfY2MgKCkgaW5cbiAgICAgICAgSGFzaHRibC5yZXBsYWNlIG1vZF9jb25uIG9yaWdpbl9jYyAoKVxuICAgIGluXG4gICAgUGF0dGVybi5PYnNNYXAuaXRlcmlcbiAgICAgIChmdW4gY2NfaWQgY2NfbWFwIC0+XG4gICAgICAgIGxldCBvc2V0ID1cbiAgICAgICAgICBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgb3JpZ2luX2NjIGNjX21hcFxuICAgICAgICBpblxuICAgICAgICBpZiBub3QgKE1vZHMuSW50U2V0LmlzX2VtcHR5IG9zZXQpIHRoZW4gKFxuICAgICAgICAgIGxldCBuc2V0LCBvc2V0JyA9XG4gICAgICAgICAgICBNb2RzLkludFNldC5wYXJ0aXRpb25cbiAgICAgICAgICAgICAgKGZ1biB4IC0+IEVkZ2VzLmdldF9jb25uZWN0ZWRfY29tcG9uZW50IHggZWRnZXMgPSBTb21lIG5ld19jYylcbiAgICAgICAgICAgICAgb3NldFxuICAgICAgICAgIGluXG4gICAgICAgICAgUGF0dGVybi5PYnNNYXAuc2V0IHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zIGNjX2lkXG4gICAgICAgICAgICAoYWRkX2ludHNldF9pbl9pbnRtYXAgbmV3X2NjIG5zZXRcbiAgICAgICAgICAgICAgIChhZGRfaW50c2V0X2luX2ludG1hcCBvcmlnaW5fY2Mgb3NldCcgY2NfbWFwKSlcbiAgICAgICAgKSlcbiAgICAgIHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zXG5cbigqIFNhbWU6IG5vdCB2ZXJ5IHN1YnRsZS4gWW91IGp1c3QgcHJvcGFnYXRlLiAqKVxubGV0IG1lcmdlX2NjIHN0YXRlID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSAoY2MxLCBjYzIpIC0+XG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIG1vZF9jb25uZWN0aXZpdHlfc3RvcmUgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgbW9kX2Nvbm5lY3Rpdml0eSAtPlxuICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbW9kX2Nvbm5lY3Rpdml0eSBjYzIgKCkgaW5cbiAgICAgICAgSGFzaHRibC5yZXBsYWNlIG1vZF9jb25uZWN0aXZpdHkgY2MxICgpXG4gICAgaW5cbiAgICBQYXR0ZXJuLk9ic01hcC5pdGVyaVxuICAgICAgKGZ1biBjY19pZCBjY19tYXAgLT5cbiAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAucG9wIGNjMiBjY19tYXAgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gLT4gKClcbiAgICAgICAgfCBTb21lIHNldDIsIGNjX21hcCcgLT5cbiAgICAgICAgICBsZXQgc2V0MSA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBjYzEgY2NfbWFwIGluXG4gICAgICAgICAgUGF0dGVybi5PYnNNYXAuc2V0IHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zIGNjX2lkXG4gICAgICAgICAgICAoYWRkX2ludHNldF9pbl9pbnRtYXAgY2MxIChNb2RzLkludFNldC51bmlvbiBzZXQxIHNldDIpIGNjX21hcCcpKVxuICAgICAgc3RhdGUub2ZfdW5hcnlfcGF0dGVybnNcblxuKCogTW9zdCBvZiB0aGUgY29kZSBpcyB0byBkZWFsIHdpdGggdW5hcnlfaW5zdGFuY2VzLlxuICAgRG9lcyBub3RoaW5nIGZhbmN5LlxuICAgQWxzbyB0YWtlcyB0aGUgY2FjaGUgYXMgYW4gYXJndW1lbnQgKilcbmxldCB1cGRhdGVfcm9vdHMgc3RhdGUgaXNfYWRkIHVuYXJ5X2NjcyBlZGdlcyBtb2RfY29ubmVjdGl2aXR5IHBhdHRlcm4gcm9vdCA9XG4gIGxldCB2YSA9IFBhdHRlcm4uT2JzTWFwLmdldCBzdGF0ZS5vZl9wYXR0ZXJucyBwYXR0ZXJuIGluXG4gIGxldCAoKSA9XG4gICAgKGlmIGlzX2FkZCB0aGVuXG4gICAgICAgSW50Q29sbGVjdGlvbi5hZGRcbiAgICAgZWxzZVxuICAgICAgIEludENvbGxlY3Rpb24ucmVtb3ZlKVxuICAgICAgcm9vdCB2YVxuICBpblxuICBpZiBQYXR0ZXJuLlNldC5tZW0gcGF0dGVybiB1bmFyeV9jY3MgdGhlbiAoXG4gICAgbGV0IGNjX21hcCA9IFBhdHRlcm4uT2JzTWFwLmdldCBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJucyBwYXR0ZXJuIGluXG4gICAgbGV0IGNjX2lkID1cbiAgICAgICgqIFRoZSBvbmx5IGNhc2Ugd2hlcmUgZ2V0X2Nvbm5lY3RlZF9jb21wb25lbnQgaXMgTm9uZSBpcyB3aGVuXG4gICAgICAgICBbbm90IGlzX2FkZF0gYW5kIFtyb290XSBoYXMganVzdCBiZWVuIGVyYXNlZCEgQnV0LCBqdXN0XG4gICAgICAgICBiZWZvcmUgYmVpbmcgZXJhc2VkLCB3ZSBrbm93IHRoYXQgYW4gYWdlbnQgaXMgaW4gaXRzIG93blxuICAgICAgICAgY29ubmVjdGVkIGNvbXBvbmVudC4uLiAqKVxuICAgICAgT3B0aW9uX3V0aWwudW5zb21lIHJvb3QgKEVkZ2VzLmdldF9jb25uZWN0ZWRfY29tcG9uZW50IHJvb3QgZWRnZXMpXG4gICAgaW5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbW9kX2Nvbm5lY3Rpdml0eSBjY19pZCAoKSBpblxuICAgIGxldCBzZXQgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgY2NfaWQgY2NfbWFwIGluXG4gICAgbGV0IHNldCcgPVxuICAgICAgKGlmIGlzX2FkZCB0aGVuXG4gICAgICAgICBNb2RzLkludFNldC5hZGRcbiAgICAgICBlbHNlXG4gICAgICAgICBNb2RzLkludFNldC5yZW1vdmUpXG4gICAgICAgIHJvb3Qgc2V0XG4gICAgaW5cbiAgICBsZXQgY2NfbWFwJyA9IGFkZF9pbnRzZXRfaW5faW50bWFwIGNjX2lkIHNldCcgY2NfbWFwIGluXG4gICAgUGF0dGVybi5PYnNNYXAuc2V0IHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zIHBhdHRlcm4gY2NfbWFwJ1xuICApXG5cbmxldCBudW1iZXIgciBwYXQgPSBJbnRDb2xsZWN0aW9uLnNpemUgKFBhdHRlcm4uT2JzTWFwLmdldCByLm9mX3BhdHRlcm5zIHBhdClcblxubGV0IHByaW50X2luamVjdGlvbnMgfm5vQ291bnRlcnMgP2RvbWFpbiBmIHJvb3RzX29mX3BhdHRlcm5zID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFAXVwiXG4gICAgKFBhdHRlcm4uT2JzTWFwLnByaW50IFBwLnNwYWNlIChmdW4gcGF0dGVybiBmIHJvb3RzIC0+XG4gICAgICAgICBpZiBJbnRDb2xsZWN0aW9uLnNpemUgcm9vdHMgPiAwIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbIyBAWyVhQF0gPT0+QCBAWyVhQF1AXVwiXG4gICAgICAgICAgICAgKFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZDp0cnVlKVxuICAgICAgICAgICAgIHBhdHRlcm4gSW50Q29sbGVjdGlvbi5wcmludCByb290cykpXG4gICAgcm9vdHNfb2ZfcGF0dGVybnNcblxubGV0IHByaW50X3VuYXJ5X2luamVjdGlvbnMgfm5vQ291bnRlcnMgP2RvbWFpbiBmIHJvb3RzX29mX3BhdHRlcm5zID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGhvdj4lYUBdXCJcbiAgICAoUGF0dGVybi5PYnNNYXAucHJpbnQgUHAuc3BhY2UgKGZ1biBwYXR0ZXJuIGYgcm9vdF9tYXBzIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFsjIEBbJWFAXSA9PT5AIEBbJWFAXUBdXCJcbiAgICAgICAgICAgKFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZDp0cnVlKVxuICAgICAgICAgICBwYXR0ZXJuXG4gICAgICAgICAgIChQcC5zZXQgTW9kcy5JbnRNYXAuYmluZGluZ3MgUHAuc3BhY2UgKGZ1biBmIChfY2NfaWQsIHJvb3RzKSAtPlxuICAgICAgICAgICAgICAgIE1vZHMuSW50U2V0LnByaW50IGYgcm9vdHMpKVxuICAgICAgICAgICByb290X21hcHMpKVxuICAgIHJvb3RzX29mX3BhdHRlcm5zXG5cbmxldCBkZWJ1Z19wcmludCBmIHN0YXRlID1cbiAgbGV0IG5vQ291bnRlcnMgPSB0cnVlIGluXG4gIGxldCBkb21haW4gPSBOb25lIGluXG4gIGxldCAoKSA9IHByaW50X2luamVjdGlvbnMgfm5vQ291bnRlcnMgP2RvbWFpbiBmIHN0YXRlLm9mX3BhdHRlcm5zIGluXG4gIHByaW50X3VuYXJ5X2luamVjdGlvbnMgfm5vQ291bnRlcnMgP2RvbWFpbiBmIHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zXG5cbigqIFVzZWZ1bCBzaG9ydGN1dHMgKilcblxubGV0IG9mX3BhdHRlcm4gcGF0X2lkIHN0YXRlID1cbiAgdHJ5IFBhdHRlcm4uT2JzTWFwLmdldCBzdGF0ZS5vZl9wYXR0ZXJucyBwYXRfaWRcbiAgd2l0aCBOb3RfZm91bmQgLT4gSW50Q29sbGVjdGlvbi5jcmVhdGUgMVxuXG5sZXQgb2ZfdW5hcnlfcGF0dGVybiBwYXRfaWQgc3RhdGUgPVxuICB0cnkgUGF0dGVybi5PYnNNYXAuZ2V0IHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zIHBhdF9pZFxuICB3aXRoIE5vdF9mb3VuZCAtPiBNb2RzLkludE1hcC5lbXB0eVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0ge1xuICAoKiBGb3IgY291bnRlcmZhY3R1YWwgc2ltdWxhdGlvbiwgdGhlcmUgd291bGQgYmUgdHdvIG9mIHRoZXNlLiAqKVxuICByb290czogUm9vdHMudDtcbn1cblxudHlwZSBtZXNzYWdlID0gdW5pdFxuXG5sZXQgcmVjZWl2ZV9tZXNzYWdlIF8gc3QgPSBzdFxubGV0IGVtcHR5IGVudiA9IHsgcm9vdHMgPSBSb290cy5lbXB0eSBlbnYgfVxuXG5sZXQgaW5jb3Jwb3JhdGVfZXh0cmFfcGF0dGVybiBzdGF0ZSBwYXR0ZXJuIG1hdGNoaW5ncyA9XG4gIFJvb3RzLmluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gc3RhdGUucm9vdHMgcGF0dGVybiBtYXRjaGluZ3NcblxubGV0IGJyZWFrX2FwYXJ0X2NjIHN0YXRlIGVkZ2VzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlIGNjcyA9XG4gIFJvb3RzLmJyZWFrX2FwYXJ0X2NjIHN0YXRlLnJvb3RzIGVkZ2VzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlIGNjc1xuXG5sZXQgbWVyZ2VfY2Mgc3RhdGUgP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgY2NzID1cbiAgUm9vdHMubWVyZ2VfY2Mgc3RhdGUucm9vdHMgP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgY2NzXG5cbmxldCB1cGRhdGVfcm9vdHMgc3RhdGUgaXNfYWRkIHVuYXJ5X2NjcyBlZGdlcyBtb2RfY29ubmVjdGl2aXR5IHBhdHRlcm4gcm9vdCA9XG4gIFJvb3RzLnVwZGF0ZV9yb290cyBzdGF0ZS5yb290cyBpc19hZGQgdW5hcnlfY2NzIGVkZ2VzIG1vZF9jb25uZWN0aXZpdHkgcGF0dGVyblxuICAgIHJvb3RcblxuKCoqIHsyIENoZWNraW5nIGluc3RhbmNlc30gKilcblxubGV0IGlzX3ZhbGlkIHN0YXRlIHBhdCByb290ID1cbiAgSW50Q29sbGVjdGlvbi5tZW0gcm9vdCAoUm9vdHMub2ZfcGF0dGVybiBwYXQgc3RhdGUucm9vdHMpXG5cbigqKiB7MiBDb21wdXRlIHRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIH0gKilcblxubGV0IG51bWJlcl9vZl9pbnN0YW5jZXMgP3J1bGVfaWQ6XyBzdCBwYXRzID1cbiAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgcGF0dGVybiAtPiBhY2MgKiBSb290cy5udW1iZXIgc3Qucm9vdHMgcGF0dGVybilcbiAgICAxIHBhdHNcblxubGV0IG51bWJlcl9vZl91bmFyeV9pbnN0YW5jZXNfaW5fY2MgP3J1bGVfaWQ6XyBzdCAocGF0MSwgcGF0MikgPVxuICBsZXQgbWFwMSA9IFJvb3RzLm9mX3VuYXJ5X3BhdHRlcm4gcGF0MSBzdC5yb290cyBpblxuICBsZXQgbWFwMiA9IFJvb3RzLm9mX3VuYXJ5X3BhdHRlcm4gcGF0MiBzdC5yb290cyBpblxuICBmdW4gY2MgLT5cbiAgICBsZXQgc2V0MSA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBjYyBtYXAxIGluXG4gICAgbGV0IHNldDIgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgY2MgbWFwMiBpblxuICAgIE1vZHMuSW50U2V0LnNpemUgc2V0MSAqIE1vZHMuSW50U2V0LnNpemUgc2V0MlxuXG4oKiB7NiBQaWNrIGluc3RhbmNlcyB9ICopXG5cbmxldCBwaWNrX3VuYXJ5X2luc3RhbmNlX2luX2NjID9ydWxlX2lkOl8gc3QgcmFuZG9tX3N0YXRlIChwYXQxLCBwYXQyKSA9XG4gIGxldCBtYXAxID0gUm9vdHMub2ZfdW5hcnlfcGF0dGVybiBwYXQxIHN0LnJvb3RzIGluXG4gIGxldCBtYXAyID0gUm9vdHMub2ZfdW5hcnlfcGF0dGVybiBwYXQyIHN0LnJvb3RzIGluXG4gIGZ1biBjYyAtPlxuICAgIGxldCByb290MSA9XG4gICAgICBPcHRpb25fdXRpbC51bnNvbWUgKC0xKVxuICAgICAgICAoTW9kcy5JbnRTZXQucmFuZG9tIHJhbmRvbV9zdGF0ZVxuICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGNjIG1hcDEpKVxuICAgIGluXG4gICAgbGV0IHJvb3QyID1cbiAgICAgIE9wdGlvbl91dGlsLnVuc29tZSAoLTEpXG4gICAgICAgIChNb2RzLkludFNldC5yYW5kb20gcmFuZG9tX3N0YXRlXG4gICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgY2MgbWFwMikpXG4gICAgaW5cbiAgICByb290MSwgcm9vdDJcblxuKCogV2UgcHJvdmlkZSBhIGN1c3RvbSBtb25hZGljIGZvbGQgZnVuY3Rpb24gdG8gYmVcbiAgIGxhenkgaW4gZHJhd2luZyByYW5kb20gbnVtYmVycyAqKVxubGV0IGZvbGRfcGlja2VkX2luc3RhbmNlID9ydWxlX2lkOl8gc3QgcmFuZG9tX3N0YXRlIHBhdHMgfmluaXQgZiA9XG4gIGxldCByZWMgYXV4IGkgYWNjID1cbiAgICBpZiBpID49IEFycmF5Lmxlbmd0aCBwYXRzIHRoZW5cbiAgICAgIGFjY1xuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYWNjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgYWNjIC0+XG4gICAgICAgIGxldCBwYXQgPSBwYXRzLihpKSBpblxuICAgICAgICBsZXQgcm9vdF9vcHQgPVxuICAgICAgICAgIEludENvbGxlY3Rpb24ucmFuZG9tIHJhbmRvbV9zdGF0ZSAoUm9vdHMub2ZfcGF0dGVybiBwYXQgc3Qucm9vdHMpXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCByb290X29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSByb290IC0+XG4gICAgICAgICAgbGV0IGFjYyA9IGYgaSBwYXQgcm9vdCBhY2MgaW5cbiAgICAgICAgICBhdXggKGkgKyAxKSBhY2MpXG4gICAgKVxuICBpblxuICBhdXggMCAoU29tZSBpbml0KVxuXG4oKiogezYgRW51bWVyYXRlIGluc3RhbmNlc30gKilcblxubGV0IHByb2Nlc3NfZXhjcCA9XG4gIGxldCBub19ub19ubyBfID0gZmFsc2UgaW5cbiAgZnVuIHBhdHMgLT4gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gbm9fbm9fbm8sIC0xXG4gICAgfCBTb21lIChwYXQsIHJvb3QpIC0+XG4gICAgICBsZXQgc2VudF90b19maXhlZF9yb290IGogPSBQYXR0ZXJuLmlzX2VxdWFsX2Nhbm9uaWNhbHMgcGF0IHBhdHMuKGopIGluXG4gICAgICBzZW50X3RvX2ZpeGVkX3Jvb3QsIHJvb3RcblxuKCogVGhpcyBpcyB0aGUgbGVnaXRpbWF0ZSBhbmQgZWZmaWNpZW50IHZlcnNpb24uICopXG5sZXQgZm9sZF9pbnN0YW5jZXMgP3J1bGVfaWQ6XyA/ZXhjcCBzdCBwYXRzIH5pbml0IGYgPVxuICBsZXQgc2VudF90b19leGNwX3Jvb3QsIGV4Y3Bfcm9vdCA9IHByb2Nlc3NfZXhjcCBwYXRzIGV4Y3AgaW5cblxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBwYXRzIGluXG4gIGxldCB0YWIgPSBBcnJheS5tYWtlIG4gKC0xKSBpblxuICBsZXQgcmVjIGF1eCBpIGFjYyA9XG4gICAgaWYgaSA+PSBuIHRoZW5cbiAgICAgIGYgdGFiIGFjY1xuICAgIGVsc2UgaWYgc2VudF90b19leGNwX3Jvb3QgaSB0aGVuIChcbiAgICAgIHRhYi4oaSkgPC0gZXhjcF9yb290O1xuICAgICAgYXV4IChpICsgMSkgYWNjXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBpdGhfcm9vdHMgPSBSb290cy5vZl9wYXR0ZXJuIHBhdHMuKGkpIHN0LnJvb3RzIGluXG4gICAgICBJbnRDb2xsZWN0aW9uLmZvbGRcbiAgICAgICAgKGZ1biByIGFjYyAtPlxuICAgICAgICAgIHRhYi4oaSkgPC0gcjtcbiAgICAgICAgICBhdXggKGkgKyAxKSBhY2MpXG4gICAgICAgIGl0aF9yb290cyBhY2NcbiAgICApXG4gIGluXG4gIGF1eCAwIGluaXRcblxubGV0IG1hcF9mb2xkMiBtYXAxIG1hcDIgfmluaXQgZiA9XG4gIE1vZHMuSW50TWFwLm1vbmFkaWNfZm9sZDJfc3BhcnNlICgpICgpXG4gICAgKGZ1biAoKSAoKSBrZXkgeDEgeDIgYWNjIC0+ICgpLCBmIGtleSB4MSB4MiBhY2MpXG4gICAgbWFwMSBtYXAyIGluaXRcbiAgfD4gc25kXG5cbmxldCBmb2xkX3VuYXJ5X2luc3RhbmNlcyA/cnVsZV9pZDpfIHN0IChwYXQxLCBwYXQyKSB+aW5pdCBmID1cbiAgbGV0IG1hcDEgPSBSb290cy5vZl91bmFyeV9wYXR0ZXJuIHBhdDEgc3Qucm9vdHMgaW5cbiAgbGV0IG1hcDIgPSBSb290cy5vZl91bmFyeV9wYXR0ZXJuIHBhdDIgc3Qucm9vdHMgaW5cbiAgbWFwX2ZvbGQyIG1hcDEgbWFwMiB+aW5pdCAoZnVuIF8gc2V0MSBzZXQyIGFjYyAtPlxuICAgICAgTW9kcy5JbnRTZXQuZm9sZFxuICAgICAgICAoZnVuIHJvb3QxIGFjYyAtPlxuICAgICAgICAgIE1vZHMuSW50U2V0LmZvbGQgKGZ1biByb290MiBhY2MgLT4gZiAocm9vdDEsIHJvb3QyKSBhY2MpIHNldDIgYWNjKVxuICAgICAgICBzZXQxIGFjYylcblxuKCoqIHs2IERlYnVnIGZ1bmN0aW9uc30gKilcblxubGV0IGRlYnVnX3ByaW50IGYgc3RhdGUgPSBSb290cy5kZWJ1Z19wcmludCBmIHN0YXRlLnJvb3RzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgdmFsdWVfc3RhdGVfYWxnX29wIGNvdW50ZXIgPyh0aW1lID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcikgPSBmdW5jdGlvblxuICB8IE9wZXJhdG9yLkNQVVRJTUUgLT4gTmJyLkYgKFN5cy50aW1lICgpKVxuICB8IE9wZXJhdG9yLlRJTUVfVkFSIC0+IE5ici5GIHRpbWVcbiAgfCBPcGVyYXRvci5FVkVOVF9WQVIgLT4gTmJyLkkgKENvdW50ZXIuY3VycmVudF9ldmVudCBjb3VudGVyKVxuICB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSIC0+IE5ici5JIChDb3VudGVyLm5iX251bGxfZXZlbnQgY291bnRlcilcbiAgfCBPcGVyYXRvci5FTUFYX1ZBUiAtPlxuICAgIChtYXRjaCBDb3VudGVyLm1heF9ldmVudHMgY291bnRlciB3aXRoXG4gICAgfCBTb21lIG4gLT4gTmJyLkkgblxuICAgIHwgTm9uZSAtPiBOYnIuRiBpbmZpbml0eSlcbiAgfCBPcGVyYXRvci5UTUFYX1ZBUiAtPlxuICAgIChtYXRjaCBDb3VudGVyLm1heF90aW1lIGNvdW50ZXIgd2l0aFxuICAgIHwgU29tZSB0IC0+IE5ici5GIHRcbiAgICB8IE5vbmUgLT4gTmJyLkYgaW5maW5pdHkpXG5cbnR5cGUgKF8sIF8pIHN0YWNrID1cbiAgfCBSRVRVUk4gOiAoJ2EsICdhKSBzdGFja1xuICB8IFRPX0VYRUNfQUxHIDpcbiAgICAgIE9wZXJhdG9yLmJpbl9hbGdfb3AgKiBQcmltaXRpdmVzLmFsZ19leHByICogKE5ici50LCAnYSkgc3RhY2tcbiAgICAgIC0+IChOYnIudCwgJ2EpIHN0YWNrXG4gIHwgVE9fRVhFQ19DT01QIDpcbiAgICAgIE9wZXJhdG9yLmNvbXBhcmVfb3AgKiBQcmltaXRpdmVzLmFsZ19leHByICogKGJvb2wsICdhKSBzdGFja1xuICAgICAgLT4gKE5ici50LCAnYSkgc3RhY2tcbiAgfCBUT19FWEVDX0lGIDpcbiAgICAgIFByaW1pdGl2ZXMuYWxnX2V4cHIgKiBQcmltaXRpdmVzLmFsZ19leHByICogKE5ici50LCAnYSkgc3RhY2tcbiAgICAgIC0+IChib29sLCAnYSkgc3RhY2tcbiAgfCBUT19FWEVDX0JPT0wgOlxuICAgICAgT3BlcmF0b3IuYmluX2Jvb2xfb3BcbiAgICAgICogKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5ib29sXG4gICAgICAqIChib29sLCAnYSkgc3RhY2tcbiAgICAgIC0+IChib29sLCAnYSkgc3RhY2tcbiAgfCBUT19DT01QVVRFX0FMRyA6XG4gICAgICBPcGVyYXRvci5iaW5fYWxnX29wICogTmJyLnQgKiAoTmJyLnQsICdhKSBzdGFja1xuICAgICAgLT4gKE5ici50LCAnYSkgc3RhY2tcbiAgfCBUT19DT01QVVRFX0NPTVAgOlxuICAgICAgT3BlcmF0b3IuY29tcGFyZV9vcCAqIE5ici50ICogKGJvb2wsICdhKSBzdGFja1xuICAgICAgLT4gKE5ici50LCAnYSkgc3RhY2tcbiAgfCBUT19DT01QVVRFX1VOIDogT3BlcmF0b3IudW5fYWxnX29wICogKE5ici50LCAnYSkgc3RhY2sgLT4gKE5ici50LCAnYSkgc3RhY2tcbiAgfCBUT19DT01QVVRFX0JPT0wgOiBPcGVyYXRvci51bl9ib29sX29wICogKGJvb2wsICdhKSBzdGFjayAtPiAoYm9vbCwgJ2EpIHN0YWNrXG5cbmxldCByZWMgZXhlY19hbGcgOlxuICAgIHR5cGUgYS5cbiAgICBDb3VudGVyLnQgLT5cbiAgICA/dGltZTpmbG9hdCAtPlxuICAgIGdldF9hbGc6KGludCAtPiBQcmltaXRpdmVzLmFsZ19leHByKSAtPlxuICAgIGdldF9taXg6KFBhdHRlcm4uaWQgYXJyYXkgbGlzdCAtPiBOYnIudCkgLT5cbiAgICBnZXRfdG9rOihpbnQgLT4gTmJyLnQpIC0+XG4gICAgKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5lIC0+XG4gICAgKE5ici50LCBhKSBzdGFjayAtPlxuICAgIGEgPVxuIGZ1biBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFsZyBzayAtPlxuICBtYXRjaCBhbGcgd2l0aFxuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFcbiAgICAgIChUT19FWEVDX0FMRyAob3AsIGIsIHNrKSlcbiAgfCBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCAoYSwgXykpIC0+XG4gICAgZXhlY19hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhIChUT19DT01QVVRFX1VOIChvcCwgc2spKVxuICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBvcCAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3Rva1xuICAgICAgKHZhbHVlX3N0YXRlX2FsZ19vcCBjb3VudGVyID90aW1lIG9wKVxuICAgICAgc2tcbiAgfCBBbGdfZXhwci5BTEdfVkFSIGkgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIChnZXRfYWxnIGkpIHNrXG4gIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgY2NzIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIChnZXRfbWl4IGNjcykgc2tcbiAgfCBBbGdfZXhwci5UT0tFTl9JRCBpIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIChnZXRfdG9rIGkpIHNrXG4gIHwgQWxnX2V4cHIuQ09OU1QgbiAtPiB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgbiBza1xuICB8IEFsZ19leHByLklGICgoY29uZCwgXyksICh5ZXMsIF8pLCAobm8sIF8pKSAtPlxuICAgIGV4ZWNfYm9vbCBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGNvbmRcbiAgICAgIChUT19FWEVDX0lGICh5ZXMsIG5vLCBzaykpXG4gIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoXCJDYW5ub3QgZXZhbHV0YXRlIGRlcml2YXRpdmVzIGluIGV4cHJlc3Npb25cIiwgTG9jLmR1bW15KSlcblxuYW5kIGV4ZWNfYm9vbCA6XG4gICAgdHlwZSBhLlxuICAgIENvdW50ZXIudCAtPlxuICAgID90aW1lOmZsb2F0IC0+XG4gICAgZ2V0X2FsZzooaW50IC0+IFByaW1pdGl2ZXMuYWxnX2V4cHIpIC0+XG4gICAgZ2V0X21peDooUGF0dGVybi5pZCBhcnJheSBsaXN0IC0+IE5ici50KSAtPlxuICAgIGdldF90b2s6KGludCAtPiBOYnIudCkgLT5cbiAgICAoUGF0dGVybi5pZCBhcnJheSBsaXN0LCBpbnQpIEFsZ19leHByLmJvb2wgLT5cbiAgICAoYm9vbCwgYSkgc3RhY2sgLT5cbiAgICBhID1cbiBmdW4gY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBleHByIHNrIC0+XG4gIG1hdGNoIGV4cHIgd2l0aFxuICB8IEFsZ19leHByLlRSVUUgLT4gd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIHRydWUgc2tcbiAgfCBBbGdfZXhwci5GQUxTRSAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBmYWxzZSBza1xuICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCAoYSwgXykpIC0+XG4gICAgZXhlY19ib29sIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYVxuICAgICAgKFRPX0NPTVBVVEVfQk9PTCAob3AsIHNrKSlcbiAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIGV4ZWNfYm9vbCBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFcbiAgICAgIChUT19FWEVDX0JPT0wgKG9wLCBiLCBzaykpXG4gIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIGV4ZWNfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYVxuICAgICAgKFRPX0VYRUNfQ09NUCAob3AsIGIsIHNrKSlcblxuYW5kIHdpdGhfdmFsdWUgOlxuICAgIHR5cGUgYSBiLlxuICAgIENvdW50ZXIudCAtPlxuICAgID90aW1lOmZsb2F0IC0+XG4gICAgZ2V0X2FsZzooaW50IC0+IFByaW1pdGl2ZXMuYWxnX2V4cHIpIC0+XG4gICAgZ2V0X21peDooUGF0dGVybi5pZCBhcnJheSBsaXN0IC0+IE5ici50KSAtPlxuICAgIGdldF90b2s6KGludCAtPiBOYnIudCkgLT5cbiAgICBhIC0+XG4gICAgKGEsIGIpIHN0YWNrIC0+XG4gICAgYiA9XG4gZnVuIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgbiAtPiBmdW5jdGlvblxuICB8IFJFVFVSTiAtPiBuXG4gIHwgVE9fRVhFQ19BTEcgKG9wLCBhbGcsIHNrKSAtPlxuICAgIGV4ZWNfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYWxnXG4gICAgICAoVE9fQ09NUFVURV9BTEcgKG9wLCBuLCBzaykpXG4gIHwgVE9fQ09NUFVURV9BTEcgKG9wLCBuMSwgc2spIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rXG4gICAgICAoTmJyLm9mX2Jpbl9hbGdfb3Agb3AgbjEgbilcbiAgICAgIHNrXG4gIHwgVE9fQ09NUFVURV9VTiAob3AsIHNrKSAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayAoTmJyLm9mX3VuX2FsZ19vcCBvcCBuKVxuICAgICAgc2tcbiAgfCBUT19FWEVDX0NPTVAgKG9wLCBhbGcsIHNrKSAtPlxuICAgIGV4ZWNfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYWxnXG4gICAgICAoVE9fQ09NUFVURV9DT01QIChvcCwgbiwgc2spKVxuICB8IFRPX0NPTVBVVEVfQ09NUCAob3AsIG4xLCBzaykgLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2tcbiAgICAgIChOYnIub2ZfY29tcGFyZV9vcCBvcCBuMSBuKVxuICAgICAgc2tcbiAgfCBUT19FWEVDX0lGICh5ZXMsIG5vLCBzaykgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rXG4gICAgICAoaWYgbiB0aGVuXG4gICAgICAgICB5ZXNcbiAgICAgICBlbHNlXG4gICAgICAgICBubylcbiAgICAgIHNrXG4gIHwgVE9fRVhFQ19CT09MIChPcGVyYXRvci5PUiwgXywgc2spIHdoZW4gbiAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayB0cnVlIHNrXG4gIHwgVE9fRVhFQ19CT09MIChPcGVyYXRvci5BTkQsIF8sIHNrKSB3aGVuIG5vdCBuIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGZhbHNlIHNrXG4gIHwgVE9fRVhFQ19CT09MICgoT3BlcmF0b3IuT1IgfCBPcGVyYXRvci5BTkQpLCBleHByLCBzaykgLT5cbiAgICBleGVjX2Jvb2wgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBleHByIHNrXG4gIHwgVE9fQ09NUFVURV9CT09MIChPcGVyYXRvci5OT1QsIHNrKSAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayAobm90IG4pIHNrXG5cbmxldCB2YWx1ZV9ib29sIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgZXhwciA9XG4gIGV4ZWNfYm9vbCBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGV4cHIgUkVUVVJOXG5cbmxldCB2YWx1ZV9hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhbGcgPVxuICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFsZyBSRVRVUk5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgcHJlY29tcHV0ZWQgPSB7XG4gIHVuYXJ5X3BhdHRlcm5zOiBQYXR0ZXJuLlNldC50O1xuICBhbHdheXNfb3V0ZGF0ZWQ6IE9wZXJhdG9yLkRlcFNldC50O1xufVxuXG5tb2R1bGUgTWFrZSAoSW5zdGFuY2VzIDogSW5zdGFuY2VzX3NpZy5TKSA9IHN0cnVjdFxuICB0eXBlIGV2ZW50X3ByZWRpY2F0ZSA9XG4gICAgaW50IG9wdGlvbiAtPlxuICAgIE1hdGNoaW5nLnQgLT5cbiAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24udGVzdCBsaXN0IC0+XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmFjdGlvbiBsaXN0IC0+XG4gICAgYm9vbFxuXG4gIHR5cGUgaW1wZXJhdGl2ZV9maWVsZHMgPSB7XG4gICAgcHJlY29tcHV0ZWQ6IHByZWNvbXB1dGVkO1xuICAgIGluc3RhbmNlczogSW5zdGFuY2VzLnQ7XG4gICAgdmFyaWFibGVzX2NhY2hlOiBOYnIudCBhcnJheTtcbiAgICB2YXJpYWJsZXNfb3ZlcndyaXRlOiBQcmltaXRpdmVzLmFsZ19leHByIG9wdGlvbiBhcnJheTtcbiAgICB0b2tlbnM6IE5ici50IGFycmF5O1xuICAgIGFjdGl2aXRpZXM6IFJhbmRvbV90cmVlLnRyZWU7XG4gICAgICAgICgqIHBhaXIgbnVtYmVycyBhcmUgcmVndWxhciBydWxlLCBvZGQgdW5hcnkgaW5zdGFuY2VzICopXG4gICAgcmFuZG9tX3N0YXRlOiBSYW5kb20uU3RhdGUudDtcbiAgICBzdG9yeV9tYWNoaW5lcnk6XG4gICAgICAoc3RyaW5nICgqb2JzIG5hbWUqKVxuICAgICAgKiBQYXR0ZXJuLmlkIGFycmF5XG4gICAgICAqIEluc3RhbnRpYXRpb24uYWJzdHJhY3QgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3QgbGlzdClcbiAgICAgIGxpc3RcbiAgICAgIFBhdHRlcm4uT2JzTWFwLnRcbiAgICAgICgqY3VycmVudGx5IHRyYWNrZWQgY2NzICopXG4gICAgICBvcHRpb247XG4gICAgc3BlY2llczpcbiAgICAgIChzdHJpbmcgKCpmaWxlbmFtZSopXG4gICAgICAqIFBhdHRlcm4uaWQgYXJyYXkgKCp3aXRoIG9ubHkgb25lIHBhdHRlcm4qKVxuICAgICAgKiBJbnN0YW50aWF0aW9uLmFic3RyYWN0IEluc3RhbnRpYXRpb24udGVzdCBsaXN0IGxpc3QpXG4gICAgICBsaXN0XG4gICAgICBQYXR0ZXJuLk9ic01hcC50O1xuICAgIGNoYW5nZWRfY29ubmVjdGl2aXR5OiAoaW50LCB1bml0KSBIYXNodGJsLnQ7XG4gICAgICAgICgqIHNldCBvZiBjY3MgdGhhdCBoYXZlIGNoYW5nZWQgKilcbiAgfVxuXG4gIHR5cGUgaW5zdGFuY2UgPVxuICAgIGJvb2xcbiAgICAqIGludFxuICAgICogKEthcHBhX3Rlcm1zLk1hdGNoaW5nLnQgKiBpbnQgbGlzdCAqIEthcHBhX3NpdGVfZ3JhcGhzLkVkZ2VzLnBhdGggb3B0aW9uKVxuICAgICAgb3B0aW9uXG5cbiAgdHlwZSB0ID0ge1xuICAgIG11dGFibGUgb3V0ZGF0ZWQ6IGJvb2w7XG4gICAgKCogV2l0aG91dCByZWN0YW5ndWxhciBhcHByb3hpbWF0aW9uICopXG4gICAgbWF0Y2hpbmdzX29mX3J1bGU6IChNYXRjaGluZy50ICogaW50IGxpc3QpIGxpc3QgTW9kcy5JbnRNYXAudDtcbiAgICB1bmFyeV9jYW5kaWRhdGVzOlxuICAgICAgKCogcnVsZV9pZCAtPiBsaXN0IG9mIG1hdGNoaW5ncyAqKVxuICAgICAgKE1hdGNoaW5nLnQgKiBpbnQgbGlzdCAqIEVkZ2VzLnBhdGggb3B0aW9uKSBsaXN0IE1vZHMuSW50TWFwLnQ7XG4gICAgKCogcnVsZSAtPiBjYyAtPiBudW1iZXJfaW5zdGFuY2VzIChhY3Rpdml0eSBwZXIgY2MpICopXG4gICAgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjOiBWYWxNYXAudCBNb2RzLkludE1hcC50O1xuICAgIGVkZ2VzOiBFZGdlcy50O1xuICAgIGltcDogaW1wZXJhdGl2ZV9maWVsZHM7XG4gICAgb3V0ZGF0ZWRfZWxlbWVudHM6IE9wZXJhdG9yLkRlcFNldC50O1xuICAgIGV2ZW50c190b19ibG9jazogZXZlbnRfcHJlZGljYXRlIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBnZXRfZWRnZXMgc3QgPSBzdC5lZGdlc1xuXG4gIGxldCBzdW1faW5zdGFuY2VzX251bWJlcnMgP3J1bGVfaWQgaW5zdHMgbCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWMgeCAtPiBhYyArIEluc3RhbmNlcy5udW1iZXJfb2ZfaW5zdGFuY2VzID9ydWxlX2lkIGluc3RzIHgpXG4gICAgICAwIGxcblxuICB0eXBlIHJlc3VsdCA9IENsYXNoIHwgQ29ycmVjdGVkIHwgQmxvY2tlZCB8IFN1Y2Nlc3Mgb2YgdFxuXG4gIGxldCByYXdfZ2V0X2FsZyBlbnYgb3ZlcndyIGkgPVxuICAgIG1hdGNoIG92ZXJ3ci4oaSkgd2l0aFxuICAgIHwgTm9uZSAtPiBNb2RlbC5nZXRfYWxnIGVudiBpXG4gICAgfCBTb21lIGV4cHIgLT4gZXhwclxuXG4gIGxldCB2YWx1ZV9ib29sIGNvdW50ZXIgc3RhdGUgZXhwciA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgRXhwcl9pbnRlcnByZXRlci52YWx1ZV9ib29sIGNvdW50ZXJcbiAgICAgIH5nZXRfYWxnOihmdW4gaSAtPiBBbGdfZXhwci5DT05TVCBzdGF0ZS5pbXAudmFyaWFibGVzX2NhY2hlLihpKSlcbiAgICAgIH5nZXRfbWl4OihmdW4gcGF0dGVybnMgLT5cbiAgICAgICAgTmJyLkkgKHN1bV9pbnN0YW5jZXNfbnVtYmVycyBzdGF0ZS5pbXAuaW5zdGFuY2VzIHBhdHRlcm5zKSlcbiAgICAgIH5nZXRfdG9rOihmdW4gaSAtPiBzdGF0ZS5pbXAudG9rZW5zLihpKSlcbiAgICAgIGV4cHJcblxuICBsZXQgdmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgYWxnID1cbiAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICBFeHByX2ludGVycHJldGVyLnZhbHVlX2FsZyBjb3VudGVyXG4gICAgICB+Z2V0X2FsZzooZnVuIGkgLT4gQWxnX2V4cHIuQ09OU1Qgc3RhdGUuaW1wLnZhcmlhYmxlc19jYWNoZS4oaSkpXG4gICAgICB+Z2V0X21peDooZnVuIHBhdHRlcm5zIC0+XG4gICAgICAgIE5ici5JIChzdW1faW5zdGFuY2VzX251bWJlcnMgc3RhdGUuaW1wLmluc3RhbmNlcyBwYXR0ZXJucykpXG4gICAgICB+Z2V0X3RvazooZnVuIGkgLT4gc3RhdGUuaW1wLnRva2Vucy4oaSkpXG4gICAgICBhbGdcblxuICBsZXQgcmVjb21wdXRlIGVudiBjb3VudGVyIHN0YXRlIGkgPVxuICAgIHN0YXRlLmltcC52YXJpYWJsZXNfY2FjaGUuKGkpIDwtXG4gICAgICB2YWx1ZV9hbGcgY291bnRlciBzdGF0ZSAocmF3X2dldF9hbGcgZW52IHN0YXRlLmltcC52YXJpYWJsZXNfb3ZlcndyaXRlIGkpXG5cbiAgbGV0IGFjdGl2aXR5IHN0YXRlID0gUmFuZG9tX3RyZWUudG90YWwgc3RhdGUuaW1wLmFjdGl2aXRpZXNcbiAgbGV0IGdldF9hY3Rpdml0eSBydWxlIHN0YXRlID0gUmFuZG9tX3RyZWUuZmluZCBydWxlIHN0YXRlLmltcC5hY3Rpdml0aWVzXG4gIGxldCBzZXRfYWN0aXZpdHkgcnVsZSB2IHN0YXRlID0gUmFuZG9tX3RyZWUuYWRkIHJ1bGUgdiBzdGF0ZS5pbXAuYWN0aXZpdGllc1xuICBsZXQgcGlja19ydWxlIHJ0IHN0YXRlID0gZnN0IChSYW5kb21fdHJlZS5yYW5kb20gcnQgc3RhdGUuaW1wLmFjdGl2aXRpZXMpXG5cbiAgbGV0IGluaXRpYWxfYWN0aXZpdHkgfm91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgPVxuICAgIE1vZGVsLmZvbGRfcnVsZXNcbiAgICAgIChmdW4gaSAoKSBydWxlIC0+XG4gICAgICAgIGlmIEFycmF5Lmxlbmd0aCBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgPSAwIHRoZW4gKFxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBOYnIudG9fZmxvYXQgQEAgdmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgKGZzdCBydWxlLlByaW1pdGl2ZXMucmF0ZSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAgICAgKCBTb21lIChzbmQgcnVsZS5QcmltaXRpdmVzLnJhdGUpLFxuICAgICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9Db3VudGVycyA9IGZhbHNlIGluXG5cbiAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJQcm9ibGVtYXRpYyBydWxlIHJhdGUgcmVwbGFjZWQgYnkgMFwiO1xuICAgICAgICAgICAgICAgICAgICAgS2FwcGFfcHJpbnRlci5lbGVtZW50YXJ5X3J1bGUgfmVudiB+bm9Db3VudGVycyBmIHJ1bGUgKSlcbiAgICAgICAgICB8IFNvbWUgcmF0ZSAtPiBzZXRfYWN0aXZpdHkgKDIgKiBpKSByYXRlIHN0YXRlXG4gICAgICAgICkpXG4gICAgICAoKSBlbnZcblxuICBsZXQgZW1wdHkgfm91dHB1dHMgfndpdGhfdHJhY2UgcmFuZG9tX3N0YXRlIGVudiBjb3VudGVyID1cbiAgICBsZXQgYWN0aXZpdHlfdHJlZSA9IFJhbmRvbV90cmVlLmNyZWF0ZSAoMiAqIE1vZGVsLm5iX3J1bGVzIGVudikgaW5cbiAgICBsZXQgdW5hcnlfcGF0dGVybnMgPSBNb2RlbC51bmFyeV9wYXR0ZXJucyBlbnYgaW5cbiAgICBsZXQgYWx3YXlzX291dGRhdGVkID1cbiAgICAgIGxldCBkZXBzX2luX3QsIGRlcHNfaW5fZSwgXywgXyA9IE1vZGVsLmFsbF9kZXBlbmRlbmNpZXMgZW52IGluXG4gICAgICBPcGVyYXRvci5EZXBTZXQudW5pb24gZGVwc19pbl90IGRlcHNfaW5fZVxuICAgIGluXG4gICAgbGV0IHdpdGhfY29ubmVjdGVkX2NvbXBvbmVudHMgPSBub3QgKFBhdHRlcm4uU2V0LmlzX2VtcHR5IHVuYXJ5X3BhdHRlcm5zKSBpblxuICAgIGxldCB2YXJpYWJsZXNfb3ZlcndyaXRlID0gQXJyYXkubWFrZSAoTW9kZWwubmJfYWxncyBlbnYpIE5vbmUgaW5cbiAgICBsZXQgdmFyaWFibGVzX2NhY2hlID0gQXJyYXkubWFrZSAoTW9kZWwubmJfYWxncyBlbnYpIE5ici56ZXJvIGluXG4gICAgbGV0IGNhbmQgPVxuICAgICAge1xuICAgICAgICBpbXAgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGl2aXRpZXMgPSBhY3Rpdml0eV90cmVlO1xuICAgICAgICAgICAgcHJlY29tcHV0ZWQgPSB7IHVuYXJ5X3BhdHRlcm5zOyBhbHdheXNfb3V0ZGF0ZWQgfTtcbiAgICAgICAgICAgIGluc3RhbmNlcyA9IEluc3RhbmNlcy5lbXB0eSBlbnY7XG4gICAgICAgICAgICB2YXJpYWJsZXNfb3ZlcndyaXRlO1xuICAgICAgICAgICAgdmFyaWFibGVzX2NhY2hlO1xuICAgICAgICAgICAgdG9rZW5zID0gQXJyYXkubWFrZSAoTW9kZWwubmJfdG9rZW5zIGVudikgTmJyLnplcm87XG4gICAgICAgICAgICByYW5kb21fc3RhdGU7XG4gICAgICAgICAgICBzdG9yeV9tYWNoaW5lcnkgPVxuICAgICAgICAgICAgICAoaWYgd2l0aF90cmFjZSB0aGVuXG4gICAgICAgICAgICAgICAgIFNvbWUgKFBhdHRlcm4uRW52Lm5ld19vYnNfbWFwIChNb2RlbC5kb21haW4gZW52KSAoZnVuIF8gLT4gW10pKVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBOb25lKTtcbiAgICAgICAgICAgIHNwZWNpZXMgPSBQYXR0ZXJuLkVudi5uZXdfb2JzX21hcCAoTW9kZWwuZG9tYWluIGVudikgKGZ1biBfIC0+IFtdKTtcbiAgICAgICAgICAgIGNoYW5nZWRfY29ubmVjdGl2aXR5ID0gSGFzaHRibC5jcmVhdGUgMzI7XG4gICAgICAgICAgfTtcbiAgICAgICAgb3V0ZGF0ZWQgPSBmYWxzZTtcbiAgICAgICAgbWF0Y2hpbmdzX29mX3J1bGUgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICAgICAgdW5hcnlfY2FuZGlkYXRlcyA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgICAgICBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICAgICAgZWRnZXMgPSBFZGdlcy5lbXB0eSB+d2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cztcbiAgICAgICAgb3V0ZGF0ZWRfZWxlbWVudHMgPSBhbHdheXNfb3V0ZGF0ZWQ7XG4gICAgICAgIGV2ZW50c190b19ibG9jayA9IE5vbmU7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgKCkgPSBUb29scy5pdGVyaSAocmVjb21wdXRlIGVudiBjb3VudGVyIGNhbmQpIChNb2RlbC5uYl9hbGdzIGVudikgaW5cbiAgICBsZXQgKCkgPSBpbml0aWFsX2FjdGl2aXR5IH5vdXRwdXRzIGVudiBjb3VudGVyIGNhbmQgaW5cbiAgICBjYW5kXG5cbiAgbGV0IGNvbmNyZXRlX2FjdGlvbnNfZm9yX2luY29tcGxldGVfaW5qIH5kZWJ1Z19tb2RlIHJ1bGUgbWF0Y2hpbmcgPVxuICAgIGxldCBhYnN0cmFjdF9hY3Rpb25zID1cbiAgICAgIHJ1bGUuUHJpbWl0aXZlcy5pbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICBpblxuICAgIGxldCBpbmogPSBtYXRjaGluZywgTW9kcy5JbnRNYXAuZW1wdHkgaW5cbiAgICBMaXN0X3V0aWwubWFwX29wdGlvblxuICAgICAgKEluc3RhbnRpYXRpb24udHJ5X2NvbmNyZXRpemVfYWN0aW9uIH5kZWJ1Z19tb2RlIGluailcbiAgICAgIGFic3RyYWN0X2FjdGlvbnNcblxuICBsZXQgY29uY3JldGVfdGVzdHMgfmRlYnVnX21vZGUgcnVsZSBtYXRjaGluZyA9XG4gICAgbGV0IGFic3RyYWN0X3Rlc3RzID1cbiAgICAgIHJ1bGUuUHJpbWl0aXZlcy5pbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLnRlc3RzIHw+IExpc3QuY29uY2F0XG4gICAgaW5cbiAgICBsZXQgaW5qID0gbWF0Y2hpbmcsIE1vZHMuSW50TWFwLmVtcHR5IGluXG4gICAgTGlzdC5tYXAgKEluc3RhbnRpYXRpb24uY29uY3JldGl6ZV90ZXN0IH5kZWJ1Z19tb2RlIGluaikgYWJzdHJhY3RfdGVzdHNcblxuICBsZXQgaXNfYmxvY2tlZCB+ZGVidWdfbW9kZSBzdGF0ZSA/cnVsZV9pZCBydWxlIG1hdGNoaW5nID1cbiAgICBtYXRjaCBzdGF0ZS5ldmVudHNfdG9fYmxvY2sgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSB0b19ibG9jayAtPlxuICAgICAgbGV0IGFjdGlvbnMgPVxuICAgICAgICBjb25jcmV0ZV9hY3Rpb25zX2Zvcl9pbmNvbXBsZXRlX2luaiB+ZGVidWdfbW9kZSBydWxlIG1hdGNoaW5nXG4gICAgICBpblxuICAgICAgbGV0IHRlc3RzID0gY29uY3JldGVfdGVzdHMgfmRlYnVnX21vZGUgcnVsZSBtYXRjaGluZyBpblxuICAgICAgdG9fYmxvY2sgcnVsZV9pZCBtYXRjaGluZyB0ZXN0cyBhY3Rpb25zXG5cbiAgbGV0IHNldF9ldmVudHNfdG9fYmxvY2sgcHJlZGljYXRlIHN0YXRlID1cbiAgICB7XG4gICAgICBzdGF0ZSB3aXRoXG4gICAgICBldmVudHNfdG9fYmxvY2sgPSBwcmVkaWNhdGU7XG4gICAgICBtYXRjaGluZ3Nfb2ZfcnVsZSA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgICAgdW5hcnlfY2FuZGlkYXRlcyA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgIH1cblxuICBsZXQgaW5zdGFuY2VfdG9fbWF0Y2hpbmcgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGluc3RhbmNlIHBhdHRlcm5zID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIGkgbWF0Y2hpbmcgcm9vdCAtPlxuICAgICAgICBtYXRjaCBtYXRjaGluZyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBtYXRjaGluZyAtPlxuICAgICAgICAgIE1hdGNoaW5nLnJlY29uc3RydWN0IH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBtYXRjaGluZyBpIHBhdHRlcm5zLihpKVxuICAgICAgICAgICAgcm9vdClcbiAgICAgIChTb21lIE1hdGNoaW5nLmVtcHR5KSBpbnN0YW5jZVxuXG4gIGxldCBhbGxfaW5qZWN0aW9ucyB+ZGVidWdfbW9kZSA/ZXhjcCA/dW5hcnlfcmF0ZSA/cnVsZV9pZCBzdGF0ZV9pbnN0cyBkb21haW5cbiAgICAgIGVkZ2VzIHBhdHRlcm5hID1cbiAgICBsZXQgb3V0ID1cbiAgICAgIEluc3RhbmNlcy5mb2xkX2luc3RhbmNlcyA/ZXhjcCA/cnVsZV9pZCBzdGF0ZV9pbnN0cyBwYXR0ZXJuYSB+aW5pdDpbXVxuICAgICAgICAoZnVuIGluc3RhbmNlIGFjYyAtPlxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBpbnN0YW5jZV90b19tYXRjaGluZyB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgaW5zdGFuY2UgcGF0dGVybmFcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgIHwgU29tZSBtYXRjaGluZyAtPlxuICAgICAgICAgICAgbGV0IHJldl9yb290cyA9IEFycmF5LmZvbGRfbGVmdCAoZnVuIHQgaCAtPiBoIDo6IHQpIFtdIGluc3RhbmNlIGluXG4gICAgICAgICAgICAobWF0Y2hpbmcsIHJldl9yb290cykgOjogYWNjKVxuICAgIGluXG4gICAgbWF0Y2ggdW5hcnlfcmF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IG91dFxuICAgIHwgU29tZSAoXywgTm9uZSkgLT5cbiAgICAgIExpc3QuZmlsdGVyXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgXywgWyByMTsgcjIgXSAtPiBub3QgKEVkZ2VzLmluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudCByMSByMiBlZGdlcylcbiAgICAgICAgICB8IF8sIF8gLT4gZmFsc2UpXG4gICAgICAgIG91dFxuICAgIHwgU29tZSAoXywgKFNvbWUgXyBhcyBtYXhfZGlzdGFuY2UpKSAtPlxuICAgICAgTGlzdC5maWx0ZXJcbiAgICAgICAgKGZ1biAoaW5qLCBfKSAtPlxuICAgICAgICAgIGxldCBub2RlcyA9IE1hdGNoaW5nLmVsZW1lbnRzX3dpdGhfdHlwZXMgZG9tYWluIHBhdHRlcm5hIGluaiBpblxuICAgICAgICAgIE5vbmUgPSBFZGdlcy5hcmVfY29ubmVjdGVkID9tYXhfZGlzdGFuY2UgZWRnZXMgbm9kZXMuKDApIG5vZGVzLigxKSlcbiAgICAgICAgb3V0XG5cbiAgbGV0IHBvcF9leGFjdF9tYXRjaGluZ3MgbWF0Y2hpbmdzX29mX3J1bGUgcnVsZSA9XG4gICAgc25kIChNb2RzLkludE1hcC5wb3AgcnVsZSBtYXRjaGluZ3Nfb2ZfcnVsZSlcblxuICBsZXQgcGlja19hX3J1bGVfaW5zdGFuY2UgfmRlYnVnX21vZGUgc3RhdGUgcmFuZG9tX3N0YXRlIGRvbWFpbiBlZGdlcyA/cnVsZV9pZFxuICAgICAgcnVsZSA9XG4gICAgbGV0IGZyb21fcGF0dGVybnMgKCkgPVxuICAgICAgbGV0IHBhdHMgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgaW5cbiAgICAgIEluc3RhbmNlcy5mb2xkX3BpY2tlZF9pbnN0YW5jZSA/cnVsZV9pZCBzdGF0ZS5pbXAuaW5zdGFuY2VzIHJhbmRvbV9zdGF0ZVxuICAgICAgICBwYXRzIH5pbml0OihNYXRjaGluZy5lbXB0eSwgW10sIE5vbmUpXG4gICAgICAgIChmdW4gaWQgcGF0dGVybiByb290IChpbmosIHJldl9yb290cywgXykgLT5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTWF0Y2hpbmcucmVjb25zdHJ1Y3QgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGluaiBpZCBwYXR0ZXJuIHJvb3RcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgaW5qJyAtPiBTb21lIChpbmonLCByb290IDo6IHJldl9yb290cywgTm9uZSkpXG4gICAgaW5cbiAgICBtYXRjaCBydWxlX2lkIHdpdGhcbiAgICB8IE5vbmUgLT4gZnJvbV9wYXR0ZXJucyAoKVxuICAgIHwgU29tZSBpZCAtPlxuICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIHN0YXRlLm1hdGNoaW5nc19vZl9ydWxlIHdpdGhcbiAgICAgIHwgU29tZSBbXSAtPiBOb25lXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBsZXQgYSwgYiA9IExpc3RfdXRpbC5yYW5kb20gcmFuZG9tX3N0YXRlIGwgaW5cbiAgICAgICAgU29tZSAoYSwgYiwgTm9uZSlcbiAgICAgIHwgTm9uZSAtPiBmcm9tX3BhdHRlcm5zICgpKVxuXG4gIGxldCBhZGp1c3RfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgP3VuYXJ5X3JhdGUgc3RhdGUgZG9tYWluIGVkZ2VzXG4gICAgICBjY3MgcnVsZSA9XG4gICAgbGV0IG1hdGNoZXMgPVxuICAgICAgYWxsX2luamVjdGlvbnMgfmRlYnVnX21vZGUgP3VuYXJ5X3JhdGUgfnJ1bGVfaWQgc3RhdGUuaW1wLmluc3RhbmNlcyBkb21haW5cbiAgICAgICAgZWRnZXMgY2NzXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hlcyA9XG4gICAgICBpZiBzdGF0ZS5ldmVudHNfdG9fYmxvY2sgPSBOb25lIHRoZW5cbiAgICAgICAgbWF0Y2hlc1xuICAgICAgZWxzZVxuICAgICAgICBtYXRjaGVzXG4gICAgICAgIHw+IExpc3QuZmlsdGVyIChmdW4gKG1hdGNoaW5nLCBfKSAtPlxuICAgICAgICAgICAgICAgbm90IChpc19ibG9ja2VkIH5kZWJ1Z19tb2RlIHN0YXRlIH5ydWxlX2lkIHJ1bGUgbWF0Y2hpbmcpKVxuICAgIGluXG4gICAgKCBMaXN0Lmxlbmd0aCBtYXRjaGVzLFxuICAgICAge1xuICAgICAgICBzdGF0ZSB3aXRoXG4gICAgICAgIG1hdGNoaW5nc19vZl9ydWxlID1cbiAgICAgICAgICBNb2RzLkludE1hcC5hZGQgcnVsZV9pZCBtYXRjaGVzIHN0YXRlLm1hdGNoaW5nc19vZl9ydWxlO1xuICAgICAgfSApXG5cbiAgKCogV2l0aCByZWN0YW5ndWxhciBhcHByb3hpbWF0aW9uICopXG4gIGxldCBjb21wdXRlX3VuYXJ5X251bWJlciBpbnN0YW5jZXNcbiAgICAgIChuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MsIHVuYXJ5X2NhbmRpZGF0ZXMpIG1vZGlmaWVkX2NjcyBydWxlXG4gICAgICBydWxlX2lkID1cbiAgICBsZXQgcGF0MSA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMCkgaW5cbiAgICBsZXQgcGF0MiA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMSkgaW5cblxuICAgIGxldCBudW1iZXJfb2ZfdW5hcnlfaW5zdGFuY2VzX2luX2NjID1cbiAgICAgIEluc3RhbmNlcy5udW1iZXJfb2ZfdW5hcnlfaW5zdGFuY2VzX2luX2NjIH5ydWxlX2lkIGluc3RhbmNlcyAocGF0MSwgcGF0MilcbiAgICBpblxuXG4gICAgbGV0IG9sZF9wYWNrID1cbiAgICAgIE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBWYWxNYXAuZW1wdHkgcnVsZV9pZFxuICAgICAgICBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2NcbiAgICBpblxuICAgIGxldCBuZXdfcGFjayA9XG4gICAgICBIYXNodGJsLmZvbGRcbiAgICAgICAgKGZ1biBjYyAoKSBpX2luc3QgLT5cbiAgICAgICAgICBsZXQgbmV3X3YgPSBudW1iZXJfb2ZfdW5hcnlfaW5zdGFuY2VzX2luX2NjIGNjIGluXG4gICAgICAgICAgaWYgbmV3X3YgPSAwIHRoZW5cbiAgICAgICAgICAgIFZhbE1hcC5yZW1vdmUgY2MgaV9pbnN0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgVmFsTWFwLmFkZCBjYyBuZXdfdiBpX2luc3QpXG4gICAgICAgIG1vZGlmaWVkX2NjcyBvbGRfcGFja1xuICAgIGluXG4gICAgbGV0IHZhID0gVmFsTWFwLnRvdGFsIG5ld19wYWNrIGluXG4gICAgbGV0IG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYycgPVxuICAgICAgaWYgdmEgPSAwTCB0aGVuXG4gICAgICAgIE1vZHMuSW50TWFwLnJlbW92ZSBydWxlX2lkIG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jY1xuICAgICAgZWxzZVxuICAgICAgICBNb2RzLkludE1hcC5hZGQgcnVsZV9pZCBuZXdfcGFjayBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2NcbiAgICBpblxuICAgIGxldCBfLCB1bmFyeV9jYW5kaWRhdGVzJyA9XG4gICAgICAoKiBJbnZhbGlkYXRlcyB0aGUgY2FjaGUgKilcbiAgICAgIE1vZHMuSW50TWFwLnBvcCBydWxlX2lkIHVuYXJ5X2NhbmRpZGF0ZXNcbiAgICBpblxuICAgIHZhLCAobmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjJywgdW5hcnlfY2FuZGlkYXRlcycpXG5cbiAgbGV0IHBpY2tfYV91bmFyeV9ydWxlX2luc3RhbmNlIH5kZWJ1Z19tb2RlIHN0YXRlIHJhbmRvbV9zdGF0ZSBkb21haW4gZWRnZXNcbiAgICAgIH5ydWxlX2lkIHJ1bGUgPVxuICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHJ1bGVfaWQgc3RhdGUudW5hcnlfY2FuZGlkYXRlcyB3aXRoXG4gICAgfCBTb21lIGwgLT5cbiAgICAgIGxldCBpbmosIHJvb3RzLCBwYXRoID0gTGlzdF91dGlsLnJhbmRvbSByYW5kb21fc3RhdGUgbCBpblxuICAgICAgU29tZSAoaW5qLCByb290cywgcGF0aClcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBwYXQxID0gcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzLigwKSBpblxuICAgICAgbGV0IHBhdDIgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDEpIGluXG4gICAgICBsZXQgcGlja191bmFyeV9pbnN0YW5jZV9pbl9jYyA9XG4gICAgICAgIEluc3RhbmNlcy5waWNrX3VuYXJ5X2luc3RhbmNlX2luX2NjIH5ydWxlX2lkIHN0YXRlLmltcC5pbnN0YW5jZXNcbiAgICAgICAgICByYW5kb21fc3RhdGUgKHBhdDEsIHBhdDIpXG4gICAgICBpblxuICAgICAgbGV0IGNjX2lkID1cbiAgICAgICAgVmFsTWFwLnJhbmRvbSByYW5kb21fc3RhdGVcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFZhbE1hcC5lbXB0eSBydWxlX2lkXG4gICAgICAgICAgICAgc3RhdGUubmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjKVxuICAgICAgaW5cbiAgICAgIGxldCByb290MSwgcm9vdDIgPSBwaWNrX3VuYXJ5X2luc3RhbmNlX2luX2NjIGNjX2lkIGluXG5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiBGb3JtYXQucHJpbnRmIFwiQFtPbiByb290czpAICVpQCAlaUBdQC5cIiByb290MSByb290MlxuICAgICAgaW5cbiAgICAgIGxldCBwYXR0ZXJuMSA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMCkgaW5cbiAgICAgIGxldCBwYXR0ZXJuMiA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMSkgaW5cbiAgICAgIGxldCBpbmoxID1cbiAgICAgICAgTWF0Y2hpbmcucmVjb25zdHJ1Y3QgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIE1hdGNoaW5nLmVtcHR5IDAgcGF0dGVybjFcbiAgICAgICAgICByb290MVxuICAgICAgaW5cbiAgICAgIChtYXRjaCBpbmoxIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgaW5qIC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBNYXRjaGluZy5yZWNvbnN0cnVjdCB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgaW5qIDEgcGF0dGVybjIgcm9vdDJcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGlual9vdXQgLT4gU29tZSAoaW5qX291dCwgWyByb290Mjsgcm9vdDEgXSwgTm9uZSkpKVxuXG4gIGxldCBhZGp1c3RfdW5hcnlfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgP21heF9kaXN0YW5jZSBzdGF0ZVxuICAgICAgZG9tYWluIGdyYXBoIHBhdHMgcnVsZSA9XG4gICAgbGV0IHBhdHRlcm4xID0gcGF0cy4oMCkgaW5cbiAgICBsZXQgcGF0dGVybjIgPSBwYXRzLigxKSBpblxuICAgIGxldCBjYW5kcywgbGVuID1cbiAgICAgIEluc3RhbmNlcy5mb2xkX3VuYXJ5X2luc3RhbmNlcyB+cnVsZV9pZCBzdGF0ZS5pbXAuaW5zdGFuY2VzXG4gICAgICAgIChwYXR0ZXJuMSwgcGF0dGVybjIpIH5pbml0OihbXSwgMClcbiAgICAgICAgKGZ1biAocm9vdDEsIHJvb3QyKSAoKGxpc3QsIGxlbikgYXMgb3V0KSAtPlxuICAgICAgICAgIGxldCBpbmoxID1cbiAgICAgICAgICAgIE1hdGNoaW5nLnJlY29uc3RydWN0IH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBNYXRjaGluZy5lbXB0eSAwXG4gICAgICAgICAgICAgIHBhdHRlcm4xIHJvb3QxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBpbmoxIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gb3V0XG4gICAgICAgICAgfCBTb21lIGluaiAtPlxuICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICBNYXRjaGluZy5yZWNvbnN0cnVjdCB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggaW5qIDEgcGF0dGVybjJcbiAgICAgICAgICAgICAgICAgcm9vdDJcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gb3V0XG4gICAgICAgICAgICB8IFNvbWUgaW5qJyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbWF4X2Rpc3RhbmNlIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IChpbmonLCBbIHJvb3QyOyByb290MSBdLCBOb25lKSA6OiBsaXN0LCBzdWNjIGxlblxuICAgICAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAgIGxldCBub2RlcyA9IE1hdGNoaW5nLmVsZW1lbnRzX3dpdGhfdHlwZXMgZG9tYWluIHBhdHMgaW5qJyBpblxuICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgIEVkZ2VzLmFyZV9jb25uZWN0ZWQgP21heF9kaXN0YW5jZSBncmFwaCBub2Rlcy4oMCkgbm9kZXMuKDEpXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gb3V0XG4gICAgICAgICAgICAgICAgfCBTb21lIF8gYXMgcCAtPlxuICAgICAgICAgICAgICAgICAgaWYgaXNfYmxvY2tlZCB+ZGVidWdfbW9kZSBzdGF0ZSB+cnVsZV9pZCBydWxlIGluaicgdGhlblxuICAgICAgICAgICAgICAgICAgICBvdXRcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKGluaicsIFsgcm9vdDI7IHJvb3QxIF0sIHApIDo6IGxpc3QsIHN1Y2MgbGVuKSkpKVxuICAgIGluXG4gICAgbGV0IHVuYXJ5X2NhbmRpZGF0ZXMgPVxuICAgICAgaWYgbGVuID0gMCB0aGVuXG4gICAgICAgIE1vZHMuSW50TWFwLnJlbW92ZSBydWxlX2lkIHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXNcbiAgICAgIGVsc2VcbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHJ1bGVfaWQgY2FuZHMgc3RhdGUudW5hcnlfY2FuZGlkYXRlc1xuICAgIGluXG4gICAgbGVuLCB7IHN0YXRlIHdpdGggdW5hcnlfY2FuZGlkYXRlcyB9XG5cbiAgbGV0IHByaW50IGVudiBmIHN0YXRlID1cbiAgICBsZXQgc2lncyA9IE1vZGVsLnNpZ25hdHVyZXMgZW52IGluXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIChpLCBtaXgpIC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWluaXQ6ICVpIEBbPGg+JWFAXVwiIGkgVXNlcl9ncmFwaC5wcmludF9jYyBtaXgpKVxuICAgICAgKEVkZ2VzLmJ1aWxkX3VzZXJfc25hcHNob3QgfmRlYnVnX21vZGU6ZmFsc2UgfnJhdzpmYWxzZSBzaWdzIHN0YXRlLmVkZ2VzKVxuICAgICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gaSBmIGVsIC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWluaXQ6ICVhICVhXCIgTmJyLnByaW50IGVsXG4gICAgICAgICAgICAgKE1vZGVsLnByaW50X3Rva2VuIH5lbnYpIGkpKVxuICAgICAgc3RhdGUuaW1wLnRva2Vuc1xuXG4gIGxldCBkZWJ1Z19wcmludCBmIHN0YXRlID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUAsJWFALCVhQF1cIiBFZGdlcy5kZWJ1Z19wcmludCBzdGF0ZS5lZGdlc1xuICAgICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gaSBmIGVsIC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSB0b2tlbl8laVwiIE5ici5wcmludCBlbCBpKSlcbiAgICAgIHN0YXRlLmltcC50b2tlbnMgSW5zdGFuY2VzLmRlYnVnX3ByaW50IHN0YXRlLmltcC5pbnN0YW5jZXNcblxuICB0eXBlIHN0YXRzID0geyBtaXh0dXJlX3N0YXRzOiBFZGdlcy5zdGF0cyB9XG5cbiAgbGV0IHN0YXRzIHN0YXRlID0geyBtaXh0dXJlX3N0YXRzID0gRWRnZXMuc3RhdHMgc3RhdGUuZWRnZXMgfVxuXG4gIGxldCBwcmludF9zdGF0cyBmIHN0YXRlID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWkgYWdlbnRzXCIgKHN0YXRzIHN0YXRlKS5taXh0dXJlX3N0YXRzLkVkZ2VzLm5iX2FnZW50c1xuXG4gIGxldCBuZXdfcGxhY2UgZnJlZV9pZCAoaW5qX25vZGVzLCBpbmpfZnJlc2gpID0gZnVuY3Rpb25cbiAgICB8IE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nIF8gLT4gZmFpbHdpdGggXCJSdWxlX2ludGVycHJldGVyLm5ld19wbGFjZVwiXG4gICAgfCBNYXRjaGluZy5BZ2VudC5GcmVzaCAoXywgaWQpIC0+XG4gICAgICBpbmpfbm9kZXMsIE1vZHMuSW50TWFwLmFkZCBpZCBmcmVlX2lkIGlual9mcmVzaFxuXG4gIGxldCBhcHBseV9uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbiA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBpbnN0YW5jZXNcbiAgICAgIChzaWRlX2VmZmVjdHMsIGVkZ2VzKSA9IGZ1bmN0aW9uXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IChpZCwgXykgLT5cbiAgICAgIGxldCBlZGdlcycgPSBFZGdlcy5yZW1vdmVfYWdlbnQgaWQgZWRnZXMgaW5cbiAgICAgIHNpZGVfZWZmZWN0cywgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkICgoaWQsIF8pLCBzKSAtPlxuICAgICAgKCoobixzKS1ib3R0b20qKVxuICAgICAgbGV0IGVkZ2VzJyA9IEVkZ2VzLnJlbW92ZV9mcmVlIGlkIHMgZWRnZXMgaW5cbiAgICAgIHNpZGVfZWZmZWN0cywgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKChpZCwgXyksIHMpLCAoKGlkJywgXyksIHMnKSkgLT5cbiAgICAgIGxldCBlZGdlcycsIGNjX21vZGlmID0gRWRnZXMucmVtb3ZlX2xpbmsgaWQgcyBpZCcgcycgZWRnZXMgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEluc3RhbmNlcy5icmVha19hcGFydF9jYyBpbnN0YW5jZXMgZWRnZXMnID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICAgICAgY2NfbW9kaWZcbiAgICAgIGluXG4gICAgICBzaWRlX2VmZmVjdHMsIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyICgoKGlkLCBfKSwgcykgYXMgbikgLT5cbiAgICAgIChtYXRjaCBMaXN0LnBhcnRpdGlvbiAoZnVuIHggLT4geCA9IG4pIHNpZGVfZWZmZWN0cyB3aXRoXG4gICAgICB8IF8gOjogXywgc2lkZV9lZmZlY3RzJyAtPiBzaWRlX2VmZmVjdHMnLCBlZGdlc1xuICAgICAgfCBbXSwgXyAtPlxuICAgICAgICAobWF0Y2ggRWRnZXMubGlua19kZXN0aW5hdGlvbiBpZCBzIGVkZ2VzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHNpZGVfZWZmZWN0cywgRWRnZXMucmVtb3ZlX2ZyZWUgaWQgcyBlZGdlc1xuICAgICAgICB8IFNvbWUgKCgoaWQnLCBfKSBhcyBuYycpLCBzJykgLT5cbiAgICAgICAgICBsZXQgZWRnZXMnLCBjY19tb2RpZiA9IEVkZ2VzLnJlbW92ZV9saW5rIGlkIHMgaWQnIHMnIGVkZ2VzIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEluc3RhbmNlcy5icmVha19hcGFydF9jYyBpbnN0YW5jZXMgZWRnZXMnID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICAgICAgICAgIGNjX21vZGlmXG4gICAgICAgICAgaW5cbiAgICAgICAgICAobmMnLCBzJykgOjogc2lkZV9lZmZlY3RzLCBlZGdlcycpKVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJQb3NpdGl2ZUludGVybmFsaXplZCBpbiBuZWdhdGl2ZSB1cGRhdGVcIikpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkICgoaWQsIF8pLCBzKSAtPlxuICAgICAgbGV0IF8sIGVkZ2VzJyA9IEVkZ2VzLnJlbW92ZV9pbnRlcm5hbCBpZCBzIGVkZ2VzIGluXG4gICAgICBzaWRlX2VmZmVjdHMsIGVkZ2VzJ1xuXG4gIGxldCBhcHBseV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZSBzaWdzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICBpbnN0YW5jZXMgKGluajJncmFwaCwgc2lkZV9lZmZlY3RzLCBlZGdlcykgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBuIC0+XG4gICAgICBsZXQgbmMsIGluajJncmFwaCcsIGVkZ2VzJyA9XG4gICAgICAgIGxldCB0eSA9IE1hdGNoaW5nLkFnZW50LmdldF90eXBlIG4gaW5cbiAgICAgICAgbGV0IGlkLCBlZGdlcycgPSBFZGdlcy5hZGRfYWdlbnQgc2lncyB0eSBlZGdlcyBpblxuICAgICAgICAoaWQsIHR5KSwgbmV3X3BsYWNlIGlkIGluajJncmFwaCBuLCBlZGdlcydcbiAgICAgIGluXG4gICAgICAoaW5qMmdyYXBoJywgc2lkZV9lZmZlY3RzLCBlZGdlcycpLCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IG5jXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChuLCBzKSAtPlxuICAgICAgKCoobixzKS1ib3R0b20qKVxuICAgICAgbGV0ICgoaWQsIF8pIGFzIG5jKSA9IE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4gaW5cbiAgICAgICgqKEEsMjMpKilcbiAgICAgIGxldCBlZGdlcycgPSBFZGdlcy5hZGRfZnJlZSBpZCBzIGVkZ2VzIGluXG4gICAgICBsZXQgc2lkZV9lZmZlY3RzJyA9XG4gICAgICAgIExpc3RfdXRpbC5zbWFydF9maWx0ZXIgKGZ1biB4IC0+IHggPD4gKG5jLCBzKSkgc2lkZV9lZmZlY3RzXG4gICAgICBpblxuICAgICAgKGluajJncmFwaCwgc2lkZV9lZmZlY3RzJywgZWRnZXMnKSwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAobmMsIHMpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKG4sIHMpLCAobicsIHMnKSkgLT5cbiAgICAgIGxldCBuYyA9IE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4gaW5cbiAgICAgIGxldCBuYycgPSBNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuJyBpblxuICAgICAgbGV0IGVkZ2VzJywgbW9kaWZfY2MgPSBFZGdlcy5hZGRfbGluayBuYyBzIG5jJyBzJyBlZGdlcyBpblxuICAgICAgbGV0IHNpZGVfZWZmZWN0cycgPVxuICAgICAgICBMaXN0X3V0aWwuc21hcnRfZmlsdGVyXG4gICAgICAgICAgKGZ1biB4IC0+IHggPD4gKG5jLCBzKSAmJiB4IDw+IChuYycsIHMnKSlcbiAgICAgICAgICBzaWRlX2VmZmVjdHNcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBJbnN0YW5jZXMubWVyZ2VfY2MgaW5zdGFuY2VzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlIG1vZGlmX2NjIGluXG4gICAgICAoIChpbmoyZ3JhcGgsIHNpZGVfZWZmZWN0cycsIGVkZ2VzJyksXG4gICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgobmMsIHMpLCAobmMnLCBzJykpIClcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJOZWdhdGl2ZVdoYXRFdmVyIGluIHBvc2l0aXZlIHVwZGF0ZVwiKSlcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKG4sIHMsIGkpIC0+XG4gICAgICBsZXQgKChpZCwgXykgYXMgbmMpID0gTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbiBpblxuICAgICAgbGV0IGVkZ2VzJyA9IEVkZ2VzLmFkZF9pbnRlcm5hbCBpZCBzIGkgZWRnZXMgaW5cbiAgICAgICggKGluajJncmFwaCwgc2lkZV9lZmZlY3RzLCBlZGdlcycpLFxuICAgICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkIChuYywgcywgaSkgKVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJOZWdhdGl2ZUludGVybmFsaXplZCBpbiBwb3NpdGl2ZSB1cGRhdGVcIikpXG5cbiAgbGV0IGFwcGx5X2NvbmNyZXRlX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIHNpZ3MgP21vZF9jb25uZWN0aXZpdHlfc3RvcmVcbiAgICAgIGluc3RhbmNlcyBlZGdlcyA9IGZ1bmN0aW9uXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IChpZCwgdHkpIC0+XG4gICAgICBsZXQgXywgZWRnZXMnID0gRWRnZXMuYWRkX2FnZW50IH5pZCBzaWdzIHR5IGVkZ2VzIGluXG4gICAgICBlZGdlcydcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKChpZCwgXyksIHMpIC0+XG4gICAgICAoKihuLHMpLWJvdHRvbSopXG4gICAgICBsZXQgZWRnZXMnID0gRWRnZXMuYWRkX2ZyZWUgaWQgcyBlZGdlcyBpblxuICAgICAgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKG5jLCBzKSwgKG5jJywgcycpKSAtPlxuICAgICAgbGV0IGVkZ2VzJywgbW9kaWZfY2MgPSBFZGdlcy5hZGRfbGluayBuYyBzIG5jJyBzJyBlZGdlcyBpblxuICAgICAgbGV0ICgpID0gSW5zdGFuY2VzLm1lcmdlX2NjIGluc3RhbmNlcyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBtb2RpZl9jYyBpblxuICAgICAgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlV2hhdEV2ZXIgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiTmVnYXRpdmVXaGF0RXZlciBpbiBwb3NpdGl2ZSB1cGRhdGVcIikpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkICgoaWQsIF8pLCBzLCBpKSAtPlxuICAgICAgbGV0IGVkZ2VzJyA9IEVkZ2VzLmFkZF9pbnRlcm5hbCBpZCBzIGkgZWRnZXMgaW5cbiAgICAgIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJOZWdhdGl2ZUludGVybmFsaXplZCBpbiBwb3NpdGl2ZSB1cGRhdGVcIikpXG5cbiAgbGV0IG9ic19mcm9tX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBuYyAtPlxuICAgICAgTWF0Y2hpbmcub2JzZXJ2YWJsZXNfZnJvbV9hZ2VudCBkb21haW4gZWRnZXMgYWNjIG5jXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChuYywgcykgLT5cbiAgICAgICgqKG4scyktYm90dG9tKilcbiAgICAgIE1hdGNoaW5nLm9ic2VydmFibGVzX2Zyb21fZnJlZSB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjIG5jIHNcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgobmMsIHMpLCAobmMnLCBzJykpIC0+XG4gICAgICBNYXRjaGluZy5vYnNlcnZhYmxlc19mcm9tX2xpbmsgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGFjYyBuYyBzIG5jJyBzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCAobmMsIHMsIGkpIC0+XG4gICAgICBNYXRjaGluZy5vYnNlcnZhYmxlc19mcm9tX2ludGVybmFsIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgbmMgcyBpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkICgoKGlkLCBfKSBhcyBuYyksIHMpIC0+XG4gICAgICBsZXQgaSA9IEVkZ2VzLmdldF9pbnRlcm5hbCBpZCBzIGVkZ2VzIGluXG4gICAgICBNYXRjaGluZy5vYnNlcnZhYmxlc19mcm9tX2ludGVybmFsIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgbmMgcyBpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlV2hhdEV2ZXIgKCgoaWQsIF8pIGFzIG5jKSwgcykgLT5cbiAgICAgIChtYXRjaCBFZGdlcy5saW5rX2Rlc3RpbmF0aW9uIGlkIHMgZWRnZXMgd2l0aFxuICAgICAgfCBOb25lIC0+IE1hdGNoaW5nLm9ic2VydmFibGVzX2Zyb21fZnJlZSB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjIG5jIHNcbiAgICAgIHwgU29tZSAobmMnLCBzJykgLT5cbiAgICAgICAgTWF0Y2hpbmcub2JzZXJ2YWJsZXNfZnJvbV9saW5rIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgbmMgcyBuYycgcycpXG5cbiAgbGV0IG9ic19mcm9tX3RyYW5zZm9ybWF0aW9ucyB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgdHJhbnMgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAob2JzX2Zyb21fdHJhbnNmb3JtYXRpb24gfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzKVxuICAgICAgKChbXSwgT3BlcmF0b3IuRGVwU2V0LmVtcHR5KSwgTWF0Y2hpbmcuZW1wdHlfY2FjaGUpXG4gICAgICB0cmFuc1xuICAgIHw+IGZzdFxuXG4gIGxldCBwYXRoX3Rlc3RzIHBhdGggdGVzdHMgPVxuICAgIGxldCBrbm93bl9hZ2VudHMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIChpZCwgXykgLT4gTW9kcy5JbnRTZXQuYWRkIGlkIGFjY1xuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gXyB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgX1xuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIF8gfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgX1xuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSBfIC0+XG4gICAgICAgICAgICAgYWNjKSlcbiAgICAgICAgTW9kcy5JbnRTZXQuZW1wdHkgdGVzdHNcbiAgICBpblxuICAgIGxldCBwcmV0ZXN0cyA9XG4gICAgICBMaXN0X3V0aWwubWFwX29wdGlvblxuICAgICAgICAoZnVuICh4LCB5KSAtPlxuICAgICAgICAgIGlmXG4gICAgICAgICAgICBMaXN0LmZvcl9hbGxcbiAgICAgICAgICAgICAgKExpc3QuZm9yX2FsbCAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICB4IDw+IGEgJiYgeCA8PiBiICYmIHkgPD4gYSAmJiB5IDw+IGJcbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIF8gfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgX1xuICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBfIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIF9cbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBfIC0+XG4gICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgdGVzdHNcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBTb21lIChJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvICh4LCB5KSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBOb25lKVxuICAgICAgICBwYXRoXG4gICAgaW5cbiAgICBsZXQgXywgcGF0aF90ZXN0cyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChhZywgdGUpICgoKChpZCwgXykgYXMgYSksIF8pLCAoKChpZCcsIF8pIGFzIGEnKSwgXykpIC0+XG4gICAgICAgICAgbGV0IGFnJywgdGUnID1cbiAgICAgICAgICAgIGlmIE1vZHMuSW50U2V0Lm1lbSBpZCBhZyB0aGVuXG4gICAgICAgICAgICAgIGFnLCB0ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBNb2RzLkludFNldC5hZGQgaWQgYWcsIEluc3RhbnRpYXRpb24uSXNfSGVyZSBhIDo6IHRlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBNb2RzLkludFNldC5tZW0gaWQnIGFnJyB0aGVuXG4gICAgICAgICAgICBhZycsIHRlJ1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE1vZHMuSW50U2V0LmFkZCBpZCcgYWcnLCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYScgOjogdGUnKVxuICAgICAgICAoa25vd25fYWdlbnRzLCBwcmV0ZXN0cykgcGF0aFxuICAgIGluXG4gICAgcGF0aF90ZXN0c1xuXG4gIGxldCBzdGVwX29mX2V2ZW50IGNvdW50ZXIgPSBmdW5jdGlvblxuICAgIHwgVHJhY2UuSU5JVCBfLCBlIC0+IFRyYWNlLkluaXQgZS5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICB8IFRyYWNlLlJVTEUgciwgeCAtPlxuICAgICAgVHJhY2UuUnVsZSAociwgeCwgQ291bnRlci5uZXh0X3N0ZXBfc2ltdWxhdGlvbl9pbmZvIGNvdW50ZXIpXG4gICAgfCBUcmFjZS5QRVJUIHAsIHggLT5cbiAgICAgIFRyYWNlLlBlcnQgKHAsIHgsIENvdW50ZXIuY3VycmVudF9zaW11bGF0aW9uX2luZm8gY291bnRlcilcblxuICBsZXQgc3RvcmVfZXZlbnQgfmRlYnVnX21vZGUgY291bnRlciBpbmoyZ3JhcGggbmV3X3RyYWNrZWRfb2JzX2luc3RhbmNlc1xuICAgICAgZXZlbnRfa2luZCA/cGF0aCBleHRyYV9zaWRlX2VmZmVjdHMgcnVsZSBvdXRwdXRzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgXyAtPlxuICAgICAgbGV0IGNldmVudCA9XG4gICAgICAgIEluc3RhbnRpYXRpb24uY29uY3JldGl6ZV9ldmVudCB+ZGVidWdfbW9kZSBpbmoyZ3JhcGhcbiAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuaW5zdGFudGlhdGlvbnNcbiAgICAgIGluXG4gICAgICBsZXQgZnVsbF9jb25jcmV0ZV9ldmVudCA9XG4gICAgICAgIHtcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gY2V2ZW50Lkluc3RhbnRpYXRpb24udGVzdHM7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5hY3Rpb25zID0gY2V2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9ucztcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmMgPSBjZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjO1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdCA9XG4gICAgICAgICAgICBMaXN0LnJldl9hcHBlbmQgZXh0cmFfc2lkZV9lZmZlY3RzXG4gICAgICAgICAgICAgIGNldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgPVxuICAgICAgICAgICAgKG1hdGNoIHBhdGggd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICB8IFNvbWUgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgU29tZSAoU29tZSBwYXRoKSAtPiBwYXRoX3Rlc3RzIHBhdGggY2V2ZW50Lkluc3RhbnRpYXRpb24udGVzdHMpO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgb3V0cHV0c1xuICAgICAgICAgIChEYXRhLlRyYWNlU3RlcFxuICAgICAgICAgICAgIChzdGVwX29mX2V2ZW50IGNvdW50ZXIgKGV2ZW50X2tpbmQsIGZ1bGxfY29uY3JldGVfZXZlbnQpKSlcbiAgICAgIGluXG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAoaSwgeCkgLT5cbiAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAoRGF0YS5UcmFjZVN0ZXAgKFRyYWNlLk9icyAoaSwgeCwgQ291bnRlci5uZXh0X3N0b3J5IGNvdW50ZXIpKSkpXG4gICAgICAgIG5ld190cmFja2VkX29ic19pbnN0YW5jZXNcblxuICBsZXQgZ2V0X3NwZWNpZXNfb2JzIH5kZWJ1Z19tb2RlIHNpZ3MgZWRnZXMgb2JzIGFjYyB0cmFja2VkID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgKHBhdHRlcm4sIChyb290LCBfKSkgLT5cbiAgICAgICAgdHJ5XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gYWNjIChmbiwgcGF0dGVybnMsIF8pIC0+XG4gICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIG9rIHBpZCAtPlxuICAgICAgICAgICAgICAgICAgICBQYXR0ZXJuLmNvbXBhcmVfY2Fub25pY2FscyBwaWQgcGF0dGVybiA9IDAgfHwgb2spXG4gICAgICAgICAgICAgICAgICBmYWxzZSBwYXR0ZXJuc1xuICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgc3BlYyA9IEVkZ2VzLnNwZWNpZXMgfmRlYnVnX21vZGUgc2lncyByb290IGVkZ2VzIGluXG4gICAgICAgICAgICAgICAgKGZuLCBwYXR0ZXJucywgc3BlYykgOjogYWNjXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgKFBhdHRlcm4uT2JzTWFwLmdldCB0cmFja2VkIHBhdHRlcm4pXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGFjYylcbiAgICAgIGFjYyBvYnNcblxuICBsZXQgc3RvcmVfb2JzIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBpbnN0YW5jZXMgb2JzIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IGFjY1xuICAgIHwgU29tZSB0cmFja2VkIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGFjYyAocGF0dGVybiwgKHJvb3QsIF8pKSAtPlxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biBhY2MgKGV2LCBwYXR0ZXJucywgdGVzdHMpIC0+XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gYWNjIChpbmosIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZXN0cycgPVxuICAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLmNvbmNyZXRpemVfdGVzdCB+ZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluaiwgTW9kcy5JbnRNYXAuZW1wdHkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIChldiwgdGVzdHMnKSA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICAgIChhbGxfaW5qZWN0aW9ucyB+ZGVidWdfbW9kZSBpbnN0YW5jZXMgfmV4Y3A6KHBhdHRlcm4sIHJvb3QpXG4gICAgICAgICAgICAgICAgICAgICBkb21haW4gZWRnZXMgcGF0dGVybnMpKVxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgKFBhdHRlcm4uT2JzTWFwLmdldCB0cmFja2VkIHBhdHRlcm4pXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gYWNjKVxuICAgICAgICBhY2Mgb2JzXG5cbiAgbGV0IHVwZGF0ZV9lZGdlcyB+ZGVidWdfbW9kZSBvdXRwdXRzIGNvdW50ZXIgZG9tYWluIGlual9ub2RlcyBzdGF0ZSBldmVudF9raW5kXG4gICAgICA/cGF0aCBydWxlIHNpZ3MgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIGxldCAoKSA9IHN0YXRlLm91dGRhdGVkIDwtIHRydWUgaW5cbiAgICBsZXQgbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSA9IHN0YXRlLmltcC5jaGFuZ2VkX2Nvbm5lY3Rpdml0eSBpblxuICAgICgqTmVnYXRpdmUgdXBkYXRlKilcbiAgICBsZXQgY29uY3JldGVfcmVtb3ZlZCA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5jb25jcmV0aXplIH5kZWJ1Z19tb2RlXG4gICAgICAgICAgIChpbmpfbm9kZXMsIE1vZHMuSW50TWFwLmVtcHR5KSlcbiAgICAgICAgcnVsZS5QcmltaXRpdmVzLnJlbW92ZWRcbiAgICBpblxuICAgIGxldCAoZGVsX29icywgZGVsX2RlcHMpLCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZSBkb21haW4gc3RhdGUuZWRnZXMpXG4gICAgICAgICgoW10sIE9wZXJhdG9yLkRlcFNldC5lbXB0eSksIE1hdGNoaW5nLmVtcHR5X2NhY2hlKVxuICAgICAgICBjb25jcmV0ZV9yZW1vdmVkXG4gICAgaW5cbiAgICBsZXQgc2lkZV9lZmZlY3RzLCBlZGdlc19hZnRlcl9uZWcgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGFwcGx5X25lZ2F0aXZlX3RyYW5zZm9ybWF0aW9uIH5tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICAgICAgIHN0YXRlLmltcC5pbnN0YW5jZXMpXG4gICAgICAgIChbXSwgc3RhdGUuZWRnZXMpIGNvbmNyZXRlX3JlbW92ZWRcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAocGF0LCAocm9vdCwgXykpIC0+XG4gICAgICAgICAgSW5zdGFuY2VzLnVwZGF0ZV9yb290cyBzdGF0ZS5pbXAuaW5zdGFuY2VzIGZhbHNlXG4gICAgICAgICAgICBzdGF0ZS5pbXAucHJlY29tcHV0ZWQudW5hcnlfcGF0dGVybnMgZWRnZXNfYWZ0ZXJfbmVnXG4gICAgICAgICAgICBtb2RfY29ubmVjdGl2aXR5X3N0b3JlIHBhdCByb290KVxuICAgICAgICBkZWxfb2JzXG4gICAgaW5cbiAgICAoKlBvc2l0aXZlIHVwZGF0ZSopXG4gICAgbGV0IChmaW5hbF9pbmoyZ3JhcGgsIHJlbWFpbmluZ19zaWRlX2VmZmVjdHMsIGVkZ2VzJyksIGNvbmNyZXRlX2luc2VydGVkID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKHgsIHApIGggLT5cbiAgICAgICAgICBsZXQgeCcsIGgnID1cbiAgICAgICAgICAgIGFwcGx5X3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlXG4gICAgICAgICAgICAgIChQYXR0ZXJuLkVudi5zaWduYXR1cmVzIGRvbWFpbilcbiAgICAgICAgICAgICAgfm1vZF9jb25uZWN0aXZpdHlfc3RvcmUgc3RhdGUuaW1wLmluc3RhbmNlcyB4IGhcbiAgICAgICAgICBpblxuICAgICAgICAgIHgnLCBoJyA6OiBwKVxuICAgICAgICAoKChpbmpfbm9kZXMsIE1vZHMuSW50TWFwLmVtcHR5KSwgc2lkZV9lZmZlY3RzLCBlZGdlc19hZnRlcl9uZWcpLCBbXSlcbiAgICAgICAgcnVsZS5QcmltaXRpdmVzLmluc2VydGVkXG4gICAgaW5cbiAgICBsZXQgZWRnZXMnJywgY29uY3JldGVfaW5zZXJ0ZWQnID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGUsIGkpICgoKGlkLCBfKSBhcyBuYyksIHMpIC0+XG4gICAgICAgICAgRWRnZXMuYWRkX2ZyZWUgaWQgcyBlLCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChuYywgcykgOjogaSlcbiAgICAgICAgKGVkZ2VzJywgY29uY3JldGVfaW5zZXJ0ZWQpXG4gICAgICAgIHJlbWFpbmluZ19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIGxldCAobmV3X29icywgbmV3X2RlcHMpLCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMnJylcbiAgICAgICAgKChbXSwgT3BlcmF0b3IuRGVwU2V0LmVtcHR5KSwgTWF0Y2hpbmcuZW1wdHlfY2FjaGUpXG4gICAgICAgIGNvbmNyZXRlX2luc2VydGVkJ1xuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChwYXQsIChyb290LCBfKSkgLT5cbiAgICAgICAgICBJbnN0YW5jZXMudXBkYXRlX3Jvb3RzIHN0YXRlLmltcC5pbnN0YW5jZXMgdHJ1ZVxuICAgICAgICAgICAgc3RhdGUuaW1wLnByZWNvbXB1dGVkLnVuYXJ5X3BhdHRlcm5zIGVkZ2VzJycgbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgICAgICAgcGF0IHJvb3QpXG4gICAgICAgIG5ld19vYnNcbiAgICBpblxuICAgICgqU3RvcmUgZXZlbnQqKVxuICAgIGxldCBuZXdfdHJhY2tlZF9vYnNfaW5zdGFuY2VzID1cbiAgICAgIHN0b3JlX29icyB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMnJyBzdGF0ZS5pbXAuaW5zdGFuY2VzIG5ld19vYnMgW11cbiAgICAgICAgc3RhdGUuaW1wLnN0b3J5X21hY2hpbmVyeVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIHN0b3JlX2V2ZW50IH5kZWJ1Z19tb2RlIGNvdW50ZXIgZmluYWxfaW5qMmdyYXBoIG5ld190cmFja2VkX29ic19pbnN0YW5jZXNcbiAgICAgICAgZXZlbnRfa2luZCA/cGF0aCByZW1haW5pbmdfc2lkZV9lZmZlY3RzIHJ1bGUgb3V0cHV0c1xuICAgICAgICBzdGF0ZS5pbXAuc3RvcnlfbWFjaGluZXJ5XG4gICAgaW5cbiAgICAoKlByaW50IHNwZWNpZXMqKVxuICAgIGxldCBzcGVjaWVzID1cbiAgICAgIGdldF9zcGVjaWVzX29icyB+ZGVidWdfbW9kZSBzaWdzIGVkZ2VzJycgbmV3X29icyBbXSBzdGF0ZS5pbXAuc3BlY2llc1xuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChmaWxlLCBfLCBtaXh0dXJlKSAtPlxuICAgICAgICAgIG91dHB1dHMgKERhdGEuU3BlY2llcyAoZmlsZSwgQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlciwgbWl4dHVyZSkpKVxuICAgICAgICBzcGVjaWVzXG4gICAgaW5cbiAgICBsZXQgcmV2X2RlcHMgPVxuICAgICAgT3BlcmF0b3IuRGVwU2V0LnVuaW9uIHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzXG4gICAgICAgIChPcGVyYXRvci5EZXBTZXQudW5pb24gZGVsX2RlcHMgbmV3X2RlcHMpXG4gICAgaW5cbiAgICB7XG4gICAgICBvdXRkYXRlZCA9IGZhbHNlO1xuICAgICAgaW1wID0gc3RhdGUuaW1wO1xuICAgICAgbWF0Y2hpbmdzX29mX3J1bGUgPSBzdGF0ZS5tYXRjaGluZ3Nfb2ZfcnVsZTtcbiAgICAgIHVuYXJ5X2NhbmRpZGF0ZXMgPSBzdGF0ZS51bmFyeV9jYW5kaWRhdGVzO1xuICAgICAgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjID0gc3RhdGUubmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjO1xuICAgICAgZWRnZXMgPSBlZGdlcycnO1xuICAgICAgb3V0ZGF0ZWRfZWxlbWVudHMgPSByZXZfZGVwcztcbiAgICAgIGV2ZW50c190b19ibG9jayA9IHN0YXRlLmV2ZW50c190b19ibG9jaztcbiAgICB9XG5cbiAgbGV0IHVwZGF0ZV9lZGdlc19mcm9tX2FjdGlvbnMgfmRlYnVnX21vZGUgfm91dHB1dHMgc2lncyBjb3VudGVyIGRvbWFpbiBzdGF0ZVxuICAgICAgKGFjdGlvbnMsIHNpZGVfZWZmZWN0X2RzdCkgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIGxldCAoKSA9IHN0YXRlLm91dGRhdGVkIDwtIHRydWUgaW5cbiAgICBsZXQgbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSA9IHN0YXRlLmltcC5jaGFuZ2VkX2Nvbm5lY3Rpdml0eSBpblxuICAgICgqTmVnYXRpdmUgdXBkYXRlKilcbiAgICBsZXQgbG5rX2RzdCAoKGEsIF8pLCBzKSA9IEVkZ2VzLmxpbmtfZGVzdGluYXRpb24gYSBzIHN0YXRlLmVkZ2VzIGluXG4gICAgbGV0IGNvbmNyZXRlX3JlbW92ZWQgPVxuICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbnNfb2ZfYWN0aW9ucyBzaWdzIGxua19kc3RcbiAgICAgICAgYWN0aW9uc1xuICAgIGluXG4gICAgbGV0IChkZWxfb2JzLCBkZWxfZGVwcyksIF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKG9ic19mcm9tX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlIGRvbWFpbiBzdGF0ZS5lZGdlcylcbiAgICAgICAgKChbXSwgT3BlcmF0b3IuRGVwU2V0LmVtcHR5KSwgTWF0Y2hpbmcuZW1wdHlfY2FjaGUpXG4gICAgICAgIGNvbmNyZXRlX3JlbW92ZWRcbiAgICBpblxuICAgIGxldCBfc2lkZV9lZmZlY3RzLCBlZGdlc19hZnRlcl9uZWcgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGFwcGx5X25lZ2F0aXZlX3RyYW5zZm9ybWF0aW9uIH5tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICAgICAgIHN0YXRlLmltcC5pbnN0YW5jZXMpXG4gICAgICAgIChbXSwgc3RhdGUuZWRnZXMpIGNvbmNyZXRlX3JlbW92ZWRcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAocGF0LCAocm9vdCwgXykpIC0+XG4gICAgICAgICAgSW5zdGFuY2VzLnVwZGF0ZV9yb290cyBzdGF0ZS5pbXAuaW5zdGFuY2VzIGZhbHNlXG4gICAgICAgICAgICBzdGF0ZS5pbXAucHJlY29tcHV0ZWQudW5hcnlfcGF0dGVybnMgZWRnZXNfYWZ0ZXJfbmVnXG4gICAgICAgICAgICBtb2RfY29ubmVjdGl2aXR5X3N0b3JlIHBhdCByb290KVxuICAgICAgICBkZWxfb2JzXG4gICAgaW5cbiAgICAoKlBvc2l0aXZlIHVwZGF0ZSopXG4gICAgbGV0IGNvbmNyZXRlX2luc2VydGVkID1cbiAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24ucG9zaXRpdmVfdHJhbnNmb3JtYXRpb25zX29mX2FjdGlvbnMgc2lnc1xuICAgICAgICBzaWRlX2VmZmVjdF9kc3QgYWN0aW9uc1xuICAgIGluXG4gICAgbGV0IGVkZ2VzJyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHggaCAtPlxuICAgICAgICAgIGFwcGx5X2NvbmNyZXRlX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uXG4gICAgICAgICAgICAoUGF0dGVybi5FbnYuc2lnbmF0dXJlcyBkb21haW4pXG4gICAgICAgICAgICB+bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBzdGF0ZS5pbXAuaW5zdGFuY2VzIHggaClcbiAgICAgICAgZWRnZXNfYWZ0ZXJfbmVnIGNvbmNyZXRlX2luc2VydGVkXG4gICAgaW5cbiAgICBsZXQgKG5ld19vYnMsIG5ld19kZXBzKSwgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAob2JzX2Zyb21fdHJhbnNmb3JtYXRpb24gfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzJylcbiAgICAgICAgKChbXSwgT3BlcmF0b3IuRGVwU2V0LmVtcHR5KSwgTWF0Y2hpbmcuZW1wdHlfY2FjaGUpXG4gICAgICAgIGNvbmNyZXRlX2luc2VydGVkXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKHBhdCwgKHJvb3QsIF8pKSAtPlxuICAgICAgICAgIEluc3RhbmNlcy51cGRhdGVfcm9vdHMgc3RhdGUuaW1wLmluc3RhbmNlcyB0cnVlXG4gICAgICAgICAgICBzdGF0ZS5pbXAucHJlY29tcHV0ZWQudW5hcnlfcGF0dGVybnMgZWRnZXMnIG1vZF9jb25uZWN0aXZpdHlfc3RvcmVcbiAgICAgICAgICAgIHBhdCByb290KVxuICAgICAgICBuZXdfb2JzXG4gICAgaW5cbiAgICAoKlByaW50IHNwZWNpZXMqKVxuICAgIGxldCBzcGVjaWVzID1cbiAgICAgIGdldF9zcGVjaWVzX29icyB+ZGVidWdfbW9kZSBzaWdzIGVkZ2VzJyBuZXdfb2JzIFtdIHN0YXRlLmltcC5zcGVjaWVzXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKGZpbGUsIF8sIG1peHR1cmUpIC0+XG4gICAgICAgICAgb3V0cHV0cyAoRGF0YS5TcGVjaWVzIChmaWxlLCBDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyLCBtaXh0dXJlKSkpXG4gICAgICAgIHNwZWNpZXNcbiAgICBpblxuICAgIGxldCByZXZfZGVwcyA9XG4gICAgICBPcGVyYXRvci5EZXBTZXQudW5pb24gc3RhdGUub3V0ZGF0ZWRfZWxlbWVudHNcbiAgICAgICAgKE9wZXJhdG9yLkRlcFNldC51bmlvbiBkZWxfZGVwcyBuZXdfZGVwcylcbiAgICBpblxuICAgIHtcbiAgICAgIG91dGRhdGVkID0gZmFsc2U7XG4gICAgICBpbXAgPSBzdGF0ZS5pbXA7XG4gICAgICBtYXRjaGluZ3Nfb2ZfcnVsZSA9IHN0YXRlLm1hdGNoaW5nc19vZl9ydWxlO1xuICAgICAgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjID0gc3RhdGUubmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjO1xuICAgICAgdW5hcnlfY2FuZGlkYXRlcyA9IHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXM7XG4gICAgICBlZGdlcyA9IGVkZ2VzJztcbiAgICAgIG91dGRhdGVkX2VsZW1lbnRzID0gcmV2X2RlcHM7XG4gICAgICBldmVudHNfdG9fYmxvY2sgPSBzdGF0ZS5ldmVudHNfdG9fYmxvY2s7XG4gICAgfVxuXG4gIGxldCBtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZSBkID0gTmJyLnRvX2ludCAodmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgZClcblxuICAoKiBjY192YSBpcyB0aGUgbnVtYmVyIG9mIGVtYmVkZGluZ3MuIEl0IG9ubHkgaGFzXG4gICAgIHRvIGJlIG11bHRpcGxpZWQgYnkgdGhlIHJhdGUgY29uc3RhbnQgb2YgdGhlIHJ1bGUgKilcbiAgbGV0IHN0b3JlX2FjdGl2aXR5IH5kZWJ1Z19tb2RlIHN0b3JlIGVudiBjb3VudGVyIHN0YXRlIGlkIHN5bnRheF9pZCByYXRlIGNjX3ZhXG4gICAgICA9XG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlblxuICAgICAgICBGb3JtYXQucHJpbnRmIFwiQFslc3VsZSAlYSBoYXMgbm93ICVpIGluc3RhbmNlcy5AXUAuXCJcbiAgICAgICAgICAoaWYgaWQgbW9kIDIgPSAxIHRoZW5cbiAgICAgICAgICAgICBcIlVuYXJ5IHJcIlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgXCJSXCIpXG4gICAgICAgICAgKE1vZGVsLnByaW50X3J1bGUgfm5vQ291bnRlcnM6dHJ1ZSB+ZW52KVxuICAgICAgICAgIChpZCAvIDIpIGNjX3ZhXG4gICAgaW5cbiAgICBsZXQgYWN0ID1cbiAgICAgIG1hdGNoIE5ici50b19mbG9hdCBAQCB2YWx1ZV9hbGcgY291bnRlciBzdGF0ZSByYXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBpZiBjY192YSA9IDAgdGhlblxuICAgICAgICAgIDAuXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbmZpbml0eVxuICAgICAgfCBTb21lIHJhdGUgLT4gcmF0ZSAqLiBmbG9hdF9vZl9pbnQgY2NfdmFcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBhY3QgPCAwLiB0aGVuIChcbiAgICAgICAgbGV0IHVuYXJ5ID0gaWQgbW9kIDIgPSAxIGluXG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoIEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcIkF0IHQ9JS4yZiAlc2N0aXZpdHkgb2YgcnVsZSAlYSBoYXMgYmVjb21lIG5lZ2F0aXZlICglZilcIlxuICAgICAgICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcilcbiAgICAgICAgICAgICAgICAgKGlmIHVuYXJ5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgXCJVbmFyeSBcIlxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBcIlwiKVxuICAgICAgICAgICAgICAgICAoTW9kZWwucHJpbnRfcnVsZSB+bm9Db3VudGVyczpkZWJ1Z19tb2RlIH5lbnYpXG4gICAgICAgICAgICAgICAgIGlkIGFjdCxcbiAgICAgICAgICAgICAgIE1vZGVsLmdldF9hc3RfcnVsZV9yYXRlX3BvcyB+dW5hcnkgZW52IHN5bnRheF9pZCApKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IG9sZF9hY3QgPSBnZXRfYWN0aXZpdHkgaWQgc3RhdGUgaW5cbiAgICBsZXQgKCkgPSBzZXRfYWN0aXZpdHkgaWQgYWN0IHN0YXRlIGluXG4gICAgc3RvcmUgc3ludGF4X2lkIG9sZF9hY3QgYWN0XG5cbiAgbGV0IHVwZGF0ZV9vdXRkYXRlZF9hY3Rpdml0aWVzIH5kZWJ1Z19tb2RlIHN0b3JlIGVudiBjb3VudGVyIHN0YXRlIGtub3duX3BlcnRzXG4gICAgICA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbGV0IHVuYXJ5X3J1bGVfdXBkYXRlIG1vZGlmaWVkX2NjIGluc3RhbmNlcyBpIHBhY2sgcnVsZSA9XG4gICAgICBtYXRjaCBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gcGFja1xuICAgICAgfCBTb21lICh1bnJhdGUsIF8pIC0+XG4gICAgICAgIGxldCB2YSwgcGFjaycgPVxuICAgICAgICAgIGNvbXB1dGVfdW5hcnlfbnVtYmVyIGluc3RhbmNlcyBwYWNrIG1vZGlmaWVkX2NjIHJ1bGUgaVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHN0b3JlX2FjdGl2aXR5IH5kZWJ1Z19tb2RlIHN0b3JlIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICAgICAgICAoKDIgKiBpKSArIDEpXG4gICAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUgKGZzdCB1bnJhdGUpIChJbnQ2NC50b19pbnQgdmEpXG4gICAgICAgIGluXG4gICAgICAgIHBhY2snXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eCBkZXAgYWNjID1cbiAgICAgIE9wZXJhdG9yLkRlcFNldC5mb2xkXG4gICAgICAgIChmdW4gZGVwICgoZXhhY3RfbWF0Y2hpbmdzLCBwZXJ0cykgYXMgYWNjKSAtPlxuICAgICAgICAgIG1hdGNoIGRlcCB3aXRoXG4gICAgICAgICAgfCBPcGVyYXRvci5BTEcgaiAtPlxuICAgICAgICAgICAgbGV0ICgpID0gcmVjb21wdXRlIGVudiBjb3VudGVyIHN0YXRlIGogaW5cbiAgICAgICAgICAgIGF1eCAoTW9kZWwuZ2V0X2FsZ19yZXZlcnNlX2RlcGVuZGVuY2llcyBlbnYgaikgYWNjXG4gICAgICAgICAgfCBPcGVyYXRvci5NT0RJRiBwIC0+IGV4YWN0X21hdGNoaW5ncywgcCA6OiBwZXJ0c1xuICAgICAgICAgIHwgT3BlcmF0b3IuUlVMRSBpIC0+XG4gICAgICAgICAgICBsZXQgcnVsZSA9IE1vZGVsLmdldF9ydWxlIGVudiBpIGluXG4gICAgICAgICAgICBsZXQgcGF0dGVybl92YSA9XG4gICAgICAgICAgICAgIEluc3RhbmNlcy5udW1iZXJfb2ZfaW5zdGFuY2VzIH5ydWxlX2lkOmkgc3RhdGUuaW1wLmluc3RhbmNlc1xuICAgICAgICAgICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50c1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIHN0b3JlX2FjdGl2aXR5IH5kZWJ1Z19tb2RlIHN0b3JlIGVudiBjb3VudGVyIHN0YXRlICgyICogaSlcbiAgICAgICAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUgKGZzdCBydWxlLlByaW1pdGl2ZXMucmF0ZSlcbiAgICAgICAgICAgICAgICBwYXR0ZXJuX3ZhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcG9wX2V4YWN0X21hdGNoaW5ncyBleGFjdF9tYXRjaGluZ3MgaSwgcGVydHMpXG4gICAgICAgIGRlcCBhY2NcbiAgICBpblxuICAgIGxldCBtYXRjaGluZ3Nfb2ZfcnVsZSwgcGVydHMgPVxuICAgICAgYXV4IHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzIChzdGF0ZS5tYXRjaGluZ3Nfb2ZfcnVsZSwga25vd25fcGVydHMpXG4gICAgaW5cbiAgICBsZXQgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjLCB1bmFyeV9jYW5kaWRhdGVzID1cbiAgICAgIGlmIEhhc2h0YmwubGVuZ3RoIHN0YXRlLmltcC5jaGFuZ2VkX2Nvbm5lY3Rpdml0eSA9IDAgdGhlblxuICAgICAgICBzdGF0ZS5uYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MsIHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXNcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgb3V0ID1cbiAgICAgICAgICBNb2RlbC5mb2xkX3J1bGVzXG4gICAgICAgICAgICAodW5hcnlfcnVsZV91cGRhdGUgc3RhdGUuaW1wLmNoYW5nZWRfY29ubmVjdGl2aXR5XG4gICAgICAgICAgICAgICBzdGF0ZS5pbXAuaW5zdGFuY2VzKVxuICAgICAgICAgICAgKHN0YXRlLm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYywgc3RhdGUudW5hcnlfY2FuZGlkYXRlcylcbiAgICAgICAgICAgIGVudlxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlc2V0IHN0YXRlLmltcC5jaGFuZ2VkX2Nvbm5lY3Rpdml0eSBpblxuICAgICAgICBvdXRcbiAgICAgIClcbiAgICBpblxuICAgICgge1xuICAgICAgICBvdXRkYXRlZCA9IGZhbHNlO1xuICAgICAgICBpbXAgPSBzdGF0ZS5pbXA7XG4gICAgICAgIGVkZ2VzID0gc3RhdGUuZWRnZXM7XG4gICAgICAgIGV2ZW50c190b19ibG9jayA9IHN0YXRlLmV2ZW50c190b19ibG9jaztcbiAgICAgICAgbWF0Y2hpbmdzX29mX3J1bGU7XG4gICAgICAgIG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYztcbiAgICAgICAgdW5hcnlfY2FuZGlkYXRlcztcbiAgICAgICAgb3V0ZGF0ZWRfZWxlbWVudHMgPSBzdGF0ZS5pbXAucHJlY29tcHV0ZWQuYWx3YXlzX291dGRhdGVkO1xuICAgICAgfSxcbiAgICAgIHBlcnRzIClcblxuICBsZXQgb3ZlcndyaXRlX3ZhciBpIGNvdW50ZXIgc3RhdGUgZXhwciA9XG4gICAgbGV0ICgpID1cbiAgICAgIHN0YXRlLmltcC52YXJpYWJsZXNfb3ZlcndyaXRlLihpKSA8LVxuICAgICAgICBTb21lIChBbGdfZXhwci5DT05TVCAodmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgZXhwcikpXG4gICAgaW5cbiAgICB7XG4gICAgICBzdGF0ZSB3aXRoXG4gICAgICBvdXRkYXRlZF9lbGVtZW50cyA9XG4gICAgICAgIE9wZXJhdG9yLkRlcFNldC5hZGQgKE9wZXJhdG9yLkFMRyBpKSBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50cztcbiAgICB9XG5cbiAgbGV0IHVwZGF0ZV90b2tlbnMgZW52IGNvdW50ZXIgc3RhdGUgaW5qZWN0ZWQgPVxuICAgIGxldCBpbmplY3RlZCcgPVxuICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgIChmdW4gKChleHByLCBfKSwgaSkgLT4gdmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgZXhwciwgaSlcbiAgICAgICAgaW5qZWN0ZWRcbiAgICBpblxuICAgIHtcbiAgICAgIHN0YXRlIHdpdGhcbiAgICAgIG91dGRhdGVkX2VsZW1lbnRzID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIHJkZXBzICh2YSwgaSkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IHN0YXRlLmltcC50b2tlbnMuKGkpIDwtIE5ici5hZGQgc3RhdGUuaW1wLnRva2Vucy4oaSkgdmEgaW5cbiAgICAgICAgICAgIGxldCBkZXBzJyA9IE1vZGVsLmdldF90b2tlbl9yZXZlcnNlX2RlcGVuZGVuY2llcyBlbnYgaSBpblxuICAgICAgICAgICAgaWYgT3BlcmF0b3IuRGVwU2V0LmlzX2VtcHR5IGRlcHMnIHRoZW5cbiAgICAgICAgICAgICAgcmRlcHNcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgT3BlcmF0b3IuRGVwU2V0LnVuaW9uIHJkZXBzIGRlcHMnKVxuICAgICAgICAgIHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzIGluamVjdGVkJztcbiAgICB9XG5cbiAgbGV0IHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZSBldmVudF9raW5kID9wYXRoXG4gICAgICBydWxlID9ydWxlX2lkIGluaiA9XG4gICAgaWYgaXNfYmxvY2tlZCB+ZGVidWdfbW9kZSBzdGF0ZSA/cnVsZV9pZCBydWxlIGluaiB0aGVuXG4gICAgICBCbG9ja2VkXG4gICAgZWxzZSAoXG4gICAgICBsZXQgc3RhdGUgPVxuICAgICAgICB1cGRhdGVfdG9rZW5zIGVudiBjb3VudGVyIHN0YXRlIHJ1bGUuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnNcbiAgICAgIGluXG4gICAgICBsZXQgc3RhdGUgPVxuICAgICAgICB1cGRhdGVfZWRnZXMgfmRlYnVnX21vZGUgb3V0cHV0cyBjb3VudGVyIChNb2RlbC5kb21haW4gZW52KSBpbmogc3RhdGVcbiAgICAgICAgICBldmVudF9raW5kID9wYXRoIHJ1bGUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KVxuICAgICAgaW5cbiAgICAgIFN1Y2Nlc3Mgc3RhdGVcbiAgICApXG5cbiAgbGV0IGFwcGx5X2dpdmVuX3VuYXJ5X2luc3RhbmNlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICBldmVudF9raW5kIHJ1bGUgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBDbGFzaFxuICAgIHwgU29tZSAoaW5qLCBfcmV2X3Jvb3RzLCBwYXRoKSAtPlxuICAgICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgICBsZXQgc3RhdGUnID1cbiAgICAgICAge1xuICAgICAgICAgIHN0YXRlIHdpdGhcbiAgICAgICAgICBvdXRkYXRlZF9lbGVtZW50cyA9XG4gICAgICAgICAgICBPcGVyYXRvci5EZXBTZXQuYWRkIChPcGVyYXRvci5SVUxFIHJ1bGVfaWQpIHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgKG1hdGNoIHBhdGggd2l0aFxuICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgdHJhbnNmb3JtX2J5X2FfcnVsZSB+ZGVidWdfbW9kZSBvdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlJyBldmVudF9raW5kXG4gICAgICAgICAgfnBhdGggcnVsZSB+cnVsZV9pZCBpbmpcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgbWF4X2Rpc3RhbmNlID1cbiAgICAgICAgICBtYXRjaCBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgKF8sIGRpc3Rfb3B0KSAtPlxuICAgICAgICAgICAgKG1hdGNoIGRpc3Rfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgZCAtPiBTb21lIChtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZScgZCkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgICAgIGxldCBub2RlcyA9XG4gICAgICAgICAgTWF0Y2hpbmcuZWxlbWVudHNfd2l0aF90eXBlcyBkb21haW5cbiAgICAgICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBpbmpcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbWF4X2Rpc3RhbmNlID0gTm9uZSAmJiBzdGF0ZS5pbXAuc3RvcnlfbWFjaGluZXJ5ID0gTm9uZSB0aGVuXG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIEVkZ2VzLmluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudFxuICAgICAgICAgICAgICAoZnN0IChMaXN0LmhkIG5vZGVzLigwKSkpXG4gICAgICAgICAgICAgIChmc3QgKExpc3QuaGQgbm9kZXMuKDEpKSlcbiAgICAgICAgICAgICAgc3RhdGUuZWRnZXNcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUnXG4gICAgICAgICAgICAgIGV2ZW50X2tpbmQgfnBhdGg6Tm9uZSBydWxlIH5ydWxlX2lkIGlualxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIENvcnJlY3RlZFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgRWRnZXMuYXJlX2Nvbm5lY3RlZCA/bWF4X2Rpc3RhbmNlIHN0YXRlLmVkZ2VzIG5vZGVzLigwKSBub2Rlcy4oMSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IENvcnJlY3RlZFxuICAgICAgICAgIHwgU29tZSBfIGFzIHBhdGggLT5cbiAgICAgICAgICAgIHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZSdcbiAgICAgICAgICAgICAgZXZlbnRfa2luZCB+cGF0aCBydWxlIH5ydWxlX2lkIGlualxuICAgICAgICApKVxuXG4gIGxldCBhcHBseV9naXZlbl9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyA/cnVsZV9pZCBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgZXZlbnRfa2luZCBydWxlID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gQ2xhc2hcbiAgICB8IFNvbWUgKGluaiwgcmV2X3Jvb3RzLCBfcGF0aCkgLT5cbiAgICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICBsZXQgcm9vdHMgPSBUb29scy5hcnJheV9yZXZfb2ZfbGlzdCByZXZfcm9vdHMgaW5cbiAgICAgICAgICBGb3JtYXQucHJpbnRmIFwiQFtPbiByb290czpAIEBbJWFAXUBdQC5cIlxuICAgICAgICAgICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gXyAtPiBGb3JtYXQucHBfcHJpbnRfaW50KSlcbiAgICAgICAgICAgIHJvb3RzXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICAobWF0Y2ggcnVsZS5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZSBldmVudF9raW5kXG4gICAgICAgICAgcnVsZSA/cnVsZV9pZCBpbmpcbiAgICAgIHwgU29tZSAoXywgbWF4X2Rpc3RhbmNlKSAtPlxuICAgICAgICAobWF0Y2ggbWF4X2Rpc3RhbmNlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHJldl9yb290cyB3aXRoXG4gICAgICAgICAgfCBbIHJvb3QxOyByb290MCBdIC0+XG4gICAgICAgICAgICBpZiBFZGdlcy5pbl9zYW1lX2Nvbm5lY3RlZF9jb21wb25lbnQgcm9vdDAgcm9vdDEgc3RhdGUuZWRnZXMgdGhlblxuICAgICAgICAgICAgICBDb3JyZWN0ZWRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgdHJhbnNmb3JtX2J5X2FfcnVsZSB+ZGVidWdfbW9kZSBvdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICAgICAgICAgICAgZXZlbnRfa2luZCBydWxlID9ydWxlX2lkIGlualxuICAgICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcImFwcGx5X2dpdmVuX3J1bGUgdW5hcnkgcnVsZSB3aXRob3V0IDIgcGF0dGVybnNcIilcbiAgICAgICAgfCBTb21lIGRpc3QgLT5cbiAgICAgICAgICBsZXQgZG9tYWluID0gTW9kZWwuZG9tYWluIGVudiBpblxuICAgICAgICAgIGxldCBkaXN0JyA9IFNvbWUgKG1heF9kaXN0X3RvX2ludCBjb3VudGVyIHN0YXRlIGRpc3QpIGluXG4gICAgICAgICAgbGV0IG5vZGVzID1cbiAgICAgICAgICAgIE1hdGNoaW5nLmVsZW1lbnRzX3dpdGhfdHlwZXMgZG9tYWluXG4gICAgICAgICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBpbmpcbiAgICAgICAgICBpblxuICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgIEVkZ2VzLmFyZV9jb25uZWN0ZWQgP21heF9kaXN0YW5jZTpkaXN0JyBzdGF0ZS5lZGdlcyBub2Rlcy4oMClcbiAgICAgICAgICAgICAgIG5vZGVzLigxKVxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgZXZlbnRfa2luZFxuICAgICAgICAgICAgICBydWxlID9ydWxlX2lkIGlualxuICAgICAgICAgIHwgU29tZSBfIC0+IENvcnJlY3RlZCkpKVxuXG4gIGxldCBhcHBseV9naXZlbl9ydWxlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzID9ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICBldmVudF9raW5kIHJ1bGUgPVxuICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgbGV0IGluc3QgPVxuICAgICAgcGlja19hX3J1bGVfaW5zdGFuY2UgfmRlYnVnX21vZGUgc3RhdGUgc3RhdGUuaW1wLnJhbmRvbV9zdGF0ZSBkb21haW5cbiAgICAgICAgc3RhdGUuZWRnZXMgP3J1bGVfaWQgcnVsZVxuICAgIGluXG4gICAgYXBwbHlfZ2l2ZW5faW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgP3J1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGVcbiAgICAgIGV2ZW50X2tpbmQgcnVsZSBpbnN0XG5cbiAgbGV0IGZvcmNlX3J1bGUgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgZXZlbnRfa2luZCA/cnVsZV9pZCBydWxlXG4gICAgICA9XG4gICAgbWF0Y2hcbiAgICAgIGFwcGx5X2dpdmVuX3J1bGUgfmRlYnVnX21vZGUgfm91dHB1dHMgP3J1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGVcbiAgICAgICAgZXZlbnRfa2luZCBydWxlXG4gICAgd2l0aFxuICAgIHwgU3VjY2VzcyBvdXQgLT4gU29tZSBvdXRcbiAgICB8IENvcnJlY3RlZCB8IEJsb2NrZWQgfCBDbGFzaCAtPlxuICAgICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgICBsZXQgdW5hcnlfcmF0ZSA9XG4gICAgICAgIG1hdGNoIHJ1bGUuUHJpbWl0aXZlcy51bmFyeV9yYXRlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIChsb2MsIGRpc3Rfb3B0KSAtPlxuICAgICAgICAgIChtYXRjaCBkaXN0X29wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFNvbWUgKGxvYywgTm9uZSlcbiAgICAgICAgICB8IFNvbWUgZCAtPiBTb21lIChsb2MsIFNvbWUgKG1heF9kaXN0X3RvX2ludCBjb3VudGVyIHN0YXRlIGQpKSlcbiAgICAgIGluXG4gICAgICAobWF0Y2hcbiAgICAgICAgIGFsbF9pbmplY3Rpb25zIH5kZWJ1Z19tb2RlID9ydWxlX2lkID91bmFyeV9yYXRlIHN0YXRlLmltcC5pbnN0YW5jZXNcbiAgICAgICAgICAgKE1vZGVsLmRvbWFpbiBlbnYpIHN0YXRlLmVkZ2VzIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50c1xuICAgICAgIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkF0IHQ9JWYsICVhIGRvZXMgbm90IGFwcGx5IChhbnltb3JlKVwiXG4gICAgICAgICAgICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcilcbiAgICAgICAgICAgICAgICAgICAgIChUcmFjZS5wcmludF9ldmVudF9raW5kIH5lbnYpXG4gICAgICAgICAgICAgICAgICAgICBldmVudF9raW5kICkpXG4gICAgICAgIGluXG4gICAgICAgIE5vbmVcbiAgICAgIHwgbCAtPlxuICAgICAgICBsZXQgaCwgXyA9IExpc3RfdXRpbC5yYW5kb20gc3RhdGUuaW1wLnJhbmRvbV9zdGF0ZSBsIGluXG4gICAgICAgIGxldCBvdXQgPVxuICAgICAgICAgIHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZSBldmVudF9raW5kXG4gICAgICAgICAgICBydWxlID9ydWxlX2lkIGhcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIG91dCB3aXRoXG4gICAgICAgIHwgU3VjY2VzcyBvdXQgLT4gU29tZSBvdXRcbiAgICAgICAgfCBCbG9ja2VkIC0+IE5vbmVcbiAgICAgICAgfCBDbGFzaCB8IENvcnJlY3RlZCAtPiBhc3NlcnQgZmFsc2UpKVxuXG4gIGxldCBhZGp1c3RfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGUgcnVsZSA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgICBsZXQgdW5hcnlfcmF0ZSA9XG4gICAgICBtYXRjaCBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIChsb2MsIGRpc3Rfb3B0KSAtPlxuICAgICAgICAobWF0Y2ggZGlzdF9vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSAobG9jLCBOb25lKVxuICAgICAgICB8IFNvbWUgZCAtPiBTb21lIChsb2MsIFNvbWUgKG1heF9kaXN0X3RvX2ludCBjb3VudGVyIHN0YXRlIGQpKSlcbiAgICBpblxuICAgIGxldCBhY3QsIHN0YXRlID1cbiAgICAgIGFkanVzdF9ydWxlX2luc3RhbmNlcyB+ZGVidWdfbW9kZSB+cnVsZV9pZCA/dW5hcnlfcmF0ZSBzdGF0ZSBkb21haW5cbiAgICAgICAgc3RhdGUuZWRnZXMgcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzIHJ1bGVcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBzdG9yZV9hY3Rpdml0eSB+ZGVidWdfbW9kZVxuICAgICAgICAoZnVuIF8gXyBfIC0+ICgpKVxuICAgICAgICBlbnYgY291bnRlciBzdGF0ZSAoMiAqIHJ1bGVfaWQpIHJ1bGUuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZVxuICAgICAgICAoZnN0IHJ1bGUuUHJpbWl0aXZlcy5yYXRlKSBhY3RcbiAgICBpblxuICAgIHN0YXRlXG5cbiAgKCogUmVkZWZpbmVzIGBhZGp1c3RfdW5hcnlfcnVsZV9pbnN0YW5jZXNgICopXG4gIGxldCBhZGp1c3RfdW5hcnlfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGUgcnVsZSA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgICBsZXQgbWF4X2Rpc3RhbmNlID1cbiAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgKGZ1biAoXywgZGlzdF9vcHQpIC0+XG4gICAgICAgICAgT3B0aW9uX3V0aWwubWFwIChtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZSkgZGlzdF9vcHQpXG4gICAgICAgIHJ1bGUuUHJpbWl0aXZlcy51bmFyeV9yYXRlXG4gICAgaW5cbiAgICBsZXQgYWN0LCBzdGF0ZSA9XG4gICAgICBhZGp1c3RfdW5hcnlfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgP21heF9kaXN0YW5jZSBzdGF0ZVxuICAgICAgICBkb21haW4gc3RhdGUuZWRnZXMgcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzIHJ1bGVcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IFNvbWUgKHVucmF0ZSwgXykgLT5cbiAgICAgICAgc3RvcmVfYWN0aXZpdHkgfmRlYnVnX21vZGVcbiAgICAgICAgICAoZnVuIF8gXyBfIC0+ICgpKVxuICAgICAgICAgIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICAgICAgKCgyICogcnVsZV9pZCkgKyAxKVxuICAgICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZSAoZnN0IHVucmF0ZSkgYWN0XG4gICAgaW5cbiAgICBzdGF0ZVxuXG4gIGxldCBpbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIH5kZWJ1Z19tb2RlIGRvbWFpbiBzdGF0ZSBwYXR0ZXJuID1cbiAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgSW5zdGFuY2VzLmluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gc3RhdGUuaW1wLmluc3RhbmNlcyBwYXR0ZXJuXG4gICAgICAgIChNYXRjaGluZy5yb290c19vZiB+ZGVidWdfbW9kZSBkb21haW4gc3RhdGUuZWRnZXMgcGF0dGVybilcbiAgICBpblxuICAgIHsgc3RhdGUgd2l0aCBvdXRkYXRlZCA9IGZhbHNlIH1cblxuICBsZXQgc25hcHNob3QgfmRlYnVnX21vZGUgfnJhdyBlbnYgY291bnRlciBzdGF0ZSA9XG4gICAge1xuICAgICAgRGF0YS5zbmFwc2hvdF9ldmVudCA9IENvdW50ZXIuY3VycmVudF9ldmVudCBjb3VudGVyO1xuICAgICAgRGF0YS5zbmFwc2hvdF90aW1lID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcjtcbiAgICAgIERhdGEuc25hcHNob3RfYWdlbnRzID1cbiAgICAgICAgRWRnZXMuYnVpbGRfdXNlcl9zbmFwc2hvdCB+ZGVidWdfbW9kZSB+cmF3IChNb2RlbC5zaWduYXR1cmVzIGVudilcbiAgICAgICAgICBzdGF0ZS5lZGdlcztcbiAgICAgIERhdGEuc25hcHNob3RfdG9rZW5zID1cbiAgICAgICAgQXJyYXkubWFwaVxuICAgICAgICAgIChmdW4gaSB4IC0+IEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKE1vZGVsLnByaW50X3Rva2VuIH5lbnYpIGksIHgpXG4gICAgICAgICAgc3RhdGUuaW1wLnRva2VucztcbiAgICB9XG5cbiAgbGV0IHBpY2tfYW5faW5zdGFuY2UgfmRlYnVnX21vZGUgZW52IHN0YXRlID1cbiAgICBsZXQgY2hvaWNlID0gcGlja19ydWxlIHN0YXRlLmltcC5yYW5kb21fc3RhdGUgc3RhdGUgaW5cbiAgICBsZXQgcnVsZV9pZCA9IGNob2ljZSAvIDIgaW5cbiAgICBsZXQgcnVsZSA9IE1vZGVsLmdldF9ydWxlIGVudiBydWxlX2lkIGluXG4gICAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgICAoIGNob2ljZSBtb2QgMiA9IDEsXG4gICAgICBydWxlX2lkLFxuICAgICAgaWYgY2hvaWNlIG1vZCAyID0gMSB0aGVuXG4gICAgICAgIHBpY2tfYV91bmFyeV9ydWxlX2luc3RhbmNlIH5kZWJ1Z19tb2RlIHN0YXRlIHN0YXRlLmltcC5yYW5kb21fc3RhdGVcbiAgICAgICAgICBkb21haW4gc3RhdGUuZWRnZXMgfnJ1bGVfaWQgcnVsZVxuICAgICAgZWxzZVxuICAgICAgICBwaWNrX2FfcnVsZV9pbnN0YW5jZSB+ZGVidWdfbW9kZSBzdGF0ZSBzdGF0ZS5pbXAucmFuZG9tX3N0YXRlIGRvbWFpblxuICAgICAgICAgIHN0YXRlLmVkZ2VzIH5ydWxlX2lkIHJ1bGUgKVxuXG4gIGxldCBpc19jb3JyZWN0X2luc3RhbmNlIGVudiBncmFwaCAoaXNfdW5hcnksIHJ1bGVfaWQsIGluc3RhbmNlKSA9XG4gICAgbWF0Y2ggaW5zdGFuY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIChfaW5qLCBpbnZfcm9vdHMsIHBhdGgpIC0+XG4gICAgICBsZXQgcnVsZSA9IE1vZGVsLmdldF9ydWxlIGVudiBydWxlX2lkIGluXG4gICAgICBsZXQgcGF0cyA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBpblxuICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0MmlcbiAgICAgICAgKGZ1biBfIGIgY2MgciAtPiBiICYmIEluc3RhbmNlcy5pc192YWxpZCBncmFwaC5pbXAuaW5zdGFuY2VzIGNjIHIpXG4gICAgICAgIHRydWUgcGF0c1xuICAgICAgICAoVG9vbHMuYXJyYXlfcmV2X29mX2xpc3QgaW52X3Jvb3RzKVxuICAgICAgJiYgKChub3QgaXNfdW5hcnkpXG4gICAgICAgICB8fFxuICAgICAgICAgbWF0Y2ggcGF0aCB3aXRoXG4gICAgICAgICB8IFNvbWUgcCAtPiBFZGdlcy5pc192YWxpZF9wYXRoIHAgZ3JhcGguZWRnZXNcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAobWF0Y2ggaW52X3Jvb3RzIHdpdGhcbiAgICAgICAgICAgfCBbIHg7IHkgXSAtPiBFZGdlcy5pbl9zYW1lX2Nvbm5lY3RlZF9jb21wb25lbnQgeCB5IGdyYXBoLmVkZ2VzXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuXG4gIGxldCBhcHBseV9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyA/bWF4Q29uc2VjdXRpdmVCbG9ja2VkXG4gICAgICB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnYgY291bnRlciBncmFwaCAoaXNfdW5hcnksIHJ1bGVfaWQsIGluc3RhbmNlKSA9XG4gICAgbGV0IGNhdXNlID0gVHJhY2UuUlVMRSBydWxlX2lkIGluXG4gICAgbGV0IHJ1bGUgPSBNb2RlbC5nZXRfcnVsZSBlbnYgcnVsZV9pZCBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBkZWJ1Z19tb2RlIHRoZW5cbiAgICAgICAgRm9ybWF0LnByaW50ZiBcIkBbPHY+QFtBcHBsaWVkQCAldCVpOkBdQCBAWyVhQF1AXUAuXCJcbiAgICAgICAgICAoZnVuIGYgLT4gaWYgaXNfdW5hcnkgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwidW5hcnlAIFwiKVxuICAgICAgICAgIHJ1bGVfaWRcbiAgICAgICAgICAoS2FwcGFfcHJpbnRlci5kZWNvbXBpbGVkX3J1bGUgfm5vQ291bnRlcnM6dHJ1ZSB+ZnVsbDp0cnVlIGVudilcbiAgICAgICAgICBydWxlXG4gICAgICAoKlJ1bGVfaW50ZXJwcmV0ZXIucHJpbnRfZGlzdCBlbnYgZ3JhcGggcnVsZV9pZCopXG4gICAgaW5cbiAgICBsZXQgYXBwbHlfZ2l2ZW4gPVxuICAgICAgaWYgaXNfdW5hcnkgdGhlblxuICAgICAgICBhcHBseV9naXZlbl91bmFyeV9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+cnVsZV9pZFxuICAgICAgZWxzZVxuICAgICAgICBhcHBseV9naXZlbl9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+cnVsZV9pZFxuICAgIGluXG4gICAgbWF0Y2ggYXBwbHlfZ2l2ZW4gZW52IGNvdW50ZXIgZ3JhcGggY2F1c2UgcnVsZSBpbnN0YW5jZSB3aXRoXG4gICAgfCBTdWNjZXNzIGdyYXBoJyAtPlxuICAgICAgbGV0IGZpbmFsX3N0ZXAgPSBub3QgKENvdW50ZXIub25lX2NvbnN0cnVjdGl2ZV9ldmVudCB+cnVsZV9pZCBjb3VudGVyKSBpblxuICAgICAgU29tZSBydWxlLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUsIGZpbmFsX3N0ZXAsIGdyYXBoJ1xuICAgIHwgKENsYXNoIHwgQ29ycmVjdGVkIHwgQmxvY2tlZCkgYXMgb3V0IC0+XG4gICAgICBsZXQgY29udGludWUgPVxuICAgICAgICBpZiBvdXQgPSBDbGFzaCB0aGVuXG4gICAgICAgICAgQ291bnRlci5vbmVfY2xhc2hpbmdfaW5zdGFuY2VfZXZlbnQgfnJ1bGVfaWQgY291bnRlclxuICAgICAgICBlbHNlIGlmIG91dCA9IEJsb2NrZWQgdGhlblxuICAgICAgICAgIENvdW50ZXIub25lX2Jsb2NrZWRfZXZlbnQgY291bnRlclxuICAgICAgICBlbHNlIGlmIGlzX3VuYXJ5IHRoZW5cbiAgICAgICAgICBDb3VudGVyLm9uZV9ub19tb3JlX3VuYXJ5X2V2ZW50IH5ydWxlX2lkIGNvdW50ZXJcbiAgICAgICAgZWxzZVxuICAgICAgICAgIENvdW50ZXIub25lX25vX21vcmVfYmluYXJ5X2V2ZW50IH5ydWxlX2lkIGNvdW50ZXJcbiAgICAgIGluXG4gICAgICBpZlxuICAgICAgICBDb3VudGVyLmNvbnNlY3V0aXZlX251bGxfZXZlbnQgfnJ1bGVfaWQgY291bnRlciA8IG1heENvbnNlY3V0aXZlQ2xhc2hcbiAgICAgICAgJiZcbiAgICAgICAgbWF0Y2ggbWF4Q29uc2VjdXRpdmVCbG9ja2VkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIG4gLT4gQ291bnRlci5jb25zZWN1dGl2ZV9ibG9ja2VkIGNvdW50ZXIgPCBuXG4gICAgICB0aGVuXG4gICAgICAgIE5vbmUsIG5vdCBjb250aW51ZSwgZ3JhcGhcbiAgICAgIGVsc2VcbiAgICAgICAgKCBOb25lLFxuICAgICAgICAgIG5vdCBjb250aW51ZSxcbiAgICAgICAgICBpZiBpc191bmFyeSB0aGVuXG4gICAgICAgICAgICBhZGp1c3RfdW5hcnlfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgZW52IGNvdW50ZXIgZ3JhcGhcbiAgICAgICAgICAgICAgcnVsZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGFkanVzdF9ydWxlX2luc3RhbmNlcyB+ZGVidWdfbW9kZSB+cnVsZV9pZCBlbnYgY291bnRlciBncmFwaCBydWxlIClcblxuICBsZXQgYXV4X2FkZF90cmFja2VkIHBhdHRlcm5zIG5hbWUgdGVzdHMgc3RhdGUgdHBhdHRlcm4gPVxuICAgIGxldCAoKSA9IHN0YXRlLm91dGRhdGVkIDwtIHRydWUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIHBhdHRlcm4gLT5cbiAgICAgICAgICBsZXQgYWNjID0gUGF0dGVybi5PYnNNYXAuZ2V0IHRwYXR0ZXJuIHBhdHRlcm4gaW5cbiAgICAgICAgICBQYXR0ZXJuLk9ic01hcC5zZXQgdHBhdHRlcm4gcGF0dGVybiAoKG5hbWUsIHBhdHRlcm5zLCB0ZXN0cykgOjogYWNjKSlcbiAgICAgICAgcGF0dGVybnNcbiAgICBpblxuICAgIHsgc3RhdGUgd2l0aCBvdXRkYXRlZCA9IGZhbHNlIH1cblxuICBsZXQgYWRkX3RyYWNrZWQgfm91dHB1dHMgcGF0dGVybnMgbmFtZSB0ZXN0cyBzdGF0ZSA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbWF0Y2ggc3RhdGUuaW1wLnN0b3J5X21hY2hpbmVyeSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgKERhdGEuV2FybmluZ1xuICAgICAgICAgICAgICggTm9uZSxcbiAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgICBcIk9ic2VydmFibGUgJXMgc2hvdWxkIGJlIHRyYWNrZWQgYnV0IHRoZSB0cmFjZSBpcyBub3Qgc3RvcmVkXCJcbiAgICAgICAgICAgICAgICAgICBuYW1lICkpXG4gICAgICBpblxuICAgICAgc3RhdGVcbiAgICB8IFNvbWUgdHBhdHRlcm4gLT4gYXV4X2FkZF90cmFja2VkIHBhdHRlcm5zIG5hbWUgdGVzdHMgc3RhdGUgdHBhdHRlcm5cblxuICBsZXQgcmVtb3ZlX3RyYWNrZWQgcGF0dGVybnMgbmFtZSBzdGF0ZSA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbWF0Y2ggc3RhdGUuaW1wLnN0b3J5X21hY2hpbmVyeSB3aXRoXG4gICAgfCBOb25lIC0+IHN0YXRlXG4gICAgfCBTb21lIHRwYXR0ZXJuIC0+XG4gICAgICAobWF0Y2ggbmFtZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0ICgpID0gc3RhdGUub3V0ZGF0ZWQgPC0gdHJ1ZSBpblxuICAgICAgICBsZXQgdGVzdGVyIChfLCBlbCwgXykgPVxuICAgICAgICAgIG5vdFxuICAgICAgICAgIEBAIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgICAgIChmdW4gaSBiIHggLT4gYiAmJiBQYXR0ZXJuLmlzX2VxdWFsX2Nhbm9uaWNhbHMgeCBlbC4oaSkpXG4gICAgICAgICAgICAgICB0cnVlIHBhdHRlcm5zXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgQXJyYXkuaXRlclxuICAgICAgICAgICAgKGZ1biBwYXR0ZXJuIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBQYXR0ZXJuLk9ic01hcC5nZXQgdHBhdHRlcm4gcGF0dGVybiBpblxuICAgICAgICAgICAgICBQYXR0ZXJuLk9ic01hcC5zZXQgdHBhdHRlcm4gcGF0dGVybiAoTGlzdC5maWx0ZXIgdGVzdGVyIGFjYykpXG4gICAgICAgICAgICBwYXR0ZXJuc1xuICAgICAgICBpblxuICAgICAgICB7IHN0YXRlIHdpdGggb3V0ZGF0ZWQgPSBmYWxzZSB9XG4gICAgICB8IFNvbWUgbmFtZSAtPlxuICAgICAgICBsZXQgKCkgPSBzdGF0ZS5vdXRkYXRlZCA8LSB0cnVlIGluXG4gICAgICAgIGxldCB0ZXN0ZXIgKG4sIF8sIF8pID0gbm90IChTdHJpbmcuY29tcGFyZSBuYW1lIG4gPSAwKSBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIFBhdHRlcm4uT2JzTWFwLml0ZXJpXG4gICAgICAgICAgICAoZnVuIGNjX2lkIHBsaXN0IC0+XG4gICAgICAgICAgICAgIFBhdHRlcm4uT2JzTWFwLnNldCB0cGF0dGVybiBjY19pZCAoTGlzdC5maWx0ZXIgdGVzdGVyIHBsaXN0KSlcbiAgICAgICAgICAgIHRwYXR0ZXJuXG4gICAgICAgIGluXG4gICAgICAgIHsgc3RhdGUgd2l0aCBvdXRkYXRlZCA9IGZhbHNlIH0pXG5cbiAgbGV0IGFkZF90cmFja2VkX3NwZWNpZXMgcGF0dGVybnMgbmFtZSB0ZXN0cyBzdGF0ZSA9XG4gICAgYXV4X2FkZF90cmFja2VkIHBhdHRlcm5zIG5hbWUgdGVzdHMgc3RhdGUgc3RhdGUuaW1wLnNwZWNpZXNcblxuICBsZXQgcmVtb3ZlX3RyYWNrZWRfc3BlY2llcyBuYW1lIHN0YXRlID1cbiAgICBsZXQgKCkgPSBzdGF0ZS5vdXRkYXRlZCA8LSB0cnVlIGluXG4gICAgbGV0IHRlc3RlciAobiwgXywgXykgPSBub3QgKFN0cmluZy5jb21wYXJlIG5hbWUgbiA9IDApIGluXG4gICAgbGV0ICgpID1cbiAgICAgIFBhdHRlcm4uT2JzTWFwLml0ZXJpXG4gICAgICAgIChmdW4gY2NfaWQgcGxpc3QgLT5cbiAgICAgICAgICBQYXR0ZXJuLk9ic01hcC5zZXQgc3RhdGUuaW1wLnNwZWNpZXMgY2NfaWQgKExpc3QuZmlsdGVyIHRlc3RlciBwbGlzdCkpXG4gICAgICAgIHN0YXRlLmltcC5zcGVjaWVzXG4gICAgaW5cbiAgICB7IHN0YXRlIHdpdGggb3V0ZGF0ZWQgPSBmYWxzZSB9XG5cbiAgbGV0IGdldF9yYW5kb21fc3RhdGUgc3RhdGUgPSBzdGF0ZS5pbXAucmFuZG9tX3N0YXRlXG5cbiAgbGV0IHNlbmRfaW5zdGFuY2VzX21lc3NhZ2UgbXNnIHN0YXRlID1cbiAgICB7XG4gICAgICBzdGF0ZSB3aXRoXG4gICAgICBpbXAgPVxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGUuaW1wIHdpdGhcbiAgICAgICAgICBpbnN0YW5jZXMgPSBJbnN0YW5jZXMucmVjZWl2ZV9tZXNzYWdlIG1zZyBzdGF0ZS5pbXAuaW5zdGFuY2VzO1xuICAgICAgICB9O1xuICAgIH1cblxuICBsZXQgYWRkX291dGRhdGVkX2RlcGVuZGVuY2llcyBuZXdfZGVwcyBzdGF0ZSA9XG4gICAgbGV0IG91dGRhdGVkX2VsZW1lbnRzID1cbiAgICAgIE9wZXJhdG9yLkRlcFNldC51bmlvbiBuZXdfZGVwcyBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50c1xuICAgIGluXG4gICAgeyBzdGF0ZSB3aXRoIG91dGRhdGVkX2VsZW1lbnRzIH1cblxuICBsZXQgZGVidWdfcHJpbnRfaW5zdGFuY2VzIGYgc3QgPSBJbnN0YW5jZXMuZGVidWdfcHJpbnQgZiBzdC5pbXAuaW5zdGFuY2VzXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHtcbiAgaW5pdF9zdG9wcGluZ190aW1lczogKE5ici50ICogaW50KSBsaXN0O1xuICBtdXRhYmxlIHN0b3BwaW5nX3RpbWVzOiAoTmJyLnQgKiBpbnQpIGxpc3Q7XG4gIHBlcnR1cmJhdGlvbnNfYWxpdmU6IGJvb2wgYXJyYXk7XG4gIHRpbWVfZGVwZW5kZW50X3BlcnRzOiBpbnQgbGlzdDtcbiAgbXV0YWJsZSBmb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnM6IGludCBsaXN0O1xuICBwZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldDogYm9vbCBhcnJheTtcbiAgKCogaW50ZXJuYWwgYXJyYXkgZm9yIHBlcnR1cmJhdGUgZnVuY3Rpb24gKGdsb2JhbCB0byBhdm9pZCB1c2VsZXNzIGFsbG9jKSAqKVxuICBtdXRhYmxlIGZsdXg6IChzdHJpbmcgKiBEYXRhLmRpbl9kYXRhKSBsaXN0O1xuICB3aXRoX2RlbHRhX2FjdGl2aXRpZXM6IGJvb2w7XG59XG5cbmxldCBjb21wYXJlX3N0b3BzICh0MSwgcDEpICh0MiwgcDIpID1cbiAgbGV0IHQgPSBOYnIuY29tcGFyZSB0MSB0MiBpblxuICBpZiB0ID0gMCB0aGVuXG4gICAgY29tcGFyZSBwMSBwMlxuICBlbHNlXG4gICAgdFxuXG5sZXQgZW1wdHkgfndpdGhfZGVsdGFfYWN0aXZpdGllcyBjb3VudGVyIGVudiA9XG4gIGxldCB0MCA9IENvdW50ZXIuaW5pdF90aW1lIGNvdW50ZXIgaW5cbiAgbGV0IHN0b3BwaW5nX3RpbWVzID1cbiAgICBsZXQgYWxnc19kZXBzID0gTW9kZWwuYWxsX2RlcGVuZGVuY2llcyBlbnYgaW5cbiAgICBNb2RlbC5mb2xkX3BlcnR1cmJhdGlvbnNcbiAgICAgIChmdW4gaSBhY2MgeCAtPlxuICAgICAgICBtYXRjaCB4LlByaW1pdGl2ZXMuYWxhcm0gd2l0aFxuICAgICAgICB8IFNvbWUgbiAtPlxuICAgICAgICAgIGxldCBrID0gMS4gKy4gZmxvb3IgKHQwIC8uIE9wdGlvbl91dGlsLnVuc29tZSAwLiAoTmJyLnRvX2Zsb2F0IG4pKSBpblxuICAgICAgICAgIChOYnIubXVsdCAoTmJyLkYgaykgbiwgaSkgOjogYWNjXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBBbGdfZXhwci5pc19lcXVhbGl0eV90ZXN0X3RpbWUgYWxnc19kZXBzXG4gICAgICAgICAgICAgICAgKGZzdCB4LlByaW1pdGl2ZXMucHJlY29uZGl0aW9uKVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKCBcIkVxdWFsaXR5IHRlc3Qgb24gdGltZSByZXF1aXJlcyBhbiBhbGFybVwiLFxuICAgICAgICAgICAgICAgICAgICAgc25kIHguUHJpbWl0aXZlcy5wcmVjb25kaXRpb24gKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBBbGdfZXhwci5pc19lcXVhbGl0eV90ZXN0X3RpbWUgYWxnc19kZXBzIChmc3QgeC5QcmltaXRpdmVzLnJlcGVhdClcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICggXCJFcXVhbGl0eSB0ZXN0IG9uIHRpbWUgcmVxdWlyZXMgYW4gYWxhcm1cIixcbiAgICAgICAgICAgICAgICAgICAgIHNuZCB4LlByaW1pdGl2ZXMucmVwZWF0ICkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhY2MpXG4gICAgICBbXSBlbnZcbiAgaW5cbiAgbGV0IHN0b3BzID0gTGlzdC5zb3J0IGNvbXBhcmVfc3RvcHMgc3RvcHBpbmdfdGltZXMgaW5cbiAgbGV0IHRpbWVfZGVwZW5kZW50X3BlcnRzID1cbiAgICBsZXQgcmVjIGF1eCBkZXAgYWNjID1cbiAgICAgIE9wZXJhdG9yLkRlcFNldC5mb2xkXG4gICAgICAgIChmdW4gZGVwIHBlcnRzIC0+XG4gICAgICAgICAgbWF0Y2ggZGVwIHdpdGhcbiAgICAgICAgICB8IE9wZXJhdG9yLkFMRyBqIC0+XG4gICAgICAgICAgICBhdXggKE1vZGVsLmdldF9hbGdfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgZW52IGopIHBlcnRzXG4gICAgICAgICAgfCBPcGVyYXRvci5NT0RJRiBwIC0+XG4gICAgICAgICAgICBMaXN0X3V0aWwubWVyZ2VfdW5pcSBNb2RzLmludF9jb21wYXJlIFsgcCBdIHBlcnRzXG4gICAgICAgICAgfCBPcGVyYXRvci5SVUxFIF8gLT4gcGVydHMpXG4gICAgICAgIGRlcCBhY2NcbiAgICBpblxuICAgIGF1eFxuICAgICAgKGxldCB4LCBfLCBfLCBfID0gTW9kZWwuYWxsX2RlcGVuZGVuY2llcyBlbnYgaW5cbiAgICAgICB4KVxuICAgICAgW11cbiAgaW5cbiAge1xuICAgIGluaXRfc3RvcHBpbmdfdGltZXMgPSBzdG9wcztcbiAgICBzdG9wcGluZ190aW1lcyA9IHN0b3BzO1xuICAgIHBlcnR1cmJhdGlvbnNfYWxpdmUgPSBBcnJheS5tYWtlIChNb2RlbC5uYl9wZXJ0dXJiYXRpb25zIGVudikgdHJ1ZTtcbiAgICBmb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnMgPSBbXTtcbiAgICB0aW1lX2RlcGVuZGVudF9wZXJ0cztcbiAgICBwZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldCA9IEFycmF5Lm1ha2UgKE1vZGVsLm5iX3BlcnR1cmJhdGlvbnMgZW52KSB0cnVlO1xuICAgIGZsdXggPSBbXTtcbiAgICB3aXRoX2RlbHRhX2FjdGl2aXRpZXM7XG4gIH1cblxubGV0IG9ic2VydmFibGVzX3ZhbHVlcyBlbnYgZ3JhcGggY291bnRlciA9XG4gIE1vZGVsLm1hcF9vYnNlcnZhYmxlcyAoUnVsZV9pbnRlcnByZXRlci52YWx1ZV9hbGcgY291bnRlciBncmFwaCkgZW52XG5cbmxldCBkb19tb2RpZmljYXRpb24gfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgZXh0cmFcbiAgICBtb2RpZmljYXRpb24gPVxuICBsZXQgcHJpbnRfZXhwcl92YWwgPVxuICAgIEthcHBhX3ByaW50ZXIucHJpbnRfZXhwcl92YWwgKFJ1bGVfaW50ZXJwcmV0ZXIudmFsdWVfYWxnIGNvdW50ZXIgZ3JhcGgpXG4gIGluXG4gIG1hdGNoIG1vZGlmaWNhdGlvbiB3aXRoXG4gIHwgUHJpbWl0aXZlcy5JVEVSX1JVTEUgKCh2LCBfKSwgcikgLT5cbiAgICBsZXQgdGV4dCA9XG4gICAgICBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIlxuICAgICAgICAoS2FwcGFfcHJpbnRlci5tb2RpZmljYXRpb24gfm5vQ291bnRlcnM6ZGVidWdfbW9kZSB+ZW52KVxuICAgICAgICBtb2RpZmljYXRpb25cbiAgICBpblxuICAgIGxldCBncmFwaCcgPVxuICAgICAgTmJyLm1heWJlX2l0ZXJpXG4gICAgICAgIChmdW4gXyBnIC0+XG4gICAgICAgICAgUnVsZV9pbnRlcnByZXRlci5mb3JjZV9ydWxlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdcbiAgICAgICAgICAgIChUcmFjZS5QRVJUIHRleHQpIHIpXG4gICAgICAgIGdyYXBoXG4gICAgICAgIChSdWxlX2ludGVycHJldGVyLnZhbHVlX2FsZyBjb3VudGVyIGdyYXBoIHYpXG4gICAgaW5cbiAgICBsZXQgZ3JhcGgnJywgZXh0cmEnID1cbiAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIudXBkYXRlX291dGRhdGVkX2FjdGl2aXRpZXMgfmRlYnVnX21vZGVcbiAgICAgICAgKGZ1biBfIF8gXyAtPiAoKSlcbiAgICAgICAgZW52IGNvdW50ZXIgZ3JhcGgnIGV4dHJhXG4gICAgaW5cbiAgICBmYWxzZSwgZ3JhcGgnJywgc3RhdGUsIGV4dHJhJ1xuICB8IFByaW1pdGl2ZXMuVVBEQVRFIChpLCAoZXhwciwgXykpIC0+XG4gICAgbGV0IGdyYXBoJyA9IFJ1bGVfaW50ZXJwcmV0ZXIub3ZlcndyaXRlX3ZhciBpIGNvdW50ZXIgZ3JhcGggZXhwciBpblxuICAgIGxldCBncmFwaCcnLCBleHRyYScgPVxuICAgICAgUnVsZV9pbnRlcnByZXRlci51cGRhdGVfb3V0ZGF0ZWRfYWN0aXZpdGllcyB+ZGVidWdfbW9kZVxuICAgICAgICAoZnVuIF8gXyBfIC0+ICgpKVxuICAgICAgICBlbnYgY291bnRlciBncmFwaCcgZXh0cmFcbiAgICBpblxuICAgIGZhbHNlLCBncmFwaCcnLCBzdGF0ZSwgZXh0cmEnXG4gIHwgUHJpbWl0aXZlcy5TVE9QIHBleHByIC0+XG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHBleHByIDw+IFtdIHRoZW4gKFxuICAgICAgICBsZXQgZmlsZSA9IEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIHBleHByIGluXG4gICAgICAgIG91dHB1dHNcbiAgICAgICAgICAoRGF0YS5TbmFwc2hvdFxuICAgICAgICAgICAgICggZmlsZSxcbiAgICAgICAgICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuc25hcHNob3QgfmRlYnVnX21vZGUgfnJhdzpmYWxzZSBlbnYgY291bnRlclxuICAgICAgICAgICAgICAgICBncmFwaCApKVxuICAgICAgKVxuICAgIGluXG4gICAgdHJ1ZSwgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuUFJJTlQgKHBlX2ZpbGUsIHBlX2V4cHIpIC0+XG4gICAgbGV0IGZpbGVfb3B0ID1cbiAgICAgIG1hdGNoIHBlX2ZpbGUgd2l0aFxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IF8gLT4gU29tZSAoRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgcGVfZmlsZSlcbiAgICBpblxuICAgIGxldCBsaW5lID0gRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgcGVfZXhwciBpblxuICAgIGxldCAoKSA9XG4gICAgICBvdXRwdXRzXG4gICAgICAgIChEYXRhLlByaW50XG4gICAgICAgICAgIHsgRGF0YS5maWxlX2xpbmVfbmFtZSA9IGZpbGVfb3B0OyBEYXRhLmZpbGVfbGluZV90ZXh0ID0gbGluZSB9KVxuICAgIGluXG4gICAgZmFsc2UsIGdyYXBoLCBzdGF0ZSwgZXh0cmFcbiAgfCBQcmltaXRpdmVzLlBMT1RFTlRSWSAtPlxuICAgIGxldCAoKSA9IG91dHB1dHMgKERhdGEuUGxvdCAob2JzZXJ2YWJsZXNfdmFsdWVzIGVudiBncmFwaCBjb3VudGVyKSkgaW5cbiAgICBmYWxzZSwgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuU05BUFNIT1QgKHJhdywgcGV4cHIpIC0+XG4gICAgbGV0IGZpbGUgPVxuICAgICAgaWYgcGV4cHIgPSBbXSB0aGVuXG4gICAgICAgIFwic25hcC5rYVwiXG4gICAgICBlbHNlXG4gICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIHBleHByXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgb3V0cHV0c1xuICAgICAgICAoRGF0YS5TbmFwc2hvdFxuICAgICAgICAgICAoZmlsZSwgUnVsZV9pbnRlcnByZXRlci5zbmFwc2hvdCB+ZGVidWdfbW9kZSB+cmF3IGVudiBjb3VudGVyIGdyYXBoKSlcbiAgICBpblxuICAgIGZhbHNlLCBncmFwaCwgc3RhdGUsIGV4dHJhXG4gIHwgUHJpbWl0aXZlcy5DRkxPVyAobmFtZSwgY2MsIHRlc3RzKSAtPlxuICAgIGxldCBuYW1lID1cbiAgICAgIG1hdGNoIG5hbWUgd2l0aFxuICAgICAgfCBTb21lIHMgLT4gc1xuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiXG4gICAgICAgICAgKFBwLmFycmF5IFBwLmNvbW1hIChmdW4gXyAtPlxuICAgICAgICAgICAgICAgUGF0dGVybi5wcmludCB+bm9Db3VudGVyczpkZWJ1Z19tb2RlIH5kb21haW4gfndpdGhfaWQ6ZmFsc2UpKVxuICAgICAgICAgIGNjXG4gICAgaW5cbiAgICAoIGZhbHNlLFxuICAgICAgUnVsZV9pbnRlcnByZXRlci5hZGRfdHJhY2tlZCB+b3V0cHV0cyBjYyBuYW1lIHRlc3RzIGdyYXBoLFxuICAgICAgc3RhdGUsXG4gICAgICBleHRyYSApXG4gIHwgUHJpbWl0aXZlcy5DRkxPV09GRiAobmFtZSwgY2MpIC0+XG4gICAgZmFsc2UsIFJ1bGVfaW50ZXJwcmV0ZXIucmVtb3ZlX3RyYWNrZWQgY2MgbmFtZSBncmFwaCwgc3RhdGUsIGV4dHJhXG4gIHwgUHJpbWl0aXZlcy5TUEVDSUVTX09GRiBmbiAtPlxuICAgIGxldCBmaWxlID0gRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgZm4gaW5cbiAgICBmYWxzZSwgUnVsZV9pbnRlcnByZXRlci5yZW1vdmVfdHJhY2tlZF9zcGVjaWVzIGZpbGUgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuRElOIChyZWwsIHMpIC0+XG4gICAgbGV0IGZpbGUgPSBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludF9leHByX3ZhbCBzIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmXG4gICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgKGZ1biAobmFtZSwgeCkgLT4gZmlsZSA9IG5hbWUgJiYgeC5EYXRhLmRpbl9raW5kID0gcmVsKVxuICAgICAgICAgIHN0YXRlLmZsdXhcbiAgICAgIHRoZW5cbiAgICAgICAgb3V0cHV0c1xuICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgXCJBdCB0PSVmLCBlPSVpOiB0cmFja2luZyBESU4gaW50byBcXFwiJXNcXFwiIHdhcyBhbHJlYWR5IG9uXCJcbiAgICAgICAgICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcilcbiAgICAgICAgICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X2V2ZW50IGNvdW50ZXIpXG4gICAgICAgICAgICAgICAgICAgZmlsZSApKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIHN0YXRlLmZsdXggPC0gKGZpbGUsIEZsdXhtYXAuY3JlYXRlX2ZsdXggZW52IGNvdW50ZXIgcmVsKSA6OiBzdGF0ZS5mbHV4XG4gICAgaW5cbiAgICBmYWxzZSwgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuRElOT0ZGIHMgLT5cbiAgICBsZXQgZmlsZSA9IEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIHMgaW5cbiAgICBsZXQgdGhlc2UsIG90aGVycyA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiAoZnVuIChuYW1lLCBfKSAtPiBuYW1lID0gZmlsZSkgc3RhdGUuZmx1eFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChuYW1lLCB4KSAtPlxuICAgICAgICAgIG91dHB1dHMgKERhdGEuRElOIChuYW1lLCBGbHV4bWFwLnN0b3BfZmx1eCBlbnYgY291bnRlciB4KSkpXG4gICAgICAgIHRoZXNlXG4gICAgaW5cbiAgICBsZXQgKCkgPSBzdGF0ZS5mbHV4IDwtIG90aGVycyBpblxuICAgIGZhbHNlLCBncmFwaCwgc3RhdGUsIGV4dHJhXG4gIHwgUHJpbWl0aXZlcy5TUEVDSUVTIChzLCBjYywgdGVzdHMpIC0+XG4gICAgbGV0IGZpbGUgPSBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludF9leHByX3ZhbCBzIGluXG4gICAgKCBmYWxzZSxcbiAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuYWRkX3RyYWNrZWRfc3BlY2llcyBjYyBmaWxlIHRlc3RzIGdyYXBoLFxuICAgICAgc3RhdGUsXG4gICAgICBleHRyYSApXG5cbmxldCByZWMgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm0gZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICBtaXhfY2hhbmdlZCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2UsIGdyYXBoLCBzdGF0ZSwgbWl4X2NoYW5nZWRcbiAgfCBpIDo6IHRhaWwgLT5cbiAgICBsZXQgcGVydCA9IE1vZGVsLmdldF9wZXJ0dXJiYXRpb24gZW52IGkgaW5cbiAgICBsZXQgbW9kX2FsYXJtID1cbiAgICAgIG1hdGNoIHBlcnQuUHJpbWl0aXZlcy5hbGFybSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgfCBTb21lIF8gLT4gaXNfYWxhcm1cbiAgICBpblxuICAgIGlmXG4gICAgICBzdGF0ZS5wZXJ0dXJiYXRpb25zX2FsaXZlLihpKVxuICAgICAgJiYgc3RhdGUucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQuKGkpXG4gICAgICAmJiBSdWxlX2ludGVycHJldGVyLnZhbHVlX2Jvb2wgY291bnRlciBncmFwaFxuICAgICAgICAgICAoZnN0IHBlcnQuUHJpbWl0aXZlcy5wcmVjb25kaXRpb24pXG4gICAgICAmJiBtb2RfYWxhcm1cbiAgICB0aGVuIChcbiAgICAgIGxldCBtaXhfY2hhbmdlZCA9IG1peF9jaGFuZ2VkICYmIHBlcnQuUHJpbWl0aXZlcy5uZWVkc19iYWNrdHJhY2sgaW5cbiAgICAgIGxldCBzdG9wLCBncmFwaCwgc3RhdGUsIHRhaWwnID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuICgoc3RvcCwgZ3JhcGgsIHN0YXRlLCBleHRyYSkgYXMgYWNjKSBlZmZlY3QgLT5cbiAgICAgICAgICAgIGlmIHN0b3AgdGhlblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZG9fbW9kaWZpY2F0aW9uIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlIGV4dHJhXG4gICAgICAgICAgICAgICAgZWZmZWN0KVxuICAgICAgICAgIChmYWxzZSwgZ3JhcGgsIHN0YXRlLCB0YWlsKVxuICAgICAgICAgIHBlcnQuUHJpbWl0aXZlcy5lZmZlY3RcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBzdGF0ZS5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldC4oaSkgPC0gZmFsc2UgaW5cbiAgICAgIGxldCBhbGl2ZSA9XG4gICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIudmFsdWVfYm9vbCBjb3VudGVyIGdyYXBoIChmc3QgcGVydC5QcmltaXRpdmVzLnJlcGVhdClcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBhbGl2ZSAmJiBwZXJ0LlByaW1pdGl2ZXMuYWxhcm0gPSBOb25lIHRoZW5cbiAgICAgICAgICBzdGF0ZS5mb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnMgPC0gaSA6OiBzdGF0ZS5mb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnNcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBzdGF0ZS5wZXJ0dXJiYXRpb25zX2FsaXZlLihpKSA8LSBhbGl2ZSBpblxuICAgICAgbGV0IG1peF9jaGFuZ2VkJyA9IG1peF9jaGFuZ2VkIHx8IHBlcnQuUHJpbWl0aXZlcy5uZWVkc19iYWNrdHJhY2sgaW5cbiAgICAgIGlmIHN0b3AgdGhlblxuICAgICAgICBzdG9wLCBncmFwaCwgc3RhdGUsIG1peF9jaGFuZ2VkJ1xuICAgICAgZWxzZVxuICAgICAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTpmYWxzZSBlbnYgY291bnRlciBncmFwaCBzdGF0ZVxuICAgICAgICAgIG1peF9jaGFuZ2VkJyB0YWlsJ1xuICAgICkgZWxzZVxuICAgICAgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm06ZmFsc2UgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICAgICAgbWl4X2NoYW5nZWQgdGFpbFxuXG5sZXQgZG9fbW9kaWZpY2F0aW9ucyB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBncmFwaCBzdGF0ZSBsaXN0ID1cbiAgbGV0IHN0b3AsIGdyYXBoLCBzdGF0ZSwgZXh0cmEgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuICgoc3RvcCwgZ3JhcGgsIHN0YXRlLCBleHRyYSkgYXMgYWNjKSBlZmZlY3QgLT5cbiAgICAgICAgaWYgc3RvcCB0aGVuXG4gICAgICAgICAgYWNjXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBkb19tb2RpZmljYXRpb24gfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgZXh0cmFcbiAgICAgICAgICAgIGVmZmVjdClcbiAgICAgIChmYWxzZSwgZ3JhcGgsIHN0YXRlLCBbXSkgbGlzdFxuICBpblxuICBpZiBzdG9wIHRoZW5cbiAgICBzdG9wLCBncmFwaCwgc3RhdGUsIGZhbHNlXG4gIGVsc2VcbiAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTpmYWxzZSBlbnYgY291bnRlciBncmFwaCBzdGF0ZVxuICAgICAgZmFsc2UgZXh0cmFcblxubGV0IGluaXRpYWxpemUgfmJpbmQgfnJldHVybiB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBncmFwaDAgc3RhdGUwXG4gICAgaW5pdF9sID1cbiAgbGV0IG1ncmFwaCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gbXN0YXRlIChhbGcsIGNvbXBpbGVkX3J1bGUpIC0+XG4gICAgICAgIGJpbmQgbXN0YXRlIChmdW4gKHN0b3AsIHN0YXRlLCBzdGF0ZTApIC0+XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBSdWxlX2ludGVycHJldGVyLnZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIGFsZyBpblxuICAgICAgICAgICAgbGV0IGFjdGlvbnMgPVxuICAgICAgICAgICAgICBjb21waWxlZF9ydWxlLlByaW1pdGl2ZXMuaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGNyZWF0aW9uc19zb3J0ID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGwgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKHgsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIHggOjogbFxuICAgICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5CaW5kIF9cbiAgICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF8gfCBJbnN0YW50aWF0aW9uLkZyZWUgX1xuICAgICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgICAgICAgW10gYWN0aW9uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAoIHN0b3AsXG4gICAgICAgICAgICAgICAgTmJyLml0ZXJpXG4gICAgICAgICAgICAgICAgICAoZnVuIF8gcyAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuYXBwbHlfZ2l2ZW5fcnVsZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgcyAoVHJhY2UuSU5JVCBjcmVhdGlvbnNfc29ydCkgY29tcGlsZWRfcnVsZVxuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUnVsZV9pbnRlcnByZXRlci5TdWNjZXNzIHMgLT4gc1xuICAgICAgICAgICAgICAgICAgICB8IFJ1bGVfaW50ZXJwcmV0ZXIuQ2xhc2ggfCBSdWxlX2ludGVycHJldGVyLkNvcnJlY3RlZFxuICAgICAgICAgICAgICAgICAgICB8IFJ1bGVfaW50ZXJwcmV0ZXIuQmxvY2tlZCAtPlxuICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiQnVnZ2VkIGluaXRpYWwgcnVsZVwiKSkpXG4gICAgICAgICAgICAgICAgICBzdGF0ZSB2YWx1ZSxcbiAgICAgICAgICAgICAgICBzdGF0ZTAgKSkpXG4gICAgICAocmV0dXJuIChmYWxzZSwgZ3JhcGgwLCBzdGF0ZTApKVxuICAgICAgaW5pdF9sXG4gIGluXG4gIGJpbmQgbWdyYXBoIChmdW4gKF8sIGdyYXBoLCBzdGF0ZTApIC0+XG4gICAgICBsZXQgbWlkX2dyYXBoLCBfID1cbiAgICAgICAgUnVsZV9pbnRlcnByZXRlci51cGRhdGVfb3V0ZGF0ZWRfYWN0aXZpdGllcyB+ZGVidWdfbW9kZVxuICAgICAgICAgIChmdW4gXyBfIF8gLT4gKCkpXG4gICAgICAgICAgZW52IGNvdW50ZXIgZ3JhcGggW11cbiAgICAgIGluXG4gICAgICBsZXQgc3RvcCwgZ3JhcGgsIHN0YXRlLCBfID1cbiAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgIChmdW4gaSAoKHN0b3AsIGdyYXBoLCBzdGF0ZSwgbWl4X2NoYW5nZWQpIGFzIGFjYykgXyAtPlxuICAgICAgICAgICAgaWYgc3RvcCB0aGVuXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTp0cnVlIGVudiBjb3VudGVyIGdyYXBoXG4gICAgICAgICAgICAgICAgc3RhdGUgbWl4X2NoYW5nZWQgWyBpIF0pXG4gICAgICAgICAgKGZhbHNlLCBtaWRfZ3JhcGgsIHN0YXRlMCwgZmFsc2UpXG4gICAgICAgICAgc3RhdGUwLnBlcnR1cmJhdGlvbnNfYWxpdmVcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBBcnJheS5pdGVyaVxuICAgICAgICAgIChmdW4gaSBfIC0+IHN0YXRlMC5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldC4oaSkgPC0gdHJ1ZSlcbiAgICAgICAgICBzdGF0ZTAucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXRcbiAgICAgIGluXG4gICAgICByZXR1cm4gKHN0b3AsIGdyYXBoLCBzdGF0ZSkpXG5cbmxldCBvbmVfcnVsZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnYgY291bnRlciBncmFwaCBzdGF0ZVxuICAgIGluc3RhbmNlID1cbiAgbGV0IHByZXZfYWN0aXZpdHkgPSBSdWxlX2ludGVycHJldGVyLmFjdGl2aXR5IGdyYXBoIGluXG4gIGxldCBhY3Rfc3RhY2sgPSByZWYgW10gaW5cbiAgbGV0IGZpbmFsaXplX3JlZ2lzdHJhdGlvbiBteV9zeW50YXhfcmRfaWQgPVxuICAgIG1hdGNoIHN0YXRlLmZsdXgsIHN0YXRlLndpdGhfZGVsdGFfYWN0aXZpdGllcyB3aXRoXG4gICAgfCBbXSwgZmFsc2UgLT4gKClcbiAgICB8IGwsIF8gLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIHN0YXRlLndpdGhfZGVsdGFfYWN0aXZpdGllcyB0aGVuXG4gICAgICAgICAgb3V0cHV0cyAoRGF0YS5EZWx0YUFjdGl2aXRpZXMgKG15X3N5bnRheF9yZF9pZCwgIWFjdF9zdGFjaykpXG4gICAgICBpblxuICAgICAgbGV0IG5fYWN0aXZpdHkgPSBSdWxlX2ludGVycHJldGVyLmFjdGl2aXR5IGdyYXBoIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIChfLCBmbCkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IEZsdXhtYXAuaW5jcl9mbHV4X2hpdCBteV9zeW50YXhfcmRfaWQgZmwgaW5cbiAgICAgICAgICAgIG1hdGNoIGZsLkRhdGEuZGluX2tpbmQgd2l0aFxuICAgICAgICAgICAgfCBQcmltaXRpdmVzLkFCU09MVVRFIHwgUHJpbWl0aXZlcy5SRUxBVElWRSAtPiAoKVxuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlBST0JBQklMSVRZIC0+XG4gICAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAgIChmdW4gKHN5bnRheF9yZF9pZCwgKF8sIG5ld19hY3QpKSAtPlxuICAgICAgICAgICAgICAgICAgRmx1eG1hcC5pbmNyX2ZsdXhfZmx1eCBteV9zeW50YXhfcmRfaWQgc3ludGF4X3JkX2lkXG4gICAgICAgICAgICAgICAgICAgIChsZXQgY2FuZCA9IG5ld19hY3QgLy4gbl9hY3Rpdml0eSBpblxuICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgY2FuZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IEZQX25hbiB8IEZQX2luZmluaXRlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN0ID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlciBpblxuICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggTm9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFuIGluZmluaXRlIChvciBOYU4pIGFjdGl2aXR5IHZhcmlhdGlvbiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcyBiZWVuIGlnbm9yZWQgYXQgdD0lZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdCApKVxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAwLlxuICAgICAgICAgICAgICAgICAgICAgfCBGUF96ZXJvIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+IGNhbmQpXG4gICAgICAgICAgICAgICAgICAgIGZsKVxuICAgICAgICAgICAgICAgICFhY3Rfc3RhY2spXG4gICAgICAgICAgbFxuICAgICAgaW5cbiAgICAgIGFjdF9zdGFjayA6PSBbXVxuICBpblxuICAoKiBsZXQgKCkgPSAqKVxuICAoKiAgIEZvcm1hdC5lcHJpbnRmIFwiJWFALlwiIChSdWxlX2ludGVycHJldGVyLnByaW50X2luamVjdGlvbnMgZW52KSBncmFwaCBpbiAqKVxuICBsZXQgYXBwbGllZF9yaWRfc3ludGF4LCBmaW5hbF9zdGVwLCBncmFwaCcgPVxuICAgIFJ1bGVfaW50ZXJwcmV0ZXIuYXBwbHlfaW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgfm1heENvbnNlY3V0aXZlQ2xhc2hcbiAgICAgIGVudiBjb3VudGVyIGdyYXBoIGluc3RhbmNlXG4gIGluXG4gIG1hdGNoIGFwcGxpZWRfcmlkX3N5bnRheCB3aXRoXG4gIHwgTm9uZSAtPiBmaW5hbF9zdGVwLCBncmFwaCcsIHN0YXRlXG4gIHwgU29tZSBzeW50YXhfcmlkIC0+XG4gICAgbGV0IHJlZ2lzdGVyX25ld19hY3Rpdml0eSBzeW50YXhfcmRfaWQgb2xkX2FjdCBuZXdfYWN0ID1cbiAgICAgIG1hdGNoIHN0YXRlLmZsdXgsIHN0YXRlLndpdGhfZGVsdGFfYWN0aXZpdGllcyB3aXRoXG4gICAgICB8IFtdLCBmYWxzZSAtPiAoKVxuICAgICAgfCBsLCBfIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgYWN0X3N0YWNrIDo9IChzeW50YXhfcmRfaWQsIChvbGRfYWN0LCBuZXdfYWN0KSkgOjogIWFjdF9zdGFja1xuICAgICAgICBpblxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIChfLCBmbCkgLT5cbiAgICAgICAgICAgIEZsdXhtYXAuaW5jcl9mbHV4X2ZsdXggc3ludGF4X3JpZCBzeW50YXhfcmRfaWRcbiAgICAgICAgICAgICAgKGxldCBjYW5kID1cbiAgICAgICAgICAgICAgICAgbWF0Y2ggZmwuRGF0YS5kaW5fa2luZCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5BQlNPTFVURSAtPiBuZXdfYWN0IC0uIG9sZF9hY3RcbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlBST0JBQklMSVRZIC0+IC0uKG9sZF9hY3QgLy4gcHJldl9hY3Rpdml0eSlcbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlJFTEFUSVZFIC0+XG4gICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IG9sZF9hY3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBGUF96ZXJvIHwgRlBfbmFuIHwgRlBfaW5maW5pdGUgLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAobmV3X2FjdCAtLiBvbGRfYWN0KSAvLiBvbGRfYWN0XG4gICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgbmV3X2FjdCAtLiBvbGRfYWN0XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgY2FuZCB3aXRoXG4gICAgICAgICAgICAgICB8IEZQX25hbiB8IEZQX2luZmluaXRlIC0+XG4gICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgbGV0IGN0ID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlciBpblxuICAgICAgICAgICAgICAgICAgIG91dHB1dHNcbiAgICAgICAgICAgICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICggTm9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFuIGluZmluaXRlIChvciBOYU4pIGFjdGl2aXR5IHZhcmlhdGlvbiBoYXMgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWVuIGlnbm9yZWQgYXQgdD0lZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdCApKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAwLlxuICAgICAgICAgICAgICAgfCBGUF96ZXJvIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+IGNhbmQpXG4gICAgICAgICAgICAgIGZsKVxuICAgICAgICAgIGxcbiAgICBpblxuICAgIGxldCBmb3JjZV90ZXN0ZWQgPSBzdGF0ZS5mb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnMgaW5cbiAgICBsZXQgKCkgPSBzdGF0ZS5mb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnMgPC0gW10gaW5cbiAgICBsZXQgZ3JhcGgnJywgZXh0cmFfcGVydCA9XG4gICAgICBSdWxlX2ludGVycHJldGVyLnVwZGF0ZV9vdXRkYXRlZF9hY3Rpdml0aWVzIH5kZWJ1Z19tb2RlXG4gICAgICAgIHJlZ2lzdGVyX25ld19hY3Rpdml0eSBlbnYgY291bnRlciBncmFwaCcgZm9yY2VfdGVzdGVkXG4gICAgaW5cbiAgICBsZXQgKCkgPSBmaW5hbGl6ZV9yZWdpc3RyYXRpb24gc3ludGF4X3JpZCBpblxuICAgIGxldCBzdG9wLCBncmFwaCcnJywgc3RhdGUnLCBfbWl4X2NoYW5nZWQgPVxuICAgICAgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm06ZmFsc2UgZW52IGNvdW50ZXIgZ3JhcGgnJyBzdGF0ZVxuICAgICAgICBmYWxzZSBleHRyYV9wZXJ0XG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgKGZ1biBpIF8gLT4gc3RhdGUucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQuKGkpIDwtIHRydWUpXG4gICAgICAgIHN0YXRlLnBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0XG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgZGVidWdfbW9kZSB0aGVuXG4gICAgICAgIEZvcm1hdC5wcmludGYgXCJAWzx2Pk9idGFpbmVkQCAlYUBdQC5cIlxuICAgICAgICAgIChSdWxlX2ludGVycHJldGVyLnByaW50IGVudilcbiAgICAgICAgICBncmFwaCcnJ1xuICAgIGluXG4gICAgZmluYWxfc3RlcCB8fCBzdG9wLCBncmFwaCcnJywgc3RhdGUnXG5cbmxldCByZWMgcGVydHVyYmF0ZV91bnRpbF9maXJzdF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgZW52IGNvdW50ZXIgfm91dHB1dHNcbiAgICAoc3RvcCwgZ3JhcGgsIHN0YXRlLCBkdCkgPVxuICBtYXRjaCBzdGF0ZS5zdG9wcGluZ190aW1lcyB3aXRoXG4gIHwgW10gLT4gc3RvcCwgZ3JhcGgsIHN0YXRlLCBkdCwgZmFsc2VcbiAgfCAodGksIHBlKSA6OiB0YWlsIC0+XG4gICAgaWYgTmJyLmlzX3NtYWxsZXIgdGkgKE5ici5GIChDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyICsuIGR0KSkgdGhlbiAoXG4gICAgICBsZXQgcGVydCA9IE1vZGVsLmdldF9wZXJ0dXJiYXRpb24gZW52IHBlIGluXG4gICAgICBpZiBub3QgcGVydC5QcmltaXRpdmVzLm5lZWRzX2JhY2t0cmFjayB0aGVuIChcbiAgICAgICAgbGV0IHN0b3AnLCBncmFwaCcsIHN0YXRlJywgZHQnID1cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTmJyLnRvX2Zsb2F0IChOYnIuc3ViIHRpIChOYnIuRiAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcikpKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmFsc2UsIGdyYXBoLCBzdGF0ZSwgZHRcbiAgICAgICAgICB8IFNvbWUgZHRpIC0+XG4gICAgICAgICAgICBsZXQgZHQnID0gZHQgLS4gZHRpIGluXG4gICAgICAgICAgICAoKnNldCB0aW1lIGZvciBwZXJ0dXJiYXRlICopXG4gICAgICAgICAgICBpZiBDb3VudGVyLm9uZV90aW1lX2FkdmFuY2UgY291bnRlciBkdGkgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBzdG9wJywgZ3JhcGgnLCBzdGF0ZScsIF8gPVxuICAgICAgICAgICAgICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOnRydWUgZW52IGNvdW50ZXIgZ3JhcGhcbiAgICAgICAgICAgICAgICAgIHN0YXRlIGZhbHNlIFsgcGUgXVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgdGFpbCcgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHBlcnQuUHJpbWl0aXZlcy5hbGFybSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IHRhaWxcbiAgICAgICAgICAgICAgICB8IFNvbWUgbiAtPlxuICAgICAgICAgICAgICAgICAgaWYgc3RhdGUucGVydHVyYmF0aW9uc19hbGl2ZS4ocGUpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgTGlzdF91dGlsLm1lcmdlX3VuaXEgY29tcGFyZV9zdG9wcyBbIE5ici5hZGQgdGkgbiwgcGUgXSB0YWlsXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRhaWxcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gc3RhdGUnLnN0b3BwaW5nX3RpbWVzIDwtIHRhaWwnIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHN0YXRlJy5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldC4ocGUpIDwtIHRydWUgaW5cbiAgICAgICAgICAgICAgKCogQXJndW1lbnQgdG8gcmVzZXQgb25seSBwZSBhbmQgbm90IGFsbCBwZXJ0cyBpcyBcImlmXG4gICAgICAgICAgICAgICAgIHlvdSdyZSBub3QgYmFja3RyYWNraW5nLCBub3RoaW5nIGRlcGVuZHMgdXBvblxuICAgICAgICAgICAgICAgICB5b3VcIi4uLiBXZSdkIGJldHRlciBnZXQgc3VyZSBvZiB0aGF0IDotKSAqKVxuICAgICAgICAgICAgICBzdG9wJywgZ3JhcGgnLCBzdGF0ZScsIGR0J1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIHRydWUsIGdyYXBoLCBzdGF0ZSwgZHQnXG4gICAgICAgIGluXG5cbiAgICAgICAgcGVydHVyYmF0ZV91bnRpbF9maXJzdF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgZW52IGNvdW50ZXIgfm91dHB1dHNcbiAgICAgICAgICAoc3RvcCcsIGdyYXBoJywgc3RhdGUnLCBkdCcpXG4gICAgICAgICgqIGlmIHNvbWUgcGVydHVyYmF0aW9uIG5lZWRzIGJhY2t0cmFjaywgcmV0dXJuIHRoZSBwZXJ0dXJiYXRpb24gKilcbiAgICAgICkgZWxzZVxuICAgICAgICBzdG9wLCBncmFwaCwgc3RhdGUsIGR0LCB0cnVlXG4gICAgKSBlbHNlXG4gICAgICBzdG9wLCBncmFwaCwgc3RhdGUsIGR0LCBmYWxzZVxuXG5sZXQgcGVydHVyYmF0ZV93aXRoX2JhY2t0cmFjayB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBncmFwaCBzdGF0ZSA9XG4gIGZ1bmN0aW9uXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgKHRpLCBwZSkgOjogdGFpbCAtPlxuICAgIGxldCB0YWlsJyA9XG4gICAgICBtYXRjaCAoTW9kZWwuZ2V0X3BlcnR1cmJhdGlvbiBlbnYgcGUpLlByaW1pdGl2ZXMuYWxhcm0gd2l0aFxuICAgICAgfCBOb25lIC0+IHRhaWxcbiAgICAgIHwgU29tZSBuIC0+IExpc3RfdXRpbC5tZXJnZV91bmlxIGNvbXBhcmVfc3RvcHMgWyBOYnIuYWRkIHRpIG4sIHBlIF0gdGFpbFxuICAgIGluXG4gICAgbGV0ICgpID0gc3RhdGUuc3RvcHBpbmdfdGltZXMgPC0gdGFpbCcgaW5cbiAgICBpZiBDb3VudGVyLm9uZV90aW1lX2NvcnJlY3Rpb25fZXZlbnQgfnRpIGNvdW50ZXIgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBsZXQgb3V0cHV0cyBjb3VudGVyJyB0aW1lID1cbiAgICAgICAgICBsZXQgY2FuZCA9XG4gICAgICAgICAgICBvYnNlcnZhYmxlc192YWx1ZXMgZW52IGdyYXBoIChDb3VudGVyLmZha2VfdGltZSBjb3VudGVyJyB0aW1lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGNhbmQgPiAxIHRoZW4gb3V0cHV0cyAoRGF0YS5QbG90IGNhbmQpXG4gICAgICAgIGluXG4gICAgICAgIENvdW50ZXIuZmlsbCB+b3V0cHV0cyBjb3VudGVyIH5kdDowLlxuICAgICAgaW5cbiAgICAgIGxldCBzdG9wLCBncmFwaCcsIHN0YXRlJywgXyA9XG4gICAgICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOnRydWUgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICAgICAgICBmYWxzZSBbIHBlIF1cbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBBcnJheS5pdGVyaVxuICAgICAgICAgIChmdW4gaSBfIC0+IHN0YXRlJy5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldC4oaSkgPC0gdHJ1ZSlcbiAgICAgICAgICBzdGF0ZScucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXRcbiAgICAgIGluXG4gICAgICBzdG9wLCBncmFwaCcsIHN0YXRlJ1xuICAgICkgZWxzZVxuICAgICAgdHJ1ZSwgZ3JhcGgsIHN0YXRlXG5cbmxldCByZWd1bGFyX2xvb3BfYm9keSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnYgY291bnRlclxuICAgIGdyYXBoIHN0YXRlIGR0ID1cbiAgbGV0ICgpID1cbiAgICBsZXQgb3V0cHV0cyBjb3VudGVyJyB0aW1lID1cbiAgICAgIGxldCBjYW5kID1cbiAgICAgICAgb2JzZXJ2YWJsZXNfdmFsdWVzIGVudiBncmFwaCAoQ291bnRlci5mYWtlX3RpbWUgY291bnRlcicgdGltZSlcbiAgICAgIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggY2FuZCA+IDEgdGhlbiBvdXRwdXRzIChEYXRhLlBsb3QgY2FuZClcbiAgICBpblxuICAgIENvdW50ZXIuZmlsbCB+b3V0cHV0cyBjb3VudGVyIH5kdFxuICBpblxuICBsZXQgY29udGludWUgPSBDb3VudGVyLm9uZV90aW1lX2FkdmFuY2UgY291bnRlciBkdCBpblxuICBsZXQgcGlja2VkX2luc3RhbmNlID1cbiAgICBSdWxlX2ludGVycHJldGVyLnBpY2tfYW5faW5zdGFuY2UgfmRlYnVnX21vZGUgZW52IGdyYXBoXG4gIGluXG4gIGxldCBzdG9wLCBncmFwaCcsIHN0YXRlJywgbWl4X2NoYW5nZWQgPVxuICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOmZhbHNlIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlXG4gICAgICBmYWxzZSBzdGF0ZS50aW1lX2RlcGVuZGVudF9wZXJ0c1xuICBpblxuICBpZiAobm90IGNvbnRpbnVlKSB8fCBzdG9wIHRoZW5cbiAgICB0cnVlLCBncmFwaCcsIHN0YXRlJ1xuICBlbHNlIGlmXG4gICAgKG5vdCBtaXhfY2hhbmdlZClcbiAgICB8fCBSdWxlX2ludGVycHJldGVyLmlzX2NvcnJlY3RfaW5zdGFuY2UgZW52IGdyYXBoJyBwaWNrZWRfaW5zdGFuY2VcbiAgdGhlblxuICAgIG9uZV9ydWxlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5tYXhDb25zZWN1dGl2ZUNsYXNoIGVudiBjb3VudGVyIGdyYXBoJyBzdGF0ZSdcbiAgICAgIHBpY2tlZF9pbnN0YW5jZVxuICBlbHNlXG4gICAgQ291bnRlci5vbmVfdGltZV9jb3JyZWN0aW9uX2V2ZW50IGNvdW50ZXIsIGdyYXBoJywgc3RhdGUnXG5cbmxldCBhX2xvb3AgfmRlYnVnX21vZGUgfm91dHB1dHMgfmR1bXBJZkRlYWRsb2NrZWQgfm1heENvbnNlY3V0aXZlQ2xhc2ggZW52XG4gICAgY291bnRlciBncmFwaCBzdGF0ZSA9XG4gIGxldCBhY3Rpdml0eSA9IFJ1bGVfaW50ZXJwcmV0ZXIuYWN0aXZpdHkgZ3JhcGggaW5cbiAgbGV0IHJkID0gUmFuZG9tLlN0YXRlLmZsb2F0IChSdWxlX2ludGVycHJldGVyLmdldF9yYW5kb21fc3RhdGUgZ3JhcGgpIDEuMCBpblxuICBsZXQgZHQgPSBhYnNfZmxvYXQgKGxvZyByZCAvLiBhY3Rpdml0eSkgaW5cblxuICBsZXQgb3V0ID1cbiAgICAoKkFjdGl2aXR5IGlzIG51bGwgb3IgZHQgaXMgaW5maW5pdGUqKVxuICAgIGlmIChub3QgKGFjdGl2aXR5ID4gMC4pKSB8fCBjbGFzc2lmeV9mbG9hdCBkdCA9IEZQX2luZmluaXRlIHRoZW5cbiAgICAgIGlmXG4gICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgKGZ1biAoXywgcGUpIC0+XG4gICAgICAgICAgICAoTW9kZWwuZ2V0X3BlcnR1cmJhdGlvbiBlbnYgcGUpLlByaW1pdGl2ZXMubmVlZHNfYmFja3RyYWNrKVxuICAgICAgICAgIHN0YXRlLnN0b3BwaW5nX3RpbWVzXG4gICAgICB0aGVuXG4gICAgICAgIHBlcnR1cmJhdGVfd2l0aF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICAgICAgICBzdGF0ZS5zdG9wcGluZ190aW1lc1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgZHVtcElmRGVhZGxvY2tlZCB0aGVuXG4gICAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAgIChEYXRhLlNuYXBzaG90XG4gICAgICAgICAgICAgICAgICggXCJkZWFkbG9jay5rYVwiLFxuICAgICAgICAgICAgICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuc25hcHNob3QgfmRlYnVnX21vZGUgfnJhdzpmYWxzZSBlbnYgY291bnRlclxuICAgICAgICAgICAgICAgICAgICAgZ3JhcGggKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgICAgXCJBIGRlYWRsb2NrIHdhcyByZWFjaGVkIGFmdGVyICVkIGV2ZW50cyBhbmQgJUVzIChBY3Rpdml0eSBcXFxuICAgICAgICAgICAgICAgICAgICAgID0gJS41ZilcIlxuICAgICAgICAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF9ldmVudCBjb3VudGVyKVxuICAgICAgICAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIpXG4gICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eSApKVxuICAgICAgICBpblxuICAgICAgICB0cnVlLCBncmFwaCwgc3RhdGVcbiAgICAgIClcbiAgICBlbHNlIChcbiAgICAgICgqYWN0aXZpdHkgaXMgcG9zaXRpdmUqKVxuICAgICAgbWF0Y2ggc3RhdGUuc3RvcHBpbmdfdGltZXMgd2l0aFxuICAgICAgfCAodGksIF8pIDo6IF9cbiAgICAgICAgd2hlbiBOYnIuaXNfc21hbGxlciB0aSAoTmJyLkYgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIgKy4gZHQpKSAtPlxuICAgICAgICBsZXQgc3RvcCwgZ3JhcGgnLCBzdGF0ZScsIGR0JywgbmVlZHNfYmFja3RyYWNrID1cbiAgICAgICAgICBwZXJ0dXJiYXRlX3VudGlsX2ZpcnN0X2JhY2t0cmFjayB+ZGVidWdfbW9kZSBlbnYgY291bnRlciB+b3V0cHV0c1xuICAgICAgICAgICAgKGZhbHNlLCBncmFwaCwgc3RhdGUsIGR0KVxuICAgICAgICBpblxuICAgICAgICBpZiBuZWVkc19iYWNrdHJhY2sgdGhlblxuICAgICAgICAgIHBlcnR1cmJhdGVfd2l0aF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGgnXG4gICAgICAgICAgICBzdGF0ZScgc3RhdGUnLnN0b3BwaW5nX3RpbWVzXG4gICAgICAgIGVsc2UgaWYgc3RvcCB0aGVuXG4gICAgICAgICAgc3RvcCwgZ3JhcGgnLCBzdGF0ZSdcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJlZ3VsYXJfbG9vcF9ib2R5IH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5tYXhDb25zZWN1dGl2ZUNsYXNoIGVudlxuICAgICAgICAgICAgY291bnRlciBncmFwaCcgc3RhdGUnIGR0J1xuICAgICAgfCBfIC0+XG4gICAgICAgIHJlZ3VsYXJfbG9vcF9ib2R5IH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5tYXhDb25zZWN1dGl2ZUNsYXNoIGVudiBjb3VudGVyXG4gICAgICAgICAgZ3JhcGggc3RhdGUgZHRcbiAgICApXG4gIGluXG4gIG91dFxuXG5sZXQgZW5kX29mX3NpbXVsYXRpb24gfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgPVxuICBsZXQgXyA9IHN0YXRlLmluaXRfc3RvcHBpbmdfdGltZXMgaW5cbiAgbGV0ICgpID1cbiAgICBsZXQgb3V0cHV0cyBjb3VudGVyJyB0aW1lID1cbiAgICAgIGxldCBjYW5kID1cbiAgICAgICAgb2JzZXJ2YWJsZXNfdmFsdWVzIGVudiBncmFwaCAoQ291bnRlci5mYWtlX3RpbWUgY291bnRlcicgdGltZSlcbiAgICAgIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggY2FuZCA+IDEgdGhlbiBvdXRwdXRzIChEYXRhLlBsb3QgY2FuZClcbiAgICBpblxuICAgIENvdW50ZXIuZmlsbCB+b3V0cHV0cyBjb3VudGVyIH5kdDowLlxuICBpblxuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChuYW1lLCBlKSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgb3V0cHV0c1xuICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgXCJUcmFja2luZyBESU4gaW50byBcXFwiJXNcXFwiIHdhcyBub3Qgc3RvcHBlZCBiZWZvcmUgZW5kIG9mIFxcXG4gICAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb25cIlxuICAgICAgICAgICAgICAgICAgIG5hbWUgKSlcbiAgICAgIGluXG4gICAgICBvdXRwdXRzIChEYXRhLkRJTiAobmFtZSwgRmx1eG1hcC5zdG9wX2ZsdXggZW52IGNvdW50ZXIgZSkpKVxuICAgIHN0YXRlLmZsdXhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc3RhdGUgPSB7XG4gIGdyYXBoOiBFZGdlcy50O1xuICB0aW1lOiBmbG9hdDtcbiAgZXZlbnQ6IGludDtcbiAgY29ubmVjdGVkX2NvbXBvbmVudHM6IEFnZW50LlNldE1hcC5TZXQudCBNb2RzLkludE1hcC50IG9wdGlvbjtcbn1cblxudHlwZSBzdW1tYXJ5ID0geyB1bmFyeV9kaXN0YW5jZXM6IChpbnQgKiBpbnQpIG9wdGlvbiB9XG5cbmxldCBpbml0X3N0YXRlIH53aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzID1cbiAge1xuICAgIGdyYXBoID0gRWRnZXMuZW1wdHkgfndpdGhfY29ubmVjdGVkX2NvbXBvbmVudHM7XG4gICAgdGltZSA9IDAuO1xuICAgIGV2ZW50ID0gMDtcbiAgICBjb25uZWN0ZWRfY29tcG9uZW50cyA9XG4gICAgICAoaWYgd2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyB0aGVuXG4gICAgICAgICBTb21lIE1vZHMuSW50TWFwLmVtcHR5XG4gICAgICAgZWxzZVxuICAgICAgICAgTm9uZSk7XG4gIH1cblxubGV0IGNjX29mX2FnZW50IGFnIGUgd29yayA9XG4gIGxldCByZWMgZm9sZF9hcml0eV9saXN0IGYgeCBhcml0eSBhY2MgPVxuICAgIGlmIHggPSBhcml0eSB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlXG4gICAgICBmb2xkX2FyaXR5X2xpc3QgZiAoc3VjYyB4KSBhcml0eSAoZiBhY2MgeClcbiAgaW5cblxuICBsZXQgYWRkX2FnZW50IGEgZSAod29yaywgbW9ycGhpc20sIHRvZG9zKSA9XG4gICAgbGV0IGFpZCA9IEFnZW50LmlkIGEgaW5cbiAgICBsZXQgYXR5cGUgPSBBZ2VudC5zb3J0IGEgaW5cbiAgICBsZXQgYXJpdHkgPSBFZGdlcy5nZXRfc2l0ZXMgYWlkIGUgaW5cbiAgICBsZXQgd19hZ2VudCwgd29yaycgPSBQYXR0ZXJuLm5ld19ub2RlIHdvcmsgYXR5cGUgaW5cbiAgICBsZXQgdG9kb3MnID0gZm9sZF9hcml0eV9saXN0IChmdW4gYWNjIHggLT4gKGFpZCwgeCkgOjogYWNjKSAwIGFyaXR5IHRvZG9zIGluXG4gICAgbGV0IHdvcmsnJyA9XG4gICAgICBmb2xkX2FyaXR5X2xpc3RcbiAgICAgICAgKGZ1biB3IHggLT5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBpbnRlcm5hbCA9IEVkZ2VzLmdldF9pbnRlcm5hbCBhaWQgeCBlIGluXG4gICAgICAgICAgICBQYXR0ZXJuLm5ld19pbnRlcm5hbF9zdGF0ZSB3ICh3X2FnZW50LCB4KSBpbnRlcm5hbFxuICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IHcpXG4gICAgICAgIDAgYXJpdHkgd29yaydcbiAgICBpblxuICAgIHdfYWdlbnQsIHdvcmsnJywgKGFpZCwgd19hZ2VudCkgOjogbW9ycGhpc20sIHRvZG9zJ1xuICBpblxuXG4gIGxldCBhZGRfbGlua3MgKHdvcmssIG1vcnBoaXNtLCB0b2RvcykgKGFpZCwgeCkgZSA9XG4gICAgbGV0IF8sIHdfYWdlbnQgPSBMaXN0LmZpbmQgKGZ1biAoaWQsIF8pIC0+IGlkID0gYWlkKSBtb3JwaGlzbSBpblxuICAgIGxldCBub3RfYWdlbnQgKGlkLCBzKSA9IG5vdCAoaWQgPSBhaWQgJiYgeCA9IHMpIGluXG4gICAgbWF0Y2ggRWRnZXMubGlua19kZXN0aW5hdGlvbiBhaWQgeCBlIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCB3b3JrJyA9IFBhdHRlcm4ubmV3X2ZyZWUgd29yayAod19hZ2VudCwgeCkgaW5cbiAgICAgIGxldCB0b2RvcycgPSBMaXN0LmZpbHRlciBub3RfYWdlbnQgdG9kb3MgaW5cbiAgICAgIHdvcmsnLCBtb3JwaGlzbSwgdG9kb3MnXG4gICAgfCBTb21lIChiLCB5KSAtPlxuICAgICAgbGV0IGJpZCA9IEFnZW50LmlkIGIgaW5cbiAgICAgIGxldCBub3RfYWdlbnRzIChpZCwgcykgPVxuICAgICAgICBub3RfYWdlbnQgKGlkLCBzKSAmJiBub3QgKGlkID0gQWdlbnQuaWQgYiAmJiBzID0geSlcbiAgICAgIGluXG4gICAgICAodHJ5XG4gICAgICAgICBsZXQgXywgd2JfYWdlbnQgPSBMaXN0LmZpbmQgKGZ1biAoaWQsIF8pIC0+IGlkID0gYmlkKSBtb3JwaGlzbSBpblxuICAgICAgICAgbGV0IHdvcmsnID0gUGF0dGVybi5uZXdfbGluayB3b3JrICh3X2FnZW50LCB4KSAod2JfYWdlbnQsIHkpIGluXG4gICAgICAgICBsZXQgdG9kb3MnID0gTGlzdC5maWx0ZXIgbm90X2FnZW50cyB0b2RvcyBpblxuICAgICAgICAgd29yaycsIG1vcnBoaXNtLCB0b2RvcydcbiAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgbGV0IHdiX2FnZW50LCB3b3JrJywgbW9ycGhpc20nLCB0b2RvcycgPVxuICAgICAgICAgICBhZGRfYWdlbnQgYiBlICh3b3JrLCBtb3JwaGlzbSwgdG9kb3MpXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IHdvcmsnJyA9IFBhdHRlcm4ubmV3X2xpbmsgd29yaycgKHdfYWdlbnQsIHgpICh3Yl9hZ2VudCwgeSkgaW5cbiAgICAgICAgIGxldCB0b2RvcycnID0gTGlzdC5maWx0ZXIgbm90X2FnZW50cyB0b2RvcycgaW5cbiAgICAgICAgIHdvcmsnJywgbW9ycGhpc20nLCB0b2RvcycnKVxuICBpblxuXG4gIGxldCByZWMgd29ya2luZ190b2RvICh3b3JrLCBtb3JwaGlzbSwgdG9kbykgPVxuICAgIG1hdGNoIHRvZG8gd2l0aFxuICAgIHwgW10gLT4gbW9ycGhpc20sIHdvcmtcbiAgICB8IHBvcnQgOjogXyAtPlxuICAgICAgbGV0IHdvcmsnLCBtb3JwaGlzbScsIHRvZG8nID0gYWRkX2xpbmtzICh3b3JrLCBtb3JwaGlzbSwgdG9kbykgcG9ydCBlIGluXG4gICAgICB3b3JraW5nX3RvZG8gKHdvcmsnLCBtb3JwaGlzbScsIHRvZG8nKVxuICBpblxuXG4gIGxldCBfLCB3LCBtLCB0ID0gYWRkX2FnZW50IGFnIGUgKHdvcmssIFtdLCBbXSkgaW5cbiAgd29ya2luZ190b2RvICh3LCBtLCB0KVxuXG5sZXQgY2Nfb2Zfc3RhdGUgfmRlYnVnX21vZGUgcyBlbnYgPVxuICBsZXQgY2Nfb2Zfcm9vdCBhZ2VudCBlJyA9XG4gICAgbGV0IHdvcmsgPSBQYXR0ZXJuLmJlZ2luX25ldyBlJyBpblxuICAgIGxldCBtb3JwaGlzbSwgd29yaycgPSBjY19vZl9hZ2VudCBhZ2VudCBzLmdyYXBoIHdvcmsgaW5cbiAgICBsZXQgZW4sIF8sIGMsIGkgPSBQYXR0ZXJuLmZpbmlzaF9uZXcgfmRlYnVnX21vZGUgd29yaycgaW5cbiAgICBlbiwgTGlzdC5tYXAgKGZ1biAoY2lkLCAoYWlkLCBfKSkgLT4gY2lkLCBhaWQpIG1vcnBoaXNtLCBjLCBpXG4gIGluXG4gIG1hdGNoIHMuY29ubmVjdGVkX2NvbXBvbmVudHMgd2l0aFxuICB8IFNvbWUgY2NfbWFwcyAtPlxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gcm9vdCBjY19tYXAgKGUsIGFjYykgLT5cbiAgICAgICAgQWdlbnQuU2V0TWFwLlNldC5mb2xkXG4gICAgICAgICAgKGZ1biBhZ2VudCAoZScsIGFjYycpIC0+XG4gICAgICAgICAgICBpZiBBZ2VudC5pZCBhZ2VudCA9IHJvb3QgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBlbiwgciwgYywgaSA9IGNjX29mX3Jvb3QgYWdlbnQgZScgaW5cbiAgICAgICAgICAgICAgZW4sIChyLCBjLCBpKSA6OiBhY2MnXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZScsIGFjYycpXG4gICAgICAgICAgY2NfbWFwIChlLCBhY2MpKVxuICAgICAgY2NfbWFwcyAoZW52LCBbXSlcbiAgfCBOb25lIC0+IGVudiwgW11cblxubGV0IGJyZWFrX2FwYXJ0X2NjIGdyYXBoIGNjcyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBjY3NcbiAgfCBTb21lIChvcmlnaW5fY2MsIG5ld19jYykgLT5cbiAgICBsZXQgc2V0ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IEFnZW50LlNldE1hcC5TZXQuZW1wdHkgb3JpZ2luX2NjIGNjcyBpblxuICAgIGlmIEFnZW50LlNldE1hcC5TZXQuaXNfZW1wdHkgc2V0IHRoZW5cbiAgICAgIGNjc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IG5zZXQsIG9zZXQnID1cbiAgICAgICAgQWdlbnQuU2V0TWFwLlNldC5wYXJ0aXRpb25cbiAgICAgICAgICAoZnVuICh4LCBfKSAtPiBFZGdlcy5nZXRfY29ubmVjdGVkX2NvbXBvbmVudCB4IGdyYXBoID0gU29tZSBuZXdfY2MpXG4gICAgICAgICAgc2V0XG4gICAgICBpblxuICAgICAgTW9kcy5JbnRNYXAuYWRkIG5ld19jYyBuc2V0IChNb2RzLkludE1hcC5hZGQgb3JpZ2luX2NjIG9zZXQnIGNjcylcbiAgICApXG5cbmxldCBtZXJnZV9jYyBjY3MgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gY2NzXG4gIHwgU29tZSAoY2MxLCBjYzIpIC0+XG4gICAgbGV0IHNldDEgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgQWdlbnQuU2V0TWFwLlNldC5lbXB0eSBjYzEgY2NzIGluXG4gICAgKG1hdGNoIE1vZHMuSW50TWFwLnBvcCBjYzIgY2NzIHdpdGhcbiAgICB8IE5vbmUsIF8gLT4gY2NzXG4gICAgfCBTb21lIHNldDIsIGNjcycgLT5cbiAgICAgIE1vZHMuSW50TWFwLmFkZCBjYzEgKEFnZW50LlNldE1hcC5TZXQudW5pb24gc2V0MSBzZXQyKSBjY3MnKVxuXG5sZXQgZG9fbmVnYXRpdmVfcGFydCAoKGEsIF8pLCBzKSAoZ3JhcGgsIGNjcykgPVxuICBtYXRjaCBFZGdlcy5saW5rX2Rlc3RpbmF0aW9uIGEgcyBncmFwaCB3aXRoXG4gIHwgTm9uZSAtPiBFZGdlcy5yZW1vdmVfZnJlZSBhIHMgZ3JhcGgsIGNjc1xuICB8IFNvbWUgKChhJywgXyksIHMnKSAtPlxuICAgIGxldCBncmFwaCcsIGNjX2NoYW5nZSA9IEVkZ2VzLnJlbW92ZV9saW5rIGEgcyBhJyBzJyBncmFwaCBpblxuICAgICggZ3JhcGgnLFxuICAgICAgKG1hdGNoIGNjcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGNjcyAtPiBTb21lIChicmVha19hcGFydF9jYyBncmFwaCcgY2NzIGNjX2NoYW5nZSkpIClcblxubGV0IGRvX2FjdGlvbiBzaWdzICgoZ3JhcGgsIGNjcykgYXMgcGFjaykgPSBmdW5jdGlvblxuICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICgoKGlkLCB0eSkgYXMgYWcpLCBfZ3JhcGhzKSAtPlxuICAgICggc25kIEBAIEVkZ2VzLmFkZF9hZ2VudCB+aWQgc2lncyB0eSBncmFwaCxcbiAgICAgIE9wdGlvbl91dGlsLm1hcCAoTW9kcy5JbnRNYXAuYWRkIGlkIChBZ2VudC5TZXRNYXAuU2V0LnNpbmdsZXRvbiBhZykpIGNjcyApXG4gIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKCgoYSwgXyksIHMpLCBpKSAtPlxuICAgIEVkZ2VzLmFkZF9pbnRlcm5hbCBhIHMgaSBncmFwaCwgY2NzXG4gIHwgSW5zdGFudGlhdGlvbi5CaW5kICgoKGExLCBzMSkgYXMgeDEpLCAoKGEyLCBzMikgYXMgeDIpKVxuICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoKChhMSwgczEpIGFzIHgxKSwgKChhMiwgczIpIGFzIHgyKSkgLT5cbiAgICBsZXQgZ3JhcGgnLCBjY3MnID0gZG9fbmVnYXRpdmVfcGFydCB4MiAoZG9fbmVnYXRpdmVfcGFydCB4MSBwYWNrKSBpblxuICAgIGxldCBncmFwaCcnLCBjY19jaGFuZ2UgPSBFZGdlcy5hZGRfbGluayBhMSBzMSBhMiBzMiBncmFwaCcgaW5cbiAgICAoIGdyYXBoJycsXG4gICAgICAobWF0Y2ggY2NzJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGNjcycgLT4gU29tZSAobWVyZ2VfY2MgY2NzJyBjY19jaGFuZ2UpKSApXG4gIHwgSW5zdGFudGlhdGlvbi5GcmVlICgoKGEsIF8pLCBzKSBhcyB4KSAtPlxuICAgIGxldCBncmFwaCcsIGNjcycgPSBkb19uZWdhdGl2ZV9wYXJ0IHggcGFjayBpblxuICAgIEVkZ2VzLmFkZF9mcmVlIGEgcyBncmFwaCcsIGNjcydcbiAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSAoKGlkLCB0eSkgYXMgYSkgLT5cbiAgICBsZXQgZ3JhcGgnLCBjY3MnID1cbiAgICAgIFRvb2xzLnJlY3RpXG4gICAgICAgIChmdW4gc3QgcyAtPiBkb19uZWdhdGl2ZV9wYXJ0IChhLCBzKSBzdClcbiAgICAgICAgcGFjayAoU2lnbmF0dXJlLmFyaXR5IHNpZ3MgdHkpXG4gICAgaW5cbiAgICAobWF0Y2ggY2NzJyB3aXRoXG4gICAgfCBOb25lIC0+IEVkZ2VzLnJlbW92ZV9hZ2VudCBpZCBncmFwaCcsIE5vbmVcbiAgICB8IFNvbWUgY2NzJyAtPlxuICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLnBvcCBpZCBjY3MnIHdpdGhcbiAgICAgIHwgTm9uZSwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgU29tZSB4LCBjY3MnJyAtPlxuICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKEFnZW50LlNldE1hcC5TZXQuaXNfc2luZ2xldG9uIHgpIGluXG4gICAgICAgIEVkZ2VzLnJlbW92ZV9hZ2VudCBpZCBncmFwaCcsIFNvbWUgY2NzJycpKVxuXG5sZXQgaW52b2x2ZWRfYWdlbnRzIGwgPVxuICBMaXN0X3V0aWwubWFwX29wdGlvblxuICAgIChmdW5jdGlvblxuICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYSAtPiBTb21lIGFcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIF8gfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCBfXG4gICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgXyB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gX1xuICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgXyAtPlxuICAgICAgICBOb25lKVxuICAgIGxcblxubGV0IHN0b3JlX2Rpc3RhbmNlcyByIGdyYXBoID0gZnVuY3Rpb25cbiAgfCBbXSB8IFsgXyBdIHwgXyA6OiBfIDo6IF8gOjogXyAtPiBOb25lXG4gIHwgWyBjYzE7IGNjMiBdIC0+XG4gICAgbGV0IGNjMV9hZ3MgPSBpbnZvbHZlZF9hZ2VudHMgY2MxIGluXG4gICAgbGV0IGNjMl9hZ3MgPSBpbnZvbHZlZF9hZ2VudHMgY2MyIGluXG4gICAgKG1hdGNoIEVkZ2VzLmFyZV9jb25uZWN0ZWQgZ3JhcGggY2MxX2FncyBjYzJfYWdzIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBwYXRoIC0+IFNvbWUgKHIsIExpc3QubGVuZ3RoIHBhdGgpKVxuXG5sZXQgdGVzdF9wYXNzX29uIGdyYXBoID0gZnVuY3Rpb25cbiAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYWcgLT4gRWRnZXMuaXNfYWdlbnQgYWcgZ3JhcGhcbiAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoKGFnLCBzKSwgc3QpIC0+XG4gICAgRWRnZXMuaXNfYWdlbnQgYWcgZ3JhcGggJiYgRWRnZXMuaXNfaW50ZXJuYWwgc3QgKEFnZW50LmlkIGFnKSBzIGdyYXBoXG4gIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIChhZywgcykgLT5cbiAgICBFZGdlcy5pc19hZ2VudCBhZyBncmFwaCAmJiBFZGdlcy5pc19mcmVlIChBZ2VudC5pZCBhZykgcyBncmFwaFxuICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgKGFnLCBzKSAtPlxuICAgIEVkZ2VzLmlzX2FnZW50IGFnIGdyYXBoICYmIG5vdCAoRWRnZXMuaXNfZnJlZSAoQWdlbnQuaWQgYWcpIHMgZ3JhcGgpXG4gIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoKGFnLCBzKSwgKGFnJywgcycpKSAtPlxuICAgIEVkZ2VzLmlzX2FnZW50IGFnIGdyYXBoICYmIEVkZ2VzLmlzX2FnZW50IGFnJyBncmFwaFxuICAgICYmIEVkZ2VzLmxpbmtfZXhpc3RzIChBZ2VudC5pZCBhZykgcyAoQWdlbnQuaWQgYWcnKSBzJyBncmFwaFxuICB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSAoKGFnLCBzKSwgKGFnX3R5LCBzJykpIC0+XG4gICAgRWRnZXMuaXNfYWdlbnQgYWcgZ3JhcGhcbiAgICAmJlxuICAgIChtYXRjaCBFZGdlcy5saW5rX2Rlc3RpbmF0aW9uIChBZ2VudC5pZCBhZykgcyBncmFwaCB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lICgoXywgZHN0X2FnX3R5KSwgZHN0X3MpIC0+IGRzdF9hZ190eSA9IGFnX3R5ICYmIGRzdF9zID0gcycpXG5cbmxldCB0ZXN0c19wYXNzX29uIGdyYXBoIHRlc3RzID1cbiAgTGlzdC5mb3JfYWxsICh0ZXN0X3Bhc3Nfb24gZ3JhcGgpIChMaXN0LmNvbmNhdCB0ZXN0cylcblxubGV0IGlzX3N0ZXBfdHJpZ2dlcmFibGVfb25fZWRnZXMgZ3JhcGggPSBmdW5jdGlvblxuICB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkluaXQgXyB8IFRyYWNlLlBlcnQgXyB8IFRyYWNlLkR1bW15IF8gLT4gdHJ1ZVxuICB8IFRyYWNlLlJ1bGUgKF9yLCBldmVudCwgX2luZm8pIC0+XG4gICAgdGVzdHNfcGFzc19vbiBncmFwaCBldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzXG4gIHwgVHJhY2UuT2JzIChfLCB0ZXN0cywgXykgLT4gdGVzdHNfcGFzc19vbiBncmFwaCB0ZXN0c1xuXG5sZXQgaXNfc3RlcF90cmlnZ2VyYWJsZSBzdGF0ZSA9IGlzX3N0ZXBfdHJpZ2dlcmFibGVfb25fZWRnZXMgc3RhdGUuZ3JhcGhcblxuKCogVGhlcmUgaXMgYSBzdWJ0ZWx0eSB3aGVuIGV4ZWN1dGluZyBhIHNlcXVlbmNlIG9mIGFjdGlvbnMuIEluZGVlZCxcbiAgIHdoZW5ldmVyIGEgcnVsZSBib3RoIGNyZWF0ZXMgYW5kIHJlbW92ZXMgYWdlbnRzLCB0aGVyZSBpcyBjdXJyZW50bHlcbiAgIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBjcmVhdGlvbiBhY3Rpb25zIGFyZSBwbGFjZWQgYmVmb3JlIHRoZSByZW1vdmFsXG4gICBhY3Rpb25zIGluIFtldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNdLiBUaGlzIGNhbiBiZSBhbiBpc3N1ZSBpbiBhXG4gICBjYXNlIHdoZXJlIGFuIGV2ZW50IHBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgdHdvIGFjdGlvbnMgZm9yIGV4YW1wbGU6XG4gICBbXCJjcmVhdGUgYWdlbnQgd2l0aCBpZCA4XCIsIFwicmVtb3ZlIGFnZW50IHdpdGggaWQgOFwiXS4gSW4gdGhpcyBjYXNlLFxuICAgYWdlbnQgaWQgOCBpcyBub3QgYXZhaWxhYmxlIHdoZW4gdGhlIGNyZWF0aW9uIGFjdGlvbiBpcyBwZXJmb3JtZWQgYW5kXG4gICBzbyB0aGUgW0VkZ2VzXSBtb2R1bGUgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cblxuICAgQXMgYSB0ZW1wb3JhcnkgZml4LCB3ZSBtYWtlIHN1cmUgdGhhdCBhbGwgZGVsZXRpb24gYWN0aW9ucyBhcmVcbiAgIGV4ZWN1dGVkIGZpcnN0LiBUaGlzIGltcGxpY2l0bHkgYXNzdW1lcyB0aGF0IGEgc3RlcCBkZWxldGluZyBhbiBhZ2VudFxuICAgY2Fubm90IHBlcmZvcm0gYW55IG90aGVyIGFjdGlvbiBpbnZvbHZpbmcgdGhpcyBhZ2VudC5cblxuICAgVE9ETzogU2hvdWxkbid0IHdlIHJhdGhlciBlbnN1cmUgdGhhdCBhY3Rpb25zIGFyZSBwcm9wZXJseSBzb3J0ZWQgaW5cbiAgIHRoZSB0cmFjZSBmaWxlIGluIHRoZSBmaXJzdCBwbGFjZT8gKilcbmxldCBkb19hY3Rpb25zIHNpZ3Mgc3QgYWN0aW9ucyA9XG4gIGxldCBpc19yZW1vdmFsID1cbiAgICBsZXQgb3BlbiBJbnN0YW50aWF0aW9uIGluXG4gICAgZnVuY3Rpb25cbiAgICB8IFJlbW92ZSBfIC0+IHRydWVcbiAgICB8IENyZWF0ZSBfIHwgTW9kX2ludGVybmFsIF8gfCBCaW5kIF8gfCBCaW5kX3RvIF8gfCBGcmVlIF8gLT4gZmFsc2VcbiAgaW5cbiAgbGV0IHJlbW92YWxzLCBvdGhlcnMgPSBMaXN0LnBhcnRpdGlvbiBpc19yZW1vdmFsIGFjdGlvbnMgaW5cbiAgbGV0IGRvX2luX29yZGVyIGFjdGlvbnMgc3QgPSBMaXN0LmZvbGRfbGVmdCAoZG9fYWN0aW9uIHNpZ3MpIHN0IGFjdGlvbnMgaW5cbiAgc3QgfD4gZG9faW5fb3JkZXIgcmVtb3ZhbHMgfD4gZG9faW5fb3JkZXIgb3RoZXJzXG5cbmxldCBkb19zdGVwIHNpZ3Mgc3RhdGUgPSBmdW5jdGlvblxuICB8IFRyYWNlLlN1YnMgXyAtPiBzdGF0ZSwgeyB1bmFyeV9kaXN0YW5jZXMgPSBOb25lIH1cbiAgfCBUcmFjZS5SdWxlIChraW5kLCBldmVudCwgaW5mbykgLT5cbiAgICBsZXQgdW5hcnlfZGlzdGFuY2VzID1cbiAgICAgIGlmIHN0YXRlLmNvbm5lY3RlZF9jb21wb25lbnRzID0gTm9uZSB0aGVuXG4gICAgICAgIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgc3RvcmVfZGlzdGFuY2VzIGtpbmQgc3RhdGUuZ3JhcGggZXZlbnQuSW5zdGFudGlhdGlvbi50ZXN0c1xuICAgIGluXG4gICAgbGV0IHByZWdyYXBoLCBjb25uZWN0ZWRfY29tcG9uZW50cyA9XG4gICAgICBkb19hY3Rpb25zIHNpZ3NcbiAgICAgICAgKHN0YXRlLmdyYXBoLCBzdGF0ZS5jb25uZWN0ZWRfY29tcG9uZW50cylcbiAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgaW5cbiAgICBsZXQgZ3JhcGggPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBncmFwaCAoKGlkLCBfKSwgcykgLT4gRWRnZXMuYWRkX2ZyZWUgaWQgcyBncmFwaClcbiAgICAgICAgcHJlZ3JhcGggZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0XG4gICAgaW5cbiAgICAoIHtcbiAgICAgICAgZ3JhcGg7XG4gICAgICAgIGNvbm5lY3RlZF9jb21wb25lbnRzO1xuICAgICAgICB0aW1lID0gaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZTtcbiAgICAgICAgZXZlbnQgPSBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudDtcbiAgICAgIH0sXG4gICAgICB7IHVuYXJ5X2Rpc3RhbmNlcyB9IClcbiAgfCBUcmFjZS5QZXJ0IChfLCBldmVudCwgaW5mbykgLT5cbiAgICBsZXQgcHJlZ3JhcGgsIGNvbm5lY3RlZF9jb21wb25lbnRzID1cbiAgICAgIGRvX2FjdGlvbnMgc2lnc1xuICAgICAgICAoc3RhdGUuZ3JhcGgsIHN0YXRlLmNvbm5lY3RlZF9jb21wb25lbnRzKVxuICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICBpblxuICAgIGxldCBncmFwaCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGdyYXBoICgoaWQsIF8pLCBzKSAtPiBFZGdlcy5hZGRfZnJlZSBpZCBzIGdyYXBoKVxuICAgICAgICBwcmVncmFwaCBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3RcbiAgICBpblxuICAgICgge1xuICAgICAgICBncmFwaDtcbiAgICAgICAgY29ubmVjdGVkX2NvbXBvbmVudHM7XG4gICAgICAgIHRpbWUgPSBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lO1xuICAgICAgICBldmVudCA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2V2ZW50O1xuICAgICAgfSxcbiAgICAgIHsgdW5hcnlfZGlzdGFuY2VzID0gTm9uZSB9IClcbiAgfCBUcmFjZS5Jbml0IGFjdGlvbnMgLT5cbiAgICBsZXQgZ3JhcGgsIGNvbm5lY3RlZF9jb21wb25lbnRzID1cbiAgICAgIGRvX2FjdGlvbnMgc2lncyAoc3RhdGUuZ3JhcGgsIHN0YXRlLmNvbm5lY3RlZF9jb21wb25lbnRzKSBhY3Rpb25zXG4gICAgaW5cbiAgICAoIHsgZ3JhcGg7IGNvbm5lY3RlZF9jb21wb25lbnRzOyB0aW1lID0gc3RhdGUudGltZTsgZXZlbnQgPSBzdGF0ZS5ldmVudCB9LFxuICAgICAgeyB1bmFyeV9kaXN0YW5jZXMgPSBOb25lIH0gKVxuICB8IFRyYWNlLk9icyAoXywgXywgaW5mbykgLT5cbiAgICAoIHtcbiAgICAgICAgZ3JhcGggPSBzdGF0ZS5ncmFwaDtcbiAgICAgICAgdGltZSA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWU7XG4gICAgICAgIGV2ZW50ID0gaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQ7XG4gICAgICAgIGNvbm5lY3RlZF9jb21wb25lbnRzID0gc3RhdGUuY29ubmVjdGVkX2NvbXBvbmVudHM7XG4gICAgICB9LFxuICAgICAgeyB1bmFyeV9kaXN0YW5jZXMgPSBOb25lIH0gKVxuICB8IFRyYWNlLkR1bW15IF8gLT4gc3RhdGUsIHsgdW5hcnlfZGlzdGFuY2VzID0gTm9uZSB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN5bnRheF92ZXJzaW9uID0gVjMgfCBWNFxuXG5sZXQgbWVyZ2VfdmVyc2lvbiBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBWNCwgXyB8IF8sIFY0IC0+IFY0XG4gIHwgVjMsIFYzIC0+IFYzXG5cbnR5cGUgaW50ZXJuYWwgPSBzdHJpbmcgb3B0aW9uIExvYy5hbm5vdGVkIGxpc3RcblxudHlwZSBwb3J0ID0ge1xuICBwb3J0X25hbWU6IHN0cmluZyBMb2MuYW5ub3RlZDtcbiAgcG9ydF9pbnQ6IGludGVybmFsO1xuICBwb3J0X2ludF9tb2Q6IHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb247XG4gIHBvcnRfbGluazogKHN0cmluZyBMb2MuYW5ub3RlZCwgdW5pdCkgTEthcHBhLmxpbmsgTG9jLmFubm90ZWQgbGlzdDtcbiAgcG9ydF9saW5rX21vZDogaW50IExvYy5hbm5vdGVkIG9wdGlvbiBvcHRpb247XG59XG5cbigqIFRPRE8gY2hhbmdlIG5hbWUsIENWQVIgaXMgbm90IGEgdGVzdD8gKilcbigqIFRPRE8gZGlzY3JpbWluYXRlIGJldHdlZW4gY291bnRlciBkZWZpbml0aW9uIGFuZCBjb3VudGVyIHRlc3QgPyAqKVxuKCogVE9ETzogY2hhbmdlIHRoaXMgdG8gQ1RZUEUgPSBDVEVTVCAoQ1RFU1RUWVBFICogaW50KSB8IENWQVIgc3RyaW5nPyAqKVxuXG50eXBlIGNvdW50ZXJfdGVzdCA9IENFUSBvZiBpbnQgfCBDR1RFIG9mIGludCB8IENMVEUgb2YgaW50IHwgQ1ZBUiBvZiBzdHJpbmdcblxudHlwZSBjb3VudGVyID0ge1xuICBjb3VudGVyX25hbWU6IHN0cmluZyBMb2MuYW5ub3RlZDtcbiAgY291bnRlcl90ZXN0OiBjb3VudGVyX3Rlc3QgTG9jLmFubm90ZWQgb3B0aW9uO1xuICAgICAgKCoqIEluIGEgcnVsZTogd2hhdCB0ZXN0IGlzIGRvbmUsIGluIGFuIGFnZW50IGRlY2xhcmF0aW9uOiB0aGUgbWluIHZhbHVlLCBpbiBhbiBpbml0IGRlY2xhcmF0aW9uOiB0aGUgaW5pdCB2YWx1ZSwgTm9uZSBpZiBhYnNlbnQgKilcbiAgY291bnRlcl9kZWx0YTogaW50IExvYy5hbm5vdGVkO1xuICAgICAgKCoqIEluIGEgcnVsZTogY2hhbmdlIGluIGNvdW50ZXIgdmFsdWUsIGluIGFuIGFnZW50IGRlY2xhcmF0aW9uOiBtYXggdmFsdWUgb2YgdGhlIGNvdW50ZXIsIDAgaWYgYWJzZW50ICopXG59XG5cbnR5cGUgdHJhbnNsYXRlX2ludCA9IEJBU0lTX01JTlVTX0lOUFVUIG9mIGludFxuXG5sZXQgYXBwbHlfaW50IHQgaSA9XG4gIG1hdGNoIHQgd2l0aFxuICAgIHwgQkFTSVNfTUlOVVNfSU5QVVQgZCAtPiBkIC0gaVxuXG5sZXQgcmVvcmRlcl9ib3VuZHMgdCAoaSxqKSA9XG4gIG1hdGNoIHQgd2l0aFxuICAgIHwgQkFTSVNfTUlOVVNfSU5QVVQgXyAtPiBqLGlcblxudHlwZSBjb252ZXJzaW9uX2luZm8gPVxuICAgICAge1xuICAgICAgICBmcm9tX3NpZ19uYW1lOiBzdHJpbmcgTG9jLmFubm90ZWQ7XG4gICAgICAgIGNvbnZlcnRfdmFsdWU6IHRyYW5zbGF0ZV9pbnQ7XG4gICAgICAgIGNvbnZlcnRfZGVsdGE6IHRyYW5zbGF0ZV9pbnQ7XG4gICAgICB9XG4oKiogQ291bnRlciBzeW50YXggZnJvbSBBU1QsIHByZXNlbnQgaW4gMyBjb250ZXh0cyB3aXRoIGRpZmZlcmVudCBtZWFuaW5nczogYWdlbnQgZGVmaW5pdGlvbiwgc3BlY2llcyBpbml0IGRlY2xhcmF0aW9uLCBydWxlICopXG5cbnR5cGUgb3JpZ2luZSA9IEZyb21fb3JpZ2luYWxfYXN0IHwgRnJvbV9jbHRlX2VsaW1pbmF0aW9uIG9mIGNvbnZlcnNpb25faW5mb1xuXG50eXBlIGNvdW50ZXJfc2lnID0ge1xuICBjb3VudGVyX3NpZ19uYW1lOiBzdHJpbmcgTG9jLmFubm90ZWQ7XG4gIGNvdW50ZXJfc2lnX21pbjogaW50IG9wdGlvbiBMb2MuYW5ub3RlZCBvcHRpb247XG4gIGNvdW50ZXJfc2lnX21heDogaW50IG9wdGlvbiBMb2MuYW5ub3RlZCBvcHRpb247XG4gIGNvdW50ZXJfc2lnX3Zpc2libGU6IG9yaWdpbmU7XG4gIGNvdW50ZXJfc2lnX2RlZmF1bHQ6IGludDtcbn1cblxubGV0IGNvdW50ZXJfc2lnX29mX2NvdW50ZXIgKGMgOiBjb3VudGVyKSA6IGNvdW50ZXJfc2lnID1cbiAgbGV0IChjb3VudGVyX3NpZ19taW4sIGNvdW50ZXJfc2lnX2RlZmF1bHQpIDogKGludCBvcHRpb24gKiBMb2MudCkgb3B0aW9uICogaW50XG4gICAgICA9XG4gICAgbWF0Y2ggYy5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgIHwgU29tZSAoQ0VRIGksIGxvYykgLT4gU29tZSAoU29tZSBpLCBsb2MpLCBpXG4gICAgfCBOb25lIHwgU29tZSAoKENHVEUgXyB8IENMVEUgXyB8IENWQVIgXyksIF8pIC0+IE5vbmUsIDBcbiAgaW5cbiAgbGV0IGNvdW50ZXJfc2lnX21heCA9XG4gICAgbWF0Y2ggYy5jb3VudGVyX2RlbHRhIHdpdGhcbiAgICB8IGksIGxvYyAtPiBTb21lIChTb21lIGksIGxvYylcbiAgaW5cbiAge1xuICAgIGNvdW50ZXJfc2lnX25hbWUgPSBjLmNvdW50ZXJfbmFtZTtcbiAgICBjb3VudGVyX3NpZ19taW47XG4gICAgY291bnRlcl9zaWdfbWF4O1xuICAgIGNvdW50ZXJfc2lnX2RlZmF1bHQ7XG4gICAgY291bnRlcl9zaWdfdmlzaWJsZSA9IEZyb21fb3JpZ2luYWxfYXN0O1xuICB9XG5cbmxldCBtYWtlX2ludmVydGVkX2NvdW50ZXJfc2lnIChjb3VudGVyIDogY291bnRlcl9zaWcpXG4gICAgKGNvdW50ZXJfc2lnX25hbWUgOiBzdHJpbmcgTG9jLmFubm90ZWQpIDogY291bnRlcl9zaWcgPVxuICBsZXQgZl9pbnQgPVxuICAgIG1hdGNoIGNvdW50ZXIuY291bnRlcl9zaWdfbWF4LCBjb3VudGVyLmNvdW50ZXJfc2lnX21pbiB3aXRoXG4gICAgfCBTb21lIChTb21lIG1heCwgXyksIFNvbWUgKFNvbWUgbWluLCBfKSAtPlxuICAgICAgQkFTSVNfTUlOVVNfSU5QVVQgKG1heCttaW4pXG4gICAgfCAoTm9uZSB8IFNvbWUgKE5vbmUsIF8pKSwgXyB8IF8sIChOb25lIHwgU29tZSAoTm9uZSwgXykpIC0+XG4gICAgICBmYWlsd2l0aCBcInVuYm91bmRlZCBjb3VudGVycyBub3QgaW1wbGVtZW50ZWQgeWV0XCJcbiAgaW5cbiAgbGV0IGZfb3AgPSBCQVNJU19NSU5VU19JTlBVVCAwIGluXG4gIHtcbiAgICBjb3VudGVyIHdpdGhcbiAgICBjb3VudGVyX3NpZ19uYW1lO1xuICAgIGNvdW50ZXJfc2lnX3Zpc2libGUgPVxuICAgICAgRnJvbV9jbHRlX2VsaW1pbmF0aW9uXG4gICAgICB7XG4gICAgICAgIGZyb21fc2lnX25hbWU9Y291bnRlci5jb3VudGVyX3NpZ19uYW1lO1xuICAgICAgICBjb252ZXJ0X3ZhbHVlPWZfaW50O1xuICAgICAgICBjb252ZXJ0X2RlbHRhPWZfb3A7XG4gICAgICB9XG4gICAgO1xuICAgIGNvdW50ZXJfc2lnX2RlZmF1bHQgPVxuICAgICAgYXBwbHlfaW50IGZfaW50IGNvdW50ZXIuY291bnRlcl9zaWdfZGVmYXVsdFxuXG4gIH1cblxudHlwZSAnY291bnRlciBzaXRlID0gUG9ydCBvZiBwb3J0IHwgQ291bnRlciBvZiAnY291bnRlclxuXG5sZXQgbWFwX2NvdW50ZXJzX2luX3NpdGUgZiA9IGZ1bmN0aW9uXG4gIHwgUG9ydCBfIGFzIHggLT4geFxuICB8IENvdW50ZXIgY28gLT4gQ291bnRlciAoZiBjbylcblxudHlwZSBhZ2VudF9tb2QgPSBOb01vZCB8IEVyYXNlIHwgQ3JlYXRlXG5cbnR5cGUgJ2NvdW50ZXIgcGFyYW1ldHJpY19hZ2VudCA9XG4gIHwgUHJlc2VudCBvZiBzdHJpbmcgTG9jLmFubm90ZWQgKiAnY291bnRlciBzaXRlIGxpc3QgKiBhZ2VudF9tb2RcbiAgfCBBYnNlbnQgb2YgTG9jLnRcblxudHlwZSBhZ2VudCA9IGNvdW50ZXIgcGFyYW1ldHJpY19hZ2VudFxudHlwZSBhZ2VudF9zaWcgPSBjb3VudGVyX3NpZyBwYXJhbWV0cmljX2FnZW50XG5cbigqIFRPRE86IGRvY3VtZW50IHdoeSBsaXN0IGxpc3QgKilcbnR5cGUgbWl4dHVyZSA9IGFnZW50IGxpc3QgbGlzdFxuXG50eXBlIGVkaXRfbm90YXRpb24gPSB7XG4gIG1peDogbWl4dHVyZTtcbiAgZGVsdGFfdG9rZW46XG4gICAgKChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgKiBzdHJpbmcgTG9jLmFubm90ZWQpIGxpc3Q7XG59XG5cbnR5cGUgYXJyb3dfbm90YXRpb24gPSB7XG4gIGxoczogbWl4dHVyZTtcbiAgcm1fdG9rZW46XG4gICAgKChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgKiBzdHJpbmcgTG9jLmFubm90ZWQpIGxpc3Q7XG4gIHJoczogbWl4dHVyZTtcbiAgYWRkX3Rva2VuOlxuICAgICgobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkICogc3RyaW5nIExvYy5hbm5vdGVkKSBsaXN0O1xufVxuXG50eXBlIHJ1bGVfY29udGVudCA9IEVkaXQgb2YgZWRpdF9ub3RhdGlvbiB8IEFycm93IG9mIGFycm93X25vdGF0aW9uXG5cbnR5cGUgcnVsZSA9IHtcbiAgcmV3cml0ZTogcnVsZV9jb250ZW50O1xuICBiaWRpcmVjdGlvbmFsOiBib29sO1xuICBrX2RlZjogKG1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZDtcbiAga191bjpcbiAgICAoKG1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZFxuICAgICogKG1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCBvcHRpb24pXG4gICAgb3B0aW9uO1xuICAoKmtfMTpyYWRpdXNfb3B0KilcbiAga19vcDogKG1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCBvcHRpb247XG4gIGtfb3BfdW46XG4gICAgKChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWRcbiAgICAqIChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uKVxuICAgIG9wdGlvbjtcbiAgICAgICgqcmF0ZSBmb3IgYmFja3dhcmQgcnVsZSopXG59XG5cbmxldCBmbGlwX2xhYmVsIHN0ciA9IHN0ciBeIFwiX29wXCJcblxudHlwZSAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBtb2RpZl9leHByID1cbiAgfCBBUFBMWSBvZiAoKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgKiAncnVsZSBMb2MuYW5ub3RlZClcbiAgfCBVUERBVEUgb2YgKCdpZCBMb2MuYW5ub3RlZCAqICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkKVxuICB8IFNUT1Agb2YgKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgUHJpbWl0aXZlcy5wcmludF9leHByIGxpc3RcbiAgfCBTTkFQU0hPVCBvZiBib29sICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgUHJpbWl0aXZlcy5wcmludF9leHByIGxpc3RcbiAgfCBQUklOVCBvZlxuICAgICAgKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgUHJpbWl0aXZlcy5wcmludF9leHByIGxpc3RcbiAgICAgICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgUHJpbWl0aXZlcy5wcmludF9leHByIGxpc3RcbiAgfCBQTE9URU5UUllcbiAgfCBDRkxPV0xBQkVMIG9mIChib29sICogc3RyaW5nIExvYy5hbm5vdGVkKVxuICB8IENGTE9XTUlYIG9mIChib29sICogJ3BhdHRlcm4gTG9jLmFubm90ZWQpXG4gIHwgRElOIG9mXG4gICAgICBQcmltaXRpdmVzLmRpbl9raW5kXG4gICAgICAqICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gIHwgRElOT0ZGIG9mICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gIHwgU1BFQ0lFU19PRiBvZlxuICAgICAgYm9vbFxuICAgICAgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBQcmltaXRpdmVzLnByaW50X2V4cHIgbGlzdFxuICAgICAgKiAncGF0dGVybiBMb2MuYW5ub3RlZFxuXG50eXBlICgncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIHBlcnR1cmJhdGlvbiA9XG4gIChOYnIudCBvcHRpb25cbiAgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZCBvcHRpb25cbiAgKiAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBtb2RpZl9leHByIGxpc3RcbiAgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZCBvcHRpb24pXG4gIExvYy5hbm5vdGVkXG5cbnR5cGUgY29uZmlndXJhdGlvbiA9IHN0cmluZyBMb2MuYW5ub3RlZCAqIHN0cmluZyBMb2MuYW5ub3RlZCBsaXN0XG5cbnR5cGUgKCdwYXR0ZXJuLCAnaWQpIHZhcmlhYmxlX2RlZiA9XG4gIHN0cmluZyBMb2MuYW5ub3RlZCAqICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkXG5cbnR5cGUgKCdtaXh0dXJlLCAnaWQpIGluaXRfdCA9XG4gIHwgSU5JVF9NSVggb2YgJ21peHR1cmUgTG9jLmFubm90ZWRcbiAgfCBJTklUX1RPSyBvZiAnaWQgTG9jLmFubm90ZWQgbGlzdFxuXG50eXBlICgncGF0dGVybiwgJ21peHR1cmUsICdpZCkgaW5pdF9zdGF0ZW1lbnQgPVxuICAoKiAgc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbiAqICgqdm9sdW1lKikqKVxuICAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCAqICgnbWl4dHVyZSwgJ2lkKSBpbml0X3RcblxudHlwZSAoJ2FnZW50LCAnYWdlbnRfaWQsICdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgaW5zdHJ1Y3Rpb24gPVxuICB8IFNJRyBvZiAnYWdlbnRfaWRcbiAgfCBUT0tFTlNJRyBvZiBzdHJpbmcgTG9jLmFubm90ZWRcbiAgfCBWT0xTSUcgb2Ygc3RyaW5nICogZmxvYXQgKiBzdHJpbmcgKCogdHlwZSwgdm9sdW1lLCBwYXJhbWV0ZXIqKVxuICB8IElOSVQgb2YgKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkKSBpbml0X3N0YXRlbWVudFxuICAoKnZvbHVtZSwgaW5pdCwgcG9zaXRpb24gKilcbiAgfCBERUNMQVJFIG9mICgncGF0dGVybiwgJ2lkKSB2YXJpYWJsZV9kZWZcbiAgfCBPQlMgb2YgKCdwYXR0ZXJuLCAnaWQpIHZhcmlhYmxlX2RlZiAoKmZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KilcbiAgfCBQTE9UIG9mICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkXG4gIHwgUEVSVCBvZiAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBwZXJ0dXJiYXRpb25cbiAgfCBDT05GSUcgb2YgY29uZmlndXJhdGlvblxuICB8IFJVTEUgb2YgKHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gKiAncnVsZSBMb2MuYW5ub3RlZClcblxudHlwZSAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBjb21tYW5kID1cbiAgfCBSVU4gb2YgKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWRcbiAgfCBNT0RJRlkgb2YgKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgbW9kaWZfZXhwciBsaXN0XG4gIHwgUVVJVFxuXG50eXBlICgnYWdlbnQsICdhZ2VudF9zaWcsICdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgY29tcGlsID0ge1xuICBmaWxlbmFtZXM6IHN0cmluZyBsaXN0O1xuICB2YXJpYWJsZXM6ICgncGF0dGVybiwgJ2lkKSB2YXJpYWJsZV9kZWYgbGlzdDtcbiAgICAgICgqKiBwYXR0ZXJuIGRlY2xhcmF0aW9uIGZvciByZXVzaW5nIGFzIHZhcmlhYmxlIGluIHBlcnR1cmJhdGlvbnNcbiAgICBvciBraW5ldGljIHJhdGUgKilcbiAgc2lnbmF0dXJlczogJ2FnZW50X3NpZyBsaXN0OyAgKCoqIGFnZW50IHNpZ25hdHVyZSBkZWNsYXJhdGlvbiAqKVxuICBydWxlczogKHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gKiAncnVsZSBMb2MuYW5ub3RlZCkgbGlzdDtcbiAgICAgICgqKiBydWxlcyAocG9zc2libHkgbmFtZWQpOiBbbmFtZV9vcHRpb24gKiBydWxlX2RlZmluaXRpb25dICopXG4gIG9ic2VydmFibGVzOiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCBsaXN0O1xuICAgICAgKCoqIGxpc3Qgb2YgcGF0dGVybnMgdG8gcGxvdCAqKVxuICBpbml0OiAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQpIGluaXRfc3RhdGVtZW50IGxpc3Q7XG4gICAgICAoKiogaW5pdGlhbCBncmFwaCBkZWNsYXJhdGlvbiAqKVxuICBwZXJ0dXJiYXRpb25zOiAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBwZXJ0dXJiYXRpb24gbGlzdDtcbiAgY29uZmlndXJhdGlvbnM6IGNvbmZpZ3VyYXRpb24gbGlzdDtcbiAgdG9rZW5zOiBzdHJpbmcgTG9jLmFubm90ZWQgbGlzdDtcbiAgdm9sdW1lczogKHN0cmluZyAqIGZsb2F0ICogc3RyaW5nKSBsaXN0O1xufVxuXG50eXBlIHBhcnNpbmdfY29tcGlsID0gKGFnZW50LCBhZ2VudF9zaWcsIG1peHR1cmUsIG1peHR1cmUsIHN0cmluZywgcnVsZSkgY29tcGlsXG5cbnR5cGUgcGFyc2luZ19pbnN0cnVjdGlvbiA9XG4gIChhZ2VudCwgYWdlbnRfc2lnLCBtaXh0dXJlLCBtaXh0dXJlLCBzdHJpbmcsIHJ1bGUpIGluc3RydWN0aW9uXG5cbmxldCBub19tb3JlX3NpdGVfb25fcmlnaHQgZXJyb3IgbGVmdCByaWdodCA9XG4gIExpc3QuZm9yX2FsbFxuICAgIChmdW5jdGlvblxuICAgICAgfCBDb3VudGVyIF8gLT4gdHJ1ZVxuICAgICAgfCBQb3J0IHAgLT5cbiAgICAgICAgTGlzdC5leGlzdHNcbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgQ291bnRlciBfIC0+IGZhbHNlXG4gICAgICAgICAgICB8IFBvcnQgcCcgLT4gZnN0IHAucG9ydF9uYW1lID0gZnN0IHAnLnBvcnRfbmFtZSlcbiAgICAgICAgICBsZWZ0XG4gICAgICAgIHx8XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgZXJyb3IgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKCBcIlNpdGUgJ1wiIF4gZnN0IHAucG9ydF9uYW1lXG4gICAgICAgICAgICAgICAgICAgXiBcIicgd2FzIG5vdCBtZW50aW9ubmVkIGluIHRoZSBsZWZ0LWhhbmQgc2lkZS5cIixcbiAgICAgICAgICAgICAgICAgICBzbmQgcC5wb3J0X25hbWUgKSlcbiAgICAgICAgaW5cbiAgICAgICAgZmFsc2UpXG4gICAgcmlnaHRcblxubGV0IGVtcHR5X2NvbXBpbCA9XG4gIHtcbiAgICBmaWxlbmFtZXMgPSBbXTtcbiAgICB2YXJpYWJsZXMgPSBbXTtcbiAgICBzaWduYXR1cmVzID0gW107XG4gICAgcnVsZXMgPSBbXTtcbiAgICBpbml0ID0gW107XG4gICAgb2JzZXJ2YWJsZXMgPSBbXTtcbiAgICBwZXJ0dXJiYXRpb25zID0gW107XG4gICAgY29uZmlndXJhdGlvbnMgPSBbXTtcbiAgICB0b2tlbnMgPSBbXTtcbiAgICB2b2x1bWVzID0gW107XG4gIH1cblxuKCpcbiAgbGV0IHJldmVyc2UgcmVzID1cbiAgbGV0IGxfcGF0ID0gTGlzdC5yZXYgIXJlcy5wYXR0ZXJuc1xuICBhbmQgbF9zaWcgPSBMaXN0LnJldiAhcmVzLnNpZ25hdHVyZXNcbiAgYW5kIGxfcnVsID0gTGlzdC5yZXYgIXJlcy5ydWxlc1xuICBhbmQgbF9pbmkgPSBMaXN0LnJldiAhcmVzLmluaXRcbiAgYW5kIGxfb2JzID0gTGlzdC5yZXYgIXJlcy5vYnNlcnZhYmxlc1xuICBpblxuICByZXM6PXtwYXR0ZXJucz1sX3BhdCA7IHNpZ25hdHVyZXM9bF9zaWcgO1xuICAgICAgICBydWxlcz1sX3J1bCA7IGluaXQgPSBsX2luaSA7IG9ic2VydmFibGVzID0gbF9vYnN9XG4qKVxuXG5sZXQgcHJpbnRfYXN0X2xpbmsgbW9kX2wgZiBsID1cbiAgaWYgbCA8PiBbXSB8fCBtb2RfbCA8PiBOb25lIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiWyVhJWFdXCJcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoeCwgXykgLT5cbiAgICAgICAgICAgTEthcHBhLnByaW50X2xpbmtcbiAgICAgICAgICAgICAoZnVuIF8gZiAoeCwgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHgpXG4gICAgICAgICAgICAgKGZ1biBmICh4LCBfKSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgeClcbiAgICAgICAgICAgICAoZnVuIF8gKCkgLT4gKCkpXG4gICAgICAgICAgICAgZiB4KSlcbiAgICAgIGxcbiAgICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2UgKGZ1biBmIHggLT5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIi8lYVwiXG4gICAgICAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IFNvbWUgKGwsIF8pIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBsXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLlwiKVxuICAgICAgICAgICAgIHgpKVxuICAgICAgbW9kX2xcblxubGV0IHByaW50X2FzdF9pbnRlcm5hbCBtb2RfaSBmIGwgPVxuICBpZiBsIDw+IFtdIHx8IG1vZF9pIDw+IE5vbmUgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWElYX1cIlxuICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICB8IFNvbWUgeCwgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgeFxuICAgICAgICAgfCBOb25lLCBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiNcIikpXG4gICAgICBsXG4gICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiAoaSwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIi8lc1wiIGkpKVxuICAgICAgbW9kX2lcblxubGV0IHByaW50X2FzdF9wb3J0IGYgcCA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlcyVhJWFcIiAoZnN0IHAucG9ydF9uYW1lKVxuICAgIChwcmludF9hc3RfaW50ZXJuYWwgcC5wb3J0X2ludF9tb2QpXG4gICAgcC5wb3J0X2ludFxuICAgIChwcmludF9hc3RfbGluayBwLnBvcnRfbGlua19tb2QpXG4gICAgcC5wb3J0X2xpbmtcblxubGV0IHByaW50X2NvdW50ZXJfdGVzdCBmID0gZnVuY3Rpb25cbiAgfCBDRVEgeCwgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiPSVpXCIgeFxuICB8IENHVEUgeCwgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiPj0laVwiIHhcbiAgfCBDTFRFIHgsIF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIjw9JWlcIiB4XG4gIHwgQ1ZBUiB4LCBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI9JXNcIiB4XG5cbmxldCBwcmludF9jb3VudGVyX21pbiBmICh4LCBfKSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFNvbWUgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiPSVkXCIgeFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIj0tb29cIlxuXG5sZXQgcHJpbnRfY291bnRlcl9tYXggZiAoeCwgXykgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTb21lIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIi8lZFwiIHhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIvK29vXCJcblxubGV0IHByaW50X2NvdW50ZXJfZGVmYXVsdCBtaW4gZiB4ID1cbiAgbWF0Y2ggbWluIHdpdGhcbiAgfCBTb21lIChTb21lIGksIF8pIHdoZW4gaSA9IHggLT4gKClcbiAgfCBOb25lIHwgU29tZSBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIoJWQpXCIgeFxuXG5sZXQgcHJpbnRfY291bnRlcl9kZWx0YSB0ZXN0IGYgKGRlbHRhLCBfKSA9XG4gIGlmIGRlbHRhIDw+IDAgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSs9JWRcIlxuICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIvXCIpKVxuICAgICAgdGVzdCBkZWx0YVxuXG5sZXQgcHJpbnRfY291bnRlciBmIGMgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJXN7JWElYX1cIiAoZnN0IGMuY291bnRlcl9uYW1lKVxuICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2UgcHJpbnRfY291bnRlcl90ZXN0KVxuICAgIGMuY291bnRlcl90ZXN0XG4gICAgKHByaW50X2NvdW50ZXJfZGVsdGEgYy5jb3VudGVyX3Rlc3QpXG4gICAgYy5jb3VudGVyX2RlbHRhXG5cbmxldCBwcmludF9jb3VudGVyX3NpZyBmIGMgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJXN7JWElYX0lYVwiIChmc3QgYy5jb3VudGVyX3NpZ19uYW1lKVxuICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2UgcHJpbnRfY291bnRlcl9taW4pXG4gICAgYy5jb3VudGVyX3NpZ19taW5cbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIHByaW50X2NvdW50ZXJfbWF4KVxuICAgIGMuY291bnRlcl9zaWdfbWF4XG4gICAgKHByaW50X2NvdW50ZXJfZGVmYXVsdCBjLmNvdW50ZXJfc2lnX21pbilcbiAgICBjLmNvdW50ZXJfc2lnX2RlZmF1bHRcblxubGV0IHByaW50X2FzdF9zaXRlIH5wcmludF9jb3VudGVyIGYgPSBmdW5jdGlvblxuICB8IFBvcnQgcCAtPiBwcmludF9hc3RfcG9ydCBmIHBcbiAgfCBDb3VudGVyIGMgLT4gcHJpbnRfY291bnRlciBmIGNcblxubGV0IHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcyA9XG4gIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX3N0cmluZ1xuXG5sZXQgc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMgPVxuICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcblxubGV0IHN0cmluZ19vcHRpb25fYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMgPVxuICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX3N0cmluZylcblxubGV0IHN0cmluZ19vcHRpb25fYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcyA9XG4gIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKEpzb25VdGlsLnRvX29wdGlvbiAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkpXG5cbmxldCBjb3VudGVyX3Rlc3RfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgQ0VRIHggLT4gYEFzc29jIFsgXCJ0ZXN0XCIsIGBTdHJpbmcgXCJlcVwiOyBcInZhbFwiLCBgSW50IHggXVxuICB8IENHVEUgeCAtPiBgQXNzb2MgWyBcInRlc3RcIiwgYFN0cmluZyBcImd0ZVwiOyBcInZhbFwiLCBgSW50IHggXVxuICB8IENMVEUgeCAtPiBgQXNzb2MgWyBcInRlc3RcIiwgYFN0cmluZyBcImx0ZVwiOyBcInZhbFwiLCBgSW50IHggXVxuICB8IENWQVIgeCAtPiBgQXNzb2MgWyBcInRlc3RcIiwgYFN0cmluZyBcImVxXCI7IFwidmFsXCIsIGBTdHJpbmcgeCBdXG5cbmxldCBjb3VudGVyX3Rlc3Rfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwidGVzdFwiLCBgU3RyaW5nIFwiZXFcIik7IChcInZhbFwiLCBgSW50IHgpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YWxcIiwgYEludCB4KTsgKFwidGVzdFwiLCBgU3RyaW5nIFwiZXFcIikgXSAtPlxuICAgIENFUSB4XG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIGBJbnQgeCk7IChcInRlc3RcIiwgYFN0cmluZyBcImd0ZVwiKSBdXG4gIHwgYEFzc29jIFsgKFwidGVzdFwiLCBgU3RyaW5nIFwiZ3RlXCIpOyAoXCJ2YWxcIiwgYEludCB4KSBdIC0+XG4gICAgQ0dURSB4XG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIGBJbnQgeCk7IChcInRlc3RcIiwgYFN0cmluZyBcImx0ZVwiKSBdXG4gIHwgYEFzc29jIFsgKFwidGVzdFwiLCBgU3RyaW5nIFwibHRlXCIpOyAoXCJ2YWxcIiwgYEludCB4KSBdIC0+XG4gICAgQ0xURSB4XG4gIHwgYEFzc29jIFsgKFwidGVzdFwiLCBgU3RyaW5nIFwiZXFcIik7IChcInZhbFwiLCBgU3RyaW5nIHgpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YWxcIiwgYFN0cmluZyB4KTsgKFwidGVzdFwiLCBgU3RyaW5nIFwiZXFcIikgXSAtPlxuICAgIENWQVIgeFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGNvdW50ZXIgdGVzdFwiLCB4KSlcblxubGV0IHBvcnRfdG9fanNvbiBmaWxlbmFtZXMgcCA9XG4gIGxldCBtb2RfbCA9XG4gICAgSnNvblV0aWwub2Zfb3B0aW9uIChmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IGBTdHJpbmcgXCJGUkVFXCJcbiAgICAgIHwgU29tZSB4IC0+IExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX2ludCB4KVxuICBpblxuICBsZXQgbW9kX2kgPVxuICAgIEpzb25VdGlsLm9mX29wdGlvbiAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgSnNvblV0aWwub2Zfc3RyaW5nKVxuICBpblxuICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgIFtcbiAgICAgIFwicG9ydF9uYW1lXCIsIHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcyBwLnBvcnRfbmFtZTtcbiAgICAgICggXCJwb3J0X2ludFwiLFxuICAgICAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgICAgIFtcbiAgICAgICAgICAgICggXCJzdGF0ZVwiLFxuICAgICAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAgICAgKHN0cmluZ19vcHRpb25fYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgcC5wb3J0X2ludCApO1xuICAgICAgICAgICAgXCJtb2RcIiwgbW9kX2kgcC5wb3J0X2ludF9tb2Q7XG4gICAgICAgICAgXSApO1xuICAgICAgKCBcInBvcnRfbGlua1wiLFxuICAgICAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgICAgIFtcbiAgICAgICAgICAgICggXCJzdGF0ZVwiLFxuICAgICAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKExLYXBwYS5saW5rX3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIF8gLT4gc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSkpKVxuICAgICAgICAgICAgICAgIHAucG9ydF9saW5rICk7XG4gICAgICAgICAgICBcIm1vZFwiLCBtb2RfbCBwLnBvcnRfbGlua19tb2Q7XG4gICAgICAgICAgXSApO1xuICAgIF1cblxubGV0IGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBpIGwgPVxuICBsZXQgbW9kX2wgPVxuICAgIEpzb25VdGlsLnRvX29wdGlvbiAoZnVuY3Rpb25cbiAgICAgIHwgYFN0cmluZyBcIkZSRUVcIiAtPiBOb25lXG4gICAgICB8IHggLT5cbiAgICAgICAgU29tZVxuICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSkgeCkpXG4gIGluXG4gIGxldCBtb2RfaSA9XG4gICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpKVxuICBpblxuICBsZXQgcG9ydF9pbnQsIHBvcnRfaW50X21vZCA9XG4gICAgbWF0Y2ggaSB3aXRoXG4gICAgfCBgQXNzb2MgW10gfCBgTnVsbCAtPiBbXSwgTm9uZVxuICAgIHwgYEFzc29jIFsgKFwic3RhdGVcIiwgaSkgXSAtPlxuICAgICAgSnNvblV0aWwudG9fbGlzdCAoc3RyaW5nX29wdGlvbl9hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKSBpLCBOb25lXG4gICAgfCBgQXNzb2MgWyAoXCJtb2RcIiwgbSkgXSAtPiBbXSwgbW9kX2kgbVxuICAgIHwgYEFzc29jIFsgKFwic3RhdGVcIiwgaSk7IChcIm1vZFwiLCBtKSBdIHwgYEFzc29jIFsgKFwibW9kXCIsIG0pOyAoXCJzdGF0ZVwiLCBpKSBdXG4gICAgICAtPlxuICAgICAgSnNvblV0aWwudG9fbGlzdCAoc3RyaW5nX29wdGlvbl9hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKSBpLCBtb2RfaSBtXG4gICAgfCBfIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBpbnRlcm5hbCBzdGF0ZXNcIiwgaSkpXG4gIGluXG4gIGxldCBwb3J0X2xpbmssIHBvcnRfbGlua19tb2QgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgYEFzc29jIFtdIHwgYE51bGwgLT4gW10sIE5vbmVcbiAgICB8IGBBc3NvYyBbIChcInN0YXRlXCIsIGwpIF0gLT5cbiAgICAgICggSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChMS2FwcGEubGlua19vZl9qc29uXG4gICAgICAgICAgICAgICAgKGZ1biBfIC0+IHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAoZnVuIF8gLT4gKCkpKSlcbiAgICAgICAgICBsLFxuICAgICAgICBOb25lIClcbiAgICB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKSBdIC0+IFtdLCBtb2RfbCBtXG4gICAgfCBgQXNzb2MgWyAoXCJzdGF0ZVwiLCBsKTsgKFwibW9kXCIsIG0pIF0gfCBgQXNzb2MgWyAoXCJtb2RcIiwgbSk7IChcInN0YXRlXCIsIGwpIF1cbiAgICAgIC0+XG4gICAgICAoIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoTEthcHBhLmxpbmtfb2ZfanNvblxuICAgICAgICAgICAgICAgIChmdW4gXyAtPiBzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgKGZ1biBfIC0+ICgpKSkpXG4gICAgICAgICAgbCxcbiAgICAgICAgbW9kX2wgbSApXG4gICAgfCBfIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBsaW5rIHN0YXRlc1wiLCBpKSlcbiAgaW5cbiAgUG9ydFxuICAgIHtcbiAgICAgIHBvcnRfbmFtZSA9IHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzIG47XG4gICAgICBwb3J0X2ludDtcbiAgICAgIHBvcnRfaW50X21vZDtcbiAgICAgIHBvcnRfbGluaztcbiAgICAgIHBvcnRfbGlua19tb2Q7XG4gICAgfVxuXG5sZXQgc2l0ZV9zaWdfb2ZfanNvbiBmaWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgXSAtPlxuICAgIENvdW50ZXJcbiAgICAgIHtcbiAgICAgICAgY291bnRlcl9zaWdfbmFtZSA9XG4gICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgWW9qc29uLkJhc2ljLlV0aWwudG9fc3RyaW5nIG47XG4gICAgICAgIGNvdW50ZXJfc2lnX21pbiA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb24gWW9qc29uLkJhc2ljLlV0aWwudG9faW50KSlcbiAgICAgICAgICAgIG1pbjtcbiAgICAgICAgY291bnRlcl9zaWdfbWF4ID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvbiBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQpKVxuICAgICAgICAgICAgbWF4O1xuICAgICAgICBjb3VudGVyX3NpZ19kZWZhdWx0ID0gWW9qc29uLkJhc2ljLlV0aWwudG9faW50IGRlZmF1bHQ7XG4gICAgICAgIGNvdW50ZXJfc2lnX3Zpc2libGUgPSBGcm9tX29yaWdpbmFsX2FzdDtcbiAgICAgIH1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X2xpbmtcIiwgbCkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X2ludFwiLCBpKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9saW5rXCIsIGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2xpbmtcIiwgbCk7IChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9pbnRcIiwgaSkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X2xpbmtcIiwgbCk7IChcInBvcnRfbmFtZVwiLCBuKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9uYW1lXCIsIG4pIF0gLT5cbiAgICBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gaSBsXG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2ludFwiLCBpKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbmFtZVwiLCBuKSBdIC0+XG4gICAgYnVpbGRfcG9ydF9vZl9qc29uIGZpbGVuYW1lcyBuIGkgYE51bGxcbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfbGlua1wiLCBsKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X25hbWVcIiwgbikgXSAtPlxuICAgIGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBgTnVsbCBsXG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pIF0gLT4gYnVpbGRfcG9ydF9vZl9qc29uIGZpbGVuYW1lcyBuIGBOdWxsIGBOdWxsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYW4gQVNUIGFnZW50XCIsIHgpKVxuXG5sZXQgc2l0ZV9vZl9qc29uIGZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwiY291bnRlcl9uYW1lXCIsIG4pOyAoXCJjb3VudGVyX3Rlc3RcIiwgdCk7IChcImNvdW50ZXJfZGVsdGFcIiwgZCkgXVxuICB8IGBBc3NvYyBbIChcImNvdW50ZXJfbmFtZVwiLCBuKTsgKFwiY291bnRlcl9kZWx0YVwiLCBkKTsgKFwiY291bnRlcl90ZXN0XCIsIHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJjb3VudGVyX3Rlc3RcIiwgdCk7IChcImNvdW50ZXJfbmFtZVwiLCBuKTsgKFwiY291bnRlcl9kZWx0YVwiLCBkKSBdXG4gIHwgYEFzc29jIFsgKFwiY291bnRlcl90ZXN0XCIsIHQpOyAoXCJjb3VudGVyX2RlbHRhXCIsIGQpOyAoXCJjb3VudGVyX25hbWVcIiwgbikgXVxuICB8IGBBc3NvYyBbIChcImNvdW50ZXJfZGVsdGFcIiwgZCk7IChcImNvdW50ZXJfbmFtZVwiLCBuKTsgKFwiY291bnRlcl90ZXN0XCIsIHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJjb3VudGVyX2RlbHRhXCIsIGQpOyAoXCJjb3VudGVyX3Rlc3RcIiwgdCk7IChcImNvdW50ZXJfbmFtZVwiLCBuKSBdIC0+XG4gICAgQ291bnRlclxuICAgICAge1xuICAgICAgICBjb3VudGVyX25hbWUgPVxuICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIFlvanNvbi5CYXNpYy5VdGlsLnRvX3N0cmluZyBuO1xuICAgICAgICBjb3VudGVyX3Rlc3QgPVxuICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIGNvdW50ZXJfdGVzdF9vZl9qc29uKVxuICAgICAgICAgICAgdDtcbiAgICAgICAgY291bnRlcl9kZWx0YSA9XG4gICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgWW9qc29uLkJhc2ljLlV0aWwudG9faW50IGQ7XG4gICAgICB9XG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9saW5rXCIsIGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9pbnRcIiwgaSkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfbGlua1wiLCBsKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfaW50XCIsIGkpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X25hbWVcIiwgbikgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbmFtZVwiLCBuKSBdIC0+XG4gICAgYnVpbGRfcG9ydF9vZl9qc29uIGZpbGVuYW1lcyBuIGkgbFxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9pbnRcIiwgaSkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X25hbWVcIiwgbikgXSAtPlxuICAgIGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBpIGBOdWxsXG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2xpbmtcIiwgbCkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9uYW1lXCIsIG4pIF0gLT5cbiAgICBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gYE51bGwgbFxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKSBdIC0+IGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBgTnVsbCBgTnVsbFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGFuIEFTVCBhZ2VudFwiLCB4KSlcblxubGV0IGNvdW50ZXJfdG9fanNvbiB+ZmlsZW5hbWVzIGMgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIFwiY291bnRlcl9uYW1lXCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX3N0cmluZyBjLmNvdW50ZXJfbmFtZSApO1xuICAgICAgKCBcImNvdW50ZXJfdGVzdFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgY291bnRlcl90ZXN0X3RvX2pzb24pXG4gICAgICAgICAgYy5jb3VudGVyX3Rlc3QgKTtcbiAgICAgICggXCJjb3VudGVyX2RlbHRhXCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX2ludCBjLmNvdW50ZXJfZGVsdGEgKTtcbiAgICBdXG5cbmxldCBjb3VudGVyX3NpZ190b19qc29uIH5maWxlbmFtZXMgYyA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggXCJjb3VudGVyX3NpZ19uYW1lXCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX3N0cmluZyBjLmNvdW50ZXJfc2lnX25hbWUgKTtcbiAgICAgICggXCJjb3VudGVyX21pblwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludCkpXG4gICAgICAgICAgYy5jb3VudGVyX3NpZ19taW4gKTtcbiAgICAgICggXCJjb3VudGVyX21heFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludCkpXG4gICAgICAgICAgYy5jb3VudGVyX3NpZ19tYXggKTtcbiAgICAgIFwiY291bnRlcl9kZWZhdWx0XCIsIEpzb25VdGlsLm9mX2ludCBjLmNvdW50ZXJfc2lnX2RlZmF1bHQ7XG4gICAgXVxuXG5sZXQgc2l0ZV90b19qc29uIH5jb3VudGVyX3RvX2pzb24gZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBQb3J0IHAgLT4gcG9ydF90b19qc29uIGZpbGVuYW1lcyBwXG4gIHwgQ291bnRlciBjIC0+IGNvdW50ZXJfdG9fanNvbiB+ZmlsZW5hbWVzIGNcblxubGV0IHByaW50X2FnZW50X21vZCBmID0gZnVuY3Rpb25cbiAgfCBDcmVhdGUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiK1wiXG4gIHwgRXJhc2UgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLVwiXG4gIHwgTm9Nb2QgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiXCJcblxubGV0IHByaW50X2FzdF9hZ2VudCB+cHJpbnRfY291bnRlciBmID0gZnVuY3Rpb25cbiAgfCBBYnNlbnQgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIuXCJcbiAgfCBQcmVzZW50ICgoYWdlbnRfbmFtZSwgXyksIGwsIG0pIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVzKCVhKSVhXCIgYWdlbnRfbmFtZVxuICAgICAgKFBwLmxpc3QgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgXCIpIChwcmludF9hc3Rfc2l0ZSB+cHJpbnRfY291bnRlcikpXG4gICAgICBsIHByaW50X2FnZW50X21vZCBtXG5cbmxldCBhZ2VudF9tb2RfdG9feW9qc29uID0gZnVuY3Rpb25cbiAgfCBDcmVhdGUgLT4gYFN0cmluZyBcImNyZWF0ZWRcIlxuICB8IEVyYXNlIC0+IGBTdHJpbmcgXCJlcmFzZVwiXG4gIHwgTm9Nb2QgLT4gYFN0cmluZyBcIm5vX21vZFwiXG5cbmxldCBhZ2VudF9tb2Rfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiY3JlYXRlZFwiIC0+IENyZWF0ZVxuICB8IGBTdHJpbmcgXCJlcmFzZVwiIC0+IEVyYXNlXG4gIHwgYFN0cmluZyBcIm5vX21vZFwiIC0+IE5vTW9kXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBhZ2VudCBtb2RpZmljYXRpb25cIiwgeCkpXG5cbmxldCBhZ2VudF90b19qc29uIH5jb3VudGVyX3RvX2pzb24gZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBBYnNlbnQgXyAtPiBgTnVsbFxuICB8IFByZXNlbnQgKG5hLCBsLCBtKSAtPlxuICAgIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgICBbXG4gICAgICAgIFwibmFtZVwiLCBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9zdHJpbmcgbmE7XG4gICAgICAgIFwic2lnXCIsXG4gICAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgKHNpdGVfdG9fanNvbiB+Y291bnRlcl90b19qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgIGw7XG4gICAgICAgIFwibW9kXCIsIGFnZW50X21vZF90b195b2pzb24gbTtcbiAgICAgIF1cblxubGV0IGFnZW50X29mX2pzb24gfnNpdGVfb2ZfanNvbiBmaWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEFic2VudCBMb2MuZHVtbXlcbiAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIG4pOyAoXCJzaWdcIiwgcyk7IChcIm1vZFwiLCBtKSBdXG4gIHwgYEFzc29jIFsgKFwic2lnXCIsIHMpOyAoXCJuYW1lXCIsIG4pOyAoXCJtb2RcIiwgbSkgXVxuICB8IGBBc3NvYyBbIChcIm5hbWVcIiwgbik7IChcIm1vZFwiLCBtKTsgKFwic2lnXCIsIHMpIF1cbiAgfCBgQXNzb2MgWyAoXCJzaWdcIiwgcyk7IChcIm1vZFwiLCBtKTsgKFwibmFtZVwiLCBuKSBdXG4gIHwgYEFzc29jIFsgKFwibW9kXCIsIG0pOyAoXCJuYW1lXCIsIG4pOyAoXCJzaWdcIiwgcykgXVxuICB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKTsgKFwic2lnXCIsIHMpOyAoXCJuYW1lXCIsIG4pIF0gLT5cbiAgICBQcmVzZW50XG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSBuLFxuICAgICAgICBKc29uVXRpbC50b19saXN0IChzaXRlX29mX2pzb24gZmlsZW5hbWVzKSBzLFxuICAgICAgICBhZ2VudF9tb2Rfb2ZfeW9qc29uIG0gKVxuICB8IGBBc3NvYyBbIChcIm5hbWVcIiwgbik7IChcIm1vZFwiLCBtKSBdIHwgYEFzc29jIFsgKFwibW9kXCIsIG0pOyAoXCJuYW1lXCIsIG4pIF0gLT5cbiAgICBQcmVzZW50XG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSBuLFxuICAgICAgICBbXSxcbiAgICAgICAgYWdlbnRfbW9kX29mX3lvanNvbiBtIClcbiAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIG4pOyAoXCJzaWdcIiwgcykgXSB8IGBBc3NvYyBbIChcInNpZ1wiLCBzKTsgKFwibmFtZVwiLCBuKSBdIC0+XG4gICAgUHJlc2VudFxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkgbixcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdCAoc2l0ZV9vZl9qc29uIGZpbGVuYW1lcykgcyxcbiAgICAgICAgTm9Nb2QgKVxuICB8IGBBc3NvYyBbIChcIm5hbWVcIiwgbikgXSAtPlxuICAgIFByZXNlbnRcbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpIG4sXG4gICAgICAgIFtdLFxuICAgICAgICBOb01vZCApXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYW4gQVNUIGFnZW50XCIsIHgpKVxuXG5sZXQgYWdlbnRfc2lnX29mX2pzb24gPSBhZ2VudF9vZl9qc29uIH5zaXRlX29mX2pzb246c2l0ZV9zaWdfb2ZfanNvblxuXG4oKiBUTyBETyBUcmFuc2ZlciBiYWNrIGludmVydGVkIGNvdW50ZXJzICopXG5sZXQgYWdlbnRfc2lnX3RvX2pzb24gPVxuICBhZ2VudF90b19qc29uIH5jb3VudGVyX3RvX2pzb246Y291bnRlcl9zaWdfdG9fanNvblxuXG5sZXQgYWdlbnRfb2ZfanNvbiA9IGFnZW50X29mX2pzb24gfnNpdGVfb2ZfanNvblxubGV0IGFnZW50X3RvX2pzb24gPSBhZ2VudF90b19qc29uIH5jb3VudGVyX3RvX2pzb25cblxubGV0IHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXIgPVxuICBQcC5saXN0XG4gICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFxcQCBcIilcbiAgICAoUHAubGlzdCBQcC5jb21tYSAocHJpbnRfYXN0X2FnZW50IH5wcmludF9jb3VudGVyKSlcblxubGV0IHRvX2VyYXNlZF9taXh0dXJlID1cbiAgTGlzdC5tYXBcbiAgICAoTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgICB8IEFic2VudCBwb3MgLT4gQWJzZW50IHBvc1xuICAgICAgfCBQcmVzZW50IChuLCBzLCBfKSAtPiBQcmVzZW50IChuLCBzLCBFcmFzZSkpKVxuXG5sZXQgdG9fY3JlYXRlZF9taXh0dXJlID1cbiAgTGlzdC5tYXBcbiAgICAoTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgICB8IEFic2VudCBwb3MgLT4gQWJzZW50IHBvc1xuICAgICAgfCBQcmVzZW50IChuLCBzLCBfKSAtPiBQcmVzZW50IChuLCBzLCBDcmVhdGUpKSlcblxubGV0IHRvX2R1bW15X3VzZXJfbGluayA9IGZ1bmN0aW9uXG4gIHwgW10gfCBbIChMS2FwcGEuTE5LX0FOWSwgXykgXSAtPiBVc2VyX2dyYXBoLldIQVRFVkVSXG4gIHwgWyAoTEthcHBhLkFOWV9GUkVFLCBfKSBdIC0+IFVzZXJfZ3JhcGguTElOS1MgW11cbiAgfCBbIChMS2FwcGEuTE5LX1ZBTFVFICh4LCBfKSwgXykgXSAtPiBVc2VyX2dyYXBoLkxJTktTIFsgKC0xLCAtMSksIHggXVxuICB8IFsgKExLYXBwYS5MTktfRlJFRSwgXykgXSAtPiBVc2VyX2dyYXBoLkxJTktTIFtdXG4gIHwgWyAoTEthcHBhLkxOS19TT01FLCBfKSBdIC0+IFVzZXJfZ3JhcGguU09NRVxuICB8IFsgKExLYXBwYS5MTktfVFlQRSAoKHR5LCBfKSwgKHNpLCBfKSksIF8pIF0gLT4gVXNlcl9ncmFwaC5UWVBFICh0eSwgc2kpXG4gIHwgXyA6OiBfIDo6IF8gLT4gYXNzZXJ0IGZhbHNlICgqIFRPRE8gKilcblxubGV0IHRvX2R1bW15X3VzZXJfaW50ZXJuYWwgPSBmdW5jdGlvblxuICB8IFtdIC0+IFNvbWUgW11cbiAgfCBbIChOb25lLCBfKSBdIC0+IE5vbmVcbiAgfCBbIChTb21lIHN0LCBfKSBdIC0+IFNvbWUgWyBzdCBdXG4gIHwgXyA6OiBfIDo6IF8gYXMgbCAtPiBTb21lIChMaXN0X3V0aWwubWFwX29wdGlvbiBmc3QgbClcblxubGV0IHRvX2R1bW15X3VzZXJfc2l0ZSA9IGZ1bmN0aW9uXG4gIHwgUG9ydCB7IHBvcnRfbmFtZTsgcG9ydF9pbnQ7IHBvcnRfaW50X21vZCA9IF87IHBvcnRfbGluazsgcG9ydF9saW5rX21vZCA9IF8gfVxuICAgIC0+XG4gICAge1xuICAgICAgVXNlcl9ncmFwaC5zaXRlX25hbWUgPSBmc3QgcG9ydF9uYW1lO1xuICAgICAgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPVxuICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICB7XG4gICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPSB0b19kdW1teV91c2VyX2xpbmsgcG9ydF9saW5rO1xuICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X3N0YXRlcyA9IHRvX2R1bW15X3VzZXJfaW50ZXJuYWwgcG9ydF9pbnQ7XG4gICAgICAgICAgfTtcbiAgICB9XG4gIHwgQ291bnRlciB7IGNvdW50ZXJfbmFtZTsgY291bnRlcl90ZXN0ID0gXzsgY291bnRlcl9kZWx0YSA9IF8gfSAtPlxuICAgIHtcbiAgICAgIFVzZXJfZ3JhcGguc2l0ZV9uYW1lID0gZnN0IGNvdW50ZXJfbmFtZTtcbiAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID0gVXNlcl9ncmFwaC5Db3VudGVyICgtMSk7XG4gICAgICAoKiBUT0RPICopXG4gICAgfVxuXG5sZXQgdG9fZHVtbXlfdXNlcl9hZ2VudCA9IGZ1bmN0aW9uXG4gIHwgQWJzZW50IF8gLT4gTm9uZVxuICB8IFByZXNlbnQgKChuYSwgXyksIHMsIF9tb2RzKSAtPlxuICAgIFNvbWVcbiAgICAgIHtcbiAgICAgICAgVXNlcl9ncmFwaC5ub2RlX3R5cGUgPSBuYTtcbiAgICAgICAgVXNlcl9ncmFwaC5ub2RlX2lkID0gTm9uZTtcbiAgICAgICAgVXNlcl9ncmFwaC5ub2RlX3NpdGVzID0gVG9vbHMuYXJyYXlfbWFwX29mX2xpc3QgdG9fZHVtbXlfdXNlcl9zaXRlIHM7XG4gICAgICB9XG5cbmxldCBzZXR1cF9saW5rIG0gKChsaW5lLCByb3cpLCBzaXRlKSB2YSA9XG4gIG1hdGNoIG0uKGxpbmUpLihyb3cpIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB7IFVzZXJfZ3JhcGgubm9kZV9zaXRlczsgXyB9IC0+XG4gICAgbGV0IHMgPSBub2RlX3NpdGVzLihzaXRlKSBpblxuICAgIChtYXRjaCBzLlVzZXJfZ3JhcGguc2l0ZV90eXBlIHdpdGhcbiAgICB8IFVzZXJfZ3JhcGguQ291bnRlciBfIC0+ICgpXG4gICAgfCBVc2VyX2dyYXBoLlBvcnQgcCAtPlxuICAgICAgbm9kZV9zaXRlcy4oc2l0ZSkgPC1cbiAgICAgICAge1xuICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV9uYW1lID0gcy5Vc2VyX2dyYXBoLnNpdGVfbmFtZTtcbiAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9XG4gICAgICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9saW5rcyA9IFVzZXJfZ3JhcGguTElOS1MgWyB2YSBdO1xuICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9zdGF0ZXMgPSBwLlVzZXJfZ3JhcGgucG9ydF9zdGF0ZXM7XG4gICAgICAgICAgICAgIH07XG4gICAgICAgIH0pXG5cbmxldCBtaXh0dXJlX3RvX3VzZXJfZ3JhcGggbSA9XG4gIGxldCBvdXQgPVxuICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0IChUb29scy5hcnJheV9tYXBfb2ZfbGlzdCB0b19kdW1teV91c2VyX2FnZW50KSBtXG4gIGluXG4gIGxldCBhY2MgPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgIChmdW4gbGluZSAtPlxuICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpIChmdW4gcm93IGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICB8IFNvbWUgeyBVc2VyX2dyYXBoLm5vZGVfc2l0ZXM7IF8gfSAtPlxuICAgICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgICAoZnVuIHNpdGUgYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID1cbiAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID0gVXNlcl9ncmFwaC5MSU5LUyBbXTsgXyB9O1xuICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID1cbiAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID0gVXNlcl9ncmFwaC5MSU5LUyAoXyA6OiBfIDo6IF8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9saW5rcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBVc2VyX2dyYXBoLldIQVRFVkVSIHwgVXNlcl9ncmFwaC5TT01FXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBVc2VyX2dyYXBoLlRZUEUgKF8sIF8pICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgfCB7IFVzZXJfZ3JhcGguc2l0ZV90eXBlID0gVXNlcl9ncmFwaC5Db3VudGVyIF87IF8gfSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPVxuICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguUG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPSBVc2VyX2dyYXBoLkxJTktTIFsgKF8sIGlkKSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5wb3AgaWQgYWNjIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSwgYWNjJyAtPiBNb2RzLkludE1hcC5hZGQgaWQgKChsaW5lLCByb3cpLCBzaXRlKSBhY2MnXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgdmEsIGFjYycgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhJyA9IChsaW5lLCByb3cpLCBzaXRlIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IHNldHVwX2xpbmsgb3V0IHZhIHZhJyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBzZXR1cF9saW5rIG91dCB2YScgdmEgaW5cbiAgICAgICAgICAgICAgICAgICAgYWNjJykpXG4gICAgICAgICAgICAgIGFjYyBub2RlX3NpdGVzKSlcbiAgICAgIE1vZHMuSW50TWFwLmVtcHR5IG91dFxuICBpblxuICBsZXQgKCkgPSBhc3NlcnQgKE1vZHMuSW50TWFwLmlzX2VtcHR5IGFjYykgaW5cbiAgb3V0XG5cbmxldCBpbml0X3RvX2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgSU5JVF9NSVggbSAtPlxuICAgIGBMaXN0IFsgYFN0cmluZyBcIm1peHR1cmVcIjsgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgZl9taXggbSBdXG4gIHwgSU5JVF9UT0sgdCAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJ0b2tlblwiO1xuICAgICAgICBKc29uVXRpbC5vZl9saXN0IChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBmX3ZhcikgdDtcbiAgICAgIF1cblxubGV0IGluaXRfb2ZfanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJtaXh0dXJlXCI7IG0gXSAtPlxuICAgIElOSVRfTUlYIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBtKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcInRva2VuXCI7IHQgXSAtPlxuICAgIElOSVRfVE9LXG4gICAgICAoSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiSU5JVF9UT0tcIilcbiAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX3ZhcilcbiAgICAgICAgIHQpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIEFzdCBpbml0IHN0YXRlbWVudFwiLCB4KSlcblxubGV0IHByaW50X3RvayBwcl9taXggcHJfdG9rIHByX3ZhciBmICgobmIsIF8pLCAobiwgXykpID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhICVhXCIgKEFsZ19leHByLnByaW50IHByX21peCBwcl90b2sgcHJfdmFyKSBuYiBwcl90b2sgblxuXG5sZXQgcHJpbnRfb25lX3NpemUgdGsgZiBtaXggPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEldCVhXCJcbiAgICAocHJpbnRfYXN0X21peCB+cHJpbnRfY291bnRlcilcbiAgICBtaXhcbiAgICAoZnVuIGYgLT5cbiAgICAgIG1hdGNoIHRrIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgXyA6OiBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiB8IFwiKVxuICAgIChQcC5saXN0XG4gICAgICAgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiArIFwiKVxuICAgICAgIChwcmludF90b2tcbiAgICAgICAgICAoZnVuIGYgbSAtPiBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiIChwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyKSBtKVxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmdcbiAgICAgICAgICAoZnVuIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJyVzJ1wiIHgpKSlcbiAgICB0a1xuXG5sZXQgcHJpbnRfYXJyb3cgZiBiaWRpciA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgIChpZiBiaWRpciB0aGVuXG4gICAgICAgXCI8LT5cIlxuICAgICBlbHNlXG4gICAgICAgXCItPlwiKVxuXG5sZXQgcHJpbnRfcmF3X3JhdGUgcHJfbWl4IHByX3RvayBwcl92YXIgb3AgZiAoZGVmLCBfKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSV0XCIgKEFsZ19leHByLnByaW50IHByX21peCBwcl90b2sgcHJfdmFyKSBkZWYgKGZ1biBmIC0+XG4gICAgICBtYXRjaCBvcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSAoZCwgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiwgJWFcIiAoQWxnX2V4cHIucHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpIGQpXG5cbmxldCBwcmludF9hc3RfYWxnX2V4cHIgPVxuICBBbGdfZXhwci5wcmludFxuICAgIChmdW4gZiBtIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCIgKHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXIpIG0pXG4gICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZ1xuICAgIChmdW4gZiB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCInJXMnXCIgeClcblxubGV0IHByaW50X3JhdGVzX29uZV9kaXIgdW4gZiBkZWYgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEldFwiXG4gICAgKHByaW50X3Jhd19yYXRlXG4gICAgICAgKGZ1biBmIG0gLT4gRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIiAocHJpbnRfYXN0X21peCB+cHJpbnRfY291bnRlcikgbSlcbiAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG4gICAgICAgKGZ1biBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiclcydcIiB4KVxuICAgICAgIE5vbmUpXG4gICAgZGVmXG4gICAgKGZ1biBmIC0+XG4gICAgICBtYXRjaCB1biB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSAoKGQsIF8pLCBtYXhfZGlzdCkgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiB7JWEldH1cIiBwcmludF9hc3RfYWxnX2V4cHIgZCAoZnVuIGYgLT5cbiAgICAgICAgICAgIFBwLm9wdGlvblxuICAgICAgICAgICAgICAoZnVuIGYgKG1kLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiOiVhXCIgcHJpbnRfYXN0X2FsZ19leHByIG1kKVxuICAgICAgICAgICAgICBmIG1heF9kaXN0KSlcblxubGV0IHByaW50X3J1bGVfY29udGVudCB+YmlkaXJlY3Rpb25hbCBmID0gZnVuY3Rpb25cbiAgfCBFZGl0IHIgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JWEgQF1cIiAocHJpbnRfb25lX3NpemUgci5kZWx0YV90b2tlbikgci5taXhcbiAgfCBBcnJvdyByIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JWEgJWFAICVhQF1cIlxuICAgICAgKHByaW50X29uZV9zaXplIHIucm1fdG9rZW4pXG4gICAgICByLmxocyBwcmludF9hcnJvdyBiaWRpcmVjdGlvbmFsXG4gICAgICAocHJpbnRfb25lX3NpemUgci5hZGRfdG9rZW4pXG4gICAgICByLnJoc1xuXG5sZXQgcHJpbnRfYXN0X3J1bGUgZiByID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JWEgQEAgJWEldEBdXCJcbiAgICAocHJpbnRfcnVsZV9jb250ZW50IH5iaWRpcmVjdGlvbmFsOnIuYmlkaXJlY3Rpb25hbCkgci5yZXdyaXRlXG4gICAgKHByaW50X3JhdGVzX29uZV9kaXIgci5rX3VuKSByLmtfZGVmIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggci5rX29wLCByLmtfb3BfdW4gd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+ICgpXG4gICAgICB8IE5vbmUsIF8gLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiAsICVhXCJcbiAgICAgICAgICAocHJpbnRfcmF0ZXNfb25lX2RpciByLmtfb3BfdW4pXG4gICAgICAgICAgKEFsZ19leHByLmNvbnN0IE5ici56ZXJvKVxuICAgICAgfCBTb21lIGEsIF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIiAsICVhXCIgKHByaW50X3JhdGVzX29uZV9kaXIgci5rX29wX3VuKSBhKVxuXG5sZXQgcHJpbnRfY29uZmlndXJhdGlvbiBmICgobiwgXyksIGwpID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSVkZWY6IFxcXCIlc1xcXCIgQFslYUBdQF1cIiBuXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmICh4LCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcIiVzXFxcIlwiIHgpKVxuICAgIGxcblxubGV0IHByaW50X2luaXQgZiA9IGZ1bmN0aW9uXG4gIHwgKG4sIF8pLCBJTklUX01JWCAobSwgXykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslJWluaXQ6IEBbJWFAXUAgQFslYUBdQF1cIiBwcmludF9hc3RfYWxnX2V4cHIgblxuICAgICAgKHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXIpXG4gICAgICBtXG4gIHwgKG4sIF8pLCBJTklUX1RPSyB0IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSVpbml0OiAlYSAlYUBdXCIgcHJpbnRfYXN0X2FsZ19leHByIG5cbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoeCwgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHgpKVxuICAgICAgdFxuXG5sZXQgcHJpbnRfYXN0X2Jvb2xfZXhwciA9XG4gIEFsZ19leHByLnByaW50X2Jvb2xcbiAgICAoZnVuIGYgbSAtPiBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiIChwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyKSBtKVxuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmdcbiAgICAoZnVuIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJyVzJ1wiIHgpXG5cbmxldCBwcmludF9wcmludF9leHByIGYgPVxuICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0ciwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCIlc1xcXCJcIiBzdHJcbiAgICB8IFByaW1pdGl2ZXMuQWxnX3BleHByIChhbGcsIF8pIC0+IHByaW50X2FzdF9hbGdfZXhwciBmIGFsZ1xuICBpblxuICBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgWyBQcmltaXRpdmVzLlN0cl9wZXhwciAoc3RyLCBfKSBdIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgXFxcIiVzXFxcIlwiIHN0clxuICB8IChbIFByaW1pdGl2ZXMuQWxnX3BleHByIF8gXSB8IF8gOjogXyA6OiBfKSBhcyBlIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkAgKEBbJWFAXSlcIlxuICAgICAgKFBwLmxpc3QgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIuXCIpIGF1eClcbiAgICAgIGVcblxubGV0IHByaW50X21vZGlmIGYgPSBmdW5jdGlvblxuICB8IEFQUExZICgobiwgXyksIChyLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJEFQUExZIEBbJWFAXSBAWyVhQF07XCIgcHJpbnRfYXN0X2FsZ19leHByIG5cbiAgICAgIChwcmludF9ydWxlX2NvbnRlbnQgfmJpZGlyZWN0aW9uYWw6ZmFsc2UpXG4gICAgICByLnJld3JpdGVcbiAgfCBVUERBVEUgKChzLCBfKSwgKG4sIF8pKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkVVBEQVRFICclc0AnIEBbJWFAXTtcIiBzIHByaW50X2FzdF9hbGdfZXhwciBuXG4gIHwgU1RPUCBwIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIkU1RPUCVhO1wiIHByaW50X3ByaW50X2V4cHIgcFxuICB8IFNOQVBTSE9UIChyYXcsIHApIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRTTkFQU0hPVCVhJXQ7XCIgcHJpbnRfcHJpbnRfZXhwciBwIChmdW4gZiAtPlxuICAgICAgICBpZiByYXcgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIgW3RydWVdXCIpXG4gIHwgUFJJTlQgKFtdLCB4KSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJFBSSU5URiVhXCIgcHJpbnRfcHJpbnRfZXhwciB4XG4gIHwgUFJJTlQgKGZpbGUsIHgpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRQUklOVEYlYSA+JWFcIiBwcmludF9wcmludF9leHByIHggcHJpbnRfcHJpbnRfZXhwciBmaWxlXG4gIHwgUExPVEVOVFJZIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiRQTE9UTk9XO1wiXG4gIHwgQ0ZMT1dMQUJFTCAob24sIChzLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFRSQUNLICclcycgJXM7XCIgc1xuICAgICAgKGlmIG9uIHRoZW5cbiAgICAgICAgIFwiW3RydWVdXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcIltmYWxzZV1cIilcbiAgfCBDRkxPV01JWCAob24sIChwLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFRSQUNLIEBbJWFAXSAlcztcIlxuICAgICAgKHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXIpXG4gICAgICBwXG4gICAgICAoaWYgb24gdGhlblxuICAgICAgICAgXCJbdHJ1ZV1cIlxuICAgICAgIGVsc2VcbiAgICAgICAgIFwiW2ZhbHNlXVwiKVxuICB8IERJTiAoaywgcCkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJERJTiVhICV0W3RydWVdXCIgcHJpbnRfcHJpbnRfZXhwciBwIChmdW4gZiAtPlxuICAgICAgICBtYXRjaCBrIHdpdGhcbiAgICAgICAgfCBQcmltaXRpdmVzLkFCU09MVVRFIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwiYWJzb2x1dGVcXFwiIFwiXG4gICAgICAgIHwgUHJpbWl0aXZlcy5SRUxBVElWRSAtPiAoKVxuICAgICAgICB8IFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJwcm9iYWJpbGl0eVxcXCIgXCIpXG4gIHwgRElOT0ZGIHAgLT4gRm9ybWF0LmZwcmludGYgZiBcIiRESU4lYSBbZmFsc2VdXCIgcHJpbnRfcHJpbnRfZXhwciBwXG4gIHwgU1BFQ0lFU19PRiAob24sIHAsIChtLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFNQRUNJRVNfT0YgQFslYUBdICVzID4lYTtcIlxuICAgICAgKHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXIpXG4gICAgICBtXG4gICAgICAoaWYgb24gdGhlblxuICAgICAgICAgXCJbdHJ1ZV1cIlxuICAgICAgIGVsc2VcbiAgICAgICAgIFwiW2ZhbHNlXVwiKVxuICAgICAgcHJpbnRfcHJpbnRfZXhwciBwXG5cbmxldCBwcmludF9wZXJ0dXJiYXRpb24gZiAoKGFsYXJtLCBjb25kLCBtb2RpZiwgcmVwKSwgXykgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFslJW1vZDolYSVhIGRvQCBAWyVhQF0lYUBdXCJcbiAgICAoUHAub3B0aW9uIChmdW4gZiBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJhbGFybSAlYVwiIE5ici5wcmludCBpKSlcbiAgICBhbGFybVxuICAgIChQcC5vcHRpb24gKGZ1biBmIChyLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFslYUBdXCIgcHJpbnRfYXN0X2Jvb2xfZXhwciByKSlcbiAgICBjb25kXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgcHJpbnRfbW9kaWYpXG4gICAgbW9kaWZcbiAgICAoUHAub3B0aW9uIChmdW4gZiAociwgXykgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJyZXBlYXQgQFslYUBdXCIgcHJpbnRfYXN0X2Jvb2xfZXhwciByKSlcbiAgICByZXBcblxubGV0IHByaW50X3BhcnNpbmdfY29tcGlsX2thcHBhIGYgYyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQCxALCVhQCwlYUAsQCwlYUAsQCwlYUAsJWFALEAsJWFALEAsJWFAXUAuXCJcbiAgICAoUHAubGlzdCBQcC5zcGFjZSBwcmludF9jb25maWd1cmF0aW9uKVxuICAgIGMuY29uZmlndXJhdGlvbnNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgYSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSVhZ2VudDpAIEBbJWFAXUBdXCJcbiAgICAgICAgICAgKHByaW50X2FzdF9hZ2VudCB+cHJpbnRfY291bnRlcjpwcmludF9jb3VudGVyX3NpZylcbiAgICAgICAgICAgYSkpXG4gICAgYy5zaWduYXR1cmVzXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIChzLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSV0b2tlbjogJXNcIiBzKSlcbiAgICBjLnRva2Vuc1xuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoKHMsIF8pLCAoYSwgXykpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslJXZhcjogJyVzJ0AgQFslYUBdQF1cIiBzIHByaW50X2FzdF9hbGdfZXhwciBhKSlcbiAgICBjLnZhcmlhYmxlc1xuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoYSwgXykgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyUlcGxvdDpAIEBbJWFAXUBdXCIgcHJpbnRfYXN0X2FsZ19leHByIGEpKVxuICAgIGMub2JzZXJ2YWJsZXNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKHMsIChyLCBfKSkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAW0BbJWElYUBdQF1cIlxuICAgICAgICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiAocywgXykgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJyVzJ0AgXCIgcykpXG4gICAgICAgICAgIHMgcHJpbnRfYXN0X3J1bGUgcikpXG4gICAgYy5ydWxlc1xuICAgIChQcC5saXN0IFBwLnNwYWNlIHByaW50X3BlcnR1cmJhdGlvbilcbiAgICBjLnBlcnR1cmJhdGlvbnNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSBwcmludF9pbml0KVxuICAgIGMuaW5pdFxuXG5sZXQgYXJyb3dfbm90YXRpb25fdG9feW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciByID1cbiAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICBbXG4gICAgICBcImxoc1wiLCBmX21peCByLmxocztcbiAgICAgICggXCJybV90b2tlblwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgKHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgci5ybV90b2tlbiApO1xuICAgICAgXCJyaHNcIiwgZl9taXggci5yaHM7XG4gICAgICAoIFwiYWRkX3Rva2VuXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICByLmFkZF90b2tlbiApO1xuICAgIF1cblxubGV0IGFycm93X25vdGF0aW9uX29mX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsIDw9IDQgLT5cbiAgICB7XG4gICAgICBsaHMgPSBmX21peCAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwibGhzXCIgeCk7XG4gICAgICBybV90b2tlbiA9XG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJybV90b2tlblwiIHgpO1xuICAgICAgcmhzID0gZl9taXggKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInJoc1wiIHgpO1xuICAgICAgYWRkX3Rva2VuID1cbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImFkZF90b2tlblwiIHgpO1xuICAgIH1cbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBhcnJvd19ub3RhdGlvblwiLCB4KSlcblxubGV0IGVkaXRfbm90YXRpb25fdG9feW9qc29uIGZpbGVuYW1lcyByID1cbiAgbGV0IG1peF90b19qc29uID1cbiAgICBKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9saXN0IChhZ2VudF90b19qc29uIGZpbGVuYW1lcykpXG4gIGluXG4gIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgW1xuICAgICAgXCJtaXhcIiwgbWl4X3RvX2pzb24gci5taXg7XG4gICAgICAoIFwiZGVsdGFfdG9rZW5cIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb24gSnNvblV0aWwub2Zfc3RyaW5nKSlcbiAgICAgICAgICAgICAoc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICByLmRlbHRhX3Rva2VuICk7XG4gICAgXVxuXG5sZXQgZWRpdF9ub3RhdGlvbl9vZl95b2pzb24gZmlsZW5hbWVzIHIgPVxuICBsZXQgbWl4X29mX2pzb24gPVxuICAgIEpzb25VdGlsLnRvX2xpc3QgKEpzb25VdGlsLnRvX2xpc3QgKGFnZW50X29mX2pzb24gZmlsZW5hbWVzKSlcbiAgaW5cbiAgbWF0Y2ggciB3aXRoXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPCAzIC0+XG4gICAge1xuICAgICAgbWl4ID0gbWl4X29mX2pzb24gKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcIm1peFwiIHgpO1xuICAgICAgZGVsdGFfdG9rZW4gPVxuICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBtaXhfb2ZfanNvblxuICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSkpXG4gICAgICAgICAgICAgKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZGVsdGFfdG9rZW5cIiB4KTtcbiAgICB9XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUIGVkaXRfbm90YXRpb25cIiwgeCkpXG5cbmxldCBydWxlX2NvbnRlbnRfdG9feW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgRWRpdCByIC0+IGBMaXN0IFsgYFN0cmluZyBcImVkaXRcIjsgZWRpdF9ub3RhdGlvbl90b195b2pzb24gZmlsZW5hbWVzIHIgXVxuICB8IEFycm93IHIgLT5cbiAgICBgTGlzdCBbIGBTdHJpbmcgXCJhcnJvd1wiOyBhcnJvd19ub3RhdGlvbl90b195b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyIHIgXVxuXG5sZXQgcnVsZV9jb250ZW50X29mX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYFN0cmluZyBcImVkaXRcIjsgciBdIC0+IEVkaXQgKGVkaXRfbm90YXRpb25fb2ZfeW9qc29uIGZpbGVuYW1lcyByKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcImFycm93XCI7IHIgXSAtPlxuICAgIEFycm93IChhcnJvd19ub3RhdGlvbl9vZl95b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyIHIpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUIHJ1bGUgY29udGVudFwiLCB4KSlcblxubGV0IHJ1bGVfdG9fanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgciA9XG4gIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgW1xuICAgICAgXCJyZXdyaXRlXCIsIHJ1bGVfY29udGVudF90b195b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyIHIucmV3cml0ZTtcbiAgICAgIFwiYmlkaXJlY3Rpb25hbFwiLCBgQm9vbCByLmJpZGlyZWN0aW9uYWw7XG4gICAgICAoIFwia19kZWZcIixcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICByLmtfZGVmICk7XG4gICAgICAoIFwia191blwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKSkpXG4gICAgICAgICAgci5rX3VuICk7XG4gICAgICAoIFwia19vcFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgci5rX29wICk7XG4gICAgICAoIFwia19vcF91blwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKSkpXG4gICAgICAgICAgci5rX29wX3VuICk7XG4gICAgXVxuXG5sZXQgcnVsZV9vZl9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPD0gNiAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICByZXdyaXRlID1cbiAgICAgICAgICAgcnVsZV9jb250ZW50X29mX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXJcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwicmV3cml0ZVwiIHgpO1xuICAgICAgICAgYmlkaXJlY3Rpb25hbCA9XG4gICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX2Jvb2xcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiYmlkaXJlY3Rpb25hbFwiIHgpO1xuICAgICAgICAga19kZWYgPVxuICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJrX2RlZlwiIHgpO1xuICAgICAgICAga191biA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpKSlcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwia191blwiIHgpO1xuICAgICAgICAga19vcCA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwia19vcFwiIHgpO1xuICAgICAgICAga19vcF91biA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpKSlcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwia19vcF91blwiIHgpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUIHJ1bGVcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBydWxlXCIsIHgpKVxuXG5sZXQgbW9kaWZfdG9fanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IEFQUExZIChhbGcsIHIpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIkFQUExZXCI7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgYWxnO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAocnVsZV90b19qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhcikgcjtcbiAgICAgIF1cbiAgfCBVUERBVEUgKGlkLCBhbGcpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIlVQREFURVwiO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBmX3ZhciBpZDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBhbGc7XG4gICAgICBdXG4gIHwgU1RPUCBsIC0+XG4gICAgYExpc3RcbiAgICAgIChgU3RyaW5nIFwiU1RPUFwiXG4gICAgICA6OiBMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBsKVxuICB8IFNOQVBTSE9UIChyYXcsIGwpIC0+XG4gICAgYExpc3RcbiAgICAgIChgU3RyaW5nXG4gICAgICAgICAoaWYgcmF3IHRoZW5cbiAgICAgICAgICAgIFwiUkFXX1NOQVBTSE9UXCJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBcIlNOQVBTSE9UXCIpXG4gICAgICA6OiBMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBsKVxuICB8IFBSSU5UIChmaWxlLCBleHByKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJQUklOVFwiO1xuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBmaWxlO1xuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBleHByO1xuICAgICAgXVxuICB8IFBMT1RFTlRSWSAtPiBgU3RyaW5nIFwiUExPVEVOVFJZXCJcbiAgfCBDRkxPV0xBQkVMIChiLCBpZCkgLT5cbiAgICBgTGlzdCBbIGBTdHJpbmcgXCJDRkxPV0xBQkVMXCI7IGBCb29sIGI7IHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcyBpZCBdXG4gIHwgQ0ZMT1dNSVggKGIsIG0pIC0+XG4gICAgYExpc3QgWyBgU3RyaW5nIFwiQ0ZMT1dcIjsgYEJvb2wgYjsgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgZl9taXggbSBdXG4gIHwgRElOIChiLCBmaWxlKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJESU5cIjtcbiAgICAgICAgUHJpbWl0aXZlcy5kaW5fa2luZF90b195b2pzb24gYjtcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgZmlsZTtcbiAgICAgIF1cbiAgfCBESU5PRkYgZmlsZSAtPlxuICAgIGBMaXN0XG4gICAgICAoYFN0cmluZyBcIkRJTk9GRlwiXG4gICAgICA6OiBMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBmaWxlXG4gICAgICApXG4gIHwgU1BFQ0lFU19PRiAoYiwgbCwgbSkgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiU1BFQ0lFU19PRlwiO1xuICAgICAgICBgQm9vbCBiO1xuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBsO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBmX21peCBtO1xuICAgICAgXVxuXG5sZXQgbW9kaWZfb2ZfanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkFQUExZXCI7IGFsZzsgbWl4IF0gLT5cbiAgICBBUFBMWVxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGFsZyxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAocnVsZV9vZl9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBtaXggKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIlVQREFURVwiOyBpZDsgYWxnIF0gLT5cbiAgICBVUERBVEVcbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl92YXIgaWQsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgYWxnIClcbiAgfCBgTGlzdCAoYFN0cmluZyBcIlNUT1BcIiA6OiBsKSAtPlxuICAgIFNUT1AgKExpc3QubWFwIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpIGwpXG4gIHwgYExpc3QgKGBTdHJpbmcgXCJTTkFQU0hPVFwiIDo6IGwpIC0+XG4gICAgU05BUFNIT1RcbiAgICAgICggZmFsc2UsXG4gICAgICAgIExpc3QubWFwIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpIGwgKVxuICB8IGBMaXN0IChgU3RyaW5nIFwiUkFXX1NOQVBTSE9UXCIgOjogbCkgLT5cbiAgICBTTkFQU0hPVFxuICAgICAgKHRydWUsIExpc3QubWFwIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpIGwpXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiUFJJTlRcIjsgZmlsZTsgZXhwciBdIC0+XG4gICAgUFJJTlRcbiAgICAgICggSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgZmlsZSxcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgZXhwciApXG4gIHwgYFN0cmluZyBcIlBMT1RFTlRSWVwiIC0+IFBMT1RFTlRSWVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkNGTE9XTEFCRUxcIjsgYEJvb2wgYjsgaWQgXSAtPlxuICAgIENGTE9XTEFCRUwgKGIsIHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzIGlkKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkNGTE9XXCI7IGBCb29sIGI7IG0gXSAtPlxuICAgIENGTE9XTUlYIChiLCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBtKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkRJTlwiOyBiOyBmaWxlIF0gLT5cbiAgICBESU5cbiAgICAgICggUHJpbWl0aXZlcy5kaW5fa2luZF9vZl95b2pzb24gYixcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgZmlsZSApXG4gIHwgYExpc3QgKGBTdHJpbmcgXCJESU5PRkZcIiA6OiBmaWxlKSAtPlxuICAgIERJTk9GRlxuICAgICAgKExpc3QubWFwIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpIGZpbGUpXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiU1BFQ0lFU19PRlwiOyBgQm9vbCBiOyBmaWxlOyBtIF0gLT5cbiAgICBTUEVDSUVTX09GXG4gICAgICAoIGIsXG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGZpbGUsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IG0gKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBtb2RpZmljYXRpb25cIiwgeCkpXG5cbmxldCBtZXJnZV9pbnRlcm5hbF9tb2QgYWNjID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGFjY1xuICB8IFNvbWUgKHgsIHBvcykgLT5cbiAgICBsZXQgeF9vcCA9IFNvbWUgeCBpblxuICAgIGlmIExpc3QuZXhpc3RzIChmdW4gKHgnLCBfKSAtPiB4X29wID0geCcpIGFjYyB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlXG4gICAgICAoeF9vcCwgcG9zKSA6OiBhY2NcblxubGV0IG1lcmdlX2ludGVybmFscyA9XG4gIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjICgoeCwgXykgYXMgeSkgLT5cbiAgICAgIGlmXG4gICAgICAgIHggPSBOb25lXG4gICAgICAgIHx8IExpc3QuZXhpc3RzXG4gICAgICAgICAgICAgKGZ1biAoeCcsIF8pIC0+XG4gICAgICAgICAgICAgICBPcHRpb25fdXRpbC5lcXVhbCAoZnVuIHggeCcgLT4gU3RyaW5nLmNvbXBhcmUgeCB4JyA9IDApIHggeCcpXG4gICAgICAgICAgICAgYWNjXG4gICAgICB0aGVuXG4gICAgICAgIGFjY1xuICAgICAgZWxzZVxuICAgICAgICB5IDo6IGFjYylcblxubGV0IHJlYyBtZXJnZV9zaXRlc19jb3VudGVyIGMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFsgQ291bnRlciBjIF1cbiAgfCBDb3VudGVyIGMnIDo6IF8gYXMgbCB3aGVuIGZzdCBjLmNvdW50ZXJfc2lnX25hbWUgPSBmc3QgYycuY291bnRlcl9zaWdfbmFtZVxuICAgIC0+XG4gICAgbFxuICB8ICgoUG9ydCBfIHwgQ291bnRlciBfKSBhcyBoKSA6OiB0IC0+IGggOjogbWVyZ2Vfc2l0ZXNfY291bnRlciBjIHRcblxubGV0IHJlYyBtZXJnZV9zaXRlc19wb3J0IHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IFsgUG9ydCB7IHAgd2l0aCBwb3J0X2xpbmsgPSBbXSB9IF1cbiAgfCBQb3J0IGggOjogdCB3aGVuIGZzdCBwLnBvcnRfbmFtZSA9IGZzdCBoLnBvcnRfbmFtZSAtPlxuICAgIFBvcnRcbiAgICAgIHtcbiAgICAgICAgaCB3aXRoXG4gICAgICAgIHBvcnRfaW50ID1cbiAgICAgICAgICBtZXJnZV9pbnRlcm5hbF9tb2RcbiAgICAgICAgICAgIChtZXJnZV9pbnRlcm5hbHMgaC5wb3J0X2ludCBwLnBvcnRfaW50KVxuICAgICAgICAgICAgcC5wb3J0X2ludF9tb2Q7XG4gICAgICB9XG4gICAgOjogdFxuICB8ICgoUG9ydCBfIHwgQ291bnRlciBfKSBhcyBoKSA6OiB0IC0+IGggOjogbWVyZ2Vfc2l0ZXNfcG9ydCBwIHRcblxubGV0IG1lcmdlX3NpdGVzID1cbiAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICB8IFBvcnQgcCAtPiBtZXJnZV9zaXRlc19wb3J0IHAgYWNjXG4gICAgfCBDb3VudGVyIGMgLT4gbWVyZ2Vfc2l0ZXNfY291bnRlciAoY291bnRlcl9zaWdfb2ZfY291bnRlciBjKSBhY2MpXG5cbmxldCBtZXJnZV9hZ2VudHMgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIChhY2MgOiBhZ2VudF9zaWcgbGlzdCkgLT4gZnVuY3Rpb25cbiAgICAgICB8IEFic2VudCBfIC0+IGFjY1xuICAgICAgIHwgUHJlc2VudCAoKChuYSwgXykgYXMgeCksIChzIDogY291bnRlciBzaXRlIGxpc3QpLCBfKSAtPlxuICAgICAgICAgbGV0IHJlYyBhdXggPSBmdW5jdGlvblxuICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgUHJlc2VudFxuICAgICAgICAgICAgICAgICAoIHgsXG4gICAgICAgICAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICB8IFBvcnQgcCAtPiBQb3J0IHsgcCB3aXRoIHBvcnRfbGluayA9IFtdIH1cbiAgICAgICAgICAgICAgICAgICAgICAgfCBDb3VudGVyIF8gYXMgeCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hcF9jb3VudGVyc19pbl9zaXRlIGNvdW50ZXJfc2lnX29mX2NvdW50ZXIgeClcbiAgICAgICAgICAgICAgICAgICAgIHMsXG4gICAgICAgICAgICAgICAgICAgTm9Nb2QgKTtcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgIHwgUHJlc2VudCAoKG5hJywgXyksIHMnLCBfKSA6OiB0IHdoZW4gU3RyaW5nLmNvbXBhcmUgbmEgbmEnID0gMCAtPlxuICAgICAgICAgICAgIFByZXNlbnQgKHgsIG1lcmdlX3NpdGVzIHMnIHMsIE5vTW9kKSA6OiB0XG4gICAgICAgICAgIHwgKChQcmVzZW50IF8gfCBBYnNlbnQgXykgYXMgaCkgOjogdCAtPiBoIDo6IGF1eCB0XG4gICAgICAgICBpblxuICAgICAgICAgYXV4IGFjYykpXG5cbmxldCBtZXJnZV90b2tlbnMgPVxuICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyAoXywgKChuYSwgXykgYXMgdG9rKSkgLT5cbiAgICAgIGxldCByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBbIHRvayBdXG4gICAgICAgIHwgKG5hJywgXykgOjogXyBhcyBsIHdoZW4gU3RyaW5nLmNvbXBhcmUgbmEgbmEnID0gMCAtPiBsXG4gICAgICAgIHwgaCA6OiB0IGFzIGwgLT5cbiAgICAgICAgICBsZXQgbyA9IGF1eCB0IGluXG4gICAgICAgICAgaWYgdCA9PSBvIHRoZW5cbiAgICAgICAgICAgIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBoIDo6IG9cbiAgICAgIGluXG4gICAgICBhdXggYWNjKVxuXG5sZXQgc2lnX2Zyb21faW5pdHMgPVxuICBMaXN0LmZvbGRfbGVmdCAoZnVuIChhZ3MsIHRva3MpIC0+IGZ1bmN0aW9uXG4gICAgfCBfLCBJTklUX01JWCAobSwgXykgLT4gbWVyZ2VfYWdlbnRzIGFncyBtLCB0b2tzXG4gICAgfCBuYSwgSU5JVF9UT0sgbCAtPiBhZ3MsIG1lcmdlX3Rva2VucyB0b2tzIChMaXN0Lm1hcCAoZnVuIHggLT4gbmEsIHgpIGwpKVxuXG5sZXQgc2lnX2Zyb21fcnVsZSAoYWdzLCB0b2tzKSByID1cbiAgbWF0Y2ggci5yZXdyaXRlIHdpdGhcbiAgfCBFZGl0IGUgLT4gbWVyZ2VfYWdlbnRzIGFncyBlLm1peCwgbWVyZ2VfdG9rZW5zIHRva3MgZS5kZWx0YV90b2tlblxuICB8IEFycm93IGEgLT5cbiAgICBsZXQgYWdzJywgdG9rcycgPVxuICAgICAgaWYgci5iaWRpcmVjdGlvbmFsIHRoZW5cbiAgICAgICAgbWVyZ2VfYWdlbnRzIGFncyBhLnJocywgbWVyZ2VfdG9rZW5zIHRva3MgYS5hZGRfdG9rZW5cbiAgICAgIGVsc2VcbiAgICAgICAgYWdzLCB0b2tzXG4gICAgaW5cbiAgICBtZXJnZV9hZ2VudHMgYWdzJyBhLmxocywgbWVyZ2VfdG9rZW5zIHRva3MnIGEucm1fdG9rZW5cblxubGV0IHNpZ19mcm9tX3J1bGVzID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBwIChfLCAociwgXykpIC0+IHNpZ19mcm9tX3J1bGUgcCByKVxuXG5sZXQgc2lnX2Zyb21fcGVydHMgPVxuICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyAoKF8sIF8sIHAsIF8pLCBfKSAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBwIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBBUFBMWSAoXywgKHIsIF8pKSAtPiBzaWdfZnJvbV9ydWxlIHAgclxuICAgICAgICAgIHwgVVBEQVRFIF8gfCBTVE9QIF8gfCBTTkFQU0hPVCBfIHwgUFJJTlQgXyB8IFBMT1RFTlRSWSB8IENGTE9XTEFCRUwgX1xuICAgICAgICAgIHwgQ0ZMT1dNSVggXyB8IERJTiBfIHwgRElOT0ZGIF8gfCBTUEVDSUVTX09GIF8gLT5cbiAgICAgICAgICAgIHApXG4gICAgICAgIGFjYyBwKVxuXG5sZXQgaW5mZXJfYWdlbnRfc2lnbmF0dXJlcyByID1cbiAgbGV0IGFjYyA9IHNpZ19mcm9tX2luaXRzIChyLnNpZ25hdHVyZXMsIHIudG9rZW5zKSByLmluaXQgaW5cbiAgbGV0IGFjYycgPSBzaWdfZnJvbV9ydWxlcyBhY2Mgci5ydWxlcyBpblxuICBsZXQgYWdzLCB0b2tzID0gc2lnX2Zyb21fcGVydHMgYWNjJyByLnBlcnR1cmJhdGlvbnMgaW5cbiAgeyByIHdpdGggc2lnbmF0dXJlcyA9IGFnczsgdG9rZW5zID0gdG9rcyB9XG5cbmxldCBzcGxpdF9taXh0dXJlIG0gPVxuICBMaXN0LmZvbGRfcmlnaHRcbiAgICAoZnVuIGwgKGxocywgcmhzKSAtPlxuICAgICAgbGV0IGxsLCByciA9XG4gICAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICAgIChmdW4gYWcgKChsaHMsIHJocykgYXMgcGFjaykgLT5cbiAgICAgICAgICAgIG1hdGNoIGFnIHdpdGhcbiAgICAgICAgICAgIHwgQWJzZW50IF8gLT4gcGFja1xuICAgICAgICAgICAgfCBQcmVzZW50ICgoKF8sIHBvcykgYXMgbmEpLCBpbnRmLCBtb2RpZikgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG1vZGlmIHdpdGhcbiAgICAgICAgICAgICAgfCBDcmVhdGUgLT4gQWJzZW50IHBvcyA6OiBsaHMsIFByZXNlbnQgKG5hLCBpbnRmLCBOb01vZCkgOjogcmhzXG4gICAgICAgICAgICAgIHwgRXJhc2UgLT4gUHJlc2VudCAobmEsIGludGYsIE5vTW9kKSA6OiBsaHMsIEFic2VudCBwb3MgOjogcmhzXG4gICAgICAgICAgICAgIHwgTm9Nb2QgLT5cbiAgICAgICAgICAgICAgICBsZXQgaW50ZmwsIGludGZyID1cbiAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKGwsIHIpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgfCBQb3J0IHAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggUG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbmFtZSA9IHAucG9ydF9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9pbnQgPSBwLnBvcnRfaW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9pbnRfbW9kID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbGluayA9IHAucG9ydF9saW5rO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9saW5rX21vZCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBQb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9uYW1lID0gcC5wb3J0X25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2ludCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBwLnBvcnRfaW50X21vZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBwLnBvcnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoeCwgcG9zKSAtPiBbIFNvbWUgeCwgcG9zIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9pbnRfbW9kID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbGluayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBwLnBvcnRfbGlua19tb2Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gcC5wb3J0X2xpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSAoaSwgcG9zKSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9saW5rX21vZCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6OiByIClcbiAgICAgICAgICAgICAgICAgICAgICB8IENvdW50ZXIgYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBDb3VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjIHdpdGggY291bnRlcl9kZWx0YSA9IExvYy5hbm5vdF93aXRoX2R1bW15IDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudGVyIHsgYyB3aXRoIGNvdW50ZXJfdGVzdCA9IE5vbmUgfSA6OiByICkpXG4gICAgICAgICAgICAgICAgICAgIChbXSwgW10pIGludGZcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICggUHJlc2VudCAobmEsIGludGZsLCBOb01vZCkgOjogbGhzLFxuICAgICAgICAgICAgICAgICAgUHJlc2VudCAobmEsIGludGZyLCBOb01vZCkgOjogcmhzICkpKVxuICAgICAgICAgIGwgKFtdLCBbXSlcbiAgICAgIGluXG4gICAgICBsbCA6OiBsaHMsIHJyIDo6IHJocylcbiAgICBtIChbXSwgW10pXG5cbmxldCBjb21waWxfdG9fanNvbiBjID1cbiAgbGV0IGZpbGVzID1cbiAgICBBcnJheS5vZl9saXN0IChMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfZm5hbWUgOjogYy5maWxlbmFtZXMpXG4gIGluXG4gIGxldCBmaWxlbmFtZXMgPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgIChmdW4gaSBtYXAgeCAtPiBNb2RzLlN0cmluZ01hcC5hZGQgeCBpIG1hcClcbiAgICAgIE1vZHMuU3RyaW5nTWFwLmVtcHR5IGZpbGVzXG4gIGluXG4gIGxldCBtaXhfdG9fanNvbiA9XG4gICAgSnNvblV0aWwub2ZfbGlzdCAoSnNvblV0aWwub2ZfbGlzdCAoYWdlbnRfdG9fanNvbiBmaWxlbmFtZXMpKVxuICBpblxuICBsZXQgdmFyX3RvX2pzb24gPSBKc29uVXRpbC5vZl9zdHJpbmcgaW5cbiAgYEFzc29jXG4gICAgW1xuICAgICAgXCJmaWxlbmFtZXNcIiwgSnNvblV0aWwub2ZfYXJyYXkgSnNvblV0aWwub2Zfc3RyaW5nIGZpbGVzO1xuICAgICAgXCJzaWduYXR1cmVzXCIsIEpzb25VdGlsLm9mX2xpc3QgKGFnZW50X3NpZ190b19qc29uIGZpbGVuYW1lcykgYy5zaWduYXR1cmVzO1xuICAgICAgXCJ0b2tlbnNcIiwgSnNvblV0aWwub2ZfbGlzdCAoc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKSBjLnRva2VucztcbiAgICAgICggXCJ2YXJpYWJsZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBtaXhfdG9fanNvbiB2YXJfdG9fanNvbikpKVxuICAgICAgICAgIGMudmFyaWFibGVzICk7XG4gICAgICAoIFwicnVsZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiAoc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAocnVsZV90b19qc29uIGZpbGVuYW1lcyBtaXhfdG9fanNvbiB2YXJfdG9fanNvbikpKVxuICAgICAgICAgIGMucnVsZXMgKTtcbiAgICAgICggXCJvYnNlcnZhYmxlc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb24gdmFyX3RvX2pzb24pKVxuICAgICAgICAgIGMub2JzZXJ2YWJsZXMgKTtcbiAgICAgICggXCJpbml0XCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uIHZhcl90b19qc29uKSlcbiAgICAgICAgICAgICAoaW5pdF90b19qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb24gdmFyX3RvX2pzb24pKVxuICAgICAgICAgIGMuaW5pdCApO1xuICAgICAgKCBcInBlcnR1cmJhdGlvbnNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoZnVuIChhbGFybSwgcHJlLCBtb2RpZiwgcG9zdCkgLT5cbiAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gTmJyLnRvX3lvanNvbiBhbGFybTtcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmJvb2xfdG9feW9qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcl90b19qc29uKSlcbiAgICAgICAgICAgICAgICAgICAgIHByZTtcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAobW9kaWZfdG9fanNvbiBmaWxlbmFtZXMgbWl4X3RvX2pzb24gdmFyX3RvX2pzb24pXG4gICAgICAgICAgICAgICAgICAgICBtb2RpZjtcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmJvb2xfdG9feW9qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcl90b19qc29uKSlcbiAgICAgICAgICAgICAgICAgICAgIHBvc3Q7XG4gICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIGMucGVydHVyYmF0aW9ucyApO1xuICAgICAgKCBcImNvbmZpZ3VyYXRpb25zXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX2xpc3QgKHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcykpKVxuICAgICAgICAgIGMuY29uZmlndXJhdGlvbnMgKTtcbiAgICBdXG5cbmxldCBjb21waWxfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA5IC0+XG4gICAgbGV0IHZhcl9vZl9qc29uID0gSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSBpblxuICAgICh0cnlcbiAgICAgICBsZXQgZmlsZW5hbWVzID1cbiAgICAgICAgIEpzb25VdGlsLnRvX2FycmF5XG4gICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgICAoTGlzdC5hc3NvYyBcImZpbGVuYW1lc1wiIGwpXG4gICAgICAgaW5cbiAgICAgICBsZXQgbWl4X29mX2pzb24gPVxuICAgICAgICAgSnNvblV0aWwudG9fbGlzdCAoSnNvblV0aWwudG9fbGlzdCAoYWdlbnRfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgIGluXG4gICAgICAge1xuICAgICAgICAgZmlsZW5hbWVzID0gTGlzdC50bCAoQXJyYXkudG9fbGlzdCBmaWxlbmFtZXMpO1xuICAgICAgICAgc2lnbmF0dXJlcyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJBU1Qgc2lnbmF0dXJlXCIpXG4gICAgICAgICAgICAgKGFnZW50X3NpZ19vZl9qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInNpZ25hdHVyZXNcIiBsKTtcbiAgICAgICAgIHRva2VucyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJBU1QgdG9rZW4gc2lnXCIpXG4gICAgICAgICAgICAgKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwidG9rZW5zXCIgbCk7XG4gICAgICAgICB2YXJpYWJsZXMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiQVNUIHZhcmlhYmxlc1wiKVxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uIHZhcl9vZl9qc29uKSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJ2YXJpYWJsZXNcIiBsKTtcbiAgICAgICAgIHJ1bGVzID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcIkFTVCBydWxlc1wiKVxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChydWxlX29mX2pzb24gZmlsZW5hbWVzIG1peF9vZl9qc29uIHZhcl9vZl9qc29uKSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJydWxlc1wiIGwpO1xuICAgICAgICAgb2JzZXJ2YWJsZXMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiQVNUIG9ic2VydmFibGVzXCIpXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgbWl4X29mX2pzb24gdmFyX29mX2pzb24pKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwib2JzZXJ2YWJsZXNcIiBsKTtcbiAgICAgICAgIGluaXQgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiQVNUIGluaXRcIilcbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uIHZhcl9vZl9qc29uKSlcbiAgICAgICAgICAgICAgICAoaW5pdF9vZl9qc29uIH5maWxlbmFtZXMgbWl4X29mX2pzb24gdmFyX29mX2pzb24pKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwiaW5pdFwiIGwpO1xuICAgICAgICAgcGVydHVyYmF0aW9ucyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJBU1QgcGVydHVyYmF0aW9uc1wiKVxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgYExpc3QgWyBhbGFybTsgcHJlOyBtb2RpZjsgcG9zdCBdIC0+XG4gICAgICAgICAgICAgICAgICggSnNvblV0aWwudG9fb3B0aW9uIE5ici5vZl95b2pzb24gYWxhcm0sXG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5ib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfb2ZfanNvbikpXG4gICAgICAgICAgICAgICAgICAgICBwcmUsXG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgICAgICAgICAgKG1vZGlmX29mX2pzb24gZmlsZW5hbWVzIG1peF9vZl9qc29uIHZhcl9vZl9qc29uKVxuICAgICAgICAgICAgICAgICAgICAgbW9kaWYsXG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5ib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfb2ZfanNvbikpXG4gICAgICAgICAgICAgICAgICAgICBwb3N0IClcbiAgICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBwZXJ0dXJiYXRpb25cIiwgeCkpKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInBlcnR1cmJhdGlvbnNcIiBsKTtcbiAgICAgICAgIGNvbmZpZ3VyYXRpb25zID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcIkFTVCBjb25maWd1cmF0aW9uXCIpXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAgICAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3QgKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJjb25maWd1cmF0aW9uc1wiIGwpO1xuICAgICAgICAgdm9sdW1lcyA9IFtdO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBBU1RcIiwgeCkpXG5cbmxldCB3cml0ZV9wYXJzaW5nX2NvbXBpbCBiIGFzdCA9IFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGIgKGNvbXBpbF90b19qc29uIGFzdClcbmxldCByZWFkX3BhcnNpbmdfY29tcGlsIHAgbGIgPSBjb21waWxfb2ZfanNvbiAoWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiKVxubGV0IHByaW50X2FzdF9taXggPSBwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHdpdGhfYWdlbnRfY291bnRlcnMgPSB7XG4gIGFnZW50OiAnYTtcbiAgY291bnRlcnM6IChBc3QuY291bnRlciAqIExLYXBwYS5zd2l0Y2hpbmcpIG9wdGlvbiBhcnJheTtcbn1cblxudHlwZSBydWxlX21peHR1cmVfd2l0aF9hZ2VudF9jb3VudGVycyA9XG4gIExLYXBwYS5ydWxlX2FnZW50IHdpdGhfYWdlbnRfY291bnRlcnMgbGlzdFxuXG50eXBlIHJhd19taXh0dXJlX3dpdGhfYWdlbnRfY291bnRlcnMgPVxuICBSYXdfbWl4dHVyZS5hZ2VudCB3aXRoX2FnZW50X2NvdW50ZXJzIGxpc3RcblxudHlwZSBjdmFyX3ZhbHVlID0geyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBpbnQgfVxuXG4oKiogW2NvbWJpbmF0aW9uc19vZl92YXJfc2V0dXAgbHMxIGxzMl1cbiAqIEVhY2ggZWxlbWVudCBvZiBbbHMxXSBkZXNjcmliZXMgYSBzZXR1cCBvZiBjb3VudGVyIHZhcmlhYmxlcywgd2l0aCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgdHVwbGUgYmVpbmcgdGhlIGxpc3Qgb2YgZW50aXRpZXMgdG8gYmUgdXNlZCBpbiB0aGUgbW9kZWwsIHdoZXJlIHZhcmlhYmxlcyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIGNvdW50ZXJzLCBhbmQgdGhlIHNlY29uZCBvbmUgdGhlIG1hcHBpbmcgb2YgdmFyaWFibGVzIHRvIHRoZWlyIHZhbHVlcywgdGhhdCBhbGxvd3MgdG8ga25vdyB3aGljaCBpbnN0YW5jZSBvZiBtb2RlbCBlbnRpdGllcyB3b3VsZCBiZSBjaG9zZW4gaW4gdGhpcyBnaXZlbiBzZXR1cC5cbiAqIFtsczJdIGFkZHMgYSBuZXcgZW50aXR5IHdpdGggZGlmZmVyZW50IGtpbmRzIGFjY29yZGluZyB0byB0aGUgdmFyaWFibGUgdmFsdWVzIGdpdmVuIGluIHRoZSBsaXN0IGFzIHNlY29uZCBtZW1iZXIgb2YgdGhlIHR1cGxlLCB3aGljaCBpcyB0aGVuIGNvbWJpbmVkIGluIHRoaXMgZnVuY3Rpb24gd2l0aCB0aGUgb3RoZXIgc2V0dXBzLCBjb21iaW5pbmcgdGhlIGRpZmZlcmVudCB2YXJpYWJsZSB2YWx1ZXMgd2hpY2ggdGhvc2UgYWxyZWFkeSBkZWZpbmVkLlxuICogTm8gY2hlY2sgaXMgZG9uZSBvbiB0aGUgdW5pY2l0eSBvZiB0aGUgZGVzY3JpYmVkIHZhcmlhYmxlcyBhbmQgdGhlaXIgdmFsdWVzICopXG5sZXQgY29tYmluYXRpb25zX29mX3Zhcl9zZXR1cCAobHMxIDogKCdhIGxpc3QgKiAnYiBsaXN0KSBsaXN0KVxuICAgIChsczIgOiAoJ2EgKiAnYiBsaXN0KSBsaXN0KSA6ICgnYSBsaXN0ICogJ2IgbGlzdCkgbGlzdCA9XG4gIGlmIGxzMSA9IFtdIHRoZW5cbiAgICByYWlzZSBFeGl0ICgqTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgKGIsIGRzKSAtPiAoWyBiIF0sIGRzKSA6OiBhY2MpIFtdIGxzMiopXG4gIGVsc2VcbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgKGEsIGNzKSAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYycgKGIsIGRzKSAtPiAoYiA6OiBhLCBkcyBAIGNzKSA6OiBhY2MnKSBhY2MgbHMyKVxuICAgICAgW10gbHMxXG5cbmxldCB1cGRhdGVfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgKGssIGEpID1cbiAgbGV0IHVwZGF0ZV9pZCBzIGsgPVxuICAgIGxldCBjb3VudGVyc19tYXRjaGluZ19zLCBfID1cbiAgICAgIExpc3QucGFydGl0aW9uXG4gICAgICAgIChmdW4gdmFyX3ZhbHVlIC0+IFN0cmluZy5jb21wYXJlIHMgdmFyX3ZhbHVlLm5hbWUgPSAwKVxuICAgICAgICBjb3VudGVyX3Zhcl92YWx1ZXNcbiAgICBpblxuICAgIG1hdGNoIGNvdW50ZXJzX21hdGNoaW5nX3Mgd2l0aFxuICAgIHwgWyB2YXJfdmFsdWUgXSAtPiBBbGdfZXhwci5DT05TVCAoTmJyLkkgdmFyX3ZhbHVlLnZhbHVlKVxuICAgIHwgW10gLT4ga1xuICAgIHwgXyA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJDb3VudGVyIHZhcmlhYmxlIFwiIF4gcyBeIFwiIGFwcGVhcnMgdHdpY2UgaW4gcnVsZVwiLCBMb2MuZHVtbXkpKVxuICBpblxuICBsZXQgcmVjIHVwZGF0ZV9ib29sX2V4cHIgayA9XG4gICAgbWF0Y2ggayB3aXRoXG4gICAgfCBBbGdfZXhwci5UUlVFIHwgQWxnX2V4cHIuRkFMU0UgLT4ga1xuICAgIHwgQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCAoazEsIGExKSwgKGsyLCBhMikpIC0+XG4gICAgICBBbGdfZXhwci5CSU5fQk9PTF9PUFxuICAgICAgICAob3AsICh1cGRhdGVfYm9vbF9leHByIGsxLCBhMSksICh1cGRhdGVfYm9vbF9leHByIGsyLCBhMikpXG4gICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChvcCwgKGssIGEpKSAtPlxuICAgICAgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsICh1cGRhdGVfYm9vbF9leHByIGssIGEpKVxuICAgIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIChrMSwgYTEpLCAoazIsIGEyKSkgLT5cbiAgICAgIEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCAodXBkYXRlX2V4cHIgazEsIGExKSwgKHVwZGF0ZV9leHByIGsyLCBhMikpXG4gIGFuZCB1cGRhdGVfZXhwciBrID1cbiAgICBtYXRjaCBrIHdpdGhcbiAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCAoazEsIGExKSwgKGsyLCBhMikpIC0+XG4gICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgKHVwZGF0ZV9leHByIGsxLCBhMSksICh1cGRhdGVfZXhwciBrMiwgYTIpKVxuICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgKGsxLCBhMSkpIC0+XG4gICAgICBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCAodXBkYXRlX2V4cHIgazEsIGExKSlcbiAgICB8IEFsZ19leHByLklGICgoazEsIGExKSwgKGsyLCBhMiksIChrMywgYTMpKSAtPlxuICAgICAgQWxnX2V4cHIuSUZcbiAgICAgICAgKCh1cGRhdGVfYm9vbF9leHByIGsxLCBhMSksICh1cGRhdGVfZXhwciBrMiwgYTIpLCAodXBkYXRlX2V4cHIgazMsIGEzKSlcbiAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gKChrMSwgYTEpLCBrMikgLT5cbiAgICAgIEFsZ19leHByLkRJRkZfVE9LRU4gKCh1cGRhdGVfZXhwciBrMSwgYTEpLCBrMilcbiAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKChrLCBhKSwgbSkgLT5cbiAgICAgIEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKCh1cGRhdGVfZXhwciBrLCBhKSwgbSlcbiAgICB8IEFsZ19leHByLkFMR19WQVIgaWQgfCBBbGdfZXhwci5UT0tFTl9JRCBpZCAtPiB1cGRhdGVfaWQgaWQga1xuICAgIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF8gfCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyAtPlxuICAgICAga1xuICBpblxuICB1cGRhdGVfZXhwciBrLCBhXG5cbmxldCBjb2xsZWN0X2lkcyBleHByX2xpc3QgOiBNb2RzLlN0cmluZ1NldC50ID1cbiAgbGV0IHJlYyBhdXhfZXhwciBleHByIGFjYyA9XG4gICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChfLCAoazEsIF8pLCAoazIsIF8pKSAtPiBhdXhfZXhwciBrMiAoYXV4X2V4cHIgazEgYWNjKVxuICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIChfLCAoazEsIF8pKVxuICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiAoKGsxLCBfKSwgXylcbiAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKChrMSwgXyksIF8pIC0+XG4gICAgICBhdXhfZXhwciBrMSBhY2NcbiAgICB8IEFsZ19leHByLklGICgoazEsIF8pLCAoazIsIF8pLCAoazMsIF8pKSAtPlxuICAgICAgYXV4X2V4cHIgazMgKGF1eF9leHByIGsyIChhdXhfYm9vbCBrMSBhY2MpKVxuICAgIHwgQWxnX2V4cHIuQUxHX1ZBUiBpZCB8IEFsZ19leHByLlRPS0VOX0lEIGlkIC0+IGF1eF9pZCBpZCBhY2NcbiAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gLT5cbiAgICAgIGFjY1xuICBhbmQgYXV4X2lkIGlkIGFjYyA9IE1vZHMuU3RyaW5nU2V0LmFkZCBpZCBhY2NcbiAgYW5kIGF1eF9ib29sIGV4cHIgYWNjID1cbiAgICBtYXRjaCBleHByIHdpdGhcbiAgICB8IEFsZ19leHByLlRSVUUgfCBBbGdfZXhwci5GQUxTRSAtPiBhY2NcbiAgICB8IEFsZ19leHByLkJJTl9CT09MX09QIChfLCAoazEsIF8pLCAoazIsIF8pKSAtPlxuICAgICAgYXV4X2Jvb2wgazIgKGF1eF9ib29sIGsxIGFjYylcbiAgICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKF8sIChrLCBfKSkgLT4gYXV4X2Jvb2wgayBhY2NcbiAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKF8sIChrMSwgXyksIChrMiwgXykpIC0+IGF1eF9leHByIGsyIChhdXhfZXhwciBrMSBhY2MpXG4gIGluXG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgZXhwcl9vcHQgLT5cbiAgICAgIG1hdGNoIGV4cHJfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgIHwgU29tZSAoZXhwciwgXykgLT4gYXV4X2V4cHIgZXhwciBhY2MpXG4gICAgTW9kcy5TdHJpbmdTZXQuZW1wdHkgZXhwcl9saXN0XG5cbmxldCBuYW1lX21hdGNoIChzLCBfKSAocycsIF8pID0gU3RyaW5nLmNvbXBhcmUgcyBzJyA9IDBcblxubGV0IHByZXBhcmVfYWdlbnQgcnNpdGVzIGxzaXRlcyA9XG4gIGxldCByZWMgcHJlcGFyZV9zaXRlIHNpdGVzIGMgPVxuICAgIG1hdGNoIHNpdGVzIHdpdGhcbiAgICB8IFtdIC0+IFsgQXN0LkNvdW50ZXIgYyBdXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgKG1hdGNoIGhkIHdpdGhcbiAgICAgIHwgQXN0LkNvdW50ZXIgYycgd2hlbiBuYW1lX21hdGNoIGMuQXN0LmNvdW50ZXJfbmFtZSBjJy5Bc3QuY291bnRlcl9uYW1lIC0+XG4gICAgICAgIEFzdC5Db3VudGVyIHsgYycgd2l0aCBBc3QuY291bnRlcl9kZWx0YSA9IGMuQXN0LmNvdW50ZXJfZGVsdGEgfSA6OiB0bFxuICAgICAgfCBBc3QuQ291bnRlciBfIHwgQXN0LlBvcnQgXyAtPiBoZCA6OiBwcmVwYXJlX3NpdGUgdGwgYylcbiAgaW5cbiAgbGV0IGNvdW50ZXJzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MnIHJzaXRlIC0+XG4gICAgICAgIG1hdGNoIHJzaXRlIHdpdGhcbiAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGFjYydcbiAgICAgICAgfCBBc3QuQ291bnRlciBjIC0+IGMgOjogYWNjJylcbiAgICAgIFtdIHJzaXRlc1xuICBpblxuICBMaXN0LmZvbGRfbGVmdCBwcmVwYXJlX3NpdGUgbHNpdGVzIGNvdW50ZXJzXG5cbigqIC0gYWRkIGluIHRoZSBsaHMgOiAoaSkgY291bnRlcnMgb25seSBtZW50aW9uZWQgaW4gdGhlIHJocyBhbmQgKGlpKSB0aGUgZGVsdGFzXG4gICAtIHN5bnRhY3RpYyBjaGVja3Mgb2Ygbm8gdGVzdCBpbiByaHM7IG5vIG1vZGlmIGluIGxocyAqKVxubGV0IHByZXBhcmVfY291bnRlcnMgcnVsZXMgPVxuICBsZXQgY2hlY2tfc3ludGF4IHNpdGVzIGYgZXJyb3IgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgQXN0LlBvcnQgXyAtPiAoKVxuICAgICAgICB8IEFzdC5Db3VudGVyIGMgLT5cbiAgICAgICAgICBpZiBmIGMgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKCBcIkNvdW50ZXIgXCIgXiBMb2MudiBjLkFzdC5jb3VudGVyX25hbWUgXiBlcnJvcixcbiAgICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGMuQXN0LmNvdW50ZXJfbmFtZSApKSlcbiAgICAgIHNpdGVzXG4gIGluXG5cbiAgbGV0IHJlYyBwcmVwYXJlX2xoc19ydWxlIHJocyBsaHMgPVxuICAgIG1hdGNoIHJocywgbGhzIHdpdGhcbiAgICB8IEFzdC5QcmVzZW50IChybmEsIHJzaXRlcywgXykgOjogciwgQXN0LlByZXNlbnQgKGxuYSwgbHNpdGVzLCBiKSA6OiBsIC0+XG4gICAgICBjaGVja19zeW50YXggbHNpdGVzXG4gICAgICAgIChmdW4gYyAtPiBub3QgKExvYy52IGMuY291bnRlcl9kZWx0YSA9IDApKVxuICAgICAgICBcIiBoYXMgYSBtb2RpZiBpbiB0aGUgbGhzXCI7XG4gICAgICBjaGVja19zeW50YXggcnNpdGVzXG4gICAgICAgIChmdW4gYyAtPiBub3QgKGMuY291bnRlcl90ZXN0ID0gTm9uZSkpXG4gICAgICAgIFwiIGhhcyBhIHRlc3QgaW4gdGhlIHJoc1wiO1xuICAgICAgaWYgU3RyaW5nLmNvbXBhcmUgKExvYy52IHJuYSkgKExvYy52IGxuYSkgPSAwIHRoZW4gKFxuICAgICAgICBsZXQgbHNpdGVzJyA9IHByZXBhcmVfYWdlbnQgcnNpdGVzIGxzaXRlcyBpblxuICAgICAgICBBc3QuUHJlc2VudCAobG5hLCBsc2l0ZXMnLCBiKSA6OiBwcmVwYXJlX2xoc19ydWxlIHIgbFxuICAgICAgKSBlbHNlXG4gICAgICAgIGxoc1xuICAgICAgKCpUT0RPIHdlIHN0b3Agb3VyIGpvYiBoZXJlLiBMS2FwcGFfY29tcGlsZXIgd2lsbCBkZXRlY3RcbiAgICAgICAgbGF0ZXIgdGhhdCB0aGVyZSBpcyBhIHByb2JsZW0gKilcbiAgICB8IF8gOjogciwgKEFzdC5BYnNlbnQgXyBhcyBsYWdlbnQpIDo6IGwgLT5cbiAgICAgICgqY3JlYXRlZCBhZ2VudCopXG4gICAgICAoKiBUT0RPIE1heWJlIHNvbWUgc3ludGF4IGNoZWNrIG9uIHJocyBhcmUgbmVjZXNzYXJ5IGhlcmUgKilcbiAgICAgIGxhZ2VudCA6OiBwcmVwYXJlX2xoc19ydWxlIHIgbFxuICAgIHwgQXN0LkFic2VudCBfIDo6IHIsIChBc3QuUHJlc2VudCAoXywgbHNpdGVzLCBfKSBhcyBsYWdlbnQpIDo6IGwgLT5cbiAgICAgICgqZGVsZXRlZCAgYWdlbnQqKVxuICAgICAgY2hlY2tfc3ludGF4IGxzaXRlc1xuICAgICAgICAoZnVuIGMgLT4gbm90IChMb2MudiBjLkFzdC5jb3VudGVyX2RlbHRhID0gMCkpXG4gICAgICAgIFwiIGhhcyBhIG1vZGlmIGluIHRoZSBsaHNcIjtcbiAgICAgIGxhZ2VudCA6OiBwcmVwYXJlX2xoc19ydWxlIHIgbFxuICAgIHwgW10sIHggLT5cbiAgICAgIHhcbiAgICAgICgqIFRPRE8geCBtdXN0IGJlIFtdIGJ1dCBpdCBpcyBmb3Igbm93IExLYXBwYV9jb21waWxlclxuICAgICAgICAgZHV0eSB0byBjb21wbGFpbiAqKVxuICAgIHwgX3gsIFtdIC0+ICgqVE9ETyBsZXQgKCkgPSBhc3NlcnQgKF94ID0gW10pIGluKikgW11cbiAgaW5cblxuICBsZXQgYXV4IChydWxlIDogQXN0LnJ1bGUpIDogQXN0LnJ1bGUgPVxuICAgIG1hdGNoIHJ1bGUucmV3cml0ZSB3aXRoXG4gICAgfCBBc3QuRWRpdCBfIC0+IHJ1bGVcbiAgICB8IEFzdC5BcnJvdyBjb250ZW50IC0+XG4gICAgICB7XG4gICAgICAgIHJ1bGUgd2l0aFxuICAgICAgICByZXdyaXRlID1cbiAgICAgICAgICBBc3QuQXJyb3dcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29udGVudCB3aXRoXG4gICAgICAgICAgICAgIEFzdC5saHMgPVxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIHByZXBhcmVfbGhzX3J1bGUgKExpc3QuZmxhdHRlbiBjb250ZW50LnJocylcbiAgICAgICAgICAgICAgICAgICAgKExpc3QuZmxhdHRlbiBjb250ZW50Lmxocyk7XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH07XG4gICAgICB9XG4gIGluXG4gIExpc3QubWFwIChmdW4gKHMsIChyLCBhKSkgLT4gcywgKGF1eCByLCBhKSkgcnVsZXNcblxubGV0IGNvdW50ZXJzX3NpZ25hdHVyZSBzIGFnZW50cyA9XG4gIG1hdGNoXG4gICAgTGlzdC5maW5kXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBBc3QuQWJzZW50IF8gLT4gZmFsc2VcbiAgICAgICAgfCBBc3QuUHJlc2VudCAocycsIF8sIF8pIC0+IG5hbWVfbWF0Y2ggcyBzJylcbiAgICAgIGFnZW50c1xuICB3aXRoXG4gIHwgQXN0LkFic2VudCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IEFzdC5QcmVzZW50IChfLCBzaXRlcycsIF8pIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIHMgLT5cbiAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIHwgQXN0LkNvdW50ZXIgYyAtPiBjIDo6IGFjY1xuICAgICAgICB8IEFzdC5Qb3J0IF8gLT4gYWNjKVxuICAgICAgW10gc2l0ZXMnXG5cbigqKiBbc3BsaXRfY3Zhcl9jb3VudGVyX2luX3J1bGVzX3Blcl92YWx1ZSB2YXJfbmFtZSBhbm5vdCBjb3VudGVyX2RlbHRhIGNvdW50ZXJfZGVmXSB0cmFuc2xhdGVzIGEgY291bnRlciBDVkFSIHdob3NlIHZhbHVlIGFjdHMgdXBvbiB0aGUgcmF0ZSBleHByZXNzaW9uIGludG8gYSBydWxlIHBlciBwb3NzaWJsZSB2YWx1ZSwgdGhhdCBhcmUgc2VsZWN0ZWQgYnkgYSBDRVHCoGV4cHJlc3Npb24uXG4gKiAqKVxubGV0IHNwbGl0X2N2YXJfY291bnRlcl9pbl9ydWxlc19wZXJfdmFsdWUgKHZhcl9uYW1lIDogc3RyaW5nKSAoYW5ub3QgOiBMb2MudClcbiAgICAoY291bnRlcl9kZWx0YSA6IGludCBMb2MuYW5ub3RlZCkgKGNvdW50ZXJfZGVmIDogQXN0LmNvdW50ZXJfc2lnKSA6XG4gICAgKEFzdC5jb3VudGVyIEFzdC5zaXRlICogY3Zhcl92YWx1ZSBsaXN0KSBsaXN0ID1cbiAgbGV0IChtaW5fdmFsdWUsIG1heF92YWx1ZSkgOiBpbnQgKiBpbnQgPVxuICAgIG1hdGNoIGNvdW50ZXJfZGVmLmNvdW50ZXJfc2lnX21pbiwgY291bnRlcl9kZWYuY291bnRlcl9zaWdfbWF4IHdpdGhcbiAgICB8IFNvbWUgKFNvbWUgbWluX2xvYywgXyksIFNvbWUgKFNvbWUgbWF4X2xvYywgXykgLT4gbWluX2xvYywgbWF4X2xvY1xuICAgIHwgKE5vbmUgfCBTb21lIChOb25lLCBfKSksIF8gfCBfLCAoTm9uZSB8IFNvbWUgKE5vbmUsIF8pKSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKCBcIkludmFsaWQgY291bnRlciBzaWduYXR1cmUgLSBoYXZlIHRvIHNwZWNpZnkgbWluL21heCBib3VuZFwiLFxuICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgY291bnRlcl9kZWYuY291bnRlcl9zaWdfbmFtZSApKVxuICBpblxuICAoKiBNYWtlIENFUSBjb3VudGVycyB3aXRoIGFsbCBwb3NzaWJsZSB2YWx1ZXMgb2YgdmFyaWFibGUgKilcbiAgbGV0IHJlYyBtYWtlX2NlcV9jb3VudGVyc19mcm9tX3Zhcl92YWx1ZXMgKHZhbHVlIDogaW50KSA6XG4gICAgICAoQXN0LmNvdW50ZXIgQXN0LnNpdGUgKiBjdmFyX3ZhbHVlIGxpc3QpIGxpc3QgPVxuICAgIGlmIHZhbHVlID4gbWF4X3ZhbHVlIHRoZW5cbiAgICAgIFtdXG4gICAgZWxzZSBpZlxuICAgICAgdmFsdWUgKyBMb2MudiBjb3VudGVyX2RlbHRhIDw9IG1heF92YWx1ZVxuICAgICAgJiYgdmFsdWUgKyBMb2MudiBjb3VudGVyX2RlbHRhID49IDBcbiAgICB0aGVuXG4gICAgICAoIEFzdC5Db3VudGVyXG4gICAgICAgICAge1xuICAgICAgICAgICAgQXN0LmNvdW50ZXJfbmFtZSA9IGNvdW50ZXJfZGVmLmNvdW50ZXJfc2lnX25hbWU7XG4gICAgICAgICAgICBjb3VudGVyX3Rlc3QgPSBTb21lIChBc3QuQ0VRIHZhbHVlLCBhbm5vdCk7XG4gICAgICAgICAgICBjb3VudGVyX2RlbHRhO1xuICAgICAgICAgIH0sXG4gICAgICAgIFsgeyBuYW1lID0gdmFyX25hbWU7IHZhbHVlIH0gXSApXG4gICAgICA6OiBtYWtlX2NlcV9jb3VudGVyc19mcm9tX3Zhcl92YWx1ZXMgKHZhbHVlICsgMSlcbiAgICBlbHNlXG4gICAgICBtYWtlX2NlcV9jb3VudGVyc19mcm9tX3Zhcl92YWx1ZXMgKHZhbHVlICsgMSlcbiAgaW5cbiAgbWFrZV9jZXFfY291bnRlcnNfZnJvbV92YXJfdmFsdWVzIG1pbl92YWx1ZVxuXG5sZXQgaGFzX2NvdW50ZXJzIGNvbXBpbCA9XG4gIExpc3QuZXhpc3RzXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEFzdC5BYnNlbnQgXyAtPiBmYWxzZVxuICAgICAgfCBBc3QuUHJlc2VudCAoXywgc2l0ZXMsIF8pIC0+XG4gICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEFzdC5Db3VudGVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGZhbHNlKVxuICAgICAgICAgIHNpdGVzKVxuICAgIGNvbXBpbC5Bc3Quc2lnbmF0dXJlc1xuXG4oKiogW3NwbGl0X2NvdW50ZXJfdmFyaWFibGVzX2ludG9fc2VwYXJhdGVfcnVsZXNdIH53YXJuaW5nIHJ1bGVzIHNpZ25hdHVyZXNdIHJlcGxhY2VzIGNvdW50ZXJzIHdpdGggQ1ZBUiBjb250cmFpbnRzIHdpdGggY291bnRlcnMgd2l0aCBDRVEgY29udHJhaW50cyBpbiBbcnVsZXNdLCBpbiBsaXN0cyB3aXRoIHRoZSB2YXJpYWJsZSB2YWx1ZXMgYXNzb2NpYXRlZCwgc28gdGhhdCBpbiBzaW11bGF0aW9uLCBjb3JyZWN0IGNvdW50ZXIgY29uZGl0aW9ucyBhcmUgYmVpbmcgc2VsZWN0ZWQuIFRoZSBtYWluIG9wZXJhdGlvbiBoYXBwZW5zIGluIFtzcGxpdF9jdmFyX2NvdW50ZXJfaW5fcnVsZXNfcGVyX3ZhbHVlXSAqKVxubGV0IHNwbGl0X2NvdW50ZXJfdmFyaWFibGVzX2ludG9fc2VwYXJhdGVfcnVsZXMgfndhcm5pbmcgcnVsZXMgc2lnbmF0dXJlcyA9XG4gIGxldCBzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9zaXRlIGlkcyBjb3VudGVyX2RlZnMgPSBmdW5jdGlvblxuICAgIHwgQXN0LlBvcnQgcCAtPiBbIEFzdC5Qb3J0IHAsIFtdIF1cbiAgICB8IEFzdC5Db3VudGVyIGMgLT5cbiAgICAgIGxldCBkZWx0YSA9IExvYy52IGMuQXN0LmNvdW50ZXJfZGVsdGEgaW5cbiAgICAgIChtYXRjaCBjLmNvdW50ZXJfdGVzdCB3aXRoXG4gICAgICB8IFNvbWUgKEFzdC5DRVEgdmFsdWUsIF8pIC0+XG4gICAgICAgIGlmIGRlbHRhID4gMCB8fCBhYnMgZGVsdGEgPD0gdmFsdWUgdGhlblxuICAgICAgICAgIFsgQXN0LkNvdW50ZXIgYywgW10gXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoIFwiQ291bnRlciBcIiBeIExvYy52IGMuY291bnRlcl9uYW1lIF4gXCIgYmVjb21lcyBuZWdhdGl2ZVwiLFxuICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGMuY291bnRlcl9uYW1lICkpXG4gICAgICB8IFNvbWUgKEFzdC5DTFRFIF92YWx1ZSwgX2Fubm90KSAtPlxuICAgICAgICBmYWlsd2l0aCBcIm5vdCBpbXBsZW1lbnRlZFwiICgqIFRPRE/CoE5PVyAqKVxuICAgICAgfCBTb21lIChBc3QuQ0dURSB2YWx1ZSwgYW5ub3QpIC0+XG4gICAgICAgIGlmIHZhbHVlICsgZGVsdGEgPCAwIHRoZW5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICggXCJDb3VudGVyIFwiIF4gTG9jLnYgYy5jb3VudGVyX25hbWUgXiBcIiBiZWNvbWVzIG5lZ2F0aXZlXCIsXG4gICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgYy5jb3VudGVyX25hbWUgKSk7XG4gICAgICAgIGlmIHZhbHVlID0gMCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IgPSBcIkNvdW50ZXIgXCIgXiBMb2MudiBjLmNvdW50ZXJfbmFtZSBeIFwiOj4wIGFsd2F5cyBob2xkc1wiIGluXG4gICAgICAgICAgd2FybmluZyB+cG9zOmFubm90IChmdW4gZiAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgZXJyb3IpXG4gICAgICAgICk7XG4gICAgICAgIFsgQXN0LkNvdW50ZXIgYywgW10gXVxuICAgICAgfCBTb21lIChBc3QuQ1ZBUiB2YXJfbmFtZSwgYW5ub3QpIHdoZW4gTW9kcy5TdHJpbmdTZXQubWVtIHZhcl9uYW1lIGlkcyAtPlxuICAgICAgICAoKiBJZiB0aGUgdmFyaWFibGUgaXMgcHJlc2VudCBpbiBhbiByYXRlIGRlZmluaXRpb24gZXhwcmVzc2lvbiAqKVxuICAgICAgICBsZXQgY291bnRlcl9kZWYgOiBBc3QuY291bnRlcl9zaWcgPVxuICAgICAgICAgIExpc3QuZmluZFxuICAgICAgICAgICAgKGZ1biBjb3VudGVyIC0+XG4gICAgICAgICAgICAgIG5hbWVfbWF0Y2ggYy5Bc3QuY291bnRlcl9uYW1lIGNvdW50ZXIuQXN0LmNvdW50ZXJfc2lnX25hbWUpXG4gICAgICAgICAgICBjb3VudGVyX2RlZnNcbiAgICAgICAgaW5cblxuICAgICAgICBzcGxpdF9jdmFyX2NvdW50ZXJfaW5fcnVsZXNfcGVyX3ZhbHVlIHZhcl9uYW1lIGFubm90IGMuY291bnRlcl9kZWx0YVxuICAgICAgICAgIGNvdW50ZXJfZGVmXG4gICAgICB8IE5vbmUgfCBTb21lIChBc3QuQ1ZBUiBfLCBfKSAtPlxuICAgICAgICBpZiBkZWx0YSA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGNvdW50ZXJfZGVsdGEgOiBBc3QuY291bnRlciA9XG4gICAgICAgICAgICB7IGMgd2l0aCBjb3VudGVyX3Rlc3QgPSBTb21lIChBc3QuQ0dURSAoYWJzIGRlbHRhKSwgTG9jLmR1bW15KSB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBbIEFzdC5Db3VudGVyIGNvdW50ZXJfZGVsdGEsIFtdIF1cbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKCBBc3QuQ291bnRlciB7IGMgd2l0aCBjb3VudGVyX3Rlc3QgPSBTb21lIChBc3QuQ0dURSAwLCBMb2MuZHVtbXkpIH0sXG4gICAgICAgICAgICAgIFtdICk7XG4gICAgICAgICAgXSlcbiAgaW5cblxuICBsZXQgcmVjIHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3NpdGVzIChpZHMgOiBNb2RzLlN0cmluZ1NldC50KVxuICAgICAgKGNvdW50ZXJfZGVmcyA6IEFzdC5jb3VudGVyX3NpZyBsaXN0KSA6XG4gICAgICBBc3QuY291bnRlciBBc3Quc2l0ZSBsaXN0IC0+XG4gICAgICAoQXN0LmNvdW50ZXIgQXN0LnNpdGUgbGlzdCAqIGN2YXJfdmFsdWUgbGlzdCkgbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbIFtdLCBbXSBdXG4gICAgfCBzIDo6IHQgLT5cbiAgICAgIGNvbWJpbmF0aW9uc19vZl92YXJfc2V0dXBcbiAgICAgICAgKHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3NpdGVzIGlkcyBjb3VudGVyX2RlZnMgdClcbiAgICAgICAgKHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3NpdGUgaWRzIGNvdW50ZXJfZGVmcyBzKVxuICBpblxuICBsZXQgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfYWdlbnQgKGlkcyA6IE1vZHMuU3RyaW5nU2V0LnQpIDpcbiAgICAgIEFzdC5hZ2VudCAtPiAoQXN0LmFnZW50ICogY3Zhcl92YWx1ZSBsaXN0KSBsaXN0ID0gZnVuY3Rpb25cbiAgICB8IEFzdC5BYnNlbnQgbCAtPiBbIEFzdC5BYnNlbnQgbCwgW10gXVxuICAgIHwgQXN0LlByZXNlbnQgKGFnZW50X25hbWUsIHNpdGVzLCBtb2RpZikgLT5cbiAgICAgIGxldCBjb3VudGVyX2RlZnMgPSBjb3VudGVyc19zaWduYXR1cmUgYWdlbnRfbmFtZSBzaWduYXR1cmVzIGluXG4gICAgICBsZXQgc2l0ZXNfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVzID1cbiAgICAgICAgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfc2l0ZXMgaWRzIGNvdW50ZXJfZGVmcyBzaXRlc1xuICAgICAgaW5cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4gKHNpdGVzJywgdmFyX3ZhbHVlcykgLT5cbiAgICAgICAgICBBc3QuUHJlc2VudCAoYWdlbnRfbmFtZSwgc2l0ZXMnLCBtb2RpZiksIHZhcl92YWx1ZXMpXG4gICAgICAgIHNpdGVzX2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlc1xuICBpblxuICBsZXQgcmVjIHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX21peHR1cmUgKGlkcyA6IE1vZHMuU3RyaW5nU2V0LnQpIDpcbiAgICAgIEFzdC5hZ2VudCBsaXN0IC0+IChBc3QuYWdlbnQgbGlzdCAqIGN2YXJfdmFsdWUgbGlzdCkgbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbIFtdLCBbXSBdXG4gICAgfCBhc3RfYWdlbnQgOjogdCAtPlxuICAgICAgY29tYmluYXRpb25zX29mX3Zhcl9zZXR1cFxuICAgICAgICAoc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfbWl4dHVyZSBpZHMgdClcbiAgICAgICAgKHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX2FnZW50IGlkcyBhc3RfYWdlbnQpXG4gIGluXG5cbiAgbGV0IHVwZGF0ZV9vcHRfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHIgLT4gU29tZSAodXBkYXRlX3JhdGUgY291bnRlcl92YXJfdmFsdWVzIHIpXG4gIGluXG4gIGxldCB1cGRhdGVfcGFpcl9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKHIxLCByMikgLT5cbiAgICAgIFNvbWVcbiAgICAgICAgKCB1cGRhdGVfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgcjEsXG4gICAgICAgICAgdXBkYXRlX29wdF9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyByMiApXG4gIGluXG5cbiAgKCogVE9ETyBbc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfcnVsZV0gcnVsZSBldmFsdWVzIHRvIGEgbGlzdCBvZiBydWxlcyB3aXRoIHRoZWlyIG5hbWVzICopXG4gIGxldCBzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9ydWxlXG4gICAgICAocnVsZV9uYW1lIDogc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbilcbiAgICAgICgocnVsZSwgYW5ub3QpIDogQXN0LnJ1bGUgTG9jLmFubm90ZWQpIDpcbiAgICAgIChzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uICogQXN0LnJ1bGUgTG9jLmFubm90ZWQpIGxpc3QgPVxuICAgIGxldCBtaXhfbGhzID1cbiAgICAgIG1hdGNoIHJ1bGUucmV3cml0ZSB3aXRoXG4gICAgICB8IEFzdC5FZGl0IGNvbnRlbnQgLT4gY29udGVudC5taXhcbiAgICAgIHwgQXN0LkFycm93IGNvbnRlbnQgLT4gY29udGVudC5saHNcbiAgICBpblxuXG4gICAgKCogRmV0Y2ggaWRzIGZyb20gcnVsZSByYXRlcyAqKVxuICAgIGxldCBleHByc19mcm9tX3JhdGVzIDpcbiAgICAgICAgKEFzdC5taXh0dXJlLCBzdHJpbmcpIEthcHBhX3Rlcm1zLkFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uIGxpc3QgPVxuICAgICAgWyBTb21lIHJ1bGUua19kZWY7IHJ1bGUua19vcCBdXG4gICAgICBAIChtYXRjaCBydWxlLmtfdW4gd2l0aFxuICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgfCBTb21lIHJfa3VuX3JhdGVzIC0+IFsgU29tZSAoZnN0IHJfa3VuX3JhdGVzKTsgc25kIHJfa3VuX3JhdGVzIF0pXG4gICAgICBAXG4gICAgICBtYXRjaCBydWxlLmtfb3BfdW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgcl9rX29wX3VuX3JhdGVzIC0+XG4gICAgICAgIFsgU29tZSAoZnN0IHJfa19vcF91bl9yYXRlcyk7IHNuZCByX2tfb3BfdW5fcmF0ZXMgXVxuICAgIGluXG4gICAgbGV0IGlkcyA9IGNvbGxlY3RfaWRzIGV4cHJzX2Zyb21fcmF0ZXMgaW5cblxuICAgIGxldCBtaXh0dXJlX2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlIDpcbiAgICAgICAgKEFzdC5hZ2VudCBsaXN0ICogY3Zhcl92YWx1ZSBsaXN0KSBsaXN0ID1cbiAgICAgIHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX21peHR1cmUgaWRzIChMaXN0LmZsYXR0ZW4gbWl4X2xocylcbiAgICBpblxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIChsaHMsIGNvdW50ZXJfdmFyX3ZhbHVlcykgLT5cbiAgICAgICAgKCogQXBwbHkgY291bnRlciB2YXIgdmFsdWVzIHRvIHJhdGVzICopXG4gICAgICAgIGxldCBrX2RlZiA9IHVwZGF0ZV9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyBydWxlLmtfZGVmIGluXG4gICAgICAgIGxldCBrX3VuID0gdXBkYXRlX3BhaXJfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgcnVsZS5rX3VuIGluXG4gICAgICAgIGxldCBrX29wID0gdXBkYXRlX29wdF9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyBydWxlLmtfb3AgaW5cbiAgICAgICAgbGV0IGtfb3BfdW4gPSB1cGRhdGVfcGFpcl9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyBydWxlLmtfb3BfdW4gaW5cbiAgICAgICAgbGV0IGxocyA9IFsgbGhzIF0gaW5cbiAgICAgICAgbGV0IG5ld19ydWxlX25hbWUgOiBzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uID1cbiAgICAgICAgICBpZiBjb3VudGVyX3Zhcl92YWx1ZXMgPSBbXSB0aGVuXG4gICAgICAgICAgICBydWxlX25hbWVcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICgqIEJ1aWxkIGNvdW50ZXJzX2lkc19hc19zdHJpbmcsIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGJ1aWxkIG5ldyBydWxlIG5hbWVzICopXG4gICAgICAgICAgICBsZXQgY291bnRlcnNfaWRzX2FzX3N0cmluZyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKCogVE9ETyBzaG91bGQgd2UgYWRkIGEgc2VwYXJhdG9yLiBtYXliZSBhbHNvIGFkZCBuYW1lIG9mIHZhcmlhYmxlPyAqKVxuICAgICAgICAgICAgICAgICAgKGZ1biBhY2MgdmFyX3ZhbHVlIC0+IHN0cmluZ19vZl9pbnQgdmFyX3ZhbHVlLnZhbHVlIF4gYWNjKVxuICAgICAgICAgICAgICAgIFwiXCIgY291bnRlcl92YXJfdmFsdWVzXG4gICAgICAgICAgICBpblxuXG4gICAgICAgICAgICBtYXRjaCBydWxlX25hbWUgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmUgKCogTm8gcnVsZSBuYW1lLCBuZXcgcnVsZXMgd2lsbCBoYXZlIG5vIG5hbWUgdG9vICopXG4gICAgICAgICAgICB8IFNvbWUgKHJ1bGVfbmFtZV9zdHJpbmcsIGxvY2FsaXR5KSAtPlxuICAgICAgICAgICAgICAoKiBNYWtlIGEgbmV3IG5hbWUgZm9yIG5ldyBydWxlIGluY2x1ZGluZyBjb3VudGVyX3Zhcl92YWx1ZXMgaW5mbyAqKVxuICAgICAgICAgICAgICBTb21lIChydWxlX25hbWVfc3RyaW5nIF4gXCJfX1wiIF4gY291bnRlcnNfaWRzX2FzX3N0cmluZywgbG9jYWxpdHkpXG4gICAgICAgICAgKVxuICAgICAgICBpblxuXG4gICAgICAgICggbmV3X3J1bGVfbmFtZSxcbiAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgQXN0LnJld3JpdGUgPVxuICAgICAgICAgICAgICAgIChtYXRjaCBydWxlLnJld3JpdGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgQXN0LkVkaXQgY29udGVudCAtPiBBc3QuRWRpdCB7IGNvbnRlbnQgd2l0aCBBc3QubWl4ID0gbGhzIH1cbiAgICAgICAgICAgICAgICB8IEFzdC5BcnJvdyBjb250ZW50IC0+IEFzdC5BcnJvdyB7IGNvbnRlbnQgd2l0aCBBc3QubGhzIH0pO1xuICAgICAgICAgICAgICBiaWRpcmVjdGlvbmFsID0gcnVsZS5iaWRpcmVjdGlvbmFsO1xuICAgICAgICAgICAgICBrX2RlZjtcbiAgICAgICAgICAgICAga191bjtcbiAgICAgICAgICAgICAga19vcDtcbiAgICAgICAgICAgICAga19vcF91bjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhbm5vdCApICkpXG4gICAgICBtaXh0dXJlX2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlXG4gIGluXG5cbiAgbGV0IHJ1bGVzID0gcHJlcGFyZV9jb3VudGVycyBydWxlcyBpblxuXG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgKHJ1bGVfbmFtZSwgcnVsZV9hbm5vdGVkKSAtPlxuICAgICAgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfcnVsZSBydWxlX25hbWUgcnVsZV9hbm5vdGVkIEAgYWNjKVxuICAgIFtdIHJ1bGVzXG4gICgqIFRPRE86IGlzIHJldiByZWxldmFudCBoZXJlPyAqKVxuICB8PiBMaXN0LnJldlxuXG5sZXQgc3BsaXRfY291bnRlcl92YXJpYWJsZXNfaW50b19zZXBhcmF0ZV9ydWxlcyB+d2FybmluZyB+ZGVidWdfbW9kZVxuICAgIChjb21waWwgOiBBc3QucGFyc2luZ19jb21waWwpID1cbiAgbGV0IHJ1bGVzID1cbiAgICBzcGxpdF9jb3VudGVyX3ZhcmlhYmxlc19pbnRvX3NlcGFyYXRlX3J1bGVzIH53YXJuaW5nIGNvbXBpbC5ydWxlc1xuICAgICAgY29tcGlsLnNpZ25hdHVyZXNcbiAgaW5cbiAgKCogRGVidWcgcHJpbnRpbmcgKilcbiAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICBGb3JtYXQucHJpbnRmIFwiQC5hc3QgcnVsZXNALlwiO1xuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAocywgKHIsIF8pKSAtPlxuICAgICAgICBsZXQgbGFiZWwgPVxuICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgfCBTb21lIChsLCBfKSAtPiBsXG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5wcmludGYgXCJALiVzID0gJWFcIiBsYWJlbCBBc3QucHJpbnRfYXN0X3J1bGUgcilcbiAgICAgIHJ1bGVzXG4gICk7XG4gIHsgY29tcGlsIHdpdGggQXN0LnJ1bGVzIH1cblxubGV0IG1ha2VfY291bnRlcl9hZ2VudCBzaWdzIChpc19maXJzdCwgKGRzdCwgcmFfZXJhc2VkKSkgKGlzX2xhc3QsIGVxdWFsKSBpIGpcbiAgICBsb2MgKGNyZWF0ZWQgOiBib29sKSA6IExLYXBwYS5ydWxlX2FnZW50ID1cbiAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgbGV0IHBvcnRfYiwgcG9ydF9hID0gY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gIGxldCByYV90eXBlID0gY291bnRlcl9hZ2VudF9pbmZvLmlkIGluXG5cbiAgbGV0IHJhX3BvcnRzID1cbiAgICBBcnJheS5tYWtlIGNvdW50ZXJfYWdlbnRfaW5mby5hcml0eVxuICAgICAgKChMS2FwcGEuTE5LX0ZSRUUsIGxvYyksIExLYXBwYS5NYWludGFpbmVkKVxuICBpblxuICBsZXQgYmVmb3JlX3N3aXRjaCA9XG4gICAgaWYgaXNfZmlyc3QgdGhlblxuICAgICAgaWYgY3JlYXRlZCB0aGVuXG4gICAgICAgIExLYXBwYS5MaW5rZWQgaVxuICAgICAgZWxzZSBpZiByYV9lcmFzZWQgdGhlblxuICAgICAgICBMS2FwcGEuRXJhc2VkXG4gICAgICBlbHNlXG4gICAgICAgIExLYXBwYS5NYWludGFpbmVkXG4gICAgZWxzZVxuICAgICAgTEthcHBhLk1haW50YWluZWRcbiAgaW5cbiAgbGV0IGJlZm9yZSA9XG4gICAgaWYgaXNfZmlyc3QgdGhlblxuICAgICAgTEthcHBhLkxOS19WQUxVRSAoaSwgZHN0KSwgbG9jXG4gICAgZWxzZVxuICAgICAgTEthcHBhLkxOS19WQUxVRSAoaSwgKHJhX3R5cGUsIHBvcnRfYSkpLCBsb2NcbiAgaW5cbiAgbGV0ICgpID0gcmFfcG9ydHMuKHBvcnRfYikgPC0gYmVmb3JlLCBiZWZvcmVfc3dpdGNoIGluXG4gIGxldCBhZnRlciA9XG4gICAgaWYgaXNfbGFzdCAmJiBlcXVhbCB0aGVuXG4gICAgICBMS2FwcGEuTE5LX0ZSRUUsIGxvY1xuICAgIGVsc2UgaWYgaXNfbGFzdCB0aGVuXG4gICAgICBMS2FwcGEuTE5LX0FOWSwgbG9jXG4gICAgZWxzZVxuICAgICAgTEthcHBhLkxOS19WQUxVRSAoaiwgKHJhX3R5cGUsIHBvcnRfYikpLCBsb2NcbiAgaW5cbiAgbGV0ICgpID1cbiAgICByYV9wb3J0cy4ocG9ydF9hKSA8LVxuICAgICAgKCBhZnRlcixcbiAgICAgICAgaWYgcmFfZXJhc2VkIHRoZW5cbiAgICAgICAgICBMS2FwcGEuRXJhc2VkXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZCApXG4gIGluXG4gIGxldCByYV9pbnRzID0gQXJyYXkubWFrZSBjb3VudGVyX2FnZW50X2luZm8uYXJpdHkgTEthcHBhLklfQU5ZIGluXG4gIHtcbiAgICBMS2FwcGEucmFfdHlwZTtcbiAgICByYV9lcmFzZWQ7XG4gICAgcmFfcG9ydHM7XG4gICAgcmFfaW50cztcbiAgICByYV9zeW50YXggPSBTb21lIChBcnJheS5jb3B5IHJhX3BvcnRzLCBBcnJheS5jb3B5IHJhX2ludHMpO1xuICB9XG5cbmxldCByYXdfY291bnRlcl9hZ2VudCAoaXNfZmlyc3QsIGZpcnN0X2xpbmspIChpc19sYXN0LCBsYXN0X2xpbmspIGkgaiBzaWdzIGVxdWFsXG4gICAgOiBSYXdfbWl4dHVyZS5hZ2VudCA9XG4gIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gIGxldCBwb3J0X2IsIHBvcnRfYSA9IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICBsZXQgcG9ydHMgPSBBcnJheS5tYWtlIGNvdW50ZXJfYWdlbnRfaW5mby5hcml0eSBSYXdfbWl4dHVyZS5GUkVFIGluXG4gIGxldCBpbnRlcm5hbHMgPVxuICAgIEFycmF5LmluaXQgY291bnRlcl9hZ2VudF9pbmZvLmFyaXR5IChmdW4gaSAtPlxuICAgICAgICBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSBjb3VudGVyX2FnZW50X2luZm8uaWQgaSBzaWdzKVxuICBpblxuICBsZXQgYmVmb3JlID1cbiAgICBpZiBpc19maXJzdCB0aGVuXG4gICAgICBSYXdfbWl4dHVyZS5WQUwgZmlyc3RfbGlua1xuICAgIGVsc2VcbiAgICAgIFJhd19taXh0dXJlLlZBTCBpXG4gIGluXG4gIGxldCAoKSA9IHBvcnRzLihwb3J0X2IpIDwtIGJlZm9yZSBpblxuICBsZXQgYWZ0ZXIgPVxuICAgIGlmIGlzX2xhc3QgJiYgZXF1YWwgdGhlblxuICAgICAgUmF3X21peHR1cmUuRlJFRVxuICAgIGVsc2UgaWYgaXNfbGFzdCB0aGVuXG4gICAgICBSYXdfbWl4dHVyZS5WQUwgbGFzdF9saW5rXG4gICAgZWxzZVxuICAgICAgUmF3X21peHR1cmUuVkFMIGpcbiAgaW5cbiAgbGV0ICgpID0gcG9ydHMuKHBvcnRfYSkgPC0gYWZ0ZXIgaW5cbiAge1xuICAgIFJhd19taXh0dXJlLmFfdHlwZSA9IGNvdW50ZXJfYWdlbnRfaW5mby5pZDtcbiAgICBSYXdfbWl4dHVyZS5hX3BvcnRzID0gcG9ydHM7XG4gICAgUmF3X21peHR1cmUuYV9pbnRzID0gaW50ZXJuYWxzO1xuICB9XG5cbmxldCByZWMgYWRkX2luY3IgKGkgOiBpbnQpIChmaXJzdF9saW5rIDogaW50KSAobGFzdF9saW5rIDogaW50KSAoZGVsdGEgOiBpbnQpXG4gICAgKGVxdWFsIDogYm9vbCkgKHNpZ3MgOiBTaWduYXR1cmUucykgOiBSYXdfbWl4dHVyZS5hZ2VudCBsaXN0ID1cbiAgaWYgaSA9IGRlbHRhIHRoZW5cbiAgICBbXVxuICBlbHNlIChcbiAgICBsZXQgaXNfZmlyc3QgPSBpID0gMCBpblxuICAgIGxldCBpc19sYXN0ID0gaSA9IGRlbHRhIC0gMSBpblxuICAgIGxldCByYXdfaW5jciA9XG4gICAgICByYXdfY291bnRlcl9hZ2VudCAoaXNfZmlyc3QsIGZpcnN0X2xpbmspIChpc19sYXN0LCBsYXN0X2xpbmspXG4gICAgICAgIChmaXJzdF9saW5rICsgaSlcbiAgICAgICAgKGZpcnN0X2xpbmsgKyBpICsgMSlcbiAgICAgICAgc2lncyBlcXVhbFxuICAgIGluXG4gICAgcmF3X2luY3IgOjogYWRkX2luY3IgKGkgKyAxKSBmaXJzdF9saW5rIGxhc3RfbGluayBkZWx0YSBlcXVhbCBzaWdzXG4gIClcblxubGV0IHJlYyBsaW5rX2luY3IgKHNpZ3MgOiBTaWduYXR1cmUucykgKGkgOiBpbnQpIChuYiA6IGludClcbiAgICAoYWdfaW5mbyA6IChpbnQgKiBpbnQpICogYm9vbCkgKGVxdWFsIDogYm9vbCkgKGxpbmsgOiBpbnQpIChsb2MgOiBMb2MudClcbiAgICAoZGVsdGEgOiBpbnQpIDogTEthcHBhLnJ1bGVfbWl4dHVyZSA9XG4gIGlmIGkgPSBuYiB0aGVuXG4gICAgW11cbiAgZWxzZSAoXG4gICAgbGV0IGlzX2ZpcnN0ID0gaSA9IDAgaW5cbiAgICBsZXQgaXNfbGFzdCA9IGkgPSBuYiAtIDEgaW5cbiAgICBsZXQgcmFfYWdlbnQgPVxuICAgICAgbWFrZV9jb3VudGVyX2FnZW50IHNpZ3MgKGlzX2ZpcnN0LCBhZ19pbmZvKSAoaXNfbGFzdCwgZXF1YWwpIChsaW5rICsgaSlcbiAgICAgICAgKGxpbmsgKyBpICsgMSlcbiAgICAgICAgbG9jIChkZWx0YSA+IDApXG4gICAgaW5cbiAgICByYV9hZ2VudCA6OiBsaW5rX2luY3Igc2lncyAoaSArIDEpIG5iIGFnX2luZm8gZXF1YWwgbGluayBsb2MgZGVsdGFcbiAgKVxuXG5sZXQgcmVjIGVyYXNlX2luY3IgKHNpZ3MgOiBTaWduYXR1cmUucykgKGkgOiBpbnQpIChpbmNycyA6IExLYXBwYS5ydWxlX21peHR1cmUpXG4gICAgKGRlbHRhIDogaW50KSAobGluayA6IGludCkgOiBMS2FwcGEucnVsZV9taXh0dXJlID1cbiAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgbGV0IHBvcnRfYiA9IGZzdCBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgbWF0Y2ggaW5jcnMgd2l0aFxuICB8IGluY3IgOjogaW5jcl9zIC0+XG4gICAgaWYgaSA9IGFicyBkZWx0YSB0aGVuIChcbiAgICAgIGxldCBiZWZvcmUsIF8gPSBpbmNyLkxLYXBwYS5yYV9wb3J0cy4ocG9ydF9iKSBpblxuICAgICAgaW5jci5MS2FwcGEucmFfcG9ydHMuKHBvcnRfYikgPC0gYmVmb3JlLCBMS2FwcGEuTGlua2VkIGxpbms7XG4gICAgICBpbmNyIDo6IGluY3Jfc1xuICAgICkgZWxzZSAoXG4gICAgICBBcnJheS5pdGVyaVxuICAgICAgICAoZnVuIGkgKGEsIF8pIC0+IGluY3IuTEthcHBhLnJhX3BvcnRzLihpKSA8LSBhLCBMS2FwcGEuRXJhc2VkKVxuICAgICAgICBpbmNyLkxLYXBwYS5yYV9wb3J0cztcbiAgICAgIGxldCBydWxlX2FnZW50ID0geyBpbmNyIHdpdGggTEthcHBhLnJhX2VyYXNlZCA9IHRydWUgfSBpblxuICAgICAgcnVsZV9hZ2VudCA6OiBlcmFzZV9pbmNyIHNpZ3MgKGkgKyAxKSBpbmNyX3MgZGVsdGEgbGlua1xuICAgIClcbiAgfCBbXSAtPiBbXVxuXG4oKiogUmV0dXJucyBtaXh0dXJlcyBmb3IgYWdlbnQgd2l0aCBzaXRlIGNoYW5nZWQgZnJvbSBjb3VudGVyIHRvIHBvcnQsIGFzIHdlbGwgYXMgbmV3IFtsaW5rX25iXSBhZnRlciBwcmV2aW91cyBhZGRpdGlvbnNcbiAqIFVzZWQgYnkgW2NvbXBpbGVfY291bnRlcl9pbl9ydWxlX2FnZW50XSopXG5sZXQgY291bnRlcl9iZWNvbWVzX3BvcnQgKHNpZ3MgOiBTaWduYXR1cmUucykgKHJhIDogTEthcHBhLnJ1bGVfYWdlbnQpXG4gICAgKHBvcnRfaWQgOiBpbnQpIChjb3VudGVyIDogQXN0LmNvdW50ZXIpIChzdGFydF9saW5rX25iIDogaW50KSA6XG4gICAgKExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50KSAqIGludCA9XG4gICgqIFJldHVybnMgcG9zaXRpdmUgcGFydCBvZiB2YWx1ZSAqKVxuICBsZXQgcG9zaXRpdmVfcGFydCAoaSA6IGludCkgOiBpbnQgPVxuICAgIGlmIGkgPCAwIHRoZW5cbiAgICAgIDBcbiAgICBlbHNlXG4gICAgICBpXG4gIGluXG5cbiAgbGV0IGxvYyA6IExvYy50ID0gTG9jLmdldF9hbm5vdCBjb3VudGVyLkFzdC5jb3VudGVyX25hbWUgaW5cbiAgbGV0IChkZWx0YSwgbG9jX2RlbHRhKSA6IGludCAqIExvYy50ID0gY291bnRlci5Bc3QuY291bnRlcl9kZWx0YSBpblxuICBsZXQgY291bnRlcl90ZXN0IDogQXN0LmNvdW50ZXJfdGVzdCBMb2MuYW5ub3RlZCA9XG4gICAgT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlXG4gICAgICB+ZXhjZXA6XG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICggXCJDb3VudGVyIFwiXG4gICAgICAgICAgICAgXiBMb2MudiBjb3VudGVyLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgICAgICBeIFwiIHNob3VsZCBoYXZlIGEgdGVzdCBieSBub3dcIixcbiAgICAgICAgICAgICBsb2MgKSlcbiAgICAgIGNvdW50ZXIuQXN0LmNvdW50ZXJfdGVzdFxuICBpblxuICBsZXQgKHRlc3QsIGVxdWFsKSA6IGludCAqIGJvb2wgPVxuICAgIG1hdGNoIExvYy52IGNvdW50ZXJfdGVzdCB3aXRoXG4gICAgfCBBc3QuQ1ZBUiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoIFwiQ291bnRlciBcIlxuICAgICAgICAgICAgIF4gTG9jLnYgY291bnRlci5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgICAgICAgXiBcIiBkZWZpbmVzIGEgdmFyaWFibGUsIHdoaWNoIHNob3VsZCBoYXZlIGJlZW4gcmVwbGFjZWQgYnkgQ0VRIFxcXG4gICAgICAgICAgICAgICAgY29uZGl0aW9ucyBhZnRlciBydWxlIHNwbGl0dGluZ1wiLFxuICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgY291bnRlcl90ZXN0ICkpXG4gICAgfCBBc3QuQ0VRIGogLT4gaiwgdHJ1ZVxuICAgIHwgQXN0LkNHVEUgaiAtPiBqLCBmYWxzZVxuICAgIHwgQXN0LkNMVEUgX2ogLT4gZmFpbHdpdGggXCJub3QgaW1wbGVtZW50ZWRcIiAoKiBUT0RPwqBub3cgKilcbiAgaW5cbiAgbGV0IHN0YXJ0X2xpbmtfZm9yX2NyZWF0ZWQgOiBpbnQgPSBzdGFydF9saW5rX25iICsgdGVzdCArIDEgaW5cbiAgbGV0IGxpbmtfZm9yX2VyYXNlZCA6IGludCA9IHN0YXJ0X2xpbmtfbmIgKyBhYnMgZGVsdGEgaW5cbiAgbGV0IGFnX2luZm8gOiAoaW50ICogaW50KSAqIGJvb2wgPVxuICAgIChwb3J0X2lkLCByYS5MS2FwcGEucmFfdHlwZSksIHJhLkxLYXBwYS5yYV9lcmFzZWRcbiAgaW5cblxuICBsZXQgdGVzdF9pbmNyIDogTEthcHBhLnJ1bGVfbWl4dHVyZSA9XG4gICAgbGlua19pbmNyIHNpZ3MgMCAodGVzdCArIDEpIGFnX2luZm8gZXF1YWwgc3RhcnRfbGlua19uYiBsb2MgZGVsdGFcbiAgaW5cbiAgbGV0IGFkanVzdF9kZWx0YSA6IExLYXBwYS5ydWxlX21peHR1cmUgPVxuICAgIGlmIGRlbHRhIDwgMCB0aGVuXG4gICAgICBlcmFzZV9pbmNyIHNpZ3MgMCB0ZXN0X2luY3IgZGVsdGEgbGlua19mb3JfZXJhc2VkXG4gICAgZWxzZVxuICAgICAgdGVzdF9pbmNyXG4gIGluXG4gIGxldCBjcmVhdGVkIDogUmF3X21peHR1cmUudCA9XG4gICAgaWYgZGVsdGEgPiAwIHRoZW5cbiAgICAgIGFkZF9pbmNyIDAgc3RhcnRfbGlua19mb3JfY3JlYXRlZCBzdGFydF9saW5rX25iIGRlbHRhIGZhbHNlIHNpZ3NcbiAgICBlbHNlXG4gICAgICBbXVxuICBpblxuXG4gIGlmIHRlc3QgKyBkZWx0YSA8IDAgdGhlblxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKFwiQ291bnRlciB0ZXN0IHNob3VsZCBiZSBncmVhdGVyIHRoZW4gYWJzKGRlbHRhKVwiLCBsb2NfZGVsdGEpKTtcblxuICBsZXQgc3dpdGNoIDogTEthcHBhLnN3aXRjaGluZyA9XG4gICAgaWYgZGVsdGEgPSAwIHRoZW5cbiAgICAgIGlmIHJhLkxLYXBwYS5yYV9lcmFzZWQgdGhlblxuICAgICAgICBMS2FwcGEuRXJhc2VkXG4gICAgICBlbHNlXG4gICAgICAgIExLYXBwYS5NYWludGFpbmVkXG4gICAgZWxzZSBpZiBkZWx0YSA+IDAgdGhlblxuICAgICAgTEthcHBhLkxpbmtlZCBzdGFydF9saW5rX2Zvcl9jcmVhdGVkXG4gICAgZWxzZVxuICAgICAgTEthcHBhLkxpbmtlZCBsaW5rX2Zvcl9lcmFzZWRcbiAgaW5cbiAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgbGV0IHBvcnRfYiA6IGludCA9IGZzdCBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgcmEuTEthcHBhLnJhX3BvcnRzLihwb3J0X2lkKSA8LVxuICAgICggKExLYXBwYS5MTktfVkFMVUUgKHN0YXJ0X2xpbmtfbmIsIChwb3J0X2IsIGNvdW50ZXJfYWdlbnRfaW5mby5pZCkpLCBsb2MpLFxuICAgICAgc3dpdGNoICk7XG4gIGxldCBuZXdfbGlua19uYiA6IGludCA9IHN0YXJ0X2xpbmtfbmIgKyAxICsgdGVzdCArIHBvc2l0aXZlX3BhcnQgZGVsdGEgaW5cblxuICAoYWRqdXN0X2RlbHRhLCBjcmVhdGVkKSwgbmV3X2xpbmtfbmJcblxuKCoqIENvbXBpbGVzIHRoZSBjb3VudGVyIHByZWNvbmRpdGlvbiBpbiBhIGxlZnQgaGFuZCBzaWRlIG1peHR1cmUgb2YgYSBydWxlIGludG8gYSBtaXh0dXJlIHdoaWNoIHRlc3RzIGR1bW15IHBvc2l0aW9uc1xuICogcnVsZV9hZ2VudF8gLSBhZ2VudCB3aXRoIGNvdW50ZXJzIGluIGEgcnVsZVxuICAgbG5rX25iIC0gdGhlIG1heCBsaW5rIG51bWJlciB1c2VkIGluIHRoZSBydWxlO1xuICAgc2lncy5jb3VudGVyX2FnZW50X2luZm8gLSBpbmZvIG9uIHRoZSBjb3VudGVyIGFnZW50XG4gICByZXR1cm5zOiBhZ2VudCB3aXRoIGV4cGxpY2l0IGNvdW50ZXJzOyBjcmVhdGVkIGluY3IgYWdlbnRzO1xuICAgICAgICAgICAgdGhlIG5leHQgbGluayBudW1iZXIgdG8gdXNlICopXG5sZXQgY29tcGlsZV9jb3VudGVyX2luX3J1bGVfYWdlbnQgKHNpZ3MgOiBTaWduYXR1cmUucylcbiAgICAocnVsZV9hZ2VudF8gOiBMS2FwcGEucnVsZV9hZ2VudCB3aXRoX2FnZW50X2NvdW50ZXJzKSAobG5rX25iIDogaW50KSA6XG4gICAgTEthcHBhLnJ1bGVfbWl4dHVyZSAqIFJhd19taXh0dXJlLnQgKiBpbnQgPVxuICBsZXQgKGluY3JzLCBsbmtfbmInKSA6IChMS2FwcGEucnVsZV9taXh0dXJlICogUmF3X21peHR1cmUudCkgbGlzdCAqIGludCA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBpZCAoYWNjX2luY3JzLCBsbmtfbmIpIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBhY2NfaW5jcnMsIGxua19uYlxuICAgICAgICB8IFNvbWUgKGNvdW50ZXIsIF8pIC0+XG4gICAgICAgICAgbGV0IG5ld19pbmNycywgbmV3X2xua19uYiA9XG4gICAgICAgICAgICBjb3VudGVyX2JlY29tZXNfcG9ydCBzaWdzIHJ1bGVfYWdlbnRfLmFnZW50IGlkIGNvdW50ZXIgbG5rX25iXG4gICAgICAgICAgaW5cbiAgICAgICAgICBuZXdfaW5jcnMgOjogYWNjX2luY3JzLCBuZXdfbG5rX25iXG4gICAgICAgICgqIEpGOiBsaW5rIGlkcyB3ZXJlIGNvbGxpZGluZyBhZnRlciBjb3VudGVyIGRlY3JlbWVudGF0aW9ucyAtPiBJIGRvIG5vdCB0aGluayB0aGF0IHdlIHNob3VsZCBhZGQgZGVsdGEgd2hlbiBuZWdhdGl2ZSAqKSlcbiAgICAgIChbXSwgbG5rX25iKSBydWxlX2FnZW50Xy5jb3VudGVyc1xuICBpblxuICBsZXQgKGFscywgYmxzKSA6IExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50ID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIChhbHMsIGJscykgKGEsIGIpIC0+IGEgQCBhbHMsIGIgQCBibHMpIChbXSwgW10pIGluY3JzXG4gIGluXG4gIGFscywgYmxzLCBsbmtfbmInXG5cbigqKiBDb21waWxlcyB0aGUgY291bnRlciB2YWx1ZSBjaGFuZ2UgaW4gdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiBhIHJ1bGUgaW50byBkdW1teSBjaGFpbiBjaGFuZ2VzICopXG5sZXQgY29tcGlsZV9jb3VudGVyX2luX3Jhd19hZ2VudCAoc2lncyA6IFNpZ25hdHVyZS5zKVxuICAgIChyYXdfYWdlbnRfIDogUmF3X21peHR1cmUuYWdlbnQgd2l0aF9hZ2VudF9jb3VudGVycykgKGxua19uYiA6IGludCkgOlxuICAgIFJhd19taXh0dXJlLmFnZW50IGxpc3QgKiBpbnQgPVxuICBsZXQgcmF3X2FnZW50IDogUmF3X21peHR1cmUuYWdlbnQgPSByYXdfYWdlbnRfLmFnZW50IGluXG4gIGxldCBwb3J0cyA6IFJhd19taXh0dXJlLmxpbmsgYXJyYXkgPSByYXdfYWdlbnQuUmF3X21peHR1cmUuYV9wb3J0cyBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBwb3J0X2lkIChhY2MsIGxua19uYikgLT4gZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBhY2MsIGxua19uYlxuICAgICAgfCBTb21lIChjLCBfKSAtPlxuICAgICAgICAobWF0Y2ggYy5Bc3QuY291bnRlcl90ZXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGFnZW50X25hbWUgPVxuICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCJcbiAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgICByYXdfYWdlbnQuUmF3X21peHR1cmUuYV90eXBlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImNvdW50ZXJcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICAgICAgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgfCBTb21lICh0ZXN0LCBfKSAtPlxuICAgICAgICAgIChtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IEFzdC5DR1RFIF8gfCBBc3QuQ0xURSBfIHwgQXN0LkNWQVIgXyAtPlxuICAgICAgICAgICAgbGV0IGFnZW50X25hbWUgPVxuICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIlxuICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAgICAgICByYXdfYWdlbnQuUmF3X21peHR1cmUuYV90eXBlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJjb3VudGVyXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICAgICAgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgICB8IEFzdC5DRVEgaiAtPlxuICAgICAgICAgICAgbGV0IHAgPSBSYXdfbWl4dHVyZS5WQUwgbG5rX25iIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocG9ydF9pZCkgPC0gcCBpblxuICAgICAgICAgICAgbGV0IGluY3JzID0gYWRkX2luY3IgMCBsbmtfbmIgKGxua19uYiArIGopIChqICsgMSkgdHJ1ZSBzaWdzIGluXG4gICAgICAgICAgICBhY2MgQCBpbmNycywgbG5rX25iICsgaiArIDEpKSlcbiAgICAoW10sIGxua19uYikgcmF3X2FnZW50Xy5jb3VudGVyc1xuXG5sZXQgcmF3X2FnZW50X2hhc19jb3VudGVycyAoYWdfIDogJ2Egd2l0aF9hZ2VudF9jb3VudGVycykgOiBib29sID1cbiAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gb2sgeCAtPiB4IDw+IE5vbmUgfHwgb2spIGZhbHNlIGFnXy5jb3VudGVyc1xuXG5sZXQgcnVsZV9hZ2VudF9oYXNfY291bnRlcnMgKHJ1bGVfYWdlbnQgOiBMS2FwcGEucnVsZV9hZ2VudClcbiAgICAoc2lncyA6IFNpZ25hdHVyZS5zKSA6IGJvb2wgPVxuICBTaWduYXR1cmUuaGFzX2NvdW50ZXIgKFNpZ25hdHVyZS5nZXQgc2lncyBydWxlX2FnZW50LnJhX3R5cGUpXG5cbigqKiBbY29tcGlsZV9jb3VudGVyX2luX3J1bGUgc2lncyBtaXggY3JlYXRlZF0gdGFrZXMgdGhlIGludGlhbCBtaXh0dXJlIGZyb20gYSBydWxlIFttaXhdLFxuICogYW5kIHRoZSBtaXh0dXJlIG9idGFpbmVkIGZyb20gdGhlIGFwcGxpY2F0aW9uIG9mIHRoZSBydWxlIFtjcmVhdGVkXSxcbiAqIGJvdGggd2l0aCBjb3VudGVyIGluZm9ybWF0aW9uLCBhbmQgcmV0dXJucyB0d28gbWl4dHVyZXMgZm9yIGEgbmV3IHJ1bGUgd2l0aG91dCBjb3VudGVycywgaGF2aW5nIGNvbXBpbGVkIHRoZSBjb3VudGVyIGxvZ2ljIGluc2lkZSB0aGUgcnVsZS5cbiAqXG4gKiAtIGFkZHMgaW5jcmVtZW50IGFnZW50cyB0byB0aGUgcnVsZV9hZ2VudCBtaXh0dXJlXG4gICAtIGFkZHMgaW5jcmVtZW50IGFnZW50cyB0byB0aGUgcmF3IG1peHR1cmVcbiAgIC0gbGlua3MgdGhlIGFnZW50cyBpbiB0aGUgbWl4dHVyZShsaHMscmhzLG1peCkgb3IgaW4gdGhlIHJhdyBtaXh0dXJlKGNyZWF0ZWQpXG4gICAgIHRvIHRoZSBpbmNyZW1lbnRzICopXG5sZXQgY29tcGlsZV9jb3VudGVyX2luX3J1bGUgKHNpZ3MgOiBTaWduYXR1cmUucylcbiAgICAobWl4IDogcnVsZV9taXh0dXJlX3dpdGhfYWdlbnRfY291bnRlcnMpXG4gICAgKGNyZWF0ZWQgOiByYXdfbWl4dHVyZV93aXRoX2FnZW50X2NvdW50ZXJzKSA6XG4gICAgTEthcHBhLnJ1bGVfbWl4dHVyZSAqIFJhd19taXh0dXJlLnQgPVxuICBsZXQgaGFzX2NvdW50ZXJzIDogYm9vbCA9XG4gICAgTGlzdC5leGlzdHNcbiAgICAgIChmdW4gcnVsZV9hZ2VudF8gLT4gcnVsZV9hZ2VudF9oYXNfY291bnRlcnMgcnVsZV9hZ2VudF8uYWdlbnQgc2lncylcbiAgICAgIG1peFxuICAgIHx8IExpc3QuZXhpc3RzIChmdW4gcmF3X2FnZW50XyAtPiByYXdfYWdlbnRfaGFzX2NvdW50ZXJzIHJhd19hZ2VudF8pIGNyZWF0ZWRcbiAgaW5cbiAgaWYgaGFzX2NvdW50ZXJzIHRoZW4gKFxuICAgIGxldCBsbmtfbmIgOiBpbnQgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAobSA6IGludCkgcnVsZV9hZ2VudF8gLT5cbiAgICAgICAgICBtYXggbSAoTEthcHBhLm1heF9saW5rX2lkIFsgcnVsZV9hZ2VudF8uYWdlbnQgXSkpXG4gICAgICAgIDAgbWl4XG4gICAgaW5cblxuICAgIGxldCAoaW5jcnMsIGluY3JzX2NyZWF0ZWQsIGxua19uYicpIDpcbiAgICAgICAgTEthcHBhLnJ1bGVfbWl4dHVyZSAqIFJhd19taXh0dXJlLnQgKiBpbnQgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAobWl4X2luY3IsIGNyZWF0ZWRfaW5jciwgbG5rX25iKSBydWxlX2FnZW50XyAtPlxuICAgICAgICAgIGxldCBtaXhfaW5jcl9uZXcsIGNyZWF0ZWRfaW5jcl9uZXcsIGxua19uYicgPVxuICAgICAgICAgICAgY29tcGlsZV9jb3VudGVyX2luX3J1bGVfYWdlbnQgc2lncyBydWxlX2FnZW50XyBsbmtfbmJcbiAgICAgICAgICBpblxuICAgICAgICAgIG1peF9pbmNyX25ldyBAIG1peF9pbmNyLCBjcmVhdGVkX2luY3JfbmV3IEAgY3JlYXRlZF9pbmNyLCBsbmtfbmInICsgMSlcbiAgICAgICAgKFtdLCBbXSwgbG5rX25iICsgMSlcbiAgICAgICAgbWl4XG4gICAgaW5cbiAgICBsZXQgaW5jcnNfY3JlYXRlZCcgOiBSYXdfbWl4dHVyZS50ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGNyZWF0ZWRfaW5jciwgbG5rX25iKSByYXdfYWdlbnRfIC0+XG4gICAgICAgICAgbGV0IGNyZWF0ZWRfaW5jcl9uZXcsIGxua19uYicnID1cbiAgICAgICAgICAgIGNvbXBpbGVfY291bnRlcl9pbl9yYXdfYWdlbnQgc2lncyByYXdfYWdlbnRfIGxua19uYlxuICAgICAgICAgIGluXG4gICAgICAgICAgY3JlYXRlZF9pbmNyX25ldyBAIGNyZWF0ZWRfaW5jciwgbG5rX25iJycpXG4gICAgICAgIChbXSwgbG5rX25iJyArIDEpXG4gICAgICAgIGNyZWF0ZWRcbiAgICAgIHw+IGZzdFxuICAgICAgKCogV2UgZHJvcCB0aGUgbG5rX25iIGFzIHdlIGRvbid0IG5lZWQgaW4gdGhlIGZvbGxvd2luZyAqKVxuICAgIGluXG5cbiAgICAoKiBSZXR1cm4gaW5pdGlhbCBtaXh0dXJlcyB3aXRoIG5ldyBhZ2VudHMgaW4gcnVsZSBmcm9tIGNvdW50ZXIgY29tcGlsYXRpb24gKilcbiAgICBsZXQgcnVsZV9hZ2VudF9taXggOiBMS2FwcGEucnVsZV9taXh0dXJlID1cbiAgICAgIExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZCAoZnVuIHJ1bGVfYWdlbnRfIC0+IHJ1bGVfYWdlbnRfLmFnZW50KSBtaXggaW5jcnNcbiAgICBpblxuICAgIGxldCByYXdfbWl4IDogUmF3X21peHR1cmUudCA9XG4gICAgICBMaXN0X3V0aWwucmV2X21hcF9hcHBlbmRcbiAgICAgICAgKGZ1biByYXdfYWdlbnRfIC0+IHJhd19hZ2VudF8uYWdlbnQpXG4gICAgICAgIGNyZWF0ZWRcbiAgICAgICAgKGluY3JzX2NyZWF0ZWQgQCBpbmNyc19jcmVhdGVkJylcbiAgICBpblxuICAgIHJ1bGVfYWdlbnRfbWl4LCByYXdfbWl4XG4gICkgZWxzZVxuICAgICggTGlzdC5yZXZfbWFwIChmdW4gcnVsZV9hZ2VudF8gLT4gcnVsZV9hZ2VudF8uYWdlbnQpIChMaXN0LnJldiBtaXgpLFxuICAgICAgTGlzdC5yZXZfbWFwIChmdW4gcmF3X2FnZW50XyAtPiByYXdfYWdlbnRfLmFnZW50KSAoTGlzdC5yZXYgY3JlYXRlZCkgKVxuXG5sZXQgcnVsZV9hZ2VudF93aXRoX21heF9jb3VudGVyIHNpZ3MgYyAoKGFnZW50X25hbWUsIGxvY19hZykgYXMgYWdlbnRfdHlwZSkgOlxuICAgIExLYXBwYS5ydWxlX21peHR1cmUgPVxuICBsZXQgYWdfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnZW50X3R5cGUgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcG9ydHMgPVxuICAgIEFycmF5Lm1ha2UgYXJpdHkgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgaW5cbiAgbGV0IGludGVybmFscyA9IEFycmF5Lm1ha2UgYXJpdHkgTEthcHBhLklfQU5ZIGluXG4gIGxldCBjX25hID0gYy5Bc3QuY291bnRlcl9zaWdfbmFtZSBpblxuICBsZXQgY19pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBjX25hIHNpZ24gaW5cbiAgbGV0IG1heF92YWwsIGxvYyA9XG4gICAgbWF0Y2ggYy5Bc3QuY291bnRlcl9zaWdfbWF4IHdpdGhcbiAgICB8IFNvbWUgKFNvbWUgbWF4LCBsb2MpIC0+IG1heCwgbG9jXG4gICAgfCBOb25lIHwgU29tZSAoTm9uZSwgXykgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICggXCJDb3VudGVyIFwiIF4gZnN0IGNfbmEgXiBcIiBpbiBcIiBeIGFnZW50X25hbWVcbiAgICAgICAgICAgICBeIFwiIHNob3VsZCBoYXZlIGFuIHVwcGVyIGJvdW5kXCIsXG4gICAgICAgICAgICAgbG9jX2FnICkpXG4gIGluXG4gIGxldCBtYXhfdmFsJyA9IG1heF92YWwgKyAxIGluXG4gIGxldCBpbmNycyA9XG4gICAgbGlua19pbmNyIHNpZ3MgMCAobWF4X3ZhbCcgKyAxKSAoKGNfaWQsIGFnX2lkKSwgZmFsc2UpIGZhbHNlIDEgbG9jICgtMSlcbiAgaW5cbiAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgbGV0IHBvcnRfYiA9IGZzdCBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgbGV0IHAgPSBMS2FwcGEuTE5LX1ZBTFVFICgxLCAocG9ydF9iLCBjb3VudGVyX2FnZW50X2luZm8uaWQpKSwgbG9jIGluXG4gIHBvcnRzLihjX2lkKSA8LSBwLCBMS2FwcGEuTWFpbnRhaW5lZDtcbiAgbGV0IHJhIDogTEthcHBhLnJ1bGVfYWdlbnQgPVxuICAgIHtcbiAgICAgIExLYXBwYS5yYV90eXBlID0gYWdfaWQ7XG4gICAgICByYV9wb3J0cyA9IHBvcnRzO1xuICAgICAgcmFfaW50cyA9IGludGVybmFscztcbiAgICAgIHJhX2VyYXNlZCA9IGZhbHNlO1xuICAgICAgcmFfc3ludGF4ID0gU29tZSAoQXJyYXkuY29weSBwb3J0cywgQXJyYXkuY29weSBpbnRlcm5hbHMpO1xuICAgIH1cbiAgaW5cbiAgcmEgOjogaW5jcnNcblxubGV0IGNvdW50ZXJfcGVydHVyYmF0aW9uIHNpZ3MgYyBhZ2VudF90eXBlID1cbiAgbGV0IGFubm90ID0gTG9jLmdldF9hbm5vdCBjLkFzdC5jb3VudGVyX3NpZ19uYW1lIGluXG4gIGxldCBmaWxlbmFtZSA9IFsgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKFwiY291bnRlcl9wZXJ0dXJiYXRpb24ua2FcIiwgYW5ub3QpIF0gaW5cbiAgbGV0IHN0b3BfbWVzc2FnZSA9XG4gICAgXCJDb3VudGVyIFwiXG4gICAgXiBMb2MudiBjLkFzdC5jb3VudGVyX3NpZ19uYW1lXG4gICAgXiBcIiBvZiBhZ2VudCBcIiBeIExvYy52IGFnZW50X3R5cGUgXiBcIiByZWFjaGVkIG1heGltdW1cIlxuICBpblxuICBsZXQgbW9kcyA9XG4gICAgW1xuICAgICAgQXN0LlBSSU5UIChbXSwgWyBQcmltaXRpdmVzLlN0cl9wZXhwciAoXCJcIiwgYW5ub3QpIF0pO1xuICAgICAgQXN0LlBSSU5UIChbXSwgWyBQcmltaXRpdmVzLlN0cl9wZXhwciAoc3RvcF9tZXNzYWdlLCBhbm5vdCkgXSk7XG4gICAgICBBc3QuU1RPUCBmaWxlbmFtZTtcbiAgICBdXG4gIGluXG4gIGxldCB2YWxfb2ZfY291bnRlciA9XG4gICAgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgKHJ1bGVfYWdlbnRfd2l0aF9tYXhfY291bnRlciBzaWdzIGMgYWdlbnRfdHlwZSlcbiAgaW5cbiAgbGV0IHByZSA9XG4gICAgQWxnX2V4cHIuQ09NUEFSRV9PUFxuICAgICAgKCBPcGVyYXRvci5FUVVBTCxcbiAgICAgICAgKHZhbF9vZl9jb3VudGVyLCBhbm5vdCksXG4gICAgICAgIChBbGdfZXhwci5DT05TVCAoTmJyLkkgMSksIGFubm90KSApXG4gIGluXG4gICggTm9uZSxcbiAgICBTb21lIChwcmUsIExvYy5nZXRfYW5ub3QgYWdlbnRfdHlwZSksXG4gICAgbW9kcyxcbiAgICBTb21lIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBBbGdfZXhwci5GQUxTRSkgKVxuXG5sZXQgY291bnRlcnNfcGVydHVyYmF0aW9ucyBzaWdzIGFzdF9zaWdzID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBhY2NcbiAgICAgICB8IEFzdC5QcmVzZW50IChhZ2VudF90eXBlLCBzaXRlcywgXykgLT5cbiAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgIChmdW4gYWNjJyBzaXRlIC0+XG4gICAgICAgICAgICAgbWF0Y2ggc2l0ZSB3aXRoXG4gICAgICAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGFjYydcbiAgICAgICAgICAgICB8IEFzdC5Db3VudGVyIGMgLT5cbiAgICAgICAgICAgICAgIChjb3VudGVyX3BlcnR1cmJhdGlvbiBzaWdzIGMgYWdlbnRfdHlwZSwgTG9jLmdldF9hbm5vdCBhZ2VudF90eXBlKVxuICAgICAgICAgICAgICAgOjogYWNjJylcbiAgICAgICAgICAgYWNjIHNpdGVzKSlcbiAgICBbXSBhc3Rfc2lnc1xuXG5sZXQgbWFrZV9jb3VudGVyIGkgbmFtZSA9XG4gIHtcbiAgICBBc3QuY291bnRlcl9uYW1lID0gTG9jLmFubm90X3dpdGhfZHVtbXkgbmFtZTtcbiAgICBjb3VudGVyX3Rlc3QgPSBTb21lIChMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQXN0LkNFUSBpKSk7XG4gICAgY291bnRlcl9kZWx0YSA9IExvYy5hbm5vdF93aXRoX2R1bW15IDA7XG4gIH1cblxubGV0IGFkZF9jb3VudGVyX3RvX2NvbnRhY3RfbWFwIHNpZ3MgYWRkX2xpbmtfY29udGFjdF9tYXAgPVxuICBsZXQgY291bnRlcl9hZ2VudF9pbmZvID0gU2lnbmF0dXJlLmdldF9jb3VudGVyX2FnZW50X2luZm8gc2lncyBpblxuICBsZXQgcG9ydF9iLCBwb3J0X2EgPSBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgYWRkX2xpbmtfY29udGFjdF9tYXAgY291bnRlcl9hZ2VudF9pbmZvLmlkIHBvcnRfYSBjb3VudGVyX2FnZW50X2luZm8uaWQgcG9ydF9iXG5cbmxldCByYWlzZV9pZl9tb2RpZmljYXRpb24gKGRlbHRhLCBsb2MpID1cbiAgaWYgZGVsdGEgIT0gMCB0aGVuIExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb24gbG9jIChTb21lIGRlbHRhKVxuXG5sZXQgYW5ub3RhdGVfZHJvcHBlZF9jb3VudGVycyBzaWduIGFzdF9jb3VudGVycyByYSBhcml0eSBhZ2VudF9uYW1lIGF1eCA9XG4gIGxldCByYV9jb3VudGVycyA9IEFycmF5Lm1ha2UgYXJpdHkgTm9uZSBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gcHNldCBjIC0+XG4gICAgICAgIGxldCBwb3J0X25hbWUgPSBjLkFzdC5jb3VudGVyX25hbWUgaW5cbiAgICAgICAgbGV0IHBvcnRfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIHNpZ24gaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBvcnRfaWQgc2lnbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IExLYXBwYS5yYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcG9ydF9pZCBwc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIGMuQXN0LmNvdW50ZXJfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSByYWlzZV9pZl9tb2RpZmljYXRpb24gYy5Bc3QuY291bnRlcl9kZWx0YSBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF1eCB3aXRoXG4gICAgICAgICAgfCBTb21lIGYgLT4gZiBwb3J0X2lkXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIHJhX2NvdW50ZXJzLihwb3J0X2lkKSA8LSBTb21lIChjLCBMS2FwcGEuRXJhc2VkKTtcbiAgICAgICAgcHNldCcpXG4gICAgICBNb2RzLkludFNldC5lbXB0eSBhc3RfY291bnRlcnNcbiAgaW5cbiAgeyBhZ2VudCA9IHJhOyBjb3VudGVycyA9IHJhX2NvdW50ZXJzIH1cblxubGV0IGFubm90YXRlX2VkaXRfY291bnRlcnMgc2lncyAoKGFnZW50X25hbWUsIF8pIGFzIGFnZW50X3R5cGUpIGNvdW50ZXJzIHJhXG4gICAgYWRkX2xpbmtfY29udGFjdF9tYXAgPVxuICBsZXQgYWdfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnZW50X3R5cGUgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcmFfY291bnRlcnMgPSBBcnJheS5tYWtlIGFyaXR5IE5vbmUgaW5cbiAgbGV0IHJlZ2lzdGVyX2NvdW50ZXJfbW9kaWYgY19pZCA9XG4gICAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgICBsZXQgcG9ydF9iID0gZnN0IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICAgIGFkZF9saW5rX2NvbnRhY3RfbWFwIGFnX2lkIGNfaWQgY291bnRlcl9hZ2VudF9pbmZvLmlkIHBvcnRfYlxuICBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gcHNldCBjIC0+XG4gICAgICAgIGxldCBwb3J0X25hbWUgPSBjLkFzdC5jb3VudGVyX25hbWUgaW5cbiAgICAgICAgbGV0IHBvcnRfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIHNpZ24gaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBvcnRfaWQgc2lnbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IExLYXBwYS5yYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcG9ydF9pZCBwc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIGMuQXN0LmNvdW50ZXJfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSByZWdpc3Rlcl9jb3VudGVyX21vZGlmIHBvcnRfaWQgaW5cbiAgICAgICAgbGV0ICgpID0gcmFfY291bnRlcnMuKHBvcnRfaWQpIDwtIFNvbWUgKGMsIExLYXBwYS5NYWludGFpbmVkKSBpblxuICAgICAgICBwc2V0JylcbiAgICAgIE1vZHMuSW50U2V0LmVtcHR5IGNvdW50ZXJzXG4gIGluXG4gIHsgYWdlbnQgPSByYTsgY291bnRlcnMgPSByYV9jb3VudGVycyB9XG5cbmxldCBhbm5vdGF0ZV9jb3VudGVyc193aXRoX2RpZmYgc2lncyAoKGFnZW50X25hbWUsIGxvYykgYXMgYWdlbnRfdHlwZSkgbGMgcmMgcmFcbiAgICBhZGRfbGlua19jb250YWN0X21hcCA9XG4gIGxldCBhZ19pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdlbnRfdHlwZSBzaWdzIGluXG4gIGxldCBzaWduID0gU2lnbmF0dXJlLmdldCBzaWdzIGFnX2lkIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFnX2lkIGluXG4gIGxldCByZWdpc3Rlcl9jb3VudGVyX21vZGlmIGMgY19pZCA9XG4gICAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgICBsZXQgcG9ydF9iID0gZnN0IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICAgIGxldCAoKSA9IGFkZF9saW5rX2NvbnRhY3RfbWFwIGFnX2lkIGNfaWQgY291bnRlcl9hZ2VudF9pbmZvLmlkIHBvcnRfYiBpblxuICAgIGMsIExLYXBwYS5NYWludGFpbmVkXG4gIGluXG4gIGxldCByYV9jb3VudGVycyA9IEFycmF5Lm1ha2UgYXJpdHkgTm9uZSBpblxuICBsZXQgcmNfciwgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKHJjLCBjc2V0KSBjIC0+XG4gICAgICAgIGxldCAoKG5hLCBfKSBhcyBjb3VudGVyX25hbWUpID0gYy5Bc3QuY291bnRlcl9uYW1lIGluXG4gICAgICAgIGxldCBjX2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIGNvdW50ZXJfbmFtZSBzaWduIGluXG4gICAgICAgIGxldCBjc2V0JyA9IE1vZHMuSW50U2V0LmFkZCBjX2lkIGNzZXQgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBjc2V0ID09IGNzZXQnIHRoZW5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgY291bnRlcl9uYW1lXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjJywgcmMnID1cbiAgICAgICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAgICAgKGZ1biBwIC0+IFN0cmluZy5jb21wYXJlIChMb2MudiBwLkFzdC5jb3VudGVyX25hbWUpIG5hID0gMClcbiAgICAgICAgICAgIHJjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjJycgPVxuICAgICAgICAgIG1hdGNoIGMnIHdpdGhcbiAgICAgICAgICB8IF8gOjogW10gfCBbXSAtPiByZWdpc3Rlcl9jb3VudGVyX21vZGlmIGMgY19pZFxuICAgICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIGNvdW50ZXJfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSByYV9jb3VudGVycy4oY19pZCkgPC0gU29tZSBjJycgaW5cbiAgICAgICAgcmMnLCBjc2V0JylcbiAgICAgIChyYywgTW9kcy5JbnRTZXQuZW1wdHkpIGxjXG4gIGluXG4gIGxldCBfID1cbiAgICAoKiB0ZXN0IGlmIGNvdW50ZXIgb2YgcmhzIGlzIGluIHRoZSBzaWduYXR1cmUgKilcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biBjIC0+IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWUgc2lnbilcbiAgICAgIHJjX3JcbiAgaW5cbiAgaWYgKG5vdCAocmMgPSBbXSkpICYmIG5vdCAocmNfciA9IFtdKSB0aGVuXG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoXCJDb3VudGVycyBpbiBcIiBeIGFnZW50X25hbWUgXiBcIiBzaG91bGQgaGF2ZSB0ZXN0cyBieSBub3dcIiwgbG9jKSk7XG4gIHsgYWdlbnQgPSByYTsgY291bnRlcnMgPSByYV9jb3VudGVycyB9XG5cbmxldCBhbm5vdGF0ZV9jcmVhdGVkX2NvdW50ZXJzIHNpZ3MgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ2VudF90eXBlKSBjb3VudGVyX2xpc3RcbiAgICBhZGRfbGlua19jb250YWN0X21hcCByYSA9XG4gIGxldCBhZ2VudF9pZCA6IGludCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdlbnRfdHlwZSBzaWdzIGluXG4gIGxldCBhZ2VudF9zaWduYXR1cmUgOiBTaWduYXR1cmUudCA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ2VudF9pZCBpblxuICBsZXQgYXJpdHkgOiBpbnQgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ2VudF9pZCBpblxuICBsZXQgcmFfY291bnRlcnMgOiAoQXN0LmNvdW50ZXIgKiBMS2FwcGEuc3dpdGNoaW5nKSBvcHRpb24gYXJyYXkgPVxuICAgIEFycmF5Lm1ha2UgYXJpdHkgTm9uZVxuICBpblxuXG4gICgqIHJlZ2lzdGVyIGFsbCBjb3VudGVycyAoc3BlY2lmaWVkIG9yIG5vdCkgd2l0aCBkZWZhdWx0IHZhbHVlICopXG4gIEFycmF5Lml0ZXJpXG4gICAgKGZ1biBwb3J0X2lkIF8gLT5cbiAgICAgIG1hdGNoIFNpZ25hdHVyZS5jb3VudGVyX29mX3NpdGVfaWQgcG9ydF9pZCBhZ2VudF9zaWduYXR1cmUgd2l0aFxuICAgICAgfCBTb21lIGNvdW50ZXJfaW5mbyAtPlxuICAgICAgICBsZXQgY291bnRlcl9uYW1lID0gU2lnbmF0dXJlLnNpdGVfb2ZfbnVtIHBvcnRfaWQgYWdlbnRfc2lnbmF0dXJlIGluXG4gICAgICAgICh0cnlcbiAgICAgICAgICAgKCogZmluZCBjb3VudGVyIG1hdGNoaW5nIHBvcnQgKilcbiAgICAgICAgICAgbGV0IGMgOiBBc3QuY291bnRlciA9XG4gICAgICAgICAgICAgTGlzdC5maW5kXG4gICAgICAgICAgICAgICAoZnVuIGMnIC0+XG4gICAgICAgICAgICAgICAgIFN0cmluZy5jb21wYXJlIChMb2MudiBjJy5Bc3QuY291bnRlcl9uYW1lKSBjb3VudGVyX25hbWUgPSAwKVxuICAgICAgICAgICAgICAgY291bnRlcl9saXN0XG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHJhX2NvdW50ZXJzLihwb3J0X2lkKSA8LVxuICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX25hbWUgPSBjLkFzdC5jb3VudGVyX25hbWU7XG4gICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfdGVzdCA9IGMuQXN0LmNvdW50ZXJfdGVzdDtcbiAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9kZWx0YSA9IDAsIExvYy5kdW1teTtcbiAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgTEthcHBhLk1haW50YWluZWQgKVxuICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgcmFfY291bnRlcnMuKHBvcnRfaWQpIDwtXG4gICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfbmFtZSA9IGNvdW50ZXJfbmFtZSB8PiBMb2MuYW5ub3Rfd2l0aF9kdW1teTtcbiAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl90ZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5DRVEgY291bnRlcl9pbmZvLmNvdW50ZXJfZGVmYXVsdF92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIHw+IExvYy5hbm5vdF93aXRoX2R1bW15KTtcbiAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9kZWx0YSA9IDAsIExvYy5kdW1teTtcbiAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgTEthcHBhLk1haW50YWluZWQgKSlcbiAgICAgIHwgTm9uZSAtPiAoKSlcbiAgICByYV9jb3VudGVycztcblxuICBsZXQgcmVnaXN0ZXJfY291bnRlcl9tb2RpZiBjX2lkID1cbiAgICBsZXQgY291bnRlcl9hZ2VudF9pbmZvID0gU2lnbmF0dXJlLmdldF9jb3VudGVyX2FnZW50X2luZm8gc2lncyBpblxuICAgIGxldCBwb3J0X2IgPSBmc3QgY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gICAgYWRkX2xpbmtfY29udGFjdF9tYXAgYWdlbnRfaWQgY19pZCBjb3VudGVyX2FnZW50X2luZm8uaWQgcG9ydF9iXG4gIGluXG4gIGxldCBfIDogTW9kcy5JbnRTZXQudCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gcHNldCBjIC0+XG4gICAgICAgIGxldCBwb3J0X25hbWUgPSBjLkFzdC5jb3VudGVyX25hbWUgaW5cbiAgICAgICAgbGV0IHBvcnRfaWQgPVxuICAgICAgICAgIFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwb3J0X25hbWUgYWdlbnRfc2lnbmF0dXJlXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIFNpZ25hdHVyZS5jb3VudGVyX29mX3NpdGVfaWQgcG9ydF9pZCBhZ2VudF9zaWduYXR1cmUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTEthcHBhLnJhaXNlX2NvdW50ZXJfbWlzdXNlZCBhZ2VudF9uYW1lIGMuQXN0LmNvdW50ZXJfbmFtZVxuICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICgpO1xuICAgICAgICAgIGxldCBwc2V0JyA9IE1vZHMuSW50U2V0LmFkZCBwb3J0X2lkIHBzZXQgaW5cbiAgICAgICAgICBpZiBwc2V0ID09IHBzZXQnIHRoZW5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lO1xuICAgICAgICAgIHJlZ2lzdGVyX2NvdW50ZXJfbW9kaWYgcG9ydF9pZDtcbiAgICAgICAgICByYV9jb3VudGVycy4ocG9ydF9pZCkgPC0gU29tZSAoYywgTEthcHBhLk1haW50YWluZWQpO1xuICAgICAgICAgIHBzZXQnKVxuICAgICAgTW9kcy5JbnRTZXQuZW1wdHkgY291bnRlcl9saXN0XG4gIGluXG4gIHsgYWdlbnQgPSByYTsgY291bnRlcnMgPSByYV9jb3VudGVycyB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgbWFwX29wdCBmIG9wdCA9IG1hdGNoIG9wdCB3aXRoIHwgTm9uZSAtPiBOb25lIHwgU29tZSBhIC0+IFNvbWUgKGYgYSlcblxuKCogVE9ETyBvcmlnaW5hbGx5X2Zyb20gdGVybS9sS2FwcGEubWwsIHNlZSBpZiBpdCBtYWtlcyBzZW5zZSBoZXJlICopXG5sZXQgcmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IChwb3MgOiBMb2MudCkgPSBmdW5jdGlvblxuICB8IEFzdC5Ob01vZCAtPiAoKVxuICB8IEFzdC5FcmFzZSB8IEFzdC5DcmVhdGUgLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKFwiQSBtb2RpZmljYXRpb24gaXMgZm9yYmlkZGVuIGhlcmUuXCIsIHBvcykpXG5cbmxldCBidWlsZF9sX3R5cGUgc2lncyBwb3MgZHN0X3R5IGRzdF9wIHN3aXRjaCA9XG4gIGxldCB0eV9pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgZHN0X3R5IHNpZ3MgaW5cbiAgbGV0IHBfaWQgPSBTaWduYXR1cmUuaWRfb2Zfc2l0ZSBkc3RfdHkgZHN0X3Agc2lncyBpblxuICAoTEthcHBhLkxOS19UWVBFIChwX2lkLCB0eV9pZCksIHBvcyksIHN3aXRjaFxuXG5sZXQgYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwIHN0eSBzcCBkdHkgZHAgPVxuICBtYXRjaCBjb250YWN0X21hcCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgY29udGFjdF9tYXAgLT5cbiAgICBsZXQgc2ksIHNsID0gY29udGFjdF9tYXAuKHN0eSkuKHNwKSBpblxuICAgIGxldCBkaSwgZGwgPSBjb250YWN0X21hcC4oZHR5KS4oZHApIGluXG4gICAgbGV0ICgpID0gY29udGFjdF9tYXAuKHN0eSkuKHNwKSA8LSBzaSwgTW9kcy5JbnQyU2V0LmFkZCAoZHR5LCBkcCkgc2wgaW5cbiAgICBjb250YWN0X21hcC4oZHR5KS4oZHApIDwtIGRpLCBNb2RzLkludDJTZXQuYWRkIChzdHksIHNwKSBkbFxuXG5sZXQgcnVsZV9pbmR1Y2VzX2xpbmtfcGVybXV0YXRpb24gfndhcm5pbmcgfnBvcyA/ZHN0X3R5IHNpZ3Mgc29ydCBzaXRlID1cbiAgbGV0IHdhcm5pbmdfZm9yX2NvdW50ZXJzID1cbiAgICBpZiBTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIHNvcnQgdGhlblxuICAgICAgdHJ1ZVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZHN0X3R5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIHMgLT4gU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBzXG4gICAgKVxuICBpblxuXG4gIGlmIG5vdCB3YXJuaW5nX2Zvcl9jb3VudGVycyB0aGVuXG4gICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCJydWxlIGluZHVjZXMgYSBsaW5rIHBlcm11dGF0aW9uIG9uIHNpdGUgJyVhJyBvZiBhZ2VudCAnJWEnXCJcbiAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBzb3J0KVxuICAgICAgICAgIHNpdGVcbiAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgc29ydClcblxubGV0IHNpdGVfc2hvdWxkX21hZGVfYmVfZnJlZSBpIHNpZ3MgYWdfdHkgcF9pZCBwb3MgPVxuICBMS2FwcGEucmFpc2VfbGlua19zaG91bGRfYmVfcmVtb3ZlZCBpXG4gICAgKGxldCAoKSA9XG4gICAgICAgRm9ybWF0LmZwcmludGYgRm9ybWF0LnN0cl9mb3JtYXR0ZXIgXCIlYVwiXG4gICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICBhZ190eVxuICAgICBpblxuICAgICBGb3JtYXQuZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSlcbiAgICAoIChsZXQgKCkgPVxuICAgICAgICAgRm9ybWF0LmZwcmludGYgRm9ybWF0LnN0cl9mb3JtYXR0ZXIgXCIlYVwiXG4gICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnX3R5KVxuICAgICAgICAgICBwX2lkXG4gICAgICAgaW5cbiAgICAgICBGb3JtYXQuZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSksXG4gICAgICBwb3MgKVxuXG5sZXQgYnVpbGRfbGluayA/d2Fybl9vbl9zd2FwIHNpZ3MgP2NvbnRhY3RfbWFwIHBvcyBpIGFnX3R5IHBfaWQgc3dpdGNoXG4gICAgKGxpbmtzX29uZSwgbGlua3NfdHdvKSA9XG4gIGlmIE1vZHMuSW50TWFwLm1lbSBpIGxpbmtzX3R3byB0aGVuXG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAoIFwiVGhpcyBpcyB0aGUgdGhpcmQgb2NjdXJlbmNlIG9mIGxpbmsgJ1wiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgICAgICAgIF4gXCInIGluIHRoZSBzYW1lIG1peHR1cmUuXCIsXG4gICAgICAgICAgIHBvcyApKVxuICBlbHNlIChcbiAgICBtYXRjaCBNb2RzLkludE1hcC5wb3AgaSBsaW5rc19vbmUgd2l0aFxuICAgIHwgTm9uZSwgb25lJyAtPlxuICAgICAgbGV0IG5ld19saW5rID1cbiAgICAgICAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgICAgICAgfCBMS2FwcGEuTGlua2VkIGogLT4gU29tZSBqXG4gICAgICAgIHwgTEthcHBhLkZyZWVkIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5NYWludGFpbmVkIC0+IE5vbmVcbiAgICAgIGluXG4gICAgICAoICgoTEthcHBhLkxOS19WQUxVRSAoaSwgKC0xLCAtMSkpLCBwb3MpLCBzd2l0Y2gpLFxuICAgICAgICAoTW9kcy5JbnRNYXAuYWRkIGkgKGFnX3R5LCBwX2lkLCBuZXdfbGluaywgcG9zLCBzd2l0Y2gpIG9uZScsIGxpbmtzX3R3bylcbiAgICAgIClcbiAgICB8IFNvbWUgKGRzdF90eSwgZHN0X3AsIGRzdF9pZCwgcG9zJywgc3dpdGNoJyksIG9uZScgLT5cbiAgICAgIGlmIFNpZ25hdHVyZS5hbGxvd2VkX2xpbmsgYWdfdHkgcF9pZCBkc3RfdHkgZHN0X3Agc2lncyB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwIGFnX3R5IHBfaWQgZHN0X3R5IGRzdF9wIGluXG4gICAgICAgIGxldCBtYWludGFpbmVkID1cbiAgICAgICAgICBtYXRjaCBzd2l0Y2ggd2l0aFxuICAgICAgICAgIHwgTEthcHBhLkxpbmtlZCBqIC0+XG4gICAgICAgICAgICBsZXQgbGlua19zd2FwID0gU29tZSBqIDw+IGRzdF9pZCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgaWYgbGlua19zd2FwIHRoZW4gKFxuICAgICAgICAgICAgICAgIG1hdGNoIHdhcm5fb25fc3dhcCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBTb21lIHdhcm5pbmcgLT5cbiAgICAgICAgICAgICAgICAgIHJ1bGVfaW5kdWNlc19saW5rX3Blcm11dGF0aW9uIH53YXJuaW5nIH5wb3MgfmRzdF90eSBzaWdzIGFnX3R5XG4gICAgICAgICAgICAgICAgICAgIHBfaWRcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG5vdCBsaW5rX3N3YXBcbiAgICAgICAgICB8IExLYXBwYS5GcmVlZCB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgX2NoZWNrX2NvbXBhdGliaWx0eSA9XG4gICAgICAgICAgbWF0Y2ggc3dpdGNoLCBzd2l0Y2gnIHdpdGhcbiAgICAgICAgICB8IExLYXBwYS5NYWludGFpbmVkLCBMS2FwcGEuTWFpbnRhaW5lZCAtPiAoKVxuICAgICAgICAgIHwgTEthcHBhLk1haW50YWluZWQsIChMS2FwcGEuRnJlZWQgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfKVxuICAgICAgICAgICAgLT5cbiAgICAgICAgICAgIHNpdGVfc2hvdWxkX21hZGVfYmVfZnJlZSBpIHNpZ3MgYWdfdHkgcF9pZCBwb3NcbiAgICAgICAgICB8IChMS2FwcGEuRnJlZWQgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfKSwgTEthcHBhLk1haW50YWluZWRcbiAgICAgICAgICAgIC0+XG4gICAgICAgICAgICBzaXRlX3Nob3VsZF9tYWRlX2JlX2ZyZWUgaSBzaWdzIGRzdF90eSBkc3RfcCBwb3MnXG4gICAgICAgICAgfCAoIChMS2FwcGEuRnJlZWQgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfKSxcbiAgICAgICAgICAgICAgKExLYXBwYS5GcmVlZCB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuTGlua2VkIF8pICkgLT5cbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgICggKCAoTEthcHBhLkxOS19WQUxVRSAoaSwgKGRzdF9wLCBkc3RfdHkpKSwgcG9zKSxcbiAgICAgICAgICAgIGlmIG1haW50YWluZWQgdGhlblxuICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBzd2l0Y2ggKSxcbiAgICAgICAgICAob25lJywgTW9kcy5JbnRNYXAuYWRkIGkgKGFnX3R5LCBwX2lkLCBtYWludGFpbmVkKSBsaW5rc190d28pIClcbiAgICAgICkgZWxzZVxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKCBGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgXCJGb3JiaWRkZW4gbGluayB0byBhICVhLiVhIGZyb20gc2lnbmF0dXJlIGRlY2xhcmF0aW9uXCJcbiAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgZHN0X3R5KVxuICAgICAgICAgICAgICAgICBkc3RfcFxuICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgICAgICAgIGRzdF90eSxcbiAgICAgICAgICAgICAgIHBvcyApKVxuICApXG5cbmxldCBhbm5vdGF0ZV9kcm9wcGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+cl9lZGl0X3N0eWxlIHNpZ3NcbiAgICBsaW5rc19hbm5vdCAoKGFnZW50X25hbWUsIF8pIGFzIGFnX3R5KSBzaW1wbGVfcG9ydF9saXN0IGNvdW50ZXJfbGlzdCA9XG4gIGxldCBhZ19pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdfdHkgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcG9ydHMgPVxuICAgIEFycmF5Lm1ha2UgYXJpdHkgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuRXJhc2VkKVxuICBpblxuICBsZXQgaW50ZXJuYWxzID1cbiAgICBBcnJheS5pbml0IGFyaXR5IChmdW4gaSAtPlxuICAgICAgICBtYXRjaCBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSBhZ19pZCBpIHNpZ3Mgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTEthcHBhLklfQU5ZXG4gICAgICAgIHwgU29tZSBfIC0+IExLYXBwYS5JX0FOWV9FUkFTRUQpXG4gIGluXG4gIGxldCBsYW5ub3QsIF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChsYW5ub3QsIHBzZXQpIHAgLT5cbiAgICAgICAgbGV0ICgoXywgcF9wb3MpIGFzIHBvcnRfbmFtZSkgPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgICAgbGV0IHBfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIHNpZ24gaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBfaWQgc2lnbiB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT4gTEthcHBhLnJhaXNlX2NvdW50ZXJfbWlzdXNlZCBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcF9pZCBwc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIHAuQXN0LnBvcnRfbGlua19tb2QsIHAuQXN0LnBvcnRfbGluayB3aXRoXG4gICAgICAgICAgfCBOb25lLCBfIC0+ICgpXG4gICAgICAgICAgfCBTb21lIE5vbmUsIFsgKExLYXBwYS5MTktfVkFMVUUgKF8sICgpKSwgXykgXVxuICAgICAgICAgICgqIFtpLy5dIGlzIGFsbG93ZWQgaW4gZGVncmFkZWQgYWdlbnQuXG4gICAgICAgICAgICAgSXQgd2lsbCBiZSBjaGVja2VkIGxhdGVyIHRoYXQgdGhlIG90aGVyIHNpdGUgd2l0aCBsaW5rIGlkIGkgaXMgYWxzbyBmcmVlZCBpbiB0aGUgcnVsZSAqKVxuICAgICAgICAgICgqIFBsZWFzZSBub3RlIHRoYXQgYSBydWxlIHdyaXR0ZW4gYXMgQSh4WzFdKS0sQih4WzEvLl0pLSBpcyBhbGxvd2VkICopXG4gICAgICAgICAgICAtPlxuICAgICAgICAgICAgKClcbiAgICAgICAgICB8ICggU29tZSAoTm9uZSB8IFNvbWUgXyksXG4gICAgICAgICAgICAgICggW11cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuTE5LX1ZBTFVFIChfLCAoKSksIF8pIF1cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF1cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuTE5LX0ZSRUUsIF8pIF1cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgXykgXVxuICAgICAgICAgICAgICB8IFsgKExLYXBwYS5MTktfU09NRSwgXykgXVxuICAgICAgICAgICAgICB8IFsgKExLYXBwYS5MTktfVFlQRSAoXywgXyksIF8pIF1cbiAgICAgICAgICAgICAgfCBfIDo6IF8gOjogXyApICkgLT5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb24gcF9wb3MgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfaW50X21vZCBpblxuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggcC5Bc3QucG9ydF9pbnQgd2l0aFxuICAgICAgICAgIHwgW10gfCBbIChOb25lLCBfKSBdIC0+ICgpXG4gICAgICAgICAgfCBbIChTb21lIHZhLCBwb3MpIF0gLT5cbiAgICAgICAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgICAgICAgTEthcHBhLklfVkFMX0VSQVNFRFxuICAgICAgICAgICAgICAgIChTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgKHZhLCBwb3MpIHNpZ24pXG4gICAgICAgICAgfCBfIDo6IChfLCBwb3MpIDo6IF8gLT4gTEthcHBhLnJhaXNlX3NldmVyYWxfaW50ZXJuYWxfc3RhdGVzIHBvc1xuICAgICAgICBpblxuICAgICAgICBtYXRjaCBwLkFzdC5wb3J0X2xpbmsgd2l0aFxuICAgICAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBwb3MpIF0gLT5cbiAgICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5BTllfRlJFRSwgcG9zKSwgTEthcHBhLkVyYXNlZCBpblxuICAgICAgICAgIGxhbm5vdCwgcHNldCdcbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSBdIC0+XG4gICAgICAgICAgbGV0IHBvcnRfbmFtZSwgcG9zID0gcC5Bc3QucG9ydF9uYW1lIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCJcbiAgICAgICAgICAgICAgICAgIHBvcnRfbmFtZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluayksIExLYXBwYS5FcmFzZWQgaW5cbiAgICAgICAgICBsYW5ub3QsIHBzZXQnXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19UWVBFIChkc3RfcCwgZHN0X3R5KSwgcG9zX2xpbmspIF0gLT5cbiAgICAgICAgICBsZXQgcG9ydF9uYW1lLCBwb3MgPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIlxuICAgICAgICAgICAgICAgICAgcG9ydF9uYW1lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHBvcnRzLihwX2lkKSA8LVxuICAgICAgICAgICAgICBidWlsZF9sX3R5cGUgc2lncyBwb3NfbGluayBkc3RfdHkgZHN0X3AgTEthcHBhLkVyYXNlZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGFubm90LCBwc2V0J1xuICAgICAgICB8IChbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF0gfCBbXSkgd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuRXJhc2VkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsYW5ub3QsIHBzZXQnXG4gICAgICAgIHwgWyAoTEthcHBhLkFOWV9GUkVFLCBfKSBdIHwgW10gLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5BTllfRlJFRSwgTEthcHBhLkVyYXNlZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGFubm90LCBwc2V0J1xuICAgICAgICB8IFsgKExLYXBwYS5MTktfRlJFRSwgXykgXSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuRXJhc2VkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsYW5ub3QsIHBzZXQnXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MpIF0gLT5cbiAgICAgICAgICBsZXQgdmEsIGxhbm5vdCcgPVxuICAgICAgICAgICAgbGV0IHdhcm5fb25fc3dhcCA9XG4gICAgICAgICAgICAgIGlmIHJfZWRpdF9zdHlsZSB0aGVuXG4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgU29tZSB3YXJuaW5nXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYnVpbGRfbGluayA/d2Fybl9vbl9zd2FwIHNpZ3MgcG9zIGkgYWdfaWQgcF9pZCBMS2FwcGEuRXJhc2VkIGxhbm5vdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIHZhIGluXG4gICAgICAgICAgbGFubm90JywgcHNldCdcbiAgICAgICAgfCBfIDo6IChfLCBwb3MpIDo6IF8gLT5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgIChcIlNldmVyYWwgbGluayBzdGF0ZSBmb3IgYSBzaW5nbGUgc2l0ZVwiLCBwb3MpKSlcbiAgICAgIChsaW5rc19hbm5vdCwgTW9kcy5JbnRTZXQuZW1wdHkpXG4gICAgICBzaW1wbGVfcG9ydF9saXN0XG4gIGluXG4gIGxldCByYSA9XG4gICAge1xuICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZ19pZDtcbiAgICAgIHJhX3BvcnRzID0gcG9ydHM7XG4gICAgICByYV9pbnRzID0gaW50ZXJuYWxzO1xuICAgICAgcmFfZXJhc2VkID0gdHJ1ZTtcbiAgICAgIHJhX3N5bnRheCA9IFNvbWUgKEFycmF5LmNvcHkgcG9ydHMsIEFycmF5LmNvcHkgaW50ZXJuYWxzKTtcbiAgICB9XG4gIGluXG4gICggQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfZHJvcHBlZF9jb3VudGVycyBzaWduIGNvdW50ZXJfbGlzdCByYSBhcml0eVxuICAgICAgYWdlbnRfbmFtZSBOb25lLFxuICAgIGxhbm5vdCApXG5cbmxldCBhbm5vdGF0ZV9jcmVhdGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+cl9lZGl0X3N0eWxlIHNpZ3NcbiAgICA/Y29udGFjdF9tYXAgcmFubm90ICgoYWdlbnRfbmFtZSwgXykgYXMgYWdfdHkpIHNpbXBsZV9wb3J0X2xpc3QgPVxuICBsZXQgYWdfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnX3R5IHNpZ3MgaW5cbiAgbGV0IHNpZ24gPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IGFyaXR5ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IHBvcnRzID0gQXJyYXkubWFrZSBhcml0eSBSYXdfbWl4dHVyZS5GUkVFIGluXG4gIGxldCBpbnRlcm5hbHMgPVxuICAgIEFycmF5LmluaXQgYXJpdHkgKGZ1biBpIC0+IFNpZ25hdHVyZS5kZWZhdWx0X2ludGVybmFsX3N0YXRlIGFnX2lkIGkgc2lncylcbiAgaW5cbiAgbGV0IF8sIHJhbm5vdCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKHBzZXQsIHJhbm5vdCkgcCAtPlxuICAgICAgICBsZXQgKChfLCBwX3BvcykgYXMgcG9ydF9uYW1lKSA9IHAuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgICBsZXQgcF9pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwb3J0X25hbWUgc2lnbiBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIFNpZ25hdHVyZS5jb3VudGVyX29mX3NpdGVfaWQgcF9pZCBzaWduIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXyAtPiBMS2FwcGEucmFpc2VfY291bnRlcl9taXN1c2VkIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwc2V0JyA9IE1vZHMuSW50U2V0LmFkZCBwX2lkIHBzZXQgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwc2V0ID09IHBzZXQnIHRoZW5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb24gcF9wb3MgcC5Bc3QucG9ydF9saW5rX21vZCBpblxuICAgICAgICBsZXQgKCkgPSBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfaW50X21vZCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIHAuQXN0LnBvcnRfaW50IHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBbIChOb25lLCBfKSBdIC0+XG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImludGVybmFsXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICAgICAgYWdlbnRfbmFtZSBwb3J0X25hbWVcbiAgICAgICAgICB8IFsgKFNvbWUgdmEsIHBvcykgXSAtPlxuICAgICAgICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LVxuICAgICAgICAgICAgICBTb21lIChTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgKHZhLCBwb3MpIHNpZ24pXG4gICAgICAgICAgfCBfIDo6IChfLCBwb3MpIDo6IF8gLT4gTEthcHBhLnJhaXNlX3NldmVyYWxfaW50ZXJuYWxfc3RhdGVzIHBvc1xuICAgICAgICBpblxuICAgICAgICBtYXRjaCBwLkFzdC5wb3J0X2xpbmsgd2l0aFxuICAgICAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBfKSBdXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19TT01FLCBfKSBdXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19UWVBFIF8sIF8pIF1cbiAgICAgICAgfCBfIDo6IF8gOjogXyAtPlxuICAgICAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwibGlua2luZ1wiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgICAgICBhZ2VudF9uYW1lIHBvcnRfbmFtZVxuICAgICAgICB8IFsgKExLYXBwYS5BTllfRlJFRSwgXykgXSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlY0IC0+XG4gICAgICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICAgIGFnZW50X25hbWUgcG9ydF9uYW1lXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MpIF0gLT5cbiAgICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gUmF3X21peHR1cmUuVkFMIGkgaW5cbiAgICAgICAgICBsZXQgXywgcmFubm90JyA9XG4gICAgICAgICAgICBsZXQgd2Fybl9vbl9zd2FwID1cbiAgICAgICAgICAgICAgaWYgcl9lZGl0X3N0eWxlIHRoZW5cbiAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBTb21lIHdhcm5pbmdcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBidWlsZF9saW5rID93YXJuX29uX3N3YXAgc2lncyA/Y29udGFjdF9tYXAgcG9zIGkgYWdfaWQgcF9pZFxuICAgICAgICAgICAgICBMS2FwcGEuRnJlZWQgcmFubm90XG4gICAgICAgICAgaW5cbiAgICAgICAgICBwc2V0JywgcmFubm90J1xuICAgICAgICB8IFsgKChMS2FwcGEuQU5ZX0ZSRUUgfCBMS2FwcGEuTE5LX0ZSRUUpLCBfKSBdIHwgW10gLT4gcHNldCcsIHJhbm5vdClcbiAgICAgIChNb2RzLkludFNldC5lbXB0eSwgcmFubm90KVxuICAgICAgc2ltcGxlX3BvcnRfbGlzdFxuICBpblxuICAoIHJhbm5vdCxcbiAgICB7XG4gICAgICBSYXdfbWl4dHVyZS5hX3R5cGUgPSBhZ19pZDtcbiAgICAgIFJhd19taXh0dXJlLmFfcG9ydHMgPSBwb3J0cztcbiAgICAgIFJhd19taXh0dXJlLmFfaW50cyA9IGludGVybmFscztcbiAgICB9IClcblxubGV0IHRyYW5zbGF0ZV9tb2RpZmljYXRpb24gfndhcm5pbmcgc2lncyA/Y29udGFjdF9tYXAgYWdfaWQgcF9pZCA/d2Fybl9pbmZvXG4gICAgKChsaHNfbGlua3MsIHJoc19saW5rcykgYXMgbGlua3NfYW5ub3QpID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IExLYXBwYS5NYWludGFpbmVkLCBsaW5rc19hbm5vdFxuICB8IFNvbWUgeCAtPlxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCB3YXJuX2luZm8gd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKHNpdGVfbmFtZSwgcG9zKSAtPlxuICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIlxuICAgICAgICAgICAgICBzaXRlX25hbWUpXG4gICAgaW5cbiAgICAobWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IExLYXBwYS5GcmVlZCwgbGlua3NfYW5ub3RcbiAgICB8IFNvbWUgKGosIHBvc19qKSAtPlxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rID93YXJuX29uX3N3YXA6Tm9uZSBzaWdzID9jb250YWN0X21hcCBwb3NfaiBqIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgTEthcHBhLkxpbmtlZCBqLCAobGhzX2xpbmtzLCByaHNfbGlua3MnKSlcblxubGV0IGFubm90YXRlX2VkaXRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5pc19ydWxlIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ190eSkgbGlua3NfYW5ub3Qgc2ltcGxlX3BvcnRfbGlzdCBjb3VudGVyX2xpc3QgPVxuICBsZXQgYWdfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnX3R5IHNpZ3MgaW5cbiAgbGV0IHNpZ24gPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IGFyaXR5ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IHBvcnRzID1cbiAgICBBcnJheS5tYWtlIGFyaXR5IChMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSwgTEthcHBhLk1haW50YWluZWQpXG4gIGluXG4gIGxldCBpbnRlcm5hbHMgPSBBcnJheS5tYWtlIGFyaXR5IExLYXBwYS5JX0FOWSBpblxuICBsZXQgc2Nhbl9wb3J0IChsaW5rc19hbm5vdCwgcHNldCkgcCA9XG4gICAgbGV0IHBvcnRfbmFtZSwgXyA9IHAuQXN0LnBvcnRfbmFtZSBpblxuICAgIGxldCBwX2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZSBzaWduIGluXG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIFNpZ25hdHVyZS5jb3VudGVyX29mX3NpdGVfaWQgcF9pZCBzaWduIHdpdGhcbiAgICAgIHwgU29tZSBfIC0+IExLYXBwYS5yYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSBwLkFzdC5wb3J0X25hbWVcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgIGluXG4gICAgbGV0IHBzZXQnID0gTW9kcy5JbnRTZXQuYWRkIHBfaWQgcHNldCBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBwc2V0ID09IHBzZXQnIHRoZW5cbiAgICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSBwLkFzdC5wb3J0X25hbWVcbiAgICBpblxuICAgIGxldCBsaW5rc19hbm5vdCcgPVxuICAgICAgbWF0Y2ggcC5Bc3QucG9ydF9saW5rIHdpdGhcbiAgICAgIHwgWyAoKExLYXBwYS5MTktfU09NRSwgcG9zKSBhcyB4KSBdIC0+XG4gICAgICAgIGxldCBtb2RpZiwgbGlua3NfYW5ub3QnID1cbiAgICAgICAgICB0cmFuc2xhdGVfbW9kaWZpY2F0aW9uIH53YXJuaW5nIH53YXJuX2luZm86KHBvcnRfbmFtZSwgcG9zKSBzaWdzXG4gICAgICAgICAgICA/Y29udGFjdF9tYXAgYWdfaWQgcF9pZCBsaW5rc19hbm5vdCBwLkFzdC5wb3J0X2xpbmtfbW9kXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSB4LCBtb2RpZiBpblxuICAgICAgICBsaW5rc19hbm5vdCdcbiAgICAgIHwgWyAoTEthcHBhLkxOS19BTlksIHBvcykgXSAtPlxuICAgICAgICBsZXQgbW9kaWYsIGxpbmtzX2Fubm90JyA9XG4gICAgICAgICAgdHJhbnNsYXRlX21vZGlmaWNhdGlvbiB+d2FybmluZyB+d2Fybl9pbmZvOihwb3J0X25hbWUsIHBvcykgc2lnc1xuICAgICAgICAgICAgP2NvbnRhY3RfbWFwIGFnX2lkIHBfaWQgbGlua3NfYW5ub3QgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5BTllfRlJFRSwgcG9zKSwgbW9kaWYgaW5cbiAgICAgICAgbGlua3NfYW5ub3QnXG4gICAgICB8IChbXSB8IFsgKExLYXBwYS5BTllfRlJFRSwgXykgXSkgd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgICBsZXQgbW9kaWYsIGxpbmtzX2Fubm90JyA9XG4gICAgICAgICAgdHJhbnNsYXRlX21vZGlmaWNhdGlvbiB+d2FybmluZyA/d2Fybl9pbmZvOk5vbmUgc2lncyA/Y29udGFjdF9tYXBcbiAgICAgICAgICAgIGFnX2lkIHBfaWQgbGlua3NfYW5ub3QgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBtb2RpZiBpblxuICAgICAgICBsaW5rc19hbm5vdCdcbiAgICAgIHwgW10gd2hlbiBwLkFzdC5wb3J0X2xpbmtfbW9kID0gTm9uZSAtPiBsaW5rc19hbm5vdFxuICAgICAgfCBbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF0gfCBbXSAtPlxuICAgICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImxpbmtpbmdcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICAgIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgICB8IFsgKExLYXBwYS5MTktfRlJFRSwgXykgXSAtPlxuICAgICAgICBsZXQgbW9kaWYsIGxpbmtzX2Fubm90JyA9XG4gICAgICAgICAgdHJhbnNsYXRlX21vZGlmaWNhdGlvbiB+d2FybmluZyA/d2Fybl9pbmZvOk5vbmUgc2lncyA/Y29udGFjdF9tYXBcbiAgICAgICAgICAgIGFnX2lkIHBfaWQgbGlua3NfYW5ub3QgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBtb2RpZiBpblxuICAgICAgICBsaW5rc19hbm5vdCdcbiAgICAgIHwgWyAoTEthcHBhLkxOS19UWVBFIChkc3RfcCwgZHN0X3R5KSwgcG9zKSBdIC0+XG4gICAgICAgIGxldCBtb2RpZiwgbGlua3NfYW5ub3QnID1cbiAgICAgICAgICB0cmFuc2xhdGVfbW9kaWZpY2F0aW9uIH53YXJuaW5nIH53YXJuX2luZm86KHBvcnRfbmFtZSwgcG9zKSBzaWdzXG4gICAgICAgICAgICA/Y29udGFjdF9tYXAgYWdfaWQgcF9pZCBsaW5rc19hbm5vdCBwLkFzdC5wb3J0X2xpbmtfbW9kXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSBidWlsZF9sX3R5cGUgc2lncyBwb3MgZHN0X3R5IGRzdF9wIG1vZGlmIGluXG4gICAgICAgIGxpbmtzX2Fubm90J1xuICAgICAgfCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSAtPlxuICAgICAgICBsZXQgbW9kaWYsIChsaHNfbGlua3MsIHJoc19saW5rcykgPVxuICAgICAgICAgIHRyYW5zbGF0ZV9tb2RpZmljYXRpb24gfndhcm5pbmcgP3dhcm5faW5mbzpOb25lIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgICAgICAgICBhZ19pZCBwX2lkIGxpbmtzX2Fubm90IHAuQXN0LnBvcnRfbGlua19tb2RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHZhLCBsaHNfbGlua3MnID1cbiAgICAgICAgICBidWlsZF9saW5rIHNpZ3NcbiAgICAgICAgICAgID9jb250YWN0X21hcDpcbiAgICAgICAgICAgICAgKGlmIGlzX3J1bGUgdGhlblxuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGNvbnRhY3RfbWFwKVxuICAgICAgICAgICAgP3dhcm5fb25fc3dhcDpOb25lIHBvcyBpIGFnX2lkIHBfaWQgbW9kaWYgbGhzX2xpbmtzXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSB2YSBpblxuICAgICAgICBsaHNfbGlua3MnLCByaHNfbGlua3NcbiAgICAgIHwgXyA6OiAoXywgcG9zKSA6OiBfIC0+XG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoXCJTZXZlcmFsIGxpbmsgc3RhdGUgZm9yIGEgc2luZ2xlIHNpdGVcIiwgcG9zKSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBwLkFzdC5wb3J0X2ludCwgcC5Bc3QucG9ydF9pbnRfbW9kIHdpdGhcbiAgICAgIHwgKFsgKE5vbmUsIF8pIF0gfCBbXSksIE5vbmUgLT4gKClcbiAgICAgIHwgWyAoU29tZSB2YSwgcG9zKSBdLCBTb21lIHZhJyAtPlxuICAgICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtXG4gICAgICAgICAgTEthcHBhLklfVkFMX0NIQU5HRURcbiAgICAgICAgICAgICggU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YSwgcG9zKSBzaWduLFxuICAgICAgICAgICAgICBTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgdmEnIHNpZ24gKVxuICAgICAgfCBbXSwgU29tZSAoKF8sIHBvcykgYXMgdmEpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgdGhlblxuICAgICAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgIFwiaW50ZXJuYWwgc3RhdGUgb2Ygc2l0ZSAnJXMnIG9mIGFnZW50ICclcycgaXMgbW9kaWZpZWQgXFxcbiAgICAgICAgICAgICAgICAgICBhbHRob3VnaCBpdCBpcyBsZWZ0IHVucGVjaWZpZWQgaW4gdGhlIGxlZnQgaGFuZCBzaWRlXCJcbiAgICAgICAgICAgICAgICAgIHBvcnRfbmFtZSBhZ2VudF9uYW1lKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgIChcIk1vZGlmaWVkIGludGVybmFsIHN0YXRlIG11c3QgYXBwZWFyIG9uIHRoZSBsZWZ0XCIsIHBvcykpXG4gICAgICAgIGluXG4gICAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgICBMS2FwcGEuSV9BTllfQ0hBTkdFRCAoU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkIHZhIHNpZ24pXG4gICAgICB8IFsgKE5vbmUsIF8pIF0sIFNvbWUgdmEgLT5cbiAgICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LVxuICAgICAgICAgIExLYXBwYS5JX0FOWV9DSEFOR0VEIChTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgdmEgc2lnbilcbiAgICAgIHwgWyAoU29tZSB2YSwgcG9zKSBdLCBOb25lIC0+XG4gICAgICAgIGxldCBpX2lkID0gU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YSwgcG9zKSBzaWduIGluXG4gICAgICAgIGludGVybmFscy4ocF9pZCkgPC0gTEthcHBhLklfVkFMX0NIQU5HRUQgKGlfaWQsIGlfaWQpXG4gICAgICB8IF8gOjogKF8sIHBvcykgOjogXywgXyAtPiBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9pbnRlcm5hbF9zdGF0ZXMgcG9zXG4gICAgaW5cbiAgICBsaW5rc19hbm5vdCcsIHBzZXQnXG4gIGluXG4gIGxldCBhbm5vdGVkJywgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnQgc2Nhbl9wb3J0IChsaW5rc19hbm5vdCwgTW9kcy5JbnRTZXQuZW1wdHkpIHNpbXBsZV9wb3J0X2xpc3RcbiAgaW5cbiAgbGV0IHJhID1cbiAgICB7XG4gICAgICBMS2FwcGEucmFfdHlwZSA9IGFnX2lkO1xuICAgICAgcmFfcG9ydHMgPSBwb3J0cztcbiAgICAgIHJhX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgICByYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgIHJhX3N5bnRheCA9IFNvbWUgKEFycmF5LmNvcHkgcG9ydHMsIEFycmF5LmNvcHkgaW50ZXJuYWxzKTtcbiAgICB9XG4gIGluXG4gICggQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfZWRpdF9jb3VudGVycyBzaWdzIGFnX3R5IGNvdW50ZXJfbGlzdCByYVxuICAgICAgKGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcCksXG4gICAgYW5ub3RlZCcgKVxuXG5sZXQgYW5ub3RhdGVfYWdlbnRfd2l0aF9kaWZmIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzID9jb250YWN0X21hcFxuICAgICgoYWdlbnRfbmFtZSwgXykgYXMgYWdfdHkpIGxpbmtzX2Fubm90IGxwIHJwIGxjIHJjID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ190eSBzaWdzIGluXG4gIGxldCBzaWduID0gU2lnbmF0dXJlLmdldCBzaWdzIGFnX2lkIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFnX2lkIGluXG4gIGxldCBwb3J0cyA9XG4gICAgQXJyYXkubWFrZSBhcml0eSAoTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19BTlksIExLYXBwYS5NYWludGFpbmVkKVxuICBpblxuICBsZXQgaW50ZXJuYWxzID0gQXJyYXkubWFrZSBhcml0eSBMS2FwcGEuSV9BTlkgaW5cbiAgbGV0IHJlZ2lzdGVyX3BvcnRfbW9kaWYgcF9pZCBsbmsxIHAnICgobGhzX2xpbmtzLCByaHNfbGlua3MpIGFzIGxpbmtzX2Fubm90KSA9XG4gICAgbGV0ICgpID1cbiAgICAgIExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb25cbiAgICAgICAgKExvYy5nZXRfYW5ub3QgcCcuQXN0LnBvcnRfbmFtZSlcbiAgICAgICAgcCcuQXN0LnBvcnRfbGlua19tb2RcbiAgICBpblxuICAgIG1hdGNoIGxuazEsIHAnLkFzdC5wb3J0X2xpbmsgd2l0aFxuICAgIHwgWyAoTEthcHBhLkxOS19BTlksIHBvcykgXSwgWyAoTEthcHBhLkxOS19BTlksIF8pIF0gLT5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkFOWV9GUkVFLCBwb3MpLCBMS2FwcGEuTWFpbnRhaW5lZCBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8IFsgKExLYXBwYS5MTktfU09NRSwgcG9zKSBdLCBbIChMS2FwcGEuTE5LX1NPTUUsIF8pIF0gLT5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19TT01FLCBwb3MpLCBMS2FwcGEuTWFpbnRhaW5lZCBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8ICggW1xuICAgICAgICAgICggTEthcHBhLkxOS19UWVBFICgoKGRzdF9wJycsIF8pIGFzIGRzdF9wKSwgKChkc3RfdHknJywgXykgYXMgZHN0X3R5KSksXG4gICAgICAgICAgICBwb3MgKTtcbiAgICAgICAgXSxcbiAgICAgICAgWyAoTEthcHBhLkxOS19UWVBFICgoZHN0X3AnLCBfKSwgKGRzdF90eScsIF8pKSwgXykgXSApXG4gICAgICB3aGVuIGRzdF9wJycgPSBkc3RfcCcgJiYgZHN0X3R5JycgPSBkc3RfdHknIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gYnVpbGRfbF90eXBlIHNpZ3MgcG9zIGRzdF90eSBkc3RfcCBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIF8sXG4gICAgICAgICggWyAoTEthcHBhLkxOS19BTlksIF8pIF1cbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIF8pIF1cbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX1RZUEUgXywgXykgXSApICkgLT5cbiAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwibGlua2luZ1wiIH5zaWRlOlwicmlnaHRcIlxuICAgICAgICBhZ2VudF9uYW1lIHAnLkFzdC5wb3J0X25hbWVcbiAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBwb3MpIF0sIFtdIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19BTlksIHBvcyksIExLYXBwYS5GcmVlZCBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBwb3MpIF0sIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdIC0+XG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfQU5ZLCBwb3MpLCBMS2FwcGEuRnJlZWQgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIFsgKExLYXBwYS5MTktfU09NRSwgcG9zX2xpbmspIF0sXG4gICAgICAgIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdICkgLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCIgbmEpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSwgTEthcHBhLkZyZWVkIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCBbIChMS2FwcGEuTE5LX1RZUEUgKGRzdF9wLCBkc3RfdHkpLCBwb3NfbGluaykgXSxcbiAgICAgICAgWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0gKSAtPlxuICAgICAgbGV0IG5hLCBwb3MgPSBwJy5Bc3QucG9ydF9uYW1lIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIiBuYSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gYnVpbGRfbF90eXBlIHNpZ3MgcG9zX2xpbmsgZHN0X3R5IGRzdF9wIExLYXBwYS5GcmVlZFxuICAgICAgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSBdLCBbXSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiIG5hKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluayksIExLYXBwYS5GcmVlZCBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8IFsgKExLYXBwYS5MTktfVFlQRSAoZHN0X3AsIGRzdF90eSksIHBvc19saW5rKSBdLCBbXVxuICAgICAgd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgbGV0IG5hLCBwb3MgPSBwJy5Bc3QucG9ydF9uYW1lIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIiBuYSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gYnVpbGRfbF90eXBlIHNpZ3MgcG9zX2xpbmsgZHN0X3R5IGRzdF9wIExLYXBwYS5GcmVlZFxuICAgICAgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIChbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSB8IFtdKSxcbiAgICAgICAgKFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdIHwgW10pIClcbiAgICAgIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIExLYXBwYS5NYWludGFpbmVkXG4gICAgICBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8ICggWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0sXG4gICAgICAgIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdICkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIExLYXBwYS5NYWludGFpbmVkXG4gICAgICBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8IFtdLCBbXSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdLFxuICAgICAgICBbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSApIC0+XG4gICAgICBsZXQgdmEsIGxoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nIHBvcyBpIGFnX2lkIHBfaWQgTEthcHBhLkZyZWVkXG4gICAgICAgICAgbGhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIHZhIGluXG4gICAgICBsaHNfbGlua3MnLCByaHNfbGlua3NcbiAgICB8IFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdLCBbXSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgdmEsIGxoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nIHBvcyBpIGFnX2lkIHBfaWQgTEthcHBhLkZyZWVkXG4gICAgICAgICAgbGhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIHZhIGluXG4gICAgICBsaHNfbGlua3MnLCByaHNfbGlua3NcbiAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBwb3NfbGluaykgXSwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MpIF0gLT5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19BTlksIHBvc19saW5rKSwgTEthcHBhLkxpbmtlZCBpIGluXG4gICAgICBsZXQgXywgcmhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgP2NvbnRhY3RfbWFwIHBvcyBpIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGhzX2xpbmtzLCByaHNfbGlua3MnXG4gICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSBdLCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcycpIF0gLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCIgbmEpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSwgTEthcHBhLkxpbmtlZCBpIGluXG4gICAgICBsZXQgXywgcmhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgP2NvbnRhY3RfbWFwIHBvcycgaSBhZ19pZCBwX2lkXG4gICAgICAgICAgTEthcHBhLkZyZWVkIHJoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxoc19saW5rcywgcmhzX2xpbmtzJ1xuICAgIHwgKCBbIChMS2FwcGEuTE5LX1RZUEUgKGRzdF9wLCBkc3RfdHkpLCBwb3NfbGluaykgXSxcbiAgICAgICAgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MnKSBdICkgLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCIgbmEpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtXG4gICAgICAgICAgYnVpbGRfbF90eXBlIHNpZ3MgcG9zX2xpbmsgZHN0X3R5IGRzdF9wIChMS2FwcGEuTGlua2VkIGkpXG4gICAgICBpblxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nID9jb250YWN0X21hcCBwb3MnIGkgYWdfaWQgcF9pZFxuICAgICAgICAgIExLYXBwYS5GcmVlZCByaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBsaHNfbGlua3MsIHJoc19saW5rcydcbiAgICB8ICggWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0sXG4gICAgICAgIFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdICkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIExLYXBwYS5MaW5rZWQgaVxuICAgICAgaW5cbiAgICAgIGxldCBfLCByaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyA/Y29udGFjdF9tYXAgcG9zIGkgYWdfaWQgcF9pZFxuICAgICAgICAgIExLYXBwYS5GcmVlZCByaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBsaHNfbGlua3MsIHJoc19saW5rcydcbiAgICB8IFtdLCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTGlua2VkIGlcbiAgICAgIGluXG4gICAgICBsZXQgXywgcmhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgP2NvbnRhY3RfbWFwIHBvcyBpIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGhzX2xpbmtzLCByaHNfbGlua3MnXG4gICAgfCAoIFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zX2kpIF0sXG4gICAgICAgIFsgKExLYXBwYS5MTktfVkFMVUUgKGosICgpKSwgcG9zX2opIF0gKSAtPlxuICAgICAgbGV0IHZhLCBsaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyBwb3NfaSBpIGFnX2lkIHBfaWRcbiAgICAgICAgICAoTEthcHBhLkxpbmtlZCBqKSBsaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBsZXQgXywgcmhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgP2NvbnRhY3RfbWFwIHBvc19qIGogYWdfaWQgcF9pZFxuICAgICAgICAgIExLYXBwYS5GcmVlZCByaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gdmEgaW5cbiAgICAgIGxoc19saW5rcycsIHJoc19saW5rcydcbiAgICB8ICggW1xuICAgICAgICAgICggKCBMS2FwcGEuTE5LX1ZBTFVFIChfLCAoKSlcbiAgICAgICAgICAgIHwgTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFXG4gICAgICAgICAgICB8IExLYXBwYS5MTktfVFlQRSAoXywgXylcbiAgICAgICAgICAgIHwgTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkxOS19BTlkgKSxcbiAgICAgICAgICAgIF8gKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10gKSAtPlxuICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJyaWdodFwiXG4gICAgICAgIGFnZW50X25hbWUgcCcuQXN0LnBvcnRfbmFtZVxuICAgIHwgW10sIFsgKChMS2FwcGEuQU5ZX0ZSRUUgfCBMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuTE5LX1ZBTFVFIChfLCBfKSksIF8pIF1cbiAgICAgIC0+XG4gICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImxpbmtpbmdcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICBhZ2VudF9uYW1lIHAnLkFzdC5wb3J0X25hbWVcbiAgICB8IF8gOjogKF8sIHBvcykgOjogXywgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiU2V2ZXJhbCBsaW5rIHN0YXRlIGZvciBhIHNpbmdsZSBzaXRlXCIsIHBvcykpXG4gICAgfCBfLCBfIDo6IChfLCBwb3MpIDo6IF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIlNldmVyYWwgbGluayBzdGF0ZSBmb3IgYSBzaW5nbGUgc2l0ZVwiLCBwb3MpKVxuICBpblxuICBsZXQgcmVnaXN0ZXJfaW50ZXJuYWxfbW9kaWYgcF9pZCBpbnQxIHAnID1cbiAgICBsZXQgKCkgPVxuICAgICAgTEthcHBhLnJhaXNlX2lmX21vZGlmaWNhdGlvblxuICAgICAgICAoTG9jLmdldF9hbm5vdCBwJy5Bc3QucG9ydF9uYW1lKVxuICAgICAgICBwJy5Bc3QucG9ydF9pbnRfbW9kXG4gICAgaW5cbiAgICBtYXRjaCBpbnQxLCBwJy5Bc3QucG9ydF9pbnQgd2l0aFxuICAgIHwgW10sIFtdIHwgWyAoTm9uZSwgXykgXSwgWyAoTm9uZSwgXykgXSAtPiAoKVxuICAgIHwgWyAoU29tZSB2YSwgcG9zKSBdLCBbIChTb21lIHZhJywgcG9zJykgXSAtPlxuICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LVxuICAgICAgICBMS2FwcGEuSV9WQUxfQ0hBTkdFRFxuICAgICAgICAgICggU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YSwgcG9zKSBzaWduLFxuICAgICAgICAgICAgU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YScsIHBvcycpIHNpZ24gKVxuICAgIHwgW10sIFsgKFNvbWUgdmEsIHZhcG9zKSBdIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImludGVybmFsIHN0YXRlIG9mIHNpdGUgJyVzJyBvZiBhZ2VudCAnJXMnIGlzIG1vZGlmaWVkIGFsdGhvdWdoIFxcXG4gICAgICAgICAgICAgICBpdCBpcyBsZWZ0IHVucGVjaWZpZWQgaW4gdGhlIGxlZnQgaGFuZCBzaWRlXCJcbiAgICAgICAgICAgICAgbmEgYWdlbnRfbmFtZSlcbiAgICAgIGluXG4gICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtXG4gICAgICAgIExLYXBwYS5JX0FOWV9DSEFOR0VEXG4gICAgICAgICAgKFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHZhcG9zKSBzaWduKVxuICAgIHwgWyAoTm9uZSwgXykgXSwgWyAoU29tZSB2YSwgdmFwb3MpIF0gLT5cbiAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgTEthcHBhLklfQU5ZX0NIQU5HRURcbiAgICAgICAgICAoU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YSwgdmFwb3MpIHNpZ24pXG4gICAgfCBbXSwgWyBfIF0gLT5cbiAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwiaW50ZXJuYWxcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICBhZ2VudF9uYW1lIHAnLkFzdC5wb3J0X25hbWVcbiAgICB8IFsgXyBdLCAoWyAoTm9uZSwgXykgXSB8IFtdKSAtPlxuICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJpbnRlcm5hbFwiIH5zaWRlOlwicmlnaHRcIlxuICAgICAgICBhZ2VudF9uYW1lIHAnLkFzdC5wb3J0X25hbWVcbiAgICB8IF8gOjogKF8sIHBvcykgOjogXywgXyB8IF8sIF8gOjogKF8sIHBvcykgOjogXyAtPlxuICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfaW50ZXJuYWxfc3RhdGVzIHBvc1xuICBpblxuICBsZXQgZmluZF9pbl9yIChuYSwgcG9zKSBycCA9XG4gICAgbGV0IHAnLCByID1cbiAgICAgIExpc3QucGFydGl0aW9uIChmdW4gcCAtPiBTdHJpbmcuY29tcGFyZSAoTG9jLnYgcC5Bc3QucG9ydF9uYW1lKSBuYSA9IDApIHJwXG4gICAgaW5cbiAgICBtYXRjaCBwJyB3aXRoXG4gICAgfCBbIHAnIF0gLT4gcCcsIHJcbiAgICB8IFtdIC0+XG4gICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImxpbmtpbmdcIiB+c2lkZTpcInJpZ2h0XCJcbiAgICAgICAgYWdlbnRfbmFtZSAobmEsIHBvcylcbiAgICB8IF8gOjogXyAtPiBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIChuYSwgcG9zKVxuICBpblxuICBsZXQgcnBfciwgYW5ub3RlZCwgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKHJwLCBhbm5vdGVkLCBwc2V0KSBwIC0+XG4gICAgICAgIGxldCAoKF8sIHBfcG9zKSBhcyBwb3J0X25hbWUpID0gcC5Bc3QucG9ydF9uYW1lIGluXG4gICAgICAgIGxldCBwX2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHBvcnRfbmFtZSBzaWduIGluXG4gICAgICAgIGxldCBwc2V0JyA9IE1vZHMuSW50U2V0LmFkZCBwX2lkIHBzZXQgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwc2V0ID09IHBzZXQnIHRoZW5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb24gcF9wb3MgcC5Bc3QucG9ydF9saW5rX21vZCBpblxuICAgICAgICBsZXQgKCkgPSBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfaW50X21vZCBpblxuXG4gICAgICAgIGxldCBwJywgcnAnID0gZmluZF9pbl9yIHBvcnRfbmFtZSBycCBpblxuICAgICAgICBsZXQgYW5ub3RlZCcgPSByZWdpc3Rlcl9wb3J0X21vZGlmIHBfaWQgcC5Bc3QucG9ydF9saW5rIHAnIGFubm90ZWQgaW5cbiAgICAgICAgbGV0ICgpID0gcmVnaXN0ZXJfaW50ZXJuYWxfbW9kaWYgcF9pZCBwLkFzdC5wb3J0X2ludCBwJyBpblxuICAgICAgICBycCcsIGFubm90ZWQnLCBwc2V0JylcbiAgICAgIChycCwgbGlua3NfYW5ub3QsIE1vZHMuSW50U2V0LmVtcHR5KVxuICAgICAgbHBcbiAgaW5cbiAgbGV0IGFubm90ZWQnID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhbm5vdGVkIHAgLT5cbiAgICAgICAgbGV0IHBvcnRfbmFtZSA9IHAuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgICBsZXQgcF9pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwb3J0X25hbWUgc2lnbiBpblxuICAgICAgICBsZXQgKCkgPSByZWdpc3Rlcl9pbnRlcm5hbF9tb2RpZiBwX2lkIFtdIHAgaW5cbiAgICAgICAgcmVnaXN0ZXJfcG9ydF9tb2RpZiBwX2lkXG4gICAgICAgICAgWyBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSBdXG4gICAgICAgICAgcCBhbm5vdGVkKVxuICAgICAgYW5ub3RlZCBycF9yXG4gIGluXG5cbiAgbGV0IHJhID1cbiAgICB7XG4gICAgICBMS2FwcGEucmFfdHlwZSA9IGFnX2lkO1xuICAgICAgcmFfcG9ydHMgPSBwb3J0cztcbiAgICAgIHJhX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgICByYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgIHJhX3N5bnRheCA9IFNvbWUgKEFycmF5LmNvcHkgcG9ydHMsIEFycmF5LmNvcHkgaW50ZXJuYWxzKTtcbiAgICB9XG4gIGluXG4gICggQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfY291bnRlcnNfd2l0aF9kaWZmIHNpZ3MgYWdfdHkgbGMgcmMgcmFcbiAgICAgIChhZGRfbGlua19jb250YWN0X21hcCA/Y29udGFjdF9tYXApLFxuICAgIGFubm90ZWQnIClcblxubGV0IHJlZmVyX2xpbmtzX2Fubm90ID93YXJuaW5nIHNpZ3MgbGlua3NfYW5ub3QgbWl4ID1cbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAocmFfIDogTEthcHBhLnJ1bGVfYWdlbnQgQ291bnRlcnNfY29tcGlsZXIud2l0aF9hZ2VudF9jb3VudGVycykgLT5cbiAgICAgIGxldCByYSA9IHJhXy5hZ2VudCBpblxuICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgKGZ1biBpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCAoTEthcHBhLkxOS19WQUxVRSAoaiwgKC0xLCAtMSkpLCBwb3MpLCBtb2RzIC0+XG4gICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaiBsaW5rc19hbm5vdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSAoZHN0X3R5LCBkc3RfcCwgbWFpbnRhaW5lZCkgLT5cbiAgICAgICAgICAgICAgbGV0IG1vZHMnID1cbiAgICAgICAgICAgICAgICBpZiBtYWludGFpbmVkIHRoZW5cbiAgICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbW9kc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIG1hdGNoIG1vZHMnIHdpdGhcbiAgICAgICAgICAgICAgICB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuRnJlZWQgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiAoKVxuICAgICAgICAgICAgICAgIHwgTEthcHBhLkxpbmtlZCBfIC0+XG4gICAgICAgICAgICAgICAgICAobWF0Y2ggd2FybmluZyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICAgICAgIHwgU29tZSB3YXJuaW5nIC0+XG4gICAgICAgICAgICAgICAgICAgIHJ1bGVfaW5kdWNlc19saW5rX3Blcm11dGF0aW9uIH53YXJuaW5nIH5wb3MgfmRzdF90eSBzaWdzXG4gICAgICAgICAgICAgICAgICAgICAgcmEuTEthcHBhLnJhX3R5cGUgaSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgcmEuTEthcHBhLnJhX3BvcnRzLihpKSA8LVxuICAgICAgICAgICAgICAgIChMS2FwcGEuTE5LX1ZBTFVFIChqLCAoZHN0X3AsIGRzdF90eSkpLCBwb3MpLCBtb2RzJylcbiAgICAgICAgICB8ICggKCAoIExLYXBwYS5MTktfVkFMVUUgXyB8IExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkxOS19TT01FXG4gICAgICAgICAgICAgICAgfCBMS2FwcGEuTE5LX1RZUEUgXyB8IExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSApLFxuICAgICAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAgICAgXyApIC0+XG4gICAgICAgICAgICAoKSlcbiAgICAgICAgcmEuTEthcHBhLnJhX3BvcnRzKVxuICAgIG1peFxuXG5sZXQgc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgbHMgPVxuICBsZXQgYSwgYiA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKHBzLCBjcykgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBBc3QuUG9ydCBwIC0+IHAgOjogcHMsIGNzXG4gICAgICAgIHwgQXN0LkNvdW50ZXIgYyAtPiBwcywgYyA6OiBjcylcbiAgICAgIChbXSwgW10pIGxzXG4gIGluXG4gIExpc3QucmV2IGEsIGJcblxubGV0IGZpbmFsX3J1bGVfc2FuaXR5ID93YXJuaW5nIHNpZ3NcbiAgICAoKGxoc19saW5rc19vbmUsIGxoc19saW5rc190d28pLCAocmhzX2xpbmtzX29uZSwgXykpIG1peCA9XG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggTW9kcy5JbnRNYXAucm9vdCBsaHNfbGlua3Nfb25lIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgKGksIChfLCBfLCBfLCBwb3MsIF8pKSAtPiBMS2FwcGEucmFpc2VfbGlua19vbmx5X29uZV9vY2N1cmVuY2UgaSBwb3NcbiAgaW5cbiAgbGV0ICgpID0gcmVmZXJfbGlua3NfYW5ub3QgP3dhcm5pbmcgc2lncyBsaHNfbGlua3NfdHdvIG1peCBpblxuICBtYXRjaCBNb2RzLkludE1hcC5yb290IHJoc19saW5rc19vbmUgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIChpLCAoXywgXywgXywgcG9zLCBfKSkgLT4gTEthcHBhLnJhaXNlX2xpbmtfb25seV9vbmVfb2NjdXJlbmNlIGkgcG9zXG5cbigqXG5JcyByZXNwb25zaWJsZSBmb3IgdGhlIGNoZWNrIHRoYXQ6XG4tIGFnZW50IGV4aXN0c1xuLSBzaXRlcyBleGlzdFxuLSB1bmlxdWUgc2l0ZSBvY2N1cmVuY2UgLyBhZ2VudFxuLSBpbnRlcm5hbF9zdGF0ZXMgZXhpc3Rcbi0gdW5pcXVlIGludGVybmFsX3N0YXRlIC8gc2l0ZVxuLSBsaW5rcyBhcHBlYXIgZXhhY3RseSB0d2ljZVxuKilcbmxldCBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmX3YzIH53YXJuaW5nIHNpZ3MgP2NvbnRhY3RfbWFwIGxocyByaHMgPVxuICBsZXQgc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgaW5cbiAgbGV0IHJlYyBhdXggbGlua3NfYW5ub3QgYWNjIGxocyByaHMgPVxuICAgIG1hdGNoIGxocywgcmhzIHdpdGhcbiAgICB8IEFzdC5BYnNlbnQgcG9zIDo6IF8sIF8gfCAoQXN0LlByZXNlbnQgXyA6OiBfIHwgW10pLCBBc3QuQWJzZW50IHBvcyA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAoXCJBYnNlbnQgYWdlbnQgYXJlIEthU2ltID4gMyBzeW50YXhcIiwgcG9zKSlcbiAgICB8ICggQXN0LlByZXNlbnQgKCgobGFnZW50X25hbWUsIGxwb3MpIGFzIGFnX3R5KSwgbGFnX3MsIGxtb2QpIDo6IGx0LFxuICAgICAgICBBc3QuUHJlc2VudCAoKHJhZ2VudF9uYW1lLCBycG9zKSwgcmFnX3MsIHJtb2QpIDo6IHJ0IClcbiAgICAgIHdoZW4gU3RyaW5nLmNvbXBhcmUgbGFnZW50X25hbWUgcmFnZW50X25hbWUgPSAwXG4gICAgICAgICAgICYmIEFzdC5ub19tb3JlX3NpdGVfb25fcmlnaHQgdHJ1ZSBsYWdfcyByYWdfcyAtPlxuICAgICAgcmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IGxwb3MgbG1vZDtcbiAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBycG9zIHJtb2Q7XG4gICAgICBsZXQgbGFnX3AsIGxhZ19jID0gc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgbGFnX3MgaW5cbiAgICAgIGxldCByYWdfcCwgcmFnX2MgPSBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyByYWdfcyBpblxuICAgICAgbGV0IHJhLCBsaW5rc19hbm5vdCcgPVxuICAgICAgICBhbm5vdGF0ZV9hZ2VudF93aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgICAgICAgYWdfdHkgbGlua3NfYW5ub3QgbGFnX3AgcmFnX3AgbGFnX2MgcmFnX2NcbiAgICAgIGluXG4gICAgICBhdXggbGlua3NfYW5ub3QnIChyYSA6OiBhY2MpIGx0IHJ0XG4gICAgfCAoKEFzdC5QcmVzZW50IF8gOjogXyB8IFtdKSBhcyBlcmFzZWQpLCBhZGRlZCAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgYWRkZWQgPD4gW10gdGhlblxuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgQXN0LkFic2VudCBfIC0+ICgpXG4gICAgICAgICAgICAgIHwgQXN0LlByZXNlbnQgKChsYWcsIHBvcyksIGxhZ19wLCBfKSAtPlxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHwgQXN0LlByZXNlbnQgKChyYWcsIF8pLCByYWdfcCwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy5jb21wYXJlIGxhZyByYWcgPSAwXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBBc3Qubm9fbW9yZV9zaXRlX29uX3JpZ2h0IGZhbHNlIGxhZ19wIHJhZ19wKVxuICAgICAgICAgICAgICAgICAgICBhZGRlZFxuICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlJ1bGUgaW5kdWNlZCBkZWxldGlvbiBBTkQgY3JlYXRpb24gb2YgdGhlIGFnZW50ICVzXCIgbGFnKSlcbiAgICAgICAgICAgIGVyYXNlZFxuICAgICAgaW5cbiAgICAgIGxldCBtaXgsIGxsaW5rcyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAoYWNjLCBsYW5ub3QpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEFzdC5BYnNlbnQgcG9zIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJBYnNlbnQgYWdlbnQgYXJlIEthU2ltID4gMyBzeW50YXhcIiwgcG9zKSlcbiAgICAgICAgICAgIHwgQXN0LlByZXNlbnQgKCgoXywgcG9zKSBhcyBhZ2VudF9uYW1lKSwgc2l0ZXMsIG1vZGlmKSAtPlxuICAgICAgICAgICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgcG9zIG1vZGlmO1xuICAgICAgICAgICAgICBsZXQgc2ltcGxlX3BvcnRfbGlzdCwgY291bnRlcl9saXN0ID1cbiAgICAgICAgICAgICAgICBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBzaXRlc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgcmEsIGxhbm5vdCcgPVxuICAgICAgICAgICAgICAgIGFubm90YXRlX2Ryb3BwZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uXG4gICAgICAgICAgICAgICAgICB+cl9lZGl0X3N0eWxlOmZhbHNlIHNpZ3MgbGFubm90IGFnZW50X25hbWUgc2ltcGxlX3BvcnRfbGlzdFxuICAgICAgICAgICAgICAgICAgY291bnRlcl9saXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHJhIDo6IGFjYywgbGFubm90JylcbiAgICAgICAgICAoYWNjLCBmc3QgbGlua3NfYW5ub3QpXG4gICAgICAgICAgZXJhc2VkXG4gICAgICBpblxuICAgICAgbGV0IGNtaXgsIHJsaW5rcyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAoYWNjLCByYW5ub3QpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEFzdC5BYnNlbnQgcG9zIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJBYnNlbnQgYWdlbnQgYXJlIEthU2ltID4gMyBzeW50YXhcIiwgcG9zKSlcbiAgICAgICAgICAgIHwgQXN0LlByZXNlbnQgKCgoXywgcG9zKSBhcyBhZ2VudF9uYW1lKSwgc2l0ZXMsIG1vZGlmKSAtPlxuICAgICAgICAgICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgcG9zIG1vZGlmO1xuICAgICAgICAgICAgICBsZXQgc2ltcGxlX3BvcnRfbGlzdCwgY291bnRlcl9saXN0ID1cbiAgICAgICAgICAgICAgICBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBzaXRlc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgcmFubm90JywgeCcgPVxuICAgICAgICAgICAgICAgIGFubm90YXRlX2NyZWF0ZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uXG4gICAgICAgICAgICAgICAgICB+cl9lZGl0X3N0eWxlOmZhbHNlIHNpZ3MgP2NvbnRhY3RfbWFwIHJhbm5vdCBhZ2VudF9uYW1lXG4gICAgICAgICAgICAgICAgICBzaW1wbGVfcG9ydF9saXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCB4JycgPVxuICAgICAgICAgICAgICAgIENvdW50ZXJzX2NvbXBpbGVyLmFubm90YXRlX2NyZWF0ZWRfY291bnRlcnMgc2lncyBhZ2VudF9uYW1lXG4gICAgICAgICAgICAgICAgICBjb3VudGVyX2xpc3RcbiAgICAgICAgICAgICAgICAgIChhZGRfbGlua19jb250YWN0X21hcCA/Y29udGFjdF9tYXApXG4gICAgICAgICAgICAgICAgICB4J1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICB4JycgOjogYWNjLCByYW5ub3QnKVxuICAgICAgICAgIChbXSwgc25kIGxpbmtzX2Fubm90KVxuICAgICAgICAgIGFkZGVkXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gZmluYWxfcnVsZV9zYW5pdHkgfndhcm5pbmcgc2lncyAobGxpbmtzLCBybGlua3MpIG1peCBpblxuICAgICAgTGlzdC5yZXYgbWl4LCBMaXN0LnJldiBjbWl4XG4gIGluXG4gIGF1eFxuICAgICggKE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludE1hcC5lbXB0eSksXG4gICAgICAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSApXG4gICAgW10gKExpc3QuZmxhdHRlbiBsaHMpIChMaXN0LmZsYXR0ZW4gcmhzKVxuXG5sZXQgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZl92NCB+d2FybmluZyBzaWdzID9jb250YWN0X21hcCBsaHMgcmhzID1cbiAgbGV0IHN5bnRheF92ZXJzaW9uID0gQXN0LlY0IGluXG4gIGxldCByZWMgYXV4IGxpbmtzX2Fubm90IG1peCBjbWl4IGxocyByaHMgPVxuICAgIG1hdGNoIGxocywgcmhzIHdpdGhcbiAgICB8IFtdLCBbXSAtPiBsaW5rc19hbm5vdCwgbWl4LCBjbWl4XG4gICAgfCBBc3QuQWJzZW50IF8gOjogbHQsIEFzdC5BYnNlbnQgXyA6OiBydCAtPiBhdXggbGlua3NfYW5ub3QgbWl4IGNtaXggbHQgcnRcbiAgICB8ICggQXN0LlByZXNlbnQgKCgoXywgcG9zKSBhcyBhZ2VudF90eXBlKSwgc2l0ZXMsIGxtb2QpIDo6IGx0LFxuICAgICAgICBBc3QuQWJzZW50IF8gOjogcnQgKSAtPlxuICAgICAgcmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IHBvcyBsbW9kO1xuICAgICAgbGV0IHNpbXBsZV9wb3J0X2xpc3QsIGNvdW50ZXJfbGlzdCA9XG4gICAgICAgIHNlcGFyYXRlX3NpbXBsZV9wb3J0c19mcm9tX2NvdW50ZXJzIHNpdGVzXG4gICAgICBpblxuICAgICAgbGV0IHJhLCBsYW5ub3QnID1cbiAgICAgICAgYW5ub3RhdGVfZHJvcHBlZF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfnJfZWRpdF9zdHlsZTpmYWxzZSBzaWdzXG4gICAgICAgICAgKGZzdCBsaW5rc19hbm5vdCkgYWdlbnRfdHlwZSBzaW1wbGVfcG9ydF9saXN0IGNvdW50ZXJfbGlzdFxuICAgICAgaW5cbiAgICAgIGF1eCAobGFubm90Jywgc25kIGxpbmtzX2Fubm90KSAocmEgOjogbWl4KSBjbWl4IGx0IHJ0XG4gICAgfCAoIEFzdC5BYnNlbnQgXyA6OiBsdCxcbiAgICAgICAgQXN0LlByZXNlbnQgKCgoXywgcG9zKSBhcyBhZ2VudF90eXBlKSwgc2l0ZXMsIHJtb2QpIDo6IHJ0ICkgLT5cbiAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBwb3Mgcm1vZDtcbiAgICAgIGxldCBzaW1wbGVfcG9ydF9saXN0LCBjb3VudGVyX2xpc3QgPVxuICAgICAgICBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBzaXRlc1xuICAgICAgaW5cbiAgICAgIGxldCByYW5ub3QnLCB4JyA9XG4gICAgICAgIGFubm90YXRlX2NyZWF0ZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5yX2VkaXRfc3R5bGU6ZmFsc2Ugc2lnc1xuICAgICAgICAgID9jb250YWN0X21hcCAoc25kIGxpbmtzX2Fubm90KSBhZ2VudF90eXBlIHNpbXBsZV9wb3J0X2xpc3RcbiAgICAgIGluXG4gICAgICBsZXQgeCcnID1cbiAgICAgICAgQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfY3JlYXRlZF9jb3VudGVycyBzaWdzIGFnZW50X3R5cGUgY291bnRlcl9saXN0XG4gICAgICAgICAgKGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcClcbiAgICAgICAgICB4J1xuICAgICAgaW5cbiAgICAgIGF1eCAoZnN0IGxpbmtzX2Fubm90LCByYW5ub3QnKSBtaXggKHgnJyA6OiBjbWl4KSBsdCBydFxuICAgIHwgKCBBc3QuUHJlc2VudCAoKChsYWdlbnRfbmFtZSwgbHBvcykgYXMgYWdfdHkpLCBsYWdfcywgbG1vZCkgOjogbHQsXG4gICAgICAgIEFzdC5QcmVzZW50ICgocmFnZW50X25hbWUsIHJwb3MpLCByYWdfcywgcm1vZCkgOjogcnQgKSAtPlxuICAgICAgaWZcbiAgICAgICAgU3RyaW5nLmNvbXBhcmUgbGFnZW50X25hbWUgcmFnZW50X25hbWUgPSAwXG4gICAgICAgICYmIEFzdC5ub19tb3JlX3NpdGVfb25fcmlnaHQgdHJ1ZSBsYWdfcyByYWdfc1xuICAgICAgdGhlbiAoXG4gICAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBscG9zIGxtb2Q7XG4gICAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBycG9zIHJtb2Q7XG4gICAgICAgIGxldCBsYWdfcCwgbGFnX2MgPSBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBsYWdfcyBpblxuICAgICAgICBsZXQgcmFnX3AsIHJhZ19jID0gc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgcmFnX3MgaW5cbiAgICAgICAgbGV0IHJhLCBsaW5rc19hbm5vdCcgPVxuICAgICAgICAgIGFubm90YXRlX2FnZW50X3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXBcbiAgICAgICAgICAgIGFnX3R5IGxpbmtzX2Fubm90IGxhZ19wIHJhZ19wIGxhZ19jIHJhZ19jXG4gICAgICAgIGluXG4gICAgICAgIGF1eCBsaW5rc19hbm5vdCcgKHJhIDo6IG1peCkgY21peCBsdCBydFxuICAgICAgKSBlbHNlXG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoXCJMZWZ0IGhhbmQgc2lkZS9yaWdodCBoYW5kIHNpZGUgYWdlbnQgbWlzbWF0Y2hcIiwgcnBvcykpXG4gICAgfCAoQXN0LlByZXNlbnQgKChfLCBwb3MpLCBfLCBfKSB8IEFzdC5BYnNlbnQgcG9zKSA6OiBfLCBbXVxuICAgIHwgW10sIChBc3QuUHJlc2VudCAoKF8sIHBvcyksIF8sIF8pIHwgQXN0LkFic2VudCBwb3MpIDo6IF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIkxlZnQgaGFuZCBzaWRlL3JpZ2h0IGhhbmQgc2lkZSBhZ2VudCBtaXNtYXRjaFwiLCBwb3MpKVxuICBpblxuICBsZXQgcmVjIGF1eF9saW5lIGxpbmtzX2Fubm90IG1peCBjbWl4IGxocyByaHMgPVxuICAgIG1hdGNoIGxocywgcmhzIHdpdGhcbiAgICB8IFtdLCBbXSAtPlxuICAgICAgbGV0ICgpID0gZmluYWxfcnVsZV9zYW5pdHkgfndhcm5pbmcgc2lncyBsaW5rc19hbm5vdCBtaXggaW5cbiAgICAgIExpc3QucmV2IG1peCwgTGlzdC5yZXYgY21peFxuICAgIHwgaGwgOjogdGwsIGhyIDo6IHRyIC0+XG4gICAgICBsZXQgbGlua3NfYW5ub3QnLCBtaXgnLCBjbWl4JyA9IGF1eCBsaW5rc19hbm5vdCBtaXggY21peCBobCBociBpblxuICAgICAgYXV4X2xpbmUgbGlua3NfYW5ub3QnIG1peCcgY21peCcgdGwgdHJcbiAgICB8ICgoQXN0LlByZXNlbnQgKChfLCBwb3MpLCBfLCBfKSB8IEFzdC5BYnNlbnQgcG9zKSA6OiBfKSA6OiBfLCBbXVxuICAgIHwgW10sICgoQXN0LlByZXNlbnQgKChfLCBwb3MpLCBfLCBfKSB8IEFzdC5BYnNlbnQgcG9zKSA6OiBfKSA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJMZWZ0IGhhbmQgc2lkZS9yaWdodCBoYW5kIHNpZGUgYWdlbnQgbWlzbWF0Y2hcIiwgcG9zKSlcbiAgICB8IFtdIDo6IF8sIFtdIHwgW10sIFtdIDo6IF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIkludmFyaWFudCB2aW9sYXRpb24gaW4gYW5ub3RhdGVfbGhzX3dpdGguLi5cIikpXG4gIGluXG4gIGF1eF9saW5lXG4gICAgKCAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSxcbiAgICAgIChNb2RzLkludE1hcC5lbXB0eSwgTW9kcy5JbnRNYXAuZW1wdHkpIClcbiAgICBbXSBbXSBsaHMgcmhzXG5cbmxldCBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzID9jb250YWN0X21hcCBsaHMgcmhzID1cbiAgbWF0Y2ggc3ludGF4X3ZlcnNpb24gd2l0aFxuICB8IEFzdC5WMyAtPiBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmX3YzIH53YXJuaW5nIHNpZ3MgP2NvbnRhY3RfbWFwIGxocyByaHNcbiAgfCBBc3QuVjQgLT4gYW5ub3RhdGVfbGhzX3dpdGhfZGlmZl92NCB+d2FybmluZyBzaWdzID9jb250YWN0X21hcCBsaHMgcmhzXG5cbmxldCBhbm5vdGF0ZV9lZGl0X21peHR1cmUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5pc19ydWxlIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgKG0gOiBBc3QubWl4dHVyZSkgOlxuICAgIENvdW50ZXJzX2NvbXBpbGVyLnJ1bGVfbWl4dHVyZV93aXRoX2FnZW50X2NvdW50ZXJzXG4gICAgKiBDb3VudGVyc19jb21waWxlci5yYXdfbWl4dHVyZV93aXRoX2FnZW50X2NvdW50ZXJzID1cbiAgKCogbWl4IGlzIHRoZSBtaXh0dXJlIGZyb20gaW5pdGlhbCBzdGF0ZSBvZiB0aGUgcnVsZSwgY21peCBpcyB0aGUgbWl4dHVyZSBhZnRlciB0aGUgcnVsZSB3YXMgYXBwbGllZCAqKVxuICBsZXQgbGlua3NfYW5ub3QsIG1peCwgY21peCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIChsYW5ub3QsIGFjYywgbmV3cykgLT4gZnVuY3Rpb25cbiAgICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGxhbm5vdCwgYWNjLCBuZXdzXG4gICAgICAgICB8IEFzdC5QcmVzZW50IChhZ2VudF90eXBlLCBzaXRlcywgbW9kaWYpIC0+XG4gICAgICAgICAgIGxldCBzaW1wbGVfcG9ydF9saXN0LCBjb3VudGVyX2xpc3QgPVxuICAgICAgICAgICAgIHNlcGFyYXRlX3NpbXBsZV9wb3J0c19mcm9tX2NvdW50ZXJzIHNpdGVzXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIChtYXRjaCBtb2RpZiB3aXRoXG4gICAgICAgICAgIHwgQXN0Lk5vTW9kIC0+XG4gICAgICAgICAgICAgbGV0IGEsIGxhbm5vdCcgPVxuICAgICAgICAgICAgICAgYW5ub3RhdGVfZWRpdF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfmlzX3J1bGUgc2lnc1xuICAgICAgICAgICAgICAgICA/Y29udGFjdF9tYXAgYWdlbnRfdHlwZSBsYW5ub3Qgc2ltcGxlX3BvcnRfbGlzdCBjb3VudGVyX2xpc3RcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxhbm5vdCcsIGEgOjogYWNjLCBuZXdzXG4gICAgICAgICAgIHwgQXN0LkNyZWF0ZSAtPlxuICAgICAgICAgICAgIGxldCByYW5ub3QnLCB4JyA9XG4gICAgICAgICAgICAgICBhbm5vdGF0ZV9jcmVhdGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgICAgICAgICB+cl9lZGl0X3N0eWxlOnRydWUgc2lncyA/Y29udGFjdF9tYXAgKHNuZCBsYW5ub3QpIGFnZW50X3R5cGVcbiAgICAgICAgICAgICAgICAgc2ltcGxlX3BvcnRfbGlzdFxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0IHgnJyA9XG4gICAgICAgICAgICAgICBDb3VudGVyc19jb21waWxlci5hbm5vdGF0ZV9jcmVhdGVkX2NvdW50ZXJzIHNpZ3MgYWdlbnRfdHlwZVxuICAgICAgICAgICAgICAgICBjb3VudGVyX2xpc3RcbiAgICAgICAgICAgICAgICAgKGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcClcbiAgICAgICAgICAgICAgICAgeCdcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIChmc3QgbGFubm90LCByYW5ub3QnKSwgYWNjLCB4JycgOjogbmV3c1xuICAgICAgICAgICB8IEFzdC5FcmFzZSAtPlxuICAgICAgICAgICAgIGxldCByYSwgbGFubm90JyA9XG4gICAgICAgICAgICAgICBhbm5vdGF0ZV9kcm9wcGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgICAgICAgICB+cl9lZGl0X3N0eWxlOnRydWUgc2lncyAoZnN0IGxhbm5vdCkgYWdlbnRfdHlwZVxuICAgICAgICAgICAgICAgICBzaW1wbGVfcG9ydF9saXN0IGNvdW50ZXJfbGlzdFxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKGxhbm5vdCcsIHNuZCBsYW5ub3QpLCByYSA6OiBhY2MsIG5ld3MpKSlcbiAgICAgICggKCAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSxcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSApLFxuICAgICAgICBbXSxcbiAgICAgICAgW10gKVxuICAgICAgbVxuICBpblxuICBmaW5hbF9ydWxlX3Nhbml0eSA/d2FybmluZzpOb25lIHNpZ3MgbGlua3NfYW5ub3QgbWl4O1xuICBMaXN0LnJldiBtaXgsIExpc3QucmV2IGNtaXhcblxubGV0IGFubm90YXRlX2NyZWF0ZWRfbWl4dHVyZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXBcbiAgICAobSA6IEFzdC5taXh0dXJlKSA6XG4gICAgUmF3X21peHR1cmUuYWdlbnQgQ291bnRlcnNfY29tcGlsZXIud2l0aF9hZ2VudF9jb3VudGVycyBsaXN0ID1cbiAgbGV0IChyaHNfbGlua3Nfb25lLCBfKSwgY21peCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIChyYW5ub3QsIG5ld3MpIC0+IGZ1bmN0aW9uXG4gICAgICAgICB8IEFzdC5BYnNlbnQgcG9zIC0+XG4gICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAoXCJBYnNlbnQgYWdlbnQgY2Fubm90IG9jY3VycyBpbiBjcmVhdGVkIG1peHR1cmVzXCIsIHBvcykpXG4gICAgICAgICB8IEFzdC5QcmVzZW50IChhZ2VudF90eXBlLCBzaXRlcywgX21vZGlmKSAtPlxuICAgICAgICAgICBsZXQgc2ltcGxlX3BvcnRfbGlzdCwgY291bnRlcl9saXN0ID1cbiAgICAgICAgICAgICBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBzaXRlc1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgcmFubm90JywgeCcgPVxuICAgICAgICAgICAgIGFubm90YXRlX2NyZWF0ZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5yX2VkaXRfc3R5bGU6dHJ1ZVxuICAgICAgICAgICAgICAgc2lncyA/Y29udGFjdF9tYXAgcmFubm90IGFnZW50X3R5cGUgc2ltcGxlX3BvcnRfbGlzdFxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgeCcnID1cbiAgICAgICAgICAgICBDb3VudGVyc19jb21waWxlci5hbm5vdGF0ZV9jcmVhdGVkX2NvdW50ZXJzIHNpZ3MgYWdlbnRfdHlwZVxuICAgICAgICAgICAgICAgY291bnRlcl9saXN0XG4gICAgICAgICAgICAgICAoYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwKVxuICAgICAgICAgICAgICAgeCdcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgcmFubm90JywgeCcnIDo6IG5ld3MpKVxuICAgICAgKChNb2RzLkludE1hcC5lbXB0eSwgTW9kcy5JbnRNYXAuZW1wdHkpLCBbXSlcbiAgICAgIG1cbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBNb2RzLkludE1hcC5yb290IHJoc19saW5rc19vbmUgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSAoaSwgKF8sIF8sIF8sIHBvcywgXykpIC0+IExLYXBwYS5yYWlzZV9saW5rX29ubHlfb25lX29jY3VyZW5jZSBpIHBvc1xuICBpblxuICBMaXN0LnJldiBjbWl4XG5cbmxldCBnaXZlX3J1bGVfbGFiZWwgYmlkaXJlY3Rpb25hbCAoaWQsIHNldCkgcHJpbnRlciByID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IChzdWNjIGlkLCBzZXQpLCBGb3JtYXQuYXNwcmludGYgXCJyJWk6ICVhXCIgaWQgcHJpbnRlciByXG4gIHwgU29tZSAobGFiLCBwb3MpIC0+XG4gICAgbGV0IHNldCcgPSBNb2RzLlN0cmluZ1NldC5hZGQgbGFiIHNldCBpblxuICAgIGlmIHNldCA9PSBzZXQnIHRoZW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIkEgcnVsZSBuYW1lZCAnXCIgXiBsYWIgXiBcIicgYWxyZWFkeSBleGlzdHMuXCIsIHBvcykpXG4gICAgZWxzZSBpZiBiaWRpcmVjdGlvbmFsIHRoZW4gKFxuICAgICAgbGV0IHNldCcnID0gTW9kcy5TdHJpbmdTZXQuYWRkIChBc3QuZmxpcF9sYWJlbCBsYWIpIHNldCcgaW5cbiAgICAgIGlmIHNldCcgPT0gc2V0JycgdGhlblxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKFwiQSBydWxlIG5hbWVkICdcIiBeIEFzdC5mbGlwX2xhYmVsIGxhYiBeIFwiJyBhbHJlYWR5IGV4aXN0cy5cIiwgcG9zKSlcbiAgICAgIGVsc2VcbiAgICAgICAgKGlkLCBzZXQnJyksIGxhYlxuICAgICkgZWxzZVxuICAgICAgKGlkLCBzZXQnKSwgbGFiXG5cbmxldCBtaXh0dXJlX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXAgKHBvcyA6IExvYy50KVxuICAgIChtaXggOiBBc3QubWl4dHVyZSkgPVxuICBtYXRjaFxuICAgIGFubm90YXRlX2VkaXRfbWl4dHVyZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfmlzX3J1bGU6ZmFsc2Ugc2lnc1xuICAgICAgP2NvbnRhY3RfbWFwIG1peFxuICB3aXRoXG4gIHwgciwgW10gLT4gZnN0IChDb3VudGVyc19jb21waWxlci5jb21waWxlX2NvdW50ZXJfaW5fcnVsZSBzaWdzIHIgW10pXG4gIHwgXywgXyAtPlxuICAgIHJhaXNlIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yIChcIkEgbWl4dHVyZSBjYW5ub3QgY3JlYXRlIGFnZW50c1wiLCBwb3MpKVxuXG5sZXQgcmF3X21peHR1cmVfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzID9jb250YWN0X21hcFxuICAgIChtaXggOiBBc3QubWl4dHVyZSkgPVxuICBsZXQgYiA9XG4gICAgYW5ub3RhdGVfY3JlYXRlZF9taXh0dXJlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzID9jb250YWN0X21hcCBtaXhcbiAgaW5cbiAgc25kIChDb3VudGVyc19jb21waWxlci5jb21waWxlX2NvdW50ZXJfaW5fcnVsZSBzaWdzIFtdIGIpXG5cbmxldCBjb252ZXJ0X2FsZ192YXIgP21heF9hbGxvd2VkX3ZhciBhbGdzIGxhYiBwb3MgPVxuICBsZXQgaSA9XG4gICAgbWF0Y2ggTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gbGFiIGFsZ3Mgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIChsYWIgXiBcIiBpcyBub3QgYSBkZWNsYXJlZCB2YXJpYWJsZVwiLCBwb3MpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIG1heF9hbGxvd2VkX3ZhciB3aXRoXG4gICAgfCBTb21lIGogd2hlbiBqIDwgaSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiUmVmZXJlbmNlIHRvIG5vdCB5ZXQgZGVmaW5lZCAnXCIgXiBsYWIgXiBcIicgaXMgZm9yYmlkZGVuLlwiLCBwb3MpKVxuICAgIHwgTm9uZSB8IFNvbWUgXyAtPiAoKVxuICBpblxuICBpXG5cbmxldCBjb252ZXJ0X3Rva2VuX25hbWUgdGtfbmFtZSB0b2sgcG9zID1cbiAgbWF0Y2ggTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gdGtfbmFtZSB0b2sgd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAodGtfbmFtZSBeIFwiIGlzIG5vdCBhIGRlY2xhcmVkIHRva2VuXCIsIHBvcykpXG5cbmxldCByZWMgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzID9tYXhfYWxsb3dlZF92YXJcbiAgICAoYWxnLCBwb3MpID1cbiAgKCAobWF0Y2ggYWxnIHdpdGhcbiAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIGFzdCAtPlxuICAgICAgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0VcbiAgICAgICAgKG1peHR1cmVfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHBvcyBhc3QpXG4gICAgfCBBbGdfZXhwci5BTEdfVkFSIGxhYiAtPlxuICAgICAgQWxnX2V4cHIuQUxHX1ZBUiAoY29udmVydF9hbGdfdmFyID9tYXhfYWxsb3dlZF92YXIgYWxncyBsYWIgcG9zKVxuICAgIHwgQWxnX2V4cHIuVE9LRU5fSUQgdGtfbmFtZSAtPlxuICAgICAgQWxnX2V4cHIuVE9LRU5fSUQgKGNvbnZlcnRfdG9rZW5fbmFtZSB0a19uYW1lIHRvayBwb3MpXG4gICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIChleHByLCBhc3QpIC0+XG4gICAgICBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFXG4gICAgICAgICggYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIGV4cHIsXG4gICAgICAgICAgbWl4dHVyZV9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgcG9zIGFzdCApXG4gICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIChleHByLCB0a19uYW1lKSAtPlxuICAgICAgQWxnX2V4cHIuRElGRl9UT0tFTlxuICAgICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciBleHByLFxuICAgICAgICAgIGNvbnZlcnRfdG9rZW5fbmFtZSB0a19uYW1lIHRvayBwb3MgKVxuICAgIHwgKEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuQ09OU1QgXykgYXMgeCAtPiB4XG4gICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYikgLT5cbiAgICAgIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgKCBvcCxcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgYSxcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgYiApXG4gICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSAtPlxuICAgICAgQWxnX2V4cHIuVU5fQUxHX09QXG4gICAgICAgICggb3AsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIGEgKVxuICAgIHwgQWxnX2V4cHIuSUYgKGNvbmQsIHllcywgbm8pIC0+XG4gICAgICBBbGdfZXhwci5JRlxuICAgICAgICAoIGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgY29uZCxcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgeWVzLFxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciBubyApKSxcbiAgICBwb3MgKVxuXG5hbmQgYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyA/bWF4X2FsbG93ZWRfdmFyID1cbiAgZnVuY3Rpb25cbiAgfCAoKEFsZ19leHByLlRSVUUgfCBBbGdfZXhwci5GQUxTRSksIF8pIGFzIHggLT4geFxuICB8IEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgeCwgeSksIHBvcyAtPlxuICAgICggQWxnX2V4cHIuQklOX0JPT0xfT1BcbiAgICAgICAgKCBvcCxcbiAgICAgICAgICBib29sX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIHgsXG4gICAgICAgICAgYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB5ICksXG4gICAgICBwb3MgKVxuICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCB4KSwgcG9zIC0+XG4gICAgKCBBbGdfZXhwci5VTl9CT09MX09QXG4gICAgICAgICggb3AsXG4gICAgICAgICAgYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB4ICksXG4gICAgICBwb3MgKVxuICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCB4LCB5KSwgcG9zIC0+XG4gICAgKCBBbGdfZXhwci5DT01QQVJFX09QXG4gICAgICAgICggb3AsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIHgsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIHkgKSxcbiAgICAgIHBvcyApXG5cbmxldCBwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyA9IGZ1bmN0aW9uXG4gIHwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgXyBhcyB4IC0+IHhcbiAgfCBQcmltaXRpdmVzLkFsZ19wZXhwciB4IC0+XG4gICAgUHJpbWl0aXZlcy5BbGdfcGV4cHJcbiAgICAgIChhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgeClcblxuKCogSW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0aW9uIGZvciBhIHJ1bGUsIHVzZWQgYmV0d2VlbiBpbnRlcm5hbCB0cmFuc2xhdGlvbnMgKilcbnR5cGUgcnVsZV9pbnRlcl9yZXAgPSB7XG4gIGxhYmVsX29wdDogKHN0cmluZyAqIExvYy50KSBvcHRpb247XG4gIGJpZGlyZWN0aW9uYWw6IGJvb2w7ICgqIFRPRE8gY2hlY2sgKilcbiAgbWl4dHVyZTogTEthcHBhLnJ1bGVfYWdlbnQgQ291bnRlcnNfY29tcGlsZXIud2l0aF9hZ2VudF9jb3VudGVycyBsaXN0O1xuICBjcmVhdGVkX21peDogUmF3X21peHR1cmUuYWdlbnQgQ291bnRlcnNfY29tcGlsZXIud2l0aF9hZ2VudF9jb3VudGVycyBsaXN0O1xuICBybV90b2tlbjpcbiAgICAoKChBc3QubWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lICogTG9jLnQpICogKHN0cmluZyAqIExvYy50KSkgbGlzdDtcbiAgYWRkX3Rva2VuOlxuICAgICgoKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgKiBMb2MudCkgKiAoc3RyaW5nICogTG9jLnQpKSBsaXN0O1xuICBrX2RlZjogKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgKiBMb2MudDtcbiAga191bjpcbiAgICAoKChBc3QubWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lICogTG9jLnQpXG4gICAgKiAoKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgKiBMb2MudCkgb3B0aW9uKVxuICAgIG9wdGlvbjtcbiAgcG9zOiBMb2MudDtcbn1cbigqKiBJbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24gZm9yIHJ1bGUgdHlwZSAqKVxuXG4oKiogW2Fzc2VtYmxlX3J1bGVdIHRyYW5zbGF0ZXMgYSBydWxlX2ludGVyX3JlcCBpbnRvIGEgTEthcHBhLnJ1bGUgKilcbmxldCBhc3NlbWJsZV9ydWxlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiAocnVsZSA6IHJ1bGVfaW50ZXJfcmVwKVxuICAgIChzaWdzIDogU2lnbmF0dXJlLnMpICh0b2sgOiBpbnQgTW9kcy5TdHJpbmdNYXAudClcbiAgICAoYWxncyA6IGludCBNb2RzLlN0cmluZ01hcC50KSA6IExLYXBwYS5ydWxlID1cbiAgbGV0IChyX21peCwgcl9jcmVhdGVkKSA6IExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50ID1cbiAgICBDb3VudGVyc19jb21waWxlci5jb21waWxlX2NvdW50ZXJfaW5fcnVsZSBzaWdzIHJ1bGUubWl4dHVyZSBydWxlLmNyZWF0ZWRfbWl4XG4gIGluXG4gIGxldCByX2RlbHRhX3Rva2VucyA9XG4gICAgTGlzdC5yZXZfbWFwXG4gICAgICAoZnVuIChhbCwgKHRrLCBwb3MpKSAtPlxuICAgICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5VTl9BTEdfT1AgKE9wZXJhdG9yLlVNSU5VUywgYWwpKSksXG4gICAgICAgICAgY29udmVydF90b2tlbl9uYW1lIHRrIHRvayBwb3MgKSlcbiAgICAgIHJ1bGUucm1fdG9rZW5cbiAgICB8PiBMaXN0X3V0aWwucmV2X21hcF9hcHBlbmRcbiAgICAgICAgIChmdW4gKGFsLCAodGssIHBvcykpIC0+XG4gICAgICAgICAgICggYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzIGFsLFxuICAgICAgICAgICAgIGNvbnZlcnRfdG9rZW5fbmFtZSB0ayB0b2sgcG9zICkpXG4gICAgICAgICBydWxlLmFkZF90b2tlblxuICAgIHw+IExpc3QucmV2XG4gIGluXG4gIGxldCByX3JhdGUgPVxuICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyBydWxlLmtfZGVmXG4gIGluXG4gIGxldCByX3VuX3JhdGUgPVxuICAgIGxldCByX2Rpc3QgZCA9XG4gICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgP21heF9hbGxvd2VkX3ZhcjpOb25lIGRcbiAgICBpblxuICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgKGZ1biAodW5fcmF0ZScsIGRpc3QpIC0+XG4gICAgICAgIGxldCB1bl9yYXRlJycgPVxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhcjpOb25lIHVuX3JhdGUnXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGRpc3Qgd2l0aFxuICAgICAgICB8IFNvbWUgZCAtPiB1bl9yYXRlJycsIFNvbWUgKHJfZGlzdCBkKVxuICAgICAgICB8IE5vbmUgLT4gdW5fcmF0ZScnLCBOb25lKVxuICAgICAgcnVsZS5rX3VuXG4gIGluXG4gIHtcbiAgICBMS2FwcGEucl9taXg7XG4gICAgcl9jcmVhdGVkO1xuICAgIHJfZWRpdF9zdHlsZSA9IHJ1bGUuYmlkaXJlY3Rpb25hbDtcbiAgICByX2RlbHRhX3Rva2VucztcbiAgICByX3JhdGU7XG4gICAgcl91bl9yYXRlO1xuICB9XG5cbmxldCBtb2RpZl9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyBjb250YWN0X21hcCBtb2RpZlxuICAgIGFjYyA9XG4gIG1hdGNoIG1vZGlmIHdpdGhcbiAgfCBBc3QuQVBQTFkgKG5iLCAoYXN0X3J1bGUsIHBvcykpIC0+XG4gICAgbGV0IHJ1bGUgOiBydWxlX2ludGVyX3JlcCA9XG4gICAgICBtYXRjaCBhc3RfcnVsZS5Bc3QucmV3cml0ZSB3aXRoXG4gICAgICB8IEFzdC5FZGl0IHJ1bGVfY29udGVudCAtPlxuICAgICAgICBsZXQgbWl4dHVyZSwgY3JlYXRlZF9taXggPVxuICAgICAgICAgIGFubm90YXRlX2VkaXRfbWl4dHVyZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb246QXN0LlY0IH5pc19ydWxlOnRydWVcbiAgICAgICAgICAgIHNpZ3MgfmNvbnRhY3RfbWFwIHJ1bGVfY29udGVudC5taXhcbiAgICAgICAgaW5cbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsX29wdCA9IE5vbmU7XG4gICAgICAgICAgYmlkaXJlY3Rpb25hbCA9IHRydWU7XG4gICAgICAgICAgbWl4dHVyZTtcbiAgICAgICAgICBjcmVhdGVkX21peDtcbiAgICAgICAgICBybV90b2tlbiA9IFtdO1xuICAgICAgICAgIGFkZF90b2tlbiA9IHJ1bGVfY29udGVudC5kZWx0YV90b2tlbjtcbiAgICAgICAgICBrX2RlZiA9IGFzdF9ydWxlLmtfZGVmO1xuICAgICAgICAgIGtfdW4gPSBhc3RfcnVsZS5rX3VuO1xuICAgICAgICAgIHBvcztcbiAgICAgICAgfVxuICAgICAgfCBBc3QuQXJyb3cgcnVsZV9jb250ZW50IC0+XG4gICAgICAgIGxldCBtaXh0dXJlLCBjcmVhdGVkX21peCA9XG4gICAgICAgICAgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB+Y29udGFjdF9tYXBcbiAgICAgICAgICAgIHJ1bGVfY29udGVudC5saHMgcnVsZV9jb250ZW50LnJoc1xuICAgICAgICBpblxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWxfb3B0ID0gTm9uZTtcbiAgICAgICAgICBiaWRpcmVjdGlvbmFsID0gZmFsc2U7XG4gICAgICAgICAgbWl4dHVyZTtcbiAgICAgICAgICBjcmVhdGVkX21peDtcbiAgICAgICAgICBybV90b2tlbiA9IHJ1bGVfY29udGVudC5ybV90b2tlbjtcbiAgICAgICAgICBhZGRfdG9rZW4gPSBydWxlX2NvbnRlbnQuYWRkX3Rva2VuO1xuICAgICAgICAgIGtfZGVmID0gYXN0X3J1bGUua19kZWY7XG4gICAgICAgICAga191biA9IGFzdF9ydWxlLmtfdW47XG4gICAgICAgICAgcG9zO1xuICAgICAgICB9XG4gICAgaW5cbiAgICAoIEFzdC5BUFBMWVxuICAgICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyBuYixcbiAgICAgICAgICAoYXNzZW1ibGVfcnVsZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gcnVsZSBzaWdzIHRvayBhbGdzLCBwb3MpICksXG4gICAgICBhY2MgKVxuICB8IEFzdC5VUERBVEUgKChsYWIsIHBvcyksIGhvdykgLT5cbiAgICBsZXQgaSA9XG4gICAgICBPcHRpb25fdXRpbC51bnNvbWVfb3JfcmFpc2VcbiAgICAgICAgfmV4Y2VwOlxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKFwiVmFyaWFibGUgXCIgXiBsYWIgXiBcIiBpcyBub3QgZGVmaW5lZFwiLCBwb3MpKVxuICAgICAgICAoTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gbGFiIGFsZ3MpXG4gICAgaW5cbiAgICAoIEFzdC5VUERBVEVcbiAgICAgICAgKChpLCBwb3MpLCBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgaG93KSxcbiAgICAgIGkgOjogYWNjIClcbiAgfCBBc3QuU1RPUCBwIC0+XG4gICAgKCBBc3QuU1RPUFxuICAgICAgICAoTGlzdC5tYXAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzKSBwKSxcbiAgICAgIGFjYyApXG4gIHwgQXN0LlNOQVBTSE9UIChyYXcsIHApIC0+XG4gICAgKCBBc3QuU05BUFNIT1RcbiAgICAgICAgKCByYXcsXG4gICAgICAgICAgTGlzdC5tYXAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzKSBwXG4gICAgICAgICksXG4gICAgICBhY2MgKVxuICB8IEFzdC5ESU4gKHJlbCwgcCkgLT5cbiAgICAoIEFzdC5ESU5cbiAgICAgICAgKCByZWwsXG4gICAgICAgICAgTGlzdC5tYXAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzKSBwXG4gICAgICAgICksXG4gICAgICBhY2MgKVxuICB8IEFzdC5ESU5PRkYgcCAtPlxuICAgICggQXN0LkRJTk9GRlxuICAgICAgICAoTGlzdC5tYXAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzKSBwKSxcbiAgICAgIGFjYyApXG4gIHwgKEFzdC5QTE9URU5UUlkgfCBBc3QuQ0ZMT1dMQUJFTCAoXywgXykpIGFzIHggLT4geCwgYWNjXG4gIHwgQXN0LlBSSU5UIChwLCBwJykgLT5cbiAgICAoIEFzdC5QUklOVFxuICAgICAgICAoIExpc3QubWFwIChwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncykgcCxcbiAgICAgICAgICBMaXN0Lm1hcCAocHJpbnRfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MpIHAnXG4gICAgICAgICksXG4gICAgICBhY2MgKVxuICB8IEFzdC5DRkxPV01JWCAoYiwgKG0sIHBvcykpIC0+XG4gICAgKCBBc3QuQ0ZMT1dNSVggKGIsIChtaXh0dXJlX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBwb3MgbSwgcG9zKSksXG4gICAgICBhY2MgKVxuICB8IEFzdC5TUEVDSUVTX09GIChiLCBwLCAobSwgcG9zKSkgLT5cbiAgICAoIEFzdC5TUEVDSUVTX09GXG4gICAgICAgICggYixcbiAgICAgICAgICBMaXN0Lm1hcCAocHJpbnRfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MpIHAsXG4gICAgICAgICAgKG1peHR1cmVfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHBvcyBtLCBwb3MpICksXG4gICAgICBhY2MgKVxuXG5sZXQgcGVydHVyYmF0aW9uX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyBjb250YWN0X21hcFxuICAgICgoYWxhcm0sIHByZSwgbW9kcywgcG9zdCksIHBvcykgdXBfdmFycyA6XG4gICAgKF8sIF8sIF8sIF8pIEFzdC5wZXJ0dXJiYXRpb24gKiBpbnQgbGlzdCA9XG4gIGxldCBtb2RzJywgdXBfdmFycycgPVxuICAgIExpc3RfdXRpbC5mb2xkX3JpZ2h0X21hcFxuICAgICAgKG1vZGlmX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzIGNvbnRhY3RfbWFwKVxuICAgICAgbW9kcyB1cF92YXJzXG4gIGluXG4gIGxldCBtYXhfYWxsb3dlZF92YXIgPSBOb25lIGluXG4gICggKCAoIGFsYXJtLFxuICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAoYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIpXG4gICAgICAgICAgcHJlLFxuICAgICAgICBtb2RzJyxcbiAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgKGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyKVxuICAgICAgICAgIHBvc3QgKSxcbiAgICAgIHBvcyApLFxuICAgIHVwX3ZhcnMnIClcblxubGV0IGluaXRfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBjb250YWN0X21hcCA9IGZ1bmN0aW9uXG4gIHwgQXN0LklOSVRfTUlYICh3aG8sIHBvcykgLT5cbiAgICBBc3QuSU5JVF9NSVhcbiAgICAgIChyYXdfbWl4dHVyZV9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgfmNvbnRhY3RfbWFwIHdobywgcG9zKVxuICB8IEFzdC5JTklUX1RPSyBsYWIgLT5cbiAgICBBc3QuSU5JVF9UT0tcbiAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgKGZ1biAobGFiLCBwb3MpIC0+XG4gICAgICAgICAgIG1hdGNoIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIGxhYiB0b2sgd2l0aFxuICAgICAgICAgICB8IFNvbWUgeCAtPiB4LCBwb3NcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAobGFiIF4gXCIgaXMgbm90IGEgZGVjbGFyZWQgdG9rZW5cIiwgcG9zKSkpXG4gICAgICAgICBsYWIpXG5cbmxldCBhZGRfdW5fdmFyaWFibGUga191biBhY2MgcmF0ZV92YXIgPVxuICBtYXRjaCBrX3VuIHdpdGhcbiAgfCBOb25lIC0+IGFjYywgTm9uZVxuICB8IFNvbWUgKGssIGRpc3QpIC0+XG4gICAgbGV0IGFjY191biwgaycgPVxuICAgICAgaWYgQWxnX2V4cHIuaGFzX21peCAoTG9jLnYgaykgdGhlblxuICAgICAgICAoIChMb2MuYW5ub3Rfd2l0aF9kdW1teSByYXRlX3ZhciwgaykgOjogYWNjLFxuICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5BTEdfVkFSIHJhdGVfdmFyKSApXG4gICAgICBlbHNlXG4gICAgICAgIGFjYywga1xuICAgIGluXG4gICAgYWNjX3VuLCBTb21lIChrJywgZGlzdClcblxudHlwZSBhY2NfZnVuY3Rpb25fcnVsZXMgPSB7XG4gIHJ1bGVfbmFtZXM6IGludCAqIE1vZHMuU3RyaW5nU2V0LnQ7XG4gIGV4dHJhX3ZhcnM6XG4gICAgKHN0cmluZyBMb2MuYW5ub3RlZCAqIChBc3QubWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkKSBsaXN0O1xuICBjbGVhbmVkX3J1bGVzOiBydWxlX2ludGVyX3JlcCBsaXN0O1xufVxuXG4oKiogW25hbWVfYW5kX3B1cmlmeV0gY29tcGlsZXMgdGhlIHJ1bGVzIGZyb20gQXN0LnJ1bGVzIGludG8gcnVsZV9pbnRlcl9yZXAsIGNhbGxlZCBpbiBhIGZvbGQgKilcbmxldCBuYW1lX2FuZF9wdXJpZnlfcnVsZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB+Y29udGFjdF9tYXBcbiAgICAoYWNjIDogYWNjX2Z1bmN0aW9uX3J1bGVzKVxuICAgICgobGFiZWxfb3B0LCAoYXN0X3J1bGUsIHJfcG9zKSkgOlxuICAgICAgc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbiAqIEFzdC5ydWxlIExvYy5hbm5vdGVkKSA6IGFjY19mdW5jdGlvbl9ydWxlcyA9XG4gIGxldCBydWxlX25hbWVzJywgcnVsZV9sYWJlbCA9XG4gICAgZ2l2ZV9ydWxlX2xhYmVsIGFzdF9ydWxlLmJpZGlyZWN0aW9uYWwgYWNjLnJ1bGVfbmFtZXMgQXN0LnByaW50X2FzdF9ydWxlXG4gICAgICBhc3RfcnVsZSBsYWJlbF9vcHRcbiAgaW5cbiAgbGV0IGFjYycsIGtfZGVmID1cbiAgICBpZiBBbGdfZXhwci5oYXNfbWl4IChMb2MudiBhc3RfcnVsZS5rX2RlZikgdGhlbiAoXG4gICAgICBsZXQgcmF0ZV92YXIgPSBydWxlX2xhYmVsIF4gXCJfcmF0ZVwiIGluXG4gICAgICAoIChMb2MuYW5ub3Rfd2l0aF9kdW1teSByYXRlX3ZhciwgYXN0X3J1bGUua19kZWYpIDo6IGFjYy5leHRyYV92YXJzLFxuICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQUxHX1ZBUiByYXRlX3ZhcikgKVxuICAgICkgZWxzZVxuICAgICAgYWNjLmV4dHJhX3ZhcnMsIGFzdF9ydWxlLkFzdC5rX2RlZlxuICBpblxuICBsZXQgYWNjJycsIGtfdW4gPVxuICAgIGFkZF91bl92YXJpYWJsZSBhc3RfcnVsZS5rX3VuIGFjYycgKHJ1bGVfbGFiZWwgXiBcIl91bl9yYXRlXCIpXG4gIGluXG4gIG1hdGNoIGFzdF9ydWxlLnJld3JpdGUgd2l0aFxuICB8IEFzdC5FZGl0IGUgLT5cbiAgICBpZlxuICAgICAgYXN0X3J1bGUuYmlkaXJlY3Rpb25hbCB8fCBhc3RfcnVsZS5rX29wIDw+IE5vbmVcbiAgICAgIHx8IGFzdF9ydWxlLmtfb3BfdW4gPD4gTm9uZVxuICAgIHRoZW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIlJ1bGVzIGluIGVkaXQgbm90YXRpb24gY2Fubm90IGJlIGJpZGlyZWN0aW9uYWxcIiwgcl9wb3MpKTtcbiAgICBsZXQgbWl4dHVyZSwgY3JlYXRlZF9taXggPVxuICAgICAgYW5ub3RhdGVfZWRpdF9taXh0dXJlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+aXNfcnVsZTp0cnVlIHNpZ3NcbiAgICAgICAgfmNvbnRhY3RfbWFwIGUuQXN0Lm1peFxuICAgIGluXG4gICAge1xuICAgICAgcnVsZV9uYW1lcyA9IHJ1bGVfbmFtZXMnO1xuICAgICAgZXh0cmFfdmFycyA9IGFjYycnO1xuICAgICAgY2xlYW5lZF9ydWxlcyA9XG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbF9vcHQ7XG4gICAgICAgICAgYmlkaXJlY3Rpb25hbCA9IHRydWU7XG4gICAgICAgICAgbWl4dHVyZTtcbiAgICAgICAgICBjcmVhdGVkX21peDtcbiAgICAgICAgICBybV90b2tlbiA9IFtdO1xuICAgICAgICAgIGFkZF90b2tlbiA9IGUuQXN0LmRlbHRhX3Rva2VuO1xuICAgICAgICAgIGtfZGVmO1xuICAgICAgICAgIGtfdW47XG4gICAgICAgICAgcG9zID0gcl9wb3M7XG4gICAgICAgIH1cbiAgICAgICAgOjogYWNjLmNsZWFuZWRfcnVsZXM7XG4gICAgfVxuICB8IEFzdC5BcnJvdyBhIC0+XG4gICAgbGV0IG1peHR1cmUsIGNyZWF0ZWRfbWl4ID1cbiAgICAgIGFubm90YXRlX2xoc193aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgfmNvbnRhY3RfbWFwXG4gICAgICAgIGEuQXN0LmxocyBhLkFzdC5yaHNcbiAgICBpblxuICAgIGxldCBydWxlcycgPVxuICAgICAge1xuICAgICAgICBsYWJlbF9vcHQ7XG4gICAgICAgIGJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgbWl4dHVyZTtcbiAgICAgICAgY3JlYXRlZF9taXg7XG4gICAgICAgIHJtX3Rva2VuID0gYS5Bc3Qucm1fdG9rZW47XG4gICAgICAgIGFkZF90b2tlbiA9IGEuQXN0LmFkZF90b2tlbjtcbiAgICAgICAga19kZWY7XG4gICAgICAgIGtfdW47XG4gICAgICAgIHBvcyA9IHJfcG9zO1xuICAgICAgfVxuICAgICAgOjogYWNjLmNsZWFuZWRfcnVsZXNcbiAgICBpblxuICAgIGxldCBhY2MnJycsIHJ1bGVzJycgPVxuICAgICAgbWF0Y2ggYXN0X3J1bGUuYmlkaXJlY3Rpb25hbCwgYXN0X3J1bGUua19vcCB3aXRoXG4gICAgICB8IHRydWUsIFNvbWUgayB3aGVuIEFsZ19leHByLmhhc19taXggKExvYy52IGspIC0+XG4gICAgICAgIGxldCByYXRlX3ZhciA9IEFzdC5mbGlwX2xhYmVsIHJ1bGVfbGFiZWwgXiBcIl9yYXRlXCIgaW5cbiAgICAgICAgbGV0IHJhdGVfdmFyX3VuID0gQXN0LmZsaXBfbGFiZWwgcnVsZV9sYWJlbCBeIFwiX3VuX3JhdGVcIiBpblxuICAgICAgICBsZXQgYWNjX3VuLCBrX29wX3VuID1cbiAgICAgICAgICBhZGRfdW5fdmFyaWFibGUgYXN0X3J1bGUua19vcF91biBhY2MnJyByYXRlX3Zhcl91blxuICAgICAgICBpblxuICAgICAgICBsZXQgbWl4dHVyZSwgY3JlYXRlZF9taXggPVxuICAgICAgICAgIGFubm90YXRlX2xoc193aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgfmNvbnRhY3RfbWFwXG4gICAgICAgICAgICBhLkFzdC5yaHMgYS5Bc3QubGhzXG4gICAgICAgIGluXG4gICAgICAgICggKExvYy5hbm5vdF93aXRoX2R1bW15IHJhdGVfdmFyLCBrKSA6OiBhY2NfdW4sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWxfb3B0ID1cbiAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwIChmdW4gKGwsIHApIC0+IEFzdC5mbGlwX2xhYmVsIGwsIHApIGxhYmVsX29wdDtcbiAgICAgICAgICAgIGJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgICAgIG1peHR1cmU7XG4gICAgICAgICAgICBjcmVhdGVkX21peDtcbiAgICAgICAgICAgIHJtX3Rva2VuID0gYS5Bc3QuYWRkX3Rva2VuO1xuICAgICAgICAgICAgYWRkX3Rva2VuID0gYS5Bc3Qucm1fdG9rZW47XG4gICAgICAgICAgICBrX2RlZiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5BTEdfVkFSIHJhdGVfdmFyKTtcbiAgICAgICAgICAgIGtfdW4gPSBrX29wX3VuO1xuICAgICAgICAgICAgcG9zID0gcl9wb3M7XG4gICAgICAgICAgfVxuICAgICAgICAgIDo6IHJ1bGVzJyApXG4gICAgICB8IHRydWUsIFNvbWUgcmF0ZSAtPlxuICAgICAgICBsZXQgcmF0ZV92YXJfdW4gPSBBc3QuZmxpcF9sYWJlbCBydWxlX2xhYmVsIF4gXCJfdW5fcmF0ZVwiIGluXG4gICAgICAgIGxldCBhY2NfdW4sIGtfb3BfdW4gPVxuICAgICAgICAgIGFkZF91bl92YXJpYWJsZSBhc3RfcnVsZS5rX29wX3VuIGFjYycnIHJhdGVfdmFyX3VuXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtaXh0dXJlLCBjcmVhdGVkX21peCA9XG4gICAgICAgICAgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB+Y29udGFjdF9tYXBcbiAgICAgICAgICAgIGEuQXN0LnJocyBhLkFzdC5saHNcbiAgICAgICAgaW5cbiAgICAgICAgKCBhY2NfdW4sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWxfb3B0ID1cbiAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwIChmdW4gKGwsIHApIC0+IEFzdC5mbGlwX2xhYmVsIGwsIHApIGxhYmVsX29wdDtcbiAgICAgICAgICAgIGJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgICAgIG1peHR1cmU7XG4gICAgICAgICAgICBjcmVhdGVkX21peDtcbiAgICAgICAgICAgIHJtX3Rva2VuID0gYS5Bc3QuYWRkX3Rva2VuO1xuICAgICAgICAgICAgYWRkX3Rva2VuID0gYS5Bc3Qucm1fdG9rZW47XG4gICAgICAgICAgICBrX2RlZiA9IHJhdGU7XG4gICAgICAgICAgICBrX3VuID0ga19vcF91bjtcbiAgICAgICAgICAgIHBvcyA9IHJfcG9zO1xuICAgICAgICAgIH1cbiAgICAgICAgICA6OiBydWxlcycgKVxuICAgICAgfCBmYWxzZSwgTm9uZSAtPiBhY2MnJywgcnVsZXMnXG4gICAgICB8IGZhbHNlLCBTb21lIF8gfCB0cnVlLCBOb25lIC0+XG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoIFwiSW5jb21wYXRpYmxlIGFycm93IGFuZCBraW5lY3RpYyByYXRlIGZvciBpbnZlcnNlIGRlZmluaXRpb25cIixcbiAgICAgICAgICAgICAgIHJfcG9zICkpXG4gICAgaW5cbiAgICB7IHJ1bGVfbmFtZXMgPSBydWxlX25hbWVzJzsgZXh0cmFfdmFycyA9IGFjYycnJzsgY2xlYW5lZF9ydWxlcyA9IHJ1bGVzJycgfVxuXG50eXBlIHNpdGVfc2lnX3dpdGhfbGlua3NfYXNfbGlzdHMgPVxuICAoc3RyaW5nIExvYy5hbm5vdGVkICogc3RyaW5nIExvYy5hbm5vdGVkKSBsaXN0IFNpZ25hdHVyZS5zaXRlX3NpZ1xuKCoqIFRlbXBvcmFyeSB0eXBlIHRvIHN0b3JlIHNpdGUgc2lnbmF0dXJlIHdpdGggbGlzdCBsaW5rcyBpbnN0ZWFkIG9mIGFycmF5IGFycmF5IGxpbmtzICopXG5cbigqKiBbcHJlcGFyZV9hZ2VudF9zaWcgfnNpdGVzIGV2YWx1YXRlcyB0byAoc2l0ZV9zaWdzLCBjb3VudGVyX2xpc3QpIHdoaWNoIGRlc2NyaWJlIGRhdGEgdGhhdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSBTaWduYXR1cmUudCBmb3IgYSBzaW5nbGUgYWdlbnQqKVxubGV0IHByZXBhcmVfYWdlbnRfc2lnIH4oc2l0ZXMgOiBBc3QuY291bnRlcl9zaWcgQXN0LnNpdGUgbGlzdCkgOlxuICAgIHNpdGVfc2lnX3dpdGhfbGlua3NfYXNfbGlzdHMgTmFtZWREZWNscy50ICogc3RyaW5nIExvYy5hbm5vdGVkIGxpc3QgPVxuICBsZXQgKCAoc2l0ZV9zaWdzX3ByZV9uYW1lZGRlY2xzIDpcbiAgICAgICAgICAoc3RyaW5nIExvYy5hbm5vdGVkICogc2l0ZV9zaWdfd2l0aF9saW5rc19hc19saXN0cykgbGlzdCksXG4gICAgICAgIChjb3VudGVyX25hbWVzIDogc3RyaW5nIExvYy5hbm5vdGVkIGxpc3QpICkgPVxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biBzaXRlIChhY2Nfc2l0ZV9zaWdzLCBhY2NfY291bnRlcl9uYW1lcykgLT5cbiAgICAgICAgbWF0Y2ggc2l0ZSB3aXRoXG4gICAgICAgICgqIFRPRE8gc2VlIGlmIGNhbiByZW1vdmUgQXN0IGhlcmUgKilcbiAgICAgICAgfCBBc3QuUG9ydCBwIC0+XG4gICAgICAgICAgKCAoIHAucG9ydF9uYW1lLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgU2lnbmF0dXJlLmludGVybmFsX3N0YXRlID1cbiAgICAgICAgICAgICAgICAgIE5hbWVkRGVjbHMuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgIChUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgeCwgcG9zIC0+ICh4LCBwb3MpLCAoKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSwgcG9zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiRm9yYmlkZGVuIGludGVybmFsIHN0YXRlIGluc2lkZSBzaWduYXR1cmUgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgcC5wb3J0X2ludCk7XG4gICAgICAgICAgICAgICAgbGlua3MgPVxuICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBhY2NfbGlua3MnIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCAoIChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUgfCBMS2FwcGEuTE5LX0FOWSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjX2xpbmtzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgIHwgKExLYXBwYS5MTktfU09NRSB8IExLYXBwYS5MTktfVkFMVUUgXyksIHBvcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIkZvcmJpZGRlbiBsaW5rIHN0YXR1cyBpbnNpZGUgc2lnbmF0dXJlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IExLYXBwYS5MTktfVFlQRSAoYSwgYiksIF8gLT4gKGEsIGIpIDo6IGFjY19saW5rcycpXG4gICAgICAgICAgICAgICAgICAgICAgIFtdIHAucG9ydF9saW5rKTtcbiAgICAgICAgICAgICAgICBjb3VudGVyX2luZm8gPSBOb25lO1xuICAgICAgICAgICAgICB9IClcbiAgICAgICAgICAgIDo6IGFjY19zaXRlX3NpZ3MsXG4gICAgICAgICAgICBhY2NfY291bnRlcl9uYW1lcyApXG4gICAgICAgIHwgQ291bnRlciBjIC0+XG4gICAgICAgICAgKCogV2UgYXJlIHJlYWRpbmcgaGVyZSBhIHNpZ25hdHVyZSwgb25seSBDRVEgdGVzdHMgYXJlIGFjY2VwdGVkICopXG4gICAgICAgICAgKCAoIGMuQXN0LmNvdW50ZXJfc2lnX25hbWUsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpbnRlcm5hbF9zdGF0ZSA9IE5hbWVkRGVjbHMuY3JlYXRlIFt8fF07XG4gICAgICAgICAgICAgICAgKCogQWdlbnQgd2l0aCBjb3VudGVyIGNhbiBsaW5rIHRvIHBvcnQgW2JdIG9uIGNvdW50ZXIgYWdlbnQgW19fY291bnRlcl9hZ2VudF0gKilcbiAgICAgICAgICAgICAgICBsaW5rcyA9XG4gICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAoIExvYy5hbm5vdF93aXRoX2R1bW15IFwiYlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgXCJfX2NvdW50ZXJfYWdlbnRcIiApO1xuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIGNvdW50ZXJfaW5mbyA9XG4gICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2luZm9fbWluID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjLkFzdC5jb3VudGVyX3NpZ19taW4gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChTb21lIGksIF8pIC0+IFNvbWUgaVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoTm9uZSwgXykgLT4gTm9uZSk7XG4gICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9pbmZvX21heCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYy5Bc3QuY291bnRlcl9zaWdfbWF4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSBpLCBfKSAtPiBTb21lIGlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgKE5vbmUsIF8pIC0+IE5vbmUpO1xuICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfZGVmYXVsdF92YWx1ZSA9IGMuQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH0gKVxuICAgICAgICAgICAgOjogYWNjX3NpdGVfc2lncyxcbiAgICAgICAgICAgIGMuY291bnRlcl9zaWdfbmFtZSA6OiBhY2NfY291bnRlcl9uYW1lcyApKVxuICAgICAgc2l0ZXMgKFtdLCBbXSlcbiAgaW5cbiAgTmFtZWREZWNscy5jcmVhdGVfZnJvbV9saXN0IHNpdGVfc2lnc19wcmVfbmFtZWRkZWNscywgY291bnRlcl9uYW1lc1xuXG4oKiogW21ha2VfY291bnRlcl9hZ2VudF9zaXRlX3NpZ3MgY291bnRlcnNfcGVyX2FnZW50XSBldmFsdWF0ZXMgdG9cbiAgKGNvdW50ZXJfYWdlbnRfbmFtZSwgc2l0ZV9zaWdzX2NvdW50ZXJfYWdlbnQpIHdoaWNoIGRlc2NyaWJlIHRoZSBjb3VudGVyXG4gICAgICBhZ2VudCBhbmQgaXRzIHNpdGUgc2lnbmF0dXJlcyB3aXRoIHBvc3NpYmxlIGxpbmtzIHRvIG90aGVyIGFnZW50cy5cbiAgICAgIFtjb3VudGVyX2luZm9dIGFzc29jaWF0ZXMgZWFjaCBhZ2VudCB0byBhIGxpc3Qgb2YgY291bnRlciBwb3J0cywgb25lIGZvciBlYWNoIGRlZmluZWQgY291bnRlciAqKVxubGV0IG1ha2VfY291bnRlcl9hZ2VudF9zaXRlX3NpZ3NcbiAgICAoY291bnRlcnNfcGVyX2FnZW50IDogKChzdHJpbmcgKiBMb2MudCkgKiAoc3RyaW5nICogTG9jLnQpIGxpc3QpIGxpc3QpIDpcbiAgICAoc3RyaW5nICogTG9jLnQpXG4gICAgKiAoKHN0cmluZyAqIExvYy50KSAqIChzdHJpbmcgKiBMb2MudCkpIGxpc3QgU2lnbmF0dXJlLnNpdGVfc2lnIE5hbWVkRGVjbHMudFxuICAgID1cbiAgbGV0IGNvdW50ZXJfYWdlbnRfbmFtZSA9IFwiX19jb3VudGVyX2FnZW50XCIsIExvYy5kdW1teSBpblxuICBsZXQgYV9wb3J0X25hbWUgPSBcImFcIiwgTG9jLmR1bW15IGluXG4gICgqIGFmdGVyIHBvcnQgKilcbiAgbGV0IGJfcG9ydF9uYW1lID0gXCJiXCIsIExvYy5kdW1teSBpblxuXG4gICgqIGJlZm9yZSBwb3J0ICopXG5cbiAgKCogUG9ydCBbYV0gY2FuIGxpbmsgdG8gcG9ydCBiIG9mIGFnZW50IG9mIHR5cGUgY291bnRlciBhZ2VudCAqKVxuICBsZXQgYV9wb3J0X3NpZyA9XG4gICAge1xuICAgICAgU2lnbmF0dXJlLmludGVybmFsX3N0YXRlID0gTmFtZWREZWNscy5jcmVhdGUgW3x8XTtcbiAgICAgIGxpbmtzID0gU29tZSBbIGJfcG9ydF9uYW1lLCBjb3VudGVyX2FnZW50X25hbWUgXTtcbiAgICAgIGNvdW50ZXJfaW5mbyA9IE5vbmU7XG4gICAgfVxuICBpblxuICAoKiBQb3J0IFtiXSBjYW4gbGluayB0byBwb3J0IGEgb2YgYWdlbnQgb2YgdHlwZSBjb3VudGVyIGFnZW50XG4gICAqIE9SIGZvciBlYWNoIGFnZW50IFthZ2VudF9uYW1lXSB3aXRoIGNvdW50ZXJzLCB0byB0aGVpciBwb3J0c1xuICAgKiBbYWdlbnRfY291bnRlcl9wb3J0X25hbWVdICopXG4gIGxldCBiX2xpbmtzID1cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKGFnZW50X25hbWUsIGNvdW50ZXJzX2Zyb21fYWdlbnQpIGFjYyAtPlxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gYWdlbnRfY291bnRlcl9wb3J0X25hbWUgLT4gYWdlbnRfY291bnRlcl9wb3J0X25hbWUsIGFnZW50X25hbWUpXG4gICAgICAgICAgY291bnRlcnNfZnJvbV9hZ2VudFxuICAgICAgICBAIGFjYylcbiAgICAgIGNvdW50ZXJzX3Blcl9hZ2VudFxuICAgICAgWyBhX3BvcnRfbmFtZSwgY291bnRlcl9hZ2VudF9uYW1lIF1cbiAgaW5cbiAgbGV0IGJfcG9ydF9zaWcgPVxuICAgIHtcbiAgICAgIFNpZ25hdHVyZS5pbnRlcm5hbF9zdGF0ZSA9IE5hbWVkRGVjbHMuY3JlYXRlIFt8fF07XG4gICAgICBsaW5rcyA9IFNvbWUgYl9saW5rcztcbiAgICAgIGNvdW50ZXJfaW5mbyA9IE5vbmU7XG4gICAgfVxuICBpblxuICBsZXQgc2l0ZV9zaWdzX2NvdW50ZXJfYWdlbnQgPVxuICAgIE5hbWVkRGVjbHMuY3JlYXRlIFt8IGFfcG9ydF9uYW1lLCBhX3BvcnRfc2lnOyBiX3BvcnRfbmFtZSwgYl9wb3J0X3NpZyB8XVxuICBpblxuICBjb3VudGVyX2FnZW50X25hbWUsIHNpdGVfc2lnc19jb3VudGVyX2FnZW50XG5cbmxldCBhZ2VudF9zaWdzX29mX2FnZW50X3NpZ3Nfd2l0aF9saW5rc19hc19saXN0cyB+KGJ1aWxkX2NvbnRhY3RfbWFwIDogYm9vbClcbiAgICAoYWdlbnRfc2lnc19wcmUgOiBzaXRlX3NpZ193aXRoX2xpbmtzX2FzX2xpc3RzIE5hbWVkRGVjbHMudCBOYW1lZERlY2xzLnQpIDpcbiAgICBTaWduYXR1cmUudCBOYW1lZERlY2xzLnQgPVxuICBsZXQgc2l6ZV9zaWdzID0gTmFtZWREZWNscy5zaXplIGFnZW50X3NpZ3NfcHJlIGluXG4gIE5hbWVkRGVjbHMubWFwaVxuICAgIChmdW4gYWdfaWQgYWdfbmFtZSAtPlxuICAgICAgTmFtZWREZWNscy5tYXAgKGZ1biBzaXRlX25hbWVfYWcxIHNpdGVfc2lnIC0+XG4gICAgICAgICAgaWYgbm90IGJ1aWxkX2NvbnRhY3RfbWFwIHRoZW5cbiAgICAgICAgICAgIHsgc2l0ZV9zaWcgd2l0aCBTaWduYXR1cmUubGlua3MgPSBOb25lIH1cbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICgqIFVwZGF0ZSBsaW5rcyAqKVxuICAgICAgICAgICAgKCogVE9ETyBpbXByb3ZlIGNvbW1lbnQgYWJvdmUgKilcbiAgICAgICAgICAgIGxldCBzaXRlX2xpbmtzID1cbiAgICAgICAgICAgICAgQXJyYXkuaW5pdCAoc2l6ZV9zaWdzIC0gYWdfaWQpIChmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgQXJyYXkubWFrZVxuICAgICAgICAgICAgICAgICAgICAoTmFtZWREZWNscy5zaXplXG4gICAgICAgICAgICAgICAgICAgICAgIChOYW1lZERlY2xzLmVsdF92YWwgYWdlbnRfc2lnc19wcmUgKGkgKyBhZ19pZCkpKVxuICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgKGZ1biAoKChzaXRlX25hbWVfYWcyLCBwb3MpIGFzIHNpdGVfbmFtZSksICgoYWcyX25hbWUsIF8pIGFzIGFnKSkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYWcyX2lkID0gTmFtZWREZWNscy5lbHRfaWQgfmtpbmQ6XCJhZ1wiIGFnZW50X3NpZ3NfcHJlIGFnIGluXG4gICAgICAgICAgICAgICAgbGV0IHNpdGVfaWQgPVxuICAgICAgICAgICAgICAgICAgTmFtZWREZWNscy5lbHRfaWQgfmtpbmQ6XCJzaXRlIG5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAoTmFtZWREZWNscy5lbHRfdmFsIGFnZW50X3NpZ3NfcHJlIGFnMl9pZClcbiAgICAgICAgICAgICAgICAgICAgc2l0ZV9uYW1lXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBpZiBhZzJfaWQgPj0gYWdfaWQgdGhlblxuICAgICAgICAgICAgICAgICAgc2l0ZV9saW5rcy4oYWcyX2lkIC0gYWdfaWQpLihzaXRlX2lkKSA8LSB0cnVlO1xuICAgICAgICAgICAgICAgIGxldCBzaG91bGRfcmFpc2VfZm9yX21pc3NpbmdfbGluayA9XG4gICAgICAgICAgICAgICAgICBub3RcbiAgICAgICAgICAgICAgICAgICAgKExpc3QuZXhpc3RzXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gKCh4LCBfKSwgKHksIF8pKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBzaXRlX25hbWVfYWcxICYmIHkgPSBhZ19uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAoKE5hbWVkRGVjbHMuZWx0X3ZhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5hbWVkRGVjbHMuZWx0X3ZhbCBhZ2VudF9zaWdzX3ByZSBhZzJfaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXRlX2lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAubGlua3MgfD4gT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGlmIHNob3VsZF9yYWlzZV9mb3JfbWlzc2luZ19saW5rIHRoZW5cbiAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICggRm9ybWF0LmFzcHJpbnRmIFwiTm8gbGluayB0byAlcy4lcyBmcm9tICVzLiVzLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXRlX25hbWVfYWcxIGFnX25hbWUgc2l0ZV9uYW1lX2FnMiBhZzJfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKSkpXG4gICAgICAgICAgICAgIChPcHRpb25fdXRpbC51bnNvbWVfb3JfcmFpc2Ugc2l0ZV9zaWcubGlua3MpO1xuICAgICAgICAgICAgeyBzaXRlX3NpZyB3aXRoIFNpZ25hdHVyZS5saW5rcyA9IFNvbWUgc2l0ZV9saW5rcyB9XG4gICAgICAgICAgKSkpXG4gICAgYWdlbnRfc2lnc19wcmVcblxubGV0IGNyZWF0ZV9zaWdzIChsIDogQXN0LmFnZW50X3NpZyBsaXN0KSA6IFNpZ25hdHVyZS5zID1cbiAgKCogQ29udGFjdCBtYXAgc2hvdWxkIGJlIGJ1aWx0IG9ubHkgaWYgYSBzcGVjaWZpYyBsaW5rIGlzIGRlc2NyaWJlZCBpbiB0aGUgZGVmaW5pdGlvbiBvZiBzaWduYXR1cmUgKilcbiAgbGV0IGJ1aWxkX2NvbnRhY3RfbWFwIDogYm9vbCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjMCAtPiBmdW5jdGlvblxuICAgICAgICB8IEFzdC5BYnNlbnQgcG9zIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoXCJBYnNlbnQgYWdlbnQgYXJlIGZvcmJpZGRlbiBpbiBzaWduYXR1cmVcIiwgcG9zKSlcbiAgICAgICAgfCBBc3QuUHJlc2VudCAoXywgc2l0ZXMsIF8pIC0+XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gYWNjMSBzaXRlIC0+XG4gICAgICAgICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAgICAgICB8IEFzdC5Db3VudGVyIF8gLT4gYWNjMVxuICAgICAgICAgICAgICB8IEFzdC5Qb3J0IHAgLT5cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBhY2MyIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgIHwgKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSB8IExLYXBwYS5MTktfQU5ZKSwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGFjYzJcbiAgICAgICAgICAgICAgICAgICAgfCAoTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkxOS19WQUxVRSBfKSwgcG9zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiRm9yYmlkZGVuIGxpbmsgc3RhdHVzIGluc2lkZSBhIGRlZmluaXRpb24gb2YgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKSlcbiAgICAgICAgICAgICAgICAgICAgfCBMS2FwcGEuTE5LX1RZUEUgKF8sIF8pLCBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICBhY2MxIHAuQXN0LnBvcnRfbGluaylcbiAgICAgICAgICAgIGFjYzAgc2l0ZXMpXG4gICAgICBmYWxzZSBsXG4gIGluXG5cbiAgbGV0ICggKHNpZ3Nfd2l0aF9saW5rc19hc19saXN0cyA6XG4gICAgICAgICAgKHN0cmluZyBMb2MuYW5ub3RlZCAqIHNpdGVfc2lnX3dpdGhfbGlua3NfYXNfbGlzdHMgTmFtZWREZWNscy50KSBsaXN0KSxcbiAgICAgICAgKGNvdW50ZXJzX3Blcl9hZ2VudCA6XG4gICAgICAgICAgKHN0cmluZyBMb2MuYW5ub3RlZCAqIHN0cmluZyBMb2MuYW5ub3RlZCBsaXN0KSBsaXN0KSApID1cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gYWdlbnQgKGFjY19zaWdzLCBhY2NfY291bnRlcnNfcGVyX2FnZW50KSAtPlxuICAgICAgICBtYXRjaCBhZ2VudCB3aXRoXG4gICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGFjY19zaWdzLCBhY2NfY291bnRlcnNfcGVyX2FnZW50XG4gICAgICAgIHwgQXN0LlByZXNlbnQgKGFnZW50X25hbWUsIHNpdGVzLCBfKSAtPlxuICAgICAgICAgIGxldCBzaXRlX3NpZ3NfbmQsIGNvdW50ZXJzX2FnZW50ID0gcHJlcGFyZV9hZ2VudF9zaWcgfnNpdGVzIGluXG4gICAgICAgICAgbGV0IGNvdW50ZXJzJyA9XG4gICAgICAgICAgICBpZiBjb3VudGVyc19hZ2VudCA9IFtdIHRoZW5cbiAgICAgICAgICAgICAgYWNjX2NvdW50ZXJzX3Blcl9hZ2VudFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoYWdlbnRfbmFtZSwgY291bnRlcnNfYWdlbnQpIDo6IGFjY19jb3VudGVyc19wZXJfYWdlbnRcbiAgICAgICAgICBpblxuICAgICAgICAgIChhZ2VudF9uYW1lLCBzaXRlX3NpZ3NfbmQpIDo6IGFjY19zaWdzLCBjb3VudGVycycpXG4gICAgICBsIChbXSwgW10pXG4gIGluXG5cbiAgbGV0IGFnZW50X3NpZ3MgOiBTaWduYXR1cmUudCBOYW1lZERlY2xzLnQgPVxuICAgIChpZiBjb3VudGVyc19wZXJfYWdlbnQgPSBbXSB0aGVuXG4gICAgICAgc2lnc193aXRoX2xpbmtzX2FzX2xpc3RzXG4gICAgIGVsc2VcbiAgICAgICBtYWtlX2NvdW50ZXJfYWdlbnRfc2l0ZV9zaWdzIGNvdW50ZXJzX3Blcl9hZ2VudFxuICAgICAgIDo6IHNpZ3Nfd2l0aF9saW5rc19hc19saXN0cylcbiAgICB8PiBOYW1lZERlY2xzLmNyZWF0ZV9mcm9tX2xpc3RcbiAgICB8PiBhZ2VudF9zaWdzX29mX2FnZW50X3NpZ3Nfd2l0aF9saW5rc19hc19saXN0cyB+YnVpbGRfY29udGFjdF9tYXBcbiAgaW5cblxuICAoKiBUT0RPIHNlZSBhZ2VudF9zaWdzIG5hbWluZ3MgKilcbiAgU2lnbmF0dXJlLmNyZWF0ZSB+Y291bnRlcnNfcGVyX2FnZW50IGFnZW50X3NpZ3NcblxubGV0IGluaXRfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvbnRhY3RfbWFwIHRvayBhbGdzIGluaXRzID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuIChleHByLCBpbmkpIC0+XG4gICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyBleHByLFxuICAgICAgICBpbml0X29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgY29udGFjdF9tYXAgaW5pICkpXG4gICAgaW5pdHNcblxudHlwZSBhc3RfY29tcGlsZWRfZGF0YSA9IHtcbiAgYWdlbnRzX3NpZzogU2lnbmF0dXJlLnM7XG4gIGNvbnRhY3RfbWFwOiBDb250YWN0X21hcC50O1xuICB0b2tlbl9uYW1lczogdW5pdCBOYW1lZERlY2xzLnQ7XG4gIGFsZ192YXJzX2ZpbmRlcjogaW50IE1vZHMuU3RyaW5nTWFwLnQ7XG4gIHVwZGF0ZWRfYWxnX3ZhcnM6IGludCBsaXN0O1xuICByZXN1bHQ6XG4gICAgKCBBc3QuYWdlbnQsXG4gICAgICBBc3QuYWdlbnRfc2lnLFxuICAgICAgTEthcHBhLnJ1bGVfbWl4dHVyZSxcbiAgICAgIFJhd19taXh0dXJlLnQsXG4gICAgICBpbnQsXG4gICAgICBMS2FwcGEucnVsZSApXG4gICAgQXN0LmNvbXBpbDtcbiAgICAgICgqKiBDb21waWxlZCBkYXRhIHdoZXJlIGlkZW50aWZpZXJzIGFyZSBpIEFzdC5jb21waWwgd2hlcmUgaWRlbnRpZmllcnNcbiAgICAgKiBhcmUgaW50ZWdlcnMgYW5kIG5vdCBzdHJpbmcsIHN5bnRhY3RpYyBzdWdhciBvbiBydWxlcyBhcmUgZXhwYW5zZWRcbiAgICAgKiAoc3ludGFjdGljIHN1Z2FyIG9uIG1peHR1cmUgYXJlIG5vdCkgKilcbn1cblxubGV0IGludmVydGVkX2NvdW50ZXJfbmFtZSAobmFtZSA6IHN0cmluZykgOiBzdHJpbmcgPVxuICBuYW1lIF4gU2lnbmF0dXJlLmludmVydGVkX2NvdW50ZXJfc3VmZml4XG5cbigqKiBFdmFsdWF0ZXMgdG8gYSBhc3RfY29tcGlsIHdoZXJlIGNsdGUgdGVzdHMgaGF2ZSBiZWVuIGNoYW5nZWQgdG8gY2d0ZSB0ZXN0cy5cbiAqIEZvciB0aGlzLCBmb3IgZWFjaCBjb3VudGVyIHdoZXJlIGEgQ0xURSB0ZXN0IGlzIHByZXNlbnQsIHdob3NlIHZhbHVlcyBhcmUgaW4gW1xcW2EsIGJcXF1dLCBpbml0aWFsaXplZCBhdCBbaV0gYW5kIGFkZCBhIG5ldyBjb3VudGVyIGJlbG9uZ2luZyBpbiBbYSwgYl0gaW5pdGlhbGl6ZWQgYXQgW2ErYi1pXS5cbiAqIEVhY2ggdGVzdCBbPiB2YWx1ZV0gaXMgdGhlbiB0cmFuc2xhdGVkIGludG8gYSB0ZXN0IHRvIHRoZSBcImludmVydGVkXCIgY291bnRlciBhcyBbPCBhK2ItdmFsdWVdLlxuICogRWFjaCBkZWx0YSBbKyBkZWx0YV0gaXMgdHJhbnNsYXRlZCBpbnRvIGEgWy0gZGVsdGFdICopXG5cblxuXG5cbmxldCB0cmFuc2xhdGVfY2x0ZV9pbnRvX2NndGUgKGFzdF9jb21waWwgOiBBc3QucGFyc2luZ19jb21waWwpID1cbiAgbGV0IGNvdW50ZXJfZm9sZF9pbl9taXh0dXJlIGYgYWNjIG1peHR1cmUgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYzIgYWdlbnRfbGlzdCAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjMyBhZ2VudCAtPlxuICAgICAgICAgICAgbWF0Y2ggYWdlbnQgd2l0aFxuICAgICAgICAgICAgfCBBc3QuQWJzZW50IF8gLT4gYWNjM1xuICAgICAgICAgICAgfCBBc3QuUHJlc2VudCAoYWdlbnRfbmFtZSwgc2l0ZV9saXN0LCBfKSAtPlxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gYWNjNCBzaXRlIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBzaXRlIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgQXN0LlBvcnQgXyAtPiBhY2M0XG4gICAgICAgICAgICAgICAgICB8IENvdW50ZXIgY291bnRlciAtPiBmIGFjYzQgKExvYy52IGFnZW50X25hbWUpIGNvdW50ZXIpXG4gICAgICAgICAgICAgIGFjYzMgc2l0ZV9saXN0KVxuICAgICAgICBhY2MyIGFnZW50X2xpc3QpXG4gICAgICBhY2MgbWl4dHVyZVxuICBpblxuICBsZXQgcmVjIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGV4cHIgPVxuICAgIG1hdGNoIExvYy52IGV4cHIgd2l0aFxuICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUCAoXywgZTEsIGUyKSAtPlxuICAgICAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIChjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlMSkgZTJcbiAgICB8IFVOX0FMR19PUCAoXywgZSkgfCBESUZGX1RPS0VOIChlLCBfKSAtPlxuICAgICAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlXG4gICAgfCBTVEFURV9BTEdfT1AgXyB8IEFMR19WQVIgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIC0+IGFjY1xuICAgIHwgS0FQUEFfSU5TVEFOQ0UgbWl4dHVyZSAtPlxuICAgICAgICBjb3VudGVyX2ZvbGRfaW5fbWl4dHVyZSBmIGFjYyBtaXh0dXJlXG4gICAgfCBJRiAoZWIsIGUxLCBlMikgLT5cbiAgICAgICAgY291bnRlcl9mb2xkX2luX2JleHByIGYgKGNvdW50ZXJfZm9sZF9pbl9leHByIGYgKGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGUxKSBlMikgZWJcbiAgICB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGUsIG1peHR1cmUpIC0+XG4gICAgICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgKGNvdW50ZXJfZm9sZF9pbl9taXh0dXJlIGYgYWNjIG1peHR1cmUpIGVcbiAgYW5kIGNvdW50ZXJfZm9sZF9pbl9iZXhwciBmIGFjYyBiZXhwciA9XG4gICAgbWF0Y2ggTG9jLnYgYmV4cHIgd2l0aFxuICAgIHwgVFJVRSB8IEZBTFNFIC0+IGFjY1xuICAgIHwgQklOX0JPT0xfT1AgKF8sIGJlMSwgYmUyKSAtPlxuICAgICAgICBjb3VudGVyX2ZvbGRfaW5fYmV4cHIgZiAoY291bnRlcl9mb2xkX2luX2JleHByIGYgYWNjIGJlMSkgYmUyXG4gICAgfCBVTl9CT09MX09QIChfLCBiZSkgLT5cbiAgICAgICAgY291bnRlcl9mb2xkX2luX2JleHByIGYgYWNjIGJlXG4gICAgfCBDT01QQVJFX09QIChfLCBlMSwgZTIpIC0+XG4gICAgICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgKGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGUxKSBlMlxuICBpblxuICBsZXQgY291bnRlcl9mb2xkX2luX2JleHByX29wdCBmIGFjYyBiZXhwciA9XG4gICAgbWF0Y2ggYmV4cHIgd2l0aFxuICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgfCBTb21lIGUgLT4gY291bnRlcl9mb2xkX2luX2JleHByIGYgYWNjIGVcbiAgaW5cbiAgbGV0IGNvdW50ZXJfZm9sZF9pbl9ydWxlIGYgYWNjIHJ1bGUgPVxuICAgIGxldCBydWxlIDogQXN0LnJ1bGUgPSBydWxlIHw+IExvYy52IGluXG4gICAgbGV0IGFjYyA9XG4gICAgICBtYXRjaCBydWxlLnJld3JpdGUgd2l0aFxuICAgICAgfCBBc3QuRWRpdCBfIC0+IGFjYyAoKiBubyBjb3VudGVyIHRlc3QgYWxsb3dlZCBpbiBlZGl0IHJ1bGUgKikgKCogdG8gZG8gKilcbiAgICAgIHwgQXN0LkFycm93IGNvbnRlbnQgLT4gY291bnRlcl9mb2xkX2luX21peHR1cmUgZiBhY2MgY29udGVudC5saHNcbiAgICBpblxuICAgIGxldCBhY2MgPVxuICAgICAgbWF0Y2ggcnVsZS5rX3VuIHdpdGggTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIChlLCBTb21lIGUnKSAtPlxuICAgICAgICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgKGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGUnICkgZVxuICAgICAgICB8IFNvbWUgKGUsIE5vbmUpIC0+IGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGVcbiAgICBpblxuICAgIGxldCBhY2MgPSBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBydWxlLmtfZGVmIGluXG4gICAgbGV0IGFjYyA9XG4gICAgICBtYXRjaCBydWxlLmtfb3BfdW4gd2l0aCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgKGUsIFNvbWUgZScpIC0+XG4gICAgICAgICAgY291bnRlcl9mb2xkX2luX2V4cHIgZiAoY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgZScgKSBlXG4gICAgICAgIHwgU29tZSAoZSwgTm9uZSkgLT4gY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgZVxuICAgIGluXG4gICAgbGV0IGFjYz1cbiAgICAgIG1hdGNoIHJ1bGUua19vcCB3aXRoIE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSBlIC0+IGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGVcbiAgICBpblxuICAgIGFjY1xuICBpblxuICBsZXQgY291bnRlcl9mb2xkX2luX3ZhcmlhYmxlIGYgYWNjIHZhcmlhYmxlX2RlZiA9XG4gICAgY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgKHNuZCB2YXJpYWJsZV9kZWYpXG4gIGluXG4gIGxldCBjb3VudGVyX2ZvbGRfaW5fb2JzZXJ2YWJsZSBmIGFjYyBvYnNfZGVmID1cbiAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBvYnNfZGVmXG4gIGluXG4gIGxldCBjb3VudGVyX2ZvbGRfaW5faW5pdCBmIGFjYyBpbml0ID1cbiAgICBsZXQgZSxfID0gaW5pdCBpblxuICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGVcbiAgaW5cbiAgbGV0IGNvdW50ZXJfZm9sZF9pbl9wcmludCBmIGFjYyBwID1cbiAgICBtYXRjaCBwIHdpdGhcbiAgICB8IFByaW1pdGl2ZXMuU3RyX3BleHByIF8gLT4gYWNjXG4gICAgfCBBbGdfcGV4cHIgZSAtPiBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlXG4gIGluXG4gIGxldCBjb3VudGVyX2ZvbGRfaW5fbW9kIGYgYWNjIG1vZF9kZWYgPVxuICAgIG1hdGNoIG1vZF9kZWYgd2l0aFxuICAgIHwgQXN0LkFQUExZIChlLHIpIC0+XG4gICAgICAgY291bnRlcl9mb2xkX2luX2V4cHIgZiAoY291bnRlcl9mb2xkX2luX3J1bGUgZiBhY2MgcikgZVxuICAgIHwgVVBEQVRFIChfLGUpIC0+XG4gICAgICAgY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgZVxuICAgIHwgU1RPUCBsIHwgU05BUFNIT1QgKF8sbCkgfCBESU4gKF8sIGwpIHwgRElOT0ZGIGwgLT5cbiAgICAgICBMaXN0LmZvbGRfbGVmdCAoY291bnRlcl9mb2xkX2luX3ByaW50IGYpIGFjYyBsXG4gICAgfCBQUklOVCAobCwgbCcpIC0+XG4gICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoY291bnRlcl9mb2xkX2luX3ByaW50IGYpXG4gICAgICAgICAgKChMaXN0LmZvbGRfbGVmdCAoY291bnRlcl9mb2xkX2luX3ByaW50IGYpIGFjYyBsJykpXG4gICAgICAgICAgIGxcbiAgICB8IFBMT1RFTlRSWVxuICAgIHwgQ0ZMT1dMQUJFTCBfIC0+IGFjY1xuICAgIHwgQ0ZMT1dNSVggKF8sIHApIC0+XG4gICAgICBjb3VudGVyX2ZvbGRfaW5fbWl4dHVyZSBmIGFjYyAoTG9jLnYgcClcbiAgICB8IFNQRUNJRVNfT0YgKF8sIGwsIG0pIC0+XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoY291bnRlcl9mb2xkX2luX3ByaW50IGYpXG4gICAgICAgICAgICAoY291bnRlcl9mb2xkX2luX21peHR1cmUgZiBhY2MgKExvYy52IG0pKVxuICAgICAgICAgICAgbFxuICBpblxuICBsZXQgY291bnRlcl9mb2xkX2luX3BlcnR1cmJhdGlvbiBmIGFjYyBwZXJ0dXJiYXRpb24gPVxuICAgIGxldCAoXyxiMV9vcHQsbW9kX2xpc3QsYjJfb3B0KSA9IExvYy52IHBlcnR1cmJhdGlvbiAgaW5cbiAgICBjb3VudGVyX2ZvbGRfaW5fYmV4cHJfb3B0IGZcbiAgICAgIChjb3VudGVyX2ZvbGRfaW5fYmV4cHJfb3B0IGZcbiAgICAgICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGNvdW50ZXJfZm9sZF9pbl9tb2QgZilcbiAgICAgICAgICAgICAgYWNjIG1vZF9saXN0KVxuICAgICAgICAgIGIyX29wdClcbiAgICAgIGIxX29wdFxuICBpblxuICBsZXQgY291bnRlcl9mb2xkIGYgaW5pdCAgPVxuICAgIGxldCBsMSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGFjYyByIC0+IGNvdW50ZXJfZm9sZF9pbl9ydWxlIGYgYWNjIChzbmQgcikpXG4gICAgICAgIGluaXQgYXN0X2NvbXBpbC5ydWxlc1xuICAgIGluXG4gICAgbGV0IGwyID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGNvdW50ZXJfZm9sZF9pbl92YXJpYWJsZSBmKVxuICAgICAgICAgIGwxIGFzdF9jb21waWwudmFyaWFibGVzXG4gICAgaW5cbiAgICBsZXQgbDMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoY291bnRlcl9mb2xkX2luX29ic2VydmFibGUgZilcbiAgICAgICAgICBsMiBhc3RfY29tcGlsLm9ic2VydmFibGVzXG4gICAgaW5cbiAgICBsZXQgbDQgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoY291bnRlcl9mb2xkX2luX2luaXQgZilcbiAgICAgICAgICBsMyBhc3RfY29tcGlsLmluaXRcbiAgICBpblxuICAgIGxldCBsNSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChjb3VudGVyX2ZvbGRfaW5fcGVydHVyYmF0aW9uIGYpXG4gICAgICAgICAgbDQgYXN0X2NvbXBpbC5wZXJ0dXJiYXRpb25zXG4gICAgaW5cbiAgICBsNVxuICBpblxuICAoKiBGaW5kIGNvdW50ZXJzIHRoYXQgaGF2ZSBDTFRFIHRlc3RzLCBhbmQgYnVpbGQgbGlzdDogYWdlbnRfbmFtZSwgY291bnRlcl9uYW1lLCBzdW1fYm91bmRzX3JlZiBsaXN0LlxuICAgKiBzdW1fYm91bmRzX3JlZiBpcyB0aGVuIGZpbGxlZCB3aGVuIHJlYWRpbmcgdGhlIHNpZ25hdHVyZSBhbmQgdXNlZCB0byBzcGVjaWZ5IGZvciBpbnZlcnRlZCBjb3VudGVyIGluaXQgdmFsdWUgb3IgdGVzdCB2YWx1ZSBhcyBbc3VtX2JvdW5kc19yZWYgLSB2YWx1ZV0gKilcbiAgbGV0IGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0cyA6XG4gICAgTW9kcy5TdHJpbmdTZXQudCBNb2RzLlN0cmluZ01hcC50ID1cbiAgICBjb3VudGVyX2ZvbGQgKGZ1biBtYXAgYWdlbnRfbmFtZSBjb3VudGVyIC0+XG4gICAgICAgIGxldCBjb3VudGVyX25hbWUgPSBMb2MudiBjb3VudGVyLmNvdW50ZXJfbmFtZSBpblxuICAgICAgICAoKiBGb3JiaWQgcHJlZml4IHRvIGF2b2lkIG5vbnNlbnNlIGluIGNvdW50ZXIgZGVmaW5pdGlvbiAqKVxuICAgICAgICBpZiBTaWduYXR1cmUuaXNfaW52ZXJ0ZWRfY291bnRlciBjb3VudGVyX25hbWUgdGhlblxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKCBcImNhbm5vdCBlbmQgY291bnRlciBuYW1lIGJ5IFxcXCJcIlxuICAgICAgICAgICAgICAgICBeIFNpZ25hdHVyZS5pbnZlcnRlZF9jb3VudGVyX3N1ZmZpeCBeIFwiXFxcIlwiLFxuICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGNvdW50ZXIuY291bnRlcl9uYW1lICkpO1xuICAgICAgICAoKiBSZXR1cm4gY291bnRlciBuYW1lIGFsb25nIHdpdGggbWF0Y2hpbmcgYWdlbnRfbmFtZSAqKVxuICAgICAgICBtYXRjaCBPcHRpb25fdXRpbC5tYXAgTG9jLnYgY291bnRlci5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgICAgICB8IFNvbWUgKEFzdC5DTFRFIF8pIC0+XG4gICAgICAgICAgbGV0IHNpdGVzID0gTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0IE1vZHMuU3RyaW5nU2V0LmVtcHR5IGFnZW50X25hbWUgbWFwIGluXG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIE1vZHMuU3RyaW5nU2V0Lm1lbSBjb3VudGVyX25hbWUgc2l0ZXNcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBtYXBcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5hZGQgYWdlbnRfbmFtZVxuICAgICAgICAgICAgICAgIChNb2RzLlN0cmluZ1NldC5hZGQgY291bnRlcl9uYW1lIHNpdGVzKVxuICAgICAgICAgICAgICAgIG1hcFxuICAgICAgICB8IFNvbWUgKEFzdC5DRVEgXykgfCBTb21lIChBc3QuQ0dURSBfKSB8IFNvbWUgKEFzdC5DVkFSIF8pIHwgTm9uZSAtPiBtYXApIE1vZHMuU3RyaW5nTWFwLmVtcHR5XG4gIGluXG4gIGxldCBhZGQgKHgseSkgZGF0YSBtYXAgPVxuICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkXG4gICAgICAgIHhcbiAgICAgICAgKE1vZHMuU3RyaW5nTWFwLmFkZCB5IGRhdGFcbiAgICAgICAgICAgICAgKE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBNb2RzLlN0cmluZ01hcC5lbXB0eSB4IG1hcCkpXG4gICAgICAgIG1hcFxuICBpblxuICAoKiBDcmVhdGUgb3Bwb3NpdGUgY291bnRlcnMgdGhhdCBoYXZlIHRoZSBzYW1lIHRlc3RzICopXG4gIGxldCAoc2lnbmF0dXJlcyA6IEFzdC5hZ2VudF9zaWcgbGlzdCksXG4gICAgICAoY291bnRlcl9jb252ZXJzaW9uX2luZm9fbWFwIDogQXN0LmNvbnZlcnNpb25faW5mbyBNb2RzLlN0cmluZ01hcC50IE1vZHMuU3RyaW5nTWFwLnQpPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChhY2MsbWFwKSBhZ2VudCAtPlxuICAgICAgICBtYXRjaCBhZ2VudCB3aXRoXG4gICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGFnZW50OjphY2MsIG1hcFxuICAgICAgICB8IFByZXNlbnQgKGFnZW50X25hbWVfLCBzaXRlX2xpc3QsIGFnZW50X21vZCkgLT5cbiAgICAgICAgICBsZXQgYWdlbnRfbmFtZSA9IExvYy52IGFnZW50X25hbWVfIGluXG4gICAgICAgICAgbGV0IGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tX2FnZW50IDpcbiAgICAgICAgICAgICAgTW9kcy5TdHJpbmdTZXQudCAgPVxuICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0XG4gICAgICAgICAgICAgIE1vZHMuU3RyaW5nU2V0LmVtcHR5ICBhZ2VudF9uYW1lIGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IChuZXdfY291bnRlcl9zaXRlcyA6IEFzdC5jb3VudGVyX3NpZyBBc3Quc2l0ZSBsaXN0KSxcbiAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICA9XG4gICAgICAgICAgICBNb2RzLlN0cmluZ1NldC5mb2xkXG4gICAgICAgICAgICAgIChmdW4gY291bnRlcl9uYW1lIChhY2MsbWFwKSAtPlxuICAgICAgICAgICAgICAgICgqIEZpbmQgY291bnRlciB0byBpbnZlcnQgKilcbiAgICAgICAgICAgICAgICBsZXQgY291bnRlcl9vcmlnIDogQXN0LmNvdW50ZXJfc2lnID1cbiAgICAgICAgICAgICAgICAgIExpc3QuZmluZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBzaXRlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBBc3QuUG9ydCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICB8IENvdW50ZXIgY291bnRlciAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgTG9jLnYgY291bnRlci5Bc3QuY291bnRlcl9zaWdfbmFtZSA9IGNvdW50ZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lIGNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICAgICAgICAgICAgc2l0ZV9saXN0XG4gICAgICAgICAgICAgICAgICB8PiBPcHRpb25fdXRpbC51bnNvbWVfb3JfcmFpc2VcbiAgICAgICAgICAgICAgICBpblxuXG4gICAgICAgICAgICAgICAgKCogTWFrZSBpbnZlcnRlZCBjb3VudGVyIGRlY2xhcmF0aW9uICopXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfc2lnX25hbWUgOiBzdHJpbmcgTG9jLmFubm90ZWQgPVxuICAgICAgICAgICAgICAgICAgTG9jLm1hcF9hbm5vdFxuICAgICAgICAgICAgICAgICAgICAoZnVuIG5hbWUgLT4gaW52ZXJ0ZWRfY291bnRlcl9uYW1lIG5hbWUpXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19uYW1lXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgX2NvdW50ZXJfc2lnX2RlZmF1bHQsIGluZl9ib3VuZCwgc3VwX2JvdW5kID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19taW4sIGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19tYXhcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSBtaW4sIF8pLCBTb21lIChTb21lIG1heCwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF4ICsgbWluIC0gY291bnRlcl9vcmlnLmNvdW50ZXJfc2lnX2RlZmF1bHQsIG1pbiwgbWF4XG4gICAgICAgICAgICAgICAgICB8IChOb25lIHwgU29tZSAoTm9uZSwgXykpLCBfIHwgXywgKE5vbmUgfCBTb21lIChOb25lLCBfKSkgLT5cbiAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICggXCJDYW5ub3QgdGFrZSB0aGUgb3Bwb3NpdGUgb2YgYW4gdW5ib3VuZGVkIGNvdW50ZXJzICBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgY291bnRlcl9vcmlnLmNvdW50ZXJfc2lnX25hbWUgKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBjb252ZXJ0X3ZhbHVlID0gQXN0LkJBU0lTX01JTlVTX0lOUFVUIChpbmZfYm91bmQgKyBzdXBfYm91bmQpIGluXG4gICAgICAgICAgICAgICAgbGV0IGNvbnZlcnRfZGVsdGEgPSBBc3QuQkFTSVNfTUlOVVNfSU5QVVQgMCBpblxuICAgICAgICAgICAgICAgIGxldCB1cGRhdGUgeCA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIChOb25lLGxvYykgLT4gU29tZSAoTm9uZSxsb2MpXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSBpLGxvYykgLT4gU29tZSAoU29tZSAoQXN0LmFwcGx5X2ludCBjb252ZXJ0X3ZhbHVlIGkpLCBsb2MpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgcmVmX21pbixyZWZfbWF4ID1cbiAgICAgICAgICAgICAgICAgICAgQXN0LnJlb3JkZXJfYm91bmRzIGNvbnZlcnRfdmFsdWUgKGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19taW4sY291bnRlcl9vcmlnLmNvdW50ZXJfc2lnX21heCkgaW5cbiAgICAgICAgICAgICAgICBsZXQgY291bnRlcl9zaWdfbWluID0gdXBkYXRlIHJlZl9taW4gaW5cbiAgICAgICAgICAgICAgICBsZXQgY291bnRlcl9zaWdfbWF4ID0gdXBkYXRlIHJlZl9tYXggaW5cbiAgICAgICAgICAgICAgICBsZXQgY291bnRlcl9zaWdfZGVmYXVsdCA9XG4gICAgICAgICAgICAgICAgICAgIEFzdC5hcHBseV9pbnQgY29udmVydF92YWx1ZSBjb3VudGVyX29yaWcuY291bnRlcl9zaWdfZGVmYXVsdCBpblxuICAgICAgICAgICAgICAgIGxldCBjb252ZXJ0X2luZm8gPVxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBBc3QuZnJvbV9zaWdfbmFtZSA9IGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19uYW1lO1xuICAgICAgICAgICAgICAgICAgICBjb252ZXJ0X3ZhbHVlIDtcbiAgICAgICAgICAgICAgICAgICAgY29udmVydF9kZWx0YSA7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgY291bnRlcl9zaWdfdmlzaWJsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgQXN0LkZyb21fY2x0ZV9lbGltaW5hdGlvbiBjb252ZXJ0X2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICgqIFdyaXRlIGluIHN1bV9ib3VuZHNfcmVmIHRoZSBzdW0gb2YgdGhlIGNvdW50ZXIgYm91bmRzIGFib3ZlICopXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXIgPVxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21pbjtcbiAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21heDtcbiAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKEFzdC5Db3VudGVyIGNvdW50ZXIpOjphY2MsXG4gICAgICAgICAgICAgICAgYWRkXG4gICAgICAgICAgICAgICAgICAoYWdlbnRfbmFtZSxMb2MudiBjb3VudGVyX29yaWcuY291bnRlcl9zaWdfbmFtZSlcbiAgICAgICAgICAgICAgICAgIGNvbnZlcnRfaW5mbyBtYXApXG4gICAgICAgICAgICAgIGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tX2FnZW50XG4gICAgICAgICAgICAgIChbXSxtYXApXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoQXN0LlByZXNlbnQgKGFnZW50X25hbWVfLCBzaXRlX2xpc3QgQCBuZXdfY291bnRlcl9zaXRlcywgYWdlbnRfbW9kKSk6OmFjYyxcbiAgICAgICAgICAgbWFwKVxuICAgICAgKFtdLCBNb2RzLlN0cmluZ01hcC5lbXB0eSkgKExpc3QucmV2IGFzdF9jb21waWwuc2lnbmF0dXJlcylcbiAgaW5cblxuICAoKiBJbiBydWxlcywgd2UgbmVlZCB0byByZXBsYWNlIHRoZSBjb3VudGVyIHRlc3RzIGFuZCB0aGUgY291bnRlciBtb2RpZmljYXRpb25zICopXG5cbiAgbGV0IHJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQgKG1peCA6IEFzdC5taXh0dXJlKSA6IEFzdC5taXh0dXJlID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biBhZ2VudF9saXN0IC0+XG4gICAgICAgIExpc3QubWFwXG4gICAgICAgICAgKGZ1biBhZ2VudCAtPlxuICAgICAgICAgICAgbWF0Y2ggYWdlbnQgd2l0aFxuICAgICAgICAgICAgfCBBc3QuQWJzZW50IF8gLT4gYWdlbnRcbiAgICAgICAgICAgIHwgUHJlc2VudCAoYWdlbnRfbmFtZV8sIHNpdGVfbGlzdCwgYWdlbnRfbW9kKSAtPlxuICAgICAgICAgICAgICBsZXQgYWdlbnRfbmFtZSA6IHN0cmluZyA9IExvYy52IGFnZW50X25hbWVfIGluXG4gICAgICAgICAgICAgIGxldCBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudCA6XG4gICAgICAgICAgICAgICAgQXN0LmNvbnZlcnNpb25faW5mbyBNb2RzLlN0cmluZ01hcC50ID1cbiAgICAgICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLmVtcHR5IGFnZW50X25hbWUgY291bnRlcl9jb252ZXJzaW9uX2luZm9fbWFwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIEFkZCBkZWx0YSB0byBjb3VudGVyIGFzIG9wcG9zaXRlIGRlbHRhcyB0byBjb3VudGVyX2RlbHRhICopXG4gICAgICAgICAgICAgIGxldCAoYWRkZWRfc2l0ZXMsIHNpdGVfbGlzdF93aXRoX29wcG9zaXRlX2RlbHRhcykgOlxuICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXIgQXN0LnNpdGUgbGlzdCAqIEFzdC5jb3VudGVyIEFzdC5zaXRlIGxpc3QgPVxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0X21hcFxuICAgICAgICAgICAgICAgICAgKGZ1biBhY2Mgc2l0ZSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXRlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGFjYywgc2l0ZVxuICAgICAgICAgICAgICAgICAgICB8IENvdW50ZXIgY291bnRlciAtPlxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMb2MudiBjb3VudGVyLkFzdC5jb3VudGVyX25hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tX2FnZW50XG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjLCBzaXRlXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGNvbnZlcnRfaW5mbyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCogQXMgd2Uga25vdyB0aGF0IHRoaXMgY291bnRlciB1c2VzIGEgQ0xURSB0ZXN0LCBXZSBpbnRyb2R1Y2UgdGhlIGludmVydGVkIGNvdW50ZXIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICgqIFtjbHRlX3ZhbHVlX29yX25vbmVdIGRpc2NyaW1pbmF0ZXMgdGhlIGNhc2Ugd2hlcmUgdGhpcyBzaXRlIGluIHRoaXMgZXhwcmVzc2lvbiBoYXMgYSBDTFRFIHRlc3QgKilcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjbHRlX3ZhbHVlX29yX25vbmUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBjb3VudGVyLmNvdW50ZXJfdGVzdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSB0ZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIExvYy52IHRlc3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXN0LkNFUSBfIHwgQ0dURSBfIHwgQ1ZBUiBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5DTFRFIHZhbHVlIC0+IFNvbWUgdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNsdGVfdmFsdWVfb3Jfbm9uZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogSWYgdGhlcmUgaXMgYSB0ZXN0LCBpdCBkb2Vzbid0IG5lZWQgaW52ZXJzaW9uOiB3ZSBhZGQgaW52ZXJ0ZWQgY291bnRlciB3aXRob3V0IHRlc3QgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTG9jLnYgY291bnRlci5jb3VudGVyX2RlbHRhID09IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYywgc2l0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBJZiB0aGUgY291bnRlciB2YWx1ZSBpcyBjaGFuZ2luZywgd2UgbmVlZCB0byBhZGQgaXQgdG8gdGhlIGludmVydGVkIGNvdW50ZXIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW52ZXJ0ZWRfY291bnRlcl9zaXRlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9uYW1lID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5tYXBfYW5ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52ZXJ0ZWRfY291bnRlcl9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuY291bnRlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX3Rlc3QgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX2RlbHRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5tYXBfYW5ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5hcHBseV9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRfaW5mby5Bc3QuY29udmVydF9kZWx0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuY291bnRlcl9kZWx0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52ZXJ0ZWRfY291bnRlcl9zaXRlIDo6IGFjYywgc2l0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVGhlIHRlc3QgaXMgQ0xURSwgd2UgaW52ZXJ0IGl0ICopXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogU2l0ZSB3aXRoIGludmVydGVkIGNvdW50ZXIgd2l0aCBDR1RFIHRlc3QgaW5zdGVhZCBvZiBDTFRFIHRlc3QgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld19zaXRlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuQ291bnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9uYW1lID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MubWFwX2Fubm90IGludmVydGVkX2NvdW50ZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlci5jb3VudGVyX25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX3Rlc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuQ0dURSAoQXN0LmFwcGx5X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRfaW5mby5Bc3QuY29udmVydF92YWx1ZSB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHw+IExvYy5jb3B5X2Fubm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25fdXRpbC51bnNvbWVfb3JfcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlci5jb3VudGVyX3Rlc3QpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfZGVsdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5tYXBfYW5ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuYXBwbHlfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydF9pbmZvLkFzdC5jb252ZXJ0X2RlbHRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuY291bnRlcl9kZWx0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTG9jLnYgY291bnRlci5jb3VudGVyX2RlbHRhID09IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYywgbmV3X3NpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogSWYgdGhlIGNvdW50ZXIgdmFsdWUgaXMgY2hhbmdpbmcsIHdlIG5lZWQgdG8gYWRkIGl0IHRvIHRoZSBvcmlnaW5hbCBjb3VudGVyIHRvbyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW5hbF9jb3VudGVyX3NpdGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LkNvdW50ZXIgeyBjb3VudGVyIHdpdGggY291bnRlcl90ZXN0ID0gTm9uZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbF9jb3VudGVyX3NpdGUgOjogYWNjLCBuZXdfc2l0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICApKSkpXG4gICAgICAgICAgICAgICAgICBbXSBzaXRlX2xpc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG5ld19zaXRlX2xpc3QgOiBBc3QuY291bnRlciBBc3Quc2l0ZSBsaXN0ID1cbiAgICAgICAgICAgICAgICBzaXRlX2xpc3Rfd2l0aF9vcHBvc2l0ZV9kZWx0YXMgQCBhZGRlZF9zaXRlc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBBc3QuUHJlc2VudCAoYWdlbnRfbmFtZV8sIG5ld19zaXRlX2xpc3QsIGFnZW50X21vZCkpXG4gICAgICAgICAgYWdlbnRfbGlzdClcbiAgICAgIG1peFxuICBpblxuICBsZXQgYWRkX2ludmVydGVkX2NvdW50ZXJfdG9faW5pdF9taXh0dXJlIChtaXggOiBBc3QubWl4dHVyZSkgOiBBc3QubWl4dHVyZSA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gYWdlbnRfbGlzdCAtPlxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gYWdlbnQgLT5cbiAgICAgICAgICAgIG1hdGNoIGFnZW50IHdpdGhcbiAgICAgICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGFnZW50XG4gICAgICAgICAgICB8IFByZXNlbnQgKGFnZW50X25hbWVfLCBzaXRlX2xpc3QsIGFnZW50X21vZCkgLT5cbiAgICAgICAgICAgICAgbGV0IGFnZW50X25hbWUgOiBzdHJpbmcgPSBMb2MudiBhZ2VudF9uYW1lXyBpblxuICAgICAgICAgICAgICAgIGxldCBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudCA6XG4gICAgICAgICAgICAgICAgQXN0LmNvbnZlcnNpb25faW5mbyBNb2RzLlN0cmluZ01hcC50ID1cbiAgICAgICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLmVtcHR5IGFnZW50X25hbWUgY291bnRlcl9jb252ZXJzaW9uX2luZm9fbWFwXG4gICAgICAgICAgICAgIGluXG4oKlxuICAgICAgbGV0IGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tX2FnZW50IDpcbiAgICAgICAgICAgICAgICAgIChzdHJpbmcgKiBzdHJpbmcgKiBpbnQgcmVmKSBsaXN0ID1cbiAgICAgICAgICAgICAgICBMaXN0LmZpbHRlclxuICAgICAgICAgICAgICAgICAgKGZ1biAoYWdlbnRfbmFtZV9jb3VudGVyLCBfLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBhZ2VudF9uYW1lID0gYWdlbnRfbmFtZV9jb3VudGVyKVxuICAgICAgICAgICAgICAgICAgKGZzdCBjb3VudGVyc193aXRoX2NsdGVfdGVzdHMpXG4gICAgICAgICAgICAgIGluKilcbiAgICAgICAgICAgICAgKCogQWRkIGRlbHRhIHRvIGNvdW50ZXIgYXMgb3Bwb3NpdGUgZGVsdGFzIHRvIGNvdW50ZXJfZGVsdGEgKilcbiAgICAgICAgICAgICAgbGV0IGFkZGVkX3NpdGVzIDogQXN0LmNvdW50ZXIgQXN0LnNpdGUgbGlzdCA9XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gYWNjIHNpdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgQXN0LlBvcnQgXyAtPiBhY2NcbiAgICAgICAgICAgICAgICAgICAgfCBDb3VudGVyIGNvdW50ZXIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKExvYy52IGNvdW50ZXIuQXN0LmNvdW50ZXJfbmFtZSkgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzX2Zyb21fYWdlbnRcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBpbmZvICAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCogQXMgd2Uga25vdyB0aGF0IHRoaXMgY291bnRlciB1c2VzIGEgQ0xURSB0ZXN0LCBXZSBpbnRyb2R1Y2UgdGhlIGludmVydGVkIGNvdW50ZXIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjb3VudGVyLmNvdW50ZXJfdGVzdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXCJDb3VudGVyIHNob3VsZCBoYXZlIENFUSB0ZXN0IHZhbHVlIGluIGluaXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgY291bnRlci5jb3VudGVyX25hbWUgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSB0ZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBMb2MudiB0ZXN0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBc3QuQ0dURSBfIHwgQ0xURSBfIHwgQ1ZBUiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiQ291bnRlciBzaG91bGQgaGF2ZSBDRVEgdGVzdCB2YWx1ZSBpbiBpbml0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLmdldF9hbm5vdCB0ZXN0ICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXN0LkNFUSB2YWx1ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIExvYy52IGNvdW50ZXIuY291bnRlcl9kZWx0YSA8PiAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXCJDb3VudGVyIGRlbHRhIHNob3VsZCBiZSAwIGluIGluaXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLmdldF9hbm5vdCB0ZXN0ICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LkNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX25hbWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLm1hcF9hbm5vdCBpbnZlcnRlZF9jb3VudGVyX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlci5Bc3QuY291bnRlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX3Rlc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTG9jLmNvcHlfYW5ub3QgdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LkNFUSAoQXN0LmFwcGx5X2ludCBpbmZvLkFzdC5jb252ZXJ0X3ZhbHVlIHZhbHVlKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX2RlbHRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuQXN0LmNvdW50ZXJfZGVsdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIDAgd2l0aCBhbm5vdCBhcyB0ZXN0ZWQgYWJvdmUgKik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGFjYykpKSlcbiAgICAgICAgICAgICAgICAgIFtdIHNpdGVfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbmV3X3NpdGVfbGlzdCA6IEFzdC5jb3VudGVyIEFzdC5zaXRlIGxpc3QgPVxuICAgICAgICAgICAgICAgIHNpdGVfbGlzdCBAIGFkZGVkX3NpdGVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEFzdC5QcmVzZW50IChhZ2VudF9uYW1lXywgbmV3X3NpdGVfbGlzdCwgYWdlbnRfbW9kKSlcbiAgICAgICAgICBhZ2VudF9saXN0KVxuICAgICAgbWl4XG4gIGluXG5cbiAgbGV0IG1hcF9leHByIGV4cHIgPVxuICAgICAgQWxnX2V4cHIubWFwX29uX21peHR1cmVcbiAgICAgICAgKGZ1biB4IC0+IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIChyZXBsYWNlX2NvdW50ZXJfYnlfaW52ZXJ0IHgpKVxuICAgICAgICBleHByXG4gIGluXG4gIGxldCBtYXBfYmV4cHIgZXhwciA9XG4gICAgICBBbGdfZXhwci5tYXBfYm9vbF9vbl9taXh0dXJlXG4gICAgICAgIChmdW4geCAtPiBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSAocmVwbGFjZV9jb3VudGVyX2J5X2ludmVydCB4KSlcbiAgICAgICAgZXhwclxuICBpblxuICBsZXQgbWFwX3J1bGUgcnVsZSA9XG4gICAgbGV0IHJld3JpdGUgPVxuICAgICAgbWF0Y2ggcnVsZS5Bc3QucmV3cml0ZSB3aXRoXG4gICAgICB8IEVkaXQgY29udGVudCAtPlxuICAgICAgICBBc3QuRWRpdFxuICAgICAgICAgIHsgY29udGVudCB3aXRoIG1peCA9IHJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQgY29udGVudC5taXggfVxuICAgICAgfCBBcnJvdyBjb250ZW50IC0+XG4gICAgICAgIEFycm93XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29udGVudCB3aXRoXG4gICAgICAgICAgICBsaHMgPSByZXBsYWNlX2NvdW50ZXJfYnlfaW52ZXJ0IGNvbnRlbnQubGhzO1xuICAgICAgICAgICAgcmhzID0gcmVwbGFjZV9jb3VudGVyX2J5X2ludmVydCBjb250ZW50LnJocztcbiAgICAgICAgICB9XG4gICAgaW5cbiAgICBsZXQga19kZWYgPSBtYXBfZXhwciBydWxlLmtfZGVmIGluXG4gICAgbGV0IGtfb3AgPSBtYXBfb3B0IG1hcF9leHByIHJ1bGUua19vcCBpblxuICAgIGxldCBrX3VuID0gbWFwX29wdCAoZnVuIChhLGIpIC0+IG1hcF9leHByIGEsIG1hcF9vcHQgbWFwX2V4cHIgYikgcnVsZS5rX3VuIGluXG4gICAgbGV0IGtfb3BfdW4gPSBtYXBfb3B0IChmdW4gKGEsYikgLT4gbWFwX2V4cHIgYSwgbWFwX29wdCBtYXBfZXhwciBiKSBydWxlLmtfb3BfdW4gaW5cbiAgICB7IHJ1bGUgd2l0aCByZXdyaXRlIDsga19kZWYgOyBrX29wIDsga191biA7IGtfb3BfdW59XG4gIGluXG4gIGxldCBydWxlcyA6IChzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uICogQXN0LnJ1bGUgTG9jLmFubm90ZWQpIGxpc3QgPVxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1biBydWxlX2RlZiAtPlxuICAgICAgICAgZnN0IHJ1bGVfZGVmLFxuICAgICAgICAgIExvYy5tYXBfYW5ub3QgbWFwX3J1bGUgKHNuZCBydWxlX2RlZikpXG4gICAgICAoTGlzdC5yZXYgYXN0X2NvbXBpbC5ydWxlcylcbiAgaW5cblxuICBsZXQgaW5pdCA6IChBc3QubWl4dHVyZSwgQXN0Lm1peHR1cmUsIHN0cmluZykgQXN0LmluaXRfc3RhdGVtZW50IGxpc3QgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIChxdWFudGl0eV9hbGdfZXhwciwgaW5pdF9raW5kKSAtPlxuICAgICAgICAoIHF1YW50aXR5X2FsZ19leHByLFxuICAgICAgICAgIG1hdGNoIGluaXRfa2luZCB3aXRoXG4gICAgICAgICAgfCBBc3QuSU5JVF9UT0sgXyAtPiBpbml0X2tpbmRcbiAgICAgICAgICB8IElOSVRfTUlYIG1peF8gLT5cbiAgICAgICAgICAgIElOSVRfTUlYIChMb2MubWFwX2Fubm90IGFkZF9pbnZlcnRlZF9jb3VudGVyX3RvX2luaXRfbWl4dHVyZSBtaXhfKSApKVxuICAgICAgYXN0X2NvbXBpbC5pbml0XG4gIGluXG4gIGxldCB2YXJpYWJsZXMgPVxuICAgIExpc3QucmV2X21hcFxuICAgICAgICAoZnVuIChhLCBiKSAtPiAoYSwgbWFwX2V4cHIgYikpXG4gICAgICAgIChMaXN0LnJldiBhc3RfY29tcGlsLnZhcmlhYmxlcylcbiAgaW5cbiAgbGV0IG9ic2VydmFibGVzID0gTGlzdC5yZXZfbWFwIG1hcF9leHByIChMaXN0LnJldiBhc3RfY29tcGlsLm9ic2VydmFibGVzKSBpblxuICBsZXQgbWFwX3ByaW50IGEgPVxuICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICB8IFByaW1pdGl2ZXMuU3RyX3BleHByIF8gLT4gYVxuICAgICAgfCBBbGdfcGV4cHIgZSAtPiBBbGdfcGV4cHIgKG1hcF9leHByIGUpXG4gIGluXG4gIGxldCBtYXBfbW9kaWYgbW9kaWYgPVxuICAgICAgbWF0Y2ggbW9kaWYgd2l0aFxuICAgICAgfCBBc3QuQVBQTFkgKGEscikgLT4gQXN0LkFQUExZIChtYXBfZXhwciBhLExvYy5tYXBfYW5ub3QgbWFwX3J1bGUgciApXG4gICAgICB8IFVQREFURSAoYSxlKSAtPiBVUERBVEUgKGEsbWFwX2V4cHIgZSlcbiAgICAgIHwgU1RPUCBsIC0+IFNUT1AgKExpc3QucmV2X21hcCBtYXBfcHJpbnQgKExpc3QucmV2IGwpKVxuICAgICAgfCBTTkFQU0hPVCAoYixsKSAtPiBTTkFQU0hPVCAoYixMaXN0LnJldl9tYXAgbWFwX3ByaW50IChMaXN0LnJldiBsKSlcbiAgICAgIHwgUFJJTlQgKGwsbCcpIC0+XG4gICAgICAgICAgUFJJTlQoTGlzdC5yZXZfbWFwIG1hcF9wcmludCAoTGlzdC5yZXYgbCksTGlzdC5yZXZfbWFwIG1hcF9wcmludCAoTGlzdC5yZXYgbCcpKVxuICAgICAgfCBQTE9URU5UUllcbiAgICAgIHwgQ0ZMT1dMQUJFTCBfIC0+IG1vZGlmXG4gICAgICB8IENGTE9XTUlYIChiLG1peHR1cmUpIC0+IENGTE9XTUlYKGIsXG4gICAgICAgIExvYy5tYXBfYW5ub3QgcmVwbGFjZV9jb3VudGVyX2J5X2ludmVydCBtaXh0dXJlKVxuICAgICAgfCBESU4gKGEsIGwpIC0+IERJTihhLCBMaXN0LnJldl9tYXAgbWFwX3ByaW50IChMaXN0LnJldiBsKSlcbiAgICAgIHwgRElOT0ZGIGwgLT4gRElOT0ZGKExpc3QucmV2X21hcCBtYXBfcHJpbnQgKExpc3QucmV2IGwpKVxuICAgICAgfCBTUEVDSUVTX09GIChiLGwsbSkgLT5cbiAgICAgICAgU1BFQ0lFU19PRihiLExpc3QucmV2X21hcCBtYXBfcHJpbnQgbCxMb2MubWFwX2Fubm90IHJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQgbSlcbiAgaW5cbiAgbGV0IHBlcnR1cmJhdGlvbnMgPVxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1biAoKGEsYixjLGQpLCBleHQpLT4gKGEsbWFwX29wdCBtYXBfYmV4cHIgYixMaXN0LnJldl9tYXAgbWFwX21vZGlmIChMaXN0LnJldiBjKSxtYXBfb3B0IG1hcF9iZXhwciBkICksZXh0KVxuICAgICAgKExpc3QucmV2IGFzdF9jb21waWwucGVydHVyYmF0aW9ucylcbiAgaW5cbiAge2FzdF9jb21waWwgd2l0aCBzaWduYXR1cmVzOyBydWxlczsgaW5pdDsgdmFyaWFibGVzOyBvYnNlcnZhYmxlczsgcGVydHVyYmF0aW9uc31cblxubGV0IGNvbXBpbF9vZl9hc3Qgfndhcm5pbmcgfmRlYnVnX21vZGUgfnN5bnRheF92ZXJzaW9uIH52YXJfb3ZlcndyaXRlIGFzdF9jb21waWxcbiAgICA9XG4gICgqIFRPRE8gdGVzdCB0aGlzICopXG4gICgqIFRyYW5zbGF0ZSBDTFRFIHRlc3RzIGluIGFzdF9jb21waWwgaW50byBDR1RFIHRlc3RzICopXG4gIGxldCBhc3RfY29tcGlsID0gdHJhbnNsYXRlX2NsdGVfaW50b19jZ3RlIGFzdF9jb21waWwgaW5cblxuICBsZXQgaGFzX2NvdW50ZXJzID0gQ291bnRlcnNfY29tcGlsZXIuaGFzX2NvdW50ZXJzIGFzdF9jb21waWwgaW5cbiAgbGV0IGFnZW50X3NpZ19pc19pbXBsaWNpdCA9XG4gICAgYXN0X2NvbXBpbC5Bc3Quc2lnbmF0dXJlcyA9IFtdICYmIGFzdF9jb21waWwuQXN0LnRva2VucyA9IFtdXG4gIGluXG4gICgqIEluZmVyIGFnZW50IHNpZ25hdHVyZXMgaWYgdGhlIHNpZ25hdHVyZSBpcyBpbXBsaWNpdCAqKVxuICBsZXQgYXN0X2NvbXBpbCA9XG4gICAgaWYgYWdlbnRfc2lnX2lzX2ltcGxpY2l0ICYmIGhhc19jb3VudGVycyB0aGVuXG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJpbXBsaWNpdCBzaWduYXR1cmUgaXMgaW5jb21wYXRpYmxlIHdpdGggY291bnRlcnNcIiwgTG9jLmR1bW15KSlcbiAgICBlbHNlIGlmIGFnZW50X3NpZ19pc19pbXBsaWNpdCB0aGVuXG4gICAgICBBc3QuaW5mZXJfYWdlbnRfc2lnbmF0dXJlcyBhc3RfY29tcGlsXG4gICAgZWxzZVxuICAgICAgYXN0X2NvbXBpbFxuICBpblxuICAoKiBSZW1vdmUgY291bnRlciBlcXVhbGl0eSB0ZXN0IHdpdGggYSB2YXJpYWJsZSBieSBzcGxpdHRpbmcgaW4gb25lIHJ1bGUgcGVyIHZhcmlhYmxlIHZhbHVlICopXG4gIGxldCBhc3RfY29tcGlsID1cbiAgICBpZiBoYXNfY291bnRlcnMgdGhlblxuICAgICAgQ291bnRlcnNfY29tcGlsZXIuc3BsaXRfY291bnRlcl92YXJpYWJsZXNfaW50b19zZXBhcmF0ZV9ydWxlcyB+d2FybmluZ1xuICAgICAgICB+ZGVidWdfbW9kZSBhc3RfY29tcGlsXG4gICAgZWxzZVxuICAgICAgYXN0X2NvbXBpbFxuICBpblxuXG4gIGxldCBhZ2VudHNfc2lnIDogU2lnbmF0dXJlLnMgPSBjcmVhdGVfc2lncyBhc3RfY29tcGlsLkFzdC5zaWduYXR1cmVzIGluXG4gICgqIFNldCBhbiBlbXB0eSBjb250YWN0IG1hcCAqKVxuICBsZXQgY29udGFjdF9tYXAgOiAoTW9kcy5JbnRTZXQudCAqIE1vZHMuSW50MlNldC50KSBhcnJheSBhcnJheSA9XG4gICAgQXJyYXkuaW5pdCAoU2lnbmF0dXJlLnNpemUgYWdlbnRzX3NpZykgKGZ1biBpIC0+XG4gICAgICAgIEFycmF5LmluaXQgKFNpZ25hdHVyZS5hcml0eSBhZ2VudHNfc2lnIGkpIChmdW4gcyAtPlxuICAgICAgICAgICAgKCBUb29scy5yZWN0aVxuICAgICAgICAgICAgICAgIChmdW4gYSBrIC0+IE1vZHMuSW50U2V0LmFkZCBrIGEpXG4gICAgICAgICAgICAgICAgTW9kcy5JbnRTZXQuZW1wdHlcbiAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLmludGVybmFsX3N0YXRlc19udW1iZXIgaSBzIGFnZW50c19zaWcpLFxuICAgICAgICAgICAgICBNb2RzLkludDJTZXQuZW1wdHkgKSkpXG4gIGluXG4gIGxldCBydWxlX25hbWVzLCBleHRyYV92YXJzLCBjbGVhbmVkX3J1bGVzID1cbiAgICBsZXQgYWNjID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChuYW1lX2FuZF9wdXJpZnlfcnVsZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gYWdlbnRzX3NpZyB+Y29udGFjdF9tYXApXG4gICAgICAgIHtcbiAgICAgICAgICBydWxlX25hbWVzID0gMCwgTW9kcy5TdHJpbmdTZXQuZW1wdHk7XG4gICAgICAgICAgZXh0cmFfdmFycyA9IFtdO1xuICAgICAgICAgIGNsZWFuZWRfcnVsZXMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBhc3RfY29tcGlsLkFzdC5ydWxlc1xuICAgIGluXG4gICAgc25kIGFjYy5ydWxlX25hbWVzLCBhY2MuZXh0cmFfdmFycywgYWNjLmNsZWFuZWRfcnVsZXNcbiAgaW5cbiAgbGV0IG92ZXJ3cml0ZV92YXJzICh2YXJfb3ZlcndyaXRlIDogKHN0cmluZyAqIE5ici50KSBsaXN0KVxuICAgICAgKHZhcnMgOiAoQXN0Lm1peHR1cmUsIHN0cmluZykgQXN0LnZhcmlhYmxlX2RlZiBsaXN0KSA6XG4gICAgICAoc3RyaW5nICogTmJyLnQpIGxpc3QgKiAoQXN0Lm1peHR1cmUsIHN0cmluZykgQXN0LnZhcmlhYmxlX2RlZiBsaXN0ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAob3ZlcndyaXRlX3ZhcnNfcmVtYWluaW5nLCBhY2NfdmFycykgKCgoeCwgXyksIF8pIGFzIHZhcikgLT5cbiAgICAgICAgbGV0IG1hdGNocywgb3RoZXJfb3ZlcndyaXRlX3ZhcnMgPVxuICAgICAgICAgIExpc3QucGFydGl0aW9uIChmdW4gKHgnLCBfKSAtPiB4ID0geCcpIG92ZXJ3cml0ZV92YXJzX3JlbWFpbmluZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjX3ZhcnNfd2l0aF94X3Jld3JpdHRlbl9pZl9wcmVzZW50ID1cbiAgICAgICAgICBtYXRjaCBtYXRjaHMgd2l0aFxuICAgICAgICAgIHwgW10gLT4gdmFyIDo6IGFjY192YXJzXG4gICAgICAgICAgfCBbICh4LCB2KSBdIC0+IChMb2MuYW5ub3Rfd2l0aF9kdW1teSB4LCBBbGdfZXhwci5jb25zdCB2KSA6OiBhY2NfdmFyc1xuICAgICAgICAgIHwgKHgsIF8pIDo6IF8gOjogXyAtPlxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKCBcInZhcmlhYmxlICdcIiBeIHggXiBcIicgaXMgb3ZlcndyaXR0ZW4gbW9yZSB0aGFuIG9uY2VcIixcbiAgICAgICAgICAgICAgICAgICBMb2MuZHVtbXkgKSlcbiAgICAgICAgaW5cblxuICAgICAgICBvdGhlcl9vdmVyd3JpdGVfdmFycywgYWNjX3ZhcnNfd2l0aF94X3Jld3JpdHRlbl9pZl9wcmVzZW50KVxuICAgICAgKHZhcl9vdmVyd3JpdGUsIFtdKSB2YXJzXG4gICAgfD4gZnVuICh2YXJfb3ZlcndyaXRlX25vdF9hcHBsaWVkLCByZXZfYWxnX3ZhcnMpIC0+XG4gICAgdmFyX292ZXJ3cml0ZV9ub3RfYXBwbGllZCwgTGlzdC5yZXYgcmV2X2FsZ192YXJzXG4gIGluXG4gIGxldCB2YXJfb3ZlcndyaXRlX25vdF9hcHBsaWVkLCBhbGdfdmFyc193aXRoX3Jld3JpdHRlbl92YXJzID1cbiAgICBvdmVyd3JpdGVfdmFycyB2YXJfb3ZlcndyaXRlIChhc3RfY29tcGlsLkFzdC52YXJpYWJsZXMgQCBleHRyYV92YXJzKVxuICBpblxuICBsZXQgYWxnX3ZhcnNfYXJyYXkgPVxuICAgIExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZFxuICAgICAgKGZ1biAoeCwgdikgLT4gTG9jLmFubm90X3dpdGhfZHVtbXkgeCwgQWxnX2V4cHIuY29uc3QgdilcbiAgICAgIHZhcl9vdmVyd3JpdGVfbm90X2FwcGxpZWQgYWxnX3ZhcnNfd2l0aF9yZXdyaXR0ZW5fdmFyc1xuICAgIHw+IEFycmF5Lm9mX2xpc3RcbiAgaW5cbiAgbGV0IGFsZ192YXJzX2ZpbmRlciA9XG4gICAgYWxnX3ZhcnNfYXJyYXkgfD4gTmFtZWREZWNscy5jcmVhdGUgfmZvcmJpZGRlbjpydWxlX25hbWVzIHw+IGZ1biBuZCAtPlxuICAgIG5kLk5hbWVkRGVjbHMuZmluZGVyXG4gIGluXG4gIGxldCB0b2tlbl9uYW1lcyA9XG4gICAgYXN0X2NvbXBpbC5Bc3QudG9rZW5zXG4gICAgfD4gVG9vbHMuYXJyYXlfbWFwX29mX2xpc3QgKGZ1biB4IC0+IHgsICgpKVxuICAgIHw+IE5hbWVkRGVjbHMuY3JlYXRlXG4gIGluXG4gIGxldCB0b2tlbnNfZmluZGVyID0gdG9rZW5fbmFtZXMuTmFtZWREZWNscy5maW5kZXIgaW5cblxuICBpZiBoYXNfY291bnRlcnMgdGhlblxuICAgIENvdW50ZXJzX2NvbXBpbGVyLmFkZF9jb3VudGVyX3RvX2NvbnRhY3RfbWFwIGFnZW50c19zaWdcbiAgICAgIChhZGRfbGlua19jb250YWN0X21hcCB+Y29udGFjdF9tYXApO1xuXG4gIGxldCBwZXJ0dWJhdGlvbnNfd2l0aG91dF9jb3VudGVycywgdXBkYXRlZF9hbGdfdmFycyA9XG4gICAgTGlzdF91dGlsLmZvbGRfcmlnaHRfbWFwXG4gICAgICAocGVydHVyYmF0aW9uX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gYWdlbnRzX3NpZyB0b2tlbnNfZmluZGVyXG4gICAgICAgICBhbGdfdmFyc19maW5kZXIgY29udGFjdF9tYXApXG4gICAgICBhc3RfY29tcGlsLkFzdC5wZXJ0dXJiYXRpb25zIFtdXG4gIGluXG4gIGxldCBwZXJ0dXJiYXRpb25zID1cbiAgICBpZiBoYXNfY291bnRlcnMgdGhlblxuICAgICAgQ291bnRlcnNfY29tcGlsZXIuY291bnRlcnNfcGVydHVyYmF0aW9ucyBhZ2VudHNfc2lnXG4gICAgICAgIFsgYXN0X2NvbXBpbC5Bc3Quc2lnbmF0dXJlcyBdXG4gICAgICBAIHBlcnR1YmF0aW9uc193aXRob3V0X2NvdW50ZXJzXG4gICAgZWxzZVxuICAgICAgcGVydHViYXRpb25zX3dpdGhvdXRfY291bnRlcnNcbiAgaW5cblxuICBsZXQgcnVsZXMgPVxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1biAocnVsZSA6IHJ1bGVfaW50ZXJfcmVwKSAtPlxuICAgICAgICAoIHJ1bGUubGFiZWxfb3B0LFxuICAgICAgICAgICggYXNzZW1ibGVfcnVsZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gcnVsZSBhZ2VudHNfc2lnIHRva2Vuc19maW5kZXJcbiAgICAgICAgICAgICAgYWxnX3ZhcnNfZmluZGVyLFxuICAgICAgICAgICAgcnVsZS5wb3MgKSApKVxuICAgICAgY2xlYW5lZF9ydWxlc1xuICBpblxuXG4gIGxldCB2YXJpYWJsZXMgPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfcmlnaHRpXG4gICAgICAoZnVuIGkgKGxhYiwgZXhwcikgYWNjIC0+XG4gICAgICAgICggbGFiLFxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfm1heF9hbGxvd2VkX3ZhcjoocHJlZCBpKVxuICAgICAgICAgICAgYWdlbnRzX3NpZyB0b2tlbnNfZmluZGVyIGFsZ192YXJzX2ZpbmRlciBleHByIClcbiAgICAgICAgOjogYWNjKVxuICAgICAgYWxnX3ZhcnNfYXJyYXkgW11cbiAgaW5cbiAgbGV0IG9ic2VydmFibGVzID1cbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChmdW4gZXhwciAtPlxuICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIGFnZW50c19zaWcgdG9rZW5zX2ZpbmRlclxuICAgICAgICAgIGFsZ192YXJzX2ZpbmRlciBleHByKVxuICAgICAgKExpc3QucmV2IGFzdF9jb21waWwub2JzZXJ2YWJsZXMpXG4gIGluXG4gIGxldCBpbml0ID1cbiAgICBpbml0X29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gYWdlbnRzX3NpZyBjb250YWN0X21hcCB0b2tlbnNfZmluZGVyXG4gICAgICBhbGdfdmFyc19maW5kZXIgYXN0X2NvbXBpbC5pbml0XG4gIGluXG5cbiAge1xuICAgIGFnZW50c19zaWc7XG4gICAgY29udGFjdF9tYXA7XG4gICAgdG9rZW5fbmFtZXM7XG4gICAgYWxnX3ZhcnNfZmluZGVyO1xuICAgIHVwZGF0ZWRfYWxnX3ZhcnM7XG4gICAgcmVzdWx0ID1cbiAgICAgIHtcbiAgICAgICAgZmlsZW5hbWVzID0gYXN0X2NvbXBpbC5maWxlbmFtZXM7XG4gICAgICAgIHZhcmlhYmxlcztcbiAgICAgICAgcnVsZXM7XG4gICAgICAgIG9ic2VydmFibGVzO1xuICAgICAgICBpbml0O1xuICAgICAgICBwZXJ0dXJiYXRpb25zO1xuICAgICAgICB2b2x1bWVzID0gYXN0X2NvbXBpbC52b2x1bWVzO1xuICAgICAgICB0b2tlbnMgPSBhc3RfY29tcGlsLnRva2VucztcbiAgICAgICAgc2lnbmF0dXJlcyA9IGFzdF9jb21waWwuc2lnbmF0dXJlcztcbiAgICAgICAgY29uZmlndXJhdGlvbnMgPSBhc3RfY29tcGlsLmNvbmZpZ3VyYXRpb25zO1xuICAgICAgfTtcbiAgfVxuIiwidHlwZSB0b2tlbiA9XG4gIHwgRU9GXG4gIHwgQ09NTUFcbiAgfCBET1RcbiAgfCBPUF9QQVJcbiAgfCBDTF9QQVJcbiAgfCBPUF9DVVJcbiAgfCBDTF9DVVJcbiAgfCBPUF9CUkFcbiAgfCBDTF9CUkFcbiAgfCBBVFxuICB8IFNFTUlDT0xPTlxuICB8IFBMVVNcbiAgfCBNSU5VU1xuICB8IE1VTFRcbiAgfCBESVZcbiAgfCBNT0RcbiAgfCBNQVhcbiAgfCBNSU5cbiAgfCBTSU5VU1xuICB8IENPU0lOVVNcbiAgfCBUQU5cbiAgfCBQT1dcbiAgfCBBQlNcbiAgfCBTUVJUXG4gIHwgRVhQT05FTlRcbiAgfCBMT0dcbiAgfCBPUlxuICB8IEFORFxuICB8IE5PVFxuICB8IFRIRU5cbiAgfCBFTFNFXG4gIHwgRElGRlxuICB8IEVRVUFMXG4gIHwgU01BTExFUlxuICB8IEdSRUFURVJcbiAgfCBUUlVFXG4gIHwgRkFMU0VcbiAgfCBJTkZJTklUWVxuICB8IFNIQVJQXG4gIHwgVU5ERVJTQ09SRVxuICB8IFBJUEVcbiAgfCBSQVJcbiAgfCBMUkFSXG4gIHwgTEFSXG4gIHwgRU1BWFxuICB8IFRNQVhcbiAgfCBDUFVUSU1FXG4gIHwgVElNRVxuICB8IEVWRU5UXG4gIHwgTlVMTF9FVkVOVFxuICB8IENPTE9OXG4gIHwgTkVXTElORVxuICB8IEJBQ0tTTEFTSFxuICB8IFNJR05BVFVSRVxuICB8IFRPS0VOXG4gIHwgSU5JVFxuICB8IE9CU1xuICB8IFBMT1RcbiAgfCBQRVJUXG4gIHwgQ09ORklHXG4gIHwgQVBQTFlcbiAgfCBERUxFVEVcbiAgfCBJTlRST1xuICB8IFNOQVBTSE9UXG4gIHwgU1RPUFxuICB8IEZMVVhcbiAgfCBUUkFDS1xuICB8IEFTU0lHTlxuICB8IFBSSU5URlxuICB8IFBMT1RFTlRSWVxuICB8IFNQRUNJRVNfT0ZcbiAgfCBET1xuICB8IFJFUEVBVFxuICB8IEFMQVJNXG4gIHwgUlVOXG4gIHwgTEVUXG4gIHwgSU5UIG9mIChpbnQpXG4gIHwgRkxPQVQgb2YgKGZsb2F0KVxuICB8IElEIG9mIChzdHJpbmcpXG4gIHwgTEFCRUwgb2YgKHN0cmluZylcbiAgfCBTVFJJTkcgb2YgKHN0cmluZylcbiAgfCBTUEFDRSBvZiAoc3RyaW5nKVxuICB8IENPTU1FTlQgb2YgKHN0cmluZylcblxub3BlbiBQYXJzaW5nOztcbmxldCBfID0gcGFyc2VfZXJyb3I7O1xuIyAxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICBsZXQgYWRkX3BvcyBlIHggPVxuICAgICh4LFxuICAgIExvYy5vZl9wb3MgKFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSkgKFBhcnNpbmcucmhzX2VuZF9wb3MgZSkpXG4gIGxldCByaHNfcG9zIGkgPVxuICAgIExvYy5vZl9wb3MgKFBhcnNpbmcucmhzX3N0YXJ0X3BvcyBpKSAoUGFyc2luZy5yaHNfZW5kX3BvcyBpKVxuICBsZXQgZW5kX3BvcyA9IFBhcnNpbmcucmhzX2VuZF9wb3NcbiAgbGV0IHN0YXJ0X3BvcyA9IFBhcnNpbmcucmhzX3N0YXJ0X3Bvc1xuXG4gIGxldCBpbnRlcm5hbF9tZW1vcnkgPSByZWYgW11cbiAgbGV0IGFkZCB4ID0gaW50ZXJuYWxfbWVtb3J5IDo9IHggOjogIWludGVybmFsX21lbW9yeVxuICBsZXQgb3V0cHV0ICgpID1cbiAgICBsZXQgbyA9IExpc3QucmV2ICFpbnRlcm5hbF9tZW1vcnkgaW4gbGV0ICgpID0gaW50ZXJuYWxfbWVtb3J5IDo9IFtdIGluIG9cbiMgMTAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbmxldCB5eXRyYW5zbF9jb25zdCA9IFt8XG4gICAgMCAoKiBFT0YgKik7XG4gIDI1NyAoKiBDT01NQSAqKTtcbiAgMjU4ICgqIERPVCAqKTtcbiAgMjU5ICgqIE9QX1BBUiAqKTtcbiAgMjYwICgqIENMX1BBUiAqKTtcbiAgMjYxICgqIE9QX0NVUiAqKTtcbiAgMjYyICgqIENMX0NVUiAqKTtcbiAgMjYzICgqIE9QX0JSQSAqKTtcbiAgMjY0ICgqIENMX0JSQSAqKTtcbiAgMjY1ICgqIEFUICopO1xuICAyNjYgKCogU0VNSUNPTE9OICopO1xuICAyNjcgKCogUExVUyAqKTtcbiAgMjY4ICgqIE1JTlVTICopO1xuICAyNjkgKCogTVVMVCAqKTtcbiAgMjcwICgqIERJViAqKTtcbiAgMjcxICgqIE1PRCAqKTtcbiAgMjcyICgqIE1BWCAqKTtcbiAgMjczICgqIE1JTiAqKTtcbiAgMjc0ICgqIFNJTlVTICopO1xuICAyNzUgKCogQ09TSU5VUyAqKTtcbiAgMjc2ICgqIFRBTiAqKTtcbiAgMjc3ICgqIFBPVyAqKTtcbiAgMjc4ICgqIEFCUyAqKTtcbiAgMjc5ICgqIFNRUlQgKik7XG4gIDI4MCAoKiBFWFBPTkVOVCAqKTtcbiAgMjgxICgqIExPRyAqKTtcbiAgMjgyICgqIE9SICopO1xuICAyODMgKCogQU5EICopO1xuICAyODQgKCogTk9UICopO1xuICAyODUgKCogVEhFTiAqKTtcbiAgMjg2ICgqIEVMU0UgKik7XG4gIDI4NyAoKiBESUZGICopO1xuICAyODggKCogRVFVQUwgKik7XG4gIDI4OSAoKiBTTUFMTEVSICopO1xuICAyOTAgKCogR1JFQVRFUiAqKTtcbiAgMjkxICgqIFRSVUUgKik7XG4gIDI5MiAoKiBGQUxTRSAqKTtcbiAgMjkzICgqIElORklOSVRZICopO1xuICAyOTQgKCogU0hBUlAgKik7XG4gIDI5NSAoKiBVTkRFUlNDT1JFICopO1xuICAyOTYgKCogUElQRSAqKTtcbiAgMjk3ICgqIFJBUiAqKTtcbiAgMjk4ICgqIExSQVIgKik7XG4gIDI5OSAoKiBMQVIgKik7XG4gIDMwMCAoKiBFTUFYICopO1xuICAzMDEgKCogVE1BWCAqKTtcbiAgMzAyICgqIENQVVRJTUUgKik7XG4gIDMwMyAoKiBUSU1FICopO1xuICAzMDQgKCogRVZFTlQgKik7XG4gIDMwNSAoKiBOVUxMX0VWRU5UICopO1xuICAzMDYgKCogQ09MT04gKik7XG4gIDMwNyAoKiBORVdMSU5FICopO1xuICAzMDggKCogQkFDS1NMQVNIICopO1xuICAzMDkgKCogU0lHTkFUVVJFICopO1xuICAzMTAgKCogVE9LRU4gKik7XG4gIDMxMSAoKiBJTklUICopO1xuICAzMTIgKCogT0JTICopO1xuICAzMTMgKCogUExPVCAqKTtcbiAgMzE0ICgqIFBFUlQgKik7XG4gIDMxNSAoKiBDT05GSUcgKik7XG4gIDMxNiAoKiBBUFBMWSAqKTtcbiAgMzE3ICgqIERFTEVURSAqKTtcbiAgMzE4ICgqIElOVFJPICopO1xuICAzMTkgKCogU05BUFNIT1QgKik7XG4gIDMyMCAoKiBTVE9QICopO1xuICAzMjEgKCogRkxVWCAqKTtcbiAgMzIyICgqIFRSQUNLICopO1xuICAzMjMgKCogQVNTSUdOICopO1xuICAzMjQgKCogUFJJTlRGICopO1xuICAzMjUgKCogUExPVEVOVFJZICopO1xuICAzMjYgKCogU1BFQ0lFU19PRiAqKTtcbiAgMzI3ICgqIERPICopO1xuICAzMjggKCogUkVQRUFUICopO1xuICAzMjkgKCogQUxBUk0gKik7XG4gIDMzMCAoKiBSVU4gKik7XG4gIDMzMSAoKiBMRVQgKik7XG4gICAgMHxdXG5cbmxldCB5eXRyYW5zbF9ibG9jayA9IFt8XG4gIDMzMiAoKiBJTlQgKik7XG4gIDMzMyAoKiBGTE9BVCAqKTtcbiAgMzM0ICgqIElEICopO1xuICAzMzUgKCogTEFCRUwgKik7XG4gIDMzNiAoKiBTVFJJTkcgKik7XG4gIDMzNyAoKiBTUEFDRSAqKTtcbiAgMzM4ICgqIENPTU1FTlQgKik7XG4gICAgMHxdXG5cbmxldCB5eWxocyA9IFwiXFwyNTVcXDI1NVxcXG5cXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG5cXDAxMVxcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxNFxcMDAwXFwwMTRcXDAwMFxcXG5cXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTdcXDAwMFxcXG5cXDAxN1xcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG5cXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG5cXDAyMVxcMDAwXFwwMjFcXDAwMFxcMDIxXFwwMDBcXDAyMVxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcXG5cXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjVcXDAwMFxcXG5cXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcXG5cXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI4XFwwMDBcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMDI4XFwwMDBcXDAyOFxcMDAwXFwwMjhcXDAwMFxcXG5cXDAyOFxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcXG5cXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG5cXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcXG5cXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDM2XFwwMDBcXDAzNlxcMDAwXFwwMzdcXDAwMFxcMDM3XFwwMDBcXDAzN1xcMDAwXFwwMzdcXDAwMFxcXG5cXDAzOFxcMDAwXFwwMzhcXDAwMFxcMDM4XFwwMDBcXDAzOFxcMDAwXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzVcXDAwMFxcXG5cXDAzNVxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQxXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcXG5cXDA0MlxcMDAwXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcXG5cXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ1XFwwMDBcXDA0NVxcMDAwXFwwNDVcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDdcXDAwMFxcXG5cXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG5cXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcXG5cXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcXG5cXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcXG5cXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcXG5cXDA1NVxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcXG5cXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcXG5cXDA2MFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwNjNcXDAwMFxcXG5cXDA2M1xcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcXG5cXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcXG5cXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5bGVuID0gXCJcXDAwMlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFxcblxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDA1XFwwMDBcXDAwN1xcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFxcblxcMDA0XFwwMDBcXDAwOFxcMDAwXFwwMTBcXDAwMFxcMDA2XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA1XFwwMDBcXDAwNlxcMDAwXFxcblxcMDA1XFwwMDBcXDAwMlxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA1XFwwMDBcXDAwMlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwN1xcMDAwXFwwMTFcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFxcblxcMDA3XFwwMDBcXDAxMVxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwNVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwOFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFxcblxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDA3XFwwMDBcXDAwMVxcMDAwXFxcblxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDA2XFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwNVxcMDAwXFxcblxcMDAyXFwwMDBcXDAwNlxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwNVxcMDAwXFxcblxcMDA1XFwwMDBcXDAwNlxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFxcblxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDA3XFwwMDBcXDAwNVxcMDAwXFwwMDRcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA1XFwwMDBcXDAwM1xcMDAwXFxcblxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDVcXDAwMFxcMDA3XFwwMDBcXDAwM1xcMDAwXFxcblxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwNVxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAyXFwwMDBcXDAwNVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwNVxcMDAwXFxcblxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcIlxuXG5sZXQgeXlkZWZyZWQgPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjQ0XFwwMDBcXDAwMFxcMDAwXFwyNDNcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyMTFcXDAwMFxcMjQ2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMjQ3XFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwyMzZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTMyXFwwMDBcXDEzM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNFxcMDAwXFwwMDBcXDAwMFxcMjM3XFwwMDBcXDI0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5N1xcMDAwXFwxOThcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMThcXDAwMFxcMTE5XFwwMDBcXFxuXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDgyXFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA2XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDc5XFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjMzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTNcXDAwMFxcMDAwXFwwMDBcXDE1MlxcMDAwXFwyMzVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQxXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTMwXFwwMDBcXDEyMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMzhcXDAwMFxcMjI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDAwMFxcMDAwXFwxNjVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzJcXDAwMFxcMTU4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMxXFwwMDBcXFxuXFwyMjlcXDAwMFxcMjI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcMDcxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODZcXDAwMFxcMDAwXFwwMDBcXDE4NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3NVxcMDAwXFwxNzBcXDAwMFxcMTE1XFwwMDBcXDExNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwOTZcXDAwMFxcMDk3XFwwMDBcXDA5OFxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDA5NVxcMDAwXFwxMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDAwMFxcMDAwXFwyMjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTYxXFwwMDBcXFxuXFwxNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwxMzlcXDAwMFxcMTM3XFwwMDBcXFxuXFwxNDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgyXFwwMDBcXDE4NVxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTkwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDE5NVxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDBcXFxuXFwwOTBcXDAwMFxcMTE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNVxcMDAwXFwxMjRcXDAwMFxcMTIzXFwwMDBcXFxuXFwxMjJcXDAwMFxcMTI3XFwwMDBcXDEyOVxcMDAwXFwwMDBcXDAwMFxcMDc1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTdcXDAwMFxcMTU1XFwwMDBcXDE1NlxcMDAwXFwxNTRcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM0XFwwMDBcXFxuXFwwNThcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTc5XFwwMDBcXDE3NlxcMDAwXFwxNzdcXDAwMFxcMDAwXFwwMDBcXDE5OVxcMDAwXFwxOTRcXDAwMFxcMDkzXFwwMDBcXFxuXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwxMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTY0XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwyMjFcXDAwMFxcMjE3XFwwMDBcXDIxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3M1xcMDAwXFwwMDBcXDAwMFxcMTc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjBcXDAwMFxcMjE4XFwwMDBcXDE2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUxXFwwMDBcXFxuXFwxNzFcXDAwMFxcMTcyXFwwMDBcXDE4MVxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2MlxcMDAwXFwwMDBcXDAwMFxcMTYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXFxuXFwyMDVcXDAwMFxcMjE1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTM1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMFxcMDIxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwMzBcXDAwMFxcMDA4XFwwMDBcXDAxMlxcMDAwXFwwMTBcXDAwMFxcMDA5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDBcXFxuXFwxNDdcXDAwMFxcMTQ4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDAwMFxcMDAwXFwxMTRcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDM2XFwwMDBcXDAzOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjRcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMTVcXDAwMFxcMDAwXFwwMDBcXDAyOVxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXFxuXFwwMzVcXDAwMFxcMDM4XFwwMDBcXDAzN1xcMDAwXFwwMjVcXDAwMFxcMDI3XFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuXFwwMTZcXDAwMFxcMDE4XFwwMDBcXDAxOVxcMDAwXFwwNTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDZcXDAwMFxcMDQ1XFwwMDBcXDAzNFxcMDAwXFwwMDBcXDAwMFxcMDQ0XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0M1xcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA1XFwwMDBcXFxuXFwwMTBcXDAwMFxcMDEzXFwwMDBcXDAxNlxcMDAwXFwwMThcXDAwMFxcMTMxXFwwMDBcXDA5M1xcMDAwXFwyNDJcXDAwMVxcMjQzXFwwMDFcXFxuXFwwMTVcXDAwMlxcMjMwXFwwMDFcXDIzMVxcMDAxXFwwMDhcXDAwMlxcMjA1XFwwMDFcXDIzMlxcMDAxXFwyMzNcXDAwMVxcMjM0XFwwMDFcXFxuXFwyMzVcXDAwMVxcMDIwXFwwMDJcXDE2MlxcMDAxXFwwOTlcXDAwMVxcMTAwXFwwMDFcXDE2M1xcMDAxXFwxNzlcXDAwMVxcMDM4XFwwMDBcXFxuXFwxODFcXDAwMFxcMDM5XFwwMDBcXDA5NFxcMDAwXFwwOTVcXDAwMFxcMDk2XFwwMDBcXDIzNlxcMDAwXFwwOTdcXDAwMFxcMDk4XFwwMDBcXFxuXFwwOTlcXDAwMFxcMTg2XFwwMDBcXDE4N1xcMDAwXFwyMjNcXDAwMFxcMTAyXFwwMDBcXDEwM1xcMDAwXFwxMDRcXDAwMFxcMDQwXFwwMDBcXFxuXFwxNzdcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwxNDlcXDAwMVxcMDM2XFwwMDFcXDEyNlxcMDAwXFwwNDNcXDAwMFxcMTkyXFwwMDBcXFxuXFwwMTdcXDAwMVxcMTg4XFwwMDBcXDA5NlxcMDAxXFwyMTlcXDAwMFxcMjIwXFwwMDBcXDEzMlxcMDAwXFwwNjJcXDAwMFxcMDYzXFwwMDBcXFxuXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA5MlxcMDAxXFwwOTNcXDAwMVxcMTEzXFwwMDBcXDEzOFxcMDAxXFwxMzlcXDAwMVxcMTE0XFwwMDBcXFxuXFwwNDRcXDAwMFxcMDQ1XFwwMDBcIlxuXG5sZXQgeXlzaW5kZXggPSBcIlxcMTE0XFwwMDJcXFxuXFwwNjVcXDI1NVxcMTI5XFwyNTVcXDEzMlxcMjU1XFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAxOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMTFcXDAwN1xcMDAwXFwwMDBcXDA0N1xcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAzNlxcMjU1XFwwMTRcXDI1NVxcMTgzXFwwMDBcXFxuXFwwMzlcXDAwMFxcMTk2XFwyNTVcXDAwMFxcMDAwXFwwMThcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDA3MlxcMjU1XFwxODNcXDAwMFxcMTQ4XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgwXFwyNTVcXFxuXFwxNDlcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTc4XFwyNTVcXDAzOVxcMDAxXFwxNjBcXDAwMlxcMjA0XFwwMDBcXDE4M1xcMDAwXFwyMjNcXDI1NVxcMjM4XFwyNTVcXFxuXFwwMDBcXDAwMFxcMDYxXFwwMTFcXDI0MVxcMjU1XFwxOTlcXDI1NVxcMTE1XFwwMDlcXDA2M1xcMjU1XFwxODNcXDAwOVxcMDU1XFwwMDBcXFxuXFwyMDlcXDAxMlxcMDAwXFwwMDBcXDAzMVxcMDAwXFwwNjNcXDI1NVxcMjE3XFwyNTVcXDIxMVxcMDAyXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMjE2XFwyNTVcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkzXFwwMTRcXFxuXFwyNTFcXDAwOVxcMDYzXFwwMTBcXDA0NlxcMDEyXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDA0NlxcMDEyXFwxNzRcXDI1NVxcMTM1XFwwMDFcXFxuXFwwODBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMjU1XFwwMjNcXDAxM1xcMDAwXFwwMDBcXDExMVxcMDA3XFwwMDBcXDAwMFxcMDk1XFwwMDBcXFxuXFwxODNcXDAwMFxcMDAwXFwwMDBcXDA5M1xcMDE0XFwxODdcXDAxNFxcMTg3XFwwMTRcXDE4N1xcMDE0XFwxODdcXDAxNFxcMTg3XFwwMTRcXFxuXFwxODdcXDAxNFxcMTg3XFwwMTRcXDE4N1xcMDE0XFwxODdcXDAxNFxcMTg3XFwwMTRcXDI0OVxcMDAxXFwxMDRcXDI1NVxcMTQ2XFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMTMzXFwwMDBcXFxuXFwwMDRcXDAwMFxcMTYwXFwwMDJcXDE2NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4NFxcMjU1XFwxODNcXDAwMFxcMTI2XFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDQ3XFwyNTVcXDA0N1xcMjU1XFwxMTFcXDAxMVxcMDAwXFwwMDBcXFxuXFwyMTZcXDI1NVxcMDcwXFwwMTNcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDQ3XFwyNTVcXDAwMFxcMDAwXFwwNDdcXDI1NVxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTAyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDQzXFwyNTVcXFxuXFwxODNcXDAwMFxcMDcwXFwwMDFcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDA3MFxcMDAxXFwwMDBcXDAwMFxcMjE3XFwwMDBcXFxuXFwyMTZcXDAwMFxcMjAzXFwyNTVcXDExMVxcMDA3XFwyMzVcXDAwMFxcMDc2XFwyNTVcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDIwNVxcMDAwXFwxODNcXDAwMFxcMTg3XFwwMTRcXDE4N1xcMDE0XFwxODdcXDAxNFxcMTg3XFwwMTRcXFxuXFwxODdcXDAxNFxcMDkzXFwwMTRcXDA5M1xcMDE0XFwwOTNcXDAxNFxcMDkzXFwwMTRcXDA5M1xcMDE0XFwwOTNcXDAxNFxcMDkzXFwwMTRcXFxuXFwxNzJcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMjU1XFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDEzMVxcMDEwXFwxOTlcXDAxMFxcMDAwXFwwMDBcXDIxMFxcMDAwXFwxMDZcXDAwOVxcMTgzXFwwMDBcXFxuXFwxNzRcXDAwMFxcMjEyXFwyNTVcXDE3OVxcMDAwXFwwOTNcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAxN1xcMDAxXFwwMjVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMTFcXFxuXFwwMzVcXDAwMVxcMTgzXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDA3MFxcMDAxXFwxODNcXDAwMFxcMDkzXFwwMTRcXFxuXFwwOTNcXDAxNFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwOTNcXDAxNFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4N1xcMDE0XFwxODdcXDAxNFxcMDkzXFwwMTRcXDA5NlxcMDAzXFwwMDBcXDAwMFxcMTg3XFwwMTRcXFxuXFwwMDBcXDAwMFxcMTc4XFwyNTVcXDE3OFxcMjU1XFwwMzlcXDAwMVxcMDM5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDkzXFwwMTRcXFxuXFwwNDdcXDI1NVxcMTY0XFwwMDJcXDA5M1xcMDE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMDQ3XFwwMDFcXDA3NFxcMDAxXFwwMDdcXDAwMVxcMDA3XFwwMDFcXDEwNlxcMDA5XFwxODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDA2MVxcMjU1XFwxMDRcXDAwMVxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwOTNcXDAxNFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAzN1xcMDAzXFwxMTdcXDAwMVxcMTgzXFwwMDBcXDA0NlxcMDEyXFwwNzBcXDAwMVxcMDAwXFwwMDBcXFxuXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTIxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMzXFwwMDFcXDAwMVxcMDAwXFwwNzNcXDAwMVxcMDAwXFwwMDBcXFxuXFwxNTVcXDAwMVxcMTgzXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMTExXFwwMDdcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMVxcMDA3XFwwMDFcXDE3NFxcMDAwXFwyMThcXDI1NVxcMTgzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4MVxcMDAxXFwxMzZcXDAwMVxcMjA1XFwwMDFcXDA5M1xcMDE0XFwwNzBcXDAxM1xcMDM1XFwwMDFcXFxuXFwxODNcXDAwMFxcMDQ2XFwwMTJcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwxODNcXDAwMFxcMDcwXFwwMDBcXDIyOFxcMDAxXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE3MFxcMDAxXFwxODNcXDAwMFxcMjQ3XFwwMDFcXFxuXFwwMTNcXDAwNFxcMTExXFwwMDdcXDA5M1xcMDE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwyMTJcXDI1NVxcMTY5XFwwMDFcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwyNDhcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg3XFwwMTRcXDExOVxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwxODNcXDAwMFxcMDA1XFwwMDJcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDE4N1xcMDE0XFwxODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFwwNDRcXDAwMVxcMTgzXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwyMTJcXDI1NVxcMDkzXFwwMTRcXDA5M1xcMDE0XFwxODNcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAxMlxcMDAyXFwxODNcXDAwMFxcMDA3XFwwMDJcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwwMTZcXDAwMlxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAzNFxcMDAyXFwwMTRcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXFxuXFwwMTdcXDAwMlxcMDIzXFwwMDJcXDE0M1xcMjU1XFwwMjRcXDAwMlxcMDI2XFwwMDJcXDA2OFxcMDAwXFwxODNcXDAwMFxcMTUwXFwwMDJcXFxuXFwxNTlcXDAwMlxcMTUxXFwwMDJcXDIzMlxcMDAwXFwxMzlcXDAwMFxcMTk4XFwwMDJcXDE4M1xcMDAwXFwxNjFcXDAwMlxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMTYzXFwwMDJcXDE2NlxcMDAyXFwwMDBcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTU0XFwwMDBcXDAwMFxcMDAwXFwxNzBcXDI1NVxcMDAwXFwwMDBcXDA5N1xcMDAyXFwxNjlcXDAwMlxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTYxXFwyNTVcXDEwOVxcMDAyXFwxMTBcXDAwMlxcMTExXFwwMDJcXDE2OFxcMjU1XFwwMDBcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMTE3XFwwMDJcXDExNlxcMDAzXFwwMDBcXDAwMFxcMTgzXFwwMDBcXFxuXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTcwXFwyNTVcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU0XFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTIwXFwwMDJcXFxuXFwxOTFcXDAwMlxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDE4M1xcMDAwXFwyMDNcXDAwMlxcMTgzXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5cmluZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMTIyXFwwMDhcXDAxOFxcMDA2XFwxNzRcXDAwOVxcMDExXFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDJcXDA2OFxcMDAyXFxcblxcMDY4XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5M1xcMDA2XFxcblxcMTYxXFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTIzXFwwMDBcXDEzMlxcMDAyXFwwMTFcXDAxMVxcMTA3XFwyNTVcXDAxMVxcMDExXFxcblxcMTQwXFwwMTJcXDE0MVxcMDAyXFwxMDdcXDI1NVxcMTQ5XFwwMDFcXDA3MlxcMDAzXFwxODhcXDAwNlxcMjA4XFwwMDJcXDA1MlxcMDAxXFxcblxcMTI3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMTRcXDAxMVxcMDExXFxcblxcMDExXFwwMTFcXDI0M1xcMDAxXFwwMzlcXDAwNVxcMDkzXFwwMTJcXDI0M1xcMjU1XFwxNTFcXDAwMVxcMjE3XFwwMDRcXDA0MVxcMDAwXFxcblxcMTEwXFwyNTVcXDExN1xcMDEzXFwwMDBcXDAwMFxcMTc0XFwwMDlcXDE3OVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAxNFxcMjM0XFwwMTRcXDIzNFxcMDE0XFwyMzRcXDAxNFxcMjM0XFwwMTRcXDIzNFxcMDE0XFxcblxcMjM0XFwwMTRcXDIzNFxcMDE0XFwyMzRcXDAxNFxcMjM0XFwwMTRcXDIzNFxcMDE0XFwwMTVcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExMFxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2MlxcMDAxXFxcblxcMDAwXFwwMDBcXDIyOFxcMDAyXFwyMzVcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDZcXDAwNlxcMjU1XFwwMDZcXDA2MlxcMDA3XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2NFxcMDEzXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEwXFwyNTVcXDExMFxcMjU1XFxcblxcMTYxXFwwMTFcXDAwMFxcMDAwXFwyMDNcXDAwNFxcMDAwXFwwMDBcXDIzM1xcMDEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODVcXDAwMFxcMDQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDIwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0OFxcMDAyXFxcblxcMjM0XFwwMTRcXDIzNFxcMDE0XFwyMzRcXDAxNFxcMjM0XFwwMTRcXDIzNFxcMDE0XFwxNDBcXDAxNFxcMTQwXFwwMTRcXDE0MFxcMDE0XFxcblxcMTQwXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMTRcXDE0MFxcMDE0XFwwMDBcXDAwMFxcMTQwXFwwMTRcXDEzMlxcMDAyXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjJcXDAwOFxcMTQ5XFwwMDFcXDAwMFxcMDAwXFwxMjJcXDAwOFxcMDAwXFwwMDBcXDAyM1xcMDA5XFxcblxcMDAwXFwwMDBcXDA5NlxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAxMVxcMDExXFwwMTFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjRcXDAwMVxcMTc0XFwwMDlcXDAwMFxcMDAwXFwxNDFcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDk5XFwyNTVcXDEzMlxcMDAyXFwxNDBcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMDExXFxcblxcMDM4XFwwMDBcXDAyMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAyXFwwMDJcXDAwMFxcMDAwXFwxNDBcXDAxNFxcMTQwXFwwMTRcXDAzOVxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE0MFxcMDE0XFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM0XFwwMTRcXDIzNFxcMDE0XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDE0XFxcblxcMDAwXFwwMDBcXDIwNFxcMDAzXFwwMDBcXDAwMFxcMjM0XFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDE0XFwxMTBcXDI1NVxcMTA4XFwwMDdcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE0MFxcMDE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3NFxcMDA5XFxcblxcMDAwXFwwMDBcXDIyMVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE0MFxcMDE0XFwyMzZcXDAwN1xcMTI5XFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDUwXFwwMDBcXDA5M1xcMDEyXFwwMDBcXDAwMFxcMDAyXFwwMDJcXDA0MVxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMlxcMDAwXFwwMDBcXDA4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA1MlxcMDAzXFwxNTVcXDAwM1xcMDU5XFwwMDRcXDEzOVxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwOTlcXDI1NVxcMTMyXFwwMDJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE3MFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNFxcMDE0XFxcblxcMTc0XFwwMDlcXDAwMFxcMDAwXFwxNzJcXDAwMlxcMDAwXFwwMDBcXDIwMFxcMDA4XFwwMDBcXDAwMFxcMTMwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE1M1xcMDAxXFwyMjFcXDAwMlxcMDAwXFwwMDBcXDI0MlxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDE0XFxcblxcMjMzXFwwMTNcXDI0NVxcMDAyXFwyNTJcXDAwMlxcMDAwXFwwMDBcXDA5M1xcMDEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDQxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNVxcMDAzXFwwMDVcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEzMlxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTRcXDAwNVxcMTEzXFwwMDZcXDE0MFxcMDE0XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDA4XFwyMzBcXDAwOFxcMDE4XFwyNTVcXDA5OVxcMjU1XFxcblxcMDAwXFwwMDBcXDA2NVxcMDA2XFwwMDBcXDAwMFxcMDA0XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDE1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwNVxcMjM0XFwwMTRcXDAwMFxcMDAwXFxcblxcMTUzXFwwMDFcXDAwNVxcMDAzXFwwMDBcXDAwMFxcMjQyXFwwMDJcXDEyMlxcMDA4XFwwMDBcXDAwMFxcMjM0XFwwMTRcXDAwMFxcMDAwXFxcblxcMjI3XFwwMDdcXDE5NVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM4XFwwMDFcXDEzMVxcMDAxXFxcblxcMjIxXFwwMDJcXDE2MFxcMDA2XFwwMDBcXDAwMFxcMDk5XFwyNTVcXDE0MFxcMDE0XFwxNDBcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDI1NVxcMDk5XFwyNTVcXDAwMFxcMDAwXFxcblxcMTU3XFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg2XFwwMDdcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyMlxcMDAxXFwwMDBcXDAwMFxcMDkzXFwwMDZcXDA5M1xcMDA2XFxcblxcMjIxXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDhcXDAwMFxcMDAwXFwyMjFcXDAwMFxcMTMxXFwwMDFcXDAwNVxcMDAzXFxcblxcMDAwXFwwMDBcXDA5OVxcMjU1XFwxNzBcXDAwOFxcMjM4XFwwMDVcXDAyMVxcMDA4XFwwMDBcXDAwMFxcMjM5XFwwMDJcXDIzOVxcMDAyXFxcblxcMTE4XFwwMDBcXDIzOVxcMDAyXFwyMzlcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTBcXDAwMlxcMDEwXFwwMDNcXDE3OFxcMDAxXFxcblxcMDExXFwwMDNcXDAyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDA1XFwwMDFcXDA1OVxcMDAzXFwwMTNcXDAwM1xcMDEwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjIyXFwwMDFcXDAwMFxcMDAwXFwwMDVcXDAwM1xcMDAwXFwwMDBcXDA3OVxcMDA4XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODVcXDAwMVxcMDk5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMjU1XFwyNDJcXDAwMFxcMDAwXFwwMDBcXDE5OFxcMjU1XFxcblxcMDY1XFwwMDZcXDE5OVxcMDAyXFwxNzhcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFxcblxcMTk5XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk5XFwwMDJcXDE5OVxcMDAyXFwxOTRcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEzMVxcMDAxXFwyMzVcXDAwMVxcMjM1XFwwMDFcXDAyOFxcMDAyXFwwMDBcXDAwMFxcMTMyXFwwMDJcXDEyNFxcMDAzXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDJcXDE5OFxcMjU1XFxcblxcMTU3XFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAzXFxcblxcMjM1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNVxcMDAzXFxcblxcMDE1XFwwMDNcXDIzNVxcMDAxXFwwMjZcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk5XFwwMDJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDNcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzVcXDAwMVxcMjM1XFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIzNVxcMDAxXFwwMjhcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM1XFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwM1xcMDAwXFwwMDBcXDIzNVxcMDAxXFwwMDBcXDAwMFwiXG5cbmxldCB5eWdpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDEyXFwwMDNcXDAwMFxcMDAwXFwwMjdcXDI1NFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg2XFwyNTRcXDAwMFxcMDAwXFwwNjZcXDI1NFxcMjA4XFwyNTVcXDAyNFxcMjU0XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjJcXDI1NFxcMTM4XFwyNTRcXDA3N1xcMjU0XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMTA3XFwwMDFcXDA0NVxcMjU1XFwwNDhcXDAwMlxcXG5cXDA1M1xcMDAyXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDEyM1xcMjU1XFwxMzNcXDAwM1xcMDAwXFwwMDBcXDAzMFxcMDAzXFwyNTJcXDAwM1xcXG5cXDA1M1xcMjU1XFwxNDlcXDI1NVxcMDgzXFwwMDNcXDE0NlxcMDAyXFwxNDdcXDAwMlxcMDAwXFwwMDBcXDE3OVxcMDAzXFwxODVcXDAwM1xcXG5cXDEzNlxcMDAyXFwwMDBcXDAwMFxcMTg2XFwwMDJcXDEzNFxcMjU1XFwwMzVcXDAwM1xcMjE0XFwyNTVcXDI1MlxcMjU1XFwwNDFcXDI1NVxcXG5cXDAwMFxcMDAwXFwxMjVcXDI1NVxcMjM4XFwwMDJcXDIyMFxcMjU0XFwwMDBcXDAwMFxcMTE1XFwyNTVcXDE5MlxcMDAyXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMzZcXDAwNFwiXG5cbmxldCB5eXRhYmxlc2l6ZSA9IDQxNTNcbmxldCB5eXRhYmxlID0gXCJcXDAxMVxcMDAwXFxcblxcMDE0XFwwMDBcXDAxN1xcMDAwXFwwMTlcXDAwMFxcMDMyXFwwMDFcXDE0NVxcMDAxXFwwMjBcXDAwMFxcMDIxXFwwMDBcXDAyMlxcMDAwXFxcblxcMTMzXFwwMDBcXDA1OVxcMDAwXFwyMzNcXDAwMFxcMjI0XFwwMDBcXDEzN1xcMDAwXFwyMTdcXDAwMVxcMjA4XFwwMDBcXDEwMFxcMDAwXFxcblxcMTAxXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMjAxXFwwMDBcXDE2OVxcMDAwXFwwNTZcXDAwMFxcMTA1XFwwMDBcXDEwNlxcMDAwXFxcblxcMjUyXFwwMDFcXDAwMVxcMDAwXFwxMDdcXDAwMFxcMTA4XFwwMDBcXDEwOVxcMDAwXFwxMTBcXDAwMFxcMTExXFwwMDBcXDExMlxcMDAwXFxcblxcMTE1XFwwMDBcXDExNlxcMDAwXFwxMTdcXDAwMFxcMTE4XFwwMDBcXDExOVxcMDAwXFwwMDFcXDAwMFxcMTIyXFwwMDBcXDA0MVxcMDAyXFxcblxcMDAxXFwwMDBcXDA2NVxcMDAxXFwxODdcXDAwMFxcMTkyXFwwMDFcXDIwMFxcMDAwXFwxMjhcXDAwMFxcMTI5XFwwMDBcXDEzMFxcMDAwXFxcblxcMDI0XFwwMDBcXDE2OFxcMDAwXFwxMzRcXDAwMFxcMTM1XFwwMDBcXDEzNlxcMDAwXFwxMjFcXDAwMFxcMTM4XFwwMDBcXDEzOVxcMDAwXFxcblxcMTQwXFwwMDBcXDE0MVxcMDAxXFwxNDJcXDAwMFxcMTQ0XFwwMDBcXDA5N1xcMDAxXFwxNDRcXDAwMVxcMTg5XFwwMDBcXDA5MVxcMDAxXFxcblxcMDA2XFwwMDBcXDE0N1xcMDAwXFwxNDhcXDAwMFxcMTQ5XFwwMDBcXDE1MFxcMDAwXFwxNTFcXDAwMFxcMTUyXFwwMDBcXDE1M1xcMDAwXFxcblxcMTU0XFwwMDBcXDE1NVxcMDAwXFwxNTZcXDAwMFxcMTU3XFwwMDBcXDE1OFxcMDAwXFwyMjFcXDAwMFxcMjIyXFwwMDBcXDA1OFxcMDAxXFxcblxcMTU5XFwwMDBcXDE0MVxcMDAwXFwyMDZcXDAwMVxcMDc5XFwwMDJcXDE3NFxcMDAwXFwwMTRcXDAwMFxcMDAxXFwwMDBcXDEyMFxcMDAwXFxcblxcMDgxXFwwMDJcXDE0NVxcMDAwXFwwNDVcXDAwMVxcMDE0XFwwMDBcXDA0N1xcMDAxXFwwNDVcXDAwMlxcMTYwXFwwMDBcXDA1NlxcMDAwXFxcblxcMDUxXFwwMDFcXDI1M1xcMDAxXFwwMDFcXDAwMFxcMDU3XFwwMDJcXDE3MVxcMDAwXFwwMzNcXDAwMVxcMDAxXFwwMDBcXDA1NlxcMDAxXFxcblxcMDE4XFwwMDFcXDAyNFxcMDAwXFwwMDFcXDAwMFxcMTc2XFwwMDBcXDEyNFxcMDAxXFwxMDBcXDAwMFxcMTk3XFwwMDBcXDAwMVxcMDAwXFxcblxcMDUwXFwwMDBcXDA1MFxcMDAwXFwyNDdcXDAwMVxcMDA3XFwwMDBcXDA1MFxcMDAwXFwyMDVcXDAwMFxcMjA2XFwwMDBcXDIwN1xcMDAwXFxcblxcMDk5XFwwMDJcXDIwOVxcMDAwXFwwNDRcXDAwMVxcMjEwXFwwMDBcXDAzNlxcMDAwXFwwNzBcXDAwMlxcMTQ0XFwwMDBcXDIxOFxcMDAwXFxcblxcMDEyXFwwMDBcXDAwMVxcMDAwXFwyMThcXDAwMFxcMDE1XFwwMDBcXDIwMFxcMDAxXFwwODZcXDAwMlxcMDkxXFwwMDFcXDAyMlxcMDAyXFxcblxcMTAwXFwwMDBcXDIzMlxcMDAwXFwwOThcXDAwMVxcMTQyXFwwMDBcXDE5MFxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDIzNVxcMDAwXFxcblxcMjM3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMTQzXFwwMDBcXDE0NlxcMDAwXFwyMzhcXDAwMFxcMjM5XFwwMDBcXDI0MFxcMDAwXFxcblxcMjQxXFwwMDBcXDI0MlxcMDAwXFwyNDNcXDAwMFxcMjQ0XFwwMDBcXDI0NVxcMDAwXFwyNDZcXDAwMFxcMjQ3XFwwMDBcXDI1M1xcMDAwXFxcblxcMjU0XFwwMDBcXDI1NVxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFxcblxcMTEzXFwwMDFcXDIyMlxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDA3MVxcMDAyXFwwMDhcXDAwMVxcMDA5XFwwMDFcXDAyNFxcMDAwXFxcblxcMDAxXFwwMDBcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDA3XFwwMDBcXDAxMlxcMDAxXFwyNTBcXDAwMFxcMDA3XFwwMDBcXDAyMVxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNTBcXDAwMVxcMDAxXFwwMDBcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDUwXFwwMDBcXDAzMVxcMDAyXFxcblxcMTYxXFwwMDBcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMTI0XFwwMDBcXDAyNVxcMDAxXFwwMDFcXDAwMFxcMDA3XFwwMDBcXDAyNlxcMDAxXFxcblxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwNTRcXDAwMVxcMTcwXFwwMDBcXDEyNVxcMDAwXFwyMjhcXDAwMVxcMTM3XFwwMDFcXDIyOFxcMDAxXFxcblxcMTc2XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDk3XFwwMDFcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMjAwXFwwMDBcXDAyNFxcMDAwXFwwMjZcXDAwMlxcMjAxXFwwMDBcXDAyN1xcMDAyXFwwNDNcXDAwMVxcMTc1XFwwMDFcXDA0NlxcMDAxXFxcblxcMTc2XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDc3XFwwMDFcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDc4XFwwMDFcXDAwMVxcMDAwXFxcblxcMDU1XFwwMDFcXDE1NlxcMDAxXFwwMDdcXDAwMFxcMDAxXFwwMDBcXDA3MlxcMDAyXFwwNTlcXDAwMVxcMDYwXFwwMDFcXDA3NlxcMDAyXFxcblxcMTc4XFwwMDBcXDIxM1xcMDAxXFwxNzlcXDAwMFxcMTU1XFwwMDFcXDAwMVxcMDAwXFwyMjlcXDAwMVxcMDYxXFwwMDFcXDIyOVxcMDAxXFxcblxcMDYyXFwwMDFcXDE3MlxcMDAwXFwwNjRcXDAwMVxcMDM2XFwwMDBcXDIyNVxcMDAwXFwwMDdcXDAwMFxcMTcyXFwwMDFcXDAyNVxcMDAwXFxcblxcMTYwXFwwMDFcXDE2OFxcMDAxXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDA3NVxcMDAxXFwwMjRcXDAwMFxcMDE0XFwwMDFcXDE3M1xcMDAwXFxcblxcMDA4XFwwMDBcXDAwOVxcMDAwXFwyMDJcXDAwMFxcMDgwXFwwMDFcXDA4MVxcMDAxXFwwODJcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDgzXFwwMDFcXDAyM1xcMDAwXFwwOTBcXDAwMVxcMDAxXFwwMDBcXDE4MlxcMDAwXFwwNzlcXDAwMVxcMDk0XFwwMDFcXDIwMVxcMDAwXFxcblxcMTY5XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMDFcXDAwMFxcMTY5XFwwMDBcXDE4NlxcMDAxXFxcblxcMTAzXFwwMDFcXDA5OFxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEwN1xcMDAxXFwwMzZcXDAwMFxcMjAxXFwwMDFcXDAwMVxcMDAwXFxcblxcMTEwXFwwMDFcXDAwMVxcMDAwXFwxMTFcXDAwMVxcMTEyXFwwMDFcXDAwMVxcMDAwXFwxMTRcXDAwMVxcMTg3XFwwMDBcXDAwMVxcMDAwXFxcblxcMjAwXFwwMDBcXDExN1xcMDAxXFwwMDFcXDAwMFxcMTE4XFwwMDFcXDE4N1xcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDE2OVxcMDAwXFxcblxcMTY5XFwwMDBcXDEwMFxcMDAwXFwxMjJcXDAwMVxcMTY4XFwwMDBcXDEyMFxcMDAxXFwxMjFcXDAwMVxcMTgwXFwwMDBcXDIyMlxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAzMFxcMDAyXFwxNjBcXDAwMVxcMTkxXFwwMDFcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMjVcXDAwMVxcMDQ2XFwwMDBcXDEyNlxcMDAxXFwxMjdcXDAwMVxcMTYxXFwwMDFcXDAyNlxcMDAwXFxcblxcMDI3XFwwMDBcXDAxNVxcMDAxXFwwNTVcXDAwMlxcMTY4XFwwMDBcXDE2OFxcMDAwXFwxNjhcXDAwMFxcMTMyXFwwMDFcXDEzM1xcMDAxXFxcblxcMTc0XFwwMDBcXDA5MFxcMDAxXFwwMDFcXDAwMFxcMjAxXFwwMDBcXDE2OVxcMDAwXFwxNDJcXDAwMVxcMTc0XFwwMDBcXDAxOFxcMDAyXFxcblxcMTQzXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTQ3XFwwMDFcXDE2OVxcMDAwXFwyMjhcXDAwMVxcMTUwXFwwMDFcXDE1MVxcMDAxXFxcblxcMTUyXFwwMDFcXDIyOFxcMDAxXFwyMThcXDAwMFxcMTU0XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTk4XFwwMDBcXDE1N1xcMDAxXFxcblxcMDAxXFwwMDBcXDIyOVxcMDAwXFwxODdcXDAwMFxcMTg4XFwwMDFcXDIwMFxcMDAwXFwwMDFcXDAwMFxcMTc0XFwwMDBcXDE3NFxcMDAwXFxcblxcMTc0XFwwMDBcXDE2OFxcMDAwXFwwMDFcXDAwMFxcMjE0XFwwMDFcXDAwMVxcMDAwXFwyMTVcXDAwMVxcMTQ0XFwwMDBcXDE5NVxcMDAwXFxcblxcMTY2XFwwMDFcXDE2OFxcMDAwXFwxNDRcXDAwMFxcMDAxXFwwMDBcXDE2OVxcMDAxXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE0NFxcMDAwXFxcblxcMTQ0XFwwMDBcXDIzNFxcMDAwXFwwMzhcXDAwMlxcMTQyXFwwMDBcXDAzOVxcMDAyXFwyMjlcXDAwMVxcMTc3XFwwMDFcXDE0MlxcMDAwXFxcblxcMTc4XFwwMDFcXDIyOVxcMDAxXFwxOTFcXDAwMFxcMTYxXFwwMDFcXDE0MlxcMDAwXFwxNDJcXDAwMFxcMjE4XFwwMDBcXDE4NVxcMDAxXFxcblxcMTkxXFwwMDBcXDA2M1xcMDAyXFwxODdcXDAwMVxcMDY0XFwwMDJcXDE3NFxcMDAwXFwxODlcXDAwMVxcMDAxXFwwMDBcXDE5MFxcMDAxXFxcblxcMDU2XFwwMDJcXDAwMVxcMDAwXFwxOTRcXDAwMVxcMTk1XFwwMDFcXDA5MFxcMDAxXFwxOThcXDAwMVxcMjUyXFwwMDBcXDEwMFxcMDAwXFxcblxcMjAyXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMDNcXDAwMVxcMjA0XFwwMDFcXDAxM1xcMDAxXFxcblxcMDAxXFwwMDBcXDIyNlxcMDAwXFwyMDlcXDAwMVxcMjEwXFwwMDFcXDIxMVxcMDAxXFwyMzBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMTZcXDAwMVxcMTc2XFwwMDBcXDE3OFxcMDAxXFxcblxcMDE4XFwwMDFcXDAwMVxcMDAwXFwyMTlcXDAwMVxcMDAxXFwwMDBcXDAyNFxcMDAxXFwyMjFcXDAwMVxcMTQ0XFwwMDBcXDIyMFxcMDAxXFxcblxcMDAxXFwwMDBcXDI1MVxcMDAwXFwwMTlcXDAwMlxcMjQ0XFwwMDFcXDAwMVxcMDAwXFwyNDVcXDAwMVxcMjQ2XFwwMDFcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTBcXDAwMVxcMTQyXFwwMDBcXDI1MVxcMDAxXFwyMDRcXDAwMVxcMTkxXFwwMDBcXDE4NVxcMDAwXFxcblxcMjU0XFwwMDFcXDE5NFxcMDAwXFwyNTVcXDAwMVxcMDUzXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMlxcMDAyXFwwMDJcXDAwM1xcMDAyXFxcblxcMDA0XFwwMDJcXDAwNVxcMDAyXFwwNTJcXDAwMVxcMDE2XFwwMDFcXDAwNlxcMDAyXFwwNjVcXDAwMlxcMDA5XFwwMDJcXDAxMFxcMDAyXFxcblxcMDExXFwwMDJcXDAwN1xcMDAwXFwyMTFcXDAwMFxcMjEzXFwwMDBcXDIxNVxcMDAwXFwwMzZcXDAwMlxcMDU3XFwwMDFcXDAxMlxcMDAyXFxcblxcMDEzXFwwMDJcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA2M1xcMDAxXFwwMzdcXDAwMlxcMDgxXFwwMDBcXDAyOVxcMDAxXFxcblxcMDMwXFwwMDFcXDA3NlxcMDAxXFwwMjFcXDAwMlxcMDY2XFwwMDJcXDAwMVxcMDAwXFwwOTVcXDAwMVxcMDIzXFwwMDJcXDAzOFxcMDAxXFxcblxcMTAxXFwwMDFcXDAzOVxcMDAxXFwwMDFcXDAwMFxcMDkwXFwwMDJcXDAwMVxcMDAwXFwwMzJcXDAwMlxcMDAxXFwwMDBcXDAwOFxcMDAwXFxcblxcMDA5XFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDkxXFwwMDJcXDA0MlxcMDAyXFwwNTNcXDAwMFxcMDQ0XFwwMDJcXDE3OFxcMDAxXFxcblxcMDQ2XFwwMDJcXDA0N1xcMDAyXFwwMDFcXDAwMFxcMDI0XFwwMDBcXDA4N1xcMDAyXFwxMDRcXDAwMVxcMDUwXFwwMDJcXDA1MVxcMDAyXFxcblxcMDAxXFwwMDBcXDEwNVxcMDAxXFwwNTJcXDAwMlxcMDUzXFwwMDJcXDA1NFxcMDAyXFwwODlcXDAwMFxcMDkwXFwwMDBcXDAwMVxcMDAwXFxcblxcMjA0XFwwMDFcXDA1OFxcMDAyXFwwNTlcXDAwMlxcMDYwXFwwMDJcXDEwOVxcMDAxXFwwNjFcXDAwMlxcMDYyXFwwMDJcXDAwMVxcMDAwXFxcblxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwMDFcXDAwMFxcMjM2XFwwMDFcXDA1NFxcMDAwXFwyMzdcXDAwMVxcMDY5XFwwMDJcXDE3OFxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTYyXFwwMDBcXDE2M1xcMDAwXFwwMDFcXDAwMFxcMDc3XFwwMDJcXDA3OFxcMDAyXFxcblxcMTM0XFwwMDFcXDAyNVxcMDAwXFwwMjZcXDAwMFxcMDI3XFwwMDBcXDAzNVxcMDAxXFwwMDFcXDAwMFxcMDgyXFwwMDJcXDA4M1xcMDAyXFxcblxcMDg0XFwwMDJcXDA4NVxcMDAyXFwyMDRcXDAwMVxcMDAxXFwwMDBcXDIyMlxcMDAxXFwwODhcXDAwMlxcMDI4XFwwMDBcXDAyOVxcMDAwXFxcblxcMDMwXFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzNFxcMDAwXFwwODlcXDAwMlxcMTM2XFwwMDFcXDIyM1xcMDAxXFxcblxcMjI0XFwwMDFcXDIzOFxcMDAxXFwyMzlcXDAwMVxcMTM1XFwwMDFcXDA5MlxcMDAyXFwwOTNcXDAwMlxcMDAxXFwwMDBcXDA1M1xcMDAwXFxcblxcMDk2XFwwMDJcXDA5N1xcMDAyXFwwMjNcXDAwMFxcMDAxXFwwMDBcXDAzNVxcMDAwXFwwOThcXDAwMlxcMDAxXFwwMDBcXDAzNlxcMDAwXFxcblxcMDM3XFwwMDBcXDEwMFxcMDAyXFwwMjNcXDAwMFxcMTAyXFwwMDJcXDIyNVxcMDAxXFwyMjZcXDAwMVxcMjI3XFwwMDFcXDA0MlxcMDAxXFxcblxcMjIxXFwwMDBcXDIyMlxcMDAwXFwyMjhcXDAwMVxcMTQ2XFwwMDFcXDA3MFxcMDAxXFwwNzFcXDAwMVxcMDcyXFwwMDFcXDA3M1xcMDAxXFxcblxcMTY0XFwwMDBcXDE2NVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDU0XFwwMDBcXDI0MFxcMDAxXFxcblxcMTUzXFwwMDFcXDI0MVxcMDAxXFwxNThcXDAwMVxcMTI5XFwwMDFcXDA1OFxcMDAxXFwwODVcXDAwMVxcMDg3XFwwMDFcXDA0N1xcMDAwXFxcblxcMDQ3XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDQ3XFwwMDBcXDAwMVxcMDAwXFwxNTlcXDAwMVxcMTAyXFwwMDFcXDA0N1xcMDAwXFxcblxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFxcblxcMDU2XFwwMDBcXDA1N1xcMDAwXFwyMjlcXDAwMVxcMTAzXFwwMDBcXDAwMVxcMDAwXFwwNThcXDAwMFxcMTY0XFwwMDFcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTY1XFwwMDFcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDExOVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxNjdcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjA3XFwwMDFcXDIwOFxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE4MFxcMDAxXFxcblxcMDAxXFwwMDBcXDE4MVxcMDAxXFwxMjhcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMzFcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAyNFxcMDAwXFwwNDdcXDAwMFxcMDAxXFwwMDBcXDEzNlxcMDAwXFxcblxcMDAxXFwwMDBcXDE0OFxcMDAxXFwxODJcXDAwMVxcMDAxXFwwMDBcXDIyN1xcMDAwXFwyMjhcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIyM1xcMDAxXFxcblxcMjI0XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTA3XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE5M1xcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMjVcXDAwMFxcMDI2XFwwMDBcXDAyN1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE5NlxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxOTlcXDAwMVxcMjQ4XFwwMDBcXDAwMVxcMDAwXFwyMTJcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMTQ4XFwwMDFcXDAzNVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIxOFxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEzMFxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDJcXDAwMVxcMDAwXFwwMTZcXDAwMlxcMDAxXFwwMDBcXDA3OFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDM2XFwwMDBcXDAxN1xcMDAyXFwwMDFcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwMDdcXDAwMlxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA0OFxcMDAwXFwwNjZcXDAwMVxcMDY3XFwwMDFcXDAxNFxcMDAyXFxcblxcMDI0XFwwMDJcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTA4XFwwMDBcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDI1XFwwMDJcXDAyOFxcMDAyXFxcblxcMDAxXFwwMDBcXDAyOVxcMDAyXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI0OFxcMDAxXFwyNDlcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDQ4XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFxcblxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDlcXDAwMFxcMDMzXFwwMDJcXDAzNVxcMDAyXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFxcblxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMjAwXFwwMDBcXDEzMFxcMDAxXFwwMzRcXDAwMlxcMjAxXFwwMDBcXDA0OFxcMDAyXFxcblxcMDQzXFwwMDJcXDA0OVxcMDAyXFwxNjRcXDAwMFxcMTY1XFwwMDBcXDA2N1xcMDAyXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDA2OFxcMDAyXFxcblxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFxcblxcMDczXFwwMDJcXDA3NFxcMDAyXFwwNzVcXDAwMlxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTY2XFwwMDBcXDE2N1xcMDAwXFxcblxcMTY4XFwwMDBcXDE2OVxcMDAwXFwwODBcXDAwMlxcMDk0XFwwMDJcXDA5NVxcMDAyXFwxMDNcXDAwMFxcMDQwXFwwMDJcXDIzN1xcMDAxXFxcblxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEzNlxcMDAwXFxcblxcMTAxXFwwMDJcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTM2XFwwMDBcXDAyNFxcMDAwXFwyMDJcXDAwMFxcMTM0XFwwMDBcXDAwMVxcMDAwXFxcblxcMTM2XFwwMDBcXDEzNlxcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTAzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDU3XFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFxcblxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMTBcXDAwMFxcMjM4XFwwMDFcXDIzOVxcMDAxXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFxcblxcMTA3XFwwMDBcXDEwN1xcMDAwXFwyMDNcXDAwMFxcMjA0XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMTM2XFwwMDBcXDEzNlxcMDAwXFwwMjVcXDAwMFxcMDI2XFwwMDBcXDAyN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDExM1xcMDAwXFxcblxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFxcblxcMDYxXFwwMDBcXDE0NVxcMDAwXFwyMDNcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcMDAxXFwwMDBcXDAyNlxcMDAwXFxcblxcMDAxXFwwMDBcXDI0MFxcMDAxXFwwMDFcXDAwMFxcMjQxXFwwMDFcXDAxN1xcMDAwXFwxMDdcXDAwMFxcMDAxXFwwMDBcXDEzNlxcMDAwXFxcblxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDAwMVxcMDAwXFxcblxcMDM2XFwwMDBcXDA4OFxcMDAxXFwyNDlcXDAwMFxcMDc0XFwwMDFcXDEyM1xcMDAwXFwwMzdcXDAwMVxcMDQyXFwwMDFcXDE4M1xcMDAxXFxcblxcMjA0XFwwMDBcXDE4NFxcMDAxXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDE5OVxcMDAwXFwxOTdcXDAwMVxcMTA3XFwwMDBcXDE2NFxcMDAwXFxcblxcMTY1XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFxcblxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMTFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFxcblxcMTA4XFwwMDBcXDEwOFxcMDAwXFwwMDFcXDAwMFxcMTY2XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDE3NFxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMDhcXDAwMVxcMTQwXFwwMDFcXDE3M1xcMDAxXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEyN1xcMDAwXFxcblxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDhcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMTA4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDEyM1xcMDAxXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIzOFxcMDAxXFwyMzlcXDAwMVxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFxcblxcMTA5XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFxcblxcMTA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDEwOVxcMDAwXFxcblxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDI0MFxcMDAxXFxcblxcMDAwXFwwMDBcXDI0MVxcMDAxXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEwOVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDEwOVxcMDAwXFxcblxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFxcblxcMTM0XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFxcblxcMTEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFxcblxcMTM0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMDAwXFwwMDBcXDExMFxcMDAwXFxcblxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDA4OVxcMDAxXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDExMFxcMDAwXFxcblxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFxcblxcMTExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDAwMFxcMDAwXFxcblxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFxcblxcMDU1XFwwMDBcXDA1NlxcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFxcblxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExM1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFxcblxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFxcblxcMTEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFxcblxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFxcblxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTEzXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFxcblxcMTEzXFwwMDBcXDExM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFxcblxcMTEzXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcblxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDAxXFwwMDBcXDA3OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcblxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFxcblxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcMTQ5XFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMTI2XFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFxcblxcMTI2XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFxcblxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFxcblxcMTI2XFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFxcblxcMDAxXFwwMDBcXDEyOFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFxcblxcMDAwXFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMjhcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2MFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFxcblxcMTI4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDE1OVxcMDAwXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFxcblxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDU2XFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIxNlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIwOFxcMDAwXFwxNjZcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE0OVxcMDAwXFwxNDlcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ5XFwwMDBcXDE0OVxcMDAwXFwxNDlcXDAwMFxcMjA2XFwwMDBcXDIwOFxcMDAwXFxcblxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTQ5XFwwMDBcXDE0OVxcMDAwXFwxNDlcXDAwMFxcMTQ5XFwwMDBcXDE0OVxcMDAwXFwxNDlcXDAwMFxcMTQ5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE0OVxcMDAwXFwxNDlcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMDZcXDAwMFxcMjA2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMDZcXDAwMFxcMjA2XFwwMDBcXDIwNlxcMDAwXFwyMDZcXDAwMFxcMjA2XFwwMDBcXDIwNlxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMjA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwxNTBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTUwXFwwMDBcXDE1MFxcMDAwXFwxNTBcXDAwMFxcMTU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxNTBcXDAwMFxcMTUwXFwwMDBcXDE1MFxcMDAwXFxcblxcMTUwXFwwMDBcXDE1MFxcMDAwXFwxNTBcXDAwMFxcMTUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDIxNlxcMDAwXFwwMDBcXDAwMFxcMTUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUwXFwwMDBcXDE1MFxcMDAwXFxcblxcMDAwXFwwMDBcXDE1OVxcMDAwXFwxNTlcXDAwMFxcMTU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDBcXDE1OVxcMDAwXFxcblxcMTU5XFwwMDBcXDE1OVxcMDAwXFwxNTlcXDAwMFxcMTU5XFwwMDBcXDE1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2NlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNlxcMDAwXFxcblxcMjE2XFwwMDBcXDIxNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OVxcMDAwXFxcblxcMTU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNlxcMDAwXFwyMTZcXDAwMFxcMjE2XFwwMDBcXDIxNlxcMDAwXFxcblxcMjE2XFwwMDBcXDIxNlxcMDAwXFwyMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjZcXDAwMFxcMTY2XFwwMDBcXDE2NlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTZcXDAwMFxcMjE2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDg1XFwwMDBcXDA4NVxcMDAwXFwxNjZcXDAwMFxcMTY2XFwwMDBcXDE2NlxcMDAwXFwxNjZcXDAwMFxcMTY2XFwwMDBcXDE2NlxcMDAwXFxcblxcMTY2XFwwMDBcXDA4NVxcMDAwXFwwODVcXDAwMFxcMDg1XFwwMDBcXDA4NVxcMDAwXFwwODVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDAwMFxcMDAwXFxcblxcMTY2XFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMTY2XFwwMDBcXDE2NlxcMDAwXFwwODVcXDAwMFxcMDg1XFwwMDBcXDA4NVxcMDAwXFxcblxcMDg1XFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFxcblxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFxcblxcMDAwXFwwMDBcXDA4NVxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NVxcMDAwXFxcblxcMDg1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFxcblxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFxcblxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDU2XFwwMDBcXDA1N1xcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXDA2MVxcMDAwXFxcblxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcblxcMTg0XFwwMDBcXDA5MlxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFxcblxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFxcblxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcblxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFxcblxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFxcblxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg2XFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcblxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFxcblxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE3NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3NVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFxcblxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDMxXFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE3NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFxcblxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFxcblxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFxcblxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFxcblxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFxcblxcMDg4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDEwNlxcMDAxXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMjE2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFxcblxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwyMTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDY3XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFxcblxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFxcblxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NlxcMDAwXFxcblxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFxcblxcMjMxXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFxcblxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFxcblxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFxcblxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjEyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDBcXDIxMlxcMDAwXFwyMTJcXDAwMFxcMjEyXFwwMDBcXDIxMlxcMDAwXFxcblxcMDAwXFwwMDBcXDIxMlxcMDAwXFwyMTJcXDAwMFxcMjEyXFwwMDBcXDIxMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDBcXDIxMlxcMDAwXFxcblxcMjEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAwXFxcblxcMjEyXFwwMDBcXDIxMlxcMDAwXFwyMTJcXDAwMFxcMjEyXFwwMDBcXDIxMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAwXFxcblxcMjEyXFwwMDBcXDIxMlxcMDAwXFwyMTJcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDA2N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFxcblxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFxcblxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFxcblxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcblxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcIlxuXG5sZXQgeXljaGVjayA9IFwiXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDIwN1xcMDAwXFwwOTlcXDAwMVxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcXG5cXDA1MVxcMDAwXFwwMTRcXDAwMFxcMTQyXFwwMDBcXDEzNFxcMDAwXFwwNTVcXDAwMFxcMTkzXFwwMDFcXDEyMlxcMDAwXFwwMTlcXDAwMFxcXG5cXDAxOVxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDFcXDAyNFxcMDAwXFwwMjVcXDAwMFxcXG5cXDIxNVxcMDAxXFwwMDBcXDAwMFxcMDI4XFwwMDBcXDAyOVxcMDAwXFwwMzBcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcXG5cXDAzNFxcMDAwXFwwMzVcXDAwMFxcMDM2XFwwMDBcXDAzN1xcMDAwXFwwMDFcXDAwMVxcMDAwXFwwMDBcXDA0MFxcMDAwXFwwMTNcXDAwMlxcXG5cXDAwMFxcMDAwXFwyNTNcXDAwMFxcMDAwXFwwMDBcXDE2MlxcMDAxXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcXG5cXDAwMlxcMDAxXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDQwXFwwMDFcXDA1NlxcMDAwXFwwNTdcXDAwMFxcXG5cXDA1OFxcMDAwXFwwOTRcXDAwMVxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMjNcXDAwMVxcXG5cXDAwMFxcMDAxXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcXG5cXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNzhcXDAwMFxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMDRcXDAwMVxcXG5cXDA4MlxcMDAwXFwwMTBcXDAwMVxcMTc3XFwwMDFcXDA2MFxcMDAyXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDAwMFxcMDAwXFwwNTJcXDAwMVxcXG5cXDA2MlxcMDAyXFwwMTBcXDAwMVxcMjI0XFwwMDBcXDAxNFxcMDAxXFwyMjZcXDAwMFxcMDE3XFwwMDJcXDA5NlxcMDAwXFwwNzhcXDAwMVxcXG5cXDIzMFxcMDAwXFwyMTZcXDAwMVxcMDAwXFwwMDFcXDAzNFxcMDAyXFwxMDJcXDAwMFxcMjA5XFwwMDBcXDAwNFxcMDAxXFwyMzVcXDAwMFxcXG5cXDAyOVxcMDAxXFwwMDJcXDAwMVxcMDAwXFwwMDFcXDEwNlxcMDAwXFwwNjRcXDAwMVxcMTEzXFwwMDBcXDExM1xcMDAwXFwwMDJcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMjA5XFwwMDFcXDA1MVxcMDAxXFwwMDRcXDAwMVxcMTE5XFwwMDBcXDEyMFxcMDAwXFwxMjFcXDAwMFxcXG5cXDA5N1xcMDAyXFwxMjNcXDAwMFxcMDgwXFwwMDFcXDEyNVxcMDAwXFwwNzhcXDAwMVxcMDQ5XFwwMDJcXDAwMFxcMDAwXFwxMzFcXDAwMFxcXG5cXDAwMFxcMDAxXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAxXFwxNjlcXDAwMVxcMDY4XFwwMDJcXDA5NFxcMDAxXFwyNTRcXDAwMVxcXG5cXDE0MFxcMDAwXFwxNDBcXDAwMFxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAwMFxcMDAwXFwxNDVcXDAwMFxcXG5cXDE0N1xcMDAwXFwwODFcXDAwMVxcMDgyXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMTQ4XFwwMDBcXDE0OVxcMDAwXFwxNTBcXDAwMFxcXG5cXDE1MVxcMDAwXFwxNTJcXDAwMFxcMTUzXFwwMDBcXDE1NFxcMDAwXFwxNTVcXDAwMFxcMTU2XFwwMDBcXDE1N1xcMDAwXFwxNjFcXDAwMFxcXG5cXDE2MlxcMDAwXFwxNjNcXDAwMFxcMTY0XFwwMDBcXDE2NVxcMDAwXFwxNjZcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcXG5cXDA0NlxcMDAxXFwwMDBcXDAwMVxcMTcyXFwwMDBcXDE3M1xcMDAwXFwwMTJcXDAwMVxcMTc1XFwwMDBcXDE3NlxcMDAwXFwwMDJcXDAwMVxcXG5cXDA3OFxcMDAxXFwxNzlcXDAwMFxcMTgwXFwwMDBcXDA1MVxcMDAxXFwxODJcXDAwMFxcMDc4XFwwMDFcXDA1MVxcMDAxXFwwMDBcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjI5XFwwMDBcXDA3OFxcMDAxXFwxOTBcXDAwMFxcMTkxXFwwMDBcXDA3OFxcMDAxXFwwMDZcXDAwMlxcXG5cXDAxNVxcMDAxXFwxOTVcXDAwMFxcMTk2XFwwMDBcXDAwMFxcMDAxXFwxOThcXDAwMFxcMDAwXFwwMDFcXDA1MVxcMDAxXFwyMDFcXDAwMFxcXG5cXDIwMlxcMDAwXFwyMDNcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDlcXDAwMVxcMDM4XFwwMDFcXDA5MlxcMDAxXFwwMzhcXDAwMVxcXG5cXDIwN1xcMDAwXFwwODFcXDAwMVxcMDgyXFwwMDFcXDAwMFxcMDAxXFwwODFcXDAwMVxcMDgyXFwwMDFcXDIxNlxcMDAwXFwyMTdcXDAwMFxcXG5cXDAwMFxcMDAxXFwwMDJcXDAwMVxcMDc2XFwwMDFcXDAwM1xcMDAxXFwwNzhcXDAwMVxcMjIzXFwwMDBcXDAwNVxcMDAxXFwyMjVcXDAwMFxcXG5cXDAwN1xcMDAxXFwyMjdcXDAwMFxcMjI4XFwwMDBcXDAwMFxcMDAxXFwwODFcXDAwMVxcMDgyXFwwMDFcXDAwM1xcMDAxXFwwMzhcXDAwMVxcXG5cXDIzNFxcMDAwXFwxMTFcXDAwMVxcMDUxXFwwMDFcXDAzOFxcMDAxXFwwNzZcXDAwMVxcMjM5XFwwMDBcXDI0MFxcMDAwXFwwNTRcXDAwMlxcXG5cXDAwMFxcMDAxXFwxODlcXDAwMVxcMDAyXFwwMDFcXDExMFxcMDAxXFwwMDJcXDAwMVxcMDc4XFwwMDFcXDI0OFxcMDAwXFwwNzhcXDAwMVxcXG5cXDI1MFxcMDAwXFwwMjdcXDAwMVxcMjUyXFwwMDBcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDUxXFwwMDFcXDE0MFxcMDAxXFwwNDBcXDAwMVxcXG5cXDAwMFxcMDAxXFwxMzNcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDdcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMjZcXDAwMVxcXG5cXDA4MVxcMDAxXFwwODJcXDAwMVxcMDUwXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDE1XFwwMDFcXDAwMFxcMDAwXFwwNzhcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMDBcXDAwMFxcMDIzXFwwMDFcXDA3OFxcMDAxXFwwNzhcXDAwMVxcMDUwXFwwMDFcXDAyNFxcMDAxXFwwMDRcXDAwMVxcXG5cXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDA4MVxcMDAxXFwwODJcXDAwMVxcMDA0XFwwMDFcXDAxMFxcMDAxXFwxNTRcXDAwMVxcXG5cXDAzNFxcMDAxXFwwNzhcXDAwMVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwwNDBcXDAwMVxcMDc4XFwwMDFcXDE3MFxcMDAxXFwwMDJcXDAwMVxcXG5cXDA0MlxcMDAxXFwwMDRcXDAwMVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwMDRcXDAwMVxcMDQ3XFwwMDFcXDAwNFxcMDAxXFwwMTBcXDAwMVxcXG5cXDAwNFxcMDAxXFwwNTFcXDAwMVxcMDEwXFwwMDFcXDA1M1xcMDAxXFwwMTBcXDAwMVxcMDA0XFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcXG5cXDAzNlxcMDAxXFwwNjFcXDAwMVxcMDYxXFwwMDFcXDAxMFxcMDAxXFwwNTlcXDAwMVxcMDYwXFwwMDFcXDA3OFxcMDAxXFwwMDBcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMzRcXDAwMVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDc2XFwwMDFcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA3OFxcMDAxXFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwwNzhcXDAwMVxcMDAwXFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDA4OFxcMDAxXFwwODlcXDAwMVxcXG5cXDAwNFxcMDAxXFwwOTRcXDAwMVxcMDA0XFwwMDFcXDA3MlxcMDAxXFwwNzJcXDAwMVxcMDk1XFwwMDFcXDAxMFxcMDAxXFwwMzJcXDAwMVxcXG5cXDA5OFxcMDAxXFwwNzJcXDAwMVxcMDAwXFwwMDFcXDEwMVxcMDAxXFwwODBcXDAwMVxcMDM4XFwwMDFcXDEwNFxcMDAxXFwxMDVcXDAwMVxcXG5cXDEwNlxcMDAxXFwwMzhcXDAwMVxcMTEwXFwwMDFcXDEwOVxcMDAxXFwwMTJcXDAwMVxcMDcyXFwwMDFcXDA4MFxcMDAxXFwxMTNcXDAwMVxcXG5cXDA3MlxcMDAxXFwwMzRcXDAwMVxcMDcyXFwwMDFcXDE1OFxcMDAxXFwwNzJcXDAwMVxcMDgwXFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcXG5cXDAzNlxcMDAxXFwwNzJcXDAwMVxcMDAwXFwwMDFcXDAwNVxcMDAxXFwwMDJcXDAwMVxcMDA3XFwwMDFcXDAwMFxcMDAxXFwwNzNcXDAwMVxcXG5cXDEzMFxcMDAxXFwwODBcXDAwMVxcMDA0XFwwMDFcXDAwMlxcMDAxXFwxMzRcXDAwMVxcMTM1XFwwMDFcXDEzNlxcMDAxXFwwMDlcXDAwMVxcXG5cXDAxMFxcMDAxXFwwNDNcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDJcXDAwMVxcMDc4XFwwMDFcXDE0NFxcMDAxXFwwMDRcXDAwMVxcXG5cXDE0NlxcMDAxXFwwNzhcXDAwMVxcMDA0XFwwMDFcXDA3OFxcMDAxXFwwMDlcXDAwMVxcMDEwXFwwMDFcXDE1NFxcMDAxXFwxNTNcXDAwMVxcXG5cXDAxMFxcMDAxXFwwMDBcXDAwMVxcMTU2XFwwMDFcXDAwMlxcMDAxXFwwNzJcXDAwMVxcMTU5XFwwMDFcXDA3MlxcMDAxXFwxNjFcXDAwMVxcXG5cXDA3OFxcMDAxXFwwMDBcXDAwMFxcMTY0XFwwMDFcXDE2NVxcMDAxXFwxNjlcXDAwMVxcMTY3XFwwMDFcXDAyMVxcMDAxXFwxNzFcXDAwMVxcXG5cXDE3MVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNzZcXDAwMVxcMTc1XFwwMDFcXDE3NlxcMDAxXFwwNDNcXDAwMVxcXG5cXDA3OFxcMDAxXFwxMzVcXDAwMFxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcMTM5XFwwMDBcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMTkxXFwwMDFcXDE4OVxcMDAxXFwxOTNcXDAwMVxcXG5cXDAyOVxcMDAxXFwwNzZcXDAwMVxcMTk2XFwwMDFcXDA3OFxcMDAxXFwwNzFcXDAwMVxcMTk5XFwwMDFcXDA3MlxcMDAxXFwxOThcXDAwMVxcXG5cXDA3OFxcMDAxXFwxNTlcXDAwMFxcMjUxXFwwMDFcXDIwNVxcMDAxXFwwNzVcXDAwMVxcMjA3XFwwMDFcXDIwOFxcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwODBcXDAwMVxcMjEyXFwwMDFcXDA3MlxcMDAxXFwyMTRcXDAwMVxcMjE1XFwwMDFcXDA3MlxcMDAxXFwxMDlcXDAwMFxcXG5cXDIxOFxcMDAxXFwxMTFcXDAwMFxcMjIwXFwwMDFcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMjIzXFwwMDFcXDIyNFxcMDAxXFwyMjVcXDAwMVxcXG5cXDIyNlxcMDAxXFwyMjdcXDAwMVxcMDEwXFwwMDFcXDE4NVxcMDAwXFwyMzBcXDAwMVxcMDc2XFwwMDFcXDIzMlxcMDAxXFwyMzNcXDAwMVxcXG5cXDIzNFxcMDAxXFwwNTFcXDAwMVxcMTI4XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcMDA2XFwwMDFcXDAwNFxcMDAxXFwyNDFcXDAwMVxcXG5cXDI0MlxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMlxcMDAxXFwwNDBcXDAwMVxcMDE0XFwwMDFcXDAzN1xcMDAxXFwyMDVcXDAwMFxcXG5cXDIwNlxcMDAwXFwwNzhcXDAwMVxcMjUyXFwwMDFcXDA0NFxcMDAyXFwwMzJcXDAwMVxcMDgwXFwwMDFcXDAwMFxcMDAyXFwyMTNcXDAwMFxcXG5cXDA3OFxcMDAxXFwyMTVcXDAwMFxcMDM4XFwwMDFcXDAwNlxcMDAxXFwwMDBcXDAwMVxcMDA3XFwwMDJcXDAwMlxcMDAxXFwwODFcXDAwMVxcXG5cXDA4MlxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAxNFxcMDAxXFwwMTRcXDAwMlxcMDA0XFwwMDFcXDAxNlxcMDAyXFwwMTdcXDAwMlxcXG5cXDAxOFxcMDAyXFwwMTlcXDAwMlxcMDA0XFwwMDFcXDAwMlxcMDAxXFwwNjlcXDAwMlxcMDA1XFwwMDFcXDAyNFxcMDAyXFwwMjVcXDAwMlxcXG5cXDAxMFxcMDAxXFwwMDFcXDAwMVxcMDI4XFwwMDJcXDAyOVxcMDAyXFwwMzBcXDAwMlxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMDZcXDAwMVxcXG5cXDAzNFxcMDAyXFwwMzVcXDAwMlxcMDM2XFwwMDJcXDAzN1xcMDAyXFwwMDJcXDAwMVxcMDM5XFwwMDJcXDA0MFxcMDAyXFwwMTRcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDc4XFwwMDFcXDAwMFxcMDAxXFwwMDRcXDAwMVxcMDAyXFwwMDFcXDA0OFxcMDAyXFwwNDlcXDAwMlxcXG5cXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDAyXFwwMDFcXDA1NlxcMDAyXFwwNTdcXDAwMlxcXG5cXDAxMFxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyMTBcXDAwMFxcMDc2XFwwMDFcXDA2NFxcMDAyXFwwNjVcXDAwMlxcXG5cXDA2NlxcMDAyXFwwNjdcXDAwMlxcMDY4XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDcxXFwwMDJcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDc5XFwwMDJcXDA3MlxcMDAxXFwwMTFcXDAwMVxcXG5cXDAxMlxcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDAxMFxcMDAxXFwwODZcXDAwMlxcMDg3XFwwMDJcXDA3MlxcMDAxXFwwNzhcXDAwMVxcXG5cXDA5MFxcMDAyXFwwOTFcXDAwMlxcMDA2XFwwMDFcXDA0MFxcMDAxXFwwNzVcXDAwMVxcMDk1XFwwMDJcXDA4MFxcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwOTlcXDAwMlxcMDE0XFwwMDFcXDEwMVxcMDAyXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFwwMDJcXDAwMVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM4XFwwMDFcXDAwNFxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcXG5cXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDA3OFxcMDAxXFwwNzZcXDAwMVxcXG5cXDAwNFxcMDAxXFwwNzhcXDAwMVxcMDM0XFwwMDFcXDA4MVxcMDAxXFwwMDRcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwNzhcXDAwMVxcMDAwXFwwMDFcXDAwNFxcMDAxXFwwMDJcXDAwMVxcMDAxXFwwMDFcXDAyOFxcMDAxXFwwNjBcXDAwMVxcXG5cXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcXG5cXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDc0XFwwMDFcXDA3OFxcMDAxXFwwMDNcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNFxcMDAxXFwwMDdcXDAwMVxcXG5cXDAzN1xcMDAxXFwwNTVcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcXG5cXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDMwXFwwMDFcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcXG5cXDAxNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDA0XFwwMDFcXDAyMVxcMDAxXFwwMDNcXDAwMVxcXG5cXDAwN1xcMDAxXFwwNTBcXDAwMVxcMDgwXFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDgzXFwwMDFcXDAyOVxcMDAxXFwwMzBcXDAwMVxcXG5cXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDA1MFxcMDAxXFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMDJcXDAwMVxcMDc4XFwwMDFcXDA3NlxcMDAxXFwwMDBcXDAwMFxcXG5cXDA3OFxcMDAxXFwxMDNcXDAwMVxcMDA2XFwwMDFcXDA1MFxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMTFcXDAwMVxcXG5cXDAxMlxcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA3OFxcMDAxXFwwMDRcXDAwMVxcXG5cXDA3MVxcMDAxXFwwNzJcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwNzVcXDAwMVxcMDAwXFwwMDFcXDAwNFxcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwODBcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwNzhcXDAwMVxcXG5cXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDA0XFwwMDFcXDAwM1xcMDAxXFwwMTBcXDAwMVxcMDA2XFwwMDFcXDAxMlxcMDAxXFwwNzhcXDAwMVxcXG5cXDE1MFxcMDAxXFwxNTFcXDAwMVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMDNcXDAwMVxcXG5cXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwMDFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcXG5cXDAxMFxcMDAxXFwwMDNcXDAwMVxcMDA1XFwwMDFcXDAzOFxcMDAxXFwwMjhcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcXG5cXDA3OFxcMDAxXFwwMDRcXDAwMVxcMDQwXFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDE0XFwwMDFcXDA0NFxcMDAxXFwwNDVcXDAwMVxcXG5cXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDI4XFwwMDFcXDA3OFxcMDAxXFwwMDRcXDAwMVxcMjU0XFwwMDBcXDI1NVxcMDAwXFwwMTRcXDAwMVxcXG5cXDAzMlxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAzMlxcMDAxXFwwMzJcXDAwMVxcXG5cXDA3OFxcMDAxXFwwMzJcXDAwMVxcMDcyXFwwMDFcXDA3OFxcMDAxXFwyMTBcXDAwMVxcMjExXFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcXG5cXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwOFxcMDAxXFwwMDlcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcXG5cXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDE1XFwwMDFcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDAyMVxcMDAxXFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcXG5cXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDUwXFwwMDFcXDA3OFxcMDAxXFwwNTJcXDAwMVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwNjBcXDAwMVxcXG5cXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcXG5cXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwwNzNcXDAwMVxcMDc0XFwwMDFcXDA3NVxcMDAxXFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcXG5cXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDBcXDAwNlxcMDAxXFwwMDZcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcXG5cXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDE1XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDA3XFwwMDFcXDAwM1xcMDAxXFwwMDVcXDAwMVxcXG5cXDAwOFxcMDAxXFwwMDRcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFwwNzZcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwMDdcXDAwMVxcXG5cXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDA3NlxcMDAxXFwwNzZcXDAwMVxcMDc2XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcXG5cXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDc4XFwwMDFcXDA3NlxcMDAxXFwwMDZcXDAwMVxcMDUwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDBcXDAwMVxcXG5cXDAwNlxcMDAxXFwwNzhcXDAwMVxcMDAxXFwwMDFcXDAwNFxcMDAxXFwwMDJcXDAwMVxcMDUwXFwwMDFcXDAwMFxcMDAwXFwwMDZcXDAwMVxcXG5cXDAwOVxcMDAxXFwwMTBcXDAwMVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwwODBcXDAwMVxcMDQzXFwwMDFcXDA3NVxcMDAxXFwwMTRcXDAwMVxcXG5cXDAwNFxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcXG5cXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDBcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcXG5cXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDMyXFwwMDFcXDA3MlxcMDAxXFwwMDNcXDAwMVxcMDM0XFwwMDFcXDAwMlxcMDAxXFwwMzhcXDAwMVxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwMDRcXDAwMVxcXG5cXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAwNFxcMDAxXFwwMDZcXDAwMVxcMDcyXFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAzMlxcMDAxXFwwMDZcXDAwMVxcXG5cXDAwNlxcMDAxXFwwNzZcXDAwMVxcMDc2XFwwMDFcXDA3OFxcMDAxXFwwMDhcXDAwMVxcMDUwXFwwMDFcXDAwOFxcMDAxXFwwNzJcXDAwMVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OFxcMDAxXFwwMjJcXDAwMVxcMTU4XFwwMDBcXDAwNlxcMDAxXFwwNDFcXDAwMFxcMjExXFwwMDBcXDAwMlxcMDAxXFwxNTBcXDAwMVxcXG5cXDExOFxcMDAwXFwxNTFcXDAwMVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwxMTZcXDAwMFxcMTY2XFwwMDFcXDA3NVxcMDAxXFwwMTFcXDAwMVxcXG5cXDAxMlxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcXG5cXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcXG5cXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDA4XFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFwxNDJcXDAwMVxcXG5cXDAxNFxcMDAxXFwwMDJcXDAwMVxcMDQwXFwwMDFcXDA5NFxcMDAxXFwxNDFcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwNDRcXDAwMFxcXG5cXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMVxcXG5cXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1NVxcMjU1XFwwMzJcXDAwMVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwNDBcXDAwMVxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMDAyXFwwMDFcXDA3NVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNDBcXDAwMVxcXG5cXDA3OFxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMzhcXDAwMVxcMDM5XFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcXG5cXDAwNlxcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDI1NVxcMjU1XFwwMTBcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcXG5cXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFwwMjlcXDAwMVxcXG5cXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwNzZcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwNTBcXDAwMVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwwNTNcXDAwMVxcXG5cXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDAwMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMVxcXG5cXDAxMFxcMDAxXFwwNzFcXDAwMVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcXG5cXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwMTBcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1NVxcMjU1XFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFwwMjlcXDAwMVxcXG5cXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwwNTNcXDAwMVxcXG5cXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcXG5cXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcXG5cXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFwwMjlcXDAwMVxcXG5cXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMDBcXDAwMFxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcXG5cXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcXG5cXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFwwMjlcXDAwMVxcXG5cXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcXG5cXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDcyXFwwMDFcXDAwOVxcMDAxXFwwMTBcXDAwMVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDFcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDAwXFwwMDBcXDAyMlxcMDAxXFwwMjNcXDAwMVxcXG5cXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcXG5cXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDA4MFxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxMFxcMDAxXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFwwMjlcXDAwMVxcMDMwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcXG5cXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwNzJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcXG5cXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMTBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcXG5cXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXDAzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcXG5cXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDlcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcXG5cXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDAwNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcXG5cXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcXG5cXDAzNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcXG5cXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcXG5cXDAwOVxcMDAxXFwwMTBcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwNjBcXDAwMVxcMDYxXFwwMDFcXDA2MlxcMDAxXFwwNjNcXDAwMVxcXG5cXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDA3MlxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMDAyXFwwMDFcXDA3OFxcMDAxXFwwMDRcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMDlcXDAwMVxcMDEwXFwwMDFcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcXG5cXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwwNzJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMVxcXG5cXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcXG5cXDAxMFxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcXG5cXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAxXFwwMDRcXDAwMVxcXG5cXDAyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcXG5cXDA1OVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcXG5cXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMVxcXG5cXDA3NVxcMDAxXFwwMDRcXDAwMVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDcxXFwwMDFcXDI1NVxcMjU1XFwwMTBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwNjBcXDAwMVxcXG5cXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcXG5cXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDI5XFwwMDFcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDNcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcXG5cXDA1OVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMTFcXDAwMVxcXG5cXDAxMlxcMDAxXFwwMDBcXDAwMFxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA2NFxcMDAxXFwwNjVcXDAwMVxcXG5cXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAwMlxcMDAxXFwwNzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMDBcXDAwMFxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMDJcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNzVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAwMlxcMDAxXFwwNTNcXDAwMVxcXG5cXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcXG5cXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAxXFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwyNTVcXDI1NVxcMDAyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcXG5cXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcXG5cXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcXG5cXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcXG5cXDA1OVxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDE1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDA3NVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcXG5cXDAzNFxcMDAxXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNTFcXDAwMVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODFcXDAwMVxcXG5cXDA4MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcXG5cXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcXG5cXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcXG5cXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwwNzhcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNjBcXDAwMVxcMDYxXFwwMDFcXDA2MlxcMDAxXFwwNjNcXDAwMVxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcXG5cXDA2N1xcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDA3OFxcMDAxXFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcXG5cXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcXG5cXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcXG5cXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcXG5cXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcXG5cXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcXG5cXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcXG5cXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcXG5cXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcXG5cXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcXG5cXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcXG5cXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcXG5cXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDAwM1xcMDAxXFwwNzNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcXG5cXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcXG5cXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDAxMFxcMDAxXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcXG5cXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjhcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcXG5cXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAyOFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcXG5cXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcXG5cXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcXG5cXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcXG5cXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcXG5cXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcXG5cXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcXG5cXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwMDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcXG5cXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcXG5cXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcXG5cXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzdcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcXG5cXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcXG5cXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcXG5cXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXCJcblxubGV0IHl5bmFtZXNfY29uc3QgPSBcIlxcXG4gIEVPRlxcMDAwXFxcbiAgQ09NTUFcXDAwMFxcXG4gIERPVFxcMDAwXFxcbiAgT1BfUEFSXFwwMDBcXFxuICBDTF9QQVJcXDAwMFxcXG4gIE9QX0NVUlxcMDAwXFxcbiAgQ0xfQ1VSXFwwMDBcXFxuICBPUF9CUkFcXDAwMFxcXG4gIENMX0JSQVxcMDAwXFxcbiAgQVRcXDAwMFxcXG4gIFNFTUlDT0xPTlxcMDAwXFxcbiAgUExVU1xcMDAwXFxcbiAgTUlOVVNcXDAwMFxcXG4gIE1VTFRcXDAwMFxcXG4gIERJVlxcMDAwXFxcbiAgTU9EXFwwMDBcXFxuICBNQVhcXDAwMFxcXG4gIE1JTlxcMDAwXFxcbiAgU0lOVVNcXDAwMFxcXG4gIENPU0lOVVNcXDAwMFxcXG4gIFRBTlxcMDAwXFxcbiAgUE9XXFwwMDBcXFxuICBBQlNcXDAwMFxcXG4gIFNRUlRcXDAwMFxcXG4gIEVYUE9ORU5UXFwwMDBcXFxuICBMT0dcXDAwMFxcXG4gIE9SXFwwMDBcXFxuICBBTkRcXDAwMFxcXG4gIE5PVFxcMDAwXFxcbiAgVEhFTlxcMDAwXFxcbiAgRUxTRVxcMDAwXFxcbiAgRElGRlxcMDAwXFxcbiAgRVFVQUxcXDAwMFxcXG4gIFNNQUxMRVJcXDAwMFxcXG4gIEdSRUFURVJcXDAwMFxcXG4gIFRSVUVcXDAwMFxcXG4gIEZBTFNFXFwwMDBcXFxuICBJTkZJTklUWVxcMDAwXFxcbiAgU0hBUlBcXDAwMFxcXG4gIFVOREVSU0NPUkVcXDAwMFxcXG4gIFBJUEVcXDAwMFxcXG4gIFJBUlxcMDAwXFxcbiAgTFJBUlxcMDAwXFxcbiAgTEFSXFwwMDBcXFxuICBFTUFYXFwwMDBcXFxuICBUTUFYXFwwMDBcXFxuICBDUFVUSU1FXFwwMDBcXFxuICBUSU1FXFwwMDBcXFxuICBFVkVOVFxcMDAwXFxcbiAgTlVMTF9FVkVOVFxcMDAwXFxcbiAgQ09MT05cXDAwMFxcXG4gIE5FV0xJTkVcXDAwMFxcXG4gIEJBQ0tTTEFTSFxcMDAwXFxcbiAgU0lHTkFUVVJFXFwwMDBcXFxuICBUT0tFTlxcMDAwXFxcbiAgSU5JVFxcMDAwXFxcbiAgT0JTXFwwMDBcXFxuICBQTE9UXFwwMDBcXFxuICBQRVJUXFwwMDBcXFxuICBDT05GSUdcXDAwMFxcXG4gIEFQUExZXFwwMDBcXFxuICBERUxFVEVcXDAwMFxcXG4gIElOVFJPXFwwMDBcXFxuICBTTkFQU0hPVFxcMDAwXFxcbiAgU1RPUFxcMDAwXFxcbiAgRkxVWFxcMDAwXFxcbiAgVFJBQ0tcXDAwMFxcXG4gIEFTU0lHTlxcMDAwXFxcbiAgUFJJTlRGXFwwMDBcXFxuICBQTE9URU5UUllcXDAwMFxcXG4gIFNQRUNJRVNfT0ZcXDAwMFxcXG4gIERPXFwwMDBcXFxuICBSRVBFQVRcXDAwMFxcXG4gIEFMQVJNXFwwMDBcXFxuICBSVU5cXDAwMFxcXG4gIExFVFxcMDAwXFxcbiAgXCJcblxubGV0IHl5bmFtZXNfYmxvY2sgPSBcIlxcXG4gIElOVFxcMDAwXFxcbiAgRkxPQVRcXDAwMFxcXG4gIElEXFwwMDBcXFxuICBMQUJFTFxcMDAwXFxcbiAgU1RSSU5HXFwwMDBcXFxuICBTUEFDRVxcMDAwXFxcbiAgQ09NTUVOVFxcMDAwXFxcbiAgXCJcblxubGV0IHl5YWN0ID0gW3xcbiAgKGZ1biBfIC0+IGZhaWx3aXRoIFwicGFyc2VyXCIpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIFtdIClcbiMgMTY1NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbm5vdGVkKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBcIlxcblwiOjpfMiApXG4jIDE2NjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYW5ub3RlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICggXzE6Ol8yIClcbiMgMTY3MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbm5vdGVkKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAoIF8xOjpfMiApXG4jIDE2ODAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYW5ub3RlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAoIE5ici5GIGluZmluaXR5IClcbiMgMTY4NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICduYnIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGZsb2F0KSBpblxuICAgIE9iai5yZXByKFxuIyA2MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggTmJyLkYgXzEgKVxuIyAxNjkzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ25icikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA2MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoIE5ici5JIF8xIClcbiMgMTcwMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICduYnIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDY1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICggYWRkX3BvcyAxIExLYXBwYS5MTktfRlJFRSApXG4jIDE3MDYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA2NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoIGFkZF9wb3MgMSAoTEthcHBhLkxOS19WQUxVRSAoXzEsKCkpKSApXG4jIDE3MTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICggYWRkX3BvcyAxIExLYXBwYS5MTktfU09NRSApXG4jIDE3MTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgNjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgNSAoTEthcHBhLkxOS19UWVBFICgoXzEscmhzX3BvcyAxKSwoXzUscmhzX3BvcyA1KSkpIClcbiMgMTcyOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA3MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggYWRkX3BvcyAxIExLYXBwYS5MTktfQU5ZIClcbiMgMTczNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDMgXCJpbmNvbXBsZXRlIGxpbmsgc3RhdGVcIikpIClcbiMgMTc0MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICggW18xXSApXG4jIDE3NTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdsaW5rX3N0YXRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVzKSBpblxuICAgIE9iai5yZXByKFxuIyA3NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIDo6IF8zIClcbiMgMTc2MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlcykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVzKSBpblxuICAgIE9iai5yZXByKFxuIyA3OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzEgOjogXzUgKVxuIyAxNzcwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA4MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggTm9uZSApXG4jIDE3NzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA4MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggU29tZSBOb25lIClcbiMgMTc4NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogaW50KSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgODQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgKFNvbWUgKF8zLCByaHNfcG9zIDMpKSApXG4jIDE3OTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDg2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJpbmNvbXBsZXRlIGxpbmsgbW9kaWZpY2F0aW9uXCIpKSApXG4jIDE4MDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyA5MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICggYWRkX3BvcyAxIChTb21lIF8xKSApXG4jIDE4MDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDkyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBhZGRfcG9zIDEgTm9uZSApXG4jIDE4MTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDk2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIFtfMV0gKVxuIyAxODIyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlcykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVybmFsX3N0YXRlcykgaW5cbiAgICBPYmoucmVwcihcbiMgOTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIDo6IF8zIClcbiMgMTgzMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9zdGF0ZXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJuYWxfc3RhdGVzKSBpblxuICAgIE9iai5yZXByKFxuIyA5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfNSApXG4jIDE4NDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIE5vbmUgKVxuIyAxODQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgKF8zLCByaHNfcG9zIDMpIClcbiMgMTg1NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiaW5jb21wbGV0ZSBsaW5rIG1vZGlmaWNhdGlvblwiKSkgKVxuIyAxODY0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2xpbmtfc3RhdGVzKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbGlua19tb2RpZikgaW5cbiAgICBPYmoucmVwcihcbiMgMTEwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChfMiwgXzMpIClcbiMgMTg3MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2xpbmspKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKFwiaW52YWxpZCBsaW5raW5nIHN0YXRlIG9yIG1pc3NpbmcgJ10nXCIscmhzX3BvcyAyKSkgKVxuIyAxODgxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfbGluaykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVybmFsX3N0YXRlcykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2ludGVybmFsX21vZGlmKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF8xLCBfMikgKVxuIyAxODg5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfaW50ZXJuYWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDExOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoXCJpbnZhbGlkIGludGVybmFsIHN0YXRlIG9yIG1pc3NpbmcgJ30nXCIscmhzX3BvcyAzKSkgKVxuIyAxODk2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfaW50ZXJuYWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoXzUsIHJoc19wb3MgNSkgKVxuIyAxOTA1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTI1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoLSBfNywgcmhzX3BvcyA3KSApXG4jIDE5MTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEyNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoLSBfNSwgcmhzX3BvcyA1KSApXG4jIDE5MjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTMwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCAoQXN0LkNFUSBfMyxyaHNfcG9zIDMpIClcbiMgMTkzMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMzEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoQXN0LkNHVEUgXzUscmhzX3BvcyA1KSApXG4jIDE5NDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl90ZXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTMyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKEFzdC5DTFRFIF81LHJoc19wb3MgNSkgKVxuIyAxOTUwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfdGVzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMTMzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAoIChBc3QuQ1ZBUiBfMyxyaHNfcG9zIDMpIClcbiMgMTk1OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdjb3VudGVyX21vZGlmKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChOb25lLCBfMSkgKVxuIyAxOTY3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfY291bnRlcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2NvdW50ZXJfdGVzdCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxMzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChTb21lIF8xLCBMb2MuYW5ub3Rfd2l0aF9kdW1teSAwKSApXG4jIDE5NzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9jb3VudGVyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDcgOiAnY291bnRlcl90ZXN0KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDYgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdjb3VudGVyX21vZGlmKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzggPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE0MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggKFNvbWUgXzEsXzUpIClcbiMgMTk4OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2NvdW50ZXIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgOCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDcgOiBpbnQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzcgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2NvdW50ZXJfbW9kaWYpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMTAgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE0NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCBTb21lIChTb21lIChfMykscmhzX3BvcyAzKSxtYXRjaCBfNyB3aXRoIChhLGxvYykgLT4gU29tZSAoU29tZSAoYSksbG9jKSApXG4jIDIwMDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9jb3VudGVyX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IGludCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxNDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBTb21lIChTb21lIChfMykscmhzX3BvcyAzKSxOb25lIClcbiMgMjAxMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2NvdW50ZXJfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDggOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnc2l0ZV9saW5rKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzcgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX2ludGVybmFsKSBpblxuICAgIGxldCBfOSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTUyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9IF80IGluXG4gICAgICAgIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSBfOCBpblxuICAgICAgICBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gKVxuIyAyMDI4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDggOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3NpdGVfaW50ZXJuYWwpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9saW5rKSBpblxuICAgIGxldCBfOSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTU4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSBfNSBpblxuICAgICAgICBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSBfOCBpblxuICAgICAgICBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gKVxuIyAyMDQ1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9saW5rKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTY0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9IF80IGluXG4gICAgICAgIEFzdC5Qb3J0XG4gICAgICAgICAgeyBBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9W107XG4gICAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kPU5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IClcbiMgMjA1OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX2ludGVybmFsKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTY5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSBfNSBpblxuICAgICAgICBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdO1xuICAgICAgICAgICAgQXN0LnBvcnRfaW50OyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZD1Ob25lOyB9IClcbiMgMjA3MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzaXRlX2NvdW50ZXJfc2lnKSBpblxuICAgIE9iai5yZXByKFxuIyAxNzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggbGV0IChjb3VudGVyX3NpZ19taW4sY291bnRlcl9zaWdfbWF4KSA9IF81IGluXG4gICAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgICAgeyBBc3QuY291bnRlcl9zaWdfbmFtZT0oXzEscmhzX3BvcyAxKTtcbiAgICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19taW47XG4gICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWF4O1xuICAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQ9XG4gICAgICAgICAgICAgICAgKG1hdGNoIGNvdW50ZXJfc2lnX21pbiB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lIChOb25lLCBfKS0+IDBcbiAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSBpLF8pIC0+IGkgKTtcbiAgICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlPUFzdC5Gcm9tX29yaWdpbmFsX2FzdDtcbiAgICAgICAgICAgIH0gKVxuIyAyMDkyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxODYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggQXN0LlBvcnRcbiAgICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgICAgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZD1Ob25lOyB9IClcbiMgMjEwMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA4IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDcgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ3NpdGVfbGluaykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9pbnRlcm5hbCkgaW5cbiAgICBsZXQgXzkgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE5MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gXzQgaW5cbiAgICAgIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSBfOCBpblxuICAgICAgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ7XG4gICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gKVxuIyAyMTE5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgOCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnc2l0ZV9pbnRlcm5hbCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX2xpbmspIGluXG4gICAgbGV0IF85ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxOTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSBfNSBpblxuICAgICAgbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gXzggaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IClcbiMgMjEzNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9saW5rKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjA1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSBfNCBpblxuICAgICAgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9W107XG4gICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZDsgfSApXG4jIDIxNDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX2ludGVybmFsKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjEwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gXzUgaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdO1xuICAgICAgICAgIEFzdC5wb3J0X2ludDsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q9Tm9uZTsgfSApXG4jIDIxNjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzaXRlX2NvdW50ZXIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIxNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChjb3VudGVyX3Rlc3QsY291bnRlcl9kZWx0YSkgPSBfNSBpblxuICAgICAgQXN0LkNvdW50ZXJcbiAgICAgICAgeyBBc3QuY291bnRlcl9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QuY291bnRlcl90ZXN0OyBBc3QuY291bnRlcl9kZWx0YSB9IClcbiMgMjE3NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyMTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdOyBBc3QucG9ydF9pbnQ9W107XG4gICAgICAgICAgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZD1Ob25lOyB9IClcbiMgMjE4NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyMjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIFtdIClcbiMgMjE5MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIyNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAxIChcIk1hbGZvcm1lZCBzaXRlIGV4cHJlc3Npb25cIikpKSApXG4jIDIxOTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVyZmFjZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMjI5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfMiApXG4jIDIyMDYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnc2l0ZSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcmZhY2UpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfNCApXG4jIDIyMTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyMzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggW10gKVxuIyAyMjIxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIzNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgMSAoXCJNYWxmb3JtZWQgc2l0ZSBleHByZXNzaW9uXCIpKSkgKVxuIyAyMjI4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX3NpZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVyZmFjZV9zaWcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIzOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIDo6IF8yIClcbiMgMjIzNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2Vfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnc2l0ZV9zaWcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJmYWNlX3NpZykgaW5cbiAgICBPYmoucmVwcihcbiMgMjM5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfNCApXG4jIDIyNDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgKCBBc3QuTm9Nb2Qsc3RhcnRfcG9zIDEsXzEgKVxuIyAyMjUyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggQXN0LkNyZWF0ZSxlbmRfcG9zIDIsXzMgKVxuIyAyMjYwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIEFzdC5FcmFzZSxlbmRfcG9zIDIsXzMgKVxuIyAyMjY4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjQ5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgKCAoQXN0LkFic2VudCAocmhzX3BvcyAxKSxlbmRfcG9zIDEsXzIpIClcbiMgMjI3NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA2IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcmZhY2UpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhZ2VudF9tb2RpZikgaW5cbiAgICBPYmoucmVwcihcbiMgMjUxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgbW9kaWYscGVuZCxhbiA9IF83IGluXG4gICAgICAoQXN0LlByZXNlbnQgKChfMSxyaHNfcG9zIDEpLCBfNSwgbW9kaWYpLHBlbmQsYW4pIClcbiMgMjI4NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxMCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA5IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDYgOiBzdHJpbmcpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzkgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVyZmFjZSkgaW5cbiAgICBsZXQgXzExID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhZ2VudF9tb2RpZikgaW5cbiAgICBPYmoucmVwcihcbiMgMjU0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgbW9kaWYscGVuZCxhbiA9IF8xMSBpblxuICAgICAgKEFzdC5QcmVzZW50ICgoXzUscmhzX3BvcyA1KSwgXzksIG1vZGlmKSxwZW5kLGFuKSApXG4jIDIzMDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI1NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeXzFeXCInXCIpKSkgKVxuIyAyMzExIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjYyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAoIChBc3QuQWJzZW50IChyaHNfcG9zIDEpLGVuZF9wb3MgMSxfMikgKVxuIyAyMzE4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA2IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcmZhY2Vfc2lnKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnRfbW9kaWYpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI2NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCBsZXQgbW9kaWYscGVuZCxhbiA9IF83IGluXG4gICAgICAgIChBc3QuUHJlc2VudCAoKF8xLHJoc19wb3MgMSksIF81LCBtb2RpZikscGVuZCxhbikgKVxuIyAyMzMwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxMCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA5IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDYgOiBzdHJpbmcpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzkgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVyZmFjZV9zaWcpIGluXG4gICAgbGV0IF8xMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnRfbW9kaWYpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI2NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCBsZXQgbW9kaWYscGVuZCxhbiA9IF8xMSBpblxuICAgICAgICAoQXN0LlByZXNlbnQgKChfNSxyaHNfcG9zIDUpLCBfOSwgbW9kaWYpLHBlbmQsYW4pIClcbiMgMjM0NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI3MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgMyAoXCJNYWxmb3JtZWQgYWdlbnQgJ1wiXl8xXlwiJ1wiKSkpIClcbiMgMjM1NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhZ2VudCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiggbGV0ICh4LF8sXykgPSBfMSBpblxuICBtYXRjaCBfNCB3aXRoXG4gIHwgKHk6OnoscGVuZCxwKSAtPiAoKHg6OnkpOjp6LHBlbmQscClcbiAgfCAoW10sXyxfKSAtPlxuICAgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAoYWRkX3BvcyA0IChcImFzc2VydGlvbiBmYWlsdXJlIGluIHBhdHRlcm4gcGFyc2luZ1wiKSkpIClcbiMgMjM2OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWdlbnQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgMjgyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4oIGxldCAoeCxfLF8pID0gXzEgaW4gbGV0ICh5LHBlbmQscCkgPSBfNCBpbiAoW3hdOjp5LHBlbmQscCkgKVxuIyAyMzc3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhdHRlcm4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhZ2VudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjgzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBsZXQgKHgscGVuZCxwKSA9IF8xIGluIChbW3hdXSxwZW5kLHApIClcbiMgMjM4NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbmJyKSBpblxuICAgIE9iai5yZXByKFxuIyAyODcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLkNPTlNUIF8xKSApXG4jIDIzOTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI4OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRU1BWF9WQVIpKSApXG4jIDIzOTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI4OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVE1BWF9WQVIpKSApXG4jIDI0MDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI5MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuQ1BVVElNRSkpIClcbiMgMjQwOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb25zdGFudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI5NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBhZGRfcG9zIDUgKEFsZ19leHByLlRPS0VOX0lEIChfMykpIClcbiMgMjQxOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyAyOTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocCxfLF8pID0gXzMgaW4gYWRkX3BvcyA0IChBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBwKSApXG4jIDI0MjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMjk3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLkFMR19WQVIgKF8xKSkgKVxuIyAyNDMzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5BTEdfVkFSIChfMSkpIClcbiMgMjQ0MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjk5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAoIGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5USU1FX1ZBUikpIClcbiMgMjQ0NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzAwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRVZFTlRfVkFSKSkgKVxuIyAyNDUyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzMDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUikpIClcbiMgMjQ1OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzA2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0ICh4LF8sXykgPSBfMyBpbiB4IClcbiMgMjQ2NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvbnN0YW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzMDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAoIF8xIClcbiMgMjQ3MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhcmlhYmxlKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAoIF8xIClcbiMgMjQ4MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzEwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDUgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUFYLF8zLF81KSkgKVxuIyAyNDkwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgNSAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU4sXzMsXzUpKSApXG4jIDI1MDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMxNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuRVhQLF8zKSkgKVxuIyAyNTA4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNJTlVTLF8zKSkgKVxuIyAyNTE2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkNPU0lOVVMsXzMpKSApXG4jIDI1MjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuVEFOLF8zKSkgKVxuIyAyNTMyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLklOVCxfMykpIClcbiMgMjU0MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzI0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TUVJULF8zKSkgKVxuIyAyNTQ4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkxPRyxfMykpIClcbiMgMjU1NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzI4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5VTUlOVVMsXzMpKSApXG4jIDI1NjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMzMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoXzEsZW5kX3BvcyAxLF8yKSApXG4jIDI1NzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fbW9kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzM0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHgseSx6KSA9IF81IGluXG4gICAgICAoYWRkX3BvcyA0IChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlBPVyxfMSx4KSkseSx6KSApXG4jIDI1ODMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fbW9kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyAzMzkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI1OTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fcHJvZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX3Byb2QpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyAzNDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1PRFVMTyx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNjAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX3Byb2QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19wcm9kKSBpblxuICAgIE9iai5yZXByKFxuIyAzNDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAyNjEwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX3N1bSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX3N1bSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19wcm9kKSBpblxuICAgIE9iai5yZXByKFxuIyAzNTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTVVMVCx4LHkpLFxuICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI2MjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX3Byb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM1NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5ESVYseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjYzNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19zdW0pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19zdW0pIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjY0MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19pZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX3N1bSkgaW5cbiAgICBPYmoucmVwcihcbiMgMzY3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlNVTSx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNjU2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX2lmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjY2OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19pZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIE9iai5yZXByKFxuIyAzODAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjY3NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzggPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChpLF8sXykgPSBfMSBpblxuICAgICAgbGV0ICh0LF8sXykgPSBfNCBpblxuICAoKEFsZ19leHByLklGKGksdCxfNyksXG4gICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIChlbmRfcG9zIDcpKSxlbmRfcG9zIDcsXzgpIClcbiMgMjY5MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzg5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAoIHRydWUgKVxuIyAyNjk3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xlYW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM5MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggZmFsc2UgKVxuIyAyNzAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xlYW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzOTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0ICh4LF8sXykgPSBfMyBpbiB4IClcbiMgMjcxMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9ib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM5NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCBhZGRfcG9zIDEgQWxnX2V4cHIuVFJVRSApXG4jIDI3MTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzOTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIGFkZF9wb3MgMSBBbGdfZXhwci5GQUxTRSApXG4jIDI3MjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzk4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0JPT0xfT1AoT3BlcmF0b3IuTk9ULF8zKSkgKVxuIyAyNzMxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NtYWxsX2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF8xLGVuZF9wb3MgMSwgXzIpIClcbiMgMjczOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHJfY29tcCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuR1JFQVRFUix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNzUyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcl9jb21wKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5TTUFMTEVSLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI3NjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX2NvbXApKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDE2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkVRVUFMLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI3NzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX2NvbXApKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDIyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkRJRkYseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjc5MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHJfY29tcCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcl9jb21wKSBpblxuICAgIE9iai5yZXByKFxuIyA0MzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjc5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHJfbm9fb3IpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdib29sX2V4cHJfY29tcCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHJfbm9fb3IpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQzMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuQU5ELHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI4MTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX25vX29yKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByX25vX29yKSBpblxuICAgIE9iai5yZXByKFxuIyA0NDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI4MTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYm9vbF9leHByX25vX29yKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDQyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQk9PTF9PUChPcGVyYXRvci5PUix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyODMxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ1MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoeCxfLF8pID0gXzIgaW4geCApXG4jIDI4MzkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsc3RyaW5nKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDUyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDIgXCJQcm9ibGVtYXRpYyBib29sZWFuIGV4cHJlc3Npb25cIikpIClcbiMgMjg0NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxzdHJpbmcpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQ1NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoZmFsc2UpXG4jIDI4NTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYXJyb3cpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQ1OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKHRydWUpXG4jIDI4NTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYXJyb3cpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFsoXzEsKF8zLHJoc19wb3MgMykpXSxlbmRfcG9zIDMsXzQgKVxuIyAyODY5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA2IDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChsLHBlbmQsYW4pID0gXzcgaW4gKF8xLChfMyxyaHNfcG9zIDMpKSA6OiBsLHBlbmQsYW4gKVxuIyAyODgxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgKCBsZXQgKHAscGVuZCxhbikgPSBfMSBpbiAocCxbXSxwZW5kLGFuKSApXG4jIDI4ODggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9zaWRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwLF8sXykgPSBfMSBpblxuICAgICAgbGV0ICh0LHBlbmQsYW4pID0gXzQgaW4gKHAsIHQsIHBlbmQsIGFuKSApXG4jIDI4OTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9zaWRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3N1bV90b2tlbikgaW5cbiAgICBPYmoucmVwcihcbiMgNDcyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAodCxwZW5kLGFuKSA9IF8zIGluIChbXSwgdCwgcGVuZCwgYW4pIClcbiMgMjkwNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX3NpZGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDc0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0KGFkZF9wb3MgNCBcIk1hbGZvcm1lZCB0b2tlbiBleHByZXNzaW9uLCBJIHdhcyBleHBlY3RpbmcgYV8wIHRfMCwgLi4uIFxcXG4sIGFfbiB0X24gd2hlcmUgdF9pIGFyZSB0b2tlbnMgYW5kIGFfaSBhbnkgYWxnZWJyYWljIGZvcm11bGFcIikpIClcbiMgMjkxNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX3NpZGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA0NzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIHRva2VuIGV4cHJlc3Npb24sIEkgd2FzIGV4cGVjdGluZyBhXzAgdF8wLCAuLi4gXFxcbiwgYV9uIHRfbiB3aGVyZSB0X2kgYXJlIHRva2VucyBhbmQgYV9pIGFueSBhbGdlYnJhaWMgZm9ybXVsYVwiKSkgKVxuIyAyOTI1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfc2lkZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3J1bGVfc2lkZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fycm93KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGVfc2lkZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNDg1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGxocyxybV90b2tlbixfLF8pID0gXzEgaW5cbiAgICAgIGxldCAocmhzLGFkZF90b2tlbixwZW5kLGFuKSA9IF80IGluXG4gICAgICAoQXN0LkFycm93IHtBc3QubGhzOyBBc3Qucm1fdG9rZW47IEFzdC5yaHM7IEFzdC5hZGRfdG9rZW59LF8yLHBlbmQsYW4pIClcbiMgMjkzNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdydWxlX3NpZGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhcnJvdykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ4OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChsaHMscm1fdG9rZW4sXyxfKSA9IF8xIGluXG4gICAgICAoQXN0LkFycm93IHtBc3QubGhzOyBBc3Qucm1fdG9rZW47IEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW49W119LF8yLGVuZF9wb3MgMixfMykgKVxuIyAyOTQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fycm93KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGVfc2lkZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNDkyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHJocyxhZGRfdG9rZW4scGVuZCxhbikgPSBfMyBpblxuICAgICAgKEFzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuPVtdOyBBc3QucmhzOyBBc3QuYWRkX3Rva2VufSxfMSxwZW5kLGFuKSApXG4jIDI5NTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncnVsZV9zaWRlKSBpblxuICAgIE9iai5yZXByKFxuIyA0OTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobWl4LGRlbHRhX3Rva2VuLHBlbmQsYW4pID0gXzEgaW5cbiAgICAgIChBc3QuRWRpdCB7QXN0Lm1peDsgQXN0LmRlbHRhX3Rva2VufSxmYWxzZSxwZW5kLGFuKSApXG4jIDI5NjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUwMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICggbGV0ICh4LF8sXykgPSBfMSBpbiAoeCxOb25lKSApXG4jIDI5NzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX3dpdGhfcmFkaXVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUwMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh4LF8sXykgPSBfMSBpbiBsZXQgKHksXyxfKSA9IF80IGluICh4LCBTb21lIHkpIClcbiMgMjk4MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfd2l0aF9yYWRpdXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX3dpdGhfcmFkaXVzKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1MDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoYixwZW5kLGFuKSA9IF82IGluIChiLFNvbWUgXzMscGVuZCxhbikgKVxuIyAyOTkxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3JhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfd2l0aF9yYWRpdXMpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1MDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeCxfLF8pID0gXzEgaW4gKHgsU29tZSBfNCxlbmRfcG9zIDUsXzYpIClcbiMgMzAwMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICggbGV0IChhLHBlbmQsYW4pID0gXzEgaW4gKGEsTm9uZSxwZW5kLGFuKSApXG4jIDMwMDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdyYXRlKSBpblxuICAgIE9iai5yZXByKFxuIyA1MTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGsyLGsxLHBlbmQsYW4pID0gXzMgaW4gKGsyLGsxLE5vbmUsTm9uZSxwZW5kLGFuKSApXG4jIDMwMTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYmlyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3JhdGUpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncmF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNTE2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGsyLGsxLF8sXykgPSBfMyBpblxuICAgICAgbGV0IChrYmFjayxrYmFjazEscGVuZCxhbikgPSBfNiBpblxuICAgICAgKGsyLGsxLFNvbWUga2JhY2ssa2JhY2sxLHBlbmQsYW4pIClcbiMgMzAyOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdiaXJhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdydWxlX2NvbnRlbnQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdiaXJhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUyMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChrX2RlZixrX3VuLGtfb3Asa19vcF91bixwb3NfZW5kLF9hbm5vdCkgPSBfMiBpblxuICAgICAgbGV0IChyZXdyaXRlLGJpZGlyZWN0aW9uYWwsXyxfKSA9IF8xIGluXG4gICAgICAoe1xuICAgICAgICBBc3QucmV3cml0ZTtBc3QuYmlkaXJlY3Rpb25hbDtcbiAgICAgICAgQXN0LmtfZGVmOyBBc3Qua191bjsgQXN0Lmtfb3A7IEFzdC5rX29wX3VuO1xuICAgICAgfSxMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcG9zX2VuZCkgKVxuIyAzMDQxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdydWxlX2NvbnRlbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDIgXCJydWxlIHJhdGUgZXhwZWN0ZWRcIikpIClcbiMgMzA0OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHYscGVuZCxhbikgPSBfMyBpbiAoKF8xLHJoc19wb3MgMSksdixwZW5kLGFuKSApXG4jIDMwNTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNTM1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAodixwZW5kLGFuKSA9IF8zIGluICgoXzEscmhzX3BvcyAxKSx2LHBlbmQsYW4pIClcbiMgMzA2NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTM3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgKFwiSWxsZWdhbCBkZWZpbml0aW9uIG9mIHZhcmlhYmxlICdcIl5fMV5cIidcIikpKSApXG4jIDMwNzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU0MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIklsbGVnYWwgZGVmaW5pdGlvbiBvZiB2YXJpYWJsZSAnXCJeXzFeXCInXCIpKSkgKVxuIyAzMDg0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1NDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAxIChcImxhYmVsIGV4cGVjdGVkXCIpKSkgKVxuIyAzMDkwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1NDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICggWyBfMSxyaHNfcG9zIDEgXSApXG4jIDMwOTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaWRfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpZF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA1NDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChfMSxyaHNfcG9zIDEpIDo6IF81IClcbiMgMzEwOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpZF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyA1NTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLF8pID0gXzEgaW5cbiAgICAgIGxldCAocCxwZW5kLF8pID0gXzIgaW5cbiAgICAgICh2LEFzdC5JTklUX01JWCAocCxMb2Mub2ZfcG9zIChzdGFydF9wb3MgMikgcGVuZCkpIClcbiMgMzExOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU1NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh2LF8sXykgPSBfMSBpblxuICAgICAgbGV0IChwLHBlbmQsXykgPSBfNCBpblxuICAgICAgKHYsQXN0LklOSVRfTUlYIChwLExvYy5vZl9wb3MgKHN0YXJ0X3BvcyA0KSBwZW5kKSkgKVxuIyAzMTMwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2lkX2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU2MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh2LF8sXykgPSBfMSBpbiAodixBc3QuSU5JVF9UT0sgXzIpIClcbiMgMzEzOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU2NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh2LF8sXykgPSBfNCBpbiAodixBc3QuSU5JVF9UT0sgW18xLHJoc19wb3MgMV0pKVxuIyAzMTQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU2OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAxIFwiTWFsZm9ybWVkIGluaXRpYWwgY29uZGl0aW9uXCIpKSApXG4jIDMxNTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTc0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgKFtfMSwgcmhzX3BvcyAxXSlcbiMgMzE2MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YWx1ZV9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFsdWVfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTc1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF8xLHJoc19wb3MgMSk6Ol8zKVxuIyAzMTcxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhbHVlX2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU4MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggKFtQcmltaXRpdmVzLlN0cl9wZXhwciAoYWRkX3BvcyAxIF8xKV0sZW5kX3BvcyAxLF8yKSApXG4jIDMxNzkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIE9iai5yZXByKFxuIyA1ODIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoYSxwZW5kLHApID0gXzEgaW4gKFtQcmltaXRpdmVzLkFsZ19wZXhwciBhXSxwZW5kLHApIClcbiMgMzE4NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcl9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA1ODMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDMxOTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwcmludF9leHByX2xpc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1ODUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLGFuKSA9IF8zIGluICh2LGVuZF9wb3MgNCxhbiBAIF81KSApXG4jIDMyMDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1OTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobCxwZW5kLHApID0gXzUgaW4gKFByaW1pdGl2ZXMuU3RyX3BleHByIChfMSwgcmhzX3BvcyAxKTo6bCxwZW5kLHApIClcbiMgMzIxMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwcmludF9leHByX2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1OTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobCxwZW5kLHApID0gXzQgaW5cbiAgICAgIGxldCAodixfLF8pID0gXzEgaW5cbiAgICAgIChQcmltaXRpdmVzLkFsZ19wZXhwciB2OjpsLHBlbmQscCkgKVxuIyAzMjIzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ByaW50X2V4cHJfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgKCAoW10sc3RhcnRfcG9zIDEsXzEpIClcbiMgMzIzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU5OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8yIClcbiMgMzIzOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2MDQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoYSxwZW5kLHApID0gXzUgaW4gKEFzdC5VUERBVEUgKChfMyxyaHNfcG9zIDMpLGEpLHBlbmQscCkgKVxuIyAzMjQ4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjA2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGEscGVuZCxwKSA9IF81IGluIChBc3QuVVBEQVRFICgoXzMscmhzX3BvcyAzKSxhKSxwZW5kLHApIClcbiMgMzI1OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYwOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggKEFzdC5DRkxPV0xBQkVMIChfNSwoXzMscmhzX3BvcyAzKSksZW5kX3BvcyA1LF82KSApXG4jIDMyNjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sZWFuKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjEwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHBhdCxlcGF0LF8pID0gXzMgaW5cbiAgICAgIChBc3QuQ0ZMT1dNSVggKF80LChwYXQsTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDMpIGVwYXQpKSxlbmRfcG9zIDQsIF81KSApXG4jIDMyODAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sZWFuKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjEzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHAsXyxfKSA9IF8zIGluXG4gICAgICAoKGlmIF80IHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSxwKSBlbHNlIEFzdC5ESU5PRkYgcCksXG4gICAgICAgZW5kX3BvcyA0LF81KSApXG4jIDMyOTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sZWFuKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjE3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHAsXyxfKSA9IF8zIGluXG4gICAgICBpZiBfNiAmJiBfNCA9IFwiYWJzb2x1dGVcIiB0aGVuXG4gICAgICAgIChBc3QuRElOIChQcmltaXRpdmVzLkFCU09MVVRFLHApLGVuZF9wb3MgNixfNylcbiAgICAgIGVsc2UgaWYgXzYgJiYgXzQgPSBcInByb2JhYmlsaXR5XCIgdGhlblxuICAgICAgICAoQXN0LkRJTiAoUHJpbWl0aXZlcy5QUk9CQUJJTElUWSxwKSxlbmRfcG9zIDYsXzcpXG4gICAgICBlbHNlIGlmIF82ICYmIF80ID0gXCJyZWxhdGl2ZVwiIHRoZW5cbiAgICAgICAgKEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUscCksZW5kX3BvcyA2LF83KVxuICAgICAgZWxzZSByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgKFwiSW5jb3JyZWN0IERJTiBleHByZXNzaW9uXCIscmhzX3BvcyA0KSkgKVxuIyAzMzEyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGVfY29udGVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjI3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHJld3JpdGUsXyxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHYsXyxfKSA9IF8zIGluXG4gICAgICBBc3QuQVBQTFkodixcbiAgICAgICAgICAgICAgICAoeyBBc3QucmV3cml0ZTsgQXN0LmJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87QXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxcbiAgICAgICAgICAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDMpIHBlbmQpKSxcbiAgICAgIHBlbmQsYW5cbiAgICApXG4jIDMzMjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgNjM3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKG0scGVuZCxwKSA9IF80IGluXG4gICAgICBsZXQgKHYsXyxfKSA9IF8zIGluXG4gICAgICAoQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCAgIEFzdC5FZGl0IHtBc3QubWl4PUFzdC50b19jcmVhdGVkX21peHR1cmUgbTtcbiAgICAgICAgICAgICAgICAgICAgIEFzdC5kZWx0YV90b2tlbj1bXTt9O1xuXHRcdCAgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxcbiAgICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyA0KSBwZW5kKSksXG4gICAgICAgcGVuZCxwKSApXG4jIDMzNDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjQ5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgaW50ZXJ2ZW50aW9uIGluc3RydWN0aW9uLCBJIHdhcyBleHBlY3RpbmcgXFxcbickQUREIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKSApXG4jIDMzNTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgNjUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKG0scGVuZCxwKSA9IF80IGluXG4gICAgICBsZXQgKHYsXyxfKSA9IF8zIGluXG4gICAgICAoQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgQXN0LkVkaXQge0FzdC5taXg9QXN0LnRvX2VyYXNlZF9taXh0dXJlIG07XG4gICAgICAgICAgICAgICAgICAgQXN0LmRlbHRhX3Rva2VuPVtdO307XG5cdFx0IEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LFxuICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyA0KSBwZW5kKSksXG4gICAgICAgcGVuZCxwKSApXG4jIDMzNzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjY1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIFxcXG5leHBlY3RpbmcgJyRERUwgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpIClcbiMgMzM4NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2NjggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChzLHBlbmQscCkgPSBfMiBpbiAoQXN0LlNOQVBTSE9UIChmYWxzZSxzKSxwZW5kLHApIClcbiMgMzM5MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwcmludF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY2OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChzLF8sXykgPSBfMiBpbiAoQXN0LlNOQVBTSE9UIChfMyxzKSxlbmRfcG9zIDMsXzQpIClcbiMgMzQwMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2NzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHMscGVuZCxwKSA9IF8yIGluIChBc3QuU1RPUCBzLHBlbmQscCkgKVxuIyAzNDA4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2NzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoZixwZW5kLHApID0gXzQgaW4gbGV0IChjLF8sXykgPSBfMiBpbiAoQXN0LlBSSU5UIChmLGMpLHBlbmQscCkgKVxuIyAzNDE2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY3MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggbGV0IChjLHBlbmQscCkgPSBfMiBpbiAoQXN0LlBSSU5UIChbXSxjKSxwZW5kLHApIClcbiMgMzQyMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2NzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIChBc3QuUExPVEVOVFJZLGVuZF9wb3MgMSxfMikgKVxuIyAzNDMwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2NzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoXG4gICAgICBsZXQgKGZpbGUscGVuZCxwKSA9IF83IGluXG4gICAgICBsZXQgKHBhdCxwZW5kcCxfKSA9IF8zIGluXG4gICAgICAoQXN0LlNQRUNJRVNfT0YgKF80LGZpbGUsKHBhdCwgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDMpIHBlbmRwKSksXG4gICAgICAgcGVuZCxwKSApXG4jIDM0NDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2ODQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICBsZXQgKHYscGVuZCxwKSA9IF81IGluXG4gICBsZXQgdGsgPSAoXzEscmhzX3BvcyAxKSBpblxuICAgIChBc3QuQVBQTFkoQWxnX2V4cHIuY29uc3QgTmJyLm9uZSxcbiAgICAgICAgKHtBc3QucmV3cml0ZSA9XG4gICAgICAgICAgICAgIEFzdC5FZGl0XG4gICAgICAgICAgICAgICAgICB7QXN0Lm1peD1bXTtcbiAgICAgICAgICAgICAgICAgICBBc3QuZGVsdGFfdG9rZW4gPVxuICAgICAgICAgICAgICAgICAgICAgIFsoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUyx2LChBbGdfZXhwci5UT0tFTl9JRCBfMSxyaHNfcG9zIDEpKSxyaHNfcG9zIDEpLHRrXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAgNCkgcGVuZCkpLHBlbmQscClcbiAgIClcbiMgMzQ2OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpZGluKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2OTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgXFxcbmV4cGVjdGluZyAnSUQgPC0gYWxnX2V4cHJlc3Npb24nXCIpKSApXG4jIDM0NzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyA3MDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAyIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgXFxcbiAgIGV4cGVjdGluZyAnSUQgPC0gYWxnX2V4cHJlc3Npb24nXCIpKSApXG4jIDM0ODcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2VmZmVjdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzA5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgIChfMSlcbiMgMzQ5NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3Rfb3JfaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2lkaW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDcxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKF8xKVxuIyAzNTAxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9vcl9pZGluKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzMgKVxuIyAzNTEwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdlZmZlY3Rfb3JfaWRpbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcxNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChlLF8sXykgPSBfMSBpbiAoW2VdLGVuZF9wb3MgMixfMykgKVxuIyAzNTE4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdlZmZlY3Rfb3JfaWRpbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzE1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgKCBsZXQgKGUscCxhKSA9IF8xIGluIChbZV0scCxhKSApXG4jIDM1MjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGFydGlhbF9lZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2VmZmVjdF9vcl9pZGluKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcxNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChlLF8sXykgPSBfMSBpbiBsZXQgKGwscGVuZCxhKSA9IF80IGluIChlOjpsLHBlbmQsYSkgKVxuIyAzNTM0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpZGluKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzIwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGUsXyxfKSA9IF8xIGluIChbZV0sZW5kX3BvcyAyLF8zKSApXG4jIDM1NDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGFydGlhbF9lZmZlY3RfbGlzdF9hdF9sZWFzdF9vbmVfaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2lkaW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDcyMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICggbGV0IChlLHAsYSkgPSBfMSBpbiAoW2VdLHAsYSkgKVxuIyAzNTQ5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdpZGluKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcyMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggbGV0IChlLF8sXykgPSBfMSBpbiBsZXQgKGwscGVuZCxhKSA9IF80IGluIChlOjpsLHBlbmQsYSkgKVxuIyAzNTU4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncGFydGlhbF9lZmZlY3RfbGlzdCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcyNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMyApXG4jIDM1NjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAncGFydGlhbF9lZmZlY3RfbGlzdCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKGUsXyxfKSA9ICBfMyBpbiBlLGVuZF9wb3MgNixfNyApXG4jIDM1NzcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdlZmZlY3QpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MjggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGUsXyxfKSA9IF8xIGluIChbZV0sZW5kX3BvcyAyLF8zKSApXG4jIDM1ODUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdlZmZlY3QpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDczMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChlLF8sXykgPSBfMSBpbiBsZXQgKGwscGVuZCxhKSA9IF80IGluIChlOjpsLHBlbmQsYSkgKVxuIyAzNTk0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDczNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGUsXyxfKSA9IF8yIGluIGUgKVxuIyAzNjAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNzM2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMSBcIlByb2JsZW1hdGljIGVmZmVjdCBsaXN0XCIpKSApXG4jIDM2MDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QubW9kaWZfZXhwciBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzQwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAoIE5vbmUgKVxuIyAzNjE1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbmJyKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzQxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggU29tZSBfNCApXG4jIDM2MjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2FsYXJtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzQzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMyBcImFsYXJtIHRha2VzIGEgbnVtYmVyIGFzIGFyZ3VtZW50XCIpKSApXG4jIDM2MzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2FsYXJtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNzQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChiLHBlbmQscCkgPSBfMyBpbiAoU29tZSBiLHBlbmQscCkgKVxuIyAzNjQwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9wb3N0X2Nsb3NlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNzUwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCAoTm9uZSwgUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpLFtdKSApXG4jIDM2NDYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX3Bvc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc1MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzEpXG4jIDM2NTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX3Bvc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzU2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHByZSxfLF8pID0gXzIgaW5cbiAgICAgIGxldCAoZSxfLF8pID0gXzUgaW5cbiAgICAgIGxldCAocG9zdCxfLF8pID0gXzYgaW5cbiAgICAgIChfMSxTb21lIHByZSxlLHBvc3QpIClcbiMgMzY2NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzYxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGUsXyxfKSA9IF80IGluIGxldCAocG9zdCxfLF8pID0gXzUgaW4gKF8xLE5vbmUsZSxwb3N0KSApXG4jIDM2NzcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4pIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc2NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwcmUsXyxfKSA9IF8yIGluXG4gICAgICBsZXQgKGUsXyxfKSA9IF81IGluXG4gICAgICBsZXQgKHBvc3QsXyxfKSA9IF82IGluXG4gICAgICAoXzEsU29tZSBwcmUsZSxwb3N0KSApXG4jIDM2OTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4pIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc2OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoIGxldCAoZSxfLF8pID0gXzQgaW5cbiAgICAgICAgICBsZXQgKHBvc3QsXyxfKSA9IF81IGluXG4gICAgICAgICAgKF8xLE5vbmUsZSxwb3N0KSApXG4jIDM3MDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncnVsZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNzc2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGQgKEFzdC5SVUxFKFNvbWUgKF8xLCByaHNfcG9zIDEpLF8zKSkgKVxuIyAzNzEyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA3NzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLF8pID0gXzUgaW4gYWRkIChBc3QuREVDTEFSRSAoKF8xLHJoc19wb3MgMSksdikpIClcbiMgMzcyMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc3OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCBhZGQgKEFzdC5SVUxFIChOb25lLF8xKSkgKVxuIyAzNzI5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FnZW50X3NpZykgaW5cbiAgICBPYmoucmVwcihcbiMgNzgwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChhLF8sXykgPSBfMyBpbiBhZGQgKEFzdC5TSUcgYSkgKVxuIyAzNzM3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzgyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBhZ2VudCBzaWduYXR1cmVcIikpIClcbiMgMzc0NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc4NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGFkZCAoQXN0LlRPS0VOU0lHIChfMyxyaHNfcG9zIDMpKSApXG4jIDM3NTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc4NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAodixfLF8pID0gXzMgaW4gYWRkIChBc3QuUExPVCB2KSApXG4jIDM3NjIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3ODcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgM1xuICAgICAgICAgICAgICAgICAgXCJNYWxmb3JtZWQgcGxvdCBpbnN0cnVjdGlvbiwgXFxcbmFuIGFsZ2VicmFpYyBleHByZXNzaW9uIGlzIGV4cGVjdGVkXCIpKSApXG4jIDM3NzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDc5MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChpLHYsXyxfKSA9IF8zIGluIGFkZCAoQXN0LkRFQ0xBUkUgKGksdikpIClcbiMgMzc4MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzkzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGksdixfLF8pID0gXzMgaW4gYWRkIChBc3QuT0JTIChpLHYpKSApXG4jIDM3ODggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW5pdF9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzk1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGFsZyxpbml0KSA9IF8zIGluIGFkZCAoQXN0LklOSVQgKGFsZyxpbml0KSkgKVxuIyAzNzk2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA3OTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGFkZCAoQXN0LlBFUlQgKF8yLCByaHNfcG9zIDIpKSApXG4jIDM4MDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFsdWVfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzk4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGQgKEFzdC5DT05GSUcgKChfMyxyaHNfcG9zIDMpLF81KSkgKVxuIyAzODEzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2VudGVuY2UpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtb2RlbF9ib2R5KSBpblxuICAgIE9iai5yZXByKFxuIyA4MDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggXzIgKVxuIyAzODIxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ21vZGVsX2JvZHkpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDgwMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoIG91dHB1dCAoKSApXG4jIDM4MjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbW9kZWxfYm9keSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtb2RlbF9ib2R5KSBpblxuICAgIE9iai5yZXByKFxuIyA4MDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKCBfMiApXG4jIDM4MzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19pbnN0cnVjdGlvbiBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA4MDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMSBcIkluY29ycmVjdCBiZWdpbm5pbmcgb2Ygc2VudGVuY2UgISEhXCIpKSApXG4jIDM4NDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19pbnN0cnVjdGlvbiBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDgxNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggQXN0LlJVTiAoTG9jLmFubm90X3dpdGhfZHVtbXkgQWxnX2V4cHIuRkFMU0UpIClcbiMgMzg1MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDgxNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAocGF1c2UsXyxfKSA9IF80IGluIEFzdC5SVU4gcGF1c2UgKVxuIyAzODU5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0KSBpblxuICAgIE9iai5yZXByKFxuIyA4MTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGVmZixfLF8pID0gXzIgaW4gQXN0Lk1PRElGWSBbZWZmXSApXG4jIDM4NjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDgxNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICggQXN0LlFVSVQgKVxuIyAzODc0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDgxOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDEgXCJVbnJlY29nbml6ZWQgY29tbWFuZFwiKSkgKVxuIyAzODgwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuKCogRW50cnkgbW9kZWwgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgaW50ZXJhY3RpdmVfY29tbWFuZCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzdGFuZGFsb25lX2VmZmVjdF9saXN0ICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHN0YW5kYWxvbmVfYm9vbF9leHByICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbnxdXG5sZXQgeXl0YWJsZXMgPVxuICB7IFBhcnNpbmcuYWN0aW9ucz15eWFjdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9jb25zdD15eXRyYW5zbF9jb25zdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9ibG9jaz15eXRyYW5zbF9ibG9jaztcbiAgICBQYXJzaW5nLmxocz15eWxocztcbiAgICBQYXJzaW5nLmxlbj15eWxlbjtcbiAgICBQYXJzaW5nLmRlZnJlZD15eWRlZnJlZDtcbiAgICBQYXJzaW5nLmRnb3RvPXl5ZGdvdG87XG4gICAgUGFyc2luZy5zaW5kZXg9eXlzaW5kZXg7XG4gICAgUGFyc2luZy5yaW5kZXg9eXlyaW5kZXg7XG4gICAgUGFyc2luZy5naW5kZXg9eXlnaW5kZXg7XG4gICAgUGFyc2luZy50YWJsZXNpemU9eXl0YWJsZXNpemU7XG4gICAgUGFyc2luZy50YWJsZT15eXRhYmxlO1xuICAgIFBhcnNpbmcuY2hlY2s9eXljaGVjaztcbiAgICBQYXJzaW5nLmVycm9yX2Z1bmN0aW9uPXBhcnNlX2Vycm9yO1xuICAgIFBhcnNpbmcubmFtZXNfY29uc3Q9eXluYW1lc19jb25zdDtcbiAgICBQYXJzaW5nLm5hbWVzX2Jsb2NrPXl5bmFtZXNfYmxvY2sgfVxubGV0IG1vZGVsIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAxIGxleGZ1biBsZXhidWYgOiBBc3QucGFyc2luZ19pbnN0cnVjdGlvbiBsaXN0KVxubGV0IGludGVyYWN0aXZlX2NvbW1hbmQgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDIgbGV4ZnVuIGxleGJ1ZiA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKVxubGV0IHN0YW5kYWxvbmVfZWZmZWN0X2xpc3QgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDMgbGV4ZnVuIGxleGJ1ZiA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5tb2RpZl9leHByIGxpc3QpXG5sZXQgc3RhbmRhbG9uZV9ib29sX2V4cHIgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDQgbGV4ZnVuIGxleGJ1ZiA6IChBc3QubWl4dHVyZSxzdHJpbmcpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQpXG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICovXG4vKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICovXG4vKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4le1xuICBsZXQgYWRkX3BvcyBlIHggPVxuICAgICh4LFxuICAgIExvYy5vZl9wb3MgKFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSkgKFBhcnNpbmcucmhzX2VuZF9wb3MgZSkpXG4gIGxldCByaHNfcG9zIGkgPVxuICAgIExvYy5vZl9wb3MgKFBhcnNpbmcucmhzX3N0YXJ0X3BvcyBpKSAoUGFyc2luZy5yaHNfZW5kX3BvcyBpKVxuICBsZXQgZW5kX3BvcyA9IFBhcnNpbmcucmhzX2VuZF9wb3NcbiAgbGV0IHN0YXJ0X3BvcyA9IFBhcnNpbmcucmhzX3N0YXJ0X3Bvc1xuXG4gIGxldCBpbnRlcm5hbF9tZW1vcnkgPSByZWYgW11cbiAgbGV0IGFkZCB4ID0gaW50ZXJuYWxfbWVtb3J5IDo9IHggOjogIWludGVybmFsX21lbW9yeVxuICBsZXQgb3V0cHV0ICgpID1cbiAgICBsZXQgbyA9IExpc3QucmV2ICFpbnRlcm5hbF9tZW1vcnkgaW4gbGV0ICgpID0gaW50ZXJuYWxfbWVtb3J5IDo9IFtdIGluIG9cbiV9XG5cbiV0b2tlbiBFT0YgQ09NTUEgRE9UIE9QX1BBUiBDTF9QQVIgT1BfQ1VSIENMX0NVUiBPUF9CUkEgQ0xfQlJBIEFUIFNFTUlDT0xPTlxuJXRva2VuIFBMVVMgTUlOVVMgTVVMVCBESVYgTU9EIE1BWCBNSU4gU0lOVVMgQ09TSU5VUyBUQU4gUE9XIEFCUyBTUVJUIEVYUE9ORU5UXG4ldG9rZW4gTE9HIE9SIEFORCBOT1QgVEhFTiBFTFNFIERJRkYgRVFVQUwgU01BTExFUiBHUkVBVEVSIFRSVUUgRkFMU0UgSU5GSU5JVFlcbiV0b2tlbiBTSEFSUCBVTkRFUlNDT1JFIFBJUEUgUkFSIExSQVIgTEFSIEVNQVggVE1BWCBDUFVUSU1FIFRJTUUgRVZFTlQgTlVMTF9FVkVOVFxuJXRva2VuIENPTE9OIE5FV0xJTkUgQkFDS1NMQVNIIFNJR05BVFVSRSBUT0tFTiBJTklUIE9CUyBQTE9UIFBFUlQgQ09ORklHIEFQUExZXG4ldG9rZW4gREVMRVRFIElOVFJPIFNOQVBTSE9UIFNUT1AgRkxVWCBUUkFDSyBBU1NJR04gUFJJTlRGIFBMT1RFTlRSWSBTUEVDSUVTX09GXG4ldG9rZW4gRE8gUkVQRUFUIEFMQVJNIFJVTiBMRVRcbiV0b2tlbiA8aW50PiBJTlRcbiV0b2tlbiA8ZmxvYXQ+IEZMT0FUXG4ldG9rZW4gPHN0cmluZz4gSUQgTEFCRUwgU1RSSU5HXG4ldG9rZW4gPHN0cmluZz4gU1BBQ0UgQ09NTUVOVFxuXG4lc3RhcnQgbW9kZWxcbiV0eXBlIDxBc3QucGFyc2luZ19pbnN0cnVjdGlvbiBsaXN0PiBtb2RlbFxuXG4lc3RhcnQgaW50ZXJhY3RpdmVfY29tbWFuZFxuJXR5cGUgPChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kPiBpbnRlcmFjdGl2ZV9jb21tYW5kXG5cbiVzdGFydCBzdGFuZGFsb25lX2VmZmVjdF9saXN0XG4ldHlwZVxuICA8KEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdD4gc3RhbmRhbG9uZV9lZmZlY3RfbGlzdFxuXG4lc3RhcnQgc3RhbmRhbG9uZV9ib29sX2V4cHJcbiV0eXBlIDwoQXN0Lm1peHR1cmUsc3RyaW5nKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkPiBzdGFuZGFsb25lX2Jvb2xfZXhwclxuXG4lJVxuXG5hbm5vdGVkOlxuICB8IHsgW10gfVxuICB8IE5FV0xJTkUgYW5ub3RlZCB7IFwiXFxuXCI6OiQyIH1cbiAgfCBTUEFDRSBhbm5vdGVkIHsgJDE6OiQyIH1cbiAgfCBDT01NRU5UIGFubm90ZWQgeyAkMTo6JDIgfVxuICA7XG5cbm5icjpcbiAgfCBJTkZJTklUWSB7IE5ici5GIGluZmluaXR5IH1cbiAgfCBGTE9BVCB7IE5ici5GICQxIH1cbiAgfCBJTlQgeyBOYnIuSSAkMSB9XG4gIDtcblxubGlua19zdGF0ZTpcbiAgfCBET1QgeyBhZGRfcG9zIDEgTEthcHBhLkxOS19GUkVFIH1cbiAgfCBJTlQgeyBhZGRfcG9zIDEgKExLYXBwYS5MTktfVkFMVUUgKCQxLCgpKSkgfVxuICB8IFVOREVSU0NPUkUgeyBhZGRfcG9zIDEgTEthcHBhLkxOS19TT01FIH1cbiAgfCBJRCBhbm5vdGVkIERPVCBhbm5vdGVkIElEXG4gICAgeyBhZGRfcG9zIDUgKExLYXBwYS5MTktfVFlQRSAoKCQxLHJoc19wb3MgMSksKCQ1LHJoc19wb3MgNSkpKSB9XG4gIHwgU0hBUlAgeyBhZGRfcG9zIDEgTEthcHBhLkxOS19BTlkgfVxuICB8IElEIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAzIFwiaW5jb21wbGV0ZSBsaW5rIHN0YXRlXCIpKSB9XG4gIDtcblxubGlua19zdGF0ZXM6XG4gIHwgbGlua19zdGF0ZSBhbm5vdGVkIHsgWyQxXSB9XG4gIHwgbGlua19zdGF0ZSBhbm5vdGVkIGxpbmtfc3RhdGVzIHsgJDEgOjogJDMgfVxuICB8IGxpbmtfc3RhdGUgYW5ub3RlZCBDT01NQSBhbm5vdGVkIGxpbmtfc3RhdGVzIHsgJDEgOjogJDUgfVxuICA7XG5cbmxpbmtfbW9kaWY6XG4gIHwgeyBOb25lIH1cbiAgfCBESVYgYW5ub3RlZCBET1QgYW5ub3RlZCB7IFNvbWUgTm9uZSB9XG4gIHwgRElWIGFubm90ZWQgSU5UIGFubm90ZWQgeyBTb21lIChTb21lICgkMywgcmhzX3BvcyAzKSkgfVxuICB8IERJViBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJpbmNvbXBsZXRlIGxpbmsgbW9kaWZpY2F0aW9uXCIpKSB9XG4gIDtcblxuaW50ZXJuYWxfc3RhdGU6XG4gIHwgSUQgeyBhZGRfcG9zIDEgKFNvbWUgJDEpIH1cbiAgfCBTSEFSUCB7IGFkZF9wb3MgMSBOb25lIH1cbiAgO1xuXG5pbnRlcm5hbF9zdGF0ZXM6XG4gIHwgaW50ZXJuYWxfc3RhdGUgYW5ub3RlZCB7IFskMV0gfVxuICB8IGludGVybmFsX3N0YXRlIGFubm90ZWQgaW50ZXJuYWxfc3RhdGVzIHsgJDEgOjogJDMgfVxuICB8IGludGVybmFsX3N0YXRlIGFubm90ZWQgQ09NTUEgYW5ub3RlZCBpbnRlcm5hbF9zdGF0ZXMgeyAkMSA6OiAkNSB9XG4gIDtcblxuaW50ZXJuYWxfbW9kaWY6XG4gIHwgeyBOb25lIH1cbiAgfCBESVYgYW5ub3RlZCBJRCBhbm5vdGVkIHsgU29tZSAoJDMsIHJoc19wb3MgMykgfVxuICB8IERJViBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJpbmNvbXBsZXRlIGxpbmsgbW9kaWZpY2F0aW9uXCIpKSB9XG4gIDtcblxuc2l0ZV9saW5rOlxuICB8IGFubm90ZWQgbGlua19zdGF0ZXMgbGlua19tb2RpZiBDTF9CUkEgeyAoJDIsICQzKSB9XG4gIHwgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoXCJpbnZhbGlkIGxpbmtpbmcgc3RhdGUgb3IgbWlzc2luZyAnXSdcIixyaHNfcG9zIDIpKSB9XG4gIDtcblxuc2l0ZV9pbnRlcm5hbDpcbiAgfCBpbnRlcm5hbF9zdGF0ZXMgaW50ZXJuYWxfbW9kaWYgQ0xfQ1VSIHsgKCQxLCAkMikgfVxuICB8IGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChcImludmFsaWQgaW50ZXJuYWwgc3RhdGUgb3IgbWlzc2luZyAnfSdcIixyaHNfcG9zIDMpKSB9XG4gIDtcblxuY291bnRlcl9tb2RpZjpcbiAgfCBQTFVTIGFubm90ZWQgRVFVQUwgYW5ub3RlZCBJTlQgeyAoJDUsIHJoc19wb3MgNSkgfVxuICB8IFBMVVMgYW5ub3RlZCBFUVVBTCBhbm5vdGVkIE1JTlVTIGFubm90ZWQgSU5UIHsgKC0gJDcsIHJoc19wb3MgNykgfVxuICB8IE1JTlVTIGFubm90ZWQgRVFVQUwgYW5ub3RlZCBJTlQgeyAoLSAkNSwgcmhzX3BvcyA1KSB9XG4gIDtcblxuY291bnRlcl90ZXN0OlxuICB8IEVRVUFMIGFubm90ZWQgSU5UIHsgKEFzdC5DRVEgJDMscmhzX3BvcyAzKSB9XG4gIHwgR1JFQVRFUiBhbm5vdGVkIEVRVUFMIGFubm90ZWQgSU5UIHsgKEFzdC5DR1RFICQ1LHJoc19wb3MgNSkgfVxuICB8IFNNQUxMRVIgYW5ub3RlZCBFUVVBTCBhbm5vdGVkIElOVCB7IChBc3QuQ0xURSAkNSxyaHNfcG9zIDUpIH1cbiAgfCBFUVVBTCBhbm5vdGVkIElEIHsgKEFzdC5DVkFSICQzLHJoc19wb3MgMykgfVxuICA7XG5cbnNpdGVfY291bnRlcjpcbiAgfCBjb3VudGVyX21vZGlmIGFubm90ZWQgQ0xfQ1VSIGFubm90ZWQgeyAoTm9uZSwgJDEpIH1cbiAgfCBjb3VudGVyX3Rlc3QgYW5ub3RlZCBDTF9DVVIgYW5ub3RlZCB7IChTb21lICQxLCBMb2MuYW5ub3Rfd2l0aF9kdW1teSAwKSB9XG4gIHwgY291bnRlcl90ZXN0IGFubm90ZWQgRElWIGFubm90ZWQgY291bnRlcl9tb2RpZiBhbm5vdGVkIENMX0NVUiBhbm5vdGVkXG4gICAgeyAoU29tZSAkMSwkNSkgfVxuICA7XG5cbnNpdGVfY291bnRlcl9zaWc6XG4gICAgfCBFUVVBTCBhbm5vdGVkIElOVCAgYW5ub3RlZCBESVYgYW5ub3RlZCBjb3VudGVyX21vZGlmIGFubm90ZWQgQ0xfQ1VSIGFubm90ZWRcbiAgICAgIHsgU29tZSAoU29tZSAoJDMpLHJoc19wb3MgMyksbWF0Y2ggJDcgd2l0aCAoYSxsb2MpIC0+IFNvbWUgKFNvbWUgKGEpLGxvYykgfVxuICAgIHwgRVFVQUwgYW5ub3RlZCBJTlQgIGFubm90ZWQgQ0xfQ1VSIGFubm90ZWRcbiAgICAgICAgeyBTb21lIChTb21lICgkMykscmhzX3BvcyAzKSxOb25lIH1cbiAgICA7XG5cbiAgc2l0ZV9zaWc6XG4gICAgfCBJRCBhbm5vdGVkIE9QX0JSQSBzaXRlX2xpbmsgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2ludGVybmFsIGFubm90ZWRcbiAgICAgIHsgbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gJDQgaW5cbiAgICAgICAgbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9ICQ4IGluXG4gICAgICAgIEFzdC5Qb3J0XG4gICAgICAgICAgeyBBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ7XG4gICAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZDsgfSB9XG4gICAgfCBJRCBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIHNpdGVfaW50ZXJuYWwgYW5ub3RlZCBPUF9CUkEgc2l0ZV9saW5rIGFubm90ZWRcbiAgICAgIHsgbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9ICQ1IGluXG4gICAgICAgIGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9ICQ4IGluXG4gICAgICAgIEFzdC5Qb3J0XG4gICAgICAgICAgeyBBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ7XG4gICAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZDsgfSB9XG4gICAgfCBJRCBhbm5vdGVkIE9QX0JSQSBzaXRlX2xpbmsgYW5ub3RlZFxuICAgICAgeyBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSAkNCBpblxuICAgICAgICBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZDsgfSB9XG4gICAgfCBJRCBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIHNpdGVfaW50ZXJuYWwgYW5ub3RlZFxuICAgICAgeyBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gJDUgaW5cbiAgICAgICAgQXN0LlBvcnRcbiAgICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTtcbiAgICAgICAgICAgIEFzdC5wb3J0X2ludDsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q9Tm9uZTsgfSB9XG4gICAgfCBJRCBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIHNpdGVfY291bnRlcl9zaWdcbiAgICAgIHsgbGV0IChjb3VudGVyX3NpZ19taW4sY291bnRlcl9zaWdfbWF4KSA9ICQ1IGluXG4gICAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgICAgeyBBc3QuY291bnRlcl9zaWdfbmFtZT0oJDEscmhzX3BvcyAxKTtcbiAgICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19taW47XG4gICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWF4O1xuICAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQ9XG4gICAgICAgICAgICAgICAgKG1hdGNoIGNvdW50ZXJfc2lnX21pbiB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lIChOb25lLCBfKS0+IDBcbiAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSBpLF8pIC0+IGkgKTtcbiAgICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlPUFzdC5Gcm9tX29yaWdpbmFsX2FzdDtcbiAgICAgICAgICAgIH0gfVxuICAgIHwgSUQgYW5ub3RlZFxuICAgICAgeyBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdOyBBc3QucG9ydF9pbnQ9W107XG4gICAgICAgICAgICBBc3QucG9ydF9pbnRfbW9kPU5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kPU5vbmU7IH0gfVxuICAgIDtcblxuc2l0ZTpcbiAgfCBJRCBhbm5vdGVkIE9QX0JSQSBzaXRlX2xpbmsgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2ludGVybmFsIGFubm90ZWRcbiAgICB7IGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9ICQ0IGluXG4gICAgICBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gJDggaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IH1cbiAgfCBJRCBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIHNpdGVfaW50ZXJuYWwgYW5ub3RlZCBPUF9CUkEgc2l0ZV9saW5rIGFubm90ZWRcbiAgICB7IGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSAkNSBpblxuICAgICAgbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gJDggaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IH1cbiAgfCBJRCBhbm5vdGVkIE9QX0JSQSBzaXRlX2xpbmsgYW5ub3RlZFxuICAgIHsgbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gJDQgaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q9Tm9uZTsgQXN0LnBvcnRfbGlua19tb2Q7IH0gfVxuICB8IElEIGFubm90ZWQgT1BfQ1VSIGFubm90ZWQgc2l0ZV9pbnRlcm5hbCBhbm5vdGVkXG4gICAgeyBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gJDUgaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdO1xuICAgICAgICAgIEFzdC5wb3J0X2ludDsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q9Tm9uZTsgfSB9XG4gIHwgSUQgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2NvdW50ZXJcbiAgICB7IGxldCAoY291bnRlcl90ZXN0LGNvdW50ZXJfZGVsdGEpID0gJDUgaW5cbiAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgIHsgQXN0LmNvdW50ZXJfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LmNvdW50ZXJfdGVzdDsgQXN0LmNvdW50ZXJfZGVsdGEgfSB9XG4gIHwgSUQgYW5ub3RlZFxuICAgIHsgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpO0FzdC5wb3J0X2xpbms9W107IEFzdC5wb3J0X2ludD1bXTtcbiAgICAgICAgICBBc3QucG9ydF9pbnRfbW9kPU5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kPU5vbmU7IH0gfVxuICA7XG5cbmludGVyZmFjZTpcbiAgfCB7IFtdIH1cbiAgfCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAxIChcIk1hbGZvcm1lZCBzaXRlIGV4cHJlc3Npb25cIikpKSB9XG4gIHwgc2l0ZSBpbnRlcmZhY2UgeyAkMSA6OiAkMiB9XG4gIHwgc2l0ZSBDT01NQSBhbm5vdGVkIGludGVyZmFjZSB7ICQxIDo6ICQ0IH1cbiAgO1xuXG5pbnRlcmZhY2Vfc2lnOlxuICAgIHwgeyBbXSB9XG4gICAgfCBlcnJvclxuICAgICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgMSAoXCJNYWxmb3JtZWQgc2l0ZSBleHByZXNzaW9uXCIpKSkgfVxuICAgIHwgc2l0ZV9zaWcgaW50ZXJmYWNlX3NpZyB7ICQxIDo6ICQyIH1cbiAgICB8IHNpdGVfc2lnIENPTU1BIGFubm90ZWQgaW50ZXJmYWNlX3NpZyB7ICQxIDo6ICQ0IH1cbiAgICA7XG5cbmFnZW50X21vZGlmOlxuICB8IGFubm90ZWQgeyBBc3QuTm9Nb2Qsc3RhcnRfcG9zIDEsJDEgfVxuICB8IGFubm90ZWQgUExVUyBhbm5vdGVkIHsgQXN0LkNyZWF0ZSxlbmRfcG9zIDIsJDMgfVxuICB8IGFubm90ZWQgTUlOVVMgYW5ub3RlZCB7IEFzdC5FcmFzZSxlbmRfcG9zIDIsJDMgfVxuICA7XG5cbmFnZW50OlxuICB8IERPVCBhbm5vdGVkIHsgKEFzdC5BYnNlbnQgKHJoc19wb3MgMSksZW5kX3BvcyAxLCQyKSB9XG4gIHwgSUQgYW5ub3RlZCBPUF9QQVIgYW5ub3RlZCBpbnRlcmZhY2UgQ0xfUEFSIGFnZW50X21vZGlmXG4gICAgeyBsZXQgbW9kaWYscGVuZCxhbiA9ICQ3IGluXG4gICAgICAoQXN0LlByZXNlbnQgKCgkMSxyaHNfcG9zIDEpLCAkNSwgbW9kaWYpLHBlbmQsYW4pIH1cbiAgfCBJRCBhbm5vdGVkIENPTE9OIGFubm90ZWQgSUQgYW5ub3RlZCBPUF9QQVIgYW5ub3RlZCBpbnRlcmZhY2UgQ0xfUEFSIGFnZW50X21vZGlmXG4gICAgeyBsZXQgbW9kaWYscGVuZCxhbiA9ICQxMSBpblxuICAgICAgKEFzdC5QcmVzZW50ICgoJDUscmhzX3BvcyA1KSwgJDksIG1vZGlmKSxwZW5kLGFuKSB9XG4gIHwgSUQgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeJDFeXCInXCIpKSkgfVxuICA7XG5cbmFnZW50X3NpZzpcbiAgICB8IERPVCBhbm5vdGVkIHsgKEFzdC5BYnNlbnQgKHJoc19wb3MgMSksZW5kX3BvcyAxLCQyKSB9XG4gICAgfCBJRCBhbm5vdGVkIE9QX1BBUiBhbm5vdGVkIGludGVyZmFjZV9zaWcgQ0xfUEFSIGFnZW50X21vZGlmXG4gICAgICB7IGxldCBtb2RpZixwZW5kLGFuID0gJDcgaW5cbiAgICAgICAgKEFzdC5QcmVzZW50ICgoJDEscmhzX3BvcyAxKSwgJDUsIG1vZGlmKSxwZW5kLGFuKSB9XG4gICAgfCBJRCBhbm5vdGVkIENPTE9OIGFubm90ZWQgSUQgYW5ub3RlZCBPUF9QQVIgYW5ub3RlZCBpbnRlcmZhY2Vfc2lnIENMX1BBUiBhZ2VudF9tb2RpZlxuICAgICAgeyBsZXQgbW9kaWYscGVuZCxhbiA9ICQxMSBpblxuICAgICAgICAoQXN0LlByZXNlbnQgKCgkNSxyaHNfcG9zIDUpLCAkOSwgbW9kaWYpLHBlbmQsYW4pIH1cbiAgICB8IElEIGFubm90ZWQgZXJyb3JcbiAgICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIDMgKFwiTWFsZm9ybWVkIGFnZW50ICdcIl4kMV5cIidcIikpKSB9XG4gICAgO1xucGF0dGVybjpcbiAgfCBhZ2VudCBDT01NQSBhbm5vdGVkIHBhdHRlcm5cbnsgbGV0ICh4LF8sXykgPSAkMSBpblxuICBtYXRjaCAkNCB3aXRoXG4gIHwgKHk6OnoscGVuZCxwKSAtPiAoKHg6OnkpOjp6LHBlbmQscClcbiAgfCAoW10sXyxfKSAtPlxuICAgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAoYWRkX3BvcyA0IChcImFzc2VydGlvbiBmYWlsdXJlIGluIHBhdHRlcm4gcGFyc2luZ1wiKSkpIH1cbiAgfCBhZ2VudCBCQUNLU0xBU0ggYW5ub3RlZCBwYXR0ZXJuXG57IGxldCAoeCxfLF8pID0gJDEgaW4gbGV0ICh5LHBlbmQscCkgPSAkNCBpbiAoW3hdOjp5LHBlbmQscCkgfVxuICB8IGFnZW50IHsgbGV0ICh4LHBlbmQscCkgPSAkMSBpbiAoW1t4XV0scGVuZCxwKSB9XG4gIDtcblxuY29uc3RhbnQ6XG4gIHwgbmJyIHsgYWRkX3BvcyAxIChBbGdfZXhwci5DT05TVCAkMSkgfVxuICB8IEVNQVggeyBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRU1BWF9WQVIpKSB9XG4gIHwgVE1BWCB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5UTUFYX1ZBUikpIH1cbiAgfCBDUFVUSU1FIHsgYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkNQVVRJTUUpKSB9XG4gIDtcblxudmFyaWFibGU6XG4gIHwgUElQRSBhbm5vdGVkIElEIGFubm90ZWQgUElQRSB7IGFkZF9wb3MgNSAoQWxnX2V4cHIuVE9LRU5fSUQgKCQzKSkgfVxuICB8IFBJUEUgYW5ub3RlZCBwYXR0ZXJuIFBJUEVcbiAgICB7IGxldCAocCxfLF8pID0gJDMgaW4gYWRkX3BvcyA0IChBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBwKSB9XG4gIHwgSUQgeyBhZGRfcG9zIDEgKEFsZ19leHByLkFMR19WQVIgKCQxKSkgfVxuICB8IExBQkVMIHsgYWRkX3BvcyAxIChBbGdfZXhwci5BTEdfVkFSICgkMSkpIH1cbiAgfCBUSU1FIHsgYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLlRJTUVfVkFSKSkgfVxuICB8IEVWRU5UIHsgYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVWRU5UX1ZBUikpIH1cbiAgfCBOVUxMX0VWRU5UXG4gICAgeyBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIpKSB9XG4gIDtcblxuc21hbGxfYWxnX2V4cHI6XG4gIHwgT1BfUEFSIGFubm90ZWQgYWxnX2V4cHIgQ0xfUEFSIHsgbGV0ICh4LF8sXykgPSAkMyBpbiB4IH1cbiAgfCBjb25zdGFudCB7ICQxIH1cbiAgfCB2YXJpYWJsZSB7ICQxIH1cbiAgfCBNQVggYW5ub3RlZCBzbWFsbF9hbGdfZXhwciBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDUgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUFYLCQzLCQ1KSkgfVxuICB8IE1JTiBhbm5vdGVkIHNtYWxsX2FsZ19leHByIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgNSAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU4sJDMsJDUpKSB9XG4gIHwgRVhQT05FTlQgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuRVhQLCQzKSkgfVxuICB8IFNJTlVTIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNJTlVTLCQzKSkgfVxuICB8IENPU0lOVVMgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuQ09TSU5VUywkMykpIH1cbiAgfCBUQU4gYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuVEFOLCQzKSkgfVxuICB8IEFCUyBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5JTlQsJDMpKSB9XG4gIHwgU1FSVCBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TUVJULCQzKSkgfVxuICB8IExPRyBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5MT0csJDMpKSB9XG4gIHwgTUlOVVMgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuVU1JTlVTLCQzKSkgfVxuICA7XG5cbmFsZ19leHByX3VwX3RvX21vZDpcbiAgfCBzbWFsbF9hbGdfZXhwciBhbm5vdGVkIHsgKCQxLGVuZF9wb3MgMSwkMikgfVxuICB8IHNtYWxsX2FsZ19leHByIGFubm90ZWQgUE9XIGFubm90ZWQgYWxnX2V4cHJfdXBfdG9fbW9kXG4gICAgeyBsZXQgKHgseSx6KSA9ICQ1IGluXG4gICAgICAoYWRkX3BvcyA0IChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlBPVywkMSx4KSkseSx6KSB9XG4gIDtcblxuYWxnX2V4cHJfdXBfdG9fcHJvZDpcbiAgfCBhbGdfZXhwcl91cF90b19tb2QgeyAkMSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9fcHJvZCBNT0QgYW5ub3RlZCBhbGdfZXhwcl91cF90b19tb2RcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1PRFVMTyx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICA7XG5cbmFsZ19leHByX3VwX3RvX3N1bTpcbiAgfCBhbGdfZXhwcl91cF90b19wcm9kIHsgJDEgfVxuICB8IGFsZ19leHByX3VwX3RvX3N1bSBNVUxUIGFubm90ZWQgYWxnX2V4cHJfdXBfdG9fcHJvZFxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NVUxULHgseSksXG4gICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgfCBhbGdfZXhwcl91cF90b19zdW0gRElWIGFubm90ZWQgYWxnX2V4cHJfdXBfdG9fcHJvZFxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5ESVYseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgO1xuXG5hbGdfZXhwcl91cF90b19pZjpcbiAgfCBhbGdfZXhwcl91cF90b19zdW0geyAkMSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgUExVUyBhbm5vdGVkIGFsZ19leHByX3VwX3RvX3N1bVxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5TVU0seCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgfCBhbGdfZXhwcl91cF90b19pZiBNSU5VUyBhbm5vdGVkIGFsZ19leHByX3VwX3RvX3N1bVxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUyx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuXG5hbGdfZXhwcjpcbiAgfCBhbGdfZXhwcl91cF90b19pZiB7ICQxIH1cbiAgfCBib29sX2V4cHIgVEhFTiBhbm5vdGVkIGFsZ19leHByIEVMU0UgYW5ub3RlZCBzbWFsbF9hbGdfZXhwciBhbm5vdGVkXG4gICAgeyBsZXQgKGksXyxfKSA9ICQxIGluXG4gICAgICBsZXQgKHQsXyxfKSA9ICQ0IGluXG4gICgoQWxnX2V4cHIuSUYoaSx0LCQ3KSxcbiAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgKGVuZF9wb3MgNykpLGVuZF9wb3MgNywkOCkgfVxuICA7XG5cbmJvb2xlYW46XG4gIHwgVFJVRSB7IHRydWUgfVxuICB8IEZBTFNFIHsgZmFsc2UgfVxuICA7XG5cbnNtYWxsX2Jvb2xfZXhwcjpcbiAgfCBPUF9QQVIgYW5ub3RlZCBib29sX2V4cHIgQ0xfUEFSIHsgbGV0ICh4LF8sXykgPSAkMyBpbiB4IH1cbiAgfCBUUlVFIHsgYWRkX3BvcyAxIEFsZ19leHByLlRSVUUgfVxuICB8IEZBTFNFIHsgYWRkX3BvcyAxIEFsZ19leHByLkZBTFNFIH1cbiAgfCBOT1QgYW5ub3RlZCBzbWFsbF9ib29sX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQk9PTF9PUChPcGVyYXRvci5OT1QsJDMpKSB9XG4gIDtcblxuYm9vbF9leHByX2NvbXA6XG4gIHwgc21hbGxfYm9vbF9leHByIGFubm90ZWQgeyAoJDEsZW5kX3BvcyAxLCAkMikgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIEdSRUFURVIgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5HUkVBVEVSLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgU01BTExFUiBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLlNNQUxMRVIseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgfCBhbGdfZXhwcl91cF90b19pZiBFUVVBTCBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkVRVUFMLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgRElGRiBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkRJRkYseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgO1xuXG5ib29sX2V4cHJfbm9fb3I6XG4gIHwgYm9vbF9leHByX2NvbXAgeyAkMSB9XG4gIHwgYm9vbF9leHByX2NvbXAgQU5EIGFubm90ZWQgYm9vbF9leHByX25vX29yXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQk9PTF9PUChPcGVyYXRvci5BTkQseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgO1xuXG5ib29sX2V4cHI6XG4gIHwgYm9vbF9leHByX25vX29yIHsgJDEgfVxuICB8IGJvb2xfZXhwcl9ub19vciBPUiBhbm5vdGVkIGJvb2xfZXhwclxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuT1IseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgO1xuXG5zdGFuZGFsb25lX2Jvb2xfZXhwcjpcbiAgfCBhbm5vdGVkIGJvb2xfZXhwciBFT0YgeyBsZXQgKHgsXyxfKSA9ICQyIGluIHggfVxuICB8IGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMiBcIlByb2JsZW1hdGljIGJvb2xlYW4gZXhwcmVzc2lvblwiKSkgfVxuICA7XG5cbmFycm93OlxuICB8IFJBUiB7ZmFsc2V9XG4gIHwgTFJBUiB7dHJ1ZX1cbiAgO1xuXG5zdW1fdG9rZW46XG4gIHwgc21hbGxfYWxnX2V4cHIgYW5ub3RlZCBJRCBhbm5vdGVkIHsgWygkMSwoJDMscmhzX3BvcyAzKSldLGVuZF9wb3MgMywkNCB9XG4gIHwgc21hbGxfYWxnX2V4cHIgYW5ub3RlZCBJRCBhbm5vdGVkIENPTU1BIGFubm90ZWQgc3VtX3Rva2VuXG4gICAgeyBsZXQgKGwscGVuZCxhbikgPSAkNyBpbiAoJDEsKCQzLHJoc19wb3MgMykpIDo6IGwscGVuZCxhbiB9XG4gIDtcblxucnVsZV9zaWRlOlxuICB8IHBhdHRlcm4geyBsZXQgKHAscGVuZCxhbikgPSAkMSBpbiAocCxbXSxwZW5kLGFuKSB9XG4gIHwgcGF0dGVybiBQSVBFIGFubm90ZWQgc3VtX3Rva2VuXG4gICAgeyBsZXQgKHAsXyxfKSA9ICQxIGluXG4gICAgICBsZXQgKHQscGVuZCxhbikgPSAkNCBpbiAocCwgdCwgcGVuZCwgYW4pIH1cbiAgfCBQSVBFIGFubm90ZWQgc3VtX3Rva2VuIHsgbGV0ICh0LHBlbmQsYW4pID0gJDMgaW4gKFtdLCB0LCBwZW5kLCBhbikgfVxuICB8IHBhdHRlcm4gUElQRSBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0KGFkZF9wb3MgNCBcIk1hbGZvcm1lZCB0b2tlbiBleHByZXNzaW9uLCBJIHdhcyBleHBlY3RpbmcgYV8wIHRfMCwgLi4uIFxcXG4sIGFfbiB0X24gd2hlcmUgdF9pIGFyZSB0b2tlbnMgYW5kIGFfaSBhbnkgYWxnZWJyYWljIGZvcm11bGFcIikpIH1cbiAgfCBQSVBFIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIHRva2VuIGV4cHJlc3Npb24sIEkgd2FzIGV4cGVjdGluZyBhXzAgdF8wLCAuLi4gXFxcbiwgYV9uIHRfbiB3aGVyZSB0X2kgYXJlIHRva2VucyBhbmQgYV9pIGFueSBhbGdlYnJhaWMgZm9ybXVsYVwiKSkgfVxuICA7XG5cbnJ1bGVfY29udGVudDpcbiAgfCBydWxlX3NpZGUgYXJyb3cgYW5ub3RlZCBydWxlX3NpZGVcbiAgICB7IGxldCAobGhzLHJtX3Rva2VuLF8sXykgPSAkMSBpblxuICAgICAgbGV0IChyaHMsYWRkX3Rva2VuLHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIChBc3QuQXJyb3cge0FzdC5saHM7IEFzdC5ybV90b2tlbjsgQXN0LnJoczsgQXN0LmFkZF90b2tlbn0sJDIscGVuZCxhbikgfVxuICB8IHJ1bGVfc2lkZSBhcnJvdyBhbm5vdGVkXG4gICAgeyBsZXQgKGxocyxybV90b2tlbixfLF8pID0gJDEgaW5cbiAgICAgIChBc3QuQXJyb3cge0FzdC5saHM7IEFzdC5ybV90b2tlbjsgQXN0LnJocz1bXTsgQXN0LmFkZF90b2tlbj1bXX0sJDIsZW5kX3BvcyAyLCQzKSB9XG4gIHwgYXJyb3cgYW5ub3RlZCBydWxlX3NpZGVcbiAgICB7IGxldCAocmhzLGFkZF90b2tlbixwZW5kLGFuKSA9ICQzIGluXG4gICAgICAoQXN0LkFycm93IHtBc3QubGhzPVtdOyBBc3Qucm1fdG9rZW49W107IEFzdC5yaHM7IEFzdC5hZGRfdG9rZW59LCQxLHBlbmQsYW4pIH1cbiAgfCBydWxlX3NpZGVcbiAgICB7IGxldCAobWl4LGRlbHRhX3Rva2VuLHBlbmQsYW4pID0gJDEgaW5cbiAgICAgIChBc3QuRWRpdCB7QXN0Lm1peDsgQXN0LmRlbHRhX3Rva2VufSxmYWxzZSxwZW5kLGFuKSB9XG4gIDtcblxuYWxnX3dpdGhfcmFkaXVzOlxuICB8IGFsZ19leHByIHsgbGV0ICh4LF8sXykgPSAkMSBpbiAoeCxOb25lKSB9XG4gIHwgYWxnX2V4cHIgQ09MT04gYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh4LF8sXykgPSAkMSBpbiBsZXQgKHksXyxfKSA9ICQ0IGluICh4LCBTb21lIHkpIH1cbiAgO1xuXG5yYXRlOlxuICB8IE9QX0NVUiBhbm5vdGVkIGFsZ193aXRoX3JhZGl1cyBDTF9DVVIgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0IChiLHBlbmQsYW4pID0gJDYgaW4gKGIsU29tZSAkMyxwZW5kLGFuKSB9XG4gIHwgYWxnX2V4cHIgT1BfQ1VSIGFubm90ZWQgYWxnX3dpdGhfcmFkaXVzIENMX0NVUiBhbm5vdGVkXG4gICAgeyBsZXQgKHgsXyxfKSA9ICQxIGluICh4LFNvbWUgJDQsZW5kX3BvcyA1LCQ2KSB9XG4gIHwgYWxnX2V4cHIgeyBsZXQgKGEscGVuZCxhbikgPSAkMSBpbiAoYSxOb25lLHBlbmQsYW4pIH1cbiAgO1xuXG5iaXJhdGU6XG4gIHwgQVQgYW5ub3RlZCByYXRlIHsgbGV0IChrMixrMSxwZW5kLGFuKSA9ICQzIGluIChrMixrMSxOb25lLE5vbmUscGVuZCxhbikgfVxuICB8IEFUIGFubm90ZWQgcmF0ZSBDT01NQSBhbm5vdGVkIHJhdGVcbiAgICB7IGxldCAoazIsazEsXyxfKSA9ICQzIGluXG4gICAgICBsZXQgKGtiYWNrLGtiYWNrMSxwZW5kLGFuKSA9ICQ2IGluXG4gICAgICAoazIsazEsU29tZSBrYmFjayxrYmFjazEscGVuZCxhbikgfVxuICA7XG5cbnJ1bGU6XG4gIHwgcnVsZV9jb250ZW50IGJpcmF0ZVxuICAgIHsgbGV0IChrX2RlZixrX3VuLGtfb3Asa19vcF91bixwb3NfZW5kLF9hbm5vdCkgPSAkMiBpblxuICAgICAgbGV0IChyZXdyaXRlLGJpZGlyZWN0aW9uYWwsXyxfKSA9ICQxIGluXG4gICAgICAoe1xuICAgICAgICBBc3QucmV3cml0ZTtBc3QuYmlkaXJlY3Rpb25hbDtcbiAgICAgICAgQXN0LmtfZGVmOyBBc3Qua191bjsgQXN0Lmtfb3A7IEFzdC5rX29wX3VuO1xuICAgICAgfSxMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcG9zX2VuZCkgfVxuICB8IHJ1bGVfY29udGVudCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDIgXCJydWxlIHJhdGUgZXhwZWN0ZWRcIikpIH1cbiAgO1xuXG52YXJpYWJsZV9kZWNsYXJhdGlvbjpcbiAgfCBMQUJFTCBhbm5vdGVkIGFsZ19leHByIHsgbGV0ICh2LHBlbmQsYW4pID0gJDMgaW4gKCgkMSxyaHNfcG9zIDEpLHYscGVuZCxhbikgfVxuICB8IElEIGFubm90ZWQgYWxnX2V4cHIgeyBsZXQgKHYscGVuZCxhbikgPSAkMyBpbiAoKCQxLHJoc19wb3MgMSksdixwZW5kLGFuKSB9XG4gIHwgTEFCRUwgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIklsbGVnYWwgZGVmaW5pdGlvbiBvZiB2YXJpYWJsZSAnXCJeJDFeXCInXCIpKSkgfVxuICB8IElEIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyAoXCJJbGxlZ2FsIGRlZmluaXRpb24gb2YgdmFyaWFibGUgJ1wiXiQxXlwiJ1wiKSkpIH1cbiAgfCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDEgKFwibGFiZWwgZXhwZWN0ZWRcIikpKSB9XG4gIDtcblxuaWRfbGlzdDpcbiAgfCBJRCBhbm5vdGVkIHsgWyAkMSxyaHNfcG9zIDEgXSB9XG4gIHwgSUQgYW5ub3RlZCBDT01NQSBhbm5vdGVkIGlkX2xpc3QgeyAoJDEscmhzX3BvcyAxKSA6OiAkNSB9XG4gIDtcblxuaW5pdF9kZWNsYXJhdGlvbjpcbiAgfCBhbGdfZXhwciBwYXR0ZXJuXG4gICAgeyBsZXQgKHYsXyxfKSA9ICQxIGluXG4gICAgICBsZXQgKHAscGVuZCxfKSA9ICQyIGluXG4gICAgICAodixBc3QuSU5JVF9NSVggKHAsTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDIpIHBlbmQpKSB9XG4gIHwgYWxnX2V4cHIgT1BfUEFSIGFubm90ZWQgcGF0dGVybiBDTF9QQVIgYW5ub3RlZFxuICAgIHsgbGV0ICh2LF8sXykgPSAkMSBpblxuICAgICAgbGV0IChwLHBlbmQsXykgPSAkNCBpblxuICAgICAgKHYsQXN0LklOSVRfTUlYIChwLExvYy5vZl9wb3MgKHN0YXJ0X3BvcyA0KSBwZW5kKSkgfVxuICB8IGFsZ19leHByIGlkX2xpc3RcbiAgICB7IGxldCAodixfLF8pID0gJDEgaW4gKHYsQXN0LklOSVRfVE9LICQyKSB9XG4vKlxuICB8IElEIGFubm90ZWQgT1BfQ1VSIGFubm90ZWQgaW5pdF9kZWNsYXJhdGlvbiBDTF9DVVIgYW5ub3RlZFxuICAgIHsgbGV0IChfLGFsZyxpbml0KSA9ICQ1IGluIChTb21lICgkMSxyaHNfcG9zIDEpLGFsZyxpbml0KSB9XG4qL1xuICB8IElEIExBUiBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKHYsXyxfKSA9ICQ0IGluICh2LEFzdC5JTklUX1RPSyBbJDEscmhzX3BvcyAxXSl9XG4gIHwgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMSBcIk1hbGZvcm1lZCBpbml0aWFsIGNvbmRpdGlvblwiKSkgfVxuICA7XG5cbnZhbHVlX2xpc3Q6XG4gIHwgU1RSSU5HIGFubm90ZWQge1skMSwgcmhzX3BvcyAxXX1cbiAgfCBTVFJJTkcgYW5ub3RlZCB2YWx1ZV9saXN0IHsoJDEscmhzX3BvcyAxKTo6JDN9XG4gIDtcblxubm9uZW1wdHlfcHJpbnRfZXhwcjpcbiAgfCBTVFJJTkcgYW5ub3RlZFxuICAgIHsgKFtQcmltaXRpdmVzLlN0cl9wZXhwciAoYWRkX3BvcyAxICQxKV0sZW5kX3BvcyAxLCQyKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9faWZcbiAgICB7IGxldCAoYSxwZW5kLHApID0gJDEgaW4gKFtQcmltaXRpdmVzLkFsZ19wZXhwciBhXSxwZW5kLHApIH1cbiAgfCBwcmludF9leHByX2xpc3QgeyAkMSB9XG4gIHwgT1BfUEFSIGFubm90ZWQgcHJpbnRfZXhwcl9saXN0IENMX1BBUiBhbm5vdGVkXG4gICAgeyBsZXQgKHYsXyxhbikgPSAkMyBpbiAodixlbmRfcG9zIDQsYW4gQCAkNSkgfVxuICA7XG5cbnByaW50X2V4cHJfbGlzdDpcbiAgfCBTVFJJTkcgYW5ub3RlZCBET1QgYW5ub3RlZCBub25lbXB0eV9wcmludF9leHByXG4gICAgeyBsZXQgKGwscGVuZCxwKSA9ICQ1IGluIChQcmltaXRpdmVzLlN0cl9wZXhwciAoJDEsIHJoc19wb3MgMSk6OmwscGVuZCxwKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgRE9UIGFubm90ZWQgbm9uZW1wdHlfcHJpbnRfZXhwclxuICAgIHsgbGV0IChsLHBlbmQscCkgPSAkNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSAkMSBpblxuICAgICAgKFByaW1pdGl2ZXMuQWxnX3BleHByIHY6OmwscGVuZCxwKSB9XG4gIDtcblxucHJpbnRfZXhwcjpcbiAgfCBhbm5vdGVkIHsgKFtdLHN0YXJ0X3BvcyAxLCQxKSB9XG4gIHwgYW5ub3RlZCBub25lbXB0eV9wcmludF9leHByIHsgJDIgfVxuICA7XG5cbmVmZmVjdDpcbiAgfCBBU1NJR04gYW5ub3RlZCBJRCBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKGEscGVuZCxwKSA9ICQ1IGluIChBc3QuVVBEQVRFICgoJDMscmhzX3BvcyAzKSxhKSxwZW5kLHApIH1cbiAgfCBBU1NJR04gYW5ub3RlZCBMQUJFTCBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKGEscGVuZCxwKSA9ICQ1IGluIChBc3QuVVBEQVRFICgoJDMscmhzX3BvcyAzKSxhKSxwZW5kLHApIH1cbiAgfCBUUkFDSyBhbm5vdGVkIExBQkVMIGFubm90ZWQgYm9vbGVhbiBhbm5vdGVkXG4gICAgeyAoQXN0LkNGTE9XTEFCRUwgKCQ1LCgkMyxyaHNfcG9zIDMpKSxlbmRfcG9zIDUsJDYpIH1cbiAgfCBUUkFDSyBhbm5vdGVkIHBhdHRlcm4gYm9vbGVhbiBhbm5vdGVkXG4gICAgeyBsZXQgKHBhdCxlcGF0LF8pID0gJDMgaW5cbiAgICAgIChBc3QuQ0ZMT1dNSVggKCQ0LChwYXQsTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDMpIGVwYXQpKSxlbmRfcG9zIDQsICQ1KSB9XG4gIHwgRkxVWCBhbm5vdGVkIG5vbmVtcHR5X3ByaW50X2V4cHIgYm9vbGVhbiBhbm5vdGVkXG4gICAgeyBsZXQgKHAsXyxfKSA9ICQzIGluXG4gICAgICAoKGlmICQ0IHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSxwKSBlbHNlIEFzdC5ESU5PRkYgcCksXG4gICAgICAgZW5kX3BvcyA0LCQ1KSB9XG4gIHwgRkxVWCBhbm5vdGVkIG5vbmVtcHR5X3ByaW50X2V4cHIgU1RSSU5HIGFubm90ZWQgYm9vbGVhbiBhbm5vdGVkXG4gICAgeyBsZXQgKHAsXyxfKSA9ICQzIGluXG4gICAgICBpZiAkNiAmJiAkNCA9IFwiYWJzb2x1dGVcIiB0aGVuXG4gICAgICAgIChBc3QuRElOIChQcmltaXRpdmVzLkFCU09MVVRFLHApLGVuZF9wb3MgNiwkNylcbiAgICAgIGVsc2UgaWYgJDYgJiYgJDQgPSBcInByb2JhYmlsaXR5XCIgdGhlblxuICAgICAgICAoQXN0LkRJTiAoUHJpbWl0aXZlcy5QUk9CQUJJTElUWSxwKSxlbmRfcG9zIDYsJDcpXG4gICAgICBlbHNlIGlmICQ2ICYmICQ0ID0gXCJyZWxhdGl2ZVwiIHRoZW5cbiAgICAgICAgKEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUscCksZW5kX3BvcyA2LCQ3KVxuICAgICAgZWxzZSByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgKFwiSW5jb3JyZWN0IERJTiBleHByZXNzaW9uXCIscmhzX3BvcyA0KSkgfVxuICB8IEFQUExZIGFubm90ZWQgYWxnX2V4cHIgcnVsZV9jb250ZW50XG4gICAgeyBsZXQgKHJld3JpdGUsXyxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHYsXyxfKSA9ICQzIGluXG4gICAgICBBc3QuQVBQTFkodixcbiAgICAgICAgICAgICAgICAoeyBBc3QucmV3cml0ZTsgQXN0LmJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87QXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxcbiAgICAgICAgICAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDMpIHBlbmQpKSxcbiAgICAgIHBlbmQsYW5cbiAgICB9XG4gIHwgSU5UUk8gYW5ub3RlZCBhbGdfZXhwciBwYXR0ZXJuXG4gICAgeyBsZXQgKG0scGVuZCxwKSA9ICQ0IGluXG4gICAgICBsZXQgKHYsXyxfKSA9ICQzIGluXG4gICAgICAoQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCAgIEFzdC5FZGl0IHtBc3QubWl4PUFzdC50b19jcmVhdGVkX21peHR1cmUgbTtcbiAgICAgICAgICAgICAgICAgICAgIEFzdC5kZWx0YV90b2tlbj1bXTt9O1xuXHRcdCAgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxcbiAgICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyA0KSBwZW5kKSksXG4gICAgICAgcGVuZCxwKSB9XG4gIHwgSU5UUk8gYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgZXhwZWN0aW5nIFxcXG4nJEFERCBhbGdfZXhwcmVzc2lvbiBrYXBwYV9leHByZXNzaW9uJ1wiKSkgfVxuICB8IERFTEVURSBhbm5vdGVkIGFsZ19leHByIHBhdHRlcm5cbiAgICB7IGxldCAobSxwZW5kLHApID0gJDQgaW5cbiAgICAgIGxldCAodixfLF8pID0gJDMgaW5cbiAgICAgIChBc3QuQVBQTFkodixcbiAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCBBc3QuRWRpdCB7QXN0Lm1peD1Bc3QudG9fZXJhc2VkX21peHR1cmUgbTtcbiAgICAgICAgICAgICAgICAgICBBc3QuZGVsdGFfdG9rZW49W107fTtcblx0XHQgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sXG4gICAgICAgICAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDQpIHBlbmQpKSxcbiAgICAgICBwZW5kLHApIH1cbiAgfCBERUxFVEUgYW5ub3RlZCBlcnJvclxuICAgICAgICAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgaW50ZXJ2ZW50aW9uIGluc3RydWN0aW9uLCBJIHdhcyBcXFxuZXhwZWN0aW5nICckREVMIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKSB9XG4gIHwgU05BUFNIT1QgcHJpbnRfZXhwciB7IGxldCAocyxwZW5kLHApID0gJDIgaW4gKEFzdC5TTkFQU0hPVCAoZmFsc2UscykscGVuZCxwKSB9XG4gIHwgU05BUFNIT1QgcHJpbnRfZXhwciBib29sZWFuIGFubm90ZWQgeyBsZXQgKHMsXyxfKSA9ICQyIGluIChBc3QuU05BUFNIT1QgKCQzLHMpLGVuZF9wb3MgMywkNCkgfVxuICB8IFNUT1AgcHJpbnRfZXhwciB7IGxldCAocyxwZW5kLHApID0gJDIgaW4gKEFzdC5TVE9QIHMscGVuZCxwKSB9XG4gIHwgUFJJTlRGIHByaW50X2V4cHIgR1JFQVRFUiBwcmludF9leHByXG4gICAgeyBsZXQgKGYscGVuZCxwKSA9ICQ0IGluIGxldCAoYyxfLF8pID0gJDIgaW4gKEFzdC5QUklOVCAoZixjKSxwZW5kLHApIH1cbiAgfCBQUklOVEYgcHJpbnRfZXhwciB7IGxldCAoYyxwZW5kLHApID0gJDIgaW4gKEFzdC5QUklOVCAoW10sYykscGVuZCxwKSB9XG4gIHwgUExPVEVOVFJZIGFubm90ZWQgeyAoQXN0LlBMT1RFTlRSWSxlbmRfcG9zIDEsJDIpIH1cbiAgfCBTUEVDSUVTX09GIGFubm90ZWQgcGF0dGVybiBib29sZWFuIGFubm90ZWQgR1JFQVRFUiBwcmludF9leHByXG4gICAge1xuICAgICAgbGV0IChmaWxlLHBlbmQscCkgPSAkNyBpblxuICAgICAgbGV0IChwYXQscGVuZHAsXykgPSAkMyBpblxuICAgICAgKEFzdC5TUEVDSUVTX09GICgkNCxmaWxlLChwYXQsIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAzKSBwZW5kcCkpLFxuICAgICAgIHBlbmQscCkgfVxuICA7XG5cbmlkaW46XG58IElEIGFubm90ZWQgTEFSIGFubm90ZWQgYWxnX2V4cHIge1xuICAgbGV0ICh2LHBlbmQscCkgPSAkNSBpblxuICAgbGV0IHRrID0gKCQxLHJoc19wb3MgMSkgaW5cbiAgICAoQXN0LkFQUExZKEFsZ19leHByLmNvbnN0IE5ici5vbmUsXG4gICAgICAgICh7QXN0LnJld3JpdGUgPVxuICAgICAgICAgICAgICBBc3QuRWRpdFxuICAgICAgICAgICAgICAgICAge0FzdC5taXg9W107XG4gICAgICAgICAgICAgICAgICAgQXN0LmRlbHRhX3Rva2VuID1cbiAgICAgICAgICAgICAgICAgICAgICBbKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMsdiwoQWxnX2V4cHIuVE9LRU5fSUQgJDEscmhzX3BvcyAxKSkscmhzX3BvcyAxKSx0a107XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LCBMb2Mub2ZfcG9zIChzdGFydF9wb3MgIDQpIHBlbmQpKSxwZW5kLHApXG4gICB9XG58IElEIGFubm90ZWQgTEFSIGVycm9yXG4gICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIFxcXG5leHBlY3RpbmcgJ0lEIDwtIGFsZ19leHByZXNzaW9uJ1wiKSkgfVxufCBJRCBlcnJvclxuICAgICAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIDIgXCJNYWxmb3JtZWQgaW50ZXJ2ZW50aW9uIGluc3RydWN0aW9uLCBJIHdhcyBcXFxuICAgZXhwZWN0aW5nICdJRCA8LSBhbGdfZXhwcmVzc2lvbidcIikpIH07XG47XG5cbmVmZmVjdF9vcl9pZGluOlxuICB8IGVmZmVjdCB7JDF9XG4gIHwgaWRpbiB7JDF9XG5cbnBhcnRpYWxfZWZmZWN0X2xpc3Q6XG4gIHwgT1BfUEFSIGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdCBDTF9QQVIgYW5ub3RlZCB7ICQzIH1cbiAgfCBlZmZlY3Rfb3JfaWRpbiBTRU1JQ09MT04gYW5ub3RlZCB7IGxldCAoZSxfLF8pID0gJDEgaW4gKFtlXSxlbmRfcG9zIDIsJDMpIH1cbiAgfCBlZmZlY3Rfb3JfaWRpbiB7IGxldCAoZSxwLGEpID0gJDEgaW4gKFtlXSxwLGEpIH1cbiAgfCBlZmZlY3Rfb3JfaWRpbiBTRU1JQ09MT04gYW5ub3RlZCBwYXJ0aWFsX2VmZmVjdF9saXN0XG4gICAgeyBsZXQgKGUsXyxfKSA9ICQxIGluIGxldCAobCxwZW5kLGEpID0gJDQgaW4gKGU6OmwscGVuZCxhKSB9XG5cbnBhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW46XG4gICAgICB8IGlkaW4gU0VNSUNPTE9OIGFubm90ZWQgeyBsZXQgKGUsXyxfKSA9ICQxIGluIChbZV0sZW5kX3BvcyAyLCQzKSB9XG4gICAgICB8IGlkaW4geyBsZXQgKGUscCxhKSA9ICQxIGluIChbZV0scCxhKSB9XG4gICAgICB8IGlkaW4gU0VNSUNPTE9OIGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdFxuICAgICAgICAgIHsgbGV0IChlLF8sXykgPSAkMSBpbiBsZXQgKGwscGVuZCxhKSA9ICQ0IGluIChlOjpsLHBlbmQsYSkgfVxuXG5lZmZlY3RfbGlzdDpcbiAgfCBPUF9QQVIgYW5ub3RlZCBwYXJ0aWFsX2VmZmVjdF9saXN0IENMX1BBUiBhbm5vdGVkIHsgJDMgfVxuICB8IE9QX1BBUiBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3QgQ0xfUEFSIGFubm90ZWQgU0VNSUNPTE9OIGFubm90ZWQge2xldCAoZSxfLF8pID0gICQzIGluIGUsZW5kX3BvcyA2LCQ3IH1cbiAgfCBlZmZlY3QgU0VNSUNPTE9OIGFubm90ZWQgeyBsZXQgKGUsXyxfKSA9ICQxIGluIChbZV0sZW5kX3BvcyAyLCQzKSB9XG4gIHwgZWZmZWN0IFNFTUlDT0xPTiBhbm5vdGVkIGVmZmVjdF9saXN0XG4gICAgeyBsZXQgKGUsXyxfKSA9ICQxIGluIGxldCAobCxwZW5kLGEpID0gJDQgaW4gKGU6OmwscGVuZCxhKSB9XG4gIDtcblxuc3RhbmRhbG9uZV9lZmZlY3RfbGlzdDpcbiAgfCBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3QgRU9GIHsgbGV0IChlLF8sXykgPSAkMiBpbiBlIH1cbiAgfCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDEgXCJQcm9ibGVtYXRpYyBlZmZlY3QgbGlzdFwiKSkgfVxuICA7XG5cbnBlcnR1cmJhdGlvbl9hbGFybTpcbiAgfCBhbm5vdGVkIHsgTm9uZSB9XG4gIHwgYW5ub3RlZCBBTEFSTSBhbm5vdGVkIG5iciBhbm5vdGVkIHsgU29tZSAkNCB9XG4gIHwgYW5ub3RlZCBBTEFSTSBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDMgXCJhbGFybSB0YWtlcyBhIG51bWJlciBhcyBhcmd1bWVudFwiKSkgfVxuICA7XG5cbnBlcnR1cmJhdGlvbl9wb3N0X2Nsb3NlZDpcbiAgfCBSRVBFQVQgYW5ub3RlZCBib29sX2V4cHIgeyBsZXQgKGIscGVuZCxwKSA9ICQzIGluIChTb21lIGIscGVuZCxwKSB9XG5cbnBlcnR1cmJhdGlvbl9wb3N0OlxuICB8IHsgKE5vbmUsIFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSxbXSkgfVxuICB8IHBlcnR1cmJhdGlvbl9wb3N0X2Nsb3NlZCB7JDF9XG4gIDtcblxucGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uOlxuICB8IHBlcnR1cmJhdGlvbl9hbGFybSBib29sX2V4cHIgRE8gYW5ub3RlZCBlZmZlY3RfbGlzdCBwZXJ0dXJiYXRpb25fcG9zdFxuICAgIHsgbGV0IChwcmUsXyxfKSA9ICQyIGluXG4gICAgICBsZXQgKGUsXyxfKSA9ICQ1IGluXG4gICAgICBsZXQgKHBvc3QsXyxfKSA9ICQ2IGluXG4gICAgICAoJDEsU29tZSBwcmUsZSxwb3N0KSB9XG4gIHwgcGVydHVyYmF0aW9uX2FsYXJtIERPIGFubm90ZWQgZWZmZWN0X2xpc3QgcGVydHVyYmF0aW9uX3Bvc3RcbiAgICB7IGxldCAoZSxfLF8pID0gJDQgaW4gbGV0IChwb3N0LF8sXykgPSAkNSBpbiAoJDEsTm9uZSxlLHBvc3QpIH1cblxuICB8IHBlcnR1cmJhdGlvbl9hbGFybSBib29sX2V4cHIgRE8gYW5ub3RlZCBwYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluIHBlcnR1cmJhdGlvbl9wb3N0X2Nsb3NlZFxuICAgIHsgbGV0IChwcmUsXyxfKSA9ICQyIGluXG4gICAgICBsZXQgKGUsXyxfKSA9ICQ1IGluXG4gICAgICBsZXQgKHBvc3QsXyxfKSA9ICQ2IGluXG4gICAgICAoJDEsU29tZSBwcmUsZSxwb3N0KSB9XG4gIHwgcGVydHVyYmF0aW9uX2FsYXJtIERPIGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdF9hdF9sZWFzdF9vbmVfaWRpbiBwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWRcbiAgICAgICAgeyBsZXQgKGUsXyxfKSA9ICQ0IGluXG4gICAgICAgICAgbGV0IChwb3N0LF8sXykgPSAkNSBpblxuICAgICAgICAgICgkMSxOb25lLGUscG9zdCkgfVxuICA7XG5cbnNlbnRlbmNlOlxuICB8IExBQkVMIGFubm90ZWQgcnVsZVxuICAgIHsgYWRkIChBc3QuUlVMRShTb21lICgkMSwgcmhzX3BvcyAxKSwkMykpIH1cbiAgfCBMQUJFTCBhbm5vdGVkIEVRVUFMIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAodixfLF8pID0gJDUgaW4gYWRkIChBc3QuREVDTEFSRSAoKCQxLHJoc19wb3MgMSksdikpIH1cbiAgfCBydWxlIHsgYWRkIChBc3QuUlVMRSAoTm9uZSwkMSkpIH1cbiAgfCBTSUdOQVRVUkUgYW5ub3RlZCBhZ2VudF9zaWcgeyBsZXQgKGEsXyxfKSA9ICQzIGluIGFkZCAoQXN0LlNJRyBhKSB9XG4gIHwgU0lHTkFUVVJFIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGFnZW50IHNpZ25hdHVyZVwiKSkgfVxuICB8IFRPS0VOIGFubm90ZWQgSUQgYW5ub3RlZCB7IGFkZCAoQXN0LlRPS0VOU0lHICgkMyxyaHNfcG9zIDMpKSB9XG4gIHwgUExPVCBhbm5vdGVkIGFsZ19leHByIHsgbGV0ICh2LF8sXykgPSAkMyBpbiBhZGQgKEFzdC5QTE9UIHYpIH1cbiAgfCBQTE9UIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgM1xuICAgICAgICAgICAgICAgICAgXCJNYWxmb3JtZWQgcGxvdCBpbnN0cnVjdGlvbiwgXFxcbmFuIGFsZ2VicmFpYyBleHByZXNzaW9uIGlzIGV4cGVjdGVkXCIpKSB9XG4gIHwgTEVUIGFubm90ZWQgdmFyaWFibGVfZGVjbGFyYXRpb25cbiAgICB7IGxldCAoaSx2LF8sXykgPSAkMyBpbiBhZGQgKEFzdC5ERUNMQVJFIChpLHYpKSB9XG4gIHwgT0JTIGFubm90ZWQgdmFyaWFibGVfZGVjbGFyYXRpb24geyBsZXQgKGksdixfLF8pID0gJDMgaW4gYWRkIChBc3QuT0JTIChpLHYpKSB9XG4gIHwgSU5JVCBhbm5vdGVkIGluaXRfZGVjbGFyYXRpb25cbiAgICB7IGxldCAoYWxnLGluaXQpID0gJDMgaW4gYWRkIChBc3QuSU5JVCAoYWxnLGluaXQpKSB9XG4gIHwgUEVSVCBwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24geyBhZGQgKEFzdC5QRVJUICgkMiwgcmhzX3BvcyAyKSkgfVxuICB8IENPTkZJRyBhbm5vdGVkIFNUUklORyBhbm5vdGVkIHZhbHVlX2xpc3RcbiAgICB7IGFkZCAoQXN0LkNPTkZJRyAoKCQzLHJoc19wb3MgMyksJDUpKSB9XG4gIDtcblxubW9kZWxfYm9keTpcbiAgfCBzZW50ZW5jZSBtb2RlbF9ib2R5IHsgJDIgfVxuICB8IEVPRiB7IG91dHB1dCAoKSB9XG4gIDtcblxubW9kZWw6XG4gIHwgYW5ub3RlZCBtb2RlbF9ib2R5IHsgJDIgfVxuICB8IGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDEgXCJJbmNvcnJlY3QgYmVnaW5uaW5nIG9mIHNlbnRlbmNlICEhIVwiKSkgfVxuICA7XG5cbmludGVyYWN0aXZlX2NvbW1hbmQ6XG4gIHwgYW5ub3RlZCBSVU4gYW5ub3RlZCBTRU1JQ09MT04geyBBc3QuUlVOIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBBbGdfZXhwci5GQUxTRSkgfVxuICB8IGFubm90ZWQgUlVOIGFubm90ZWQgYm9vbF9leHByIFNFTUlDT0xPTiB7IGxldCAocGF1c2UsXyxfKSA9ICQ0IGluIEFzdC5SVU4gcGF1c2UgfVxuICB8IGFubm90ZWQgZWZmZWN0IFNFTUlDT0xPTiB7IGxldCAoZWZmLF8sXykgPSAkMiBpbiBBc3QuTU9ESUZZIFtlZmZdIH1cbiAgfCBhbm5vdGVkIEVPRiB7IEFzdC5RVUlUIH1cbiAgfCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDEgXCJVbnJlY29nbml6ZWQgY29tbWFuZFwiKSkgfVxuICA7XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgYXBwZW5kX3RvX2FzdF9jb21waWwgcmV2X2luc3RyIGNvbXBpbCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biByIC0+IGZ1bmN0aW9uXG4gICAgICB8IEFzdC5SVUxFIHJ1IC0+IHsgciB3aXRoIEFzdC5ydWxlcyA9IHJ1IDo6IHIuQXN0LnJ1bGVzIH1cbiAgICAgIHwgQXN0LlNJRyBhZyAtPiB7IHIgd2l0aCBBc3Quc2lnbmF0dXJlcyA9IGFnIDo6IHIuQXN0LnNpZ25hdHVyZXMgfVxuICAgICAgfCBBc3QuVE9LRU5TSUcgc3RyX3BvcyAtPiB7IHIgd2l0aCBBc3QudG9rZW5zID0gc3RyX3BvcyA6OiByLkFzdC50b2tlbnMgfVxuICAgICAgfCBBc3QuVk9MU0lHICh2b2xfdHlwZSwgdm9sLCB2b2xfcGFyYW0pIC0+XG4gICAgICAgIHsgciB3aXRoIEFzdC52b2x1bWVzID0gKHZvbF90eXBlLCB2b2wsIHZvbF9wYXJhbSkgOjogci5Bc3Qudm9sdW1lcyB9XG4gICAgICB8IEFzdC5JTklUIChhbGcsIGluaXRfdCkgLT5cbiAgICAgICAgeyByIHdpdGggQXN0LmluaXQgPSAoYWxnLCBpbml0X3QpIDo6IHIuQXN0LmluaXQgfVxuICAgICAgfCBBc3QuREVDTEFSRSB2YXIgLT4geyByIHdpdGggQXN0LnZhcmlhYmxlcyA9IHZhciA6OiByLkFzdC52YXJpYWJsZXMgfVxuICAgICAgfCBBc3QuT0JTICgoKGxibCwgcG9zKSwgXykgYXMgdmFyKSAtPlxuICAgICAgICAoKmZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCBzaG9ydGN1dCBmb3IgJXZhciArICVwbG90KilcbiAgICAgICAge1xuICAgICAgICAgIHIgd2l0aFxuICAgICAgICAgIEFzdC52YXJpYWJsZXMgPSB2YXIgOjogci5Bc3QudmFyaWFibGVzO1xuICAgICAgICAgIEFzdC5vYnNlcnZhYmxlcyA9IChBbGdfZXhwci5BTEdfVkFSIGxibCwgcG9zKSA6OiByLkFzdC5vYnNlcnZhYmxlcztcbiAgICAgICAgfVxuICAgICAgfCBBc3QuUExPVCBleHByIC0+IHsgciB3aXRoIEFzdC5vYnNlcnZhYmxlcyA9IGV4cHIgOjogci5Bc3Qub2JzZXJ2YWJsZXMgfVxuICAgICAgfCBBc3QuUEVSVCAoKGFsYXJtLCBwcmUsIGVmZmVjdCwgb3B0KSwgcG9zKSAtPlxuICAgICAgICB7XG4gICAgICAgICAgciB3aXRoXG4gICAgICAgICAgQXN0LnBlcnR1cmJhdGlvbnMgPVxuICAgICAgICAgICAgKChhbGFybSwgcHJlLCBlZmZlY3QsIG9wdCksIHBvcykgOjogci5Bc3QucGVydHVyYmF0aW9ucztcbiAgICAgICAgfVxuICAgICAgfCBBc3QuQ09ORklHIChwYXJhbV9uYW1lLCB2YWx1ZV9saXN0KSAtPlxuICAgICAgICB7XG4gICAgICAgICAgciB3aXRoXG4gICAgICAgICAgQXN0LmNvbmZpZ3VyYXRpb25zID0gKHBhcmFtX25hbWUsIHZhbHVlX2xpc3QpIDo6IHIuQXN0LmNvbmZpZ3VyYXRpb25zO1xuICAgICAgICB9KVxuICAgIGNvbXBpbCAoTGlzdC5yZXYgcmV2X2luc3RyKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxue1xub3BlbiBLcGFyc2VyNFxuXG4gbGV0IGtleXdvcmRfb3JfaWQgPVxuIGxldCBrZXl3b3JkcyA9IEhhc2h0YmwuY3JlYXRlIDE1IGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJkb1wiIERPIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJyZXBlYXRcIiBSRVBFQVQgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcIklORlwiIElORklOSVRZIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJpbmZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiYWxhcm1cIiBBTEFSTSBpblxuIGZ1biB4IC0+XG4gdHJ5IEhhc2h0YmwuZmluZCBrZXl3b3JkcyB4IHdpdGggTm90X2ZvdW5kIC0+IElEIHhcblxufVxuXG5sZXQgZW9sID0gJ1xccic/ICdcXG4nXG5sZXQgYmxhbmsgPSBbJyAnICdcXHQnXVxubGV0IGludGVnZXIgPSBbJzAnLSc5J10rXG5sZXQgcmVhbCA9XG4gIChbJzAnLSc5J10rIFsnZScgJ0UnXSBbJysnICctJ10/IFsnMCctJzknXSspIHxcbiAgKCgoWycwJy0nOSddKyAnLicgWycwJy0nOSddKikgfCAoJy4nIFsnMCctJzknXSspKVxuICAgIChbJ2UnICdFJ10gWycrJyAnLSddPyBbJzAnLSc5J10rKT8pXG5sZXQgaWQgPSBbJ18nICd+J10gWydhJy0neicgJ0EnLSdaJyAnMCctJzknICdfJyAnficgJy0nICcrJ10rIHxcbiAgICAgICAgIFsnYSctJ3onICdBJy0nWiddIFsnYSctJ3onICdBJy0nWicgJzAnLSc5JyAnXycgJ34nICctJyAnKyddKlxuXG5ydWxlIHRva2VuID0gcGFyc2VcbiAgfCAnLycgJy8nIChbXidcXHInJ1xcbiddKiBhcyBzKSAoZW9sIHwgZW9mKSB7TGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgQ09NTUVOVCBzfVxuICB8ICcvJyAnKicge0NPTU1FTlQgKGlubGluZV9jb21tZW50IFtdIGxleGJ1Zil9XG4gIHwgZW9sIHsgTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgTkVXTElORSB9XG4gIHwgYmxhbmsgKyBhcyB4IHsgU1BBQ0UgeCB9XG4gIHwgJyMnIHsgU0hBUlAgfVxuICB8IFwiJiZcIiB7IEFORCB9XG4gIHwgXCJ8fFwiIHsgT1IgfVxuICB8IFwiPC0+XCIgeyBMUkFSIH1cbiAgfCBcIjwtXCIge0xBUn1cbiAgfCBcIi0+XCIgeyBSQVIgfVxuICB8IFwiPD5cIiB7IERJRkYgfVxuICB8ICc6JyB7IENPTE9OIH1cbiAgfCAnOycgeyBTRU1JQ09MT04gfVxuICB8ICdAJyB7IEFUIH1cbiAgfCAnLCcgeyBDT01NQSB9XG4gIHwgJ1xcXFwnIHtCQUNLU0xBU0h9XG4gIHwgJygnIHsgT1BfUEFSIH1cbiAgfCAnKScgeyBDTF9QQVIgfVxuICB8ICdbJyB7IE9QX0JSQSB9XG4gIHwgJ10nIHsgQ0xfQlJBIH1cbiAgfCAneycgeyBPUF9DVVIgfVxuICB8ICd9JyB7IENMX0NVUiB9XG4gIHwgJ3wnIHsgUElQRSB9XG4gIHwgJy4nIHsgRE9UIH1cbiAgfCAnXycgeyBVTkRFUlNDT1JFIH1cbiAgfCAnKycgeyBQTFVTIH1cbiAgfCAnKicgeyBNVUxUIH1cbiAgfCAnLScgeyBNSU5VUyB9XG4gIHwgJ14nIHsgUE9XIH1cbiAgfCAnLycgeyBESVYgfVxuICB8ICc8JyB7IFNNQUxMRVIgfVxuICB8ICc+JyB7IEdSRUFURVIgfVxuICB8ICc9JyB7IEVRVUFMIH1cbiAgfCBpbnRlZ2VyIGFzIG4geyBJTlQgKGludF9vZl9zdHJpbmcgbikgfVxuICB8IHJlYWwgYXMgZiB7IEZMT0FUIChmbG9hdF9vZl9zdHJpbmcgZikgfVxuICB8ICdcXCcnIChbXidcXG4nICdcXCcnXSsgYXMgeCkgJ1xcJyd7IExBQkVMKHgpIH1cbiAgfCAnXFxcIicgKFteJ1xcbicgJ1xcXCInXSogYXMgeCkgJ1xcXCIneyBTVFJJTkcoeCkgfVxuICB8ICdcXCcnIChbXidcXG4nICdcXCcnXSsgYXMgcykgKGVvZiB8ICdcXG4nKVxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbnRlcm1pbmF0ZWQgbGFiZWw6IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKX1cbiAgfCAnXFxcIicgKFteJ1xcbicgJ1xcXCInXSsgYXMgcykgKGVvZiB8ICdcXG4nKVxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbnRlcm1pbmF0ZWQgc3RyaW5nOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSl9XG4gIHwgaWQgYXMgc3RyIHsga2V5d29yZF9vcl9pZCBzdHIgfVxuICB8ICclJyAoaWQgYXMgbGFiKSAnOicge1xuICAgIG1hdGNoIGxhYiB3aXRoXG4gICAgfCBcImFnZW50XCIgLT4gU0lHTkFUVVJFXG4gICAgfCBcImluaXRcIiAtPiBJTklUXG4gICAgfCBcInZhclwiIC0+IExFVFxuICAgIHwgXCJwbG90XCIgLT4gUExPVFxuICAgIHwgXCJtb2RcIiAtPiBQRVJUXG4gICAgfCBcIm9ic1wiIC0+IE9CU1xuICAgIHwgXCJkZWZcIiAtPiBDT05GSUdcbiAgICB8IFwidG9rZW5cIiAtPiBUT0tFTlxuICAgIHwgXyBhcyBzIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBkaXJlY3RpdmU6IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuICAgIH1cbiAgfCAnWycgYmxhbmsqICc/JyBibGFuayogJ10nIHsgVEhFTiB9XG4gIHwgJ1snIGJsYW5rKiAnOicgYmxhbmsqICddJyB7IEVMU0UgfVxuICB8ICdbJyBibGFuayogKGlkIGFzIGxhYikgYmxhbmsqICddJyB7XG4gICAgbWF0Y2ggbGFiIHdpdGhcbiAgICB8IFwiRVwiIC0+IEVWRU5UXG4gICAgfCBcIkUtXCIgLT4gTlVMTF9FVkVOVFxuICAgIHwgXCJUXCIgLT4gVElNRVxuICAgIHwgXCJUc2ltXCIgLT4gQ1BVVElNRVxuICAgIHwgXCJsb2dcIiAtPiBMT0dcbiAgICB8IFwic2luXCIgLT4gU0lOVVNcbiAgICB8IFwiY29zXCIgLT4gQ09TSU5VU1xuICAgIHwgXCJ0YW5cIiAtPiBUQU5cbiAgICB8IFwiZXhwXCIgLT4gRVhQT05FTlRcbiAgICB8IFwiaW50XCIgLT4gQUJTXG4gICAgfCBcIm1vZFwiIC0+IE1PRFxuICAgIHwgXCJzcXJ0XCIgLT4gU1FSVFxuICAgIHwgXCJ0cnVlXCIgLT4gVFJVRVxuICAgIHwgXCJmYWxzZVwiIC0+IEZBTFNFXG4gICAgfCBcInBpXCIgLT4gRkxPQVQgKDMuMTQxNTkyNjUpXG4gICAgfCBcIm1heFwiIC0+IE1BWFxuICAgIHwgXCJtaW5cIiAtPiBNSU5cbiAgICB8IFwiRW1heFwiIC0+IEVNQVhcbiAgICB8IFwiVG1heFwiIC0+IFRNQVhcbiAgICB8IFwibm90XCIgLT4gTk9UXG4gICAgfCBfIGFzIHMgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIHByaW1pdGl2ZTogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG4gICAgfVxuICB8ICckJyAoaWQgYXMgcykge1xuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgXCJBUFBMWVwiIC0+IEFQUExZXG4gICAgfCBcIkRFTFwiIC0+IERFTEVURVxuICAgIHwgXCJBRERcIiAtPiBJTlRST1xuICAgIHwgXCJTTkFQU0hPVFwiIC0+IFNOQVBTSE9UXG4gICAgfCBcIlNUT1BcIiAtPiBTVE9QXG4gICAgfCBcIkRJTlwiIC0+IEZMVVhcbiAgICB8IFwiVFJBQ0tcIiAtPiBUUkFDS1xuICAgIHwgXCJVUERBVEVcIiAtPiBBU1NJR05cbiAgICB8IFwiUFJJTlRcIiAtPiBQUklOVEZcbiAgICB8IFwiUFJJTlRGXCIgLT4gUFJJTlRGXG4gICAgfCBcIlBMT1RFTlRSWVwiIC0+IFBMT1RFTlRSWVxuICAgIHwgXCJSVU5cIiAtPiBSVU5cbiAgICB8IFwiU1BFQ0lFU19PRlwiIC0+IFNQRUNJRVNfT0ZcbiAgICB8IHMgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIGludGVydmVudGlvbjogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG4gICAgfVxuICB8IGVvZiB7IGxleGJ1Zi5MZXhpbmcubGV4X2VvZl9yZWFjaGVkIDwtIHRydWU7IEVPRiB9XG4gIHwgXyBhcyBjIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIGNoYXJhY3RlcjogXCJeU3RyaW5nLm1ha2UgMSBjLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSkgfVxuXG5hbmQgaW5saW5lX2NvbW1lbnQgYWNjID0gcGFyc2VcbiAgfCAoW14nXFxuJyAnKicgJ1xcXCInICcvJ10gKikgYXMgeCB7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiB9XG4gIHwgKCcvJyAnLycgW14nXFxyJydcXG4nXSogYXMgeCkgZW9sXG4gICAgeyBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgfVxuICB8IGVvbCBhcyB4IHsgTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIH1cbiAgfCAoJyonIFteJy8nICdcXG4nICdcXFwiJ10pIGFzIHggeyBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgfVxuICB8ICgnLycgW14nKicgJ1xcbicgJ1xcXCInXSkgYXMgeCB7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiB9XG4gIHwgJyonICcvJyB7IFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXYgYWNjKSB9XG4gIHwgZW9mIHsgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldiBhY2MpIH1cbiAgfCAnKicgJ1xcbicgeyBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCAoXCIqXFxuXCI6OmFjYykgbGV4YnVmIH1cbiAgfCAoKCcqJyB8ICcvJyk/ICdcXFwiJyBbXidcXG4nICdcXFwiJ10rICdcXFwiJykgYXMgeFxuICAgIHsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIH1cbiAgfCAoKCcqJyB8ICcvJyk/ICdcXFwiJyBbXidcXG4nICdcXFwiJ10rIChlb2YgfCAnXFxuJykpIGFzIHhcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW50ZXJtaW5hdGVkIHN0cmluZyBpbiBjb21tZW50OiBcIl54LFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSl9XG4gIHwgJy8nICcqJ1xuICAgIHsgaW5saW5lX2NvbW1lbnQgKFwiKi9cIjo6KGlubGluZV9jb21tZW50IFtcIi8qXCJdIGxleGJ1Zik6OiBhY2MpIGxleGJ1ZiB9XG4gIHwgJy8nICdcXG4nIHsgTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKFwiL1xcblwiOjphY2MpIGxleGJ1ZiB9XG5cbmFuZCByZWNvdmVyeSA9IHBhcnNlXG4gIHwgW14nXFxyJydcXG4nXSogKGVvbCB8IGVvZikge0xleGluZy5uZXdfbGluZSBsZXhidWZ9XG5cbntcbiAgbGV0IHJlYyBhdXhfbW9kZWwgZXJyIGxleCA9XG4gIHRyeSBsZXQgb3V0ID0gS3BhcnNlcjQubW9kZWwgdG9rZW4gbGV4IGluIChvdXQsIExpc3QucmV2IGVycilcbiAgd2l0aCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciBlIC0+XG4gICAgbGV0ICgpID0gcmVjb3ZlcnkgbGV4IGluXG4gICAgYXV4X21vZGVsIChlOjplcnIpIGxleFxuXG4gIGxldCBtb2RlbCBsZXggPSBhdXhfbW9kZWwgW10gbGV4XG5cbiAgbGV0IGNvbXBpbGUgbG9nZ2VyIGNvbXBpbCBmaWMgPVxuICAgIGxldCBkID0gb3Blbl9pbiBmaWMgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkIGluXG4gICAgbGV0ICgpID0gbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIDwtXG4gICAgICB7bGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIHdpdGggTGV4aW5nLnBvc19mbmFtZSA9IGZpY30gaW5cbiAgICBsZXQgY29tcGlsID0geyBjb21waWwgd2l0aCBBc3QuZmlsZW5hbWVzID0gZmljIDo6IGNvbXBpbC5Bc3QuZmlsZW5hbWVzIH0gaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJQYXJzaW5nICVzLi4uQC5cIiBmaWMgaW5cbiAgICBsZXQgKG91dCxlcnIpID0gbW9kZWwgbGV4YnVmIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nZ2VyIFwiZG9uZUAuXCIgaW5cbiAgICBsZXQgKCkgPSBtYXRjaCBlcnIgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCAobXNnLHBvcyk6Ol8gLT5cbiAgICAgICAgbGV0ICgpID0gUHAuZXJyb3IgRm9ybWF0LnBwX3ByaW50X3N0cmluZyAobXNnLHBvcykgaW5cbiAgICAgICAgZXhpdCAzIGluXG4gICAgbGV0ICgpID0gY2xvc2VfaW4gZCBpblxuICAgIENzdC5hcHBlbmRfdG9fYXN0X2NvbXBpbCBvdXQgY29tcGlsXG59XG4iLCIjIDkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuIFxub3BlbiBLcGFyc2VyNFxuXG4gbGV0IGtleXdvcmRfb3JfaWQgPVxuIGxldCBrZXl3b3JkcyA9IEhhc2h0YmwuY3JlYXRlIDE1IGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJkb1wiIERPIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJyZXBlYXRcIiBSRVBFQVQgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcIklORlwiIElORklOSVRZIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJpbmZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiYWxhcm1cIiBBTEFSTSBpblxuIGZ1biB4IC0+XG4gdHJ5IEhhc2h0YmwuZmluZCBrZXl3b3JkcyB4IHdpdGggTm90X2ZvdW5kIC0+IElEIHhcblxuXG4jIDE3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjA5XFwyNTVcXDIxMFxcMjU1XFwwNjJcXDAwMFxcMTI0XFwwMDBcXDIwOVxcMDAwXFwwMzNcXDAwMVxcMjM3XFwwMDBcXFxuICAgIFxcMTc2XFwwMDBcXDExMlxcMDAxXFwyMjNcXDI1NVxcMjI0XFwyNTVcXDIyN1xcMjU1XFwyMjlcXDI1NVxcMjMwXFwyNTVcXDE3M1xcMDAxXFxcbiAgICBcXDEzNFxcMDAxXFwyMzRcXDI1NVxcMjM1XFwyNTVcXDIzNlxcMjU1XFwwMzFcXDAwMlxcMjM4XFwyNTVcXDIzOVxcMjU1XFwyNDBcXDI1NVxcXG4gICAgXFwyNDFcXDI1NVxcMjQyXFwyNTVcXDI0M1xcMjU1XFwyNDRcXDI1NVxcMDAxXFwwMDBcXDIwNlxcMDAwXFwwMjlcXDAwMFxcMDU4XFwwMDBcXFxuICAgIFxcMjUxXFwyNTVcXDI0MFxcMDAwXFwyNTNcXDI1NVxcMDAxXFwwMDBcXDIwNlxcMDAwXFwyNTRcXDI1NVxcMDExXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwyNTBcXDI1NVxcMjQ5XFwyNTVcXDI0NVxcMjU1XFwwOTJcXDAwMFxcMjQ4XFwyNTVcXDI0NlxcMjU1XFwxNDVcXDAwMlxcXG4gICAgXFwyMjVcXDAwMlxcMTcxXFwwMDFcXDAzMlxcMDAyXFwwODNcXDAwM1xcMjE0XFwyNTVcXDIxM1xcMjU1XFwxOTdcXDAwM1xcMjEyXFwyNTVcXFxuICAgIFxcMDYzXFwwMDJcXDA3M1xcMDAzXFwyNTVcXDAwMVxcMTQ0XFwwMDFcXDAyNVxcMDAyXFwwMjFcXDAwNFxcMTAwXFwwMDRcXDExNVxcMDAyXFxcbiAgICBcXDEzMFxcMDAyXFwwNDhcXDAwM1xcMTc3XFwwMDBcXDIxOFxcMjU1XFwyMjBcXDI1NVxcMjE5XFwyNTVcXDA4M1xcMDAzXFwyMTdcXDI1NVxcXG4gICAgXFwxMzdcXDAwNFxcMjE3XFwwMDRcXDA0MVxcMDA1XFwyMTVcXDI1NVxcMTIxXFwwMDVcXDIwMVxcMDA1XFwwMjVcXDAwNlxcMTk3XFwwMDNcXFxuICAgIFxcMDg0XFwwMDNcXDI0OVxcMjU1XFwxMzRcXDAwNFxcMjUzXFwyNTVcXDEzOFxcMDA2XFwxMzlcXDAwNlxcMTQwXFwwMDZcXDI0NFxcMjU1XFxcbiAgICBcXDI0NVxcMjU1XFwyNTFcXDI1NVxcMDEzXFwwMDBcXDI1NFxcMjU1XFwwMDRcXDAwMFxcMDE3XFwwMDBcXDI0OFxcMjU1XFwyNTBcXDI1NVxcXG4gICAgXFwyNTJcXDI1NVxcMTk4XFwwMDNcXDI0NlxcMjU1XFwyNDdcXDI1NVxcMjA3XFwwMDBcXDI1NVxcMjU1XFwwMDVcXDAwMFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDM5XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI0XFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMDMwXFwwMDBcXDAyMlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwNDZcXDAwMFxcMDI5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDM0XFwwMDBcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMjU1XFwyNTVcXDAzOVxcMDAwXFwwMzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDM0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMFxcMjU1XFwyNTVcXDA0NFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MFxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4NVxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDk2XFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDg1XFwwMDBcXDA4NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5M1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA5M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzlcXDAwMFxcMDM1XFwwMDBcXDA5MVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMDAwXFwwMDBcXDAwMFxcMDkxXFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAwMFxcMDAwXFwwOTJcXDAwMFxcMDkxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAzM1xcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAzMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAzMVxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwwMjJcXDAwMFxcMDIxXFwwMDBcXDAxM1xcMDAwXFwwMTRcXDAwMFxcMDI0XFwwMDBcXDAyOFxcMDAwXFwwMTZcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDI3XFwwMDBcXDAyNlxcMDAwXFwwMjlcXDAwMFxcMDEwXFwwMDBcXDAxMVxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwMjVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMjBcXDAwMFxcMDIzXFwwMDBcXDAxOVxcMDAwXFwwMTJcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDQxXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDE4XFwwMDBcXDAzMFxcMDAwXFwwMTdcXDAwMFxcMDA2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNDJcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNjdcXDAwMFxcMDc3XFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDY4XFwwMDBcXDEwMVxcMDAwXFwwMDBcXDAwMFxcMDczXFwwMDBcXDEwMlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAzN1xcMDAwXFwwMzNcXDAwMFxcMDczXFwwMDBcXDA0NFxcMDAwXFwwMDVcXDAwMFxcMDM4XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDM5XFwwMDBcXDA0M1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2OVxcMDAwXFxcbiAgICBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYyXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNjNcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1OVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA1NlxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDBcXDA1NlxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA0OFxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDUxXFwwMDBcXDA3MVxcMDAwXFwyNTVcXDI1NVxcMDU0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTFcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNThcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDU4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA1NlxcMDAwXFwwODNcXDAwMFxcXG4gICAgXFwwOThcXDAwMFxcMDQ4XFwwMDBcXDA4NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwOTVcXDAwMFxcMDcyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDA4MVxcMDAwXFwwOThcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1OFxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA4N1xcMDAwXFwyNTVcXDI1NVxcMDgzXFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDkwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDBcXDA0MFxcMDAwXFwwMDBcXDAwMFxcMDkyXFwwMDBcXDEwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwOTBcXDAwMFxcXG4gICAgXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDA5MFxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOTNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyOFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAzMFxcMDAwXFwwNDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDA2NlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMTAwXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMTAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDM2XFwwMDBcXDAzM1xcMDAwXFwwMDRcXDAwMFxcMDI5XFwwMDBcXDAwNVxcMDAwXFwwMzZcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMzhcXDAwMFxcMDI5XFwwMDBcXDA5MFxcMDAwXFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMDMzXFwwMDBcXDA5M1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDhcXDAwMFxcMDY2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDAwOVxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXFxuICAgIFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDUwXFwwMDBcXDA1OFxcMDAwXFwwMTVcXDAwMFxcMDU4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU4XFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDU2XFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFxcbiAgICBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDIwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDU2XFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMFxcMDIwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwwNTZcXDAwMFxcMDIwXFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNTFcXDAwMFxcMDcwXFwwMDBcXDA4MFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwyNTVcXDI1NVxcMDcwXFwwMDBcXDA4MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDU0XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwNTFcXDAwMFxcMDc5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA3OVxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDc5XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzBcXDAwMFxcMDgwXFwwMDBcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2MVxcMDAwXFwyNTVcXDI1NVxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA4MlxcMDAwXFwwNjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcyXFwwMDBcXDA4MlxcMDAwXFwwNzJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwyNTVcXDI1NVxcMDc5XFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDYyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDcyXFwwMDBcXDI1NVxcMjU1XFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwyNTVcXDI1NVxcMDczXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA3M1xcMDAwXFwyNTVcXDI1NVxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzRcXDAwMFxcMjU1XFwyNTVcXDA3NFxcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNzRcXDAwMFxcMjU1XFwyNTVcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc2XFwwMDBcXDI1NVxcMjU1XFwwNzZcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDc2XFwwMDBcXDI1NVxcMjU1XFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFxcbiAgICBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFxcbiAgICBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzhcXDAwMFxcMjU1XFwyNTVcXDA3OFxcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNzhcXDAwMFxcMjU1XFwyNTVcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAxNlxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwxNjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDJcXDAwMVxcMDE5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5M1xcMDAwXFwwMjdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMDBcXDAwMFxcMDM2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTNcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEzXFwwMDBcXFxuICAgIFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDA2NlxcMDAwXFwwMzhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDA3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDhcXDAwMFxcMjU1XFwyNTVcXDA5MFxcMDAwXFwwNjZcXDAwMFxcMjU1XFwyNTVcXDA5MFxcMDAwXFwwOTNcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDg0XFwwMDBcXDA5M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA3MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAzOFxcMDAwXFwwNDhcXDAwMFxcMDY2XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMjU1XFwyNTVcXDA5M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDcwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlxcMjU1XFwwMDJcXDI1NVxcMjU1XFwwMDZcXDI1NVxcMjU1XFwwMDVcXDI1NVxcMjU1XFwwMDRcXDI1NVxcMjU1XFwwMDNcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAzXFwyNTVcXDAwMFxcMDAyXFwwMDFcXDAwNFxcMjU1XFwwMDBcXDAwNVxcMjU1XFwwMDBcXDAwNlxcMjU1XFwwMDFcXDI1NVxcXG4gICAgXFwyNTVcXDAwMFxcMDAxXFwyNTVcIjtcbn1cblxubGV0IHJlYyB0b2tlbiBsZXhidWYgPVxuICBsZXhidWYuTGV4aW5nLmxleF9tZW0gPC0gQXJyYXkubWFrZSA3ICgtMSk7IF9fb2NhbWxfbGV4X3Rva2VuX3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3Rva2VuX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcubmV3X2VuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDM1IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc1xuIyA3NTkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMikgbGV4YnVmLkxleGluZy5sZXhfbWVtLigwKSBpblxuIyAzNSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBDT01NRU5UIHMpXG4jIDc2MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDEgLT5cbiMgMzYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgKENPTU1FTlQgKGlubGluZV9jb21tZW50IFtdIGxleGJ1ZikpXG4jIDc2OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDIgLT5cbiMgMzcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIExleGluZy5uZXdfbGluZSBsZXhidWY7IE5FV0xJTkUgKVxuIyA3NzMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzIC0+XG5sZXRcbiMgMzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgeFxuIyA3NzkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIFNQQUNFIHggKVxuIyA3ODMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0IC0+XG4jIDM5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBTSEFSUCApXG4jIDc4OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDUgLT5cbiMgNDAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgKCBBTkQgKVxuIyA3OTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA2IC0+XG4jIDQxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICggT1IgKVxuIyA3OTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA3IC0+XG4jIDQyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAoIExSQVIgKVxuIyA4MDMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA4IC0+XG4jIDQzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgIChMQVIpXG4jIDgwOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDkgLT5cbiMgNDQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgKCBSQVIgKVxuIyA4MTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxMCAtPlxuIyA0NSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAoIERJRkYgKVxuIyA4MTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxMSAtPlxuIyA0NiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggQ09MT04gKVxuIyA4MjMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxMiAtPlxuIyA0NyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggU0VNSUNPTE9OIClcbiMgODI4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTMgLT5cbiMgNDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIEFUIClcbiMgODMzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTQgLT5cbiMgNDkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIENPTU1BIClcbiMgODM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTUgLT5cbiMgNTAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgKEJBQ0tTTEFTSClcbiMgODQzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTYgLT5cbiMgNTEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIE9QX1BBUiApXG4jIDg0OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDE3IC0+XG4jIDUyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBDTF9QQVIgKVxuIyA4NTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxOCAtPlxuIyA1MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggT1BfQlJBIClcbiMgODU4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTkgLT5cbiMgNTQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIENMX0JSQSApXG4jIDg2MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDIwIC0+XG4jIDU1IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBPUF9DVVIgKVxuIyA4NjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyMSAtPlxuIyA1NiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggQ0xfQ1VSIClcbiMgODczIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjIgLT5cbiMgNTcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFBJUEUgKVxuIyA4NzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyMyAtPlxuIyA1OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggRE9UIClcbiMgODgzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjQgLT5cbiMgNTkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFVOREVSU0NPUkUgKVxuIyA4ODggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyNSAtPlxuIyA2MCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggUExVUyApXG4jIDg5MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDI2IC0+XG4jIDYxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBNVUxUIClcbiMgODk4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjcgLT5cbiMgNjIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIE1JTlVTIClcbiMgOTAzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjggLT5cbiMgNjMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFBPVyApXG4jIDkwOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDI5IC0+XG4jIDY0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBESVYgKVxuIyA5MTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzMCAtPlxuIyA2NSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggU01BTExFUiApXG4jIDkxOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDMxIC0+XG4jIDY2IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBHUkVBVEVSIClcbiMgOTIzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzIgLT5cbiMgNjcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIEVRVUFMIClcbiMgOTI4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzMgLT5cbmxldFxuIyA2OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICBuXG4jIDkzNCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA2OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICggSU5UIChpbnRfb2Zfc3RyaW5nIG4pIClcbiMgOTM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzQgLT5cbmxldFxuIyA2OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICBmXG4jIDk0NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA2OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICggRkxPQVQgKGZsb2F0X29mX3N0cmluZyBmKSApXG4jIDk0OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM1IC0+XG5sZXRcbiMgNzAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyA5NTQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgKGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zICsgLTEpIGluXG4jIDcwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIExBQkVMKHgpIClcbiMgOTU4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzYgLT5cbmxldFxuIyA3MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDk2NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSAobGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgKyAtMSkgaW5cbiMgNzEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggU1RSSU5HKHgpIClcbiMgOTY4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzcgLT5cbmxldFxuIyA3MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzXG4jIDk3NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSBsZXhidWYuTGV4aW5nLmxleF9tZW0uKDApIGluXG4jIDczIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW50ZXJtaW5hdGVkIGxhYmVsOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSkpXG4jIDk4MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM4IC0+XG5sZXRcbiMgNzcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc1xuIyA5ODcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgbGV4YnVmLkxleGluZy5sZXhfbWVtLigwKSBpblxuIyA3OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVudGVybWluYXRlZCBzdHJpbmc6IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKSlcbiMgOTk0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzkgLT5cbmxldFxuIyA4MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgc3RyXG4jIDEwMDAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgODIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAoIGtleXdvcmRfb3JfaWQgc3RyIClcbiMgMTAwNCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDQwIC0+XG5sZXRcbiMgODMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgbGFiXG4jIDEwMTAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgKGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zICsgLTEpIGluXG4jIDgzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBtYXRjaCBsYWIgd2l0aFxuICAgIHwgXCJhZ2VudFwiIC0+IFNJR05BVFVSRVxuICAgIHwgXCJpbml0XCIgLT4gSU5JVFxuICAgIHwgXCJ2YXJcIiAtPiBMRVRcbiAgICB8IFwicGxvdFwiIC0+IFBMT1RcbiAgICB8IFwibW9kXCIgLT4gUEVSVFxuICAgIHwgXCJvYnNcIiAtPiBPQlNcbiAgICB8IFwiZGVmXCIgLT4gQ09ORklHXG4gICAgfCBcInRva2VuXCIgLT4gVE9LRU5cbiAgICB8IF8gYXMgcyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVua25vd24gZGlyZWN0aXZlOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcbiAgICApXG4jIDEwMjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0MSAtPlxuIyA5OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFRIRU4gKVxuIyAxMDMzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNDIgLT5cbiMgOTkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBFTFNFIClcbiMgMTAzOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDQzIC0+XG5sZXRcbiMgMTAwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBsYWJcbiMgMTA0NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMCkgbGV4YnVmLkxleGluZy5sZXhfbWVtLigxKSBpblxuIyAxMDAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgbWF0Y2ggbGFiIHdpdGhcbiAgICB8IFwiRVwiIC0+IEVWRU5UXG4gICAgfCBcIkUtXCIgLT4gTlVMTF9FVkVOVFxuICAgIHwgXCJUXCIgLT4gVElNRVxuICAgIHwgXCJUc2ltXCIgLT4gQ1BVVElNRVxuICAgIHwgXCJsb2dcIiAtPiBMT0dcbiAgICB8IFwic2luXCIgLT4gU0lOVVNcbiAgICB8IFwiY29zXCIgLT4gQ09TSU5VU1xuICAgIHwgXCJ0YW5cIiAtPiBUQU5cbiAgICB8IFwiZXhwXCIgLT4gRVhQT05FTlRcbiAgICB8IFwiaW50XCIgLT4gQUJTXG4gICAgfCBcIm1vZFwiIC0+IE1PRFxuICAgIHwgXCJzcXJ0XCIgLT4gU1FSVFxuICAgIHwgXCJ0cnVlXCIgLT4gVFJVRVxuICAgIHwgXCJmYWxzZVwiIC0+IEZBTFNFXG4gICAgfCBcInBpXCIgLT4gRkxPQVQgKDMuMTQxNTkyNjUpXG4gICAgfCBcIm1heFwiIC0+IE1BWFxuICAgIHwgXCJtaW5cIiAtPiBNSU5cbiAgICB8IFwiRW1heFwiIC0+IEVNQVhcbiAgICB8IFwiVG1heFwiIC0+IFRNQVhcbiAgICB8IFwibm90XCIgLT4gTk9UXG4gICAgfCBfIGFzIHMgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIHByaW1pdGl2ZTogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG4gICAgKVxuIyAxMDc0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNDQgLT5cbmxldFxuIyAxMjcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgc1xuIyAxMDgwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDEyNyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAoXG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBcIkFQUExZXCIgLT4gQVBQTFlcbiAgICB8IFwiREVMXCIgLT4gREVMRVRFXG4gICAgfCBcIkFERFwiIC0+IElOVFJPXG4gICAgfCBcIlNOQVBTSE9UXCIgLT4gU05BUFNIT1RcbiAgICB8IFwiU1RPUFwiIC0+IFNUT1BcbiAgICB8IFwiRElOXCIgLT4gRkxVWFxuICAgIHwgXCJUUkFDS1wiIC0+IFRSQUNLXG4gICAgfCBcIlVQREFURVwiIC0+IEFTU0lHTlxuICAgIHwgXCJQUklOVFwiIC0+IFBSSU5URlxuICAgIHwgXCJQUklOVEZcIiAtPiBQUklOVEZcbiAgICB8IFwiUExPVEVOVFJZXCIgLT4gUExPVEVOVFJZXG4gICAgfCBcIlJVTlwiIC0+IFJVTlxuICAgIHwgXCJTUEVDSUVTX09GXCIgLT4gU1BFQ0lFU19PRlxuICAgIHwgcyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVua25vd24gaW50ZXJ2ZW50aW9uOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcbiAgICApXG4jIDExMDMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0NSAtPlxuIyAxNDcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIGxleGJ1Zi5MZXhpbmcubGV4X2VvZl9yZWFjaGVkIDwtIHRydWU7IEVPRiApXG4jIDExMDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0NiAtPlxubGV0XG4jIDE0OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICBjXG4jIDExMTQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuIyAxNDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBjaGFyYWN0ZXI6IFwiXlN0cmluZy5tYWtlIDEgYyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpIClcbiMgMTEyMSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfdG9rZW5fcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgaW5saW5lX2NvbW1lbnQgYWNjIGxleGJ1ZiA9XG4gIGxleGJ1Zi5MZXhpbmcubGV4X21lbSA8LSBBcnJheS5tYWtlIDIgKC0xKTsgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGFjYyBsZXhidWYgNzlcbmFuZCBfX29jYW1sX2xleF9pbmxpbmVfY29tbWVudF9yZWMgYWNjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5uZXdfZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgMTU0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyAxMTM0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE1NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgKVxuIyAxMTM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMSAtPlxubGV0XG4jIDE1NSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTE0NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9tZW0uKDApIGluXG4jIDE1NiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgKCBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgKVxuIyAxMTQ4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMiAtPlxubGV0XG4jIDE1NyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgIHhcbiMgMTE1NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNTcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICggTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIClcbiMgMTE1OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDMgLT5cbmxldFxuIyAxNTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyAxMTY0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKSBpblxuIyAxNTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiApXG4jIDExNjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0IC0+XG5sZXRcbiMgMTU5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTE3NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMikgaW5cbiMgMTU5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgKVxuIyAxMTc4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNSAtPlxuIyAxNjAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgKCBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2IGFjYykgKVxuIyAxMTgzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNiAtPlxuIyAxNjEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXYgYWNjKSApXG4jIDExODggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA3IC0+XG4jIDE2MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgKCBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCAoXCIqXFxuXCI6OmFjYykgbGV4YnVmIClcbiMgMTE5MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDggLT5cbmxldFxuIyAxNjMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTE5OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNjQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICggaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIClcbiMgMTIwMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDkgLT5cbmxldFxuIyAxNjUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyAxMjA5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE2NiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVudGVybWluYXRlZCBzdHJpbmcgaW4gY29tbWVudDogXCJeeCxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpKVxuIyAxMjE2IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTAgLT5cbiMgMTcxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAoIGlubGluZV9jb21tZW50IChcIiovXCI6OihpbmxpbmVfY29tbWVudCBbXCIvKlwiXSBsZXhidWYpOjogYWNjKSBsZXhidWYgKVxuIyAxMjIxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTEgLT5cbiMgMTcyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAoIExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50IChcIi9cXG5cIjo6YWNjKSBsZXhidWYgKVxuIyAxMjI2IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9pbmxpbmVfY29tbWVudF9yZWMgYWNjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVjb3ZlcnkgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlY292ZXJ5X3JlYyBsZXhidWYgMTAwXG5hbmQgX19vY2FtbF9sZXhfcmVjb3ZlcnlfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTc1IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWYpXG4jIDEyMzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlY292ZXJ5X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxNzcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuIFxuICBsZXQgcmVjIGF1eF9tb2RlbCBlcnIgbGV4ID1cbiAgdHJ5IGxldCBvdXQgPSBLcGFyc2VyNC5tb2RlbCB0b2tlbiBsZXggaW4gKG91dCwgTGlzdC5yZXYgZXJyKVxuICB3aXRoIEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIGUgLT5cbiAgICBsZXQgKCkgPSByZWNvdmVyeSBsZXggaW5cbiAgICBhdXhfbW9kZWwgKGU6OmVycikgbGV4XG5cbiAgbGV0IG1vZGVsIGxleCA9IGF1eF9tb2RlbCBbXSBsZXhcblxuICBsZXQgY29tcGlsZSBsb2dnZXIgY29tcGlsIGZpYyA9XG4gICAgbGV0IGQgPSBvcGVuX2luIGZpYyBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGQgaW5cbiAgICBsZXQgKCkgPSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgPC1cbiAgICAgIHtsZXhidWYuTGV4aW5nLmxleF9jdXJyX3Agd2l0aCBMZXhpbmcucG9zX2ZuYW1lID0gZmljfSBpblxuICAgIGxldCBjb21waWwgPSB7IGNvbXBpbCB3aXRoIEFzdC5maWxlbmFtZXMgPSBmaWMgOjogY29tcGlsLkFzdC5maWxlbmFtZXMgfSBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcIlBhcnNpbmcgJXMuLi5ALlwiIGZpYyBpblxuICAgIGxldCAob3V0LGVycikgPSBtb2RlbCBsZXhidWYgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJkb25lQC5cIiBpblxuICAgIGxldCAoKSA9IG1hdGNoIGVyciB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IChtc2cscG9zKTo6XyAtPlxuICAgICAgICBsZXQgKCkgPSBQcC5lcnJvciBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIChtc2cscG9zKSBpblxuICAgICAgICBleGl0IDMgaW5cbiAgICBsZXQgKCkgPSBjbG9zZV9pbiBkIGluXG4gICAgQ3N0LmFwcGVuZF90b19hc3RfY29tcGlsIG91dCBjb21waWxcblxuIyAxMjcyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxudHlwZSBpdGVtID0geyByYW5rOiBpbnQ7IGNvbnRlbnQ6IHN0cmluZyB9XG5cbnR5cGUgY2F0YWxvZyA9IHtcbiAgZWxlbWVudHM6IChzdHJpbmcsIGl0ZW0pIEhhc2h0YmwudDtcbiAgaW5kZXg6IHN0cmluZyBvcHRpb24gTW9kcy5EeW5BcnJheS50O1xuICBhc3Q6IEFzdC5wYXJzaW5nX2NvbXBpbCBvcHRpb24gcmVmO1xufVxuXG50eXBlIGNhdGFsb2dfaXRlbSA9IHsgcG9zaXRpb246IGludDsgaWQ6IHN0cmluZyB9XG5cbmxldCB3cml0ZV9jYXRhbG9nX2l0ZW0gb2IgeyBwb3NpdGlvbjsgaWQgfSA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfZmllbGQgXCJpZFwiIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgaWQgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfZmllbGQgXCJwb3NpdGlvblwiIFlvanNvbi5CYXNpYy53cml0ZV9pbnQgb2IgcG9zaXRpb24gaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgcmVhZF9jYXRhbG9nX2l0ZW0gcCBsYiA9XG4gIGxldCBwb3NpdGlvbiwgaWQsIGNvdW50ID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKHBvcywgaSwgYykga2V5IHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJwb3NpdGlvblwiIHRoZW5cbiAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYiwgaSwgc3VjYyBjXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJpZFwiKSBpblxuICAgICAgICAgIHBvcywgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIsIHN1Y2MgY1xuICAgICAgICApKVxuICAgICAgKC0xLCBcIlwiLCAwKSBwIGxiXG4gIGluXG4gIGxldCAoKSA9IGFzc2VydCAoY291bnQgPSAyKSBpblxuICB7IHBvc2l0aW9uOyBpZCB9XG5cbmxldCBjcmVhdGUgKCkgPVxuICB7XG4gICAgZWxlbWVudHMgPSBIYXNodGJsLmNyZWF0ZSAxO1xuICAgIGluZGV4ID0gTW9kcy5EeW5BcnJheS5jcmVhdGUgMSBOb25lO1xuICAgIGFzdCA9IHJlZiBOb25lO1xuICB9XG5cbmxldCBwdXQgfnBvc2l0aW9uOnJhbmsgfmlkIH5jb250ZW50IGNhdGFsb2cgPVxuICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgY2F0YWxvZy5lbGVtZW50cyBpZCB7IHJhbms7IGNvbnRlbnQgfSBpblxuICBtYXRjaCBNb2RzLkR5bkFycmF5LmdldCBjYXRhbG9nLmluZGV4IHJhbmsgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBjYXRhbG9nLmluZGV4IHJhbmsgKFNvbWUgaWQpIGluXG4gICAgbGV0ICgpID0gY2F0YWxvZy5hc3QgOj0gTm9uZSBpblxuICAgIFJlc3VsdC5PayAoKVxuICB8IFNvbWUgYWllIC0+XG4gICAgUmVzdWx0LkVycm9yXG4gICAgICAoXCJTbG90IFwiIF4gc3RyaW5nX29mX2ludCByYW5rIF4gXCIgaXMgbm90IGF2YWlsYWJsZS4gVGhlcmUgaXMgYWxyZWFkeSBcIlxuICAgICBeIGFpZSlcblxubGV0IGZpbGVfY3JlYXRlIH5wb3NpdGlvbiB+aWQgfmNvbnRlbnQgY2F0YWxvZyA9XG4gIGlmIEhhc2h0YmwubWVtIGNhdGFsb2cuZWxlbWVudHMgaWQgdGhlblxuICAgIFJlc3VsdC5FcnJvclxuICAgICAgKFwiQSBmaWxlIGNhbGxlZCBcXFwiXCIgXiBpZCBeIFwiXFxcIiBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGNhdGFsb2dcIilcbiAgZWxzZVxuICAgIHB1dCB+cG9zaXRpb24gfmlkIH5jb250ZW50IGNhdGFsb2dcblxubGV0IGZpbGVfbW92ZSB+cG9zaXRpb24gfmlkIGNhdGFsb2cgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYWxsIGNhdGFsb2cuZWxlbWVudHMgaWQgd2l0aFxuICB8IFtdIC0+IFJlc3VsdC5FcnJvciAoXCJNaXNzaW5nIGZpbGUgXFxcIlwiIF4gaWQgXiBcIlxcXCIgaW4gdGhlIGNhdGFsb2dcIilcbiAgfCBfIDo6IF8gOjogXyAtPiBSZXN1bHQuRXJyb3IgXCJGaWxlIGNhdGFsb2cgaGFzIHNlcmlvdXMgcHJvYmxlbXNcIlxuICB8IFsgeyByYW5rOyBjb250ZW50IH0gXSAtPlxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGNhdGFsb2cuaW5kZXggcmFuayBOb25lIGluXG4gICAgcHV0IH5wb3NpdGlvbiB+aWQgfmNvbnRlbnQgY2F0YWxvZ1xuXG5sZXQgZmlsZV9wYXRjaCB+aWQgY29udGVudCBjYXRhbG9nID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kX2FsbCBjYXRhbG9nLmVsZW1lbnRzIGlkIHdpdGhcbiAgfCBbXSAtPiBSZXN1bHQuRXJyb3IgKFwiVW5rbm93biBmaWxlIFxcXCJcIiBeIGlkIF4gXCJcXFwiXCIpXG4gIHwgXyA6OiBfIDo6IF8gLT4gUmVzdWx0LkVycm9yIFwiU2VyaW91cyBwcm9ibGVtcyBpbiBmaWxlIGNhdGFsb2dcIlxuICB8IFsgeyByYW5rOyBfIH0gXSAtPlxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBjYXRhbG9nLmVsZW1lbnRzIGlkIHsgcmFuazsgY29udGVudCB9IGluXG4gICAgbGV0ICgpID0gY2F0YWxvZy5hc3QgOj0gTm9uZSBpblxuICAgIFJlc3VsdC5PayAoKVxuXG5sZXQgZmlsZV9kZWxldGUgfmlkIGNhdGFsb2cgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYWxsIGNhdGFsb2cuZWxlbWVudHMgaWQgd2l0aFxuICB8IFtdIC0+IFJlc3VsdC5FcnJvciAoXCJObyBmaWxlIFxcXCJcIiBeIGlkIF4gXCJcXFwiXCIpXG4gIHwgXyA6OiBfIDo6IF8gLT4gZmFpbHdpdGggXCJCaWcgdHJvdWJsZXMgaW4gZmlsZSBjYXRhbG9nXCJcbiAgfCBbIHsgcmFuazsgXyB9IF0gLT5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBjYXRhbG9nLmluZGV4IHJhbmsgTm9uZSBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVtb3ZlIGNhdGFsb2cuZWxlbWVudHMgaWQgaW5cbiAgICBsZXQgKCkgPSBjYXRhbG9nLmFzdCA6PSBOb25lIGluXG4gICAgUmVzdWx0Lk9rICgpXG5cbmxldCBmaWxlX2dldCB+aWQgY2F0YWxvZyA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZF9hbGwgY2F0YWxvZy5lbGVtZW50cyBpZCB3aXRoXG4gIHwgW10gLT4gUmVzdWx0LkVycm9yIChcIkZpbGUgXFxcIlwiIF4gaWQgXiBcIlxcXCIgZG9lcyBub3QgZXhpc3RcIilcbiAgfCBfIDo6IF8gOjogXyAtPiBSZXN1bHQuRXJyb3IgXCJDb3JydXB0ZWQgZmlsZSBjYXRhbG9nXCJcbiAgfCBbIHsgcmFuazsgY29udGVudCB9IF0gLT4gUmVzdWx0Lk9rIChjb250ZW50LCByYW5rKVxuXG5sZXQgY2F0YWxvZyBjYXRhbG9nID1cbiAgTW9kcy5EeW5BcnJheS5mb2xkX3JpZ2h0aVxuICAgIChmdW4gcG9zaXRpb24geCBhY2MgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgfCBTb21lIGlkIC0+IHsgcG9zaXRpb247IGlkIH0gOjogYWNjKVxuICAgIGNhdGFsb2cuaW5kZXggW11cblxubGV0IHBhcnNlIHlpZWxkIGNhdGFsb2cgPVxuICBtYXRjaCAhKGNhdGFsb2cuYXN0KSB3aXRoXG4gIHwgU29tZSBjb21waWxlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGNvbXBpbGUpXG4gIHwgTm9uZSAtPlxuICAgIE1vZHMuRHluQXJyYXkuZm9sZF9yaWdodGlcbiAgICAgIChmdW4gXyB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgIGxldCBmaWxlID0gSGFzaHRibC5maW5kIGNhdGFsb2cuZWxlbWVudHMgeCBpblxuICAgICAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgZmlsZS5jb250ZW50IGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCA8LVxuICAgICAgICAgICAgICB7IGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCB3aXRoIExleGluZy5wb3NfZm5hbWUgPSB4IH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGFjYyA+Pj0gZnVuIChjb21waWxlLCBlcnIpIC0+XG4gICAgICAgICAgbGV0IGNvbXBpbGUgPVxuICAgICAgICAgICAgeyBjb21waWxlIHdpdGggQXN0LmZpbGVuYW1lcyA9IHggOjogY29tcGlsZS5Bc3QuZmlsZW5hbWVzIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIEx3dC5jYXRjaFxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBMd3Qud3JhcDEgS2xleGVyNC5tb2RlbCBsZXhidWYgPj49IGZ1biAoaW5zdHMsIGVycicpIC0+XG4gICAgICAgICAgICAgIHlpZWxkICgpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoQ3N0LmFwcGVuZF90b19hc3RfY29tcGlsIGluc3RzIGNvbXBpbGUsIGVycicgQCBlcnIpKVxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKG1lc3NhZ2UsIHJhbmdlKVxuICAgICAgICAgICAgICB8IEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKG1lc3NhZ2UsIHJhbmdlKVxuICAgICAgICAgICAgICB8IEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3IgKG1lc3NhZ2UsIHJhbmdlKSAtPlxuICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKGNvbXBpbGUsIChtZXNzYWdlLCByYW5nZSkgOjogZXJyKVxuICAgICAgICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgZXJyb3IgLT5cbiAgICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgICAoIGNvbXBpbGUsXG4gICAgICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChcIlJ1bnRpbWUgZXJyb3IgXCIgXiBlcnJvcikgOjogZXJyIClcbiAgICAgICAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAgICAgICBsZXQgbWVzc2FnZSA9IFByaW50ZXhjLnRvX3N0cmluZyBleG4gaW5cbiAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChjb21waWxlLCBMb2MuYW5ub3Rfd2l0aF9kdW1teSBtZXNzYWdlIDo6IGVycikpKVxuICAgICAgY2F0YWxvZy5pbmRleFxuICAgICAgKEx3dC5yZXR1cm4gKEFzdC5lbXB0eV9jb21waWwsIFtdKSlcbiAgICA+Pj0gKCBmdW5jdGlvblxuICAgIHwgY29tcGlsZSwgW10gLT5cbiAgICAgIGxldCAoKSA9IGNhdGFsb2cuYXN0IDo9IFNvbWUgY29tcGlsZSBpblxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgY29tcGlsZSlcbiAgICB8IF8sIGVyciAtPlxuICAgICAgbGV0IGVyciA9XG4gICAgICAgIExpc3QubWFwXG4gICAgICAgICAgKGZ1biAoKHRleHQsIHApIGFzIHgpIC0+XG4gICAgICAgICAgICBsZXQgcmFuZ2UgPVxuICAgICAgICAgICAgICBpZiBMb2MuaXNfYW5ub3RlZF93aXRoX2R1bW15IHggdGhlblxuICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIFNvbWUgcFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLkVycm9yOyByYW5nZTsgdGV4dCB9KVxuICAgICAgICAgIGVyclxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIGVycikgKVxuXG5sZXQgb3ZlcndyaXRlIGZpbGVuYW1lIGFzdCBjYXRhbG9nID1cbiAgbGV0IGNvbnRlbnQgPSBGb3JtYXQuYXNwcmludGYgXCIlYVwiIEFzdC5wcmludF9wYXJzaW5nX2NvbXBpbF9rYXBwYSBhc3QgaW5cbiAgbGV0IGl0ID0geyByYW5rID0gMDsgY29udGVudCB9IGluXG4gIGxldCAoKSA9IEhhc2h0YmwucmVzZXQgY2F0YWxvZy5lbGVtZW50cyBpblxuICBsZXQgKCkgPSBIYXNodGJsLmFkZCBjYXRhbG9nLmVsZW1lbnRzIGZpbGVuYW1lIGl0IGluXG4gIGxldCAoKSA9XG4gICAgTW9kcy5EeW5BcnJheS5pdGVyaVxuICAgICAgKGZ1biBpIF8gLT4gTW9kcy5EeW5BcnJheS5zZXQgY2F0YWxvZy5pbmRleCBpIE5vbmUpXG4gICAgICBjYXRhbG9nLmluZGV4XG4gIGluXG4gIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGNhdGFsb2cuaW5kZXggMCAoU29tZSBmaWxlbmFtZSkgaW5cbiAgY2F0YWxvZy5hc3QgOj0gU29tZSBhc3RcbiIsInR5cGUgdG9rZW4gPVxuICB8IEVPRlxuICB8IE5FV0xJTkVcbiAgfCBTRU1JQ09MT05cbiAgfCBDT01NQVxuICB8IERPVFxuICB8IE9QX1BBUlxuICB8IENMX1BBUlxuICB8IE9QX0NVUlxuICB8IENMX0NVUlxuICB8IEFUXG4gIHwgVFlQRVxuICB8IExBUlxuICB8IENQVVRJTUVcbiAgfCBFTUFYXG4gIHwgVE1BWFxuICB8IFBMT1RFTlRSWVxuICB8IERFTEVURVxuICB8IElOVFJPXG4gIHwgVFJBQ0tcbiAgfCBET1xuICB8IFNFVFxuICB8IFJFUEVBVFxuICB8IFNQRUNJRVNfT0ZcbiAgfCBVTlRJTFxuICB8IExPR1xuICB8IFBMVVNcbiAgfCBNVUxUXG4gIHwgTUlOVVNcbiAgfCBNQVhcbiAgfCBNSU5cbiAgfCBESVZcbiAgfCBTSU5VU1xuICB8IENPU0lOVVNcbiAgfCBUQU5cbiAgfCBQT1dcbiAgfCBBQlNcbiAgfCBNT0RVTE9cbiAgfCBTUVJUXG4gIHwgRVhQT05FTlRcbiAgfCBJTkZJTklUWVxuICB8IFRJTUVcbiAgfCBFVkVOVFxuICB8IE5VTExfRVZFTlRcbiAgfCBQSVBFXG4gIHwgRVFVQUxcbiAgfCBBTkRcbiAgfCBPUlxuICB8IE5PVFxuICB8IEdSRUFURVJcbiAgfCBTTUFMTEVSXG4gIHwgVFJVRVxuICB8IEZBTFNFXG4gIHwgRElGRlxuICB8IEtBUFBBX1JBUlxuICB8IEtBUFBBX0xSQVJcbiAgfCBLQVBQQV9MTktcbiAgfCBTSUdOQVRVUkVcbiAgfCBJTklUXG4gIHwgTEVUXG4gIHwgUExPVFxuICB8IFBFUlRcbiAgfCBPQlNcbiAgfCBUT0tFTlxuICB8IENPTkZJR1xuICB8IEtBUFBBX1dMRFxuICB8IEtBUFBBX1NFTUlcbiAgfCBGTFVYXG4gIHwgQVNTSUdOXG4gIHwgUFJJTlRGXG4gIHwgU1RPUFxuICB8IFNOQVBTSE9UXG4gIHwgUlVOXG4gIHwgVEhFTlxuICB8IEVMU0VcbiAgfCBBTEFSTVxuICB8IEFQUExZXG4gIHwgSU5UIG9mIChpbnQpXG4gIHwgSUQgb2YgKHN0cmluZylcbiAgfCBLQVBQQV9NUksgb2YgKHN0cmluZylcbiAgfCBMQUJFTCBvZiAoc3RyaW5nKVxuICB8IEZMT0FUIG9mIChmbG9hdClcbiAgfCBTVFJJTkcgb2YgKHN0cmluZylcblxub3BlbiBQYXJzaW5nOztcbmxldCBfID0gcGFyc2VfZXJyb3I7O1xuIyAxMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICBsZXQgYWRkX3BvcyB4ID1cbiAgICAoeCxMb2Mub2ZfcG9zIChQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkpIChQYXJzaW5nLnN5bWJvbF9lbmRfcG9zICgpKSlcbiAgbGV0IHJoc19wb3MgaSA9XG4gIExvYy5vZl9wb3MgKFBhcnNpbmcucmhzX3N0YXJ0X3BvcyBpKSAoUGFyc2luZy5yaHNfZW5kX3BvcyBpKVxuIyA5MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG5sZXQgeXl0cmFuc2xfY29uc3QgPSBbfFxuICAgIDAgKCogRU9GICopO1xuICAyNTcgKCogTkVXTElORSAqKTtcbiAgMjU4ICgqIFNFTUlDT0xPTiAqKTtcbiAgMjU5ICgqIENPTU1BICopO1xuICAyNjAgKCogRE9UICopO1xuICAyNjEgKCogT1BfUEFSICopO1xuICAyNjIgKCogQ0xfUEFSICopO1xuICAyNjMgKCogT1BfQ1VSICopO1xuICAyNjQgKCogQ0xfQ1VSICopO1xuICAyNjUgKCogQVQgKik7XG4gIDI2NiAoKiBUWVBFICopO1xuICAyNjcgKCogTEFSICopO1xuICAyNjggKCogQ1BVVElNRSAqKTtcbiAgMjY5ICgqIEVNQVggKik7XG4gIDI3MCAoKiBUTUFYICopO1xuICAyNzEgKCogUExPVEVOVFJZICopO1xuICAyNzIgKCogREVMRVRFICopO1xuICAyNzMgKCogSU5UUk8gKik7XG4gIDI3NCAoKiBUUkFDSyAqKTtcbiAgMjc1ICgqIERPICopO1xuICAyNzYgKCogU0VUICopO1xuICAyNzcgKCogUkVQRUFUICopO1xuICAyNzggKCogU1BFQ0lFU19PRiAqKTtcbiAgMjc5ICgqIFVOVElMICopO1xuICAyODAgKCogTE9HICopO1xuICAyODEgKCogUExVUyAqKTtcbiAgMjgyICgqIE1VTFQgKik7XG4gIDI4MyAoKiBNSU5VUyAqKTtcbiAgMjg0ICgqIE1BWCAqKTtcbiAgMjg1ICgqIE1JTiAqKTtcbiAgMjg2ICgqIERJViAqKTtcbiAgMjg3ICgqIFNJTlVTICopO1xuICAyODggKCogQ09TSU5VUyAqKTtcbiAgMjg5ICgqIFRBTiAqKTtcbiAgMjkwICgqIFBPVyAqKTtcbiAgMjkxICgqIEFCUyAqKTtcbiAgMjkyICgqIE1PRFVMTyAqKTtcbiAgMjkzICgqIFNRUlQgKik7XG4gIDI5NCAoKiBFWFBPTkVOVCAqKTtcbiAgMjk1ICgqIElORklOSVRZICopO1xuICAyOTYgKCogVElNRSAqKTtcbiAgMjk3ICgqIEVWRU5UICopO1xuICAyOTggKCogTlVMTF9FVkVOVCAqKTtcbiAgMjk5ICgqIFBJUEUgKik7XG4gIDMwMCAoKiBFUVVBTCAqKTtcbiAgMzAxICgqIEFORCAqKTtcbiAgMzAyICgqIE9SICopO1xuICAzMDMgKCogTk9UICopO1xuICAzMDQgKCogR1JFQVRFUiAqKTtcbiAgMzA1ICgqIFNNQUxMRVIgKik7XG4gIDMwNiAoKiBUUlVFICopO1xuICAzMDcgKCogRkFMU0UgKik7XG4gIDMwOCAoKiBESUZGICopO1xuICAzMDkgKCogS0FQUEFfUkFSICopO1xuICAzMTAgKCogS0FQUEFfTFJBUiAqKTtcbiAgMzExICgqIEtBUFBBX0xOSyAqKTtcbiAgMzEyICgqIFNJR05BVFVSRSAqKTtcbiAgMzEzICgqIElOSVQgKik7XG4gIDMxNCAoKiBMRVQgKik7XG4gIDMxNSAoKiBQTE9UICopO1xuICAzMTYgKCogUEVSVCAqKTtcbiAgMzE3ICgqIE9CUyAqKTtcbiAgMzE4ICgqIFRPS0VOICopO1xuICAzMTkgKCogQ09ORklHICopO1xuICAzMjAgKCogS0FQUEFfV0xEICopO1xuICAzMjEgKCogS0FQUEFfU0VNSSAqKTtcbiAgMzIyICgqIEZMVVggKik7XG4gIDMyMyAoKiBBU1NJR04gKik7XG4gIDMyNCAoKiBQUklOVEYgKik7XG4gIDMyNSAoKiBTVE9QICopO1xuICAzMjYgKCogU05BUFNIT1QgKik7XG4gIDMyNyAoKiBSVU4gKik7XG4gIDMyOCAoKiBUSEVOICopO1xuICAzMjkgKCogRUxTRSAqKTtcbiAgMzMwICgqIEFMQVJNICopO1xuICAzMzEgKCogQVBQTFkgKik7XG4gICAgMHxdXG5cbmxldCB5eXRyYW5zbF9ibG9jayA9IFt8XG4gIDMzMiAoKiBJTlQgKik7XG4gIDMzMyAoKiBJRCAqKTtcbiAgMzM0ICgqIEtBUFBBX01SSyAqKTtcbiAgMzM1ICgqIExBQkVMICopO1xuICAzMzYgKCogRkxPQVQgKik7XG4gIDMzNyAoKiBTVFJJTkcgKik7XG4gICAgMHxdXG5cbmxldCB5eWxocyA9IFwiXFwyNTVcXDI1NVxcXG5cXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTNcXDAwMFxcXG5cXDAxM1xcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMDE3XFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcXG5cXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDAzXFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG5cXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG5cXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjNcXDAwMFxcXG5cXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDIxXFwwMDBcXDAyMVxcMDAwXFwwMTFcXDAwMFxcXG5cXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMDI4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcXG5cXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAwNFxcMDAwXFwwMjlcXDAwMFxcXG5cXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMjVcXDAwMFxcXG5cXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDA2XFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG5cXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMzRcXDAwMFxcXG5cXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcXG5cXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcXG5cXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcXG5cXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzVcXDAwMFxcXG5cXDAzNVxcMDAwXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMDM2XFwwMDBcXDAzNlxcMDAwXFwwMjJcXDAwMFxcXG5cXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDE0XFwwMDBcXDAxNFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMDlcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMzdcXDAwMFxcMDM3XFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDAzOFxcMDAwXFwwMzhcXDAwMFxcXG5cXDAzOFxcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFwwNDJcXDAwMFxcXG5cXDA0MlxcMDAwXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDA0MVxcMDAwXFwwNDFcXDAwMFxcXG5cXDA0MVxcMDAwXFwwNDFcXDAwMFxcMDQxXFwwMDBcXDA0MVxcMDAwXFwwNDFcXDAwMFxcMDQxXFwwMDBcXDA0MVxcMDAwXFwwNDRcXDAwMFxcXG5cXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ1XFwwMDBcXDA0NVxcMDAwXFwwNDVcXDAwMFxcMDQ1XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG5cXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5bGVuID0gXCJcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDA1XFwwMDBcXDAwNFxcMDAwXFxcblxcMDA2XFwwMDBcXDAwNFxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwNVxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcblxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDA1XFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFxcblxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFxcblxcMDAyXFwwMDBcXDAwNVxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwNVxcMDAwXFxcblxcMDA2XFwwMDBcXDAwNFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNlxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFxcblxcMDA1XFwwMDBcXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcIlxuXG5sZXQgeXlkZWZyZWQgPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTUwXFwwMDBcXDE1MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMFxcMjAyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTAzXFwwMDBcXDEwMVxcMDAwXFwxMDJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDEwOFxcMDAwXFwxMDlcXDAwMFxcMTEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXFxuXFwwNzBcXDAwMFxcMDk5XFwwMDBcXDEwNlxcMDAwXFwxMDdcXDAwMFxcMDk4XFwwMDBcXDIwN1xcMDAwXFwwMDBcXDAwMFxcMTAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTI0XFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMTEyXFwwMDBcXDExM1xcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcXFxuXFwwMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMFxcMDE3XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMThcXDAwMFxcMDAwXFwwMDBcXDAxNVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwOTRcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDUxXFwwMDBcXFxuXFwxOTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAxXFwwMDBcXDAwMFxcMDAwXFwwMzVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTIyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAwXFwxMThcXDAwMFxcMTE5XFwwMDBcXFxuXFwxMjBcXDAwMFxcMTIxXFwwMDBcXDExNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDAwMFxcMDAwXFwwMjdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTFcXDAwMFxcMTQ1XFwwMDBcXDE1NVxcMDAwXFwwMDBcXDAwMFxcMDM2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDA0NlxcMDAwXFwwNjJcXDAwMFxcMDYzXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDBcXFxuXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAzOFxcMDAwXFwxMTFcXDAwMFxcMDY4XFwwMDBcXDExNFxcMDAwXFwxMTVcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMDRcXDAwMFxcMTA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjVcXDAwMFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNThcXDAwMFxcMDU1XFwwMDBcXDA1OVxcMDAwXFwwNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODVcXDAwMFxcMTg2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDIxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAwXFwwMDBcXDAwMFxcMDM0XFwwMDBcXFxuXFwwODhcXDAwMFxcMDAwXFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1NFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMFxcMDg3XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2MlxcMDAwXFwxNjVcXDAwMFxcMDAwXFwwMDBcXDE4NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTk1XFwwMDBcXDE3NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDMxXFwwMDBcXDAwMFxcMDAwXFwxMzdcXDAwMFxcMTM2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxNjZcXDAwMFxcMDAwXFwwMDBcXDE2MFxcMDAwXFwwMDBcXDAwMFxcMTYzXFwwMDBcXDE2NFxcMDAwXFwwMDBcXDAwMFxcMTc5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMTkwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk2XFwwMDBcXDE5MVxcMDAwXFwxOTNcXDAwMFxcMTkyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3NlxcMDAwXFwxOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTY3XFwwMDBcXDE0OFxcMDAwXFwxODBcXDAwMFxcMDAwXFwwMDBcXDE4MVxcMDAwXFwxODhcXDAwMFxcMTg5XFwwMDBcXFxuXFwxNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzFcXDAwMFxcMDAwXFwwMDBcXDE3MlxcMDAwXFwxNjhcXDAwMFxcMDAwXFwwMDBcXFxuXFwxODJcXDAwMFxcMTc4XFwwMDBcXDE5NFxcMDAwXFwxNzNcXDAwMFxcMTY5XFwwMDBcIlxuXG5sZXQgeXlkZ290byA9IFwiXFwwMDVcXDAwMFxcXG5cXDAyMlxcMDAwXFwwNDdcXDAwMFxcMDUwXFwwMDBcXDA3OFxcMDAwXFwwMjNcXDAwMFxcMDI0XFwwMDBcXDA3OVxcMDAwXFwwMjVcXDAwMFxcXG5cXDA5NlxcMDAwXFwxMDBcXDAwMFxcMTAzXFwwMDBcXDEwOFxcMDAwXFwyMDNcXDAwMFxcMTY1XFwwMDBcXDEwOVxcMDAwXFwwODBcXDAwMFxcXG5cXDA0NlxcMDAxXFwwOTJcXDAwMFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwyMjJcXDAwMFxcMDI2XFwwMDBcXDE0MVxcMDAwXFwwODJcXDAwMFxcXG5cXDAyN1xcMDAwXFwxNDJcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwMjhcXDAwMFxcMDkzXFwwMDBcXDEyNFxcMDAwXFwxMjFcXDAwMFxcXG5cXDA4NVxcMDAwXFwwODZcXDAwMFxcMjEwXFwwMDBcXDAxN1xcMDAxXFwwMjlcXDAwMFxcMDIzXFwwMDFcXDAzMFxcMDAwXFwwMDRcXDAwMVxcXG5cXDAwNVxcMDAxXFwwMjRcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNzVcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXCJcblxubGV0IHl5c2luZGV4ID0gXCJcXDAwM1xcMDAyXFxcblxcMDg1XFwwMDJcXDE2MFxcMDAyXFwxNDRcXDI1NVxcMjM0XFwwMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NVxcMDAyXFxcblxcMTgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDRcXDAzMlxcMjU1XFwxNDdcXDAwNFxcMjMzXFwyNTRcXDIwMVxcMDA0XFxcblxcMDA0XFwyNTVcXDIzM1xcMjU0XFwyMTVcXDI1NFxcMjE3XFwyNTRcXDIxMlxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFxcblxcMDE2XFwwMDBcXDAwNlxcMjU1XFwxMzhcXDI1NVxcMTcyXFwwMDBcXDA4OVxcMjU1XFwyMzJcXDI1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTQ0XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDAwNFxcMDUzXFwwMDVcXDA2NFxcMjU1XFwyMTVcXDAwNVxcMjE1XFwwMDVcXDEwNlxcMjU1XFxcblxcMjE1XFwwMDVcXDIxNVxcMDA1XFwyMTVcXDAwNVxcMTYxXFwwMDVcXDE0MFxcMDA3XFwwNjhcXDI1NVxcMDAwXFwwMDBcXDA1OVxcMjU1XFxcblxcMTM3XFwyNTVcXDAwMFxcMDAwXFwxMjdcXDAwMFxcMjM0XFwwMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NlxcMDA3XFxcblxcMDg2XFwwMDdcXDE0MFxcMDA3XFwxNDBcXDAwN1xcMDg2XFwwMDdcXDA4NlxcMDA3XFwwODZcXDAwN1xcMDg2XFwwMDdcXDA4NlxcMDA3XFxcblxcMDg2XFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODBcXDI1NVxcMTQxXFwyNTVcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDFcXDAwMFxcMDAwXFxcblxcMDIyXFwwMDBcXDAwMFxcMDAwXFwwMzdcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MFxcMjU1XFxcblxcMDAwXFwwMDBcXDAzMlxcMDA3XFwwMTVcXDAwMVxcMjUwXFwyNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUwXFwyNTVcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIxOVxcMjU1XFwwNzZcXDI1NVxcMDAwXFwwMDBcXDIzNFxcMDA2XFwxMDdcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgzXFwwMDFcXDIzNFxcMDA2XFwxMjlcXDI1NVxcMDAwXFwwMDBcXDAxOFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2MFxcMjU1XFxcblxcMjM0XFwwMDZcXDAxNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDA0XFwxNzJcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDA2XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk1XFwwMDBcXDE4MlxcMDAxXFwyNDRcXDI1NVxcMjUxXFwyNTVcXDAwMFxcMDAwXFxcblxcMDA0XFwwMDFcXDAwMFxcMDAwXFwwMDRcXDAwMVxcMTgwXFwwMDBcXDE4MFxcMDAwXFwyMzRcXDAwNlxcMDk2XFwwMDBcXDI0NVxcMjU1XFxcblxcMTYyXFwwMDNcXDA5MFxcMjU1XFwyMzRcXDAwNlxcMjM0XFwwMDZcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA0OVxcMjU1XFwxMDFcXDAwMVxcMjM0XFwwMDZcXDAwMFxcMDAwXFwxNDRcXDI1NVxcMDAwXFwwMDBcXDE3NFxcMjU1XFxcblxcMDQyXFwyNTVcXDAwMFxcMDAwXFwxODBcXDAwMVxcMTQwXFwwMDdcXDE0MFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM5XFwyNTVcXDA5OVxcMDAwXFwyMzRcXDAwNlxcMDAwXFwwMDBcXDIzNFxcMDA2XFxcblxcMjM0XFwwMDZcXDIzNFxcMDA2XFwyMzRcXDAwNlxcMDAwXFwwMDBcXDIzNFxcMDA2XFwyMzRcXDAwNlxcMjM0XFwwMDZcXDA4NlxcMDA3XFxcblxcMDg2XFwwMDdcXDA4NlxcMDA3XFwwODZcXDAwN1xcMDg2XFwwMDdcXDA4NlxcMDA3XFwwMDBcXDAwMFxcMTI1XFwyNTVcXDExMVxcMDAwXFxcblxcMDgwXFwwMDBcXDE2MVxcMDAwXFwwMDBcXDAwMFxcMTIxXFwwMDBcXDIzNFxcMDA2XFwyNDVcXDI1NVxcMjA2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDgzXFwwMDFcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMDgzXFwwMDFcXDAwMFxcMDAwXFwxNzBcXDI1NVxcMDAwXFwwMDBcXDE0NFxcMjU1XFxcblxcMDkxXFwyNTVcXDE2MFxcMjU1XFwwMDBcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk1XFwwMDBcXDIzNFxcMDA2XFxcblxcMTc1XFwwMDBcXDIxOFxcMDAwXFwwMDZcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUxXFwwMDBcXDAwMFxcMDAwXFxcblxcMjA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNVxcMDA1XFxcblxcMTgwXFwwMDBcXDIxNVxcMDA1XFwxODBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAxXFwwODNcXDAwMVxcMjE1XFwwMDVcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMVxcMDgzXFwwMDFcXDA4M1xcMDAxXFwwODNcXDAwMVxcMjA3XFwwMDBcXDAwMFxcMjU1XFxcblxcMDg5XFwwMDFcXDE4MFxcMDAxXFwwNjVcXDAwMFxcMTgwXFwwMDFcXDA2NVxcMDAwXFwwMTZcXDAwMVxcMDE2XFwwMDFcXDAwMFxcMDAwXFxcblxcMDI2XFwwMDFcXDAzMlxcMDA3XFwwMDhcXDI1NVxcMDQzXFwwMDFcXDA1MlxcMDAxXFwwODNcXDAwMVxcMDgwXFwwMDFcXDE0NFxcMjU1XFxcblxcMTE3XFwwMDBcXDE0NFxcMjU1XFwxNDRcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDZcXDI1NVxcMDAwXFwwMDBcXDA5NVxcMDAwXFxcblxcMDUwXFwwMDFcXDIzNFxcMDA2XFwxMjZcXDAwNlxcMDcyXFwwMDZcXDAwMFxcMDAwXFwwMjdcXDI1NVxcMDgxXFwwMDFcXDA5N1xcMDAxXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAxXFwxMTlcXDAwMVxcMTQwXFwwMDdcXDAzMlxcMDA3XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzZcXDI1NVxcMDg1XFwwMDFcXDAwN1xcMjU1XFwxMDVcXDAwMVxcMTQyXFwyNTVcXDAwMFxcMDAwXFxcblxcMTIxXFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMVxcMjM0XFwwMDZcXDIzNFxcMDA2XFwwMDBcXDAwMFxcMTE3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIzNFxcMDA2XFwwMDBcXDAwMFxcMTMwXFwwMDFcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMDAwXFwwMDBcXDA5NlxcMDAxXFxcblxcMTIwXFwwMDFcXDIzN1xcMDAwXFwwMDBcXDAwMFxcMTUxXFwwMDBcXDAwMFxcMDAwXFwxNjNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDkxXFwwMDFcXDA5MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNFxcMjU1XFwwMDBcXDAwMFxcMTI1XFwwMDFcXDAxMlxcMjU1XFxcblxcMDMxXFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQzXFwwMDFcXDE0MFxcMjU1XFwwMDBcXDAwMFxcMjM0XFwwMDZcXDI1MFxcMjU0XFxcblxcMjUwXFwyNTRcXDAwMFxcMDAwXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTBcXDI1NVxcMTMzXFwwMDFcXDAyMVxcMjU1XFxcblxcMDAwXFwwMDBcXDE0M1xcMDAxXFwwMDBcXDAwMFxcMTgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDAwMFxcMDAwXFxcblxcMDU3XFwyNTVcXDAwMFxcMDAwXFwwMjJcXDI1NVxcMDI0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTc3XFwwMDFcXDAzOFxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MFxcMjU0XFwxMzVcXDAwMVxcMDAwXFwwMDBcXDExOFxcMjU1XFxcblxcMDI0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE0M1xcMDAxXFwxMzhcXDAwMVxcMDAwXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0M1xcMDAxXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5cmluZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMTY2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2NlxcMDAxXFxcblxcMTQ0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTgwXFwwMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2MFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0OFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTY5XFwwMDFcXDA5NlxcMDAyXFwwOTZcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTMyXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDhcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIwMlxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDM0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzNcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUyXFwwMDBcXDE0NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ0XFwwMDJcXDAwMFxcMDAwXFxcblxcMDU3XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2OFxcMDAzXFwwMDBcXDAwMFxcMjE2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwM1xcMDU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDU4XFwwMDBcXDA2MlxcMDAwXFwxNjFcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE5XFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4NVxcMDAyXFwwMzhcXDAwM1xcMTc4XFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE3OVxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxOVxcMDAxXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMlxcMTk4XFwwMDJcXDIxM1xcMDAyXFwyNDFcXDAwMlxcMDA2XFwwMDNcXDA3NFxcMDAzXFxcblxcMDAwXFwwMDBcXDE1MVxcMDAxXFwxNjRcXDAwMFxcMjMyXFwwMDFcXDI0NVxcMDAwXFwwMDFcXDAwMFxcMDgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDk2XFwwMDNcXDAwMFxcMDAwXFwxMjZcXDI1NVxcMDAwXFwwMDBcXDIyM1xcMDAxXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDY0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjFcXDAwM1xcMDAwXFwwMDBcXDE0MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwxMjZcXDI1NVxcMDAwXFwwMDBcXDI0MVxcMDAxXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMjU1XFwyMjhcXDI1NVxcMjM3XFwyNTVcXDAwMFxcMDAwXFxcblxcMjE2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDczXFwwMDBcXDIzN1xcMjU1XFwwMDBcXDAwMFxcMjE5XFwwMDFcXDAwMFxcMDAwXFwxMjJcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM3XFwyNTVcXDE0NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFxcblxcMDcxXFwwMDBcXDAwMFxcMDAwXFwxNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIzN1xcMjU1XFwwMDBcXDAwMFxcMTQ0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM3XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjM3XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIzN1xcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzN1xcMjU1XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5Z2luZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMjQyXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyMjhcXDAwMlxcMTIzXFwwMDRcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzZcXDAwMlxcMDAwXFwwMDBcXDA1NlxcMDAyXFwyMDBcXDI1NVxcMDAwXFwwMDBcXDE1OVxcMDAyXFxcblxcMjIxXFwwMDFcXDAxM1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDEzM1xcMjU1XFwyNDdcXDI1NVxcMjMxXFwyNTVcXDIxN1xcMjU1XFxcblxcMTMyXFwwMDJcXDIxOFxcMjU1XFwxODhcXDAwNFxcMjE2XFwwMDJcXDIzM1xcMjU1XFwxNjhcXDI1NVxcMTcxXFwwMDJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMlxcMDI4XFwwMDFcXDAwMFxcMDAwXFwwNDZcXDI1NVxcMDAwXFwwMDBcXDI1MFxcMDAxXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTVcXDAwMlxcMTk4XFwyNTVcXDA1NFxcMjU1XFwwNjVcXDI1NVxcMDAwXFwwMDBcIlxuXG5sZXQgeXl0YWJsZXNpemUgPSAyMjY4XG5sZXQgeXl0YWJsZSA9IFwiXFwwODhcXDAwMFxcXG5cXDEyOVxcMDAwXFwxODRcXDAwMFxcMTE4XFwwMDBcXDE0M1xcMDAwXFwxNDRcXDAwMFxcMTQ3XFwwMDBcXDAzNFxcMDAxXFwwMzRcXDAwMVxcXG5cXDE0MVxcMDAwXFwyMjNcXDAwMFxcMDUxXFwwMDBcXDA5OFxcMDAxXFwxMzZcXDAwMFxcMTM4XFwwMDBcXDIyOFxcMDAwXFwwMDdcXDAwMFxcXG5cXDA4MVxcMDAwXFwwMzVcXDAwMVxcMTU2XFwwMDBcXDE1N1xcMDAwXFwwOThcXDAwMVxcMTcyXFwwMDBcXDExNVxcMDAwXFwxMTZcXDAwMFxcXG5cXDEwNlxcMDAwXFwxMTlcXDAwMVxcMDM0XFwwMDFcXDEzM1xcMDAwXFwyMDZcXDAwMFxcMDMwXFwwMDFcXDEwMVxcMDAxXFwwOTRcXDAwMFxcXG5cXDAzNlxcMDAxXFwwMTZcXDAwMFxcMTAyXFwwMDFcXDExMVxcMDAwXFwwMzVcXDAwMVxcMDk4XFwwMDFcXDE3M1xcMDAwXFwxNzRcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMTJcXDAwMFxcMTkyXFwwMDBcXDI0MFxcMDAwXFwxNzNcXDAwMFxcMTk3XFwwMDBcXDAyM1xcMDAwXFwyMzdcXDAwMFxcXG5cXDExN1xcMDAwXFwyMzJcXDAwMFxcMDk1XFwwMDFcXDA1NlxcMDAxXFwxMjZcXDAwMFxcMTAxXFwwMDBcXDA2NlxcMDAwXFwxMDJcXDAwMFxcXG5cXDE0NlxcMDAwXFwxMzhcXDAwMFxcMDY1XFwwMDBcXDE0OVxcMDAwXFwwMjRcXDAwMFxcMTMzXFwwMDBcXDAyMlxcMDAwXFwwMjhcXDAwMFxcXG5cXDE1M1xcMDAwXFwxNzVcXDAwMFxcMDk5XFwwMDFcXDE0MVxcMDAwXFwwMDlcXDAwMFxcMDI5XFwwMDBcXDAzMFxcMDAwXFwxNzVcXDAwMFxcXG5cXDIxOFxcMDAwXFwwMzNcXDAwMFxcMjE5XFwwMDBcXDA5OVxcMDAxXFwxMTBcXDAwMVxcMTA3XFwwMDBcXDE0OFxcMDAwXFwyMjVcXDAwMFxcXG5cXDE5MFxcMDAwXFwyNDFcXDAwMFxcMTMwXFwwMDBcXDExN1xcMDAxXFwwMzdcXDAwMVxcMDM3XFwwMDFcXDE3M1xcMDAwXFwxNzRcXDAwMFxcXG5cXDAxMFxcMDAwXFwxMDBcXDAwMVxcMDExXFwwMDBcXDEyNVxcMDAwXFwwOTlcXDAwMVxcMTczXFwwMDBcXDE3NFxcMDAwXFwxMDNcXDAwMVxcXG5cXDAwN1xcMDAwXFwxMjBcXDAwMVxcMTEzXFwwMDFcXDA5NlxcMDAxXFwyMTJcXDAwMFxcMDI2XFwwMDFcXDE1M1xcMDAwXFwwMjhcXDAwMVxcXG5cXDAzN1xcMDAxXFwwOTFcXDAwMVxcMTA0XFwwMDFcXDEwNVxcMDAxXFwwOTVcXDAwMFxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwODlcXDAwMVxcXG5cXDIwNVxcMDAwXFwxNzVcXDAwMFxcMjExXFwwMDBcXDIxM1xcMDAwXFwyMzhcXDAwMFxcMjM5XFwwMDBcXDE5OFxcMDAwXFwxNjhcXDAwMFxcXG5cXDE3NVxcMDAwXFwyMDFcXDAwMFxcMDkwXFwwMDFcXDE2OVxcMDAwXFwxNzBcXDAwMFxcMTExXFwwMDFcXDE1MVxcMDAwXFwxNzFcXDAwMFxcXG5cXDE4NFxcMDAwXFwxMDdcXDAwMVxcMjM2XFwwMDBcXDE4NFxcMDAwXFwxMThcXDAwMVxcMDA3XFwwMDFcXDE4NVxcMDAwXFwxNzNcXDAwMFxcXG5cXDE3NFxcMDAwXFwxMTlcXDAwMFxcMTUwXFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTA4XFwwMDFcXDEzMlxcMDAwXFwxMTRcXDAwMVxcXG5cXDEyNVxcMDAxXFwxNjZcXDAwMFxcMTIwXFwwMDBcXDE5OFxcMDAwXFwwMzNcXDAwMFxcMTg3XFwwMDBcXDE5OFxcMDAwXFwwODBcXDAwMFxcXG5cXDE5MVxcMDAwXFwxMjFcXDAwMVxcMTg4XFwwMDBcXDE4NFxcMDAwXFwxNjRcXDAwMFxcMjM1XFwwMDBcXDAzNFxcMDAwXFwwMzVcXDAwMFxcXG5cXDAzNlxcMDAwXFwwMzdcXDAwMFxcMTc1XFwwMDBcXDEyNVxcMDAwXFwxMjJcXDAwMVxcMDM4XFwwMDBcXDEyN1xcMDAxXFwwNjZcXDAwMFxcXG5cXDE2OFxcMDAwXFwwMzNcXDAwMVxcMjI3XFwwMDBcXDA3MlxcMDAxXFwxNjlcXDAwMFxcMTcwXFwwMDBcXDE5OFxcMDAwXFwxMzBcXDAwMVxcXG5cXDE3MVxcMDAwXFwxMjhcXDAwMVxcMTUzXFwwMDBcXDIzNlxcMDAwXFwxODRcXDAwMFxcMTMzXFwwMDFcXDEzOVxcMDAwXFwwMTVcXDAwMVxcXG5cXDE0MFxcMDAwXFwyNDdcXDAwMFxcMjQ4XFwwMDBcXDAyMVxcMDAxXFwwMDhcXDAwMVxcMTg0XFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcXG5cXDAyOVxcMDAxXFwxMjZcXDAwMVxcMDczXFwwMDFcXDE4MlxcMDAwXFwwNzNcXDAwMVxcMDE0XFwwMDFcXDAyNVxcMDAxXFwwNjRcXDAwMVxcXG5cXDAyN1xcMDAxXFwxODZcXDAwMFxcMDEzXFwwMDFcXDA3NFxcMDAxXFwwNzRcXDAwMFxcMDc0XFwwMDFcXDEwNlxcMDAwXFwwMDlcXDAwMVxcXG5cXDA3N1xcMDAwXFwwMzlcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDE3M1xcMDAwXFwxNzRcXDAwMFxcXG5cXDAwOVxcMDAwXFwxNjhcXDAwMFxcMDQ1XFwwMDBcXDA1OFxcMDAxXFwwNDZcXDAwMFxcMTY5XFwwMDBcXDE3MFxcMDAwXFwwNjVcXDAwMVxcXG5cXDA2NlxcMDAxXFwxNzFcXDAwMFxcMTA2XFwwMDBcXDEwNlxcMDAwXFwxMDZcXDAwMFxcMTg5XFwwMDBcXDE4M1xcMDAwXFwxMDZcXDAwMFxcXG5cXDA5MlxcMDAwXFwxODNcXDAwMFxcMDcwXFwwMDFcXDEwNlxcMDAwXFwwMTBcXDAwMFxcMTA2XFwwMDBcXDAxMVxcMDAwXFwxODdcXDAwMFxcXG5cXDIwMlxcMDAwXFwxNzVcXDAwMFxcMTg3XFwwMDBcXDIxNFxcMDAwXFwxMjdcXDAwMFxcMTA2XFwwMDBcXDA0OVxcMDAxXFwwNjNcXDAwMVxcXG5cXDIxNVxcMDAwXFwxMDZcXDAwMFxcMTA2XFwwMDBcXDA2N1xcMDAxXFwwNjhcXDAwMVxcMTA2XFwwMDBcXDAxMlxcMDAwXFwxMTNcXDAwMFxcXG5cXDIxNlxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcXG5cXDEyOVxcMDAwXFwxNDFcXDAwMFxcMTI5XFwwMDBcXDE0MVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwwNDNcXDAwMVxcXG5cXDAwOFxcMDAwXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEwNlxcMDAwXFwxMjlcXDAwMFxcXG5cXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcXG5cXDEyOVxcMDAwXFwxMjlcXDAwMFxcMDE2XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcXG5cXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwwMjNcXDAwMFxcXG5cXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwwNjZcXDAwMFxcXG5cXDA4MFxcMDAxXFwwODFcXDAwMVxcMTM4XFwwMDBcXDA2NVxcMDAwXFwxMzhcXDAwMFxcMDI0XFwwMDBcXDEzM1xcMDAwXFwwMjJcXDAwMFxcXG5cXDAyOFxcMDAwXFwyMTdcXDAwMFxcMTczXFwwMDBcXDE3NFxcMDAwXFwxNDFcXDAwMFxcMTIzXFwwMDBcXDAyOVxcMDAwXFwwMzBcXDAwMFxcXG5cXDEyOVxcMDAwXFwxMjlcXDAwMFxcMDMzXFwwMDBcXDE3NFxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDE3NFxcMDAwXFwxMjlcXDAwMFxcXG5cXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTE1XFwwMDFcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEwOVxcMDAxXFwxMzBcXDAwMFxcMTc1XFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDEzMFxcMDAwXFwwMDhcXDAwMFxcMTgwXFwwMDBcXDIyNFxcMDAwXFwxODFcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDA1MFxcMDAxXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwwMDBcXDAwMVxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDEzMFxcMDAwXFwyMzFcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDEzMFxcMDAwXFwwNDRcXDAwMVxcMTY4XFwwMDBcXDA0NVxcMDAxXFwxNjhcXDAwMFxcMjQyXFwwMDBcXDE2OVxcMDAwXFwxNzBcXDAwMFxcXG5cXDE2OVxcMDAwXFwxNzBcXDAwMFxcMTcxXFwwMDBcXDE0MlxcMDAwXFwxNzFcXDAwMFxcMTQyXFwwMDBcXDEyNlxcMDAwXFwwODBcXDAwMFxcXG5cXDA4MFxcMDAwXFwwODBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwwMDFcXDAwMVxcMDgwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDA4MFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwwODBcXDAwMFxcMTI1XFwwMDBcXDA4MFxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTQzXFwwMDBcXDAxOFxcMDAxXFwxNDNcXDAwMFxcMDE5XFwwMDFcXDEyNVxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNVxcMDAwXFwwMDJcXDAwMVxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMDAzXFwwMDFcXDEyNVxcMDAwXFwwMDlcXDAwMFxcXG5cXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNVxcMDAwXFwxMjVcXDAwMFxcMjQwXFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTY4XFwwMDBcXDAxMFxcMDAwXFwwMjBcXDAwMVxcMDExXFwwMDBcXDE2OVxcMDAwXFwxNzBcXDAwMFxcXG5cXDEyMlxcMDAwXFwxMjNcXDAwMFxcMTcxXFwwMDBcXDAyMlxcMDAxXFwxNDlcXDAwMFxcMjIwXFwwMDBcXDIyMVxcMDAwXFwxMjhcXDAwMFxcXG5cXDA5MlxcMDAwXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTE3XFwwMDBcXDA5MlxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNVxcMDAwXFwwOTJcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMDkyXFwwMDBcXDEyN1xcMDAwXFwwOTJcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwxMjdcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMjdcXDAwMFxcMDg4XFwwMDFcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDE3NVxcMDAwXFwxMjdcXDAwMFxcXG5cXDE4NVxcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDA3M1xcMDAxXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDA1NlxcMDAwXFwwNzRcXDAwMVxcMDUyXFwwMDFcXDA1NFxcMDAxXFwxNjhcXDAwMFxcXG5cXDA0MFxcMDAxXFwxODBcXDAwMFxcMDMyXFwwMDFcXDE2OVxcMDAwXFwxNzBcXDAwMFxcMTA2XFwwMDFcXDA0MVxcMDAxXFwxNzFcXDAwMFxcXG5cXDA1N1xcMDAwXFwwNTFcXDAwMVxcMTY4XFwwMDBcXDA4MFxcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDE2OVxcMDAwXFwxNzBcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTcxXFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcXG5cXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDA3M1xcMDAxXFwxMjNcXDAwMFxcXG5cXDIxN1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwMDdcXDAwMFxcMDQyXFwwMDFcXDA1OVxcMDAxXFwwNzRcXDAwMVxcXG5cXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDE4NlxcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwNjBcXDAwMFxcXG5cXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDA2MFxcMDAxXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwNjFcXDAwMVxcXG5cXDEyM1xcMDAwXFwwMDlcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcXG5cXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwNzdcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcXG5cXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwNjJcXDAwMVxcMDEwXFwwMDBcXDE2OFxcMDAwXFwwMTFcXDAwMFxcXG5cXDA2OVxcMDAxXFwwNzFcXDAwMVxcMTY5XFwwMDBcXDE3MFxcMDAwXFwxNjhcXDAwMFxcMDc5XFwwMDFcXDE3MVxcMDAwXFwwODRcXDAwMVxcXG5cXDE2OVxcMDAwXFwxNzBcXDAwMFxcMDg1XFwwMDFcXDA4NlxcMDAxXFwxNzFcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwMTJcXDAwMFxcXG5cXDA4N1xcMDAxXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEzMVxcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjZcXDAwMFxcXG5cXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwwMzJcXDAwMFxcXG5cXDEyNlxcMDAwXFwwMzFcXDAwMVxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMDkyXFwwMDFcXDA5M1xcMDAxXFwwOTRcXDAwMVxcXG5cXDA5N1xcMDAxXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMDZcXDAwMVxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcXG5cXDExMlxcMDAxXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjNcXDAwMVxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcXG5cXDAzOVxcMDAwXFwxMjZcXDAwMFxcMDA5XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcXG5cXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMDc1XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcXG5cXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTc3XFwwMDBcXDAxMFxcMDAwXFwxMTZcXDAwMVxcXG5cXDAxMVxcMDAwXFwxNzlcXDAwMFxcMTI0XFwwMDFcXDEyOVxcMDAxXFwwNzZcXDAwMFxcMTgwXFwwMDBcXDEzMVxcMDAxXFwxODFcXDAwMFxcXG5cXDEzMlxcMDAxXFwwNjBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwxNDlcXDAwMFxcMTU2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcXG5cXDE1OVxcMDAwXFwwNjBcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxNThcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcXG5cXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDA3OFxcMDAwXFwxMjhcXDAwMFxcMTQ5XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDE2MVxcMDAwXFwxNDZcXDAwMFxcXG5cXDExNFxcMDAwXFwwODdcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTEwXFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDEyOFxcMDAwXFwwMTJcXDAwMVxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMDczXFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDEyOFxcMDAwXFwxOTlcXDAwMFxcMTI4XFwwMDBcXDA4MlxcMDAxXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDIzM1xcMDAwXFwxMjhcXDAwMFxcXG5cXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDE2N1xcMDAwXFwwOTNcXDAwMFxcXG5cXDIwN1xcMDAwXFwwNTVcXDAwMVxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwNTdcXDAwMVxcMDQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcXG5cXDEyOFxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDEyOFxcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA1NlxcMDAwXFwwODBcXDAwMFxcMDU2XFwwMDBcXDA4NFxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcXG5cXDA4MFxcMDAwXFwxMDZcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwMDZcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwODZcXDAwMFxcXG5cXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG5cXDA4MFxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDc3XFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA1NlxcMDAwXFwxNDdcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzN1xcMDAwXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwwNzdcXDAwMFxcXG5cXDA3N1xcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTNcXDAwMFxcMDE0XFwwMDBcXDAxNVxcMDAwXFwwMTZcXDAwMFxcXG5cXDAxN1xcMDAwXFwwMThcXDAwMFxcMDE5XFwwMDBcXDAyMFxcMDAwXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDEzMVxcMDAwXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcXG5cXDA4MFxcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDAyMVxcMDAwXFwwMzNcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAwXFwxMzFcXDAwMFxcXG5cXDEzMVxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzNFxcMDAwXFwwMzVcXDAwMFxcXG5cXDAzNlxcMDAwXFwwMzdcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAwMFxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMDAwXFwxMzFcXDAwMFxcXG5cXDEzMVxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXDA3NVxcMDAwXFwxMzFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NVxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDEzMVxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDEzMVxcMDAwXFwwMzlcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFwwNzZcXDAwMFxcXG5cXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc1XFwwMDBcXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwxNDZcXDAwMFxcXG5cXDE0NlxcMDAwXFwxNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE0NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3M1xcMDAwXFwxNDZcXDAwMFxcMDc1XFwwMDBcXDE0NlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOTNcXDAwMFxcXG5cXDA5M1xcMDAwXFwwOTNcXDAwMFxcMTQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkzXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcXG5cXDA5M1xcMDAwXFwxNDZcXDAwMFxcMTQ2XFwwMDBcXDA0MFxcMDAwXFwxNDZcXDAwMFxcMTQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwOTNcXDAwMFxcMDAwXFwwMDBcXDA5M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDQwXFwwMDBcXDAwMFxcMDAwXFwwNDBcXDAwMFxcMTc2XFwwMDBcXDE3N1xcMDAwXFwxNzhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc5XFwwMDBcXDA4NFxcMDAwXFwwODRcXDAwMFxcMDg0XFwwMDBcXDE4MFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE4MVxcMDAwXFwwODRcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA2XFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwODZcXDAwMFxcXG5cXDA4NlxcMDAwXFwwODZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4NlxcMDAwXFwwMDBcXDAwMFxcMTA2XFwwMDBcXDEwNlxcMDAwXFwxMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAwXFwwODZcXDAwMFxcMTA2XFwwMDBcXDA4NlxcMDAwXFwwNzRcXDAwMFxcXG5cXDA4NFxcMDAwXFwwODRcXDAwMFxcMTQ3XFwwMDBcXDE0N1xcMDAwXFwwMDBcXDAwMFxcMTA2XFwwMDBcXDAwMFxcMDAwXFwxNDdcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMDZcXDAwMFxcMTA2XFwwMDBcXDAwMFxcMDAwXFwwMzdcXDAwMFxcMTA2XFwwMDBcXDA5MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA5OVxcMDAwXFwwMzdcXDAwMFxcMTA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDE0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAzN1xcMDAwXFwwMDBcXDAwMFxcMDM3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI5XFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwxNDdcXDAwMFxcMjI2XFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDE0N1xcMDAwXFwxNDdcXDAwMFxcMDAwXFwwMDBcXDE1MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwODBcXDAwMFxcXG5cXDA1MFxcMDAwXFwwMDBcXDAwMFxcMTc2XFwwMDBcXDE3N1xcMDAwXFwxNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzlcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4MFxcMDAwXFwwMDBcXDAwMFxcMTgxXFwwMDBcXDAwMFxcMDAwXFwwNTBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcXG5cXDE5NlxcMDAwXFwxMzdcXDAwMFxcMTM3XFwwMDBcXDAwMFxcMDAwXFwxMzdcXDAwMFxcMTM3XFwwMDBcXDEzN1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDE1NFxcMDAwXFwxNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMFxcXG5cXDE1OVxcMDAwXFwxNjBcXDAwMFxcMTYxXFwwMDBcXDE2MlxcMDAwXFwxNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI5XFwwMDBcXDIzMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzNFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA5MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcXG5cXDA1NFxcMDAwXFwwNTVcXDAwMFxcMjQzXFwwMDBcXDI0NFxcMDAwXFwyNDVcXDAwMFxcMjQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyNDlcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcXG5cXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDZcXDAwMVxcXG5cXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcXG5cXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MFxcMDAwXFwyNTFcXDAwMFxcMjUyXFwwMDBcXDI1M1xcMDAwXFwyNTRcXDAwMFxcXG5cXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMVxcMDE2XFwwMDFcXDIwOVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkxXFwwMDBcXDEzN1xcMDAwXFwwMDBcXDAwMFxcMTM3XFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcXG5cXDA1NVxcMDAwXFwwMDBcXDAwMFxcMTM3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMVxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcXG5cXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDEwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwOThcXDAwMFxcXG5cXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcXG5cXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcXG5cXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcXG5cXDA3N1xcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcXG5cXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNTdcXDAwMFxcXG5cXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcXG5cXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcXG5cXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwxOTVcXDAwMFxcXG5cXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcXG5cXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcXG5cXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcXG5cXDA3N1xcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcXG5cXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwyMDBcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwxMzVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcXG5cXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcXG5cXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcXG5cXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcXG5cXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcXG5cXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcXG5cXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcXG5cXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjZcXDAwMFxcXG5cXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDAyNlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcXG5cXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjZcXDAwMFxcXG5cXDAyNlxcMDAwXFwwNTZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcXG5cXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcXG5cXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcXG5cXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcXG5cXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcXG5cXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcXG5cXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDEzNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcXG5cXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwNThcXDAwMFxcXG5cXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcXG5cXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXCJcblxubGV0IHl5Y2hlY2sgPSBcIlxcMDA5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDkwXFwwMDBcXDAyNlxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXFxuXFwwMDBcXDAwMFxcMTMzXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMVxcMDM4XFwwMDBcXDAzOVxcMDAwXFwxMzhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDEwXFwwMDFcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMjRcXDAwMFxcMDI1XFwwMDBcXFxuXFwwMjFcXDAwMVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMzdcXDAwMFxcMTE3XFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXFxuXFwwMjVcXDAwMVxcMDAwXFwwMDBcXDAwNFxcMDAxXFwwNzdcXDAwMVxcMDEwXFwwMDFcXDAwMFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXFxuXFwwMzNcXDAwMFxcMDgxXFwwMDFcXDA5OVxcMDAwXFwwMDVcXDAwMVxcMDQ1XFwwMDFcXDEwMlxcMDAwXFwwMDBcXDAwMFxcMDA2XFwwMDFcXFxuXFwwNDNcXDAwMVxcMDAxXFwwMDFcXDAyN1xcMDAxXFwwMjVcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDc5XFwwMDFcXFxuXFwwNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTJcXDAwMFxcMDcyXFwwMDFcXDA1NVxcMDAxXFwwMDBcXDAwMFxcMDA1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDFcXFxuXFwxMjlcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAwXFwwNTVcXDAwMVxcMDI3XFwwMDFcXDA3NFxcMDAxXFwwMTFcXDAwMVxcMTM2XFwwMDBcXFxuXFwwMDVcXDAwMVxcMDQzXFwwMDFcXDAwMFxcMDAwXFwwMjdcXDAwMVxcMDc4XFwwMDFcXDA3OFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXFxuXFwwMjVcXDAwMVxcMDc4XFwwMDFcXDAyN1xcMDAxXFwwMDNcXDAwMVxcMDU1XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDY1XFwwMDFcXFxuXFwwMDBcXDAwMFxcMDc2XFwwMDFcXDA3OFxcMDAxXFwwNzZcXDAwMVxcMTI0XFwwMDBcXDIyNVxcMDAwXFwwOTBcXDAwMFxcMjI3XFwwMDBcXFxuXFwwNzhcXDAwMVxcMDYwXFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDU4XFwwMDFcXFxuXFwxMTRcXDAwMFxcMDcyXFwwMDFcXDEyNFxcMDAwXFwxMjVcXDAwMFxcMTU2XFwwMDBcXDE1N1xcMDAwXFwxMDZcXDAwMFxcMDQ0XFwwMDFcXFxuXFwwNzJcXDAwMVxcMTA5XFwwMDBcXDA1OFxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA3NlxcMDAxXFwwMDBcXDAwMFxcMDUyXFwwMDFcXFxuXFwwMDNcXDAwMVxcMDc2XFwwMDFcXDAwNlxcMDAxXFwwMDZcXDAwMVxcMDc2XFwwMDFcXDE5MFxcMDAwXFwwMTBcXDAwMVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMDAwXFwwMDFcXDAwMlxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDA3N1xcMDAxXFwwNzlcXDAwMVxcMDkwXFwwMDFcXFxuXFwwMjdcXDAwMVxcMDA1XFwwMDFcXDAwOVxcMDAxXFwwMDNcXDAwMVxcMDA1XFwwMDFcXDAwMFxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDBcXFxuXFwwNzdcXDAwMVxcMTAwXFwwMDFcXDAwNVxcMDAxXFwwMzBcXDAwMVxcMDc3XFwwMDFcXDE1MFxcMDAwXFwwMTVcXDAwMVxcMDE2XFwwMDFcXFxuXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMTAwXFwwMDFcXDAyMlxcMDAxXFwxMTNcXDAwMVxcMDM5XFwwMDFcXFxuXFwwNDRcXDAwMVxcMDAyXFwwMDFcXDA4MVxcMDAxXFwwMzBcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMzBcXDAwMVxcMTIyXFwwMDFcXFxuXFwwNTJcXDAwMVxcMTEzXFwwMDFcXDE2NlxcMDAwXFwwMDZcXDAwMVxcMDU1XFwwMDFcXDEyOFxcMDAxXFwwNzdcXDAwMVxcMjA3XFwwMDBcXFxuXFwwNzlcXDAwMVxcMTczXFwwMDBcXDE3NFxcMDAwXFwyMTFcXDAwMFxcMDE5XFwwMDFcXDA2NFxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXFxuXFwyMzFcXDAwMFxcMDc2XFwwMDFcXDA1NVxcMDAxXFwwMDZcXDAwMVxcMDU1XFwwMDFcXDIwN1xcMDAwXFwyMjRcXDAwMFxcMDMyXFwwMDFcXFxuXFwyMjZcXDAwMFxcMDc3XFwwMDFcXDIwNFxcMDAwXFwwNjRcXDAwMVxcMDc2XFwwMDFcXDA2NFxcMDAxXFwwMDVcXDAwMVxcMjAwXFwwMDBcXFxuXFwwODBcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXFxuXFwwMDVcXDAwMVxcMDQ0XFwwMDFcXDA3NVxcMDAxXFwwMjJcXDAwMVxcMDc3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDQ4XFwwMDFcXFxuXFwwNDlcXDAwMVxcMDUyXFwwMDFcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDAxMVxcMDAxXFwwMDNcXDAwMVxcMDMwXFwwMDFcXFxuXFwwMDBcXDAwMFxcMDA2XFwwMDFcXDAzN1xcMDAxXFwwMzRcXDAwMVxcMDI1XFwwMDFcXDAzNlxcMDAxXFwwMjdcXDAwMVxcMDAzXFwwMDFcXFxuXFwwODFcXDAwMVxcMDcyXFwwMDFcXDAwNlxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDA0NFxcMDAxXFwwMTRcXDAwMVxcMDMxXFwwMDFcXFxuXFwwMDVcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA1MlxcMDAxXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXFxuXFwwMDZcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXFxuXFwwMDhcXDAwMVxcMDAxXFwwMDFcXDAxMFxcMDAxXFwwMDNcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDA4XFwwMDFcXFxuXFwwMDFcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAyMVxcMDAxXFwwNzdcXDAwMVxcMDIzXFwwMDFcXFxuXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXFxuXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAwMVxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXFxuXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDAxXFwwMDFcXFxuXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDAxXFwwMDFcXFxuXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDAwMVxcMDAxXFwwMDFcXDAwMVxcMDAzXFwwMDFcXDAwMVxcMDAxXFwwMDFcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDc3XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDAxXFwwMDFcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDFcXFxuXFwwNzJcXDAwMVxcMDczXFwwMDFcXDAwMVxcMDAxXFwwMDNcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMDZcXDAwMVxcMDc5XFwwMDFcXFxuXFwwODBcXDAwMVxcMDgxXFwwMDFcXDA5MlxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXFxuXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwOFxcMDAxXFwwNzlcXDAwMVxcMDEwXFwwMDFcXDA3MlxcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXFxuXFwwMTRcXDAwMVxcMDAxXFwwMDFcXDAzNFxcMDAxXFwwMDRcXDAwMVxcMDM2XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDIxXFwwMDFcXFxuXFwwMTBcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXFxuXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDA2XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXFxuXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMDQ5XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwNTJcXDAwMVxcMDUzXFwwMDFcXFxuXFwwNTRcXDAwMVxcMDIxXFwwMDFcXDA0NFxcMDAxXFwwMjNcXDAwMVxcMDQ0XFwwMDFcXDA0M1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MlxcMDAxXFwwMDZcXDAwMVxcMDUyXFwwMDFcXDAwOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDA3MlxcMDAxXFwwNzNcXDAwMVxcMDc3XFwwMDFcXDAwNlxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXFxuXFwwMDlcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwODFcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXFxuXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMDIxXFwwMDFcXDAxMFxcMDAxXFwwMjNcXDAwMVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAwNlxcMDAxXFwwMDVcXDAwMVxcMDA4XFwwMDFcXDAwN1xcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXFxuXFwwMjFcXDAwMVxcMDI1XFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXFxuXFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDA3N1xcMDAxXFwwMzVcXDAwMVxcMDA1XFwwMDFcXFxuXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXFxuXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAwNVxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDUyXFwwMDFcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA0NFxcMDAxXFwwMjVcXDAwMVxcMDAzXFwwMDFcXDAyN1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1MlxcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwNzJcXDAwMVxcMDczXFwwMDFcXDA0M1xcMDAxXFwwMDZcXDAwMVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMDA5XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDgxXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXFxuXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA4XFwwMDFcXDAyMVxcMDAxXFwwMTBcXDAwMVxcMDIzXFwwMDFcXFxuXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDE5XFwwMDFcXFxuXFwwMjBcXDAwMVxcMDIxXFwwMDFcXDAzMFxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXFxuXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwNzJcXDAwMVxcMDM1XFwwMDFcXFxuXFwwMTBcXDAwMVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXFxuXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNTVcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXFxuXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwMDBcXDAwMFxcMDY0XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDQ0XFwwMDFcXFxuXFwwMDZcXDAwMVxcMDM0XFwwMDFcXDAyNVxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAzMFxcMDAxXFwwMDNcXDAwMVxcMDUyXFwwMDFcXFxuXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDA0NFxcMDAxXFwwMDBcXDAwMFxcMDcyXFwwMDFcXDA3M1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA1MlxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDA4MVxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXFxuXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwOFxcMDAxXFwwNTVcXDAwMVxcMDEwXFwwMDFcXFxuXFwwNzdcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDAwXFwwMDBcXDAwNlxcMDAxXFwwMDZcXDAwMVxcMDY0XFwwMDFcXFxuXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAyMVxcMDAxXFwwNzdcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwwMDNcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDQ4XFwwMDFcXFxuXFwwMzVcXDAwMVxcMDA1XFwwMDFcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXFxuXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDAwXFwwMDBcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDUwXFwwMDFcXFxuXFwwNTFcXDAwMVxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDA2XFwwMDFcXDAyNVxcMDAxXFwwNDRcXDAwMVxcMDI3XFwwMDFcXFxuXFwwNDRcXDAwMVxcMDI1XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDQ0XFwwMDFcXDAyM1xcMDAxXFwwNTJcXDAwMVxcMDA2XFwwMDFcXFxuXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwOFxcMDAxXFwwNDRcXDAwMVxcMDUyXFwwMDFcXDA3MlxcMDAxXFwwNzNcXDAwMVxcMDQzXFwwMDFcXFxuXFwwMjVcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwODFcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMTBcXDAwMVxcMDczXFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAwM1xcMDAxXFwwNzZcXDAwMVxcMDc2XFwwMDFcXFxuXFwwNDRcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMjFcXDAwMVxcMDMwXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXFxuXFwwNDRcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMDA0XFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXFxuXFwwMDBcXDAwMFxcMDM1XFwwMDFcXDAwNVxcMDAxXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXFxuXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAwMFxcMDAwXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDAyNlxcMDAxXFwwMjVcXDAwMVxcMDc2XFwwMDFcXFxuXFwwMjdcXDAwMVxcMDMwXFwwMDFcXDA3NlxcMDAxXFwwNzZcXDAwMVxcMDAwXFwwMDBcXDAzNFxcMDAxXFwwNzdcXDAwMVxcMDM2XFwwMDFcXFxuXFwwNzZcXDAwMVxcMDQ5XFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDc3XFwwMDFcXDAwNlxcMDAxXFwwNzJcXDAwMVxcMDczXFwwMDFcXFxuXFwwMDZcXDAwMVxcMDQ4XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDA2XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDgxXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA4XFwwMDFcXFxuXFwwMDBcXDAwMFxcMDEwXFwwMDFcXDA3N1xcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMjFcXDAwMFxcMDA4XFwwMDBcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDIxXFwwMDFcXDAxOFxcMDAwXFwwMjNcXDAwMVxcMDI0XFwwMDFcXFxuXFwwMjVcXDAwMVxcMjAyXFwwMDBcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDAwMFxcMDAwXFwwMzFcXDAwMVxcMDMyXFwwMDFcXFxuXFwwMzNcXDAwMVxcMTA3XFwwMDBcXDAzNVxcMDAxXFwwNDdcXDAwMVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXFxuXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwxNDdcXDAwMFxcMDQ4XFwwMDFcXFxuXFwwNDlcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNzFcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMThcXDAwMFxcMDIwXFwwMDFcXDA0MVxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDcyXFwwMDFcXFxuXFwwNzNcXDAwMVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDgwXFwwMDFcXFxuXFwwODFcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDZcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMjFcXDAwMVxcMDA2XFwwMDFcXDAyM1xcMDAxXFwwMDBcXDAwMFxcMDA5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAxXFwyNTVcXDI1NVxcMDIzXFwwMDFcXFxuXFwwMjFcXDAwMVxcMDAwXFwwMDBcXDAyM1xcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMDI3XFwwMDFcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDFcXDAwMVxcMDAxXFwwMjNcXDAwMVxcMjU1XFwyNTVcXFxuXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMDgxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDE5XFwwMDFcXFxuXFwwMjBcXDAwMVxcMDgxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXFxuXFwwNjBcXDAwMVxcMDYxXFwwMDFcXDA2MlxcMDAxXFwwNjNcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMjU1XFwyNTVcXDAxMFxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDFcXFxuXFwwMDBcXDAwMFxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNzlcXDAwMVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwwMTlcXDAwMVxcMDIwXFwwMDFcXFxuXFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMVxcMDE2XFwwMDFcXFxuXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMDQ0XFwwMDFcXFxuXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDI1NVxcMjU1XFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMDUyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMjU1XFwyNTVcXDAyMVxcMDAxXFwyNTVcXDI1NVxcMDIzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAwNlxcMDAxXFwwNzJcXDAwMVxcMDczXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzdcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwNzFcXDAwMVxcMDE5XFwwMDFcXFxuXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAxXFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDlcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMDIxXFwwMDFcXDA3MlxcMDAxXFwwMjNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcyXFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXFxuXFwwMDlcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwMDZcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcMjU1XFwyNTVcXFxuXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDAyMVxcMDAxXFwyNTVcXDI1NVxcMDIzXFwwMDFcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMzRcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzZcXDAwMVxcMDA2XFwwMDFcXDAwMVxcMDAxXFwyNTVcXDI1NVxcMDA5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFwyNTVcXDI1NVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDlcXDAwMVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMDIxXFwwMDFcXDAzNlxcMDAxXFwwMjNcXDAwMVxcMDQ2XFwwMDFcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwyNTVcXDI1NVxcMDA2XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMDAxXFwwMDFcXDA1MlxcMDAxXFwwMTJcXDAwMFxcMjU1XFwyNTVcXFxuXFwwMTRcXDAwMFxcMDA2XFwwMDFcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMjNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMzZcXDAwMFxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDQzXFwwMDFcXDAwNFxcMDAxXFwwMDZcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDA5XFwwMDFcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwwNTJcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAyMVxcMDAxXFwyNTVcXDI1NVxcMDIzXFwwMDFcXFxuXFwwMDZcXDAwMVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjU1XFwyNTVcXDAzNlxcMDAxXFwyNTVcXDI1NVxcMDIxXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDIzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDkwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTAxXFwwMDBcXFxuXFwxMDJcXDAwMFxcMDM4XFwwMDBcXDAzOVxcMDAwXFwyNTVcXDI1NVxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTE3XFwwMDBcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyMFxcMDAwXFwwNTZcXDAwMFxcMDU3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYwXFwwMDBcXFxuXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDA2M1xcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwxMzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzOVxcMDAwXFwxNDBcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDhcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMTcwXFwwMDBcXDE3MVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMTc1XFwwMDBcXDI1NVxcMjU1XFwwMjRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjdcXDAwMVxcMDI4XFwwMDFcXFxuXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMTg5XFwwMDBcXFxuXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwODBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNzZcXDAwMFxcMTc3XFwwMDBcXDE3OFxcMDAwXFwxNzlcXDAwMFxcMTgwXFwwMDBcXFxuXFwxODFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMlxcMDAxXFwyMjRcXDAwMFxcMjU1XFwyNTVcXDIyNlxcMDAwXFwwMTJcXDAwMVxcMDEzXFwwMDFcXFxuXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDIzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNFxcMDAxXFwyNTVcXDI1NVxcMDUwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXFxuXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXFxuXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXFxuXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXFxuXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXFxuXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXFxuXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXFxuXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXFxuXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXFxuXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXFxuXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXFxuXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXFxuXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXFxuXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXFxuXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDE5XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDgxXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDI0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXFxuXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwwMDdcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXFxuXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXFxuXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXFxuXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXFxuXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXFxuXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXFxuXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXFxuXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXFxuXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXFxuXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXFxuXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXFxuXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXFxuXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXFxuXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwyNTVcXDI1NVxcMDI4XFwwMDFcXFxuXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwODBcXDAwMVwiXG5cbmxldCB5eW5hbWVzX2NvbnN0ID0gXCJcXFxuICBFT0ZcXDAwMFxcXG4gIE5FV0xJTkVcXDAwMFxcXG4gIFNFTUlDT0xPTlxcMDAwXFxcbiAgQ09NTUFcXDAwMFxcXG4gIERPVFxcMDAwXFxcbiAgT1BfUEFSXFwwMDBcXFxuICBDTF9QQVJcXDAwMFxcXG4gIE9QX0NVUlxcMDAwXFxcbiAgQ0xfQ1VSXFwwMDBcXFxuICBBVFxcMDAwXFxcbiAgVFlQRVxcMDAwXFxcbiAgTEFSXFwwMDBcXFxuICBDUFVUSU1FXFwwMDBcXFxuICBFTUFYXFwwMDBcXFxuICBUTUFYXFwwMDBcXFxuICBQTE9URU5UUllcXDAwMFxcXG4gIERFTEVURVxcMDAwXFxcbiAgSU5UUk9cXDAwMFxcXG4gIFRSQUNLXFwwMDBcXFxuICBET1xcMDAwXFxcbiAgU0VUXFwwMDBcXFxuICBSRVBFQVRcXDAwMFxcXG4gIFNQRUNJRVNfT0ZcXDAwMFxcXG4gIFVOVElMXFwwMDBcXFxuICBMT0dcXDAwMFxcXG4gIFBMVVNcXDAwMFxcXG4gIE1VTFRcXDAwMFxcXG4gIE1JTlVTXFwwMDBcXFxuICBNQVhcXDAwMFxcXG4gIE1JTlxcMDAwXFxcbiAgRElWXFwwMDBcXFxuICBTSU5VU1xcMDAwXFxcbiAgQ09TSU5VU1xcMDAwXFxcbiAgVEFOXFwwMDBcXFxuICBQT1dcXDAwMFxcXG4gIEFCU1xcMDAwXFxcbiAgTU9EVUxPXFwwMDBcXFxuICBTUVJUXFwwMDBcXFxuICBFWFBPTkVOVFxcMDAwXFxcbiAgSU5GSU5JVFlcXDAwMFxcXG4gIFRJTUVcXDAwMFxcXG4gIEVWRU5UXFwwMDBcXFxuICBOVUxMX0VWRU5UXFwwMDBcXFxuICBQSVBFXFwwMDBcXFxuICBFUVVBTFxcMDAwXFxcbiAgQU5EXFwwMDBcXFxuICBPUlxcMDAwXFxcbiAgTk9UXFwwMDBcXFxuICBHUkVBVEVSXFwwMDBcXFxuICBTTUFMTEVSXFwwMDBcXFxuICBUUlVFXFwwMDBcXFxuICBGQUxTRVxcMDAwXFxcbiAgRElGRlxcMDAwXFxcbiAgS0FQUEFfUkFSXFwwMDBcXFxuICBLQVBQQV9MUkFSXFwwMDBcXFxuICBLQVBQQV9MTktcXDAwMFxcXG4gIFNJR05BVFVSRVxcMDAwXFxcbiAgSU5JVFxcMDAwXFxcbiAgTEVUXFwwMDBcXFxuICBQTE9UXFwwMDBcXFxuICBQRVJUXFwwMDBcXFxuICBPQlNcXDAwMFxcXG4gIFRPS0VOXFwwMDBcXFxuICBDT05GSUdcXDAwMFxcXG4gIEtBUFBBX1dMRFxcMDAwXFxcbiAgS0FQUEFfU0VNSVxcMDAwXFxcbiAgRkxVWFxcMDAwXFxcbiAgQVNTSUdOXFwwMDBcXFxuICBQUklOVEZcXDAwMFxcXG4gIFNUT1BcXDAwMFxcXG4gIFNOQVBTSE9UXFwwMDBcXFxuICBSVU5cXDAwMFxcXG4gIFRIRU5cXDAwMFxcXG4gIEVMU0VcXDAwMFxcXG4gIEFMQVJNXFwwMDBcXFxuICBBUFBMWVxcMDAwXFxcbiAgXCJcblxubGV0IHl5bmFtZXNfYmxvY2sgPSBcIlxcXG4gIElOVFxcMDAwXFxcbiAgSURcXDAwMFxcXG4gIEtBUFBBX01SS1xcMDAwXFxcbiAgTEFCRUxcXDAwMFxcXG4gIEZMT0FUXFwwMDBcXFxuICBTVFJJTkdcXDAwMFxcXG4gIFwiXG5cbmxldCB5eWFjdCA9IFt8XG4gIChmdW4gXyAtPiBmYWlsd2l0aCBcInBhcnNlclwiKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAxMDc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25ld2xpbmUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgKGZ1biBjIC0+IGMpXG4jIDEwODEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbmV3bGluZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25ld2xpbmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgIChfMSlcbiMgMTA4OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3J1bGVfZXhwcmVzc2lvbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25ld2xpbmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgIChsZXQgb3V0ID0gKFNvbWUgKF8xLCByaHNfcG9zIDEpLF8yKSBpblxuXHRmdW4gYyAtPiBsZXQgciA9IF8zIGMgaW4ge3Igd2l0aCBBc3QucnVsZXMgPSBvdXQ6OnIuQXN0LnJ1bGVzfSlcbiMgMTA5OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdydWxlX2V4cHJlc3Npb24pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduZXdsaW5lKSBpblxuICAgIE9iai5yZXByKFxuIyA2NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAoZnVuIGMgLT4gbGV0IHIgPSBfMiBjIGluIHtyIHdpdGggQXN0LnJ1bGVzID0gKE5vbmUsXzEpOjpyLkFzdC5ydWxlc30pXG4jIDExMDYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25ld2xpbmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgIChsZXQgb3V0ID0gKChfMSxyaHNfcG9zIDEpLF8zKSBpblxuXHRmdW4gYyAtPiBsZXQgciA9IF80IGMgaW4ge3Igd2l0aCBBc3QudmFyaWFibGVzID0gb3V0OjpyLkFzdC52YXJpYWJsZXN9KVxuIyAxMTE2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2luc3RydWN0aW9uKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbmV3bGluZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIGZ1biBjIC0+IGxldCByID0gXzIgYyBpblxuXHRcdCAgICAgIG1hdGNoIF8xIHdpdGhcblx0XHQgICAgICB8IEFzdC5SVUxFIHJ1IC0+XG5cdFx0XHQge3Igd2l0aCBBc3QucnVsZXMgPSBydTo6ci5Bc3QucnVsZXN9XG5cdFx0ICAgICAgfCBBc3QuU0lHIGFnIC0+XG5cdFx0XHQge3Igd2l0aCBBc3Quc2lnbmF0dXJlcz1hZzo6ci5Bc3Quc2lnbmF0dXJlc31cblx0XHQgICAgICB8IEFzdC5UT0tFTlNJRyAoc3RyX3BvcykgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC50b2tlbnM9c3RyX3Bvczo6ci5Bc3QudG9rZW5zfVxuXHRcdCAgICAgIHwgQXN0LlZPTFNJRyAodm9sX3R5cGUsdm9sLHZvbF9wYXJhbSkgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC52b2x1bWVzPSh2b2xfdHlwZSx2b2wsdm9sX3BhcmFtKTo6ci5Bc3Qudm9sdW1lc31cblx0XHQgICAgICB8IEFzdC5JTklUIChhbGcsaW5pdF90KSAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LmluaXQ9KGFsZyxpbml0X3QpOjpyLkFzdC5pbml0fVxuXHRcdCAgICAgIHwgQXN0LkRFQ0xBUkUgdmFyIC0+XG5cdFx0XHQge3Igd2l0aCBBc3QudmFyaWFibGVzID0gdmFyOjpyLkFzdC52YXJpYWJsZXN9XG5cdFx0ICAgICAgfCBBc3QuT0JTICgobGJsLHBvcyksXyBhcyB2YXIpIC0+XG5cdFx0XHQgKCpmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgc2hvcnRjdXQgZm9yICV2YXIgKyAlcGxvdCopXG5cdFx0XHQgICB7ciB3aXRoXG5cdFx0XHQgICAgIEFzdC52YXJpYWJsZXMgPSB2YXI6OnIuQXN0LnZhcmlhYmxlcztcblx0XHRcdCAgICAgQXN0Lm9ic2VydmFibGVzID0gKEFsZ19leHByLkFMR19WQVIgbGJsLHBvcylcblx0XHRcdFx0XHRcdCA6OnIuQXN0Lm9ic2VydmFibGVzfVxuXHRcdCAgICAgIHwgQXN0LlBMT1QgZXhwciAtPlxuXHRcdFx0IHtyIHdpdGggQXN0Lm9ic2VydmFibGVzID0gZXhwcjo6ci5Bc3Qub2JzZXJ2YWJsZXN9XG5cdFx0ICAgICAgfCBBc3QuUEVSVCAoKGFsYXJtLHByZSxlZmZlY3Qsb3B0KSxwb3MpIC0+XG5cdFx0XHQge3Igd2l0aFxuXHRcdFx0ICBBc3QucGVydHVyYmF0aW9ucyA9XG5cdFx0XHQgICAoKGFsYXJtLHByZSxlZmZlY3Qsb3B0KSxwb3MpOjpyLkFzdC5wZXJ0dXJiYXRpb25zfVxuXHRcdCAgICAgIHwgQXN0LkNPTkZJRyAocGFyYW1fbmFtZSx2YWx1ZV9saXN0KSAtPlxuXHRcdFx0IHtyIHdpdGhcblx0XHRcdCAgQXN0LmNvbmZpZ3VyYXRpb25zID0gKHBhcmFtX25hbWUsdmFsdWVfbGlzdCk6OnIuQXN0LmNvbmZpZ3VyYXRpb25zfVxuXHRcdCAgKVxuIyAxMTUzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTAwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyBcIlN5bnRheCBlcnJvclwiKSkpXG4jIDExNTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnRfZXhwcmVzc2lvbl9zaWcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuU0lHIF8yKVxuIyAxMTY2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgKEFzdC5UT0tFTlNJRyAoXzIscmhzX3BvcyAyKSlcbiMgMTE3MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTA2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0XHQoYWRkX3BvcyBcIk1hbGZvcm1lZCBhZ2VudCBzaWduYXR1cmUsIEkgd2FzIGV4cGVjdGluZyBzb21ldGhpbmcgb2YgdGhlIGZvcm0gJyVhZ2VudDogQSh4LHl+dX52LHopJ1wiKSkpXG4jIDExODAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbml0X2RlY2xhcmF0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyAxMDkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LklOSVQgXzIpXG4jIDExODcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDExMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAgKGFkZF9wb3MgXCJNYWxmb3JtZWQgaW5pdGlhbCBjb25kaXRpb25cIikpKVxuIyAxMTk0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDExNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuREVDTEFSRSBfMilcbiMgMTIwMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0Lk9CUyBfMilcbiMgMTIwOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKEFzdC5QTE9UIF8yKVxuIyAxMjE1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0ICAgKGFkZF9wb3MgXCJNYWxmb3JtZWQgcGxvdCBpbnN0cnVjdGlvbiwgYW4gYWxnZWJyYWljIGV4cHJlc3Npb24gaXMgZXhwZWN0ZWRcIikpKVxuIyAxMjIyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuUEVSVCAoYWRkX3BvcyBfMikpXG4jIDEyMjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhbHVlX2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEyMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKEFzdC5DT05GSUcgKChfMixyaHNfcG9zIDIpLF8zKSlcbiMgMTIzNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uX2VtcHR5X21peHR1cmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEyNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggKF8xLEFzdC5JTklUX01JWCAoXzIscmhzX3BvcyAyKSkgKVxuIyAxMjQ1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ25vbl9lbXB0eV9taXh0dXJlKSBpblxuICAgIE9iai5yZXByKFxuIyAxMjggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIChfMSxBc3QuSU5JVF9NSVggKF8zLCByaHNfcG9zIDMpKSApXG4jIDEyNTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEyOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICgoXzMsQXN0LklOSVRfVE9LIFtfMSxyaHNfcG9zIDFdKSlcbiMgMTI2MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMTMwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAoKF8xLEFzdC5JTklUX1RPSyBbXzIscmhzX3BvcyAyXSkpXG4jIDEyNjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAxMzQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAoW18xLCByaHNfcG9zIDFdKVxuIyAxMjc2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhbHVlX2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhbHVlX2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKChfMSxyaHNfcG9zIDEpOjpfMilcbiMgMTI4NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YWx1ZV9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMzkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKE5vbmUpXG4jIDEyOTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2FsYXJtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbmJyKSBpblxuICAgIE9iai5yZXByKFxuIyAxNDAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgKFNvbWUgXzIpXG4jIDEyOTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2FsYXJtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxNDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKE5vbmUpXG4jIDEzMDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX3Bvc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE0NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgKFNvbWUgXzIpXG4jIDEzMTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX3Bvc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE0NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoIFNvbWUgKGFkZF9wb3MgKEFsZ19leHByLlVOX0JPT0xfT1AgKE9wZXJhdG9yLk5PVCxfMikpKSlcbiMgMTMxNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fcG9zdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3BlcnR1cmJhdGlvbl9hbGFybSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX3Bvc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE1MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggKF8xLFNvbWUgXzIsXzQsXzUpIClcbiMgMTMyNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIChfMSxOb25lLF8zLF80KSApXG4jIDEzMzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE1NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgKCAoTm9uZSxTb21lIF8yLF80LFNvbWUgKGFkZF9wb3MgKEFsZ19leHByLlVOX0JPT0xfT1AgKE9wZXJhdG9yLk5PVCxfNikpKSkpXG4jIDEzNDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE1OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoIChfMSxTb21lIF8yLF80LE5vbmUpKVxuIyAxMzU0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNjIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzEpXG4jIDEzNjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QubW9kaWZfZXhwciBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE2NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzIpXG4jIDEzNjggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdlZmZlY3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgIChbXzFdKVxuIyAxMzc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnZWZmZWN0KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE2NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzE6Ol8zKVxuIyAxMzgzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMTcyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoQXN0LlVQREFURSAoKF8yLHJoc19wb3MgMiksXzMpKVxuIyAxMzkxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE3NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKEFzdC5VUERBVEUgKChfMixyaHNfcG9zIDIpLF8zKSlcbiMgMTM5OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xlYW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDE3NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAoQXN0LkNGTE9XTEFCRUwgKF8zLChfMixyaHNfcG9zIDIpKSlcbiMgMTQwNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbGVhbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTc4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgIChBc3QuQ0ZMT1dNSVggKF8zLChbXzJdLHJoc19wb3MgMikpKVxuIyAxNDE1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sZWFuKSBpblxuICAgIE9iai5yZXByKFxuIyAxODAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoaWYgXzMgdGhlbiBBc3QuRElOIChQcmltaXRpdmVzLlJFTEFUSVZFLF8yKSBlbHNlIEFzdC5ESU5PRkYgXzIpXG4jIDE0MjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbGVhbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTgyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKGlmIF80ICYmIF8zID0gXCJhYnNvbHV0ZVwiIHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5BQlNPTFVURSxfMilcblx0ICAgZWxzZSBpZiBfNCAmJiBfMyA9IFwicHJvYmFiaWxpdHlcIiB0aGVuXG5cdCAgICAgQXN0LkRJTiAoUHJpbWl0aXZlcy5QUk9CQUJJTElUWSxfMilcblx0ICAgZWxzZSBpZiBfNCAmJiBfMyA9IFwicmVsYXRpdmVcIiB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUsXzIpXG5cdCAgICAgZWxzZSByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0ICAgICAgIChcIkluY29ycmVjdCBESU4gZXhwcmVzc2lvblwiLHJoc19wb3MgMykpKVxuIyAxNDM3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncnVsZV9jb250ZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxODkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICggQXN0LkFQUExZKFxuXHRcdCAgIF8yLFxuXHRcdCAgICh7IEFzdC5yZXdyaXRlID0gZnN0IF8zO1xuXHRcdCAgICAgIEFzdC5iaWRpcmVjdGlvbmFsID0gZmFsc2U7XG5cdFx0ICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvO0FzdC5rX3VuPU5vbmU7XG5cdFx0ICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0scmhzX3BvcyAzKSlcblx0XHQgKVxuIyAxNDUxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uX2VtcHR5X21peHR1cmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE5NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAoIEFzdC5BUFBMWShfMixcbiAgICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgIEFzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuID0gW107XG4gICAgICAgICAgICAgICAgICBBc3QucmhzPV8zOyBBc3QuYWRkX3Rva2VuID0gW107fTtcblx0XHQgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0scmhzX3BvcyAzKSlcbiAgICAgICAgKVxuIyAxNDY2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjA2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIk1hbGZvcm1lZCBwZXJ0dXJiYXRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIGV4cGVjdGluZyAnJEFERCBhbGdfZXhwcmVzc2lvbiBrYXBwYV9leHByZXNzaW9uJ1wiKSkpXG4jIDE0NzMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25fZW1wdHlfbWl4dHVyZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMjA5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgKCBBc3QuQVBQTFkoXzIsXG4gICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgQXN0LkFycm93IHtBc3QubGhzPV8zOyBBc3Qucm1fdG9rZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgQXN0LnJocz1bXTsgQXN0LmFkZF90b2tlbiA9IFtdO307XG5cdFx0IEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LHJoc19wb3MgMykpXG4gICAgICAgKVxuIyAxNDg4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjE5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIk1hbGZvcm1lZCBwZXJ0dXJiYXRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIGV4cGVjdGluZyAnJERFTCBhbGdfZXhwcmVzc2lvbiBrYXBwYV9leHByZXNzaW9uJ1wiKSkpXG4jIDE0OTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjIyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgKFxuICAgICAgIGxldCB0ayA9IChfMSxyaHNfcG9zIDEpIGluXG4gICAgICAgIEFzdC5BUFBMWShBbGdfZXhwci5jb25zdCBOYnIub25lLFxuICAgICAgICAgICBhZGRfcG9zXG4gICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgQXN0LkVkaXRcblx0XHQge0FzdC5taXg9W107XG5cdFx0ICBBc3QuZGVsdGFfdG9rZW4gPVxuXHRcdCAgWyhBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTlVTLF8zLChBbGdfZXhwci5UT0tFTl9JRCBfMSxyaHNfcG9zIDEpKSxyaHNfcG9zIDEpLHRrXTtcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9KSlcbiAgICAgICApXG4jIDE1MTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjM2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuU05BUFNIT1QgKGZhbHNlLF8yKSlcbiMgMTUyMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyMzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoQXN0LlNUT1AgXzIpXG4jIDE1MzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAncHJpbnRfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIzOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBBc3QuUFJJTlQgKF8yLF80KSApXG4jIDE1MzggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyMzkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAoIEFzdC5QTE9URU5UUlkgKVxuIyAxNTQ0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdub25fZW1wdHlfbWl4dHVyZSkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xlYW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBBc3QuU1BFQ0lFU19PRiAoXzQsXzIsKF8zLCByaHNfcG9zIDMpKSlcbiMgMTU1MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMjQ0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgKFtQcmltaXRpdmVzLlN0cl9wZXhwciAoYWRkX3BvcyBfMSldKVxuIyAxNTYwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgIChbUHJpbWl0aXZlcy5BbGdfcGV4cHIgXzFdKVxuIyAxNTY3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmltaXRpdmVzLlN0cl9wZXhwciAoXzEsIHJoc19wb3MgMSk6Ol8zKVxuIyAxNTc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJpbWl0aXZlcy5BbGdfcGV4cHIgXzE6Ol8zKVxuIyAxNTgzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI1MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAoW10pXG4jIDE1ODkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI1MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoXzEpXG4jIDE1OTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjU0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICh0cnVlKVxuIyAxNjAyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xlYW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI1NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKGZhbHNlKVxuIyAxNjA4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xlYW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbl9lbXB0eV9taXh0dXJlKSBpblxuICAgIE9iai5yZXByKFxuIyAyNjAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoICgoXzEscmhzX3BvcyAxKSwoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXzIscmhzX3BvcyAyKSkpXG4jIDE2MTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICgoKF8xLHJoc19wb3MgMSksXzIpKVxuIyAxNjI0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjYyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAoKChfMSxyaHNfcG9zIDEpLF8yKSlcbiMgMTYzMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAyNjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgKHJhaXNlXG5cdCAgICAgICAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgIChhZGRfcG9zIChcIklsbGVnYWwgZGVmaW5pdGlvbiBvZiB2YXJpYWJsZSAnXCJeXzFeXCInXCIpKSlcblx0ICAgIClcbiMgMTY0MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjcxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzIpXG4jIDE2NDkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyNzIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgKGFkZF9wb3MgQWxnX2V4cHIuVFJVRSlcbiMgMTY1NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9ib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI3MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKGFkZF9wb3MgQWxnX2V4cHIuRkFMU0UpXG4jIDE2NjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMTY2OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9ib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI3NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQk9PTF9PUChPcGVyYXRvci5OT1QsXzIpKSlcbiMgMTY3NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI3OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLkFORCxfMSxfMykpKVxuIyAxNjgzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjc5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQk9PTF9PUChPcGVyYXRvci5PUixfMSxfMykpKVxuIyAxNjkxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI4MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuR1JFQVRFUixfMSxfMykpKVxuIyAxNjk5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuU01BTExFUixfMSxfMykpKVxuIyAxNzA3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI4NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuRVFVQUwsXzEsXzMpKSlcbiMgMTcxNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyODcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChhZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkRJRkYsXzEsXzMpKSlcbiMgMTcyMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI5MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xKVxuIyAxNzMwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLHN0cmluZykgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjkzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoW10pXG4jIDE3MzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndG9rZW5fZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3N1bV90b2tlbikgaW5cbiAgICBPYmoucmVwcihcbiMgMjk0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAoXzIpXG4jIDE3NDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndG9rZW5fZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjk2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgKGFkZF9wb3MgIFwiTWFsZm9ybWVkIHRva2VuIGV4cHJlc3Npb24sIEkgd2FzIGV4cGVjdGluZyBhXzAgdF8wICsgLi4uICsgYV9uIHRfbiwgd2hlcmUgdF9pIGFyZSB0b2tlbnMgYW5kIGFfaSBhbnkgYWxnZWJyYWljIGZvcm11bGFcIikpKVxuIyAxNzUwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Rva2VuX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDMwMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAxNzU3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMwMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgKFsoXzEsKF8yLHJoc19wb3MgMikpXSlcbiMgMTc2NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzdW1fdG9rZW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbCA9IF80IGluIChfMSwoXzIscmhzX3BvcyAyKSk6OmwpXG4jIDE3NzQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc3VtX3Rva2VuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMzA0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChbKF8xLChfMyxyaHNfcG9zIDMpKV0pXG4jIDE3ODIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc3VtX3Rva2VuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3N1bV90b2tlbikgaW5cbiAgICBPYmoucmVwcihcbiMgMzA1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbCA9IF81IGluIChfMSwoXzMscmhzX3BvcyAzKSk6OmwpXG4jIDE3OTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc3VtX3Rva2VuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhcnJvdykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd0b2tlbl9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoQXN0LkFycm93IHtBc3QubGhzPVtfMV07IEFzdC5ybV90b2tlbiA9IF8yOyBBc3QucmhzPVtfNF07IEFzdC5hZGRfdG9rZW4gPSBfNX0sXG4gICAgIF8zKVxuIyAxODAzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICd0b2tlbl9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYXJyb3cpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd0b2tlbl9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoQXN0LkFycm93IHtBc3QubGhzPVtfMV07IEFzdC5ybV90b2tlbiA9IF8yOyBBc3QucmhzPVtdOyBBc3QuYWRkX3Rva2VuID0gXzR9LFxuICAgICBfMylcbiMgMTgxNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICd0b2tlbl9leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYXJyb3cpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndG9rZW5fZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzE1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKEFzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuID0gXzE7IEFzdC5yaHM9W18zXTsgQXN0LmFkZF90b2tlbiA9IF80fSxcbiAgICAgXzIpXG4jIDE4MjUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAndG9rZW5fZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fycm93KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndG9rZW5fZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzE4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKEFzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuID0gXzE7IEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW4gPSBfM30sXG4gICAgIF8yKVxuIyAxODM1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd0b2tlbl9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIEFzdC5FZGl0IHtBc3QubWl4ID0gW18xXTsgQXN0LmRlbHRhX3Rva2VuID0gXzJ9LGZhbHNlIClcbiMgMTg0MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggQXN0LkVkaXQge0FzdC5taXggPSBbXTsgQXN0LmRlbHRhX3Rva2VuID0gXzJ9LGZhbHNlIClcbiMgMTg1MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdydWxlX2NvbnRlbnQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdiaXJhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggbGV0IChrX2RlZixrX3VuLGtfb3Asa19vcF91bikgPSBfMiBpblxuICAgICAgbGV0IHJld3JpdGUsYmlkaXJlY3Rpb25hbCA9IF8xIGluXG4gICAgICBhZGRfcG9zIHtcbiAgICAgICAgQXN0LnJld3JpdGU7QXN0LmJpZGlyZWN0aW9uYWw7XG4gICAgICAgIEFzdC5rX2RlZjsgQXN0LmtfdW47IEFzdC5rX29wOyBBc3Qua19vcF91bjtcbiAgICAgIH0gKVxuIyAxODYzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzM1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgKGZhbHNlKVxuIyAxODY5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fycm93KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzMzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgKHRydWUpXG4jIDE4NzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYXJyb3cpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM0MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgKCBOYnIuRiBpbmZpbml0eSApXG4jIDE4ODEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbmJyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBmbG9hdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzQxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoIE5ici5GIF8xIClcbiMgMTg4OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICduYnIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzQyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgKCBOYnIuSSBfMSApXG4jIDE4OTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbmJyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbmJyKSBpblxuICAgIE9iai5yZXByKFxuIyAzNDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQ09OU1QgXzEpKVxuIyAxOTAyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNDYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRU1BWF9WQVIpKSlcbiMgMTkwOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb25zdGFudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzQ3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLlRNQVhfVkFSKSkpXG4jIDE5MTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM0OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5DUFVUSU1FKSkpXG4jIDE5MjAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMzUyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlRPS0VOX0lEIChfMikpKVxuIyAxOTI3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbm9uX2VtcHR5X21peHR1cmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM1MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggYWRkX3BvcyAoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXzIpIClcbiMgMTkzNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzNTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5BTEdfVkFSIChfMSkpKVxuIyAxOTQxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM1NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkFMR19WQVIgKF8xKSkpXG4jIDE5NDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM1NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5USU1FX1ZBUikpKVxuIyAxOTU0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVWRU5UX1ZBUikpKVxuIyAxOTYwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIpKSlcbiMgMTk2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNjIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAxOTczIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnY29uc3RhbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgKF8xKVxuIyAxOTgwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFyaWFibGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgKF8xKVxuIyAxOTg3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzY2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NQVgsXzIsXzMpKSlcbiMgMTk5NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOLF8yLF8zKSkpXG4jIDIwMDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuRVhQLF8yKSkpXG4jIDIwMTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuU0lOVVMsXzIpKSlcbiMgMjAxNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzcxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkNPU0lOVVMsXzIpKSlcbiMgMjAyNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzcyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuVEFOLF8yKSkpXG4jIDIwMzEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLklOVCxfMikpKVxuIyAyMDM4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuU1FSVCxfMikpKVxuIyAyMDQ1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5MT0csXzIpKSlcbiMgMjA1MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzc5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBhZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuVU1JTlVTLF8yKSkgKVxuIyAyMDU5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21pZF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzODAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAyMDY2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21pZF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzgxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTVVMVCxfMSxfMykpKVxuIyAyMDc0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21pZF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzgyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuU1VNLF8xLF8zKSkpXG4jIDIwODIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbWlkX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzODMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLkRJVixfMSxfMykpKVxuIyAyMDkwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21pZF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzg0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTlVTLF8xLF8zKSkpXG4jIDIwOTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbWlkX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzODUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlBPVyxfMSxfMykpKVxuIyAyMTA2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21pZF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzg2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NT0RVTE8sXzEsXzMpKSlcbiMgMjExNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgIChfMSlcbiMgMjEyMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM5MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuSUYoXzEsXzMsXzUpKSlcbiMgMjEzMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3JhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM5MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAobGV0IChrMixrMSkgPSBfMiBpbiAoazIsazEsTm9uZSxOb25lKSlcbiMgMjEzNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdiaXJhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdyYXRlKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncmF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMzk0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoazIsazEpID0gXzIgaW5cblx0XHRcdCAgbGV0IChrYmFjayxrYmFjazEpID0gXzQgaW5cblx0XHRcdCAgKGsyLGsxLFNvbWUga2JhY2ssa2JhY2sxKSlcbiMgMjE0NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdiaXJhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM5NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyBcInJ1bGUgcmF0ZSBleHBlY3RlZFwiKSkpXG4jIDIxNTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYmlyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfd2l0aF9yYWRpdXMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfMSxTb21lIF8zKSlcbiMgMjE2MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfd2l0aF9yYWRpdXMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoXzEsU29tZSBfMykgKVxuIyAyMTY5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3JhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDAzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAoKF8xLE5vbmUpKVxuIyAyMTc2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3JhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfd2l0aF9yYWRpdXMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKChMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQ09OU1QgTmJyLnplcm8pLFNvbWUgXzIpKVxuIyAyMTgzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3JhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDA3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoKF8xLFNvbWUgKExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5DT05TVCBOYnIuemVybyksTm9uZSkpKVxuIyAyMTkwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3JhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQwOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyBcIm1pc3NpbmcgcnVsZSByYXRlXCIpKSlcbiMgMjE5NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQxMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgKChfMSxOb25lKSlcbiMgMjIwMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfd2l0aF9yYWRpdXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfMSwgU29tZSBfMykpXG4jIDIyMTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX3dpdGhfcmFkaXVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgNDE3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAyMjE4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhdHRlcm4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhZ2VudF9leHByZXNzaW9uKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgNDE4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xIDo6IF8zKVxuIyAyMjI2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhdHRlcm4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhZ2VudF9leHByZXNzaW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA0MTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKFtfMV0pXG4jIDIyMzMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGF0dGVybikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQyNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggW1tBc3QuUHJlc2VudCAoKF8xLHJoc19wb3MgMSksIF8zLCBBc3QuTm9Nb2QpXV0gKVxuIyAyMjQxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbl9lbXB0eV9taXh0dXJlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbikgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQyNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggW0FzdC5QcmVzZW50ICgoXzEscmhzX3BvcyAxKSwgXzMsIEFzdC5Ob01vZCkgOjogXzZdKVxuIyAyMjUwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbl9lbXB0eV9taXh0dXJlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0MzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICggQXN0Lk5vTW9kIClcbiMgMjI1NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtb2RfYWdlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQzMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAoIEFzdC5DcmVhdGUgKVxuIyAyMjYyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21vZF9hZ2VudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNDMyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAoIEFzdC5FcmFzZSApXG4jIDIyNjggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbW9kX2FnZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbl9zaWcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQzNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuUHJlc2VudCAoKF8xLHJoc19wb3MgMSksIF8zLCBBc3QuTm9Nb2QpKVxuIyAyMjc2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQzNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgKGFkZF9wb3MgKFwiTWFsZm9ybWVkIGFnZW50ICdcIl5fMV5cIidcIikpKSlcbiMgMjI4NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ21vZF9hZ2VudCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ0MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoQXN0LlByZXNlbnQgKChfMixyaHNfcG9zIDIpLCBfNCwgXzEpKVxuIyAyMjkzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtb2RfYWdlbnQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgNDQzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAgIChhZGRfcG9zIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeXzJeXCInXCIpKSkpXG4jIDIzMDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNDQ4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgIChbXSlcbiMgMjMwOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwb3J0X2V4cHJlc3Npb25fc2lnKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb25fc2lnKSBpblxuICAgIE9iai5yZXByKFxuIyA0NDkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMTo6XzMpXG4jIDIzMTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncG9ydF9leHByZXNzaW9uX3NpZykgaW5cbiAgICBPYmoucmVwcihcbiMgNDUwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbXzFdKVxuIyAyMzIzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNDU0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoW10pXG4jIDIzMjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwb3J0X2V4cHJlc3Npb24pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNDU1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xOjpfMylcbiMgMjMzNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BvcnRfZXhwcmVzc2lvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNDU2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKFtfMV0pXG4jIDIzNDQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDYwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICggU29tZSAoQXN0LkNFUSBfMixyaHNfcG9zIDIpKVxuIyAyMzUxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfdGVzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgKEFzdC5DR1RFIF8zLHJoc19wb3MgMykpXG4jIDIzNTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl90ZXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggU29tZSAoQXN0LkNMVEUgXzMscmhzX3BvcyAzKSlcbiMgMjM2NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgNDYzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgKCBTb21lIChBc3QuQ1ZBUiBfMixyaHNfcG9zIDIpKVxuIyAyMzcyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfdGVzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDY3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1bXTtcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBOb25lOyBBc3QucG9ydF9saW5rX21vZCA9IF8zOyB9IClcbiMgMjM4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVfbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyA0NzEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKCBBc3QuUG9ydFxuXHQgICB7QXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PV8yOyBBc3QucG9ydF9saW5rPV8zO1xuXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IE5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzQ7IH0gKVxuIyAyMzk1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVfbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyA0NzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKCBBc3QuUG9ydFxuXHQgICB7QXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PV8yOyBBc3QucG9ydF9saW5rPVtdO1xuXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IFNvbWUoXzQscmhzX3BvcyA0KTsgQXN0LnBvcnRfbGlua19tb2QgPSBfNTsgfSApXG4jIDI0MDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVfbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyA0NzkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKCBBc3QuUG9ydFxuXHQgICB7QXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PV8yOyBBc3QucG9ydF9saW5rPV81O1xuXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IFNvbWUoXzQscmhzX3BvcyA0KTsgQXN0LnBvcnRfbGlua19tb2QgPSBfNjsgfSApXG4jIDI0MjAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDgzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAoIEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gTm9uZTtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAoXzQscmhzX3BvcyA0KX0gKVxuIyAyNDMxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ4OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKCBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9IE5vbmU7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKC1fNSxyaHNfcG9zIDUpfSApXG4jIDI0NDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDkzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAoIEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gXzI7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKF81LHJoc19wb3MgNSl9IClcbiMgMjQ1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2NvdW50ZXJfdGVzdCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0OTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICggQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKF8xLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSBfMjtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAoLSBfNixyaHNfcG9zIDYpfSApXG4jIDI0NjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUwMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKCBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9IF8yO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9IExvYy5hbm5vdF93aXRoX2R1bW15IDB9IClcbiMgMjQ3NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZV9tb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKCBBc3QuUG9ydFxuICAgIFx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1bXTtcbiAgICBcdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSBfMzsgfSApXG4jIDI0ODggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdsaW5rX3N0YXRlKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZV9tb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKCBBc3QuUG9ydFxuICAgIFx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1fMztcbiAgICBcdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSBfNDsgfSApXG4jIDI1MDAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVfbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyA1MTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICggQXN0LlBvcnRcbiAgICBcdCAgIHtBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9XzI7IEFzdC5wb3J0X2xpbms9W107XG4gICAgXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IFNvbWUoXzQscmhzX3BvcyA0KTsgQXN0LnBvcnRfbGlua19tb2QgPSBfNTsgfSApXG4jIDI1MTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTIzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoIEFzdC5Qb3J0XG4gICAgXHQgICB7QXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PV8yOyBBc3QucG9ydF9saW5rPV81O1xuICAgIFx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBTb21lKF80LHJoc19wb3MgNCk7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzY7IH0gKVxuIyAyNTI1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1MjcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAoIEFzdC5Db3VudGVyXG4gICAgXHQgICB7IEFzdC5jb3VudGVyX3NpZ19uYW1lID0gKF8xLHJoc19wb3MgMSk7XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19taW4gPSBOb25lO1xuICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWF4ID0gU29tZSAoU29tZSBfNCwgcmhzX3BvcyA0KTtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQgPSBfNDtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX3Zpc2libGUgPSBBc3QuRnJvbV9vcmlnaW5hbF9hc3R9KVxuIyAyNTM4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1MzQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgKEFzdC5Db3VudGVyXG4gIHsgQXN0LmNvdW50ZXJfc2lnX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcbiAgICBBc3QuY291bnRlcl9zaWdfbWluID0gTm9uZTtcbiAgICBBc3QuY291bnRlcl9zaWdfbWF4ID0gU29tZSAoU29tZSAoLV81KSwgcmhzX3BvcyA1KTtcbiAgICBBc3QuY291bnRlcl9zaWdfZGVmYXVsdCA9IC1fNTtcbiAgICBBc3QuY291bnRlcl9zaWdfdmlzaWJsZSA9IEFzdC5Gcm9tX29yaWdpbmFsX2FzdH0pXG4jIDI1NTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnY291bnRlcl90ZXN0KSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU0MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICggbGV0IG1pbiA9XG4gICAgICAgICAgICBtYXRjaCBfMiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChBc3QuQ0VRIGksXykgLT4gaVxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgKChDR1RFIF98Q0xURSBffENWQVIgXyksIF8pIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiSXNzdWUgY291bnRlcnMgaW4gc2lnbmF0dXJlXCIpKVxuICAgICAgICBpbiBBc3QuQ291bnRlclxuICAgICAgICAgeyBBc3QuY291bnRlcl9zaWdfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWluID0gU29tZSAoU29tZSBtaW4sIHJoc19wb3MgMik7XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19tYXggPSBTb21lIChTb21lIF81LCByaHNfcG9zIDUpO1xuICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfZGVmYXVsdCA9IG1pbjtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX3Zpc2libGUgPSBBc3QuRnJvbV9vcmlnaW5hbF9hc3R9KVxuIyAyNTcwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2NvdW50ZXJfdGVzdCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1NTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICggbGV0IG1pbiA9XG4gICAgICAgICAgIG1hdGNoIF8yIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoQXN0LkNFUSBpLF8pIC0+IGlcbiAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgKChDR1RFIF98Q0xURSBffENWQVIgXyksIF8pIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJJc3N1ZSBjb3VudGVycyBpbiBzaWduYXR1cmVcIikpXG4gICAgICAgaW5cbiAgICAgICAgQXN0LkNvdW50ZXJcbiAgICAgICAgeyBBc3QuY291bnRlcl9zaWdfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19taW4gPSBTb21lIChTb21lIG1pbiwgcmhzX3BvcyAyKTtcbiAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWF4ID0gU29tZSAoU29tZSAoLV82KSwgcmhzX3BvcyA2KTtcbiAgICAgICAgICBBc3QuY291bnRlcl9zaWdfZGVmYXVsdCA9IG1pbiA7XG4gICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX3Zpc2libGUgPSBBc3QuRnJvbV9vcmlnaW5hbF9hc3R9KVxuIyAyNTkwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvdW50ZXJfdGVzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTY2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoIGxldCBtaW4gPVxuICAgICAgICAgICBtYXRjaCBfMiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKEFzdC5DRVEgaSxfKSAtPiBpXG4gICAgICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lICgoQ0dURSBffENMVEUgX3xDVkFSIF8pLCBfKSAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiSXNzdWUgY291bnRlcnMgaW4gc2lnbmF0dXJlXCIpKVxuICAgICAgIGluXG4gICAgICAgQXN0LkNvdW50ZXJcbiAgeyBBc3QuY291bnRlcl9zaWdfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuICAgIEFzdC5jb3VudGVyX3NpZ19taW4gPSBTb21lIChTb21lIG1pbiwgcmhzX3BvcyAyKTtcbiAgICBBc3QuY291bnRlcl9zaWdfbWF4ID0gTm9uZTtcbiAgICBBc3QuY291bnRlcl9zaWdfZGVmYXVsdCA9IG1pbjtcbiAgICBBc3QuY291bnRlcl9zaWdfdmlzaWJsZSA9IEFzdC5Gcm9tX29yaWdpbmFsX2FzdH0pXG4jIDI2MDkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTgxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoW10pXG4jIDI2MTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIE9iai5yZXByKFxuIyA1ODIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNvbWUgXzEscmhzX3BvcyAxKTo6XzIpXG4jIDI2MjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU4NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAoYWRkX3BvcyBcIklzc3VlIGFmdGVyIGludGVybmFsIHN0YXRlXCIpKSlcbiMgMjYzMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTg5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAoTm9uZSlcbiMgMjYzNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlX21vZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTkwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAoU29tZSBOb25lKVxuIyAyNjQyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGVfbW9kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU5MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgKFNvbWUgKFNvbWUgKF8zLHJoc19wb3MgMykpKVxuIyAyNjQ5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGVfbW9kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1OTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdCAgKGFkZF9wb3MgXCJJbmNvcnJlY3QgbGluayBtb2RpZmljYXRpb25cIikpKVxuIyAyNjU2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGVfbW9kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1OTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKChMS2FwcGEuTE5LX0ZSRUUscmhzX3BvcyAyKSlcbiMgMjY2MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhX2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTk5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICgoTEthcHBhLkxOS19WQUxVRSAoXzIsKCkpLHJoc19wb3MgMikpXG4jIDI2NjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYV9saW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2MDAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTEthcHBhLkxOS19TT01FLHJoc19wb3MgMikpXG4jIDI2NzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYV9saW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgNjAxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChMS2FwcGEuTE5LX1RZUEVcblx0XHRcdFx0ICAgICAgKChfMixyaHNfcG9zIDIpLChfNCxyaHNfcG9zIDQpKSkpXG4jIDI2ODQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYV9saW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2MDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAoYWRkX3BvcyBMS2FwcGEuTE5LX0FOWSlcbiMgMjY5MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhX2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDYwNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgIChhZGRfcG9zIFwiSW52YWxpZCBsaW5rIHN0YXRlXCIpKSlcbiMgMjY5NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhX2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhX2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlKSBpblxuICAgIE9iai5yZXByKFxuIyA2MTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMTo6XzIpXG4jIDI3MDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FfbGlua19zdGF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNjExIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgKFtfMV0pXG4jIDI3MTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjE0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAoQXN0LlJVTiAoTG9jLmFubm90X3dpdGhfZHVtbXkgQWxnX2V4cHIuRkFMU0UpKVxuIyAyNzE4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuUlVOIF8yKVxuIyAyNzI1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjE2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChBc3QuTU9ESUZZIF8xKVxuIyAyNzMyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDYxNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgIChBc3QuUVVJVClcbiMgMjczOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2MTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIFwiVW5yZWNvZ25pemVkIGNvbW1hbmRcIikpKVxuIyAyNzQ0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuKCogRW50cnkgc3RhcnRfcnVsZSAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBpbnRlcmFjdGl2ZV9jb21tYW5kICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHN0YW5kYWxvbmVfZWZmZWN0X2xpc3QgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc3RhbmRhbG9uZV9ib29sX2V4cHIgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxufF1cbmxldCB5eXRhYmxlcyA9XG4gIHsgUGFyc2luZy5hY3Rpb25zPXl5YWN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2NvbnN0PXl5dHJhbnNsX2NvbnN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2Jsb2NrPXl5dHJhbnNsX2Jsb2NrO1xuICAgIFBhcnNpbmcubGhzPXl5bGhzO1xuICAgIFBhcnNpbmcubGVuPXl5bGVuO1xuICAgIFBhcnNpbmcuZGVmcmVkPXl5ZGVmcmVkO1xuICAgIFBhcnNpbmcuZGdvdG89eXlkZ290bztcbiAgICBQYXJzaW5nLnNpbmRleD15eXNpbmRleDtcbiAgICBQYXJzaW5nLnJpbmRleD15eXJpbmRleDtcbiAgICBQYXJzaW5nLmdpbmRleD15eWdpbmRleDtcbiAgICBQYXJzaW5nLnRhYmxlc2l6ZT15eXRhYmxlc2l6ZTtcbiAgICBQYXJzaW5nLnRhYmxlPXl5dGFibGU7XG4gICAgUGFyc2luZy5jaGVjaz15eWNoZWNrO1xuICAgIFBhcnNpbmcuZXJyb3JfZnVuY3Rpb249cGFyc2VfZXJyb3I7XG4gICAgUGFyc2luZy5uYW1lc19jb25zdD15eW5hbWVzX2NvbnN0O1xuICAgIFBhcnNpbmcubmFtZXNfYmxvY2s9eXluYW1lc19ibG9jayB9XG5sZXQgc3RhcnRfcnVsZSAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMSBsZXhmdW4gbGV4YnVmIDogQXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbClcbmxldCBpbnRlcmFjdGl2ZV9jb21tYW5kIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAyIGxleGZ1biBsZXhidWYgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZClcbmxldCBzdGFuZGFsb25lX2VmZmVjdF9saXN0IChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAzIGxleGZ1biBsZXhidWYgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QubW9kaWZfZXhwciBsaXN0KVxubGV0IHN0YW5kYWxvbmVfYm9vbF9leHByIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyA0IGxleGZ1biBsZXhidWYgOiAoQXN0Lm1peHR1cmUsc3RyaW5nKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkKVxuOztcbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKi9cbi8qIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKi9cbi8qIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiV7XG4gIGxldCBhZGRfcG9zIHggPVxuICAgICh4LExvYy5vZl9wb3MgKFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSkgKFBhcnNpbmcuc3ltYm9sX2VuZF9wb3MgKCkpKVxuICBsZXQgcmhzX3BvcyBpID1cbiAgTG9jLm9mX3BvcyAoUGFyc2luZy5yaHNfc3RhcnRfcG9zIGkpIChQYXJzaW5nLnJoc19lbmRfcG9zIGkpXG4lfVxuXG4ldG9rZW4gRU9GIE5FV0xJTkUgU0VNSUNPTE9OIENPTU1BIERPVCBPUF9QQVIgQ0xfUEFSIE9QX0NVUiBDTF9DVVIgQVQgVFlQRSBMQVJcbiV0b2tlbiBDUFVUSU1FIEVNQVggVE1BWCBQTE9URU5UUlkgREVMRVRFIElOVFJPIFRSQUNLIERPIFNFVCBSRVBFQVQgU1BFQ0lFU19PRlxuJXRva2VuIFVOVElMIExPRyBQTFVTIE1VTFQgTUlOVVMgTUFYIE1JTiBESVYgU0lOVVMgQ09TSU5VUyBUQU4gUE9XIEFCUyBNT0RVTE9cbiV0b2tlbiBTUVJUIEVYUE9ORU5UIElORklOSVRZIFRJTUUgRVZFTlQgTlVMTF9FVkVOVCBQSVBFIEVRVUFMIEFORCBPUiBOT1RcbiV0b2tlbiBHUkVBVEVSIFNNQUxMRVIgVFJVRSBGQUxTRSBESUZGIEtBUFBBX1JBUiBLQVBQQV9MUkFSIEtBUFBBX0xOS1xuJXRva2VuIFNJR05BVFVSRSBJTklUIExFVCBQTE9UIFBFUlQgT0JTIFRPS0VOIENPTkZJRyBLQVBQQV9XTEQgS0FQUEFfU0VNSVxuJXRva2VuIEZMVVggQVNTSUdOIFBSSU5URiBTVE9QIFNOQVBTSE9UIFJVTiBUSEVOIEVMU0UgQUxBUk0gQVBQTFlcbiV0b2tlbiA8aW50PiBJTlRcbiV0b2tlbiA8c3RyaW5nPiBJRFxuJXRva2VuIDxzdHJpbmc+IEtBUFBBX01SSyBMQUJFTFxuJXRva2VuIDxmbG9hdD4gRkxPQVRcbiV0b2tlbiA8c3RyaW5nPiBTVFJJTkdcblxuJWxlZnQgTUlOVVMgUExVU1xuJWxlZnQgTVVMVCBESVZcbiVsZWZ0IE1PRFVMT1xuJXJpZ2h0IFBPV1xuJW5vbmFzc29jIExPRyBTUVJUIEVYUE9ORU5UIFNJTlVTIENPU0lOVVMgQUJTIFRBTlxuXG4lbGVmdCBPUlxuJWxlZnQgQU5EXG5cbiVub25hc3NvYyBUSEVOXG5cbiVzdGFydCBzdGFydF9ydWxlXG4ldHlwZSA8QXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbD4gc3RhcnRfcnVsZVxuXG4lc3RhcnQgaW50ZXJhY3RpdmVfY29tbWFuZFxuJXR5cGUgPChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kPiBpbnRlcmFjdGl2ZV9jb21tYW5kXG5cbiVzdGFydCBzdGFuZGFsb25lX2VmZmVjdF9saXN0XG4ldHlwZSA8KEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdD4gc3RhbmRhbG9uZV9lZmZlY3RfbGlzdFxuXG4lc3RhcnQgc3RhbmRhbG9uZV9ib29sX2V4cHJcbiV0eXBlIDwoQXN0Lm1peHR1cmUsc3RyaW5nKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkPiBzdGFuZGFsb25lX2Jvb2xfZXhwclxuXG4lJSAvKkdyYW1tYXIgcnVsZXMqL1xuXG5uZXdsaW5lOlxuICAgIHwgTkVXTElORSBzdGFydF9ydWxlIHskMn1cbiAgICB8IEVPRiB7ZnVuIGMgLT4gY307XG5cbnN0YXJ0X3J1bGU6XG4gICAgfCBuZXdsaW5lIHskMX1cbiAgICB8IExBQkVMIHJ1bGVfZXhwcmVzc2lvbiBuZXdsaW5lXG4gICAgICAgIHtsZXQgb3V0ID0gKFNvbWUgKCQxLCByaHNfcG9zIDEpLCQyKSBpblxuXHRmdW4gYyAtPiBsZXQgciA9ICQzIGMgaW4ge3Igd2l0aCBBc3QucnVsZXMgPSBvdXQ6OnIuQXN0LnJ1bGVzfX1cbiAgICB8IHJ1bGVfZXhwcmVzc2lvbiBuZXdsaW5lXG4gICAgICAgIHtmdW4gYyAtPiBsZXQgciA9ICQyIGMgaW4ge3Igd2l0aCBBc3QucnVsZXMgPSAoTm9uZSwkMSk6OnIuQXN0LnJ1bGVzfX1cbiAgICB8IExBQkVMIEVRVUFMIGFsZ19leHByIG5ld2xpbmVcbiAgICAgICAge2xldCBvdXQgPSAoKCQxLHJoc19wb3MgMSksJDMpIGluXG5cdGZ1biBjIC0+IGxldCByID0gJDQgYyBpbiB7ciB3aXRoIEFzdC52YXJpYWJsZXMgPSBvdXQ6OnIuQXN0LnZhcmlhYmxlc319XG4gICAgfCBpbnN0cnVjdGlvbiBuZXdsaW5lXG5cdFx0ICB7IGZ1biBjIC0+IGxldCByID0gJDIgYyBpblxuXHRcdCAgICAgIG1hdGNoICQxIHdpdGhcblx0XHQgICAgICB8IEFzdC5SVUxFIHJ1IC0+XG5cdFx0XHQge3Igd2l0aCBBc3QucnVsZXMgPSBydTo6ci5Bc3QucnVsZXN9XG5cdFx0ICAgICAgfCBBc3QuU0lHIGFnIC0+XG5cdFx0XHQge3Igd2l0aCBBc3Quc2lnbmF0dXJlcz1hZzo6ci5Bc3Quc2lnbmF0dXJlc31cblx0XHQgICAgICB8IEFzdC5UT0tFTlNJRyAoc3RyX3BvcykgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC50b2tlbnM9c3RyX3Bvczo6ci5Bc3QudG9rZW5zfVxuXHRcdCAgICAgIHwgQXN0LlZPTFNJRyAodm9sX3R5cGUsdm9sLHZvbF9wYXJhbSkgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC52b2x1bWVzPSh2b2xfdHlwZSx2b2wsdm9sX3BhcmFtKTo6ci5Bc3Qudm9sdW1lc31cblx0XHQgICAgICB8IEFzdC5JTklUIChhbGcsaW5pdF90KSAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LmluaXQ9KGFsZyxpbml0X3QpOjpyLkFzdC5pbml0fVxuXHRcdCAgICAgIHwgQXN0LkRFQ0xBUkUgdmFyIC0+XG5cdFx0XHQge3Igd2l0aCBBc3QudmFyaWFibGVzID0gdmFyOjpyLkFzdC52YXJpYWJsZXN9XG5cdFx0ICAgICAgfCBBc3QuT0JTICgobGJsLHBvcyksXyBhcyB2YXIpIC0+XG5cdFx0XHQgKCpmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgc2hvcnRjdXQgZm9yICV2YXIgKyAlcGxvdCopXG5cdFx0XHQgICB7ciB3aXRoXG5cdFx0XHQgICAgIEFzdC52YXJpYWJsZXMgPSB2YXI6OnIuQXN0LnZhcmlhYmxlcztcblx0XHRcdCAgICAgQXN0Lm9ic2VydmFibGVzID0gKEFsZ19leHByLkFMR19WQVIgbGJsLHBvcylcblx0XHRcdFx0XHRcdCA6OnIuQXN0Lm9ic2VydmFibGVzfVxuXHRcdCAgICAgIHwgQXN0LlBMT1QgZXhwciAtPlxuXHRcdFx0IHtyIHdpdGggQXN0Lm9ic2VydmFibGVzID0gZXhwcjo6ci5Bc3Qub2JzZXJ2YWJsZXN9XG5cdFx0ICAgICAgfCBBc3QuUEVSVCAoKGFsYXJtLHByZSxlZmZlY3Qsb3B0KSxwb3MpIC0+XG5cdFx0XHQge3Igd2l0aFxuXHRcdFx0ICBBc3QucGVydHVyYmF0aW9ucyA9XG5cdFx0XHQgICAoKGFsYXJtLHByZSxlZmZlY3Qsb3B0KSxwb3MpOjpyLkFzdC5wZXJ0dXJiYXRpb25zfVxuXHRcdCAgICAgIHwgQXN0LkNPTkZJRyAocGFyYW1fbmFtZSx2YWx1ZV9saXN0KSAtPlxuXHRcdFx0IHtyIHdpdGhcblx0XHRcdCAgQXN0LmNvbmZpZ3VyYXRpb25zID0gKHBhcmFtX25hbWUsdmFsdWVfbGlzdCk6OnIuQXN0LmNvbmZpZ3VyYXRpb25zfVxuXHRcdCAgfVxuICAgIHwgZXJyb3Jcblx0e3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyBcIlN5bnRheCBlcnJvclwiKSl9XG4gICAgO1xuXG5pbnN0cnVjdGlvbjpcbiAgICB8IFNJR05BVFVSRSBhZ2VudF9leHByZXNzaW9uX3NpZyB7QXN0LlNJRyAkMn1cbiAgICB8IFRPS0VOIElEIHtBc3QuVE9LRU5TSUcgKCQyLHJoc19wb3MgMil9XG4gICAgfCBTSUdOQVRVUkUgZXJyb3Ige3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0XHQoYWRkX3BvcyBcIk1hbGZvcm1lZCBhZ2VudCBzaWduYXR1cmUsIEkgd2FzIGV4cGVjdGluZyBzb21ldGhpbmcgb2YgdGhlIGZvcm0gJyVhZ2VudDogQSh4LHl+dX52LHopJ1wiKSl9XG5cbiAgICB8IElOSVQgaW5pdF9kZWNsYXJhdGlvbiB7QXN0LklOSVQgJDJ9XG4gICAgfCBJTklUIGVycm9yXG5cdHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAgKGFkZF9wb3MgXCJNYWxmb3JtZWQgaW5pdGlhbCBjb25kaXRpb25cIikpfVxuXG4gICAgfCBMRVQgdmFyaWFibGVfZGVjbGFyYXRpb24ge0FzdC5ERUNMQVJFICQyfVxuICAgIHwgT0JTIHZhcmlhYmxlX2RlY2xhcmF0aW9uIHtBc3QuT0JTICQyfVxuICAgIHwgUExPVCBhbGdfZXhwciB7QXN0LlBMT1QgJDJ9XG4gICAgfCBQTE9UIGVycm9yIHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIHBsb3QgaW5zdHJ1Y3Rpb24sIGFuIGFsZ2VicmFpYyBleHByZXNzaW9uIGlzIGV4cGVjdGVkXCIpKX1cbiAgICB8IFBFUlQgcGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uIHtBc3QuUEVSVCAoYWRkX3BvcyAkMil9XG4gICAgfCBDT05GSUcgU1RSSU5HIHZhbHVlX2xpc3Rcblx0ICAgICB7QXN0LkNPTkZJRyAoKCQyLHJoc19wb3MgMiksJDMpfVxuICAgIDtcblxuaW5pdF9kZWNsYXJhdGlvbjpcbiAgICB8IGFsZ19leHByIG5vbl9lbXB0eV9taXh0dXJlXG4gICAgeyAoJDEsQXN0LklOSVRfTUlYICgkMixyaHNfcG9zIDIpKSB9XG4gICAgfCBhbGdfZXhwciBPUF9QQVIgbm9uX2VtcHR5X21peHR1cmUgQ0xfUEFSXG4gICAgeyAoJDEsQXN0LklOSVRfTUlYICgkMywgcmhzX3BvcyAzKSkgfVxuICAgIHwgSUQgTEFSIGFsZ19leHByIHsoJDMsQXN0LklOSVRfVE9LIFskMSxyaHNfcG9zIDFdKX1cbiAgICB8IGFsZ19leHByIElEIHsoJDEsQXN0LklOSVRfVE9LIFskMixyaHNfcG9zIDJdKX1cbiAgICA7XG5cbnZhbHVlX2xpc3Q6XG4gICAgfCBTVFJJTkcge1skMSwgcmhzX3BvcyAxXX1cbiAgICB8IFNUUklORyB2YWx1ZV9saXN0IHsoJDEscmhzX3BvcyAxKTo6JDJ9XG4gICAgO1xuXG5wZXJ0dXJiYXRpb25fYWxhcm06XG4gIHtOb25lfVxuICB8IEFMQVJNIG5iciB7U29tZSAkMn1cblxucGVydHVyYmF0aW9uX3Bvc3Q6XG4gIHtOb25lfVxuICB8IFJFUEVBVCBib29sX2V4cHIge1NvbWUgJDJ9XG4gIHwgVU5USUwgYm9vbF9leHByXG4gICAvKiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5ICovXG5cdCB7IFNvbWUgKGFkZF9wb3MgKEFsZ19leHByLlVOX0JPT0xfT1AgKE9wZXJhdG9yLk5PVCwkMikpKX1cblxuXG5wZXJ0dXJiYXRpb25fZGVjbGFyYXRpb246XG4gICAgfCBwZXJ0dXJiYXRpb25fYWxhcm0gYm9vbF9leHByIERPIGVmZmVjdF9saXN0IHBlcnR1cmJhdGlvbl9wb3N0XG4gICAgeyAoJDEsU29tZSAkMiwkNCwkNSkgfVxuICAgIHwgcGVydHVyYmF0aW9uX2FsYXJtIERPIGVmZmVjdF9saXN0IHBlcnR1cmJhdGlvbl9wb3N0XG4gICAgeyAoJDEsTm9uZSwkMywkNCkgfVxuICAgIHwgUkVQRUFUIGJvb2xfZXhwciBETyBlZmZlY3RfbGlzdCBVTlRJTCBib29sX2V4cHJcbiAgICAgICAvKiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5ICovXG5cdCAgeyAoTm9uZSxTb21lICQyLCQ0LFNvbWUgKGFkZF9wb3MgKEFsZ19leHByLlVOX0JPT0xfT1AgKE9wZXJhdG9yLk5PVCwkNikpKSl9XG4gICAgIHwgcGVydHVyYmF0aW9uX2FsYXJtIGJvb2xfZXhwciBTRVQgZWZmZWN0X2xpc3Rcblx0XHR7ICgkMSxTb21lICQyLCQ0LE5vbmUpfSAvKkZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Ki9cbiAgICA7XG5cbnN0YW5kYWxvbmVfZWZmZWN0X2xpc3Q6IGVmZmVjdF9saXN0IEVPRiB7JDF9XG5cbmVmZmVjdF9saXN0OlxuICAgIHwgT1BfUEFSIGVmZmVjdF9saXN0IENMX1BBUiB7JDJ9XG4gICAgfCBlZmZlY3Qge1skMV19XG4gICAgfCBlZmZlY3QgU0VNSUNPTE9OIGVmZmVjdF9saXN0IHskMTo6JDN9XG4gICAgO1xuXG5lZmZlY3Q6XG4gICAgfCBBU1NJR04gSUQgYWxnX2V4cHIgLyp1cGRhdGluZyB0aGUgcmF0ZSBvZiBhIHJ1bGUqL1xuXHRcdFx0XHRcdFx0ICAgICAge0FzdC5VUERBVEUgKCgkMixyaHNfcG9zIDIpLCQzKX1cbiAgICB8IEFTU0lHTiBMQUJFTCBhbGdfZXhwciAvKnVwZGF0aW5nIHRoZSByYXRlIG9mIGEgcnVsZSovXG5cdFx0XHRcdFx0XHQgICAgICB7QXN0LlVQREFURSAoKCQyLHJoc19wb3MgMiksJDMpfVxuICAgIHwgVFJBQ0sgTEFCRUwgYm9vbGVhblxuXHQgICAge0FzdC5DRkxPV0xBQkVMICgkMywoJDIscmhzX3BvcyAyKSl9XG4gICAgfCBUUkFDSyBwYXR0ZXJuIGJvb2xlYW5cblx0ICAgIHtBc3QuQ0ZMT1dNSVggKCQzLChbJDJdLHJoc19wb3MgMikpfVxuICAgIHwgRkxVWCBub25lbXB0eV9wcmludF9leHByIGJvb2xlYW5cblx0ICAge2lmICQzIHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSwkMikgZWxzZSBBc3QuRElOT0ZGICQyfVxuICAgIHwgRkxVWCBub25lbXB0eV9wcmludF9leHByIFNUUklORyBib29sZWFuXG5cdCAgIHtpZiAkNCAmJiAkMyA9IFwiYWJzb2x1dGVcIiB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuQUJTT0xVVEUsJDIpXG5cdCAgIGVsc2UgaWYgJDQgJiYgJDMgPSBcInByb2JhYmlsaXR5XCIgdGhlblxuXHQgICAgIEFzdC5ESU4gKFByaW1pdGl2ZXMuUFJPQkFCSUxJVFksJDIpXG5cdCAgIGVsc2UgaWYgJDQgJiYgJDMgPSBcInJlbGF0aXZlXCIgdGhlbiBBc3QuRElOIChQcmltaXRpdmVzLlJFTEFUSVZFLCQyKVxuXHQgICAgIGVsc2UgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdCAgICAgICAoXCJJbmNvcnJlY3QgRElOIGV4cHJlc3Npb25cIixyaHNfcG9zIDMpKX1cbiAgICB8IEFQUExZIHNtYWxsX2FsZ19leHByIHJ1bGVfY29udGVudFxuXHRcdCB7IEFzdC5BUFBMWShcblx0XHQgICAkMixcblx0XHQgICAoeyBBc3QucmV3cml0ZSA9IGZzdCAkMztcblx0XHQgICAgICBBc3QuYmlkaXJlY3Rpb25hbCA9IGZhbHNlO1xuXHRcdCAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybztBc3Qua191bj1Ob25lO1xuXHRcdCAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LHJoc19wb3MgMykpXG5cdFx0IH1cbiAgICB8IElOVFJPIGFsZ19leHByIG5vbl9lbXB0eV9taXh0dXJlXG4gICAgICAgIHsgQXN0LkFQUExZKCQyLFxuICAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCAgQXN0LkFycm93IHtBc3QubGhzPVtdOyBBc3Qucm1fdG9rZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgIEFzdC5yaHM9JDM7IEFzdC5hZGRfdG9rZW4gPSBbXTt9O1xuXHRcdCAgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxyaHNfcG9zIDMpKVxuICAgICAgICB9XG4gICAgfCBJTlRSTyBlcnJvclxuICAgICAgIHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJNYWxmb3JtZWQgcGVydHVyYmF0aW9uIGluc3RydWN0aW9uLCBJIHdhcyBleHBlY3RpbmcgJyRBREQgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpfVxuICAgIHwgREVMRVRFIGFsZ19leHByIG5vbl9lbXB0eV9taXh0dXJlXG4gICAgICAgeyBBc3QuQVBQTFkoJDIsXG4gICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgQXN0LkFycm93IHtBc3QubGhzPSQzOyBBc3Qucm1fdG9rZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgQXN0LnJocz1bXTsgQXN0LmFkZF90b2tlbiA9IFtdO307XG5cdFx0IEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LHJoc19wb3MgMykpXG4gICAgICAgfVxuXG4gICAgfCBERUxFVEUgZXJyb3JcbiAgICAgICB7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIHBlcnR1cmJhdGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgZXhwZWN0aW5nICckREVMIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKX1cbiAgICB8IElEIExBUiBhbGdfZXhwciAvKnVwZGF0aW5nIHRoZSB2YWx1ZSBvZiBhIHRva2VuKi9cbiAgICAgICB7XG4gICAgICAgbGV0IHRrID0gKCQxLHJoc19wb3MgMSkgaW5cbiAgICAgICAgQXN0LkFQUExZKEFsZ19leHByLmNvbnN0IE5ici5vbmUsXG4gICAgICAgICAgIGFkZF9wb3NcbiAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCBBc3QuRWRpdFxuXHRcdCB7QXN0Lm1peD1bXTtcblx0XHQgIEFzdC5kZWx0YV90b2tlbiA9XG5cdFx0ICBbKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMsJDMsKEFsZ19leHByLlRPS0VOX0lEICQxLHJoc19wb3MgMSkpLHJoc19wb3MgMSksdGtdO1xuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0pKVxuICAgICAgIH1cbiAgICB8IFNOQVBTSE9UIHByaW50X2V4cHIge0FzdC5TTkFQU0hPVCAoZmFsc2UsJDIpfVxuICAgIHwgU1RPUCBwcmludF9leHByIHtBc3QuU1RPUCAkMn1cbiAgICB8IFBSSU5URiBwcmludF9leHByIFNNQUxMRVIgcHJpbnRfZXhwciBHUkVBVEVSIHsgQXN0LlBSSU5UICgkMiwkNCkgfVxuICAgIHwgUExPVEVOVFJZIHsgQXN0LlBMT1RFTlRSWSB9XG4gICAgfCBTUEVDSUVTX09GIG5vbmVtcHR5X3ByaW50X2V4cHIgbm9uX2VtcHR5X21peHR1cmUgYm9vbGVhbiB7IEFzdC5TUEVDSUVTX09GICgkNCwkMiwoJDMsIHJoc19wb3MgMykpfVxuICAgIDtcblxubm9uZW1wdHlfcHJpbnRfZXhwcjpcbiAgICB8IFNUUklORyB7W1ByaW1pdGl2ZXMuU3RyX3BleHByIChhZGRfcG9zICQxKV19XG4gICAgfCBtaWRfYWxnX2V4cHIge1tQcmltaXRpdmVzLkFsZ19wZXhwciAkMV19XG4gICAgfCBTVFJJTkcgRE9UIG5vbmVtcHR5X3ByaW50X2V4cHIge1ByaW1pdGl2ZXMuU3RyX3BleHByICgkMSwgcmhzX3BvcyAxKTo6JDN9XG4gICAgfCBtaWRfYWxnX2V4cHIgRE9UIG5vbmVtcHR5X3ByaW50X2V4cHIge1ByaW1pdGl2ZXMuQWxnX3BleHByICQxOjokM31cbiAgICA7XG5wcmludF9leHByOlxuICAgIC8qZW1wdHkqLyB7W119XG4gICAgfCBub25lbXB0eV9wcmludF9leHByIHskMX1cblxuYm9vbGVhbjpcbiAgICB8IFRSVUUge3RydWV9XG4gICAgfCBGQUxTRSB7ZmFsc2V9XG4gICAgO1xuXG52YXJpYWJsZV9kZWNsYXJhdGlvbjpcbiAgICB8IExBQkVMIG5vbl9lbXB0eV9taXh0dXJlXG5cdCAgIHsgKCgkMSxyaHNfcG9zIDEpLChBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSAkMixyaHNfcG9zIDIpKX1cbiAgICB8IExBQkVMIGFsZ19leHByIHsoKCQxLHJoc19wb3MgMSksJDIpfVxuICAgIHwgSUQgYWxnX2V4cHIgeygoJDEscmhzX3BvcyAxKSwkMil9XG4gICAgfCBMQUJFTCBlcnJvclxuXHQgICAge3JhaXNlXG5cdCAgICAgICAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgIChhZGRfcG9zIChcIklsbGVnYWwgZGVmaW5pdGlvbiBvZiB2YXJpYWJsZSAnXCJeJDFeXCInXCIpKSlcblx0ICAgIH1cbiAgICA7XG5cbnNtYWxsX2Jvb2xfZXhwcjpcbiAgICB8IE9QX1BBUiBib29sX2V4cHIgQ0xfUEFSIHskMn1cbiAgICB8IFRSVUUge2FkZF9wb3MgQWxnX2V4cHIuVFJVRX1cbiAgICB8IEZBTFNFIHthZGRfcG9zIEFsZ19leHByLkZBTFNFfVxuXG5ib29sX2V4cHI6XG4gICAgfCBzbWFsbF9ib29sX2V4cHIgeyAkMSB9XG4gICAgfCBOT1Qgc21hbGxfYm9vbF9leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QKE9wZXJhdG9yLk5PVCwkMikpfVxuICAgIHwgYm9vbF9leHByIEFORCBib29sX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLkFORCwkMSwkMykpfVxuICAgIHwgYm9vbF9leHByIE9SIGJvb2xfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuT1IsJDEsJDMpKX1cbiAgICB8IGFsZ19leHByIEdSRUFURVIgYWxnX2V4cHJcbiAgICAgIHthZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkdSRUFURVIsJDEsJDMpKX1cbiAgICB8IGFsZ19leHByIFNNQUxMRVIgYWxnX2V4cHJcbiAgICAgIHthZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLlNNQUxMRVIsJDEsJDMpKX1cbiAgICB8IGFsZ19leHByIEVRVUFMIGFsZ19leHByXG4gICAgICB7YWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5FUVVBTCwkMSwkMykpfVxuICAgIHwgYWxnX2V4cHIgRElGRiBhbGdfZXhwclxuICAgICAge2FkZF9wb3MgKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuRElGRiwkMSwkMykpfVxuICAgIDtcblxuc3RhbmRhbG9uZV9ib29sX2V4cHI6IGJvb2xfZXhwciBFT0YgeyQxfVxuXG50b2tlbl9leHByOlxuICAvKmVtcHR5Ki8ge1tdfVxuICAgIHwgUElQRSBzdW1fdG9rZW4geyQyfVxuICAgIHwgUElQRSBlcnJvclxuXHR7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAoYWRkX3BvcyAgXCJNYWxmb3JtZWQgdG9rZW4gZXhwcmVzc2lvbiwgSSB3YXMgZXhwZWN0aW5nIGFfMCB0XzAgKyAuLi4gKyBhX24gdF9uLCB3aGVyZSB0X2kgYXJlIHRva2VucyBhbmQgYV9pIGFueSBhbGdlYnJhaWMgZm9ybXVsYVwiKSl9XG4gICAgO1xuXG5zdW1fdG9rZW46XG4gICAgfCBPUF9QQVIgc3VtX3Rva2VuIENMX1BBUiB7JDJ9XG4gICAgfCBhbGdfZXhwciBJRCB7WygkMSwoJDIscmhzX3BvcyAyKSldfVxuICAgIHwgYWxnX2V4cHIgSUQgUExVUyBzdW1fdG9rZW4ge2xldCBsID0gJDQgaW4gKCQxLCgkMixyaHNfcG9zIDIpKTo6bH1cbiAgICB8IGFsZ19leHByIFRZUEUgSUQge1soJDEsKCQzLHJoc19wb3MgMykpXX1cbiAgICB8IGFsZ19leHByIFRZUEUgSUQgUExVUyBzdW1fdG9rZW4ge2xldCBsID0gJDUgaW4gKCQxLCgkMyxyaHNfcG9zIDMpKTo6bH1cblxucnVsZV9jb250ZW50OlxuICB8IHBhdHRlcm4gdG9rZW5fZXhwciBhcnJvdyBwYXR0ZXJuIHRva2VuX2V4cHJcbiAgICB7QXN0LkFycm93IHtBc3QubGhzPVskMV07IEFzdC5ybV90b2tlbiA9ICQyOyBBc3QucmhzPVskNF07IEFzdC5hZGRfdG9rZW4gPSAkNX0sXG4gICAgICQzfVxuICB8IHBhdHRlcm4gdG9rZW5fZXhwciBhcnJvdyB0b2tlbl9leHByXG4gICAge0FzdC5BcnJvdyB7QXN0Lmxocz1bJDFdOyBBc3Qucm1fdG9rZW4gPSAkMjsgQXN0LnJocz1bXTsgQXN0LmFkZF90b2tlbiA9ICQ0fSxcbiAgICAgJDN9XG4gIHwgdG9rZW5fZXhwciBhcnJvdyBwYXR0ZXJuIHRva2VuX2V4cHJcbiAgICB7QXN0LkFycm93IHtBc3QubGhzPVtdOyBBc3Qucm1fdG9rZW4gPSAkMTsgQXN0LnJocz1bJDNdOyBBc3QuYWRkX3Rva2VuID0gJDR9LFxuICAgICAkMn1cbiAgfCB0b2tlbl9leHByIGFycm93IHRva2VuX2V4cHJcbiAgICB7QXN0LkFycm93IHtBc3QubGhzPVtdOyBBc3Qucm1fdG9rZW4gPSAkMTsgQXN0LnJocz1bXTsgQXN0LmFkZF90b2tlbiA9ICQzfSxcbiAgICAgJDJ9XG4gIHwgcGF0dGVybiB0b2tlbl9leHByXG4gICAgeyBBc3QuRWRpdCB7QXN0Lm1peCA9IFskMV07IEFzdC5kZWx0YV90b2tlbiA9ICQyfSxmYWxzZSB9O1xuICB8IFBJUEUgc3VtX3Rva2VuXG4gICAgeyBBc3QuRWRpdCB7QXN0Lm1peCA9IFtdOyBBc3QuZGVsdGFfdG9rZW4gPSAkMn0sZmFsc2UgfTtcblxucnVsZV9leHByZXNzaW9uOlxuICB8IHJ1bGVfY29udGVudCBiaXJhdGVcbiAgICB7IGxldCAoa19kZWYsa191bixrX29wLGtfb3BfdW4pID0gJDIgaW5cbiAgICAgIGxldCByZXdyaXRlLGJpZGlyZWN0aW9uYWwgPSAkMSBpblxuICAgICAgYWRkX3BvcyB7XG4gICAgICAgIEFzdC5yZXdyaXRlO0FzdC5iaWRpcmVjdGlvbmFsO1xuICAgICAgICBBc3Qua19kZWY7IEFzdC5rX3VuOyBBc3Qua19vcDsgQXN0Lmtfb3BfdW47XG4gICAgICB9IH07XG5cbmFycm93OlxuICAgIHwgS0FQUEFfUkFSIHtmYWxzZX1cbiAgICB8IEtBUFBBX0xSQVIge3RydWV9XG4gICAgO1xuXG5uYnI6XG4gICAgfCBJTkZJTklUWSB7IE5ici5GIGluZmluaXR5IH1cbiAgICB8IEZMT0FUIHsgTmJyLkYgJDEgfVxuICAgIHwgSU5UIHsgTmJyLkkgJDEgfVxuXG5jb25zdGFudDpcbiAgICB8IG5iciB7YWRkX3BvcyAoQWxnX2V4cHIuQ09OU1QgJDEpfVxuICAgIHwgRU1BWCB7YWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FTUFYX1ZBUikpfVxuICAgIHwgVE1BWCB7YWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5UTUFYX1ZBUikpfVxuICAgIHwgQ1BVVElNRSB7YWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5DUFVUSU1FKSl9XG4gICAgO1xuXG52YXJpYWJsZTpcbiAgICB8IFBJUEUgSUQgUElQRSB7YWRkX3BvcyAoQWxnX2V4cHIuVE9LRU5fSUQgKCQyKSl9XG4gICAgfCBQSVBFIG5vbl9lbXB0eV9taXh0dXJlIFBJUEUgeyBhZGRfcG9zIChBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSAkMikgfVxuICAgIHwgSUQge2FkZF9wb3MgKEFsZ19leHByLkFMR19WQVIgKCQxKSl9XG4gICAgfCBMQUJFTCB7YWRkX3BvcyAoQWxnX2V4cHIuQUxHX1ZBUiAoJDEpKX1cbiAgICB8IFRJTUUge2FkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVElNRV9WQVIpKX1cbiAgICB8IEVWRU5UIHthZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVWRU5UX1ZBUikpfVxuICAgIHwgTlVMTF9FVkVOVCB7YWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUikpfVxuICAgIDtcblxuc21hbGxfYWxnX2V4cHI6XG4gICAgfCBPUF9QQVIgYWxnX2V4cHIgQ0xfUEFSIHskMn1cbiAgICB8IGNvbnN0YW50IHskMX1cbiAgICB8IHZhcmlhYmxlIHskMX1cbiAgICB8IE1BWCBzbWFsbF9hbGdfZXhwciBzbWFsbF9hbGdfZXhwclxuXHQgIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1BWCwkMiwkMykpfVxuICAgIHwgTUlOIHNtYWxsX2FsZ19leHByIHNtYWxsX2FsZ19leHByXG5cdCAge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOLCQyLCQzKSl9XG4gICAgfCBFWFBPTkVOVCBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5FWFAsJDIpKX1cbiAgICB8IFNJTlVTIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNJTlVTLCQyKSl9XG4gICAgfCBDT1NJTlVTIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkNPU0lOVVMsJDIpKX1cbiAgICB8IFRBTiBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5UQU4sJDIpKX1cbiAgICB8IEFCUyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5JTlQsJDIpKX1cbiAgICB8IFNRUlQgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuU1FSVCwkMikpfVxuICAgIHwgTE9HIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkxPRywkMikpfVxuICAgIDtcblxubWlkX2FsZ19leHByOlxuICAgIHwgTUlOVVMgbWlkX2FsZ19leHByIHsgYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlVNSU5VUywkMikpIH1cbiAgICB8IHNtYWxsX2FsZ19leHByIHsgJDEgfVxuICAgIHwgbWlkX2FsZ19leHByIE1VTFQgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1VTFQsJDEsJDMpKX1cbiAgICB8IG1pZF9hbGdfZXhwciBQTFVTIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5TVU0sJDEsJDMpKX1cbiAgICB8IG1pZF9hbGdfZXhwciBESVYgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLkRJViwkMSwkMykpfVxuICAgIHwgbWlkX2FsZ19leHByIE1JTlVTIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUywkMSwkMykpfVxuICAgIHwgbWlkX2FsZ19leHByIFBPVyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuUE9XLCQxLCQzKSl9XG4gICAgfCBtaWRfYWxnX2V4cHIgTU9EVUxPIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NT0RVTE8sJDEsJDMpKX1cblxuYWxnX2V4cHI6XG4gICAgfCBtaWRfYWxnX2V4cHIgeyQxfVxuICAgIHwgYm9vbF9leHByIFRIRU4gYWxnX2V4cHIgRUxTRSBzbWFsbF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuSUYoJDEsJDMsJDUpKX1cblxuYmlyYXRlOlxuICAgIHwgQVQgcmF0ZSB7bGV0IChrMixrMSkgPSAkMiBpbiAoazIsazEsTm9uZSxOb25lKX1cbiAgICB8IEFUIHJhdGUgQ09NTUEgcmF0ZSB7bGV0IChrMixrMSkgPSAkMiBpblxuXHRcdFx0ICBsZXQgKGtiYWNrLGtiYWNrMSkgPSAkNCBpblxuXHRcdFx0ICAoazIsazEsU29tZSBrYmFjayxrYmFjazEpfVxuICAgIHwgZXJyb3Ige3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyBcInJ1bGUgcmF0ZSBleHBlY3RlZFwiKSl9XG4gICAgO1xuXG5yYXRlOlxuICAgIHwgYWxnX2V4cHIgT1BfQ1VSIGFsZ193aXRoX3JhZGl1cyBDTF9DVVIgeygkMSxTb21lICQzKX1cbiAgICB8IGFsZ19leHByIE9QX1BBUiBhbGdfd2l0aF9yYWRpdXMgQ0xfUEFSIHsgKCQxLFNvbWUgJDMpIH1cbiAgICB8IGFsZ19leHByIHsoJDEsTm9uZSl9XG4gICAgfCBPUF9DVVIgYWxnX3dpdGhfcmFkaXVzIENMX0NVUlxuICAgICAgeyhMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQ09OU1QgTmJyLnplcm8pLFNvbWUgJDIpfVxuICAgIHwgYWxnX2V4cHIgT1BfQ1VSIENMX0NVUlxuICAgICAgeygkMSxTb21lIChMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQ09OU1QgTmJyLnplcm8pLE5vbmUpKX1cbiAgICB8IHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJtaXNzaW5nIHJ1bGUgcmF0ZVwiKSl9XG4gICAgO1xuXG5hbGdfd2l0aF9yYWRpdXM6XG4gICAgfCBhbGdfZXhwciB7KCQxLE5vbmUpfVxuICAgIHwgYWxnX2V4cHIgVFlQRSBhbGdfZXhwciB7KCQxLCBTb21lICQzKX1cbiAgICA7XG5cbnBhdHRlcm46XG4gICAgfCBPUF9QQVIgcGF0dGVybiBDTF9QQVIgeyQyfVxuICAgIHwgYWdlbnRfZXhwcmVzc2lvbiBDT01NQSBwYXR0ZXJuIHskMSA6OiAkM31cbiAgICB8IGFnZW50X2V4cHJlc3Npb24ge1skMV19XG47XG5cbm5vbl9lbXB0eV9taXh0dXJlOlxuICAgIHwgSUQgT1BfUEFSIGludGVyZmFjZV9leHByZXNzaW9uIENMX1BBUlxuICAgIHsgW1tBc3QuUHJlc2VudCAoKCQxLHJoc19wb3MgMSksICQzLCBBc3QuTm9Nb2QpXV0gfVxuICAgIHwgSUQgT1BfUEFSIGludGVyZmFjZV9leHByZXNzaW9uIENMX1BBUiBDT01NQSBwYXR0ZXJuXG4gICAgeyBbQXN0LlByZXNlbnQgKCgkMSxyaHNfcG9zIDEpLCAkMywgQXN0Lk5vTW9kKSA6OiAkNl19XG4gICAgO1xuXG5tb2RfYWdlbnQ6XG5cdHwgeyBBc3QuTm9Nb2QgfVxuXHR8IFBMVVMgeyBBc3QuQ3JlYXRlIH1cblx0fCBNSU5VUyB7IEFzdC5FcmFzZSB9O1xuXG5hZ2VudF9leHByZXNzaW9uX3NpZzpcbiAgfCBJRCBPUF9QQVIgaW50ZXJmYWNlX2V4cHJlc3Npb25fc2lnIENMX1BBUiB7QXN0LlByZXNlbnQgKCgkMSxyaHNfcG9zIDEpLCAkMywgQXN0Lk5vTW9kKX1cbiAgfCBJRCBlcnJvciB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgIChhZGRfcG9zIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeJDFeXCInXCIpKSl9XG5cbmFnZW50X2V4cHJlc3Npb246XG4gICAgfCBtb2RfYWdlbnQgSUQgT1BfUEFSIGludGVyZmFjZV9leHByZXNzaW9uIENMX1BBUlxuXHQge0FzdC5QcmVzZW50ICgoJDIscmhzX3BvcyAyKSwgJDQsICQxKX1cbiAgICB8IG1vZF9hZ2VudCBJRCBlcnJvclxuXHQgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgICAgKGFkZF9wb3MgKFwiTWFsZm9ybWVkIGFnZW50ICdcIl4kMl5cIidcIikpKX1cbiAgICA7XG5cbmludGVyZmFjZV9leHByZXNzaW9uX3NpZzpcbiAgICAvKmVtcHR5Ki8ge1tdfVxuICAgIHwgcG9ydF9leHByZXNzaW9uX3NpZyBDT01NQSBpbnRlcmZhY2VfZXhwcmVzc2lvbl9zaWcgeyQxOjokM31cbiAgICB8IHBvcnRfZXhwcmVzc2lvbl9zaWcge1skMV19XG4gICAgO1xuXG5pbnRlcmZhY2VfZXhwcmVzc2lvbjpcbiAgLyplbXB0eSovIHtbXX1cbiAgICB8IHBvcnRfZXhwcmVzc2lvbiBDT01NQSBpbnRlcmZhY2VfZXhwcmVzc2lvbiB7JDE6OiQzfVxuICAgIHwgcG9ydF9leHByZXNzaW9uIHtbJDFdfVxuICAgIDtcblxuY291bnRlcl90ZXN0OlxuICAgfCBUWVBFIElOVCB7IFNvbWUgKEFzdC5DRVEgJDIscmhzX3BvcyAyKX1cbiAgIHwgVFlQRSBHUkVBVEVSIElOVCB7IFNvbWUgKEFzdC5DR1RFICQzLHJoc19wb3MgMyl9XG4gICB8IFRZUEUgU01BTExFUiBJTlQgeyBTb21lIChBc3QuQ0xURSAkMyxyaHNfcG9zIDMpfVxuICAgfCBUWVBFIElEIHsgU29tZSAoQXN0LkNWQVIgJDIscmhzX3BvcyAyKX1cblxucG9ydF9leHByZXNzaW9uOlxuICAgIHwgSUQgaW50ZXJuYWxfc3RhdGUgbGlua19zdGF0ZV9tb2Rcblx0IHsgQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD0kMjsgQXN0LnBvcnRfbGluaz1bXTtcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBOb25lOyBBc3QucG9ydF9saW5rX21vZCA9ICQzOyB9IH1cbiAgICB8IElEIGludGVybmFsX3N0YXRlIGxpbmtfc3RhdGUgbGlua19zdGF0ZV9tb2Rcblx0IHsgQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD0kMjsgQXN0LnBvcnRfbGluaz0kMztcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBOb25lOyBBc3QucG9ydF9saW5rX21vZCA9ICQ0OyB9IH1cbiAgICB8IElEIGludGVybmFsX3N0YXRlIERJViBLQVBQQV9NUksgbGlua19zdGF0ZV9tb2Rcblx0IHsgQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD0kMjsgQXN0LnBvcnRfbGluaz1bXTtcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBTb21lKCQ0LHJoc19wb3MgNCk7IEFzdC5wb3J0X2xpbmtfbW9kID0gJDU7IH0gfVxuICAgIHwgSUQgaW50ZXJuYWxfc3RhdGUgRElWIEtBUFBBX01SSyBsaW5rX3N0YXRlIGxpbmtfc3RhdGVfbW9kXG5cdCB7IEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9JDU7XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gU29tZSgkNCxyaHNfcG9zIDQpOyBBc3QucG9ydF9saW5rX21vZCA9ICQ2OyB9IH1cbiAgICB8IElEIFBMVVMgRVFVQUwgSU5UXG4gICAgICAgICB7IEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gTm9uZTtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAoJDQscmhzX3BvcyA0KX0gfVxuICAgIHwgSUQgUExVUyBFUVVBTCBNSU5VUyBJTlRcbiAgICAgICAgIHsgQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKCQxLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSBOb25lO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9ICgtJDUscmhzX3BvcyA1KX0gfVxuICAgIHwgSUQgY291bnRlcl90ZXN0IFBMVVMgRVFVQUwgSU5UXG4gICAgICAgICB7IEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gJDI7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKCQ1LHJoc19wb3MgNSl9IH1cbiAgIHwgSUQgY291bnRlcl90ZXN0IFBMVVMgRVFVQUwgTUlOVVMgSU5UXG4gICAgICAgICB7IEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gJDI7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKC0gJDYscmhzX3BvcyA2KX0gfVxuICAgfCBJRCBjb3VudGVyX3Rlc3RcbiAgICAgICAgIHsgQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKCQxLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSAkMjtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAwfSB9XG4gICAgO1xuXG5wb3J0X2V4cHJlc3Npb25fc2lnOlxuICAgfCBJRCBpbnRlcm5hbF9zdGF0ZSBsaW5rX3N0YXRlX21vZFxuICAgIFx0IHsgQXN0LlBvcnRcbiAgICBcdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9W107XG4gICAgXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IE5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kID0gJDM7IH0gfVxuICB8IElEIGludGVybmFsX3N0YXRlIGxpbmtfc3RhdGUgbGlua19zdGF0ZV9tb2RcbiAgICBcdCB7IEFzdC5Qb3J0XG4gICAgXHQgICB7QXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PSQyOyBBc3QucG9ydF9saW5rPSQzO1xuICAgIFx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBOb25lOyBBc3QucG9ydF9saW5rX21vZCA9ICQ0OyB9IH1cbiAgfCBJRCBpbnRlcm5hbF9zdGF0ZSBESVYgS0FQUEFfTVJLIGxpbmtfc3RhdGVfbW9kXG4gICAgXHQgeyBBc3QuUG9ydFxuICAgIFx0ICAge0FzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD0kMjsgQXN0LnBvcnRfbGluaz1bXTtcbiAgICBcdCAgICBBc3QucG9ydF9pbnRfbW9kID0gU29tZSgkNCxyaHNfcG9zIDQpOyBBc3QucG9ydF9saW5rX21vZCA9ICQ1OyB9IH1cbiAgfCBJRCBpbnRlcm5hbF9zdGF0ZSBESVYgS0FQUEFfTVJLIGxpbmtfc3RhdGUgbGlua19zdGF0ZV9tb2RcbiAgICBcdCB7IEFzdC5Qb3J0XG4gICAgXHQgICB7QXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PSQyOyBBc3QucG9ydF9saW5rPSQ1O1xuICAgIFx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBTb21lKCQ0LHJoc19wb3MgNCk7IEFzdC5wb3J0X2xpbmtfbW9kID0gJDY7IH0gfVxuICB8IElEIFBMVVMgRVFVQUwgSU5UXG4gICAgICAgICAgICAgeyBBc3QuQ291bnRlclxuICAgIFx0ICAgeyBBc3QuY291bnRlcl9zaWdfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWluID0gTm9uZTtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21heCA9IFNvbWUgKFNvbWUgJDQsIHJoc19wb3MgNCk7XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19kZWZhdWx0ID0gJDQ7XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlID0gQXN0LkZyb21fb3JpZ2luYWxfYXN0fX1cbiAgfCBJRCBQTFVTIEVRVUFMIE1JTlVTIElOVFxuICAgICAgICB7QXN0LkNvdW50ZXJcbiAgeyBBc3QuY291bnRlcl9zaWdfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuICAgIEFzdC5jb3VudGVyX3NpZ19taW4gPSBOb25lO1xuICAgIEFzdC5jb3VudGVyX3NpZ19tYXggPSBTb21lIChTb21lICgtJDUpLCByaHNfcG9zIDUpO1xuICAgIEFzdC5jb3VudGVyX3NpZ19kZWZhdWx0ID0gLSQ1O1xuICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlID0gQXN0LkZyb21fb3JpZ2luYWxfYXN0fX1cbiAgfCBJRCBjb3VudGVyX3Rlc3QgUExVUyBFUVVBTCBJTlRcbiAgICAgICB7IGxldCBtaW4gPVxuICAgICAgICAgICAgbWF0Y2ggJDIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoQXN0LkNFUSBpLF8pIC0+IGlcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lICgoQ0dURSBffENMVEUgX3xDVkFSIF8pLCBfKSAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIklzc3VlIGNvdW50ZXJzIGluIHNpZ25hdHVyZVwiKSlcbiAgICAgICAgaW4gQXN0LkNvdW50ZXJcbiAgICAgICAgIHsgQXN0LmNvdW50ZXJfc2lnX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21pbiA9IFNvbWUgKFNvbWUgbWluLCByaHNfcG9zIDIpO1xuICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWF4ID0gU29tZSAoU29tZSAkNSwgcmhzX3BvcyA1KTtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQgPSBtaW47XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlID0gQXN0LkZyb21fb3JpZ2luYWxfYXN0fX1cbiAgfCBJRCBjb3VudGVyX3Rlc3QgUExVUyBFUVVBTCBNSU5VUyBJTlRcbiAgICAgIHsgbGV0IG1pbiA9XG4gICAgICAgICAgIG1hdGNoICQyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoQXN0LkNFUSBpLF8pIC0+IGlcbiAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgKChDR1RFIF98Q0xURSBffENWQVIgXyksIF8pIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJJc3N1ZSBjb3VudGVycyBpbiBzaWduYXR1cmVcIikpXG4gICAgICAgaW5cbiAgICAgICAgQXN0LkNvdW50ZXJcbiAgICAgICAgeyBBc3QuY291bnRlcl9zaWdfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19taW4gPSBTb21lIChTb21lIG1pbiwgcmhzX3BvcyAyKTtcbiAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWF4ID0gU29tZSAoU29tZSAoLSQ2KSwgcmhzX3BvcyA2KTtcbiAgICAgICAgICBBc3QuY291bnRlcl9zaWdfZGVmYXVsdCA9IG1pbiA7XG4gICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX3Zpc2libGUgPSBBc3QuRnJvbV9vcmlnaW5hbF9hc3R9fVxuICB8IElEIGNvdW50ZXJfdGVzdFxuICAgICAgeyBsZXQgbWluID1cbiAgICAgICAgICAgbWF0Y2ggJDIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChBc3QuQ0VRIGksXykgLT4gaVxuICAgICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoKENHVEUgX3xDTFRFIF98Q1ZBUiBfKSwgXykgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIklzc3VlIGNvdW50ZXJzIGluIHNpZ25hdHVyZVwiKSlcbiAgICAgICBpblxuICAgICAgIEFzdC5Db3VudGVyXG4gIHsgQXN0LmNvdW50ZXJfc2lnX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcbiAgICBBc3QuY291bnRlcl9zaWdfbWluID0gU29tZSAoU29tZSBtaW4sIHJoc19wb3MgMik7XG4gICAgQXN0LmNvdW50ZXJfc2lnX21heCA9IE5vbmU7XG4gICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQgPSBtaW47XG4gICAgQXN0LmNvdW50ZXJfc2lnX3Zpc2libGUgPSBBc3QuRnJvbV9vcmlnaW5hbF9hc3R9fVxuXG5cbmludGVybmFsX3N0YXRlOlxuICAvKmVtcHR5Ki8ge1tdfVxuICAgIHwgS0FQUEFfTVJLIGludGVybmFsX3N0YXRlIHsoU29tZSAkMSxyaHNfcG9zIDEpOjokMn1cbiAgICB8IGVycm9yXG4gICAgICAge3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgIChhZGRfcG9zIFwiSXNzdWUgYWZ0ZXIgaW50ZXJuYWwgc3RhdGVcIikpfVxuICAgIDtcblxubGlua19zdGF0ZV9tb2Q6XG5cdHwge05vbmV9XG5cdHwgRElWIEtBUFBBX0xOSyBET1Qge1NvbWUgTm9uZX1cblx0fCBESVYgS0FQUEFfTE5LIElOVCB7U29tZSAoU29tZSAoJDMscmhzX3BvcyAzKSl9XG5cdHwgRElWIGVycm9yXG5cdHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0ICAoYWRkX3BvcyBcIkluY29ycmVjdCBsaW5rIG1vZGlmaWNhdGlvblwiKSl9O1xuXG5cbmFfbGlua19zdGF0ZTpcbiAgICB8IEtBUFBBX0xOSyBET1QgeyhMS2FwcGEuTE5LX0ZSRUUscmhzX3BvcyAyKX1cbiAgICB8IEtBUFBBX0xOSyBJTlQgeyhMS2FwcGEuTE5LX1ZBTFVFICgkMiwoKSkscmhzX3BvcyAyKX1cbiAgICB8IEtBUFBBX0xOSyBLQVBQQV9TRU1JIHsoTEthcHBhLkxOS19TT01FLHJoc19wb3MgMil9XG4gICAgfCBLQVBQQV9MTksgSUQgRE9UIElEIHthZGRfcG9zIChMS2FwcGEuTE5LX1RZUEVcblx0XHRcdFx0ICAgICAgKCgkMixyaHNfcG9zIDIpLCgkNCxyaHNfcG9zIDQpKSl9XG4gICAgfCBLQVBQQV9XTEQge2FkZF9wb3MgTEthcHBhLkxOS19BTll9XG4gICAgfCBLQVBQQV9MTksgZXJyb3Jcblx0e3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgKGFkZF9wb3MgXCJJbnZhbGlkIGxpbmsgc3RhdGVcIikpfVxuO1xuXG5saW5rX3N0YXRlOlxuXHR8IGFfbGlua19zdGF0ZSBsaW5rX3N0YXRlIHskMTo6JDJ9XG5cdHwgYV9saW5rX3N0YXRlIHtbJDFdfTtcblxuaW50ZXJhY3RpdmVfY29tbWFuZDpcblx0fCBSVU4gTkVXTElORSB7QXN0LlJVTiAoTG9jLmFubm90X3dpdGhfZHVtbXkgQWxnX2V4cHIuRkFMU0UpfVxuXHR8IFJVTiBib29sX2V4cHIgTkVXTElORSB7QXN0LlJVTiAkMn1cblx0fCBlZmZlY3RfbGlzdCBORVdMSU5FIHtBc3QuTU9ESUZZICQxfVxuXHR8IEVPRiB7QXN0LlFVSVR9XG5cdHwgZXJyb3Jcblx0e3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyBcIlVucmVjb2duaXplZCBjb21tYW5kXCIpKX1cbiUlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG57XG4gIG9wZW4gTGV4aW5nXG4gIG9wZW4gS2FwcGFQYXJzZXJcblxuICBsZXQgcmVhY2hfZW9mIGxleGJ1ZiA9XG4gICAgbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlXG5cbiBsZXQgcmVzZXRfZW9mIGxleGJ1ZiA9XG4gICBsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIGZhbHNlXG5cbiBsZXQgcG9zaXRpb24gbGV4YnVmID1cbiAgIGxldCBwb3MgPSBsZXhidWYubGV4X2N1cnJfcCBpblxuICAgKHBvcy5wb3NfZm5hbWUsIHBvcy5wb3NfbG51bSwgcG9zLnBvc19jbnVtIC0gcG9zLnBvc19ib2wpXG5cbiBsZXQga2V5d29yZF9vcl9pZCA9XG4gbGV0IGtleXdvcmRzID0gSGFzaHRibC5jcmVhdGUgMTUgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImRvXCIgRE8gaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcInNldFwiIFNFVCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwicmVwZWF0XCIgUkVQRUFUIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJ1bnRpbFwiIFVOVElMIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJJTkZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiaW5mXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImFsYXJtXCIgQUxBUk0gaW5cbiBmdW4geCAtPlxuIHRyeSBIYXNodGJsLmZpbmQga2V5d29yZHMgeCB3aXRoIE5vdF9mb3VuZCAtPiBJRCB4XG5cbmxldCBzcGFjZV9jaGFycyA9IFsnICc7J1xcbic7J1xcdCddXG59XG5cbmxldCBlb2wgPSAnXFxyJz8gJ1xcbidcbmxldCBibGFuayA9IFsnICcgJ1xcdCddXG5sZXQgaW50ZWdlciA9IChbJzAnLSc5J10rKVxubGV0IHJlYWwgPVxuICAgICAoKCgoWycwJy0nOSddKyAoJy4nIFsnMCctJzknXSopPykgfCAoJy4nIFsnMCctJzknXSspKVxuXHRbJ2UnICdFJ10gWycrJyAnLSddPyBbJzAnLSc5J10rKVxuICB8ICgoWycwJy0nOSddKyAnLicgWycwJy0nOSddKiApIHwgKFsnMCctJzknXSogJy4nIFsnMCctJzknXSspKSlcbmxldCBpZCA9ICgnXycqIFsnYSctJ3onICdBJy0nWiddIFsnYSctJ3onICdBJy0nWicgJzAnLSc5JyAnXycgJy0nICcrJ10qIClcbmxldCBpbnRlcm5hbF9zdGF0ZSA9ICd+JyAoWycwJy0nOScgJ2EnLSd6JyAnQSctJ1onICdfJyAnLScgJysnXSspXG5sZXQgcGVydCA9ICckJyBpZFxuXG5ydWxlIHRva2VuID0gcGFyc2Vcblx0IHwgJ1xcXFwnIGJsYW5rKiBlb2wge0xleGluZy5uZXdfbGluZSBsZXhidWYgOyB0b2tlbiBsZXhidWZ9XG5cdCB8IFwiJiZcIiB7QU5EfVxuXHQgfCBcInx8XCIge09SfVxuXHQgfCBcIjwtPlwiIHtLQVBQQV9MUkFSfVxuXHQgfCBcIi0+XCIge0tBUFBBX1JBUn1cblx0IHwgXCI8LVwiIHtMQVJ9XG5cdCB8IFwiPD5cIiB7RElGRn1cblx0IHwgcGVydCBhcyBzIHttYXRjaCBzIHdpdGhcblx0XHQgICAgICB8IFwiJERFTFwiIC0+IERFTEVURVxuXHRcdCAgICAgIHwgXCIkQUREXCIgLT4gSU5UUk9cblx0XHQgICAgICB8IFwiJEFQUExZXCIgLT4gQVBQTFlcblx0XHQgICAgICB8IFwiJFNOQVBTSE9UXCIgLT4gU05BUFNIT1Rcblx0XHQgICAgICB8IFwiJFNUT1BcIiAtPiBTVE9QXG5cdFx0ICAgICAgfCBcIiRGTFVYXCIgLT4gRkxVWFxuXHRcdCAgICAgIHwgXCIkVFJBQ0tcIiAtPiBUUkFDS1xuXHRcdCAgICAgIHwgXCIkVVBEQVRFXCIgLT4gQVNTSUdOXG5cdFx0ICAgICAgfCBcIiRQUklOVFwiIC0+IFBSSU5URlxuXHRcdCAgICAgIHwgXCIkUFJJTlRGXCIgLT4gUFJJTlRGXG5cdFx0ICAgICAgfCBcIiRQTE9URU5UUllcIiAtPiBQTE9URU5UUllcblx0XHQgICAgICB8IFwiJFJVTlwiIC0+IFJVTlxuXHRcdCAgICAgIHwgXCIkU1BFQ0lFU19PRlwiIC0+IFNQRUNJRVNfT0Zcblx0XHQgICAgICB8IHMgLT5cblx0XHRcdCByYWlzZVxuXHRcdFx0ICAgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAgICAoXCJQZXJ0dXJiYXRpb24gZWZmZWN0IFxcXCJcIl5zXlwiXFxcIiBpcyBub3QgZGVmaW5lZFwiLFxuXHRcdFx0ICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHRcdChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHRcdCAgICAgfVxuXHQgfCAnWycgYmxhbmsqIChpZCBhcyBsYWIpIGJsYW5rKiAnXScge1xuXHRcdG1hdGNoIGxhYiB3aXRoXG5cdFx0fCBcIkVcIiAtPiBFVkVOVFxuXHRcdHwgXCJFLVwiIC0+IE5VTExfRVZFTlRcblx0XHR8IFwiVFwiIC0+IFRJTUVcblx0XHR8IFwiVHNpbVwiIC0+IENQVVRJTUVcblx0XHR8IFwibG9nXCIgLT4gTE9HXG5cdFx0fCBcInNpblwiIC0+IFNJTlVTXG5cdFx0fCBcImNvc1wiIC0+IENPU0lOVVNcblx0XHR8IFwidGFuXCIgLT4gVEFOXG5cdFx0fCBcImV4cFwiIC0+IEVYUE9ORU5UXG5cdFx0fCBcImludFwiIC0+IEFCU1xuXHRcdHwgXCJtb2RcIiAtPiBNT0RVTE9cblx0XHR8IFwic3FydFwiIC0+IFNRUlRcblx0XHR8IFwidHJ1ZVwiIC0+IFRSVUVcblx0XHR8IFwiZmFsc2VcIiAtPiBGQUxTRVxuXHRcdHwgXCJwaVwiIC0+IEZMT0FUICgzLjE0MTU5MjY1KVxuXHRcdHwgXCJtYXhcIiAtPiBNQVhcblx0XHR8IFwibWluXCIgLT4gTUlOXG5cdFx0fCBcIkVtYXhcIiAtPiBFTUFYXG5cdFx0fCBcIlRtYXhcIiAtPiBUTUFYXG5cdFx0fCBcIj9cIiAtPiBUSEVOXG5cdFx0fCBcIjpcIiAtPiBFTFNFXG5cdFx0fCBcIm5vdFwiIC0+IE5PVFxuXHRcdHwgXyBhcyBzIC0+XG5cdFx0ICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAgKFwiU3ltYm9sIFxcXCJcIl5zXlwiXFxcIiBpcyBub3QgZGVmaW5lZFwiLFxuXHRcdFx0ICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdFx0ICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG5cdCAgICAgICB9XG5cdCB8ICc6JyB7VFlQRX1cblx0IHwgJzsnIHtTRU1JQ09MT059XG5cdCB8ICdcXFwiJyB7bGV0IHN0ciA9IHJlYWRfbGFiZWwgW10gWydcXFwiJ10gbGV4YnVmIGluXG5cdFx0IFNUUklORyBzdHJ9XG5cdCB8IGVvbCB7TGV4aW5nLm5ld19saW5lIGxleGJ1ZiA7IE5FV0xJTkV9XG5cdCB8ICcjJyB7Y29tbWVudCBsZXhidWZ9XG5cdCB8ICcvJyAnKicge2lubGluZV9jb21tZW50IGxleGJ1ZjsgdG9rZW4gbGV4YnVmfVxuXHQgfCBpbnRlZ2VyIGFzIG4ge3RyeSBJTlQgKGludF9vZl9zdHJpbmcgbilcblx0IHdpdGggRmFpbHVyZSBfIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQgKG5eXCIgaXMgYSBpbmNvcnJlY3QgaW50ZWdlclwiLFxuXHQgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0ICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpfVxuXG5cdCB8IHJlYWwgYXMgZiB7RkxPQVQgKGZsb2F0X29mX3N0cmluZyBmKX1cblx0IHwgJ1xcJycgKFteJ1xcbicnXFwnJ10rIGFzIHgpICdcXCcne0xBQkVMKHgpfVxuXHQgfCBpZCBhcyBzdHIge2tleXdvcmRfb3JfaWQgc3RyfVxuXHQgfCAnQCcge0FUfVxuXHQgfCAnLCcge0NPTU1BfVxuXHQgfCAnKCcge09QX1BBUn1cblx0IHwgJyknIHtDTF9QQVJ9XG5cdCB8ICd7JyB7T1BfQ1VSfVxuXHQgfCAnfScge0NMX0NVUn1cblx0IHwgJ3wnIHtQSVBFfVxuXHQgfCAnLicge0RPVH1cblx0IHwgJysnIHtQTFVTfVxuXHQgfCAnKicge01VTFR9XG5cdCB8ICctJyB7TUlOVVN9XG5cdCB8ICdeJyB7UE9XfVxuXHQgfCAnLycge0RJVn1cblx0IHwgJzwnIHtTTUFMTEVSfVxuXHQgfCAnPicge0dSRUFURVJ9XG5cdCB8ICc9JyB7RVFVQUx9XG5cdCB8ICclJyAoaWQgYXMgbGFiKSAnOicge1xuXHRcdG1hdGNoIGxhYiB3aXRoXG5cdFx0fCBcImFnZW50XCIgLT4gU0lHTkFUVVJFXG5cdFx0fCBcImluaXRcIiAtPiBJTklUXG5cdFx0fCBcInZhclwiIC0+IExFVFxuXHRcdHwgXCJwbG90XCIgLT4gUExPVFxuXHRcdHwgXCJtb2RcIiAtPiBQRVJUXG5cdFx0fCBcIm9ic1wiIC0+IE9CU1xuXHRcdHwgXCJkZWZcIiAtPiBDT05GSUdcblx0XHR8IFwidG9rZW5cIiAtPiBUT0tFTlxuXHRcdHwgXyBhcyBzIC0+XG5cdFx0ICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAgKFwiSW5zdHJ1Y3Rpb24gXFxcIlwiXnNeXCJcXFwiIG5vdCByZWNvZ25pemVkXCIsXG5cdFx0XHRcdFx0TG9jLm9mX3Bvc1xuXHRcdFx0XHRcdChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdFx0XHRcdCAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0ICAgICAgIH1cblx0IHwgJyEnIHtLQVBQQV9MTkt9XG5cdCB8IGludGVybmFsX3N0YXRlIGFzIHMge2xldCBpID0gU3RyaW5nLmluZGV4IHMgJ34nIGluXG5cdFx0XHRcdGxldCByID0gU3RyaW5nLnN1YiBzIChpKzEpIChTdHJpbmcubGVuZ3RoIHMtaS0xKSBpblxuXHRcdFx0XHRLQVBQQV9NUksgclxuXHRcdFx0ICAgICAgIH1cblx0IHwgJz8nIHtLQVBQQV9XTER9XG5cdCB8ICdfJyB7S0FQUEFfU0VNSX1cblx0IHwgYmxhbmsgIHt0b2tlbiBsZXhidWZ9XG5cdCB8IGVvZiB7cmVhY2hfZW9mIGxleGJ1ZjsgRU9GfVxuXHQgfCBfIGFzIGMge1xuXHRcdCAgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgICAgKFwiaW52YWxpZCB1c2Ugb2YgY2hhcmFjdGVyIFwiXiBTdHJpbmcubWFrZSAxIGMsXG5cdFx0XHQgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdFx0ICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHRcdCAgfVxuXG5hbmQgcmVhZF9sYWJlbCBhY2MgY2hhcl9saXN0ID1cbiAgcGFyc2VcbiAgfCBlb2Yge1N0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXZfbWFwIChmdW4geCAtPiBTdHJpbmcubWFrZSAxIHgpIGFjYyl9XG4gIHwgJ1xcXFwnIGJsYW5rKiBlb2wge0xleGluZy5uZXdfbGluZSBsZXhidWYgOyByZWFkX2xhYmVsIGFjYyBjaGFyX2xpc3QgbGV4YnVmfVxuICB8IF8gYXMgYyB7aWYgTGlzdC5tZW0gYyBjaGFyX2xpc3Rcblx0ICAgIHRoZW4gU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldl9tYXAgKGZ1biB4IC0+IFN0cmluZy5tYWtlIDEgeCkgYWNjKVxuXHQgICAgZWxzZSByZWFkX2xhYmVsIChjOjphY2MpIGNoYXJfbGlzdCBsZXhidWZ9XG5cbmFuZCBjb21tZW50ID0gcGFyc2Vcblx0ICAgIHwgZW9sIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgTkVXTElORX1cblx0ICAgIHwgJ1xcXFwnIGJsYW5rKiBlb2wge0xleGluZy5uZXdfbGluZSBsZXhidWY7IHRva2VuIGxleGJ1Zn1cblx0ICAgIHwgZW9mIHtFT0Z9XG5cdCAgICB8IF8ge2NvbW1lbnQgbGV4YnVmfVxuXG5hbmQgaW5saW5lX2NvbW1lbnQgPSBwYXJzZVxuXHRcdCAgIHwgZW9sIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCBsZXhidWZ9XG5cdFx0ICAgfCAnKicgJy8nIHsgKCkgfVxuXHRcdCAgIHwgJ1xcXCInXG5cdFx0ICAgICAgIHtpZ25vcmUgKHJlYWRfbGFiZWwgW10gWydcXFwiJ10gbGV4YnVmKTtcblx0XHRcdGlubGluZV9jb21tZW50IGxleGJ1Zn1cblx0XHQgICB8ICcvJyAnKicge2lubGluZV9jb21tZW50IGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgbGV4YnVmfVxuXHRcdCAgIHwgXyB7aW5saW5lX2NvbW1lbnQgbGV4YnVmfVxue1xuICBsZXQgY29tcGlsZSBsb2dnZXIgY29tcGlsIGZpbGUgPVxuICAgIGxldCBkID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgZCBpblxuICAgIGxldCAoKSA9IGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHtsZXhidWYubGV4X2N1cnJfcCB3aXRoIHBvc19mbmFtZSA9IGZpbGV9IGluXG4gICAgbGV0IGNvbXBpbCA9IHsgY29tcGlsIHdpdGggQXN0LmZpbGVuYW1lcyA9IGZpbGUgOjogY29tcGlsLkFzdC5maWxlbmFtZXMgfSBpblxuICAgIHRyeVxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nZ2VyIFwiUGFyc2luZyAlcy4uLkAuXCIgZmlsZSBpblxuICAgICAgbGV0IG91dCA9IEthcHBhUGFyc2VyLnN0YXJ0X3J1bGUgdG9rZW4gbGV4YnVmIGNvbXBpbCBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nZ2VyIFwiZG9uZUAuXCIgaW5cbiAgICAgIGxldCAoKSA9IGNsb3NlX2luIGQgaW4gb3V0XG4gICAgd2l0aCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAobXNnLHBvcykgLT5cbiAgICAgIGxldCAoKSA9IGNsb3NlX2luIGQgaW5cbiAgICAgIGxldCAoKSA9IFBwLmVycm9yIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgKG1zZyxwb3MpIGluXG4gICAgICBleGl0IDNcbn1cbiIsIiMgOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gXG4gIG9wZW4gTGV4aW5nXG4gIG9wZW4gS2FwcGFQYXJzZXJcblxuICBsZXQgcmVhY2hfZW9mIGxleGJ1ZiA9XG4gICAgbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlXG5cbiBsZXQgcmVzZXRfZW9mIGxleGJ1ZiA9XG4gICBsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIGZhbHNlXG5cbiBsZXQgcG9zaXRpb24gbGV4YnVmID1cbiAgIGxldCBwb3MgPSBsZXhidWYubGV4X2N1cnJfcCBpblxuICAgKHBvcy5wb3NfZm5hbWUsIHBvcy5wb3NfbG51bSwgcG9zLnBvc19jbnVtIC0gcG9zLnBvc19ib2wpXG5cbiBsZXQga2V5d29yZF9vcl9pZCA9XG4gbGV0IGtleXdvcmRzID0gSGFzaHRibC5jcmVhdGUgMTUgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImRvXCIgRE8gaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcInNldFwiIFNFVCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwicmVwZWF0XCIgUkVQRUFUIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJ1bnRpbFwiIFVOVElMIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJJTkZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiaW5mXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImFsYXJtXCIgQUxBUk0gaW5cbiBmdW4geCAtPlxuIHRyeSBIYXNodGJsLmZpbmQga2V5d29yZHMgeCB3aXRoIE5vdF9mb3VuZCAtPiBJRCB4XG5cbmxldCBzcGFjZV9jaGFycyA9IFsnICc7J1xcbic7J1xcdCddXG5cbiMgMzEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyMTNcXDI1NVxcMjE0XFwyNTVcXDIxNVxcMjU1XFwyMTdcXDI1NVxcMDg0XFwwMDBcXDIxOVxcMjU1XFwxNjBcXDAwMFxcXG4gICAgXFwyMjFcXDI1NVxcMjIyXFwyNTVcXDIyNVxcMjU1XFwyMjdcXDI1NVxcMjI4XFwyNTVcXDIzMVxcMjU1XFwyMzJcXDI1NVxcMjMzXFwyNTVcXFxuICAgIFxcMjM0XFwyNTVcXDIzNVxcMjU1XFwyMzZcXDI1NVxcMjQwXFwwMDBcXDA0MlxcMDAxXFwxMzZcXDAwMFxcMTU5XFwwMDBcXDExOVxcMDAxXFxcbiAgICBcXDA1MVxcMDAwXFwyNDJcXDI1NVxcMjQzXFwyNTVcXDAwMVxcMDAwXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDI0NlxcMjU1XFwxNTdcXDAwMVxcXG4gICAgXFwyMTVcXDAwMVxcMDM0XFwwMDBcXDA4M1xcMDAwXFwwMDZcXDAwMFxcMDkzXFwwMDBcXDE2OFxcMDAxXFwyNTVcXDI1NVxcMDAyXFwwMDBcXFxuICAgIFxcMTcwXFwwMDFcXDI1NFxcMjU1XFwyNTNcXDI1NVxcMjQ5XFwyNTVcXDA4MFxcMDAwXFwyNTJcXDI1NVxcMjUxXFwyNTVcXDAzOVxcMDAyXFxcbiAgICBcXDA5N1xcMDAyXFwyMTFcXDAwMlxcMDEzXFwwMDNcXDEyN1xcMDAzXFwyNDdcXDI1NVxcMjEyXFwwMDJcXDI0MVxcMjU1XFwxNDJcXDAwMVxcXG4gICAgXFwwODlcXDAwM1xcMTU1XFwwMDFcXDE3NFxcMDAyXFwxMTdcXDAwM1xcMTM4XFwwMDBcXDIzOFxcMjU1XFwxODVcXDAwM1xcMDA5XFwwMDRcXFxuICAgIFxcMDY3XFwwMDRcXDIyMFxcMjU1XFwxNDdcXDAwNFxcMjQ3XFwwMDFcXDI1M1xcMjU1XFwyMjNcXDAwMlxcMjU1XFwyNTVcXDI1NFxcMjU1XFxcbiAgICBcXDAwNFxcMDAwXFwyMjVcXDAwMlxcMTc4XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjM5XFwwMDJcXDI1NVxcMjU1XFwwMDVcXDAwMFxcXG4gICAgXFwyNTRcXDI1NVxcMDA2XFwwMDBcXDE0M1xcMDAzXFwwMDRcXDAwNVxcMjUxXFwyNTVcXDEwMVxcMDAwXFwyNTNcXDI1NVxcMDk3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwN1xcMDAwXFwyNTRcXDI1NVxcMjUyXFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MlxcMDAwXFwyNTVcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOFxcMDAwXFwwMzlcXDAwMFxcMDQyXFwwMDBcXDAyNlxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMDQyXFwwMDBcXDAyOVxcMDAwXFwwMzJcXDAwMFxcMDI1XFwwMDBcXDA0MlxcMDAwXFwwNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNjhcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAzOFxcMDAwXFwwMjdcXDAwMFxcMDcxXFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwNlxcMDAwXFwwMjhcXDAwMFxcMDI1XFwwMDBcXDAzMlxcMDAwXFwwMDdcXDAwMFxcMDM2XFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDAxNlxcMDAwXFwwMTVcXDAwMFxcMDExXFwwMDBcXDAxMlxcMDAwXFwwMTdcXDAwMFxcMDMzXFwwMDBcXDAyMlxcMDAwXFwwMjRcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMzBcXDAwMFxcMDI5XFwwMDBcXDAzNFxcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAzMVxcMDAwXFwwMzdcXDAwMFxcMDU0XFwwMDBcXDAxMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTRcXDAwMFxcMDM1XFwwMDBcXDAxM1xcMDAwXFwwMDVcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA2NlxcMDAwXFwwNDJcXDAwMFxcMDQxXFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA0NVxcMDAwXFwwOTFcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDQzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDAwMFxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA1OVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwNTZcXDAwMFxcMDUxXFwwMDBcXDAyM1xcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMDQwXFwwMDBcXDAzOFxcMDAwXFwwNDBcXDAwMFxcMDM4XFwwMDBcXDAzOVxcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMDU4XFwwMDBcXDA1NVxcMDAwXFwwNTFcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDAwXFwwMDBcXDA0MFxcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA2OVxcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDcxXFwwMDBcXDA3M1xcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFxcbiAgICBcXDA4MlxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDc3XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcXG4gICAgXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgyXFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDY2XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDAwMFxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODdcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyN1xcMDAwXFwwMzlcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDg5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDMzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAzNFxcMDAwXFwwMDVcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwNDRcXDAwMFxcMDg1XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDAzNFxcMDAwXFwwMjFcXDAwMFxcMjU1XFwyNTVcXDA2MFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNjBcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMjJcXDAwMFxcXG4gICAgXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyMVxcMDAwXFwwMjBcXDAwMFxcMDYwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIzXFwwMDBcXDAzMVxcMDAwXFwwMjNcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDAzN1xcMDAwXFwwMzdcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwMzdcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNTVcXDAwMFxcMjU1XFwyNTVcXDA1NVxcMDAwXFwwMjNcXDAwMFxcMDMxXFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDM3XFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIzXFwwMDBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDA0N1xcMDAwXFwwNjdcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA3NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDUzXFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXFxuICAgIFxcMDY5XFwwMDBcXDA2OVxcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA2OVxcMDAwXFwyNTVcXDI1NVxcMDczXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc3XFwwMDBcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDY5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA3M1xcMDAwXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDA3NFxcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDQ5XFwwMDBcXDA1M1xcMDAwXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMFxcMjU1XFwyNTVcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXFxuICAgIFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA4MlxcMDAwXFwwODJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODJcXDAwMFxcMjU1XFwyNTVcXDA1NlxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjJcXDAwMFxcMjU1XFwyNTVcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY0XFwwMDBcXDI1NVxcMjU1XFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNjZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAwXFwyNTVcXDI1NVxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwODNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA4M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDgzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4M1xcMDAwXCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDgwXFwwMDBcXDEzOFxcMDAwXFwyNTJcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0OVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlxcMjU1XFwwMDJcXDI1NVxcMjU1XFwwMDNcXDI1NVxcMjU1XFwwMDBcXDAwMlxcMDAxXFwwMDNcXDI1NVwiO1xufVxuXG5sZXQgcmVjIHRva2VuIGxleGJ1ZiA9XG4gIGxleGJ1Zi5MZXhpbmcubGV4X21lbSA8LSBBcnJheS5tYWtlIDQgKC0xKTsgX19vY2FtbF9sZXhfdG9rZW5fcmVjIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfdG9rZW5fcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5uZXdfZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWYgOyB0b2tlbiBsZXhidWYpXG4jIDY0MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgNTEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKEFORClcbiMgNjQ1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxuIyA1MiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAoT1IpXG4jIDY1MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDMgLT5cbiMgNTMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgIChLQVBQQV9MUkFSKVxuIyA2NTUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA0IC0+XG4jIDU0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChLQVBQQV9SQVIpXG4jIDY2MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDUgLT5cbiMgNTUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKExBUilcbiMgNjY1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgNiAtPlxuIyA1NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAoRElGRilcbiMgNjcwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgNyAtPlxubGV0XG4jIDU3IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgIHNcbiMgNjc2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDU3IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgKG1hdGNoIHMgd2l0aFxuXHRcdCAgICAgIHwgXCIkREVMXCIgLT4gREVMRVRFXG5cdFx0ICAgICAgfCBcIiRBRERcIiAtPiBJTlRST1xuXHRcdCAgICAgIHwgXCIkQVBQTFlcIiAtPiBBUFBMWVxuXHRcdCAgICAgIHwgXCIkU05BUFNIT1RcIiAtPiBTTkFQU0hPVFxuXHRcdCAgICAgIHwgXCIkU1RPUFwiIC0+IFNUT1Bcblx0XHQgICAgICB8IFwiJEZMVVhcIiAtPiBGTFVYXG5cdFx0ICAgICAgfCBcIiRUUkFDS1wiIC0+IFRSQUNLXG5cdFx0ICAgICAgfCBcIiRVUERBVEVcIiAtPiBBU1NJR05cblx0XHQgICAgICB8IFwiJFBSSU5UXCIgLT4gUFJJTlRGXG5cdFx0ICAgICAgfCBcIiRQUklOVEZcIiAtPiBQUklOVEZcblx0XHQgICAgICB8IFwiJFBMT1RFTlRSWVwiIC0+IFBMT1RFTlRSWVxuXHRcdCAgICAgIHwgXCIkUlVOXCIgLT4gUlVOXG5cdFx0ICAgICAgfCBcIiRTUEVDSUVTX09GXCIgLT4gU1BFQ0lFU19PRlxuXHRcdCAgICAgIHwgcyAtPlxuXHRcdFx0IHJhaXNlXG5cdFx0XHQgICAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgICAgIChcIlBlcnR1cmJhdGlvbiBlZmZlY3QgXFxcIlwiXnNeXCJcXFwiIGlzIG5vdCBkZWZpbmVkXCIsXG5cdFx0XHQgICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdFx0KExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG5cdFx0ICAgICApXG4jIDcwMCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDggLT5cbmxldFxuIyA3OCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGFiXG4jIDcwNiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMCkgbGV4YnVmLkxleGluZy5sZXhfbWVtLigxKSBpblxuIyA3OCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcblx0XHRtYXRjaCBsYWIgd2l0aFxuXHRcdHwgXCJFXCIgLT4gRVZFTlRcblx0XHR8IFwiRS1cIiAtPiBOVUxMX0VWRU5UXG5cdFx0fCBcIlRcIiAtPiBUSU1FXG5cdFx0fCBcIlRzaW1cIiAtPiBDUFVUSU1FXG5cdFx0fCBcImxvZ1wiIC0+IExPR1xuXHRcdHwgXCJzaW5cIiAtPiBTSU5VU1xuXHRcdHwgXCJjb3NcIiAtPiBDT1NJTlVTXG5cdFx0fCBcInRhblwiIC0+IFRBTlxuXHRcdHwgXCJleHBcIiAtPiBFWFBPTkVOVFxuXHRcdHwgXCJpbnRcIiAtPiBBQlNcblx0XHR8IFwibW9kXCIgLT4gTU9EVUxPXG5cdFx0fCBcInNxcnRcIiAtPiBTUVJUXG5cdFx0fCBcInRydWVcIiAtPiBUUlVFXG5cdFx0fCBcImZhbHNlXCIgLT4gRkFMU0Vcblx0XHR8IFwicGlcIiAtPiBGTE9BVCAoMy4xNDE1OTI2NSlcblx0XHR8IFwibWF4XCIgLT4gTUFYXG5cdFx0fCBcIm1pblwiIC0+IE1JTlxuXHRcdHwgXCJFbWF4XCIgLT4gRU1BWFxuXHRcdHwgXCJUbWF4XCIgLT4gVE1BWFxuXHRcdHwgXCI/XCIgLT4gVEhFTlxuXHRcdHwgXCI6XCIgLT4gRUxTRVxuXHRcdHwgXCJub3RcIiAtPiBOT1Rcblx0XHR8IF8gYXMgcyAtPlxuXHRcdCAgIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0ICAgIChcIlN5bWJvbCBcXFwiXCJec15cIlxcXCIgaXMgbm90IGRlZmluZWRcIixcblx0XHRcdCAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdCAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHQgICAgICAgKVxuIyA3MzkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA5IC0+XG4jIDEwOCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChUWVBFKVxuIyA3NDQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxMCAtPlxuIyAxMDkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoU0VNSUNPTE9OKVxuIyA3NDkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxMSAtPlxuIyAxMTAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKGxldCBzdHIgPSByZWFkX2xhYmVsIFtdIFsnXFxcIiddIGxleGJ1ZiBpblxuXHRcdCBTVFJJTkcgc3RyKVxuIyA3NTUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxMiAtPlxuIyAxMTIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoTGV4aW5nLm5ld19saW5lIGxleGJ1ZiA7IE5FV0xJTkUpXG4jIDc2MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDEzIC0+XG4jIDExMyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChjb21tZW50IGxleGJ1ZilcbiMgNzY1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTQgLT5cbiMgMTE0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgIChpbmxpbmVfY29tbWVudCBsZXhidWY7IHRva2VuIGxleGJ1ZilcbiMgNzcwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTUgLT5cbmxldFxuIyAxMTUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgblxuIyA3NzYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTE1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgKHRyeSBJTlQgKGludF9vZl9zdHJpbmcgbilcblx0IHdpdGggRmFpbHVyZSBfIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQgKG5eXCIgaXMgYSBpbmNvcnJlY3QgaW50ZWdlclwiLFxuXHQgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0ICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpKVxuIyA3ODQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxNiAtPlxubGV0XG4jIDEyMSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICBmXG4jIDc5MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxMjEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAoRkxPQVQgKGZsb2F0X29mX3N0cmluZyBmKSlcbiMgNzk0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTcgLT5cbmxldFxuIyAxMjIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDgwMCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSAobGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgKyAtMSkgaW5cbiMgMTIyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMQUJFTCh4KSlcbiMgODA0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTggLT5cbmxldFxuIyAxMjMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgIHN0clxuIyA4MTAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTIzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgKGtleXdvcmRfb3JfaWQgc3RyKVxuIyA4MTQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxOSAtPlxuIyAxMjQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoQVQpXG4jIDgxOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIwIC0+XG4jIDEyNSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChDT01NQSlcbiMgODI0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjEgLT5cbiMgMTI2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKE9QX1BBUilcbiMgODI5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjIgLT5cbiMgMTI3IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKENMX1BBUilcbiMgODM0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjMgLT5cbiMgMTI4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKE9QX0NVUilcbiMgODM5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjQgLT5cbiMgMTI5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKENMX0NVUilcbiMgODQ0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjUgLT5cbiMgMTMwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKFBJUEUpXG4jIDg0OSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDI2IC0+XG4jIDEzMSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChET1QpXG4jIDg1NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDI3IC0+XG4jIDEzMiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChQTFVTKVxuIyA4NTkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyOCAtPlxuIyAxMzMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoTVVMVClcbiMgODY0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjkgLT5cbiMgMTM0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKE1JTlVTKVxuIyA4NjkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzMCAtPlxuIyAxMzUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoUE9XKVxuIyA4NzQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzMSAtPlxuIyAxMzYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoRElWKVxuIyA4NzkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzMiAtPlxuIyAxMzcgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoU01BTExFUilcbiMgODg0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzMgLT5cbiMgMTM4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKEdSRUFURVIpXG4jIDg4OSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDM0IC0+XG4jIDEzOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChFUVVBTClcbiMgODk0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzUgLT5cbmxldFxuIyAxNDAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgbGFiXG4jIDkwMCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSAobGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgKyAtMSkgaW5cbiMgMTQwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChcblx0XHRtYXRjaCBsYWIgd2l0aFxuXHRcdHwgXCJhZ2VudFwiIC0+IFNJR05BVFVSRVxuXHRcdHwgXCJpbml0XCIgLT4gSU5JVFxuXHRcdHwgXCJ2YXJcIiAtPiBMRVRcblx0XHR8IFwicGxvdFwiIC0+IFBMT1Rcblx0XHR8IFwibW9kXCIgLT4gUEVSVFxuXHRcdHwgXCJvYnNcIiAtPiBPQlNcblx0XHR8IFwiZGVmXCIgLT4gQ09ORklHXG5cdFx0fCBcInRva2VuXCIgLT4gVE9LRU5cblx0XHR8IF8gYXMgcyAtPlxuXHRcdCAgIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgIChcIkluc3RydWN0aW9uIFxcXCJcIl5zXlwiXFxcIiBub3QgcmVjb2duaXplZFwiLFxuXHRcdFx0XHRcdExvYy5vZl9wb3Ncblx0XHRcdFx0XHQoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdFx0XHQgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG5cdCAgICAgICApXG4jIDkyMCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDM2IC0+XG4jIDE1NyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChLQVBQQV9MTkspXG4jIDkyNSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDM3IC0+XG5sZXRcbiMgMTU4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzXG4jIDkzMSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNTggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBpID0gU3RyaW5nLmluZGV4IHMgJ34nIGluXG5cdFx0XHRcdGxldCByID0gU3RyaW5nLnN1YiBzIChpKzEpIChTdHJpbmcubGVuZ3RoIHMtaS0xKSBpblxuXHRcdFx0XHRLQVBQQV9NUksgclxuXHRcdFx0ICAgICAgIClcbiMgOTM4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzggLT5cbiMgMTYyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKEtBUFBBX1dMRClcbiMgOTQzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzkgLT5cbiMgMTYzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKEtBUFBBX1NFTUkpXG4jIDk0OCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDQwIC0+XG4jIDE2NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICh0b2tlbiBsZXhidWYpXG4jIDk1MyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDQxIC0+XG4jIDE2NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChyZWFjaF9lb2YgbGV4YnVmOyBFT0YpXG4jIDk1OCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDQyIC0+XG5sZXRcbiMgMTY2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIGNcbiMgOTY0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cbiMgMTY2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgKFxuXHRcdCAgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgICAgKFwiaW52YWxpZCB1c2Ugb2YgY2hhcmFjdGVyIFwiXiBTdHJpbmcubWFrZSAxIGMsXG5cdFx0XHQgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdFx0ICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHRcdCAgKVxuIyA5NzMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3Rva2VuX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGFiZWwgYWNjIGNoYXJfbGlzdCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sYWJlbF9yZWMgYWNjIGNoYXJfbGlzdCBsZXhidWYgNjdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xhYmVsX3JlYyBhY2MgY2hhcl9saXN0IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTc1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXZfbWFwIChmdW4geCAtPiBTdHJpbmcubWFrZSAxIHgpIGFjYykpXG4jIDk4NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgMTc2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWYgOyByZWFkX2xhYmVsIGFjYyBjaGFyX2xpc3QgbGV4YnVmKVxuIyA5OTAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyIC0+XG5sZXRcbiMgMTc3IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIGNcbiMgOTk2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cbiMgMTc3IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgKGlmIExpc3QubWVtIGMgY2hhcl9saXN0XG5cdCAgICB0aGVuIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXZfbWFwIChmdW4geCAtPiBTdHJpbmcubWFrZSAxIHgpIGFjYylcblx0ICAgIGVsc2UgcmVhZF9sYWJlbCAoYzo6YWNjKSBjaGFyX2xpc3QgbGV4YnVmKVxuIyAxMDAyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xhYmVsX3JlYyBhY2MgY2hhcl9saXN0IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgY29tbWVudCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfY29tbWVudF9yZWMgbGV4YnVmIDc0XG5hbmQgX19vY2FtbF9sZXhfY29tbWVudF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxODIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAoTGV4aW5nLm5ld19saW5lIGxleGJ1ZiA7IE5FV0xJTkUpXG4jIDEwMTQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDE4MyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyB0b2tlbiBsZXhidWYpXG4jIDEwMTkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyIC0+XG4jIDE4NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgIChFT0YpXG4jIDEwMjQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzIC0+XG4jIDE4NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAoY29tbWVudCBsZXhidWYpXG4jIDEwMjkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2NvbW1lbnRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgaW5saW5lX2NvbW1lbnQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2lubGluZV9jb21tZW50X3JlYyBsZXhidWYgODNcbmFuZCBfX29jYW1sX2xleF9pbmxpbmVfY29tbWVudF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxODggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAoTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgbGV4YnVmKVxuIyAxMDQxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyAxODkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgKCAoKSApXG4jIDEwNDYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyIC0+XG4jIDE5MSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAoaWdub3JlIChyZWFkX2xhYmVsIFtdIFsnXFxcIiddIGxleGJ1Zik7XG5cdFx0XHRpbmxpbmVfY29tbWVudCBsZXhidWYpXG4jIDEwNTIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzIC0+XG4jIDE5MyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAoaW5saW5lX2NvbW1lbnQgbGV4YnVmOyBpbmxpbmVfY29tbWVudCBsZXhidWYpXG4jIDEwNTcgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA0IC0+XG4jIDE5NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAoaW5saW5lX2NvbW1lbnQgbGV4YnVmKVxuIyAxMDYyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9pbmxpbmVfY29tbWVudF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTk1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiBcbiAgbGV0IGNvbXBpbGUgbG9nZ2VyIGNvbXBpbCBmaWxlID1cbiAgICBsZXQgZCA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGQgaW5cbiAgICBsZXQgKCkgPSBsZXhidWYubGV4X2N1cnJfcCA8LSB7bGV4YnVmLmxleF9jdXJyX3Agd2l0aCBwb3NfZm5hbWUgPSBmaWxlfSBpblxuICAgIGxldCBjb21waWwgPSB7IGNvbXBpbCB3aXRoIEFzdC5maWxlbmFtZXMgPSBmaWxlIDo6IGNvbXBpbC5Bc3QuZmlsZW5hbWVzIH0gaW5cbiAgICB0cnlcbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcIlBhcnNpbmcgJXMuLi5ALlwiIGZpbGUgaW5cbiAgICAgIGxldCBvdXQgPSBLYXBwYVBhcnNlci5zdGFydF9ydWxlIHRva2VuIGxleGJ1ZiBjb21waWwgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcImRvbmVALlwiIGluXG4gICAgICBsZXQgKCkgPSBjbG9zZV9pbiBkIGluIG91dFxuICAgIHdpdGggRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKG1zZyxwb3MpIC0+XG4gICAgICBsZXQgKCkgPSBjbG9zZV9pbiBkIGluXG4gICAgICBsZXQgKCkgPSBQcC5lcnJvciBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIChtc2cscG9zKSBpblxuICAgICAgZXhpdCAzXG5cbiMgMTA4NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBjYXRhbG9nID0gS2ZpbGVzLmNyZWF0ZSAoKVxuXG50eXBlIF8gaGFuZGxlID1cbiAgfCBOb3RoaW5nIDogdW5pdCBoYW5kbGVcbiAgfCBDYXRhbG9nIDogS2ZpbGVzLmNhdGFsb2dfaXRlbSBsaXN0IGhhbmRsZVxuICB8IEluZm8gOiAoc3RyaW5nICogaW50KSBoYW5kbGVcbiAgfCBBc3QgOiBBc3QucGFyc2luZ19jb21waWwgaGFuZGxlXG5cbnR5cGUgYm94ID1cbiAgfCBCIDogJ2EgaGFuZGxlICogaW50ICogKCdhLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgLT4gYm94XG5cbmxldCByZXBseSBwb3N0IHdyaXRlX3YgaWQgdiA9XG4gIGxldCBtZXNzYWdlID1cbiAgICBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGVcbiAgICAgIChmdW4gYiAoKSAtPlxuICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgYiBpZCk7XG4gICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgUmVzdWx0X3V0aWwud3JpdGVfdCB3cml0ZV92XG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2xpc3QgUmVzdWx0X3V0aWwud3JpdGVfbWVzc2FnZSlcbiAgICAgICAgICAgICAgICBiIHYpO1xuICAgICAgICAgIF0pXG4gICAgICAoKVxuICBpblxuICBwb3N0IG1lc3NhZ2VcblxubGV0IHdyaXRlX2NhdGFsb2dfaXRlbXMgPSBKc29uVXRpbC53cml0ZV9saXN0IEtmaWxlcy53cml0ZV9jYXRhbG9nX2l0ZW1cblxubGV0IGxpZnRfYW5zd2VyID0gZnVuY3Rpb25cbiAgfCBSZXN1bHQuT2sgeCAtPiBSZXN1bHRfdXRpbC5vayB4XG4gIHwgUmVzdWx0LkVycm9yIHRleHQgLT5cbiAgICBSZXN1bHRfdXRpbC5lcnJvclxuICAgICAgWyB7IFJlc3VsdF91dGlsLnJhbmdlID0gTm9uZTsgc2V2ZXJpdHkgPSBMb2dzLkVycm9yOyB0ZXh0IH0gXVxuXG5sZXQgb25fbWVzc2FnZSB5aWVsZCBwb3N0ID1cbiAgbGV0IGN1cnJlbnRfaWQgPSByZWYgTm9uZSBpblxuICBmdW4gdGV4dCAtPlxuICAgIHRyeVxuICAgICAgTHd0LmJpbmRcbiAgICAgICAgKEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nXG4gICAgICAgICAgIChKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50IChmdW4gc3QgYiBtc2dfaWQgLT5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBjdXJyZW50X2lkIDo9IFNvbWUgbXNnX2lkIGluXG4gICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIChmdW4gc3QgYiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgfCBcIkZpbGVDYXRhbG9nXCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IG91dCA9IEtmaWxlcy5jYXRhbG9nIGNhdGFsb2cgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQiAoQ2F0YWxvZywgbXNnX2lkLCBSZXN1bHRfdXRpbC5vayBvdXQpKVxuICAgICAgICAgICAgICAgICAgICAgfCBcIkZpbGVDcmVhdGVcIiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgcG9zaXRpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2ludCBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBpZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBvdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEtmaWxlcy5maWxlX2NyZWF0ZSB+cG9zaXRpb24gfmlkIH5jb250ZW50IGNhdGFsb2dcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQiAoTm90aGluZywgbXNnX2lkLCBsaWZ0X2Fuc3dlciBvdXQpKVxuICAgICAgICAgICAgICAgICAgICAgfCBcIkZpbGVHZXRcIiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBvdXQgPSBLZmlsZXMuZmlsZV9nZXQgfmlkIGNhdGFsb2cgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQiAoSW5mbywgbXNnX2lkLCBsaWZ0X2Fuc3dlciBvdXQpKVxuICAgICAgICAgICAgICAgICAgICAgfCBcIkZpbGVNb3ZlXCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBvdXQgPSBLZmlsZXMuZmlsZV9tb3ZlIH5wb3NpdGlvbiB+aWQgY2F0YWxvZyBpblxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChCIChOb3RoaW5nLCBtc2dfaWQsIGxpZnRfYW5zd2VyIG91dCkpXG4gICAgICAgICAgICAgICAgICAgICB8IFwiRmlsZVVwZGF0ZVwiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBpZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBvdXQgPSBLZmlsZXMuZmlsZV9wYXRjaCB+aWQgY29udGVudCBjYXRhbG9nIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKE5vdGhpbmcsIG1zZ19pZCwgbGlmdF9hbnN3ZXIgb3V0KSlcbiAgICAgICAgICAgICAgICAgICAgIHwgXCJGaWxlRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3V0ID0gS2ZpbGVzLmZpbGVfZGVsZXRlIH5pZCBjYXRhbG9nIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKE5vdGhpbmcsIG1zZ19pZCwgbGlmdF9hbnN3ZXIgb3V0KSlcbiAgICAgICAgICAgICAgICAgICAgIHwgXCJQcm9qZWN0UGFyc2VcIiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBMd3QuYmluZCAoS2ZpbGVzLnBhcnNlIHlpZWxkIGNhdGFsb2cpIChmdW4gb3V0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChCIChBc3QsIG1zZ19pZCwgb3V0KSkpXG4gICAgICAgICAgICAgICAgICAgICB8IFwiUHJvamVjdE92ZXJ3cml0ZVwiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBpZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIEFzdC5yZWFkX3BhcnNpbmdfY29tcGlsIHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gS2ZpbGVzLm92ZXJ3cml0ZSBpZCBjb250ZW50IGNhdGFsb2cgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQiAoTm90aGluZywgbXNnX2lkLCBSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgICAgICAgIChCXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBOb3RoaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5FcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSBcIkludmFsaWQgZGlyZWN0aXZlOiBcIiBeIHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSApKSkpXG4gICAgICAgICAgICAgICAgICBzdCBiKSlcbiAgICAgICAgICAgdGV4dClcbiAgICAgICAgKGZ1biBhbnN3ZXIgLT5cbiAgICAgICAgICBsZXQgKCkgPSBjdXJyZW50X2lkIDo9IE5vbmUgaW5cbiAgICAgICAgICBtYXRjaCBhbnN3ZXIgd2l0aFxuICAgICAgICAgIHwgQiAoQ2F0YWxvZywgbXNnX2lkLCB4KSAtPiByZXBseSBwb3N0IHdyaXRlX2NhdGFsb2dfaXRlbXMgbXNnX2lkIHhcbiAgICAgICAgICB8IEIgKE5vdGhpbmcsIG1zZ19pZCwgeCkgLT5cbiAgICAgICAgICAgIHJlcGx5IHBvc3QgWW9qc29uLkJhc2ljLndyaXRlX251bGwgbXNnX2lkIHhcbiAgICAgICAgICB8IEIgKEFzdCwgbXNnX2lkLCB4KSAtPiByZXBseSBwb3N0IEFzdC53cml0ZV9wYXJzaW5nX2NvbXBpbCBtc2dfaWQgeFxuICAgICAgICAgIHwgQiAoSW5mbywgbXNnX2lkLCB4KSAtPlxuICAgICAgICAgICAgcmVwbHkgcG9zdFxuICAgICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmdcbiAgICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2ludClcbiAgICAgICAgICAgICAgbXNnX2lkIHgpXG4gICAgd2l0aCBlIC0+XG4gICAgICAobWF0Y2ggIWN1cnJlbnRfaWQgd2l0aFxuICAgICAgfCBTb21lIG1zZ19pZCAtPlxuICAgICAgICByZXBseSBwb3N0IFlvanNvbi5CYXNpYy53cml0ZV9udWxsIG1zZ19pZFxuICAgICAgICAgIChSZXN1bHRfdXRpbC5lcnJvclxuICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLkVycm9yO1xuICAgICAgICAgICAgICAgICByYW5nZSA9IE5vbmU7XG4gICAgICAgICAgICAgICAgIHRleHQgPSBcIkV4Y2VwdGlvbiByYWlzZWQ6IFwiIF4gUHJpbnRleGMudG9fc3RyaW5nIGU7XG4gICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgIF0pXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIGUgd2l0aFxuICAgICAgICB8IFlvanNvbi5Kc29uX2Vycm9yIHggLT5cbiAgICAgICAgICBwb3N0XG4gICAgICAgICAgICAoWW9qc29uLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgKGBTdHJpbmdcbiAgICAgICAgICAgICAgICAgKHggXiBcIlxcbk1lc3NhZ2UgZm9ybWF0IG11c3QgYmUgWyBpZCwgW1xcXCJSZXF1ZXN0XFxcIiwgLi4uIF0gXVwiKSkpXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgIHBvc3RcbiAgICAgICAgICAgIChZb2pzb24udG9fc3RyaW5nXG4gICAgICAgICAgICAgICAoYFN0cmluZ1xuICAgICAgICAgICAgICAgICAoXCJ1bmV4cGVjdGVkIGV4Y2VwdGlvbjogXCIgXiBQcmludGV4Yy50b19zdHJpbmcgZVxuICAgICAgICAgICAgICAgIF4gXCJcXG5NZXNzYWdlIGZvcm1hdCBtdXN0IGJlIFsgaWQsIFtcXFwiUmVxdWVzdFxcXCIsIC4uLiBdIF1cIikpKSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEFzdFxuXG5sZXQgcmVjIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluIChhbGcsIHBvcykgPVxuICBtYXRjaCBhbGcgd2l0aFxuICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIGFzdCAtPlxuICAgIChtYXRjaCBkb21haW4gd2l0aFxuICAgIHwgU29tZSAob3JpZ2luLCBjb250YWN0X21hcCwgZG9tYWluKSAtPlxuICAgICAgbGV0IGRvbWFpbicsIGNjcyA9XG4gICAgICAgIFBhdHRlcm5fY29tcGlsZXIuY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19taXh0dXJlXG4gICAgICAgICAgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gP29yaWdpbiBhc3RcbiAgICAgIGluXG4gICAgICBsZXQgb3V0X2NjcyA9IExpc3QubWFwIChmdW4gKHgsIF8pIC0+IEFycmF5Lm1hcCBmc3QgeCkgY2NzIGluXG4gICAgICBTb21lIChvcmlnaW4sIGNvbnRhY3RfbWFwLCBkb21haW4nKSwgKEFsZ19leHByLktBUFBBX0lOU1RBTkNFIG91dF9jY3MsIHBvcylcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgIChcIlRoZW9yaXRpY2FsbHkgcHVyZSBhbGdfZXhwciBoYXMgYSBtaXh0dXJlXCIsIHBvcykpKVxuICB8IEFsZ19leHByLkFMR19WQVIgaSAtPiBkb21haW4sIChBbGdfZXhwci5BTEdfVkFSIGksIHBvcylcbiAgfCBBbGdfZXhwci5UT0tFTl9JRCBpIC0+IGRvbWFpbiwgKEFsZ19leHByLlRPS0VOX0lEIGksIHBvcylcbiAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1Agb3AgLT4gZG9tYWluLCAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIG9wLCBwb3MpXG4gIHwgQWxnX2V4cHIuQ09OU1QgbiAtPiBkb21haW4sIChBbGdfZXhwci5DT05TVCBuLCBwb3MpXG4gIHwgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpIC0+XG4gICAgbGV0IGRvbWFpbicsIGEnID0gY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gYSBpblxuICAgIGxldCBkb21haW4nJywgYicgPSBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbicgYiBpblxuICAgIGRvbWFpbicnLCAoQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEnLCBiJyksIHBvcylcbiAgfCBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSAtPlxuICAgIGxldCBkb21haW4nLCBhJyA9IGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluIGEgaW5cbiAgICBkb21haW4nLCAoQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYScpLCBwb3MpXG4gIHwgQWxnX2V4cHIuSUYgKGNvbmQsIHllcywgbm8pIC0+XG4gICAgbGV0IGRvbWFpbicsIGNvbmQnID1cbiAgICAgIGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbiBjb25kXG4gICAgaW5cbiAgICBsZXQgZG9tYWluJycsIHllcycgPSBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbicgeWVzIGluXG4gICAgbGV0IGRvbWFpbicnJywgbm8nID0gY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4nJyBubyBpblxuICAgIGRvbWFpbicnJywgKEFsZ19leHByLklGIChjb25kJywgeWVzJywgbm8nKSwgcG9zKVxuICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKFwiQ2Fubm90IGRlYWwgd2l0aCBkZXJpdmF0aXZlIGluIGV4cHJlc3Npb25zXCIsIHBvcykpXG5cbmFuZCBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gPSBmdW5jdGlvblxuICB8IEFsZ19leHByLlRSVUUsIHBvcyAtPiBkb21haW4sIChBbGdfZXhwci5UUlVFLCBwb3MpXG4gIHwgQWxnX2V4cHIuRkFMU0UsIHBvcyAtPiBkb21haW4sIChBbGdfZXhwci5GQUxTRSwgcG9zKVxuICB8IEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgYSwgYiksIHBvcyAtPlxuICAgIGxldCBkb21haW4nLCBhJyA9IGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbiBhIGluXG4gICAgbGV0IGRvbWFpbicnLCBiJyA9IGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbicgYiBpblxuICAgIGRvbWFpbicnLCAoQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCBhJywgYicpLCBwb3MpXG4gIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIGEpLCBwb3MgLT5cbiAgICBsZXQgZG9tYWluJywgYScgPSBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gYSBpblxuICAgIGRvbWFpbicsIChBbGdfZXhwci5VTl9CT09MX09QIChvcCwgYScpLCBwb3MpXG4gIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIGEsIGIpLCBwb3MgLT5cbiAgICBsZXQgZG9tYWluJywgYScgPSBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbiBhIGluXG4gICAgbGV0IGRvbWFpbicnLCBiJyA9IGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluJyBiIGluXG4gICAgZG9tYWluJycsIChBbGdfZXhwci5DT01QQVJFX09QIChvcCwgYScsIGInKSwgcG9zKVxuXG5sZXQgY29tcGlsZV9wdXJlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIChhbGcsIHBvcykgPVxuICBzbmQgQEAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBOb25lIChhbGcsIHBvcylcblxubGV0IGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gP29yaWdpbiBjb250YWN0X21hcCBkb21haW5cbiAgICAoYWxnLCBwb3MpID1cbiAgbWF0Y2hcbiAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uXG4gICAgICAoU29tZSAob3JpZ2luLCBjb250YWN0X21hcCwgZG9tYWluKSlcbiAgICAgIChhbGcsIHBvcylcbiAgd2l0aFxuICB8IFNvbWUgKF8sIF8sIGRvbWFpbiksIGFsZyAtPiBkb21haW4sIGFsZ1xuICB8IE5vbmUsIF8gLT4gZmFpbHdpdGggXCJkb21haW4gaGFzIGJlZW4gbG9zdCBpbiBFeHByLmNvbXBpbGVfYWxnXCJcblxubGV0IGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uID9vcmlnaW4gY29udGFjdF9tYXAgZG9tYWluXG4gICAgKGFsZywgcG9zKSA9XG4gIG1hdGNoXG4gICAgY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb25cbiAgICAgIChTb21lIChvcmlnaW4sIGNvbnRhY3RfbWFwLCBkb21haW4pKVxuICAgICAgKGFsZywgcG9zKVxuICB3aXRoXG4gIHwgU29tZSAoXywgXywgZG9tYWluKSwgYWxnIC0+IGRvbWFpbiwgYWxnXG4gIHwgTm9uZSwgXyAtPiBmYWlsd2l0aCBcImRvbWFpbiBoYXMgYmVlbiBsb3N0IGluIEV4cHIuY29tcGlsZV9hbGdcIlxuXG5sZXQgdG9rZW5pZnkgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gbCA9XG4gIExpc3QuZm9sZF9yaWdodFxuICAgIChmdW4gKGFsZ19leHByLCBpZCkgKGRvbWFpbiwgb3V0KSAtPlxuICAgICAgbGV0IGRvbWFpbicsIGFsZyA9XG4gICAgICAgIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGFsZ19leHByXG4gICAgICBpblxuICAgICAgZG9tYWluJywgKGFsZywgaWQpIDo6IG91dClcbiAgICBsIChkb21haW4sIFtdKVxuXG4oKiB0cmFuc2Zvcm0gYW4gTEthcHBhIHJ1bGUgaW50byBhIFByaW1pdGl2ZXMgcnVsZSAqKVxubGV0IHJ1bGVzX29mX2FzdCB+ZGVidWdfbW9kZSB+d2FybmluZyA/ZGVwc19tYWNoaW5lcnkgfmNvbXBpbGVfbW9kZV9vblxuICAgIGNvbnRhY3RfbWFwIGRvbWFpbiB+c3ludGF4X3JlZiAocnVsZSwgXykgPVxuICBsZXQgZG9tYWluJywgZGVsdGFfdG9rcyA9XG4gICAgdG9rZW5pZnkgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW5cbiAgICAgIHJ1bGUuTEthcHBhLnJfZGVsdGFfdG9rZW5zXG4gIGluXG4gICgqIGxldCBvbmVfc2lkZSBzeW50YXhfcmVmIGxhYmVsIChkb21haW4sZGVwc19tYWNoaW5lcnksdW5hcnlfY2NzLGFjYylcbiAgICAgICByYXRlIHVuYXJ5X3JhdGUgbGhzIHJocyBybSBhZGQgPSopXG4gIGxldCBvcmlnaW4sIGRlcHMgPVxuICAgIG1hdGNoIGRlcHNfbWFjaGluZXJ5IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSwgTm9uZVxuICAgIHwgU29tZSAobywgZCkgLT4gU29tZSBvLCBTb21lIGRcbiAgaW5cbiAgbGV0IHVuYXJ5X2luZm9zID1cbiAgICBsZXQgY3JwID1cbiAgICAgIGNvbXBpbGVfcHVyZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBydWxlLkxLYXBwYS5yX3JhdGVcbiAgICBpblxuICAgIG1hdGNoIHJ1bGUuTEthcHBhLnJfdW5fcmF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IGZ1biBfIC0+IGNycCwgTm9uZVxuICAgIHwgU29tZSAoKChfLCBwb3MpIGFzIHJhdGUpLCBkaXN0KSAtPlxuICAgICAgbGV0IGRpc3QnID1cbiAgICAgICAgbWF0Y2ggZGlzdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBkIC0+XG4gICAgICAgICAgbGV0IGQnLCBfID0gY29tcGlsZV9wdXJlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGQgaW5cbiAgICAgICAgICBTb21lIGQnXG4gICAgICBpblxuICAgICAgbGV0IHVucmF0ZSA9IGNvbXBpbGVfcHVyZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiByYXRlIGluXG4gICAgICBmdW4gY2NzIC0+XG4gICAgICAgIChtYXRjaCBBcnJheS5sZW5ndGggY2NzIHdpdGhcbiAgICAgICAgfCAwIHwgMSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3RleHQgZlxuICAgICAgICAgICAgICAgICAgXCJVc2VsZXNzIG1vbGVjdWxhciBhbWJpZ3VpdHksIHRoZSBydWxlcyBpcyBhbHdheXMgY29uc2lkZXJlZCBcXFxuICAgICAgICAgICAgICAgICAgIGFzIHVuYXJ5LlwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdW5yYXRlLCBOb25lXG4gICAgICAgIHwgMiAtPiBjcnAsIFNvbWUgKHVucmF0ZSwgZGlzdCcpXG4gICAgICAgIHwgbiAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKCBcIlVuYXJ5IHJ1bGUgZG9lcyBub3QgZGVhbCB3aXRoIFwiIF4gc3RyaW5nX29mX2ludCBuXG4gICAgICAgICAgICAgICAgIF4gXCIgY29ubmVjdGVkIGNvbXBvbmVudHMuXCIsXG4gICAgICAgICAgICAgICAgIHBvcyApKSlcbiAgaW5cbiAgbGV0IGJ1aWxkIGRlcHMgKG9yaWdpbiwgY2NzLCBzeW50YXgsIChuZWcsIHBvcykpID1cbiAgICBsZXQgY2NzJyA9IEFycmF5Lm1hcCBmc3QgY2NzIGluXG4gICAgbGV0IHJhdGUsIHVucmF0ZSA9IHVuYXJ5X2luZm9zIGNjcycgaW5cbiAgICAoIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgb3JpZ2luID1cbiAgICAgICAgICAgIG1hdGNoIG9yaWdpbiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgbyAtPiBvXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJ1Z2x5IEV2YWwucnVsZV9vZl9hc3RcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHgnID1cbiAgICAgICAgICAgIG1hdGNoIHVucmF0ZSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4geFxuICAgICAgICAgICAgfCBTb21lICh1ciwgXykgLT4gQWxnX2V4cHIuYWRkX2RlcCB4IG9yaWdpbiB1clxuICAgICAgICAgIGluXG4gICAgICAgICAgQWxnX2V4cHIuYWRkX2RlcCB4JyBvcmlnaW4gcmF0ZSlcbiAgICAgICAgZGVwcyxcbiAgICAgIHtcbiAgICAgICAgUHJpbWl0aXZlcy51bmFyeV9yYXRlID0gdW5yYXRlO1xuICAgICAgICBQcmltaXRpdmVzLnJhdGU7XG4gICAgICAgIFByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgPSBjY3MnO1xuICAgICAgICBQcmltaXRpdmVzLnJlbW92ZWQgPSBuZWc7XG4gICAgICAgIFByaW1pdGl2ZXMuaW5zZXJ0ZWQgPSBwb3M7XG4gICAgICAgIFByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zID0gZGVsdGFfdG9rcztcbiAgICAgICAgUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZSA9IHN5bnRheF9yZWY7XG4gICAgICAgIFByaW1pdGl2ZXMuaW5zdGFudGlhdGlvbnMgPSBzeW50YXg7XG4gICAgICB9IClcbiAgaW5cbiAgbGV0IHJ1bGVfbWl4dHVyZXMsIChkb21haW4nLCBvcmlnaW4nKSA9XG4gICAgUGF0dGVybl9jb21waWxlci5jb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW1iaWd1b3VzX3J1bGUgfmRlYnVnX21vZGVcbiAgICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluJyA/b3JpZ2luIHJ1bGUuTEthcHBhLnJfbWl4XG4gICAgICBydWxlLkxLYXBwYS5yX2NyZWF0ZWRcbiAgaW5cbiAgbGV0IGRlcHNfYWxncycsIHJ1bGVzX2wgPVxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biByIChkZXBzX2FsZ3MsIG91dCkgLT5cbiAgICAgICAgbGV0IGRlcHNfYWxncycsIHInJyA9IGJ1aWxkIGRlcHNfYWxncyByIGluXG4gICAgICAgIGRlcHNfYWxncycsIHInJyA6OiBvdXQpXG4gICAgICBydWxlX21peHR1cmVzIChkZXBzLCBbXSlcbiAgaW5cbiAgKCBkb21haW4nLFxuICAgIChtYXRjaCBvcmlnaW4nIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBvIC0+XG4gICAgICBTb21lXG4gICAgICAgICggbyxcbiAgICAgICAgICBtYXRjaCBkZXBzX2FsZ3MnIHdpdGhcbiAgICAgICAgICB8IFNvbWUgZCAtPiBkXG4gICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwidWdseSBFdmFsLnJ1bGVfb2ZfYXN0XCIgKSksXG4gICAgcnVsZXNfbCApXG5cbmxldCBvYnNfb2ZfcmVzdWx0IH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGFsZ19kZXBzIHJlcyA9XG4gIGxldCBkb21haW4sIG91dCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGRvbWFpbiwgY29udCkgYWxnX2V4cHIgLT5cbiAgICAgICAgbGV0IGRvbWFpbicsIGFsZ19wb3MgPVxuICAgICAgICAgIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGFsZ19leHByXG4gICAgICAgIGluXG4gICAgICAgIGRvbWFpbicsIGFsZ19wb3MgOjogY29udClcbiAgICAgIChkb21haW4sIFtdKSByZXMub2JzZXJ2YWJsZXNcbiAgaW5cbiAgaWYgTGlzdC5leGlzdHMgKEFsZ19leHByLmhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZTpmYWxzZSBhbGdfZGVwcykgb3V0IHRoZW5cbiAgICBkb21haW4sIExpc3QucmV2IG91dFxuICBlbHNlXG4gICAgKCBkb21haW4sXG4gICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRJTUVfVkFSKVxuICAgICAgOjogTGlzdC5yZXYgb3V0IClcblxubGV0IGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBleCA9XG4gIExpc3QuZm9sZF9yaWdodFxuICAgIChmdW4gZWwgKGRvbWFpbiwgb3V0KSAtPlxuICAgICAgbWF0Y2ggZWwgd2l0aFxuICAgICAgfCBQcmltaXRpdmVzLlN0cl9wZXhwciBzIC0+IGRvbWFpbiwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgcyA6OiBvdXRcbiAgICAgIHwgUHJpbWl0aXZlcy5BbGdfcGV4cHIgYXN0X2FsZyAtPlxuICAgICAgICBsZXQgZG9tYWluJywgYWxnID1cbiAgICAgICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhc3RfYWxnXG4gICAgICAgIGluXG4gICAgICAgIGRvbWFpbicsIFByaW1pdGl2ZXMuQWxnX3BleHByIGFsZyA6OiBvdXQpXG4gICAgZXggKGRvbWFpbiwgW10pXG5cbmxldCBjZmxvd3Nfb2ZfbGFiZWwgfmRlYnVnX21vZGUgb3JpZ2luIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIG9uXG4gICAgYWxncyBydWxlcyAobGFiZWwsIHBvcykgcmV2X2VmZmVjdHMgPVxuICBsZXQgYWRkcyB0ZXN0cyBsIHggPVxuICAgIGlmIG9uIHRoZW5cbiAgICAgIFByaW1pdGl2ZXMuQ0ZMT1cgKFNvbWUgbGFiZWwsIHgsIHRlc3RzKSA6OiBsXG4gICAgZWxzZVxuICAgICAgUHJpbWl0aXZlcy5DRkxPV09GRiAoU29tZSBsYWJlbCwgeCkgOjogbFxuICBpblxuICBsZXQgbWl4ID1cbiAgICB0cnlcbiAgICAgIGxldCBfLCAocnVsZSwgXykgPVxuICAgICAgICBMaXN0LmZpbmRcbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgTm9uZSwgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBTb21lIChsLCBfKSwgXyAtPiBsID0gbGFiZWwpXG4gICAgICAgICAgcnVsZXNcbiAgICAgIGluXG4gICAgICBMS2FwcGEudG9fbWFpbnRhaW5lZCBydWxlLkxLYXBwYS5yX21peFxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAodHJ5XG4gICAgICAgICBsZXQgXywgKHZhciwgXykgPSBMaXN0LmZpbmQgKGZ1biAoKGwsIF8pLCBfKSAtPiBsID0gbGFiZWwpIGFsZ3MgaW5cbiAgICAgICAgIG1hdGNoIHZhciB3aXRoXG4gICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIG1peCAtPiBtaXhcbiAgICAgICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfIHwgQWxnX2V4cHIuVU5fQUxHX09QIF9cbiAgICAgICAgIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfXG4gICAgICAgICB8IEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5JRiBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfXG4gICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyAtPlxuICAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgKCBcIkxhYmVsICdcIiBeIGxhYmVsXG4gICAgICAgICAgICAgICAgXiBcIicgZG9lcyBub3QgcmVmZXIgdG8gYSBub24gYW1iaWd1b3VzIEthcHBhIGV4cHJlc3Npb25cIixcbiAgICAgICAgICAgICAgICBwb3MgKSkpXG4gIGluXG4gIGxldCBkb21haW4nLCBjY3MgPVxuICAgIFBhdHRlcm5fY29tcGlsZXIuY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19taXh0dXJlIH5kZWJ1Z19tb2RlXG4gICAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiB+b3JpZ2luIG1peFxuICBpblxuICAoIGRvbWFpbicsXG4gICAgTGlzdC5mb2xkX2xlZnQgKGZ1biB4ICh5LCB0KSAtPiBhZGRzIHQgeCAoQXJyYXkubWFwIGZzdCB5KSkgcmV2X2VmZmVjdHMgY2NzXG4gIClcblxubGV0IGVmZmVjdHNfb2ZfbW9kaWYgfmRlYnVnX21vZGUgfndhcm5pbmcgYXN0X2FsZ3MgYXN0X3J1bGVzIG9yaWdpblxuICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgKGRvbWFpbiwgcmV2X2VmZmVjdHMpID0gZnVuY3Rpb25cbiAgfCBBUFBMWSAoYWxnX2V4cHIsICgoXywgcG9zKSBhcyBwYWNrKSkgLT5cbiAgICBsZXQgZG9tYWluJywgYWxnX3BvcyA9XG4gICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhbGdfZXhwclxuICAgIGluXG4gICAgbGV0IGRvbWFpbicnLCBfLCBlbGVtX3J1bGVzID1cbiAgICAgIHJ1bGVzX29mX2FzdCB+ZGVidWdfbW9kZSB+d2FybmluZyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbidcbiAgICAgICAgfnN5bnRheF9yZWY6MCBwYWNrXG4gICAgaW5cbiAgICBsZXQgZWxlbV9ydWxlID1cbiAgICAgIG1hdGNoIGVsZW1fcnVsZXMgd2l0aFxuICAgICAgfCBbIHIgXSAtPiByXG4gICAgICB8IF8gLT5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgIChcIkFtYmlndW91cyBydWxlIGluIG1vZGlmaXRpb24gaXMgaW1wb3NzaWJsZVwiLCBwb3MpKVxuICAgIGluXG4gICAgZG9tYWluJycsIFByaW1pdGl2ZXMuSVRFUl9SVUxFIChhbGdfcG9zLCBlbGVtX3J1bGUpIDo6IHJldl9lZmZlY3RzXG4gIHwgVVBEQVRFICgoaSwgXyksIGFsZ19leHByKSAtPlxuICAgIGxldCBkb21haW4nLCBhbGdfcG9zID1cbiAgICAgIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGFsZ19leHByXG4gICAgaW5cbiAgICBkb21haW4nLCBQcmltaXRpdmVzLlVQREFURSAoaSwgYWxnX3BvcykgOjogcmV2X2VmZmVjdHNcbiAgfCBTTkFQU0hPVCAocmF3LCBwZXhwcikgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgKCp3aGVuIHNwZWNpYWxpemluZyBzbmFwc2hvdHMgdG8gcGFydGljdWxhciBtaXh0dXJlcywgYWRkIHZhcmlhYmxlcyBiZWxvdyopXG4gICAgZG9tYWluJywgUHJpbWl0aXZlcy5TTkFQU0hPVCAocmF3LCBwZXhwcicpIDo6IHJldl9lZmZlY3RzXG4gIHwgU1RPUCBwZXhwciAtPlxuICAgIGxldCBkb21haW4nLCBwZXhwcicgPVxuICAgICAgY29tcGlsZV9wcmludF9leHByIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIHBleHByXG4gICAgaW5cbiAgICBkb21haW4nLCBQcmltaXRpdmVzLlNUT1AgcGV4cHInIDo6IHJldl9lZmZlY3RzXG4gIHwgQ0ZMT1dMQUJFTCAob24sIGxhYikgLT5cbiAgICBjZmxvd3Nfb2ZfbGFiZWwgfmRlYnVnX21vZGUgb3JpZ2luIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIG9uXG4gICAgICBhc3RfYWxncyBhc3RfcnVsZXMgbGFiIHJldl9lZmZlY3RzXG4gIHwgQ0ZMT1dNSVggKG9uLCAoYXN0LCBfKSkgLT5cbiAgICBsZXQgYWRkcyB0ZXN0cyBsIHggPVxuICAgICAgaWYgb24gdGhlblxuICAgICAgICBQcmltaXRpdmVzLkNGTE9XIChOb25lLCB4LCB0ZXN0cykgOjogbFxuICAgICAgZWxzZVxuICAgICAgICBQcmltaXRpdmVzLkNGTE9XT0ZGIChOb25lLCB4KSA6OiBsXG4gICAgaW5cbiAgICBsZXQgZG9tYWluJywgY2NzID1cbiAgICAgIFBhdHRlcm5fY29tcGlsZXIuY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19taXh0dXJlIH5kZWJ1Z19tb2RlXG4gICAgICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIH5vcmlnaW4gYXN0XG4gICAgaW5cbiAgICAoIGRvbWFpbicsXG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHggKHksIHQpIC0+IGFkZHMgdCB4IChBcnJheS5tYXAgZnN0IHkpKVxuICAgICAgICByZXZfZWZmZWN0cyBjY3MgKVxuICB8IERJTiAocmVsLCBwZXhwcikgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgZG9tYWluJywgUHJpbWl0aXZlcy5ESU4gKHJlbCwgcGV4cHInKSA6OiByZXZfZWZmZWN0c1xuICB8IERJTk9GRiBwZXhwciAtPlxuICAgIGxldCBkb21haW4nLCBwZXhwcicgPVxuICAgICAgY29tcGlsZV9wcmludF9leHByIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIHBleHByXG4gICAgaW5cbiAgICBkb21haW4nLCBQcmltaXRpdmVzLkRJTk9GRiBwZXhwcicgOjogcmV2X2VmZmVjdHNcbiAgfCBBc3QuUFJJTlQgKHBleHByLCBwcmludCkgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgbGV0IGRvbWFpbicnLCBwcmludCcgPVxuICAgICAgY29tcGlsZV9wcmludF9leHByIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluJyBwcmludFxuICAgIGluXG4gICAgZG9tYWluJycsIFByaW1pdGl2ZXMuUFJJTlQgKHBleHByJywgcHJpbnQnKSA6OiByZXZfZWZmZWN0c1xuICB8IFBMT1RFTlRSWSAtPiBkb21haW4sIFByaW1pdGl2ZXMuUExPVEVOVFJZIDo6IHJldl9lZmZlY3RzXG4gIHwgU1BFQ0lFU19PRiAob24sIHBleHByLCAoYXN0LCBwb3MpKSAtPlxuICAgIGxldCBkb21haW4nLCBwZXhwcicgPVxuICAgICAgY29tcGlsZV9wcmludF9leHByIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIHBleHByXG4gICAgaW5cbiAgICBsZXQgYWRkcyB0ZXN0cyBsIHggPVxuICAgICAgaWYgb24gdGhlblxuICAgICAgICBQcmltaXRpdmVzLlNQRUNJRVMgKHBleHByJywgeCwgdGVzdHMpIDo6IGxcbiAgICAgIGVsc2VcbiAgICAgICAgUHJpbWl0aXZlcy5TUEVDSUVTX09GRiBwZXhwcicgOjogbFxuICAgIGluXG4gICAgbGV0IGRvbWFpbicnLCBjY3MgPVxuICAgICAgUGF0dGVybl9jb21waWxlci5jb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW1iaWd1b3VzX21peHR1cmUgfmRlYnVnX21vZGVcbiAgICAgICAgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4nIH5vcmlnaW4gYXN0XG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKGFyciwgXykgLT5cbiAgICAgICAgICBpZiBBcnJheS5sZW5ndGggYXJyID4gMSB0aGVuXG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAoIFwiU1BFQ0lFU19PRiBjYW4gb25seSBiZSBhcHBsaWVkIHRvIG9uZSBjb25uZWN0ZWQgY29tcG9uZW50XCIsXG4gICAgICAgICAgICAgICAgICAgcG9zICkpKVxuICAgICAgICBjY3NcbiAgICBpblxuICAgICggZG9tYWluJycsXG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHggKHksIHQpIC0+IGFkZHMgdCB4IChBcnJheS5tYXAgZnN0IHkpKVxuICAgICAgICByZXZfZWZmZWN0cyBjY3MgKVxuXG5sZXQgZWZmZWN0c19vZl9tb2RpZnMgfmRlYnVnX21vZGUgfndhcm5pbmcgYXN0X2FsZ3MgYXN0X3J1bGVzIG9yaWdpblxuICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGwgPVxuICBsZXQgZG9tYWluJywgcmV2X2VmZmVjdHMgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZWZmZWN0c19vZl9tb2RpZiB+ZGVidWdfbW9kZSB+d2FybmluZyBhc3RfYWxncyBhc3RfcnVsZXMgb3JpZ2luXG4gICAgICAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwKVxuICAgICAgKGRvbWFpbiwgW10pIGxcbiAgaW5cbiAgZG9tYWluJywgTGlzdC5yZXYgcmV2X2VmZmVjdHNcblxubGV0IGNvbXBpbGVfbW9kaWZpY2F0aW9uc19ub190cmFjayA9XG4gIGVmZmVjdHNfb2ZfbW9kaWZzIFtdIFtdIChPcGVyYXRvci5NT0RJRiAoLTEpKVxuXG4oKiBpbnRlcnZlbnRpb25zIHdpdGhvdXQgcHJlIGFuZCBwb3N0LCBidXQgd2l0aCBhbGFybSBhcmUgbm90IGFwcGxpZWRcbiAgIGF0IGluaXRpYWxpc2F0aW9uICopXG5sZXQgcGVydF9ub3RfaW5pdCBvdmVyd3JpdGVfdDAgeCB5IHogPVxuICBtYXRjaCB4LCB5LCB6IHdpdGhcbiAgfCBfLCBTb21lIHAsIF8gLT4gcFxuICB8IFNvbWUgXywgTm9uZSwgTm9uZSAtPlxuICAgIGxldCB0X3ZhciA9XG4gICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRJTUVfVkFSKVxuICAgIGluXG4gICAgbGV0IHQwID0gT3B0aW9uX3V0aWwuZm9sZCAoZnVuIF8geCAtPiBOYnIuRiB4KSBOYnIuemVybyBvdmVyd3JpdGVfdDAgaW5cbiAgICBsZXQgaW5pdF90ID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIHQwKSBpblxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5DT01QQVJFX09QIChPcGVyYXRvci5HUkVBVEVSLCB0X3ZhciwgaW5pdF90KSlcbiAgfCBOb25lLCBOb25lLCBOb25lIHwgU29tZSBfLCBOb25lLCBTb21lIF8gfCBOb25lLCBOb25lLCBTb21lIF8gLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSBBbGdfZXhwci5UUlVFXG5cbmxldCBwZXJ0X29mX3Jlc3VsdCB+ZGVidWdfbW9kZSB+d2FybmluZyA/b3ZlcndyaXRlX3QwIGFzdF9hbGdzIGFzdF9ydWxlc1xuICAgIGFsZ19kZXBzIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIHJlcyA9XG4gIGxldCBkb21haW4sIG91dF9hbGdfZGVwcywgXywgbHBlcnQsIHRyYWNraW5nX2VuYWJsZWQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChkb21haW4sIGFsZ19kZXBzLCBwX2lkLCBscGVydCwgdHJhY2tpbmdfZW5hYmxlZClcbiAgICAgICAgICAgKChhbGFybSwgcHJlX2V4cHIsIG1vZGlmX2V4cHJfbGlzdCwgb3B0X3Bvc3QpLCBwb3MpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggYWxhcm0gd2l0aFxuICAgICAgICAgIHwgU29tZSBuIC0+XG4gICAgICAgICAgICBpZiBOYnIuY29tcGFyZSBuIE5ici56ZXJvIDw9IDAgdGhlblxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiYWxhcm0gaGFzIHRvIGJlIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiAwLjBcIiwgcG9zKSlcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG9yaWdpbiA9IE9wZXJhdG9yLk1PRElGIHBfaWQgaW5cbiAgICAgICAgbGV0IHByZV9leHByJyA9IHBlcnRfbm90X2luaXQgb3ZlcndyaXRlX3QwIGFsYXJtIHByZV9leHByIG9wdF9wb3N0IGluXG4gICAgICAgIGxldCBkb21haW4nLCBwcmUgPVxuICAgICAgICAgIGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIH5vcmlnaW4gY29udGFjdF9tYXAgZG9tYWluXG4gICAgICAgICAgICBwcmVfZXhwcidcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFsZ19kZXBzJyA9XG4gICAgICAgICAgbWF0Y2ggYWxhcm0gd2l0aFxuICAgICAgICAgIHwgU29tZSBfIC0+IGFsZ19kZXBzXG4gICAgICAgICAgfCBOb25lIC0+IEFsZ19leHByLmFkZF9kZXBfYm9vbCBhbGdfZGVwcyBvcmlnaW4gcHJlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBkb21haW4sIGVmZmVjdHMgPVxuICAgICAgICAgIGVmZmVjdHNfb2ZfbW9kaWZzIH5kZWJ1Z19tb2RlIH53YXJuaW5nIGFzdF9hbGdzIGFzdF9ydWxlcyBvcmlnaW5cbiAgICAgICAgICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluJyBtb2RpZl9leHByX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGRvbWFpbiwgb3B0ID1cbiAgICAgICAgICBtYXRjaCBvcHRfcG9zdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGRvbWFpbiwgTm9uZVxuICAgICAgICAgIHwgU29tZSBwb3N0X2V4cHIgLT5cbiAgICAgICAgICAgIGxldCBkb21haW4nLCAocG9zdCwgcG9zdF9wb3MpID1cbiAgICAgICAgICAgICAgY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluXG4gICAgICAgICAgICAgICAgcG9zdF9leHByXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZG9tYWluJywgU29tZSAocG9zdCwgcG9zdF9wb3MpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBoYXNfdHJhY2tpbmcgPVxuICAgICAgICAgIHRyYWNraW5nX2VuYWJsZWRcbiAgICAgICAgICB8fCBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5DRkxPVyBfIHwgUHJpbWl0aXZlcy5TUEVDSUVTIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuQ0ZMT1dPRkYgXyB8IFByaW1pdGl2ZXMuUFJJTlQgX1xuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuVVBEQVRFIF8gfCBQcmltaXRpdmVzLlNOQVBTSE9UIF9cbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLkRJTiBfIHwgUHJpbWl0aXZlcy5ESU5PRkYgXyB8IFByaW1pdGl2ZXMuUExPVEVOVFJZXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5TVE9QIF8gfCBQcmltaXRpdmVzLklURVJfUlVMRSBfXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5TUEVDSUVTX09GRiBfIC0+XG4gICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICBlZmZlY3RzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBuZWVkc19iYWNrdHJhY2sgPVxuICAgICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlVQREFURSBfIHwgUHJpbWl0aXZlcy5TVE9QIF8gfCBQcmltaXRpdmVzLklURVJfUlVMRSBfXG4gICAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5DRkxPVyBfIHwgUHJpbWl0aXZlcy5TUEVDSUVTIF9cbiAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLkNGTE9XT0ZGIF8gfCBQcmltaXRpdmVzLlBSSU5UIF9cbiAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlNOQVBTSE9UIF8gfCBQcmltaXRpdmVzLkRJTiBfIHwgUHJpbWl0aXZlcy5ESU5PRkYgX1xuICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuUExPVEVOVFJZIHwgUHJpbWl0aXZlcy5TUEVDSUVTX09GRiBfIC0+XG4gICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICBlZmZlY3RzXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZXBlYXQgPVxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IExvYy5hbm5vdF93aXRoX2R1bW15IEFsZ19leHByLkZBTFNFXG4gICAgICAgICAgfCBTb21lIHAgLT4gcFxuICAgICAgICBpblxuICAgICAgICBsZXQgcGVydCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgUHJpbWl0aXZlcy5hbGFybTtcbiAgICAgICAgICAgIFByaW1pdGl2ZXMucHJlY29uZGl0aW9uID0gcHJlO1xuICAgICAgICAgICAgUHJpbWl0aXZlcy5lZmZlY3QgPSBlZmZlY3RzO1xuICAgICAgICAgICAgUHJpbWl0aXZlcy5yZXBlYXQ7XG4gICAgICAgICAgICBQcmltaXRpdmVzLm5lZWRzX2JhY2t0cmFjaztcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGRvbWFpbiwgYWxnX2RlcHMnLCBzdWNjIHBfaWQsIHBlcnQgOjogbHBlcnQsIGhhc190cmFja2luZylcbiAgICAgIChkb21haW4sIGFsZ19kZXBzLCAwLCBbXSwgZmFsc2UpXG4gICAgICByZXMucGVydHVyYmF0aW9uc1xuICBpblxuICBkb21haW4sIG91dF9hbGdfZGVwcywgTGlzdC5yZXYgbHBlcnQsIHRyYWNraW5nX2VuYWJsZWRcblxubGV0IGNvbXBpbGVfaW5pdHMgfmRlYnVnX21vZGUgfndhcm5pbmcgP3Jlc2NhbGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBlbnZcbiAgICBpbml0cyA9XG4gIGxldCBpbml0X2wsIF8gPVxuICAgIExpc3RfdXRpbC5mb2xkX3JpZ2h0X21hcFxuICAgICAgKGZ1biAoYWxnLCBpbml0X3QpIHByZWVudiAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIEFsZ19leHByLmhhc19taXggfnZhcl9kZWNsczooTW9kZWwuZ2V0X2FsZyBlbnYpIChmc3QgYWxnKSB0aGVuXG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAoIFwiSW5pdGlhbCBxdWFudGl0aWVzIGNhbm5vdCBkZXBlbmQgb24gYSBudW1iZXIgb2Ygb2NjdXJlbmNlXCIsXG4gICAgICAgICAgICAgICAgICAgc25kIGFsZyApKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWxnID1cbiAgICAgICAgICBtYXRjaCByZXNjYWxlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYWxnXG4gICAgICAgICAgfCBTb21lIHIgLT4gQWxnX2V4cHIubXVsdCBhbGcgKEFsZ19leHByLmZsb2F0IHIpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGluaXRfdCB3aXRoXG4gICAgICAgIHwgSU5JVF9NSVggKHJhd19taXgsIG1peF9wb3MpIC0+XG4gICAgICAgICAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGVudiBpblxuICAgICAgICAgIGxldCBwcmVlbnYnLCBhbGcnID1cbiAgICAgICAgICAgIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgcHJlZW52IGFsZ1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZha2VfcnVsZSA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIExLYXBwYS5yX21peCA9IFtdO1xuICAgICAgICAgICAgICBMS2FwcGEucl9jcmVhdGVkID0gcmF3X21peDtcbiAgICAgICAgICAgICAgTEthcHBhLnJfZGVsdGFfdG9rZW5zID0gW107XG4gICAgICAgICAgICAgIExLYXBwYS5yX3JhdGUgPSBBbGdfZXhwci5jb25zdCBOYnIuemVybztcbiAgICAgICAgICAgICAgTEthcHBhLnJfdW5fcmF0ZSA9IE5vbmU7XG4gICAgICAgICAgICAgIExLYXBwYS5yX2VkaXRfc3R5bGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHByZWVudicnLCBzdGF0ZScgPVxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgcnVsZXNfb2ZfYXN0IH5kZWJ1Z19tb2RlIH53YXJuaW5nIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXBcbiAgICAgICAgICAgICAgICBwcmVlbnYnIH5zeW50YXhfcmVmOjAgKGZha2VfcnVsZSwgbWl4X3BvcylcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgZG9tYWluJycsIF8sIFsgY29tcGlsZWRfcnVsZSBdIC0+XG4gICAgICAgICAgICAgIChmc3QgYWxnJywgY29tcGlsZWRfcnVsZSksIGRvbWFpbicnXG4gICAgICAgICAgICB8IF8sIF8sIF8gLT5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICggRm9ybWF0LmFzcHJpbnRmIFwiaW5pdGlhbCBtaXh0dXJlICVhIGlzIHBhcnRpYWxseSBkZWZpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKFJhd19taXh0dXJlLnByaW50IH5ub0NvdW50ZXJzOmRlYnVnX21vZGUgfmNyZWF0ZWQ6dHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB+aW5pdGlhbF9jb21tYTpmYWxzZSB+c2lncylcbiAgICAgICAgICAgICAgICAgICAgICAgcmF3X21peCxcbiAgICAgICAgICAgICAgICAgICAgIG1peF9wb3MgKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIHByZWVudicnLCBzdGF0ZSdcbiAgICAgICAgfCBJTklUX1RPSyB0a19sIC0+XG4gICAgICAgICAgbGV0IHJfZGVsdGFfdG9rZW5zID1cbiAgICAgICAgICAgIExpc3QubWFwIChmdW4gKHRrX2lkLCBfcG9zX3RrKSAtPiBhbGcsIHRrX2lkKSB0a19sXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmFrZV9ydWxlID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgTEthcHBhLnJfbWl4ID0gW107XG4gICAgICAgICAgICAgIExLYXBwYS5yX2NyZWF0ZWQgPSBbXTtcbiAgICAgICAgICAgICAgTEthcHBhLnJfZGVsdGFfdG9rZW5zO1xuICAgICAgICAgICAgICBMS2FwcGEucl9yYXRlID0gQWxnX2V4cHIuY29uc3QgTmJyLnplcm87XG4gICAgICAgICAgICAgIExLYXBwYS5yX3VuX3JhdGUgPSBOb25lO1xuICAgICAgICAgICAgICBMS2FwcGEucl9lZGl0X3N0eWxlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICBydWxlc19vZl9hc3QgfmRlYnVnX21vZGUgfndhcm5pbmcgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcFxuICAgICAgICAgICAgICAgcHJlZW52IH5zeW50YXhfcmVmOjBcbiAgICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBmYWtlX3J1bGUpXG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGRvbWFpbicnLCBfLCBbIGNvbXBpbGVkX3J1bGUgXSAtPlxuICAgICAgICAgICAgKEFsZ19leHByLkNPTlNUIE5ici5vbmUsIGNvbXBpbGVkX3J1bGUpLCBkb21haW4nJ1xuICAgICAgICAgIHwgXywgXywgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgaW5pdHNcbiAgICAgIChQYXR0ZXJuLlByZUVudi5lbXB0eSAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpKVxuICBpblxuICBpbml0X2xcblxubGV0IGNvbXBpbGVfYWxnX3ZhcnMgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gdmFycyA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdF9tYXBpXG4gICAgKGZ1biBpIGRvbWFpbiAobGJsX3BvcywgYXN0KSAtPlxuICAgICAgbGV0IGRvbWFpbicsIGFsZyA9XG4gICAgICAgIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gfm9yaWdpbjooT3BlcmF0b3IuQUxHIGkpXG4gICAgICAgICAgY29udGFjdF9tYXAgZG9tYWluIGFzdFxuICAgICAgaW5cbiAgICAgIGRvbWFpbicsIChsYmxfcG9zLCBhbGcpKVxuICAgIGRvbWFpbiAoQXJyYXkub2ZfbGlzdCB2YXJzKVxuXG5sZXQgY29tcGlsZV9ydWxlcyB+ZGVidWdfbW9kZSB+d2FybmluZyBhbGdfZGVwcyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwXG4gICAgZG9tYWluIHJ1bGVzID1cbiAgbWF0Y2hcbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZG9tYWluLCBzeW50YXhfcmVmLCBkZXBzX21hY2hpbmVyeSwgYWNjKSAoXywgcnVsZSkgLT5cbiAgICAgICAgbGV0IGRvbWFpbicsIG9yaWdpbicsIGNyID1cbiAgICAgICAgICBydWxlc19vZl9hc3QgfmRlYnVnX21vZGUgfndhcm5pbmcgP2RlcHNfbWFjaGluZXJ5IH5jb21waWxlX21vZGVfb25cbiAgICAgICAgICAgIGNvbnRhY3RfbWFwIGRvbWFpbiB+c3ludGF4X3JlZiBydWxlXG4gICAgICAgIGluXG4gICAgICAgIGRvbWFpbicsIHN1Y2Mgc3ludGF4X3JlZiwgb3JpZ2luJywgTGlzdC5hcHBlbmQgY3IgYWNjKVxuICAgICAgKGRvbWFpbiwgMSwgU29tZSAoT3BlcmF0b3IuUlVMRSAwLCBhbGdfZGVwcyksIFtdKVxuICAgICAgcnVsZXNcbiAgd2l0aFxuICB8IGZkb21haW4sIF8sIFNvbWUgKF8sIGZhbGdfZGVwcyksIGZydWxlcyAtPlxuICAgIGZkb21haW4sIGZhbGdfZGVwcywgTGlzdC5yZXYgZnJ1bGVzXG4gIHwgXywgXywgTm9uZSwgXyAtPiBmYWlsd2l0aCBcIlRoZSBvcmlnaW4gb2YgRXZhbC5jb21waWxlX3J1bGVzIGhhcyBiZWVuIGxvc3RcIlxuXG4oKmxldCB0cmFuc2xhdGVfY29udGFjdF9tYXAgc2lncyBrYXNhX2NvbnRhY3RfbWFwID1cbiAgICBsZXQgd2RsID0gTG9jLmFubm90X3dpdGhfZHVtbXkgaW5cbiAgICBsZXQgc29sID0gQXJyYXkuaW5pdFxuICAgICAgICAoU2lnbmF0dXJlLnNpemUgc2lncylcbiAgICAgICAgKGZ1biBpIC0+IEFycmF5Lm1ha2UgKFNpZ25hdHVyZS5hcml0eSBzaWdzIGkpIChbXSxbXSkpIGluXG4gICAgbGV0ICgpID1cbiAgICAgIE1vZHMuU3RyaW5nTWFwLml0ZXJcbiAgICAgICAgKGZ1biBhZ2VudF9uYW1lIHNpdGVzIC0+XG4gICAgICAgICAgIGxldCBpZF9hID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCAod2RsIGFnZW50X25hbWUpIHNpZ3MgaW5cbiAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuaXRlclxuICAgICAgICAgICAgIChmdW4gc2l0ZV9uYW1lIChzdGF0ZXMsbGlua3MpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGlkX3MgPVxuICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlLm51bV9vZl9zaXRlXG4gICAgICAgICAgICAgICAgICAgIH5hZ2VudF9uYW1lICh3ZGwgc2l0ZV9uYW1lKSAoU2lnbmF0dXJlLmdldCBzaWdzIGlkX2EpIGluXG4gICAgICAgICAgICAgICAgc29sLihpZF9hKS4oaWRfcykgPC1cbiAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgKGZ1biBzdGF0ZSAtPiBTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgaWRfcyAod2RsIHN0YXRlKSAoU2lnbmF0dXJlLmdldCBzaWdzIGlkX2EpKVxuICAgICAgICAgICAgICAgICAgICAgc3RhdGVzLFxuICAgICAgICAgICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAoZnVuIChhZ2VudF9uYW1lLGIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWRfYSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgKHdkbCBhZ2VudF9uYW1lKSBzaWdzIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWRfYiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZS5udW1fb2Zfc2l0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5hZ2VudF9uYW1lICh3ZGwgYikgKFNpZ25hdHVyZS5nZXQgc2lncyBpZF9hKSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgKGlkX2EsaWRfYikpXG4gICAgICAgICAgICAgICAgICAgICBsaW5rcykpIHNpdGVzKSBrYXNhX2NvbnRhY3RfbWFwIGluXG4gICAgc29sXG5cbiAgbGV0IGluaXRfa2FzYSBjYWxsZWRfZnJvbSBzaWdzIHJlc3VsdCA9XG4gICAgbGV0IHByZV9rYXNhX3N0YXRlID0gRXhwb3J0X3RvX0thU2ltLmluaXQgfmNvbXBpbDpyZXN1bHQgfmNhbGxlZF9mcm9tICgpIGluXG4gICAgbGV0IGthc2Ffc3RhdGUsY29udGFjdF9tYXAgPSBFeHBvcnRfdG9fS2FTaW0uZ2V0X2NvbnRhY3RfbWFwIHByZV9rYXNhX3N0YXRlIGluXG4gICAgbGV0ICgpID0gRXhwb3J0X3RvX0thU2ltLmR1bXBfZXJyb3JzX2xpZ2h0IGthc2Ffc3RhdGUgaW5cbiAgICB0cmFuc2xhdGVfY29udGFjdF9tYXAgc2lncyBjb250YWN0X21hcCxcbiAgICBFeHBvcnRfdG9fS2FTaW0uZmx1c2hfZXJyb3JzIGthc2Ffc3RhdGVcbiopXG5sZXQgY29tcGlsZSB+b3V0cHV0cyB+cGF1c2UgfnJldHVybiB+c2hhcmluZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uXG4gICAgP292ZXJ3cml0ZV9pbml0ID9vdmVyd3JpdGVfdDAgP3Jlc2NhbGVfaW5pdCBzaWdzX25kIHRrX25kIGNvbnRhY3RfbWFwIHJlc3VsdFxuICAgID1cbiAgbGV0IHdhcm5pbmcgfnBvcyBtc2cgPSBvdXRwdXRzIChEYXRhLldhcm5pbmcgKFNvbWUgcG9zLCBtc2cpKSBpblxuICBvdXRwdXRzIChEYXRhLkxvZyBcIisgQnVpbGRpbmcgaW5pdGlhbCBzaW11bGF0aW9uIGNvbmRpdGlvbnMuLi5cIik7XG4gIGxldCBwcmVlbnYgPSBQYXR0ZXJuLlByZUVudi5lbXB0eSBzaWdzX25kIGluXG4gIG91dHB1dHMgKERhdGEuTG9nIFwiXFx0IC12YXJpYWJsZSBkZWNsYXJhdGlvbnNcIik7XG4gIGxldCBwcmVlbnYnLCBhbGdfYSA9XG4gICAgY29tcGlsZV9hbGdfdmFycyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIHByZWVudlxuICAgICAgcmVzdWx0LkFzdC52YXJpYWJsZXNcbiAgaW5cbiAgbGV0IGFsZ19uZCA9IE5hbWVkRGVjbHMuY3JlYXRlIGFsZ19hIGluXG4gIGxldCBhbGdfZGVwcyA9IEFsZ19leHByLnNldHVwX2FsZ192YXJzX3Jldl9kZXAgdGtfbmQgYWxnX2EgaW5cblxuICBwYXVzZSBAQCBmdW4gKCkgLT5cbiAgb3V0cHV0cyAoRGF0YS5Mb2cgXCJcXHQgLXJ1bGVzXCIpO1xuICBsZXQgcHJlZW52JywgYWxnX2RlcHMnLCBjb21waWxlZF9ydWxlcyA9XG4gICAgY29tcGlsZV9ydWxlcyB+ZGVidWdfbW9kZSB+d2FybmluZyBhbGdfZGVwcyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwXG4gICAgICBwcmVlbnYnIHJlc3VsdC5Bc3QucnVsZXNcbiAgaW5cbiAgbGV0IHJ1bGVfbmQgPSBBcnJheS5vZl9saXN0IGNvbXBpbGVkX3J1bGVzIGluXG5cbiAgcGF1c2UgQEAgZnVuICgpIC0+XG4gIG91dHB1dHMgKERhdGEuTG9nIFwiXFx0IC1pbnRlcnZlbnRpb25zXCIpO1xuICBsZXQgcHJlZW52LCBhbGdfZGVwcycnLCBwZXJ0LCBoYXNfdHJhY2tpbmcgPVxuICAgIHBlcnRfb2ZfcmVzdWx0IH5kZWJ1Z19tb2RlIH53YXJuaW5nID9vdmVyd3JpdGVfdDAgcmVzdWx0LnZhcmlhYmxlc1xuICAgICAgcmVzdWx0LnJ1bGVzIGFsZ19kZXBzJyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIHByZWVudicgcmVzdWx0XG4gIGluXG5cbiAgcGF1c2UgQEAgZnVuICgpIC0+XG4gIG91dHB1dHMgKERhdGEuTG9nIFwiXFx0IC1vYnNlcnZhYmxlc1wiKTtcbiAgbGV0IHByZWVudiwgb2JzID1cbiAgICBvYnNfb2ZfcmVzdWx0IH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgcHJlZW52IGFsZ19kZXBzXG4gICAgICByZXN1bHRcbiAgaW5cbiAgb3V0cHV0cyAoRGF0YS5Mb2cgXCJcXHQgLXVwZGF0ZV9kb21haW4gY29uc3RydWN0aW9uXCIpO1xuICBwYXVzZSBAQCBmdW4gKCkgLT5cbiAgbGV0IGRvbWFpbiwgZG9tX3N0YXRzID1cbiAgICBQYXR0ZXJuLmZpbmFsaXplIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHByZWVudiBjb250YWN0X21hcFxuICBpblxuICBvdXRwdXRzXG4gICAgKERhdGEuTG9nXG4gICAgICAgKFwiXFx0IFwiXG4gICAgICAgXiBzdHJpbmdfb2ZfaW50IGRvbV9zdGF0cy5QYXR0ZXJuLlByZUVudi5zdGF0X25vZGVzXG4gICAgICAgXiBcIiAoc3ViKW9ic2VydmFibGVzIFwiXG4gICAgICAgXiBzdHJpbmdfb2ZfaW50IGRvbV9zdGF0cy5QYXR0ZXJuLlByZUVudi5zdGF0X25hdl9zdGVwc1xuICAgICAgIF4gXCIgbmF2aWdhdGlvbiBzdGVwc1wiKSk7XG5cbiAgbGV0IGVudiA9XG4gICAgTW9kZWwuaW5pdCB+ZmlsZW5hbWVzOnJlc3VsdC5maWxlbmFtZXMgZG9tYWluIHRrX25kIGFsZ19uZCBhbGdfZGVwcycnXG4gICAgICAoQXJyYXkub2ZfbGlzdCByZXN1bHQucnVsZXMsIHJ1bGVfbmQpXG4gICAgICAoQXJyYXkub2ZfbGlzdCBvYnMpIChBcnJheS5vZl9saXN0IHBlcnQpIGNvbnRhY3RfbWFwXG4gIGluXG5cbiAgb3V0cHV0cyAoRGF0YS5Mb2cgXCJcXHQgLWluaXRpYWwgY29uZGl0aW9uc1wiKTtcbiAgcGF1c2UgQEAgZnVuICgpIC0+XG4gIGxldCBpbml0X2wgPVxuICAgIGNvbXBpbGVfaW5pdHMgfmRlYnVnX21vZGUgfndhcm5pbmcgP3Jlc2NhbGU6cmVzY2FsZV9pbml0IH5jb21waWxlX21vZGVfb25cbiAgICAgIGNvbnRhY3RfbWFwIGVudlxuICAgICAgKE9wdGlvbl91dGlsLnVuc29tZSByZXN1bHQuQXN0LmluaXQgb3ZlcndyaXRlX2luaXQpXG4gIGluXG4gIHJldHVybiAoZW52LCBoYXNfdHJhY2tpbmcsIGluaXRfbClcblxubGV0IGJ1aWxkX2luaXRpYWxfc3RhdGUgfmJpbmQgfnJldHVybiB+ZGVidWdfbW9kZSB+b3V0cHV0cyBjb3VudGVyIGVudlxuICAgIH53aXRoX3RyYWNlIH53aXRoX2RlbHRhX2FjdGl2aXRpZXMgcmFuZG9tX3N0YXRlIGluaXRfbCA9XG4gIGxldCBncmFwaDAgPVxuICAgIFJ1bGVfaW50ZXJwcmV0ZXIuZW1wdHkgfm91dHB1dHMgfndpdGhfdHJhY2UgcmFuZG9tX3N0YXRlIGVudiBjb3VudGVyXG4gIGluXG4gIGxldCBzdGF0ZTAgPSBTdGF0ZV9pbnRlcnByZXRlci5lbXB0eSB+d2l0aF9kZWx0YV9hY3Rpdml0aWVzIGNvdW50ZXIgZW52IGluXG4gIFN0YXRlX2ludGVycHJldGVyLmluaXRpYWxpemUgfmJpbmQgfnJldHVybiB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlclxuICAgIGdyYXBoMCBzdGF0ZTAgaW5pdF9sXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgZG9faW50ZXJhY3RpdmVfZGlyZWN0aXZlcyB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+c2hhcmluZyB+c3ludGF4X3ZlcnNpb25cbiAgICBjb250YWN0X21hcCBlbnYgY291bnRlciBncmFwaCBzdGF0ZSBlID1cbiAgbGV0IHdhcm5pbmcgfnBvcyBtc2cgPSBvdXRwdXRzIChEYXRhLldhcm5pbmcgKFNvbWUgcG9zLCBtc2cpKSBpblxuICBsZXQgY2NfcHJlZW52ID0gUGF0dGVybi5QcmVFbnYub2ZfZW52IChNb2RlbC5kb21haW4gZW52KSBpblxuICBsZXQgY29udGFjdF9tYXAnID0gQXJyYXkubWFwIEFycmF5LmNvcHkgY29udGFjdF9tYXAgaW5cbiAgbGV0IGUnLCBfID1cbiAgICBMaXN0X3V0aWwuZm9sZF9yaWdodF9tYXBcbiAgICAgIChMS2FwcGFfY29tcGlsZXIubW9kaWZfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uXG4gICAgICAgICAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpIChNb2RlbC50b2tlbnNfZmluZGVyIGVudilcbiAgICAgICAgIChNb2RlbC5hbGdzX2ZpbmRlciBlbnYpIGNvbnRhY3RfbWFwJylcbiAgICAgIGUgW11cbiAgaW5cbiAgbGV0ICgpID1cbiAgICBpZlxuICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAoZnVuIG4gLT5cbiAgICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpIChmdW4gcyBiIHggLT4gYiB8fCB4ICE9IGNvbnRhY3RfbWFwLihuKS4ocykpKVxuICAgICAgICBmYWxzZSBjb250YWN0X21hcCdcbiAgICB0aGVuXG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJDcmVhdGluZyBuZXcgbGluayB0eXBlIGlzIGZvcmJpZGRlblwiKSlcbiAgaW5cbiAgbGV0IGNjX3ByZWVudicsIGUnJyA9XG4gICAgRXZhbC5jb21waWxlX21vZGlmaWNhdGlvbnNfbm9fdHJhY2sgfmRlYnVnX21vZGUgfndhcm5pbmdcbiAgICAgIH5jb21waWxlX21vZGVfb246ZmFsc2UgY29udGFjdF9tYXAgY2NfcHJlZW52IGUnXG4gIGluXG4gIGxldCBlbnYnLCBncmFwaCcgPVxuICAgIGlmIGNjX3ByZWVudiA9PSBjY19wcmVlbnYnIHRoZW5cbiAgICAgIGVudiwgZ3JhcGhcbiAgICBlbHNlIChcbiAgICAgIGxldCBmZW52LCBfID1cbiAgICAgICAgUGF0dGVybi5maW5hbGl6ZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBjY19wcmVlbnYnIGNvbnRhY3RfbWFwXG4gICAgICBpblxuICAgICAgKCBNb2RlbC5uZXdfZG9tYWluIGZlbnYgZW52LFxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChSdWxlX2ludGVycHJldGVyLmluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gfmRlYnVnX21vZGUgZmVudilcbiAgICAgICAgICBncmFwaFxuICAgICAgICAgIChQcmltaXRpdmVzLmV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfbW9kaWZpY2F0aW9ucyBlJycpIClcbiAgICApXG4gIGluXG4gIGxldCBvc3RvcCwgb2dyYXBoLCBvc3RhdGUsIF8gPVxuICAgIFN0YXRlX2ludGVycHJldGVyLmRvX21vZGlmaWNhdGlvbnMgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52JyBjb3VudGVyIGdyYXBoJ1xuICAgICAgc3RhdGUgZScnXG4gIGluXG4gIGUnJywgKGVudicsIChvc3RvcCwgb2dyYXBoLCBvc3RhdGUpKVxuXG5sZXQgZ2V0X3BhdXNlX2NyaXRlcmlhIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5zaGFyaW5nIH5zeW50YXhfdmVyc2lvbiBjb250YWN0X21hcFxuICAgIGVudiBncmFwaCBiID1cbiAgbGV0IHdhcm5pbmcgfnBvcyBtc2cgPSBvdXRwdXRzIChEYXRhLldhcm5pbmcgKFNvbWUgcG9zLCBtc2cpKSBpblxuICBsZXQgY2NfcHJlZW52ID0gUGF0dGVybi5QcmVFbnYub2ZfZW52IChNb2RlbC5kb21haW4gZW52KSBpblxuICBsZXQgYicgPVxuICAgIExLYXBwYV9jb21waWxlci5ib29sX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSAoTW9kZWwudG9rZW5zX2ZpbmRlciBlbnYpIChNb2RlbC5hbGdzX2ZpbmRlciBlbnYpIGJcbiAgaW5cbiAgbGV0IGNjX3ByZWVudicsICgoYicnLCBwb3NfYicnKSBhcyBicG9zJycpID1cbiAgICBFdmFsLmNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uOmZhbHNlIGNvbnRhY3RfbWFwIGNjX3ByZWVudlxuICAgICAgYidcbiAgaW5cbiAgbGV0IGVudicsIGdyYXBoJyA9XG4gICAgaWYgY2NfcHJlZW52ID09IGNjX3ByZWVudicgdGhlblxuICAgICAgZW52LCBncmFwaFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGZlbnYsIF8gPVxuICAgICAgICBQYXR0ZXJuLmZpbmFsaXplIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIGNjX3ByZWVudicgY29udGFjdF9tYXBcbiAgICAgIGluXG4gICAgICAoIE1vZGVsLm5ld19kb21haW4gZmVudiBlbnYsXG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKFJ1bGVfaW50ZXJwcmV0ZXIuaW5jb3Jwb3JhdGVfZXh0cmFfcGF0dGVybiB+ZGVidWdfbW9kZSBmZW52KVxuICAgICAgICAgIGdyYXBoXG4gICAgICAgICAgKFByaW1pdGl2ZXMuZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19ib29sIGJwb3MnJykgKVxuICAgIClcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBpZiBBbGdfZXhwci5pc19lcXVhbGl0eV90ZXN0X3RpbWUgKE1vZGVsLmFsbF9kZXBlbmRlbmNpZXMgZW52KSBiJycgdGhlblxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiW1RdIGNhbiBvbmx5IGJlIHVzZWQgaW4gaW5lcXVhbGl0aWVzXCIsIHBvc19iJycpKVxuICBpblxuICBlbnYnLCBncmFwaCcsIGInJ1xuXG5sZXQgZmluZF9hbGxfZW1iZWRkaW5ncyB+ZGVidWdfbW9kZSBlbnYgdHIgPVxuICBsZXQgZG9tYWluID0gTW9kZWwuZG9tYWluIGVudiBpblxuICBsZXQgZHVtbXlfaW5zdGFuY2VzID0gSW5zdGFuY2VzLmVtcHR5IGVudiBpblxuICBsZXQgZ3JhcGggPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoUnVsZV9pbnRlcnByZXRlci5hcHBseV9jb25jcmV0ZV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvblxuICAgICAgICAgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZTpOb25lIGR1bW15X2luc3RhbmNlcylcbiAgICAgIChFZGdlcy5lbXB0eSB+d2l0aF9jb25uZWN0ZWRfY29tcG9uZW50czpmYWxzZSlcbiAgICAgIHRyXG4gIGluXG4gIGxldCBvdXQsIF8gPVxuICAgIFJ1bGVfaW50ZXJwcmV0ZXIub2JzX2Zyb21fdHJhbnNmb3JtYXRpb25zIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCB0clxuICBpblxuICBMaXN0Lm1hcFxuICAgIChmdW4gKHAsIChyb290LCBfKSkgLT5cbiAgICAgIHAsIE1hdGNoaW5nLnJlY29uc3RydWN0X3JlbmFtaW5nIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBwIHJvb3QpXG4gICAgb3V0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKioqKioqKioqKioqKiopXG4oKiBKU29uIGxhYmVscyopXG4oKioqKioqKioqKioqKiopXG5cbmxldCBhZ2VudCA9IFwiYWdlbnQgbmFtZVwiXG5sZXQgY29udGFjdG1hcCA9IFwiY29udGFjdCBtYXBcIlxubGV0IGFjY3VyYWN5X3N0cmluZyA9IFwiYWNjdXJhY3lcIlxubGV0IGRlYWRfcnVsZXMgPSBcImRlYWQgcnVsZXNcIlxubGV0IGRlYWRfYWdlbnRzID0gXCJkZWFkIGFnZW50c1wiXG5sZXQgbWFwID0gXCJtYXBcIlxubGV0IGludGVyZmFjZSA9IFwiaW50ZXJmYWNlXCJcbmxldCBzaXRlID0gXCJzaXRlIG5hbWVcIlxubGV0IHN0YXRlc2xpc3QgPSBcInN0YXRlcyBsaXN0XCJcbmxldCBzaXRlbmFtZSA9IFwic2l0ZV9uYW1lXCJcbmxldCBzaXRldHlwZSA9IFwic2l0ZV90eXBlXCJcbmxldCBzaXRlbGlua3MgPSBcInBvcnRfbGlua3NcIlxubGV0IHNpdGVzdGF0ZXMgPSBcInBvcnRfc3RhdGVzXCJcbmxldCBzaXRlbm9kZW5hbWUgPSBcIm5vZGVfdHlwZVwiXG5sZXQgc2l0ZW5vZGVpZCA9IFwibm9kZV9pZFwiXG5sZXQgc2l0ZW5vZGVzaXRlcyA9IFwibm9kZV9zaXRlc1wiXG5sZXQgaHlwID0gXCJzaXRlIGdyYXBoXCJcbmxldCByZWZpbmVtZW50ID0gXCJzaXRlIGdyYXBoIGxpc3RcIlxubGV0IGRvbWFpbl9uYW1lID0gXCJkb21haW4gbmFtZVwiXG5sZXQgcmVmaW5lbWVudHNfbGlzdCA9IFwicmVmaW5lbWVudHMgbGlzdFwiXG5sZXQgcmVmaW5lbWVudF9sZW1tYXMgPSBcInJlZmluZW1lbnQgbGVtbWFzXCJcbmxldCBydWxlX2lkID0gXCJpZFwiXG5sZXQgYWdlbnRfaWQgPSBcImlkXCJcbmxldCBsYWJlbCA9IFwibGFiZWxcIlxubGV0IGFzdCA9IFwiYXN0XCJcbmxldCBwb3NpdGlvbiA9IFwibG9jYXRpb25cIlxubGV0IHBvc2l0aW9uX2xpc3QgPSBcImxvY2F0aW9uIGxpc3RcIlxubGV0IHZhcmlhYmxlID0gXCJ2YXJpYWJsZVwiXG5sZXQgcnVsZSA9IFwicnVsZVwiXG5sZXQgZGlyZWN0ID0gXCJkaXJlY3RcIlxubGV0IHNpZGVfZWZmZWN0ID0gXCJzaWRlIGVmZmVjdFwiXG5sZXQgc291cmNlID0gXCJzb3VyY2VcIlxubGV0IHRhcmdldF9tYXAgPSBcInRhcmdldCBtYXBcIlxubGV0IHRhcmdldCA9IFwidGFyZ2V0XCJcbmxldCBsb2NhdGlvbl9wYWlyX2xpc3QgPSBcImxvY2F0aW9uIHBhaXIgbGlzdFwiXG5sZXQgcmhzID0gXCJSSFNcIlxubGV0IGxocyA9IFwiTEhTXCJcbmxldCBpbmZsdWVuY2VtYXAgPSBcImluZmx1ZW5jZSBtYXBcIlxubGV0IG5vZGVzb2ZpbmZsdWVuY2VtYXAgPSBcIm5vZGVzIG9mIGluZmx1ZW5jZSBtYXBcIlxubGV0IHdha2V1cCA9IFwid2FrZS11cCBtYXBcIlxubGV0IGluaGliaXRpb24gPSBcImluaGliaXRpb24gbWFwXCJcbmxldCBub2RlcyA9IFwibm9kZXNcIlxubGV0IHRvdGFsX3N0cmluZyA9IFwidG90YWxcIlxubGV0IGZ3ZF9zdHJpbmcgPSBcImZ3ZFwiXG5sZXQgYndkX3N0cmluZyA9IFwiYndkXCJcbmxldCBvcmlnaW4gPSBcIm9yaWdpblwiXG5sZXQgZGlyZWN0aW9uID0gXCJkaXJlY3Rpb25cIlxubGV0IHJ1bGVfaGlkZGVuID0gXCJoaWRkZW5cIlxubGV0IHNjYyA9IFwic2NjXCJcbmxldCBhY2N1cmFjeV9jbSA9IFwiYWNjdXJhY3lfY21cIlxubGV0IGFjY3VyYWN5X3NjYyA9IFwiYWNjdXJhY3lfc2NjXCJcbmxldCBjb250YWN0bWFwc2NjID0gXCJjb250YWN0IG1hcCBzY2NcIlxubGV0IGNvdW50ZXIgPSBcImNvdW50ZXJcIlxubGV0IGluZiA9IFwibWluXCJcbmxldCBzdXAgPSBcIm1heFwiXG5sZXQga2V5ID0gXCJrZXlcIlxubGV0IGxvY2FsaXR5ID0gXCJsb2NhbGl0eVwiXG5cbigqKioqKioqKioqKioqKioqKioqKVxuKCogQWNjdXJhY3kgbGV2ZWxzICopXG4oKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBhY2N1cmFjeV9sZXZlbCA9IExvdyB8IE1lZGl1bSB8IEhpZ2ggfCBGdWxsXG5cbmxldCBhY2N1cmFjeV9sZXZlbHMgPSBbIExvdzsgTWVkaXVtOyBIaWdoOyBGdWxsIF1cbmxldCBjb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbHMgPSBbIExvdzsgSGlnaCBdXG5sZXQgaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbHMgPSBbIExvdzsgTWVkaXVtOyBIaWdoIF1cbmxldCByZWR1Y3Rpb25fYWNjdXJhY3lfbGV2ZWxzID0gWyBMb3c7IEhpZ2ggXVxuXG5sZXQgYWNjdXJhY3lfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBMb3cgLT4gXCJsb3dcIlxuICB8IE1lZGl1bSAtPiBcIm1lZGl1bVwiXG4gIHwgSGlnaCAtPiBcImhpZ2hcIlxuICB8IEZ1bGwgLT4gXCJmdWxsXCJcblxubGV0IGFjY3VyYWN5X3RvX2pzb24geCA9IEpzb25VdGlsLm9mX3N0cmluZyAoYWNjdXJhY3lfdG9fc3RyaW5nIHgpXG5cbmxldCBhY2N1cmFjeV9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwibG93XCIgLT4gU29tZSBMb3dcbiAgfCBcIm1lZGl1bVwiIC0+IFNvbWUgTWVkaXVtXG4gIHwgXCJoaWdoXCIgLT4gU29tZSBIaWdoXG4gIHwgXCJmdWxsXCIgLT4gU29tZSBGdWxsXG4gIHwgXyAtPiBOb25lXG5cbmxldCBhY2N1cmFjeV9vZl9qc29uIGpzb24gPVxuICBtYXRjaCBhY2N1cmFjeV9vZl9zdHJpbmcgKEpzb25VdGlsLnRvX3N0cmluZyBqc29uKSB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJhY2N1cmFjeSBsZXZlbFwiLCBqc29uKSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFjY3VyYWN5U2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBhY2N1cmFjeV9sZXZlbFxuXG4gIGxldCBjb21wYXJlIGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBMb3csIExvdyAtPiAwXG4gICAgfCBMb3csIF8gLT4gLTFcbiAgICB8IF8sIExvdyAtPiAxXG4gICAgfCBNZWRpdW0sIE1lZGl1bSAtPiAwXG4gICAgfCBNZWRpdW0sIF8gLT4gLTFcbiAgICB8IF8sIE1lZGl1bSAtPiAxXG4gICAgfCBIaWdoLCBIaWdoIC0+IDBcbiAgICB8IEhpZ2gsIF8gLT4gLTFcbiAgICB8IF8sIEhpZ2ggLT4gMVxuICAgIHwgRnVsbCwgRnVsbCAtPiAwXG5cbiAgbGV0IHByaW50IGYgPSBmdW5jdGlvblxuICAgIHwgRnVsbCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiRnVsbFwiXG4gICAgfCBIaWdoIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJIaWdoXCJcbiAgICB8IE1lZGl1bSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiTWVkaXVtXCJcbiAgICB8IExvdyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiTG93XCJcbmVuZClcblxubW9kdWxlIEFjY3VyYWN5TWFwID0gQWNjdXJhY3lTZXRNYXAuTWFwXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKioqKioqKioqKioqKiopXG4oKiBDb250YWN0IG1hcCAqKVxuKCoqKioqKioqKioqKioqKilcblxudHlwZSBjb250YWN0X21hcCA9IFVzZXJfZ3JhcGguY29ubmVjdGVkX2NvbXBvbmVudFxuXG5sZXQgc2l0ZV90eXBlX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IFVzZXJfZ3JhcGguQ291bnRlciBpIC0+IGBMaXN0IFsgYFN0cmluZyBcImNvdW50ZXJcIjsgYEludCBpIF1cbiAgfCBVc2VyX2dyYXBoLlBvcnQgcCAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJwb3J0XCI7XG4gICAgICAgIGBBc3NvY1xuICAgICAgICAgIFtcbiAgICAgICAgICAgICggc2l0ZWxpbmtzLFxuICAgICAgICAgICAgICBtYXRjaCBwLlVzZXJfZ3JhcGgucG9ydF9saW5rcyB3aXRoXG4gICAgICAgICAgICAgIHwgVXNlcl9ncmFwaC5MSU5LUyBsIC0+XG4gICAgICAgICAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgKGZ1biAoKHhsLCB4ciksIHkpIC0+XG4gICAgICAgICAgICAgICAgICAgIGBMaXN0IFsgYExpc3QgWyBgSW50IHhsOyBgSW50IHhyIF07IGBJbnQgeSBdKVxuICAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgICB8IFVzZXJfZ3JhcGguV0hBVEVWRVIgLT4gYE51bGxcbiAgICAgICAgICAgICAgfCBVc2VyX2dyYXBoLlNPTUUgLT4gYEJvb2wgdHJ1ZVxuICAgICAgICAgICAgICB8IFVzZXJfZ3JhcGguVFlQRSAoc2ksIHR5KSAtPlxuICAgICAgICAgICAgICAgIGBBc3NvYyBbIFwic2l0ZV9uYW1lXCIsIGBTdHJpbmcgc2k7IFwicG9ydF9uYW1lXCIsIGBTdHJpbmcgdHkgXSApO1xuICAgICAgICAgICAgKCBzaXRlc3RhdGVzLFxuICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgICAoSnNvblV0aWwub2ZfbGlzdCBKc29uVXRpbC5vZl9zdHJpbmcpXG4gICAgICAgICAgICAgICAgcC5Vc2VyX2dyYXBoLnBvcnRfc3RhdGVzICk7XG4gICAgICAgICAgXTtcbiAgICAgIF1cblxubGV0IHNpdGVfdG9fanNvbiBzaXRlID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgc2l0ZW5hbWUsIEpzb25VdGlsLm9mX3N0cmluZyBzaXRlLlVzZXJfZ3JhcGguc2l0ZV9uYW1lO1xuICAgICAgc2l0ZXR5cGUsIHNpdGVfdHlwZV90b19qc29uIHNpdGUuVXNlcl9ncmFwaC5zaXRlX3R5cGU7XG4gICAgXVxuXG5sZXQgc2l0ZV90eXBlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYFN0cmluZyBcImNvdW50ZXJcIjsgYEludCBpIF0gLT4gVXNlcl9ncmFwaC5Db3VudGVyIGlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJwb3J0XCI7IGBBc3NvYyBsIF0gYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQgcG9ydF9saW5rcyA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgc2l0ZWxpbmtzIGwgaW5cbiAgICAgICAgIFVzZXJfZ3JhcGgubGlua3Nfb2ZfeW9qc29uIGpzb25cbiAgICAgICBpblxuICAgICAgIGxldCBwb3J0X3N0YXRlcyA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgc2l0ZXN0YXRlcyBsIGluXG4gICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcInN0YXRlIGxpc3RcIlxuICAgICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJzdGF0ZVwiKSlcbiAgICAgICAgICAganNvblxuICAgICAgIGluXG4gICAgICAgVXNlcl9ncmFwaC5Qb3J0IHsgVXNlcl9ncmFwaC5wb3J0X2xpbmtzOyBVc2VyX2dyYXBoLnBvcnRfc3RhdGVzIH1cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJzaXRlIG5vZGUgdHlwZVwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwic2l0ZSBub2RlIHR5cGVcIiwgeCkpXG5cbmxldCBzaXRlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IHNpdGVfbmFtZSA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgc2l0ZW5hbWUgbCBpblxuICAgICAgICAgSnNvblV0aWwudG9fc3RyaW5nIGpzb25cbiAgICAgICBpblxuICAgICAgIGxldCBzaXRlX3R5cGUgPVxuICAgICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIHNpdGV0eXBlIGwgaW5cbiAgICAgICAgIHNpdGVfdHlwZV9vZl9qc29uIGpzb25cbiAgICAgICBpblxuICAgICAgIHsgVXNlcl9ncmFwaC5zaXRlX25hbWU7IFVzZXJfZ3JhcGguc2l0ZV90eXBlIH1cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcInNpdGUgbm9kZVwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJzaXRlIG5vZGVcIiwgeCkpXG5cbmxldCBzaXRlX25vZGVfc2l0ZXNfdG9fanNvbiBsaXN0ID0gSnNvblV0aWwub2ZfYXJyYXkgc2l0ZV90b19qc29uIGxpc3RcblxubGV0IHNpdGVfbm9kZV9zaXRlc19vZl9qc29uID1cbiAgSnNvblV0aWwudG9fYXJyYXkgfmVycm9yX21zZzpcInNpdGUgbm9kZSBzaXRlc1wiIHNpdGVfb2ZfanNvblxuXG5sZXQgc2l0ZV9ub2RlX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gYE51bGxcbiAgfCBTb21lIG5vZGUgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgc2l0ZW5vZGVuYW1lLCBKc29uVXRpbC5vZl9zdHJpbmcgbm9kZS5Vc2VyX2dyYXBoLm5vZGVfdHlwZTtcbiAgICAgICAgc2l0ZW5vZGVzaXRlcywgc2l0ZV9ub2RlX3NpdGVzX3RvX2pzb24gbm9kZS5Vc2VyX2dyYXBoLm5vZGVfc2l0ZXM7XG4gICAgICBdXG5cbmxldCBzaXRlX25vZGVfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQgbm9kZV9pZCA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Nfb3B0IHNpdGVub2RlaWQgbCBpblxuICAgICAgICAgT3B0aW9uX3V0aWwubWFwIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKSBqc29uXG4gICAgICAgaW5cbiAgICAgICBsZXQgbm9kZV90eXBlID1cbiAgICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBzaXRlbm9kZW5hbWUgbCBpblxuICAgICAgICAgSnNvblV0aWwudG9fc3RyaW5nIGpzb25cbiAgICAgICBpblxuICAgICAgIGxldCBub2RlX3NpdGVzID1cbiAgICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBzaXRlbm9kZXNpdGVzIGwgaW5cbiAgICAgICAgIHNpdGVfbm9kZV9zaXRlc19vZl9qc29uIGpzb25cbiAgICAgICBpblxuICAgICAgIFNvbWUgeyBVc2VyX2dyYXBoLm5vZGVfdHlwZTsgVXNlcl9ncmFwaC5ub2RlX2lkOyBVc2VyX2dyYXBoLm5vZGVfc2l0ZXMgfVxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwic2l0ZSBub2RlXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcInNpdGUgbm9kZVwiLCB4KSlcblxubGV0IGNvbnRhY3RfbWFwX3RvX2pzb24gY29udGFjdF9tYXAgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIGNvbnRhY3RtYXAsXG4gICAgICAgIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6YWNjdXJhY3lfc3RyaW5nIH5sYWIyOm1hcCBhY2N1cmFjeV90b19qc29uXG4gICAgICAgICAgKEpzb25VdGlsLm9mX2FycmF5IChKc29uVXRpbC5vZl9hcnJheSBzaXRlX25vZGVfdG9fanNvbikpXG4gICAgICAgICAgY29udGFjdF9tYXAgKTtcbiAgICBdXG5cbmxldCBjb250YWN0X21hcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBjb250YWN0bWFwIGwgaW5cbiAgICAgICBKc29uVXRpbC50b19wYWlyIH5sYWIxOmFjY3VyYWN5X3N0cmluZyB+bGFiMjptYXBcbiAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImNvbnRhY3QgbWFwXCIpXG4gICAgICAgICBhY2N1cmFjeV9vZl9qc29uXG4gICAgICAgICAoSnNvblV0aWwudG9fYXJyYXlcbiAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcInNpdGUgbm9kZXMgbGlzdFwiKVxuICAgICAgICAgICAgKEpzb25VdGlsLnRvX2FycmF5XG4gICAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJzaXRlIG5vZGVzIGxpc3RcIilcbiAgICAgICAgICAgICAgIHNpdGVfbm9kZV9vZl9qc29uKSlcbiAgICAgICAgIGpzb25cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJjb250YWN0IG1hcFwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJjb250YWN0IG1hcFwiLCB4KSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKnN0cm9uZ2x5IGNvbm5lY3RlZCBjb21wb25lbnQqKVxuXG50eXBlIHNjYyA9ICgoc3RyaW5nICogc3RyaW5nKSAqIChzdHJpbmcgKiBzdHJpbmcpKSBsaXN0IGxpc3RcblxubGV0IHN0cmluZ19wYWlyX3RvX2pzb24gKGEsIGIpID1cbiAgSnNvblV0aWwub2ZfcGFpciB+bGFiMTphZ2VudCB+bGFiMjpzaXRlbmFtZSBKc29uVXRpbC5vZl9zdHJpbmdcbiAgICBKc29uVXRpbC5vZl9zdHJpbmcgKGEsIGIpXG5cbmxldCBzdHJpbmdfcGFpcl9vZl9qc29uIChqc29uIDogWW9qc29uLkJhc2ljLnQpIDogc3RyaW5nICogc3RyaW5nID1cbiAgSnNvblV0aWwudG9fcGFpciB+bGFiMTphZ2VudCB+bGFiMjpzaXRlbmFtZSB+ZXJyb3JfbXNnOlwic2l0ZVwiXG4gICAgKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwiYWdlbnQgbmFtZVwiKVxuICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcInNpdGVfbmFtZVwiKVxuICAgIGpzb25cblxubGV0IHN0cmluZ19wYWlyX3BhaXJfdG9fanNvbiAoYSwgYikgPVxuICBKc29uVXRpbC5vZl9wYWlyIHN0cmluZ19wYWlyX3RvX2pzb24gc3RyaW5nX3BhaXJfdG9fanNvbiAoYSwgYilcblxubGV0IHN0cmluZ19wYWlyX3BhaXJfb2ZfanNvbiBqc29uIDogKHN0cmluZyAqIHN0cmluZykgKiAoc3RyaW5nICogc3RyaW5nKSA9XG4gIEpzb25VdGlsLnRvX3BhaXIgfmVycm9yX21zZzpcImJvbmRcIiBzdHJpbmdfcGFpcl9vZl9qc29uIHN0cmluZ19wYWlyX29mX2pzb25cbiAgICBqc29uXG5cbmxldCBzdHJpbmdfcGFpcl9wYWlyX2xpc3RfdG9fanNvbiBsID1cbiAgSnNvblV0aWwub2ZfbGlzdCBzdHJpbmdfcGFpcl9wYWlyX3RvX2pzb24gbFxuXG5sZXQgc3RyaW5nX3BhaXJfcGFpcl9saXN0X29mX2pzb24ganNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcImxpc3Rfb2ZfYm9uZHNcIiBzdHJpbmdfcGFpcl9wYWlyX29mX2pzb24ganNvblxuXG5sZXQgc3RyaW5nX3BhaXJfcGFpcl9saXN0X2xpc3RfdG9fanNvbiBsID1cbiAgSnNvblV0aWwub2ZfbGlzdCBzdHJpbmdfcGFpcl9wYWlyX2xpc3RfdG9fanNvbiBsXG5cbmxldCBzdHJpbmdfcGFpcl9wYWlyX2xpc3RfbGlzdF9vZl9qc29uIGpzb24gPVxuICBKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJsaXN0X29mX2xpc3RzX29mX2JvbmRzXCJcbiAgICBzdHJpbmdfcGFpcl9wYWlyX2xpc3Rfb2ZfanNvbiBqc29uXG5cbmxldCBzY2NfdG9fanNvbiAoY21fYWNjLCBzY2NfYWNjLCBzY2MpID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBjb250YWN0bWFwc2NjLFxuICAgICAgICBKc29uVXRpbC5vZl90cmlwbGUgfmxhYjE6YWNjdXJhY3lfY20gfmxhYjI6YWNjdXJhY3lfc2NjIH5sYWIzOm1hcFxuICAgICAgICAgIGFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3lfdG9fanNvbiBzdHJpbmdfcGFpcl9wYWlyX2xpc3RfbGlzdF90b19qc29uXG4gICAgICAgICAgKGNtX2FjYywgc2NjX2FjYywgc2NjKSApO1xuICAgIF1cblxubGV0IHNjY19vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBjb250YWN0bWFwc2NjIGwgaW5cbiAgICAgICBKc29uVXRpbC50b190cmlwbGUgfmxhYjE6YWNjdXJhY3lfY20gfmxhYjI6YWNjdXJhY3lfc2NjIH5sYWIzOm1hcFxuICAgICAgICAgfmVycm9yX21zZzpcInNjYyBkZWNvbXBvc2l0aW9uXCIgYWNjdXJhY3lfb2ZfanNvbiBhY2N1cmFjeV9vZl9qc29uXG4gICAgICAgICBzdHJpbmdfcGFpcl9wYWlyX2xpc3RfbGlzdF9vZl9qc29uIGpzb25cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwic2NjIGRlY29tcG9zaXRpb25cIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcInNjYyBkZWNvbXBvc2l0aW9uXCIsIHgpKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKioqKioqKioqKioqKiopXG4oKiBkZWFkIHJ1bGVzICopXG4oKioqKioqKioqKioqKiopXG5cbnR5cGUgcnVsZV9kaXJlY3Rpb24gPVxuICB8IERpcmVjdF9ydWxlXG4gIHwgUmV2ZXJzZV9ydWxlXG4gIHwgQm90aF9kaXJlY3Rpb25zXG4gIHwgRHVtbXlfcnVsZV9kaXJlY3Rpb25cbiAgfCBWYXJpYWJsZVxuXG50eXBlIHJ1bGUgPSB7XG4gIHJ1bGVfaWQ6IGludDtcbiAgcnVsZV9sYWJlbDogc3RyaW5nO1xuICBydWxlX2FzdDogc3RyaW5nO1xuICBydWxlX3Bvc2l0aW9uOiBMb2MudDtcbiAgcnVsZV9kaXJlY3Rpb246IHJ1bGVfZGlyZWN0aW9uO1xuICBydWxlX2hpZGRlbjogYm9vbDtcbn1cblxubGV0IGRpcmVjdGlvbl90b19qc29uIGQgPVxuICBtYXRjaCBkIHdpdGhcbiAgfCBEaXJlY3RfcnVsZSAtPiBgU3RyaW5nIFwiZGlyZWN0XCJcbiAgfCBSZXZlcnNlX3J1bGUgLT4gYFN0cmluZyBcInJldmVyc2VcIlxuICB8IEJvdGhfZGlyZWN0aW9ucyAtPiBgU3RyaW5nIFwiYm90aFwiXG4gIHwgRHVtbXlfcnVsZV9kaXJlY3Rpb24gLT4gYFN0cmluZyBcImR1bW15XCJcbiAgfCBWYXJpYWJsZSAtPiBgU3RyaW5nIFwidmFyaWFibGVcIlxuXG5sZXQganNvbl90b19kaXJlY3Rpb24gcyA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IGBTdHJpbmcgXCJkaXJlY3RcIiAtPiBEaXJlY3RfcnVsZVxuICB8IGBTdHJpbmcgXCJyZXZlcnNlXCIgLT4gUmV2ZXJzZV9ydWxlXG4gIHwgYFN0cmluZyBcImJvdGhcIiAtPiBCb3RoX2RpcmVjdGlvbnNcbiAgfCBgU3RyaW5nIFwiZHVtbXlcIiAtPiBEdW1teV9ydWxlX2RpcmVjdGlvblxuICB8IGBTdHJpbmcgXCJ2YXJpYWJsZVwiIC0+IFZhcmlhYmxlXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJydWxlIGRpcmVjdGlvblwiLCB4KSlcblxubGV0IHJ1bGVfdG9fanNvbiBydWxlID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgcnVsZV9pZCwgSnNvblV0aWwub2ZfaW50IHJ1bGUucnVsZV9pZDtcbiAgICAgIGxhYmVsLCBKc29uVXRpbC5vZl9zdHJpbmcgcnVsZS5ydWxlX2xhYmVsO1xuICAgICAgYXN0LCBKc29uVXRpbC5vZl9zdHJpbmcgcnVsZS5ydWxlX2FzdDtcbiAgICAgIHBvc2l0aW9uLCBMb2MueW9qc29uX29mX2Fubm90ZWQgSnNvblV0aWwub2ZfdW5pdCAoKCksIHJ1bGUucnVsZV9wb3NpdGlvbik7XG4gICAgICBkaXJlY3Rpb24sIGRpcmVjdGlvbl90b19qc29uIHJ1bGUucnVsZV9kaXJlY3Rpb247XG4gICAgICBydWxlX2hpZGRlbiwgSnNvblV0aWwub2ZfYm9vbCBydWxlLnJ1bGVfaGlkZGVuO1xuICAgIF1cblxubGV0IGpzb25fdG9fcnVsZSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA2IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIHJ1bGVfaWQgPSBKc29uVXRpbC50b19pbnQgKExpc3QuYXNzb2MgcnVsZV9pZCBsKTtcbiAgICAgICAgIHJ1bGVfbGFiZWwgPSBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgbGFiZWwgbCk7XG4gICAgICAgICBydWxlX2FzdCA9IEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBhc3QgbCk7XG4gICAgICAgICBydWxlX3Bvc2l0aW9uID1cbiAgICAgICAgICAgc25kXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvblxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b191bml0IH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImxvY2FsaXR5XCIpKVxuICAgICAgICAgICAgICAgIChMaXN0LmFzc29jIHBvc2l0aW9uIGwpKTtcbiAgICAgICAgIHJ1bGVfZGlyZWN0aW9uID0ganNvbl90b19kaXJlY3Rpb24gKExpc3QuYXNzb2MgZGlyZWN0aW9uIGwpO1xuICAgICAgICAgcnVsZV9oaWRkZW4gPSBKc29uVXRpbC50b19ib29sIChMaXN0LmFzc29jIHJ1bGVfaGlkZGVuIGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiIHJ1bGVcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwicnVsZVwiLCB4KSlcblxudHlwZSB2YXIgPSB7XG4gIHZhcl9pZDogaW50O1xuICB2YXJfbGFiZWw6IHN0cmluZztcbiAgdmFyX2FzdDogc3RyaW5nO1xuICB2YXJfcG9zaXRpb246IExvYy50O1xufVxuXG5sZXQgdmFyX3RvX2pzb24gdmFyID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgcnVsZV9pZCwgSnNvblV0aWwub2ZfaW50IHZhci52YXJfaWQ7XG4gICAgICBsYWJlbCwgSnNvblV0aWwub2Zfc3RyaW5nIHZhci52YXJfbGFiZWw7XG4gICAgICBhc3QsIEpzb25VdGlsLm9mX3N0cmluZyB2YXIudmFyX2FzdDtcbiAgICAgIHBvc2l0aW9uLCBMb2MueW9qc29uX29mX2Fubm90ZWQgSnNvblV0aWwub2ZfdW5pdCAoKCksIHZhci52YXJfcG9zaXRpb24pO1xuICAgIF1cblxubGV0IGpzb25fdG9fdmFyID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDQgLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgdmFyX2lkID0gSnNvblV0aWwudG9faW50IChMaXN0LmFzc29jIHJ1bGVfaWQgbCk7XG4gICAgICAgICB2YXJfbGFiZWwgPSBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgbGFiZWwgbCk7XG4gICAgICAgICB2YXJfYXN0ID0gSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIGFzdCBsKTtcbiAgICAgICAgIHZhcl9wb3NpdGlvbiA9XG4gICAgICAgICAgIHNuZFxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb25cbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fdW5pdCB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJsb2NhbGl0eVwiKSlcbiAgICAgICAgICAgICAgICAoTGlzdC5hc3NvYyBwb3NpdGlvbiBsKSk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCIgdmFyXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcInZhclwiLCB4KSlcblxudHlwZSAoJ3J1bGUsICd2YXIpIGluZmx1ZW5jZV9ub2RlID0gUnVsZSBvZiAncnVsZSB8IFZhciBvZiAndmFyXG50eXBlIHBvc19vZl9ydWxlc19hbmRfdmFycyA9ICgoaW50LCBpbnQpIGluZmx1ZW5jZV9ub2RlICogTG9jLnQpIGxpc3RcblxubGV0IGluZmx1ZW5jZV9ub2RlX3RvX2pzb24gcnVsZV90b19qc29uIHZhcl90b19qc29uIGEgPVxuICBtYXRjaCBhIHdpdGhcbiAgfCBWYXIgaSAtPiBgQXNzb2MgWyB2YXJpYWJsZSwgdmFyX3RvX2pzb24gaSBdXG4gIHwgUnVsZSBpIC0+IGBBc3NvYyBbIHJ1bGUsIHJ1bGVfdG9fanNvbiBpIF1cblxubGV0IGluZmx1ZW5jZV9ub2RlX29mX2pzb24ganNvbl90b19ydWxlIGpzb25fdG9fdmFyID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAocywganNvbikgXSB3aGVuIHMgPSB2YXJpYWJsZSAtPiBWYXIgKGpzb25fdG9fdmFyIGpzb24pXG4gIHwgYEFzc29jIFsgKHMsIGpzb24pIF0gd2hlbiBzID0gcnVsZSAtPiBSdWxlIChqc29uX3RvX3J1bGUganNvbilcbiAgfCB4IC0+XG4gICAgbGV0IGVycm9yX21zZyA9IFwiTm90IGEgY29ycmVjdCBpbmZsdWVuY2Ugbm9kZVwiIGluXG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBzaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uID1cbiAgaW5mbHVlbmNlX25vZGVfdG9fanNvbiBKc29uVXRpbC5vZl9pbnQgSnNvblV0aWwub2ZfaW50XG5cbmxldCBzaG9ydF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uID1cbiAgaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgIChKc29uVXRpbC50b19pbnQgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwicnVsZSBpZFwiKSlcbiAgICAoSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcInZhciBpZFwiKSlcblxubGV0IHBvc19vZl9ydWxlc19hbmRfdmFyc190b19qc29uID1cbiAgSnNvblV0aWwub2ZfbGlzdFxuICAgIChKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmtleSB+bGFiMjpsb2NhbGl0eSBzaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgICAgKGZ1biBsb2MgLT4gTG9jLnlvanNvbl9vZl9hbm5vdGVkIEpzb25VdGlsLm9mX3VuaXQgKCgpLCBsb2MpKSlcblxubGV0IHBvc19vZl9ydWxlc19hbmRfdmFyc19vZl9qc29uID1cbiAgSnNvblV0aWwudG9fbGlzdFxuICAgIChKc29uVXRpbC50b19wYWlyIH5sYWIxOmtleSB+bGFiMjpsb2NhbGl0eSBzaG9ydF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgICAgKGZ1biB4IC0+XG4gICAgICAgICBzbmRcbiAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvblxuICAgICAgICAgICAgICAoSnNvblV0aWwudG9fdW5pdCB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJsb2NhbGl0eVwiKSlcbiAgICAgICAgICAgICAgeCkpKVxuXG5sZXQgcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV90b19qc29uID1cbiAgaW5mbHVlbmNlX25vZGVfdG9fanNvbiBydWxlX3RvX2pzb24gdmFyX3RvX2pzb25cblxubGV0IHJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiA9XG4gIGluZmx1ZW5jZV9ub2RlX29mX2pzb24ganNvbl90b19ydWxlIGpzb25fdG9fdmFyXG5cbmxldCBzaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSA9IGZ1bmN0aW9uXG4gIHwgUnVsZSBydWxlIC0+IFJ1bGUgcnVsZS5ydWxlX2lkXG4gIHwgVmFyIHZhciAtPiBWYXIgdmFyLnZhcl9pZFxuXG5sZXQgcG9zaXRpb25fb2ZfcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZSA9IGZ1bmN0aW9uXG4gIHwgUnVsZSByIC0+IHIucnVsZV9wb3NpdGlvblxuICB8IFZhciB2IC0+IHYudmFyX3Bvc2l0aW9uXG5cbm1vZHVsZSBJbmZsdWVuY2VOb2RlU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSAoaW50LCBpbnQpIGluZmx1ZW5jZV9ub2RlXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5cbiAgbGV0IHByaW50IGYgPSBmdW5jdGlvblxuICAgIHwgUnVsZSByIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJSdWxlICVpXCIgclxuICAgIHwgVmFyIHIgLT4gRm9ybWF0LmZwcmludGYgZiBcIlZhciAlaVwiIHJcbmVuZClcblxubW9kdWxlIEluZmx1ZW5jZU5vZGVNYXAgPSBJbmZsdWVuY2VOb2RlU2V0TWFwLk1hcFxuXG4oKiBSZWxhdGlvbnMgKilcblxudHlwZSAnYSBwYWlyID0gJ2EgKiAnYVxudHlwZSBsb2NhdGlvbiA9IERpcmVjdCBvZiBpbnQgfCBTaWRlX2VmZmVjdCBvZiBpbnRcblxubGV0IGR1bXBfbG9jYXRpb24gZm10ID0gZnVuY3Rpb25cbiAgfCBEaXJlY3QgaW50IC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVpXCIgaW50XG4gIHwgU2lkZV9lZmZlY3QgaW50IC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVpKlwiIGludFxuXG5sZXQgZHVtcF9sb2NhdGlvbl9wYWlyIGZtdCAoYSwgYikgPVxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoJWEsJWEpXCIgZHVtcF9sb2NhdGlvbiBhIGR1bXBfbG9jYXRpb24gYlxuXG5sZXQgZHVtcF9sb2NhdGlvbl9wYWlyX2xpc3QgZm10IGwgPVxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCJbJWFdXCJcbiAgICAoUHAubGlzdCAoZnVuIGZtdCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIjtcIikgZHVtcF9sb2NhdGlvbl9wYWlyKVxuICAgIGxcblxubGV0IHN0cmluZ19vZl9sYWJlbF9saXN0IGwgPSBGb3JtYXQuYXNwcmludGYgXCIlYVwiIGR1bXBfbG9jYXRpb25fcGFpcl9saXN0IGxcblxudHlwZSBoYWxmX2luZmx1ZW5jZV9tYXAgPVxuICBsb2NhdGlvbiBwYWlyIGxpc3QgSW5mbHVlbmNlTm9kZU1hcC50IEluZmx1ZW5jZU5vZGVNYXAudFxuXG50eXBlIGluZmx1ZW5jZV9tYXAgPSB7XG4gIG5vZGVzOiAocnVsZSwgdmFyKSBpbmZsdWVuY2Vfbm9kZSBsaXN0O1xuICBwb3NpdGl2ZTogaGFsZl9pbmZsdWVuY2VfbWFwO1xuICBuZWdhdGl2ZTogaGFsZl9pbmZsdWVuY2VfbWFwO1xufVxuXG4oKiBMb2NhdGlvbiBsYWJlbHMgKilcbmxldCBsb2NhdGlvbl90b19qc29uIGEgPVxuICBtYXRjaCBhIHdpdGhcbiAgfCBEaXJlY3QgaSAtPiBgQXNzb2MgWyBkaXJlY3QsIEpzb25VdGlsLm9mX2ludCBpIF1cbiAgfCBTaWRlX2VmZmVjdCBpIC0+IGBBc3NvYyBbIHNpZGVfZWZmZWN0LCBKc29uVXRpbC5vZl9pbnQgaSBdXG5cbmxldCBsb2NhdGlvbl9vZl9qc29uID8oZXJyb3JfbXNnID0gXCJOb3QgYSBjb3JyZWN0IGxvY2F0aW9uXCIpID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAocywganNvbikgXSB3aGVuIHMgPSBkaXJlY3QgLT4gRGlyZWN0IChKc29uVXRpbC50b19pbnQganNvbilcbiAgfCBgQXNzb2MgWyAocywganNvbikgXSB3aGVuIHMgPSBzaWRlX2VmZmVjdCAtPlxuICAgIFNpZGVfZWZmZWN0IChKc29uVXRpbC50b19pbnQganNvbilcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgaGFsZl9pbmZsdWVuY2VfbWFwX3RvX2pzb24gPVxuICBJbmZsdWVuY2VOb2RlTWFwLnRvX2pzb24gfmxhYl9rZXk6c291cmNlIH5sYWJfdmFsdWU6dGFyZ2V0X21hcFxuICAgIHNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAoSW5mbHVlbmNlTm9kZU1hcC50b19qc29uIH5sYWJfa2V5OnRhcmdldCB+bGFiX3ZhbHVlOmxvY2F0aW9uX3BhaXJfbGlzdFxuICAgICAgIHNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAgICAoSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyIH5sYWIxOnJocyB+bGFiMjpsaHMgbG9jYXRpb25fdG9fanNvblxuICAgICAgICAgICAgIGxvY2F0aW9uX3RvX2pzb24pKSlcblxubGV0IGhhbGZfaW5mbHVlbmNlX21hcF9vZl9qc29uID1cbiAgSW5mbHVlbmNlTm9kZU1hcC5vZl9qc29uXG4gICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiYWN0aXZhdGlvbiBvciBpbmhpYml0aW9uIG1hcFwiKVxuICAgIH5sYWJfa2V5OnNvdXJjZSB+bGFiX3ZhbHVlOnRhcmdldF9tYXAgc2hvcnRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgIChJbmZsdWVuY2VOb2RlTWFwLm9mX2pzb24gfmxhYl9rZXk6dGFyZ2V0IH5sYWJfdmFsdWU6bG9jYXRpb25fcGFpcl9saXN0XG4gICAgICAgfmVycm9yX21zZzpcIm1hcCBvZiBsaXN0cyBvZiBwYWlycyBvZiBsb2NhdGlvbnNcIlxuICAgICAgIHNob3J0X2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAgICAoSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwibGlzdCBvZiBwYWlyIG9mIGxvY2F0aW9uc1wiXG4gICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXIgfmVycm9yX21zZzpcIlwiIH5sYWIxOnJocyB+bGFiMjpsaHNcbiAgICAgICAgICAgICAobG9jYXRpb25fb2ZfanNvbiB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJsb2NhdGlvblwiKSlcbiAgICAgICAgICAgICAobG9jYXRpb25fb2ZfanNvbiB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJsb2NhdGlvblwiKSkpKSlcblxuKCogSW5mbHVlbmNlIG1hcCAqKVxuXG5sZXQgbm9kZXNfbGlzdF90b19qc29uID0gSnNvblV0aWwub2ZfbGlzdCByZWZpbmVkX2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbmxldCBub2Rlc19saXN0X29mX2pzb24gPSBKc29uVXRpbC50b19saXN0IHJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuXG5sZXQgaW5mbHVlbmNlX21hcF90b19qc29uIGluZmx1ZW5jZV9tYXAgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIGluZmx1ZW5jZW1hcCxcbiAgICAgICAgSnNvblV0aWwub2ZfcGFpciB+bGFiMTphY2N1cmFjeV9zdHJpbmcgfmxhYjI6bWFwIGFjY3VyYWN5X3RvX2pzb25cbiAgICAgICAgICAoZnVuIGluZmx1ZW5jZV9tYXAgLT5cbiAgICAgICAgICAgIGBBc3NvY1xuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgbm9kZXMsIG5vZGVzX2xpc3RfdG9fanNvbiBpbmZsdWVuY2VfbWFwLm5vZGVzO1xuICAgICAgICAgICAgICAgIHdha2V1cCwgaGFsZl9pbmZsdWVuY2VfbWFwX3RvX2pzb24gaW5mbHVlbmNlX21hcC5wb3NpdGl2ZTtcbiAgICAgICAgICAgICAgICBpbmhpYml0aW9uLCBoYWxmX2luZmx1ZW5jZV9tYXBfdG9fanNvbiBpbmZsdWVuY2VfbWFwLm5lZ2F0aXZlO1xuICAgICAgICAgICAgICBdKVxuICAgICAgICAgIGluZmx1ZW5jZV9tYXAgKTtcbiAgICBdXG5cbmxldCBub2Rlc19vZl9pbmZsdWVuY2VfbWFwX3RvX2pzb24gbm9kZXNfbGlzdCA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggbm9kZXNvZmluZmx1ZW5jZW1hcCxcbiAgICAgICAgSnNvblV0aWwub2ZfcGFpciB+bGFiMTphY2N1cmFjeV9zdHJpbmcgfmxhYjI6bWFwIGFjY3VyYWN5X3RvX2pzb25cbiAgICAgICAgICAoZnVuIG5vZGVzX2xpc3QgLT4gYEFzc29jIFsgbm9kZXMsIG5vZGVzX2xpc3RfdG9fanNvbiBub2Rlc19saXN0IF0pXG4gICAgICAgICAgbm9kZXNfbGlzdCApO1xuICAgIF1cblxubGV0IG5vZGVzX29mX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgbm9kZXNvZmluZmx1ZW5jZW1hcCBsIGluXG4gICAgICAgSnNvblV0aWwudG9fcGFpciB+bGFiMTphY2N1cmFjeV9zdHJpbmcgfmxhYjI6bWFwXG4gICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJub2RlcyBvZiBpbmZsdWVuY2UgbWFwMVwiKVxuICAgICAgICAgYWNjdXJhY3lfb2ZfanNvblxuICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAxIC0+XG4gICAgICAgICAgICAgKHRyeSBub2Rlc19saXN0X29mX2pzb24gKExpc3QuYXNzb2Mgbm9kZXMgbClcbiAgICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJub2RlcyBvZiBpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwibm9kZXMgb2YgaW5mbHVlbmNlIG1hcFwiLCB4KSkpXG4gICAgICAgICBqc29uXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcIm5vZGVzIG9mIGluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJub2RlcyBvZiBpbmZsdWVuY2UgbWFwXCIsIHgpKVxuXG5sZXQgbG9jYWxfaW5mbHVlbmNlX21hcF90b19qc29uIGluZmx1ZW5jZV9tYXAgPVxuICBsZXQgYWNjdXJhY3ksIHRvdGFsLCBid2QsIGZ3ZCwgb3JpZ2luX29wdCwgaW5mbHVlbmNlX21hcCA9IGluZmx1ZW5jZV9tYXAgaW5cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBpbmZsdWVuY2VtYXAsXG4gICAgICAgIGBBc3NvY1xuICAgICAgICAgIFtcbiAgICAgICAgICAgIGFjY3VyYWN5X3N0cmluZywgYWNjdXJhY3lfdG9fanNvbiBhY2N1cmFjeTtcbiAgICAgICAgICAgIHRvdGFsX3N0cmluZywgSnNvblV0aWwub2ZfaW50IHRvdGFsO1xuICAgICAgICAgICAgZndkX3N0cmluZywgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludCBmd2Q7XG4gICAgICAgICAgICBid2Rfc3RyaW5nLCBKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2ZfaW50IGJ3ZDtcbiAgICAgICAgICAgIG9yaWdpbiwgSnNvblV0aWwub2Zfb3B0aW9uIHJlZmluZWRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiBvcmlnaW5fb3B0O1xuICAgICAgICAgICAgKCBtYXAsXG4gICAgICAgICAgICAgIChmdW4gaW5mbHVlbmNlX21hcCAtPlxuICAgICAgICAgICAgICAgIGBBc3NvY1xuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBub2Rlcywgbm9kZXNfbGlzdF90b19qc29uIGluZmx1ZW5jZV9tYXAubm9kZXM7XG4gICAgICAgICAgICAgICAgICAgIHdha2V1cCwgaGFsZl9pbmZsdWVuY2VfbWFwX3RvX2pzb24gaW5mbHVlbmNlX21hcC5wb3NpdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgKCBpbmhpYml0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgIGhhbGZfaW5mbHVlbmNlX21hcF90b19qc29uIGluZmx1ZW5jZV9tYXAubmVnYXRpdmUgKTtcbiAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgaW5mbHVlbmNlX21hcCApO1xuICAgICAgICAgIF0gKTtcbiAgICBdXG5cbmxldCBpbmZsdWVuY2VfbWFwX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIGluZmx1ZW5jZW1hcCBsIGluXG4gICAgICAgSnNvblV0aWwudG9fcGFpciB+bGFiMTphY2N1cmFjeV9zdHJpbmcgfmxhYjI6bWFwXG4gICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJpbmZsdWVuY2UgbWFwMVwiKVxuICAgICAgICAgYWNjdXJhY3lfb2ZfanNvblxuICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5vZGVzID0gbm9kZXNfbGlzdF9vZl9qc29uIChMaXN0LmFzc29jIG5vZGVzIGwpO1xuICAgICAgICAgICAgICAgICAgcG9zaXRpdmUgPSBoYWxmX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiAoTGlzdC5hc3NvYyB3YWtldXAgbCk7XG4gICAgICAgICAgICAgICAgICBuZWdhdGl2ZSA9XG4gICAgICAgICAgICAgICAgICAgIGhhbGZfaW5mbHVlbmNlX21hcF9vZl9qc29uIChMaXN0LmFzc29jIGluaGliaXRpb24gbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcImluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgICAgICAgIGpzb25cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImluZmx1ZW5jZSBtYXBcIiwgeCkpXG5cbmxldCBsb2NhbF9pbmZsdWVuY2VfbWFwX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIGluZmx1ZW5jZW1hcCBsIGluXG4gICAgICAgbWF0Y2gganNvbiB3aXRoXG4gICAgICAgfCBgQXNzb2MgbCcgLT5cbiAgICAgICAgIGxldCBhY2N1cmFjeSA9IGFjY3VyYWN5X29mX2pzb24gKExpc3QuYXNzb2MgYWNjdXJhY3lfc3RyaW5nIGwnKSBpblxuICAgICAgICAgbGV0IHRvdGFsID0gSnNvblV0aWwudG9faW50IChMaXN0LmFzc29jIHRvdGFsX3N0cmluZyBsJykgaW5cbiAgICAgICAgIGxldCBlcnJvcl9tc2cgPSBKc29uVXRpbC5idWlsZF9tc2cgXCJmd2QgcmFkaXVzXCIgaW5cbiAgICAgICAgIGxldCBmd2QgPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2cpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgZndkX3N0cmluZyBsJylcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgZXJyb3JfbXNnID0gSnNvblV0aWwuYnVpbGRfbXNnIFwiYndkIHJhZGl1c1wiIGluXG4gICAgICAgICBsZXQgYndkID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX2ludCB+ZXJyb3JfbXNnKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIGJ3ZF9zdHJpbmcgbCcpXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IG9yaWdpbiA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvbiByZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBvcmlnaW4gbCcpXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IGluZmx1ZW5jZV9tYXAgPVxuICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBub2RlcyA9IG5vZGVzX2xpc3Rfb2ZfanNvbiAoTGlzdC5hc3NvYyBub2RlcyBsKTtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpdmUgPSBoYWxmX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiAoTGlzdC5hc3NvYyB3YWtldXAgbCk7XG4gICAgICAgICAgICAgICAgICAgIG5lZ2F0aXZlID1cbiAgICAgICAgICAgICAgICAgICAgICBoYWxmX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiAoTGlzdC5hc3NvYyBpbmhpYml0aW9uIGwpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYWwgaW5mbHVlbmNlIG1hcFwiLCB4KSkpXG4gICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYWwgaW5mbHVlbmNlIG1hcFwiLCB4KSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgbWFwIGwnKVxuICAgICAgICAgaW5cbiAgICAgICAgIGFjY3VyYWN5LCB0b3RhbCwgZndkLCBid2QsIG9yaWdpbiwgaW5mbHVlbmNlX21hcFxuICAgICAgIHwgXyAtPlxuICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImluZmx1ZW5jZSBtYXBcIiwgeCkpXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiaW5mbHVlbmNlIG1hcFwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJpbmZsdWVuY2UgbWFwXCIsIHgpKVxuXG4oKioqKioqKioqKioqKioqKVxuKCogZGVhZCBydWxlcyAgKilcbigqKioqKioqKioqKioqKiopXG5cbnR5cGUgZGVhZF9ydWxlcyA9IHJ1bGUgbGlzdFxuXG5sZXQgZGVhZF9ydWxlc190b19qc29uIGpzb24gPVxuICBgQXNzb2MgWyBkZWFkX3J1bGVzLCBKc29uVXRpbC5vZl9saXN0IHJ1bGVfdG9fanNvbiBqc29uIF1cblxubGV0IGRlYWRfcnVsZXNfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKHMsIGpzb24pIF0gYXMgeCB3aGVuIHMgPSBkZWFkX3J1bGVzIC0+XG4gICAgKHRyeSBKc29uVXRpbC50b19saXN0IGpzb25fdG9fcnVsZSBqc29uXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBkZWFkX3J1bGVzLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIGRlYWRfcnVsZXMsIHgpKVxuXG4oKioqKioqKioqKioqKioqKVxuKCogZGVhZCBhZ2VudHMgKilcbigqKioqKioqKioqKioqKiopXG5cbnR5cGUgYWdlbnRfa2luZCA9IHtcbiAgYWdlbnRfaWQ6IGludDtcbiAgYWdlbnRfYXN0OiBzdHJpbmc7XG4gIGFnZW50X3Bvc2l0aW9uOiBMb2MudCBsaXN0O1xufVxuXG5sZXQganNvbl90b19hZ2VudF9raW5kID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDMgLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgYWdlbnRfaWQgPSBKc29uVXRpbC50b19pbnQgKExpc3QuYXNzb2MgYWdlbnRfaWQgbCk7XG4gICAgICAgICBhZ2VudF9hc3QgPSBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgYXN0IGwpO1xuICAgICAgICAgYWdlbnRfcG9zaXRpb24gPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYWxpdHkgbGlzdFwiKVxuICAgICAgICAgICAgIChmdW4ganNvbiAtPlxuICAgICAgICAgICAgICAgc25kXG4gICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb25cbiAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3VuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYWxpdHlcIikpXG4gICAgICAgICAgICAgICAgICAgIGpzb24pKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIHBvc2l0aW9uX2xpc3QgbCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJhZ2VudCBraW5kXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcImFnZW50IGtpbmRcIiwgeCkpXG5cbmxldCBhZ2VudF9raW5kX3RvX2pzb24gYWdlbnRfa2luZCA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIGFnZW50X2lkLCBKc29uVXRpbC5vZl9pbnQgYWdlbnRfa2luZC5hZ2VudF9pZDtcbiAgICAgIGFzdCwgSnNvblV0aWwub2Zfc3RyaW5nIGFnZW50X2tpbmQuYWdlbnRfYXN0O1xuICAgICAgKCBwb3NpdGlvbl9saXN0LFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKGZ1biBhIC0+IExvYy55b2pzb25fb2ZfYW5ub3RlZCBKc29uVXRpbC5vZl91bml0ICgoKSwgYSkpXG4gICAgICAgICAgYWdlbnRfa2luZC5hZ2VudF9wb3NpdGlvbiApO1xuICAgIF1cblxudHlwZSBkZWFkX2FnZW50cyA9IGFnZW50X2tpbmQgbGlzdFxuXG5sZXQganNvbl9vZl9kZWFkX2FnZW50cyBqc29uID1cbiAgYEFzc29jIFsgZGVhZF9hZ2VudHMsIEpzb25VdGlsLm9mX2xpc3QgYWdlbnRfa2luZF90b19qc29uIGpzb24gXVxuXG5sZXQganNvbl90b19kZWFkX2FnZW50cyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKHMsIGpzb24pIF0gYXMgeCB3aGVuIHMgPSBkZWFkX2FnZW50cyAtPlxuICAgICh0cnkgSnNvblV0aWwudG9fbGlzdCBqc29uX3RvX2FnZW50X2tpbmQganNvblxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgZGVhZF9hZ2VudHMsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBkZWFkX2FnZW50cywgeCkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogbm9uIHdlYWtseSByZXZlcnNpYmxlIHRyYW5zaXRpb25zICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzZXBhcmF0aW5nX3RyYW5zaXRpb25zID0gKHJ1bGUgKiAoc3RyaW5nICogc3RyaW5nKSBsaXN0KSBsaXN0XG5cbmxldCBzZXBhcmF0aW5nX3RyYW5zaXRpb25zX3RvX2pzb24gPVxuICBKc29uVXRpbC5vZl9saXN0XG4gICAgKEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6XCJydWxlXCIgfmxhYjI6XCJwb3RlbnRpYWwtY29udGV4dHNcIiBydWxlX3RvX2pzb25cbiAgICAgICAoSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyIH5sYWIxOlwiczFcIiB+bGFiMjpcInMyXCIgSnNvblV0aWwub2Zfc3RyaW5nXG4gICAgICAgICAgICAgSnNvblV0aWwub2Zfc3RyaW5nKSkpXG5cbmxldCBzZXBhcmF0aW5nX3RyYW5zaXRpb25zX29mX2pzb24gPVxuICBKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJzZXBhcmF0aW5nIHRyYW5zaXRpb25zIGxpc3RcIlxuICAgIChKc29uVXRpbC50b19wYWlyIH5lcnJvcl9tc2c6XCJzZXBhcmF0aW5nIHRyYW5zaXRpb25cIiB+bGFiMTpcInJ1bGVcIlxuICAgICAgIH5sYWIyOlwicG90ZW50aWFsLWNvbnRleHRzXCIganNvbl90b19ydWxlXG4gICAgICAgKEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcInNlcGFyYXRpbmcgdHJhbnNpdGlvbnNcIlxuICAgICAgICAgIChKc29uVXRpbC50b19wYWlyIH5lcnJvcl9tc2c6XCJ0cmFuc2l0aW9uXCIgfmxhYjE6XCJzMVwiIH5sYWIyOlwiczJcIlxuICAgICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSkpKVxuXG4oKioqKioqKioqKioqKioqKVxuKCogQ29uc3RyYWludHMgKilcbigqKioqKioqKioqKioqKiopXG5cbnR5cGUgYmluZGluZ19zdGF0ZSA9XG4gIHwgRnJlZVxuICB8IFdpbGRjYXJkXG4gIHwgQm91bmRfdG9fdW5rbm93blxuICB8IEJvdW5kX3RvIG9mIGludFxuICB8IEJpbmRpbmdfdHlwZSBvZiBzdHJpbmcgKiBzdHJpbmdcblxudHlwZSBhZ2VudCA9XG4gIHN0cmluZ1xuICAqIChzdHJpbmdcbiAgICAqIHN0cmluZyBvcHRpb25cbiAgICAqIGJpbmRpbmdfc3RhdGUgb3B0aW9uXG4gICAgKiAoaW50IG9wdGlvbiAqIGludCBvcHRpb24pIG9wdGlvbilcbiAgICBsaXN0XG5cbnR5cGUgJ3NpdGVfZ3JhcGggbGVtbWEgPSB7IGh5cDogJ3NpdGVfZ3JhcGg7IHJlZmluZW1lbnQ6ICdzaXRlX2dyYXBoIGxpc3QgfVxudHlwZSAnc2l0ZV9ncmFwaCBwb2x5X2NvbnN0cmFpbnRzX2xpc3QgPSAoc3RyaW5nICogJ3NpdGVfZ3JhcGggbGVtbWEgbGlzdCkgbGlzdFxuXG5sZXQgbGVtbWFfdG9fanNvbiBzaXRlX2dyYXBoX3RvX2pzb24ganNvbiA9XG4gIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6aHlwIH5sYWIyOnJlZmluZW1lbnQgc2l0ZV9ncmFwaF90b19qc29uXG4gICAgKEpzb25VdGlsLm9mX2xpc3Qgc2l0ZV9ncmFwaF90b19qc29uKVxuICAgIChqc29uLmh5cCwganNvbi5yZWZpbmVtZW50KVxuXG5sZXQgbGVtbWFfb2ZfanNvbiBzaXRlX2dyYXBoX29mX2pzb24ganNvbiA9XG4gIGxldCBhLCBiID1cbiAgICBKc29uVXRpbC50b19wYWlyIH5sYWIxOmh5cCB+bGFiMjpyZWZpbmVtZW50IH5lcnJvcl9tc2c6XCJsZW1tYVwiXG4gICAgICBzaXRlX2dyYXBoX29mX2pzb25cbiAgICAgIChKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJyZWZpbmVtZW50cyBsaXN0XCIgc2l0ZV9ncmFwaF9vZl9qc29uKVxuICAgICAganNvblxuICBpblxuICB7IGh5cCA9IGE7IHJlZmluZW1lbnQgPSBiIH1cblxubGV0IGdldF9oeXAgaCA9IGguaHlwXG5sZXQgZ2V0X3JlZmluZW1lbnQgciA9IHIucmVmaW5lbWVudFxubGV0IGZyZWUgPSBcIlwiXG5sZXQgd2lsZGNhcmQgPSBcIj9cIlxubGV0IGJvdW5kID0gXCIhX1wiXG5sZXQgYm9uZF9pZCA9IFwiYm9uZCBpZFwiXG5sZXQgYm91bmRfdG8gPSBcImJvdW5kIHRvXCJcbmxldCBiaW5kaW5nX3R5cGUgPSBcImJpbmRpbmcgdHlwZVwiXG5sZXQgcHJvcCA9IFwicHJvcGVydHkgc3RhdGVcIlxubGV0IGJpbmQgPSBcImJpbmRpbmcgc3RhdGVcIlxubGV0IGJpbmRpbmdfdHlwZV9iYWNrZW5kX3N5bWJvbCA9IFwiLlwiXG5sZXQgZnJlZV9iYWNrZW5kX3N5bWJvbCA9IFwiLlwiXG5sZXQgbWlzc2luZ19iaW5kaW5nX3NpdGVfYmFja2VuZF9zeW1ib2wgPSBcIlwiXG5sZXQgd2lsZGNhcmRfYmFja2VuZF9zeW1ib2wgPSBcIiNcIlxubGV0IGJvdW5kX3RvX3Vua25vd25fYmFja2VuZF9zeW1ib2wgPSBcIl9cIlxubGV0IGludGVybmFsX3N0YXRlX2ludHJvZHVjdGlvbl9iYWNrZW5kX3N5bWJvbCA9IFwiflwiXG5sZXQgaW50ZXJuYWxfc3RhdGVfZGVsaW1pdGVyX2JhY2tlbmRfc3ltYm9sID0gXCIsXCJcbmxldCBiaW5kaW5nX3N0YXRlX2RlbGltaXRlcl9iYWNrZW5kX3N5bWJvbCA9IFwiLFwiXG5sZXQgYmluZGluZ19zdGF0ZV9vcGVuaW5nX2JhY2tlbmRfc3ltYm9sID0gXCJbXCJcbmxldCBiaW5kaW5nX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF9zeW1ib2wgPSBcIl1cIlxubGV0IGludGVybmFsX3N0YXRlX29wZW5pbmdfYmFja2VuZF9zeW1ib2wgPSBcIntcIlxubGV0IGludGVybmFsX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF9zeW1ib2wgPSBcIn1cIlxubGV0IGNvdW50ZXJfc3RhdGVfb3BlbmluZ19iYWNrZW5kX3N5bWJvbCA9IFwie1wiXG5sZXQgY291bnRlcl9zdGF0ZV9jbG9zaW5nX2JhY2tlbmRfc3ltYm9sID0gXCJ9XCJcbmxldCBjb3VudGVyX3N0YXRlX3JhbmdlX2JhY2tlbmRfc3ltYm9sID0gXCIgLi4gXCJcbmxldCBvcGVuX2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wgPSBcIltcIlxubGV0IGNsb3NlX2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wgPSBcIl1cIlxubGV0IG9wZW5faW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCA9IFwiXVwiXG5sZXQgY2xvc2VfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCA9IFwiW1wiXG5sZXQgcGx1c19pbmZpbml0eV9zeW1ib2wgPSBcIitvb1wiXG5sZXQgbWludXNfaW5maW5pdHlfc3ltYm9sID0gXCItb29cIlxuXG5sZXQgc3RyaW5nX29mX2JpbmRpbmdfdHlwZSA/KGJpbmRpbmdfdHlwZV9zeW1ib2wgPSBcIi5cIikgfmFnZW50X25hbWUgfnNpdGVfbmFtZVxuICAgICgpID1cbiAgRm9ybWF0LnNwcmludGYgXCIlcyVzJXNcIiBzaXRlX25hbWUgYmluZGluZ190eXBlX3N5bWJvbCBhZ2VudF9uYW1lXG5cbmxldCBiaW5kaW5nX3N0YXRlX2xpZ2h0X29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChzLCBgTnVsbCkgXSB3aGVuIHMgPSBmcmVlIC0+IEZyZWVcbiAgfCBgQXNzb2MgWyAocywgYE51bGwpIF0gd2hlbiBzID0gd2lsZGNhcmQgLT4gV2lsZGNhcmRcbiAgfCBgQXNzb2MgWyAocywgYE51bGwpIF0gd2hlbiBzID0gYm91bmRfdG8gLT4gQm91bmRfdG9fdW5rbm93blxuICB8IGBBc3NvYyBbIChzLCBqKSBdIHdoZW4gcyA9IGJvbmRfaWQgLT5cbiAgICBsZXQgaSA9IEpzb25VdGlsLnRvX2ludCB+ZXJyb3JfbXNnOlwid3JvbmcgYmluZGluZyBpZFwiIGogaW5cbiAgICBsZXQgYm9uZF9pbmRleCA9IGkgaW5cbiAgICBCb3VuZF90byBib25kX2luZGV4XG4gIHwgYEFzc29jIFsgKHMsIGopIF0gd2hlbiBzID0gYmluZGluZ190eXBlIC0+XG4gICAgbGV0IGFnZW50X25hbWUsIHNpdGVfbmFtZSA9XG4gICAgICBKc29uVXRpbC50b19wYWlyIH5sYWIxOlwiYWdlbnRcIiB+bGFiMjpcInNpdGVcIiB+ZXJyb3JfbXNnOlwiYmluZGluZyB0eXBlXCJcbiAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwiYWdlbnQgbmFtZVwiKVxuICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJzaXRlIG5hbWVcIilcbiAgICAgICAgalxuICAgIGluXG4gICAgQmluZGluZ190eXBlIChhZ2VudF9uYW1lLCBzaXRlX25hbWUpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJ3cm9uZyBiaW5kaW5nIHN0YXRlXCIsIHgpKVxuXG5sZXQgYmluZGluZ19zdGF0ZV9saWdodF90b19qc29uID0gZnVuY3Rpb25cbiAgfCBGcmVlIC0+IGBBc3NvYyBbIGZyZWUsIGBOdWxsIF1cbiAgfCBXaWxkY2FyZCAtPiBgQXNzb2MgWyB3aWxkY2FyZCwgYE51bGwgXVxuICB8IEJvdW5kX3RvX3Vua25vd24gLT4gYEFzc29jIFsgYm91bmRfdG8sIGBOdWxsIF1cbiAgfCBCb3VuZF90byBib25kX2luZGV4IC0+IGBBc3NvYyBbIGJvbmRfaWQsIEpzb25VdGlsLm9mX2ludCBib25kX2luZGV4IF1cbiAgfCBCaW5kaW5nX3R5cGUgKGFnZW50X25hbWUsIHNpdGVfbmFtZSkgLT5cbiAgICBsZXQgaiA9XG4gICAgICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOlwiYWdlbnRcIiB+bGFiMjpcInNpdGVcIiBKc29uVXRpbC5vZl9zdHJpbmdcbiAgICAgICAgSnNvblV0aWwub2Zfc3RyaW5nIChhZ2VudF9uYW1lLCBzaXRlX25hbWUpXG4gICAgaW5cbiAgICBgQXNzb2MgWyBiaW5kaW5nX3R5cGUsIGogXVxuXG5sZXQgY291bnRlcl9zdGF0ZV9saWdodF9vZl9qc29uID1cbiAgSnNvblV0aWwudG9fcGFpciB+bGFiMTppbmYgfmxhYjI6c3VwIH5lcnJvcl9tc2c6XCJ3cm9uZyBjb3VudGVyIHN0YXRlXCJcbiAgICAoSnNvblV0aWwudG9fb3B0aW9uIChKc29uVXRpbC50b19pbnQgfmVycm9yX21zZzpjb3VudGVyKSlcbiAgICAoSnNvblV0aWwudG9fb3B0aW9uIChKc29uVXRpbC50b19pbnQgfmVycm9yX21zZzpjb3VudGVyKSlcblxubGV0IGNvdW50ZXJfc3RhdGVfbGlnaHRfdG9fanNvbiA9XG4gIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6aW5mIH5sYWIyOnN1cFxuICAgIChKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2ZfaW50KVxuICAgIChKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2ZfaW50KVxuXG5sZXQgaW50ZXJmYWNlX2xpZ2h0X3RvX2pzb24gaW50ZiA9XG4gIEpzb25VdGlsLm9mX21hcCB+bGFiX2tleTpzaXRlIH5sYWJfdmFsdWU6c3RhdGVzbGlzdFxuICAgIH5mb2xkOihmdW4gZiBhIHggLT5cbiAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbGlzdCAoaywgYSwgYiwgYykgLT4gZiBrIChhLCBiLCBjKSBsaXN0KSB4IGEpXG4gICAgKCpqc29uIC0+IGVsdCopXG4gICAgICAoZnVuIHNpdGUgLT4gSnNvblV0aWwub2Zfc3RyaW5nIHNpdGUpXG4gICAgKCpqc29uIC0+ICd2YWx1ZSopXG4gICAgKEpzb25VdGlsLm9mX3RyaXBsZSB+bGFiMTpwcm9wIH5sYWIyOmJpbmQgfmxhYjM6Y291bnRlclxuICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2Zfc3RyaW5nKVxuICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gYmluZGluZ19zdGF0ZV9saWdodF90b19qc29uKVxuICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gY291bnRlcl9zdGF0ZV9saWdodF90b19qc29uKSlcbiAgICBpbnRmXG5cbmxldCBpbnRlcmZhY2VfbGlnaHRfb2ZfanNvbiBqc29uID1cbiAgSnNvblV0aWwudG9fbWFwIH5sYWJfa2V5OnNpdGUgfmxhYl92YWx1ZTpzdGF0ZXNsaXN0IH5lcnJvcl9tc2c6aW50ZXJmYWNlXG4gICAgfmVtcHR5OltdXG4gICAgfmFkZDooZnVuIGsgKGEsIGIsIGMpIGxpc3QgLT4gKGssIGEsIGIsIGMpIDo6IGxpc3QpXG4gICAgKCpqc29uIC0+IGVsdCopXG4gICAgICAoZnVuIGpzb24gLT4gSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6c2l0ZSBqc29uKVxuICAgICgqanNvbiAtPiAndmFsdWUqKVxuICAgIChKc29uVXRpbC50b190cmlwbGUgfmxhYjE6cHJvcCB+bGFiMjpiaW5kIH5sYWIzOmNvdW50ZXJcbiAgICAgICB+ZXJyb3JfbXNnOlwid3JvbmcgYmluZGluZyBzdGF0ZVwiXG4gICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6cHJvcCkpXG4gICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiBiaW5kaW5nX3N0YXRlX2xpZ2h0X29mX2pzb24pXG4gICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiBjb3VudGVyX3N0YXRlX2xpZ2h0X29mX2pzb24pKVxuICAgIGpzb25cblxubGV0IGFnZW50X2dlbl9vZl9qc29uIGludGVyZmFjZV9vZl9qc29uID1cbiAgSnNvblV0aWwudG9fcGFpciB+bGFiMTphZ2VudCB+bGFiMjppbnRlcmZhY2UgfmVycm9yX21zZzpcImFnZW50XCJcbiAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJhZ2VudCBuYW1lXCIpXG4gICAgaW50ZXJmYWNlX29mX2pzb25cblxubGV0IHBvbHlfY29uc3RyYWludHNfbGlzdF9vZl9qc29uIHNpdGVfZ3JhcGhfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3RcbiAgICAoSnNvblV0aWwudG9fcGFpciB+ZXJyb3JfbXNnOlwiY29uc3RyYWludHMgbGlzdFwiIH5sYWIxOmRvbWFpbl9uYW1lXG4gICAgICAgfmxhYjI6cmVmaW5lbWVudHNfbGlzdFxuICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcImFic3RyYWN0IGRvbWFpblwiKVxuICAgICAgIChKc29uVXRpbC50b19saXN0IChsZW1tYV9vZl9qc29uIHNpdGVfZ3JhcGhfb2ZfanNvbikpKVxuXG5sZXQgbGVtbWFzX2xpc3Rfb2ZfanNvbl9nZW4gaW50ZXJmYWNlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIHJlZmluZW1lbnRfbGVtbWFzIGwgaW5cbiAgICAgICBwb2x5X2NvbnN0cmFpbnRzX2xpc3Rfb2ZfanNvblxuICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcInNpdGUgZ3JhcGhcIlxuICAgICAgICAgICAgKGFnZW50X2dlbl9vZl9qc29uIGludGVyZmFjZV9vZl9qc29uKSlcbiAgICAgICAgIGpzb25cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwicmVmaW5lbWVudCBsZW1tYXMgbGlzdFwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcInJlZmluZW1lbnQgbGVtbWFzIGxpc3RcIiwgeCkpXG5cbmxldCBsZW1tYXNfbGlzdF9vZl9qc29uIGpzb24gPVxuICBsZW1tYXNfbGlzdF9vZl9qc29uX2dlbiBpbnRlcmZhY2VfbGlnaHRfb2ZfanNvbiBqc29uXG5cbmxldCBhZ2VudF9nZW5fdG9fanNvbiBpbnRlcmZhY2VfdG9fanNvbiA9XG4gIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6YWdlbnQgfmxhYjI6aW50ZXJmYWNlIEpzb25VdGlsLm9mX3N0cmluZ1xuICAgIGludGVyZmFjZV90b19qc29uXG5cbmxldCBwb2x5X2NvbnN0cmFpbnRzX2xpc3RfdG9fanNvbiBzaXRlX2dyYXBoX3RvX2pzb24gY29uc3RyYWludHMgPVxuICBKc29uVXRpbC5vZl9saXN0XG4gICAgKEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6ZG9tYWluX25hbWUgfmxhYjI6cmVmaW5lbWVudHNfbGlzdFxuICAgICAgIEpzb25VdGlsLm9mX3N0cmluZ1xuICAgICAgIChKc29uVXRpbC5vZl9saXN0IChsZW1tYV90b19qc29uIHNpdGVfZ3JhcGhfdG9fanNvbikpKVxuICAgIGNvbnN0cmFpbnRzXG5cbmxldCBsZW1tYXNfbGlzdF90b19qc29uX2dlbiBpbnRlcmZhY2VfdG9fanNvbiBjb25zdHJhaW50cyA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggcmVmaW5lbWVudF9sZW1tYXMsXG4gICAgICAgIHBvbHlfY29uc3RyYWludHNfbGlzdF90b19qc29uXG4gICAgICAgICAgKEpzb25VdGlsLm9mX2xpc3QgKGFnZW50X2dlbl90b19qc29uIGludGVyZmFjZV90b19qc29uKSlcbiAgICAgICAgICBjb25zdHJhaW50cyApO1xuICAgIF1cblxubGV0IGxlbW1hc19saXN0X3RvX2pzb24gY29uc3RyYWludHMgPVxuICBsZW1tYXNfbGlzdF90b19qc29uX2dlbiBpbnRlcmZhY2VfbGlnaHRfdG9fanNvbiBjb25zdHJhaW50c1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IHJhd192ZXJzaW9uX3N0cmluZyA9IFwiJEZvcm1hdDolRCRcIlxuXG5sZXQgZXh0cmFjdF90YWdfcmUgPVxuICBSZS5jb21waWxlXG4gICAgKFJlLnNlcSBbIFJlLnN0ciBcInRhZzogXCI7IFJlLmdyb3VwIChSZS5yZXAgKFJlLmNvbXBsIFsgUmUuY2hhciAnLCcgXSkpIF0pXG5cbmxldCB2ZXJzaW9uX3N0cmluZyA9XG4gIG1hdGNoIFJlLmV4ZWNfb3B0IGV4dHJhY3RfdGFnX3JlIHJhd192ZXJzaW9uX3N0cmluZyB3aXRoXG4gIHwgU29tZSBnciAtPiBSZS5Hcm91cC5nZXQgZ3IgMVxuICB8IE5vbmUgLT4gR2l0X3ZlcnNpb24udFxuXG5sZXQgdmVyc2lvbl9tc2cgPSBcIkthcHBhIFNpbXVsYXRvcjogXCIgXiB2ZXJzaW9uX3N0cmluZ1xubGV0IHZlcnNpb25fa2FzYV9mdWxsX25hbWUgPSBcIkthcHBhIFN0YXRpYyBBbmFseXplciAoXCIgXiB2ZXJzaW9uX3N0cmluZyBeIFwiKVwiXG5sZXQgdmVyc2lvbl9rYWRlX2Z1bGxfbmFtZSA9IFwiS2FERSAoXCIgXiB2ZXJzaW9uX3N0cmluZyBeIFwiKVwiXG5sZXQgdGtfaXNfaW5pdGlhbGl6ZWQgPSByZWYgZmFsc2VcbiIsIigqIFNpbWlsYXIgdG8gT0NhbWwncyBzdGFuZGFyZCBBcmcgbW9kdWxlIGJ1dCB3aXRoIHNvbWUgaW1wcm92ZW1lbnRzOlxuICAgLSBvcHRpb25zIGFyZSBjbGFzc2lmaWVkIHdpdGggcmVzcGVjdCB0byBjYXRlZ29yaWVzXG4gICAtIG5lb3BoeXRlIC8gZXhwZXJ0IG1vZGVzXG4gICAtIGhpZGRlbiBvcHRpb25zXG5cbiAgIE5vdGUgdGhhdCB0aGUgc3BlYyB0eXBlIGlzIHJlYWxseSBkaWZmZXJlbnQuXG5cbiAgIENvcHlyaWdodCAoQykgQW50b2luZSBNaW5lJyAyMDA2XG4qKVxuXG5sZXQgZXhwZXJ0X21vZGUgPSByZWYgZmFsc2UgKCogc2hvd3MgZXhwZXJ0IG9wdGlvbnMgKilcbmxldCBkZXZfbW9kZSA9IHJlZiBmYWxzZSAoKiBhY2NlcHQgX0FMTF8gb3B0aW9ucyAqKVxuXG4oKiBUeXBlcyAqKVxuKCogKioqKiogKilcblxudHlwZSBrZXkgPSBzdHJpbmcgKCogY29tbWFuZC1saW5lIGFyZ3VtZW50ICopXG50eXBlIG1zZyA9IHN0cmluZyAoKiBoZWxwIG1lc3NhZ2UgKilcblxuKCogdHlwZSBvZiBvcHRpb24gKilcbnR5cGUgbGV2ZWwgPVxuICB8IE5vcm1hbCAoKiBhbHdheXMgc2hvd24gJiBhY2NlcHRlZCAqKVxuICB8IEV4cGVydCAoKiBzaG93biBpbiBleHBlcnQgb3IgZGV2ZWxvcHBlciBtb2RlLCBhbHdheXMgYWNjZXB0ZWQgKilcbiAgfCBEZXZlbG9wcGVyICgqIG9ubHkgc2hvd24gJiBhY2NlcHRlZCBpbiBkZXZlbG9wcGVyIG1vZGUgKilcbiAgfCBIaWRkZW4gKCogbmV2ZXIgc2hvd24gKilcblxubW9kdWxlIFN0cmluZ0ludCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgKiBpbnQgKiBsZXZlbCBvcHRpb25cblxuICBsZXQgY29tcGFyZSAoYSwgYiwgXykgKGMsIGQsIF8pID1cbiAgICBsZXQgY21wID0gY29tcGFyZSBiIGQgaW5cbiAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgIGNvbXBhcmUgYSBjXG4gICAgZWxzZVxuICAgICAgY21wXG5cbiAgbGV0IHByaW50IGZtdCAoYSwgYiwgXykgPSBGb3JtYXQuZnByaW50ZiBmbXQgXCIlczolaVwiIGEgYlxuZW5kXG5cbm1vZHVsZSBTdHJpbmdJbnRTZXRNYXAgPSBTZXRNYXAuTWFrZSAoU3RyaW5nSW50KVxubW9kdWxlIFN0cmluZ0ludE1hcCA9IFN0cmluZ0ludFNldE1hcC5NYXBcbm1vZHVsZSBTdHJpbmdJbnRTZXQgPSBTdHJpbmdJbnRTZXRNYXAuU2V0XG5tb2R1bGUgU3RyaW5nU2V0TWFwID0gTW9kcy5TdHJpbmdTZXRNYXBcbm1vZHVsZSBTdHJpbmdTZXQgPSBTdHJpbmdTZXRNYXAuU2V0XG5tb2R1bGUgU3RyaW5nTWFwID0gU3RyaW5nU2V0TWFwLk1hcFxuXG5sZXQgbWluX2xldmVsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IE5vcm1hbCwgXyB8IF8sIE5vcm1hbCAtPiBOb3JtYWxcbiAgfCBFeHBlcnQsIF8gfCBfLCBFeHBlcnQgLT4gRXhwZXJ0XG4gIHwgRGV2ZWxvcHBlciwgXyB8IF8sIERldmVsb3BwZXIgLT4gRGV2ZWxvcHBlclxuICB8IEhpZGRlbiwgSGlkZGVuIC0+IEhpZGRlblxuXG5sZXQgbWF4X2xldmVsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IEhpZGRlbiwgXyB8IF8sIEhpZGRlbiAtPiBIaWRkZW5cbiAgfCBEZXZlbG9wcGVyLCBfIHwgXywgRGV2ZWxvcHBlciAtPiBEZXZlbG9wcGVyXG4gIHwgRXhwZXJ0LCBfIHwgXywgRXhwZXJ0IC0+IEV4cGVydFxuICB8IE5vcm1hbCwgTm9ybWFsIC0+IE5vcm1hbFxuXG5sZXQgbWF4X2xldmVsX29wdCBhIGIgPVxuICBtYXRjaCBiIHdpdGhcbiAgfCBOb25lIC0+IGFcbiAgfCBTb21lIGIgLT4gbWF4X2xldmVsIGEgYlxuXG50eXBlIHBvc2l0aW9uID0gaW50XG50eXBlIGNhdGVnb3J5ID0gc3RyaW5nICogcG9zaXRpb24gKiBsZXZlbCBvcHRpb25cblxudHlwZSBzcGVjID1cbiAgfCBWb2lkICgqIFRvIHNraXAgYSBsaW5lICopXG4gIHwgQm9vbCBvZiBib29sIHJlZiAoKiBTZXRzIGEgYm9vbGVhbiB2YWx1ZSAqKVxuICB8IEludCBvZiBpbnQgcmVmICgqIFNldHMgYW4gaW50ZWdlciB2YWx1ZSAqKVxuICB8IEludF9vcHQgb2YgaW50IG9wdGlvbiByZWYgKCogU2V0cyBhbiBvcHRpb25hbCBpbnRlZ2VyIHZhbHVlICopXG4gIHwgU3RyaW5nIG9mIHN0cmluZyByZWYgKCogU2V0cyBhIHN0cmluZyB2YWx1ZSAqKVxuICB8IFN0cmluZ19vcHQgb2Ygc3RyaW5nIG9wdGlvbiByZWYgKCogU2V0cyBhbiBvcHRpb25hbCBzdHJpbmcgdmFsdWUgKilcbiAgfCBTdHJpbmdfbGlzdCBvZiBzdHJpbmcgbGlzdCByZWYgKCogU2V0cyBhIGxpc3Qgb2Ygc3RyaW5ncyAqKVxuICB8IFN0cmluZ05icl9saXN0IG9mXG4gICAgICAoc3RyaW5nICogc3RyaW5nKSBsaXN0IHJlZiAoKiBTZXRzIGEgbGlzdCBvZiBwYWlycyBvZiBzdHJpbmdzICopXG4gIHwgRmxvYXQgb2YgZmxvYXQgcmVmICgqIFNldHMgYSBmbG9hdCB2YWx1ZSAqKVxuICB8IEZsb2F0X29wdCBvZiBmbG9hdCBvcHRpb24gcmVmICgqIFNldHMgYW4gb3B0aW9uYWwgIGZsb2F0IHZhbHVlICopXG4gICgqIG9uZSBvciBzZXZlcmFsIG9wdGlvbnMgYW1vbmcgYSBsaXN0ICopXG4gIHwgQ2hvaWNlIG9mIChrZXkgKiBtc2cpIGxpc3QgKiBrZXkgbGlzdCAqIGtleSByZWZcbiAgfCBDaG9pY2VfbGlzdCBvZiAoa2V5ICogbXNnKSBsaXN0ICoga2V5IGxpc3QgcmVmXG4gICgqIG1ldGEtb3B0aW9ucyB0byBzZXQgc2V2ZXJhbCBvcHRpb25zIGF0IG9uY2U6XG4gICAgIC0gMXN0IG9wdGlvbiBsaXN0IGlzIGFwcGVuZGVkIGFzLWlzIHdoZW4gdGhlIG9wdGlvbiBpcyB1c2VkXG4gICAgIC0gd2hlbiAyLXN0IGxpc3QgaXMgbm90IGVtcHR5LCB0aGUgbWV0YSBvcHRpb24gdGFrZXMgYW4gYXJndW1lbnQgdGhhdFxuICAgICBpcyBwYXNzZWQgdG8gZWFjaCBvcHRpb24gaW4gdGhlIGxpc3RcbiAgICAgLSB0aGUga2V5cyBpbiBib3RoIGxpc3RzIG11c3QgYXBwZWFyIGFzIHJlZ3VsYXIgb3B0aW9ucyBhcyB3ZWxsIVxuICAqKVxuICB8IE11bHRpIG9mIGtleSBsaXN0ICoga2V5IGxpc3RcbiAgICAoKiBtZXRhLW9wdGlvbnMsIHRha2UgYSBsaXN0IG9mIChrLGV4dCk6a2V5KnN0cmluZyBhbmQgZ2l2ZSB0byB0aGUgb3B0aW9uIGsgdGhlIHBhcmFtZXRlciBzXmV4dCAqKVxuICB8IE11bHRpRXh0IG9mIChrZXkgKiBzdHJpbmcpIGxpc3RcblxudHlwZSB0ID0gKGtleSAqIHNwZWMgKiBtc2cgKiAoY2F0ZWdvcnkgKiBwb3NpdGlvbikgbGlzdCAqIGxldmVsKSBsaXN0XG5cbigqIFV0aWxpdGllcyAqKVxuKCogKioqKioqKioqICopXG5cbmxldCBzaG93X2xldmVsIChsdmwgOiBsZXZlbCkgOiBib29sID1cbiAgbWF0Y2ggbHZsIHdpdGhcbiAgfCBOb3JtYWwgLT4gdHJ1ZVxuICB8IEV4cGVydCAtPiAhZXhwZXJ0X21vZGVcbiAgfCBEZXZlbG9wcGVyIC0+ICFkZXZfbW9kZSAmJiAhZXhwZXJ0X21vZGVcbiAgfCBIaWRkZW4gLT4gZmFsc2VcblxubGV0IHNob3dfbGV2ZWxfb3B0IChsdmxfb3B0IDogbGV2ZWwgb3B0aW9uKSA6IGJvb2wgPVxuICBtYXRjaCBsdmxfb3B0IHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIGx2bCAtPiBzaG93X2xldmVsIGx2bFxuXG5sZXQgYWNjZXB0X2xldmVsX2Rpc3BsYXkgKGx2bCA6IGxldmVsKSA6IGJvb2wgPVxuICBtYXRjaCBsdmwgd2l0aFxuICB8IE5vcm1hbCB8IEV4cGVydCAtPiB0cnVlXG4gIHwgRGV2ZWxvcHBlciAtPiAhZGV2X21vZGVcbiAgfCBIaWRkZW4gLT4gZmFsc2VcblxubGV0IGFjY2VwdF9sZXZlbF91c2UgKGx2bCA6IGxldmVsKSA6IGJvb2wgPVxuICBtYXRjaCBsdmwgd2l0aFxuICB8IE5vcm1hbCB8IEV4cGVydCB8IEhpZGRlbiAtPiB0cnVlXG4gIHwgRGV2ZWxvcHBlciAtPiAhZGV2X21vZGVcblxubGV0IGlza2V5IChrIDoga2V5KSA9IFN0cmluZy5sZW5ndGggayA+IDIgJiYgay5bMF0gPSAnLScgJiYgay5bMV0gPSAnLSdcblxuKCogLS1YWFggPT4gLS1uby1YWFggKilcbmxldCBub2tleSAoayA6IGtleSkgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGsgPiAyICYmIGsuWzBdID0gJy0nICYmIGsuWzFdID0gJy0nIHRoZW5cbiAgICBcIi0tbm8tXCIgXiBTdHJpbmcuc3ViIGsgMiAoU3RyaW5nLmxlbmd0aCBrIC0gMilcbiAgZWxzZSBpZiBTdHJpbmcubGVuZ3RoIGsgPiAxICYmIGsuWzBdID0gJy0nIHRoZW5cbiAgICBcIi1uby1cIiBeIFN0cmluZy5zdWIgayAxIChTdHJpbmcubGVuZ3RoIGsgLSAxKVxuICBlbHNlXG4gICAgZmFpbHdpdGggKGsgXiBcIiBvcHRpb24gKG5vKSBkb2VzIG5vdCBiZWdpbiB3aXRoIC0tIG5vciAtXCIpXG5cbigqIC0tWFhYID0+IC0tKG5vLSlYWFggKilcbmxldCBhbHRrZXkgKGsgOiBrZXkpID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBrID4gMiAmJiBrLlswXSA9ICctJyAmJiBrLlsxXSA9ICctJyB0aGVuXG4gICAgXCItLShuby0pXCIgXiBTdHJpbmcuc3ViIGsgMiAoU3RyaW5nLmxlbmd0aCBrIC0gMilcbiAgZWxzZSBpZiBTdHJpbmcubGVuZ3RoIGsgPiAxICYmIGsuWzBdID0gJy0nIHRoZW5cbiAgICBcIi0obm8tKVwiIF4gU3RyaW5nLnN1YiBrIDEgKFN0cmluZy5sZW5ndGggayAtIDEpXG4gIGVsc2VcbiAgICBmYWlsd2l0aCAoayBeIFwiIG9wdGlvbiAoYWx0KSBkb2VzIG5vdCBiZWdpbiB3aXRoIC0tIG5vdCAtIFwiKVxuXG4oKiBjdXRzIGEgc3RyaW5nIGludG8gc3BhY2Utc2VwYXJhdGVkIHN1Yi1zdHJpbmdzICopXG5sZXQgY3V0X2xpc3QgKHMgOiBzdHJpbmcpIDogc3RyaW5nIGxpc3QgPVxuICBsZXQgcmVjIGRvaXQgYWNjdW0gcG9zID1cbiAgICB0cnlcbiAgICAgIGxldCBpID0gU3RyaW5nLmluZGV4X2Zyb20gcyBwb3MgJyAnIGluXG4gICAgICBpZiBpID0gcG9zIHRoZW5cbiAgICAgICAgZG9pdCBhY2N1bSAoaSArIDEpXG4gICAgICBlbHNlXG4gICAgICAgIGRvaXQgKFN0cmluZy5zdWIgcyBwb3MgKGkgLSBwb3MpIDo6IGFjY3VtKSAoaSArIDEpXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGlmIHBvcyA8IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgIFN0cmluZy5zdWIgcyBwb3MgKFN0cmluZy5sZW5ndGggcyAtIHBvcykgOjogYWNjdW1cbiAgICAgIGVsc2VcbiAgICAgICAgYWNjdW1cbiAgaW5cbiAgTGlzdC5yZXYgKGRvaXQgW10gMClcblxuKCogb3JkZXIgYnkgY2F0ZWdvcnkgKilcbmxldCBwIChfLCBfLCBfLCBsLCBfKSAoXywgXywgXywgbCcsIF8pID1cbiAgbWF0Y2ggbCwgbCcgd2l0aFxuICB8IFsgKF8sIGkpIF0sIFsgKF8sIGknKSBdIC0+IGNvbXBhcmUgaSBpJ1xuICB8IChbXSB8IF8gOjogXyA6OiBfKSwgXyB8IF8sIChbXSB8IF8gOjogXyA6OiBfKSAtPiBhc3NlcnQgZmFsc2VcblxubGV0IG9yZGVyIChhIDogdCkgPVxuICBsZXQgb3JkZXJlZCA9IHJlZiBTdHJpbmdJbnRNYXAuZW1wdHkgaW5cbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAoYSwgYiwgYywgY2F0LCBsdmwpIC0+XG4gICAgICBpZiBhY2NlcHRfbGV2ZWxfdXNlIGx2bCB0aGVuXG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gKGNhdCwgaSkgLT5cbiAgICAgICAgICAgIGxldCBhc3NvLCBvbGRfbHZsID1cbiAgICAgICAgICAgICAgU3RyaW5nSW50TWFwLmZpbmRfZGVmYXVsdCAoW10sIEhpZGRlbikgY2F0ICFvcmRlcmVkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgb3JkZXJlZCA6PVxuICAgICAgICAgICAgICBTdHJpbmdJbnRNYXAuYWRkIGNhdFxuICAgICAgICAgICAgICAgICgoYSwgYiwgYywgWyBjYXQsIGkgXSwgbHZsKSA6OiBhc3NvLCBtaW5fbGV2ZWwgbHZsIG9sZF9sdmwpXG4gICAgICAgICAgICAgICAgIW9yZGVyZWQpXG4gICAgICAgICAgY2F0KVxuICAgIGE7XG4gIG9yZGVyZWQgOj0gU3RyaW5nSW50TWFwLm1hcCAoZnVuIChhLCBiKSAtPiBMaXN0LnNvcnQgcCBhLCBiKSAhb3JkZXJlZDtcbiAgIW9yZGVyZWRcblxuKCogc2FuaXR5IGNoZWNraW5nICopXG5sZXQgY2hlY2sgKGEgOiB0KSA9XG4gICgqIGNoZWNrIGR1cGxpY2F0ZXMgJiBjb21wdXRlIG9wdGlvbiBsaXN0ICopXG4gIGxldCBvcHRzID0gcmVmIFN0cmluZ1NldC5lbXB0eSBpblxuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChrZXksIGIsIF8sIF8sIF8pIC0+XG4gICAgICBpZiBiID0gVm9pZCB0aGVuXG4gICAgICAgICgpXG4gICAgICBlbHNlIGlmIFN0cmluZ1NldC5tZW0ga2V5ICFvcHRzIHx8IFN0cmluZ1NldC5tZW0gKG5va2V5IGtleSkgIW9wdHMgdGhlblxuICAgICAgICBmYWlsd2l0aCAoXCJEdXBsaWNhdGUgb3B0aW9uIFwiIF4ga2V5KTtcbiAgICAgIG9wdHMgOj0gU3RyaW5nU2V0LmFkZCBrZXkgIW9wdHM7XG4gICAgICBvcHRzIDo9IFN0cmluZ1NldC5hZGQgKG5va2V5IGtleSkgIW9wdHMpXG4gICAgYTtcbiAgKCogY2hlY2sgc3ViLW9wdGlvbnMgaW4gTXVsaS1vcHRpb25zICopXG4gIExpc3QuaXRlclxuICAgIChmdW4gKGtleSwgdCwgXywgXywgXykgLT5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBNdWx0aSAoYSwgYikgLT5cbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIExpc3QuaXRlciAoZnVuIHMgLT5cbiAgICAgICAgICAgICAgaWYgaXNrZXkgcyAmJiBub3QgKFN0cmluZ1NldC5tZW0gcyAhb3B0cykgdGhlblxuICAgICAgICAgICAgICAgIGZhaWx3aXRoIChcIlVua25vd24gb3B0aW9uIFwiIF4gcyBeIFwiIGluIG11bHRpLW9wdGlvbiBcIiBeIGtleSkpXG4gICAgICAgIGluXG4gICAgICAgIGYgYTtcbiAgICAgICAgZiBiXG4gICAgICB8IFZvaWQgfCBJbnQgXyB8IEZsb2F0IF8gfCBDaG9pY2UgXyB8IEJvb2wgXyB8IEludF9vcHQgXyB8IFN0cmluZyBfXG4gICAgICB8IFN0cmluZ05icl9saXN0IF8gfCBTdHJpbmdfb3B0IF8gfCBTdHJpbmdfbGlzdCBfIHwgRmxvYXRfb3B0IF9cbiAgICAgIHwgQ2hvaWNlX2xpc3QgKF8sIF8pXG4gICAgICB8IE11bHRpRXh0IF8gLT5cbiAgICAgICAgKCkpXG4gICAgYVxuXG4oKiBDb21tYW5kLWxpbmUgaW50ZXJmYWNlICopXG4oKiAqKioqKioqKioqKioqKioqKioqKioqICopXG5cbigqIHByaW50cyBhIHN0cmluZyB3aXRoIGJyZWFrcyBpbnN0ZWFkIG9mIHNwYWNlICopXG5sZXQgcHJpbnRfbXNnIGYgKHMgOiBzdHJpbmcpID1cbiAgUHAubGlzdCBQcC5zcGFjZSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKGN1dF9saXN0IHMpXG5cbigqIGRvY3VtZW50IHRoZSBvcHRpb25zIG9uIHRoZSBzdGFuZGFyZCBvdXRwdXQhICopXG5sZXQgcHJpbnRfb3B0aW9uIHZlcmJvc2UgZiAoa2V5LCBzcGVjLCBtc2csIF9jYXQsIF9sdmwpID1cbiAgbGV0IGtleTIgPSBhbHRrZXkga2V5IGluXG4gIChtYXRjaCBzcGVjIHdpdGhcbiAgfCBCb29sIHIgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyAgICAoZGVmYXVsdDogJXMpQC5cIiBrZXkyXG4gICAgICAoaWYgIXIgdGhlblxuICAgICAgICAgXCJlbmFibGVkXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcImRpc2FibGVkXCIpXG4gIHwgVm9pZCAtPiAoKVxuICB8IEludCByIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxpbnQ+ICAgKGRlZmF1bHQ6ICVpKUAuXCIga2V5ICFyXG4gIHwgSW50X29wdCByIC0+XG4gICAgKG1hdGNoICFyIHdpdGhcbiAgICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPGludD4gICAoZGVmYXVsdDogZGlzYWJsZWQpQC5cIiBrZXkyXG4gICAgfCBTb21lIGkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPGludD4gICAoZGVmYXVsdDogJWkpQC5cIiBrZXkyIGkpXG4gIHwgU3RyaW5nIHIgLT5cbiAgICAobWF0Y2ggIXIgd2l0aFxuICAgIHwgXCJcIiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZT4gICAoZGVmYXVsdDogZGlzYWJsZWQpQC5cIiBrZXlcbiAgICB8IHMgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPG5hbWU+ICAgKGRlZmF1bHQ6ICVzKUAuXCIga2V5IHMpXG4gIHwgU3RyaW5nX29wdCByIC0+XG4gICAgKG1hdGNoICFyIHdpdGhcbiAgICB8IE5vbmUgfCBTb21lIFwiXCIgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxuYW1lPiAgIChkZWZhdWx0OiBkaXNhYmxlZClALlwiIGtleTJcbiAgICB8IFNvbWUgcyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZT4gICAoZGVmYXVsdCAlcylALlwiIGtleTIgcylcbiAgfCBTdHJpbmdfbGlzdCByIC0+XG4gICAgKG1hdGNoICFyIHdpdGhcbiAgICB8IFtdIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxuYW1lcz4gLi4uICAgKGRlZmF1bHQ6IGRpc2FibGVkKUAuXCIga2V5MlxuICAgIHwgbCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPG5hbWVzPiAuLi4gICAoZGVmYXVsdCAlYSlALlwiIGtleTJcbiAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgRm9ybWF0LnBwX3ByaW50X3N0cmluZylcbiAgICAgICAgbClcbiAgfCBTdHJpbmdOYnJfbGlzdCByIC0+XG4gICAgKG1hdGNoICFyIHdpdGhcbiAgICB8IFtdIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxuYW1lcz4gPC4uLiAgIChkZWZhdWx0OiBkaXNhYmxlZClALlwiIGtleTJcbiAgICB8IGwgLT5cbiAgICAgIGxldCByZWMgYXV4IGxpc3QgPVxuICAgICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgfCAoaDEsIGgyKSA6OiB0YWlsIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxuYW1lcz4gPHZhbHVlPiAoZGVmYXVsdCAlcyAlcylcIiBrZXkyIGgxIGgyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggdGFpbFxuICAgICAgICB8IFtdIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJALlwiXG4gICAgICBpblxuICAgICAgYXV4IGwpXG4gIHwgRmxvYXQgciAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8ZmxvYXQ+ICAgKGRlZmF1bHQgJWYpQC5cIiBrZXkgIXJcbiAgfCBGbG9hdF9vcHQgciAtPlxuICAgIChtYXRjaCAhciB3aXRoXG4gICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxmbG9hdD4gICAoZGVmYXVsdDogZGlzYWJsZWQpQC5cIiBrZXkyXG4gICAgfCBTb21lIHYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPGZsb2F0PiAgIChkZWZhdWx0OiAlZilALlwiIGtleTIgdilcbiAgfCBDaG9pY2UgKGwsIF8sIHIpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgQFslYUBdIEAgIChkZWZhdWx0OiAlcylALlwiIGtleVxuICAgICAgKFBwLmxpc3RcbiAgICAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiIHxAIFwiKVxuICAgICAgICAgKGZ1biBmIChrZXksIF9tc2cpIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBrZXkpKVxuICAgICAgbCAhclxuICB8IENob2ljZV9saXN0IChsLCByKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIEBbJWFAXUAuXCIga2V5MlxuICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIChrZXksIF9tc2cpIC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbJXMlc11cIiBrZXlcbiAgICAgICAgICAgICAoaWYgTGlzdC5tZW0ga2V5ICFyIHRoZW5cbiAgICAgICAgICAgICAgICBcIiAoZGVmYXVsdClcIlxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgXCJcIikpKVxuICAgICAgbFxuICB8IE11bHRpIChfLCBbXSkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXNALlwiIGtleVxuICB8IE11bHRpIF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPHZhbHVlPkAuXCIga2V5XG4gIHwgTXVsdGlFeHQgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8dmFsdWU+QC5cIiBrZXkpO1xuXG4gICgqIHNob3dzIGRlc2NyaXB0aW9uIGlmIGluIHZlcmJvc2UgbW9kZSAqKVxuICBpZiB2ZXJib3NlICYmIG1zZyA8PiBcIlwiIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIiAgICAgIEBbJWFAXUAuXCIgcHJpbnRfbXNnIG1zZ1xuXG5sZXQgcHJpbnRfaGVscCAoaGVhZGVyIDogYm9vbCkgKHZlcmJvc2UgOiBib29sKSBmIChhIDogdCkgPVxuICBsZXQgbmIgPSByZWYgMCBpblxuXG4gICgqIGdlbmVyYWwgb3B0aW9ucyAqKVxuICBpZiBoZWFkZXIgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiQC5HZW5lcmFsIG9wdGlvbnNALlwiO1xuICBGb3JtYXQuZnByaW50ZiBmIFwiICAtLWhlbHAgICAgICAgICAgICBWZXJib3NlIGhlbHBALlwiO1xuICBpbmNyIG5iO1xuICBGb3JtYXQuZnByaW50ZiBmIFwiICAgLWggICAgICAgICAgICAgICBTaG9ydCBoZWxwQC5cIjtcbiAgaW5jciBuYjtcbiAgRm9ybWF0LmZwcmludGYgZiBcIiAgLS12ZXJzaW9uICAgICAgICAgU2hvdyB2ZXJzaW9uIG51bWJlckAuXCI7XG4gIGluY3IgbmI7XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIgIC0tZ3VpICAgICAgICAgICAgIEdVSSB0byBzZWxlY3RALlwiO1xuICBpbmNyIG5iO1xuICBGb3JtYXQuZnByaW50ZiBmIFwiICAtLShuby0pZXhwZXJ0ICAgICBFeHBlcnQgbW9kZSAobW9yZSBvcHRpb25zKUAuXCI7XG4gIGluY3IgbmI7XG4gIGlmIHZlcmJvc2UgJiYgaGVhZGVyIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIkAuXCI7XG5cbiAgKCogZHVtcCAqKVxuICBTdHJpbmdJbnRNYXAuaXRlclxuICAgIChmdW4gKGNhdCwgXywgbHZsX29wdCkgKGwsIGx2bCkgLT5cbiAgICAgIGlmIHNob3dfbGV2ZWxfb3B0IGx2bF9vcHQgJiYgc2hvd19sZXZlbCBsdmwgdGhlbiAoXG4gICAgICAgIGlmIGhlYWRlciB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCIlc0AuXCIgY2F0O1xuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuICgoXywgXywgXywgXywgbHZsKSBhcyB4KSAtPlxuICAgICAgICAgICAgaWYgc2hvd19sZXZlbCBsdmwgdGhlbiAoXG4gICAgICAgICAgICAgIGluY3IgbmI7XG4gICAgICAgICAgICAgIHByaW50X29wdGlvbiB2ZXJib3NlIGYgeFxuICAgICAgICAgICAgKSlcbiAgICAgICAgICBsO1xuICAgICAgICBpZiBoZWFkZXIgJiYgdmVyYm9zZSB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCJALlwiXG4gICAgICApKVxuICAgIChvcmRlciBhKTtcblxuICBGb3JtYXQuZnByaW50ZiBmIFwiKCVpIG9wdGlvbnMpQC5cIiAhbmJcblxuKCogcGFyc2UgdGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMsIGdpdmVuIGFzIGEgbGlzdCBvZiBzdHJpbmdzLFxuICAgcmV0dXJucyB0aGUgbGlzdCBvZiBub24tb3B0aW9ucyAoZmlsZW5hbWVzKSBpbiByZXZlcnNlIG9yZGVyKVxuKilcbmxldCBwYXJzZV9saXN0IH53aXRoX3RrID90aXRsZSAoYSA6IHQpIChsIDogc3RyaW5nIGxpc3QpIDogc3RyaW5nIGxpc3QgPVxuICBsZXQgbG9uZ19oZWxwID0gcmVmIGZhbHNlXG4gIGFuZCBzaG9ydF9oZWxwID0gcmVmIGZhbHNlXG4gIGFuZCBzaG93X3ZlcnNpb24gPSByZWYgZmFsc2UgaW5cblxuICBsZXQgcmVjIGRvaXQgYWNjdW0gPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdW1cbiAgICB8IG9wdCA6OiByZW0gLT5cbiAgICAgICgqIC0gbWVhbnMgbm8gbW9yZSBvcHRpb25zOiB0aGUgcmVzdCBhcmUgZmlsZW5hbWVzICopXG4gICAgICBpZiBvcHQgPSBcIi1cIiB0aGVuXG4gICAgICAgIExpc3QucmV2X2FwcGVuZCByZW0gYWNjdW1cbiAgICAgICgqIGhlbHAgb3B0aW9ucyAqKVxuICAgICAgZWxzZSBpZiBvcHQgPSBcIi1oZWxwXCIgfHwgb3B0ID0gXCItLWhlbHBcIiB0aGVuIChcbiAgICAgICAgbG9uZ19oZWxwIDo9IHRydWU7XG4gICAgICAgIGRvaXQgYWNjdW0gcmVtXG4gICAgICApIGVsc2UgaWYgb3B0ID0gXCItaFwiIHRoZW4gKFxuICAgICAgICAoKiBzaG9ydGVyIGxpc3QgKilcbiAgICAgICAgc2hvcnRfaGVscCA6PSB0cnVlO1xuICAgICAgICBkb2l0IGFjY3VtIHJlbSAoKiB2ZXJzaW9uIG51bWJlciAqKVxuICAgICAgKSBlbHNlIGlmIG9wdCA9IFwiLS12ZXJzaW9uXCIgdGhlbiAoXG4gICAgICAgIHNob3dfdmVyc2lvbiA6PSB0cnVlO1xuICAgICAgICBkb2l0IGFjY3VtIHJlbSAoKiBleHBlcnQgKilcbiAgICAgICkgZWxzZSBpZiBvcHQgPSBcIi0tZXhwZXJ0XCIgdGhlbiAoXG4gICAgICAgIGV4cGVydF9tb2RlIDo9IHRydWU7XG4gICAgICAgIGRvaXQgYWNjdW0gcmVtXG4gICAgICApIGVsc2UgaWYgb3B0ID0gXCItLW5vLWV4cGVydFwiIHRoZW4gKFxuICAgICAgICBleHBlcnRfbW9kZSA6PSBmYWxzZTtcbiAgICAgICAgZG9pdCBhY2N1bSByZW0gKCogcmVndWxhciBvcHRpb24sIHN0YXJ0aW5nIHdpdGggXCItXCIgKilcbiAgICAgICkgZWxzZSBpZiBTdHJpbmcubGVuZ3RoIG9wdCA+IDEgJiYgb3B0LlswXSA9ICctJyB0aGVuIChcbiAgICAgICAgbGV0ICgoa2V5LCBzcGVjLCBfLCBfLCBfKSBhcyBhYSkgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgTGlzdC5maW5kXG4gICAgICAgICAgICAgIChmdW4gKGtleSwgX3NwZWMsIF9tc2csIF9jYXQsIGx2bCkgLT5cbiAgICAgICAgICAgICAgICBhY2NlcHRfbGV2ZWxfdXNlIGx2bCAmJiAob3B0ID0ga2V5IHx8IG9wdCA9IG5va2V5IGtleSkpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgRm9ybWF0LnByaW50ZlxuICAgICAgICAgICAgICBcIkhlcmUgaXMgdGhlIGxpc3Qgb2YgcmVjb2duaXplZCBvcHRpb25zQC4lYUAuVW5yZWNvZ25pemVkIFxcXG4gICAgICAgICAgICAgICBvcHRpb246ICVzQC5ALlwiXG4gICAgICAgICAgICAgIChwcmludF9oZWxwIHRydWUgZmFsc2UpIGEgb3B0O1xuICAgICAgICAgICAgZmFpbHdpdGggXCJiYWQgb3B0aW9uXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlbSA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBtYXRjaCBzcGVjLCByZW0gd2l0aFxuICAgICAgICAgICAgfCBCb29sIHIsIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IG9wdCA9IGtleTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEludCByLCBcIlwiIDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IDA7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBJbnQgciwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSBpbnRfb2Zfc3RyaW5nIHY7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBJbnRfb3B0IHIsIFwiXCIgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gTm9uZTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEludF9vcHQgciwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSBTb21lIChpbnRfb2Zfc3RyaW5nIHYpO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgSW50X29wdCByLCByZW0gLT5cbiAgICAgICAgICAgICAgciA6PSBOb25lO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nIHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gdjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZyByLCByZW0gLT5cbiAgICAgICAgICAgICAgciA6PSBcIlwiO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nX29wdCByLCBcIlwiIDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IE5vbmU7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdfb3B0IHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gU29tZSB2O1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nX29wdCByLCByZW0gLT5cbiAgICAgICAgICAgICAgciA6PSBOb25lO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nX2xpc3QgXywgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT4gcmVtXG4gICAgICAgICAgICB8IFN0cmluZ19saXN0IHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gdiA6OiAhcjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ19saXN0IHIsIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IFtdO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nTmJyX2xpc3QgXywgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT4gcmVtXG4gICAgICAgICAgICB8IFN0cmluZ05icl9saXN0IF8sIFsgXyBdIHdoZW4gb3B0ID0ga2V5IC0+IGZhaWx3aXRoIFwiaW52YWxpZCBwYWlyXCJcbiAgICAgICAgICAgIHwgU3RyaW5nTmJyX2xpc3QgciwgdicgOjogdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSAodiwgdicpIDo6ICFyO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nTmJyX2xpc3QgciwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gW107XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBGbG9hdCByLCBcIlwiIDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IDAuO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgRmxvYXQgciwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSBmbG9hdF9vZl9zdHJpbmcgdjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEZsb2F0X29wdCByLCBcIlwiIDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IE5vbmU7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBGbG9hdF9vcHQgciwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSBTb21lIChmbG9hdF9vZl9zdHJpbmcgdik7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBGbG9hdF9vcHQgciwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gTm9uZTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IENob2ljZSAobCwgbCcsIHIpLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgIChub3QgKExpc3QuZXhpc3RzIChmdW4gKGssIF8pIC0+IHYgPSBrKSBsKSlcbiAgICAgICAgICAgICAgICAmJiBub3QgKExpc3QuZXhpc3RzIChmdW4gayAtPiB2ID0gaykgbCcpXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBmYWlsd2l0aCBcImludmFsaWQgY2hvaWNlXCI7XG4gICAgICAgICAgICAgIHIgOj0gdjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IENob2ljZV9saXN0IChsLCByKSwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgaWYgbm90IChMaXN0LmV4aXN0cyAoZnVuIChrLCBfKSAtPiB2ID0gaykgbCkgdGhlblxuICAgICAgICAgICAgICAgIGZhaWx3aXRoIFwiaW52YWxpZCBjaG9pY2VcIjtcbiAgICAgICAgICAgICAgciA6PSB2IDo6ICFyO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgQ2hvaWNlX2xpc3QgKF9sLCByKSwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gW107XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBNdWx0aSAoeCwgW10pLCByZW0gLT5cbiAgICAgICAgICAgICAgaWdub3JlIChkb2l0IFtdIHgpO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgTXVsdGkgKHgsIHkpLCB2IDo6IHJlbSAtPlxuICAgICAgICAgICAgICBpZ25vcmUgKGRvaXQgW10geCk7XG4gICAgICAgICAgICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnQgKGZ1biBfIGwgLT4gZG9pdCBbXSBbIGw7IHYgXSkgYWNjdW0geSk7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBNdWx0aUV4dCBsLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBfIChsLCBzKSAtPiBkb2l0IFtdIFsgbDsgdiBeIHMgXSkgYWNjdW0gbCk7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBNdWx0aUV4dCBsLCByZW0gLT5cbiAgICAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgKGZ1biBfIChsLCBzKSAtPiBkb2l0IFtdIFsgbm9rZXkgbDsgcyBdKVxuICAgICAgICAgICAgICAgICAgIGFjY3VtIGwpO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgTXVsdGkgXywgW10gfCAoVm9pZCB8IEludCBfIHwgRmxvYXQgXyB8IENob2ljZSBfKSwgXyAtPlxuICAgICAgICAgICAgICBmYWlsd2l0aCBcImludmFsaWQgb3B0aW9uIG9yIGFyZ3VtZW50XCJcbiAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgIEZvcm1hdC5wcmludGYgXCJXcm9uZyBvcHRpb24gb3IgYXJndW1lbnQgZm9yICVzQC4lYVwiIG9wdFxuICAgICAgICAgICAgICAocHJpbnRfb3B0aW9uIGZhbHNlKSBhYTtcbiAgICAgICAgICAgIGZhaWx3aXRoIFwiYmFkIG9wdGlvblwiXG4gICAgICAgIGluXG4gICAgICAgIGRvaXQgYWNjdW0gcmVtXG4gICAgICAgICgqIGRvZXMgbm90IHN0YXJ0IHdpdGggLSA9PiB0aGlzIGlzIGZpbGVuYW1lICopXG4gICAgICApIGVsc2VcbiAgICAgICAgZG9pdCAob3B0IDo6IGFjY3VtKSByZW1cbiAgaW5cblxuICBsZXQgZmlsZW5hbWVzID0gZG9pdCBbXSBsIGluXG4gIGlmICFzaG93X3ZlcnNpb24gdGhlbiAoXG4gICAgRm9ybWF0LnByaW50ZiBcIiVzIEAuKHdpdGglcyBUayBpbnRlcmZhY2UpQC5cIlxuICAgICAgKG1hdGNoIHRpdGxlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBWZXJzaW9uLnZlcnNpb25fa2FzYV9mdWxsX25hbWVcbiAgICAgIHwgU29tZSB4IC0+IHgpXG4gICAgICAoaWYgd2l0aF90ayB0aGVuXG4gICAgICAgICBcIlwiXG4gICAgICAgZWxzZVxuICAgICAgICAgXCJvdXRcIik7XG4gICAgZXhpdCAwXG4gICkgZWxzZSBpZiAhbG9uZ19oZWxwIHRoZW4gKFxuICAgIEZvcm1hdC5wcmludGYgXCIlYVwiIChwcmludF9oZWxwIHRydWUgdHJ1ZSkgYTtcbiAgICBleGl0IDBcbiAgKSBlbHNlIGlmICFzaG9ydF9oZWxwIHRoZW4gKFxuICAgIEZvcm1hdC5wcmludGYgXCIlYVwiIChwcmludF9oZWxwIHRydWUgZmFsc2UpIGE7XG4gICAgZXhpdCAwXG4gICk7XG4gICgqIExpc3QuY29uY2F0KikgZmlsZW5hbWVzICgqKExpc3QubWFwIFdvcmRleHAud29yZGV4cCBmaWxlbmFtZXMpKilcbiIsIigqIExhYmxUSyBHVUkgZm9yIG9wdGlvbiBzZWxlY3Rpb24gU3VwZXJhcmcuXG5cbiAgIENvcHlyaWdodCAoQykgQW50b2luZSBNaW5lJyAyMDA2XG4gICBMaWdodCBWZXJzaW9uIChKZXJvbWUgRmVyZXQpXG4gICBUaGlzIExJR0hUIHZlcnNpb24gZG9lcyBub3QgcmVxdWlyZSBsYWJsdGtcbiopXG5cbmV4Y2VwdGlvbiBFeGl0IG9mIHN0cmluZyBsaXN0XG5cbigqIE1BSU4gKilcbigqICoqKiogKilcblxubGV0IHBhcnNlID90aXRsZSAoYSA6IFN1cGVyYXJnLnQpIChkZWYgOiBzdHJpbmcgbGlzdCByZWYpID1cbiAgU3VwZXJhcmcuY2hlY2sgYTtcbiAgKCogZHJvcCB0aGUgZmlyc3QgY29tbWFuZC1saW5lIGFyZ3VtZW50OiBpdCBpcyB0aGUgZXhlY3V0YWJsZSBuYW1lICopXG4gIGxldCBhcmdzID0gTGlzdC50bCAoQXJyYXkudG9fbGlzdCBTeXMuYXJndikgaW5cbiAgKCogaWYgbm8gYXJndW1lbnQgb3IgXCItLWd1aVwiIGdpdmVuLCBsYXVuY2ggdGhlIGd1aSwgb3RoZXJ3aXNlLCBwYXJzZSBhcmdzICopXG4gIGxldCByZW0gPVxuICAgIGlmXG4gICAgICBhcmdzID0gW10gfHwgYXJncyA9IFsgXCItLWV4cGVydFwiIF0gfHwgYXJncyA9IFsgXCItLW5vLWV4cGVydFwiIF1cbiAgICAgIHx8IExpc3QuZXhpc3RzICgoID0gKSBcIi0tZ3VpXCIpIGFyZ3NcbiAgICB0aGVuXG4gICAgICBTdXBlcmFyZy5wYXJzZV9saXN0IH53aXRoX3RrOmZhbHNlID90aXRsZSBhXG4gICAgICAgIChpZiBMaXN0LmV4aXN0cyAoKCA9ICkgXCItLWV4cGVydFwiKSBhcmdzIHRoZW5cbiAgICAgICAgICAgWyBcIi0taGVscFwiOyBcIi0tZXhwZXJ0XCIgXVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBbIFwiLS1oZWxwXCIgXSlcbiAgICBlbHNlXG4gICAgICBTdXBlcmFyZy5wYXJzZV9saXN0IH53aXRoX3RrOmZhbHNlID90aXRsZSBhIGFyZ3NcbiAgaW5cbiAgaWYgcmVtIDw+IFtdIHRoZW4gZGVmIDo9IHJlbVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGRhdGFfc2V0ID0gXCJEYXRhIHNldFwiLCAwLCBOb25lXG5sZXQgb3V0cHV0ID0gXCJPdXRwdXRcIiwgMSwgTm9uZVxubGV0IHNlbWFudGljcyA9IFwiU2VtYW50aWNzXCIsIDIsIE5vbmVcbmxldCBpbnRlZ3JhdGlvbl9zZXR0aW5ncyA9IFwiSW50ZWdyYXRpb24gc2V0dGluZ3NcIiwgMywgTm9uZVxubGV0IG1vZGVsX3JlZHVjdGlvbiA9IFwiTW9kZWwgcmVkdWN0aW9uXCIsIDQsIE5vbmVcbmxldCBzdGF0aWNfYW5hbHlzaXMgPSBcIlN0YXRpYyBhbmFseXNpc1wiLCA1LCBTb21lIFN1cGVyYXJnLkV4cGVydFxubGV0IGRlYnVnX21vZGUgPSBcIkRlYnVnIG1vZGVcIiwgNiwgU29tZSBTdXBlcmFyZy5FeHBlcnRcblxudHlwZSB0ID0geyBtdXRhYmxlIGJhY2t0cmFjZTogYm9vbDsgbXV0YWJsZSBkZWJ1ZzogYm9vbCB9XG5cbnR5cGUgdF9ndWkgPSB7XG4gIGJhY2t0cmFjZV9ndWk6IGJvb2wgcmVmO1xuICBkZWJ1Z19ndWk6IGJvb2wgcmVmO1xuICB2ZXJzaW9uX2d1aTogYm9vbCByZWY7XG4gIGdsdXR0b255X2d1aTogYm9vbCByZWY7XG59XG5cbmxldCBkZWZhdWx0IDogdCA9IHsgYmFja3RyYWNlID0gZmFsc2U7IGRlYnVnID0gZmFsc2UgfVxuXG5sZXQgZGVmYXVsdF9ndWkgPVxuICB7XG4gICAgYmFja3RyYWNlX2d1aSA9IHJlZiBmYWxzZTtcbiAgICBkZWJ1Z19ndWkgPSByZWYgZmFsc2U7XG4gICAgdmVyc2lvbl9ndWkgPSByZWYgZmFsc2U7XG4gICAgZ2x1dHRvbnlfZ3VpID0gcmVmIGZhbHNlO1xuICB9XG5cbmxldCBkb192ZXJzaW9uICgpID1cbiAgRm9ybWF0LnByaW50X3N0cmluZyBWZXJzaW9uLnZlcnNpb25fbXNnO1xuICBGb3JtYXQucHJpbnRfbmV3bGluZSAoKTtcbiAgZXhpdCAwXG5cbmxldCBkb19nbHV0dG9ueSAoKSA9XG4gIEdjLnNldCB7IChHYy5nZXQgKCkpIHdpdGggR2Muc3BhY2Vfb3ZlcmhlYWQgPSA1MDAgKCpkZWZhdWx0IDgwKikgfVxuXG5sZXQgZ2V0X2Zyb21fZ3VpIHRfZ3VpID1cbiAgbGV0ICgpID0gaWYgISh0X2d1aS52ZXJzaW9uX2d1aSkgdGhlbiBkb192ZXJzaW9uICgpIGluXG4gIGxldCAoKSA9IGlmICEodF9ndWkuZ2x1dHRvbnlfZ3VpKSB0aGVuIGRvX2dsdXR0b255ICgpIGluXG4gIHsgYmFja3RyYWNlID0gISh0X2d1aS5iYWNrdHJhY2VfZ3VpKTsgZGVidWcgPSAhKHRfZ3VpLmRlYnVnX2d1aSkgfVxuXG5sZXQgY29weV9mcm9tX2d1aSB0X2d1aSB0ID1cbiAgbGV0IHRfdG1wID0gZ2V0X2Zyb21fZ3VpIHRfZ3VpIGluXG4gIHQuYmFja3RyYWNlIDwtIHRfdG1wLmJhY2t0cmFjZTtcbiAgdC5kZWJ1ZyA8LSB0X3RtcC5kZWJ1Z1xuXG5sZXQgb3B0aW9uc19nZW4gdCB0X2d1aSA6XG4gICAgKHN0cmluZ1xuICAgICogQXJnLnNwZWNcbiAgICAqIFN1cGVyYXJnLnNwZWNcbiAgICAqIHN0cmluZ1xuICAgICogKFN1cGVyYXJnLmNhdGVnb3J5ICogU3VwZXJhcmcucG9zaXRpb24pIGxpc3RcbiAgICAqIFN1cGVyYXJnLmxldmVsKVxuICAgIGxpc3QgPVxuICBbXG4gICAgKCBcIi0tdmVyc2lvblwiLFxuICAgICAgQXJnLlVuaXQgZG9fdmVyc2lvbixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdF9ndWkudmVyc2lvbl9ndWksXG4gICAgICBcImRpc3BsYXkgdmVyc2lvbiBudW1iZXJcIixcbiAgICAgIFtdLFxuICAgICAgU3VwZXJhcmcuSGlkZGVuICk7XG4gICAgKCBcIi0tZGVidWdcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gdC5kZWJ1ZyA8LSB0cnVlKSxcbiAgICAgIFN1cGVyYXJnLkJvb2wgdF9ndWkuZGVidWdfZ3VpLFxuICAgICAgXCJFbmFibGUgZGVidWcgbW9kZVwiLFxuICAgICAgWyBkZWJ1Z19tb2RlLCAxIF0sXG4gICAgICBTdXBlcmFyZy5FeHBlcnQgKTtcbiAgICAoIFwiLS1iYWNrdHJhY2VcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gdC5iYWNrdHJhY2UgPC0gdHJ1ZSksXG4gICAgICBTdXBlcmFyZy5Cb29sIHRfZ3VpLmJhY2t0cmFjZV9ndWksXG4gICAgICBcIkJhY2t0cmFjaW5nIGV4Y2VwdGlvbnNcIixcbiAgICAgIFsgZGVidWdfbW9kZSwgMiBdLFxuICAgICAgU3VwZXJhcmcuRXhwZXJ0ICk7XG4gICAgKCBcIi0tZ2x1dHRvbnlcIixcbiAgICAgIEFyZy5Vbml0IGRvX2dsdXR0b255LFxuICAgICAgU3VwZXJhcmcuQm9vbCB0X2d1aS5nbHV0dG9ueV9ndWksXG4gICAgICBcIkxvd2VyIGdjIGFjdGl2aXR5IGZvciBhIGZhc3RlciBidXQgbWVtb3J5IGludGVuc2l2ZSBzaW11bGF0aW9uXCIsXG4gICAgICBbIGRlYnVnX21vZGUsIDMgXSxcbiAgICAgIFN1cGVyYXJnLkV4cGVydCApO1xuICBdXG5cbmxldCBvcHRpb25zIHQgPVxuICBMaXN0LnJldl9tYXBcbiAgICAoZnVuIChhLCBiLCBfLCBjLCBfLCBfKSAtPiBhLCBiLCBjKVxuICAgIChMaXN0LnJldiAob3B0aW9uc19nZW4gdCBkZWZhdWx0X2d1aSkpXG5cbmxldCBvcHRpb25zX2d1aSB0X2d1aSA9XG4gIExpc3QucmV2X21hcFxuICAgIChmdW4gKGEsIF8sIGIsIGMsIGQsIGUpIC0+IGEsIGIsIGMsIGQsIGUpXG4gICAgKExpc3QucmV2IChvcHRpb25zX2dlbiBkZWZhdWx0IHRfZ3VpKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHtcbiAgbXV0YWJsZSBpbnB1dEthcHBhRmlsZU5hbWVzOiBzdHJpbmcgbGlzdDtcbiAgbXV0YWJsZSBtaW5WYWx1ZTogZmxvYXQgb3B0aW9uO1xuICBtdXRhYmxlIG1heFZhbHVlOiBmbG9hdCBvcHRpb247XG4gIG11dGFibGUgcGxvdFBlcmlvZDogZmxvYXQgb3B0aW9uO1xuICBtdXRhYmxlIG91dHB1dERhdGFGaWxlOiBzdHJpbmcgb3B0aW9uO1xuICBtdXRhYmxlIG91dHB1dERpcmVjdG9yeTogc3RyaW5nO1xuICBtdXRhYmxlIGJhdGNobW9kZTogYm9vbDtcbiAgbXV0YWJsZSBpbnRlcmFjdGl2ZTogYm9vbDtcbiAgbXV0YWJsZSBzeW50YXhWZXJzaW9uOiBBc3Quc3ludGF4X3ZlcnNpb247XG59XG5cbnR5cGUgdF9ndWkgPSB7XG4gIGlucHV0S2FwcGFGaWxlTmFtZXNfZ3VpOiBzdHJpbmcgbGlzdCByZWY7XG4gIG1pblZhbHVlX2d1aTogZmxvYXQgb3B0aW9uIHJlZjtcbiAgbWF4VmFsdWVfZ3VpOiBmbG9hdCBvcHRpb24gcmVmO1xuICBwbG90UGVyaW9kX2d1aTogZmxvYXQgb3B0aW9uIHJlZjtcbiAgb3V0cHV0RGF0YUZpbGVfZ3VpOiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgb3V0cHV0RGlyZWN0b3J5X2d1aTogc3RyaW5nIHJlZjtcbiAgc3ludGF4VmVyc2lvbl9ndWk6IHN0cmluZyByZWY7XG4gIGJhdGNobW9kZV9ndWk6IHN0cmluZyByZWY7XG59XG5cbmxldCBkZWZhdWx0IDogdCA9XG4gIHtcbiAgICBpbnB1dEthcHBhRmlsZU5hbWVzID0gW107XG4gICAgbWluVmFsdWUgPSBOb25lO1xuICAgIG1heFZhbHVlID0gTm9uZTtcbiAgICBwbG90UGVyaW9kID0gTm9uZTtcbiAgICBvdXRwdXREYXRhRmlsZSA9IE5vbmU7XG4gICAgb3V0cHV0RGlyZWN0b3J5ID0gXCIuXCI7XG4gICAgc3ludGF4VmVyc2lvbiA9IEFzdC5WNDtcbiAgICBiYXRjaG1vZGUgPSBmYWxzZTtcbiAgICBpbnRlcmFjdGl2ZSA9IGZhbHNlO1xuICB9XG5cbmxldCBkZWZhdWx0X2d1aSA9XG4gIHtcbiAgICBpbnB1dEthcHBhRmlsZU5hbWVzX2d1aSA9IHJlZiBbXTtcbiAgICBtaW5WYWx1ZV9ndWkgPSByZWYgKFNvbWUgMC4pO1xuICAgIG1heFZhbHVlX2d1aSA9IHJlZiAoU29tZSAxLik7XG4gICAgcGxvdFBlcmlvZF9ndWkgPSByZWYgKFNvbWUgMC4wMSk7XG4gICAgb3V0cHV0RGF0YUZpbGVfZ3VpID0gcmVmIChTb21lIFwiZGF0YS5jc3ZcIik7XG4gICAgb3V0cHV0RGlyZWN0b3J5X2d1aSA9IHJlZiBcIi5cIjtcbiAgICBzeW50YXhWZXJzaW9uX2d1aSA9IHJlZiBcIjRcIjtcbiAgICBiYXRjaG1vZGVfZ3VpID0gcmVmIFwiaW50ZXJhY3RpdmVcIjtcbiAgfVxuXG5sZXQgcmVjIGF1eCBsIGFjY3UgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCAodiwgdmFyX3ZhbCkgOjogdGFpbCAtPlxuICAgIGF1eCB0YWlsXG4gICAgICAoKCB2LFxuICAgICAgICAgdHJ5IE5ici5vZl9zdHJpbmcgdmFyX3ZhbFxuICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgcmFpc2UgKEFyZy5CYWQgKFwiXFxcIlwiIF4gdmFyX3ZhbCBeIFwiXFxcIiBpcyBub3QgYSB2YWxpZCB2YWx1ZVwiKSkgKVxuICAgICAgOjogYWNjdSlcbiAgfCBbXSAtPiBhY2N1XG5cbmxldCBnZXRfZnJvbV9ndWkgdF9ndWkgPVxuICB7XG4gICAgbWluVmFsdWUgPSAhKHRfZ3VpLm1pblZhbHVlX2d1aSk7XG4gICAgbWF4VmFsdWUgPSAhKHRfZ3VpLm1heFZhbHVlX2d1aSk7XG4gICAgcGxvdFBlcmlvZCA9ICEodF9ndWkucGxvdFBlcmlvZF9ndWkpO1xuICAgIGlucHV0S2FwcGFGaWxlTmFtZXMgPSAhKHRfZ3VpLmlucHV0S2FwcGFGaWxlTmFtZXNfZ3VpKTtcbiAgICBvdXRwdXREYXRhRmlsZSA9ICEodF9ndWkub3V0cHV0RGF0YUZpbGVfZ3VpKTtcbiAgICBvdXRwdXREaXJlY3RvcnkgPSAhKHRfZ3VpLm91dHB1dERpcmVjdG9yeV9ndWkpO1xuICAgIHN5bnRheFZlcnNpb24gPVxuICAgICAgKG1hdGNoICEodF9ndWkuc3ludGF4VmVyc2lvbl9ndWkpIHdpdGhcbiAgICAgIHwgXCIzXCIgfCBcInYzXCIgfCBcIlYzXCIgLT4gQXN0LlYzXG4gICAgICB8IFwiNFwiIHwgXCJ2NFwiIHwgXCJWNFwiIC0+IEFzdC5WNFxuICAgICAgfCBfcyAtPiBBc3QuVjQpO1xuICAgIGJhdGNobW9kZSA9IFRvb2xzLmxvd2VyY2FzZSAhKHRfZ3VpLmJhdGNobW9kZV9ndWkpID0gXCJiYXRjaFwiO1xuICAgIGludGVyYWN0aXZlID0gVG9vbHMubG93ZXJjYXNlICEodF9ndWkuYmF0Y2htb2RlX2d1aSkgPSBcImludGVyYWN0aXZlXCI7XG4gIH1cblxubGV0IGNvcHlfZnJvbV9ndWkgdF9ndWkgdCA9XG4gIGxldCB0X3RtcCA9IGdldF9mcm9tX2d1aSB0X2d1aSBpblxuICB0Lm1pblZhbHVlIDwtIHRfdG1wLm1pblZhbHVlO1xuICB0Lm1heFZhbHVlIDwtIHRfdG1wLm1heFZhbHVlO1xuICB0LnBsb3RQZXJpb2QgPC0gdF90bXAucGxvdFBlcmlvZDtcbiAgdC5pbnB1dEthcHBhRmlsZU5hbWVzIDwtIHRfdG1wLmlucHV0S2FwcGFGaWxlTmFtZXM7XG4gIHQub3V0cHV0RGF0YUZpbGUgPC0gdF90bXAub3V0cHV0RGF0YUZpbGU7XG4gIHQub3V0cHV0RGlyZWN0b3J5IDwtIHRfdG1wLm91dHB1dERpcmVjdG9yeTtcbiAgdC5zeW50YXhWZXJzaW9uIDwtIHRfdG1wLnN5bnRheFZlcnNpb247XG4gIHQuYmF0Y2htb2RlIDwtIHRfdG1wLmJhdGNobW9kZTtcbiAgdC5pbnRlcmFjdGl2ZSA8LSB0X3RtcC5pbnRlcmFjdGl2ZVxuXG5sZXQgb3B0aW9uc19nZW4gKHQgOiB0KSAodF9ndWkgOiB0X2d1aSkgOlxuICAgIChzdHJpbmdcbiAgICAqIEFyZy5zcGVjXG4gICAgKiBTdXBlcmFyZy5zcGVjXG4gICAgKiBzdHJpbmdcbiAgICAqIChTdXBlcmFyZy5jYXRlZ29yeSAqIFN1cGVyYXJnLnBvc2l0aW9uKSBsaXN0XG4gICAgKiBTdXBlcmFyZy5sZXZlbClcbiAgICBsaXN0ID1cbiAgW1xuICAgICggXCItaVwiLFxuICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAoZnVuIGZpYyAtPiB0LmlucHV0S2FwcGFGaWxlTmFtZXMgPC0gZmljIDo6IHQuaW5wdXRLYXBwYUZpbGVOYW1lcyksXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfbGlzdCB0X2d1aS5pbnB1dEthcHBhRmlsZU5hbWVzX2d1aSxcbiAgICAgIFwibmFtZSBvZiBhIGthcHBhIGZpbGUgdG8gdXNlIGFzIGlucHV0IChjYW4gYmUgdXNlZCBtdWx0aXBsZSB0aW1lcyBmb3IgXFxcbiAgICAgICBtdWx0aXBsZSBpbnB1dCBmaWxlcylcIixcbiAgICAgIFtdLFxuICAgICAgU3VwZXJhcmcuSGlkZGVuICk7XG4gICAgKCBcIi1pbml0aWFsXCIsXG4gICAgICBBcmcuRmxvYXQgKGZ1biB0aW1lIC0+IHQubWluVmFsdWUgPC0gU29tZSB0aW1lKSxcbiAgICAgIFN1cGVyYXJnLkZsb2F0X29wdCB0X2d1aS5taW5WYWx1ZV9ndWksXG4gICAgICBcIk1pbiB0aW1lIG9mIHNpbXVsYXRpb24gKGFyYml0cmFyeSB0aW1lIHVuaXQpXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLmRhdGFfc2V0LCAwOyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMCBdLFxuICAgICAgU3VwZXJhcmcuTm9ybWFsICk7XG4gICAgKCBcIi1sXCIsXG4gICAgICBBcmcuRmxvYXQgKGZ1biB0aW1lIC0+IHQubWF4VmFsdWUgPC0gU29tZSB0aW1lKSxcbiAgICAgIFN1cGVyYXJnLkZsb2F0X29wdCB0X2d1aS5tYXhWYWx1ZV9ndWksXG4gICAgICBcIkxpbWl0IG9mIHRoZSBzaW11bGF0aW9uXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLmRhdGFfc2V0LCAxOyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMSBdLFxuICAgICAgU3VwZXJhcmcuTm9ybWFsICk7XG4gICAgKCBcIi10XCIsXG4gICAgICBBcmcuRmxvYXRcbiAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChBcmcuQmFkXG4gICAgICAgICAgICAgICAoXCJPcHRpb24gJy10JyBoYXMgYmVlbiByZXBsYWNlIGJ5ICdbLXUgdGltZV0gLWwgXCJcbiAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfZmxvYXQgZiBeIFwiJ1wiKSkpLFxuICAgICAgU3VwZXJhcmcuRmxvYXRfb3B0IHRfZ3VpLm1heFZhbHVlX2d1aSxcbiAgICAgIFwiRGVwcmVjYXRlZCBvcHRpb25cIixcbiAgICAgIFtdLFxuICAgICAgU3VwZXJhcmcuSGlkZGVuICk7XG4gICAgKCBcIi1wXCIsXG4gICAgICBBcmcuRmxvYXQgKGZ1biBwb2ludE51bWJlclZhbHVlIC0+IHQucGxvdFBlcmlvZCA8LSBTb21lIHBvaW50TnVtYmVyVmFsdWUpLFxuICAgICAgU3VwZXJhcmcuRmxvYXRfb3B0IHRfZ3VpLnBsb3RQZXJpb2RfZ3VpLFxuICAgICAgXCJwbG90IHBlcmlvZDogdGltZSBpbnRlcnZhbCBiZXR3ZWVuIHBvaW50cyBpbiBwbG90IChkZWZhdWx0OiAxLjApXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLmRhdGFfc2V0LCAyOyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMiBdLFxuICAgICAgU3VwZXJhcmcuTm9ybWFsICk7XG4gICAgKCBcIi1vXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gb3V0cHV0RGF0YUZpbGUgLT4gdC5vdXRwdXREYXRhRmlsZSA8LSBTb21lIG91dHB1dERhdGFGaWxlKSxcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdF9ndWkub3V0cHV0RGF0YUZpbGVfZ3VpLFxuICAgICAgXCJmaWxlIG5hbWUgZm9yIGRhdGEgb3V0cHV0XCIsXG4gICAgICBbXG4gICAgICAgIENvbW1vbl9hcmdzLmRhdGFfc2V0LCAzO1xuICAgICAgICBDb21tb25fYXJncy5vdXRwdXQsIDM7XG4gICAgICAgIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAzO1xuICAgICAgXSxcbiAgICAgIFN1cGVyYXJnLkhpZGRlbiApO1xuICAgICggXCItZFwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIG91dHB1dERpcmVjdG9yeSAtPiB0Lm91dHB1dERpcmVjdG9yeSA8LSBvdXRwdXREaXJlY3RvcnkpLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nIHRfZ3VpLm91dHB1dERpcmVjdG9yeV9ndWksXG4gICAgICBcIlNwZWNpZmllcyBkaXJlY3RvcnkgbmFtZSB3aGVyZSBvdXRwdXQgZmlsZShzKSBzaG91bGQgYmUgc3RvcmVkXCIsXG4gICAgICBbXG4gICAgICAgIENvbW1vbl9hcmdzLmRhdGFfc2V0LCAxMDA7XG4gICAgICAgIENvbW1vbl9hcmdzLm91dHB1dCwgMTAwO1xuICAgICAgICBDb21tb25fYXJncy5zZW1hbnRpY3MsIDEwMDtcbiAgICAgICAgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDEwMDtcbiAgICAgICAgQ29tbW9uX2FyZ3MubW9kZWxfcmVkdWN0aW9uLCAxMDA7XG4gICAgICAgIENvbW1vbl9hcmdzLnN0YXRpY19hbmFseXNpcywgMTAwO1xuICAgICAgICBDb21tb25fYXJncy5kZWJ1Z19tb2RlLCAxMDA7XG4gICAgICBdLFxuICAgICAgU3VwZXJhcmcuTm9ybWFsICk7XG4gICAgKCBcIi1tb2RlXCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW4gbSAtPlxuICAgICAgICAgIGlmIG0gPSBcImJhdGNoXCIgdGhlblxuICAgICAgICAgICAgdC5iYXRjaG1vZGUgPC0gdHJ1ZVxuICAgICAgICAgIGVsc2UgaWYgbSA9IFwiaW50ZXJhY3RpdmVcIiB0aGVuXG4gICAgICAgICAgICB0LmludGVyYWN0aXZlIDwtIHRydWUpLFxuICAgICAgU3VwZXJhcmcuQ2hvaWNlXG4gICAgICAgICggWyBcImJhdGNoXCIsIFwiYmF0Y2ggbW9kZVwiOyBcImludGVyYWN0aXZlXCIsIFwiaW50ZXJhY3RpdmUgbW9kZVwiIF0sXG4gICAgICAgICAgW10sXG4gICAgICAgICAgdF9ndWkuYmF0Y2htb2RlX2d1aSApLFxuICAgICAgXCJlaXRoZXIgXFxcImJhdGNoXFxcIiB0byBuZXZlciBhc2sgYW55dGhpbmcgdG8gdGhlIHVzZXIgb3IgXFxcImludGVyYWN0aXZlXFxcIiBcXFxuICAgICAgIHRvIGFzayBzb21ldGhpbmcgYmVmb3JlIGRvaW5nIGFueXRoaW5nXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgNzsgQ29tbW9uX2FyZ3MuZGVidWdfbW9kZSwgNyBdLFxuICAgICAgU3VwZXJhcmcuRXhwZXJ0ICk7XG4gICAgKCBcIi1zeW50YXhcIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgXCIzXCIgfCBcInYzXCIgfCBcIlYzXCIgLT4gdC5zeW50YXhWZXJzaW9uIDwtIEFzdC5WM1xuICAgICAgICB8IFwiNFwiIHwgXCJ2NFwiIHwgXCJWNFwiIC0+IHQuc3ludGF4VmVyc2lvbiA8LSBBc3QuVjRcbiAgICAgICAgfCBzIC0+IHJhaXNlIChBcmcuQmFkIChcIlxcXCJcIiBeIHMgXiBcIlxcXCIgaXMgbm90IGEgdmFsaWQgc3ludGF4IHZlcnNpb25cIikpKSxcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFtcbiAgICAgICAgICAgIFwiM1wiLCBcIm9sZFwiO1xuICAgICAgICAgICAgXCJ2M1wiLCBcIm9sZFwiO1xuICAgICAgICAgICAgXCJWM1wiLCBcIm9sZFwiO1xuICAgICAgICAgICAgXCI0XCIsIFwibmV3XCI7XG4gICAgICAgICAgICBcInY0XCIsIFwibmV3XCI7XG4gICAgICAgICAgICBcIlY0XCIsIFwibmV3XCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXSxcbiAgICAgICAgICB0X2d1aS5zeW50YXhWZXJzaW9uX2d1aSApLFxuICAgICAgXCJVc2UgZXhwbGljaXQgbm90YXRpb24gZm9yIGZyZWUgc2l0ZVwiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDggXSxcbiAgICAgIFN1cGVyYXJnLk5vcm1hbCApO1xuICBdXG5cbmxldCBvcHRpb25zIHQgPVxuICBMaXN0LnJldl9tYXBcbiAgICAoZnVuIChhLCBiLCBfLCBjLCBfLCBfKSAtPiBhLCBiLCBjKVxuICAgIChMaXN0LnJldiAob3B0aW9uc19nZW4gdCBkZWZhdWx0X2d1aSkpXG5cbmxldCBvcHRpb25zX2d1aSB0X2d1aSA9XG4gIExpc3QucmV2X21hcFxuICAgIChmdW4gKGEsIF8sIGIsIGMsIGQsIGUpIC0+IGEsIGIsIGMsIGQsIGUpXG4gICAgKExpc3QucmV2IChvcHRpb25zX2dlbiBkZWZhdWx0IHRfZ3VpKSlcbiAgQCBbXG4gICAgICAoIFwiLS1vdXRwdXQtcGxvdFwiLFxuICAgICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHRfZ3VpLm91dHB1dERhdGFGaWxlX2d1aSxcbiAgICAgICAgXCJmaWxlIG5hbWUgZm9yIGRhdGEgb3V0cHV0XCIsXG4gICAgICAgIFtcbiAgICAgICAgICBDb21tb25fYXJncy5vdXRwdXQsIDE7XG4gICAgICAgICAgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCAxO1xuICAgICAgICAgIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAxO1xuICAgICAgICBdLFxuICAgICAgICBTdXBlcmFyZy5Ob3JtYWwgKTtcbiAgICAgICggXCItLWRhdGEtZmlsZVwiLFxuICAgICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHRfZ3VpLm91dHB1dERhdGFGaWxlX2d1aSxcbiAgICAgICAgXCJmaWxlIG5hbWUgZm9yIGRhdGEgb3V0cHV0XCIsXG4gICAgICAgIFtcbiAgICAgICAgICBDb21tb25fYXJncy5vdXRwdXQsIDE7XG4gICAgICAgICAgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCAyO1xuICAgICAgICAgIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAzO1xuICAgICAgICBdLFxuICAgICAgICBTdXBlcmFyZy5IaWRkZW4gKTtcbiAgICBdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGJhciA9IHsgbXV0YWJsZSB0aWNrczogaW50OyBiYXJfc2l6ZTogaW50OyBiYXJfY2hhcjogY2hhciB9XG5cbnR5cGUgdGV4dCA9IHtcbiAgbXV0YWJsZSBsYXN0X2xlbmd0aDogaW50O1xuICBtdXRhYmxlIGxhc3RfZXZlbnRfbmI6IGludDtcbiAgbXV0YWJsZSBsYXN0X3RpbWU6IGZsb2F0O1xufVxuXG50eXBlIHQgPSBCYXIgb2YgYmFyIHwgVGV4dCBvZiB0ZXh0XG5cbmxldCBpbmNfdGljayBjID0gYy50aWNrcyA8LSBjLnRpY2tzICsgMVxuXG5sZXQgY3JlYXRlIGJhcl9zaXplIGJhcl9jaGFyID1cbiAgaWYgVW5peC5pc2F0dHkgVW5peC5zdGRvdXQgdGhlblxuICAgIFRleHQgeyBsYXN0X2xlbmd0aCA9IDA7IGxhc3RfdGltZSA9IC01LjsgbGFzdF9ldmVudF9uYiA9IDAgfVxuICBlbHNlIChcbiAgICBsZXQgKCkgPVxuICAgICAgZm9yIF8gPSBiYXJfc2l6ZSBkb3dudG8gMSBkb1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIEZvcm1hdC5zdGRfZm9ybWF0dGVyIFwiX1wiXG4gICAgICBkb25lXG4gICAgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfbmV3bGluZSBGb3JtYXQuc3RkX2Zvcm1hdHRlciAoKSBpblxuICAgIEJhciB7IHRpY2tzID0gMDsgYmFyX3NpemU7IGJhcl9jaGFyIH1cbiAgKVxuXG5sZXQgcHBfbm90X251bGwgZiB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgU29tZSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgKCUuMmYlJSlcIiAoeCAqLiAxMDAuKVxuICB8IE5vbmUgLT4gKClcblxubGV0IHBwX3RleHQgZGVsdGFfdCB0aW1lIHRfciBldmVudCBlX3IgZiBzID1cbiAgbGV0IHN0cmluZyA9XG4gICAgRm9ybWF0LmFzcHJpbnRmIFwiJS4yZiB0aW1lIHVuaXRzJWEgaW4gJWkgZXZlbnRzJWEldFwiIHRpbWUgcHBfbm90X251bGwgdF9yXG4gICAgICBldmVudCBwcF9ub3RfbnVsbCBlX3IgKGZ1biBmIC0+XG4gICAgICAgIG1hdGNoIGRlbHRhX3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIGR0IC0+XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiAoanVzdCBkaWQgJS4xZiBldmVudHMvcylcIlxuICAgICAgICAgICAgKGZsb2F0X29mX2ludCAoZXZlbnQgLSBzLmxhc3RfZXZlbnRfbmIpIC8uIGR0KSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXMlcyVzQD9cIlxuICAgICAgKFN0cmluZy5tYWtlIHMubGFzdF9sZW5ndGggJ1xcYicpXG4gICAgICBzdHJpbmdcbiAgICAgIChTdHJpbmcubWFrZSAobWF4IDAgKHMubGFzdF9sZW5ndGggLSBTdHJpbmcubGVuZ3RoIHN0cmluZykpICcgJylcbiAgaW5cbiAgcy5sYXN0X2xlbmd0aCA8LSBTdHJpbmcubGVuZ3RoIHN0cmluZ1xuXG5sZXQgcmVjIGF1eF90aWNrIHNvbWV0aGluZyBzIG4gPVxuICBpZiBuIDw9IDAgdGhlblxuICAgIGlmIHNvbWV0aGluZyB0aGVuXG4gICAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgKClcbiAgICBlbHNlXG4gICAgICAoKVxuICBlbHNlIChcbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfY2hhciBGb3JtYXQuc3RkX2Zvcm1hdHRlciBzLmJhcl9jaGFyIGluXG4gICAgbGV0ICgpID0gaW5jX3RpY2sgcyBpblxuICAgIGF1eF90aWNrIHRydWUgcyAocHJlZCBuKVxuICApXG5cbmxldCB0aWNrIH5lZmZpY2llbmN5IHRpbWUgdF9yIGV2ZW50IGVfciA9IGZ1bmN0aW9uXG4gIHwgQmFyIHMgLT5cbiAgICBsZXQgbl90ID0gT3B0aW9uX3V0aWwudW5zb21lIDAuIHRfciAqLiBmbG9hdF9vZl9pbnQgcy5iYXJfc2l6ZSBpblxuICAgIGxldCBuX2UgPSBPcHRpb25fdXRpbC51bnNvbWUgMC4gZV9yICouIGZsb2F0X29mX2ludCBzLmJhcl9zaXplIGluXG4gICAgYXV4X3RpY2sgZmFsc2UgcyAoaW50X29mX2Zsb2F0IChtYXggbl90IG5fZSkgLSBzLnRpY2tzKVxuICB8IFRleHQgcyAtPlxuICAgIGxldCBydW4gPSBTeXMudGltZSAoKSBpblxuICAgIGxldCBkdCA9IHJ1biAtLiBzLmxhc3RfdGltZSBpblxuICAgIGlmIGR0ID4gMC41IHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcHBfdGV4dFxuICAgICAgICAgIChpZiBlZmZpY2llbmN5IHRoZW5cbiAgICAgICAgICAgICBTb21lIGR0XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgIHRpbWUgdF9yIGV2ZW50IGVfciBGb3JtYXQuc3RkX2Zvcm1hdHRlciBzXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcy5sYXN0X2V2ZW50X25iIDwtIGV2ZW50IGluXG4gICAgICBzLmxhc3RfdGltZSA8LSBTeXMudGltZSAoKVxuICAgIClcblxubGV0IGNvbXBsZXRlX3Byb2dyZXNzX2JhciB0aW1lIGV2ZW50IHQgPVxuICAobWF0Y2ggdCB3aXRoXG4gIHwgQmFyIHQgLT4gYXV4X3RpY2sgZmFsc2UgdCAodC5iYXJfc2l6ZSAtIHQudGlja3MpXG4gIHwgVGV4dCBzIC0+IHBwX3RleHQgTm9uZSB0aW1lIE5vbmUgZXZlbnQgTm9uZSBGb3JtYXQuc3RkX2Zvcm1hdHRlciBzKTtcbiAgRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBvdXRwdXREaXJOYW1lID0gcmVmIFwiXCJcbmxldCBtYXJzaGFsaXplZE91dEZpbGUgPSByZWYgXCJcIlxubGV0IGNmbG93RmlsZU5hbWUgPSByZWYgXCJjZmxvdy5kb3RcIlxubGV0IGJyYW5jaF9hbmRfY3V0X2VuZ2luZV9wcm9maWxpbmdOYW1lID0gcmVmIFwiY29tcHJlc3Npb25fc3RhdHVzLnR4dFwiXG5sZXQgdGFza3NfcHJvZmlsaW5nTmFtZSA9IHJlZiBcInByb2ZpbGluZy5odG1sXCJcbmxldCBmbHV4RmlsZU5hbWUgPSByZWYgXCJcIlxuXG5sZXQgbWtfZGlyX3IgZCA9XG4gIGxldCByZWMgYXV4IGQgPVxuICAgIGlmIG5vdCAoU3lzLmZpbGVfZXhpc3RzIGQpIHRoZW4gKFxuICAgICAgbGV0ICgpID0gYXV4IChGaWxlbmFtZS5kaXJuYW1lIGQpIGluXG4gICAgICBVbml4Lm1rZGlyIGQgMG83NzVcbiAgICApXG4gIGluXG4gIFVuaXguaGFuZGxlX3VuaXhfZXJyb3IgYXV4IGRcblxubGV0IG92ZXJ3cml0ZV9wZXJtaXNzaW9uID0gcmVmIGZhbHNlXG5cbmxldCBwYXRoIGYgPVxuICBpZiBGaWxlbmFtZS5pc19pbXBsaWNpdCBmIHRoZW5cbiAgICBGaWxlbmFtZS5jb25jYXQgIW91dHB1dERpck5hbWUgZlxuICBlbHNlXG4gICAgZlxuXG5sZXQgb3Blbl9vdXQgZiA9XG4gIGxldCB4ID0gcGF0aCBmIGluXG4gIGxldCAoKSA9IG1rX2Rpcl9yIChGaWxlbmFtZS5kaXJuYW1lIHgpIGluXG4gIG9wZW5fb3V0IHhcblxubGV0IHJlYyBhdXhfb3Blbl9vdXRfZnJlc2ggYmFzZSB2IGV4dCA9XG4gIHRyeVxuICAgIG9wZW5fb3V0X2dlblxuICAgICAgWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl9leGNsOyBPcGVuX3RleHQgXVxuICAgICAgMG82NjZcbiAgICAgIChiYXNlIF4gXCJ+XCIgXiBzdHJpbmdfb2ZfaW50IHYgXiBleHQpXG4gIHdpdGggU3lzX2Vycm9yIF8gLT4gYXV4X29wZW5fb3V0X2ZyZXNoIGJhc2UgKHN1Y2MgdikgZXh0XG5cbmxldCBvcGVuX291dF9mcmVzaCBuYW1lIGNvbmNhdF9saXN0IGZhY3VsdGF0aXZlIGV4dCA9XG4gIGxldCBuYW1lID0gcGF0aCBuYW1lIGluXG4gIGxldCAoKSA9IG1rX2Rpcl9yIChGaWxlbmFtZS5kaXJuYW1lIG5hbWUpIGluXG4gIGxldCB0bXBfbmFtZSA9IFRvb2xzLmNob3Bfc3VmZml4X29yX2V4dGVuc2lvbiBuYW1lIGV4dCBpblxuICBsZXQgYmFzZSA9IFN0cmluZy5jb25jYXQgXCJfXCIgKHRtcF9uYW1lIDo6IGNvbmNhdF9saXN0KSBpblxuICBsZXQgb3Zlcl9mbGFnID1cbiAgICBpZiAhb3ZlcndyaXRlX3Blcm1pc3Npb24gdGhlblxuICAgICAgT3Blbl90cnVuY1xuICAgIGVsc2VcbiAgICAgIE9wZW5fZXhjbFxuICBpblxuICBsZXQgZmxhZ3MgPSBbIE9wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBvdmVyX2ZsYWc7IE9wZW5fdGV4dCBdIGluXG4gIHRyeSBvcGVuX291dF9nZW4gZmxhZ3MgMG82NjYgKGJhc2UgXiBleHQpXG4gIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICBsZXQgYmFzZScgPVxuICAgICAgaWYgZmFjdWx0YXRpdmUgPD4gXCJcIiB0aGVuXG4gICAgICAgIGJhc2UgXiBcIl9cIiBeIGZhY3VsdGF0aXZlXG4gICAgICBlbHNlXG4gICAgICAgIGJhc2VcbiAgICBpblxuICAgICh0cnkgb3Blbl9vdXRfZ2VuIGZsYWdzIDBvNjY2IChiYXNlJyBeIGV4dClcbiAgICAgd2l0aCBTeXNfZXJyb3IgXyAtPiBhdXhfb3Blbl9vdXRfZnJlc2ggYmFzZScgMCBleHQpXG5cbmxldCBzZXQgbmFtZSBleHRfb3B0ID1cbiAgaWYgIW5hbWUgPD4gXCJcIiB0aGVuIChcbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZXh0X29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gIW5hbWVcbiAgICAgIHwgU29tZSBleHQgLT5cbiAgICAgICAgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4ICFuYW1lIGV4dCB0aGVuXG4gICAgICAgICAgIW5hbWVcbiAgICAgICAgZWxzZVxuICAgICAgICAgICFuYW1lIF4gXCIuXCIgXiBleHRcbiAgICBpblxuICAgIG5hbWUgOj0gZm5hbWVcbiAgKVxuXG5sZXQgc2V0T3V0cHV0TmFtZSAoKSA9XG4gIHNldCBmbHV4RmlsZU5hbWUgKFNvbWUgXCJkb3RcIik7XG4gIHNldCBtYXJzaGFsaXplZE91dEZpbGUgTm9uZVxuXG5sZXQgY2hlY2tfbm90X2V4aXN0cyA9IGZ1bmN0aW9uXG4gIHwgXCJcIiAtPiAoKVxuICB8IGZpbGUgLT5cbiAgICBsZXQgZmlsZSA9IHBhdGggZmlsZSBpblxuICAgIGlmIFN5cy5maWxlX2V4aXN0cyBmaWxlIHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmVwcmludGYgXCJGaWxlICclcycgYWxyZWFkeSBleGlzdHMgZG8geW91IHdhbnQgdG8gZXJhc2UgKHkvTik/QC5cIlxuICAgICAgICAgIGZpbGVcbiAgICAgIGluXG4gICAgICBsZXQgYW5zd2VyID0gVG9vbHMucmVhZF9pbnB1dCAoKSBpblxuICAgICAgaWZcbiAgICAgICAgYW5zd2VyIDw+IFwieVwiICYmIGFuc3dlciA8PiBcIllcIiAmJiBhbnN3ZXIgPD4gXCJ5ZXNcIiAmJiBhbnN3ZXIgPD4gXCJZRVNcIlxuICAgICAgICAmJiBhbnN3ZXIgPD4gXCJZZXNcIlxuICAgICAgdGhlblxuICAgICAgICBleGl0IDFcbiAgICAgIGVsc2VcbiAgICAgICAgb3ZlcndyaXRlX3Blcm1pc3Npb24gOj0gdHJ1ZVxuICAgIClcblxubGV0IHNldENoZWNrRmlsZUV4aXN0cyB+YmF0Y2htb2RlIG91dHB1dEZpbGUgPVxuICBsZXQgKCkgPSBzZXRPdXRwdXROYW1lICgpIGluXG4gIGlmIGJhdGNobW9kZSB0aGVuXG4gICAgb3ZlcndyaXRlX3Blcm1pc3Npb24gOj0gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgKCkgPSBjaGVja19ub3RfZXhpc3RzICFmbHV4RmlsZU5hbWUgaW5cbiAgICBsZXQgKCkgPSBjaGVja19ub3RfZXhpc3RzICFtYXJzaGFsaXplZE91dEZpbGUgaW5cbiAgICBjaGVja19ub3RfZXhpc3RzIG91dHB1dEZpbGVcbiAgKVxuXG5sZXQgd2l0aF9jaGFubmVsIHN0ciBmID1cbiAgaWYgc3RyIDw+IFwiXCIgdGhlbiAoXG4gICAgbGV0IGRlc2MgPSBvcGVuX291dCBzdHIgaW5cbiAgICBsZXQgKCkgPSBmIGRlc2MgaW5cbiAgICBjbG9zZV9vdXQgZGVzY1xuICApXG5cbmxldCB3cmFwX2Zvcm1hdHRlciBmIGRlc2MgPVxuICBsZXQgZnIgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGRlc2MgaW5cbiAgbGV0ICgpID0gZiBmciBpblxuICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZnIgKClcblxubGV0IHNldF9kaXIgcyA9XG4gIGxldCAoKSA9XG4gICAgdHJ5XG4gICAgICBpZiBub3QgKFN5cy5pc19kaXJlY3RvcnkgcykgdGhlbiAoXG4gICAgICAgIEZvcm1hdC5lcHJpbnRmIFwiJyVzJyBpcyBub3QgYSBkaXJlY3RvcnlALlwiIHM7XG4gICAgICAgIGV4aXQgMVxuICAgICAgKVxuICAgIHdpdGggU3lzX2Vycm9yIF8gLT4gbWtfZGlyX3Igc1xuICBpblxuICBvdXRwdXREaXJOYW1lIDo9IHNcblxubGV0IGdldF9kaXIgKCkgPSAhb3V0cHV0RGlyTmFtZVxubGV0IHNldF9tYXJzaGFsaXplZCBmID0gbWFyc2hhbGl6ZWRPdXRGaWxlIDo9IGZcblxubGV0IHdpdGhfbWFyc2hhbGl6ZWQgZiA9XG4gIG1hdGNoICFtYXJzaGFsaXplZE91dEZpbGUgd2l0aFxuICB8IFwiXCIgLT4gKClcbiAgfCBmaWxlIC0+XG4gICAgbGV0IHggPSBwYXRoIGZpbGUgaW5cbiAgICBsZXQgKCkgPSBta19kaXJfciAoRmlsZW5hbWUuZGlybmFtZSB4KSBpblxuICAgIGxldCBkID0gb3Blbl9vdXRfYmluIHggaW5cbiAgICBsZXQgKCkgPSBmIGQgaW5cbiAgICBjbG9zZV9vdXQgZFxuXG5sZXQgc2V0X2NmbG93IHMgPSBjZmxvd0ZpbGVOYW1lIDo9IHNcblxubGV0IHdpdGhfY2Zsb3dfZmlsZSBsIGUgZiA9XG4gIGxldCBkZXNjID0gb3Blbl9vdXRfZnJlc2ggIWNmbG93RmlsZU5hbWUgbCBcIlwiIGUgaW5cbiAgbGV0ICgpID0gd3JhcF9mb3JtYXR0ZXIgZiBkZXNjIGluXG4gIGNsb3NlX291dCBkZXNjXG5cbmxldCBvcGVuX3Rhc2tzX3Byb2ZpbGluZyAoKSA9IG9wZW5fb3V0ICF0YXNrc19wcm9maWxpbmdOYW1lXG5cbmxldCBvcGVuX2JyYW5jaF9hbmRfY3V0X2VuZ2luZV9wcm9maWxpbmcgKCkgPVxuICBvcGVuX291dCAhYnJhbmNoX2FuZF9jdXRfZW5naW5lX3Byb2ZpbGluZ05hbWVcblxubGV0IHNldF9mbHV4IG5tZSBldmVudCA9XG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggbm1lIHdpdGhcbiAgICB8IFwiXCIgLT4gZmx1eEZpbGVOYW1lIDo9IFwiZmx1eFwiIF4gXCJfXCIgXiBzdHJpbmdfb2ZfaW50IGV2ZW50XG4gICAgfCBfIC0+IGZsdXhGaWxlTmFtZSA6PSBubWVcbiAgaW5cbiAgc2V0IGZsdXhGaWxlTmFtZSAoU29tZSBcImRvdFwiKVxuXG5sZXQgd2l0aF9mbHV4IHN0ciBmID1cbiAgd2l0aF9jaGFubmVsXG4gICAgKG1hdGNoIHN0ciB3aXRoXG4gICAgfCBcIlwiIC0+ICFmbHV4RmlsZU5hbWVcbiAgICB8IF8gLT4gc3RyKVxuICAgIGZcblxubGV0IHdpdGhfc25hcHNob3Qgc3RyIGV4dCBldmVudCBmID1cbiAgbGV0IGRlc2MgPSBvcGVuX291dF9mcmVzaCBzdHIgW10gKHN0cmluZ19vZl9pbnQgZXZlbnQpIGV4dCBpblxuICBsZXQgKCkgPSBmIGRlc2MgaW5cbiAgY2xvc2Vfb3V0IGRlc2NcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc3RvcmUgPSB7XG4gIGZpbGU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3I6IHN0cmluZztcbiAgbGVnZW5kOiBzdHJpbmcgYXJyYXk7XG4gIG11dGFibGUgcG9pbnRzOiBOYnIudCBhcnJheSBsaXN0O1xufVxuXG5sZXQgbmV3X2ZpbGUgbmFtZSA9XG4gIGxldCBjaGFuID0gS2FwcGFfZmlsZXMub3Blbl9vdXQgbmFtZSBpblxuICBsZXQgZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgY2hhbiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj48P3htbCB2ZXJzaW9uPVxcXCIxLjBcXFwiPz5ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPD48IURPQ1RZUEVAIHN2Z0AgUFVCTElDQCBcXFwiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU5cXFwiQCBcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiXFxcImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZFxcXCI+QF1ALEAsXCJcbiAgaW5cbiAgZiwgY2hhblxuXG5sZXQgY2xvc2VfZmlsZSBmb3JtIGNoYW4gPVxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmb3JtIFwiQF1ALlwiIGluXG4gIGNsb3NlX291dCBjaGFuXG5cbmxldCBzdHlsZSBmID1cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxzdHlsZSB0eXBlPVxcXCJ0ZXh0L2Nzc1xcXCIgPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjwhW0NEQVRBW0AsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+I2xlZ2VuZCB0ZXh0IHtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ0ZXh0LWFuY2hvcjplbmQ7QCBiYXNlbGluZS1zaGlmdDotLjRlbTtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ9QF1ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPiNheGlzX3QgdGV4dCB7QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwidGV4dC1hbmNob3I6bWlkZGxlO0AgYmFzZWxpbmUtc2hpZnQ6LTFlbTtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ9QF1ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPiNheGlzX3ZhIHRleHQge0AsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInRleHQtYW5jaG9yOmVuZDtAIGJhc2VsaW5lLXNoaWZ0Oi0uNGVtO0AsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIn1AXUAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj4jYXhlcyB7QCxjb2xvcjpibGFjaztALHN0cm9rZTpjdXJyZW50Q29sb3I7XCJcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkAsc3Ryb2tlLXNpemU6MXB4O0AsfUBdQCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiQFs8aHYgMj4jYXhlcyB0ZXh0IHtALHN0cm9rZTpub25lO0AsZmlsbDpjdXJyZW50Q29sb3I7QCx9QF1ALFwiXG4gIGluXG4gICgqIGxldCAoKSA9XG4gICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPiNkYXRhIHVzZTpob3ZlciB7QCxmaWxsOmdyZWVuO0AsfUBdQCxcIiBpbiopXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJdXT5ALDwvc3R5bGU+QCxALFwiXG5cbmxldCBjb2xvcnMgPSBbfCBcInBlcnVcIjsgXCJibHVlXCI7IFwicHVycGxlXCI7IFwiZ3JlZW5cIiB8XVxubGV0IHN0eWxlcyA9IFt8IFwicG9pbnRcIjsgXCJwbHVzXCI7IFwiY3Jvc3NcIiB8XVxuXG5sZXQgZGVmcyBmID1cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxkZWZzPkAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiPHBhdGggaWQ9XFxcInBsdXNcXFwiIGNsYXNzPVxcXCJwb2ludFxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiXCJcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiBkPVxcXCJNLTMuNSwwIGg3IE0wLC0zLjUgdjdcXFwiLz5ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCI8cGF0aCBpZD1cXFwiY3Jvc3NcXFwiIGNsYXNzPVxcXCJwb2ludFxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiXCJcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiIGQ9XFxcIk0tMy41LC0zLjUgTDMuNSwzLjUgTTMuNSwtMy41IEwtMy41LDMuNVxcXCIvPkAsXCJcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxjaXJjbGUgaWQ9XFxcInBvaW50XFxcIiBjbGFzcz1cXFwicG9pbnRcXFwiIHI9XFxcIjIuNVxcXCJcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiIHN0cm9rZT1cXFwibm9uZVxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+QCxcIiBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiPC9kZWZzPkAsQCxcIlxuXG5sZXQgbGVnZW5kIHcgZiBhID1cbiAgbGV0IHBwX2xpbmUgaScgZiBzID1cbiAgICBpZiBpJyA+IDAgdGhlbiAoXG4gICAgICBsZXQgaSA9IHByZWQgaScgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPjx0ZXh0IHg9XFxcIiVpXFxcIiB5PVxcXCIlaVxcXCI+JXM8L3RleHQ+QF1ALFwiICh3IC0gMTUpXG4gICAgICAgICAgKDEwICsgKGkgKiAxNSkpXG4gICAgICAgICAgc1xuICAgICAgaW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCI8dXNlIHhsaW5rOmhyZWY9XFxcIiMlc1xcXCIgc3R5bGU9XFxcImNvbG9yOiVzXFxcIiB4PVxcXCIlaVxcXCIgeT1cXFwiJWlcXFwiLz5cIlxuICAgICAgICBzdHlsZXMuKGknIG1vZCBBcnJheS5sZW5ndGggc3R5bGVzKVxuICAgICAgICBjb2xvcnMuKGknIG1vZCBBcnJheS5sZW5ndGggY29sb3JzKVxuICAgICAgICAodyAtIDcpXG4gICAgICAgICgxMCArIChpICogMTUpKVxuICAgIClcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+PGcgaWQ9XFxcImxlZ2VuZFxcXCI+QCwlYUBdQCw8L2c+QCxALFwiXG4gICAgKFBwLmFycmF5IFBwLmN1dCBwcF9saW5lKSBhXG5cbmxldCBnZXRfbGltaXRzIGwgPVxuICBsZXQgZHVtbXlfdmFsdWVzID0gMC4sIC0xLiwgMS4gaW5cbiAgbGV0IHJlYyBhdXggdF9tYXggdmFfbWluIHZhX21heCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgaWYgdmFfbWluID0gdmFfbWF4IHRoZW5cbiAgICAgICAgdF9tYXgsIHZhX21pbiAtLiAxLiwgdmFfbWF4ICsuIDEuXG4gICAgICBlbHNlXG4gICAgICAgIHRfbWF4LCBtaW4gdmFfbWluIDAuLCB2YV9tYXhcbiAgICB8IHZhIDo6IHEgLT5cbiAgICAgIGF1eFxuICAgICAgICAobWF4IChPcHRpb25fdXRpbC51bnNvbWUgMC4gKE5ici50b19mbG9hdCB2YS4oMCkpKSB0X21heClcbiAgICAgICAgKFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgKGZ1biBpIGEgeCAtPlxuICAgICAgICAgICAgIG1hdGNoIE5ici50b19mbG9hdCB4IHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgeCB3aGVuIGkgPD4gMCAtPiBtaW4gYSB4XG4gICAgICAgICAgICAgfCBfIC0+IGEpXG4gICAgICAgICAgIHZhX21pbiB2YSlcbiAgICAgICAgKFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgKGZ1biBpIGEgeCAtPlxuICAgICAgICAgICAgIG1hdGNoIE5ici50b19mbG9hdCB4IHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgeCB3aGVuIGkgPD4gMCAtPiBtYXggYSB4XG4gICAgICAgICAgICAgfCBfIC0+IGEpXG4gICAgICAgICAgIHZhX21heCB2YSlcbiAgICAgICAgcVxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBkdW1teV92YWx1ZXNcbiAgfCB2YSA6OiBfIHdoZW4gQXJyYXkubGVuZ3RoIHZhIDwgMiAtPiBkdW1teV92YWx1ZXNcbiAgfCBsIC0+IGF1eCAwLiBpbmZpbml0eSAwLiBsXG5cbmxldCBkcmF3X2luX2RhdGEgKCh0X21heCwgdmFfbWluLCB2YV9tYXgpLCAoemVyb193LCB6ZXJvX2gsIGRyYXdfdywgZHJhd19oKSkgPVxuICBsZXQgZGVsdGFfdmEgPSB2YV9tYXggLS4gdmFfbWluIGluXG4gIGxldCB6ZXJvX3cnID0gZmxvYXRfb2ZfaW50IHplcm9fdyBpblxuICBsZXQgemVyb19oJyA9IGZsb2F0X29mX2ludCB6ZXJvX2ggaW5cbiAgbGV0IGRyYXdfdycgPSBmbG9hdF9vZl9pbnQgZHJhd193IGluXG4gIGxldCBkcmF3X2gnID0gZmxvYXRfb2ZfaW50IGRyYXdfaCBpblxuICBmdW4gZiB4IHkgLT5cbiAgICBtYXRjaCBOYnIudG9fZmxvYXQgeSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHknIC0+XG4gICAgICBmXG4gICAgICAgICh6ZXJvX3cnXG4gICAgICAgICsuICgoT3B0aW9uX3V0aWwudW5zb21lIDAuIEBAIE5ici50b19mbG9hdCB4KSAqLiBkcmF3X3cnIC8uIHRfbWF4KSlcbiAgICAgICAgKHplcm9faCcgLS4gKCh5JyAtLiB2YV9taW4pICouIGRyYXdfaCcgLy4gZGVsdGFfdmEpKVxuXG5sZXQgZ3JhZHVhdGlvbl9zdGVwIGRyYXdfbCBtaW5fZ3JhZF9sIHZhX21pbiB2YV9tYXggPVxuICBsZXQgbmJyX2RlbHRhID0gdmFfbWF4IC0uIHZhX21pbiBpblxuICBsZXQgZGVsdGFfdmEgPVxuICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IG5icl9kZWx0YSB3aXRoXG4gICAgfCBGUF96ZXJvIC0+IDEuXG4gICAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgfCBGUF9pbmZpbml0ZSB8IEZQX25hbiAtPiBuYnJfZGVsdGFcbiAgaW5cbiAgbGV0IG5iX2dyYWQgPSBjZWlsIChmbG9hdCBkcmF3X2wgLy4gZmxvYXQgbWluX2dyYWRfbCkgaW5cbiAgbGV0IGV4YWN0X3N0ZXAgPSBkZWx0YV92YSAvLiBuYl9ncmFkIGluXG4gIGxldCBkZWx0YV9ncmFkID0gMTAuICoqIGxvZzEwIGV4YWN0X3N0ZXAgaW5cbiAgbGV0IHZhX21pbicgPSBkZWx0YV9ncmFkICouIGZsb29yICh2YV9taW4gLy4gZXhhY3Rfc3RlcCkgaW5cbiAgbGV0IHZhX21heCcgPVxuICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IG5icl9kZWx0YSB3aXRoXG4gICAgfCBGUF96ZXJvIC0+IHZhX21pbicgKy4gMS5cbiAgICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+XG4gICAgICBkZWx0YV9ncmFkICouIGNlaWwgKHZhX21heCAvLiBleGFjdF9zdGVwKVxuICBpblxuICB2YV9taW4nLCBpbnRfb2ZfZmxvYXQgbmJfZ3JhZCwgZGVsdGFfZ3JhZCwgdmFfbWF4J1xuXG5sZXQgYXhpcyAodywgaCkgKGJfb3AsIGJfdywgYl9oKSBmIGwgPVxuICBsZXQgdF9tYXgsIHZhX21pbiwgdmFfbWF4ID0gZ2V0X2xpbWl0cyBsIGluXG4gIGxldCBkYXRhX3cgPSB3IC0gKGJfb3AgKyBiX3cpIGluXG4gIGxldCBkYXRhX2ggPSBoIC0gKGJfb3AgKyBiX2gpIGluXG4gIGxldCBfLCBuYl93LCBncmFkX3csIHRfbWF4JyA9IGdyYWR1YXRpb25fc3RlcCBkYXRhX3cgYl93IDAuIHRfbWF4IGluXG4gIGxldCB2YV9taW4nLCBuYl9oLCBncmFkX2gsIHZhX21heCcgPVxuICAgIGdyYWR1YXRpb25fc3RlcCBkYXRhX2ggYl93IHZhX21pbiB2YV9tYXhcbiAgaW5cbiAgbGV0IGRyYXdfZnVuID1cbiAgICBkcmF3X2luX2RhdGEgKCh0X21heCcsIHZhX21pbicsIHZhX21heCcpLCAoYl93LCBoIC0gYl9oLCBkYXRhX3csIGRhdGFfaCkpXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8ZyBpZD1cXFwiYXhlc1xcXCI+QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj48ZyBpZD1cXFwiYXhpc192YVxcXCI+QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHRpdGxlPk9ic2VydmFibGUgdmFsdWVzPC90aXRsZT5ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPD48cGF0aCBkPVxcXCJNICVpLCVpIEwgJWksJWlcXFwiLz5AXUAsXCIgYl93IGJfb3AgYl93XG4gICAgICAoZGF0YV9oICsgYl9vcClcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBUb29scy5pdGVyaVxuICAgICAgKGZ1biBpIC0+XG4gICAgICAgIGxldCB2ID0gZ3JhZF9oICouIGZsb2F0IGkgaW5cbiAgICAgICAgZHJhd19mdW5cbiAgICAgICAgICAoZnVuIHggeSAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjx0ZXh0IHg9XFxcIiVmXFxcIiB5PVxcXCIlZlxcXCI+JS4zZzwvdGV4dD5ALFwiICh4IC0uIDguKVxuICAgICAgICAgICAgICAgIHkgdlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8bGluZSB4MT1cXFwiJWZcXFwiIHkxPVxcXCIlZlxcXCIgeDI9XFxcIiVmXFxcIiB5Mj1cXFwiJWZcXFwiLz5ALFwiXG4gICAgICAgICAgICAgICh4IC0uIDUuKSB5ICh4ICsuIDUuKSB5KVxuICAgICAgICAgIE5ici56ZXJvIChOYnIuRiB2KSlcbiAgICAgIChzdWNjIG5iX2gpXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAXTwvZz5ALEBbPGh2IDI+PGcgaWQ9XFxcImF4aXNfdFxcXCI+QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHRpdGxlPlRpbWUgKGFyYml0cmFyeSB1bml0KTwvdGl0bGU+QCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzw+PHBhdGggZD1cXFwiTSAlaSwlaSBMICVpLCVpXFxcIi8+QF1ALFwiIGJfdyAoaCAtIGJfaClcbiAgICAgICh3IC0gYl9vcCkgKGggLSBiX2gpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgVG9vbHMuaXRlcmlcbiAgICAgIChmdW4gaSAtPlxuICAgICAgICBsZXQgdiA9IGdyYWRfdyAqLiBmbG9hdCBpIGluXG4gICAgICAgIGRyYXdfZnVuXG4gICAgICAgICAgKGZ1biB4IHkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8dGV4dCB4PVxcXCIlZlxcXCIgeT1cXFwiJWZcXFwiPiUuM2c8L3RleHQ+QCxcIiB4XG4gICAgICAgICAgICAgICAgKHkgKy4gOC4pIHZcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPGxpbmUgeDE9XFxcIiVmXFxcIiB5MT1cXFwiJWZcXFwiIHgyPVxcXCIlZlxcXCIgeTI9XFxcIiVmXFxcIi8+QCxcIlxuICAgICAgICAgICAgICB4ICh5IC0uIDUuKSB4ICh5ICsuIDUuKSlcbiAgICAgICAgICAoTmJyLkYgdikgKE5ici5GIHZhX21pbicpKVxuICAgICAgKHN1Y2MgbmJfdylcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBdPC9nPkAsPC9nPkAsQCxcIiBpblxuICBkcmF3X2Z1blxuXG5sZXQgZGF0YSBkcmF3X2Z1biBsIGYgcCA9XG4gIGxldCBvbmVfcG9pbnQgcyB0IGkgZiB2YSA9XG4gICAgZHJhd19mdW5cbiAgICAgIChmdW4geCB5IC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPD48dXNlIHhsaW5rOmhyZWY9XFxcIiMlc1xcXCIgeD1cXFwiJWZcXFwiIHk9XFxcIiVmXFxcIj5ALFwiXG4gICAgICAgICAgICBzdHlsZXMuKGkgbW9kIEFycmF5Lmxlbmd0aCBzdHlsZXMpXG4gICAgICAgICAgICB4IHlcbiAgICAgICAgaW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjx0aXRsZT4lcyB0PSVhIHY9JWE8L3RpdGxlPkAsPC91c2U+QF1ALFwiIHNcbiAgICAgICAgICBOYnIucHJldHR5X3ByaW50IHQgTmJyLnByaW50IHZhKVxuICAgICAgdCB2YVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiPGcgaWQ9XFxcImRhdGFcXFwiPkAsJWE8L2c+QCxALFwiXG4gICAgKFBwLmFycmF5IFBwLmVtcHR5IChmdW4gaSBmIHMgLT5cbiAgICAgICAgIGlmIGkgPiAwIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgIFwiQFs8aHYgMj48ZyBpZD1cXFwiZGF0YV8laVxcXCIgc3R5bGU9XFxcImNvbG9yOiVzXFxcIj5ALCVhQF08L2c+QCxcIlxuICAgICAgICAgICAgIChwcmVkIGkpXG4gICAgICAgICAgICAgY29sb3JzLihpIG1vZCBBcnJheS5sZW5ndGggY29sb3JzKVxuICAgICAgICAgICAgIChQcC5saXN0IFBwLmVtcHR5IChmdW4gZiBlIC0+IG9uZV9wb2ludCBzIGUuKDApIGkgZiBlLihpKSkpXG4gICAgICAgICAgICAgcCkpXG4gICAgbFxuXG5sZXQgZHJhdyAoKHcsIGgpIGFzIHNpemUpIGJvcmRlciBmIHMgPVxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzw+PHN2Z0AgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIkAgXCJcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInhtbG5zOnhsaW5rPVxcXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXFxcIkAgXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIndpZHRoPVxcXCIlaVxcXCJAIGhlaWdodD1cXFwiJWlcXFwiPkBdQCxcIiB3IGggaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiPHRpdGxlPiVzPC90aXRsZT5ALDxkZXNjcj4lczwvZGVzY3I+QCxALFwiIHMudGl0bGUgcy5kZXNjclxuICBpblxuICBsZXQgKCkgPSBzdHlsZSBmIGluXG4gIGxldCAoKSA9IGRlZnMgZiBpblxuICBsZXQgZHJhd19mdW4gPSBheGlzIHNpemUgYm9yZGVyIGYgcy5wb2ludHMgaW5cbiAgbGV0ICgpID0gbGVnZW5kIHcgZiBzLmxlZ2VuZCBpblxuICBsZXQgKCkgPSBkYXRhIGRyYXdfZnVuIHMubGVnZW5kIGYgcy5wb2ludHMgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIjwvc3ZnPlwiXG5cbmxldCB0b19zdHJpbmcgPyh3aWR0aCA9IDgwMCkgcyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIGxldCBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgc2l6ZSA9IHdpZHRoLCBpbnRfb2ZfZmxvYXQgKGZsb2F0IHdpZHRoIC8uIHNxcnQgMi4pIGluXG4gIGxldCBib3JkZXIgPSAxMCwgNzAsIDI1IGluXG4gIGxldCAoKSA9IGRyYXcgc2l6ZSBib3JkZXIgZiBzIGluXG4gIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9uZXdsaW5lIGYgKCkgaW5cbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IHRvX2ZpbGUgcyA9XG4gIGxldCBmb3JtLCBjaGFuID0gbmV3X2ZpbGUgcy5maWxlIGluXG4gIGxldCBzaXplID0gODAwLCA2MDAgaW5cbiAgbGV0IGJvcmRlciA9IDEwLCA3MCwgMjUgaW5cbiAgbGV0ICgpID0gZHJhdyBzaXplIGJvcmRlciBmb3JtIHMgaW5cbiAgY2xvc2VfZmlsZSBmb3JtIGNoYW5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqRXhwZXJ0IG1vZGUgdmFsdWVzKilcbmxldCBkZWZhdWx0RXh0QXJyYXlTaXplID0gcmVmIDVcbmxldCBkZWZhdWx0R3JhcGhTaXplID0gcmVmIDVcbmxldCBkZWZhdWx0TGlmdFNldFNpemUgPSByZWYgNVxubGV0IGRlZmF1bHRIZWFwU2l6ZSA9IHJlZiA1XG5sZXQgZGVidWdfbW9kZU9uID0gcmVmIGZhbHNlXG5cbigqIGV4cGVydCBvcHRpb24gZm9yIHN0b3JpZXMgKilcblxuKCogTnVtYmVyIG9mIHBvdGVudGlhbCBzdGF0ZXMgdGhhdCBhcmUgcHV0IGluIHRoZSBjYWNoZSBwZXIgYmluZGluZyBzaXRlLCBzbyBhcyB0byBoYW5kbGVyIHdpdGggc2lkZSBlZmZlY3RzIGluIHN0b3JpZXMuIE5vbmUgLT4gVW5saW1pdGVkIGNhY2hlICopXG5cbigqKiBNZW1vcnkgKiopXG5sZXQgY2FjaGVfc2l6ZSA9IHJlZiAoTm9uZSA6IGludCBvcHRpb24pXG5cbigqIEN1dCBjb25jdXJyZW50IGV2ZW50cyAoZm9yIGFsbCBvYnNlcnZhYmxlcykgYmVmb3JlIGdlbmVyYXRpbmcgdGhlIGJsYWNrYm9hcmQgKilcblxuKCoqIFByZWNvbXB1dGF0aW9uICoqKVxubGV0IGRvX2dsb2JhbF9jdXQgPSB0cnVlXG5cbigqIEN1dCBwc2V1ZG8taW52ZXJzZSBldmVudHMgKilcbmxldCBjdXRfcHNldWRvX2ludmVyc2VfZXZlbnQgPSB0cnVlXG5cbigqIEN1dCBjb25jdXJyZW50IGV2ZW50cyAoZm9yIHRoZSBjdXJyZW50IG9ic2VydmFsZSkgYmVmb3JlIGdlbmVyYXRpbmcgdGhlIGJsYWNrYm9hcmQgKilcbmxldCBkb19sb2NhbF9jdXQgPSB0cnVlXG5cbigqIEN1dCBzZXBhcmFibGUgY29tcG9uZW50cyAqKVxubGV0IGRvX2RldGVjdF9zZXBhcmFibGVfY29tcG9uZW50cyA9IHRydWVcblxuKCogV2hlbmV2ZXIgd2UgZG8gbm90IGtub3cgd2hldGhlciBhbiBldmVudCBoYXMgdG8gYmUgc2VsZWN0ZWQgb3IsIG5vdCwgY2hlY2sgd2hldGhlciB0aGlzIGlzIG5vdCB0aGUgbGFzdCBvbmUgdGhhdCBjYW4gcGFyZm9ybSBhIHJlcXVlc3RlZCBhY3Rpb24gKilcblxuKCoqIFByb3BhZ2F0aW9uIGhldXJpc3RpY3MgKiopXG5sZXQgbG9va191cF9mb3JfYmV0dGVyX2N1dCA9IHRydWVcblxuKCogV2hlbmV2ZXIgYW4gZXZlbnQgaXMgcmVtb3ZlZCwgY2hlY2tlZCB3aGV0aGVyIHRoZXJlIGlzIG5vdCBvbmx5IG9uZSBsZWZ0IHRvIHBlcmZvcm0gYSByZXF1aXJlZCBhY3Rpb24gKilcbmxldCBsb29rX2Rvd25fZm9yX2JldHRlcl9jdXQgPSB0cnVlXG5sZXQgbG9nX251bWJlcl9vZl9jYXVzYWxfZmxvd3MgPSB0cnVlXG5cbigqVXNlciBkZWZpbmFibGUgdmFsdWVzKilcbmxldCB0aW1lX2luZGVwZW5kZW50ID0gcmVmIGZhbHNlXG5sZXQgYmxhY2tsaXN0X2V2ZW50cyA9IHJlZiBmYWxzZVxuXG4oKlhMUyBvdXRwdXQgZm9yIHRoZSBncmlkcyBkdXJpbmcgY29tcHJlc3Npb24qKVxubGV0IGR1bXBfZ3JpZF9iZWZvcmVfd2Vha19jb21wcmVzc2lvbiA9IGZhbHNlXG5sZXQgZHVtcF9ncmlkX2JlZm9yZV9zdHJvbmdfY29tcHJlc3Npb24gPSBmYWxzZVxubGV0IGR1bXBfZ3JpZF9hZnRlcl9icmFuY2hpbmdfZHVyaW5nX3dlYWtfY29tcHJlc3Npb24gPSBmYWxzZVxubGV0IGR1bXBfZ3JpZF9hZnRlcl9icmFuY2hpbmdfZHVyaW5nX3N0cm9uZ19jb21wcmVzc2lvbiA9IGZhbHNlXG5sZXQgeGxzd2Vha0ZpbGVOYW1lID0gXCJncmlkX3dlYWtfY29tcHJlc3Npb25cIlxubGV0IHhsc3N0cm9uZ0ZpbGVOYW1lID0gXCJncmlkX3N0cm9uZ19jb21wcmVzc2lvblwiXG5sZXQgZ2V0X2NhY2hlX3NpemUgKCkgPSAhY2FjaGVfc2l6ZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IHByaW50X2Rlc2MgOiAoc3RyaW5nLCBvdXRfY2hhbm5lbCAqIEZvcm1hdC5mb3JtYXR0ZXIpIEhhc2h0YmwudCA9XG4gIEhhc2h0YmwuY3JlYXRlIDJcblxubGV0IHNwZWNpZXNfZGVzYyA6IChzdHJpbmcsIG91dF9jaGFubmVsICogRm9ybWF0LmZvcm1hdHRlcikgSGFzaHRibC50ID1cbiAgSGFzaHRibC5jcmVhdGUgMlxuXG5sZXQgdXVpZCA9IFJhbmRvbS5TdGF0ZS5iaXRzIChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkpXG5cbmxldCBnZXRfZGVzYyBmaWxlIHRibCA9XG4gIHRyeSBzbmQgKEhhc2h0YmwuZmluZCB0YmwgZmlsZSlcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgZF9jaGFuID0gS2FwcGFfZmlsZXMub3Blbl9vdXQgZmlsZSBpblxuICAgIGxldCBkID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBkX2NoYW4gaW5cbiAgICBIYXNodGJsLmFkZCB0YmwgZmlsZSAoZF9jaGFuLCBkKTtcbiAgICBkXG5cbmxldCBjbG9zZV9kZXNjICgpID1cbiAgSGFzaHRibC5pdGVyIChmdW4gX2ZpbGUgKGRfY2hhbiwgX2QpIC0+IGNsb3NlX291dCBkX2NoYW4pIHByaW50X2Rlc2M7XG4gIEhhc2h0YmwuaXRlciAoZnVuIF9maWxlIChkX2NoYW4sIF9kKSAtPiBjbG9zZV9vdXQgZF9jaGFuKSBzcGVjaWVzX2Rlc2NcblxubGV0IG91dHB1dF9mbHV4IGRpbl9uYW1lIGZsdXggPVxuICBLYXBwYV9maWxlcy53aXRoX2ZsdXggZGluX25hbWVcbiAgICAoaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IGRpbl9uYW1lIFwiLmh0bWxcIiB0aGVuXG4gICAgICAgS2FwcGFfZmlsZXMud3JhcF9mb3JtYXR0ZXIgKGZ1biBmIC0+IERhdGEucHJpbnRfaHRtbF9kaW4gZiBmbHV4KVxuICAgICBlbHNlIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBkaW5fbmFtZSBcIi5qc29uXCIgdGhlblxuICAgICAgIGZ1biBkIC0+XG4gICAgIEpzb25VdGlsLndyaXRlX3RvX2NoYW5uZWwgRGF0YS53cml0ZV9kaW4gZCBmbHV4XG4gICAgIGVsc2VcbiAgICAgICBLYXBwYV9maWxlcy53cmFwX2Zvcm1hdHRlciAoZnVuIGYgLT4gRGF0YS5wcmludF9kb3RfZGluIH51dWlkIGYgZmx1eCkpXG5cbmxldCBhY3RzRGVzY3IgPSByZWYgTm9uZVxubGV0IGVtcHR5QWN0cyA9IHJlZiB0cnVlXG5cbmxldCBpbml0X2FjdGl2aXRpZXMgZW52ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBzIC0+XG4gICAgbGV0IG5vQ291bnRlcnMgPSAhUGFyYW1ldGVyLmRlYnVnX21vZGVPbiBpblxuICAgIGxldCBkZXNjID0gS2FwcGFfZmlsZXMub3Blbl9vdXQgcyBpblxuICAgIGxldCBmb3JtID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBkZXNjIGluXG4gICAgbGV0IG5iX3IgPSBNb2RlbC5uYl9zeW50YWN0aWNfcnVsZXMgZW52IGluXG4gICAgbGV0ICgpID0gYWN0c0Rlc2NyIDo9IFNvbWUgKGRlc2MsIGZvcm0sIG5iX3IpIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZm9ybSBcIkBbPHY+e0AscnVsZXM6QFtbXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgVG9vbHMuaXRlcmlcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm9ybSBcIlxcXCIlYVxcXCIsQCxcIlxuICAgICAgICAgICAgKE1vZGVsLnByaW50X2FzdF9ydWxlIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgICAgICAgICB4KVxuICAgICAgICBuYl9yXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwiXFxcIiVhXFxcIl1AXSxALGRhdGE6W0AsXCJcbiAgICAgIChNb2RlbC5wcmludF9hc3RfcnVsZSB+bm9Db3VudGVycyB+ZW52KVxuICAgICAgbmJfclxuXG5sZXQgY2xvc2VfYWN0aXZpdGllcyAoKSA9XG4gIG1hdGNoICFhY3RzRGVzY3Igd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIChjLCBmLCBfKSAtPlxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJALF19QF1ALlwiIGluXG4gICAgY2xvc2Vfb3V0IGNcblxubGV0IG91dHB1dF9hY3Rpdml0aWVzIHIgZmx1eCA9XG4gIG1hdGNoICFhY3RzRGVzY3Igd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIChfLCBmLCBsYXN0KSAtPlxuICAgIGxldCAoKSA9XG4gICAgICBpZiAhZW1wdHlBY3RzIHRoZW5cbiAgICAgICAgZW1wdHlBY3RzIDo9IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIsQCxcIlxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbWyVpXCIgciBpblxuICAgIGxldCAoKSA9XG4gICAgICBmb3IgaSA9IDAgdG8gbGFzdCBkb1xuICAgICAgICBsZXQgaywgaycgPSB0cnkgTGlzdC5hc3NvYyBpIGZsdXggd2l0aCBOb3RfZm91bmQgLT4gMC4sIDAuIGluXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIsJWZcIiAoaycgLS4gaylcbiAgICAgIGRvbmVcbiAgICBpblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJdQF1cIlxuXG50eXBlIGZkID0geyBkZXNjOiBvdXRfY2hhbm5lbDsgZm9ybTogRm9ybWF0LmZvcm1hdHRlcjsgaXNfdHN2OiBib29sIH1cblxudHlwZSBmb3JtYXQgPVxuICB8IFN0YW5kQnkgb2YgKHN0cmluZyAqIHN0cmluZyAqIHN0cmluZyBhcnJheSlcbiAgfCBSYXcgb2YgZmRcbiAgfCBTdmcgb2YgUHBfc3ZnLnN0b3JlXG5cbmxldCBwbG90RGVzY3IgPSByZWYgTm9uZVxuXG5sZXQgY2xvc2VfcGxvdCAoKSA9XG4gIG1hdGNoICFwbG90RGVzY3Igd2l0aFxuICB8IE5vbmUgfCBTb21lIChTdGFuZEJ5IF8pIC0+ICgpXG4gIHwgU29tZSAoUmF3IHBsb3QpIC0+IGNsb3NlX291dCBwbG90LmRlc2NcbiAgfCBTb21lIChTdmcgcykgLT4gUHBfc3ZnLnRvX2ZpbGUgc1xuXG5sZXQgdHJhY2VEZXNjciA9IHJlZiBOb25lXG5sZXQgdHJhY2VOb3RFbXB0eSA9IHJlZiBmYWxzZVxuXG5sZXQgY2xvc2VfdHJhY2UgKCkgPVxuICBtYXRjaCAhdHJhY2VEZXNjciB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZGVzYyAtPlxuICAgIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBcIl1cXG59XFxuXCIgaW5cbiAgICBsZXQgKCkgPSBjbG9zZV9vdXQgZGVzYyBpblxuICAgIHRyYWNlRGVzY3IgOj0gTm9uZVxuXG5sZXQgaW5pdGlhbGl6ZSBhY3Rpdml0aWVzX2ZpbGUgdHJhY2VfZmlsZSBwbG90UGFjayBlbnYgPVxuICBsZXQgKCkgPVxuICAgIG1hdGNoIHRyYWNlX2ZpbGUgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBzIC0+XG4gICAgICBsZXQgZGVzYyA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0IHMgaW5cbiAgICAgIGxldCAoKSA9IFRyYWNlLmluaXRfdHJhY2VfZmlsZSB+dXVpZCBlbnYgZGVzYyBpblxuICAgICAgdHJhY2VEZXNjciA6PSBTb21lIGRlc2NcbiAgaW5cbiAgbGV0ICgpID0gaW5pdF9hY3Rpdml0aWVzIGVudiBhY3Rpdml0aWVzX2ZpbGUgaW5cbiAgbWF0Y2ggcGxvdFBhY2sgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHBhY2sgLT4gcGxvdERlc2NyIDo9IFNvbWUgKFN0YW5kQnkgcGFjaylcblxubGV0IGxhdW5jaF9wbG90IChmaWxlbmFtZSwgdGl0bGUsIGhlYWQpID1cbiAgbGV0IGZvcm1hdCA9XG4gICAgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IGZpbGVuYW1lIFwiLnN2Z1wiIHRoZW5cbiAgICAgIFN2Z1xuICAgICAgICB7XG4gICAgICAgICAgUHBfc3ZnLmZpbGUgPSBmaWxlbmFtZTtcbiAgICAgICAgICBQcF9zdmcudGl0bGU7XG4gICAgICAgICAgUHBfc3ZnLmRlc2NyID0gXCJcXFwidXVpZFxcXCIgOiBcXFwiXCIgXiBzdHJpbmdfb2ZfaW50IHV1aWQgXiBcIlxcXCJcIjtcbiAgICAgICAgICBQcF9zdmcubGVnZW5kID0gaGVhZDtcbiAgICAgICAgICBQcF9zdmcucG9pbnRzID0gW107XG4gICAgICAgIH1cbiAgICBlbHNlIChcbiAgICAgIGxldCBkX2NoYW4gPSBLYXBwYV9maWxlcy5vcGVuX291dCBmaWxlbmFtZSBpblxuICAgICAgbGV0IGQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGRfY2hhbiBpblxuICAgICAgbGV0IGlzX3RzdiA9IEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmaWxlbmFtZSBcIi50c3ZcIiBpblxuICAgICAgbGV0ICgpID0gaWYgbm90IGlzX3RzdiB0aGVuIEZvcm1hdC5mcHJpbnRmIGQgXCIjICVzQC5cIiB0aXRsZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgbm90IGlzX3RzdiB0aGVuIEZvcm1hdC5mcHJpbnRmIGQgXCIjIFxcXCJ1dWlkXFxcIiA6IFxcXCIlaVxcXCJALlwiIHV1aWRcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBEYXRhLnByaW50X3Bsb3RfbGVnZW5kIH5pc190c3YgZCBoZWFkIGluXG4gICAgICBSYXcgeyBkZXNjID0gZF9jaGFuOyBmb3JtID0gZDsgaXNfdHN2IH1cbiAgICApXG4gIGluXG4gIHBsb3REZXNjciA6PSBTb21lIGZvcm1hdFxuXG5sZXQgcmVjIHBsb3Rfbm93IGwgPVxuICBtYXRjaCAhcGxvdERlc2NyIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgKFN0YW5kQnkgcCkgLT5cbiAgICBsZXQgKCkgPSBsYXVuY2hfcGxvdCBwIGluXG4gICAgcGxvdF9ub3cgbFxuICB8IFNvbWUgKFJhdyBmZCkgLT5cbiAgICBEYXRhLnByaW50X3Bsb3RfbGluZSB+aXNfdHN2OmZkLmlzX3RzdiBOYnIucHJpbnRfb3B0aW9uIGZkLmZvcm0gbFxuICB8IFNvbWUgKFN2ZyBzKSAtPiBzLlBwX3N2Zy5wb2ludHMgPC0gbCA6OiBzLlBwX3N2Zy5wb2ludHNcblxubGV0IHNuYXBzaG90IGZpbGUgcyA9XG4gIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmaWxlIFwiLmRvdFwiIHRoZW5cbiAgICBLYXBwYV9maWxlcy53aXRoX3NuYXBzaG90IGZpbGUgXCIuZG90XCIgcy5EYXRhLnNuYXBzaG90X2V2ZW50XG4gICAgICAoS2FwcGFfZmlsZXMud3JhcF9mb3JtYXR0ZXIgKGZ1biBmIC0+IERhdGEucHJpbnRfZG90X3NuYXBzaG90IH51dWlkIGYgcykpXG4gIGVsc2UgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IGZpbGUgXCIuanNvblwiIHRoZW5cbiAgICBLYXBwYV9maWxlcy53aXRoX3NuYXBzaG90IGZpbGUgXCIuanNvblwiIHMuRGF0YS5zbmFwc2hvdF9ldmVudCAoZnVuIGQgLT5cbiAgICAgICAgSnNvblV0aWwud3JpdGVfdG9fY2hhbm5lbCBEYXRhLndyaXRlX3NuYXBzaG90IGQgcylcbiAgZWxzZVxuICAgIEthcHBhX2ZpbGVzLndpdGhfc25hcHNob3QgZmlsZSBcIi5rYVwiIHMuRGF0YS5zbmFwc2hvdF9ldmVudFxuICAgICAgKEthcHBhX2ZpbGVzLndyYXBfZm9ybWF0dGVyIChmdW4gZiAtPiBEYXRhLnByaW50X3NuYXBzaG90IH51dWlkIGYgcykpXG5cbmxldCBwcmludF9zcGVjaWVzIHRpbWUgZiBtaXh0dXJlID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVnOiBAWzxoPiVhQF1ALlwiIHRpbWUgVXNlcl9ncmFwaC5wcmludF9jYyBtaXh0dXJlXG5cbmxldCB3YXJuaW5nX2J1ZmZlciA6IChMb2MudCBvcHRpb24gKiAoRm9ybWF0LmZvcm1hdHRlciAtPiB1bml0KSkgbGlzdCByZWYgPVxuICByZWYgW11cblxubGV0IGdvID0gZnVuY3Rpb25cbiAgfCBEYXRhLlNuYXBzaG90IChmLCBzKSAtPiBzbmFwc2hvdCBmIHNcbiAgfCBEYXRhLkRJTiAobiwgZikgLT4gb3V0cHV0X2ZsdXggbiBmXG4gIHwgRGF0YS5EZWx0YUFjdGl2aXRpZXMgKHIsIGZsdXgpIC0+IG91dHB1dF9hY3Rpdml0aWVzIHIgZmx1eFxuICB8IERhdGEuUGxvdCB4IC0+IHBsb3Rfbm93IHhcbiAgfCBEYXRhLlByaW50IHAgLT5cbiAgICBsZXQgZGVzYyA9XG4gICAgICBtYXRjaCBwLkRhdGEuZmlsZV9saW5lX25hbWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgc3Rkb3V0XG4gICAgICB8IFNvbWUgZmlsZSAtPiBnZXRfZGVzYyBmaWxlIHByaW50X2Rlc2NcbiAgICBpblxuICAgIEZvcm1hdC5mcHJpbnRmIGRlc2MgXCIlc0AuXCIgcC5EYXRhLmZpbGVfbGluZV90ZXh0XG4gIHwgRGF0YS5Mb2cgcyAtPiBGb3JtYXQucHJpbnRmIFwiJXNALlwiIHNcbiAgfCBEYXRhLldhcm5pbmcgKHBvcywgbXNnKSAtPiB3YXJuaW5nX2J1ZmZlciA6PSAocG9zLCBtc2cpIDo6ICF3YXJuaW5nX2J1ZmZlclxuICB8IERhdGEuVHJhY2VTdGVwIHN0ZXAgLT5cbiAgICAobWF0Y2ggIXRyYWNlRGVzY3Igd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBkIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiAhdHJhY2VOb3RFbXB0eSB0aGVuXG4gICAgICAgICAgb3V0cHV0X2NoYXIgZCAnLCdcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRyYWNlTm90RW1wdHkgOj0gdHJ1ZVxuICAgICAgaW5cbiAgICAgIEpzb25VdGlsLndyaXRlX3RvX2NoYW5uZWwgVHJhY2Uud3JpdGVfc3RlcCBkIHN0ZXApXG4gIHwgRGF0YS5TcGVjaWVzIChmaWxlLCB0aW1lLCBtaXh0dXJlKSAtPlxuICAgIGxldCBkZXNjID0gZ2V0X2Rlc2MgZmlsZSBzcGVjaWVzX2Rlc2MgaW5cbiAgICBwcmludF9zcGVjaWVzIHRpbWUgZGVzYyBtaXh0dXJlXG5cbmxldCBpbnB1dHNEZXNjID0gcmVmIE5vbmVcblxubGV0IGZsdXNoX3dhcm5pbmcgKCkgPVxuICBsZXQgbCA9IExpc3QucmV2ICF3YXJuaW5nX2J1ZmZlciBpblxuICBsZXQgKCkgPSB3YXJuaW5nX2J1ZmZlciA6PSBbXSBpblxuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChwb3MsIG1zZykgLT4gRGF0YS5wcmludF93YXJuaW5nID9wb3MgRm9ybWF0LmVycl9mb3JtYXR0ZXIgbXNnKVxuICAgIGxcblxubGV0IGNsb3NlX2lucHV0ID9ldmVudCAoKSA9XG4gIG1hdGNoICFpbnB1dHNEZXNjIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBpbnB1dHMgLT5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggZXZlbnQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgZXZlbnQgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGZcbiAgICAgICAgICAoRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBpbnB1dHMpXG4gICAgICAgICAgXCJALiUlbW9kOiBbRV0gPSAlaSBkbyAkU1RPUDtALlwiIGV2ZW50XG4gICAgaW5cbiAgICBjbG9zZV9vdXQgaW5wdXRzXG5cbmxldCBjbG9zZSA/ZXZlbnQgKCkgPVxuICBsZXQgKCkgPSBjbG9zZV9wbG90ICgpIGluXG4gIGxldCAoKSA9IGNsb3NlX3RyYWNlICgpIGluXG4gIGxldCAoKSA9IGNsb3NlX2FjdGl2aXRpZXMgKCkgaW5cbiAgbGV0ICgpID0gZmx1c2hfd2FybmluZyAoKSBpblxuICBsZXQgKCkgPSBjbG9zZV9pbnB1dCA/ZXZlbnQgKCkgaW5cbiAgY2xvc2VfZGVzYyAoKVxuXG5sZXQgaW5pdGlhbF9pbnB1dHMgY29uZiBlbnYgaW5pdCB+ZmlsZW5hbWUgPVxuICBsZXQgaW5wdXRzID0gS2FwcGFfZmlsZXMub3Blbl9vdXRfZnJlc2ggZmlsZW5hbWUgW10gXCJcIiBcIi5rYVwiIGluXG4gIGxldCBpbnB1dHNfZm9ybSA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgaW5wdXRzIGluXG4gIGxldCAoKSA9IERhdGEucHJpbnRfaW5pdGlhbF9pbnB1dHMgfnV1aWQgY29uZiBlbnYgaW5wdXRzX2Zvcm0gaW5pdCBpblxuICBpbnB1dHNEZXNjIDo9IFNvbWUgaW5wdXRzXG5cbmxldCBpbnB1dF9tb2RpZmljYXRpb25zIGVudiBldmVudCBtb2RzID1cbiAgbWF0Y2ggIWlucHV0c0Rlc2Mgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGlucHV0cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmXG4gICAgICAoRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBpbnB1dHMpXG4gICAgICBcIiUlbW9kOiBbRV0gPSAlaSBkbyAlYUAuXCIgZXZlbnRcbiAgICAgIChQcC5saXN0IH50cmFpbGluZzpQcC5jb2xvbiBQcC5jb2xvblxuICAgICAgICAgKEthcHBhX3ByaW50ZXIubW9kaWZpY2F0aW9uIH5ub0NvdW50ZXJzOiFQYXJhbWV0ZXIuZGVidWdfbW9kZU9uIH5lbnYpKVxuICAgICAgbW9kc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBkaXJlY3RpdmVfdW5pdCA9IFRpbWUgfCBFdmVudFxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgYWxnX3Zhcl9vdmVyd3JpdGU6IChzdHJpbmcgKiBOYnIudCkgbGlzdDtcbiAgbXV0YWJsZSBtYXJzaGFsaXplZEluRmlsZTogc3RyaW5nO1xuICBtdXRhYmxlIGluaXRpYWxNaXg6IHN0cmluZyBvcHRpb247XG4gIG11dGFibGUgcmVzY2FsZTogZmxvYXQgb3B0aW9uO1xuICBtdXRhYmxlIHNlZWRWYWx1ZTogaW50IG9wdGlvbjtcbiAgbXV0YWJsZSB1bml0OiBkaXJlY3RpdmVfdW5pdDtcbiAgbXV0YWJsZSBtYXJzaGFsaXplT3V0RmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgbXV0YWJsZSBkb21haW5PdXRwdXRGaWxlOiBzdHJpbmcgb3B0aW9uO1xuICBtdXRhYmxlIHRyYWNlRmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgbXV0YWJsZSBsb2dGaWxlOiBzdHJpbmcgb3B0aW9uO1xuICBtdXRhYmxlIGNvbXBpbGVfbW9kZTogYm9vbDtcbiAgbXV0YWJsZSBzaGFyaW5nOiBQYXR0ZXJuLnNoYXJpbmdfbGV2ZWw7XG4gIG11dGFibGUgc2hvd0VmZmljaWVuY3k6IGJvb2w7XG4gIG11dGFibGUgdGltZUluZGVwZW5kZW50OiBib29sO1xufVxuXG5sZXQgZGVmYXVsdCA6IHQgPVxuICB7XG4gICAgYWxnX3Zhcl9vdmVyd3JpdGUgPSBbXTtcbiAgICByZXNjYWxlID0gTm9uZTtcbiAgICBtYXJzaGFsaXplZEluRmlsZSA9IFwiXCI7XG4gICAgaW5pdGlhbE1peCA9IE5vbmU7XG4gICAgc2VlZFZhbHVlID0gTm9uZTtcbiAgICB1bml0ID0gVGltZTtcbiAgICBtYXJzaGFsaXplT3V0RmlsZSA9IE5vbmU7XG4gICAgZG9tYWluT3V0cHV0RmlsZSA9IE5vbmU7XG4gICAgdHJhY2VGaWxlID0gTm9uZTtcbiAgICBsb2dGaWxlID0gU29tZSBcImlucHV0c1wiO1xuICAgIGNvbXBpbGVfbW9kZSA9IGZhbHNlO1xuICAgIHNoYXJpbmcgPSBQYXR0ZXJuLkNvbXBhdGlibGVfcGF0dGVybnM7XG4gICAgc2hvd0VmZmljaWVuY3kgPSBmYWxzZTtcbiAgICB0aW1lSW5kZXBlbmRlbnQgPSBmYWxzZTtcbiAgfVxuXG5sZXQgb3B0aW9ucyAodCA6IHQpIDogKHN0cmluZyAqIEFyZy5zcGVjICogc3RyaW5nKSBsaXN0ID1cbiAgW1xuICAgICggXCItbWl4dHVyZVwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIGZpYyAtPiB0LmluaXRpYWxNaXggPC0gU29tZSBmaWMpLFxuICAgICAgXCJUYWtlIHRoZSBpbml0aWFsIHN0YXRlIGZyb20gdGhpcyBmaWxlIChpZ25vcmUgJWluaXQgZnJvbSBvdGhlciBmaWxlcylcIiApO1xuICAgICggXCItdmFyXCIsXG4gICAgICBBcmcuVHVwbGVcbiAgICAgICAgKGxldCB0bXBfdmFyX25hbWUgPSByZWYgXCJcIiBpblxuICAgICAgICAgW1xuICAgICAgICAgICBBcmcuU3RyaW5nIChmdW4gbmFtZSAtPiB0bXBfdmFyX25hbWUgOj0gbmFtZSk7XG4gICAgICAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgICAgICAoZnVuIHZhcl92YWwgLT5cbiAgICAgICAgICAgICAgIHQuYWxnX3Zhcl9vdmVyd3JpdGUgPC1cbiAgICAgICAgICAgICAgICAgKCAhdG1wX3Zhcl9uYW1lLFxuICAgICAgICAgICAgICAgICAgIHRyeSBOYnIub2Zfc3RyaW5nIHZhcl92YWxcbiAgICAgICAgICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgKEFyZy5CYWQgKFwiXFxcIlwiIF4gdmFyX3ZhbCBeIFwiXFxcIiBpcyBub3QgYSB2YWxpZCB2YWx1ZVwiKSkgKVxuICAgICAgICAgICAgICAgICA6OiB0LmFsZ192YXJfb3ZlcndyaXRlKTtcbiAgICAgICAgIF0pLFxuICAgICAgXCJTZXQgYSB2YXJpYWJsZSB0byBhIGdpdmVuIHZhbHVlXCIgKTtcbiAgICAoIFwiLWxvYWQtc2ltXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gZmlsZSAtPiB0Lm1hcnNoYWxpemVkSW5GaWxlIDwtIGZpbGUpLFxuICAgICAgXCJsb2FkIHNpbXVsYXRpb24gcGFja2FnZSBpbnN0ZWFkIG9mIGthcHBhIGZpbGVzXCIgKTtcbiAgICAoIFwiLXJlc2NhbGVcIixcbiAgICAgIEFyZy5GbG9hdCAoZnVuIGkgLT4gdC5yZXNjYWxlIDwtIFNvbWUgaSksXG4gICAgICBcIkFwcGx5IHJlc2NhbGluZyBmYWN0b3IgdG8gaW5pdGlhbCBjb25kaXRpb25cIiApO1xuICAgICggXCItdVwiLFxuICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBcInRpbWVcIiB8IFwiVGltZVwiIHwgXCJ0XCIgLT4gdC51bml0IDwtIFRpbWVcbiAgICAgICAgfCBcImV2ZW50XCIgfCBcImV2ZW50c1wiIHwgXCJlXCIgfCBcIkV2ZW50XCIgfCBcIkV2ZW50c1wiIC0+IHQudW5pdCA8LSBFdmVudFxuICAgICAgICB8IHMgLT4gcmFpc2UgKEFyZy5CYWQgKFwiVW5yZWNvZ25pemVkIHVuaXQ6IFwiIF4gcykpKSxcbiAgICAgIFwidW5pdCAodGltZS9ldmVudCkgaW4gd2hpY2ggbGltaXQgYW5kIHBsb3QgcGVyaW9kIGFyZSBzcGVjaWZpZWRcIiApO1xuICAgICggXCItZVwiLFxuICAgICAgQXJnLkludFxuICAgICAgICAoZnVuIGUgLT5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEFyZy5CYWRcbiAgICAgICAgICAgICAgIChcIk9wdGlvbiAnLWUnIGhhcyBiZWVuIHJlcGxhY2UgYnkgJy11IGV2ZW50IC1sIFwiXG4gICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBlIF4gXCInXCIpKSksXG4gICAgICBcIkRlcHJlY2F0ZWQgb3B0aW9uXCIgKTtcbiAgICAoIFwiLW1ha2Utc2ltXCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW4gbWFyc2hhbGl6ZU91dEZpbGUgLT4gdC5tYXJzaGFsaXplT3V0RmlsZSA8LSBTb21lIG1hcnNoYWxpemVPdXRGaWxlKSxcbiAgICAgIFwic2F2ZSBrYXBwYSBmaWxlcyBhcyBhIHNpbXVsYXRpb24gcGFja2FnZVwiICk7XG4gICAgKCBcIi1kdW1wLWNjXCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW4gZG9tYWluT3V0cHV0RmlsZSAtPiB0LmRvbWFpbk91dHB1dEZpbGUgPC0gU29tZSBkb21haW5PdXRwdXRGaWxlKSxcbiAgICAgIFwiZmlsZSBuYW1lIGZvciBkdW1waW5nIHRoZSBkb21haW4gb2Ygb2JzZXJ2YWJsZXNcIiApO1xuICAgICggXCItdHJhY2VcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biB0cmFjZUZpbGUgLT4gdC50cmFjZUZpbGUgPC0gU29tZSB0cmFjZUZpbGUpLFxuICAgICAgXCJmaWxlIG5hbWUgZm9yIGR1bXBpbmcgdGhlIHNpbXVsYXRpb24gdHJhY2VcIiApO1xuICAgICggXCItLXRpbWUtaW5kZXBlbmRlbnRcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gdC50aW1lSW5kZXBlbmRlbnQgPC0gdHJ1ZSksXG4gICAgICBcIkRpc2FibGUgdGhlIHVzZSBvZiB0aW1lIGlzIHN0b3J5IGhldXJpdGljcyAoZm9yIHRlc3Qgc3VpdGUpXCIgKTtcbiAgICAoIFwiLXNlZWRcIixcbiAgICAgIEFyZy5JbnQgKGZ1biBpIC0+IHQuc2VlZFZhbHVlIDwtIFNvbWUgaSksXG4gICAgICBcIlNlZWQgZm9yIHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvclwiICk7XG4gICAgKCBcIi0tcHJpbnQtZWZmaWNpZW5jeVwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiB0LnNob3dFZmZpY2llbmN5IDwtIHRydWUpLFxuICAgICAgXCJLYVNpbSB0ZWxscyBob3cgZmFzdCBpdCBydW5zXCIgKTtcbiAgICAoIFwiLXNoYXJpbmdcIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgXCJub1wiIHwgXCJub25lXCIgfCBcIk5vbmVcIiAtPiB0LnNoYXJpbmcgPC0gUGF0dGVybi5Ob19zaGFyaW5nXG4gICAgICAgIHwgXCJDb21wYXRpYmxlXCIgLT4gdC5zaGFyaW5nIDwtIFBhdHRlcm4uTWF4X3NoYXJpbmdcbiAgICAgICAgfCBcIm1heFwiIHwgXCJNYXhcIiAtPiB0LnNoYXJpbmcgPC0gUGF0dGVybi5NYXhfc2hhcmluZ1xuICAgICAgICB8IHMgLT4gcmFpc2UgKEFyZy5CYWQgKFwiVW5yZWNvZ25pemVkIHNoYXJpbmcgbGV2ZWw6IFwiIF4gcykpKSxcbiAgICAgIFwiTGV2ZWwgb2Ygc2hhcmluZyBjb21wdXRlZCBiZXR3ZWVuIHBhdHRlcm5zIGR1cmluZyBpbml0aWFsaXphdGlvbiBcXFxuICAgICAgIChOb25lL0NvbXBhdGlibGUvTWF4KVwiICk7XG4gICAgKCBcIi0tY29tcGlsZVwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiB0LmNvbXBpbGVfbW9kZSA8LSB0cnVlKSxcbiAgICAgIFwiRGlzcGxheSBydWxlIGNvbXBpbGF0aW9uIGFzIGFjdGlvbiBsaXN0XCIgKTtcbiAgICAoIFwiLWxvZ1wiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIGxvZ0ZpbGUgLT4gdC5sb2dGaWxlIDwtIFNvbWUgbG9nRmlsZSksXG4gICAgICBcImZpbGUgbmFtZSBvZiB0aGUgZmlsZSB0byByZWdlbmVyYXRlIHRoZSBleGFjdCBzYW1lIHNpbXVsYXRpb25cIiApO1xuICAgICggXCItLW5vLWxvZ1wiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiB0LmxvZ0ZpbGUgPC0gTm9uZSksXG4gICAgICBcIkRvIG5vdCBnZW5lcmF0ZSBhIGZpbGUgdG8gcmVkbyB0aGUgZXhhY3Qgc2FtZSBzaW11bGF0aW9uXCIgKTtcbiAgXVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBwcmVwcm9jZXNzZWRfYXN0ID0ge1xuICBjb25mOiBDb25maWd1cmF0aW9uLnQ7XG4gIHN0b3J5X2NvbXByZXNzaW9uOiBib29sICogYm9vbCAqIGJvb2w7XG4gIGZvcm1hdENmbG93OiBzdHJpbmc7XG4gIGNmbG93RmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgYXN0X2NvbXBpbGVkX2RhdGE6IExLYXBwYV9jb21waWxlci5hc3RfY29tcGlsZWRfZGF0YTtcbiAgb3ZlcndyaXRlX2luaXQ6XG4gICAgKExLYXBwYS5ydWxlX21peHR1cmUsIFJhd19taXh0dXJlLnQsIGludCkgQXN0LmluaXRfc3RhdGVtZW50IGxpc3Qgb3B0aW9uO1xuICBvdmVyd3JpdGVfdDA6IGZsb2F0IG9wdGlvbjtcbn1cblxudHlwZSBjb21waWxhdGlvbl9yZXN1bHQgPSB7XG4gIGNvbmY6IENvbmZpZ3VyYXRpb24udDtcbiAgZW52OiBNb2RlbC50O1xuICBjb250YWN0X21hcDogQ29udGFjdF9tYXAudDtcbiAgdXBkYXRlZF9hbGdfdmFyczogaW50IGxpc3Q7XG4gIHN0b3J5X2NvbXByZXNzaW9uOiAoYm9vbCAqIGJvb2wgKiBib29sKSBvcHRpb247XG4gIGZvcm1hdENmbG93OiBzdHJpbmc7XG4gIGNmbG93RmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgaW5pdF9sOiAoUHJpbWl0aXZlcy5hbGdfZXhwciAqIFByaW1pdGl2ZXMuZWxlbWVudGFyeV9ydWxlKSBsaXN0O1xuICBjb3VudGVyX29wdDogQ291bnRlci50IG9wdGlvbjtcbn1cblxubGV0IHByZXByb2Nlc3NfYXN0IH53YXJuaW5nIH5kZWJ1Z19tb2RlID9rYXNpbV9hcmdzIGNsaV9hcmdzXG4gICAgKGFzdCA6IChfLCBfLCBfLCBfLCBfLCBfKSBBc3QuY29tcGlsKSA6IHByZXByb2Nlc3NlZF9hc3QgPVxuICBsZXQgKCkgPSBGb3JtYXQucHJpbnRmIFwiKyBzaW11bGF0aW9uIHBhcmFtZXRlcnNALlwiIGluXG4gIGxldCBjb25mLCBzdG9yeV9jb21wcmVzc2lvbiwgZm9ybWF0Q2Zsb3csIGNmbG93RmlsZSA9XG4gICAgQ29uZmlndXJhdGlvbi5wYXJzZSBhc3QuQXN0LmNvbmZpZ3VyYXRpb25zXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5wcmludGYgXCIrIFNhbml0eSBjaGVja3NALlwiIGluXG4gIGxldCBzeW50YXhfdmVyc2lvbiA9IGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5zeW50YXhWZXJzaW9uIGluXG4gIGxldCB2YXJfb3ZlcndyaXRlLCBpbml0aWFsTWl4ID1cbiAgICBtYXRjaCBrYXNpbV9hcmdzIHdpdGhcbiAgICB8IE5vbmUgLT4gW10sIE5vbmVcbiAgICB8IFNvbWUga2FzaW1fYXJncyAtPlxuICAgICAga2FzaW1fYXJncy5LYXNpbV9hcmdzLmFsZ192YXJfb3ZlcndyaXRlLCBrYXNpbV9hcmdzLkthc2ltX2FyZ3MuaW5pdGlhbE1peFxuICBpblxuICBsZXQgYXN0X2NvbXBpbGVkX2RhdGEgOiBMS2FwcGFfY29tcGlsZXIuYXN0X2NvbXBpbGVkX2RhdGEgPVxuICAgIExLYXBwYV9jb21waWxlci5jb21waWxfb2ZfYXN0IH53YXJuaW5nIH5kZWJ1Z19tb2RlIH5zeW50YXhfdmVyc2lvblxuICAgICAgfnZhcl9vdmVyd3JpdGUgYXN0XG4gIGluXG4gIGxldCBvdmVyd3JpdGVfaW5pdCwgb3ZlcndyaXRlX3QwID1cbiAgICBtYXRjaCBpbml0aWFsTWl4IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSwgTm9uZVxuICAgIHwgU29tZSBmaWxlIC0+XG4gICAgICBsZXQgY29tcGlsID1cbiAgICAgICAgbWF0Y2ggc3ludGF4X3ZlcnNpb24gd2l0aFxuICAgICAgICB8IEFzdC5WNCAtPiBLbGV4ZXI0LmNvbXBpbGUgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgQXN0LmVtcHR5X2NvbXBpbCBmaWxlXG4gICAgICAgIHwgQXN0LlYzIC0+XG4gICAgICAgICAgS2FwcGFMZXhlci5jb21waWxlIEZvcm1hdC5zdGRfZm9ybWF0dGVyIEFzdC5lbXB0eV9jb21waWwgZmlsZVxuICAgICAgaW5cbiAgICAgIGxldCBjb25mLCBfLCBfLCBfID0gQ29uZmlndXJhdGlvbi5wYXJzZSBjb21waWwuQXN0LmNvbmZpZ3VyYXRpb25zIGluXG4gICAgICAoIFNvbWVcbiAgICAgICAgICAoTEthcHBhX2NvbXBpbGVyLmluaXRfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgICAgIGFzdF9jb21waWxlZF9kYXRhLmFnZW50c19zaWcgYXN0X2NvbXBpbGVkX2RhdGEuY29udGFjdF9tYXBcbiAgICAgICAgICAgICBhc3RfY29tcGlsZWRfZGF0YS50b2tlbl9uYW1lcy5OYW1lZERlY2xzLmZpbmRlclxuICAgICAgICAgICAgIGFzdF9jb21waWxlZF9kYXRhLmFsZ192YXJzX2ZpbmRlciBjb21waWwuQXN0LmluaXQpLFxuICAgICAgICBjb25mLkNvbmZpZ3VyYXRpb24uaW5pdGlhbCApXG4gIGluXG4gIHtcbiAgICBjb25mO1xuICAgIHN0b3J5X2NvbXByZXNzaW9uO1xuICAgIGZvcm1hdENmbG93O1xuICAgIGNmbG93RmlsZTtcbiAgICBhc3RfY29tcGlsZWRfZGF0YTtcbiAgICBvdmVyd3JpdGVfaW5pdDtcbiAgICBvdmVyd3JpdGVfdDA7XG4gIH1cblxubGV0IGdldF9hc3RfZnJvbV9saXN0X29mX2ZpbGVzIHN5bnRheF92ZXJzaW9uIGZpbGVfbGlzdCA9XG4gIGxldCBjb21waWxpbmdfZnVuY3Rpb24gPVxuICAgIG1hdGNoIHN5bnRheF92ZXJzaW9uIHdpdGhcbiAgICB8IEFzdC5WNCAtPiBLbGV4ZXI0LmNvbXBpbGUgRm9ybWF0LnN0ZF9mb3JtYXR0ZXJcbiAgICB8IEFzdC5WMyAtPiBLYXBwYUxleGVyLmNvbXBpbGUgRm9ybWF0LnN0ZF9mb3JtYXR0ZXJcbiAgaW5cbiAgTGlzdC5mb2xkX2xlZnQgY29tcGlsaW5nX2Z1bmN0aW9uIEFzdC5lbXB0eV9jb21waWwgZmlsZV9saXN0XG5cbmxldCBnZXRfYXN0X2Zyb21fY2xpX2FyZ3MgY2xpX2FyZ3MgPVxuICBnZXRfYXN0X2Zyb21fbGlzdF9vZl9maWxlcyBjbGlfYXJncy5SdW5fY2xpX2FyZ3Muc3ludGF4VmVyc2lvblxuICAgIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5pbnB1dEthcHBhRmlsZU5hbWVzXG5cbmxldCBnZXRfcHJlcHJvY2Vzc2VkX2FzdF9mcm9tX2NsaV9hcmdzIH53YXJuaW5nIH5kZWJ1Z19tb2RlXG4gICAgPyhrYXNpbV9hcmdzID0gS2FzaW1fYXJncy5kZWZhdWx0KSBjbGlfYXJncyA9XG4gIGxldCBhc3QgOlxuICAgICAgKCBBc3QuYWdlbnQsXG4gICAgICAgIEFzdC5hZ2VudF9zaWcsXG4gICAgICAgIEFzdC5taXh0dXJlLFxuICAgICAgICBBc3QubWl4dHVyZSxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICBBc3QucnVsZSApXG4gICAgICBBc3QuY29tcGlsID1cbiAgICBnZXRfYXN0X2Zyb21fbGlzdF9vZl9maWxlcyBjbGlfYXJncy5SdW5fY2xpX2FyZ3Muc3ludGF4VmVyc2lvblxuICAgICAgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLmlucHV0S2FwcGFGaWxlTmFtZXNcbiAgaW5cbiAgcHJlcHJvY2Vzc19hc3Qgfndhcm5pbmcgfmRlYnVnX21vZGUgY2xpX2FyZ3Mgfmthc2ltX2FyZ3MgYXN0XG5cbnR5cGUgY29tcGlsYXRpb25fcGFjayA9IHtcbiAgY29tcGlsYXRpb25fcmVzdWx0OiBjb21waWxhdGlvbl9yZXN1bHQ7XG4gIGFsZ19vdmVyd3JpdGU6IChpbnQgKiBQcmltaXRpdmVzLmFsZ19leHByKSBsaXN0O1xuICBvdmVyd3JpdGVfdDA6IGZsb2F0IG9wdGlvbjtcbn1cblxubGV0IGdldF9wYWNrX2Zyb21fcHJlcHJvY2Vzc2VkX2FzdCBrYXNpbV9hcmdzIH4oY29tcGlsZV9tb2RlX29uIDogYm9vbClcbiAgICAocHJlcHJvY2Vzc2VkX2FzdCA6IHByZXByb2Nlc3NlZF9hc3QpIDogY29tcGlsYXRpb25fcGFjayA9XG4gIGxldCBuLCB3LCBzID0gcHJlcHJvY2Vzc2VkX2FzdC5zdG9yeV9jb21wcmVzc2lvbiBpblxuICBsZXQgKCkgPSBGb3JtYXQucHJpbnRmIFwiKyBDb21waWxpbmcuLi5ALlwiIGluXG4gIGxldCBlbnYsIGhhc190cmFja2luZywgaW5pdF9sID1cbiAgICBFdmFsLmNvbXBpbGUgfm91dHB1dHM6T3V0cHV0cy5nb1xuICAgICAgfnBhdXNlOihmdW4gZiAtPiBmICgpKVxuICAgICAgfnJldHVybjooZnVuIHggLT4geClcbiAgICAgIH5kZWJ1Z19tb2RlOiFQYXJhbWV0ZXIuZGVidWdfbW9kZU9uIH5zaGFyaW5nOmthc2ltX2FyZ3MuS2FzaW1fYXJncy5zaGFyaW5nXG4gICAgICA/cmVzY2FsZV9pbml0Omthc2ltX2FyZ3MuS2FzaW1fYXJncy5yZXNjYWxlXG4gICAgICA/b3ZlcndyaXRlX2luaXQ6cHJlcHJvY2Vzc2VkX2FzdC5vdmVyd3JpdGVfaW5pdFxuICAgICAgP292ZXJ3cml0ZV90MDpwcmVwcm9jZXNzZWRfYXN0Lm92ZXJ3cml0ZV90MCB+Y29tcGlsZV9tb2RlX29uXG4gICAgICBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLmFnZW50c19zaWdcbiAgICAgIHByZXByb2Nlc3NlZF9hc3QuYXN0X2NvbXBpbGVkX2RhdGEudG9rZW5fbmFtZXNcbiAgICAgIHByZXByb2Nlc3NlZF9hc3QuYXN0X2NvbXBpbGVkX2RhdGEuY29udGFjdF9tYXBcbiAgICAgIHByZXByb2Nlc3NlZF9hc3QuYXN0X2NvbXBpbGVkX2RhdGEucmVzdWx0XG4gIGluXG4gIGxldCBzdG9yeV9jb21wcmVzc2lvbiA9XG4gICAgaWYgaGFzX3RyYWNraW5nICYmIChuIHx8IHcgfHwgcykgdGhlblxuICAgICAgU29tZSBwcmVwcm9jZXNzZWRfYXN0LnN0b3J5X2NvbXByZXNzaW9uXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICBpblxuICB7XG4gICAgY29tcGlsYXRpb25fcmVzdWx0ID1cbiAgICAgIHtcbiAgICAgICAgY29uZiA9IHByZXByb2Nlc3NlZF9hc3QuY29uZjtcbiAgICAgICAgZW52O1xuICAgICAgICBjb250YWN0X21hcCA9IHByZXByb2Nlc3NlZF9hc3QuYXN0X2NvbXBpbGVkX2RhdGEuY29udGFjdF9tYXA7XG4gICAgICAgIHVwZGF0ZWRfYWxnX3ZhcnMgPSBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLnVwZGF0ZWRfYWxnX3ZhcnM7XG4gICAgICAgIHN0b3J5X2NvbXByZXNzaW9uO1xuICAgICAgICBmb3JtYXRDZmxvdyA9IHByZXByb2Nlc3NlZF9hc3QuZm9ybWF0Q2Zsb3c7XG4gICAgICAgIGNmbG93RmlsZSA9IHByZXByb2Nlc3NlZF9hc3QuY2Zsb3dGaWxlO1xuICAgICAgICBpbml0X2w7XG4gICAgICAgIGNvdW50ZXJfb3B0ID0gTm9uZTtcbiAgICAgIH07XG4gICAgYWxnX292ZXJ3cml0ZSA9IFtdO1xuICAgIG92ZXJ3cml0ZV90MCA9IHByZXByb2Nlc3NlZF9hc3Qub3ZlcndyaXRlX3QwO1xuICB9XG5cbmxldCBnZXRfcGFja19mcm9tX21hcnNoYWxpemVkZmlsZSB+d2FybmluZyBrYXNpbV9hcmdzIGNsaV9hcmdzIG1hcnNoYWxpemVkX2ZpbGVcbiAgICA6IGNvbXBpbGF0aW9uX3BhY2sgPVxuICBhc3NlcnQgKG1hcnNoYWxpemVkX2ZpbGUgPD4gXCJcIik7XG4gIHRyeVxuICAgIGxldCBkID0gb3Blbl9pbl9iaW4gbWFyc2hhbGl6ZWRfZmlsZSBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBjbGlfYXJncy5SdW5fY2xpX2FyZ3MuaW5wdXRLYXBwYUZpbGVOYW1lcyA8PiBbXSB0aGVuXG4gICAgICAgIHdhcm5pbmcgfnBvczpMb2MuZHVtbXkgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAgICAgICAgICAgXCJTaW11bGF0aW9uIHBhY2thZ2UgbG9hZGVkLCBhbGwga2FwcGEgZmlsZXMgYXJlIGlnbm9yZWRcIilcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQucHJpbnRmIFwiKyBMb2FkaW5nIHNpbXVsYXRpb24gcGFja2FnZSAlcy4uLkAuXCIgbWFyc2hhbGl6ZWRfZmlsZVxuICAgIGluXG4gICAgbGV0IGNvbXBpbGF0aW9uX3Jlc3VsdCA6IGNvbXBpbGF0aW9uX3Jlc3VsdCA9IE1hcnNoYWwuZnJvbV9jaGFubmVsIGQgaW5cbiAgICBsZXQgKCkgPSBTdGRsaWIuY2xvc2VfaW4gZCBpblxuICAgIGxldCBhbGdfb3ZlcndyaXRlID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4gKHMsIHYpIC0+XG4gICAgICAgICAgKCBNb2RlbC5udW1fb2ZfYWxnIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBzKSBjb21waWxhdGlvbl9yZXN1bHQuZW52LFxuICAgICAgICAgICAgQWxnX2V4cHIuQ09OU1QgdiApKVxuICAgICAgICBrYXNpbV9hcmdzLkthc2ltX2FyZ3MuYWxnX3Zhcl9vdmVyd3JpdGVcbiAgICBpblxuICAgIG1hdGNoIGthc2ltX2FyZ3MuS2FzaW1fYXJncy5pbml0aWFsTWl4IHdpdGhcbiAgICB8IE5vbmUgLT4geyBjb21waWxhdGlvbl9yZXN1bHQ7IGFsZ19vdmVyd3JpdGU7IG92ZXJ3cml0ZV90MCA9IE5vbmUgfVxuICAgIHwgU29tZSBmaWxlIC0+XG4gICAgICBsZXQgY29tcGlsID1cbiAgICAgICAgZ2V0X2FzdF9mcm9tX2xpc3Rfb2ZfZmlsZXMgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLnN5bnRheFZlcnNpb24gWyBmaWxlIF1cbiAgICAgIGluXG4gICAgICBsZXQgb3ZlcndyaXRlX3QwIDogZmxvYXQgb3B0aW9uID1cbiAgICAgICAgKENvbmZpZ3VyYXRpb24ucGFyc2UgY29tcGlsLkFzdC5jb25maWd1cmF0aW9ucyB8PiBmdW4gKGEsIF8sIF8sIF8pIC0+IGEpXG4gICAgICAgIHw+IGZ1biBjb25mIC0+IGNvbmYuQ29uZmlndXJhdGlvbi5pbml0aWFsXG4gICAgICBpblxuXG4gICAgICBsZXQgcmF3X2luaXRzID1cbiAgICAgICAgTEthcHBhX2NvbXBpbGVyLmluaXRfb2ZfYXN0IH53YXJuaW5nXG4gICAgICAgICAgfnN5bnRheF92ZXJzaW9uOmNsaV9hcmdzLlJ1bl9jbGlfYXJncy5zeW50YXhWZXJzaW9uXG4gICAgICAgICAgKE1vZGVsLnNpZ25hdHVyZXMgY29tcGlsYXRpb25fcmVzdWx0LmVudilcbiAgICAgICAgICBjb21waWxhdGlvbl9yZXN1bHQuY29udGFjdF9tYXBcbiAgICAgICAgICAoTW9kZWwudG9rZW5zX2ZpbmRlciBjb21waWxhdGlvbl9yZXN1bHQuZW52KVxuICAgICAgICAgIChNb2RlbC5hbGdzX2ZpbmRlciBjb21waWxhdGlvbl9yZXN1bHQuZW52KVxuICAgICAgICAgIGNvbXBpbC5Bc3QuaW5pdFxuICAgICAgaW5cbiAgICAgIGxldCBpbml0X2wgPVxuICAgICAgICBFdmFsLmNvbXBpbGVfaW5pdHMgfmRlYnVnX21vZGU6IVBhcmFtZXRlci5kZWJ1Z19tb2RlT24gfndhcm5pbmdcbiAgICAgICAgICA/cmVzY2FsZTprYXNpbV9hcmdzLkthc2ltX2FyZ3MucmVzY2FsZSB+Y29tcGlsZV9tb2RlX29uOmZhbHNlXG4gICAgICAgICAgY29tcGlsYXRpb25fcmVzdWx0LmNvbnRhY3RfbWFwIGNvbXBpbGF0aW9uX3Jlc3VsdC5lbnYgcmF3X2luaXRzXG4gICAgICBpblxuICAgICAge1xuICAgICAgICBjb21waWxhdGlvbl9yZXN1bHQgPSB7IGNvbXBpbGF0aW9uX3Jlc3VsdCB3aXRoIGluaXRfbCB9O1xuICAgICAgICBhbGdfb3ZlcndyaXRlO1xuICAgICAgICBvdmVyd3JpdGVfdDA7XG4gICAgICB9XG4gIHdpdGhcbiAgfCBFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIF8gYXMgZSAtPiByYWlzZSBlXG4gIHwgX2V4biAtPlxuICAgIEZvcm1hdC5wcmludGZcbiAgICAgIFwiU2ltdWxhdGlvbiBwYWNrYWdlIHNlZW1zIHRvIGhhdmUgYmVlbiBjcmVhdGVkIHdpdGggYSBkaWZmZXJlbnQgdmVyc2lvbiBcXFxuICAgICAgIG9mIEthU2ltLCBhYm9ydGluZy4uLlwiO1xuICAgIGV4aXQgMVxuXG5sZXQgZ2V0X2NvbXBpbGF0aW9uX2Zyb21fcGFjayB+d2FybmluZyBrYXNpbV9hcmdzIGNsaV9hcmdzXG4gICAgKHBhY2sgOiBjb21waWxhdGlvbl9wYWNrKSA6IGNvbXBpbGF0aW9uX3Jlc3VsdCA9XG4gIGxldCBpbml0X3RfZnJvbV9maWxlcyA9XG4gICAgT3B0aW9uX3V0aWwudW5zb21lXG4gICAgICAoT3B0aW9uX3V0aWwudW5zb21lIDAuIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmNvbmYuQ29uZmlndXJhdGlvbi5pbml0aWFsKVxuICAgICAgcGFjay5vdmVyd3JpdGVfdDBcbiAgaW5cbiAgbGV0IGluaXRfdCwgbWF4X3RpbWUsIGluaXRfZSwgbWF4X2V2ZW50LCBwbG90X3BlcmlvZCA9XG4gICAgbWF0Y2gga2FzaW1fYXJncy5LYXNpbV9hcmdzLnVuaXQgd2l0aFxuICAgIHwgS2FzaW1fYXJncy5UaW1lIC0+XG4gICAgICAoIE9wdGlvbl91dGlsLnVuc29tZSBpbml0X3RfZnJvbV9maWxlcyBjbGlfYXJncy5SdW5fY2xpX2FyZ3MubWluVmFsdWUsXG4gICAgICAgIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5tYXhWYWx1ZSxcbiAgICAgICAgTm9uZSxcbiAgICAgICAgTm9uZSxcbiAgICAgICAgKG1hdGNoIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5wbG90UGVyaW9kIHdpdGhcbiAgICAgICAgfCBTb21lIGEgLT4gQ29uZmlndXJhdGlvbi5EVCBhXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIE9wdGlvbl91dGlsLnVuc29tZSAoQ29uZmlndXJhdGlvbi5EVCAxLilcbiAgICAgICAgICAgIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmNvbmYuQ29uZmlndXJhdGlvbi5wbG90UGVyaW9kKSApXG4gICAgfCBLYXNpbV9hcmdzLkV2ZW50IC0+XG4gICAgICAoIGluaXRfdF9mcm9tX2ZpbGVzLFxuICAgICAgICBOb25lLFxuICAgICAgICBTb21lXG4gICAgICAgICAgKGludF9vZl9mbG9hdCAoT3B0aW9uX3V0aWwudW5zb21lIDAuIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5taW5WYWx1ZSkpLFxuICAgICAgICBPcHRpb25fdXRpbC5tYXAgaW50X29mX2Zsb2F0IGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5tYXhWYWx1ZSxcbiAgICAgICAgKG1hdGNoIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5wbG90UGVyaW9kIHdpdGhcbiAgICAgICAgfCBTb21lIGEgLT4gQ29uZmlndXJhdGlvbi5ERSAoaW50X29mX2Zsb2F0IChjZWlsIGEpKVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBPcHRpb25fdXRpbC51bnNvbWUgKENvbmZpZ3VyYXRpb24uREUgMSlcbiAgICAgICAgICAgIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmNvbmYuQ29uZmlndXJhdGlvbi5wbG90UGVyaW9kKSApXG4gIGluXG4gIGxldCBjb3VudGVyID1cbiAgICBDb3VudGVyLmNyZWF0ZSB+aW5pdF90ID9pbml0X2UgP21heF90aW1lID9tYXhfZXZlbnQgfnBsb3RfcGVyaW9kXG4gICAgICB+bmJfcnVsZXM6KE1vZGVsLm5iX3J1bGVzIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmVudilcbiAgICAgICgpXG4gIGluXG4gIGxldCBlbnYgPVxuICAgIGlmXG4gICAgICBjbGlfYXJncy5SdW5fY2xpX2FyZ3MuYmF0Y2htb2RlXG4gICAgICAmJiBrYXNpbV9hcmdzLkthc2ltX2FyZ3MubWFyc2hhbGl6ZU91dEZpbGUgPSBOb25lXG4gICAgdGhlblxuICAgICAgTW9kZWwucHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZTooQ291bnRlci5tYXhfdGltZSBjb3VudGVyKVxuICAgICAgICA/bWF4X2V2ZW50czooQ291bnRlci5tYXhfZXZlbnRzIGNvdW50ZXIpXG4gICAgICAgIH51cGRhdGVkX3ZhcnM6cGFjay5jb21waWxhdGlvbl9yZXN1bHQudXBkYXRlZF9hbGdfdmFyc1xuICAgICAgICB+YWxnX292ZXJ3cml0ZTpwYWNrLmFsZ19vdmVyd3JpdGUgcGFjay5jb21waWxhdGlvbl9yZXN1bHQuZW52XG4gICAgZWxzZVxuICAgICAgTW9kZWwub3ZlcndyaXRlX3ZhcnMgcGFjay5hbGdfb3ZlcndyaXRlIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmVudlxuICBpblxuICB7IHBhY2suY29tcGlsYXRpb25fcmVzdWx0IHdpdGggZW52OyBjb3VudGVyX29wdCA9IFNvbWUgY291bnRlciB9XG5cbmxldCBnZXRfY29tcGlsYXRpb25fZnJvbV9wcmVwcm9jZXNzZWRfYXN0IH53YXJuaW5nID8oY29tcGlsZV9tb2RlX29uID0gZmFsc2UpXG4gICAgPyhrYXNpbV9hcmdzID0gS2FzaW1fYXJncy5kZWZhdWx0KSBjbGlfYXJncyBwcmVwcm9jZXNzZWRfYXN0IDpcbiAgICBjb21waWxhdGlvbl9yZXN1bHQgPVxuICBsZXQgcGFjayA9XG4gICAgZ2V0X3BhY2tfZnJvbV9wcmVwcm9jZXNzZWRfYXN0IGthc2ltX2FyZ3MgfmNvbXBpbGVfbW9kZV9vbiBwcmVwcm9jZXNzZWRfYXN0XG4gIGluXG4gIGdldF9jb21waWxhdGlvbl9mcm9tX3BhY2sgfndhcm5pbmcga2FzaW1fYXJncyBjbGlfYXJncyBwYWNrXG5cbmxldCBnZXRfY29tcGlsYXRpb24gfndhcm5pbmcgfmRlYnVnX21vZGUgPyhjb21waWxlX21vZGVfb24gPSBmYWxzZSlcbiAgICA/KGthc2ltX2FyZ3MgPSBLYXNpbV9hcmdzLmRlZmF1bHQpIGNsaV9hcmdzIDogY29tcGlsYXRpb25fcmVzdWx0ID1cbiAgbGV0IChwYWNrIDogY29tcGlsYXRpb25fcGFjaykgPVxuICAgIG1hdGNoIGthc2ltX2FyZ3MuS2FzaW1fYXJncy5tYXJzaGFsaXplZEluRmlsZSB3aXRoXG4gICAgfCBcIlwiIC0+XG4gICAgICBsZXQgcHJlcHJvY2Vzc2VkX2FzdCA9XG4gICAgICAgIGdldF9wcmVwcm9jZXNzZWRfYXN0X2Zyb21fY2xpX2FyZ3Mgfndhcm5pbmcgfmRlYnVnX21vZGUgY2xpX2FyZ3NcbiAgICAgIGluXG4gICAgICBnZXRfcGFja19mcm9tX3ByZXByb2Nlc3NlZF9hc3Qga2FzaW1fYXJncyB+Y29tcGlsZV9tb2RlX29uXG4gICAgICAgIHByZXByb2Nlc3NlZF9hc3RcbiAgICB8IG1hcnNoYWxpemVkX2ZpbGUgLT5cbiAgICAgIGdldF9wYWNrX2Zyb21fbWFyc2hhbGl6ZWRmaWxlIH53YXJuaW5nIGthc2ltX2FyZ3MgY2xpX2FyZ3NcbiAgICAgICAgbWFyc2hhbGl6ZWRfZmlsZVxuICBpblxuICBnZXRfY29tcGlsYXRpb25fZnJvbV9wYWNrIH53YXJuaW5nIGthc2ltX2FyZ3MgY2xpX2FyZ3MgcGFja1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0geyBtdXRhYmxlIGRlbGltaXRlcjogY2hhciB9XG5cbmxldCBkZWZhdWx0IDogdCA9IHsgZGVsaW1pdGVyID0gVG9vbHMuZGVmYXVsdF9tZXNzYWdlX2RlbGltdGVyIH1cblxubGV0IG9wdGlvbnMgKHQgOiB0KSA6IChzdHJpbmcgKiBBcmcuc3BlYyAqIHN0cmluZykgbGlzdCA9XG4gIFtcbiAgICAoIFwiLS1kZWxpbWl0ZXJcIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1biBkIC0+XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZCA9IFNjYW5mLnVuZXNjYXBlZCBkIGluXG4gICAgICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgICAgIGlmIDEgPSBTdHJpbmcubGVuZ3RoIGQgdGhlblxuICAgICAgICAgICAgICAgIFN0cmluZy5nZXQgZCAwXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKEFyZy5CYWRcbiAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcImRlbGltZXRlciBoYXMgbXVsdGlwbGUgY2hhcmFjdGVycyAnJXMnXCIgZCkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gdC5kZWxpbWl0ZXIgPC0gZCBpblxuICAgICAgICAgICAgKClcbiAgICAgICAgICB3aXRoIFNjYW5mLlNjYW5fZmFpbHVyZSBfIC0+XG4gICAgICAgICAgICByYWlzZSAoQXJnLkJhZCAoRm9ybWF0LnNwcmludGYgXCJmYWlsZWQgdG8gcGFyc2UgZGVsaW1ldGVyICclcydcIiBkKSkpLFxuICAgICAgXCJEZWxpbWl0ZXIgZm9yIG1lc3NhZ2UgcGFzc2luZ1wiICk7XG4gIF1cbiIsIigqKlxuICAqIGxvZ2dlcnMubWxcbiAgKlxuICAqIGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQW50aXF1ZSwgSU5SSUEgUGFyaXNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjYvMDEvMjAxNlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAyNS8wNS8yMDE2XG4gICogKlxuICAqXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxNiAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIGVuY29kaW5nID1cbiAgfCBNYXRyaXhcbiAgfCBIVE1MX0dyYXBoXG4gIHwgSnNfR3JhcGhcbiAgfCBIVE1MXG4gIHwgSFRNTF9UYWJ1bGFyXG4gIHwgRE9UXG4gIHwgVFhUXG4gIHwgVFhUX1RhYnVsYXJcbiAgfCBYTFNcbiAgfCBPY3RhdmVcbiAgfCBNYXRsYWJcbiAgfCBNYXBsZVxuICB8IE1hdGhlbWF0aWNhXG4gIHwgU0JNTFxuICB8IERPVE5FVFxuICB8IEpzb25cbiAgfCBHRVBISVxuXG5tb2R1bGUgdHlwZSBGb3JtYXRNYXAgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGFkZCA6IGVuY29kaW5nIC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgZmluZCA6IGVuY29kaW5nIC0+ICdhIHQgLT4gJ2FcbiAgdmFsIGVtcHR5IDogJ2EgdFxuZW5kXG5cbm1vZHVsZSBGb3JtYXRNYXAgPSBNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGVuY29kaW5nXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5lbmQpXG5cbnR5cGUgdG9rZW4gPSBTdHJpbmcgb2Ygc3RyaW5nIHwgQnJlYWthYmxlX3NwYWNlIHwgQnJlYWthYmxlX2hpbnRcblxudHlwZSBsb2dnZXIgPVxuICB8IERFVk5VTFxuICB8IEZvcm1hdHRlciBvZiBGb3JtYXQuZm9ybWF0dGVyXG4gIHwgQ2lyY3VsYXJfYnVmZmVyIG9mIHN0cmluZyBDaXJjdWxhcl9idWZmZXJzLnQgcmVmXG4gIHwgSW5maW5pdGVfYnVmZmVyIG9mIHN0cmluZyBJbmZpbml0ZV9idWZmZXJzLnQgcmVmXG5cbmxldCBicmVha2FibGUgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IEhUTUxfVGFidWxhciB8IEhUTUwgfCBIVE1MX0dyYXBoIHwgSnNfR3JhcGggfCBUWFQgLT4gdHJ1ZVxuICB8IE1hdHJpeCB8IEpzb24gfCBNYXRoZW1hdGljYSB8IE1hdGxhYiB8IE9jdGF2ZSB8IE1hcGxlIHwgU0JNTCB8IERPVE5FVCB8IERPVFxuICB8IEdFUEhJIHwgVFhUX1RhYnVsYXIgfCBYTFMgLT5cbiAgICBmYWxzZVxuXG50eXBlIHQgPSB7XG4gIGVuY29kaW5nOiBlbmNvZGluZztcbiAgbG9nZ2VyOiBsb2dnZXI7XG4gIGNoYW5uZWxfb3B0OiBvdXRfY2hhbm5lbCBvcHRpb247XG4gIG11dGFibGUgY3VycmVudF9saW5lOiB0b2tlbiBsaXN0O1xufVxuXG5sZXQgZ2V0X2VuY29kaW5nX2Zvcm1hdCB0ID0gdC5lbmNvZGluZ1xuXG5sZXQgZHVtbXlfaHRtbF9sb2dnZXIgPVxuICB7XG4gICAgKCogIGlkX21hcCA9IHJlZiBTdHJpbmdNYXAuZW1wdHkgOyopXG4gICAgZW5jb2RpbmcgPSBIVE1MO1xuICAgIGxvZ2dlciA9IERFVk5VTDtcbiAgICBjaGFubmVsX29wdCA9IE5vbmU7XG4gICAgY3VycmVudF9saW5lID0gW107XG4gICAgKCogZnJlc2hfaWQgPSByZWYgMTtcbiAgICAgICBub2RlcyA9IHJlZiBbXTtcbiAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgZWRnZXNfbWFwID0gcmVmIE1vZHMuU3RyaW5nMk1hcC5lbXB0eTsqKVxuICB9XG5cbmxldCBkdW1teV90eHRfbG9nZ2VyID1cbiAge1xuICAgICgqICBpZF9tYXAgPSByZWYgU3RyaW5nTWFwLmVtcHR5IDsqKVxuICAgIGVuY29kaW5nID0gVFhUO1xuICAgIGNoYW5uZWxfb3B0ID0gTm9uZTtcbiAgICBsb2dnZXIgPSBERVZOVUw7XG4gICAgY3VycmVudF9saW5lID0gW107XG4gICAgKCogZnJlc2hfaWQgPSByZWYgMTtcbiAgICAgICBub2RlcyA9IHJlZiBbXTtcbiAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgZWRnZXNfbWFwID0gcmVmIE1vZHMuU3RyaW5nMk1hcC5lbXB0eTsqKVxuICB9XG5cbigqIFdhcm5pbmcsIHdlIGhhdmUgdG8ga2VlcCB0aGUgY2hhcmFjdGVyIEAgd2hlbiBpdCBpcyBmb2xsb3dlZCBieSBhIGNoYXJhY3RlciBmb2xsb3dlZCBieSBhIGxldHRlciBvciBhIGRpZ2l0IHNob3VsZCBiZSBwcmVzZXJ2ZWQgKilcblxubGV0IGR1bXBfY2xlYW5fc3RyaW5nIGZtdCA9XG4gIFN0cmluZy5pdGVyIChmdW4gYSAtPlxuICAgICAgaWYgYSA9ICdcXG4nIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2VcbiAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJWNcIiBhKVxuXG5sZXQgY2xlYW5fc3RyaW5nIHMgPVxuICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSAwIGluXG4gIGxldCBmbXRfYnVmZmVyID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmZmVyIGluXG4gIGxldCAoKSA9IGR1bXBfY2xlYW5fc3RyaW5nIGZtdF9idWZmZXIgcyBpblxuICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10X2J1ZmZlciAoKSBpblxuICBCdWZmZXIuY29udGVudHMgYnVmZmVyXG5cbmxldCBjbGVhbiBmbXQgPVxuICBsZXQgcyA9IEJ1ZmZlci5jcmVhdGUgMCBpblxuICBsZXQgZm10X2J1ZmZlciA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIHMgaW5cbiAgRm9ybWF0LmtmcHJpbnRmXG4gICAgKGZ1biBfIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10X2J1ZmZlciAoKSBpblxuICAgICAgZHVtcF9jbGVhbl9zdHJpbmcgZm10IChCdWZmZXIuY29udGVudHMgcykpXG4gICAgZm10X2J1ZmZlclxuXG5sZXQgZnByaW50ZiA/KGZwcmludG5ld2xpbmUgPSBmYWxzZSkgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciwgZnByaW50bmV3bGluZSB8fCBicmVha2FibGUgbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgfCBERVZOVUwsIF8gLT4gRm9ybWF0LmlmcHJpbnRmIEZvcm1hdC5zdGRfZm9ybWF0dGVyXG4gIHwgRm9ybWF0dGVyIGZtdCwgdHJ1ZSAtPiBGb3JtYXQuZnByaW50ZiBmbXRcbiAgfCBGb3JtYXR0ZXIgZm10LCBmYWxzZSAtPiBjbGVhbiBmbXRcbiAgfCBDaXJjdWxhcl9idWZmZXIgXywgYm9vbCB8IEluZmluaXRlX2J1ZmZlciBfLCBib29sIC0+XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDAgaW5cbiAgICBsZXQgZm10X2J1ZmZlciA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgICBGb3JtYXQua2ZwcmludGZcbiAgICAgIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10X2J1ZmZlciAoKSBpblxuICAgICAgICBsZXQgc3RyID0gQnVmZmVyLmNvbnRlbnRzIGIgaW5cbiAgICAgICAgbG9nZ2VyLmN1cnJlbnRfbGluZSA8LVxuICAgICAgICAgIFN0cmluZ1xuICAgICAgICAgICAgKGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgc3RyXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgY2xlYW5fc3RyaW5nIHN0cilcbiAgICAgICAgICA6OiBsb2dnZXIuY3VycmVudF9saW5lKVxuICAgICAgZm10X2J1ZmZlclxuXG5sZXQgcHJpbnRfYnJlYWthYmxlX3NwYWNlIGxvZ2dlciA9XG4gIGlmIGJyZWFrYWJsZSBsb2dnZXIuZW5jb2RpbmcgdGhlbiAoXG4gICAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gICAgfCBERVZOVUwgfCBGb3JtYXR0ZXIgXyAtPiBmcHJpbnRmIGxvZ2dlciBcIkAgXCJcbiAgICB8IENpcmN1bGFyX2J1ZmZlciBfIHwgSW5maW5pdGVfYnVmZmVyIF8gLT5cbiAgICAgIGxvZ2dlci5jdXJyZW50X2xpbmUgPC0gQnJlYWthYmxlX3NwYWNlIDo6IGxvZ2dlci5jdXJyZW50X2xpbmVcbiAgKSBlbHNlXG4gICAgZnByaW50ZiBsb2dnZXIgXCIgXCJcblxubGV0IHByaW50X2JyZWFrYWJsZV9oaW50IGxvZ2dlciA9XG4gIGlmIGJyZWFrYWJsZSBsb2dnZXIuZW5jb2RpbmcgdGhlbiAoXG4gICAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gICAgfCBERVZOVUwgfCBGb3JtYXR0ZXIgXyAtPiBmcHJpbnRmIGxvZ2dlciBcIkAsXCJcbiAgICB8IENpcmN1bGFyX2J1ZmZlciBfIHwgSW5maW5pdGVfYnVmZmVyIF8gLT5cbiAgICAgIGxvZ2dlci5jdXJyZW50X2xpbmUgPC0gQnJlYWthYmxlX2hpbnQgOjogbG9nZ2VyLmN1cnJlbnRfbGluZVxuICApIGVsc2VcbiAgICBmcHJpbnRmIGxvZ2dlciBcIlwiXG5cbmxldCBlbmRfb2ZfbGluZV9zeW1ib2wgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgfCBIVE1MIHwgSFRNTF9HcmFwaCB8IEpzX0dyYXBoIC0+IFwiPEJyPlwiXG4gIHwgTWF0cml4IHwgTWF0bGFiIHwgTWF0aGVtYXRpY2EgfCBPY3RhdmUgfCBNYXBsZSB8IFNCTUwgfCBET1RORVQgfCBKc29uXG4gIHwgR0VQSEkgfCBIVE1MX1RhYnVsYXIgfCBET1QgfCBUWFQgfCBUWFRfVGFidWxhciB8IFhMUyAtPlxuICAgIFwiXCJcblxubGV0IGR1bXBfdG9rZW4gZiB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgU3RyaW5nIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHNcbiAgfCBCcmVha2FibGVfc3BhY2UgLT4gRm9ybWF0LmZwcmludGYgZiBcIkAgXCJcbiAgfCBCcmVha2FibGVfaGludCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQCxcIlxuXG5sZXQgcHJpbnRfbmV3bGluZSBsb2dnZXIgPVxuICBsZXQgKCkgPVxuICAgIGZwcmludGYgfmZwcmludG5ld2xpbmU6dHJ1ZSBsb2dnZXIgXCIlcyV0XCIgKGVuZF9vZl9saW5lX3N5bWJvbCBsb2dnZXIpXG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgZiAoKSlcbiAgaW5cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gIHwgREVWTlVMIHwgRm9ybWF0dGVyIF8gLT4gKClcbiAgfCBDaXJjdWxhcl9idWZmZXIgYmYgLT5cbiAgICBsZXQgYmYnID1cbiAgICAgIENpcmN1bGFyX2J1ZmZlcnMuYWRkXG4gICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgIChQcC5saXN0IChmdW4gXyAtPiAoKSkgZHVtcF90b2tlbilcbiAgICAgICAgICAgKExpc3QucmV2IGxvZ2dlci5jdXJyZW50X2xpbmUpKVxuICAgICAgICAhYmZcbiAgICBpblxuICAgIGxldCAoKSA9IGJmIDo9IGJmJyBpblxuICAgIGxldCAoKSA9IGxvZ2dlci5jdXJyZW50X2xpbmUgPC0gW10gaW5cbiAgICAoKVxuICB8IEluZmluaXRlX2J1ZmZlciBiZiAtPlxuICAgIGxldCBiZicgPVxuICAgICAgSW5maW5pdGVfYnVmZmVycy5hZGRcbiAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgKFBwLmxpc3QgKGZ1biBfIC0+ICgpKSBkdW1wX3Rva2VuKVxuICAgICAgICAgICAoTGlzdC5yZXYgbG9nZ2VyLmN1cnJlbnRfbGluZSkpXG4gICAgICAgICFiZlxuICAgIGluXG4gICAgbGV0ICgpID0gYmYgOj0gYmYnIGluXG4gICAgbGV0ICgpID0gbG9nZ2VyLmN1cnJlbnRfbGluZSA8LSBbXSBpblxuICAgICgpXG5cbmxldCBwcmludF9jZWxsIGxvZ2dlciBzID1cbiAgbGV0IG9wZW5fY2VsbF9zeW1ib2wsIGNsb3NlX2NlbGxfc3ltYm9sID1cbiAgICBtYXRjaCBsb2dnZXIuZW5jb2Rpbmcgd2l0aFxuICAgIHwgSFRNTF9UYWJ1bGFyIC0+IFwiPFREPlwiLCBcIjwvVEQ+XCJcbiAgICB8IFRYVF9UYWJ1bGFyIC0+IFwiXCIsIFwiXFx0XCJcbiAgICB8IE1hdHJpeCB8IEdFUEhJIHwgSnNvbiB8IE1hdGhlbWF0aWNhIHwgTWF0bGFiIHwgT2N0YXZlIHwgTWFwbGUgfCBTQk1MXG4gICAgfCBET1RORVQgfCBIVE1MX0dyYXBoIHwgSnNfR3JhcGggfCBIVE1MIHwgRE9UIHwgVFhUIHwgWExTIC0+XG4gICAgICBcIlwiLCBcIlwiXG4gIGluXG4gIGZwcmludGYgbG9nZ2VyIFwiJXMlcyVzXCIgb3Blbl9jZWxsX3N5bWJvbCBzIGNsb3NlX2NlbGxfc3ltYm9sXG5cbmxldCBmbHVzaF9sb2dnZXIgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gIHwgREVWTlVMIC0+ICgpXG4gIHwgRm9ybWF0dGVyIGZtdCAtPiBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10ICgpXG4gIHwgQ2lyY3VsYXJfYnVmZmVyIF8gfCBJbmZpbml0ZV9idWZmZXIgXyAtPiAoKVxuXG5sZXQgY2xvc2VfbG9nZ2VyIGxvZ2dlciA9XG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgICB8IEhUTUwgLT4gZnByaW50ZiBsb2dnZXIgXCI8L2Rpdj5cXG48L2JvZHk+XFxuXCJcbiAgICB8IEhUTUxfVGFidWxhciAtPiBmcHJpbnRmIGxvZ2dlciBcIjwvVEFCTEU+XFxuPC9kaXY+XFxuPC9ib2R5PlwiXG4gICAgfCBNYXRyaXggLT4gZnByaW50ZiBsb2dnZXIgXCJ9XFxuXCJcbiAgICB8IEdFUEhJIHwgSnNvbiB8IE1hdGxhYiB8IE1hdGhlbWF0aWNhIHwgT2N0YXZlIHwgTWFwbGUgfCBTQk1MIHwgRE9UTkVUXG4gICAgfCBIVE1MX0dyYXBoIHwgSnNfR3JhcGggfCBET1QgfCBUWFQgfCBUWFRfVGFidWxhciB8IFhMUyAtPlxuICAgICAgKClcbiAgaW5cbiAgbGV0ICgpID0gZmx1c2hfbG9nZ2VyIGxvZ2dlciBpblxuICAoKVxuXG5sZXQgcHJpbnRfcHJlYW1ibGUgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgfCBIVE1MIC0+IGZwcmludGYgbG9nZ2VyIFwiPGJvZHk+XFxuPGRpdj5cXG5cIlxuICB8IEhUTUxfVGFidWxhciAtPiBmcHJpbnRmIGxvZ2dlciBcIjxib2R5PlxcbjxkaXY+XFxuPFRBQkxFPlxcblwiXG4gIHwgTWF0cml4IC0+XG4gICAgbGV0ICgpID0gZnByaW50ZiBsb2dnZXIgXCJ7XCIgaW5cbiAgICBsZXQgKCkgPSBwcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9IGZwcmludGYgbG9nZ2VyIFwiXFxcImJpb0JlZ2luVGltZVxcXCIgOiAwLjAwMDAwMGUrMDAsXCIgaW5cbiAgICBsZXQgKCkgPSBwcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9IGZwcmludGYgbG9nZ2VyIFwiXFxcImJpb0VuZFRpbWVcXFwiIDogMC4wMDAwMDBlKzAwLFwiIGluXG4gICAgbGV0ICgpID0gcHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICAoKVxuICB8IEdFUEhJIHwgSnNvbiB8IE1hdGxhYiB8IE1hdGhlbWF0aWNhIHwgT2N0YXZlIHwgTWFwbGUgfCBTQk1MIHwgRE9UTkVUXG4gIHwgSFRNTF9HcmFwaCB8IEpzX0dyYXBoIHwgRE9UIHwgVFhUIHwgVFhUX1RhYnVsYXIgfCBYTFMgLT5cbiAgICAoKVxuXG5sZXQgb3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsID8obW9kZSA9IFRYVCkgY2hhbm5lbCA9XG4gIGxldCBmb3JtYXR0ZXIgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGNoYW5uZWwgaW5cbiAgbGV0IGxvZ2dlciA9XG4gICAge1xuICAgICAgKCogaWRfbWFwID0gcmVmIFN0cmluZ01hcC5lbXB0eTtcbiAgICAgICAgIGZyZXNoX2lkID0gcmVmIDE7KilcbiAgICAgIGxvZ2dlciA9IEZvcm1hdHRlciBmb3JtYXR0ZXI7XG4gICAgICBjaGFubmVsX29wdCA9IFNvbWUgY2hhbm5lbDtcbiAgICAgIGVuY29kaW5nID0gbW9kZTtcbiAgICAgIGN1cnJlbnRfbGluZSA9IFtdO1xuICAgICAgKCogbm9kZXMgPSByZWYgW107XG4gICAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgICBlZGdlc19tYXAgPSByZWYgTW9kcy5TdHJpbmcyTWFwLmVtcHR5OyopXG4gICAgfVxuICBpblxuICBsZXQgKCkgPSBwcmludF9wcmVhbWJsZSBsb2dnZXIgaW5cbiAgbG9nZ2VyXG5cbmxldCBvcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciA/KG1vZGUgPSBUWFQpIGZvcm1hdHRlciA9XG4gIGxldCBsb2dnZXIgPVxuICAgIHtcbiAgICAgICgqIGlkX21hcCA9IHJlZiBTdHJpbmdNYXAuZW1wdHk7XG4gICAgICAgICBmcmVzaF9pZCA9IHJlZiAxOyopXG4gICAgICBsb2dnZXIgPSBGb3JtYXR0ZXIgZm9ybWF0dGVyO1xuICAgICAgY2hhbm5lbF9vcHQgPSBOb25lO1xuICAgICAgZW5jb2RpbmcgPSBtb2RlO1xuICAgICAgY3VycmVudF9saW5lID0gW107XG4gICAgICAoKiBub2RlcyA9IHJlZiBbXTtcbiAgICAgICAgIGVkZ2VzID0gcmVmIFtdO1xuICAgICAgICAgICAgIGVkZ2VzX21hcCA9IHJlZiBNb2RzLlN0cmluZzJNYXAuZW1wdHk7KilcbiAgICB9XG4gIGluXG4gIGxldCAoKSA9IHByaW50X3ByZWFtYmxlIGxvZ2dlciBpblxuICBsb2dnZXJcblxubGV0IG9wZW5fY2lyY3VsYXJfYnVmZmVyID8obW9kZSA9IFRYVCkgPyhzaXplID0gMTApICgpID1cbiAge1xuICAgICgqIGlkX21hcCA9IHJlZiBTdHJpbmdNYXAuZW1wdHk7XG4gICAgICAgZnJlc2hfaWQgPSByZWYgMTsqKVxuICAgIGxvZ2dlciA9IENpcmN1bGFyX2J1ZmZlciAocmVmIChDaXJjdWxhcl9idWZmZXJzLmNyZWF0ZSBzaXplIFwiXCIpKTtcbiAgICBjaGFubmVsX29wdCA9IE5vbmU7XG4gICAgZW5jb2RpbmcgPSBtb2RlO1xuICAgIGN1cnJlbnRfbGluZSA9IFtdO1xuICAgICgqIG5vZGVzID0gcmVmIFtdO1xuICAgICAgIGVkZ2VzID0gcmVmIFtdO1xuICAgICAgICAgICBlZGdlc19tYXAgPSByZWYgTW9kcy5TdHJpbmcyTWFwLmVtcHR5OyopXG4gIH1cblxubGV0IG9wZW5faW5maW5pdGVfYnVmZmVyID8obW9kZSA9IFRYVCkgKCkgPVxuICBsZXQgbG9nZ2VyID1cbiAgICB7XG4gICAgICAoKiBpZF9tYXAgPSByZWYgU3RyaW5nTWFwLmVtcHR5O1xuICAgICAgICAgZnJlc2hfaWQgPSByZWYgMTsqKVxuICAgICAgbG9nZ2VyID0gSW5maW5pdGVfYnVmZmVyIChyZWYgKEluZmluaXRlX2J1ZmZlcnMuY3JlYXRlIDAgXCJcIikpO1xuICAgICAgY2hhbm5lbF9vcHQgPSBOb25lO1xuICAgICAgZW5jb2RpbmcgPSBtb2RlO1xuICAgICAgY3VycmVudF9saW5lID0gW107XG4gICAgICAoKiBub2RlcyA9IHJlZiBbXTtcbiAgICAgICAgIGVkZ2VzID0gcmVmIFtdO1xuICAgICAgICAgICAgIGVkZ2VzX21hcCA9IHJlZiBNb2RzLlN0cmluZzJNYXAuZW1wdHk7KilcbiAgICB9XG4gIGluXG4gIGxldCAoKSA9IHByaW50X3ByZWFtYmxlIGxvZ2dlciBpblxuICBsb2dnZXJcblxubGV0IG9wZW5fcm93IGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gIHwgSFRNTF9UYWJ1bGFyIC0+IGZwcmludGYgbG9nZ2VyIFwiPHRyPlwiXG4gIHwgTWF0cml4IC0+IGZwcmludGYgbG9nZ2VyIFwiW1wiXG4gIHwgSnNvbiB8IE1hdGxhYiB8IE9jdGF2ZSB8IE1hdGhlbWF0aWNhIHwgTWFwbGUgfCBTQk1MIHwgRE9UTkVUIHwgSFRNTF9HcmFwaFxuICB8IEpzX0dyYXBoIHwgWExTIHwgSFRNTCB8IERPVCB8IFRYVCB8IFRYVF9UYWJ1bGFyIHwgR0VQSEkgLT5cbiAgICAoKVxuXG5sZXQgY2xvc2Vfcm93IGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gIHwgSFRNTF9UYWJ1bGFyIC0+IGZwcmludGYgbG9nZ2VyIFwiPHRyPkAuXCJcbiAgfCBNYXRyaXggLT4gZnByaW50ZiBsb2dnZXIgXCJdXFxuXCJcbiAgfCBKc29uIHwgTWF0bGFiIHwgT2N0YXZlIHwgTWFwbGUgfCBNYXRoZW1hdGljYSB8IFNCTUwgfCBET1RORVQgfCBIVE1MX0dyYXBoXG4gIHwgSnNfR3JhcGggfCBYTFMgfCBIVE1MIHwgRE9UIHwgVFhUIHwgVFhUX1RhYnVsYXIgfCBHRVBISSAtPlxuICAgIGZwcmludGYgbG9nZ2VyIFwiQC5cIlxuXG5sZXQgZm9ybWF0dGVyX29mX2xvZ2dlciBsb2dnZXIgPVxuICBtYXRjaCBsb2dnZXIubG9nZ2VyIHdpdGhcbiAgfCBGb3JtYXR0ZXIgZm10IC0+IFNvbWUgZm10XG4gIHwgREVWTlVMIHwgQ2lyY3VsYXJfYnVmZmVyIF8gfCBJbmZpbml0ZV9idWZmZXIgXyAtPiBOb25lXG5cbmxldCByZWRpcmVjdCBsb2dnZXIgZm10ID0geyBsb2dnZXIgd2l0aCBsb2dnZXIgPSBGb3JtYXR0ZXIgZm10IH1cbmxldCBwcmludF9hc19sb2dnZXIgbG9nZ2VyIGYgPSBmcHJpbnRmIGxvZ2dlciBcIiV0XCIgZlxuXG5sZXQgZmx1c2hfYnVmZmVyIGxvZ2dlciBmbXQgPVxuICBtYXRjaCBsb2dnZXIubG9nZ2VyIHdpdGhcbiAgfCBERVZOVUwgfCBGb3JtYXR0ZXIgXyAtPiAoKVxuICB8IENpcmN1bGFyX2J1ZmZlciBhIC0+IENpcmN1bGFyX2J1ZmZlcnMuaXRlciAoRm9ybWF0LmZwcmludGYgZm10IFwiJXNcIikgIWFcbiAgfCBJbmZpbml0ZV9idWZmZXIgYiAtPiBJbmZpbml0ZV9idWZmZXJzLml0ZXIgKEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzXCIpICFiXG5cbmxldCBmbHVzaF9hbmRfY2xlYW4gbG9nZ2VyIGZtdCA9XG4gIGxldCAoKSA9IGZsdXNoX2J1ZmZlciBsb2dnZXIgZm10IGluXG4gIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICB8IERFVk5VTCB8IEZvcm1hdHRlciBfIC0+ICgpXG4gIHwgQ2lyY3VsYXJfYnVmZmVyIGEgLT4gYSA6PSBDaXJjdWxhcl9idWZmZXJzLmNsZWFuICFhXG4gIHwgSW5maW5pdGVfYnVmZmVyIGIgLT4gYiA6PSBJbmZpbml0ZV9idWZmZXJzLmNsZWFuICFiXG5cbmxldCBmcHJpbnRmIGxvZ2dlciA9IGZwcmludGYgfmZwcmludG5ld2xpbmU6ZmFsc2UgbG9nZ2VyXG5sZXQgY2hhbm5lbF9vZl9sb2dnZXIgbG9nZ2VyID0gbG9nZ2VyLmNoYW5uZWxfb3B0XG5cbmxldCBwcmludF9iaW5kaW5nX3R5cGUgdCA/KGJpbmRpbmdfdHlwZV9zeW1ib2wgPSBcIi5cIikgfmFnZW50X25hbWUgfnNpdGVfbmFtZSAoKVxuICAgID1cbiAgZnByaW50ZiB0IFwiJXNcIlxuICAgIChQdWJsaWNfZGF0YS5zdHJpbmdfb2ZfYmluZGluZ190eXBlIH5iaW5kaW5nX3R5cGVfc3ltYm9sIH5hZ2VudF9uYW1lXG4gICAgICAgfnNpdGVfbmFtZSAoKSlcblxubGV0IGR1bXBfanNvbiBsb2dnZXIganNvbiA9XG4gIGxldCBjaGFubmVsX29wdCA9IGNoYW5uZWxfb2ZfbG9nZ2VyIGxvZ2dlciBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGNoYW5uZWxfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgY2hhbm5lbCAtPlxuICAgICAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnRvX2NoYW5uZWwgY2hhbm5lbCBqc29uIGluXG4gICAgICAoKVxuICBpblxuICAoKVxuXG5sZXQgbGluZV90b19qc29uIGxpbmUgPSBgQXNzb2MgWyBcImxpbmVcIiwgSnNvblV0aWwub2Zfc3RyaW5nIGxpbmUgXVxuXG5sZXQgbGluZV9vZl9qc29uIGpzb24gPVxuICBtYXRjaCBqc29uIHdpdGhcbiAgfCBgQXNzb2MgWyAoXCJsaW5lXCIsIGBTdHJpbmcgcykgXSAtPiBzXG4gIHwgXyAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwibGluZVwiLCBqc29uKSlcblxubGV0IGdlbl9pdGVyIGl0ZXIgbGlzdCA9XG4gIGxldCBvdXRwdXQgPSByZWYgW10gaW5cbiAgbGV0ICgpID0gaXRlciAoZnVuIGxpbmUgLT4gb3V0cHV0IDo9IGxpbmUgOjogIW91dHB1dCkgbGlzdCBpblxuICBKc29uVXRpbC5vZl9saXN0IGxpbmVfdG9fanNvbiAoTGlzdC5yZXYgIW91dHB1dClcblxubGV0IG9mX2pzb24gPSBKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJsaW5lIGxpc3RcIiBsaW5lX29mX2pzb25cblxubGV0IHRvX2pzb24gbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gIHwgREVWTlVMIHwgRm9ybWF0dGVyIF8gLT4gYExpc3QgW11cbiAgfCBDaXJjdWxhcl9idWZmZXIgYSAtPiBnZW5faXRlciBDaXJjdWxhcl9idWZmZXJzLml0ZXIgIWFcbiAgfCBJbmZpbml0ZV9idWZmZXIgYiAtPiBnZW5faXRlciBJbmZpbml0ZV9idWZmZXJzLml0ZXIgIWJcbiIsImxldCBzdHJpbmdfb2ZfdW5fb3AgbG9nZ2VyIG9wID1cbiAgbGV0IGZvcm1hdCA9IExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCBsb2dnZXIgaW5cbiAgbWF0Y2ggb3Agd2l0aFxuICB8IE9wZXJhdG9yLlVNSU5VUyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPG1pbnVzLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCItXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLkxPRyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGxvZy8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwibG9nXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLlNRUlQgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxyb290Lz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJzcXJ0XCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLkVYUCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGV4cC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwiZXhwXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLlNJTlVTIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8c2luLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJzaW5cIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXhcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuQ09TSU5VUyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGNvcy8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwiY29zXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLlRBTiAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPHRhbi8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwidGFuXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLklOVCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGZsb29yLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJmbG9vclwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcblxubGV0IHN0cmluZ19vZl9jb21wYXJlX29wIGxvZ2dlciBvcCA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgbG9nZ2VyIGluXG4gIG1hdGNoIG9wIHdpdGhcbiAgfCBPcGVyYXRvci5FUVVBTCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGVxLz5cIlxuICAgIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiAtPiBcIj09XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT4gXCI9XCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLkRJRkYgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxuZXEvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIiE9XCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLlNNQUxMRVIgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxsdC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwiPFwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5HUkVBVEVSIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8Z3QvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIj5cIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG5cbmxldCBzdHJpbmdfb2ZfYmluX29wIGxvZ2dlciBvcCA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgbG9nZ2VyIGluXG4gIG1hdGNoIG9wIHdpdGhcbiAgfCBPcGVyYXRvci5NT0RVTE8gLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxyZW0vPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIm1vZFwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5NQVggLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxtYXgvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIm1heFwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5NSU4gLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxtaW4vPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIm1pblwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5ESVYgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxkaXZpZGUvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcIi9cIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuU1VNIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8cGx1cy8+XCJcbiAgICB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiK1wiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5NSU5VUyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPG1pbnVzLz5cIlxuICAgIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLk1hdGxhYiAtPlxuICAgICAgXCItXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLk1VTFQgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjx0aW1lcy8+XCJcbiAgICB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiKlwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5QT1cgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxwb3dlci8+XCJcbiAgICB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiKipcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuSFRNTF9HcmFwaFxuICAgIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG5cbmxldCBzdHJpbmdfb2ZfYmluX2Jvb2xfb3AgbG9nZ2VyIG9wID1cbiAgbGV0IGZvcm1hdCA9IExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCBsb2dnZXIgaW5cbiAgbWF0Y2ggb3Agd2l0aFxuICB8IE9wZXJhdG9yLkFORCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGFuZC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiJlwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX0dyYXBoXG4gICAgfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5PUiAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPG9yLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLk1hdGxhYiAtPlxuICAgICAgXCJ8XCJcbiAgICB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuXG5sZXQgc3RyaW5nX29mX3VuX2Jvb2xfb3AgbG9nZ2VyIG9wID1cbiAgbGV0IGZvcm1hdCA9IExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCBsb2dnZXIgaW5cbiAgbWF0Y2ggb3Agd2l0aFxuICB8IE9wZXJhdG9yLk5PVCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPG5vdC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiIVwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX0dyYXBoXG4gICAgfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiIsIigqKlxuICAqIGdyYXBoX2xvZ2dlcnNfc2lnLm1sXG4gICpcbiAgKiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFudGlxdWUsIElOUklBIFBhcmlzXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDIzLzA1LzIwMTZcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMjUvMDUvMjAxNlxuICAqICpcbiAgKlxuICAqXG4gICogQ29weXJpZ2h0IDIwMTYgIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBkaXJlY3Rpb24gPSBEaXJlY3QgfCBSZXZlcnNlIHwgVW5kaXJlY3RlZCB8IEJvdGhcbnR5cGUgc2hhcGUgPSBJbnZpc2libGUgfCBIb3VzZSB8IFJlY3QgfCBFbGxpcHNlIHwgQ2lyY2xlIHwgSW52aG91c2VcbnR5cGUgaGVhZGtpbmQgPSBOb3JtYWwgfCBWZWUgfCBUZWUgfCBOb19oZWFkXG50eXBlIGxpbmVzdHlsZSA9IFBsYWluIHwgRG90dGVkIHwgRGFzaGVkXG5cbnR5cGUgY29sb3IgPVxuICB8IFJlZFxuICB8IEdyZWVuXG4gIHwgV2hpdGVcbiAgfCBCbHVlXG4gIHwgQmxhY2tcbiAgfCBMaWdodFNreUJsdWVcbiAgfCBQYWxlR3JlZW5cbiAgfCBCcm93blxuICB8IFllbGxvd1xuICB8IEdyZXlcblxudHlwZSBvcHRpb25zID1cbiAgfCBDb2xvciBvZiBjb2xvclxuICB8IEZpbGxDb2xvciBvZiBjb2xvclxuICB8IExhYmVsIG9mIHN0cmluZ1xuICB8IFdpZHRoIG9mIGludCAoKnBpeGVsKilcbiAgfCBIZWlnaHQgb2YgaW50ICgqcGl4ZWwqKVxuICB8IERpcmVjdGlvbiBvZiBkaXJlY3Rpb25cbiAgfCBTaGFwZSBvZiBzaGFwZVxuICB8IEFycm93SGVhZCBvZiBoZWFka2luZFxuICB8IEFycm93VGFpbCBvZiBoZWFka2luZFxuICB8IExpbmVTdHlsZSBvZiBsaW5lc3R5bGVcbiAgfCBPbkNsaWNrIG9mIFlvanNvbi5CYXNpYy50XG4gIHwgQ29udGV4dHVhbF9oZWxwIG9mIHN0cmluZ1xuICB8IFBvc2l0aW9uIG9mIExvYy50IGxpc3RcblxudHlwZSBncmFwaCA9XG4gIChzdHJpbmcgKiBvcHRpb25zIGxpc3QpIGxpc3QgKiAoc3RyaW5nICogc3RyaW5nICogb3B0aW9ucyBsaXN0KSBsaXN0XG5cbnR5cGUgdCA9IHtcbiAgbG9nZ2VyOiBMb2dnZXJzLnQ7XG4gIGlkX21hcDogaW50IE1vZHMuU3RyaW5nTWFwLnQgcmVmO1xuICBmcmVzaF9pZDogaW50IHJlZjtcbiAgbm9kZXM6IChzdHJpbmcgKiBvcHRpb25zIGxpc3QpIGxpc3QgcmVmO1xuICBlZGdlczogKHN0cmluZyAqIHN0cmluZyAqIG9wdGlvbnMgbGlzdCkgbGlzdCByZWY7XG4gIGVkZ2VzX21hcDogb3B0aW9ucyBsaXN0IGxpc3QgTW9kcy5TdHJpbmcyTWFwLnQgcmVmO1xufVxuXG5sZXQgbGlmdCB0ID0gdC5sb2dnZXJcblxubGV0IGV4dGVuZF9sb2dnZXIgbG9nZ2VyID1cbiAge1xuICAgIGxvZ2dlcjtcbiAgICBpZF9tYXAgPSByZWYgTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gICAgZnJlc2hfaWQgPSByZWYgMTtcbiAgICBub2RlcyA9IHJlZiBbXTtcbiAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICBlZGdlc19tYXAgPSByZWYgTW9kcy5TdHJpbmcyTWFwLmVtcHR5O1xuICB9XG5cbmxldCByZWZyZXNoX2lkIHQgPVxuICBsZXQgKCkgPSB0LmlkX21hcCA6PSBNb2RzLlN0cmluZ01hcC5lbXB0eSBpblxuICBsZXQgKCkgPSB0Lm5vZGVzIDo9IFtdIGluXG4gIGxldCAoKSA9IHQuZWRnZXMgOj0gW10gaW5cbiAgbGV0ICgpID0gdC5mcmVzaF9pZCA6PSAxIGluXG4gICgpXG5cbmxldCBhZGRfbm9kZSB0IHMgZCA9IHQubm9kZXMgOj0gKHMsIGQpIDo6ICEodC5ub2RlcylcblxubGV0IGFkZF9lZGdlIHQgczEgczIgZCA9XG4gIGxldCAoKSA9IHQuZWRnZXMgOj0gKHMxLCBzMiwgZCkgOjogISh0LmVkZ2VzKSBpblxuICBsZXQgbWFwID0gISh0LmVkZ2VzX21hcCkgaW5cbiAgbGV0IG9sZF9saXN0ID1cbiAgICBtYXRjaCBNb2RzLlN0cmluZzJNYXAuZmluZF9vcHRpb24gKHMxLCBzMikgbWFwIHdpdGhcbiAgICB8IFNvbWUgbCAtPiBsXG4gICAgfCBOb25lIC0+IFtdXG4gIGluXG4gIGxldCAoKSA9IHQuZWRnZXNfbWFwIDo9IE1vZHMuU3RyaW5nMk1hcC5hZGQgKHMxLCBzMikgKGQgOjogb2xkX2xpc3QpIG1hcCBpblxuICAoKVxuXG5sZXQgZ3JhcGhfb2ZfbG9nZ2VyIGxvZ2dlciA9IExpc3QucmV2ICEobG9nZ2VyLm5vZGVzKSwgTGlzdC5yZXYgIShsb2dnZXIuZWRnZXMpXG5sZXQgZ2V0X2VkZ2VfbWFwIHQgPSAhKHQuZWRnZXNfbWFwKVxubGV0IGdldF9ub2RlcyB0ID0gISh0Lm5vZGVzKVxubGV0IGZyZXNoX2lkIGxvZ2dlciA9IFRvb2xzLmdldF9yZWYgbG9nZ2VyLmZyZXNoX2lkXG5cbmxldCBpbnRfb2Zfc3RyaW5nX2lkIGxvZ2dlciBzdHJpbmcgPVxuICBtYXRjaCBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBzdHJpbmcgIShsb2dnZXIuaWRfbWFwKSB3aXRoXG4gIHwgU29tZSBhIC0+IGFcbiAgfCBOb25lIC0+XG4gICAgbGV0IGkgPSBmcmVzaF9pZCBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBsb2dnZXIuaWRfbWFwIDo9IE1vZHMuU3RyaW5nTWFwLmFkZCBzdHJpbmcgaSAhKGxvZ2dlci5pZF9tYXApIGluXG4gICAgaVxuIiwiKCoqXG4gICogZ3JhcGhfbG9nZ2Vycy5tbFxuICAqXG4gICogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBbnRpcXVlLCBJTlJJQSBQYXJpc1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyMy8wNS8yMDE2XG4gICogTGFzdCBtb2RpZmljYXRpb246IDI1LzA1LzIwMTZcbiAgKiAqXG4gICpcbiAgKlxuICAqIENvcHlyaWdodCAyMDE2ICBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBkb3RfY29sb3JfZW5jb2RpbmcgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlllbGxvdyAtPiBcInllbGxvd1wiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JleSAtPiBcImdyZXlcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlZCAtPiBcInJlZFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW4gLT4gXCJncmVlblwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2hpdGUgLT4gXCJ3aGl0ZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmx1ZSAtPiBcImJsdWVcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJsYWNrIC0+IFwiYmxhY2tcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZSAtPiBcIiM4N2NlZWJcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBhbGVHcmVlbiAtPiBcIiM5OGZiOThcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duIC0+IFwiYnJvd25cIlxuXG5sZXQgc3ZnX2NvbG9yX2VuY29kaW5nIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5ZZWxsb3cgLT4gXCIjZmYzXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5HcmV5IC0+IFwiI2FhYVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkIC0+IFwiI2YwMFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW4gLT4gXCIjMGYwXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5XaGl0ZSAtPiBcIiNmZmZcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJsdWUgLT4gXCIjMDBmXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbGFjayAtPiBcIiMwMDBcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZSAtPiBcIiM4Y2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBhbGVHcmVlbiAtPiBcIiM5ZjlcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duIC0+IFwiI2ZjOVwiXG5cbnR5cGUgbm9kZV9hdHRyaWJ1dGUgPSB7XG4gIG5vZGVfY29sb3I6IEdyYXBoX2xvZ2dlcnNfc2lnLmNvbG9yIG9wdGlvbjtcbiAgbm9kZV9maWxsY29sb3I6IEdyYXBoX2xvZ2dlcnNfc2lnLmNvbG9yIG9wdGlvbjtcbiAgbm9kZV9sYWJlbDogc3RyaW5nIG9wdGlvbjtcbiAgbm9kZV93aWR0aDogaW50IG9wdGlvbjtcbiAgbm9kZV9oZWlnaHQ6IGludCBvcHRpb247XG4gIG5vZGVfc2hhcGU6IEdyYXBoX2xvZ2dlcnNfc2lnLnNoYXBlIG9wdGlvbjtcbiAgbm9kZV9wb3NpdGlvbnM6IExvYy50IGxpc3Q7XG4gIG5vZGVfY29udGV4dHVhbF9oZWxwOiBzdHJpbmcgb3B0aW9uO1xuICBub2RlX29uX2NsaWNrOiBZb2pzb24uQmFzaWMudCBvcHRpb247XG59XG5cbnR5cGUgZWRnZV9hdHRyaWJ1dGUgPSB7XG4gIGVkZ2VfY29sb3I6IEdyYXBoX2xvZ2dlcnNfc2lnLmNvbG9yIG9wdGlvbjtcbiAgZWRnZV9sYWJlbDogc3RyaW5nIGxpc3Qgb3B0aW9uO1xuICBlZGdlX3N0eWxlOiBHcmFwaF9sb2dnZXJzX3NpZy5saW5lc3R5bGU7XG4gIGVkZ2VfZGlyZWN0aW9uOiBHcmFwaF9sb2dnZXJzX3NpZy5kaXJlY3Rpb247XG4gIGVkZ2VfYXJyb3doZWFkOiBHcmFwaF9sb2dnZXJzX3NpZy5oZWFka2luZDtcbiAgZWRnZV9hcnJvd3RhaWw6IEdyYXBoX2xvZ2dlcnNfc2lnLmhlYWRraW5kO1xuICBlZGdlX3Bvc2l0aW9uczogTG9jLnQgbGlzdDtcbiAgZWRnZV9jb250ZXh0dWFsX2hlbHA6IHN0cmluZyBvcHRpb247XG4gIGVkZ2Vfb25fY2xpY2s6IFlvanNvbi5CYXNpYy50IG9wdGlvbjtcbn1cblxubGV0IGR1bW15X25vZGUgPVxuICB7XG4gICAgbm9kZV9jb2xvciA9IE5vbmU7XG4gICAgbm9kZV9maWxsY29sb3IgPSBOb25lO1xuICAgIG5vZGVfbGFiZWwgPSBOb25lO1xuICAgIG5vZGVfd2lkdGggPSBOb25lO1xuICAgIG5vZGVfaGVpZ2h0ID0gTm9uZTtcbiAgICBub2RlX3NoYXBlID0gTm9uZTtcbiAgICBub2RlX3Bvc2l0aW9ucyA9IFtdO1xuICAgIG5vZGVfb25fY2xpY2sgPSBOb25lO1xuICAgIG5vZGVfY29udGV4dHVhbF9oZWxwID0gTm9uZTtcbiAgfVxuXG5sZXQgZHVtbXlfZWRnZSA9XG4gIHtcbiAgICBlZGdlX2NvbG9yID0gTm9uZTtcbiAgICBlZGdlX2xhYmVsID0gTm9uZTtcbiAgICBlZGdlX3N0eWxlID0gR3JhcGhfbG9nZ2Vyc19zaWcuUGxhaW47XG4gICAgZWRnZV9kaXJlY3Rpb24gPSBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Q7XG4gICAgZWRnZV9hcnJvd2hlYWQgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWw7XG4gICAgZWRnZV9hcnJvd3RhaWwgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWw7XG4gICAgZWRnZV9wb3NpdGlvbnMgPSBbXTtcbiAgICBlZGdlX29uX2NsaWNrID0gTm9uZTtcbiAgICBlZGdlX2NvbnRleHR1YWxfaGVscCA9IE5vbmU7XG4gIH1cblxubGV0IGlzX25vX25vZGVfYXR0cmlidXRlcyBub2RlX2F0dHJpYnV0ZSA9IG5vZGVfYXR0cmlidXRlID0gZHVtbXlfbm9kZVxuXG5sZXQgaXNfbm9fZWRnZV9hdHRyaWJ1dGVzIGVkZ2VfYXR0cmlidXRlID1cbiAgZHVtbXlfZWRnZVxuICA9IHtcbiAgICAgIGVkZ2VfYXR0cmlidXRlIHdpdGhcbiAgICAgIGVkZ2VfZGlyZWN0aW9uID0gR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0O1xuICAgICAgZWRnZV9hcnJvd2hlYWQgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWw7XG4gICAgICBlZGdlX2Fycm93dGFpbCA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbDtcbiAgICB9XG5cbmxldCBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sID1cbiAgaWYgYm9vbCB0aGVuXG4gICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIgXCJcbiAgZWxzZVxuICAgICgpXG5cbmxldCBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgYm9vbCA9XG4gIGlmIGJvb2wgdGhlblxuICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiLCBcIlxuICBlbHNlXG4gICAgKClcblxubGV0IGh0bWxfZGVwcyA9XG4gIFtcbiAgICBcImh0dHA6Ly9kM2pzLm9yZy9kMy52My5taW4uanNcIjtcbiAgICBcImh0dHA6Ly9jcGV0dGl0dC5naXRodWIuaW8vcHJvamVjdC9kYWdyZS1kMy9sYXRlc3QvZGFncmUtZDMubWluLmpzXCI7XG4gIF1cblxubGV0IHNoYWxsX0lfZG9faXQgZm9ybWF0IGZpbHRlcl9pbiBmaWx0ZXJfb3V0ID1cbiAgbGV0IGIxID1cbiAgICBtYXRjaCBmaWx0ZXJfaW4gd2l0aFxuICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIGwgLT4gTGlzdC5tZW0gZm9ybWF0IGxcbiAgaW5cbiAgYjEgJiYgbm90IChMaXN0Lm1lbSBmb3JtYXQgZmlsdGVyX291dClcblxubGV0IHByaW50X3ByZWFtYmxlX3NoYXJlZF9odG1sX2pzIGYgdGl0bGUgPVxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGRpdiBjbGFzcz1cXFwiY29udGFpbmVyXFxcIj5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8aDE+QFslc0BdPC9oMT5ALFwiIHRpdGxlIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8c3ZnIHdpZHRoPTk2MCBoZWlnaHQ9NjAwPjxnLz48L3N2Zz5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8c2NyaXB0PkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi8vIENyZWF0ZSBhIG5ldyBkaXJlY3RlZCBncmFwaEAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwidmFyIGcgPSBuZXcgZGFncmVEMy5ncmFwaGxpYi5HcmFwaCgpLnNldEdyYXBoKHt9KTtALFwiXG4gIGluXG5cbiAgKClcblxubGV0IHByaW50X2dyYXBoX3ByZWFtYmxlIGxvZ2dlciA/KGZpbHRlcl9pbiA9IE5vbmUpID8oZmlsdGVyX291dCA9IFtdKVxuICAgID8oaGVhZGVyID0gW10pIHRpdGxlID1cbiAgbGV0IGZvcm1hdCA9IExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gIGlmIHNoYWxsX0lfZG9faXQgZm9ybWF0IGZpbHRlcl9pbiBmaWx0ZXJfb3V0IHRoZW4gKFxuICAgIG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLkRPVCAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiMlc1wiIHggaW5cbiAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAgICAgICAoKSlcbiAgICAgICAgICBoZWFkZXJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcImRpZ3JhcGggR3tcIiBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICgpXG4gICAgfCBMb2dnZXJzLkpzX0dyYXBoIC0+XG4gICAgICAoKiBJTiBQUk9HRVNTICopXG4gICAgICBsZXQgZl9vcHQgPSBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXIgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgKG1hdGNoIGZfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGYgLT4gcHJpbnRfcHJlYW1ibGVfc2hhcmVkX2h0bWxfanMgZiB0aXRsZSlcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCAtPlxuICAgICAgbGV0IGZfb3B0ID0gTG9nZ2Vycy5mb3JtYXR0ZXJfb2ZfbG9nZ2VyIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgIChtYXRjaCBmX29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiPCEtLUAsXCIgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzXCIgeCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgICAgICAgICAoKSlcbiAgICAgICAgICAgIGhlYWRlclxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIi0tPkAsXCIgaW5cbiAgICAgICAgbGV0IGRlcGVuZGVuY3kgZiB0ID1cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPHNjcmlwdCBzcmM9XFxcIiVzXFxcIiBjaGFyc2V0PVxcXCJ1dGYtOFxcXCI+PC9zY3JpcHQ+XCIgdFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj48IWRvY3R5cGUgaHRtbD5ALEAsPGh0bWw+QCxcIiBpblxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxoZWFkPkAsPG1ldGEgY2hhcnNldD1cXFwidXRmLThcXFwiPkAsXCIgaW5cbiAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjx0aXRsZT4lczwvdGl0bGU+QCxcIiB0aXRsZSBpblxuICAgICAgICBsZXQgKCkgPSBQcC5saXN0IH50cmFpbGluZzpQcC5zcGFjZSBQcC5zcGFjZSBkZXBlbmRlbmN5IGYgaHRtbF9kZXBzIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0QF1ALDwvaGVhZD5ALFwiIChmdW4gZiAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxzdHlsZT5ALFwiIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcImR0IHtmbG9hdDogbGVmdDsgY2xlYXI6IGxlZnQ7IHdpZHRoOiAyMGVtO31ALFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcImRkIHtmb250LXdlaWdodDogYm9sZDsgbWFyZ2luOiAwIDAgMCAyMWVtO31ALFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIi5ub2RlIHJlY3Qge3N0cm9rZTogIzMzMzsgZmlsbDogI2ZmZjt9QCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgIFwiLmVkZ2VQYXRoIHBhdGgge3N0cm9rZTogIzMzMzsgZmlsbDogIzMzMzsgc3Ryb2tlLXdpZHRoOiBcXFxuICAgICAgICAgICAgICAgICAgIDEuNXB4O31cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQF1ALDwvc3R5bGU+XCIpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PGJvZHk+QCxcIiBpblxuICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVhbWJsZV9zaGFyZWRfaHRtbF9qcyBmIHRpdGxlIGluXG4gICAgICAgICgpKVxuICAgIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRoZW1hdGljYVxuICAgIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5TQk1MIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVFxuICAgIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICAoKVxuICApXG5cbmxldCBzdHJpbmdfb2ZfYXJyb3dfaW5faHRtbCBsb2dnZXIgYm9vbCB0aXRsZSBzdHlsZSA9XG4gIG1hdGNoIHN0eWxlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5UZWUgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gYm9vbFxuICAoKnwgVGVlIC0+XG4gICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciBib29sIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIiVzOiBcXFwidGVlXFxcIlwiIHRpdGxlXG4gICAgICAgIGluXG4gICAgICAgIHRydWUqKVxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPlxuICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciBib29sIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXM6IFxcXCJ2ZWVcXFwiXCIgdGl0bGVcbiAgICBpblxuICAgIHRydWVcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+XG4gICAgKCogbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2h0bWwgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICBsZXQgKCkgPVxuICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIlczogXFxcIm5vbmVcXFwiXCIgdGl0bGVcbiAgICAgICBpblxuICAgICAgIHRydWUqKVxuICAgIGJvb2xcblxubGV0IG1lcmdlIHMgcycgPVxuICBpZiBzID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCB0aGVuXG4gICAgcydcbiAgZWxzZVxuICAgIHNcblxubGV0IG1hdHJpeF9zdHJpbmdfb2Zfb3B0aW9ucyBsID1cbiAgbGV0IGkgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBpIGwgLT5cbiAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgeCAtPlxuICAgICAgICAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duIC0+IGkgKiA3XG4gICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbGFjayAtPiBpXG4gICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbiAtPiBpICogM1xuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkIC0+IGkgKiAtMVxuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmx1ZSAtPiBpICogNVxuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2hpdGUgLT4gaVxuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGlnaHRTa3lCbHVlIC0+IGkgKiAxMVxuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUGFsZUdyZWVuIC0+IGkgKiAxM1xuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JleSAtPiBpICogMTdcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlllbGxvdyAtPiBpICogMTkpXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb24gXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBfXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIF9cbiAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd1RhaWwgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBfXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIF9cbiAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdGlvbiBfXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSBfIC0+XG4gICAgICAgICAgICAgaSkpXG4gICAgICAxIGxcbiAgaW5cbiAgc3RyaW5nX29mX2ludCBpXG5cbmxldCBwcmludF9mb290X3NoYXJlZF9odG1sX2pzIGxvZ2dlciA9XG4gIGxldCAoKSA9XG4gICAgTW9kcy5TdHJpbmcyTWFwLml0ZXJcbiAgICAgIChmdW4gKGlkMSwgaWQyKSBsaXN0IC0+XG4gICAgICAgIGxldCBsaXN0ID0gTGlzdC5yZXYgbGlzdCBpblxuICAgICAgICBsZXQgaWQxX2ludCA9IEdyYXBoX2xvZ2dlcnNfc2lnLmludF9vZl9zdHJpbmdfaWQgbG9nZ2VyIGlkMSBpblxuICAgICAgICBsZXQgaWQyX2ludCA9IEdyYXBoX2xvZ2dlcnNfc2lnLmludF9vZl9zdHJpbmdfaWQgbG9nZ2VyIGlkMiBpblxuICAgICAgICBsZXQgYXR0cmlidXRlcyA9IGR1bW15X2VkZ2UgaW5cbiAgICAgICAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGF0dHJpYnV0ZXMgb3B0aW9uX2xpc3QgLT5cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGF0dHJpYnV0ZXMgb3B0aW9uIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBzIC0+XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfbGFiZWwgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4geyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9sYWJlbCA9IFNvbWUgWyBzIF0gfVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgcycgLT5cbiAgICAgICAgICAgICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2xhYmVsID0gU29tZSAocyA6OiBcIixcIiA6OiBzJykgfSlcbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgcyAtPlxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYXR0cmlidXRlcy5lZGdlX2NvbG9yIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfY29sb3IgPSBTb21lIHMgfVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgcycgd2hlbiBzID0gcycgLT4gYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZWRnZV9jb2xvciA9IFNvbWUgR3JhcGhfbG9nZ2Vyc19zaWcuQnJvd247XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9zdHlsZSA9IHMgfVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gcyAtPlxuICAgICAgICAgICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2RpcmVjdGlvbiA9IHMgfVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd1RhaWwgcyAtPlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgZWRnZV9hcnJvd3RhaWwgPSBtZXJnZSBzIGF0dHJpYnV0ZXMuZWRnZV9hcnJvd3RhaWw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIHMgLT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGVkZ2VfYXJyb3doZWFkID0gbWVyZ2UgcyBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3doZWFkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBvc2l0aW9uIHAgLT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGVkZ2VfcG9zaXRpb25zID0gcCBAIGF0dHJpYnV0ZXMuZWRnZV9wb3NpdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29udGV4dHVhbF9oZWxwIHMgLT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGVkZ2VfY29udGV4dHVhbF9oZWxwID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfY29udGV4dHVhbF9oZWxwIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBTb21lIHNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBzJyAtPiBTb21lIChzJyBeIHMpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb24gLT5cbiAgICAgICAgICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9vbl9jbGljayA9IFNvbWUganNvbiB9XG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCBfXG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIF9cbiAgICAgICAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIG9wdGlvbl9saXN0KVxuICAgICAgICAgICAgYXR0cmlidXRlcyBsaXN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICBcImcuc2V0RWRnZSglaSwlaSx7IFwiIGlkMV9pbnQgaWQyX2ludFxuICAgICAgICBpblxuICAgICAgICBsZXQgYXR0cmlidXRlcyA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2RpcmVjdGlvbiB3aXRoXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5VbmRpcmVjdGVkIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICBlZGdlX2Fycm93aGVhZCA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQ7XG4gICAgICAgICAgICAgIGVkZ2VfYXJyb3d0YWlsID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdCAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9hcnJvd3RhaWwgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJldmVyc2UgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfYXJyb3doZWFkID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Cb3RoIC0+IGF0dHJpYnV0ZXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPSBmYWxzZSBpblxuICAgICAgICBsZXQgYm9vbCwgc19vcHQgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9sYWJlbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2wsIE5vbmVcbiAgICAgICAgICB8IFNvbWUgc3RyaW5nX2xpc3QgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwibGFiZWw6IFxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzID1cbiAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICAgICAgICAgICAgICAgIChmdW4gZm10IC0+IExpc3QuaXRlciAoRm9ybWF0LmZwcmludGYgZm10IFwiJXNcIikpXG4gICAgICAgICAgICAgICAgKExpc3QucmV2IHN0cmluZ19saXN0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzX29wdCwgcycgPVxuICAgICAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPiAxMDAgdGhlblxuICAgICAgICAgICAgICAgIFNvbWUgcywgU3RyaW5nLnN1YiBzIDAgMTAwIF4gXCIuLi5cIlxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgTm9uZSwgc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXNcXFwiXCIgcydcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlLCBzX29wdFxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2NvbG9yIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0IGNvbG9yID0gc3ZnX2NvbG9yX2VuY29kaW5nIHMgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcInN0eWxlOiBcXFwic3Ryb2tlOiAlczsgZmlsbDogd2hpdGVcXFwiLCBhcnJvd2hlYWRTdHlsZTogXFxcImZpbGw6IFxcXG4gICAgICAgICAgICAgICAgICVzOyBzdHJva2U6ICVzXFxcIlwiXG4gICAgICAgICAgICAgICAgY29sb3IgY29sb3IgY29sb3JcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBzdHJpbmdfb2ZfYXJyb3dfaW5faHRtbCBsb2dnZXIgYm9vbCBcImFycm93aGVhZFwiXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3doZWFkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBzdHJpbmdfb2ZfYXJyb3dfaW5faHRtbCBsb2dnZXIgYm9vbCBcImFycm93dGFpbFwiXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3d0YWlsXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiIH0pO0AsXCIgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBzX29wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiPCEtLSVzLS0+XFxuXCIgc1xuICAgICAgICBpblxuICAgICAgICAoKSlcbiAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5nZXRfZWRnZV9tYXAgbG9nZ2VyKVxuICBpblxuICBsZXQgZl9vcHQgPSBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXIgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICBtYXRjaCBmX29wdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZiAtPlxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwidmFyIHN2ZyA9IGQzLnNlbGVjdChcXFwic3ZnXFxcIiksaW5uZXIgPSBzdmcuc2VsZWN0KFxcXCJnXFxcIik7QCxcIlxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi8vIFNldCB1cCB6b29tIHN1cHBvcnRALFwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCJ2YXIgem9vbSA9IGQzLmJlaGF2aW9yLnpvb20oKS5vbihcXFwiem9vbVxcXCIsIGZ1bmN0aW9uKCkge0AsXCJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwiaW5uZXIuYXR0cihcXFwidHJhbnNmb3JtXFxcIiwgXFxcInRyYW5zbGF0ZShcXFwiICsgZDMuZXZlbnQudHJhbnNsYXRlICsgXFxcIilcXFwiIFxcXG4gICAgICAgICArQCxcIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCJcXFwic2NhbGUoXFxcIiArIGQzLmV2ZW50LnNjYWxlICsgXFxcIilcXFwiKTtALH0pO0Asc3ZnLmNhbGwoem9vbSk7XCJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwiLy8gQ3JlYXRlIHRoZSByZW5kZXJlckAsIHZhciByZW5kZXIgPSBuZXcgZGFncmVEMy5yZW5kZXIoKTtALFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcIi8vIFJ1biB0aGUgcmVuZGVyZXIuIFRoaXMgaXMgd2hhdCBkcmF3cyB0aGUgZmluYWwgZ3JhcGguQCxcIlxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInJlbmRlcihpbm5lciwgZyk7QCxcIiBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLy8gQ2VudGVyIHRoZSBncmFwaEAsdmFyIGluaXRpYWxTY2FsZSA9IDAuNzU7QCxcIlxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInpvb21ALFwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCIudHJhbnNsYXRlKFsoc3ZnLmF0dHIoXFxcIndpZHRoXFxcIikgLSBnLmdyYXBoKCkud2lkdGggKiBpbml0aWFsU2NhbGUpIC8gXFxcbiAgICAgICAgIDIsIDIwXSlALFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiLnNjYWxlKGluaXRpYWxTY2FsZSlALC5ldmVudChzdmcpO0AsXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcInN2Zy5hdHRyKCdoZWlnaHQnLCBnLmdyYXBoKCkuaGVpZ2h0ICogaW5pdGlhbFNjYWxlICsgNDApO1wiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQCw8L3NjcmlwdD5cIiBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJALDwvZGl2PlwiIGluXG4gICAgKClcblxubGV0IHByaW50X2dyYXBoX2Zvb3QgbG9nZ2VyID1cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuRE9UIC0+XG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJ9XCIgaW5cbiAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICB8IExvZ2dlcnMuTWF0cml4IC0+XG4gICAgbGV0IG5vZGVzID0gR3JhcGhfbG9nZ2Vyc19zaWcuZ2V0X25vZGVzIGxvZ2dlciBpblxuICAgIGxldCBlZGdlcyA9IEdyYXBoX2xvZ2dlcnNfc2lnLmdldF9lZGdlX21hcCBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcXCJydWxlc1xcXCIgOlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLm9wZW5fcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHNlcCAocywgXykgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1xcXCIlc1xcXCJcIiBzZXAgc1xuICAgICAgICAgIGluXG4gICAgICAgICAgXCIsIFwiKVxuICAgICAgICBcIlwiIG5vZGVzXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmNsb3NlX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIsXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFxcImhpdHNcXFwiIDpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5vcGVuX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0IF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBzZXAgXyAtPlxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXMxXCIgc2VwIGluXG4gICAgICAgICAgXCIsIFwiKVxuICAgICAgICBcIlwiIG5vZGVzXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmNsb3NlX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIsXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFxcImZsdXhzXFxcIiA6XCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMub3Blbl9yb3cgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gYiAoczEsIF8pIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIGlmIGIgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiLFwiIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLm9wZW5fcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIHNlcCAoczIsIF8pIC0+XG4gICAgICAgICAgICAgICAgbGV0IGNvbG9yX3ZhbHVlID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIE1vZHMuU3RyaW5nMk1hcC5maW5kX29wdGlvbiAoczEsIHMyKSBlZGdlcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gXCIwXCJcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBvcHRpb25zIC0+IG1hdHJpeF9zdHJpbmdfb2Zfb3B0aW9ucyBvcHRpb25zXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICAgICAgXCIlcyVzXCIgc2VwIGNvbG9yX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBcIiwgXCIpXG4gICAgICAgICAgICAgIFwiXCIgbm9kZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuY2xvc2Vfcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICAgICB0cnVlKVxuICAgICAgICBmYWxzZSBub2Rlc1xuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5jbG9zZV9yb3cgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgKClcbiAgfCBMb2dnZXJzLkpzX0dyYXBoIC0+IHByaW50X2Zvb3Rfc2hhcmVkX2h0bWxfanMgbG9nZ2VyXG4gIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIC0+XG4gICAgbGV0IGZfb3B0ID0gTG9nZ2Vycy5mb3JtYXR0ZXJfb2ZfbG9nZ2VyIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAobWF0Y2ggZl9vcHQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBmIC0+XG4gICAgICBsZXQgKCkgPSBwcmludF9mb290X3NoYXJlZF9odG1sX2pzIGxvZ2dlciBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkAsPC9ib2R5PkBdQCw8L2h0bWw+QF1ALlwiIGluXG4gICAgICAoKSlcbiAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuTWFwbGVcbiAgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLlNCTUxcbiAgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhclxuICB8IExvZ2dlcnMuWExTIC0+XG4gICAgKClcblxubGV0IHByaW50X2NvbW1lbnQgbG9nZ2VyID8oZmlsdGVyX2luID0gTm9uZSkgPyhmaWx0ZXJfb3V0ID0gW10pIHN0cmluZyA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICBpZiBzaGFsbF9JX2RvX2l0IGZvcm1hdCBmaWx0ZXJfaW4gZmlsdGVyX291dCB0aGVuIChcbiAgICBtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5ET1QgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiIyVzXCIgc3RyaW5nXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzXCIgc3RyaW5nXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyXG4gICAgfCBMb2dnZXJzLlhMUyB8IExvZ2dlcnMuR0VQSEkgLT5cbiAgICAgICgpXG4gIClcblxubGV0IG9wZW5fYXNzbyBsb2dnZXIgPVxuICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPlxuICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFx0PHA+PGRsPlxcblwiXG4gIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuTWFwbGVcbiAgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdHJpeFxuICB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVFxuICB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyB8IExvZ2dlcnMuR0VQSEkgLT5cbiAgICAoKVxuXG5sZXQgY2xvc2VfYXNzbyBsb2dnZXIgPVxuICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPlxuICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFx0XFx0PC9kbD48L3A+XFxuXCJcbiAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk1hcGxlXG4gIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuTWF0cml4XG4gIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUXG4gIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIHwgTG9nZ2Vycy5HRVBISSAtPlxuICAgICgpXG5cbmxldCBwcmludF9hc3NvIGxvZ2dlciBzdHJpbmcxIHN0cmluZzIgPVxuICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gIHwgTG9nZ2Vycy5ET1QgLT5cbiAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIi8qJXMgJXMqL1wiIHN0cmluZzEgc3RyaW5nMlxuICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggLT5cbiAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgIFwiXFx0XFx0XFx0PGR0PiVzPC9kdD48ZGQ+JXM8L2RkPlwiIHN0cmluZzEgc3RyaW5nMlxuICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLlNCTUxcbiAgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2FcbiAgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhclxuICB8IExvZ2dlcnMuWExTIHwgTG9nZ2Vycy5HRVBISSAtPlxuICAgICgpXG5cbmxldCBzaGFwZV9pbl9kb3Qgc2hhcGUgPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aXNpYmxlIC0+IFwic3R5bGU9aW52aXNcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkludmhvdXNlIC0+IFwic2hhcGU9aW52aG91c2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhvdXNlIC0+IFwic2hhcGU9aG91c2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlY3QgLT4gXCJzaGFwZT1ib3hcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2UgLT4gXCJzaGFwZT1lbGxpcHNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5DaXJjbGUgLT4gXCJzaGFwZT1jaXJjbGVcIlxuXG5sZXQgc2hhcGVfaW5faHRtbCBzaGFwZSA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5JbnZpc2libGUgLT4gU29tZSBcInN0eWxlOiBcXFwidmlzaWJpbGl0eTpoaWRkZW5cXFwiXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZSAtPiBTb21lIFwic2hhcGU6IFxcXCJpbnZob3VzZVxcXCJcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhvdXNlIC0+IFNvbWUgXCJzaGFwZTogXFxcImhvdXNlXFxcIlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmVjdCAtPiBTb21lIFwic2hhcGU6IFxcXCJyZWN0XFxcIlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRWxsaXBzZSAtPiBTb21lIFwic2hhcGU6IFxcXCJlbGxpcHNlXFxcIlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ2lyY2xlIC0+IFNvbWUgXCJzaGFwZTogXFxcImVsbGlwc2VcXFwiXCJcblxubGV0IHN0cmluZ19vbmVfb2ZfbGluZXN0eWxlX2luX2RvdCBfID0gXCItXCJcbmxldCBzdHJpbmdfdHdvX29mX2xpbmVzdHlsZV9pbl9kb3QgXyA9IFwiLS1cIlxuXG5sZXQgc3RyaW5nX29mX2Fycm93X2hlYWRfaW5fZG90IHN0eWxlID1cbiAgbWF0Y2ggc3R5bGUgd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbCAtPiBcIj5cIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPiBcInw+XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5UZWUgLT4gXCJ8XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+IFwiXCJcblxubGV0IHN0cmluZ19vZl9hcnJvd190YWlsX2luX2RvdCBzdHlsZSA9XG4gIG1hdGNoIHN0eWxlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gXCI8XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5WZWUgLT4gXCI8fFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIC0+IFwifFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCAtPiBcIlwiXG5cbmxldCBwcmludF9ub2RlIGxvZ2dlciA/KGRpcmVjdGl2ZXMgPSBbXSkgaWQgPVxuICBsZXQgYXR0cmlidXRlcyA9IGR1bW15X25vZGUgaW5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIG1hdGNoIExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIHdpdGhcbiAgICB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuVFhUXG4gICAgfCBMb2dnZXJzLkdFUEhJIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGF0dHJpYnV0ZXMgb3B0aW9uIC0+XG4gICAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIHMgLT4geyBhdHRyaWJ1dGVzIHdpdGggbm9kZV9sYWJlbCA9IFNvbWUgcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBzIC0+IHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfY29sb3IgPSBTb21lIHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIHMgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfZmlsbGNvbG9yID0gU29tZSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIGkgLT4geyBhdHRyaWJ1dGVzIHdpdGggbm9kZV93aWR0aCA9IFNvbWUgaSB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgaSAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggbm9kZV9oZWlnaHQgPSBTb21lIGkgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgcyAtPiB7IGF0dHJpYnV0ZXMgd2l0aCBub2RlX3NoYXBlID0gU29tZSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBvc2l0aW9uIHAgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfcG9zaXRpb25zID0gcCBAIGF0dHJpYnV0ZXMubm9kZV9wb3NpdGlvbnMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBqc29uIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBub2RlX29uX2NsaWNrID0gU29tZSBqc29uIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBzIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICBub2RlX2NvbnRleHR1YWxfaGVscCA9XG4gICAgICAgICAgICAgICAgKG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9jb250ZXh0dWFsX2hlbHAgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBTb21lIHNcbiAgICAgICAgICAgICAgICB8IFNvbWUgcycgLT4gU29tZSAocycgXiBzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdGlvbiBfXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd1RhaWwgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCBfIC0+XG4gICAgICAgICAgICBhdHRyaWJ1dGVzKVxuICAgICAgICBhdHRyaWJ1dGVzIGRpcmVjdGl2ZXNcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdGhlbWF0aWNhXG4gICAgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuU0JNTFxuICAgIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLkhUTUwgLT5cbiAgICAgIGF0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuRE9UIC0+XG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJcXFwiJXNcXFwiXCIgaWQgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgaXNfbm9fbm9kZV9hdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgdGhlblxuICAgICAgICAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiIFtcIiBpblxuICAgICAgICBsZXQgYm9vbCA9IGZhbHNlIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfbGFiZWwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIHN0cmluZyAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwibGFiZWw9XFxcIiVzXFxcIlwiIHN0cmluZ1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9zaGFwZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2xcbiAgICAgICAgICB8IFNvbWUgc2hhcGUgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcIiVzXCIgKHNoYXBlX2luX2RvdCBzaGFwZSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfd2lkdGggd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIGkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwid2lkdGg9XFxcIiVpcHhcXFwiXCIgaVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9oZWlnaHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIGkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImhlaWdodD1cXFwiJWlweFxcXCJcIiBpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX2NvbG9yIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJjb2xvcj1cXFwiJXNcXFwiXCIgKGRvdF9jb2xvcl9lbmNvZGluZyBzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9maWxsY29sb3Igd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImZpbGxjb2xvcj1cXFwiJXNcXFwiIHN0eWxlPWZpbGxlZFwiIChkb3RfY29sb3JfZW5jb2RpbmcgcylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IGlmIGJvb2wgdGhlbiAoKSBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIl07XCIgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgICgpXG4gIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIC0+XG4gICAgbGV0IGlkX2ludCA9IEdyYXBoX2xvZ2dlcnNfc2lnLmludF9vZl9zdHJpbmdfaWQgbG9nZ2VyIGlkIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiZy5zZXROb2RlKCVpLCB7IFwiIGlkX2ludFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGlzX25vX25vZGVfYXR0cmlidXRlcyBhdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc3RyaW5nID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfbGFiZWwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZFxuICAgICAgICAgIHwgU29tZSBzdHJpbmcgLT4gc3RyaW5nXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzdHJpbmcgPSBTdHJpbmcuZXNjYXBlZCBzdHJpbmcgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcImxhYmVsOiBcXFwiJXNcXFwiXCIgc3RyaW5nXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX3NoYXBlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc2hhcGUgLT5cbiAgICAgICAgICAgIChtYXRjaCBzaGFwZV9pbl9odG1sIHNoYXBlIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIHNoYXBlIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciB0cnVlIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1wiIHNoYXBlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV93aWR0aCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIGkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciB0cnVlIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIndpZHRoOiBcXFwiJWlcXFwiXCIgaVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX2hlaWdodCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIGkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciB0cnVlIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcImhlaWdodDogXFxcIiVpXFxcIlwiIGlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9jb2xvciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciB0cnVlIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJjb2xvcjogXFxcIiVzXFxcIlwiIChzdmdfY29sb3JfZW5jb2RpbmcgcylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9maWxsY29sb3Igd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgdHJ1ZSBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwic3R5bGU6IFxcXCJmaWxsOiAlc1xcXCIgXCIgKHN2Z19jb2xvcl9lbmNvZGluZyBzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgICgpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiB9KTtALFwiIGluXG4gICAgKClcbiAgfCBMb2dnZXJzLlRYVCAtPlxuICAgIChtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfbGFiZWwgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJOb2RlOiAlc1wiIGlkIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgKClcbiAgICB8IFNvbWUgbGFiZWwgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICBcIk5vZGU6JXMsIExhYmVsOiVzXCIgaWQgbGFiZWxcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgKCkpXG4gIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSnNvbiAtPlxuICAgIEdyYXBoX2xvZ2dlcnNfc2lnLmFkZF9ub2RlIGxvZ2dlciBpZCBkaXJlY3RpdmVzXG4gIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0bGFiXG4gIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhclxuICB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICgpXG5cbmxldCBwcmludF9lZGdlIGxvZ2dlciA/KGRpcmVjdGl2ZXMgPSBbXSkgPyhwcmVmaXggPSBcIlwiKSBpZDEgaWQyID1cbiAgbGV0IGF0dHJpYnV0ZXMgPSBkdW1teV9lZGdlIGluXG4gIGxldCBhdHRyaWJ1dGVzID1cbiAgICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gICAgfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaFxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkdFUEhJIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGF0dHJpYnV0ZXMgb3B0aW9uIC0+XG4gICAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIHMgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfbGFiZWwgPSBTb21lIFsgcyBdIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIHMgLT4geyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9jb2xvciA9IFNvbWUgcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgcyAtPiB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX3N0eWxlID0gcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gcyAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9kaXJlY3Rpb24gPSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93VGFpbCBzIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2Fycm93dGFpbCA9IHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIHMgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfYXJyb3doZWFkID0gcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvbiBwIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX3Bvc2l0aW9ucyA9IHAgQCBhdHRyaWJ1dGVzLmVkZ2VfcG9zaXRpb25zIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBzIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICBlZGdlX2NvbnRleHR1YWxfaGVscCA9XG4gICAgICAgICAgICAgICAgKG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9jb250ZXh0dWFsX2hlbHAgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBTb21lIHNcbiAgICAgICAgICAgICAgICB8IFNvbWUgcycgLT4gU29tZSAocycgXiBzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb24gLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2Vfb25fY2xpY2sgPSBTb21lIGpzb24gfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIF9cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIF8gLT5cbiAgICAgICAgICAgIGF0dHJpYnV0ZXMpXG4gICAgICAgIGF0dHJpYnV0ZXMgZGlyZWN0aXZlc1xuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0bGFiXG4gICAgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMU1xuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgLT5cbiAgICAgIGF0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuRE9UIC0+XG4gICAgbGV0IGRpcmVjdGlvbiA9XG4gICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfZGlyZWN0aW9uIHdpdGhcbiAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0IC0+XG4gICAgICAgIHN0cmluZ19vbmVfb2ZfbGluZXN0eWxlX2luX2RvdCBhdHRyaWJ1dGVzLmVkZ2Vfc3R5bGVcbiAgICAgICAgXiBzdHJpbmdfb2ZfYXJyb3dfaGVhZF9pbl9kb3QgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsXG4gICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlVuZGlyZWN0ZWQgLT5cbiAgICAgICAgc3RyaW5nX3R3b19vZl9saW5lc3R5bGVfaW5fZG90IGF0dHJpYnV0ZXMuZWRnZV9zdHlsZVxuICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Cb3RoIC0+XG4gICAgICAgIHN0cmluZ19vZl9hcnJvd190YWlsX2luX2RvdCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcbiAgICAgICAgXiBzdHJpbmdfb25lX29mX2xpbmVzdHlsZV9pbl9kb3QgYXR0cmlidXRlcy5lZGdlX3N0eWxlXG4gICAgICAgIF4gc3RyaW5nX29mX2Fycm93X2hlYWRfaW5fZG90IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbFxuICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZXZlcnNlIC0+XG4gICAgICAgIHN0cmluZ19vZl9hcnJvd190YWlsX2luX2RvdCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcbiAgICAgICAgXiBzdHJpbmdfb25lX29mX2xpbmVzdHlsZV9pbl9kb3QgYXR0cmlidXRlcy5lZGdlX3N0eWxlXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgXCJcXFwiJXNcXFwiICVzIFxcXCIlc1xcXCJcIiBpZDEgZGlyZWN0aW9uIGlkMlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGlzX25vX2VkZ2VfYXR0cmlidXRlcyBhdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiBbXCIgaW5cbiAgICAgICAgbGV0IGJvb2wgPSBmYWxzZSBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2xhYmVsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzdHJpbmdfbGlzdCAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJsYWJlbD1cXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAoTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1wiKVxuICAgICAgICAgICAgICAgIChMaXN0LnJldiBzdHJpbmdfbGlzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcXCJcIiBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX3N0eWxlIHdpdGhcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluIC0+IGJvb2xcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRvdHRlZCAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJzdHlsZT1cXFwiZG90dGVkXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGFzaGVkIC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcInN0eWxlPVxcXCJkYXNoZWRcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfY29sb3Igd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImNvbG9yPVxcXCIlc1xcXCJcIiAoZG90X2NvbG9yX2VuY29kaW5nIHMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2Fycm93aGVhZCB3aXRoXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gYm9vbFxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJhcnJvd2hlYWQ9XFxcInRlZVxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiYXJyb3doZWFkPVxcXCJ2ZWVcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJhcnJvd2hlYWQ9XFxcIm5vbmVcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3d0YWlsIHdpdGhcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbCAtPiBib29sXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5UZWUgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImFycm93dGFpbD1cXFwidGVlXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVmVlIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJhcnJvd3RhaWw9XFxcInZlZVxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImFycm93dGFpbD1cXFwibm9uZVxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gaWYgYm9vbCB0aGVuICgpIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXTtcIiBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgICAoKVxuICAgICAgKVxuICAgIGluXG4gICAgKClcbiAgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuSFRNTCAtPlxuICAgIGxldCBsYWJlbCA9XG4gICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfbGFiZWwgd2l0aFxuICAgICAgfCBOb25lIC0+IFsgXCJcIiBdXG4gICAgICB8IFNvbWUgeCAtPiB4XG4gICAgaW5cbiAgICBsZXQgYXJyb3cgPVxuICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2Fycm93aGVhZCB3aXRoXG4gICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgLT4gXCItLVwiXG4gICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbCB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPiBcIi0+XCJcbiAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIC0+IFwiLXxcIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgIFwiJXMlcyAlcyAlc1wiIHByZWZpeCBpZDEgYXJyb3cgaWQyXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzXCIpXG4gICAgICAgIChMaXN0LnJldiBsYWJlbClcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgKClcbiAgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkhUTUxfR3JhcGhcbiAgfCBMb2dnZXJzLkpzX0dyYXBoIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuYWRkX2VkZ2UgbG9nZ2VyIGlkMSBpZDIgZGlyZWN0aXZlc1xuICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGxhYlxuICB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5TQk1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyXG4gIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAoKVxuXG5sZXQgcHJpbnRfb25lX3RvX25fcmVsYXRpb24gbG9nZ2VyID8oZGlyZWN0aXZlcyA9IFtdKVxuICAgID8oc3R5bGVfb25lID0gR3JhcGhfbG9nZ2Vyc19zaWcuUGxhaW4pID8oc3R5bGVfbiA9IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluKVxuICAgIGlkIGlkbGlzdCA9XG4gIGxldCBmaWN0aXRpb3VzID0gXCJGaWN0aXRpb3VzX1wiIF4gaWQgaW5cbiAgbGV0IGRpcmVjdGl2ZXNfZmljdCA9XG4gICAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIC0+XG4gICAgICBMaXN0LnJldlxuICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgXCJcIlxuICAgICAgIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIEdyYXBoX2xvZ2dlcnNfc2lnLkNpcmNsZVxuICAgICAgIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIDAgOjogR3JhcGhfbG9nZ2Vyc19zaWcuSGVpZ2h0IDBcbiAgICAgICA6OiBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgR3JhcGhfbG9nZ2Vyc19zaWcuQmxhY2tcbiAgICAgICA6OiBMaXN0LnJldiBkaXJlY3RpdmVzKVxuICAgIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5ET1RcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBMaXN0LnJldlxuICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgXCJcIlxuICAgICAgIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIEdyYXBoX2xvZ2dlcnNfc2lnLkludmlzaWJsZVxuICAgICAgIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIDAgOjogR3JhcGhfbG9nZ2Vyc19zaWcuSGVpZ2h0IDBcbiAgICAgICA6OiBMaXN0LnJldiBkaXJlY3RpdmVzKVxuICBpblxuICBsZXQgZGlyZWN0aXZlc19vbmUgPVxuICAgIGlmIHN0eWxlX29uZSA9IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluIHRoZW5cbiAgICAgIGRpcmVjdGl2ZXNcbiAgICBlbHNlXG4gICAgICBMaXN0LnJldiAoR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIHN0eWxlX29uZSA6OiBMaXN0LnJldiBkaXJlY3RpdmVzKVxuICBpblxuICBsZXQgZGlyZWN0aXZlc19uID1cbiAgICBpZiBzdHlsZV9uID0gR3JhcGhfbG9nZ2Vyc19zaWcuUGxhaW4gdGhlblxuICAgICAgZGlyZWN0aXZlc1xuICAgIGVsc2VcbiAgICAgIExpc3QucmV2IChHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgc3R5bGVfbiA6OiBMaXN0LnJldiBkaXJlY3RpdmVzKVxuICBpblxuICBsZXQgXyA9IHByaW50X25vZGUgbG9nZ2VyIGZpY3RpdGlvdXMgfmRpcmVjdGl2ZXM6ZGlyZWN0aXZlc19maWN0IGluXG4gIGxldCBfID0gcHJpbnRfZWRnZSBsb2dnZXIgfmRpcmVjdGl2ZXM6ZGlyZWN0aXZlc19vbmUgZmljdGl0aW91cyBpZCBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIGlkJyAtPiBwcmludF9lZGdlIGxvZ2dlciB+ZGlyZWN0aXZlczpkaXJlY3RpdmVzX24gZmljdGl0aW91cyBpZCcpXG4gICAgICBpZGxpc3RcbiAgaW5cbiAgKClcblxubGV0IF8gPVxuICBsZXQgZiB0IHQnID0gdC5lZGdlX29uX2NsaWNrLCB0Jy5ub2RlX29uX2NsaWNrIGluXG4gIGZcbiIsIigqKlxuICAqIGdyYXBoX2pzLm1sXG4gICpcbiAgKiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFudGlxdWUsIElOUklBIFBhcmlzXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDIzLzA1LzIwMTZcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMjUvMDUvMjAxNlxuICAqICpcbiAgKlxuICAqXG4gICogQ29weXJpZ2h0IDIwMTYgIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGRpcmVjdGlvbl90b19qc29uIGRpcmVjdGlvbiA9XG4gIG1hdGNoIGRpcmVjdGlvbiB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0IC0+IGBTdHJpbmcgXCJEaXJlY3RcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJldmVyc2UgLT4gYFN0cmluZyBcIlJldmVyc2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlVuZGlyZWN0ZWQgLT4gYFN0cmluZyBcIlVuZGlyZWN0ZWRcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJvdGggLT4gYFN0cmluZyBcIkJvdGhcIlxuXG5sZXQgc2hhcGVfdG9fanNvbiBzaGFwZSA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5JbnZpc2libGUgLT4gYFN0cmluZyBcIkludmlzaWJsZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSG91c2UgLT4gYFN0cmluZyBcIkhvdXNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZSAtPiBgU3RyaW5nIFwiSW52aG91c2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlY3QgLT4gYFN0cmluZyBcInJlY3RcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2UgLT4gYFN0cmluZyBcImVsbGlwc2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNpcmNsZSAtPiBgU3RyaW5nIFwiY2lyY2xlXCJcblxubGV0IGhlYWRraW5kX3RvX2pzb24gaGVhZGtpbmQgPVxuICBtYXRjaCBoZWFka2luZCB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVmVlIC0+IGBTdHJpbmcgXCJ2ZWVcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlRlZSAtPiBgU3RyaW5nIFwiVGVlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+IGBTdHJpbmcgXCJ1bmRpcmVjdGVkXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gYFN0cmluZyBcIm5vcm1hbFwiXG5cbmxldCBsaW5lc3R5bGVfdG9fanNvbiBsaW5lc3R5bGUgPVxuICBtYXRjaCBsaW5lc3R5bGUgd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluIC0+IGBTdHJpbmcgXCJQbGFpblwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRG90dGVkIC0+IGBTdHJpbmcgXCJEb3R0ZWRcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRhc2hlZCAtPiBgU3RyaW5nIFwiRGFzaGVkXCJcblxubGV0IGNvbG9yX3RvX2pzb24gY29sb3IgPVxuICBtYXRjaCBjb2xvciB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkIC0+IGBTdHJpbmcgXCJyZWRcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuIC0+IGBTdHJpbmcgXCJncmVlblwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2hpdGUgLT4gYFN0cmluZyBcIndoaXRlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbHVlIC0+IGBTdHJpbmcgXCJibHVlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbGFjayAtPiBgU3RyaW5nIFwiYmxhY2tcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZSAtPiBgU3RyaW5nIFwibGlnaHRza3libHVlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5QYWxlR3JlZW4gLT4gYFN0cmluZyBcInBhbGVncmVlblwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQnJvd24gLT4gYFN0cmluZyBcImJyb3duXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5ZZWxsb3cgLT4gYFN0cmluZyBcInllbGxvd1wiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JleSAtPiBgU3RyaW5nIFwiZ3JleVwiXG5cbmxldCBkaXJlY3RpdmVfdG9fanNvbiBvcHRpb24gPVxuICBtYXRjaCBvcHRpb24gd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIGNvbG9yIC0+IFwiY29sb3JcIiwgY29sb3JfdG9fanNvbiBjb2xvclxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBjb2xvciAtPiBcImZpbGxjb2xvclwiLCBjb2xvcl90b19qc29uIGNvbG9yXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgc3RyaW5nIC0+IFwibGFiZWxcIiwgYFN0cmluZyBzdHJpbmdcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCBpbnQgLT4gXCJ3aWR0aFwiLCBgSW50IGludFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCBpbnQgLT4gXCJoZWlnaHRcIiwgYEludCBpbnRcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gZGlyZWN0aW9uIC0+XG4gICAgXCJkaXJlY3Rpb25cIiwgZGlyZWN0aW9uX3RvX2pzb24gZGlyZWN0aW9uXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgc2hhcGUgLT4gXCJzaGFwZVwiLCBzaGFwZV90b19qc29uIHNoYXBlXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIGhlYWRraW5kIC0+XG4gICAgXCJhcnJvd2hlYWRcIiwgaGVhZGtpbmRfdG9fanNvbiBoZWFka2luZFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93VGFpbCBoZWFka2luZCAtPlxuICAgIFwiYXJyb3d0YWlsXCIsIGhlYWRraW5kX3RvX2pzb24gaGVhZGtpbmRcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgbGluZXN0eWxlIC0+XG4gICAgXCJsaW5lc3R5bGVcIiwgbGluZXN0eWxlX3RvX2pzb24gbGluZXN0eWxlXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb24gcCAtPlxuICAgICggXCJwb3NpdGlvblwiLFxuICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAoZnVuIGpzb24gLT4gTG9jLnlvanNvbl9vZl9hbm5vdGVkIEpzb25VdGlsLm9mX3VuaXQgKCgpLCBqc29uKSlcbiAgICAgICAgcCApXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29udGV4dHVhbF9oZWxwIHMgLT5cbiAgICBcImNvbnRleHR1YWwgaGVscFwiLCBKc29uVXRpbC5vZl9zdHJpbmcgc1xuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk9uQ2xpY2sganNvbiAtPiBcIm9uX2NsaWNrXCIsIGpzb25cblxubGV0IGRpcmVjdGl2ZXNfdG9fanNvbiA9IEpzb25VdGlsLm9mX2Fzc29jIGRpcmVjdGl2ZV90b19qc29uXG5cbmxldCBub2RlX3RvX2pzb24gKGlkLCBkaXJlY3RpdmVzKSA9XG4gIGBBc3NvYyBbIFwiaWRcIiwgYFN0cmluZyBpZDsgXCJkaXJlY3RpdmVzXCIsIGRpcmVjdGl2ZXNfdG9fanNvbiBkaXJlY3RpdmVzIF1cblxubGV0IGVkZ2VfdG9fanNvbiAoaWQxLCBpZDIsIGRpcmVjdGl2ZXMpID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgXCJzb3VyY2VcIiwgYFN0cmluZyBpZDE7XG4gICAgICBcInRhcmdldFwiLCBgU3RyaW5nIGlkMjtcbiAgICAgIFwiZGlyZWN0aXZlc1wiLCBkaXJlY3RpdmVzX3RvX2pzb24gZGlyZWN0aXZlcztcbiAgICBdXG5cbmxldCBub2Rlc190b19qc29uID0gSnNvblV0aWwub2ZfbGlzdCBub2RlX3RvX2pzb25cbmxldCBlZGdlc190b19qc29uID0gSnNvblV0aWwub2ZfbGlzdCBlZGdlX3RvX2pzb25cblxubGV0IHRvX2pzb24gZ3JhcGggOiBZb2pzb24uQmFzaWMudCA9XG4gIGBBc3NvY1xuICAgIFsgXCJub2Rlc1wiLCBub2Rlc190b19qc29uIChmc3QgZ3JhcGgpOyBcImVkZ2VzXCIsIGVkZ2VzX3RvX2pzb24gKHNuZCBncmFwaCkgXVxuXG5sZXQgbGluZXN0eWxlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJQbGFpblwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluXG4gIHwgYFN0cmluZyBcIkRvdHRlZFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkRvdHRlZFxuICB8IGBTdHJpbmcgXCJEYXNoZWRcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5EYXNoZWRcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgaGVhZGtpbmRcIiwgeCkpXG5cbmxldCBoZWFka2luZF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwidmVlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuVmVlXG4gIHwgYFN0cmluZyBcIlRlZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlRlZVxuICB8IGBTdHJpbmcgXCJ1bmRpcmVjdGVkXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZFxuICB8IGBTdHJpbmcgXCJub3JtYWxcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgaGVhZGtpbmRcIiwgeCkpXG5cbmxldCBzaGFwZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiSW52aXNpYmxlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuSW52aXNpYmxlXG4gIHwgYFN0cmluZyBcIkhvdXNlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuSG91c2VcbiAgfCBgU3RyaW5nIFwiSW52aG91c2VcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZVxuICB8IGBTdHJpbmcgXCJyZWN0XCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuUmVjdFxuICB8IGBTdHJpbmcgXCJlbGxpcHNlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuRWxsaXBzZVxuICB8IGBTdHJpbmcgXCJjaXJjbGVcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5DaXJjbGVcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3Qgc2hhcGVcIiwgeCkpXG5cbmxldCBkaXJlY3Rpb25fb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIkRpcmVjdFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdFxuICB8IGBTdHJpbmcgXCJSZXZlcnNlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuUmV2ZXJzZVxuICB8IGBTdHJpbmcgXCJVbmRpcmVjdGVkXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuVW5kaXJlY3RlZFxuICB8IGBTdHJpbmcgXCJCb3RoXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuQm90aFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBkaXJlY3Rpb25cIiwgeCkpXG5cbmxldCBjb2xvcl9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiZ3JleVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZXlcbiAgfCBgU3RyaW5nIFwieWVsbG93XCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuWWVsbG93XG4gIHwgYFN0cmluZyBcInJlZFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlJlZFxuICB8IGBTdHJpbmcgXCJncmVlblwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuXG4gIHwgYFN0cmluZyBcIndoaXRlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuV2hpdGVcbiAgfCBgU3RyaW5nIFwiYmx1ZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkJsdWVcbiAgfCBgU3RyaW5nIFwiYmxhY2tcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5CbGFja1xuICB8IGBTdHJpbmcgXCJsaWdodHNreWJsdWVcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5MaWdodFNreUJsdWVcbiAgfCBgU3RyaW5nIFwicGFsZWdyZWVuXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuUGFsZUdyZWVuXG4gIHwgYFN0cmluZyBcImJyb3duXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuQnJvd25cbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgY29sb3JcIiwgeCkpXG5cbmxldCBkaXJlY3RpdmVfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgXCJjb2xvclwiLCBjb2xvciAtPiBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciAoY29sb3Jfb2ZfanNvbiBjb2xvcilcbiAgfCBcImZpbGxjb2xvclwiLCBjb2xvciAtPiBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgKGNvbG9yX29mX2pzb24gY29sb3IpXG4gIHwgXCJsYWJlbFwiLCBgU3RyaW5nIHN0cmluZyAtPiBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBzdHJpbmdcbiAgfCBcIndpZHRoXCIsIGBJbnQgaW50IC0+IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIGludFxuICB8IFwiaGVpZ2h0XCIsIGBJbnQgaW50IC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCBpbnRcbiAgfCBcImRpcmVjdGlvblwiLCBkaXJlY3Rpb24gLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gKGRpcmVjdGlvbl9vZl9qc29uIGRpcmVjdGlvbilcbiAgfCBcInNoYXBlXCIsIHNoYXBlIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIChzaGFwZV9vZl9qc29uIHNoYXBlKVxuICB8IFwiYXJyb3doZWFkXCIsIGhlYWRraW5kIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIChoZWFka2luZF9vZl9qc29uIGhlYWRraW5kKVxuICB8IFwiYXJyb3d0YWlsXCIsIGhlYWRraW5kIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dUYWlsIChoZWFka2luZF9vZl9qc29uIGhlYWRraW5kKVxuICB8IFwibGluZXN0eWxlXCIsIGxpbmVzdHlsZSAtPlxuICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSAobGluZXN0eWxlX29mX2pzb24gbGluZXN0eWxlKVxuICB8IFwicG9zaXRpb25cIiwgcG9zX2xpc3QgLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvblxuICAgICAgKEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgIChmdW4ganNvbiAtPlxuICAgICAgICAgICBzbmRcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3VuaXRcbiAgICAgICAgICAgICAgICAgICA/ZXJyb3JfbXNnOihTb21lIChKc29uVXRpbC5idWlsZF9tc2cgXCJwb3NpdGlvblwiKSkpXG4gICAgICAgICAgICAgICAganNvbikpXG4gICAgICAgICBwb3NfbGlzdClcbiAgfCBcImNvbnRleHR1YWwgaGVscFwiLCBjb250ZXh0dWFsX2hlbHAgLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgKEpzb25VdGlsLnRvX3N0cmluZyBjb250ZXh0dWFsX2hlbHApXG4gIHwgXCJvbl9jbGlja1wiLCBqc29uIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLk9uQ2xpY2sganNvblxuICB8IF8sIHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBkaXJlY3RpdmVcIiwgeCkpXG5cbmxldCBkaXJlY3RpdmVzX29mX2pzb24gZGlyZWN0aXZlcyA9XG4gIEpzb25VdGlsLnRvX2Fzc29jXG4gICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibGlzdCBvZiBkaXJlY3RpdmVzXCIpXG4gICAgZGlyZWN0aXZlX29mX2pzb24gZGlyZWN0aXZlc1xuXG5sZXQgaWRfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBzdHJpbmcgLT4gc3RyaW5nXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGlkXCIsIHgpKVxuXG5sZXQgbm9kZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDIgLT5cbiAgICAodHJ5XG4gICAgICAgKCBpZF9vZl9qc29uIChMaXN0LmFzc29jIFwiaWRcIiBsKSxcbiAgICAgICAgIGRpcmVjdGl2ZXNfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImRpcmVjdGl2ZXNcIiBsKSApXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBub2RlXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3Qgbm9kZVwiLCB4KSlcblxubGV0IGVkZ2Vfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgKHRyeVxuICAgICAgICggaWRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInNvdXJjZVwiIGwpLFxuICAgICAgICAgaWRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInRhcmdldFwiIGwpLFxuICAgICAgICAgZGlyZWN0aXZlc19vZl9qc29uIChMaXN0LmFzc29jIFwiZGlyZWN0aXZlc1wiIGwpIClcbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVkZ2VcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlZGdlXCIsIHgpKVxuXG5sZXQgbm9kZXNfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibm9kZSBsaXN0XCIpIG5vZGVfb2ZfanNvblxuXG5sZXQgZWRnZXNfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiZWRnZSBsaXN0XCIpIGVkZ2Vfb2ZfanNvblxuXG5sZXQgb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAyIC0+XG4gICAgKHRyeVxuICAgICAgICggbm9kZXNfb2ZfanNvbiAoTGlzdC5hc3NvYyBcIm5vZGVzXCIgbCksXG4gICAgICAgICBlZGdlc19vZl9qc29uIChMaXN0LmFzc29jIFwiZWRnZXNcIiBsKSApXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlbnZpcm9ubWVudFwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVudmlyb25tZW50XCIsIHgpKVxuIiwidHlwZSBicmVha19oaW50ID0gU3BhY2UgfCBOb19zcGFjZVxuXG50eXBlIHN5bWJvbF90YWJsZSA9IHtcbiAgYWdlbnRfb3Blbjogc3RyaW5nO1xuICBhZ2VudF9jbG9zZTogc3RyaW5nO1xuICBhZ2VudF9zZXBfY29tbWE6IHN0cmluZyAqIGJyZWFrX2hpbnQ7XG4gIGFnZW50X3NlcF9kb3Q6IHN0cmluZyAqIGJyZWFrX2hpbnQ7XG4gIGFnZW50X3NlcF9wbHVzOiBzdHJpbmcgKiBicmVha19oaW50O1xuICBnaG9zdF9hZ2VudDogc3RyaW5nO1xuICBzaG93X2dob3N0OiBib29sO1xuICBpbnRlcm5hbF9zdGF0ZV9zeW1ib2w6IHN0cmluZztcbiAgb3Blbl9pbnRlcm5hbF9zdGF0ZTogc3RyaW5nO1xuICBjbG9zZV9pbnRlcm5hbF9zdGF0ZTogc3RyaW5nO1xuICBvcGVuX2ludGVybmFsX3N0YXRlX21vZDogc3RyaW5nO1xuICBjbG9zZV9pbnRlcm5hbF9zdGF0ZV9tb2Q6IHN0cmluZztcbiAgaW50ZXJuYWxfc3RhdGVfbW9kX3N5bWJvbDogc3RyaW5nO1xuICBpbnRlcm5hbF9zdGF0ZV9hbnk6IHN0cmluZztcbiAgb3Blbl9iaW5kaW5nX3N0YXRlOiBzdHJpbmc7XG4gIGNsb3NlX2JpbmRpbmdfc3RhdGU6IHN0cmluZztcbiAgbWlzc2luZ19iaW5kaW5nX3N0YXRlOiBzdHJpbmc7XG4gIG9wZW5fYmluZGluZ19zdGF0ZV9tb2Q6IHN0cmluZztcbiAgYmluZGluZ19zdGF0ZV9tb2Rfc3ltYm9sOiBzdHJpbmc7XG4gIGNsb3NlX2JpbmRpbmdfc3RhdGVfbW9kOiBzdHJpbmc7XG4gIGZyZWU6IHN0cmluZztcbiAgYm91bmQ6IHN0cmluZztcbiAgbGlua190b19hbnk6IHN0cmluZztcbiAgbGlua190b19zb21lOiBzdHJpbmc7XG4gIGF0OiBzdHJpbmc7XG4gIHNpdGVfc2VwOiBzdHJpbmcgKiBicmVha19oaW50O1xuICBidHlwZV9zZXA6IHN0cmluZztcbiAgdW5pX2Fycm93OiBzdHJpbmc7XG4gIHJldl9hcnJvdzogc3RyaW5nO1xuICBiaV9hcnJvdzogc3RyaW5nO1xuICB1bmlfYXJyb3dfbm9wb2x5OiBzdHJpbmc7XG4gIHJldl9hcnJvd19ub3BvbHk6IHN0cmluZztcbiAgYmlfYXJyb3dfbm9wb2x5OiBzdHJpbmc7XG4gIGJyZWFrYWJsZTogYm9vbDtcbiAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlOiBzdHJpbmc7XG4gIG9wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2ZTogc3RyaW5nO1xuICBvcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eTogc3RyaW5nO1xuICBjbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlOiBzdHJpbmc7XG4gIGNsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpdmU6IHN0cmluZztcbiAgY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5OiBzdHJpbmc7XG4gIGludF9pbnRlcnZhbF9zZXBhcmF0b3I6IHN0cmluZztcbiAgcGx1c19pbmZpbml0eTogc3RyaW5nO1xuICBtaW51c19pbmZpbml0eTogc3RyaW5nO1xuICBvcGVuX2NvdW50ZXJfc3RhdGU6IHN0cmluZztcbiAgb3Blbl9jb3VudGVyY2VxOiBzdHJpbmc7XG4gIG9wZW5fY291bnRlcmNndGU6IHN0cmluZztcbiAgb3Blbl9jb3VudGVyY3Zhcjogc3RyaW5nO1xuICBvcGVuX2NvdW50ZXJkZWx0YTogc3RyaW5nO1xuICBvcGVuX2NvdW50ZXJ2YWw6IHN0cmluZztcbiAgY2xvc2VfY291bnRlcl9zdGF0ZTogc3RyaW5nO1xuICBjbG9zZV9jb3VudGVyY2VxOiBzdHJpbmc7XG4gIGNsb3NlX2NvdW50ZXJjZ3RlOiBzdHJpbmc7XG4gIGNsb3NlX2NvdW50ZXJjdmFyOiBzdHJpbmc7XG4gIGNsb3NlX2NvdW50ZXJkZWx0YTogc3RyaW5nO1xuICBjbG9zZV9jb3VudGVydmFsOiBzdHJpbmc7XG4gIGNvdW50ZXJjZXFfc3ltYm9sOiBzdHJpbmc7XG4gIGNvdW50ZXJjZ3RlX3N5bWJvbDogc3RyaW5nO1xuICBjb3VudGVyY3Zhcl9zeW1ib2w6IHN0cmluZztcbiAgY291bnRlcmRlbHRhcGx1c19zeW1ib2w6IHN0cmluZztcbiAgY291bnRlcmRlbHRhbWludXNfc3ltYm9sOiBzdHJpbmc7XG4gIGNvdW50ZXJ2YWxfc3ltYm9sOiBzdHJpbmc7XG59XG5cbmxldCBzeW1ib2xfdGFibGVfVjMgPVxuICB7XG4gICAgYm91bmQgPSBcIiFcIjtcbiAgICBvcGVuX2JpbmRpbmdfc3RhdGUgPSBcIlwiO1xuICAgIGNsb3NlX2JpbmRpbmdfc3RhdGUgPSBcIlwiO1xuICAgIG1pc3NpbmdfYmluZGluZ19zdGF0ZSA9IFwiP1wiO1xuICAgIGxpbmtfdG9fYW55ID0gXCI/XCI7XG4gICAgbGlua190b19zb21lID0gXCIhX1wiO1xuICAgIGludGVybmFsX3N0YXRlX3N5bWJvbCA9IFwiflwiO1xuICAgIG9wZW5faW50ZXJuYWxfc3RhdGUgPSBcIlwiO1xuICAgIGNsb3NlX2ludGVybmFsX3N0YXRlID0gXCJcIjtcbiAgICBvcGVuX2ludGVybmFsX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgY2xvc2VfaW50ZXJuYWxfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBpbnRlcm5hbF9zdGF0ZV9tb2Rfc3ltYm9sID0gXCIvXCI7XG4gICAgaW50ZXJuYWxfc3RhdGVfYW55ID0gXCJcIjtcbiAgICBvcGVuX2JpbmRpbmdfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBjbG9zZV9iaW5kaW5nX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgYmluZGluZ19zdGF0ZV9tb2Rfc3ltYm9sID0gXCJcIjtcbiAgICBmcmVlID0gXCJcIjtcbiAgICBhdCA9IFwiLlwiO1xuICAgIGFnZW50X29wZW4gPSBcIihcIjtcbiAgICBhZ2VudF9jbG9zZSA9IFwiKVwiO1xuICAgIGFnZW50X3NlcF9jb21tYSA9IFwiLFwiLCBTcGFjZTtcbiAgICBhZ2VudF9zZXBfcGx1cyA9IFwiLFwiLCBTcGFjZTtcbiAgICBhZ2VudF9zZXBfZG90ID0gXCIsXCIsIFNwYWNlO1xuICAgIGJ0eXBlX3NlcCA9IFwiLlwiO1xuICAgIHNpdGVfc2VwID0gXCIsXCIsIE5vX3NwYWNlO1xuICAgIGdob3N0X2FnZW50ID0gXCIuXCI7XG4gICAgc2hvd19naG9zdCA9IGZhbHNlO1xuICAgIHVuaV9hcnJvdyA9IFwiLT5cIjtcbiAgICByZXZfYXJyb3cgPSBcIjwtXCI7XG4gICAgYmlfYXJyb3cgPSBcIjwtPlwiO1xuICAgIHVuaV9hcnJvd19ub3BvbHkgPSBcIi0hLT5cIjtcbiAgICByZXZfYXJyb3dfbm9wb2x5ID0gXCI8LSEtXCI7XG4gICAgYmlfYXJyb3dfbm9wb2x5ID0gXCI8LSEtPlwiO1xuICAgIGJyZWFrYWJsZSA9IHRydWU7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlID0gXCJbXCI7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlID0gXCJdXCI7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHkgPSBcIl1cIjtcbiAgICBwbHVzX2luZmluaXR5ID0gXCIrb29cIjtcbiAgICBtaW51c19pbmZpbml0eSA9IFwiLW9vXCI7XG4gICAgY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2l2ZSA9IFwiXVwiO1xuICAgIGNsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpdmUgPSBcIltcIjtcbiAgICBjbG9zZV9pbnRfaW50ZXJ2YWxfaW5maW5pdHkgPSBcIltcIjtcbiAgICBpbnRfaW50ZXJ2YWxfc2VwYXJhdG9yID0gXCIgLi4gXCI7XG4gICAgb3Blbl9jb3VudGVyX3N0YXRlID0gXCJ7XCI7XG4gICAgb3Blbl9jb3VudGVyY2VxID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJjZ3RlID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJjdmFyID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJkZWx0YSA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVydmFsID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyX3N0YXRlID0gXCJ9XCI7XG4gICAgY2xvc2VfY291bnRlcmNlcSA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcmNndGUgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJjdmFyID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyZGVsdGEgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJ2YWwgPSBcIlwiO1xuICAgIGNvdW50ZXJjZXFfc3ltYm9sID0gXCI9XCI7XG4gICAgY291bnRlcmNndGVfc3ltYm9sID0gXCI+PVwiO1xuICAgIGNvdW50ZXJjdmFyX3N5bWJvbCA9IFwiOlwiO1xuICAgIGNvdW50ZXJ2YWxfc3ltYm9sID0gXCI6PVwiO1xuICAgIGNvdW50ZXJkZWx0YXBsdXNfc3ltYm9sID0gXCIrXCI7XG4gICAgY291bnRlcmRlbHRhbWludXNfc3ltYm9sID0gXCItXCI7XG4gIH1cblxubGV0IGxpZ2h0ZW4gc3ltYm9sX3RhYmxlID1cbiAgeyBzeW1ib2xfdGFibGUgd2l0aCBzaXRlX3NlcCA9IFwiIFwiLCBzbmQgc3ltYm9sX3RhYmxlLnNpdGVfc2VwIH1cblxubGV0IHRvX2RvdG5ldCBzeW1ib2xfdGFibGUgPVxuICB7XG4gICAgc3ltYm9sX3RhYmxlIHdpdGhcbiAgICBhZ2VudF9zZXBfcGx1cyA9IFwiICtcIiwgc25kIHN5bWJvbF90YWJsZS5hZ2VudF9zZXBfcGx1cztcbiAgICBhZ2VudF9zZXBfZG90ID0gXCIuXCIsIE5vX3NwYWNlO1xuICB9XG5cbmxldCBzeW1ib2xfdGFibGVfVjQgPVxuICB7XG4gICAgYm91bmQgPSBcIlwiO1xuICAgIG9wZW5fYmluZGluZ19zdGF0ZSA9IFwiW1wiO1xuICAgIGNsb3NlX2JpbmRpbmdfc3RhdGUgPSBcIl1cIjtcbiAgICBtaXNzaW5nX2JpbmRpbmdfc3RhdGUgPSBcIlwiO1xuICAgIGxpbmtfdG9fYW55ID0gXCIjXCI7XG4gICAgbGlua190b19zb21lID0gXCJfXCI7XG4gICAgaW50ZXJuYWxfc3RhdGVfc3ltYm9sID0gXCJcIjtcbiAgICBvcGVuX2ludGVybmFsX3N0YXRlID0gXCJ7XCI7XG4gICAgY2xvc2VfaW50ZXJuYWxfc3RhdGUgPSBcIn1cIjtcbiAgICBpbnRlcm5hbF9zdGF0ZV9hbnkgPSBcInsjfVwiO1xuICAgIG9wZW5faW50ZXJuYWxfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBjbG9zZV9pbnRlcm5hbF9zdGF0ZV9tb2QgPSBcIlwiO1xuICAgIGludGVybmFsX3N0YXRlX21vZF9zeW1ib2wgPSBcIi9cIjtcbiAgICBvcGVuX2JpbmRpbmdfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBjbG9zZV9iaW5kaW5nX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgYmluZGluZ19zdGF0ZV9tb2Rfc3ltYm9sID0gXCJcIjtcbiAgICBmcmVlID0gXCIuXCI7XG4gICAgYXQgPSBcIi5cIjtcbiAgICBhZ2VudF9vcGVuID0gXCIoXCI7XG4gICAgYWdlbnRfY2xvc2UgPSBcIilcIjtcbiAgICBhZ2VudF9zZXBfY29tbWEgPSBcIixcIiwgU3BhY2U7XG4gICAgYWdlbnRfc2VwX3BsdXMgPSBcIixcIiwgU3BhY2U7XG4gICAgYWdlbnRfc2VwX2RvdCA9IFwiLFwiLCBTcGFjZTtcbiAgICBidHlwZV9zZXAgPSBcIi5cIjtcbiAgICBzaXRlX3NlcCA9IFwiLFwiLCBOb19zcGFjZTtcbiAgICBnaG9zdF9hZ2VudCA9IFwiLlwiO1xuICAgIHNob3dfZ2hvc3QgPSB0cnVlO1xuICAgIHVuaV9hcnJvdyA9IFwiLT5cIjtcbiAgICByZXZfYXJyb3cgPSBcIjwtXCI7XG4gICAgYmlfYXJyb3cgPSBcIjwtPlwiO1xuICAgIHVuaV9hcnJvd19ub3BvbHkgPSBcIi0hLT5cIjtcbiAgICByZXZfYXJyb3dfbm9wb2x5ID0gXCI8LSEtXCI7XG4gICAgYmlfYXJyb3dfbm9wb2x5ID0gXCI8LSEtPlwiO1xuICAgIGJyZWFrYWJsZSA9IHRydWU7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlID0gXCJbXCI7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlID0gXCJdXCI7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHkgPSBcIl1cIjtcbiAgICBwbHVzX2luZmluaXR5ID0gXCIrb29cIjtcbiAgICBtaW51c19pbmZpbml0eSA9IFwiLW9vXCI7XG4gICAgb3Blbl9jb3VudGVyX3N0YXRlID0gXCJ7XCI7XG4gICAgY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2l2ZSA9IFwiXVwiO1xuICAgIGNsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpdmUgPSBcIltcIjtcbiAgICBjbG9zZV9pbnRfaW50ZXJ2YWxfaW5maW5pdHkgPSBcIltcIjtcbiAgICBpbnRfaW50ZXJ2YWxfc2VwYXJhdG9yID0gXCIgLi4gXCI7XG4gICAgb3Blbl9jb3VudGVyY2VxID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJjZ3RlID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJjdmFyID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJkZWx0YSA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVydmFsID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyX3N0YXRlID0gXCJ9XCI7XG4gICAgY2xvc2VfY291bnRlcmNlcSA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcmNndGUgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJjdmFyID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyZGVsdGEgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJ2YWwgPSBcIlwiO1xuICAgIGNvdW50ZXJjZXFfc3ltYm9sID0gXCI9XCI7XG4gICAgY291bnRlcmNndGVfc3ltYm9sID0gXCI+PVwiO1xuICAgIGNvdW50ZXJjdmFyX3N5bWJvbCA9IFwiOlwiO1xuICAgIGNvdW50ZXJ2YWxfc3ltYm9sID0gXCI6PVwiO1xuICAgIGNvdW50ZXJkZWx0YXBsdXNfc3ltYm9sID0gXCIrXCI7XG4gICAgY291bnRlcmRlbHRhbWludXNfc3ltYm9sID0gXCItXCI7XG4gIH1cblxubGV0IG5vdF9icmVha2FibGUgc3ltYm9sX3RhYmxlID0geyBzeW1ib2xfdGFibGUgd2l0aCBicmVha2FibGUgPSBmYWxzZSB9XG5sZXQgc3ltYm9sX3RhYmxlX1YzX2xpZ2h0ID0gbGlnaHRlbiBzeW1ib2xfdGFibGVfVjNcbmxldCBzeW1ib2xfdGFibGVfZG90bmV0ID0gdG9fZG90bmV0IHN5bWJvbF90YWJsZV9WM1xubGV0IHVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WMyA9IG5vdF9icmVha2FibGUgc3ltYm9sX3RhYmxlX1YzXG5sZXQgdW5icmVha2FibGVfc3ltYm9sX3RhYmxlX1Y0ID0gbm90X2JyZWFrYWJsZSBzeW1ib2xfdGFibGVfVjRcbmxldCB1bmJyZWFrYWJsZV9zeW1ib2xfdGFibGVfVjNfbGlnaHQgPSBub3RfYnJlYWthYmxlIHN5bWJvbF90YWJsZV9WM19saWdodFxubGV0IHVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9kb3RuZXQgPSBub3RfYnJlYWthYmxlIHN5bWJvbF90YWJsZV9kb3RuZXRcblxubGV0IHdpdGhfZG90X2FuZF9wbHVzIHN5bWJvbF90YWJsZSA9XG4gIHtcbiAgICBzeW1ib2xfdGFibGUgd2l0aFxuICAgIGFnZW50X3NlcF9wbHVzID0gdW5icmVha2FibGVfc3ltYm9sX3RhYmxlX2RvdG5ldC5hZ2VudF9zZXBfcGx1cztcbiAgICBhZ2VudF9zZXBfZG90ID0gdW5icmVha2FibGVfc3ltYm9sX3RhYmxlX2RvdG5ldC5hZ2VudF9zZXBfZG90O1xuICB9XG4iLCIoKipcbiAgICAqIHJlbWFuZW50X3N0YXRlX3NpZ25hdHVyZS5tbFxuICAgICpcbiAgICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgICpcbiAgICAqIENyZWF0aW9uOiAxMi8xMC8yMDEwXG4gICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPE5vdiAyOCAyMDE4PlxuICAgICogKlxuICAgICogU2lnbmF0dXJlIGZvciB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgbWVtb3J5XG4gICAgKlxuICAgICogQ29weXJpZ2h0IDIwMTAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAgICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBydWxlX2tleSA9IGludFxuXG50eXBlIGVuZ2luZV9zdGF0ZSA9IHtcbiAgY29tbWFuZF9saW5lOiBzdHJpbmcgb3B0aW9uO1xuICB3YWtlX3VwX21hcDogKHJ1bGVfa2V5IC0+IHJ1bGVfa2V5IGxpc3QpIG9wdGlvbjtcbn1cblxubGV0IGVtcHR5X2VuZ2luZV9zdGF0ZSA9IHsgY29tbWFuZF9saW5lID0gTm9uZTsgd2FrZV91cF9tYXAgPSBOb25lIH1cbmxldCB3YWtlX3VwX21hcCBlcnJvciBlbmdpbmVfc3RhdGUgPSBlcnJvciwgZW5naW5lX3N0YXRlLndha2VfdXBfbWFwXG4iLCIoKipcbiAgICAqIGV4Y2VwdGlvbi5tbFxuICAgICogb3BlbmthcHBhXG4gICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICAqXG4gICAgKiBDcmVhdGlvbjogMDgvMDMvMjAxMFxuICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxOb3YgMDQgMjAxOD5cbiAgICAqICpcbiAgICAqIFRoaXMgbGlicmFyeSBkZWNsYXJlcyBleGNlcHRpb25zXG4gICAgKlxuICAgICogQ29weXJpZ2h0IDIwMTAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAgICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAgKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgdW5jYXVnaHRfZXhjZXB0aW9uID0ge1xuICBmaWxlX25hbWU6IHN0cmluZyBvcHRpb247XG4gIG1lc3NhZ2U6IHN0cmluZyBvcHRpb247XG4gIGFsYXJtOiBleG47XG59XG5cbnR5cGUgY2F1Z2h0X2V4Y2VwdGlvbiA9IHtcbiAgdW5jYXVnaHRfZXhjZXB0aW9uOiB1bmNhdWdodF9leGNlcHRpb247XG4gIGNhbGxpbmdfc3RhY2s6IHN0cmluZyBsaXN0O1xufVxuXG5leGNlcHRpb24gVW5jYXVnaHRfZXhjZXB0aW9uIG9mIHVuY2F1Z2h0X2V4Y2VwdGlvblxuZXhjZXB0aW9uIENhdWdodF9leGNlcHRpb24gb2YgY2F1Z2h0X2V4Y2VwdGlvblxuXG5sZXQgcmVjIGV4bl90b19qc29uID0gZnVuY3Rpb25cbiAgfCBFeGl0IC0+IGBBc3NvYyBbIFwiRXhpdFwiLCBgTnVsbCBdXG4gIHwgTm90X2ZvdW5kIC0+IGBBc3NvYyBbIFwiTm90X2ZvdW5kXCIsIGBOdWxsIF1cbiAgfCBBcmcuQmFkIHggLT4gYEFzc29jIFsgXCJBcmcuQmFkXCIsIEpzb25VdGlsLm9mX3N0cmluZyB4IF1cbiAgfCBTeXMuQnJlYWsgLT4gYEFzc29jIFsgXCJTeXMuQnJlYWtcIiwgYE51bGwgXVxuICB8IFN0YWNrLkVtcHR5IC0+IGBBc3NvYyBbIFwiU3RhY2suRW1wdHlcIiwgYE51bGwgXVxuICB8IFF1ZXVlLkVtcHR5IC0+IGBBc3NvYyBbIFwiUXVldWUuRW1wdHlcIiwgYE51bGwgXVxuICB8IFN0cmVhbS5FcnJvciB4IC0+IGBBc3NvYyBbIFwiU3RyZWFtLkVycm9yXCIsIEpzb25VdGlsLm9mX3N0cmluZyB4IF1cbiAgfCBTdHJlYW0uRmFpbHVyZSAtPiBgQXNzb2MgWyBcIlN0cmVhbS5GYWlsdXJlXCIsIGBOdWxsIF1cbiAgfCBBcmcuSGVscCB4IC0+IGBBc3NvYyBbIFwiQXJnLkhlbHBcIiwgSnNvblV0aWwub2Zfc3RyaW5nIHggXVxuICB8IFBhcnNpbmcuUGFyc2VfZXJyb3IgLT4gYEFzc29jIFsgXCJQYXJzaW5nLlBhcnNlX2Vycm9yXCIsIGBOdWxsIF1cbiAgfCBTY2FuZi5TY2FuX2ZhaWx1cmUgeCAtPiBgQXNzb2MgWyBcIlNjYW5fZmFpbHVyZVwiLCBKc29uVXRpbC5vZl9zdHJpbmcgeCBdXG4gIHwgTGF6eS5VbmRlZmluZWQgLT4gYEFzc29jIFsgXCJMYXp5LlVuZGVmaW5lZFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5Vbml4X2Vycm9yIChhLCBiLCBjKSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoIFwiVW5peExhYmVscy5Vbml4X2Vycm9yXCIsXG4gICAgICAgICAgYEFzc29jXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFwiZnN0XCIsIEpzb25VdGlsLm9mX3VuaXhfbGFiZWwgYTtcbiAgICAgICAgICAgICAgXCJzbmRcIiwgSnNvblV0aWwub2Zfc3RyaW5nIGI7XG4gICAgICAgICAgICAgIFwidHJkXCIsIEpzb25VdGlsLm9mX3N0cmluZyBjO1xuICAgICAgICAgICAgXSApO1xuICAgICAgXVxuICB8IFVuaXguVW5peF9lcnJvciAoYSwgYiwgYykgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKCBcIlVuaXguVW5peC5lcnJvclwiLFxuICAgICAgICAgIGBBc3NvY1xuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBcImZzdFwiLCBKc29uVXRpbC5vZl91bml4X2Vycm9yIGE7XG4gICAgICAgICAgICAgIFwic25kXCIsIEpzb25VdGlsLm9mX3N0cmluZyBiO1xuICAgICAgICAgICAgICBcInRyZFwiLCBKc29uVXRpbC5vZl9zdHJpbmcgYztcbiAgICAgICAgICAgIF0gKTtcbiAgICAgIF1cbiAgfCBGYWlsdXJlIHggLT4gYEFzc29jIFsgXCJGYWlsdXJlXCIsIEpzb25VdGlsLm9mX3N0cmluZyB4IF1cbiAgfCBTdGFja19vdmVyZmxvdyAtPiBgQXNzb2MgWyBcIlN0YWNrX292ZXJmbG93XCIsIGBOdWxsIF1cbiAgfCBDYXVnaHRfZXhjZXB0aW9uIHggLT4gYEFzc29jIFsgXCJDYXVnaHRcIiwgY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uIHggXVxuICB8IFVuY2F1Z2h0X2V4Y2VwdGlvbiB4IC0+IGBBc3NvYyBbIFwiVW5jYXVnaHRcIiwgdW5jYXVnaHRfZXhjZXB0aW9uX3RvX2pzb24geCBdXG4gIHwgXyAtPiBgQXNzb2MgWyBcIlVua25vd25cIiwgYE51bGwgXVxuXG5hbmQgdW5jYXVnaHRfZXhjZXB0aW9uX3RvX2pzb24gdW5jYXVnaHQgPVxuICBKc29uVXRpbC5vZl90cmlwbGUgfmxhYjE6XCJmaWxlX25hbWVcIiB+bGFiMjpcIm1lc3NhZ2VcIiB+bGFiMzpcImV4blwiXG4gICAgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9zdHJpbmcpXG4gICAgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9zdHJpbmcpXG4gICAgZXhuX3RvX2pzb25cbiAgICAodW5jYXVnaHQuZmlsZV9uYW1lLCB1bmNhdWdodC5tZXNzYWdlLCB1bmNhdWdodC5hbGFybSlcblxuYW5kIGNhdWdodF9leGNlcHRpb25fdG9fanNvbiBjYXVnaHQgPVxuICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOlwidW5jYXVnaHRfZXhjZXB0aW9uXCIgfmxhYjI6XCJjYWxsaW5nX3N0YWNrXCJcbiAgICB1bmNhdWdodF9leGNlcHRpb25fdG9fanNvblxuICAgIChKc29uVXRpbC5vZl9saXN0IEpzb25VdGlsLm9mX3N0cmluZylcbiAgICAoY2F1Z2h0LnVuY2F1Z2h0X2V4Y2VwdGlvbiwgY2F1Z2h0LmNhbGxpbmdfc3RhY2spXG5cbmxldCByZWMgZXhuX29mX2pzb24gKGpzb24gOiBZb2pzb24uQmFzaWMudCkgPVxuICBtYXRjaCBqc29uIHdpdGhcbiAgfCBgQXNzb2MgWyAoXCJFeGl0XCIsIGBOdWxsKSBdIC0+IEV4aXRcbiAgfCBgQXNzb2MgWyAoXCJOb3RfZm91bmRcIiwgYE51bGwpIF0gLT4gTm90X2ZvdW5kXG4gIHwgYEFzc29jIFsgKFwiQXJnLkJhZFwiLCB4KSBdIC0+IEFyZy5CYWQgKEpzb25VdGlsLnRvX3N0cmluZyB4KVxuICB8IGBBc3NvYyBbIChcIlN5cy5CcmVha1wiLCBgTnVsbCkgXSAtPiBTeXMuQnJlYWtcbiAgfCBgQXNzb2MgWyAoXCJTdGFjay5FbXB0eVwiLCBgTnVsbCkgXSAtPiBTdGFjay5FbXB0eVxuICB8IGBBc3NvYyBbIChcIlF1ZXVlLkVtcHR5XCIsIGBOdWxsKSBdIC0+IFF1ZXVlLkVtcHR5XG4gIHwgYEFzc29jIFsgKFwiU3RyZWFtLkVycm9yXCIsIHgpIF0gLT4gU3RyZWFtLkVycm9yIChKc29uVXRpbC50b19zdHJpbmcgeClcbiAgfCBgQXNzb2MgWyAoXCJTdHJlYW0uRmFpbHVyZVwiLCBgTnVsbCkgXSAtPiBTdHJlYW0uRmFpbHVyZVxuICB8IGBBc3NvYyBbIChcIkFyZy5IZWxwXCIsIHgpIF0gLT4gQXJnLkhlbHAgKEpzb25VdGlsLnRvX3N0cmluZyB4KVxuICB8IGBBc3NvYyBbIChcIlBhcnNpbmcuUGFyc2VfZXJyb3JcIiwgYE51bGwpIF0gLT4gUGFyc2luZy5QYXJzZV9lcnJvclxuICB8IGBBc3NvYyBbIChcIlNjYW5fZmFpbHVyZVwiLCB4KSBdIC0+IFNjYW5mLlNjYW5fZmFpbHVyZSAoSnNvblV0aWwudG9fc3RyaW5nIHgpXG4gIHwgYEFzc29jIFsgKFwiTGF6eS5VbmRlZmluZWRcIiwgYE51bGwpIF0gLT4gTGF6eS5VbmRlZmluZWRcbiAgfCBgQXNzb2MgWyAoXCJVbml4TGFiZWxzLlVuaXhfZXJyb3JcIiwgYEFzc29jIGwpIF0gd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICh0cnlcbiAgICAgICBVbml4TGFiZWxzLlVuaXhfZXJyb3JcbiAgICAgICAgICggSnNvblV0aWwudG9fdW5peF9sYWJlbCAoTGlzdC5hc3NvYyBcImZzdFwiIGwpLFxuICAgICAgICAgICBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgXCJzbmRcIiBsKSxcbiAgICAgICAgICAgSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIFwidHJkXCIgbCkgKVxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJ1bml4IGxhYmVscyBlcnJvclwiLCBqc29uKSkpXG4gIHwgYEFzc29jIFsgKFwiVW5peC5Vbml4X2Vycm9yXCIsIGBBc3NvYyBsKSBdIHdoZW4gTGlzdC5sZW5ndGggbCA9IDMgLT5cbiAgICAodHJ5XG4gICAgICAgVW5peC5Vbml4X2Vycm9yXG4gICAgICAgICAoIEpzb25VdGlsLnRvX3VuaXhfbGFiZWwgKExpc3QuYXNzb2MgXCJmc3RcIiBsKSxcbiAgICAgICAgICAgSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIFwic25kXCIgbCksXG4gICAgICAgICAgIEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBcInRyZFwiIGwpIClcbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJ1bml4IGVycm9yXCIsIGpzb24pKSlcbiAgfCBgQXNzb2MgWyAoXCJGYWlsdXJlXCIsIHgpIF0gLT4gRmFpbHVyZSAoSnNvblV0aWwudG9fc3RyaW5nIHgpXG4gIHwgYEFzc29jIFsgKFwiU3RhY2tfb3ZlcmZsb3dcIiwgYE51bGwpIF0gLT4gU3RhY2tfb3ZlcmZsb3dcbiAgfCBgQXNzb2MgWyAoXCJDYXVnaHRcIiwgeCkgXSAtPiBDYXVnaHRfZXhjZXB0aW9uIChjYXVnaHRfZXhjZXB0aW9uX29mX2pzb24geClcbiAgfCBgQXNzb2MgWyAoXCJVbmNhdWdodFwiLCB4KSBdIC0+XG4gICAgVW5jYXVnaHRfZXhjZXB0aW9uICh1bmNhdWdodF9leGNlcHRpb25fb2ZfanNvbiB4KVxuICB8IGBBc3NvYyBbIChcIlVua25vd25cIiwgYE51bGwpIF0gLT4gRmFpbHVyZSBcIlVua25vd25cIlxuICB8IF8gLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiZXhjZXB0aW9uXCIsIGpzb24pKVxuXG5hbmQgdW5jYXVnaHRfZXhjZXB0aW9uX29mX2pzb24ganNvbiA9XG4gIGxldCBhLCBiLCBjID1cbiAgICBKc29uVXRpbC50b190cmlwbGUgfmxhYjE6XCJmaWxlX25hbWVcIiB+bGFiMjpcIm1lc3NhZ2VcIiB+bGFiMzpcImV4blwiXG4gICAgICAoSnNvblV0aWwudG9fb3B0aW9uIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcImZpbGVfbmFtZVwiKSlcbiAgICAgIChKc29uVXRpbC50b19vcHRpb24gKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwibWVzc2FnZVwiKSlcbiAgICAgIGV4bl9vZl9qc29uIGpzb25cbiAgaW5cbiAgeyBmaWxlX25hbWUgPSBhOyBtZXNzYWdlID0gYjsgYWxhcm0gPSBjIH1cblxuYW5kIGNhdWdodF9leGNlcHRpb25fb2ZfanNvbiBqc29uID1cbiAgbGV0IGEsIGIgPVxuICAgIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6XCJ1bmNhdWdodF9leGNlcHRpb25cIiB+bGFiMjpcImNhbGxpbmdfc3RhY2tcIlxuICAgICAgdW5jYXVnaHRfZXhjZXB0aW9uX29mX2pzb25cbiAgICAgIChKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJjYWxsaW5nIHN0YWNrXCJcbiAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcInN0YWNrIGVsdFwiKSlcbiAgICAgIGpzb25cbiAgaW5cbiAgeyB1bmNhdWdodF9leGNlcHRpb24gPSBhOyBjYWxsaW5nX3N0YWNrID0gYiB9XG5cbmxldCBidWlsZF91bmNhdWdodF9leGNlcHRpb24gP2ZpbGVfbmFtZSA/bWVzc2FnZSBleG4gPVxuICB7IGZpbGVfbmFtZTsgbWVzc2FnZTsgYWxhcm0gPSBleG4gfVxuXG5sZXQgYnVpbGRfY2F1Z2h0X2V4Y2VwdGlvbiBmaWxlX25hbWUgbWVzc2FnZSBleG4gc3RhY2sgPVxuICB7XG4gICAgdW5jYXVnaHRfZXhjZXB0aW9uID0gYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uID9maWxlX25hbWUgP21lc3NhZ2UgZXhuO1xuICAgIGNhbGxpbmdfc3RhY2sgPSBzdGFjaztcbiAgfVxuXG5sZXQgcmFpc2VfZXhjZXB0aW9uIGZpbGVfbmFtZSBfa2V5IG1lc3NhZ2UgZXhuID1cbiAgcmFpc2UgKFVuY2F1Z2h0X2V4Y2VwdGlvbiB7IGZpbGVfbmFtZTsgbWVzc2FnZTsgYWxhcm0gPSBleG4gfSlcblxubGV0IHJlYyBwcF9leGNlcHRpb24gZiA9IGZ1bmN0aW9uXG4gIHwgRXhpdCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJFeGl0XCJcbiAgfCBOb3RfZm91bmQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiTm90X2ZvdW5kXCJcbiAgfCBBcmcuQmFkIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIkFyZy5CYWQoJXMpXCIgeFxuICB8IFN5cy5CcmVhayAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJTeXMuQnJlYWtcIlxuICB8IFN0YWNrLkVtcHR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlN0YWNrLkVtcHR5XCJcbiAgfCBRdWV1ZS5FbXB0eSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJRdWV1ZS5FbXB0eVwiXG4gIHwgU3RyZWFtLkVycm9yIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIlN0cmVhbS5FcnJvciAlc1wiIHhcbiAgfCBTdHJlYW0uRmFpbHVyZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJTdHJlYW0uRmFpbHVyZVwiXG4gIHwgQXJnLkhlbHAgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQXJnLkhlbHAoJXMpXCIgeFxuICB8IFBhcnNpbmcuUGFyc2VfZXJyb3IgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiUGFyc2luZy5QYXJzZV9lcnJvclwiXG4gIHwgU2NhbmYuU2Nhbl9mYWlsdXJlIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIlNjYW5mLlNjYW4uZmFpbHVyZSglcylcIiB4XG4gIHwgTGF6eS5VbmRlZmluZWQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiTGF6eS5VbmRlZmluZWRcIlxuICB8IFVuaXhMYWJlbHMuVW5peF9lcnJvciAoZXIsIHgsIHkpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIlVuaXhMYWJlbHMuVW5peF9lcnJvciglcywlcywlcylcIlxuICAgICAgKFVuaXhMYWJlbHMuZXJyb3JfbWVzc2FnZSBlcilcbiAgICAgIHggeVxuICB8IFVuaXguVW5peF9lcnJvciAoZXIsIHgsIHkpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIlVuaXguVW5peF9lcnJvciglcywlcywlcylcIiAoVW5peC5lcnJvcl9tZXNzYWdlIGVyKSB4IHlcbiAgfCBGYWlsdXJlIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIkZhaWx1cmUoJXMpXCIgeFxuICB8IFN0YWNrX292ZXJmbG93IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlN0YWNrX292ZXJmbG93XCJcbiAgfCBVbmNhdWdodF9leGNlcHRpb24geCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJVbmNhdWdodF9leGNlcHRpb24oJWEpXCIgcHBfdW5jYXVnaHQgeFxuICB8IENhdWdodF9leGNlcHRpb24geCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQ2F1Z2h0X2V4Y2VwdGlvbiglYSlcIiBwcF9jYXVnaHQgeFxuICB8IGV4YyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKFByaW50ZXhjLnRvX3N0cmluZyBleGMpXG5cbmFuZCBwcF91bmNhdWdodCBmIHggPVxuICBsZXQgd2l0aF9zcGFjZSA9IGZhbHNlIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiVhJWFleGNlcHRpb246QCAlYUBdXCJcbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlIChmdW4gZiB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJmaWxlX25hbWU6ICVzOyBcIiB4KSlcbiAgICB4LmZpbGVfbmFtZVxuICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2UgKGZ1biBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIm1lc3NhZ2U6ICVzOyBcIiB4KSlcbiAgICB4Lm1lc3NhZ2UgcHBfZXhjZXB0aW9uIHguYWxhcm1cblxuYW5kIHBwX2NhdWdodCBmIHggPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD5jYWxsaW5nX3N0YWNrOiAlYTsgJWFAXVwiXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgRm9ybWF0LnBwX3ByaW50X3N0cmluZylcbiAgICB4LmNhbGxpbmdfc3RhY2sgcHBfdW5jYXVnaHQgeC51bmNhdWdodF9leGNlcHRpb25cblxubGV0IHJlYyBzdHJpbmdsaXN0X29mX2V4Y2VwdGlvbiB4IHN0YWNrID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgRXhpdCAtPiBcIkV4aXRcIiA6OiBzdGFja1xuICB8IE5vdF9mb3VuZCAtPiBcIk5vdF9mb3VuZFwiIDo6IHN0YWNrXG4gIHwgQXJnLkJhZCB4IC0+IFwiQXJnLkJhZChcIiA6OiB4IDo6IFwiKVwiIDo6IHN0YWNrXG4gIHwgU3lzLkJyZWFrIC0+IFwiU3lzLkJyZWFrXCIgOjogc3RhY2tcbiAgfCBTdGFjay5FbXB0eSAtPiBcIlN0YWNrLkVtcHR5XCIgOjogc3RhY2tcbiAgfCBRdWV1ZS5FbXB0eSAtPiBcIlF1ZXVlLkVtcHR5XCIgOjogc3RhY2tcbiAgfCBTdHJlYW0uRXJyb3IgeCAtPiBcIlN0cmVhbS5FcnJvclwiIDo6IHggOjogc3RhY2tcbiAgfCBTdHJlYW0uRmFpbHVyZSAtPiBcIlN0cmVhbS5GYWlsdXJlXCIgOjogc3RhY2tcbiAgfCBBcmcuSGVscCB4IC0+IFwiQXJnLkhlbHAoXCIgOjogeCA6OiBcIilcIiA6OiBzdGFja1xuICB8IFBhcnNpbmcuUGFyc2VfZXJyb3IgLT4gXCJQYXJzaW5nLlBhcnNlX2Vycm9yXCIgOjogc3RhY2tcbiAgfCBTY2FuZi5TY2FuX2ZhaWx1cmUgeCAtPiBcIlNjYW5mLlNjYW4uZmFpbHVyZShcIiA6OiB4IDo6IFwiKVwiIDo6IHN0YWNrXG4gIHwgTGF6eS5VbmRlZmluZWQgLT4gXCJMYXp5LlVuZGVmaW5lZFwiIDo6IHN0YWNrXG4gIHwgVW5peExhYmVscy5Vbml4X2Vycm9yIF8gLT4gXCJVbml4TGFiZWxzLlVuaXhfZXJyb3JcIiA6OiBzdGFja1xuICB8IFVuaXguVW5peF9lcnJvciBfIC0+IFwiVW5peC5Vbml4LmVycm9yXCIgOjogc3RhY2tcbiAgfCBGYWlsdXJlIHggLT4gXCJGYWlsdXJlKFwiIDo6IHggOjogXCIpXCIgOjogc3RhY2tcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBcIlN0YWNrX292ZXJmbG93XCIgOjogc3RhY2tcbiAgfCBDYXVnaHRfZXhjZXB0aW9uIHggLT5cbiAgICBcIkNhdWdodF9leGNlcHRpb24oXCIgOjogc3RyaW5nbGlzdF9vZl9jYXVnaHQgeCAoXCIpXCIgOjogc3RhY2spXG4gIHwgVW5jYXVnaHRfZXhjZXB0aW9uIHggLT5cbiAgICBcIlVuY2F1Z2h0X2V4Y2VwdGlvbihcIiA6OiBzdHJpbmdsaXN0X29mX3VuY2F1Z2h0IHggKFwiKVwiIDo6IHN0YWNrKVxuICB8IF8gLT4gXCJVbmtub3duXCIgOjogc3RhY2tcblxuYW5kIHN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHQgeCBzdGFjayA9XG4gIChtYXRjaCB4LmZpbGVfbmFtZSB3aXRoXG4gIHwgTm9uZSAtPiBcIlwiXG4gIHwgU29tZSBmaWxlX25hbWUgLT4gXCJmaWxlX25hbWU6IFwiIF4gZmlsZV9uYW1lIF4gXCI7IFwiKVxuICA6OiAobWF0Y2ggeC5tZXNzYWdlIHdpdGhcbiAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgfCBTb21lIG1lc3NhZ2UgLT4gXCJtZXNzYWdlOiBcIiBeIG1lc3NhZ2UgXiBcIjsgXCIpXG4gIDo6IFwiZXhjZXB0aW9uOlwiXG4gIDo6IHN0cmluZ2xpc3Rfb2ZfZXhjZXB0aW9uIHguYWxhcm0gc3RhY2tcblxuYW5kIHN0cmluZ2xpc3Rfb2ZfY2F1Z2h0IHggc3RhY2sgPVxuICBcImNhbGxpbmdfc3RhY2s6IFwiXG4gIDo6IChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHNvbCBzdHJpbmcgLT4gc3RyaW5nIDo6IFwiLCBcIiA6OiBzb2wpXG4gICAgICAgIChcIjsgXCIgOjogc3RyaW5nbGlzdF9vZl91bmNhdWdodCB4LnVuY2F1Z2h0X2V4Y2VwdGlvbiAoXCI7IFwiIDo6IHN0YWNrKSkpXG4gICAgICAgeC5jYWxsaW5nX3N0YWNrXG5cbmFuZCBzdHJpbmdsaXN0X29mX3VuY2F1Z2h0X2xpZ2h0IHggc3RhY2sgPVxuICAobWF0Y2ggeC5maWxlX25hbWUgd2l0aFxuICB8IE5vbmUgLT4gXCJcIlxuICB8IFNvbWUgZmlsZV9uYW1lIC0+IFwiZmlsZV9uYW1lOiBcIiBeIGZpbGVfbmFtZSBeIFwiOyBcIilcbiAgOjogKG1hdGNoIHgubWVzc2FnZSB3aXRoXG4gICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgIHwgU29tZSBtZXNzYWdlIC0+IFwibWVzc2FnZTogXCIgXiBtZXNzYWdlIF4gXCI7IFwiKVxuICA6OiBcImV4Y2VwdGlvbjpcIlxuICA6OiBzdHJpbmdsaXN0X29mX2V4Y2VwdGlvbiB4LmFsYXJtIHN0YWNrXG5cbmFuZCBzdHJpbmdsaXN0X29mX2NhdWdodF9saWdodCB4IHN0YWNrID1cbiAgXCJjYWxsaW5nX3N0YWNrOiBcIlxuICA6OiAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBzb2wgc3RyaW5nIC0+IHN0cmluZyA6OiBcIiwgXCIgOjogc29sKVxuICAgICAgICAoXCI7IFwiXG4gICAgICAgIDo6IHN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHRfbGlnaHQgeC51bmNhdWdodF9leGNlcHRpb24gKFwiOyBcIiA6OiBzdGFjaykpKVxuICAgICAgIHguY2FsbGluZ19zdGFja1xuXG50eXBlIG1ldGhvZF9oYW5kbGVyID0ge1xuICBtaF9jYXVnaHRfZXJyb3JfbGlzdDogY2F1Z2h0X2V4Y2VwdGlvbiBsaXN0O1xuICBtaF9jYXVnaHRfZXJyb3JfbGlzdF90b191aTogY2F1Z2h0X2V4Y2VwdGlvbiBsaXN0O1xuICBtaF91bmNhdWdodF9lcnJvcl9saXN0OiB1bmNhdWdodF9leGNlcHRpb24gbGlzdDtcbiAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aTogdW5jYXVnaHRfZXhjZXB0aW9uIGxpc3Q7XG59XG5cbmxldCB0b19qc29uIG1ldGhvZF9oYW5kbGVyID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcImNhdWdodFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0IGNhdWdodF9leGNlcHRpb25fdG9fanNvblxuICAgICAgICAgIG1ldGhvZF9oYW5kbGVyLm1oX2NhdWdodF9lcnJvcl9saXN0ICk7XG4gICAgICAoIFwiY2F1Z2h0XCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3QgY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uXG4gICAgICAgICAgbWV0aG9kX2hhbmRsZXIubWhfY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWkgKTtcbiAgICAgICggXCJ1bmNhdWdodFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0IHVuY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uXG4gICAgICAgICAgbWV0aG9kX2hhbmRsZXIubWhfdW5jYXVnaHRfZXJyb3JfbGlzdCApO1xuICAgICAgKCBcInVuY2F1Z2h0X3RvX3VpXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3QgdW5jYXVnaHRfZXhjZXB0aW9uX3RvX2pzb25cbiAgICAgICAgICBtZXRob2RfaGFuZGxlci5taF91bmNhdWdodF9lcnJvcl9saXN0X3RvX3VpICk7XG4gICAgXVxuXG5sZXQgb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAyIC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBjYXVnaHQgPVxuICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3QgY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uKSAoTGlzdC5hc3NvYyBcImNhdWdodFwiIGwpXG4gICAgICAgaW5cbiAgICAgICBsZXQgY2F1Z2h0X3RvX3VpID1cbiAgICAgICAgIChKc29uVXRpbC50b19saXN0IGNhdWdodF9leGNlcHRpb25fb2ZfanNvbilcbiAgICAgICAgICAgKExpc3QuYXNzb2MgXCJjYXVnaHRfdG9fdWlcIiBsKVxuICAgICAgIGluXG4gICAgICAgbGV0IHVuY2F1Z2h0ID1cbiAgICAgICAgIChKc29uVXRpbC50b19saXN0IHVuY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uKSAoTGlzdC5hc3NvYyBcInVuY2F1Z2h0XCIgbClcbiAgICAgICBpblxuICAgICAgIGxldCB1bmNhdWdodF90b191aSA9XG4gICAgICAgICAoSnNvblV0aWwudG9fbGlzdCB1bmNhdWdodF9leGNlcHRpb25fb2ZfanNvbilcbiAgICAgICAgICAgKExpc3QuYXNzb2MgXCJ1bmNhdWdodF90b191aVwiIGwpXG4gICAgICAgaW5cbiAgICAgICB7XG4gICAgICAgICBtaF9jYXVnaHRfZXJyb3JfbGlzdCA9IGNhdWdodDtcbiAgICAgICAgIG1oX2NhdWdodF9lcnJvcl9saXN0X3RvX3VpID0gY2F1Z2h0X3RvX3VpO1xuICAgICAgICAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdCA9IHVuY2F1Z2h0O1xuICAgICAgICAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aSA9IHVuY2F1Z2h0X3RvX3VpO1xuICAgICAgIH1cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJlcnJvciBoYW5kbGVyXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImVycm9yIGhhbmRsZXJcIiwgeCkpXG5cbmxldCBlbXB0eV9lcnJvcl9oYW5kbGVyID1cbiAge1xuICAgIG1oX2NhdWdodF9lcnJvcl9saXN0ID0gW107XG4gICAgbWhfY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWkgPSBbXTtcbiAgICBtaF91bmNhdWdodF9lcnJvcl9saXN0ID0gW107XG4gICAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aSA9IFtdO1xuICB9XG5cbmxldCBhZGRfdW5jYXVnaHRfZXJyb3JfdG9fdWkgdW5jYXVnaHQgZXJyb3IgPVxuICB7XG4gICAgZXJyb3Igd2l0aFxuICAgIG1oX3VuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWkgPVxuICAgICAgdW5jYXVnaHQgOjogZXJyb3IubWhfdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aTtcbiAgfVxuXG5sZXQgYWRkX3VuY2F1Z2h0X2Vycm9yX3RvX290aGVycyB1bmNhdWdodCBlcnJvciA9XG4gIHtcbiAgICBlcnJvciB3aXRoXG4gICAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdCA9IHVuY2F1Z2h0IDo6IGVycm9yLm1oX3VuY2F1Z2h0X2Vycm9yX2xpc3Q7XG4gIH1cblxubGV0IGFkZF91bmNhdWdodF9lcnJvciA/dG9fdWkgdW5jYXVnaHQgZXJyb3IgPVxuICBsZXQgZXJyb3IgPVxuICAgIG1hdGNoIHRvX3VpIHdpdGhcbiAgICB8IFNvbWUgZmFsc2UgfCBOb25lIC0+IGVycm9yXG4gICAgfCBTb21lIHRydWUgLT4gYWRkX3VuY2F1Z2h0X2Vycm9yX3RvX3VpIHVuY2F1Z2h0IGVycm9yXG4gIGluXG4gIGFkZF91bmNhdWdodF9lcnJvcl90b19vdGhlcnMgdW5jYXVnaHQgZXJyb3JcblxubGV0IGdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3QgZXJyb3IgPSBlcnJvci5taF9jYXVnaHRfZXJyb3JfbGlzdFxubGV0IGdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3RfdG9fdWkgZXJyb3IgPSBlcnJvci5taF9jYXVnaHRfZXJyb3JfbGlzdF90b191aVxubGV0IGdldF91bmNhdWdodF9leGNlcHRpb25fbGlzdCBlcnJvciA9IGVycm9yLm1oX3VuY2F1Z2h0X2Vycm9yX2xpc3RcbmxldCBnZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3RfdG9fdWkgZXJyb3IgPSBlcnJvci5taF91bmNhdWdodF9lcnJvcl9saXN0X3RvX3VpXG5cbmxldCBpc19lbXB0eV9lcnJvcl9oYW5kbGVyIHggPVxuICB4Lm1oX2NhdWdodF9lcnJvcl9saXN0ID0gW10gJiYgeC5taF91bmNhdWdodF9lcnJvcl9saXN0ID0gW11cbiIsIigqKlxuICAqIGNvbmZpZy5tbFxuICAqIG9wZW5rYXBwYVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24vQW50aXF1ZSwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICpcbiAgKiBDcmVhdGlvbjogMDgvMDMvMjAxMFxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8Tm92IDI4IDIwMTg+XG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVyc1xuICAqIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTAsMjAxMSwyMDEyLDIwMTMsMjAxNCwyMDE1XG4gICogSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG4oKiogaWYgdW5zYWZlID0gdHJ1ZSwgdGhlbiB3aGVuZXZlciBhbiBleGNlcHRpb24gaXMgcmFpc2VkLCBhIGRlZmF1bHQgdmFsdWUgaXMgb3V0cHV0LCBhbmQgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCopXG5cbmxldCBkYXRlID0gXCI8MjAxNS4wMS4yM1wiXG5sZXQgdmVyc2lvbiA9IFwiNC4wMVwiXG5sZXQgb3V0cHV0X2RpcmVjdG9yeSA9IHJlZiBcIm91dHB1dFwiXG5sZXQgb3V0cHV0X2NtX2RpcmVjdG9yeSA9IHJlZiBcIm91dHB1dFwiXG5sZXQgb3V0cHV0X2ltX2RpcmVjdG9yeSA9IHJlZiBcIm91dHB1dFwiXG5sZXQgb3V0cHV0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeSA9IHJlZiBcIm91dHB1dFwiXG5sZXQgdW5zYWZlID0gcmVmIHRydWVcbmxldCB0cmFjZSA9IHJlZiBmYWxzZVxubGV0IHN5bnRheF92ZXJzaW9uID0gcmVmIFwiVjRcIlxubGV0IGR1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyID0gcmVmIGZhbHNlXG5sZXQgbG9nID0gcmVmIHN0ZG91dFxubGV0IGZvcm1hdHRlciA9IHJlZiBGb3JtYXQuc3RkX2Zvcm1hdHRlclxubGV0IGZpbGUgPSByZWYgKE5vbmUgOiBzdHJpbmcgb3B0aW9uKVxubGV0IGxpbmtfbW9kZSA9IHJlZiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Cb3VuZF9pbmRpY2VzXG5cbigqKiBpbmZsdWVuY2UgbWFwICopXG5sZXQgZG9faW5mbHVlbmNlX21hcCA9IHJlZiB0cnVlXG5cbmxldCBydWxlX3NoYXBlID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLlJlY3RcblxubGV0IHJ1bGVfY29sb3IgPVxuICByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuTGlnaHRTa3lCbHVlICgqXCIjODdjZWViXCIgKCogbGlnaHQgc2t5IGJsdWUgKikqKVxuXG5sZXQgdmFyaWFibGVfc2hhcGUgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuRWxsaXBzZVxuXG5sZXQgdmFyaWFibGVfY29sb3IgPVxuICByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuUGFsZUdyZWVuICgqIFwiIzk4ZmI5OFwiICgqUGFsZSBncmVlbiopKilcblxubGV0IGNlbnRlcl9jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5SZWRcbmxldCB3YWtlX3VwX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuICgqXCIjMDBmZjAwXCIgKCpHcmVlbiAqKSopXG5sZXQgaW5oaWJpdGlvbl9jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5SZWQgKCpcIiNmZjAwMDBcIiAoKnJlZCopKilcbmxldCB3YWtlX3VwX2Fycm93ID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbFxubGV0IGluaGliaXRpb25fYXJyb3cgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlXG5sZXQgaW5mbHVlbmNlX21hcF9maWxlID0gcmVmIFwiaW5mbHVlbmNlXCJcbmxldCBpbmZsdWVuY2VfbWFwX2Zvcm1hdCA9IHJlZiBcIkRPVFwiXG5sZXQgcHJvbXB0X2Z1bGxfdmFyX2RlZiA9IHJlZiBmYWxzZVxubGV0IHByb21wdF9mdWxsX3J1bGVfZGVmID0gcmVmIGZhbHNlXG5cbmxldCBtYWtlX2xhYmVsc19jb21wYXRpYmxlX3dpdGhfZG90ID1cbiAgcmVmIFsgJ1xcXCInLCBbICdcXFxcJzsgJ1xcXCInIF07ICdcXFxcJywgWyAnXFxcXCc7ICdcXFxcJyBdIF1cblxuKCoqIGNvbnRhY3QgbWFwKilcbmxldCBkb19jb250YWN0X21hcCA9IHJlZiB0cnVlXG5cbmxldCBkb19zY2MgPSByZWYgZmFsc2VcbmxldCBwdXJlX2NvbnRhY3QgPSByZWYgZmFsc2VcbmxldCBjb250YWN0X21hcF9maWxlID0gcmVmIFwiY29udGFjdFwiXG5sZXQgY29udGFjdF9tYXBfZm9ybWF0ID0gcmVmIFwiRE9UXCJcbmxldCBiaW5kaW5nX3NpdGVfc2hhcGUgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuQ2lyY2xlXG5sZXQgYmluZGluZ19zaXRlX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLlllbGxvd1xubGV0IGludGVybmFsX3NpdGVfc2hhcGUgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuRWxsaXBzZVxubGV0IGludGVybmFsX3NpdGVfY29sb3IgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW5cbmxldCBjb3VudGVyX3NpdGVfc2hhcGUgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuSG91c2VcbmxldCBjb3VudGVyX3NpdGVfY29sb3IgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuR3JleVxubGV0IGFnZW50X3NoYXBlX2FycmF5ID0gcmVmIChbfHxdIDogR3JhcGhfbG9nZ2Vyc19zaWcuc2hhcGUgb3B0aW9uIGFycmF5KVxubGV0IGFnZW50X2NvbG9yX2FycmF5ID0gcmVmIChbfHxdIDogR3JhcGhfbG9nZ2Vyc19zaWcuY29sb3Igb3B0aW9uIGFycmF5KVxubGV0IGFnZW50X3NoYXBlX2RlZiA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5SZWN0XG5sZXQgYWdlbnRfY29sb3JfZGVmID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkJsdWVcbmxldCBsaW5rX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkJsYWNrXG5sZXQgaW5mbHVlbmNlX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLlJlZFxubGV0IGluZmx1ZW5jZV9hcnJvdyA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcblxuKCoqZmxvdyBvZiBpbmZvcm1hdGlvbjogaW50ZXJuYWw7IGV4dGVybmFsIGZsb3cqKVxubGV0IGRvX09ERV9mbG93X29mX2luZm9ybWF0aW9uID0gcmVmIGZhbHNlXG5cbmxldCBkb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb24gPSByZWYgZmFsc2VcblxuKCpjb3ZlcmluZyBjbGFzc2VzOiB0aGlzIHBhcmFtZXRlciBkb2VzIG5vdCBtYXR0ZXIgaWYgaXQgaXMgdHJ1ZS9mYWxzZSopXG5sZXQgZG9fc2l0ZV9kZXBlbmRlbmNpZXMgPSByZWYgZmFsc2VcblxuKCpzZXQgdG8gdHJ1ZSBpZiBvbmUgd2FudHMgdG8gcHJpbnQgY292ZXJpbmcgY2xhc3NlcyopXG5sZXQgZHVtcF9zaXRlX2RlcGVuZGVuY2llcyA9IHJlZiBmYWxzZVxuXG4oKlJFTUFSSzogb25lIG5lZWRzIHRvIHNldCBkb19yZWFjaGFiaWxpdHlfYW5hbHlzaXMgdG8gdHJ1ZSBmaXJzdCB0byBiZVxuICBhYmxlIHRvIGFjdGl2ZSBkaWZmZXJlbnQgb3V0cHV0ICopXG5sZXQgZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzID0gcmVmIHRydWVcbmxldCB2ZXJib3NpdHlfbGV2ZWxfZm9yX3JlYWNoYWJpbGl0eV9hbmFseXNpcyA9IHJlZiBcIkxvd1wiXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcmVzdWx0ID0gcmVmIHRydWVcbmxldCBkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19jb3ZlcmluZ19jbGFzc2VzID0gcmVmIGZhbHNlXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfaXRlcmF0aW9uID0gcmVmIGZhbHNlXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfc3RhdGljID0gcmVmIGZhbHNlXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluYW1pYyA9IHJlZiBmYWxzZVxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmYgPSByZWYgZmFsc2VcbmxldCBkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bCA9IHJlZiBmYWxzZVxubGV0IGhpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzID0gcmVmIHRydWVcbmxldCBoaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uID0gcmVmIHRydWVcbmxldCBzbWFzaF9yZWxhdGlvbnMgPSByZWYgdHJ1ZVxubGV0IHVzZV9uYXR1cmFsX2xhbmd1YWdlID0gcmVmIFwia2FwcGFcIlxubGV0IGNvbXB1dGVfbG9jYWxfdHJhY2VzID0gcmVmIGZhbHNlXG5sZXQgc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3RyYWNlcyA9IHJlZiB0cnVlXG5sZXQgdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzID0gcmVmIGZhbHNlXG5sZXQgYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzID0gcmVmIGZhbHNlXG5sZXQgYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzID0gcmVmIGZhbHNlXG5sZXQgZG9fbm90X2NvbXByZXNzX3RyaXZpYWxfbG9zYW5nZXMgPSByZWYgZmFsc2VcbmxldCBsb2NhbF90cmFjZV9wcmVmaXggPSByZWYgXCJBZ2VudF90cmFjZV9cIlxubGV0IGxvY2FsX3RyYWNlX2Zvcm1hdCA9IHJlZiBcIkRPVFwiXG5sZXQgY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zID0gcmVmIGZhbHNlXG5cbigqKiBhY2N1cmFjeSAqKVxuXG5sZXQgd2l0aF92aWV3c19hbmFseXNpcyA9IHJlZiB0cnVlXG5sZXQgd2l0aF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcyA9IHJlZiB0cnVlXG5sZXQgd2l0aF9wYXJhbGxlbF9ib25kc19hbmFseXNpcyA9IHJlZiB0cnVlXG5sZXQgd2l0aF9keW5hbWljX2NvbnRhY3RfbWFwID0gcmVmIFwiZHluYW1pY1wiXG5sZXQgd2l0aF9jb3VudGVyc19hbmFseXNpcyA9IHJlZiB0cnVlXG5sZXQgY291bnRlcl9hbmFseXNpc19kb21haW4gPSByZWYgXCJtaVwiXG5sZXQgdmlld19hY2N1cmFjeV9sZXZlbCA9IHJlZiBcIkhpZ2hcIlxubGV0IGluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwgPSByZWYgXCJEaXJlY3RcIlxubGV0IGNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsID0gcmVmIFwiTG93XCJcbmxldCBzY2NfYWNjdXJhY3lfbGV2ZWwgPSByZWYgXCJIaWdoXCJcblxuKCogU3ltbWV0cmllcyAqKVxubGV0IGRvX3N5bW1ldHJpZXMgPSByZWYgZmFsc2VcbmxldCByYXRlX2NvbnZlbnRpb24gPSByZWYgXCJiaW9jaGVtaXN0XCJcblxuKCogQmFja2Rvb3JzIC0gc3RhdHMgZm9yIGJlbmNobWFya2luZyAqKVxubGV0IHByaW50X2VmZmljaWVuY3kgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2Zfc2NjID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjYyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX25icl9vZl9jb25zdHJhaW50cyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50cyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX3J1bGVzID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfdGltaW5nID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfZmlsZSA9IHJlZiBcImJlbmNobWFyay50ZXhcIlxubGV0IGJhY2tkb29yX2RpcmVjdG9yeSA9IHJlZiBcIlwiXG4iLCIoKipcbiAgKiBwYXJhbWV0ZXJzLm1sXG4gICogb3BlbmthcHBhXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbi9BbnRpcXVlLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKlxuICAqIENyZWF0aW9uOiAyMDEwLCB0aGUgMTl0aCBvZiBEZWNlbWJlclxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SmFuIDA4IDIwMjA+XG4gICogKlxuICAqIENvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyB3aGljaCBhcmUgcGFzc2VkIHRocm91Z2ggZnVuY3Rpb25zIGNvbXB1dGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMCwyMDExLDIwMTIsMjAxMywyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxuKCoqIGlmIHVuc2FmZSA9IHRydWUsIHRoZW4gd2hlbmV2ZXIgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYSBkZWZhdWx0IHZhbHVlIGlzIG91dHB1dCwgYW5kIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQqKVxuXG5sZXQgYWRkX2V4dGVuc2lvbl9pZl9ub3RfYWxyZWFkeV9tZW50aW9uZWQgYSBleHQgPVxuICBsZXQgc2l6ZV9hID0gU3RyaW5nLmxlbmd0aCBhIGluXG4gIGxldCBzaXplX2V4dCA9IFN0cmluZy5sZW5ndGggZXh0IGluXG4gIHRyeVxuICAgIGlmIHNpemVfYSA8IHNpemVfZXh0IHx8IFN0cmluZy5zdWIgYSAoc2l6ZV9hIC0gc2l6ZV9leHQpIHNpemVfZXh0ID0gZXh0IHRoZW5cbiAgICAgIGFcbiAgICBlbHNlXG4gICAgICBhIF4gZXh0XG4gIHdpdGggXyAtPiBhIF4gZXh0XG5cbmxldCBvcGVuX291dCBhIGV4dCA9XG4gICgqIGl0IHdvdWxkIGJlIGVhc2llciB3aXRoIE9DYW1sIDMuMDQgKilcbiAgbGV0IGEgPSBhZGRfZXh0ZW5zaW9uX2lmX25vdF9hbHJlYWR5X21lbnRpb25lZCBhIGV4dCBpblxuICBsZXQgZCA9IEZpbGVuYW1lLmRpcm5hbWUgYSBpblxuICBsZXQgKCkgPVxuICAgIHRyeVxuICAgICAgaWYgbm90IChTeXMuaXNfZGlyZWN0b3J5IGQpIHRoZW4gKFxuICAgICAgICBGb3JtYXQuZXByaW50ZiBcIiclcycgaXMgbm90IGEgZGlyZWN0b3J5QC5cIiBkO1xuICAgICAgICBleGl0IDFcbiAgICAgIClcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+IEthcHBhX2ZpbGVzLm1rX2Rpcl9yIGRcbiAgaW5cbiAgb3Blbl9vdXQgYVxuXG5sZXQgb3Blbl9hcHBlbmQgYSBleHQgPVxuICBsZXQgYSA9IGFkZF9leHRlbnNpb25faWZfbm90X2FscmVhZHlfbWVudGlvbmVkIGEgZXh0IGluXG4gIGxldCBkID0gRmlsZW5hbWUuZGlybmFtZSBhIGluXG4gIGxldCAoKSA9XG4gICAgdHJ5XG4gICAgICBpZiBub3QgKFN5cy5pc19kaXJlY3RvcnkgZCkgdGhlbiAoXG4gICAgICAgIEZvcm1hdC5lcHJpbnRmIFwiJyVzJyBpcyBub3QgYSBkaXJlY3RvcnlALlwiIGQ7XG4gICAgICAgIGV4aXQgMVxuICAgICAgKVxuICAgIHdpdGggU3lzX2Vycm9yIF8gLT4gS2FwcGFfZmlsZXMubWtfZGlyX3IgZFxuICBpblxuICB0cnkgb3Blbl9vdXRfZ2VuIFsgT3Blbl9hcHBlbmQgXSA1MTEgYSB3aXRoIF8gLT4gb3Blbl9vdXQgYSBleHRcblxubGV0IGNvbXBvc2UgZiBnIHggPSBmIChnIHgpXG5cbmxldCBleHRfZm9ybWF0IHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ET1QgLT4gXCIuZG90XCJcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5IVE1MIC0+IFwiLmh0bWxcIlxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRJTSAtPiBcIi5kaW0uanNvblwiXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuR0VQSEkgLT4gXCIuZ2V4ZlwiXG5cbmxldCBmZXRjaF9sZXZlbF9nZW4gcyByID1cbiAgbWF0Y2ggVG9vbHMubG93ZXJjYXNlICFyIHdpdGhcbiAgfCBcIm11dGVcIiB8IFwibm9uZVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vbmVcbiAgfCBcImxvd1wiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkxvd1xuICB8IFwibWVkaXVtXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTWVkaXVtXG4gIHwgXCJoaWdoXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSGlnaFxuICB8IFwiY29tcGxldGVcIiB8IFwiZnVsbFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkZ1bGxcbiAgfCB4IC0+XG4gICAgbGV0ICgpID0gUHJpbnRmLmVwcmludGYgXCIlczogJXMgaXMgbm90IGEgdmFsaWQgbGV2ZWwgISEhXCIgcyB4IGluXG4gICAgcmFpc2UgRXhpdFxuXG5sZXQgZmV0Y2hfZ3JhcGhfZm9ybWF0IGYgPVxuICBtYXRjaCBUb29scy5sb3dlcmNhc2UgIWYgd2l0aFxuICB8IFwiZG90XCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRE9UXG4gIHwgXCJodG1sXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSFRNTFxuICB8IFwiZGltXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRElNXG4gIHwgXCJnZXBoaVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkdFUEhJXG4gIHwgeCAtPlxuICAgIGxldCAoKSA9IFByaW50Zi5lcHJpbnRmIFwiJXMgaXMgbm90IGEgdmFsaWQgZ3JhcGggZm9ybWF0ICEhIVwiIHggaW5cbiAgICByYWlzZSBFeGl0XG5cbmxldCBmZXRjaF9hY2N1cmFjeV9sZXZlbCByID0gZmV0Y2hfbGV2ZWxfZ2VuIFwiYW4gYWNjdXJhY3lcIiByXG5sZXQgZmV0Y2hfdmVyYm9zaXR5X2xldmVsIHIgPSBmZXRjaF9sZXZlbF9nZW4gXCJhIHZlcmJvc2l0eVwiIHJcblxubGV0IGZldGNoX3JhdGVfY29udmVudGlvbiBmID1cbiAgbWF0Y2ggVG9vbHMubG93ZXJjYXNlICFmIHdpdGhcbiAgfCBcImthc2ltXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTm9fY29ycmVjdGlvblxuICB8IFwiZGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIiAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXG4gIHwgXCJiaW9jaGVtaXN0XCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuQmlvY2hlbWlzdFxuICB8IHggLT5cbiAgICBsZXQgKCkgPSBQcmludGYuZXByaW50ZiBcIiVzIGlzIG5vdCBhIHZhbGlkIHJhdGUgY29udmVudGlvbiAhISFcIiB4IGluXG4gICAgcmFpc2UgRXhpdFxuXG5sZXQgZ2V0X3N5bnRheF92ZXJzaW9uICgpID1cbiAgbWF0Y2ggIUNvbmZpZy5zeW50YXhfdmVyc2lvbiB3aXRoXG4gIHwgXCI0XCIgfCBcInY0XCIgfCBcIlY0XCIgLT4gQXN0LlY0XG4gIHwgXCIzXCIgfCBcInYzXCIgfCBcIlYzXCIgLT4gQXN0LlYzXG4gIHwgXyAtPiBmYWlsd2l0aCBcIlN5bnRheCB2ZXJzaW9uIHNob3VsZCBiZSBlaXRoZXIgVjMgb3IgVjRcIlxuXG5sZXQgZ2V0X3N5bWJvbHMgKCkgPVxuICBtYXRjaCBnZXRfc3ludGF4X3ZlcnNpb24gKCkgd2l0aFxuICB8IEFzdC5WMyAtPiBTeW1ib2xfdGFibGUuc3ltYm9sX3RhYmxlX1YzXG4gIHwgQXN0LlY0IC0+IFN5bWJvbF90YWJsZS5zeW1ib2xfdGFibGVfVjRcblxubGV0IGdldF9pbmZsdWVuY2VfbWFwICgpID1cbiAge1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmltX2Zvcm1hdCA9XG4gICAgICBmZXRjaF9ncmFwaF9mb3JtYXQgQ29uZmlnLmluZmx1ZW5jZV9tYXBfZm9ybWF0O1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmltX2ZpbGUgPVxuICAgICAgKG1hdGNoICFDb25maWcuaW5mbHVlbmNlX21hcF9maWxlIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBOb25lXG4gICAgICB8IHggLT4gU29tZSB4KTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbV9kaXJlY3RvcnkgPVxuICAgICAgKG1hdGNoICFDb25maWcub3V0cHV0X2ltX2RpcmVjdG9yeSB3aXRoXG4gICAgICB8IFwiXCIgLT4gU29tZSBcIlwiXG4gICAgICB8IHggLT4gU29tZSAoeCBeIFwiL1wiKSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucnVsZV9zaGFwZSA9ICFDb25maWcucnVsZV9zaGFwZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ydWxlX2NvbG9yID0gIUNvbmZpZy5ydWxlX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZhcmlhYmxlX3NoYXBlID0gIUNvbmZpZy52YXJpYWJsZV9zaGFwZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52YXJpYWJsZV9jb2xvciA9ICFDb25maWcudmFyaWFibGVfY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcud2FrZV91cF9jb2xvciA9ICFDb25maWcud2FrZV91cF9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmhpYml0aW9uX2NvbG9yID0gIUNvbmZpZy5pbmhpYml0aW9uX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLndha2VfdXBfYXJyb3cgPSAhQ29uZmlnLndha2VfdXBfYXJyb3c7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5oaWJpdGlvbl9hcnJvdyA9ICFDb25maWcuaW5oaWJpdGlvbl9hcnJvdztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9tcHRfZnVsbF92YXJfZGVmID0gIUNvbmZpZy5wcm9tcHRfZnVsbF92YXJfZGVmO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByb21wdF9mdWxsX3J1bGVfZGVmID0gIUNvbmZpZy5wcm9tcHRfZnVsbF9ydWxlX2RlZjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYWtlX2xhYmVsc19jb21wYXRpYmxlID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChhLCBsKSAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5DaGFyTWFwLmFkZCBhIGwgbWFwKVxuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5DaGFyTWFwLmVtcHR5XG4gICAgICAgICFDb25maWcubWFrZV9sYWJlbHNfY29tcGF0aWJsZV93aXRoX2RvdDtcbiAgfVxuXG5sZXQgZ2V0X2NvbnRhY3RfbWFwICgpID1cbiAge1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNtX2Zvcm1hdCA9XG4gICAgICBmZXRjaF9ncmFwaF9mb3JtYXQgQ29uZmlnLmNvbnRhY3RfbWFwX2Zvcm1hdDtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jbV9maWxlID1cbiAgICAgIChtYXRjaCAhQ29uZmlnLmNvbnRhY3RfbWFwX2ZpbGUgd2l0aFxuICAgICAgfCBcIlwiIC0+IE5vbmVcbiAgICAgIHwgeCAtPiBTb21lIHgpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNtX2RpcmVjdG9yeSA9XG4gICAgICAobWF0Y2ggIUNvbmZpZy5vdXRwdXRfY21fZGlyZWN0b3J5IHdpdGhcbiAgICAgIHwgXCJcIiAtPiBTb21lIFwiXCJcbiAgICAgIHwgeCAtPiBTb21lICh4IF4gXCIvXCIpKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wdXJlX2NvbnRhY3QgPSAhQ29uZmlnLnB1cmVfY29udGFjdDtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iaW5kaW5nX3NpdGVfc2hhcGUgPSAhQ29uZmlnLmJpbmRpbmdfc2l0ZV9zaGFwZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iaW5kaW5nX3NpdGVfY29sb3IgPSAhQ29uZmlnLmJpbmRpbmdfc2l0ZV9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbnRlcm5hbF9zaXRlX3NoYXBlID0gIUNvbmZpZy5pbnRlcm5hbF9zaXRlX3NoYXBlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmludGVybmFsX3NpdGVfY29sb3IgPSAhQ29uZmlnLmludGVybmFsX3NpdGVfY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcl9zaXRlX3NoYXBlID0gIUNvbmZpZy5jb3VudGVyX3NpdGVfc2hhcGU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcl9zaXRlX2NvbG9yID0gIUNvbmZpZy5jb3VudGVyX3NpdGVfY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfc2hhcGVfYXJyYXkgPSAhQ29uZmlnLmFnZW50X3NoYXBlX2FycmF5O1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFnZW50X2NvbG9yX2FycmF5ID0gIUNvbmZpZy5hZ2VudF9jb2xvcl9hcnJheTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9zaGFwZV9kZWYgPSAhQ29uZmlnLmFnZW50X3NoYXBlX2RlZjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9jb2xvcl9kZWYgPSAhQ29uZmlnLmFnZW50X2NvbG9yX2RlZjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5saW5rX2NvbG9yID0gIUNvbmZpZy5saW5rX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluZmx1ZW5jZV9jb2xvciA9ICFDb25maWcuaW5mbHVlbmNlX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluZmx1ZW5jZV9hcnJvdyA9ICFDb25maWcuaW5mbHVlbmNlX2Fycm93O1xuICB9XG5cbmxldCByZWFjaGFiaWxpdHlfbWFwXzAgPVxuICB7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcmVzdWx0ID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfaXRlcmF0aW9uID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZGlmZiA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3dsID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfY292ZXJpbmdfY2xhc3NlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpYyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uID1cbiAgICAgIGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXB1dGVfbG9jYWxfdHJhY2VzID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3RyYWNlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmlnbm9yZV90cml2aWFsX2xvc2FuZ2VzID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc21hc2hfcmVsYXRpb25zID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlbF9mcm9tX2RlYWRfcnVsZXMgPVxuICAgICAgdHJ1ZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51c2VfbmF0dXJhbF9sYW5ndWFnZSA9IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthcHBhO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmZvcm1hdF9mb3JfbG9jYWxfdHJhY2VzID1cbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRPVDtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZV9wcmVmaXggPSBcIkFnZW50X3RyYWNlX1wiO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlX2RpcmVjdG9yeSA9XG4gICAgICAobWF0Y2ggIUNvbmZpZy5vdXRwdXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5IHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHggLT4geCBeIFwiL1wiKTtcbiAgfVxuXG5sZXQgcmVhY2hhYmlsaXR5X21hcF8xID1cbiAge1xuICAgIHJlYWNoYWJpbGl0eV9tYXBfMCB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcmVzdWx0ID0gdHJ1ZTtcbiAgfVxuXG5sZXQgcmVhY2hhYmlsaXR5X21hcF8yID1cbiAge1xuICAgIHJlYWNoYWJpbGl0eV9tYXBfMSB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfaXRlcmF0aW9uID0gdHJ1ZTtcbiAgfVxuXG5sZXQgcmVhY2hhYmlsaXR5X21hcF8zID1cbiAge1xuICAgIHJlYWNoYWJpbGl0eV9tYXBfMiB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZGlmZiA9IHRydWU7XG4gIH1cblxubGV0IHJlYWNoYWJpbGl0eV9tYXBfNCA9XG4gIHtcbiAgICByZWFjaGFiaWxpdHlfbWFwXzMgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3dsID0gdHJ1ZTtcbiAgfVxuXG5sZXQgYWRkX2RlYnVnZ2luZ19wYXJhbWV0ZXJzX3RvX3JlYWNoYWJpbGl0eV9tYXAgcmVhY2hhYmlsaXR5ID1cbiAgbGV0IHRyYWNlID0gIUNvbmZpZy50cmFjZSBpblxuICBsZXQgcmVhY2hhYmlsaXR5ID1cbiAgICB7XG4gICAgICByZWFjaGFiaWxpdHkgd2l0aFxuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlbF9mcm9tX2RlYWRfcnVsZXMgPVxuICAgICAgICAhQ29uZmlnLmhpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbiA9XG4gICAgICAgICFDb25maWcuaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbjtcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNtYXNoX3JlbGF0aW9ucyA9ICFDb25maWcuc21hc2hfcmVsYXRpb25zO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX25hdHVyYWxfbGFuZ3VhZ2UgPVxuICAgICAgICAobWF0Y2ggIUNvbmZpZy51c2VfbmF0dXJhbF9sYW5ndWFnZSB3aXRoXG4gICAgICAgIHwgXCJyYXdcIiB8IFwiUkFXXCIgfCBcIlJhd1wiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLlJhd1xuICAgICAgICB8IFwia2FwcGFcIiB8IFwiS0FQUEFcIiB8IFwiS2FwcGFcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYXBwYVxuICAgICAgICB8IFwiRW5nbGlzaFwiIHwgXCJFTkdMSVNIXCIgfCBcImVuZ2xpc2hcIiAtPlxuICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5hdHVyYWxfbGFuZ3VhZ2VcbiAgICAgICAgfCBfIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthcHBhKTtcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXB1dGVfbG9jYWxfdHJhY2VzID1cbiAgICAgICAgIUNvbmZpZy5jb21wdXRlX2xvY2FsX3RyYWNlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyA9XG4gICAgICAgICFDb25maWcuY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaWdub3JlX3RyaXZpYWxfbG9zYW5nZXMgPVxuICAgICAgICAhQ29uZmlnLmRvX25vdF9jb21wcmVzc190cml2aWFsX2xvc2FuZ2VzO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzID1cbiAgICAgICAgIUNvbmZpZy5hZGRfc2luZ3VsYXJfbWFjcm9zdGF0ZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXMgPVxuICAgICAgICAhQ29uZmlnLmFkZF9zaW5ndWxhcl9taWNyb3N0YXRlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXMgPVxuICAgICAgICAhQ29uZmlnLnNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXMgPVxuICAgICAgICAhQ29uZmlnLnVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmZvcm1hdF9mb3JfbG9jYWxfdHJhY2VzID1cbiAgICAgICAgZmV0Y2hfZ3JhcGhfZm9ybWF0IENvbmZpZy5sb2NhbF90cmFjZV9mb3JtYXQ7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZV9wcmVmaXggPSAhQ29uZmlnLmxvY2FsX3RyYWNlX3ByZWZpeDtcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlX2RpcmVjdG9yeSA9XG4gICAgICAgIChtYXRjaCAhQ29uZmlnLm91dHB1dF9sb2NhbF90cmFjZV9kaXJlY3Rvcnkgd2l0aFxuICAgICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgICB8IHggLT4geCBeIFwiL1wiKTtcbiAgICB9XG4gIGluXG4gIGlmIHRyYWNlIHRoZW5cbiAgICB7XG4gICAgICByZWFjaGFiaWxpdHkgd2l0aFxuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfY292ZXJpbmdfY2xhc3NlcyA9XG4gICAgICAgICFDb25maWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfY292ZXJpbmdfY2xhc3NlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpYyA9XG4gICAgICAgICFDb25maWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfc3RhdGljO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluYW1pYyA9XG4gICAgICAgICFDb25maWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluYW1pYztcbiAgICB9XG4gIGVsc2VcbiAgICByZWFjaGFiaWxpdHlcblxubGV0IGdldF9yZWFjaGFiaWxpdHlfbWFwICgpID1cbiAgYWRkX2RlYnVnZ2luZ19wYXJhbWV0ZXJzX3RvX3JlYWNoYWJpbGl0eV9tYXBcbiAgICAobWF0Y2hcbiAgICAgICBmZXRjaF92ZXJib3NpdHlfbGV2ZWwgQ29uZmlnLnZlcmJvc2l0eV9sZXZlbF9mb3JfcmVhY2hhYmlsaXR5X2FuYWx5c2lzXG4gICAgIHdpdGhcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vbmUgLT4gcmVhY2hhYmlsaXR5X21hcF8wXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Mb3cgLT4gcmVhY2hhYmlsaXR5X21hcF8xXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5NZWRpdW0gLT4gcmVhY2hhYmlsaXR5X21hcF8yXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5IaWdoIC0+IHJlYWNoYWJpbGl0eV9tYXBfM1xuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRnVsbCAtPiByZWFjaGFiaWxpdHlfbWFwXzQpXG5cbmxldCBnZXRfcmVhY2hhYmlsaXR5X3BhcmFtZXRlcnMgKCkgPVxuICB7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmlld3MgPSAhQ29uZmlnLndpdGhfdmlld3NfYW5hbHlzaXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2l0ZV9hY3Jvc3NfYm9uZHMgPVxuICAgICAgIUNvbmZpZy53aXRoX3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFsbGVsX2JvbmRzID1cbiAgICAgICFDb25maWcud2l0aF9wYXJhbGxlbF9ib25kc19hbmFseXNpcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb3VudGVycyA9ICFDb25maWcud2l0aF9jb3VudGVyc19hbmFseXNpcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5keW5hbWljX2NvbnRhY3RfbWFwID1cbiAgICAgIChtYXRjaCBUb29scy5sb3dlcmNhc2UgIUNvbmZpZy53aXRoX2R5bmFtaWNfY29udGFjdF9tYXAgd2l0aFxuICAgICAgfCBcImR5bmFtaWNcIiAtPiB0cnVlXG4gICAgICB8IFwic3RhdGljXCIgLT4gZmFsc2VcbiAgICAgIHwgXyAtPiB0cnVlKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb3VudGVyX2RvbWFpbiA9XG4gICAgICAobWF0Y2ggVG9vbHMubG93ZXJjYXNlICFDb25maWcuY291bnRlcl9hbmFseXNpc19kb21haW4gd2l0aFxuICAgICAgfCBcIm1pXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTWlcbiAgICAgIHwgXCJvY3RhZ29uXCIgfCBcIm9jdFwiIHwgXCJvY3RvXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuT2N0YWdvbnNcbiAgICAgIHwgXCJhYnN0cmFjdC1tdWx0aXNldFwiIHwgXCJhbVwiIHwgXCJhYnN0cmFjdF9tdWx0aXNldFwiIC0+XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkFic3RyYWN0X211bHRpc2V0XG4gICAgICB8IFwibm9uLXJlbGF0aW9uYWxcIiB8IFwibnJcIiB8IFwibm9uLXJlbFwiIHwgXCJub25fcmVsXCIgfCBcIm5vbl9yZWxhdGlvbmFsXCIgLT5cbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTm9uX3JlbGF0aW9uYWxcbiAgICAgIHwgXyAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5NaSk7XG4gIH1cblxubGV0IG9wZW5fdGFza3NfcHJvZmlsaW5nID1cbiAgbGV0IGNhY2hlID0gcmVmIE5vbmUgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggIWNhY2hlIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBjaGFubmVsID0gS2FwcGFfZmlsZXMub3Blbl90YXNrc19wcm9maWxpbmcgKCkgaW5cbiAgICAgIGxldCAoKSA9IGNhY2hlIDo9IFNvbWUgY2hhbm5lbCBpblxuICAgICAgY2hhbm5lbFxuICAgIHwgU29tZSBjaGFubmVsIC0+IGNoYW5uZWxcblxubGV0IGZldGNoX2JhY2tkb29ycyAoKSA9XG4gIHtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2Zfc2NjID0gIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2Zfc2NjO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2MgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9jb25zdHJhaW50cyA9XG4gICAgICAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9jb25zdHJhaW50cztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyA9XG4gICAgICAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9ydWxlcyA9XG4gICAgICAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ydWxlcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZ1xuICAgIC5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfdGltaW5nID0gIUNvbmZpZy5iYWNrZG9vcl90aW1pbmc7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfZmlsZSA9ICFDb25maWcuYmFja2Rvb3JfZmlsZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9kaXJlY3RvcnkgPSAhQ29uZmlnLmJhY2tkb29yX2RpcmVjdG9yeTtcbiAgfVxuXG5sZXQgZ2V0X3BhcmFtZXRlcnMgPyhodG1sX21vZGUgPSB0cnVlKSB+Y2FsbGVkX2Zyb20gKCkgPVxuICBsZXQgY2hhbm5lbCwgY2hhbm5lbF9lcnIsIGNoYW5uZWxfYmFja2Rvb3IsIGh0bWxfbW9kZSwgY29tbWFuZCA9XG4gICAgbWF0Y2ggY2FsbGVkX2Zyb20gd2l0aFxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuU2VydmVyIC0+XG4gICAgICBOb25lLCBOb25lLCBOb25lLCBmYWxzZSB8fCBodG1sX21vZGUsIFt8IFwiS2FTYVwiOyBcIihJbnRlcnJhY3RpdmUgbW9kZSlcIiB8XVxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSW50ZXJuYWxpc2VkIC0+XG4gICAgICAoIFNvbWUgc3Rkb3V0LFxuICAgICAgICBTb21lIEZvcm1hdC5lcnJfZm9ybWF0dGVyLFxuICAgICAgICBTb21lIHN0ZG91dCxcbiAgICAgICAgZmFsc2UgfHwgaHRtbF9tb2RlLFxuICAgICAgICBTeXMuYXJndiApXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNpbSAtPlxuICAgICAgU29tZSAob3Blbl90YXNrc19wcm9maWxpbmcgKCkpLCBOb25lLCBOb25lLCBmYWxzZSB8fCBodG1sX21vZGUsIFN5cy5hcmd2XG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNhIC0+XG4gICAgICAoIChtYXRjaFxuICAgICAgICAgICAhQ29uZmlnLm91dHB1dF9kaXJlY3RvcnksIFwicHJvZmlsaW5nXCIsIFwiLmh0bWxcIlxuICAgICAgICAgICAoKnRlbXBvcmFyeSwgdG8gZG86IHByb3ZpZGUgYSBwYXJhbWV0ZXJpc2FibGUgZmlsZW5hbWUqKVxuICAgICAgICAgd2l0aFxuICAgICAgICB8IF8sIFwiXCIsIF8gLT4gU29tZSBzdGRvdXRcbiAgICAgICAgfCBcIlwiLCBhLCBleHQgLT4gU29tZSAob3Blbl9vdXQgYSBleHQpXG4gICAgICAgIHwgYSwgYiwgZXh0IC0+IFNvbWUgKG9wZW5fb3V0IChhIF4gXCIvXCIgXiBiKSBleHQpKSxcbiAgICAgICAgU29tZSBGb3JtYXQuZXJyX2Zvcm1hdHRlcixcbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICggIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9zY2NcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2NcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnXG4gICAgICAgICAgICAgICAgIC5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9jb25zdHJhaW50c1xuICAgICAgICAgICAgIHx8ICFDb25maWcuYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl90aW1pbmdcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzLFxuICAgICAgICAgICAgICFDb25maWcuYmFja2Rvb3JfZGlyZWN0b3J5LFxuICAgICAgICAgICAgICFDb25maWcuYmFja2Rvb3JfZmlsZSxcbiAgICAgICAgICAgICBcIi50ZXhcIiApXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgZmFsc2UsIF8sIF8sIF8gLT4gTm9uZVxuICAgICAgICB8IF8sIF8sIFwiXCIsIF8gLT4gU29tZSBzdGRvdXRcbiAgICAgICAgfCBfLCBcIlwiLCBhLCBleHQgLT4gU29tZSAob3Blbl9hcHBlbmQgYSBleHQpXG4gICAgICAgIHwgXywgYSwgYiwgZXh0IC0+IFNvbWUgKG9wZW5fYXBwZW5kIChhIF4gXCIvXCIgXiBiKSBleHQpKSxcbiAgICAgICAgZmFsc2UgfHwgaHRtbF9tb2RlLFxuICAgICAgICBTeXMuYXJndiApXG4gIGluXG4gIHtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnMgPVxuICAgICAge1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zeW50YXhfdmVyc2lvbiA9IGdldF9zeW50YXhfdmVyc2lvbiAoKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fY29udGFjdF9tYXAgPSAhQ29uZmlnLmRvX2NvbnRhY3RfbWFwO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zY2MgPSAhQ29uZmlnLmRvX3NjYztcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9faW5mbHVlbmNlX21hcCA9ICFDb25maWcuZG9faW5mbHVlbmNlX21hcDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb24gPVxuICAgICAgICAgICFDb25maWcuZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb247XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdGlvbiA9XG4gICAgICAgICAgIUNvbmZpZy5kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb247XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3NpdGVfZGVwZW5kZW5jaWVzID1cbiAgICAgICAgICAhQ29uZmlnLmRvX3NpdGVfZGVwZW5kZW5jaWVzO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zeW1tZXRyaWVzX2FuYWx5c2lzID0gIUNvbmZpZy5kb19zeW1tZXRyaWVzO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yYXRlX2NvbnZlbnRpb24gPVxuICAgICAgICAgIGZldGNoX3JhdGVfY29udmVudGlvbiBDb25maWcucmF0ZV9jb252ZW50aW9uO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3NpdGVfZGVwZW5kZW5jaWVzID1cbiAgICAgICAgICAhQ29uZmlnLmR1bXBfc2l0ZV9kZXBlbmRlbmNpZXM7XG4gICAgICAgICgqZGlmZmVyZW50IHJlYWNoYWJpbGl0eSBvdXRwdXQqKVxuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXMgPVxuICAgICAgICAgICFDb25maWcuZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzO1xuICAgICAgICAoKkdFVCBTWU1CT0xTKilcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZmlsZSA9ICFDb25maWcuZmlsZTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc3ltYm9scyA9IGdldF9zeW1ib2xzICgpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfbWFwX291dHB1dCA9IGdldF9pbmZsdWVuY2VfbWFwICgpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb250YWN0X21hcF9vdXRwdXQgPSBnZXRfY29udGFjdF9tYXAgKCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0ID1cbiAgICAgICAgICBnZXRfcmVhY2hhYmlsaXR5X21hcCAoKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnMgPVxuICAgICAgICAgIGdldF9yZWFjaGFiaWxpdHlfcGFyYW1ldGVycyAoKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudW5zYWZlID0gIUNvbmZpZy51bnNhZmU7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlID0gIUNvbmZpZy50cmFjZTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjdXIgPVxuICAgICAgICAgICFDb25maWcuZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjdXI7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByZWZpeCA9IFwiXCI7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNhbGxfc3RhY2sgPSBbXTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubGlua19tb2RlID0gIUNvbmZpZy5saW5rX21vZGU7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmthc2Ffc3RhdGUgPVxuICAgICAgICAgIFJlbWFuZW50X3N0YXRlX3NpZ25hdHVyZS5lbXB0eV9lbmdpbmVfc3RhdGU7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxhdW5jaGluZ19kYXRlID1cbiAgICAgICAgICBVbml4LmxvY2FsdGltZSAoVW5peC5nZXR0aW1lb2ZkYXkgKCkpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50aW1lX3NoaWZ0ID1cbiAgICAgICAgICAobGV0IHggPSBVbml4LmdldHRpbWVvZmRheSAoKSBpblxuICAgICAgICAgICAoVW5peC5sb2NhbHRpbWUgeCkuVW5peC50bV9ob3VyIC0gKFVuaXguZ210aW1lIHgpLlVuaXgudG1faG91cik7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhvc3RuYW1lID1cbiAgICAgICAgICAodHJ5IFVuaXguZ2V0aG9zdG5hbWUgKCkgd2l0aCBfIC0+IFwiamF2YXNjcmlwdFwiKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tbWFuZF9saW5lID0gY29tbWFuZDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2hvcnRfdmVyc2lvbiA9IFZlcnNpb24udmVyc2lvbl9zdHJpbmc7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZlcnNpb24gPSBWZXJzaW9uLnZlcnNpb25fa2FzYV9mdWxsX25hbWU7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRrX2ludGVyZmFjZSA9ICFWZXJzaW9uLnRrX2lzX2luaXRpYWxpemVkO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsID1cbiAgICAgICAgICAobWF0Y2ggVG9vbHMubG93ZXJjYXNlICFDb25maWcuaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCB3aXRoXG4gICAgICAgICAgfCBcImluZGlyZWN0XCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTG93XG4gICAgICAgICAgfCBcImRpcmVjdFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk1lZGl1bVxuICAgICAgICAgIHwgXCJyZWFsaXNhYmxlXCIgfCBcInJlYWxpemFibGVcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5IaWdoXG4gICAgICAgICAgfCBfIC0+IGZldGNoX2FjY3VyYWN5X2xldmVsIENvbmZpZy5pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwgPVxuICAgICAgICAgIGZldGNoX2FjY3VyYWN5X2xldmVsIENvbmZpZy5jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2NjX2FjY3VyYWN5X2xldmVsID1cbiAgICAgICAgICBmZXRjaF9hY2N1cmFjeV9sZXZlbCBDb25maWcuc2NjX2FjY3VyYWN5X2xldmVsO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52aWV3X2FjY3VyYWN5X2xldmVsID1cbiAgICAgICAgICBmZXRjaF9hY2N1cmFjeV9sZXZlbCBDb25maWcudmlld19hY2N1cmFjeV9sZXZlbDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY2FsbGVkX2Zyb207XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmh0bWxfbW9kZTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZW1wdHlfaGFzaHRibF9zaXplID0gMTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JzID0gZmV0Y2hfYmFja2Rvb3JzICgpO1xuICAgICAgfTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2Vycm9yX2xpc3QgPSAoZnVuIF8gLT4gKCkpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfcHJvZ3Jlc3NfYmFyID0gKGZ1biBfIC0+ICgpKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9wcm9ncmVzc19iYXIgPSAoZnVuIF8gLT4gKCkpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfY3VycmVudF9waGFzZV90aXRsZSA9IChmdW4gXyAtPiAoKSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVzZXRfY3VycmVudF9waGFzZV90aXRsZSA9IChmdW4gXyAtPiAoKSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubG9nZ2VyID1cbiAgICAgIChtYXRjaCBjaGFubmVsIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXJcbiAgICAgIHwgU29tZSBfIC0+IExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXIgIUNvbmZpZy5mb3JtYXR0ZXIpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlcl9lcnIgPVxuICAgICAgKG1hdGNoIGNoYW5uZWxfZXJyIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXJcbiAgICAgIHwgU29tZSBmbXQgLT4gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciBmbXQpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlcl9iYWNrZG9vciA9XG4gICAgICAobWF0Y2ggY2hhbm5lbF9iYWNrZG9vciB3aXRoXG4gICAgICB8IE5vbmUgLT4gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyXG4gICAgICB8IFNvbWUgY2hhbm5lbCAtPiBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fY2hhbm5lbCBjaGFubmVsKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wcmVzc2lvbl9zdGF0dXMgPSBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXI7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJpbnRfZWZmaWNpZW5jeSA9ICFDb25maWcucHJpbnRfZWZmaWNpZW5jeTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9maWxlciA9XG4gICAgICAobWF0Y2ggY2hhbm5lbCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyXG4gICAgICB8IFNvbWUgYSAtPiBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fY2hhbm5lbCB+bW9kZTpMb2dnZXJzLkhUTUxfVGFidWxhciBhKTtcbiAgfVxuXG5sZXQgZHVtbXlfcGFyYW1ldGVycyB+Y2FsbGVkX2Zyb20gPVxuICBsZXQgY2FjaGUgPSByZWYgTm9uZSBpblxuICBmdW4gKCkgLT5cbiAgICBtYXRjaCAhY2FjaGUgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IHAgPSBnZXRfcGFyYW1ldGVycyB+Y2FsbGVkX2Zyb20gKCkgaW5cbiAgICAgIGxldCAoKSA9IGNhY2hlIDo9IFNvbWUgcCBpblxuICAgICAgcFxuICAgIHwgU29tZSBwIC0+IHBcblxubGV0IGdldF9ib3VuZF9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmJvdW5kXG5sZXQgZ2V0X29wZW5fYmluZGluZ19zdGF0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9iaW5kaW5nX3N0YXRlXG5sZXQgZ2V0X2Nsb3NlX2JpbmRpbmdfc3RhdGVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2JpbmRpbmdfc3RhdGVcblxubGV0IGdldF9taXNzaW5nX2JpbmRpbmdfc3RhdGVfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLm1pc3NpbmdfYmluZGluZ19zdGF0ZVxuXG5sZXQgZ2V0X2xpbmtfdG9fYW55XzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5saW5rX3RvX2FueVxubGV0IGdldF9saW5rX3RvX3NvbWVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmxpbmtfdG9fc29tZVxuXG5sZXQgZ2V0X2ludGVybmFsX3N0YXRlX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuaW50ZXJuYWxfc3RhdGVfc3ltYm9sXG5cbmxldCBnZXRfb3Blbl9pbnRlcm5hbF9zdGF0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9pbnRlcm5hbF9zdGF0ZVxubGV0IGdldF9jbG9zZV9pbnRlcm5hbF9zdGF0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfaW50ZXJuYWxfc3RhdGVcbmxldCBnZXRfZnJlZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuZnJlZVxubGV0IGdldF9hdF9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmF0XG5sZXQgZ2V0X2FnZW50X29wZW5fc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5hZ2VudF9vcGVuXG5sZXQgZ2V0X2FnZW50X2Nsb3NlX3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuYWdlbnRfY2xvc2VcblxubGV0IGdldF9hZ2VudF9zZXBfY29tbWFfc3ltYm9sXzEgc3ltYm9sID1cbiAgZnN0IHN5bWJvbC5TeW1ib2xfdGFibGUuYWdlbnRfc2VwX2NvbW1hXG5cbmxldCBnZXRfYWdlbnRfc2VwX3BsdXNfc3ltYm9sXzEgc3ltYm9sID0gZnN0IHN5bWJvbC5TeW1ib2xfdGFibGUuYWdlbnRfc2VwX3BsdXNcbmxldCBnZXRfYWdlbnRfc2VwX2RvdF9zeW1ib2xfMSBzeW1ib2wgPSBmc3Qgc3ltYm9sLlN5bWJvbF90YWJsZS5hZ2VudF9zZXBfZG90XG5sZXQgZ2V0X2J0eXBlX3NlcF9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmJ0eXBlX3NlcFxubGV0IGdldF9zaXRlX3NlcF9jb21tYV9zeW1ib2xfMSBzeW1ib2wgPSBmc3Qgc3ltYm9sLlN5bWJvbF90YWJsZS5zaXRlX3NlcFxubGV0IGdldF9naG9zdF9hZ2VudF9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmdob3N0X2FnZW50XG5sZXQgZ2V0X2RvX3dlX3Nob3dfZ2hvc3RfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLnNob3dfZ2hvc3RcbmxldCBnZXRfdW5pX2Fycm93X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUudW5pX2Fycm93XG5sZXQgZ2V0X3Jldl9hcnJvd19zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLnJldl9hcnJvd1xubGV0IGdldF9iaV9hcnJvd19zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmJpX2Fycm93XG5sZXQgZ2V0X2JpX2Fycm93X25vX3BvbHlfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5iaV9hcnJvd19ub3BvbHlcbmxldCBnZXRfdW5pX2Fycm93X25vX3BvbHlfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS51bmlfYXJyb3dfbm9wb2x5XG5sZXQgZ2V0X3Jldl9hcnJvd19ub19wb2x5X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUucmV2X2Fycm93X25vcG9seVxuXG5sZXQgZ2V0X29wZW5faW50X2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5faW50X2ludGVydmFsX2luY2x1c2l2ZVxuXG5sZXQgZ2V0X29wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2ZVxuXG5sZXQgZ2V0X29wZW5faW50X2ludGVydmFsX2luZmluaXR5X3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHlcblxubGV0IGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2l2ZVxuXG5sZXQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlXG5cbmxldCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5X3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5XG5cbmxldCBnZXRfcGx1c19pbmZpbml0eV9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLnBsdXNfaW5maW5pdHlcbmxldCBnZXRfbWludXNfaW5maW5pdHlfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5taW51c19pbmZpbml0eVxuXG5sZXQgZ2V0X2ludF9pbnRlcnZhbF9zZXBhcmF0b3Jfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5pbnRfaW50ZXJ2YWxfc2VwYXJhdG9yXG5cbmxldCBnZXRfb3Blbl9jb3VudGVyX3N0YXRlXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2NvdW50ZXJfc3RhdGVcbmxldCBnZXRfb3Blbl9jb3VudGVyY2VxXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2NvdW50ZXJjZXFcbmxldCBnZXRfb3Blbl9jb3VudGVyY3Zhcl8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9jb3VudGVyY3ZhclxubGV0IGdldF9vcGVuX2NvdW50ZXJjZ3RlXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2NvdW50ZXJjZ3RlXG5sZXQgZ2V0X29wZW5fY291bnRlcmRlbHRhXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2NvdW50ZXJkZWx0YVxubGV0IGdldF9vcGVuX2NvdW50ZXJ2YWxfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5fY291bnRlcnZhbFxubGV0IGdldF9jbG9zZV9jb3VudGVyX3N0YXRlXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVyX3N0YXRlXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJjZXFfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2NvdW50ZXJjZXFcbmxldCBnZXRfY2xvc2VfY291bnRlcmN2YXJfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2NvdW50ZXJjdmFyXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJjZ3RlXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVyY2d0ZVxubGV0IGdldF9jbG9zZV9jb3VudGVyZGVsdGFfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2NvdW50ZXJkZWx0YVxubGV0IGdldF9jbG9zZV9jb3VudGVydmFsXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVydmFsXG5sZXQgZ2V0X2NvdW50ZXJjZXFfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jb3VudGVyY2VxX3N5bWJvbFxubGV0IGdldF9jb3VudGVyY3Zhcl9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNvdW50ZXJjdmFyX3N5bWJvbFxubGV0IGdldF9jb3VudGVyY2d0ZV9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNvdW50ZXJjZ3RlX3N5bWJvbFxuXG5sZXQgZ2V0X2NvdW50ZXJkZWx0YXBsdXNfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5jb3VudGVyZGVsdGFwbHVzX3N5bWJvbFxuXG5sZXQgZ2V0X2NvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuY291bnRlcmRlbHRhbWludXNfc3ltYm9sXG5cbmxldCBnZXRfY291bnRlcnZhbF9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNvdW50ZXJ2YWxfc3ltYm9sXG5cbigqSW5mbHVlbmNlKilcbmxldCBnZXRfaW1fZm9ybWF0XzEgaW5mbHVlbmNlID0gaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmltX2Zvcm1hdFxubGV0IGdldF9pbV9maWxlXzEgaW5mbHVlbmNlID0gaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmltX2ZpbGVcblxubGV0IGdldF9pbV9kaXJlY3RvcnlfMSBpbmZsdWVuY2UgPVxuICBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW1fZGlyZWN0b3J5XG5cbmxldCBnZXRfcnVsZV9zaGFwZV8xIGluZmx1ZW5jZSA9IGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ydWxlX3NoYXBlXG5sZXQgZ2V0X3J1bGVfY29sb3JfMSBpbmZsdWVuY2UgPSBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucnVsZV9jb2xvclxuXG5sZXQgZ2V0X3ZhcmlhYmxlX3NoYXBlXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZhcmlhYmxlX3NoYXBlXG5cbmxldCBnZXRfdmFyaWFibGVfY29sb3JfMSBpbmZsdWVuY2UgPVxuICBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmFyaWFibGVfY29sb3JcblxubGV0IGdldF93YWtlX3VwX2NvbG9yXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLndha2VfdXBfY29sb3JcblxubGV0IGdldF9pbmhpYml0aW9uX2NvbG9yXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluaGliaXRpb25fY29sb3JcblxubGV0IGdldF93YWtlX3VwX2Fycm93XzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLndha2VfdXBfYXJyb3dcblxubGV0IGdldF9pbmhpYml0aW9uX2Fycm93XzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluaGliaXRpb25fYXJyb3dcblxubGV0IGdldF9wcm9tcHRfZnVsbF92YXJfZGVmXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByb21wdF9mdWxsX3Zhcl9kZWZcblxubGV0IGdldF9wcm9tcHRfZnVsbF9ydWxlX2RlZl8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9tcHRfZnVsbF9ydWxlX2RlZlxuXG5sZXQgZ2V0X21ha2VfbGFiZWxzX2NvbXBhdGlibGVfMSBpbmZsdWVuY2UgPVxuICBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFrZV9sYWJlbHNfY29tcGF0aWJsZVxuXG5sZXQgZ2V0X3B1cmVfY29udGFjdF8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHVyZV9jb250YWN0XG5sZXQgZ2V0X2NtX2Zvcm1hdF8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY21fZm9ybWF0XG5sZXQgZ2V0X2NtX2ZpbGVfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNtX2ZpbGVcbmxldCBnZXRfY21fZGlyZWN0b3J5XzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jbV9kaXJlY3RvcnlcbmxldCBnZXRfYmluZGluZ19zaXRlX3NoYXBlXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iaW5kaW5nX3NpdGVfc2hhcGVcbmxldCBnZXRfYmluZGluZ19zaXRlX2NvbG9yXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iaW5kaW5nX3NpdGVfY29sb3JcblxubGV0IGdldF9pbnRlcm5hbF9zaXRlX3NoYXBlXzEgY20gPVxuICBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbnRlcm5hbF9zaXRlX3NoYXBlXG5cbmxldCBnZXRfaW50ZXJuYWxfc2l0ZV9jb2xvcl8xIGNtID1cbiAgY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW50ZXJuYWxfc2l0ZV9jb2xvclxuXG5sZXQgZ2V0X2NvdW50ZXJfc2l0ZV9zaGFwZV8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcl9zaXRlX3NoYXBlXG5sZXQgZ2V0X2NvdW50ZXJfc2l0ZV9jb2xvcl8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcl9zaXRlX2NvbG9yXG5sZXQgZ2V0X2FnZW50X3NoYXBlX2FycmF5XzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9zaGFwZV9hcnJheVxubGV0IGdldF9hZ2VudF9jb2xvcl9hcnJheV8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfY29sb3JfYXJyYXlcbmxldCBnZXRfYWdlbnRfc2hhcGVfZGVmXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9zaGFwZV9kZWZcbmxldCBnZXRfYWdlbnRfY29sb3JfZGVmXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9jb2xvcl9kZWZcbmxldCBnZXRfbGlua19jb2xvcl8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubGlua19jb2xvclxubGV0IGdldF9pbmZsdWVuY2VfY29sb3JfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluZmx1ZW5jZV9jb2xvclxubGV0IGdldF9pbmZsdWVuY2VfYXJyb3dfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluZmx1ZW5jZV9hcnJvd1xuXG4oKmFkZCByZWFjaGFiaWxpdHkqKVxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdF8xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdFxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvbl8xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvblxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpY18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpY1xuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW5hbWljXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZGlmZl8xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmZcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bF8xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3dsXG5cbmxldCBnZXRfc21hc2hfcmVsYXRpb25zXzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc21hc2hfcmVsYXRpb25zXG5cbmxldCBnZXRfaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbl8xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb25cblxubGV0IGdldF9oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzXG5cbmxldCBnZXRfcG9zdF9wcm9jZXNzaW5nXzEgciA9XG4gIG1hdGNoIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX25hdHVyYWxfbGFuZ3VhZ2Ugd2l0aFxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLlJhdyAtPiBmYWxzZVxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthcHBhIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTmF0dXJhbF9sYW5ndWFnZSAtPlxuICAgIHRydWVcblxubGV0IGdldF9iYWNrZW5kX21vZGVfMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51c2VfbmF0dXJhbF9sYW5ndWFnZVxuXG5sZXQgZ2V0X2xvY2FsX3RyYWNlX2Zvcm1hdF8xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmZvcm1hdF9mb3JfbG9jYWxfdHJhY2VzXG5cbmxldCBnZXRfY29tcHV0ZV9sb2NhbF90cmFjZXNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX2xvY2FsX3RyYWNlc1xuXG5sZXQgZ2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9uc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9uc1xuXG5sZXQgc2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9uc18xIHIgYiA9XG4gIHsgciB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyA9IGIgfVxuXG5sZXQgc2V0X3VzZV9tYWNyb3RyYW5zaXRpb25faW5fbG9jYWxfdHJhY2VzXzEgciBiID1cbiAgeyByIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzID0gYiB9XG5cbmxldCBnZXRfaWdub3JlX3RyaXZpYWxfbG9zYW5nZXNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pZ25vcmVfdHJpdmlhbF9sb3Nhbmdlc1xuXG5sZXQgZ2V0X3Nob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzXG5cbmxldCBnZXRfdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzXG5cbmxldCBnZXRfYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzXG5cbmxldCBnZXRfYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzXG5cbmxldCBnZXRfbG9jYWxfdHJhY2VfcHJlZml4XzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudHJhY2VfcHJlZml4XG5sZXQgZ2V0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeV8xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlX2RpcmVjdG9yeVxubGV0IGdldF92aWV3X2FuYWx5c2lzXzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmlld3NcblxubGV0IGdldF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNpdGVfYWNyb3NzX2JvbmRzXG5cbmxldCBnZXRfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXNfMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbGxlbF9ib25kc1xubGV0IGdldF9keW5hbWljX2NvbnRhY3RfbWFwXzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHluYW1pY19jb250YWN0X21hcFxubGV0IGdldF9jb3VudGVyc19hbmFseXNpc18xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJzXG5sZXQgZ2V0X2NvdW50ZXJzX2RvbWFpbl8xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJfZG9tYWluXG5cbmxldCBnZXRfY29tcHV0ZV9zeW1tZXRyaWVzXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fc3ltbWV0cmllc19hbmFseXNpc1xuXG5sZXQgZ2V0X3JhdGVfY29udmVudGlvbl8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJhdGVfY29udmVudGlvblxuXG5sZXQgZ2V0X2VtcHR5X2hhc2h0Ymxfc2l6ZV8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmVtcHR5X2hhc2h0Ymxfc2l6ZVxuXG5sZXQgZ2V0X3N5bWJvbHNfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zeW1ib2xzXG5sZXQgZ2V0X2ZpbGVfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5maWxlXG5cbmxldCBnZXRfaW5mbHVlbmNlX21hcF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluZmx1ZW5jZV9tYXBfb3V0cHV0XG5cbmxldCBnZXRfY29udGFjdF9tYXBfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb250YWN0X21hcF9vdXRwdXRcblxuKCphZGQgcmVhY2hhYmlsaXR5KilcbmxldCBnZXRfcmVhY2hhYmlsaXR5X21hcF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0XG5cbmxldCBnZXRfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc1xuXG5sZXQgZ2V0X3Vuc2FmZV8xIG1hcnNoYWxpc2FibGUgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVuc2FmZVxubGV0IGdldF90cmFjZV8xIG1hcnNoYWxpc2FibGUgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlXG5cbmxldCBnZXRfZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjdXJfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX2Vycm9yX2FzX3Nvb25fYXNfdGhleV9vY2N1clxuXG5sZXQgZ2V0X3ByZWZpeF8xIG1hcnNoYWxpc2FibGUgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByZWZpeFxuXG5sZXQgZ2V0X2NhbGxfc3RhY2tfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jYWxsX3N0YWNrXG5cbmxldCBnZXRfbGlua19tb2RlXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubGlua19tb2RlXG5cbmxldCBnZXRfa2FzYV9zdGF0ZV8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmthc2Ffc3RhdGVcblxubGV0IGdldF9kb19jb250YWN0X21hcF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX2NvbnRhY3RfbWFwXG5cbmxldCBnZXRfc3ludGF4X3ZlcnNpb25fMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zeW50YXhfdmVyc2lvblxuXG5sZXQgZ2V0X2RvX3NjY18xIG1hcnNoYWxpc2FibGUgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3NjY1xuXG5sZXQgZ2V0X2RvX2luZmx1ZW5jZV9tYXBfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19pbmZsdWVuY2VfbWFwXG5cbmxldCBnZXRfZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb25fMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19PREVfZmxvd19vZl9pbmZvcm1hdGlvblxuXG5sZXQgZ2V0X2RvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdGlvbl8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdGlvblxuXG5sZXQgZ2V0X2RvX3NpdGVfZGVwZW5kZW5jaWVzXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fc2l0ZV9kZXBlbmRlbmNpZXNcblxubGV0IGdldF9kdW1wX3NpdGVfZGVwZW5kZW5jaWVzXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9zaXRlX2RlcGVuZGVuY2llc1xuXG4oKnJlYWNoYWJpbGl0eSBkaWZmZXJlbnQgb3V0cHV0KilcbmxldCBnZXRfZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzXG5cbigqKilcbmxldCBnZXRfaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWxcblxubGV0IGdldF9jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsXG5cbmxldCBnZXRfc2NjX2FjY3VyYWN5X2xldmVsXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2NjX2FjY3VyYWN5X2xldmVsXG5cbmxldCBnZXRfdmlld19hY2N1cmFjeV9sZXZlbF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZpZXdfYWNjdXJhY3lfbGV2ZWxcblxubGV0IGdldF9sYXVuY2hpbmdfZGF0ZV8xIG1hcnNoYWxpc2FibGUgPVxuICBsZXQgdCA9IG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubGF1bmNoaW5nX2RhdGUgaW5cbiAgbGV0IGdtdCA9IG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudGltZV9zaGlmdCBpblxuICBQcmludGYuc3ByaW50ZiBcIkFuYWx5c2lzIGxhdW5jaGVkIGF0ICUwNGkvJTAyaS8lMDJpICUwMmk6JTAyaTolMDJpIChHTVQlK2kpXCJcbiAgICAodC5Vbml4LnRtX3llYXIgKyAxOTAwKSAodC5Vbml4LnRtX21vbiArIDEpIHQuVW5peC50bV9tZGF5IHQuVW5peC50bV9ob3VyXG4gICAgdC5Vbml4LnRtX21pbiB0LlVuaXgudG1fc2VjIGdtdFxuXG5sZXQgZ2V0X3Nob3J0X3ZlcnNpb25fMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52ZXJzaW9uXG5cbmxldCBnZXRfZnVsbF92ZXJzaW9uXzEgbWFyc2hhbGlzYWJsZSA9XG4gIFByaW50Zi5zcHJpbnRmIFwiJXMgKHdpdGglcyBUayBpbnRlcmZhY2UpXCJcbiAgICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZlcnNpb25cbiAgICAoaWYgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50a19pbnRlcmZhY2UgdGhlblxuICAgICAgIFwiXCJcbiAgICAgZWxzZVxuICAgICAgIFwib3V0XCIpXG5cbmxldCBnZXRfbGF1bmNoZWRfd2hlcmVfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ob3N0bmFtZVxuXG5sZXQgZ2V0X2NvbW1hbmRfbGluZV8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbW1hbmRfbGluZVxuXG5sZXQgZ2V0X21hcnNoYWxpc2FibGUgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVyc1xuXG5sZXQgZ2V0X2xvZ2dlciBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubG9nZ2VyXG5sZXQgZ2V0X2xvZ2dlcl9lcnIgcGFyYW1ldGVyID0gcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlcl9lcnJcblxubGV0IGdldF9sb2dnZXJfYmFja2Rvb3IgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlcl9iYWNrZG9vclxuXG4oKmxldCBnZXRfZm9ybWF0dGVyIHBhcmFtZXRlciA9IHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5mb3JtYXR0ZXJcbiAgbGV0IHNldF9mb3JtYXR0ZXIgcGFyYW1ldGVyIGxvZ2dlciA9IHtwYXJhbWV0ZXIgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5mb3JtYXR0ZXIgPSBsb2dnZXJ9KilcblxubGV0IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGYgPSBjb21wb3NlIGYgZ2V0X21hcnNoYWxpc2FibGVcbmxldCBnZXRfY29tbWFuZF9saW5lID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2NvbW1hbmRfbGluZV8xXG5sZXQgZ2V0X3Nob3J0X3ZlcnNpb24gPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfc2hvcnRfdmVyc2lvbl8xXG5sZXQgZ2V0X2xhdW5jaGVkX3doZXJlID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2xhdW5jaGVkX3doZXJlXzFcbmxldCBnZXRfZnVsbF92ZXJzaW9uID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2Z1bGxfdmVyc2lvbl8xXG5sZXQgZ2V0X2xhdW5jaGluZ19kYXRlID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2xhdW5jaGluZ19kYXRlXzFcblxubGV0IGdldF9sYXVuY2hlZF93aGVuX2FuZF93aGVyZSBwYXJhbWV0ZXJzID1cbiAgUHJpbnRmLnNwcmludGYgXCIlcyBvbiAlc1wiXG4gICAgKGdldF9sYXVuY2hpbmdfZGF0ZSBwYXJhbWV0ZXJzKVxuICAgIChnZXRfbGF1bmNoZWRfd2hlcmUgcGFyYW1ldGVycylcblxubGV0IGdldF9kb19jb250YWN0X21hcCA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kb19jb250YWN0X21hcF8xXG5sZXQgZ2V0X3N5bnRheF92ZXJzaW9uID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3N5bnRheF92ZXJzaW9uXzFcbmxldCBnZXRfZG9fc2NjID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2RvX3NjY18xXG5sZXQgZ2V0X2RvX2luZmx1ZW5jZV9tYXAgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZG9faW5mbHVlbmNlX21hcF8xXG5cbmxldCBnZXRfZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb24gPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb25fMVxuXG5sZXQgZ2V0X2RvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdGlvbiA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb25fMVxuXG5sZXQgZ2V0X2RvX3NpdGVfZGVwZW5kZW5jaWVzID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2RvX3NpdGVfZGVwZW5kZW5jaWVzXzFcblxubGV0IGdldF9kdW1wX3NpdGVfZGVwZW5kZW5jaWVzID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2R1bXBfc2l0ZV9kZXBlbmRlbmNpZXNfMVxuKCpyZWFjaGFiaWxpdHkgYW5hbHlzaXMgaW4gZGlmZmVyZW50IG91dHB1dCopXG5cbigqKilcbmxldCBnZXRfc3ltYm9scyA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9zeW1ib2xzXzFcbmxldCBnZXRfZmlsZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9maWxlXzFcbmxldCBnZXRfY29tcHV0ZV9zeW1tZXRyaWVzID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2NvbXB1dGVfc3ltbWV0cmllc18xXG5sZXQgZ2V0X3JhdGVfY29udmVudGlvbiA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9yYXRlX2NvbnZlbnRpb25fMVxubGV0IGdldF9pbmZsdWVuY2VfbWFwID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2luZmx1ZW5jZV9tYXBfMVxubGV0IGdldF9jb250YWN0X21hcCA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9jb250YWN0X21hcF8xXG5cbigqYWRkIHJlYWNoYWJpbGl0eSopXG5sZXQgZ2V0X3JlYWNoYWJpbGl0eV9tYXAgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfcmVhY2hhYmlsaXR5X21hcF8xXG5cbmxldCBnZXRfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnMgPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNfMVxuXG5sZXQgZ2V0X3Vuc2FmZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF91bnNhZmVfMVxubGV0IGdldF90cmFjZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF90cmFjZV8xXG5cbmxldCBnZXRfZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjdXIgPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjdXJfMVxuXG5sZXQgZ2V0X3ByZWZpeCA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9wcmVmaXhfMVxubGV0IGdldF9jYWxsX3N0YWNrID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2NhbGxfc3RhY2tfMVxubGV0IGdldF9saW5rX21vZGUgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfbGlua19tb2RlXzFcblxubGV0IGdldF9jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbF8xXG5cbmxldCBnZXRfc2NjX2FjY3VyYWN5X2xldmVsID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3NjY19hY2N1cmFjeV9sZXZlbF8xXG5cbmxldCBnZXRfaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsXzFcblxubGV0IGdldF92aWV3X2FjY3VyYWN5X2xldmVsID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3ZpZXdfYWNjdXJhY3lfbGV2ZWxfMVxuXG5sZXQgZ2V0X2VtcHR5X2hhc2h0Ymxfc2l6ZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9lbXB0eV9oYXNodGJsX3NpemVfMVxubGV0IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGYgPSBjb21wb3NlIGYgZ2V0X2luZmx1ZW5jZV9tYXBcbmxldCB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZiA9IGNvbXBvc2UgZiBnZXRfY29udGFjdF9tYXBcbmxldCB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBmID0gY29tcG9zZSBmIGdldF9zeW1ib2xzXG5cbigqYWRkIHJlYWNoYWJpbGl0eSopXG5sZXQgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZiA9IGNvbXBvc2UgZiBnZXRfcmVhY2hhYmlsaXR5X21hcFxuXG5sZXQgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkIGYgPVxuICBjb21wb3NlIGYgZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzXG5cbigqc3ltYm9scyopXG5sZXQgZ2V0X2JvdW5kX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9ib3VuZF9zeW1ib2xfMVxubGV0IGdldF9vcGVuX2JpbmRpbmdfc3RhdGUgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9iaW5kaW5nX3N0YXRlXzFcblxubGV0IGdldF9jbG9zZV9iaW5kaW5nX3N0YXRlID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2JpbmRpbmdfc3RhdGVfMVxuXG5sZXQgZ2V0X21pc3NpbmdfYmluZGluZ19zdGF0ZSA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9taXNzaW5nX2JpbmRpbmdfc3RhdGVfMVxuXG5sZXQgZ2V0X2ludGVybmFsX3N0YXRlX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9pbnRlcm5hbF9zdGF0ZV9zeW1ib2xfMVxuXG5sZXQgZ2V0X29wZW5faW50ZXJuYWxfc3RhdGUgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9pbnRlcm5hbF9zdGF0ZV8xXG5cbmxldCBnZXRfY2xvc2VfaW50ZXJuYWxfc3RhdGUgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfaW50ZXJuYWxfc3RhdGVfMVxuXG5sZXQgZ2V0X2xpbmtfdG9fYW55ID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2xpbmtfdG9fYW55XzFcbmxldCBnZXRfbGlua190b19zb21lID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2xpbmtfdG9fc29tZV8xXG5sZXQgZ2V0X2ZyZWVfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2ZyZWVfMVxubGV0IGdldF9hdF9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYXRfc3ltYm9sXzFcbmxldCBnZXRfYWdlbnRfb3Blbl9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYWdlbnRfb3Blbl9zeW1ib2xfMVxubGV0IGdldF9hZ2VudF9jbG9zZV9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYWdlbnRfY2xvc2Vfc3ltYm9sXzFcblxubGV0IGdldF9hZ2VudF9zZXBfY29tbWFfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2FnZW50X3NlcF9jb21tYV9zeW1ib2xfMVxuXG5sZXQgZ2V0X2FnZW50X3NlcF9wbHVzX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9hZ2VudF9zZXBfcGx1c19zeW1ib2xfMVxuXG5sZXQgZ2V0X2FnZW50X3NlcF9kb3Rfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2FnZW50X3NlcF9kb3Rfc3ltYm9sXzFcblxubGV0IGdldF9idHlwZV9zZXBfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2J0eXBlX3NlcF9zeW1ib2xfMVxuXG5sZXQgZ2V0X3NpdGVfc2VwX2NvbW1hX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9zaXRlX3NlcF9jb21tYV9zeW1ib2xfMVxuXG5sZXQgZ2V0X2dob3N0X2FnZW50X3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9naG9zdF9hZ2VudF9zeW1ib2xfMVxubGV0IGdldF9kb193ZV9zaG93X2dob3N0ID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2RvX3dlX3Nob3dfZ2hvc3RfMVxubGV0IGdldF91bmlfYXJyb3dfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X3VuaV9hcnJvd19zeW1ib2xfMVxubGV0IGdldF9yZXZfYXJyb3dfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X3Jldl9hcnJvd19zeW1ib2xfMVxubGV0IGdldF9iaV9hcnJvd19zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYmlfYXJyb3dfc3ltYm9sXzFcblxubGV0IGdldF9iaV9hcnJvd19ub19wb2x5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9iaV9hcnJvd19ub19wb2x5X3N5bWJvbF8xXG5cbmxldCBnZXRfcmV2X2Fycm93X25vX3BvbHlfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X3Jldl9hcnJvd19ub19wb2x5X3N5bWJvbF8xXG5cbmxldCBnZXRfdW5pX2Fycm93X25vX3BvbHlfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X3VuaV9hcnJvd19ub19wb2x5X3N5bWJvbF8xXG5cbmxldCBnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sXzFcblxubGV0IGdldF9vcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2xfMVxuXG5sZXQgZ2V0X29wZW5faW50X2ludGVydmFsX2luZmluaXR5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eV9zeW1ib2xfMVxuXG5sZXQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sXzFcblxubGV0IGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbF8xXG5cbmxldCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5maW5pdHlfc3ltYm9sXzFcblxubGV0IGdldF9wbHVzX2luZmluaXR5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9wbHVzX2luZmluaXR5X3N5bWJvbF8xXG5cbmxldCBnZXRfbWludXNfaW5maW5pdHlfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X21pbnVzX2luZmluaXR5X3N5bWJvbF8xXG5cbmxldCBnZXRfaW50X2ludGVydmFsX3NlcGFyYXRvcl9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfaW50X2ludGVydmFsX3NlcGFyYXRvcl9zeW1ib2xfMVxuXG5sZXQgZ2V0X29wZW5fY291bnRlcl9zdGF0ZSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2NvdW50ZXJfc3RhdGVfMVxubGV0IGdldF9vcGVuX2NvdW50ZXJjZXEgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVyY2VxXzFcbmxldCBnZXRfb3Blbl9jb3VudGVyY2d0ZSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2NvdW50ZXJjZ3RlXzFcbmxldCBnZXRfb3Blbl9jb3VudGVyY3ZhciA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2NvdW50ZXJjdmFyXzFcbmxldCBnZXRfb3Blbl9jb3VudGVyZGVsdGEgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVyZGVsdGFfMVxubGV0IGdldF9vcGVuX2NvdW50ZXJ2YWwgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVydmFsXzFcblxubGV0IGdldF9jbG9zZV9jb3VudGVyX3N0YXRlID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2NvdW50ZXJfc3RhdGVfMVxuXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJjZXEgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfY291bnRlcmNlcV8xXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJjZ3RlID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2NvdW50ZXJjZ3RlXzFcbmxldCBnZXRfY2xvc2VfY291bnRlcmN2YXIgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfY291bnRlcmN2YXJfMVxubGV0IGdldF9jbG9zZV9jb3VudGVyZGVsdGEgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfY291bnRlcmRlbHRhXzFcbmxldCBnZXRfY2xvc2VfY291bnRlcnZhbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9jb3VudGVydmFsXzFcbmxldCBnZXRfY291bnRlcmNlcV9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY291bnRlcmNlcV9zeW1ib2xfMVxubGV0IGdldF9jb3VudGVyY2d0ZV9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY291bnRlcmNndGVfc3ltYm9sXzFcbmxldCBnZXRfY291bnRlcmN2YXJfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2NvdW50ZXJjdmFyX3N5bWJvbF8xXG5cbmxldCBnZXRfY291bnRlcmRlbHRhcGx1c19zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY291bnRlcmRlbHRhcGx1c19zeW1ib2xfMVxuXG5sZXQgZ2V0X2NvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jb3VudGVyZGVsdGFtaW51c19zeW1ib2xfMVxuXG5sZXQgZ2V0X2NvdW50ZXJ2YWxfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2NvdW50ZXJ2YWxfc3ltYm9sXzFcbmxldCBnZXRfaW1fZm9ybWF0ID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X2ltX2Zvcm1hdF8xXG5sZXQgZ2V0X2ltX2ZpbGUgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfaW1fZmlsZV8xXG5sZXQgZ2V0X2ltX2RpcmVjdG9yeSA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9pbV9kaXJlY3RvcnlfMVxubGV0IGdldF9ydWxlX3NoYXBlID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3J1bGVfc2hhcGVfMVxubGV0IGdldF9ydWxlX2NvbG9yID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3J1bGVfY29sb3JfMVxubGV0IGdldF92YXJpYWJsZV9zaGFwZSA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF92YXJpYWJsZV9zaGFwZV8xXG5sZXQgZ2V0X3ZhcmlhYmxlX2NvbG9yID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3ZhcmlhYmxlX2NvbG9yXzFcbmxldCBnZXRfd2FrZV91cF9jb2xvciA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF93YWtlX3VwX2NvbG9yXzFcblxubGV0IGdldF9pbmhpYml0aW9uX2NvbG9yID1cbiAgdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X2luaGliaXRpb25fY29sb3JfMVxuXG5sZXQgZ2V0X3dha2VfdXBfYXJyb3cgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfd2FrZV91cF9hcnJvd18xXG5cbmxldCBnZXRfaW5oaWJpdGlvbl9hcnJvdyA9XG4gIHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9pbmhpYml0aW9uX2Fycm93XzFcblxubGV0IGdldF9wcm9tcHRfZnVsbF92YXJfZGVmID1cbiAgdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3Byb21wdF9mdWxsX3Zhcl9kZWZfMVxuXG5sZXQgZ2V0X3Byb21wdF9mdWxsX3J1bGVfZGVmID1cbiAgdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3Byb21wdF9mdWxsX3J1bGVfZGVmXzFcblxubGV0IGdldF9tYWtlX2xhYmVsc19jb21wYXRpYmxlX3dpdGhfZG90ID1cbiAgdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X21ha2VfbGFiZWxzX2NvbXBhdGlibGVfMVxuXG5sZXQgZ2V0X3B1cmVfY29udGFjdCA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfcHVyZV9jb250YWN0XzFcbmxldCBnZXRfY21fZm9ybWF0ID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9jbV9mb3JtYXRfMVxubGV0IGdldF9jbV9maWxlID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9jbV9maWxlXzFcbmxldCBnZXRfY21fZGlyZWN0b3J5ID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9jbV9kaXJlY3RvcnlfMVxuXG5sZXQgZ2V0X2JpbmRpbmdfc2l0ZV9zaGFwZSA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfYmluZGluZ19zaXRlX3NoYXBlXzFcblxubGV0IGdldF9iaW5kaW5nX3NpdGVfY29sb3IgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2JpbmRpbmdfc2l0ZV9jb2xvcl8xXG5cbmxldCBnZXRfaW50ZXJuYWxfc2l0ZV9zaGFwZSA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfaW50ZXJuYWxfc2l0ZV9zaGFwZV8xXG5cbmxldCBnZXRfaW50ZXJuYWxfc2l0ZV9jb2xvciA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfaW50ZXJuYWxfc2l0ZV9jb2xvcl8xXG5cbmxldCBnZXRfY291bnRlcl9zaXRlX3NoYXBlID1cbiAgdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9jb3VudGVyX3NpdGVfc2hhcGVfMVxuXG5sZXQgZ2V0X2NvdW50ZXJfc2l0ZV9jb2xvciA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfY291bnRlcl9zaXRlX2NvbG9yXzFcblxubGV0IGdldF9hZ2VudF9zaGFwZV9hcnJheSA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfYWdlbnRfc2hhcGVfYXJyYXlfMVxuXG5sZXQgZ2V0X2FnZW50X2NvbG9yX2FycmF5ID1cbiAgdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9hZ2VudF9jb2xvcl9hcnJheV8xXG5cbmxldCBnZXRfYWdlbnRfc2hhcGVfZGVmID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9hZ2VudF9zaGFwZV9kZWZfMVxubGV0IGdldF9hZ2VudF9jb2xvcl9kZWYgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2FnZW50X2NvbG9yX2RlZl8xXG5sZXQgZ2V0X2xpbmtfY29sb3IgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2xpbmtfY29sb3JfMVxubGV0IGdldF9pbmZsdWVuY2VfY29sb3IgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2luZmx1ZW5jZV9jb2xvcl8xXG5sZXQgZ2V0X2luZmx1ZW5jZV9hcnJvdyA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfaW5mbHVlbmNlX2Fycm93XzFcblxuKCphZGQgcmVhY2hhYmxpdHkqKVxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdCA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19yZXN1bHRfMVxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvbiA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19pdGVyYXRpb25fMVxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpYyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWNfMVxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluYW1pY18xXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZGlmZiA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19kaWZmXzFcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bCA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bF8xXG5cbmxldCBnZXRfcG9zdF9wcm9jZXNzaW5nID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X3Bvc3RfcHJvY2Vzc2luZ18xXG5cbmxldCBnZXRfYmFja2VuZF9tb2RlID0gdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2JhY2tlbmRfbW9kZV8xXG5cbmxldCBnZXRfaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbiA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkXG4gICAgZ2V0X2hpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb25fMVxuXG5sZXQgZ2V0X2hpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGRcbiAgICBnZXRfaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlbF9mcm9tX2RlYWRfcnVsZXNfMVxuXG5sZXQgZ2V0X3NtYXNoX3JlbGF0aW9ucyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9zbWFzaF9yZWxhdGlvbnNfMVxuXG5sZXQgZ2V0X2xvY2FsX3RyYWNlX2Zvcm1hdCA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9sb2NhbF90cmFjZV9mb3JtYXRfMVxuXG5sZXQgZ2V0X2NvbXB1dGVfbG9jYWxfdHJhY2VzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2NvbXB1dGVfbG9jYWxfdHJhY2VzXzFcblxubGV0IGdldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zXzFcblxubGV0IHNldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNfMiByIGIgPVxuICB7XG4gICAgciB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVhY2hhYmlsaXR5X21hcF9vdXRwdXQgPVxuICAgICAgc2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9uc18xXG4gICAgICAgIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVhY2hhYmlsaXR5X21hcF9vdXRwdXQgYjtcbiAgfVxuXG5sZXQgc2V0X3VzZV9tYWNyb3RyYW5zaXRpb25faW5fbG9jYWxfdHJhY2VzXzIgciBiID1cbiAge1xuICAgIHIgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0ID1cbiAgICAgIHNldF91c2VfbWFjcm90cmFuc2l0aW9uX2luX2xvY2FsX3RyYWNlc18xXG4gICAgICAgIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVhY2hhYmlsaXR5X21hcF9vdXRwdXQgYjtcbiAgfVxuXG5sZXQgc2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyByIGIgPVxuICB7XG4gICAgciB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzID1cbiAgICAgIHNldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNfMlxuICAgICAgICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVycyBiO1xuICB9XG5cbmxldCBzZXRfdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzIHIgYiA9XG4gIHtcbiAgICByIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnMgPVxuICAgICAgc2V0X3VzZV9tYWNyb3RyYW5zaXRpb25faW5fbG9jYWxfdHJhY2VzXzJcbiAgICAgICAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnMgYjtcbiAgfVxuXG5sZXQgZ2V0X3Nob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3RyYWNlc18xXG5cbmxldCBnZXRfdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlc18xXG5cbmxldCBnZXRfaWdub3JlX2xvY2FsX2xvc2FuZ2VzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2lnbm9yZV90cml2aWFsX2xvc2FuZ2VzXzFcblxubGV0IGdldF9hZGRfc2luZ3VsYXJfbWFjcm9zdGF0ZXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzXzFcblxubGV0IGdldF9hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzXzFcblxubGV0IGdldF9sb2NhbF90cmFjZV9wcmVmaXggPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfbG9jYWxfdHJhY2VfcHJlZml4XzFcblxubGV0IGdldF9sb2NhbF90cmFjZV9kaXJlY3RvcnkgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5XzFcblxubGV0IGdldF92aWV3X2FuYWx5c2lzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkIGdldF92aWV3X2FuYWx5c2lzXzFcblxubGV0IGdldF9wYXJhbGxlbF9ib25kc19hbmFseXNpcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZFxuICAgIGdldF9wYXJhbGxlbF9ib25kc19hbmFseXNpc18xXG5cbmxldCBnZXRfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNfZmllbGRcbiAgICBnZXRfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXNfMVxuXG5sZXQgZ2V0X2R5bmFtaWNfY29udGFjdF9tYXAgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNfZmllbGQgZ2V0X2R5bmFtaWNfY29udGFjdF9tYXBfMVxuXG5sZXQgZ2V0X2NvdW50ZXJzX2FuYWx5c2lzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkIGdldF9jb3VudGVyc19hbmFseXNpc18xXG5cbmxldCBnZXRfY291bnRlcnNfZG9tYWluID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkIGdldF9jb3VudGVyc19kb21haW5fMVxuXG5sZXQgZ2V0X2RvX3JlYWNoYWJpbGl0eV9hbmFseXNpcyBwID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2RvX3JlYWNoYWJpbGl0eV9hbmFseXNpc18xIHBcbiAgfHwgZ2V0X2NvbXB1dGVfbG9jYWxfdHJhY2VzIHBcblxubGV0IHNldF9wcmVmaXhfMSBtYXJzaGFsaXNhYmxlIHByZWZpeCA9XG4gIHsgbWFyc2hhbGlzYWJsZSB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByZWZpeCB9XG5cbmxldCBzZXRfY2FsbF9zdGFja18xIG1hcnNoYWxpc2FibGUgY2FsbF9zdGFjayA9XG4gIHsgbWFyc2hhbGlzYWJsZSB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNhbGxfc3RhY2sgfVxuXG5sZXQgc2V0X3RyYWNlXzEgbWFyc2hhbGlzYWJsZSBib29sID1cbiAgeyBtYXJzaGFsaXNhYmxlIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudHJhY2UgPSBib29sIH1cblxubGV0IHVwZ3JhZGVfdG9fbWFyc2hhbGlzYWJsZSBmIHBhcmFtZXRlcnMgcHJlZml4ID1cbiAge1xuICAgIHBhcmFtZXRlcnMgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVycyA9XG4gICAgICBmIChnZXRfbWFyc2hhbGlzYWJsZSBwYXJhbWV0ZXJzKSBwcmVmaXg7XG4gIH1cblxubGV0IHNldF9wcmVmaXggPSB1cGdyYWRlX3RvX21hcnNoYWxpc2FibGUgc2V0X3ByZWZpeF8xXG5sZXQgc2V0X2NhbGxfc3RhY2sgPSB1cGdyYWRlX3RvX21hcnNoYWxpc2FibGUgc2V0X2NhbGxfc3RhY2tfMVxubGV0IHNldF90cmFjZSA9IHVwZ3JhZGVfdG9fbWFyc2hhbGlzYWJsZSBzZXRfdHJhY2VfMVxuXG5sZXQgdXBkYXRlX3ByZWZpeCBwYXJhbWV0ZXJzIHN1ZmZpeCA9XG4gIHNldF9wcmVmaXggcGFyYW1ldGVycyAoZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzIF4gc3VmZml4KVxuXG5sZXQgdXBkYXRlX2NhbGxfc3RhY2sgcGFyYW1ldGVycyBib29sIG5hbWUgPVxuICBsZXQgcmVwX2Jvb2wgPSBnZXRfdHJhY2UgcGFyYW1ldGVycyB8fCBib29sIGluXG4gIG1hdGNoIG5hbWUsIGdldF90cmFjZSBwYXJhbWV0ZXJzID0gYm9vbCB3aXRoXG4gIHwgTm9uZSwgdHJ1ZSAtPiBwYXJhbWV0ZXJzXG4gIHwgTm9uZSwgZmFsc2UgLT4gc2V0X3RyYWNlIHBhcmFtZXRlcnMgcmVwX2Jvb2xcbiAgfCBTb21lIHgsIHRydWUgLT4gc2V0X2NhbGxfc3RhY2sgcGFyYW1ldGVycyAoeCA6OiBnZXRfY2FsbF9zdGFjayBwYXJhbWV0ZXJzKVxuICB8IFNvbWUgeCwgZmFsc2UgLT5cbiAgICBzZXRfY2FsbF9zdGFja1xuICAgICAgKHNldF90cmFjZSBwYXJhbWV0ZXJzIHJlcF9ib29sKVxuICAgICAgKHggOjogZ2V0X2NhbGxfc3RhY2sgcGFyYW1ldGVycylcblxubGV0IG9wZW5faW5mbHVlbmNlX21hcF9maWxlIHBhcmFtZXRlcnMgPVxuICBsZXQgY2hhbm5lbCA9XG4gICAgbWF0Y2hcbiAgICAgICggZ2V0X2ltX2ZpbGUgcGFyYW1ldGVycyxcbiAgICAgICAgZ2V0X2ltX2RpcmVjdG9yeSBwYXJhbWV0ZXJzLFxuICAgICAgICBleHRfZm9ybWF0IChnZXRfaW1fZm9ybWF0IHBhcmFtZXRlcnMpIClcbiAgICB3aXRoXG4gICAgfCBOb25lLCBfLCBfIC0+IHN0ZG91dFxuICAgIHwgU29tZSBhLCBOb25lLCBleHQgLT4gb3Blbl9vdXQgYSBleHRcbiAgICB8IFNvbWUgYSwgU29tZSBkLCBleHQgLT4gb3Blbl9vdXQgKGQgXiBhKSBleHRcbiAgaW5cbiAgbGV0IGZvcm1hdCA9XG4gICAgbWF0Y2ggZ2V0X2ltX2Zvcm1hdCBwYXJhbWV0ZXJzIHdpdGhcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRPVCAtPiBMb2dnZXJzLkRPVFxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSFRNTCAtPiBMb2dnZXJzLkhUTUxfR3JhcGhcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRJTSAtPiBMb2dnZXJzLk1hdHJpeFxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuR0VQSEkgLT4gTG9nZ2Vycy5HRVBISVxuICBpblxuICBsZXQgbG9nZ2VyID0gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwgfm1vZGU6Zm9ybWF0IGNoYW5uZWwgaW5cbiAgeyBwYXJhbWV0ZXJzIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubG9nZ2VyIH1cblxubGV0IG9wZW5fY29udGFjdF9tYXBfZmlsZSBwYXJhbWV0ZXJzID1cbiAgbGV0IGNoYW5uZWwgPVxuICAgIG1hdGNoXG4gICAgICAoIGdldF9jbV9maWxlIHBhcmFtZXRlcnMsXG4gICAgICAgIGdldF9jbV9kaXJlY3RvcnkgcGFyYW1ldGVycyxcbiAgICAgICAgZXh0X2Zvcm1hdCAoZ2V0X2NtX2Zvcm1hdCBwYXJhbWV0ZXJzKSApXG4gICAgd2l0aFxuICAgIHwgTm9uZSwgXywgXyAtPiBzdGRvdXRcbiAgICB8IFNvbWUgYSwgTm9uZSwgZXh0IC0+IG9wZW5fb3V0IGEgZXh0XG4gICAgfCBTb21lIGEsIFNvbWUgZCwgZXh0IC0+IG9wZW5fb3V0IChkIF4gYSkgZXh0XG4gIGluXG4gIHtcbiAgICBwYXJhbWV0ZXJzIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXIgPSBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fY2hhbm5lbCBjaGFubmVsO1xuICB9XG5cbmxldCBwZXJzaXN0ZW50X21vZGUgPSBmYWxzZVxuXG5sZXQgbGV4aWNhbF9hbmFseXNpc19vZl90ZXN0ZWRfb25seV9wYXR0ZXJuc19pc19yZXF1aXJlZF9ieV90aGVfaW5mbHVlbmNlX21hcFxuICAgIHBhcmFtZXRlciA9XG4gIChtYXRjaCBnZXRfaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCBwYXJhbWV0ZXIgd2l0aFxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkZ1bGwgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5NZWRpdW1cbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5IaWdoIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTG93IC0+XG4gICAgdHJ1ZVxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vbmUgLT4gZmFsc2UpXG4gICYmIGdldF9kb19pbmZsdWVuY2VfbWFwIHBhcmFtZXRlclxuXG5sZXQgbGV4aWNhbF9hbmFseXNpc19vZl90ZXN0ZWRfb25seV9wYXR0ZXJuc19pc19yZXF1aXJlZF9ieV90aGVfcGVyc2lzdGVudF9tb2RlXG4gICAgXyA9XG4gIHBlcnNpc3RlbnRfbW9kZVxuXG5sZXQgbGV4aWNhbF9hbmFseXNpc19vZl90ZXN0ZWRfb25seV9wYXR0ZXJuc19pc19yZXF1aXJlZF9ieV90aGVfY29udGFjdF9tYXBcbiAgICBwYXJhbWV0ZXIgPVxuICBnZXRfZG9fY29udGFjdF9tYXAgcGFyYW1ldGVyXG4gICYmXG4gIG1hdGNoIGdldF9jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCBwYXJhbWV0ZXIgd2l0aFxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk1lZGl1bSB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkxvdyAtPiB0cnVlXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTm9uZSB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkhpZ2hcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5GdWxsIC0+XG4gICAgZmFsc2VcblxubGV0IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnMgcGFyYW1ldGVyID1cbiAgbGV4aWNhbF9hbmFseXNpc19vZl90ZXN0ZWRfb25seV9wYXR0ZXJuc19pc19yZXF1aXJlZF9ieV90aGVfcGVyc2lzdGVudF9tb2RlXG4gICAgcGFyYW1ldGVyXG4gIHx8IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX2NvbnRhY3RfbWFwXG4gICAgICAgcGFyYW1ldGVyXG4gIHx8IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX2luZmx1ZW5jZV9tYXBcbiAgICAgICBwYXJhbWV0ZXJcblxubGV0IGdldF9jYWxsZWRfZnJvbSBwYXJhbWV0ZXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzXG4gICAgLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNhbGxlZF9mcm9tXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3NjY18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2Zfc2NjXG5cbmxldCBnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjY18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXNfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHNfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50c1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9ydWxlc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18xIGJhY2tkb29yc1xuICAgID1cbiAgYmFja2Rvb3JzXG4gICAgLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnXG4gICAgIC5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzXG4gICAgLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcblxubGV0IGdldF9iYWNrZG9vcl90aW1pbmdfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfdGltaW5nXG5cbmxldCBnZXRfYmFja2Rvb3JfZmlsZV8xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9maWxlXG5cbmxldCBnZXRfYmFja2Rvb3JfZGlyZWN0b3J5XzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX2RpcmVjdG9yeVxuXG5sZXQgZ2V0X2JhY2tkb29ycyBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjXzIgPSBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2NfMiA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2NfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHNfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHNfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXNfMiA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfMiA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXzFcbiAgICBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfdGltaW5nXzIgPSBjb21wb3NlIGdldF9iYWNrZG9vcl90aW1pbmdfMSBnZXRfYmFja2Rvb3JzXG5sZXQgZ2V0X2JhY2tkb29yX2ZpbGVfMiA9IGNvbXBvc2UgZ2V0X2JhY2tkb29yX2ZpbGVfMSBnZXRfYmFja2Rvb3JzXG5sZXQgZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8yID0gY29tcG9zZSBnZXRfYmFja2Rvb3JfZGlyZWN0b3J5XzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9jb25zdHJhaW50cyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9jb25zdHJhaW50c18yIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzXzIgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX3NjY18yIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjYyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2NfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXNfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlcyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc18yIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc18yIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXzJcbiAgICBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXzJcbiAgICBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX3RpbWluZyA9IGNvbXBvc2UgZ2V0X2JhY2tkb29yX3RpbWluZ18yIGdldF9tYXJzaGFsaXNhYmxlXG5sZXQgZ2V0X2JhY2tkb29yX2ZpbGUgPSBjb21wb3NlIGdldF9iYWNrZG9vcl9maWxlXzIgZ2V0X21hcnNoYWxpc2FibGVcbmxldCBnZXRfYmFja2Rvb3JfZGlyZWN0b3J5ID0gY29tcG9zZSBnZXRfYmFja2Rvb3JfZGlyZWN0b3J5XzIgZ2V0X21hcnNoYWxpc2FibGVcbmxldCBnZXRfcHJvZmlsZXIgcGFyYW1ldGVyID0gcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByb2ZpbGVyXG5cbmxldCBnZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlciBwYXJhbWV0ZXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tcHJlc3Npb25fc3RhdHVzXG5cbmxldCBnZXRfa2FzYV9zdGF0ZSA9IGNvbXBvc2UgZ2V0X2thc2Ffc3RhdGVfMSBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgc2V0X3ByaW50X2VmZmljaWVuY3kgcGFyYW1ldGVyIGJvb2wgPVxuICB7IHBhcmFtZXRlciB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByaW50X2VmZmljaWVuY3kgPSBib29sIH1cblxubGV0IGdldF9wcmludF9lZmZpY2llbmN5IHBhcmFtZXRlciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcmludF9lZmZpY2llbmN5XG5cbmxldCBzZXRfbG9nZ2VyIHBhcmFtZXRlciBsb2dnZXIgPVxuICB7IHBhcmFtZXRlciB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlciB9XG5cbmxldCBzYXZlX2Vycm9yX2xpc3QgcGFyYW1ldGVyIGVycm9yID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfZXJyb3JfbGlzdCBlcnJvclxuXG5sZXQgc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyIGJhciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX3Byb2dyZXNzX2JhciBiYXJcblxubGV0IHJlc2V0X3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVzZXRfcHJvZ3Jlc3NfYmFyXG5cbmxldCBzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfY3VycmVudF9waGFzZV90aXRsZVxuXG5sZXQgcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVzZXRfY3VycmVudF9waGFzZV90aXRsZVxuIiwib3BlbiBTdXBlcmFyZ1xuXG50eXBlIGNvdW50ID0gRW1iZWRkaW5ncyB8IE9jY3VycmVuY2VzXG5cbnR5cGUgdCA9IHtcbiAgYmFja2VuZDogc3RyaW5nIHJlZjtcbiAgcnVsZV9yYXRlX2NvbnZlbnRpb246IHN0cmluZyByZWY7XG4gIHJlYWN0aW9uX3JhdGVfY29udmVudGlvbjogc3RyaW5nIHJlZjtcbiAgY291bnQ6IHN0cmluZyByZWY7XG4gIGludGVybmFsX21lYW5pbmc6IHN0cmluZyByZWY7XG4gIHNob3dfcmVhY3Rpb25zOiBib29sIHJlZjtcbiAgY29tcHV0ZV9qYWNvYmlhbjogYm9vbCByZWY7XG4gIG9jdGF2ZV9vdXRwdXQ6IHN0cmluZyBvcHRpb24gcmVmO1xuICBtYXRsYWJfb3V0cHV0OiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgbWFwbGVfb3V0cHV0OiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgbWF0aGVtYXRpY2Ffb3V0cHV0OiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgc2JtbF9vdXRwdXQ6IHN0cmluZyBvcHRpb24gcmVmO1xuICBkb3RuZXRfb3V0cHV0OiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgZGF0YV9maWxlOiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgd2l0aF9zeW1tZXRyaWVzOiBzdHJpbmcgcmVmO1xuICBzaG93X3N5bW1ldHJpZXM6IGJvb2wgcmVmO1xuICB2aWV3czogYm9vbCByZWY7XG4gIGRib25kczogYm9vbCByZWY7XG4gIHNpdGVfYWNyb3NzOiBib29sIHJlZjtcbiAgbm9ubmVnYXRpdmU6IGJvb2wgcmVmO1xuICBzaG93X3RpbWVfYWR2YW5jZTogYm9vbCByZWY7XG4gIGluaXRpYWxfc3RlcDogZmxvYXQgcmVmO1xuICBtYXhfc3RlcDogZmxvYXQgcmVmO1xuICByZWxhdGl2ZV90b2xlcmFuY2U6IGZsb2F0IHJlZjtcbiAgYWJzb2x1dGVfdG9sZXJhbmNlOiBmbG9hdCByZWY7XG4gIHNtYXNoX3JlYWN0aW9uczogYm9vbCByZWY7XG4gIHByb3BhZ2F0ZV9jb25zdGFudHM6IGJvb2wgcmVmO1xuICBwcmludF9lZmZpY2llbmN5OiBib29sIHJlZjtcbiAgbWF4X3NpemVfZm9yX3NwZWNpZXM6IGludCBvcHRpb24gcmVmO1xuICBjc3Zfc2VwOiBzdHJpbmcgcmVmO1xufVxuXG5sZXQgZGVmYXVsdCA6IHQgPVxuICB7XG4gICAgYmFja2VuZCA9IHJlZiBcIm9jdGF2ZVwiO1xuICAgIHJ1bGVfcmF0ZV9jb252ZW50aW9uID0gcmVmIFwiRGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIjtcbiAgICByZWFjdGlvbl9yYXRlX2NvbnZlbnRpb24gPSByZWYgXCJEaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1wiO1xuICAgIGNvdW50ID0gcmVmIFwiRW1iZWRkaW5nc1wiO1xuICAgIGludGVybmFsX21lYW5pbmcgPSByZWYgXCJFbWJlZGRpbmdzXCI7XG4gICAgc2hvd19yZWFjdGlvbnMgPSByZWYgdHJ1ZTtcbiAgICBjb21wdXRlX2phY29iaWFuID0gcmVmIHRydWU7XG4gICAgZG90bmV0X291dHB1dCA9IHJlZiAoU29tZSBcIm5ldHdvcmsubmV0XCIpO1xuICAgIG9jdGF2ZV9vdXRwdXQgPSByZWYgKFNvbWUgXCJvZGUubVwiKTtcbiAgICBtYXRsYWJfb3V0cHV0ID0gcmVmIChTb21lIFwib2RlLm1cIik7XG4gICAgbWFwbGVfb3V0cHV0ID0gcmVmIChTb21lIFwib2RlLm13c1wiKTtcbiAgICBtYXRoZW1hdGljYV9vdXRwdXQgPSByZWYgKFNvbWUgXCJvZGUubmJcIik7XG4gICAgc2JtbF9vdXRwdXQgPSByZWYgKFNvbWUgXCJuZXR3b3JrLnhtbFwiKTtcbiAgICBkYXRhX2ZpbGUgPSByZWYgKFNvbWUgXCJkYXRhLmNzdlwiKTtcbiAgICB3aXRoX3N5bW1ldHJpZXMgPSByZWYgXCJOb25lXCI7XG4gICAgc2hvd19zeW1tZXRyaWVzID0gcmVmIGZhbHNlO1xuICAgIHZpZXdzID0gcmVmIHRydWU7XG4gICAgZGJvbmRzID0gcmVmIHRydWU7XG4gICAgc2l0ZV9hY3Jvc3MgPSByZWYgdHJ1ZTtcbiAgICBub25uZWdhdGl2ZSA9IHJlZiBmYWxzZTtcbiAgICBzaG93X3RpbWVfYWR2YW5jZSA9IHJlZiBmYWxzZTtcbiAgICBpbml0aWFsX3N0ZXAgPSByZWYgMC4wMDAwMTtcbiAgICBtYXhfc3RlcCA9IHJlZiAwLjAyO1xuICAgIGFic29sdXRlX3RvbGVyYW5jZSA9IHJlZiAwLjAwMTtcbiAgICByZWxhdGl2ZV90b2xlcmFuY2UgPSByZWYgMC4wMDE7XG4gICAgc21hc2hfcmVhY3Rpb25zID0gcmVmIGZhbHNlO1xuICAgIHByb3BhZ2F0ZV9jb25zdGFudHMgPSByZWYgZmFsc2U7XG4gICAgcHJpbnRfZWZmaWNpZW5jeSA9IHJlZiBmYWxzZTtcbiAgICBtYXhfc2l6ZV9mb3Jfc3BlY2llcyA9IHJlZiBOb25lO1xuICAgIGNzdl9zZXAgPSByZWYgXCIgXCI7XG4gIH1cblxubGV0IGNvbWJpbmUgbDEgbDIgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gbGlzdCBhMSAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBsaXN0IChhMiA6IGludCkgLT4gKGExLCBhMikgOjogbGlzdCkgbGlzdCBsMilcbiAgICBbXSBsMVxuXG5sZXQgb3B0aW9ucyAodCA6IHQpIDpcbiAgICAoU3VwZXJhcmcua2V5XG4gICAgKiBTdXBlcmFyZy5zcGVjXG4gICAgKiBTdXBlcmFyZy5tc2dcbiAgICAqIChTdXBlcmFyZy5jYXRlZ29yeSAqIFN1cGVyYXJnLnBvc2l0aW9uKSBsaXN0XG4gICAgKiBTdXBlcmFyZy5sZXZlbClcbiAgICBsaXN0ID1cbiAgW1xuICAgICggXCItLXZvaWRcIixcbiAgICAgIFN1cGVyYXJnLlZvaWQsXG4gICAgICBcIlwiLFxuICAgICAgY29tYmluZVxuICAgICAgICBbXG4gICAgICAgICAgQ29tbW9uX2FyZ3MuZGF0YV9zZXQ7XG4gICAgICAgICAgQ29tbW9uX2FyZ3Mub3V0cHV0O1xuICAgICAgICAgIENvbW1vbl9hcmdzLnNlbWFudGljcztcbiAgICAgICAgICBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncztcbiAgICAgICAgICBDb21tb25fYXJncy5tb2RlbF9yZWR1Y3Rpb247XG4gICAgICAgICAgQ29tbW9uX2FyZ3Muc3RhdGljX2FuYWx5c2lzO1xuICAgICAgICAgIENvbW1vbl9hcmdzLmRlYnVnX21vZGU7XG4gICAgICAgIF1cbiAgICAgICAgWyA1MDsgNTE7IDUyIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLk11bHRpRXh0XG4gICAgICAgIFtcbiAgICAgICAgICBcIi0tZG90bmV0LW91dHB1dFwiLCBcIi5uZXRcIjtcbiAgICAgICAgICBcIi0tbWFwbGUtb3V0cHV0XCIsIFwiLm13c1wiO1xuICAgICAgICAgIFwiLS1tYXRoZW1hdGljYS1vdXRwdXRcIiwgXCIubmJcIjtcbiAgICAgICAgICBcIi0tbWF0bGFiLW91dHB1dFwiLCBcIi5tXCI7XG4gICAgICAgICAgXCItLW9jdGF2ZS1vdXRwdXRcIiwgXCIubVwiO1xuICAgICAgICAgIFwiLS1zYm1sLW91dHB1dFwiLCBcIi54bWxcIjtcbiAgICAgICAgXSxcbiAgICAgIFwiUHJlZml4IGZvciBmaWxlIG5hbWUgb3V0cHV0XCIsXG4gICAgICBbXG4gICAgICAgIENvbW1vbl9hcmdzLmRhdGFfc2V0LCAxMDE7XG4gICAgICAgIENvbW1vbl9hcmdzLm91dHB1dCwgMTAxO1xuICAgICAgICBDb21tb25fYXJncy5zZW1hbnRpY3MsIDEwMTtcbiAgICAgICAgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDEwMTtcbiAgICAgICAgQ29tbW9uX2FyZ3MubW9kZWxfcmVkdWN0aW9uLCAxMDE7XG4gICAgICAgIENvbW1vbl9hcmdzLnN0YXRpY19hbmFseXNpcywgMTAxO1xuICAgICAgICBDb21tb25fYXJncy5kZWJ1Z19tb2RlLCAxMDE7XG4gICAgICBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tb2RlLWJhY2tlbmRcIixcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFtcbiAgICAgICAgICAgIFwiZG90bmV0XCIsIFwiZG90bmV0IChCTkdMKSBiYWNrZW5kXCI7XG4gICAgICAgICAgICBcIm1hcGxlXCIsIFwibWFwbGUgYmFja2VuZCAoaW4gcHJvZ3Jlc3MpXCI7XG4gICAgICAgICAgICBcIm1hdGhlbWF0aWNhXCIsIFwibWF0aGVtYXRpY2EgYmFja2VuZCAoaW4gcHJvZ3Jlc3MpXCI7XG4gICAgICAgICAgICBcIm1hdGxhYlwiLCBcIm1hdGxhYiBiYWNrZW5kXCI7XG4gICAgICAgICAgICBcIm9jdGF2ZVwiLCBcIm9jdGF2ZSBiYWNrZW5kXCI7XG4gICAgICAgICAgICBcInNibWxcIiwgXCJzYm1sIGJhY2tlbmRcIjtcbiAgICAgICAgICBdLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFwiRG90bmV0XCI7XG4gICAgICAgICAgICBcIkRPVE5FVFwiO1xuICAgICAgICAgICAgXCJPY3RhdmVcIjtcbiAgICAgICAgICAgIFwiT0NUQVZFXCI7XG4gICAgICAgICAgICBcIk1hdGxhYlwiO1xuICAgICAgICAgICAgXCJNQVRMQUJcIjtcbiAgICAgICAgICAgIFwiTWF0aGVtYXRpY2FcIjtcbiAgICAgICAgICAgIFwiTUFUSEVNQVRJQ0FcIjtcbiAgICAgICAgICAgIFwiTWFwbGVcIjtcbiAgICAgICAgICAgIFwiTUFQTEVcIjtcbiAgICAgICAgICAgIFwiU2JtbFwiO1xuICAgICAgICAgICAgXCJTQk1MXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICB0LmJhY2tlbmQgKSxcbiAgICAgIFwiU2VsZWN0IHRoZSBiYWNrZW5kIGZvcm1hdFwiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDEgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWRvdG5ldC1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdC5kb3RuZXRfb3V0cHV0LFxuICAgICAgXCJPREVzIGZpbGUgZm9yIGRvdG5ldCBiYWNrZW5kXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgMiBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tbWFwbGUtb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHQubWFwbGVfb3V0cHV0LFxuICAgICAgXCJPREVzIGZpbGUgZm9yIG1hcGxlIGJhY2tlbmRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCAzIF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS1tYXRoZW1hdGljYS1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdC5tYXRoZW1hdGljYV9vdXRwdXQsXG4gICAgICBcIk9ERXMgZmlsZSBmb3IgbWF0aGVtYXRpY2EgYmFja2VuZFwiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDQgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLW1hdGxhYi1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdC5tYXRsYWJfb3V0cHV0LFxuICAgICAgXCJPREVzIGZpbGUgZm9yIG1hdGxhYiBiYWNrZW5kXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgNSBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tb2N0YXZlLW91dHB1dFwiLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0Lm9jdGF2ZV9vdXRwdXQsXG4gICAgICBcIk9ERXMgZmlsZSBmb3Igb2N0YXZlIGJhY2tlbmRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCA2IF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS1zYm1sLW91dHB1dFwiLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0LnNibWxfb3V0cHV0LFxuICAgICAgXCJPREVzIGZpbGUgZm9yIHNibWwgYmFja2VuZFwiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDcgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLXByb3BhZ2F0ZS1jb25zdGFudHNcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5wcm9wYWdhdGVfY29uc3RhbnRzLFxuICAgICAgXCJwcm9wYWdhdGUgY29uc3RhbnRzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgOCBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tY29uc3RhbnQtcHJvcGFnYXRpb25cIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5wcm9wYWdhdGVfY29uc3RhbnRzLFxuICAgICAgXCJwcm9wYWdhdGUgY29uc3RhbnRzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgOSBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tY3N2LXNlcGFyYXRvclwiLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nIHQuY3N2X3NlcCxcbiAgICAgIFwic2VwYXJhdG9yIHN5bWJvbCBpbiBDU1YgZmlsZXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxMCBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tcmF0ZS1jb252ZW50aW9uXCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcIkthU2ltXCIsIFwiZG8gbm90IGRpdmlkZSBieSBhbnl0aGluZ1wiO1xuICAgICAgICAgICAgKCBcIkRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCIsXG4gICAgICAgICAgICAgIFwiZGl2aWRlIGJ5IHRoZSBudW1iZXIgb2YgYXV0b3MgaW4gdGhlIGxocyBvZiBydWxlc1wiICk7XG4gICAgICAgICAgICAoIFwiQmlvY2hlbWlzdFwiLFxuICAgICAgICAgICAgICBcImRpdmlkZSBieSB0aGUgbnVtYmVyIG9mIGF1dG9zIGluIHRoZSBsaHMgb2YgcnVsZXMgdGhhdCBpbmR1Y2UgXFxcbiAgICAgICAgICAgICAgIGFuIGF1dG8gYWxzbyBpbiB0aGUgcmhzXCIgKTtcbiAgICAgICAgICBdLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFwia2FzaW1cIjtcbiAgICAgICAgICAgIFwiS0FTSU1cIjtcbiAgICAgICAgICAgIFwiS2FzaW1cIjtcbiAgICAgICAgICAgIFwiRElWSURFX0JZX05CUl9PRl9BVVRPU19JTl9MSFNcIjtcbiAgICAgICAgICAgIFwiZGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIjtcbiAgICAgICAgICAgIFwiYmlvYmhlbWlzdFwiO1xuICAgICAgICAgICAgXCJCSU9DSEVNSVNUXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICB0LnJ1bGVfcmF0ZV9jb252ZW50aW9uICksXG4gICAgICBcImNvbnZlbnRpb24gZm9yIGRpdmlkaW5nIGNvbnN0YW50IHJhdGVzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgMSBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tcnVsZS1yYXRlLWNvbnZlbnRpb25cIixcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFtcbiAgICAgICAgICAgIFwiS2FTaW1cIiwgXCJkbyBub3QgZGl2aWRlIGJ5IGFueXRoaW5nXCI7XG4gICAgICAgICAgICAoIFwiRGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIixcbiAgICAgICAgICAgICAgXCJkaXZpZGUgYnkgdGhlIG51bWJlciBvZiBhdXRvcyBpbiB0aGUgbGhzIG9mIHJ1bGVzXCIgKTtcbiAgICAgICAgICAgICggXCJCaW9jaGVtaXN0XCIsXG4gICAgICAgICAgICAgIFwiZGl2aWRlIGJ5IHRoZSBudW1iZXIgb2YgYXV0b3MgaW4gdGhlIGxocyBvZiBydWxlcyB0aGF0IGluZHVjZSBcXFxuICAgICAgICAgICAgICAgYW4gYXV0byBhbHNvIGluIHRoZSByaHNcIiApO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJrYXNpbVwiO1xuICAgICAgICAgICAgXCJLQVNJTVwiO1xuICAgICAgICAgICAgXCJLYXNpbVwiO1xuICAgICAgICAgICAgXCJESVZJREVfQllfTkJSX09GX0FVVE9TX0lOX0xIU1wiO1xuICAgICAgICAgICAgXCJkaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1wiO1xuICAgICAgICAgICAgXCJiaW9iaGVtaXN0XCI7XG4gICAgICAgICAgICBcIkJJT0NIRU1JU1RcIjtcbiAgICAgICAgICBdLFxuICAgICAgICAgIHQucnVsZV9yYXRlX2NvbnZlbnRpb24gKSxcbiAgICAgIFwiY29udmVudGlvbiBmb3IgZGl2aWRpbmcgY29uc3RhbnQgcmF0ZXMgKGZvciBydWxlcylcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCAxIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1yZWFjdGlvbi1yYXRlLWNvbnZlbnRpb25cIixcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFtcbiAgICAgICAgICAgIFwiS2FTaW1cIiwgXCJkbyBub3QgZGl2aWRlIGJ5IGFueXRoaW5nXCI7XG4gICAgICAgICAgICAoIFwiRGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIixcbiAgICAgICAgICAgICAgXCJkaXZpZGUgYnkgdGhlIG51bWJlciBvZiBhdXRvcyBpbiB0aGUgbGhzIG9mIHJlYWN0aW9uc1wiICk7XG4gICAgICAgICAgICAoIFwiQmlvY2hlbWlzdFwiLFxuICAgICAgICAgICAgICBcImRpdmlkZSBieSB0aGUgbnVtYmVyIG9mIGF1dG9zIGluIHRoZSBsaHMgb2YgcmVhY3Rpb25zIHRoYXQgXFxcbiAgICAgICAgICAgICAgIGluZHVjZSBhbiBhdXRvIGFsc28gaW4gdGhlIHJoc1wiICk7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcImthc2ltXCI7XG4gICAgICAgICAgICBcIktBU0lNXCI7XG4gICAgICAgICAgICBcIkthc2ltXCI7XG4gICAgICAgICAgICBcIkRJVklERV9CWV9OQlJfT0ZfQVVUT1NfSU5fTEhTXCI7XG4gICAgICAgICAgICBcImRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCI7XG4gICAgICAgICAgICBcImJpb2JoZW1pc3RcIjtcbiAgICAgICAgICAgIFwiQklPQ0hFTUlTVFwiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgdC5yZWFjdGlvbl9yYXRlX2NvbnZlbnRpb24gKSxcbiAgICAgIFwiY29udmVudGlvbiBmb3IgZGl2aWRpbmcgY29uc3RhbnQgcmF0ZXMgKGZvciByZWFjdGlvbnMpXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgMiBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tY291bnRcIixcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFtcbiAgICAgICAgICAgICggXCJFbWJlZGRpbmdzXCIsXG4gICAgICAgICAgICAgIFwiY291bnQgdGhlIG51bWJlciBvZiBlbWJlZGRpbmdzIG9mIHBhdHRlcm5zIGludG8gc3BlY2llc1wiICk7XG4gICAgICAgICAgICBcIk9jY3VycmVuY2VzXCIsIFwiY291bnQgdGhlIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiBzcGVjaWVzXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbIFwiZW1iZWRkaW5nc1wiOyBcIkVNQkVERElOR1NcIjsgXCJvY2N1cnJlbmNlc1wiOyBcIk9DQ1VSUkVOQ0VTXCIgXSxcbiAgICAgICAgICB0LmNvdW50ICksXG4gICAgICBcInR1bmUgd2hldGhlciB3ZSBjb3VudCBpbiBlbWJlZGRpbmdzIG9yIGluIG9jY3VycmVuY2VzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgMyBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0taW50ZXJuYWwtbWVhbmluZ1wiLFxuICAgICAgU3VwZXJhcmcuQ2hvaWNlXG4gICAgICAgICggW1xuICAgICAgICAgICAgKCBcIkVtYmVkZGluZ3NcIixcbiAgICAgICAgICAgICAgXCJWYXJpYWJsZXMgZm9yIEthcHBhIHNwZWNpZXMgZGVub3RlIG51bWJlcnMgb2YgZW1iZWRkaW5nc1wiICk7XG4gICAgICAgICAgICAoIFwiT2NjdXJyZW5jZXNcIixcbiAgICAgICAgICAgICAgXCJWYXJpYWJsZXMgZm9yIEthcHBhIHNwZWNpZXMgZGVub3RlIG51bWJlcnMgb2Ygb2NjdXJyZW5jZXNcIiApO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgWyBcImVtYmVkZGluZ3NcIjsgXCJFTUJFRERJTkdTXCI7IFwib2NjdXJyZW5jZXNcIjsgXCJPQ0NVUlJFTkNFU1wiIF0sXG4gICAgICAgICAgdC5pbnRlcm5hbF9tZWFuaW5nICksXG4gICAgICBcInR1bmUgdGhlIG1lYW5pbmcgb2YgdmFyaWFibGUgZm9yIEthcHBhIHNwZWNpZXMgKHdoZXRoZXIgaXQgaXMgdGhlIFxcXG4gICAgICAgbnVtYmVyIG9mIGVtYmVkZGluZ3Mgb3IgdGhlIG51bWJlciBvZiBvY2N1cnJlbmNlcylcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCA0IF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS10cnVuY2F0ZVwiLFxuICAgICAgU3VwZXJhcmcuSW50X29wdCB0Lm1heF9zaXplX2Zvcl9zcGVjaWVzLFxuICAgICAgXCJ0cnVuY2F0ZSB0aGUgbmV0d29yayBieSBkaXNjYXJkaW5nIHNwZWNpZXMgd2l0aCBzaXplIGdyZWF0ZXIgdGhhbiB0aGUgXFxcbiAgICAgICBhcmd1bWVudFwiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDQgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLW1heC1zaXplLWZvci1zcGVjaWVzXCIsXG4gICAgICBTdXBlcmFyZy5JbnRfb3B0IHQubWF4X3NpemVfZm9yX3NwZWNpZXMsXG4gICAgICBcInRydW5jYXRlIHRoZSBuZXR3b3JrIGJ5IGRpc2NhcmRpbmcgc3BlY2llcyB3aXRoIHNpemUgZ3JlYXRlciB0aGFuIHRoZSBcXFxuICAgICAgIGFyZ3VtZW50XCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgNSBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tc2hvdy1yZWFjdGlvbnNcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5zaG93X3JlYWN0aW9ucyxcbiAgICAgIFwiQW5ub3RhdGUgT0RFcyBieSB0aGUgY29ycmVzcG9uZGluZyBjaGVtaWNhbCByZWFjdGlvbnNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxMCBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tc21hc2gtcmVhY3Rpb25zXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQuc21hc2hfcmVhY3Rpb25zLFxuICAgICAgXCJHYXRoZXIgaWRlbnRpY2FsIHJlYWN0aW9ucyBpbiB0aGUgT0RFc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDExOyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMSBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tY29tcHV0ZS1qYWNvYmlhblwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LmNvbXB1dGVfamFjb2JpYW4sXG4gICAgICBcIkVuYWJsZS9kaXNhYmxlIHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgSmFjb2JpYW4gb2YgdGhlIE9ERXMgXFxuXFxcbiAgICAgICBcXHQgKG5vdCBhdmFpbGFibGUgeWV0KVwiLFxuICAgICAgWyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMiBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0td2l0aC1zeW1tZXRyaWVzXCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcIk5vbmVcIiwgXCJubyBzeW1tZXRyaWVzIHJlZHVjdGlvblwiO1xuICAgICAgICAgICAgKCBcIkJhY2t3YXJkXCIsXG4gICAgICAgICAgICAgIFwidXNlIHRoZSBzeW1tZXRyaWVzIHNhdGlzZmllZCBieSB0aGUgcnVsZXMgYW5kIHRoZSBhbGdlYnJhaWMgXFxcbiAgICAgICAgICAgICAgIGV4cHJlc3Npb25zXCIgKTtcbiAgICAgICAgICAgICggXCJGb3J3YXJkXCIsXG4gICAgICAgICAgICAgIFwidXNlIHRoZSBzeW1tZXRyaWVzIHNhdGlzZmllZCBieSB0aGUgcnVsZXMgYW5kIHRoZSBpbml0aWFsIHN0YXRlXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcIm5vbmVcIjtcbiAgICAgICAgICAgIFwiTk9ORVwiO1xuICAgICAgICAgICAgXCJCQUNLV0FSRFwiO1xuICAgICAgICAgICAgXCJiYWNrd2FyZFwiO1xuICAgICAgICAgICAgXCJmb3J3YXJkXCI7XG4gICAgICAgICAgICBcIkZPUldBUkRcIjtcbiAgICAgICAgICAgIFwidHJ1ZVwiO1xuICAgICAgICAgICAgXCJUUlVFXCI7XG4gICAgICAgICAgICBcIlRydWVcIjtcbiAgICAgICAgICAgIFwiZmFsc2VcIjtcbiAgICAgICAgICAgIFwiRkFMU0VcIjtcbiAgICAgICAgICAgIFwiRmFsc2VcIjtcbiAgICAgICAgICBdLFxuICAgICAgICAgIHQud2l0aF9zeW1tZXRyaWVzICksXG4gICAgICBcIlR1bmUgd2hpY2gga2luZCBvZiBiaXNpbXVsYXRpb24gaXMgdXNlZCB0byByZWR1Y2UgdGhlIHNldCBvZiBzcGVjaWVzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgNTsgQ29tbW9uX2FyZ3MubW9kZWxfcmVkdWN0aW9uLCAxIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1zaG93LXN5bW1ldHJpZXNcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5zaG93X3N5bW1ldHJpZXMsXG4gICAgICBcIkRpc3BsYXkgdGhlIGVxdWl2YWxlbmNlIHJlbGF0aW9ucyBvdmVyIHRoZSBzaXRlc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5tb2RlbF9yZWR1Y3Rpb24sIDIgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXZpZXdzLWRvbWFpblwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnZpZXdzLFxuICAgICAgXCJFbmFibGUvZGlzYWJsZSB2aWV3cyBhbmFseXNpcyB3aGVuIGRldGVjdGluZyBzeW1tZXRyaWMgc2l0ZXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc3RhdGljX2FuYWx5c2lzLCAxIF0sXG4gICAgICBFeHBlcnQgKTtcbiAgICAoIFwiLS1kb3VibGUtYm9uZHMtZG9tYWluXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQuZGJvbmRzLFxuICAgICAgXCJFbmFibGUvZGlzYWJsZSBkb3VibGUgYm9uZHMgYW5hbHlzaXMgd2hlbiBkZXRlY3Rpbmcgc3ltbWV0cmljIHNpdGVzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnN0YXRpY19hbmFseXNpcywgMiBdLFxuICAgICAgRXhwZXJ0ICk7XG4gICAgKCBcIi0tc2l0ZS1hY3Jvc3MtYm9uZHMtZG9tYWluXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQuc2l0ZV9hY3Jvc3MsXG4gICAgICBcIkVuYWJsZS9kaXNhYmxlIHRoZSBhbmFseXNpcyBvZiB0aGUgcmVsYXRpb24gYW1vbmQgdGhlIHN0YXRlcyBvZiBzaXRlcyBcXFxuICAgICAgIGluIGNvbm5lY3RlZCBhZ2VudHNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc3RhdGljX2FuYWx5c2lzLCAzIF0sXG4gICAgICBFeHBlcnQgKTtcbiAgICAoIFwiLS1ub25uZWdhdGl2ZVwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0Lm5vbm5lZ2F0aXZlLFxuICAgICAgXCJFbmFibGUvZGlzYWJsZSB0aGUgY29ycmVjdGlvbiBvZiBuZWdhdGl2ZSBjb25jZW50cmF0aW9ucyBpbiBzdGlmZiBPREUgXFxcbiAgICAgICBzeXN0ZW1zXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAzIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1zaG93LXRpbWUtYWR2YW5jZVwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnNob3dfdGltZV9hZHZhbmNlLFxuICAgICAgXCJEaXNwbGF5IHRpbWUgYWR2YW5jZSBkdXJpbmcgbnVtZXJpY2FsIGludGVncmF0aW9uXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLmRlYnVnX21vZGUsIDEgXSxcbiAgICAgIEV4cGVydCApO1xuICAgICggXCItLWluaXRpYWwtc3RlcFwiLFxuICAgICAgU3VwZXJhcmcuRmxvYXQgdC5pbml0aWFsX3N0ZXAsXG4gICAgICBcIkluaXRpYWwgaW50ZWdyYXRpb24gc3RlcFwiLFxuICAgICAgWyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgNCBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tbWF4LXN0ZXBcIixcbiAgICAgIFN1cGVyYXJnLkZsb2F0IHQubWF4X3N0ZXAsXG4gICAgICBcIk1heGltdW0gaW50ZWdyYXRpb24gc3RlcFwiLFxuICAgICAgWyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgNSBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tcmVsYXRpdmUtdG9sZXJhbmNlXCIsXG4gICAgICBTdXBlcmFyZy5GbG9hdCB0LnJlbGF0aXZlX3RvbGVyYW5jZSxcbiAgICAgIFwidG9sZXJhbmNlIHRvIHJlbGF0aXZlIHJvdW5kaW5nIGVycm9yc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgNiBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tYWJzb2x1dGUtdG9sZXJhbmNlXCIsXG4gICAgICBTdXBlcmFyZy5GbG9hdCB0LmFic29sdXRlX3RvbGVyYW5jZSxcbiAgICAgIFwidG9sZXJhbmNlIHRvIGFic29sdXRlIHJvdW5kaW5nIGVycm9yc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgNyBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tcHJpbnQtZWZmaWNpZW5jeVwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnByaW50X2VmZmljaWVuY3ksXG4gICAgICBcInByb21wdCBDUFUgdGltZSBhbmQgdmFyaW91cyBkYXRhc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5kZWJ1Z19tb2RlLCAyIF0sXG4gICAgICBFeHBlcnQgKTtcbiAgXVxuXG5sZXQgZ2V0X29wdGlvbiBvcHRpb25zID1cbiAgbGV0IHRpdGxlID0gVmVyc2lvbi52ZXJzaW9uX2thZGVfZnVsbF9uYW1lIGluXG4gIGxldCBpbnB1dCA9IHJlZiBbXSBpblxuICBsZXQgKCkgPSBTdXBlcmFyZ1RrLnBhcnNlIH50aXRsZSBvcHRpb25zIGlucHV0IGluXG4gICFpbnB1dFxuXG5sZXQgYnVpbGRfa2FzYV9wYXJhbWV0ZXJzIH5jYWxsZWRfZnJvbSB0IHRfY29tbW9uID1cbiAgQ29uZmlnLndpdGhfdmlld3NfYW5hbHlzaXMgOj0gISh0LnZpZXdzKTtcbiAgQ29uZmlnLndpdGhfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXMgOj0gISh0LmRib25kcyk7XG4gIENvbmZpZy53aXRoX3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzIDo9ICEodC5zaXRlX2Fjcm9zcyk7XG4gIENvbmZpZy50cmFjZSA6PSB0X2NvbW1vbi5Db21tb25fYXJncy5kZWJ1ZztcbiAgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcGFyYW1ldGVycyB+Y2FsbGVkX2Zyb20gKClcbiIsIigqKlxuICogaGVhZGVycy5tbFxuICogb3BlbmthcHBhXG4gKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uL0FudGlxdWUsIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICpcbiAqIENyZWF0aW9uOiAwOC8wMy8yMDEwXG4gKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPE5vdiAxNCAyMDE2PlxuICogKlxuICogU29tZSBwYXJhbWV0ZXJzXG4gKiByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICpcbiAqIENvcHlyaWdodCAyMDEwLDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNVxuICogSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxuKCoqIGlmIHVuc2FmZSA9IHRydWUsIHRoZW4gd2hlbmV2ZXIgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYSBkZWZhdWx0IHZhbHVlIGlzIG91dHB1dCwgYW5kIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQqKVxubGV0IGRvdF9jb21tZW50ID0gXCIjXCJcblxubGV0IGhlYWQgcGFyYW1ldGVycyA9XG4gIFtcbiAgICBcIlRoaXMgZmlsZSBoYXMgYmVlbiBjb21wdXRlZCBieSBLYVNhOiBhIFN0YXRpYyBBbmFseXplciBmb3IgS2FwcGEgKFwiXG4gICAgXiBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9zaG9ydF92ZXJzaW9uIHBhcmFtZXRlcnNcbiAgICBeIFwiKVwiO1xuICAgIFwiRG93bmxvYWQgc291cmNlcy9iaW5hcmllcyBhdCBodHRwczovL2dpdGh1Yi5jb20vS2FwcGEtRGV2L0thU2ltXCI7XG4gICAgXCJcIjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sYXVuY2hlZF93aGVuX2FuZF93aGVyZSBwYXJhbWV0ZXJzO1xuICAgIFwiQ29tbWFuZCBsaW5lIGlzOiBcIlxuICAgIF4gU3RyaW5nLmNvbmNhdCBcIiBcIlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgQXJyYXkudG9fbGlzdCAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfY29tbWFuZF9saW5lIHBhcmFtZXRlcnMpXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgX3QgOjogcSAtPiBcIkthU2FcIiA6OiBxXG4gICAgICAgIHwgW10gLT4gW10pO1xuICAgIFwiXCI7XG4gIF1cblxubGV0IGRvdF90b19wZGYgPVxuICBcIlBsZWFzZSB1c2UgZ3JhcGh2aXogKGh0dHA6Ly93d3cuZ3JhcGh2aXoub3JnKSBvciBPbW5pR3JhZmZsZSB0byBleHBvcnQgaXQgXFxcbiAgIHRvIGEgUERGXCJcblxubGV0IGhlYWRfaW5mbHVlbmNlX21hcF9pbl9kb3QgPVxuICBbXG4gICAgXCJUaGlzIGZpbGUgY29udGFpbnMgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBpbmZsdWVuY2UgbWFwIGluIGRvdC5cIjtcbiAgICBkb3RfdG9fcGRmO1xuICAgIFwiXCI7XG4gIF1cblxubGV0IGhlYWRfY29udGFjdF9tYXBfaW5fZG90ID1cbiAgW1xuICAgIFwiVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgY29udGFjdCBtYXAgaW4gZG90LlwiO1xuICAgIGRvdF90b19wZGY7XG4gICAgXCJcIjtcbiAgXVxuIiwiKCpmaWxlIG5hbWVzKilcblxubGV0IGlucHV0IDogc3RyaW5nIGxpc3QgcmVmID0gcmVmIFtdICgqbmFtZSBvZiB0aGUga2FwcGEgZmlsZXMqKVxubGV0IG91dHB1dCA9IHJlZiBcImRhdGEub3V0XCJcbiIsIigqKlxuICAqIGdldF9vcHRpb24ubWxcbiAgKiBvcGVua2FwcGFcbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKlxuICAqIENyZWF0aW9uOiAxOC8xMi8yMDEwXG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxKYW4gMDggMjAyMD5cbiAgKiAqXG4gICogcHJpbWl0aXZlIHRvIHBhcnNlIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm9wZW4gU3VwZXJhcmdcblxubGV0IGFjdGlvbnMgPSBcIkFjdGlvbnNcIiwgMCwgTm9uZVxubGV0IHN5bnRheCA9IFwiU3ludGF4XCIsIDEsIE5vbmVcbmxldCBvdXRwdXQgPSBcIk91dHB1dFwiLCAyLCBOb25lXG5sZXQgcmVhY2hhYmlsaXR5ID0gXCJSZWFjaGFiaWxpdHkgYW5hbHlzaXNcIiwgMywgTm9uZVxubGV0IHRyYWNlcyA9IFwiVHJhY2UgYW5hbHlzaXNcIiwgNCwgTm9uZVxubGV0IGNvbnRhY3RfbWFwID0gXCJDb250YWN0IG1hcFwiLCA1LCBOb25lXG5sZXQgaW5mbHVlbmNlX21hcCA9IFwiSW5mbHVlbmNlIG1hcFwiLCA2LCBOb25lXG5sZXQgZmxvdyA9IFwiRmxvdyBvZiBpbmZvcm1hdGlvblwiLCA3LCBOb25lXG5sZXQgZGVidWcgPSBcIkRlYnVnZ2luZyBpbmZvcm1hdGlvblwiLCA4LCBOb25lXG5cbmxldCBvcHRpb25zID1cbiAgTGlzdC5yZXZcbiAgICBbXG4gICAgICAoIFwiLS1kby1hbGxcIixcbiAgICAgICAgTXVsdGlcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCItLWNvbXB1dGUtY29udGFjdC1tYXBcIjtcbiAgICAgICAgICAgICAgXCItLWNvbXB1dGUtaW5mbHVlbmNlLW1hcFwiO1xuICAgICAgICAgICAgICBcIi0tY29tcHV0ZS1PREUtZmxvdy1vZi1pbmZvcm1hdGlvblwiO1xuICAgICAgICAgICAgICBcIi0tY29tcHV0ZS1wb3RlbnRpYWwtY3ljbGVzXCI7XG4gICAgICAgICAgICAgIFwiLS1jb21wdXRlLXN0b2NoYXN0aWMtZmxvdy1vZi1pbmZvcm1hdGlvblwiO1xuICAgICAgICAgICAgICBcIi0tY29tcHV0ZS1yZWFjaGFiaWxpdHktYW5hbHlzaXNcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSApLFxuICAgICAgICBcImxhdW5jaCBldmVyeXRoaW5nXCIsXG4gICAgICAgIFsgYWN0aW9ucywgMCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXJlc2V0LWFsbFwiLFxuICAgICAgICBNdWx0aVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIi0tbm8tY29tcHV0ZS1jb250YWN0LW1hcFwiO1xuICAgICAgICAgICAgICBcIi0tbm8tY29tcHV0ZS1pbmZsdWVuY2UtbWFwXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1jb21wdXRlLU9ERS1mbG93LW9mLWluZm9ybWF0aW9uXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1jb21wdXRlLXBvdGVudGlhbC1jeWNsZXNcIjtcbiAgICAgICAgICAgICAgXCItLW5vLWNvbXB1dGUtc3RvY2hhc3RpYy1mbG93LW9mLWluZm9ybWF0aW9uXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1jb21wdXRlLXJlYWNoYWJpbGl0eS1hbmFseXNpc1wiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdICksXG4gICAgICAgIFwibGF1bmNoIG5vdGhpbmdcIixcbiAgICAgICAgWyBhY3Rpb25zLCAxIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgXCItLXZvaWRcIiwgVm9pZCwgXCJcIiwgWyBhY3Rpb25zLCAyIF0sIE5vcm1hbDtcbiAgICAgICggXCItc3ludGF4XCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggWyBcIlYzXCIsIFwicHJldmlvdXMgdmVyc2lvblwiOyBcIlY0XCIsIFwiY3VycmVudCB2ZXJzaW9uXCIgXSxcbiAgICAgICAgICAgIFsgXCJWM1wiOyBcIlY0XCI7IFwiM1wiOyBcIjRcIjsgXCJ2M1wiOyBcInY0XCIgXSxcbiAgICAgICAgICAgIENvbmZpZy5zeW50YXhfdmVyc2lvbiApLFxuICAgICAgICBcIlZlcnNpb24gb2YgdGhlIGxleGVyL3BhcnNlclwiLFxuICAgICAgICBbIHN5bnRheCwgMTsgYWN0aW9ucywgMzAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb21wdXRlLWNvbnRhY3QtbWFwXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmRvX2NvbnRhY3RfbWFwLFxuICAgICAgICBcImNvbXB1dGUgdGhlIGNvbnRhY3QgbWFwXCIsXG4gICAgICAgIFsgYWN0aW9ucywgMjsgY29udGFjdF9tYXAsIDAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb21wdXRlLWluZmx1ZW5jZS1tYXBcIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9faW5mbHVlbmNlX21hcCxcbiAgICAgICAgXCJjb21wdXRlIHRoZSBpbmZsdWVuY2UgbWFwXCIsXG4gICAgICAgIFsgYWN0aW9ucywgMzsgaW5mbHVlbmNlX21hcCwgMCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWluZmx1ZW5jZS1tYXAtYWNjdXJhY3ktbGV2ZWxcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiSW5kaXJlY3RcIiwgXCJJZ25vcmUgZ2x1aW5nIGNvbXBhdGliaWxpdHlcIjtcbiAgICAgICAgICAgICAgXCJEaXJlY3RcIiwgXCJJZ25vcmUgcmVhY2hhYmxlIHN0YXRlc1wiO1xuICAgICAgICAgICAgICBcIlJlYWxpc2FibGVcIiwgXCJUYWtlIGludG8gYWNjb3VudCByZWFjaGFibGUgc3RhdGVzXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgWyBcIkxvd1wiOyBcIk1lZGl1bVwiOyBcIkhpZ2hcIjsgXCJGdWxsXCIgXSxcbiAgICAgICAgICAgIENvbmZpZy5pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsICksXG4gICAgICAgIFwiVHVuZSB0aGUgYWNjdXJhY3kgbGV2ZWwgb2YgdGhlIGluZmx1ZW5jZSBtYXBcIixcbiAgICAgICAgWyBpbmZsdWVuY2VfbWFwLCAxIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1PREUtZmxvdy1vZi1pbmZvcm1hdGlvblwiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbixcbiAgICAgICAgXCJDb21wdXRlIGFuIGFwcHJveGltYXRpb24gb2YgdGhlIGZsb3cgb2YgaW5mb3JtYXRpb24gaW4gdGhlIE9ERSBcXFxuICAgICAgICAgc2VtYW50aWNzXCIsXG4gICAgICAgIFsgYWN0aW9ucywgNDsgZmxvdywgNiBdLFxuICAgICAgICBFeHBlcnQgKTtcbiAgICAgICggXCItLWNvbXB1dGUtcG90ZW50aWFsLWN5Y2xlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19zY2MsXG4gICAgICAgIFwiQ29tcHV0ZSB0aGUgYm9uZHMgdGhhdCBtYXkgYmUgaW52b2x2ZWQgaW4gcG9seW1lcmlzYXRpb25cIixcbiAgICAgICAgWyBhY3Rpb25zLCA1OyBjb250YWN0X21hcCwgMSBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbXB1dGUtc3RvY2hhc3RpYy1mbG93LW9mLWluZm9ybWF0aW9uXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmRvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdGlvbixcbiAgICAgICAgXCJDb21wdXRlIGFuIGFwcHJveGltYXRpb24gb2YgdGhlIGZsb3cgb2YgaW5mb3JtYXRpb24gaW4gdGhlIHN0b2NoYXN0aWMgXFxcbiAgICAgICAgIHNlbWFudGljc1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDY7IGZsb3csIDYgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1jb21wdXRlLXJlYWNoYWJpbGl0eS1hbmFseXNpc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXMsXG4gICAgICAgIFwiQ29tcHV0ZSBhbiBhcHByb3hpbWF0aW9uIG9mIHRoZSBzdGF0ZXMgb2YgYWdlbnQgc2l0ZXNcIixcbiAgICAgICAgWyBhY3Rpb25zLCA3OyByZWFjaGFiaWxpdHksIDAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1lbmFibGUtZXZlcnktZG9tYWluXCIsXG4gICAgICAgIE11bHRpXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiLS1jb250YWN0LW1hcC1kb21haW5cIjtcbiAgICAgICAgICAgICAgXCJkeW5hbWljXCI7XG4gICAgICAgICAgICAgIFwiLS12aWV3cy1kb21haW5cIjtcbiAgICAgICAgICAgICAgXCItLWRvdWJsZS1ib25kcy1kb21haW5cIjtcbiAgICAgICAgICAgICAgXCItLXNpdGVzLWFjcm9zcy1ib25kcy1kb21haW5cIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSApLFxuICAgICAgICBcImVuYWJsZSBldmVyeSBhYnN0cmFjdCBkb21haW5cIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDEgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1kaXNhYmxlLWV2ZXJ5LWRvbWFpblwiLFxuICAgICAgICBNdWx0aVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIi0tY29udGFjdC1tYXAtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwic3RhdGljXCI7XG4gICAgICAgICAgICAgIFwiLS1uby12aWV3cy1kb21haW5cIjtcbiAgICAgICAgICAgICAgXCItLW5vLWRvdWJsZS1ib25kcy1kb21haW5cIjtcbiAgICAgICAgICAgICAgXCItLW5vLXNpdGVzLWFjcm9zcy1ib25kcy1kb21haW5cIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSApLFxuICAgICAgICBcImRpc2FibGUgZXZlcnkgYWJzdHJhY3QgZG9tYWluXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAyIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29udGFjdC1tYXAtZG9tYWluXCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICAoIFwic3RhdGljXCIsXG4gICAgICAgICAgICAgICAgXCJWZXJ5IGNvYXJzZSBzdGF0aWMgYWJzdHJhY3Rpb246IGV2ZXJ5IGJvbmQgdGhhdCBvY2N1cnMgaW4gXFxcbiAgICAgICAgICAgICAgICAgaW5pdGlhbCBzdGF0ZXMgYW5kIHJocyBvZiBydWxlcyBpcyBjb25zaWRlcmVkXCIgKTtcbiAgICAgICAgICAgICAgKCBcImR5bmFtaWNcIixcbiAgICAgICAgICAgICAgICBcIk1vcmUgYWNjdXJhdGUgYWJzdHJhY3Rpb246IG9ubHkgdGhlIGJvbmRzIHRoYXQgb2NjdXIgaW4gdGhlIFxcXG4gICAgICAgICAgICAgICAgIGluaXRpYWwgc3RhdGUgb3IgYSBydWxlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBhcHBsaWVkIFxcXG4gICAgICAgICAgICAgICAgIHN1Y2Nlc3NmdWxseSwgYXJlIGNvbnNpZGVyZWRcIiApO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLndpdGhfZHluYW1pY19jb250YWN0X21hcCApLFxuICAgICAgICBcImNvbnRhY3QgbWFwIGRvbWFpbiBpcyB1c2VkIHRvIG92ZXItYXBwcm94aW1hdGUgc2lkZS1lZmZlY3RzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAzIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tdmlld3MtZG9tYWluXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLndpdGhfdmlld3NfYW5hbHlzaXMsXG4gICAgICAgIFwiZW5hYmxlIGxvY2FsIHZpZXdzIGFuYWx5c2lzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCA0IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY291bnRlcnMtZG9tYWluXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLndpdGhfY291bnRlcnNfYW5hbHlzaXMsXG4gICAgICAgIFwiZW5hYmxlIGNvdW50ZXIgYW5hbHlzaXNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDUgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb3VudGVycy1hY2N1cmFjeVwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCJub24tcmVsYXRpb25hbFwiLCBcIkxvd2VyIGFuZCB1cHBlciBib3VuZHMgZm9yIGVhY2ggdmFyaWFibGVcIjtcbiAgICAgICAgICAgICAgKCBcIm9jdGFnb25zXCIsXG4gICAgICAgICAgICAgICAgXCJMb3dlciBhbmQgdXBwZXIgYm91bmRzIGZvciBlYWNoIHZhcmlhYmxlLCAgYW4gZWFjaCBzdW0gYW5kIFxcXG4gICAgICAgICAgICAgICAgIGVhY2ggZGlmZmVyZW5jZSBhbW9uZyB0d28gdmFyaWFibGVzXCIgKTtcbiAgICAgICAgICAgICAgKCBcIm1pXCIsXG4gICAgICAgICAgICAgICAgXCJBcHByb3hpbWF0ZSByZWR1Y2VkIHByb2R1Y3QgYmV0d2VlbiBpbnRlcnZhbHMgYW5kIGFmZmluZSBcXFxuICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzXCIgKTtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFwib2N0XCI7XG4gICAgICAgICAgICAgIFwib2N0b1wiO1xuICAgICAgICAgICAgICBcIm9jdGFnb25cIjtcbiAgICAgICAgICAgICAgXCJNSVwiO1xuICAgICAgICAgICAgICBcIk1pXCI7XG4gICAgICAgICAgICAgIFwiT2N0XCI7XG4gICAgICAgICAgICAgIFwiT2N0b1wiO1xuICAgICAgICAgICAgICBcIk9jdGFnb25cIjtcbiAgICAgICAgICAgICAgXCJPY3RhZ29uc1wiO1xuICAgICAgICAgICAgICBcIm5vbi1yZWxhdGlvbmFsXCI7XG4gICAgICAgICAgICAgIFwibnJcIjtcbiAgICAgICAgICAgICAgXCJub24tcmVsXCI7XG4gICAgICAgICAgICAgIFwibm9uX3JlbFwiO1xuICAgICAgICAgICAgICBcIm5vbl9yZWxhdGlvbmFsXCI7XG4gICAgICAgICAgICAgIFwiTm9uLXJlbGF0aW9uYWxcIjtcbiAgICAgICAgICAgICAgXCJOclwiO1xuICAgICAgICAgICAgICBcIk5vbi1yZWxcIjtcbiAgICAgICAgICAgICAgXCJOb25fcmVsXCI7XG4gICAgICAgICAgICAgIFwiTm9uX3JlbGF0aW9uYWxcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBDb25maWcuY291bnRlcl9hbmFseXNpc19kb21haW4gKSxcbiAgICAgICAgXCJBYnN0cmFjdCBkb21haW4gZm9yIGNvdW50ZXIgYW5hbHlzaXNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDYgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1kb3VibGUtYm9uZHMtZG9tYWluXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLndpdGhfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXMsXG4gICAgICAgIFwiZW5hYmxlIGRvdWJsZSBib25kcyBhbmFseXNpc1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgNyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXNpdGVzLWFjcm9zcy1ib25kcy1kb21haW5cIixcbiAgICAgICAgQm9vbCBDb25maWcud2l0aF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcyxcbiAgICAgICAgXCJlbmFibGUgdGhlIGFuYWx5c2lzIG9mIHRoZSByZWxhdGlvbiBhbW9uZyB0aGUgc3RhdGVzIG9mIHNpdGVzIGluIFxcXG4gICAgICAgICBjb25uZWN0ZWQgYWdlbnRzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCA4IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tc2l0ZXMtYWNjcm9zcy1ib25kcy1kb21haW5cIixcbiAgICAgICAgQm9vbCBDb25maWcud2l0aF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcyxcbiAgICAgICAgXCJlbmFibGUgdGhlIGFuYWx5c2lzIG9mIHRoZSByZWxhdGlvbiBhbW9uZyB0aGUgc3RhdGVzIG9mIHNpdGVzIGluIFxcXG4gICAgICAgICBjb25uZWN0ZWQgYWdlbnRzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCA4IF0sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1zeW1tZXRyaWVzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmRvX3N5bW1ldHJpZXMsXG4gICAgICAgIFwiTG9vayB1cCBmb3IgcGFpcnMgb2Ygc3ltbWV0cmljIHNpdGVzXCIsXG4gICAgICAgIFsgYWN0aW9ucywgOCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXZlcmJvc2l0eS1sZXZlbC1mb3Itdmlldy1hbmFseXNpc1wiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCJNdXRlXCIsIFwiTm8gaW5mb3JtYXRpb24gZGlzcGxheWVkXCI7XG4gICAgICAgICAgICAgIFwiTG93XCIsIFwiU2hvdyBhbmFseXNpcyByZXN1bHQgb25seVwiO1xuICAgICAgICAgICAgICBcIk1lZGl1bVwiLCBcIkFsc28gc2hvdyB3aGljaCBydWxlcyBhcmUgYXBwbGllZFwiO1xuICAgICAgICAgICAgICBcIkhpZ2hcIiwgXCJBbHNvIHNob3cgd2hlbiBuZXcgdmlld3MgYXJlIGRpc2NvdmVyZWRcIjtcbiAgICAgICAgICAgICAgXCJGdWxsXCIsIFwiQWxzbyBzaG93IHdoaWNoIHJ1bGVzIGFyZSBwdXQgaW4gdGhlIHdvcmtpbmcgbGlzdFwiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLnZlcmJvc2l0eV9sZXZlbF9mb3JfcmVhY2hhYmlsaXR5X2FuYWx5c2lzICksXG4gICAgICAgIFwiVHVuZSB0aGUgdmVyYm9zaXR5IGxldmVsIGZvciB0aGUgdmlldyBhbmFseXNpc1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgOSBdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLXZlcmJvc2l0eS1sZXZlbC1mb3ItcmVhY2hhYmlsaXR5LWFuYWx5c2lzXCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIk11dGVcIiwgXCJObyBpbmZvcm1hdGlvbiBkaXNwbGF5ZWRcIjtcbiAgICAgICAgICAgICAgXCJMb3dcIiwgXCJTaG93IGFuYWx5c2lzIHJlc3VsdCBvbmx5XCI7XG4gICAgICAgICAgICAgIFwiTWVkaXVtXCIsIFwiQWxzbyBzaG93IHdoaWNoIHJ1bGVzIGFyZSBhcHBsaWVkXCI7XG4gICAgICAgICAgICAgIFwiSGlnaFwiLCBcIkFsc28gc2hvdyB3aGVuIHBhdHRlcm5zIGFyZSBkaXNjb3ZlcmVkXCI7XG4gICAgICAgICAgICAgIFwiRnVsbFwiLCBcIkFsc28gc2hvdyB3aGljaCBydWxlcyBhcmUgcHV0IGluIHRoZSB3b3JraW5nIGxpc3RcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy52ZXJib3NpdHlfbGV2ZWxfZm9yX3JlYWNoYWJpbGl0eV9hbmFseXNpcyApLFxuICAgICAgICBcIlR1bmUgdGhlIHZlcmJvc2l0eSBsZXZlbCBmb3IgdGhlIHJlYWNoYWJpbGl0eSBhbmFseXNpc1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgMTAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1oaWRlLW9uZS1kLXJlbGF0aW9ucy1mcm9tLWNhcnRlc2lhbi1kZWNvbXBvc2l0aW9uXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmhpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb24sXG4gICAgICAgIFwiRmlsdGVyIG91dCAxLWQgcmVsYXRpb25zIGZyb20gdGhlIENhcnRlc2lhbiBkZWNvbXBvc2l0aW9uXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAxMSBdLFxuICAgICAgICBEZXZlbG9wcGVyICk7XG4gICAgICAoIFwiLS1zbWFzaC1yZWxhdGlvbnNcIixcbiAgICAgICAgQm9vbCBDb25maWcuc21hc2hfcmVsYXRpb25zLFxuICAgICAgICBcIlJlY29tYmluZSByZWxhdGlvbnMgdG8gZ2V0IGEgbW9yZSBwcmVjaXNlICYgY29tcGFjdCBvdXRwdXRcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDEyIF0sXG4gICAgICAgIERldmVsb3BwZXIgKTtcbiAgICAgICggXCItLW91dHB1dC1tb2RlLWZvci1yZWFjaGFiaWxpdHktYW5hbHlzaXNcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwicmF3XCIsIFwibm8gcG9zdC1wcm9jZXNzaW5nXCI7XG4gICAgICAgICAgICAgIFwia2FwcGFcIiwgXCJrYXBwYSBtb2RlXCI7XG4gICAgICAgICAgICAgIFwiZW5nbGlzaFwiLCBcIm5hdHVyYWwgbGFuZ3VhZ2VcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy51c2VfbmF0dXJhbF9sYW5ndWFnZSApLFxuICAgICAgICBcInBvc3QtcHJvY2VzcyByZWxhdGlvbiBhbmQgb3V0cHV0IHRoZSByZXN1bHQgaW4gdGhlIGNob3NlbiBmb3JtYXRcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDEzIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1sb2NhbC10cmFjZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuY29tcHV0ZV9sb2NhbF90cmFjZXMsXG4gICAgICAgIFwiQ29tcHV0ZSB0aGUgbG9jYWwgdHJhY2VzIG9mIGludGVyZXN0aW5nIHBhcnRzIG9mIGFnZW50IGludGVyZmFjZXNcIixcbiAgICAgICAgWyBhY3Rpb25zLCA5OyB0cmFjZXMsIDAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1zaG93LXJ1bGUtbmFtZXMtaW4tbG9jYWwtdHJhY2VzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXMsXG4gICAgICAgIFwiQW5ub3RhdGUgZWFjaCB0cmFuc2l0aW9uIHdpdGggdGhlIG5hbWUgb2YgdGhlIHJ1bGVzIGluIHRyYWNlIFxcXG4gICAgICAgICBhYnN0cmFjdGlvblwiLFxuICAgICAgICBbIHRyYWNlcywgMSBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXVzZS1tYWNyb3RyYW5zaXRpb25zLWluLWxvY2FsLXRyYWNlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy51c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXMsXG4gICAgICAgIFwiVXNlIG1hY3JvdHJhbnNpdGlvbnMgdG8gZ2V0IGEgY29tcGFjdCB0cmFjZSB1cCB0byBjaGFuZ2Ugb2YgdGhlIFxcXG4gICAgICAgICBpbnRlcmxlYXZpbmcgb3JkZXIgb2YgY29tbXV0aW5nIG1pY3JvdHJhbnNpdGlvbnNcIixcbiAgICAgICAgWyB0cmFjZXMsIDIgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1pZ25vcmUtdHJpdmlhbC1sb3Nhbmdlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19ub3RfY29tcHJlc3NfdHJpdmlhbF9sb3NhbmdlcyxcbiAgICAgICAgXCJEbyBub3QgdXNlIG1hY3JvdHJhbnNpdGlvbnMgZm9yIHNpbXBsaWZ5aW5nIHRyaXZpYWwgbG9zYW5nZXNcIixcbiAgICAgICAgWyB0cmFjZXMsIDMgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1hZGQtc2luZ3VsYXItbWFjcm9zdGF0ZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzLFxuICAgICAgICBcIkNvbXBsZXRlIHRoZSBzaW1wbGljaWFsIGNvbXBsZXhlcyB3aXRoIHNpbmd1bGFyIGludGVyc2VjdGlvbiBvZiBcXFxuICAgICAgICAgaGlnaGVyLWRpbWVuc2lvbiBmYWNlc1wiLFxuICAgICAgICBbIHRyYWNlcywgNCBdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWFkZC1zaW5ndWxhci1taWNyb3N0YXRlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXMsXG4gICAgICAgIFwiQ29tcGxldGUgdGhlIHNpbXBsaWNpYWwgY29tcGxleGVzIHdpdGggc2luZ3VsYXIgaW50ZXJzZWN0aW9uIG9mIFxcXG4gICAgICAgICBoaWdoZXItZGltZW5zaW9uIGZhY2VzXCIsXG4gICAgICAgIFsgdHJhY2VzLCA1IF0sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1zZXBhcmF0aW5nLXRyYW5zaXRpb25zXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyxcbiAgICAgICAgXCJDb21wdXRlIHRoZSB0cmFuc2l0aW9ucyB0aGF0IHNlcGFyYXRlcyBzdHJvbmdseSBjb25uZWN0ZWQgc2V0IG9mIFxcXG4gICAgICAgICBjb25maWd1cmF0aW9uc1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDEwOyB0cmFjZXMsIDYgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1vdXRwdXQtZGlyZWN0b3J5XCIsXG4gICAgICAgIE11bHRpRXh0XG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCItLW91dHB1dC1jb250YWN0LW1hcC1kaXJlY3RvcnlcIiwgXCJcIjtcbiAgICAgICAgICAgIFwiLS1vdXRwdXQtaW5mbHVlbmNlLW1hcC1kaXJlY3RvcnlcIiwgXCJcIjtcbiAgICAgICAgICAgIFwiLS1vdXRwdXQtbG9jYWwtdHJhY2VzLWRpcmVjdG9yeVwiLCBcIlwiO1xuICAgICAgICAgICAgXCItLW91dHB1dC1sb2ctZGlyZWN0b3J5XCIsIFwiXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgXCJEZWZhdWx0IHJlcG9zaXRvcnkgZm9yIG91dHB1dHNcIixcbiAgICAgICAgWyBvdXRwdXQsIDAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoKiBDT05UQUNUIE1BUCAqKVxuICAgICAgKCBcIi0tb3V0cHV0LWNvbnRhY3QtbWFwLWRpcmVjdG9yeVwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLm91dHB1dF9jbV9kaXJlY3RvcnksXG4gICAgICAgIFwicHV0IHRoZSBjb250YWN0IG1hcCBmaWxlIGluIHRoaXMgZGlyZWN0b3J5XCIsXG4gICAgICAgIFsgb3V0cHV0LCAwOyBjb250YWN0X21hcCwgMyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLW91dHB1dC1jb250YWN0LW1hcFwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLmNvbnRhY3RfbWFwX2ZpbGUsXG4gICAgICAgIFwiZmlsZSBuYW1lIGZvciB0aGUgY29udGFjdCBtYXAgb3V0cHV0XCIsXG4gICAgICAgIFsgb3V0cHV0LCAxOyBjb250YWN0X21hcCwgNCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbnRhY3QtbWFwLWZvcm1hdFwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCJET1RcIiwgXCJkb3QgZm9ybWF0XCI7XG4gICAgICAgICAgICAgIFwiR0VQSElcIiwgXCJHZXBoaSBmb3JtYXRcIjtcbiAgICAgICAgICAgICAgKCpcIkhUTUxcIixcIkhUTUwgZm9ybWF0XCIqKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLmNvbnRhY3RfbWFwX2Zvcm1hdCApLFxuICAgICAgICBcIlR1bmUgdGhlIG91dHB1dCBmb3JtYXQgZm9yIHRoZSBjb250YWN0IG1hcFwiLFxuICAgICAgICBbIG91dHB1dCwgMjsgY29udGFjdF9tYXAsIDUgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb250YWN0LW1hcC1hY2N1cmFjeS1sZXZlbFwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCJMb3dcIiwgXCJDb2xsZWN0IGluZm8gZnJvbSByaHMgb2YgcnVsZXMgYW5kIGluaXRpYWwgc3RhdGVcIjtcbiAgICAgICAgICAgICAgXCJIaWdoXCIsIFwiT25seSBjb25zaWRlciByZWFjaGFibGUgcnVsZXNcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy5jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCApLFxuICAgICAgICBcIlR1bmUgdGhlIGFjY3VyYWN5IGxldmVsIG9mIHRoZSBjb250YWN0IG1hcFwiLFxuICAgICAgICBbIGNvbnRhY3RfbWFwLCA2IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tcG9seW1lci1kZXRlY3Rpb24tYWNjdXJhY3ktbGV2ZWxcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiTG93XCIsIFwiYmFzZWQgb25seSBvbiB0aGUgY29udGFjdCBtYXBcIjtcbiAgICAgICAgICAgICAgXCJIaWdoXCIsIFwidXNlIHJlYWNoYWJpbGl0eSBhbmFseXNpcyBhcyB3ZWxsXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcuc2NjX2FjY3VyYWN5X2xldmVsICksXG4gICAgICAgIFwiVHVuZSB0aGUgYWNjdXJhY3kgbGV2ZWwgb2YgdGhlIGRldGVjdGlvbiBvZiBwb2x5bWVyc1wiLFxuICAgICAgICBbIGNvbnRhY3RfbWFwLCA3IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tcHVyZS1jb250YWN0XCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnB1cmVfY29udGFjdCxcbiAgICAgICAgXCJzaG93IGluIHRoZSBjb250YWN0IG1hcCAgb25seSB0aGUgc2l0ZXMgd2l0aCBhIGJpbmRpbmcgc3RhdGVcIixcbiAgICAgICAgWyBjb250YWN0X21hcCwgOCBdLFxuICAgICAgICBFeHBlcnQgKTtcbiAgICAgICgqIElORkxVRU5DRSBNQVAgKilcbiAgICAgICggXCItLW91dHB1dC1pbmZsdWVuY2UtbWFwLWRpcmVjdG9yeVwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLm91dHB1dF9pbV9kaXJlY3RvcnksXG4gICAgICAgIFwicHV0IHRoZSBpbmZsdWVuY2UgbWFwIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnlcIixcbiAgICAgICAgWyBvdXRwdXQsIDM7IGluZmx1ZW5jZV9tYXAsIDIgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1vdXRwdXQtaW5mbHVlbmNlLW1hcFwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLmluZmx1ZW5jZV9tYXBfZmlsZSxcbiAgICAgICAgXCJmaWxlIG5hbWUgZm9yIHRoZSBpbmZsdWVuY2UgbWFwXCIsXG4gICAgICAgIFsgb3V0cHV0LCAzOyBpbmZsdWVuY2VfbWFwLCAzIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0taW5mbHVlbmNlLW1hcC1mb3JtYXRcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbIFwiRE9UXCIsIFwiZG90IGZvcm1hdFwiOyBcIkRJTVwiLCBcIkRJTSBmb3JtYXRcIjsgXCJIVE1MXCIsIFwiSFRNTCBmb3JtYXRcIiBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcuaW5mbHVlbmNlX21hcF9mb3JtYXQgKSxcbiAgICAgICAgXCJUdW5lIHRoZSBvdXRwdXQgZm9ybWF0IGZvciB0aGUgaW5mbHVlbmNlIG1hcFwiLFxuICAgICAgICBbIG91dHB1dCwgNDsgaW5mbHVlbmNlX21hcCwgNCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICgqIExPQ0FMIFRSQUNFUyAqKVxuICAgICAgKCBcIi0tb3V0cHV0LWxvY2FsLXRyYWNlcy1kaXJlY3RvcnlcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5vdXRwdXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5LFxuICAgICAgICBcInB1dCB0aGUgZmlsZXMgYWJvdXQgbG9jYWwgdHJhY2VzIGluIHRoaXMgZGlyZWN0b3J5XCIsXG4gICAgICAgIFsgb3V0cHV0LCA1OyB0cmFjZXMsIDcgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1sb2NhbC10cmFjZXMtZm9ybWF0XCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggWyBcIkRPVFwiLCBcImRvdCBmb3JtYXRcIjsgXCJIVE1MXCIsIFwiSFRNTCBmb3JtYXRcIiBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcubG9jYWxfdHJhY2VfZm9ybWF0ICksXG4gICAgICAgIFwiVHVuZSB0aGUgb3V0cHV0IGZvcm1hdCBmb3IgdGhlIGxvY2FsIHRyYW5zaXRpb24gc3lzdGVtc1wiLFxuICAgICAgICBbIG91dHB1dCwgNjsgdHJhY2VzLCA4IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCogTE9HICopXG4gICAgICAoIFwiLS1vdXRwdXQtbG9nLWRpcmVjdG9yeVwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLm91dHB1dF9kaXJlY3RvcnksXG4gICAgICAgIFwicHV0IHRoZSBsb2cgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnlcIixcbiAgICAgICAgWyBvdXRwdXQsIDc7IGRlYnVnLCAwIF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tZGVidWdcIixcbiAgICAgICAgQm9vbCBDb25maWcudHJhY2UsXG4gICAgICAgIFwiZHVtcCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb25cIixcbiAgICAgICAgWyBkZWJ1ZywgMSBdLFxuICAgICAgICBFeHBlcnQgKTtcbiAgICAgICggXCItLWRlYnVnLW1vZGVcIixcbiAgICAgICAgQm9vbCBDb25maWcudHJhY2UsXG4gICAgICAgIFwiZHVtcCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb25cIixcbiAgICAgICAgWyBkZWJ1ZywgMiBdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWRlYnVnZ2luZy1tb2RlXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnRyYWNlLFxuICAgICAgICBcImR1bXAgZGVidWdnaW5nIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIFsgZGVidWcsIDMgXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS11bnNhZmUtbW9kZVwiLFxuICAgICAgICBCb29sIENvbmZpZy51bnNhZmUsXG4gICAgICAgIFwiZXhjZXB0aW9ucyBhcmUgZ2F0aGVyZWQgYXQgdGhlIGVuZCBvZiB0aGUgY29tcHV0YXRpb24sIGluc3RlYWQgb2YgXFxcbiAgICAgICAgIGhhbHRpbmcgaXQgXCIsXG4gICAgICAgIFsgZGVidWcsIDQgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1wcmludC1lZmZpY2llbmN5XCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnByaW50X2VmZmljaWVuY3ksXG4gICAgICAgIFwicHJvbXB0IENQVSB0aW1lIGFuZCB2YXJpb3VzIGRhdGFzXCIsXG4gICAgICAgIFsgZGVidWcsIDUgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1ydWxlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXMsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIHJ1bGVzXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtbmJyLWNvbnN0cmFpbnRzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmJhY2tkb29yX25icl9vZl9jb25zdHJhaW50cyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2YgcmVmaW5lbWVudCBjb25zdHJhaW50c1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1uci1jb25zdHJhaW50c1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHMsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIG5vbiByZWxhdGlvbmFsIHJlZmluZW1lbnQgY29uc3RyYWludHNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItaW5mbHVlbmNlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2YgaW5mbHVlbmNlIHJlbGF0aW9uc1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1kZWFkLXJ1bGVzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzLFxuICAgICAgICBcImR1bXAgdGhlIG51bWJlciBvZiBkZWFkIHJ1bGVzXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtbmJyLW5vbi13ZWFrbHktcmV2ZXJzaWJsZS10cmFuc2l0aW9uc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zLFxuICAgICAgICBcImR1bXAgdGhlIG51bWJlciBvZiBub24gd2Vha2x5IHJldmVyc2libGUgdHJhbnNpdGlvbnNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItb2YtcnVsZXMtd2l0aC1ub24td2Vha2x5LXJldmVyc2libGUtdHJhbnNpdGlvbnNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zLFxuICAgICAgICBcImR1bXAgdGhlIG51bWJlciBvZiBydWxlcyB3aXRoIG5vbiB3ZWFrbHkgcmV2ZXJzaWJsZSB0cmFuc2l0aW9uc1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1zY2NcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX3NjYyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2Ygc3Ryb25nbHkgY29ubmVjdGVkIGNvbXBvbmVudHNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1hdmVyYWdlLXNjY1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjLFxuICAgICAgICBcImR1bXAgdGhlIGF2ZXJhZ2Ugc2l6ZSBvZiBzdHJvbmdseSBjb25uZWN0ZWQgY29tcG9uZW50c1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLXRpbWluZ1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl90aW1pbmcsXG4gICAgICAgIFwiZHVtcCBDUFUgdGltZVwiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1maWxlXCIsXG4gICAgICAgIFN0cmluZyBDb25maWcuYmFja2Rvb3JfZmlsZSxcbiAgICAgICAgXCJzZWxlY3QgdGhlIGZpbGUgdG8gZHVtcCBiYWNrZG9vciBpbmZvcm1hdGlvblwiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kaXJlY3RvcnlcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5iYWNrZG9vcl9kaXJlY3RvcnksXG4gICAgICAgIFwic2VsZWN0IHRoZSBkaXJlY3RvcnkgZm9yIHRoZSBmaWxlIHRvIGR1bXAgYmFja2Rvb3IgaW5mb3JtYXRpb25cIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgIF1cblxubGV0IGdldF9vcHRpb24gZXJyb3IgPVxuICBsZXQgdGl0bGUgPSBWZXJzaW9uLnZlcnNpb25fa2FzYV9mdWxsX25hbWUgaW5cbiAgbGV0ICgpID0gU3VwZXJhcmdUay5wYXJzZSB+dGl0bGUgb3B0aW9ucyBGaWxlTmFtZXMuaW5wdXQgaW5cbiAgbGV0IHBhcmFtZXRlcnMgPVxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3BhcmFtZXRlcnMgfmNhbGxlZF9mcm9tOlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthU2FcbiAgICAgICgpXG4gIGluXG4gIGVycm9yLCBwYXJhbWV0ZXJzLCAhRmlsZU5hbWVzLmlucHV0XG4iLCIoKipcbiAqIGV4Y2VwdGlvbi5tbFxuICogb3BlbmthcHBhXG4gKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAqXG4gKiBDcmVhdGlvbjogMDgvMDMvMjAxMFxuICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxBdWcgMTUgMjAxNj5cbiAqICpcbiAqIFRoaXMgbGlicmFyeSBkZWNsYXJlcyBleGNlcHRpb25zXG4gKlxuICogQ29weXJpZ2h0IDIwMTAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgbWV0aG9kX2hhbmRsZXIgPSBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIubWV0aG9kX2hhbmRsZXJcblxubGV0IGVtcHR5X2Vycm9yX2hhbmRsZXIgPSBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZW1wdHlfZXJyb3JfaGFuZGxlclxubGV0IGlzX2VtcHR5X2Vycm9yX2hhbmRsZXIgPSBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuaXNfZW1wdHlfZXJyb3JfaGFuZGxlclxuXG5sZXQgc2FmZV93YXJuIHBhcmFtZXRlcnMgX2Vycm9yX2hhbmRsZXIgZmlsZV9uYW1lIG1lc3NhZ2UgZXhuIF9kZWZhdWx0ID1cbiAgbGV0IHVuY2F1Z2h0ID1cbiAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uID9maWxlX25hbWUgP21lc3NhZ2UgZXhuXG4gIGluXG4gIGxldCBzdHJpbmdsaXN0ID1cbiAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuc3RyaW5nbGlzdF9vZl91bmNhdWdodCB1bmNhdWdodFxuICAgICAgWyBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXggcGFyYW1ldGVycyBdXG4gIGluXG4gIGxldCBfID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChMb2dnZXJzLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSBcIiVzXCIpXG4gICAgICBzdHJpbmdsaXN0XG4gIGluXG4gIGxldCBfID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgaW5cbiAgcmFpc2UgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5VbmNhdWdodF9leGNlcHRpb24gdW5jYXVnaHQpXG5cbmxldCB1bnNhZmVfd2FybiBfcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSBmaWxlX25hbWUgbWVzc2FnZSBleG4gZGVmYXVsdCA9XG4gIGxldCB1bmNhdWdodCA9XG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvbiA/ZmlsZV9uYW1lID9tZXNzYWdlIGV4blxuICBpblxuICAoIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5hZGRfdW5jYXVnaHRfZXJyb3IgdW5jYXVnaHQgP3RvX3VpIGVycm9yX2hhbmRsZXIsXG4gICAgZGVmYXVsdCAoKSApXG5cbmxldCB3YXJuX2F1eCBwYXJhbWV0ZXJzIGVycm9yX2hhbmRsZXIgP3RvX3VpIGZpbGUgbWVzc2FnZSBleG4gZGVmYXVsdCA9XG4gIGxldCBlcnJvciwgZGZ0ID1cbiAgICBpZiBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF91bnNhZmUgcGFyYW1ldGVycyB0aGVuXG4gICAgICB1bnNhZmVfd2FybiBwYXJhbWV0ZXJzIGVycm9yX2hhbmRsZXIgP3RvX3VpIGZpbGUgbWVzc2FnZSBleG4gZGVmYXVsdFxuICAgIGVsc2VcbiAgICAgIHNhZmVfd2FybiBwYXJhbWV0ZXJzIGVycm9yX2hhbmRsZXIgZmlsZSBtZXNzYWdlIGV4biBkZWZhdWx0XG4gIGluXG4gIGxldCAoKSA9IFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9lcnJvcl9saXN0IHBhcmFtZXRlcnMgZXJyb3IgaW5cbiAgZXJyb3IsIGRmdFxuXG5sZXQgd2Fybl93aXRoX2V4biBwYXJhbWV0ZXJzIGVycm9yX2hhbmRsZXIgP3RvX3VpIChmaWxlLCBsaW5lLCBfLCBfKVxuICAgID8obWVzc2FnZSA9IFwiXCIpID8ocG9zID0gTm9uZSkgZXhuIGRlZmF1bHQgPVxuICBsZXQgbGlhaXNvbiA9XG4gICAgaWYgbWVzc2FnZSA9IFwiXCIgJiYgcG9zID0gTm9uZSB0aGVuXG4gICAgICBcIlwiXG4gICAgZWxzZVxuICAgICAgXCI6IFwiXG4gIGluXG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgcyAtPiBcIiwgXCIgXiBMb2MudG9fc3RyaW5nIHNcbiAgaW5cbiAgd2Fybl9hdXggcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSAoU29tZSBmaWxlKVxuICAgIChTb21lIChcImxpbmUgXCIgXiBzdHJpbmdfb2ZfaW50IGxpbmUgXiBwb3MgXiBsaWFpc29uIF4gbWVzc2FnZSkpXG4gICAgZXhuIGRlZmF1bHRcblxubGV0IHdhcm4gcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSBmaWxlX2xpbmUgPyhtZXNzYWdlID0gXCJcIikgP3BvcyBleG5cbiAgICBkZWZhdWx0ID1cbiAgd2Fybl93aXRoX2V4biBwYXJhbWV0ZXJzIGVycm9yX2hhbmRsZXIgP3RvX3VpIGZpbGVfbGluZSB+bWVzc2FnZSB+cG9zIGV4blxuICAgIChmdW4gKCkgLT4gZGVmYXVsdClcblxubGV0IHByaW50X2Zvcl9LYVNpbSBwYXJhbWV0ZXJzIGhhbmRsZXJzID1cbiAgbGV0IHBhcmFtZXRlcnMgPSBSZW1hbmVudF9wYXJhbWV0ZXJzLnVwZGF0ZV9wcmVmaXggcGFyYW1ldGVycyBcImVycm9yOiBcIiBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIGNhdWdodCAtPlxuICAgICAgICBsZXQgc3RyaW5nbGlzdCA9XG4gICAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnNcbiAgICAgICAgICA6OiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuc3RyaW5nbGlzdF9vZl9jYXVnaHQgY2F1Z2h0IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBfID1cbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChMb2dnZXJzLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSBcIiVzXCIpXG4gICAgICAgICAgICBzdHJpbmdsaXN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBfID1cbiAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICBpblxuICAgICAgICAoKSlcbiAgICAgIChMaXN0LnJldlxuICAgICAgICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzKSlcbiAgaW5cbiAgbGV0IF8gPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biB1bmNhdWdodCAtPlxuICAgICAgICBsZXQgc3RyaW5nbGlzdCA9XG4gICAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnNcbiAgICAgICAgICA6OiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuc3RyaW5nbGlzdF9vZl91bmNhdWdodCB1bmNhdWdodCBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCIlc1wiKVxuICAgICAgICAgICAgc3RyaW5nbGlzdFxuICAgICAgICBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgaW5cbiAgICAgICAgKCkpXG4gICAgICAoTGlzdC5yZXZcbiAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzKSlcbiAgaW5cbiAgKClcblxubGV0IHByaW50IHBhcmFtZXRlcnMgaGFuZGxlcnMgPVxuICBpZlxuICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzID0gW11cbiAgICAmJiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzID0gW11cbiAgdGhlbiAoXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgIFwiJXNleGVjdXRpb24gZmluaXNoZWQgd2l0aG91dCBhbnkgZXhjZXB0aW9uXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgaW5cbiAgICAoKVxuICApIGVsc2UgKFxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICBcIiVzU29tZSBleGNlcHRpb25zIGhhdmUgYmVlbiByYWlzZWRcIlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnMpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICBpblxuICAgIHByaW50X2Zvcl9LYVNpbSBwYXJhbWV0ZXJzIGhhbmRsZXJzXG4gIClcblxubGV0IHByaW50X2Vycm9yc19saWdodF9mb3Jfa2FzaW0gcGFyYW1ldGVycyBoYW5kbGVycyA9XG4gIGlmXG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3QgaGFuZGxlcnMgPSBbXVxuICAgICYmIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3QgaGFuZGxlcnMgPSBbXVxuICB0aGVuXG4gICAgKClcbiAgZWxzZSAoXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgIFwiJXNTb21lIGV4Y2VwdGlvbnMgaGF2ZSBiZWVuIHJhaXNlZCBkdXJpbmcgdGhlIHN0YXRpYyBhbmFseXNpcywgcGxlYXNlIFxcXG4gICAgICAgICBhbmFseXNlIHlvdXIgZmlsZSB3aXRoIEthU2FcIlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnMpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICBpblxuICAgICgpXG4gIClcblxubGV0IHdyYXAgcGFyYW1ldGVycyBlcnJvciBzdHJpbmcgc3RyaW5nX29wdCBleG4gPVxuICBmc3QgKHdhcm5fYXV4IHBhcmFtZXRlcnMgZXJyb3IgKFNvbWUgc3RyaW5nKSBzdHJpbmdfb3B0IGV4biAoZnVuICgpIC0+ICgpKSlcblxubGV0IF9saWZ0X2Vycm9yX2xvZ3NfZm9yX0thU2EgZiA9XG4gIGYgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIHN0cmluZyBzdHJpbmdfb3B0IGV4biAtPlxuICAgICAgZnN0XG4gICAgICAgICh3YXJuX2F1eCBwYXJhbWV0ZXJzIGVycm9yIChTb21lIHN0cmluZykgc3RyaW5nX29wdCBleG4gKGZ1biAoKSAtPiAoKSkpKVxuXG5sZXQgY2hlY2tfcG9pbnRcbiAgICAod2FybiA6XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgICBtZXRob2RfaGFuZGxlciAtPlxuICAgICAgP3RvX3VpOmJvb2wgLT5cbiAgICAgICdhIC0+XG4gICAgICA/bWVzc2FnZTpzdHJpbmcgLT5cbiAgICAgID9wb3M6TG9jLnQgLT5cbiAgICAgIGV4biAtPlxuICAgICAgdW5pdCAtPlxuICAgICAgbWV0aG9kX2hhbmRsZXIgKiB1bml0KSBwYXJhbWV0ZXIgZXJyb3IgZXJyb3InIHMgP3RvX3VpID9tZXNzYWdlID9wb3MgZXhuID1cbiAgaWYgZXJyb3IgPT0gZXJyb3InIHRoZW5cbiAgICBlcnJvclxuICBlbHNlIChcbiAgICBsZXQgZXJyb3IsICgpID0gd2FybiBwYXJhbWV0ZXIgZXJyb3InID90b191aSBzID9tZXNzYWdlID9wb3MgZXhuICgpIGluXG4gICAgZXJyb3JcbiAgKVxuIiwiKCoqIFRpbWUtc3RhbXA6IDxKdWwgMDIgMjAxNj4gKilcblxubGV0IGZvcl9LYVNpbSBmID0gZiAoZnVuIF8gXyBfIF8gXyAtPiAoKSkgKCkgKClcbmxldCBsaWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBmIGEgYiA9IHNuZCAoZm9yX0thU2ltIGYgYSBiKVxuXG5sZXQgbGlmdF9nZW5lcmljX2JpbmFyeV9iaW5hcnlfZm9yX0thU2ltIGYgYSBiID1cbiAgbGV0IF8sIGIsIGMgPSBmb3JfS2FTaW0gZiBhIGIgaW5cbiAgYiwgY1xuXG5sZXQgbGlmdF9nZW5lcmljX3Rlcm5hcnlfZm9yX0thU2ltIGYgYSBiIGMgPSBzbmQgKGZvcl9LYVNpbSBmIGEgYiBjKVxuXG5sZXQgbGlmdF9nZW5fdW5hcnkgZHVtcCBmIGEgPVxuICBsZXQgcGFyYW1ldGVycyA9XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVycy5kdW1teV9wYXJhbWV0ZXJzXG4gICAgICB+Y2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTYSAoKVxuICBpblxuICBsZXQgZXJyb3IgPSBFeGNlcHRpb24uZW1wdHlfZXJyb3JfaGFuZGxlciBpblxuICBsZXQgZXJyb3IsIG91dHB1dCA9IGYgcGFyYW1ldGVycyBlcnJvciBhIGluXG4gIGxldCBfID0gZHVtcCBwYXJhbWV0ZXJzIGVycm9yIGluXG4gIG91dHB1dFxuXG5sZXQgbGlmdF9nZW5fYmluYXJ5IGR1bXAgZiBhIGIgPVxuICBsZXQgcGFyYW1ldGVycyA9XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVycy5kdW1teV9wYXJhbWV0ZXJzXG4gICAgICB+Y2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTYSAoKVxuICBpblxuICBsZXQgZXJyb3IgPSBFeGNlcHRpb24uZW1wdHlfZXJyb3JfaGFuZGxlciBpblxuICBsZXQgZXJyb3IsIG91dHB1dCA9IGYgcGFyYW1ldGVycyBlcnJvciBhIGIgaW5cbiAgbGV0IF8gPSBkdW1wIHBhcmFtZXRlcnMgZXJyb3IgaW5cbiAgb3V0cHV0XG5cbmxldCBsaWZ0X2dlbl90ZXJuYXJ5IGR1bXAgZiBhIGIgYyA9XG4gIGxldCBwYXJhbWV0ZXJzID1cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmR1bW15X3BhcmFtZXRlcnNcbiAgICAgIH5jYWxsZWRfZnJvbTpSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNhICgpXG4gIGluXG4gIGxldCBlcnJvciA9IEV4Y2VwdGlvbi5lbXB0eV9lcnJvcl9oYW5kbGVyIGluXG4gIGxldCBlcnJvciwgb3V0cHV0ID0gZiBwYXJhbWV0ZXJzIGVycm9yIGEgYiBjIGluXG4gIGxldCBfID0gZHVtcCBwYXJhbWV0ZXJzIGVycm9yIGluXG4gIG91dHB1dFxuXG5sZXQgbGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ191bmFyeSBmIGEgPSBsaWZ0X2dlbl91bmFyeSBFeGNlcHRpb24ucHJpbnQgZiBhXG5cbmxldCBsaWZ0X3dpdGhfb25fdGhlX2ZseV9sb2dnaW5nX2JpbmFyeSBmIGEgYiA9XG4gIGxpZnRfZ2VuX2JpbmFyeSBFeGNlcHRpb24ucHJpbnQgZiBhIGJcblxubGV0IGxpZnRfd2l0aF9vbl90aGVfZmx5X2xvZ2dpbmdfdGVybmFyeSBmIGEgYiBjID1cbiAgbGlmdF9nZW5fYmluYXJ5IEV4Y2VwdGlvbi5wcmludCBmIGEgYiBjXG5cbmxldCBsaWZ0X3dpdGhvdXRfbG9nZ2luZ191bmFyeSBmIGEgPSBsaWZ0X2dlbl91bmFyeSAoZnVuIF8gXyAtPiAoKSkgZiBhXG5sZXQgbGlmdF93aXRob3V0X2xvZ2dpbmdfYmluYXJ5IGYgYSBiID0gbGlmdF9nZW5fYmluYXJ5IChmdW4gXyBfIF8gLT4gKCkpIGYgYSBiXG5cbmxldCBsaWZ0X3dpdGhvdXRfbG9nZ2luZ190ZXJuYXJ5IGYgYSBiIGMgPVxuICBsaWZ0X2dlbl90ZXJuYXJ5IChmdW4gXyBfIF8gXyAtPiAoKSkgZiBhIGIgY1xuIiwiKCoqXG4gICogc3RvcnlQcm9maWxpbmcubWxcbiAgKlxuICAqIEdlbmVyYXRlIHByb2ZpbGluZyBpbmZvcm1hdGlvbiBmb3Igc3RvcmllcyBpbiBLYVNpbVxuICAqXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGVkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDA5LzA0LzIwMTJcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMTUvMDYvMjAxMlxuICAqICpcbiAgKiBTb21lIHBhcmFtZXRlcnMgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBzdGVwX2tpbmQgPVxuICB8IER1bW15XG4gIHwgQmVnaW5uaW5nXG4gIHwgQ29sbGVjdF90cmFjZXNcbiAgfCBDYXVzYWxfY29tcHJlc3Npb25cbiAgfCBXZWFrX2NvbXByZXNzaW9uXG4gIHwgU3Ryb25nX2NvbXByZXNzaW9uXG4gIHwgSXRlcmF0aW9uIG9mIGludFxuICB8IFN0b3J5IG9mIGludFxuICB8IFBhcnRpYWxfb3JkZXJfcmVkdWN0aW9uXG4gIHwgU2lwaG9uX2RldGVjdGlvblxuICB8IERlY29tcG9zZV9pbml0aWFsX3N0YXRlXG4gIHwgQWdlbnRfaWRzX2Rpc2FtYmlndWF0aW9uXG4gIHwgUHNldWRvX2ludmVyc2VfZGVsZXRpb25cbiAgfCBSZW1vdmVfZXZlbnRzX2FmdGVyX2xhc3Rfb2JzZXJ2YWJsZVxuICB8IENvbXByZXNzaW9uXG4gIHwgQnVpbGRfZ3JpZFxuICB8IEJ1aWxkX2NvbmZpZ3VyYXRpb25cbiAgfCBUcmFuc2l0aXZlX2Nsb3N1cmVcbiAgfCBHcmFwaF9yZWR1Y3Rpb25cbiAgfCBHcmFwaF9jb252ZXJzaW9uXG4gIHwgQ2Fubm9uaWNfZm9ybV9jb21wdXRhdGlvblxuICB8IFN0b3JlX3RyYWNlXG4gIHwgUmVtb3ZpbmdfYmxhY2tsaXN0ZWRfZXZlbnRzXG4gIHwgQmxhY2tsaXN0aW5nX2V2ZW50c1xuICB8IEdsb2JhbF9pbml0aWFsaXphdGlvblxuICB8IERvbWFpbnNfaW5pdGlhbGl6YXRpb25cbiAgfCBEb21haW5faW5pdGlhbGl6YXRpb24gb2Ygc3RyaW5nXG4gIHwgQXBwbHlfcnVsZSBvZiBpbnRcbiAgfCBJbml0aWFsX3N0YXRlIG9mIGludFxuICB8IFNjYW5fcnVsZV9zdGF0aWMgb2YgaW50XG4gIHwgU2Nhbl9ydWxlX2R5bmFtaWMgb2YgaW50XG4gIHwgUmVndWxhcl9pbmZsdWVuY2VzXG4gIHwgU2lkZV9lZmZlY3RzX2luZmx1ZW5jZXNcbiAgfCBNZXJnZV9pbmZsdWVuY2VzXG4gIHwgS2FTaW1fY29tcGlsYXRpb25cbiAgfCBLYVNhX3ByZWNvbXBpbGF0aW9uXG4gIHwgS2FTYV9sZXhpbmdcbiAgfCBLYVNhX2xpbmtpbmdcbiAgfCBJbmZsdWVuY2VfbWFwIG9mIHN0cmluZ1xuICB8IEludGVybmFsX2luZmx1ZW5jZV9tYXAgb2Ygc3RyaW5nXG4gIHwgTEthcHBhX3NpZ25hdHVyZVxuXG5sZXQgc3RyaW5nX29mX3N0ZXBfa2luZCB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgRHVtbXkgfCBCZWdpbm5pbmcgLT4gXCJcIlxuICB8IEJ1aWxkX2NvbmZpZ3VyYXRpb24gLT4gXCJCdWlsZCBjb25maWd1cmF0aW9uXCJcbiAgfCBDb2xsZWN0X3RyYWNlcyAtPiBcIkNvbGxlY3QgdHJhY2VzXCJcbiAgfCBDYXVzYWxfY29tcHJlc3Npb24gLT4gXCJDYXVzYWwgY29tcHJlc3Npb25cIlxuICB8IFdlYWtfY29tcHJlc3Npb24gLT4gXCJXZWFrIGNvbXByZXNzaW9uXCJcbiAgfCBTdHJvbmdfY29tcHJlc3Npb24gLT4gXCJTdHJvbmcgY29tcHJlc3Npb25cIlxuICB8IEl0ZXJhdGlvbiBpbnQgLT4gUHJpbnRmLnNwcmludGYgXCJJdGVyYXRpb24gJWlcIiBpbnRcbiAgfCBTdG9yeSBpbnQgLT4gUHJpbnRmLnNwcmludGYgXCJTdG9yeSAlaVwiIGludFxuICB8IFBhcnRpYWxfb3JkZXJfcmVkdWN0aW9uIC0+IFwiUGFydGlhbCBvcmRlciByZWR1Y3Rpb25cIlxuICB8IFNpcGhvbl9kZXRlY3Rpb24gLT4gXCJEZXRlY3Rpb24gb2Ygc2lwaG9uc1wiXG4gIHwgRGVjb21wb3NlX2luaXRpYWxfc3RhdGUgLT4gXCJTcGxpdHRpbmcgaW5pdGlhbCBzdGF0ZXNcIlxuICB8IEFnZW50X2lkc19kaXNhbWJpZ3VhdGlvbiAtPiBcIlJlbmFtaW5nIGFnZW50cyB0byBhdm9pZCBjb25mbGljdHNcIlxuICB8IFBzZXVkb19pbnZlcnNlX2RlbGV0aW9uIC0+IFwiRGVsZXRpb24gb2YgcHNldWRvIGludmVyc2UgZXZlbnRzXCJcbiAgfCBSZW1vdmVfZXZlbnRzX2FmdGVyX2xhc3Rfb2JzZXJ2YWJsZSAtPlxuICAgIFwiUmVtb3ZpbmcgZXZlbnRzIGFmdGVyIHRoZSBsYXN0IG9ic2VydmFibGVzXCJcbiAgfCBDb21wcmVzc2lvbiAtPiBcIkNvbXByZXNzaW9uXCJcbiAgfCBUcmFuc2l0aXZlX2Nsb3N1cmUgLT4gXCJUcmFuc2l0aXZlIGNsb3N1cmVcIlxuICB8IEJ1aWxkX2dyaWQgLT4gXCJHcmlkIGNvbXB1dGF0aW9uXCJcbiAgfCBHcmFwaF9yZWR1Y3Rpb24gLT4gXCJUcmFuc2l0aXZlIHJlZHVjdGlvblwiXG4gIHwgR3JhcGhfY29udmVyc2lvbiAtPiBcIkdyYXBoIGNvbnZlcnNpb25cIlxuICB8IENhbm5vbmljX2Zvcm1fY29tcHV0YXRpb24gLT4gXCJDb21wdXRpbmcgdGhlIGNhbm5vbmljIGZvcm1cIlxuICB8IFN0b3JlX3RyYWNlIC0+IFwiU3RvcmUgdHJhY2VcIlxuICB8IFJlbW92aW5nX2JsYWNrbGlzdGVkX2V2ZW50cyAtPiBcIlJlbW92aW5nIGJsYWNrLWxpc3RlZCBldmVudHNcIlxuICB8IEJsYWNrbGlzdGluZ19ldmVudHMgLT4gXCJCbGFrbGlzdGluZyBldmVudHNcIlxuICB8IEdsb2JhbF9pbml0aWFsaXphdGlvbiAtPiBcIkdsb2JhbCBpbml0aWFsaXphdGlvblwiXG4gIHwgRG9tYWluc19pbml0aWFsaXphdGlvbiAtPiBcIkRvbWFpbnMgaW5pdGlhbGl6YXRpb25cIlxuICB8IERvbWFpbl9pbml0aWFsaXphdGlvbiBzdHJpbmcgLT5cbiAgICBQcmludGYuc3ByaW50ZiBcIkRvbWFpbiBpbml0aWFsaXphdGlvbiAoJXMpXCIgc3RyaW5nXG4gIHwgQXBwbHlfcnVsZSBpbnQgLT4gUHJpbnRmLnNwcmludGYgXCJBcHBseSBydWxlICVpXCIgaW50XG4gIHwgSW5pdGlhbF9zdGF0ZSBpbnQgLT4gUHJpbnRmLnNwcmludGYgXCJJbml0aWFsIHN0YXRlICVpXCIgaW50XG4gIHwgU2Nhbl9ydWxlX3N0YXRpYyBpbnQgLT4gUHJpbnRmLnNwcmludGYgXCJTY2FuIHJ1bGUgJWkgKHN0YXRpYylcIiBpbnRcbiAgfCBTY2FuX3J1bGVfZHluYW1pYyBpbnQgLT4gUHJpbnRmLnNwcmludGYgXCJTY2FuIHJ1bGUgJWkgKGR5bmFtaWMpXCIgaW50XG4gIHwgUmVndWxhcl9pbmZsdWVuY2VzIC0+IFByaW50Zi5zcHJpbnRmIFwiUmVndWxhciBpbmZsdWVuY2VzIGNvbXB1dGF0aW9uXCJcbiAgfCBTaWRlX2VmZmVjdHNfaW5mbHVlbmNlcyAtPlxuICAgIFByaW50Zi5zcHJpbnRmIFwiU2lkZS1lZmZlY3RzIGluZmx1ZW5jZXMgY29tcHV0YXRpb25cIlxuICB8IE1lcmdlX2luZmx1ZW5jZXMgLT4gUHJpbnRmLnNwcmludGYgXCJNZXJnaW5nIGluZmx1ZW5jZXNcIlxuICB8IEthU2ltX2NvbXBpbGF0aW9uIC0+IFByaW50Zi5zcHJpbnRmIFwiS2FTaW0gZnJvbnRlbmRcIlxuICB8IEthU2FfcHJlY29tcGlsYXRpb24gLT4gUHJpbnRmLnNwcmludGYgXCJLYVNhIHByZWNvbXBpbGF0aW9uXCJcbiAgfCBLYVNhX2xleGluZyAtPiBQcmludGYuc3ByaW50ZiBcIkthU2EgTGV4aW5nXCJcbiAgfCBLYVNhX2xpbmtpbmcgLT4gUHJpbnRmLnNwcmludGYgXCJLYVNhIExpbmtpbmdcIlxuICB8IEluZmx1ZW5jZV9tYXAgc3RyaW5nIC0+IFByaW50Zi5zcHJpbnRmIFwiSW5mbHVlbmNlIG1hcCAoJXMpXCIgc3RyaW5nXG4gIHwgSW50ZXJuYWxfaW5mbHVlbmNlX21hcCBzdHJpbmcgLT5cbiAgICBQcmludGYuc3ByaW50ZiBcIkluZmx1ZW5jZSBtYXAgKGludGVybmFsICVzKVwiIHN0cmluZ1xuICB8IExLYXBwYV9zaWduYXR1cmUgLT4gUHJpbnRmLnNwcmludGYgXCJMS2FwcGEgc2lnbmF0dXJlXCJcblxubGV0IHByaW50X3N0ZXBfa2luZCBwYXJhbWV0ZXJzIHggPVxuICBMb2dnZXJzLnByaW50X2NlbGxcbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVycylcbiAgICAoc3RyaW5nX29mX3N0ZXBfa2luZCB4KVxuXG5tb2R1bGUgdHlwZSBTdG9yeVN0YXRzID0gc2lnXG4gIHR5cGUgbG9nX2luZm9cblxuICB2YWwgaW5jX3JlbW92ZWRfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19zZWxlY3RlZF9ldmVudHMgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgbG9nX2luZm9fdG9fanNvbiA6IGxvZ19pbmZvIC0+IFlvanNvbi5CYXNpYy50XG4gIHZhbCBsb2dfaW5mb19vZl9qc29uIDogWW9qc29uLkJhc2ljLnQgLT4gbG9nX2luZm9cbiAgdmFsIGluY19jdXRfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19rX2N1dF9ldmVudHMgOiBpbnQgLT4gbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHJlc2V0X2N1dF9ldmVudHMgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgaW5jX25fa2FzaW1fZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19uX2luaXRfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19uX3NpZGVfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19uX29ic19ldmVudHMgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgaW5jX2JyYW5jaCA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfY3V0IDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHJlc2V0X2xvZyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBkdW1wX2NvbXBsZXRlX2xvZyA6IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT4gbG9nX2luZm8gLT4gdW5pdFxuICB2YWwgZHVtcF9zaG9ydF9sb2cgOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+IGxvZ19pbmZvIC0+IHVuaXRcbiAgdmFsIGFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBhZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBhZGRfbG9va191cF9jYXNlIDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBhZGRfbG9va19kb3duX2Nhc2UgOiBpbnQgLT4gbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGNvcHkgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgaXNfZHVtbXkgOiBzdGVwX2tpbmQgLT4gYm9vbFxuXG4gIHZhbCBhZGRfZXZlbnQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBzdGVwX2tpbmQgLT5cbiAgICAodW5pdCAtPiBpbnQpIG9wdGlvbiAtPlxuICAgIGxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogbG9nX2luZm9cblxuICB2YWwgY2xvc2VfZXZlbnQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBzdGVwX2tpbmQgLT5cbiAgICAodW5pdCAtPiBpbnQpIG9wdGlvbiAtPlxuICAgIGxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogbG9nX2luZm9cblxuICB2YWwgYWRkX2V2ZW50X29wdCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHN0ZXBfa2luZCBvcHRpb24gLT5cbiAgICAodW5pdCAtPiBpbnQpIG9wdGlvbiAtPlxuICAgIGxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogbG9nX2luZm9cblxuICB2YWwgY2xvc2VfZXZlbnRfb3B0IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgc3RlcF9raW5kIG9wdGlvbiAtPlxuICAgICh1bml0IC0+IGludCkgb3B0aW9uIC0+XG4gICAgbG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBsb2dfaW5mb1xuXG4gIHZhbCBzZXRfdGltZSA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBzZXRfc3RlcF90aW1lIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9nbG9iYWxfY3V0IDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBzZXRfcHNldWRvX2ludiA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X3N0YXJ0X2NvbXByZXNzaW9uIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9ncmlkX2dlbmVyYXRpb24gOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X2Nhbm9uaWNhbGlzYXRpb24gOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X2NvbmN1cnJlbnRfZXZlbnRfZGV0ZWN0aW9uX3RpbWUgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X2NvbmN1cnJlbnRfZXZlbnRfZGVsZXRpb25fdGltZSA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBzZXRfc3RvcnlfcmVzZWFyY2hfdGltZSA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBlbGxhcHNlZF9nbG9iYWxfdGltZSA6IGxvZ19pbmZvIC0+IGZsb2F0XG4gIHZhbCBlbGxhcHNlZF90aW1lIDogbG9nX2luZm8gLT4gZmxvYXRcbiAgdmFsIGluaXRfbG9nX2luZm8gOiB1bml0IC0+IGxvZ19pbmZvXG4gIHZhbCB0aWNrIDogbG9nX2luZm8gLT4gYm9vbCAqIGxvZ19pbmZvXG4gIHZhbCBjbG9zZV9sb2dnZXIgOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+IHVuaXRcbiAgdmFsIGZsdXNoX2xvZ2dlciA6IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBTdG9yeVN0YXRzIDogU3RvcnlTdGF0cyA9IHN0cnVjdFxuICB0eXBlIHN0YWNrX2hlYWQgPSB7XG4gICAgY3VycmVudF9icmFuY2g6IGludDtcbiAgICBzZWxlY3RlZF9ldmVudHM6IGludDtcbiAgICByZW1haW5pbmdfZXZlbnRzOiBpbnQ7XG4gICAgcmVtb3ZlZF9ldmVudHM6IGludDtcbiAgICBzdGFja19zaXplOiBpbnQ7XG4gIH1cblxuICB0eXBlIHN0ZXAgPSB7XG4gICAgdGFnOiBzdGVwX2tpbmQ7XG4gICAgc2l6ZV9iZWZvcmU6IGludCBvcHRpb247XG4gICAgc2l6ZV9hZnRlcjogaW50IG9wdGlvbjtcbiAgICB0aW1lX3N0YXJ0OiBmbG9hdDtcbiAgICBkdXJhdGlvbjogZmxvYXQgb3B0aW9uO1xuICAgIGRlcHRoOiBpbnQ7XG4gIH1cblxuICBsZXQga19maXJzdCBfcGFyYW1ldGVyIGsgbCA9XG4gICAgbGV0IHJlYyBhdXggayBsIG91dHB1dCA9XG4gICAgICBpZiBrID0gMCB0aGVuXG4gICAgICAgIFtdLCBMaXN0LnJldiBvdXRwdXRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICggKGxldCByZWMgYXV4IGsgb3V0cHV0ID1cbiAgICAgICAgICAgICAgIGlmIGsgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgb3V0cHV0XG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGF1eCAoayAtIDEpIChcIlwiIDo6IG91dHB1dClcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGF1eCBrIFtdKSxcbiAgICAgICAgICAgIExpc3QucmV2IG91dHB1dCApXG4gICAgICAgIHwgdCA6OiBxIC0+IGF1eCAoayAtIDEpIHEgKHQgOjogb3V0cHV0KVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IGsgbCBbXVxuXG4gIGxldCBwcmludF90YXNrIHBhcmFtZXRlciAoYSwgYikgPVxuICAgIGxldCBfID0gcHJpbnRfc3RlcF9raW5kIHBhcmFtZXRlciBhLnRhZyBpblxuICAgIGxldCB0YWIsIGIgPSBrX2ZpcnN0IHBhcmFtZXRlciA0IGIgaW5cbiAgICBsZXQgXyA9IExpc3QuaXRlciAocHJpbnRfc3RlcF9raW5kIHBhcmFtZXRlcikgYiBpblxuICAgIGxldCBfID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoTG9nZ2Vycy5wcmludF9jZWxsIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpKVxuICAgICAgICB0YWJcbiAgICBpblxuICAgIGxldCBfID1cbiAgICAgIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAobWF0Y2ggYS5zaXplX2JlZm9yZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBpIC0+IHN0cmluZ19vZl9pbnQgaSlcbiAgICBpblxuICAgIGxldCBfID1cbiAgICAgIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAobWF0Y2ggYS5zaXplX2FmdGVyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIGkgLT4gc3RyaW5nX29mX2ludCBpKVxuICAgIGluXG4gICAgbGV0IF8gPVxuICAgICAgTG9nZ2Vycy5wcmludF9jZWxsXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpXG4gICAgICAgIChtYXRjaCBhLmR1cmF0aW9uIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIHRpbWUgLT4gc3RyaW5nX29mX2Zsb2F0IHRpbWUpXG4gICAgaW5cbiAgICAoKVxuXG4gIGxldCBjbG9zZV9sb2dnZXIgcGFyYW1ldGVyID1cbiAgICBMb2dnZXJzLmNsb3NlX2xvZ2dlciAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuXG4gIGxldCBmbHVzaF9sb2dnZXIgcGFyYW1ldGVyID1cbiAgICBMb2dnZXJzLmZsdXNoX2xvZ2dlciAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuXG4gIHR5cGUgbG9nX2luZm8gPSB7XG4gICAgZ2xvYmFsX3RpbWU6IGZsb2F0O1xuICAgIHN0b3J5X3RpbWU6IGZsb2F0O1xuICAgIHN0ZXBfdGltZTogZmxvYXQ7XG4gICAgY3VycmVudF90YXNrOiBzdGVwIGxpc3Q7XG4gICAgbmV4dF9kZXB0aDogaW50O1xuICAgIGJyYW5jaDogaW50O1xuICAgIGN1dDogaW50O1xuICAgIHN0YWNrOiBzdGFja19oZWFkIGxpc3Q7XG4gICAgY3VycmVudF9zdGFjazogc3RhY2tfaGVhZDtcbiAgICBwcm9wYWdhdGlvbjogaW50IGFycmF5O1xuICAgIGxhc3RfdGljazogZmxvYXQ7XG4gIH1cblxuICBsZXQgaXNfZHVtbXkgc3RlcF9raW5kID1cbiAgICBtYXRjaCBzdGVwX2tpbmQgd2l0aFxuICAgIHwgRHVtbXkgLT4gdHJ1ZVxuICAgIHwgQmVnaW5uaW5nIHwgQ29sbGVjdF90cmFjZXMgfCBDYXVzYWxfY29tcHJlc3Npb24gfCBXZWFrX2NvbXByZXNzaW9uXG4gICAgfCBTdHJvbmdfY29tcHJlc3Npb24gfCBQYXJ0aWFsX29yZGVyX3JlZHVjdGlvbiB8IFNpcGhvbl9kZXRlY3Rpb25cbiAgICB8IERlY29tcG9zZV9pbml0aWFsX3N0YXRlIHwgQWdlbnRfaWRzX2Rpc2FtYmlndWF0aW9uXG4gICAgfCBQc2V1ZG9faW52ZXJzZV9kZWxldGlvbiB8IFJlbW92ZV9ldmVudHNfYWZ0ZXJfbGFzdF9vYnNlcnZhYmxlXG4gICAgfCBDb21wcmVzc2lvbiB8IEJ1aWxkX2dyaWQgfCBCdWlsZF9jb25maWd1cmF0aW9uIHwgVHJhbnNpdGl2ZV9jbG9zdXJlXG4gICAgfCBHcmFwaF9yZWR1Y3Rpb24gfCBHcmFwaF9jb252ZXJzaW9uIHwgQ2Fubm9uaWNfZm9ybV9jb21wdXRhdGlvblxuICAgIHwgU3RvcmVfdHJhY2UgfCBSZW1vdmluZ19ibGFja2xpc3RlZF9ldmVudHMgfCBCbGFja2xpc3RpbmdfZXZlbnRzXG4gICAgfCBHbG9iYWxfaW5pdGlhbGl6YXRpb24gfCBEb21haW5zX2luaXRpYWxpemF0aW9uIHwgUmVndWxhcl9pbmZsdWVuY2VzXG4gICAgfCBTaWRlX2VmZmVjdHNfaW5mbHVlbmNlcyB8IE1lcmdlX2luZmx1ZW5jZXMgfCBLYVNpbV9jb21waWxhdGlvblxuICAgIHwgS2FTYV9wcmVjb21waWxhdGlvbiB8IEthU2FfbGV4aW5nIHwgS2FTYV9saW5raW5nIHwgTEthcHBhX3NpZ25hdHVyZVxuICAgIHwgSXRlcmF0aW9uIF8gfCBTdG9yeSBfIHwgRG9tYWluX2luaXRpYWxpemF0aW9uIF8gfCBBcHBseV9ydWxlIF9cbiAgICB8IEluaXRpYWxfc3RhdGUgXyB8IFNjYW5fcnVsZV9zdGF0aWMgXyB8IFNjYW5fcnVsZV9keW5hbWljIF9cbiAgICB8IEluZmx1ZW5jZV9tYXAgXyB8IEludGVybmFsX2luZmx1ZW5jZV9tYXAgXyAtPlxuICAgICAgZmFsc2VcblxuICBsZXQgYWRkX2V2ZW50IHBhcmFtZXRlciBlcnJvciBzdGVwX2tpbmQgZiBsb2dfaW5mbyA9XG4gICAgaWYgaXNfZHVtbXkgc3RlcF9raW5kIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICBcIkluY29uc2lzdGVudCBwcm9maWxpbmcgaW5mb3JtYXRpb24sIGFkZF9ldmVudCBzaG91bGQgbm90IGJlIFxcXG4gICAgICAgICAgICAgY2FsbGVkIHdpdGggYSBkdW1teSBldmVudFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJEdW1teSBldmVudCBpbiBhZGRfZXZlbnRcIikgKClcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgICApIGVsc2UgKFxuICAgICAgbGV0IG5leHRfZGVwdGggPSBsb2dfaW5mby5uZXh0X2RlcHRoIGluXG4gICAgICBsZXQgdGFzayA9XG4gICAgICAgIHtcbiAgICAgICAgICB0YWcgPSBzdGVwX2tpbmQ7XG4gICAgICAgICAgc2l6ZV9iZWZvcmUgPVxuICAgICAgICAgICAgKG1hdGNoIGYgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSBmIC0+IFNvbWUgKGYgKCkpKTtcbiAgICAgICAgICBzaXplX2FmdGVyID0gTm9uZTtcbiAgICAgICAgICB0aW1lX3N0YXJ0ID0gU3lzLnRpbWUgKCk7XG4gICAgICAgICAgZHVyYXRpb24gPSBOb25lO1xuICAgICAgICAgIGRlcHRoID0gbmV4dF9kZXB0aDtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBfID0gTG9nZ2Vycy5vcGVuX3JvdyAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKSBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBMb2dnZXJzLnByaW50X2NlbGwgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcikgXCJTdGFydFwiXG4gICAgICBpblxuICAgICAgbGV0IHRlcm1pbmF0ZWRfdGFzayA9XG4gICAgICAgIHRhc2ssIExpc3QucmV2X21hcCAoZnVuIHggLT4geC50YWcpIChMaXN0LnJldiBsb2dfaW5mby5jdXJyZW50X3Rhc2spXG4gICAgICBpblxuICAgICAgbGV0IF8gPSBwcmludF90YXNrIHBhcmFtZXRlciB0ZXJtaW5hdGVkX3Rhc2sgaW5cbiAgICAgIGxldCBfID0gTG9nZ2Vycy5jbG9zZV9yb3cgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcikgaW5cbiAgICAgIGxldCBfID0gZmx1c2hfbG9nZ2VyIHBhcmFtZXRlciBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyXG4gICAgICAgICAgKHN0cmluZ19vZl9zdGVwX2tpbmQgc3RlcF9raW5kKVxuICAgICAgaW5cbiAgICAgIGxldCBjdXJyZW50X3Rhc2sgPSB0YXNrIDo6IGxvZ19pbmZvLmN1cnJlbnRfdGFzayBpblxuICAgICAgZXJyb3IsIHsgbG9nX2luZm8gd2l0aCBuZXh0X2RlcHRoID0gbmV4dF9kZXB0aCArIDE7IGN1cnJlbnRfdGFzayB9XG4gICAgKVxuXG4gIGxldCBjbG9zZV9ldmVudCBwYXJhbWV0ZXIgZXJyb3Igc3RlcF9raW5kIGYgbG9nX2luZm8gPVxuICAgIGlmIGlzX2R1bW15IHN0ZXBfa2luZCB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgXCJJbmNvbnNpc3RlbnQgcHJvZmlsaW5nIGluZm9ybWF0aW9uLCBjbG9zZV9ldmVudCBzaG91bGQgbm90IGJlIFxcXG4gICAgICAgICAgICAgY2FsbGVkIHdpdGggYSBkdW1teSBldmVudFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJEdW1teSBldmVudCBpbiBjbG9zZV9ldmVudFwiKSAoKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICkgZWxzZSAoXG4gICAgICBsZXQgcmVjIGF1eCBsb2dfaW5mbyBlcnJvciBpbnRlcnJ1cHRlZCA9XG4gICAgICAgIGxldCBuZXh0X2RlcHRoID0gbG9nX2luZm8ubmV4dF9kZXB0aCBpblxuICAgICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgICBpZiBuZXh0X2RlcHRoID0gMSB0aGVuXG4gICAgICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgICAgICBcIkluY29uc2lzdGVudCBwcm9maWxpbmcgaW5mb3JtYXRpb24sIGRlcHRoIHNob3VsZCBub3QgYmUgZXF1YWwgXFxcbiAgICAgICAgICAgICAgICAgdG8gMSB3aGVuIGNsb3NpbmcgYW4gZXZlbnRcIlxuICAgICAgICAgICAgICAoRmFpbHVyZSBcIkRlcHRoPTEgaW4gY2xvc2VfZXZlbnRcIikgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgKClcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggbG9nX2luZm8uY3VycmVudF90YXNrIHdpdGhcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgICAgXCJJbmNvbnNpc3RlbnQgcHJvZmlsaW5nIGluZm9ybWF0aW9uLCBubyBjdXJyZW50IHRhc2sgd2hlbiBcXFxuICAgICAgICAgICAgICAgY2xvc2luZyBhbiBldmVudFwiXG4gICAgICAgICAgICAoRmFpbHVyZSBcIk5vIGN1cnJlbnQgdGFza3MgaW4gY2xvc2VfZXZlbnRcIikgbG9nX2luZm9cbiAgICAgICAgfCBjdXJyZW50X3Rhc2sgOjogdGFpbCB3aGVuIGN1cnJlbnRfdGFzay50YWcgPSBzdGVwX2tpbmQgLT5cbiAgICAgICAgICBsZXQgc2l6ZV9hZnRlciA9XG4gICAgICAgICAgICBtYXRjaCBmIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBmIC0+IFNvbWUgKGYgKCkpXG4gICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSAtLiBjdXJyZW50X3Rhc2sudGltZV9zdGFydCBpblxuICAgICAgICAgIGxldCB0YXNrID0geyBjdXJyZW50X3Rhc2sgd2l0aCBzaXplX2FmdGVyOyBkdXJhdGlvbiA9IFNvbWUgdGltZSB9IGluXG4gICAgICAgICAgbGV0IHRlcm1pbmF0ZWRfdGFzayA9XG4gICAgICAgICAgICB0YXNrLCBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgudGFnKSAoTGlzdC5yZXYgdGFpbClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLm9wZW5fcm93IChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9jZWxsXG4gICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIChpZiBpbnRlcnJ1cHRlZCB0aGVuXG4gICAgICAgICAgICAgICAgIFwiSW50ZXJydXB0ZWRcIlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBcIkVuZFwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcHJpbnRfdGFzayBwYXJhbWV0ZXIgdGVybWluYXRlZF90YXNrIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuY2xvc2Vfcm93IChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBmbHVzaF9sb2dnZXIgcGFyYW1ldGVyIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIHsgbG9nX2luZm8gd2l0aCBuZXh0X2RlcHRoID0gbmV4dF9kZXB0aCAtIDE7IGN1cnJlbnRfdGFzayA9IHRhaWwgfSApXG4gICAgICAgIHwgY3VycmVudF90YXNrIDo6IHRhaWwgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5vcGVuX3JvdyAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRlcm1pbmF0ZWRfdGFzayA9XG4gICAgICAgICAgICBjdXJyZW50X3Rhc2ssIExpc3QucmV2X21hcCAoZnVuIHggLT4geC50YWcpIChMaXN0LnJldiB0YWlsKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJJbnRlcnJ1cHRlZFwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF90YXNrIHBhcmFtZXRlciB0ZXJtaW5hdGVkX3Rhc2sgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5jbG9zZV9yb3cgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IGZsdXNoX2xvZ2dlciBwYXJhbWV0ZXIgaW5cbiAgICAgICAgICBhdXhcbiAgICAgICAgICAgIHsgbG9nX2luZm8gd2l0aCBuZXh0X2RlcHRoID0gbmV4dF9kZXB0aCAtIDE7IGN1cnJlbnRfdGFzayA9IHRhaWwgfVxuICAgICAgICAgICAgZXJyb3IgdHJ1ZVxuICAgICAgaW5cbiAgICAgIGF1eCBsb2dfaW5mbyBlcnJvciBmYWxzZVxuICAgIClcblxuICBsZXQgZ2VuX29wdCBnZW4gcGFyYW1ldGVyIGVycm9yIHN0ZXBfa2luZCBmIGxvZ19pbmZvID1cbiAgICBtYXRjaCBzdGVwX2tpbmQgd2l0aFxuICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm9cbiAgICB8IFNvbWUgZSAtPiBnZW4gcGFyYW1ldGVyIGVycm9yIGUgZiBsb2dfaW5mb1xuXG4gIGxldCBhZGRfZXZlbnRfb3B0ID0gZ2VuX29wdCBhZGRfZXZlbnRcbiAgbGV0IGNsb3NlX2V2ZW50X29wdCA9IGdlbl9vcHQgY2xvc2VfZXZlbnRcblxuICBsZXQgcHJvcGFnYXRpb25fbGFiZWxzID1cbiAgICBbfFxuICAgICAgXCJOb25lXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxIFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMiBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDMgXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSA0IFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgNSBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDYgXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSA3IFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgOCBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDkgXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxMFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMTFcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDEyXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxM1wiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMTRcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDE1XCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxNlwiO1xuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMSBcIjtcbiAgICAgICgqMTcqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMiBcIjtcbiAgICAgICgqMTgqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMyBcIjtcbiAgICAgICgqMTkqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgNCBcIjtcbiAgICAgICgqMjAqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgNSBcIjtcbiAgICAgICgqMjEqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgNiBcIjtcbiAgICAgICgqMjIqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgNyBcIjtcbiAgICAgICgqMjMqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgOCBcIjtcbiAgICAgICgqMjQqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgOSBcIjtcbiAgICAgICgqMjUqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTBcIjtcbiAgICAgICgqMjYqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTFcIjtcbiAgICAgICgqMjcqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTJcIjtcbiAgICAgICgqMjgqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTNcIjtcbiAgICAgICgqMjkqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTRcIjtcbiAgICAgICgqMzAqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTVcIjtcbiAgICAgICgqMzEqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTZcIjtcbiAgICAgICgqMzIqKVxuICAgICAgXCJMb29rX3VwOiAgIGNhc2UgIDFcIjtcbiAgICAgICgqMzMqKVxuICAgICAgXCJMb29rX3VwOiAgIGNhc2UgIDJcIjtcbiAgICAgICgqMzQqKVxuICAgICAgXCJMb29rX3VwOiAgIGNhc2UgIDNcIjtcbiAgICAgICgqMzUqKVxuICAgICAgXCJMb29rX3VwOiAgIGNhc2UgIDRcIjtcbiAgICAgICgqMzYqKVxuICAgICAgXCJMb29rX2Rvd246IGNhc2UgIDFcIjtcbiAgICAgICgqMzcqKVxuICAgICAgXCJMb29rX2Rvd246IGNhc2UgIDJcIjtcbiAgICAgICgqMzgqKVxuICAgICAgXCJMb29rX2Rvd246IGNhc2UgIDNcIjtcbiAgICAgICgqMzkqKVxuICAgICAgXCJMb29rX2Rvd246IGNhc2UgIDRcIjtcbiAgICAgICgqNDAqKVxuICAgIHxdXG5cbiAgbGV0IHByb3BhZ2F0aW9uX2Nhc2VzID0gQXJyYXkubGVuZ3RoIHByb3BhZ2F0aW9uX2xhYmVsc1xuXG4gIGxldCBjb3B5IGxvZ19pbmZvID1cbiAgICB7IGxvZ19pbmZvIHdpdGggcHJvcGFnYXRpb24gPSBBcnJheS5jb3B5IGxvZ19pbmZvLnByb3BhZ2F0aW9uIH1cblxuICBsZXQgaW5pdF9sb2dfaW5mbyAoKSA9XG4gICAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSBpblxuICAgIHtcbiAgICAgIG5leHRfZGVwdGggPSAxO1xuICAgICAgZ2xvYmFsX3RpbWUgPSB0aW1lO1xuICAgICAgc3RvcnlfdGltZSA9IHRpbWU7XG4gICAgICBzdGVwX3RpbWUgPSB0aW1lO1xuICAgICAgY3VycmVudF90YXNrID0gW107XG4gICAgICBwcm9wYWdhdGlvbiA9IEFycmF5Lm1ha2UgcHJvcGFnYXRpb25fY2FzZXMgMDtcbiAgICAgIGJyYW5jaCA9IDA7XG4gICAgICBjdXQgPSAwO1xuICAgICAgY3VycmVudF9zdGFjayA9XG4gICAgICAgIHtcbiAgICAgICAgICBjdXJyZW50X2JyYW5jaCA9IDA7XG4gICAgICAgICAgc2VsZWN0ZWRfZXZlbnRzID0gMDtcbiAgICAgICAgICByZW1haW5pbmdfZXZlbnRzID0gMDtcbiAgICAgICAgICByZW1vdmVkX2V2ZW50cyA9IDA7XG4gICAgICAgICAgc3RhY2tfc2l6ZSA9IDA7XG4gICAgICAgIH07XG4gICAgICBzdGFjayA9IFtdO1xuICAgICAgbGFzdF90aWNrID0gMC47XG4gICAgfVxuXG4gIGxldCBsb2dfaW5mb190b19qc29uIGxvZ19pbmZvID1cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJnbG9iYWxfdGltZVwiLCBgRmxvYXQgbG9nX2luZm8uZ2xvYmFsX3RpbWU7XG4gICAgICAgIFwic3RvcnlfdGltZVwiLCBgRmxvYXQgbG9nX2luZm8uc3RvcnlfdGltZTtcbiAgICAgICAgXCJzdGVwX3RpbWVcIiwgYEZsb2F0IGxvZ19pbmZvLnN0ZXBfdGltZTtcbiAgICAgICAgXCJuZXh0X2RlcHRoXCIsIGBJbnQgbG9nX2luZm8ubmV4dF9kZXB0aDtcbiAgICAgICAgXCJicmFuY2hcIiwgYEludCBsb2dfaW5mby5icmFuY2g7XG4gICAgICAgIFwiY3V0XCIsIGBJbnQgbG9nX2luZm8uY3V0O1xuICAgICAgXVxuXG4gIGxldCBmbG9hdF9vZl9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBGbG9hdCBmIC0+IGZcbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBmbG9hdFwiLCB4KSlcblxuICBsZXQgaW50X29mX2pzb24gPSBmdW5jdGlvblxuICAgIHwgYEludCBmIC0+IGZcbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBmbG9hdFwiLCB4KSlcblxuICBsZXQgbG9nX2luZm9fb2ZfanNvbiB4ID1cbiAgICBsZXQgaW5pdCA9IGluaXRfbG9nX2luZm8gKCkgaW5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IGBBc3NvYyBsIHdoZW4gTGlzdC5sZW5ndGggbCA9IDYgLT5cbiAgICAgICh0cnlcbiAgICAgICAgIHtcbiAgICAgICAgICAgaW5pdCB3aXRoXG4gICAgICAgICAgIGdsb2JhbF90aW1lID0gZmxvYXRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImdsb2JhbF90aW1lXCIgbCk7XG4gICAgICAgICAgIHN0b3J5X3RpbWUgPSBmbG9hdF9vZl9qc29uIChMaXN0LmFzc29jIFwic3RvcnlfdGltZVwiIGwpO1xuICAgICAgICAgICBzdGVwX3RpbWUgPSBmbG9hdF9vZl9qc29uIChMaXN0LmFzc29jIFwic3RlcF90aW1lXCIgbCk7XG4gICAgICAgICAgIG5leHRfZGVwdGggPSBpbnRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcIm5leHRfZGVwdGhcIiBsKTtcbiAgICAgICAgICAgYnJhbmNoID0gaW50X29mX2pzb24gKExpc3QuYXNzb2MgXCJicmFuY2hcIiBsKTtcbiAgICAgICAgICAgY3V0ID0gaW50X29mX2pzb24gKExpc3QuYXNzb2MgXCJjdXRcIiBsKTtcbiAgICAgICAgIH1cbiAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBsb2dfaW5mb1wiLCB4KSkpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgbG9nX2luZm9cIiwgeCkpXG5cbiAgbGV0IGR1bXBfc2hvcnRfbG9nIHBhcmFtZXRlciBsb2dfaW5mbyA9XG4gICAgbGV0IF8gPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9jb21wcmVzc2lvbl9zdGF0dXNfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgXCJSZW1haW5pbmcgZXZlbnRzOiAlaSA7IFN0YWNrIHNpemU6ICVpIDsgXCJcbiAgICAgICAgbG9nX2luZm8uY3VycmVudF9zdGFjay5yZW1haW5pbmdfZXZlbnRzXG4gICAgICAgIGxvZ19pbmZvLmN1cnJlbnRfc3RhY2suc3RhY2tfc2l6ZVxuICAgIGluXG4gICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICBcIlRvdGFsIGJyYW5jaDogJWkgOyBUb3RhbCBjdXQ6ICVpIDsgQ3VycmVudCBkZXB0aDogJWkgQC5cIiBsb2dfaW5mby5icmFuY2hcbiAgICAgIGxvZ19pbmZvLmN1dCBsb2dfaW5mby5jdXJyZW50X3N0YWNrLmN1cnJlbnRfYnJhbmNoXG5cbiAgbGV0IHJlc2V0X2xvZyBsb2cgPVxuICAgIGxldCB0ID0gbG9nLnByb3BhZ2F0aW9uIGluXG4gICAgbGV0IF8gPSBBcnJheS5maWxsIHQgMCAoQXJyYXkubGVuZ3RoIHQpIDAgaW5cbiAgICBsZXQgdGltZSA9IFN5cy50aW1lICgpIGluXG4gICAgeyBsb2cgd2l0aCBzdGVwX3RpbWUgPSB0aW1lOyBzdG9yeV90aW1lID0gdGltZSB9XG5cbiAgbGV0IHByb3BhZ2F0ZV91cCBpID0gaVxuICBsZXQgcHJvcGFnYXRlX2Rvd24gaSA9IGkgKyAxNlxuICBsZXQgbG9va191cCBpID0gaSArIDMyXG4gIGxldCBsb29rX2Rvd24gaSA9IGkgKyAzNlxuXG4gIGxldCBlbGxhcHNlZF90aW1lIGxvZyA9XG4gICAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSBpblxuICAgIHRpbWUgLS4gbG9nLnN0b3J5X3RpbWVcblxuICBsZXQgZWxsYXBzZWRfZ2xvYmFsX3RpbWUgbG9nID1cbiAgICBsZXQgdGltZSA9IFN5cy50aW1lICgpIGluXG4gICAgdGltZSAtLiBsb2cuZ2xvYmFsX3RpbWVcblxuICBsZXQgc2V0X3RpbWUgbG9nID1cbiAgICB7IGxvZyB3aXRoIHN0b3J5X3RpbWUgPSBTeXMudGltZSAoKTsgc3RlcF90aW1lID0gU3lzLnRpbWUgKCkgfVxuXG4gIGxldCBzZXRfc3RlcF90aW1lIGxvZyA9IHsgbG9nIHdpdGggc3RlcF90aW1lID0gU3lzLnRpbWUgKCkgfVxuICBsZXQgc2V0X3N0YXJ0X2NvbXByZXNzaW9uID0gc2V0X3RpbWVcblxuICBsZXQgc2V0X3N0b3J5X3Jlc2VhcmNoX3RpbWUgbG9nID1cbiAgICBsZXQgdCA9IFN5cy50aW1lICgpIGluXG4gICAgbGV0IHN0ID0gbG9nLnN0ZXBfdGltZSBpblxuICAgIHsgbG9nIHdpdGggc3RvcnlfdGltZSA9IHQgLS4gc3Q7IHN0ZXBfdGltZSA9IHQgfVxuXG4gIGxldCBzZXRfY29uY3VycmVudF9ldmVudF9kZXRlY3Rpb25fdGltZSBsb2cgPSBsb2dcbiAgbGV0IHNldF9jb25jdXJyZW50X2V2ZW50X2RlbGV0aW9uX3RpbWUgbG9nID0gbG9nXG4gIGxldCBzZXRfZ3JpZF9nZW5lcmF0aW9uIGxvZyA9IGxvZ1xuICBsZXQgc2V0X2Nhbm9uaWNhbGlzYXRpb24gbG9nID0gbG9nXG5cbiAgbGV0IGFkZF9jYXNlIGkgbG9nID1cbiAgICBsZXQgdCA9IGxvZy5wcm9wYWdhdGlvbiBpblxuICAgIGxldCBfID0gdC4oaSkgPC0gdC4oaSkgKyAxIGluXG4gICAgbG9nXG5cbiAgbGV0IGFkZF9sb29rX2Rvd25fY2FzZSBpID0gYWRkX2Nhc2UgKGxvb2tfZG93biBpKVxuICBsZXQgYWRkX2xvb2tfdXBfY2FzZSBpID0gYWRkX2Nhc2UgKGxvb2tfdXAgaSlcbiAgbGV0IGFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gaSA9IGFkZF9jYXNlIChwcm9wYWdhdGVfZG93biBpKVxuICBsZXQgYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgaSA9IGFkZF9jYXNlIChwcm9wYWdhdGVfdXAgaSlcblxuICBsZXQgaW5jX2N1dCBsb2cgPVxuICAgIG1hdGNoIGxvZy5zdGFjayB3aXRoXG4gICAgfCBbXSAtPiBsb2dcbiAgICB8IHQgOjogcSAtPiB7IGxvZyB3aXRoIGN1cnJlbnRfc3RhY2sgPSB0OyBzdGFjayA9IHE7IGN1dCA9IGxvZy5jdXQgKyAxIH1cblxuICBsZXQgaW5jX2JyYW5jaCBsb2cgPVxuICAgIHtcbiAgICAgIGxvZyB3aXRoXG4gICAgICBzdGFjayA9IGxvZy5jdXJyZW50X3N0YWNrIDo6IGxvZy5zdGFjaztcbiAgICAgIGJyYW5jaCA9IGxvZy5icmFuY2ggKyAxO1xuICAgICAgY3VycmVudF9zdGFjayA9XG4gICAgICAgIHtcbiAgICAgICAgICBsb2cuY3VycmVudF9zdGFjayB3aXRoXG4gICAgICAgICAgY3VycmVudF9icmFuY2ggPSBsb2cuY3VycmVudF9zdGFjay5jdXJyZW50X2JyYW5jaCArIDE7XG4gICAgICAgIH07XG4gICAgfVxuXG4gIGxldCBpbmNfbl9rYXNpbV9ldmVudHMgbG9nID0gbG9nXG4gIGxldCBpbmNfbl9vYnNfZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX25fc2lkZV9ldmVudHMgbG9nID0gbG9nXG4gIGxldCBpbmNfbl9pbml0X2V2ZW50cyBsb2cgPSBsb2dcbiAgbGV0IGluY19jdXRfZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX2tfY3V0X2V2ZW50cyBfayBsb2cgPSBsb2dcbiAgbGV0IHJlc2V0X2N1dF9ldmVudHMgbG9nID0gbG9nXG4gIGxldCBpbmNfc2VsZWN0ZWRfZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX3JlbW92ZWRfZXZlbnRzIGxvZyA9IGxvZ1xuXG4gIGxldCBkdW1wX2NvbXBsZXRlX2xvZyBwYXJhbWV0ZXIgbG9nX2luZm8gPVxuICAgIGxldCBsb2dnZXIgPSBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9jb21wcmVzc2lvbl9zdGF0dXNfbG9nZ2VyIHBhcmFtZXRlciBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIvKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCJTdG9yeSBwcm9maWxpbmdcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIkVsbGFwc2VkX3RpbWU6ICAgICAgICAgICAgICAgICAgJWZcIlxuICAgICAgICAoZWxsYXBzZWRfdGltZSBsb2dfaW5mbylcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIlN0b3J5IHJlc2VhcmNoIHRpbWU6ICAgICAgICAgICAgJWZcIlxuICAgICAgICBsb2dfaW5mby5zdG9yeV90aW1lXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCJFeHBsb3JhdGlvbiBkZXB0aDogICAgICAgICAgICAgICVpXCJcbiAgICAgICAgbG9nX2luZm8uY3VycmVudF9zdGFjay5jdXJyZW50X2JyYW5jaFxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiRXhwbG9yYXRpb24gY3V0czogICAgICAgICAgICAgICAlaVwiIGxvZ19pbmZvLmN1dFxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIqKipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiUHJvcGFnYXRpb24gSGl0czpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgcmVjIGF1eCBrID1cbiAgICAgIGlmIGsgPj0gcHJvcGFnYXRpb25fY2FzZXMgdGhlblxuICAgICAgICAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIgICAgICAgICVzICVpXCIgcHJvcGFnYXRpb25fbGFiZWxzLihrKVxuICAgICAgICAgICAgICBsb2dfaW5mby5wcm9wYWdhdGlvbi4oaylcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBhdXggKGsgKyAxKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IF8gPSBhdXggMSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIqL1wiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgICgpXG5cbiAgbGV0IHRpY2sgbG9nX2luZm8gPVxuICAgIGxldCB0aW1lID0gU3lzLnRpbWUgKCkgaW5cbiAgICBpZiB0aW1lIC0uIGxvZ19pbmZvLmxhc3RfdGljayA+IDYwMC4gdGhlblxuICAgICAgdHJ1ZSwgeyBsb2dfaW5mbyB3aXRoIGxhc3RfdGljayA9IHRpbWUgfVxuICAgIGVsc2VcbiAgICAgIGZhbHNlLCBsb2dfaW5mb1xuXG4gIGxldCBzZXRfZ2xvYmFsX2N1dCBfbiBsb2dfaW5mbyA9IGxvZ19pbmZvXG4gIGxldCBzZXRfcHNldWRvX2ludiBfbiBsb2dfaW5mbyA9IGxvZ19pbmZvXG5lbmRcbiIsIigqKlxuICAgVGltZS1zdGFtcDogPEZlYiAyMiAyMDE4PlxuKilcblxubW9kdWxlIHR5cGUgU2V0X3dpdGhfbG9ncyA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuICB2YWwgc2luZ2xldG9uIDogZWx0IC0+IHRcbiAgdmFsIGlzX3NpbmdsZXRvbiA6IHQgLT4gYm9vbFxuXG4gIHZhbCBhZGQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBhZGRfd2hlbl9ub3RfaW4gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCByZW1vdmUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBtaW51cyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCB1bmlvbiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBkaXNqb2ludF91bmlvbiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBpbnRlciA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBkaWZmIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgdCAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiB0XG5cbiAgdmFsIGNhcmRpbmFsIDogdCAtPiBpbnRcbiAgdmFsIG1lbSA6IGVsdCAtPiB0IC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gIHZhbCBmaWx0ZXIgOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdFxuICB2YWwgZm9yX2FsbCA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gIHZhbCBwYXJ0aXRpb24gOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdCAqIHRcbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBzdWJzZXQgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgaXRlciA6IChlbHQgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgZm9sZF9pbnYgOiAoZWx0IC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gIHZhbCBlbGVtZW50cyA6IHQgLT4gZWx0IGxpc3RcbiAgdmFsIGNob29zZSA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgbWluX2VsdCA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdCA6IHQgLT4gZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIE1hcF93aXRoX2xvZ3MgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSBzZXRcbiAgdHlwZSArJ2EgdFxuXG4gIHZhbCBlbXB0eSA6ICdhIHRcbiAgdmFsIGlzX2VtcHR5IDogJ2EgdCAtPiBib29sXG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiAoZWx0ICogJ2EpIG9wdGlvblxuICB2YWwgbWVtIDogZWx0IC0+ICdhIHQgLT4gYm9vbFxuXG4gIHZhbCBmaW5kX29wdGlvbiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSBvcHRpb25cblxuICB2YWwgZmluZF9kZWZhdWx0IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICBlbHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2FcblxuICB2YWwgZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhXG5cbiAgdmFsIGZpbmRfb3B0aW9uX3dpdGhvdXRfbG9ncyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSBvcHRpb25cblxuICB2YWwgYWRkIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdFxuXG4gIHZhbCBvdmVyd3JpdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIGFkZF9vcl9vdmVyd3JpdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIHJlbW92ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIHJlbW92ZV9vcl9ub3QgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdFxuXG4gIHZhbCB1cGRhdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHRcblxuICB2YWwgbWFwMiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYykgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYyB0XG5cbiAgdmFsIG1hcDJ6IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIGZvbGQyeiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjXG5cbiAgdmFsIGZvbGQyIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYykgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2NcblxuICB2YWwgZm9sZDJfc3BhcnNlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYykgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2NcblxuICB2YWwgaXRlcjJfc3BhcnNlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYiB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyXG5cbiAgdmFsIGRpZmYgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHQgKiAnYSB0XG5cbiAgdmFsIGRpZmZfcHJlZCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICgnYSAtPiAnYSAtPiBib29sKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdCAqICdhIHRcblxuICB2YWwgbWVyZ2UgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHRcblxuICB2YWwgdW5pb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHRcblxuICB2YWwgZm9sZF9yZXN0cmljdGlvbiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChlbHQgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgc2V0IC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2JcblxuICB2YWwgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKGVsdCAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYikgLT5cbiAgICAoZWx0IC0+IEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiIC0+IEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiKSAtPlxuICAgIHNldCAtPlxuICAgICdhIHQgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiXG5cbiAgdmFsIGl0ZXIgOiAoZWx0IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuXG4gIHZhbCBpdGVyMiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlcikgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXJcblxuICB2YWwgZm9sZCA6IChlbHQgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgdmFsIG1hcGkgOiAoZWx0IC0+ICdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgdmFsIG1hcCA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gIHZhbCBmb3JfYWxsIDogKGVsdCAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGZpbHRlcl9vbmUgOiAoZWx0IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gKGVsdCAqICdhKSBvcHRpb25cbiAgdmFsIGNvbXBhcmUgOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgYmluZGluZ3MgOiAnYSB0IC0+IChlbHQgKiAnYSkgbGlzdFxuXG4gIHZhbCBvZl9qc29uIDpcbiAgICA/bGFiX2tleTpzdHJpbmcgLT5cbiAgICA/bGFiX3ZhbHVlOnN0cmluZyAtPlxuICAgID9lcnJvcl9tc2c6c3RyaW5nIC0+XG4gICAgKFlvanNvbi5CYXNpYy50IC0+IGVsdCkgLT5cbiAgICAoWW9qc29uLkJhc2ljLnQgLT4gJ3ZhbHVlKSAtPlxuICAgIFlvanNvbi5CYXNpYy50IC0+XG4gICAgJ3ZhbHVlIHRcblxuICB2YWwgdG9fanNvbiA6XG4gICAgP2xhYl9rZXk6c3RyaW5nIC0+XG4gICAgP2xhYl92YWx1ZTpzdHJpbmcgLT5cbiAgICAoZWx0IC0+IFlvanNvbi5CYXNpYy50KSAtPlxuICAgICgndmFsdWUgLT4gWW9qc29uLkJhc2ljLnQpIC0+XG4gICAgJ3ZhbHVlIHQgLT5cbiAgICBZb2pzb24uQmFzaWMudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfd2l0aF9sb2dzID0gc2lnXG4gIHR5cGUgZWx0XG5cbiAgbW9kdWxlIFNldCA6IFNldF93aXRoX2xvZ3Mgd2l0aCB0eXBlIGVsdCA9IGVsdFxuICBtb2R1bGUgTWFwIDogTWFwX3dpdGhfbG9ncyB3aXRoIHR5cGUgZWx0ID0gZWx0IGFuZCB0eXBlIHNldCA9IFNldC50XG5lbmRcblxubGV0IGxpZnQgZiA9IGYgRXhjZXB0aW9uLndyYXBcblxubW9kdWxlIE1ha2UgKFNfYm90aCA6IFNldE1hcC5TKSA6XG4gIFNfd2l0aF9sb2dzXG4gICAgd2l0aCB0eXBlIGVsdCA9IFNfYm90aC5lbHRcbiAgICAgYW5kIHR5cGUgJ2EgTWFwLnQgPSAnYSBTX2JvdGguTWFwLnRcbiAgICAgYW5kIHR5cGUgU2V0LnQgPSBTX2JvdGguU2V0LnQgPSBzdHJ1Y3RcbiAgdHlwZSBlbHQgPSBTX2JvdGguZWx0XG5cbiAgbW9kdWxlIFNldCA6XG4gICAgU2V0X3dpdGhfbG9ncyB3aXRoIHR5cGUgZWx0ID0gU19ib3RoLmVsdCBhbmQgdHlwZSB0ID0gU19ib3RoLlNldC50ID0gc3RydWN0XG4gICAgdHlwZSBlbHQgPSBTX2JvdGguZWx0XG4gICAgdHlwZSB0ID0gU19ib3RoLlNldC50XG5cbiAgICBsZXQgZW1wdHkgPSBTX2JvdGguU2V0LmVtcHR5XG4gICAgbGV0IGlzX2VtcHR5ID0gU19ib3RoLlNldC5pc19lbXB0eVxuICAgIGxldCBzaW5nbGV0b24gPSBTX2JvdGguU2V0LnNpbmdsZXRvblxuICAgIGxldCBpc19zaW5nbGV0b24gPSBTX2JvdGguU2V0LmlzX3NpbmdsZXRvblxuICAgIGxldCBhZGQgPSBsaWZ0IFNfYm90aC5TZXQuYWRkX3dpdGhfbG9nc1xuXG4gICAgbGV0IGFkZF93aGVuX25vdF9pbiBwIGUgeCBzID1cbiAgICAgIGxldCBlLCBfLCBzID0gKGxpZnQgU19ib3RoLlNldC5hZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MpIHAgZSB4IHMgaW5cbiAgICAgIGUsIHNcblxuICAgIGxldCByZW1vdmUgPSBsaWZ0IFNfYm90aC5TZXQucmVtb3ZlX3dpdGhfbG9nc1xuICAgIGxldCB1bmlvbiA9IGxpZnQgU19ib3RoLlNldC51bmlvbl93aXRoX2xvZ3NcbiAgICBsZXQgZGlzam9pbnRfdW5pb24gPSBsaWZ0IFNfYm90aC5TZXQuZGlzam9pbnRfdW5pb25fd2l0aF9sb2dzXG4gICAgbGV0IGludGVyID0gbGlmdCBTX2JvdGguU2V0LmludGVyX3dpdGhfbG9nc1xuICAgIGxldCBkaWZmID0gbGlmdCBTX2JvdGguU2V0LmRpZmZfd2l0aF9sb2dzXG4gICAgbGV0IG1pbnVzID0gbGlmdCBTX2JvdGguU2V0Lm1pbnVzX3dpdGhfbG9nc1xuICAgIGxldCBjYXJkaW5hbCA9IFNfYm90aC5TZXQuc2l6ZVxuICAgIGxldCBtZW0gPSBTX2JvdGguU2V0Lm1lbVxuICAgIGxldCBleGlzdHMgPSBTX2JvdGguU2V0LmV4aXN0c1xuICAgIGxldCBmaWx0ZXIgPSBTX2JvdGguU2V0LmZpbHRlclxuICAgIGxldCBmb3JfYWxsID0gU19ib3RoLlNldC5mb3JfYWxsXG4gICAgbGV0IHBhcnRpdGlvbiA9IFNfYm90aC5TZXQucGFydGl0aW9uXG4gICAgbGV0IGNvbXBhcmUgPSBTX2JvdGguU2V0LmNvbXBhcmVcbiAgICBsZXQgZXF1YWwgPSBTX2JvdGguU2V0LmVxdWFsXG4gICAgbGV0IHN1YnNldCA9IFNfYm90aC5TZXQuc3Vic2V0XG4gICAgbGV0IGl0ZXIgPSBTX2JvdGguU2V0Lml0ZXJcbiAgICBsZXQgZm9sZCA9IFNfYm90aC5TZXQuZm9sZFxuICAgIGxldCBmb2xkX2ludiA9IFNfYm90aC5TZXQuZm9sZF9pbnZcbiAgICBsZXQgZWxlbWVudHMgPSBTX2JvdGguU2V0LmVsZW1lbnRzXG4gICAgbGV0IGNob29zZSA9IFNfYm90aC5TZXQuY2hvb3NlXG4gICAgbGV0IG1pbl9lbHQgPSBTX2JvdGguU2V0Lm1pbl9lbHRcbiAgICBsZXQgbWF4X2VsdCA9IFNfYm90aC5TZXQubWF4X2VsdFxuICBlbmRcblxuICBtb2R1bGUgTWFwIDpcbiAgICBNYXBfd2l0aF9sb2dzXG4gICAgICB3aXRoIHR5cGUgZWx0ID0gU19ib3RoLmVsdFxuICAgICAgIGFuZCB0eXBlICdhIHQgPSAnYSBTX2JvdGguTWFwLnRcbiAgICAgICBhbmQgdHlwZSBzZXQgPSBTX2JvdGguU2V0LnRcbiAgICAgICBhbmQgdHlwZSBzZXQgPSBTZXQudCA9IHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gU19ib3RoLmVsdFxuICAgIHR5cGUgc2V0ID0gU19ib3RoLlNldC50XG4gICAgdHlwZSArJ2RhdGEgdCA9ICdkYXRhIFNfYm90aC5NYXAudFxuXG4gICAgbGV0IGVtcHR5ID0gU19ib3RoLk1hcC5lbXB0eVxuICAgIGxldCBpc19lbXB0eSA9IFNfYm90aC5NYXAuaXNfZW1wdHlcbiAgICBsZXQgbWluX2VsdCA9IFNfYm90aC5NYXAubWluX2VsdFxuICAgIGxldCBtZW0gPSBTX2JvdGguTWFwLm1lbVxuICAgIGxldCBmaW5kX29wdGlvbiBhIGIgYyBkID0gbGlmdCBTX2JvdGguTWFwLmZpbmRfb3B0aW9uX3dpdGhfbG9ncyBhIGIgYyBkXG4gICAgbGV0IGZpbmRfZGVmYXVsdCBhIGIgYyBkID0gbGlmdCBTX2JvdGguTWFwLmZpbmRfZGVmYXVsdF93aXRoX2xvZ3MgYSBiIGMgZFxuICAgIGxldCBmaW5kX29wdGlvbl93aXRob3V0X2xvZ3MgX2EgYiBjIGQgPSBiLCBTX2JvdGguTWFwLmZpbmRfb3B0aW9uIGMgZFxuICAgIGxldCBmaW5kX2RlZmF1bHRfd2l0aG91dF9sb2dzIF9hIGIgYyBkIGUgPSBiLCBTX2JvdGguTWFwLmZpbmRfZGVmYXVsdCBjIGQgZVxuICAgIGxldCBhZGQgYSBiIGMgZCA9IGxpZnQgU19ib3RoLk1hcC5hZGRfd2l0aF9sb2dzIGEgYiBjIGRcblxuICAgIGxldCBvdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGMgZCBlID1cbiAgICAgIGxldCBlcnJvciwgYm9vbCwgbWFwID1cbiAgICAgICAgbGlmdCBTX2JvdGguTWFwLmFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyBwYXJhbWV0ZXIgZXJyb3IgYyBkIGVcbiAgICAgIGluXG4gICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcImF0dGVtcHQgdG8gb3ZlcndyaXRlIGFuIGFzc29jaWF0aW9uIHRoYXQgZG9lcyBub3QgZXhpc3RcIlxuICAgICAgICAgIChGYWlsdXJlIFwiQXR0ZW1wdCB0byBvdmVyd3JpdGUgYW4gYXNzb2NpYXRpb24gdGhhdCBkb2VzIG5vdCBleGlzdFwiKVxuICAgICAgICAgIG1hcFxuICAgICAgZWxzZVxuICAgICAgICBlcnJvciwgbWFwXG5cbiAgICBsZXQgYWRkX29yX292ZXJ3cml0ZSBhIGIgYyBkIGUgPVxuICAgICAgbGV0IGVycm9yLCBfLCBtYXAgPVxuICAgICAgICBsaWZ0IFNfYm90aC5NYXAuYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIGEgYiBjIGQgZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBtYXBcblxuICAgIGxldCByZW1vdmUgYSBiIGMgZCA9IGxpZnQgU19ib3RoLk1hcC5yZW1vdmVfd2l0aF9sb2dzIGEgYiBjIGRcblxuICAgIGxldCByZW1vdmVfb3Jfbm90IGEgYiBjIGQgPVxuICAgICAgbGV0IGVycm9yLCBfLCBtYXAgPVxuICAgICAgICBsaWZ0IFNfYm90aC5NYXAucmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIGEgYiBjIGRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbWFwXG5cbiAgICBsZXQgdXBkYXRlIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLnVwZGF0ZV93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgbWFwMiBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5tYXAyX3dpdGhfbG9ncyBhIGIgY1xuICAgIGxldCBtYXAyeiBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5tYXAyel93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgZm9sZDJ6IGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLmZvbGQyel93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgZm9sZDIgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAuZm9sZDJfd2l0aF9sb2dzIGEgYiBjXG5cbiAgICBsZXQgaXRlcjIgcGFyYW1ldGVyIGVycm9yIGYgZyBoIG1hcGYgbWFwZyA9XG4gICAgICBmc3RcbiAgICAgICAgKFNfYm90aC5NYXAuZm9sZDJfd2l0aF9sb2dzIEV4Y2VwdGlvbi53cmFwIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAoZnVuIGEgYiBjIGQgKCkgLT4gZiBhIGIgYyBkLCAoKSlcbiAgICAgICAgICAgKGZ1biBhIGIgYyBkICgpIC0+IGcgYSBiIGMgZCwgKCkpXG4gICAgICAgICAgIChmdW4gYSBiIGMgZCBlICgpIC0+IGggYSBiIGMgZCBlLCAoKSlcbiAgICAgICAgICAgbWFwZiBtYXBnICgpKVxuXG4gICAgbGV0IGZvbGQyX3NwYXJzZSBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5mb2xkMl9zcGFyc2Vfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IGl0ZXIyX3NwYXJzZSBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5pdGVyMl9zcGFyc2Vfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IGRpZmYgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAuZGlmZl93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgZGlmZl9wcmVkIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLmRpZmZfcHJlZF93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgbWVyZ2UgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAubWVyZ2Vfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IHVuaW9uIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLnVuaW9uX3dpdGhfbG9ncyBhIGIgY1xuXG4gICAgbGV0IGZvbGRfcmVzdHJpY3Rpb24gYSBiIGMgPVxuICAgICAgbGlmdCBTX2JvdGguTWFwLmZvbGRfcmVzdHJpY3Rpb25fd2l0aF9sb2dzIGEgYiBjXG5cbiAgICBsZXQgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zIGEgYiBjID1cbiAgICAgIGxpZnQgU19ib3RoLk1hcC5mb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIGEgYiBjXG5cbiAgICBsZXQgaXRlciA9IFNfYm90aC5NYXAuaXRlclxuICAgIGxldCBmb2xkID0gU19ib3RoLk1hcC5mb2xkXG4gICAgbGV0IG1hcGkgPSBTX2JvdGguTWFwLm1hcGlcbiAgICBsZXQgbWFwID0gU19ib3RoLk1hcC5tYXBcbiAgICBsZXQgZm9yX2FsbCA9IFNfYm90aC5NYXAuZm9yX2FsbFxuICAgIGxldCBmaWx0ZXJfb25lID0gU19ib3RoLk1hcC5maWx0ZXJfb25lXG4gICAgbGV0IGNvbXBhcmUgPSBTX2JvdGguTWFwLmNvbXBhcmVcbiAgICBsZXQgZXF1YWwgPSBTX2JvdGguTWFwLmVxdWFsXG4gICAgbGV0IGJpbmRpbmdzID0gU19ib3RoLk1hcC5iaW5kaW5nc1xuICAgIGxldCB0b19qc29uID0gU19ib3RoLk1hcC50b19qc29uXG4gICAgbGV0IG9mX2pzb24gPSBTX2JvdGguTWFwLm9mX2pzb25cbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUHJvamVjdGlvbiA9IHNpZ1xuICB0eXBlIGVsdF9hXG4gIHR5cGUgZWx0X2JcbiAgdHlwZSAnYSBtYXBfYVxuICB0eXBlICdhIG1hcF9iXG4gIHR5cGUgc2V0X2FcbiAgdHlwZSBzZXRfYlxuXG4gIHZhbCBwcm9qX21hcCA6XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYiAtPlxuICAgICgnYiAtPiAnYSAtPiAnYikgLT5cbiAgICAnYSBtYXBfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiIG1hcF9iXG5cbiAgdmFsIG1vbmFkaWNfcHJval9tYXAgOlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0X2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2IgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdiIC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYikgLT5cbiAgICAnYSBtYXBfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiIG1hcF9iXG5cbiAgdmFsIG1vbmFkaWNfcHJval9tYXBfaSA6XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHRfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGVsdF9iKSAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYiAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2IgLT5cbiAgICBlbHRfYSAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYiBtYXBfYlxuXG4gIHZhbCBwcm9qX3NldCA6XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBzZXRfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHNldF9iXG5cbiAgdmFsIG1vbmFkaWNfcHJval9zZXQgOlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0X2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgc2V0X2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBzZXRfYlxuXG4gIHZhbCBwYXJ0aXRpb25fc2V0IDpcbiAgICAoZWx0X2EgLT4gZWx0X2IpIC0+XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHNldF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogc2V0X2EgbWFwX2JcblxuICB2YWwgbW9uYWRpY19wYXJ0aXRpb25fc2V0IDpcbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogZWx0X2IpIC0+XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHNldF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogc2V0X2EgbWFwX2JcbmVuZFxuXG5tb2R1bGUgUHJvaiAoQSA6IFNfd2l0aF9sb2dzKSAoQiA6IFNfd2l0aF9sb2dzKSA6XG4gIFByb2plY3Rpb25cbiAgICB3aXRoIHR5cGUgZWx0X2EgPSBBLmVsdFxuICAgICBhbmQgdHlwZSBlbHRfYiA9IEIuZWx0XG4gICAgIGFuZCB0eXBlICdhIG1hcF9hID0gJ2EgQS5NYXAudFxuICAgICBhbmQgdHlwZSAnYSBtYXBfYiA9ICdhIEIuTWFwLnRcbiAgICAgYW5kIHR5cGUgc2V0X2EgPSBBLlNldC50XG4gICAgIGFuZCB0eXBlIHNldF9iID0gQi5TZXQudCA9IHN0cnVjdFxuICBtb2R1bGUgTUEgPSBBLk1hcFxuICBtb2R1bGUgTUIgPSBCLk1hcFxuICBtb2R1bGUgU0EgPSBBLlNldFxuICBtb2R1bGUgU0IgPSBCLlNldFxuXG4gIHR5cGUgZWx0X2EgPSBNQS5lbHRcbiAgdHlwZSBlbHRfYiA9IE1CLmVsdFxuICB0eXBlIHNldF9hID0gU0EudFxuICB0eXBlIHNldF9iID0gU0IudFxuICB0eXBlICdhIG1hcF9hID0gJ2EgTUEudFxuICB0eXBlICdhIG1hcF9iID0gJ2EgTUIudFxuXG4gIGxldCBwcm9qX21hcCBmIHBhcmFtZXRlciBlcnJvciBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSAoZXJyb3IsIG1hcF9iKSAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIG1hdGNoIE1CLmZpbmRfb3B0aW9uX3dpdGhvdXRfbG9ncyBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgbWFwX2Igd2l0aFxuICAgICAgICB8IGVycm9yLCBOb25lIC0+XG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2JcbiAgICAgICAgICAgIChtZXJnZSBpZGVudGl0eV9lbHQgZGF0YV9hKVxuICAgICAgICAgICAgbWFwX2JcbiAgICAgICAgfCBlcnJvciwgU29tZSBvbGQgLT5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiAobWVyZ2Ugb2xkIGRhdGFfYSkgbWFwX2IpXG4gICAgICBtYXAgKGVycm9yLCBNQi5lbXB0eSlcblxuICBsZXQgbW9uYWRpY19wcm9qX21hcF9pIGYgcGFyYW1ldGVyIGVycm9yIGlkZW50aXR5X2VsdCBtZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIChlcnJvciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBlcnJvciwga2V5X2IgPSBmIHBhcmFtZXRlciBlcnJvciBrZXlfYSBpblxuICAgICAgICBtYXRjaCBNQi5maW5kX29wdGlvbl93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGVycm9yIGtleV9iIG1hcF9iIHdpdGhcbiAgICAgICAgfCBlcnJvciwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgZGF0YScgPSBtZXJnZSBwYXJhbWV0ZXIgZXJyb3IgaWRlbnRpdHlfZWx0IGtleV9hIGRhdGFfYSBpblxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIGRhdGEnIG1hcF9iXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgb2xkIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBkYXRhJyA9IG1lcmdlIHBhcmFtZXRlciBlcnJvciBvbGQga2V5X2EgZGF0YV9hIGluXG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgZGF0YScgbWFwX2IpXG4gICAgICBtYXAgKGVycm9yLCBNQi5lbXB0eSlcblxuICBsZXQgbW9uYWRpY19wcm9qX21hcCBmIHBhcmFtZXRlciBlcnJvciBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBtb25hZGljX3Byb2pfbWFwX2kgZiBwYXJhbWV0ZXIgZXJyb3IgaWRlbnRpdHlfZWx0XG4gICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBvbGQgXyBkYXRhX2EgLT4gbWVyZ2UgcGFyYW1ldGVyIGVycm9yIG9sZCBkYXRhX2EpXG4gICAgICBtYXBcblxuICBsZXQgcGFydGl0aW9uX3NldCBmIHBhcmFtZXRlciBlcnJvciBzZXQgPVxuICAgIFNBLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgKGVycm9yLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBtYXRjaCBNQi5maW5kX29wdGlvbl93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGVycm9yIGtleV9iIG1hcF9iIHdpdGhcbiAgICAgICAgfCBlcnJvciwgTm9uZSAtPlxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIChTQS5zaW5nbGV0b24ga2V5X2EpIG1hcF9iXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgb2xkIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBuZXdzZXQgPSBTQS5hZGQgcGFyYW1ldGVyIGVycm9yIGtleV9hIG9sZCBpblxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIG5ld3NldCBtYXBfYilcbiAgICAgIHNldCAoZXJyb3IsIE1CLmVtcHR5KVxuXG4gIGxldCBtb25hZGljX3BhcnRpdGlvbl9zZXQgZiBwYXJhbWV0ZXIgZXJyb3Igc2V0ID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIChlcnJvciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBlcnJvciwga2V5X2IgPSBmIHBhcmFtZXRlciBlcnJvciBrZXlfYSBpblxuICAgICAgICBtYXRjaCBNQi5maW5kX29wdGlvbl93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGVycm9yIGtleV9iIG1hcF9iIHdpdGhcbiAgICAgICAgfCBlcnJvciwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgZGF0YScgPSBlcnJvciwgU0Euc2luZ2xldG9uIGtleV9hIGluXG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgZGF0YScgbWFwX2JcbiAgICAgICAgfCBlcnJvciwgU29tZSBvbGQgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGRhdGEnID0gU0EuYWRkX3doZW5fbm90X2luIHBhcmFtZXRlciBlcnJvciBrZXlfYSBvbGQgaW5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiBkYXRhJyBtYXBfYilcbiAgICAgIHNldCAoZXJyb3IsIE1CLmVtcHR5KVxuXG4gIGxldCBwcm9qX3NldCBmIHBhcmFtZXRlciBlcnJvciBzZXRfYSA9XG4gICAgU0EuZm9sZFxuICAgICAgKGZ1biBrZXlfYSAoZXJyb3IsIHNldF9iKSAtPlxuICAgICAgICBTQi5hZGRfd2hlbl9ub3RfaW4gcGFyYW1ldGVyIGVycm9yIChmIGtleV9hKSBzZXRfYilcbiAgICAgIHNldF9hIChlcnJvciwgU0IuZW1wdHkpXG5cbiAgbGV0IG1vbmFkaWNfcHJval9zZXQgZiBwYXJhbWV0ZXIgZXJyb3Igc2V0X2EgPVxuICAgIFNBLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgKGVycm9yLCBzZXRfYikgLT5cbiAgICAgICAgbGV0IGVycm9yLCBrZXlfYiA9IGYgcGFyYW1ldGVyIGVycm9yIGtleV9hIGluXG4gICAgICAgIFNCLmFkZF93aGVuX25vdF9pbiBwYXJhbWV0ZXIgZXJyb3Iga2V5X2Igc2V0X2IpXG4gICAgICBzZXRfYSAoZXJyb3IsIFNCLmVtcHR5KVxuZW5kXG5cbm1vZHVsZSB0eXBlIFByb2plY3Rpb24yID0gc2lnXG4gIHR5cGUgZWx0X2FcbiAgdHlwZSBlbHRfYlxuICB0eXBlIGVsdF9jXG4gIHR5cGUgJ2EgbWFwX2FcbiAgdHlwZSAnYSBtYXBfYlxuICB0eXBlICdhIG1hcF9jXG5cbiAgdmFsIHByb2oyIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIChlbHRfYSAtPiBlbHRfYykgLT5cbiAgICAnYiAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2IgLT5cbiAgICAnYSAtPlxuICAgICdiKSAtPlxuICAgICdhIG1hcF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IgbWFwX2MgbWFwX2JcblxuICB2YWwgcHJvajJfbW9uYWRpYyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdtdmJkdV9oYW5kbGVyIC0+XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIChlbHRfYSAtPiBlbHRfYykgLT5cbiAgICAnYiAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ212YmR1X2hhbmRsZXIgLT5cbiAgICAnYiAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ212YmR1X2hhbmRsZXIgKiAnYikgLT5cbiAgICAnYSBtYXBfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdtdmJkdV9oYW5kbGVyICogJ2IgbWFwX2MgbWFwX2JcbmVuZFxuXG5tb2R1bGUgUHJvajIgKEEgOiBTX3dpdGhfbG9ncykgKEIgOiBTX3dpdGhfbG9ncykgKEMgOiBTX3dpdGhfbG9ncykgOlxuICBQcm9qZWN0aW9uMlxuICAgIHdpdGggdHlwZSBlbHRfYSA9IEEuZWx0XG4gICAgIGFuZCB0eXBlIGVsdF9iID0gQi5lbHRcbiAgICAgYW5kIHR5cGUgZWx0X2MgPSBDLmVsdFxuICAgICBhbmQgdHlwZSAnYSBtYXBfYSA9ICdhIEEuTWFwLnRcbiAgICAgYW5kIHR5cGUgJ2EgbWFwX2IgPSAnYSBCLk1hcC50XG4gICAgIGFuZCB0eXBlICdhIG1hcF9jID0gJ2EgQy5NYXAudCA9IHN0cnVjdFxuICBtb2R1bGUgTUEgPSBBLk1hcFxuICBtb2R1bGUgTUIgPSBCLk1hcFxuICBtb2R1bGUgTUMgPSBDLk1hcFxuXG4gIHR5cGUgZWx0X2EgPSBNQS5lbHRcbiAgdHlwZSBlbHRfYiA9IE1CLmVsdFxuICB0eXBlIGVsdF9jID0gTUMuZWx0XG4gIHR5cGUgJ2EgbWFwX2EgPSAnYSBNQS50XG4gIHR5cGUgJ2EgbWFwX2IgPSAnYSBNQi50XG4gIHR5cGUgJ2EgbWFwX2MgPSAnYSBNQy50XG5cbiAgbGV0IHByb2oyIHBhcmFtZXRlciBlcnJvciBmIGcgaWRlbnRpdHlfZWx0IG1lcmdlIG1hcCA9XG4gICAgTUEuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBkYXRhX2EgKGVycm9yLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBsZXQga2V5X2MgPSBnIGtleV9hIGluXG4gICAgICAgIGxldCBlcnJvciwgc3VibWFwID1cbiAgICAgICAgICBNQi5maW5kX2RlZmF1bHRfd2l0aG91dF9sb2dzIHBhcmFtZXRlciBlcnJvciBNQy5lbXB0eSBrZXlfYiBtYXBfYlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGZpbmRfZGVmYXVsdCA9XG4gICAgICAgICAgTUMuZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyBwYXJhbWV0ZXIgZXJyb3IgaWRlbnRpdHlfZWx0IGtleV9jIHN1Ym1hcFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIHN1Ym1hcCA9XG4gICAgICAgICAgTUMuYWRkIHBhcmFtZXRlciBlcnJvciBrZXlfY1xuICAgICAgICAgICAgKG1lcmdlIHBhcmFtZXRlciBlcnJvciBmaW5kX2RlZmF1bHQgZGF0YV9hKVxuICAgICAgICAgICAgc3VibWFwXG4gICAgICAgIGluXG4gICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIHN1Ym1hcCBtYXBfYilcbiAgICAgIG1hcCAoZXJyb3IsIE1CLmVtcHR5KVxuXG4gIGxldCBwcm9qMl9tb25hZGljIHBhcmFtZXRlciBoYW5kbGVyIG12YmR1X2hhbmRsZXIgZiBnIGlkZW50aXR5X2VsdCBtZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIChoYW5kbGVyLCBtdmJkdV9oYW5kbGVyLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBsZXQga2V5X2MgPSBnIGtleV9hIGluXG4gICAgICAgIGxldCBoYW5kbGVyLCBzdWJtYXAgPVxuICAgICAgICAgIE1CLmZpbmRfZGVmYXVsdF93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGhhbmRsZXIgTUMuZW1wdHkga2V5X2IgbWFwX2JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGhhbmRsZXIsIGZpbmRfZGVmYXVsdCA9XG4gICAgICAgICAgTUMuZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyBwYXJhbWV0ZXIgaGFuZGxlciBpZGVudGl0eV9lbHQga2V5X2NcbiAgICAgICAgICAgIHN1Ym1hcFxuICAgICAgICBpblxuICAgICAgICBsZXQgaGFuZGxlciwgbXZiZHVfaGFuZGxlciwgZGF0YScgPVxuICAgICAgICAgIG1lcmdlIHBhcmFtZXRlciBoYW5kbGVyIG12YmR1X2hhbmRsZXIgZmluZF9kZWZhdWx0IGRhdGFfYVxuICAgICAgICBpblxuICAgICAgICBsZXQgaGFuZGxlciwgc3VibWFwID0gTUMuYWRkIHBhcmFtZXRlciBoYW5kbGVyIGtleV9jIGRhdGEnIHN1Ym1hcCBpblxuICAgICAgICBsZXQgaGFuZGxlciwgYWRkID1cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBoYW5kbGVyIGtleV9iIHN1Ym1hcCBtYXBfYlxuICAgICAgICBpblxuICAgICAgICBoYW5kbGVyLCBtdmJkdV9oYW5kbGVyLCBhZGQpXG4gICAgICBtYXBcbiAgICAgIChoYW5kbGVyLCBtdmJkdV9oYW5kbGVyLCBNQi5lbXB0eSlcbmVuZFxuIiwiKCoqXG4gICogZmlmby5tbFxuICAqIG9wZW5rYXBwYVxuICAqIErDqXLDtG1lIEZlcmV0ICYgTHkgS2ltIFF1eWVuLCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqXG4gICogQ3JlYXRpb246IDIwMTUsIHRoZSAyN3RoIG9mIEp1bHlcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEF1ZyAwNiAyMDE2PlxuICAqXG4gICogV29yayBsaXN0IC0gRklGT1xuICAqXG4gICogQ29weXJpZ2h0IDIwMTAsMjAxMSwyMDEyLDIwMTMsMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm9wZW4gU2V0TWFwXG5cbmxldCBsb2NhbF90cmFjZSA9IGZhbHNlXG5cbm1vZHVsZSB0eXBlIFdvcmtfbGlzdCA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuXG4gIHZhbCBwdXNoIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgcG9wIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIChlbHQgb3B0aW9uICogdClcblxuICB2YWwgZm9sZF9sZWZ0IDogKCdhIC0+IGVsdCAtPiAnYSkgLT4gJ2EgLT4gdCAtPiAnYVxuICB2YWwgcHJpbnRfd2wgOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+IHQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBXbE1ha2UgKE9yZCA6IE9yZGVyZWRUeXBlIHdpdGggdHlwZSB0ID0gaW50KSA9IHN0cnVjdFxuICBtb2R1bGUgV1NldE1hcCA9IE1hcF93cmFwcGVyLk1ha2UgKFNldE1hcC5NYWtlIChPcmQpKVxuICBtb2R1bGUgV1NldCA9IFdTZXRNYXAuU2V0XG5cbiAgdHlwZSBlbHQgPSBPcmQudFxuICB0eXBlIHQgPSBlbHQgbGlzdCAqIGVsdCBsaXN0ICogV1NldC50XG5cbiAgbGV0IGVtcHR5ID0gW10sIFtdLCBXU2V0LmVtcHR5XG5cbiAgbGV0IGlzX2VtcHR5IHggPVxuICAgIGxldCBfLCBfLCBwb29sID0geCBpblxuICAgIFdTZXQuaXNfZW1wdHkgcG9vbFxuXG4gIGxldCBwdXNoIHBhcmFtZXRlciBlcnJvciBlIHggPVxuICAgIGxldCBpbl9saXN0LCBvdXRfbGlzdCwgcG9vbCA9IHggaW5cbiAgICBpZiBXU2V0Lm1lbSBlIHBvb2wgdGhlblxuICAgICAgZXJyb3IsIHhcbiAgICBlbHNlIChcbiAgICAgIGxldCBlcnJvcicsIGFkZF9lbHQgPSBXU2V0LmFkZCBwYXJhbWV0ZXIgZXJyb3IgZSBwb29sIGluXG4gICAgICBsZXQgZXJyb3IgPVxuICAgICAgICBFeGNlcHRpb24uY2hlY2tfcG9pbnQgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVyIGVycm9yIGVycm9yJyBfX1BPU19fIEV4aXRcbiAgICAgIGluXG4gICAgICBlcnJvciwgKGUgOjogaW5fbGlzdCwgb3V0X2xpc3QsIGFkZF9lbHQpXG4gICAgKVxuXG4gIGxldCBmb2xkX2xlZnQgZiBhY2MgeCA9XG4gICAgbGV0IGluX2xpc3QsIG91dF9saXN0LCBfID0geCBpblxuICAgIExpc3QuZm9sZF9sZWZ0IGYgKExpc3QuZm9sZF9sZWZ0IGYgYWNjIG91dF9saXN0KSAoTGlzdC5yZXYgaW5fbGlzdClcblxuICBsZXQgcHJpbnRfd2wgcGFyYW1ldGVycyB3bCA9XG4gICAgKCpsZXQgXyA9IGZvbGRfbGVmdFxuICAgICAgKGZ1biAgKCkgYSAtPiBQcmludGYuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nIHBhcmFtZXRlcnMpIFwiJWkgXCIgYSlcbiAgICAgICgpIHdsXG4gICAgICBpblxuICAgICAgKCpwcmludF9uZXdsaW5lKCkqKVxuICAgICAgbGV0IF8gPSBwcmludF9uZXdsaW5lICgpIGluKilcbiAgICBsZXQgXywgXywgc2V0ID0gd2wgaW5cbiAgICBXU2V0Lml0ZXJcbiAgICAgIChmdW4gaSAtPlxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSBcIiVpIFwiIGkpXG4gICAgICBzZXQ7XG4gICAgTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCJcXG5cIlxuXG4gIGxldCByZWMgcG9wIHBhcmFtZXRlciBlcnJvciB4ID1cbiAgICBsZXQgaW5fbGlzdCwgb3V0X2xpc3QsIHBvb2wgPSB4IGluXG4gICAgaWYgaXNfZW1wdHkgeCB0aGVuXG4gICAgICBlcnJvciwgKE5vbmUsIHgpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBvdXRfbGlzdCB3aXRoXG4gICAgICB8IFtdIC0+IHBvcCBwYXJhbWV0ZXIgZXJyb3IgKFtdLCBMaXN0LnJldiBpbl9saXN0LCBwb29sKVxuICAgICAgfCBoIDo6IHRsIC0+XG4gICAgICAgIGxldCBlcnJvciwgcmVtb3ZlX2VsdCA9IFdTZXQucmVtb3ZlIHBhcmFtZXRlciBlcnJvciBoIHBvb2wgaW5cbiAgICAgICAgZXJyb3IsIChTb21lIGgsIChpbl9saXN0LCB0bCwgcmVtb3ZlX2VsdCkpXG4gICAgKVxuXG4gICgqZm9yIGRlYnVnKilcbiAgKCogbGV0IHJlYyBwb3AgcGFyYW1ldGVyIGVycm9yIHggPVxuICAgICBsZXQgaW5fbGlzdCwgb3V0X2xpc3QsIHBvb2wgPSB4IGluXG4gICAgIGlmIGlzX2VtcHR5IHhcbiAgICAgdGhlblxuICAgICBlcnJvciwgKE5vbmUsIHgpXG4gICAgIGVsc2VcbiAgICAgYmVnaW5cbiAgICAgbWF0Y2ggb3V0X2xpc3Qgd2l0aFxuICAgICB8IFtdIC0+IHBvcCBwYXJhbWV0ZXIgZXJyb3IgKFtdLCAoTGlzdC5yZXYgaW5fbGlzdCksIHBvb2wpXG4gICAgIHwgaCA6OiB0bCAtPlxuICAgICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nIHBhcmFtZXRlcilcbiAgICAgXCJCRUZPUkUgUkVNT1ZFICVpIFwiIGggaW5cbiAgICAgbGV0IF8gPSAgV1NldC5pdGVyIChmdW4gaSAtPlxuICAgICBQcmludGYuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nIHBhcmFtZXRlcikgXCIlaSBcIiBpKSBwb29sIGluXG4gICAgIGxldCBlcnJvcixyZW1vdmVfZWx0ID0gV1NldC5yZW1vdmUgcGFyYW1ldGVyIGVycm9yIGggcG9vbCBpblxuICAgICBsZXQgXyA9ICBXU2V0Lml0ZXIgKGZ1biBpIC0+XG4gICAgIFByaW50Zi5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2cgcGFyYW1ldGVyKSBcIiVpIFwiIGkpIHJlbW92ZV9lbHRcbiAgICAgaW5cbiAgICAgZXJyb3IsICgoU29tZSBoKSwgKGluX2xpc3QsIHRsLCByZW1vdmVfZWx0KSlcbiAgICAgZW5kKilcblxuICAoKmZvciBkZWJ1ZyopXG4gICgqbGV0IHB1c2ggcCBlIGYgeCA9XG4gICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZyBwKSBcIkJFRk9SRSBQVVVTSCAlaVxcbiBcIiBmIGluXG4gICAgbGV0IF8gPSBwcmludF93bCBwIHggaW5cbiAgICBsZXQgZXJyb3Isd2wgPSBwdXNoIHAgZSBmIHggaW5cbiAgICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2cgcCkgXCJPVVRQVVRcXG5cIiBpblxuICAgIGxldCBfID0gcHJpbnRfd2wgcCB3bCBpblxuICAgIGxldCBfID0gUHJpbnRmLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZyBwKSBcIlxcblwiIGluXG4gICAgZXJyb3Isd2wgKilcbmVuZFxuXG5tb2R1bGUgSW50V0wgPSBNb2RzLkludE1hcFxuIiwiKCoqXG4gICAqIGludF9zdG9yYWdlLm1sXG4gICAqXG4gICAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxMC0wNy0yNyBmZXJldD5cbiAgICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxBcHIgMTMgMjAxOD5cbiAgICpcbiAgICogb3BlbmthcHBhXG4gICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgKlxuICAgKlxuICAgKiBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgcHJpbWl0aXZlcyB0byBkZWFsIHdpdGggc3RvcmFnZSBmdW5jdGlvbnNcbiAgICpcbiAgICogQ29weXJpZ2h0IDIwMTAsMjAxMSwyMDEyLDIwMTMsMjAxNCwyMDE1IEluc3RpdHV0IE5hdGlvbmFsXG4gICAqIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUuXG4gICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgKCdhLCAnYikgdW5hcnkgPVxuICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAnYSAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYlxuXG50eXBlICgnYSwgJ2IsICdjKSBiaW5hcnkgPVxuICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAnYSAtPlxuICAnYiAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnY1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgdGVybmFyeSA9XG4gIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICdhIC0+XG4gICdiIC0+XG4gICdjIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdkXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgcXVhdGVybmFyeSA9XG4gIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICdhIC0+XG4gICdiIC0+XG4gICdjIC0+XG4gICdkIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdlXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsICdnKSBzZXh0ZXJuYXJ5ID1cbiAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgJ2EgLT5cbiAgJ2IgLT5cbiAgJ2MgLT5cbiAgJ2QgLT5cbiAgJ2UgLT5cbiAgJ2YgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2dcblxudHlwZSAnYSB1bmFyeV9ub19vdXRwdXQgPVxuICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAnYSAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXJcblxudHlwZSAoJ2EsICdiKSBiaW5hcnlfbm9fb3V0cHV0ID1cbiAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgJ2EgLT5cbiAgJ2IgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyXG5cbm1vZHVsZSB0eXBlIFN0b3JhZ2UgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUga2V5XG4gIHR5cGUgZGltZW5zaW9uXG5cbiAgdmFsIGNyZWF0ZSA6IChkaW1lbnNpb24sICdhIHQpIHVuYXJ5XG4gIHZhbCBjcmVhdGVfYmlnZ2VzdF9rZXkgOiAoa2V5LCAnYSB0KSB1bmFyeVxuICB2YWwgZXhwYW5kX2FuZF9jb3B5IDogKCdhIHQsIGRpbWVuc2lvbiwgJ2EgdCkgYmluYXJ5XG4gIHZhbCBpbml0IDogKGRpbWVuc2lvbiwgKGtleSwgJ2EpIHVuYXJ5LCAnYSB0KSBiaW5hcnlcbiAgdmFsIHNldCA6IChrZXksICdhLCAnYSB0LCAnYSB0KSB0ZXJuYXJ5XG4gIHZhbCBmcmVlIDogKGtleSwgJ2EgdCwgJ2EgdCkgYmluYXJ5XG4gIHZhbCBnZXQgOiAoa2V5LCAnYSB0LCAnYSBvcHRpb24pIGJpbmFyeVxuICB2YWwgdW5zYWZlX2dldCA6IChrZXksICdhIHQsICdhIG9wdGlvbikgYmluYXJ5XG4gIHZhbCBkaW1lbnNpb24gOiAoJ2EgdCwgZGltZW5zaW9uKSB1bmFyeVxuICB2YWwgcHJpbnQgOiAoJ2EgdW5hcnlfbm9fb3V0cHV0LCAnYSB0KSBiaW5hcnlfbm9fb3V0cHV0XG4gIHZhbCBrZXlfbGlzdCA6ICgnYSB0LCBrZXkgbGlzdCkgdW5hcnlcbiAgdmFsIGl0ZXIgOiAoKGtleSwgJ2EpIGJpbmFyeV9ub19vdXRwdXQsICdhIHQpIGJpbmFyeV9ub19vdXRwdXRcbiAgdmFsIGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gOiAoKGtleSwgJ2EsICdiLCAnYikgdGVybmFyeSwgJ2EgdCwgJ2IsICdiKSB0ZXJuYXJ5XG4gIHZhbCBmb2xkIDogKChrZXksICdhLCAnYiwgJ2IpIHRlcm5hcnksICdhIHQsICdiLCAnYikgdGVybmFyeVxuXG4gIHZhbCBmb2xkMiA6XG4gICAgKCAoa2V5LCAnYSwgJ2MsICdjKSB0ZXJuYXJ5LFxuICAgICAgKGtleSwgJ2IsICdjLCAnYykgdGVybmFyeSxcbiAgICAgIChrZXksICdhLCAnYiwgJ2MsICdjKSBxdWF0ZXJuYXJ5LFxuICAgICAgJ2EgdCxcbiAgICAgICdiIHQsXG4gICAgICAnYyxcbiAgICAgICdjIClcbiAgICBzZXh0ZXJuYXJ5XG5cbiAgdmFsIGZvbGQyX2NvbW1vbiA6XG4gICAgKChrZXksICdhLCAnYiwgJ2MsICdjKSBxdWF0ZXJuYXJ5LCAnYSB0LCAnYiB0LCAnYywgJ2MpIHF1YXRlcm5hcnlcblxuICB2YWwgZm9yX2FsbCA6ICgoa2V5LCAnYSwgYm9vbCkgYmluYXJ5LCAnYSB0LCBib29sKSBiaW5hcnlcbiAgdmFsIGZyZWVfYWxsIDogKCdhIHQsICdhIHQpIHVuYXJ5XG5lbmRcblxubGV0IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgbWggcG9zIGV4biB2YWx1ZSA9XG4gIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgbWggcG9zIGV4biB2YWx1ZVxuXG5tb2R1bGUgSW50X3N0b3JhZ2VfaW1wZXJhdGlmIDpcbiAgU3RvcmFnZSB3aXRoIHR5cGUga2V5ID0gaW50IGFuZCB0eXBlIGRpbWVuc2lvbiA9IGludCA9IHN0cnVjdFxuICB0eXBlIGtleSA9IGludFxuICB0eXBlIGRpbWVuc2lvbiA9IGludFxuICB0eXBlICdhIHQgPSB7IGFycmF5OiAnYSBvcHRpb24gYXJyYXk7IHNpemU6IGludCB9XG5cbiAgbGV0IGRpbWVuc2lvbiBfIGVycm9yIGEgPSBlcnJvciwgYS5zaXplXG5cbiAgbGV0IGtleV9saXN0IF9wYXJlbWV0ZXJzIGVycm9yIHQgPVxuICAgIGxldCBzaXplID0gdC5zaXplIGluXG4gICAgbGV0IGFycmF5ID0gdC5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgc29sID1cbiAgICAgIGlmIGsgPCAwIHRoZW5cbiAgICAgICAgZXJyb3IsIHNvbFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFycmF5LihrKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggKGsgLSAxKSBzb2xcbiAgICAgICAgfCBTb21lIF8gLT4gYXV4IChrIC0gMSkgKGsgOjogc29sKVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IHNpemUgW11cblxuICBsZXQgcmVjIGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIHNpemUgPVxuICAgIGlmIHNpemUgPCAwIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBhcnJheSA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIDAgaW5cbiAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGFycmF5XG4gICAgKSBlbHNlXG4gICAgICBlcnJvciwgeyBhcnJheSA9IEFycmF5Lm1ha2UgKHNpemUgKyAxKSBOb25lOyBzaXplIH1cblxuICBsZXQgY3JlYXRlX2JpZ2dlc3Rfa2V5IHBhcmFtZXRlcnMgZXJyb3IgeCA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIHhcblxuICBsZXQgZXhwYW5kX2FuZF9jb3B5IHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgc2l6ZSA9XG4gICAgbGV0IGVycm9yLCBkaW1lbnNpb24gPSBkaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBhcnJheSBpblxuICAgIGlmIGRpbWVuc2lvbiA8IHNpemUgdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIGFycmF5JyA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIHNpemUgaW5cbiAgICAgIGxldCBfID0gQXJyYXkuYmxpdCBhcnJheS5hcnJheSAwIGFycmF5Jy5hcnJheSAwIGRpbWVuc2lvbiBpblxuICAgICAgZXJyb3IsIGFycmF5J1xuICAgICkgZWxzZVxuICAgICAgZXJyb3IsIHsgYXJyYXkgPSBBcnJheS5zdWIgYXJyYXkuYXJyYXkgMCBzaXplOyBzaXplIH1cblxuICBsZXQgc2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGFycmF5ID1cbiAgICBpZiBrZXkgPiBhcnJheS5zaXplIHx8IGtleSA8IDAgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBQcmludGYuZnByaW50ZiBzdGRvdXQgXCIlaSAlaVwiIGtleSBhcnJheS5zaXplIGluXG4gICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBhcnJheVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgXyA9IGFycmF5LmFycmF5LihrZXkpIDwtIFNvbWUgdmFsdWUgaW5cbiAgICAgIGVycm9yLCBhcnJheVxuICAgIClcblxuICBsZXQgaW5pdCBwYXJhbWV0ZXJzIGVycm9yIHNpemUgZiA9XG4gICAgaWYgc2l6ZSA8IDAgdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIGFycmF5ID0gY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgMCBpblxuICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYXJyYXlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBhcnJheSA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIHNpemUgaW5cbiAgICAgIGxldCByZWMgYXV4IGsgZXJyb3IgYXJyYXkgPVxuICAgICAgICBpZiBrID4gc2l6ZSB0aGVuXG4gICAgICAgICAgZXJyb3IsIGFycmF5XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgdmFsdWUgPSBmIHBhcmFtZXRlcnMgZXJyb3IgayBpblxuICAgICAgICAgIGxldCBlcnJvciwgYXJyYXkgPSBzZXQgcGFyYW1ldGVycyBlcnJvciBrIHZhbHVlIGFycmF5IGluXG4gICAgICAgICAgYXV4IChrICsgMSkgZXJyb3IgYXJyYXlcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCAwIGVycm9yIGFycmF5XG4gICAgKVxuXG4gIGxldCBnZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgIGlmIGtleSA+IGFycmF5LnNpemUgfHwga2V5IDwgMCB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICBcIjEzMDolaVxcblwiIGtleVxuICAgICAgaW5cbiAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IE5vbmVcbiAgICApIGVsc2UgKFxuICAgICAgbWF0Y2ggYXJyYXkuYXJyYXkuKGtleSkgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICBcIjEzMzolaVxcblwiIGtleVxuICAgICAgICBpblxuICAgICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBOb25lXG4gICAgICB8IGEgLT4gZXJyb3IsIGFcbiAgICApXG5cbiAgbGV0IGZyZWUgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgIGlmIGtleSA+IGFycmF5LnNpemUgfHwga2V5IDwgMCB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgXyA9IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IE5vbmUgaW5cbiAgICAgIGVycm9yLCBhcnJheVxuICAgICkgZWxzZSAoXG4gICAgICBtYXRjaCBhcnJheS5hcnJheS4oa2V5KSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGVycm9yLCBfID0gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgTm9uZSBpblxuICAgICAgICBlcnJvciwgYXJyYXlcbiAgICAgIHwgXyAtPlxuICAgICAgICBsZXQgKCkgPSBhcnJheS5hcnJheS4oa2V5KSA8LSBOb25lIGluXG4gICAgICAgIGVycm9yLCBhcnJheVxuICAgIClcblxuICBsZXQgdW5zYWZlX2dldCBfcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgIGlmIGtleSA+IGFycmF5LnNpemUgfHwga2V5IDwgMCB0aGVuXG4gICAgICBlcnJvciwgTm9uZVxuICAgIGVsc2VcbiAgICAgIGVycm9yLCBhcnJheS5hcnJheS4oa2V5KVxuXG4gIGxldCBwcmludCBwYXJhbWV0ZXJzIGVycm9yIHByaW50X2VsdCBhcnJheSA9XG4gICAgbGV0IHJlYyBhdXggaSBlcnJvciA9XG4gICAgICBpZiBpID4gYXJyYXkuc2l6ZSB0aGVuXG4gICAgICAgIGVycm9yXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICBtYXRjaCBhcnJheS5hcnJheS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvclxuICAgICAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICBcIiVzJWQ6XCJcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgaVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBhcmFtZXRlcnMgPVxuICAgICAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLnVwZGF0ZV9wcmVmaXggcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgIChzdHJpbmdfb2ZfaW50IGkgXiBcIjpcIilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IgPSBwcmludF9lbHQgcGFyYW1ldGVycyBlcnJvciBlbHQgaW5cbiAgICAgICAgICAgIGVycm9yXG4gICAgICAgIGluXG4gICAgICAgIGF1eCAoaSArIDEpIGVycm9yXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCBlcnJvclxuXG4gIGxldCBpdGVyIHBhcmFtZXRlciBlcnJvciBmIHQgPVxuICAgIGxldCBzaXplID0gdC5zaXplIGluXG4gICAgbGV0IGFycmF5ID0gdC5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgZXJyb3IgPVxuICAgICAgaWYgayA+IHNpemUgdGhlblxuICAgICAgICBlcnJvclxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFycmF5LihrKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggKGsgKyAxKSBlcnJvclxuICAgICAgICB8IFNvbWUgeCAtPiBhdXggKGsgKyAxKSAoZiBwYXJhbWV0ZXIgZXJyb3IgayB4KVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgZXJyb3JcblxuICBsZXQgZm9sZCBwYXJhbWV0ZXIgZXJyb3IgZiB0IGluaXQgPVxuICAgIGxldCBzaXplID0gdC5zaXplIGluXG4gICAgbGV0IGFycmF5ID0gdC5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgcmVtYW5lbnQgPVxuICAgICAgaWYgayA+IHNpemUgdGhlblxuICAgICAgICByZW1hbmVudFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFycmF5LihrKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggKGsgKyAxKSByZW1hbmVudFxuICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgc29sID0gcmVtYW5lbnQgaW5cbiAgICAgICAgICBhdXggKGsgKyAxKSAoZiBwYXJhbWV0ZXIgZXJyb3IgayB4IHNvbClcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCAwIChlcnJvciwgaW5pdClcblxuICBsZXQgZm9yX2FsbCBwYXJhbWV0ZXIgZXJyb3IgZiB0ID1cbiAgICBsZXQgc2l6ZSA9IHQuc2l6ZSBpblxuICAgIGxldCBhcnJheSA9IHQuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIGVycm9yID1cbiAgICAgIGlmIGsgPiBzaXplIHRoZW5cbiAgICAgICAgZXJyb3IsIHRydWVcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhcnJheS4oaykgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IChrICsgMSkgZXJyb3JcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wgPSBmIHBhcmFtZXRlciBlcnJvciBrIHggaW5cbiAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgIGF1eCAoayArIDEpIGVycm9yXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGZhbHNlXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCBlcnJvclxuXG4gIGxldCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIHBhcmFtZXRlciBlcnJvciBmIHQgaW5pdCA9XG4gICAgbGV0IHNpemUgPSB0LnNpemUgaW5cbiAgICBsZXQgYXJyYXkgPSB0LmFycmF5IGluXG4gICAgbGV0IHJlYyBhdXggayByZW1hbmVudCA9XG4gICAgICBpZiBrID4gc2l6ZSB0aGVuXG4gICAgICAgIHJlbWFuZW50XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYXJyYXkuKGspIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGF1eCAoayArIDEpIHJlbWFuZW50XG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBzb2wgPSByZW1hbmVudCBpblxuICAgICAgICAgIGxldCBvdXRwdXRfb3B0ID1cbiAgICAgICAgICAgIHRyeSBTb21lIChmIHBhcmFtZXRlciBlcnJvciBrIHggc29sKSB3aXRoIFN5cy5CcmVhayAtPiBOb25lXG4gICAgICAgICAgaW5cbiAgICAgICAgICAobWF0Y2ggb3V0cHV0X29wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHJlbWFuZW50XG4gICAgICAgICAgfCBTb21lIGEgLT4gYXV4IChrICsgMSkgYSlcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCAwIChlcnJvciwgaW5pdClcblxuICBsZXQgZm9sZDJfY29tbW9uIHBhcmFtZXRlciBlcnJvciBmIHQxIHQyIGluaXQgPVxuICAgIGxldCBzaXplID0gbWluIHQxLnNpemUgdDIuc2l6ZSBpblxuICAgIGxldCBhcnJheTEgPSB0MS5hcnJheSBpblxuICAgIGxldCBhcnJheTIgPSB0Mi5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgcmVtYW5lbnQgPVxuICAgICAgaWYgayA+IHNpemUgdGhlblxuICAgICAgICByZW1hbmVudFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFycmF5MS4oayksIGFycmF5Mi4oaykgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IGF1eCAoayArIDEpIHJlbWFuZW50XG4gICAgICAgIHwgU29tZSB4MSwgU29tZSB4MiAtPlxuICAgICAgICAgIGxldCBlcnJvciwgc29sID0gcmVtYW5lbnQgaW5cbiAgICAgICAgICBhdXggKGsgKyAxKSAoZiBwYXJhbWV0ZXIgZXJyb3IgayB4MSB4MiBzb2wpXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCAoZXJyb3IsIGluaXQpXG5cbiAgbGV0IGZvbGQyIHBhcmFtZXRlciBlcnJvciBmIGcgaCB0MSB0MiBpbml0ID1cbiAgICBsZXQgc2l6ZSA9IG1pbiB0MS5zaXplIHQyLnNpemUgaW5cbiAgICBsZXQgYXJyYXkxID0gdDEuYXJyYXkgaW5cbiAgICBsZXQgYXJyYXkyID0gdDIuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIHJlbWFuZW50ID1cbiAgICAgIGlmIGsgPiBzaXplIHRoZW5cbiAgICAgICAgcmVtYW5lbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZXJyb3IsIHNvbCA9IHJlbWFuZW50IGluXG4gICAgICAgIG1hdGNoIGFycmF5MS4oayksIGFycmF5Mi4oaykgd2l0aFxuICAgICAgICB8IFNvbWUgeDEsIE5vbmUgLT4gYXV4IChrICsgMSkgKGYgcGFyYW1ldGVyIGVycm9yIGsgeDEgc29sKVxuICAgICAgICB8IE5vbmUsIFNvbWUgeDIgLT4gYXV4IChrICsgMSkgKGcgcGFyYW1ldGVyIGVycm9yIGsgeDIgc29sKVxuICAgICAgICB8IFNvbWUgeDEsIFNvbWUgeDIgLT4gYXV4IChrICsgMSkgKGggcGFyYW1ldGVyIGVycm9yIGsgeDEgeDIgc29sKVxuICAgICAgICB8IE5vbmUsIE5vbmUgLT4gYXV4IChrICsgMSkgKGVycm9yLCBzb2wpXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCAoZXJyb3IsIGluaXQpXG5cbiAgbGV0IGZyZWVfYWxsIHBhcmFtZXRlciBlcnJvciB0ID1cbiAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgYSBfIHQgLT4gZnJlZSBwYXJhbWV0ZXIgZXJyb3IgYSB0KVxuICAgICAgdCB0XG5lbmRcblxubW9kdWxlIE5lYXJseV9pbmZpbml0ZV9hcnJheXMgPVxuZnVuY3RvclxuICAoQmFzaWMgOiBTdG9yYWdlIHdpdGggdHlwZSBkaW1lbnNpb24gPSBpbnQgYW5kIHR5cGUga2V5ID0gaW50KVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIGRpbWVuc2lvbiA9IEJhc2ljLmRpbWVuc2lvblxuICAgICAgdHlwZSBrZXkgPSBCYXNpYy5rZXlcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIEJhc2ljLnRcblxuICAgICAgbGV0IGNyZWF0ZSA9IEJhc2ljLmNyZWF0ZVxuICAgICAgbGV0IGNyZWF0ZV9iaWdnZXN0X2tleSA9IEJhc2ljLmNyZWF0ZV9iaWdnZXN0X2tleVxuICAgICAgbGV0IGRpbWVuc2lvbiA9IEJhc2ljLmRpbWVuc2lvblxuICAgICAgbGV0IGtleV9saXN0ID0gQmFzaWMua2V5X2xpc3RcblxuICAgICAgbGV0IGV4cGFuZCBwYXJhbWV0ZXJzIGVycm9yIGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCBvbGRfZGltZW5zaW9uID0gZGltZW5zaW9uIHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgaW5cbiAgICAgICAgaWYgb2xkX2RpbWVuc2lvbiA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBhcnJheVxuICAgICAgICBlbHNlXG4gICAgICAgICAgQmFzaWMuZXhwYW5kX2FuZF9jb3B5IHBhcmFtZXRlcnMgZXJyb3IgYXJyYXlcbiAgICAgICAgICAgIChtYXggMSAobWluIFN5cy5tYXhfYXJyYXlfbGVuZ3RoICgyICogb2xkX2RpbWVuc2lvbikpKVxuXG4gICAgICBsZXQgZ2V0ID0gQmFzaWMuZ2V0XG4gICAgICBsZXQgdW5zYWZlX2dldCA9IEJhc2ljLnVuc2FmZV9nZXRcbiAgICAgIGxldCBleHBhbmRfYW5kX2NvcHkgPSBCYXNpYy5leHBhbmRfYW5kX2NvcHlcbiAgICAgIGxldCBpbml0ID0gQmFzaWMuaW5pdFxuICAgICAgbGV0IGZyZWUgPSBCYXNpYy5mcmVlXG5cbiAgICAgIGxldCByZWMgc2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCBkaW1lbnNpb24gPSBkaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBhcnJheSBpblxuICAgICAgICBpZiBrZXkgPj0gZGltZW5zaW9uIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgYXJyYXknID0gZXhwYW5kIHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgaW5cbiAgICAgICAgICBpZiBhcnJheSA9PSBhcnJheScgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYXJyYXlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgdmFsdWUgYXJyYXknXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIEJhc2ljLnNldCBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhcnJheVxuXG4gICAgICBsZXQgcHJpbnQgPSBCYXNpYy5wcmludFxuXG4gICAgICAoKiBsZXQgcHJpbnRfdmFyX2YgPSBCYXNpYy5wcmludF92YXJfZlxuICAgICAgICAgbGV0IHByaW50X3NpdGVfZiA9IEJhc2ljLnByaW50X3NpdGVfZiopXG4gICAgICBsZXQgaXRlciA9IEJhc2ljLml0ZXJcbiAgICAgIGxldCBmb2xkID0gQmFzaWMuZm9sZFxuICAgICAgbGV0IGZvbGQyID0gQmFzaWMuZm9sZDJcbiAgICAgIGxldCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uID0gQmFzaWMuZm9sZF93aXRoX2ludGVycnVwdGlvblxuICAgICAgbGV0IGZvbGQyX2NvbW1vbiA9IEJhc2ljLmZvbGQyX2NvbW1vblxuICAgICAgbGV0IGZvcl9hbGwgPSBCYXNpYy5mb3JfYWxsXG4gICAgICBsZXQgZnJlZV9hbGwgPSBCYXNpYy5mcmVlX2FsbFxuICAgIGVuZCA6XG4gICAgICBTdG9yYWdlIHdpdGggdHlwZSBrZXkgPSBpbnQgYW5kIHR5cGUgZGltZW5zaW9uID0gaW50KVxuXG5tb2R1bGUgRXh0ZW5kID1cbmZ1bmN0b3JcbiAgKEV4dGVuc2lvbiA6IFN0b3JhZ2UpXG4gIChVbmRlcmx5aW5nIDogU3RvcmFnZSlcbiAgLT5cbiAgKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBkaW1lbnNpb24gPSBFeHRlbnNpb24uZGltZW5zaW9uICogVW5kZXJseWluZy5kaW1lbnNpb25cbiAgICAgIHR5cGUga2V5ID0gRXh0ZW5zaW9uLmtleSAqIFVuZGVybHlpbmcua2V5XG4gICAgICB0eXBlICdhIHQgPSB7IG1hdHJpeDogJ2EgVW5kZXJseWluZy50IEV4dGVuc2lvbi50OyBkaW1lbnNpb246IGRpbWVuc2lvbiB9XG5cbiAgICAgIGxldCBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciBkaW1lbnNpb24gPVxuICAgICAgICBsZXQgZXJyb3IsIG1hdHJpeCA9IEV4dGVuc2lvbi5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAoZnN0IGRpbWVuc2lvbikgaW5cbiAgICAgICAgZXJyb3IsIHsgbWF0cml4OyBkaW1lbnNpb24gfVxuXG4gICAgICBsZXQgY3JlYXRlX2JpZ2dlc3Rfa2V5IHBhcmFtZXRlcnMgZXJyb3Iga2V5ID1cbiAgICAgICAgbGV0IGVycm9yLCBtYXRyaXggPVxuICAgICAgICAgIEV4dGVuc2lvbi5jcmVhdGVfYmlnZ2VzdF9rZXkgcGFyYW1ldGVycyBlcnJvciAoZnN0IGtleSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBtYXRyaXgnID1cbiAgICAgICAgICBVbmRlcmx5aW5nLmNyZWF0ZV9iaWdnZXN0X2tleSBwYXJhbWV0ZXJzIGVycm9yIChzbmQga2V5KVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGRpbWVuc2lvbiA9IEV4dGVuc2lvbi5kaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBtYXRyaXggaW5cbiAgICAgICAgbGV0IGVycm9yLCBkaW1lbnNpb24nID0gVW5kZXJseWluZy5kaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBtYXRyaXgnIGluXG4gICAgICAgIGVycm9yLCB7IG1hdHJpeDsgZGltZW5zaW9uID0gZGltZW5zaW9uLCBkaW1lbnNpb24nIH1cblxuICAgICAgbGV0IGtleV9saXN0IHBhcmFtZXRlcnMgZXJyb3IgdCA9XG4gICAgICAgIGxldCBlcnJvciwgZXh0X2xpc3QgPSBFeHRlbnNpb24ua2V5X2xpc3QgcGFyYW1ldGVycyBlcnJvciB0Lm1hdHJpeCBpblxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGVycm9yLCBsaXN0KSBrZXkgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgdDIgPSBFeHRlbnNpb24uZ2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHQubWF0cml4IGluXG4gICAgICAgICAgICBtYXRjaCB0MiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgbGlzdFxuICAgICAgICAgICAgfCBTb21lIHQyIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbDIgPSBVbmRlcmx5aW5nLmtleV9saXN0IHBhcmFtZXRlcnMgZXJyb3IgdDIgaW5cbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IGtleTIgLT4gKGtleSwga2V5MikgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgIGxpc3QgKExpc3QucmV2IGwyKSApKVxuICAgICAgICAgIChlcnJvciwgW10pIChMaXN0LnJldiBleHRfbGlzdClcblxuICAgICAgbGV0IGV4cGFuZF9hbmRfY29weSBwYXJhbWV0ZXJzIGVycm9yIGFycmF5IF9kaW1lbnNpb24gPVxuICAgICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBhcnJheVxuXG4gICAgICBsZXQgaW5pdCBwYXJhbWV0ZXJzIGVycm9yIGRpbSBmID1cbiAgICAgICAgbGV0IGVycm9yLCBhcnJheSA9XG4gICAgICAgICAgRXh0ZW5zaW9uLmluaXQgcGFyYW1ldGVycyBlcnJvciAoZnN0IGRpbSkgKGZ1biBwIGUgaSAtPlxuICAgICAgICAgICAgICBVbmRlcmx5aW5nLmluaXQgcCBlIChzbmQgZGltKSAoZnVuIHAnIGUnIGogLT4gZiBwJyBlJyAoaSwgaikpKVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgeyBtYXRyaXggPSBhcnJheTsgZGltZW5zaW9uID0gZGltIH1cblxuICAgICAgbGV0IHNldCBwYXJhbWV0ZXJzIGVycm9yIChpLCBqKSB2YWx1ZSBhcnJheSA9XG4gICAgICAgIGxldCBlcnJvciwgb2xkX3VuZGVybHlpbmcgPVxuICAgICAgICAgIEV4dGVuc2lvbi51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaSBhcnJheS5tYXRyaXhcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBvbGRfdW5kZXJseWluZyA9XG4gICAgICAgICAgbWF0Y2ggb2xkX3VuZGVybHlpbmcgd2l0aFxuICAgICAgICAgIHwgU29tZSBvbGRfdW5kZXJseWluZyAtPiBlcnJvciwgb2xkX3VuZGVybHlpbmdcbiAgICAgICAgICB8IE5vbmUgLT4gVW5kZXJseWluZy5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAoc25kIGFycmF5LmRpbWVuc2lvbilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBuZXdfdW5kZXJseWluZyA9XG4gICAgICAgICAgVW5kZXJseWluZy5zZXQgcGFyYW1ldGVycyBlcnJvciBqIHZhbHVlIG9sZF91bmRlcmx5aW5nXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbmV3X21hdHJpeCA9XG4gICAgICAgICAgRXh0ZW5zaW9uLnNldCBwYXJhbWV0ZXJzIGVycm9yIGkgbmV3X3VuZGVybHlpbmcgYXJyYXkubWF0cml4XG4gICAgICAgIGluXG4gICAgICAgICgqIGxldCBvcmRlcmVkID0gb3JkZXJlZCAmJiBFeHRlbnNpb24ub3JkZXJlZCBuZXdfbWF0cml4IGluKilcbiAgICAgICAgZXJyb3IsIHsgYXJyYXkgd2l0aCBtYXRyaXggPSBuZXdfbWF0cml4IH1cblxuICAgICAgbGV0IGdldCBwYXJhbWV0ZXJzIGVycm9yIChpLCBqKSBhcnJheSA9XG4gICAgICAgIGxldCBlcnJvciwgdW5kZXJseWluZyA9IEV4dGVuc2lvbi5nZXQgcGFyYW1ldGVycyBlcnJvciBpIGFycmF5Lm1hdHJpeCBpblxuICAgICAgICBtYXRjaCB1bmRlcmx5aW5nIHdpdGhcbiAgICAgICAgfCBTb21lIHVuZGVybHlpbmcgLT4gVW5kZXJseWluZy5nZXQgcGFyYW1ldGVycyBlcnJvciBqIHVuZGVybHlpbmdcbiAgICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IE5vbmVcblxuICAgICAgbGV0IHVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciAoaSwgaikgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIHVuZGVybHlpbmcgPVxuICAgICAgICAgIEV4dGVuc2lvbi51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaSBhcnJheS5tYXRyaXhcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggdW5kZXJseWluZyB3aXRoXG4gICAgICAgIHwgU29tZSB1bmRlcmx5aW5nIC0+IFVuZGVybHlpbmcudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGogdW5kZXJseWluZ1xuICAgICAgICB8IF8gLT4gZXJyb3IsIE5vbmVcblxuICAgICAgbGV0IGZyZWUgcGFyYW1ldGVycyBlcnJvciAoaSwgaikgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIG9sZF91bmRlcmx5aW5nID1cbiAgICAgICAgICBFeHRlbnNpb24udW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGkgYXJyYXkubWF0cml4XG4gICAgICAgIGluXG5cbiAgICAgICAgbWF0Y2ggb2xkX3VuZGVybHlpbmcgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIF8gPSBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBOb25lIGluXG4gICAgICAgICAgZXJyb3IsIGFycmF5XG4gICAgICAgIHwgU29tZSBvbGRfdW5kZXJseWluZyAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbmV3X3VuZGVybHlpbmcgPVxuICAgICAgICAgICAgVW5kZXJseWluZy5mcmVlIHBhcmFtZXRlcnMgZXJyb3IgaiBvbGRfdW5kZXJseWluZ1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBuZXdfbWF0cml4ID1cbiAgICAgICAgICAgIEV4dGVuc2lvbi5zZXQgcGFyYW1ldGVycyBlcnJvciBpIG5ld191bmRlcmx5aW5nIGFycmF5Lm1hdHJpeFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIHsgYXJyYXkgd2l0aCBtYXRyaXggPSBuZXdfbWF0cml4IH1cblxuICAgICAgbGV0IGRpbWVuc2lvbiBfIGVycm9yIGEgPSBlcnJvciwgYS5kaW1lbnNpb25cblxuICAgICAgbGV0IHByaW50IHBhcmFtZXRlcnMgZXJyb3IgcHJpbnRfb2YgYSA9XG4gICAgICAgIEV4dGVuc2lvbi5wcmludCBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGZ1biBwIGVycm9yIC0+IFVuZGVybHlpbmcucHJpbnQgcCBlcnJvciBwcmludF9vZilcbiAgICAgICAgICBhLm1hdHJpeFxuXG4gICAgICAoKiBsZXQgcHJpbnRfdmFyX2YgZXJyb3IgcHJpbnRfb2YgcGFyYW1ldGVycyBhID1cbiAgICAgICAgIEV4dGVuc2lvbi5wcmludCBlcnJvclxuICAgICAgICAgICAoZnVuIGVycm9yIC0+IFVuZGVybHlpbmcucHJpbnQgZXJyb3IgcHJpbnRfb2YpXG4gICAgICAgICAgIHBhcmFtZXRlcnNcbiAgICAgICAgICAgYS5tYXRyaXhcblxuICAgICAgICAgbGV0IHByaW50X3NpdGVfZiBlcnJvciBwcmludF9vZiBwYXJhbWV0ZXJzIGEgPVxuICAgICAgICAgRXh0ZW5zaW9uLnByaW50IGVycm9yXG4gICAgICAgICAgIChmdW4gZXJyb3IgLT4gVW5kZXJseWluZy5wcmludCBlcnJvciBwcmludF9vZilcbiAgICAgICAgICAgcGFyYW1ldGVyc1xuICAgICAgICAgICBhLm1hdHJpeCopXG5cbiAgICAgIGxldCBpdGVyIHBhcmFtZXRlciBlcnJvciBmIGEgPVxuICAgICAgICBFeHRlbnNpb24uaXRlciBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGEgLT5cbiAgICAgICAgICAgIFVuZGVybHlpbmcuaXRlciBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgaycgYScgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgKGssIGsnKSBhJylcbiAgICAgICAgICAgICAgYSlcbiAgICAgICAgICBhLm1hdHJpeFxuXG4gICAgICBsZXQgZm9yX2FsbCBwYXJhbWV0ZXIgZXJyb3IgZiBhID1cbiAgICAgICAgRXh0ZW5zaW9uLmZvcl9hbGwgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgayBhIC0+XG4gICAgICAgICAgICBVbmRlcmx5aW5nLmZvcl9hbGwgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsnIGEnIC0+IGYgcGFyYW1ldGVyIGVycm9yIChrLCBrJykgYScpXG4gICAgICAgICAgICAgIGEpXG4gICAgICAgICAgYS5tYXRyaXhcblxuICAgICAgbGV0IGZvbGRfZ2VuIGZvbGQxIGZvbGQyIHBhcmFtZXRlciBlcnJvciBmIGEgYiA9XG4gICAgICAgIGZvbGQxIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSBiIC0+XG4gICAgICAgICAgICBmb2xkMiBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgaycgYScgYiAtPiBmIHBhcmFtZXRlciBlcnJvciAoaywgaycpIGEnIGIpXG4gICAgICAgICAgICAgIGEgYilcbiAgICAgICAgICBhLm1hdHJpeCBiXG5cbiAgICAgIGxldCBmb2xkIHBhcmFtZXRlciBlcnJvciBmIGEgYiA9XG4gICAgICAgIGZvbGRfZ2VuIEV4dGVuc2lvbi5mb2xkIFVuZGVybHlpbmcuZm9sZCBwYXJhbWV0ZXIgZXJyb3IgZiBhIGJcblxuICAgICAgbGV0IGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gcGFyYW1ldGVyIGVycm9yIGYgYSBiID1cbiAgICAgICAgZm9sZF9nZW4gRXh0ZW5zaW9uLmZvbGRfd2l0aF9pbnRlcnJ1cHRpb25cbiAgICAgICAgICBVbmRlcmx5aW5nLmZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gcGFyYW1ldGVyIGVycm9yIGYgYSBiXG5cbiAgICAgIGxldCBmb2xkMl9jb21tb24gcGFyYW1ldGVyIGVycm9yIGYgYSBiIGMgPVxuICAgICAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSBjIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGdldCA9IHVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGsgYiBpblxuICAgICAgICAgICAgbWF0Y2ggZ2V0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgY1xuICAgICAgICAgICAgfCBTb21lIGIgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgayBhIGIgYylcbiAgICAgICAgICBhIGNcblxuICAgICAgbGV0IGZvbGQyIHBhcmFtZXRlciBlcnJvciBmIGcgaCBhIGIgYyA9XG4gICAgICAgIGxldCBlcnJvciwgYyA9XG4gICAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSBjIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgZ2V0ID0gdW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgayBiIGluXG4gICAgICAgICAgICAgIG1hdGNoIGdldCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmIHBhcmFtZXRlciBlcnJvciBrIGEgY1xuICAgICAgICAgICAgICB8IFNvbWUgYiAtPiBoIHBhcmFtZXRlciBlcnJvciBrIGEgYiBjKVxuICAgICAgICAgICAgYSBjXG4gICAgICAgIGluXG4gICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgayBiIGMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgZ2V0ID0gdW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgayBhIGluXG4gICAgICAgICAgICBtYXRjaCBnZXQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGcgcGFyYW1ldGVyIGVycm9yIGsgYiBjXG4gICAgICAgICAgICB8IFNvbWUgXyAtPiBlcnJvciwgYylcbiAgICAgICAgICBiIGNcblxuICAgICAgbGV0IGZyZWVfYWxsIHBhcmFtZXRlciBlcnJvciB0ID1cbiAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBhIF8gdCAtPiBmcmVlIHBhcmFtZXRlciBlcnJvciBhIHQpXG4gICAgICAgICAgdCB0XG4gICAgZW5kIDpcbiAgICAgIFN0b3JhZ2VcbiAgICAgICAgd2l0aCB0eXBlIGtleSA9IEV4dGVuc2lvbi5rZXkgKiBVbmRlcmx5aW5nLmtleVxuICAgICAgICAgYW5kIHR5cGUgZGltZW5zaW9uID0gRXh0ZW5zaW9uLmRpbWVuc2lvbiAqIFVuZGVybHlpbmcuZGltZW5zaW9uKVxuXG5tb2R1bGUgUXVpY2tfa2V5X2xpc3QgPVxuZnVuY3RvclxuICAoQmFzaWMgOiBTdG9yYWdlKVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIGRpbWVuc2lvbiA9IEJhc2ljLmRpbWVuc2lvblxuICAgICAgdHlwZSBrZXkgPSBCYXNpYy5rZXlcbiAgICAgIHR5cGUgJ2EgdCA9IHsgYmFzaWM6ICdhIEJhc2ljLnQ7IGtleXM6IGtleSBsaXN0IH1cblxuICAgICAgbGV0IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIGkgPVxuICAgICAgICBsZXQgZXJyb3IsIGJhc2ljID0gQmFzaWMuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgaSBpblxuICAgICAgICBlcnJvciwgeyBiYXNpYzsga2V5cyA9IFtdIH1cblxuICAgICAgbGV0IGNyZWF0ZV9iaWdnZXN0X2tleSBwYXJhbWV0ZXJzIGVycm9yIGtleSA9XG4gICAgICAgIGxldCBlcnJvciwgYmFzaWMgPSBCYXNpYy5jcmVhdGVfYmlnZ2VzdF9rZXkgcGFyYW1ldGVycyBlcnJvciBrZXkgaW5cbiAgICAgICAgZXJyb3IsIHsgYmFzaWM7IGtleXMgPSBbXSB9XG5cbiAgICAgIGxldCBrZXlfbGlzdCBfcGFyYW1ldGVycyBlcnJvciB0ID0gZXJyb3IsIHQua2V5c1xuXG4gICAgICBsZXQgZXhwYW5kX2FuZF9jb3B5IHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgaiA9XG4gICAgICAgIGxldCBlcnJvciwgYmFzaWMgPVxuICAgICAgICAgIEJhc2ljLmV4cGFuZF9hbmRfY29weSBwYXJhbWV0ZXJzIGVycm9yIGFycmF5LmJhc2ljIGpcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIHsgYmFzaWM7IGtleXMgPSBhcnJheS5rZXlzIH1cblxuICAgICAgbGV0IGluaXQgcGFyYW1ldGVycyBlcnJvciBuIGYgPVxuICAgICAgICBsZXQgZXJyb3IsIGJhc2ljID0gQmFzaWMuaW5pdCBwYXJhbWV0ZXJzIGVycm9yIG4gZiBpblxuICAgICAgICBsZXQgZXJyb3IsIGtleXMgPVxuICAgICAgICAgIEJhc2ljLmZvbGQgcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgICAgKGZ1biBfIGUgayBfIGxpc3QgLT4gZSwgayA6OiBsaXN0KVxuICAgICAgICAgICAgYmFzaWMgW11cbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIHsgYmFzaWM7IGtleXMgfVxuXG4gICAgICBsZXQgc2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCBvbGQgPSBCYXNpYy51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5LmJhc2ljIGluXG4gICAgICAgIGxldCBuZXdfYXJyYXkgPVxuICAgICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT4gYXJyYXlcbiAgICAgICAgICB8IE5vbmUgLT4geyBhcnJheSB3aXRoIGtleXMgPSBrZXkgOjogYXJyYXkua2V5cyB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbmV3X2Jhc2ljID1cbiAgICAgICAgICBCYXNpYy5zZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgdmFsdWUgbmV3X2FycmF5LmJhc2ljXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCB7IG5ld19hcnJheSB3aXRoIGJhc2ljID0gbmV3X2Jhc2ljIH1cblxuICAgICAgbGV0IGZyZWUgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIGJhc2ljID0gQmFzaWMuZnJlZSBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheS5iYXNpYyBpblxuICAgICAgICBlcnJvciwgeyBhcnJheSB3aXRoIGJhc2ljIH1cblxuICAgICAgbGV0IGdldCBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheSA9XG4gICAgICAgIEJhc2ljLmdldCBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheS5iYXNpY1xuXG4gICAgICBsZXQgdW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheSA9XG4gICAgICAgIEJhc2ljLnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkuYmFzaWNcblxuICAgICAgbGV0IGRpbWVuc2lvbiBwYXJhbWV0ZXJzIGVycm9yIGEgPVxuICAgICAgICBCYXNpYy5kaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBhLmJhc2ljXG5cbiAgICAgIGxldCBwcmludCBlcnJvciBmIHBhcmFtZXRlcnMgYSA9IEJhc2ljLnByaW50IGVycm9yIGYgcGFyYW1ldGVycyBhLmJhc2ljXG5cbiAgICAgICgqIGxldCBwcmludF92YXJfZiBlcnJvciBmIHBhcmFtZXRlcnMgYSA9XG4gICAgICAgICBCYXNpYy5wcmludF92YXJfZiBlcnJvciBmIHBhcmFtZXRlcnMgYS5iYXNpY1xuXG4gICAgICAgICBsZXQgcHJpbnRfc2l0ZV9mIGVycm9yIGYgcGFyYW1ldGVycyBhID1cbiAgICAgICAgIEJhc2ljLnByaW50X3NpdGVfZiBlcnJvciBmIHBhcmFtZXRlcnMgYS5iYXNpYyopXG5cbiAgICAgIGxldCBpdGVyIHBhcmFtZXRlcnMgZXJyb3IgZiBhID1cbiAgICAgICAgbGV0IGVycm9yLCBsaXN0ID0ga2V5X2xpc3QgcGFyYW1ldGVycyBlcnJvciBhIGluXG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBlcnJvciBrIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGltID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgayBhIGluXG4gICAgICAgICAgICBtYXRjaCBpbSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBfID0gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgKCkgaW5cbiAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIHwgU29tZSBpbSAtPiBmIHBhcmFtZXRlcnMgZXJyb3IgayBpbSlcbiAgICAgICAgICBlcnJvciAoTGlzdC5yZXYgbGlzdClcblxuICAgICAgbGV0IGZvbGQgcGFyYW1ldGVycyBlcnJvciBmIGEgYiA9XG4gICAgICAgIGxldCBlcnJvciwgbGlzdCA9IGtleV9saXN0IHBhcmFtZXRlcnMgZXJyb3IgYSBpblxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGVycm9yLCBiKSBrIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGltID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgayBhIGluXG4gICAgICAgICAgICBtYXRjaCBpbSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYlxuICAgICAgICAgICAgfCBTb21lIGltIC0+IGYgcGFyYW1ldGVycyBlcnJvciBrIGltIGIpXG4gICAgICAgICAgKGVycm9yLCBiKSAoTGlzdC5yZXYgbGlzdClcblxuICAgICAgbGV0IGZvcl9hbGwgcGFyYW1ldGVycyBlcnJvciBmIGEgPVxuICAgICAgICBsZXQgZXJyb3IsIGxpc3QgPSBrZXlfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIGEgaW5cbiAgICAgICAgbGV0IHJlYyBhdXggbCBlcnJvciA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBlcnJvciwgdHJ1ZVxuICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICAobWF0Y2ggZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaCBhIHdpdGhcbiAgICAgICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCAoKSA9IEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0ICgpIGluXG4gICAgICAgICAgICAgIGF1eCB0IGVycm9yXG4gICAgICAgICAgICB8IGVycm9yLCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBib29sID0gZiBwYXJhbWV0ZXJzIGVycm9yIGggZGF0YSBpblxuICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICBhdXggdCBlcnJvclxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGZhbHNlKVxuICAgICAgICBpblxuICAgICAgICBhdXggbGlzdCBlcnJvclxuXG4gICAgICBsZXQgZnJlZV9hbGwgcGFyYW1ldGVyIGVycm9yIHQgPVxuICAgICAgICBsZXQgZXJyb3IsIHQgPVxuICAgICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBhIF8gdCAtPiBmcmVlIHBhcmFtZXRlciBlcnJvciBhIHQpXG4gICAgICAgICAgICB0IHRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIHsgdCB3aXRoIGtleXMgPSBbXSB9XG5cbiAgICAgIGxldCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIHBhcmFtZXRlcnMgZXJyb3IgZiBhIGIgPVxuICAgICAgICBsZXQgZXJyb3IsIGxpc3QgPSBrZXlfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIGEgaW5cbiAgICAgICAgbGV0IHJlYyBhdXggbGlzdCBvdXRwdXQgPVxuICAgICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICAgIHwgW10gLT4gb3V0cHV0XG4gICAgICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICAgIGxldCBvdXRwdXRfb3B0ID1cbiAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBpbSA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIGhlYWQgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc25kIG91dHB1dCBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGltIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSAoaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYilcbiAgICAgICAgICAgICAgICB8IFNvbWUgaW0gLT4gU29tZSAoZiBwYXJhbWV0ZXJzIGVycm9yIGhlYWQgaW0gYilcbiAgICAgICAgICAgICAgd2l0aCBTeXMuQnJlYWsgLT4gTm9uZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChtYXRjaCBvdXRwdXRfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBvdXRwdXRcbiAgICAgICAgICAgIHwgU29tZSBvdXRwdXQgLT4gYXV4IHRhaWwgb3V0cHV0KVxuICAgICAgICBpblxuICAgICAgICBhdXggbGlzdCAoZXJyb3IsIGIpXG5cbiAgICAgIGxldCBmb2xkMl9jb21tb24gcGFyYW1ldGVyIGVycm9yIGYgYSBiIGMgPVxuICAgICAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSBjIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGdldCA9IHVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGsgYiBpblxuICAgICAgICAgICAgbWF0Y2ggZ2V0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgY1xuICAgICAgICAgICAgfCBTb21lIGIgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgayBhIGIgYylcbiAgICAgICAgICBhIGNcblxuICAgICAgbGV0IGZvbGQyIHBhcmFtZXRlciBlcnJvciBmIGcgaCBhIGIgYyA9XG4gICAgICAgIGxldCBlcnJvciwgYyA9XG4gICAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSBjIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgZ2V0ID0gdW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgayBiIGluXG4gICAgICAgICAgICAgIG1hdGNoIGdldCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmIHBhcmFtZXRlciBlcnJvciBrIGEgY1xuICAgICAgICAgICAgICB8IFNvbWUgYiAtPiBoIHBhcmFtZXRlciBlcnJvciBrIGEgYiBjKVxuICAgICAgICAgICAgYSBjXG4gICAgICAgIGluXG4gICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgayBiIGMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgZ2V0ID0gdW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgayBhIGluXG4gICAgICAgICAgICBtYXRjaCBnZXQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGcgcGFyYW1ldGVyIGVycm9yIGsgYiBjXG4gICAgICAgICAgICB8IFNvbWUgXyAtPiBlcnJvciwgYylcbiAgICAgICAgICBiIGNcbiAgICBlbmQgOlxuICAgICAgU3RvcmFnZSB3aXRoIHR5cGUga2V5ID0gQmFzaWMua2V5IGFuZCB0eXBlIGRpbWVuc2lvbiA9IEJhc2ljLmRpbWVuc2lvbilcblxubW9kdWxlIE5lYXJseV9pbmZfSW1wZXJhdGlmID0gTmVhcmx5X2luZmluaXRlX2FycmF5cyAoSW50X3N0b3JhZ2VfaW1wZXJhdGlmKVxubW9kdWxlIFF1aWNrX05lYXJseV9pbmZfSW1wZXJhdGlmID0gUXVpY2tfa2V5X2xpc3QgKE5lYXJseV9pbmZfSW1wZXJhdGlmKVxuXG5tb2R1bGUgSW50X0ludF9zdG9yYWdlX0ltcGVyYXRpZl9JbXBlcmF0aWYgPVxuICBFeHRlbmQgKEludF9zdG9yYWdlX2ltcGVyYXRpZikgKEludF9zdG9yYWdlX2ltcGVyYXRpZilcblxubW9kdWxlIE5lYXJseV9JbmZfSW50X0ludF9zdG9yYWdlX0ltcGVyYXRpZl9JbXBlcmF0aWYgPVxuICBFeHRlbmQgKFF1aWNrX05lYXJseV9pbmZfSW1wZXJhdGlmKSAoUXVpY2tfTmVhcmx5X2luZl9JbXBlcmF0aWYpXG5cbm1vZHVsZSBOZWFybHlfSW5mX0ludF9JbnRfSW50X3N0b3JhZ2VfSW1wZXJhdGlmX0ltcGVyYXRpZl9JbXBlcmF0aWYgPVxuICBFeHRlbmRcbiAgICAoUXVpY2tfTmVhcmx5X2luZl9JbXBlcmF0aWYpXG4gICAgKEV4dGVuZCAoUXVpY2tfTmVhcmx5X2luZl9JbXBlcmF0aWYpIChRdWlja19OZWFybHlfaW5mX0ltcGVyYXRpZikpXG4iLCIoKipcbiAgICAqIHVuaW9uX2ZpbmQubWxcbiAgICAqIG9wZW5rYXBwYVxuICAgICogSsOpcsO0bWUgRmVyZXQgJiBMeSBLaW0gUXV5ZW4sIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICAgKlxuICAgICogQ3JlYXRpb246IDIwMTUsIHRoZSAxMXRoIG9mIE1hcmNoXG4gICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEFwciAxOCAyMDE4PlxuICAgICogKlxuICAgICogVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHByaW1pdGl2ZXMgdG8gZGVhbCB3aXRoIHVuaW9uIGZpbmQgYWxnb3JpdGhtIHdpdGhcbiAgICAqIHBhdGggY29tcHJlc3Npb25cbiAgICAqXG4gICAgKiBDb3B5cmlnaHQgMjAxMCwyMDExIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgICogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgdHlwZSBVbmlvbl9maW5kID0gc2lnXG4gIHR5cGUga2V5XG4gIHR5cGUgZGltZW5zaW9uXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBkaW1lbnNpb24gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiB0XG5cbiAgdmFsIHVuaW9uX2xpc3QgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICB0IC0+XG4gICAga2V5IGxpc3QgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiB0XG5cbiAgdmFsIGl0ZXJpIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBrZXkgLT5cbiAgICBrZXkgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIpIC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlclxuXG4gIHZhbCBnZXRfcmVwcmVzZW50ZW50IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHQgKiBrZXlcbmVuZFxuXG5tb2R1bGUgTWFrZSA9XG5mdW5jdG9yXG4gIChTdG9yYWdlIDogSW50X3N0b3JhZ2UuU3RvcmFnZSlcbiAgLT5cbiAgKCogICAgZnVuY3RvciAoTWFwOiBNYXBfd3JhcHBlci5NYXBfd2l0aF9sb2dzKSAtPiopXG4gICAgKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBrZXkgPSBTdG9yYWdlLmtleVxuICAgICAgdHlwZSB0ID0ga2V5IFN0b3JhZ2UudFxuICAgICAgdHlwZSBkaW1lbnNpb24gPSBTdG9yYWdlLmRpbWVuc2lvblxuXG4gICAgICBsZXQgY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgbiA9XG4gICAgICAgIFN0b3JhZ2UuaW5pdCBwYXJhbWV0ZXJzIGVycm9yIG4gKGZ1biBfIGUgeCAtPiBlLCB4KVxuXG4gICAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgKCogZmluZFNldChlKTogd2hpY2ggcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgcmVwcmVzZW50YXRpdmUgb2YgdGhlIHNldFxuICAgICAgICAgY29udGFpbmluZyBlLiBTaW5jZSB0aGUgc2V0IGFyZSBkaXNqb2ludCwgZSBjb250YWludGVkIGluIG9uZSBzZXRcbiAgICAgICAgIG9ubHkuIFRoZXJlZm9yZSwgdGhlIHJldHVybmVkIHJlcHJlc2VudGF0aXZlIGNhbiBiZSB1bmlxdWVseSBkZXRlcm1pbmVkLlxuICAgICAgKilcblxuICAgICAgbGV0IGZpbmRTZXQgcGFyYW1ldGVyIGVycm9yIGUgdCA9XG4gICAgICAgIGxldCBwb2ludFRvUm9vdCBwYXJhbWV0ZXIgZXJyb3Igcm9vdCBsIHQgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgdCkgaSAtPiBTdG9yYWdlLnNldCBwYXJhbWV0ZXIgZXJyb3IgaSByb290IHQpXG4gICAgICAgICAgICAoZXJyb3IsIHQpIGxcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlYyBoZWxwZXIgcGFyYW1ldGVyIGVycm9yIGUgbCB0ID1cbiAgICAgICAgICBsZXQgZXJyb3IsIHBhcmVudCA9IFN0b3JhZ2UudW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgZSB0IGluXG4gICAgICAgICAgbWF0Y2ggcGFyZW50IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZXJyb3IsICh0LCBlKVxuICAgICAgICAgIHwgU29tZSBwIHdoZW4gcCA8PiBlIC0+IGhlbHBlciBwYXJhbWV0ZXIgZXJyb3IgcCAoZSA6OiBsKSB0XG4gICAgICAgICAgfCBTb21lIHAgLT5cbiAgICAgICAgICAgICgqIGJhc2UgY2FzZTogd2UgaGl0IHRoZSByb290IG5vZGUgbWFrZSBhbGwgY29sbGVjdGVkIG5vZGVzIG9uIHRoZVxuICAgICAgICAgICAgICAgcGF0aCBwb2ludCB0byB0aGUgcm9vdC4gQW5kIHJldHVybiB0aGUgcm9vdCBhZnRlcndhcmRzICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIHQgPSBwb2ludFRvUm9vdCBwYXJhbWV0ZXIgZXJyb3IgcCBsIHQgaW5cbiAgICAgICAgICAgIGVycm9yLCAodCwgcClcbiAgICAgICAgaW5cbiAgICAgICAgaGVscGVyIHBhcmFtZXRlciBlcnJvciBlIFtdIHRcblxuICAgICAgbGV0IGdldF9yZXByZXNlbnRlbnQgcGFyYW1ldGVycyBlcnJvciBlIHQgPVxuICAgICAgICBsZXQgZXJyb3IsICh1bmlvbiwgZWx0KSA9IGZpbmRTZXQgcGFyYW1ldGVycyBlcnJvciBlIHQgaW5cbiAgICAgICAgZXJyb3IsIHVuaW9uLCBlbHRcbiAgICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAoKlVOSU9OKilcblxuICAgICAgbGV0IHVuaW9uIHBhcmFtZXRlciBlcnJvciB4IHkgdCA9XG4gICAgICAgIGxldCBlcnJvciwgKHQsIHJvb3RfeCkgPSBmaW5kU2V0IHBhcmFtZXRlciBlcnJvciB4IHQgaW5cbiAgICAgICAgbGV0IGVycm9yLCAodCwgcm9vdF95KSA9IGZpbmRTZXQgcGFyYW1ldGVyIGVycm9yIHkgdCBpblxuICAgICAgICBTdG9yYWdlLnNldCBwYXJhbWV0ZXIgZXJyb3Igcm9vdF94IHJvb3RfeSB0XG5cbiAgICAgICgqbGV0IGVxX2NsYXNzZXNfbWFwIHBhcmFtZXRlciBlcnJvciBhID1cbiAgICAgICAgKCogIGxldCBjbGFzc2VzID0gQ2NrYXBwYV9zaWcuU2l0ZV9tYXBfYW5kX3NldC5NYXAuZW1wdHkgaW4qKVxuICAgICAgICA9PT09PT09XG4gICAgICAgIGxldCB1bmlvbiB4IHkgYSA9XG4gICAgICAgIGxldCByb290X3ggPSBmaW5kU2V0IHggYSBpblxuICAgICAgICBsZXQgcm9vdF95ID0gZmluZFNldCB5IGEgaW5cbiAgICAgICAgbGV0IF8gPSBhLihyb290X3gpIDwtIHJvb3RfeSBpblxuICAgICAgICAoKmxldCBfID0gcHJpbnRfc3RyaW5nIFwiZHVtcDogXCI7IGR1bXAgYTsgcHJpbnRfc3RyaW5nIFwiXFxuXCIgaW4qKVxuICAgICAgICBhXG5cbiAgICAgICAgbGV0IGVxX2NsYXNzZXNfbWFwIHBhcmFtZXRlciBlcnJvciBhID1cbiAgICAgICAgbGV0IGNsYXNzZXMgPSBDa2FwcGFfc2lnLlNpdGVfbWFwX2FuZF9zZXQuTWFwLmVtcHR5IGluXG4gICAgICAgID4+Pj4+Pj4gcmVtb3ZlIGRvdWJsaWNhdGUgbW9kdWxlLCB0b2RvOiBoaWRkZW4gdHlwZSBzaXRlX25hbWVcbiAgICAgICAgbGV0IHNpemUgPSBBcnJheS5sZW5ndGggYSBpblxuICAgICAgICBsZXQgcmVjIGF1eCBrIChjbGFzc2VzLHVuaW9uX2xpc3QpID1cbiAgICAgICAgICBpZiAgayA8IDBcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBjbGFzc2VzLCB1bmlvbl9saXN0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKCpmaW5kIHRoZSBwYXJlbnQgb2YgdGhlIHVuaW9uKilcbiAgICAgICAgICAgIGxldCByZXAgPSBmaW5kU2V0IGsgYSBpblxuICAgICAgICAgICAgKCpjaGVjayBpZiBpbnNpZGUgY2xhc3NlcyBoYXMgYWxyZWFkeSBoYXMgdGhpcyBwYXJlbnQqKVxuICAgICAgICA8PDw8PDw8IEhFQURcbiAgICAgICAgICAgIGxldCBlcnJvcicsZ2V0X3JlcCA9XG4gICAgICAgICgqICAgICAgICBDY2thcHBhX3NpZy5TaXRlX21hcF9hbmRfc2V0Lk1hcC5maW5kX2RlZmF1bHQgcGFyYW1ldGVyIGVycm9yIFtdIHJlcCBjbGFzc2VzIGluKilcbiAgICAgICAgICAgIGxldCBlcnJvciA9IEV4Y2VwdGlvbi5jaGVjayB3YXJuIHBhcmFtZXRlciBlcnJvciBlcnJvcicgKFNvbWUgXCJsaW5lIDczXCIpIEV4aXQgaW5cbiAgICAgICAgICAgICgqc3RvcmUgdGhlIHJlc3VsdCBpbnNpZGUgY2xhc3NlcyopXG4gICAgICAgICgqICAgICAgbGV0IGVycm9yLGNsYXNzZXMgPVxuICAgICAgICBDY2thcHBhX3NpZy5TaXRlX21hcF9hbmRfc2V0Lk1hcC5hZGRfb3Jfb3ZlcndyaXRlXG4gICAgICAgID09PT09PT1cbiAgICAgICAgICAgIGxldCBlcnJvcicsIGdldF9yZXAgPVxuICAgICAgICAgICAgICBDa2FwcGFfc2lnLlNpdGVfbWFwX2FuZF9zZXQuTWFwLmZpbmRfZGVmYXVsdFxuICAgICAgICAgICAgICAgIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgICByZXBcbiAgICAgICAgICAgICAgICBjbGFzc2VzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yID0gRXhjZXB0aW9uLmNoZWNrIHdhcm4gcGFyYW1ldGVyIGVycm9yIGVycm9yJyAoU29tZSBcImxpbmUgNzNcIikgRXhpdCBpblxuICAgICAgICAgICAgKCpzdG9yZSB0aGUgcmVzdWx0IGluc2lkZSBjbGFzc2VzKilcbiAgICAgICAgICAgIGxldCBlcnJvcixjbGFzc2VzID1cbiAgICAgICAgQ2thcHBhX3NpZy5TaXRlX21hcF9hbmRfc2V0Lk1hcC5hZGRfb3Jfb3ZlcndyaXRlXG4gICAgICAgID4+Pj4+Pj4gcmVtb3ZlIGRvdWJsaWNhdGUgbW9kdWxlLCB0b2RvOiBoaWRkZW4gdHlwZSBzaXRlX25hbWVcbiAgICAgICAgcGFyYW1ldGVyXG4gICAgICAgIGVycm9yXG4gICAgICAgICAgICAgICAgcmVwXG4gICAgICAgIChrIDo6IGdldF9yZXApXG4gICAgICAgIGNsYXNzZXNcbiAgICAgICAgICAgIGluKilcbiAgICAgICAgICAgIGF1eCAoayAtIDEpIChjbGFzc2VzLCB1bmlvbl9saXN0KVxuICAgICAgICBpblxuICAgICAgICBsZXQgY2xhc3NlcywgYSA9IGF1eCAoc2l6ZSAtIDEpIChjbGFzc2VzLCBhKSBpblxuICAgICAgICBjbGFzc2VzLCBhKilcblxuICAgICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICgqIGNvbXB1dGUgdW5pb24tZmluZCBpbiBhIGxpc3QqKVxuXG4gICAgICBsZXQgdW5pb25fbGlzdCBwYXJhbWV0ZXIgZXJyb3IgYSAobGlzdCA6IGtleSBsaXN0KSA9XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGVycm9yLCBhXG4gICAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgICAgbGV0IHJlYyBhdXggcGFyYW1ldGVyIHRvX3Zpc2l0IGVycm9yIGEgPVxuICAgICAgICAgICAgbWF0Y2ggdG9fdmlzaXQgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPiBlcnJvciwgYVxuICAgICAgICAgICAgfCB0JyA6OiBxJyAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIHVuaW9uX2FycmF5ID0gdW5pb24gcGFyYW1ldGVyIGVycm9yIHQgdCcgYSBpblxuICAgICAgICAgICAgICBhdXggcGFyYW1ldGVyIHEnIGVycm9yIHVuaW9uX2FycmF5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggcGFyYW1ldGVyIHEgZXJyb3IgYVxuXG4gICAgICBsZXQgaXRlcmkgPSBTdG9yYWdlLml0ZXJcbiAgICBlbmQgOlxuICAgICAgVW5pb25fZmluZFxuICAgICAgICB3aXRoIHR5cGUga2V5ID0gU3RvcmFnZS5rZXlcbiAgICAgICAgIGFuZCB0eXBlIHQgPSBTdG9yYWdlLmtleSBTdG9yYWdlLnRcbiAgICAgICAgIGFuZCB0eXBlIGRpbWVuc2lvbiA9IFN0b3JhZ2UuZGltZW5zaW9uKVxuIiwibGV0IGZzdF9vcHRpb24geCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFNvbWUgKHgsIF8pIC0+IFNvbWUgeFxuICB8IF8gLT4gTm9uZVxuXG5sZXQgc25kX29wdGlvbiB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgU29tZSAoXywgeCkgLT4gU29tZSB4XG4gIHwgXyAtPiBOb25lXG5cbigqIE9DYW1sIG1hbnVhbDogSW4gcGFydGljdWxhciwgaWYgeW91IHdhbnQgYSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdFxuICAgbWF0Y2hlcyBhIHNpbmdsZSBiYWNrc2xhc2ggY2hhcmFjdGVyLCB5b3UgbmVlZCB0byBxdW90ZSBpdCBpbiB0aGVcbiAgIGFyZ3VtZW50IHRvIHJlZ2V4cCAoYWNjb3JkaW5nIHRvIHRoZSBsYXN0IGl0ZW0gb2YgdGhlIGxpc3QgYWJvdmUpIGJ5XG4gICBhZGRpbmcgYSBzZWNvbmQgYmFja3NsYXNoLiBUaGVuIHlvdSBuZWVkIHRvIHF1b3RlIGJvdGggYmFja3NsYXNoZXNcbiAgIChhY2NvcmRpbmcgdG8gdGhlIHN5bnRheCBvZiBzdHJpbmcgY29uc3RhbnRzIGluIE9DYW1sKSBieSBkb3VibGluZ1xuICAgdGhlbSBhZ2Fpbiwgc28geW91IG5lZWQgdG8gd3JpdGUgZm91ciBiYWNrc2xhc2ggY2hhcmFjdGVyczogU3RyLnJlZ2V4cFxuICAgXCJcXFxcXFxcXFwiLiAqKVxuXG4oKiogZG90IG91dHB1dCopXG5sZXQgZXNjYXBlX2xhYmVsX2luX2RvdCBzID1cbiAgU3RyLmdsb2JhbF9zdWJzdGl0dXRlIChTdHIucmVnZXhwIFwiW1xcXFxcXFwiXFxcXFxcXFxdXCIpXG4gICAgKGZ1biB4IC0+XG4gICAgICBtYXRjaCBTdHIubWF0Y2hlZF9zdHJpbmcgeCB3aXRoXG4gICAgICB8IFwiXFxcIlwiIC0+IFwiXFxcXFxcXCJcIlxuICAgICAgfCBcIlxcXFxcIiAtPiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgc1xuXG5sZXQgbWFrZV9pZF9jb21wYXRpYmxlX3dpdGhfZG90X2Zvcm1hdCBwYXJhbWV0ZXJzIGVycm9yIHN0cmluZyA9XG4gIGxldCB0YWIgPVxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X21ha2VfbGFiZWxzX2NvbXBhdGlibGVfd2l0aF9kb3QgcGFyYW1ldGVyc1xuICBpblxuICBsZXQgcmVjIGF1eCBwb3MgbCA9XG4gICAgaWYgcG9zIDwgMCB0aGVuXG4gICAgICBsXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2hhciA9IFN0cmluZy5nZXQgc3RyaW5nIHBvcyBpblxuICAgICAgbWF0Y2ggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuQ2hhck1hcC5maW5kX29wdGlvbiBjaGFyIHRhYiB3aXRoXG4gICAgICB8IFNvbWUgbGlzdGVfY2hhciAtPlxuICAgICAgICBhdXggKHBvcyAtIDEpXG4gICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgKGZ1biBsaXN0IGNoYXIgLT4gY2hhciA6OiBsaXN0KVxuICAgICAgICAgICAgIGwgKExpc3QucmV2IGxpc3RlX2NoYXIpKVxuICAgICAgfCBOb25lIC0+IGF1eCAocG9zIC0gMSkgKGNoYXIgOjogbClcbiAgICApXG4gIGluXG4gIGxldCBsID0gYXV4IChTdHJpbmcubGVuZ3RoIHN0cmluZyAtIDEpIFtdIGluXG4gIGVycm9yLCBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2X21hcCAoU3RyaW5nLm1ha2UgMSkgKExpc3QucmV2IGwpKVxuXG5sZXQgc29ydGVkX3BhcnRzX29mX2xpc3QgbiBsaXN0ID1cbiAgbGV0IGxpc3QgPSBMaXN0LnNvcnQgKGZ1biBhIGIgLT4gY29tcGFyZSBiIGEpIGxpc3QgaW5cbiAgbGV0IHJlYyBhdXggayBsaXN0IHN1ZmZpeCBvdXRwdXQgPVxuICAgIGlmIGsgPSAwIHRoZW5cbiAgICAgIHN1ZmZpeCA6OiBvdXRwdXRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgfCBoIDo6IHQgLT4gYXV4IGsgdCBzdWZmaXggKGF1eCAoayAtIDEpIHQgKGggOjogc3VmZml4KSBvdXRwdXQpXG4gICAgICB8IFtdIC0+IG91dHB1dFxuICAgIClcbiAgaW5cbiAgYXV4IG4gbGlzdCBbXSBbXVxuXG5sZXQgc29ydF9saXN0IGtleSBwYXJhbWV0ZXIgZXJyb3IgbGlzdCA9XG4gIGxldCBlcnJvciwgcmVmaW5lZF9saXN0ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZXJyb3IsIHJlZmluZWRfbGlzdCkgYSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGtleSA9IGtleSBwYXJhbWV0ZXIgZXJyb3IgYSBpblxuICAgICAgICBlcnJvciwgKGtleSwgYSkgOjogcmVmaW5lZF9saXN0KVxuICAgICAgKGVycm9yLCBbXSkgbGlzdFxuICBpblxuICBsZXQgcmVmaW5lZF9zb3J0ZWRfbGlzdCA9XG4gICAgTGlzdC5zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBjb21wYXJlIGIgYSkgcmVmaW5lZF9saXN0XG4gIGluXG4gIGVycm9yLCBMaXN0LnJldl9tYXAgc25kIHJlZmluZWRfc29ydGVkX2xpc3RcbiIsIigqKlxuICAqIG1pc2Nfc2EubWxcbiAgKiBvcGVua2FwcGFcbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKlxuICAqIENyZWF0aW9uOiAxNi8xMi8yMDEwXG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxKdWwgMDIgMjAxNj5cbiAgKiAqXG4gICogVmFyaW91cyBmdW5jdGlvbnNcbiAgKlxuICAqIENvcHlyaWdodCAyMDEwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGNvbnN0X3VuaXQgXyA9ICgpXG5cbmxldCBhcnJheV9vZl9saXN0IGNyZWF0ZSBzZXQgcGFyYW1ldGVycyBlcnJvciBsaXN0ID1cbiAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gIGxldCBhID0gY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgbiBpblxuICBsZXQgcmVjIGF1eCBsIGsgYSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBhXG4gICAgfCB0IDo6IHEgLT4gYXV4IHEgKGsgKyAxKSAoc2V0IHBhcmFtZXRlcnMgKGZzdCBhKSBrIHQgKHNuZCBhKSlcbiAgaW5cbiAgYXV4IGxpc3QgMCBhXG5cbmxldCB1bnNvbWUgKGVycm9yLCB4KSBmID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiBmIGVycm9yXG4gIHwgU29tZSB4IC0+IGVycm9yLCB4XG5cbmxldCByZXZfaW50ZXJfbGlzdCBjb21wYXJlIGwxIGwyID1cbiAgbGV0IHJlYyBhdXggbDEgbDIgcmVwID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIF8gfCBfLCBbXSAtPiBMaXN0LnJldiByZXBcbiAgICB8IGEgOjogYiwgYyA6OiBkIC0+XG4gICAgICBpZiBjb21wYXJlIGEgYyA9IDAgdGhlblxuICAgICAgICBhdXggYiBkIChhIDo6IHJlcClcbiAgICAgIGVsc2UgaWYgY29tcGFyZSBhIGMgPCAwIHRoZW5cbiAgICAgICAgYXV4IGIgbDIgcmVwXG4gICAgICBlbHNlXG4gICAgICAgIGF1eCBsMSBkIHJlcFxuICBpblxuICBhdXggbDEgbDIgW11cblxubGV0IHRyYWNlIHBhcmFtZXRlcnMgc3RyaW5nID1cbiAgaWZcbiAgICBwYXJhbWV0ZXJzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVyc1xuICAgICAgLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlXG4gIHRoZW5cbiAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgIFwiJXMlc1wiXG4gICAgICBwYXJhbWV0ZXJzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVyc1xuICAgICAgICAuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJlZml4IChzdHJpbmcgKCkpXG5cbmxldCBpbnRlcl9saXN0IGNvbXBhcmUgbDEgbDIgPSBMaXN0LnJldiAocmV2X2ludGVyX2xpc3QgY29tcGFyZSBsMSBsMilcblxubGV0IGxpc3RfMF9uIGsgPVxuICBsZXQgcmVjIGF1eCBrIHNvbCA9XG4gICAgaWYgayA8IDAgdGhlblxuICAgICAgc29sXG4gICAgZWxzZVxuICAgICAgYXV4IChrIC0gMSkgKGsgOjogc29sKVxuICBpblxuICBhdXggayBbXVxuXG5sZXQgbGlzdF9taW51cyBsMSBsMiA9XG4gIGxldCByZWMgYXV4IGwxIGwyIHJlcCA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IHQxIDo6IHExLCB0MiA6OiBxMiB3aGVuIHQxID0gdDIgLT4gYXV4IHExIHEyIHJlcFxuICAgIHwgdDEgOjogcTEsIF8gLT4gYXV4IHExIGwyICh0MSA6OiByZXApXG4gICAgfCBbXSwgXyAtPiByZXBcbiAgaW5cbiAgTGlzdC5yZXYgKGF1eCBsMSBsMiBbXSlcblxubGV0IHByaW50X2NvbW1hIHBhcmFtZXRlciBib29sIGNvbW1hID1cbiAgaWYgYm9vbCB0aGVuXG4gICAgTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIiVzXCIgY29tbWFcblxubGV0IGZldGNoX2FycmF5IGkgYXJyYXkgZGVmID1cbiAgdHJ5XG4gICAgbWF0Y2ggYXJyYXkuKGkpIHdpdGhcbiAgICB8IE5vbmUgLT4gZGVmXG4gICAgfCBTb21lIGkgLT4gaVxuICB3aXRoIF8gLT4gZGVmXG4iLCIoKipcbiAgICAqIGhhc2gubWxcbiAgICAqIG9wZW5rYXBwYVxuICAgICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICAgKlxuICAgICogQ3JlYXRpb246IDE4LzEwLzIwMTBcbiAgICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SnVsIDA0IDIwMTc+XG4gICAgKiAqXG4gICAgKiBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgc2lnbmF0dXJlIGZvciBoYXNoIHRhYmxlcyBhbmQgc2V2ZXJhbCBpbXBsZW1lbnRhdGlvbnNcbiAgICAqICpcbiAgICAqIENvcHlyaWdodCAyMDEwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIEhhc2ggPSBzaWdcbiAgdHlwZSBrZXlcbiAgdHlwZSAnYSBoYXNoXG5cbiAgdmFsIGNyZWF0ZSA6IGludCAtPiAnYSBoYXNoXG5cbiAgdmFsIGFkZCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGtleSAtPlxuICAgICdhIC0+XG4gICAgaW50IC0+XG4gICAgJ2EgaGFzaCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIGhhc2hcblxuICB2YWwgb3ZlcndyaXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAgJ2EgLT5cbiAgICBpbnQgLT5cbiAgICAnYSBoYXNoIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgaGFzaFxuXG4gIHZhbCBhZGRfb3Jfb3ZlcndyaXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAgJ2EgLT5cbiAgICBpbnQgLT5cbiAgICAnYSBoYXNoIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgaGFzaFxuXG4gIHZhbCBmaW5kX29wdGlvbiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGtleSAtPlxuICAgICdhIGhhc2ggLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAoaW50ICogJ2EpIG9wdGlvblxuXG4gIHZhbCBmaW5kX29wdGlvbl93aXRob3V0X2xvZ3MgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBrZXkgLT5cbiAgICAnYSBoYXNoIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogKGludCAqICdhKSBvcHRpb25cblxuICB2YWwgZmluZF9vcHRpb25fbG9nX29uX3RoZV9mbHkgOiBrZXkgLT4gJ2EgaGFzaCAtPiAoaW50ICogJ2EpIG9wdGlvblxuICB2YWwgaXRlciA6IChrZXkgLT4gJ2EgLT4gaW50IC0+IHVuaXQpIC0+ICdhIGhhc2ggLT4gdW5pdFxuICB2YWwgZm9sZCA6IChrZXkgLT4gJ2IgLT4gaW50IC0+ICdhIC0+ICdhKSAtPiAnYiBoYXNoIC0+ICdhIC0+ICdhXG5lbmRcblxubW9kdWxlIEhhc2ggPVxuZnVuY3RvclxuICAoTWFwIDogTWFwX3dyYXBwZXIuU193aXRoX2xvZ3MpXG4gIC0+XG4gIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUga2V5ID0gTWFwLmVsdFxuICAgICAgdHlwZSAnYSBoYXNoID0gKGludCAqICdhKSBNYXAuTWFwLnRcblxuICAgICAgbGV0IGNyZWF0ZSBfID0gTWFwLk1hcC5lbXB0eVxuXG4gICAgICBsZXQgYWRkIHBhcmFtZXRlciBlcnJvciBrZXkgYXNzbyBpbnQgPVxuICAgICAgICBNYXAuTWFwLmFkZCBwYXJhbWV0ZXIgZXJyb3Iga2V5IChpbnQsIGFzc28pXG5cbiAgICAgIGxldCBvdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleSBhc3NvIGludCA9XG4gICAgICAgIE1hcC5NYXAub3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXkgKGludCwgYXNzbylcblxuICAgICAgbGV0IGFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleSBhc3NvIGludCA9XG4gICAgICAgIE1hcC5NYXAuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5IChpbnQsIGFzc28pXG5cbiAgICAgIGxldCBmaW5kX29wdGlvbiBwYXJhbWV0ZXIgZXJyb3IgYSBiID1cbiAgICAgICAgbGV0IGVycm9yJywgb3V0cHV0ID0gTWFwLk1hcC5maW5kX29wdGlvbiBwYXJhbWV0ZXIgZXJyb3IgYSBiIGluXG4gICAgICAgIGlmIGVycm9yID09IGVycm9yJyB0aGVuXG4gICAgICAgICAgZXJyb3InLCBvdXRwdXRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlciBlcnJvcicgX19QT1NfX1xuICAgICAgICAgICAgfm1lc3NhZ2U6XCJhdHRlbXB0IHRvIHJlYWQgYW4gdW5leGlzdGluZyBhc3NvY2lhdGlvblwiIE5vdF9mb3VuZFxuICAgICAgICAgICAgb3V0cHV0XG5cbiAgICAgIGxldCBmaW5kX29wdGlvbl93aXRob3V0X2xvZ3MgPSBNYXAuTWFwLmZpbmRfb3B0aW9uX3dpdGhvdXRfbG9nc1xuXG4gICAgICBsZXQgZmluZF9vcHRpb25fbG9nX29uX3RoZV9mbHkgYSBiID1cbiAgICAgICAgTGlmdF9lcnJvcl9sb2dzLmxpZnRfd2l0aF9vbl90aGVfZmx5X2xvZ2dpbmdfYmluYXJ5IGZpbmRfb3B0aW9uIGEgYlxuXG4gICAgICBsZXQgaXRlciBmID0gTWFwLk1hcC5pdGVyIChmdW4gKGEgOiBrZXkpIChiLCBjKSAtPiBmIGEgYyBiKVxuICAgICAgbGV0IGZvbGQgZiA9IE1hcC5NYXAuZm9sZCAoZnVuIGEgKGIsIGMpIGQgLT4gZiBhIGMgYiBkKVxuICAgIGVuZCA6XG4gICAgICBIYXNoIHdpdGggdHlwZSBrZXkgPSBNYXAuZWx0KVxuXG5tb2R1bGUgSGFzaF9vZl9PcmQgPVxuZnVuY3RvciAoTyA6IFNldE1hcC5PcmRlcmVkVHlwZSkgLT4gSGFzaCAoTWFwX3dyYXBwZXIuTWFrZSAoU2V0TWFwLk1ha2UgKE8pKSlcbiIsImxldCBsb2NhbF90cmFjZSA9IGZhbHNlXG5cbnR5cGUgbm9kZSA9IGludFxuXG5sZXQgbm9kZV9vZl9pbnQgeCA9IHhcbmxldCBpbnRfb2Zfbm9kZSAoeCA6IG5vZGUpIDogaW50ID0geFxuXG5tb2R1bGUgTm9kZVNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gbm9kZVxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgcHJpbnQgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5lbmQpXG5cbm1vZHVsZSBOb2RlTWFwID0gTm9kZVNldE1hcC5NYXBcblxubW9kdWxlIEZpeGVkX3NpemVfYXJyYXkgOlxuICBJbnRfc3RvcmFnZS5TdG9yYWdlIHdpdGggdHlwZSBrZXkgPSBub2RlIGFuZCB0eXBlIGRpbWVuc2lvbiA9IGludCA9XG4gIEludF9zdG9yYWdlLlF1aWNrX2tleV9saXN0IChJbnRfc3RvcmFnZS5JbnRfc3RvcmFnZV9pbXBlcmF0aWYpXG5cbm1vZHVsZSBOb2RlYXJyYXkgOlxuICBJbnRfc3RvcmFnZS5TdG9yYWdlIHdpdGggdHlwZSBrZXkgPSBub2RlIGFuZCB0eXBlIGRpbWVuc2lvbiA9IGludCA9XG4gIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmXG5cbnR5cGUgKCdub2RlX2xhYmVscywgJ2VkZ2VfbGFiZWxzKSBncmFwaCA9IHtcbiAgbm9kZV9sYWJlbHM6ICdub2RlX2xhYmVscyBGaXhlZF9zaXplX2FycmF5LnQ7XG4gIGVkZ2VzOiAobm9kZSAqICdlZGdlX2xhYmVscykgbGlzdCBGaXhlZF9zaXplX2FycmF5LnQ7XG59XG5cbmxldCBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciBub2RlX29mX25vZGVfbGFiZWwgbm9kZV9saXN0IGVkZ2VfbGlzdCA9XG4gIGxldCBtYXhfbm9kZSA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBtIGkgLT4gbWF4IG0gKGludF9vZl9ub2RlIGkpKSAwIG5vZGVfbGlzdFxuICBpblxuICBsZXQgZXJyb3IsIG5vZGVzID0gRml4ZWRfc2l6ZV9hcnJheS5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciBtYXhfbm9kZSBpblxuICBsZXQgZXJyb3IsIG5vZGVzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZXJyb3IsIG5vZGVzKSBpIC0+XG4gICAgICAgIEZpeGVkX3NpemVfYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgICAgICAoaSA6IG5vZGUpXG4gICAgICAgICAgKG5vZGVfb2Zfbm9kZV9sYWJlbCBpKSBub2RlcylcbiAgICAgIChlcnJvciwgbm9kZXMpIChMaXN0LnJldiBub2RlX2xpc3QpXG4gIGluXG4gIGxldCBlcnJvciwgZWRnZXMgPSBGaXhlZF9zaXplX2FycmF5LmNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIG1heF9ub2RlIGluXG4gIGxldCBhZGRfZWRnZSBwYXJhbWV0ZXJzIGVycm9yIChuMSwgbGFiZWwsIG4yKSBlZGdlcyA9XG4gICAgbGV0IGVycm9yLCBvbGQgPVxuICAgICAgbWF0Y2ggRml4ZWRfc2l6ZV9hcnJheS51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgbjEgZWRnZXMgd2l0aFxuICAgICAgfCBlcnJvciwgTm9uZSAtPiBlcnJvciwgW11cbiAgICAgIHwgZXJyb3IsIFNvbWUgYSAtPiBlcnJvciwgYVxuICAgIGluXG4gICAgRml4ZWRfc2l6ZV9hcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciBuMSAoKG4yLCBsYWJlbCkgOjogb2xkKSBlZGdlc1xuICBpblxuICBsZXQgZXJyb3IsIGVkZ2VzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZXJyb3IsIGVkZ2VzKSBlZGdlIC0+IGFkZF9lZGdlIHBhcmFtZXRlcnMgZXJyb3IgZWRnZSBlZGdlcylcbiAgICAgIChlcnJvciwgZWRnZXMpIGVkZ2VfbGlzdFxuICBpblxuICBlcnJvciwgeyBub2RlX2xhYmVscyA9IG5vZGVzOyBlZGdlcyB9XG5cbmxldCBnZXQgcGFyYW1ldGVycyBlcnJvciBpIHQgPVxuICBtYXRjaCBOb2RlYXJyYXkudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGkgdCB3aXRoXG4gIHwgZXJyb3IsIFNvbWUgaSAtPiBlcnJvciwgaVxuICB8IGVycm9yLCBOb25lIC0+IGVycm9yLCAtMVxuXG5sZXQgZ2V0X2IgcGFyYW1ldGVycyBlcnJvciBpIHQgPVxuICBtYXRjaCBOb2RlYXJyYXkudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGkgdCB3aXRoXG4gIHwgZXJyb3IsIFNvbWUgaSAtPiBlcnJvciwgaVxuICB8IGVycm9yLCBOb25lIC0+IGVycm9yLCBmYWxzZVxuXG5sZXQgY29tcHV0ZV9zY2MgP2xvdyA/cHJlID9vbl9zdGFjayBwYXJhbWV0ZXJzIGVycm9yIG5fdG9fc3RyaW5nIGdyYXBoID1cbiAgbGV0IGVycm9yID1cbiAgICBpZiBsb2NhbF90cmFjZSB8fCBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZSBwYXJhbWV0ZXJzIHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgIFwiQ09NUFVURSBCUklER0U6IFxcbiBHcmFwaDogXFxuIE5vZGVzOiBcXG5cIlxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciA9XG4gICAgICAgIEZpeGVkX3NpemVfYXJyYXkuaXRlciBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIGkgaiAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgIFwiJWkgJXM7XFxuXCIgaSAobl90b19zdHJpbmcgailcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvcilcbiAgICAgICAgICBncmFwaC5ub2RlX2xhYmVsc1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciA9XG4gICAgICAgIEZpeGVkX3NpemVfYXJyYXkuaXRlciBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIGkgbCAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgIFwiJWk6XCIgaVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biBlcnJvciAoaiwgXykgLT5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICAgICAgICBcIiVpLFwiIGpcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvcilcbiAgICAgICAgICAgICAgICBlcnJvciBsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvcilcbiAgICAgICAgICBncmFwaC5lZGdlc1xuICAgICAgaW5cbiAgICAgIGVycm9yXG4gICAgKSBlbHNlXG4gICAgICBlcnJvclxuICBpblxuICBsZXQgZXJyb3IsIGxvdywgcHJlLCBvbl9zdGFjayA9XG4gICAgbWF0Y2ggbG93LCBwcmUsIG9uX3N0YWNrIHdpdGhcbiAgICB8IFNvbWUgbG93LCBTb21lIHByZSwgU29tZSBvbl9zdGFjayAtPiBlcnJvciwgbG93LCBwcmUsIG9uX3N0YWNrXG4gICAgfCBOb25lLCBfLCBfIHwgXywgTm9uZSwgXyB8IF8sIF8sIE5vbmUgLT5cbiAgICAgIGxldCBlcnJvciwgX21heF9ub2RlID1cbiAgICAgICAgRml4ZWRfc2l6ZV9hcnJheS5mb2xkIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgICAgICAoZnVuIF9wYXJhbWV0ZXIgZXJyb3IgaSBfIGogLT4gZXJyb3IsIG1heCAoaW50X29mX25vZGUgaSkgailcbiAgICAgICAgICBncmFwaC5ub2RlX2xhYmVscyAwXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb3cgPVxuICAgICAgICBtYXRjaCBsb3cgd2l0aFxuICAgICAgICB8IFNvbWUgbG93IC0+IGVycm9yLCBsb3dcbiAgICAgICAgfCBOb25lIC0+IE5vZGVhcnJheS5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAxXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBwcmUgPVxuICAgICAgICBtYXRjaCBwcmUgd2l0aFxuICAgICAgICB8IFNvbWUgcHJlIC0+IGVycm9yLCBwcmVcbiAgICAgICAgfCBOb25lIC0+IE5vZGVhcnJheS5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAxXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBvbl9zdGFjayA9XG4gICAgICAgIG1hdGNoIG9uX3N0YWNrIHdpdGhcbiAgICAgICAgfCBTb21lIG9uX3N0YWNrIC0+IGVycm9yLCBvbl9zdGFja1xuICAgICAgICB8IE5vbmUgLT4gTm9kZWFycmF5LmNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIDFcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG93LCBwcmUsIG9uX3N0YWNrXG4gIGluXG4gIGxldCByZWMgYXV4IHBhcmFtZXRlcnMgZXJyb3IgcHJlIGxvdyBvbl9zdGFjayBzY2NfbGlzdCBzdGFjayBjb3VudGVyIHYgPVxuICAgIGxldCBlcnJvciwgcHJlID0gTm9kZWFycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yIHYgY291bnRlciBwcmUgaW5cbiAgICBsZXQgZXJyb3IsIGxvdyA9IE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciB2IGNvdW50ZXIgbG93IGluXG4gICAgbGV0IHN0YWNrID0gdiA6OiBzdGFjayBpblxuICAgIGxldCBlcnJvciwgb25fc3RhY2sgPSBOb2RlYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgdiB0cnVlIG9uX3N0YWNrIGluXG4gICAgbGV0IGNvdW50ZXIgPSBzdWNjIGNvdW50ZXIgaW5cbiAgICBsZXQgZXJyb3IsIGVkZ2VzX3YgPVxuICAgICAgbWF0Y2ggRml4ZWRfc2l6ZV9hcnJheS51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdiBncmFwaC5lZGdlcyB3aXRoXG4gICAgICB8IGVycm9yLCBOb25lIC0+IGVycm9yLCBbXVxuICAgICAgfCBlcnJvciwgU29tZSBhIC0+IGVycm9yLCBhXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykpICh3LCBfKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcHJlX3cgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB3IHByZSBpblxuICAgICAgICAgIGxldCBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKSA9XG4gICAgICAgICAgICBpZiBwcmVfdyA9IC0xIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykgPVxuICAgICAgICAgICAgICAgIGF1eCBwYXJhbWV0ZXJzIGVycm9yIHByZSBsb3cgb25fc3RhY2sgc2NjX2xpc3Qgc3RhY2sgY291bnRlciB3XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG93X3YgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB2IGxvdyBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvd193ID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdyBsb3cgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb3cgPVxuICAgICAgICAgICAgICAgIE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciB2IChtaW4gbG93X3YgbG93X3cpIGxvd1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKVxuICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBiID0gZ2V0X2IgcGFyYW1ldGVycyBlcnJvciB3IG9uX3N0YWNrIGluXG4gICAgICAgICAgICAgIGlmIGIgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb3dfdiA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIHYgbG93IGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBwcmVfdyA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIHcgcHJlIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb3cgPVxuICAgICAgICAgICAgICAgICAgTm9kZWFycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yIHYgKG1pbiBsb3dfdiBwcmVfdykgbG93XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKVxuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykpXG4gICAgICAgIChlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKSlcbiAgICAgICAgZWRnZXNfdlxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb3dfdiA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIHYgbG93IGluXG4gICAgbGV0IGVycm9yLCBwcmVfdiA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIHYgcHJlIGluXG4gICAgaWYgbG93X3YgPSBwcmVfdiB0aGVuIChcbiAgICAgIGxldCByZWMgYXV4MiBwYXJhbWV0ZXJzIGVycm9yIHByZSBsb3cgb25fc3RhY2sgc2NjX2xpc3Qgc3RhY2sgY291bnRlciBjYyB2XG4gICAgICAgICAgPVxuICAgICAgICBtYXRjaCBzdGFjayB3aXRoXG4gICAgICAgIHwgdycgOjogc3RhY2sgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIG9uX3N0YWNrID1cbiAgICAgICAgICAgIE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciB3JyBmYWxzZSBvbl9zdGFja1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGNjID0gdycgOjogY2MgaW5cbiAgICAgICAgICBpZiB2ID0gdycgdGhlblxuICAgICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIGNjIDo6IHNjY19saXN0LCBzdGFjaylcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhdXgyIHBhcmFtZXRlcnMgZXJyb3IgcHJlIGxvdyBvbl9zdGFjayBzY2NfbGlzdCBzdGFjayBjb3VudGVyIGNjIHZcbiAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIGluXG4gICAgICBhdXgyIHBhcmFtZXRlcnMgZXJyb3IgcHJlIGxvdyBvbl9zdGFjayBzY2NfbGlzdCBzdGFjayBjb3VudGVyIFtdIHZcbiAgICApIGVsc2VcbiAgICAgIGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spXG4gIGluXG4gIGxldCBlcnJvciwgKHByZSwgbG93LCBfY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBfc3RhY2spID1cbiAgICBGaXhlZF9zaXplX2FycmF5LmZvbGQgcGFyYW1ldGVycyBlcnJvclxuICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIHYgXyAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spIC0+XG4gICAgICAgIGxldCBlcnJvciwgcHJlX3YgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB2IHByZSBpblxuICAgICAgICBpZiBwcmVfdiA9IC0xIHRoZW5cbiAgICAgICAgICBhdXggcGFyYW1ldGVycyBlcnJvciBwcmUgbG93IG9uX3N0YWNrIHNjY19saXN0IHN0YWNrIGNvdW50ZXIgdlxuICAgICAgICBlbHNlXG4gICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykpXG4gICAgICBncmFwaC5ub2RlX2xhYmVsc1xuICAgICAgKHByZSwgbG93LCAxLCBvbl9zdGFjaywgW10sIFtdKVxuICBpblxuICBsZXQgKCkgPVxuICAgIGlmIGxvY2FsX3RyYWNlIHx8IFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlIHBhcmFtZXRlcnMgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSBcIlNDQ1wiXG4gICAgICBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIGxpc3QgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAgIChMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgICAgXCIlaTtcIilcbiAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCJcXG5cIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgpKVxuICAgICAgICAgIHNjY19saXN0XG4gICAgICBpblxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICApXG4gIGluXG4gIGxldCBlcnJvciwgcHJlID0gTm9kZWFycmF5LmZyZWVfYWxsIHBhcmFtZXRlcnMgZXJyb3IgcHJlIGluXG4gIGxldCBlcnJvciwgbG93ID0gTm9kZWFycmF5LmZyZWVfYWxsIHBhcmFtZXRlcnMgZXJyb3IgbG93IGluXG4gIGxldCBlcnJvciwgb25fc3RhY2sgPSBOb2RlYXJyYXkuZnJlZV9hbGwgcGFyYW1ldGVycyBlcnJvciBvbl9zdGFjayBpblxuICBlcnJvciwgcHJlLCBsb3csIG9uX3N0YWNrLCBzY2NfbGlzdFxuXG5sZXQgZGV0ZWN0X2JyaWRnZXMgcGFyYW1ldGVycyBlcnJvciBhZGQgZ3JhcGggc3RyaW5nX29mX24gc3RyaW5nX29mX2Ugc2NjXG4gICAgYnJpZGdlcyA9XG4gIEZpeGVkX3NpemVfYXJyYXkuZm9sZCBwYXJhbWV0ZXJzIGVycm9yXG4gICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIG5pIGwgYnJpZGdlcyAtPlxuICAgICAgbGV0IGVycm9yLCBzY2NpID1cbiAgICAgICAgbWF0Y2ggTm9kZWFycmF5LmdldCBwYXJhbWV0ZXJzIGVycm9yIG5pIHNjYyB3aXRoXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgc2NjaSAtPiBlcnJvciwgc2NjaVxuICAgICAgICB8IGVycm9yLCBOb25lIC0+IEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0ICgtMSlcbiAgICAgIGluXG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgYnJpZGdlcykgKG5qLCBsYWJlbCkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHNjY2ogPVxuICAgICAgICAgICAgbWF0Y2ggTm9kZWFycmF5LmdldCBwYXJhbWV0ZXJzIGVycm9yIG5qIHNjYyB3aXRoXG4gICAgICAgICAgICB8IGVycm9yLCBTb21lIHNjY2ogLT4gZXJyb3IsIHNjY2pcbiAgICAgICAgICAgIHwgZXJyb3IsIE5vbmUgLT4gRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgKC0yKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgc2NjaSA9IHNjY2ogdGhlblxuICAgICAgICAgICAgZXJyb3IsIGJyaWRnZXNcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIEZpeGVkX3NpemVfYXJyYXkuZ2V0IHBhcmFtZXRlcnMgZXJyb3IgbmkgZ3JhcGgubm9kZV9sYWJlbHNcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICAgICAgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYnJpZGdlc1xuICAgICAgICAgICAgfCBlcnJvciwgU29tZSBuc3RyaW5naSAtPlxuICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgRml4ZWRfc2l6ZV9hcnJheS5nZXQgcGFyYW1ldGVycyBlcnJvciBuaiBncmFwaC5ub2RlX2xhYmVsc1xuICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IGVycm9yLCBOb25lIC0+XG4gICAgICAgICAgICAgICAgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYnJpZGdlc1xuICAgICAgICAgICAgICB8IGVycm9yLCBTb21lIG5zdHJpbmdqIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIGlmIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlIHBhcmFtZXRlcnMgfHwgbG9jYWxfdHJhY2VcbiAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCIlcyAlcyAlc1wiIChzdHJpbmdfb2ZfbiBuc3RyaW5naSkgKHN0cmluZ19vZl9lIGxhYmVsKVxuICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZ19vZl9uIG5zdHJpbmdqKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgYWRkIChuc3RyaW5naSwgbGFiZWwsIG5zdHJpbmdqKSBicmlkZ2VzKVxuICAgICAgICAgICkpXG4gICAgICAgIChlcnJvciwgYnJpZGdlcykgbClcbiAgICBncmFwaC5lZGdlcyBicmlkZ2VzXG5cbmxldCBhZGRfYnJpZGdlcyA/bG93ID9wcmUgP29uX3N0YWNrID9zY2MgYWRkIHBhcmFtZXRlcnMgZXJyb3Igc3RyaW5nX29mX25cbiAgICBzdHJpbmdfb2ZfZSBncmFwaCBicmlkZ2VzID1cbiAgbGV0IGVycm9yLCBzY2MgPVxuICAgIG1hdGNoIHNjYyB3aXRoXG4gICAgfCBTb21lIHNjYyAtPiBlcnJvciwgc2NjXG4gICAgfCBOb25lIC0+IE5vZGVhcnJheS5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAxXG4gIGluXG4gIGxldCBlcnJvciwgcHJlLCBsb3csIG9uX3N0YWNrLCBzY2NfbGlzdCA9XG4gICAgY29tcHV0ZV9zY2MgP2xvdyA/cHJlID9vbl9zdGFjayBwYXJhbWV0ZXJzIGVycm9yIHN0cmluZ19vZl9uIGdyYXBoXG4gIGluXG4gIGxldCBlcnJvciwgXywgc2NjID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZXJyb3IsIG4sIHNjYykgY2MgLT5cbiAgICAgICAgbGV0IGVycm9yLCBuLCBzY2MgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbiwgc2NjKSBub2RlIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgc2NjID0gTm9kZWFycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yIG5vZGUgbiBzY2MgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIG4sIHNjYylcbiAgICAgICAgICAgIChlcnJvciwgbiwgc2NjKSBjY1xuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbiArIDEsIHNjYylcbiAgICAgIChlcnJvciwgMSwgc2NjKSBzY2NfbGlzdFxuICBpblxuICBsZXQgZXJyb3IsIGJyaWRnZXMgPVxuICAgIGRldGVjdF9icmlkZ2VzIHBhcmFtZXRlcnMgZXJyb3IgYWRkIGdyYXBoIHN0cmluZ19vZl9uIHN0cmluZ19vZl9lIHNjY1xuICAgICAgYnJpZGdlc1xuICBpblxuICBsZXQgZXJyb3IsIHNjYyA9IE5vZGVhcnJheS5mcmVlX2FsbCBwYXJhbWV0ZXJzIGVycm9yIHNjYyBpblxuICBlcnJvciwgbG93LCBwcmUsIG9uX3N0YWNrLCBzY2MsIGJyaWRnZXNcbiIsIigqKlxuICogZGljdGlvbmFyeS5tbFxuICogb3BlbmthcHBhXG4gKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAqXG4gKiBDcmVhdGlvbjogMjAxMCwgdGhlIDE4dGggb2YgT2N0b2JlclxuICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxKdWwgMDUgMjAxNz5cbiAqICpcbiAqIFRoaXMgbGlicmFyeSBwcm92aWRlcyBwcmltaXRpdmVzIHRvIGRlYWwgaW5kZXhlZCBzZXQgb2YgdmFsdWVzXG4gKiBEdXJpbmcgdGhlIGNvbnN0cnVjdGlvbiBtZW1iZXJzaGlwLCB0cmFuZHVjdGlvbiwgYW5kIG5ldyBrZXkgY2FuXG4gKiBiZSBoYW5kbGVkIGluIE8obG9nIG4pXG4gKiBBZnRlciB0aGUgY29uc3RydWN0aW9uIGtleSBjYW4gYmUgdHJhbnNsYXRlZCBpbiBPKDEpXG4gKiAqXG4gKiBDb3B5cmlnaHQgMjAxMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgdHlwZSBEaWN0aW9uYXJ5ID0gc2lnXG4gIHR5cGUga2V5XG4gIHR5cGUgdmFsdWVcbiAgdHlwZSAoJ2EsICdiKSBkaWN0aW9uYXJ5XG5cbiAgdmFsIGluaXQgOiB1bml0IC0+ICgnYSwgJ2IpIGRpY3Rpb25hcnlcblxuICB2YWwgbWVtYmVyIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgdmFsdWUgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogYm9vbFxuXG4gIHZhbCBhbGxvY2F0ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICgnYSAtPiAnYSAtPiBrZXkpIC0+XG4gICAgdmFsdWUgLT5cbiAgICAnYSAtPlxuICAgIChrZXkgLT4gJ2IpIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIChrZXkgKiAnYSAqICdiICogKCdhLCAnYikgZGljdGlvbmFyeSkgb3B0aW9uXG5cbiAgdmFsIGFsbG9jYXRlX3VuaXF1ZWx5IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdhIC0+ICdhIC0+IGtleSkgLT5cbiAgICB2YWx1ZSAtPlxuICAgICdhIC0+XG4gICAgKGtleSAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogKGtleSAqICdhICogJ2IgKiAoJ2EsICdiKSBkaWN0aW9uYXJ5KSBvcHRpb25cblxuICAoKiAgdmFsIGFsbG9jYXRlX2ZfaWQ6IEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiB2YWx1ZSAtPiAoaW50IC0+ICdhKSAtPiAnYSBkaWN0aW9uYXJ5IC0+IEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIChpbnQgKiAnYSAqICdhIGRpY3Rpb25hcnkpIG9wdGlvbiopXG4gIHZhbCBhbGxvY2F0ZV9ib29sIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdhIC0+ICdhIC0+IGtleSkgLT5cbiAgICB2YWx1ZSAtPlxuICAgICdhIC0+XG4gICAgKGtleSAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyXG4gICAgKiAoYm9vbCAqIChrZXkgKiAnYSAqICdiICogKCdhLCAnYikgZGljdGlvbmFyeSkgb3B0aW9uKVxuXG4gIHZhbCB1bnNhZmVfYWxsb2NhdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICB2YWx1ZSAtPlxuICAgICdhIC0+XG4gICAgKGtleSAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogKGtleSAqICdhICogJ2IgKiAoJ2EsICdiKSBkaWN0aW9uYXJ5KVxuXG4gIHZhbCB0cmFuc2xhdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBrZXkgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogKHZhbHVlICogJ2EgKiAnYikgb3B0aW9uXG5cbiAgdmFsIHN0YWJpbGl6ZSA6ICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT4gKCdhLCAnYikgZGljdGlvbmFyeVxuXG4gIHZhbCBpdGVyIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBrZXkgLT5cbiAgICB2YWx1ZSAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIpIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlclxuXG4gIHZhbCBsYXN0X2VudHJ5IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGtleVxuXG4gIHZhbCBmb2xkIDpcbiAgICAodmFsdWUgLT4gJ2EgKiAnYiAtPiBrZXkgLT4gJ2MgLT4gJ2MpIC0+ICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT4gJ2MgLT4gJ2NcbmVuZFxuXG5leGNlcHRpb25cbiAgQXNzb2NpYXRpb25faXNfZXhpc3Rpbmdfd2l0aF90aGVfc2FtZV92YWx1ZV9pbl9hX2RpZmZlcmVudF9sb2NhdGlvbl9tZW1vcnlcblxuZXhjZXB0aW9uIEFzc29jaWF0aW9uX2lzX25vdF9kZWZpbmVkXG5cbm1vZHVsZSBEaWN0aW9uYXJ5ID1cbmZ1bmN0b3JcbiAgKEhhc2ggOiBIYXNoLkhhc2gpXG4gIC0+XG4gIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUga2V5ID0gaW50XG4gICAgICB0eXBlIHZhbHVlID0gSGFzaC5rZXlcblxuICAgICAgdHlwZSAoJ2EsICdiKSBpbl9jb25zdHJ1Y3Rpb24gPSB7XG4gICAgICAgIGhhc2hfdGFibGU6ICgnYSAqICdiKSBIYXNoLmhhc2g7XG4gICAgICAgIGZyZXNoOiBpbnQ7XG4gICAgICB9XG5cbiAgICAgIHR5cGUgKCdhLCAnYikgc3RhYmlsaXplZCA9ICh2YWx1ZSAqICdhICogJ2IpIG9wdGlvbiBhcnJheVxuXG4gICAgICB0eXBlICgnYSwgJ2IpIGRpY3Rpb25hcnkgPSB7XG4gICAgICAgIGlzX3N0YWJpbGl6ZWQ6IGJvb2w7XG4gICAgICAgIHN0YWJpbGl6ZWQ6ICgnYSwgJ2IpIHN0YWJpbGl6ZWQ7XG4gICAgICAgIGluX2NvbnN0cnVjdGlvbjogKCdhLCAnYikgaW5fY29uc3RydWN0aW9uO1xuICAgICAgfVxuXG4gICAgICBsZXQgaW52YWxpZCB4IHBhcmFtZXRlcnMgbWggX19QT1NfXyBtZXNzYWdlIGV4biA9XG4gICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgbWggX19QT1NfXyB+bWVzc2FnZSBleG4geFxuXG4gICAgICBsZXQgaW52YWxpZF9hcmcgPSBpbnZhbGlkIE5vbmVcbiAgICAgIGxldCBpbnZhbGlkX2FyZ19ib29sID0gaW52YWxpZCAoZmFsc2UsIE5vbmUpXG4gICAgICBsZXQgcHJlaW5pdCAoKSA9IHsgaGFzaF90YWJsZSA9IEhhc2guY3JlYXRlIDE7IGZyZXNoID0gMCB9XG5cbiAgICAgIGxldCBwcmVtZW1iZXIgcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBpbl9jb25zdHJ1Y3Rpb24gPVxuICAgICAgICBsZXQgZXJyb3IsIG91dHB1dCA9XG4gICAgICAgICAgSGFzaC5maW5kX29wdGlvbl93aXRob3V0X2xvZ3NcbiAgICAgICAgICAgICgqIGluZGVlZCwgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHRlc3Qgd2hldGhlciBvciBub3QgdGhlcmUgaXMgYW4gYXNzb2NpYXRpb24gKilcbiAgICAgICAgICAgIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgaW5fY29uc3RydWN0aW9uLmhhc2hfdGFibGVcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIG91dHB1dCAhPSBOb25lXG5cbiAgICAgIGxldCBwcmV0cmFuc2xhdGUgcGFyYW1ldGVycyBlcnJvciBrZXkgc3RhYmlsaXplZCA9XG4gICAgICAgIGlmIGtleSA+PSAwICYmIGtleSA8IEFycmF5Lmxlbmd0aCBzdGFiaWxpemVkIHRoZW4gKFxuICAgICAgICAgIG1hdGNoIHN0YWJpbGl6ZWQuKGtleSkgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+IGVycm9yLCBTb21lIGFcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBcIm1pc3NpbmcgZW50cnlcIlxuICAgICAgICAgICAgICBBc3NvY2lhdGlvbl9pc19ub3RfZGVmaW5lZFxuICAgICAgICApIGVsc2UgaWYga2V5IDwgMCB0aGVuXG4gICAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIFwibmVnYXRpdmUga2V5IGFyZSBub3QgYWxsb3dlZFwiXG4gICAgICAgICAgICBBc3NvY2lhdGlvbl9pc19ub3RfZGVmaW5lZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIFwibWlzc2luZyBlbnRyeVwiXG4gICAgICAgICAgICBBc3NvY2lhdGlvbl9pc19ub3RfZGVmaW5lZFxuXG4gICAgICBsZXQgcHJlc3RhYmlsaXplIGluX2NvbnN0cnVjdGlvbiA9XG4gICAgICAgIGxldCBhcnJheSA9IEFycmF5Lm1ha2UgaW5fY29uc3RydWN0aW9uLmZyZXNoIE5vbmUgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBIYXNoLml0ZXJcbiAgICAgICAgICAgIChmdW4gYSAoYXNzbywgYXNzbycpIGkgLT4gYXJyYXkuKGkpIDwtIFNvbWUgKGEsIGFzc28sIGFzc28nKSlcbiAgICAgICAgICAgIGluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGFycmF5XG5cbiAgICAgIGxldCBpbml0ICgpID1cbiAgICAgICAge1xuICAgICAgICAgIGluX2NvbnN0cnVjdGlvbiA9IHByZWluaXQgKCk7XG4gICAgICAgICAgc3RhYmlsaXplZCA9IEFycmF5Lm1ha2UgMCBOb25lO1xuICAgICAgICAgIGlzX3N0YWJpbGl6ZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgIGxldCBtZW1iZXIgcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBkaWN0aW9uYXJ5ID1cbiAgICAgICAgcHJlbWVtYmVyIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgZGljdGlvbmFyeS5pbl9jb25zdHJ1Y3Rpb25cblxuICAgICAgbGV0IHN0YWJpbGl6ZSBkaWN0aW9uYXJ5ID1cbiAgICAgICAgaWYgZGljdGlvbmFyeS5pc19zdGFiaWxpemVkIHRoZW5cbiAgICAgICAgICBkaWN0aW9uYXJ5XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpbl9jb25zdHJ1Y3Rpb24gPSBkaWN0aW9uYXJ5LmluX2NvbnN0cnVjdGlvbjtcbiAgICAgICAgICAgIGlzX3N0YWJpbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgICAgc3RhYmlsaXplZCA9IHByZXN0YWJpbGl6ZSBkaWN0aW9uYXJ5LmluX2NvbnN0cnVjdGlvbjtcbiAgICAgICAgICB9XG5cbiAgICAgIGxldCB0cmFuc2xhdGUgcGFyYW1ldGVycyBlcnJvciBrZXkgZGljdGlvbmFyeSA9XG4gICAgICAgIGxldCBkaWN0aW9uYXJ5ID0gc3RhYmlsaXplIGRpY3Rpb25hcnkgaW5cbiAgICAgICAgcHJldHJhbnNsYXRlIHBhcmFtZXRlcnMgZXJyb3Iga2V5IGRpY3Rpb25hcnkuc3RhYmlsaXplZFxuXG4gICAgICBsZXQgYWxsb2NhdGVfdW5pcXVlbHlfb3Jfbm90IHVuaXF1ZWx5IHBhcmFtZXRlcnMgZXJyb3IgY29tcGFyZVxuICAgICAgICAgICh2YWx1ZSA6IHZhbHVlKSBhc3NvIGJ1aWxkIGRpY3Rpb25hcnkgPVxuICAgICAgICBsZXQgaW5fY29uc3RydWN0aW9uID0gZGljdGlvbmFyeS5pbl9jb25zdHJ1Y3Rpb24gaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBIYXNoLmZpbmRfb3B0aW9uX3dpdGhvdXRfbG9nc1xuICAgICAgICAgICAgKCogaW5kZWVkLCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY2hlY2sgdGhhdCBlaXRoZXIgdGhlcmUgaXMgbm8gYXNzb2NpYXRpb24sIG9yIHRoYXQgdGhpcyBpcyB0aGUgc2FtZSBhc3NvY2lhdGlvbiAqKVxuICAgICAgICAgICAgcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBpbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICBsZXQgZnJlc2ggPSBpbl9jb25zdHJ1Y3Rpb24uZnJlc2ggaW5cbiAgICAgICAgICBsZXQgYXNzb19pZCA9IGJ1aWxkIGZyZXNoIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBoYXNoX3RhYmxlID1cbiAgICAgICAgICAgIEhhc2guYWRkIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgKGFzc28sIGFzc29faWQpIGZyZXNoXG4gICAgICAgICAgICAgIGluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgaGFzaCA9IHsgaGFzaF90YWJsZTsgZnJlc2ggPSBmcmVzaCArIDEgfSBpblxuICAgICAgICAgIGxldCBkaWN0aW9uYXJ5ID1cbiAgICAgICAgICAgIGlmIGRpY3Rpb25hcnkuaXNfc3RhYmlsaXplZCB0aGVuXG4gICAgICAgICAgICAgIHsgZGljdGlvbmFyeSB3aXRoIGlzX3N0YWJpbGl6ZWQgPSBmYWxzZSB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGRpY3Rpb25hcnlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBkaWN0aW9uYXJ5ID0geyBkaWN0aW9uYXJ5IHdpdGggaW5fY29uc3RydWN0aW9uID0gaGFzaCB9IGluXG4gICAgICAgICAgZXJyb3IsICh0cnVlLCBTb21lIChmcmVzaCwgYXNzbywgYXNzb19pZCwgZGljdGlvbmFyeSkpXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgKGksIChhc3NvJywgYXNzbydfaWQpKSB3aGVuIGFzc28nID09IGFzc28gLT5cbiAgICAgICAgICBlcnJvciwgKGZhbHNlLCBTb21lIChpLCBhc3NvJywgYXNzbydfaWQsIGRpY3Rpb25hcnkpKVxuICAgICAgICB8IGVycm9yLCBTb21lIChpLCAoYXNzbycsIGFzc28nX2lkKSkgd2hlbiBjb21wYXJlIGFzc28gYXNzbycgPSAwIC0+XG4gICAgICAgICAgaWYgdW5pcXVlbHkgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmdfYm9vbCBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgXCJ3cm9uZyBhc3NvY2lhdGlvbiAodGhlIGltYWdlIGlzIG5vdCB1bmlxdWVseSBkZXNjcmliZWQgaW4gXFxcbiAgICAgICAgICAgICAgIG1lbW9yeSlcIlxuICAgICAgICAgICAgICBBc3NvY2lhdGlvbl9pc19leGlzdGluZ193aXRoX3RoZV9zYW1lX3ZhbHVlX2luX2FfZGlmZmVyZW50X2xvY2F0aW9uX21lbW9yeVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCAoZmFsc2UsIFNvbWUgKGksIGFzc28nLCBhc3NvJ19pZCwgZGljdGlvbmFyeSkpXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgXyAtPlxuICAgICAgICAgIGludmFsaWRfYXJnX2Jvb2wgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICBcIndyb25nIGFzc29jaWF0aW9uIChzZXZlcmFsIGltYWdlcyBmb3IgdGhlIHNhbWUga2V5KVwiXG4gICAgICAgICAgICBBc3NvY2lhdGlvbl9pc19leGlzdGluZ193aXRoX3RoZV9zYW1lX3ZhbHVlX2luX2FfZGlmZmVyZW50X2xvY2F0aW9uX21lbW9yeVxuXG4gICAgICBsZXQgYWxsb2NhdGUgYWEgZSB4IHYgYSBkIGYgPVxuICAgICAgICBsZXQgYSwgKF8sIGMpID0gYWxsb2NhdGVfdW5pcXVlbHlfb3Jfbm90IGZhbHNlIGFhIGUgeCB2IGEgZCBmIGluXG4gICAgICAgIGEsIGNcblxuICAgICAgbGV0IGFsbG9jYXRlX3VuaXF1ZWx5IGFhIGUgeCB2IGEgZCBmID1cbiAgICAgICAgbGV0IGEsIChfLCBjKSA9IGFsbG9jYXRlX3VuaXF1ZWx5X29yX25vdCB0cnVlIGFhIGUgeCB2IGEgZCBmIGluXG4gICAgICAgIGEsIGNcblxuICAgICAgbGV0IGFsbG9jYXRlX2Jvb2wgYWEgZSA9IGFsbG9jYXRlX3VuaXF1ZWx5X29yX25vdCBmYWxzZSBhYSBlXG5cbiAgICAgIGxldCB1bnNhZmVfYWxsb2NhdGUgcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBhc3NvIGJ1aWxkIGRpY3Rpb25hcnkgPVxuICAgICAgICBsZXQgaW5fY29uc3RydWN0aW9uID0gZGljdGlvbmFyeS5pbl9jb25zdHJ1Y3Rpb24gaW5cbiAgICAgICAgbGV0IGZyZXNoID0gaW5fY29uc3RydWN0aW9uLmZyZXNoIGluXG4gICAgICAgIGxldCBhc3NvX2lkID0gYnVpbGQgZnJlc2ggaW5cbiAgICAgICAgbGV0IGVycm9yLCBoYXNoX3RhYmxlID1cbiAgICAgICAgICBIYXNoLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVycyBlcnJvciB2YWx1ZSAoYXNzbywgYXNzb19pZCkgZnJlc2hcbiAgICAgICAgICAgIGluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBoYXNoID0geyBoYXNoX3RhYmxlOyBmcmVzaCA9IGZyZXNoICsgMSB9IGluXG4gICAgICAgIGxldCBkaWN0aW9uYXJ5ID0geyBkaWN0aW9uYXJ5IHdpdGggaW5fY29uc3RydWN0aW9uID0gaGFzaCB9IGluXG4gICAgICAgIGVycm9yLCAoZnJlc2gsIGFzc28sIGFzc29faWQsIGRpY3Rpb25hcnkpXG5cbiAgICAgIGxldCBpdGVyIHBhcmFtZXRlcnMgZXJyb3IgZiBkaWMgPVxuICAgICAgICBsZXQgZGljJyA9IHN0YWJpbGl6ZSBkaWMgaW5cbiAgICAgICAgbGV0IGcga2V5IGVycm9yID0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gZXJyb3JcbiAgICAgICAgICB8IFNvbWUgKHZhbHVlLCBhLCBiKSAtPiBmIHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGEgYlxuICAgICAgICBpblxuICAgICAgICAoKiBpZiBkaWMuaXNfc3RhYmlsaXplZFxuICAgICAgICAgICB0aGVuKilcbiAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aSBnIGVycm9yIGRpYycuc3RhYmlsaXplZFxuICAgICAgKCplbHNlIEhhc2guZm9sZFxuICAgICAgICAoZnVuIHZhbHVlIChhLGIpIGtleSBlcnJvciAtPiBmIHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGEgYilcbiAgICAgICAgZGljLmluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlIGVycm9yKilcblxuICAgICAgbGV0IGZvbGQgZiBkaWN0aW9uYXJ5ID1cbiAgICAgICAgbGV0IGluX2NvbnN0cnVjdGlvbiA9IGRpY3Rpb25hcnkuaW5fY29uc3RydWN0aW9uIGluXG4gICAgICAgIEhhc2guZm9sZCBmIGluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlXG5cbiAgICAgIGxldCBsYXN0X2VudHJ5IF9wYXJhbWV0ZXJzIGVycm9yIGRpYyA9XG4gICAgICAgIGVycm9yLCBkaWMuaW5fY29uc3RydWN0aW9uLmZyZXNoIC0gMVxuICAgIGVuZCA6XG4gICAgICBEaWN0aW9uYXJ5IHdpdGggdHlwZSBrZXkgPSBpbnQgYW5kIHR5cGUgdmFsdWUgPSBIYXNoLmtleSlcblxubW9kdWxlIERpY3Rpb25hcnlfb2ZfT3JkID1cbmZ1bmN0b3IgKE8gOiBTZXRNYXAuT3JkZXJlZFR5cGUpIC0+IERpY3Rpb25hcnkgKEhhc2guSGFzaF9vZl9PcmQgKE8pKVxuIiwiKCoqXG4gICAqIHRpY2tfc3Rvcmllcy5tbFxuICAgKlxuICAgKiBQcm9ncmVzcyBiYXIgKGNvbWluZyBmcm9tIE1vZHMubWwpXG4gICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgICpcbiAgICogS2FTaW1cbiAgICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICAqXG4gICAqIENyZWF0aW9uOiAxNy8wNS8yMDE2XG4gICAqIExhc3QgbW9kaWZpY2F0aW9uOiAxNy8wNS8yMDE2XG4gICAqICpcbiAgICpcbiAgICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWVcbiAgICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgdGlja19zdG9yaWVzIGYgY29uZiBzYXZlX3Byb2dyZXNzX2JhciAoaW5pdCwgbGFzdCwgY291bnRlciwgbl9zdG9yaWVzKSA9XG4gIGxldCAoKSA9XG4gICAgaWYgbm90IGluaXQgdGhlbiAoXG4gICAgICBsZXQgYyA9IHJlZiBjb25mLkNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NTaXplIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZiBpblxuICAgICAgd2hpbGUgIWMgPiAwIGRvXG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiBmIFwiX1wiO1xuICAgICAgICBjIDo9ICFjIC0gMVxuICAgICAgZG9uZTtcbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBmXG4gICAgKVxuICBpblxuICBsZXQgbiA9XG4gICAgaWYgbl9zdG9yaWVzIDw9IDAgJiYgY291bnRlciA9IDAgdGhlblxuICAgICAgY29uZi5Db25maWd1cmF0aW9uLnByb2dyZXNzU2l6ZVxuICAgIGVsc2UgaWYgY291bnRlciA+IG5fc3RvcmllcyB0aGVuXG4gICAgICAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmMgPSBjb3VudGVyICogY29uZi5Db25maWd1cmF0aW9uLnByb2dyZXNzU2l6ZSAvIG5fc3RvcmllcyBpblxuICAgICAgbGV0IG5sID0gbGFzdCAqIGNvbmYuQ29uZmlndXJhdGlvbi5wcm9ncmVzc1NpemUgLyBuX3N0b3JpZXMgaW5cbiAgICAgIG5jIC0gbmxcbiAgICApXG4gIGluXG4gIGxldCByZWMgYXV4IG4gPVxuICAgIGlmIG4gPD0gMCB0aGVuXG4gICAgICAoKVxuICAgIGVsc2UgKFxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGYgXCIlY1wiIGNvbmYuQ29uZmlndXJhdGlvbi5wcm9ncmVzc0NoYXIgaW5cbiAgICAgIGF1eCAobiAtIDEpXG4gICAgKVxuICBpblxuICBsZXQgKCkgPSBhdXggbiBpblxuICBsZXQgKCkgPSBMb2dnZXJzLmZsdXNoX2xvZ2dlciBmIGluXG4gIGxldCAoKSA9IGlmIGNvdW50ZXIgPSBuX3N0b3JpZXMgdGhlbiBMb2dnZXJzLnByaW50X25ld2xpbmUgZiBpblxuICBsZXQgYmFyID0gdHJ1ZSwgY291bnRlciwgY291bnRlciArIDEsIG5fc3RvcmllcyBpblxuICBsZXQgKCkgPSBzYXZlX3Byb2dyZXNzX2JhciBiYXIgaW5cbiAgYmFyXG4iLCIoKipcbiAgICogZ3JhcGhfY2xvc3VyZS5tbFxuICAgKlxuICAgKiBBbGdvcml0aG1zIHRvIGNvbXB1dGUgdHJhbnNpdGl2ZSBjbG9zdXJlIG9mIG9iZXJ2YWJsZXMgaW4gdHJhY2VzXG4gICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgICpcbiAgICogS2FTaW1cbiAgICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICAqXG4gICAqIENyZWF0aW9uOiAxNy8wOC8yMDEzXG4gICAqIExhc3QgbW9kaWZpY2F0aW9uOiAxMC8wOS8yMDEzXG4gICAqICpcbiAgICpcbiAgICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWVcbiAgICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgQSA9IEFycmF5XG5tb2R1bGUgUyA9IE1vZHMuSW50U2V0XG5tb2R1bGUgTSA9IE1vZHMuSW50TWFwXG5cbmxldCBpZ25vcmVfZmxvd19mcm9tX291dGdvaW5nX3NpcGhvbiA9IHRydWVcbmxldCBjaGVja19tb2RlID0gZmFsc2VcblxudHlwZSBhbGdvX3R5cGUgPSBUb3BfZG93biB8IEJvdHRvbV91cCB8IENoZWNrXG50eXBlIG9yZGVyID0gSW5jcmVhc2luZ193aXRoX2xhc3RfZXZlbnQgfCBEZWNyZWFzaW5nX3dpdGhvdXRfbGFzdF9ldmVudFxuXG50eXBlIGNvbmZpZyA9IHtcbiAgZG9fdGljazogYm9vbDtcbiAga2VlcF9hbGxfbm9kZXM6IGJvb2w7XG4gIGN1dF90cmFuc2l0aXZlX3BhdGg6IGJvb2w7XG4gIHN0YXRfdHJhbnNfY2xvc3VyZV9mb3JfYmlnX2dyYXBoczogYm9vbDtcbiAgbWF4X2luZGV4OiBpbnQ7XG4gIGFsZ286IGFsZ29fdHlwZTtcbn1cblxubGV0IGNvbmZpZ19iaWdfZ3JhcGhfd2l0aF9wcm9ncmVzc19iYXIgPVxuICB7XG4gICAgZG9fdGljayA9IHRydWU7XG4gICAga2VlcF9hbGxfbm9kZXMgPSBmYWxzZTtcbiAgICBjdXRfdHJhbnNpdGl2ZV9wYXRoID0gdHJ1ZTtcbiAgICBzdGF0X3RyYW5zX2Nsb3N1cmVfZm9yX2JpZ19ncmFwaHMgPSB0cnVlO1xuICAgIG1heF9pbmRleCA9IDMwMDtcbiAgICBhbGdvID0gQm90dG9tX3VwICgqaWYgY2hlY2tfbW9kZSB0aGVuIENoZWNrIGVsc2UgVG9wX2Rvd24qKTtcbiAgfVxuXG5sZXQgY29uZmlnX2JpZ19ncmFwaF93aXRob3V0X3Byb2dyZXNzX2JhciA9XG4gIHsgY29uZmlnX2JpZ19ncmFwaF93aXRoX3Byb2dyZXNzX2JhciB3aXRoIGRvX3RpY2sgPSBmYWxzZSB9XG5cbmxldCBjb25maWdfc21hbGxfZ3JhcGggPVxuICB7XG4gICAgZG9fdGljayA9IGZhbHNlO1xuICAgIGtlZXBfYWxsX25vZGVzID0gdHJ1ZTtcbiAgICBjdXRfdHJhbnNpdGl2ZV9wYXRoID0gZmFsc2U7XG4gICAgc3RhdF90cmFuc19jbG9zdXJlX2Zvcl9iaWdfZ3JhcGhzID0gdHJ1ZTtcbiAgICBhbGdvID0gQm90dG9tX3VwO1xuICAgIG1heF9pbmRleCA9IDMwMDtcbiAgfVxuXG5sZXQgc3dhcCBmIGEgYiA9IGYgYiBhXG5sZXQgaWdub3JlX2ZzdCBmIF8gPSBmXG5cbmxldCByZWMgY29tcGFyZV9zdWNjIHAgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIHwgWyBfIF0gLT4gdHJ1ZVxuICB8IGEgOjogcSAtPlxuICAgIChtYXRjaCBxIHdpdGhcbiAgICB8IGIgOjogXyB3aGVuIHAgYSBiIC0+IGNvbXBhcmVfc3VjYyBwIHFcbiAgICB8IF8gLT4gZmFsc2UpXG5cbmxldCBzdHJpY3RseV9pbmNyZWFzaW5nID0gY29tcGFyZV9zdWNjIChmdW4gKGEgOiBpbnQpIGIgLT4gYSA8IGIpXG5sZXQgc3RyaWN0bHlfZGVjcmVhc2luZyA9IGNvbXBhcmVfc3VjYyAoZnVuIChhIDogaW50KSBiIC0+IGEgPiBiKVxubGV0IGNvbmNhdCBhID0gTGlzdC5yZXZfYXBwZW5kIChMaXN0LnJldiBhKVxuXG5sZXQgcHJpbnRfbGlzdCBmIGwgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYUBdQC5cIiAoUHAubGlzdCBQcC5jb21tYSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKSBsXG5cbmxldCBjaGVjayBmb3JtIHAgZiBzdHJpbmcgYSBiID1cbiAgbWF0Y2ggcCBhLCBwIGIgd2l0aFxuICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgIGxldCAoKSA9IHByaW50X2xpc3QgZm9ybSBhIGluXG4gICAgbGV0ICgpID0gcHJpbnRfbGlzdCBmb3JtIGIgaW5cbiAgICBmYWlsd2l0aCAoc3RyaW5nIF4gXCJfYXJnMV8yXCIpXG4gIHwgdHJ1ZSwgZmFsc2UgLT5cbiAgICBsZXQgKCkgPSBwcmludF9saXN0IGZvcm0gYiBpblxuICAgIGZhaWx3aXRoIChzdHJpbmcgXiBcIl9hcmcyXCIpXG4gIHwgZmFsc2UsIHRydWUgLT5cbiAgICBsZXQgKCkgPSBwcmludF9saXN0IGZvcm0gYSBpblxuICAgIGZhaWx3aXRoIChzdHJpbmcgXiBcIl9hcmcxXCIpXG4gIHwgdHJ1ZSwgdHJ1ZSAtPlxuICAgIGxldCByZXAgPSBmIGEgYiBpblxuICAgIGxldCAoKSA9IHByaW50X2xpc3QgZm9ybSByZXAgaW5cbiAgICBpZiBwIHJlcCB0aGVuXG4gICAgICByZXBcbiAgICBlbHNlIChcbiAgICAgIHByaW50X2xpc3QgZm9ybSBhO1xuICAgICAgcHJpbnRfbGlzdCBmb3JtIGI7XG4gICAgICBwcmludF9saXN0IGZvcm0gcmVwO1xuICAgICAgZmFpbHdpdGggKHN0cmluZyBeIFwiX291dHB1dFwiKVxuICAgIClcblxubGV0IGlzX3N0cmljdF9zdWJsaXN0IHAgYSBiID1cbiAgbGV0IHJlYyBhdXggYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IF8sIFtdIC0+IGZhbHNlXG4gICAgfCBbXSwgXyA6OiBfIC0+IHRydWVcbiAgICB8IGggOjogdCwgaCcgOjogdCcgd2hlbiBoID0gaCcgLT4gYXV4IHQgdCdcbiAgICB8IGggOjogXywgaCcgOjogXyB3aGVuIHAgaCBoJyAtPiBmYWxzZVxuICAgIHwgXywgXyA6OiB0JyAtPiBhdXggYSB0J1xuICBpblxuICBhdXggYSBiXG5cbmxldCBpbnNlcnRfZWx0IHAgZSA9IExpc3RfdXRpbC5tZXJnZV91bmlxIHAgWyBlIF1cblxubGV0IGRpZmZfbGlzdCBwIGEgYiA9XG4gIGxldCByZWMgYXV4IGEgYiBhY2N1ID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IGIsIFtdIC0+IExpc3QucmV2IChMaXN0LnJldl9hcHBlbmQgYiBhY2N1KVxuICAgIHwgW10sIF8gOjogXyAtPiBMaXN0LnJldiBhY2N1XG4gICAgfCBoIDo6IHQsIGgnIDo6IHQnIHdoZW4gaCA9IGgnIC0+IGF1eCB0IHQnIGFjY3VcbiAgICB8IGggOjogdCwgaCcgOjogXyB3aGVuIHAgaCBoJyAtPiBhdXggdCBiIChoIDo6IGFjY3UpXG4gICAgfCBfLCBfIDo6IHQnIC0+IGF1eCBhIHQnIGFjY3VcbiAgaW5cbiAgYXV4IGEgYiBbXVxuXG5sZXQgY29tcGFyZV9ib29sIGEgYiA9IGNvbXBhcmUgYSBiIDwgMFxubGV0IGRpZmZfbGlzdF9kZWNyZWFzaW5nID0gZGlmZl9saXN0IChzd2FwIGNvbXBhcmVfYm9vbClcbmxldCBtZXJnZV9saXN0X2RlY3JlYXNpbmcgPSBMaXN0X3V0aWwubWVyZ2VfdW5pcSAoZnVuIHggeSAtPiBTdGRsaWIuY29tcGFyZSB5IHgpXG5cbmxldCBjbG9zdXJlX2JvdHRvbV91cF93aXRoX2ZvbGQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnQgY29uZmlnXG4gICAgcHJlYyBpc19vYnMgZiBhID1cbiAgbGV0IGVycl9sb2dnZXIgPSBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVyIGluXG4gIGxldCBpc19vYnMgPVxuICAgIGlmIGNvbmZpZy5rZWVwX2FsbF9ub2RlcyB0aGVuXG4gICAgICBmdW4gXyAtPlxuICAgIHRydWVcbiAgICBlbHNlXG4gICAgICBpc19vYnNcbiAgaW5cbiAgbGV0IG1heF9pbmRleCA9IE0uZm9sZCAoZnVuIGkgXyAtPiBtYXggaSkgcHJlYyAwIGluXG4gIGxldCAoKSA9XG4gICAgaWYgY29uZmlnLnN0YXRfdHJhbnNfY2xvc3VyZV9mb3JfYmlnX2dyYXBocyAmJiBjb25maWcubWF4X2luZGV4ID4gMzAwIHRoZW4gKFxuICAgICAgbGV0IG5fZWRnZXMgPSBNLmZvbGQgKGlnbm9yZV9mc3QgKFMuZm9sZCAoaWdub3JlX2ZzdCBzdWNjKSkpIHByZWMgMCBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGVycl9sb2dnZXIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiBlcnJfbG9nZ2VyIFwiXFx0XFx0VHJhbnNpdGl2ZSBjbG9zdXJlICglaSBub2RlcywgJWkgZWRnZXMpXCJcbiAgICAgICAgICBtYXhfaW5kZXggbl9lZGdlc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBlcnJfbG9nZ2VyIGluXG4gICAgICAoKVxuICAgIClcbiAgaW5cbiAgbGV0IGRvX3RpY2ssIHRpY2ssIGNsb3NlX3RpY2sgPVxuICAgIGlmIG1heF9pbmRleCA+IDMwMCAmJiBjb25maWcuZG9fdGljayB0aGVuIChcbiAgICAgIGxldCB0aWNrID1cbiAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3RvcmllcyBlcnJfbG9nZ2VyIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIpXG4gICAgICAgICAgKGZhbHNlLCAwLCAwLCBtYXhfaW5kZXgpXG4gICAgICBpblxuICAgICAgbGV0IGYgPVxuICAgICAgICBUaWNrX3N0b3JpZXMudGlja19zdG9yaWVzIGVycl9sb2dnZXIgQ29uZmlndXJhdGlvbi5lbXB0eVxuICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLnNhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlcilcbiAgICAgIGluXG4gICAgICBsZXQgY2xvc2UgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZXJyX2xvZ2dlciBpblxuICAgICAgZiwgdGljaywgY2xvc2VcbiAgICApIGVsc2VcbiAgICAgIChmdW4geCAtPiB4KSwgKGZhbHNlLCAwLCAwLCAwKSwgZnVuICgpIC0+ICgpXG4gIGluXG4gIGxldCBzX3ByZWRfc3RhciA9IEEubWFrZSAobWF4X2luZGV4ICsgMSkgW10gaW5cbiAgbGV0IGNsZWFuLCBfbWF4X3N1Y2MgPVxuICAgIGxldCBtYXhfc3VjYyA9IEEuaW5pdCAobWF4X2luZGV4ICsgMSkgKGZ1biBpIC0+IGkpIGluXG4gICAgbGV0IF8gPVxuICAgICAgTS5pdGVyXG4gICAgICAgIChmdW4gc3VjYyAtPlxuICAgICAgICAgIFMuaXRlciAoZnVuIHByZWQgLT5cbiAgICAgICAgICAgICAgQS5zZXQgbWF4X3N1Y2MgcHJlZCAobWF4IHN1Y2MgKEEuZ2V0IG1heF9zdWNjIHByZWQpKSkpXG4gICAgICAgIHByZWNcbiAgICBpblxuICAgIGxldCBpc19sYXN0X3N1Y2Nfb2YgPSBBLm1ha2UgKG1heF9pbmRleCArIDEpIFtdIGluXG4gICAgbGV0IGFkZCBub2RlIG1heF9zdWNjID1cbiAgICAgIGxldCBvbGRfbCA9IEEuZ2V0IGlzX2xhc3Rfc3VjY19vZiBtYXhfc3VjYyBpblxuICAgICAgbGV0IGwnID0gbm9kZSA6OiBvbGRfbCBpblxuICAgICAgQS5zZXQgaXNfbGFzdF9zdWNjX29mIG1heF9zdWNjIGwnXG4gICAgaW5cbiAgICBsZXQgXyA9IEEuaXRlcmkgYWRkIG1heF9zdWNjIGluXG4gICAgbGV0IF8gPSBBLnNldCBpc19sYXN0X3N1Y2Nfb2YgMCBbXSBpblxuICAgIGxldCBnY193aGVuX3Zpc2l0IG5vZGUgPVxuICAgICAgTGlzdC5pdGVyIChmdW4gayAtPiBBLnNldCBzX3ByZWRfc3RhciBrIFtdKSAoQS5nZXQgaXNfbGFzdF9zdWNjX29mIG5vZGUpXG4gICAgaW5cbiAgICBnY193aGVuX3Zpc2l0LCBmdW4gaSAtPiBBLmdldCBtYXhfc3VjYyBpXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIG1hdGNoIGV2ZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvXG4gICAgfCBTb21lIGUgLT5cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50IHBhcmFtZXRlciBlcnJvciBlIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgbGV0IG91dHB1dCA9XG4gICAgTS5mb2xkX3dpdGhfaW50ZXJydXB0aW9uXG4gICAgICAoZnVuIHN1Y2Mgc19wcmVkICh0aWNrLCBlcnJvciwgbG9nX2luZm8sIGNvdW50ZXIsIGEpIC0+XG4gICAgICAgIGxldCByZWMgYXV4IChsIDogaW50IGxpc3QpIChhY2N1IDogaW50IGxpc3QpID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGFjY3VcbiAgICAgICAgICB8IHByZWQgOjogdCAtPlxuICAgICAgICAgICAgbGV0IG5ld19sID0gQS5nZXQgc19wcmVkX3N0YXIgcHJlZCBpblxuICAgICAgICAgICAgbGV0IGRpZmYgPVxuICAgICAgICAgICAgICBpZiBjb25maWcuY3V0X3RyYW5zaXRpdmVfcGF0aCB0aGVuXG4gICAgICAgICAgICAgICAgZGlmZl9saXN0X2RlY3JlYXNpbmcgdCBuZXdfbFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGF1eCBkaWZmIChtZXJnZV9saXN0X2RlY3JlYXNpbmcgKHByZWQgOjogbmV3X2wpIGFjY3UpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmVkX3N0YXIgPVxuICAgICAgICAgIGxldCBsX3ByZWQgPSBTLmZvbGQgKGZ1biBpIGogLT4gaSA6OiBqKSBzX3ByZWQgW10gaW5cbiAgICAgICAgICBsZXQgcyA9IEEuZ2V0IHNfcHJlZF9zdGFyIHN1Y2MgaW5cbiAgICAgICAgICBhdXggbF9wcmVkIHNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IF8gPSBBLnNldCBzX3ByZWRfc3RhciBzdWNjIHByZWRfc3RhciBpblxuICAgICAgICBsZXQgXyA9IGNsZWFuIHN1Y2MgaW5cbiAgICAgICAgbGV0IHRpY2sgPSBkb190aWNrIHRpY2sgaW5cbiAgICAgICAgaWYgaXNfb2JzIHN1Y2MgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYSA9XG4gICAgICAgICAgICBmIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN1Y2MgcHJlZF9zdGFyIGFcbiAgICAgICAgICBpblxuICAgICAgICAgIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgICAgICAgICAoZnVuIGEgLT4gU3RvcC5zdWNjZXNzICh0aWNrLCBlcnJvciwgbG9nX2luZm8sIGNvdW50ZXIgKyAxLCBhKSlcbiAgICAgICAgICAgIChmdW4gYiAtPiBTdG9wLnN0b3AgKGVycm9yLCBsb2dfaW5mbywgYikpXG4gICAgICAgICAgICBhXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIFN0b3Auc3VjY2VzcyAodGljaywgZXJyb3IsIGxvZ19pbmZvLCBjb3VudGVyLCBhKSlcbiAgICAgIHByZWNcbiAgICAgICh0aWNrLCBlcnJvciwgbG9nX2luZm8sIDEsIGEpXG4gIGluXG4gIGxldCBfID0gY2xvc2VfdGljayAoKSBpblxuICBTdG9wLnN1Y2Nlc3Nfb3Jfc3RvcFxuICAgIChmdW4gKF8sIGVycm9yLCBsb2dfaW5mbywgXywgYSkgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBtYXRjaCBldmVudCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgfCBTb21lIGUgLT5cbiAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlciBlcnJvciBlIE5vbmUgbG9nX2luZm9cbiAgICAgIGluXG4gICAgICBTdG9wLnN1Y2Nlc3MgKGVycm9yLCBsb2dfaW5mbywgYSkpXG4gICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBiKSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIG1hdGNoIGV2ZW50IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mb1xuICAgICAgICB8IFNvbWUgZSAtPlxuICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnQgcGFyYW1ldGVyIGVycm9yIGUgTm9uZSBsb2dfaW5mb1xuICAgICAgaW5cbiAgICAgIFN0b3Auc3RvcCAoZXJyb3IsIGxvZ19pbmZvLCBiKSlcbiAgICBvdXRwdXRcblxubGV0IGNsb3N1cmVfYm90dG9tX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X29wdCBjb25maWcgcHJlY1xuICAgIGlzX29icyA9XG4gIGxldCBtYXhfaW5kZXggPSBNLmZvbGQgKGZ1biBpIF8gLT4gbWF4IGkpIHByZWMgMCBpblxuICBsZXQgc19wcmVkX3N0YXIgPSBBLm1ha2UgKG1heF9pbmRleCArIDEpIFtdIGluXG4gIGxldCBmIF9wIF9oIGMgZSBpIHMgYSA9XG4gICAgbGV0IF8gPSBBLnNldCBhIGkgcyBpblxuICAgIGUsIGMsIFN0b3Auc3VjY2VzcyBhXG4gIGluXG4gIGxldCBvdXRwdXQgPVxuICAgIGNsb3N1cmVfYm90dG9tX3VwX3dpdGhfZm9sZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHRcbiAgICAgIGNvbmZpZyBwcmVjIGlzX29icyBmIHNfcHJlZF9zdGFyXG4gIGluXG4gIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBncmFwaCkgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGdyYXBoLCBEZWNyZWFzaW5nX3dpdGhvdXRfbGFzdF9ldmVudCkpXG4gICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBfKSAtPlxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoc19wcmVkX3N0YXIsIERlY3JlYXNpbmdfd2l0aG91dF9sYXN0X2V2ZW50KSlcbiAgICBvdXRwdXRcblxubGV0IGNsb3N1cmVfdG9wX2Rvd24gcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIF9ldmVudF9vcHQgY29uZmlnIHByZWNcbiAgICBpc19vYnMgZGVsdGEgPVxuICBsZXQgZXJyX2xvZ2dlciA9IFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXIgaW5cbiAgbGV0IGlzX29icyA9XG4gICAgaWYgY29uZmlnLmtlZXBfYWxsX25vZGVzIHRoZW5cbiAgICAgIGZ1biBfIC0+XG4gICAgdHJ1ZVxuICAgIGVsc2VcbiAgICAgIGlzX29ic1xuICBpblxuICBsZXQgbWF4X2luZGV4ID0gTS5mb2xkIChmdW4gaSBfIC0+IG1heCBpKSBwcmVjIDAgaW5cbiAgbGV0IHByZWMgPSBNLmZvbGQgKGZ1biBpIHNfcHJlZCBsIC0+IChpLCBzX3ByZWQpIDo6IGwpIHByZWMgW10gaW5cbiAgbGV0IGNyZWF0ZV90YWludHMgaSA9XG4gICAgbGV0IHJlYyBhdXggZGVsdGEgb3V0cHV0ID1cbiAgICAgIGlmIGRlbHRhID0gMCB0aGVuXG4gICAgICAgIG91dHB1dFxuICAgICAgZWxzZVxuICAgICAgICBhdXggKGRlbHRhIC0gMSkgKFMuZW1wdHkgOjogb3V0cHV0KVxuICAgIGluXG4gICAgYXV4IGRlbHRhIFsgUy5zaW5nbGV0b24gaSBdXG4gIGluXG4gIGxldCBzaGlmdF90YWludHMgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCB0IDo6IHQnIDo6IHEgLT4gUy51bmlvbiB0IHQnIDo6IHFcbiAgICB8IF8gLT4gbFxuICBpblxuICBsZXQgcmVjIG1lcmdlX3RhaW50cyBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IF8sIFtdIC0+IGwxXG4gICAgfCBbXSwgXyAtPiBsMlxuICAgIHwgdCA6OiBxLCB0JyA6OiBxJyAtPiBTLnVuaW9uIHQgdCcgOjogbWVyZ2VfdGFpbnRzIHEgcSdcbiAgaW5cbiAgbGV0IHNfcHJlZF9zdGFyID0gQS5tYWtlIChtYXhfaW5kZXggKyAxKSBbXSBpblxuICBsZXQgdGFpbnQgaSB0YWludHMgPVxuICAgIG1hdGNoIHRhaW50cyB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgdCA6OiBfcSAtPlxuICAgICAgUy5pdGVyXG4gICAgICAgIChmdW4gdGFpbnQgLT4gQS5zZXQgc19wcmVkX3N0YXIgdGFpbnQgKGkgOjogQS5nZXQgc19wcmVkX3N0YXIgdGFpbnQpKVxuICAgICAgICB0XG4gIGluXG4gIGxldCBkb190aWNrLCB0aWNrLCBjbG9zZV90aWNrID1cbiAgICBpZiBtYXhfaW5kZXggPiAzMDAgJiYgY29uZmlnLmRvX3RpY2sgdGhlbiAoXG4gICAgICBsZXQgdGljayA9XG4gICAgICAgIFRpY2tfc3Rvcmllcy50aWNrX3N0b3JpZXMgZXJyX2xvZ2dlciBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyKVxuICAgICAgICAgIChmYWxzZSwgMCwgMCwgbWF4X2luZGV4KVxuICAgICAgaW5cbiAgICAgIGxldCBmID1cbiAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3RvcmllcyBlcnJfbG9nZ2VyIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgbGV0IGNsb3NlICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGVycl9sb2dnZXIgaW5cbiAgICAgIGYsIHRpY2ssIGNsb3NlXG4gICAgKSBlbHNlXG4gICAgICAoZnVuIHggLT4geCksIChmYWxzZSwgMCwgMCwgMCksIGZ1biAoKSAtPiAoKVxuICBpblxuICBsZXQgdGFpbnRpbmcgPSBBLm1ha2UgKG1heF9pbmRleCArIDEpIFtdIGluXG4gIGxldCBfID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biB0aWNrIChpLCBzX3ByZWQpIC0+XG4gICAgICAgIGxldCBuZXdfdGFpbnQgPVxuICAgICAgICAgIGlmIGlzX29icyBpIHRoZW5cbiAgICAgICAgICAgIGNyZWF0ZV90YWludHMgaVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0YWludHMgPSBtZXJnZV90YWludHMgbmV3X3RhaW50IChBLmdldCB0YWludGluZyBpKSBpblxuICAgICAgICBsZXQgKCkgPSB0YWludCBpIHRhaW50cyBpblxuICAgICAgICBsZXQgc2hpZnRlZF90YWludHMgPSBzaGlmdF90YWludHMgdGFpbnRzIGluXG4gICAgICAgIGxldCB0YWludCB4ID1cbiAgICAgICAgICBBLnNldCB0YWludGluZyB4IChtZXJnZV90YWludHMgc2hpZnRlZF90YWludHMgKEEuZ2V0IHRhaW50aW5nIHgpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBTLml0ZXIgdGFpbnQgc19wcmVkIGluXG4gICAgICAgIGxldCAoKSA9IEEuc2V0IHRhaW50aW5nIGkgW10gaW5cbiAgICAgICAgZG9fdGljayB0aWNrKVxuICAgICAgdGljayBwcmVjXG4gIGluXG4gIGxldCAoKSA9IGNsb3NlX3RpY2sgKCkgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCAoc19wcmVkX3N0YXIsIEluY3JlYXNpbmdfd2l0aF9sYXN0X2V2ZW50KVxuXG5sZXQgZ2V0X2xpc3RfaW5faW5jcmVhc2luZ19vcmRlcl93aXRoX2xhc3RfZXZlbnQgaSAobSwgbW9kZSkgPVxuICBtYXRjaCBtb2RlIHdpdGhcbiAgfCBJbmNyZWFzaW5nX3dpdGhfbGFzdF9ldmVudCAtPiBtLihpKVxuICB8IERlY3JlYXNpbmdfd2l0aG91dF9sYXN0X2V2ZW50IC0+XG4gICAgKG1hdGNoIG0uKGkpIHdpdGhcbiAgICB8IFtdIC0+IFtdXG4gICAgfCBsIC0+IExpc3QucmV2IChpIDo6IGwpKVxuXG5sZXQgY2xvc3VyZV9jaGVjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHQgY29uZmlnIHByZWMgaXNfb2JzXG4gICAgPVxuICBsZXQgdCA9IFN5cy50aW1lICgpIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIChhLCBhJykgPVxuICAgIGNsb3N1cmVfdG9wX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjXG4gICAgICBpc19vYnMgMFxuICBpblxuICBsZXQgdCcgPSBTeXMudGltZSAoKSBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYiwgYicpID1cbiAgICBjbG9zdXJlX2JvdHRvbV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHRcbiAgICAgIHsgY29uZmlnIHdpdGggZG9fdGljayA9IGZhbHNlIH1cbiAgICAgIHByZWMgaXNfb2JzXG4gIGluXG4gIGxldCB0JycgPSBTeXMudGltZSAoKSBpblxuICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIk5FVzogJWYgT0xEOiAlZiBcXG5cIiAodCcgLS4gdCkgKHQnJyAtLiB0JykgaW5cbiAgbGV0IF8gPVxuICAgIEEuaXRlcmlcbiAgICAgIChmdW4gaSBfcyAtPlxuICAgICAgICBsZXQgcyA9IGdldF9saXN0X2luX2luY3JlYXNpbmdfb3JkZXJfd2l0aF9sYXN0X2V2ZW50IGkgKGEsIGEnKSBpblxuICAgICAgICBsZXQgcycgPSBnZXRfbGlzdF9pbl9pbmNyZWFzaW5nX29yZGVyX3dpdGhfbGFzdF9ldmVudCBpIChiLCBiJykgaW5cbiAgICAgICAgaWYgcyA9IHMnIHRoZW5cbiAgICAgICAgICAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIkRJRkZFUiAlaVxcblwiIGkgaW5cbiAgICAgICAgICBsZXQgXyA9IExpc3QuaXRlciAoUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiJWksIFwiKSBzIGluXG4gICAgICAgICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCJcXG5cIiBpblxuICAgICAgICAgIGxldCBfID0gTGlzdC5pdGVyIChQcmludGYuZnByaW50ZiBzdGRlcnIgXCIlaSwgXCIpIHMnIGluXG4gICAgICAgICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCJcXG5cIiBpblxuICAgICAgICAgICgpXG4gICAgICAgICkpXG4gICAgICBhXG4gIGluXG4gIGVycm9yLCBsb2dfaW5mbywgKGEsIGEnKVxuXG5sZXQgY2xvc3VyZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHQgY29uZmlnIHByZWMgaXNfb2JzID1cbiAgbWF0Y2ggY29uZmlnLmFsZ28gd2l0aFxuICB8IENoZWNrIC0+XG4gICAgY2xvc3VyZV9jaGVjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHQgY29uZmlnIHByZWMgaXNfb2JzXG4gIHwgQm90dG9tX3VwIC0+XG4gICAgY2xvc3VyZV9ib3R0b21fdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjXG4gICAgICBpc19vYnNcbiAgfCBUb3BfZG93biAtPlxuICAgIGNsb3N1cmVfdG9wX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjXG4gICAgICBpc19vYnMgMFxuXG5sZXQgcmVkdWN0aW9uX3RvcF9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWMgPVxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgIFN0b3J5UHJvZmlsaW5nLkdyYXBoX3JlZHVjdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIChwcmVjX3N0YXIsIF8pID1cbiAgICBjbG9zdXJlX3RvcF9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICBTdG9yeVByb2ZpbGluZy5UcmFuc2l0aXZlX2Nsb3N1cmUgY29uZmlnX2JpZ19ncmFwaF93aXRob3V0X3Byb2dyZXNzX2JhclxuICAgICAgcHJlY1xuICAgICAgKGZ1biBfIC0+IHRydWUpXG4gICAgICAyXG4gIGluXG4gIGxldCBvdXRwdXQgPVxuICAgIE0uZm9sZFxuICAgICAgKGZ1biBlaWQgbmVpZ2ggb3V0IC0+XG4gICAgICAgIGxldCB0b19yZW1vdmUgPSBBLmdldCBwcmVjX3N0YXIgZWlkIGluXG4gICAgICAgIGxldCBzID0gUy5mb2xkIChmdW4gaSBsIC0+IGkgOjogbCkgbmVpZ2ggW10gaW5cbiAgICAgICAgbGV0IHMgPSBMaXN0LnJldiBzIGluXG4gICAgICAgIGxldCByZWMgYXV4IGwxIGwyIG91dHB1dCA9XG4gICAgICAgICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICAgICAgICB8IF8sIFtdIC0+XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIHNldCBpIC0+IFMuYWRkIGkgc2V0KSBvdXRwdXQgbDFcbiAgICAgICAgICAgICgqIFRoaXMgaXMgcXVpdGUgYW5ub3lpbmcsIHdoeSBwcmVjIGlzIG5vdCBkZXNjcmliZWQgd2l0aCBvcmRlcmVkIGxpc3QgKilcbiAgICAgICAgICB8IFtdLCBfIC0+IG91dHB1dFxuICAgICAgICAgIHwgaCA6OiBxLCBoJyA6OiBxJyAtPlxuICAgICAgICAgICAgbGV0IGNtcCA9IGNvbXBhcmUgaCBoJyBpblxuICAgICAgICAgICAgaWYgY21wIDwgMCB0aGVuXG4gICAgICAgICAgICAgIGF1eCBxIGwyIChTLmFkZCBoIG91dHB1dClcbiAgICAgICAgICAgIGVsc2UgaWYgY21wID0gMCB0aGVuXG4gICAgICAgICAgICAgIGF1eCBxIHEnIG91dHB1dFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhdXggKGggOjogcSkgcScgb3V0cHV0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBzID0gYXV4IHMgdG9fcmVtb3ZlIFMuZW1wdHkgaW5cbiAgICAgICAgTS5hZGQgZWlkIHMgb3V0KVxuICAgICAgcHJlYyBwcmVjXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnQgcGFyYW1ldGVyIGVycm9yXG4gICAgICBTdG9yeVByb2ZpbGluZy5HcmFwaF9yZWR1Y3Rpb24gTm9uZSBsb2dfaW5mb1xuICBpblxuICBlcnJvciwgbG9nX2luZm8sIG91dHB1dFxuXG5sZXQgcmVkdWN0aW9uID0gcmVkdWN0aW9uX3RvcF9kb3duXG4iLCJ0eXBlIHF1YXJrX2xpc3RzID0ge1xuICBzaXRlX3Rlc3RlZDogKGludCAqIGludCkgbGlzdDtcbiAgc2l0ZV9tb2RpZmllZDogKGludCAqIGludCkgbGlzdDtcbiAgaW50ZXJuYWxfc3RhdGVfdGVzdGVkOiAoaW50ICogaW50KSBsaXN0O1xuICBpbnRlcm5hbF9zdGF0ZV9tb2RpZmllZDogKGludCAqIGludCkgbGlzdDtcbn1cblxudHlwZSBldmVudF9raW5kID0gT0JTIG9mIHN0cmluZyB8IEVWRU5UIG9mIFRyYWNlLmV2ZW50X2tpbmRcblxubGV0IGF0b21fdGVzdGVkID0gMVxubGV0IGF0b21fbW9kaWZpZWQgPSAyXG5sZXQgYXRvbV90ZXN0ZWRtb2RpZmllZCA9IDNcblxudHlwZSBhdG9tID0ge1xuICBjYXVzYWxfaW1wYWN0OiBpbnQ7ICgqKDEpIHRlc3RlZCAoMikgbW9kaWZpZWQsICgzKSB0ZXN0ZWQgKyBtb2RpZmllZCopXG4gIGVpZDogaW50OyAoKmV2ZW50IGlkZW50aWZpZXIqKVxuICBraW5kOiBldmVudF9raW5kOyAoKm9ic2VydmF0aW9uOiBzdHJpbmcgbGlzdCopXG59XG5cbnR5cGUgYXR0cmlidXRlID0gYXRvbSBsaXN0ICgqdmVydGljYWwgc2VxdWVuY2Ugb2YgYXRvbXMqKVxuXG50eXBlIGdyaWQgPSB7XG4gIGZsb3c6IChpbnQgKiBpbnQgKiBpbnQsIGF0dHJpYnV0ZSkgSGFzaHRibC50O1xuICAoKihuX2ksc19pLHFfaSkgLT4gYXR0X2kgd2l0aCBuX2k6IG5vZGVfaWQsIHNfaTogc2l0ZV9pZCwgcV9pOlxuICAgIGxpbmsgKDEpIG9yIGludGVybmFsIHN0YXRlICgwKSAqKVxuICBwaWRfdG9faW5pdDogKGludCAqIGludCAqIGludCwgaW50KSBIYXNodGJsLnQ7XG4gIG9iczogaW50IGxpc3Q7XG4gIGluaXRfdGJsOiAoaW50LCBNb2RzLkludFNldC50KSBIYXNodGJsLnQ7ICgqZGVjcmVhc2luZyopXG4gIGluaXRfdG9fZWlkbWF4OiAoaW50LCBpbnQpIEhhc2h0YmwudDtcbn1cblxudHlwZSBjb25maWcgPSB7XG4gIGV2ZW50c19raW5kOiBldmVudF9raW5kIE1vZHMuSW50TWFwLnQ7XG4gIHByZWNfMTogTW9kcy5JbnRTZXQudCBNb2RzLkludE1hcC50O1xuICBjb25mbGljdDogTW9kcy5JbnRTZXQudCBNb2RzLkludE1hcC50O1xufVxuXG50eXBlIGVucmljaGVkX2dyaWQgPSB7XG4gIGNvbmZpZzogY29uZmlnO1xuICBkZXB0aDogaW50O1xuICBwcmVjX3N0YXI6IGludCBsaXN0IGFycmF5ICogR3JhcGhfY2xvc3VyZS5vcmRlcjsgKCpkZWNyZWFzaW5nKilcbiAgZGVwdGhfb2ZfZXZlbnQ6IGludCBNb2RzLkludE1hcC50O1xuICBzaXplOiBpbnQ7XG59XG5cbnR5cGUgZm9ybWF0Q2Zsb3cgPSBEb3QgfCBIdG1sIHwgSnNvblxuXG5sZXQgZW1wdHlfY29uZmlnID1cbiAge1xuICAgIGV2ZW50c19raW5kID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgY29uZmxpY3QgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICBwcmVjXzEgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgfVxuXG5sZXQgcHJpbnRfZXZlbnRfa2luZCA/ZW52IGYgPSBmdW5jdGlvblxuICB8IEVWRU5UIGUgLT4gVHJhY2UucHJpbnRfZXZlbnRfa2luZCA/ZW52IGYgZVxuICB8IE9CUyBpIC0+XG4gICAgKG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJPQlMoJXMpXCIgaVxuICAgIHwgU29tZSBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBpKVxuXG5sZXQgZGVidWdfcHJpbnRfY2F1c2FsIGYgaSA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgIChpZiBpID0gYXRvbV90ZXN0ZWQgdGhlblxuICAgICAgIFwidGVzdGVkXCJcbiAgICAgZWxzZSBpZiBpID0gYXRvbV9tb2RpZmllZCB0aGVuXG4gICAgICAgXCJtb2RpZmllZFwiXG4gICAgIGVsc2UgaWYgaSA9IGF0b21fdGVzdGVkIGxvciBhdG9tX21vZGlmaWVkIHRoZW5cbiAgICAgICBcInRlc3RlZCZtb2RpZmllZFwiXG4gICAgIGVsc2VcbiAgICAgICBcIkNBVVNBTCBJTVBBQ1QgVU5ERUZJTkVEXCIpXG5cbmxldCBkZWJ1Z19wcmludF9hdG9tIGYgYSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJ7IyVpOiAlYSAlYX1cIiBhLmVpZCBkZWJ1Z19wcmludF9jYXVzYWwgYS5jYXVzYWxfaW1wYWN0XG4gICAgKHByaW50X2V2ZW50X2tpbmQgP2VudjpOb25lKVxuICAgIGEua2luZFxuXG5sZXQgZGVidWdfcHJpbnRfZ3JpZCBmIGcgPVxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj5GbG93OkAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBIYXNodGJsLml0ZXJcbiAgICAgIChmdW4gKG5vZGVfaWQsIHNpdGVfaWQsIHEpIGwgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPDI+JWkuJWklczpALCVhQF1ALFwiIG5vZGVfaWQgc2l0ZV9pZFxuICAgICAgICAgIChpZiBxID0gMCB0aGVuXG4gICAgICAgICAgICAgXCJ+XCJcbiAgICAgICAgICAgZWxzZSBpZiBxID0gMSB0aGVuXG4gICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgXCJVTkRFRklORURcIilcbiAgICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSBkZWJ1Z19wcmludF9hdG9tKVxuICAgICAgICAgIGwpXG4gICAgICBnLmZsb3dcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBdQC5cIlxuXG5sZXQgZW1wdHlfZ3JpZCAoKSA9XG4gIHtcbiAgICBmbG93ID0gSGFzaHRibC5jcmVhdGUgIVBhcmFtZXRlci5kZWZhdWx0RXh0QXJyYXlTaXplO1xuICAgIHBpZF90b19pbml0ID0gSGFzaHRibC5jcmVhdGUgIVBhcmFtZXRlci5kZWZhdWx0RXh0QXJyYXlTaXplO1xuICAgIG9icyA9IFtdO1xuICAgIGluaXRfdGJsID0gSGFzaHRibC5jcmVhdGUgIVBhcmFtZXRlci5kZWZhdWx0RXh0QXJyYXlTaXplO1xuICAgIGluaXRfdG9fZWlkbWF4ID0gSGFzaHRibC5jcmVhdGUgIVBhcmFtZXRlci5kZWZhdWx0RXh0QXJyYXlTaXplO1xuICB9XG5cbmxldCBidWlsZF9zdWJzIGwgPVxuICBzbmRcbiAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAoZnVuIChuLCBtYXApIGEgLT4gc3VjYyBuLCBNb2RzLkludE1hcC5hZGQgYSBuIG1hcClcbiAgICAgICAoMSwgTW9kcy5JbnRNYXAuZW1wdHkpIGwpXG5cbmxldCBzdWJtYXAgc3VicyBsIG0gZGVmYXVsdCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBtJyBhIC0+XG4gICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBhIHN1YnMgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBTb21lIG5ld19hIC0+XG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCBuZXdfYVxuICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBhIG0gd2l0aFxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIChtYXRjaCBkZWZhdWx0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICAgIHwgU29tZSBhIC0+IGEpKVxuICAgICAgICAgIG0nKVxuICAgIE1vZHMuSW50TWFwLmVtcHR5IGxcblxubGV0IGFkZF9pbml0X3BpZCBlaWQgcGlkIGdyaWQgPVxuICBsZXQgZWlkX2luaXQgPSBIYXNodGJsLmZpbmQgZ3JpZC5waWRfdG9faW5pdCBwaWQgaW5cbiAgbGV0IG9sZCA9XG4gICAgdHJ5IEhhc2h0YmwuZmluZCBncmlkLmluaXRfdGJsIGVpZCB3aXRoIE5vdF9mb3VuZCAtPiBNb2RzLkludFNldC5lbXB0eVxuICBpblxuICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgZ3JpZC5pbml0X3RibCBlaWQgKE1vZHMuSW50U2V0LmFkZCBlaWRfaW5pdCBvbGQpIGluXG4gIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBncmlkLmluaXRfdG9fZWlkbWF4IGVpZF9pbml0IGVpZCBpblxuICBncmlkXG5cbmxldCBfc3Vic2V0IHN1YnMgbCBzID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIHMnIGEgLT5cbiAgICAgIGlmIE1vZHMuSW50U2V0Lm1lbSBhIHMgdGhlblxuICAgICAgICBNb2RzLkludFNldC5hZGRcbiAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gYSBzdWJzIHdpdGhcbiAgICAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgICAgfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICBzJ1xuICAgICAgZWxzZVxuICAgICAgICBzJylcbiAgICBNb2RzLkludFNldC5lbXB0eSBsXG5cbmxldCBzdWJjb25maWdfd2l0aF9zdWJzIHN1YnMgY29uZmlnIGwgPVxuICB7XG4gICAgZXZlbnRzX2tpbmQgPSBzdWJtYXAgc3VicyBsIGNvbmZpZy5ldmVudHNfa2luZCBOb25lO1xuICAgIHByZWNfMSA9IHN1Ym1hcCBzdWJzIGwgY29uZmlnLnByZWNfMSAoU29tZSBNb2RzLkludFNldC5lbXB0eSk7XG4gICAgY29uZmxpY3QgPSBzdWJtYXAgc3VicyBsIGNvbmZpZy5jb25mbGljdCAoU29tZSBNb2RzLkludFNldC5lbXB0eSk7XG4gIH1cblxubGV0IHN1YmVucmljaGVkX2dyaWRfd2l0aF9zdWJzIHN1YnMgZ3JpZCBsID1cbiAgbGV0IGRlcHRoX29mX2V2ZW50ID0gc3VibWFwIHN1YnMgbCBncmlkLmRlcHRoX29mX2V2ZW50IChTb21lIDApIGluXG4gIGxldCBkZXB0aCA9IE1vZHMuSW50TWFwLmZvbGQgKGZ1biBfIC0+IG1heCkgZGVwdGhfb2ZfZXZlbnQgMCBpblxuICB7XG4gICAgcHJlY19zdGFyID0gZ3JpZC5wcmVjX3N0YXI7XG4gICAgY29uZmlnID0gc3ViY29uZmlnX3dpdGhfc3VicyBzdWJzIGdyaWQuY29uZmlnIGw7XG4gICAgZGVwdGhfb2ZfZXZlbnQ7XG4gICAgZGVwdGg7XG4gICAgc2l6ZSA9IExpc3QubGVuZ3RoIGw7XG4gIH1cblxubGV0IF9zdWJjb25maWcgY29uZmlnIGwgPSBzdWJjb25maWdfd2l0aF9zdWJzIChidWlsZF9zdWJzIGwpIGNvbmZpZyBsXG5sZXQgX3N1YmVucmljaGVkX2dyaWQgZ3JpZCBsID0gc3ViZW5yaWNoZWRfZ3JpZF93aXRoX3N1YnMgKGJ1aWxkX3N1YnMgbCkgZ3JpZCBsXG5sZXQgYWRkX29ic19laWQgZWlkIGdyaWQgPSB7IGdyaWQgd2l0aCBvYnMgPSBlaWQgOjogZ3JpZC5vYnMgfVxuXG5sZXQgZ3JpZF9maW5kIChub2RlX2lkLCBzaXRlX2lkLCBxdWFyaykgZ3JpZCA9XG4gIEhhc2h0YmwuZmluZCBncmlkLmZsb3cgKG5vZGVfaWQsIHNpdGVfaWQsIHF1YXJrKVxuXG5sZXQgX2lzX2VtcHR5X2dyaWQgZ3JpZCA9IEhhc2h0YmwubGVuZ3RoIGdyaWQuZmxvdyA9IDBcblxubGV0IGdyaWRfYWRkIHF1YXJrIGVpZCAoYXR0cmlidXRlIDogYXR0cmlidXRlKSBncmlkID1cbiAgbGV0ICgpID1cbiAgICBpZiBub3QgKEhhc2h0YmwubWVtIGdyaWQuZmxvdyBxdWFyaykgdGhlblxuICAgICAgSGFzaHRibC5hZGQgZ3JpZC5waWRfdG9faW5pdCBxdWFyayBlaWRcbiAgaW5cbiAgSGFzaHRibC5yZXBsYWNlIGdyaWQuZmxvdyBxdWFyayBhdHRyaWJ1dGU7XG4gIGdyaWRcblxubGV0IF9sYXN0X2V2ZW50IGF0dHJpYnV0ZSA9XG4gIG1hdGNoIGF0dHJpYnV0ZSB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGEgOjogXyAtPiBTb21lIGEuZWlkXG5cbigqYWRkcyBhdG9tIGEgdG8gYXR0cmlidXRlIGF0dC5cbiAgQ29sbGFwc2VzIGxhc3QgYXRvbSBpZiBpZiBiZWFycyB0aGUgc2FtZSBpZCBhcyBhIC0taW4gdGhlIGNhc2Ugb2YgYSBub24gYXRvbWljIGFjdGlvbiopXG5sZXQgcHVzaCAoYSA6IGF0b20pIChhdHQgOiBhdG9tIGxpc3QpID1cbiAgbWF0Y2ggYXR0IHdpdGhcbiAgfCBbXSAtPiBbIGEgXVxuICB8IGEnIDo6IGF0dCcgLT5cbiAgICBpZiBhJy5laWQgPSBhLmVpZCB0aGVuIChcbiAgICAgIGxldCAoKSA9IGFzc2VydCAoYScua2luZCA9IGEua2luZCkgaW5cbiAgICAgIHsgYScgd2l0aCBjYXVzYWxfaW1wYWN0ID0gYS5jYXVzYWxfaW1wYWN0IGxvciBhJy5jYXVzYWxfaW1wYWN0IH0gOjogYXR0J1xuICAgICkgZWxzZVxuICAgICAgYSA6OiBhdHRcblxuKCoqc2lkZV9lZmZlY3QgSW50MlNldC50OiBwYWlycyAoYWdlbnRzLHBvcnRzKSB0aGF0IGhhdmUgYmVlbiBmcmVlZCBhcyBhIHNpZGUgZWZmZWN0IC0tdmlhIGEgREVMIG9yIGEgRlJFRSBhY3Rpb24qKVxuKCpOQiBubyBpbnRlcm5hbCBzdGF0ZSBtb2RpZiBhcyBzaWRlIGVmZmVjdCopXG5cbigqbGV0IGltcGFjdCBpc19saW5rIGMgPVxuICBpZiBpc19saW5rIHRoZW5cbiAgICBpZiBQcmltaXRpdmVzLkNhdXNhbGl0eS5pc19saW5rX21vZGlmIGMgdGhlblxuICAgICAgaWYgUHJpbWl0aXZlcy5DYXVzYWxpdHkuaXNfbGlua190ZXN0ZWQgYyB0aGVuIGF0b21fdGVzdGVkbW9kaWZpZWQgZWxzZSBhdG9tX21vZGlmaWVkXG4gICAgZWxzZSBhdG9tX3Rlc3RlZFxuICBlbHNlICgqaW50ZXJuYWwgc3RhdGUqKVxuICAgIGlmIFByaW1pdGl2ZXMuQ2F1c2FsaXR5LmlzX2ludGVybmFsX21vZGlmIGMgdGhlblxuICAgICAgaWYgUHJpbWl0aXZlcy5DYXVzYWxpdHkuaXNfaW50ZXJuYWxfdGVzdGVkIGMgdGhlbiBhdG9tX3Rlc3RlZG1vZGlmaWVkIGVsc2UgYXRvbV9tb2RpZmllZFxuICAgIGVsc2UgYXRvbV90ZXN0ZWRcbiopXG5sZXQgYWRkICgobm9kZV9pZCwgXyksIHNpdGVfaWQpIGlzX2xpbmsgdmEgZ3JpZCBldmVudF9udW1iZXIga2luZCA9XG4gIGxldCBxID1cbiAgICBpZiBpc19saW5rIHRoZW5cbiAgICAgIGF0b21fdGVzdGVkXG4gICAgZWxzZVxuICAgICAgMFxuICBpblxuICBsZXQgYXR0ID0gdHJ5IGdyaWRfZmluZCAobm9kZV9pZCwgc2l0ZV9pZCwgcSkgZ3JpZCB3aXRoIE5vdF9mb3VuZCAtPiBbXSBpblxuICBsZXQgYXR0ID1cbiAgICBwdXNoXG4gICAgICB7IGNhdXNhbF9pbXBhY3QgPSB2YTsgZWlkID0gZXZlbnRfbnVtYmVyOyBraW5kICgqOyBvYnNlcnZhdGlvbiA9IG9icyopIH1cbiAgICAgIGF0dFxuICBpblxuICBsZXQgZ3JpZCA9IGdyaWRfYWRkIChub2RlX2lkLCBzaXRlX2lkLCBxKSBldmVudF9udW1iZXIgYXR0IGdyaWQgaW5cbiAgYWRkX2luaXRfcGlkIGV2ZW50X251bWJlciAobm9kZV9pZCwgc2l0ZV9pZCwgcSkgZ3JpZFxuXG5sZXQgYWRkX2FjdGlvbnMgZW52IGdyaWQgZXZlbnRfbnVtYmVyIGtpbmQgYWN0aW9ucyA9XG4gIGxldCByZWMgYXV4IGdyaWQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gZ3JpZFxuICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIF8pIDo6IHEgLT5cbiAgICAgIGF1eCAoYWRkIHNpdGUgZmFsc2UgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciBraW5kKSBxXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHNpdGUxLCBzaXRlMikgOjogcSAtPlxuICAgICAgbGV0IGdyaWQnID0gYWRkIHNpdGUyIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciBraW5kIGluXG4gICAgICBhdXggKGFkZCBzaXRlMSB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCcgZXZlbnRfbnVtYmVyIGtpbmQpIHFcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoc2l0ZTEsIF8pIDo6IHEgLT5cbiAgICAgIGF1eCAoYWRkIHNpdGUxIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciBraW5kKSBxXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgc2l0ZSA6OiBxIC0+XG4gICAgICBhdXggKGFkZCBzaXRlIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciBraW5kKSBxXG4gICAgfCAoIEluc3RhbnRpYXRpb24uQ3JlYXRlICgoKF8sIG5hKSBhcyBhZyksIF8pXG4gICAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlICgoXywgbmEpIGFzIGFnKSApXG4gICAgICA6OiBxIC0+XG4gICAgICBsZXQgc2lncyA9IE1vZGVsLnNpZ25hdHVyZXMgZW52IGluXG4gICAgICBsZXQgYWdfaW50ZiA9IFNpZ25hdHVyZS5nZXQgc2lncyBuYSBpblxuICAgICAgbGV0IGdyaWQgPSBhZGQgKGFnLCAtMSkgdHJ1ZSBhdG9tX21vZGlmaWVkIGdyaWQgZXZlbnRfbnVtYmVyIGtpbmQgaW5cbiAgICAgIGxldCBncmlkID1cbiAgICAgICAgU2lnbmF0dXJlLmZvbGRcbiAgICAgICAgICAoZnVuIHNpdGUgXyBncmlkIC0+XG4gICAgICAgICAgICBsZXQgZ3JpZCcgPVxuICAgICAgICAgICAgICBtYXRjaCBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSBuYSBzaXRlIHNpZ3Mgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZ3JpZFxuICAgICAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAgIGFkZCAoYWcsIHNpdGUpIGZhbHNlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIga2luZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFkZCAoYWcsIHNpdGUpIHRydWUgYXRvbV9tb2RpZmllZCBncmlkJyBldmVudF9udW1iZXIga2luZClcbiAgICAgICAgICBncmlkIGFnX2ludGZcbiAgICAgIGluXG4gICAgICBhdXggZ3JpZCBxXG4gIGluXG4gIGF1eCBncmlkIGFjdGlvbnNcblxubGV0IGFkZF90ZXN0cyBncmlkIGV2ZW50X251bWJlciBraW5kIHRlc3RzID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBncmlkIC0+IGZ1bmN0aW9uXG4gICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYWcgLT5cbiAgICAgICAgIGFkZCAoYWcsIC0xKSB0cnVlIGF0b21fdGVzdGVkIGdyaWQgZXZlbnRfbnVtYmVyIGtpbmRcbiAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChzaXRlLCBfKSAtPlxuICAgICAgICAgYWRkIHNpdGUgZmFsc2UgYXRvbV90ZXN0ZWQgZ3JpZCBldmVudF9udW1iZXIga2luZFxuICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIHNpdGVcbiAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgc2l0ZVxuICAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzaXRlLCBfKSAtPlxuICAgICAgICAgYWRkIHNpdGUgdHJ1ZSBhdG9tX3Rlc3RlZCBncmlkIGV2ZW50X251bWJlciBraW5kXG4gICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICBsZXQgZ3JpZCcgPSBhZGQgc2l0ZTIgdHJ1ZSBhdG9tX3Rlc3RlZCBncmlkIGV2ZW50X251bWJlciBraW5kIGluXG4gICAgICAgICBhZGQgc2l0ZTEgdHJ1ZSBhdG9tX3Rlc3RlZCBncmlkJyBldmVudF9udW1iZXIga2luZCkpXG4gICAgZ3JpZCB0ZXN0c1xuXG5sZXQgcmVjb3JkIChraW5kLCBldmVudCwgXykgZXZlbnRfbnVtYmVyIGVudiBncmlkID1cbiAgbGV0IGdyaWQgPVxuICAgIGFkZF90ZXN0cyBncmlkIGV2ZW50X251bWJlciAoRVZFTlQga2luZCkgZXZlbnQuSW5zdGFudGlhdGlvbi50ZXN0c1xuICBpblxuICBsZXQgZ3JpZCA9XG4gICAgYWRkX3Rlc3RzIGdyaWQgZXZlbnRfbnVtYmVyIChFVkVOVCBraW5kKVxuICAgICAgWyBldmVudC5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyBdXG4gIGluXG4gIGxldCBncmlkID1cbiAgICBhZGRfYWN0aW9ucyBlbnYgZ3JpZCBldmVudF9udW1iZXIgKEVWRU5UIGtpbmQpIGV2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICBpblxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gZ3JpZCBzaXRlIC0+XG4gICAgICBhZGRcbiAgICAgICAgKGZzdCBzaXRlLCAtMSlcbiAgICAgICAgdHJ1ZSBhdG9tX3Rlc3RlZFxuICAgICAgICAoYWRkIHNpdGUgdHJ1ZSBhdG9tX21vZGlmaWVkIGdyaWQgZXZlbnRfbnVtYmVyIChFVkVOVCBraW5kKSlcbiAgICAgICAgZXZlbnRfbnVtYmVyIChFVkVOVCBraW5kKSlcbiAgICBncmlkIGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdFxuXG5sZXQgcmVjb3JkX29icyAoa2luZCwgdGVzdHMsIF8pIHNpZGVfZWZmZWN0cyBldmVudF9udW1iZXIgZ3JpZCA9XG4gIGxldCBncmlkID0gYWRkX29ic19laWQgZXZlbnRfbnVtYmVyIGdyaWQgaW5cbiAgbGV0IGdyaWQgPSBhZGRfdGVzdHMgZ3JpZCBldmVudF9udW1iZXIgKE9CUyBraW5kKSB0ZXN0cyBpblxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gZ3JpZCBzaXRlIC0+IGFkZCBzaXRlIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciAoT0JTIGtpbmQpKVxuICAgIGdyaWQgc2lkZV9lZmZlY3RzXG5cbmxldCByZWNvcmRfaW5pdCAobGJsLCBhY3Rpb25zKSBldmVudF9udW1iZXIgZW52IGdyaWQgPVxuICBhZGRfYWN0aW9ucyBlbnYgZ3JpZCBldmVudF9udW1iZXIgKEVWRU5UIChUcmFjZS5JTklUIGxibCkpIGFjdGlvbnNcblxubGV0IGFkZF9wcmVkIGVpZCBhdG9tIGNvbmZpZyA9XG4gIGxldCBldmVudHNfa2luZCA9IE1vZHMuSW50TWFwLmFkZCBhdG9tLmVpZCBhdG9tLmtpbmQgY29uZmlnLmV2ZW50c19raW5kIGluXG4gIGxldCBwcmVkX3NldCA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBlaWQgY29uZmlnLnByZWNfMSBpblxuICBsZXQgcHJlY18xID1cbiAgICBNb2RzLkludE1hcC5hZGQgZWlkIChNb2RzLkludFNldC5hZGQgYXRvbS5laWQgcHJlZF9zZXQpIGNvbmZpZy5wcmVjXzFcbiAgaW5cbiAgeyBjb25maWcgd2l0aCBwcmVjXzE7IGV2ZW50c19raW5kIH1cblxubGV0IGFkZF9jb25mbGljdCBlaWQgYXRvbSBjb25maWcgPVxuICBsZXQgZXZlbnRzX2tpbmQgPSBNb2RzLkludE1hcC5hZGQgYXRvbS5laWQgYXRvbS5raW5kIGNvbmZpZy5ldmVudHNfa2luZCBpblxuICBsZXQgY2ZsY3Rfc2V0ID1cbiAgICBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgZWlkIGNvbmZpZy5jb25mbGljdFxuICBpblxuICBsZXQgY2ZsY3QgPVxuICAgIE1vZHMuSW50TWFwLmFkZCBlaWQgKE1vZHMuSW50U2V0LmFkZCBhdG9tLmVpZCBjZmxjdF9zZXQpIGNvbmZpZy5jb25mbGljdFxuICBpblxuICB7IGNvbmZpZyB3aXRoIGNvbmZsaWN0ID0gY2ZsY3Q7IGV2ZW50c19raW5kIH1cblxubGV0IHJlYyBwYXJzZV9hdHRyaWJ1dGUgbGFzdF9tb2RpZiBsYXN0X3Rlc3RlZCBhdHRyaWJ1dGUgY29uZmlnID1cbiAgbWF0Y2ggYXR0cmlidXRlIHdpdGhcbiAgfCBbXSAtPiBjb25maWdcbiAgfCBhdG9tIDo6IGF0dCAtPlxuICAgIGxldCBldmVudHNfa2luZCA9IE1vZHMuSW50TWFwLmFkZCBhdG9tLmVpZCBhdG9tLmtpbmQgY29uZmlnLmV2ZW50c19raW5kIGluXG4gICAgbGV0IHByZWNfMSA9XG4gICAgICBsZXQgcHJlZHMgPVxuICAgICAgICBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgYXRvbS5laWQgY29uZmlnLnByZWNfMVxuICAgICAgaW5cbiAgICAgIE1vZHMuSW50TWFwLmFkZCBhdG9tLmVpZCBwcmVkcyBjb25maWcucHJlY18xXG4gICAgaW5cbiAgICBsZXQgY29uZmlnID0geyBjb25maWcgd2l0aCBldmVudHNfa2luZDsgcHJlY18xIH0gaW5cbiAgICAoKmF0b20gaGFzIGEgbW9kaWZpY2F0aW9uKilcbiAgICBpZlxuICAgICAgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV9tb2RpZmllZFxuICAgICAgfHwgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV90ZXN0ZWRtb2RpZmllZFxuICAgIHRoZW4gKFxuICAgICAgbGV0IGNvbmZpZyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBjb25maWcgcHJlZF9pZCAtPiBhZGRfcHJlZCBwcmVkX2lkIGF0b20gY29uZmlnKVxuICAgICAgICAgIGNvbmZpZyBsYXN0X3Rlc3RlZFxuICAgICAgaW5cbiAgICAgIGxldCB0ZXN0ZWQgPVxuICAgICAgICBpZlxuICAgICAgICAgIGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fdGVzdGVkXG4gICAgICAgICAgfHwgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV90ZXN0ZWQgbG9yIGF0b21fbW9kaWZpZWRcbiAgICAgICAgdGhlblxuICAgICAgICAgIFsgYXRvbS5laWQgXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgW11cbiAgICAgIGluXG4gICAgICBwYXJzZV9hdHRyaWJ1dGUgKFNvbWUgYXRvbS5laWQpIHRlc3RlZCBhdHQgY29uZmlnXG4gICAgKSBlbHNlIChcbiAgICAgICgqIGF0b20gaXMgYSBwdXJlIHRlc3QqKVxuICAgICAgbGV0IGNvbmZpZyA9XG4gICAgICAgIG1hdGNoIGxhc3RfbW9kaWYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gY29uZmlnXG4gICAgICAgIHwgU29tZSBlaWQgLT5cbiAgICAgICAgICBhZGRfY29uZmxpY3QgZWlkIGF0b21cbiAgICAgICAgICAgIGNvbmZpZyAoKmFkZGluZyBjb25mbGljdCB3aXRoIGxhc3QgbW9kaWZpY2F0aW9uKilcbiAgICAgIGluXG4gICAgICBwYXJzZV9hdHRyaWJ1dGUgbGFzdF9tb2RpZiAoYXRvbS5laWQgOjogbGFzdF90ZXN0ZWQpIGF0dCBjb25maWdcbiAgICApXG5cbmxldCBjdXQgPyh3aXRoX3JlZHVjdGlvbiA9IHRydWUpIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGF0dHJpYnV0ZV9pZHNcbiAgICBncmlkID1cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnQgcGFyYW1ldGVyIGVycm9yXG4gICAgICBTdG9yeVByb2ZpbGluZy5CdWlsZF9jb25maWd1cmF0aW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgbGV0IHJlYyBidWlsZF9jb25maWcgYXR0cmlidXRlX2lkcyBjZmcgPVxuICAgIG1hdGNoIGF0dHJpYnV0ZV9pZHMgd2l0aFxuICAgIHwgW10gLT4gY2ZnXG4gICAgfCAobm9kZV9pLCBzaXRlX2ksIHR5cGVfaSkgOjogdGwgLT5cbiAgICAgIGxldCBhdHRyaWJ1dGUgPVxuICAgICAgICB0cnkgZ3JpZF9maW5kIChub2RlX2ksIHNpdGVfaSwgdHlwZV9pKSBncmlkXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGludmFsaWRfYXJnIFwiQ2F1c2FsLmN1dFwiXG4gICAgICBpblxuICAgICAgbGV0IGNmZyA9XG4gICAgICAgIG1hdGNoIGF0dHJpYnV0ZSB3aXRoXG4gICAgICAgIHwgW10gLT4gY2ZnXG4gICAgICAgIHwgYXRvbSA6OiBhdHQgLT5cbiAgICAgICAgICBsZXQgZXZlbnRzX2tpbmQgPVxuICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGF0b20uZWlkIGF0b20ua2luZCBjZmcuZXZlbnRzX2tpbmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwcmVjXzEgPVxuICAgICAgICAgICAgbGV0IHByZWRzID1cbiAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGF0b20uZWlkIGNmZy5wcmVjXzFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgYXRvbS5laWQgcHJlZHMgY2ZnLnByZWNfMVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRlc3RlZCA9XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBhdG9tLmNhdXNhbF9pbXBhY3QgPSBhdG9tX3Rlc3RlZFxuICAgICAgICAgICAgICB8fCBhdG9tLmNhdXNhbF9pbXBhY3QgPSBhdG9tX3Rlc3RlZG1vZGlmaWVkXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIFsgYXRvbS5laWQgXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBbXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG1vZGlmID1cbiAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fbW9kaWZpZWRcbiAgICAgICAgICAgICAgfHwgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV90ZXN0ZWRtb2RpZmllZFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBTb21lIGF0b20uZWlkXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICBpblxuICAgICAgICAgIHBhcnNlX2F0dHJpYnV0ZSBtb2RpZiB0ZXN0ZWQgYXR0IHsgY2ZnIHdpdGggcHJlY18xOyBldmVudHNfa2luZCB9XG4gICAgICBpblxuICAgICAgYnVpbGRfY29uZmlnIHRsIGNmZ1xuICBpblxuICBsZXQgY2ZnID0gYnVpbGRfY29uZmlnIGF0dHJpYnV0ZV9pZHMgZW1wdHlfY29uZmlnIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnQgcGFyYW1ldGVyIGVycm9yXG4gICAgICBTdG9yeVByb2ZpbGluZy5CdWlsZF9jb25maWd1cmF0aW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgcmVkdWN0aW9uID1cbiAgICBpZiB3aXRoX3JlZHVjdGlvbiB0aGVuXG4gICAgICBHcmFwaF9jbG9zdXJlLnJlZHVjdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjZmcucHJlY18xXG4gICAgZWxzZVxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBjZmcucHJlY18xXG4gIGluXG4gIGVycm9yLCBsb2dfaW5mbywgeyBjZmcgd2l0aCBwcmVjXzEgPSByZWR1Y3Rpb24gfVxuXG5sZXQgcHBfYXRvbSBmIGF0b20gPVxuICBsZXQgaW1wX3N0ciA9XG4gICAgbWF0Y2ggYXRvbS5jYXVzYWxfaW1wYWN0IHdpdGhcbiAgICB8IDEgLT4gXCJvXCJcbiAgICB8IDIgLT4gXCJ4XCJcbiAgICB8IDMgLT4gXCIlXCJcbiAgICB8IF8gLT4gaW52YWxpZF9hcmcgXCJDYXVzYWwuc3RyaW5nX29mX2F0b21cIlxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiJXNfJWRcIiBpbXBfc3RyIGF0b20uZWlkXG5cbmxldCBfZHVtcCBncmlkIGZpYyA9XG4gIGxldCBkX2NoYW4gPSBLYXBwYV9maWxlcy5vcGVuX291dCAoRmlsZW5hbWUuY2hvcF9leHRlbnNpb24gZmljIF4gXCIudHh0XCIpIGluXG4gIGxldCBkID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBkX2NoYW4gaW5cbiAgbGV0ICgpID0gRm9ybWF0LnBwX29wZW5fdmJveCBkIDAgaW5cbiAgSGFzaHRibC5mb2xkXG4gICAgKGZ1biAobl9pZCwgc19pZCwgcSkgYXR0IF8gLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGQgXCIjJWkuJWklYzolYUAsXCIgbl9pZCBzX2lkXG4gICAgICAgIChpZiBxID0gMCB0aGVuXG4gICAgICAgICAgICd+J1xuICAgICAgICAgZWxzZVxuICAgICAgICAgICAnIScpXG4gICAgICAgIChQcC5saXN0IFBwLmVtcHR5IHBwX2F0b20pIGF0dClcbiAgICBncmlkLmZsb3cgKCk7XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGQgXCJAXUAuXCIgaW5cbiAgY2xvc2Vfb3V0IGRfY2hhblxuXG5sZXQgaWRzX29mX2dyaWQgZ3JpZCA9IEhhc2h0YmwuZm9sZCAoZnVuIGtleSBfIGwgLT4ga2V5IDo6IGwpIGdyaWQuZmxvdyBbXVxubGV0IGNvbmZpZ19vZl9ncmlkID0gY3V0XG5cbigqbGV0IHByZWNfc3Rhcl9vZl9jb25maWdfb2xkICBjb25maWcgPVxuICBsZXQgcmVjIHByZWNfY2xvc3VyZSBjb25maWcgdG9kbyBhbHJlYWR5X2RvbmUgY2xvc3VyZSA9XG4gICAgaWYgTW9kcy5JbnRTZXQuaXNfZW1wdHkgdG9kbyB0aGVuIGNsb3N1cmVcbiAgICBlbHNlXG4gICAgICBsZXQgZWlkID0gTW9kcy5JbnRTZXQuY2hvb3NlIHRvZG8gaW5cbiAgICAgIGxldCB0b2RvJyA9IE1vZHMuSW50U2V0LnJlbW92ZSBlaWQgdG9kbyBpblxuICAgICAgaWYgTW9kcy5JbnRTZXQubWVtIGVpZCBhbHJlYWR5X2RvbmVcbiAgICAgIHRoZW5cbiAgICAgICAgcHJlY19jbG9zdXJlIGNvbmZpZyB0b2RvJyBhbHJlYWR5X2RvbmUgY2xvc3VyZVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgcHJlYyA9IHRyeSBJbnRNYXAuZmluZCBlaWQgY29uZmlnLnByZWNfMSB3aXRoIE5vdF9mb3VuZCAtPiBNb2RzLkludFNldC5lbXB0eVxuICAgICAgICBpblxuICAgICAgcHJlY19jbG9zdXJlIGNvbmZpZyAoSW50U2V0LnVuaW9uIHRvZG8nIHByZWMpIChJbnRTZXQuYWRkIGVpZCBhbHJlYWR5X2RvbmUpIChJbnRTZXQudW5pb24gcHJlYyBjbG9zdXJlKVxuICBpblxuICBJbnRNYXAuZm9sZFxuICAgIChmdW4gZWlkIGtpbmQgcHJlY19zdGFyIC0+XG4gICAgICBsZXQgc2V0ID0gcHJlY19jbG9zdXJlIGNvbmZpZyAoSW50U2V0LnNpbmdsZXRvbiBlaWQpIE1vZHMuSW50U2V0LmVtcHR5IE1vZHMuSW50U2V0LmVtcHR5XG4gICAgICBpblxuICAgICAgSW50TWFwLmFkZCBlaWQgc2V0IHByZWNfc3RhclxuICAgICkgY29uZmlnLmV2ZW50cyBJbnRNYXAuZW1wdHkgKilcblxubGV0IHByZWNfc3Rhcl9vZl9jb25maWcgPSBHcmFwaF9jbG9zdXJlLmNsb3N1cmVcblxubGV0IGRlcHRoX2FuZF9zaXplX29mX2V2ZW50IGNvbmZpZyA9XG4gIE1vZHMuSW50TWFwLmZvbGRcbiAgICAoZnVuIGVpZCBwcmVjX2VpZHMgKGVtYXAsIF8pIC0+XG4gICAgICBsZXQgZCA9XG4gICAgICAgIE1vZHMuSW50U2V0LmZvbGRcbiAgICAgICAgICAoZnVuIGVpZCcgZCAtPlxuICAgICAgICAgICAgbGV0IGQnID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IDAgZWlkJyBlbWFwIGluXG4gICAgICAgICAgICBtYXggKGQnICsgMSkgZClcbiAgICAgICAgICBwcmVjX2VpZHMgMFxuICAgICAgaW5cbiAgICAgIE1vZHMuSW50TWFwLmFkZCBlaWQgZCBlbWFwLCBkKVxuICAgIGNvbmZpZy5wcmVjXzEgKE1vZHMuSW50TWFwLmVtcHR5LCAwKVxuXG5sZXQgZW5yaWNoX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY29uZmlnX2Nsb3N1cmUgZ3JpZCA9XG4gIGxldCBrZWVwX2wgPVxuICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gYSBiIC0+IE1vZHMuSW50U2V0LmFkZCBiIGEpIE1vZHMuSW50U2V0LmVtcHR5IGdyaWQub2JzXG4gIGluXG4gIGxldCB0b19rZWVwIGkgPSBNb2RzLkludFNldC5tZW0gaSBrZWVwX2wgaW5cbiAgbGV0IGlkcyA9IGlkc19vZl9ncmlkIGdyaWQgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgY29uZmlnID1cbiAgICBjb25maWdfb2ZfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpZHMgZ3JpZFxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVjX3N0YXIgPVxuICAgIHByZWNfc3Rhcl9vZl9jb25maWcgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgIChTb21lIFN0b3J5UHJvZmlsaW5nLlRyYW5zaXRpdmVfY2xvc3VyZSkgY29uZmlnX2Nsb3N1cmUgY29uZmlnLnByZWNfMVxuICAgICAgdG9fa2VlcFxuICBpblxuICBsZXQgZGVwdGhfb2ZfZXZlbnQsIGRlcHRoID0gZGVwdGhfYW5kX3NpemVfb2ZfZXZlbnQgY29uZmlnIGluXG4gICggZXJyb3IsXG4gICAgbG9nX2luZm8sXG4gICAge1xuICAgICAgY29uZmlnO1xuICAgICAgcHJlY19zdGFyO1xuICAgICAgZGVwdGg7XG4gICAgICBkZXB0aF9vZl9ldmVudDtcbiAgICAgIHNpemUgPSBNb2RzLkludE1hcC5zaXplIGNvbmZpZy5wcmVjXzE7XG4gICAgfSApXG5cbmxldCBmb2xkX292ZXJfY2F1c2FsX3Bhc3Rfb2Zfb2JzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNvbmZpZ19jbG9zdXJlXG4gICAgZ3JpZCBmIGEgPVxuICBsZXQga2VlcF9sID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGEgYiAtPiBNb2RzLkludFNldC5hZGQgYiBhKSBNb2RzLkludFNldC5lbXB0eSBncmlkLm9ic1xuICBpblxuICBsZXQgdG9fa2VlcCBpID0gTW9kcy5JbnRTZXQubWVtIGkga2VlcF9sIGluXG4gIGxldCBpZHMgPSBpZHNfb2ZfZ3JpZCBncmlkIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50IHBhcmFtZXRlciBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuQnVpbGRfY29uZmlndXJhdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGNvbmZpZyA9XG4gICAgY29uZmlnX29mX2dyaWQgfndpdGhfcmVkdWN0aW9uOmZhbHNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGlkc1xuICAgICAgZ3JpZFxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlciBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuQnVpbGRfY29uZmlndXJhdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIEdyYXBoX2Nsb3N1cmUuY2xvc3VyZV9ib3R0b21fdXBfd2l0aF9mb2xkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgKFNvbWUgU3RvcnlQcm9maWxpbmcuQ29sbGVjdF90cmFjZXMpIGNvbmZpZ19jbG9zdXJlIGNvbmZpZy5wcmVjXzEgdG9fa2VlcCBmXG4gICAgYVxuXG5sZXQgcHJpbnRfZXZlbnRfa2luZF9kb3RfYW5ub3QgZW52IGYgPSBmdW5jdGlvblxuICB8IE9CUyBuYW1lIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIltsYWJlbD1cXFwiJXNcXFwiLCBzdHlsZT1maWxsZWQsIGZpbGxjb2xvcj1yZWRdXCIgbmFtZVxuICB8IEVWRU5UIGUgLT4gVHJhY2UucHJpbnRfZXZlbnRfa2luZF9kb3RfYW5ub3QgZW52IGYgZVxuXG5sZXQgZG90X29mX2dyaWQgcHJvZmlsaW5nIGVudiBlbnJpY2hlZF9ncmlkIGZvcm0gPVxuICBsZXQgdCA9IFN5cy50aW1lICgpIGluXG4gIGxldCBjb25maWcgPSBlbnJpY2hlZF9ncmlkLmNvbmZpZyBpblxuICBsZXQgcHJlY19zdGFyID0gZW5yaWNoZWRfZ3JpZC5wcmVjX3N0YXIgaW5cbiAgbGV0IGRlcHRoX29mX2V2ZW50ID0gZW5yaWNoZWRfZ3JpZC5kZXB0aF9vZl9ldmVudCBpblxuICBsZXQgc29ydGVkX2V2ZW50cyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBlaWQgZCBkbWFwIC0+XG4gICAgICAgIGxldCBzZXQgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgZCBkbWFwIGluXG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCBkIChNb2RzLkludFNldC5hZGQgZWlkIHNldCkgZG1hcClcbiAgICAgIGRlcHRoX29mX2V2ZW50IE1vZHMuSW50TWFwLmVtcHR5XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJAWzx2PiV0QCxkaWdyYXBoIEd7QCwgcmFua3NlcD0uNSA7QCxcIiBwcm9maWxpbmc7XG4gIE1vZHMuSW50TWFwLml0ZXJcbiAgICAoZnVuIGQgZWlkc19hdF9kIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwiQFs8aHY+eyByYW5rID0gc2FtZSA7IFxcXCIlZFxcXCIgW3NoYXBlPXBsYWludGV4dF0gO0AsXCIgZDtcbiAgICAgIE1vZHMuSW50U2V0Lml0ZXJcbiAgICAgICAgKGZ1biBlaWQgLT5cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBlaWQgY29uZmlnLmV2ZW50c19raW5kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBTb21lIGF0b21fa2luZCAtPlxuICAgICAgICAgICAgaWYgZWlkIDw+IDAgdGhlblxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwibm9kZV8lZCAlYSA7QCxcIiBlaWRcbiAgICAgICAgICAgICAgICAocHJpbnRfZXZlbnRfa2luZF9kb3RfYW5ub3QgZW52KVxuICAgICAgICAgICAgICAgIGF0b21fa2luZFxuICAgICAgICAgICgqIExpc3QuaXRlciAoZnVuIG9icyAtPiBmcHJpbnRmIGRlc2MgXCJvYnNfJWQgW2xhYmVsID1cXFwiJXNcXFwiLCBzdHlsZT1maWxsZWQsIGZpbGxjb2xvcj1yZWRdIDtcXG4gbm9kZV8lZCAtPiBvYnNfJWQgW2Fycm93aGVhZD12ZWVdO1xcblwiIGVpZCBvYnMgZWlkIGVpZCkgYXRvbS5vYnNlcnZhdGlvbiA7KikpXG4gICAgICAgIGVpZHNfYXRfZDtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJ9QF1ALFwiKVxuICAgIHNvcnRlZF9ldmVudHM7XG4gIGxldCBjcHQgPSByZWYgMCBpblxuICB3aGlsZSAhY3B0ICsgMSA8IE1vZHMuSW50TWFwLnNpemUgc29ydGVkX2V2ZW50cyBkb1xuICAgIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJcXFwiJWRcXFwiIC0+IFxcXCIlZFxcXCIgW3N0eWxlPVxcXCJpbnZpc1xcXCJdO0AsXCIgIWNwdCAoIWNwdCArIDEpO1xuICAgIGNwdCA6PSAhY3B0ICsgMVxuICBkb25lO1xuICBNb2RzLkludE1hcC5pdGVyXG4gICAgKGZ1biBlaWQgcHJlZF9zZXQgLT5cbiAgICAgIGlmIGVpZCA8PiAwIHRoZW5cbiAgICAgICAgTW9kcy5JbnRTZXQuaXRlclxuICAgICAgICAgIChmdW4gZWlkJyAtPlxuICAgICAgICAgICAgaWYgZWlkJyA9IDAgdGhlblxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwibm9kZV8lZCAtPiBub2RlXyVkQCxcIiBlaWQnIGVpZClcbiAgICAgICAgICBwcmVkX3NldClcbiAgICBjb25maWcucHJlY18xO1xuICBNb2RzLkludE1hcC5pdGVyXG4gICAgKGZ1biBlaWQgY2ZsY3Rfc2V0IC0+XG4gICAgICBpZiBlaWQgPD4gMCB0aGVuIChcbiAgICAgICAgbGV0IHByZWMgPSB0cnkgKGZzdCBwcmVjX3N0YXIpLihlaWQpIHdpdGggXyAtPiBbXSBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgTW9kcy5JbnRTZXQuZm9sZF9pbnZcbiAgICAgICAgICAgIChmdW4gZWlkJyBwcmVjIC0+XG4gICAgICAgICAgICAgIGxldCBib29sLCBwcmVjID1cbiAgICAgICAgICAgICAgICBsZXQgcmVjIGF1eCBwcmVjID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiB0cnVlLCBwcmVjXG4gICAgICAgICAgICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgICAgICAgICAgICBpZiBoID0gZWlkJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIHRcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBoID4gZWlkJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgYXV4IHRcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHRydWUsIHByZWNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGF1eCBwcmVjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtXG4gICAgICAgICAgICAgICAgICAgIFwibm9kZV8lZCAtPiBub2RlXyVkIFtzdHlsZT1kb3R0ZWQsIGFycm93aGVhZCA9IHRlZV1AIFwiIGVpZFxuICAgICAgICAgICAgICAgICAgICBlaWQnXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHByZWMpXG4gICAgICAgICAgICBjZmxjdF9zZXQgcHJlY1xuICAgICAgICBpblxuICAgICAgICAoKVxuICAgICAgKSlcbiAgICBjb25maWcuY29uZmxpY3Q7XG4gIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJ9QCxcIjtcbiAgRm9ybWF0LmZwcmludGYgZm9ybSBcIi8qQCwgRG90IGdlbmVyYXRpb24gdGltZTogJWZALCovQF1ALlwiIChTeXMudGltZSAoKSAtLiB0KVxuXG5sZXQganNfb2ZfZ3JpZCBlbnYgZW5yaWNoZWRfZ3JpZCBmID1cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi8vIENyZWF0ZSBhIG5ldyBkaXJlY3RlZCBncmFwaEAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwidmFyIGcgPSBuZXcgZGFncmVEMy5ncmFwaGxpYi5HcmFwaCgpLnNldEdyYXBoKHt9KTtALFwiXG4gIGluXG5cbiAgbGV0ICgpID1cbiAgICBQcC5zZXQgfnRyYWlsaW5nOlBwLnNwYWNlIE1vZHMuSW50TWFwLmJpbmRpbmdzIFBwLnNwYWNlXG4gICAgICAoZnVuIGYgKGVpZCwgYXRvbV9raW5kKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCJnLnNldE5vZGUoJWksIHsgbGFiZWw6IFxcXCIlYVxcXCIsIHN0eWxlOiBcXFwiZmlsbDogJXNcXFwiIH0pO1wiIGVpZFxuICAgICAgICAgIChwcmludF9ldmVudF9raW5kIH5lbnYpIGF0b21fa2luZFxuICAgICAgICAgIChtYXRjaCBhdG9tX2tpbmQgd2l0aFxuICAgICAgICAgIHwgT0JTIF8gLT4gXCIjZjc3XCJcbiAgICAgICAgICB8IEVWRU5UIChUcmFjZS5JTklUIF8gfCBUcmFjZS5QRVJUIF8pIC0+IFwiIzdmN1wiXG4gICAgICAgICAgfCBFVkVOVCAoVHJhY2UuUlVMRSBfKSAtPiBcIiM3N2ZcIikpXG4gICAgICBmIGVucmljaGVkX2dyaWQuY29uZmlnLmV2ZW50c19raW5kXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAuc2V0IE1vZHMuSW50TWFwLmJpbmRpbmdzIFBwLmVtcHR5XG4gICAgICAoZnVuIGYgKGVpZCwgc2V0KSAtPlxuICAgICAgICBQcC5zZXQgTW9kcy5JbnRTZXQuZWxlbWVudHMgfnRyYWlsaW5nOlBwLnNwYWNlIFBwLnNwYWNlXG4gICAgICAgICAgKGZ1biBmIGVpZCcgLT4gRm9ybWF0LmZwcmludGYgZiBcImcuc2V0RWRnZSglaSwlaSx7fSk7XCIgZWlkJyBlaWQpXG4gICAgICAgICAgZiBzZXQpXG4gICAgICBmIGVucmljaGVkX2dyaWQuY29uZmlnLnByZWNfMVxuICBpblxuXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInZhciBzdmcgPSBkMy5zZWxlY3QoXFxcInN2Z1xcXCIpLGlubmVyID0gc3ZnLnNlbGVjdChcXFwiZ1xcXCIpO0AsXCJcbiAgaW5cblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiLy8gU2V0IHVwIHpvb20gc3VwcG9ydEAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwidmFyIHpvb20gPSBkMy5iZWhhdmlvci56b29tKCkub24oXFxcInpvb21cXFwiLCBmdW5jdGlvbigpIHtALFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCJpbm5lci5hdHRyKFxcXCJ0cmFuc2Zvcm1cXFwiLCBcXFwidHJhbnNsYXRlKFxcXCIgKyBkMy5ldmVudC50cmFuc2xhdGUgKyBcXFwiKVxcXCIgK0AsXCJcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIlxcXCJzY2FsZShcXFwiICsgZDMuZXZlbnQuc2NhbGUgKyBcXFwiKVxcXCIpO0AsfSk7QCxzdmcuY2FsbCh6b29tKTtcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiLy8gQ3JlYXRlIHRoZSByZW5kZXJlckAsIHZhciByZW5kZXIgPSBuZXcgZGFncmVEMy5yZW5kZXIoKTtALFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCIvLyBSdW4gdGhlIHJlbmRlcmVyLiBUaGlzIGlzIHdoYXQgZHJhd3MgdGhlIGZpbmFsIGdyYXBoLkAsXCJcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInJlbmRlcihpbm5lciwgZyk7QCxcIiBpblxuXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBDZW50ZXIgdGhlIGdyYXBoQCx2YXIgaW5pdGlhbFNjYWxlID0gMC43NTtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ6b29tQCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiLnRyYW5zbGF0ZShbKHN2Zy5hdHRyKFxcXCJ3aWR0aFxcXCIpIC0gZy5ncmFwaCgpLndpZHRoICogaW5pdGlhbFNjYWxlKSAvIDIsIFxcXG4gICAgICAgMjBdKUAsXCJcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi5zY2FsZShpbml0aWFsU2NhbGUpQCwuZXZlbnQoc3ZnKTtALFwiIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJzdmcuYXR0cignaGVpZ2h0JywgZy5ncmFwaCgpLmhlaWdodCAqIGluaXRpYWxTY2FsZSArIDQwKTtcIlxuXG5sZXQgaHRtbF9vZl9ncmlkIHByb2ZpbGluZyBjb21wcmVzc2lvbl90eXBlIGNwdCBlbnYgZW5yaWNoZWRfZ3JpZCA9XG4gIGxldCB0aXRsZSBmID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXMgY29tcHJlc3NlZCBzdG9yeSBudW1iZXIgJWlcIiBjb21wcmVzc2lvbl90eXBlIGNwdFxuICBpblxuICBQcF9odG1sLmdyYXBoX3BhZ2UgdGl0bGVcbiAgICBbXG4gICAgICBcImh0dHA6Ly9kM2pzLm9yZy9kMy52My5taW4uanNcIjtcbiAgICAgIFwiaHR0cDovL2NwZXR0aXR0LmdpdGh1Yi5pby9wcm9qZWN0L2RhZ3JlLWQzL2xhdGVzdC9kYWdyZS1kMy5taW4uanNcIjtcbiAgICBdXG4gICAgKGZ1biBmIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxzdHlsZT5ALFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiZHQge2Zsb2F0OiBsZWZ0OyBjbGVhcjogbGVmdDsgd2lkdGg6IDIwZW07fUAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiZGQge2ZvbnQtd2VpZ2h0OiBib2xkOyBtYXJnaW46IDAgMCAwIDIxZW07fUAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiLm5vZGUgcmVjdCB7c3Ryb2tlOiAjMzMzOyBmaWxsOiAjZmZmO31ALFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCIuZWRnZVBhdGggcGF0aCB7c3Ryb2tlOiAjMzMzOyBmaWxsOiAjMzMzOyBzdHJva2Utd2lkdGg6IDEuNXB4O31cIlxuICAgICAgaW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAXUAsPC9zdHlsZT5cIilcbiAgICAoZnVuIGYgLT5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8c3ZnIHdpZHRoPVxcXCI5NjBcXFwiPjxnPjwvZz48L3N2Zz5ALFwiIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHA+QFsldEBdPC9wPkAsXCIgcHJvZmlsaW5nIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxzY3JpcHQ+QCwldEBdQCw8L3NjcmlwdD5cIlxuICAgICAgICAoanNfb2ZfZ3JpZCBlbnYgZW5yaWNoZWRfZ3JpZCkpXG5cbmxldCBjaGVja19jcmVhdGVfcXVhcmtzIGFpZCBzaXRlcyBxdWFya3MgPVxuICBMaXN0LmZvcl9hbGxcbiAgICAoZnVuIChzaXRlLCBpbnRlcm5hbCkgLT5cbiAgICAgIG1hdGNoIGludGVybmFsIHdpdGhcbiAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgIExpc3QubWVtIChhdG9tX21vZGlmaWVkLCAoYWlkLCBzaXRlLCAwKSkgcXVhcmtzXG4gICAgICAgICYmIExpc3QubWVtIChhdG9tX21vZGlmaWVkLCAoYWlkLCBzaXRlLCAxKSkgcXVhcmtzXG4gICAgICB8IE5vbmUgLT4gTGlzdC5tZW0gKGF0b21fbW9kaWZpZWQsIChhaWQsIHNpdGUsIDEpKSBxdWFya3MpXG4gICAgc2l0ZXNcblxubGV0IGNoZWNrX21vZGlmaWVkX3F1YXJrcyAoKGFpZCwgXyksIHNpdGUpIG1vZGlmIHF1YXJrcyA9XG4gIExpc3QuZXhpc3RzXG4gICAgKGZ1biAoYywgKG4sIHMsIG0pKSAtPlxuICAgICAgKGMgPSBhdG9tX21vZGlmaWVkIHx8IGMgPSBhdG9tX3Rlc3RlZG1vZGlmaWVkKVxuICAgICAgJiYgbiA9IGFpZCAmJiBzID0gc2l0ZSAmJiBtID0gbW9kaWYpXG4gICAgcXVhcmtzXG5cbmxldCBjaGVja190ZXN0ZWRfcXVhcmtzICgoYWlkLCBfKSwgc2l0ZSkgbW9kaWYgcXVhcmtzID1cbiAgTGlzdC5leGlzdHNcbiAgICAoZnVuIChjLCAobiwgcywgbSkpIC0+XG4gICAgICAoYyA9IGF0b21fdGVzdGVkIHx8IGMgPSBhdG9tX3Rlc3RlZG1vZGlmaWVkKVxuICAgICAgJiYgbiA9IGFpZCAmJiBzID0gc2l0ZSAmJiBtID0gbW9kaWYpXG4gICAgcXVhcmtzXG5cbmxldCBjaGVja19ldmVudF9xdWFya3MgYWN0aW9ucyB0ZXN0cyBxdWFya3MgPVxuICBMaXN0LmZvcl9hbGxcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKChhaWQsIF8pLCBzaXRlcykgLT5cbiAgICAgICAgY2hlY2tfY3JlYXRlX3F1YXJrcyBhaWQgc2l0ZXMgcXVhcmtzXG4gICAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBhc2l0ZSAtPiBjaGVja19tb2RpZmllZF9xdWFya3MgYXNpdGUgMSBxdWFya3NcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIChhc2l0ZTEsIGFzaXRlMilcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChhc2l0ZTEsIGFzaXRlMikgLT5cbiAgICAgICAgY2hlY2tfbW9kaWZpZWRfcXVhcmtzIGFzaXRlMSAxIHF1YXJrc1xuICAgICAgICAmJiBjaGVja19tb2RpZmllZF9xdWFya3MgYXNpdGUyIDEgcXVhcmtzXG4gICAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIChhc2l0ZSwgXykgLT5cbiAgICAgICAgY2hlY2tfbW9kaWZpZWRfcXVhcmtzIGFzaXRlIDAgcXVhcmtzXG4gICAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIChhaWQsIF8pIC0+XG4gICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgKGZ1biAoYywgKG4sIF8sIF8pKSAtPlxuICAgICAgICAgICAgKGMgPSBhdG9tX21vZGlmaWVkIHx8IGMgPSBhdG9tX3Rlc3RlZG1vZGlmaWVkKSAmJiBuID0gYWlkKVxuICAgICAgICAgIHF1YXJrcylcbiAgICBhY3Rpb25zXG4gICYmIExpc3QuZm9yX2FsbFxuICAgICAgIChMaXN0LmZvcl9hbGwgKGZ1bmN0aW9uXG4gICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSAoYWlkLCBfKSAtPlxuICAgICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgIChmdW4gKGMsIChuLCBfLCBfKSkgLT5cbiAgICAgICAgICAgICAgIChjID0gYXRvbV90ZXN0ZWQgfHwgYyA9IGF0b21fdGVzdGVkbW9kaWZpZWQpICYmIG4gPSBhaWQpXG4gICAgICAgICAgICAgcXVhcmtzXG4gICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChhc2l0ZSwgXykgLT5cbiAgICAgICAgICAgY2hlY2tfdGVzdGVkX3F1YXJrcyBhc2l0ZSAwIHF1YXJrc1xuICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgYXNpdGVcbiAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBhc2l0ZVxuICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKGFzaXRlLCBfKSAtPlxuICAgICAgICAgICBjaGVja190ZXN0ZWRfcXVhcmtzIGFzaXRlIDEgcXVhcmtzXG4gICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKGFzaXRlMSwgYXNpdGUyKSAtPlxuICAgICAgICAgICBjaGVja190ZXN0ZWRfcXVhcmtzIGFzaXRlMSAxIHF1YXJrc1xuICAgICAgICAgICAmJiBjaGVja190ZXN0ZWRfcXVhcmtzIGFzaXRlMiAxIHF1YXJrcykpXG4gICAgICAgdGVzdHNcblxubGV0IGxvZ19ldmVudCBpZCBxdWFya3MgZXZlbnRfa2luZCBzdGVwcyA9XG4gIG1hdGNoIGV2ZW50X2tpbmQgd2l0aFxuICB8IEVWRU5UIChUcmFjZS5JTklUIF8pIC0+XG4gICAgbGV0IHN0cCA9XG4gICAgICBMaXN0LmZpbmRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBUcmFjZS5Jbml0IGFjdGlvbnMgLT5cbiAgICAgICAgICAgIExpc3QuZm9yX2FsbFxuICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICgoYWlkLCBfKSwgc2l0ZXMpIC0+XG4gICAgICAgICAgICAgICAgICBjaGVja19jcmVhdGVfcXVhcmtzIGFpZCBzaXRlcyBxdWFya3NcbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBfIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF9cbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZCBfIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgXyAtPlxuICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgXyAtPlxuICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5pdCBldmVudCBoYXMgYWN0aW9ucyBub3QgYWxsb3dlZFwiKSkpXG4gICAgICAgICAgICAgIGFjdGlvbnNcbiAgICAgICAgICB8IFRyYWNlLlJ1bGUgXyB8IFRyYWNlLlBlcnQgXyB8IFRyYWNlLk9icyBfIHwgVHJhY2UuU3VicyBfXG4gICAgICAgICAgfCBUcmFjZS5EdW1teSBfIC0+XG4gICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgc3RlcHNcbiAgICBpblxuICAgIGBMaXN0IFsgYEludCBpZDsgVHJhY2Uuc3RlcF90b195b2pzb24gc3RwIF1cbiAgfCBFVkVOVCAoVHJhY2UuUlVMRSByaWQpIC0+XG4gICAgbGV0IHN0cCA9XG4gICAgICBMaXN0LmZpbmRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBUcmFjZS5SdWxlIChyaWQnLCBlLCBfKSAtPlxuICAgICAgICAgICAgcmlkID0gcmlkJ1xuICAgICAgICAgICAgJiYgY2hlY2tfZXZlbnRfcXVhcmtzIGUuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgICAgICAgICAgICAgIChlLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzIDo6IGUuSW5zdGFudGlhdGlvbi50ZXN0cylcbiAgICAgICAgICAgICAgICAgcXVhcmtzXG4gICAgICAgICAgfCBUcmFjZS5QZXJ0IF8gfCBUcmFjZS5PYnMgXyB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkR1bW15IF9cbiAgICAgICAgICB8IFRyYWNlLkluaXQgXyAtPlxuICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgIHN0ZXBzXG4gICAgaW5cbiAgICBgTGlzdCBbIGBJbnQgaWQ7IFRyYWNlLnN0ZXBfdG9feW9qc29uIHN0cCBdXG4gIHwgT0JTIF8gLT5cbiAgICBsZXQgc3RwID1cbiAgICAgIExpc3QuZmluZFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IFRyYWNlLk9icyBfIC0+IHRydWVcbiAgICAgICAgICB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkR1bW15IF8gfCBUcmFjZS5Jbml0IF8gfCBUcmFjZS5SdWxlIF9cbiAgICAgICAgICB8IFRyYWNlLlBlcnQgXyAtPlxuICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgIHN0ZXBzXG4gICAgaW5cbiAgICBgTGlzdCBbIGBJbnQgaWQ7IFRyYWNlLnN0ZXBfdG9feW9qc29uIHN0cCBdXG4gIHwgRVZFTlQgKFRyYWNlLlBFUlQgcGVydCkgLT5cbiAgICBsZXQgc3RwID1cbiAgICAgIExpc3QuZmluZFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IFRyYWNlLlBlcnQgKHBlcnQnLCBlLCBfKSAtPlxuICAgICAgICAgICAgcGVydCA9IHBlcnQnXG4gICAgICAgICAgICAmJiBjaGVja19ldmVudF9xdWFya3MgZS5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICAgICAgICAgICAgICAgKGUuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgOjogZS5JbnN0YW50aWF0aW9uLnRlc3RzKVxuICAgICAgICAgICAgICAgICBxdWFya3NcbiAgICAgICAgICB8IFRyYWNlLlJ1bGUgXyB8IFRyYWNlLk9icyBfIHwgVHJhY2UuU3VicyBfIHwgVHJhY2UuRHVtbXkgX1xuICAgICAgICAgIHwgVHJhY2UuSW5pdCBfIC0+XG4gICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgc3RlcHNcbiAgICBpblxuICAgIGBMaXN0IFsgYEludCBpZDsgVHJhY2Uuc3RlcF90b195b2pzb24gc3RwIF1cblxubGV0IGpzb25fb2ZfZ3JpZCBlbnJpY2hlZF9ncmlkIGdyaWRfc3Rvcnkgc3RlcHMgPVxuICBsZXQgY29uZmlnID0gZW5yaWNoZWRfZ3JpZC5jb25maWcgaW5cbiAgbGV0IHByZWNfc3RhciA9IGVucmljaGVkX2dyaWQucHJlY19zdGFyIGluXG4gIGxldCBkZXB0aF9vZl9ldmVudCA9IGVucmljaGVkX2dyaWQuZGVwdGhfb2ZfZXZlbnQgaW5cbiAgbGV0IHRibCA9IEhhc2h0YmwuY3JlYXRlICFQYXJhbWV0ZXIuZGVmYXVsdEV4dEFycmF5U2l6ZSBpblxuICBsZXQgKCkgPVxuICAgIEhhc2h0YmwuaXRlclxuICAgICAgKGZ1biBxdWFyayBhdHRfbHMgLT5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biBhdG9tIC0+IEhhc2h0YmwuYWRkIHRibCBhdG9tLmVpZCAoYXRvbS5jYXVzYWxfaW1wYWN0LCBxdWFyaykpXG4gICAgICAgICAgYXR0X2xzKVxuICAgICAgZ3JpZF9zdG9yeS5mbG93XG4gIGluXG4gIGxldCBzb3J0ZWRfZXZlbnRzID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIGVpZCBkIGRtYXAgLT5cbiAgICAgICAgbGV0IHNldCA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBkIGRtYXAgaW5cbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGQgKE1vZHMuSW50U2V0LmFkZCBlaWQgc2V0KSBkbWFwKVxuICAgICAgZGVwdGhfb2ZfZXZlbnQgTW9kcy5JbnRNYXAuZW1wdHlcbiAgaW5cbiAgbGV0IG5vZGVfdG9fanNvbiBlaWQgPVxuICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGVpZCBjb25maWcuZXZlbnRzX2tpbmQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICB8IFNvbWUgYXRvbV9raW5kIC0+XG4gICAgICBpZiBlaWQgPD4gMCB0aGVuIChcbiAgICAgICAgbGV0IHF1YXJrcyA9IEhhc2h0YmwuZmluZF9hbGwgdGJsIGVpZCBpblxuICAgICAgICBsb2dfZXZlbnQgZWlkIHF1YXJrcyBhdG9tX2tpbmQgc3RlcHNcbiAgICAgICkgZWxzZVxuICAgICAgICBgTnVsbFxuICBpblxuICBsZXQgbm9kZXNfdG9fbGlzdCA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBfIGVpZHNfYXRfZCBscyAtPlxuICAgICAgICBsZXQgbHMnJyA9IE1vZHMuSW50U2V0LmZvbGQgKGZ1biBlaWQgbHMnIC0+IGVpZCA6OiBscycpIGVpZHNfYXRfZCBbXSBpblxuICAgICAgICBscycnIEAgbHMpXG4gICAgICBzb3J0ZWRfZXZlbnRzIFtdXG4gIGluXG4gIGxldCBub2Rlc190b19qc29uID0gSnNvblV0aWwub2ZfbGlzdCBub2RlX3RvX2pzb24gbm9kZXNfdG9fbGlzdCBpblxuICBsZXQgZWRnZV90b19qc29uIChlaWQsIGVpZCcpID0gYEFzc29jIFsgXCJmcm9tXCIsIGBJbnQgZWlkJzsgXCJ0b1wiLCBgSW50IGVpZCBdIGluXG4gIGxldCBwcmVjX2VkZ2VzID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIGVpZCBwcmVkX3NldCBscyAtPlxuICAgICAgICBpZiBlaWQgPD4gMCB0aGVuIChcbiAgICAgICAgICBsZXQgbHMnJyA9XG4gICAgICAgICAgICBNb2RzLkludFNldC5mb2xkXG4gICAgICAgICAgICAgIChmdW4gZWlkJyBscycgLT5cbiAgICAgICAgICAgICAgICBpZiBlaWQnID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICBscydcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAoZWlkLCBlaWQnKSA6OiBscycpXG4gICAgICAgICAgICAgIHByZWRfc2V0IFtdXG4gICAgICAgICAgaW5cbiAgICAgICAgICBscycnIEAgbHNcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgbHMpXG4gICAgICBjb25maWcucHJlY18xIFtdXG4gIGluXG4gIGxldCBwcmVjX2VkZ2VzX3RvX2pzb24gPSBKc29uVXRpbC5vZl9saXN0IGVkZ2VfdG9fanNvbiBwcmVjX2VkZ2VzIGluXG4gIGxldCBjb25mbF9lZGdlcyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBlaWQgY2ZsY3Rfc2V0IGxzIC0+XG4gICAgICAgIGlmIGVpZCA8PiAwIHRoZW4gKFxuICAgICAgICAgIGxldCBwcmVjID0gdHJ5IChmc3QgcHJlY19zdGFyKS4oZWlkKSB3aXRoIF8gLT4gW10gaW5cbiAgICAgICAgICBsZXQgXywgbHMnID1cbiAgICAgICAgICAgIE1vZHMuSW50U2V0LmZvbGRfaW52XG4gICAgICAgICAgICAgIChmdW4gZWlkJyAocHJlYywgbHMnKSAtPlxuICAgICAgICAgICAgICAgIGxldCBib29sLCBwcmVjID1cbiAgICAgICAgICAgICAgICAgIGxldCByZWMgYXV4IHByZWMgPVxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiB0cnVlLCBwcmVjXG4gICAgICAgICAgICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgaCA9IGVpZCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIHRcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIGggPiBlaWQnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGF1eCB0XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgcHJlY1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGF1eCBwcmVjXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbHMnJyA9XG4gICAgICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKGVpZCwgZWlkJykgOjogbHMnXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGxzJ1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgcHJlYywgbHMnJylcbiAgICAgICAgICAgICAgY2ZsY3Rfc2V0IChwcmVjLCBscylcbiAgICAgICAgICBpblxuICAgICAgICAgIGxzJ1xuICAgICAgICApIGVsc2VcbiAgICAgICAgICBscylcbiAgICAgIGNvbmZpZy5jb25mbGljdCBbXVxuICBpblxuICBsZXQgY29uZmxfZWRnZXNfdG9fanNvbiA9IEpzb25VdGlsLm9mX2xpc3QgZWRnZV90b19qc29uIGNvbmZsX2VkZ2VzIGluXG4gIChgQXNzb2NcbiAgICAgW1xuICAgICAgIFwibm9kZXNcIiwgbm9kZXNfdG9fanNvbjtcbiAgICAgICBcImNhdXNlXCIsIHByZWNfZWRnZXNfdG9fanNvbjtcbiAgICAgICBcImluaGliaXRcIiwgY29uZmxfZWRnZXNfdG9fanNvbjtcbiAgICAgXVxuICAgIDogWW9qc29uLkJhc2ljLnQpXG5cbigqc3RvcnlfbGlzdDpbKGtleV9pLGxpc3RfaSldIGV0IGxpc3RfaTpbKGdyaWQsXyxzaW1faW5mbyBvcHRpb24pLi4uXVxuICBldCBzaW1faW5mbzp7d2l0aCBzdG9yeV9pZDppbnQgc3RvcnlfdGltZTogZmxvYXQgOyBzdG9yeV9ldmVudDogaW50fSopXG5sZXQgcHJldHR5X3ByaW50IH5kb3RGb3JtYXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZW52IGNvbmZpZ19jbG9zdXJlXG4gICAgY29tcHJlc3Npb25fdHlwZSBsYWJlbCBncmlkX2xpc3QgPVxuICBtYXRjaFxuICAgIExvZ2dlcnMuZm9ybWF0dGVyX29mX2xvZ2dlciAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgd2l0aFxuICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvXG4gIHwgU29tZSBlcnJfZm10IC0+XG4gICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBncmlkX2xpc3QgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgY29tcHJlc3Npb25fdHlwZSA9IFwiXCIgdGhlblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBlcnJfZm10IFwiKyBQcmV0dHkgcHJpbnRpbmcgJWQgZmxvdyVzQC5cIiBuXG4gICAgICAgICAgKGlmIG4gPiAxIHRoZW5cbiAgICAgICAgICAgICBcInNcIlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgXCJcIilcbiAgICAgIGVsc2VcbiAgICAgICAgRm9ybWF0LmZwcmludGYgZXJyX2ZtdCBcIisgUHJldHR5IHByaW50aW5nICVkICVzY29tcHJlc3NlZCBmbG93JXNALlwiIG5cbiAgICAgICAgICBsYWJlbFxuICAgICAgICAgIChpZiBuID4gMSB0aGVuXG4gICAgICAgICAgICAgXCJzXCJcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFwiXCIpXG4gICAgaW5cbiAgICBsZXQgY29tcHJlc3Npb25fdHlwZSA9XG4gICAgICBpZiBjb21wcmVzc2lvbl90eXBlID0gXCJcIiB0aGVuXG4gICAgICAgIFwibm9uZVwiXG4gICAgICBlbHNlXG4gICAgICAgIGNvbXByZXNzaW9uX3R5cGVcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0b3J5X2xpc3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBsaXN0KSAoeiwgeCwgeSkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB4ID1cbiAgICAgICAgICAgIGVucmljaF9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNvbmZpZ19jbG9zdXJlIHhcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgKHosIHgsIHkpIDo6IGxpc3QpXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIFtdKSBncmlkX2xpc3RcbiAgICBpblxuICAgIGxldCBzdG9yeV9saXN0ID0gTGlzdC5yZXYgc3RvcnlfbGlzdCBpblxuICAgIGxldCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gY3B0IChzdGVwcywgZW5yaWNoZWRfY29uZmlnLCBzdG9yaWVzKSAtPlxuICAgICAgICAgIGxldCBhdl90LCBpZHMsIG4gPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biAoYXZfdCwgaWRzLCBuKSBpbmZvIC0+XG4gICAgICAgICAgICAgICAgKCBhdl90ICsuIGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWUsXG4gICAgICAgICAgICAgICAgICBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCA6OiBpZHMsXG4gICAgICAgICAgICAgICAgICBuICsgMSApKVxuICAgICAgICAgICAgICAoMC4sIFtdLCAwKSAoTGlzdC5yZXYgc3RvcmllcylcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAoKmR1bXAgZ3JpZCBmaWMgc3RhdGUgZW52IDsgKilcbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIGlmIGRvdEZvcm1hdCA9IEpzb24gdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IF8sIGdyaWRfc3RvcnksIF8gPSBMaXN0Lm50aCBncmlkX2xpc3QgY3B0IGluXG4gICAgICAgICAgICAgICAgS2FwcGFfZmlsZXMud2l0aF9jZmxvd19maWxlXG4gICAgICAgICAgICAgICAgICBbIGNvbXByZXNzaW9uX3R5cGU7IHN0cmluZ19vZl9pbnQgY3B0IF1cbiAgICAgICAgICAgICAgICAgIFwiLmpzb25cIlxuICAgICAgICAgICAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc0AuXCJcbiAgICAgICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIChqc29uX29mX2dyaWQgZW5yaWNoZWRfY29uZmlnIGdyaWRfc3Rvcnkgc3RlcHMpKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIGRvdEZvcm1hdCB3aXRoXG4gICAgICAgICAgICB8IERvdCB8IEpzb24gLT5cbiAgICAgICAgICAgICAgbGV0IHByb2ZpbGluZyBkZXNjID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiLyogQFtDb21wcmVzc2lvbiBvZiAlZCBjYXVzYWwgZmxvd3NcIiBuO1xuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGRlc2MgXCJAIG9idGFpbmVkIGluIGF2ZXJhZ2UgYXQgJUUgdC51QF0gKi9ALFwiXG4gICAgICAgICAgICAgICAgICAoYXZfdCAvLiBmbG9hdF9vZl9pbnQgbik7XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzY1xuICAgICAgICAgICAgICAgICAgXCJAWy8qIENvbXByZXNzZWQgY2F1c2FsIGZsb3dzIHdlcmU6QCBbJWFdICovQF1cIlxuICAgICAgICAgICAgICAgICAgKFBwLmxpc3RcbiAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiO0AsXCIpXG4gICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgICAgICAgICAgICAgaWRzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEthcHBhX2ZpbGVzLndpdGhfY2Zsb3dfZmlsZVxuICAgICAgICAgICAgICAgIFsgY29tcHJlc3Npb25fdHlwZTsgc3RyaW5nX29mX2ludCBjcHQgXVxuICAgICAgICAgICAgICAgIFwiLmRvdFwiXG4gICAgICAgICAgICAgICAgKGRvdF9vZl9ncmlkIHByb2ZpbGluZyBlbnYgZW5yaWNoZWRfY29uZmlnKVxuICAgICAgICAgICAgfCBIdG1sIC0+XG4gICAgICAgICAgICAgIGxldCBwcm9maWxpbmcgZGVzYyA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzY1xuICAgICAgICAgICAgICAgICAgXCJAWzx2IDI+PGRsPkAsPGR0PkNvbXByZXNzaW9uIG9mPC9kdD48ZGQ+JWQgY2F1c2FsIGZsb3dzPC9kZD5cIlxuICAgICAgICAgICAgICAgICAgbjtcbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBkZXNjXG4gICAgICAgICAgICAgICAgICBcIkAsPGR0Pm9idGFpbmVkIGluIGF2ZXJhZ2UgYXQ8L2R0PjxkZD4lRSB0LnU8L2RkPkAsXCJcbiAgICAgICAgICAgICAgICAgIChhdl90IC8uIGZsb2F0X29mX2ludCBuKTtcbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiPGR0PkNvbXByZXNzZWQgY2F1c2FsIGZsb3dzIHdlcmU6PC9kdD5cIjtcbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiQCA8ZGQ+W0BbJWFAXV08L2RkPkBdQCw8L2RsPlwiXG4gICAgICAgICAgICAgICAgICAoUHAubGlzdFxuICAgICAgICAgICAgICAgICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI7QCxcIilcbiAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9pbnQpXG4gICAgICAgICAgICAgICAgICBpZHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgS2FwcGFfZmlsZXMud2l0aF9jZmxvd19maWxlXG4gICAgICAgICAgICAgICAgWyBjb21wcmVzc2lvbl90eXBlOyBzdHJpbmdfb2ZfaW50IGNwdCBdXG4gICAgICAgICAgICAgICAgXCIuaHRtbFwiXG4gICAgICAgICAgICAgICAgKGh0bWxfb2ZfZ3JpZCBwcm9maWxpbmcgY29tcHJlc3Npb25fdHlwZSBjcHQgZW52IGVucmljaGVkX2NvbmZpZylcbiAgICAgICAgICBpblxuICAgICAgICAgIGNwdCArIDEpXG4gICAgICAgIDAgc3RvcnlfbGlzdFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIGRvdEZvcm1hdCB3aXRoXG4gICAgICB8IEpzb24gLT5cbiAgICAgICAgS2FwcGFfZmlsZXMud2l0aF9jZmxvd19maWxlIFsgY29tcHJlc3Npb25fdHlwZTsgXCJlbnZcIiBdIFwiLmpzb25cIlxuICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVzQC5cIlxuICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoTW9kZWwudG9feW9qc29uIGVudikpKVxuICAgICAgfCBEb3QgfCBIdG1sIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBLYXBwYV9maWxlcy53aXRoX2NmbG93X2ZpbGUgWyBjb21wcmVzc2lvbl90eXBlOyBcIlN1bW1hcnlcIiBdIFwiLmRhdFwiXG4gICAgICAgIChmdW4gZm9ybSAtPlxuICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJAWzx2PiNpZFxcdEVcXHRUXFx0XFx0ZGVwdGhcXHRzaXplXFx0QCxcIiBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBQcC5saXN0aSBQcC5lbXB0eVxuICAgICAgICAgICAgICAoZnVuIGNwdCBmIChfLCBlbnJpY2hlZF9jb25maWcsIHN0b3J5KSAtPlxuICAgICAgICAgICAgICAgIGxldCBkZXB0aCA9IGVucmljaGVkX2NvbmZpZy5kZXB0aCBpblxuICAgICAgICAgICAgICAgIGxldCBzaXplID0gZW5yaWNoZWRfY29uZmlnLnNpemUgaW5cbiAgICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAgIChmdW4gaW5mbyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgdGltZSA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWUgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGV2ZW50ID0gaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQgaW5cbiAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVpXFx0JWlcXHQlRVxcdCVpXFx0JWlcXHRALFwiIGNwdCBldmVudCB0aW1lXG4gICAgICAgICAgICAgICAgICAgICAgZGVwdGggc2l6ZSlcbiAgICAgICAgICAgICAgICAgIHN0b3J5KVxuICAgICAgICAgICAgICBmb3JtIHN0b3J5X2xpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJAXUA/XCIpXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm9cblxubGV0IHByaW50X3N0YXQgZiBfcGFyYW1ldGVyIF9oYW5kbGVyIGVucmljaGVkX2dyaWQgPVxuICBsZXQgY291bnRfb2JzID1cbiAgICBtYXRjaCBzbmQgZW5yaWNoZWRfZ3JpZC5wcmVjX3N0YXIgd2l0aFxuICAgIHwgR3JhcGhfY2xvc3VyZS5JbmNyZWFzaW5nX3dpdGhfbGFzdF9ldmVudCAtPiBmdW4geCAtPiB4XG4gICAgfCBHcmFwaF9jbG9zdXJlLkRlY3JlYXNpbmdfd2l0aG91dF9sYXN0X2V2ZW50IC0+IHN1Y2NcbiAgaW5cbiAgbGV0IHNpemUgPSBBcnJheS5sZW5ndGggKGZzdCBlbnJpY2hlZF9ncmlkLnByZWNfc3RhcikgaW5cbiAgbGV0IHJlYyBhdXggayBuX3N0ZXAgbG9uZ2VzdF9zdG9yeSBuX25vbmVtcHR5IGxlbmd0aF9zdW0gbGVuZ3RoX3NxdWFyZV9zdW0gPVxuICAgIGlmIGsgPj0gc2l6ZSB0aGVuXG4gICAgICBuX3N0ZXAsIGxvbmdlc3Rfc3RvcnksIG5fbm9uZW1wdHksIGxlbmd0aF9zdW0sIGxlbmd0aF9zcXVhcmVfc3VtXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2MgPSBMaXN0Lmxlbmd0aCAoQXJyYXkuZ2V0IChmc3QgZW5yaWNoZWRfZ3JpZC5wcmVjX3N0YXIpIGspIGluXG4gICAgICBsZXQgY2MnID1cbiAgICAgICAgaWYgY2MgPiAwIHRoZW5cbiAgICAgICAgICBjb3VudF9vYnMgY2NcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNjXG4gICAgICBpblxuICAgICAgYXV4IChrICsgMSkgKG5fc3RlcCArIDEpIChtYXggbG9uZ2VzdF9zdG9yeSBjYycpXG4gICAgICAgIChpZiBjYyA+IDAgdGhlblxuICAgICAgICAgICBuX25vbmVtcHR5ICsgMVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBuX25vbmVtcHR5KVxuICAgICAgICAobGVuZ3RoX3N1bSArIGNjJylcbiAgICAgICAgKGxlbmd0aF9zcXVhcmVfc3VtICsgKGNjJyAqIGNjJykpXG4gICAgKVxuICBpblxuICBsZXQgbl9zdGVwLCBsb25nZXN0X3N0b3J5LCBuX25vbmVtcHR5LCBsZW5ndGhfc3VtLCBsZW5ndGhfc3F1YXJlX3N1bSA9XG4gICAgYXV4IDAgMCAwIDAgMCAwXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PlN0YXRzOkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiBudW1iZXIgb2Ygc3RlcCAgIDogJWlALFwiIG5fc3RlcCBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiIGxvbmdlc3Qgc3RvcnkgICAgOiAlaUAsXCIgbG9uZ2VzdF9zdG9yeSBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgYXZlcmFnZSBsZW5ndGggICA6ICUuNGdALFwiXG4gICAgICAoZmxvYXQgbGVuZ3RoX3N1bSAvLiBmbG9hdCBuX25vbmVtcHR5KVxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgZ2VvbWV0cmljIG1lYW4gICA6ICUuNGdALFwiXG4gICAgICAoc3FydCAoZmxvYXQgbGVuZ3RoX3NxdWFyZV9zdW0gLy4gZmxvYXQgbl9ub25lbXB0eSkpXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAXUAuXCJcbiIsInR5cGUgcHJlZGljYXRlX3ZhbHVlID1cbiAgfCBJbnRlcm5hbF9zdGF0ZV9pcyBvZiBpbnRcbiAgfCBVbmRlZmluZWQgICgqKiB0aGUgd2lyZSBkb2VzIG5vdCBleGlzdCB5ZXQgKilcbiAgfCBQcmVzZW50ICAoKiogZm9yIGFnZW50IHByZXNlbmNlICopXG4gIHwgRnJlZSAgKCoqIGZvciBiaW5kaW5nIHNpdGVzICopXG4gIHwgQm91bmRfdG8gb2YgaW50ICogSW5zdGFudGlhdGlvbi5hZ2VudF9uYW1lICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcbiAgICAgICgqKiBmb3IgYmluZGluZyBzaXRlcyAqKVxuXG5tb2R1bGUgQSA9IE1vZHMuRHluQXJyYXlcblxudHlwZSBwcmVkaWNhdGVfaW5mbyA9XG4gIHwgSGVyZSBvZiBpbnRcbiAgfCBCb3VuZF9zaXRlIG9mIGludCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gIHwgSW50ZXJuYWxfc3RhdGUgb2YgaW50ICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcblxubGV0IHN0cmluZ19vZl9wcmVkaWNhdGVfaW5mbyBwaSA9XG4gIG1hdGNoIHBpIHdpdGhcbiAgfCBIZXJlIGFnIC0+IFwiSGVyZSBcIiBeIHN0cmluZ19vZl9pbnQgYWdcbiAgfCBCb3VuZF9zaXRlIChhZywgcykgLT5cbiAgICBcIkJvdW5kX3N0YXRlIFwiIF4gc3RyaW5nX29mX2ludCBhZyBeIFwiIFwiIF4gc3RyaW5nX29mX2ludCBzXG4gIHwgSW50ZXJuYWxfc3RhdGUgKGFnLCBzKSAtPlxuICAgIFwiSW50ZXJuYWxfc3RhdGUgXCIgXiBzdHJpbmdfb2ZfaW50IGFnIF4gXCIgXCIgXiBzdHJpbmdfb2ZfaW50IHNcblxubW9kdWxlIFByZWRpY2F0ZVNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gcHJlZGljYXRlX2luZm9cblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IHByaW50IGYgeCA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoc3RyaW5nX29mX3ByZWRpY2F0ZV9pbmZvIHgpXG5lbmQpXG5cbm1vZHVsZSBQcmVkaWNhdGVNYXAgPSBQcmVkaWNhdGVTZXRNYXAuTWFwXG5cbm1vZHVsZSBRUHJlZGljYXRlTWFwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFByZWRpY2F0ZU1hcC50IEEudFxuXG4gIGxldCBlbXB0eSBuID0gQS5tYWtlIG4gUHJlZGljYXRlTWFwLmVtcHR5XG4gIGxldCBpdGVyIGYgdCA9IEEuaXRlciAoUHJlZGljYXRlTWFwLml0ZXIgZikgdFxuXG4gIGxldCBoYXNoIHByZWRpY2F0ZSA9XG4gICAgbWF0Y2ggcHJlZGljYXRlIHdpdGhcbiAgICB8IEhlcmUgYWcgfCBCb3VuZF9zaXRlIChhZywgXykgfCBJbnRlcm5hbF9zdGF0ZSAoYWcsIF8pIC0+IGFnXG5cbiAgbGV0IGxpZnQgZiBwcmVkaWNhdGVfaWQgdGFiID0gZiBwcmVkaWNhdGVfaWQgKEEuZ2V0IHRhYiAoaGFzaCBwcmVkaWNhdGVfaWQpKVxuICBsZXQgZmluZF9kZWZhdWx0IGRlZiBwIHQgPSBsaWZ0IChQcmVkaWNhdGVNYXAuZmluZF9kZWZhdWx0IGRlZikgcCB0XG4gIGxldCBmaW5kX29wdGlvbiBwIHQgPSBsaWZ0IFByZWRpY2F0ZU1hcC5maW5kX29wdGlvbiBwIHRcbiAgbGV0IG1lbSBwIHQgPSBsaWZ0IFByZWRpY2F0ZU1hcC5tZW0gcCB0XG5cbiAgbGV0IGFkZCBwcmVkaWNhdGVfaWQgeCB0YWIgPVxuICAgIGxldCBoYXNoID0gaGFzaCBwcmVkaWNhdGVfaWQgaW5cbiAgICBsZXQgb2xkID0gQS5nZXQgdGFiIGhhc2ggaW5cbiAgICBsZXQgXyA9IEEuc2V0IHRhYiBoYXNoIChQcmVkaWNhdGVNYXAuYWRkIHByZWRpY2F0ZV9pZCB4IG9sZCkgaW5cbiAgICB0YWJcblxuICBsZXQgcmVjeWNsZSB0YWIgaSA9IEEuc2V0IHRhYiBpIFByZWRpY2F0ZU1hcC5lbXB0eVxuZW5kXG5cbm1vZHVsZSBNUHJlZGljYXRlTWFwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFByZWRpY2F0ZU1hcC50XG5cbiAgbGV0IHByZWRpY2F0ZV9tYXggX3BhcmFtZXRlciBfaGFuZGxlciBpbmZvIGVycm9yIF9saXN0ID0gZXJyb3IsIGluZm8sIDBcbiAgbGV0IGVtcHR5IF9uID0gUHJlZGljYXRlTWFwLmVtcHR5XG4gIGxldCBpdGVyID0gUHJlZGljYXRlTWFwLml0ZXJcbiAgbGV0IGZpbmRfZGVmYXVsdCA9IFByZWRpY2F0ZU1hcC5maW5kX2RlZmF1bHRcbiAgbGV0IGZpbmRfb3B0aW9uID0gUHJlZGljYXRlTWFwLmZpbmRfb3B0aW9uXG4gIGxldCBtZW0gPSBQcmVkaWNhdGVNYXAubWVtXG4gIGxldCBhZGQgPSBQcmVkaWNhdGVNYXAuYWRkXG5lbmRcblxubW9kdWxlIENQcmVkaWNhdGVNYXAgPSBNUHJlZGljYXRlTWFwXG4iLCIoKipcbiAgKiBwcmlvcml0eS5tbFxuICAqXG4gICpcbiAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTMtMDctMzAgZmVyZXQ+XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTAyLTE5IDE0OjIxOjE5IGZlcmV0PlxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERlZGVyb3QsIENOUlNcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIHNlbGVjdGlvbl9zdHJhdGVneSA9XG4gIHwgQWxsX3JlbWFpbmluZ19ldmVudHNcbiAgfCBXaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHNcbiAgfCBXaXJlX3dpdGhfdGhlX21vc3RfbnVtYmVyX29mX2V2ZW50c1xuXG50eXBlIHRyeV90b19yZW1vdmVfZmlyc3QgPSBMYXRlX2V2ZW50cyB8IEVhcmx5X2V2ZW50c1xuXG50eXBlIGxldmVsID1cbiAgfCBIaWdoZXN0XG4gIHwgSGlnaFxuICB8IEFib3ZlX2F2ZXJhZ2VcbiAgfCBBdmVyYWdlXG4gIHwgQmVsbG93X2F2ZXJhZ2VcbiAgfCBMb3dcbiAgfCBMb3dlc3RcblxubGV0IHdlaWdodCB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgSGlnaGVzdCAtPiAwXG4gIHwgSGlnaCAtPiAxXG4gIHwgQWJvdmVfYXZlcmFnZSAtPiAyXG4gIHwgQXZlcmFnZSAtPiAzXG4gIHwgQmVsbG93X2F2ZXJhZ2UgLT4gNFxuICB8IExvdyAtPiA1XG4gIHwgTG93ZXN0IC0+IDZcblxubGV0IF9jb21wYXJlX2xldmVsIGx2bDEgbHZsMiA9IGNvbXBhcmUgKHdlaWdodCBsdmwxKSAod2VpZ2h0IGx2bDIpXG5cbmxldCBtaW5fbGV2ZWwgYSBiID1cbiAgaWYgY29tcGFyZSBhIGIgPD0gMCB0aGVuXG4gICAgYVxuICBlbHNlXG4gICAgYlxuXG5sZXQgX21heF9sZXZlbCBhIGIgPVxuICBpZiBjb21wYXJlIGEgYiA8PSAwIHRoZW5cbiAgICBiXG4gIGVsc2VcbiAgICBhXG5cbmxldCBoaWdoZXN0ID0gSGlnaGVzdFxubGV0IGhpZ2ggPSBIaWdoXG5sZXQgYWJvdmVfYXZlcmFnZSA9IEFib3ZlX2F2ZXJhZ2VcbmxldCBhdmVyYWdlID0gQXZlcmFnZVxubGV0IGJlbGxvd19hdmVyYWdlID0gQmVsbG93X2F2ZXJhZ2VcbmxldCBsb3cgPSBMb3dcbmxldCBsb3dlc3QgPSBMb3dlc3RcblxubGV0IHN0cmluZ19vZl9sZXZlbCBsZXZlbCA9XG4gIG1hdGNoIGxldmVsIHdpdGhcbiAgfCBIaWdoZXN0IC0+IFwiaGlnaGVzdFwiXG4gIHwgSGlnaCAtPiBcImhpZ2hcIlxuICB8IEFib3ZlX2F2ZXJhZ2UgLT4gXCJhYm92ZSBhdmVyYWdlXCJcbiAgfCBBdmVyYWdlIC0+IFwiYXZlcmFnZVwiXG4gIHwgQmVsbG93X2F2ZXJhZ2UgLT4gXCJiZWxsb3cgYXZlcmFnZVwiXG4gIHwgTG93IC0+IFwibG93XCJcbiAgfCBMb3dlc3QgLT4gXCJsb3dlc3RcIlxuXG5sZXQgbG93ZXIgbGV2ZWwgPVxuICBtYXRjaCBsZXZlbCB3aXRoXG4gIHwgSGlnaGVzdCAtPiBTb21lIEhpZ2hcbiAgfCBIaWdoIC0+IFNvbWUgQWJvdmVfYXZlcmFnZVxuICB8IEFib3ZlX2F2ZXJhZ2UgLT4gU29tZSBBdmVyYWdlXG4gIHwgQXZlcmFnZSAtPiBTb21lIEJlbGxvd19hdmVyYWdlXG4gIHwgQmVsbG93X2F2ZXJhZ2UgLT4gU29tZSBMb3dcbiAgfCBMb3cgLT4gU29tZSBMb3dlc3RcbiAgfCBMb3dlc3QgLT4gTm9uZVxuXG5sZXQgaGlnaGVyIGxldmVsID1cbiAgbWF0Y2ggbGV2ZWwgd2l0aFxuICB8IEhpZ2hlc3QgLT4gTm9uZVxuICB8IEhpZ2ggLT4gU29tZSBIaWdoZXN0XG4gIHwgQWJvdmVfYXZlcmFnZSAtPiBTb21lIEhpZ2hcbiAgfCBBdmVyYWdlIC0+IFNvbWUgQWJvdmVfYXZlcmFnZVxuICB8IEJlbGxvd19hdmVyYWdlIC0+IFNvbWUgQXZlcmFnZVxuICB8IExvdyAtPiBTb21lIEJlbGxvd19hdmVyYWdlXG4gIHwgTG93ZXN0IC0+IFNvbWUgTG93XG5cbm1vZHVsZSBMZXZlbFNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gbGV2ZWxcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IHByaW50IGYgeCA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoc3RyaW5nX29mX2xldmVsIHgpXG5lbmQpXG5cbm1vZHVsZSBMZXZlbE1hcCA9IExldmVsU2V0TWFwLk1hcFxuXG50eXBlIHByaW9yaXRpZXMgPSB7XG4gIGNyZWF0aW9uOiBsZXZlbDtcbiAgdW5iaW5kaW5nOiBsZXZlbDtcbiAgcmVtb3ZhbDogbGV2ZWw7XG4gIG90aGVyX2V2ZW50czogbGV2ZWw7XG4gIHN1YnN0aXR1dGlvbjogbGV2ZWw7XG4gIHNpZGVfZWZmZWN0czogbGV2ZWw7XG4gIGNhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzOiBzZWxlY3Rpb25fc3RyYXRlZ3k7XG4gIHRyeV90b19yZW1vdmVfZmlyc3Q6IHRyeV90b19yZW1vdmVfZmlyc3Q7XG59XG4oKiogZWFjaCBldmVudCBpcyBhc3NvY2lhdGVkIHdpdGggYSBsZXZlbCBjb3JyZXNwb25kaW5nIG9mIGl0cyBhY3Rpb25zIChpZiBtdWx0aXBsZSBhY3Rpb24sIHRoZW4sIHRoZSBsZWFzdCBjb3JyZXNwb25kaW5nIGxldmVsIGlzIHNlbGVjdGVkXG4gRXZlbnRzIHdpdGggdGhlIGxlYXN0IGxldmVsIG9mIHByaW9yaXR5IGFyZSByZW1vdmVkIGZpcnN0XG4gQW1vbmcgdGhlbSwgdGhlIGNob2ljZSBpcyBkcml2ZW4gYnkgdGhlIGZpZWxkcyAnY2FuZGlkYXRlX3NldF9vZl9ldmVudHMnIGFuZCAndHJ5X3RvX3JlbW92ZV9maXJzdCcgKilcblxubGV0IGNhdXNhbCA9XG4gIHtcbiAgICBjcmVhdGlvbiA9IEhpZ2hlc3Q7XG4gICAgdW5iaW5kaW5nID0gSGlnaGVzdDtcbiAgICByZW1vdmFsID0gSGlnaGVzdDtcbiAgICBvdGhlcl9ldmVudHMgPSBIaWdoZXN0O1xuICAgIHN1YnN0aXR1dGlvbiA9IEhpZ2hlc3Q7XG4gICAgc2lkZV9lZmZlY3RzID0gSGlnaGVzdDtcbiAgICBjYW5kaWRhdGVfc2V0X29mX2V2ZW50cyA9IFdpcmVfd2l0aF90aGVfbGVhc3RfbnVtYmVyX29mX2V2ZW50cztcbiAgICB0cnlfdG9fcmVtb3ZlX2ZpcnN0ID0gTGF0ZV9ldmVudHM7XG4gIH1cblxubGV0IHdlYWsgPVxuICB7XG4gICAgY3JlYXRpb24gPSBIaWdoZXN0O1xuICAgIHVuYmluZGluZyA9IEhpZ2hlc3Q7XG4gICAgcmVtb3ZhbCA9IEhpZ2hlc3Q7XG4gICAgb3RoZXJfZXZlbnRzID0gSGlnaGVzdDtcbiAgICBzdWJzdGl0dXRpb24gPSBIaWdoO1xuICAgIHNpZGVfZWZmZWN0cyA9IEhpZ2g7XG4gICAgY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgPSBXaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHM7XG4gICAgdHJ5X3RvX3JlbW92ZV9maXJzdCA9IExhdGVfZXZlbnRzO1xuICB9XG5cbmxldCBzdHJvbmcgPVxuICB7XG4gICAgY3JlYXRpb24gPSBIaWdoZXN0O1xuICAgIHVuYmluZGluZyA9IEhpZ2g7XG4gICAgcmVtb3ZhbCA9IEFib3ZlX2F2ZXJhZ2U7XG4gICAgb3RoZXJfZXZlbnRzID0gQXZlcmFnZTtcbiAgICBzdWJzdGl0dXRpb24gPSBCZWxsb3dfYXZlcmFnZTtcbiAgICBzaWRlX2VmZmVjdHMgPSBMb3c7XG4gICAgY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgPSBXaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHM7XG4gICAgdHJ5X3RvX3JlbW92ZV9maXJzdCA9IExhdGVfZXZlbnRzO1xuICB9XG5cbmxldCBuX3N0b3J5ID0gcmVmIDFcbmxldCBuX2JyYW5jaCA9IHJlZiAxXG4iLCJ0eXBlIGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSA9IFdlYWsgfCBTdHJvbmcgfCBDYXVzYWxcbnR5cGUgbmV3X3N0b3J5ID0geyBpZDogaW50OyBncmFwaDogR3JhcGhfbG9nZ2Vyc19zaWcuZ3JhcGggfVxudHlwZSBzdG9yeSA9IE5ldyBvZiBuZXdfc3RvcnkgfCBTYW1lX2FzIG9mIGludFxuXG50eXBlICdhIG9uZV9jb21wcmVzc2lvbiA9IHtcbiAgbG9nX2luZm86ICdhIFRyYWNlLlNpbXVsYXRpb25faW5mby50IGxpc3Q7XG4gIHN0b3J5X21vZGU6IGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZTtcbiAgc3Rvcnk6IHN0b3J5O1xufVxuXG5sZXQgc3RyaW5nX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgcyAtPiBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHN0cmluZ1wiLCB4KSlcblxubGV0IGludF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgSW50IHMgLT4gc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBpbnRcIiwgeCkpXG5cbmxldCBuZXdfc3RvcnlfdG9fanNvbiBuZXdfc3RvcnkgPVxuICBgQXNzb2NcbiAgICBbIFwiaWRcIiwgYEludCBuZXdfc3RvcnkuaWQ7IFwiZ3JhcGhcIiwgR3JhcGhfanNvbi50b19qc29uIG5ld19zdG9yeS5ncmFwaCBdXG5cbmxldCBuZXdfc3Rvcnlfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAyIC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIGlkID0gaW50X29mX2pzb24gKExpc3QuYXNzb2MgXCJpZFwiIGwpO1xuICAgICAgICAgZ3JhcGggPSBHcmFwaF9qc29uLm9mX2pzb24gKExpc3QuYXNzb2MgXCJncmFwaFwiIGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IG5ldyBzdG9yeVwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IG5ldyBzdG9yeVwiLCB4KSlcblxubGV0IHN0b3J5X3RvX2pzb24gc3RvcnkgPVxuICBtYXRjaCBzdG9yeSB3aXRoXG4gIHwgTmV3IG5ld19zdG9yeSAtPiBgQXNzb2MgWyBcIm5ld1wiLCBuZXdfc3RvcnlfdG9fanNvbiBuZXdfc3RvcnkgXVxuICB8IFNhbWVfYXMgaW50IC0+IGBBc3NvYyBbIFwic2FtZV9hc1wiLCBgSW50IGludCBdXG5cbmxldCBzdG9yeV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAoXCJuZXdcIiwgbmV3X3N0b3J5KSBdIC0+IE5ldyAobmV3X3N0b3J5X29mX2pzb24gbmV3X3N0b3J5KVxuICB8IGBBc3NvYyBbIChcInNhbWVfYXNcIiwgYEludCBpbnQpIF0gLT4gU2FtZV9hcyBpbnRcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3Qgc3RvcnlcIiwgeCkpXG5cbmxldCBzdG9yeV9tb2RlX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IENhdXNhbCAtPiBgU3RyaW5nIFwiQ2F1c2FsXCJcbiAgfCBXZWFrIC0+IGBTdHJpbmcgXCJXZWFrXCJcbiAgfCBTdHJvbmcgLT4gYFN0cmluZyBcIlN0cm9uZ1wiXG5cbmxldCBzdG9yeV9tb2RlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJDYXVzYWxcIiAtPiBDYXVzYWxcbiAgfCBgU3RyaW5nIFwiV2Vha1wiIC0+IFdlYWtcbiAgfCBgU3RyaW5nIFwiU3Ryb25nXCIgLT4gU3Ryb25nXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHN0b3J5IG1vZGVcIiwgeCkpXG5cbmxldCB0b19qc29uIGxvZ19pbmZvX3RvX2pzb24gb25lX2NvbXByZXNzaW9uID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcImxvZ19pbmZvXCIsXG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKExpc3QucmV2X21hcFxuICAgICAgICAgICAgIChUcmFjZS5TaW11bGF0aW9uX2luZm8udG9fanNvbiBsb2dfaW5mb190b19qc29uKVxuICAgICAgICAgICAgIChMaXN0LnJldiBvbmVfY29tcHJlc3Npb24ubG9nX2luZm8pKSApO1xuICAgICAgXCJzdG9yeV9tb2RlXCIsIHN0b3J5X21vZGVfdG9fanNvbiBvbmVfY29tcHJlc3Npb24uc3RvcnlfbW9kZTtcbiAgICAgIFwic3RvcnlcIiwgc3RvcnlfdG9fanNvbiBvbmVfY29tcHJlc3Npb24uc3Rvcnk7XG4gICAgXVxuXG5sZXQgb2ZfanNvbiBsb2dfaW5mb19vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDMgLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgbG9nX2luZm8gPVxuICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcImxvZ19pbmZvXCIgbCB3aXRoXG4gICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAgICAgICAgKFRyYWNlLlNpbXVsYXRpb25faW5mby5vZl9qc29uIGxvZ19pbmZvX29mX2pzb24pXG4gICAgICAgICAgICAgICAoTGlzdC5yZXYgbClcbiAgICAgICAgICAgfCBfeSAtPlxuICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgKFwiTm90IGEgY29ycmVjdCBzdG9yeSBjb21wdXRhdGlvblwiLCB4KSkpO1xuICAgICAgICAgc3RvcnkgPSBzdG9yeV9vZl9qc29uIChMaXN0LmFzc29jIFwic3RvcnlcIiBsKTtcbiAgICAgICAgIHN0b3J5X21vZGUgPSBzdG9yeV9tb2RlX29mX2pzb24gKExpc3QuYXNzb2MgXCJzdG9yeV9tb2RlXCIgbCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHN0b3J5IGNvbXB1dGF0aW9uXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBzdG9yeSBjb21wdXRhdGlvblwiLCB4KSlcblxudHlwZSBwaGFzZSA9IFN0YXJ0IHwgSW5wcm9ncmVzcyB8IFN1Y2Nlc3MgfCBGYWlsbHVyZVxuXG5sZXQgc3RhcnQgPSBcInN0YXJ0aW5nIGNvbXB1dGF0aW9uXCJcbmxldCBpbnByb2dyZXNzID0gXCJjb21wdXRhdGlvbiBpbiBwcm9ncmVzc1wiXG5sZXQgc3VjY2VzcyA9IFwiY29tcHV0YXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseVwiXG5sZXQgZmFpbGx1cmUgPSBcImNvbXB1dGF0aW9uIChwYXJ0aWFsbHkpIGZhaWxlZFwiXG5cbmxldCBwaGFzZV90b19qc29uID0gZnVuY3Rpb25cbiAgfCBTdGFydCAtPiBgU3RyaW5nIHN0YXJ0XG4gIHwgSW5wcm9ncmVzcyAtPiBgU3RyaW5nIGlucHJvZ3Jlc3NcbiAgfCBTdWNjZXNzIC0+IGBTdHJpbmcgc3VjY2Vzc1xuICB8IEZhaWxsdXJlIC0+IGBTdHJpbmcgZmFpbGx1cmVcblxubGV0IHBoYXNlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgcyB3aGVuIHMgPSBzdGFydCAtPiBTdGFydFxuICB8IGBTdHJpbmcgcyB3aGVuIHMgPSBpbnByb2dyZXNzIC0+IElucHJvZ3Jlc3NcbiAgfCBgU3RyaW5nIHMgd2hlbiBzID0gc3VjY2VzcyAtPiBTdWNjZXNzXG4gIHwgYFN0cmluZyBzIHdoZW4gcyA9IGZhaWxsdXJlIC0+IEZhaWxsdXJlXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHBoYXNlXCIsIHgpKVxuXG50eXBlIHByb2dyZXNzX2JhciA9IHsgYm9vbDogc3RyaW5nOyBjdXJyZW50OiBpbnQ7IHRvdGFsOiBpbnQgfVxuXG5sZXQgcHJvZ3Jlc3NfYmFyX3RvX2pzb24gcHJvZ3Jlc3NfYmFyID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcInByb2dyZXNzX2JhclwiLFxuICAgICAgICBgQXNzb2NcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcImJvb2xcIiwgYFN0cmluZyBwcm9ncmVzc19iYXIuYm9vbDtcbiAgICAgICAgICAgIFwiY3VycmVudFwiLCBgSW50IHByb2dyZXNzX2Jhci5jdXJyZW50O1xuICAgICAgICAgICAgXCJ0b3RhbFwiLCBgSW50IHByb2dyZXNzX2Jhci50b3RhbDtcbiAgICAgICAgICBdICk7XG4gICAgXVxuXG5sZXQgcHJvZ3Jlc3NfYmFyX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMSAtPlxuICAgIChtYXRjaCBMaXN0LmFzc29jIFwicHJvZ3Jlc3NfYmFyXCIgbCB3aXRoXG4gICAgfCBgQXNzb2MgbCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgICAodHJ5XG4gICAgICAgICB7XG4gICAgICAgICAgIGJvb2wgPSBzdHJpbmdfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImJvb2xcIiBsKTtcbiAgICAgICAgICAgY3VycmVudCA9IGludF9vZl9qc29uIChMaXN0LmFzc29jIFwiY3VycmVudFwiIGwpO1xuICAgICAgICAgICB0b3RhbCA9IGludF9vZl9qc29uIChMaXN0LmFzc29jIFwidG90YWxcIiBsKTtcbiAgICAgICAgIH1cbiAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBwcm9ncmVzcyBiYXJcIiwgeCkpKVxuICAgIHwgeCAtPlxuICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBwcm9ncmVzcyBiYXJcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBwcm9ncmVzcyBiYXJcIiwgeCkpXG5cbnR5cGUgJ2EgbWVzc2FnZSA9XG4gIHwgUGhhc2Ugb2YgcGhhc2UgKiBzdHJpbmdcbiAgfCBQcm9ncmVzcyBvZiBwcm9ncmVzc19iYXJcbiAgfCBTdG9yeSBvZiAnYSBvbmVfY29tcHJlc3Npb25cblxubGV0IG1lc3NhZ2VfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgUGhhc2UgKHAsIG0pIC0+IGBMaXN0IFsgYFN0cmluZyBcIlBIQVNFXCI7IHBoYXNlX3RvX2pzb24gcDsgYFN0cmluZyBtIF1cbiAgfCBQcm9ncmVzcyBwIC0+IGBMaXN0IFsgYFN0cmluZyBcIlBST0dSRVNTXCI7IHByb2dyZXNzX2Jhcl90b19qc29uIHAgXVxuICB8IFN0b3J5IHMgLT4gYExpc3QgWyBgU3RyaW5nIFwiU1RPUllcIjsgdG9fanNvbiAoZnVuIF8gLT4gYE51bGwpIHMgXVxuXG5sZXQgbWVzc2FnZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJQSEFTRVwiOyBwOyBgU3RyaW5nIG0gXSAtPiBQaGFzZSAocGhhc2Vfb2ZfanNvbiBwLCBtKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIlBST0dSRVNTXCI7IHAgXSAtPiBQcm9ncmVzcyAocHJvZ3Jlc3NfYmFyX29mX2pzb24gcClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJTVE9SWVwiOyBzIF0gLT4gU3RvcnkgKG9mX2pzb24gKGZ1biBfIC0+ICgpKSBzKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBzdG9yeSBtZXNzYWdlXCIsIHgpKVxuIiwiKCoqXG4gICogY2Zsb3dfaGFuZGxlci5tbFxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDEzLTA4LTAyIGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0xOSAxNDozMDo0MCBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90LCBDTlJTXG4gICpcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgdHlwZSBDZmxvd19oYW5kbGVyID0gc2lnXG4gIHR5cGUgc29ydF9hbGdvX2Zvcl9zdG9yaWVzXG4gIHR5cGUgY29tcHJlc3Npb25fbW9kZVxuXG4gIHZhbCBnZXRfY2F1c2FsX3RyYWNlIDogY29tcHJlc3Npb25fbW9kZSAtPiBib29sXG4gIHZhbCBnZXRfY2F1c2FsX3RyYWNlX29ubHkgOiBjb21wcmVzc2lvbl9tb2RlIC0+IGJvb2xcbiAgdmFsIGdldF93ZWFrX2NvbXByZXNzaW9uIDogY29tcHJlc3Npb25fbW9kZSAtPiBib29sXG4gIHZhbCBnZXRfc3Ryb25nX2NvbXByZXNzaW9uIDogY29tcHJlc3Npb25fbW9kZSAtPiBib29sXG5cbiAgdHlwZSBwYXJhbWV0ZXIgPSB7XG4gICAgY2FjaGVfc2l6ZTogaW50IG9wdGlvbjtcbiAgICBjdXJyZW50X2NvbXByZXNzaW9uX21vZGU6IFN0b3J5X2pzb24uY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIG9wdGlvbjtcbiAgICBjb21wcmVzc2lvbl9tb2RlOiBjb21wcmVzc2lvbl9tb2RlO1xuICAgIHByaW9yaXRpZXNfd2VhazogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBwcmlvcml0aWVzX3N0cm9uZzogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBwcmlvcml0aWVzX2NhdXNhbDogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBjb21wdXRlX2FsbF9zdG9yaWVzOiBib29sO1xuICAgIHNvcnRfYWxnb19mb3Jfc3Rvcmllczogc29ydF9hbGdvX2Zvcl9zdG9yaWVzO1xuICAgIGxvZ2dlcl9lcnI6IExvZ2dlcnMudDtcbiAgICBsb2dnZXJfcHJvZmlsaW5nOiBMb2dnZXJzLnQ7XG4gICAgbG9nZ2VyX291dDogTG9nZ2Vycy50O1xuICAgIGxvZ2dlcl9zZXJ2ZXI6IExvZ2dlcnMudDtcbiAgICBqc29uX2J1ZmZlcjpcbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gU3RvcnlfanNvbi5tZXNzYWdlIEZpZm8udCByZWYgb3B0aW9uO1xuICAgIGxvZ19zdGVwOiBib29sO1xuICAgIGRlYnVnX21vZGU6IGJvb2w7XG4gICAgbG9nZ2VyX3N0ZXA6IExvZ2dlcnMudDtcbiAgICBrYXNhOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzO1xuICAgIGFsd2F5c19kaXNhbWJpZ3VhdGVfaW5pdGlhbF9zdGF0ZXM6IGJvb2w7XG4gICAgYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXI6IGludCBvcHRpb247XG4gICAgdGltZV9pbmRlcGVuZGVudDogYm9vbDtcbiAgICBibGFja2xpc3RfZXZlbnRzOiBib29sO1xuICAgIHNlcnZlcjogYm9vbDtcbiAgICBpc19zZXJ2ZXJfY2hhbm5lbF9vbjogYm9vbDtcbiAgICBkdW1wOiBzdHJpbmcgLT4gdW5pdDtcbiAgfVxuICAoKiogYSBzdHJ1Y3Qgd2hpY2ggY29udGFpbnMgcGFyYW1ldGVyaXphYmxlIG9wdGlvbnMgKilcblxuICB2YWwgZ2V0X2N1cnJlbnRfY29tcHJlc3Npb25fbW9kZSA6XG4gICAgcGFyYW1ldGVyIC0+IFN0b3J5X2pzb24uY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIG9wdGlvblxuXG4gIHR5cGUgaGFuZGxlciA9IHtcbiAgICAoKmhhbmRsZXIgdG8gaW50ZXJwcmV0IGFic3RyYWN0IHZhbHVlcyopXG4gICAgZW52OiBNb2RlbC50O1xuICAgIHJ1bGVfbmFtZV9jYWNoZTogc3RyaW5nIGFycmF5O1xuICAgIGFnZW50X25hbWVfY2FjaGU6IHN0cmluZyBhcnJheTtcbiAgICBzdGVwc19ieV9jb2x1bW46XG4gICAgICAoaW50ICogUHJlZGljYXRlX21hcHMucHJlZGljYXRlX3ZhbHVlICogYm9vbCkgbGlzdFxuICAgICAgUHJlZGljYXRlX21hcHMuUVByZWRpY2F0ZU1hcC50O1xuICB9XG5cbiAgdHlwZSAnYSB6ZXJvYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gKiAnYVxuXG4gIHR5cGUgKCdhLCAnYikgdW5hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2JcblxuICB0eXBlICgnYSwgJ2IsICdjKSBiaW5hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gKiAnY1xuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0ZXJuYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gKiAnZFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgcXVhdGVybmFyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICAnZCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gKiAnZVxuXG4gIHZhbCBkb19ub3RfYm91bmRfaXR0ZXJhdGlvbnMgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG4gIHZhbCBzZXRfaXR0ZXJhdGlvbl9ib3VuZCA6IHBhcmFtZXRlciAtPiBpbnQgLT4gcGFyYW1ldGVyXG4gIHZhbCBnZXRfYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXIgOiBwYXJhbWV0ZXIgLT4gaW50IG9wdGlvblxuICB2YWwgc2V0X2ZpcnN0X3N0b3J5X3Blcl9vYnMgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG4gIHZhbCBzZXRfYWxsX3N0b3JpZXNfcGVyX29icyA6IHBhcmFtZXRlciAtPiBwYXJhbWV0ZXJcblxuICB2YWwgYnVpbGRfcGFyYW1ldGVyIDpcbiAgICBjYWxsZWRfZnJvbTpSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jYWxsZWRfZnJvbSAtPlxuICAgID9zZW5kX21lc3NhZ2U6KHN0cmluZyAtPiB1bml0KSAtPlxuICAgIG5vbmU6Ym9vbCAtPlxuICAgIHdlYWs6Ym9vbCAtPlxuICAgIHN0cm9uZzpib29sIC0+XG4gICAgdW5pdCAtPlxuICAgIHBhcmFtZXRlclxuXG4gIHZhbCBzdHJpbmdfb2ZfZXhuIDogZXhuIC0+IHN0cmluZyBvcHRpb25cbiAgdmFsIGlzX3NlcnZlcl9tb2RlIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIHNldF9jb21wcmVzc2lvbl93ZWFrIDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgc2V0X2NvbXByZXNzaW9uX3N0cm9uZyA6IHBhcmFtZXRlciAtPiBwYXJhbWV0ZXJcbiAgdmFsIHNldF9jb21wcmVzc2lvbl9ub25lIDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X3ByaW9yaXRpZXMgOiBwYXJhbWV0ZXIgLT4gUHJpb3JpdHkucHJpb3JpdGllcyBvcHRpb25cbiAgdmFsIGdldF9hbGxfc3Rvcmllc19wZXJfb2JzIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIHNldF9sb2dfc3RlcCA6IHBhcmFtZXRlciAtPiBib29sIC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X2xvZ19zdGVwIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIHNldF9kZWJ1Z2dpbmdfbW9kZSA6IHBhcmFtZXRlciAtPiBib29sIC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X2RlYnVnZ2luZ19tb2RlIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIGdldF9wcm9maWxpbmdfbG9nZ2VyIDogcGFyYW1ldGVyIC0+IExvZ2dlcnMudFxuICB2YWwgZ2V0X3NlcnZlcl9jaGFubmVsIDogcGFyYW1ldGVyIC0+IExvZ2dlcnMudFxuICB2YWwgc2h1dF9kb3duX3NlcnZlcl9jaGFubmVsIDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgaXNfc2VydmVyX2NoYW5uZWxfb24gOiBwYXJhbWV0ZXIgLT4gYm9vbFxuICB2YWwgZ2V0X2xvZ2dlciA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnRcbiAgdmFsIHNldF9sb2dnZXIgOiBwYXJhbWV0ZXIgLT4gTG9nZ2Vycy50IC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X291dF9jaGFubmVsIDogcGFyYW1ldGVyIC0+IExvZ2dlcnMudFxuICB2YWwgc2V0X291dF9jaGFubmVsIDogcGFyYW1ldGVyIC0+IExvZ2dlcnMudCAtPiBwYXJhbWV0ZXJcbiAgdmFsIGdldF9kZWJ1Z2dpbmdfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnRcbiAgdmFsIHNldF9kZWJ1Z2dpbmdfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnQgLT4gcGFyYW1ldGVyXG4gIHZhbCBnZXRfa2FzYV9wYXJhbWV0ZXJzIDogcGFyYW1ldGVyIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnNcblxuICB2YWwgc2V0X2thc2FfcGFyYW1ldGVycyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG5cbiAgdmFsIGRvX3dlX3VzZV9idWNrZXRfc29ydCA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCB1c2VfYnVja2V0X3NvcnQgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG4gIHZhbCB1c2VfZnVzaW9uX3NvcnQgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG4gIHZhbCBhbHdheXNfZGlzYW1iaWd1YXRlIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIHNldF9hbHdheXNfZGlzYW1iaWd1YXRlIDogcGFyYW1ldGVyIC0+IGJvb2wgLT4gcGFyYW1ldGVyXG4gIHZhbCBpbml0X2hhbmRsZXIgOiBNb2RlbC50IC0+IGhhbmRsZXJcbiAgdmFsIHN0cmluZ19vZl9ydWxlX2lkIDogaGFuZGxlciAtPiBpbnQgLT4gc3RyaW5nXG4gIHZhbCBzdHJpbmdfb2ZfYWdlbnRfaWQgOiBoYW5kbGVyIC0+IGludCAtPiBzdHJpbmdcblxuICB2YWwgZ2V0X3ByZWRpY2F0ZV9tYXAgOlxuICAgIGhhbmRsZXIgLT5cbiAgICAoaW50ICogUHJlZGljYXRlX21hcHMucHJlZGljYXRlX3ZhbHVlICogYm9vbCkgbGlzdFxuICAgIFByZWRpY2F0ZV9tYXBzLlFQcmVkaWNhdGVNYXAudFxuXG4gIHZhbCBnZXRfaXNfdGltZV9pbmRlcGVuZGVudCA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBnZXRfYmxhY2tsaXN0X2V2ZW50cyA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgOiBwYXJhbWV0ZXIgLT4gc3RyaW5nIC0+IHVuaXRcbiAgdmFsIHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgOiBwYXJhbWV0ZXIgLT4gdW5pdFxuICB2YWwgc2F2ZV9wcm9ncmVzc19iYXIgOiBwYXJhbWV0ZXIgLT4gYm9vbCAqIGludCAqIGludCAqIGludCAtPiB1bml0XG4gIHZhbCByZXNldF9wcm9ncmVzc19iYXIgOiBwYXJhbWV0ZXIgLT4gdW5pdFxuICB2YWwgc2V0X3NhdmVfY3VycmVudF9waGFzZV90aXRsZSA6IHBhcmFtZXRlciAtPiAoc3RyaW5nIC0+IHVuaXQpIC0+IHBhcmFtZXRlclxuICB2YWwgc2V0X3Jlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgOiBwYXJhbWV0ZXIgLT4gKHVuaXQgLT4gdW5pdCkgLT4gcGFyYW1ldGVyXG5cbiAgdmFsIHNldF9zYXZlX3Byb2dyZXNzX2JhciA6XG4gICAgcGFyYW1ldGVyIC0+IChib29sICogaW50ICogaW50ICogaW50IC0+IHVuaXQpIC0+IHBhcmFtZXRlclxuXG4gIHZhbCBzZXRfcmVzZXRfcHJvZ3Jlc3NfYmFyIDogcGFyYW1ldGVyIC0+ICh1bml0IC0+IHVuaXQpIC0+IHBhcmFtZXRlclxuXG4gIHZhbCBzYXZlX2Vycm9yX2xvZyA6XG4gICAgcGFyYW1ldGVyIC0+IEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5tZXRob2RfaGFuZGxlciAtPiB1bml0XG5cbiAgdmFsIHNldF9zYXZlX2Vycm9yX2xvZyA6XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5tZXRob2RfaGFuZGxlciAtPiB1bml0KSAtPlxuICAgIHBhcmFtZXRlclxuXG4gIHZhbCBwdXNoX2pzb24gOlxuICAgIHBhcmFtZXRlciAtPiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIFN0b3J5X2pzb24ubWVzc2FnZSAtPiB1bml0XG5cbiAgdmFsIHBvcF9qc29uIDpcbiAgICBwYXJhbWV0ZXIgLT4gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBTdG9yeV9qc29uLm1lc3NhZ2Ugb3B0aW9uXG5lbmRcblxubW9kdWxlIENmbG93X2hhbmRsZXIgOiBDZmxvd19oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgc29ydF9hbGdvX2Zvcl9zdG9yaWVzID0gQnVja2V0IHwgRnVzaW9uXG5cbiAgdHlwZSBjb21wcmVzc2lvbl9tb2RlID0ge1xuICAgIGNhdXNhbF90cmFjZTogYm9vbDtcbiAgICB3ZWFrX2NvbXByZXNzaW9uOiBib29sO1xuICAgIHN0cm9uZ19jb21wcmVzc2lvbjogYm9vbDtcbiAgfVxuXG4gIGxldCBnZXRfY2F1c2FsX3RyYWNlIHggPSB4LmNhdXNhbF90cmFjZVxuICBsZXQgZ2V0X2NhdXNhbF90cmFjZV9vbmx5IHggPSBub3QgKHgud2Vha19jb21wcmVzc2lvbiB8fCB4LnN0cm9uZ19jb21wcmVzc2lvbilcbiAgbGV0IGdldF93ZWFrX2NvbXByZXNzaW9uIHggPSB4LndlYWtfY29tcHJlc3Npb25cbiAgbGV0IGdldF9zdHJvbmdfY29tcHJlc3Npb24geCA9IHguc3Ryb25nX2NvbXByZXNzaW9uXG5cbiAgdHlwZSBwYXJhbWV0ZXIgPSB7XG4gICAgY2FjaGVfc2l6ZTogaW50IG9wdGlvbjtcbiAgICBjdXJyZW50X2NvbXByZXNzaW9uX21vZGU6IFN0b3J5X2pzb24uY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIG9wdGlvbjtcbiAgICBjb21wcmVzc2lvbl9tb2RlOiBjb21wcmVzc2lvbl9tb2RlO1xuICAgIHByaW9yaXRpZXNfd2VhazogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBwcmlvcml0aWVzX3N0cm9uZzogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBwcmlvcml0aWVzX2NhdXNhbDogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBjb21wdXRlX2FsbF9zdG9yaWVzOiBib29sO1xuICAgIHNvcnRfYWxnb19mb3Jfc3Rvcmllczogc29ydF9hbGdvX2Zvcl9zdG9yaWVzO1xuICAgIGxvZ2dlcl9lcnI6IExvZ2dlcnMudDtcbiAgICBsb2dnZXJfcHJvZmlsaW5nOiBMb2dnZXJzLnQ7XG4gICAgbG9nZ2VyX291dDogTG9nZ2Vycy50O1xuICAgIGxvZ2dlcl9zZXJ2ZXI6IExvZ2dlcnMudDtcbiAgICBqc29uX2J1ZmZlcjpcbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gU3RvcnlfanNvbi5tZXNzYWdlIEZpZm8udCByZWYgb3B0aW9uO1xuICAgIGxvZ19zdGVwOiBib29sO1xuICAgIGRlYnVnX21vZGU6IGJvb2w7XG4gICAgbG9nZ2VyX3N0ZXA6IExvZ2dlcnMudDtcbiAgICBrYXNhOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzO1xuICAgIGFsd2F5c19kaXNhbWJpZ3VhdGVfaW5pdGlhbF9zdGF0ZXM6IGJvb2w7XG4gICAgYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXI6IGludCBvcHRpb247XG4gICAgdGltZV9pbmRlcGVuZGVudDogYm9vbDtcbiAgICBibGFja2xpc3RfZXZlbnRzOiBib29sO1xuICAgIHNlcnZlcjogYm9vbDtcbiAgICBpc19zZXJ2ZXJfY2hhbm5lbF9vbjogYm9vbDtcbiAgICBkdW1wOiBzdHJpbmcgLT4gdW5pdDtcbiAgfVxuXG4gIGxldCBnZXRfY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHBhcmFtZXRlciA9XG4gICAgcGFyYW1ldGVyLmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZVxuXG4gIGxldCBidWlsZF9wYXJhbWV0ZXIgfmNhbGxlZF9mcm9tXG4gICAgICA/KHNlbmRfbWVzc2FnZSA9XG4gICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlciBcIiVzXCIgeDtcbiAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyKSB+bm9uZSB+d2VhayB+c3Ryb25nICgpXG4gICAgICA9XG4gICAgbGV0ICggc2VydmVyLFxuICAgICAgICAgIG91dF9zZXJ2ZXIsXG4gICAgICAgICAgb3V0X2NoYW5uZWwsXG4gICAgICAgICAgb3V0X2NoYW5uZWxfZXJyLFxuICAgICAgICAgIG91dF9jaGFubmVsX3Byb2ZpbGluZyxcbiAgICAgICAgICBsb2dfc3RlcF9jaGFubmVsICkgPVxuICAgICAgbWF0Y2ggY2FsbGVkX2Zyb20gd2l0aFxuICAgICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5TZXJ2ZXIgLT5cbiAgICAgICAgKCB0cnVlLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIH5tb2RlOkxvZ2dlcnMuSnNvbiBzdGRvdXQsXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2luZmluaXRlX2J1ZmZlciB+bW9kZTpMb2dnZXJzLkhUTUwgKCksXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2luZmluaXRlX2J1ZmZlciB+bW9kZTpMb2dnZXJzLkhUTUwgKCksXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2NpcmN1bGFyX2J1ZmZlciB+bW9kZTpMb2dnZXJzLkhUTUwgKCksXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2NpcmN1bGFyX2J1ZmZlciB+bW9kZTpMb2dnZXJzLkhUTUxfVGFidWxhciAoKSApXG4gICAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthU2EgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNpbVxuICAgICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5JbnRlcm5hbGlzZWQgLT5cbiAgICAgICAgbGV0IGNoYW5uZWwgPSBLYXBwYV9maWxlcy5vcGVuX2JyYW5jaF9hbmRfY3V0X2VuZ2luZV9wcm9maWxpbmcgKCkgaW5cbiAgICAgICAgKCBmYWxzZSxcbiAgICAgICAgICBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXIsXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciBGb3JtYXQuZXJyX2Zvcm1hdHRlcixcbiAgICAgICAgICBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyIEZvcm1hdC5lcnJfZm9ybWF0dGVyLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXJcbiAgICAgICAgICAgIChGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGNoYW5uZWwpLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXIgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgKVxuICAgIGluXG4gICAge1xuICAgICAgc2VydmVyO1xuICAgICAgaXNfc2VydmVyX2NoYW5uZWxfb24gPSBzZXJ2ZXI7XG4gICAgICBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgPSBOb25lO1xuICAgICAgcHJpb3JpdGllc193ZWFrID0gUHJpb3JpdHkud2VhaztcbiAgICAgIHByaW9yaXRpZXNfc3Ryb25nID0gUHJpb3JpdHkuc3Ryb25nO1xuICAgICAgcHJpb3JpdGllc19jYXVzYWwgPSBQcmlvcml0eS5jYXVzYWw7XG4gICAgICBjb21wdXRlX2FsbF9zdG9yaWVzID0gZmFsc2U7XG4gICAgICBzb3J0X2FsZ29fZm9yX3N0b3JpZXMgPSBCdWNrZXQ7XG4gICAgICBsb2dnZXJfc2VydmVyID0gb3V0X3NlcnZlcjtcbiAgICAgIGxvZ2dlcl9vdXQgPSBvdXRfY2hhbm5lbDtcbiAgICAgIGxvZ2dlcl9lcnIgPSBvdXRfY2hhbm5lbF9lcnI7XG4gICAgICBsb2dnZXJfcHJvZmlsaW5nID0gb3V0X2NoYW5uZWxfcHJvZmlsaW5nO1xuICAgICAganNvbl9idWZmZXIgPSBOb25lO1xuICAgICAgY29tcHJlc3Npb25fbW9kZSA9XG4gICAgICAgIHtcbiAgICAgICAgICBjYXVzYWxfdHJhY2UgPSBub25lO1xuICAgICAgICAgIHdlYWtfY29tcHJlc3Npb24gPSB3ZWFrO1xuICAgICAgICAgIHN0cm9uZ19jb21wcmVzc2lvbiA9IHN0cm9uZztcbiAgICAgICAgfTtcbiAgICAgIGNhY2hlX3NpemUgPSBQYXJhbWV0ZXIuZ2V0X2NhY2hlX3NpemUgKCk7XG4gICAgICBkZWJ1Z19tb2RlID0gZmFsc2U7XG4gICAgICBsb2dfc3RlcCA9IHRydWU7XG4gICAgICBsb2dnZXJfc3RlcCA9IGxvZ19zdGVwX2NoYW5uZWw7XG4gICAgICBrYXNhID0gUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcGFyYW1ldGVycyB+Y2FsbGVkX2Zyb20gKCk7XG4gICAgICBhbHdheXNfZGlzYW1iaWd1YXRlX2luaXRpYWxfc3RhdGVzID0gdHJ1ZTtcbiAgICAgIGJvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyID0gTm9uZTtcbiAgICAgIHRpbWVfaW5kZXBlbmRlbnQgPSAhUGFyYW1ldGVyLnRpbWVfaW5kZXBlbmRlbnQ7XG4gICAgICBibGFja2xpc3RfZXZlbnRzID0gIVBhcmFtZXRlci5ibGFja2xpc3RfZXZlbnRzO1xuICAgICAgZHVtcCA9IHNlbmRfbWVzc2FnZTtcbiAgICB9XG5cbiAgbGV0IHNldF9jb21wcmVzc2lvbl93ZWFrIHAgPVxuICAgIHsgcCB3aXRoIGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSA9IFNvbWUgU3RvcnlfanNvbi5XZWFrIH1cblxuICBsZXQgc2V0X2NvbXByZXNzaW9uX3N0cm9uZyBwID1cbiAgICB7IHAgd2l0aCBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgPSBTb21lIFN0b3J5X2pzb24uU3Ryb25nIH1cblxuICBsZXQgc2V0X2NvbXByZXNzaW9uX25vbmUgcCA9XG4gICAgeyBwIHdpdGggY3VycmVudF9jb21wcmVzc2lvbl9tb2RlID0gU29tZSBTdG9yeV9qc29uLkNhdXNhbCB9XG5cbiAgdHlwZSBoYW5kbGVyID0ge1xuICAgIGVudjogTW9kZWwudDtcbiAgICBydWxlX25hbWVfY2FjaGU6IHN0cmluZyBhcnJheTtcbiAgICBhZ2VudF9uYW1lX2NhY2hlOiBzdHJpbmcgYXJyYXk7XG4gICAgc3RlcHNfYnlfY29sdW1uOlxuICAgICAgKGludCAqIFByZWRpY2F0ZV9tYXBzLnByZWRpY2F0ZV92YWx1ZSAqIGJvb2wpIGxpc3RcbiAgICAgIFByZWRpY2F0ZV9tYXBzLlFQcmVkaWNhdGVNYXAudDtcbiAgfVxuXG4gIHR5cGUgJ2EgemVyb2FyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2FcblxuICB0eXBlICgnYSwgJ2IpIHVuYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqICdiXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgYmluYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2NcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdGVybmFyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2RcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHF1YXRlcm5hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgJ2QgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2VcblxuICBsZXQgaW5pdF9oYW5kbGVyIGVudiA9XG4gICAgbGV0IG5fcnVsZXMgPSBNb2RlbC5uYl9ydWxlcyBlbnYgaW5cbiAgICBsZXQgcnVsZV9uYW1lX2NhY2hlID0gQXJyYXkubWFrZSBuX3J1bGVzIFwiXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kZWwuZm9sZF9ydWxlc1xuICAgICAgICAoZnVuIHggKCkgciAtPlxuICAgICAgICAgIHJ1bGVfbmFtZV9jYWNoZS4oeCkgPC1cbiAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgICAgKE1vZGVsLnByaW50X2FzdF9ydWxlIH5ub0NvdW50ZXJzOmZhbHNlIH5lbnYpXG4gICAgICAgICAgICAgIHIuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZSlcbiAgICAgICAgKCkgZW52XG4gICAgaW5cbiAgICBsZXQgbl9hZ2VudHMgPSBTaWduYXR1cmUuc2l6ZSAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpIGluXG4gICAgbGV0IGFnZW50X25hbWVfY2FjaGUgPVxuICAgICAgQXJyYXkuaW5pdCBuX2FnZW50cyAoZnVuIHggLT5cbiAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChNb2RlbC5wcmludF9hZ2VudCB+ZW52KSB4KVxuICAgIGluXG4gICAgbGV0IHN0ZXBzX2J5X2NvbHVtbiA9IFByZWRpY2F0ZV9tYXBzLlFQcmVkaWNhdGVNYXAuZW1wdHkgMCBpblxuICAgIHsgZW52OyBydWxlX25hbWVfY2FjaGU7IGFnZW50X25hbWVfY2FjaGU7IHN0ZXBzX2J5X2NvbHVtbiB9XG5cbiAgbGV0IHN0cmluZ19vZl9leG4gX3ggPSBTb21lIFwiXCJcblxuICBsZXQgZ2V0X3ByaW9yaXRpZXMgcGFyYW1ldGVyID1cbiAgICBtYXRjaCBwYXJhbWV0ZXIuY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBTdG9yeV9qc29uLldlYWsgLT4gU29tZSBwYXJhbWV0ZXIucHJpb3JpdGllc193ZWFrXG4gICAgfCBTb21lIFN0b3J5X2pzb24uU3Ryb25nIC0+IFNvbWUgcGFyYW1ldGVyLnByaW9yaXRpZXNfc3Ryb25nXG4gICAgfCBTb21lIFN0b3J5X2pzb24uQ2F1c2FsIC0+IFNvbWUgcGFyYW1ldGVyLnByaW9yaXRpZXNfY2F1c2FsXG5cbiAgbGV0IHNldF9maXJzdF9zdG9yeV9wZXJfb2JzIHBhcmFtZXRlciA9XG4gICAgeyBwYXJhbWV0ZXIgd2l0aCBjb21wdXRlX2FsbF9zdG9yaWVzID0gZmFsc2UgfVxuXG4gIGxldCBzZXRfYWxsX3N0b3JpZXNfcGVyX29icyBwYXJhbWV0ZXIgPVxuICAgIHsgcGFyYW1ldGVyIHdpdGggY29tcHV0ZV9hbGxfc3RvcmllcyA9IHRydWUgfVxuXG4gIGxldCBnZXRfYWxsX3N0b3JpZXNfcGVyX29icyBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuY29tcHV0ZV9hbGxfc3Rvcmllc1xuICBsZXQgZ2V0X2RlYnVnZ2luZ19tb2RlIHBhcmFtZXRlciA9IHBhcmFtZXRlci5kZWJ1Z19tb2RlXG4gIGxldCBzZXRfZGVidWdnaW5nX21vZGUgcGFyYW1ldGVyIGJvb2wgPSB7IHBhcmFtZXRlciB3aXRoIGRlYnVnX21vZGUgPSBib29sIH1cbiAgbGV0IGdldF9sb2dfc3RlcCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIubG9nX3N0ZXBcbiAgbGV0IHNldF9sb2dfc3RlcCBwYXJhbWV0ZXIgYm9vbCA9IHsgcGFyYW1ldGVyIHdpdGggbG9nX3N0ZXAgPSBib29sIH1cbiAgbGV0IGdldF9sb2dnZXIgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmxvZ2dlcl9zdGVwXG4gIGxldCBzZXRfbG9nZ2VyIHBhcmFtZXRlciBmbXQgPSB7IHBhcmFtZXRlciB3aXRoIGxvZ2dlcl9zdGVwID0gZm10IH1cbiAgbGV0IGdldF9vdXRfY2hhbm5lbCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIubG9nZ2VyX291dFxuICBsZXQgc2V0X291dF9jaGFubmVsIHBhcmFtZXRlciBmbXQgPSB7IHBhcmFtZXRlciB3aXRoIGxvZ2dlcl9vdXQgPSBmbXQgfVxuICBsZXQgZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlciA9IHBhcmFtZXRlci5sb2dnZXJfZXJyXG4gIGxldCBzZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyIGZtdCA9IHsgcGFyYW1ldGVyIHdpdGggbG9nZ2VyX2VyciA9IGZtdCB9XG4gIGxldCBnZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlciA9IHBhcmFtZXRlci5rYXNhXG5cbiAgbGV0IHNldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyIHBhcmFtZXRlcicgPVxuICAgIHsgcGFyYW1ldGVyJyB3aXRoIGthc2EgPSBwYXJhbWV0ZXIgfVxuXG4gIGxldCBkb193ZV91c2VfYnVja2V0X3NvcnQgcGFyYW1ldGVyID0gcGFyYW1ldGVyLnNvcnRfYWxnb19mb3Jfc3RvcmllcyA9IEJ1Y2tldFxuXG4gIGxldCB1c2VfYnVja2V0X3NvcnQgcGFyYW1ldGVyID1cbiAgICB7IHBhcmFtZXRlciB3aXRoIHNvcnRfYWxnb19mb3Jfc3RvcmllcyA9IEJ1Y2tldCB9XG5cbiAgbGV0IHVzZV9mdXNpb25fc29ydCBwYXJhbWV0ZXIgPVxuICAgIHsgcGFyYW1ldGVyIHdpdGggc29ydF9hbGdvX2Zvcl9zdG9yaWVzID0gRnVzaW9uIH1cblxuICBsZXQgYWx3YXlzX2Rpc2FtYmlndWF0ZSBwYXJhbWV0ZXIgPVxuICAgIHBhcmFtZXRlci5hbHdheXNfZGlzYW1iaWd1YXRlX2luaXRpYWxfc3RhdGVzXG5cbiAgbGV0IHNldF9hbHdheXNfZGlzYW1iaWd1YXRlIHBhcmFtZXRlciBib29sID1cbiAgICB7IHBhcmFtZXRlciB3aXRoIGFsd2F5c19kaXNhbWJpZ3VhdGVfaW5pdGlhbF9zdGF0ZXMgPSBib29sIH1cblxuICBsZXQgZG9fbm90X2JvdW5kX2l0dGVyYXRpb25zIHBhcmFtZXRlciA9XG4gICAgeyBwYXJhbWV0ZXIgd2l0aCBib3VuZF9vbl9pdHRlcmF0aW9uX251bWJlciA9IE5vbmUgfVxuXG4gIGxldCBzZXRfaXR0ZXJhdGlvbl9ib3VuZCBwYXJhbWV0ZXIgaW50ID1cbiAgICB7IHBhcmFtZXRlciB3aXRoIGJvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyID0gU29tZSBpbnQgfVxuXG4gIGxldCBnZXRfYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXIgcGFyYW1ldGVyID1cbiAgICBwYXJhbWV0ZXIuYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXJcblxuICBsZXQgZ2V0X3Byb2ZpbGluZ19sb2dnZXIgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmxvZ2dlcl9wcm9maWxpbmdcbiAgbGV0IHN0cmluZ19vZl9ydWxlX2lkIGhhbmRsZXIgaSA9IGhhbmRsZXIucnVsZV9uYW1lX2NhY2hlLihpKVxuICBsZXQgc3RyaW5nX29mX2FnZW50X2lkIGhhbmRsZXIgaSA9IGhhbmRsZXIuYWdlbnRfbmFtZV9jYWNoZS4oaSlcbiAgbGV0IGdldF9wcmVkaWNhdGVfbWFwIGhhbmRsZXIgPSBoYW5kbGVyLnN0ZXBzX2J5X2NvbHVtblxuICBsZXQgZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQgcGFyYW1ldGVyID0gcGFyYW1ldGVyLnRpbWVfaW5kZXBlbmRlbnRcbiAgbGV0IGdldF9ibGFja2xpc3RfZXZlbnRzIHBhcmFtZXRlciA9IHBhcmFtZXRlci5ibGFja2xpc3RfZXZlbnRzXG4gIGxldCBpc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuc2VydmVyXG4gIGxldCBnZXRfc2VydmVyX2NoYW5uZWwgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmxvZ2dlcl9zZXJ2ZXJcblxuICBsZXQgc2h1dF9kb3duX3NlcnZlcl9jaGFubmVsIHBhcmFtZXRlciA9XG4gICAge1xuICAgICAgcGFyYW1ldGVyIHdpdGhcbiAgICAgIGxvZ2dlcl9zZXJ2ZXIgPSBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXI7XG4gICAgICBpc19zZXJ2ZXJfY2hhbm5lbF9vbiA9IGZhbHNlO1xuICAgIH1cblxuICBsZXQgaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyID0gcGFyYW1ldGVyLmlzX3NlcnZlcl9jaGFubmVsX29uXG5cbiAgbGV0IHNhdmVfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgeCA9XG4gICAgcGFyYW1ldGVyLmthc2EuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIHhcblxuICBsZXQgZHVtcF9qc29uIHBhcmFtZXRlciBtZXNzYWdlID1cbiAgICBpZiBpc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXIgdGhlblxuICAgICAgcGFyYW1ldGVyLmR1bXBcbiAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgKFN0b3J5X2pzb24ubWVzc2FnZV90b19qc29uIG1lc3NhZ2UpKVxuXG4gIGxldCBzYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgeCA9XG4gICAgbGV0IGIsIGksIF9qLCBuX3N0b3JpZXMgPSB4IGluXG4gICAgbGV0ICgpID1cbiAgICAgIGR1bXBfanNvbiBwYXJhbWV0ZXJcbiAgICAgICAgKFN0b3J5X2pzb24uUHJvZ3Jlc3NcbiAgICAgICAgICAge1xuICAgICAgICAgICAgIFN0b3J5X2pzb24uYm9vbCA9XG4gICAgICAgICAgICAgICAoaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICBcInRydWVcIlxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIFwiZmFsc2VcIik7XG4gICAgICAgICAgICAgU3RvcnlfanNvbi5jdXJyZW50ID0gaTtcbiAgICAgICAgICAgICBTdG9yeV9qc29uLnRvdGFsID0gbl9zdG9yaWVzO1xuICAgICAgICAgICB9KVxuICAgIGluXG4gICAgcGFyYW1ldGVyLmthc2EuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9wcm9ncmVzc19iYXIgeFxuXG4gIGxldCByZXNldF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyID1cbiAgICBwYXJhbWV0ZXIua2FzYS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9wcm9ncmVzc19iYXIgKClcblxuICBsZXQgcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgPVxuICAgIHBhcmFtZXRlci5rYXNhLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgKClcblxuICBsZXQgc2V0X3NhdmVfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgZiA9XG4gICAge1xuICAgICAgcGFyYW1ldGVyIHdpdGhcbiAgICAgIGthc2EgPVxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1ldGVyLmthc2Egd2l0aFxuICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfY3VycmVudF9waGFzZV90aXRsZSA9IGY7XG4gICAgICAgIH07XG4gICAgfVxuXG4gIGxldCBzZXRfcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgZiA9XG4gICAge1xuICAgICAgcGFyYW1ldGVyIHdpdGhcbiAgICAgIGthc2EgPVxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1ldGVyLmthc2Egd2l0aFxuICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgPSBmO1xuICAgICAgICB9O1xuICAgIH1cblxuICBsZXQgc2V0X3NhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciBmID1cbiAgICB7XG4gICAgICBwYXJhbWV0ZXIgd2l0aFxuICAgICAga2FzYSA9XG4gICAgICAgIHsgcGFyYW1ldGVyLmthc2Egd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX3Byb2dyZXNzX2JhciA9IGYgfTtcbiAgICB9XG5cbiAgbGV0IHNldF9yZXNldF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyIGYgPVxuICAgIHtcbiAgICAgIHBhcmFtZXRlciB3aXRoXG4gICAgICBrYXNhID1cbiAgICAgICAgeyBwYXJhbWV0ZXIua2FzYSB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X3Byb2dyZXNzX2JhciA9IGYgfTtcbiAgICB9XG5cbiAgbGV0IHNhdmVfZXJyb3JfbG9nIHBhcmFtZXRlciB4ID1cbiAgICBwYXJhbWV0ZXIua2FzYS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2Vycm9yX2xpc3QgeFxuXG4gIGxldCBzZXRfc2F2ZV9lcnJvcl9sb2cgcGFyYW1ldGVyIGYgPVxuICAgIHtcbiAgICAgIHBhcmFtZXRlciB3aXRoXG4gICAgICBrYXNhID0geyBwYXJhbWV0ZXIua2FzYSB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfZXJyb3JfbGlzdCA9IGYgfTtcbiAgICB9XG5cbiAgbGV0IHB1c2hfanNvbiBwYXJhbWV0ZXIganNvbiA9XG4gICAgbWF0Y2ggcGFyYW1ldGVyLmpzb25fYnVmZmVyIHdpdGhcbiAgICB8IE5vbmUgLT4gZHVtcF9qc29uIHBhcmFtZXRlciBqc29uXG4gICAgfCBTb21lIHJlZiAtPiByZWYgOj0gRmlmby5wdXNoIGpzb24gIXJlZlxuXG4gIGxldCBwb3BfanNvbiBwYXJhbWV0ZXIgPVxuICAgIG1hdGNoIHBhcmFtZXRlci5qc29uX2J1ZmZlciB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcmVmIC0+XG4gICAgICBsZXQgZmlmbywgZWx0X29wdCA9IEZpZm8ucG9wICFyZWYgaW5cbiAgICAgIGxldCAoKSA9IHJlZiA6PSBmaWZvIGluXG4gICAgICBlbHRfb3B0XG5lbmRcbiIsIigqKlxuICAqIGthcHBhX2luc3RhbnRpYXRpb24ubWxcbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjkvMDgvMjAxMVxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAwMi8wOC8yMDE1XG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBkZWJ1Z19tb2RlID0gZmFsc2VcblxubGV0IGNvbXBvc2Vfd2l0aF9oYW5kbGVyIGYgZyBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciB4ID1cbiAgbGV0IGVycm9yLCB5ID0gZyBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciB4IGluXG4gIGYgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgeVxuXG5tb2R1bGUgUCA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHNcblxubW9kdWxlIHR5cGUgQ2Zsb3dfc2lnbmF0dXJlID0gc2lnXG4gIG1vZHVsZSBIIDogQ2Zsb3dfaGFuZGxlci5DZmxvd19oYW5kbGVyXG5cbiAgdHlwZSBhZ2VudF9pZCA9IGludFxuXG4gIG1vZHVsZSBBZ2VudElkU2V0IDogU2V0TWFwLlNldCB3aXRoIHR5cGUgZWx0ID0gYWdlbnRfaWRcblxuICB0eXBlIGludGVybmFsX3N0YXRlID0gaW50XG4gIHR5cGUgc2lkZV9lZmZlY3QgPSBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uc2l0ZSBsaXN0XG5cbiAgdmFsIGVtcHR5X3NpZGVfZWZmZWN0IDogc2lkZV9lZmZlY3RcblxuICB2YWwgYWdlbnRfbmFtZV9vZl9iaW5kaW5nX3R5cGUgOlxuICAgIEluc3RhbnRpYXRpb24uYmluZGluZ190eXBlIC0+IEluc3RhbnRpYXRpb24uYWdlbnRfbmFtZVxuXG4gIHZhbCBzaXRlX25hbWVfb2ZfYmluZGluZ190eXBlIDpcbiAgICBJbnN0YW50aWF0aW9uLmJpbmRpbmdfdHlwZSAtPiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuXG4gIHZhbCBhZ2VudF9pZF9vZl9hZ2VudCA6IEluc3RhbnRpYXRpb24uY29uY3JldGUgLT4gaW50XG4gIHZhbCBhZ2VudF9uYW1lX29mX2FnZW50IDogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSAtPiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWVcblxuICB2YWwgYWdlbnRfb2Zfc2l0ZSA6XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgLT4gSW5zdGFudGlhdGlvbi5jb25jcmV0ZVxuXG4gIHZhbCBhZ2VudF9pZF9vZl9zaXRlIDogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgLT4gaW50XG5cbiAgdmFsIGFnZW50X25hbWVfb2Zfc2l0ZSA6XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgLT4gSW5zdGFudGlhdGlvbi5hZ2VudF9uYW1lXG5cbiAgdmFsIHNpdGVfbmFtZV9vZl9zaXRlIDpcbiAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uc2l0ZSAtPiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuXG4gIHZhbCBidWlsZF9ncmlkIDpcbiAgICAoVHJhY2Uuc3RlcCAqIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlIGxpc3QpIGxpc3QgLT5cbiAgICBib29sIC0+XG4gICAgSC5oYW5kbGVyIC0+XG4gICAgQ2F1c2FsLmdyaWRcblxuICB2YWwgcHJpbnRfc2lkZV9lZmZlY3QgOiBMb2dnZXJzLnQgLT4gc2lkZV9lZmZlY3QgLT4gdW5pdFxuXG4gIHZhbCBzaWRlX2VmZmVjdF9vZl9saXN0IDpcbiAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uc2l0ZSBsaXN0IC0+IHNpZGVfZWZmZWN0XG5cbiAgdmFsIGdldF9pZF9vZl9yZWZpbmVkX3N0ZXAgOiBUcmFjZS5zdGVwIC0+IGludCBvcHRpb25cbiAgdmFsIGdldF90aW1lX29mX3JlZmluZWRfc3RlcCA6IFRyYWNlLnN0ZXAgLT4gZmxvYXQgb3B0aW9uXG5cbiAgdmFsIGxldmVsX29mX2V2ZW50IDpcbiAgICBQcmlvcml0eS5wcmlvcml0aWVzIG9wdGlvbiAtPlxuICAgIChUcmFjZS5zdGVwLCBhZ2VudF9pZCAtPiBib29sLCBQcmlvcml0eS5sZXZlbCkgSC5iaW5hcnlcblxuICB2YWwgZGlzYW1iaWd1YXRlIDogVHJhY2UudCAtPiBUcmFjZS50XG4gIHZhbCBjbGVhbl9ldmVudHMgOiBUcmFjZS50IC0+IFRyYWNlLnRcbiAgdmFsIGZpbGxfc2lwaG9uIDogVHJhY2UudCAtPiBUcmFjZS50XG4gIHZhbCBzcGxpdF9pbml0IDogVHJhY2UudCAtPiBUcmFjZS50XG4gIHZhbCBhZ2VudF9pZF9pbl9vYnMgOiAoVHJhY2Uuc3RlcCwgQWdlbnRJZFNldC50KSBILnVuYXJ5XG5lbmRcblxubW9kdWxlIENmbG93X2xpbmtlciA6IENmbG93X3NpZ25hdHVyZSA9IHN0cnVjdFxuICBtb2R1bGUgSCA9IENmbG93X2hhbmRsZXIuQ2Zsb3dfaGFuZGxlclxuICBtb2R1bGUgUEkgPSBJbnN0YW50aWF0aW9uXG5cbiAgdHlwZSBhZ2VudF9pZCA9IGludFxuICB0eXBlIHNpZGVfZWZmZWN0ID0gUEkuY29uY3JldGUgUEkuc2l0ZSBsaXN0XG5cbiAgbW9kdWxlIEFnZW50SWRNYXAgPSBNb2RzLkludE1hcFxuICBtb2R1bGUgQWdlbnRJZFNldCA9IE1vZHMuSW50U2V0XG4gIG1vZHVsZSBTaXRlTWFwID0gTW9kcy5JbnRNYXBcbiAgbW9kdWxlIFNpdGVTZXQgPSBNb2RzLkludFNldFxuXG4gIHR5cGUgaW50ZXJuYWxfc3RhdGUgPSBpbnRcblxuICBsZXQgZW1wdHlfc2lkZV9lZmZlY3QgPSBbXVxuICBsZXQgc2l0ZV9uYW1lX29mX2JpbmRpbmdfdHlwZSA9IHNuZFxuICBsZXQgYWdlbnRfbmFtZV9vZl9iaW5kaW5nX3R5cGUgPSBmc3RcbiAgbGV0IGFnZW50X2lkX29mX2FnZW50ID0gZnN0XG4gIGxldCBhZ2VudF9uYW1lX29mX2FnZW50ID0gc25kXG4gIGxldCBhZ2VudF9vZl9zaXRlID0gZnN0XG4gIGxldCBhZ2VudF9pZF9vZl9zaXRlIHggPSBhZ2VudF9pZF9vZl9hZ2VudCBAQCBhZ2VudF9vZl9zaXRlIHhcbiAgbGV0IGFnZW50X25hbWVfb2Zfc2l0ZSB4ID0gYWdlbnRfbmFtZV9vZl9hZ2VudCBAQCBhZ2VudF9vZl9zaXRlIHhcbiAgbGV0IHNpdGVfbmFtZV9vZl9zaXRlID0gc25kXG5cbiAgbGV0IGdldF9nZW5fb2ZfcmVmaW5lZF9zdGVwIGYgeCA9XG4gICAgbWF0Y2ggVHJhY2Uuc2ltdWxhdGlvbl9pbmZvX29mX3N0ZXAgeCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgYSAtPiBTb21lIChmIGEpXG5cbiAgbGV0IGdldF90aW1lX29mX3JlZmluZWRfc3RlcCB4ID1cbiAgICBnZXRfZ2VuX29mX3JlZmluZWRfc3RlcCAoZnVuIHggLT4geC5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZSkgeFxuXG4gIGxldCBnZXRfaWRfb2ZfcmVmaW5lZF9zdGVwIHggPVxuICAgIGdldF9nZW5fb2ZfcmVmaW5lZF9zdGVwIChmdW4geCAtPiB4LlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudCkgeFxuXG4gIGxldCBidWlsZF9ncmlkIGxpc3QgYm9vbCBoYW5kbGVyID1cbiAgICBsZXQgZW52ID0gaGFuZGxlci5ILmVudiBpblxuICAgIGxldCBlbXB0eV9zZXQgPSBbXSBpblxuICAgIGxldCBncmlkID0gQ2F1c2FsLmVtcHR5X2dyaWQgKCkgaW5cbiAgICBsZXQgZ3JpZCwgXywgXywgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChncmlkLCBzaWRlX2VmZmVjdCwgY291bnRlciwgc3VicykgKGssIHNpZGUpIC0+XG4gICAgICAgICAgbGV0IG1heWJlX3NpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICBmdW4gc2UgLT5cbiAgICAgICAgICAgIHNlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGZ1biBfIC0+XG4gICAgICAgICAgICBMaXN0LnJldl9hcHBlbmQgc2lkZV9lZmZlY3Qgc2lkZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyYW5zbGF0ZSB5ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IHkgeSBzdWJzIGluXG4gICAgICAgICAgbWF0Y2ggayB3aXRoXG4gICAgICAgICAgfCBUcmFjZS5SdWxlIChpZCwgZXZlbnQsIGluZm8pIC0+XG4gICAgICAgICAgICBsZXQgZXZlbnQnID0gUEkuc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IHRyYW5zbGF0ZSBldmVudCBpblxuICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICAgICAgICBtYXliZV9zaWRlX2VmZmVjdCBldmVudCcuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBDYXVzYWwucmVjb3JkXG4gICAgICAgICAgICAgICAgKCBUcmFjZS5SVUxFIGlkLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gZXZlbnQnLkluc3RhbnRpYXRpb24udGVzdHM7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGV2ZW50Jy5JbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQnLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0O1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQnLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGluZm8gKVxuICAgICAgICAgICAgICAgIGNvdW50ZXIgZW52IGdyaWQsXG4gICAgICAgICAgICAgIGVtcHR5X3NldCxcbiAgICAgICAgICAgICAgY291bnRlciArIDEsXG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmVtcHR5IClcbiAgICAgICAgICB8IFRyYWNlLlBlcnQgKGlkLCBldmVudCwgaW5mbykgLT5cbiAgICAgICAgICAgIGxldCBldmVudCcgPSBQSS5zdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfZXZlbnQgdHJhbnNsYXRlIGV2ZW50IGluXG4gICAgICAgICAgICBsZXQgc2lkZV9lZmZlY3RzX2RzdCA9XG4gICAgICAgICAgICAgIG1heWJlX3NpZGVfZWZmZWN0IGV2ZW50Jy5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3RcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIENhdXNhbC5yZWNvcmRcbiAgICAgICAgICAgICAgICAoIFRyYWNlLlBFUlQgaWQsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24udGVzdHMgPSBldmVudCcuSW5zdGFudGlhdGlvbi50ZXN0cztcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5hY3Rpb25zID0gZXZlbnQnLkluc3RhbnRpYXRpb24uYWN0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgICAgICAgICAgICAgICAgICBldmVudCcuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjO1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgICAgICAgICAgICAgICAgICBldmVudCcuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHM7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgaW5mbyApXG4gICAgICAgICAgICAgICAgY291bnRlciBlbnYgZ3JpZCxcbiAgICAgICAgICAgICAgZW1wdHlfc2V0LFxuICAgICAgICAgICAgICBjb3VudGVyICsgMSxcbiAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuZW1wdHkgKVxuICAgICAgICAgIHwgVHJhY2UuT2JzIChpZCwgdGVzdHMsIGluZm8pIC0+XG4gICAgICAgICAgICBsZXQgdGVzdHMnID1cbiAgICAgICAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgIChMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgICAgICAgICAgKFBJLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV90ZXN0IHRyYW5zbGF0ZSkpXG4gICAgICAgICAgICAgICAgdGVzdHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIENhdXNhbC5yZWNvcmRfb2JzIChpZCwgdGVzdHMnLCBpbmZvKSBzaWRlX2VmZmVjdCBjb3VudGVyIGdyaWQsXG4gICAgICAgICAgICAgIG1heWJlX3NpZGVfZWZmZWN0IGVtcHR5X3NldCxcbiAgICAgICAgICAgICAgY291bnRlciArIDEsXG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmVtcHR5IClcbiAgICAgICAgICB8IFRyYWNlLlN1YnMgKGEsIGIpIC0+XG4gICAgICAgICAgICBncmlkLCBzaWRlX2VmZmVjdCwgY291bnRlciwgTW9kcy5JbnRNYXAuYWRkIGEgYiBzdWJzXG4gICAgICAgICAgfCBUcmFjZS5Jbml0IGFjdGlvbnMgLT5cbiAgICAgICAgICAgIGxldCBhY3Rpb25zJyA9XG4gICAgICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAoUEkuc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgYWN0aW9uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggQ2F1c2FsLnJlY29yZF9pbml0XG4gICAgICAgICAgICAgICAgKFRyYWNlLmNyZWF0aW9uX29mX2FjdGlvbnMgc25kIGFjdGlvbnMnLCBhY3Rpb25zJylcbiAgICAgICAgICAgICAgICBjb3VudGVyIGVudiBncmlkLFxuICAgICAgICAgICAgICBzaWRlX2VmZmVjdCxcbiAgICAgICAgICAgICAgY291bnRlciArIDEsXG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmVtcHR5IClcbiAgICAgICAgICB8IFRyYWNlLkR1bW15IF8gLT4gZ3JpZCwgbWF5YmVfc2lkZV9lZmZlY3QgZW1wdHlfc2V0LCBjb3VudGVyLCBzdWJzKVxuICAgICAgICAoZ3JpZCwgZW1wdHlfc2V0LCAxLCBNb2RzLkludE1hcC5lbXB0eSlcbiAgICAgICAgbGlzdFxuICAgIGluXG4gICAgZ3JpZFxuXG4gIGxldCBjbGVhbl9ldmVudHMgPVxuICAgIExpc3QuZmlsdGVyIChmdW5jdGlvblxuICAgICAgfCBUcmFjZS5SdWxlIF8gfCBUcmFjZS5QZXJ0IF8gfCBUcmFjZS5PYnMgXyB8IFRyYWNlLkluaXQgXyAtPiB0cnVlXG4gICAgICB8IFRyYWNlLkR1bW15IF8gfCBUcmFjZS5TdWJzIF8gLT4gZmFsc2UpXG5cbiAgbGV0IHByaW50X3NpZGVfZWZmZWN0IGxvZyA9XG4gICAgTGlzdC5pdGVyIChmdW4gKChhLCBfKSwgYikgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiglaSwlaSksXCIgYSBiKVxuXG4gIGxldCBzaWRlX2VmZmVjdF9vZl9saXN0IGwgPSBsXG5cbiAgbGV0IGxldmVsX29mX2V2ZW50IHByaW9yaXR5X29wdCBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgZSBzZXQgPVxuICAgIG1hdGNoIHByaW9yaXR5X29wdCwgSC5nZXRfcHJpb3JpdGllcyBwYXJhbWV0ZXIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIFByaW9yaXR5LmhpZ2hlc3RcbiAgICB8IFNvbWUgcHJpb3JpdGllcywgXyB8IE5vbmUsIFNvbWUgcHJpb3JpdGllcyAtPlxuICAgICAgKG1hdGNoIGUgd2l0aFxuICAgICAgfCBUcmFjZS5PYnMgXyAtPiBlcnJvciwgbG9nX2luZm8sIHByaW9yaXRpZXMuUHJpb3JpdHkub3RoZXJfZXZlbnRzXG4gICAgICB8IFRyYWNlLlJ1bGUgXyB8IFRyYWNlLlBlcnQgXyAtPlxuICAgICAgICBsZXQgYWN0aW9ucyA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBlIGluXG4gICAgICAgIGxldCBwcmlvcml0eSA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gcHJpb3JpdHkgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBQSS5DcmVhdGUgKGFnLCBfKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhZ19pZCA9IGFnZW50X2lkX29mX2FnZW50IGFnIGluXG4gICAgICAgICAgICAgICAgaWYgc2V0IGFnX2lkIHRoZW5cbiAgICAgICAgICAgICAgICAgIHByaW9yaXR5XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgUHJpb3JpdHkubWluX2xldmVsIHByaW9yaXR5IHByaW9yaXRpZXMuUHJpb3JpdHkuY3JlYXRpb25cbiAgICAgICAgICAgICAgfCBQSS5SZW1vdmUgXyAtPlxuICAgICAgICAgICAgICAgIFByaW9yaXR5Lm1pbl9sZXZlbCBwcmlvcml0eSBwcmlvcml0aWVzLlByaW9yaXR5LnJlbW92YWxcbiAgICAgICAgICAgICAgfCBQSS5Nb2RfaW50ZXJuYWwgXyAtPiBwcmlvcml0eVxuICAgICAgICAgICAgICB8IFBJLkZyZWUgXyAtPlxuICAgICAgICAgICAgICAgIFByaW9yaXR5Lm1pbl9sZXZlbCBwcmlvcml0eSBwcmlvcml0aWVzLlByaW9yaXR5LnVuYmluZGluZ1xuICAgICAgICAgICAgICB8IFBJLkJpbmQgKF8sIF8pIHwgUEkuQmluZF90byAoXywgXykgLT4gcHJpb3JpdHkpXG4gICAgICAgICAgICBwcmlvcml0aWVzLlByaW9yaXR5Lm90aGVyX2V2ZW50cyAoZnN0IGFjdGlvbnMpXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgcHJpb3JpdHlcbiAgICAgIHwgVHJhY2UuRHVtbXkgXyB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkluaXQgXyAtPlxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIHByaW9yaXRpZXMuUHJpb3JpdHkuc3Vic3RpdHV0aW9uKVxuXG4gIGxldCBzdWJzX2FnZW50X2luX2V2ZW50IG1hcHBpbmcgbWFwcGluZycgPSBmdW5jdGlvblxuICAgICgqIG1hcHBpbmcgLT4gYmVmb3JlIHRoZSBldmVudCwgaW5jbHVkaW5nIGFnZW50cyB0byBiZSByZW1vdmVkICopXG4gICAgKCogbWFwcGluZycgLT4gYWZ0ZXIgdGhlIGV2ZW50LCBpbmNsdWRpbmcgYWdlbnRzIHRvIGJlIGNyZWF0ZWQgKilcbiAgICAoKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIG9uZSBhZ2VudCBpcyByZW1vdmVkLCBhbmQgb25lIGlzIGNyZWF0ZWQgd2l0aCB0aGUgc2FtZSBpZCBpbiBhIHNpbmdsZSBldmVudCAqKVxuICAgIHwgVHJhY2UuUnVsZSAoYSwgZXZlbnQsIGluZm8pIC0+XG4gICAgICBUcmFjZS5SdWxlXG4gICAgICAgICggYSxcbiAgICAgICAgICBQSS5zdWJzdF9tYXAyX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50XG4gICAgICAgICAgICAoZnVuIHggLT4gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcpXG4gICAgICAgICAgICAoZnVuIHggLT4gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcnKVxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgaW5mbyApXG4gICAgfCBUcmFjZS5QZXJ0IChhLCBldmVudCwgaW5mbykgLT5cbiAgICAgIFRyYWNlLlBlcnRcbiAgICAgICAgKCBhLFxuICAgICAgICAgIFBJLnN1YnN0X21hcDJfYWdlbnRfaW5fY29uY3JldGVfZXZlbnRcbiAgICAgICAgICAgIChmdW4geCAtPiBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCB4IHggbWFwcGluZylcbiAgICAgICAgICAgIChmdW4geCAtPiBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCB4IHggbWFwcGluZycpXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICBpbmZvIClcbiAgICB8IFRyYWNlLk9icyAoYSwgYiwgYykgLT5cbiAgICAgIFRyYWNlLk9ic1xuICAgICAgICAoIGEsXG4gICAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgKExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgIChQSS5zdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGVzdCAoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcpKSlcbiAgICAgICAgICAgIGIsXG4gICAgICAgICAgYyApXG4gICAgfCBUcmFjZS5Jbml0IGIgLT5cbiAgICAgIFRyYWNlLkluaXRcbiAgICAgICAgKExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgKFBJLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24gKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcnKSlcbiAgICAgICAgICAgYilcbiAgICB8IChUcmFjZS5EdW1teSBfIHwgVHJhY2UuU3VicyBfKSBhcyBldmVudCAtPiBldmVudFxuXG4gIGxldCBkaXNhbWJpZ3VhdGUgZXZlbnRfbGlzdCA9XG4gICAgbGV0IF8sIF8sIF8sIGV2ZW50X2xpc3RfcmV2ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKG1heF9pZCwgdXNlZCwgbWFwcGluZywgZXZlbnRfbGlzdCkgZXZlbnQgLT5cbiAgICAgICAgICBsZXQgbWF4X2lkLCB1c2VkLCBtYXBwaW5nJyA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIChtYXhfaWQsIHVzZWQsIG1hcHBpbmcpIHggLT5cbiAgICAgICAgICAgICAgICBpZiBBZ2VudElkU2V0Lm1lbSB4IHVzZWQgdGhlblxuICAgICAgICAgICAgICAgICAgKCBtYXhfaWQgKyAxLFxuICAgICAgICAgICAgICAgICAgICBBZ2VudElkU2V0LmFkZCAobWF4X2lkICsgMSkgdXNlZCxcbiAgICAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGQgeCAobWF4X2lkICsgMSkgbWFwcGluZyApXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbWF4IHggbWF4X2lkLCBBZ2VudElkU2V0LmFkZCB4IHVzZWQsIG1hcHBpbmcpXG4gICAgICAgICAgICAgIChtYXhfaWQsIHVzZWQsIG1hcHBpbmcpXG4gICAgICAgICAgICAgIChUcmFjZS5jcmVhdGlvbl9vZl9zdGVwIGV2ZW50KVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogbWFwcGluZyBjYW4gYmUgc2FmZWx5IGFwcGxpZWQgdG8gYWxsIGFnZW50cyBleGNlcHQgdGhlIG5ld2x5IGNyZWF0ZWQgb25lcyAqKVxuICAgICAgICAgICgqIG1hcHBpbmcnIGNhbiBiZSBzYWZlbHkgYXBwbGllZCB0byBhbGwgYWdlbnRzIGV4Y2VwdCB0aGUgb25lcyB0aGF0IGhhdmUgYmVlbiBqdXN0IHJlbW92ZXMgKilcbiAgICAgICAgICBsZXQgbGlzdCA9IHN1YnNfYWdlbnRfaW5fZXZlbnQgbWFwcGluZyBtYXBwaW5nJyBldmVudCA6OiBldmVudF9saXN0IGluXG4gICAgICAgICAgbWF4X2lkLCB1c2VkLCBtYXBwaW5nJywgbGlzdClcbiAgICAgICAgKDAsIEFnZW50SWRTZXQuZW1wdHksIEFnZW50SWRNYXAuZW1wdHksIFtdKVxuICAgICAgICBldmVudF9saXN0XG4gICAgaW5cbiAgICBMaXN0LnJldiBldmVudF9saXN0X3JldlxuXG4gIHR5cGUgYWdlbnRfaW5mbyA9IHtcbiAgICBpbml0aWFsX3N0ZXA6IFRyYWNlLnN0ZXA7XG4gICAgaW50ZXJuYWxfc3RhdGVzOiBpbnRlcm5hbF9zdGF0ZSBTaXRlTWFwLnQ7XG4gICAgYm91bmRfc2l0ZXM6IFNpdGVTZXQudDtcbiAgICBzaXRlc193aXRoX3dyb25nX2ludGVybmFsX3N0YXRlOiBTaXRlU2V0LnQ7XG4gIH1cblxuICBsZXQgY29udmVydF9pbml0IHJlbWFuZW50IHN0ZXBfbGlzdCBhY3Rpb25fbGlzdCA9XG4gICAgbGV0IGV4dHJhY3RfYWdlbnQgaWQgc291cCA9XG4gICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IFBJLkNyZWF0ZSAoKGlkJywgXyksIF8pXG4gICAgICAgICAgfCBQSS5Nb2RfaW50ZXJuYWwgKCgoaWQnLCBfKSwgXyksIF8pXG4gICAgICAgICAgfCBQSS5GcmVlICgoaWQnLCBfKSwgXylcbiAgICAgICAgICB8IFBJLkJpbmRfdG8gKCgoaWQnLCBfKSwgXyksIF8pIC0+XG4gICAgICAgICAgICBpZCA9IGlkJ1xuICAgICAgICAgIHwgUEkuQmluZCBfIHwgUEkuUmVtb3ZlIF8gLT4gZmFpbHdpdGggXCJQcm9ibGVtYXRpYyBpbml0aWFsIGV2ZW50XCIpXG4gICAgICAgIHNvdXBcbiAgICBpblxuICAgIGxldCByZWMgYXV4IHJlY3VyIGFjYyBzb3VwID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgKCAoaWYgc291cCA8PiBbXSB0aGVuXG4gICAgICAgICAgICAgVHJhY2UuSW5pdCBzb3VwIDo6IGFjY1xuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgYWNjKSxcbiAgICAgICAgICByZWN1ciApXG4gICAgICB8IFBJLkZyZWUgXyA6OiB0IC0+IGF1eCByZWN1ciBhY2Mgc291cCB0XG4gICAgICB8IChQSS5CaW5kIF8gfCBQSS5SZW1vdmUgXyB8IFBJLkJpbmRfdG8gXyB8IFBJLk1vZF9pbnRlcm5hbCBfKSA6OiB0IC0+XG4gICAgICAgIGF1eCByZWN1ciBhY2Mgc291cCB0XG4gICAgICB8IFBJLkNyZWF0ZSAoKGlkLCBfKSwgc2l0ZV9saXN0KSA6OiB0IC0+XG4gICAgICAgIGxldCB0aGlzLCBzb3VwJyA9IGV4dHJhY3RfYWdlbnQgaWQgc291cCBpblxuICAgICAgICBsZXQgc3RhbmRhbG9uZSA9XG4gICAgICAgICAgTGlzdC5mb3JfYWxsXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBQSS5DcmVhdGUgXyB8IFBJLkZyZWUgXyB8IFBJLk1vZF9pbnRlcm5hbCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgfCBQSS5CaW5kX3RvIF8gfCBQSS5CaW5kIF8gfCBQSS5SZW1vdmUgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgIHRoaXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRoaXMgPSBUcmFjZS5Jbml0IHRoaXMgaW5cbiAgICAgICAgaWYgc3RhbmRhbG9uZSB0aGVuIChcbiAgICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gbWFwIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBzLCBTb21lIHUgLT4gU2l0ZU1hcC5hZGQgcyB1IG1hcFxuICAgICAgICAgICAgICAgIHwgXywgTm9uZSAtPiBtYXApXG4gICAgICAgICAgICAgIFNpdGVNYXAuZW1wdHkgc2l0ZV9saXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYWdlbnRfaW5mbyA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGluaXRpYWxfc3RlcCA9IHRoaXM7XG4gICAgICAgICAgICAgIGludGVybmFsX3N0YXRlcyA9IG1hcDtcbiAgICAgICAgICAgICAgYm91bmRfc2l0ZXMgPSBTaXRlU2V0LmVtcHR5O1xuICAgICAgICAgICAgICBzaXRlc193aXRoX3dyb25nX2ludGVybmFsX3N0YXRlID0gU2l0ZVNldC5lbXB0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGF1eCAoQWdlbnRJZE1hcC5hZGQgaWQgYWdlbnRfaW5mbyByZWN1cikgKHRoaXMgOjogYWNjKSBzb3VwJyB0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGF1eCByZWN1ciAodGhpcyA6OiBhY2MpIHNvdXAnIHRcbiAgICBpblxuICAgIGF1eCByZW1hbmVudCBzdGVwX2xpc3QgYWN0aW9uX2xpc3QgYWN0aW9uX2xpc3RcblxuICBsZXQgYXNfaW5pdCByZXN0cmljdGlvbl9tYXAgYWdpZCBhZ2VudF9pbmZvID1cbiAgICBsZXQgcmVzdHJpY3Rpb24gPVxuICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgU2l0ZVNldC5lbXB0eSBhZ2lkIHJlc3RyaWN0aW9uX21hcFxuICAgIGluXG4gICAgU2l0ZVNldC5pc19lbXB0eSAoU2l0ZVNldC5pbnRlciBhZ2VudF9pbmZvLmJvdW5kX3NpdGVzIHJlc3RyaWN0aW9uKVxuICAgICYmIFNpdGVTZXQuaXNfZW1wdHlcbiAgICAgICAgIChTaXRlU2V0LmludGVyIGFnZW50X2luZm8uc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZSByZXN0cmljdGlvbilcblxuICBsZXQgbW9kX3NpdGUgcmVzdHJpY3Rpb25fbWFwIHNpdGUgc3RhdGUgKHJlbWFuZW50LCBzZXQpID1cbiAgICBsZXQgYWdpZCA9IGFnZW50X2lkX29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBzX25hbWUgPSBzaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbWF0Y2ggQWdlbnRJZE1hcC5maW5kX29wdGlvbiBhZ2lkIHJlbWFuZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gcmVtYW5lbnQsIHNldFxuICAgIHwgU29tZSBhZ19pbmZvIC0+XG4gICAgICAobWF0Y2ggU2l0ZU1hcC5maW5kX29wdGlvbiBzX25hbWUgYWdfaW5mby5pbnRlcm5hbF9zdGF0ZXMgd2l0aFxuICAgICAgfCBOb25lIC0+IHJlbWFuZW50LCBzZXRcbiAgICAgIHwgU29tZSBzdGF0ZV9yZWYgLT5cbiAgICAgICAgaWYgc3RhdGVfcmVmID0gc3RhdGUgKCogQmFjayB0byB0aGUgb3JpZ2luYWwgaW50ZXJuYWwgc3RhdGUqKSB0aGVuXG4gICAgICAgICAgaWYgU2l0ZVNldC5tZW0gc19uYW1lIGFnX2luZm8uc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZSB0aGVuIChcbiAgICAgICAgICAgIGxldCBhZ19pbmZvID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFnX2luZm8gd2l0aFxuICAgICAgICAgICAgICAgIHNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGUgPVxuICAgICAgICAgICAgICAgICAgU2l0ZVNldC5yZW1vdmUgc19uYW1lIGFnX2luZm8uc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCByZW1hbmVudCA9IEFnZW50SWRNYXAuYWRkIGFnaWQgYWdfaW5mbyByZW1hbmVudCBpblxuICAgICAgICAgICAgaWYgYXNfaW5pdCByZXN0cmljdGlvbl9tYXAgYWdpZCBhZ19pbmZvIHRoZW5cbiAgICAgICAgICAgICAgcmVtYW5lbnQsIEFnZW50SWRTZXQuYWRkIGFnaWQgc2V0XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgICAgZWxzZSBpZlxuICAgICAgICAgICgqIE5vIGxvbmdlciB0aGUgZGVmYXVsdCBzdGF0ZSAqKVxuICAgICAgICAgIFNpdGVTZXQubWVtIHNfbmFtZSBhZ19pbmZvLnNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGVcbiAgICAgICAgdGhlblxuICAgICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGFnX2luZm8gPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZ19pbmZvIHdpdGhcbiAgICAgICAgICAgICAgc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZSA9XG4gICAgICAgICAgICAgICAgU2l0ZVNldC5hZGQgc19uYW1lIGFnX2luZm8uc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZW1hbmVudCA9IEFnZW50SWRNYXAuYWRkIGFnaWQgYWdfaW5mbyByZW1hbmVudCBpblxuICAgICAgICAgIGlmIGFzX2luaXQgcmVzdHJpY3Rpb25fbWFwIGFnaWQgYWdfaW5mbyB0aGVuXG4gICAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmVtYW5lbnQsIEFnZW50SWRTZXQucmVtb3ZlIGFnaWQgc2V0XG4gICAgICAgICkpXG5cbiAgbGV0IHVuYmluZF9zaWRlIHJlc3RyaWN0aW9uX21hcCAoYWdpZCwgc19uYW1lKSAocmVtYW5lbnQsIHNldCkgPVxuICAgIG1hdGNoIEFnZW50SWRNYXAuZmluZF9vcHRpb24gYWdpZCByZW1hbmVudCB3aXRoXG4gICAgfCBOb25lIC0+IHJlbWFuZW50LCBzZXRcbiAgICB8IFNvbWUgYWdfaW5mbyAtPlxuICAgICAgaWYgU2l0ZVNldC5tZW0gc19uYW1lIGFnX2luZm8uYm91bmRfc2l0ZXMgdGhlbiAoXG4gICAgICAgIGxldCBhZ19pbmZvID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZ19pbmZvIHdpdGhcbiAgICAgICAgICAgIGJvdW5kX3NpdGVzID0gU2l0ZVNldC5yZW1vdmUgc19uYW1lIGFnX2luZm8uYm91bmRfc2l0ZXM7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVtYW5lbnQgPSBBZ2VudElkTWFwLmFkZCBhZ2lkIGFnX2luZm8gcmVtYW5lbnQgaW5cbiAgICAgICAgaWYgYXNfaW5pdCByZXN0cmljdGlvbl9tYXAgYWdpZCBhZ19pbmZvIHRoZW5cbiAgICAgICAgICByZW1hbmVudCwgQWdlbnRJZFNldC5hZGQgYWdpZCBzZXRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgICkgZWxzZVxuICAgICAgICByZW1hbmVudCwgc2V0XG5cbiAgbGV0IHVuYmluZCByZXN0cmljdGlvbl9tYXAgc2l0ZSByZW0gPVxuICAgIGxldCBhZ2lkID0gYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbGV0IHNfbmFtZSA9IHNpdGVfbmFtZV9vZl9zaXRlIHNpdGUgaW5cbiAgICB1bmJpbmRfc2lkZSByZXN0cmljdGlvbl9tYXAgKGFnaWQsIHNfbmFtZSkgcmVtXG5cbiAgbGV0IGJpbmQgcmVzdHJpY3Rpb25fbWFwIHNpdGUgKHJlbWFuZW50LCBzZXQpID1cbiAgICBsZXQgYWdpZCA9IGFnZW50X2lkX29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBzX25hbWUgPSBzaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbWF0Y2ggQWdlbnRJZE1hcC5maW5kX29wdGlvbiBhZ2lkIHJlbWFuZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gcmVtYW5lbnQsIHNldFxuICAgIHwgU29tZSBhZ19pbmZvIC0+XG4gICAgICBpZiBTaXRlU2V0Lm1lbSBzX25hbWUgYWdfaW5mby5ib3VuZF9zaXRlcyB0aGVuXG4gICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYWdfaW5mbyA9XG4gICAgICAgICAgeyBhZ19pbmZvIHdpdGggYm91bmRfc2l0ZXMgPSBTaXRlU2V0LmFkZCBzX25hbWUgYWdfaW5mby5ib3VuZF9zaXRlcyB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCByZW1hbmVudCA9IEFnZW50SWRNYXAuYWRkIGFnaWQgYWdfaW5mbyByZW1hbmVudCBpblxuICAgICAgICBpZiBhc19pbml0IHJlc3RyaWN0aW9uX21hcCBhZ2lkIGFnX2luZm8gdGhlblxuICAgICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJlbWFuZW50LCBBZ2VudElkU2V0LnJlbW92ZSBhZ2lkIHNldFxuICAgICAgKVxuXG4gIGxldCBzcGxpdF9pbml0IHJlZmluZWRfc3RlcF9saXN0ID1cbiAgICBsZXQgcmVtYW5lbnQgPSBBZ2VudElkTWFwLmVtcHR5IGluXG4gICAgZnN0XG4gICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgIChmdW4gKHN0ZXBfbGlzdCwgcmVtYW5lbnQpIHJlZmluZWRfc3RlcCAtPlxuICAgICAgICAgICBtYXRjaCByZWZpbmVkX3N0ZXAgd2l0aFxuICAgICAgICAgICB8IFRyYWNlLkluaXQgaW5pdCAtPiBjb252ZXJ0X2luaXQgcmVtYW5lbnQgc3RlcF9saXN0IGluaXRcbiAgICAgICAgICAgfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5PYnMgXyB8IFRyYWNlLkR1bW15IF8gfCBUcmFjZS5SdWxlIF9cbiAgICAgICAgICAgfCBUcmFjZS5QZXJ0IF8gLT5cbiAgICAgICAgICAgICByZWZpbmVkX3N0ZXAgOjogc3RlcF9saXN0LCByZW1hbmVudClcbiAgICAgICAgIChbXSwgcmVtYW5lbnQpXG4gICAgICAgICAoTGlzdC5yZXYgcmVmaW5lZF9zdGVwX2xpc3QpKVxuXG4gIGxldCBhZGRfaW5fc2NvcGUgc2l0ZSBzY29wZSA9XG4gICAgbGV0IGFnaWQgPSBhZ2VudF9pZF9vZl9zaXRlIHNpdGUgaW5cbiAgICBsZXQgc19uYW1lID0gc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBvbGRfc2V0ID0gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgU2l0ZVNldC5lbXB0eSBhZ2lkIHNjb3BlIGluXG4gICAgbGV0IG5ld19zZXQgPSBTaXRlU2V0LmFkZCBzX25hbWUgb2xkX3NldCBpblxuICAgIGlmIG9sZF9zZXQgPT0gbmV3X3NldCB0aGVuXG4gICAgICBzY29wZVxuICAgIGVsc2VcbiAgICAgIEFnZW50SWRNYXAuYWRkIGFnaWQgbmV3X3NldCBzY29wZVxuXG4gIGxldCBkZWFsX3dpdGhfdGVzdHMgdGVzdHMgc2NvcGUgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzY29wZSB4IC0+XG4gICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICB8IFBJLklzX0hlcmUgXyAtPiBzY29wZVxuICAgICAgICAgICB8IFBJLklzX0JvdW5kIHNpdGVcbiAgICAgICAgICAgfCBQSS5Jc19GcmVlIHNpdGVcbiAgICAgICAgICAgfCBQSS5IYXNfQmluZGluZ190eXBlIChzaXRlLCBfKVxuICAgICAgICAgICB8IFBJLkhhc19JbnRlcm5hbCAoc2l0ZSwgXykgLT5cbiAgICAgICAgICAgICBhZGRfaW5fc2NvcGUgc2l0ZSBzY29wZVxuICAgICAgICAgICB8IFBJLklzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICAgICAgYWRkX2luX3Njb3BlIHNpdGUxIChhZGRfaW5fc2NvcGUgc2l0ZTIgc2NvcGUpKSlcbiAgICAgIHNjb3BlIHRlc3RzXG5cbiAgbGV0IGZpbGxfc2lwaG9uIHJlZmluZWRfc3RlcF9saXN0ID1cbiAgICBsZXQgcmV2X3RyYWNlID0gTGlzdC5yZXYgcmVmaW5lZF9zdGVwX2xpc3QgaW5cbiAgICBsZXQgc2NvcGUgPSBBZ2VudElkTWFwLmVtcHR5IGluXG4gICAgbGV0IHJlZmluZWRfc3RlcF93aXRoX3Njb3BlX2xpc3QsIF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoc3RlcF9saXN0LCBzY29wZSkgcmVmaW5lZF9zdGVwIC0+XG4gICAgICAgICAgbWF0Y2ggcmVmaW5lZF9zdGVwIHdpdGhcbiAgICAgICAgICB8IFRyYWNlLkluaXQgXyAtPiAocmVmaW5lZF9zdGVwLCBzY29wZSkgOjogc3RlcF9saXN0LCBzY29wZVxuICAgICAgICAgIHwgVHJhY2UuUnVsZSAoXywgZXZlbnQsIF8pIHwgVHJhY2UuUGVydCAoXywgZXZlbnQsIF8pIC0+XG4gICAgICAgICAgICBsZXQgc2NvcGUnID0gZGVhbF93aXRoX3Rlc3RzIGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHMgc2NvcGUgaW5cbiAgICAgICAgICAgIChyZWZpbmVkX3N0ZXAsIHNjb3BlKSA6OiBzdGVwX2xpc3QsIHNjb3BlJ1xuICAgICAgICAgIHwgVHJhY2UuT2JzIChfLCB0ZXN0cywgXykgLT5cbiAgICAgICAgICAgIGxldCBzY29wZScgPSBkZWFsX3dpdGhfdGVzdHMgdGVzdHMgc2NvcGUgaW5cbiAgICAgICAgICAgIChyZWZpbmVkX3N0ZXAsIHNjb3BlKSA6OiBzdGVwX2xpc3QsIHNjb3BlJ1xuICAgICAgICAgIHwgVHJhY2UuU3VicyBfIHwgVHJhY2UuRHVtbXkgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICAgIChbXSwgc2NvcGUpIHJldl90cmFjZVxuICAgIGluXG4gICAgbGV0IHJlbWFuZW50ID0gQWdlbnRJZE1hcC5lbXB0eSBpblxuICAgIGxldCBhLCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKHN0ZXBfbGlzdCwgcmVtYW5lbnQpIHJlZmluZWRfc3RlcCAtPlxuICAgICAgICAgIG1hdGNoIHJlZmluZWRfc3RlcCB3aXRoXG4gICAgICAgICAgfCBUcmFjZS5Jbml0IGluaXQsIF8gLT4gY29udmVydF9pbml0IHJlbWFuZW50IHN0ZXBfbGlzdCBpbml0XG4gICAgICAgICAgfCBUcmFjZS5SdWxlIChfLCBldmVudCwgXyksIHNjb3BlIHwgVHJhY2UuUGVydCAoXywgZXZlbnQsIF8pLCBzY29wZSAtPlxuICAgICAgICAgICAgbGV0IHJlbWFuZW50LCBzZXQgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gcmVjdXIgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgUEkuQ3JlYXRlIF8gLT4gcmVjdXJcbiAgICAgICAgICAgICAgICAgIHwgUEkuTW9kX2ludGVybmFsIChzaXRlLCBzdGF0ZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgbW9kX3NpdGUgc2NvcGUgc2l0ZSBzdGF0ZSByZWN1clxuICAgICAgICAgICAgICAgICAgfCBQSS5CaW5kIChzaXRlMSwgc2l0ZTIpIHwgUEkuQmluZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgICAgICAgICBiaW5kIHNjb3BlIHNpdGUxIChiaW5kIHNjb3BlIHNpdGUyIHJlY3VyKVxuICAgICAgICAgICAgICAgICAgfCBQSS5GcmVlIHNpdGUgLT4gdW5iaW5kIHNjb3BlIHNpdGUgcmVjdXJcbiAgICAgICAgICAgICAgICAgIHwgUEkuUmVtb3ZlIF8gLT4gcmVjdXIpXG4gICAgICAgICAgICAgICAgKHJlbWFuZW50LCBBZ2VudElkU2V0LmVtcHR5KVxuICAgICAgICAgICAgICAgIGV2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCByZW1hbmVudCwgc2V0ID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0ICh1bmJpbmQgc2NvcGUpXG4gICAgICAgICAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0IChyZW1hbmVudCwgc2V0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggQWdlbnRJZFNldC5mb2xkXG4gICAgICAgICAgICAgICAgKGZ1biBpZCBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBBZ2VudElkTWFwLmZpbmRfb3B0aW9uIGlkIHJlbWFuZW50IHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSB4IC0+IHguaW5pdGlhbF9zdGVwIDo6IGxpc3RcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0KVxuICAgICAgICAgICAgICAgIHNldFxuICAgICAgICAgICAgICAgIChmc3QgcmVmaW5lZF9zdGVwIDo6IHN0ZXBfbGlzdCksXG4gICAgICAgICAgICAgIHJlbWFuZW50IClcbiAgICAgICAgICB8IFRyYWNlLk9icyBfLCBfIC0+IGZzdCByZWZpbmVkX3N0ZXAgOjogc3RlcF9saXN0LCByZW1hbmVudFxuICAgICAgICAgIHwgVHJhY2UuU3VicyBfLCBfIHwgVHJhY2UuRHVtbXkgXywgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICAgIChbXSwgcmVtYW5lbnQpIHJlZmluZWRfc3RlcF93aXRoX3Njb3BlX2xpc3RcbiAgICBpblxuICAgIExpc3QucmV2IGFcblxuICBsZXQgYWdlbnRfaWRfaW5fb2JzIF9wYXJhbWV0ZXIgX2hhbmRsZXIgaW5mbyBlcnJvciA9IGZ1bmN0aW9uXG4gICAgfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5SdWxlIF8gfCBUcmFjZS5QZXJ0IF8gfCBUcmFjZS5Jbml0IF8gfCBUcmFjZS5EdW1teSBfXG4gICAgICAtPlxuICAgICAgZXJyb3IsIGluZm8sIEFnZW50SWRTZXQuZW1wdHlcbiAgICB8IFRyYWNlLk9icyAoXywgdGVzdHMsIF8pIC0+XG4gICAgICAoIGVycm9yLFxuICAgICAgICBpbmZvLFxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIGwgeCAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICB8IFBJLklzX0hlcmUgeCAtPiBBZ2VudElkU2V0LmFkZCAoYWdlbnRfaWRfb2ZfYWdlbnQgeCkgbFxuICAgICAgICAgICAgICAgfCBQSS5Jc19Cb3VuZCBfIHwgUEkuSXNfRnJlZSBfIHwgUEkuSGFzX0JpbmRpbmdfdHlwZSBfXG4gICAgICAgICAgICAgICB8IFBJLklzX0JvdW5kX3RvIF8gfCBQSS5IYXNfSW50ZXJuYWwgXyAtPlxuICAgICAgICAgICAgICAgICBsKSlcbiAgICAgICAgICBBZ2VudElkU2V0LmVtcHR5IHRlc3RzIClcbmVuZFxuIiwiKCoqXG4gICogcG9fY3V0Lm1sXG4gICpcbiAgKiBDdXQgY29uY3VycmVudCBldmVudHM6IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERlZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAxNi8wNC8yMDEyXG4gICogTGFzdCBtb2RpZmljYXRpb246IDAyLzA4LzIwMTNcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXIgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgUG9fY3V0ID0gc2lnXG4gIG1vZHVsZSBLIDogS2FwcGFfaW5zdGFudGlhdGlvbi5DZmxvd19zaWduYXR1cmVcblxuICB2YWwgY3V0IDogKFRyYWNlLnQsIFRyYWNlLnQgKiBpbnQpIEsuSC51bmFyeVxuXG4gIHR5cGUgb25fdGhlX2ZseV9zdGF0ZVxuXG4gIHZhbCBpbml0X2N1dCA6IG9uX3RoZV9mbHlfc3RhdGVcbiAgdmFsIGN1dF9zdGVwIDogb25fdGhlX2ZseV9zdGF0ZSAtPiBUcmFjZS5zdGVwIC0+IG9uX3RoZV9mbHlfc3RhdGVcbiAgdmFsIGZpbmFsaXplX2N1dCA6IG9uX3RoZV9mbHlfc3RhdGUgLT4gVHJhY2Uuc3RlcCBsaXN0ICogaW50XG5cbiAgdmFsIGN1dF9yZXZfdHJhY2UgOlxuICAgIFRyYWNlLnN0ZXAgbGlzdCAoKnJldmVyc2Ugb3JkZXIqKSAtPlxuICAgIFRyYWNlLnN0ZXAgbGlzdCAoKiBjb3JyZWN0IG9yZGVyICopICogaW50XG5lbmRcblxubW9kdWxlIFBvX2N1dCA6IFBvX2N1dCA9IHN0cnVjdFxuICBtb2R1bGUgSyA9IEthcHBhX2luc3RhbnRpYXRpb24uQ2Zsb3dfbGlua2VyXG5cbiAgdHlwZSBwcmVkaWNhdGVfaW5mbyA9XG4gICAgfCBIZXJlIG9mIEsuYWdlbnRfaWRcbiAgICB8IEJvdW5kX3NpdGUgb2YgSy5hZ2VudF9pZCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgfCBJbnRlcm5hbF9zdGF0ZSBvZiBLLmFnZW50X2lkICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcblxuICBtb2R1bGUgUFNNID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IHByZWRpY2F0ZV9pbmZvXG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgcHJpbnQgXyBfID0gKClcbiAgZW5kKVxuXG4gIG1vZHVsZSBQUyA9IFBTTS5TZXRcblxuICBsZXQgY3JlYXRlZF9wcmVkaWNhdGVzX29mX2FjdGlvbiBhY3Rpb24gPVxuICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoYWcsIGludGVyZmFjZSkgLT5cbiAgICAgIGxldCBhZ19pZCA9IEsuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbGlzdCAoc19pZCwgb3B0KSAtPlxuICAgICAgICAgIGxldCBsaXN0ID0gQm91bmRfc2l0ZSAoYWdfaWQsIHNfaWQpIDo6IGxpc3QgaW5cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgfCBTb21lIF8gLT4gSW50ZXJuYWxfc3RhdGUgKGFnX2lkLCBzX2lkKSA6OiBsaXN0KVxuICAgICAgICBbIEhlcmUgYWdfaWQgXSBpbnRlcmZhY2VcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZCBfIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF8gfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgXyB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIF8gLT5cbiAgICAgIFtdXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfYWN0aW9uIGFjdGlvbiA9XG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIChhZywgaW50ZXJmYWNlKSAtPlxuICAgICAgbGV0IGFnX2lkID0gSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBsaXN0IChzX2lkLCBvcHQpIC0+XG4gICAgICAgICAgbGV0IGxpc3QgPSBCb3VuZF9zaXRlIChhZ19pZCwgc19pZCkgOjogbGlzdCBpblxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICB8IFNvbWUgXyAtPiBJbnRlcm5hbF9zdGF0ZSAoYWdfaWQsIHNfaWQpIDo6IGxpc3QpXG4gICAgICAgIFsgSGVyZSBhZ19pZCBdIGludGVyZmFjZVxuICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIF8pIC0+XG4gICAgICBbIEludGVybmFsX3N0YXRlIChLLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKSBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHMxLCBzMikgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHMxLCBzMikgLT5cbiAgICAgIFtcbiAgICAgICAgQm91bmRfc2l0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHMxLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMxKTtcbiAgICAgICAgQm91bmRfc2l0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHMyLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMyKTtcbiAgICAgIF1cbiAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBzIC0+XG4gICAgICBbIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMpIF1cbiAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF8gLT4gW11cblxuICBsZXQgcHJlZGljYXRlc19vZl90ZXN0IHRlc3QgPVxuICAgIG1hdGNoIHRlc3Qgd2l0aFxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGFnZW50IC0+IFsgSGVyZSAoSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCkgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgKHNpdGUsIF8pIC0+XG4gICAgICBbIEludGVybmFsX3N0YXRlIChLLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKSBdXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgc1xuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBzXG4gICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKHMsIF8pIC0+XG4gICAgICBbIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMpIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIFtcbiAgICAgICAgQm91bmRfc2l0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHMxLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMxKTtcbiAgICAgICAgQm91bmRfc2l0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHMyLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMyKTtcbiAgICAgIF1cblxuICBsZXQgcHJlZGljYXRlc19vZl9zaWRlX2VmZmVjdHMgc2lkZXMgPVxuICAgIExpc3QubWFwIChmdW4gKChhZ19pZCwgXyksIHNfaWQpIC0+IEJvdW5kX3NpdGUgKGFnX2lkLCBzX2lkKSkgc2lkZXNcblxuICB0eXBlIG9uX3RoZV9mbHlfc3RhdGUgPSBQUy50ICogVHJhY2Uuc3RlcCBsaXN0ICogaW50XG5cbiAgbGV0IGluaXRfY3V0ID0gUFMuZW1wdHksIFtdLCAwXG4gIGxldCBmaW5hbGl6ZV9jdXQgKF9hLCBiLCBjKSA9IGIsIGNcblxuICBsZXQgY3V0X3N0ZXAgKHNlZW4sIGtlcHQsIG5fY3V0KSBldmVudCA9XG4gICAgbGV0IHJlYyBrZWVwIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICB8IHQwIDo6IHEwIC0+XG4gICAgICAgIGxldCByZWMgYXV4MSBsID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGtlZXAgcTBcbiAgICAgICAgICB8IHQxIDo6IHExIC0+XG4gICAgICAgICAgICBpZiBQUy5tZW0gdDEgc2VlbiB0aGVuXG4gICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYXV4MSBxMVxuICAgICAgICBpblxuICAgICAgICBhdXgxIChwcmVkaWNhdGVzX29mX2FjdGlvbiB0MClcbiAgICBpblxuICAgIGxldCByZWMga2VlcDIgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZmFsc2VcbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIGlmIFBTLm1lbSB0IHNlZW4gdGhlblxuICAgICAgICAgIHRydWVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGtlZXAyIHFcbiAgICBpblxuICAgIGxldCBhY3Rpb25fbGlzdCwgXyA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBldmVudCBpblxuICAgIGxldCBzZWVuID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gc2VlbiBhY3Rpb24gLT5cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBzZWVuIGVsdCAtPiBQUy5yZW1vdmUgZWx0IHNlZW4pXG4gICAgICAgICAgICBzZWVuXG4gICAgICAgICAgICAoY3JlYXRlZF9wcmVkaWNhdGVzX29mX2FjdGlvbiBhY3Rpb24pKVxuICAgICAgICBzZWVuIGFjdGlvbl9saXN0XG4gICAgaW5cbiAgICBsZXQgYWN0aW9ucywgXyA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBldmVudCBpblxuICAgIGlmXG4gICAgICBUcmFjZS5zdGVwX2lzX29icyBldmVudCB8fCBrZWVwIGFjdGlvbnNcbiAgICAgIHx8IGtlZXAyIChwcmVkaWNhdGVzX29mX3NpZGVfZWZmZWN0cyAoVHJhY2Uuc2lkZV9lZmZlY3RzX29mX3N0ZXAgZXZlbnQpKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGtlcHQgPSBldmVudCA6OiBrZXB0IGluXG4gICAgICBsZXQgdGVzdHMgPSBUcmFjZS50ZXN0c19vZl9zdGVwIGV2ZW50IGluXG4gICAgICBsZXQgdGVzdHMnID1cbiAgICAgICAgcHJlZGljYXRlc19vZl9zaWRlX2VmZmVjdHMgKFRyYWNlLnNpZGVfZWZmZWN0c19vZl9zdGVwIGV2ZW50KVxuICAgICAgaW5cbiAgICAgIGxldCBzZWVuID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIHNlZW4gdGVzdCAtPlxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biBzZWVuIHByZWRpY2F0ZV9pbmZvIC0+IFBTLmFkZCBwcmVkaWNhdGVfaW5mbyBzZWVuKVxuICAgICAgICAgICAgICBzZWVuIChwcmVkaWNhdGVzX29mX3Rlc3QgdGVzdCkpXG4gICAgICAgICAgc2VlbiB0ZXN0c1xuICAgICAgaW5cbiAgICAgIGxldCBzZWVuID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIHNlZW4gcHJlZGljYXRlX2luZm8gLT4gUFMuYWRkIHByZWRpY2F0ZV9pbmZvIHNlZW4pXG4gICAgICAgICAgc2VlbiB0ZXN0cydcbiAgICAgIGluXG4gICAgICBzZWVuLCBrZXB0LCBuX2N1dFxuICAgICkgZWxzZVxuICAgICAgc2Vlbiwga2VwdCwgbl9jdXQgKyAxXG5cbiAgbGV0IGN1dF9yZXZfdHJhY2UgcmV2X2V2ZW50X2xpc3QgPVxuICAgIGxldCBfLCBldmVudF9saXN0LCBuID0gTGlzdC5mb2xkX2xlZnQgY3V0X3N0ZXAgaW5pdF9jdXQgcmV2X2V2ZW50X2xpc3QgaW5cbiAgICBldmVudF9saXN0LCBuXG5cbiAgbGV0IGN1dCBfcGFyYW1ldGVyIF9oYW5kbGVyIGluZm8gZXJyb3IgZXZlbnRfbGlzdCA9XG4gICAgbGV0IHRyYWNlID0gY3V0X3Jldl90cmFjZSAoTGlzdC5yZXYgZXZlbnRfbGlzdCkgaW5cbiAgICBlcnJvciwgaW5mbywgdHJhY2VcbmVuZFxuIiwiKCoqXG4gICAqIHBzZXVkb19pbnZlcnNlLm1sXG4gICAqXG4gICAqIEN1dCBwc2V1ZG8gaW52ZXJzZSBldmVudHM6IGEgbW9kdWxlIGZvciBLYVNpbVxuICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICAqXG4gICAqIEthU2ltXG4gICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGVkZXJvdCwgQ05SU1xuICAgKlxuICAgKiBDcmVhdGlvbjogMTcvMDQvMjAxMlxuICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMjEvMTEvMjAxM1xuICAgKiAqXG4gICAqIFNvbWUgcGFyYW1ldGVyIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgICpcbiAgICogQ29weXJpZ2h0IDIwMTEsMjAxMiwgMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgQ3V0X3BzZXVkb19pbnZlcnNlID0gc2lnXG4gIG1vZHVsZSBQbyA6IFBvX2N1dC5Qb19jdXRcbiAgbW9kdWxlIEEgOiBHZW5BcnJheS5HZW5BcnJheVxuXG4gIHZhbCBjdXQgOiAoVHJhY2UudCwgVHJhY2UudCAqIGludCkgUG8uSy5ILnVuYXJ5XG5lbmRcblxubW9kdWxlIFBzZXVkb19pbnYgOiBDdXRfcHNldWRvX2ludmVyc2UgPSBzdHJ1Y3RcbiAgbW9kdWxlIFBvID0gUG9fY3V0LlBvX2N1dFxuICBtb2R1bGUgQSA9IE1vZHMuRHluQXJyYXlcbiAgbW9kdWxlIENQcmVkaWNhdGVNYXAgPSBQcmVkaWNhdGVfbWFwcy5RUHJlZGljYXRlTWFwXG4gIG1vZHVsZSBQcmVkaWNhdGVNYXAgPSBQcmVkaWNhdGVfbWFwcy5QcmVkaWNhdGVNYXBcblxuICB0eXBlIHByZWRpY2F0ZV9pbmZvID0gUHJlZGljYXRlX21hcHMucHJlZGljYXRlX2luZm9cbiAgdHlwZSBzdGVwX2lkID0gaW50XG5cbiAgbGV0IHN0cmluZ19vZl9wcmVkaWNhdGVfaW5mbyA9IFByZWRpY2F0ZV9tYXBzLnN0cmluZ19vZl9wcmVkaWNhdGVfaW5mb1xuXG4gIGxldCBzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIHBpID1cbiAgICBtYXRjaCBwaSB3aXRoXG4gICAgfCBQcmVkaWNhdGVfbWFwcy5JbnRlcm5hbF9zdGF0ZV9pcyBzIC0+IHN0cmluZ19vZl9pbnQgc1xuICAgIHwgUHJlZGljYXRlX21hcHMuVW5kZWZpbmVkIC0+IFwiI1VuZGVmXCJcbiAgICB8IFByZWRpY2F0ZV9tYXBzLlByZXNlbnQgLT4gXCIjSGVyZVwiXG4gICAgfCBQcmVkaWNhdGVfbWFwcy5GcmVlIC0+IFwiI0ZyZWVcIlxuICAgIHwgUHJlZGljYXRlX21hcHMuQm91bmRfdG8gKGFnLCBhZ2VudF9uYW1lLCBzKSAtPlxuICAgICAgXCJCb3VuZF90byBcIiBeIHN0cmluZ19vZl9pbnQgYWcgXiBcIiBcIiBeIHN0cmluZ19vZl9pbnQgYWdlbnRfbmFtZSBeIFwiIFwiXG4gICAgICBeIHN0cmluZ19vZl9pbnQgc1xuXG4gIHR5cGUgcHNldWRvX2ludl9ibGFja2JvYXJkID0ge1xuICAgIHN0ZXBzX2J5X2NvbHVtbjpcbiAgICAgIChzdGVwX2lkICogUHJlZGljYXRlX21hcHMucHJlZGljYXRlX3ZhbHVlICogYm9vbCkgbGlzdCBDUHJlZGljYXRlTWFwLnQ7XG4gICAgbnN0ZXBzOiBzdGVwX2lkO1xuICAgIHByZWRpY2F0ZXNfb2ZfZXZlbnQ6IHByZWRpY2F0ZV9pbmZvIGxpc3QgQS50O1xuICAgIGlzX3JlbW92ZV9hY3Rpb246IGJvb2wgQS50O1xuICAgIG1vZGlmaWVkX3ByZWRpY2F0ZXNfb2ZfZXZlbnQ6IGludCBBLnQ7XG4gICAgaGFzX21vZF93aXRob3V0X3Rlc3Q6IGJvb2wgQS50O1xuICAgIGV2ZW50OiBUcmFjZS5zdGVwIG9wdGlvbiBBLnQ7XG4gICAgYWdlbnRfbGlzdDogaW50IGxpc3Q7XG4gIH1cblxuICBsZXQgaW5pdF9ibGFja2JvYXJkIG5fc3RlcHMgaGFuZGxlciA9XG4gICAge1xuICAgICAgc3RlcHNfYnlfY29sdW1uID0gUG8uSy5ILmdldF9wcmVkaWNhdGVfbWFwIGhhbmRsZXI7XG4gICAgICBuc3RlcHMgPSAtMTtcbiAgICAgIHByZWRpY2F0ZXNfb2ZfZXZlbnQgPSBBLm1ha2Ugbl9zdGVwcyBbXTtcbiAgICAgIGlzX3JlbW92ZV9hY3Rpb24gPSBBLm1ha2Ugbl9zdGVwcyBmYWxzZTtcbiAgICAgIGhhc19tb2Rfd2l0aG91dF90ZXN0ID0gQS5tYWtlIG5fc3RlcHMgZmFsc2U7XG4gICAgICBtb2RpZmllZF9wcmVkaWNhdGVzX29mX2V2ZW50ID0gQS5jcmVhdGUgbl9zdGVwcyAwO1xuICAgICAgZXZlbnQgPSBBLm1ha2Ugbl9zdGVwcyBOb25lO1xuICAgICAgYWdlbnRfbGlzdCA9IFtdO1xuICAgIH1cblxuICBsZXQgX3ByaW50X2JsYWNrYm9hcmQgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgIFwiQmxhY2tib2FyZCBmb3IgcmVtb3ZpbmcgcHNldWRvIGludmVyc2UgZWxlbWVudFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICBcIm5fZXZlbnRzOiAlaVwiIGJsYWNrYm9hcmQubnN0ZXBzXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICBcIlN0ZXBzX2J5X2NvbHVtbjpcIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIENQcmVkaWNhdGVNYXAuaXRlclxuICAgICAgICAoZnVuIHByZWQgbGlzdCAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIiVzOiBcIlxuICAgICAgICAgICAgICAoc3RyaW5nX29mX3ByZWRpY2F0ZV9pbmZvIHByZWQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgKGZ1biAoZWlkLCB2YWx1ZSwgYm9vbCkgLT5cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKCVpLCVzJXMpLFwiIGVpZFxuICAgICAgICAgICAgICAgICAgKHN0cmluZ19vZl9wcmVkaWNhdGVfdmFsdWUgdmFsdWUpXG4gICAgICAgICAgICAgICAgICAoaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICBcIihNb2QpXCJcbiAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICBcIlwiKSlcbiAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikpXG4gICAgICAgIGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBcIkV2ZW50czpcIlxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgICBsZXQgcmVjIGF1eCBrID1cbiAgICAgIGlmIGsgPSBibGFja2JvYXJkLm5zdGVwcyB0aGVuXG4gICAgICAgIGVycm9yXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGV2ZW50ID1cbiAgICAgICAgICB0cnkgQS5nZXQgYmxhY2tib2FyZC5ldmVudCBrXG4gICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIkVSUkVVUiAlaSAxMjNcIiBrXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICByYWlzZSBFeGl0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBfID1cbiAgICAgICAgICBtYXRjaCBldmVudCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yXG4gICAgICAgICAgfCBTb21lIGV2ZW50IC0+XG4gICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgXCJFdmVudCAlaSVhXCIga1xuICAgICAgICAgICAgICAgICAgIChUcmFjZS5wcmludF9zdGVwIH5jb21wYWN0OmZhbHNlIH5lbnY6aGFuZGxlci5Qby5LLkguZW52KVxuICAgICAgICAgICAgICAgICAgIGV2ZW50XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgXCJQcmVkaWNhdGVzOiBcIlxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBsaXN0ID0gQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVzX29mX2V2ZW50IGsgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAgICAgIChmdW4gcGlkIC0+XG4gICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICBcIiVzLFwiXG4gICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmdfb2ZfcHJlZGljYXRlX2luZm8gcGlkKSlcbiAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgYm9vbCA9IEEuZ2V0IGJsYWNrYm9hcmQuaXNfcmVtb3ZlX2FjdGlvbiBrIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBpZiBib29sIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICBcImNvbnRhaW4gYSBkZWxldGlvblwiXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBpbnQgPSBBLmdldCBibGFja2JvYXJkLm1vZGlmaWVkX3ByZWRpY2F0ZXNfb2ZfZXZlbnQgayBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgIFwiJWkgbW9kaWZpZWQgcHJlZGljYXRlc1wiIGludFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgICB3aXRoIF8gLT4gZXJyb3IpXG4gICAgICAgIGluXG4gICAgICAgIGF1eCAoayArIDEpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgZXJyb3IgPSBhdXggMCBpblxuICAgIGVycm9yXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfYWN0aW9uIF9wYXJhbWV0ZXIgX2hhbmRsZXIgX2Vycm9yIGJsYWNrYm9hcmQgYWN0aW9uID1cbiAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKGFnLCBpbnRlcmZhY2UpIC0+XG4gICAgICBsZXQgYWdfaWQgPSBQby5LLmFnZW50X2lkX29mX2FnZW50IGFnIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkID0gUHJlZGljYXRlX21hcHMuSGVyZSBhZ19pZCBpblxuICAgICAgbGV0IGxpc3QxLCBsaXN0MiA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAobGlzdDEsIGxpc3QyKSAoc19pZCwgb3B0KSAtPlxuICAgICAgICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkLCBzX2lkKSBpblxuICAgICAgICAgICAgbGV0IGxpc3QxID0gKHByZWRpY2F0ZV9pZCwgUHJlZGljYXRlX21hcHMuRnJlZSkgOjogbGlzdDEgaW5cbiAgICAgICAgICAgIGxldCBsaXN0MiA9IHByZWRpY2F0ZV9pZCA6OiBsaXN0MiBpblxuICAgICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0MSwgbGlzdDJcbiAgICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5JbnRlcm5hbF9zdGF0ZSAoYWdfaWQsIHNfaWQpIGluXG4gICAgICAgICAgICAgICggKHByZWRpY2F0ZV9pZCwgUHJlZGljYXRlX21hcHMuSW50ZXJuYWxfc3RhdGVfaXMgeCkgOjogbGlzdDEsXG4gICAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIDo6IGxpc3QyICkpXG4gICAgICAgICAgKFsgcHJlZGljYXRlX2lkLCBQcmVkaWNhdGVfbWFwcy5QcmVzZW50IF0sIFsgcHJlZGljYXRlX2lkIF0pXG4gICAgICAgICAgaW50ZXJmYWNlXG4gICAgICBpblxuICAgICAgKCB7IGJsYWNrYm9hcmQgd2l0aCBhZ2VudF9saXN0ID0gYWdfaWQgOjogYmxhY2tib2FyZC5hZ2VudF9saXN0IH0sXG4gICAgICAgIGxpc3QxLFxuICAgICAgICBsaXN0MixcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHRydWUgKVxuICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIGludCkgLT5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBQcmVkaWNhdGVfbWFwcy5JbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgIChQby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKVxuICAgICAgaW5cbiAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgWyBwcmVkaWNhdGVfaWQsIFByZWRpY2F0ZV9tYXBzLkludGVybmFsX3N0YXRlX2lzIGludCBdLFxuICAgICAgICBbXSxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGZhbHNlIClcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQxID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQxLCBzaXRlX2lkMSkgaW5cbiAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIFByZWRpY2F0ZV9tYXBzLkJvdW5kX3RvIChhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgIF0sXG4gICAgICAgIFtdLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgZmFsc2UgKVxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzMSwgczIpIC0+XG4gICAgICBsZXQgYWdfaWQxID0gUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgYWdfaWQyID0gUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgYWdlbnRfbmFtZTEgPSBQby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQxID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQxLCBzaXRlX2lkMSkgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQyID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQyLCBzaXRlX2lkMikgaW5cbiAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIFByZWRpY2F0ZV9tYXBzLkJvdW5kX3RvIChhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgICAgcHJlZGljYXRlX2lkMiwgUHJlZGljYXRlX21hcHMuQm91bmRfdG8gKGFnX2lkMSwgYWdlbnRfbmFtZTEsIHNpdGVfaWQxKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10sXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBmYWxzZSApXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpIGluXG4gICAgICBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgUHJlZGljYXRlX21hcHMuRnJlZSBdLCBbXSwgZmFsc2UsIGZhbHNlXG4gICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBhZyAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkhlcmUgYWdfaWQgaW5cbiAgICAgIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBQcmVkaWNhdGVfbWFwcy5VbmRlZmluZWQgXSwgW10sIHRydWUsIGZhbHNlXG5cbiAgbGV0IG5vX3JlbW92ZSBfcGFyYW1ldGVyIF9oYW5kbGVyIF9lcnJvciBibGFja2JvYXJkIGVpZCA9XG4gICAgbm90IChBLmdldCBibGFja2JvYXJkLmlzX3JlbW92ZV9hY3Rpb24gZWlkKVxuXG4gIGxldCBzYW1lX2xlbmd0aCBfcGFyYW1ldGVyIF9oYW5kbGVyIF9lcnJvciBibGFja2JvYXJkIGVpZDEgZWlkMiA9XG4gICAgQS5nZXQgYmxhY2tib2FyZC5oYXNfbW9kX3dpdGhvdXRfdGVzdCBlaWQxXG4gICAgfHwgQS5nZXQgYmxhY2tib2FyZC5oYXNfbW9kX3dpdGhvdXRfdGVzdCBlaWQyXG4gICAgfHwgQS5nZXQgYmxhY2tib2FyZC5tb2RpZmllZF9wcmVkaWNhdGVzX29mX2V2ZW50IGVpZDFcbiAgICAgICA9IEEuZ2V0IGJsYWNrYm9hcmQubW9kaWZpZWRfcHJlZGljYXRlc19vZl9ldmVudCBlaWQyXG5cbiAgbGV0IGNsZWFuIHQgY29sdW1uIGJsYWNrYm9hcmQgPVxuICAgIG1hdGNoIGNvbHVtbiB3aXRoXG4gICAgfCBbXSAtPiBjb2x1bW4sIGJsYWNrYm9hcmRcbiAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgbGV0IHJlYyBhdXggbGlzdCBib29sID1cbiAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgIHwgKGVpZCwgXywgZmFsc2UpIDo6IHEgLT5cbiAgICAgICAgICBpZiBlaWQgPSAtMSB0aGVuXG4gICAgICAgICAgICBsaXN0LCBib29sXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCBBLmdldCBibGFja2JvYXJkLmV2ZW50IGVpZCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gYXV4IHEgdHJ1ZVxuICAgICAgICAgICAgfCBfIC0+IGxpc3QsIGJvb2xcbiAgICAgICAgICApXG4gICAgICAgIHwgXyAtPiBsaXN0LCBib29sXG4gICAgICBpblxuICAgICAgbGV0IGxpc3QsIGJvb2wgPSBhdXggdGFpbCBmYWxzZSBpblxuICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgbGV0IGNvbHVtbiA9IGhlYWQgOjogbGlzdCBpblxuICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICBzdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICAgICAgICBDUHJlZGljYXRlTWFwLmFkZCB0IGNvbHVtbiBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGNvbHVtbiwgYmxhY2tib2FyZFxuICAgICAgKSBlbHNlXG4gICAgICAgIGNvbHVtbiwgYmxhY2tib2FyZFxuXG4gIGxldCBjaGVjayBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgZWlkID0gYmxhY2tib2FyZC5uc3RlcHMgaW5cbiAgICBsZXQgcHJlZGljYXRlX2xpc3QgPSBBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZXNfb2ZfZXZlbnQgZWlkIGluXG4gICAgbGV0IHJlYyBzY2FuIHByZWRpY2F0ZV9saXN0ID1cbiAgICAgIG1hdGNoIHByZWRpY2F0ZV9saXN0IHdpdGhcbiAgICAgIHwgW10gLT4gZXJyb3IsIE5vbmUsIGJsYWNrYm9hcmQsIFtdXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICBsZXQgY29sdW1uID1cbiAgICAgICAgICBDUHJlZGljYXRlTWFwLmZpbmRfZGVmYXVsdCBbXSB0IGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjb2x1bW4sIGJsYWNrYm9hcmQgPSBjbGVhbiB0IGNvbHVtbiBibGFja2JvYXJkIGluXG4gICAgICAgIChtYXRjaCBjb2x1bW4gd2l0aFxuICAgICAgICB8IChfLCBfLCBmYWxzZSkgOjogXyAtPiBzY2FuIHEgKCogbm8gbW9kaWYgb24gYSAqKVxuICAgICAgICB8IChfLCB4LCB0cnVlKSA6OiAoXywgeSwgXykgOjogXyB3aGVuIHggPSB5IC0+XG4gICAgICAgICAgc2NhbiBxICgqIG11dGUgbW9kaWYgb24gYSAqKVxuICAgICAgICB8IChhLCB4LCB0cnVlKSA6OiAoYiwgXywgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF8gLT5cbiAgICAgICAgICBpZiBhID0gZWlkICYmIHggPSB5IHRoZW5cbiAgICAgICAgICAgIGVycm9yLCBTb21lIChhLCBiKSwgYmxhY2tib2FyZCwgcSAoKiBhIGNhbmNlbHMgYiBtb2RpZiAqKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCBOb25lLCBibGFja2JvYXJkLCBxXG4gICAgICAgIHwgXyAtPiBlcnJvciwgTm9uZSwgYmxhY2tib2FyZCwgcSlcbiAgICBpblxuICAgIGxldCBlcnJvciwgY2FuZGlkYXRlcywgYmxhY2tib2FyZCwgcSA9IHNjYW4gcHJlZGljYXRlX2xpc3QgaW5cbiAgICBtYXRjaCBjYW5kaWRhdGVzIHdpdGhcbiAgICB8IE5vbmUgLT4gZXJyb3IsIE5vbmVcbiAgICB8IFNvbWUgKGVpZGEsIGVpZGIpIC0+XG4gICAgICBpZlxuICAgICAgICBub19yZW1vdmUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBlaWRiXG4gICAgICAgICYmIHNhbWVfbGVuZ3RoIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgZWlkYSBlaWRiXG4gICAgICAgICYmIExpc3QuZm9yX2FsbFxuICAgICAgICAgICAgIChmdW4gcGlkIC0+XG4gICAgICAgICAgICAgICBsZXQgY29sdW1uID1cbiAgICAgICAgICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5maW5kX2RlZmF1bHQgW10gcGlkIGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0IGNvbHVtbiwgX2JsYWNrYm9hcmQgPSBjbGVhbiBwaWQgY29sdW1uIGJsYWNrYm9hcmQgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIGNvbHVtbiB3aXRoXG4gICAgICAgICAgICAgICB8IChfLCBfLCBmYWxzZSkgOjogXyAtPiB0cnVlICgqIG5vIG1vZGlmIG9uIGEgKilcbiAgICAgICAgICAgICAgIHwgKGEsIHgsIHRydWUpIDo6IChiLCBfLCB0cnVlKSA6OiAoXywgeSwgXykgOjogX1xuICAgICAgICAgICAgICAgICB3aGVuIGIgPSBlaWRiICYmIGEgPSBlaWRhIC0+XG4gICAgICAgICAgICAgICAgIHggPSB5ICgqIGlmIHllcywgYSBjYW5jZWxzIGIgbW9kaWYqKVxuICAgICAgICAgICAgICAgfCAoYSwgeCwgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF8gd2hlbiBhID0gZWlkYSAtPlxuICAgICAgICAgICAgICAgICB4ID0geSAoKiBpcyBhIG1vZGlmIGlzIG11dGUgPyAqKVxuICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgIHFcbiAgICAgICAgJiYgTGlzdC5mb3JfYWxsXG4gICAgICAgICAgICAgKGZ1biBwaWQgLT5cbiAgICAgICAgICAgICAgIGxldCBjb2x1bW4gPVxuICAgICAgICAgICAgICAgICBDUHJlZGljYXRlTWFwLmZpbmRfZGVmYXVsdCBbXSBwaWQgYmxhY2tib2FyZC5zdGVwc19ieV9jb2x1bW5cbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgY29sdW1uLCBfYmxhY2tib2FyZCA9IGNsZWFuIHBpZCBjb2x1bW4gYmxhY2tib2FyZCBpblxuICAgICAgICAgICAgICAgbGV0IHJlYyBjaGVja19hdXggY29sdW1uID1cbiAgICAgICAgICAgICAgICAgbWF0Y2ggY29sdW1uIHdpdGhcbiAgICAgICAgICAgICAgICAgfCAoYiwgeCwgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF8gd2hlbiBiID0gZWlkYiAtPlxuICAgICAgICAgICAgICAgICAgIHggPSB5ICgqIGlzIGIgbW9kaWYgaXMgbXV0ZSA/ICopXG4gICAgICAgICAgICAgICAgIHwgKGIsIF8sIGJvb2wpIDo6IF8gd2hlbiBiID0gZWlkYiAtPlxuICAgICAgICAgICAgICAgICAgIG5vdCBib29sICgqIGlmIHllcywgYiBkb2VzIG5vdCBkbyBtb2RpZiAqKVxuICAgICAgICAgICAgICAgICB8IChfLCBfLCBfKSA6OiB0YWlsIC0+IGNoZWNrX2F1eCB0YWlsXG4gICAgICAgICAgICAgICAgIHwgW10gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIGNvbHVtbiB3aXRoXG4gICAgICAgICAgICAgICB8IChhLCB4LCB0cnVlKSA6OiAoYiwgXywgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF9cbiAgICAgICAgICAgICAgICAgd2hlbiBiID0gZWlkYiAmJiBhID0gZWlkYSAtPlxuICAgICAgICAgICAgICAgICB4ID0geSAoKiBhIGNhbmNlbHMgYiBtb2RpZiopXG4gICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgY2hlY2tfYXV4IGNvbHVtbiAoKiBvdGhlcndpc2UgY2hlY2sgdGhhdCBiIGhhcyBubyBlZmZlY3QgICopKVxuICAgICAgICAgICAgIChBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZXNfb2ZfZXZlbnQgZWlkYilcbiAgICAgIHRoZW5cbiAgICAgICAgZXJyb3IsIFNvbWUgKGVpZGEsIGVpZGIpXG4gICAgICBlbHNlXG4gICAgICAgIGVycm9yLCBOb25lXG5cbiAgbGV0IHBvcCBfcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgZWlkID1cbiAgICBsZXQgcHJlZGljYXRlX2xpc3QgPSBBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZXNfb2ZfZXZlbnQgZWlkIGluXG4gICAgbGV0IHJlYyBhdXggbCBlcnJvciBibGFja2JvYXJkID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBlcnJvciwgYmxhY2tib2FyZFxuICAgICAgfCBwaWQgOjogdGFpbCAtPlxuICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgbWF0Y2ggQ1ByZWRpY2F0ZU1hcC5maW5kX29wdGlvbiBwaWQgYmxhY2tib2FyZC5zdGVwc19ieV9jb2x1bW4gd2l0aFxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgRXhpdFxuICAgICAgICBpblxuICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgICAgfCAoYSwgXywgXykgOjogcSB3aGVuIGEgPSBlaWQgLT4gcVxuICAgICAgICAgIHwgXyAtPiBsaXN0XG4gICAgICAgIGluXG4gICAgICAgIGF1eCB0YWlsIGVycm9yXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICBzdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICAgICAgICBDUHJlZGljYXRlTWFwLmFkZCBwaWQgbGlzdCBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgICB9XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPSBhdXggcHJlZGljYXRlX2xpc3QgZXJyb3IgYmxhY2tib2FyZCBpblxuICAgIGxldCBfID0gQS5zZXQgYmxhY2tib2FyZC5ldmVudCBlaWQgTm9uZSBpblxuICAgIGVycm9yLCBibGFja2JvYXJkXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfdGVzdCBfcGFyYW1ldGVyIF9oYW5kbGVyIF9lcnJvciBfYmxhY2tib2FyZCB0ZXN0ID1cbiAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZ2VudCAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkhlcmUgYWdfaWQgaW5cbiAgICAgIFsgcHJlZGljYXRlX2lkIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChzaXRlLCBfaW50KSAtPlxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIFByZWRpY2F0ZV9tYXBzLkludGVybmFsX3N0YXRlXG4gICAgICAgICAgKFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlLCBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUpXG4gICAgICBpblxuICAgICAgWyBwcmVkaWNhdGVfaWQgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSBpblxuICAgICAgWyBwcmVkaWNhdGVfaWQgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IHNpdGVfaWQxID0gUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IHNpdGVfaWQyID0gUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZDEgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhZ19pZDEsIHNpdGVfaWQxKSBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZDIgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhZ19pZDIsIHNpdGVfaWQyKSBpblxuICAgICAgWyBwcmVkaWNhdGVfaWQxOyBwcmVkaWNhdGVfaWQyIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpIGluXG4gICAgICBbIHByZWRpY2F0ZV9pZCBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKHMsIF8pIC0+XG4gICAgICBsZXQgYWdfaWQgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHNpdGVfaWQgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkgaW5cbiAgICAgIFsgcHJlZGljYXRlX2lkIF1cblxuICBsZXQgYWRkX3N0ZXAgcGFyYW1ldGVyIGhhbmRsZXIgaW5mbyBlcnJvciBzdGVwIGJsYWNrYm9hcmQgPVxuICAgIGxldCBwcmVfZXZlbnQgPSBibGFja2JvYXJkLmV2ZW50IGluXG4gICAgbGV0IHRlc3RfbGlzdCA9IFRyYWNlLnRlc3RzX29mX3N0ZXAgc3RlcCBpblxuICAgIGxldCBhY3Rpb25fbGlzdCwgXyA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBzdGVwIGluXG4gICAgbGV0IHNpZGVfZWZmZWN0ID0gVHJhY2Uuc2lkZV9lZmZlY3RzX29mX3N0ZXAgc3RlcCBpblxuICAgIGxldCBidWlsZF9tYXAgbGlzdCBtYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgKGlkLCB2YWx1ZSkgLT4gUHJlZGljYXRlX21hcHMuUHJlZGljYXRlTWFwLmFkZCBpZCB2YWx1ZSBtYXApXG4gICAgICAgIG1hcCBsaXN0XG4gICAgaW5cbiAgICBsZXQgYnVpbGRfbWFwX3Rlc3QgbGlzdCBtYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBtYXAgaWQgLT4gUHJlZGljYXRlTWFwLmFkZCBpZCB0cnVlIG1hcCkgbWFwIGxpc3RcbiAgICBpblxuICAgIGxldCBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCA9XG4gICAgICBsZXQgdGVzdCcsIGFjdGlvbicgPSBQcmVkaWNhdGVNYXAuZmluZF9kZWZhdWx0IChmYWxzZSwgTm9uZSkgcGlkIG1hcCBpblxuICAgICAgbGV0IHRlc3QgPSB0ZXN0IHx8IHRlc3QnIGluXG4gICAgICBsZXQgYWN0aW9uID1cbiAgICAgICAgbWF0Y2ggYWN0aW9uJyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhY3Rpb25cbiAgICAgICAgfCBfIC0+IGFjdGlvbidcbiAgICAgIGluXG4gICAgICBsZXQgbWFwID0gUHJlZGljYXRlTWFwLmFkZCBwaWQgKHRlc3QsIGFjdGlvbikgbWFwIGluXG4gICAgICBtYXBcbiAgICBpblxuICAgIGxldCB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMgPSBzaWRlX2VmZmVjdCBpblxuICAgIGxldCB0ZXN0X21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCB0ZXN0IC0+XG4gICAgICAgICAgbGV0IHRlc3RfbGlzdCA9XG4gICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCB0ZXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBidWlsZF9tYXBfdGVzdCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICBQcmVkaWNhdGVNYXAuZW1wdHkgdGVzdF9saXN0XG4gICAgaW5cbiAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGFjdGlvbl9tYXAsXG4gICAgICAgICAgdGVzdF9tYXAsXG4gICAgICAgICAgaXNfcmVtb3ZlX2FjdGlvbixcbiAgICAgICAgICBfaXNfY3JlYXRlX2FjdGlvbiApID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCwgYm9vbCwgYm9vbF9jcmVhdGlvbilcbiAgICAgICAgICAgICBhY3Rpb24gLT5cbiAgICAgICAgICBsZXQgYmxhY2tib2FyZCwgYWN0aW9uX2xpc3QsIHRlc3RfbGlzdCwgYm9vbCcsIGJvb2xfY3JlYXRpb24nID1cbiAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfYWN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgYWN0aW9uXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGJ1aWxkX21hcCBhY3Rpb25fbGlzdCBhY3Rpb25fbWFwLFxuICAgICAgICAgICAgYnVpbGRfbWFwX3Rlc3QgdGVzdF9saXN0IHRlc3RfbWFwLFxuICAgICAgICAgICAgYm9vbCB8fCBib29sJyxcbiAgICAgICAgICAgIGJvb2xfY3JlYXRpb24gfHwgYm9vbF9jcmVhdGlvbicgKSlcbiAgICAgICAgKGVycm9yLCBibGFja2JvYXJkLCBQcmVkaWNhdGVNYXAuZW1wdHksIHRlc3RfbWFwLCBmYWxzZSwgZmFsc2UpXG4gICAgICAgIGFjdGlvbl9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIG1lcmdlZF9tYXAgPVxuICAgICAgUHJlZGljYXRlTWFwLm1vbmFkaWNfZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICBlLCBQcmVkaWNhdGVNYXAuYWRkIGtleSAodGVzdCwgU29tZSBhY3Rpb24pIGFjYylcbiAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWNjIC0+IGUsIFByZWRpY2F0ZU1hcC5hZGQga2V5ICh0ZXN0LCBOb25lKSBhY2MpXG4gICAgICAgIChmdW4gXyBlIGtleSBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgZSwgUHJlZGljYXRlTWFwLmFkZCBrZXkgKGZhbHNlLCBTb21lIGFjdGlvbikgYWNjKVxuICAgICAgICB0ZXN0X21hcCBhY3Rpb25fbWFwIFByZWRpY2F0ZU1hcC5lbXB0eVxuICAgIGluXG4gICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgIChmdW4gKChhLCBfKSwgYikgbWFwIC0+XG4gICAgICAgICAgbGV0IHBpZCA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGEsIGIpIGluXG4gICAgICAgICAgYWRkX3N0YXRlIHBpZCAoZmFsc2UsIFNvbWUgUHJlZGljYXRlX21hcHMuRnJlZSkgbWFwKVxuICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMgbWVyZ2VkX21hcFxuICAgIGluXG4gICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLm5zdGVwcyArIDEgaW5cbiAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQuZXZlbnQgbnNpZCAoU29tZSBzdGVwKSBpblxuICAgIGxldCBuX21vZGlmaWNhdGlvbnMsIHByZV9zdGVwc19ieV9jb2x1bW4sIGxpc3QsIG1vZF93aXRob3V0X3Rlc3QgPVxuICAgICAgUHJlZGljYXRlTWFwLmZvbGRcbiAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSAobl9tb2RpZmljYXRpb25zLCBtYXAsIGxpc3QsIG1vZF93aXRob3V0X3Rlc3QpIC0+XG4gICAgICAgICAgbGV0IG9sZF9saXN0ID1cbiAgICAgICAgICAgIENQcmVkaWNhdGVNYXAuZmluZF9kZWZhdWx0XG4gICAgICAgICAgICAgIFsgLTEsIFByZWRpY2F0ZV9tYXBzLlVuZGVmaW5lZCwgZmFsc2UgXVxuICAgICAgICAgICAgICBpZCBtYXBcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvbGRfdmFsdWUgPVxuICAgICAgICAgICAgbWF0Y2ggb2xkX2xpc3Qgd2l0aFxuICAgICAgICAgICAgfCAoXywgdiwgXykgOjogXyAtPiB2XG4gICAgICAgICAgICB8IFtdIC0+IFByZWRpY2F0ZV9tYXBzLlVuZGVmaW5lZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG5ld192YWx1ZSA9XG4gICAgICAgICAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IG9sZF92YWx1ZVxuICAgICAgICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG5fbW9kaWZpY2F0aW9ucywgYm9vbF9hY3Rpb24sIG1vZF93aXRob3V0X3Rlc3QgPVxuICAgICAgICAgICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBuX21vZGlmaWNhdGlvbnMsIGZhbHNlLCBtb2Rfd2l0aG91dF90ZXN0XG4gICAgICAgICAgICB8IFNvbWUgXyAtPiBuX21vZGlmaWNhdGlvbnMgKyAxLCB0cnVlLCBtb2Rfd2l0aG91dF90ZXN0IHx8IHRlc3RcbiAgICAgICAgICBpblxuICAgICAgICAgICggbl9tb2RpZmljYXRpb25zLFxuICAgICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5hZGQgaWRcbiAgICAgICAgICAgICAgKChuc2lkLCBuZXdfdmFsdWUsIGJvb2xfYWN0aW9uKSA6OiBvbGRfbGlzdClcbiAgICAgICAgICAgICAgbWFwLFxuICAgICAgICAgICAgKGlkLCBuZXdfdmFsdWUpIDo6IGxpc3QsXG4gICAgICAgICAgICBtb2Rfd2l0aG91dF90ZXN0ICkpXG4gICAgICAgIG1lcmdlZF9tYXBcbiAgICAgICAgKDAsIGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uLCBbXSwgZmFsc2UpXG4gICAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBpZiBpc19yZW1vdmVfYWN0aW9uIHRoZW4gKFxuICAgICAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQuaXNfcmVtb3ZlX2FjdGlvbiBuc2lkIHRydWUgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBBLnNldCBibGFja2JvYXJkLnByZWRpY2F0ZXNfb2ZfZXZlbnQgbnNpZFxuICAgICAgICAoTGlzdC5yZXZfbWFwIGZzdCAoTGlzdC5yZXYgbGlzdCkpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQS5zZXQgYmxhY2tib2FyZC5tb2RpZmllZF9wcmVkaWNhdGVzX29mX2V2ZW50IG5zaWQgbl9tb2RpZmljYXRpb25zXG4gICAgaW5cbiAgICBsZXQgKCkgPSBBLnNldCBibGFja2JvYXJkLmhhc19tb2Rfd2l0aG91dF90ZXN0IG5zaWQgbW9kX3dpdGhvdXRfdGVzdCBpblxuICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgIHtcbiAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgIGV2ZW50ID0gcHJlX2V2ZW50O1xuICAgICAgICBzdGVwc19ieV9jb2x1bW4gPSBwcmVfc3RlcHNfYnlfY29sdW1uO1xuICAgICAgICBuc3RlcHMgPSBuc2lkO1xuICAgICAgfVxuICAgIGluXG4gICAgZXJyb3IsIGluZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgY3V0IHBhcmFtZXRlciBoYW5kbGVyIGluZm8gZXJyb3IgbGlzdCA9XG4gICAgbGV0IG5fc3RlcHMgPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gICAgbGV0IGJsYWNrYm9hcmQgPSBpbml0X2JsYWNrYm9hcmQgbl9zdGVwcyBoYW5kbGVyIGluXG4gICAgbGV0IGVycm9yLCBpbmZvLCBibGFja2JvYXJkLCBuX2N1dCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgaW5mbywgYmxhY2tib2FyZCwgbl9jdXQpIHN0ZXAgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGluZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgYWRkX3N0ZXAgcGFyYW1ldGVyIGhhbmRsZXIgaW5mbyBlcnJvciBzdGVwIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgdG9fcG9wID0gY2hlY2sgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBpblxuICAgICAgICAgIG1hdGNoIHRvX3BvcCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBpbmZvLCBibGFja2JvYXJkLCBuX2N1dFxuICAgICAgICAgIHwgU29tZSAoZTEsIGUyKSAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID0gcG9wIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgZTEgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9IHBvcCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGUyIGluXG4gICAgICAgICAgICBlcnJvciwgaW5mbywgYmxhY2tib2FyZCwgbl9jdXQgKyAyKVxuICAgICAgICAoZXJyb3IsIGluZm8sIGJsYWNrYm9hcmQsIDApXG4gICAgICAgIGxpc3RcbiAgICBpblxuICAgIGxldCBsaXN0ID1cbiAgICAgIGxldCByZWMgYXV4IGsgbGlzdCA9XG4gICAgICAgIGlmIGsgPSAtMSB0aGVuXG4gICAgICAgICAgbGlzdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBBLmdldCBibGFja2JvYXJkLmV2ZW50IGsgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+IGF1eCAoayAtIDEpIChhIDo6IGxpc3QpXG4gICAgICAgICAgfCBOb25lIC0+IGF1eCAoayAtIDEpIGxpc3RcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCBibGFja2JvYXJkLm5zdGVwcyBbXVxuICAgIGluXG4gICAgbGV0IHRhYiA9IGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uIGluXG4gICAgbGV0IF8gPSBMaXN0Lml0ZXIgKENQcmVkaWNhdGVNYXAucmVjeWNsZSB0YWIpIGJsYWNrYm9hcmQuYWdlbnRfbGlzdCBpblxuICAgIGVycm9yLCBpbmZvLCAobGlzdCwgbl9jdXQpXG5cbiAgKCogIGxldCBjdXQgcGFyYW1ldGVyIGhhbmRsZXIgaW5mbyBlcnJvciBsaXN0ID0gZXJyb3IsIGluZm8sIChsaXN0LDApKilcbmVuZFxuIiwiKCoqXG4gICogY2Zsb3dfaGFuZGxlci5tbFxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERlZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyOS8wOC8yMDExXG4gICogTGFzdCBtb2RpZmljYXRpb246IDI5LzAxLzIwMTZcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXIgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyLDIwMTMgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZVxuICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5cbm1vZHVsZSB0eXBlIFByZUJsYWNrYm9hcmQgPSBzaWdcbiAgbW9kdWxlIEEgOiBHZW5BcnJheS5HZW5BcnJheVxuICBtb2R1bGUgQ0kgOiBQc2V1ZG9faW52ZXJzZS5DdXRfcHNldWRvX2ludmVyc2VcblxuICB0eXBlIHN0ZXBfaWRcblxuICB2YWwgemVyb19zdGVwX2lkIDogc3RlcF9pZFxuICB2YWwgZHVtbXlfc3RlcF9pZCA6IHN0ZXBfaWRcbiAgdmFsIGludF9vZl9zdGVwX2lkIDogc3RlcF9pZCAtPiBpbnRcbiAgdmFsIHN0ZXBfaWRfb2ZfaW50IDogaW50IC0+IHN0ZXBfaWRcbiAgdmFsIGRlY19zdGVwX2lkIDogc3RlcF9pZCAtPiBzdGVwX2lkXG4gIHZhbCBpbmNfc3RlcF9pZCA6IHN0ZXBfaWQgLT4gc3RlcF9pZFxuXG4gIHR5cGUgc3RlcF9zaG9ydF9pZFxuXG4gIHZhbCB6ZXJvX3N0ZXBfc2hvcnRfaWQgOiBzdGVwX3Nob3J0X2lkXG4gIHZhbCBkdW1teV9zdGVwX3Nob3J0X2lkIDogc3RlcF9zaG9ydF9pZFxuICB2YWwgaW50X29mX3N0ZXBfc2hvcnRfaWQgOiBzdGVwX3Nob3J0X2lkIC0+IGludFxuICB2YWwgc3RlcF9zaG9ydF9pZF9vZl9pbnQgOiBpbnQgLT4gc3RlcF9zaG9ydF9pZFxuICB2YWwgaW5jX3N0ZXBfc2hvcnRfaWQgOiBzdGVwX3Nob3J0X2lkIC0+IHN0ZXBfc2hvcnRfaWRcbiAgdmFsIGRlY19zdGVwX3Nob3J0X2lkIDogc3RlcF9zaG9ydF9pZCAtPiBzdGVwX3Nob3J0X2lkXG5cbiAgKCoqIGJsYWNrYm9hcmQgcHJlZGljYXRlcyopXG5cbiAgdHlwZSBwcmVkaWNhdGVfaWQgPSBpbnRcbiAgdHlwZSBwcmVkaWNhdGVfaW5mb1xuICB0eXBlIHByZWRpY2F0ZV92YWx1ZVxuXG4gIG1vZHVsZSBDIDogQ2FjaGUuQ2FjaGUgd2l0aCB0eXBlIE8udCA9IHByZWRpY2F0ZV92YWx1ZVxuXG4gIHR5cGUgcHJlX2JsYWNrYm9hcmQgKCpibGFja2JvYXJkIGR1cmluZyBpdHMgY29uc3RydWN0aW9uKilcblxuICB2YWwgd2Vha2VuaW5nIDogcHJlZGljYXRlX3ZhbHVlIC0+IHByZWRpY2F0ZV92YWx1ZSBsaXN0XG5cbiAgdmFsIGNvbmogOlxuICAgIChwcmVkaWNhdGVfdmFsdWUsIHByZWRpY2F0ZV92YWx1ZSwgcHJlZGljYXRlX3ZhbHVlKSBDSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGRpc2p1bmN0aW9uIDpcbiAgICAocHJlZGljYXRlX3ZhbHVlLCBwcmVkaWNhdGVfdmFsdWUsIHByZWRpY2F0ZV92YWx1ZSkgQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBkZWZpbmVkIDogcHJlZGljYXRlX3ZhbHVlXG4gIHZhbCB1bmRlZmluZWQgOiBwcmVkaWNhdGVfdmFsdWVcbiAgdmFsIHVua25vd24gOiBwcmVkaWNhdGVfdmFsdWVcbiAgdmFsIGlzX3Vua25vd24gOiBwcmVkaWNhdGVfdmFsdWUgLT4gYm9vbFxuICB2YWwgaXNfdW5kZWZpbmVkIDogcHJlZGljYXRlX3ZhbHVlIC0+IGJvb2xcbiAgdmFsIG1vcmVfcmVmaW5lZCA6IHByZWRpY2F0ZV92YWx1ZSAtPiBwcmVkaWNhdGVfdmFsdWUgLT4gYm9vbFxuICB2YWwgY29tcGF0aWJsZSA6IHByZWRpY2F0ZV92YWx1ZSAtPiBwcmVkaWNhdGVfdmFsdWUgLT4gYm9vbFxuICB2YWwgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIDogcHJlZGljYXRlX3ZhbHVlIC0+IHByZWRpY2F0ZV92YWx1ZSAtPiBib29sXG4gIHZhbCBnZXRfcHJlX2NvbHVtbl9tYXBfaW52IDogcHJlX2JsYWNrYm9hcmQgLT4gcHJlZGljYXRlX2luZm8gQS50XG5cbiAgKCoqIGdlbmVyYXRpb24qKVxuXG4gIHZhbCBpbml0IDogcHJlX2JsYWNrYm9hcmQgQ0kuUG8uSy5ILnplcm9hcnlcblxuICB2YWwgYWRkX3N0ZXAgOlxuICAgICggVHJhY2Uuc3RlcCxcbiAgICAgIHByZV9ibGFja2JvYXJkLFxuICAgICAgc3RlcF9pZCxcbiAgICAgIHByZV9ibGFja2JvYXJkICogc3RlcF9pZCApXG4gICAgQ0kuUG8uSy5ILnRlcm5hcnlcblxuICB2YWwgYWRkX3N0ZXBfdXBfdG9faXNvIDpcbiAgICAoIFRyYWNlLnN0ZXAsXG4gICAgICBwcmVfYmxhY2tib2FyZCxcbiAgICAgIHN0ZXBfaWQsXG4gICAgICBwcmVfYmxhY2tib2FyZCAqIHN0ZXBfaWQgKVxuICAgIENJLlBvLksuSC50ZXJuYXJ5XG5cbiAgdmFsIGZpbmFsaXplIDpcbiAgICBQcmlvcml0eS5wcmlvcml0aWVzIG9wdGlvbiAtPlxuICAgIChwcmVfYmxhY2tib2FyZCwgcHJlX2JsYWNrYm9hcmQpIENJLlBvLksuSC51bmFyeVxuXG4gICgqKnByZXR0eSBwcmludGluZyopXG5cbiAgdmFsIHN0cmluZ19vZl9wcmVkaWNhdGVfdmFsdWUgOiBwcmVkaWNhdGVfdmFsdWUgLT4gc3RyaW5nXG4gIHZhbCBwcmludF9wcmVkaWNhdGVfdmFsdWUgOiBMb2dnZXJzLnQgLT4gcHJlZGljYXRlX3ZhbHVlIC0+IHVuaXRcbiAgdmFsIHByaW50X3ByZWJsYWNrYm9hcmQgOiAocHJlX2JsYWNrYm9hcmQsIHVuaXQpIENJLlBvLksuSC51bmFyeVxuXG4gICgqKmludGVyZmFjZSopXG5cbiAgdmFsIG5fZXZlbnRzIDogKHByZV9ibGFja2JvYXJkLCBpbnQpIENJLlBvLksuSC51bmFyeVxuICB2YWwgbl9wcmVkaWNhdGVzIDogKHByZV9ibGFja2JvYXJkLCBpbnQpIENJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBuX2V2ZW50c19wZXJfcHJlZGljYXRlIDpcbiAgICAocHJlX2JsYWNrYm9hcmQsIGludCwgcHJlZGljYXRlX2lkKSBDSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGV2ZW50X2xpc3Rfb2ZfcHJlZGljYXRlIDpcbiAgICAoIHByZV9ibGFja2JvYXJkLFxuICAgICAgcHJlZGljYXRlX2lkLFxuICAgICAgKHN0ZXBfaWQgKiBpbnQgKiBwcmVkaWNhdGVfdmFsdWUgKiBwcmVkaWNhdGVfdmFsdWUpIGxpc3QgKVxuICAgIENJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgbWFuZGF0b3J5X2V2ZW50cyA6XG4gICAgKCBwcmVfYmxhY2tib2FyZCxcbiAgICAgIChzdGVwX2lkIGxpc3QgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IG9wdGlvbikgbGlzdCApXG4gICAgQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGdldF9wcmVfZXZlbnQgOiAocHJlX2JsYWNrYm9hcmQsIFRyYWNlLnN0ZXAgQS50KSBDSS5Qby5LLkgudW5hcnlcblxuICB2YWwgZ2V0X3NpZGVfZWZmZWN0IDpcbiAgICAocHJlX2JsYWNrYm9hcmQsIENJLlBvLksuc2lkZV9lZmZlY3QgQS50KSBDSS5Qby5LLkgudW5hcnlcblxuICB2YWwgZ2V0X2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZSA6XG4gICAgKHByZV9ibGFja2JvYXJkLCBzdGVwX2lkIG9wdGlvbikgQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGdldF9sZXZlbF9vZl9ldmVudCA6XG4gICAgKHByZV9ibGFja2JvYXJkLCBzdGVwX2lkLCBQcmlvcml0eS5sZXZlbCkgQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBsZXZlbHMgOiBwcmVfYmxhY2tib2FyZCAtPiBQcmlvcml0eS5sZXZlbCBBLnRcbiAgdmFsIHByaW50X3ByZWRpY2F0ZV9pbmZvIDogTG9nZ2Vycy50IC0+IHByZWRpY2F0ZV9pbmZvIC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgUHJlYmxhY2tib2FyZCA6IFByZUJsYWNrYm9hcmQgPSBzdHJ1Y3RcbiAgKCoqIFVzZWZ1bCBtb2R1bGVzICopXG5cbiAgbW9kdWxlIEEgPSBNb2RzLkR5bkFycmF5XG4gIG1vZHVsZSBDSSA9IFBzZXVkb19pbnZlcnNlLlBzZXVkb19pbnZcblxuICBsZXQgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgcG9zID8obWVzc2FnZSA9IFwiXCIpIGV4biBkZWZhdWx0ID1cbiAgICBsZXQgZXJyb3IsIHggPVxuICAgICAgRXhjZXB0aW9uLndhcm5cbiAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgcG9zIH5tZXNzYWdlIGV4biBkZWZhdWx0XG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHhcblxuICAoKiogYmxhY2tib2FyZCBtYXRyaXgqKVxuXG4gIHR5cGUgc3RlcF9pZCA9IGludFxuICAoKiogZ2xvYmFsIGlkIG9mIGFuIGV2ZW50ICopXG5cbiAgbGV0IHplcm9fc3RlcF9pZCA9IDBcbiAgbGV0IGR1bW15X3N0ZXBfaWQgPSAtMVxuICBsZXQgaW50X29mX3N0ZXBfaWQgaSA9IGlcbiAgbGV0IHN0ZXBfaWRfb2ZfaW50IGkgPSBpXG4gIGxldCBkZWNfc3RlcF9pZCBpID0gaSAtIDFcbiAgbGV0IGluY19zdGVwX2lkIGkgPSBpICsgMVxuXG4gIHR5cGUgc3RlcF9zaG9ydF9pZCA9IGludFxuICAoKiogcG9zaXRpb24gb2YgYW4gZXZlbnQgb24gYSB3aXJlICopXG5cbiAgbGV0IHplcm9fc3RlcF9zaG9ydF9pZCA9IDBcbiAgbGV0IGR1bW15X3N0ZXBfc2hvcnRfaWQgPSAtMVxuICBsZXQgaW50X29mX3N0ZXBfc2hvcnRfaWQgaSA9IGlcbiAgbGV0IHN0ZXBfc2hvcnRfaWRfb2ZfaW50IGkgPSBpXG4gIGxldCBpbmNfc3RlcF9zaG9ydF9pZCBpID0gaSArIDFcbiAgbGV0IGRlY19zdGVwX3Nob3J0X2lkIGkgPSBpIC0gMVxuXG4gICgqKiBibGFja2JvYXJkIHByZWRpY2F0ZXMqKVxuXG4gICgqKiBraW5kIG9mIGV2ZW50cyopXG4gIHR5cGUgcnVsZV90eXBlID1cbiAgICB8IFN1YnNcbiAgICB8IER1bW15XG4gICAgfCBJbml0XG4gICAgfCBPYnNlcnZhYmxlXG4gICAgfCBSdWxlXG4gICAgfCBTaWRlX2VmZmVjdF9vZiBvZlxuICAgICAgICAoc3RlcF9pZCAqIChDSS5Qby5LLmFnZW50X2lkICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWUpIGxpc3QpXG5cbiAgdHlwZSBwcmVkaWNhdGVfaWQgPSBpbnRcbiAgKCoqIHdpcmUgaWRlbnRpZmllcnMgKilcblxuICB0eXBlIG11dGV4ID1cbiAgICB8IExvY2tfc2lkZV9lZmZlY3Qgb2ZcbiAgICAgICAgc3RlcF9pZCAqIENJLlBvLksuYWdlbnRfaWQgKiBDSS5Qby5LLmFnZW50X2lkICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcbiAgICB8IExvY2tfYWdlbnQgb2Ygc3RlcF9pZCAqIENJLlBvLksuYWdlbnRfaWRcbiAgICB8IExvY2tfcmVjdGFuZ3VsYXIgb2Ygc3RlcF9pZCAqIENJLlBvLksuYWdlbnRfaWRcbiAgICB8IExvY2tfbGlua3Mgb2Ygc3RlcF9pZCAqIChDSS5Qby5LLmFnZW50X2lkICogQ0kuUG8uSy5hZ2VudF9pZClcblxuICAoKiogd2lyZSBsYWJlbHMgKilcbiAgdHlwZSBwcmVkaWNhdGVfaW5mbyA9XG4gICAgfCBGaWN0aXRpb3VzICgqdG8gaGFuZGxlIHdpdGggYW1iaWd1b3VzIHNpdGUgZWZmZWN0cyAqKVxuICAgIHwgSGVyZSBvZiBDSS5Qby5LLmFnZW50X2lkXG4gICAgfCBCb3VuZF9zaXRlIG9mIENJLlBvLksuYWdlbnRfaWQgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICAgIHwgSW50ZXJuYWxfc3RhdGUgb2YgQ0kuUG8uSy5hZ2VudF9pZCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgfCBQb2ludGVyIG9mIHN0ZXBfaWQgKiBDSS5Qby5LLmFnZW50X2lkXG4gICAgfCBNdXRleCBvZiBtdXRleFxuICAgIHwgTGluayBvZiBzdGVwX2lkICogQ0kuUG8uSy5hZ2VudF9pZCAqIENJLlBvLksuYWdlbnRfaWRcblxuICBsZXQgXyA9IExpbmsgKDAsIDAsIDApXG4gICgqIGRvIG5vdCByZW1vdmUsIGl0IHdpbGwgYmUgbmVjZXNzYXJ5IGZvciBkZWFsaW5nIGVmZmVjdGl2ZWx5IHdpdGggdW5hcnkvYmluYXJ5IHJ1bGUgKilcblxuICB0eXBlIHByZWRpY2F0ZV92YWx1ZSA9XG4gICAgfCBDb3VudGVyIG9mIGludFxuICAgIHwgUG9pbnRlcl90b19hZ2VudCBvZiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWVcbiAgICB8IEludGVybmFsX3N0YXRlX2lzIG9mIENJLlBvLksuaW50ZXJuYWxfc3RhdGVcbiAgICB8IERlZmluZWQgICgqKiB0aGUgd2lyZSBkb2VzIGV4aXN0LCBidXQgd2UgZG8gbm90IGtub3cgd2hhdCB0aGUgdmFsdWUgaXMgKilcbiAgICB8IFVuZGVmaW5lZCAgKCoqIHRoZSB3aXJlIGRvZXMgbm90IGV4aXN0IHlldCAqKVxuICAgIHwgUHJlc2VudCAgKCoqIGZvciBhZ2VudCBwcmVzZW5jZSAqKVxuICAgIHwgRnJlZSAgKCoqIGZvciBiaW5kaW5nIHNpdGVzICopXG4gICAgfCBCb3VuZCAgKCoqIGZvciBiaW5kaW5nIHNpdGVzIChwYXJ0aWFsIGluZm9ybWF0aW9uKSAqKVxuICAgIHwgQm91bmRfdG8gb2ZcbiAgICAgICAgcHJlZGljYXRlX2lkXG4gICAgICAgICogQ0kuUG8uSy5hZ2VudF9pZFxuICAgICAgICAqIEluc3RhbnRpYXRpb24uYWdlbnRfbmFtZVxuICAgICAgICAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgICAgICgqKiBmb3IgYmluZGluZiBzaXRlcyAoY29tcGxldGUgaW5mb3JtYXRpb24pICopXG4gICAgfCBCb3VuZF90b190eXBlIG9mIEluc3RhbnRpYXRpb24uYWdlbnRfbmFtZSAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgICAgICgqKiBmb3IgYmluZGluZyBzaXRlcyAocGFydGlhbCBpbmZvcm1hdGlvbiAqKVxuICAgIHwgVW5rbm93blxuICAgICAgICAoKiogIGZvciBhZ2VudCBwcmVzZW5jZSwgaW50ZXJuYWwgc3RhdGVzLCBiaW5kaW5nIHN0YXRlcyAocGFydGlhbCBpbmZvcm1hdGlvbiAqKVxuXG4gIG1vZHVsZSBDIDogQ2FjaGUuQ2FjaGUgd2l0aCB0eXBlIE8udCA9IHByZWRpY2F0ZV92YWx1ZSA9IENhY2hlLkNhY2hlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBwcmVkaWNhdGVfdmFsdWVcblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGxldCBwcmludCBfIF8gPSAoKVxuICBlbmQpXG5cbiAgbGV0IHdlYWtlbmluZyBwID1cbiAgICBtYXRjaCBwIHdpdGhcbiAgICB8IFBvaW50ZXJfdG9fYWdlbnQgXyB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBQcmVzZW50IHwgRnJlZVxuICAgIHwgQm91bmQgLT5cbiAgICAgIFsgcDsgRGVmaW5lZCBdXG4gICAgfCBCb3VuZF90byAoXywgXywgYWcsIHNpdGUpIC0+XG4gICAgICBbIHA7IEJvdW5kX3RvX3R5cGUgKGFnLCBzaXRlKTsgQm91bmQ7IERlZmluZWQgXVxuICAgIHwgQm91bmRfdG9fdHlwZSBfIC0+IFsgcDsgQm91bmQ7IERlZmluZWQgXVxuICAgIHwgRGVmaW5lZCB8IFVuZGVmaW5lZCAtPiBbIHAgXVxuICAgIHwgVW5rbm93biAtPiBbXVxuXG4gIGxldCBkZWZpbmVkID0gRGVmaW5lZFxuICBsZXQgdW5kZWZpbmVkID0gVW5kZWZpbmVkXG4gIGxldCB1bmtub3duID0gVW5rbm93blxuICBsZXQgaXNfdW5rbm93biB4ID0geCA9IFVua25vd25cbiAgbGV0IGlzX3VuZGVmaW5lZCB4ID0geCA9IFVuZGVmaW5lZFxuXG4gICgqKiBtYXBzIGFuZCBzZXRzICopXG5cbiAgbW9kdWxlIFByZWRpY2F0ZVNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBwcmVkaWNhdGVfaW5mb1xuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHByaW50IF8gXyA9ICgpXG4gIGVuZClcblxuICBtb2R1bGUgUHJlZGljYXRlU2V0ID0gUHJlZGljYXRlU2V0TWFwLlNldFxuICBtb2R1bGUgUHJlZGljYXRlTWFwID0gUHJlZGljYXRlU2V0TWFwLk1hcFxuXG4gIG1vZHVsZSBDYXNlVmFsdWVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gcHJlZGljYXRlX3ZhbHVlXG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgcHJpbnQgXyBfID0gKClcbiAgZW5kKVxuXG4gIG1vZHVsZSBDYXNlVmFsdWVTZXQgPSBDYXNlVmFsdWVTZXRNYXAuU2V0XG4gIG1vZHVsZSBQcmVkaWNhdGVpZFNldCA9IE1vZHMuSW50U2V0XG4gIG1vZHVsZSBQcmVkaWNhdGVpZE1hcCA9IE1vZHMuSW50TWFwXG4gIG1vZHVsZSBTaWRNYXAgPSBNb2RzLkludE1hcFxuICBtb2R1bGUgQWdlbnRJZE1hcCA9IE1vZHMuSW50TWFwXG4gIG1vZHVsZSBBZ2VudElkMk1hcCA9IE1vZHMuSW50Mk1hcFxuICBtb2R1bGUgQWdlbnRJZFNldCA9IE1vZHMuSW50U2V0XG4gIG1vZHVsZSBBZ2VudElkMlNldCA9IE1vZHMuSW50MlNldFxuICBtb2R1bGUgU2l0ZUlkU2V0ID0gTW9kcy5JbnQyU2V0XG4gIG1vZHVsZSBTaXRlSWRNYXAgPSBNb2RzLkludDJNYXBcblxuICB0eXBlIHByZV9ibGFja2JvYXJkID0ge1xuICAgIHByZV9maWN0aXRpb3VzX2xpc3Q6IHByZWRpY2F0ZV9pZCBsaXN0O1xuICAgICAgICAoKiogbGlzdCBvZiB3aXJlIGZvciBtdXR1YWwgZXhjbHVzaW9ucywgdGhlIHN0YXRlIG11c3QgYmUgdW5kZWZpbmVkIGF0IHRoZSBlbmQgb2YgdGhlIHRyYWNlICopXG4gICAgcHJlX3N0ZXBzX2J5X2NvbHVtbjpcbiAgICAgIChzdGVwX3Nob3J0X2lkXG4gICAgICAqIChzdGVwX2lkICogc3RlcF9zaG9ydF9pZCAqIHByZWRpY2F0ZV92YWx1ZSAqIHByZWRpY2F0ZV92YWx1ZSkgbGlzdClcbiAgICAgIEEudDtcbiAgICAgICAgKCoqIG1hcHMgZWFjaCB3aXJlIHRvIHRoZSBsYXN0IGtub3duIHZhbHVlIGFuZCB0aGUgbGlzdCBvZiBzdGVwIChzdGVwIGlkLHRlc3QsYWN0aW9uKSopXG4gICAgcHJlX2tpbmRfb2ZfZXZlbnQ6IHJ1bGVfdHlwZSBBLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggZXZlbnQgaWQgdG8gdGhlIGtpbmQgb2YgZXZlbnQgKilcbiAgICBwcmVfZXZlbnQ6IFRyYWNlLnN0ZXAgQS50OyAgKCoqIG1hcHMgZWFjaCBldmVudCB0byB0aGUgc3RlcCAqKVxuICAgIHByZV9uc3RlcHM6IHN0ZXBfaWQ7ICAoKippZCBvZiB0aGUgbGFzdCBldmVudCAqKVxuICAgIHByZV9uY29sdW1uOiBwcmVkaWNhdGVfaWQ7ICAoKippZCBvZiB0aGUgbGFzdCB3aXJlICopXG4gICAgcHJlX2NvbHVtbl9tYXA6IHByZWRpY2F0ZV9pZCBQcmVkaWNhdGVNYXAudDtcbiAgICAgICAgKCoqIG1hcHMgZWFjaCB3aXJlIGxhYmVsIHRvIGl0cyB3aXJlIGlkICopXG4gICAgcHJlX2NvbHVtbl9tYXBfaW52OiBwcmVkaWNhdGVfaW5mbyBBLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggd2lyZSBpZCB0byBpdHMgd2lyZSBsYWJlbCAqKVxuICAgIHByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkOiBQcmVkaWNhdGVpZFNldC50IEEudDtcbiAgICAgICAgKCoqIG1hcHMgZWFjaCB3aXJlIGlkIGZvciB0aGUgcHJlc2VuY2Ugb2YgYW4gYWdlbnQgdG8gdGhlIHNldCBvZiB3aXJlcyBmb3IgaXRzIGF0dGlidXRlICh1c2VmdWwsIHdoZW4gYW4gYWdlbnQgZ2V0IHJlbW92ZWQsIGFsbCBpdHMgYXR0cmlidXRlcyBnZXQgdW5kZWZpbmVkICopXG4gICAgaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZDogQy50IEEudDtcbiAgICAgICAgKCogbWFwcyBlYWNoIHdpcmUgdG8gdGhlIHNldCBvZiBpdHMgcHJldmlvdXMgc3RhdGVzLCB0aGlzIHN1bW1hcml6ZSB0aGUgcG90ZW50aWFsIHN0YXRlIG9mIGEgc2l0ZSB0aGF0IGlzIGZyZWVkLCBzbyBhcyB0byBvdmVyYXBwcm94aW1hdGUgdGhlIHNldCBvZiBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzKilcbiAgICBoaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlOiBDSS5Qby5LLmFnZW50X2lkIGxpc3QgQS50O1xuICAgIHByZV9vYnNlcnZhYmxlX2xpc3Q6XG4gICAgICAoc3RlcF9pZCBsaXN0ICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb24pIGxpc3Q7XG4gICAgcHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50OiBDSS5Qby5LLnNpZGVfZWZmZWN0IEEudDtcbiAgICBwcmVfZmljdGl0aW91c19vYnNlcnZhYmxlOiBzdGVwX2lkIG9wdGlvbjtcbiAgICAgICAgKCppZCBvZiB0aGUgc3RlcCB0aGF0IGNsb3NlcyBhbGwgdGhlIHNpZGUtZWZmZWN0IG11dGV4ICopXG4gICAgcHJlX2xldmVsX29mX2V2ZW50OiBQcmlvcml0eS5sZXZlbCBBLnQ7XG4gIH1cblxuICBsZXQgbGV2ZWxzIGIgPSBiLnByZV9sZXZlbF9vZl9ldmVudFxuICBsZXQgZ2V0X3ByZV9jb2x1bW5fbWFwX2ludiB4ID0geC5wcmVfY29sdW1uX21hcF9pbnZcblxuICBsZXQgZ2V0X3ByZV9ldmVudCBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIHggPVxuICAgIGVycm9yLCBsb2dfaW5mbywgeC5wcmVfZXZlbnRcblxuICAoKiogcHJldHR5IHByaW50aW5nICopXG5cbiAgbGV0IHByaW50X3ByZWRpY2F0ZV9pbmZvIGxvZyB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEhlcmUgaSAtPiBMb2dnZXJzLmZwcmludGYgbG9nIFwiQWdlbnRfSGVyZSAlaVwiIGlcbiAgICB8IEJvdW5kX3NpdGUgKGksIHMpIC0+IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJCaW5kaW5nX3N0YXRlICglaSwlaSlcIiBpIHNcbiAgICB8IEludGVybmFsX3N0YXRlIChpLCBzKSAtPiBMb2dnZXJzLmZwcmludGYgbG9nIFwiSW50ZXJuYWxfc3RhdGUgKCVpLCVpKVwiIGkgc1xuICAgIHwgUG9pbnRlciAoZWlkLCBpZCkgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlBvaW50ZXIoZWlkOiVpLGFnX2lkOiVpKVwiIGVpZCBpZFxuICAgIHwgTGluayAoZWlkLCBpZDEsIGlkMikgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJMaW5rKGVpZDolaSwlaS0laSlcIiBlaWQgaWQxIGlkMlxuICAgIHwgTXV0ZXggKExvY2tfYWdlbnQgKGludCwgaW50MikpIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTXV0ZXggKFN0ZXAtaWQ6JWksQWdlbnRfaWQ6JWkpXCIgaW50IGludDJcbiAgICB8IE11dGV4IChMb2NrX3JlY3Rhbmd1bGFyIChpbnQsIGludDIpKSAtPlxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIk11dGV4X2ludiAoU3RlcC1pZDolaSxBZ2VudF9pZDolaSlcIiBpbnQgaW50MlxuICAgIHwgTXV0ZXggKExvY2tfbGlua3MgKGludCwgKGludDIsIGludDMpKSkgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJNdXRleF9saW5rcyAoU3RlcC1pZDolaSwlaS0laSlcIiBpbnQgaW50MiBpbnQzXG4gICAgfCBNdXRleCAoTG9ja19zaWRlX2VmZmVjdCAoaW50LCBpbnQyLCBpbnQzLCBpbnQ0KSkgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJNdXRleF9zaWRlX2VmZmVjdCAoU3RlcC1pZDolaSwlaS8laS4laSlcIiBpbnQgaW50MlxuICAgICAgICBpbnQzIGludDRcbiAgICB8IEZpY3RpdGlvdXMgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkZpY3RpdGlvdXNcIlxuXG4gIGxldCBwcmludF9rbm93biBsb2cgdCB4ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFVua25vd24gLT4gKClcbiAgICB8IFBvaW50ZXJfdG9fYWdlbnQgXyB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBQcmVzZW50IHwgRnJlZVxuICAgIHwgQm91bmQgfCBCb3VuZF90byBfIHwgQm91bmRfdG9fdHlwZSBfIHwgRGVmaW5lZCB8IFVuZGVmaW5lZCAtPlxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVzXCIgeFxuXG4gIGxldCBzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgQ291bnRlciBpbnQgLT4gXCJDb3VudGVyIFwiIF4gc3RyaW5nX29mX2ludCBpbnRcbiAgICB8IERlZmluZWQgLT4gXCJEZWZpbmVkXCJcbiAgICB8IEludGVybmFsX3N0YXRlX2lzIGludGVybmFsX3N0YXRlIC0+IHN0cmluZ19vZl9pbnQgaW50ZXJuYWxfc3RhdGVcbiAgICB8IFVuZGVmaW5lZCAtPiBcIlVuZGVmaW5lZFwiXG4gICAgfCBQcmVzZW50IC0+IFwiUHJlc2VudFwiXG4gICAgfCBGcmVlIC0+IFwiRnJlZVwiXG4gICAgfCBCb3VuZCAtPiBcIkJvdW5kXCJcbiAgICB8IEJvdW5kX3RvIChpZCwgYWdlbnRfaWQsIGFnZW50X25hbWUsIHNpdGUpIC0+XG4gICAgICBcIkJvdW5kKFwiIF4gc3RyaW5nX29mX2ludCBpZCBeIFwiLFwiIF4gc3RyaW5nX29mX2ludCBhZ2VudF9pZCBeIFwiKFwiXG4gICAgICBeIHN0cmluZ19vZl9pbnQgYWdlbnRfbmFtZSBeIFwiKUBcIiBeIHN0cmluZ19vZl9pbnQgc2l0ZSBeIFwiKVwiXG4gICAgfCBCb3VuZF90b190eXBlIChhZ2VudCwgc2l0ZSkgLT5cbiAgICAgIFwiQm91bmQoXCIgXiBzdHJpbmdfb2ZfaW50IGFnZW50IF4gXCJAXCIgXiBzdHJpbmdfb2ZfaW50IHNpdGUgXiBcIilcIlxuICAgIHwgUG9pbnRlcl90b19hZ2VudCBhZ2VudF9pZCAtPiBcIlBvaW50ZXIoXCIgXiBzdHJpbmdfb2ZfaW50IGFnZW50X2lkIF4gXCIpXCJcbiAgICB8IFVua25vd24gLT4gXCJcIlxuXG4gIGxldCBwcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIHggPVxuICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCIlc1wiIChzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIHgpXG5cbiAgbGV0IHByaW50X3ByZWRpY2F0ZV9pZCBsb2cgYmxhY2tib2FyZCBpID1cbiAgICBsZXQgcHJlZGljYXRlX2luZm8gPSBBLmdldCBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwX2ludiBpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlByZWRpY2F0ZTogJWkgXCIgaSBpblxuICAgIGxldCAoKSA9IHByaW50X3ByZWRpY2F0ZV9pbmZvIGxvZyBwcmVkaWNhdGVfaW5mbyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAoKVxuXG4gIGxldCBwcmludF9wcmVibGFja2JvYXJkIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgbG9nID0gQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKipQUkVCTEFDS0JPQVJEKipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKiAgYWdlbnQgdHlwZXMgKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBBLml0ZXJpXG4gICAgICAgIChmdW4gbmFtZSAtPlxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJBZ2VudCBuYW1lOiAlaSBcIiBuYW1lIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgIExpc3QuaXRlciAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiBpZDogJWkgXCIgeCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgICAgICgpKSlcbiAgICAgICAgYmxhY2tib2FyZC5oaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiogc3RlcHMgYnkgY29sdW1uICpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQS5pdGVyaVxuICAgICAgICAoZnVuIGlkIChuZXZlbnRzLCBsaXN0KSAtPlxuICAgICAgICAgIGxldCAoKSA9IHByaW50X3ByZWRpY2F0ZV9pZCBsb2cgYmxhY2tib2FyZCBpZCBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJuZXZlbnRzOiAlaSBcIiBuZXZlbnRzIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgKGZ1biAoZWlkLCBzZWlkLCB0ZXN0LCBhY3Rpb24pIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkV2ZW50IGlkOiAlaSBcIiBlaWQgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlNob3J0IGlkOiAlaSBcIiBzZWlkIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2tub3duIGxvZyB0ZXN0IFwiVEVTVDogICBcIiBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgdGVzdCBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9rbm93biBsb2cgYWN0aW9uIFwiQUNUSU9OOiBcIiBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgYWN0aW9uIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYgbGlzdClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCItLS1cIiBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAoKSlcbiAgICAgICAgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKiBTaWRlIGVmZmVjdHMgKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBBLml0ZXJpXG4gICAgICAgIChmdW4gaSBsaXN0IC0+XG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcImV2ZW50ICVpOiwgXCIgaSBpblxuICAgICAgICAgIGxldCAoKSA9IENJLlBvLksucHJpbnRfc2lkZV9lZmZlY3QgbG9nIGxpc3QgaW5cbiAgICAgICAgICAoKSlcbiAgICAgICAgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnRcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqUHJlZGljYXRlX2lkIHJlbGF0ZWQgdG8gdGhlIHByZWRpY2F0ZSAqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEEuaXRlcmlcbiAgICAgICAgKGZ1biBpIHMgLT5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfaWQgbG9nIGJsYWNrYm9hcmQgaSBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBQcmVkaWNhdGVpZFNldC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gcyAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIlaVwiIHMgaW5cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nKVxuICAgICAgICAgICAgICBzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiLS0tXCIgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgKCkpXG4gICAgICAgIGJsYWNrYm9hcmQucHJlZGljYXRlX2lkX2xpc3RfcmVsYXRlZF90b19wcmVkaWNhdGVfaWRcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqUGFzdCB2YWx1ZXMgb2YgYSBwcmVkaWNhdGUqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEEuaXRlcmlcbiAgICAgICAgKGZ1biBpIHMgLT5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfaWQgbG9nIGJsYWNrYm9hcmQgaSBpblxuICAgICAgICAgIGxldCAoKSA9IEMuaXRlciAoZnVuIHMgLT4gcHJpbnRfcHJlZGljYXRlX3ZhbHVlIGxvZyBzKSBzIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIi0tLVwiIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICgpKVxuICAgICAgICBibGFja2JvYXJkLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqT2JzZXJ2YWJsZXMqXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKGwsIF8pIC0+XG4gICAgICAgICAgbGV0IF8gPSBMaXN0Lml0ZXIgKExvZ2dlcnMuZnByaW50ZiBsb2cgXCIlaSxcIikgbCBpblxuICAgICAgICAgIGxldCBfID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICgpKVxuICAgICAgICBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKClcblxuICAoKiogaW5mb3JtYXRpb24gbGF0dGljZSAqKVxuXG4gIGxldCBzdHJpY3RseV9tb3JlX3JlZmluZWQgeCB5ID1cbiAgICBtYXRjaCB5IHdpdGhcbiAgICB8IFVuZGVmaW5lZCB8IFBvaW50ZXJfdG9fYWdlbnQgXyB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBQcmVzZW50XG4gICAgfCBGcmVlIHwgQm91bmRfdG8gXyAtPlxuICAgICAgZmFsc2VcbiAgICB8IEJvdW5kX3RvX3R5cGUgKGFnLCBzKSAtPlxuICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgfCBCb3VuZF90byAoXywgXywgYWcnLCBzJykgd2hlbiBhZyA9IGFnJyAmJiBzID0gcycgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgQm91bmQgLT5cbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgIHwgQm91bmRfdG8gXyB8IEJvdW5kX3RvX3R5cGUgXyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfCBEZWZpbmVkIC0+XG4gICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICB8IFVua25vd24gfCBEZWZpbmVkIHwgVW5kZWZpbmVkIC0+IGZhbHNlXG4gICAgICB8IF8gLT4gdHJ1ZSlcbiAgICB8IFVua25vd24gLT5cbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgIHwgVW5rbm93biAtPiBmYWxzZVxuICAgICAgfCBfIC0+IHRydWUpXG5cbiAgbGV0IG1vcmVfcmVmaW5lZCB4IHkgPSB4ID0geSB8fCBzdHJpY3RseV9tb3JlX3JlZmluZWQgeCB5XG5cbiAgbGV0IGNvbmogcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIHggeSA9XG4gICAgaWYgbW9yZV9yZWZpbmVkIHggeSB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIHhcbiAgICBlbHNlIGlmIHN0cmljdGx5X21vcmVfcmVmaW5lZCB5IHggdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCB5XG4gICAgZWxzZVxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcImNvbmosICBBcmd1bWVudHMgaGF2ZSBubyBncmVhdGVzdCBsb3dlciBib3VuZFwiXG4gICAgICAgIChGYWlsdXJlIFwiQXJndW1lbnRzIGhhdmUgbm8gZ3JlYXRlc3QgbG93ZXIgYm91bmRcIikgVW5kZWZpbmVkXG5cbiAgbGV0IGNvbXBhdGlibGUgeCB5ID0geCA9IHkgfHwgbW9yZV9yZWZpbmVkIHggeSB8fCBtb3JlX3JlZmluZWQgeSB4XG5cbiAgbGV0IGRpc2p1bmN0aW9uIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgeCB5ID1cbiAgICAoIGVycm9yLFxuICAgICAgbG9nX2luZm8sXG4gICAgICBpZiB4ID0geSB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB4LCB5IHdpdGhcbiAgICAgICAgfCBVbmtub3duLCBfIHwgXywgVW5rbm93biB8IFVuZGVmaW5lZCwgXyB8IF8sIFVuZGVmaW5lZCAtPiBVbmtub3duXG4gICAgICAgIHwgRGVmaW5lZCwgXyB8IF8sIERlZmluZWQgLT4gRGVmaW5lZFxuICAgICAgICB8IENvdW50ZXIgXywgX1xuICAgICAgICB8IF8sIENvdW50ZXIgX1xuICAgICAgICB8IEZyZWUsIF9cbiAgICAgICAgfCBfLCBGcmVlXG4gICAgICAgIHwgUHJlc2VudCwgX1xuICAgICAgICB8IF8sIFByZXNlbnRcbiAgICAgICAgfCBJbnRlcm5hbF9zdGF0ZV9pcyBfLCBfXG4gICAgICAgIHwgXywgSW50ZXJuYWxfc3RhdGVfaXMgXyAtPlxuICAgICAgICAgIERlZmluZWRcbiAgICAgICAgfCBCb3VuZCwgXyB8IF8sIEJvdW5kIC0+IEJvdW5kXG4gICAgICAgIHwgQm91bmRfdG9fdHlwZSAoYSwgYiksIEJvdW5kX3RvIChfLCBfLCBjLCBkKVxuICAgICAgICB8IEJvdW5kX3RvIChfLCBfLCBhLCBiKSwgQm91bmRfdG8gKF8sIF8sIGMsIGQpXG4gICAgICAgIHwgQm91bmRfdG8gKF8sIF8sIGEsIGIpLCBCb3VuZF90b190eXBlIChjLCBkKVxuICAgICAgICAgIHdoZW4gYSA9IGMgJiYgYiA9IGQgLT5cbiAgICAgICAgICBCb3VuZF90b190eXBlIChhLCBiKVxuICAgICAgICB8IF8gLT4gQm91bmRcbiAgICAgICkgKVxuXG4gICgqKiBwcmVkaWNhdGUgaWQgYWxsb2NhdGlvbiAqKVxuXG4gICgqKiBpZiBhIHdpcmUgY29uY2VybnMgYW4gYWdlbnQsIHdoaWNoIG9uZSBpdCBpcyAqKVxuICBsZXQgYWdlbnRfaWRfb2ZfcHJlZGljYXRlIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgSGVyZSB4IC0+IFNvbWUgeFxuICAgIHwgQm91bmRfc2l0ZSAoeCwgXykgLT4gU29tZSB4XG4gICAgfCBJbnRlcm5hbF9zdGF0ZSAoeCwgXykgLT4gU29tZSB4XG4gICAgfCBQb2ludGVyIF8gfCBNdXRleCBfIHwgTGluayBfIHwgRmljdGl0aW91cyAtPiBOb25lXG5cbiAgbGV0IHJlYyBiaW5kIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgX3ByZWRpY2F0ZVxuICAgICAgcHJlZGljYXRlX2lkIGFnX2lkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBzaWQgPVxuICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCAoSGVyZSBhZ19pZClcbiAgICBpblxuICAgIGxldCBvbGRfc2V0ID1cbiAgICAgIHRyeSBBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkIHNpZFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT4gUHJlZGljYXRlaWRTZXQuZW1wdHlcbiAgICBpblxuICAgIGxldCBuZXdfc2V0ID0gUHJlZGljYXRlaWRTZXQuYWRkIHByZWRpY2F0ZV9pZCBvbGRfc2V0IGluXG4gICAgdHJ5XG4gICAgICBsZXQgXyA9XG4gICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlZGljYXRlX2lkX2xpc3RfcmVsYXRlZF90b19wcmVkaWNhdGVfaWQgc2lkIG5ld19zZXRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcImJpbmQsIE91dCBvZiBib3VuZCBhY2Nlc3NcIlxuICAgICAgICAoRmFpbHVyZSBcImJpbmRcIikgYmxhY2tib2FyZFxuXG4gIGFuZCBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHByZWRpY2F0ZSA9XG4gICAgbGV0IGFnX2lkID0gYWdlbnRfaWRfb2ZfcHJlZGljYXRlIHByZWRpY2F0ZSBpblxuICAgIGxldCBtYXAgPSBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwIGluXG4gICAgbGV0IG1hcF9pbnYgPSBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwX2ludiBpblxuICAgIG1hdGNoIFByZWRpY2F0ZU1hcC5maW5kX29wdGlvbiBwcmVkaWNhdGUgbWFwIHdpdGhcbiAgICB8IFNvbWUgc2lkIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgc2lkXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgc2lkJyA9IGJsYWNrYm9hcmQucHJlX25jb2x1bW4gKyAxIGluXG4gICAgICBsZXQgbWFwJyA9IFByZWRpY2F0ZU1hcC5hZGQgcHJlZGljYXRlIHNpZCcgbWFwIGluXG4gICAgICBsZXQgXyA9IEEuc2V0IG1hcF9pbnYgc2lkJyBwcmVkaWNhdGUgaW5cbiAgICAgIGxldCBtYXBfaW52JyA9IG1hcF9pbnYgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5oaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkIHNpZCdcbiAgICAgICAgICAoQy5jcmVhdGUgcGFyYW1ldGVyLkNJLlBvLksuSC5jYWNoZV9zaXplKVxuICAgICAgaW5cbiAgICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgICAge1xuICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgIHByZV9uY29sdW1uID0gc2lkJztcbiAgICAgICAgICBwcmVfY29sdW1uX21hcCA9IG1hcCc7XG4gICAgICAgICAgcHJlX2NvbHVtbl9tYXBfaW52ID0gbWFwX2ludic7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgbWF0Y2ggYWdfaWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgIHwgU29tZSBhZ19pZCAtPlxuICAgICAgICAgIGJpbmQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcmVkaWNhdGUgc2lkJyBhZ19pZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgc2lkJ1xuXG4gIGxldCBjcmVhdGVfYWdlbnQgX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGFnZW50X25hbWUgYWdlbnRfaWQgPVxuICAgIGxldCBvbGRfbGlzdCA9XG4gICAgICB0cnkgQS5nZXQgYmxhY2tib2FyZC5oaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlIGFnZW50X25hbWVcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFtdXG4gICAgaW5cbiAgICBsZXQgbmV3X2xpc3QgPSBhZ2VudF9pZCA6OiBvbGRfbGlzdCBpblxuICAgIGxldCBfID0gQS5zZXQgYmxhY2tib2FyZC5oaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlIGFnZW50X25hbWUgbmV3X2xpc3QgaW5cbiAgICBlcnJvciwgYmxhY2tib2FyZFxuXG4gIGxldCBmcmVlX2FnZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWdlbnRfaWQgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIChIZXJlIGFnZW50X2lkKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc2V0ID1cbiAgICAgIHRyeVxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIEEuZ2V0IGJsYWNrYm9hcmQucHJlZGljYXRlX2lkX2xpc3RfcmVsYXRlZF90b19wcmVkaWNhdGVfaWRcbiAgICAgICAgICAgIHByZWRpY2F0ZV9pZCApXG4gICAgICB3aXRoIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlwiZnJlZV9hZ2VudCwgVHJ5IHRvIGZyZWUgYW4gdW5leGlzdGluZyBhZ2VudFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJmcmVlX2FnZW50XCIpIFByZWRpY2F0ZWlkU2V0LmVtcHR5XG4gICAgaW5cbiAgICBsZXQgbWFwID1cbiAgICAgIFByZWRpY2F0ZWlkU2V0LmZvbGRcbiAgICAgICAgKGZ1biBwcmVkaWNhdGVfaWQgbWFwIC0+XG4gICAgICAgICAgbGV0IHByZWRpY2F0ZSA9IEEuZ2V0IGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXBfaW52IHByZWRpY2F0ZV9pZCBpblxuICAgICAgICAgIFByZWRpY2F0ZU1hcC5yZW1vdmUgcHJlZGljYXRlIG1hcClcbiAgICAgICAgc2V0IGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXBcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgeyBibGFja2JvYXJkIHdpdGggcHJlX2NvbHVtbl9tYXAgPSBtYXAgfVxuXG4gIGxldCBmcmVlX2FnZW50X2lmX2l0X2V4aXN0cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBhZ2VudF9pZCA9XG4gICAgaWYgUHJlZGljYXRlTWFwLm1lbSAoSGVyZSBhZ2VudF9pZCkgYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcCB0aGVuXG4gICAgICBmcmVlX2FnZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWdlbnRfaWRcbiAgICBlbHNlXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgcHJlZGljYXRlc19vZl9hY3Rpb25fbm9fc3VicyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBpbml0IGFjdGlvbiA9XG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIChhZywgaW50ZXJmYWNlKSAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IGFnZW50X25hbWUgPSBDSS5Qby5LLmFnZW50X25hbWVfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgIGNyZWF0ZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGFnZW50X25hbWUgYWdfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgaWYgaW5pdCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmcmVlX2FnZW50X2lmX2l0X2V4aXN0cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBhZ19pZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgICBpblxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBsaXN0MSwgbGlzdDIpIChzX2lkLCBvcHQpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzX2lkKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsaXN0MSA9IChwcmVkaWNhdGVfaWQsIEZyZWUpIDo6IGxpc3QxIGluXG4gICAgICAgICAgbGV0IGxpc3QyID0gKHByZWRpY2F0ZV9pZCwgVW5kZWZpbmVkKSA6OiBsaXN0MiBpblxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdDEsIGxpc3QyXG4gICAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAoSW50ZXJuYWxfc3RhdGUgKGFnX2lkLCBzX2lkKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgKHByZWRpY2F0ZV9pZCwgSW50ZXJuYWxfc3RhdGVfaXMgeCkgOjogbGlzdDEsXG4gICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCkgOjogbGlzdDIgKSlcbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIFsgcHJlZGljYXRlX2lkLCBQcmVzZW50IF0sXG4gICAgICAgICAgWyBwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCBdIClcbiAgICAgICAgaW50ZXJmYWNlXG4gICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoc2l0ZSwgaW50KSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChJbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBJbnRlcm5hbF9zdGF0ZV9pcyBpbnQgXSwgW11cbiAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDEgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDIgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZGljYXRlX2lkMSwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDIsIGFnX2lkMiwgYWdlbnRfbmFtZTIsIHNpdGVfaWQyKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10gKVxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzMSwgczIpIC0+XG4gICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgYWdlbnRfbmFtZTEgPSBDSS5Qby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDEgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDIgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZGljYXRlX2lkMSwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDIsIGFnX2lkMiwgYWdlbnRfbmFtZTIsIHNpdGVfaWQyKTtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQyLCBCb3VuZF90byAocHJlZGljYXRlX2lkMSwgYWdfaWQxLCBhZ2VudF9uYW1lMSwgc2l0ZV9pZDEpO1xuICAgICAgICBdLFxuICAgICAgICBbXSApXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBGcmVlIF0sIFtdXG4gICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBhZyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCAoSGVyZSBhZ19pZClcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgZnJlZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFnX2lkXG4gICAgICBpblxuICAgICAgbGV0IHNldCA9XG4gICAgICAgIEEuZ2V0IGJsYWNrYm9hcmQucHJlZGljYXRlX2lkX2xpc3RfcmVsYXRlZF90b19wcmVkaWNhdGVfaWQgcHJlZGljYXRlX2lkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkLCBsaXN0ID1cbiAgICAgICAgUHJlZGljYXRlaWRTZXQuZm9sZFxuICAgICAgICAgIChmdW4gcHJlZGljYXRlaWQgKGVycm9yLCBibGFja2JvYXJkLCBsaXN0KSAtPlxuICAgICAgICAgICAgZXJyb3IsIGJsYWNrYm9hcmQsIChwcmVkaWNhdGVpZCwgVW5kZWZpbmVkKSA6OiBsaXN0KVxuICAgICAgICAgIHNldFxuICAgICAgICAgIChlcnJvciwgYmxhY2tib2FyZCwgWyBwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCBdKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdCwgW11cblxuICBsZXQgcHJlZGljYXRlc19vZl9hY3Rpb25fc3VicyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGluaXRcbiAgICAgIGFjdGlvbiA9XG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIChhZywgaW50ZXJmYWNlKSAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IGFnZW50X25hbWUgPSBDSS5Qby5LLmFnZW50X25hbWVfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgIGNyZWF0ZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGFnZW50X25hbWUgYWdfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgaWYgaW5pdCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmcmVlX2FnZW50X2lmX2l0X2V4aXN0cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBhZ19pZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgICBpblxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBsaXN0MSwgbGlzdDIpIChzX2lkLCBvcHQpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzX2lkKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsaXN0MSA9IChwcmVkaWNhdGVfaWQsIEZyZWUpIDo6IGxpc3QxIGluXG4gICAgICAgICAgbGV0IGxpc3QyID0gKHByZWRpY2F0ZV9pZCwgVW5kZWZpbmVkKSA6OiBsaXN0MiBpblxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdDEsIGxpc3QyXG4gICAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAoSW50ZXJuYWxfc3RhdGUgKGFnX2lkLCBzX2lkKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgKHByZWRpY2F0ZV9pZCwgSW50ZXJuYWxfc3RhdGVfaXMgeCkgOjogbGlzdDEsXG4gICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCkgOjogbGlzdDIgKSlcbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIFsgcHJlZGljYXRlX2lkLCBQcmVzZW50IF0sXG4gICAgICAgICAgWyBwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCBdIClcbiAgICAgICAgaW50ZXJmYWNlXG4gICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoc2l0ZSwgaW50KSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChJbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBJbnRlcm5hbF9zdGF0ZV9pcyBpbnQgXSwgW11cbiAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDEgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDIgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZGljYXRlX2lkMSwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDIsIGFnX2lkMiwgYWdlbnRfbmFtZTIsIHNpdGVfaWQyKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10gKVxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzMSwgczIpIC0+XG4gICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgYWdlbnRfbmFtZTEgPSBDSS5Qby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDEgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDIgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZGljYXRlX2lkMSwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDIsIGFnX2lkMiwgYWdlbnRfbmFtZTIsIHNpdGVfaWQyKTtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQyLCBCb3VuZF90byAocHJlZGljYXRlX2lkMSwgYWdfaWQxLCBhZ2VudF9uYW1lMSwgc2l0ZV9pZDEpO1xuICAgICAgICBdLFxuICAgICAgICBbXSApXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBGcmVlIF0sIFtdXG4gICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBhZyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCAoSGVyZSBhZ19pZClcbiAgICAgIGluXG4gICAgICAoKiAgICAgICAgICAgICAgIGxldCBlcnJvcixibGFja2JvYXJkID0gZnJlZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGFnX2lkIGluICopXG4gICAgICBsZXQgc2V0ID1cbiAgICAgICAgQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVfaWRfbGlzdF9yZWxhdGVkX3RvX3ByZWRpY2F0ZV9pZCBwcmVkaWNhdGVfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBsaXN0ID1cbiAgICAgICAgUHJlZGljYXRlaWRTZXQuZm9sZFxuICAgICAgICAgIChmdW4gcHJlZGljYXRlaWQgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdCkgLT5cbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgKHByZWRpY2F0ZWlkLCBVbmRlZmluZWQpIDo6IGxpc3QpXG4gICAgICAgICAgc2V0XG4gICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgWyBwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCBdKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdCwgW11cblxuICBsZXQgcHJlZGljYXRlc19vZl9hY3Rpb24gYm9vbCA9XG4gICAgaWYgYm9vbCB0aGVuXG4gICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbl9zdWJzXG4gICAgZWxzZVxuICAgICAgcHJlZGljYXRlc19vZl9hY3Rpb25fbm9fc3Vic1xuXG4gIGxldCBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB0ZXN0ID1cbiAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZ2VudCAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCAoSGVyZSBhZ19pZClcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBQcmVzZW50IF1cbiAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChzaXRlLCBpbnQpIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEludGVybmFsX3N0YXRlXG4gICAgICAgICAgICAgKENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlLCBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUpKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgWyBwcmVkaWNhdGVfaWQsIEludGVybmFsX3N0YXRlX2lzIGludCBdXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBGcmVlIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIGxldCBhZ19pZDEgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ19pZDIgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMSA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgYWdlbnRfbmFtZTIgPSBDSS5Qby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IHNpdGVfaWQxID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IHNpdGVfaWQyID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkMSA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoQm91bmRfc2l0ZSAoYWdfaWQxLCBzaXRlX2lkMSkpXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkMiA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoQm91bmRfc2l0ZSAoYWdfaWQyLCBzaXRlX2lkMikpXG4gICAgICBpblxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgIFtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQxLCBCb3VuZF90byAocHJlZGljYXRlX2lkMiwgYWdfaWQyLCBhZ2VudF9uYW1lMiwgc2l0ZV9pZDIpO1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDIsIEJvdW5kX3RvIChwcmVkaWNhdGVfaWQxLCBhZ19pZDEsIGFnZW50X25hbWUxLCBzaXRlX2lkMSk7XG4gICAgICAgIF0gKVxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBzIC0+XG4gICAgICBsZXQgYWdfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHNpdGVfaWQgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgWyBwcmVkaWNhdGVfaWQsIEJvdW5kIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSAocywgKGFnZW50X25hbWUsIHNpdGVfbmFtZSkpIC0+XG4gICAgICBsZXQgYWdfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHNpdGVfaWQgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbIHByZWRpY2F0ZV9pZCwgQm91bmRfdG9fdHlwZSAoYWdlbnRfbmFtZSwgc2l0ZV9uYW1lKSBdIClcblxuICBsZXQgdHlwZV9vZl9zdGVwIHggPVxuICAgIGlmIFRyYWNlLnN0ZXBfaXNfb2JzIHggdGhlblxuICAgICAgT2JzZXJ2YWJsZVxuICAgIGVsc2UgaWYgVHJhY2Uuc3RlcF9pc19pbml0IHggdGhlblxuICAgICAgSW5pdFxuICAgIGVsc2UgaWYgVHJhY2Uuc3RlcF9pc19ydWxlIHggdGhlblxuICAgICAgUnVsZVxuICAgIGVsc2UgaWYgVHJhY2Uuc3RlcF9pc19zdWJzIHggdGhlblxuICAgICAgU3Vic1xuICAgIGVsc2VcbiAgICAgIER1bW15XG5cbiAgKCoqIGluaXRpYWxpc2F0aW9uKilcbiAgbGV0IGluaXQgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciA9XG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAge1xuICAgICAgICBwcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgPSBBLm1ha2UgMSBDSS5Qby5LLmVtcHR5X3NpZGVfZWZmZWN0O1xuICAgICAgICBwcmVfZXZlbnQgPSBBLm1ha2UgMSAoVHJhY2UuZHVtbXlfc3RlcCBcIlwiKTtcbiAgICAgICAgcHJlX2ZpY3RpdGlvdXNfbGlzdCA9IFtdO1xuICAgICAgICBwcmVfc3RlcHNfYnlfY29sdW1uID0gQS5tYWtlIDEgKDEsIFtdKTtcbiAgICAgICAgcHJlX25zdGVwcyA9IC0xO1xuICAgICAgICBwcmVfbmNvbHVtbiA9IC0xO1xuICAgICAgICBwcmVfY29sdW1uX21hcCA9IFByZWRpY2F0ZU1hcC5lbXB0eTtcbiAgICAgICAgcHJlX2NvbHVtbl9tYXBfaW52ID0gQS5tYWtlIDEgRmljdGl0aW91cztcbiAgICAgICAgcHJlX2tpbmRfb2ZfZXZlbnQgPSBBLm1ha2UgMSAoU2lkZV9lZmZlY3Rfb2YgKC0xLCBbXSkpO1xuICAgICAgICBoaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkID0gQS5tYWtlIDEgKEMuY3JlYXRlIE5vbmUpO1xuICAgICAgICBoaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlID0gQS5tYWtlIDEgW107XG4gICAgICAgIHByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkID1cbiAgICAgICAgICBBLm1ha2UgMSBQcmVkaWNhdGVpZFNldC5lbXB0eTtcbiAgICAgICAgcHJlX29ic2VydmFibGVfbGlzdCA9IFtdO1xuICAgICAgICBwcmVfZmljdGl0aW91c19vYnNlcnZhYmxlID0gTm9uZTtcbiAgICAgICAgcHJlX2xldmVsX29mX2V2ZW50ID0gQS5tYWtlIDEgUHJpb3JpdHkuaGlnaGVzdDtcbiAgICAgIH0gKVxuXG4gIGxldCBnZXRfbGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZWlkID1cbiAgICB0cnkgZXJyb3IsIGxvZ19pbmZvLCBBLmdldCBibGFja2JvYXJkLnByZV9sZXZlbF9vZl9ldmVudCBlaWRcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfXyAoRmFpbHVyZSBcIlVOa25vd24gZXZlbnRcIilcbiAgICAgICAgUHJpb3JpdHkuaGlnaGVzdFxuXG4gIGxldCBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkID1cbiAgICBsZXQgbnNpZCA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyArIDEgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19uX3NpZGVfZXZlbnRzIGxvZ19pbmZvIGluXG4gICAgbGV0IHRlc3QgPSBVbmRlZmluZWQgaW5cbiAgICBsZXQgYWN0aW9uID0gQ291bnRlciAwIGluXG4gICAgbGV0IF8gPVxuICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uIHByZWRpY2F0ZV9pZFxuICAgICAgICAoMiwgWyBuc2lkLCAxLCB0ZXN0LCBhY3Rpb24gXSlcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgeyBibGFja2JvYXJkIHdpdGggcHJlX25zdGVwcyA9IG5zaWQgfVxuXG4gIGxldCBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uX2F0X25zaWQgbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmQgbnNpZFxuICAgICAgPVxuICAgIGxldCB0ZXN0ID0gVW5kZWZpbmVkIGluXG4gICAgbGV0IGFjdGlvbiA9IENvdW50ZXIgMCBpblxuICAgIGxldCBfID1cbiAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtbiBwcmVkaWNhdGVfaWRcbiAgICAgICAgKDIsIFsgbnNpZCwgMSwgdGVzdCwgYWN0aW9uIF0pXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZCBpbml0X3N0ZXAgPVxuICAgIG1hdGNoIGluaXRfc3RlcCB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgU29tZSBibGFja2JvYXJkLnByZV9uc3RlcHNcbiAgICB8IFNvbWUgbnNpZCAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb25fYXRfbnNpZCBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgICAgIG5zaWRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcFxuXG4gIGxldCBhZGRfZmljdGl0aW91c19hY3Rpb24gZXJyb3IgdGVzdCBhY3Rpb24gcHJlZGljYXRlX2lkIGJsYWNrYm9hcmQgPVxuICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzIGluXG4gICAgbGV0IG1hcCA9IGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtbiBpblxuICAgIGxldCB2YWx1ZSwgbGlzdCA9IEEuZ2V0IG1hcCBwcmVkaWNhdGVfaWQgaW5cbiAgICBsZXQgdmFsdWUnID0gdmFsdWUgKyAxIGluXG4gICAgbGV0IF8gPVxuICAgICAgQS5zZXQgbWFwIHByZWRpY2F0ZV9pZCAodmFsdWUnLCAobnNpZCwgdmFsdWUsIHRlc3QsIGFjdGlvbikgOjogbGlzdClcbiAgICBpblxuICAgIGVycm9yLCBibGFja2JvYXJkXG5cbiAgbGV0IHNpZGVfZWZmZWN0IHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfdGFyZ2V0X2lkIHMgc2l0ZSA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBEZWZpbmVkIHwgQ291bnRlciBfIHwgSW50ZXJuYWxfc3RhdGVfaXMgXyB8IFVuZGVmaW5lZCB8IFBvaW50ZXJfdG9fYWdlbnQgX1xuICAgIHwgUHJlc2VudCB8IEJvdW5kIHwgQm91bmRfdG9fdHlwZSBfIHwgVW5rbm93biAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcIklsbGVnYWwgc3RhdGUgZm9yIGEgc2lkZS1lZmZlY3RzXCJcbiAgICAgICAgKEZhaWx1cmUgXCJCbGFja2JvYXJkX2dlbmVyYXRpb24uc2lkZV9lZmZlY3RcIikgW11cbiAgICB8IEZyZWUgLT4gZXJyb3IsIGxvZ19pbmZvLCBbIHByZWRpY2F0ZV90YXJnZXRfaWQsIE5vbmUsIChGcmVlLCBVbmtub3duKSBdXG4gICAgfCBCb3VuZF90byAocGlkLCBhZywgYWdlbnRfbmFtZSwgc25hbWUpIC0+XG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV90YXJnZXRfaWQsIE5vbmUsIChzLCBVbmtub3duKTtcbiAgICAgICAgICAoIHBpZCxcbiAgICAgICAgICAgIFNvbWUgKChhZywgYWdlbnRfbmFtZSksIHNuYW1lKSxcbiAgICAgICAgICAgICggQm91bmRfdG9cbiAgICAgICAgICAgICAgICAoIHByZWRpY2F0ZV90YXJnZXRfaWQsXG4gICAgICAgICAgICAgICAgICBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSxcbiAgICAgICAgICAgICAgICAgIENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHNpdGUsXG4gICAgICAgICAgICAgICAgICBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUgKSxcbiAgICAgICAgICAgICAgRnJlZSApICk7XG4gICAgICAgIF0gKVxuXG4gIGxldCBwcmVkaWNhdGVfdmFsdWVfb2ZfYmluZGluZ19zdGF0ZSBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgPVxuICAgIGZ1bmN0aW9uXG4gICAgfCBJbnN0YW50aWF0aW9uLkFOWSAtPiBlcnJvciwgbG9nX2luZm8sIFVua25vd25cbiAgICB8IEluc3RhbnRpYXRpb24uRlJFRSAtPiBlcnJvciwgbG9nX2luZm8sIEZyZWVcbiAgICB8IEluc3RhbnRpYXRpb24uQk9VTkQgLT4gZXJyb3IsIGxvZ19pbmZvLCBCb3VuZFxuICAgIHwgSW5zdGFudGlhdGlvbi5CT1VORF9UWVBFIGJ0IC0+XG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgQm91bmRfdG9fdHlwZVxuICAgICAgICAgICggQ0kuUG8uSy5hZ2VudF9uYW1lX29mX2JpbmRpbmdfdHlwZSBidCxcbiAgICAgICAgICAgIENJLlBvLksuc2l0ZV9uYW1lX29mX2JpbmRpbmdfdHlwZSBidCApIClcbiAgICB8IEluc3RhbnRpYXRpb24uQk9VTkRfdG8gXyAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcIklsbGVnYWwgYmluZGluZyBzdGF0ZSBpbiBwcmVkaWNhdGVfdmFsdWVfb2ZfYmluZGluZ19zdGF0ZVwiXG4gICAgICAgIChGYWlsdXJlIFwicHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhdGVcIikgVW5rbm93blxuXG4gIGxldCBwb3RlbnRpYWxfdGFyZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc2l0ZVxuICAgICAgYmluZGluZ19zdGF0ZSA9XG4gICAgbGV0IGFnZW50X2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUgaW5cbiAgICBsZXQgc2l0ZV9uYW1lID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX3RhcmdldF9pZCA9XG4gICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIChCb3VuZF9zaXRlIChhZ2VudF9pZCwgc2l0ZV9uYW1lKSlcbiAgICBpblxuICAgIGxldCBmb3JtZXJfc3RhdGVzID1cbiAgICAgIEEuZ2V0IGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZFxuICAgICAgICBwcmVkaWNhdGVfdGFyZ2V0X2lkXG4gICAgaW5cbiAgICBtYXRjaCBwYXJhbWV0ZXIuQ0kuUG8uSy5ILmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSB3aXRoXG4gICAgfCBOb25lIHwgU29tZSBTdG9yeV9qc29uLkNhdXNhbCAtPlxuICAgICAgbGV0IHMgPSBDLmxhc3QgZm9ybWVyX3N0YXRlcyBpblxuICAgICAgKG1hdGNoIHMgd2l0aFxuICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW11cbiAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJ0ID1cbiAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVfb2ZfYmluZGluZ19zdGF0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgYmluZGluZ19zdGF0ZVxuICAgICAgICBpblxuICAgICAgICBpZiBtb3JlX3JlZmluZWQgcyBidCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsID1cbiAgICAgICAgICAgIHNpZGVfZWZmZWN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV90YXJnZXRfaWQgc1xuICAgICAgICAgICAgICBzaXRlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgbCBdXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW10pXG4gICAgfCBTb21lIChTdG9yeV9qc29uLlN0cm9uZyB8IFN0b3J5X2pzb24uV2VhaykgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJ0ID1cbiAgICAgICAgcHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICBiaW5kaW5nX3N0YXRlXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgIEMuZm9sZFxuICAgICAgICAgIChmdW4gcyAoZXJyb3IsIGxvZ19pbmZvLCBsaXN0KSAtPlxuICAgICAgICAgICAgaWYgbW9yZV9yZWZpbmVkIHMgYnQgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGwgPVxuICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV90YXJnZXRfaWRcbiAgICAgICAgICAgICAgICAgIHMgc2l0ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGwgOjogbGlzdFxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgbGlzdClcbiAgICAgICAgICBmb3JtZXJfc3RhdGVzIChlcnJvciwgbG9nX2luZm8sIFtdKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdFxuXG4gIHR5cGUgZGF0YV9zdHJ1Y3R1cmVfc3Ryb25nID0ge1xuICAgIG5ld19hZ2VudHM6IEFnZW50SWRTZXQudDtcbiAgICBvbGRfYWdlbnRzOiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWUgQWdlbnRJZE1hcC50O1xuICAgIG9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvbjogQ0kuUG8uSy5hZ2VudF9pZCBsaXN0IEFnZW50SWRNYXAudDtcbiAgICBzdXJlX2FnZW50czogQWdlbnRJZFNldC50O1xuICAgIHN1cmVfbGlua3M6IEFnZW50SWQyU2V0LnQ7XG4gICAgb3RoZXJfbGlua3M6IEFnZW50SWQyU2V0LnQ7XG4gICAgc2l0ZXNfaW5fb3RoZXJfbGlua3M6IFNpdGVJZFNldC50O1xuICAgIHNpdGVzX2luX290aGVyX2FjdGlvbl9saW5rczogU2l0ZUlkU2V0LnQ7XG4gICAgb3RoZXJfbGlua3NfdGVzdF9zaXRlczogQ0kuUG8uSy5hZ2VudF9pZCBTaXRlSWRNYXAudDtcbiAgICBvdGhlcl9saW5rc19hY3Rpb25fc2l0ZXM6IENJLlBvLksuYWdlbnRfaWQgU2l0ZUlkTWFwLnQ7XG4gICAgc3VyZV90ZXN0czogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdDtcbiAgICBzdXJlX2FjdGlvbnM6IEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdDtcbiAgICBjcmVhdGVfYWN0aW9uczogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmFjdGlvbiBsaXN0O1xuICAgIHN1cmVfc2lkZV9lZmZlY3RzOlxuICAgICAgKEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlXG4gICAgICAqIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5iaW5kaW5nX3N0YXRlKVxuICAgICAgbGlzdDtcbiAgICBvdGhlcl9hZ2VudHNfdGVzdHM6XG4gICAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24udGVzdCBsaXN0IEFnZW50SWRNYXAudDtcbiAgICBvdGhlcl9hZ2VudHNfYWN0aW9uczpcbiAgICAgIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdCBBZ2VudElkTWFwLnQ7XG4gICAgb3RoZXJfbGlua3NfdGVzdHM6XG4gICAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24udGVzdCBsaXN0IEFnZW50SWQyTWFwLnQ7XG4gICAgb3RoZXJfbGlua3NfYWN0aW9uczpcbiAgICAgIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdCBBZ2VudElkMk1hcC50O1xuICAgIG90aGVyX2xpbmtzX3ByaW9yaXR5OiBBZ2VudElkMlNldC50O1xuICAgIG90aGVyX2FnZW50c19zaWRlX2VmZmVjdHM6XG4gICAgICAoSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGVcbiAgICAgICogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmJpbmRpbmdfc3RhdGUpXG4gICAgICBsaXN0XG4gICAgICBBZ2VudElkTWFwLnQ7XG4gICAgc3Vic19hZ2VudHNfaW52b2x2ZWRfaW5fbGlua3M6IEFnZW50SWRTZXQudDtcbiAgICBydWxlX2FnZW50X2lkX211dGV4OiBwcmVkaWNhdGVfaWQgQWdlbnRJZE1hcC50O1xuICAgIHJ1bGVfYWdlbnRfaWRfc3ViczogcHJlZGljYXRlX2lkIEFnZW50SWRNYXAudDtcbiAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4OiBwcmVkaWNhdGVfaWQgQWdlbnRJZE1hcC50O1xuICAgIGxpbmtzX211dGV4OiBwcmVkaWNhdGVfaWQgQWdlbnRJZDJNYXAudDtcbiAgICByZW1vdmVkX2FnZW50czogQWdlbnRJZFNldC50O1xuICAgIHJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3M6IFNpdGVJZFNldC50O1xuICB9XG5cbiAgbGV0IGluaXRfZGF0YV9zdHJ1Y3R1cmVfc3Ryb25nID1cbiAgICB7XG4gICAgICBuZXdfYWdlbnRzID0gQWdlbnRJZFNldC5lbXB0eTtcbiAgICAgIG9sZF9hZ2VudHMgPSBBZ2VudElkTWFwLmVtcHR5O1xuICAgICAgb2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uID0gQWdlbnRJZE1hcC5lbXB0eTtcbiAgICAgIHN1cmVfYWdlbnRzID0gQWdlbnRJZFNldC5lbXB0eTtcbiAgICAgIHN1cmVfbGlua3MgPSBBZ2VudElkMlNldC5lbXB0eTtcbiAgICAgIG90aGVyX2xpbmtzID0gQWdlbnRJZDJTZXQuZW1wdHk7XG4gICAgICBvdGhlcl9saW5rc190ZXN0X3NpdGVzID0gU2l0ZUlkTWFwLmVtcHR5O1xuICAgICAgb3RoZXJfbGlua3NfYWN0aW9uX3NpdGVzID0gU2l0ZUlkTWFwLmVtcHR5O1xuICAgICAgc2l0ZXNfaW5fb3RoZXJfbGlua3MgPSBTaXRlSWRTZXQuZW1wdHk7XG4gICAgICBzaXRlc19pbl9vdGhlcl9hY3Rpb25fbGlua3MgPSBTaXRlSWRTZXQuZW1wdHk7XG4gICAgICBzdXJlX3Rlc3RzID0gW107XG4gICAgICBzdXJlX2FjdGlvbnMgPSBbXTtcbiAgICAgIGNyZWF0ZV9hY3Rpb25zID0gW107XG4gICAgICBzdXJlX3NpZGVfZWZmZWN0cyA9IFtdO1xuICAgICAgb3RoZXJfYWdlbnRzX3Rlc3RzID0gQWdlbnRJZE1hcC5lbXB0eTtcbiAgICAgIG90aGVyX2FnZW50c19hY3Rpb25zID0gQWdlbnRJZE1hcC5lbXB0eTtcbiAgICAgIG90aGVyX2xpbmtzX3ByaW9yaXR5ID0gQWdlbnRJZDJTZXQuZW1wdHk7XG4gICAgICBvdGhlcl9saW5rc190ZXN0cyA9IEFnZW50SWQyTWFwLmVtcHR5O1xuICAgICAgb3RoZXJfbGlua3NfYWN0aW9ucyA9IEFnZW50SWQyTWFwLmVtcHR5O1xuICAgICAgb3RoZXJfYWdlbnRzX3NpZGVfZWZmZWN0cyA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBzdWJzX2FnZW50c19pbnZvbHZlZF9pbl9saW5rcyA9IEFnZW50SWRTZXQuZW1wdHk7XG4gICAgICBydWxlX2FnZW50X2lkX211dGV4ID0gQWdlbnRJZE1hcC5lbXB0eTtcbiAgICAgIHJ1bGVfYWdlbnRfaWRfc3VicyA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBsaW5rc19tdXRleCA9IEFnZW50SWQyTWFwLmVtcHR5O1xuICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICByZW1vdmVkX2FnZW50cyA9IEFnZW50SWRTZXQuZW1wdHk7XG4gICAgICByZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzID0gU2l0ZUlkU2V0LmVtcHR5O1xuICAgIH1cblxuICBsZXQgcHJpbnRfZGF0YV9zdHJ1Y3R1cmUgX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBfZGF0YSA9XG4gICAgKCogbGV0IHN0ZGVyciA9IHBhcmFtZXRlci5DSS5Qby5LLkgub3V0X2NoYW5uZWxfZXJyIGluXG4gICAgICAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGhhbmRsZXIuQ0kuUG8uSy5ILmVudiBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiTmV3IGFnZW50czogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBBZ2VudElkU2V0Lml0ZXIgKEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAlaSBALlwiKSBkYXRhLm5ld19hZ2VudHNcbiAgICAgICBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiT2xkIGFnZW50czogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBBZ2VudElkTWFwLml0ZXIgKEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiBpZDolaTogdHlwZTolaSBALlwiKSBkYXRhLm9sZF9hZ2VudHNcbiAgICAgICBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiT2xkIGFnZW50cyBpbXBsaWVkIGluIGxpbmtzOiBALlwiIGluXG4gICAgICAgbGV0IF8gPVxuICAgICAgIEFnZW50SWRTZXQuaXRlciAoRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiICVpIEAuXCIpIGRhdGEuc3Vic19hZ2VudHNfaW52b2x2ZWRfaW5fbGlua3NcbiAgICAgICBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiVGVzdGVkX2xpbmtzX21hcDogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBTaXRlSWRNYXAuaXRlciAoZnVuIChhLGIpIC0+IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAlaS4laSAtPiAlaSBALlwiIGEgYiApIGRhdGEub3RoZXJfbGlua3NfdGVzdF9zaXRlcyBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiTW9kaWZpZWRfbGlua3NfbWFwOiBALlwiIGluXG4gICAgICAgbGV0IF8gPVxuICAgICAgIFNpdGVJZE1hcC5pdGVyIChmdW4gKGEsYikgLT4gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiICVpLiVpIC0+ICVpIEAuXCIgYSBiICkgZGF0YS5vdGhlcl9saW5rc19hY3Rpb25fc2l0ZXNcbiAgICAgICBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiUG90ZW50aWFsIHN1YnN0aXR1dGlvbjogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBBZ2VudElkTWFwLml0ZXJcbiAgICAgICAgIChmdW4gaWQgbCAtPlxuICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiIGlkOiVpQC5cIiBpZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBMaXN0Lml0ZXIgKEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAgICVpQC5cIikgbClcbiAgICAgICAgIGRhdGEub2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uXG4gICAgICAgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIlN1cmUgYWdlbnRzOkAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgQWdlbnRJZFNldC5pdGVyIChGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgJWlALlwiKSBkYXRhLnN1cmVfYWdlbnRzXG4gICAgICAgaW5cbiAgICAgICBsZXQgKCkgPVxuICAgICAgIEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIlN1cmUgdGVzdHM6QFs8diAxPiVhQF1ALlwiXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfdGVzdCB+c2lncykpXG4gICAgICAgZGF0YS5zdXJlX3Rlc3RzIGluXG4gICAgICAgbGV0ICgpID1cbiAgICAgICBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJUZXN0cyB0byBiZSBzdWJzdGl0dXRlZDpAWzx2IDE+QCwlYSVhQF1ALlwiXG4gICAgICAgKFBwLnNldCB+dHJhaWxpbmc6UHAuc3BhY2UgQWdlbnRJZE1hcC5iaW5kaW5ncyBQcC5zcGFjZVxuICAgICAgIChmdW4gZiAoaWQsbCkgLT5cbiAgICAgICBGb3JtYXQuZnByaW50ZlxuICAgICAgIGZcIiVpQCwlYVwiIGlkXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfdGVzdCB+c2lncykpXG4gICAgICAgbFxuICAgICAgICkpXG4gICAgICAgZGF0YS5vdGhlcl9hZ2VudHNfdGVzdHNcbiAgICAgICAoUHAuc2V0IEFnZW50SWQyTWFwLmJpbmRpbmdzIFBwLnNwYWNlXG4gICAgICAgKGZ1biBmICgoaWQxLGlkMiksbCkgLT5cbiAgICAgICBGb3JtYXQuZnByaW50ZlxuICAgICAgIGYgXCIoJWksJWkpQCwlYVwiIGlkMSBpZDJcbiAgICAgICAoUHAubGlzdCBQcC5zcGFjZSAoSW5zdGFudGlhdGlvbi5wcmludF9jb25jcmV0ZV90ZXN0IH5zaWdzKSlcbiAgICAgICBsKSlcbiAgICAgICBkYXRhLm90aGVyX2xpbmtzX3Rlc3RzIGluXG4gICAgICAgbGV0ICgpID1cbiAgICAgICBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJTdXJlIGFjdGlvbnM6QFs8diAxPiVhQF1ALlwiXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfYWN0aW9uIH5zaWdzKSlcbiAgICAgICBkYXRhLnN1cmVfYWN0aW9ucyBpblxuICAgICAgIGxldCAoKSA9XG4gICAgICAgRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiQWN0aW9ucyB0byBiZSBzdWJzdGl0dXRlZDpAWzx2IDE+QCwlYSVhQF1ALlwiXG4gICAgICAgKFBwLnNldCB+dHJhaWxpbmc6UHAuc3BhY2UgQWdlbnRJZE1hcC5iaW5kaW5ncyBQcC5zcGFjZVxuICAgICAgIChmdW4gZiAoaWQsbCkgLT5cbiAgICAgICBGb3JtYXQuZnByaW50ZlxuICAgICAgIGZcIiVpQCwlYVwiIGlkXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfYWN0aW9uIH5zaWdzKSlcbiAgICAgICBsXG4gICAgICAgKSlcbiAgICAgICBkYXRhLm90aGVyX2FnZW50c19hY3Rpb25zXG4gICAgICAgKFBwLnNldCBBZ2VudElkMk1hcC5iaW5kaW5ncyBQcC5zcGFjZVxuICAgICAgIChmdW4gZiAoKGlkMSxpZDIpLGwpIC0+XG4gICAgICAgRm9ybWF0LmZwcmludGZcbiAgICAgICBmIFwiKCVpLCVpKUAsJWFcIiBpZDEgaWQyXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfYWN0aW9uIH5zaWdzKSlcbiAgICAgICBsKSlcbiAgICAgICBkYXRhLm90aGVyX2xpbmtzX2FjdGlvbnMgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIlN1cmUgc2lkZV9lZmZlY3RzIEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAoQ0kuUG8uSy5wcmludF9zaWRlIHN0ZGVyciBoYW5kbGVyIFwiIFwiKVxuICAgICAgICAgZGF0YS5zdXJlX3NpZGVfZWZmZWN0c1xuICAgICAgIGluXG4gICAgICAgbGV0IF8gPSBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJTaWRlIGVmZmVjdCB0byBiZSBzdWJzdGl0dXRlZDogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBBZ2VudElkTWFwLml0ZXJcbiAgICAgICAgIChmdW4gaWQgbCAtPlxuICAgICAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAlaUAuXCIgaWQgaW5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAgKENJLlBvLksucHJpbnRfc2lkZSBzdGRlcnIgaGFuZGxlciBcIiAgXCIpXG4gICAgICAgICAgICAgICBsXG4gICAgICAgICAgIGluICgpKVxuICAgICAgICAgZGF0YS5vdGhlcl9hZ2VudHNfc2lkZV9lZmZlY3RzXG4gICAgICAgaW4qKVxuICAgIGVycm9yXG5cbiAgbGV0IGFkZF9zaXRlX2luX290aGVyX3Rlc3RfbGlua3Mgc2l0ZSBkYXRhX3N0cnVjdHVyZSA9XG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgc2l0ZXNfaW5fb3RoZXJfbGlua3MgPVxuICAgICAgICBTaXRlSWRTZXQuYWRkIHNpdGUgZGF0YV9zdHJ1Y3R1cmUuc2l0ZXNfaW5fb3RoZXJfbGlua3M7XG4gICAgfVxuXG4gIGxldCBhZGRfc2l0ZV9pbl9vdGhlcl9hY3Rpb25fbGlua3Mgc2l0ZSBkYXRhX3N0cnVjdHVyZSA9XG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID0gYWRkX3NpdGVfaW5fb3RoZXJfdGVzdF9saW5rcyBzaXRlIGRhdGFfc3RydWN0dXJlIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgc2l0ZXNfaW5fb3RoZXJfYWN0aW9uX2xpbmtzID1cbiAgICAgICAgU2l0ZUlkU2V0LmFkZCBzaXRlIGRhdGFfc3RydWN0dXJlLnNpdGVzX2luX290aGVyX2FjdGlvbl9saW5rcztcbiAgICB9XG5cbiAgbGV0IG1lbV9zaXRlX2luX290aGVyX2FjdGlvbl9saW5rcyBzaXRlIGRhdGFfc3RydWN0dXJlID1cbiAgICBTaXRlSWRTZXQubWVtIHNpdGUgZGF0YV9zdHJ1Y3R1cmUuc2l0ZXNfaW5fb3RoZXJfYWN0aW9uX2xpbmtzXG5cbiAgbGV0IGFkZF9zdXJlX3Rlc3QgdGVzdCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgeyBkYXRhX3N0cnVjdHVyZSB3aXRoIHN1cmVfdGVzdHMgPSB0ZXN0IDo6IGRhdGFfc3RydWN0dXJlLnN1cmVfdGVzdHMgfVxuXG4gIGxldCBhZGRfc3Vic190ZXN0IHRlc3QgYWdfaWQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIGxldCBvbGQgPVxuICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgW10gYWdfaWQgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX3Rlc3RzXG4gICAgaW5cbiAgICB7XG4gICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICBvdGhlcl9hZ2VudHNfdGVzdHMgPVxuICAgICAgICBBZ2VudElkTWFwLmFkZCBhZ19pZCAodGVzdCA6OiBvbGQpIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c190ZXN0cztcbiAgICB9XG5cbiAgbGV0IGFkZF9zdWJzX3Rlc3RfbGluayB0ZXN0IGxpbmsgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIGxldCBhLCBiID0gZnN0IGxpbmssIHNuZCBsaW5rIGluXG4gICAgbGV0IGxpbmsgPVxuICAgICAgaWYgYSA8IGIgdGhlblxuICAgICAgICBsaW5rXG4gICAgICBlbHNlXG4gICAgICAgIGIsIGFcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSwgb2xkID1cbiAgICAgIG1hdGNoIEFnZW50SWQyTWFwLmZpbmRfb3B0aW9uIGxpbmsgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdHMgd2l0aFxuICAgICAgfCBTb21lIHggLT4gZGF0YV9zdHJ1Y3R1cmUsIHhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgIG90aGVyX2xpbmtzID0gQWdlbnRJZDJTZXQuYWRkIGxpbmsgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbXSApXG4gICAgaW5cbiAgICB7XG4gICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICBvdGhlcl9saW5rc190ZXN0cyA9XG4gICAgICAgIEFnZW50SWQyTWFwLmFkZCBsaW5rICh0ZXN0IDo6IG9sZCkgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdHM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3VyZV9hY3Rpb24gYWN0aW9uIGRhdGFfc3RydWN0dXJlID1cbiAgICB7IGRhdGFfc3RydWN0dXJlIHdpdGggc3VyZV9hY3Rpb25zID0gYWN0aW9uIDo6IGRhdGFfc3RydWN0dXJlLnN1cmVfYWN0aW9ucyB9XG5cbiAgbGV0IGFkZF9jcmVhdGVfYWN0aW9uIGFjdGlvbiBkYXRhX3N0cnVjdHVyZSA9XG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgY3JlYXRlX2FjdGlvbnMgPSBhY3Rpb24gOjogZGF0YV9zdHJ1Y3R1cmUuY3JlYXRlX2FjdGlvbnM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3Vic19hY3Rpb24gYWN0aW9uIGFnX2lkIGRhdGFfc3RydWN0dXJlID1cbiAgICBsZXQgb2xkID1cbiAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIGFnX2lkIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c19hY3Rpb25zXG4gICAgaW5cbiAgICB7XG4gICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICBvdGhlcl9hZ2VudHNfYWN0aW9ucyA9XG4gICAgICAgIEFnZW50SWRNYXAuYWRkIGFnX2lkIChhY3Rpb24gOjogb2xkKSBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfYWN0aW9ucztcbiAgICB9XG5cbiAgbGV0IGFkZF9zdWJzX2FjdGlvbl9saW5rIGFjdGlvbiBsaW5rIGRhdGFfc3RydWN0dXJlID1cbiAgICBsZXQgYSwgYiA9IGZzdCBsaW5rLCBzbmQgbGluayBpblxuICAgIGxldCBsaW5rID1cbiAgICAgIGlmIGEgPCBiIHRoZW5cbiAgICAgICAgbGlua1xuICAgICAgZWxzZVxuICAgICAgICBiLCBhXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUsIG9sZCA9XG4gICAgICBtYXRjaCBBZ2VudElkMk1hcC5maW5kX29wdGlvbiBsaW5rIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX2FjdGlvbnMgd2l0aFxuICAgICAgfCBTb21lIHggLT4gZGF0YV9zdHJ1Y3R1cmUsIHhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgIG90aGVyX2xpbmtzID0gQWdlbnRJZDJTZXQuYWRkIGxpbmsgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbXSApXG4gICAgaW5cbiAgICB7XG4gICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICBvdGhlcl9saW5rc19hY3Rpb25zID1cbiAgICAgICAgQWdlbnRJZDJNYXAuYWRkIGxpbmsgKGFjdGlvbiA6OiBvbGQpIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX2FjdGlvbnM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3VyZV9zaWRlX2VmZmVjdCBzaWRlX2VmZmVjdCBkYXRhX3N0cnVjdHVyZSA9XG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgc3VyZV9zaWRlX2VmZmVjdHMgPSBzaWRlX2VmZmVjdCA6OiBkYXRhX3N0cnVjdHVyZS5zdXJlX3NpZGVfZWZmZWN0cztcbiAgICB9XG5cbiAgbGV0IGFkZF9zdWJzX3NpZGVfZWZmZWN0IHNpZGVfZWZmZWN0IGFnX2lkIGRhdGFfc3RydWN0dXJlID1cbiAgICBsZXQgc2l0ZSA9IGZzdCBzaWRlX2VmZmVjdCBpblxuICAgIGxldCBhZ2VudCA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbGV0IGFnZW50X2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgIGxldCBvbGQgPVxuICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgW10gYWdlbnRfaWRcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX3NpZGVfZWZmZWN0c1xuICAgIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgb3RoZXJfYWdlbnRzX3NpZGVfZWZmZWN0cyA9XG4gICAgICAgIEFnZW50SWRNYXAuYWRkIGFnX2lkIChzaWRlX2VmZmVjdCA6OiBvbGQpXG4gICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX3NpZGVfZWZmZWN0cztcbiAgICB9XG5cbiAgbGV0IGFkZF9zdGVwX3N0cm9uZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdGVwIGJsYWNrYm9hcmQgc3RlcF9pZCA9XG4gICAgbGV0IGluaXQgPSBUcmFjZS5zdGVwX2lzX2luaXQgc3RlcCBpblxuICAgIGxldCBwcmVfZXZlbnQgPSBibGFja2JvYXJkLnByZV9ldmVudCBpblxuICAgIGxldCB0ZXN0X2xpc3QgPSBUcmFjZS50ZXN0c19vZl9zdGVwIHN0ZXAgaW5cbiAgICBsZXQgYWN0aW9uX2xpc3QsIHNpZGVfZWZmZWN0ID0gVHJhY2UuYWN0aW9uc19vZl9zdGVwIHN0ZXAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPSBpbml0X2RhdGFfc3RydWN0dXJlX3N0cm9uZyBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIGFjdGlvbiAtPlxuICAgICAgICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoYWcsIF8pIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgbmV3X2FnZW50cyA9XG4gICAgICAgICAgICAgICAgQWdlbnRJZFNldC5hZGRcbiAgICAgICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnKVxuICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUubmV3X2FnZW50cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgbGV0IGFnMV9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnMl9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IHNpdGUxX2lkID0gYWcxX2lkLCBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgc2l0ZTJfaWQgPSBhZzJfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgICAgICAgICBvdGhlcl9saW5rc19hY3Rpb25fc2l0ZXMgPVxuICAgICAgICAgICAgICAgIFNpdGVJZE1hcC5hZGQgc2l0ZTFfaWQgYWcyX2lkXG4gICAgICAgICAgICAgICAgICAoU2l0ZUlkTWFwLmFkZCBzaXRlMl9pZCBhZzFfaWRcbiAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX2FjdGlvbl9zaXRlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBhZ2VudCAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgIHJlbW92ZWRfYWdlbnRzID1cbiAgICAgICAgICAgICAgICBBZ2VudElkU2V0LmFkZFxuICAgICAgICAgICAgICAgICAgKENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQpXG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5yZW1vdmVkX2FnZW50cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF9cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIF8gLT5cbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSBhY3Rpb25fbGlzdFxuICAgIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gZGF0YV9zdHJ1Y3R1cmUgdGVzdCAtPlxuICAgICAgICAgIG1hdGNoIHRlc3Qgd2l0aFxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGFnIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgb2xkX2FnZW50cyA9XG4gICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGRcbiAgICAgICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnKVxuICAgICAgICAgICAgICAgICAgKENJLlBvLksuYWdlbnRfbmFtZV9vZl9hZ2VudCBhZylcbiAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICAgICBsZXQgYWcxX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgYWcyX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICBsZXQgc2l0ZTFfaWQgPSBhZzFfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgIGxldCBzaXRlMl9pZCA9IGFnMl9pZCwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgICAgICAgICAgaWYgQWdlbnRJZFNldC5tZW0gYWcxX2lkIGRhdGFfc3RydWN0dXJlLnJlbW92ZWRfYWdlbnRzIHRoZW5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgICAgICByZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzID1cbiAgICAgICAgICAgICAgICAgICAgU2l0ZUlkU2V0LmFkZCBzaXRlMV9pZFxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgICAgICAgICBpZiBBZ2VudElkU2V0Lm1lbSBhZzJfaWQgZGF0YV9zdHJ1Y3R1cmUucmVtb3ZlZF9hZ2VudHMgdGhlblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgICAgIHJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3MgPVxuICAgICAgICAgICAgICAgICAgICBTaXRlSWRTZXQuYWRkIHNpdGUyX2lkXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucmVtb3ZlZF9zaXRlc19pbl9vdGhlcl9saW5rcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgICAgICAgICBvdGhlcl9saW5rc190ZXN0X3NpdGVzID1cbiAgICAgICAgICAgICAgICBTaXRlSWRNYXAuYWRkIHNpdGUxX2lkIGFnMl9pZFxuICAgICAgICAgICAgICAgICAgKFNpdGVJZE1hcC5hZGQgc2l0ZTJfaWQgYWcxX2lkXG4gICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc190ZXN0X3NpdGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSBfIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIF9cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIF8gfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIF8gLT5cbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSB0ZXN0X2xpc3RcbiAgICBpblxuICAgIGxldCB0ZXN0ZWRfc2l0ZXMgPVxuICAgICAgU2l0ZUlkTWFwLmZvbGRcbiAgICAgICAgKGZ1biBhIF8gLT4gU2l0ZUlkU2V0LmFkZCBhKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc190ZXN0X3NpdGVzIFNpdGVJZFNldC5lbXB0eVxuICAgIGluXG4gICAgbGV0IG1vZF9zaXRlcyA9XG4gICAgICBTaXRlSWRNYXAuZm9sZFxuICAgICAgICAoZnVuIGEgXyAtPiBTaXRlSWRTZXQuYWRkIGEpXG4gICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX2FjdGlvbl9zaXRlcyBTaXRlSWRTZXQuZW1wdHlcbiAgICBpblxuICAgIGxldCBwcmlvcml0eV9zaXRlcyA9IFNpdGVJZFNldC5pbnRlciB0ZXN0ZWRfc2l0ZXMgbW9kX3NpdGVzIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgIHtcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgICBvbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb24gPVxuICAgICAgICAgIEFnZW50SWRNYXAubWFwXG4gICAgICAgICAgICAoQS5nZXQgYmxhY2tib2FyZC5oaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlKVxuICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub2xkX2FnZW50cztcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7IGRhdGFfc3RydWN0dXJlIHdpdGggc3VyZV9hZ2VudHMgPSBkYXRhX3N0cnVjdHVyZS5uZXdfYWdlbnRzIH1cbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgc3VyZV9hZ2VudHMgPVxuICAgICAgICAgIEFnZW50SWRNYXAuZm9sZFxuICAgICAgICAgICAgKGZ1biBpZCBsIHN1cmVfYWdlbnRzIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFsgXyBdIC0+IEFnZW50SWRTZXQuYWRkIGlkIHN1cmVfYWdlbnRzXG4gICAgICAgICAgICAgIHwgXyAtPiBzdXJlX2FnZW50cylcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvblxuICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUuc3VyZV9hZ2VudHM7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgc3VyZV9hZ2VudCA9XG4gICAgICBpZiBpbml0IHRoZW5cbiAgICAgICAgZnVuIF8gLT5cbiAgICAgIHRydWVcbiAgICAgIGVsc2VcbiAgICAgICAgZnVuIHggLT5cbiAgICAgIEFnZW50SWRTZXQubWVtIHggZGF0YV9zdHJ1Y3R1cmUuc3VyZV9hZ2VudHNcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgb2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uID1cbiAgICAgICAgICBBZ2VudElkU2V0LmZvbGQgQWdlbnRJZE1hcC5yZW1vdmUgZGF0YV9zdHJ1Y3R1cmUuc3VyZV9hZ2VudHNcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvbjtcbiAgICAgIH1cbiAgICBpblxuXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gZGF0YV9zdHJ1Y3R1cmUgdGVzdCAtPlxuICAgICAgICAgIG1hdGNoIHRlc3Qgd2l0aFxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIF8gfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCBfXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgXyB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgX1xuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIF8gLT5cbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQxID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDEgaW5cbiAgICAgICAgICAgIGxldCBhZ2VudDIgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZDIgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50MiBpblxuICAgICAgICAgICAgbGV0IHNpdGVfaWQxID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IHNpdGVfaWQyID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgc3VyZV9hZ2VudCBhZ19pZDFcbiAgICAgICAgICAgICAgJiYgKG5vdCAoU2l0ZUlkU2V0Lm1lbSAoYWdfaWQxLCBzaXRlX2lkMSkgcHJpb3JpdHlfc2l0ZXMpKVxuICAgICAgICAgICAgICAmJiBzdXJlX2FnZW50IGFnX2lkMlxuICAgICAgICAgICAgICAmJiBub3QgKFNpdGVJZFNldC5tZW0gKGFnX2lkMiwgc2l0ZV9pZDIpIHByaW9yaXR5X3NpdGVzKVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBtaXhfc2l0ZTEgPSBhZ19pZDEsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgICAgbGV0IG1peF9zaXRlMiA9IGFnX2lkMiwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgICAgICAgICAgIGFkZF9zaXRlX2luX290aGVyX3Rlc3RfbGlua3MgbWl4X3NpdGUxXG4gICAgICAgICAgICAgICAgICAoYWRkX3NpdGVfaW5fb3RoZXJfdGVzdF9saW5rcyBtaXhfc2l0ZTIgZGF0YV9zdHJ1Y3R1cmUpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIFNpdGVJZFNldC5tZW0gbWl4X3NpdGUxIHByaW9yaXR5X3NpdGVzXG4gICAgICAgICAgICAgICAgICB8fCBTaXRlSWRTZXQubWVtIG1peF9zaXRlMiBwcmlvcml0eV9zaXRlc1xuICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbGV0IGFnX2lkMSwgYWdfaWQyID1cbiAgICAgICAgICAgICAgICAgICAgaWYgYWdfaWQxIDwgYWdfaWQyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBhZ19pZDEsIGFnX2lkMlxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgYWdfaWQyLCBhZ19pZDFcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgb3RoZXJfbGlua3NfcHJpb3JpdHkgPVxuICAgICAgICAgICAgICAgICAgICAgIEFnZW50SWQyU2V0LmFkZCAoYWdfaWQxLCBhZ19pZDIpXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19wcmlvcml0eTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICApKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSAoTGlzdC5yZXYgdGVzdF9saXN0KVxuICAgIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gZGF0YV9zdHJ1Y3R1cmUgYWN0aW9uIC0+XG4gICAgICAgICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIF8gfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF8gLT5cbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHNpdGUxLCBzaXRlMilcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50MSA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQxIGluXG4gICAgICAgICAgICBsZXQgYWdlbnQyID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDIgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQxICYmIHN1cmVfYWdlbnQgYWdfaWQyIHRoZW5cbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWRkX3NpdGVfaW5fb3RoZXJfYWN0aW9uX2xpbmtzXG4gICAgICAgICAgICAgICAgKGFnX2lkMSwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMSlcbiAgICAgICAgICAgICAgICAoYWRkX3NpdGVfaW5fb3RoZXJfYWN0aW9uX2xpbmtzXG4gICAgICAgICAgICAgICAgICAgKGFnX2lkMiwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMilcbiAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSkpXG4gICAgICAgIGRhdGFfc3RydWN0dXJlIChMaXN0LnJldiBhY3Rpb25fbGlzdClcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIHRlc3QgLT5cbiAgICAgICAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZ2VudCAtPlxuICAgICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgICAgaWYgc3VyZV9hZ2VudCBhZ19pZCB0aGVuXG4gICAgICAgICAgICAgIGFkZF9zdXJlX3Rlc3QgdGVzdCBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhZGRfc3Vic190ZXN0IHRlc3QgYWdfaWQgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChzaXRlLCBfKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50ID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV90ZXN0IHRlc3QgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWRkX3N1YnNfdGVzdCB0ZXN0IGFnX2lkIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgc2l0ZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBzaXRlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKHNpdGUsIF8pIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgc3VyZV9hZ2VudCBhZ19pZFxuICAgICAgICAgICAgICAmJiBub3RcbiAgICAgICAgICAgICAgICAgICAoU2l0ZUlkU2V0Lm1lbVxuICAgICAgICAgICAgICAgICAgICAgIChhZ19pZCwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnNpdGVzX2luX290aGVyX2xpbmtzKVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV90ZXN0IHRlc3QgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgc2l0ZV9pZDEgPSBhZ19pZCwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgU2l0ZUlkTWFwLmZpbmRfb3B0aW9uIHNpdGVfaWQxXG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25fc2l0ZXNcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgYWdfaWQyIC0+XG4gICAgICAgICAgICAgICAgYWRkX3N1YnNfdGVzdF9saW5rIHRlc3QgKGFnX2lkLCBhZ19pZDIpIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBhZGRfc3Vic190ZXN0IHRlc3QgYWdfaWQgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIClcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKHNpdGUxLCBzaXRlMikgLT5cbiAgICAgICAgICAgIGxldCBhZ2VudDEgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZDEgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50MSBpblxuICAgICAgICAgICAgbGV0IGFnZW50X25hbWUxID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX2FnZW50IGFnZW50MSBpblxuICAgICAgICAgICAgbGV0IHNpdGVfbmFtZTEgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgYWdlbnQyID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDIgaW5cbiAgICAgICAgICAgIGxldCBhZ2VudF9uYW1lMiA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9hZ2VudCBhZ2VudDIgaW5cbiAgICAgICAgICAgIGxldCBzaXRlX25hbWUyID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IHdlYWsxID1cbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzaXRlMSwgKGFnZW50X25hbWUyLCBzaXRlX25hbWUyKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgd2VhazIgPVxuICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKHNpdGUyLCAoYWdlbnRfbmFtZTEsIHNpdGVfbmFtZTEpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgKCBzdXJlX2FnZW50IGFnX2lkMVxuICAgICAgICAgICAgICAgICAmJiBub3QgKFNpdGVJZFNldC5tZW0gKGFnX2lkMSwgc2l0ZV9uYW1lMSkgcHJpb3JpdHlfc2l0ZXMpLFxuICAgICAgICAgICAgICAgICBzdXJlX2FnZW50IGFnX2lkMlxuICAgICAgICAgICAgICAgICAmJiBub3QgKFNpdGVJZFNldC5tZW0gKGFnX2lkMiwgc2l0ZV9uYW1lMikgcHJpb3JpdHlfc2l0ZXMpIClcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IHRydWUsIHRydWUgLT4gYWRkX3N1cmVfdGVzdCB0ZXN0IGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICB8IHRydWUsIGZhbHNlIC0+XG4gICAgICAgICAgICAgIGFkZF9zdXJlX3Rlc3Qgd2VhazFcbiAgICAgICAgICAgICAgICAoYWRkX3N1YnNfdGVzdCB3ZWFrMiBhZ19pZDJcbiAgICAgICAgICAgICAgICAgICAoYWRkX3N1YnNfdGVzdF9saW5rIHRlc3QgKGFnX2lkMSwgYWdfaWQyKSBkYXRhX3N0cnVjdHVyZSkpXG4gICAgICAgICAgICB8IGZhbHNlLCB0cnVlIC0+XG4gICAgICAgICAgICAgIGFkZF9zdWJzX3Rlc3Qgd2VhazEgYWdfaWQxXG4gICAgICAgICAgICAgICAgKGFkZF9zdXJlX3Rlc3Qgd2VhazJcbiAgICAgICAgICAgICAgICAgICAoYWRkX3N1YnNfdGVzdF9saW5rIHRlc3QgKGFnX2lkMSwgYWdfaWQyKSBkYXRhX3N0cnVjdHVyZSkpXG4gICAgICAgICAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgICAgICAgICBhZGRfc3Vic190ZXN0IHdlYWsxIGFnX2lkMVxuICAgICAgICAgICAgICAgIChhZGRfc3Vic190ZXN0IHdlYWsyIGFnX2lkMlxuICAgICAgICAgICAgICAgICAgIChhZGRfc3Vic190ZXN0X2xpbmsgdGVzdCAoYWdfaWQxLCBhZ19pZDIpIGRhdGFfc3RydWN0dXJlKSkpKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSAoTGlzdC5yZXYgdGVzdF9saXN0KVxuICAgIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gZGF0YV9zdHJ1Y3R1cmUgYWN0aW9uIC0+XG4gICAgICAgICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIF8gLT4gYWRkX2NyZWF0ZV9hY3Rpb24gYWN0aW9uIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBhZ2VudCAtPlxuICAgICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgICAgaWYgc3VyZV9hZ2VudCBhZ19pZCB0aGVuXG4gICAgICAgICAgICAgIGFkZF9zdXJlX2FjdGlvbiBhY3Rpb24gZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWRkX3N1YnNfYWN0aW9uIGFjdGlvbiBhZ19pZCBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIF8pIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgICAgaWYgc3VyZV9hZ2VudCBhZ19pZCB0aGVuXG4gICAgICAgICAgICAgIGFkZF9zdXJlX2FjdGlvbiBhY3Rpb24gZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWRkX3N1YnNfYWN0aW9uIGFjdGlvbiBhZ19pZCBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHNpdGUgLT5cbiAgICAgICAgICAgIGxldCBhZ2VudCA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50IGluXG4gICAgICAgICAgICBsZXQgc2l0ZV9pZDEgPSBhZ19pZCwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgICAgICAgICBpZiBtZW1fc2l0ZV9pbl9vdGhlcl9hY3Rpb25fbGlua3Mgc2l0ZV9pZDEgZGF0YV9zdHJ1Y3R1cmUgdGhlblxuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgZWxzZSBpZiBzdXJlX2FnZW50IGFnX2lkIHRoZW5cbiAgICAgICAgICAgICAgYWRkX3N1cmVfYWN0aW9uIGFjdGlvbiBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgU2l0ZUlkTWFwLmZpbmRfb3B0aW9uIHNpdGVfaWQxXG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc190ZXN0X3NpdGVzXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIGFnX2lkMiAtPlxuICAgICAgICAgICAgICAgIGFkZF9zdWJzX2FjdGlvbl9saW5rIGFjdGlvbiAoYWdfaWQsIGFnX2lkMikgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGFkZF9zdWJzX2FjdGlvbiBhY3Rpb24gYWdfaWQgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIClcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoc2l0ZTEsIHNpdGUyKVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQxID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDEgaW5cbiAgICAgICAgICAgIGxldCBhZ2VudDIgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZDIgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50MiBpblxuICAgICAgICAgICAgaWYgc3VyZV9hZ2VudCBhZ19pZDEgJiYgc3VyZV9hZ2VudCBhZ19pZDIgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV9hY3Rpb24gYWN0aW9uIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGFkZF9zdWJzX2FjdGlvbl9saW5rIGFjdGlvbiAoYWdfaWQxLCBhZ19pZDIpIGRhdGFfc3RydWN0dXJlKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSAoTGlzdC5yZXYgYWN0aW9uX2xpc3QpXG4gICAgaW5cblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIHNpZGVfZWZmZWN0IC0+XG4gICAgICAgICAgbGV0IHNpdGUsIF8gPSBzaWRlX2VmZmVjdCBpblxuICAgICAgICAgIGxldCBhZ2VudCA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQgdGhlblxuICAgICAgICAgICAgYWRkX3N1cmVfc2lkZV9lZmZlY3Qgc2lkZV9lZmZlY3QgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhZGRfc3Vic19zaWRlX2VmZmVjdCBzaWRlX2VmZmVjdCBhZ19pZCBkYXRhX3N0cnVjdHVyZSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgc2lkZV9lZmZlY3RcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgc3Vic19hZ2VudHNfaW52b2x2ZWRfaW5fbGlua3MgPVxuICAgICAgICAgIChsZXQgZiB4IHNldCA9XG4gICAgICAgICAgICAgQWdlbnRJZDJNYXAuZm9sZFxuICAgICAgICAgICAgICAgKGZ1biAoYTEsIGEyKSBfIHNldCAtPiBBZ2VudElkU2V0LmFkZCBhMSAoQWdlbnRJZFNldC5hZGQgYTIgc2V0KSlcbiAgICAgICAgICAgICAgIHggc2V0XG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGYgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdHNcbiAgICAgICAgICAgICAoZiBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25zIEFnZW50SWRTZXQuZW1wdHkpKTtcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCBpbml0X3N0ZXAgPSBOb25lIGluXG4gICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBydWxlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgIHJ1bGVfYWdlbnRfaWRfc3VicyxcbiAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgXyxcbiAgICAgICAgICBpbml0X3N0ZXAgKSA9XG4gICAgICBBZ2VudElkTWFwLmZvbGRcbiAgICAgICAgKGZ1biB4IGxcbiAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgcnVsZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICAgICAgIHJ1bGVfYWdlbnRfaWRfc3VicyxcbiAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICBzZXQsXG4gICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAtPlxuICAgICAgICAgICgqIHRoZSBmb2xsb3dpbmcgbXV0ZXggaXMgdXNlZCB0byBlbmNvZGUgdGhlIGZhY3QgdGhhdCB0aGUgYWdlbnQgeCBpbiB0aGUgbGhzIG9mIHRoZSBydWxlIG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIGV4YWN0ZWx5IG9uZSBhZ2VudCBpbiB0aGUgbWl4dHVyZSAqKVxuICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9IE11dGV4IChMb2NrX2FnZW50IChzdGVwX2lkLCB4KSkgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwID1cbiAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcnVsZV9hZ2VudF9pZF9tdXRleCA9XG4gICAgICAgICAgICBBZ2VudElkTWFwLmFkZCB4IHByZWRpY2F0ZV9pZCBydWxlX2FnZW50X2lkX211dGV4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmljdGl0aW91c19sb2NhbF9saXN0ID0gcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCBpblxuICAgICAgICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0IGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcnVsZV9hZ2VudF9pZF9zdWJzLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgaWYgQWdlbnRJZFNldC5tZW0geCBkYXRhX3N0cnVjdHVyZS5zdWJzX2FnZW50c19pbnZvbHZlZF9pbl9saW5rc1xuICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9IFBvaW50ZXIgKHN0ZXBfaWQsIHgpIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHJ1bGVfYWdlbnRfaWRfc3VicyA9XG4gICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGQgeCBwcmVkaWNhdGVfaWQgcnVsZV9hZ2VudF9pZF9zdWJzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCA9XG4gICAgICAgICAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcnVsZV9hZ2VudF9pZF9zdWJzLCBpbml0X3N0ZXBcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHJ1bGVfYWdlbnRfaWRfc3VicywgaW5pdF9zdGVwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgICAgIGluaXRfc3RlcCApID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgICAgICBzZXQsXG4gICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKSBpZCAtPlxuICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgfHwgZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiSUQgb2YgYWdlbnQgaW4gdGhlIHJ1bGU6ICVpLCBJRCBvZiB0aGUgYWdlbnQgaW4gdGhlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgbWl4dHVyZTogJWlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgeCBpZFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgc2V0JyA9IEFnZW50SWRTZXQuYWRkIGlkIHNldCBpblxuICAgICAgICAgICAgICAgIGlmIHNldCA9PSBzZXQnIHRoZW5cbiAgICAgICAgICAgICAgICAgIGlmIEFnZW50SWRNYXAubWVtIGlkIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXggdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICgqIFRoZSBtdXRleCBpcyBhbHJlYWR5IGRlY2xhcmVkLCBub3RoaW5nIHRvIGRvICopXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWJ1Z19tb2RlXG4gICAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNdXRleCBhbHJlYWR5IGV4aXN0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICAgICAgICAgICAgICBzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICgqIFRoZSBtdXRleCBoYXMgdG8gYmUgYWxsb2NhdGVkICopXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWJ1Z19tb2RlXG4gICAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDcmVhdGUgTXV0ZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHByZWRpY2F0ZV9pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICBNdXRleCAoTG9ja19yZWN0YW5ndWxhciAoc3RlcF9pZCwgaWQpKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pbmZvXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBtaXh0dXJlX2FnZW50X2lkX211dGV4ID1cbiAgICAgICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmFkZCBpZCBwcmVkaWNhdGVfaWQgbWl4dHVyZV9hZ2VudF9pZF9tdXRleFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGluaXRfc3RlcFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICAgICAgICAgICAgICBzZXQnLFxuICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAoKiBUaGUgYWdlbnQgaW4gdGhlIG1peHR1cmUgaXMgc2VlbiBmb3IgdGhlIGZpcnN0IHRpbWUsIG5vIG5lZWQgZm9yIGEgbXV0ZXggZm9yIHRoZSBtb21lbnQgKilcbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgfHwgZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyBhZ2VudCBpcyBzZWVuIGZvciB0aGUgZmlyc3QgdGltZSwgbm8gbmVlZCBmb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGV4IHlldFwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgICAgIHNldCcsXG4gICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgIGxcbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICBydWxlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgcnVsZV9hZ2VudF9pZF9zdWJzLFxuICAgICAgICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgIHNldCxcbiAgICAgICAgICAgIGluaXRfc3RlcCApKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb25cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIEFnZW50SWRNYXAuZW1wdHksXG4gICAgICAgICAgQWdlbnRJZE1hcC5lbXB0eSxcbiAgICAgICAgICBBZ2VudElkTWFwLmVtcHR5LFxuICAgICAgICAgIGJsYWNrYm9hcmQucHJlX2ZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBbXSxcbiAgICAgICAgICBBZ2VudElkU2V0LmVtcHR5LFxuICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgaW5cbiAgICBsZXQgbGlua3NfbXV0ZXggPSBBZ2VudElkMk1hcC5lbXB0eSBpblxuICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgbGlua3NfbXV0ZXgsXG4gICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICBpbml0X3N0ZXAgKSA9XG4gICAgICBBZ2VudElkMlNldC5mb2xkXG4gICAgICAgIChmdW4geFxuICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICBsaW5rc19tdXRleCxcbiAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgIGluaXRfc3RlcCApIC0+XG4gICAgICAgICAgbGV0IHByZWRpY2F0ZV9pbmZvID0gTXV0ZXggKExvY2tfbGlua3MgKHN0ZXBfaWQsIHgpKSBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHByZWRpY2F0ZV9pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgICAgICAgICBpbml0X3N0ZXBcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsaW5rc19tdXRleCA9IEFnZW50SWQyTWFwLmFkZCB4IHByZWRpY2F0ZV9pZCBsaW5rc19tdXRleCBpblxuICAgICAgICAgIGxldCBmaWN0aXRpb3VzX2xvY2FsX2xpc3QgPSBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19sb2NhbF9saXN0IGluXG4gICAgICAgICAgbGV0IGZpY3RpdGlvdXNfbGlzdCA9IHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgbGlua3NfbXV0ZXgsXG4gICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICBpbml0X3N0ZXAgKSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NcbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGxpbmtzX211dGV4LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgaW5pdF9zdGVwIClcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgbGlua3NfbXV0ZXg7XG4gICAgICAgIHJ1bGVfYWdlbnRfaWRfbXV0ZXg7XG4gICAgICAgIHJ1bGVfYWdlbnRfaWRfc3VicztcbiAgICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleDtcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgIHsgYmxhY2tib2FyZCB3aXRoIHByZV9maWN0aXRpb3VzX2xpc3QgPSBmaWN0aXRpb3VzX2xpc3QgfVxuICAgIGluXG4gICAgbGV0IF8gPVxuICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgbGV0IF8gPSBwcmludF9kYXRhX3N0cnVjdHVyZSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBkYXRhX3N0cnVjdHVyZSBpblxuICAgICAgICAoKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IGZpY3RpdGlvdXNfbGlzdCA9IGJsYWNrYm9hcmQucHJlX2ZpY3RpdGlvdXNfbGlzdCBpblxuICAgIGxldCBidWlsZF9tYXAgbGlzdCBtYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgKGlkLCB2YWx1ZSkgLT4gUHJlZGljYXRlaWRNYXAuYWRkIGlkIHZhbHVlIG1hcClcbiAgICAgICAgbWFwIGxpc3RcbiAgICBpblxuICAgIGxldCBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCA9XG4gICAgICBsZXQgdGVzdCcsIGFjdGlvbicgPVxuICAgICAgICBQcmVkaWNhdGVpZE1hcC5maW5kX2RlZmF1bHQgKFVua25vd24sIFVua25vd24pIHBpZCBtYXBcbiAgICAgIGluXG4gICAgICBsZXQgdGVzdCA9XG4gICAgICAgIGlmIHN0cmljdGx5X21vcmVfcmVmaW5lZCB0ZXN0IHRlc3QnIHRoZW5cbiAgICAgICAgICB0ZXN0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0ZXN0J1xuICAgICAgaW5cbiAgICAgIGxldCBhY3Rpb24gPVxuICAgICAgICBpZiBzdHJpY3RseV9tb3JlX3JlZmluZWQgYWN0aW9uIGFjdGlvbicgdGhlblxuICAgICAgICAgIGFjdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgYWN0aW9uJ1xuICAgICAgaW5cbiAgICAgIGxldCBtYXAgPSBQcmVkaWNhdGVpZE1hcC5hZGQgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCBpblxuICAgICAgbWFwXG4gICAgaW5cbiAgICBsZXQgZmFkZCBwaWQgcCBtYXAgPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBVbmRlZmluZWQgfCBEZWZpbmVkIHwgUHJlc2VudCB8IEJvdW5kXG4gICAgICB8IEJvdW5kX3RvX3R5cGUgXyB8IFVua25vd24gLT5cbiAgICAgICAgKClcbiAgICAgIHwgRnJlZSB8IFBvaW50ZXJfdG9fYWdlbnQgXyB8IEJvdW5kX3RvIF8gLT5cbiAgICAgICAgbGV0IG9sZCA9IEEuZ2V0IG1hcCBwaWQgaW5cbiAgICAgICAgQS5zZXQgbWFwIHBpZCAoQy5hZGQgcCBvbGQpXG4gICAgaW5cblxuICAgICgqIGRlYWwgd2l0aCBjcmVhdGVkIGFnZW50cyAqKVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHN0ZXBfaWQgPVxuICAgICAgbWF0Y2ggaW5pdF9zdGVwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHN0ZXBfaWRcbiAgICAgIHwgU29tZSBuc2lkIC0+XG4gICAgICAgIGxldCBuc2lkID0gbnNpZCBpblxuICAgICAgICBsZXQgbnNpZF92b2lkID0gbnNpZCArIDEgaW5cbiAgICAgICAgbGV0IG5zaWRfbmV4dCA9IG5zaWQgKyAxIGluXG4gICAgICAgIGxldCBzaWRlX2VmZmVjdCA9IFtdIGluXG4gICAgICAgIGxldCBhY3Rpb25fbGlzdCA9IGRhdGFfc3RydWN0dXJlLmNyZWF0ZV9hY3Rpb25zIGluXG4gICAgICAgIGxldCB0ZXN0X2xpc3QgPSBbXSBpblxuICAgICAgICBsZXQgZmljdGl0aW91c19saXN0ID0gW10gaW5cblxuICAgICAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgX2ZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICBfaW5pdF9zdGVwICkgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAoc2l0ZSwgYmluZGluZ19zdGF0ZSkgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcG90ZW50aWFsX3RhcmdldCA9XG4gICAgICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICBzaXRlIGJpbmRpbmdfc3RhdGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcG90ZW50aWFsX3RhcmdldCB3aXRoXG4gICAgICAgICAgICAgIHwgWyBsIF0gLT5cbiAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgdCAtPiB0IDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyBsXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgbGlzdCxcbiAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIGxldCBydWxlX2FnX2lkID1cbiAgICAgICAgICAgICAgICAgIENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgKENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHByZWRpY2F0ZV9pbmZvID1cbiAgICAgICAgICAgICAgICAgIE11dGV4XG4gICAgICAgICAgICAgICAgICAgIChMb2NrX3NpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICggc3RlcF9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVfYWdfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlICkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgX3N0ZXBfaWQgPVxuICAgICAgICAgICAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXBcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlX25zdGVwcyA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfbl9zaWRlX2V2ZW50cyBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCAoXywgYSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZC5wcmVfbnN0ZXBzIHNpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZWRpY2F0ZV9pZCwgXywgKHRlc3QsIGFjdGlvbikpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIGVycm9yIHRlc3QgYWN0aW9uIHByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByZWRpY2F0ZV9pZCwgTm9uZSwgKENvdW50ZXIgMCwgQ291bnRlciAxKSkgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwICkpXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgc2lkZV9lZmZlY3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9tYXAgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG1hcCkgdGVzdCAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfdGVzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYnVpbGRfbWFwIHRlc3RfbGlzdCBtYXApXG4gICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSlcbiAgICAgICAgICAgIHRlc3RfbGlzdFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXApIGFjdGlvbiAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbGlzdCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbiB0cnVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGluaXQgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgICAgICBidWlsZF9tYXAgdGVzdF9saXN0IHRlc3RfbWFwICkpXG4gICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSwgdGVzdF9tYXApXG4gICAgICAgICAgICBhY3Rpb25fbGlzdFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG1lcmdlZF9tYXAgPVxuICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLm1vbmFkaWNfZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIGFjdGlvbikgYWNjKVxuICAgICAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWNjIC0+XG4gICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIFVua25vd24pIGFjYylcbiAgICAgICAgICAgIChmdW4gXyBlIGtleSBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKFVua25vd24sIGFjdGlvbikgYWNjKVxuICAgICAgICAgICAgdGVzdF9tYXAgYWN0aW9uX21hcCBQcmVkaWNhdGVpZE1hcC5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gbWFwIChwaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcClcbiAgICAgICAgICAgIG1lcmdlZF9tYXAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gbGlzdCAoXywgYSwgXykgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgICAgIHwgU29tZSBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgIFtdIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0c1xuICAgICAgICBpblxuICAgICAgICBpZiBzaWRlX2VmZmVjdCA9IFtdICYmIFByZWRpY2F0ZWlkTWFwLmlzX2VtcHR5IG1lcmdlZF9tYXAgdGhlblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbnNpZF92b2lkXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50IG5zaWRcbiAgICAgICAgICAgICAgKENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwcmVfc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmZvbGRcbiAgICAgICAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSBtYXAgLT5cbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgaWQgaW5cbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUnID0gdmFsdWUgKyAxIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgZmFkZCBpZCBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZC5oaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICBBLnNldCBtYXAgaWQgKHZhbHVlJywgKG5zaWQsIHZhbHVlLCB0ZXN0LCBhY3Rpb24pIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXApXG4gICAgICAgICAgICAgIG1lcmdlZF9tYXAgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb2JzZXJ2YWJsZV9saXN0ID1cbiAgICAgICAgICAgIGlmIFRyYWNlLnN0ZXBfaXNfb2JzIHN0ZXAgdGhlblxuICAgICAgICAgICAgICAoWyBuc2lkIF0sIFRyYWNlLnNpbXVsYXRpb25faW5mb19vZl9zdGVwIHN0ZXApXG4gICAgICAgICAgICAgIDo6IGJsYWNrYm9hcmQucHJlX29ic2VydmFibGVfbGlzdFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICAgIHByZV9ldmVudDtcbiAgICAgICAgICAgICAgcHJlX2ZpY3RpdGlvdXNfbGlzdCA9IGZpY3RpdGlvdXNfbGlzdDtcbiAgICAgICAgICAgICAgcHJlX3N0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgICAgICAgcHJlX25zdGVwcyA9IG5zaWQ7XG4gICAgICAgICAgICAgIHByZV9vYnNlcnZhYmxlX2xpc3QgPSBvYnNlcnZhYmxlX2xpc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG5zaWRfbmV4dFxuICAgICAgICApXG4gICAgaW5cblxuICAgICgqKiogZGVhbCB3aXRoIHN1YnN0aXR1dGFibGUgYWdlbnRzICoqKilcbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIG5saXN0ID1cbiAgICAgIEFnZW50SWRNYXAuZm9sZFxuICAgICAgICAoZnVuIHJ1bGVfYWdfaWQgbCAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIG5saXN0KSAtPlxuICAgICAgICAgIGxldCB0ZXN0X2xpc3QsIGFjdGlvbl9saXN0LCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAoIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfdGVzdHMsXG4gICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfYWN0aW9ucyxcbiAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgW10gcnVsZV9hZ19pZFxuICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c19zaWRlX2VmZmVjdHMgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwLCBubGlzdCkgbWl4dHVyZV9hZ19pZCAtPlxuICAgICAgICAgICAgICBsZXQgc3RlcCA9IFRyYWNlLnN1YnNfc3RlcCBydWxlX2FnX2lkIG1peHR1cmVfYWdfaWQgaW5cbiAgICAgICAgICAgICAgbGV0IHRlc3RfbGlzdCA9XG4gICAgICAgICAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uc3Vic3RfYWdlbnRfaW5fY29uY3JldGVfdGVzdCBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnX2lkKVxuICAgICAgICAgICAgICAgICAgdGVzdF9saXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBhY3Rpb25fbGlzdCA9XG4gICAgICAgICAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uc3Vic3RfYWdlbnRfaW5fY29uY3JldGVfYWN0aW9uIHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdfaWQpXG4gICAgICAgICAgICAgICAgICBhY3Rpb25fbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgc2lkZV9lZmZlY3QgPVxuICAgICAgICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3NpZGVfZWZmZWN0IHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdfaWQpXG4gICAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZmljdGl0aW91c19sb2NhbF9saXN0ID0gW10gaW5cbiAgICAgICAgICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKSA9XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApIChzaXRlLCBiaW5kaW5nX3N0YXRlKSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwb3RlbnRpYWxfdGFyZ2V0ID1cbiAgICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWxfdGFyZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHNpdGUgYmluZGluZ19zdGF0ZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBwb3RlbnRpYWxfdGFyZ2V0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBbIGwgXSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCB0IC0+IHQgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzIGxcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHByZWRpY2F0ZV9pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgIE11dGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMb2NrX3NpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggc3RlcF9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlICkpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGZpY3RpdGlvdXNfbGlzdCA9IHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0X3N0ZXBcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlX25zdGVwcyA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfbl9zaWRlX2V2ZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCAoXywgYSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZC5wcmVfbnN0ZXBzIHNpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZWRpY2F0ZV9pZCwgXywgKHRlc3QsIGFjdGlvbikpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIGVycm9yIHRlc3QgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByZWRpY2F0ZV9pZCwgTm9uZSwgKENvdW50ZXIgMCwgQ291bnRlciAxKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwICkpXG4gICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcGlkX3J1bGVfYWdlbnRfbXV0ZXggPVxuICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfb3B0aW9uIHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucnVsZV9hZ2VudF9pZF9tdXRleFxuICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPiBlcnJvciwgbG9nX2luZm8sIHhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgICAgICAgKEZhaWx1cmUgXCJVbmtub3duIGFnZW50IGlkXCIpIDBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9tYXAgPVxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG1hcCkgdGVzdCAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfdGVzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCB0ZXN0XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYnVpbGRfbWFwIHRlc3RfbGlzdCBtYXApXG4gICAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSlcbiAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgdGVzdF9tYXAgPVxuICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZCBwaWRfcnVsZV9hZ2VudF9tdXRleCAoQ291bnRlciAwKSB0ZXN0X21hcFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCA9XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXApXG4gICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbGlzdCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbiB0cnVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGluaXQgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgICAgICAgICAgICBidWlsZF9tYXAgdGVzdF9saXN0IHRlc3RfbWFwICkpXG4gICAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSwgdGVzdF9tYXApXG4gICAgICAgICAgICAgICAgICBhY3Rpb25fbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgYWN0aW9uX21hcCA9XG4gICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuYWRkIHBpZF9ydWxlX2FnZW50X211dGV4IChDb3VudGVyIDEpIGFjdGlvbl9tYXBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHRlc3RfbWFwLCBhY3Rpb25fbWFwID1cbiAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX29wdGlvbiBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJ1bGVfYWdlbnRfaWRfc3Vic1xuICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICB8IFNvbWUgbV9pZCAtPlxuICAgICAgICAgICAgICAgICAgKCBQcmVkaWNhdGVpZE1hcC5hZGQgbV9pZCAoQ291bnRlciAwKSB0ZXN0X21hcCxcbiAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuYWRkIG1faWQgKFBvaW50ZXJfdG9fYWdlbnQgbWl4dHVyZV9hZ19pZClcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbWFwIClcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gdGVzdF9tYXAsIGFjdGlvbl9tYXBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCogVGhlIGZvbGxvd2luZyBibG9jayBzaG91bGQgYmUgbG9nZ2VkIGFuZCBjb3JyZWN0ZWQgKilcbiAgICAgICAgICAgICAgKCogbGV0IHRlc3RfbWFwLGFjdGlvbl9tYXAgPVxuICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5taXh0dXJlX2FnZW50X2lkX211dGV4IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTb21lIG1faWQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuYWRkXG4gICAgICAgICAgICAgICAgICAgICAgICAgbV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgIChDb3VudGVyIDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9tYXAsXG4gICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZFxuICAgICAgICAgICAgICAgICAgICAgICAgIG1faWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAoQ291bnRlciAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9tYXBcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHRlc3RfbWFwLGFjdGlvbl9tYXBcbiAgICAgICAgICAgICAgICAgaW4qKVxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIG1lcmdlZF9tYXAgPVxuICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLm1vbmFkaWNfZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIGFjdGlvbikgYWNjKVxuICAgICAgICAgICAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIFVua25vd24pIGFjYylcbiAgICAgICAgICAgICAgICAgIChmdW4gXyBlIGtleSBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKFVua25vd24sIGFjdGlvbikgYWNjKVxuICAgICAgICAgICAgICAgICAgdGVzdF9tYXAgYWN0aW9uX21hcCBQcmVkaWNhdGVpZE1hcC5lbXB0eVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbWVyZ2VkX21hcCwgbmxpc3QgPVxuICAgICAgICAgICAgICAgICgqIGVudW1lcmF0aW9uIG9mIHBvdGVudGlhbCBiaW5kaW5nIHN0YXRlLCBhY2NvcmRpbmcgdG8gYSBzdWJzdGl0dXRpb24gKilcbiAgICAgICAgICAgICAgICAoKiBJZiB0aGUgZXZlbnQgaXMgc2VsZWN0ZWQsIGNoZWNrIHRoYXQgdGhlIHdpcmUgZW5kIGluIHRoZSBzdGF0ZSAwKilcbiAgICAgICAgICAgICAgICAoKiBVbmRlZi0+Q291bnRlciAwIDogb3BlbmluZyBldmVudCAqKVxuICAgICAgICAgICAgICAgICgqIENvdW50ZXIgMCAtPiBDb3VudGVyIDEgOiBwb3RlbnRpYWwgYmluZGluZyB0eXBlICopXG4gICAgICAgICAgICAgICAgKCogPT4gQ291bnRlciAxIC0+IENvdW50ZXIgMCA6IHRoZSBjb3JyZXNwb25kaW5nIHN1YnN0aXR1dGlvbiBpcyBhcHBsaWVkICopXG4gICAgICAgICAgICAgICAgKCogQ291bnRlciAwIC0+IFVuZGVmIDogY2xvc2luZyBldmVudCwgY2hlY2sgdGhhdCBpZiB0aGUgZXZlbnQgaGFzIGJlZW4gc2VsZWN0ZWQgKG9wZW4gYW5kIGNsb3NlZCksIHRoZW4gZXhhY3RlbHkgb25lIGJpbmRpbmcgc3RhdGUgaGFzIGJlZW4gc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIHN1YnN0aXR1dGlvbiAqKVxuICAgICAgICAgICAgICAgICgqIElmIHRoZSBldmVudCBpcyBzZWxlY3RlZCAmIHRoZSBhY2NvcmRpbmcgc3Vic3RpdHV0aW9uIHRha2VuLCB0aGVuIG11dHVhbCBleGNsdXNpb24gYW1vbmcgdGhlIHBvdGVudGlhbCBiaW5kaW5nIHN0YXRlKilcbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biAobWFwLCBubGlzdCkgcGlkIC0+XG4gICAgICAgICAgICAgICAgICAgICggUHJlZGljYXRlaWRNYXAuYWRkIHBpZCAoQ291bnRlciAxLCBDb3VudGVyIDApIG1hcCxcbiAgICAgICAgICAgICAgICAgICAgICBwaWQgOjogbmxpc3QgKSlcbiAgICAgICAgICAgICAgICAgIChtZXJnZWRfbWFwLCBubGlzdCkgZmljdGl0aW91c19sb2NhbF9saXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBtYXAgKHBpZCwgXywgKHRlc3QsIGFjdGlvbikpIC0+XG4gICAgICAgICAgICAgICAgICAgIGFkZF9zdGF0ZSBwaWQgKHRlc3QsIGFjdGlvbikgbWFwKVxuICAgICAgICAgICAgICAgICAgbWVyZ2VkX21hcCB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IChfLCBhLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICAgICAgICAgICAgW10gdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5tYXBpXG4gICAgICAgICAgICAgICAgICAoZnVuIHBpZCAodGVzdCwgYWN0aW9uKSAtPlxuICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IFVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggQS5nZXQgYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcF9pbnYgcGlkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgYWdfaWQgPSBtaXh0dXJlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBTaXRlSWRTZXQubWVtIChydWxlX2FnX2lkLCBzaXRlX2lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5yZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzXG4gICAgICAgICAgICAgICAgICAgICAgfCBIZXJlIF8gfCBQb2ludGVyIF8gfCBNdXRleCBfIHwgTGluayBfIHwgSW50ZXJuYWxfc3RhdGUgX1xuICAgICAgICAgICAgICAgICAgICAgIHwgRmljdGl0aW91cyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIHRlc3QsIFVua25vd25cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHRlc3QsIGFjdGlvbilcbiAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgaWYgc2lkZV9lZmZlY3QgPSBbXSAmJiBQcmVkaWNhdGVpZE1hcC5pc19lbXB0eSBtZXJnZWRfbWFwIHRoZW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCwgbmxpc3RcbiAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgbnNpZFxuICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5zaWRlX2VmZmVjdF9vZl9saXN0IHNpZGVfZWZmZWN0KVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPSBBLnNldCBwcmVfZXZlbnQgbnNpZCBzdGVwIGluXG4gICAgICAgICAgICAgICAgbGV0IHByZV9zdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuZm9sZFxuICAgICAgICAgICAgICAgICAgICAoZnVuIGlkICh0ZXN0LCBhY3Rpb24pIG1hcCAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSwgbGlzdCA9IEEuZ2V0IG1hcCBpZCBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZScgPSB2YWx1ZSArIDEgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWRkIGlkIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEEuc2V0IG1hcCBpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUnLCAobnNpZCwgdmFsdWUsIHRlc3QsIGFjdGlvbikgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIG1hcClcbiAgICAgICAgICAgICAgICAgICAgbWVyZ2VkX21hcCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW5cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX2tpbmRfb2ZfZXZlbnQgbnNpZCAodHlwZV9vZl9zdGVwIHN0ZXApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgICAgICAgICAgICBwcmVfZXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgIHByZV9maWN0aXRpb3VzX2xpc3QgPSBmaWN0aXRpb3VzX2xpc3Q7XG4gICAgICAgICAgICAgICAgICAgIHByZV9zdGVwc19ieV9jb2x1bW47XG4gICAgICAgICAgICAgICAgICAgIHByZV9uc3RlcHMgPSBuc2lkO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIG5saXN0XG4gICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIG5saXN0KVxuICAgICAgICAgICAgbClcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCwgW10pXG4gICAgaW5cblxuICAgICgqIGRlYWwgd2l0aCBzdWJzdGl0dXRhYmxlIGFnZW50IGluIGxpbmtzKilcbiAgICBsZXQgZiBlcnJvciBsb2dfaW5mbyBibGFja2JvYXJkIHNldCA9XG4gICAgICBBZ2VudElkMlNldC5mb2xkXG4gICAgICAgIChmdW4gbGluayAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSAtPlxuICAgICAgICAgIGxldCBsaW5rX211dGV4ID1cbiAgICAgICAgICAgIG1hdGNoIEFnZW50SWQyTWFwLmZpbmRfb3B0aW9uIGxpbmsgZGF0YV9zdHJ1Y3R1cmUubGlua3NfbXV0ZXggd2l0aFxuICAgICAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJ1bGVfYWdfaWQxLCBydWxlX2FnX2lkMiA9IGxpbmsgaW5cbiAgICAgICAgICBsZXQgbF9hZ18xID1cbiAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFsgcnVsZV9hZ19pZDEgXSBydWxlX2FnX2lkMVxuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb25cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsX2FnXzIgPVxuICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgWyBydWxlX2FnX2lkMiBdIHJ1bGVfYWdfaWQyXG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvblxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRlc3RfbGlzdCA9XG4gICAgICAgICAgICBBZ2VudElkMk1hcC5maW5kX2RlZmF1bHQgW10gbGluayBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc190ZXN0c1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGFjdGlvbl9saXN0ID1cbiAgICAgICAgICAgIEFnZW50SWQyTWFwLmZpbmRfZGVmYXVsdCBbXSBsaW5rIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX2FjdGlvbnNcbiAgICAgICAgICBpblxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpIG1peHR1cmVfYWdfMSAtPlxuICAgICAgICAgICAgICBsZXQgc3VicyA9IEFnZW50SWRNYXAuZW1wdHkgaW5cbiAgICAgICAgICAgICAgbGV0IHN1YnMgPVxuICAgICAgICAgICAgICAgICgqIGlmIHJ1bGVfYWdfaWQxID0gbWl4dHVyZV9hZ18xXG4gICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgIHN1YnNcbiAgICAgICAgICAgICAgICAgICBlbHNlKilcbiAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmFkZCBydWxlX2FnX2lkMSBtaXh0dXJlX2FnXzEgc3Vic1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgbWl4dHVyZV9hZ18yIC0+XG4gICAgICAgICAgICAgICAgICBpZiBydWxlX2FnX2lkMSA9IHJ1bGVfYWdfaWQyID0gKG1peHR1cmVfYWdfMSA9IG1peHR1cmVfYWdfMilcbiAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgc3RlcCA9XG4gICAgICAgICAgICAgICAgICAgICAgVHJhY2UuZHVtbXlfc3RlcFxuICAgICAgICAgICAgICAgICAgICAgICAgKFwiTElOSyBcIiBeIHN0cmluZ19vZl9pbnQgbWl4dHVyZV9hZ18xIF4gXCIvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaW50IHJ1bGVfYWdfaWQxIF4gXCIsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaW50IG1peHR1cmVfYWdfMiBeIFwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBydWxlX2FnX2lkMiBeIFwiKVwiKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgc3VicyA9XG4gICAgICAgICAgICAgICAgICAgICAgKCogaWYgcnVsZV9hZ19pZDIgPSBtaXh0dXJlX2FnXzJcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgc3Vic1xuICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UqKVxuICAgICAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuYWRkIHJ1bGVfYWdfaWQyIG1peHR1cmVfYWdfMiBzdWJzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZXN0X2xpc3QsIGFjdGlvbl9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBpZiBzdWJzID0gQWdlbnRJZE1hcC5lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3QsIGFjdGlvbl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZiB4ID0gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IHN1YnMgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICggTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV90ZXN0IGYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiBmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9saXN0IClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbWFwID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBtYXApIHRlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGJ1aWxkX21hcCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXAgPVxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0ICkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfYWN0aW9uIHRydWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yIGJsYWNrYm9hcmQgaW5pdCBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFjdGlvbl9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHBpZCwgeCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRnJlZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEuZ2V0IGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXBfaW52IHBpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnX2lkID0gbWl4dHVyZV9hZ18xXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIFNpdGVJZFNldC5tZW0gKHJ1bGVfYWdfaWQxLCBzaXRlX2lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlZF9zaXRlc19pbl9vdGhlcl9saW5rc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBhZ19pZCA9IG1peHR1cmVfYWdfMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBTaXRlSWRTZXQubWVtIChydWxlX2FnX2lkMiwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkLCBVbmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkLCB4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHBpZCwgeClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHBpZCwgeClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMaXN0LnJldiBhY3Rpb25fbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX21hcCBhY3Rpb25fbGlzdCBhY3Rpb25fbWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX21hcCB0ZXN0X2xpc3QgdGVzdF9tYXAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5lbXB0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9tYXAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5tb25hZGljX2ZvbGQyIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBVbmtub3duKSBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5IChVbmtub3duLCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbWFwIGFjdGlvbl9tYXAgUHJlZGljYXRlaWRNYXAuZW1wdHlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZCBsaW5rX211dGV4IChDb3VudGVyIDAsIENvdW50ZXIgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCogUG9pbnRlciAtPiAqKVxuICAgICAgICAgICAgICAgICAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9vcHRpb24gcnVsZV9hZ19pZDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucnVsZV9hZ2VudF9pZF9zdWJzXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBtX2lkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5hZGQgbV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUG9pbnRlcl90b19hZ2VudCBtaXh0dXJlX2FnXzEsIFVua25vd24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbWVyZ2VkX21hcFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9vcHRpb24gcnVsZV9hZ19pZDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucnVsZV9hZ2VudF9pZF9zdWJzXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBtX2lkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5hZGQgbV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUG9pbnRlcl90b19hZ2VudCBtaXh0dXJlX2FnXzIsIFVua25vd24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbWVyZ2VkX21hcFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBpZiBQcmVkaWNhdGVpZE1hcC5pc19lbXB0eSBtZXJnZWRfbWFwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPSBBLnNldCBwcmVfZXZlbnQgbnNpZCBzdGVwIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHByZV9zdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGlkICh0ZXN0LCBhY3Rpb24pIG1hcCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSwgbGlzdCA9IEEuZ2V0IG1hcCBpZCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZScgPSB2YWx1ZSArIDEgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWRkIGlkIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEuc2V0IG1hcCBpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUnLCAobnNpZCwgdmFsdWUsIHRlc3QsIGFjdGlvbikgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkX21hcCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX2tpbmRfb2ZfZXZlbnQgbnNpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZV9vZl9zdGVwIHN0ZXApXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVfZXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZV9zdGVwc19ieV9jb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZV9uc3RlcHMgPSBuc2lkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICBsX2FnXzIpXG4gICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgbF9hZ18xKVxuICAgICAgICBzZXRcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgb3RoZXJfbGlua3MgPVxuICAgICAgICAgIEFnZW50SWQyU2V0LmRpZmYgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX3ByaW9yaXR5O1xuICAgICAgfVxuICAgIGluXG5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgIGYgZXJyb3IgbG9nX2luZm8gYmxhY2tib2FyZCBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19wcmlvcml0eVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBmIGVycm9yIGxvZ19pbmZvIGJsYWNrYm9hcmQgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NcbiAgICBpblxuXG4gICAgKCogZGVhbCB3aXRoIHJpZ2lkIGVsZW1lbnRzICopXG4gICAgbGV0IHNpZGVfZWZmZWN0ID0gZGF0YV9zdHJ1Y3R1cmUuc3VyZV9zaWRlX2VmZmVjdHMgaW5cbiAgICBsZXQgYWN0aW9uX2xpc3QgPVxuICAgICAgbWF0Y2ggaW5pdF9zdGVwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkYXRhX3N0cnVjdHVyZS5jcmVhdGVfYWN0aW9ucyBAIGRhdGFfc3RydWN0dXJlLnN1cmVfYWN0aW9uc1xuICAgICAgfCBTb21lIF8gLT4gZGF0YV9zdHJ1Y3R1cmUuc3VyZV9hY3Rpb25zXG4gICAgaW5cbiAgICBsZXQgdGVzdF9saXN0ID0gZGF0YV9zdHJ1Y3R1cmUuc3VyZV90ZXN0cyBpblxuICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX2xpc3QgaW5cblxuICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMsXG4gICAgICAgICAgX2luaXRfc3RlcCApID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKCBlcnJvcixcbiAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgIGluaXRfc3RlcCApIChzaXRlLCBiaW5kaW5nX3N0YXRlKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHBvdGVudGlhbF90YXJnZXQgPVxuICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHNpdGVcbiAgICAgICAgICAgICAgYmluZGluZ19zdGF0ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggcG90ZW50aWFsX3RhcmdldCB3aXRoXG4gICAgICAgICAgfCBbIGwgXSAtPlxuICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gbGlzdCB0IC0+IHQgOjogbGlzdClcbiAgICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMgbFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgbGlzdCxcbiAgICAgICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxldCBydWxlX2FnX2lkID1cbiAgICAgICAgICAgICAgQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCAoQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHByZWRpY2F0ZV9pbmZvID1cbiAgICAgICAgICAgICAgTXV0ZXhcbiAgICAgICAgICAgICAgICAoTG9ja19zaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICggc3RlcF9pZCxcbiAgICAgICAgICAgICAgICAgICAgIHJ1bGVfYWdfaWQsXG4gICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlICkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgX3N0ZXBfaWQgPVxuICAgICAgICAgICAgICBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgIHsgYmxhY2tib2FyZCB3aXRoIHByZV9uc3RlcHMgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIH1cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19uX3NpZGVfZXZlbnRzIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9IENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdCBpblxuICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudFxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQucHJlX25zdGVwcyBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGJsYWNrYm9hcmQpIChwcmVkaWNhdGVfaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIGVycm9yIHRlc3QgYWN0aW9uIHByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAoKHByZWRpY2F0ZV9pZCwgTm9uZSwgKENvdW50ZXIgMCwgQ291bnRlciAxKSkgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICBwb3RlbnRpYWxfdGFyZ2V0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgaW5pdF9zdGVwICkpXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgIHNpZGVfZWZmZWN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG1hcCkgdGVzdCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB0ZXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGJ1aWxkX21hcCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSlcbiAgICAgICAgdGVzdF9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwKSBhY3Rpb24gLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbGlzdCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfYWN0aW9uIHRydWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0IGFjdGlvblxuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGJ1aWxkX21hcCBhY3Rpb25fbGlzdCBhY3Rpb25fbWFwLFxuICAgICAgICAgICAgYnVpbGRfbWFwIHRlc3RfbGlzdCB0ZXN0X21hcCApKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSwgdGVzdF9tYXApXG4gICAgICAgIGFjdGlvbl9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIG1lcmdlZF9tYXAgPVxuICAgICAgUHJlZGljYXRlaWRNYXAubW9uYWRpY19mb2xkMiBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIGFjdGlvbikgYWNjKVxuICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY2MgLT4gZSwgUHJlZGljYXRlaWRNYXAuYWRkIGtleSAodGVzdCwgVW5rbm93bikgYWNjKVxuICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKFVua25vd24sIGFjdGlvbikgYWNjKVxuICAgICAgICB0ZXN0X21hcCBhY3Rpb25fbWFwIFByZWRpY2F0ZWlkTWFwLmVtcHR5XG4gICAgaW5cbiAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCBwaWQgLT4gUHJlZGljYXRlaWRNYXAuYWRkIHBpZCAoQ291bnRlciAxLCBVbmRlZmluZWQpIG1hcClcbiAgICAgICAgbWVyZ2VkX21hcCBmaWN0aXRpb3VzX2xvY2FsX2xpc3RcbiAgICBpblxuICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChwaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPiBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcClcbiAgICAgICAgbWVyZ2VkX21hcCB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgICgqIElmIHRoZSBldmVudCBpcyBzZWxlY3RlZCwgY2hlY2sgdGhhdCB0aGUgd2lyZSBlbmQgaW4gdGhlIHN0YXRlIDAqKVxuICAgICAgKCogVW5kZWYtPkNvdW50ZXIgMCA6IG9wZW5pbmcgZXZlbnQgKilcbiAgICAgICgqIENvdW50ZXIgMCAtPiBDb3VudGVyIDEgOiBwb3RlbnRpYWwgYmluZGluZyB0eXBlICopXG4gICAgICAoKiBDb3VudGVyIDEgLT4gQ291bnRlciAwIDogdGhlIGNvcnJlc3BvbmRpbmcgc3Vic3RpdHV0aW9uIGlzIGFwcGxpZWQgKilcbiAgICAgICgqID0+IENvdW50ZXIgMCAtPiBVbmRlZiA6IGNsb3NpbmcgZXZlbnQsIGNoZWNrIHRoYXQgaWYgdGhlIGV2ZW50IGhhcyBiZWVuIHNlbGVjdGVkIChvcGVuIGFuZCBjbG9zZWQpLCB0aGVuIGV4YWN0ZWx5IG9uZSBiaW5kaW5nIHN0YXRlIGhhcyBiZWVuIHNlbGVjdGVkLFxuICAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIHN1YnN0aXR1dGlvbiAqKVxuICAgICAgKCogSWYgdGhlIGV2ZW50IGlzIHNlbGVjdGVkICYgdGhlIGFjY29yZGluZyBzdWJzdGl0dXRpb24gdGFrZW4sIHRoZW4gbXV0dWFsIGV4Y2x1c2lvbiBhbW9uZyB0aGUgcG90ZW50aWFsIGJpbmRpbmcgc3RhdGUqKVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgcGlkIC0+IGFkZF9zdGF0ZSBwaWQgKENvdW50ZXIgMCwgVW5kZWZpbmVkKSBtYXApXG4gICAgICAgIG1lcmdlZF9tYXAgbmxpc3RcbiAgICBpblxuICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgIFtdIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0c1xuICAgIGluXG4gICAgaWYgc2lkZV9lZmZlY3QgPSBbXSAmJiBQcmVkaWNhdGVpZE1hcC5pc19lbXB0eSBtZXJnZWRfbWFwIHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN0ZXBfaWQgKyAxKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgICBsZXQgXyA9XG4gICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50IG5zaWRcbiAgICAgICAgICAoQ0kuUG8uSy5zaWRlX2VmZmVjdF9vZl9saXN0IHNpZGVfZWZmZWN0KVxuICAgICAgaW5cbiAgICAgIGxldCBfID0gQS5zZXQgcHJlX2V2ZW50IG5zaWQgc3RlcCBpblxuICAgICAgbGV0IHByZV9zdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICBQcmVkaWNhdGVpZE1hcC5mb2xkXG4gICAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSBtYXAgLT5cbiAgICAgICAgICAgIGxldCB2YWx1ZSwgbGlzdCA9IEEuZ2V0IG1hcCBpZCBpblxuICAgICAgICAgICAgbGV0IHZhbHVlJyA9IHZhbHVlICsgMSBpblxuICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICBmYWRkIGlkIGFjdGlvblxuICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgQS5zZXQgbWFwIGlkICh2YWx1ZScsIChuc2lkLCB2YWx1ZSwgdGVzdCwgYWN0aW9uKSA6OiBsaXN0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hcClcbiAgICAgICAgICBtZXJnZWRfbWFwIGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtblxuICAgICAgaW5cbiAgICAgIGxldCBfID0gQS5zZXQgYmxhY2tib2FyZC5wcmVfa2luZF9vZl9ldmVudCBuc2lkICh0eXBlX29mX3N0ZXAgc3RlcCkgaW5cbiAgICAgIGxldCBvYnNlcnZhYmxlX2xpc3QgPVxuICAgICAgICBpZiBUcmFjZS5zdGVwX2lzX29icyBzdGVwIHRoZW5cbiAgICAgICAgICAoWyBuc2lkIF0sIFRyYWNlLnNpbXVsYXRpb25faW5mb19vZl9zdGVwIHN0ZXApXG4gICAgICAgICAgOjogYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcbiAgICAgIGluXG4gICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgIHtcbiAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICBwcmVfZXZlbnQ7XG4gICAgICAgICAgcHJlX2ZpY3RpdGlvdXNfbGlzdCA9IGZpY3RpdGlvdXNfbGlzdDtcbiAgICAgICAgICBwcmVfc3RlcHNfYnlfY29sdW1uO1xuICAgICAgICAgIHByZV9uc3RlcHMgPSBuc2lkO1xuICAgICAgICAgIHByZV9vYnNlcnZhYmxlX2xpc3QgPSBvYnNlcnZhYmxlX2xpc3Q7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdGVwX2lkICsgMSlcbiAgICApXG5cbiAgbGV0IGFkZF9zdGVwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0ZXAgYmxhY2tib2FyZCBzdGVwX2lkID1cbiAgICBsZXQgaW5pdCA9IFRyYWNlLnN0ZXBfaXNfaW5pdCBzdGVwIGluXG4gICAgbGV0IGluaXRfc3RlcCA9IE5vbmUgaW5cbiAgICBsZXQgcHJlX2V2ZW50ID0gYmxhY2tib2FyZC5wcmVfZXZlbnQgaW5cbiAgICBsZXQgdGVzdF9saXN0ID0gVHJhY2UudGVzdHNfb2Zfc3RlcCBzdGVwIGluXG4gICAgbGV0IGFjdGlvbl9saXN0LCBzaWRlX2VmZmVjdCA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBzdGVwIGluXG4gICAgbGV0IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCA9IFtdIGluXG4gICAgbGV0IGZpY3RpdGlvdXNfbGlzdCA9IGJsYWNrYm9hcmQucHJlX2ZpY3RpdGlvdXNfbGlzdCBpblxuICAgIGxldCBidWlsZF9tYXAgbGlzdCBtYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgKGlkLCB2YWx1ZSkgLT4gUHJlZGljYXRlaWRNYXAuYWRkIGlkIHZhbHVlIG1hcClcbiAgICAgICAgbWFwIGxpc3RcbiAgICBpblxuICAgIGxldCBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCA9XG4gICAgICBsZXQgdGVzdCcsIGFjdGlvbicgPVxuICAgICAgICBQcmVkaWNhdGVpZE1hcC5maW5kX2RlZmF1bHQgKFVua25vd24sIFVua25vd24pIHBpZCBtYXBcbiAgICAgIGluXG4gICAgICBsZXQgdGVzdCA9XG4gICAgICAgIGlmIHN0cmljdGx5X21vcmVfcmVmaW5lZCB0ZXN0IHRlc3QnIHRoZW5cbiAgICAgICAgICB0ZXN0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0ZXN0J1xuICAgICAgaW5cbiAgICAgIGxldCBhY3Rpb24gPVxuICAgICAgICBpZiBzdHJpY3RseV9tb3JlX3JlZmluZWQgYWN0aW9uIGFjdGlvbicgdGhlblxuICAgICAgICAgIGFjdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgYWN0aW9uJ1xuICAgICAgaW5cbiAgICAgIGxldCBtYXAgPSBQcmVkaWNhdGVpZE1hcC5hZGQgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCBpblxuICAgICAgbWFwXG4gICAgaW5cbiAgICBsZXQgZmFkZCBwaWQgcCBtYXAgPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBVbmRlZmluZWQgfCBEZWZpbmVkIHwgUHJlc2VudCB8IEJvdW5kXG4gICAgICB8IEJvdW5kX3RvX3R5cGUgXyB8IFVua25vd24gLT5cbiAgICAgICAgKClcbiAgICAgIHwgRnJlZSB8IFBvaW50ZXJfdG9fYWdlbnQgXyB8IEJvdW5kX3RvIF8gLT5cbiAgICAgICAgbGV0IG9sZCA9IEEuZ2V0IG1hcCBwaWQgaW5cbiAgICAgICAgQS5zZXQgbWFwIHBpZCAoQy5hZGQgcCBvbGQpXG4gICAgaW5cbiAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgIF9pbml0X3N0ZXAgKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuICggZXJyb3IsXG4gICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMsXG4gICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAoc2l0ZSwgYmluZGluZ19zdGF0ZSkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwb3RlbnRpYWxfdGFyZ2V0ID1cbiAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzaXRlXG4gICAgICAgICAgICAgIGJpbmRpbmdfc3RhdGVcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHBvdGVudGlhbF90YXJnZXQgd2l0aFxuICAgICAgICAgIHwgWyBsIF0gLT5cbiAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGxpc3QgdCAtPiB0IDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzIGxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIGxpc3QsXG4gICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgcnVsZV9hZ19pZCA9XG4gICAgICAgICAgICAgIENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgKENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9XG4gICAgICAgICAgICAgIE11dGV4XG4gICAgICAgICAgICAgICAgKExvY2tfc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgICAgICAoIHN0ZXBfaWQsXG4gICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgcnVsZV9hZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSApKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCA9XG4gICAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICBpbml0X3N0ZXBcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpIGxpc3QgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgeyBibGFja2JvYXJkIHdpdGggcHJlX25zdGVwcyA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyArIDEgfVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX25fc2lkZV9ldmVudHMgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgc2lkZV9lZmZlY3QgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCAoXywgYSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICBbXSBsaXN0XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID0gQ0kuUG8uSy5zaWRlX2VmZmVjdF9vZl9saXN0IHNpZGVfZWZmZWN0IGluXG4gICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZC5wcmVfbnN0ZXBzIHNpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgYmxhY2tib2FyZCkgKHByZWRpY2F0ZV9pZCwgXywgKHRlc3QsIGFjdGlvbikpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRfZmljdGl0aW91c19hY3Rpb24gZXJyb3IgdGVzdCBhY3Rpb24gcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICgocHJlZGljYXRlX2lkLCBOb25lLCAoQ291bnRlciAwLCBDb3VudGVyIDEpKSA6OiBsaXN0KVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICBpbml0X3N0ZXAgKSlcbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgW10sXG4gICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgc2lkZV9lZmZlY3RcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbWFwKSB0ZXN0IC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfdGVzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHRlc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYnVpbGRfbWFwIHRlc3RfbGlzdCBtYXApXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFByZWRpY2F0ZWlkTWFwLmVtcHR5KVxuICAgICAgICB0ZXN0X2xpc3RcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXApIGFjdGlvbiAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9saXN0LCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgcHJlZGljYXRlc19vZl9hY3Rpb24gZmFsc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0IGFjdGlvblxuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGJ1aWxkX21hcCBhY3Rpb25fbGlzdCBhY3Rpb25fbWFwLFxuICAgICAgICAgICAgYnVpbGRfbWFwIHRlc3RfbGlzdCB0ZXN0X21hcCApKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSwgdGVzdF9tYXApXG4gICAgICAgIGFjdGlvbl9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIG1lcmdlZF9tYXAgPVxuICAgICAgUHJlZGljYXRlaWRNYXAubW9uYWRpY19mb2xkMiBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIGFjdGlvbikgYWNjKVxuICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY2MgLT4gZSwgUHJlZGljYXRlaWRNYXAuYWRkIGtleSAodGVzdCwgVW5rbm93bikgYWNjKVxuICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKFVua25vd24sIGFjdGlvbikgYWNjKVxuICAgICAgICB0ZXN0X21hcCBhY3Rpb25fbWFwIFByZWRpY2F0ZWlkTWFwLmVtcHR5XG4gICAgaW5cbiAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCBwaWQgLT4gUHJlZGljYXRlaWRNYXAuYWRkIHBpZCAoQ291bnRlciAxLCBVbmRlZmluZWQpIG1hcClcbiAgICAgICAgbWVyZ2VkX21hcCBmaWN0aXRpb3VzX2xvY2FsX2xpc3RcbiAgICBpblxuICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChwaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPiBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcClcbiAgICAgICAgbWVyZ2VkX21hcCB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgIFtdIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0c1xuICAgIGluXG4gICAgaWYgc2lkZV9lZmZlY3QgPSBbXSAmJiBQcmVkaWNhdGVpZE1hcC5pc19lbXB0eSBtZXJnZWRfbWFwIHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN0ZXBfaWQgKyAxKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgICBsZXQgXyA9XG4gICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50IG5zaWRcbiAgICAgICAgICAoQ0kuUG8uSy5zaWRlX2VmZmVjdF9vZl9saXN0IHNpZGVfZWZmZWN0KVxuICAgICAgaW5cbiAgICAgIGxldCBfID0gQS5zZXQgcHJlX2V2ZW50IG5zaWQgc3RlcCBpblxuICAgICAgbGV0IHByZV9zdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICBQcmVkaWNhdGVpZE1hcC5mb2xkXG4gICAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSBtYXAgLT5cbiAgICAgICAgICAgIGxldCB2YWx1ZSwgbGlzdCA9IEEuZ2V0IG1hcCBpZCBpblxuICAgICAgICAgICAgbGV0IHZhbHVlJyA9IHZhbHVlICsgMSBpblxuICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICBmYWRkIGlkIGFjdGlvblxuICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgQS5zZXQgbWFwIGlkICh2YWx1ZScsIChuc2lkLCB2YWx1ZSwgdGVzdCwgYWN0aW9uKSA6OiBsaXN0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hcClcbiAgICAgICAgICBtZXJnZWRfbWFwIGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtblxuICAgICAgaW5cbiAgICAgIGxldCBfID0gQS5zZXQgYmxhY2tib2FyZC5wcmVfa2luZF9vZl9ldmVudCBuc2lkICh0eXBlX29mX3N0ZXAgc3RlcCkgaW5cbiAgICAgIGxldCBvYnNlcnZhYmxlX2xpc3QgPVxuICAgICAgICBpZiBUcmFjZS5zdGVwX2lzX29icyBzdGVwIHRoZW5cbiAgICAgICAgICAoWyBuc2lkIF0sIFRyYWNlLnNpbXVsYXRpb25faW5mb19vZl9zdGVwIHN0ZXApXG4gICAgICAgICAgOjogYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcbiAgICAgIGluXG4gICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgIHtcbiAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICBwcmVfZXZlbnQ7XG4gICAgICAgICAgcHJlX2ZpY3RpdGlvdXNfbGlzdCA9IGZpY3RpdGlvdXNfbGlzdDtcbiAgICAgICAgICBwcmVfc3RlcHNfYnlfY29sdW1uO1xuICAgICAgICAgIHByZV9uc3RlcHMgPSBuc2lkO1xuICAgICAgICAgIHByZV9vYnNlcnZhYmxlX2xpc3QgPSBvYnNlcnZhYmxlX2xpc3Q7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdGVwX2lkICsgMSlcbiAgICApXG5cbiAgbGV0IGZpbmFsaXplIGhldXJpc3RpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgbCA9IGJsYWNrYm9hcmQucHJlX2ZpY3RpdGlvdXNfbGlzdCBpblxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgfCBfIC0+XG4gICAgICBsZXQgbnNpZCA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyArIDEgaW5cbiAgICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX25fc2lkZV9ldmVudHMgbG9nX2luZm8gaW5cbiAgICAgIGxldCBvYnNlcnZhYmxlX2xpc3QgPVxuICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAoZnVuICh4LCBpbmZvKSAtPiBuc2lkIDo6IHgsIGluZm8pXG4gICAgICAgICAgKExpc3QucmV2IGJsYWNrYm9hcmQucHJlX29ic2VydmFibGVfbGlzdClcbiAgICAgIGluXG4gICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgIHtcbiAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICBwcmVfbnN0ZXBzID0gbnNpZDtcbiAgICAgICAgICBwcmVfb2JzZXJ2YWJsZV9saXN0ID0gb2JzZXJ2YWJsZV9saXN0O1xuICAgICAgICAgIHByZV9maWN0aXRpb3VzX29ic2VydmFibGUgPSBTb21lIG5zaWQ7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGVycm9yLCBibGFja2JvYXJkKSBwcmVkaWNhdGVfaWQgLT5cbiAgICAgICAgICAgIGFkZF9maWN0aXRpb3VzX2FjdGlvbiBlcnJvciBVbmRlZmluZWQgVW5rbm93biBwcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgYmxhY2tib2FyZClcbiAgICAgICAgICAoZXJyb3IsIGJsYWNrYm9hcmQpIGxcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzZXQgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gc2V0IChzdGVwcywgXykgLT5cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgc2V0KSBlaWQgLT5cbiAgICAgICAgICAgICAgICBsZXQgc3RlcCA9IEEuZ2V0IGJsYWNrYm9hcmQucHJlX2V2ZW50IGVpZCBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGFnZW50c19pbl9vYnMgPVxuICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5hZ2VudF9pZF9pbl9vYnMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RlcFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBDSS5Qby5LLkFnZW50SWRTZXQudW5pb24gc2V0IGFnZW50c19pbl9vYnMpXG4gICAgICAgICAgICAgIHNldCBzdGVwcylcbiAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBDSS5Qby5LLkFnZW50SWRTZXQuZW1wdHkpXG4gICAgICAgICAgb2JzZXJ2YWJsZV9saXN0XG4gICAgICBpblxuICAgICAgbGV0IHNldCB4ID0gQ0kuUG8uSy5BZ2VudElkU2V0Lm1lbSB4IHNldCBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBBLml0ZXJpXG4gICAgICAgICAgKGZ1biBpIHN0ZXAgLT5cbiAgICAgICAgICAgIGxldCBfLCBfLCBsZXZlbCA9XG4gICAgICAgICAgICAgIENJLlBvLksubGV2ZWxfb2ZfZXZlbnQgaGV1cmlzdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgc3RlcCBzZXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9sZXZlbF9vZl9ldmVudCBpIGxldmVsKVxuICAgICAgICAgIGJsYWNrYm9hcmQucHJlX2V2ZW50XG4gICAgICBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgIHByaW50X3ByZWJsYWNrYm9hcmQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGluXG4gICAgICAgICAgKClcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuXG4gIGxldCBhZGRfc3RlcF91cF90b19pc28gPSBhZGRfc3RlcF9zdHJvbmdcblxuICAoKiogaW50ZXJmYWNlICopXG5cbiAgbGV0IG5fcHJlZGljYXRlcyBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZC5wcmVfbmNvbHVtbiArIDFcblxuICBsZXQgZXZlbnRfbGlzdF9vZl9wcmVkaWNhdGUgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIHByZWRpY2F0ZV9pZCA9XG4gICAgdHJ5IGVycm9yLCBsb2dfaW5mbywgc25kIChBLmdldCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW4gcHJlZGljYXRlX2lkKVxuICAgIHdpdGggXyAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcIlVua25vd24gcHJlZGljYXRlIGlkXCJcbiAgICAgICAgKEZhaWx1cmUgXCJldmVudF9saXN0X29mX3ByZWRpY2F0ZVwiKSBbXVxuXG4gIGxldCBuX2V2ZW50c19wZXJfcHJlZGljYXRlIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBwcmVkaWNhdGVfaWQgPVxuICAgIHRyeSBlcnJvciwgbG9nX2luZm8sIGZzdCAoQS5nZXQgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uIHByZWRpY2F0ZV9pZClcbiAgICB3aXRoIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJVbmtub3duIHByZWRpY2F0ZSBpZFwiXG4gICAgICAgIChGYWlsdXJlIFwibl9ldmVudHNfcGVyX3ByZWRpY2F0ZVwiKSAwXG5cbiAgbGV0IG5fZXZlbnRzIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxXG5cbiAgbGV0IG1hbmRhdG9yeV9ldmVudHMgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQucHJlX29ic2VydmFibGVfbGlzdFxuXG4gIGxldCBnZXRfZmljdGl0aW91c19vYnNlcnZhYmxlIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX29ic2VydmFibGVcblxuICBsZXQgZ2V0X3NpZGVfZWZmZWN0IF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudFxuZW5kXG4iLCIoKipcbiAgKiBibGFja2JvYXJkLm1sXG4gICpcbiAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTEtMDktMDUgZmVyZXQ+XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTAyLTAzIDIwOjQ4OjM0IGZlcmV0PlxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqICpcbiAgKiBTb21lIHBhcmFtZXRlcnMgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyLDIwMTMgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5cbm1vZHVsZSB0eXBlIEJsYWNrYm9hcmQgPSBzaWdcbiAgbW9kdWxlIFBCIDogQmxhY2tib2FyZF9nZW5lcmF0aW9uLlByZUJsYWNrYm9hcmRcblxuICB0eXBlIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAoKiogYmxhY2tib2FyZCBtYXRyaXggKilcblxuICB0eXBlIGNhc2VfaW5mb1xuICB0eXBlIGNhc2VfdmFsdWVcbiAgdHlwZSBjYXNlX2FkZHJlc3NcbiAgdHlwZSBwb2ludGVyXG5cbiAgKCoqIGJsYWNrYm9hcmQqKVxuXG4gIHR5cGUgYmxhY2tib2FyZCAoKmJsYWNrYm9hcmQsIG9uY2UgZmluYWxpemVkKilcbiAgdHlwZSBhc3NpZ25fcmVzdWx0XG5cbiAgdmFsIGlzX2ZhaWxlZCA6IGFzc2lnbl9yZXN1bHQgLT4gYm9vbFxuICB2YWwgaXNfc3VjY2VlZGVkIDogYXNzaWduX3Jlc3VsdCAtPiBib29sXG4gIHZhbCBpc19pZ25vcmVkIDogYXNzaWduX3Jlc3VsdCAtPiBib29sXG4gIHZhbCBzdWNjZXNzIDogYXNzaWduX3Jlc3VsdFxuICB2YWwgaWdub3JlIDogYXNzaWduX3Jlc3VsdFxuICB2YWwgZmFpbCA6IGFzc2lnbl9yZXN1bHRcbiAgdmFsIHByZWRpY2F0ZV9pZF9vZl9jYXNlX2FkZHJlc3MgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gUEIucHJlZGljYXRlX2lkXG4gIHZhbCBidWlsZF9wb2ludGVyIDogUEIuc3RlcF9zaG9ydF9pZCAtPiBwb2ludGVyXG4gIHZhbCBpc19iZWZvcmVfYmxhY2tib2FyZCA6IHBvaW50ZXIgLT4gYm9vbFxuICB2YWwgZ2V0X2V2ZW50IDogYmxhY2tib2FyZCAtPiBQQi5zdGVwX2lkIC0+IFRyYWNlLnN0ZXBcbiAgdmFsIGdldF9uX2VpZCA6IGJsYWNrYm9hcmQgLT4gaW50XG4gIHZhbCBnZXRfbnByZWRpY2F0ZV9pZCA6IGJsYWNrYm9hcmQgLT4gaW50XG5cbiAgdmFsIGdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZF9ieV9sZXZlbCA6XG4gICAgYmxhY2tib2FyZCAtPiBQQi5wcmVkaWNhdGVfaWQgLT4gUHJpb3JpdHkubGV2ZWwgLT4gaW50XG5cbiAgdmFsIGdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZCA6IGJsYWNrYm9hcmQgLT4gUEIucHJlZGljYXRlX2lkIC0+IGludFxuICB2YWwgZ2V0X25fdW5yZXNvbHZlZF9ldmVudHMgOiBibGFja2JvYXJkIC0+IGludFxuXG4gIHZhbCBnZXRfZmlyc3RfbGlua2VkX2V2ZW50IDpcbiAgICBibGFja2JvYXJkIC0+IFBCLnByZWRpY2F0ZV9pZCAtPiBQQi5zdGVwX3Nob3J0X2lkIG9wdGlvblxuXG4gIHZhbCBnZXRfbGFzdF9saW5rZWRfZXZlbnQgOlxuICAgIGJsYWNrYm9hcmQgLT4gUEIucHJlZGljYXRlX2lkIC0+IFBCLnN0ZXBfc2hvcnRfaWQgb3B0aW9uXG5cbiAgdmFsIGdldF9zdGFja19kZXB0aCA6IGJsYWNrYm9hcmQgLT4gaW50XG5cbiAgdmFsIGlzX3NlbGVjdGVkX2V2ZW50IDpcbiAgICAoUEIuc3RlcF9pZCwgYmxhY2tib2FyZCwgYm9vbCBvcHRpb24pIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyA6IGV2ZW50X2Nhc2VfYWRkcmVzcyAtPiBjYXNlX2FkZHJlc3NcblxuICB2YWwgcHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgOlxuICAgIChjYXNlX3ZhbHVlLCBQQi5wcmVkaWNhdGVfdmFsdWUpIFBCLkNJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBmb2xsb3dfcG9pbnRlcl91cCA6XG4gICAgKGJsYWNrYm9hcmQsIGV2ZW50X2Nhc2VfYWRkcmVzcywgZXZlbnRfY2FzZV9hZGRyZXNzKSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGZvbGxvd19wb2ludGVyX2Rvd24gOlxuICAgIChibGFja2JvYXJkLCBldmVudF9jYXNlX2FkZHJlc3MsIGV2ZW50X2Nhc2VfYWRkcmVzcykgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBpc19ib3VuZGFyeSA6IChibGFja2JvYXJkLCBldmVudF9jYXNlX2FkZHJlc3MsIGJvb2wpIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgYnVpbGRfZXZlbnRfY2FzZV9hZGRyZXNzIDpcbiAgICBQQi5wcmVkaWNhdGVfaWQgLT4gcG9pbnRlciAtPiBldmVudF9jYXNlX2FkZHJlc3NcblxuICB2YWwgZXhpc3RfY2FzZSA6XG4gICAgKGJsYWNrYm9hcmQsIGV2ZW50X2Nhc2VfYWRkcmVzcywgYm9vbCBvcHRpb24pIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgZ2V0X3N0YXRpYyA6XG4gICAgKCBibGFja2JvYXJkLFxuICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzLFxuICAgICAgUEIuc3RlcF9zaG9ydF9pZCAqIFBCLnN0ZXBfaWQgKiBQQi5wcmVkaWNhdGVfdmFsdWUgKiBQQi5wcmVkaWNhdGVfdmFsdWVcbiAgICApXG4gICAgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBzZXQgOlxuICAgIChjYXNlX2FkZHJlc3MsIGNhc2VfdmFsdWUsIGJsYWNrYm9hcmQsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC50ZXJuYXJ5XG5cbiAgdmFsIGdldCA6IChjYXNlX2FkZHJlc3MsIGJsYWNrYm9hcmQsIGNhc2VfdmFsdWUpIFBCLkNJLlBvLksuSC5iaW5hcnlcbiAgdmFsIGRlYyA6IChjYXNlX2FkZHJlc3MsIGJsYWNrYm9hcmQsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgb3ZlcndyaXRlIDpcbiAgICAoY2FzZV9hZGRyZXNzLCBjYXNlX3ZhbHVlLCBibGFja2JvYXJkLCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkgudGVybmFyeVxuXG4gIHZhbCByZWZpbmUgOlxuICAgICggY2FzZV9hZGRyZXNzLFxuICAgICAgY2FzZV92YWx1ZSxcbiAgICAgIGJsYWNrYm9hcmQsXG4gICAgICBibGFja2JvYXJkICogYXNzaWduX3Jlc3VsdCApXG4gICAgUEIuQ0kuUG8uSy5ILnRlcm5hcnlcblxuICB2YWwgYnJhbmNoIDogKGJsYWNrYm9hcmQsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC51bmFyeVxuICB2YWwgcmVzZXRfbGFzdF9icmFuY2hpbmcgOiAoYmxhY2tib2FyZCwgYmxhY2tib2FyZCkgUEIuQ0kuUG8uSy5ILnVuYXJ5XG4gIHZhbCByZXNldF9pbml0IDogKGJsYWNrYm9hcmQsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBpbXBvcnQgOlxuICAgID9oZXVyaXN0aWM6UHJpb3JpdHkucHJpb3JpdGllcyAtPlxuICAgIChUcmFjZS5zdGVwIGxpc3QsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC51bmFyeVxuICAoKiogaW5pdGlhbGlzYXRpb24qKVxuXG4gIHR5cGUgcmVzdWx0ID0gKFRyYWNlLnN0ZXAgKiBQQi5DSS5Qby5LLnNpZGVfZWZmZWN0KSBsaXN0XG4gICgqKiBvdXRwdXQgcmVzdWx0KilcblxuICB2YWwgaXNfbWF4aW1hbF9zb2x1dGlvbiA6IChibGFja2JvYXJkLCBib29sKSBQQi5DSS5Qby5LLkgudW5hcnlcbiAgKCoqIGl0ZXJhdGlvbiopXG5cbiAgdmFsIHRyYW5zbGF0ZV9ibGFja2JvYXJkIDogKGJsYWNrYm9hcmQsIHJlc3VsdCkgUEIuQ0kuUG8uSy5ILnVuYXJ5XG4gICgqKiBleHBvcnRpbmcgcmVzdWx0KilcblxuICB2YWwgcHJpbnRfYmxhY2tib2FyZCA6IChibGFja2JvYXJkLCB1bml0KSBQQi5DSS5Qby5LLkgudW5hcnlcbiAgKCoqcHJldHR5IHByaW50aW5nKilcblxuICB2YWwgZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIDpcbiAgICAoc3RyaW5nLCBpbnQsIGludCwgYmxhY2tib2FyZCwgdW5pdCkgUEIuQ0kuUG8uSy5ILnF1YXRlcm5hcnlcblxuICB2YWwgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIDpcbiAgICAoYmxhY2tib2FyZCwgZXZlbnRfY2FzZV9hZGRyZXNzLCB1bml0KSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIHByaW50X3N0YWNrIDogKGJsYWNrYm9hcmQsIHVuaXQpIFBCLkNJLlBvLksuSC51bmFyeVxuICB2YWwgZXhpc3QgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV9hZGRyZXNzXG4gIHZhbCBib29sZWFuIDogYm9vbCBvcHRpb24gLT4gY2FzZV92YWx1ZVxuICB2YWwgcG9pbnRlcl90b19wcmV2aW91cyA6IGV2ZW50X2Nhc2VfYWRkcmVzcyAtPiBjYXNlX2FkZHJlc3NcbiAgdmFsIHBvaW50ZXJfdG9fbmV4dCA6IGV2ZW50X2Nhc2VfYWRkcmVzcyAtPiBjYXNlX2FkZHJlc3NcbiAgdmFsIHBvaW50ZXIgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV92YWx1ZVxuICB2YWwgdmFsdWVfYWZ0ZXIgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV9hZGRyZXNzXG5cbiAgdmFsIGNhc2VfbGlzdF9vZl9laWQgOlxuICAgIChibGFja2JvYXJkLCBQQi5zdGVwX2lkLCBldmVudF9jYXNlX2FkZHJlc3MgbGlzdCkgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBzdGF0ZSA6IFBCLnByZWRpY2F0ZV92YWx1ZSAtPiBjYXNlX3ZhbHVlXG4gIHZhbCBpc19leGlzdF9ldmVudCA6IFBCLnN0ZXBfaWQgLT4gY2FzZV9hZGRyZXNzXG4gIHZhbCBuX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIDogUHJpb3JpdHkubGV2ZWwgLT4gY2FzZV9hZGRyZXNzXG4gIHZhbCBuX3VucmVzb2x2ZWRfZXZlbnRzIDogY2FzZV9hZGRyZXNzXG5cbiAgdmFsIG5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIDpcbiAgICBldmVudF9jYXNlX2FkZHJlc3MgLT4gUHJpb3JpdHkubGV2ZWwgLT4gY2FzZV9hZGRyZXNzXG5cbiAgdmFsIG5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIDogZXZlbnRfY2FzZV9hZGRyZXNzIC0+IGNhc2VfYWRkcmVzc1xuXG4gIHZhbCBmb3JjZWRfZXZlbnRzIDpcbiAgICBibGFja2JvYXJkIC0+IChQQi5zdGVwX2lkIGxpc3QgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IG9wdGlvbikgbGlzdFxuXG4gIHZhbCBzaWRlX2VmZmVjdF9vZl9ldmVudCA6IGJsYWNrYm9hcmQgLT4gUEIuc3RlcF9pZCAtPiBQQi5DSS5Qby5LLnNpZGVfZWZmZWN0XG5cbiAgdmFsIGN1dCA6XG4gICAgKCBibGFja2JvYXJkLFxuICAgICAgUEIuc3RlcF9pZCBsaXN0LFxuICAgICAgYmxhY2tib2FyZCAqIFBCLnN0ZXBfaWQgbGlzdCApXG4gICAgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCB0aWNrIDpcbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgYm9vbCAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm9cbiAgKCogdG8gZG86IG1vdmUgdG8gdGhlIG1vZHVsZSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzKilcblxuICB2YWwgbGV2ZWxfb2ZfZXZlbnQgOlxuICAgIChibGFja2JvYXJkLCBQQi5zdGVwX2lkLCBQcmlvcml0eS5sZXZlbCkgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuZW5kXG5cbm1vZHVsZSBCbGFja2JvYXJkIDogQmxhY2tib2FyZCA9IHN0cnVjdFxuICBtb2R1bGUgUEIgPSBCbGFja2JvYXJkX2dlbmVyYXRpb24uUHJlYmxhY2tib2FyZFxuICAoKiogYmxhY2tib2FyZCBtYXRyaXgqKVxuXG4gIHR5cGUgYXNzaWduX3Jlc3VsdCA9IEZhaWwgfCBTdWNjZXNzIHwgSWdub3JlXG4gIHR5cGUgcG9pbnRlciA9IFBCLnN0ZXBfc2hvcnRfaWRcblxuICBsZXQgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgcG9zID8obWVzc2FnZSA9IFwiXCIpIGV4biBkZWZhdWx0ID1cbiAgICBsZXQgZXJyb3IsIGEgPVxuICAgICAgRXhjZXB0aW9uLndhcm5cbiAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgcG9zIH5tZXNzYWdlIGV4biBkZWZhdWx0XG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGFcblxuICBsZXQgc3VjY2VzcyA9IFN1Y2Nlc3NcbiAgbGV0IGlnbm9yZSA9IElnbm9yZVxuICBsZXQgZmFpbCA9IEZhaWxcblxuICBsZXQgaXNfaWdub3JlZCB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IElnbm9yZSAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGlzX2ZhaWxlZCB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEZhaWwgLT4gdHJ1ZVxuICAgIHwgU3VjY2VzcyB8IElnbm9yZSAtPiBmYWxzZVxuXG4gIGxldCBpc19zdWNjZWVkZWQgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBTdWNjZXNzIC0+IHRydWVcbiAgICB8IEZhaWwgfCBJZ25vcmUgLT4gZmFsc2VcblxuICBsZXQgbnVsbF9wb2ludGVyID0gUEIuZHVtbXlfc3RlcF9zaG9ydF9pZFxuICBsZXQgaXNfbnVsbF9wb2ludGVyIHggPSB4ID0gbnVsbF9wb2ludGVyXG4gIGxldCBwb2ludGVyX2JlZm9yZV9ibGFja2JvYXJkID0gUEIuemVyb19zdGVwX3Nob3J0X2lkXG4gIGxldCBpc19udWxsX3BvaW50ZXJfc3RlcF9pZCB4ID0geCA9IFBCLmR1bW15X3N0ZXBfaWRcbiAgbGV0IGlzX2JlZm9yZV9ibGFja2JvYXJkIHggPSB4ID0gcG9pbnRlcl9iZWZvcmVfYmxhY2tib2FyZFxuICBsZXQgYnVpbGRfcG9pbnRlciBpID0gaVxuXG4gIHR5cGUgZXZlbnRfY2FzZV9hZGRyZXNzID0ge1xuICAgIGNvbHVtbl9wcmVkaWNhdGVfaWQ6IFBCLnByZWRpY2F0ZV9pZDtcbiAgICByb3dfc2hvcnRfZXZlbnRfaWQ6IHBvaW50ZXI7XG4gIH1cblxuICBsZXQgcHJlZGljYXRlX2lkX29mX2Nhc2VfYWRkcmVzcyB4ID0geC5jb2x1bW5fcHJlZGljYXRlX2lkXG5cbiAgbGV0IGlzX2JvdW5kYXJ5IF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgX2JsYWNrYm9hcmQgZXZlbnRfYWRkcmVzcyA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBpc19iZWZvcmVfYmxhY2tib2FyZCBldmVudF9hZGRyZXNzLnJvd19zaG9ydF9ldmVudF9pZFxuXG4gIGxldCBidWlsZF9ldmVudF9jYXNlX2FkZHJlc3MgcGlkIHNlaWQgPVxuICAgIHsgY29sdW1uX3ByZWRpY2F0ZV9pZCA9IHBpZDsgcm93X3Nob3J0X2V2ZW50X2lkID0gc2VpZCB9XG5cbiAgdHlwZSBjYXNlX2FkZHJlc3MgPVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgb2YgaW50ICogUHJpb3JpdHkubGV2ZWxcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIG9mIGludFxuICAgIHwgUG9pbnRlcl90b19uZXh0IG9mIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgVmFsdWVfYWZ0ZXIgb2YgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgfCBWYWx1ZV9iZWZvcmUgb2YgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgfCBQb2ludGVyX3RvX3ByZXZpb3VzIG9mIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c1xuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCBvZiBQcmlvcml0eS5sZXZlbFxuICAgIHwgRXhpc3Qgb2YgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgfCBLZWVwX2V2ZW50IG9mIFBCLnN0ZXBfaWRcblxuICBsZXQgaXNfZXhpc3RfZXZlbnQgaSA9IEtlZXBfZXZlbnQgaVxuXG4gIGxldCBuX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBpID1cbiAgICBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBpLmNvbHVtbl9wcmVkaWNhdGVfaWRcblxuICBsZXQgbl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgaSBqID1cbiAgICBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCAoaS5jb2x1bW5fcHJlZGljYXRlX2lkLCBqKVxuXG4gIGxldCBwb2ludGVyX3RvX25leHQgZSA9IFBvaW50ZXJfdG9fbmV4dCBlXG4gIGxldCB2YWx1ZV9hZnRlciBlID0gVmFsdWVfYWZ0ZXIgZVxuICBsZXQgdmFsdWVfYmVmb3JlIGUgPSBWYWx1ZV9iZWZvcmUgZVxuICBsZXQgcG9pbnRlcl90b19wcmV2aW91cyBlID0gUG9pbnRlcl90b19wcmV2aW91cyBlXG4gIGxldCBuX3VucmVzb2x2ZWRfZXZlbnRzID0gTl91bnJlc29sdmVkX2V2ZW50c1xuICBsZXQgbl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCBpID0gTl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCBpXG4gIGxldCBleGlzdCBlID0gRXhpc3QgZVxuXG4gIHR5cGUgY2FzZV92YWx1ZSA9XG4gICAgfCBTdGF0ZSBvZiBQQi5wcmVkaWNhdGVfdmFsdWVcbiAgICB8IENvdW50ZXIgb2YgaW50XG4gICAgfCBQb2ludGVyIG9mIHBvaW50ZXJcbiAgICB8IEJvb2xlYW4gb2YgYm9vbCBvcHRpb25cblxuICBsZXQgcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBTdGF0ZSB4IC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBcIlN0YXRlISBcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIFBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICB4XG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgIGluXG4gICAgICAoKVxuICAgIHwgQ291bnRlciBpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgXCJDb3VudGVyICVpXCIgaVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgKClcbiAgICB8IFBvaW50ZXIgaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIFwiUG9pbnRlciAlaVwiXG4gICAgICAgICAgKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIGkpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgIGluXG4gICAgICAoKVxuICAgIHwgQm9vbGVhbiBiIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgXCJCb29sZWFuICVzXCJcbiAgICAgICAgICAobWF0Y2ggYiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFwiP1wiXG4gICAgICAgICAgfCBTb21lIHRydWUgLT4gXCJ0cnVlXCJcbiAgICAgICAgICB8IF8gLT4gXCJmYWxzZVwiKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgKClcblxuICBsZXQgc3RyaW5nX29mX3BvaW50ZXIgc2VpZCA9XG4gICAgXCJldmVudCBzZWlkIFwiIF4gc3RyaW5nX29mX2ludCAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgc2VpZClcblxuICBsZXQgcHJpbnRfcG9pbnRlciBsb2cgc2VpZCA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIlc1wiIChzdHJpbmdfb2ZfcG9pbnRlciBzZWlkKVxuICBsZXQgc3RhdGUgcHJlZGljYXRlX3ZhbHVlID0gU3RhdGUgcHJlZGljYXRlX3ZhbHVlXG4gIGxldCBwb2ludGVyIHAgPSBQb2ludGVyIHAucm93X3Nob3J0X2V2ZW50X2lkXG4gIGxldCBib29sZWFuIGIgPSBCb29sZWFuIGJcblxuICBsZXQgY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBldmVudF9hZGRyZXNzID1cbiAgICBWYWx1ZV9hZnRlciBldmVudF9hZGRyZXNzXG5cbiAgbGV0IHByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX3ZhbHVlXG4gICAgICA9XG4gICAgbWF0Y2ggY2FzZV92YWx1ZSB3aXRoXG4gICAgfCBTdGF0ZSB4IC0+IGVycm9yLCBsb2dfaW5mbywgeFxuICAgIHwgQ291bnRlciBfIHwgUG9pbnRlciBfIHwgQm9vbGVhbiBfIC0+XG4gICAgICBsZXQgXyA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGNhc2VfdmFsdWUgaW5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJ3cm9uZyBraW5kIG9mIGNhc2VfdmFsdWUgaW4gcHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWVcIlxuICAgICAgICAoRmFpbHVyZSBcInByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlXCIpIFBCLnVua25vd25cblxuICB0eXBlIGFzc2lnbm1lbnQgPSBjYXNlX2FkZHJlc3MgKiBjYXNlX3ZhbHVlXG5cbiAgbGV0IGJvb2xfc3RyaWN0bHlfbW9yZV9yZWZpbmVkIHggeSA9XG4gICAgbWF0Y2ggeCwgeSB3aXRoXG4gICAgfCBTb21lIF8sIE5vbmUgLT4gdHJ1ZVxuICAgIHwgXywgXyAtPiBmYWxzZVxuXG4gIGxldCBnIHAgcDIgcG9zIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciB4IHkgPVxuICAgIG1hdGNoIHgsIHkgd2l0aFxuICAgIHwgU3RhdGUgeCwgU3RhdGUgeSAtPiBlcnJvciwgbG9nX2luZm8sIHAgeCB5XG4gICAgfCBCb29sZWFuIHgsIEJvb2xlYW4geSAtPiBlcnJvciwgbG9nX2luZm8sIHAyIHggeVxuICAgIHwgU3RhdGUgXywgXyB8IEJvb2xlYW4gXywgXyB8IENvdW50ZXIgXywgXyB8IFBvaW50ZXIgXywgXyAtPlxuICAgICAgbGV0IGZpbGUsIGxpbmUsIF8sIF8gPSBwb3MgaW5cbiAgICAgIGxldCBzdHJpbmcgPSBmaWxlIF4gXCIsIGxpbmU6IFwiIF4gc3RyaW5nX29mX2ludCBsaW5lIGluXG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBwb3NcbiAgICAgICAgfm1lc3NhZ2U6XCJDb3VudGVycyBhbmQvb3IgUG9pbnRlcnMgc2hvdWxkIG5vdCBiZSBjb21wYXJlZFwiXG4gICAgICAgIChGYWlsdXJlIChzdHJpbmcgXiBcIiBDb21wYXJpc29uIGJldHdlZW4gcG9pbnRlcnMgYW5kIGNvdW50ZXJzXCIpKVxuICAgICAgICBmYWxzZVxuXG4gIGxldCBzdHJpY3RseV9tb3JlX3JlZmluZWQgPVxuICAgIGcgUEIuc3RyaWN0bHlfbW9yZV9yZWZpbmVkIGJvb2xfc3RyaWN0bHlfbW9yZV9yZWZpbmVkIF9fUE9TX19cblxuICB0eXBlIGNhc2VfaW5mb19zdGF0aWMgPSB7XG4gICAgcm93X3Nob3J0X2lkOiBQQi5zdGVwX3Nob3J0X2lkO1xuICAgIGV2ZW50X2lkOiBQQi5zdGVwX2lkO1xuICAgIHRlc3Q6IFBCLnByZWRpY2F0ZV92YWx1ZTtcbiAgICBhY3Rpb246IFBCLnByZWRpY2F0ZV92YWx1ZTtcbiAgfVxuXG4gIHR5cGUgY2FzZV9pbmZvX2R5bmFtaWMgPSB7XG4gICAgcG9pbnRlcl9wcmV2aW91czogcG9pbnRlcjtcbiAgICBwb2ludGVyX25leHQ6IHBvaW50ZXI7XG4gICAgc3RhdGVfYWZ0ZXI6IFBCLnByZWRpY2F0ZV92YWx1ZTtcbiAgICBzZWxlY3RlZDogYm9vbCBvcHRpb247XG4gIH1cblxuICB0eXBlIGNhc2VfaW5mbyA9IHsgc3RhdGljOiBjYXNlX2luZm9fc3RhdGljOyBkeW5hbWljOiBjYXNlX2luZm9fZHluYW1pYyB9XG5cbiAgbGV0IGR1bW15X2Nhc2VfaW5mb19zdGF0aWMgPVxuICAgIHtcbiAgICAgIHJvd19zaG9ydF9pZCA9IFBCLmR1bW15X3N0ZXBfc2hvcnRfaWQ7XG4gICAgICBldmVudF9pZCA9IFBCLmR1bW15X3N0ZXBfaWQ7XG4gICAgICB0ZXN0ID0gUEIudW5rbm93bjtcbiAgICAgIGFjdGlvbiA9IFBCLnVua25vd247XG4gICAgfVxuXG4gIGxldCBkdW1teV9jYXNlX2luZm9fZHluYW1pYyA9XG4gICAge1xuICAgICAgcG9pbnRlcl9wcmV2aW91cyA9IG51bGxfcG9pbnRlcjtcbiAgICAgIHBvaW50ZXJfbmV4dCA9IG51bGxfcG9pbnRlcjtcbiAgICAgIHN0YXRlX2FmdGVyID0gUEIudW5rbm93bjtcbiAgICAgIHNlbGVjdGVkID0gTm9uZTtcbiAgICB9XG5cbiAgbGV0IGNvcnJlY3RfcG9pbnRlciBzZWlkIHNpemUgPVxuICAgIGxldCBpbnRfc2VpZCA9IFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHNlaWQgaW5cbiAgICBpZiBpbnRfc2VpZCA8IDAgdGhlblxuICAgICAgcG9pbnRlcl9iZWZvcmVfYmxhY2tib2FyZFxuICAgIGVsc2UgaWYgaW50X3NlaWQgPj0gc2l6ZSB0aGVuXG4gICAgICBQQi5zdGVwX3Nob3J0X2lkX29mX2ludCBzaXplXG4gICAgZWxzZVxuICAgICAgc2VpZFxuXG4gIGxldCBpbml0X2luZm9fZHluYW1pYyBzZWlkIHNpemUgPVxuICAgIHtcbiAgICAgIHBvaW50ZXJfcHJldmlvdXMgPSBjb3JyZWN0X3BvaW50ZXIgKFBCLmRlY19zdGVwX3Nob3J0X2lkIHNlaWQpIHNpemU7XG4gICAgICBwb2ludGVyX25leHQgPSBjb3JyZWN0X3BvaW50ZXIgKFBCLmluY19zdGVwX3Nob3J0X2lkIHNlaWQpIHNpemU7XG4gICAgICBzdGF0ZV9hZnRlciA9IFBCLnVua25vd247XG4gICAgICBzZWxlY3RlZCA9IE5vbmU7XG4gICAgfVxuXG4gIGxldCBpbml0X2luZm9fc3RhdGljIF9wX2lkIHNlaWQgKGVpZCwgXywgdGVzdCwgYWN0aW9uKSA9XG4gICAgeyByb3dfc2hvcnRfaWQgPSBzZWlkOyBldmVudF9pZCA9IGVpZDsgdGVzdDsgYWN0aW9uIH1cblxuICBsZXQgZ2V0X2VpZF9vZl90cmlwbGUgKHgsIF8sIF8sIF8pID0geFxuXG4gIGxldCBkdW1teV9jYXNlX2luZm8gPVxuICAgIHsgc3RhdGljID0gZHVtbXlfY2FzZV9pbmZvX3N0YXRpYzsgZHluYW1pYyA9IGR1bW15X2Nhc2VfaW5mb19keW5hbWljIH1cblxuICBsZXQgaW5pdF9pbmZvIHBfaWQgc2VpZCBzaXplIHRyaXBsZSA9XG4gICAge1xuICAgICAgc3RhdGljID0gaW5pdF9pbmZvX3N0YXRpYyBwX2lkIHNlaWQgdHJpcGxlO1xuICAgICAgZHluYW1pYyA9IGluaXRfaW5mb19keW5hbWljIHNlaWQgc2l6ZTtcbiAgICB9XG5cbiAgdHlwZSBzdGFjayA9IGFzc2lnbm1lbnQgbGlzdFxuICAoKiogYmxhY2tib2FyZCAqKVxuXG4gIHR5cGUgYmxhY2tib2FyZCA9IHtcbiAgICBldmVudDogVHJhY2Uuc3RlcCBQQi5BLnQ7XG4gICAgcHJlX2NvbHVtbl9tYXBfaW52OiBQQi5wcmVkaWNhdGVfaW5mbyBQQi5BLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggd2lyZSBpZCB0byBpdHMgd2lyZSBsYWJlbCAqKVxuICAgIGZvcmNlZF9ldmVudHM6IChQQi5zdGVwX2lkIGxpc3QgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IG9wdGlvbikgbGlzdDtcbiAgICBuX3ByZWRpY2F0ZV9pZDogaW50O1xuICAgIG5fZWlkOiBpbnQ7XG4gICAgbl9zZWlkOiBpbnQgUEIuQS50O1xuICAgIGN1cnJlbnRfc3RhY2s6IHN0YWNrO1xuICAgIHN0YWNrOiBzdGFjayBsaXN0O1xuICAgIGJsYWNrYm9hcmQ6IGNhc2VfaW5mbyBQQi5BLnQgUEIuQS50O1xuICAgIHNlbGVjdGVkX2V2ZW50czogYm9vbCBvcHRpb24gUEIuQS50O1xuICAgIHdlaWd0aF9vZl9wcmVkaWNhdGVfaWQ6IGludCBQQi5BLnQ7XG4gICAgd2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbDogaW50IFBCLkEudCBQcmlvcml0eS5MZXZlbE1hcC50O1xuICAgIHVzZWRfcHJlZGljYXRlX2lkOiBib29sIFBCLkEudDtcbiAgICBuX3VucmVzb2x2ZWRfZXZlbnRzOiBpbnQ7XG4gICAgbl91bnJlc29sdmVkX2V2ZW50c19ieV9sZXZlbDogaW50IFByaW9yaXR5LkxldmVsTWFwLnQ7XG4gICAgbGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlX2lkOiBQQi5zdGVwX3Nob3J0X2lkIFBCLkEudDtcbiAgICBldmVudF9jYXNlX2xpc3Q6IGV2ZW50X2Nhc2VfYWRkcmVzcyBsaXN0IFBCLkEudDtcbiAgICBzaWRlX2VmZmVjdF9vZl9ldmVudDogUEIuQ0kuUG8uSy5zaWRlX2VmZmVjdCBQQi5BLnQ7XG4gICAgZmljdGl0aW91c19vYnNlcnZhYmxlOiBQQi5zdGVwX2lkIG9wdGlvbjtcbiAgICBsZXZlbF9vZl9ldmVudDogUHJpb3JpdHkubGV2ZWwgUEIuQS50O1xuICB9XG5cbiAgbGV0IHRpY2sgcHJvZmlsaW5nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnRpY2sgcHJvZmlsaW5nX2luZm9cblxuICBsZXQgbGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZWlkID1cbiAgICB0cnlcbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBQQi5BLmdldCBibGFja2JvYXJkLmxldmVsX29mX2V2ZW50IChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpIClcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcIlVua25vd24gZXZlbnQgaWRcIlxuICAgICAgICAoRmFpbHVyZSBcIlVua25vd24gZXZlbnQgaWRcIikgUHJpb3JpdHkuaGlnaGVzdFxuXG4gIGxldCBnZXRfZXZlbnQgYmxhY2tib2FyZCBrID0gUEIuQS5nZXQgYmxhY2tib2FyZC5ldmVudCAoUEIuaW50X29mX3N0ZXBfaWQgaylcbiAgbGV0IGdldF9uX2VpZCBibGFja2JvYXJkID0gYmxhY2tib2FyZC5uX2VpZFxuICBsZXQgZ2V0X3N0YWNrX2RlcHRoIGJsYWNrYm9hcmQgPSBMaXN0Lmxlbmd0aCBibGFja2JvYXJkLnN0YWNrXG4gIGxldCBmb3JjZWRfZXZlbnRzIGJsYWNrYm9hcmQgPSBibGFja2JvYXJkLmZvcmNlZF9ldmVudHNcblxuICBsZXQgc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgYmxhY2tib2FyZCBpID1cbiAgICBQQi5BLmdldCBibGFja2JvYXJkLnNpZGVfZWZmZWN0X29mX2V2ZW50IChQQi5pbnRfb2Zfc3RlcF9pZCBpKVxuXG4gIGxldCBjYXNlX2xpc3Rfb2ZfZWlkIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVpZCA9XG4gICAgdHJ5XG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgUEIuQS5nZXQgYmxhY2tib2FyZC5ldmVudF9jYXNlX2xpc3QgKFBCLmludF9vZl9zdGVwX2lkIGVpZCkgKVxuICAgIHdpdGggXyAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcIkRlcmVmZXJlbmNpbmcgTnVsbCBwb2ludGVyXCJcbiAgICAgICAgKEZhaWx1cmUgXCJEZXJlZmVyZW5jaW5nIG51bGwgcG9pbnRlclwiKSBbXVxuXG4gIGxldCBnZXRfY2FzZSBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmQgPVxuICAgIHRyeVxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIFBCLkEuZ2V0XG4gICAgICAgICAgKFBCLkEuZ2V0IGJsYWNrYm9hcmQuYmxhY2tib2FyZCBjYXNlX2FkZHJlc3MuY29sdW1uX3ByZWRpY2F0ZV9pZClcbiAgICAgICAgICAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgY2FzZV9hZGRyZXNzLnJvd19zaG9ydF9ldmVudF9pZCkgKVxuICAgIHdpdGggXyAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcIkRlcmVmZXJlbmNpbmcgTnVsbCBwb2ludGVyXCJcbiAgICAgICAgKEZhaWx1cmUgXCJEZXJlZmVyZW5jaW5nIG51bGwgcG9pbnRlclwiKSBkdW1teV9jYXNlX2luZm9cblxuICBsZXQgZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3MgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2UgPVxuICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYWRkcmVzcyBibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgc3RhdGljID0gY2FzZS5zdGF0aWMgaW5cbiAgICAoIGVycm9yLFxuICAgICAgbG9nX2luZm8sXG4gICAgICAoc3RhdGljLnJvd19zaG9ydF9pZCwgc3RhdGljLmV2ZW50X2lkLCBzdGF0aWMudGVzdCwgc3RhdGljLmFjdGlvbikgKVxuXG4gIGxldCBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF8sIGVpZCwgXywgXykgPVxuICAgICAgZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgXCJFdmVudDogJWksIFByZWRpY2F0ZTogJWlALlwiIChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpXG4gICAgICAgIChwcmVkaWNhdGVfaWRfb2ZfY2FzZV9hZGRyZXNzIGNhc2UpXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sICgpXG5cbiAgbGV0IHByaW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgKGksIGopIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIFwibl91bnJlc29sdmVkX2V2ZW50c19pbl9wcmVkICVpICVzQC5cIiBpXG4gICAgICAgICAgKFByaW9yaXR5LnN0cmluZ19vZl9sZXZlbCBqKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIGkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgXCJuX3VucmVzb2x2ZWRfZXZlbnRzX2luX3ByZWQgJWkgQC5cIiBpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIHwgUG9pbnRlcl90b19uZXh0IGUgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIlBvaW50ZXJcIiBpblxuICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZVxuICAgIHwgVmFsdWVfYWZ0ZXIgZSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpIFwiVmFsdWVfYWZ0ZXIgIFwiXG4gICAgICBpblxuICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZVxuICAgIHwgVmFsdWVfYmVmb3JlIGUgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIlZhbHVlX2JlZm9yZSBcIlxuICAgICAgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVcbiAgICB8IFBvaW50ZXJfdG9fcHJldmlvdXMgZSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpIFwiUG9pbnRlcl9iZWZvcmUgXCJcbiAgICAgIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBlXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIGkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBcIlVucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsICVzXCJcbiAgICAgICAgICAoUHJpb3JpdHkuc3RyaW5nX29mX2xldmVsIGkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50cyAtPlxuICAgICAgbGV0IF8gPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcikgXCJVbnJlc29sdmVkX2V2ZW50c1wiXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIHwgRXhpc3QgZSAtPlxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpIFwiRXhpc3QgXCIgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVcbiAgICB8IEtlZXBfZXZlbnQgaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICBcIktlZXAgJWlcIiAoUEIuaW50X29mX3N0ZXBfaWQgaSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG5cbiAgbGV0IGdldF9ucHJlZGljYXRlX2lkIGJsYWNrYm9hcmQgPSBibGFja2JvYXJkLm5fcHJlZGljYXRlX2lkXG5cbiAgbGV0IGdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZF9ieV9sZXZlbCBibGFja2JvYXJkIHBpZCBsZXZlbCA9XG4gICAgbWF0Y2hcbiAgICAgIFByaW9yaXR5LkxldmVsTWFwLmZpbmRfb3B0aW9uIGxldmVsXG4gICAgICAgIGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbFxuICAgIHdpdGhcbiAgICB8IFNvbWUgeCAtPiBQQi5BLmdldCB4IHBpZFxuICAgIHwgTm9uZSAtPiAwXG5cbiAgbGV0IGdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZCBibGFja2JvYXJkIHBpZCA9XG4gICAgUEIuQS5nZXQgYmxhY2tib2FyZC53ZWlndGhfb2ZfcHJlZGljYXRlX2lkIHBpZFxuXG4gIGxldCBnZXRfbl91bnJlc29sdmVkX2V2ZW50cyBibGFja2JvYXJkID0gYmxhY2tib2FyZC5uX3VucmVzb2x2ZWRfZXZlbnRzXG4gIGxldCBnZXRfcG9pbnRlcl9uZXh0IGNhc2UgPSBjYXNlLmR5bmFtaWMucG9pbnRlcl9uZXh0XG5cbiAgbGV0IGZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGFkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgeyBhZGRyZXNzIHdpdGggcm93X3Nob3J0X2V2ZW50X2lkID0gY2FzZS5keW5hbWljLnBvaW50ZXJfbmV4dCB9IClcblxuICBsZXQgZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGFkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgeyBhZGRyZXNzIHdpdGggcm93X3Nob3J0X2V2ZW50X2lkID0gY2FzZS5keW5hbWljLnBvaW50ZXJfcHJldmlvdXMgfSApXG5cbiAgbGV0IGdldF9maXJzdF9saW5rZWRfZXZlbnQgYmxhY2tib2FyZCBwaWQgPVxuICAgIGlmIHBpZCA8IDAgfHwgcGlkID49IGJsYWNrYm9hcmQubl9wcmVkaWNhdGVfaWQgdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIFNvbWUgUEIuemVyb19zdGVwX3Nob3J0X2lkXG5cbiAgbGV0IGdldF9sYXN0X2xpbmtlZF9ldmVudCBibGFja2JvYXJkIHBpZCA9XG4gICAgaWYgcGlkIDwgMCB8fCBwaWQgPj0gYmxhY2tib2FyZC5uX3ByZWRpY2F0ZV9pZCB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgU29tZSAoUEIuQS5nZXQgYmxhY2tib2FyZC5sYXN0X2xpbmtlZF9ldmVudF9vZl9wcmVkaWNhdGVfaWQgcGlkKVxuXG4gICgqKnByZXR0eSBwcmludGluZyopXG4gIGxldCBwcmludF9rbm93bl9jYXNlIGxvZyBwcmVmIGluZiBzdWYgY2FzZSA9XG4gICAgbGV0IF8gPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXN0ZXN0OlwiIHByZWYgaW5cbiAgICBsZXQgXyA9IFBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgY2FzZS5zdGF0aWMudGVzdCBpblxuICAgIGxldCBfID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCIvZWlkOiVpL2FjdGlvbjpcIlxuICAgICAgICAoUEIuaW50X29mX3N0ZXBfaWQgY2FzZS5zdGF0aWMuZXZlbnRfaWQpXG4gICAgaW5cbiAgICBsZXQgXyA9IFBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgY2FzZS5zdGF0aWMuYWN0aW9uIGluXG4gICAgbGV0IF8gPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXNcIiBpbmYgaW5cbiAgICBsZXQgXyA9IFBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgY2FzZS5keW5hbWljLnN0YXRlX2FmdGVyIGluXG4gICAgbGV0IF8gPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXNcIiBzdWYgaW5cbiAgICAoKVxuXG4gIGxldCBwcmludF9jYXNlIGxvZyBjYXNlID1cbiAgICBsZXQgc3RhdHVzID0gY2FzZS5keW5hbWljLnNlbGVjdGVkIGluXG4gICAgbWF0Y2ggc3RhdHVzIHdpdGhcbiAgICB8IFNvbWUgZmFsc2UgLT4gKClcbiAgICB8IFNvbWUgdHJ1ZSAtPiBwcmludF9rbm93bl9jYXNlIGxvZyBcIlwiIFwiIFwiIFwiIFwiIGNhc2VcbiAgICB8IE5vbmUgLT4gcHJpbnRfa25vd25fY2FzZSBsb2cgXCI/KFwiIFwiKSBcIiBcIiBcIiBjYXNlXG5cbiAgbGV0IHByaW50X2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzID1cbiAgICBsZXQgbG9nID0gUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgaW5cbiAgICBtYXRjaCBhZGRyZXNzIHdpdGhcbiAgICB8IEtlZXBfZXZlbnQgaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIklzIHRoZSBldmVudCAlaSBzZWxlY3RlZCA/IFwiIChQQi5pbnRfb2Zfc3RlcF9pZCBpKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IEV4aXN0IGkgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJJcyB0aGUgY2FzZSBcIiBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcInNlbGVjdGVkID8gXCIgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIChpLCBqKSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ1xuICAgICAgICAgIFwiTnVtYmVyIG9mIHVucmVzb2x2ZWQgZXZlbnRzIGZvciB0aGUgcHJlZGljYXRlICVpIGF0IGxldmVsICVzXCIgaVxuICAgICAgICAgIChQcmlvcml0eS5zdHJpbmdfb2ZfbGV2ZWwgailcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTnVtYmVyIG9mIHVucmVzb2x2ZWQgZXZlbnRzIGZvciB0aGUgcHJlZGljYXRlICVpXCIgaVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IFBvaW50ZXJfdG9fbmV4dCBpIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiUHJvY2hhaW4gw6l2w6luZW1lbnQgYWdpc3NhbnQgc3VyIFwiIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpXG4gICAgfCBWYWx1ZV9hZnRlciBpIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiVmFsZXVyIGFwcsOocyBcIiBpblxuICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgaVxuICAgIHwgVmFsdWVfYmVmb3JlIGkgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJWYWxldXIgYXZhbnQgXCIgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGlcbiAgICB8IFBvaW50ZXJfdG9fcHJldmlvdXMgaSAtPlxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkV2ZW5lbWVudCBwcsOpY8Opc2VudCBhZ2lzc2FudCBzdXIgXCIgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGlcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHMgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJOb21icmUgZCfDqXbDqW5lbWVudHMgbm9uIHLDqXNvbHVcIiBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCBpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTm9tYnJlIGQnw6l2w6luZW1lbnRzIG5vbiByw6lzb2x1IGF0IGxldmVsICVzXCJcbiAgICAgICAgICAoUHJpb3JpdHkuc3RyaW5nX29mX2xldmVsIGkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gIGxldCBzdHJpbmdfb2ZfdmFsdWUgdmFsdWUgPVxuICAgIG1hdGNoIHZhbHVlIHdpdGhcbiAgICB8IFN0YXRlIHBiIC0+IFBCLnN0cmluZ19vZl9wcmVkaWNhdGVfdmFsdWUgcGJcbiAgICB8IENvdW50ZXIgaSAtPiBcIkNvdW50ZXIgXCIgXiBzdHJpbmdfb2ZfaW50IGlcbiAgICB8IFBvaW50ZXIgaSAtPiBzdHJpbmdfb2ZfcG9pbnRlciBpXG4gICAgfCBCb29sZWFuIGJvb2wgLT5cbiAgICAgIChtYXRjaCBib29sIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBcIj9cIlxuICAgICAgfCBTb21lIHRydWUgLT4gXCJZZXNcIlxuICAgICAgfCBTb21lIGZhbHNlIC0+IFwiTm9cIilcblxuICBsZXQgcHJpbnRfdmFsdWUgbG9nIHZhbHVlID1cbiAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgfCBTdGF0ZSBwYiAtPiBQQi5wcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIHBiXG4gICAgfCBDb3VudGVyIGkgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkNvdW50ZXIgJWlcIiBpXG4gICAgfCBQb2ludGVyIGkgLT4gcHJpbnRfcG9pbnRlciBsb2cgaVxuICAgIHwgQm9vbGVhbiBib29sIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXNcIlxuICAgICAgICAobWF0Y2ggYm9vbCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIj9cIlxuICAgICAgICB8IFNvbWUgdHJ1ZSAtPiBcIlllc1wiXG4gICAgICAgIHwgU29tZSBmYWxzZSAtPiBcIk5vXCIpXG5cbiAgbGV0IHByaW50X2Fzc2lnbm1lbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgKGFkZHJlc3MsIHZhbHVlKSA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgcHJpbnRfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3NcbiAgICBpblxuICAgIGxldCBfID0gcHJpbnRfdmFsdWUgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSB2YWx1ZSBpblxuICAgIGVycm9yLCBsb2dfaW5mb1xuXG4gIGxldCBwcmludF9ibGFja2JvYXJkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCBsb2cgPSBQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlciBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqKkJMQUNLQk9BUkQqKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiJWkgd2lyZXMsICVpIGV2ZW50c1wiIGJsYWNrYm9hcmQubl9wcmVkaWNhdGVfaWRcbiAgICAgICAgYmxhY2tib2FyZC5uX2VpZFxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqd2lyZXM6KlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCBlcnIgPSByZWYgZXJyb3IgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgUEIuQS5pdGVyaVxuICAgICAgICAoZnVuIGkgYXJyYXkgLT5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJWlcIiBpIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBpZiBQQi5BLmdldCBibGFja2JvYXJkLnVzZWRfcHJlZGljYXRlX2lkIGkgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqd2lyZXMgJWk6IFwiIGkgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICBsZXQgcmVjIGF1eCBqIGVycm9yID1cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKiAlaTpcIiBqIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICAgIGxldCBjYXNlID0gUEIuQS5nZXQgYXJyYXkgaiBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2UgbG9nIGNhc2UgaW5cbiAgICAgICAgICAgICAgICBsZXQgaicgPSBnZXRfcG9pbnRlcl9uZXh0IGNhc2UgaW5cbiAgICAgICAgICAgICAgICBsZXQgaicgPSBQQi5pbnRfb2Zfc3RlcF9zaG9ydF9pZCBqJyBpblxuICAgICAgICAgICAgICAgIGlmIGogPSBqJyB0aGVuXG4gICAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGF1eCBqJyBlcnJvclxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICAgIGF1eCAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgcG9pbnRlcl9iZWZvcmVfYmxhY2tib2FyZCkgIWVyclxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgXyA9IGVyciA6PSBlcnJvciBpblxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nKVxuICAgICAgICBibGFja2JvYXJkLmJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBlcnJvciA9ICFlcnIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKnN0YWNrcypcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbykgLT5cbiAgICAgICAgICBwcmludF9hc3NpZ25tZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQpXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8pXG4gICAgICAgIChMaXN0LnJldiBibGFja2JvYXJkLmN1cnJlbnRfc3RhY2spXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0IF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvKSBzdGFjayAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvKSAtPlxuICAgICAgICAgICAgICAgIHByaW50X2Fzc2lnbm1lbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbykgc3RhY2tcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8pXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8pIGJsYWNrYm9hcmQuc3RhY2tcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqc2VsZWN0ZWRfZXZlbnRzKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBQQi5BLml0ZXJpXG4gICAgICAgIChmdW4gaSBib29sIC0+XG4gICAgICAgICAgbWF0Y2ggYm9vbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIGIgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCIgIEV2ZW50OiVpICglcylcIiBpXG4gICAgICAgICAgICAgICAgKGlmIGIgdGhlblxuICAgICAgICAgICAgICAgICAgIFwiS0VQVFwiXG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICBcIlJFTU9WRURcIilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nKVxuICAgICAgICBibGFja2JvYXJkLnNlbGVjdGVkX2V2ZW50c1xuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIip1bnNvbHZlZF9ldmVudHMqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiAlaVwiIGJsYWNrYm9hcmQubl91bnJlc29sdmVkX2V2ZW50cyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKndlaWdodCBvZiBwcmVkaWNhdGVfaWQqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID1cbiAgICAgIFBCLkEuaXRlcmlcbiAgICAgICAgKGZ1biBhIGIgLT5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiICVpOiVpXCIgYSBiIGluXG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZylcbiAgICAgICAgYmxhY2tib2FyZC53ZWlndGhfb2ZfcHJlZGljYXRlX2lkXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKndlaWdodCBvZiBwcmVkaWNhdGVfaWRfYnlfbGV2ZWwqXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuaXRlclxuICAgICAgICAoZnVuIGwgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiBMZXZlbDolc1wiIChQcmlvcml0eS5zdHJpbmdfb2ZfbGV2ZWwgbClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICBQQi5BLml0ZXJpIChmdW4gYSBiIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIgJWk6JWlcIiBhIGIgaW5cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZykpXG4gICAgICAgIGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbFxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIioqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gICgqKiBwcm9wYWdhdGlvbiByZXF1ZXN0ICopXG5cbiAgbGV0IGFkZF9ldmVudCBlaWQgKHBpZCwgc2VpZCkgYXJyYXkgbGV2ZWwgdW5zb2x2ZWQgPVxuICAgIGxldCBldmVudF9jYXNlX2FkZHJlc3MgPSBidWlsZF9ldmVudF9jYXNlX2FkZHJlc3MgcGlkIHNlaWQgaW5cbiAgICBsZXQgb2xkID0gUEIuQS5nZXQgYXJyYXkgKFBCLmludF9vZl9zdGVwX2lkIGVpZCkgaW5cbiAgICBsZXQgdW5zb2x2ZWQgPVxuICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuYWRkIGxldmVsXG4gICAgICAgIChQcmlvcml0eS5MZXZlbE1hcC5maW5kX2RlZmF1bHQgMCBsZXZlbCB1bnNvbHZlZCArIDEpXG4gICAgICAgIHVuc29sdmVkXG4gICAgaW5cbiAgICBQQi5BLnNldCBhcnJheSAoUEIuaW50X29mX3N0ZXBfaWQgZWlkKSAoZXZlbnRfY2FzZV9hZGRyZXNzIDo6IG9sZCksIHVuc29sdmVkXG5cbiAgbGV0IGVtcHR5X3N0YWNrID0gW11cblxuICBsZXQgaW1wb3J0ID9oZXVyaXN0aWM6XyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbl9wcmVkaWNhdGVzID1cbiAgICAgIFBCLm5fcHJlZGljYXRlcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbl9ldmVudHMgPVxuICAgICAgUEIubl9ldmVudHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlX2JsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBzdGFjayA9IFtdIGluXG4gICAgbGV0IGN1cnJlbnRfc3RhY2sgPSBlbXB0eV9zdGFjayBpblxuICAgIGxldCBldmVudF9jYXNlX2xpc3QgPSBQQi5BLm1ha2Ugbl9ldmVudHMgW10gaW5cbiAgICBsZXQgbl9zZWlkID0gUEIuQS5tYWtlIG5fcHJlZGljYXRlcyAwIGluXG4gICAgbGV0IHVuc29sdmVkX2J5X2xldmVsID0gUHJpb3JpdHkuTGV2ZWxNYXAuZW1wdHkgaW5cbiAgICBsZXQgYmxhY2tib2FyZCA9IFBCLkEubWFrZSBuX3ByZWRpY2F0ZXMgKFBCLkEubWFrZSAxIGR1bW15X2Nhc2VfaW5mbykgaW5cbiAgICBsZXQgd2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbCA9XG4gICAgICBsZXQgcmVjIGF1eCBsZXZlbF9vcHQgbWFwID1cbiAgICAgICAgbWF0Y2ggbGV2ZWxfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1hcFxuICAgICAgICB8IFNvbWUgbGV2ZWwgLT5cbiAgICAgICAgICBhdXggKFByaW9yaXR5LmhpZ2hlciBsZXZlbClcbiAgICAgICAgICAgIChQcmlvcml0eS5MZXZlbE1hcC5hZGQgbGV2ZWwgKFBCLkEubWFrZSAwIDApIG1hcClcbiAgICAgIGluXG4gICAgICBhdXggKFNvbWUgUHJpb3JpdHkubG93ZXN0KSBQcmlvcml0eS5MZXZlbE1hcC5lbXB0eVxuICAgIGluXG4gICAgbGV0IGluY19kZXB0aCBsZXZlbCBwX2lkID1cbiAgICAgIG1hdGNoXG4gICAgICAgIFByaW9yaXR5LkxldmVsTWFwLmZpbmRfb3B0aW9uIGxldmVsIHdlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWxcbiAgICAgIHdpdGhcbiAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgIGxldCBvbGQgPSB0cnkgUEIuQS5nZXQgYSBwX2lkIHdpdGggTm90X2ZvdW5kIC0+IDAgaW5cbiAgICAgICAgUEIuQS5zZXQgYSBwX2lkIChvbGQgKyAxKVxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgaW5cblxuICAgIGxldCB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkID0gUEIuQS5tYWtlIDAgMCBpblxuICAgIGxldCBsYXN0X2xpbmtlZF9ldmVudF9vZl9wcmVkaWNhdGVfaWQgPVxuICAgICAgUEIuQS5tYWtlIG5fcHJlZGljYXRlcyBQQi56ZXJvX3N0ZXBfc2hvcnRfaWRcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgbGV0IHJlYyBhdXgxIHBfaWQgbG9nX2luZm8gZXJyb3IgPVxuICAgICAgICBpZiBwX2lkIDwgMCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHNpemUgPVxuICAgICAgICAgICAgUEIubl9ldmVudHNfcGVyX3ByZWRpY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBwcmVfYmxhY2tib2FyZCBwX2lkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgc2l6ZSA9IHNpemUgKyAxIGluXG4gICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgUEIuQS5zZXQgbGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlX2lkIHBfaWRcbiAgICAgICAgICAgICAgKFBCLnN0ZXBfc2hvcnRfaWRfb2ZfaW50IChzaXplIC0gMSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgXyA9IFBCLkEuc2V0IHdlaWd0aF9vZl9wcmVkaWNhdGVfaWQgcF9pZCAoc2l6ZSAtIDIpIGluXG4gICAgICAgICAgbGV0IF8gPSBQQi5BLnNldCBuX3NlaWQgcF9pZCBzaXplIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgICAgICBQQi5ldmVudF9saXN0X29mX3ByZWRpY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBwcmVfYmxhY2tib2FyZCBwX2lkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYXJyYXkgPSBQQi5BLm1ha2Ugc2l6ZSBkdW1teV9jYXNlX2luZm8gaW5cbiAgICAgICAgICBsZXQgXyA9IFBCLkEuc2V0IGJsYWNrYm9hcmQgcF9pZCBhcnJheSBpblxuICAgICAgICAgIGxldCByZWMgYXV4MiBzZWlkIGwgbG9nX2luZm8gPVxuICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkeW5hbWljID1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJfcHJldmlvdXMgPSBQQi56ZXJvX3N0ZXBfc2hvcnRfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcl9uZXh0ID0gUEIuaW5jX3N0ZXBfc2hvcnRfaWQgUEIuemVyb19zdGVwX3Nob3J0X2lkO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRlX2FmdGVyID0gUEIudW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkID0gU29tZSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgc3RhdGljID1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHJvd19zaG9ydF9pZCA9IFBCLnplcm9fc3RlcF9zaG9ydF9pZDtcbiAgICAgICAgICAgICAgICAgICAgICBldmVudF9pZCA9IFBCLmR1bW15X3N0ZXBfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgdGVzdCA9IFBCLnVua25vd247XG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gUEIudW5rbm93bjtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBfID0gUEIuQS5zZXQgYXJyYXkgMCBpbmZvIGluXG4gICAgICAgICAgICAgIGxldCBwcmVkX3NpemUgPVxuICAgICAgICAgICAgICAgIFBCLmRlY19zdGVwX3Nob3J0X2lkIChQQi5zdGVwX3Nob3J0X2lkX29mX2ludCBzaXplKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZHluYW1pYyA9XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyX3ByZXZpb3VzID0gcHJlZF9zaXplO1xuICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJfbmV4dCA9IHByZWRfc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZV9hZnRlciA9IFBCLnVua25vd247XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQgPSBTb21lIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBzdGF0aWMgPVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgcm93X3Nob3J0X2lkID0gcHJlZF9zaXplO1xuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X2lkID0gUEIuZHVtbXlfc3RlcF9pZDtcbiAgICAgICAgICAgICAgICAgICAgICB0ZXN0ID0gUEIudW5rbm93bjtcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBQQi51bmtub3duO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IF8gPSBQQi5BLnNldCBhcnJheSAoc2l6ZSAtIDEpIGluZm8gaW5cbiAgICAgICAgICAgICAgbG9nX2luZm9cbiAgICAgICAgICAgIHwgdHJpcGxlIDo6IHEgLT5cbiAgICAgICAgICAgICAgbGV0IGluZm8gPSBpbml0X2luZm8gcF9pZCBzZWlkIChzaXplIC0gMSkgdHJpcGxlIGluXG4gICAgICAgICAgICAgIGxldCBlaWQgPSBnZXRfZWlkX29mX3RyaXBsZSB0cmlwbGUgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgX2V2ZW50cyA9XG4gICAgICAgICAgICAgICAgUEIuZ2V0X3ByZV9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgX2Vycm9yLCBsb2dfaW5mbywgbGV2ZWwgPVxuICAgICAgICAgICAgICAgIFBCLmdldF9sZXZlbF9vZl9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgcHJlX2JsYWNrYm9hcmQgZWlkXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IGluY19kZXB0aCBsZXZlbCBwX2lkIGluXG4gICAgICAgICAgICAgIGxldCAoKSwgXyA9XG4gICAgICAgICAgICAgICAgYWRkX2V2ZW50IGVpZCAocF9pZCwgc2VpZCkgZXZlbnRfY2FzZV9saXN0IGxldmVsXG4gICAgICAgICAgICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5lbXB0eVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBQQi5BLnNldCBhcnJheSAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgc2VpZCkgaW5mbyBpblxuICAgICAgICAgICAgICBhdXgyIChQQi5kZWNfc3RlcF9zaG9ydF9pZCBzZWlkKSBxIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgYXV4MiAoUEIuc3RlcF9zaG9ydF9pZF9vZl9pbnQgKHNpemUgLSAyKSkgbGlzdCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4MSAocF9pZCAtIDEpIGxvZ19pbmZvIGVycm9yXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBhdXgxIChuX3ByZWRpY2F0ZXMgLSAxKSBsb2dfaW5mbyBlcnJvclxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZm9yY2VkX2V2ZW50cyA9XG4gICAgICBQQi5tYW5kYXRvcnlfZXZlbnRzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZV9ibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBldmVudCA9XG4gICAgICBQQi5nZXRfcHJlX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZV9ibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB1bnNvbHZlZF9ieV9sZXZlbCA9XG4gICAgICBsZXQgcmVjIGF1eCBrIGVycm9yIGxvZ19pbmZvIG1hcCA9XG4gICAgICAgIGlmIGsgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIG1hcFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsZXZlbCA9XG4gICAgICAgICAgICBQQi5nZXRfbGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgcHJlX2JsYWNrYm9hcmQgKFBCLnN0ZXBfaWRfb2ZfaW50IGspXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICAgIFByaW9yaXR5LkxldmVsTWFwLmFkZCBsZXZlbFxuICAgICAgICAgICAgICAoUHJpb3JpdHkuTGV2ZWxNYXAuZmluZF9kZWZhdWx0IDAgbGV2ZWwgbWFwICsgMSlcbiAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggKGsgLSAxKSBlcnJvciBsb2dfaW5mbyBtYXBcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCBuX2V2ZW50cyBlcnJvciBsb2dfaW5mbyB1bnNvbHZlZF9ieV9sZXZlbFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc2lkZV9lZmZlY3RzID1cbiAgICAgIFBCLmdldF9zaWRlX2VmZmVjdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZmljdGl0aW91c19vYnMgPVxuICAgICAgUEIuZ2V0X2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICBwcmVfYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGIgPVxuICAgICAge1xuICAgICAgICBldmVudDtcbiAgICAgICAgc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgPSBzaWRlX2VmZmVjdHM7XG4gICAgICAgIHByZV9jb2x1bW5fbWFwX2ludiA9IFBCLmdldF9wcmVfY29sdW1uX21hcF9pbnYgcHJlX2JsYWNrYm9hcmQ7XG4gICAgICAgIGxldmVsX29mX2V2ZW50ID0gUEIubGV2ZWxzIHByZV9ibGFja2JvYXJkO1xuICAgICAgICBmb3JjZWRfZXZlbnRzO1xuICAgICAgICBuX2VpZCA9IG5fZXZlbnRzO1xuICAgICAgICBuX3NlaWQ7XG4gICAgICAgIGV2ZW50X2Nhc2VfbGlzdDtcbiAgICAgICAgbGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlX2lkO1xuICAgICAgICBuX3ByZWRpY2F0ZV9pZCA9IG5fcHJlZGljYXRlcztcbiAgICAgICAgY3VycmVudF9zdGFjaztcbiAgICAgICAgc3RhY2s7XG4gICAgICAgIGJsYWNrYm9hcmQ7XG4gICAgICAgIHNlbGVjdGVkX2V2ZW50cyA9IFBCLkEubWFrZSBuX2V2ZW50cyBOb25lO1xuICAgICAgICB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkO1xuICAgICAgICB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkX2J5X2xldmVsO1xuICAgICAgICB1c2VkX3ByZWRpY2F0ZV9pZCA9IFBCLkEubWFrZSBuX3ByZWRpY2F0ZXMgdHJ1ZTtcbiAgICAgICAgbl91bnJlc29sdmVkX2V2ZW50cyA9IG5fZXZlbnRzO1xuICAgICAgICBuX3VucmVzb2x2ZWRfZXZlbnRzX2J5X2xldmVsID0gdW5zb2x2ZWRfYnlfbGV2ZWw7XG4gICAgICAgIGZpY3RpdGlvdXNfb2JzZXJ2YWJsZSA9IGZpY3RpdGlvdXNfb2JzO1xuICAgICAgfVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBiXG5cbiAgbGV0IGV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlX2FkZHJlc3MgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGluZm8gPVxuICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgaW5mby5keW5hbWljLnNlbGVjdGVkXG5cbiAgbGV0IHNldF9jYXNlIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZVxuICAgICAgYmxhY2tib2FyZCA9XG4gICAgdHJ5XG4gICAgICBsZXQgXyA9XG4gICAgICAgIFBCLkEuc2V0XG4gICAgICAgICAgKFBCLkEuZ2V0IGJsYWNrYm9hcmQuYmxhY2tib2FyZCBjYXNlX2FkZHJlc3MuY29sdW1uX3ByZWRpY2F0ZV9pZClcbiAgICAgICAgICAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgY2FzZV9hZGRyZXNzLnJvd19zaG9ydF9ldmVudF9pZClcbiAgICAgICAgICBjYXNlX3ZhbHVlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgd2l0aCBfIC0+XG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgIH5tZXNzYWdlOlwiRGVyZWZlcmVuY2luZyBOdWxsIHBvaW50ZXJcIlxuICAgICAgICAoRmFpbHVyZSBcIkRlcmVmZXJlbmNpbmcgbnVsbCBwb2ludGVyXCIpIGJsYWNrYm9hcmRcblxuICBsZXQgc2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlIGJsYWNrYm9hcmQgPVxuICAgIG1hdGNoIGNhc2VfYWRkcmVzcyB3aXRoXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCAoaW50LCBsZXZlbCkgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQ291bnRlciBpbnQyIC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5maW5kX29wdGlvbiBsZXZlbFxuICAgICAgICAgICAgIGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbFxuICAgICAgICAgd2l0aFxuICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgIGxldCAoKSA9IFBCLkEuc2V0IGEgaW50IGludDIgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgfm1lc3NhZ2U6XCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgICBibGFja2JvYXJkKVxuICAgICAgfCBQb2ludGVyIF8gfCBTdGF0ZSBfIHwgQm9vbGVhbiBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIGludCAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBDb3VudGVyIGludDIgLT5cbiAgICAgICAgbGV0IF8gPSBQQi5BLnNldCBibGFja2JvYXJkLndlaWd0aF9vZl9wcmVkaWNhdGVfaWQgaW50IGludDIgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICB8IFBvaW50ZXIgXyB8IEJvb2xlYW4gXyB8IFN0YXRlIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIHNldFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gQmxhY2tib2FyZC5zZXRcIilcbiAgICAgICAgICBibGFja2JvYXJkKVxuICAgIHwgUG9pbnRlcl90b19uZXh0IGNhc2VfYWRkcmVzcyAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBQb2ludGVyIGludDIgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgeyBvbGQgd2l0aCBkeW5hbWljID0geyBvbGQuZHluYW1pYyB3aXRoIHBvaW50ZXJfbmV4dCA9IGludDIgfSB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHNldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBDb3VudGVyIF8gfCBCb29sZWFuIF8gfCBTdGF0ZSBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IFZhbHVlX2FmdGVyIGNhc2VfYWRkcmVzcyAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBTdGF0ZSBzdGF0ZSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvbGQgPVxuICAgICAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjYXNlX3ZhbHVlID1cbiAgICAgICAgICB7IG9sZCB3aXRoIGR5bmFtaWMgPSB7IG9sZC5keW5hbWljIHdpdGggc3RhdGVfYWZ0ZXIgPSBzdGF0ZSB9IH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgc2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICB8IEJvb2xlYW4gXyB8IENvdW50ZXIgXyB8IFBvaW50ZXIgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJzZXQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgd2l0aCB2YWx1ZV9hZnRlclwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gQmxhY2tib2FyZC5zZXRcIilcbiAgICAgICAgICBibGFja2JvYXJkKVxuICAgIHwgVmFsdWVfYmVmb3JlIF9jYXNlX2FkZHJlc3MgLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJzZXQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgd2l0aCB2YWx1ZV9iZWZvcmVcIlxuICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICBibGFja2JvYXJkXG4gICAgfCBQb2ludGVyX3RvX3ByZXZpb3VzIGNhc2VfYWRkcmVzcyAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBQb2ludGVyIGludDIgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgeyBvbGQgd2l0aCBkeW5hbWljID0geyBvbGQuZHluYW1pYyB3aXRoIHBvaW50ZXJfcHJldmlvdXMgPSBpbnQyIH0gfVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBzZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIHwgQm9vbGVhbiBfIHwgU3RhdGUgXyB8IENvdW50ZXIgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICBcInNldCwgbGluZSA4OTYsIEluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHMgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQ291bnRlciBpbnQgLT5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB7IGJsYWNrYm9hcmQgd2l0aCBuX3VucmVzb2x2ZWRfZXZlbnRzID0gaW50IH1cbiAgICAgIHwgQm9vbGVhbiBfIHwgUG9pbnRlciBfIHwgU3RhdGUgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICBcInNldCwgbGluZSA5MDUsIEluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgbGV2ZWwgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQ291bnRlciBpbnQgLT5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICAgIG5fdW5yZXNvbHZlZF9ldmVudHNfYnlfbGV2ZWwgPVxuICAgICAgICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5hZGQgbGV2ZWwgaW50XG4gICAgICAgICAgICAgICAgYmxhY2tib2FyZC5uX3VucmVzb2x2ZWRfZXZlbnRzX2J5X2xldmVsO1xuICAgICAgICAgIH0gKVxuICAgICAgfCBCb29sZWFuIF8gfCBTdGF0ZSBfIHwgUG9pbnRlciBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IEtlZXBfZXZlbnQgc3RlcF9pZCAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBCb29sZWFuIGIgLT5cbiAgICAgICAgbGV0IF8gPVxuICAgICAgICAgIFBCLkEuc2V0IGJsYWNrYm9hcmQuc2VsZWN0ZWRfZXZlbnRzIChQQi5pbnRfb2Zfc3RlcF9pZCBzdGVwX2lkKSBiXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBQb2ludGVyIF8gfCBTdGF0ZSBfIHwgQ291bnRlciBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IEV4aXN0IGNhc2VfYWRkcmVzcyAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBCb29sZWFuIGIgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgeyBvbGQgd2l0aCBkeW5hbWljID0geyBvbGQuZHluYW1pYyB3aXRoIHNlbGVjdGVkID0gYiB9IH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgc2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICB8IFBvaW50ZXIgXyB8IENvdW50ZXIgXyB8IFN0YXRlIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIHNldFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gQmxhY2tib2FyZC5zZXRcIilcbiAgICAgICAgICBibGFja2JvYXJkKVxuXG4gIGxldCBpc19zZWxlY3RlZF9ldmVudCBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0ZXBfaWQgYmxhY2tib2FyZCA9XG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgUEIuQS5nZXQgYmxhY2tib2FyZC5zZWxlY3RlZF9ldmVudHMgKFBCLmludF9vZl9zdGVwX2lkIHN0ZXBfaWQpIClcblxuICBsZXQgcmVjIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZCA9XG4gICAgbWF0Y2ggY2FzZV9hZGRyZXNzIHdpdGhcbiAgICB8IEtlZXBfZXZlbnQgc3RlcF9pZCAtPlxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIEJvb2xlYW5cbiAgICAgICAgICAoUEIuQS5nZXQgYmxhY2tib2FyZC5zZWxlY3RlZF9ldmVudHMgKFBCLmludF9vZl9zdGVwX2lkIHN0ZXBfaWQpKSApXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCAoaW50LCBsZXZlbCkgLT5cbiAgICAgIGxldCBuID1cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5maW5kX29wdGlvbiBsZXZlbFxuICAgICAgICAgICAgYmxhY2tib2FyZC53ZWlndGhfb2ZfcHJlZGljYXRlX2lkX2J5X2xldmVsXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBTb21lIGEgLT4gUEIuQS5nZXQgYSBpbnRcbiAgICAgICAgfCBOb25lIC0+IDBcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIENvdW50ZXIgblxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4gaW50IC0+XG4gICAgICBlcnJvciwgbG9nX2luZm8sIENvdW50ZXIgKFBCLkEuZ2V0IGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZCBpbnQpXG4gICAgfCBFeGlzdCBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2UgPVxuICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQm9vbGVhbiBjYXNlLmR5bmFtaWMuc2VsZWN0ZWRcbiAgICB8IFBvaW50ZXJfdG9fbmV4dCBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2UgPVxuICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgUG9pbnRlciBjYXNlLmR5bmFtaWMucG9pbnRlcl9uZXh0XG4gICAgfCBWYWx1ZV9hZnRlciBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2UgPVxuICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgU3RhdGUgY2FzZS5keW5hbWljLnN0YXRlX2FmdGVyXG4gICAgfCBWYWx1ZV9iZWZvcmUgY2FzZV9hZGRyZXNzIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgcG9pbnRlciA9IGNhc2UuZHluYW1pYy5wb2ludGVyX3ByZXZpb3VzIGluXG4gICAgICBpZiBpc19udWxsX3BvaW50ZXIgcG9pbnRlciB0aGVuXG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIlZhbHVlIGJlZm9yZSBhbiB1bmV4aXN0aW5nIGVsZW1lbnQgcmVxdWVzdGVkXCJcbiAgICAgICAgICAoRmFpbHVyZSBcIlZhbHVlIGJlZm9yZSBhbiB1bmV4aXN0aW5nIGVsZW1lbnQgcmVxdWVzdGVkXCIpXG4gICAgICAgICAgKFN0YXRlIFBCLnVuZGVmaW5lZClcbiAgICAgIGVsc2VcbiAgICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgKFZhbHVlX2FmdGVyIHsgY2FzZV9hZGRyZXNzIHdpdGggcm93X3Nob3J0X2V2ZW50X2lkID0gcG9pbnRlciB9KVxuICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICB8IFBvaW50ZXJfdG9fcHJldmlvdXMgY2FzZV9hZGRyZXNzIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIFBvaW50ZXIgY2FzZS5keW5hbWljLnBvaW50ZXJfcHJldmlvdXNcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHMgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQ291bnRlciBibGFja2JvYXJkLm5fdW5yZXNvbHZlZF9ldmVudHNcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgbHZsIC0+XG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgQ291bnRlclxuICAgICAgICAgIChQcmlvcml0eS5MZXZlbE1hcC5maW5kX2RlZmF1bHQgMCBsdmxcbiAgICAgICAgICAgICBibGFja2JvYXJkLm5fdW5yZXNvbHZlZF9ldmVudHNfYnlfbGV2ZWwpIClcblxuICBsZXQgZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWZpeCBpbnQgaW50MlxuICAgICAgYmxhY2tib2FyZCA9XG4gICAgbGV0IGZpbGVfbmFtZSA9XG4gICAgICBwcmVmaXggXiBcIl9cIiBeIHN0cmluZ19vZl9pbnQgaW50IF4gXCJfXCIgXiBzdHJpbmdfb2ZfaW50IGludDIgXiBcIi5zeHdcIlxuICAgIGluXG4gICAgbGV0IGRlc2NfY2hhbiA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0IGZpbGVfbmFtZSBpblxuICAgIGxldCBkZXNjID0gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwgfm1vZGU6TG9nZ2Vycy5YTFMgZGVzY19jaGFuIGluXG4gICAgbGV0IHBhcmFtZXRlciA9IFBCLkNJLlBvLksuSC5zZXRfbG9nZ2VyIHBhcmFtZXRlciBkZXNjIGluXG4gICAgbGV0IG5jb2x1bW5zX2xlZnQgPSAzIGluXG4gICAgbGV0IG5yb3dzX2hlYWQgPSAyIGluXG4gICAgbGV0IHJvd19vZl9wcmVjb25kaXRpb24gZWlkID0gbnJvd3NfaGVhZCArICgzICogZWlkKSBpblxuICAgIGxldCByb3dfb2ZfcG9zdGNvbmRpdGlvbiBlaWQgPSAxICsgcm93X29mX3ByZWNvbmRpdGlvbiBlaWQgaW5cbiAgICBsZXQgY29sdW1uX29mX3BpZCBwaWQgPSBwaWQgKyBuY29sdW1uc19sZWZ0IGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGRlc2MgXCJSRU0gICoqKioqICBCQVNJQyAgKioqKipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0IGNvbG9ycyA9IFBCLkEubWFrZSBibGFja2JvYXJkLm5fZWlkIE5vbmUgaW5cbiAgICBsZXQgYmFja2NvbG9yIGxvZyBjb2xvciA9XG4gICAgICBtYXRjaCBjb2xvciB3aXRoXG4gICAgICB8IFNvbWUgY29sb3IgLT5cbiAgICAgICAgbGV0IHIsIGcsIGIgPSBDb2xvci50cmlwbGVfb2ZfY29sb3IgY29sb3IgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkMuQ2VsbEJhY2tDb2xvciA9IFJHQiglaSwlaSwlaSlcIiByIGcgYiBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICgpXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICBpblxuICAgIGxldCB0ZXh0Y29sb3IgbG9nIGNvbG9yID1cbiAgICAgIG1hdGNoIGNvbG9yIHdpdGhcbiAgICAgIHwgU29tZSBjb2xvciAtPlxuICAgICAgICBsZXQgciwgZywgYiA9IENvbG9yLnRyaXBsZV9vZl9jb2xvciBjb2xvciBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiQy5DaGFyQ29sb3IgPSBSR0IoJWksJWksJWkpXCIgciBnIGIgaW5cbiAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICAgICAgfCBOb25lIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgZ2V0Y2VsbCBsb2cgcm93IGNvbCA9XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiQyA9IFMuZ2V0Q2VsbEJ5UG9zaXRpb24oJWksJWkpXCIgY29sIHJvdyBpblxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICAgIGluXG4gICAgbGV0IG92ZXJsaW5lX2Nhc2UgbG9nIHJvdyBfY29sIF9jb2xvciA9XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiUj1TLlJvd3MoJWkpXCIgcm93IGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiUi5Ub3BCb3JkZXIgPSB3aXRoQm9yZFwiIGluXG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nXG4gICAgaW5cbiAgICBsZXQgcHJpbnRfY2FzZSBsb2cgcm93IGNvbCBjb2xvcl9mb250IGNvbG9yX2JhY2sgc3RyaW5nID1cbiAgICAgIGlmIHN0cmluZyA8PiBcIlwiIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBnZXRjZWxsIGxvZyByb3cgY29sIGluXG4gICAgICAgIGxldCAoKSA9IHRleHRjb2xvciBsb2cgY29sb3JfZm9udCBpblxuICAgICAgICBsZXQgKCkgPSBiYWNrY29sb3IgbG9nIGNvbG9yX2JhY2sgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkMuc2V0Rm9ybXVsYShcXFwiJXNcXFwiKVwiIHN0cmluZyBpblxuICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgcHJpbnRfY2FzZV9mdW4gbG9nIHJvdyBjb2wgY29sb3JfZm9udCBjb2xvcl9iYWNrIGYgZXJyb3IgPVxuICAgICAgbGV0ICgpID0gZ2V0Y2VsbCBsb2cgcm93IGNvbCBpblxuICAgICAgbGV0ICgpID0gdGV4dGNvbG9yIGxvZyBjb2xvcl9mb250IGluXG4gICAgICBsZXQgKCkgPSBiYWNrY29sb3IgbG9nIGNvbG9yX2JhY2sgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJDLnNldEZvcm11bGEoXFxcIlwiIGluXG4gICAgICBsZXQgZXJyb3IgPSBmIGVycm9yIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiXFxcIilcIiBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgZXJyb3JcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiU3ViIE1haW5cIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgciwgZywgYiA9IENvbG9yLnRyaXBsZV9vZl9jb2xvciBDb2xvci5CbGFjayBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgZGVzYyBcIkRpbSB3aXRoQm9yZCBBcyBOZXcgY29tLnN1bi5zdGFyLnRhYmxlLkJvcmRlckxpbmVcIlxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGRlc2MgXCJXaXRoIHdpdGhCb3JkIHdpdGhCb3JkLkNvbG9yID0gUkdCKCVpLCVpLCVpKVwiIHIgZyBiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZGVzYyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwid2l0aEJvcmQuT3V0ZXJMaW5lV2lkdGggPSA2MFwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgZGVzYyBcIkVuZCBXaXRoXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZGVzYyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiUyA9IFRoaXNDb21wb25lbnQuU2hlZXRzKDApXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZGVzYyBpblxuICAgIGxldCBfID1cbiAgICAgIG1hdGNoIGZvcmNlZF9ldmVudHMgYmxhY2tib2FyZCB3aXRoXG4gICAgICB8IFsgKGxpc3QsIF8pIF0gLT5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biBlaWQgLT4gUEIuQS5zZXQgY29sb3JzIChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpIChTb21lIENvbG9yLlJlZCkpXG4gICAgICAgICAgbGlzdFxuICAgICAgfCBfIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBQQi5BLml0ZXJpXG4gICAgICAgIChmdW4gcGlkIHBfaW5mbyAtPlxuICAgICAgICAgIHByaW50X2Nhc2VfZnVuIGRlc2MgMCAoY29sdW1uX29mX3BpZCBwaWQpIE5vbmUgTm9uZVxuICAgICAgICAgICAgKGZ1biBfZXJyb3IgLT4gUEIucHJpbnRfcHJlZGljYXRlX2luZm8gZGVzYyBwX2luZm8pXG4gICAgICAgICAgICBlcnJvcilcbiAgICAgICAgYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcF9pbnZcbiAgICBpblxuICAgIGxldCByZWMgYXV4IGVpZCBlcnJvciBsb2dfaW5mbyBzdGFjayA9XG4gICAgICBpZiBlaWQgPj0gYmxhY2tib2FyZC5uX2VpZCB0aGVuXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgIGNhc2VfbGlzdF9vZl9laWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgKFBCLnN0ZXBfaWRfb2ZfaW50IGVpZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJvd19wcmVjb25kaXRpb24gPSByb3dfb2ZfcHJlY29uZGl0aW9uIGVpZCBpblxuICAgICAgICBsZXQgcm93X3Bvc3Rjb25kaXRpb24gPSByb3dfb2ZfcG9zdGNvbmRpdGlvbiBlaWQgaW5cbiAgICAgICAgbGV0IGNvbG9yLCBtYXliZWtlcHQgPVxuICAgICAgICAgIG1hdGNoIFBCLkEuZ2V0IGJsYWNrYm9hcmQuc2VsZWN0ZWRfZXZlbnRzIGVpZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFBCLkEuZ2V0IGNvbG9ycyBlaWQsIHRydWVcbiAgICAgICAgICB8IFNvbWUgdHJ1ZSAtPiBTb21lIENvbG9yLlJlZCwgdHJ1ZVxuICAgICAgICAgIHwgU29tZSBmYWxzZSAtPiBTb21lIENvbG9yLkdyZXksIGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgYXV4MiBmIGcgbCBlcnJvciBsb2dfaW5mbyA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICBvdmVybGluZV9jYXNlIGRlc2Mgcm93X3Bvc3Rjb25kaXRpb25cbiAgICAgICAgICAgICAgICAoY29sdW1uX29mX3BpZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgcHJpbnRfY2FzZSBkZXNjIHJvd19wcmVjb25kaXRpb25cbiAgICAgICAgICAgICAgICAoY29sdW1uX29mX3BpZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgICAgICAgTm9uZSBjb2xvciAoZiB0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgcHJpbnRfY2FzZSBkZXNjIHJvd19wb3N0Y29uZGl0aW9uXG4gICAgICAgICAgICAgICAgKGNvbHVtbl9vZl9waWQgdC5jb2x1bW5fcHJlZGljYXRlX2lkKVxuICAgICAgICAgICAgICAgIE5vbmUgY29sb3IgKGcgdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgbWF5YmVrZXB0IHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHZhbHVlX2JlZm9yZSA9XG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yICh2YWx1ZV9iZWZvcmUgdClcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBzdHJpbmdfb2ZfdmFsdWUgY2FzZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gZXJyb3IsIGxvZ19pbmZvLCBcIlVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICBwcmludF9jYXNlIGRlc2MgKHJvd19wcmVjb25kaXRpb24gLSAxKVxuICAgICAgICAgICAgICAgICAgICAoY29sdW1uX29mX3BpZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgICAgICAgICAgIChTb21lIENvbG9yLkxpZ2h0Ymx1ZSkgTm9uZSB2YWx1ZV9iZWZvcmVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHZhbHVlX2FmdGVyID1cbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlX3ZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICBnZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgKHZhbHVlX2FmdGVyIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgc3RyaW5nX29mX3ZhbHVlIGNhc2VfdmFsdWVcbiAgICAgICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGVycm9yLCBsb2dfaW5mbywgXCJVbmRlZmluZWRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfY2FzZSBkZXNjIChyb3dfcG9zdGNvbmRpdGlvbiArIDEpXG4gICAgICAgICAgICAgICAgICAgIChjb2x1bW5fb2ZfcGlkIHQuY29sdW1uX3ByZWRpY2F0ZV9pZClcbiAgICAgICAgICAgICAgICAgICAgKFNvbWUgQ29sb3IuTGlnaHRibHVlKSBOb25lIHZhbHVlX2FmdGVyXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYXV4MiBmIGcgcSBlcnJvciBsb2dfaW5mb1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHJpbnRfdGVzdCB0ID1cbiAgICAgICAgICBsZXQgY29sdW1uID0gUEIuQS5nZXQgYmxhY2tib2FyZC5ibGFja2JvYXJkIHQuY29sdW1uX3ByZWRpY2F0ZV9pZCBpblxuICAgICAgICAgIGxldCBjYXNlID1cbiAgICAgICAgICAgIFBCLkEuZ2V0IGNvbHVtbiAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgdC5yb3dfc2hvcnRfZXZlbnRfaWQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBQQi5zdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIGNhc2Uuc3RhdGljLnRlc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHByaW50X2FjdGlvbiB0ID1cbiAgICAgICAgICBsZXQgY29sdW1uID0gUEIuQS5nZXQgYmxhY2tib2FyZC5ibGFja2JvYXJkIHQuY29sdW1uX3ByZWRpY2F0ZV9pZCBpblxuICAgICAgICAgIGxldCBjYXNlID1cbiAgICAgICAgICAgIFBCLkEuZ2V0IGNvbHVtbiAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgdC5yb3dfc2hvcnRfZXZlbnRfaWQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBQQi5zdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIGNhc2Uuc3RhdGljLmFjdGlvblxuICAgICAgICBpblxuICAgICAgICBsZXQgc3RyaW5nX2VpZCBlcnJvciA9XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X2FzX2xvZ2dlciBkZXNjIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgVHJhY2UucHJpbnRfc3RlcCB+Y29tcGFjdDp0cnVlIH5lbnY6aGFuZGxlci5QQi5DSS5Qby5LLkguZW52IGZcbiAgICAgICAgICAgICAgICAgICAgKFBCLkEuZ2V0IGJsYWNrYm9hcmQuZXZlbnQgZWlkKSlcbiAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiRXZlbnQ6JWlcIiBlaWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgcHJpbnRfY2FzZV9mdW4gZGVzYyByb3dfcHJlY29uZGl0aW9uIDEgTm9uZSBjb2xvciBzdHJpbmdfZWlkIGVycm9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgcHJpbnRfY2FzZV9mdW4gZGVzYyByb3dfcG9zdGNvbmRpdGlvbiAxIE5vbmUgY29sb3Igc3RyaW5nX2VpZCBlcnJvclxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlIGRlc2Mgcm93X3ByZWNvbmRpdGlvbiAyIE5vbmUgY29sb3IgXCJQUkVDT05ESVRJT05cIiBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHByaW50X2Nhc2UgZGVzYyByb3dfcG9zdGNvbmRpdGlvbiAyIE5vbmUgY29sb3IgXCJQT1NUQ09ORElUSU9OXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgYXV4MiBwcmludF90ZXN0IHByaW50X2FjdGlvbiBsaXN0IGVycm9yIGxvZ19pbmZvXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBjYW5kID0gUEIuQS5nZXQgYmxhY2tib2FyZC5ldmVudCBlaWQgaW5cbiAgICAgICAgICAgIFRyYWNlLnN0ZXBfaXNfcnVsZSBjYW5kIHx8IFRyYWNlLnN0ZXBfaXNfcGVydCBjYW5kXG4gICAgICAgICAgICB8fCBUcmFjZS5zdGVwX2lzX29icyBjYW5kIHx8IFRyYWNlLnN0ZXBfaXNfaW5pdCBjYW5kXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBzdGFjayA9XG4gICAgICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biBlcnJvciByb3cgLT5cbiAgICAgICAgICAgICAgICAgIHByaW50X2Nhc2VfZnVuIGRlc2Mgcm93IDAgTm9uZSBjb2xvciBzdHJpbmdfZWlkIGVycm9yKVxuICAgICAgICAgICAgICAgIGVycm9yIChMaXN0LnJldiBzdGFjaylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgW11cbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCByb3dfcHJlY29uZGl0aW9uIDo6IHJvd19wb3N0Y29uZGl0aW9uIDo6IHN0YWNrXG4gICAgICAgIGluXG4gICAgICAgIGF1eCAoZWlkICsgMSkgZXJyb3IgbG9nX2luZm8gc3RhY2tcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPSBhdXggMCBlcnJvciBsb2dfaW5mbyBbXSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiRW5kIFN1YlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgKCkgPSBjbG9zZV9vdXQgZGVzY19jaGFuIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gIGxldCByZWNvcmRfbW9kaWYgX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZSBibGFja2JvYXJkXG4gICAgICA9XG4gICAgKCBlcnJvcixcbiAgICAgIHtcbiAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgIGN1cnJlbnRfc3RhY2sgPSAoY2FzZV9hZGRyZXNzLCBjYXNlX3ZhbHVlKSA6OiBibGFja2JvYXJkLmN1cnJlbnRfc3RhY2s7XG4gICAgICB9IClcblxuICBsZXQgcmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlIGJsYWNrYm9hcmRcbiAgICAgID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvbGQgPVxuICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBjYXNlX3ZhbHVlID0gb2xkIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiQC4qKipALlJFRklORV9WQUxVRUAuVmFsdWUgYmVmb3JlOiBcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgcHJpbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgY2FzZV9hZGRyZXNzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBvbGQgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJALk5ldyB2YWx1ZTogXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGNhc2VfdmFsdWUgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJALklHTk9SRUQqKipALlwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgSWdub3JlKVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sID1cbiAgICAgICAgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIG9sZCBjYXNlX3ZhbHVlXG4gICAgICBpblxuICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIkAuKioqQC5SRUZJTkVfVkFMVUVALlZhbHVlIGJlZm9yZTogXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgIHByaW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgb2xkIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJALk5ldyB2YWx1ZTogXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBjYXNlX3ZhbHVlIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJALklHTk9SRUQqKipALlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgSWdub3JlKVxuICAgICAgKSBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICAgICAgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfdmFsdWUgb2xkXG4gICAgICAgIGluXG4gICAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICBzZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgIHJlY29yZF9tb2RpZiBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBjYXNlX2FkZHJlc3Mgb2xkIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC4qKipALlJFRklORV9WQUxVRUAuVmFsdWUgYmVmb3JlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgIGNhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBvbGQgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC5OZXcgdmFsdWU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGNhc2VfdmFsdWUgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC5TVUNDRVNTKioqQC5cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIFN1Y2Nlc3MpXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJALioqKkAuUkVGSU5FX1ZBTFVFQC5WYWx1ZSBiZWZvcmU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIG9sZCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJALk5ldyB2YWx1ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgY2FzZV92YWx1ZSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJALkZBSUwqKipALlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgRmFpbClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcblxuICBsZXQgb3ZlcndyaXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICBibGFja2JvYXJkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvbGQgPVxuICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBjYXNlX3ZhbHVlID0gb2xkIHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIHNldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZSBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgcmVjb3JkX21vZGlmIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGNhc2VfYWRkcmVzcyBvbGQgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgIClcblxuICBsZXQgZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvbGQgPVxuICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgaW5cbiAgICBtYXRjaCBvbGQgd2l0aFxuICAgIHwgQ291bnRlciBrIC0+XG4gICAgICBpZiBrID0gMCB0aGVuXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHNldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3NcbiAgICAgICAgICAgIChDb3VudGVyIChrIC0gMSkpXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgICAgcmVjb3JkX21vZGlmIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGNhc2VfYWRkcmVzcyBvbGQgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIClcbiAgICB8IFBvaW50ZXIgXyB8IEJvb2xlYW4gXyB8IFN0YXRlIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJXcm9uZyB0eXBlIG9mIGNhc2UgdmFsdWVcIlxuICAgICAgICAoRmFpbHVyZSBcIldyb25nIHR5cGUgb2YgY2FzZSB2YWx1ZVwiKSBibGFja2JvYXJkXG5cbiAgbGV0IGJyYW5jaCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBcIioqKioqKipALiAqIEJSQU5DSCAqQC4qKioqKioqQC5cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgcHJpbnRfYmxhY2tib2FyZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfYnJhbmNoIGxvZ19pbmZvIGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAge1xuICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgc3RhY2sgPSBibGFja2JvYXJkLmN1cnJlbnRfc3RhY2sgOjogYmxhY2tib2FyZC5zdGFjaztcbiAgICAgICAgY3VycmVudF9zdGFjayA9IFtdO1xuICAgICAgfSApXG5cbiAgbGV0IHJlc2V0X2xhc3RfYnJhbmNoaW5nIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIFwiKioqKioqKkAuKiBDdXQgKkAuKioqKioqKlwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICBwcmludF9ibGFja2JvYXJkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICApIGVsc2VcbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgc3RhY2sgPSBibGFja2JvYXJkLmN1cnJlbnRfc3RhY2sgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgKGNhc2VfYWRkcmVzcywgY2FzZV92YWx1ZSkgLT5cbiAgICAgICAgICBzZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgIHN0YWNrXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBcIioqKioqKipALiogQWZ0ZXJfQ3V0ICpALioqKioqKipcIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgcHJpbnRfYmxhY2tib2FyZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfY3V0IGxvZ19pbmZvIGluXG4gICAgbWF0Y2ggYmxhY2tib2FyZC5zdGFjayB3aXRoXG4gICAgfCBbXSAtPiBlcnJvciwgbG9nX2luZm8sIHsgYmxhY2tib2FyZCB3aXRoIGN1cnJlbnRfc3RhY2sgPSBbXSB9XG4gICAgfCB0IDo6IHEgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgeyBibGFja2JvYXJkIHdpdGggY3VycmVudF9zdGFjayA9IHQ7IHN0YWNrID0gcSB9XG5cbiAgbGV0IHJlc2V0X2luaXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IHJlYyBhdXggKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgPVxuICAgICAgbWF0Y2ggYmxhY2tib2FyZC5jdXJyZW50X3N0YWNrIHdpdGhcbiAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICB8IF8gLT5cbiAgICAgICAgYXV4IChyZXNldF9sYXN0X2JyYW5jaGluZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9IGF1eCAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMucmVzZXRfbG9nIGxvZ19pbmZvIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5cbiAgdHlwZSByZXN1bHQgPSAoVHJhY2Uuc3RlcCAqIFBCLkNJLlBvLksuc2lkZV9lZmZlY3QpIGxpc3RcbiAgKCoqIG91dHB1dCByZXN1bHQqKVxuXG4gICgqKiBpdGVyYXRpb24qKVxuICBsZXQgaXNfbWF4aW1hbF9zb2x1dGlvbiBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZC5uX3VucmVzb2x2ZWRfZXZlbnRzID0gMFxuXG4gICgqKiBleHBvcnRpbmcgcmVzdWx0KilcblxuICBsZXQgdHJhbnNsYXRlX2JsYWNrYm9hcmQgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgYXJyYXkgPSBibGFja2JvYXJkLnNlbGVjdGVkX2V2ZW50cyBpblxuICAgIGxldCBzdGVwX2FycmF5ID0gYmxhY2tib2FyZC5ldmVudCBpblxuICAgIGxldCBzaWRlX2FycmF5ID0gYmxhY2tib2FyZC5zaWRlX2VmZmVjdF9vZl9ldmVudCBpblxuICAgIGxldCBzaXplID0gUEIuQS5sZW5ndGggYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIGxpc3QgPVxuICAgICAgaWYgayA9IHNpemUgdGhlblxuICAgICAgICBMaXN0LnJldiBsaXN0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGJvb2wgPSBQQi5BLmdldCBhcnJheSBrIGluXG4gICAgICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IChrICsgMSkgbGlzdFxuICAgICAgICB8IFNvbWUgZmFsc2UgLT4gYXV4IChrICsgMSkgbGlzdFxuICAgICAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgICAgIGxldCBzdGVwID0gUEIuQS5nZXQgc3RlcF9hcnJheSBrIGluXG4gICAgICAgICAgbGV0IHNpZGUgPSBQQi5BLmdldCBzaWRlX2FycmF5IGsgaW5cbiAgICAgICAgICBhdXggKGsgKyAxKSAoKHN0ZXAsIHNpZGUpIDo6IGxpc3QpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgbGlzdCA9IGF1eCAwIFtdIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBsaXN0XG5cbiAgbGV0IHByaW50X3N0YWNrIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCBzdGFjayA9IGJsYWNrYm9hcmQuY3VycmVudF9zdGFjayBpblxuICAgIGxldCBsb2cgPSBQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlciBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiQ3VycmVudF9zdGFja19sZXZlbCAlaSBcIiAoTGlzdC5sZW5ndGggc3RhY2spXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbykgaSAtPlxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICBwcmludF9hc3NpZ25tZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgaVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkAuXCIgaW5cbiAgICAgICAgICBlcnJvcilcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbykgKExpc3QucmV2IHN0YWNrKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8pIHggLT5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiT3RoZXIgbGV2ZWwgJWkgXCIgKExpc3QubGVuZ3RoIHgpIGluXG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbykgLT5cbiAgICAgICAgICAgICAgcHJpbnRfYXNzaWdubWVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkKVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbykgKExpc3QucmV2IHgpKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvKVxuICAgICAgICAoTGlzdC5yZXYgYmxhY2tib2FyZC5zdGFjaylcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKClcblxuICBsZXQgaXNfZmljdGl0aW91c19vYnMgYmxhY2tib2FyZCBlaWQgPVxuICAgIFNvbWUgZWlkID0gYmxhY2tib2FyZC5maWN0aXRpb3VzX29ic2VydmFibGVcblxuICBsZXQgdXNlbGVzc19wcmVkaWNhdGVfaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0ID1cbiAgICBsZXQgbl9ldmVudHMgPSBibGFja2JvYXJkLm5fZWlkIGluXG4gICAgaWYgUGFyYW1ldGVyLmRvX2xvY2FsX2N1dCB0aGVuIChcbiAgICAgIGxldCBldmVudF9hcnJheSA9IFBCLkEubWFrZSBuX2V2ZW50cyBmYWxzZSBpblxuICAgICAgbGV0IGtlcHRfZXZlbnRzID0gW10gaW5cbiAgICAgIGxldCBrZXB0X2V2ZW50cyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBrZXB0X2V2ZW50cyBpIC0+XG4gICAgICAgICAgICBsZXQgXyA9IFBCLkEuc2V0IGV2ZW50X2FycmF5IChQQi5pbnRfb2Zfc3RlcF9pZCBpKSB0cnVlIGluXG4gICAgICAgICAgICBpIDo6IGtlcHRfZXZlbnRzKVxuICAgICAgICAgIGtlcHRfZXZlbnRzIGxpc3RcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGF1eCBsb2dfaW5mbyBlcnJvciBldmVudF9saXN0IGtlcHRfZXZlbnRzID1cbiAgICAgICAgbWF0Y2ggZXZlbnRfbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBrZXB0X2V2ZW50c1xuICAgICAgICB8IGVpZCA6OiBxIC0+XG4gICAgICAgICAgaWYgaXNfZmljdGl0aW91c19vYnMgYmxhY2tib2FyZCBlaWQgdGhlblxuICAgICAgICAgICAgYXV4IGxvZ19pbmZvIGVycm9yIHEga2VwdF9ldmVudHNcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgUEIuQS5nZXQgYmxhY2tib2FyZC5ldmVudF9jYXNlX2xpc3QgKFBCLmludF9vZl9zdGVwX2lkIGVpZClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBxLCBrZXB0X2V2ZW50cyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBxLCBrZXB0X2V2ZW50cykgZXZlbnRfY2FzZV9hZGRyZXNzIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgICAgICAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGlmIFBCLmlzX3VuZGVmaW5lZCBjYXNlLnN0YXRpYy50ZXN0IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBxLCBrZXB0X2V2ZW50c1xuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2ludGVyID0gY2FzZS5keW5hbWljLnBvaW50ZXJfcHJldmlvdXMgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVpZCA9XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBzY2FuX2Rvd24gcG9pbnRlciA9XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJldl9ldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dfc2hvcnRfZXZlbnRfaWQgPSBwb2ludGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IF9lcnJvciwgX2xvZ19pbmZvLCBwcmV2X2Nhc2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZfZXZlbnRfY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJldl9laWQgPSBwcmV2X2Nhc2Uuc3RhdGljLmV2ZW50X2lkIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBpc19udWxsX3BvaW50ZXJfc3RlcF9pZCBwcmV2X2VpZCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgUEIuaXNfdW5rbm93biBwcmV2X2Nhc2Uuc3RhdGljLmFjdGlvbiB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvaW50ZXIgPSBwcmV2X2Nhc2UuZHluYW1pYy5wb2ludGVyX3ByZXZpb3VzIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5fZG93biBwb2ludGVyXG4gICAgICAgICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBwcmV2X2VpZFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgc2Nhbl9kb3duIHBvaW50ZXJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZWlkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHNcbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIHByZXZfZWlkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IFBCLkEuZ2V0IGV2ZW50X2FycmF5IChQQi5pbnRfb2Zfc3RlcF9pZCBwcmV2X2VpZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHEsIGtlcHRfZXZlbnRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBxLCBrZXB0X2V2ZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQi5BLnNldCBldmVudF9hcnJheVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBCLmludF9vZl9zdGVwX2lkIHByZXZfZWlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2X2VpZCA6OiBxLCBwcmV2X2VpZCA6OiBrZXB0X2V2ZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBxLCBrZXB0X2V2ZW50c1xuICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBxLCBrZXB0X2V2ZW50cylcbiAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYXV4IGxvZ19pbmZvIGVycm9yIHEga2VwdF9ldmVudHNcbiAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcmVwID0gYXV4IGxvZ19pbmZvIGVycm9yIGxpc3Qga2VwdF9ldmVudHMgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgTGlzdC5zb3J0IGNvbXBhcmUgcmVwLCBuX2V2ZW50cyAtIExpc3QubGVuZ3RoIHJlcFxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZXZlbnRzX3RvX2tlZXAgPVxuICAgICAgICBsZXQgcmVjIGF1eCBrIGxpc3QgPVxuICAgICAgICAgIGlmIGsgPCAwIHRoZW5cbiAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhdXggKGsgLSAxKSAoUEIuc3RlcF9pZF9vZl9pbnQgayA6OiBsaXN0KVxuICAgICAgICBpblxuICAgICAgICBhdXggKG5fZXZlbnRzIC0gMSkgW11cbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50c190b19rZWVwLCAwXG4gICAgKVxuXG4gIGxldCBjdXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjdXRfY2F1c2FsX2Zsb3csIG5fZXZlbnRzX3JlbW92ZWQgPVxuICAgICAgdXNlbGVzc19wcmVkaWNhdGVfaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0XG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfY29uY3VycmVudF9ldmVudF9kZXRlY3Rpb25fdGltZSBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfc3RlcF90aW1lIGxvZ19pbmZvIGluXG4gICAgbGV0IGxvZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX2tfY3V0X2V2ZW50cyBuX2V2ZW50c19yZW1vdmVkIGxvZ19pbmZvXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBjdXRfY2F1c2FsX2Zsb3cpXG5cbiAgbGV0IGltcG9ydCA/aGV1cmlzdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxpc3QgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZWJsYWNrYm9hcmQgPVxuICAgICAgUEIuaW5pdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKHByZWJsYWNrYm9hcmQsIF9zdGVwX2lkLCBzdHJpbmcsIHRvX3hscykgPVxuICAgICAgbWF0Y2ggcGFyYW1ldGVyLlBCLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkNvbXByZXNzaW9uIG1vZGUgaGFzIG5vdCBiZWVuIHNldCB1cFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJDb21wcmVzc2lvbiBtb2RlIGhhcyBub3QgYmVlbiBzZXQgdXAuXCIpXG4gICAgICAgICAgKHByZWJsYWNrYm9hcmQsIFBCLnplcm9fc3RlcF9pZCwgXCJOb25lXCIsIGZhbHNlKVxuICAgICAgfCBTb21lIFN0b3J5X2pzb24uU3Ryb25nIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBpbnQpID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCAocHJlYmxhY2tib2FyZCwgaW50KSkgcmVmaW5lZF9ldmVudCAtPlxuICAgICAgICAgICAgICBQQi5hZGRfc3RlcF91cF90b19pc28gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICByZWZpbmVkX2V2ZW50IHByZWJsYWNrYm9hcmQgaW50KVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgKHByZWJsYWNrYm9hcmQsIFBCLnplcm9fc3RlcF9pZCkpXG4gICAgICAgICAgICBsaXN0XG4gICAgICAgIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgKCBwcmVibGFja2JvYXJkLFxuICAgICAgICAgICAgaW50LFxuICAgICAgICAgICAgUGFyYW1ldGVyLnhsc3N0cm9uZ0ZpbGVOYW1lLFxuICAgICAgICAgICAgUGFyYW1ldGVyLmR1bXBfZ3JpZF9iZWZvcmVfc3Ryb25nX2NvbXByZXNzaW9uICkgKVxuICAgICAgfCBTb21lIFN0b3J5X2pzb24uV2VhayB8IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKHByZWJsYWNrYm9hcmQsIGludCkgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBpbnQpKSByZWZpbmVkX2V2ZW50IC0+XG4gICAgICAgICAgICAgIFBCLmFkZF9zdGVwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHJlZmluZWRfZXZlbnRcbiAgICAgICAgICAgICAgICBwcmVibGFja2JvYXJkIGludClcbiAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBQQi56ZXJvX3N0ZXBfaWQpKVxuICAgICAgICAgICAgbGlzdFxuICAgICAgICBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICggcHJlYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGludCxcbiAgICAgICAgICAgIFBhcmFtZXRlci54bHN3ZWFrRmlsZU5hbWUsXG4gICAgICAgICAgICBQYXJhbWV0ZXIuZHVtcF9ncmlkX2JlZm9yZV93ZWFrX2NvbXByZXNzaW9uICkgKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlYmxhY2tib2FyZCA9XG4gICAgICBQQi5maW5hbGl6ZSBoZXVyaXN0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBpbXBvcnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IF8gPSBQcmlvcml0eS5uX3N0b3J5IDo9ICFQcmlvcml0eS5uX3N0b3J5ICsgMSBpblxuICAgIGxldCBfID0gUHJpb3JpdHkubl9icmFuY2ggOj0gMSBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgIGlmIHRvX3hscyB0aGVuXG4gICAgICAgIGV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdHJpbmdcbiAgICAgICAgICAhUHJpb3JpdHkubl9zdG9yeSAwIGJsYWNrYm9hcmRcbiAgICAgIGVsc2VcbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5lbmRcbiIsIigqKlxuICAqIHByb3BhZ2F0aW9uX2hldXJpc3RpYy5tbFxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDE2LTA5LTA1IGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0wMyAyMDowMzoxMSBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICpcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBkZWJ1Z19tb2RlID0gZmFsc2VcbmxldCBsb29rX3VwX2Zvcl9iZXR0ZXJfY3V0ID0gUGFyYW1ldGVyLmxvb2tfdXBfZm9yX2JldHRlcl9jdXRcbmxldCBsb29rX2Rvd25fZm9yX2JldHRlcl9jdXQgPSBQYXJhbWV0ZXIubG9va19kb3duX2Zvcl9iZXR0ZXJfY3V0XG5cbm1vZHVsZSB0eXBlIEJsYWNrYm9hcmRfd2l0aF9oZXVyaXN0aWMgPSBzaWdcbiAgbW9kdWxlIEIgOiBCbGFja2JvYXJkLkJsYWNrYm9hcmRcblxuICB0eXBlIHVwZGF0ZV9vcmRlclxuICB0eXBlIHByb3BhZ2F0aW9uX2NoZWNrXG5cbiAgdmFsIGR1bW15X3VwZGF0ZV9vcmRlciA6IHVwZGF0ZV9vcmRlclxuXG4gIHZhbCBmb3JjZWRfZXZlbnRzIDpcbiAgICAoIEIuYmxhY2tib2FyZCxcbiAgICAgICh1cGRhdGVfb3JkZXIgbGlzdFxuICAgICAgKiBCLlBCLnN0ZXBfaWQgbGlzdFxuICAgICAgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IG9wdGlvbilcbiAgICAgIGxpc3QgKVxuICAgIEIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGZvcmJpZGRlbl9ldmVudHMgOlxuICAgIChCLlBCLnN0ZXBfaWQgbGlzdCwgdXBkYXRlX29yZGVyIGxpc3QpIEIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIG5leHRfY2hvaWNlIDogKEIuYmxhY2tib2FyZCwgdXBkYXRlX29yZGVyIGxpc3QpIEIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGFwcGx5X2luc3RydWN0aW9uIDpcbiAgICAoIEIuYmxhY2tib2FyZCxcbiAgICAgIHVwZGF0ZV9vcmRlcixcbiAgICAgIHVwZGF0ZV9vcmRlciBsaXN0LFxuICAgICAgcHJvcGFnYXRpb25fY2hlY2sgbGlzdCxcbiAgICAgIEIuYmxhY2tib2FyZFxuICAgICAgKiB1cGRhdGVfb3JkZXIgbGlzdFxuICAgICAgKiBwcm9wYWdhdGlvbl9jaGVjayBsaXN0XG4gICAgICAqIEIuYXNzaWduX3Jlc3VsdCApXG4gICAgQi5QQi5DSS5Qby5LLkgucXVhdGVybmFyeVxuXG4gIHZhbCBwcm9wYWdhdGUgOlxuICAgICggQi5ibGFja2JvYXJkLFxuICAgICAgcHJvcGFnYXRpb25fY2hlY2ssXG4gICAgICB1cGRhdGVfb3JkZXIgbGlzdCxcbiAgICAgIHByb3BhZ2F0aW9uX2NoZWNrIGxpc3QsXG4gICAgICBCLmJsYWNrYm9hcmRcbiAgICAgICogdXBkYXRlX29yZGVyIGxpc3RcbiAgICAgICogcHJvcGFnYXRpb25fY2hlY2sgbGlzdFxuICAgICAgKiBCLmFzc2lnbl9yZXN1bHQgKVxuICAgIEIuUEIuQ0kuUG8uSy5ILnF1YXRlcm5hcnlcbmVuZFxuXG5tb2R1bGUgUHJvcGFnYXRpb25faGV1cmlzdGljIDogQmxhY2tib2FyZF93aXRoX2hldXJpc3RpYyA9IHN0cnVjdFxuICBtb2R1bGUgQiA6IEJsYWNrYm9hcmQuQmxhY2tib2FyZCA9IEJsYWNrYm9hcmQuQmxhY2tib2FyZFxuXG4gIGxldCB3YXJuIHBhcmFtZXRlciBlcnJvciBwb3MgPyhtZXNzYWdlID0gXCJcIikgZXhuIGRlZmF1bHQgPVxuICAgIEV4Y2VwdGlvbi53YXJuXG4gICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBwb3Mgfm1lc3NhZ2UgZXhuIGRlZmF1bHRcblxuICB0eXBlIHVwZGF0ZV9vcmRlciA9XG4gICAgfCBLZWVwX2V2ZW50IG9mIEIuUEIuc3RlcF9pZFxuICAgIHwgRGlzY2FyZF9ldmVudCBvZiBCLlBCLnN0ZXBfaWRcbiAgICB8IEN1dF9ldmVudCBvZiBCLlBCLnN0ZXBfaWRcbiAgICB8IFJlZmluZV92YWx1ZV9hZnRlciBvZiBCLmV2ZW50X2Nhc2VfYWRkcmVzcyAqIEIuUEIucHJlZGljYXRlX3ZhbHVlXG4gICAgfCBSZWZpbmVfdmFsdWVfYmVmb3JlIG9mIEIuZXZlbnRfY2FzZV9hZGRyZXNzICogQi5QQi5wcmVkaWNhdGVfdmFsdWVcbiAgICB8IFNraXBcblxuICBsZXQgZHVtbXlfdXBkYXRlX29yZGVyID0gU2tpcFxuXG4gIHR5cGUgcHJvcGFnYXRpb25fY2hlY2sgPVxuICAgIHwgUHJvcGFnYXRlX3VwIG9mIEIuZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgfCBQcm9wYWdhdGVfZG93biBvZiBCLmV2ZW50X2Nhc2VfYWRkcmVzc1xuXG4gIGxldCBfcHJpbnRfb3V0cHV0IGxvZyB4ID1cbiAgICBpZiBCLmlzX2ZhaWxlZCB4IHRoZW5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJGQUlMRURcIlxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHggdGhlblxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIklHTk9SRURcIlxuICAgIGVsc2VcbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJTVUNDRVNTXCJcblxuICBsZXQgZm9yY2VkX2V2ZW50cyBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCBsaXN0ID0gQi5mb3JjZWRfZXZlbnRzIGJsYWNrYm9hcmQgaW5cbiAgICAoIGVycm9yLFxuICAgICAgbG9nX2luZm8sXG4gICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgKGZ1biAobCwgaW5mbykgLT5cbiAgICAgICAgICBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IEtlZXBfZXZlbnQgeCkgKExpc3QucmV2IGwpLCBsLCBpbmZvKVxuICAgICAgICAoTGlzdC5yZXYgbGlzdCkgKVxuXG4gIGxldCBmb3JiaWRkZW5fZXZlbnRzIF9wYXJhbXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0ID1cbiAgICBlcnJvciwgbG9nX2luZm8sIExpc3QucmV2X21hcCAoZnVuIHggLT4gQ3V0X2V2ZW50IHgpIChMaXN0LnJldiBsaXN0KVxuXG4gIGxldCBnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnRfb25fcGlkIGZpcnN0IGxhc3Qgc3VjYyBzdG9wIHBhcmFtZXRlciBoYW5kbGVyXG4gICAgICBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHBfaWQgbGV2ZWwgPVxuICAgIGxldCBrX2luaXQgPSBmaXJzdCBibGFja2JvYXJkIHBfaWQgaW5cbiAgICBsZXQga19lbmQgPSBsYXN0IGJsYWNrYm9hcmQgcF9pZCBpblxuICAgIG1hdGNoIGtfaW5pdCwga19lbmQgd2l0aFxuICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCBOb25lXG4gICAgfCBTb21lIGksIFNvbWUgaiAtPlxuICAgICAgbGV0IHJlYyBhdXggaSBsb2dfaW5mbyBlcnJvciA9XG4gICAgICAgIGlmIHN0b3AgaSBqIHRoZW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGV2ZW50X2Nhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgICBCLmJ1aWxkX2V2ZW50X2Nhc2VfYWRkcmVzcyBwX2lkIChCLmJ1aWxkX3BvaW50ZXIgaSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV4aXN0ID1cbiAgICAgICAgICAgIEIuZXhpc3RfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggZXhpc3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9zZWlkLCBlaWQsIF90ZXN0LCBfYWN0aW9uKSA9XG4gICAgICAgICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGV2ZWxfb2ZfZXZlbnQgPVxuICAgICAgICAgICAgICBCLmxldmVsX29mX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZWlkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgbGV2ZWxfb2ZfZXZlbnQgPSBsZXZlbCB0aGVuXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgU29tZSBlaWRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYXV4IChzdWNjIGkpIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgfCBTb21lIHRydWUgfCBTb21lIGZhbHNlIC0+IGF1eCAoc3VjYyBpKSBsb2dfaW5mbyBlcnJvclxuICAgICAgICApXG4gICAgICBpblxuICAgICAgYXV4IGkgbG9nX2luZm8gZXJyb3JcblxuICBsZXQgZ2V0X2xhc3RfdW5yZXNvbHZlZF9ldmVudF9vbl9waWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgIGJsYWNrYm9hcmQgcF9pZCBsZXZlbCA9XG4gICAgZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBCLmdldF9sYXN0X2xpbmtlZF9ldmVudFxuICAgICAgQi5nZXRfZmlyc3RfbGlua2VkX2V2ZW50IEIuUEIuZGVjX3N0ZXBfc2hvcnRfaWRcbiAgICAgIChmdW4gaSBqIC0+IGkgPCBqKVxuICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwX2lkIGxldmVsXG5cbiAgbGV0IGdldF9maXJzdF91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgYmxhY2tib2FyZCBwX2lkIGxldmVsID1cbiAgICBnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnRfb25fcGlkIEIuZ2V0X2ZpcnN0X2xpbmtlZF9ldmVudFxuICAgICAgQi5nZXRfbGFzdF9saW5rZWRfZXZlbnQgQi5QQi5pbmNfc3RlcF9zaG9ydF9pZFxuICAgICAgKGZ1biBpIGogLT4gaSA+IGopXG4gICAgICBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHBfaWQgbGV2ZWxcblxuICBsZXQgZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50IGZpcnN0IGxhc3Qgc3VjYyBzdG9wIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICBlcnJvciBibGFja2JvYXJkIGxldmVsID1cbiAgICBsZXQgcmVjIGF1eCBpIGxvZ19pbmZvIGVycm9yID1cbiAgICAgIGlmIHN0b3AgaSBsYXN0IHRoZW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBOb25lXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXhpc3QgPVxuICAgICAgICAgIEIuaXNfc2VsZWN0ZWRfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaSBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGV4aXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGV2ZWxfb2ZfZXZlbnQgPVxuICAgICAgICAgICAgQi5sZXZlbF9vZl9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGlcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGxldmVsX29mX2V2ZW50ID0gbGV2ZWwgdGhlblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBTb21lIGlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhdXggKHN1Y2MgaSkgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgfCBTb21lIHRydWUgfCBTb21lIGZhbHNlIC0+IGF1eCAoc3VjYyBpKSBsb2dfaW5mbyBlcnJvclxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IGZpcnN0IGxvZ19pbmZvIGVycm9yXG5cbiAgbGV0IGdldF9sYXN0X3VucmVzb2x2ZWRfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgbGV2ZWwgPVxuICAgIGdldF9nZW5fdW5yZXNvbHZlZF9ldmVudFxuICAgICAgKEIuUEIuc3RlcF9pZF9vZl9pbnQgKEIuZ2V0X25fZWlkIGJsYWNrYm9hcmQpKVxuICAgICAgQi5QQi56ZXJvX3N0ZXBfaWQgQi5QQi5kZWNfc3RlcF9pZFxuICAgICAgKGZ1biBpIGogLT4gaSA8IGopXG4gICAgICBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGxldmVsXG5cbiAgbGV0IGdldF9maXJzdF91bnJlc29sdmVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGxldmVsID1cbiAgICBnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnQgQi5QQi56ZXJvX3N0ZXBfaWRcbiAgICAgIChCLlBCLnN0ZXBfaWRfb2ZfaW50IChCLmdldF9uX2VpZCBibGFja2JvYXJkKSlcbiAgICAgIEIuUEIuaW5jX3N0ZXBfaWRcbiAgICAgIChmdW4gaSBqIC0+IGkgPiBqKVxuICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsZXZlbFxuXG4gIGxldCBuZXh0X2Nob2ljZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgYm9vbCwgc3RyaW5nID1cbiAgICAgIG1hdGNoIHBhcmFtZXRlci5CLlBCLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICAgICAgfCBOb25lIHwgU29tZSBTdG9yeV9qc29uLkNhdXNhbCAtPiBmYWxzZSwgXCJcIlxuICAgICAgfCBTb21lIFN0b3J5X2pzb24uV2VhayAtPlxuICAgICAgICAoIFBhcmFtZXRlci5kdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmluZ193ZWFrX2NvbXByZXNzaW9uLFxuICAgICAgICAgIFBhcmFtZXRlci54bHN3ZWFrRmlsZU5hbWUgKVxuICAgICAgfCBTb21lIFN0b3J5X2pzb24uU3Ryb25nIC0+XG4gICAgICAgICggUGFyYW1ldGVyLmR1bXBfZ3JpZF9hZnRlcl9icmFuY2hpbmdfZHVyaW5nX3N0cm9uZ19jb21wcmVzc2lvbixcbiAgICAgICAgICBQYXJhbWV0ZXIueGxzc3Ryb25nRmlsZU5hbWUgKVxuICAgIGluXG4gICAgbGV0ICgpID0gUHJpb3JpdHkubl9icmFuY2ggOj0gIVByaW9yaXR5Lm5fYnJhbmNoICsgMSBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgIEIuZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0cmluZ1xuICAgICAgICAgICAgIVByaW9yaXR5Lm5fc3RvcnkgIVByaW9yaXR5Lm5fYnJhbmNoIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICApIGVsc2VcbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIHByaW9yaXR5ID1cbiAgICAgIG1hdGNoIEIuUEIuQ0kuUG8uSy5ILmdldF9wcmlvcml0aWVzIHBhcmFtZXRlciB3aXRoXG4gICAgICB8IFNvbWUgeCAtPiBlcnJvciwgeFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkNvbXByZXNzaW9uIG1vZGUgaGFzIHRvIGJlZW4gc2VsZWN0ZWRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiQ29tcHJlc3Npb24gbW9kZSBoYXMgbm90IGJlZW4gc2VsZWN0ZWRcIikgUHJpb3JpdHkuY2F1c2FsXG4gICAgaW5cbiAgICBsZXQgbl9wX2lkID0gQi5nZXRfbnByZWRpY2F0ZV9pZCBibGFja2JvYXJkIGluXG4gICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICBtYXRjaCBwcmlvcml0eS5Qcmlvcml0eS5jYW5kaWRhdGVfc2V0X29mX2V2ZW50cyB3aXRoXG4gICAgICB8IFByaW9yaXR5LkFsbF9yZW1haW5pbmdfZXZlbnRzIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkFsbF9yZW1haW5pbmdfZXZlbnRzIHN0cmF0ZWd5IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiQWxsIHJlbWFpbmluZyBldmVudHMgc3RyYXRlZ3kgaXMgbm90IGltcGxlbWVudGVkIHlldFwiKSAoKVxuICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHMgLT4gZXJyb3IsICgpXG4gICAgICB8IFByaW9yaXR5LldpcmVfd2l0aF90aGVfbW9zdF9udW1iZXJfb2ZfZXZlbnRzIC0+IGVycm9yLCAoKVxuICAgIGluXG4gICAgbGV0IGJlc3RfcGFpciB4IGEgYiA9XG4gICAgICBtYXRjaCB4LlByaW9yaXR5LmNhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzIHdpdGhcbiAgICAgIHwgUHJpb3JpdHkuQWxsX3JlbWFpbmluZ19ldmVudHNcbiAgICAgIHwgUHJpb3JpdHkuV2lyZV93aXRoX3RoZV9tb3N0X251bWJlcl9vZl9ldmVudHMgLT5cbiAgICAgICAgVG9vbHMubWF4X3Bvc19pbnRfbm90X3plcm8gYSBiXG4gICAgICB8IFByaW9yaXR5LldpcmVfd2l0aF90aGVfbGVhc3RfbnVtYmVyX29mX2V2ZW50cyAtPlxuICAgICAgICBUb29scy5taW5fcG9zX2ludF9ub3RfemVybyBhIGJcbiAgICBpblxuICAgIGxldCBnZXRfdW5yZXNvbHZlZF9ldmVudCB4IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcF9pZFxuICAgICAgICBsZXZlbCA9XG4gICAgICBtYXRjaCB4LlByaW9yaXR5LnRyeV90b19yZW1vdmVfZmlyc3Qgd2l0aFxuICAgICAgfCBQcmlvcml0eS5MYXRlX2V2ZW50cyAtPlxuICAgICAgICAobWF0Y2ggeC5Qcmlvcml0eS5jYW5kaWRhdGVfc2V0X29mX2V2ZW50cyB3aXRoXG4gICAgICAgIHwgUHJpb3JpdHkuQWxsX3JlbWFpbmluZ19ldmVudHMgLT5cbiAgICAgICAgICBnZXRfbGFzdF91bnJlc29sdmVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGxldmVsXG4gICAgICAgIHwgUHJpb3JpdHkuV2lyZV93aXRoX3RoZV9tb3N0X251bWJlcl9vZl9ldmVudHNcbiAgICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHMgLT5cbiAgICAgICAgICBnZXRfbGFzdF91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgYmxhY2tib2FyZCBwX2lkIGxldmVsKVxuICAgICAgfCBQcmlvcml0eS5FYXJseV9ldmVudHMgLT5cbiAgICAgICAgKG1hdGNoIHguUHJpb3JpdHkuY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgd2l0aFxuICAgICAgICB8IFByaW9yaXR5LkFsbF9yZW1haW5pbmdfZXZlbnRzIC0+XG4gICAgICAgICAgZ2V0X2ZpcnN0X3VucmVzb2x2ZWRfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX21vc3RfbnVtYmVyX29mX2V2ZW50c1xuICAgICAgICB8IFByaW9yaXR5LldpcmVfd2l0aF90aGVfbGVhc3RfbnVtYmVyX29mX2V2ZW50cyAtPlxuICAgICAgICAgIGdldF9maXJzdF91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgYmxhY2tib2FyZCBwX2lkIGxldmVsKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsaXN0ID1cbiAgICAgIGlmIG5fcF9pZCA9IDAgdGhlblxuICAgICAgICBlcnJvciwgW11cbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcmVjIHRyeV9sZXZlbCBsZXZlbF9vcHQgZXJyb3IgPVxuICAgICAgICAgIG1hdGNoIGxldmVsX29wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBbXVxuICAgICAgICAgIHwgU29tZSBsZXZlbCAtPlxuICAgICAgICAgICAgbGV0IHJlYyBhdXggbGV2ZWwgbl9wX2lkIHN0ZXAgYmVzdCA9XG4gICAgICAgICAgICAgIGlmIHN0ZXAgPSBuX3BfaWQgdGhlblxuICAgICAgICAgICAgICAgIGJlc3RcbiAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0IGdyYWRlID1cbiAgICAgICAgICAgICAgICAgIEIuZ2V0X25fdW5yZXNvbHZlZF9ldmVudHNfb2ZfcGlkX2J5X2xldmVsIGJsYWNrYm9hcmQgc3RlcFxuICAgICAgICAgICAgICAgICAgICBsZXZlbFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYXV4IGxldmVsIG5fcF9pZCAoc3RlcCArIDEpXG4gICAgICAgICAgICAgICAgICAoYmVzdF9wYWlyIHByaW9yaXR5IGJlc3QgKGdyYWRlLCBzdGVwKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBuLCBwX2lkID1cbiAgICAgICAgICAgICAgYXV4IGxldmVsIG5fcF9pZCAxXG4gICAgICAgICAgICAgICAgKEIuZ2V0X25fdW5yZXNvbHZlZF9ldmVudHNfb2ZfcGlkX2J5X2xldmVsIGJsYWNrYm9hcmQgMCBsZXZlbCwgMClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgICAgIHRyeV9sZXZlbCAoUHJpb3JpdHkubG93ZXIgbGV2ZWwpIGVycm9yXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBfbG9nX2luZm8sIGV2ZW50X2lkID1cbiAgICAgICAgICAgICAgICBnZXRfdW5yZXNvbHZlZF9ldmVudCBwcmlvcml0eSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBwX2lkIGxldmVsXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIGV2ZW50X2lkIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgbGV0IGxvZyA9IEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgaW5cblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgICAoXCJBbiBlbXB0eSB3aXJlIGhhcyBiZWVuIHNlbGVjdGVkXCIgXiBzdHJpbmdfb2ZfaW50IG4pXG4gICAgICAgICAgICAgICAgICAgIChGYWlsdXJlIFwiQW4gZW1wdHkgd2lyZSBoYXMgYmVlbiBzZWxlY3RlZFwiKSAoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJFUlJPUiAyNDk6ICVzXFxuXCJcbiAgICAgICAgICAgICAgICAgICAgKFByaW9yaXR5LnN0cmluZ19vZl9sZXZlbCBsZXZlbClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHRyeV9sZXZlbCAoUHJpb3JpdHkubG93ZXIgbGV2ZWwpIGVycm9yXG4gICAgICAgICAgICAgIHwgU29tZSBldmVudF9pZCAtPlxuICAgICAgICAgICAgICAgIGVycm9yLCBbIERpc2NhcmRfZXZlbnQgZXZlbnRfaWQ7IEtlZXBfZXZlbnQgZXZlbnRfaWQgXVxuICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICB0cnlfbGV2ZWwgKFNvbWUgUHJpb3JpdHkuaGlnaGVzdCkgZXJyb3JcbiAgICAgIClcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgbGlzdFxuXG4gIGxldCBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF8sIGVpZCwgXywgXykgPVxuICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgXCJFdmVudDogJWksIFByZWRpY2F0ZTogJWlcIiAoQi5QQi5pbnRfb2Zfc3RlcF9pZCBlaWQpXG4gICAgICAgIChCLnByZWRpY2F0ZV9pZF9vZl9jYXNlX2FkZHJlc3MgY2FzZSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sICgpXG5cbiAgbGV0IHByb3BhZ2F0ZV9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzcyBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sID1cbiAgICAgIEIuZXhpc3RfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIGluXG4gICAgbWF0Y2ggYm9vbCB3aXRoXG4gICAgfCBTb21lIGZhbHNlIC0+XG4gICAgICAoKiB0aGUgY2FzZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGJsYWNrYm9hcmQsIG5vdGhpbmcgdG8gYmUgZG9uZSAqKVxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIEIuc3VjY2VzcylcbiAgICB8IFNvbWUgdHJ1ZSB8IE5vbmUgLT5cbiAgICAgICgqIHdlIGtub3cgdGhhdCB0aGUgcGFpciAodGVzdC9hY3Rpb24pIGNhbiBiZWVuIGV4ZWN1dGVkICopXG4gICAgICBsZXQgY2FzZV9hZGRyZXNzID1cbiAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2VfdmFsdWUgPVxuICAgICAgICBCLmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICBjYXNlX3ZhbHVlXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbmV4dF9ldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJvb2wyID1cbiAgICAgICAgQi5leGlzdF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIChtYXRjaCBib29sMiB3aXRoXG4gICAgICB8IFNvbWUgZmFsc2UgLT5cbiAgICAgICAgKCogVGhlIGJsYWNrYm9hcmQgaXMgaW5jb25zaXN0ZW50OiAqKVxuICAgICAgICAoKiBQb2ludGVycyBzaG91bGQgbm90IHBvaW50IHRvIHJlbW92ZWQgZXZlbnRzLiopXG4gICAgICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgIH5tZXNzYWdlOlwiaW5jb25zaXN0ZW50IHBvaW50ZXJzIGluIGJsYWNrYm9hcmRcIlxuICAgICAgICAgICAgKEZhaWx1cmUgXCJpbmNvbnNpc3RlbnQgcG9pbnRlcnMgaW4gYmxhY2tib2FyZFwiKSAoKVxuICAgICAgICBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgQi5zdWNjZXNzKSApXG4gICAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgICAoKiBuZXh0IGV2ZW50IGlzIHNlbGVjdGVkICopXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfbmV4dF9zZWlkLCBfbmV4dF9laWQsIG5leHRfdGVzdCwgbmV4dF9hY3Rpb24pID1cbiAgICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgbmV4dF9ldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlX3ZhbHVlID1cbiAgICAgICAgICBCLmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIGNhc2VfdmFsdWVcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIEIuUEIuaXNfdW5rbm93biBuZXh0X3Rlc3QsIEIuUEIuaXNfdW5rbm93biBuZXh0X2FjdGlvbiB3aXRoXG4gICAgICAgIHwgdHJ1ZSwgdHJ1ZSAtPlxuICAgICAgICAgICgqIG5vIHRlc3QsIG5vIGFjdGlvbiBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gKGNhc2UgMSk6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgaXMga2VwdCBidXQgaGFzIG5vIHRlc3QgYW5kIG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJWYWx1ZSBpcyBwcm9wYWdhdGVkIGFmdGVyIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBuZXh0IGV2ZW50IGlzIHNlbGVjdGVkICopXG4gICAgICAgICAgKCogbm8gdGVzdCwgbm8gYWN0aW9uIGluIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIHZhbHVlIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDEgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2FmdGVyIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICB8IHRydWUsIGZhbHNlIC0+XG4gICAgICAgICAgKCogbm8gdGVzdCwgYnV0IGFuIGFjdGlvbiBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDIpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IGlzIGtlcHQsIG5vIHRlc3QsIGJ1dCBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiTm90aGluZyB0byBiZSBkb25lXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBuZXh0IGV2ZW50IGlzIHNlbGVjdGVkICopXG4gICAgICAgICAgKCogbm8gdGVzdCwgYnV0IGFuIGFjdGlvbiBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgKCogbm90aGluZyB0byBwcm9wYWdhdGUgZG93bndhcmQqKVxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gMiBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBCLnN1Y2Nlc3MpIClcbiAgICAgICAgfCBmYWxzZSwgdHJ1ZSAtPlxuICAgICAgICAgICgqIG5vIGFjdGlvbiwgYnV0IGEgdGVzdCBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHByZWRpY2F0ZV92YWx1ZSBuZXh0X3Rlc3QgdGhlbiAoXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb25qID1cbiAgICAgICAgICAgICAgQi5QQi5jb25qIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSAzKTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IGlzIGtlcHQsIGEgdGVzdCBidXQgbm8gYWN0aW9uIFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJOZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGUgbmV3IHByZWRpY2F0ZV92YWx1ZSBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBjb25qXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIiBiZWZvcmUgYW5kIGFmdGVyIG5leHQgZXZlbnRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogbmV4dCBldmVudCBpcyBzZWxlY3RlZCAqKVxuICAgICAgICAgICAgKCogbm8gYWN0aW9uLCBidXQgYSB0ZXN0IGluIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgbWVldCBvZiB0aGUgdGVzdCBhbmQgdGhlIHZhbHVlIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAzIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29uailcbiAgICAgICAgICAgICAgICA6OiBSZWZpbmVfdmFsdWVfYWZ0ZXIgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBjb25qKVxuICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBhbmQgdGhlIHZhbHVlIGFyZSBpbmNvbXBhdGlibGUgKilcbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSA0KTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IGlzIGtlcHQsIGEgdGVzdCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIk5leHQgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgbmV4dF90ZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIkN1dFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gNCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIG5leHQgZXZlbnQgaXMgc2VsZWN0ZWQgKilcbiAgICAgICAgICAgICgqIG5vIGFjdGlvbiwgYnV0IGEgdGVzdCBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgKCogd2UgY3V0IHRoZSBleHBsb3JhdGlvbiAqKVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICAgICAgKVxuICAgICAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgICAgICgqdGhlcmUgaXMgYSB0ZXN0IGFuZCBhbiBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgcHJlZGljYXRlX3ZhbHVlIG5leHRfdGVzdCB0aGVuIChcbiAgICAgICAgICAgICgqIHRoZSB0ZXN0IGFuZCB0aGUgdmFsdWUgYXJlIGNvbXBhdGlibGUgKilcbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNvbmogPVxuICAgICAgICAgICAgICBCLlBCLmNvbmogcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbmV4dF90ZXN0XG4gICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDUpOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgaXMga2VwdCwgYSB0ZXN0IGJ1dCBubyBhY3Rpb25cIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBBY3Rpb246XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlIG5ldyBwcmVkaWNhdGVfdmFsdWUgXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgY29ualxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIgYmVmb3JlIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biA1IGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogbmV4dCBldmVudCBpcyBzZWxlY3RlZCAqKVxuICAgICAgICAgICAgKCogYW4gYWN0aW9uIGFuZCBhIHRlc3QgaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgKCogd2UgcHJvcGFnYXRlIHRoZSBtZWV0IG9mIHRoZSB0ZXN0IGFuZCB0aGUgdmFsdWUgYmVmb3JlIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9iZWZvcmUgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBjb25qKVxuICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAoKiB0ZXN0IGFuZCB2YWx1ZSBhcmUgaW5jb21wYXRpYmxlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgNik6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBpcyBrZXB0LCBhIHRlc3QsIGFuIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJOZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiTmV4dCBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIG5leHRfYWN0aW9uXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIkN1dFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gNiBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIG5leHQgZXZlbnQgaXMgc2VsZWN0ZWQgKilcbiAgICAgICAgICAgICgqIGFuIGFjdGlvbiBhbmQgYSB0ZXN0IGluIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAoKiB3ZSBjdXQgdGhlIGV4cGxvcmF0aW9uICopXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIEIuZmFpbClcbiAgICAgICAgICApKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIGV2ZW50IGlzIHBsYXllZCBvciBub3QgKilcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9uZXh0X3NlaWQsIG5leHRfZWlkLCBuZXh0X3Rlc3QsIG5leHRfYWN0aW9uKSA9XG4gICAgICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBCLlBCLmlzX3Vua25vd24gbmV4dF9hY3Rpb24gd2l0aFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAoKiB0aGVyZSBpcyBubyBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAobWF0Y2ggQi5QQi5pc191bmtub3duIG5leHRfdGVzdCB3aXRoXG4gICAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgICAoKnRoZXJlIGlzIG5vIHRlc3QgaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSA3KTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIG5vIHRlc3QsIG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJUaGUgdmFsdWUgaXMgcHJvcGFnYXRlZCBhZnRlciBhbmQgYmVmb3JlIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlxcblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biA3IGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgKCp0aGVyZSBpcyBubyB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB0aGVyZSBpcyBubyBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgdmFsdWUgYWZ0ZXIgdGhlIG5leHQgZXZlbnQqKVxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYWZ0ZXIgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBwcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgICAgKCogdGhlcmUgaXMgYSB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgbmV4dF90ZXN0IHByZWRpY2F0ZV92YWx1ZSB0aGVuIChcbiAgICAgICAgICAgICAgKCogdGVzdCBhbmQgcHJlZGljYXRlX3ZhbHVlIGFyZSBjb21wYXRpYmxlICopXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSA4KTpcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBuZXh0IGV2ZW50IGlzIGtlcHRcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYSB0ZXN0LCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiVGhlIHZhbHVlIFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIiBpcyBwcm9wYWdhdGVkIGFmdGVyIGFuZCBiZWZvcmUgdGhlIG5leHQgZXZlbnRcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biA4IGxvZ19pbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIGV2ZW50IGlzIHBsYXllZCBvciBub3QgKilcbiAgICAgICAgICAgICAgKCogdGhlcmUgaXMgYSB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICgqIHRoZXJlIGlzIG5vIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgdmFsdWUgYWZ0ZXIgdGhlIG5leHQgZXZlbnQqKVxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9hZnRlciAobmV4dF9ldmVudF9jYXNlX2FkZHJlc3MsIHByZWRpY2F0ZV92YWx1ZSlcbiAgICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSA5KTpcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBuZXh0IGV2ZW50IGlzIGtlcHRcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYSB0ZXN0LCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiV2UgZGlzY2FyZCB0aGUgbmV4dCBldmVudCAoJWkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5pbnRfb2Zfc3RlcF9pZCBuZXh0X2VpZClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gOSBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBldmVudCBpcyBwbGF5ZWQgb3Igbm90ICopXG4gICAgICAgICAgICAgICgqIHRoZXJlIGlzIGEgdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBubyBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICAgKCogd2UgZGlzY2FyZCB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgIERpc2NhcmRfZXZlbnQgbmV4dF9laWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgICgqIHRoZXJlIGlzIGFuIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgIGlmIG5vdCAoQi5QQi5jb21wYXRpYmxlIG5leHRfYWN0aW9uIHByZWRpY2F0ZV92YWx1ZSkgdGhlbiAoXG4gICAgICAgICAgICAoKiB0aGUgYWN0aW9uIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgICAgIEIuUEIuZGlzanVuY3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgMTApOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBuZXh0IGV2ZW50IGlzIGtlcHRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYW4gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBuZXh0X2FjdGlvblxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJUaGUgdmFsdWUgXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiIGlzIHByb3BhZ2F0ZWQgYWZ0ZXIgdGhlIG5leHQgZXZlbnRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDEwIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgKCogdGhlcmUgaXMgYW4gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB0aGUgYWN0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgam9pbiBvZiB0aGUgdmFsdWUgYW5kIHRoZSBhY3Rpb24gYWZ0ZXIgdGhlIG5leHQgZXZlbnQqKVxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYWZ0ZXJcbiAgICAgICAgICAgICAgICAgIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICgqdGhlIGFjdGlvbiBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgICAgIEIuUEIuZGlzanVuY3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXRjaCBCLlBCLmlzX3Vua25vd24gbmV4dF90ZXN0IHdpdGhcbiAgICAgICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBubyB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSAxMSk6XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIG5vIHRlc3QsIGJ1dCB0aGVyZSBpcyBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0X2FjdGlvblxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiVGhlIHZhbHVlIFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiIGlzIHByb3BhZ2F0ZWQgYWZ0ZXIgdGhlIG5leHQgZXZlbnRcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAxMSBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBldmVudCBpcyBwbGF5ZWQgb3Igbm90ICopXG4gICAgICAgICAgICAgICgqIHRoZXJlIGlzIG5vIHRlc3QgaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgKCogdGhlcmUgaXMgYW4gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICgqIHRoZSBhY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIGpvaW4gb2YgdGhlIHZhbHVlIGFuZCB0aGUgYWN0aW9uIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYWZ0ZXJcbiAgICAgICAgICAgICAgICAgICAgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZSlcbiAgICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIG5leHRfdGVzdCBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDEyKTpcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIG5leHQgZXZlbnQgaXMga2VwdFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBhIHRlc3QsIGJ1dCB0aGVyZSBpcyBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGUgdmFsdWUgXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiBpcyBwcm9wYWdhdGVkIGFmdGVyIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDEyXG4gICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBldmVudCBpcyBwbGF5ZWQgb3Igbm90ICopXG4gICAgICAgICAgICAgICAgKCogdGhlcmUgaXMgYSB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICAgKCogdGhlcmUgaXMgYW4gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICgqIHRoZSBhY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgam9pbiBvZiB0aGUgdmFsdWUgYW5kIHRoZSBhY3Rpb24gYWZ0ZXIgdGhlIG5leHQgZXZlbnQqKVxuICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2FmdGVyXG4gICAgICAgICAgICAgICAgICAgICAgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgMTMpOlwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGEgdGVzdCwgYnV0IHRoZXJlIGlzIGFuIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF90ZXN0XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0X2FjdGlvblxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk5leHQgZXZlbnQgKCVpKSBpcyBkaXNjYXJkZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuaW50X29mX3N0ZXBfaWQgbmV4dF9laWQpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAxM1xuICAgICAgICAgICAgICAgICAgICBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZXJlIGlzIGEgdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZXJlIGlzIGFuIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAgICAgKCogd2UgZGlzY2FyZCB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgRGlzY2FyZF9ldmVudCBuZXh0X2VpZCA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKSkpXG5cbiAgbGV0IHJlYyBsYXN0X2NoYW5jZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBwcmVkaWNhdGVfdmFsdWUgZXZlbnRfY2FzZV9hZGRyZXNzID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sID1cbiAgICAgIEIuZXhpc3RfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIGluXG4gICAgbWF0Y2ggYm9vbCB3aXRoXG4gICAgfCBTb21lIGZhbHNlIC0+IGVycm9yLCBmYWxzZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9zZWlkLCBfZWlkLCBfdGVzdCwgYWN0aW9uKSA9XG4gICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICBpblxuICAgICAgaWYgQi5QQi5pc191bmtub3duIGFjdGlvbiB0aGVuIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmV2aWV3X2Nhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfY2FzZV92YWx1ZSA9XG4gICAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJldmlld19jYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgcHJldmlld19jYXNlX3ZhbHVlXG4gICAgICAgIGluXG4gICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICAgICAgICBCLmlzX2JvdW5kYXJ5IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBib29sIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va191cF9jYXNlIDEgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbm90IChCLlBCLmlzX3VuZGVmaW5lZCBwcmVkaWNhdGVfdmFsdWUpLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgbGFzdF9jaGFuY2VfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWUgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va191cF9jYXNlIDIgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCB0cnVlLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICApXG4gICAgICApIGVsc2UgaWYgQi5QQi5tb3JlX3JlZmluZWQgYWN0aW9uIHByZWRpY2F0ZV92YWx1ZSB0aGVuXG4gICAgICAgIGVycm9yLCBmYWxzZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9sb29rX3VwX2Nhc2UgMyBsb2dfaW5mbyBpblxuICAgICAgICBlcnJvciwgdHJ1ZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIClcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfc2VpZCwgX2VpZCwgX3Rlc3QsIGFjdGlvbikgPVxuICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGlmIEIuUEIubW9yZV9yZWZpbmVkIGFjdGlvbiBwcmVkaWNhdGVfdmFsdWUgdGhlblxuICAgICAgICBlcnJvciwgZmFsc2UsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmV2aWV3X2Nhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfY2FzZV92YWx1ZSA9XG4gICAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJldmlld19jYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgcHJldmlld19jYXNlX3ZhbHVlXG4gICAgICAgIGluXG4gICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSBwcmVkaWNhdGVfdmFsdWUgdGhlblxuICAgICAgICAgIGxhc3RfY2hhbmNlX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZSBwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va191cF9jYXNlIDQgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCB0cnVlLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICApXG4gICAgICApXG5cbiAgbGV0IGxhc3RfY2hhbmNlX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcHJlZGljYXRlX3ZhbHVlXG4gICAgICBhZGRyZXNzID1cbiAgICBpZiBCLlBCLmlzX3Vua25vd24gcHJlZGljYXRlX3ZhbHVlIHRoZW5cbiAgICAgIGVycm9yLCBmYWxzZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICBlbHNlXG4gICAgICBsYXN0X2NoYW5jZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICBhZGRyZXNzXG5cbiAgbGV0IGxhc3RfY2hhbmNlX3VwID1cbiAgICBpZiBsb29rX3VwX2Zvcl9iZXR0ZXJfY3V0IHRoZW5cbiAgICAgIGxhc3RfY2hhbmNlX3VwXG4gICAgZWxzZVxuICAgICAgZnVuIF8gXyBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIF8gXyAtPlxuICAgIGVycm9yLCBmYWxzZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgcHJvcGFnYXRlX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzcyBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sID1cbiAgICAgIEIuZXhpc3RfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIGluXG4gICAgbWF0Y2ggYm9vbCB3aXRoXG4gICAgfCBTb21lIGZhbHNlIC0+XG4gICAgICAoKiB0aGUgY2FzZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGJsYWNrYm9hcmQsIG5vdGhpbmcgdG8gYmUgZG9uZSAqKVxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIEIuc3VjY2VzcylcbiAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgKCogd2Uga25vdyB0aGF0IHRoZSBwYWlyICh0ZXN0L2FjdGlvbikgaGFzIGJlZW4gZXhlY3V0ZWQgKilcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfc2VpZCwgX2VpZCwgdGVzdCwgYWN0aW9uKSA9XG4gICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICBpblxuICAgICAgbGV0IGNhc2VfYWRkcmVzcyA9XG4gICAgICAgIEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlX3ZhbHVlID1cbiAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgY2FzZV92YWx1ZVxuICAgICAgaW5cbiAgICAgIGlmIEIuUEIuaXNfdW5rbm93biBhY3Rpb24gdGhlblxuICAgICAgICAoKiBubyBhY3Rpb24sIHdlIGtlZXAgb24gcHJvcGFnYXRpbmcgd2l0aCB0aGUgY29uam9uY3Rpb24gb2YgdGhlIHRlc3Qgb2YgdGhlIHZhbHVlICopXG4gICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSB0ZXN0IHByZWRpY2F0ZV92YWx1ZSB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBuZXdfdmFsdWUgPVxuICAgICAgICAgICAgQi5QQi5jb25qIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRlc3QgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDEpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJUaGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsIHRoZXJlIGlzIG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUmVmaW5lIGJlZm9yZSB0aGUgZXZlbnQgKGJlZm9yZSkgd2l0aCB0aGUgc3RhdGUgXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBuZXdfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9iZWZvcmUgKGV2ZW50X2Nhc2VfYWRkcmVzcywgbmV3X3ZhbHVlKVxuICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMik6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlRoZSBldmVudCBiZWZvcmUgaXMga2VwdCwgdGhlcmUgaXMgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQ3V0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAyIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIEIuZmFpbClcbiAgICAgICAgKVxuICAgICAgZWxzZSBpZiBCLlBCLm1vcmVfcmVmaW5lZCBhY3Rpb24gcHJlZGljYXRlX3ZhbHVlIHRoZW5cbiAgICAgICAgaWYgQi5QQi5pc191bmRlZmluZWQgdGVzdCB0aGVuIChcbiAgICAgICAgICAoKnRoZSB3aXJlIGhhcyBqdXN0IGJlIGNyZWF0ZWQsIG5vdGhpbmcgdG8gYmUgZG9uZSAqKVxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMyk6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlRoZSBldmVudCBiZWZvcmUgaXMga2VwdCwgdGhlcmUgaXMgYW4gYWN0aW9uIGFuZCBhIHRlc3RcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJOb3RoaW5nIHRvIGJlIGRvbmVcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDMgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgQi5zdWNjZXNzKSApXG4gICAgICAgICkgZWxzZSBpZlxuICAgICAgICAgICAgKCp3ZSBrbm93IHRoYXQgdGhlIHdpcmUgd2FzIGRlZmluZWQgYmVmb3JlKilcbiAgICAgICAgICAgIEIuUEIuY29tcGF0aWJsZSB0ZXN0IEIuUEIuZGVmaW5lZFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0YXRlID1cbiAgICAgICAgICAgIEIuUEIuY29uaiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0ZXN0IEIuUEIuZGVmaW5lZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSA0KTpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiVGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LCB0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlJlZmluZSBiZWZvcmUgdGhlIGV2ZW50IChiZWZvcmUpIHdpdGggdGhlIHN0YXRlIFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgc3RhdGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDQgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAoZXZlbnRfY2FzZV9hZGRyZXNzLCBzdGF0ZSlcbiAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDUpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJUaGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQ3V0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCA1IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIEIuZmFpbClcbiAgICAgICAgKVxuICAgICAgZWxzZSAoXG4gICAgICAgICgqVGhlIGV2ZW50IGhhcyB0byBiZSBkaXNjYXJkZWQgd2hpY2ggaXMgYWJzdXJkICopXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgNik6XCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJUaGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsIHRoZXJlIGlzIGFuIGFjdGlvblwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJDdXRcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICBpblxuICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgNiBsb2dfaW5mb1xuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIEIuZmFpbClcbiAgICAgIClcbiAgICB8IE5vbmUgLT5cbiAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIHBhaXIgKHRlc3QvYWN0aW9uKSBoYXMgYmVlbiBleGVjdXRlZCAqKVxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9zZWlkLCBlaWQsIHRlc3QsIGFjdGlvbikgPVxuICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGxldCBjYXNlX2FkZHJlc3MgPVxuICAgICAgICBCLmNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIGNhc2VfdmFsdWVcbiAgICAgIGluXG4gICAgICAobWF0Y2ggQi5QQi5pc191bmtub3duIGFjdGlvbiB3aXRoXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgKG1hdGNoIEIuUEIuaXNfdW5rbm93biB0ZXN0IHdpdGhcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSA3KTpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBuZWl0aGVyIGEgdGVzdCwgbm9yICBhY3Rpb24gXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDcgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAoZXZlbnRfY2FzZV9hZGRyZXNzLCBwcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgdGVzdCBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDgpOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBhICB0ZXN0LCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlJlZmluZSBiZWZvcmUgdGhlIGV2ZW50IChiZWZvcmUpIHdpdGggdGhlIHN0YXRlIFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCA4IGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChldmVudF9jYXNlX2FkZHJlc3MsIHByZWRpY2F0ZV92YWx1ZSlcbiAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSA5KTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGEgIHRlc3QsIGJ1dCBubyBhY3Rpb25cIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiRXZlbnQgYmVmb3JlICglaSkgaXMgZGlzY2FyZGVkXCIgKEIuUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCA5IGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBEaXNjYXJkX2V2ZW50IGVpZCA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICApKVxuICAgICAgfCBmYWxzZSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgQi5mb2xsb3dfcG9pbnRlcl91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHByZXZpZXdfY2FzZV9hZGRyZXNzID1cbiAgICAgICAgICBCLmNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19jYXNlX3ZhbHVlID1cbiAgICAgICAgICBCLmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmV2aWV3X2Nhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICBwcmV2aWV3X2Nhc2VfdmFsdWVcbiAgICAgICAgaW5cbiAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlIHByZWRpY2F0ZV92YWx1ZSB0aGVuXG4gICAgICAgICAgaWYgQi5QQi5tb3JlX3JlZmluZWQgYWN0aW9uIHByZWRpY2F0ZV92YWx1ZSB0aGVuIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICBsYXN0X2NoYW5jZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxMCk6XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIiB0aGVyZSBpcyBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyBpcyB0aGUgb25seSBvcHBvcnR1bml0eSB0byBzZXQgdXAgdGhlIHdpcmUsIHdlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIGtlZXAgdGhlIGV2ZW50XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDEwIGxvZ19pbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgS2VlcF9ldmVudCBlaWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgbWF0Y2ggQi5QQi5pc191bmtub3duIHRlc3Qgd2l0aFxuICAgICAgICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBuZXdfcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgICAgICAgICAgIEIuUEIuZGlzanVuY3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGVzdFxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTEpOlwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYW4gYWN0aW9uLCBidXQgbm8gdGVzdFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlJlZmluZSBiZWZvcmUgdGhlIGV2ZW50IChiZWZvcmUpIHdpdGggdGhlIHN0YXRlIFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld19wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxMSBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChldmVudF9jYXNlX2FkZHJlc3MsIG5ld19wcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgdGVzdCBwcmVkaWNhdGVfdmFsdWUgdGhlblxuICAgICAgICAgICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHRlc3QgcHJldmlld19wcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5ld190ZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLmNvbmogcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld19wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbmV3X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5kaXNqdW5jdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBuZXdfdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTIpOlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgdGhlcmUgaXMgYW4gYWN0aW9uIGFuZCBhIHRlc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IFRlc3Q6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlJlZmluZSBiZWZvcmUgdGhlIGV2ZW50IChiZWZvcmUpIHdpdGggdGhlIHN0YXRlIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxMlxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudF9jYXNlX2FkZHJlc3MsIG5ld19wcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDEzKTpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNjYXJkIHRoZSBldmVudCBiZWZvcmUgKCVpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMTNcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgRGlzY2FyZF9ldmVudCBlaWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldicgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLmRpc2p1bmN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlIHRlc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDE0KTpcIlxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OlwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2J1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxNFxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChldmVudF9jYXNlX2FkZHJlc3MsIHByZXYnKVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxNSk6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIgdGhlcmUgaXMgYW4gYWN0aW9uIGFuZCBtYXliZSBhIHRlc3RcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIkRpc2NhcmQgdGhlIGV2ZW50IGJlZm9yZSAoJWkpXCIgKEIuUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxNSBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgRGlzY2FyZF9ldmVudCBlaWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgKVxuICAgICAgICBlbHNlIGlmIEIuUEIubW9yZV9yZWZpbmVkIGFjdGlvbiBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxNik6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJQcmV2aW91cyB3aXJlIHN0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJTZWxlY3QgdGhlIGV2ZW50IGJlZm9yZSAoJWkpXCIgKEIuUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDE2IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIEtlZXBfZXZlbnQgZWlkIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxNyk6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJDdXRcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDE3IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIEIuZmFpbClcbiAgICAgICAgKSlcblxuICBsZXQgcHJvcGFnYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hlY2tcbiAgICAgIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3QgPVxuICAgIG1hdGNoIGNoZWNrIHdpdGhcbiAgICB8IFByb3BhZ2F0ZV91cCB4IC0+XG4gICAgICBwcm9wYWdhdGVfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB4XG4gICAgICAgIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICB8IFByb3BhZ2F0ZV9kb3duIHggLT5cbiAgICAgIHByb3BhZ2F0ZV9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgeFxuICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG5cbiAgbGV0IGN1dF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGNhc2VcbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcG9pbnRlcl9uZXh0ID1cbiAgICAgIEIuZm9sbG93X3BvaW50ZXJfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfcHJldmlvdXMgPVxuICAgICAgQi5mb2xsb3dfcG9pbnRlcl91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgICgqIHdlIHJlbW92ZSB0aGUgY2FzZSAqKVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCByZXN1bHQpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChCLmV4aXN0IGNhc2UpXG4gICAgICAgIChCLmJvb2xlYW4gKFNvbWUgZmFsc2UpKSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBCLmlzX2ZhaWxlZCByZXN1bHQgdGhlblxuICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW10sIFtdKSwgcmVzdWx0XG4gICAgZWxzZSBpZiBCLmlzX2lnbm9yZWQgcmVzdWx0IHRoZW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSwgcmVzdWx0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAoQi5uX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBjYXNlKVxuICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICAoKiB3ZSBwbHVnIHBvaW50ZXIgbmV4dCBvZiB0aGUgcHJldmlvdXMgZXZlbnQgKilcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBCLm92ZXJ3cml0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIChCLnBvaW50ZXJfdG9fbmV4dCBwb2ludGVyX3ByZXZpb3VzKVxuICAgICAgICAgIChCLnBvaW50ZXIgcG9pbnRlcl9uZXh0KSBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgKCogd2UgcGx1ZyBwb2ludGVyIHByZXZpb3VzIG9mIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgQi5vdmVyd3JpdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAoQi5wb2ludGVyX3RvX3ByZXZpb3VzIHBvaW50ZXJfbmV4dClcbiAgICAgICAgICAoQi5wb2ludGVyIHBvaW50ZXJfcHJldmlvdXMpXG4gICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSwgcmVzdWx0XG4gICAgKVxuXG4gIGxldCBsb29rX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcm9wYWdhdGVfbGlzdCBjYXNlXG4gICAgICA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF8sIF8sIF8sIGFjdGlvbikgPVxuICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgIGluXG4gICAgaWYgQi5QQi5pc191bmtub3duIGFjdGlvbiB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByb3BhZ2F0ZV9saXN0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgbGlzdF92YWx1ZXMgPSBCLlBCLndlYWtlbmluZyBhY3Rpb24gaW5cbiAgICAgIGxldCBwcm9wYWdhdGVfbGlzdCwgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChwcm9wYWdhdGVfbGlzdCwgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSB2YWx1ZSAtPlxuICAgICAgICAgICAgbGV0IHJlYyBhdXggY2FzZSBib29sIGVycm9yIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgbGV0IGNhID0gQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIGNhc2UgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2EgYmxhY2tib2FyZFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGNhc2VfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgaWYgQi5QQi5tb3JlX3JlZmluZWQgcHJlZGljYXRlX3ZhbHVlIHZhbHVlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfbmV4dCA9XG4gICAgICAgICAgICAgICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBjYXNlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va19kb3duX2Nhc2UgMSBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCBQcm9wYWdhdGVfdXAgcG9pbnRlcl9uZXh0IDo6IHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgKVxuICAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5leHRfY2FzZSA9XG4gICAgICAgICAgICAgICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBjYXNlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBleGlzdCA9XG4gICAgICAgICAgICAgICAgICBCLmV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICBuZXh0X2Nhc2VcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGV4aXN0IHdpdGhcbiAgICAgICAgICAgICAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va19kb3duX2Nhc2UgMiBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICB8IFNvbWUgZmFsc2UgLT4gYXV4IG5leHRfY2FzZSBib29sIGVycm9yIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoXywgXywgXywgbmV4dF9hY3Rpb24pID1cbiAgICAgICAgICAgICAgICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0X2Nhc2VcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBCLlBCLm1vcmVfcmVmaW5lZCBuZXh0X2FjdGlvbiB2YWx1ZSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfZG93bl9jYXNlIDMgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgYXV4IG5leHRfY2FzZSB0cnVlIGVycm9yIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGF1eCBuZXh0X2Nhc2UgYm9vbCBlcnJvciBsb2dfaW5mb1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYXV4IGNhc2UgZmFsc2UgZXJyb3IgbG9nX2luZm8pXG4gICAgICAgICAgKHByb3BhZ2F0ZV9saXN0LCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgbGlzdF92YWx1ZXNcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByb3BhZ2F0ZV9saXN0XG4gICAgKVxuXG4gIGxldCBsb29rX2Rvd24gPVxuICAgIGlmIGxvb2tfZG93bl9mb3JfYmV0dGVyX2N1dCB0aGVuXG4gICAgICBsb29rX2Rvd25cbiAgICBlbHNlXG4gICAgICBmdW4gXyBfIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdCBfIC0+XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBsaXN0XG5cbiAgbGV0IHJlZmluZV92YWx1ZV9hZnRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3NcbiAgICAgIHZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3QgPVxuICAgIGxldCBjYXNlX2FkZHJlc3MgPSBCLnZhbHVlX2FmdGVyIGFkZHJlc3MgaW5cbiAgICBsZXQgc3RhdGUgPSBCLnN0YXRlIHZhbHVlIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHJlc3VsdCkgPVxuICAgICAgQi5yZWZpbmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIHN0YXRlIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIEIuaXNfaWdub3JlZCByZXN1bHQgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHJlc3VsdClcbiAgICBlbHNlIGlmIEIuaXNfZmFpbGVkIHJlc3VsdCB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIHJlc3VsdClcbiAgICBlbHNlIChcbiAgICAgIGxldCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgICAgIFByb3BhZ2F0ZV91cCBhZGRyZXNzIDo6IFByb3BhZ2F0ZV9kb3duIGFkZHJlc3MgOjogcHJvcGFnYXRlX2xpc3RcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgcmVzdWx0KVxuICAgIClcblxuICBsZXQgcmVmaW5lX3ZhbHVlX2JlZm9yZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3NcbiAgICAgIHZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3QgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfcHJldmlvdXMgPVxuICAgICAgQi5mb2xsb3dfcG9pbnRlcl91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3NcbiAgICBpblxuICAgIHJlZmluZV92YWx1ZV9hZnRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBwb2ludGVyX3ByZXZpb3VzIHZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcblxuICBsZXQgZGlzY2FyZF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGNhc2VcbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcG9pbnRlcl9uZXh0ID1cbiAgICAgIEIuZm9sbG93X3BvaW50ZXJfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfcHJldmlvdXMgPVxuICAgICAgQi5mb2xsb3dfcG9pbnRlcl91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgICgqIHdlIHJlbW92ZSB0aGUgY2FzZSAqKVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCByZXN1bHQpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChCLmV4aXN0IGNhc2UpXG4gICAgICAgIChCLmJvb2xlYW4gKFNvbWUgZmFsc2UpKSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBCLmlzX2ZhaWxlZCByZXN1bHQgdGhlblxuICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW10sIFtdKSwgcmVzdWx0XG4gICAgZWxzZSBpZiBCLmlzX2lnbm9yZWQgcmVzdWx0IHRoZW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSwgcmVzdWx0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2EgPSBCLmNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgY2FzZSBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgY2FzZV92YWx1ZVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBfLCByZXN1bHQnKSA9XG4gICAgICAgIHJlZmluZV92YWx1ZV9hZnRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgcG9pbnRlcl9wcmV2aW91cyBwcmVkaWNhdGVfdmFsdWUgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuICAgICAgaW5cbiAgICAgIGlmIEIuaXNfZmFpbGVkIHJlc3VsdCcgdGhlblxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbXSwgW10pLCByZXN1bHQnXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIChCLm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIGNhc2UpXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfLCBldmVudCwgXywgXykgPVxuICAgICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGV2ZWwgPVxuICAgICAgICAgIEIubGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBldmVudFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBCLmRlYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgKEIubl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgY2FzZSBsZXZlbClcbiAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgKCogd2UgcGx1ZyBwb2ludGVyIG5leHQgb2YgdGhlIHByZXZpb3VzIGV2ZW50ICopXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIEIub3ZlcndyaXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAoQi5wb2ludGVyX3RvX25leHQgcG9pbnRlcl9wcmV2aW91cylcbiAgICAgICAgICAgIChCLnBvaW50ZXIgcG9pbnRlcl9uZXh0KSBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgICgqIHdlIHBsdWcgcG9pbnRlciBwcmV2aW91cyBvZiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBCLm92ZXJ3cml0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgKEIucG9pbnRlcl90b19wcmV2aW91cyBwb2ludGVyX25leHQpXG4gICAgICAgICAgICAoQi5wb2ludGVyIHBvaW50ZXJfcHJldmlvdXMpXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgICAgICAgUHJvcGFnYXRlX3VwIHBvaW50ZXJfbmV4dCA6OiBQcm9wYWdhdGVfZG93biBwb2ludGVyX3ByZXZpb3VzXG4gICAgICAgICAgOjogUHJvcGFnYXRlX3VwIHBvaW50ZXJfcHJldmlvdXMgOjogcHJvcGFnYXRlX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJvcGFnYXRlX2xpc3QgPVxuICAgICAgICAgIGxvb2tfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHByb3BhZ2F0ZV9saXN0XG4gICAgICAgICAgICBjYXNlXG4gICAgICAgIGluXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSwgcmVzdWx0XG4gICAgICApXG4gICAgKVxuXG4gIGxldCBrZWVwX2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgY2FzZVxuICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QpID1cbiAgICAoKiB3ZSBrZWVwIHRoZSBjYXNlICopXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHJlc3VsdCkgPVxuICAgICAgQi5yZWZpbmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgKEIuZXhpc3QgY2FzZSlcbiAgICAgICAgKEIuYm9vbGVhbiAoU29tZSB0cnVlKSkgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgQi5pc19mYWlsZWQgcmVzdWx0IHRoZW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdLCBbXSksIHJlc3VsdFxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHJlc3VsdCB0aGVuXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksIHJlc3VsdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcG9pbnRlcl9wcmV2aW91cyA9XG4gICAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgX3BvaW50ZXJfbmV4dCA9XG4gICAgICAgIEIuZm9sbG93X3BvaW50ZXJfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX3NlaWQsIGVpZCwgdGVzdCwgYWN0aW9uKSA9XG4gICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgXywgcmVzdWx0JykgPVxuICAgICAgICByZWZpbmVfdmFsdWVfYmVmb3JlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgICAgIHRlc3QgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBfLCByZXN1bHQnJykgPVxuICAgICAgICByZWZpbmVfdmFsdWVfYWZ0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICAgICAgYWN0aW9uIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICAgIGluXG4gICAgICBpZiBCLmlzX2ZhaWxlZCByZXN1bHQnIHx8IEIuaXNfZmFpbGVkIHJlc3VsdCcnIHRoZW5cbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW10sIFtdKSwgQi5mYWlsXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIChCLm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIGNhc2UpXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxldmVsID1cbiAgICAgICAgICBCLmxldmVsX29mX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZWlkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAoQi5uX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCBjYXNlIGxldmVsKVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgcHJvcGFnYXRlX2xpc3QgPVxuICAgICAgICAgIFByb3BhZ2F0ZV91cCBjYXNlIDo6IFByb3BhZ2F0ZV9kb3duIGNhc2VcbiAgICAgICAgICA6OiBQcm9wYWdhdGVfZG93biBwb2ludGVyX3ByZXZpb3VzIDo6IFByb3BhZ2F0ZV91cCBwb2ludGVyX3ByZXZpb3VzXG4gICAgICAgICAgOjogcHJvcGFnYXRlX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QpLCByZXN1bHRcbiAgICAgIClcbiAgICApXG5cbiAgbGV0IGtlZXBfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzdGVwX2lkXG4gICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3VjY2VzcykgPVxuICAgICAgQi5yZWZpbmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgKEIuaXNfZXhpc3RfZXZlbnQgc3RlcF9pZClcbiAgICAgICAgKEIuYm9vbGVhbiAoU29tZSB0cnVlKSkgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgQi5pc19mYWlsZWQgc3VjY2VzcyB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIHN1Y2Nlc3MpXG4gICAgZWxzZSBpZiBCLmlzX2lnbm9yZWQgc3VjY2VzcyB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgc3VjY2VzcylcbiAgICBlbHNlIChcbiAgICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX3NlbGVjdGVkX2V2ZW50cyBsb2dfaW5mbyBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiV2Uga2VlcCBldmVudCAlaVwiXG4gICAgICAgICAgICAgIChCLlBCLmludF9vZl9zdGVwX2lkIHN0ZXBfaWQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgQi5uX3VucmVzb2x2ZWRfZXZlbnRzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgQi5jYXNlX2xpc3Rfb2ZfZWlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgaW5cbiAgICAgIGxldCByZWMgYXV4IGwgeCBzdWNjZXNzID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4geCwgc3VjY2Vzc1xuICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgIGxldCB5LCBzdWNjZXNzMiA9IGtlZXBfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciB0IHggaW5cbiAgICAgICAgICBpZiBCLmlzX2lnbm9yZWQgc3VjY2VzczIgdGhlblxuICAgICAgICAgICAgYXV4IHEgeSBzdWNjZXNzXG4gICAgICAgICAgZWxzZSBpZiBCLmlzX3N1Y2NlZWRlZCBzdWNjZXNzMiB0aGVuXG4gICAgICAgICAgICBhdXggcSB5IHN1Y2Nlc3MyXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgeSwgc3VjY2VzczJcbiAgICAgIGluXG4gICAgICBsZXQgKCAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksXG4gICAgICAgICAgICBzdWNjZXNzICkgPVxuICAgICAgICBhdXggbGlzdFxuICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KVxuICAgICAgICAgIEIuaWdub3JlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHN1Y2Nlc3MpXG4gICAgKVxuXG4gIGxldCBnZW5fZXZlbnQgZl9jYXNlIGcgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzdGVwX2lkXG4gICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3VjY2VzcykgPVxuICAgICAgQi5yZWZpbmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgKEIuaXNfZXhpc3RfZXZlbnQgc3RlcF9pZClcbiAgICAgICAgKEIuYm9vbGVhbiAoU29tZSBmYWxzZSkpIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIEIuaXNfZmFpbGVkIHN1Y2Nlc3MgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBzdWNjZXNzKVxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHN1Y2Nlc3MgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHN1Y2Nlc3MpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJXZSByZW1vdmUgZXZlbnQgJWlcIlxuICAgICAgICAgICAgICAoQi5QQi5pbnRfb2Zfc3RlcF9pZCBzdGVwX2lkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGxvZ19pbmZvID0gZyBsb2dfaW5mbyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIEIubl91bnJlc29sdmVkX2V2ZW50cyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGV2ZWwgPVxuICAgICAgICBCLmxldmVsX29mX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBCLmRlYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIChCLm5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgbGV2ZWwpXG4gICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICBCLmNhc2VfbGlzdF9vZl9laWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzdGVwX2lkXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBhdXggbCB4IHN1Y2Nlc3MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiB4LCBzdWNjZXNzXG4gICAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgICAgbGV0IHksIHN1Y2Nlc3MyID0gZl9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIHQgeCBpblxuICAgICAgICAgIGlmIEIuaXNfaWdub3JlZCBzdWNjZXNzMiB0aGVuXG4gICAgICAgICAgICBhdXggcSB5IHN1Y2Nlc3NcbiAgICAgICAgICBlbHNlIGlmIEIuaXNfc3VjY2VlZGVkIHN1Y2Nlc3MyIHRoZW5cbiAgICAgICAgICAgIGF1eCBxIHkgc3VjY2VzczJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB5LCBzdWNjZXNzMlxuICAgICAgaW5cbiAgICAgIGxldCAoIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSxcbiAgICAgICAgICAgIHN1Y2Nlc3MgKSA9XG4gICAgICAgIGF1eCBsaXN0XG4gICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QpXG4gICAgICAgICAgQi5pZ25vcmVcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgc3VjY2VzcylcbiAgICApXG5cbiAgbGV0IGN1dF9ldmVudCA9IGdlbl9ldmVudCBjdXRfY2FzZSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19jdXRfZXZlbnRzXG5cbiAgbGV0IGRpc2NhcmRfZXZlbnQgPVxuICAgIGdlbl9ldmVudCBkaXNjYXJkX2Nhc2UgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfcmVtb3ZlZF9ldmVudHNcblxuICBsZXQgYXBwbHlfaW5zdHJ1Y3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpbnN0cnVjdGlvblxuICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgbWF0Y2ggaW5zdHJ1Y3Rpb24gd2l0aFxuICAgIHwgS2VlcF9ldmVudCBzdGVwX2lkIC0+XG4gICAgICBrZWVwX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgfCBDdXRfZXZlbnQgc3RlcF9pZCAtPlxuICAgICAgY3V0X2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgfCBEaXNjYXJkX2V2ZW50IHN0ZXBfaWQgLT5cbiAgICAgIGRpc2NhcmRfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzdGVwX2lkXG4gICAgICAgIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICB8IFJlZmluZV92YWx1ZV9hZnRlciAoYWRkcmVzcywgdmFsdWUpIC0+XG4gICAgICByZWZpbmVfdmFsdWVfYWZ0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgICAgIHZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICB8IFJlZmluZV92YWx1ZV9iZWZvcmUgKGFkZHJlc3MsIHZhbHVlKSAtPlxuICAgICAgcmVmaW5lX3ZhbHVlX2JlZm9yZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3NcbiAgICAgICAgdmFsdWUgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuICAgIHwgU2tpcCAtPlxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIEIuaWdub3JlKVxuXG4gIGxldCBfa2VlcCB4ID0gS2VlcF9ldmVudCB4XG5lbmRcbiIsIigqKlxuICAqIGdlbmVyaWNfYnJhbmNoX2FuZF9jdXBfc29sdmVyLm1sXG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDI5LzA4LzIwMTFcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMTkvMDcvMjAxM1xuICAqICpcbiAgKiBTb21lIHBhcmFtZXRlcnMgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBsb2dfc3RlcHMgPSBmYWxzZVxuXG5tb2R1bGUgdHlwZSBTb2x2ZXIgPSBzaWdcbiAgbW9kdWxlIFBIIDogUHJvcGFnYXRpb25faGV1cmlzdGljcy5CbGFja2JvYXJkX3dpdGhfaGV1cmlzdGljXG5cbiAgdmFsIGNvbXByZXNzIDpcbiAgICAoIFBILkIuYmxhY2tib2FyZCxcbiAgICAgIFBILnVwZGF0ZV9vcmRlciBsaXN0LFxuICAgICAgUEguQi5ibGFja2JvYXJkICogUEguQi5hc3NpZ25fcmVzdWx0ICogUEguQi5yZXN1bHQgbGlzdCApXG4gICAgUEguQi5QQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGRldGVjdF9pbmRlcGVuZGVudF9ldmVudHMgOlxuICAgICggUEguQi5ibGFja2JvYXJkLFxuICAgICAgUEguQi5QQi5zdGVwX2lkIGxpc3QsXG4gICAgICBQSC5CLlBCLnN0ZXBfaWQgbGlzdCApXG4gICAgUEguQi5QQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGZpbHRlciA6XG4gICAgKCBQSC5CLmJsYWNrYm9hcmQsXG4gICAgICBQSC5CLlBCLnN0ZXBfaWQgbGlzdCxcbiAgICAgIFBILkIuYmxhY2tib2FyZCApXG4gICAgUEguQi5QQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIHN1YiA6IChUcmFjZS50LCBQSC5CLmJsYWNrYm9hcmQpIFBILkIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG4gIHZhbCBjbGVhbiA6IChQSC5CLmJsYWNrYm9hcmQsIFBILkIuYmxhY2tib2FyZCkgUEguQi5QQi5DSS5Qby5LLkgudW5hcnlcblxuICB2YWwgdHJhbnNsYXRlIDpcbiAgICAoIFBILkIuYmxhY2tib2FyZCxcbiAgICAgIFBILkIuUEIuc3RlcF9pZCBsaXN0LFxuICAgICAgVHJhY2UudCAqIFBILkIucmVzdWx0IClcbiAgICBQSC5CLlBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgdHJhbnNsYXRlX3Jlc3VsdCA6IFBILkIucmVzdWx0IC0+IFRyYWNlLnRcbmVuZFxuXG5tb2R1bGUgU29sdmVyID0gc3RydWN0XG4gIG1vZHVsZSBQSCA9IFByb3BhZ2F0aW9uX2hldXJpc3RpY3MuUHJvcGFnYXRpb25faGV1cmlzdGljXG4gICgqQmxhY2tib2FyZF93aXRoX2hldXJpc3RpYyopXG5cbiAgbGV0IHdhcm4gcGFyYW1ldGVyIGVycm9yIHBvcyA/KG1lc3NhZ2UgPSBcIlwiKSBleG4gZGVmYXVsdCA9XG4gICAgRXhjZXB0aW9uLndhcm5cbiAgICAgIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIHBvcyB+bWVzc2FnZSBleG4gZGVmYXVsdFxuXG4gIGxldCBfY29tYmluZV9vdXRwdXQgbzEgbzIgPVxuICAgIGlmIFBILkIuaXNfaWdub3JlZCBvMiB0aGVuXG4gICAgICBvMVxuICAgIGVsc2VcbiAgICAgIG8yXG5cbiAgbGV0IHJlYyBwcm9wYWdhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaW5zdHJ1Y3Rpb25fbGlzdFxuICAgICAgcHJvcGFnYXRlX2xpc3QgYmxhY2tib2FyZCA9XG4gICAgbGV0IGJvb2wsIGxvZ19pbmZvID0gUEguQi50aWNrIGxvZ19pbmZvIGluXG4gICAgbGV0IF8gPVxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuZHVtcF9jb21wbGV0ZV9sb2dcbiAgICAgICAgICAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgbG9nX2luZm9cbiAgICBpblxuICAgIG1hdGNoIGluc3RydWN0aW9uX2xpc3Qgd2l0aFxuICAgIHwgdCA6OiBxIC0+XG4gICAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBhc3NpZ25fcmVzdWx0KSApID1cbiAgICAgICAgUEguYXBwbHlfaW5zdHJ1Y3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB0IHFcbiAgICAgICAgICBwcm9wYWdhdGVfbGlzdFxuICAgICAgaW5cbiAgICAgIGlmIFBILkIuaXNfZmFpbGVkIGFzc2lnbl9yZXN1bHQgdGhlblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBhc3NpZ25fcmVzdWx0KVxuICAgICAgZWxzZVxuICAgICAgICBwcm9wYWdhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaW5zdHJ1Y3Rpb25fbGlzdFxuICAgICAgICAgIHByb3BhZ2F0ZV9saXN0IGJsYWNrYm9hcmRcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggcHJvcGFnYXRlX2xpc3Qgd2l0aFxuICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIGFzc2lnbl9yZXN1bHQpICkgPVxuICAgICAgICAgIFBILnByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHRcbiAgICAgICAgICAgIGluc3RydWN0aW9uX2xpc3QgcVxuICAgICAgICBpblxuICAgICAgICBpZiBQSC5CLmlzX2ZhaWxlZCBhc3NpZ25fcmVzdWx0IHRoZW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBhc3NpZ25fcmVzdWx0KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcHJvcGFnYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGluc3RydWN0aW9uX2xpc3RcbiAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0IGJsYWNrYm9hcmRcbiAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgUEguQi5zdWNjZXNzKSlcblxuICB0eXBlIGNob2ljZXMgPSB7XG4gICAgY3VycmVudDogUEgudXBkYXRlX29yZGVyIGxpc3Q7XG4gICAgc3RhY2s6IFBILnVwZGF0ZV9vcmRlciBsaXN0IGxpc3Q7XG4gIH1cblxuICBsZXQgYnJhbmNoX2Nob2ljZV9saXN0IGNob2ljZV9saXN0ID1cbiAgICB7IGN1cnJlbnQgPSBbXTsgc3RhY2sgPSBjaG9pY2VfbGlzdC5jdXJyZW50IDo6IGNob2ljZV9saXN0LnN0YWNrIH1cblxuICBsZXQgdXBkYXRlX2N1cnJlbnQgY2hvaWNlX2xpc3QgbGlzdCA9IHsgY2hvaWNlX2xpc3Qgd2l0aCBjdXJyZW50ID0gbGlzdCB9XG5cbiAgbGV0IHBvcF9uZXh0X2Nob2ljZSBwYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3Igc3RhY2sgPVxuICAgIG1hdGNoIHN0YWNrLmN1cnJlbnQgd2l0aFxuICAgIHwgdCA6OiBxIC0+IGVycm9yLCAodCwgeyBzdGFjayB3aXRoIGN1cnJlbnQgPSBxIH0pXG4gICAgfCBbXSAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcIkVtcHR5IGNob2ljZSBzdGFja1wiXG4gICAgICAgIChGYWlsdXJlIFwiRW1wdHkgY2hvaWNlIGxpc3QgaW4gcG9wX25leHRfY2hvaWNlXCIpXG4gICAgICAgIChQSC5kdW1teV91cGRhdGVfb3JkZXIsIHN0YWNrKVxuXG4gIGxldCBub19tb3JlX2Nob2ljZSBzdGFjayA9XG4gICAgbWF0Y2ggc3RhY2suY3VycmVudCB3aXRoXG4gICAgfCBbXSAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGJhY2t0cmFjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0ID1cbiAgICBsZXQgcmVjIGJhY2t0cmFja19hdXggbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdCA9XG4gICAgICBtYXRjaCBjaG9pY2VfbGlzdC5jdXJyZW50IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKG1hdGNoIGNob2ljZV9saXN0LnN0YWNrIHdpdGhcbiAgICAgICAgfCBbXSAtPiBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBOb25lKVxuICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgIGxldCBjaG9pY2VfbGlzdCA9IHsgY3VycmVudCA9IHQ7IHN0YWNrID0gcSB9IGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICBQSC5CLnJlc2V0X2xhc3RfYnJhbmNoaW5nIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGJhY2t0cmFja19hdXggbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdClcbiAgICAgIHwgXyAtPiBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBTb21lIGNob2ljZV9saXN0KVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBQSC5CLnJlc2V0X2xhc3RfYnJhbmNoaW5nIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGJhY2t0cmFja19hdXggbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdFxuXG4gIGxldCBlbXB0eV9jaG9pY2VfbGlzdCA9IHsgc3RhY2sgPSBbXTsgY3VycmVudCA9IFtdIH1cblxuICBsZXQgcmVjIHN1Ymxpc3QgbCBsJyA9XG4gICAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIHwgW10sIF8gLT4gdHJ1ZVxuICAgIHwgXywgW10gLT4gZmFsc2VcbiAgICB8IGggOjogdCwgaCcgOjogdCcgd2hlbiBoID0gaCcgLT4gc3VibGlzdCB0IHQnXG4gICAgfCBfLCBfaCcgOjogdCcgLT4gc3VibGlzdCBsIHQnXG5cbiAgbGV0IHNvcnRfc3Rvcmllc19hY2NvcmRpbmdfdG9fbGVuZ3RoIGwgPVxuICAgIExpc3QucmV2X21hcCBmc3RcbiAgICAgIChMaXN0LnNvcnRcbiAgICAgICAgIChmdW4gKF8sIGEpIChfLCBiKSAtPiBjb21wYXJlIGIgYSlcbiAgICAgICAgIChMaXN0LnJldl9tYXAgKGZ1biBhIC0+IGEsIExpc3QubGVuZ3RoIGEpIGwpKVxuXG4gIGxldCBmaWx0ZXJfb3V0X25vbl9taW5pbWFsX3N0b3J5IGwgPVxuICAgIGxldCByZWMgYXV4IHRvX3Zpc2l0IGdvb2RvbmVzID1cbiAgICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgZ29vZG9uZXNcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIGF1eFxuICAgICAgICAgIChMaXN0LmZpbHRlciAoZnVuIHN0b3J5IC0+IG5vdCAoc3VibGlzdCBoIHN0b3J5KSkgdClcbiAgICAgICAgICAoaCA6OiBMaXN0LmZpbHRlciAoZnVuIHN0b3J5IC0+IG5vdCAoc3VibGlzdCBoIHN0b3J5KSkgZ29vZG9uZXMpXG4gICAgaW5cbiAgICBhdXggKHNvcnRfc3Rvcmllc19hY2NvcmRpbmdfdG9fbGVuZ3RoIGwpIFtdXG5cbiAgbGV0IHJlYyBpdGVyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3RcbiAgICAgIHN0b3J5X2xpc3QgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJvb2wgPVxuICAgICAgUEguQi5pc19tYXhpbWFsX3NvbHV0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAoKiBTVUNDRVNTICopXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgUEguQi50cmFuc2xhdGVfYmxhY2tib2FyZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgaWYgUEguQi5QQi5DSS5Qby5LLkguZ2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMgcGFyYW1ldGVyIHRoZW4gKFxuICAgICAgICBsZXQgc3RvcnlfbGlzdCA9IGxpc3QgOjogc3RvcnlfbGlzdCBpblxuICAgICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgICBpZiBjaG9pY2VfbGlzdC5jdXJyZW50IDw+IFtdIHRoZW5cbiAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgXCJJbiBjYXNlIG9mIHN1Y2Nlc3MsIHRoZSBjdXJyZW50IGxpc3Qgb2YgY2hvaWNlcyBzaG91bGQgYmUgXFxcbiAgICAgICAgICAgICAgICAgZW1wdHlcIlxuICAgICAgICAgICAgICAoRmFpbHVyZVxuICAgICAgICAgICAgICAgICBcIkluIGNhc2Ugb2Ygc3VjY2VzcywgdGhlIGN1cnJlbnQgbGlzdCBvZiBjaG9pY2VzIHNob3VsZCBiZSBcXFxuICAgICAgICAgICAgICAgICAgZW1wdHlcIikgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNob2ljZV9saXN0ID1cbiAgICAgICAgICBtYXRjaCBjaG9pY2VfbGlzdC5zdGFjayB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBjaG9pY2VfbGlzdFxuICAgICAgICAgIHwgdCA6OiBxIC0+IHsgY3VycmVudCA9IHQ7IHN0YWNrID0gcSB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBjaG9pY2VfbGlzdCkgPVxuICAgICAgICAgIGJhY2t0cmFjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0XG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGNob2ljZV9saXN0IHdpdGhcbiAgICAgICAgfCBTb21lIGNob2ljZV9saXN0IC0+XG4gICAgICAgICAgaXRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0XG4gICAgICAgICAgICBzdG9yeV9saXN0ICgqKHVwZGF0ZV9maXJzdF9zdG9yeSBmaXJzdF9zdG9yeSBsaXN0KSopXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgIFBILkIuZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIFwiRkFJTFwiICFQcmlvcml0eS5uX3N0b3J5ICFQcmlvcml0eS5uX2JyYW5jaCBibGFja2JvYXJkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdG9yeV9saXN0KVxuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIFsgbGlzdCBdKVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZXJyb3IsIGNob2ljZV9saXN0ID1cbiAgICAgICAgaWYgbm9fbW9yZV9jaG9pY2UgY2hvaWNlX2xpc3QgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBfbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgICAgUEgubmV4dF9jaG9pY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIHVwZGF0ZV9jdXJyZW50IGNob2ljZV9saXN0IGxpc3RcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgZXJyb3IsIGNob2ljZV9saXN0XG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIFBILkIuYnJhbmNoIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIChjaG9pY2UsIGNob2ljZV9saXN0KSA9XG4gICAgICAgIHBvcF9uZXh0X2Nob2ljZSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBjaG9pY2VfbGlzdFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBvdXRwdXQpID1cbiAgICAgICAgcHJvcGFnYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIFsgY2hvaWNlIF0gW10gYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGlmIFBILkIuaXNfZmFpbGVkIG91dHB1dCB0aGVuIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGNob2ljZV9saXN0KSA9XG4gICAgICAgICAgYmFja3RyYWNrIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggY2hvaWNlX2xpc3Qgd2l0aFxuICAgICAgICB8IFNvbWUgY2hvaWNlX2xpc3QgLT5cbiAgICAgICAgICBpdGVyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3RcbiAgICAgICAgICAgIHN0b3J5X2xpc3RcbiAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN0b3J5X2xpc3QpXG4gICAgICApIGVsc2VcbiAgICAgICAgaXRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKGJyYW5jaF9jaG9pY2VfbGlzdCBjaG9pY2VfbGlzdClcbiAgICAgICAgICBzdG9yeV9saXN0XG4gICAgKVxuXG4gIGxldCBkZXRlY3RfaW5kZXBlbmRlbnRfZXZlbnRzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGxpc3RfZWlkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX2JsYWNrYm9hcmQsIGV2ZW50c190b19rZWVwKSA9XG4gICAgICBQSC5CLmN1dCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGxpc3RfZWlkXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50c190b19rZWVwXG5cbiAgbGV0IHRyYW5zbGF0ZSBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdCA9XG4gICAgbGV0IGxpc3QnID1cbiAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAoZnVuIGsgLT5cbiAgICAgICAgICAoIFBILkIuZ2V0X2V2ZW50IGJsYWNrYm9hcmQgKFBILkIuUEIuZGVjX3N0ZXBfaWQgayksXG4gICAgICAgICAgICBQSC5CLnNpZGVfZWZmZWN0X29mX2V2ZW50IGJsYWNrYm9hcmQgKFBILkIuUEIuZGVjX3N0ZXBfaWQgaykgKSlcbiAgICAgICAgKExpc3QucmV2IGxpc3QpXG4gICAgaW5cbiAgICBsZXQgbGlzdCA9IExpc3QucmV2X21hcCBmc3QgKExpc3QucmV2IGxpc3QnKSBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKGxpc3QsIGxpc3QnKVxuXG4gIGxldCB0cmFuc2xhdGVfcmVzdWx0IHJlc3VsdCA9IExpc3QucmV2X21hcCBmc3QgQEAgTGlzdC5yZXYgcmVzdWx0XG5cbiAgbGV0IGNsZWFuIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGxvZ19pbmZvIGJsYWNrYm9hcmQgPVxuICAgIFBILkIucmVzZXRfaW5pdCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBsb2dfaW5mbyBibGFja2JvYXJkXG5cbiAgbGV0IGZpbHRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGV2ZW50c190b19rZWVwID1cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9zdGVwX3RpbWUgbG9nX2luZm8gaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgIFBILkIuYnJhbmNoIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBldmVudHNfdG9fcmVtb3ZlID1cbiAgICAgIGxldCBuX2V2ZW50cyA9IFBILkIuZ2V0X25fZWlkIGJsYWNrYm9hcmQgaW5cbiAgICAgIGxldCByZWMgYXV4IGsgbGlzdCBzb2wgPVxuICAgICAgICBpZiBrID0gbl9ldmVudHMgdGhlblxuICAgICAgICAgIExpc3QucmV2IHNvbFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgICAgaWYgUEguQi5QQi5pbnRfb2Zfc3RlcF9pZCB0ID0gayB0aGVuXG4gICAgICAgICAgICAgIGF1eCAoayArIDEpIHEgc29sXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGF1eCAoayArIDEpIGxpc3QgKFBILkIuUEIuc3RlcF9pZF9vZl9pbnQgayA6OiBzb2wpXG4gICAgICAgICAgfCBbXSAtPiBhdXggKGsgKyAxKSBsaXN0IChQSC5CLlBCLnN0ZXBfaWRfb2ZfaW50IGsgOjogc29sKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgYXV4IDAgZXZlbnRzX3RvX2tlZXAgW11cbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGZvcmJpZGRlbl9ldmVudHMgPVxuICAgICAgUEguZm9yYmlkZGVuX2V2ZW50cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudHNfdG9fcmVtb3ZlXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgbG9nX3N0ZXBzIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgXCJTdGFydCBjdXR0aW5nXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICBpblxuICAgICAgICAoKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIF9vdXRwdXQpID1cbiAgICAgIHByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBmb3JiaWRkZW5fZXZlbnRzIFtdIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9jb25jdXJyZW50X2V2ZW50X2RlbGV0aW9uX3RpbWUgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X3N0ZXBfdGltZSBsb2dfaW5mbyBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuXG4gIGxldCBzdWIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdG9fa2VlcCA9XG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfc3RlcF90aW1lIGxvZ19pbmZvIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBQSC5CLmltcG9ydCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0b19rZWVwXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfY29uY3VycmVudF9ldmVudF9kZWxldGlvbl90aW1lIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9zdGVwX3RpbWUgbG9nX2luZm8gaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgY29tcHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0X29yZGVyID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgIFBILkIuYnJhbmNoIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9jb25jdXJyZW50X2V2ZW50X2RlbGV0aW9uX3RpbWUgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X3N0ZXBfdGltZSBsb2dfaW5mbyBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBsb2dfc3RlcHMgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBcIkFmdGVyIENhdXNhbCBDdXQgICVpXCJcbiAgICAgICAgICAgIChQSC5CLmdldF9uX3VucmVzb2x2ZWRfZXZlbnRzIGJsYWNrYm9hcmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBvdXRwdXQpID1cbiAgICAgIHByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0X29yZGVyIFtdIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIFBILkIuaXNfZmFpbGVkIG91dHB1dCB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGxvZ19zdGVwcyB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJBZnRlciBvYnNlcnZhYmxlIHByb3BhZ2F0aW9uICBGQUlMICVpIEAuXCJcbiAgICAgICAgICAgICAgKFBILkIuZ2V0X25fdW5yZXNvbHZlZF9ldmVudHMgYmxhY2tib2FyZClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKClcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIG91dHB1dCwgW10pXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGxvZ19zdGVwcyB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJBZnRlciBvYnNlcnZhYmxlIHByb3BhZ2F0aW9uICAlaSBALlwiXG4gICAgICAgICAgICAgIChQSC5CLmdldF9uX3VucmVzb2x2ZWRfZXZlbnRzIGJsYWNrYm9hcmQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgYm9vbCwgc3RyaW5nID1cbiAgICAgICAgbWF0Y2ggcGFyYW1ldGVyLlBILkIuUEIuQ0kuUG8uSy5ILmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSB3aXRoXG4gICAgICAgIHwgTm9uZSB8IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgLT4gZmFsc2UsIFwiXCJcbiAgICAgICAgfCBTb21lIFN0b3J5X2pzb24uV2VhayAtPlxuICAgICAgICAgICggUGFyYW1ldGVyLmR1bXBfZ3JpZF9hZnRlcl9icmFuY2hpbmdfZHVyaW5nX3dlYWtfY29tcHJlc3Npb24sXG4gICAgICAgICAgICBQYXJhbWV0ZXIueGxzd2Vha0ZpbGVOYW1lIClcbiAgICAgICAgfCBTb21lIFN0b3J5X2pzb24uU3Ryb25nIC0+XG4gICAgICAgICAgKCBQYXJhbWV0ZXIuZHVtcF9ncmlkX2FmdGVyX2JyYW5jaGluZ19kdXJpbmdfc3Ryb25nX2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgUGFyYW1ldGVyLnhsc3N0cm9uZ0ZpbGVOYW1lIClcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBQcmlvcml0eS5uX2JyYW5jaCA6PSAxICsgKCFQcmlvcml0eS5uX2JyYW5jaCArIDEpIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICBQSC5CLmV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBzdHJpbmcgIVByaW9yaXR5Lm5fc3RvcnkgIVByaW9yaXR5Lm5fYnJhbmNoIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICApIGVsc2VcbiAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3RvcnlfbGlzdCkgPVxuICAgICAgICBpdGVyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZW1wdHlfY2hvaWNlX2xpc3QgW11cbiAgICAgIGluXG4gICAgICBsZXQgb3V0cHV0ID1cbiAgICAgICAgbWF0Y2ggc3RvcnlfbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gUEguQi5mYWlsXG4gICAgICAgIHwgXyAtPiBQSC5CLnN1Y2Nlc3NcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgKGJsYWNrYm9hcmQsIG91dHB1dCwgZmlsdGVyX291dF9ub25fbWluaW1hbF9zdG9yeSAoTGlzdC5yZXYgc3RvcnlfbGlzdCkpXG4gICAgICApXG4gICAgKVxuZW5kXG4iLCIoKipcbiAgKiBibGFja19saXN0Lm1sXG4gICpcbiAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTYtMDItMTQgMTA6Mjk6NDIgZmVyZXQ+XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTAyLTE0IDEwOjUwOjU3IGZlcmV0PlxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIEplcm9tZSBGZXJldCwgcHJvamV0IEFudGlxdWUsIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdGUgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNSwyMDE2XG4gICogIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlblxuICAqIEluZm9ybWF0aXF1ZSBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnlcbiAgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIEV2ZW50ID0gc2lnXG4gIHR5cGUgZXZlbnRcbiAgdHlwZSBlaWRcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGtleV9vZl9ldmVudCA6IGV2ZW50IC0+IGVpZCBvcHRpb25cbiAgdmFsIGluaXQgOiBpbnQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgc2V0IDogJ2EgdCAtPiBlaWQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgZ2V0IDogJ2EgdCAtPiBlaWQgLT4gJ2FcbmVuZFxuXG5tb2R1bGUgdHlwZSBCbGFja2xpc3QgPSBzaWdcbiAgdHlwZSB0XG5cbiAgbW9kdWxlIEV2ZW50IDogRXZlbnRcblxuICB2YWwgaW5pdCA6IGludCAtPiB0XG4gIHZhbCBibGFja19saXN0IDogRXZlbnQuZXZlbnQgLT4gdCAtPiB0XG4gIHZhbCBpc19ibGFja19saXN0ZWQgOiBFdmVudC5ldmVudCAtPiB0IC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgTWFrZSA9XG5mdW5jdG9yXG4gIChFdmVudCA6IEV2ZW50KVxuICAtPlxuICBzdHJ1Y3RcbiAgICBtb2R1bGUgRXZlbnQgPSBFdmVudFxuXG4gICAgdHlwZSB0ID0gYm9vbCBFdmVudC50XG5cbiAgICBsZXQgaW5pdCBuID0gRXZlbnQuaW5pdCBuIGZhbHNlXG5cbiAgICBsZXQgYmxhY2tfbGlzdCBldmVudCB0ID1cbiAgICAgIG1hdGNoIEV2ZW50LmtleV9vZl9ldmVudCBldmVudCB3aXRoXG4gICAgICB8IE5vbmUgLT4gdFxuICAgICAgfCBTb21lIGVpZCAtPlxuICAgICAgICBsZXQgdCA9IEV2ZW50LnNldCB0IGVpZCB0cnVlIGluXG4gICAgICAgIHRcblxuICAgIGxldCBpc19ibGFja19saXN0ZWQgZXZlbnQgdCA9XG4gICAgICBtYXRjaCBFdmVudC5rZXlfb2ZfZXZlbnQgZXZlbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgZWlkIC0+IEV2ZW50LmdldCB0IGVpZFxuICBlbmRcbiIsIigqKlxuICAqIGRhZy5tbFxuICAqXG4gICogRGFnIGNvbXB1dGF0aW9uIGFuZCBjYW5vbmljYWwgZm9ybVxuICAqXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDIyLzAzLzIwMTJcbiAgKiBMYXN0IG1vZHhpZmljYXRpb246IDE4LzA2LzIwMTNcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWVcbiAgKiBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIFMgPSBHZW5lcmljX2JyYW5jaF9hbmRfY3V0X3NvbHZlci5Tb2x2ZXJcblxubGV0IHdhcm4gcGFyYW1ldGVyIGVycm9yIHBvcyA/KG1lc3NhZ2UgPSBcIlwiKSBleG4gZGVmYXVsdCA9XG4gIEV4Y2VwdGlvbi53YXJuXG4gICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgZXJyb3IgcG9zIH5tZXNzYWdlIGV4biBkZWZhdWx0XG5cbm1vZHVsZSB0eXBlIFN0b3J5VGFibGUgPSBzaWdcbiAgdHlwZSB0YWJsZVxuXG4gIHZhbCBmb2xkX3RhYmxlIDpcbiAgICAoICggVHJhY2UudCxcbiAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0LFxuICAgICAgICAnYSxcbiAgICAgICAgJ2EgKVxuICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC50ZXJuYXJ5LFxuICAgICAgdGFibGUsXG4gICAgICAnYSxcbiAgICAgICdhIClcbiAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnRlcm5hcnlcblxuICB2YWwgaW5pdF90YWJsZSA6IHRhYmxlIFMuUEguQi5QQi5DSS5Qby5LLkguemVyb2FyeVxuICB2YWwgY291bnRfc3RvcmllcyA6IHRhYmxlIC0+IGludFxuXG4gIHZhbCBhZGRfc3RvcnkgOlxuICAgICggQ2F1c2FsLmdyaWQsXG4gICAgICBUcmFjZS50LFxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0LFxuICAgICAgdGFibGUsXG4gICAgICB0YWJsZSApXG4gICAgUy5QSC5CLlBCLkNJLlBvLksuSC5xdWF0ZXJuYXJ5XG5cbiAgdmFsIGhhc2hfbGlzdCA6ICh0YWJsZSwgdGFibGUpIFMuUEguQi5QQi5DSS5Qby5LLkgudW5hcnlcblxuICB2YWwgc29ydF9saXN0IDpcbiAgICAoIHRhYmxlLFxuICAgICAgKFRyYWNlLnRcbiAgICAgICogQ2F1c2FsLmdyaWRcbiAgICAgICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0KVxuICAgICAgbGlzdCApXG4gICAgUy5QSC5CLlBCLkNJLlBvLksuSC51bmFyeVxuZW5kXG5cbm1vZHVsZSBIID0gUy5QSC5CLlBCLkNJLlBvLksuSFxubW9kdWxlIEEgPSBNb2RzLkR5bkFycmF5XG5cbnR5cGUgbGFiZWwgPSBzdHJpbmdcbnR5cGUgbm9kZV9raW5kID0gT0JTIHwgUEVSVCB8IFJVTEUgfCBJTklUIHwgRklDVElUSU9VU1xudHlwZSBub2RlID0gbm9kZV9raW5kICogbGFiZWxcblxudHlwZSBncmFwaCA9IHtcbiAgcm9vdDogaW50O1xuICBsYWJlbHM6IG5vZGUgQS50O1xuICBwcmVkOiBpbnQgbGlzdCBBLnQ7XG4gIGNvbmZsaWN0X3ByZWQ6IGludCBsaXN0IEEudDtcbn1cblxubGV0IGR1bW15X2dyYXBoID1cbiAge1xuICAgIHJvb3QgPSAwO1xuICAgIGxhYmVscyA9IEEubWFrZSAxIChGSUNUSVRJT1VTLCBcIlwiKTtcbiAgICBwcmVkID0gQS5tYWtlIDEgW107XG4gICAgY29uZmxpY3RfcHJlZCA9IEEubWFrZSAxIFtdO1xuICB9XG5cbnR5cGUgcG9zaXRpb24gPSBpbnRcbnR5cGUga2V5ID0gRnJlc2ggb2Ygbm9kZSB8IEZvcm1lciBvZiBwb3NpdGlvbiB8IFN0b3BcbnR5cGUgY2Fub25pY2FsX2Zvcm0gPSBrZXkgbGlzdFxudHlwZSBwcmVoYXNoID0gKG5vZGUgKiBpbnQpIGxpc3RcblxubGV0IF9kdW1teV9jYW5ub25pY2FsX2Zvcm0gPSBbXVxubGV0IF9kdW1teV9wcmVoYXNoID0gW11cblxubGV0IF9wcmludF9zdG9yeV9pbmZvIGxvZ2dlciBfcGFyYW1ldGVyIGpzb24gPVxuICAoKkxpc3QuaXRlclxuICAgIChmdW5cbiAgICAgIHN0b3J5X2luZm8gLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIGxvZ2dlclxuICAgICAgICAgIFwiaWQ6JWksIHRpbWU6JWYsIGV2ZW50OiVpXCJcbiAgICAgICAgICBzdG9yeV9pbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZFxuICAgICAgICAgIHN0b3J5X2luZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWVcbiAgICAgICAgICBzdG9yeV9pbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudFxuICAgICAgaW5cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXJcbiAgICApXG4gICAgc3RvcnlfaW5mb19saXN0XG4gICopXG4gIGxldCBjaGFubmVsX29wdCA9IExvZ2dlcnMuY2hhbm5lbF9vZl9sb2dnZXIgbG9nZ2VyIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggY2hhbm5lbF9vcHQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBjaGFubmVsIC0+XG4gICAgICBsZXQgKCkgPSBZb2pzb24uQmFzaWMudG9fY2hhbm5lbCBjaGFubmVsIGpzb24gaW5cbiAgICAgICgpXG4gIGluXG4gIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgKClcblxubGV0IHByaW50X2dyYXBoIGxvZ2dlciBwYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3IgaWQgc3RvcnlfaW5mbyBncmFwaCA9XG4gIGxldCBsb2dnZXIgPSBHcmFwaF9sb2dnZXJzX3NpZy5leHRlbmRfbG9nZ2VyIGxvZ2dlciBpblxuICBsZXQgKCkgPSBHcmFwaF9sb2dnZXJzX3NpZy5yZWZyZXNoX2lkIGxvZ2dlciBpblxuICBsZXQgKCkgPSBHcmFwaF9sb2dnZXJzLnByaW50X2dyYXBoX3ByZWFtYmxlIGxvZ2dlciBcInN0b3J5XCIgaW5cbiAgbGV0ICgpID1cbiAgICBBLml0ZXJpXG4gICAgICAoZnVuIGkgKG5vZGVfa2luZCwgaikgLT5cbiAgICAgICAgaWYgaSA9IDAgJiYgaiA9IFwiXCIgdGhlblxuICAgICAgICAgICgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBkaXJlY3RpdmVzID1cbiAgICAgICAgICAgIG1hdGNoIG5vZGVfa2luZCB3aXRoXG4gICAgICAgICAgICB8IE9CUyAtPiBbIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIEdyYXBoX2xvZ2dlcnNfc2lnLlJlZCBdXG4gICAgICAgICAgICB8IFBFUlQgLT5cbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuO1xuICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIEdyYXBoX2xvZ2dlcnNfc2lnLkludmhvdXNlO1xuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB8IFJVTEUgLT5cbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZTtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZTtcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfCBJTklUIC0+XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbjtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBHcmFwaF9sb2dnZXJzX3NpZy5Ib3VzZTtcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfCBGSUNUSVRJT1VTIC0+XG4gICAgICAgICAgICAgIFsgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aXNpYmxlIF1cbiAgICAgICAgICBpblxuICAgICAgICAgIEdyYXBoX2xvZ2dlcnMucHJpbnRfbm9kZSBsb2dnZXJcbiAgICAgICAgICAgIH5kaXJlY3RpdmVzOihHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBqIDo6IGRpcmVjdGl2ZXMpXG4gICAgICAgICAgICAoc3RyaW5nX29mX2ludCBpKVxuICAgICAgICApKVxuICAgICAgZ3JhcGgubGFiZWxzXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQS5pdGVyaVxuICAgICAgKGZ1biBpIGwgLT5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biBqIC0+XG4gICAgICAgICAgICBHcmFwaF9sb2dnZXJzLnByaW50X2VkZ2UgbG9nZ2VyIChzdHJpbmdfb2ZfaW50IGopIChzdHJpbmdfb2ZfaW50IGkpKVxuICAgICAgICAgIGwpXG4gICAgICBncmFwaC5wcmVkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQS5pdGVyaVxuICAgICAgKGZ1biBpIGwgLT5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biBqIC0+XG4gICAgICAgICAgICBHcmFwaF9sb2dnZXJzLnByaW50X2VkZ2UgbG9nZ2VyXG4gICAgICAgICAgICAgIH5kaXJlY3RpdmVzOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSBHcmFwaF9sb2dnZXJzX3NpZy5Eb3R0ZWQ7XG4gICAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd0hlYWQgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlO1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgKHN0cmluZ19vZl9pbnQgaSkgKHN0cmluZ19vZl9pbnQgaikpXG4gICAgICAgICAgbClcbiAgICAgIGdyYXBoLmNvbmZsaWN0X3ByZWRcbiAgaW5cbiAgbGV0IGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXIgPVxuICAgIG1hdGNoIEguZ2V0X2N1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXIgd2l0aFxuICAgIHwgTm9uZSAtPiBTdG9yeV9qc29uLkNhdXNhbFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgbGV0IHJlc3VsdCA9XG4gICAge1xuICAgICAgU3RvcnlfanNvbi5sb2dfaW5mbyA9IHN0b3J5X2luZm87XG4gICAgICBTdG9yeV9qc29uLnN0b3J5X21vZGUgPSBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgcGFyYW1ldGVyO1xuICAgICAgU3RvcnlfanNvbi5zdG9yeSA9XG4gICAgICAgIFN0b3J5X2pzb24uTmV3XG4gICAgICAgICAge1xuICAgICAgICAgICAgU3RvcnlfanNvbi5ncmFwaCA9IEdyYXBoX2xvZ2dlcnNfc2lnLmdyYXBoX29mX2xvZ2dlciBsb2dnZXI7XG4gICAgICAgICAgICBTdG9yeV9qc29uLmlkO1xuICAgICAgICAgIH07XG4gICAgfVxuICBpblxuICBsZXQgKCkgPSBILnB1c2hfanNvbiBwYXJhbWV0ZXIgKFN0b3J5X2pzb24uU3RvcnkgcmVzdWx0KSBpblxuICBlcnJvclxuXG5sZXQgcHJpbnRfZWx0IGxvZyBlbHQgPVxuICBtYXRjaCBlbHQgd2l0aFxuICB8IFN0b3AgLT5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiU1RPUFwiIGluXG4gICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICB8IEZvcm1lciBpIC0+XG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlBvaW50ZXIgJWlcIiBpIGluXG4gICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICB8IEZyZXNoIChfLCBzKSAtPlxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJFdmVudCAlc1wiIHMgaW5cbiAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nXG5cbmxldCBfcHJpbnRfY2Fub25pY2FsX2Zvcm0gcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIGRhZyA9XG4gIGxldCBfID0gTGlzdC5pdGVyIChwcmludF9lbHQgKEguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikpIGRhZyBpblxuICBsZXQgXyA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBpblxuICBlcnJvclxuXG5sZXQgX3ByaW50X3ByZWhhc2ggcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIHJlcHJlc2VudGF0aW9uID1cbiAgbGV0IF8gPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoKF8sIGIpLCBpKSAtPlxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKEguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgXCIlczolaSxcIiBiIGkpXG4gICAgICByZXByZXNlbnRhdGlvblxuICBpblxuICBsZXQgXyA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBpblxuICBlcnJvclxuXG5sZXQgbGFiZWwgaGFuZGxlciA9IGZ1bmN0aW9uXG4gIHwgQ2F1c2FsLkVWRU5UIChUcmFjZS5SVUxFIGkpIC0+IEguc3RyaW5nX29mX3J1bGVfaWQgaGFuZGxlciBpXG4gIHwgQ2F1c2FsLkVWRU5UIChUcmFjZS5JTklUIFsgaSBdKSAtPiBILnN0cmluZ19vZl9hZ2VudF9pZCBoYW5kbGVyIGlcbiAgfCBDYXVzYWwuRVZFTlQgKChUcmFjZS5JTklUIF8gfCBUcmFjZS5QRVJUIF8pIGFzIHgpIC0+XG4gICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAoVHJhY2UucHJpbnRfZXZlbnRfa2luZCB+ZW52OmhhbmRsZXIuSC5lbnYpIHhcbiAgfCBDYXVzYWwuT0JTIG5hbWUgLT4gbmFtZVxuXG5sZXQga2luZCBub2RlID1cbiAgbWF0Y2ggbm9kZSB3aXRoXG4gIHwgQ2F1c2FsLkVWRU5UIChUcmFjZS5JTklUIF8pIC0+IElOSVRcbiAgfCBDYXVzYWwuRVZFTlQgKFRyYWNlLlJVTEUgXykgLT4gUlVMRVxuICB8IENhdXNhbC5FVkVOVCAoVHJhY2UuUEVSVCBfKSAtPiBQRVJUXG4gIHwgQ2F1c2FsLk9CUyBfIC0+IE9CU1xuXG5sZXQgY29tcGFyZV9lbHQgeCB5ID1cbiAgbWF0Y2ggeCwgeSB3aXRoXG4gIHwgU3RvcCwgU3RvcCAtPiAwXG4gIHwgU3RvcCwgXyAtPiAtMVxuICB8IF8sIFN0b3AgLT4gMVxuICB8IEZvcm1lciBpLCBGb3JtZXIgaiAtPiBjb21wYXJlIGkgalxuICB8IEZvcm1lciBfLCBfIC0+IC0xXG4gIHwgXywgRm9ybWVyIF8gLT4gMVxuICB8IEZyZXNoIHMsIEZyZXNoIHMnIC0+IGNvbXBhcmUgcyBzJ1xuXG5sZXQgcXVpY2tfY29tcGFyZSBnIHQxIHQyID0gY29tcGFyZV9lbHQgKGcgdDEpIChnIHQyKVxuXG5sZXQgcmVjIGF1eCBjb21wYXJlX2VsdCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCB0IDo6IHEsIHQnIDo6IHEnIC0+XG4gICAgbGV0IGNtcCA9IGNvbXBhcmVfZWx0IHQgdCcgaW5cbiAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgIGF1eCBjb21wYXJlX2VsdCBxIHEnXG4gICAgZWxzZVxuICAgICAgY21wXG5cbmxldCBjb21wYXJlX2Nhbm9uaWMgPSBhdXggY29tcGFyZV9lbHRcblxubGV0IGNvbXBhcmVfY2Fub25pY19vcHQgeCB5ID1cbiAgbWF0Y2ggeCwgeSB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiAwXG4gIHwgTm9uZSwgXyAtPiAtMVxuICB8IF8sIE5vbmUgLT4gMVxuICB8IFNvbWUgeCwgU29tZSB5IC0+IGNvbXBhcmVfY2Fub25pYyB4IHlcblxubGV0IGNvbXBhcmVfcHJlaGFzaCA9IGF1eCBjb21wYXJlXG5cbmxldCBncmFwaF9vZl9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWQgPVxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5HcmFwaF9jb252ZXJzaW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgbGV0IGlkcyA9IEhhc2h0YmwuZm9sZCAoZnVuIGtleSBfIGwgLT4ga2V5IDo6IGwpIGdyaWQuQ2F1c2FsLmZsb3cgW10gaW5cbiAgbGV0IGxhYmVsID0gbGFiZWwgaGFuZGxlciBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb25maWcgPVxuICAgIENhdXNhbC5jdXRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpZHMgZ3JpZFxuICBpblxuICBtYXRjaCBNb2RzLkludE1hcC5tYXhfa2V5IGNvbmZpZy5DYXVzYWwucHJlY18xIHdpdGhcbiAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgZHVtbXlfZ3JhcGhcbiAgfCBTb21lIHNpemUgLT5cbiAgICBsZXQgc3VjY19zaXplID0gc3VjYyBzaXplIGluXG4gICAgbGV0IGxhYmVscyA9IEEubWFrZSBzdWNjX3NpemUgKEZJQ1RJVElPVVMsIFwiXCIpIGluXG4gICAgbGV0IHByZWQgPSBBLm1ha2Ugc3VjY19zaXplIFtdIGluXG4gICAgbGV0IGNvbmZsaWN0X3ByZWQgPSBBLm1ha2Ugc3VjY19zaXplIFtdIGluXG4gICAgbGV0ICgpID1cbiAgICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgICAgKGZ1biBpIGF0b21fa2luZCAtPiBBLnNldCBsYWJlbHMgaSAoa2luZCBhdG9tX2tpbmQsIGxhYmVsIGF0b21fa2luZCkpXG4gICAgICAgIGNvbmZpZy5DYXVzYWwuZXZlbnRzX2tpbmRcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBNb2RzLkludE1hcC5pdGVyXG4gICAgICAgIChmdW4gaSBzIC0+XG4gICAgICAgICAgaWYgTW9kcy5JbnRTZXQuaXNfZW1wdHkgcyB0aGVuXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEEuc2V0IHByZWQgaSAoTW9kcy5JbnRTZXQuZWxlbWVudHMgcykpXG4gICAgICAgIGNvbmZpZy5DYXVzYWwucHJlY18xXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kcy5JbnRNYXAuaXRlclxuICAgICAgICAoZnVuIGkgcyAtPlxuICAgICAgICAgIGlmIE1vZHMuSW50U2V0LmlzX2VtcHR5IHMgdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBLnNldCBjb25mbGljdF9wcmVkIGkgKE1vZHMuSW50U2V0LmVsZW1lbnRzIHMpKVxuICAgICAgICBjb25maWcuQ2F1c2FsLmNvbmZsaWN0XG4gICAgaW5cbiAgICBsZXQgcm9vdCA9IHNpemUgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLkdyYXBoX2NvbnZlcnNpb24gTm9uZSBsb2dfaW5mb1xuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCB7IHJvb3Q7IGxhYmVsczsgcHJlZDsgY29uZmxpY3RfcHJlZCB9XG5cbmxldCBjb25jYXQgbGlzdDEgbGlzdDIgPVxuICBsZXQgcmVjIGF1eCBsaXN0MSBsaXN0MiA9XG4gICAgbWF0Y2ggbGlzdDIgd2l0aFxuICAgIHwgW10gLT4gbGlzdDFcbiAgICB8IHQgOjogcSAtPiBhdXggKHQgOjogbGlzdDEpIHFcbiAgaW5cbiAgYXV4IGxpc3QyIChMaXN0LnJldiBsaXN0MSlcblxubGV0IGNvbXBhcmVfbm9kZSAoYSwgXykgKGIsIF8pID0gY29tcGFyZSBhIGJcblxubGV0IHNtYXNoIGwgPVxuICBsZXQgcmVjIGF1eCBsIGZvcm1lciB3ZWlnaHQgb3V0cHV0ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IExpc3QucmV2ICgoZm9ybWVyLCB3ZWlnaHQpIDo6IG91dHB1dClcbiAgICB8ICh0LCB3dCkgOjogcSB3aGVuIHQgPSBmb3JtZXIgLT4gYXV4IHEgZm9ybWVyICh3dCArIHdlaWdodCkgb3V0cHV0XG4gICAgfCAodCwgd3QpIDo6IHEgLT4gYXV4IHEgdCB3dCAoKGZvcm1lciwgd2VpZ2h0KSA6OiBvdXRwdXQpXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgKHQsIHd0KSA6OiBxIC0+IGF1eCBxIHQgd3QgW11cblxubGV0IHByZWhhc2ggX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBncmFwaCA9XG4gICggZXJyb3IsXG4gICAgc21hc2hcbiAgICAgIChMaXN0LnNvcnQgY29tcGFyZV9ub2RlXG4gICAgICAgICAobGV0IGwgPSByZWYgW10gaW5cbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBBLml0ZXJcbiAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBGSUNUSVRJT1VTLCBfIC0+ICgpXG4gICAgICAgICAgICAgICAgfCAoKE9CUyB8IFBFUlQgfCBSVUxFIHwgSU5JVCksIF8pIGFzIGEgLT4gbCA6PSAoYSwgMSkgOjogIWwpXG4gICAgICAgICAgICAgIGdyYXBoLmxhYmVsc1xuICAgICAgICAgIGluXG4gICAgICAgICAgIWwpKSApXG5cbmxldCBjYW5vbmljYWxpemUgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoID1cbiAgbGV0IGFzc28gPSBNb2RzLkludE1hcC5lbXB0eSBpblxuICBsZXQgbGFiZWwgaSA9IHRyeSBBLmdldCBncmFwaC5sYWJlbHMgaSB3aXRoIF8gLT4gRklDVElUSU9VUywgXCJcIiBpblxuICBsZXQgcmVjIHBvcCAoY2FuZGlkYXRlIDoga2V5IGxpc3QpICh0b19iZWF0IDoga2V5IGxpc3Qgb3B0aW9uKSA9XG4gICAgbWF0Y2ggY2FuZGlkYXRlLCB0b19iZWF0IHdpdGhcbiAgICB8IFtdLCBfIHwgXywgTm9uZSAtPlxuICAgICAgU29tZSB0b19iZWF0ICgqIGNhbmRpZGF0ZSBpcyBhIHByZWZpeCBvZiB0b19iZWF0LCB3ZSBvdXRwdXQgdGhlIHN1ZmZpeCAqKVxuICAgIHwgXyA6OiBfLCBTb21lIFtdIC0+IE5vbmUgKCogdGhlIGNhbmRpZGF0ZSBpcyB3b3JzZSAqKVxuICAgIHwgdCA6OiBxLCBTb21lICh0ciA6OiBxcikgLT5cbiAgICAgIGxldCBjbXAgPSBjb21wYXJlX2VsdCB0IHRyIGluXG4gICAgICBpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgU29tZSBOb25lICgqIHRoZSBjYW5kaWRhdGUgaXMgYmV0dGVyICopXG4gICAgICBlbHNlIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICBwb3AgcSAoU29tZSBxcilcbiAgICAgICgqIHdlIGRvIG5vdCBrbm93LCB3ZSBsb29rIGZ1cnRoZXIgKilcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgICgqIHRoZSBjYW5kaWRhdGUgaXMgd29yc2UgKilcbiAgaW5cbiAgbGV0IHJlYyB2aXNpdCAoaSA6IGludCkgKG1hcCA6IGludCBNb2RzLkludE1hcC50KSAoZnJlc2hfcG9zIDogaW50KVxuICAgICAgKHRvX2JlYXQgOiBrZXkgbGlzdCBvcHRpb24pID1cbiAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIG1hcCB3aXRoXG4gICAgfCBTb21lIGkgLT5cbiAgICAgICgqIHRoZSBub2RlIGhhcyBhbHJlYWR5IGJlZW4gc2Vlbiwgd2UgcHV0IGEgcG9pbnRlciAqKVxuICAgICAgKCowKilcbiAgICAgIChtYXRjaCBwb3AgWyBGb3JtZXIgaSBdIHRvX2JlYXQgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIHRvIGJlYXQgaXMgYmV0dGVyLCB3ZSBjdXQgdGhlIGNvbnN0cnVjdGlvbiAqKVxuICAgICAgICBOb25lXG4gICAgICB8IFNvbWUgdG9fYmVhdCAtPlxuICAgICAgICAoKiB0byBiZWF0IG1heSBiZSBpbXByb3ZlZCwgd2UgZ28gb24gKilcbiAgICAgICAgU29tZSAoWyBGb3JtZXIgaSBdLCBtYXAsIGZyZXNoX3BvcywgdG9fYmVhdCkpXG4gICAgKCowKilcbiAgICB8IE5vbmUgLT5cbiAgICAgICgqIHRoZSBub2RlIGlzIHNlZW4gZm9yIHRoZSBmaXJzdCB0aW1lICopXG4gICAgICBsZXQgbWFwID0gTW9kcy5JbnRNYXAuYWRkIGkgZnJlc2hfcG9zIG1hcCBpblxuICAgICAgbGV0IGZyZXNoX3BvcyA9IGZyZXNoX3BvcyArIDEgaW5cbiAgICAgICgqMCopXG4gICAgICAobWF0Y2ggcG9wIFsgRnJlc2ggKGxhYmVsIGkpIF0gdG9fYmVhdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lICh0b19iZWF0IDoga2V5IGxpc3Qgb3B0aW9uKSAtPlxuICAgICAgICAoKjEqKVxuICAgICAgICBsZXQgc2liYmxpbmcxID0gdHJ5IEEuZ2V0IGdyYXBoLnByZWQgaSB3aXRoIE5vdF9mb3VuZCAtPiBbXSBpblxuICAgICAgICBsZXQgc2liYmxpbmcyID1cbiAgICAgICAgICB0cnkgQS5nZXQgZ3JhcGguY29uZmxpY3RfcHJlZCBpIHdpdGggTm90X2ZvdW5kIC0+IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgYmVzdF9zaWJibGluZyAobSA6IGludCBNb2RzLkludE1hcC50KSAoZiA6IGludClcbiAgICAgICAgICAgIChjYW5kaWRhdGVzIDogaW50IGxpc3QpIChub3RfYmVzdCA6IGludCBsaXN0KVxuICAgICAgICAgICAgKHRvX2JlYXQgOiBrZXkgbGlzdCBvcHRpb24pXG4gICAgICAgICAgICAocmVjb3JkIDpcbiAgICAgICAgICAgICAgKGludCAqIChrZXkgbGlzdCAqIGludCBNb2RzLkludE1hcC50ICogaW50ICoga2V5IGxpc3Qgb3B0aW9uKSlcbiAgICAgICAgICAgICAgb3B0aW9uKSA9XG4gICAgICAgICAgbWF0Y2ggY2FuZGlkYXRlcyB3aXRoXG4gICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgKCoyKilcbiAgICAgICAgICAgIChtYXRjaCByZWNvcmQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSByZWNvcmQgLT4gU29tZSAobm90X2Jlc3QsIHJlY29yZCkpXG4gICAgICAgICAgKCoyKilcbiAgICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgICAgbGV0IHJlcCA9IHZpc2l0IHQgbSBmIHRvX2JlYXQgaW5cbiAgICAgICAgICAgICgqMiopXG4gICAgICAgICAgICAobWF0Y2ggcmVwIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBiZXN0X3NpYmJsaW5nIG0gZiBxICh0IDo6IG5vdF9iZXN0KSB0b19iZWF0IHJlY29yZFxuICAgICAgICAgICAgfCBTb21lICgoZW5jb2RpbmcgOiBrZXkgbGlzdCksIG1hcCwgZnJlc2gsIHJlc2lkdWUpIC0+XG4gICAgICAgICAgICAgICgqMyopXG4gICAgICAgICAgICAgIGxldCAodG9fYmVhdF9hZnRlciA6IGtleSBsaXN0IG9wdGlvbikgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlc2lkdWUgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBTb21lIGVuY29kaW5nXG4gICAgICAgICAgICAgICAgfCBfIC0+IHRvX2JlYXRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IChub3RfYmVzdCA6IGludCBsaXN0KSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcmVjb3JkIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbm90X2Jlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgKGJlc3QsIF8pIC0+IGJlc3QgOjogbm90X2Jlc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYmVzdF9zaWJibGluZyBtIGYgcSBub3RfYmVzdCB0b19iZWF0X2FmdGVyXG4gICAgICAgICAgICAgICAgKFNvbWUgKHQsIChlbmNvZGluZywgbWFwLCBmcmVzaCwgcmVzaWR1ZSkpKSlcbiAgICAgICAgICAoKjMqKVxuICAgICAgICAgICgqMiopXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgYXV4IG0gZiBsIHNvbCB0b19iZWF0ID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IFNvbWUgKG0sIGYsIHNvbCwgdG9fYmVhdClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICgqMiopXG4gICAgICAgICAgICAobWF0Y2ggYmVzdF9zaWJibGluZyBtIGYgbCBbXSB0b19iZWF0IE5vbmUgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSAobm90X2Jlc3QsIHJlY29yZCkgLT5cbiAgICAgICAgICAgICAgbGV0IF8sIChiZXN0LCBtYXAsIGZyZXNoX3BvcywgdG9fYmVhdF9hZnRlcikgPSByZWNvcmQgaW5cbiAgICAgICAgICAgICAgYXV4IG1hcCBmcmVzaF9wb3Mgbm90X2Jlc3QgKGNvbmNhdCBzb2wgYmVzdCkgdG9fYmVhdF9hZnRlcilcbiAgICAgICAgICAoKjIqKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbGlzdCA9IFsgRnJlc2ggKGxhYmVsIGkpIF0gaW5cbiAgICAgICAgKCoyKilcbiAgICAgICAgbGV0IGcgeCA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24geCBtYXAgd2l0aFxuICAgICAgICAgIHwgU29tZSB4IC0+IEZvcm1lciB4XG4gICAgICAgICAgfCBOb25lIC0+IEZyZXNoIChsYWJlbCB4KVxuICAgICAgICBpblxuICAgICAgICBsZXQgc2liYmxpbmcxID0gTGlzdC5zb3J0IChxdWlja19jb21wYXJlIGcpIHNpYmJsaW5nMSBpblxuICAgICAgICAobWF0Y2ggYXV4IG1hcCBmcmVzaF9wb3Mgc2liYmxpbmcxIGxpc3QgdG9fYmVhdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSAobWFwLCBmcmVzaF9wb3MsIGxpc3QsIHRvX2JlYXQpIC0+XG4gICAgICAgICAgKCozKilcbiAgICAgICAgICAobWF0Y2ggcG9wIFsgU3RvcCBdIHRvX2JlYXQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIHRvX2JlYXQgLT5cbiAgICAgICAgICAgICgqNCopXG4gICAgICAgICAgICBsZXQgbGlzdCA9IGNvbmNhdCBsaXN0IFsgU3RvcCBdIGluXG4gICAgICAgICAgICAoKjUqKVxuICAgICAgICAgICAgbGV0IGcgeCA9XG4gICAgICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHggbWFwIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHggLT4gRm9ybWVyIHhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IEZyZXNoIChsYWJlbCB4KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzaWJibGluZzIgPSBMaXN0LnNvcnQgKHF1aWNrX2NvbXBhcmUgZykgc2liYmxpbmcyIGluXG4gICAgICAgICAgICAobWF0Y2ggYXV4IG1hcCBmcmVzaF9wb3Mgc2liYmxpbmcyIGxpc3QgdG9fYmVhdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgfCBTb21lIChtYXAsIGZyZXNoX3BvcywgbGlzdCwgdG9fYmVhdCkgLT5cbiAgICAgICAgICAgICAgKCo2KilcbiAgICAgICAgICAgICAgKG1hdGNoIHBvcCBbIFN0b3AgXSB0b19iZWF0IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIHRvX2JlYXQgLT5cbiAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IGNvbmNhdCBsaXN0IFsgU3RvcCBdIGluXG4gICAgICAgICAgICAgICAgU29tZSAobGlzdCwgbWFwLCBmcmVzaF9wb3MsIHRvX2JlYXQpKSlcbiAgICAgICAgICAgICgqNiopXG4gICAgICAgICAgICAoKjUqKSlcbiAgICAgICAgICAoKjQqKSlcbiAgICAgICAgKCozKilcbiAgICAgICAgKCoyKikpXG4gICAgKCoxKilcbiAgICAoKjAqKVxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5DYW5ub25pY19mb3JtX2NvbXB1dGF0aW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgbGV0IGVycm9yLCBvdXRwdXQgPVxuICAgIG1hdGNoIHZpc2l0IGdyYXBoLnJvb3QgYXNzbyAwIE5vbmUgd2l0aFxuICAgIHwgU29tZSAocmVwLCBfLCBfLCBfKSAtPiBlcnJvciwgcmVwXG4gICAgfCBOb25lIC0+IGVycm9yLCBbXVxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLkNhbm5vbmljX2Zvcm1fY29tcHV0YXRpb24gTm9uZSBsb2dfaW5mb1xuICBpblxuICBlcnJvciwgbG9nX2luZm8sIG91dHB1dFxuXG5tb2R1bGUgTGlzdFRhYmxlIDogU3RvcnlUYWJsZSA9IHN0cnVjdFxuICB0eXBlIHRhYmxlID1cbiAgICAocHJlaGFzaFxuICAgICogKENhdXNhbC5ncmlkXG4gICAgICAqIGdyYXBoXG4gICAgICAqIGNhbm9uaWNhbF9mb3JtIG9wdGlvblxuICAgICAgKiBUcmFjZS50XG4gICAgICAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgbGlzdClcbiAgICAgIGxpc3QpXG4gICAgbGlzdFxuXG4gIGxldCBpbml0X3RhYmxlIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgPSBlcnJvciwgbG9nX2luZm8sIFtdXG5cbiAgbGV0IGFkZF9zdG9yeSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkIHByZXRyYWNlIGluZm8gdGFibGUgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGdyYXBoID1cbiAgICAgIGdyYXBoX29mX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBwcmVoYXNoID0gcHJlaGFzaCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBncmFwaCBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKHByZWhhc2gsIFsgZ3JpZCwgZ3JhcGgsIE5vbmUsIHByZXRyYWNlLCBpbmZvIF0pIDo6IHRhYmxlXG5cbiAgbGV0IHNvcnRfb3V0ZXIgPVxuICAgIGxldCBjb21wYXJlIChhLCBfKSAoYiwgXykgPSBjb21wYXJlX3ByZWhhc2ggYSBiIGluXG4gICAgTGlzdC5zb3J0IGNvbXBhcmVcblxuICBsZXQgc29ydF9pbm5lciA9XG4gICAgbGV0IGNvbXBhcmUgKF8sIF8sIGEsIF8sIF8pIChfLCBfLCBiLCBfLCBfKSA9IGNvbXBhcmVfY2Fub25pY19vcHQgYSBiIGluXG4gICAgTGlzdC5zb3J0IGNvbXBhcmVcblxuICBsZXQgaGFzaF9pbm5lciBfcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIGNtcCBsaXN0ID1cbiAgICBsZXQgbGlzdCA9IHNvcnRfaW5uZXIgbGlzdCBpblxuICAgIGxldCByZWMgdmlzaXQgZWxlbWVudHNfdG9fc3RvcmUgc3RvcmVkX2VsZW1lbnRzIGxhc3RfZWxlbWVudFxuICAgICAgICBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMgPVxuICAgICAgbWF0Y2ggZWxlbWVudHNfdG9fc3RvcmUsIGxhc3RfZWxlbWVudCB3aXRoXG4gICAgICB8IChfLCBfLCB0LCBfLCBsaXN0KSA6OiBxLCBTb21lIChfLCBfLCBvbGQsIF8pIHdoZW4gY29tcGFyZSB0IG9sZCA9IDAgLT5cbiAgICAgICAgdmlzaXQgcSBzdG9yZWRfZWxlbWVudHMgbGFzdF9lbGVtZW50XG4gICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgKGZ1biBsaXN0IGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICAgICAgIGxpc3QgbGFzdF9lbGVtZW50X29jY3VycmVuY2VzKVxuICAgICAgfCAoZ3JpZCwgZ3JhcGgsIHQsIGV2ZW50LCBsaXN0KSA6OiBxLCBTb21lIChncmlkJywgZ3JhcGgnLCBhLCBldmVudCcpIC0+XG4gICAgICAgIHZpc2l0IHFcbiAgICAgICAgICAoKGdyaWQnLCBncmFwaCcsIGEsIGV2ZW50JywgTGlzdC5zb3J0IGNtcCBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMpXG4gICAgICAgICAgOjogc3RvcmVkX2VsZW1lbnRzKVxuICAgICAgICAgIChTb21lIChncmlkLCBncmFwaCwgdCwgZXZlbnQpKVxuICAgICAgICAgICgqTGlzdC5yZXYqKSBsaXN0XG4gICAgICB8IChncmlkLCBncmFwaCwgdCwgZXZlbnQsIGxpc3QpIDo6IHEsIE5vbmUgLT5cbiAgICAgICAgdmlzaXQgcSBzdG9yZWRfZWxlbWVudHMgKFNvbWUgKGdyaWQsIGdyYXBoLCB0LCBldmVudCkpIChMaXN0LnJldiBsaXN0KVxuICAgICAgfCBbXSwgTm9uZSAtPiBbXVxuICAgICAgfCBbXSwgU29tZSAoZ3JpZCwgZ3JhcGgsIGEsIGV2ZW50KSAtPlxuICAgICAgICBMaXN0LnJldlxuICAgICAgICAgICgoZ3JpZCwgZ3JhcGgsIGEsIGV2ZW50LCBMaXN0LnNvcnQgY21wIGxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcylcbiAgICAgICAgICA6OiBzdG9yZWRfZWxlbWVudHMpXG4gICAgaW5cbiAgICBsZXQgbGlzdCA9IHZpc2l0IGxpc3QgW10gTm9uZSBbXSBpblxuICAgIGVycm9yLCBsaXN0XG5cbiAgbGV0IGhhc2hfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0ID1cbiAgICBsZXQgbGlzdCA9IHNvcnRfb3V0ZXIgKExpc3QucmV2IGxpc3QpIGluXG4gICAgbGV0IHJlYyB2aXNpdCBlbGVtZW50c190b19zdG9yZSBzdG9yZWRfZWxlbWVudHMgbGFzdF9lbGVtZW50XG4gICAgICAgIGxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyA9XG4gICAgICBtYXRjaCBlbGVtZW50c190b19zdG9yZSwgbGFzdF9lbGVtZW50IHdpdGhcbiAgICAgIHwgKCh0IDogcHJlaGFzaCksIGxpc3QpIDo6IHEsIFNvbWUgb2xkIHdoZW4gY29tcGFyZSB0IG9sZCA9IDAgLT5cbiAgICAgICAgdmlzaXQgcSBzdG9yZWRfZWxlbWVudHMgbGFzdF9lbGVtZW50XG4gICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgKGZ1biBsaXN0IGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICAgICAgIGxpc3QgbGFzdF9lbGVtZW50X29jY3VycmVuY2VzKVxuICAgICAgfCAodCwgbGlzdCkgOjogcSwgU29tZSBhIC0+XG4gICAgICAgIHZpc2l0IHEgKChhLCBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMpIDo6IHN0b3JlZF9lbGVtZW50cykgKFNvbWUgdCkgbGlzdFxuICAgICAgfCAodCwgbGlzdCkgOjogcSwgTm9uZSAtPiB2aXNpdCBxIHN0b3JlZF9lbGVtZW50cyAoU29tZSB0KSAoTGlzdC5yZXYgbGlzdClcbiAgICAgIHwgW10sIE5vbmUgLT4gW11cbiAgICAgIHwgW10sIFNvbWUgYSAtPiBMaXN0LnJldiAoKGEsIGxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcykgOjogc3RvcmVkX2VsZW1lbnRzKVxuICAgIGluXG4gICAgbGV0IGxpc3QgPSB2aXNpdCBsaXN0IFtdIE5vbmUgW10gaW5cbiAgICBsZXQgcmVjIHZpc2l0MiBsIGxvZ19pbmZvIGVycm9yIGFjYyA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBhY2NcbiAgICAgIHwgKHQsIGxpc3QpIDo6IHEgLT5cbiAgICAgICAgaWYgTGlzdC5sZW5ndGggbGlzdCA9IDEgdGhlblxuICAgICAgICAgIHZpc2l0MiBxIGxvZ19pbmZvIGVycm9yICgodCwgbGlzdCkgOjogYWNjKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0JyA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGxpc3QnKSAoZ3JpZCwgZ3JhcGgsIGRhZywgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBkYWcnID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGRhZyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gY2Fub25pY2FsaXplIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgZGFnIC0+IGVycm9yLCBsb2dfaW5mbywgZGFnXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChncmlkLCBncmFwaCwgU29tZSBkYWcnLCBiLCBjKSA6OiBsaXN0JylcbiAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgW10pIGxpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbGlzdCcgPVxuICAgICAgICAgICAgaGFzaF9pbm5lciBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvclxuICAgICAgICAgICAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uY29tcGFyZV9ieV9zdG9yeV9pZCBsaXN0J1xuICAgICAgICAgIGluXG4gICAgICAgICAgdmlzaXQyIHEgbG9nX2luZm8gZXJyb3IgKCh0LCBsaXN0JykgOjogYWNjKVxuICAgICAgICApXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID0gdmlzaXQyIGxpc3QgbG9nX2luZm8gZXJyb3IgW10gaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGxpc3RcblxuICBsZXQgcHJvamVjdF90dXBsZSAoZ3JpZCwgXywgXywgdHJhY2UsIGxpc3QpID0gTGlzdC5oZCBsaXN0LCB0cmFjZSwgZ3JpZCwgbGlzdFxuXG4gIGxldCBzb3J0X2xpc3QgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0ID1cbiAgICBsZXQgZmxhdF9saXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbGlzdF9vdXQgKF9wcmVoYXNoLCBsaXN0KSAtPlxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGxpc3Rfb3V0IHR1cGxlIC0+IHByb2plY3RfdHVwbGUgdHVwbGUgOjogbGlzdF9vdXQpXG4gICAgICAgICAgICBsaXN0X291dCBsaXN0KVxuICAgICAgICBbXSBsaXN0XG4gICAgaW5cbiAgICBsZXQgY29tcGFyZV9wYWlyIChhLCBfLCBfLCBfKSAoYywgXywgXywgXykgPVxuICAgICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLmNvbXBhcmVfYnlfc3RvcnlfaWQgYSBjXG4gICAgaW5cbiAgICBsZXQgZmxhdF9saXN0ID0gTGlzdC5zb3J0IGNvbXBhcmVfcGFpciBmbGF0X2xpc3QgaW5cbiAgICAoIGVycm9yLFxuICAgICAgbG9nX2luZm8sXG4gICAgICBMaXN0LnJldl9tYXAgKGZ1biAoX2EsIGIsIGMsIGQpIC0+IGIsIGMsIGQpIChMaXN0LnJldiBmbGF0X2xpc3QpIClcblxuICBsZXQgY291bnRfc3RvcmllcyBsaXN0ID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIG4gbCAtPiBuICsgTGlzdC5sZW5ndGggKHNuZCBsKSkgMCBsaXN0XG5cbiAgbGV0IGZvbGRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gKGVycm9yIDogRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyKSBnXG4gICAgICBsaXN0IGEgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGEgKF8sIGwpIC0+XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBhKSAoXywgXywgXywgeCwgeSkgLT5cbiAgICAgICAgICAgIGcgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgeCB5IGEpXG4gICAgICAgICAgYSBsKVxuICAgICAgKGVycm9yLCBsb2dfaW5mbywgYSkgKExpc3QucmV2IGxpc3QpXG5lbmRcblxubW9kdWxlIEJ1Y2tldFRhYmxlIDogU3RvcnlUYWJsZSA9IHN0cnVjdFxuICB0eXBlIHN0b3J5X2lkID0gaW50XG5cbiAgbGV0IHN1Y2Nfc3RvcnlfaWQgPSBzdWNjXG5cbiAgdHlwZSBwcmVoYXNoX2VsdCA9IG5vZGUgKiBpbnRcblxuICBtb2R1bGUgS2V5UyA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBrZXlcblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGxldCBwcmludCBfIF8gPSAoKVxuICBlbmQpXG5cbiAgbW9kdWxlIFByZUhhc2hTID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IHByZWhhc2hfZWx0XG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgcHJpbnQgXyBfID0gKClcbiAgZW5kKVxuXG4gIG1vZHVsZSBLZXlNYXAgPSBLZXlTLk1hcFxuICBtb2R1bGUgUHJlSGFzaE1hcCA9IFByZUhhc2hTLk1hcFxuXG4gIHR5cGUgaW5uZXJfdHJlZSA9XG4gICAgfCBJbm5lcl9ub2RlIG9mIChpbm5lcl90cmVlIEtleU1hcC50ICogc3RvcnlfaWQgb3B0aW9uKVxuICAgIHwgSW5uZXJfbGVhdmUgb2YgKGtleSBsaXN0ICogc3RvcnlfaWQpXG5cbiAgdHlwZSBvdXRlcl90cmVlID1cbiAgICB8IEVtcHR5XG4gICAgfCBPdXRlcl9ub2RlIG9mIChvdXRlcl90cmVlIFByZUhhc2hNYXAudCAqIHN0b3J5X2lkIG9wdGlvbilcbiAgICB8IE91dGVyX2xlYXZlIG9mIChwcmVoYXNoX2VsdCBsaXN0ICogc3RvcnlfaWQpXG4gICAgfCBUb19pbm5lciBvZiAob3V0ZXJfdHJlZSBQcmVIYXNoTWFwLnQgKiBpbm5lcl90cmVlKVxuXG4gIHR5cGUgdGFibGUgPSB7XG4gICAgdHJlZTogb3V0ZXJfdHJlZTtcbiAgICBhcnJheTpcbiAgICAgIChDYXVzYWwuZ3JpZFxuICAgICAgKiBncmFwaFxuICAgICAgKiBjYW5vbmljYWxfZm9ybSBvcHRpb25cbiAgICAgICogVHJhY2UudFxuICAgICAgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIFRyYWNlLlNpbXVsYXRpb25faW5mby50IGxpc3QpXG4gICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi50O1xuICAgIGZyZXNoX2lkOiBzdG9yeV9pZDtcbiAgfVxuXG4gIGxldCBpbml0X3RhYmxlIHBhcmFtZXRlcnMgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgPVxuICAgIGxldCBlcnJvciwgYXJyYXkgPVxuICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuY3JlYXRlXG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVycylcbiAgICAgICAgZXJyb3IgMFxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCB7IHRyZWUgPSBFbXB0eTsgYXJyYXk7IGZyZXNoX2lkID0gMCB9XG5cbiAgbGV0IGdldF9jYW5ub25pY2FsX2Zvcm0gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaWQgdGFibGUgPVxuICAgIGxldCBlcnJvciwgYXNzb2MgPVxuICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuZ2V0XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvciBpZCB0YWJsZS5hcnJheVxuICAgIGluXG4gICAgbWF0Y2ggYXNzb2Mgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGVycm9yLCBhID1cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcInVua25vd24gc3RvcnkgaWRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb25zaXN0ZW50IHN0b3J5IGlkXCIpICh0YWJsZSwgW10pXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBhXG4gICAgfCBTb21lIChfLCBfLCBTb21lIGNhbm5vbmljLCBfLCBfKSAtPiBlcnJvciwgbG9nX2luZm8sICh0YWJsZSwgY2Fubm9uaWMpXG4gICAgfCBTb21lIChncmlkLCBncmFwaCwgTm9uZSwgdHJhY2UsIGluZm8pIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYW5ub25pYyA9XG4gICAgICAgIGNhbm9uaWNhbGl6ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmFwaFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgYXJyYXknID1cbiAgICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuc2V0XG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgZXJyb3IgaWRcbiAgICAgICAgICAoZ3JpZCwgZ3JhcGgsIFNvbWUgY2Fubm9uaWMsIHRyYWNlLCBpbmZvKVxuICAgICAgICAgIHRhYmxlLmFycmF5XG4gICAgICBpblxuICAgICAgbGV0IHRhYmxlID0geyB0YWJsZSB3aXRoIGFycmF5ID0gYXJyYXknIH0gaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKHRhYmxlLCBjYW5ub25pYylcblxuICBsZXQgYWRkX3N0b3J5IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWQgcHJldHJhY2Ugc3RvcnlfaW5mbyB0YWJsZVxuICAgICAgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGdyYXBoID1cbiAgICAgIGdyYXBoX29mX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBwcmVoYXNoID0gcHJlaGFzaCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBncmFwaCBpblxuICAgIGxldCBhc3NvYyA9IGdyaWQsIGdyYXBoLCBOb25lLCBwcmV0cmFjZSwgc3RvcnlfaW5mbyBpblxuICAgIGxldCBhZGRfc3RvcnkgZXJyb3IgeCB0YWJsZSA9XG4gICAgICBsZXQgZXJyb3IsIGFycmF5ID1cbiAgICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuc2V0XG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgZXJyb3IgdGFibGUuZnJlc2hfaWQgeCB0YWJsZS5hcnJheVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciA9XG4gICAgICAgIGlmXG4gICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXJcbiAgICAgICAgICAmJiBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlclxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgcHJpbnRfZ3JhcGhcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X3NlcnZlcl9jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgdGFibGUuZnJlc2hfaWQgc3RvcnlfaW5mbyBncmFwaFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3JcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgZXJyb3JcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgdGFibGUuZnJlc2hfaWQsXG4gICAgICAgIHsgdGFibGUgd2l0aCBhcnJheTsgZnJlc2hfaWQgPSBzdWNjX3N0b3J5X2lkIHRhYmxlLmZyZXNoX2lkIH0gKVxuICAgIGluXG4gICAgbGV0IGFkZF9zdG9yeV9pbmZvIGVycm9yIHN0b3J5X2luZm8gaWQgdGFibGUgPVxuICAgICAgbGV0IGVycm9yLCBhc3NvX29wdCA9XG4gICAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLmdldFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGVycm9yIGlkIHRhYmxlLmFycmF5XG4gICAgICBpblxuICAgICAgbWF0Y2ggYXNzb19vcHQgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJVbmtub3duIHN0b3J5IGlkXCJcbiAgICAgICAgICAoRmFpbHVyZSBcIlVua25vd24gc3RvcnkgaWRcIikgdGFibGVcbiAgICAgIHwgU29tZSAoZ3JpZCwgZ3JhcGgsIGNhbm9uaWMsIHRyYWNlLCBpbmZvKSAtPlxuICAgICAgICBsZXQgY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHBhcmFtZXRlciA9XG4gICAgICAgICAgbWF0Y2ggSC5nZXRfY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHBhcmFtZXRlciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFN0b3J5X2pzb24uQ2F1c2FsXG4gICAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBTdG9yeV9qc29uLnN0b3J5X21vZGUgPSBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgcGFyYW1ldGVyO1xuICAgICAgICAgICAgU3RvcnlfanNvbi5sb2dfaW5mbyA9IHN0b3J5X2luZm87XG4gICAgICAgICAgICBTdG9yeV9qc29uLnN0b3J5ID0gU3RvcnlfanNvbi5TYW1lX2FzIGlkO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZlxuICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXJcbiAgICAgICAgICAgICYmIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyIChTdG9yeV9qc29uLlN0b3J5IHJlc3VsdClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBhcnJheSA9XG4gICAgICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuc2V0XG4gICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGVycm9yIGlkXG4gICAgICAgICAgICAoZ3JpZCwgZ3JhcGgsIGNhbm9uaWMsIHRyYWNlLCBzdG9yeV9pbmZvIEAgaW5mbylcbiAgICAgICAgICAgIHRhYmxlLmFycmF5XG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCB7IHRhYmxlIHdpdGggYXJyYXkgfVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9hc3NvYyBlcnJvciBjYW5vbmljX2Zvcm0gYXNzb2MgPVxuICAgICAgbWF0Y2ggYXNzb2Mgd2l0aFxuICAgICAgfCBncmlkLCBncmFwaCwgTm9uZSwgdHJhY2UsIGluZm8gLT5cbiAgICAgICAgZXJyb3IsIChncmlkLCBncmFwaCwgU29tZSBjYW5vbmljX2Zvcm0sIHRyYWNlLCBpbmZvKVxuICAgICAgfCBfLCBfLCBTb21lIF8sIF8sIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgXCJ0aGUgY2Fub25pY2FsIGZvcm0gb2YgdGhpcyBzdG9yeSBzaG91bGQgbm90IGhhdmUgYmVlbiBjb21wdXRlZCB5ZXRcIlxuICAgICAgICAgIChGYWlsdXJlXG4gICAgICAgICAgICAgXCJ0aGUgY2Fub25pY2FsIGZvcm0gb2Ygc3RvcmllcyAgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY29tcHV0ZWQgeWV0XCIpXG4gICAgICAgICAgYXNzb2NcbiAgICBpblxuICAgIGxldCByZWMgYXV4X2lubmVyMiBsb2dfaW5mbyBlcnJvciBjYW5vbmljX2Zvcm0gY2Fub25pY19mb3JtJyBpZCcgYXNzb2MgdGFibGVcbiAgICAgICAgPVxuICAgICAgbWF0Y2ggY2Fub25pY19mb3JtLCBjYW5vbmljX2Zvcm0nIHdpdGhcbiAgICAgIHwgW10sIFtdIC0+XG4gICAgICAgIGxldCBlcnJvciwgdGFibGUgPSBhZGRfc3RvcnlfaW5mbyBlcnJvciBzdG9yeV9pbmZvIGlkJyB0YWJsZSBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBJbm5lcl9sZWF2ZSAoW10sIGlkJylcbiAgICAgIHwgdCA6OiBxLCBbXSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBJbm5lcl9ub2RlIChLZXlNYXAuYWRkIHQgKElubmVyX2xlYXZlIChxLCBpZCkpIEtleU1hcC5lbXB0eSwgU29tZSBpZCcpXG4gICAgICAgIClcbiAgICAgIHwgW10sIHQnIDo6IHEnIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgIElubmVyX25vZGVcbiAgICAgICAgICAgIChLZXlNYXAuYWRkIHQnIChJbm5lcl9sZWF2ZSAocScsIGlkJykpIEtleU1hcC5lbXB0eSwgU29tZSBpZCkgKVxuICAgICAgfCB0IDo6IHEsIHQnIDo6IHEnIHdoZW4gdCA9IHQnIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCB0cmVlID1cbiAgICAgICAgICBhdXhfaW5uZXIyIGxvZ19pbmZvIGVycm9yIHEgcScgaWQnIGFzc29jIHRhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIElubmVyX25vZGUgKEtleU1hcC5hZGQgdCB0cmVlIEtleU1hcC5lbXB0eSwgTm9uZSlcbiAgICAgIHwgdCA6OiBxLCB0JyA6OiBxJyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBJbm5lcl9ub2RlXG4gICAgICAgICAgICAoIEtleU1hcC5hZGQgdFxuICAgICAgICAgICAgICAgIChJbm5lcl9sZWF2ZSAocSwgaWQpKVxuICAgICAgICAgICAgICAgIChLZXlNYXAuYWRkIHQnIChJbm5lcl9sZWF2ZSAocScsIGlkJykpIEtleU1hcC5lbXB0eSksXG4gICAgICAgICAgICAgIE5vbmUgKSApXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eF9vdXRlcjIgbG9nX2luZm8gZXJyb3IgcHJlaGFzaCBwcmVoYXNoJyBpZCcgdGFibGUgPVxuICAgICAgbWF0Y2ggcHJlaGFzaCwgcHJlaGFzaCcgd2l0aFxuICAgICAgfCBbXSwgW10gLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2Fubm9uaWNfZm9ybSA9XG4gICAgICAgICAgY2Fub25pY2FsaXplIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgYXNzb2MgPSB1cGRhdGVfYXNzb2MgZXJyb3IgY2Fubm9uaWNfZm9ybSBhc3NvYyBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAodGFibGUsIGNhbm5vbmljX2Zvcm0nKSA9XG4gICAgICAgICAgZ2V0X2Nhbm5vbmljYWxfZm9ybSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpZCcgdGFibGVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUsIGlubmVyID1cbiAgICAgICAgICBhdXhfaW5uZXIyIGxvZ19pbmZvIGVycm9yIGNhbm5vbmljX2Zvcm0gY2Fubm9uaWNfZm9ybScgaWQnIGFzc29jIHRhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIFRvX2lubmVyIChQcmVIYXNoTWFwLmVtcHR5LCBpbm5lcilcbiAgICAgIHwgdCA6OiBxLCBbXSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBPdXRlcl9ub2RlXG4gICAgICAgICAgICAoUHJlSGFzaE1hcC5hZGQgdCAoT3V0ZXJfbGVhdmUgKHEsIGlkKSkgUHJlSGFzaE1hcC5lbXB0eSwgU29tZSBpZCcpXG4gICAgICAgIClcbiAgICAgIHwgW10sIHQnIDo6IHEnIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgIE91dGVyX25vZGVcbiAgICAgICAgICAgIChQcmVIYXNoTWFwLmFkZCB0JyAoT3V0ZXJfbGVhdmUgKHEnLCBpZCcpKSBQcmVIYXNoTWFwLmVtcHR5LCBTb21lIGlkKVxuICAgICAgICApXG4gICAgICB8IHQgOjogcSwgdCcgOjogcScgd2hlbiB0ID0gdCcgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUsIHRyZWUgPVxuICAgICAgICAgIGF1eF9vdXRlcjIgbG9nX2luZm8gZXJyb3IgcSBxJyBpZCcgdGFibGVcbiAgICAgICAgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBPdXRlcl9ub2RlIChQcmVIYXNoTWFwLmFkZCB0IHRyZWUgUHJlSGFzaE1hcC5lbXB0eSwgTm9uZSkgKVxuICAgICAgfCB0IDo6IHEsIHQnIDo6IHEnIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgIE91dGVyX25vZGVcbiAgICAgICAgICAgICggUHJlSGFzaE1hcC5hZGQgdFxuICAgICAgICAgICAgICAgIChPdXRlcl9sZWF2ZSAocSwgaWQpKVxuICAgICAgICAgICAgICAgIChQcmVIYXNoTWFwLmFkZCB0JyAoT3V0ZXJfbGVhdmUgKHEnLCBpZCcpKSBQcmVIYXNoTWFwLmVtcHR5KSxcbiAgICAgICAgICAgICAgTm9uZSApIClcbiAgICBpblxuICAgIGxldCByZWMgYXV4X2lubmVyIGxvZ19pbmZvIGVycm9yIGFzc29jIHN0b3J5X2luZm8gc3VmZml4IGlubmVyX3RyZWUgdGFibGUgPVxuICAgICAgbWF0Y2ggc3VmZml4IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKG1hdGNoIGlubmVyX3RyZWUgd2l0aFxuICAgICAgICB8IElubmVyX25vZGUgKG1hcCwgTm9uZSkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBJbm5lcl9ub2RlIChtYXAsIFNvbWUgaWQpXG4gICAgICAgIHwgSW5uZXJfbm9kZSAoXywgU29tZSBpZCcpIHwgSW5uZXJfbGVhdmUgKFtdLCBpZCcpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCB0YWJsZSA9IGFkZF9zdG9yeV9pbmZvIGVycm9yIHN0b3J5X2luZm8gaWQnIHRhYmxlIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgaW5uZXJfdHJlZVxuICAgICAgICB8IElubmVyX2xlYXZlICh0JyA6OiBxJywgaWQnKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgICAgSW5uZXJfbm9kZVxuICAgICAgICAgICAgICAoS2V5TWFwLmFkZCB0JyAoSW5uZXJfbGVhdmUgKHEnLCBpZCcpKSBLZXlNYXAuZW1wdHksIFNvbWUgaWQpICkpXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICAobWF0Y2ggaW5uZXJfdHJlZSB3aXRoXG4gICAgICAgIHwgSW5uZXJfbm9kZSAobWFwLCBhc3NvYycpIC0+XG4gICAgICAgICAgKG1hdGNoIEtleU1hcC5maW5kX29wdGlvbiB0IG1hcCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICAgIGxldCBpbm5lcl90cmVlID1cbiAgICAgICAgICAgICAgSW5uZXJfbm9kZSAoS2V5TWFwLmFkZCB0IChJbm5lcl9sZWF2ZSAocSwgaWQpKSBtYXAsIGFzc29jJylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBpbm5lcl90cmVlXG4gICAgICAgICAgfCBTb21lIGlubmVyX3RyZWUnIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZScsIGlubmVyX3RyZWUnJyA9XG4gICAgICAgICAgICAgIGF1eF9pbm5lciBsb2dfaW5mbyBlcnJvciBhc3NvYyBzdG9yeV9pbmZvIHEgaW5uZXJfdHJlZScgdGFibGVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBpbm5lcl90cmVlJycgPT0gaW5uZXJfdHJlZScgdGhlblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlJywgaW5uZXJfdHJlZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgIHRhYmxlJyxcbiAgICAgICAgICAgICAgICBJbm5lcl9ub2RlIChLZXlNYXAuYWRkIHQgaW5uZXJfdHJlZScnIG1hcCwgYXNzb2MnKSApKVxuICAgICAgICB8IElubmVyX2xlYXZlIChsJywgaWQnKSAtPlxuICAgICAgICAgIGF1eF9pbm5lcjIgbG9nX2luZm8gZXJyb3Igc3VmZml4IGwnIGlkJyBhc3NvYyB0YWJsZSlcbiAgICBpblxuICAgIGxldCByZWMgYXV4X291dGVyIGxvZ19pbmZvIGVycm9yIGFzc29jIHN0b3J5X2luZm8gc3VmZml4IG91dGVyX3RyZWUgdGFibGUgPVxuICAgICAgbWF0Y2ggc3VmZml4IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKG1hdGNoIG91dGVyX3RyZWUgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgT3V0ZXJfbGVhdmUgKHN1ZmZpeCwgaWQpXG4gICAgICAgIHwgT3V0ZXJfbm9kZSAobWFwLCBOb25lKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIE91dGVyX25vZGUgKG1hcCwgU29tZSBpZClcbiAgICAgICAgfCBPdXRlcl9ub2RlIChtYXAsIFNvbWUgaWQnKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgZ3JhcGggPVxuICAgICAgICAgICAgbWF0Y2ggYXNzb2Mgd2l0aFxuICAgICAgICAgICAgfCBfLCBncmFwaCwgTm9uZSwgXywgXyAtPiBlcnJvciwgZ3JhcGhcbiAgICAgICAgICAgIHwgXywgZ3JhcGgsIFNvbWUgXywgXywgXyAtPlxuICAgICAgICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICBcInRoZSBjYW5vbmljYWwgZm9ybSBvZiBzdG9yaWVzIGluIHRoZSBvdXRlciB0cmVlIHNob3VsZCBub3QgXFxcbiAgICAgICAgICAgICAgICAgICBoYXZlIGJlZW4gY29tcHV0ZWQgeWV0XCJcbiAgICAgICAgICAgICAgICAoRmFpbHVyZVxuICAgICAgICAgICAgICAgICAgIFwidGhlIGNhbm9uaWNhbCBmb3JtIG9mIHN0b3JpZXMgaW4gdGhlIG91dGVyIHRyZWUgc2hvdWxkIG5vdCBcXFxuICAgICAgICAgICAgICAgICAgICBoYXZlIGJlZW4gY29tcHV0ZSB5ZXRcIilcbiAgICAgICAgICAgICAgICBncmFwaFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2Fubm9uaWNfZm9ybSA9XG4gICAgICAgICAgICBjYW5vbmljYWxpemUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JhcGhcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgYXNzb2MgPSB1cGRhdGVfYXNzb2MgZXJyb3IgY2Fubm9uaWNfZm9ybSBhc3NvYyBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICh0YWJsZSwgY2Fubm9uaWNfZm9ybScpID1cbiAgICAgICAgICAgIGdldF9jYW5ub25pY2FsX2Zvcm0gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaWQnIHRhYmxlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgaW5uZXIgPVxuICAgICAgICAgICAgYXV4X2lubmVyMiBsb2dfaW5mbyBlcnJvciBjYW5ub25pY19mb3JtIGNhbm5vbmljX2Zvcm0nIGlkJyBhc3NvY1xuICAgICAgICAgICAgICB0YWJsZVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgVG9faW5uZXIgKG1hcCwgaW5uZXIpXG4gICAgICAgIHwgT3V0ZXJfbGVhdmUgKF9xLCBpZCcpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCB0YWJsZSA9IGFkZF9zdG9yeV9pbmZvIGVycm9yIHN0b3J5X2luZm8gaWQnIHRhYmxlIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgb3V0ZXJfdHJlZVxuICAgICAgICB8IFRvX2lubmVyIChtYXAsIGlubmVyKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN1ZmZpeCA9XG4gICAgICAgICAgICBjYW5vbmljYWxpemUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JhcGhcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgYXNzb2MgPSB1cGRhdGVfYXNzb2MgZXJyb3Igc3VmZml4IGFzc29jIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUsIGlubmVyID1cbiAgICAgICAgICAgIGF1eF9pbm5lciBsb2dfaW5mbyBlcnJvciBhc3NvYyBzdG9yeV9pbmZvIHN1ZmZpeCBpbm5lciB0YWJsZVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgVG9faW5uZXIgKG1hcCwgaW5uZXIpKVxuICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgKG1hdGNoIG91dGVyX3RyZWUgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgT3V0ZXJfbGVhdmUgKHN1ZmZpeCwgaWQpXG4gICAgICAgIHwgT3V0ZXJfbm9kZSAobWFwLCBhc3NvYycpIC0+XG4gICAgICAgICAgKG1hdGNoIFByZUhhc2hNYXAuZmluZF9vcHRpb24gdCBtYXAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgICBsZXQgaW5uZXJfdHJlZSA9XG4gICAgICAgICAgICAgIE91dGVyX25vZGUgKFByZUhhc2hNYXAuYWRkIHQgKE91dGVyX2xlYXZlIChxLCBpZCkpIG1hcCwgYXNzb2MnKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIGlubmVyX3RyZWVcbiAgICAgICAgICB8IFNvbWUgb3V0ZXJfdHJlZScgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlJywgb3V0ZXJfdHJlZScnID1cbiAgICAgICAgICAgICAgYXV4X291dGVyIGxvZ19pbmZvIGVycm9yIGFzc29jIHN0b3J5X2luZm8gcSBvdXRlcl90cmVlJyB0YWJsZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIG91dGVyX3RyZWUnJyA9PSBvdXRlcl90cmVlJyB0aGVuXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUnLCBvdXRlcl90cmVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgdGFibGUnLFxuICAgICAgICAgICAgICAgIE91dGVyX25vZGUgKFByZUhhc2hNYXAuYWRkIHQgb3V0ZXJfdHJlZScnIG1hcCwgYXNzb2MnKSApKVxuICAgICAgICB8IE91dGVyX2xlYXZlICh0JyA6OiBxJywgaWQnKSB3aGVuIG5vdCAodCA9IHQnKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgICAgT3V0ZXJfbm9kZVxuICAgICAgICAgICAgICAoIFByZUhhc2hNYXAuYWRkIHRcbiAgICAgICAgICAgICAgICAgIChPdXRlcl9sZWF2ZSAocSwgaWQpKVxuICAgICAgICAgICAgICAgICAgKFByZUhhc2hNYXAuYWRkIHQnIChPdXRlcl9sZWF2ZSAocScsIGlkJykpIFByZUhhc2hNYXAuZW1wdHkpLFxuICAgICAgICAgICAgICAgIE5vbmUgKSApXG4gICAgICAgIHwgT3V0ZXJfbGVhdmUgKGwnLCBpZCcpIC0+IGF1eF9vdXRlcjIgbG9nX2luZm8gZXJyb3Igc3VmZml4IGwnIGlkJyB0YWJsZVxuICAgICAgICB8IFRvX2lubmVyIChfbWFwLCBpbm5lcikgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICAgIFRvX2lubmVyXG4gICAgICAgICAgICAgICggUHJlSGFzaE1hcC5hZGQgdFxuICAgICAgICAgICAgICAgICAgKE91dGVyX2xlYXZlIChxLCBpZCkpXG4gICAgICAgICAgICAgICAgICAoUHJlSGFzaE1hcC5hZGQgdCAoT3V0ZXJfbGVhdmUgKHEsIGlkKSkgUHJlSGFzaE1hcC5lbXB0eSksXG4gICAgICAgICAgICAgICAgaW5uZXIgKSApKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUsIHRyZWUgPVxuICAgICAgYXV4X291dGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgIChncmlkLCBncmFwaCwgTm9uZSwgcHJldHJhY2UsIHN0b3J5X2luZm8pXG4gICAgICAgIHN0b3J5X2luZm8gcHJlaGFzaCB0YWJsZS50cmVlIHRhYmxlXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHsgdGFibGUgd2l0aCB0cmVlIH1cblxuICAoKiBsZXQgcmVjIHByaW50X2lubmVyX3RyZWUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgcHJlZml4IGlubmVyX3RyZWUgPVxuICAgICBtYXRjaFxuICAgICBpbm5lcl90cmVlXG4gICAgIHdpdGhcbiAgICAgfCBJbm5lcl9ub2RlIChtYXAsYXNzb2MnKSAtPlxuICAgICBsZXQgKCkgPVxuICAgICBtYXRjaFxuICAgICBhc3NvYydcbiAgICAgd2l0aFxuICAgICB8IE5vbmUgLT5cbiAgICAgRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlc1VuZmlsbGVkIE5vZGVcXG5cIiBwcmVmaXhcbiAgICAgfCBTb21lIChpZCkgIC0+XG4gICAgIEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNGaWxsZWQgTm9kZTogJWlcXG5cIiBwcmVmaXggaWRcbiAgICAgaW5cbiAgICAgbGV0IHByZWZpeCcgPSBwcmVmaXheXCIgXCIgaW5cbiAgICAgS2V5TWFwLml0ZXJcbiAgICAgKGZ1biBlbHQgbWFwIC0+XG4gICAgIHByaW50X2VsdCBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBlbHQ7XG4gICAgIHByaW50X2lubmVyX3RyZWUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgcHJlZml4JyBtYXApXG4gICAgIG1hcFxuICAgICB8IElubmVyX2xlYXZlIChsLGlkKSAgLT5cbiAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlc0xFQVZFOlxcblwiIHByZWZpeCBpblxuICAgICBsZXQgXyA9IHByaW50X2Nhbm9uaWNhbF9mb3JtIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGwgaW5cbiAgICAgKCkqKVxuXG4gICgqXG5sZXQgcmVjIHByaW50X291dGVyX3RyZWUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgcHJlZml4IG91dGVyX3RyZWUgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgb3V0ZXJfdHJlZVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlc0VNUFRZXFxuXCIgcHJlZml4XG4gICAgICAgIHwgT3V0ZXJfbm9kZSAobWFwLGFzc29jJykgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgYXNzb2MnXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNVbmZpbGxlZCBOb2RlXFxuXCIgcHJlZml4XG4gICAgICAgIHwgU29tZSAoaWQpICAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzRmlsbGVkIE5vZGU6ICVpXFxuXCIgcHJlZml4IGlkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmVmaXgnID0gcHJlZml4XlwiIFwiIGluXG4gICAgICAgIFByZUhhc2hNYXAuaXRlclxuICAgICAgICAoZnVuICgoXyxiKSxpKSAgbWFwIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXMlczolaS0+XFxuXCIgcHJlZml4IGIgaSA7XG4gICAgICAgIHByaW50X291dGVyX3RyZWUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgcHJlZml4JyBtYXApXG4gICAgICAgIG1hcFxuICAgICAgICB8IE91dGVyX2xlYXZlIChsLGlkKSAgLT5cbiAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlc0xFQVZFOlxcblwiIHByZWZpeCBpblxuICAgICAgICBsZXQgXyA9IHByaW50X3ByZWhhc2ggcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgbCBpblxuICAgICAgICAoKVxuICAgICAgICB8IFRvX2lubmVyIChtYXAsaW5uZXIpIC0+XG4gICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNUTyBJTk5FUiBUUkVFOlxcblwiIHByZWZpeCBpblxuICAgICAgICBsZXQgcHJlZml4JyA9IHByZWZpeF5cIiBcIiBpblxuICAgICAgICBsZXQgKCkgPSBQcmVIYXNoTWFwLml0ZXJcbiAgICAgICAgKGZ1biAoKF8sYiksaSkgIG1hcCAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzJXM6JWktPlxcblwiIHByZWZpeCBiIGkgO1xuICAgICAgICBwcmludF9vdXRlcl90cmVlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHByZWZpeCcgbWFwKVxuICAgICAgICBtYXBcbiAgICAgICAgaW5cbiAgICAgICAgcHJpbnRfaW5uZXJfdHJlZSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBwcmVmaXgnIGlubmVyICopXG5cbiAgbGV0IGhhc2hfbGlzdCBwYXJhbWV0ZXIgXyBsb2dfaW5mbyBlcnJvciB0YWJsZSA9XG4gICAgbGV0IGVycm9yLCBhcnJheSA9XG4gICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi5mb2xkXG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvclxuICAgICAgICAoZnVuIHBhcmFtZXRlcicgZXJyb3IgaSAoYSwgYiwgYywgZCwgZSkgYXJyYXkgLT5cbiAgICAgICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi5zZXQgcGFyYW1ldGVyJyBlcnJvciBpXG4gICAgICAgICAgICAoYSwgYiwgYywgZCwgTGlzdC5zb3J0IFRyYWNlLlNpbXVsYXRpb25faW5mby5jb21wYXJlX2J5X3N0b3J5X2lkIGUpXG4gICAgICAgICAgICBhcnJheSlcbiAgICAgICAgdGFibGUuYXJyYXkgdGFibGUuYXJyYXlcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgeyB0YWJsZSB3aXRoIGFycmF5IH1cblxuICBsZXQgc29ydF9saXN0IHBhcmFtZXRlciBfIGxvZ19pbmZvIGVycm9yIHRhYmxlID1cbiAgICBsZXQgZXJyb3IsIGwgPVxuICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuZm9sZFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3JcbiAgICAgICAgKGZ1biBfcGFyYW1ldGVyIGVycm9yIF8gKGEsIF9iLCBfYywgZCwgZSkgbCAtPiBlcnJvciwgKGQsIGEsIGUpIDo6IGwpXG4gICAgICAgIHRhYmxlLmFycmF5IFtdXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGxcblxuICBsZXQgY291bnRfc3RvcmllcyB0YWJsZSA9IHRhYmxlLmZyZXNoX2lkXG5cbiAgbGV0IGZvbGRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZiB0YWJsZSBhID1cbiAgICBsZXQgYSwgKGIsIGMpID1cbiAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLmZvbGRfd2l0aF9pbnRlcnJ1cHRpb25cbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yXG4gICAgICAgIChmdW4gcGFyYW1ldGVyJyBlcnJvciBfIChfLCBfLCBfLCBkLCBlKSAobG9nX2luZm8sIGEpIC0+XG4gICAgICAgICAgbGV0IGEsIGIsIGMgPVxuICAgICAgICAgICAgZlxuICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcicgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGQgZSBhXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhLCAoYiwgYykpXG4gICAgICAgIHRhYmxlLmFycmF5IChsb2dfaW5mbywgYSlcbiAgICBpblxuICAgIGEsIGIsIGNcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZWxlY3RvciA9IHNpZ1xuICB2YWwgY2hvb3NlX2ZzdCA6IEgucGFyYW1ldGVyIC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgQ2hvaWNlIChTIDogU2VsZWN0b3IpIChBIDogU3RvcnlUYWJsZSkgKEIgOiBTdG9yeVRhYmxlKSA6IFN0b3J5VGFibGUgPVxuc3RydWN0XG4gIHR5cGUgdGFibGUgPSBBIG9mIEEudGFibGUgfCBCIG9mIEIudGFibGVcblxuICBsZXQgaW5pdF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciA9XG4gICAgaWYgUy5jaG9vc2VfZnN0IHBhcmFtZXRlciB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlID1cbiAgICAgICAgQS5pbml0X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBBIHRhYmxlXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlID1cbiAgICAgICAgQi5pbml0X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBCIHRhYmxlXG4gICAgKVxuXG4gIGxldCBhZGRfc3RvcnkgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZCBwcmV0cmFjZSBpbmZvIHRhYmxlID1cbiAgICBtYXRjaCB0YWJsZSB3aXRoXG4gICAgfCBBIHRhYmxlIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSA9XG4gICAgICAgIEEuYWRkX3N0b3J5IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWQgcHJldHJhY2UgaW5mbyB0YWJsZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQSB0YWJsZVxuICAgIHwgQiB0YWJsZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUgPVxuICAgICAgICBCLmFkZF9zdG9yeSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkIHByZXRyYWNlIGluZm8gdGFibGVcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIEIgdGFibGVcblxuICBsZXQgaGFzaF9saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRhYmxlID1cbiAgICBtYXRjaCB0YWJsZSB3aXRoXG4gICAgfCBBIHRhYmxlIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSA9XG4gICAgICAgIEEuaGFzaF9saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRhYmxlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBBIHRhYmxlXG4gICAgfCBCIHRhYmxlIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSA9XG4gICAgICAgIEIuaGFzaF9saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRhYmxlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBCIHRhYmxlXG5cbiAgbGV0IHNvcnRfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZSA9XG4gICAgbWF0Y2ggdGFibGUgd2l0aFxuICAgIHwgQSB0YWJsZSAtPiBBLnNvcnRfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZVxuICAgIHwgQiB0YWJsZSAtPiBCLnNvcnRfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZVxuXG4gIGxldCBjb3VudF9zdG9yaWVzIHRhYmxlID1cbiAgICBtYXRjaCB0YWJsZSB3aXRoXG4gICAgfCBBIHRhYmxlIC0+IEEuY291bnRfc3RvcmllcyB0YWJsZVxuICAgIHwgQiB0YWJsZSAtPiBCLmNvdW50X3N0b3JpZXMgdGFibGVcblxuICBsZXQgZm9sZF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBnIHRhYmxlIGEgPVxuICAgIG1hdGNoIHRhYmxlIHdpdGhcbiAgICB8IEEgdGFibGUgLT4gQS5mb2xkX3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGcgdGFibGUgYVxuICAgIHwgQiB0YWJsZSAtPiBCLmZvbGRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZyB0YWJsZSBhXG5lbmRcblxuKCogbW9kdWxlIFN0b3J5VGFibGUgPSBMaXN0VGFibGUqKVxuKCogbW9kdWxlIFN0b3J5VGFibGUgPSBCdWNrZXRUYWJsZSopXG5tb2R1bGUgU3RvcnlUYWJsZSA9XG4gIENob2ljZVxuICAgIChzdHJ1Y3RcbiAgICAgIGxldCBjaG9vc2VfZnN0ID0gUy5QSC5CLlBCLkNJLlBvLksuSC5kb193ZV91c2VfYnVja2V0X3NvcnRcbiAgICBlbmQpXG4gICAgKEJ1Y2tldFRhYmxlKVxuICAgIChMaXN0VGFibGUpXG4iLCIoKipcbiAqIHV0aWxpdGllcy5tbFxuICpcbiAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxNS0wMy0yOCBmZXJldD5cbiAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0wMyAyMDo1MzoxNCBmZXJldD5cbiAqXG4gKiBBUEkgZm9yIGNhdXNhbCBjb21wcmVzc2lvblxuICogSmVyb21lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gKlxuICogQ29weXJpZ2h0IDIwMTUgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSAgKiBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZVxuICogR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5cbm1vZHVsZSBEID0gRGFnLlN0b3J5VGFibGVcbm1vZHVsZSBTID0gR2VuZXJpY19icmFuY2hfYW5kX2N1dF9zb2x2ZXIuU29sdmVyXG5tb2R1bGUgUCA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHNcblxudHlwZSBlcnJvcl9sb2cgPSBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXJcbnR5cGUgcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5wYXJhbWV0ZXJcbnR5cGUga2FwcGFfaGFuZGxlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguaGFuZGxlclxudHlwZSBwcm9maWxpbmdfaW5mbyA9IFAubG9nX2luZm9cbnR5cGUgc2hhbGxfd2UgPSBwYXJhbWV0ZXIgLT4gYm9vbFxudHlwZSBzdGVwID0gVHJhY2Uuc3RlcFxudHlwZSBzdGVwX3dpdGhfc2lkZV9lZmZlY3RzID0gc3RlcCAqIFMuUEguQi5QQi5DSS5Qby5LLnNpZGVfZWZmZWN0XG50eXBlIHN0ZXBfaWQgPSBTLlBILkIuUEIuc3RlcF9pZFxuXG50eXBlIHRyYWNlID0ge1xuICBjb21wcmVzc2VkX3RyYWNlOiBzdGVwX3dpdGhfc2lkZV9lZmZlY3RzIGxpc3Qgb3B0aW9uO1xuICBwcmV0cmFjZTogc3RlcCBsaXN0O1xuICB3aXRoX3BvdGVudGlhbF9hbWJpZ3VpdHk6IGJvb2w7XG59XG5cbnR5cGUgdHJhY2VfcnVudGltZV9pbmZvID0gcHJvZmlsaW5nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnRcblxudHlwZSAnYSB3aXRoX2hhbmRsZXJzID1cbiAgcGFyYW1ldGVyIC0+XG4gID9zaGFsbF93ZV9jb21wdXRlOnNoYWxsX3dlIC0+XG4gID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpzaGFsbF93ZSAtPlxuICA/cHJpbnRfaWZfemVybzpzaGFsbF93ZSAtPlxuICBrYXBwYV9oYW5kbGVyIC0+XG4gIHByb2ZpbGluZ19pbmZvIC0+XG4gIGVycm9yX2xvZyAtPlxuICAnYVxuXG50eXBlICdhIHplcm9hcnkgPSAoZXJyb3JfbG9nICogcHJvZmlsaW5nX2luZm8gKiAnYSkgd2l0aF9oYW5kbGVyc1xudHlwZSAoJ2EsICdiKSB1bmFyeSA9ICgnYSAtPiBlcnJvcl9sb2cgKiBwcm9maWxpbmdfaW5mbyAqICdiKSB3aXRoX2hhbmRsZXJzXG5cbnR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFyeSA9XG4gICgnYSAtPiAnYiAtPiBlcnJvcl9sb2cgKiBwcm9maWxpbmdfaW5mbyAqICdjKSB3aXRoX2hhbmRsZXJzXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0ZXJuYXJ5ID1cbiAgKCdhIC0+ICdiIC0+ICdjIC0+IGVycm9yX2xvZyAqIHByb2ZpbGluZ19pbmZvICogJ2QpIHdpdGhfaGFuZGxlcnNcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBxdWF0ZXJuYXJ5ID1cbiAgKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+IGVycm9yX2xvZyAqIHByb2ZpbGluZ19pbmZvICogJ2UpIHdpdGhfaGFuZGxlcnNcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcXVpbnRlcm5hcnkgPVxuICAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gZXJyb3JfbG9nICogcHJvZmlsaW5nX2luZm8gKiAnZikgd2l0aF9oYW5kbGVyc1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLCAnZykgc2V4dGVybmFyeSA9XG4gICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiAnZiAtPiBlcnJvcl9sb2cgKiBwcm9maWxpbmdfaW5mbyAqICdnKVxuICB3aXRoX2hhbmRsZXJzXG5cbmxldCAod2Vfc2hhbGwgOiBzaGFsbF93ZSkgPSBmdW4gXyAtPiB0cnVlXG5sZXQgKHdlX3NoYWxsX25vdCA6IHNoYWxsX3dlKSA9IGZ1biBfIC0+IGZhbHNlXG5sZXQgZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHRyYWNlID0gdHJhY2UucHJldHJhY2VcbmxldCBzaXplX29mX3ByZXRyYWNlIHRyYWNlID0gTGlzdC5sZW5ndGggKGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSlcbmxldCBtYXlfaW5pdGlhbF9zaXRlc19iZV9hbWJpZ3VvdXMgdHJhY2UgPSB0cmFjZS53aXRoX3BvdGVudGlhbF9hbWJpZ3VpdHlcbmxldCBzZXRfYW1iaWd1aXR5X2xldmVsIHRyYWNlIHggPSB7IHRyYWNlIHdpdGggd2l0aF9wb3RlbnRpYWxfYW1iaWd1aXR5ID0geCB9XG5sZXQgX3NldF9wcmV0cmFjZSB0cmFjZSB4ID0geyB0cmFjZSB3aXRoIHByZXRyYWNlID0geCB9XG5sZXQgX3NldF9jb21wcmVzc2VkX3RyYWNlIHRyYWNlIHggPSB7IHRyYWNlIHdpdGggY29tcHJlc3NlZF90cmFjZSA9IHggfVxuXG5sZXQgZ2V0X2NvbXByZXNzZWRfdHJhY2UgdHJhY2UgPVxuICBtYXRjaCB0cmFjZS5jb21wcmVzc2VkX3RyYWNlIHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT5cbiAgICBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgsIFtdKSAoTGlzdC5yZXYgKGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSkpXG5cbmxldCBpc19jb21wcmVzc2VkX3RyYWNlIHRyYWNlID0gdHJhY2UuY29tcHJlc3NlZF90cmFjZSAhPSBOb25lXG5cbmxldCB0cmFjZV9vZl9wcmV0cmFjZV93aXRoX2FtYmlndWl0eSB3aXRoX2FtYmlndWl0eSBwcmV0cmFjZSA9XG4gIHtcbiAgICBwcmV0cmFjZTtcbiAgICBjb21wcmVzc2VkX3RyYWNlID0gTm9uZTtcbiAgICB3aXRoX3BvdGVudGlhbF9hbWJpZ3VpdHkgPSB3aXRoX2FtYmlndWl0eTtcbiAgfVxuXG5sZXQgdHJhY2Vfb2ZfcHJldHJhY2UgPSB0cmFjZV9vZl9wcmV0cmFjZV93aXRoX2FtYmlndWl0eSB0cnVlXG5cbmxldCBidWlsZF9jb21wcmVzc2VkX3RyYWNlIHggeSA9XG4gIHsgY29tcHJlc3NlZF90cmFjZSA9IFNvbWUgeTsgcHJldHJhY2UgPSB4OyB3aXRoX3BvdGVudGlhbF9hbWJpZ3VpdHkgPSBmYWxzZSB9XG5cbigqbGV0IGdldF9sb2dfc3RlcCA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ19zdGVwXG4gIGxldCBnZXRfZGVidWdnaW5nX21vZGUgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfbW9kZVxuICBsZXQgZ2V0X2xvZ2dlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciopXG5sZXQgZ2V0X2lkX29mX2V2ZW50ID0gUy5QSC5CLlBCLkNJLlBvLksuZ2V0X2lkX29mX3JlZmluZWRfc3RlcFxubGV0IGdldF9zaW11bGF0aW9uX3RpbWVfb2ZfZXZlbnQgPSBTLlBILkIuUEIuQ0kuUG8uSy5nZXRfdGltZV9vZl9yZWZpbmVkX3N0ZXBcblxubGV0IF9leHRlbmRfdHJhY2Vfd2l0aF9kdW1teV9zaWRlX2VmZmVjdHMgbCA9XG4gIExpc3QucmV2X21hcCAoZnVuIGEgLT4gYSwgW10pIChMaXN0LnJldiBsKVxuXG5sZXQgcHJpbnRfcHJldHJhY2UgcGFyYW1ldGVyIF9oYW5kbGVyID1cbiAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X291dF9jaGFubmVsIHBhcmFtZXRlcilcbiAgICBcIkBbPHY+JWFAXUAuXCJcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoVHJhY2UucHJpbnRfc3RlcCB+Y29tcGFjdDp0cnVlID9lbnY6Tm9uZSkpXG5cbmxldCBwcmludF90cmFjZSBwYXJhbWV0ZXIgaGFuZGxlciB0cmFjZSA9XG4gIHByaW50X3ByZXRyYWNlIHBhcmFtZXRlciBoYW5kbGVyIChnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UpXG5cbmxldCB0cmFuc2Zvcm1fdHJhY2VfZ2VuIGYgbG9nX21lc3NhZ2UgZGVidWdfbWVzc2FnZSBwcm9maWxpbmdfZXZlbnQgcGFyYW1ldGVyc1xuICAgID8oc2hhbGxfd2VfY29tcHV0ZSA9IHdlX3NoYWxsKSA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246X1xuICAgID8ocHJpbnRfaWZfemVybyA9IHdlX3NoYWxsKSBrYXBwYV9oYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlID1cbiAgaWYgc2hhbGxfd2VfY29tcHV0ZSBwYXJhbWV0ZXJzIHRoZW4gKFxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXJzKVxuICAgICAgICBlcnJvciBwcm9maWxpbmdfZXZlbnRcbiAgICAgICAgKFNvbWUgKGZ1biAoKSAtPiBzaXplX29mX3ByZXRyYWNlIHRyYWNlKSlcbiAgICAgICAgcHJvZmlsaW5nX2luZm9cbiAgICBpblxuICAgIGxldCBib29sID1cbiAgICAgIGlmIFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ19zdGVwIHBhcmFtZXRlcnMgdGhlbiAoXG4gICAgICAgIG1hdGNoIGxvZ19tZXNzYWdlIHdpdGhcbiAgICAgICAgfCBTb21lIGxvZ19tZXNzYWdlIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgIFwiJXMlc1wiXG4gICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXJzKSlcbiAgICAgICAgICAgICAgbG9nX21lc3NhZ2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZsdXNoX2xvZ2dlciAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgKSBlbHNlXG4gICAgICAgIGZhbHNlXG4gICAgaW5cbiAgICBsZXQgcHJldHJhY2UgPSBnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UgaW5cbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCAocHJldHJhY2UnLCBuKSA9XG4gICAgICBmIHBhcmFtZXRlcnMga2FwcGFfaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvciBwcmV0cmFjZVxuICAgIGluXG4gICAgbGV0IHRyYWNlJyA9IHRyYWNlX29mX3ByZXRyYWNlIHByZXRyYWNlJyBpblxuICAgIGxldCB0cmFjZSA9XG4gICAgICBpZiB0cmFjZSA9PSB0cmFjZScgdGhlblxuICAgICAgICB0cmFjZVxuICAgICAgZWxzZVxuICAgICAgICBzZXRfYW1iaWd1aXR5X2xldmVsIHRyYWNlJyAobWF5X2luaXRpYWxfc2l0ZXNfYmVfYW1iaWd1b3VzIHRyYWNlKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgaWYgcHJpbnRfaWZfemVybyBwYXJhbWV0ZXJzIHRoZW5cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgIFwiOiBub3RoaW5nIGhhcyBjaGFuZ2VkIEAuXCJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSBcIkAuXCJcbiAgICAgICAgZWxzZSBpZiBuID4gMCB0aGVuXG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICBcIjogLSVpIGV2ZW50cyBALlwiIG5cbiAgICAgICAgZWxzZVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgXCI6ICslaSBldmVudHMgQC5cIiAoLW4pXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX21vZGUgcGFyYW1ldGVycyB0aGVuIChcbiAgICAgICAgbGV0IF8gPVxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXJcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcnMpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZSBmbXQgLT4gRm9ybWF0LmZwcmludGYgZm10IGRlYnVnX21lc3NhZ2VcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgcHJpbnRfdHJhY2UgcGFyYW1ldGVycyBrYXBwYV9oYW5kbGVyIHRyYWNlXG4gICAgICApXG4gICAgaW5cblxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcnMpXG4gICAgICAgIGVycm9yIHByb2ZpbGluZ19ldmVudFxuICAgICAgICAoU29tZSAoZnVuICgpIC0+IHNpemVfb2ZfcHJldHJhY2UgdHJhY2UpKVxuICAgICAgICBwcm9maWxpbmdfaW5mb1xuICAgIGluXG4gICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZVxuICApIGVsc2VcbiAgICBlcnJvciwgcHJvZmlsaW5nX2luZm8sIHRyYWNlXG5cbnR5cGUga2luZCA9ICgqICB8IFNvbHZlX2FtYmlndWl0aWVzKilcbiAgfCBNYXlfYWRkX2FtYmlndWl0aWVzIHwgTmV1dHJhbFxuXG5sZXQgaGFuZGxlX2FtYmlndWl0aWVzIGtpbmQgYiA9XG4gIG1hdGNoIGtpbmQgd2l0aFxuICAoKiAgfCBTb2x2ZV9hbWJpZ3VpdGllcyAtPiBmYWxzZSopXG4gIHwgTmV1dHJhbCAtPiBiXG4gIHwgTWF5X2FkZF9hbWJpZ3VpdGllcyAtPiB0cnVlXG5cbnR5cGUgYW1iaXF1aXRpZXNfcHJlY29uZGl0aW9uID1cbiAgfCBEb19ub3RfY2FyZVxuICB8IFJlcXVpcmVfdGhlX2Fic2NlbmNlX29mX2FtYmlndWl0eSAoKnwgQmV0dGVyX3doZW5fbm9fYW1iaWd1aXR5KilcblxubGV0IG11c3Rfd2Vfc29sdmVfYW1iaWd1aXR5IF9wYXJhbWV0ZXJzIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBEb19ub3RfY2FyZSAtPiBmYWxzZVxuICB8IFJlcXVpcmVfdGhlX2Fic2NlbmNlX29mX2FtYmlndWl0eSAtPiB0cnVlXG4oKiAgfCBCZXR0ZXJfd2hlbl9ub19hbWJpZ3VpdHkgLT4gUy5QSC5CLlBCLkNJLlBvLksuSC5hbHdheXNfZGlzYW1iaWd1YXRlIHBhcmFtZXRlcnMqKVxuXG5sZXQgbW9uYWRpY19saWZ0IGYgXyBfIGxvZ19pbmZvIGVycm9yIHQgPVxuICBsZXQgdCcgPSBmIHQgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCAodCcsIExpc3QubGVuZ3RoIHQgLSBMaXN0Lmxlbmd0aCB0JylcblxubGV0IF9kdW1teV9wcm9maWxpbmcgXyBwID0gcFxuXG5sZXQgZGlzYW1iaWd1YXRlID1cbiAgdHJhbnNmb3JtX3RyYWNlX2dlblxuICAgIChtb25hZGljX2xpZnQgUy5QSC5CLlBCLkNJLlBvLksuZGlzYW1iaWd1YXRlKVxuICAgIChTb21lIFwiXFx0LSBhbHBoYS1jb252ZXJzaW9uXCIpIFwiVHJhY2UgYWZ0ZXIgaGF2aW5nIHJlbmFtZXMgYWdlbnRzOlxcblwiXG4gICAgU3RvcnlQcm9maWxpbmcuQWdlbnRfaWRzX2Rpc2FtYmlndWF0aW9uXG5cbmxldCBtYWtlX3VuYW1iaWd1b3VzIHBhcmFtZXRlcnMgPyhzaGFsbF93ZV9jb21wdXRlID0gd2Vfc2hhbGwpXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiA9IHdlX3NoYWxsX25vdClcbiAgICA/KHByaW50X2lmX3plcm8gPSB3ZV9zaGFsbF9ub3QpIGthcHBhX2hhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2UgPVxuICBpZiBtYXlfaW5pdGlhbF9zaXRlc19iZV9hbWJpZ3VvdXMgdHJhY2UgdGhlbiAoXG4gICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2UnID1cbiAgICAgIGRpc2FtYmlndWF0ZSBwYXJhbWV0ZXJzXG4gICAgICAgIH5zaGFsbF93ZV9jb21wdXRlOihmdW4gcGFyYW1ldGVycyAtPlxuICAgICAgICAgIG1heV9pbml0aWFsX3NpdGVzX2JlX2FtYmlndW91cyB0cmFjZSAmJiBzaGFsbF93ZV9jb21wdXRlIHBhcmFtZXRlcnMpXG4gICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiB+cHJpbnRfaWZfemVybyBrYXBwYV9oYW5kbGVyXG4gICAgICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgaW5cbiAgICAoIGVycm9yLFxuICAgICAgcHJvZmlsaW5nX2luZm8sXG4gICAgICBpZiB0cmFjZScgPT0gdHJhY2UgdGhlblxuICAgICAgICBzZXRfYW1iaWd1aXR5X2xldmVsIHRyYWNlIGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIHNldF9hbWJpZ3VpdHlfbGV2ZWwgdHJhY2UnIGZhbHNlIClcbiAgKSBlbHNlXG4gICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZVxuXG5sZXQgbGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzIGYgcmVxdWlyZW1lbnQgZWZmZWN0IHBhcmFtZXRlcnNcbiAgICA/KHNoYWxsX3dlX2NvbXB1dGUgPSB3ZV9zaGFsbClcbiAgICA/KHNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uID0gd2Vfc2hhbGwpXG4gICAgPyhwcmludF9pZl96ZXJvID0gd2Vfc2hhbGwpIGthcHBhX2hhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2UgPVxuICBpZiBzaGFsbF93ZV9jb21wdXRlIHBhcmFtZXRlcnMgdGhlbiAoXG4gICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2UgPVxuICAgICAgaWYgbXVzdF93ZV9zb2x2ZV9hbWJpZ3VpdHkgcGFyYW1ldGVycyByZXF1aXJlbWVudCB0aGVuXG4gICAgICAgIG1ha2VfdW5hbWJpZ3VvdXMgcGFyYW1ldGVycyB+c2hhbGxfd2VfY29tcHV0ZSBrYXBwYV9oYW5kbGVyXG4gICAgICAgICAgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgIGVsc2VcbiAgICAgICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgKGZcbiAgICAgICAgOiBTLlBILkIuUEIuQ0kuUG8uSy5ILnBhcmFtZXRlciAtPlxuICAgICAgICAgID9zaGFsbF93ZV9jb21wdXRlOnNoYWxsX3dlIC0+XG4gICAgICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOnNoYWxsX3dlIC0+XG4gICAgICAgICAgP3ByaW50X2lmX3plcm86c2hhbGxfd2UgLT5cbiAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmhhbmRsZXIgLT5cbiAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgICAgICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgICAgICAgdHJhY2UgLT5cbiAgICAgICAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogdHJhY2UpXG4gICAgICAgIHBhcmFtZXRlcnMgfnNoYWxsX3dlX2NvbXB1dGUgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uXG4gICAgICAgIH5wcmludF9pZl96ZXJvIGthcHBhX2hhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2VcbiAgICBpblxuICAgIGxldCB0cmFjZSA9IHNldF9hbWJpZ3VpdHlfbGV2ZWwgdHJhY2UgKGhhbmRsZV9hbWJpZ3VpdGllcyBlZmZlY3QgdHJ1ZSkgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHRyYWNlXG4gICkgZWxzZVxuICAgIGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2VcblxubGV0IHNwbGl0X2luaXQgPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlblxuICAgICAgIChtb25hZGljX2xpZnQgUy5QSC5CLlBCLkNJLlBvLksuc3BsaXRfaW5pdClcbiAgICAgICAoU29tZSBcIlxcdC0gc3BsaXR0aW5nIGluaXRpYWwgZXZlbnRzXCIpXG4gICAgICAgXCJUcmFjZSBhZnRlciBoYXZpbmcgc3BsaXQgaW5pdGlhbCBldmVudHM6XFxuXCJcbiAgICAgICBTdG9yeVByb2ZpbGluZy5EZWNvbXBvc2VfaW5pdGlhbF9zdGF0ZSlcbiAgICBEb19ub3RfY2FyZSBOZXV0cmFsXG5cbmxldCBjdXQgPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlbiBTLlBILkIuUEIuQ0kuUG8uY3V0XG4gICAgICAgKFNvbWUgXCJcXHQtIGN1dHRpbmcgY29uY3VycmVudCBldmVudHNcIilcbiAgICAgICBcIlRyYWNlIGFmdGVyIGhhdmluZyByZW1vdmVkIGNvbmN1cnJlbnQgZXZlbnRzOlxcblwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuUGFydGlhbF9vcmRlcl9yZWR1Y3Rpb24pXG4gICAgUmVxdWlyZV90aGVfYWJzY2VuY2Vfb2ZfYW1iaWd1aXR5IE5ldXRyYWxcblxudHlwZSBvbl90aGVfZmx5X2N1dF9zdGF0ZSA9IFMuUEguQi5QQi5DSS5Qby5vbl90aGVfZmx5X3N0YXRlXG5cbmxldCBvbl90aGVfZmx5X2N1dF9pbml0ID0gUy5QSC5CLlBCLkNJLlBvLmluaXRfY3V0XG5sZXQgb25fdGhlX2ZseV9jdXRfc3RlcCA9IFMuUEguQi5QQi5DSS5Qby5jdXRfc3RlcFxuXG5sZXQgb25fdGhlX2ZseV9jdXRfZmluYWxpemUgY3V0X3N0YXRlID1cbiAgZnN0IChTLlBILkIuUEIuQ0kuUG8uZmluYWxpemVfY3V0IGN1dF9zdGF0ZSlcblxubGV0IGN1dF9yZXZfdHJhY2UgcmV2X3RyYWNlID1cbiAgb25fdGhlX2ZseV9jdXRfZmluYWxpemVcbiAgICAoTGlzdC5mb2xkX2xlZnQgb25fdGhlX2ZseV9jdXRfc3RlcCBvbl90aGVfZmx5X2N1dF9pbml0IHJldl90cmFjZSlcblxubGV0IHJlbW92ZV9vYnNfYmVmb3JlIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGFzdF9laWQgdHJhY2UgPVxuICAoIGVycm9yLFxuICAgIGxvZ19pbmZvLFxuICAgIGxldCByZWMgYXV4IGwgc2NvcmUgb3V0cHV0ID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBMaXN0LnJldiBvdXRwdXQsIHNjb3JlXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICBpZiBUcmFjZS5zdGVwX2lzX29icyB0IHRoZW4gKFxuICAgICAgICAgIG1hdGNoIFRyYWNlLnNpbXVsYXRpb25faW5mb19vZl9zdGVwIHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhdXggcSBzY29yZSAodCA6OiBvdXRwdXQpXG4gICAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGlmIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCB4ID49IGxhc3RfZWlkIHRoZW5cbiAgICAgICAgICAgICAgKCBMaXN0LnJldiAoTGlzdC5mb2xkX2xlZnQgKGZ1biBsaXN0IGEgLT4gYSA6OiBsaXN0KSBvdXRwdXQgbCksXG4gICAgICAgICAgICAgICAgc2NvcmUgKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhdXggcSAoc3VjYyBzY29yZSkgb3V0cHV0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGF1eCBxIHNjb3JlICh0IDo6IG91dHB1dClcbiAgICBpblxuICAgIGF1eCB0cmFjZSAwIFtdIClcblxubGV0IHJlbW92ZV9vYnNfYmVmb3JlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxhc3RfaW5mbyB0cmFjZSA9XG4gIGxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllc1xuICAgICh0cmFuc2Zvcm1fdHJhY2VfZ2VuXG4gICAgICAgKGZ1biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAtPlxuICAgICAgICAgcmVtb3ZlX29ic19iZWZvcmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGFzdF9pbmZvKVxuICAgICAgIChTb21lIFwiXFx0LSBSZW1vdmluZyBhbHJlYWR5IHZpc2l0ZWQgb2JzZXJ2YWJsZSBoaXRzXCIpXG4gICAgICAgXCJUcmFjZSBhZnRlciBoYXZpbmcgcmVtb3ZlZCBzZWVuIG9ic2VydmFibGUgaGl0c1xcblwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuUGFydGlhbF9vcmRlcl9yZWR1Y3Rpb24pXG4gICAgRG9fbm90X2NhcmUgTmV1dHJhbCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZVxuXG5sZXQgcmVtb3ZlX29ic19iZWZvcmUgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciBsYXN0X2luZm8gdHJhY2UgPVxuICBtYXRjaCBsYXN0X2luZm8gd2l0aFxuICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCB0cmFjZVxuICB8IFNvbWUgbCAtPlxuICAgIGxldCBsYXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gcmVzdWx0IHggLT5cbiAgICAgICAgICBsZXQgbGFzdF9laWQgPSBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgeCBpblxuICAgICAgICAgIG1heCByZXN1bHQgbGFzdF9laWQpXG4gICAgICAgIDAgbFxuICAgIGluXG4gICAgcmVtb3ZlX29ic19iZWZvcmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGFzdCB0cmFjZVxuXG5sZXQgZmlsbF9zaXBob24gPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlblxuICAgICAgIChtb25hZGljX2xpZnQgUy5QSC5CLlBCLkNJLlBvLksuZmlsbF9zaXBob24pXG4gICAgICAgKFNvbWUgXCJcXHQtIGRldGVjdGluZyBzaXBob25zXCIpIFwiVHJhY2UgYWZ0ZXIgaGF2aW5nIGRldGVjdGVkIHNpcGhvbnM6XFxuXCJcbiAgICAgICBTdG9yeVByb2ZpbGluZy5TaXBob25fZGV0ZWN0aW9uKVxuICAgIFJlcXVpcmVfdGhlX2Fic2NlbmNlX29mX2FtYmlndWl0eSBNYXlfYWRkX2FtYmlndWl0aWVzXG5cbmxldCAocmVtb3ZlX2V2ZW50c19hZnRlcl9sYXN0X29icyA6ICh0cmFjZSwgdHJhY2UpIHVuYXJ5KSA9XG4gIGxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllc1xuICAgICh0cmFuc2Zvcm1fdHJhY2VfZ2VuXG4gICAgICAgKG1vbmFkaWNfbGlmdFxuICAgICAgICAgIChMaXN0X3V0aWwucmVtb3ZlX3N1ZmZpeF9hZnRlcl9sYXN0X29jY3VycmVuY2UgVHJhY2Uuc3RlcF9pc19vYnMpKVxuICAgICAgIChTb21lIFwiXFx0LSByZW1vdmluZyBldmVudHMgb2NjdXJyaW5nIGFmdGVyIHRoZSBsYXN0IG9ic2VydmFibGVcIilcbiAgICAgICBcIlRyYWNlIGFmdGVyIGhhdmluZyByZW1vdmVkIHRoZSBldmVudHMgYWZ0ZXIgdGhlIGxhc3Qgb2JzZXJ2YWJsZVwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuUmVtb3ZlX2V2ZW50c19hZnRlcl9sYXN0X29ic2VydmFibGUpXG4gICAgRG9fbm90X2NhcmUgTmV1dHJhbFxuXG5sZXQgcmVtb3ZlX3BzZXVkb19pbnZlcnNlX2V2ZW50cyA9XG4gIGxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllc1xuICAgICh0cmFuc2Zvcm1fdHJhY2VfZ2VuIFMuUEguQi5QQi5DSS5jdXRcbiAgICAgICAoU29tZSBcIlxcdC0gZGV0ZWN0aW5nIHBzZXVkbyBpbnZlcnNlIGV2ZW50c1wiKVxuICAgICAgIFwiVHJhY2UgYWZ0ZXIgaGF2aW5nIHJlbW92ZWQgcHNldWRvIGludmVyc2UgZXZlbnRzOlxcblwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuUHNldWRvX2ludmVyc2VfZGVsZXRpb24pXG4gICAgRG9fbm90X2NhcmUgTmV1dHJhbFxuXG50eXBlIGNmbG93X2dyaWQgPSBDYXVzYWwuZ3JpZFxudHlwZSBlbnJpY2hlZF9jZmxvd19ncmlkID0gQ2F1c2FsLmVucmljaGVkX2dyaWRcbnR5cGUgbXVzaWNhbF9ncmlkID0gUy5QSC5CLmJsYWNrYm9hcmRcbnR5cGUgc3RvcnlfdGFibGUgPSB7IHN0b3J5X2NvdW50ZXI6IGludDsgc3RvcnlfbGlzdDogRC50YWJsZSB9XG5cbmxldCBjb3VudF9zdG9yaWVzIHN0b3J5X3RhYmxlID0gRC5jb3VudF9zdG9yaWVzIHN0b3J5X3RhYmxlLnN0b3J5X2xpc3RcblxudHlwZSBvYnNlcnZhYmxlX2hpdCA9IHtcbiAgbGlzdF9vZl9hY3Rpb25zOiBTLlBILnVwZGF0ZV9vcmRlciBsaXN0O1xuICBsaXN0X29mX2V2ZW50czogc3RlcF9pZCBsaXN0O1xuICBydW50aW1lX2luZm86IHVuaXQgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgb3B0aW9uO1xufVxuXG5sZXQgZ2V0X2V2ZW50X2xpc3RfZnJvbV9vYnNlcnZhYmxlX2hpdCBhID0gYS5saXN0X29mX2V2ZW50c1xubGV0IGdldF9ydW50aW1lX2luZm9fZnJvbV9vYnNlcnZhYmxlX2hpdCBhID0gYS5ydW50aW1lX2luZm9cbmxldCBfZ2V0X2xpc3Rfb3JkZXIgYSA9IGEubGlzdF9vZl9hY3Rpb25zXG5sZXQgZXJyb3JfaW5pdCA9IEV4Y2VwdGlvbi5lbXB0eV9lcnJvcl9oYW5kbGVyXG5cbmxldCBleHRyYWN0X29ic2VydmFibGVfaGl0c19mcm9tX211c2ljYWxfbm90YXRpb24gYSA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBiIHByb2ZpbGluZ19pbmZvXG4gICAgYyBkID1cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgbCA9IFMuUEguZm9yY2VkX2V2ZW50cyBhIGIgcHJvZmlsaW5nX2luZm8gYyBkIGluXG4gICggZXJyb3IsXG4gICAgcHJvZmlsaW5nX2luZm8sXG4gICAgTGlzdC5yZXZfbWFwXG4gICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICB7IGxpc3Rfb2ZfYWN0aW9ucyA9IGE7IGxpc3Rfb2ZfZXZlbnRzID0gYjsgcnVudGltZV9pbmZvID0gYyB9KVxuICAgICAgKExpc3QucmV2IGwpIClcblxubGV0IGV4dHJhY3Rfb2JzZXJ2YWJsZV9oaXRfZnJvbV9tdXNpY2FsX25vdGF0aW9uIGEgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gYiBwcm9maWxpbmdfaW5mb1xuICAgIGMgc3RyaW5nIGQgPVxuICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCBsID0gUy5QSC5mb3JjZWRfZXZlbnRzIGEgYiBwcm9maWxpbmdfaW5mbyBjIGQgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgWyAoYSwgYiwgYykgXSAtPlxuICAgICggZXJyb3IsXG4gICAgICBwcm9maWxpbmdfaW5mbyxcbiAgICAgIHsgbGlzdF9vZl9hY3Rpb25zID0gYTsgbGlzdF9vZl9ldmVudHMgPSBiOyBydW50aW1lX2luZm8gPSBjIH0gKVxuICB8IFtdIC0+IGZhaWx3aXRoIChzdHJpbmcgXiBcIiBubyBzdG9yeVwiKVxuICB8IF8gOjogXyAtPiBmYWlsd2l0aCAoc3RyaW5nIF4gXCIgc2V2ZXJhbCBzdG9yaWVzXCIpXG5cbmxldCB0cmFuc2xhdGUgcCBoIHByb2ZpbGluZ19pbmZvIGUgYiBsaXN0ID1cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgKGxpc3QsIF8pID1cbiAgICBTLnRyYW5zbGF0ZSBwIGggcHJvZmlsaW5nX2luZm8gZSBiIGxpc3RcbiAgaW5cbiAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZV9vZl9wcmV0cmFjZSBsaXN0XG5cbmxldCBjYXVzYWxfcHJlZml4X29mX2FuX29ic2VydmFibGVfaGl0IHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyXG4gICAgcHJvZmlsaW5nX2luZm8gZXJyb3Igc3RyaW5nIGJsYWNrYm9hcmQgKGVucmljaGVkX2dyaWQgOiBlbnJpY2hlZF9jZmxvd19ncmlkKVxuICAgIG9ic2VydmFibGVfaWQgPVxuICBsZXQgZWlkID1cbiAgICBtYXRjaCBnZXRfZXZlbnRfbGlzdF9mcm9tX29ic2VydmFibGVfaGl0IG9ic2VydmFibGVfaWQgd2l0aFxuICAgIHwgWyBhIF0gLT4gYVxuICAgIHwgW10gLT4gZmFpbHdpdGggKFwibm8gb2JzZXJ2YWJsZSBpbiB0aGF0IHN0b3J5XCIgXiBzdHJpbmcpXG4gICAgfCBfIC0+IGZhaWx3aXRoIChcInNldmVyYWwgb2JzZXJ2YWJsZXMgaW4gdGhhdCBzdG9yeVwiIF4gc3RyaW5nKVxuICBpblxuICBsZXQgZXZlbnRfaWRfbGlzdCA9XG4gICAgR3JhcGhfY2xvc3VyZS5nZXRfbGlzdF9pbl9pbmNyZWFzaW5nX29yZGVyX3dpdGhfbGFzdF9ldmVudFxuICAgICAgKFMuUEguQi5QQi5pbnRfb2Zfc3RlcF9pZCAoUy5QSC5CLlBCLmluY19zdGVwX2lkIGVpZCkpXG4gICAgICBlbnJpY2hlZF9ncmlkLkNhdXNhbC5wcmVjX3N0YXJcbiAgaW5cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgb3V0cHV0ID1cbiAgICB0cmFuc2xhdGUgcGFyYW1ldGVyIGhhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgKExpc3QucmV2X21hcCBTLlBILkIuUEIuc3RlcF9pZF9vZl9pbnQgKExpc3QucmV2IGV2ZW50X2lkX2xpc3QpKVxuICBpblxuICBlcnJvciwgcHJvZmlsaW5nX2luZm8sIG91dHB1dFxuXG5sZXQgZXhwb3J0X211c2ljYWxfZ3JpZF90b194bHMgYSA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBiXG4gICAgKHAgOiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvKSBjIGQgZSBmIGcgPVxuICBTLlBILkIuZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIGEgYiBwIGMgZCBlIGYgZ1xuXG5sZXQgcHJpbnRfbXVzaWNhbF9ncmlkIGEgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gYiBwIGMgZCA9XG4gIFMuUEguQi5wcmludF9ibGFja2JvYXJkIGEgYiBwIGMgZFxuXG5sZXQgY3JlYXRlX3N0b3J5X3RhYmxlIHBhcmFtZXRlcnMgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgIHByb2ZpbGluZ19pbmZvIGVycm9yID1cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgaW5pdCA9XG4gICAgRC5pbml0X3RhYmxlIHBhcmFtZXRlcnMgaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvclxuICBpblxuICBlcnJvciwgcHJvZmlsaW5nX2luZm8sIHsgc3RvcnlfY291bnRlciA9IDE7IHN0b3J5X2xpc3QgPSBpbml0IH1cblxubGV0IF9nZXRfdHJhY2Vfb2Zfc3RvcnkgKF8sIF8sIF8sIHksIF8pID0gdHJhY2Vfb2ZfcHJldHJhY2UgeVxubGV0IF9nZXRfaW5mb19vZl9zdG9yeSAoXywgXywgXywgXywgdCkgPSB0XG5cbmxldCB0aWNrX29wdCBwYXJhbWV0ZXIgYmFyID1cbiAgbWF0Y2ggYmFyIHdpdGhcbiAgfCBOb25lIC0+IGJhclxuICB8IFNvbWUgKGxvZ2dlciwgYmFyKSAtPlxuICAgIFNvbWVcbiAgICAgICggbG9nZ2VyLFxuICAgICAgICBUaWNrX3N0b3JpZXMudGlja19zdG9yaWVzIGxvZ2dlciBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyKVxuICAgICAgICAgIGJhciApXG5cbmxldCBjbG9zZV9wcm9ncmVzc19iYXJfb3B0IGxvZ2dlciA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXJcblxubGV0IHByaW50X2ZhaWxzIGxvZ2dlciBzIG4gPVxuICBtYXRjaCBuIHdpdGhcbiAgfCAwIC0+ICgpXG4gIHwgMSAtPiBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiQC5cXHQgMSAlcyBoYXMgZmFpbGVkQC5cIiBzXG4gIHwgXyAtPiBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiQC5cXHQgJWkgJXNzIGhhdmUgZmFpbGVkQC5cIiBuIHNcblxubGV0IGluY19mYWlscyBhIGEnIGIgPVxuICBpZiBhID09IGEnIHRoZW5cbiAgICBzdWNjIGJcbiAgZWxzZVxuICAgIGJcblxubGV0IGZvbGRfc3RvcnlfdGFibGVfZ2VuIGxvZ2dlciBwYXJhbWV0ZXIgPyhzaGFsbF93ZV9jb21wdXRlID0gd2Vfc2hhbGwpXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiA9IHdlX3NoYWxsKVxuICAgIChoYW5kbGVyIDoga2FwcGFfaGFuZGxlcikgKHByb2ZpbGluZ19pbmZvIDogcHJvZmlsaW5nX2luZm8pIGVycm9yIHNcbiAgICAoZiA6ICh0cmFjZSwgdHJhY2VfcnVudGltZV9pbmZvIGxpc3QsICdhLCAnYSkgdGVybmFyeSkgbCBhID1cbiAgbGV0IG5fc3Rvcmllc19pbnB1dCA9IGNvdW50X3N0b3JpZXMgbCBpblxuICBsZXQgcHJvZ3Jlc3NfYmFyID1cbiAgICBTb21lXG4gICAgICAoIGxvZ2dlcixcbiAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3RvcmllcyBsb2dnZXIgQ29uZmlndXJhdGlvbi5lbXB0eVxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILnNhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlcilcbiAgICAgICAgICAoZmFsc2UsIDAsIDAsIG5fc3Rvcmllc19pbnB1dCkgKVxuICBpblxuICBsZXQgZyBwYXJhbWV0ZXIgaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvciBzdG9yeSBpbmZvXG4gICAgICAoaywgcHJvZ3Jlc3NfYmFyLCBhLCBuX2ZhaWxzKSA9XG4gICAgbGV0IGV2ZW50ID0gU3RvcnlQcm9maWxpbmcuU3RvcnkgayBpblxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8gPVxuICAgICAgUC5hZGRfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIGV2ZW50IE5vbmUgcHJvZmlsaW5nX2luZm9cbiAgICBpblxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIGEnID1cbiAgICAgIGYgcGFyYW1ldGVyIH5zaGFsbF93ZV9jb21wdXRlIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvblxuICAgICAgICBoYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yXG4gICAgICAgICh0cmFjZV9vZl9wcmV0cmFjZV93aXRoX2FtYmlndWl0eSBmYWxzZSBzdG9yeSlcbiAgICAgICAgaW5mbyBhXG4gICAgaW5cbiAgICBsZXQgcHJvZ3Jlc3NfYmFyID0gdGlja19vcHQgcGFyYW1ldGVyIHByb2dyZXNzX2JhciBpblxuICAgIGxldCBuX2ZhaWxzID0gaW5jX2ZhaWxzIGEgYScgbl9mYWlscyBpblxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8gPVxuICAgICAgUC5jbG9zZV9ldmVudFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgZXZlbnQgTm9uZSBwcm9maWxpbmdfaW5mb1xuICAgIGluXG4gICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCAoc3VjYyBrLCBwcm9ncmVzc19iYXIsIGEnLCBuX2ZhaWxzKVxuICBpblxuICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCAoXywgXywgYSwgbl9mYWlscykgPVxuICAgIEQuZm9sZF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvciBnIGwuc3RvcnlfbGlzdFxuICAgICAgKDEsIHByb2dyZXNzX2JhciwgYSwgMClcbiAgaW5cbiAgbGV0ICgpID0gY2xvc2VfcHJvZ3Jlc3NfYmFyX29wdCBsb2dnZXIgaW5cbiAgbGV0ICgpID0gcHJpbnRfZmFpbHMgcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkgubG9nZ2VyX2VyciBzIG5fZmFpbHMgaW5cbiAgZXJyb3IsIChwcm9maWxpbmdfaW5mbyA6IHByb2ZpbGluZ19pbmZvKSwgYVxuXG5sZXQgZm9sZF9zdG9yeV90YWJsZV93aXRoX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGVcbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyXG4gICAgcHJvZmlsaW5nX2luZm8gZXJyb3IgcyBmIGwgYSA9XG4gIGZvbGRfc3RvcnlfdGFibGVfZ2VuXG4gICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiBoYW5kbGVyXG4gICAgcHJvZmlsaW5nX2luZm8gZXJyb3IgcyBmIGwgYVxuXG5sZXQgZm9sZF9zdG9yeV90YWJsZV93aXRob3V0X3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGVcbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyXG4gICAgcHJvZmlsaW5nX2luZm8gZXJyb3IgcyBmIGwgYSA9XG4gIGZvbGRfc3RvcnlfdGFibGVfZ2VuIExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlciBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGVcbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvciBzIGYgbCBhXG5cbmxldCBnZXRfY291bnRlciBzdG9yeV9saXN0ID0gc3RvcnlfbGlzdC5zdG9yeV9jb3VudGVyXG5sZXQgZ2V0X3N0b3JpZXMgc3RvcnlfbGlzdCA9IHN0b3J5X2xpc3Quc3RvcnlfbGlzdFxuXG5sZXQgX2luY19jb3VudGVyIHN0b3J5X2xpc3QgPVxuICB7IHN0b3J5X2xpc3Qgd2l0aCBzdG9yeV9jb3VudGVyID0gc3VjYyBzdG9yeV9saXN0LnN0b3J5X2NvdW50ZXIgfVxuXG5sZXQgYnVpbGRfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBjb21wdXRhdGlvbl9pbmZvIGVycm9yIHRyYWNlIGJvb2wgPVxuICBsZXQgZXJyb3IsIGNvbXB1dGF0aW9uX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLkJ1aWxkX2dyaWQgTm9uZSBjb21wdXRhdGlvbl9pbmZvXG4gIGluXG4gIGxldCBncmlkID0gUy5QSC5CLlBCLkNJLlBvLksuYnVpbGRfZ3JpZCB0cmFjZSBib29sIGhhbmRsZXIgaW5cbiAgbGV0IGVycm9yLCBjb21wdXRhdGlvbl9pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLkJ1aWxkX2dyaWQgTm9uZSBjb21wdXRhdGlvbl9pbmZvXG4gIGluXG4gIGVycm9yLCBjb21wdXRhdGlvbl9pbmZvLCBncmlkXG5cbmxldCBzdG9yZV90cmFjZSAocGFyYW1ldGVyIDogcGFyYW1ldGVyKSA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyXG4gICAgY29tcHV0YXRpb25faW5mbyBlcnJvciB0cmFjZSBvYnNfaW5mbyBzdG9yeV90YWJsZSA9XG4gIGxldCBlcnJvciwgY29tcHV0YXRpb25faW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3IgU3RvcnlQcm9maWxpbmcuU3RvcmVfdHJhY2UgTm9uZSBjb21wdXRhdGlvbl9pbmZvXG4gIGluXG4gIGxldCBwcmV0cmFjZSA9IGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSBpblxuICBsZXQgdHJhY2UyID0gZ2V0X2NvbXByZXNzZWRfdHJhY2UgdHJhY2UgaW5cbiAgbGV0IGJvb2wgPSBub3QgKGlzX2NvbXByZXNzZWRfdHJhY2UgdHJhY2UpIGluXG4gIGxldCBlcnJvciwgY29tcHV0YXRpb25faW5mbywgZ3JpZCA9XG4gICAgYnVpbGRfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBjb21wdXRhdGlvbl9pbmZvIGVycm9yIHRyYWNlMiBib29sXG4gIGluXG4gIGxldCBjb21wdXRhdGlvbl9pbmZvID0gUC5zZXRfZ3JpZF9nZW5lcmF0aW9uIGNvbXB1dGF0aW9uX2luZm8gaW5cbiAgbGV0IHN0b3J5X2luZm8gPVxuICAgIExpc3QucmV2X21hcFxuICAgICAgKFRyYWNlLlNpbXVsYXRpb25faW5mby51cGRhdGVfcHJvZmlsaW5nX2luZm8gKFAuY29weSBjb21wdXRhdGlvbl9pbmZvKSlcbiAgICAgIChMaXN0LnJldiBvYnNfaW5mbylcbiAgaW5cbiAgbGV0IGVycm9yLCBjb21wdXRhdGlvbl9pbmZvLCBzdG9yeV9saXN0ID1cbiAgICBELmFkZF9zdG9yeSBwYXJhbWV0ZXIgaGFuZGxlciBjb21wdXRhdGlvbl9pbmZvIGVycm9yIGdyaWQgcHJldHJhY2VcbiAgICAgIHN0b3J5X2luZm8gc3RvcnlfdGFibGUuc3RvcnlfbGlzdFxuICBpblxuICBsZXQgc3RvcnlfdGFibGUgPVxuICAgIHsgc3RvcnlfbGlzdDsgc3RvcnlfY291bnRlciA9IHN0b3J5X3RhYmxlLnN0b3J5X2NvdW50ZXIgKyAxIH1cbiAgaW5cbiAgbGV0IGVycm9yLCBjb21wdXRhdGlvbl9pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLlN0b3JlX3RyYWNlIE5vbmUgY29tcHV0YXRpb25faW5mb1xuICBpblxuXG4gIGVycm9yLCBjb21wdXRhdGlvbl9pbmZvLCBzdG9yeV90YWJsZVxuXG5sZXQgZmxhdHRlbl9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mb1xuICAgIGVycm9yIHN0b3J5X3RhYmxlID1cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgRC5oYXNoX2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RvcnlfdGFibGUuc3RvcnlfbGlzdFxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIHsgc3RvcnlfdGFibGUgd2l0aCBzdG9yeV9saXN0ID0gbGlzdCB9XG5cbmxldCBjb21wcmVzcyA/aGV1cmlzdGljIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvXG4gICAgZXJyb3IgdHJhY2UgPVxuICBtYXRjaCBwYXJhbWV0ZXIuUy5QSC5CLlBCLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCBbIHRyYWNlIF1cbiAgfCBTb21lIFN0b3J5X2pzb24uQ2F1c2FsIC0+XG4gICAgbGV0ICgpID1cbiAgICAgIGlmXG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyXG4gICAgICAgICYmIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyXG4gICAgICB0aGVuXG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucHVzaF9qc29uIHBhcmFtZXRlclxuICAgICAgICAgIChTdG9yeV9qc29uLlBoYXNlXG4gICAgICAgICAgICAgKFN0b3J5X2pzb24uSW5wcm9ncmVzcywgXCJTdGFydCBvbmUgY2F1c2FsIGNvbXByZXNzaW9uXCIpKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgY3V0IHBhcmFtZXRlciB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbCBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIFsgdHJhY2UgXVxuICB8IFNvbWUgKFN0b3J5X2pzb24uV2VhayB8IFN0b3J5X2pzb24uU3Ryb25nKSAtPlxuICAgIGxldCBldmVudCwgcyA9XG4gICAgICBtYXRjaCBwYXJhbWV0ZXIuUy5QSC5CLlBCLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICAgICAgfCBTb21lIFN0b3J5X2pzb24uV2VhayAtPlxuICAgICAgICBTdG9yeVByb2ZpbGluZy5XZWFrX2NvbXByZXNzaW9uLCBcIlN0YXJ0IG9uZSB3ZWFrIGNvbXByZXNzaW9uXCJcbiAgICAgIHwgXyAtPiBTdG9yeVByb2ZpbGluZy5TdHJvbmdfY29tcHJlc3Npb24sIFwiU3RhcnQgb25lIHN0cm9uZyBjb21wcmVzc2lvblwiXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWZcbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXJcbiAgICAgICAgJiYgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfY2hhbm5lbF9vbiBwYXJhbWV0ZXJcbiAgICAgIHRoZW5cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAgICAgKFN0b3J5X2pzb24uUGhhc2UgKFN0b3J5X2pzb24uSW5wcm9ncmVzcywgcykpXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIFAuYWRkX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvciBldmVudFxuICAgICAgICAoU29tZSAoZnVuICgpIC0+IHNpemVfb2ZfcHJldHJhY2UgdHJhY2UpKVxuICAgICAgICBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGV2ZW50X2xpc3QgPSBnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgIFMuUEguQi5pbXBvcnQgP2hldXJpc3RpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgIFMuUEguZm9yY2VkX2V2ZW50cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgbGlzdF9vcmRlciA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgKGxpc3Rfb3JkZXIsIF8sIF8pIDo6IF8gLT4gbGlzdF9vcmRlclxuICAgICAgfCBfIC0+IFtdXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgb3V0cHV0LCBsaXN0KSA9XG4gICAgICBTLmNvbXByZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdF9vcmRlclxuICAgIGluXG4gICAgbGV0IGxpc3QgPVxuICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgIChmdW4gcHJldHJhY2UgLT5cbiAgICAgICAgICBsZXQgZXZlbnRfbGlzdCA9IFMudHJhbnNsYXRlX3Jlc3VsdCBwcmV0cmFjZSBpblxuICAgICAgICAgIGxldCBldmVudF9saXN0ID0gUy5QSC5CLlBCLkNJLlBvLksuY2xlYW5fZXZlbnRzIGV2ZW50X2xpc3QgaW5cbiAgICAgICAgICBidWlsZF9jb21wcmVzc2VkX3RyYWNlIGV2ZW50X2xpc3QgcHJldHJhY2UpXG4gICAgICAgIGxpc3RcbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFAuc2V0X3N0b3J5X3Jlc2VhcmNoX3RpbWUgbG9nX2luZm8gaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIFAuY2xvc2VfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIGV2ZW50XG4gICAgICAgIChTb21lIChmdW4gKCkgLT4gc2l6ZV9vZl9wcmV0cmFjZSB0cmFjZSkpXG4gICAgICAgIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgIGlmIFMuUEguQi5pc19mYWlsZWQgb3V0cHV0IHRoZW5cbiAgICAgICAgRXhjZXB0aW9uLndhcm5cbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBlcnJvciBfX1BPU19fIH5tZXNzYWdlOlwiT25lIGNvbXByZXNzaW9uIGhhcyBmYWlsZWRcIiBFeGl0ICgpXG4gICAgICBlbHNlXG4gICAgICAgIGVycm9yLCAoKVxuICAgIGluXG4gICAgbGV0IGVycm9yID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmxvZ2dlcl9lcnJcbiAgICAgICAgICAgIFwiXFx0XFx0ICogcmVzdWx0XCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICBpZiBTLlBILkIuaXNfZmFpbGVkIG91dHB1dCB0aGVuIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgX2xvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgIFMuUEguQi5leHBvcnRfYmxhY2tib2FyZF90b194bHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICBcIkZBSUxcIiAwIDAgYmxhY2tib2FyZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBwYXJhbWV0ZXIuUy5QSC5CLlBCLkNJLlBvLksuSC5sb2dnZXJfZXJyXG4gICAgICAgICAgICAgICAgXCJGYWlsX3RvX2NvbXByZXNzXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvclxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkgubG9nZ2VyX2VyclxuICAgICAgICAgICAgICAgIFwiU3VjY2VlZF90b19jb21wcmVzc1wiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yXG4gICAgICApIGVsc2VcbiAgICAgICAgZXJyb3JcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgbGlzdFxuXG5sZXQgc3Ryb25nbHlfY29tcHJlc3MgP2hldXJpc3RpYyBwYXJhbWV0ZXIgPVxuICBjb21wcmVzcyA/aGV1cmlzdGljIChTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9jb21wcmVzc2lvbl9zdHJvbmcgcGFyYW1ldGVyKVxuXG5sZXQgd2Vha2x5X2NvbXByZXNzID9oZXVyaXN0aWMgcGFyYW1ldGVyID1cbiAgY29tcHJlc3MgP2hldXJpc3RpYyAoUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfY29tcHJlc3Npb25fd2VhayBwYXJhbWV0ZXIpXG5cbmxldCBjb252ZXJ0X3RyYWNlX2ludG9fZ3JpZCB0cmFjZSBoYW5kbGVyID1cbiAgbGV0IGV2ZW50X2xpc3QgPSBnZXRfY29tcHJlc3NlZF90cmFjZSB0cmFjZSBpblxuICBTLlBILkIuUEIuQ0kuUG8uSy5idWlsZF9ncmlkIGV2ZW50X2xpc3RcbiAgICAobm90IChpc19jb21wcmVzc2VkX3RyYWNlIHRyYWNlKSlcbiAgICBoYW5kbGVyXG5cbmxldCBjb252ZXJ0X3RyYWNlX2ludG9fbXVzaWNhbF9ub3RhdGlvbiBwYXJhbWV0ZXJzID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGthcHBhX2hhbmRsZXJcbiAgICBwcm9maWxpbmdfaW5mbyBlcnJvciB0cmFjZSA9XG4gIFMuUEguQi5pbXBvcnQgcGFyYW1ldGVycyBrYXBwYV9oYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yXG4gICAgKGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSlcblxubGV0IGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9jbG9zdXJlIGNvbmZpZyBsb2dnZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mb1xuICAgIGVycm9yIGdyaWQgPVxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvdXRwdXQgPVxuICAgIENhdXNhbC5lbnJpY2hfZ3JpZFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBsb2dnZXIpXG4gICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNvbmZpZyBncmlkXG4gIGluXG4gIGVycm9yLCBsb2dfaW5mbywgb3V0cHV0XG5cbmxldCBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRoX2FfcHJvZ3Jlc3NfYmFyID1cbiAgZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX2Nsb3N1cmVcbiAgICBHcmFwaF9jbG9zdXJlLmNvbmZpZ19iaWdfZ3JhcGhfd2l0aF9wcm9ncmVzc19iYXJcblxubGV0IGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9wYXN0X29mX29ic2VydmFibGVzX3dpdGhvdXRfYV9wcm9ncmVzc19iYXIgPVxuICBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfY2xvc3VyZVxuICAgIEdyYXBoX2Nsb3N1cmUuY29uZmlnX2JpZ19ncmFwaF93aXRob3V0X3Byb2dyZXNzX2JhclxuXG5sZXQgX2VucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9wYXN0X29mX2VhY2hfbm9kZV93aXRob3V0X2FfcHJvZ3Jlc3NfYmFyID1cbiAgZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX2Nsb3N1cmVcbiAgICBHcmFwaF9jbG9zdXJlLmNvbmZpZ19iaWdfZ3JhcGhfd2l0aG91dF9wcm9ncmVzc19iYXJcblxubGV0IGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9wYXN0X29mX2VhY2hfbm9kZV93aXRob3V0X2FfcHJvZ3Jlc3NfYmFyID1cbiAgZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX2Nsb3N1cmUgR3JhcGhfY2xvc3VyZS5jb25maWdfc21hbGxfZ3JhcGhcblxubGV0IHNvcnRfc3RvcnlfbGlzdCA9IEQuc29ydF9saXN0XG5cbmxldCBleHBvcnRfc3RvcnlfdGFibGUgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciB4ID1cbiAgbGV0IGEsIGxvZ19pbmZvLCBiID1cbiAgICBzb3J0X3N0b3J5X2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgKGdldF9zdG9yaWVzIHgpXG4gIGluXG4gIGEsIGxvZ19pbmZvLCBiXG5cbmxldCBoYXNfb2JzIHggPSBMaXN0LmV4aXN0cyBUcmFjZS5zdGVwX2lzX29icyAoZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHgpXG5cbmxldCBmb2xkX2xlZnRfd2l0aF9wcm9ncmVzc19iYXIgPyhldmVudCA9IFN0b3J5UHJvZmlsaW5nLkR1bW15KSBwYXJhbWV0ZXJcbiAgICA/KHNoYWxsX3dlX2NvbXB1dGUgPSB3ZV9zaGFsbClcbiAgICA/KHNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uID0gd2Vfc2hhbGwpXG4gICAgPyhwcmludF9pZl96ZXJvID0gd2Vfc2hhbGwpIGhhbmRsZXIgcHJvZmlsaW5nX2luZm9ybWF0aW9uIGVycm9yXG4gICAgKGYgOiAoJ2EsICdiLCAnYSkgYmluYXJ5KSBhIGxpc3QgPVxuICBsZXQgbiA9IExpc3QubGVuZ3RoIGxpc3QgaW5cbiAgbGV0IHN0cmluZywgKGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24pID1cbiAgICBpZiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmlzX2R1bW15IGV2ZW50IHRoZW5cbiAgICAgIFwiXCIsIChlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uKVxuICAgIGVsc2VcbiAgICAgICggU3RvcnlQcm9maWxpbmcuc3RyaW5nX29mX3N0ZXBfa2luZCBldmVudCxcbiAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBlcnJvciBldmVudFxuICAgICAgICAgIChTb21lIChmdW4gXyAtPiBMaXN0Lmxlbmd0aCBsaXN0KSlcbiAgICAgICAgICBwcm9maWxpbmdfaW5mb3JtYXRpb24gKVxuICBpblxuICBsZXQgcHJvZ3Jlc3NfYmFyID1cbiAgICBUaWNrX3N0b3JpZXMudGlja19zdG9yaWVzXG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLnNhdmVfcHJvZ3Jlc3NfYmFyXG4gICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAoZmFsc2UsIDAsIDAsIG4pXG4gIGluXG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uLCBfLCBfLCBhLCBuX2ZhaWwgPVxuICAgIGxldCByZWMgYXV4IGxpc3QgKGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGJhciwgaywgYSwgbl9mYWlsKSA9XG4gICAgICBsZXQgZXZlbnQgPSBTdG9yeVByb2ZpbGluZy5TdG9yeSBrIGluXG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgW10gLT4gZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiwgYmFyLCBrLCBhLCBuX2ZhaWxcbiAgICAgIHwgeCA6OiB0YWlsIC0+XG4gICAgICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uID1cbiAgICAgICAgICBQLmFkZF9ldmVudFxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBlcnJvciBldmVudCBOb25lIHByb2ZpbGluZ19pbmZvcm1hdGlvblxuICAgICAgICBpblxuICAgICAgICBsZXQgb3V0cHV0X29wdCA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiwgYScgPVxuICAgICAgICAgICAgICBmIHBhcmFtZXRlciB+c2hhbGxfd2VfY29tcHV0ZVxuICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiB+cHJpbnRfaWZfemVybyBoYW5kbGVyXG4gICAgICAgICAgICAgICAgcHJvZmlsaW5nX2luZm9ybWF0aW9uIGVycm9yIGEgeFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiYXIgPVxuICAgICAgICAgICAgICBUaWNrX3N0b3JpZXMudGlja19zdG9yaWVzXG4gICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbi5lbXB0eVxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLnNhdmVfcHJvZ3Jlc3NfYmFyXG4gICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgIGJhclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBuX2ZhaWwgPSBpbmNfZmFpbHMgYSBhJyBuX2ZhaWwgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uID1cbiAgICAgICAgICAgICAgUC5jbG9zZV9ldmVudFxuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGVycm9yIGV2ZW50IE5vbmUgcHJvZmlsaW5nX2luZm9ybWF0aW9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU29tZSAoZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiwgYmFyLCBrICsgMSwgYScsIG5fZmFpbClcbiAgICAgICAgICB3aXRoIFN5cy5CcmVhayAtPiBOb25lXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBvdXRwdXRfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24gPVxuICAgICAgICAgICAgUC5jbG9zZV9ldmVudFxuICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgZXJyb3IgZXZlbnQgTm9uZSBwcm9maWxpbmdfaW5mb3JtYXRpb25cbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGJhciwgayArIDEsIGEsIG5fZmFpbFxuICAgICAgICB8IFNvbWUgcmVtYW5lbnQgLT4gYXV4IHRhaWwgcmVtYW5lbnQpXG4gICAgaW5cbiAgICBhdXggbGlzdCAoZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiwgcHJvZ3Jlc3NfYmFyLCAxLCBhLCAwKVxuICBpblxuICBsZXQgKCkgPSBjbG9zZV9wcm9ncmVzc19iYXJfb3B0IChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBpblxuICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiA9XG4gICAgaWYgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pc19kdW1teSBldmVudCB0aGVuXG4gICAgICBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uXG4gICAgZWxzZVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgZXZlbnQgTm9uZSBwcm9maWxpbmdfaW5mb3JtYXRpb25cbiAgaW5cbiAgbGV0ICgpID0gcHJpbnRfZmFpbHMgcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkgubG9nZ2VyX2VyciBzdHJpbmcgbl9mYWlsIGluXG4gIGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGFcblxubGV0IF9mb2xkX292ZXJfdGhlX2NhdXNhbF9wYXN0X29mX29ic2VydmFibGVzX3Rocm91Z2hfYV9ncmlkX3dpdGhfYV9wcm9ncmVzc19iYXJcbiAgICBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBmIHQgYSA9XG4gIGxldCBncmlkID0gY29udmVydF90cmFjZV9pbnRvX2dyaWQgdCBoYW5kbGVyIGluXG4gIENhdXNhbC5mb2xkX292ZXJfY2F1c2FsX3Bhc3Rfb2Zfb2JzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgR3JhcGhfY2xvc3VyZS5jb25maWdfYmlnX2dyYXBoX3dpdGhfcHJvZ3Jlc3NfYmFyIGdyaWQgZiAoZXJyb3IsIGxvZ19pbmZvLCBhKVxuXG5sZXQgZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRoX2FfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlclxuICAgID9zaGFsbF93ZV9jb21wdXRlOl8gP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl9cbiAgICA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbG9nX3N0ZXAgZGVidWdfbW9kZSBjb3VudGVyIGYgdCBhID1cbiAgbGV0ICgpID1cbiAgICBpZiBsb2dfc3RlcCBwYXJhbWV0ZXIgdGhlblxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICBcIiVzXFx0LSBibGFja2JvYXJkIGdlbmVyYXRpb24gQC5cIlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgY29udmVydF90cmFjZV9pbnRvX211c2ljYWxfbm90YXRpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdFxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICBleHRyYWN0X29ic2VydmFibGVfaGl0c19mcm9tX211c2ljYWxfbm90YXRpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgIGVycm9yIGJsYWNrYm9hcmRcbiAgaW5cbiAgbGV0IG5fc3RvcmllcyA9IExpc3QubGVuZ3RoIGxpc3QgaW5cbiAgbGV0ICgpID1cbiAgICBpZiBsb2dfc3RlcCBwYXJhbWV0ZXIgdGhlblxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICBcIiVzXFx0LSBjb21wdXRpbmcgY2F1c2FsIHBhc3Qgb2YgZWFjaCBvYnNlcnZlZCBldmVudHMgKCVpKUAuXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgIG5fc3Rvcmllc1xuICBpblxuICAoKiBnZW5lcmF0aW9uIG9mIHVuY29tcHJlc3NlZCBzdG9yaWVzICopXG4gIGxldCAoKSA9XG4gICAgaWYgZGVidWdfbW9kZSBwYXJhbWV0ZXIgdGhlblxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICBcIiVzXFx0XFx0KiBjYXVzYWwgY29tcHJlc3Npb24gXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gIGluXG4gIGxldCBsb2dfaW5mbyA9IFAuc2V0X3N0YXJ0X2NvbXByZXNzaW9uIGxvZ19pbmZvIGluXG4gIGxldCBncmlkID0gY29udmVydF90cmFjZV9pbnRvX2dyaWQgdCBoYW5kbGVyIGluXG4gIGxldCBvdXRwdXQgPVxuICAgIENhdXNhbC5mb2xkX292ZXJfY2F1c2FsX3Bhc3Rfb2Zfb2JzXG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgR3JhcGhfY2xvc3VyZS5jb25maWdfYmlnX2dyYXBoX3dpdGhfcHJvZ3Jlc3NfYmFyXG4gICAgICBncmlkXG4gICAgICAoZnVuIHBhcmFtZXRlcicgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBvYnNlcnZhYmxlX2hpdCBjYXVzYWxfcGFzdFxuICAgICAgICAgICAoY291bnRlciwgbGlzdCwgYSkgLT5cbiAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBTdG9wLnN1Y2Nlc3MgKGNvdW50ZXIsIGxpc3QsIGEpXG4gICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudCBwYXJhbWV0ZXInIGVycm9yXG4gICAgICAgICAgICAgIChTdG9yeVByb2ZpbGluZy5TdG9yeSBjb3VudGVyKSBOb25lIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb2JzZXJ2YWJsZV9pZCA9IGhlYWQgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPSBQLnJlc2V0X2xvZyBsb2dfaW5mbyBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHBhcmFtZXRlciB0aGVuXG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiJXNcXHRcXHQqIGNhdXNhbCBjb21wcmVzc2lvbiBcIlxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiB3ZSB0cmFuc2xhdGUgdGhlIGxpc3Qgb2YgZXZlbnQgaWRzIGludG8gYSB0cmFjZSB0aGFua3MgdG8gdGhlIGJsYWNrYm9hZCAqKVxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgICAgICAgIHRyYW5zbGF0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIChMaXN0LnJldl9tYXAgUy5QSC5CLlBCLnN0ZXBfaWRfb2ZfaW50XG4gICAgICAgICAgICAgICAgIChvYnNlcnZhYmxlX2hpdCA6OiBjYXVzYWxfcGFzdCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiB3ZSBjb2xsZWN0IHJ1biB0aW1lIGluZm8gYWJvdXQgdGhlIG9ic2VydmFibGUgKilcbiAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICBtYXRjaCBnZXRfcnVudGltZV9pbmZvX2Zyb21fb2JzZXJ2YWJsZV9oaXQgb2JzZXJ2YWJsZV9pZCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgIHwgU29tZSBpbmZvIC0+XG4gICAgICAgICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICAgICAgICB7IGluZm8gd2l0aCBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgPSBjb3VudGVyIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgICAgICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby51cGRhdGVfcHJvZmlsaW5nX2luZm8gbG9nX2luZm8gaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBbIGluZm8gXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYSA9XG4gICAgICAgICAgICAoZiA6ICgnYSwgJ2IsICdjLCAnZCkgdGVybmFyeSlcbiAgICAgICAgICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2UgaW5mbyBhXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnQgcGFyYW1ldGVyJyBlcnJvclxuICAgICAgICAgICAgICAoU3RvcnlQcm9maWxpbmcuU3RvcnkgY291bnRlcikgTm9uZSBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgU3RvcC5zdWNjZXNzX29yX3N0b3BcbiAgICAgICAgICAgICAgKGZ1biBhIC0+IFN0b3Auc3VjY2VzcyAoY291bnRlciArIDEsIHRhaWwsIGEpKVxuICAgICAgICAgICAgICAoZnVuIGIgLT4gU3RvcC5zdG9wIChiLCBjb3VudGVyKSlcbiAgICAgICAgICAgICAgYSApKVxuICAgICAgKGNvdW50ZXIsIExpc3QucmV2IGxpc3QsIGEpXG4gIGluXG4gIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCAoXywgXywgYSkpIC0+IGVycm9yLCBsb2dfaW5mbywgU3RvcC5zdWNjZXNzIGEpXG4gICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCAoYSwgY291bnRlcikpIC0+XG4gICAgICBlcnJvciwgbG9nX2luZm8sIFN0b3Auc3RvcCAoYSwgY291bnRlcikpXG4gICAgb3V0cHV0XG5cbmxldCBjb3B5X2xvZ19pbmZvID0gUC5jb3B5XG5cbnR5cGUgY2Fub25pY2FsX2Zvcm0gPSBEYWcuY2Fub25pY2FsX2Zvcm1cblxubGV0IGNvbXBhcmVfY2Fub25pY2FsX2Zvcm0gPSBEYWcuY29tcGFyZV9jYW5vbmljXG5cbmxldCBjb21wdXRlX2Nhbm9uaWNhbF9mb3JtIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvXG4gICAgZXJyb3IgdHJhY2UgPVxuICBsZXQgZ3JpZCA9IGNvbnZlcnRfdHJhY2VfaW50b19ncmlkIHRyYWNlIGhhbmRsZXIgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgZ3JhcGggPVxuICAgIERhZy5ncmFwaF9vZl9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWRcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2Fub25pYyA9XG4gICAgRGFnLmNhbm9uaWNhbGl6ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmFwaFxuICBpblxuICAoZXJyb3IgOiBlcnJvcl9sb2cpLCAobG9nX2luZm8gOiBwcm9maWxpbmdfaW5mbyksIChjYW5vbmljIDogY2Fub25pY2FsX2Zvcm0pXG5cbm1vZHVsZSBFdmVudCA6IEJsYWNrX2xpc3QuRXZlbnQgd2l0aCB0eXBlIGV2ZW50ID0gc3RlcCA9IHN0cnVjdFxuICB0eXBlIGV2ZW50ID0gc3RlcFxuICB0eXBlIGVpZCA9IGludFxuICB0eXBlICdhIHQgPSAnYSBhcnJheVxuXG4gIGxldCBrZXlfb2ZfZXZlbnQgZXZlbnQgPVxuICAgIGlmXG4gICAgICAoVHJhY2Uuc3RlcF9pc19ydWxlIGV2ZW50IHx8IFRyYWNlLnN0ZXBfaXNfcGVydCBldmVudClcbiAgICAgICYmIG5vdCAoVHJhY2UuaGFzX2NyZWF0aW9uX29mX3N0ZXAgZXZlbnQpXG4gICAgdGhlblxuICAgICAgZ2V0X2lkX29mX2V2ZW50IGV2ZW50XG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG4gIGxldCBpbml0IGVpZCBkZWZhdWx0ID0gQXJyYXkubWFrZSBlaWQgZGVmYXVsdFxuXG4gIGxldCBzZXQgdCBlaWQgdmFsdWUgPVxuICAgIGxldCAoKSA9IEFycmF5LnNldCB0IGVpZCB2YWx1ZSBpblxuICAgIHRcblxuICBsZXQgZ2V0IHQgZWlkID0gQXJyYXkuZ2V0IHQgZWlkXG5lbmRcblxubW9kdWxlIEJsYWNrTGlzdCA6IEJsYWNrX2xpc3QuQmxhY2tsaXN0IHdpdGggdHlwZSBFdmVudC5ldmVudCA9IHN0ZXAgPVxuQmxhY2tfbGlzdC5NYWtlICgoRXZlbnQgOiBCbGFja19saXN0LkV2ZW50IHdpdGggdHlwZSBldmVudCA9IHN0ZXApKVxuXG50eXBlIGJsYWNrX2xpc3QgPSBCbGFja0xpc3QudFxuXG5sZXQgY3JlYXRlX2JsYWNrX2xpc3QgbiA9IEJsYWNrTGlzdC5pbml0IG5cblxubGV0IGJsYWNrX2xpc3QgX3BhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBfaGFuZGxlciBsb2dfaW5mb1xuICAgIGVycm9yIHRyYWNlIGJsYWNrbGlzdCA9XG4gIGxldCBibGFja2xpc3QgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGJsYWNrbGlzdCAoZXZlbnQsIF8pIC0+IEJsYWNrTGlzdC5ibGFja19saXN0IGV2ZW50IGJsYWNrbGlzdClcbiAgICAgIGJsYWNrbGlzdFxuICAgICAgKGdldF9jb21wcmVzc2VkX3RyYWNlIHRyYWNlKVxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdFxuXG5sZXQgcmVtb3ZlX2JsYWNrbGlzdGVkX2V2ZW50IF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrbGlzdCB0cmFjZSA9XG4gIGxldCBsaXN0LCBpbnQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuICh0cmFjZSwgaW50KSBldmVudCAtPlxuICAgICAgICBpZiBCbGFja0xpc3QuaXNfYmxhY2tfbGlzdGVkIGV2ZW50IGJsYWNrbGlzdCB0aGVuXG4gICAgICAgICAgdHJhY2UsIHN1Y2MgaW50XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBldmVudCA6OiB0cmFjZSwgaW50KVxuICAgICAgKFtdLCAwKSB0cmFjZVxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIChMaXN0LnJldiBsaXN0LCBpbnQpXG5cbmxldCByZW1vdmVfYmxhY2tsaXN0ZWRfZXZlbnQgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciBibGFja2xpc3QgdHJhY2UgPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlblxuICAgICAgIChmdW4gX3BhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIC0+XG4gICAgICAgICByZW1vdmVfYmxhY2tsaXN0ZWRfZXZlbnQgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2xpc3QpXG4gICAgICAgTm9uZSBcIlwiIFN0b3J5UHJvZmlsaW5nLlJlbW92aW5nX2JsYWNrbGlzdGVkX2V2ZW50cylcbiAgICBEb19ub3RfY2FyZSBOZXV0cmFsIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG5cbmxldCBsYXN0X2VpZF9pbl9wcmV0cmFjZSB0cmFjZSA9XG4gIGxldCBsID0gTGlzdC5yZXYgKGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSkgaW5cbiAgbGV0IHJlYyBhdXggPSBmdW5jdGlvblxuICAgIHwgW10gLT4gMFxuICAgIHwgaCA6OiB0IC0+XG4gICAgICAobWF0Y2ggZ2V0X2lkX29mX2V2ZW50IGggd2l0aFxuICAgICAgfCBOb25lIC0+IGF1eCB0XG4gICAgICB8IFNvbWUgZWlkIC0+IGVpZClcbiAgaW5cbiAgYXV4IGxcblxubGV0IHBvcF9qc29uID0gUy5QSC5CLlBCLkNJLlBvLksuSC5wb3BfanNvblxuXG5sZXQgcHJvZmlsaW5nX3N0YXRlX3RvX2pzb24gcGFyYW1ldGVycyA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggXCJwcm9maWxpbmcgaW5mb3JtYXRpb25cIixcbiAgICAgICAgTG9nZ2Vycy50b19qc29uIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9wcm9maWxpbmdfbG9nZ2VyIHBhcmFtZXRlcnMpICk7XG4gICAgXVxuXG5sZXQgZXJyb3JfbGlzdF90b19qc29uIHBhcmFtZXRlcnMgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIFwiZXJyb3JzXCIsXG4gICAgICAgIExvZ2dlcnMudG9fanNvbiAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVycykgKTtcbiAgICBdXG5cbmxldCBjb21wdXRhdGlvbl9zdGVwc190b19qc29uIHBhcmFtZXRlcnMgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIFwiY29tcHV0YXRpb24gc3RlcHNcIixcbiAgICAgICAgTG9nZ2Vycy50b19qc29uIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVycykgKTtcbiAgICBdXG4iLCIoKipcbiAqIHV0aWxpdGllcy5tbFxuICpcbiAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxNS0wMy0yOCBmZXJldD5cbiAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0xOSAxMToyODowNSBmZXJldD5cbiAqXG4gKiBBUEkgZm9yIGNhdXNhbCBjb21wcmVzc2lvbiAoZm9yIGV4cGVydClcbiAqIEplcm9tZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICpcbiAqIENvcHlyaWdodCAyMDE1IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGVcbiAqIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGRlYnVnX21vZGUgPSBmYWxzZVxubGV0IF8gPSBkZWJ1Z19tb2RlXG5cbnR5cGUgcGFyYW1ldGVycyA9IHtcbiAgaXRlcmF0aW9uX2JlZm9yZV9jYWxpYnJhdGluZzogaW50O1xuICBnbG9iYWxfdGltZV9mYWN0b3JfbWluOiBmbG9hdCBvcHRpb247XG4gIGdsb2JhbF90aW1lX2ZhY3Rvcl9tYXg6IGZsb2F0IG9wdGlvbjtcbiAgdHJhY2VfYmVmb3JlX2ZhY3Rvcl9taW46IGludCBvcHRpb247XG4gIHRyYWNlX2FmdGVyX2ZhY3Rvcl9taW46IGludCBvcHRpb247XG4gIHRyYWNlX2JlZm9yZV9mYWN0b3JfbWF4OiBpbnQgb3B0aW9uO1xuICB0cmFjZV9hZnRlcl9mYWN0b3JfbWF4OiBpbnQgb3B0aW9uO1xuICBjb21wdXRhdGlvbl90aW1lX2ZhY3Rvcl9taW46IGZsb2F0IG9wdGlvbjtcbiAgY29tcHV0YXRpb25fdGltZV9mYWN0b3JfbWF4OiBmbG9hdCBvcHRpb247XG59XG5cbmxldCBwYXJhbWV0ZXJzID1cbiAge1xuICAgIGl0ZXJhdGlvbl9iZWZvcmVfY2FsaWJyYXRpbmcgPSAxMDtcbiAgICBnbG9iYWxfdGltZV9mYWN0b3JfbWluID0gU29tZSA1LjtcbiAgICBnbG9iYWxfdGltZV9mYWN0b3JfbWF4ID0gU29tZSAyMC47XG4gICAgdHJhY2VfYmVmb3JlX2ZhY3Rvcl9taW4gPSBTb21lIDEwO1xuICAgIHRyYWNlX2FmdGVyX2ZhY3Rvcl9taW4gPSBTb21lIDEwO1xuICAgIHRyYWNlX2JlZm9yZV9mYWN0b3JfbWF4ID0gU29tZSA1MDA7XG4gICAgdHJhY2VfYWZ0ZXJfZmFjdG9yX21heCA9IFNvbWUgNTAwO1xuICAgIGNvbXB1dGF0aW9uX3RpbWVfZmFjdG9yX21pbiA9IFNvbWUgMTAuO1xuICAgIGNvbXB1dGF0aW9uX3RpbWVfZmFjdG9yX21heCA9IFNvbWUgNTAwLjtcbiAgfVxuXG50eXBlIHN0YXR1c19nbG9iYWwgPSB7XG4gIGNvdW50ZXJfbWluOiBpbnQ7XG4gIGdsb2JhbF90aW1lX21pbjogZmxvYXQgb3B0aW9uO1xuICBnbG9iYWxfdGltZV9tYXg6IGZsb2F0IG9wdGlvbjtcbiAgY3B1X3RpbWVfbWluOiBmbG9hdCBvcHRpb247XG4gIGNwdV90aW1lX21heDogZmxvYXQgb3B0aW9uO1xuICBjcHVfdGltZV9yZWY6IGZsb2F0IG9wdGlvbjtcbiAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9taW46IGludCBvcHRpb247XG4gIHRyYWNlX2xlbmd0aF9hZnRlcl9taW46IGludCBvcHRpb247XG4gIHRyYWNlX2xlbmd0aF9iZWZvcmVfbWF4OiBpbnQgb3B0aW9uO1xuICB0cmFjZV9sZW5ndGhfYWZ0ZXJfbWF4OiBpbnQgb3B0aW9uO1xuICB0cmFjZV9sZW5ndGhfYmVmb3JlX3JlZjogaW50IG9wdGlvbjtcbiAgdHJhY2VfbGVuZ3RoX2FmdGVyX3JlZjogaW50IG9wdGlvbjtcbn1cblxudHlwZSBzdGF0dXMgPSB7XG4gIGNvdW50ZXI6IGludDtcbiAgZ2xvYmFsX3RpbWU6IGZsb2F0O1xuICB0cmFjZV9sZW5ndGhfYmVmb3JlOiBpbnQ7XG4gIHRyYWNlX2xlbmd0aF9hZnRlcjogaW50O1xuICBjcHVfdGltZTogZmxvYXQ7XG59XG5cbmxldCBnZXRfc3RhdHVzX2JlZm9yZSBjb3VudGVyIHRyYWNlID1cbiAge1xuICAgIGNvdW50ZXI7XG4gICAgZ2xvYmFsX3RpbWUgPSBTeXMudGltZSAoKTtcbiAgICB0cmFjZV9sZW5ndGhfYmVmb3JlID0gVXRpbGl0aWVzLnNpemVfb2ZfcHJldHJhY2UgdHJhY2U7XG4gICAgdHJhY2VfbGVuZ3RoX2FmdGVyID0gMDtcbiAgICBjcHVfdGltZSA9IDAuO1xuICB9XG5cbmxldCBnZXRfc3RhdHVzX2FmdGVyIHN0YXR1c19iZWZvcmUgdHJhY2UgPVxuICB7XG4gICAgc3RhdHVzX2JlZm9yZSB3aXRoXG4gICAgY3B1X3RpbWUgPSBTeXMudGltZSAoKSAtLiBzdGF0dXNfYmVmb3JlLmdsb2JhbF90aW1lO1xuICAgIHRyYWNlX2xlbmd0aF9hZnRlciA9IFV0aWxpdGllcy5zaXplX29mX3ByZXRyYWNlIHRyYWNlO1xuICB9XG5cbmxldCBjbXBfb3B0IGNtcCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiAwXG4gIHwgU29tZSBhLCBTb21lIGIgLT4gY21wIGEgYlxuXG5sZXQgY21wX2Zsb2F0X29wdCA9IGNtcF9vcHQgKGNvbXBhcmUgOiBmbG9hdCAtPiBmbG9hdCAtPiBpbnQpXG5sZXQgY21wX2ludF9vcHQgPSBjbXBfb3B0IChjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQpXG5cbmxldCBnZW5fYmluX29wdCBvcCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhLCBTb21lIGIgLT4gU29tZSAob3AgYSBiKVxuXG5sZXQgYWRkX2Zsb2F0X29wdCA9IGdlbl9iaW5fb3B0ICggKy4gKVxubGV0IG11bHRfZmxvYXRfb3B0ID0gZ2VuX2Jpbl9vcHQgKCAqLiApXG5sZXQgbXVsdF9pbnRfb3B0ID0gZ2VuX2Jpbl9vcHQgKCAqIClcblxubGV0IG1heF9vcHQgY21wIGEgYiA9XG4gIG1hdGNoIGEgd2l0aFxuICB8IE5vbmUgLT4gU29tZSBiXG4gIHwgU29tZSBhIC0+XG4gICAgU29tZVxuICAgICAgKGlmIGNtcCBhIGIgPiAwIHRoZW5cbiAgICAgICAgIGFcbiAgICAgICBlbHNlXG4gICAgICAgICBiKVxuXG5sZXQgc3RvcF9iZWZvcmUgZ2xvYmFsIHN0YXR1cyA9XG4gIHN0YXR1cy5jb3VudGVyID4gZ2xvYmFsLmNvdW50ZXJfbWluXG4gICYmIChjbXBfZmxvYXRfb3B0IChTb21lIHN0YXR1cy5nbG9iYWxfdGltZSkgZ2xvYmFsLmdsb2JhbF90aW1lX21heCA+IDBcbiAgICAgfHwgY21wX2ludF9vcHQgKFNvbWUgc3RhdHVzLnRyYWNlX2xlbmd0aF9iZWZvcmUpXG4gICAgICAgICAgZ2xvYmFsLnRyYWNlX2xlbmd0aF9iZWZvcmVfbWF4XG4gICAgICAgID4gMFxuICAgICB8fCBjbXBfZmxvYXRfb3B0IChTb21lIHN0YXR1cy5nbG9iYWxfdGltZSkgZ2xvYmFsLmdsb2JhbF90aW1lX21pbiA+PSAwXG4gICAgICAgICYmIGNtcF9pbnRfb3B0IChTb21lIHN0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlKVxuICAgICAgICAgICAgIGdsb2JhbC50cmFjZV9sZW5ndGhfYmVmb3JlX21pblxuICAgICAgICAgICA+PSAwKVxuXG5sZXQgc3RvcF9hZnRlciBnbG9iYWwgc3RhdHVzID1cbiAgc3RhdHVzLmNvdW50ZXIgPiBnbG9iYWwuY291bnRlcl9taW5cbiAgJiYgKGNtcF9mbG9hdF9vcHQgKFNvbWUgc3RhdHVzLmdsb2JhbF90aW1lKSBnbG9iYWwuZ2xvYmFsX3RpbWVfbWF4ID4gMFxuICAgICB8fCBjbXBfZmxvYXRfb3B0IChTb21lIHN0YXR1cy5jcHVfdGltZSkgZ2xvYmFsLmNwdV90aW1lX21heCA+IDBcbiAgICAgfHwgY21wX2ludF9vcHQgKFNvbWUgc3RhdHVzLnRyYWNlX2xlbmd0aF9iZWZvcmUpXG4gICAgICAgICAgZ2xvYmFsLnRyYWNlX2xlbmd0aF9iZWZvcmVfbWF4XG4gICAgICAgID4gMFxuICAgICB8fCBjbXBfaW50X29wdCAoU29tZSBzdGF0dXMudHJhY2VfbGVuZ3RoX2FmdGVyKVxuICAgICAgICAgIGdsb2JhbC50cmFjZV9sZW5ndGhfYWZ0ZXJfbWF4XG4gICAgICAgID4gMFxuICAgICB8fCBjbXBfZmxvYXRfb3B0IChTb21lIHN0YXR1cy5nbG9iYWxfdGltZSkgZ2xvYmFsLmdsb2JhbF90aW1lX21pbiA+PSAwXG4gICAgICAgICYmIGNtcF9mbG9hdF9vcHQgKFNvbWUgc3RhdHVzLmNwdV90aW1lKSBnbG9iYWwuY3B1X3RpbWVfbWluID49IDBcbiAgICAgICAgJiYgY21wX2ludF9vcHQgKFNvbWUgc3RhdHVzLnRyYWNlX2xlbmd0aF9iZWZvcmUpXG4gICAgICAgICAgICAgZ2xvYmFsLnRyYWNlX2xlbmd0aF9iZWZvcmVfbWluXG4gICAgICAgICAgID49IDBcbiAgICAgICAgJiYgY21wX2ludF9vcHQgKFNvbWUgc3RhdHVzLnRyYWNlX2xlbmd0aF9hZnRlcilcbiAgICAgICAgICAgICBnbG9iYWwudHJhY2VfbGVuZ3RoX2FmdGVyX21pblxuICAgICAgICAgICA+PSAwKVxuXG5sZXQgc2V0X3N0YXR1c19pbml0IGNmbG93X3BhcmFtZXRlcnMgcGFyYW1ldGVycyBmbG9hdDEgZmxvYXQyIGNvdW50ZXIgPVxuICB7XG4gICAgY291bnRlcl9taW4gPSBjb3VudGVyICsgcGFyYW1ldGVycy5pdGVyYXRpb25fYmVmb3JlX2NhbGlicmF0aW5nO1xuICAgIGdsb2JhbF90aW1lX21pbiA9XG4gICAgICAoaWYgVXRpbGl0aWVzLlMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQgY2Zsb3dfcGFyYW1ldGVyc1xuICAgICAgIHRoZW5cbiAgICAgICAgIE5vbmVcbiAgICAgICBlbHNlXG4gICAgICAgICBhZGRfZmxvYXRfb3B0IChTb21lIGZsb2F0MilcbiAgICAgICAgICAgKG11bHRfZmxvYXRfb3B0XG4gICAgICAgICAgICAgIChTb21lIChmbG9hdDIgLS4gZmxvYXQxKSlcbiAgICAgICAgICAgICAgcGFyYW1ldGVycy5nbG9iYWxfdGltZV9mYWN0b3JfbWluKSk7XG4gICAgZ2xvYmFsX3RpbWVfbWF4ID1cbiAgICAgIChpZiBVdGlsaXRpZXMuUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfaXNfdGltZV9pbmRlcGVuZGVudCBjZmxvd19wYXJhbWV0ZXJzXG4gICAgICAgdGhlblxuICAgICAgICAgTm9uZVxuICAgICAgIGVsc2VcbiAgICAgICAgIGFkZF9mbG9hdF9vcHQgKFNvbWUgZmxvYXQyKVxuICAgICAgICAgICAobXVsdF9mbG9hdF9vcHRcbiAgICAgICAgICAgICAgKFNvbWUgKGZsb2F0MiAtLiBmbG9hdDEpKVxuICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmdsb2JhbF90aW1lX2ZhY3Rvcl9tYXgpKTtcbiAgICBjcHVfdGltZV9taW4gPSBOb25lO1xuICAgIGNwdV90aW1lX21heCA9IE5vbmU7XG4gICAgY3B1X3RpbWVfcmVmID0gTm9uZTtcbiAgICB0cmFjZV9sZW5ndGhfYmVmb3JlX21pbiA9IE5vbmU7XG4gICAgdHJhY2VfbGVuZ3RoX2FmdGVyX21pbiA9IE5vbmU7XG4gICAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9tYXggPSBOb25lO1xuICAgIHRyYWNlX2xlbmd0aF9hZnRlcl9tYXggPSBOb25lO1xuICAgIHRyYWNlX2xlbmd0aF9iZWZvcmVfcmVmID0gTm9uZTtcbiAgICB0cmFjZV9sZW5ndGhfYWZ0ZXJfcmVmID0gTm9uZTtcbiAgfVxuXG5sZXQgdXBkYXRlX3N0YXR1c19iZWZvcmUgZ2xvYmFsIHN0YXR1cyA9XG4gIGlmIHN0YXR1cy5jb3VudGVyIDwgZ2xvYmFsLmNvdW50ZXJfbWluIHRoZW5cbiAgICB7XG4gICAgICBnbG9iYWwgd2l0aFxuICAgICAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9yZWYgPVxuICAgICAgICBtYXhfb3B0IGNvbXBhcmUgZ2xvYmFsLnRyYWNlX2xlbmd0aF9iZWZvcmVfcmVmXG4gICAgICAgICAgc3RhdHVzLnRyYWNlX2xlbmd0aF9iZWZvcmU7XG4gICAgfVxuICBlbHNlXG4gICAgZ2xvYmFsXG5cbmxldCB1cGRhdGVfc3RhdHVzX2FmdGVyIGdsb2JhbCBzdGF0dXMgPVxuICBpZiBzdGF0dXMuY291bnRlciA8IGdsb2JhbC5jb3VudGVyX21pbiB0aGVuXG4gICAge1xuICAgICAgZ2xvYmFsIHdpdGhcbiAgICAgIHRyYWNlX2xlbmd0aF9hZnRlcl9yZWYgPVxuICAgICAgICBtYXhfb3B0IGNvbXBhcmUgZ2xvYmFsLnRyYWNlX2xlbmd0aF9hZnRlcl9yZWYgc3RhdHVzLnRyYWNlX2xlbmd0aF9hZnRlcjtcbiAgICAgIGNwdV90aW1lX3JlZiA9IG1heF9vcHQgY29tcGFyZSBnbG9iYWwuY3B1X3RpbWVfcmVmIHN0YXR1cy5jcHVfdGltZTtcbiAgICB9XG4gIGVsc2VcbiAgICBnbG9iYWxcblxubGV0IGNvbXB1dGVfc3RhdHVzX3JhbmdlcyBjZmxvd19wYXJhbWV0ZXJzIHBhcmFtZXRlciBnbG9iYWxfc3RhdHVzID1cbiAge1xuICAgIGdsb2JhbF9zdGF0dXMgd2l0aFxuICAgIGNwdV90aW1lX21pbiA9XG4gICAgICAoaWYgVXRpbGl0aWVzLlMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQgY2Zsb3dfcGFyYW1ldGVyc1xuICAgICAgIHRoZW5cbiAgICAgICAgIE5vbmVcbiAgICAgICBlbHNlXG4gICAgICAgICBtdWx0X2Zsb2F0X29wdCBnbG9iYWxfc3RhdHVzLmNwdV90aW1lX3JlZlxuICAgICAgICAgICBwYXJhbWV0ZXIuY29tcHV0YXRpb25fdGltZV9mYWN0b3JfbWluKTtcbiAgICBjcHVfdGltZV9tYXggPVxuICAgICAgKGlmIFV0aWxpdGllcy5TLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9pc190aW1lX2luZGVwZW5kZW50IGNmbG93X3BhcmFtZXRlcnNcbiAgICAgICB0aGVuXG4gICAgICAgICBOb25lXG4gICAgICAgZWxzZVxuICAgICAgICAgbXVsdF9mbG9hdF9vcHQgZ2xvYmFsX3N0YXR1cy5jcHVfdGltZV9yZWZcbiAgICAgICAgICAgcGFyYW1ldGVyLmNvbXB1dGF0aW9uX3RpbWVfZmFjdG9yX21heCk7XG4gICAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9taW4gPVxuICAgICAgbXVsdF9pbnRfb3B0IGdsb2JhbF9zdGF0dXMudHJhY2VfbGVuZ3RoX2JlZm9yZV9yZWZcbiAgICAgICAgcGFyYW1ldGVyLnRyYWNlX2JlZm9yZV9mYWN0b3JfbWluO1xuICAgIHRyYWNlX2xlbmd0aF9iZWZvcmVfbWF4ID1cbiAgICAgIG11bHRfaW50X29wdCBnbG9iYWxfc3RhdHVzLnRyYWNlX2xlbmd0aF9iZWZvcmVfcmVmXG4gICAgICAgIHBhcmFtZXRlci50cmFjZV9iZWZvcmVfZmFjdG9yX21heDtcbiAgICB0cmFjZV9sZW5ndGhfYWZ0ZXJfbWluID1cbiAgICAgIG11bHRfaW50X29wdCBnbG9iYWxfc3RhdHVzLnRyYWNlX2xlbmd0aF9hZnRlcl9yZWZcbiAgICAgICAgcGFyYW1ldGVyLnRyYWNlX2FmdGVyX2ZhY3Rvcl9taW47XG4gICAgdHJhY2VfbGVuZ3RoX2FmdGVyX21heCA9XG4gICAgICBtdWx0X2ludF9vcHQgZ2xvYmFsX3N0YXR1cy50cmFjZV9sZW5ndGhfYWZ0ZXJfcmVmXG4gICAgICAgIHBhcmFtZXRlci50cmFjZV9hZnRlcl9mYWN0b3JfbWF4O1xuICB9XG5cbmxldCBmb2xkX292ZXJfdGhlX2NhdXNhbF9wYXN0X29mX29ic2VydmFibGVzX3dpdGhfYV9wcm9ncmVzc19iYXJfd2hpbGVfcmVzaGFraW5nX3RoZV90cmFjZVxuICAgIGNmbG93X3BhcmFtZXRlcnMgfnNoYWxsX3dlX2NvbXB1dGU6X1xuICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igd2Vfc2hhbGxcbiAgICBuZXZlciBwYXJhbWV0ZXJzIGdsb2JhbF90cmFjZV9zaW1wbGlmaWNhdGlvbiBmXG4gICAgKHN0b3JlX3Jlc3VsdCA6XG4gICAgICAoIFV0aWxpdGllcy50cmFjZSxcbiAgICAgICAgVXRpbGl0aWVzLnRyYWNlX3J1bnRpbWVfaW5mbyBsaXN0LFxuICAgICAgICAnYSxcbiAgICAgICAgJ2EgKVxuICAgICAgVXRpbGl0aWVzLnRlcm5hcnkpIHRyYWNlICh0YWJsZSA6ICdhKSA9XG4gIGxldCBmIGNmbG93X3BhcmFtZXRlcnMgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyXG4gICAgICBsb2dfaW5mbyBlcnJvciB0cmFjZSBpbmZvXG4gICAgICAobGFzdF9pbmZvLCBzdG9wX25leHQsIGdsb2JhbF9zdGF0dXMsIGNvdW50ZXIsIHRhYmxlKSA9XG4gICAgaWYgc3RvcF9uZXh0IHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgU3RvcC5zdG9wIChsYXN0X2luZm8sIHRhYmxlKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHN0YXR1c19iZWZvcmUgPSBnZXRfc3RhdHVzX2JlZm9yZSBjb3VudGVyIHRyYWNlIGluXG4gICAgICBsZXQgc3RvcCA9IHN0b3BfYmVmb3JlIGdsb2JhbF9zdGF0dXMgc3RhdHVzX2JlZm9yZSBpblxuICAgICAgbGV0IGdsb2JhbF9zdGF0dXMgPSB1cGRhdGVfc3RhdHVzX2JlZm9yZSBnbG9iYWxfc3RhdHVzIHN0YXR1c19iZWZvcmUgaW5cbiAgICAgIGlmIHN0b3AgdGhlblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIFN0b3Auc3RvcCAobGFzdF9pbmZvLCB0YWJsZSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICAgICAgZiBjZmxvd19wYXJhbWV0ZXJzIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHN0YXR1c19hZnRlciA9IGdldF9zdGF0dXNfYWZ0ZXIgc3RhdHVzX2JlZm9yZSB0cmFjZSBpblxuICAgICAgICBsZXQgc3RvcCA9IHN0b3BfYWZ0ZXIgZ2xvYmFsX3N0YXR1cyBzdGF0dXNfYWZ0ZXIgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUgPVxuICAgICAgICAgIHN0b3JlX3Jlc3VsdCBjZmxvd19wYXJhbWV0ZXJzIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgZXJyb3IgdHJhY2UgaW5mbyB0YWJsZVxuICAgICAgICBpblxuICAgICAgICBsZXQgbGFzdF9pbmZvID0gU29tZSBpbmZvIGluXG4gICAgICAgIGxldCBnbG9iYWxfc3RhdHVzID0gdXBkYXRlX3N0YXR1c19hZnRlciBnbG9iYWxfc3RhdHVzIHN0YXR1c19hZnRlciBpblxuICAgICAgICBsZXQgZ2xvYmFsX3N0YXR1cyA9XG4gICAgICAgICAgaWYgY291bnRlciA9IGdsb2JhbF9zdGF0dXMuY291bnRlcl9taW4gdGhlblxuICAgICAgICAgICAgY29tcHV0ZV9zdGF0dXNfcmFuZ2VzIGNmbG93X3BhcmFtZXRlcnMgcGFyYW1ldGVycyBnbG9iYWxfc3RhdHVzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZ2xvYmFsX3N0YXR1c1xuICAgICAgICBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIFN0b3Auc3VjY2VzcyAobGFzdF9pbmZvLCBzdG9wLCBnbG9iYWxfc3RhdHVzLCBzdWNjIGNvdW50ZXIsIHRhYmxlKSApXG4gICAgICApXG4gICAgKVxuICBpblxuICBsZXQgcmVjIGF1eCBsb2dfaW5mbyBlcnJvciBjb3VudGVyIHRyYWNlIHRhYmxlID1cbiAgICBpZiBVdGlsaXRpZXMuaGFzX29icyB0cmFjZSB0aGVuIChcbiAgICAgIGxldCBzdGFydF9pdGVyYXRpb24gPSBTeXMudGltZSAoKSBpblxuICAgICAgbGV0IG91dHB1dCA9XG4gICAgICAgIHRyeSBTb21lIChnbG9iYWxfdHJhY2Vfc2ltcGxpZmljYXRpb24gMCAoZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSkpXG4gICAgICAgIHdpdGggU3lzLkJyZWFrIC0+IE5vbmVcbiAgICAgIGluXG4gICAgICBtYXRjaCBvdXRwdXQgd2l0aFxuICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgdGFibGVcbiAgICAgIHwgU29tZSAoZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSkgLT5cbiAgICAgICAgbGV0IGVuZF9zaW1wbGlmaWNhdGlvbiA9IFN5cy50aW1lICgpIGluXG4gICAgICAgIGxldCBzdGF0dXMgPVxuICAgICAgICAgIHNldF9zdGF0dXNfaW5pdCBjZmxvd19wYXJhbWV0ZXJzIHBhcmFtZXRlcnMgc3RhcnRfaXRlcmF0aW9uXG4gICAgICAgICAgICBlbmRfc2ltcGxpZmljYXRpb24gY291bnRlclxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvdXRwdXQgPVxuICAgICAgICAgIFV0aWxpdGllcy5mb2xkX292ZXJfdGhlX2NhdXNhbF9wYXN0X29mX29ic2VydmFibGVzX3dpdGhfYV9wcm9ncmVzc19iYXJcbiAgICAgICAgICAgIGNmbG93X3BhcmFtZXRlcnMgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICBlcnJvciB3ZV9zaGFsbCBuZXZlciBjb3VudGVyIGYgdHJhY2VcbiAgICAgICAgICAgIChOb25lLCBmYWxzZSwgc3RhdHVzLCBjb3VudGVyLCB0YWJsZSlcbiAgICAgICAgaW5cbiAgICAgICAgU3RvcC5zdWNjZXNzX29yX3N0b3BcbiAgICAgICAgICAoZnVuIChfLCBfLCBfLCBfLCBvdXRwdXQpIC0+IGVycm9yLCBsb2dfaW5mbywgb3V0cHV0KVxuICAgICAgICAgIChmdW4gKChsYXN0X2luZm8sIHRhYmxlKSwgY291bnRlcikgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgICAgICAgICAgVXRpbGl0aWVzLnJlbW92ZV9vYnNfYmVmb3JlIGNmbG93X3BhcmFtZXRlcnMgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGVycm9yIGxhc3RfaW5mbyB0cmFjZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGF1eCBsb2dfaW5mbyBlcnJvciBjb3VudGVyIHRyYWNlIHRhYmxlKVxuICAgICAgICAgIG91dHB1dFxuICAgICkgZWxzZVxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZVxuICBpblxuICBhdXggbG9nX2luZm8gZXJyb3IgMSB0cmFjZSB0YWJsZVxuIiwiKCpcbiAgKiBjZmxvd19qc19pbnRlcmZhY2UubWxcbiAgKlxuICAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxNi0wNC0zMCAxODozNDowMCBmZXJldD5cbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDQtMzAgMTg6MjQ6MDAgZmVyZXQ+XG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSmVyb21lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdGUgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogKlxuICAqIFRoaXMgaXMgdGhlIGludGVyZmFjZSBmb3IgdGhlIEphdmEtc2NyaXB0IHNlcnZlclxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNSwyMDE2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlblxuICAqIEluZm9ybWF0aXF1ZSBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXNcbiAgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBjZmxvd19zdGF0ZSA9IHtcbiAgc3RkX2xvZ2dlcjogTG9nZ2Vycy50IG9wdGlvbjtcbiAgZXJyX2xvZ2dlcjogTG9nZ2Vycy50IG9wdGlvbjtcbiAgcHJvZmlsaW5nX2xvZ2dlcjogTG9nZ2Vycy50IG9wdGlvbjtcbiAgc3RhdHVzX2xvZ2dlcjogTG9nZ2Vycy50IG9wdGlvbjtcbiAgY3VycmVudF9waGFzZTogc3RyaW5nIG9wdGlvbjtcbiAgcHJvZ3Jlc3NfYmFyOiAoYm9vbCAqIGludCAqIGludCAqIGludCkgb3B0aW9uO1xuICBjYXVzYWxfZmxvd3M6IFV0aWxpdGllcy5zdG9yeV90YWJsZSBvcHRpb247XG4gIHRyaXZpYWxfY29tcHJlc3Npb246IFV0aWxpdGllcy5zdG9yeV90YWJsZSBvcHRpb247XG4gIHdlYWtfY29tcHJlc3Npb246IFV0aWxpdGllcy5zdG9yeV90YWJsZSBvcHRpb247XG4gIHN0cm9uZ19jb21wcmVzc2lvbjogVXRpbGl0aWVzLnN0b3J5X3RhYmxlIG9wdGlvbjtcbiAgZXJyb3JfbGlzdDogVXRpbGl0aWVzLmVycm9yX2xvZyBvcHRpb247XG59XG5cbmxldCBpbml0ICgpID1cbiAgcmVmXG4gICAge1xuICAgICAgc3RkX2xvZ2dlciA9IE5vbmU7XG4gICAgICBlcnJfbG9nZ2VyID0gTm9uZTtcbiAgICAgIHByb2ZpbGluZ19sb2dnZXIgPSBOb25lO1xuICAgICAgc3RhdHVzX2xvZ2dlciA9IE5vbmU7XG4gICAgICBjdXJyZW50X3BoYXNlID0gTm9uZTtcbiAgICAgIHByb2dyZXNzX2JhciA9IE5vbmU7XG4gICAgICBjYXVzYWxfZmxvd3MgPSBOb25lO1xuICAgICAgdHJpdmlhbF9jb21wcmVzc2lvbiA9IE5vbmU7XG4gICAgICB3ZWFrX2NvbXByZXNzaW9uID0gTm9uZTtcbiAgICAgIHN0cm9uZ19jb21wcmVzc2lvbiA9IE5vbmU7XG4gICAgICBlcnJvcl9saXN0ID0gTm9uZTtcbiAgICB9XG5cbmxldCBnZXRfc3RkX2J1ZmZlciBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLnN0ZF9sb2dnZXJcbmxldCBnZXRfZXJyX2J1ZmZlciBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLmVycl9sb2dnZXJcbmxldCBnZXRfcHJvZmlsaW5nX2J1ZmZlciBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLnByb2ZpbGluZ19sb2dnZXJcbmxldCBnZXRfYnJhbmNoX2FuZF9jdXRfc3RhdHVzIGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUuc3RhdHVzX2xvZ2dlclxubGV0IGdldF9wcm9ncmVzc19iYXIgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5wcm9ncmVzc19iYXJcbmxldCBnZXRfY3VycmVudF9waGFzZV90aXRsZSBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLmN1cnJlbnRfcGhhc2VcbmxldCBnZXRfY2F1c2FsX2Zsb3dfdGFibGUgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5jYXVzYWxfZmxvd3NcbmxldCBnZXRfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLnRyaXZpYWxfY29tcHJlc3Npb25cbmxldCBnZXRfd2Vha19jb21wcmVzc2lvbl90YWJsZSBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLndlYWtfY29tcHJlc3Npb25cbmxldCBnZXRfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlIGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUuc3Ryb25nX2NvbXByZXNzaW9uXG5sZXQgZ2V0X2Vycm9yX2xpc3QgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5lcnJvcl9saXN0XG5cbmxldCBzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGVfYXV4IGNmbG93X3N0YXRlX3B0ciBzdHJpbmcgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBjdXJyZW50X3BoYXNlID0gU29tZSBzdHJpbmcgfVxuXG5sZXQgcmVzZXRfY3VycmVudF9waGFzZV90aXRsZV9hdXggY2Zsb3dfc3RhdGVfcHRyID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggY3VycmVudF9waGFzZSA9IE5vbmUgfVxuXG5sZXQgc2F2ZV9wcm9ncmVzc19iYXJfYXV4IGNmbG93X3N0YXRlX3B0ciBiYXIgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBwcm9ncmVzc19iYXIgPSBTb21lIGJhciB9XG5cbmxldCByZXNldF9wcm9ncmVzc19iYXJfYXV4IGNmbG93X3N0YXRlX3B0ciA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHByb2dyZXNzX2JhciA9IE5vbmUgfVxuXG5sZXQgc2F2ZV9jYXVzYWxfZmxvd190YWJsZV9hdXggY2Zsb3dfc3RhdGVfcHRyIHRhYmxlID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggY2F1c2FsX2Zsb3dzID0gU29tZSB0YWJsZSB9XG5cbmxldCBzYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGVfYXV4IGNmbG93X3N0YXRlX3B0ciB0YWJsZSA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHRyaXZpYWxfY29tcHJlc3Npb24gPSBTb21lIHRhYmxlIH1cblxubGV0IHNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZV9hdXggY2Zsb3dfc3RhdGVfcHRyIHRhYmxlID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggd2Vha19jb21wcmVzc2lvbiA9IFNvbWUgdGFibGUgfVxuXG5sZXQgc2F2ZV9zdHJvbmdfY29tcHJlc3Npb25fdGFibGVfYXV4IGNmbG93X3N0YXRlX3B0ciB0YWJsZSA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHN0cm9uZ19jb21wcmVzc2lvbiA9IFNvbWUgdGFibGUgfVxuXG5sZXQgc2F2ZV9lcnJvcl9sb2dfYXV4IGNmbG93X3N0YXRlX3B0ciBlcnJvciA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIGVycm9yX2xpc3QgPSBTb21lIGVycm9yIH1cblxubGV0IHJlZGlyZWN0X3N0ZF9idWZmZXJfYXV4IGNmbG93X3N0YXRlX3B0ciBsb2dnZXJzID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggc3RkX2xvZ2dlciA9IGxvZ2dlcnMgfVxuXG5sZXQgcmVkaXJlY3RfZXJyX2J1ZmZlcl9hdXggY2Zsb3dfc3RhdGVfcHRyIGxvZ2dlcnMgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBlcnJfbG9nZ2VyID0gbG9nZ2VycyB9XG5cbmxldCByZWRpcmVjdF9wcm9maWxpbmdfYnVmZmVyX2F1eCBjZmxvd19zdGF0ZV9wdHIgbG9nZ2VycyA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHByb2ZpbGluZ19sb2dnZXIgPSBsb2dnZXJzIH1cblxubGV0IHJlZGlyZWN0X2JyYW5jaF9hbmRfY3V0X2J1ZmZlcl9hdXggY2Zsb3dfc3RhdGVfcHRyIGxvZ2dlcnMgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBzdGF0dXNfbG9nZ2VyID0gbG9nZ2VycyB9XG5cbmxldCBsaWZ0IGYgY2Zsb3dfc3RhdGVfcHRyX29wdCBkYXRhID1cbiAgbWF0Y2ggY2Zsb3dfc3RhdGVfcHRyX29wdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgY2Zsb3dfc3RhdGVfcHRyIC0+IGNmbG93X3N0YXRlX3B0ciA6PSBmIGNmbG93X3N0YXRlX3B0ciBkYXRhXG5cbmxldCBsaWZ0X3Jlc2V0IGYgY2Zsb3dfc3RhdGVfcHRyX29wdCA9XG4gIGxpZnQgKGZ1biB4ICgpIC0+IGYgeCkgY2Zsb3dfc3RhdGVfcHRyX29wdCAoKVxuXG5sZXQgc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlID0gbGlmdCBzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGVfYXV4XG5sZXQgcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSA9IGxpZnRfcmVzZXQgcmVzZXRfY3VycmVudF9waGFzZV90aXRsZV9hdXhcbmxldCBzYXZlX3Byb2dyZXNzX2JhciA9IGxpZnQgc2F2ZV9wcm9ncmVzc19iYXJfYXV4XG5sZXQgcmVzZXRfcHJvZ3Jlc3NfYmFyID0gbGlmdF9yZXNldCByZXNldF9wcm9ncmVzc19iYXJfYXV4XG5sZXQgc2F2ZV9jYXVzYWxfZmxvd190YWJsZSA9IGxpZnQgc2F2ZV9jYXVzYWxfZmxvd190YWJsZV9hdXhcbmxldCBzYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUgPSBsaWZ0IHNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZV9hdXhcbmxldCBzYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGUgPSBsaWZ0IHNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZV9hdXhcbmxldCBzYXZlX3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZSA9IGxpZnQgc2F2ZV9zdHJvbmdfY29tcHJlc3Npb25fdGFibGVfYXV4XG5sZXQgc2F2ZV9lcnJvcl9saXN0ID0gbGlmdCBzYXZlX2Vycm9yX2xvZ19hdXhcbmxldCByZWRpcmVjdF9zdGRfYnVmZmVyID0gbGlmdCByZWRpcmVjdF9zdGRfYnVmZmVyX2F1eFxubGV0IHJlZGlyZWN0X2Vycl9idWZmZXIgPSBsaWZ0IHJlZGlyZWN0X2Vycl9idWZmZXJfYXV4XG5sZXQgcmVkaXJlY3RfcHJvZmlsaW5nX2J1ZmZlciA9IGxpZnQgcmVkaXJlY3RfcHJvZmlsaW5nX2J1ZmZlcl9hdXhcbmxldCByZWRpcmVjdF9icmFuY2hfYW5kX2N1dF9idWZmZXIgPSBsaWZ0IHJlZGlyZWN0X2JyYW5jaF9hbmRfY3V0X2J1ZmZlcl9hdXhcbiIsIigqKlxuICAqIGNvbXByZXNzaW9uX21haW4ubWxcbiAgKlxuICAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxMS0xMC0xOSAxNjo1Mjo1NSBmZXJldD5cbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDYtMTAgMTE6MTA6MzQgZmVyZXQ+XG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSmVyb21lIEZlcmV0LCBwcm9qZXQgQW50aXF1ZSwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0ZSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBTb21lIHBhcmFtZXRlcnMgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyLDIwMTMgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZVxuICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgVSA9IFV0aWxpdGllc1xubW9kdWxlIFMgPSBVLlNcblxudHlwZSBzZWNyZXRfbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvXG5cbmxldCBpbml0X3NlY3JldF9sb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5pdF9sb2dfaW5mb1xuXG50eXBlIHNlY3JldF9wYXJhbWV0ZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILnBhcmFtZXRlclxuXG5sZXQgYnVpbGRfcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5idWlsZF9wYXJhbWV0ZXJcbmxldCBnZXRfbG9nZ2VyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyXG5sZXQgbG9nX3N0ZXAgPSB0cnVlXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5sZXQgZHVtcF9wcm9maWxpbmdfaW5mbyA9IHRydWVcbmxldCBfID0gZHVtcF9wcm9maWxpbmdfaW5mb1xubGV0IGJ1Y2tldF9zb3J0ID0gdHJ1ZVxuXG4oKiogZmFsc2UgLT4gb25seSB0aGUgZmlyc3Qgc3RvcnkgcGVyIG9ic2VydmFibGUgaGl0OyB0cnVlIC0+IGFsbCBzdG9yaWVzIHBlciBvYnMgaGl0ICopXG5sZXQgZ2V0X2FsbF9zdG9yaWVzID0gZmFsc2VcblxubGV0IG1heF9udW1iZXJfb2ZfaXR0ZXJhdGlvbnMgPSBOb25lXG5sZXQgd2Vfc2hhbGxfbm90IF8gPSBmYWxzZVxubGV0IHdlX3NoYWxsIF8gPSB0cnVlXG5sZXQgZG9fbm90X2xvZyBwYXJhbWV0ZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9sb2dfc3RlcCBwYXJhbWV0ZXIgZmFsc2VcblxubGV0IGNvbXByZXNzX2FuZF9wcmludCBwYXJhbWV0ZXIgfmRvdEZvcm1hdCA/anNfaW50ZXJmYWNlIGVudiBsb2dfaW5mbyBzdGVwX2xpc3RcbiAgICA9XG4gICgqbGV0IGNhbGxlZF9mcm9tID0gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuU2VydmVyIGluKilcbiAgbGV0IHBhcmFtZXRlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2xvZ19zdGVwIHBhcmFtZXRlciBsb2dfc3RlcCBpblxuICBsZXQgcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfZGVidWdnaW5nX21vZGUgcGFyYW1ldGVyIGRlYnVnX21vZGUgaW5cbiAgbGV0IHBhcmFtZXRlciA9XG4gICAgbWF0Y2ggbWF4X251bWJlcl9vZl9pdHRlcmF0aW9ucyB3aXRoXG4gICAgfCBOb25lIC0+IFMuUEguQi5QQi5DSS5Qby5LLkguZG9fbm90X2JvdW5kX2l0dGVyYXRpb25zIHBhcmFtZXRlclxuICAgIHwgU29tZSBpIC0+IFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2l0dGVyYXRpb25fYm91bmQgcGFyYW1ldGVyIGlcbiAgaW5cbiAgbGV0IHBhcmFtZXRlciA9XG4gICAgaWYgZ2V0X2FsbF9zdG9yaWVzIHRoZW5cbiAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMgcGFyYW1ldGVyXG4gICAgZWxzZVxuICAgICAgcGFyYW1ldGVyXG4gIGluXG4gIGxldCBwYXJhbWV0ZXIgPVxuICAgIGlmIGJ1Y2tldF9zb3J0IHRoZW5cbiAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgudXNlX2J1Y2tldF9zb3J0IHBhcmFtZXRlclxuICAgIGVsc2VcbiAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgudXNlX2Z1c2lvbl9zb3J0IHBhcmFtZXRlclxuICBpblxuICBsZXQgbW9kZSA9IHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmNvbXByZXNzaW9uX21vZGUgaW5cbiAgbGV0IGNhdXNhbF90cmFjZV9vbiA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2NhdXNhbF90cmFjZSBtb2RlIGluXG4gIGxldCB3ZWFrX2NvbXByZXNzaW9uX29uID0gUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfd2Vha19jb21wcmVzc2lvbiBtb2RlIGluXG4gIGxldCBzdHJvbmdfY29tcHJlc3Npb25fb24gPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9zdHJvbmdfY29tcHJlc3Npb24gbW9kZSBpblxuICBsZXQgZXJyb3IgPSBVLmVycm9yX2luaXQgaW5cbiAgbGV0IGhhbmRsZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmluaXRfaGFuZGxlciBlbnYgaW5cbiAgbGV0ICgpID1cbiAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgIChTdG9yeV9qc29uLlBoYXNlIChTdG9yeV9qc29uLlN0YXJ0LCBcIlN0YXJ0aW5nIENvbXByZXNzaW9uXCIpKVxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTEgPVxuICAgIFUuY3JlYXRlX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlMiA9XG4gICAgVS5jcmVhdGVfc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUzID1cbiAgICBVLmNyZWF0ZV9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTQgPVxuICAgIFUuY3JlYXRlX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gIGluXG4gIGxldCAoKSA9IENmbG93X2pzX2ludGVyZmFjZS5zYXZlX2NhdXNhbF9mbG93X3RhYmxlIGpzX2ludGVyZmFjZSB0YWJsZTEgaW5cbiAgbGV0ICgpID1cbiAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlIGpzX2ludGVyZmFjZSB0YWJsZTJcbiAgaW5cbiAgbGV0ICgpID0gQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2UgdGFibGUzIGluXG4gIGxldCAoKSA9XG4gICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlIGpzX2ludGVyZmFjZSB0YWJsZTRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDZmxvd19qc19pbnRlcmZhY2UucmVkaXJlY3Rfc3RkX2J1ZmZlciBqc19pbnRlcmZhY2VcbiAgICAgIChTb21lIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDZmxvd19qc19pbnRlcmZhY2UucmVkaXJlY3RfZXJyX2J1ZmZlciBqc19pbnRlcmZhY2VcbiAgICAgIChTb21lIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENmbG93X2pzX2ludGVyZmFjZS5yZWRpcmVjdF9wcm9maWxpbmdfYnVmZmVyIGpzX2ludGVyZmFjZVxuICAgICAgKFNvbWUgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X3Byb2ZpbGluZ19sb2dnZXIgcGFyYW1ldGVyKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDZmxvd19qc19pbnRlcmZhY2UucmVkaXJlY3RfYnJhbmNoX2FuZF9jdXRfYnVmZmVyIGpzX2ludGVyZmFjZVxuICAgICAgKFNvbWVcbiAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9jb21wcmVzc2lvbl9zdGF0dXNfbG9nZ2VyXG4gICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpKVxuICBpblxuICBsZXQgcGFyYW1ldGVyID1cbiAgICBtYXRjaCBqc19pbnRlcmZhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBwYXJhbWV0ZXJcbiAgICB8IFNvbWUgX2pzX2ludGVyZmFjZV9wdHIgLT5cbiAgICAgIGxldCBwYXJhbWV0ZXIgPVxuICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyIChmdW4gcyAtPlxuICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfY3VycmVudF9waGFzZV90aXRsZSBqc19pbnRlcmZhY2UgcylcbiAgICAgIGluXG4gICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgKGZ1biAoKSAtPlxuICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUganNfaW50ZXJmYWNlKVxuICAgICAgaW5cbiAgICAgIGxldCBwYXJhbWV0ZXIgPVxuICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXJcbiAgICAgICAgICAoQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfcHJvZ3Jlc3NfYmFyIGpzX2ludGVyZmFjZSlcbiAgICAgIGluXG4gICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfcmVzZXRfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciAoZnVuICgpIC0+XG4gICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2UucmVzZXRfcHJvZ3Jlc3NfYmFyIGpzX2ludGVyZmFjZSlcbiAgICAgIGluXG4gICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfc2F2ZV9lcnJvcl9sb2cgcGFyYW1ldGVyIChmdW4gZXJyb3IgLT5cbiAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX2Vycm9yX2xpc3QganNfaW50ZXJmYWNlIGVycm9yKVxuICAgICAgaW5cbiAgICAgIHBhcmFtZXRlclxuICBpblxuICBsZXQgcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfY29tcHJlc3Npb25fbm9uZSBwYXJhbWV0ZXIgaW5cbiAgbGV0IHBhcmFtZXRlcl9jYXVzYWwgPVxuICAgIGlmIGNhdXNhbF90cmFjZV9vbiB0aGVuXG4gICAgICBwYXJhbWV0ZXJcbiAgICBlbHNlXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCBwYXJhbWV0ZXJcbiAgaW5cbiAgbGV0IHBhcmFtZXRlcl93ZWFrID1cbiAgICBpZiB3ZWFrX2NvbXByZXNzaW9uX29uIHRoZW5cbiAgICAgIHBhcmFtZXRlclxuICAgIGVsc2VcbiAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2h1dF9kb3duX3NlcnZlcl9jaGFubmVsIHBhcmFtZXRlclxuICBpblxuICBsZXQgcGFyYW1ldGVyX3N0cm9uZyA9XG4gICAgaWYgc3Ryb25nX2NvbXByZXNzaW9uX29uIHRoZW5cbiAgICAgIHBhcmFtZXRlclxuICAgIGVsc2VcbiAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2h1dF9kb3duX3NlcnZlcl9jaGFubmVsIHBhcmFtZXRlclxuICBpblxuXG4gIGxldCBlbXB0eV9jb21wcmVzc2lvbiA9IGVycm9yLCBsb2dfaW5mbywgdGFibGUxLCB0YWJsZTIsIHRhYmxlMywgdGFibGU0IGluXG4gIGxldCBzdGVwX2xpc3QgPSBVLnRyYWNlX29mX3ByZXRyYWNlIHN0ZXBfbGlzdCBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWwsIF90cml2aWFsLCB3ZWFrLCBzdHJvbmcgPVxuICAgIGlmXG4gICAgICAobm90IGNhdXNhbF90cmFjZV9vbikgJiYgKG5vdCB3ZWFrX2NvbXByZXNzaW9uX29uKVxuICAgICAgJiYgbm90IHN0cm9uZ19jb21wcmVzc2lvbl9vblxuICAgIHRoZW5cbiAgICAgIGVtcHR5X2NvbXByZXNzaW9uXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdGVwX2xpc3QgPVxuICAgICAgICBVLnJlbW92ZV9ldmVudHNfYWZ0ZXJfbGFzdF9vYnMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICBzdGVwX2xpc3RcbiAgICAgIGluXG4gICAgICBpZiBub3QgKFUuaGFzX29icyBzdGVwX2xpc3QpIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBcIisgTm8gY2F1c2FsIGZsb3cgZm91bmRALlwiXG4gICAgICAgIGluXG4gICAgICAgIGVtcHR5X2NvbXByZXNzaW9uXG4gICAgICApIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAoaWYgd2Vha19jb21wcmVzc2lvbl9vbiB8fCBzdHJvbmdfY29tcHJlc3Npb25fb24gdGhlblxuICAgICAgICAgICAgICAgXCIrIFByb2R1Y2luZyBjYXVzYWwgY29tcHJlc3Npb25zQC5cIlxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIFwiKyBQcm9kdWNpbmcgY2F1c2FsIHRyYWNlc0AuXCIpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsYXN0X2VpZCA9IFUubGFzdF9laWRfaW5fcHJldHJhY2Ugc3RlcF9saXN0IGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0ZXBfbGlzdCA9XG4gICAgICAgICAgVS5zcGxpdF9pbml0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0ZXBfbGlzdFxuICAgICAgICBpblxuICAgICAgICAoKiBjYXVzYWwgY29tcHJlc3Npb24gd2l0aG91dCBhbnkgc2ltcGxpZmljYXRpb24gKGp1c3QgcGFydGlhbCBvcmRlciBjb21wcmVzc2lvbikqKVxuICAgICAgICAoKiB0aGlzIGlzIHZlcnkgY29zdGx5LCBhbmQgbWFpbmx5IGZvciB0ZWFjaGluZyBwdXJwb3NlICopXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF90YWJsZSA9XG4gICAgICAgICAgaWYgY2F1c2FsX3RyYWNlX29uIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9IHBhcmFtZXRlcl9jYXVzYWwgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIGlmIGxvZ19zdGVwIHRoZW5cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJcXHQgLSBibGFja2JvYXJkIGdlbmVyYXRpb25ALlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3RlcF9saXN0ID1cbiAgICAgICAgICAgICAgVS5tYWtlX3VuYW1iaWd1b3VzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0ZXBfbGlzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICBVLmNvbnZlcnRfdHJhY2VfaW50b19tdXNpY2FsX25vdGF0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgZXJyb3Igc3RlcF9saXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSAmJiBsb2dfc3RlcCB0aGVuXG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiXFx0IC0gcHJldHR5IHByaW50aW5nIHRoZSBncmlkQC5cIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbywgZXJyb3IgPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIFUuZXhwb3J0X211c2ljYWxfZ3JpZF90b194bHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgXCJhXCIgMCAwIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIFUucHJpbnRfbXVzaWNhbF9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLCBlcnJvclxuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBsb2dfaW5mbywgZXJyb3JcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgICAgICAgVS5leHRyYWN0X29ic2VydmFibGVfaGl0c19mcm9tX211c2ljYWxfbm90YXRpb24gcGFyYW1ldGVyIGhhbmRsZXJcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG5fc3RvcmllcyA9IExpc3QubGVuZ3RoIGxpc3QgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIGlmIGxvZ19zdGVwIHRoZW5cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJcXHQgLSBjb21wdXRpbmcgY2F1c2FsIHBhc3Qgb2YgZWFjaCBvYnNlcnZlZCBldmVudHMgKCVpKUAuXCJcbiAgICAgICAgICAgICAgICAgIG5fc3Rvcmllc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV9saXN0ID1cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW5cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJcXHRcXHQgKiBjYXVzYWwgY29tcHJlc3Npb24gQC5cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKlx0XHRsZXQgbG9nX2luZm8gPSBVLlMuUEguQi5QQi5DSS5Qby5LLlAuc2V0X3N0YXJ0X2NvbXByZXNzaW9uIGxvZ19pbmZvIGluICopXG4gICAgICAgICAgICAgICgqIFdlIHVzZSB0aGUgZ3JpZCB0byBnZXQgdGhlIGNhdXNhbCBwcmVjZWRlbmNlIChwcmVkKiApIG9mIGVhY2ggb2JzZXJ2YWJsZSAqKVxuICAgICAgICAgICAgICBsZXQgZ3JpZCA9IFUuY29udmVydF90cmFjZV9pbnRvX2dyaWQgc3RlcF9saXN0IGhhbmRsZXIgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZW5yaWNoZWRfZ3JpZCA9XG4gICAgICAgICAgICAgICAgVVxuICAgICAgICAgICAgICAgIC5lbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGFzdF9vZl9lYWNoX25vZGVfd2l0aG91dF9hX3Byb2dyZXNzX2JhclxuICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIGlmIFBhcmFtZXRlci5sb2dfbnVtYmVyX29mX2NhdXNhbF9mbG93cyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZm9ybWF0dGVyX29mX2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgbG9nZ2VyIC0+XG4gICAgICAgICAgICAgICAgICAgIENhdXNhbC5wcmludF9zdGF0IGxvZ2dlciBwYXJhbWV0ZXIgaGFuZGxlciBlbnJpY2hlZF9ncmlkXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIGlmIGxvZ19zdGVwIHRoZW5cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJcXHQgLSBjYXVzYWwgZmxvdyBjb21wcmVzc2lvbiAoJWkpQC5cIiBuX3N0b3JpZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCogd2UgZm9sZCB0aGUgbGlzdCBvZiBvYmVydmFibGUgaGl0LCBhbmQgZm9yIGVhY2ggb25lIGNvbGxlY3QgdGhlIGNhdXNhbCBwYXN0ICopXG4gICAgICAgICAgICAgIFUuZm9sZF9sZWZ0X3dpdGhfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgfmV2ZW50OlN0b3J5UHJvZmlsaW5nLkNvbGxlY3RfdHJhY2VzXG4gICAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgICAgICAgICAgICAgICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86X1xuICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdG9yeV9saXN0IG9ic2VydmFibGVfaWQgLT5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxcdFxcdCAqIGNhdXNhbCBjb21wcmVzc2lvbiBALlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9tb2RlIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgICYmIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIChTdG9yeV9qc29uLlBoYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIFN0b3J5X2pzb24uSW5wcm9ncmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTdGFydCBvbmUgY2F1c2FsIGNvbXByZXNzaW9uXCIgKSlcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZV9iZWZvcmVfY29tcHJlc3Npb24gPVxuICAgICAgICAgICAgICAgICAgICBVLmNhdXNhbF9wcmVmaXhfb2ZfYW5fb2JzZXJ2YWJsZV9oaXQgcGFyYW1ldGVyIGhhbmRsZXJcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciBcImNvbXByZXNzaW9uX21haW4sIGxpbmUgMjAxNFwiIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgICBlbnJpY2hlZF9ncmlkIG9ic2VydmFibGVfaWRcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgVS5nZXRfcnVudGltZV9pbmZvX2Zyb21fb2JzZXJ2YWJsZV9oaXQgb2JzZXJ2YWJsZV9pZFxuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgaW5mbyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mbyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVS5nZXRfY291bnRlciBzdG9yeV9saXN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnVwZGF0ZV9wcm9maWxpbmdfaW5mbyBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBbIGluZm8gXVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV9hcnJheSA9XG4gICAgICAgICAgICAgICAgICAgIFUuc3RvcmVfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICB0cmFjZV9iZWZvcmVfY29tcHJlc3Npb24gaW5mbyBzdG9yeV9saXN0XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfYXJyYXkpXG4gICAgICAgICAgICAgICAgdGFibGUxIChMaXN0LnJldiBsaXN0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV9saXN0ID1cbiAgICAgICAgICAgICAgVS5mbGF0dGVuX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgY2F1c2FsX3N0b3J5X2xpc3RcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV9saXN0XG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlMVxuICAgICAgICBpblxuICAgICAgICAoKiBOb3cgY2F1c2FsIGNvbXByZXNzaW9uLCB3aXRoIGRldGVjdGlvbiBvZiBzaXBob25zICYgZGV0ZWN0aW9uIG9mIHBzZXVkbyBpbnZlcnNlIGV2ZW50cyAqKVxuICAgICAgICBsZXQgcGFyYW1ldGVyX2RlZXBlciA9XG4gICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfa2FzYV9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy51cGRhdGVfcHJlZml4XG4gICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgIFwiXFx0XFx0XFx0XCIpXG4gICAgICAgICAgICBwYXJhbWV0ZXJfY2F1c2FsXG4gICAgICAgIGluXG4gICAgICAgIGxldCBvbmVfaXRlcmF0aW9uX29mX2NvbXByZXNzaW9uIChsb2dfaW5mbywgZXJyb3IsIGV2ZW50X2xpc3QpID1cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0ID1cbiAgICAgICAgICAgIGlmIEdyYXBoX2Nsb3N1cmUuaWdub3JlX2Zsb3dfZnJvbV9vdXRnb2luZ19zaXBob24gdGhlblxuICAgICAgICAgICAgICBVLmZpbGxfc2lwaG9uIHBhcmFtZXRlcl9kZWVwZXIgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIGV2ZW50X2xpc3RcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIFUucHJpbnRfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgZXZlbnRfbGlzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCA9XG4gICAgICAgICAgICBpZiBQYXJhbWV0ZXIuZG9fZ2xvYmFsX2N1dCB0aGVuXG4gICAgICAgICAgICAgIFUuY3V0IHBhcmFtZXRlcl9kZWVwZXIgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIGV2ZW50X2xpc3RcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBQYXJhbWV0ZXIuY3V0X3BzZXVkb19pbnZlcnNlX2V2ZW50IHRoZW5cbiAgICAgICAgICAgIFUucmVtb3ZlX3BzZXVkb19pbnZlcnNlX2V2ZW50cyBwYXJhbWV0ZXJfZGVlcGVyXG4gICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgIGVycm9yIGV2ZW50X2xpc3RcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgKCogVGhpcyBmb25jdGlvbiBpdGVyIHRoZSBjYXVzYWwgY29tcHJlc3Npb24gdW50aWwgYSBmaXhwb2ludCBpcyByZWFjaGVkICopXG4gICAgICAgIGxldCByZWMgYXV4IGsgKGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCkgPVxuICAgICAgICAgIGxldCBzaXplID0gVXRpbGl0aWVzLnNpemVfb2ZfcHJldHJhY2UgZXZlbnRfbGlzdCBpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9ib3VuZF9vbl9pdHRlcmF0aW9uX251bWJlciBwYXJhbWV0ZXJcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTb21lIGsnIHdoZW4gayA+PSBrJyAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCIlc1xcdC0gbWF4IG51bWJlciBvZiBpdGVyYXRpb25zIHJlYWNoZWQsICVpIGV2ZW50cyByZW1haW5pbmcgQC5cIlxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgc2l6ZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdFxuICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCIlc1xcdFxcdC0gc3RhcnQgaXRlcmF0aW9uICVpLCAlaSBldmVudHMgcmVtYWluaW5nIEAuXCJcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgIChrICsgMSkgc2l6ZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBvdXRwdXRfb3B0ID1cbiAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgKG9uZV9pdGVyYXRpb25fb2ZfY29tcHJlc3Npb24gKGxvZ19pbmZvLCBlcnJvciwgZXZlbnRfbGlzdCkpXG4gICAgICAgICAgICAgIHdpdGggU3lzLkJyZWFrIC0+IE5vbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAobWF0Y2ggb3V0cHV0X29wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIlc1xcdC0gaXRlcmF0aW9ucyBzdG9wcGVkIGJ5IHRoZSBlbmQtdXNlciwgJWkgZXZlbnRzIFxcXG4gICAgICAgICAgICAgICAgICAgcmVtYWluaW5nIEAuXCJcbiAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICAgIHNpemVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0XG4gICAgICAgICAgICB8IFNvbWUgKGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCcpIC0+XG4gICAgICAgICAgICAgIGlmIFUuc2l6ZV9vZl9wcmV0cmFjZSBldmVudF9saXN0JyA8IFUuc2l6ZV9vZl9wcmV0cmFjZSBldmVudF9saXN0XG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBhdXggKGsgKyAxKSAoZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0JylcbiAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIlc1xcdC0gYSBmaXhwb2ludCBoYXMgYmVlbiByZWFjaGVkLCAlaSBldmVudHMgcmVtYWluaW5nIEAuXCJcbiAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgIHNpemVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCdcbiAgICAgICAgICAgICAgKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGF1eCBrIChlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QpID1cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIiVzXFx0LSBzaW1wbGlmeSB0aGUgdHJhY2UsICVpIGV2ZW50cyBALlwiXG4gICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAoVXRpbGl0aWVzLnNpemVfb2ZfcHJldHJhY2UgZXZlbnRfbGlzdClcbiAgICAgICAgICBpblxuICAgICAgICAgIGF1eCBrIChlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV90YWJsZSwgd2Vha2x5X3N0b3J5X3RhYmxlID1cbiAgICAgICAgICBpZiB3ZWFrX2NvbXByZXNzaW9uX29uIHx8IHN0cm9uZ19jb21wcmVzc2lvbl9vbiB0aGVuXG4gICAgICAgICAgICBpZiBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9ibGFja2xpc3RfZXZlbnRzIHBhcmFtZXRlciB0aGVuIChcbiAgICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9IHBhcmFtZXRlcl93ZWFrIGluXG4gICAgICAgICAgICAgIGxldCBibGFja2xpc3QgPSBVLmNyZWF0ZV9ibGFja19saXN0IChsYXN0X2VpZCArIDEpIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfYmwsIGNhdXNhbF9zdG9yeV90YWJsZSwgd2Vha19zdG9yeV90YWJsZSkgPVxuICAgICAgICAgICAgICAgIFV0aWxpdGllc19leHBlcnRcbiAgICAgICAgICAgICAgICAuZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRoX2FfcHJvZ3Jlc3NfYmFyX3doaWxlX3Jlc2hha2luZ190aGVfdHJhY2VcbiAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIHdlX3NoYWxsIHdlX3NoYWxsX25vdFxuICAgICAgICAgICAgICAgICAgVXRpbGl0aWVzX2V4cGVydC5wYXJhbWV0ZXJzIGF1eFxuICAgICAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiB3ZSByZW1vdmUgcHNldWRvIGludmVyc2UgZXZlbnRzICopXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucHVzaF9qc29uIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RvcnlfanNvbi5QaGFzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFN0b3J5X2pzb24uSW5wcm9ncmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlN0YXJ0IGNvbGxlY3Rpbmcgb25lIG5ldyB0cmFjZVwiICkpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgICAgICAgICAgICAgICAgICBVLnJlbW92ZV9wc2V1ZG9faW52ZXJzZV9ldmVudHMgKGRvX25vdF9sb2cgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciB0cmFjZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoKiB3ZSBjb21wdXRlIGNhdXNhbCBjb21wcmVzc2lvbiAqKVxuICAgICAgICAgICAgICAgICAgICBVLmN1dCAoZG9fbm90X2xvZyBwYXJhbWV0ZXIpIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciB0cmFjZSlcbiAgICAgICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICAgICAgICAgICAgICAgICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl9cbiAgICAgICAgICAgICAgICAgICAgICAgP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlIGluZm9cbiAgICAgICAgICAgICAgICAgICAgICAgKGJsYWNrbGlzdCwgdGFibGUyLCB0YWJsZTMpIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlMiA9XG4gICAgICAgICAgICAgICAgICAgICAgVS5zdG9yZV90cmFjZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZSBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZTJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgICAgICAgICAgICAgICAgIFUucmVtb3ZlX2JsYWNrbGlzdGVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBibGFja2xpc3QgdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgVS53ZWFrbHlfY29tcHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tsaXN0LCB0YWJsZTMgPVxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgdGFibGUzKSB0cmFjZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUuc3RvcmVfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8gdGFibGUzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVS5ibGFja19saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHRhYmxlMylcbiAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgdGFibGUzKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzX2ludGVyZmFjZSB0YWJsZTJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICBqc19pbnRlcmZhY2UgdGFibGUzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrbGlzdCwgdGFibGUyLCB0YWJsZTMpKVxuICAgICAgICAgICAgICAgICAgc3RlcF9saXN0XG4gICAgICAgICAgICAgICAgICAoYmxhY2tsaXN0LCB0YWJsZTIsIHRhYmxlMylcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X3RhYmxlID1cbiAgICAgICAgICAgICAgICBVLmZsYXR0ZW5fc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGNhdXNhbF9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB3ZWFrX3N0b3J5X3RhYmxlID1cbiAgICAgICAgICAgICAgICBVLmZsYXR0ZW5fc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIHdlYWtfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlIGpzX2ludGVyZmFjZVxuICAgICAgICAgICAgICAgICAgY2F1c2FsX3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2VcbiAgICAgICAgICAgICAgICAgIHdlYWtfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfdGFibGUsIHdlYWtfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9IHBhcmFtZXRlcl9jYXVzYWwgaW5cbiAgICAgICAgICAgICAgICBVdGlsaXRpZXNfZXhwZXJ0XG4gICAgICAgICAgICAgICAgLmZvbGRfb3Zlcl90aGVfY2F1c2FsX3Bhc3Rfb2Zfb2JzZXJ2YWJsZXNfd2l0aF9hX3Byb2dyZXNzX2Jhcl93aGlsZV9yZXNoYWtpbmdfdGhlX3RyYWNlXG4gICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciB3ZV9zaGFsbCB3ZV9zaGFsbF9ub3RcbiAgICAgICAgICAgICAgICAgIFV0aWxpdGllc19leHBlcnQucGFyYW1ldGVycyBhdXhcbiAgICAgICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2UgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogd2UgcmVtb3ZlIHBzZXVkbyBpbnZlcnNlIGV2ZW50cyAqKVxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9tb2RlIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfY2hhbm5lbF9vbiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0b3J5X2pzb24uUGhhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTdG9yeV9qc29uLklucHJvZ3Jlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTdGFydCBjb2xsZWN0aW5nIG9uZSBuZXcgdHJhY2VcIiApKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICAgICAgICAgICAgICAgICAgVS5yZW1vdmVfcHNldWRvX2ludmVyc2VfZXZlbnRzIChkb19ub3RfbG9nIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCogd2UgY29tcHV0ZSBjYXVzYWwgY29tcHJlc3Npb24gKilcbiAgICAgICAgICAgICAgICAgICAgVS5jdXQgKGRvX25vdF9sb2cgcGFyYW1ldGVyKSB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgdHJhY2UpXG4gICAgICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgICAgICAgICAgICAgICAgICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfXG4gICAgICAgICAgICAgICAgICAgICAgID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpbmZvIHRyYWNlIHRhYmxlIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgaW5mbywgdGFibGUgPVxuICAgICAgICAgICAgICAgICAgICAgIFUuc3RvcmVfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaW5mbyB0cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICBqc19pbnRlcmZhY2UgdGFibGVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGluZm8sIHRhYmxlKVxuICAgICAgICAgICAgICAgICAgc3RlcF9saXN0IHRhYmxlMlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfdGFibGUgPVxuICAgICAgICAgICAgICAgIFUuZmxhdHRlbl9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgY2F1c2FsX3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2VcbiAgICAgICAgICAgICAgICAgIGNhdXNhbF9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBuX2NhdXNhbF9zdG9yaWVzID0gVS5jb3VudF9zdG9yaWVzIGNhdXNhbF9zdG9yeV90YWJsZSBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB3ZWFrbHlfc3RvcnlfdGFibGUgPVxuICAgICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJfd2VhayBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiXFx0IC0gd2VhayBmbG93IGNvbXByZXNzaW9uICglaSlALlwiIG5fY2F1c2FsX3N0b3JpZXNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBibGFja2xpc3QgPSBVLmNyZWF0ZV9ibGFja19saXN0IChsYXN0X2VpZCArIDEpIGluXG4gICAgICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9jb21wcmVzc2lvbl93ZWFrIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9ibGFja2xpc3QsIHdlYWtseV9zdG9yeV90YWJsZSkgPVxuICAgICAgICAgICAgICAgICAgVS5mb2xkX3N0b3J5X3RhYmxlX3dpdGhfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIFwid2VhayBjb21wcmVzc2lvblwiXG4gICAgICAgICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICAgICAgICAgICAgICAgICAgICAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246X1xuICAgICAgICAgICAgICAgICAgICAgICAgID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZSBsaXN0X2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAoYmxhY2tsaXN0LCBzdG9yeV9saXN0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgVS53ZWFrbHlfY29tcHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgc3RvcnlfbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgc3RvcnlfbGlzdCkgdHJhY2UgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdG9yeV9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUuc3RvcmVfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2UgbGlzdF9pbmZvIHN0b3J5X2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzX2ludGVyZmFjZSBzdG9yeV9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgc3RvcnlfbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tsaXN0LCBzdG9yeV9saXN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2xpc3QsIHN0b3J5X2xpc3QpKVxuICAgICAgICAgICAgICAgICAgICBjYXVzYWxfc3RvcnlfdGFibGUgKGJsYWNrbGlzdCwgdGFibGUzKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgVS5mbGF0dGVuX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICB3ZWFrbHlfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlIGpzX2ludGVyZmFjZVxuICAgICAgICAgICAgICAgICAgd2Vha2x5X3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X3RhYmxlLCB3ZWFrbHlfc3RvcnlfdGFibGVcbiAgICAgICAgICAgIClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlMiwgdGFibGUzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBuX3dlYWtfc3RvcmllcyA9IFUuY291bnRfc3RvcmllcyB3ZWFrbHlfc3RvcnlfdGFibGUgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGUgPVxuICAgICAgICAgIGlmIHN0cm9uZ19jb21wcmVzc2lvbl9vbiB0aGVuIChcbiAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJfc3Ryb25nIGluXG4gICAgICAgICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfY29tcHJlc3Npb25fc3Ryb25nIHBhcmFtZXRlclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiXFx0IC0gc3Ryb25nIGZsb3cgY29tcHJlc3Npb24gKCVpKUAuXCIgbl93ZWFrX3N0b3JpZXNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgICAgIFUuZm9sZF9zdG9yeV90YWJsZV93aXRoX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGVycm9yIFwic3Ryb25nX2NvbXByZXNzaW9uXCJcbiAgICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgICAgICAgICAgICAgICAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfXG4gICAgICAgICAgICAgICAgICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHJlZmluZWRfZXZlbnRfbGlzdCBsaXN0X2luZm9cbiAgICAgICAgICAgICAgICAgICAgIHN0cm9uZ2x5X3N0b3J5X3RhYmxlIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgVS5jb21wcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIHJlZmluZWRfZXZlbnRfbGlzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0cm9uZ2x5X3N0b3J5X3RhYmxlID1cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZSkgbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBVLnN0b3JlX3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2luZm8gc3Ryb25nbHlfc3RvcnlfdGFibGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHN0cm9uZ2x5X3N0b3J5X3RhYmxlKVxuICAgICAgICAgICAgICAgIHdlYWtseV9zdG9yeV90YWJsZSB0YWJsZTRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBVLmZsYXR0ZW5fc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgc3Ryb25nbHlfc3RvcnlfdGFibGVcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGU0XG4gICAgICAgIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgY2F1c2FsX3RhYmxlLFxuICAgICAgICAgIGNhdXNhbF9zdG9yeV90YWJsZSxcbiAgICAgICAgICB3ZWFrbHlfc3RvcnlfdGFibGUsXG4gICAgICAgICAgc3Ryb25nbHlfc3RvcnlfdGFibGUgKVxuICAgICAgKVxuICAgIClcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgaWYgY2F1c2FsX3RyYWNlX29uIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXhwb3J0ID1cbiAgICAgICAgVS5leHBvcnRfc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2F1c2FsXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIENhdXNhbC5wcmV0dHlfcHJpbnQgfmRvdEZvcm1hdFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZW52IEdyYXBoX2Nsb3N1cmUuY29uZmlnX3NtYWxsX2dyYXBoIFwiXCIgXCJcIlxuICAgICAgICAgIGV4cG9ydFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICkgZWxzZVxuICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIGlmIHdlYWtfY29tcHJlc3Npb25fb24gdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBleHBvcnQgPVxuICAgICAgICBVLmV4cG9ydF9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB3ZWFrXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIENhdXNhbC5wcmV0dHlfcHJpbnQgfmRvdEZvcm1hdFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZW52IEdyYXBoX2Nsb3N1cmUuY29uZmlnX3NtYWxsX2dyYXBoIFwiV2Vha2x5XCJcbiAgICAgICAgICBcIndlYWtseSBcIiBleHBvcnRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgICApIGVsc2VcbiAgICAgIGVycm9yLCBsb2dfaW5mb1xuICBpblxuICBsZXQgZXJyb3IsIF9sb2dfaW5mbyA9XG4gICAgaWYgc3Ryb25nX2NvbXByZXNzaW9uX29uIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXhwb3J0ID1cbiAgICAgICAgVS5leHBvcnRfc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3Ryb25nXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIENhdXNhbC5wcmV0dHlfcHJpbnQgfmRvdEZvcm1hdFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZW52IEdyYXBoX2Nsb3N1cmUuY29uZmlnX3NtYWxsX2dyYXBoIFwiU3Ryb25nbHlcIlxuICAgICAgICAgIFwic3Ryb25nbHkgXCIgZXhwb3J0XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgKSBlbHNlXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgaW5cbiAgbGV0ICgpID1cbiAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgIChTdG9yeV9qc29uLlBoYXNlIChTdG9yeV9qc29uLlN1Y2Nlc3MsIFwiQ29tcHJlc3Npb24gY29tcGxldGVkXCIpKVxuICBpblxuICBsZXQgXyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9sb2dnZXJcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICBpblxuICBsZXQgXyA9XG4gICAgRXhjZXB0aW9uLnByaW50X2Zvcl9LYVNpbVxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvclxuICBpblxuICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IG9uX21lc3NhZ2Ugfm5vbmUgfndlYWsgfnN0cm9uZyB+c2VuZF9tZXNzYWdlID1cbiAgbGV0IHBhcmFtZXRlciA9XG4gICAgcmVmXG4gICAgICAoQ29tcHJlc3Npb25fbWFpbi5idWlsZF9wYXJhbWV0ZXJcbiAgICAgICAgIH5jYWxsZWRfZnJvbTpSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5TZXJ2ZXIgfnNlbmRfbWVzc2FnZSB+bm9uZSB+d2Vha1xuICAgICAgICAgfnN0cm9uZyAoKSlcbiAgaW5cbiAgZnVuIHRleHQgLT5cbiAgICB0cnlcbiAgICAgIEpzb25VdGlsLnJlYWRfdmFyaWFudCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmdcbiAgICAgICAgKGZ1biBzdCBiIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBcIkNPTkZJR1wiIC0+XG4gICAgICAgICAgICBsZXQgY29uZiA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2pzb24gc3QgYiBpblxuICAgICAgICAgICAgbGV0IG5vbmUgPVxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX2Jvb2xfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwibm9uZVwiIGNvbmYpXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIGIgLT4gYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCB3ZWFrID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19ib29sX29wdGlvblxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcIndlYWtcIiBjb25mKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiB3ZWFrXG4gICAgICAgICAgICAgIHwgU29tZSBiIC0+IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgc3Ryb25nID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19ib29sX29wdGlvblxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInN0cm9uZ1wiIGNvbmYpXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHN0cm9uZ1xuICAgICAgICAgICAgICB8IFNvbWUgYiAtPiBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgcGFyYW1ldGVyIDo9XG4gICAgICAgICAgICAgICAgQ29tcHJlc3Npb25fbWFpbi5idWlsZF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgIH5jYWxsZWRfZnJvbTpSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5TZXJ2ZXIgfnNlbmRfbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgfm5vbmUgfndlYWsgfnN0cm9uZyAoKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgpXG4gICAgICAgICAgfCBcIlJVTlwiIC0+XG4gICAgICAgICAgICBsZXQgZW52LCBzdGVwcyA9XG4gICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAgICAgKFRyYWNlLmZvbGRfdHJhY2VcbiAgICAgICAgICAgICAgICAgICAoZnVuIF9lbnYgc3RlcHMgc3RlcCAtPiBzdGVwIDo6IHN0ZXBzKVxuICAgICAgICAgICAgICAgICAgIChmdW4gXyAtPiBbXSkpXG4gICAgICAgICAgICAgICAgc3QgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIENvbXByZXNzaW9uX21haW4uY29tcHJlc3NfYW5kX3ByaW50ICFwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICB+ZG90Rm9ybWF0OkNhdXNhbC5IdG1sIGVudlxuICAgICAgICAgICAgICAgIChDb21wcmVzc2lvbl9tYWluLmluaXRfc2VjcmV0X2xvZ19pbmZvICgpKVxuICAgICAgICAgICAgICAgIChMaXN0LnJldiBzdGVwcylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLmpzb25fZXJyb3IgKFwiSW52YWxpZCBLYVN0b3IgbWVzc2FnZTogXCIgXiB4KSkpXG4gICAgICAgIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKVxuICAgICAgICAoTGV4aW5nLmZyb21fc3RyaW5nIHRleHQpXG4gICAgd2l0aCBlIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZXByaW50ZiBcIiVzQC5cIiAoUHJpbnRleGMudG9fc3RyaW5nIGUpIGluXG4gICAgICAoKSAoKlRPRE8qKVxuIiwidHlwZSAnYSBzdXBlcmxpc3QgPSBFbHQgb2YgJ2EgfCBTdXBlcl9saXN0IG9mICdhIHN1cGVybGlzdCBsaXN0IGxpc3RcblxubGV0IHJlYyBmb2xkIGYgYSBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgRWx0IGVsdCAtPiBmIGEgZWx0XG4gIHwgU3VwZXJfbGlzdCBsIC0+IExpc3QuZm9sZF9sZWZ0IChMaXN0LmZvbGRfbGVmdCAoZm9sZCBmKSkgYSBsXG5cbmxldCByZWMgY29tcGFyZV9saXN0IGNvbXBhcmUgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggbDIgd2l0aFxuICAgIHwgW10gLT4gMFxuICAgIHwgXyAtPiAtMSlcbiAgfCBoMSA6OiB0MSAtPlxuICAgIChtYXRjaCBsMiB3aXRoXG4gICAgfCBbXSAtPiAxXG4gICAgfCBoMiA6OiB0MiAtPlxuICAgICAgbGV0IGNtcCA9IGNvbXBhcmUgaDEgaDIgaW5cbiAgICAgIChtYXRjaCBjbXAgd2l0aFxuICAgICAgfCAwIC0+IGNvbXBhcmVfbGlzdCBjb21wYXJlIHQxIHQyXG4gICAgICB8IF8gLT4gY21wKSlcblxubGV0IHJlYyBjb21wYXJlX3N1cGVybGlzdCBjb21wYXJlIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IEVsdCBhLCBFbHQgYiAtPiBjb21wYXJlIGEgYlxuICB8IFN1cGVyX2xpc3QgYSwgU3VwZXJfbGlzdCBiIC0+XG4gICAgY29tcGFyZV9saXN0IChjb21wYXJlX2xpc3QgKGNvbXBhcmVfc3VwZXJsaXN0IGNvbXBhcmUpKSBhIGJcbiAgfCBFbHQgXywgU3VwZXJfbGlzdCBfIC0+IC0xXG4gIHwgU3VwZXJfbGlzdCBfLCBFbHQgXyAtPiAxXG5cbmxldCByZWMgc29ydCBjb21wYXJlIHN1cGVybGlzdCA9XG4gIG1hdGNoIHN1cGVybGlzdCB3aXRoXG4gIHwgRWx0IGEgLT4gRWx0IGFcbiAgfCBTdXBlcl9saXN0IGEgLT5cbiAgICBTdXBlcl9saXN0XG4gICAgICAoTGlzdC5yZXZfbWFwXG4gICAgICAgICAoZnVuIGwgLT5cbiAgICAgICAgICAgbGV0IGwnID0gTGlzdC5yZXZfbWFwIChzb3J0IGNvbXBhcmUpIGwgaW5cbiAgICAgICAgICAgbGV0IGwnID0gTGlzdC5zb3J0IChjb21wYXJlX3N1cGVybGlzdCBjb21wYXJlKSBsJyBpblxuICAgICAgICAgICBsJylcbiAgICAgICAgIChMaXN0LnJldiBhKSlcblxubGV0IGR1bXBfc3VwZXJfbGlzdCBmIHMgbCA9XG4gIGxldCByZWMgYXV4IGRlcHRoIGYgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBFbHQgYSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJXMlYUAsXCIgZGVwdGggcyBhXG4gICAgfCBTdXBlcl9saXN0IGwgLT5cbiAgICAgIFBwLmxpc3QgUHAuY3V0XG4gICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVzQCwlYVwiIGRlcHRoXG4gICAgICAgICAgICAoUHAubGlzdCBQcC5jdXQgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiglc0AsJWFcIiBkZXB0aCAoYXV4IChcIi0tXCIgXiBkZXB0aCkpIGwpKVxuICAgICAgICAgICAgbClcbiAgICAgICAgZiBsXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQF1ALlwiIChhdXggXCItPlwiKSBsXG5cbnR5cGUgJ2EgaW5mbyA9IHsgcHJlZF8xOiBpbnQgbGlzdDsgY29uZmxpY3RfMTogaW50IGxpc3Q7IGxhYmVsOiAnYTsgZGVwdGg6IGludCB9XG5cbmxldCBjb21wYXJlX2ZzdF90cmlwbGUgKGEsIF8sIF8pIChiLCBfLCBfKSA9IGNvbXBhcmUgYSBiXG5cbmxldCBzbWFzaCBjb21wYXJlIGwgPVxuICBsZXQgcmVjIGF1eCB0b19kbyBvbGQgY3VycmVudCBhY2N1ID1cbiAgICBtYXRjaCB0b19kbyB3aXRoXG4gICAgfCBbXSAtPiBjdXJyZW50IDo6IGFjY3VcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWYgY29tcGFyZSBoIG9sZCA9IDAgdGhlblxuICAgICAgICBhdXggdCBvbGQgKGggOjogY3VycmVudCkgYWNjdVxuICAgICAgZWxzZVxuICAgICAgICBhdXggdCBoIFsgaCBdIChjdXJyZW50IDo6IGFjY3UpXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IEVsdCBhIC0+IEVsdCBhXG4gIHwgU3VwZXJfbGlzdCBsIC0+XG4gICAgU3VwZXJfbGlzdFxuICAgICAgKExpc3QucmV2XG4gICAgICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gYWNjdSBsIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IGFjY3VcbiAgICAgICAgICAgICAgfCBoIDo6IHQgLT4gYXV4IHQgaCBbIGggXSBhY2N1KVxuICAgICAgICAgICAgW10gbCkpXG5cbigqbGV0IGwgPVxuICAgIFN1cGVyX2xpc3RcbiAgICAgIFtcbiAgICAgICAgW1xuICAgICAgICAgIFN1cGVyX2xpc3RcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgW0VsdCAoMiwwLDApO0VsdCAoMywwLDApO0VsdCAoNCwwLDApXTtcbiAgICAgICAgICAgICAgW0VsdCAoMSwxLDEpO0VsdCAoMiwxLDEpO0VsdCAoMywxLDEpXTtcbiAgICAgICAgICAgICAgW0VsdCAoMiwyLDIpO0VsdCAoNCwyLDIpO0VsdCAoNSwzLDMpXTtcbiAgICAgICAgICAgICAgW0VsdCAoMSw0LDQpO0VsdCAoMiw0LDQpO0VsdCAoMyw0LDQpXV07XG4gICAgICAgICAgU3VwZXJfbGlzdFxuICAgICAgICAgICAgW1tFbHQgKDEsNSw1KTtFbHQgKDIsNSw1KV1dO1xuICAgICAgICAgIFN1cGVyX2xpc3RcbiAgICAgICAgICAgIFtbRWx0ICgxLDYsNik7RWx0ICgyLDYsNildXV1dOztcblxuICBsZXQgZHVtcF90cmlwbGUgKGEsYixjKSA9ICAgKFwiKFwiXihzdHJpbmdfb2ZfaW50IGEpXlwiLFwiXihzdHJpbmdfb2ZfaW50IGIpXlwiLFwiXihzdHJpbmdfb2ZfaW50IGMpXlwiKVwiKVxuXG4gIGxldCBfID0gZHVtcF9zdXBlcl9saXN0IGR1bXBfdHJpcGxlIGxcbiAgbGV0IGwxID0gc29ydCBjb21wYXJlX2ZzdF90cmlwbGUgbFxuICBsZXQgXyA9IGR1bXBfc3VwZXJfbGlzdCBkdW1wX3RyaXBsZSBsMVxuICBsZXQgbDIgPSBzbWFzaCAoY29tcGFyZV9zdXBlcmxpc3QgY29tcGFyZV9mc3RfdHJpcGxlKSBsMVxuICBsZXQgXyA9IGR1bXBfc3VwZXJfbGlzdCBkdW1wX3RyaXBsZSBsMiAqKVxuKCpcbmxldCBub3JtYWxfZm9ybSByb290IGNvbXBhcmUgZiA9IFxuICBsZXQgZGVhbF93aXRoX2VsdCBlbHQgPSBcbiAgICBsZXQgaW5mbyA9IGYgeCBpbiBcbiAgICBsZXQgbm9kZSA9IChpbmZvLmxhYmVsLGluZm8uZGVwdGgsTGlzdC5sZW5ndGggaW5mby5wcmVkXzEsTGlzdC5sZW5ndGggaW5mby5jb25mbGljdF8xKSBpbiBcbiAgICBub2RlLGluZm8ucHJlZF8xLGluZm8uY29uZmxpY3RfMSBcbiAgaW4gXG5cbiAgXG4gIGxldCByZWMgYXV4IGN1cnJlbnRfbGF5ZXIgbmV4dF9sYXllciBhY2N1ID0gXG4gICAgbWF0Y2ggXG4gICAgICBjdXJyZW50X2xheWVyIFxuICAgIHdpdGggXG4gICAgfCBMaXN0IGwgIC0+IFxuXG4gICAgfCBTdXBlcl9saXN0IGwgLT4gXG4gICAgICAgIGxldCBleHRlbmRlZF9saXN0ID0gTGlzdC5yZXZfbWFwIGRlYWxfd2l0aF9lbHQgbCBpbiBcbiAgICAgICAgbGV0IHNvcnRlZF9saXN0ID0gTGlzdC5zb3J0IGNvbXBhcmVfZnN0X3RyaXBsZSBleHRlbmRlZF9saXN0IGluIFxuICAgICAgICBsZXQgc21hc2hfbGlzdCA9IHNtYXNoIGNvbXBhcmVfZnN0X3RyaXBsZSBleHRlbmRlZF9saXN0IGluIFxuICAgICAgICBsZXQgaW5mb19vZiB4ID0gXG4gICAgICAgICAgbGV0IGluZm8gPSBmIHggaW4gXG4gICAgICAgICAgKGluZm8ubGFiZWwsaW5mby5kZXB0aCxMaXN0Lmxlbmd0aCBpbmZvLnByZWRfMSxMaXN0Lmxlbmd0aCBpbmZvLmNvbmZsaWN0XzEpXG4gICAgICAgIGluIFxuICAgICAgICBcbiAgICAgICAgICBcbiAgICAgIGVuZFxuICAgIHwgSHViIGwgLT4gXG4gICAgICBiZWdpbiBcbiAgICAgIGVuZCBcbiAgICAgICAgXG4qKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuKCogSGVscGVyIGZ1bmN0aW9ucyBmb3IgcmVzdWx0ICopXG5sZXQgZXJyb3JfbXNnID8oc2V2ZXJpdHkgPSBMb2dzLkVycm9yKSA/cmFuZ2UgdGV4dCA6IFJlc3VsdF91dGlsLm1lc3NhZ2UgPVxuICB7IFJlc3VsdF91dGlsLnNldmVyaXR5OyBSZXN1bHRfdXRpbC50ZXh0OyBSZXN1bHRfdXRpbC5yYW5nZSB9XG5cbmxldCByZXN1bHRfZXJyb3JfbXNnID9zZXZlcml0eSA/cmFuZ2UgP3Jlc3VsdF9jb2RlIChtZXNzYWdlIDogc3RyaW5nKSA6XG4gICAgJ29rIEFwaS5yZXN1bHQgPVxuICBSZXN1bHRfdXRpbC5lcnJvciA/c3RhdHVzOnJlc3VsdF9jb2RlIFsgZXJyb3JfbXNnID9zZXZlcml0eSA/cmFuZ2UgbWVzc2FnZSBdXG5cbmxldCByZXN1bHRfbWVzc2FnZXMgP3Jlc3VsdF9jb2RlIG1lc3NhZ2VzIDogJ29rIEFwaS5yZXN1bHQgPVxuICBSZXN1bHRfdXRpbC5lcnJvciA/c3RhdHVzOnJlc3VsdF9jb2RlIG1lc3NhZ2VzXG5cbmxldCByZXN1bHRfZXJyb3JfZXhjZXB0aW9uID9zZXZlcml0eSA/cmVzdWx0X2NvZGUgKGUgOiBleG4pIDogJ29rIEFwaS5yZXN1bHQgPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgdHJ5IFByaW50ZXhjLnRvX3N0cmluZyBlIHdpdGggXyAtPiBcInVuc3BlY2lmaWVkIGV4Y2VwdGlvbiB0aHJvd25cIlxuICBpblxuICByZXN1bHRfZXJyb3JfbXNnID9zZXZlcml0eSA/cmVzdWx0X2NvZGUgbWVzc2FnZVxuXG5sZXQgbWV0aG9kX2hhbmRsZXJfZXJyb3JzID9zZXZlcml0eSBtaCA9XG4gIGxldCB1bmNhdWdodCA9XG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF91bmNhdWdodF9leGNlcHRpb25fbGlzdF90b191aSBtaFxuICBpblxuICBsZXQgY2F1Z2h0ID0gRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3RfdG9fdWkgbWggaW5cbiAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgKGZ1biB4IGwgLT5cbiAgICAgIGVycm9yX21zZyA/c2V2ZXJpdHlcbiAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnBwX2NhdWdodCB4KVxuICAgICAgOjogbClcbiAgICBjYXVnaHRcbiAgICAoTGlzdC5tYXBcbiAgICAgICAoZnVuIHggLT5cbiAgICAgICAgIGVycm9yX21zZyA/c2V2ZXJpdHlcbiAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnBwX3VuY2F1Z2h0IHgpKVxuICAgICAgIHVuY2F1Z2h0KVxuXG5sZXQgbWV0aG9kX2hhbmRsZXJfbWVzc2FnZXMgP3NldmVyaXR5ID9yZXN1bHRfY29kZSBtaCA9XG4gIHJlc3VsdF9tZXNzYWdlcyA/cmVzdWx0X2NvZGUgKG1ldGhvZF9oYW5kbGVyX2Vycm9ycyA/c2V2ZXJpdHkgbWgpXG5cbmxldCByZXN1bHRfa2FzYSA9IGZ1bmN0aW9uXG4gIHwgUmVzdWx0Lk9rIHggLT4gUmVzdWx0X3V0aWwub2sgeFxuICB8IFJlc3VsdC5FcnJvciBtaCAtPiBtZXRob2RfaGFuZGxlcl9tZXNzYWdlcyB+c2V2ZXJpdHk6TG9ncy5FcnJvciBtaFxuXG5sZXQgcmVzdWx0X2JpbmRfbHd0IDpcbiAgICBvazooJ29rIC0+ICgnYV9vaywgJ2FfY29kZSkgQXBpX3R5cGVzX3QucmVzdWx0IEx3dC50KSAtPlxuICAgICgnb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCAtPlxuICAgICgnYV9vaywgJ2FfY29kZSkgQXBpX3R5cGVzX3QucmVzdWx0IEx3dC50ID1cbiBmdW4gfihvayA6ICdvayAtPiAoJ2Ffb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCBMd3QudClcbiAgICAgeyBSZXN1bHRfdXRpbC52YWx1ZTsgc3RhdHVzOyBtZXNzYWdlcyB9IC0+XG4gIG1hdGNoIHZhbHVlIHdpdGhcbiAgfCBSZXN1bHQuT2sgZGF0YSAtPiBvayBkYXRhXG4gIHwgUmVzdWx0LkVycm9yIGUgLT5cbiAgICBMd3QucmV0dXJuIHsgUmVzdWx0X3V0aWwudmFsdWUgPSBSZXN1bHQuRXJyb3IgZTsgc3RhdHVzOyBtZXNzYWdlcyB9XG5cbmxldCByZWMgcmVzdWx0X2ZvbGRfbHd0IDpcbiAgICBmOlxuICAgICAgKCgnb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCAtPlxuICAgICAgJ3ZhbHVlIC0+XG4gICAgICAoJ29rLCAnYV9jb2RlKSBBcGlfdHlwZXNfdC5yZXN1bHQgTHd0LnQpIC0+XG4gICAgaWQ6KCdvaywgJ2FfY29kZSkgQXBpX3R5cGVzX3QucmVzdWx0IC0+XG4gICAgJ3ZhbHVlIGxpc3QgLT5cbiAgICAoJ2Ffb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCBMd3QudCA9XG4gZnVuIH4oZiA6XG4gICAgICAgICgnb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCAtPlxuICAgICAgICAndmFsdWUgLT5cbiAgICAgICAgKCdvaywgJ2FfY29kZSkgQXBpX3R5cGVzX3QucmVzdWx0IEx3dC50KVxuICAgICB+KGlkIDogKCdvaywgJ2FfY29kZSkgQXBpX3R5cGVzX3QucmVzdWx0KSAobCA6ICd2YWx1ZSBsaXN0KSAtPlxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBMd3QucmV0dXJuIGlkXG4gIHwgaCA6OiB0IC0+IGYgaWQgaCA+Pj0gZnVuIHJlc3VsdCAtPiByZXN1bHRfZm9sZF9sd3QgfmYgfmlkOnJlc3VsdCB0XG5cbmxldCByZWMgcmVzdWx0X2NvbWJpbmUgOiB1bml0IEFwaS5yZXN1bHQgbGlzdCAtPiB1bml0IEFwaS5yZXN1bHQgPSBmdW5jdGlvblxuICB8IFtdIC0+IFJlc3VsdF91dGlsLm9rICgpXG4gIHwgbCA6OiB0IC0+XG4gICAgUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgfm9rOihmdW4gKCkgLT4gcmVzdWx0X2NvbWJpbmUgdClcbiAgICAgIH5lcnJvcjooZnVuIGRhdGFfMSAtPlxuICAgICAgICBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgfm9rOihmdW4gKCkgLT4gbClcbiAgICAgICAgICB+ZXJyb3I6KGZ1biBkYXRhX3IgLT5cbiAgICAgICAgICAgIFJlc3VsdF91dGlsLmVycm9yIH5zdGF0dXM6bC5SZXN1bHRfdXRpbC5zdGF0dXMgKGRhdGFfMSBAIGRhdGFfcikpXG4gICAgICAgICAgKHJlc3VsdF9jb21iaW5lIHQpKVxuICAgICAgbFxuXG5sZXQgbWQ1c3VtIHRleHQgPSBEaWdlc3QudG9faGV4IChEaWdlc3Quc3RyaW5nIHRleHQpXG4iLCIoKiBBdXRvLWdlbmVyYXRlZCBmcm9tIFwiYXBpX3R5cGVzLmF0ZFwiICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0yNy0zMi0zMy0zNS0zOVwiXVxuXG50eXBlIHNuYXBzaG90X2lkID0gQXBpX3R5cGVzX3Quc25hcHNob3RfaWRcblxudHlwZSBzbmFwc2hvdCA9IERhdGEuc25hcHNob3RcblxudHlwZSBzbmFwc2hvdF9kZXRhaWwgPSBBcGlfdHlwZXNfdC5zbmFwc2hvdF9kZXRhaWxcblxudHlwZSBzbmFwc2hvdF9jYXRhbG9nID0gQXBpX3R5cGVzX3Quc25hcHNob3RfY2F0YWxvZ1xuXG50eXBlIHNpdGVfZ3JhcGggPSBVc2VyX2dyYXBoLmNvbm5lY3RlZF9jb21wb25lbnRcblxudHlwZSBzaW11bGF0aW9uX3N0YXRlID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9zdGF0ZVxuXG50eXBlIHNpbXVsYXRpb25fc2VlZCA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fc2VlZFxuXG50eXBlIHNpbXVsYXRpb25fcHJvZ3Jlc3MgPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Byb2dyZXNzID0ge1xuICBzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWU6IGZsb2F0O1xuICBzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZTogaW50IG9wdGlvbjtcbiAgc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudDogaW50O1xuICBzaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2U6IGludCBvcHRpb247XG4gIHNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHM6IGludCBvcHRpb247XG4gIHNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZzogYm9vbFxufVxuXG50eXBlIHNpbXVsYXRpb25fcGFyYW1ldGVyID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPSB7XG4gIHNpbXVsYXRpb25fcGxvdF9wZXJpb2QgKCphdGQgcGxvdF9wZXJpb2QgKik6IGZsb2F0O1xuICBzaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbiAoKmF0ZCBwYXVzZV9jb25kaXRpb24gKik6IHN0cmluZztcbiAgc2ltdWxhdGlvbl9zZWVkICgqYXRkIHNlZWQgKik6IHNpbXVsYXRpb25fc2VlZCBvcHRpb247XG4gIHNpbXVsYXRpb25fc3RvcmVfdHJhY2UgKCphdGQgc3RvcmVfdHJhY2UgKik6IGJvb2xcbn1cblxudHlwZSAoJ3Bsb3QsICdkaW5zLCAnZmlsZV9saW5lcywgJ3NuYXBzaG90cywgJ2lucHV0cywgJ2xvZ19tZXNzYWdlcykgc2ltdWxhdGlvbl9vdXRwdXQgPVxuICAoJ3Bsb3QsICdkaW5zLCAnZmlsZV9saW5lcywgJ3NuYXBzaG90cywgJ2lucHV0cywgJ2xvZ19tZXNzYWdlcykgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXQgPSB7XG4gIHNpbXVsYXRpb25fb3V0cHV0X3Bsb3Q6ICdwbG90O1xuICBzaW11bGF0aW9uX291dHB1dF9kaW5zOiAnZGlucztcbiAgc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lczogJ2ZpbGVfbGluZXM7XG4gIHNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90czogJ3NuYXBzaG90cztcbiAgc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzOiAnaW5wdXRzO1xuICBzaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXM6ICdsb2dfbWVzc2FnZXNcbn1cblxudHlwZSBzaW11bGF0aW9uX2ludGVydmVudGlvbiA9IEFwaV90eXBlc190LnNpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG5cbnR5cGUgc2ltdWxhdGlvbl9pbmZvX291dHB1dCA9IEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb19vdXRwdXRcblxudHlwZSBzaW11bGF0aW9uX2luZm8gPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm8gPSB7XG4gIHNpbXVsYXRpb25faW5mb19wcm9ncmVzczogc2ltdWxhdGlvbl9wcm9ncmVzcztcbiAgc2ltdWxhdGlvbl9pbmZvX291dHB1dDogc2ltdWxhdGlvbl9pbmZvX291dHB1dFxufVxuXG50eXBlIHNpbXVsYXRpb25faWQgPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2lkXG5cbnR5cGUgc2ltdWxhdGlvbl9hcnRpZmFjdCA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fYXJ0aWZhY3QgPSB7XG4gIHNpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkOiBzaW11bGF0aW9uX3NlZWRcbn1cblxudHlwZSBzaGFyaW5nX2xldmVsID0gUGF0dGVybi5zaGFyaW5nX2xldmVsXG5cbnR5cGUgKCdvaywgJ2Vycm9yKSByZXN1bHQgPSAoJ29rLCAnZXJyb3IpIFJlc3VsdF91dGlsLnRcblxudHlwZSBwYXJzaW5nX2NvbXBpbCA9IEFzdC5wYXJzaW5nX2NvbXBpbFxuXG50eXBlIG5iciA9IE5ici50XG5cbnR5cGUgcHJvamVjdF9wYXJzZSA9IEFwaV90eXBlc190LnByb2plY3RfcGFyc2UgPSB7XG4gIHBhdHRlcm5fc2hhcmluZzogc2hhcmluZ19sZXZlbDtcbiAgYXN0OiBwYXJzaW5nX2NvbXBpbDtcbiAgdmFyaWFibGVfb3ZlcndyaXR0ZW46IChzdHJpbmcgKiBuYnIpIGxpc3Rcbn1cblxudHlwZSBwcm9qZWN0X3BhcmFtZXRlciA9IEFwaV90eXBlc190LnByb2plY3RfcGFyYW1ldGVyID0ge1xuICBwcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWN0X2lkOiBzdHJpbmdcbn1cblxudHlwZSBwbG90X2xpbWl0ID0gQXBpX3R5cGVzX3QucGxvdF9saW1pdCA9IHtcbiAgcGxvdF9saW1pdF9vZmZzZXQ6IGludCBvcHRpb247XG4gIHBsb3RfbGltaXRfcG9pbnRzOiBpbnQgb3B0aW9uXG59XG5cbnR5cGUgcGxvdF9wYXJhbWV0ZXIgPSBBcGlfdHlwZXNfdC5wbG90X3BhcmFtZXRlclxuXG50eXBlIHBsb3QgPSBEYXRhLnBsb3RcblxudHlwZSBtZXNzYWdlID0gUmVzdWx0X3V0aWwubWVzc2FnZVxuXG50eXBlIGxvZ19tZXNzYWdlID0gQXBpX3R5cGVzX3QubG9nX21lc3NhZ2VcblxudHlwZSBrYXBwYV9jb2RlID0gQXBpX3R5cGVzX3Qua2FwcGFfY29kZVxuXG50eXBlIGZpbGVfbGluZSA9IERhdGEuZmlsZV9saW5lID0ge1xuICBmaWxlX2xpbmVfbmFtZSAoKmF0ZCBuYW1lICopOiBzdHJpbmcgb3B0aW9uO1xuICBmaWxlX2xpbmVfdGV4dCAoKmF0ZCB0ZXh0ICopOiBzdHJpbmdcbn1cblxudHlwZSBmaWxlX2xpbmVfZGV0YWlsID0gQXBpX3R5cGVzX3QuZmlsZV9saW5lX2RldGFpbFxuXG50eXBlIGZpbGVfbGluZV9jYXRhbG9nID0gQXBpX3R5cGVzX3QuZmlsZV9saW5lX2NhdGFsb2dcblxudHlwZSBlbnZpcm9ubWVudF9pbmZvID0gQXBpX3R5cGVzX3QuZW52aXJvbm1lbnRfaW5mbyA9IHtcbiAgZW52aXJvbm1lbnRfcHJvamVjdHMgKCphdGQgcHJvamVjdHMgKik6IGludDtcbiAgZW52aXJvbm1lbnRfYnVpbGQgKCphdGQgYnVpbGQgKik6IHN0cmluZ1xufVxuXG50eXBlIGRpbl9pZCA9IEFwaV90eXBlc190LmRpbl9pZFxuXG50eXBlIGRpbl9jYXRhbG9nID0gQXBpX3R5cGVzX3QuZGluX2NhdGFsb2dcblxudHlwZSBkaW4gPSBEYXRhLmRpblxuXG5sZXQgd3JpdGVfc25hcHNob3RfaWQgPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdF9pZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zbmFwc2hvdF9pZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NuYXBzaG90X2lkID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbilcbmxldCBzbmFwc2hvdF9pZF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc25hcHNob3RfaWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zbmFwc2hvdCA9IChcbiAgRGF0YS53cml0ZV9zbmFwc2hvdFxuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zbmFwc2hvdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NuYXBzaG90ID0gKFxuICBEYXRhLnJlYWRfc25hcHNob3RcbilcbmxldCBzbmFwc2hvdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc25hcHNob3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zbmFwc2hvdF9kZXRhaWwgPSAoXG4gIHdyaXRlX3NuYXBzaG90XG4pXG5sZXQgc3RyaW5nX29mX3NuYXBzaG90X2RldGFpbCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zbmFwc2hvdF9kZXRhaWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9kZXRhaWwgPSAoXG4gIHJlYWRfc25hcHNob3RcbilcbmxldCBzbmFwc2hvdF9kZXRhaWxfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90X2RldGFpbCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19zbmFwc2hvdF9pZF9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbGlzdCAoXG4gICAgd3JpdGVfc25hcHNob3RfaWRcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fc25hcHNob3RfaWRfbGlzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fc25hcHNob3RfaWRfbGlzdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19zbmFwc2hvdF9pZF9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICByZWFkX3NuYXBzaG90X2lkXG4gIClcbilcbmxldCBfc25hcHNob3RfaWRfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3NuYXBzaG90X2lkX2xpc3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zbmFwc2hvdF9jYXRhbG9nID0gKFxuICB3cml0ZV9fc25hcHNob3RfaWRfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdF9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NuYXBzaG90X2NhdGFsb2cgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9jYXRhbG9nID0gKFxuICByZWFkX19zbmFwc2hvdF9pZF9saXN0XG4pXG5sZXQgc25hcHNob3RfY2F0YWxvZ19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc25hcHNob3RfY2F0YWxvZyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpdGVfZ3JhcGggPSAoXG4gIFVzZXJfZ3JhcGgud3JpdGVfY29ubmVjdGVkX2NvbXBvbmVudFxuKVxubGV0IHN0cmluZ19vZl9zaXRlX2dyYXBoID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpdGVfZ3JhcGggb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaXRlX2dyYXBoID0gKFxuICBVc2VyX2dyYXBoLnJlYWRfY29ubmVjdGVkX2NvbXBvbmVudFxuKVxubGV0IHNpdGVfZ3JhcGhfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpdGVfZ3JhcGggKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX3N0YXRlID0gKFxuICBmdW4gb2IgeCAtPlxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgUnVubmluZyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJSdW5uaW5nXFxcIlwiXG4gICAgICB8IGBQYXVzZWQgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiUGF1c2VkXFxcIlwiXG4gICAgICB8IGBTdG9wcGVkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlN0b3BwZWRcXFwiXCJcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9zdGF0ZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX3N0YXRlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9zdGF0ZSA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgbWF0Y2ggWW9qc29uLlNhZmUuc3RhcnRfYW55X3ZhcmlhbnQgcCBsYiB3aXRoXG4gICAgICB8IGBFZGd5X2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLnJlYWRfaWRlbnQgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUnVubmluZ1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUnVubmluZ1xuICAgICAgICAgICAgfCBcIlBhdXNlZFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUGF1c2VkXG4gICAgICAgICAgICB8IFwiU3RvcHBlZFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU3RvcHBlZFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBEb3VibGVfcXVvdGUgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLmZpbmlzaF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUnVubmluZ1wiIC0+XG4gICAgICAgICAgICAgIGBSdW5uaW5nXG4gICAgICAgICAgICB8IFwiUGF1c2VkXCIgLT5cbiAgICAgICAgICAgICAgYFBhdXNlZFxuICAgICAgICAgICAgfCBcIlN0b3BwZWRcIiAtPlxuICAgICAgICAgICAgICBgU3RvcHBlZFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBTcXVhcmVfYnJhY2tldCAtPiAoXG4gICAgICAgICAgbWF0Y2ggQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4pXG5sZXQgc2ltdWxhdGlvbl9zdGF0ZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9zdGF0ZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fc2VlZCA9IChcbiAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fc2VlZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX3NlZWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX3NlZWQgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuKVxubGV0IHNpbXVsYXRpb25fc2VlZF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9zZWVkIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX2ludF9udWxsYWJsZSA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX251bGxhYmxlIChcbiAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9faW50X251bGxhYmxlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19pbnRfbnVsbGFibGUgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9faW50X251bGxhYmxlID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAoaWYgWW9qc29uLlNhZmUucmVhZF9udWxsX2lmX3Bvc3NpYmxlIHAgbGIgdGhlbiBOb25lXG4gICAgZWxzZSBTb21lICgoXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICApIHAgbGIpIDogXyBvcHRpb24pXG4pXG5sZXQgX2ludF9udWxsYWJsZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX2ludF9udWxsYWJsZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fcHJvZ3Jlc3MgOiBfIC0+IHNpbXVsYXRpb25fcHJvZ3Jlc3MgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogc2ltdWxhdGlvbl9wcm9ncmVzcykgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZVxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RkX2Zsb2F0XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWU7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9faW50X251bGxhYmxlXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZTtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudFxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50O1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2VcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19pbnRfbnVsbGFibGVcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZTtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50c1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2ludF9udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50cztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9ib29sXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmc7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9wcm9ncmVzcyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX3Byb2dyZXNzIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9wcm9ncmVzcyA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50ID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2UgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZyA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgIHwgMjQgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyNSAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMzAgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdnJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAzNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnaycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMxKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMzUgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNCkgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMzYgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzM1KSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX251bWJlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2UgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnQgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZSA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgNCAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgNSAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfYm9vbFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI1IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMzAgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ2cnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICA1XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMzQgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnaycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMxKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDRcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAzNSAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzEpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMzKSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzQpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMzYgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMxKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMykgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzM0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzUpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9udW1iZXJcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZSA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMyAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2UgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgNCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDUgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfYm9vbFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZVwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2VcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50ID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50XCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2Ugd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZVwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmcgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogc2ltdWxhdGlvbl9wcm9ncmVzcylcbiAgICAgIClcbilcbmxldCBzaW11bGF0aW9uX3Byb2dyZXNzX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX3Byb2dyZXNzIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZSA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX251bGxhYmxlIChcbiAgICB3cml0ZV9zaW11bGF0aW9uX3NlZWRcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19zaW11bGF0aW9uX3NlZWRfbnVsbGFibGUgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAoaWYgWW9qc29uLlNhZmUucmVhZF9udWxsX2lmX3Bvc3NpYmxlIHAgbGIgdGhlbiBOb25lXG4gICAgZWxzZSBTb21lICgoXG4gICAgICByZWFkX3NpbXVsYXRpb25fc2VlZFxuICAgICkgcCBsYikgOiBfIG9wdGlvbilcbilcbmxldCBfc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlX29mX3N0cmluZyBzID1cbiAgcmVhZF9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBfIC0+IHNpbXVsYXRpb25fcGFyYW1ldGVyIC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHNpbXVsYXRpb25fcGFyYW1ldGVyKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwicGxvdF9wZXJpb2RcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0ZF9mbG9hdFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wbG90X3BlcmlvZDtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwicGF1c2VfY29uZGl0aW9uXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzZWVkXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3NlZWQ7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInN0b3JlX3RyYWNlXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9ib29sXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3N0b3JlX3RyYWNlO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fcGFyYW1ldGVyID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wbG90X3BlcmlvZCA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb24gPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fc2VlZCA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9zdG9yZV90cmFjZSA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgIHwgNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMTEgLT4gKFxuICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJ3AnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB8ICdzJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDNcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMTUgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ2QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICduJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcGxvdF9wZXJpb2QgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9udW1iZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3NlZWQgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zaW11bGF0aW9uX3NlZWRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fc3RvcmVfdHJhY2UgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9ib29sXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgNCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDExIC0+IChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAncCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB8ICdzJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMTUgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnZCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ24nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Bsb3RfcGVyaW9kIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbnVtYmVyXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb24gOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3NlZWQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19zaW11bGF0aW9uX3NlZWRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMyAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3N0b3JlX3RyYWNlIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfYm9vbFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9wbG90X3BlcmlvZCA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wbG90X3BlcmlvZCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9wbG90X3BlcmlvZFwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbiB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb25cIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3NlZWQgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fc2VlZCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9zZWVkXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9zdG9yZV90cmFjZSA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9zdG9yZV90cmFjZSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9zdG9yZV90cmFjZVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IHNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgKVxuKVxubGV0IHNpbXVsYXRpb25fcGFyYW1ldGVyX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fb3V0cHV0IHdyaXRlX19wbG90IHdyaXRlX19kaW5zIHdyaXRlX19maWxlX2xpbmVzIHdyaXRlX19zbmFwc2hvdHMgd3JpdGVfX2lucHV0cyB3cml0ZV9fbG9nX21lc3NhZ2VzIDogXyAtPiAoJ3Bsb3QsICdkaW5zLCAnZmlsZV9saW5lcywgJ3NuYXBzaG90cywgJ2lucHV0cywgJ2xvZ19tZXNzYWdlcykgc2ltdWxhdGlvbl9vdXRwdXQgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogKCdwbG90LCAnZGlucywgJ2ZpbGVfbGluZXMsICdzbmFwc2hvdHMsICdpbnB1dHMsICdsb2dfbWVzc2FnZXMpIHNpbXVsYXRpb25fb3V0cHV0KSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfcGxvdFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX3Bsb3RcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X3Bsb3Q7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X2RpbnNcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19kaW5zXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9kaW5zO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fZmlsZV9saW5lc1xuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fc25hcHNob3RzXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X2lucHV0c1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2lucHV0c1xuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXNcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19sb2dfbWVzc2FnZXNcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX291dHB1dCB3cml0ZV9fcGxvdCB3cml0ZV9fZGlucyB3cml0ZV9fZmlsZV9saW5lcyB3cml0ZV9fc25hcHNob3RzIHdyaXRlX19pbnB1dHMgd3JpdGVfX2xvZ19tZXNzYWdlcyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX291dHB1dCB3cml0ZV9fcGxvdCB3cml0ZV9fZGlucyB3cml0ZV9fZmlsZV9saW5lcyB3cml0ZV9fc25hcHNob3RzIHdyaXRlX19pbnB1dHMgd3JpdGVfX2xvZ19tZXNzYWdlcyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fb3V0cHV0IHJlYWRfX3Bsb3QgcmVhZF9fZGlucyByZWFkX19maWxlX2xpbmVzIHJlYWRfX3NuYXBzaG90cyByZWFkX19pbnB1dHMgcmVhZF9fbG9nX21lc3NhZ2VzID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2RpbnMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDIyIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAnZCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfCAncCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjcgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdoJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyOCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMzAgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19wbG90XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fZGluc1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2ZpbGVfbGluZXNcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3NuYXBzaG90c1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgNCAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9faW5wdXRzXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCA1IC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19sb2dfbWVzc2FnZXNcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCAyMiAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgJ2QnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICB8ICdwJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDRcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyNyAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnaCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDNcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyOCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDMwIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgNVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX3Bsb3RcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fZGluc1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19maWxlX2xpbmVzXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fc25hcHNob3RzXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDQgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9faW5wdXRzXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDUgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fbG9nX21lc3NhZ2VzXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9wbG90ID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9wbG90XCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfZGluc1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9pbnB1dHMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2lucHV0c1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXNcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiAoJ3Bsb3QsICdkaW5zLCAnZmlsZV9saW5lcywgJ3NuYXBzaG90cywgJ2lucHV0cywgJ2xvZ19tZXNzYWdlcykgc2ltdWxhdGlvbl9vdXRwdXQpXG4gICAgICApXG4pXG5sZXQgc2ltdWxhdGlvbl9vdXRwdXRfb2Zfc3RyaW5nIHJlYWRfX3Bsb3QgcmVhZF9fZGlucyByZWFkX19maWxlX2xpbmVzIHJlYWRfX3NuYXBzaG90cyByZWFkX19pbnB1dHMgcmVhZF9fbG9nX21lc3NhZ2VzIHMgPVxuICByZWFkX3NpbXVsYXRpb25fb3V0cHV0IHJlYWRfX3Bsb3QgcmVhZF9fZGlucyByZWFkX19maWxlX2xpbmVzIHJlYWRfX3NuYXBzaG90cyByZWFkX19pbnB1dHMgcmVhZF9fbG9nX21lc3NhZ2VzIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2ludGVydmVudGlvbiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2ludGVydmVudGlvbiBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbilcbmxldCBzaW11bGF0aW9uX2ludGVydmVudGlvbl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fb3V0cHV0XzkzNDBhZDYgOiBfIC0+IChfLCBfLCBfLCBfLCBfLCBfKSBzaW11bGF0aW9uX291dHB1dCAtPiBfID0gKFxuICBmdW4gb2IgKHggOiAoXywgXywgXywgXywgXywgXykgc2ltdWxhdGlvbl9vdXRwdXQpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9wbG90XFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X3Bsb3Q7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X2RpbnNcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2ludFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfZGlucztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lc1xcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHNcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2ludFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9pbnB1dHNcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX251bGxcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2lucHV0cztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9fb3V0cHV0XzkzNDBhZDYgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX291dHB1dF85MzQwYWQ2IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX291dHB1dF85MzQwYWQ2ID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2RpbnMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDIyIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAnZCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfCAncCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjcgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdoJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyOCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMzAgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2RpbnMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgNCAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbnVsbFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgNSAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgMjIgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8ICdkJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfCAncCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjQgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjcgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2gnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjggLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAzMCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDVcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCA0IC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX251bGxcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgNSAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X3Bsb3QgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9kaW5zID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9kaW5zXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lc1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9pbnB1dHMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlc1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IChfLCBfLCBfLCBfLCBfLCBfKSBzaW11bGF0aW9uX291dHB1dClcbiAgICAgIClcbilcbmxldCBfb3V0cHV0XzkzNDBhZDZfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19vdXRwdXRfOTM0MGFkNiAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25faW5mb19vdXRwdXQgPSAoXG4gIHdyaXRlX19vdXRwdXRfOTM0MGFkNlxuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2luZm9fb3V0cHV0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25faW5mb19vdXRwdXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0ID0gKFxuICByZWFkX19vdXRwdXRfOTM0MGFkNlxuKVxubGV0IHNpbXVsYXRpb25faW5mb19vdXRwdXRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25faW5mb19vdXRwdXQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2luZm8gOiBfIC0+IHNpbXVsYXRpb25faW5mbyAtPiBfID0gKFxuICBmdW4gb2IgKHggOiBzaW11bGF0aW9uX2luZm8pIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX3NpbXVsYXRpb25fcHJvZ3Jlc3NcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25faW5mb19wcm9ncmVzcztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9pbmZvX291dHB1dFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9pbmZvX291dHB1dDtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2luZm8gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9pbmZvIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9pbmZvID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25faW5mb19wcm9ncmVzcyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9pbmZvX291dHB1dCA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgIHwgMjIgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3MgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25faW5mb19vdXRwdXQgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW5mb19vdXRwdXRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCAyMiAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9pbmZvX291dHB1dCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3Mgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25faW5mb19wcm9ncmVzc1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25faW5mb19vdXRwdXQgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25faW5mb19vdXRwdXQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25faW5mb19vdXRwdXRcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBzaW11bGF0aW9uX2luZm8pXG4gICAgICApXG4pXG5sZXQgc2ltdWxhdGlvbl9pbmZvX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2luZm8gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2lkID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2lkIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9pZCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQgc2ltdWxhdGlvbl9pZF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9pZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3QgOiBfIC0+IHNpbXVsYXRpb25fYXJ0aWZhY3QgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogc2ltdWxhdGlvbl9hcnRpZmFjdCkgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9zaW11bGF0aW9uX3NlZWRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fYXJ0aWZhY3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fYXJ0aWZhY3QgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11bGF0aW9uX3NlZWQgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIGlmIGxlbiA9IDM1ICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNCkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAwXG4gICAgICAgICAgKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgLTFcbiAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3NlZWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgaWYgbGVuID0gMzUgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMxKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzIpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzM0KSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11bGF0aW9uX3NlZWQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fc2VlZFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11bGF0aW9uX3NlZWQgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IHNpbXVsYXRpb25fYXJ0aWZhY3QpXG4gICAgICApXG4pXG5sZXQgc2ltdWxhdGlvbl9hcnRpZmFjdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NoYXJpbmdfbGV2ZWwgPSAoXG4gIFBhdHRlcm4ud3JpdGVfc2hhcmluZ19sZXZlbFxuKVxubGV0IHN0cmluZ19vZl9zaGFyaW5nX2xldmVsID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NoYXJpbmdfbGV2ZWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaGFyaW5nX2xldmVsID0gKFxuICBQYXR0ZXJuLnJlYWRfc2hhcmluZ19sZXZlbFxuKVxubGV0IHNoYXJpbmdfbGV2ZWxfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NoYXJpbmdfbGV2ZWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvciA9IChcbiAgUmVzdWx0X3V0aWwud3JpdGVfdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yXG4pXG5sZXQgc3RyaW5nX29mX3Jlc3VsdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Jlc3VsdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVzdWx0IHJlYWRfX29rIHJlYWRfX2Vycm9yID0gKFxuICBSZXN1bHRfdXRpbC5yZWFkX3QgcmVhZF9fb2sgcmVhZF9fZXJyb3JcbilcbmxldCByZXN1bHRfb2Zfc3RyaW5nIHJlYWRfX29rIHJlYWRfX2Vycm9yIHMgPVxuICByZWFkX3Jlc3VsdCByZWFkX19vayByZWFkX19lcnJvciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3BhcnNpbmdfY29tcGlsID0gKFxuICBBc3Qud3JpdGVfcGFyc2luZ19jb21waWxcbilcbmxldCBzdHJpbmdfb2ZfcGFyc2luZ19jb21waWwgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGFyc2luZ19jb21waWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wYXJzaW5nX2NvbXBpbCA9IChcbiAgQXN0LnJlYWRfcGFyc2luZ19jb21waWxcbilcbmxldCBwYXJzaW5nX2NvbXBpbF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcGFyc2luZ19jb21waWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9uYnIgPSAoXG4gIE5ici53cml0ZV90XG4pXG5sZXQgc3RyaW5nX29mX25iciA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9uYnIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9uYnIgPSAoXG4gIE5ici5yZWFkX3RcbilcbmxldCBuYnJfb2Zfc3RyaW5nIHMgPVxuICByZWFkX25iciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19zdHJpbmdfbmJyX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICBmdW4gb2IgeCAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgICAgIChsZXQgeCwgXyA9IHggaW5cbiAgICAgIChcbiAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICApIG9iIHhcbiAgICAgICk7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgKGxldCBfLCB4ID0geCBpblxuICAgICAgKFxuICAgICAgICB3cml0ZV9uYnJcbiAgICAgICkgb2IgeFxuICAgICAgKTtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSc7XG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX3N0cmluZ19uYnJfbGlzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fc3RyaW5nX25icl9saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3N0cmluZ19uYnJfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbGlzdCAoXG4gICAgZnVuIHAgbGIgLT5cbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBzdGRfdHVwbGUgPSBZb2pzb24uU2FmZS5zdGFydF9hbnlfdHVwbGUgcCBsYiBpblxuICAgICAgbGV0IGxlbiA9IHJlZiAwIGluXG4gICAgICBsZXQgZW5kX29mX3R1cGxlID0gcmVmIGZhbHNlIGluXG4gICAgICAodHJ5XG4gICAgICAgIGxldCB4MCA9XG4gICAgICAgICAgbGV0IHggPVxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgIGluXG4gICAgICAgICAgaW5jciBsZW47XG4gICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfdHVwbGVfc2VwMiBwIHN0ZF90dXBsZSBsYjtcbiAgICAgICAgICB4XG4gICAgICAgIGluXG4gICAgICAgIGxldCB4MSA9XG4gICAgICAgICAgbGV0IHggPVxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICByZWFkX25iclxuICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpbmNyIGxlbjtcbiAgICAgICAgICAodHJ5XG4gICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3R1cGxlX3NlcDIgcCBzdGRfdHVwbGUgbGI7XG4gICAgICAgICAgd2l0aCBZb2pzb24uRW5kX29mX3R1cGxlIC0+IGVuZF9vZl90dXBsZSA6PSB0cnVlKTtcbiAgICAgICAgICB4XG4gICAgICAgIGluXG4gICAgICAgIGlmIG5vdCAhZW5kX29mX3R1cGxlIHRoZW4gKFxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3R1cGxlX3NlcDIgcCBzdGRfdHVwbGUgbGI7XG4gICAgICAgICAgICBkb25lXG4gICAgICAgICAgd2l0aCBZb2pzb24uRW5kX29mX3R1cGxlIC0+ICgpXG4gICAgICAgICk7XG4gICAgICAgICh4MCwgeDEpXG4gICAgICB3aXRoIFlvanNvbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfdHVwbGVfZmllbGRzIHAgIWxlbiBbIDA7IDEgXSk7XG4gIClcbilcbmxldCBfc3RyaW5nX25icl9saXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fc3RyaW5nX25icl9saXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcHJvamVjdF9wYXJzZSA6IF8gLT4gcHJvamVjdF9wYXJzZSAtPiBfID0gKFxuICBmdW4gb2IgKHggOiBwcm9qZWN0X3BhcnNlKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwicGF0dGVybl9zaGFyaW5nXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9zaGFyaW5nX2xldmVsXG4gICAgKVxuICAgICAgb2IgeC5wYXR0ZXJuX3NoYXJpbmc7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcImFzdFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfcGFyc2luZ19jb21waWxcbiAgICApXG4gICAgICBvYiB4LmFzdDtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwidmFyaWFibGVfb3ZlcndyaXR0ZW5cXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19zdHJpbmdfbmJyX2xpc3RcbiAgICApXG4gICAgICBvYiB4LnZhcmlhYmxlX292ZXJ3cml0dGVuO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3Byb2plY3RfcGFyc2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcHJvamVjdF9wYXJzZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Byb2plY3RfcGFyc2UgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfcGF0dGVybl9zaGFyaW5nID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9hc3QgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3ZhcmlhYmxlX292ZXJ3cml0dGVuID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCAzIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDE1IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdoJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjAgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9wYXR0ZXJuX3NoYXJpbmcgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NoYXJpbmdfbGV2ZWxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX2FzdCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGFyc2luZ19jb21waWxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgIGZpZWxkX3ZhcmlhYmxlX292ZXJ3cml0dGVuIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX25icl9saXN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgMyAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMTUgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnaCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjAgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdiJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd3JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfcGF0dGVybl9zaGFyaW5nIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9zaGFyaW5nX2xldmVsXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfYXN0IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9wYXJzaW5nX2NvbXBpbFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3ZhcmlhYmxlX292ZXJ3cml0dGVuIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX25icl9saXN0XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwYXR0ZXJuX3NoYXJpbmcgPSAobWF0Y2ggIWZpZWxkX3BhdHRlcm5fc2hhcmluZyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwicGF0dGVybl9zaGFyaW5nXCIpO1xuICAgICAgICAgICAgYXN0ID0gKG1hdGNoICFmaWVsZF9hc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImFzdFwiKTtcbiAgICAgICAgICAgIHZhcmlhYmxlX292ZXJ3cml0dGVuID0gKG1hdGNoICFmaWVsZF92YXJpYWJsZV9vdmVyd3JpdHRlbiB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwidmFyaWFibGVfb3ZlcndyaXR0ZW5cIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBwcm9qZWN0X3BhcnNlKVxuICAgICAgKVxuKVxubGV0IHByb2plY3RfcGFyc2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Byb2plY3RfcGFyc2UgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wcm9qZWN0X3BhcmFtZXRlciA6IF8gLT4gcHJvamVjdF9wYXJhbWV0ZXIgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogcHJvamVjdF9wYXJhbWV0ZXIpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJwcm9qZWN0X2lkXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICApXG4gICAgICBvYiB4LnByb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQ7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2ZfcHJvamVjdF9wYXJhbWV0ZXIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcHJvamVjdF9wYXJhbWV0ZXIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wcm9qZWN0X3BhcmFtZXRlciA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9wcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWN0X2lkID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBpZiBsZW4gPSAxMCAmJiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdqJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgIDBcbiAgICAgICAgICApXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAtMVxuICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBpZiBsZW4gPSAxMCAmJiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdqJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZCA9IChtYXRjaCAhZmllbGRfcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwicHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IHByb2plY3RfcGFyYW1ldGVyKVxuICAgICAgKVxuKVxubGV0IHByb2plY3RfcGFyYW1ldGVyX29mX3N0cmluZyBzID1cbiAgcmVhZF9wcm9qZWN0X3BhcmFtZXRlciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Bsb3RfbGltaXQgOiBfIC0+IHBsb3RfbGltaXQgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogcGxvdF9saW1pdCkgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIm9mZnNldFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2ludF9udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHgucGxvdF9saW1pdF9vZmZzZXQ7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIm5iX3BvaW50c1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2ludF9udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHgucGxvdF9saW1pdF9wb2ludHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2ZfcGxvdF9saW1pdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9wbG90X2xpbWl0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcGxvdF9saW1pdCA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9wbG90X2xpbWl0X29mZnNldCA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfcGxvdF9saW1pdF9wb2ludHMgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDYgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgOSAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3Bsb3RfbGltaXRfb2Zmc2V0IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9wbG90X2xpbWl0X3BvaW50cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDYgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDkgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfcGxvdF9saW1pdF9vZmZzZXQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9wbG90X2xpbWl0X3BvaW50cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgcGxvdF9saW1pdF9vZmZzZXQgPSAobWF0Y2ggIWZpZWxkX3Bsb3RfbGltaXRfb2Zmc2V0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJwbG90X2xpbWl0X29mZnNldFwiKTtcbiAgICAgICAgICAgIHBsb3RfbGltaXRfcG9pbnRzID0gKG1hdGNoICFmaWVsZF9wbG90X2xpbWl0X3BvaW50cyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwicGxvdF9saW1pdF9wb2ludHNcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBwbG90X2xpbWl0KVxuICAgICAgKVxuKVxubGV0IHBsb3RfbGltaXRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Bsb3RfbGltaXQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wbG90X3BhcmFtZXRlciA9IChcbiAgd3JpdGVfcGxvdF9saW1pdFxuKVxubGV0IHN0cmluZ19vZl9wbG90X3BhcmFtZXRlciA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9wbG90X3BhcmFtZXRlciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Bsb3RfcGFyYW1ldGVyID0gKFxuICByZWFkX3Bsb3RfbGltaXRcbilcbmxldCBwbG90X3BhcmFtZXRlcl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcGxvdF9wYXJhbWV0ZXIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wbG90ID0gKFxuICBEYXRhLndyaXRlX3Bsb3RcbilcbmxldCBzdHJpbmdfb2ZfcGxvdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9wbG90IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcGxvdCA9IChcbiAgRGF0YS5yZWFkX3Bsb3RcbilcbmxldCBwbG90X29mX3N0cmluZyBzID1cbiAgcmVhZF9wbG90IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfbWVzc2FnZSA9IChcbiAgUmVzdWx0X3V0aWwud3JpdGVfbWVzc2FnZVxuKVxubGV0IHN0cmluZ19vZl9tZXNzYWdlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX21lc3NhZ2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9tZXNzYWdlID0gKFxuICBSZXN1bHRfdXRpbC5yZWFkX21lc3NhZ2VcbilcbmxldCBtZXNzYWdlX29mX3N0cmluZyBzID1cbiAgcmVhZF9tZXNzYWdlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfbG9nX21lc3NhZ2UgPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuKVxubGV0IHN0cmluZ19vZl9sb2dfbWVzc2FnZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9sb2dfbWVzc2FnZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2xvZ19tZXNzYWdlID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbilcbmxldCBsb2dfbWVzc2FnZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfbG9nX21lc3NhZ2UgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9rYXBwYV9jb2RlID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2Zfa2FwcGFfY29kZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9rYXBwYV9jb2RlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfa2FwcGFfY29kZSA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQga2FwcGFfY29kZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfa2FwcGFfY29kZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19zdHJpbmdfbnVsbGFibGUgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9udWxsYWJsZSAoXG4gICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX3N0cmluZ19udWxsYWJsZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fc3RyaW5nX251bGxhYmxlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3N0cmluZ19udWxsYWJsZSA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgKGlmIFlvanNvbi5TYWZlLnJlYWRfbnVsbF9pZl9wb3NzaWJsZSBwIGxiIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAoKFxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgKSBwIGxiKSA6IF8gb3B0aW9uKVxuKVxubGV0IF9zdHJpbmdfbnVsbGFibGVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19zdHJpbmdfbnVsbGFibGUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9maWxlX2xpbmUgOiBfIC0+IGZpbGVfbGluZSAtPiBfID0gKFxuICBmdW4gb2IgKHggOiBmaWxlX2xpbmUpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJuYW1lXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fc3RyaW5nX251bGxhYmxlXG4gICAgKVxuICAgICAgb2IgeC5maWxlX2xpbmVfbmFtZTtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwidGV4dFxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgKVxuICAgICAgb2IgeC5maWxlX2xpbmVfdGV4dDtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZmlsZV9saW5lIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZmlsZV9saW5lID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX2ZpbGVfbGluZV9uYW1lID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9maWxlX2xpbmVfdGV4dCA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgaWYgbGVuID0gNCB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zIHdpdGhcbiAgICAgICAgICAgICAgfCAnbicgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAndCcgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd4JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIC0xXG4gICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9maWxlX2xpbmVfbmFtZSA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19udWxsYWJsZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfZmlsZV9saW5lX3RleHQgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgaWYgbGVuID0gNCB0aGVuIChcbiAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3Mgd2l0aFxuICAgICAgICAgICAgICAgIHwgJ24nIC0+IChcbiAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB8ICd0JyAtPiAoXG4gICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAneCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2ZpbGVfbGluZV9uYW1lIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX251bGxhYmxlXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfZmlsZV9saW5lX3RleHQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZpbGVfbGluZV9uYW1lID0gKG1hdGNoICFmaWVsZF9maWxlX2xpbmVfbmFtZSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwiZmlsZV9saW5lX25hbWVcIik7XG4gICAgICAgICAgICBmaWxlX2xpbmVfdGV4dCA9IChtYXRjaCAhZmllbGRfZmlsZV9saW5lX3RleHQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImZpbGVfbGluZV90ZXh0XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogZmlsZV9saW5lKVxuICAgICAgKVxuKVxubGV0IGZpbGVfbGluZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZmlsZV9saW5lIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX2ZpbGVfbGluZV9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbGlzdCAoXG4gICAgd3JpdGVfZmlsZV9saW5lXG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX2ZpbGVfbGluZV9saXN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19maWxlX2xpbmVfbGlzdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19maWxlX2xpbmVfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbGlzdCAoXG4gICAgcmVhZF9maWxlX2xpbmVcbiAgKVxuKVxubGV0IF9maWxlX2xpbmVfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX2ZpbGVfbGluZV9saXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lX2RldGFpbCA9IChcbiAgd3JpdGVfX2ZpbGVfbGluZV9saXN0XG4pXG5sZXQgc3RyaW5nX29mX2ZpbGVfbGluZV9kZXRhaWwgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZmlsZV9saW5lX2RldGFpbCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZV9kZXRhaWwgPSAoXG4gIHJlYWRfX2ZpbGVfbGluZV9saXN0XG4pXG5sZXQgZmlsZV9saW5lX2RldGFpbF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZmlsZV9saW5lX2RldGFpbCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19zdHJpbmdfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX2xpc3QgKFxuICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICApXG4pXG5sZXQgc3RyaW5nX29mX19zdHJpbmdfbGlzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fc3RyaW5nX2xpc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fc3RyaW5nX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2xpc3QgKFxuICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICApXG4pXG5sZXQgX3N0cmluZ19saXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fc3RyaW5nX2xpc3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9maWxlX2xpbmVfY2F0YWxvZyA9IChcbiAgd3JpdGVfX3N0cmluZ19saXN0XG4pXG5sZXQgc3RyaW5nX29mX2ZpbGVfbGluZV9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZV9jYXRhbG9nIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZmlsZV9saW5lX2NhdGFsb2cgPSAoXG4gIHJlYWRfX3N0cmluZ19saXN0XG4pXG5sZXQgZmlsZV9saW5lX2NhdGFsb2dfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZV9jYXRhbG9nIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZW52aXJvbm1lbnRfaW5mbyA6IF8gLT4gZW52aXJvbm1lbnRfaW5mbyAtPiBfID0gKFxuICBmdW4gb2IgKHggOiBlbnZpcm9ubWVudF9pbmZvKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwicHJvamVjdHNcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2ludFxuICAgIClcbiAgICAgIG9iIHguZW52aXJvbm1lbnRfcHJvamVjdHM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcImJ1aWxkXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICApXG4gICAgICBvYiB4LmVudmlyb25tZW50X2J1aWxkO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX2Vudmlyb25tZW50X2luZm8gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZW52aXJvbm1lbnRfaW5mbyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2Vudmlyb25tZW50X2luZm8gPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfZW52aXJvbm1lbnRfcHJvamVjdHMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX2Vudmlyb25tZW50X2J1aWxkID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCA1IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdiJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgOCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnaicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfZW52aXJvbm1lbnRfcHJvamVjdHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX2Vudmlyb25tZW50X2J1aWxkIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgNSAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdiJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCA4IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2onICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfZW52aXJvbm1lbnRfcHJvamVjdHMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9lbnZpcm9ubWVudF9idWlsZCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgZW52aXJvbm1lbnRfcHJvamVjdHMgPSAobWF0Y2ggIWZpZWxkX2Vudmlyb25tZW50X3Byb2plY3RzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJlbnZpcm9ubWVudF9wcm9qZWN0c1wiKTtcbiAgICAgICAgICAgIGVudmlyb25tZW50X2J1aWxkID0gKG1hdGNoICFmaWVsZF9lbnZpcm9ubWVudF9idWlsZCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwiZW52aXJvbm1lbnRfYnVpbGRcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBlbnZpcm9ubWVudF9pbmZvKVxuICAgICAgKVxuKVxubGV0IGVudmlyb25tZW50X2luZm9fb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Vudmlyb25tZW50X2luZm8gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9kaW5faWQgPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuKVxubGV0IHN0cmluZ19vZl9kaW5faWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluX2lkIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZGluX2lkID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbilcbmxldCBkaW5faWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Rpbl9pZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19kaW5faWRfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX2xpc3QgKFxuICAgIHdyaXRlX2Rpbl9pZFxuICApXG4pXG5sZXQgc3RyaW5nX29mX19kaW5faWRfbGlzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fZGluX2lkX2xpc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fZGluX2lkX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2xpc3QgKFxuICAgIHJlYWRfZGluX2lkXG4gIClcbilcbmxldCBfZGluX2lkX2xpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19kaW5faWRfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2Rpbl9jYXRhbG9nID0gKFxuICB3cml0ZV9fZGluX2lkX2xpc3RcbilcbmxldCBzdHJpbmdfb2ZfZGluX2NhdGFsb2cgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluX2NhdGFsb2cgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9kaW5fY2F0YWxvZyA9IChcbiAgcmVhZF9fZGluX2lkX2xpc3RcbilcbmxldCBkaW5fY2F0YWxvZ19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZGluX2NhdGFsb2cgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9kaW4gPSAoXG4gIERhdGEud3JpdGVfZGluXG4pXG5sZXQgc3RyaW5nX29mX2RpbiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9kaW4gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9kaW4gPSAoXG4gIERhdGEucmVhZF9kaW5cbilcbmxldCBkaW5fb2Zfc3RyaW5nIHMgPVxuICByZWFkX2RpbiAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBfIGhhbmRsZSA9XG4gIHwgTm90aGluZyA6IHVuaXQgaGFuZGxlXG4gIHwgQmlnU3RyaW5nIDogQmlnYnVmZmVyLmJpZ3N0cmluZyBoYW5kbGVcbiAgfCBTdHJpbmcgOiBzdHJpbmcgaGFuZGxlXG4gIHwgU3RyaW5ncyA6IHN0cmluZyBsaXN0IGhhbmRsZVxuICB8IENhdGFsb2cgOiBLZmlsZXMuY2F0YWxvZ19pdGVtIGxpc3QgaGFuZGxlXG4gIHwgSW5mbyA6IChzdHJpbmcgKiBpbnQpIGhhbmRsZVxuICAoKiAgfCBBc3QgOiBBc3QucGFyc2luZ19jb21waWwgaGFuZGxlKilcbiAgfCBKU09OIDogWW9qc29uLkJhc2ljLnQgaGFuZGxlXG4gIHwgSW5mbHVlbmNlX21hcFxuICAgICAgOiAoUHVibGljX2RhdGEuYWNjdXJhY3lfbGV2ZWxcbiAgICAgICAgKiBpbnRcbiAgICAgICAgKiBpbnQgb3B0aW9uXG4gICAgICAgICogaW50IG9wdGlvblxuICAgICAgICAqIChQdWJsaWNfZGF0YS5ydWxlLCBQdWJsaWNfZGF0YS52YXIpIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9ub2RlIG9wdGlvblxuICAgICAgICAqIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9tYXApXG4gICAgICAgIGhhbmRsZVxuICB8IFNob3J0X2luZmx1ZW5jZV9ub2RlIDogKGludCwgaW50KSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZSBvcHRpb24gaGFuZGxlXG4gIHwgSW5mbHVlbmNlX25vZGVcbiAgICAgIDogKFB1YmxpY19kYXRhLnJ1bGUsIFB1YmxpY19kYXRhLnZhcikgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGUgb3B0aW9uXG4gICAgICAgIGhhbmRsZVxuICB8IEluZmx1ZW5jZV9ub2Rlc1xuICAgICAgOiAoUHVibGljX2RhdGEuYWNjdXJhY3lfbGV2ZWxcbiAgICAgICAgKiAoUHVibGljX2RhdGEucnVsZSwgUHVibGljX2RhdGEudmFyKSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZSBsaXN0KVxuICAgICAgICBoYW5kbGVcbiAgfCBSdWxlc19rYXNhIDogUHVibGljX2RhdGEucnVsZSBsaXN0IGhhbmRsZVxuICB8IEFnZW50c19rYXNhIDogUHVibGljX2RhdGEuZGVhZF9hZ2VudHMgaGFuZGxlXG4gIHwgVHJhbnNpdGlvbnNfa2FzYSA6IChQdWJsaWNfZGF0YS5ydWxlICogKHN0cmluZyAqIHN0cmluZykgbGlzdCkgbGlzdCBoYW5kbGVcbiAgfCBDb25zdHJhaW50c19rYXNhXG4gICAgICA6IChzdHJpbmcgKiBQdWJsaWNfZGF0YS5hZ2VudCBsaXN0IFB1YmxpY19kYXRhLmxlbW1hIGxpc3QpIGxpc3QgaGFuZGxlXG4gIHwgUG9seW1lcnNfa2FzYVxuICAgICAgOiAoUHVibGljX2RhdGEuYWNjdXJhY3lfbGV2ZWxcbiAgICAgICAgKiBQdWJsaWNfZGF0YS5hY2N1cmFjeV9sZXZlbFxuICAgICAgICAqIFB1YmxpY19kYXRhLnNjYylcbiAgICAgICAgaGFuZGxlXG4gIHwgRElOIDogRGF0YS5kaW4gaGFuZGxlXG4gIHwgUGxvdCA6IERhdGEucGxvdCBoYW5kbGVcbiAgfCBTbmFwc2hvdCA6IERhdGEuc25hcHNob3QgaGFuZGxlXG4gIHwgU2ltdWxhdGlvbl9lZmZpY2llbmN5IDogQ291bnRlci5FZmZpY2llbmN5LnQgaGFuZGxlXG4gIHwgU2ltdWxhdGlvbl9pbmZvIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvIGhhbmRsZVxuICB8IFNpbXVsYXRpb25fcGFyYW1ldGVyIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIgaGFuZGxlXG4gIHwgU2ltdWxhdGlvbl9hcnRpZmFjdCA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fYXJ0aWZhY3QgaGFuZGxlXG5cbnR5cGUgYm94ID1cbiAgfCBCIDogJ2EgaGFuZGxlICogKCdhLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnUgLT4gYm94XG5cbnR5cGUgbWFpbGJveCA9IChpbnQsIGJveCkgSGFzaHRibC50XG5cbmxldCBuZXdfbWFpbGJveCAoKSA9IEhhc2h0YmwuY3JlYXRlIDJcblxubGV0IHJlYWRfcmVzdWx0IGYgcCBsYiA9XG4gIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgKFJlc3VsdF91dGlsLnJlYWRfdCBmIChZb2pzb24uQmFzaWMucmVhZF9saXN0IFJlc3VsdF91dGlsLnJlYWRfbWVzc2FnZSkpXG4gICAgcCBsYlxuXG5sZXQgcmVjZWl2ZSBtYWlsYm94IHggPVxuICBKc29uVXRpbC5yZWFkX29mX3N0cmluZ1xuICAgIChKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50IChmdW4gcCBsYiBpZCAtPlxuICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIG1haWxib3ggaWQgd2l0aFxuICAgICAgICAgICB8IEIgKE5vdGhpbmcsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfbnVsbCBwIGxiKVxuICAgICAgICAgICB8IEIgKEJpZ1N0cmluZywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBvdXQgPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIChCYXNlNjQuZGVjb2RlID9hbHBoYWJldDpOb25lKSBvdXQpXG4gICAgICAgICAgIHwgQiAoU3RyaW5nLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWQgKHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiKVxuICAgICAgICAgICB8IEIgKFN0cmluZ3MsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0XG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcpXG4gICAgICAgICAgICAgICAgICBwIGxiKVxuICAgICAgICAgICB8IEIgKENhdGFsb2csIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0XG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBLZmlsZXMucmVhZF9jYXRhbG9nX2l0ZW0pXG4gICAgICAgICAgICAgICAgICBwIGxiKVxuICAgICAgICAgICB8IEIgKEluZm8sIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0XG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9pbnQpXG4gICAgICAgICAgICAgICAgICBwIGxiKVxuICAgICAgICAgICAgICgqIHwgQiAoQXN0LCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdCBBc3QucmVhZF9wYXJzaW5nX2NvbXBpbCBwIGxiKSopXG4gICAgICAgICAgIHwgQiAoSlNPTiwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIpXG4gICAgICAgICAgIHwgQiAoSW5mbHVlbmNlX21hcCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEubG9jYWxfaW5mbHVlbmNlX21hcF9vZl9qc29uIGpzb24pXG4gICAgICAgICAgIHwgQiAoU2hvcnRfaW5mbHVlbmNlX25vZGUsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX29mX2pzb24pXG4gICAgICAgICAgICAgICAgICBqc29uKVxuICAgICAgICAgICB8IEIgKEluZmx1ZW5jZV9ub2RlLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IGpzb24gPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcFxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb24pXG4gICAgICAgICAgICAgICAgICBqc29uKVxuICAgICAgICAgICB8IEIgKEluZmx1ZW5jZV9ub2RlcywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEubm9kZXNfb2ZfaW5mbHVlbmNlX21hcF9vZl9qc29uIGpzb24pXG4gICAgICAgICAgIHwgQiAoUnVsZXNfa2FzYSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEuZGVhZF9ydWxlc19vZl9qc29uIGpzb24pXG4gICAgICAgICAgIHwgQiAoQWdlbnRzX2thc2EsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIFB1YmxpY19kYXRhLmpzb25fdG9fZGVhZF9hZ2VudHMganNvbilcbiAgICAgICAgICAgfCBCIChUcmFuc2l0aW9uc19rYXNhLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IGpzb24gPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcCBQdWJsaWNfZGF0YS5zZXBhcmF0aW5nX3RyYW5zaXRpb25zX29mX2pzb24ganNvbilcbiAgICAgICAgICAgfCBCIChDb25zdHJhaW50c19rYXNhLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IGpzb24gPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcCBQdWJsaWNfZGF0YS5sZW1tYXNfbGlzdF9vZl9qc29uIGpzb24pXG4gICAgICAgICAgIHwgQiAoUG9seW1lcnNfa2FzYSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWQgKFJlc3VsdF91dGlsLm1hcCBQdWJsaWNfZGF0YS5zY2Nfb2ZfanNvbiBqc29uKVxuICAgICAgICAgICB8IEIgKERJTiwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBEYXRhLnJlYWRfZGluIHAgbGIpXG4gICAgICAgICAgIHwgQiAoUGxvdCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBEYXRhLnJlYWRfcGxvdCBwIGxiKVxuICAgICAgICAgICB8IEIgKFNuYXBzaG90LCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWQgKHJlYWRfcmVzdWx0IERhdGEucmVhZF9zbmFwc2hvdCBwIGxiKVxuICAgICAgICAgICB8IEIgKFNpbXVsYXRpb25fZWZmaWNpZW5jeSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBDb3VudGVyLkVmZmljaWVuY3kucmVhZF90IHAgbGIpXG4gICAgICAgICAgIHwgQiAoU2ltdWxhdGlvbl9pbmZvLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdCBBcGlfdHlwZXNfai5yZWFkX3NpbXVsYXRpb25faW5mbyBwIGxiKVxuICAgICAgICAgICB8IEIgKFNpbXVsYXRpb25fcGFyYW1ldGVyLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdCBBcGlfdHlwZXNfai5yZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyIHAgbGIpXG4gICAgICAgICAgIHwgQiAoU2ltdWxhdGlvbl9hcnRpZmFjdCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHQgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX2FydGlmYWN0IHAgbGIpXG4gICAgICAgICBpblxuICAgICAgICAgSGFzaHRibC5yZW1vdmUgbWFpbGJveCBpZCkpXG4gICAgeFxuXG5sZXQgaXNfY29tcHV0aW5nIG1haWxib3ggPSBIYXNodGJsLmxlbmd0aCBtYWlsYm94IDw+IDBcblxuY2xhc3MgdmlydHVhbCBuZXdfY2xpZW50IH5pc19ydW5uaW5nIH5wb3N0IG1haWxib3ggPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgaWQgPSAwXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBtZXNzYWdlIDogdHlwZSBhLlxuICAgICAgICBhIGhhbmRsZSAtPlxuICAgICAgICAoQnVmZmVyLnQgLT4gdW5pdCkgLT5cbiAgICAgICAgKGEsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudCA9XG4gICAgICBmdW4gaGFuZGxlIHJlcXVlc3QgLT5cbiAgICAgICAgaWYgaXNfcnVubmluZyAoKSB0aGVuIChcbiAgICAgICAgICBsZXQgcmVzdWx0LCBmZWVkZXIgPSBMd3QudGFzayAoKSBpblxuICAgICAgICAgIGxldCBtZXNzYWdlID1cbiAgICAgICAgICAgIEpzb25VdGlsLnN0cmluZ19vZl93cml0ZVxuICAgICAgICAgICAgICAoZnVuIGIgKCkgLT5cbiAgICAgICAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgaWQpOyByZXF1ZXN0IF0pXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwb3N0IG1lc3NhZ2UgaW5cbiAgICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbWFpbGJveCBpZCAoQiAoaGFuZGxlLCBmZWVkZXIpKSBpblxuICAgICAgICAgIGxldCAoKSA9IGlkIDwtIHN1Y2MgaWQgaW5cbiAgICAgICAgICByZXN1bHRcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgKFJlc3VsdF91dGlsLmVycm9yXG4gICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwucmFuZ2UgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnRleHQgPSBcImthbW9oYSBhZ2VudCBoYXMgZGllZFwiO1xuICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgXSlcblxuICAgICgqIEthTW9IYSAqKVxuICAgIG1ldGhvZCBmaWxlX2RlbGV0ZSBmaWxlX2lkID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVEZWxldGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfdXBkYXRlIGZpbGVfaWQgZmlsZV9jb250ZW50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVVcGRhdGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9jb250ZW50KTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9tb3ZlIGZpbGVfcG9zaXRpb24gZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlTW92ZVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgYiBmaWxlX3Bvc2l0aW9uKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9nZXQgZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgSW5mbyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlR2V0XCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX2NyZWF0ZSBmaWxlX3Bvc2l0aW9uIGZpbGVfaWQgZmlsZV9jb250ZW50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVDcmVhdGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgZmlsZV9wb3NpdGlvbik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9jb250ZW50KTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9jYXRhbG9nID1cbiAgICAgIHNlbGYjbWVzc2FnZSBDYXRhbG9nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVDYXRhbG9nXCIpIF0pXG5cbiAgICBtZXRob2Qgc2VjcmV0X3Byb2plY3RfcGFyc2UgOiBBc3QucGFyc2luZ19jb21waWwgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBMd3QucmV0dXJuXG4gICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgXCJsb3cgbGV2ZWwgcHJvamVjdF9wYXJzZSBtdXN0bid0IGJlIHVzZWRcIilcblxuICAgIG1ldGhvZCBzZWNyZXRfZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFyc1xuICAgICAgICA6IFB1YmxpY19kYXRhLnBvc19vZl9ydWxlc19hbmRfdmFycyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZ1xuICAgICAgICAgICBcImxvdyBsZXZlbCBnZXRfcG9zX29mX3J1bGVzX2FuZF92YXJzIG11c3RuJ3QgYmUgdXNlZFwiKVxuXG4gICAgbWV0aG9kIHByb2plY3Rfb3ZlcndyaXRlIGZpbGVfaWQgYXN0ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlByb2plY3RPdmVyd3JpdGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBBc3Qud3JpdGVfcGFyc2luZ19jb21waWwgYiBhc3QpO1xuICAgICAgICAgICAgXSlcblxuICAgICgqIEthU2EgKilcbiAgICBtZXRob2QgaW5pdF9zdGF0aWNfYW5hbHlzZXJfcmF3IGNvbXBpbCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJJTklUXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGNvbXBpbCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyIGNvbXBpbCA9XG4gICAgICBzZWxmI2luaXRfc3RhdGljX2FuYWx5c2VyX3Jhd1xuICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoQXN0LmNvbXBpbF90b19qc29uIGNvbXBpbCkpXG5cbiAgICBtZXRob2QgZ2V0X2NvbnRhY3RfbWFwIGFjY3VyYWN5ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBKU09OIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkNPTlRBQ1RfTUFQXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3kpKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X2luZmx1ZW5jZV9tYXBfcmF3IGFjY3VyYWN5ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiSU5GTFVFTkNFX01BUFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGFjY3VyYWN5KSk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9sb2NhbF9pbmZsdWVuY2VfbWFwID9md2QgP2J3ZCA/b3JpZ2luIH50b3RhbCBhY2N1cmFjeSA9XG4gICAgICBzZWxmI21lc3NhZ2UgSW5mbHVlbmNlX21hcCAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJMT0NBTF9JTkZMVUVOQ0VfTUFQXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3kpKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IEpzb25VdGlsLndyaXRlX29wdGlvbiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgZndkKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IEpzb25VdGlsLndyaXRlX29wdGlvbiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgYndkKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgYiB0b3RhbCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGJcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvblxuICAgICAgICAgICAgICAgICAgICAgb3JpZ2luKSk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9pbml0aWFsX25vZGUgPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZmx1ZW5jZV9ub2RlIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiSU5GTFVFTkNFX01BUF9PUklHSU5BTF9OT0RFXCIpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfbmV4dF9ub2RlIGpzb24gPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZmx1ZW5jZV9ub2RlIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIklORkxVRU5DRV9NQVBfTkVYVF9OT0RFXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgIGpzb24pKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X3ByZXZpb3VzX25vZGUganNvbiA9XG4gICAgICBzZWxmI21lc3NhZ2UgSW5mbHVlbmNlX25vZGUgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJJTkZMVUVOQ0VfTUFQX1BSRVZJT1VTX05PREVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGJcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvblxuICAgICAgICAgICAgICAgICAgICAganNvbikpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfaW5mbHVlbmNlX21hcF9ub2RlX2F0IH5maWxlbmFtZSBwb3MgPVxuICAgICAgc2VsZiNtZXNzYWdlIFNob3J0X2luZmx1ZW5jZV9ub2RlIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIklORkxVRU5DRV9NQVBfTk9ERV9BVFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlbmFtZSk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBMb2Mud3JpdGVfcG9zaXRpb24gYiBwb3MpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfbm9kZXNfb2ZfaW5mbHVlbmNlX21hcCBhY2N1cmFjeSA9XG4gICAgICBzZWxmI21lc3NhZ2UgSW5mbHVlbmNlX25vZGVzIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIklORkxVRU5DRV9NQVBfQUxMX05PREVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGJcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhY2N1cmFjeSkpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfZGVhZF9ydWxlcyA9XG4gICAgICBzZWxmI21lc3NhZ2UgUnVsZXNfa2FzYSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJERUFEX1JVTEVTXCIpIF0pXG5cbiAgICBtZXRob2QgZ2V0X2RlYWRfYWdlbnRzID1cbiAgICAgIHNlbGYjbWVzc2FnZSBBZ2VudHNfa2FzYSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJERUFEX0FHRU5UU1wiKSBdKVxuXG4gICAgbWV0aG9kIGdldF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICAgICAgc2VsZiNtZXNzYWdlIFRyYW5zaXRpb25zX2thc2EgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJOT05fV0VBS0xZX1JFVkVSU0lCTEVfVFJBTlNJVElPTlNcIik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9jb25zdHJhaW50c19saXN0ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBDb25zdHJhaW50c19rYXNhIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkNPTlNUUkFJTlRTXCIpIF0pXG5cbiAgICBtZXRob2QgZ2V0X3BvdGVudGlhbF9wb2x5bWVycyBhY2N1cmFjeV9jbSBhY2N1cmFjeV9zY2MgPVxuICAgICAgc2VsZiNtZXNzYWdlIFBvbHltZXJzX2thc2EgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiUE9MWU1FUlNcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGJcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhY2N1cmFjeV9jbSkpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3lfc2NjKSk7XG4gICAgICAgICAgICBdKVxuXG4gICAgKCogS2FTaW0gKilcbiAgICBtZXRob2Qgc2VjcmV0X3NpbXVsYXRpb25fbG9hZCAoXyA6IFBhdHRlcm4uc2hhcmluZ19sZXZlbClcbiAgICAgICAgKF8gOiBBc3QucGFyc2luZ19jb21waWwpIChfIDogKHN0cmluZyAqIE5ici50KSBsaXN0KVxuICAgICAgICA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBMd3QucmV0dXJuXG4gICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgXCJsb3cgbGV2ZWwgc2ltdWxhdGlvbl9sb2FkIG11c3RuJ3QgYmUgdXNlZFwiKVxuXG4gICAgbWV0aG9kIHByb2plY3RfcGFyc2UgfnBhdHRlcm5TaGFyaW5nIG92ZXJ3cml0ZXMgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiUHJvamVjdFBhcnNlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gUGF0dGVybi53cml0ZV9zaGFyaW5nX2xldmVsIGIgcGF0dGVyblNoYXJpbmcpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIE5ici53cml0ZV90KVxuICAgICAgICAgICAgICAgICAgYiBvdmVyd3JpdGVzKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jb250aW51ZSBwYXVzZSA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uQ29udGludWVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgcGF1c2UpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RlbGV0ZSA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uRGVsZXRlXCIpIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfZGluIGlkID1cbiAgICAgIHNlbGYjbWVzc2FnZSBESU4gKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkRldGFpbERJTlwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBpZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2ZpbGVfbGluZSBpZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgU3RyaW5ncyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9zbmFwc2hvdCBpZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgU25hcHNob3QgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGlkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfbG9nX21lc3NhZ2UgPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXCIpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9wbG90IHBhcmFtZXRlciA9XG4gICAgICBzZWxmI21lc3NhZ2UgUGxvdCAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IEFwaV90eXBlc19qLndyaXRlX3Bsb3RfcGFyYW1ldGVyIGIgcGFyYW1ldGVyKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX2RpbiA9XG4gICAgICBzZWxmI21lc3NhZ2UgU3RyaW5ncyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiKSBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19maWxlX2xpbmUgPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZ3MgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX3NuYXBzaG90ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmdzIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZWZmaWNpZW5jeSA9XG4gICAgICBzZWxmI21lc3NhZ2UgU2ltdWxhdGlvbl9lZmZpY2llbmN5IChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25FZmZpY2llbmN5XCIpIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9pbmZvID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTaW11bGF0aW9uX2luZm8gKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkluZm9cIikgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2ludGVydmVudGlvbiBpbnRlcnZlbnRpb24gPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGludGVydmVudGlvbik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fb3V0cHV0c196aXAgPVxuICAgICAgc2VsZiNtZXNzYWdlIEJpZ1N0cmluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiKSBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcGF1c2UgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvblBhdXNlXCIpIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPVxuICAgICAgc2VsZiNtZXNzYWdlIFNpbXVsYXRpb25fcGFyYW1ldGVyIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIikgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3N0YXJ0IHBhcmFtZXRlciA9XG4gICAgICBzZWxmI21lc3NhZ2UgU2ltdWxhdGlvbl9hcnRpZmFjdCAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uU3RhcnRcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBBcGlfdHlwZXNfai53cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlciBiIHBhcmFtZXRlcik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcmF3X3RyYWNlID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvblRyYWNlXCIpIF0pXG5cbiAgICAoKiBtZXRob2QgcHJvamVjdF9wYXJzZSBvdmVyd3JpdGUgPSAoKVxuXG4gICAgICAgbWV0aG9kIHJhd19sYXVuY2hfc3RvcnlfY29tcHV0YXRpb24gPSAoKVxuICAgICAgIG1ldGhvZCBjb25maWdfc3RvcnlfY29tcHV0YXRpb24gbW9kZXMgPSBMd3RfcmVzdWx0LnJldHVybiAoKVxuICAgICAgIG1ldGhvZCBzdG9yeV9pc19jb21wdXRpbmcgPSBmYWxzZVxuICAgICAgIG1ldGhvZCBzdG9yeV9saXN0ID0gKClcbiAgICAgICBtZXRob2Qgc3RvcnlfbG9nID0gKClcbiAgICAgICBtZXRob2Qgc3RvcnlfcHJvZ3Jlc3MgPSAoKVxuXG4gICAgICAgbWV0aG9kIGlzX2NvbXB1dGluZyA9IHRydWVcbiAgICAgICAgIG1ldGhvZCB0ZXJtaW5hdGUgPSAoKSopXG4gIGVuZFxuIiwiKCogQXV0by1nZW5lcmF0ZWQgZnJvbSBcIm1waV9tZXNzYWdlLmF0ZFwiICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0yNy0zMi0zMy0zNS0zOVwiXVxuXG50eXBlIHNuYXBzaG90X2lkID0gQXBpX3R5cGVzX3Quc25hcHNob3RfaWRcblxudHlwZSBzbmFwc2hvdF9kZXRhaWwgPSBBcGlfdHlwZXNfdC5zbmFwc2hvdF9kZXRhaWxcblxudHlwZSBzbmFwc2hvdF9jYXRhbG9nID0gQXBpX3R5cGVzX3Quc25hcHNob3RfY2F0YWxvZ1xuXG50eXBlIHNpbXVsYXRpb25fcGFyYW1ldGVyID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXJcblxudHlwZSBzaW11bGF0aW9uX2ludGVydmVudGlvbiA9IEFwaV90eXBlc190LnNpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG5cbnR5cGUgc2ltdWxhdGlvbl9pbmZvID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvXG5cbnR5cGUgc2ltdWxhdGlvbl9lZmZpY2llbmN5ID0gQ291bnRlci5FZmZpY2llbmN5LnRcblxudHlwZSBzaW11bGF0aW9uX2FydGlmYWN0ID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9hcnRpZmFjdFxuXG50eXBlICgnb2ssICdlcnJvcikgYXBpX3Jlc3VsdCA9ICgnb2ssICdlcnJvcikgQXBpX3R5cGVzX3QucmVzdWx0XG5cbnR5cGUgYXBpX21lc3NhZ2UgPSBBcGlfdHlwZXNfdC5tZXNzYWdlXG5cbnR5cGUgJ29rIHJlc3VsdCA9ICdvayBNcGlfbWVzc2FnZV90LnJlc3VsdFxuXG50eXBlIHBsb3QgPSBBcGlfdHlwZXNfdC5wbG90XG5cbnR5cGUgbG9nX21lc3NhZ2UgPSBBcGlfdHlwZXNfdC5sb2dfbWVzc2FnZVxuXG50eXBlIGZpbGVfbGluZV9jYXRhbG9nID0gQXBpX3R5cGVzX3QuZmlsZV9saW5lX2NhdGFsb2dcblxudHlwZSBlbnZpcm9ubWVudF9pbmZvID0gQXBpX3R5cGVzX3QuZW52aXJvbm1lbnRfaW5mb1xuXG50eXBlIGRpbl9jYXRhbG9nID0gQXBpX3R5cGVzX3QuZGluX2NhdGFsb2dcblxudHlwZSBkaW4gPSBBcGlfdHlwZXNfdC5kaW5cblxudHlwZSByZXN0X3Jlc3BvbnNlX2NvbnRlbnQgPSBNcGlfbWVzc2FnZV90LnJlc3RfcmVzcG9uc2VfY29udGVudFxuXG50eXBlIHJlc3RfcmVzcG9uc2UgPSBNcGlfbWVzc2FnZV90LnJlc3RfcmVzcG9uc2VcblxudHlwZSBwcm9qZWN0X3BhcnNlID0gQXBpX3R5cGVzX3QucHJvamVjdF9wYXJzZVxuXG50eXBlIHByb2plY3RfcGFyYW1ldGVyID0gQXBpX3R5cGVzX3QucHJvamVjdF9wYXJhbWV0ZXJcblxudHlwZSBwbG90X3BhcmFtZXRlciA9IEFwaV90eXBlc190LnBsb3RfcGFyYW1ldGVyXG5cbnR5cGUgZGluX2lkID0gQXBpX3R5cGVzX3QuZGluX2lkXG5cbnR5cGUgcmVzdF9yZXF1ZXN0ID0gTXBpX21lc3NhZ2VfdC5yZXN0X3JlcXVlc3RcblxudHlwZSByZXNwb25zZV9jb250ZW50ID0gTXBpX21lc3NhZ2VfdC5yZXNwb25zZV9jb250ZW50XG5cbnR5cGUgcmVzcG9uc2UgPSBNcGlfbWVzc2FnZV90LnJlc3BvbnNlXG5cbnR5cGUgcmVxdWVzdCA9IE1waV9tZXNzYWdlX3QucmVxdWVzdFxuXG50eXBlIGlkID0gTXBpX21lc3NhZ2VfdC5pZFxuXG50eXBlICdkYXRhIG1lc3NhZ2UgPSAnZGF0YSBNcGlfbWVzc2FnZV90Lm1lc3NhZ2UgPSB7IGlkOiBpZDsgZGF0YTogJ2RhdGEgfVxuXG50eXBlIGZpbGVfbGluZV9kZXRhaWwgPSBBcGlfdHlwZXNfdC5maWxlX2xpbmVfZGV0YWlsXG5cbnR5cGUgZmlsZV9saW5lID0gQXBpX3R5cGVzX3QuZmlsZV9saW5lXG5cbmxldCB3cml0ZV9zbmFwc2hvdF9pZCA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc25hcHNob3RfaWRcbilcbmxldCBzdHJpbmdfb2Zfc25hcHNob3RfaWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfaWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9pZCA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9zbmFwc2hvdF9pZFxuKVxubGV0IHNuYXBzaG90X2lkX29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdF9pZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NuYXBzaG90X2RldGFpbCA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc25hcHNob3RfZGV0YWlsXG4pXG5sZXQgc3RyaW5nX29mX3NuYXBzaG90X2RldGFpbCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zbmFwc2hvdF9kZXRhaWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9kZXRhaWwgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfc25hcHNob3RfZGV0YWlsXG4pXG5sZXQgc25hcHNob3RfZGV0YWlsX29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdF9kZXRhaWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zbmFwc2hvdF9jYXRhbG9nID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9zbmFwc2hvdF9jYXRhbG9nXG4pXG5sZXQgc3RyaW5nX29mX3NuYXBzaG90X2NhdGFsb2cgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfY2F0YWxvZyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NuYXBzaG90X2NhdGFsb2cgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfc25hcHNob3RfY2F0YWxvZ1xuKVxubGV0IHNuYXBzaG90X2NhdGFsb2dfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90X2NhdGFsb2cgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlclxuKVxubGV0IHNpbXVsYXRpb25fcGFyYW1ldGVyX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9zaW11bGF0aW9uX2ludGVydmVudGlvblxuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2ludGVydmVudGlvbiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2ludGVydmVudGlvbiBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4pXG5sZXQgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25fb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9pbmZvID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9zaW11bGF0aW9uX2luZm9cbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbmZvID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25faW5mbyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25faW5mbyA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX2luZm9cbilcbmxldCBzaW11bGF0aW9uX2luZm9fb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25faW5mbyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fZWZmaWNpZW5jeSA9IChcbiAgQ291bnRlci5FZmZpY2llbmN5LndyaXRlX3RcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9lZmZpY2llbmN5ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fZWZmaWNpZW5jeSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fZWZmaWNpZW5jeSA9IChcbiAgQ291bnRlci5FZmZpY2llbmN5LnJlYWRfdFxuKVxubGV0IHNpbXVsYXRpb25fZWZmaWNpZW5jeV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9lZmZpY2llbmN5IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdCA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdFxuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2FydGlmYWN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0ID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3NpbXVsYXRpb25fYXJ0aWZhY3RcbilcbmxldCBzaW11bGF0aW9uX2FydGlmYWN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfYXBpX3Jlc3VsdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvclxuKVxubGV0IHN0cmluZ19vZl9hcGlfcmVzdWx0IHdyaXRlX19vayB3cml0ZV9fZXJyb3IgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfYXBpX3Jlc3VsdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfYXBpX3Jlc3VsdCByZWFkX19vayByZWFkX19lcnJvciA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9yZXN1bHQgcmVhZF9fb2sgcmVhZF9fZXJyb3JcbilcbmxldCBhcGlfcmVzdWx0X29mX3N0cmluZyByZWFkX19vayByZWFkX19lcnJvciBzID1cbiAgcmVhZF9hcGlfcmVzdWx0IHJlYWRfX29rIHJlYWRfX2Vycm9yIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfYXBpX21lc3NhZ2UgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX21lc3NhZ2VcbilcbmxldCBzdHJpbmdfb2ZfYXBpX21lc3NhZ2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfYXBpX21lc3NhZ2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9hcGlfbWVzc2FnZSA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9tZXNzYWdlXG4pXG5sZXQgYXBpX21lc3NhZ2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2FwaV9tZXNzYWdlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX2FwaV9tZXNzYWdlX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICB3cml0ZV9hcGlfbWVzc2FnZVxuICApXG4pXG5sZXQgc3RyaW5nX29mX19hcGlfbWVzc2FnZV9saXN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19hcGlfbWVzc2FnZV9saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX2FwaV9tZXNzYWdlX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2xpc3QgKFxuICAgIHJlYWRfYXBpX21lc3NhZ2VcbiAgKVxuKVxubGV0IF9hcGlfbWVzc2FnZV9saXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fYXBpX21lc3NhZ2VfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19yZXN1bHRfZDFmOTgyNCB3cml0ZV9fYSA9IChcbiAgd3JpdGVfYXBpX3Jlc3VsdCB3cml0ZV9fYSB3cml0ZV9fYXBpX21lc3NhZ2VfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9fcmVzdWx0X2QxZjk4MjQgd3JpdGVfX2EgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3Jlc3VsdF9kMWY5ODI0IHdyaXRlX19hIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3Jlc3VsdF9kMWY5ODI0IHJlYWRfX2EgPSAoXG4gIHJlYWRfYXBpX3Jlc3VsdCByZWFkX19hIHJlYWRfX2FwaV9tZXNzYWdlX2xpc3RcbilcbmxldCBfcmVzdWx0X2QxZjk4MjRfb2Zfc3RyaW5nIHJlYWRfX2EgcyA9XG4gIHJlYWRfX3Jlc3VsdF9kMWY5ODI0IHJlYWRfX2EgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9yZXN1bHQgd3JpdGVfX29rID0gKFxuICB3cml0ZV9fcmVzdWx0X2QxZjk4MjQgd3JpdGVfX29rXG4pXG5sZXQgc3RyaW5nX29mX3Jlc3VsdCB3cml0ZV9fb2sgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcmVzdWx0IHdyaXRlX19vayBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3VsdCByZWFkX19vayA9IChcbiAgcmVhZF9fcmVzdWx0X2QxZjk4MjQgcmVhZF9fb2tcbilcbmxldCByZXN1bHRfb2Zfc3RyaW5nIHJlYWRfX29rIHMgPVxuICByZWFkX3Jlc3VsdCByZWFkX19vayAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Bsb3QgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3Bsb3RcbilcbmxldCBzdHJpbmdfb2ZfcGxvdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9wbG90IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcGxvdCA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9wbG90XG4pXG5sZXQgcGxvdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcGxvdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2xvZ19tZXNzYWdlID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9sb2dfbWVzc2FnZVxuKVxubGV0IHN0cmluZ19vZl9sb2dfbWVzc2FnZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9sb2dfbWVzc2FnZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2xvZ19tZXNzYWdlID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2xvZ19tZXNzYWdlXG4pXG5sZXQgbG9nX21lc3NhZ2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2xvZ19tZXNzYWdlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lX2NhdGFsb2cgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX2ZpbGVfbGluZV9jYXRhbG9nXG4pXG5sZXQgc3RyaW5nX29mX2ZpbGVfbGluZV9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZV9jYXRhbG9nIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZmlsZV9saW5lX2NhdGFsb2cgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZmlsZV9saW5lX2NhdGFsb2dcbilcbmxldCBmaWxlX2xpbmVfY2F0YWxvZ19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZmlsZV9saW5lX2NhdGFsb2cgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9lbnZpcm9ubWVudF9pbmZvID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9lbnZpcm9ubWVudF9pbmZvXG4pXG5sZXQgc3RyaW5nX29mX2Vudmlyb25tZW50X2luZm8gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZW52aXJvbm1lbnRfaW5mbyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2Vudmlyb25tZW50X2luZm8gPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZW52aXJvbm1lbnRfaW5mb1xuKVxubGV0IGVudmlyb25tZW50X2luZm9fb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Vudmlyb25tZW50X2luZm8gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9kaW5fY2F0YWxvZyA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfZGluX2NhdGFsb2dcbilcbmxldCBzdHJpbmdfb2ZfZGluX2NhdGFsb2cgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluX2NhdGFsb2cgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9kaW5fY2F0YWxvZyA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9kaW5fY2F0YWxvZ1xuKVxubGV0IGRpbl9jYXRhbG9nX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW5fY2F0YWxvZyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2RpbiA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfZGluXG4pXG5sZXQgc3RyaW5nX29mX2RpbiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9kaW4gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9kaW4gPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZGluXG4pXG5sZXQgZGluX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW4gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc3RyaW5nX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fc3RyaW5nX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3N0cmluZ19saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3N0cmluZ19saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgKVxuKVxubGV0IF9zdHJpbmdfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3N0cmluZ19saXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzdF9yZXNwb25zZV9jb250ZW50ID0gKFxuICBmdW4gb2IgeCAtPlxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgUHJvamVjdExvYWQgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiUHJvamVjdExvYWRcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfX3N0cmluZ19saXN0XG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbERJTiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRElOXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2RpblxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2xvZ19tZXNzYWdlXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfcGxvdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc25hcHNob3RfZGV0YWlsXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkluZm8geCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkluZm9cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2ZpbGVfbGluZV9jYXRhbG9nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dESU4geCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZGluX2NhdGFsb2dcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc25hcHNob3RfY2F0YWxvZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25UcmFjZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uVHJhY2VcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbk91dHB1dHNaaXAgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvblBhcmFtZXRlciB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uUGFyYW1ldGVyXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25Db250aW51ZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkRlbGV0ZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uRGVsZXRlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uUGF1c2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblBhdXNlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvblN0YXJ0IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25TdGFydFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX2FydGlmYWN0XG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgRW52aXJvbm1lbnRJbmZvIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIkVudmlyb25tZW50SW5mb1xcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9lbnZpcm9ubWVudF9pbmZvXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgUHJvamVjdENyZWF0ZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJQcm9qZWN0Q3JlYXRlXFxcIlwiXG4gICAgICB8IGBQcm9qZWN0RGVsZXRlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlByb2plY3REZWxldGVcXFwiXCJcbiAgICAgIHwgYFByb2plY3RDYXRhbG9nIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlByb2plY3RDYXRhbG9nXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX19zdHJpbmdfbGlzdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbilcbmxldCBzdHJpbmdfb2ZfcmVzdF9yZXNwb25zZV9jb250ZW50ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Jlc3RfcmVzcG9uc2VfY29udGVudCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3RfcmVzcG9uc2VfY29udGVudCA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgbWF0Y2ggWW9qc29uLlNhZmUuc3RhcnRfYW55X3ZhcmlhbnQgcCBsYiB3aXRoXG4gICAgICB8IGBFZGd5X2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLnJlYWRfaWRlbnQgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUHJvamVjdExvYWRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RMb2FkXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbGlzdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9sb2dfbWVzc2FnZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9kZXRhaWxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW5mb1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9maWxlX2xpbmVfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRElOXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Rpbl9jYXRhbG9nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXAgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Db250aW51ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZWxldGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0IHhcbiAgICAgICAgICAgIHwgXCJFbnZpcm9ubWVudEluZm9cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZW52aXJvbm1lbnRfaW5mb1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYEVudmlyb25tZW50SW5mbyB4XG4gICAgICAgICAgICB8IFwiUHJvamVjdENyZWF0ZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdENyZWF0ZVxuICAgICAgICAgICAgfCBcIlByb2plY3REZWxldGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3REZWxldGVcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q2F0YWxvZ1wiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q2F0YWxvZyB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYERvdWJsZV9xdW90ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUuZmluaXNoX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0TG9hZFwiIC0+XG4gICAgICAgICAgICAgIGBQcm9qZWN0TG9hZFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Db250aW51ZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhdXNlXG4gICAgICAgICAgICB8IFwiUHJvamVjdENyZWF0ZVwiIC0+XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q3JlYXRlXG4gICAgICAgICAgICB8IFwiUHJvamVjdERlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgIGBQcm9qZWN0RGVsZXRlXG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYFNxdWFyZV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbGlzdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2xvZ19tZXNzYWdlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfZGV0YWlsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkluZm9cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3kgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZmlsZV9saW5lX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uVHJhY2UgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25PdXRwdXRzWmlwXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXAgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlciB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IFwiRW52aXJvbm1lbnRJbmZvXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Vudmlyb25tZW50X2luZm9cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgRW52aXJvbm1lbnRJbmZvIHhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q2F0YWxvZ1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdENhdGFsb2cgeFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4pXG5sZXQgcmVzdF9yZXNwb25zZV9jb250ZW50X29mX3N0cmluZyBzID1cbiAgcmVhZF9yZXN0X3Jlc3BvbnNlX2NvbnRlbnQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fcmVzdWx0XzRjYTZiOGYgPSAoXG4gIHdyaXRlX2FwaV9yZXN1bHQgd3JpdGVfcmVzdF9yZXNwb25zZV9jb250ZW50IHdyaXRlX19hcGlfbWVzc2FnZV9saXN0XG4pXG5sZXQgc3RyaW5nX29mX19yZXN1bHRfNGNhNmI4ZiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fcmVzdWx0XzRjYTZiOGYgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fcmVzdWx0XzRjYTZiOGYgPSAoXG4gIHJlYWRfYXBpX3Jlc3VsdCByZWFkX3Jlc3RfcmVzcG9uc2VfY29udGVudCByZWFkX19hcGlfbWVzc2FnZV9saXN0XG4pXG5sZXQgX3Jlc3VsdF80Y2E2YjhmX29mX3N0cmluZyBzID1cbiAgcmVhZF9fcmVzdWx0XzRjYTZiOGYgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fcmVzdF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdCA9IChcbiAgd3JpdGVfX3Jlc3VsdF80Y2E2YjhmXG4pXG5sZXQgc3RyaW5nX29mX19yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3Jlc3RfcmVzcG9uc2VfY29udGVudF9yZXN1bHQgPSAoXG4gIHJlYWRfX3Jlc3VsdF80Y2E2YjhmXG4pXG5sZXQgX3Jlc3RfcmVzcG9uc2VfY29udGVudF9yZXN1bHRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzdF9yZXNwb25zZSA9IChcbiAgd3JpdGVfX3Jlc3RfcmVzcG9uc2VfY29udGVudF9yZXN1bHRcbilcbmxldCBzdHJpbmdfb2ZfcmVzdF9yZXNwb25zZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXN0X3Jlc3BvbnNlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVzdF9yZXNwb25zZSA9IChcbiAgcmVhZF9fcmVzdF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdFxuKVxubGV0IHJlc3RfcmVzcG9uc2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Jlc3RfcmVzcG9uc2UgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wcm9qZWN0X3BhcnNlID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9wcm9qZWN0X3BhcnNlXG4pXG5sZXQgc3RyaW5nX29mX3Byb2plY3RfcGFyc2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcHJvamVjdF9wYXJzZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Byb2plY3RfcGFyc2UgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfcHJvamVjdF9wYXJzZVxuKVxubGV0IHByb2plY3RfcGFyc2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Byb2plY3RfcGFyc2UgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wcm9qZWN0X3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfcHJvamVjdF9wYXJhbWV0ZXJcbilcbmxldCBzdHJpbmdfb2ZfcHJvamVjdF9wYXJhbWV0ZXIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcHJvamVjdF9wYXJhbWV0ZXIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wcm9qZWN0X3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9wcm9qZWN0X3BhcmFtZXRlclxuKVxubGV0IHByb2plY3RfcGFyYW1ldGVyX29mX3N0cmluZyBzID1cbiAgcmVhZF9wcm9qZWN0X3BhcmFtZXRlciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Bsb3RfcGFyYW1ldGVyID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9wbG90X3BhcmFtZXRlclxuKVxubGV0IHN0cmluZ19vZl9wbG90X3BhcmFtZXRlciA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9wbG90X3BhcmFtZXRlciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Bsb3RfcGFyYW1ldGVyID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3Bsb3RfcGFyYW1ldGVyXG4pXG5sZXQgcGxvdF9wYXJhbWV0ZXJfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Bsb3RfcGFyYW1ldGVyIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZGluX2lkID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9kaW5faWRcbilcbmxldCBzdHJpbmdfb2ZfZGluX2lkID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Rpbl9pZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2Rpbl9pZCA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9kaW5faWRcbilcbmxldCBkaW5faWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Rpbl9pZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Jlc3RfcmVxdWVzdCA9IChcbiAgZnVuIG9iIHggLT5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFByb2plY3RMb2FkIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlByb2plY3RMb2FkXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Byb2plY3RfcGFyc2VcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ29udGludWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNvbnRpbnVlXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZWxldGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRlbGV0ZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRElOIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxESU5cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZGluX2lkXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxQbG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Bsb3RfcGFyYW1ldGVyXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zbmFwc2hvdF9pZFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25JbmZvIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25JbmZvXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRWZmaWNpZW5jeSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uRWZmaWNpZW5jeVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uVHJhY2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblRyYWNlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uT3V0cHV0c1ppcFxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhcmFtZXRlciAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uUGFyYW1ldGVyXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uUGF1c2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblBhdXNlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uU3RhcnQgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblN0YXJ0XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgRW52aXJvbm1lbnRJbmZvIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIkVudmlyb25tZW50SW5mb1xcXCJcIlxuICAgICAgfCBgUHJvamVjdENhdGFsb2cgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiUHJvamVjdENhdGFsb2dcXFwiXCJcbiAgICAgIHwgYFByb2plY3RDcmVhdGUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiUHJvamVjdENyZWF0ZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wcm9qZWN0X3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFByb2plY3REZWxldGUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiUHJvamVjdERlbGV0ZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4pXG5sZXQgc3RyaW5nX29mX3Jlc3RfcmVxdWVzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXN0X3JlcXVlc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9yZXN0X3JlcXVlc3QgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIG1hdGNoIFlvanNvbi5TYWZlLnN0YXJ0X2FueV92YXJpYW50IHAgbGIgd2l0aFxuICAgICAgfCBgRWRneV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5yZWFkX2lkZW50IHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlByb2plY3RMb2FkXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Byb2plY3RfcGFyc2VcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0TG9hZCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZWxldGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5faWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90X3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfaWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mb1xuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25FZmZpY2llbmN5XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU5cbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblRyYWNlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uVHJhY2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXBcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhdXNlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblN0YXJ0XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0IHhcbiAgICAgICAgICAgIHwgXCJFbnZpcm9ubWVudEluZm9cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYEVudmlyb25tZW50SW5mb1xuICAgICAgICAgICAgfCBcIlByb2plY3RDYXRhbG9nXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q2F0YWxvZ1xuICAgICAgICAgICAgfCBcIlByb2plY3RDcmVhdGVcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcHJvamVjdF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q3JlYXRlIHhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0RGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0RGVsZXRlIHhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgRG91YmxlX3F1b3RlIC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5maW5pc2hfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZWxldGVcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRlbGV0ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkluZm9cIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkluZm9cbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRElOXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblRyYWNlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25UcmFjZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25PdXRwdXRzWmlwXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhcmFtZXRlclwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhdXNlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgICAgICAgfCBcIkVudmlyb25tZW50SW5mb1wiIC0+XG4gICAgICAgICAgICAgIGBFbnZpcm9ubWVudEluZm9cbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q2F0YWxvZ1wiIC0+XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q2F0YWxvZ1xuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBTcXVhcmVfYnJhY2tldCAtPiAoXG4gICAgICAgICAgbWF0Y2ggQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlByb2plY3RMb2FkXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Byb2plY3RfcGFyc2VcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdExvYWQgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Db250aW51ZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Db250aW51ZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRElOXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Rpbl9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90X3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uU3RhcnRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0IHhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q3JlYXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Byb2plY3RfcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RDcmVhdGUgeFxuICAgICAgICAgICAgfCBcIlByb2plY3REZWxldGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0RGVsZXRlIHhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuKVxubGV0IHJlc3RfcmVxdWVzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcmVzdF9yZXF1ZXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzcG9uc2VfY29udGVudCA9IChcbiAgZnVuIG9iIHggLT5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFByb2plY3RMb2FkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlByb2plY3RMb2FkXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX19zdHJpbmdfbGlzdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxESU4geCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbERJTlxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9kaW5cbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9sb2dfbWVzc2FnZVxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxQbG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Bsb3RcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NuYXBzaG90X2RldGFpbFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25JbmZvIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25JbmZvXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25faW5mb1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25FZmZpY2llbmN5IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25FZmZpY2llbmN5XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fZWZmaWNpZW5jeVxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9maWxlX2xpbmVfY2F0YWxvZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRElOIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25DYXRhbG9nRElOXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2Rpbl9jYXRhbG9nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NuYXBzaG90X2NhdGFsb2dcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uVHJhY2UgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblRyYWNlXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25PdXRwdXRzWmlwXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblBhcmFtZXRlclxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25Db250aW51ZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ29udGludWVcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZWxldGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRlbGV0ZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25QYXVzZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25TdGFydCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uU3RhcnRcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbilcbmxldCBzdHJpbmdfb2ZfcmVzcG9uc2VfY29udGVudCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXNwb25zZV9jb250ZW50IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVzcG9uc2VfY29udGVudCA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgbWF0Y2ggWW9qc29uLlNhZmUuc3RhcnRfYW55X3ZhcmlhbnQgcCBsYiB3aXRoXG4gICAgICB8IGBFZGd5X2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLnJlYWRfaWRlbnQgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUHJvamVjdExvYWRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RMb2FkXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbGlzdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9sb2dfbWVzc2FnZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9kZXRhaWxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW5mb1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9maWxlX2xpbmVfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRElOXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Rpbl9jYXRhbG9nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXAgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Db250aW51ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZWxldGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0IHhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgRG91YmxlX3F1b3RlIC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5maW5pc2hfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlByb2plY3RMb2FkXCIgLT5cbiAgICAgICAgICAgICAgYFByb2plY3RMb2FkXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Db250aW51ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZWxldGVcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRlbGV0ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXVzZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgU3F1YXJlX2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19saXN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfbG9nX21lc3NhZ2VcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxQbG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Bsb3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9kZXRhaWxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkluZm8geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25FZmZpY2llbmN5XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fZWZmaWNpZW5jeVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9maWxlX2xpbmVfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5fY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9jYXRhbG9nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25UcmFjZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uT3V0cHV0c1ppcCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhcmFtZXRlclwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblN0YXJ0XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fYXJ0aWZhY3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0IHhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuKVxubGV0IHJlc3BvbnNlX2NvbnRlbnRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Jlc3BvbnNlX2NvbnRlbnQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fcmVzdWx0Xzg5MGQ5ZmUgPSAoXG4gIHdyaXRlX2FwaV9yZXN1bHQgd3JpdGVfcmVzcG9uc2VfY29udGVudCB3cml0ZV9fYXBpX21lc3NhZ2VfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9fcmVzdWx0Xzg5MGQ5ZmUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3Jlc3VsdF84OTBkOWZlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3Jlc3VsdF84OTBkOWZlID0gKFxuICByZWFkX2FwaV9yZXN1bHQgcmVhZF9yZXNwb25zZV9jb250ZW50IHJlYWRfX2FwaV9tZXNzYWdlX2xpc3RcbilcbmxldCBfcmVzdWx0Xzg5MGQ5ZmVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19yZXN1bHRfODkwZDlmZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19yZXNwb25zZV9jb250ZW50X3Jlc3VsdCA9IChcbiAgd3JpdGVfX3Jlc3VsdF84OTBkOWZlXG4pXG5sZXQgc3RyaW5nX29mX19yZXNwb25zZV9jb250ZW50X3Jlc3VsdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fcmVzcG9uc2VfY29udGVudF9yZXN1bHQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fcmVzcG9uc2VfY29udGVudF9yZXN1bHQgPSAoXG4gIHJlYWRfX3Jlc3VsdF84OTBkOWZlXG4pXG5sZXQgX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fcmVzcG9uc2VfY29udGVudF9yZXN1bHQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9yZXNwb25zZSA9IChcbiAgd3JpdGVfX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0XG4pXG5sZXQgc3RyaW5nX29mX3Jlc3BvbnNlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Jlc3BvbnNlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVzcG9uc2UgPSAoXG4gIHJlYWRfX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0XG4pXG5sZXQgcmVzcG9uc2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Jlc3BvbnNlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVxdWVzdCA9IChcbiAgZnVuIG9iIHggLT5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFByb2plY3RMb2FkIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlByb2plY3RMb2FkXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Byb2plY3RfcGFyc2VcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ29udGludWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNvbnRpbnVlXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZWxldGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRlbGV0ZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRElOIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxESU5cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZGluX2lkXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxQbG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Bsb3RfcGFyYW1ldGVyXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zbmFwc2hvdF9pZFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25JbmZvIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25JbmZvXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRWZmaWNpZW5jeSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uRWZmaWNpZW5jeVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uVHJhY2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblRyYWNlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uT3V0cHV0c1ppcFxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhcmFtZXRlciAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uUGFyYW1ldGVyXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uUGF1c2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblBhdXNlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uU3RhcnQgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblN0YXJ0XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuKVxubGV0IHN0cmluZ19vZl9yZXF1ZXN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3JlcXVlc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9yZXF1ZXN0ID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBtYXRjaCBZb2pzb24uU2FmZS5zdGFydF9hbnlfdmFyaWFudCBwIGxiIHdpdGhcbiAgICAgIHwgYEVkZ3lfYnJhY2tldCAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUucmVhZF9pZGVudCBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0TG9hZFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wcm9qZWN0X3BhcnNlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdExvYWQgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Db250aW51ZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNvbnRpbnVlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluX2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkluZm9cbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3lcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhcmFtZXRlclwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXVzZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhdXNlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYERvdWJsZV9xdW90ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUuZmluaXNoX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3lcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTlxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uVHJhY2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uT3V0cHV0c1ppcFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXVzZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgU3F1YXJlX2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0TG9hZFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wcm9qZWN0X3BhcnNlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RMb2FkIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5faWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblN0YXJ0XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbilcbmxldCByZXF1ZXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9yZXF1ZXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfaWQgPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX2ludFxuKVxubGV0IHN0cmluZ19vZl9pZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9pZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2lkID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbilcbmxldCBpZF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfaWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9tZXNzYWdlIHdyaXRlX19kYXRhIDogXyAtPiAnZGF0YSBtZXNzYWdlIC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6ICdkYXRhIG1lc3NhZ2UpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJpZFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfaWRcbiAgICApXG4gICAgICBvYiB4LmlkO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJkYXRhXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fZGF0YVxuICAgIClcbiAgICAgIG9iIHguZGF0YTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9tZXNzYWdlIHdyaXRlX19kYXRhID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX21lc3NhZ2Ugd3JpdGVfX2RhdGEgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9tZXNzYWdlIHJlYWRfX2RhdGEgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfaWQgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX2RhdGEgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDIgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCA0IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdkJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdhJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX2lkIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfZGF0YSA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2RhdGFcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCAyIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDQgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnZCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnYScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2lkIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9pZFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2RhdGEgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19kYXRhXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZCA9IChtYXRjaCAhZmllbGRfaWQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImlkXCIpO1xuICAgICAgICAgICAgZGF0YSA9IChtYXRjaCAhZmllbGRfZGF0YSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwiZGF0YVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6ICdkYXRhIG1lc3NhZ2UpXG4gICAgICApXG4pXG5sZXQgbWVzc2FnZV9vZl9zdHJpbmcgcmVhZF9fZGF0YSBzID1cbiAgcmVhZF9tZXNzYWdlIHJlYWRfX2RhdGEgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9maWxlX2xpbmVfZGV0YWlsID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9maWxlX2xpbmVfZGV0YWlsXG4pXG5sZXQgc3RyaW5nX29mX2ZpbGVfbGluZV9kZXRhaWwgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZmlsZV9saW5lX2RldGFpbCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZV9kZXRhaWwgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZmlsZV9saW5lX2RldGFpbFxuKVxubGV0IGZpbGVfbGluZV9kZXRhaWxfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZV9kZXRhaWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9maWxlX2xpbmUgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX2ZpbGVfbGluZVxuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZmlsZV9saW5lIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZmlsZV9saW5lID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2ZpbGVfbGluZVxuKVxubGV0IGZpbGVfbGluZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZmlsZV9saW5lIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5leGNlcHRpb24gQmFkUmVzcG9uc2Ugb2YgTXBpX21lc3NhZ2Vfai5yZXNwb25zZV9jb250ZW50XG5cbmxldCBvbl9tZXNzYWdlIChtYW5hZ2VyIDogQXBpLm1hbmFnZXJfc2ltdWxhdGlvbilcbiAgICAocG9zdF9tZXNzYWdlIDogc3RyaW5nIC0+IHVuaXQgTHd0LnQpICh0ZXh0X21lc3NhZ2UgOiBzdHJpbmcpIDogdW5pdCBMd3QudCA9XG4gIGxldCBtZXNzYWdlIDogTXBpX21lc3NhZ2Vfai5yZXF1ZXN0IE1waV9tZXNzYWdlX2oubWVzc2FnZSA9XG4gICAgTXBpX21lc3NhZ2Vfai5tZXNzYWdlX29mX3N0cmluZyBNcGlfbWVzc2FnZV9qLnJlYWRfcmVxdWVzdCB0ZXh0X21lc3NhZ2VcbiAgaW5cbiAgbGV0IGhhbmRsZXIgOlxuICAgICAgICAnYS5cbiAgICAgICAgKCdhIC0+IE1waV9tZXNzYWdlX2oucmVzcG9uc2VfY29udGVudCkgLT4gJ2EgQXBpLnJlc3VsdCAtPiB1bml0IEx3dC50ID1cbiAgIGZ1biBwYWNrIHJlc3VsdCAtPlxuICAgIGxldCBtZXNzYWdlIDogTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBNcGlfbWVzc2FnZV9qLm1lc3NhZ2UgPVxuICAgICAge1xuICAgICAgICBNcGlfbWVzc2FnZV9qLmlkID0gbWVzc2FnZS5NcGlfbWVzc2FnZV9qLmlkO1xuICAgICAgICBNcGlfbWVzc2FnZV9qLmRhdGEgPSBSZXN1bHRfdXRpbC5tYXAgcGFjayByZXN1bHQ7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgdGV4dCA6IHN0cmluZyA9XG4gICAgICBNcGlfbWVzc2FnZV9qLnN0cmluZ19vZl9tZXNzYWdlIE1waV9tZXNzYWdlX2oud3JpdGVfcmVzcG9uc2UgbWVzc2FnZVxuICAgIGluXG4gICAgcG9zdF9tZXNzYWdlIHRleHRcbiAgaW5cbiAgbWF0Y2ggbWVzc2FnZS5NcGlfbWVzc2FnZV9qLmRhdGEgd2l0aFxuICB8IGBQcm9qZWN0TG9hZCBBcGlfdHlwZXNfdC57IHBhdHRlcm5fc2hhcmluZzsgYXN0OyB2YXJpYWJsZV9vdmVyd3JpdHRlbiB9IC0+XG4gICAgbWFuYWdlciNzZWNyZXRfc2ltdWxhdGlvbl9sb2FkIHBhdHRlcm5fc2hhcmluZyBhc3QgdmFyaWFibGVfb3ZlcndyaXR0ZW5cbiAgICA+Pj0gaGFuZGxlciAoZnVuICgpIC0+IGBQcm9qZWN0TG9hZClcbiAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIHNpbXVsYXRpb25fcGFyYW1ldGVyIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2NvbnRpbnVlIHNpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgPj49IGhhbmRsZXIgKGZ1biAoKSAtPiBgU2ltdWxhdGlvbkNvbnRpbnVlKVxuICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2RlbGV0ZSA+Pj0gaGFuZGxlciAoZnVuICgpIC0+IGBTaW11bGF0aW9uRGVsZXRlKVxuICB8IGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgZmlsZV9saW5lX2lkIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9maWxlX2xpbmUgZmlsZV9saW5lX2lkXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25EZXRhaWxESU4gZGluX2lkIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9kaW4gZGluX2lkXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25EZXRhaWxESU4gcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfbG9nX21lc3NhZ2VcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uRGV0YWlsUGxvdCBwbG90X3BhcmFtZXRlciAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfcGxvdCBwbG90X3BhcmFtZXRlclxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uRGV0YWlsUGxvdCByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCBzbmFwc2hvdF9pZCAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfc25hcHNob3Qgc25hcHNob3RfaWRcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkluZm8gLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25faW5mbyA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkluZm8gcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uRWZmaWNpZW5jeSAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25FZmZpY2llbmN5IHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jYXRhbG9nX2ZpbGVfbGluZVxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkNhdGFsb2dESU4gLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY2F0YWxvZ19kaW5cbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkNhdGFsb2dESU4gcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2NhdGFsb2dfc25hcHNob3RcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25QYXJhbWV0ZXIgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uVHJhY2UgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fcmF3X3RyYWNlXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25UcmFjZSByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25PdXRwdXRzWmlwIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX291dHB1dHNfemlwXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25PdXRwdXRzWmlwIChCYXNlNjQuZW5jb2RlIHJlc3VsdCkpXG4gIHwgYFNpbXVsYXRpb25QYXVzZSAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9wYXVzZSA+Pj0gaGFuZGxlciAoZnVuICgpIC0+IGBTaW11bGF0aW9uUGF1c2UpXG4gIHwgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24gc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uIHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgPj49IGhhbmRsZXIgKGZ1biBzIC0+IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHMpXG4gIHwgYFNpbXVsYXRpb25TdGFydCBzaW11bGF0aW9uX3BhcmFtZXRlciAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9zdGFydCBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uU3RhcnQgcmVzdWx0KVxuXG5jbGFzcyB0eXBlIHZpcnR1YWwgbWFuYWdlcl9iYXNlX3R5cGUgPSBvYmplY3RcbiAgbWV0aG9kIHByaXZhdGUgdmlydHVhbCBtZXNzYWdlIDpcbiAgICBNcGlfbWVzc2FnZV9qLnJlcXVlc3QgLT4gTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBMd3QudFxuXG4gIGluaGVyaXQgQXBpLm1hbmFnZXJfc2ltdWxhdGlvblxuZW5kXG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlcl9iYXNlICgpIDogbWFuYWdlcl9iYXNlX3R5cGUgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHByaXZhdGUgdmlydHVhbCBtZXNzYWdlXG4gICAgICAgIDogTXBpX21lc3NhZ2Vfai5yZXF1ZXN0IC0+IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTHd0LnRcblxuICAgIG1ldGhvZCBzZWNyZXRfc2ltdWxhdGlvbl9sb2FkIHBhdHRlcm5fc2hhcmluZyBhc3QgdmFyaWFibGVfb3ZlcndyaXR0ZW5cbiAgICAgICAgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlXG4gICAgICAgIChgUHJvamVjdExvYWRcbiAgICAgICAgICBBcGlfdHlwZXNfdC57IHBhdHRlcm5fc2hhcmluZzsgYXN0OyB2YXJpYWJsZV9vdmVyd3JpdHRlbiB9KVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFByb2plY3RMb2FkIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NvbnRpbnVlIChwYXVzZV9jb25kaXRpb24gOiBzdHJpbmcpXG4gICAgICAgIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSAoYFNpbXVsYXRpb25Db250aW51ZSBwYXVzZV9jb25kaXRpb24pXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RlbGV0ZSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9maWxlX2xpbmUgKGZpbGVfbGluZV9pZCA6IHN0cmluZylcbiAgICAgICAgOiBzdHJpbmcgbGlzdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSAoYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSBmaWxlX2xpbmVfaWQpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIGZpbGVfbGluZV9saXN0IC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGZpbGVfbGluZV9saXN0KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9kaW4gKGZsdXhfbWFwX2lkIDogQXBpX3R5cGVzX3QuZGluX2lkKVxuICAgICAgICA6IEFwaV90eXBlc190LmRpbiBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSAoYFNpbXVsYXRpb25EZXRhaWxESU4gZmx1eF9tYXBfaWQpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbERJTiBmbHV4X21hcCAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBmbHV4X21hcClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfbG9nX21lc3NhZ2VcbiAgICAgICAgOiBBcGlfdHlwZXNfai5sb2dfbWVzc2FnZSBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSBsb2dfbWVzc2FnZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBsb2dfbWVzc2FnZSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfcGxvdCAocGxvdF9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5wbG90X3BhcmFtZXRlcilcbiAgICAgICAgOiBBcGlfdHlwZXNfai5wbG90IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIChgU2ltdWxhdGlvbkRldGFpbFBsb3QgcGxvdF9wYXJhbWV0ZXIpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFBsb3QgcGxvdCAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBwbG90KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9zbmFwc2hvdCAoc25hcHNob3RfaWQgOiBBcGlfdHlwZXNfai5zbmFwc2hvdF9pZClcbiAgICAgICAgOiBBcGlfdHlwZXNfai5zbmFwc2hvdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSAoYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCBzbmFwc2hvdF9pZClcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3Qgc25hcHNob3QgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgc25hcHNob3QpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25faW5mbyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvbkluZm9cbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uSW5mbyBzaW11bGF0aW9uX3N0YXR1cyAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzaW11bGF0aW9uX3N0YXR1cylcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9lZmZpY2llbmN5IDogQ291bnRlci5FZmZpY2llbmN5LnQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25FZmZpY2llbmN5XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgZWZmaWNpZW5jeSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBlZmZpY2llbmN5KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NhdGFsb2dfZmlsZV9saW5lXG4gICAgICAgIDogQXBpX3R5cGVzX2ouZmlsZV9saW5lX2NhdGFsb2cgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIGluZm8gLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgaW5mbylcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX2RpbiA6IEFwaV90eXBlc19qLmRpbl9jYXRhbG9nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTlxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRElOIGluZm8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgaW5mbylcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX3NuYXBzaG90XG4gICAgICAgIDogQXBpX3R5cGVzX2ouc25hcHNob3RfY2F0YWxvZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgaW5mbyAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBpbmZvKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3BhdXNlIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvblBhdXNlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3Jhd190cmFjZSA6IHN0cmluZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvblRyYWNlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvblRyYWNlIHJlc3VsdCAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayByZXN1bHQpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fb3V0cHV0c196aXAgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uT3V0cHV0c1ppcFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHJlc3VsdCAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoQmFzZTY0LmRlY29kZSByZXN1bHQpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGFyYW1ldGVyIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uUGFyYW1ldGVyXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvblBhcmFtZXRlciByZXN1bHQgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcmVzdWx0KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAoc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2ludGVydmVudGlvbilcbiAgICAgICAgOiBzdHJpbmcgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24gcyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3N0YXJ0XG4gICAgICAgIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgICA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fYXJ0aWZhY3QgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uU3RhcnQgc2ltdWxhdGlvbl9wYXJhbWV0ZXIpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvblN0YXJ0IHNpbXVsYXRpb25faWQgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgc2ltdWxhdGlvbl9pZClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG4gIGVuZFxuXG5tb2R1bGUgSW50TWFwID0gTW9kcy5JbnRNYXBcblxudHlwZSBjb250ZXh0ID0geyBtYWlsYm94ZXM6IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTHd0LnUgSW50TWFwLnQ7IGlkOiBpbnQgfVxuXG5jbGFzcyB0eXBlIHZpcnR1YWwgbWFuYWdlcl9tcGlfdHlwZSA9IG9iamVjdFxuICBtZXRob2QgcHJpdmF0ZSB2aXJ0dWFsIHNsZWVwIDogZmxvYXQgLT4gdW5pdCBMd3QudFxuICBtZXRob2QgcHJpdmF0ZSB2aXJ0dWFsIHBvc3RfbWVzc2FnZSA6IHN0cmluZyAtPiB1bml0XG4gIG1ldGhvZCBwcml2YXRlIG1lc3NhZ2UgOiBNcGlfbWVzc2FnZV9qLnJlcXVlc3QgLT4gTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBMd3QudFxuICBtZXRob2QgcHJpdmF0ZSByZWNlaXZlIDogc3RyaW5nIC0+IHVuaXRcbiAgaW5oZXJpdCBBcGkubWFuYWdlcl9zaW11bGF0aW9uXG4gIG1ldGhvZCBwcml2YXRlIHNpbV9pc19jb21wdXRpbmcgOiBib29sXG4gIG1ldGhvZCB2aXJ0dWFsIGlzX3J1bm5pbmcgOiBib29sXG5lbmRcblxuY2xhc3MgdmlydHVhbCBtYW5hZ2VyICgpIDogbWFuYWdlcl9tcGlfdHlwZSA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSBjb250ZXh0ID0geyBtYWlsYm94ZXMgPSBJbnRNYXAuZW1wdHk7IGlkID0gMCB9XG4gICAgbWV0aG9kIHByaXZhdGUgdmlydHVhbCBzbGVlcCA6IGZsb2F0IC0+IHVuaXQgTHd0LnRcbiAgICBtZXRob2QgcHJpdmF0ZSB2aXJ0dWFsIHBvc3RfbWVzc2FnZSA6IHN0cmluZyAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgaXNfcnVubmluZyA6IGJvb2xcblxuICAgIG1ldGhvZCBwcml2YXRlIHJlY2VpdmUgKHJlc3BvbnNlX3RleHQgOiBzdHJpbmcpID1cbiAgICAgIGxldCBtZXNzYWdlIDogTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBNcGlfbWVzc2FnZV9qLm1lc3NhZ2UgPVxuICAgICAgICBNcGlfbWVzc2FnZV9qLm1lc3NhZ2Vfb2Zfc3RyaW5nIE1waV9tZXNzYWdlX2oucmVhZF9yZXNwb25zZVxuICAgICAgICAgIHJlc3BvbnNlX3RleHRcbiAgICAgIGluXG4gICAgICBtYXRjaCBJbnRNYXAucG9wIG1lc3NhZ2UuTXBpX21lc3NhZ2Vfai5pZCBjb250ZXh0Lm1haWxib3hlcyB3aXRoXG4gICAgICB8IFNvbWUgdmFsdWUsIG1haWxib3hlcyAtPlxuICAgICAgICBsZXQgKCkgPSBjb250ZXh0IDwtIHsgY29udGV4dCB3aXRoIG1haWxib3hlcyB9IGluXG4gICAgICAgIEx3dC53YWtldXAgdmFsdWUgbWVzc2FnZS5NcGlfbWVzc2FnZV9qLmRhdGFcbiAgICAgIHwgTm9uZSwgbWFpbGJveGVzIC0+IGNvbnRleHQgPC0geyBjb250ZXh0IHdpdGggbWFpbGJveGVzIH1cblxuICAgIG1ldGhvZCBwcml2YXRlIG1lc3NhZ2UgKHJlcXVlc3QgOiBNcGlfbWVzc2FnZV9qLnJlcXVlc3QpXG4gICAgICAgIDogTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBMd3QudCA9XG4gICAgICBpZiBzZWxmI2lzX3J1bm5pbmcgdGhlbiAoXG4gICAgICAgIGxldCByZXN1bHQsIGZlZWRlciA9IEx3dC50YXNrICgpIGluXG4gICAgICAgIGxldCAoKSA9IGNvbnRleHQgPC0geyBjb250ZXh0IHdpdGggaWQgPSBjb250ZXh0LmlkICsgMSB9IGluXG4gICAgICAgIGxldCBtZXNzYWdlIDogTXBpX21lc3NhZ2Vfai5yZXF1ZXN0IE1waV9tZXNzYWdlX2oubWVzc2FnZSA9XG4gICAgICAgICAgeyBNcGlfbWVzc2FnZV9qLmlkID0gY29udGV4dC5pZDsgTXBpX21lc3NhZ2Vfai5kYXRhID0gcmVxdWVzdCB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBtZXNzYWdlX3RleHQgOiBzdHJpbmcgPVxuICAgICAgICAgIE1waV9tZXNzYWdlX2ouc3RyaW5nX29mX21lc3NhZ2UgTXBpX21lc3NhZ2Vfai53cml0ZV9yZXF1ZXN0IG1lc3NhZ2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gc2VsZiNwb3N0X21lc3NhZ2UgbWVzc2FnZV90ZXh0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgY29udGV4dCA8LVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb250ZXh0IHdpdGhcbiAgICAgICAgICAgICAgbWFpbGJveGVzID0gSW50TWFwLmFkZCBjb250ZXh0LmlkIGZlZWRlciBjb250ZXh0Lm1haWxib3hlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgcmVzdWx0XG4gICAgICApIGVsc2VcbiAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIFwiS2FwcGEgaGFzIGRpZWRcIilcblxuICAgIG1ldGhvZCBwcml2YXRlIHNpbV9pc19jb21wdXRpbmcgPSBub3QgKEludE1hcC5pc19lbXB0eSBjb250ZXh0Lm1haWxib3hlcylcbiAgICBpbmhlcml0IG1hbmFnZXJfYmFzZSAoKVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0ID1cbiAgKCBBcGlfdHlwZXNfdC5wbG90IG9wdGlvbixcbiAgICAoc3RyaW5nICogQXBpX3R5cGVzX3QuZGluKSBsaXN0LFxuICAgIHN0cmluZyBsaXN0IE1vZHMuU3RyaW5nTWFwLnQsXG4gICAgQXBpX3R5cGVzX3Quc25hcHNob3QgTW9kcy5TdHJpbmdNYXAudCxcbiAgICBzdHJpbmcsXG4gICAgc3RyaW5nIClcbiAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRcblxubGV0IGFwaV9zbmFwc2hvdF9kb3QgKHNuYXBzaG90IDogQXBpX3R5cGVzX3Quc25hcHNob3QpID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiIChEYXRhLnByaW50X2RvdF9zbmFwc2hvdCA/dXVpZDpOb25lKSBzbmFwc2hvdFxuXG5sZXQgYXBpX3NuYXBzaG90X2thcHBhIChzbmFwc2hvdCA6IERhdGEuc25hcHNob3QpIDogc3RyaW5nID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiIChEYXRhLnByaW50X3NuYXBzaG90ID91dWlkOk5vbmUpIHNuYXBzaG90XG5cbmxldCBhcGlfc2ltdWxhdGlvbl9zdGF0dXMgKHByb2dyZXNzIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzcylcbiAgICAoZGV0YWlsIDogc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KSA6IEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mbyA9XG4gIGxldCBvdXRwdXQgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm9fb3V0cHV0ID1cbiAgICB7XG4gICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9wbG90ID1cbiAgICAgICAgKG1hdGNoIGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9wbG90IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IDBcbiAgICAgICAgfCBTb21lIHBsb3QgLT4gTGlzdC5sZW5ndGggcGxvdC5EYXRhLnBsb3Rfc2VyaWVzKTtcbiAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2RpbnMgPVxuICAgICAgICBMaXN0Lmxlbmd0aCBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZGlucztcbiAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgPVxuICAgICAgICBNb2RzLlN0cmluZ01hcC5zaXplIGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzO1xuICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzID1cbiAgICAgICAgTW9kcy5TdHJpbmdNYXAuc2l6ZSBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzO1xuICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzID0gKCk7XG4gICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgPVxuICAgICAgICBTdHJpbmcubGVuZ3RoIGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXM7XG4gICAgfVxuICBpblxuICB7XG4gICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzID0gcHJvZ3Jlc3M7XG4gICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvX291dHB1dCA9IG91dHB1dDtcbiAgfVxuXG4oKiByZXR1cm4gdGhlIGFnZW50IGNvdW50ICopXG5sZXQgYWdlbnRfY291bnQgKHNwZWNpZXMgOiBBcGlfdHlwZXNfdC5zaXRlX2dyYXBoKSA6IGludCA9IEFycmF5Lmxlbmd0aCBzcGVjaWVzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgIChGcm9tKSBUaGUgQ2FtbFppcCBsaWJyYXJ5ICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDIwMDEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICopXG4oKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFdyaXRlIHVuZWZmaWNpZW50bHkgYnV0IGluIHB1cmUgT0NhbWwgdW5jb21wcmVzc2VkIFpJUCBhcmNoaXZlcyAqKVxuXG5leGNlcHRpb24gRXJyb3Igb2Ygc3RyaW5nICogc3RyaW5nICogc3RyaW5nXG5cbmxldCB3cml0ZTEgb2MgbiA9IEJpZ2J1ZmZlci5hZGRfY2hhciBvYyAoQ2hhci51bnNhZmVfY2hyIG4pXG5cbmxldCB3cml0ZTIgb2MgbiA9XG4gIHdyaXRlMSBvYyBuO1xuICB3cml0ZTEgb2MgKG4gbHNyIDgpXG5cbmxldCB3cml0ZTQgb2MgbiA9XG4gIHdyaXRlMiBvYyAoSW50MzIudG9faW50IG4pO1xuICB3cml0ZTIgb2MgKEludDMyLnRvX2ludCAoSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCBuIDE2KSlcblxubGV0IHdyaXRlNF9pbnQgb2MgbiA9XG4gIHdyaXRlMiBvYyBuO1xuICB3cml0ZTIgb2MgKG4gbHNyIDE2KVxuXG5sZXQgd3JpdGVzdHJpbmcgb2MgcyA9IEJpZ2J1ZmZlci5hZGRfc3RyaW5nIG9jIHNcblxudHlwZSBjb21wcmVzc2lvbl9tZXRob2QgPSBTdG9yZWRcblxudHlwZSBlbnRyeSA9IHtcbiAgZmlsZW5hbWU6IHN0cmluZztcbiAgZXh0cmE6IHN0cmluZztcbiAgY29tbWVudDogc3RyaW5nO1xuICBtZXRoZDogY29tcHJlc3Npb25fbWV0aG9kO1xuICBtdGltZTogZmxvYXQ7XG4gIGNyYzogaW50MzI7XG4gIHVuY29tcHJlc3NlZF9zaXplOiBpbnQ7XG4gIGNvbXByZXNzZWRfc2l6ZTogaW50O1xuICAoKmlzX2RpcmVjdG9yeTogYm9vbDsqKVxuICBmaWxlX29mZnNldDogaW50MzI7XG59XG5cbnR5cGUgb3V0X2ZpbGUgPSB7XG4gIG9mX2ZpbGVuYW1lOiBzdHJpbmc7XG4gIG9mX2NoYW5uZWw6IEJpZ2J1ZmZlci50O1xuICBtdXRhYmxlIG9mX2VudHJpZXM6IGVudHJ5IGxpc3Q7XG4gIG9mX2NvbW1lbnQ6IHN0cmluZztcbn1cblxuKCpsZXQgZmlsZW5hbWVfaXNfZGlyZWN0b3J5IG5hbWUgPVxuICBTdHJpbmcubGVuZ3RoIG5hbWUgPiAwICYmIG5hbWUuW1N0cmluZy5sZW5ndGggbmFtZSAtIDFdID0gJy8nKilcblxuKCogQ29udmVydCBiZXR3ZWVuIFVuaXggZGF0ZXMgYW5kIERPUyBkYXRlcyAqKVxuXG5sZXQgZG9zdGltZV9vZl91bml4dGltZSB0ID1cbiAgbGV0IHRtID0gVW5peC5sb2NhbHRpbWUgdCBpblxuICAoICh0bS5Vbml4LnRtX3NlYyBsc3IgMSkgKyAodG0uVW5peC50bV9taW4gbHNsIDUpICsgKHRtLlVuaXgudG1faG91ciBsc2wgMTEpLFxuICAgIHRtLlVuaXgudG1fbWRheVxuICAgICsgKCh0bS5Vbml4LnRtX21vbiArIDEpIGxzbCA1KVxuICAgICsgKCh0bS5Vbml4LnRtX3llYXIgLSA4MCkgbHNsIDkpIClcblxuKCogT3BlbiBhIFpJUCBmaWxlIGZvciB3cml0aW5nICopXG5cbmxldCBvcGVuX291dCA/KGNvbW1lbnQgPSBcIlwiKSBmaWxlbmFtZSA9XG4gIGlmIFN0cmluZy5sZW5ndGggY29tbWVudCA+PSAweDEwMDAwIHRoZW5cbiAgICByYWlzZSAoRXJyb3IgKGZpbGVuYW1lLCBcIlwiLCBcImNvbW1lbnQgdG9vIGxvbmdcIikpO1xuICB7XG4gICAgb2ZfZmlsZW5hbWUgPSBmaWxlbmFtZTtcbiAgICBvZl9jaGFubmVsID0gQmlnYnVmZmVyLmNyZWF0ZSA4MTkyO1xuICAgIG9mX2VudHJpZXMgPSBbXTtcbiAgICBvZl9jb21tZW50ID0gY29tbWVudDtcbiAgfVxuXG4oKiBDbG9zZSBhIFpJUCBmaWxlIGZvciB3cml0aW5nLiAgQWRkIGNlbnRyYWwgZGlyZWN0b3J5LiAqKVxuXG5sZXQgd3JpdGVfZGlyZWN0b3J5X2VudHJ5IG9jIGUgPVxuICB3cml0ZTQgb2MgKEludDMyLm9mX2ludCAweDAyMDE0YjUwKTtcbiAgKCogc2lnbmF0dXJlICopXG4gIGxldCB2ZXJzaW9uID1cbiAgICBtYXRjaCBlLm1ldGhkIHdpdGhcbiAgICB8IFN0b3JlZCAtPiAxMFxuICBpblxuICB3cml0ZTIgb2MgdmVyc2lvbjtcbiAgKCogdmVyc2lvbiBtYWRlIGJ5ICopXG4gIHdyaXRlMiBvYyB2ZXJzaW9uO1xuICAoKiB2ZXJzaW9uIG5lZWRlZCB0byBleHRyYWN0ICopXG4gIHdyaXRlMiBvYyA4O1xuICAoKiBmbGFncyAqKVxuICB3cml0ZTIgb2NcbiAgICAobWF0Y2ggZS5tZXRoZCB3aXRoXG4gICAgfCBTdG9yZWQgLT4gMCk7XG4gICgqIG1ldGhvZCAqKVxuICBsZXQgdGltZSwgZGF0ZSA9IGRvc3RpbWVfb2ZfdW5peHRpbWUgZS5tdGltZSBpblxuICB3cml0ZTIgb2MgdGltZTtcbiAgKCogbGFzdCBtb2QgdGltZSAqKVxuICB3cml0ZTIgb2MgZGF0ZTtcbiAgKCogbGFzdCBtb2QgZGF0ZSAqKVxuICB3cml0ZTQgb2MgZS5jcmM7XG4gICgqIENSQzMyICopXG4gIHdyaXRlNF9pbnQgb2MgZS5jb21wcmVzc2VkX3NpemU7XG4gICgqIGNvbXByZXNzZWQgc2l6ZSAqKVxuICB3cml0ZTRfaW50IG9jIGUudW5jb21wcmVzc2VkX3NpemU7XG4gICgqIHVuY29tcHJlc3NlZCBzaXplICopXG4gIHdyaXRlMiBvYyAoU3RyaW5nLmxlbmd0aCBlLmZpbGVuYW1lKTtcbiAgKCogZmlsZW5hbWUgbGVuZ3RoICopXG4gIHdyaXRlMiBvYyAoU3RyaW5nLmxlbmd0aCBlLmV4dHJhKTtcbiAgKCogZXh0cmEgbGVuZ3RoICopXG4gIHdyaXRlMiBvYyAoU3RyaW5nLmxlbmd0aCBlLmNvbW1lbnQpO1xuICAoKiBjb21tZW50IGxlbmd0aCAqKVxuICB3cml0ZTIgb2MgMDtcbiAgKCogZGlzayBudW1iZXIgc3RhcnQgKilcbiAgd3JpdGUyIG9jIDA7XG4gICgqIGludGVybmFsIGF0dHJpYnV0ZXMgKilcbiAgd3JpdGU0X2ludCBvYyAwO1xuICAoKiBleHRlcm5hbCBhdHRyaWJ1dGVzICopXG4gIHdyaXRlNCBvYyBlLmZpbGVfb2Zmc2V0O1xuICAoKiBvZmZzZXQgb2YgbG9jYWwgaGVhZGVyICopXG4gIHdyaXRlc3RyaW5nIG9jIGUuZmlsZW5hbWU7XG4gICgqIGZpbGVuYW1lICopXG4gIHdyaXRlc3RyaW5nIG9jIGUuZXh0cmE7XG4gICgqIGV4dHJhIGluZm8gKilcbiAgd3JpdGVzdHJpbmcgb2MgZS5jb21tZW50ICgqIGZpbGUgY29tbWVudCAqKVxuXG5sZXQgY2xvc2Vfb3V0IG9maWxlID1cbiAgbGV0IG9jID0gb2ZpbGUub2ZfY2hhbm5lbCBpblxuICBsZXQgc3RhcnRfY2QgPSBCaWdidWZmZXIubGVuZ3RoIG9jIGluXG4gIExpc3QuaXRlciAod3JpdGVfZGlyZWN0b3J5X2VudHJ5IG9jKSAoTGlzdC5yZXYgb2ZpbGUub2ZfZW50cmllcyk7XG4gIGxldCBjZF9zaXplID0gQmlnYnVmZmVyLmxlbmd0aCBvYyAtIHN0YXJ0X2NkIGluXG4gIGxldCBudW1fZW50cmllcyA9IExpc3QubGVuZ3RoIG9maWxlLm9mX2VudHJpZXMgaW5cbiAgaWYgbnVtX2VudHJpZXMgPj0gMHgxMDAwMCB0aGVuXG4gICAgcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgXCJcIiwgXCJ0b28gbWFueSBlbnRyaWVzXCIpKTtcbiAgd3JpdGU0IG9jIChJbnQzMi5vZl9pbnQgMHgwNjA1NGI1MCk7XG4gICgqIHNpZ25hdHVyZSAqKVxuICB3cml0ZTIgb2MgMDtcbiAgKCogZGlzayBudW1iZXIgKilcbiAgd3JpdGUyIG9jIDA7XG4gICgqIG51bWJlciBvZiBkaXNrIHdpdGggY2VudHJhbCBkaXIgKilcbiAgd3JpdGUyIG9jIG51bV9lbnRyaWVzO1xuICAoKiAjIGVudHJpZXMgaW4gdGhpcyBkaXNrICopXG4gIHdyaXRlMiBvYyBudW1fZW50cmllcztcbiAgKCogIyBlbnRyaWVzIGluIGNlbnRyYWwgZGlyICopXG4gIHdyaXRlNF9pbnQgb2MgY2Rfc2l6ZTtcbiAgKCogc2l6ZSBvZiBjZW50cmFsIGRpciAqKVxuICB3cml0ZTRfaW50IG9jIHN0YXJ0X2NkO1xuICAoKiBvZmZzZXQgb2YgY2VudHJhbCBkaXIgKilcbiAgd3JpdGUyIG9jIChTdHJpbmcubGVuZ3RoIG9maWxlLm9mX2NvbW1lbnQpO1xuICAoKiBsZW5ndGggb2YgY29tbWVudCAqKVxuICB3cml0ZXN0cmluZyBvYyBvZmlsZS5vZl9jb21tZW50O1xuICAoKiBjb21tZW50ICopXG4gIEJpZ2J1ZmZlci5jb250ZW50cyBvY1xuXG4oKiBXcml0ZSBhIGxvY2FsIGZpbGUgaGVhZGVyIGFuZCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgZW50cnkgKilcblxubGV0IGFkZF9lbnRyeV9oZWFkZXIgb2ZpbGUgZXh0cmEgY29tbWVudCBsZXZlbCBtdGltZSBmaWxlbmFtZSA9XG4gIGlmIGxldmVsIDw+IDAgdGhlblxuICAgIHJhaXNlIChFcnJvciAob2ZpbGUub2ZfZmlsZW5hbWUsIGZpbGVuYW1lLCBcImZha2VfemlwIGNhbm5vdCBjb21wcmVzc1wiKSk7XG4gIGlmIFN0cmluZy5sZW5ndGggZmlsZW5hbWUgPj0gMHgxMDAwMCB0aGVuXG4gICAgcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgZmlsZW5hbWUsIFwiZmlsZW5hbWUgdG9vIGxvbmdcIikpO1xuICBpZiBTdHJpbmcubGVuZ3RoIGV4dHJhID49IDB4MTAwMDAgdGhlblxuICAgIHJhaXNlIChFcnJvciAob2ZpbGUub2ZfZmlsZW5hbWUsIGZpbGVuYW1lLCBcImV4dHJhIGRhdGEgdG9vIGxvbmdcIikpO1xuICBpZiBTdHJpbmcubGVuZ3RoIGNvbW1lbnQgPj0gMHgxMDAwMCB0aGVuXG4gICAgcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgZmlsZW5hbWUsIFwiY29tbWVudCB0b28gbG9uZ1wiKSk7XG4gIGxldCBvYyA9IG9maWxlLm9mX2NoYW5uZWwgaW5cbiAgbGV0IHBvcyA9IEJpZ2J1ZmZlci5sZW5ndGggb2MgaW5cbiAgd3JpdGU0IG9jIChJbnQzMi5vZl9pbnQgMHgwNDAzNGI1MCk7XG4gICgqIHNpZ25hdHVyZSAqKVxuICBsZXQgdmVyc2lvbiA9XG4gICAgaWYgbGV2ZWwgPSAwIHRoZW5cbiAgICAgIDEwXG4gICAgZWxzZVxuICAgICAgMjBcbiAgaW5cbiAgd3JpdGUyIG9jIHZlcnNpb247XG4gICgqIHZlcnNpb24gbmVlZGVkIHRvIGV4dHJhY3QgKilcbiAgd3JpdGUyIG9jIDg7XG4gICgqIGZsYWdzICopXG4gIHdyaXRlMiBvY1xuICAgIChpZiBsZXZlbCA9IDAgdGhlblxuICAgICAgIDBcbiAgICAgZWxzZVxuICAgICAgIDgpO1xuICAoKiBtZXRob2QgKilcbiAgbGV0IHRpbWUsIGRhdGUgPSBkb3N0aW1lX29mX3VuaXh0aW1lIG10aW1lIGluXG4gIHdyaXRlMiBvYyB0aW1lO1xuICAoKiBsYXN0IG1vZCB0aW1lICopXG4gIHdyaXRlMiBvYyBkYXRlO1xuICAoKiBsYXN0IG1vZCBkYXRlICopXG4gIHdyaXRlNCBvYyBJbnQzMi56ZXJvO1xuICAoKiBDUkMzMiAtIHRvIGJlIGZpbGxlZCBsYXRlciAqKVxuICB3cml0ZTRfaW50IG9jIDA7XG4gICgqIGNvbXByZXNzZWQgc2l6ZSAtIGxhdGVyICopXG4gIHdyaXRlNF9pbnQgb2MgMDtcbiAgKCogdW5jb21wcmVzc2VkIHNpemUgLSBsYXRlciAqKVxuICB3cml0ZTIgb2MgKFN0cmluZy5sZW5ndGggZmlsZW5hbWUpO1xuICAoKiBmaWxlbmFtZSBsZW5ndGggKilcbiAgd3JpdGUyIG9jIChTdHJpbmcubGVuZ3RoIGV4dHJhKTtcbiAgKCogZXh0cmEgbGVuZ3RoICopXG4gIHdyaXRlc3RyaW5nIG9jIGZpbGVuYW1lO1xuICAoKiBmaWxlbmFtZSAqKVxuICB3cml0ZXN0cmluZyBvYyBleHRyYTtcbiAgKCogZXh0cmEgaW5mbyAqKVxuICB7XG4gICAgZmlsZW5hbWU7XG4gICAgZXh0cmE7XG4gICAgY29tbWVudDtcbiAgICBtZXRoZCA9IFN0b3JlZDtcbiAgICBtdGltZTtcbiAgICBjcmMgPSBJbnQzMi56ZXJvO1xuICAgIHVuY29tcHJlc3NlZF9zaXplID0gMDtcbiAgICBjb21wcmVzc2VkX3NpemUgPSAwO1xuICAgICgqaXNfZGlyZWN0b3J5ID0gZmlsZW5hbWVfaXNfZGlyZWN0b3J5IGZpbGVuYW1lOyopXG4gICAgZmlsZV9vZmZzZXQgPSBJbnQzMi5vZl9pbnQgcG9zO1xuICB9XG5cbigqIFdyaXRlIGEgZGF0YSBkZXNjcmlwdG9yIGFuZCB1cGRhdGUgdGhlIGVudHJ5ICopXG5cbmxldCBhZGRfZGF0YV9kZXNjcmlwdG9yIG9maWxlIGNyYyBjb21wcl9zaXplIHVuY29tcHJfc2l6ZSBlbnRyeSA9XG4gIGxldCBvYyA9IG9maWxlLm9mX2NoYW5uZWwgaW5cbiAgd3JpdGU0IG9jIChJbnQzMi5vZl9pbnQgMHgwODA3NGI1MCk7XG4gICgqIHNpZ25hdHVyZSAqKVxuICB3cml0ZTQgb2MgY3JjO1xuICAoKiBDUkMgKilcbiAgd3JpdGU0X2ludCBvYyBjb21wcl9zaXplO1xuICAoKiBjb21wcmVzc2VkIHNpemUgKilcbiAgd3JpdGU0X2ludCBvYyB1bmNvbXByX3NpemU7XG4gICgqIHVuY29tcHJlc3NlZCBzaXplICopXG4gIHtcbiAgICBlbnRyeSB3aXRoXG4gICAgY3JjO1xuICAgIHVuY29tcHJlc3NlZF9zaXplID0gdW5jb21wcl9zaXplO1xuICAgIGNvbXByZXNzZWRfc2l6ZSA9IGNvbXByX3NpemU7XG4gIH1cblxubGV0IHVwZGF0ZV9jcmMgY3JjIGJ1ZiBzdGFydCBsZW4gPSBDcmMzMi5zdHJpbmcgfmNyYyBidWYgc3RhcnQgbGVuXG5cbigqIEFkZCBhbiBlbnRyeSB3aXRoIHRoZSBjb250ZW50cyBvZiBhIHN0cmluZyAqKVxuXG5sZXQgYWRkX2VudHJ5IGRhdGEgb2ZpbGUgPyhleHRyYSA9IFwiXCIpID8oY29tbWVudCA9IFwiXCIpID8obGV2ZWwgPSAwKVxuICAgID8obXRpbWUgPSBVbml4LnRpbWUgKCkpIG5hbWUgPVxuICBsZXQgZSA9IGFkZF9lbnRyeV9oZWFkZXIgb2ZpbGUgZXh0cmEgY29tbWVudCBsZXZlbCBtdGltZSBuYW1lIGluXG4gIGxldCBjcmMgPSB1cGRhdGVfY3JjIEludDMyLnplcm8gZGF0YSAwIChTdHJpbmcubGVuZ3RoIGRhdGEpIGluXG4gIGxldCBjb21wcl9zaXplID1cbiAgICBtYXRjaCBsZXZlbCB3aXRoXG4gICAgfCAwIC0+XG4gICAgICBCaWdidWZmZXIuYWRkX3N1YnN0cmluZyBvZmlsZS5vZl9jaGFubmVsIGRhdGEgMCAoU3RyaW5nLmxlbmd0aCBkYXRhKTtcbiAgICAgIFN0cmluZy5sZW5ndGggZGF0YVxuICAgIHwgXyAtPiByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBuYW1lLCBcImNvbXByZXNzaW9uIGVycm9yXCIpKVxuICBpblxuICBsZXQgZScgPSBhZGRfZGF0YV9kZXNjcmlwdG9yIG9maWxlIGNyYyBjb21wcl9zaXplIChTdHJpbmcubGVuZ3RoIGRhdGEpIGUgaW5cbiAgb2ZpbGUub2ZfZW50cmllcyA8LSBlJyA6OiBvZmlsZS5vZl9lbnRyaWVzXG5cbigqXG4oKiBBZGQgYW4gZW50cnkgd2l0aCB0aGUgY29udGVudHMgb2YgYW4gaW4gY2hhbm5lbCAqKVxuXG5sZXQgY29weV9jaGFubmVsX3RvX2VudHJ5IGljIG9maWxlID8oZXh0cmEgPSBcIlwiKSA/KGNvbW1lbnQgPSBcIlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/KGxldmVsID0gMCkgPyhtdGltZSA9IFVuaXgudGltZSgpKSBuYW1lID1cbiAgbGV0IGUgPSBhZGRfZW50cnlfaGVhZGVyIG9maWxlIGV4dHJhIGNvbW1lbnQgbGV2ZWwgbXRpbWUgbmFtZSBpblxuICBsZXQgY3JjID0gcmVmIEludDMyLnplcm8gaW5cbiAgbGV0IChjb21wcl9zaXplLCB1bmNvbXByX3NpemUpID1cbiAgICBtYXRjaCBsZXZlbCB3aXRoXG4gICAgICAwIC0+XG4gICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgNDA5NiBpblxuICAgICAgICBsZXQgcmVjIGNvcHkgc3ogPVxuICAgICAgICAgIGxldCByID0gaW5wdXQgaWMgYnVmIDAgKEJ5dGVzLmxlbmd0aCBidWYpIGluXG4gICAgICAgICAgaWYgciA9IDAgdGhlbiBzeiBlbHNlIGJlZ2luXG4gICAgICAgICAgICBjcmMgOj0gdXBkYXRlX2NyYyAhY3JjIGJ1ZiAwIHI7XG4gICAgICAgICAgICBCaXRCdWZmZXIuYWRkX3N1YnN0cmluZyBvZmlsZS5vZl9jaGFubmVsIGJ1ZiAwIHI7XG4gICAgICAgICAgICBjb3B5IChzeiArIHIpXG4gICAgICAgICAgZW5kIGluXG4gICAgICAgIGxldCBzaXplID0gY29weSAwIGluXG4gICAgICAgIChzaXplLCBzaXplKVxuICAgIHwgXyAtPiByYWlzZSAoRXJyb3Iob2ZpbGUub2ZfZmlsZW5hbWUsIG5hbWUsIFwiY29tcHJlc3Npb24gZXJyb3JcIikpIGluXG4gIGxldCBlJyA9IGFkZF9kYXRhX2Rlc2NyaXB0b3Igb2ZpbGUgIWNyYyBjb21wcl9zaXplIHVuY29tcHJfc2l6ZSBlIGluXG4gIG9maWxlLm9mX2VudHJpZXMgPC0gZScgOjogb2ZpbGUub2ZfZW50cmllc1xuXG4oKiBBZGQgYW4gZW50cnkgd2l0aCB0aGUgY29udGVudHMgb2YgYSBmaWxlICopXG5cbmxldCBjb3B5X2ZpbGVfdG9fZW50cnkgaW5maWxlbmFtZSBvZmlsZSA/KGV4dHJhID0gXCJcIikgPyhjb21tZW50ID0gXCJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/KGxldmVsID0gMCkgP210aW1lIG5hbWUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBpbmZpbGVuYW1lIGluXG4gIGxldCBtdGltZScgPVxuICAgIG1hdGNoIG10aW1lIHdpdGhcbiAgICAgIFNvbWUgdCAtPiBtdGltZVxuICAgIHwgTm9uZSAtPlxuICAgICAgICB0cnkgU29tZSgoVW5peC5zdGF0IGluZmlsZW5hbWUpLlVuaXguc3RfbXRpbWUpXG4gICAgICAgIHdpdGggVW5peC5Vbml4X2Vycm9yKF8sXyxfKSAtPiBOb25lIGluXG4gIHRyeVxuICAgIGNvcHlfY2hhbm5lbF90b19lbnRyeSBpYyBvZmlsZSB+ZXh0cmEgfmNvbW1lbnQgfmxldmVsID9tdGltZTptdGltZScgbmFtZTtcbiAgICBQZXJ2YXNpdmVzLmNsb3NlX2luIGljXG4gIHdpdGggeCAtPlxuICAgIFBlcnZhc2l2ZXMuY2xvc2VfaW4gaWM7IHJhaXNlIHhcbiopXG5cbigqIEFkZCBhbiBlbnRyeSB3aG9zZSBjb250ZW50IHdpbGwgYmUgcHJvZHVjZWQgYnkgdGhlIGNhbGxlciAqKVxuXG5sZXQgYWRkX2VudHJ5X2dlbmVyYXRvciBvZmlsZSA/KGV4dHJhID0gXCJcIikgPyhjb21tZW50ID0gXCJcIikgPyhsZXZlbCA9IDApXG4gICAgPyhtdGltZSA9IFVuaXgudGltZSAoKSkgbmFtZSA9XG4gIGxldCBlID0gYWRkX2VudHJ5X2hlYWRlciBvZmlsZSBleHRyYSBjb21tZW50IGxldmVsIG10aW1lIG5hbWUgaW5cbiAgbGV0IGNyYyA9IHJlZiBJbnQzMi56ZXJvIGluXG4gIGxldCBjb21wcl9zaXplID0gcmVmIDAgaW5cbiAgbGV0IHVuY29tcHJfc2l6ZSA9IHJlZiAwIGluXG4gIGxldCBmaW5pc2hlZCA9IHJlZiBmYWxzZSBpblxuICBsZXQgY2hlY2sgKCkgPVxuICAgIGlmICFmaW5pc2hlZCB0aGVuXG4gICAgICByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBuYW1lLCBcImVudHJ5IGFscmVhZHkgZmluaXNoZWRcIikpXG4gIGluXG4gIGxldCBmaW5pc2ggKCkgPVxuICAgIGZpbmlzaGVkIDo9IHRydWU7XG4gICAgbGV0IGUnID0gYWRkX2RhdGFfZGVzY3JpcHRvciBvZmlsZSAhY3JjICFjb21wcl9zaXplICF1bmNvbXByX3NpemUgZSBpblxuICAgIG9maWxlLm9mX2VudHJpZXMgPC0gZScgOjogb2ZpbGUub2ZfZW50cmllc1xuICBpblxuICBtYXRjaCBsZXZlbCB3aXRoXG4gIHwgMCAtPlxuICAgICggKGZ1biBidWYgcG9zIGxlbiAtPlxuICAgICAgICBjaGVjayAoKTtcbiAgICAgICAgQmlnYnVmZmVyLmFkZF9zdWJieXRlcyBvZmlsZS5vZl9jaGFubmVsIGJ1ZiBwb3MgbGVuO1xuICAgICAgICBjb21wcl9zaXplIDo9ICFjb21wcl9zaXplICsgbGVuO1xuICAgICAgICB1bmNvbXByX3NpemUgOj0gIXVuY29tcHJfc2l6ZSArIGxlbiksXG4gICAgICBmdW4gKCkgLT5cbiAgICAgICAgY2hlY2sgKCk7XG4gICAgICAgIGZpbmlzaCAoKSApXG4gIHwgXyAtPiByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBuYW1lLCBcImNvbXByZXNzaW9uIGVycm9yXCIpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuKCogRXJyb3IgbWVzc2FnZXMgKilcblxuKCoqIEludGVyZmFjZSB0byBrYXBwYSBydW50aW1lICopXG5sZXQgbXNnX3Byb2Nlc3Nfbm90X3BhdXNlZCA9IFwicHJvY2VzcyBub3QgcGF1c2VkXCJcblxuKCoqICBTeXN0ZW0gcHJvY2Vzc1xuXG4gICAgIFRoZXNlIGFyZSBzeXN0ZW0gcHJvY2VzcyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHRoYXRcbiAgICAgdmFyeS5cbiopXG5jbGFzcyB0eXBlIHN5c3RlbV9wcm9jZXNzID0gb2JqZWN0XG4gIG1ldGhvZCBsb2cgOiA/ZXhuOmV4biAtPiBzdHJpbmcgLT4gdW5pdCBMd3QudFxuICBtZXRob2QgeWllbGQgOiB1bml0IC0+IHVuaXQgTHd0LnRcbiAgbWV0aG9kIG1pbl9ydW5fZHVyYXRpb24gOiB1bml0IC0+IGZsb2F0XG5lbmRcblxuKCoqIFRyaXZpYWwgaW1wbGVtZW50YXRpb24gcHJpbWFyaWx5IGZvciB1bml0IHRlc3RpbmcuICopXG5jbGFzcyBudWxsX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2VzcyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBsb2cgP2V4biAoXyA6IHN0cmluZykgPVxuICAgICAgbGV0ICgpID0gaWdub3JlIGV4biBpblxuICAgICAgTHd0LnJldHVybl91bml0XG5cbiAgICBtZXRob2QgeWllbGQgKCkgPSBMd3QucmV0dXJuX3VuaXRcbiAgICBtZXRob2QgbWluX3J1bl9kdXJhdGlvbiAoKSA9IDAuMFxuICBlbmRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIGlzX3J1bm5pbmc6IGJvb2w7XG4gIG11dGFibGUgcnVuX2ZpbmFsaXplOiBib29sO1xuICBtdXRhYmxlIHBhdXNlX2NvbmRpdGlvbjogKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5ib29sO1xuICBkdW1wSWZEZWFkbG9ja2VkOiBib29sO1xuICBtYXhDb25zZWN1dGl2ZUNsYXNoOiBpbnQ7XG4gIHBhdHRlcm5TaGFyaW5nOiBQYXR0ZXJuLnNoYXJpbmdfbGV2ZWw7XG4gIGNvdW50ZXI6IENvdW50ZXIudDtcbiAgbG9nX2J1ZmZlcjogQnVmZmVyLnQ7XG4gIGxvZ19mb3JtOiBGb3JtYXQuZm9ybWF0dGVyO1xuICBtdXRhYmxlIHBsb3Q6IERhdGEucGxvdDtcbiAgbXV0YWJsZSBzbmFwc2hvdHM6IERhdGEuc25hcHNob3QgTW9kcy5TdHJpbmdNYXAudDtcbiAgbXV0YWJsZSBkaW5zOiAoc3RyaW5nICogRGF0YS5kaW4pIGxpc3Q7XG4gIG11dGFibGUgc3BlY2llczpcbiAgICAoZmxvYXQgKiBVc2VyX2dyYXBoLmNvbm5lY3RlZF9jb21wb25lbnQpIGxpc3QgTW9kcy5TdHJpbmdNYXAudDtcbiAgbXV0YWJsZSBmaWxlczogc3RyaW5nIGxpc3QgTW9kcy5TdHJpbmdNYXAudDtcbiAgbXV0YWJsZSBlcnJvcl9tZXNzYWdlczogUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0O1xuICAoKm11dGFibGUqKSB0cmFjZTogQnVmZmVyLnQ7XG4gIGlucHV0c19idWZmZXI6IEJ1ZmZlci50O1xuICBpbnB1dHNfZm9ybTogRm9ybWF0LmZvcm1hdHRlcjtcbiAgYXN0OiBBc3QucGFyc2luZ19jb21waWw7XG4gIGNvbnRhY3RfbWFwOiBDb250YWN0X21hcC50O1xuICBtdXRhYmxlIGVudjogTW9kZWwudDtcbiAgbXV0YWJsZSBncmFwaDogUnVsZV9pbnRlcnByZXRlci50O1xuICBtdXRhYmxlIHN0YXRlOiBTdGF0ZV9pbnRlcnByZXRlci50O1xuICBpbml0X2w6IChQcmltaXRpdmVzLmFsZ19leHByICogUHJpbWl0aXZlcy5lbGVtZW50YXJ5X3J1bGUpIGxpc3Q7XG4gIG11dGFibGUgbGFzdHlpZWxkOiBmbG9hdDtcbn1cbigqKiBTdGF0ZSBvZiB0aGUgcnVubmluZyBzaW11bGF0aW9uLiAqKVxuXG5sZXQgY3JlYXRlX3QgfmxvZ19mb3JtIH5sb2dfYnVmZmVyIH5jb250YWN0X21hcCB+aW5wdXRzX2J1ZmZlciB+aW5wdXRzX2Zvcm1cbiAgICB+ZHVtcElmRGVhZGxvY2tlZCB+bWF4Q29uc2VjdXRpdmVDbGFzaCB+cGF0dGVyblNoYXJpbmcgfmVudiB+Y291bnRlciB+Z3JhcGhcbiAgICB+c3RhdGUgfmluaXRfbCB+bGFzdHlpZWxkIH5hc3QgOiB0ID1cbiAge1xuICAgIGlzX3J1bm5pbmcgPSBmYWxzZTtcbiAgICBydW5fZmluYWxpemUgPSBmYWxzZTtcbiAgICBjb3VudGVyO1xuICAgIGxvZ19idWZmZXI7XG4gICAgbG9nX2Zvcm07XG4gICAgcGF1c2VfY29uZGl0aW9uID0gQWxnX2V4cHIuRkFMU0U7XG4gICAgZHVtcElmRGVhZGxvY2tlZDtcbiAgICBtYXhDb25zZWN1dGl2ZUNsYXNoO1xuICAgIHBhdHRlcm5TaGFyaW5nO1xuICAgIHBsb3QgPSBEYXRhLmluaXRfcGxvdCBlbnY7XG4gICAgc25hcHNob3RzID0gTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gICAgZGlucyA9IFtdO1xuICAgIHNwZWNpZXMgPSBNb2RzLlN0cmluZ01hcC5lbXB0eTtcbiAgICBmaWxlcyA9IE1vZHMuU3RyaW5nTWFwLmVtcHR5O1xuICAgIGVycm9yX21lc3NhZ2VzID0gW107XG4gICAgdHJhY2UgPSBCdWZmZXIuY3JlYXRlIDEwMjQ7XG4gICAgaW5wdXRzX2J1ZmZlcjtcbiAgICBpbnB1dHNfZm9ybTtcbiAgICBhc3Q7XG4gICAgY29udGFjdF9tYXA7XG4gICAgZW52O1xuICAgIGdyYXBoO1xuICAgIHN0YXRlO1xuICAgIGluaXRfbDtcbiAgICBsYXN0eWllbGQ7XG4gIH1cblxubGV0IHJlaW5pdGlhbGl6ZSB+b3V0cHV0cyByYW5kb21fc3RhdGUgdCA9XG4gIGxldCAoKSA9IENvdW50ZXIucmVpbml0aWFsaXplIHQuY291bnRlciBpblxuICAoKiBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfZmx1c2ggdC5sb2dfZm9ybSAoKSBpblxuICAgICBsZXQgKCkgPSBCdWZmZXIucmVzZXQgdC5sb2dfYnVmZmVyIGluKilcbiAgdC5pc19ydW5uaW5nIDwtIGZhbHNlO1xuICB0LnJ1bl9maW5hbGl6ZSA8LSBmYWxzZTtcbiAgdC5wYXVzZV9jb25kaXRpb24gPC0gQWxnX2V4cHIuRkFMU0U7XG4gIHQucGxvdCA8LSBEYXRhLmluaXRfcGxvdCB0LmVudjtcbiAgdC5zbmFwc2hvdHMgPC0gTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gIHQuZGlucyA8LSBbXTtcbiAgdC5maWxlcyA8LSBNb2RzLlN0cmluZ01hcC5lbXB0eTtcbiAgdC5lcnJvcl9tZXNzYWdlcyA8LSBbXTtcbiAgdC5ncmFwaCA8LVxuICAgIFJ1bGVfaW50ZXJwcmV0ZXIuZW1wdHkgfm91dHB1dHMgfndpdGhfdHJhY2U6ZmFsc2UgcmFuZG9tX3N0YXRlIHQuZW52XG4gICAgICB0LmNvdW50ZXI7XG4gIHQuc3RhdGUgPC1cbiAgICBTdGF0ZV9pbnRlcnByZXRlci5lbXB0eSB+d2l0aF9kZWx0YV9hY3Rpdml0aWVzOmZhbHNlIHQuY291bnRlciB0LmVudlxuXG5sZXQgY2F0Y2hfZXJyb3IgaGFuZGxlciA9IGZ1bmN0aW9uXG4gIHwgRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKChtZXNzYWdlLCByYW5nZSkgOiBzdHJpbmcgTG9jLmFubm90ZWQpIC0+XG4gICAgaGFuZGxlciAoQXBpX2NvbW1vbi5lcnJvcl9tc2cgfnJhbmdlIG1lc3NhZ2UpXG4gIHwgRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAoKG1lc3NhZ2UsIHJhbmdlKSA6IHN0cmluZyBMb2MuYW5ub3RlZCkgLT5cbiAgICBoYW5kbGVyIChBcGlfY29tbW9uLmVycm9yX21zZyB+cmFuZ2UgbWVzc2FnZSlcbiAgfCBFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yICgobWVzc2FnZSwgcmFuZ2UpIDogc3RyaW5nIExvYy5hbm5vdGVkKSAtPlxuICAgIGhhbmRsZXIgKEFwaV9jb21tb24uZXJyb3JfbXNnIH5yYW5nZSBtZXNzYWdlKVxuICB8IEludmFsaWRfYXJndW1lbnQgZXJyb3IgLT5cbiAgICBoYW5kbGVyIChBcGlfY29tbW9uLmVycm9yX21zZyAoXCJSdW50aW1lIGVycm9yIFwiIF4gZXJyb3IpKVxuICB8IGV4biAtPlxuICAgIGxldCBtZXNzYWdlID1cbiAgICAgIHRyeSBQcmludGV4Yy50b19zdHJpbmcgZXhuIHdpdGggXyAtPiBcInVuc3BlY2lmaWVkIGV4Y2VwdGlvbiB0aHJvd25cIlxuICAgIGluXG4gICAgaGFuZGxlciAoQXBpX2NvbW1vbi5lcnJvcl9tc2cgbWVzc2FnZSlcblxubGV0IHBhcnNlIH5wYXR0ZXJuU2hhcmluZyAoYXN0IDogQXN0LnBhcnNpbmdfY29tcGlsKSB2YXJfb3ZlcndyaXRlXG4gICAgc3lzdGVtX3Byb2Nlc3MgPVxuICBsZXQgeWllbGQgPSBzeXN0ZW1fcHJvY2VzcyN5aWVsZCBpblxuICBsZXQgbG9nX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgNTEyIGluXG4gIGxldCBsb2dfZm9ybSA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGxvZ19idWZmZXIgaW5cbiAgbGV0IGlucHV0c19idWZmZXIgPSBCdWZmZXIuY3JlYXRlIDUxMiBpblxuICBsZXQgaW5wdXRzX2Zvcm0gPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBpbnB1dHNfYnVmZmVyIGluXG4gIGxldCBjb25mLCBfLCBfLCBfID0gQ29uZmlndXJhdGlvbi5wYXJzZSBhc3QuQXN0LmNvbmZpZ3VyYXRpb25zIGluXG4gIGxldCB3YXJuaW5nIH5wb3MgbXNnID0gRGF0YS5wcmludF93YXJuaW5nIH5wb3MgbG9nX2Zvcm0gbXNnIGluXG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIEx3dC53cmFwMlxuICAgICAgICAoZnVuIHZhcl9vdmVyd3JpdGUgLT5cbiAgICAgICAgICBMS2FwcGFfY29tcGlsZXIuY29tcGlsX29mX2FzdCB+d2FybmluZyB+ZGVidWdfbW9kZTpmYWxzZVxuICAgICAgICAgICAgfnN5bnRheF92ZXJzaW9uOkFzdC5WNCB+dmFyX292ZXJ3cml0ZSlcbiAgICAgICAgdmFyX292ZXJ3cml0ZSBhc3RcbiAgICAgID4+PSBmdW4gKGFzdF9jb21waWxlZF9kYXRhIDogTEthcHBhX2NvbXBpbGVyLmFzdF9jb21waWxlZF9kYXRhKSAtPlxuICAgICAgeWllbGQgKCkgPj49IGZ1biAoKSAtPlxuICAgICAgKCogVGhlIGxhc3QgeWllbGQgaXMgdXBkYXRlZCBhZnRlciB0aGUgbGFzdCB5aWVsZC5cbiAgICAgICAgIEl0IGlzIGdvdHRlbiBoZXJlIGZvciB0aGUgaW5pdGlhbCBsYXN0IHllaWxkIHZhbHVlLiAqKVxuICAgICAgbGV0IGxhc3R5aWVsZCA9IFN5cy50aW1lICgpIGluXG4gICAgICB0cnlcbiAgICAgICAgKCogZXhjZXB0aW9uIHJhaXNlZCBieSBjb21waWxlIG11c3QgaGF2ZSB1c2VkIEx3dC5mYWlsLlxuICAgICAgICAgICBTb21ldGhpbmcgaXMgd3JvbmcgZm9yIG5vdyAqKVxuICAgICAgICBsZXQgb3V0cHV0cyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBEYXRhLkxvZyBzIC0+IEZvcm1hdC5mcHJpbnRmIGxvZ19mb3JtIFwiJXNALlwiIHNcbiAgICAgICAgICB8IERhdGEuV2FybmluZyAocG9zLCBtc2cpIC0+IERhdGEucHJpbnRfd2FybmluZyA/cG9zIGxvZ19mb3JtIG1zZ1xuICAgICAgICAgIHwgRGF0YS5TbmFwc2hvdCBfIHwgRGF0YS5ESU4gXyB8IERhdGEuU3BlY2llcyBfXG4gICAgICAgICAgfCBEYXRhLkRlbHRhQWN0aXZpdGllcyBfIHwgRGF0YS5QbG90IF8gfCBEYXRhLlRyYWNlU3RlcCBfXG4gICAgICAgICAgfCBEYXRhLlByaW50IF8gLT5cbiAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBFdmFsLmNvbXBpbGUgfmRlYnVnX21vZGU6ZmFsc2VcbiAgICAgICAgICB+cGF1c2U6KGZ1biBmIC0+IEx3dC5iaW5kICh5aWVsZCAoKSkgZilcbiAgICAgICAgICB+cmV0dXJuOkx3dC5yZXR1cm4gP3Jlc2NhbGVfaW5pdDpOb25lID9vdmVyd3JpdGVfdDA6Tm9uZVxuICAgICAgICAgIH5jb21waWxlX21vZGVfb246ZmFsc2Ugfm91dHB1dHMgfnNoYXJpbmc6cGF0dGVyblNoYXJpbmdcbiAgICAgICAgICBhc3RfY29tcGlsZWRfZGF0YS5hZ2VudHNfc2lnIGFzdF9jb21waWxlZF9kYXRhLnRva2VuX25hbWVzXG4gICAgICAgICAgYXN0X2NvbXBpbGVkX2RhdGEuY29udGFjdF9tYXAgYXN0X2NvbXBpbGVkX2RhdGEucmVzdWx0XG4gICAgICAgID4+PSBmdW4gKGVudiwgd2l0aF90cmFjZSwgaW5pdF9sKSAtPlxuICAgICAgICBsZXQgY291bnRlciA9XG4gICAgICAgICAgQ291bnRlci5jcmVhdGVcbiAgICAgICAgICAgIH5pbml0X3Q6KDAuIDogZmxvYXQpXG4gICAgICAgICAgICB+aW5pdF9lOigwIDogaW50KVxuICAgICAgICAgICAgP21heF90aW1lOk5vbmUgP21heF9ldmVudDpOb25lIH5wbG90X3BlcmlvZDooQ29uZmlndXJhdGlvbi5EVCAxLilcbiAgICAgICAgICAgIH5uYl9ydWxlczooTW9kZWwubmJfcnVsZXMgZW52KSAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgdGhlU2VlZCA9XG4gICAgICAgICAgbWF0Y2ggY29uZi5Db25maWd1cmF0aW9uLnNlZWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUmFuZG9tLnNlbGZfaW5pdCAoKSBpblxuICAgICAgICAgICAgbGV0IG91dCA9IFJhbmRvbS5iaXRzICgpIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dfZm9ybSBcIlJhbmRvbSBzZWVkIHVzZWQ6ICVpQC5cIiBvdXQgaW5cbiAgICAgICAgICAgIG91dFxuICAgICAgICAgIHwgU29tZSB0aGVTZWVkIC0+IHRoZVNlZWRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5tYWtlIFt8IHRoZVNlZWQgfF0gaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBEYXRhLnByaW50X2luaXRpYWxfaW5wdXRzID91dWlkOk5vbmVcbiAgICAgICAgICAgIHsgY29uZiB3aXRoIENvbmZpZ3VyYXRpb24uc2VlZCA9IFNvbWUgdGhlU2VlZCB9XG4gICAgICAgICAgICBlbnYgaW5wdXRzX2Zvcm0gaW5pdF9sXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzaW11bGF0aW9uID1cbiAgICAgICAgICBjcmVhdGVfdCB+Y29udGFjdF9tYXA6YXN0X2NvbXBpbGVkX2RhdGEuY29udGFjdF9tYXAgfmxvZ19mb3JtXG4gICAgICAgICAgICB+bG9nX2J1ZmZlciB+aW5wdXRzX2J1ZmZlciB+aW5wdXRzX2Zvcm0gfmFzdCB+ZW52IH5jb3VudGVyXG4gICAgICAgICAgICB+ZHVtcElmRGVhZGxvY2tlZDpjb25mLkNvbmZpZ3VyYXRpb24uZHVtcElmRGVhZGxvY2tlZFxuICAgICAgICAgICAgfm1heENvbnNlY3V0aXZlQ2xhc2g6Y29uZi5Db25maWd1cmF0aW9uLm1heENvbnNlY3V0aXZlQ2xhc2hcbiAgICAgICAgICAgIH5wYXR0ZXJuU2hhcmluZ1xuICAgICAgICAgICAgfmdyYXBoOlxuICAgICAgICAgICAgICAoUnVsZV9pbnRlcnByZXRlci5lbXB0eSB+b3V0cHV0cyB+d2l0aF90cmFjZSByYW5kb21fc3RhdGUgZW52XG4gICAgICAgICAgICAgICAgIGNvdW50ZXIpXG4gICAgICAgICAgICB+c3RhdGU6XG4gICAgICAgICAgICAgIChTdGF0ZV9pbnRlcnByZXRlci5lbXB0eSB+d2l0aF9kZWx0YV9hY3Rpdml0aWVzOmZhbHNlIGNvdW50ZXIgZW52KVxuICAgICAgICAgICAgfmluaXRfbCB+bGFzdHlpZWxkXG4gICAgICAgIGluXG4gICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHNpbXVsYXRpb24pXG4gICAgICB3aXRoIGUgLT5cbiAgICAgICAgKGNhdGNoX2Vycm9yIChmdW4geCAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBbIHggXSkpKSBlKVxuICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyBlIF0pKSlcblxubGV0IG91dHB1dHMgKHNpbXVsYXRpb24gOiB0KSA9IGZ1bmN0aW9uXG4gIHwgRGF0YS5ESU4gKGZsdXhfbmFtZSwgZmx1eF9tYXApIC0+XG4gICAgc2ltdWxhdGlvbi5kaW5zIDwtIChmbHV4X25hbWUsIGZsdXhfbWFwKSA6OiBzaW11bGF0aW9uLmRpbnNcbiAgfCBEYXRhLkRlbHRhQWN0aXZpdGllcyBfIC0+IGFzc2VydCBmYWxzZVxuICB8IERhdGEuUGxvdCBuZXdfb2JzZXJ2YWJsZXMgLT5cbiAgICBzaW11bGF0aW9uLnBsb3QgPC0gRGF0YS5hZGRfcGxvdF9saW5lIG5ld19vYnNlcnZhYmxlcyBzaW11bGF0aW9uLnBsb3RcbiAgfCBEYXRhLlNwZWNpZXMgKGZpbGUsIHRpbWUsIG1peCkgLT5cbiAgICBsZXQgcCA9IE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBbXSBmaWxlIHNpbXVsYXRpb24uc3BlY2llcyBpblxuICAgIHNpbXVsYXRpb24uc3BlY2llcyA8LVxuICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkIGZpbGUgKCh0aW1lLCBtaXgpIDo6IHApIHNpbXVsYXRpb24uc3BlY2llc1xuICB8IERhdGEuUHJpbnQgZmlsZV9saW5lIC0+XG4gICAgKG1hdGNoIGZpbGVfbGluZS5EYXRhLmZpbGVfbGluZV9uYW1lIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHNpbXVsYXRpb24ubG9nX2Zvcm0gXCIlc0AuXCIgZmlsZV9saW5lLkRhdGEuZmlsZV9saW5lX3RleHRcbiAgICB8IFNvbWUgbmEgLT5cbiAgICAgIGxldCBsaW5lcyA9IE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBbXSBuYSBzaW11bGF0aW9uLmZpbGVzIGluXG4gICAgICBzaW11bGF0aW9uLmZpbGVzIDwtXG4gICAgICAgIE1vZHMuU3RyaW5nTWFwLmFkZCBuYVxuICAgICAgICAgIChmaWxlX2xpbmUuRGF0YS5maWxlX2xpbmVfdGV4dCA6OiBsaW5lcylcbiAgICAgICAgICBzaW11bGF0aW9uLmZpbGVzKVxuICB8IERhdGEuU25hcHNob3QgKGZpbGVuYW1lLCBzbmFwc2hvdCkgLT5cbiAgICBsZXQgYWxyZWFkeV90aGVyZSB4ID0gTW9kcy5TdHJpbmdNYXAubWVtIHggc2ltdWxhdGlvbi5zbmFwc2hvdHMgaW5cbiAgICBsZXQgc25hcHNob3RfZmlsZSA9XG4gICAgICBUb29scy5maW5kX2F2YWlsYWJsZV9uYW1lIH5hbHJlYWR5X3RoZXJlIGZpbGVuYW1lXG4gICAgICAgIH5mYWN1bHRhdGl2ZTooc3RyaW5nX29mX2ludCBzbmFwc2hvdC5EYXRhLnNuYXBzaG90X2V2ZW50KVxuICAgICAgICB+ZXh0Ok5vbmVcbiAgICBpblxuICAgIHNpbXVsYXRpb24uc25hcHNob3RzIDwtXG4gICAgICBNb2RzLlN0cmluZ01hcC5hZGQgc25hcHNob3RfZmlsZSBzbmFwc2hvdCBzaW11bGF0aW9uLnNuYXBzaG90c1xuICB8IERhdGEuTG9nIHMgLT4gRm9ybWF0LmZwcmludGYgc2ltdWxhdGlvbi5sb2dfZm9ybSBcIiVzQC5cIiBzXG4gIHwgRGF0YS5XYXJuaW5nIChwb3MsIG1zZykgLT4gRGF0YS5wcmludF93YXJuaW5nID9wb3Mgc2ltdWxhdGlvbi5sb2dfZm9ybSBtc2dcbiAgfCBEYXRhLlRyYWNlU3RlcCBzdCAtPlxuICAgIGlmIEJ1ZmZlci5sZW5ndGggc2ltdWxhdGlvbi50cmFjZSA8PiAwIHRoZW4gKFxuICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIHNpbXVsYXRpb24udHJhY2UgJywnIGluXG4gICAgICBUcmFjZS53cml0ZV9zdGVwIHNpbXVsYXRpb24udHJhY2Ugc3RcbiAgICApXG5cbmxldCBpbnRlcmFjdGl2ZV9vdXRwdXRzIGZvcm1hdHRlciB0ID0gZnVuY3Rpb25cbiAgfCBEYXRhLkxvZyBzIC0+IEZvcm1hdC5mcHJpbnRmIGZvcm1hdHRlciBcIiVzQC5cIiBzXG4gIHwgRGF0YS5XYXJuaW5nIChwb3MsIG1zZykgLT4gRGF0YS5wcmludF93YXJuaW5nID9wb3MgZm9ybWF0dGVyIG1zZ1xuICB8IERhdGEuUHJpbnQgZmlsZV9saW5lIHdoZW4gZmlsZV9saW5lLkRhdGEuZmlsZV9saW5lX25hbWUgPSBOb25lIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm9ybWF0dGVyIFwiJXNALlwiIGZpbGVfbGluZS5EYXRhLmZpbGVfbGluZV90ZXh0XG4gIHwgKCBEYXRhLkRJTiBfIHwgRGF0YS5EZWx0YUFjdGl2aXRpZXMgXyB8IERhdGEuUGxvdCBfIHwgRGF0YS5TcGVjaWVzIF9cbiAgICB8IERhdGEuUHJpbnQgXyB8IERhdGEuU25hcHNob3QgXyB8IERhdGEuVHJhY2VTdGVwIF8gKSBhcyB2IC0+XG4gICAgb3V0cHV0cyB0IHZcblxubGV0IHRpbWVfeWllbGQgfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKSB+KHQgOiB0KSA6IHVuaXQgTHd0LnQgPVxuICBsZXQgdGltZSA9IFN5cy50aW1lICgpIGluXG4gIGlmIHRpbWUgLS4gdC5sYXN0eWllbGQgPiBzeXN0ZW1fcHJvY2VzcyNtaW5fcnVuX2R1cmF0aW9uICgpIHRoZW4gKFxuICAgIGxldCAoKSA9IHQubGFzdHlpZWxkIDwtIHRpbWUgaW5cbiAgICBzeXN0ZW1fcHJvY2VzcyN5aWVsZCAoKVxuICApIGVsc2VcbiAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IGZpbmFsaXplX3NpbXVsYXRpb24gfih0IDogdCkgOiB1bml0ID1cbiAgU3RhdGVfaW50ZXJwcmV0ZXIuZW5kX29mX3NpbXVsYXRpb24gfm91dHB1dHM6KG91dHB1dHMgdCkgdC5lbnYgdC5jb3VudGVyXG4gICAgdC5ncmFwaCB0LnN0YXRlXG5cbmxldCBydW5fc2ltdWxhdGlvbiB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpIHN0b3BwZWQgOlxuICAgIHVuaXQgTHd0LnQgPVxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBsZXQgcnN0b3AgPSByZWYgc3RvcHBlZCBpblxuICAgICAgbGV0ICgpID0gdC5pc19ydW5uaW5nIDwtIHRydWUgaW5cbiAgICAgIGxldCByZWMgaXRlciAoKSA9XG4gICAgICAgICh0cnlcbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICB3aGlsZVxuICAgICAgICAgICAgICAgKG5vdCAhcnN0b3ApXG4gICAgICAgICAgICAgICAmJiBTeXMudGltZSAoKSAtLiB0Lmxhc3R5aWVsZFxuICAgICAgICAgICAgICAgICAgPCBzeXN0ZW1fcHJvY2VzcyNtaW5fcnVuX2R1cmF0aW9uICgpXG4gICAgICAgICAgICAgZG9cbiAgICAgICAgICAgICAgIGxldCBzdG9wLCBncmFwaCcsIHN0YXRlJyA9XG4gICAgICAgICAgICAgICAgIFN0YXRlX2ludGVycHJldGVyLmFfbG9vcCB+ZGVidWdfbW9kZTpmYWxzZSB+b3V0cHV0czoob3V0cHV0cyB0KVxuICAgICAgICAgICAgICAgICAgIH5kdW1wSWZEZWFkbG9ja2VkOnQuZHVtcElmRGVhZGxvY2tlZFxuICAgICAgICAgICAgICAgICAgIH5tYXhDb25zZWN1dGl2ZUNsYXNoOnQubWF4Q29uc2VjdXRpdmVDbGFzaCB0LmVudiB0LmNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICB0LmdyYXBoIHQuc3RhdGVcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICByc3RvcCA6PVxuICAgICAgICAgICAgICAgICBzdG9wXG4gICAgICAgICAgICAgICAgIHx8IFJ1bGVfaW50ZXJwcmV0ZXIudmFsdWVfYm9vbCB0LmNvdW50ZXIgZ3JhcGgnXG4gICAgICAgICAgICAgICAgICAgICAgdC5wYXVzZV9jb25kaXRpb247XG4gICAgICAgICAgICAgICB0LmdyYXBoIDwtIGdyYXBoJztcbiAgICAgICAgICAgICAgIHQuc3RhdGUgPC0gc3RhdGUnXG4gICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICBpblxuICAgICAgICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICAgICAgIHdpdGggZSAtPiBMd3QuZmFpbCBlKVxuICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgIGlmICFyc3RvcCB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPSB0LmlzX3J1bm5pbmcgPC0gZmFsc2UgaW5cbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICAgICAgKSBlbHNlIGlmIHQuaXNfcnVubmluZyB0aGVuXG4gICAgICAgICAgc3lzdGVtX3Byb2Nlc3MjeWllbGQgKCkgPj49IGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAoKSA9IHQubGFzdHlpZWxkIDwtIFN5cy50aW1lICgpIGluXG4gICAgICAgICAgaXRlciAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTHd0LnJldHVybl91bml0XG4gICAgICBpblxuICAgICAgaXRlciAoKSA+Pj0gZnVuICgpIC0+XG4gICAgICBsZXQgKCkgPSBpZiB0LnJ1bl9maW5hbGl6ZSB0aGVuIGZpbmFsaXplX3NpbXVsYXRpb24gfnQgaW5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdClcbiAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+XG4gICAgICAgICBsZXQgKCkgPSB0LmlzX3J1bm5pbmcgPC0gZmFsc2UgaW5cbiAgICAgICAgIGxldCAoKSA9IHQuZXJyb3JfbWVzc2FnZXMgPC0gWyBlIF0gaW5cbiAgICAgICAgIEx3dC5yZXR1cm5fdW5pdCkpXG5cbmxldCBzdGFydCB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpXG4gICAgfihwYXJhbWV0ZXIgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlcikgfih0IDogdCkgOlxuICAgICh1bml0LCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnQgPVxuICBsZXQgbGV4YnVmID1cbiAgICBMZXhpbmcuZnJvbV9zdHJpbmcgcGFyYW1ldGVyLkFwaV90eXBlc190LnNpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uXG4gIGluXG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT5cbiAgICAgICgqbGV0ICgpID1cbiAgICAgICAgICBDb3VudGVyLnNldF9tYXhfdGltZVxuICAgICAgICAgICAgICAgICB0LmNvdW50ZXJcbiAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLkFwaV90eXBlc19qLnNpbXVsYXRpb25fbWF4X3RpbWVcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgQ291bnRlci5zZXRfbWF4X2V2ZW50c1xuICAgICAgICAgICAgICAgICB0LmNvdW50ZXJcbiAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLkFwaV90eXBlc19qLnNpbXVsYXRpb25fbWF4X2V2ZW50c1xuICAgICAgICAgICAgICAgaW4qKVxuICAgICAgbGV0IHJhbmRvbV9zdGF0ZSA9XG4gICAgICAgIG1hdGNoIHBhcmFtZXRlci5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX3NlZWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpXG4gICAgICAgIHwgU29tZSBzZWVkIC0+IFJhbmRvbS5TdGF0ZS5tYWtlIFt8IHNlZWQgfF1cbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSByZWluaXRpYWxpemUgcmFuZG9tX3N0YXRlIH5vdXRwdXRzOihvdXRwdXRzIHQpIHQgaW5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgcGF1c2UgPSBLcGFyc2VyNC5zdGFuZGFsb25lX2Jvb2xfZXhwciBLbGV4ZXI0LnRva2VuIGxleGJ1ZiBpblxuICAgICAgICBMd3Qud3JhcDRcbiAgICAgICAgICAoRXZhbHVhdG9yLmdldF9wYXVzZV9jcml0ZXJpYSB+ZGVidWdfbW9kZTpmYWxzZSB+b3V0cHV0czoob3V0cHV0cyB0KVxuICAgICAgICAgICAgIH5zaGFyaW5nOnQucGF0dGVyblNoYXJpbmcgfnN5bnRheF92ZXJzaW9uOkFzdC5WNClcbiAgICAgICAgICB0LmNvbnRhY3RfbWFwIHQuZW52IHQuZ3JhcGggcGF1c2VcbiAgICAgICAgPj49IGZ1biAoZW52JywgZ3JhcGgnLCBiJycpIC0+XG4gICAgICAgIGxldCAoKSA9IHQuZW52IDwtIGVudicgaW5cbiAgICAgICAgbGV0ICgpID0gdC5ncmFwaCA8LSBncmFwaCcgaW5cbiAgICAgICAgbGV0ICgpID0gdC5wYXVzZV9jb25kaXRpb24gPC0gYicnIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgQ291bnRlci5zZXRfcGxvdF9wZXJpb2QgdC5jb3VudGVyXG4gICAgICAgICAgICAoQ29uZmlndXJhdGlvbi5EVCBwYXJhbWV0ZXIuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wbG90X3BlcmlvZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMd3QuYXN5bmMgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAoKiBleGNlcHRpb24gcmFpc2VkIGJ5IGJ1aWxkX2luaXRpYWxfc3RhdGUgbXVzdCBoYXZlIGJlZW5cbiAgICAgICAgICAgICAgICAgICByYWlzZWQgd2l0aCBMd3QuZmFpbC4gU29tZXRoaW5nIGlzIHdyb25nIGZvciBub3cuLi4gKilcbiAgICAgICAgICAgICAgICBFdmFsLmJ1aWxkX2luaXRpYWxfc3RhdGVcbiAgICAgICAgICAgICAgICAgIH5iaW5kOihmdW4geCBmIC0+XG4gICAgICAgICAgICAgICAgICAgIHRpbWVfeWllbGQgfnN5c3RlbV9wcm9jZXNzIH50ID4+PSBmdW4gKCkgLT4geCA+Pj0gZilcbiAgICAgICAgICAgICAgICAgIH5yZXR1cm46THd0LnJldHVybiB+ZGVidWdfbW9kZTpmYWxzZSB+b3V0cHV0czoob3V0cHV0cyB0KVxuICAgICAgICAgICAgICAgICAgfndpdGhfdHJhY2U6cGFyYW1ldGVyLkFwaV90eXBlc190LnNpbXVsYXRpb25fc3RvcmVfdHJhY2VcbiAgICAgICAgICAgICAgICAgIH53aXRoX2RlbHRhX2FjdGl2aXRpZXM6ZmFsc2UgdC5jb3VudGVyIHQuZW52IHJhbmRvbV9zdGF0ZVxuICAgICAgICAgICAgICAgICAgdC5pbml0X2xcbiAgICAgICAgICAgICAgICA+Pj0gZnVuIChzdG9wLCBncmFwaCwgc3RhdGUpIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIHQuZ3JhcGggPC0gZ3JhcGg7XG4gICAgICAgICAgICAgICAgICB0LnN0YXRlIDwtIHN0YXRlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZmlyc3Rfb2JzID1cbiAgICAgICAgICAgICAgICAgIFN0YXRlX2ludGVycHJldGVyLm9ic2VydmFibGVzX3ZhbHVlcyB0LmVudiBncmFwaCB0LmNvdW50ZXJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IHQucGxvdCA8LSBEYXRhLmFkZF9wbG90X2xpbmUgZmlyc3Rfb2JzIHQucGxvdCBpblxuICAgICAgICAgICAgICAgIHJ1bl9zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2VzcyB+dCBzdG9wXG4gICAgICAgICAgICAgIHdpdGggZSAtPlxuICAgICAgICAgICAgICAgIGNhdGNoX2Vycm9yXG4gICAgICAgICAgICAgICAgICAoZnVuIGUgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gdC5lcnJvcl9tZXNzYWdlcyA8LSBbIGUgXSBpblxuICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG4gICAgICAgICAgICAgICAgICBlKVxuICAgICAgICBpblxuICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgIHdpdGggRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKG1lc3NhZ2UsIHJhbmdlKSAtPlxuICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJhbmdlIG1lc3NhZ2UpKVxuICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT5cbiAgICAgICAgIGxldCAoKSA9IHQuZXJyb3JfbWVzc2FnZXMgPC0gWyBlIF0gaW5cbiAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgZSBdKSkpXG5cbmxldCBwYXVzZSB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpIDpcbiAgICAodW5pdCwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC50ID1cbiAgbGV0ICgpID0gaWdub3JlIHN5c3RlbV9wcm9jZXNzIGluXG4gIGxldCAoKSA9IGlnbm9yZSB0IGluXG4gIGxldCAoKSA9XG4gICAgaWYgdC5pc19ydW5uaW5nIHRoZW5cbiAgICAgIHQuaXNfcnVubmluZyA8LSBmYWxzZVxuICAgIGVsc2VcbiAgICAgICgpXG4gIGluXG4gIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuXG5sZXQgc3RvcCB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpIDpcbiAgICAodW5pdCwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC50ID1cbiAgbGV0ICgpID0gaWdub3JlIHN5c3RlbV9wcm9jZXNzIGluXG4gIGxldCAoKSA9IGlnbm9yZSB0IGluXG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIGxldCAoKSA9IHQucnVuX2ZpbmFsaXplIDwtIHRydWUgaW5cbiAgICAgIGlmIHQuaXNfcnVubmluZyB0aGVuXG4gICAgICAgIHBhdXNlIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9IGZpbmFsaXplX3NpbXVsYXRpb24gfnQgaW5cbiAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICApKVxuICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyBlIF0pKSlcblxubGV0IHBlcnR1cmJhdGlvbiB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpXG4gICAgfihwZXJ0dXJiYXRpb24gOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2ludGVydmVudGlvbikgOlxuICAgIChzdHJpbmcsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudCA9XG4gIGxldCAoKSA9IGlnbm9yZSBzeXN0ZW1fcHJvY2VzcyBpblxuICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHBlcnR1cmJhdGlvbiBpblxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBpZiB0LmlzX3J1bm5pbmcgdGhlblxuICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgbXNnX3Byb2Nlc3Nfbm90X3BhdXNlZClcbiAgICAgIGVsc2UgKFxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgZSA9IEtwYXJzZXI0LnN0YW5kYWxvbmVfZWZmZWN0X2xpc3QgS2xleGVyNC50b2tlbiBsZXhidWYgaW5cbiAgICAgICAgICBsZXQgbG9nX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgNTEyIGluXG4gICAgICAgICAgbGV0IGxvZ19mb3JtID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgbG9nX2J1ZmZlciBpblxuICAgICAgICAgIEx3dC53cmFwNlxuICAgICAgICAgICAgKEV2YWx1YXRvci5kb19pbnRlcmFjdGl2ZV9kaXJlY3RpdmVzIH5kZWJ1Z19tb2RlOmZhbHNlXG4gICAgICAgICAgICAgICB+b3V0cHV0czooaW50ZXJhY3RpdmVfb3V0cHV0cyBsb2dfZm9ybSB0KVxuICAgICAgICAgICAgICAgfnNoYXJpbmc6dC5wYXR0ZXJuU2hhcmluZyB+c3ludGF4X3ZlcnNpb246QXN0LlY0KVxuICAgICAgICAgICAgdC5jb250YWN0X21hcCB0LmVudiB0LmNvdW50ZXIgdC5ncmFwaCB0LnN0YXRlIGVcbiAgICAgICAgICA+Pj0gZnVuIChlJywgKGVudicsIChfLCBncmFwaCcnLCBzdGF0ZScpKSkgLT5cbiAgICAgICAgICBsZXQgKCkgPSB0LmVudiA8LSBlbnYnIGluXG4gICAgICAgICAgbGV0ICgpID0gdC5ncmFwaCA8LSBncmFwaCcnIGluXG4gICAgICAgICAgbGV0ICgpID0gdC5zdGF0ZSA8LSBzdGF0ZScgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgdC5sb2dfZm9ybSBcIiUlbW9kOiBbRV0gPSAlaSBkbyAlYUAuXCJcbiAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF9ldmVudCB0LmNvdW50ZXIpXG4gICAgICAgICAgICAgIChQcC5saXN0IH50cmFpbGluZzpQcC5jb2xvbiBQcC5jb2xvblxuICAgICAgICAgICAgICAgICAoS2FwcGFfcHJpbnRlci5tb2RpZmljYXRpb24gfm5vQ291bnRlcnM6ZmFsc2UgfmVudjp0LmVudikpXG4gICAgICAgICAgICAgIGUnXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgdC5pbnB1dHNfZm9ybSBcIiUlbW9kOiBbRV0gPSAlaSBkbyAlYUAuXCJcbiAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF9ldmVudCB0LmNvdW50ZXIpXG4gICAgICAgICAgICAgIChQcC5saXN0IH50cmFpbGluZzpQcC5jb2xvbiBQcC5jb2xvblxuICAgICAgICAgICAgICAgICAoS2FwcGFfcHJpbnRlci5tb2RpZmljYXRpb24gfm5vQ291bnRlcnM6ZmFsc2UgfmVudjp0LmVudikpXG4gICAgICAgICAgICAgIGUnXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoQnVmZmVyLmNvbnRlbnRzIGxvZ19idWZmZXIpKVxuICAgICAgICB3aXRoIEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChtZXNzYWdlLCByYW5nZSkgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJhbmdlIG1lc3NhZ2UpXG4gICAgICApKVxuICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyBlIF0pKSlcblxubGV0IGNvbnRpbnVlIH4oc3lzdGVtX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2Vzcykgfih0IDogdClcbiAgICB+KHBhdXNlX2NvbmRpdGlvbiA6IHN0cmluZykgOlxuICAgICh1bml0LCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnQgPVxuICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHBhdXNlX2NvbmRpdGlvbiBpblxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBpZiB0LmlzX3J1bm5pbmcgdGhlblxuICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgIGVsc2UgKFxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgcGF1c2UgPSBLcGFyc2VyNC5zdGFuZGFsb25lX2Jvb2xfZXhwciBLbGV4ZXI0LnRva2VuIGxleGJ1ZiBpblxuICAgICAgICAgIEx3dC53cmFwNFxuICAgICAgICAgICAgKEV2YWx1YXRvci5nZXRfcGF1c2VfY3JpdGVyaWEgfmRlYnVnX21vZGU6ZmFsc2Ugfm91dHB1dHM6KG91dHB1dHMgdClcbiAgICAgICAgICAgICAgIH5zaGFyaW5nOnQucGF0dGVyblNoYXJpbmcgfnN5bnRheF92ZXJzaW9uOkFzdC5WNClcbiAgICAgICAgICAgIHQuY29udGFjdF9tYXAgdC5lbnYgdC5ncmFwaCBwYXVzZVxuICAgICAgICAgID4+PSBmdW4gKGVudicsIGdyYXBoJywgYicnKSAtPlxuICAgICAgICAgIGxldCAoKSA9IHQuZW52IDwtIGVudicgaW5cbiAgICAgICAgICBsZXQgKCkgPSB0LmdyYXBoIDwtIGdyYXBoJyBpblxuICAgICAgICAgIGxldCAoKSA9IHQucGF1c2VfY29uZGl0aW9uIDwtIGInJyBpblxuICAgICAgICAgICgqbGV0ICgpID1cbiAgICAgICAgICAgIENvdW50ZXIuc2V0X21heF90aW1lXG4gICAgICAgICAgICB0LmNvdW50ZXJcbiAgICAgICAgICAgIHBhcmFtZXRlci5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX21heF90aW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIENvdW50ZXIuc2V0X21heF9ldmVudHNcbiAgICAgICAgICAgIHQuY291bnRlclxuICAgICAgICAgICAgcGFyYW1ldGVyLkFwaV90eXBlc190LnNpbXVsYXRpb25fbWF4X2V2ZW50c1xuICAgICAgICAgICAgaW4qKVxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMd3QuYXN5bmMgKGZ1biAoKSAtPiBydW5fc2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3MgfnQgZmFsc2UpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgd2l0aCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAobWVzc2FnZSwgcmFuZ2UpIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yYW5nZSBtZXNzYWdlKVxuICAgICAgKSlcbiAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgZSBdKSkpXG5cbmxldCBwcm9ncmVzcyB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpIDpcbiAgICAoQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzcywgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50XG4gICAgTHd0LnQgPVxuICBsZXQgKCkgPSBpZ25vcmUgc3lzdGVtX3Byb2Nlc3MgaW5cbiAgbGV0ICgpID0gaWdub3JlIHQgaW5cbiAgbWF0Y2ggdC5lcnJvcl9tZXNzYWdlcyB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QuY2F0Y2hcbiAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgIChSZXN1bHRfdXRpbC5va1xuICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSA9XG4gICAgICAgICAgICAgICAgIENvdW50ZXIuY3VycmVudF90aW1lIHQuY291bnRlcjtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlID1cbiAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAgKGZ1biB4IC0+IGludF9vZl9mbG9hdCAoeCAqLiAxMDAuKSlcbiAgICAgICAgICAgICAgICAgICAoQ291bnRlci50aW1lX3JhdGlvIHQuY291bnRlcik7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50ID1cbiAgICAgICAgICAgICAgICAgQ291bnRlci5jdXJyZW50X2V2ZW50IHQuY291bnRlcjtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZSA9XG4gICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgICAgICAgIChmdW4geCAtPiBpbnRfb2ZfZmxvYXQgKHggKi4gMTAwLikpXG4gICAgICAgICAgICAgICAgICAgKENvdW50ZXIuZXZlbnRfcmF0aW8gdC5jb3VudGVyKTtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMgPVxuICAgICAgICAgICAgICAgICBDb3VudGVyLnRyYWNrZWRfZXZlbnRzIHQuY291bnRlcjtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZyA9IHQuaXNfcnVubmluZztcbiAgICAgICAgICAgICB9KSlcbiAgICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyBlIF0pKSlcbiAgfCBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIHQuZXJyb3JfbWVzc2FnZXMpXG5cbmxldCBvdXRwdXRzIH4oc3lzdGVtX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2Vzcykgfih0IDogdCkgOlxuICAgIChBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudFxuICAgIEx3dC50ID1cbiAgbGV0ICgpID0gaWdub3JlIHN5c3RlbV9wcm9jZXNzIGluXG4gIGxldCAoKSA9IGlnbm9yZSB0IGluXG4gIG1hdGNoIHQuZXJyb3JfbWVzc2FnZXMgd2l0aFxuICB8IFtdIC0+XG4gICAgTHd0LmNhdGNoXG4gICAgICAoZnVuICgpIC0+XG4gICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAoUmVzdWx0X3V0aWwub2tcbiAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9wbG90ID0gU29tZSB0LnBsb3Q7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9kaW5zID0gdC5kaW5zO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyA9IHQuZmlsZXM7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgPSB0LnNuYXBzaG90cztcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA9XG4gICAgICAgICAgICAgICAgIEJ1ZmZlci5jb250ZW50cyB0LmlucHV0c19idWZmZXI7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgPVxuICAgICAgICAgICAgICAgICBCdWZmZXIuY29udGVudHMgdC5sb2dfYnVmZmVyO1xuICAgICAgICAgICAgIH0pKVxuICAgICAgKGNhdGNoX2Vycm9yIChmdW4gZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBbIGUgXSkpKVxuICB8IF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgdC5lcnJvcl9tZXNzYWdlcylcblxubGV0IGVmZmljaWVuY3kgdCA9IENvdW50ZXIuZ2V0X2VmZmljaWVuY3kgdC5jb3VudGVyXG5cbmxldCBnZXRfcmF3X3RyYWNlICh0IDogdCkgOiBzdHJpbmcgPVxuICBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGVcbiAgICAoZnVuIG9iIHQgLT5cbiAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiZGljdFwiXG4gICAgICAgICAgKGZ1biBvYiAoKSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICAgICAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb2IgQWdlbnQuanNvbl9kaWN0aW9ubmFyeSBpblxuICAgICAgICAgICAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIEluc3RhbnRpYXRpb24uanNvbl9kaWN0aW9ubmFyeSBpblxuICAgICAgICAgICAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFRyYWNlLlNpbXVsYXRpb25faW5mby5qc29uX2RpY3Rpb25uYXJ5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFRyYWNlLmpzb25fZGljdGlvbm5hcnkgaW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfScpXG4gICAgICAgICAgb2IgKClcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJtb2RlbFwiIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIG9iXG4gICAgICAgICAgKE1vZGVsLnRvX3lvanNvbiB0LmVudilcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJ0cmFjZVwiIEJ1ZmZlci5hZGRfc3RyaW5nIG9iXG4gICAgICAgICAgKFwiW1wiIF4gQnVmZmVyLmNvbnRlbnRzIHQudHJhY2UpXG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJdfVwiKVxuICAgIHRcblxubGV0IGdldF9yYXdfYXN0IHQgPSBZb2pzb24uQmFzaWMudG9fc3RyaW5nIChBc3QuY29tcGlsX3RvX2pzb24gdC5hc3QpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG4oKiBhZGRkIHNlZWQgdG8gcGFyYW1ldGVyICopXG5sZXQgcGF0Y2hfcGFyYW1ldGVyIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyKSA6XG4gICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKiBpbnQgPVxuICBtYXRjaCBzaW11bGF0aW9uX3BhcmFtZXRlci5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX3NlZWQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBsZXQgKCkgPSBSYW5kb20uc2VsZl9pbml0ICgpIGluXG4gICAgbGV0IHNlZWQgPSBSYW5kb20uYml0cyAoKSBpblxuICAgIHsgc2ltdWxhdGlvbl9wYXJhbWV0ZXIgd2l0aCBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3NlZWQgPSBTb21lIHNlZWQgfSwgc2VlZFxuICB8IFNvbWUgc2VlZCAtPiBzaW11bGF0aW9uX3BhcmFtZXRlciwgc2VlZFxuXG5sZXQgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gaGFuZGxlciA9XG4gIG1hdGNoIHNpbXVsYXRpb24gd2l0aFxuICB8IFNvbWUgKF8sIHNpbXVsYXRpb24pIC0+IGhhbmRsZXIgc2ltdWxhdGlvblxuICB8IE5vbmUgLT5cbiAgICBsZXQgbSA9IFwiTm8gc2ltdWxhdGlvbiBhdmFpbGFibGVcIiBpblxuICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YE5vdF9mb3VuZCBtKVxuXG5sZXQgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb25cbiAgICB+KHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKVxuICAgIH4ocHJvamVjdGlvbiA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dCAtPiAnYSBBcGkucmVzdWx0KSA6XG4gICAgJ2EgQXBpLnJlc3VsdCBMd3QudCA9XG4gIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgS2FwcGFfZmFjYWRlLm91dHB1dHMgfnN5c3RlbV9wcm9jZXNzIH50XG4gICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfm9rOlxuICAgICAgICAgICAgICAoZnVuIChzaW11bGF0aW9uX2RldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dCkgLT5cbiAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAocHJvamVjdGlvbiBzaW11bGF0aW9uX2RldGFpbClcbiAgICAgICAgICAgICAgICA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dCAtPiAnYSBBcGkucmVzdWx0IEx3dC50KVxuICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzIGVycm9ycykpKVxuXG5jbGFzcyB2aXJ0dWFsIG1hbmFnZXJfZmlsZV9saW5lIChzeXN0ZW1fcHJvY2VzcyA6IEthcHBhX2ZhY2FkZS5zeXN0ZW1fcHJvY2VzcykgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgdmlydHVhbCBzaW11bGF0aW9uXG4gICAgICAgIDogKEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyICogS2FwcGFfZmFjYWRlLnQpIG9wdGlvblxuXG4gICAgbWV0aG9kIHByaXZhdGUgaW5mb19maWxlX2xpbmUgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5maWxlX2xpbmVfY2F0YWxvZyBBcGkucmVzdWx0ID1cbiAgICAgIGxldCBmaWxlX2xpbmVzIDogc3RyaW5nIGxpc3QgTW9kcy5TdHJpbmdNYXAudCA9XG4gICAgICAgIGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzXG4gICAgICBpblxuICAgICAgbGV0IGZpbGVfbGluZV9jYXRhbG9nIDogc3RyaW5nIGxpc3QgPVxuICAgICAgICBMaXN0Lm1hcCBmc3QgKE1vZHMuU3RyaW5nTWFwLmJpbmRpbmdzIGZpbGVfbGluZXMpXG4gICAgICBpblxuICAgICAgUmVzdWx0X3V0aWwub2sgZmlsZV9saW5lX2NhdGFsb2dcblxuICAgIG1ldGhvZCBwcml2YXRlIGdldF9maWxlX2xpbmUgfmZpbGVfbGluZV9pZFxuICAgICAgICAoc3RhdHVzIDogQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KSA6IHN0cmluZyBsaXN0IEFwaS5yZXN1bHQgPVxuICAgICAgbGV0IGZpbGVfbGluZV9saXN0ID0gc3RhdHVzLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgaW5cbiAgICAgIG1hdGNoIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIGZpbGVfbGluZV9pZCBmaWxlX2xpbmVfbGlzdCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IG0gOiBzdHJpbmcgPSBGb3JtYXQuc3ByaW50ZiBcImlkICVzIG5vdCBmb3VuZFwiIGZpbGVfbGluZV9pZCBpblxuICAgICAgICBBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBOb3RfZm91bmQgbVxuICAgICAgfCBTb21lIGxpbmVzIC0+IFJlc3VsdF91dGlsLm9rIChMaXN0LnJldiBsaW5lcylcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NhdGFsb2dfZmlsZV9saW5lXG4gICAgICAgIDogQXBpX3R5cGVzX3QuZmlsZV9saW5lX2NhdGFsb2cgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3NcbiAgICAgICAgfnByb2plY3Rpb246c2VsZiNpbmZvX2ZpbGVfbGluZVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2ZpbGVfbGluZSAoZmlsZV9saW5lX2lkIDogc3RyaW5nKVxuICAgICAgICA6IHN0cmluZyBsaXN0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgIH5wcm9qZWN0aW9uOihzZWxmI2dldF9maWxlX2xpbmUgfmZpbGVfbGluZV9pZClcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlcl9mbHV4X21hcCAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIHZpcnR1YWwgc2ltdWxhdGlvblxuICAgICAgICA6IChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciAqIEthcHBhX2ZhY2FkZS50KSBvcHRpb25cblxuICAgIG1ldGhvZCBwcml2YXRlIGluZm9fZmx1eF9tYXAgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5kaW5fY2F0YWxvZyBBcGkucmVzdWx0ID1cbiAgICAgIGxldCBmbHV4X21hcF9jYXRhbG9nID1cbiAgICAgICAgTGlzdC5tYXAgZnN0IGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9kaW5zXG4gICAgICBpblxuICAgICAgUmVzdWx0X3V0aWwub2sgZmx1eF9tYXBfY2F0YWxvZ1xuXG4gICAgbWV0aG9kIHByaXZhdGUgZ2V0X2ZsdXhfbWFwIChmbHV4X21hcF9pZCA6IEFwaV90eXBlc190LmRpbl9pZClcbiAgICAgICAgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5kaW4gQXBpLnJlc3VsdCA9XG4gICAgICBsZXQgZmx1eF9tYXBzX2xpc3QgPSBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZGlucyBpblxuICAgICAgdHJ5IFJlc3VsdF91dGlsLm9rIChMaXN0LmFzc29jIGZsdXhfbWFwX2lkIGZsdXhfbWFwc19saXN0KVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgbGV0IG0gOiBzdHJpbmcgPSBGb3JtYXQuc3ByaW50ZiBcImlkICVzIG5vdCBmb3VuZFwiIGZsdXhfbWFwX2lkIGluXG4gICAgICAgIEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YE5vdF9mb3VuZCBtXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX2RpbiA6IEFwaV90eXBlc190LmRpbl9jYXRhbG9nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgIH5wcm9qZWN0aW9uOnNlbGYjaW5mb19mbHV4X21hcFxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2RpbiAoZmx1eF9tYXBfaWQgOiBBcGlfdHlwZXNfdC5kaW5faWQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QuZGluIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgIH5wcm9qZWN0aW9uOihzZWxmI2dldF9mbHV4X21hcCBmbHV4X21hcF9pZClcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlcl9sb2dfbWVzc2FnZSAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpXG4gID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIHZpcnR1YWwgc2ltdWxhdGlvblxuICAgICAgICA6IChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciAqIEthcHBhX2ZhY2FkZS50KSBvcHRpb25cblxuICAgIG1ldGhvZCBwcml2YXRlIGxvZ19tZXNzYWdlIChkZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QubG9nX21lc3NhZ2UgQXBpLnJlc3VsdCA9XG4gICAgICBSZXN1bHRfdXRpbC5vayBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfbG9nX21lc3NhZ2VcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5sb2dfbWVzc2FnZSBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2VzcyB+cHJvamVjdGlvbjpzZWxmI2xvZ19tZXNzYWdlXG4gIGVuZFxuXG5sZXQgc2VsZWN0X29ic2VydmFibGVzIChwbG90X2xpbWl0IDogQXBpX3R5cGVzX3QucGxvdF9saW1pdClcbiAgICAocGxvdCA6IEFwaV90eXBlc190LnBsb3QpIDogQXBpX3R5cGVzX3QucGxvdCA9XG4gIGxldCBwbG90X3RpbWVfc2VyaWVzID0gVG9vbHMuYXJyYXlfcmV2X29mX2xpc3QgcGxvdC5EYXRhLnBsb3Rfc2VyaWVzIGluXG4gIGxldCBwbG90X2RldGFpbF9zaXplID0gQXJyYXkubGVuZ3RoIHBsb3RfdGltZV9zZXJpZXMgaW5cbiAgbGV0IHBsb3RfbGltaXRfb2Zmc2V0ID0gcGxvdF9saW1pdC5BcGlfdHlwZXNfdC5wbG90X2xpbWl0X29mZnNldCBpblxuICBsZXQgcGxvdF9saW1pdF9wb2ludHMgPSBwbG90X2xpbWl0LkFwaV90eXBlc190LnBsb3RfbGltaXRfcG9pbnRzIGluXG4gIGxldCBzdGFydCwgbGVuID1cbiAgICBtYXRjaCBwbG90X2xpbWl0X29mZnNldCwgcGxvdF9saW1pdF9wb2ludHMgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiAwLCBwbG90X2RldGFpbF9zaXplXG4gICAgfCBTb21lIG9mZnNldCwgTm9uZSAtPiBvZmZzZXQsIG1heCAwIChwbG90X2RldGFpbF9zaXplIC0gb2Zmc2V0KVxuICAgIHwgTm9uZSwgU29tZSBuYiAtPiBtYXggMCAocGxvdF9kZXRhaWxfc2l6ZSAtIG5iKSwgbWluIG5iIHBsb3RfZGV0YWlsX3NpemVcbiAgICB8IFNvbWUgb2Zmc2V0LCBTb21lIG5iIC0+IG9mZnNldCwgbWluIG5iIChtYXggMCAocGxvdF9kZXRhaWxfc2l6ZSAtIG9mZnNldCkpXG4gIGluXG4gIGxldCBuZXdfcGxvdF90aW1lX3NlcmllcyA9XG4gICAgTGlzdC5yZXYgKEFycmF5LnRvX2xpc3QgKEFycmF5LnN1YiBwbG90X3RpbWVfc2VyaWVzIHN0YXJ0IGxlbikpXG4gIGluXG4gIHsgcGxvdCB3aXRoIERhdGEucGxvdF9zZXJpZXMgPSBuZXdfcGxvdF90aW1lX3NlcmllcyB9XG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlcl9wbG90IChzeXN0ZW1fcHJvY2VzcyA6IEthcHBhX2ZhY2FkZS5zeXN0ZW1fcHJvY2VzcykgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgdmlydHVhbCBzaW11bGF0aW9uXG4gICAgICAgIDogKEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyICogS2FwcGFfZmFjYWRlLnQpIG9wdGlvblxuXG4gICAgbWV0aG9kIHByaXZhdGUgZ2V0X3Bsb3QgKHBsb3RfbGltaXQgOiBBcGlfdHlwZXNfdC5wbG90X3BhcmFtZXRlcilcbiAgICAgICAgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5wbG90IEFwaS5yZXN1bHQgPVxuICAgICAgbWF0Y2ggZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3Bsb3Qgd2l0aFxuICAgICAgfCBTb21lIHBsb3QgLT4gUmVzdWx0X3V0aWwub2sgKHNlbGVjdF9vYnNlcnZhYmxlcyBwbG90X2xpbWl0IHBsb3QpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IG0gOiBzdHJpbmcgPSBcInBsb3Qgbm90IGF2YWlsYWJsZVwiIGluXG4gICAgICAgIEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YE5vdF9mb3VuZCBtXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfcGxvdCAocGxvdF9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfdC5wbG90X3BhcmFtZXRlcilcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5wbG90IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgIH5wcm9qZWN0aW9uOihzZWxmI2dldF9wbG90IHBsb3RfcGFyYW1ldGVyKVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBtYW5hZ2VyX3NuYXBzaG90IChzeXN0ZW1fcHJvY2VzcyA6IEthcHBhX2ZhY2FkZS5zeXN0ZW1fcHJvY2VzcykgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgdmlydHVhbCBzaW11bGF0aW9uXG4gICAgICAgIDogKEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyICogS2FwcGFfZmFjYWRlLnQpIG9wdGlvblxuXG4gICAgbWV0aG9kIHByaXZhdGUgaW5mb19zbmFwc2hvdCAoZGV0YWlsIDogQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KVxuICAgICAgICA6IEFwaV90eXBlc190LnNuYXBzaG90X2NhdGFsb2cgQXBpLnJlc3VsdCA9XG4gICAgICBsZXQgc25hcHNob3RzID0gZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyBpblxuICAgICAgbGV0IHNuYXBzaG90X2NhdGFsb2cgPVxuICAgICAgICBNb2RzLlN0cmluZ01hcC5mb2xkIChmdW4geCBfIGFjYyAtPiB4IDo6IGFjYykgc25hcHNob3RzIFtdXG4gICAgICBpblxuICAgICAgUmVzdWx0X3V0aWwub2sgc25hcHNob3RfY2F0YWxvZ1xuXG4gICAgbWV0aG9kIHByaXZhdGUgZ2V0X3NuYXBzaG90IChzbmFwc2hvdF9pZCA6IEFwaV90eXBlc190LnNuYXBzaG90X2lkKVxuICAgICAgICAoZGV0YWlsIDogQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KVxuICAgICAgICA6IEFwaV90eXBlc190LnNuYXBzaG90IEFwaS5yZXN1bHQgPVxuICAgICAgbGV0IHNuYXBzaG90X2xpc3QgPSBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzIGluXG4gICAgICBtYXRjaCBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBzbmFwc2hvdF9pZCBzbmFwc2hvdF9saXN0IHdpdGhcbiAgICAgIHwgU29tZSB4IC0+IFJlc3VsdF91dGlsLm9rIHhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgbSA6IHN0cmluZyA9IEZvcm1hdC5zcHJpbnRmIFwiaWQgJXMgbm90IGZvdW5kXCIgc25hcHNob3RfaWQgaW5cbiAgICAgICAgQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yZXN1bHRfY29kZTpgTm90X2ZvdW5kIG1cblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NhdGFsb2dfc25hcHNob3RcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdF9jYXRhbG9nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgKGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICAgfnByb2plY3Rpb246c2VsZiNpbmZvX3NuYXBzaG90XG4gICAgICAgIDogQXBpX3R5cGVzX3Quc25hcHNob3RfY2F0YWxvZyBBcGkucmVzdWx0IEx3dC50KVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX3NuYXBzaG90IChzbmFwc2hvdF9pZCA6IEFwaV90eXBlc190LnNuYXBzaG90X2lkKVxuICAgICAgICA6IEFwaV90eXBlc190LnNuYXBzaG90IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgKGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICAgfnByb2plY3Rpb246KHNlbGYjZ2V0X3NuYXBzaG90IHNuYXBzaG90X2lkKVxuICAgICAgICA6IEFwaV90eXBlc190LnNuYXBzaG90IEFwaS5yZXN1bHQgTHd0LnQpXG4gIGVuZFxuXG5jbGFzcyBtYW5hZ2VyX3NpbXVsYXRpb24gcHJvamVjdCAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpIDpcbiAgQXBpLm1hbmFnZXJfc2ltdWxhdGlvbiA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSBzaW11bGF0aW9uID0gTm9uZVxuXG4gICAgbWV0aG9kIHNlY3JldF9zaW11bGF0aW9uX2xvYWQgcGF0dGVyblNoYXJpbmcgdGV4dCBvdmVyd3JpdGVzID1cbiAgICAgIGxldCBhc3QgPSB0ZXh0IGluXG4gICAgICBsZXQgaGFyYWtpcmksIF8gPSBMd3QudGFzayAoKSBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBwcm9qZWN0I3NldF9zdGF0ZVxuICAgICAgICAgIChMd3QucGlja1xuICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgIEthcHBhX2ZhY2FkZS5wYXJzZSB+cGF0dGVyblNoYXJpbmcgYXN0IG92ZXJ3cml0ZXMgc3lzdGVtX3Byb2Nlc3M7XG4gICAgICAgICAgICAgICAoIGhhcmFraXJpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5lcnJvclxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIEFwaV9jb21tb24uZXJyb3JfbXNnIFwiUGFyc2UgY2FuY2VsbGVkIGJ5IG1vZGlmaWVkIGZpbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXSkgKTtcbiAgICAgICAgICAgICBdKVxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGVsZXRlIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjc2ltdWxhdGlvbl9zdG9wID4+PSBmdW4gXyAtPlxuICAgICAgbGV0ICgpID0gc2ltdWxhdGlvbiA8LSBOb25lIGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3N0YXJ0XG4gICAgICAgIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgICA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fYXJ0aWZhY3QgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBsZXQgc2ltdWxhdGlvbl9wYXJhbWV0ZXIsIHNpbXVsYXRpb25fc2VlZCA9XG4gICAgICAgIHBhdGNoX3BhcmFtZXRlciBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgaW5cbiAgICAgIG1hdGNoIHNpbXVsYXRpb24gd2l0aFxuICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBDb25mbGljdFxuICAgICAgICAgICAgIFwiQSBzaW11bGF0aW9uIGFscmVhZHkgZXhpc3RzXCIpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgcHJvamVjdCNnZXRfc3RhdGUgKCkgPj49ICggZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZ1xuICAgICAgICAgICAgICAgXCJDYW5ub3Qgc3RhcnQgc2ltdWxhdGlvbjogUGFyc2Ugbm90IGRvbmVcIilcbiAgICAgICAgfCBTb21lIHBhcnNlIC0+XG4gICAgICAgICAgUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfm9rOihmdW4gKGZhY2FkZSA6IEthcHBhX2ZhY2FkZS50KSAtPlxuICAgICAgICAgICAgICBLYXBwYV9mYWNhZGUuc3RhcnQgfnN5c3RlbV9wcm9jZXNzIH5wYXJhbWV0ZXI6c2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICB+dDpmYWNhZGVcbiAgICAgICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvbiA8LSBTb21lIChzaW11bGF0aW9uX3BhcmFtZXRlciwgZmFjYWRlKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm9rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW11bGF0aW9uX3NlZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JzKSkpXG4gICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JzKSlcbiAgICAgICAgICAgIHBhcnNlIClcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgbWF0Y2ggc2ltdWxhdGlvbiB3aXRoXG4gICAgICB8IFNvbWUgKHBhcmFtZXRlciwgXykgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcGFyYW1ldGVyKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBtID0gXCJObyBzaW11bGF0aW9uIGF2YWlsYWJsZVwiIGluXG4gICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YE5vdF9mb3VuZCBtKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcmF3X3RyYWNlIDogc3RyaW5nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKEthcHBhX2ZhY2FkZS5nZXRfcmF3X3RyYWNlIHQpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX291dHB1dHNfemlwID1cbiAgICAgIGxldCBhZGRfc25hcHNob3QgZmlsZSBmaWxlbmFtZSBuYW1lIHNuYXBzaG90ID1cbiAgICAgICAgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IG5hbWUgXCIuZG90XCIgdGhlblxuICAgICAgICAgIEZha2V6aXAuYWRkX2VudHJ5XG4gICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiXG4gICAgICAgICAgICAgICAoRGF0YS5wcmludF9kb3Rfc25hcHNob3QgP3V1aWQ6Tm9uZSlcbiAgICAgICAgICAgICAgIHNuYXBzaG90KVxuICAgICAgICAgICAgZmlsZVxuICAgICAgICAgICAgKGZpbGVuYW1lIF4gXCIvXCIgXiBuYW1lKVxuICAgICAgICBlbHNlIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBuYW1lIFwiLmpzb25cIiB0aGVuXG4gICAgICAgICAgRmFrZXppcC5hZGRfZW50cnlcbiAgICAgICAgICAgIChEYXRhLnN0cmluZ19vZl9zbmFwc2hvdCA/bGVuOk5vbmUgc25hcHNob3QpXG4gICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAoZmlsZW5hbWUgXiBcIi9cIiBeIG5hbWUpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBuYW1lJyA9IFRvb2xzLmNob3Bfc3VmZml4X29yX2V4dGVuc2lvbiBuYW1lIFwiLmthXCIgaW5cbiAgICAgICAgICBGYWtlemlwLmFkZF9lbnRyeVxuICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiAoRGF0YS5wcmludF9zbmFwc2hvdCA/dXVpZDpOb25lKSBzbmFwc2hvdClcbiAgICAgICAgICAgIGZpbGVcbiAgICAgICAgICAgIChmaWxlbmFtZSBeIFwiL1wiIF4gbmFtZScpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgYWRkX2RpbiBmaWxlIGZpbGVuYW1lIChkaW5fbmFtZSwgZmx1eCkgPVxuICAgICAgICBGYWtlemlwLmFkZF9lbnRyeVxuICAgICAgICAgIChpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggZGluX25hbWUgXCIuaHRtbFwiIHRoZW5cbiAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYUAuXCIgRGF0YS5wcmludF9odG1sX2RpbiBmbHV4XG4gICAgICAgICAgIGVsc2UgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IGRpbl9uYW1lIFwiLmpzb25cIiB0aGVuXG4gICAgICAgICAgICAgRGF0YS5zdHJpbmdfb2ZfZGluIGZsdXhcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiAoRGF0YS5wcmludF9kb3RfZGluID91dWlkOk5vbmUpIGZsdXgpXG4gICAgICAgICAgZmlsZVxuICAgICAgICAgIChmaWxlbmFtZSBeIFwiL1wiIF4gZGluX25hbWUpXG4gICAgICBpblxuICAgICAgbGV0IHByb2plY3Rpb24gdCA9XG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBmaWxlbmFtZSA9IFwic2ltdWxhdGlvbl9vdXRwdXRzXCIgaW5cbiAgICAgICAgICBsZXQgZmlsZSA9IEZha2V6aXAub3Blbl9vdXQgKGZpbGVuYW1lIF4gXCIuemlwXCIpIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEZha2V6aXAuYWRkX2VudHJ5IHQuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIGZpbGVcbiAgICAgICAgICAgICAgKGZpbGVuYW1lIF4gXCIvaW5wdXRzLmthXCIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRmFrZXppcC5hZGRfZW50cnkgdC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgZmlsZVxuICAgICAgICAgICAgICAoZmlsZW5hbWUgXiBcIi9sb2cudHh0XCIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgbWF0Y2ggdC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9wbG90IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIHBsb3QgLT5cbiAgICAgICAgICAgICAgRmFrZXppcC5hZGRfZW50cnlcbiAgICAgICAgICAgICAgICAoRGF0YS5leHBvcnRfcGxvdCB+aXNfdHN2OmZhbHNlIHBsb3QpXG4gICAgICAgICAgICAgICAgZmlsZSAoZmlsZW5hbWUgXiBcIi9kYXRhLmNzdlwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLml0ZXJcbiAgICAgICAgICAgICAgKGZ1biBuYW1lIGNvbnRlbnQgLT5cbiAgICAgICAgICAgICAgICBGYWtlemlwLmFkZF9lbnRyeVxuICAgICAgICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgXCJcXG5cIiAoTGlzdC5yZXYgY29udGVudCkpXG4gICAgICAgICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAgICAgICAoZmlsZW5hbWUgXiBcIi9cIiBeIG5hbWUpKVxuICAgICAgICAgICAgICB0LkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMaXN0Lml0ZXIgKGFkZF9kaW4gZmlsZSBmaWxlbmFtZSlcbiAgICAgICAgICAgICAgdC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9kaW5zXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuaXRlclxuICAgICAgICAgICAgICAoYWRkX3NuYXBzaG90IGZpbGUgZmlsZW5hbWUpXG4gICAgICAgICAgICAgIHQuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb3V0ID0gRmFrZXppcC5jbG9zZV9vdXQgZmlsZSBpblxuICAgICAgICAgIFJlc3VsdF91dGlsLm9rIG91dFxuICAgICAgICB3aXRoIEZha2V6aXAuRXJyb3IgKF8sIGYsIGUpIC0+XG4gICAgICAgICAgQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIChcIlppcCBlcnJvciBpbiBcIiBeIGYgXiBcIjogXCIgXiBlKVxuICAgICAgaW5cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2VzcyB+cHJvamVjdGlvblxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcGF1c2UgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgS2FwcGFfZmFjYWRlLnBhdXNlIH5zeXN0ZW1fcHJvY2VzcyB+dCA+Pj0gZnVuIF8gLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBzaW11bGF0aW9uX3N0b3AgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgS2FwcGFfZmFjYWRlLnN0b3AgfnN5c3RlbV9wcm9jZXNzIH50XG4gICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biAoKSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyBlcnJvcnMpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAoc2ltdWxhdGlvbl9wZXJ0dXJiYXRpb24gOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2ludGVydmVudGlvbilcbiAgICAgICAgOiBzdHJpbmcgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBiaW5kX3NpbXVsYXRpb24gc2ltdWxhdGlvbiAoZnVuIHQgLT5cbiAgICAgICAgICBLYXBwYV9mYWNhZGUucGVydHVyYmF0aW9uIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgICAgICAgfnBlcnR1cmJhdGlvbjpzaW11bGF0aW9uX3BlcnR1cmJhdGlvblxuICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgfm9rOihmdW4gcyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzKSlcbiAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzIGVycm9ycykpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY29udGludWUgKHBhdXNlX2NvbmRpdGlvbiA6IHN0cmluZylcbiAgICAgICAgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgS2FwcGFfZmFjYWRlLmNvbnRpbnVlIH5zeXN0ZW1fcHJvY2VzcyB+dCB+cGF1c2VfY29uZGl0aW9uXG4gICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biAoKSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyBlcnJvcnMpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2luZm8gOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm8gQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBiaW5kX3NpbXVsYXRpb24gc2ltdWxhdGlvbiAoZnVuIHQgLT5cbiAgICAgICAgICBLYXBwYV9mYWNhZGUucHJvZ3Jlc3MgfnN5c3RlbV9wcm9jZXNzIH50XG4gICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biBwcm9ncmVzcyAtPlxuICAgICAgICAgICAgICAgICAgS2FwcGFfZmFjYWRlLm91dHB1dHMgfnN5c3RlbV9wcm9jZXNzIH50XG4gICAgICAgICAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gb3V0cHV0cyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm9rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFwaV9kYXRhLmFwaV9zaW11bGF0aW9uX3N0YXR1cyBwcm9ncmVzcyBvdXRwdXRzKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JzKSkpXG4gICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyBlcnJvcnMpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2VmZmljaWVuY3kgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKEthcHBhX2ZhY2FkZS5lZmZpY2llbmN5IHQpKSlcblxuICAgIGluaGVyaXQgbWFuYWdlcl9maWxlX2xpbmUgc3lzdGVtX3Byb2Nlc3NcbiAgICBpbmhlcml0IG1hbmFnZXJfZmx1eF9tYXAgc3lzdGVtX3Byb2Nlc3NcbiAgICBpbmhlcml0IG1hbmFnZXJfbG9nX21lc3NhZ2Ugc3lzdGVtX3Byb2Nlc3NcbiAgICBpbmhlcml0IG1hbmFnZXJfcGxvdCBzeXN0ZW1fcHJvY2Vzc1xuICAgIGluaGVyaXQgbWFuYWdlcl9zbmFwc2hvdCBzeXN0ZW1fcHJvY2Vzc1xuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBpbml0X2NvbXByZXNzaW9uX21vZGUgPSBmdW5jdGlvblxuICB8IFN0b3J5X2pzb24uQ2F1c2FsIC0+XG4gICAgeyBBcGkuY2F1c2FsID0gdHJ1ZTsgQXBpLndlYWsgPSBmYWxzZTsgQXBpLnN0cm9uZyA9IGZhbHNlIH1cbiAgfCBTdG9yeV9qc29uLldlYWsgLT5cbiAgICB7IEFwaS5jYXVzYWwgPSBmYWxzZTsgQXBpLndlYWsgPSB0cnVlOyBBcGkuc3Ryb25nID0gZmFsc2UgfVxuICB8IFN0b3J5X2pzb24uU3Ryb25nIC0+XG4gICAgeyBBcGkuY2F1c2FsID0gZmFsc2U7IEFwaS53ZWFrID0gZmFsc2U7IEFwaS5zdHJvbmcgPSB0cnVlIH1cblxubGV0IGFkZF9jb21wcmVzc2lvbl9tb2RlIHsgQXBpLmNhdXNhbDsgQXBpLndlYWs7IEFwaS5zdHJvbmcgfSA9IGZ1bmN0aW9uXG4gIHwgU3RvcnlfanNvbi5DYXVzYWwgLT4geyBBcGkuY2F1c2FsID0gdHJ1ZTsgQXBpLndlYWs7IEFwaS5zdHJvbmcgfVxuICB8IFN0b3J5X2pzb24uV2VhayAtPiB7IEFwaS5jYXVzYWw7IEFwaS53ZWFrID0gdHJ1ZTsgQXBpLnN0cm9uZyB9XG4gIHwgU3RvcnlfanNvbi5TdHJvbmcgLT4geyBBcGkuY2F1c2FsOyBBcGkud2VhazsgQXBpLnN0cm9uZyA9IHRydWUgfVxuXG5sZXQgcHJpbnRfY29tcHJlc3Npb25fbW9kZXMgZiB7IEFwaS5jYXVzYWw7IEFwaS53ZWFrOyBBcGkuc3Ryb25nIH0gPVxuICBsZXQgKCkgPSBpZiBjYXVzYWwgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJDQVVTQUxcIiBpblxuICBsZXQgKCkgPVxuICAgIGlmIHdlYWsgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmXG4gICAgICAgIChpZiBjYXVzYWwgdGhlblxuICAgICAgICAgICBcIiwgV0VBS1wiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiV0VBS1wiKVxuICBpblxuICBpZiBzdHJvbmcgdGhlblxuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgICAgKGlmIGNhdXNhbCB8fCB3ZWFrIHRoZW5cbiAgICAgICAgIFwiLCBTVFJPTkdcIlxuICAgICAgIGVsc2VcbiAgICAgICAgIFwiU1RST05HXCIpXG5cbnR5cGUgc3RhdGVfdCA9IHtcbiAgcnVubmluZzogYm9vbDtcbiAgcHJvZ3Jlc3M6IFN0b3J5X2pzb24ucHJvZ3Jlc3NfYmFyIG9wdGlvbjtcbiAgbG9nOiBzdHJpbmcgbGlzdDtcbiAgc3RvcmllczpcbiAgICAoQXBpLmNvbXByZXNzaW9uX21vZGVzXG4gICAgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IGxpc3QgbGlzdFxuICAgICogR3JhcGhfbG9nZ2Vyc19zaWcuZ3JhcGgpXG4gICAgTW9kcy5JbnRNYXAudDtcbn1cblxudHlwZSBzdGF0ZSA9IHN0YXRlX3QgcmVmXG5cbigqbGV0IHN0YXRlX2VxIGEgYiA9XG4gIGEucnVubmluZyA9IGIucnVubmluZyAmJlxuICBPcHRpb25fdXRpbC5lcXVhbCAoPSkgYS5wcm9ncmVzcyBiLnByb2dyZXNzICYmXG4gICh0cnkgTGlzdC5mb3JfYWxsMiAoZnVuIHggeSAtPiBTdHJpbmcuY29tcGFyZSB4IHkgPSAwKSBhLmxvZyBiLmxvZ1xuICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gZmFsc2UpXG4gICYmIE1vZHMuSW50TWFwLmVxdWFsICg9KSBhLnN0b3JpZXMgYi5zdG9yaWVzKilcblxubGV0IGluaXRpYWxfc3RhdGUgPVxuICB7IHJ1bm5pbmcgPSBmYWxzZTsgcHJvZ3Jlc3MgPSBOb25lOyBsb2cgPSBbXTsgc3RvcmllcyA9IE1vZHMuSW50TWFwLmVtcHR5IH1cblxubGV0IGNvbnRyb2xsZXIgcyA9IGZ1bmN0aW9uXG4gIHwgU3RvcnlfanNvbi5Qcm9ncmVzcyBwIC0+XG4gICAgeyBydW5uaW5nID0gcy5ydW5uaW5nOyBwcm9ncmVzcyA9IFNvbWUgcDsgbG9nID0gcy5sb2c7IHN0b3JpZXMgPSBzLnN0b3JpZXMgfVxuICB8IFN0b3J5X2pzb24uUGhhc2UgKFN0b3J5X2pzb24uU3RhcnQsIG0pIC0+XG4gICAge1xuICAgICAgcnVubmluZyA9IHRydWU7XG4gICAgICBwcm9ncmVzcyA9IE5vbmU7XG4gICAgICBsb2cgPSBbIG0gXTtcbiAgICAgIHN0b3JpZXMgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICB9XG4gIHwgU3RvcnlfanNvbi5QaGFzZSAoU3RvcnlfanNvbi5JbnByb2dyZXNzLCBtKSAtPlxuICAgIHtcbiAgICAgIHJ1bm5pbmcgPSBzLnJ1bm5pbmc7XG4gICAgICBwcm9ncmVzcyA9IHMucHJvZ3Jlc3M7XG4gICAgICBsb2cgPSBtIDo6IHMubG9nO1xuICAgICAgc3RvcmllcyA9IHMuc3RvcmllcztcbiAgICB9XG4gIHwgU3RvcnlfanNvbi5QaGFzZSAoU3RvcnlfanNvbi5GYWlsbHVyZSwgbSkgLT5cbiAgICB7XG4gICAgICBydW5uaW5nID0gcy5ydW5uaW5nO1xuICAgICAgcHJvZ3Jlc3MgPSBzLnByb2dyZXNzO1xuICAgICAgbG9nID0gbSA6OiBzLmxvZztcbiAgICAgIHN0b3JpZXMgPSBzLnN0b3JpZXM7XG4gICAgfVxuICB8IFN0b3J5X2pzb24uUGhhc2UgKFN0b3J5X2pzb24uU3VjY2VzcywgbSkgLT5cbiAgICB7XG4gICAgICBydW5uaW5nID0gZmFsc2U7XG4gICAgICBwcm9ncmVzcyA9IHMucHJvZ3Jlc3M7XG4gICAgICBsb2cgPSBtIDo6IHMubG9nO1xuICAgICAgc3RvcmllcyA9IHMuc3RvcmllcztcbiAgICB9XG4gIHwgU3RvcnlfanNvbi5TdG9yeSBjIC0+XG4gICAgKG1hdGNoIGMuU3RvcnlfanNvbi5zdG9yeSB3aXRoXG4gICAgfCBTdG9yeV9qc29uLk5ldyBlIC0+XG4gICAgICB7XG4gICAgICAgIHJ1bm5pbmcgPSBzLnJ1bm5pbmc7XG4gICAgICAgIHByb2dyZXNzID0gcy5wcm9ncmVzcztcbiAgICAgICAgbG9nID0gcy5sb2c7XG4gICAgICAgIHN0b3JpZXMgPVxuICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBlLlN0b3J5X2pzb24uaWRcbiAgICAgICAgICAgICggaW5pdF9jb21wcmVzc2lvbl9tb2RlIGMuU3RvcnlfanNvbi5zdG9yeV9tb2RlLFxuICAgICAgICAgICAgICBbIGMuU3RvcnlfanNvbi5sb2dfaW5mbyBdLFxuICAgICAgICAgICAgICBlLlN0b3J5X2pzb24uZ3JhcGggKVxuICAgICAgICAgICAgcy5zdG9yaWVzO1xuICAgICAgfVxuICAgIHwgU3RvcnlfanNvbi5TYW1lX2FzIGkgLT5cbiAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIHMuc3RvcmllcyB3aXRoXG4gICAgICB8IFNvbWUgKGNtLCBpbmZvcywgZ3JhcGgpIC0+XG4gICAgICAgIHtcbiAgICAgICAgICBydW5uaW5nID0gcy5ydW5uaW5nO1xuICAgICAgICAgIHByb2dyZXNzID0gcy5wcm9ncmVzcztcbiAgICAgICAgICBsb2cgPSBzLmxvZztcbiAgICAgICAgICBzdG9yaWVzID1cbiAgICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBpXG4gICAgICAgICAgICAgICggYWRkX2NvbXByZXNzaW9uX21vZGUgY20gYy5TdG9yeV9qc29uLnN0b3J5X21vZGUsXG4gICAgICAgICAgICAgICAgYy5TdG9yeV9qc29uLmxvZ19pbmZvIDo6IGluZm9zLFxuICAgICAgICAgICAgICAgIGdyYXBoIClcbiAgICAgICAgICAgICAgcy5zdG9yaWVzO1xuICAgICAgICB9XG4gICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlKSlcblxubGV0IHJlY2VpdmUgdXBkYXRlX3N0YXRlIHggPVxuICB1cGRhdGVfc3RhdGUgKFN0b3J5X2pzb24ubWVzc2FnZV9vZl9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbmxldCBpbml0X3N0YXRlICgpID1cbiAgbGV0IGN1cnJlbnRfc3RhdGUgPSByZWYgaW5pdGlhbF9zdGF0ZSBpblxuICBjdXJyZW50X3N0YXRlLCBmdW4geCAtPiBjdXJyZW50X3N0YXRlIDo9IGNvbnRyb2xsZXIgIWN1cnJlbnRfc3RhdGUgeFxuXG5jbGFzcyB2aXJ0dWFsIG5ld19jbGllbnQgfnBvc3QgY3VycmVudF9zdGF0ZSA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBpc19ydW5uaW5nIDogYm9vbFxuXG4gICAgbWV0aG9kIGNvbmZpZ19zdG9yeV9jb21wdXRhdGlvbiB7IEFwaS5jYXVzYWw7IEFwaS53ZWFrOyBBcGkuc3Ryb25nIH0gPVxuICAgICAgaWYgc2VsZiNpc19ydW5uaW5nIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHBvc3RcbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMudG9fc3RyaW5nXG4gICAgICAgICAgICAgICAoYExpc3RcbiAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgIGBTdHJpbmcgXCJDT05GSUdcIjtcbiAgICAgICAgICAgICAgICAgICBgQXNzb2NcbiAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJub25lXCIsIGBCb29sIGNhdXNhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ3ZWFrXCIsIGBCb29sIHdlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgIFwic3Ryb25nXCIsIGBCb29sIHN0cm9uZztcbiAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICBpblxuICAgICAgICBMd3QucmV0dXJuX29rICgpXG4gICAgICApIGVsc2VcbiAgICAgICAgTHd0LnJldHVybl9lcnJvciBcIkthU3RvciBhZ2VudCBpcyBkZWFkXCJcblxuICAgIG1ldGhvZCByYXdfbGF1bmNoX3N0b3J5X2NvbXB1dGF0aW9uIHRyYWNlX3RleHQgPVxuICAgICAgaWYgc2VsZiNpc19ydW5uaW5nIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBjdXJyZW50X3N0YXRlIDo9IHsgaW5pdGlhbF9zdGF0ZSB3aXRoIHJ1bm5pbmcgPSB0cnVlIH0gaW5cbiAgICAgICAgbGV0ICgpID0gcG9zdCAoXCJbXFxcIlJVTlxcXCIsIFwiIF4gdHJhY2VfdGV4dCBeIFwiXVwiKSBpblxuICAgICAgICBMd3QucmV0dXJuX29rICgpXG4gICAgICApIGVsc2VcbiAgICAgICAgTHd0LnJldHVybl9lcnJvciBcIkthU3RvciBhZ2VudCBpcyBkZWFkXCJcblxuICAgIG1ldGhvZCBzdG9yeV9sb2cgPSAhY3VycmVudF9zdGF0ZS5sb2dcbiAgICBtZXRob2Qgc3RvcnlfaXNfY29tcHV0aW5nID0gIWN1cnJlbnRfc3RhdGUucnVubmluZ1xuICAgIG1ldGhvZCBzdG9yeV9wcm9ncmVzcyA9ICFjdXJyZW50X3N0YXRlLnByb2dyZXNzXG4gICAgbWV0aG9kIHN0b3J5X2xpc3QgPSAhY3VycmVudF9zdGF0ZS5zdG9yaWVzXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxudHlwZSBtYWlsYm94ID1cbiAgKCBpbnQsXG4gICAgKFlvanNvbi5CYXNpYy50LCBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIubWV0aG9kX2hhbmRsZXIpIFJlc3VsdC5yZXN1bHRcbiAgICBMd3QudSApXG4gIEhhc2h0YmwudFxuXG5sZXQgcmVwbHlfb2Zfc3RyaW5nIHggPVxuICBtYXRjaCBZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCB3aXRoXG4gIHwgYEFzc29jIFsgKFwiaWRcIiwgYEludCBpZCk7IChcImNvZGVcIiwgYFN0cmluZyBcIkVSUk9SXCIpOyAoXCJkYXRhXCIsIGVycikgXSAtPlxuICAgIFNvbWUgaWQsIFJlc3VsdC5FcnJvciAoRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLm9mX2pzb24gZXJyKVxuICB8IGBBc3NvYyBbIChcImlkXCIsIGBJbnQgaWQpOyAoXCJjb2RlXCIsIGBTdHJpbmcgXCJTVUNDRVNTXCIpOyAoXCJkYXRhXCIsIGRhdGEpIF0gLT5cbiAgICBTb21lIGlkLCBSZXN1bHQuT2sgZGF0YVxuICB8IHggLT5cbiAgICAoIE5vbmUsXG4gICAgICBSZXN1bHQuRXJyb3JcbiAgICAgICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5hZGRfdW5jYXVnaHRfZXJyb3JcbiAgICAgICAgICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5idWlsZF91bmNhdWdodF9leGNlcHRpb25cbiAgICAgICAgICAgICAgfmZpbGVfbmFtZTpcImthc2FfY2xpZW50XCJcbiAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgKFwiSW52YWxpZCByZXNwb25zZSBmcm9tIEthU2E6IFwiIF4gWW9qc29uLkJhc2ljLnRvX3N0cmluZyB4KVxuICAgICAgICAgICAgICBFeGl0KVxuICAgICAgICAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZW1wdHlfZXJyb3JfaGFuZGxlcikgKVxuXG5sZXQgcmVjZWl2ZSBtYWlsYm94IHggPVxuICBtYXRjaCByZXBseV9vZl9zdHJpbmcgeCB3aXRoXG4gIHwgU29tZSBpZCwgb3V0IC0+XG4gICAgbGV0IHRocmVhZCA9IEhhc2h0YmwuZmluZCBtYWlsYm94IGlkIGluXG4gICAgbGV0ICgpID0gSGFzaHRibC5yZW1vdmUgbWFpbGJveCBpZCBpblxuICAgIEx3dC53YWtldXAgdGhyZWFkIG91dFxuICB8IE5vbmUsIF8gLT4gKClcblxubGV0IG5ld19tYWlsYm94ICgpID0gSGFzaHRibC5jcmVhdGUgMlxubGV0IGlzX2NvbXB1dGluZyBtYWlsYm94ID0gSGFzaHRibC5sZW5ndGggbWFpbGJveCA8PiAwXG5cbmNsYXNzIG5ld19jbGllbnQgfmlzX3J1bm5pbmcgfnBvc3QgKG1haWxib3ggOiBtYWlsYm94KSA6XG4gIEFwaS5tYW5hZ2VyX3N0YXRpY19hbmFseXNpcyA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSBpZCA9IDBcblxuICAgIG1ldGhvZCBwcml2YXRlIHJhd19tZXNzYWdlIHBvc3QgcmVxdWVzdCA9XG4gICAgICBpZiBpc19ydW5uaW5nICgpIHRoZW4gKFxuICAgICAgICBsZXQgcmVzdWx0LCBmZWVkZXIgPSBMd3QudGFzayAoKSBpblxuICAgICAgICBsZXQgb3V0YnVmID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG91dGJ1ZiBcIntpZDpcIiBpblxuICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgKHN0cmluZ19vZl9pbnQgaWQpIGluXG4gICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG91dGJ1ZiBcIixkYXRhOlwiIGluXG4gICAgICAgIGxldCAoKSA9IHJlcXVlc3Qgb3V0YnVmIGluXG4gICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG91dGJ1ZiBcIn1cIiBpblxuICAgICAgICBsZXQgKCkgPSBwb3N0IChCdWZmZXIuY29udGVudHMgb3V0YnVmKSBpblxuICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbWFpbGJveCBpZCBmZWVkZXIgaW5cbiAgICAgICAgbGV0ICgpID0gaWQgPC0gaWQgKyAxIGluXG4gICAgICAgIHJlc3VsdFxuICAgICAgKSBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm5fZXJyb3JcbiAgICAgICAgICAoRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmFkZF91bmNhdWdodF9lcnJvclxuICAgICAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uXG4gICAgICAgICAgICAgICAgfmZpbGVfbmFtZTpcImthc2FfY2xpZW50XCIgfm1lc3NhZ2U6XCJLYVNhIGFnZW50IGlzIGRlYWRcIiBFeGl0KVxuICAgICAgICAgICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5lbXB0eV9lcnJvcl9oYW5kbGVyKVxuXG4gICAgbWV0aG9kIHByaXZhdGUgbWVzc2FnZSByZXF1ZXN0ID1cbiAgICAgIHNlbGYjcmF3X21lc3NhZ2UgcG9zdCAoZnVuIG91dGIgLT4gWW9qc29uLkJhc2ljLnRvX2J1ZmZlciBvdXRiIHJlcXVlc3QpXG5cbiAgICBtZXRob2QgaW5pdF9zdGF0aWNfYW5hbHlzZXJfcmF3IGNvbXBpbCA9XG4gICAgICBsZXQgcmVxdWVzdCBvdXRidWYgPVxuICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgXCJbIFxcXCJJTklUXFxcIiwgXCIgaW5cbiAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb3V0YnVmIGNvbXBpbCBpblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgXCJdXCJcbiAgICAgIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI3Jhd19tZXNzYWdlIHBvc3QgcmVxdWVzdCkgKGZ1bmN0aW9uXG4gICAgICAgIHwgYE51bGwgLT4gUmVzdWx0Lk9rICgpXG4gICAgICAgIHwgeCAtPlxuICAgICAgICAgIFJlc3VsdC5FcnJvclxuICAgICAgICAgICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5hZGRfdW5jYXVnaHRfZXJyb3JcbiAgICAgICAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uXG4gICAgICAgICAgICAgICAgICB+ZmlsZV9uYW1lOlwia2FzYV9jbGllbnRcIlxuICAgICAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAgIChcIk5vdCBhIEthU2EgSU5JVCByZXNwb25zZTogXCIgXiBZb2pzb24uQmFzaWMudG9fc3RyaW5nIHgpXG4gICAgICAgICAgICAgICAgICBFeGl0KVxuICAgICAgICAgICAgICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmVtcHR5X2Vycm9yX2hhbmRsZXIpKVxuXG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyIGNvbXBpbCA9XG4gICAgICBzZWxmI2luaXRfc3RhdGljX2FuYWx5c2VyX3Jhd1xuICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoQXN0LmNvbXBpbF90b19qc29uIGNvbXBpbCkpXG5cbiAgICBtZXRob2QgZ2V0X2NvbnRhY3RfbWFwIGFjY3VyYWN5ID1cbiAgICAgIGxldCByZXF1ZXN0ID1cbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoYFN0cmluZyBcIkNPTlRBQ1RfTUFQXCJcbiAgICAgICAgICA6OlxuICAgICAgICAgIChtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGEgLT4gWyBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGEgXSkpXG4gICAgICBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPiBSZXN1bHQuT2sgeClcblxuICAgIG1ldGhvZCBnZXRfcG9zX29mX3J1bGVzX2FuZF92YXJzID1cbiAgICAgIGxldCByZXF1ZXN0ID0gYExpc3QgWyBgU3RyaW5nIFwiSU5GTFVFTkNFX01BUF9OT0RFU19MT0NBVElPTlwiIF0gaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBSZXN1bHQuT2sgKFB1YmxpY19kYXRhLnBvc19vZl9ydWxlc19hbmRfdmFyc19vZl9qc29uIHgpKVxuXG4gICAgbWV0aG9kIGdldF9pbmZsdWVuY2VfbWFwX3JhdyBhY2N1cmFjeSA9XG4gICAgICBsZXQgcmVxdWVzdCA9XG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKGBTdHJpbmcgXCJJTkZMVUVOQ0VfTUFQXCJcbiAgICAgICAgICA6OlxuICAgICAgICAgIChtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGEgLT4gWyBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGEgXSkpXG4gICAgICBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIFJlc3VsdC5PayAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfbG9jYWxfaW5mbHVlbmNlX21hcCA/ZndkID9id2QgP29yaWdpbiB+dG90YWwgYWNjdXJhY3kgPVxuICAgICAgbGV0IHJlcXVlc3QgPVxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChgU3RyaW5nIFwiSU5GTFVFTkNFX01BUFwiXG4gICAgICAgICAgOjogKGZ1biBhY2N1cmFjeSBsIC0+XG4gICAgICAgICAgICAgICBtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gbFxuICAgICAgICAgICAgICAgfCBTb21lIGEgLT4gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhIDo6IGwpXG4gICAgICAgICAgICAgICBhY2N1cmFjeVxuICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2ZfaW50IGZ3ZDtcbiAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludCBid2Q7XG4gICAgICAgICAgICAgICAgIEpzb25VdGlsLm9mX2ludCB0b3RhbDtcbiAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICBvcmlnaW47XG4gICAgICAgICAgICAgICBdKVxuICAgICAgaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgbyA9IFB1YmxpY19kYXRhLmxvY2FsX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiB4IGluXG4gICAgICAgICAgUmVzdWx0Lk9rIG8pXG5cbiAgICBtZXRob2QgZ2V0X2luaXRpYWxfbm9kZSA9XG4gICAgICBsZXQgcmVxdWVzdCA9IGBMaXN0IFsgYFN0cmluZyBcIklORkxVRU5DRV9NQVBfT1JJR0lOQUxfTk9ERVwiIF0gaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgbyA9XG4gICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb24gUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uIHhcbiAgICAgICAgICBpblxuICAgICAgICAgIFJlc3VsdC5PayBvKVxuXG4gICAgbWV0aG9kIGdldF9uZXh0X25vZGUganNvbiA9XG4gICAgICBsZXQgcmVxdWVzdCA9XG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgW1xuICAgICAgICAgICAgYFN0cmluZyBcIklORkxVRU5DRV9NQVBfTkVYVF9OT0RFXCI7XG4gICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiBqc29uO1xuICAgICAgICAgIF1cbiAgICAgIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IG8gPVxuICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiB4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBSZXN1bHQuT2sgbylcblxuICAgIG1ldGhvZCBnZXRfcHJldmlvdXNfbm9kZSBqc29uID1cbiAgICAgIGxldCByZXF1ZXN0ID1cbiAgICAgICAgYExpc3RcbiAgICAgICAgICBbXG4gICAgICAgICAgICBgU3RyaW5nIFwiSU5GTFVFTkNFX01BUF9QUkVWSU9VU19OT0RFXCI7XG4gICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiBqc29uO1xuICAgICAgICAgIF1cbiAgICAgIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IG8gPVxuICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiB4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBSZXN1bHQuT2sgbylcblxuICAgIG1ldGhvZCBnZXRfbm9kZXNfb2ZfaW5mbHVlbmNlX21hcCBhY2N1cmFjeSA9XG4gICAgICBsZXQgcmVxdWVzdCA9XG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKGBTdHJpbmcgXCJJTkZMVUVOQ0VfTUFQX0FMTF9OT0RFU1wiXG4gICAgICAgICAgOjpcbiAgICAgICAgICAobWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBhIC0+IFsgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhIF0pKVxuICAgICAgaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBSZXN1bHQuT2sgKFB1YmxpY19kYXRhLm5vZGVzX29mX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiB4KSlcblxuICAgIG1ldGhvZCBnZXRfZGVhZF9ydWxlcyA9XG4gICAgICBsZXQgcmVxdWVzdCA9IGBMaXN0IFsgYFN0cmluZyBcIkRFQURfUlVMRVNcIiBdIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgUmVzdWx0Lk9rIChQdWJsaWNfZGF0YS5kZWFkX3J1bGVzX29mX2pzb24geCkpXG5cbiAgICBtZXRob2QgZ2V0X2RlYWRfYWdlbnRzID1cbiAgICAgIGxldCByZXF1ZXN0ID0gYExpc3QgWyBgU3RyaW5nIFwiREVBRF9BR0VOVFNcIiBdIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgUmVzdWx0Lk9rIChQdWJsaWNfZGF0YS5qc29uX3RvX2RlYWRfYWdlbnRzIHgpKVxuXG4gICAgbWV0aG9kIGdldF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICAgICAgbGV0IHJlcXVlc3QgPSBgTGlzdCBbIGBTdHJpbmcgXCJOT05fV0VBS0xZX1JFVkVSU0lCTEVfVFJBTlNJVElPTlNcIiBdIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgUmVzdWx0Lk9rIChQdWJsaWNfZGF0YS5zZXBhcmF0aW5nX3RyYW5zaXRpb25zX29mX2pzb24geCkpXG5cbiAgICBtZXRob2QgZ2V0X2NvbnN0cmFpbnRzX2xpc3QgPVxuICAgICAgbGV0IHJlcXVlc3QgPSBgTGlzdCBbIGBTdHJpbmcgXCJDT05TVFJBSU5UU1wiIF0gaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBSZXN1bHQuT2sgKFB1YmxpY19kYXRhLmxlbW1hc19saXN0X29mX2pzb24geCkpXG5cbiAgICBtZXRob2QgZ2V0X3BvdGVudGlhbF9wb2x5bWVycyBhY2N1cmFjeV9jbSBhY2N1cmFjeV9zY2MgPVxuICAgICAgbGV0IHJlcXVlc3QgPVxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChgU3RyaW5nIFwiUE9MWU1FUlNcIlxuICAgICAgICAgIDo6XG4gICAgICAgICAgKG1hdGNoIGFjY3VyYWN5X2NtLCBhY2N1cmFjeV9zY2Mgd2l0aFxuICAgICAgICAgIHwgTm9uZSwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBhLCBOb25lIC0+IFsgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhIF1cbiAgICAgICAgICB8IFNvbWUgYSwgU29tZSBiIC0+XG4gICAgICAgICAgICBbIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYTsgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBiIF1cbiAgICAgICAgICB8IE5vbmUsIFNvbWUgYiAtPlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIFB1YmxpY19kYXRhLkxvdztcbiAgICAgICAgICAgICAgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBiO1xuICAgICAgICAgICAgXSkpXG4gICAgICBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIFJlc3VsdC5PayAoUHVibGljX2RhdGEuc2NjX29mX2pzb24geCkpXG4gIGVuZFxuXG5jbGFzcyBuZXdfdW5pZm9ybV9jbGllbnQgfmlzX3J1bm5pbmcgfnBvc3QgKG1haWxib3ggOiBtYWlsYm94KSA6XG4gIEFwaS51bmlmb3JtX21hbmFnZXJfc3RhdGljX2FuYWx5c2lzID1cbiAgbGV0IHJhdyA9IG5ldyBuZXdfY2xpZW50IH5pc19ydW5uaW5nIH5wb3N0IG1haWxib3ggaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyX3JhdyBjb21waWwgPVxuICAgICAgcmF3I2luaXRfc3RhdGljX2FuYWx5c2VyX3JhdyBjb21waWwgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBpbml0X3N0YXRpY19hbmFseXNlciBjb21waWwgPVxuICAgICAgcmF3I2luaXRfc3RhdGljX2FuYWx5c2VyIGNvbXBpbCA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9jb250YWN0X21hcCBhY2N1cmFjeSA9XG4gICAgICByYXcjZ2V0X2NvbnRhY3RfbWFwIGFjY3VyYWN5ID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X2luZmx1ZW5jZV9tYXBfcmF3IGFjY3VyYWN5ID1cbiAgICAgIHJhdyNnZXRfaW5mbHVlbmNlX21hcF9yYXcgYWNjdXJhY3kgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfbG9jYWxfaW5mbHVlbmNlX21hcCA/ZndkID9id2QgP29yaWdpbiB+dG90YWwgYWNjdXJhY3kgPVxuICAgICAgcmF3I2dldF9sb2NhbF9pbmZsdWVuY2VfbWFwID9md2QgP2J3ZCA/b3JpZ2luIH50b3RhbCBhY2N1cmFjeVxuICAgICAgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfaW5pdGlhbF9ub2RlID0gcmF3I2dldF9pbml0aWFsX25vZGUgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfbmV4dF9ub2RlIGpzb24gPVxuICAgICAgcmF3I2dldF9uZXh0X25vZGUganNvbiA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9wcmV2aW91c19ub2RlIGpzb24gPVxuICAgICAgcmF3I2dldF9wcmV2aW91c19ub2RlIGpzb24gPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBzZWNyZXRfZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFycyA9XG4gICAgICByYXcjZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFycyA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9ub2Rlc19vZl9pbmZsdWVuY2VfbWFwIGFjY3VyYWN5ID1cbiAgICAgIHJhdyNnZXRfbm9kZXNfb2ZfaW5mbHVlbmNlX21hcCBhY2N1cmFjeSA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9kZWFkX3J1bGVzID0gcmF3I2dldF9kZWFkX3J1bGVzID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG4gICAgbWV0aG9kIGdldF9kZWFkX2FnZW50cyA9IHJhdyNnZXRfZGVhZF9hZ2VudHMgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICAgIHJhdyNnZXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X2NvbnN0cmFpbnRzX2xpc3QgPVxuICAgICAgcmF3I2dldF9jb25zdHJhaW50c19saXN0ID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X3BvdGVudGlhbF9wb2x5bWVycyBhY2N1cmFjeV9jbSBhY2N1cmFjeV9zY2MgPVxuICAgICAgcmF3I2dldF9wb3RlbnRpYWxfcG9seW1lcnMgYWNjdXJhY3lfY20gYWNjdXJhY3lfc2NjXG4gICAgICA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgXyBoYW5kbGUgPVxuICB8IE5vdGhpbmcgOiB1bml0IGhhbmRsZVxuICB8IENhdGFsb2cgOiBLZmlsZXMuY2F0YWxvZ19pdGVtIGxpc3QgaGFuZGxlXG4gIHwgSW5mbyA6IChzdHJpbmcgKiBpbnQpIGhhbmRsZVxuICB8IEFzdCA6IEFzdC5wYXJzaW5nX2NvbXBpbCBoYW5kbGVcblxudHlwZSBib3ggPVxuICB8IEIgOiAnYSBoYW5kbGUgKiAoJ2EsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudSAtPiBib3hcblxudHlwZSBtYWlsYm94ID0gKGludCwgYm94KSBIYXNodGJsLnRcblxubGV0IG5ld19tYWlsYm94ICgpID0gSGFzaHRibC5jcmVhdGUgMlxuXG5sZXQgcmVhZF9yZXN1bHQgZiBwIGxiID1cbiAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAoUmVzdWx0X3V0aWwucmVhZF90IGYgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgUmVzdWx0X3V0aWwucmVhZF9tZXNzYWdlKSlcbiAgICBwIGxiXG5cbmxldCByZWNlaXZlIG1haWxib3ggeCA9XG4gIEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nXG4gICAgKEpzb25VdGlsLnJlYWRfdmFyaWFudCBZb2pzb24uQmFzaWMucmVhZF9pbnQgKGZ1biBwIGxiIGlkIC0+XG4gICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgbWFpbGJveCBpZCB3aXRoXG4gICAgICAgICAgIHwgQiAoTm90aGluZywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9udWxsIHAgbGIpXG4gICAgICAgICAgIHwgQiAoQ2F0YWxvZywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHRcbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0IEtmaWxlcy5yZWFkX2NhdGFsb2dfaXRlbSlcbiAgICAgICAgICAgICAgICAgIHAgbGIpXG4gICAgICAgICAgIHwgQiAoSW5mbywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHRcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5yZWFkX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2ludClcbiAgICAgICAgICAgICAgICAgIHAgbGIpXG4gICAgICAgICAgIHwgQiAoQXN0LCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWQgKHJlYWRfcmVzdWx0IEFzdC5yZWFkX3BhcnNpbmdfY29tcGlsIHAgbGIpXG4gICAgICAgICBpblxuICAgICAgICAgSGFzaHRibC5yZW1vdmUgbWFpbGJveCBpZCkpXG4gICAgeFxuXG5sZXQgaXNfY29tcHV0aW5nIG1haWxib3ggPSBIYXNodGJsLmxlbmd0aCBtYWlsYm94IDw+IDBcblxuY2xhc3MgdmlydHVhbCBuZXdfY2xpZW50IH5wb3N0IG1haWxib3ggOiBBcGkubWFuYWdlcl9tb2RlbCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSBpZCA9IDBcbiAgICBtZXRob2QgdmlydHVhbCBpc19ydW5uaW5nIDogYm9vbFxuXG4gICAgbWV0aG9kIHByaXZhdGUgbWVzc2FnZSA6IHR5cGUgYS5cbiAgICAgICAgYSBoYW5kbGUgLT5cbiAgICAgICAgKEJ1ZmZlci50IC0+IHVuaXQpIC0+XG4gICAgICAgIChhLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnQgPVxuICAgICAgZnVuIGhhbmRsZSByZXF1ZXN0IC0+XG4gICAgICAgIGlmIHNlbGYjaXNfcnVubmluZyB0aGVuIChcbiAgICAgICAgICBsZXQgcmVzdWx0LCBmZWVkZXIgPSBMd3QudGFzayAoKSBpblxuICAgICAgICAgIGxldCBtZXNzYWdlID1cbiAgICAgICAgICAgIEpzb25VdGlsLnN0cmluZ19vZl93cml0ZVxuICAgICAgICAgICAgICAoZnVuIGIgKCkgLT5cbiAgICAgICAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgaWQpOyByZXF1ZXN0IF0pXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwb3N0IG1lc3NhZ2UgaW5cbiAgICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbWFpbGJveCBpZCAoQiAoaGFuZGxlLCBmZWVkZXIpKSBpblxuICAgICAgICAgIGxldCAoKSA9IGlkIDwtIHN1Y2MgaWQgaW5cbiAgICAgICAgICByZXN1bHRcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgKFJlc3VsdF91dGlsLmVycm9yXG4gICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwucmFuZ2UgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnRleHQgPSBcImthbW9oYSBhZ2VudCBoYXMgZGllZFwiO1xuICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX2RlbGV0ZSBmaWxlX2lkID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVEZWxldGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfdXBkYXRlIGZpbGVfaWQgZmlsZV9jb250ZW50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVVcGRhdGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9jb250ZW50KTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9tb3ZlIGZpbGVfcG9zaXRpb24gZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlTW92ZVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgYiBmaWxlX3Bvc2l0aW9uKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9nZXQgZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgSW5mbyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlR2V0XCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX2NyZWF0ZSBmaWxlX3Bvc2l0aW9uIGZpbGVfaWQgZmlsZV9jb250ZW50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVDcmVhdGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgZmlsZV9wb3NpdGlvbik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9jb250ZW50KTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9jYXRhbG9nID1cbiAgICAgIHNlbGYjbWVzc2FnZSBDYXRhbG9nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVDYXRhbG9nXCIpIF0pXG5cbiAgICBtZXRob2Qgc2VjcmV0X3Byb2plY3RfcGFyc2UgPVxuICAgICAgc2VsZiNtZXNzYWdlIEFzdCAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJQcm9qZWN0UGFyc2VcIikgXSlcblxuICAgIG1ldGhvZCBwcm9qZWN0X292ZXJ3cml0ZSBmaWxlX2lkIGFzdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJQcm9qZWN0T3ZlcndyaXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gQXN0LndyaXRlX3BhcnNpbmdfY29tcGlsIGIgYXN0KTtcbiAgICAgICAgICAgIF0pXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuY2xhc3Mgc2ltdWxhdGlvbiAocnVudGltZV9zdGF0ZSA6IEthcHBhX2ZhY2FkZS50KVxuICAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlcikgOlxuICBBcGlfZW52aXJvbm1lbnQuc2ltdWxhdGlvbiA9XG4gIG9iamVjdFxuICAgIHZhbCBtdXRhYmxlIF9ydW50aW1lX3N0YXRlID0gcnVudGltZV9zdGF0ZVxuICAgIHZhbCBtdXRhYmxlIF9zaW11bGF0aW9uX3BhcmFtZXRlciA9IHNpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgbWV0aG9kIGdldF9ydW50aW1lX3N0YXRlICgpID0gX3J1bnRpbWVfc3RhdGVcblxuICAgIG1ldGhvZCBzZXRfcnVudGltZV9zdGF0ZSAocnVudGltZV9zdGF0ZSA6IEthcHBhX2ZhY2FkZS50KSA9XG4gICAgICBfcnVudGltZV9zdGF0ZSA8LSBydW50aW1lX3N0YXRlXG5cbiAgICBtZXRob2QgZ2V0X3NpbXVsYXRpb25fcGFyYW1ldGVyICgpID0gX3NpbXVsYXRpb25fcGFyYW1ldGVyXG5cbiAgICBtZXRob2Qgc2V0X3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGFyYW1ldGVyKSA6IHVuaXQgPVxuICAgICAgX3NpbXVsYXRpb25fcGFyYW1ldGVyIDwtIHNpbXVsYXRpb25fcGFyYW1ldGVyXG4gIGVuZFxuXG5jbGFzcyBwcm9qZWN0IDogQXBpX2Vudmlyb25tZW50LnByb2plY3QgPVxuICBvYmplY3RcbiAgICB2YWwgbXV0YWJsZSBfc2ltdWxhdGlvbiA9IE5vbmVcblxuICAgIHZhbCBtdXRhYmxlIF9zdGF0ZSA6IEFwaV9lbnZpcm9ubWVudC5wYXJzZV9zdGF0ZSBvcHRpb24gTHd0LnQgPVxuICAgICAgTHd0LnJldHVybl9ub25lXG5cbiAgICBtZXRob2QgZ2V0X3NpbXVsYXRpb24gKCkgPSBfc2ltdWxhdGlvblxuICAgIG1ldGhvZCB1bnNldF9zaW11bGF0aW9uICgpID0gX3NpbXVsYXRpb24gPC0gTm9uZVxuXG4gICAgbWV0aG9kIHNldF9zaW11bGF0aW9uXG4gICAgICAgIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgICAocnVudGltZV9zdGF0ZSA6IEthcHBhX2ZhY2FkZS50KSA9XG4gICAgICBfc2ltdWxhdGlvbiA8LVxuICAgICAgICBTb21lXG4gICAgICAgICAgKG5ldyBzaW11bGF0aW9uIHJ1bnRpbWVfc3RhdGUgc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgIDo+IEFwaV9lbnZpcm9ubWVudC5zaW11bGF0aW9uKVxuXG4gICAgbWV0aG9kIHNldF9zdGF0ZSAoc3RhdGUgOiBBcGlfZW52aXJvbm1lbnQucGFyc2Vfc3RhdGUgTHd0LnQpID1cbiAgICAgIGxldCAoKSA9IEx3dC5jYW5jZWwgX3N0YXRlIGluXG4gICAgICBfc3RhdGUgPC0gKHN0YXRlID4+PSBmdW4geCAtPiBMd3QucmV0dXJuIChTb21lIHgpKVxuXG4gICAgbWV0aG9kIGdldF9zdGF0ZSAoKSA6IEFwaV9lbnZpcm9ubWVudC5wYXJzZV9zdGF0ZSBvcHRpb24gTHd0LnQgPSBfc3RhdGVcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBnb29kIG9sZCBjYWtlIHBhdHRlcm4gKilcblxuY2xhc3MgbWFuYWdlciAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpIDpcbiAgQXBpLm1hbmFnZXJfc2ltdWxhdGlvbiA9XG4gIGxldCBwcm9qZWN0ID0gbmV3IEVudmlyb25tZW50X21lbW9yeS5wcm9qZWN0IGluXG4gIG9iamVjdFxuICAgIGluaGVyaXQgTWFuYWdlcl9zaW11bGF0aW9uLm1hbmFnZXJfc2ltdWxhdGlvbiBwcm9qZWN0IHN5c3RlbV9wcm9jZXNzXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxudHlwZSB0ID0ge1xuICBzdGF0ZV9lcnJvcl9lcnJvcnM6IFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdDtcbiAgX3N0YXRlX2Vycm9yX2xvY2F0aW9uOiBzdHJpbmc7XG59XG5cbmxldCBzdGF0ZV9lcnJvciwgc2V0X3N0YXRlX2Vycm9yID0gUmVhY3QuUy5jcmVhdGUgKFtdIDogdCBsaXN0KVxuXG5sZXQgY2xlYXJfZXJyb3JzIGxvY2F0aW9uID1cbiAgbGV0ICgpID1cbiAgICBDb21tb24uZGVidWcgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJDbGVhcl9lcnJvcnMgJXMgXCIgbG9jYXRpb24pKVxuICBpblxuICBzZXRfc3RhdGVfZXJyb3IgW11cblxubGV0IGhhc19lcnJvcnMgKCkgPVxuICBtYXRjaCBSZWFjdC5TLnZhbHVlIHN0YXRlX2Vycm9yIHdpdGhcbiAgfCBbXSAtPiBmYWxzZVxuICB8IF8gOjogXyAtPiB0cnVlXG5cbmxldCBhZGRfZXJyb3IgKGxvY2F0aW9uIDogc3RyaW5nKSAoZXJyb3JzIDogUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSA9XG4gICgqIGxvZyBsb2NhdGlvbiBhbmQgZXJyb3JzIGlmIGRlYnVnZ2luZyBpcyBlbmFibGVkICopXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmRlYnVnXG4gICAgICAoSnMuc3RyaW5nXG4gICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwic2V0X2Vycm9ycyB7IGxvY2F0aW9uIDogXFxcIiVzXFxcIiAsIGVycm9ycyA6IFtAWyVhQF1dIH1cIlxuICAgICAgICAgICAgbG9jYXRpb25cbiAgICAgICAgICAgIChQcC5saXN0IFBwLnNwYWNlIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UpXG4gICAgICAgICAgICBlcnJvcnMpKVxuICBpblxuICBsZXQgY3VycmVudF9zdGF0ZV9lcnJvciA6IHQgbGlzdCA9IFJlYWN0LlMudmFsdWUgc3RhdGVfZXJyb3IgaW5cbiAgbGV0IG5ld19zdGF0ZV9lcnJvciA6IHQgbGlzdCA9XG4gICAgeyBzdGF0ZV9lcnJvcl9lcnJvcnMgPSBlcnJvcnM7IF9zdGF0ZV9lcnJvcl9sb2NhdGlvbiA9IGxvY2F0aW9uIH1cbiAgICA6OiBjdXJyZW50X3N0YXRlX2Vycm9yXG4gIGluXG4gIHNldF9zdGF0ZV9lcnJvciBuZXdfc3RhdGVfZXJyb3JcblxubGV0IGVycm9ycyA6IFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCBSZWFjdC5zaWduYWwgPVxuICBSZWFjdC5TLm1hcFxuICAgIChmdW4gKHN0YXRlX2Vycm9yIDogdCBsaXN0KSAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBhY2MgdmFsdWUgLT4gdmFsdWUuc3RhdGVfZXJyb3JfZXJyb3JzIEAgYWNjKVxuICAgICAgICBbXSBzdGF0ZV9lcnJvcilcbiAgICBzdGF0ZV9lcnJvclxuXG5sZXQgd3JhcCA6XG4gICAgICAnYS4gP2FwcGVuZDpib29sIC0+IHN0cmluZyAtPiAnYSBBcGkucmVzdWx0IEx3dC50IC0+ICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuIGZ1biA/KGFwcGVuZCA9IGZhbHNlKSBsb2MgciAtPlxuICByXG4gID4+PVxuICBsZXQgKCkgPSBpZiBub3QgYXBwZW5kIHRoZW4gY2xlYXJfZXJyb3JzIGxvYyBpblxuICBSZXN1bHRfdXRpbC5mb2xkXG4gICAgfm9rOihmdW4gciAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayByKSlcbiAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgIGxldCAoKSA9IGFkZF9lcnJvciBsb2MgZXJyb3JzIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyBlcnJvcnMpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IHVybF9hcmdzID8oZGVmYXVsdCA9IFtdKSBrZXkgOiBzdHJpbmcgbGlzdCA9XG4gICgqIEhvc3RzIHRoZSB1c2VyIHNwZWNpZmllZCBvbiB0aGUgdXJsIGluIHRoZSBmb3JtXG4gICAgIGtleT0uLi4ma2V5PS4uJi4uLlxuICAqKVxuICBsZXQgYXJncyA9IFVybC5DdXJyZW50LmFyZ3VtZW50cyBpblxuICBtYXRjaCBMaXN0Lm1hcCBzbmQgKExpc3QuZmlsdGVyIChmdW4gKGssIF8pIC0+IGsgPSBrZXkpIGFyZ3MpIHdpdGhcbiAgfCBbXSAtPiBkZWZhdWx0XG4gIHwgc29tZSAtPiBzb21lXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5jbGFzcyB0eXBlIHByb2Nlc3NfY29uZmlndXJhdGlvbiA9IG9iamVjdFxuICBtZXRob2QgY29tbWFuZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgbWV0aG9kIGFyZ3MgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnByb3BcbiAgbWV0aG9kIG9uU3Rkb3V0IDogKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIEpzLnByb3BcbiAgbWV0aG9kIG9uU3RkZXJyIDogKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIEpzLnByb3BcbiAgbWV0aG9kIG9uQ2xvc2UgOiAodW5pdCAtPiB1bml0KSBKcy5wcm9wXG4gIG1ldGhvZCBvbkVycm9yIDogKHVuaXQgLT4gdW5pdCkgSnMucHJvcFxuZW5kXG5cbmxldCBjb25zdHJ1Y3Rvcl9wcm9jZXNzX2NvbmZpZ3VyYXRpb24gOiBwcm9jZXNzX2NvbmZpZ3VyYXRpb24gSnMudCBKcy5jb25zdHIgPVxuICBKcy5VbnNhZmUucHVyZV9qc19leHByIFwiT2JqZWN0XCJcblxubGV0IGNyZWF0ZV9wcm9jZXNzX2NvbmZpZ3VyYXRpb25cbiAgICA/KG9uU3Rkb3V0IDogKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIG9wdGlvbilcbiAgICA/KG9uU3RkZXJyIDogKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIG9wdGlvbilcbiAgICA/KG9uQ2xvc2UgOiAodW5pdCAtPiB1bml0KSBvcHRpb24pID8ob25FcnJvciA6ICh1bml0IC0+IHVuaXQpIG9wdGlvbilcbiAgICAoY29tbWFuZCA6IHN0cmluZykgKGFyZ3MgOiBzdHJpbmcgbGlzdCkgOiBwcm9jZXNzX2NvbmZpZ3VyYXRpb24gSnMudCA9XG4gIGxldCBjb25maWd1cmF0aW9uIDogcHJvY2Vzc19jb25maWd1cmF0aW9uIEpzLnQgPVxuICAgIG5ldyVqcyBjb25zdHJ1Y3Rvcl9wcm9jZXNzX2NvbmZpZ3VyYXRpb25cbiAgaW5cbiAgbGV0ICgpID1cbiAgICBjb25maWd1cmF0aW9uIyMuY29tbWFuZCA6PSBKcy5zdHJpbmcgY29tbWFuZDtcbiAgICBjb25maWd1cmF0aW9uIyMuYXJncyA6PSBKcy5hcnJheSAoQXJyYXkub2ZfbGlzdCAoTGlzdC5tYXAgSnMuc3RyaW5nIGFyZ3MpKTtcbiAgICAobWF0Y2ggb25TdGRvdXQgd2l0aFxuICAgIHwgU29tZSBvblN0ZG91dCAtPiBjb25maWd1cmF0aW9uIyMub25TdGRvdXQgOj0gb25TdGRvdXRcbiAgICB8IE5vbmUgLT4gKCkpO1xuICAgIChtYXRjaCBvblN0ZGVyciB3aXRoXG4gICAgfCBTb21lIG9uU3RkZXJyIC0+IGNvbmZpZ3VyYXRpb24jIy5vblN0ZGVyciA6PSBvblN0ZGVyclxuICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgKG1hdGNoIG9uQ2xvc2Ugd2l0aFxuICAgIHwgU29tZSBvbkNsb3NlIC0+IGNvbmZpZ3VyYXRpb24jIy5vbkNsb3NlIDo9IG9uQ2xvc2VcbiAgICB8IE5vbmUgLT4gKCkpO1xuICAgIChtYXRjaCBvbkVycm9yIHdpdGhcbiAgICB8IFNvbWUgb25FcnJvciAtPiBjb25maWd1cmF0aW9uIyMub25FcnJvciA6PSBvbkVycm9yXG4gICAgfCBOb25lIC0+ICgpKTtcbiAgICAoKVxuICBpblxuICBjb25maWd1cmF0aW9uXG5cbmNsYXNzIHR5cGUgcHJvY2VzcyA9IG9iamVjdFxuICBtZXRob2Qgd3JpdGUgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGtpbGwgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgc3Bhd25fcHJvY2VzcyAoY29uZmlndXJhdGlvbiA6IHByb2Nlc3NfY29uZmlndXJhdGlvbiBKcy50KSA6XG4gICAgcHJvY2VzcyBKcy50IEpzLm9wdCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcInNwYXduUHJvY2Vzc1wiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgY29uZmlndXJhdGlvbiB8XVxuXG5sZXQgbGF1bmNoX2FnZW50IChvbkNsb3NlIDogdW5pdCAtPiB1bml0KSAobWVzc2FnZV9kZWxpbWl0ZXIgOiBjaGFyKVxuICAgIChjb21tYW5kIDogc3RyaW5nKSAoYXJncyA6IHN0cmluZyBsaXN0KSAoaGFuZGxlciA6IHN0cmluZyAtPiB1bml0KSA6XG4gICAgPCBraWxsIDogdW5pdCBKcy5tZXRoIDsgd3JpdGUgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGggPiBKcy50ID1cbiAgbGV0IGJ1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgNTEyIGluXG4gIGxldCByZWMgb25TdGRvdXQgbXNnID1cbiAgICBtYXRjaCBUb29scy5zdHJpbmdfc3BsaXRfb25fY2hhciBtZXNzYWdlX2RlbGltaXRlciAoSnMudG9fc3RyaW5nIG1zZykgd2l0aFxuICAgIHwgcHJlZml4LCBOb25lIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZmZlciBwcmVmaXhcbiAgICB8IHByZWZpeCwgU29tZSBzdWZmaXggLT5cbiAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZmZlciBwcmVmaXggaW5cbiAgICAgIGxldCAoKSA9IGhhbmRsZXIgKEJ1ZmZlci5jb250ZW50cyBidWZmZXIpIGluXG4gICAgICBsZXQgKCkgPSBCdWZmZXIucmVzZXQgYnVmZmVyIGluXG4gICAgICBvblN0ZG91dCAoSnMuc3RyaW5nIHN1ZmZpeClcbiAgaW5cbiAgbGV0IGNvbmZpZ3VyYXRpb24gOiBwcm9jZXNzX2NvbmZpZ3VyYXRpb24gSnMudCA9XG4gICAgY3JlYXRlX3Byb2Nlc3NfY29uZmlndXJhdGlvbiB+b25TdGRvdXQgfm9uQ2xvc2UgY29tbWFuZCBhcmdzXG4gIGluXG4gIEpzLk9wdC5jYXNlXG4gICAgKHNwYXduX3Byb2Nlc3MgY29uZmlndXJhdGlvbilcbiAgICAoZnVuICgpIC0+XG4gICAgICBsZXQgKCkgPSBvbkNsb3NlICgpIGluXG4gICAgICBmYWlsd2l0aCAoXCJMYXVuY2hpbmcgJ1wiIF4gY29tbWFuZCBeIFwiJyBmYWlsZWRcIikpXG4gICAgKGZ1biB4IC0+IHgpXG5cbmNsYXNzIG1hbmFnZXIgPyhtZXNzYWdlX2RlbGltaXRlciA6IGNoYXIgPSBUb29scy5kZWZhdWx0X21lc3NhZ2VfZGVsaW10ZXIpXG4gIChjb21tYW5kIDogc3RyaW5nKSAoYXJncyA6IHN0cmluZyBsaXN0KSA6XG4gIEFwaS5jb25jcmV0ZV9tYW5hZ2VyID1cbiAgbGV0IHN3aXRjaF9yZSA9IFJlLmNvbXBpbGUgKFJlLnN0ciBcIkthcHBhU3dpdGNobWFuXCIpIGluXG4gIGxldCBzdG9yX2NvbW1hbmQgPSBSZS5yZXBsYWNlX3N0cmluZyBzd2l0Y2hfcmUgfmJ5OlwiS2FTdG9yXCIgY29tbWFuZCBpblxuICBsZXQgc3dpdGNoX21haWxib3ggPSBTd2l0Y2htYW5fY2xpZW50Lm5ld19tYWlsYm94ICgpIGluXG4gIGxldCBzdG9yX3N0YXRlLCB1cGRhdGVfc3Rvcl9zdGF0ZSA9IEthc3Rvcl9jbGllbnQuaW5pdF9zdGF0ZSAoKSBpblxuICBsZXQgcnVubmluZ19yZWYgPSByZWYgdHJ1ZSBpblxuICBsZXQgb25DbG9zZSAoKSA9IHJ1bm5pbmdfcmVmIDo9IGZhbHNlIGluXG4gIGxldCBzdG9yX3Byb2Nlc3MgPVxuICAgIGxhdW5jaF9hZ2VudCBvbkNsb3NlIG1lc3NhZ2VfZGVsaW1pdGVyIHN0b3JfY29tbWFuZCBhcmdzXG4gICAgICAoS2FzdG9yX2NsaWVudC5yZWNlaXZlIHVwZGF0ZV9zdG9yX3N0YXRlKVxuICBpblxuICBsZXQgc3dpdGNoX3Byb2Nlc3MgPVxuICAgIGxhdW5jaF9hZ2VudCBvbkNsb3NlIG1lc3NhZ2VfZGVsaW1pdGVyIGNvbW1hbmQgYXJnc1xuICAgICAgKFN3aXRjaG1hbl9jbGllbnQucmVjZWl2ZSBzd2l0Y2hfbWFpbGJveClcbiAgaW5cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCBwcml2YXRlIHNsZWVwIHRpbWVvdXQgPSBKc19vZl9vY2FtbF9sd3QuTHd0X2pzLnNsZWVwIHRpbWVvdXRcbiAgICBtZXRob2QgaXNfcnVubmluZyA9ICFydW5uaW5nX3JlZlxuXG4gICAgbWV0aG9kIHRlcm1pbmF0ZSA9XG4gICAgICBsZXQgKCkgPSBzd2l0Y2hfcHJvY2VzcyMja2lsbCBpblxuICAgICAgbGV0ICgpID0gc3Rvcl9wcm9jZXNzIyNraWxsIGluXG4gICAgICAoKVxuXG4gICAgbWV0aG9kIGlzX2NvbXB1dGluZyA9XG4gICAgICBTd2l0Y2htYW5fY2xpZW50LmlzX2NvbXB1dGluZyBzd2l0Y2hfbWFpbGJveCB8fCBzZWxmI3N0b3J5X2lzX2NvbXB1dGluZ1xuXG4gICAgaW5oZXJpdFxuICAgICAgS2FzdG9yX2NsaWVudC5uZXdfY2xpZW50XG4gICAgICAgIH5wb3N0OihmdW4gbWVzc2FnZV90ZXh0IC0+XG4gICAgICAgICAgc3Rvcl9wcm9jZXNzIyN3cml0ZVxuICAgICAgICAgICAgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCIlcyVjXCIgbWVzc2FnZV90ZXh0IG1lc3NhZ2VfZGVsaW1pdGVyKSkpXG4gICAgICAgIHN0b3Jfc3RhdGVcblxuICAgIGluaGVyaXRcbiAgICAgIFN3aXRjaG1hbl9jbGllbnQubmV3X2NsaWVudFxuICAgICAgICB+aXNfcnVubmluZzooZnVuICgpIC0+IHRydWUpXG4gICAgICAgIH5wb3N0OihmdW4gbWVzc2FnZV90ZXh0IC0+XG4gICAgICAgICAgc3dpdGNoX3Byb2Nlc3MjI3dyaXRlXG4gICAgICAgICAgICAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcIiVzJWNcIiBtZXNzYWdlX3RleHQgbWVzc2FnZV9kZWxpbWl0ZXIpKSlcbiAgICAgICAgc3dpdGNoX21haWxib3hcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leGNlcHRpb24gQmFkUmVzcG9uc2Ugb2YgTXBpX21lc3NhZ2Vfai5yZXN0X3Jlc3BvbnNlX2NvbnRlbnRcbmV4Y2VwdGlvbiBCYWRSZXNwb25zZUNvZGUgb2YgaW50XG5leGNlcHRpb24gVGltZU91dFxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgcmVxdWVzdF91cCB2ID0gaW5jciB2XG5sZXQgcmVxdWVzdF9kb3duIHYgPSBkZWNyIHZcbmxldCBpc19jb21wdXRpbmcgdiA9ICF2IDw+IDBcblxubGV0IHNlbmQgPyh0aW1lb3V0IDogZmxvYXQgb3B0aW9uKSByZXF1ZXN0X2NvdW50ICh1cmwgOiBzdHJpbmcpXG4gICAgKG1ldGggOiBDb21tb24ubWV0aCkgPyhkYXRhIDogc3RyaW5nIG9wdGlvbikgKGh5ZHJhdGUgOiBzdHJpbmcgLT4gJ2EpIDpcbiAgICAnYSBBcGkucmVzdWx0IEx3dC50ID1cbiAgbGV0IHJlcGx5LCBmZWVkZXIgPSBMd3QudGFzayAoKSBpblxuICBsZXQgaGFuZGxlciBzdGF0dXMgcmVzcG9uc2VfdGV4dCA9XG4gICAgbGV0IHJlc3VsdF9jb2RlIDogUmVzdWx0X3V0aWwuc3RhdHVzIG9wdGlvbiA9XG4gICAgICBtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgfCAyMDAgLT4gU29tZSBgT0tcbiAgICAgIHwgMjAxIC0+IFNvbWUgYENyZWF0ZWRcbiAgICAgIHwgMjAyIC0+IFNvbWUgYEFjY2VwdGVkXG4gICAgICB8IDQwMCAtPiBTb21lIGBCYWRfcmVxdWVzdFxuICAgICAgfCA0MDQgLT4gU29tZSBgTm90X2ZvdW5kXG4gICAgICB8IDQwOCAtPiBTb21lIGBSZXF1ZXN0X3RpbWVvdXRcbiAgICAgIHwgNDA5IC0+IFNvbWUgYENvbmZsaWN0XG4gICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBtYXRjaCByZXN1bHRfY29kZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZUNvZGUgc3RhdHVzKVxuICAgICAgfCBTb21lIHJlc3VsdF9jb2RlIC0+XG4gICAgICAgIGlmIDQwMCA8PSBzdGF0dXMgJiYgc3RhdHVzIDwgNTAwIHRoZW5cbiAgICAgICAgICBBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyB+cmVzdWx0X2NvZGVcbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0IFJlc3VsdF91dGlsLnJlYWRfbWVzc2FnZVxuICAgICAgICAgICAgICAgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpXG4gICAgICAgICAgICAgICAoTGV4aW5nLmZyb21fc3RyaW5nIHJlc3BvbnNlX3RleHQpKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBoeWRyYXRlIHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICBSZXN1bHRfdXRpbC5vayByZXNwb25zZVxuICAgICAgICApXG4gICAgaW5cbiAgICBsZXQgKCkgPSByZXF1ZXN0X2Rvd24gcmVxdWVzdF9jb3VudCBpblxuICAgIGxldCAoKSA9IEx3dC53YWtldXAgZmVlZGVyIHJlc3VsdCBpblxuICAgICgpXG4gIGluXG4gIGxldCAoKSA9IHJlcXVlc3RfdXAgcmVxdWVzdF9jb3VudCBpblxuICBsZXQgKCkgPSBDb21tb24uYWpheF9yZXF1ZXN0IH51cmwgfm1ldGggP3RpbWVvdXQgP2RhdGEgfmhhbmRsZXIgaW5cbiAgcmVwbHlcblxubGV0IGthc2FfZXJyb3IgbCA9XG4gIEx3dC5yZXR1cm5fZXJyb3JcbiAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAoZnVuIGFjYyBtIC0+XG4gICAgICAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYWRkX3VuY2F1Z2h0X2Vycm9yXG4gICAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uXG4gICAgICAgICAgICAgIH5maWxlX25hbWU6XCJyZXN0X2FwaVwiIH5tZXNzYWdlOm0uUmVzdWx0X3V0aWwudGV4dCBFeGl0KVxuICAgICAgICAgICBhY2MpXG4gICAgICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmVtcHR5X2Vycm9yX2hhbmRsZXIgbClcblxuY2xhc3MgbWFuYWdlciB+KHRpbWVvdXQgOiBmbG9hdCBvcHRpb24pIH51cmwgfnByb2plY3RfaWQgOiBBcGkucmVzdF9tYW5hZ2VyID1cbiAgbGV0IHJlcXVlc3RfY291bnQgPSByZWYgMCBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHByaXZhdGUgbWVzc2FnZVxuICAgICAgICA6IE1waV9tZXNzYWdlX2oucmVxdWVzdCAtPiBNcGlfbWVzc2FnZV9qLnJlc3BvbnNlIEx3dC50ID1cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IGBQcm9qZWN0TG9hZCBfIC0+XG4gICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yZXN1bHRfY29kZTpgQmFkX3JlcXVlc3RcbiAgICAgICAgICAgICBcImxvdyBsZXZlbCBwcm9qZWN0X2xvYWQgbXVzdG4ndCBiZSB1c2VkIG92ZXIgSFRUUFwiKVxuICAgICAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIHBhdXNlX2NvbmRpdGlvbiAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL2NvbnRpbnVlXCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgICAgYFBVVFxuICAgICAgICAgIH5kYXRhOihZb2pzb24uU2FmZS50b19zdHJpbmcgKGBTdHJpbmcgcGF1c2VfY29uZGl0aW9uKSlcbiAgICAgICAgICAoZnVuIF8gLT4gYFNpbXVsYXRpb25Db250aW51ZSlcbiAgICAgIHwgYFNpbXVsYXRpb25EZWxldGUgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvblwiIHVybCBwcm9qZWN0X2lkKSBgREVMRVRFXG4gICAgICAgICAgKGZ1biBfIC0+IGBTaW11bGF0aW9uRGVsZXRlKVxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIGZpbGVfbGluZV9pZCAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL2ZpbGVsaW5lcy8lc1wiIHVybFxuICAgICAgICAgICAgIHByb2plY3RfaWQgZmlsZV9saW5lX2lkKSBgR0VUIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBsZXQgbGluZXMgPVxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2xpc3QgWW9qc29uLlNhZmUucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSlcbiAgICAgICAgICAgICAgICAoTGV4aW5nLmZyb21fc3RyaW5nIHJlc3VsdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIGxpbmVzKVxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbERJTiBmbHV4X21hcF9pZCAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL0RJTi8lc1wiIHVybCBwcm9qZWN0X2lkXG4gICAgICAgICAgICAgZmx1eF9tYXBfaWQpIGBHRVQgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIChNcGlfbWVzc2FnZV9qLmRpbl9vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vbG9nbWVzc2FnZXNcIiB1cmxcbiAgICAgICAgICAgICBwcm9qZWN0X2lkKSBgR0VUIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcbiAgICAgICAgICAgICAgKE1waV9tZXNzYWdlX2oubG9nX21lc3NhZ2Vfb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsUGxvdCBwbG90X2xpbWl0IC0+XG4gICAgICAgIGxldCBhcmdzID1cbiAgICAgICAgICBTdHJpbmcuY29uY2F0IFwiJlwiXG4gICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgIChmdW4gKGtleSwgdmFsdWUpIC0+IEZvcm1hdC5zcHJpbnRmIFwiJXM9JXNcIiBrZXkgdmFsdWUpXG4gICAgICAgICAgICAgICAoKG1hdGNoIHBsb3RfbGltaXQuQXBpX3R5cGVzX2oucGxvdF9saW1pdF9vZmZzZXQgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgICAgIHwgU29tZSBwbG90X2xpbWl0X29mZnNldCAtPlxuICAgICAgICAgICAgICAgICAgWyBcInBsb3RfbGltaXRfb2Zmc2V0XCIsIHN0cmluZ19vZl9pbnQgcGxvdF9saW1pdF9vZmZzZXQgXSlcbiAgICAgICAgICAgICAgIEBcbiAgICAgICAgICAgICAgIG1hdGNoIHBsb3RfbGltaXQuQXBpX3R5cGVzX2oucGxvdF9saW1pdF9wb2ludHMgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICB8IFNvbWUgcGxvdF9saW1pdF9wb2ludHMgLT5cbiAgICAgICAgICAgICAgICAgWyBcInBsb3RfbGltaXRfcG9pbnRzXCIsIHN0cmluZ19vZl9pbnQgcGxvdF9saW1pdF9wb2ludHMgXSkpXG4gICAgICAgIGluXG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vcGxvdFwiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICAgIGBHRVQgfmRhdGE6YXJncyAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IChNcGlfbWVzc2FnZV9qLnBsb3Rfb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3Qgc25hcHNob3RfaWQgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9zbmFwc2hvdHMvJXNcIiB1cmxcbiAgICAgICAgICAgICBwcm9qZWN0X2lkIHNuYXBzaG90X2lkKSBgR0VUIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XG4gICAgICAgICAgICAgIChNcGlfbWVzc2FnZV9qLnNuYXBzaG90X2RldGFpbF9vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFNpbXVsYXRpb25JbmZvIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb25cIiB1cmwgcHJvamVjdF9pZCkgYEdFVFxuICAgICAgICAgIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvbkluZm8gKE1waV9tZXNzYWdlX2ouc2ltdWxhdGlvbl9pbmZvX29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9lZmZpY2llbmN5XCIgdXJsXG4gICAgICAgICAgICAgcHJvamVjdF9pZCkgYEdFVCAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25FZmZpY2llbmN5XG4gICAgICAgICAgICAgIChNcGlfbWVzc2FnZV9qLnNpbXVsYXRpb25fZWZmaWNpZW5jeV9vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFNpbXVsYXRpb25UcmFjZSAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL3RyYWNlXCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgICAgYEdFVCAoZnVuIHMgLT4gYFNpbXVsYXRpb25UcmFjZSBzKVxuICAgICAgfCBgU2ltdWxhdGlvbk91dHB1dHNaaXAgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9vdXRwdXRzXCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgICAgYEdFVCAoZnVuIHMgLT4gYFNpbXVsYXRpb25PdXRwdXRzWmlwIHMpXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vZmlsZWxpbmVzXCIgdXJsXG4gICAgICAgICAgICAgcHJvamVjdF9pZCkgYEdFVCAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcbiAgICAgICAgICAgICAgKE1waV9tZXNzYWdlX2ouZmlsZV9saW5lX2NhdGFsb2dfb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL0RJTlwiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICAgIGBHRVQgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiAoTXBpX21lc3NhZ2Vfai5kaW5fY2F0YWxvZ19vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9zbmFwc2hvdHNcIiB1cmxcbiAgICAgICAgICAgICBwcm9qZWN0X2lkKSBgR0VUIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgICAgICAgICAoTXBpX21lc3NhZ2Vfai5zbmFwc2hvdF9jYXRhbG9nX29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vcGF1c2VcIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgICBgUFVUIChmdW4gXyAtPiBgU2ltdWxhdGlvblBhdXNlKVxuICAgICAgfCBgU2ltdWxhdGlvblBhcmFtZXRlciAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL3BhcmFtZXRlclwiIHVybFxuICAgICAgICAgICAgIHByb2plY3RfaWQpIGBHRVQgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyXG4gICAgICAgICAgICAgIChNcGlfbWVzc2FnZV9qLnNpbXVsYXRpb25fcGFyYW1ldGVyX29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgU2ltdWxhdGlvbkludGVydmVudGlvbiBzaW11bGF0aW9uX2ludGVydmVudGlvbiAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL2ludGVydmVudGlvblwiIHVybFxuICAgICAgICAgICAgIHByb2plY3RfaWQpIGBQVVRcbiAgICAgICAgICB+ZGF0YTpcbiAgICAgICAgICAgIChBcGlfdHlwZXNfai5zdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgICAgICAgIHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uKSAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb25cbiAgICAgICAgICAgICAgKFlvanNvbi5TYWZlLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKVxuICAgICAgICAgICAgICAgICAoTGV4aW5nLmZyb21fc3RyaW5nIHJlc3VsdCkpKVxuICAgICAgfCBgU2ltdWxhdGlvblN0YXJ0IHNpbXVsYXRpb25fcGFyYW1ldGVyIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb25cIiB1cmwgcHJvamVjdF9pZCkgYFBPU1RcbiAgICAgICAgICB+ZGF0YTpcbiAgICAgICAgICAgIChBcGlfdHlwZXNfai5zdHJpbmdfb2Zfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgc2ltdWxhdGlvbl9wYXJhbWV0ZXIpXG4gICAgICAgICAgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uU3RhcnRcbiAgICAgICAgICAgICAgKE1waV9tZXNzYWdlX2ouc2ltdWxhdGlvbl9hcnRpZmFjdF9vZl9zdHJpbmcgcmVzdWx0KSlcblxuICAgIGluaGVyaXQgTXBpX2FwaS5tYW5hZ2VyX2Jhc2UgKClcblxuICAgIG1ldGhvZCBwcml2YXRlIHJlc3RfbWVzc2FnZSA9XG4gICAgICBmdW5jdGlvblxuICAgICAgfCBgRW52aXJvbm1lbnRJbmZvIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudCAoRm9ybWF0LnNwcmludGYgXCIlcy92MlwiIHVybCkgYEdFVFxuICAgICAgICAgIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgRW52aXJvbm1lbnRJbmZvIChNcGlfbWVzc2FnZV9qLmVudmlyb25tZW50X2luZm9fb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBQcm9qZWN0Q2F0YWxvZyAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnQgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHNcIiB1cmwpIGBHRVRcbiAgICAgICAgICAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgbGV0IHByb2plY3RzID1cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9saXN0IFlvanNvbi5TYWZlLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpXG4gICAgICAgICAgICAgICAgKExleGluZy5mcm9tX3N0cmluZyByZXN1bHQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYFByb2plY3RDYXRhbG9nIHByb2plY3RzKVxuICAgICAgfCBgUHJvamVjdENyZWF0ZSBwcm9qZWN0X3BhcmFtZXRlciAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnQgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHNcIiB1cmwpIGBQT1NUXG4gICAgICAgICAgfmRhdGE6KEFwaV90eXBlc19qLnN0cmluZ19vZl9wcm9qZWN0X3BhcmFtZXRlciBwcm9qZWN0X3BhcmFtZXRlcilcbiAgICAgICAgICAoZnVuIF8gLT4gYFByb2plY3RDcmVhdGUpXG4gICAgICB8IGBQcm9qZWN0RGVsZXRlIHByb2plY3RfaWQgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXNcIiB1cmwgcHJvamVjdF9pZCkgYERFTEVURSAoZnVuIF8gLT5cbiAgICAgICAgICAgIGBQcm9qZWN0RGVsZXRlKVxuXG4gICAgbWV0aG9kIGVudmlyb25tZW50X2luZm8gKCkgOiBBcGlfdHlwZXNfai5lbnZpcm9ubWVudF9pbmZvIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNyZXN0X21lc3NhZ2UgYEVudmlyb25tZW50SW5mb1xuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYEVudmlyb25tZW50SW5mbyAocmVzdWx0IDogTXBpX21lc3NhZ2VfdC5lbnZpcm9ubWVudF9pbmZvKSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayByZXN1bHQpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHByb2plY3RfZGVsZXRlIHByb2plY3RfaWQgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNyZXN0X21lc3NhZ2UgKGBQcm9qZWN0RGVsZXRlIHByb2plY3RfaWQpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgUHJvamVjdERlbGV0ZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2QgcHJvamVjdF9jYXRhbG9nIDogc3RyaW5nIGxpc3QgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI3Jlc3RfbWVzc2FnZSBgUHJvamVjdENhdGFsb2dcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBQcm9qZWN0Q2F0YWxvZyByZXN1bHQgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcmVzdWx0KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBwcm9qZWN0X2NyZWF0ZSAocHJvamVjdF9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5wcm9qZWN0X3BhcmFtZXRlcilcbiAgICAgICAgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNyZXN0X21lc3NhZ2UgKGBQcm9qZWN0Q3JlYXRlIHByb2plY3RfcGFyYW1ldGVyKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFByb2plY3RDcmVhdGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNlY3JldF9wcm9qZWN0X3BhcnNlID1cbiAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YEJhZF9yZXF1ZXN0XG4gICAgICAgICAgIFwibG93IGxldmVsIHByb2plY3RfcGFyc2UgbXVzdG4ndCBiZSB1c2VkIG92ZXIgSFRUUFwiKVxuXG4gICAgbWV0aG9kIHNlY3JldF9nZXRfcG9zX29mX3J1bGVzX2FuZF92YXJzID1cbiAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YEJhZF9yZXF1ZXN0XG4gICAgICAgICAgIFwibG93IGxldmVsIGdldF9wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnMgbXVzdG4ndCBiZSB1c2VkIG92ZXIgSFRUUFwiKVxuXG4gICAgbWV0aG9kIHByb2plY3RfcGFyc2UgfnBhdHRlcm5TaGFyaW5nIG92ZXJ3cml0ZSA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3BhcnNlLyVzJXRcIiB1cmwgcHJvamVjdF9pZFxuICAgICAgICAgICAobWF0Y2ggcGF0dGVyblNoYXJpbmcgd2l0aFxuICAgICAgICAgICB8IFBhdHRlcm4uTm9fc2hhcmluZyAtPiBcIm5vX3NoYXJpbmdcIlxuICAgICAgICAgICB8IFBhdHRlcm4uQ29tcGF0aWJsZV9wYXR0ZXJucyAtPiBcImNvbXBhdGlibGVfcGF0dGVybnNcIlxuICAgICAgICAgICB8IFBhdHRlcm4uTWF4X3NoYXJpbmcgLT4gXCJtYXhfc2hhcmluZ1wiKVxuICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICBtYXRjaCBvdmVyd3JpdGUgd2l0aFxuICAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgICB8IGwgLT5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI/JWFcIlxuICAgICAgICAgICAgICAgICAoUHAubGlzdFxuICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiJlwiKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIGYgKHZyLCB2YSkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzPSVhXCIgdnIgTmJyLnByaW50IHZhKSlcbiAgICAgICAgICAgICAgICAgbCkpXG4gICAgICAgIGBQT1NUXG4gICAgICAgIChKc29uVXRpbC5yZWFkX29mX3N0cmluZyBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuXG4gICAgbWV0aG9kIHRlcm1pbmF0ZSA9IEx3dC5pZ25vcmVfcmVzdWx0IChzZWxmI3Byb2plY3RfZGVsZXRlIHByb2plY3RfaWQpXG4gICAgbWV0aG9kIGlzX3J1bm5pbmcgPSB0cnVlICgqVE9ETyopXG5cbiAgICBtZXRob2QgZmlsZV9jYXRhbG9nID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9maWxlc1wiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICBgR0VUXG4gICAgICAgIChKc29uVXRpbC5yZWFkX29mX3N0cmluZ1xuICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBLZmlsZXMucmVhZF9jYXRhbG9nX2l0ZW0pKVxuXG4gICAgbWV0aG9kIGZpbGVfY3JlYXRlIHBvcyBpZCBjb250ZW50ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9maWxlcy8lcy9wb3NpdGlvbi8laVwiIHVybCBwcm9qZWN0X2lkXG4gICAgICAgICAgIGlkIHBvcylcbiAgICAgICAgYFBVVFxuICAgICAgICB+ZGF0YTooWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoYFN0cmluZyBjb250ZW50KSlcbiAgICAgICAgKEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG5cbiAgICBtZXRob2QgZmlsZV9nZXQgaWQgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2ZpbGVzLyVzXCIgdXJsIHByb2plY3RfaWQgaWQpXG4gICAgICAgIGBHRVRcbiAgICAgICAgKEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nXG4gICAgICAgICAgIChKc29uVXRpbC5yZWFkX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfaW50KSlcblxuICAgIG1ldGhvZCBmaWxlX3VwZGF0ZSBpZCBjb250ZW50ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9maWxlcy8lc1wiIHVybCBwcm9qZWN0X2lkIGlkKVxuICAgICAgICBgUE9TVFxuICAgICAgICB+ZGF0YTooWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoYFN0cmluZyBjb250ZW50KSlcbiAgICAgICAgKEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG5cbiAgICBtZXRob2QgZmlsZV9tb3ZlIHBvcyBpZCA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvZmlsZXMvJXMvcG9zaXRpb24vJWlcIiB1cmwgcHJvamVjdF9pZFxuICAgICAgICAgICBpZCBwb3MpXG4gICAgICAgIGBQT1NUXG4gICAgICAgIChKc29uVXRpbC5yZWFkX29mX3N0cmluZyBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuXG4gICAgbWV0aG9kIGZpbGVfZGVsZXRlIGlkID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9maWxlcy8lc1wiIHVybCBwcm9qZWN0X2lkIGlkKVxuICAgICAgICBgREVMRVRFXG4gICAgICAgIChKc29uVXRpbC5yZWFkX29mX3N0cmluZyBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuXG4gICAgbWV0aG9kIHByb2plY3Rfb3ZlcndyaXRlIGZpbGVfaWQgYXN0ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9vdmVyd3JpdGUvJXNcIiB1cmwgcHJvamVjdF9pZCBmaWxlX2lkKVxuICAgICAgICBgUE9TVFxuICAgICAgICB+ZGF0YTooWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoQXN0LmNvbXBpbF90b19qc29uIGFzdCkpXG4gICAgICAgIChKc29uVXRpbC5yZWFkX29mX3N0cmluZyBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuXG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyX3JhdyBkYXRhID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlc1wiIHVybCBwcm9qZWN0X2lkKSBgUFVUIH5kYXRhXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIG1hdGNoIFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4IHdpdGhcbiAgICAgICAgICB8IGBOdWxsIC0+ICgpXG4gICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBLYVNhIElOSVQgcmVzcG9uc2U6IFwiLCB4KSkpXG5cbiAgICBtZXRob2QgaW5pdF9zdGF0aWNfYW5hbHlzZXIgY29tcGlsID1cbiAgICAgIHNlbGYjaW5pdF9zdGF0aWNfYW5hbHlzZXJfcmF3XG4gICAgICAgIChZb2pzb24uQmFzaWMudG9fc3RyaW5nIChBc3QuY29tcGlsX3RvX2pzb24gY29tcGlsKSlcblxuICAgIG1ldGhvZCBnZXRfY29udGFjdF9tYXAgYWNjdXJhY3kgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgIHwgU29tZSBhY2N1cmFjeSAtPlxuICAgICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvY29udGFjdF9tYXA/YWNjdXJhY3k9JXNcIlxuICAgICAgICAgICAgdXJsIHByb2plY3RfaWRcbiAgICAgICAgICAgIChQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgYWNjdXJhY3kpXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvY29udGFjdF9tYXBcIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgYEdFVFxuICAgICAgICAoZnVuIHggLT4gWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpXG5cbiAgICBtZXRob2QgZ2V0X2luZmx1ZW5jZV9tYXBfcmF3IGFjY3VyYWN5ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAobWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICB8IFNvbWUgYWNjdXJhY3kgLT5cbiAgICAgICAgICBGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2luZmx1ZW5jZV9tYXA/YWNjdXJhY3k9JXNcIlxuICAgICAgICAgICAgdXJsIHByb2plY3RfaWRcbiAgICAgICAgICAgIChQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgYWNjdXJhY3kpXG4gICAgICAgIHwgTm9uZSAtPiBGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL2FuYWx5c2VzL2luZmx1ZW5jZV9tYXBcIiB1cmwpXG4gICAgICAgIGBHRVRcbiAgICAgICAgKGZ1biB4IC0+IHgpXG5cbiAgICBtZXRob2QgZ2V0X2xvY2FsX2luZmx1ZW5jZV9tYXAgP2Z3ZCA/YndkID9vcmlnaW4gfnRvdGFsIGFjY3VyYWN5ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAobGV0IHMgPVxuICAgICAgICAgICBtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgICAgIHwgU29tZSBhY2N1cmFjeSAtPlxuICAgICAgICAgICAgIFwiJmFjY3VyYWN5PVwiIF4gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIGFjY3VyYWN5XG4gICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICBpblxuICAgICAgICAgRm9ybWF0LnNwcmludGZcbiAgICAgICAgICAgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9pbmZsdWVuY2VfbWFwP3RvdGFsPSVpJXMlcyVzJXNcIiB1cmxcbiAgICAgICAgICAgcHJvamVjdF9pZCB0b3RhbFxuICAgICAgICAgICAobWF0Y2ggb3JpZ2luIHdpdGhcbiAgICAgICAgICAgfCBTb21lIChQdWJsaWNfZGF0YS5SdWxlIGkpIC0+IFwiJm9yaWdpbj1fcnVsZV9cIiBeIHN0cmluZ19vZl9pbnQgaVxuICAgICAgICAgICB8IFNvbWUgKFB1YmxpY19kYXRhLlZhciBpKSAtPiBcIiZvcmlnaW49X3Zhcl9cIiBeIHN0cmluZ19vZl9pbnQgaVxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIilcbiAgICAgICAgICAgc1xuICAgICAgICAgICAobWF0Y2ggZndkIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lIGkgLT4gXCImZndkPVwiIF4gc3RyaW5nX29mX2ludCBpKVxuICAgICAgICAgICAobWF0Y2ggYndkIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lIGkgLT4gXCImYndkPVwiIF4gc3RyaW5nX29mX2ludCBpKSlcbiAgICAgICAgYEdFVFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5sb2NhbF9pbmZsdWVuY2VfbWFwX29mX2pzb24gKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfaW5pdGlhbF9ub2RlID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9pbmZsdWVuY2VfbWFwL2luaXRpYWxfbm9kZVwiXG4gICAgICAgICAgIHVybCBwcm9qZWN0X2lkKSBgR0VUIChmdW4geCAtPlxuICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X25leHRfbm9kZSBzaG9ydF9pZF9vcHQgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2luZmx1ZW5jZV9tYXAvbmV4dF9ub2RlJXNcIlxuICAgICAgICAgICB1cmwgcHJvamVjdF9pZFxuICAgICAgICAgICAobWF0Y2ggc2hvcnRfaWRfb3B0IHdpdGhcbiAgICAgICAgICAgfCBTb21lIChQdWJsaWNfZGF0YS5SdWxlIGkpIC0+IFwiX3J1bGVfXCIgXiBzdHJpbmdfb2ZfaW50IGlcbiAgICAgICAgICAgfCBTb21lIChQdWJsaWNfZGF0YS5WYXIgaSkgLT4gXCJfdmFyX1wiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIlwiKSlcbiAgICAgICAgYEdFVFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBKc29uVXRpbC50b19vcHRpb24gUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGdldF9wcmV2aW91c19ub2RlIHNob3J0X2lkX29wdCA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmXG4gICAgICAgICAgIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvaW5mbHVlbmNlX21hcC9wcmV2aW91c19ub2RlJXNcIiB1cmxcbiAgICAgICAgICAgcHJvamVjdF9pZFxuICAgICAgICAgICAobWF0Y2ggc2hvcnRfaWRfb3B0IHdpdGhcbiAgICAgICAgICAgfCBTb21lIChQdWJsaWNfZGF0YS5SdWxlIGkpIC0+IFwiX3J1bGVfXCIgXiBzdHJpbmdfb2ZfaW50IGlcbiAgICAgICAgICAgfCBTb21lIChQdWJsaWNfZGF0YS5WYXIgaSkgLT4gXCJfdmFyX1wiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIlwiKSlcbiAgICAgICAgYEdFVFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBKc29uVXRpbC50b19vcHRpb24gUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGdldF9pbmZsdWVuY2VfbWFwX25vZGVfYXQgfmZpbGVuYW1lIHsgTG9jLmxpbmU7IExvYy5jaHIgfSA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmXG4gICAgICAgICAgIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvaW5mbHVlbmNlX21hcC9ub2RlX2F0P2ZpbGU9JXMmbGluZT0laSZjaHI9JWlcIlxuICAgICAgICAgICB1cmwgcHJvamVjdF9pZCBmaWxlbmFtZSBsaW5lIGNocikgYEdFVCAoZnVuIHggLT5cbiAgICAgICAgICBKc29uVXRpbC50b19vcHRpb24gUHVibGljX2RhdGEuc2hvcnRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfbm9kZXNfb2ZfaW5mbHVlbmNlX21hcCBhY2N1cmFjeSA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKG1hdGNoIGFjY3VyYWN5IHdpdGhcbiAgICAgICAgfCBTb21lIGFjY3VyYWN5IC0+XG4gICAgICAgICAgRm9ybWF0LnNwcmludGZcbiAgICAgICAgICAgIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvYWxsX25vZGVzX29mX2luZmx1ZW5jZV9tYXA/YWNjdXJhY3k9JXNcIlxuICAgICAgICAgICAgdXJsIHByb2plY3RfaWRcbiAgICAgICAgICAgIChQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgYWNjdXJhY3kpXG4gICAgICAgIHwgTm9uZSAtPiBGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL2FuYWx5c2VzL2FsbF9ub2Rlc19vZl9pbmZsdWVuY2VfbWFwXCIgdXJsKVxuICAgICAgICBgR0VUXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIFB1YmxpY19kYXRhLm5vZGVzX29mX2luZmx1ZW5jZV9tYXBfb2ZfanNvblxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfZGVhZF9ydWxlcyA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvZGVhZF9ydWxlc1wiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICBgR0VUIChmdW4geCAtPlxuICAgICAgICAgIFB1YmxpY19kYXRhLmRlYWRfcnVsZXNfb2ZfanNvbiAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGdldF9kZWFkX2FnZW50cyA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvZGVhZF9hZ2VudHNcIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgYEdFVCAoZnVuIHggLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5qc29uX3RvX2RlYWRfYWdlbnRzIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmXG4gICAgICAgICAgIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXCIgdXJsXG4gICAgICAgICAgIHByb2plY3RfaWQpIGBHRVQgKGZ1biB4IC0+XG4gICAgICAgICAgUHVibGljX2RhdGEuc2VwYXJhdGluZ190cmFuc2l0aW9uc19vZl9qc29uXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGdldF9jb25zdHJhaW50c19saXN0ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9jb25zdHJhaW50c1wiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICBgR0VUIChmdW4geCAtPlxuICAgICAgICAgIFB1YmxpY19kYXRhLmxlbW1hc19saXN0X29mX2pzb24gKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfcG90ZW50aWFsX3BvbHltZXJzIGFjY3VyYWN5X2NtIGFjY3VyYWN5X3NjYyA9XG4gICAgICBsZXQgb3B0aW9ucyA9XG4gICAgICAgIG1hdGNoIGFjY3VyYWN5X2NtLCBhY2N1cmFjeV9zY2Mgd2l0aFxuICAgICAgICB8IE5vbmUsIE5vbmUgLT4gXCJcIlxuICAgICAgICB8IFNvbWUgYSwgTm9uZSAtPiBcIj9hY2N1cmFjeV9jbT1cIiBeIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyBhXG4gICAgICAgIHwgTm9uZSwgU29tZSBhIC0+IFwiP2FjY3VyYWN5X3NjYz1cIiBeIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyBhXG4gICAgICAgIHwgU29tZSBhLCBTb21lIGIgLT5cbiAgICAgICAgICBcIj9hY2N1cmFjeV9jbT1cIlxuICAgICAgICAgIF4gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIGFcbiAgICAgICAgICBeIFwiJmFjY3VyYWN5X3NjYz1cIlxuICAgICAgICAgIF4gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIGJcbiAgICAgIGluXG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvcG90ZW50aWFsX3BvbHltZXJzJXNcIiB1cmxcbiAgICAgICAgICAgcHJvamVjdF9pZCBvcHRpb25zKSBgR0VUIChmdW4geCAtPlxuICAgICAgICAgIFB1YmxpY19kYXRhLnNjY19vZl9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgaXNfY29tcHV0aW5nID0gaXNfY29tcHV0aW5nIHJlcXVlc3RfY291bnRcblxuICAgIG1ldGhvZCBjb25maWdfc3RvcnlfY29tcHV0YXRpb24geyBBcGkuY2F1c2FsOyBBcGkud2VhazsgQXBpLnN0cm9uZyB9XG4gICAgICAgIDogKHVuaXQsIHN0cmluZykgTHd0X3Jlc3VsdC50ID1cbiAgICAgIGxldCBfZG9udGNhcmUgPSBjYXVzYWwgfHwgd2VhayB8fCBzdHJvbmcgaW5cbiAgICAgIEx3dC5yZXR1cm5fZXJyb3IgXCJLYVN0b3IgaW4gbm90IGF2YWlsYWJsZSB0aHJvdWdoIEhUVFBcIlxuXG4gICAgbWV0aG9kIHJhd19sYXVuY2hfc3RvcnlfY29tcHV0YXRpb24gKF8gOiBzdHJpbmcpXG4gICAgICAgIDogKHVuaXQsIHN0cmluZykgTHd0X3Jlc3VsdC50ID1cbiAgICAgIEx3dC5yZXR1cm5fZXJyb3IgXCJLYVN0b3IgaW4gbm90IGF2YWlsYWJsZSB0aHJvdWdoIEhUVFBcIlxuXG4gICAgbWV0aG9kIHN0b3J5X2xvZyA6IHN0cmluZyBsaXN0ID0gW11cbiAgICBtZXRob2Qgc3RvcnlfaXNfY29tcHV0aW5nID0gZmFsc2VcbiAgICBtZXRob2Qgc3RvcnlfcHJvZ3Jlc3MgOiBTdG9yeV9qc29uLnByb2dyZXNzX2JhciBvcHRpb24gPSBOb25lXG5cbiAgICBtZXRob2Qgc3RvcnlfbGlzdFxuICAgICAgICA6IChBcGkuY29tcHJlc3Npb25fbW9kZXNcbiAgICAgICAgICAqIHVuaXQgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgbGlzdCBsaXN0XG4gICAgICAgICAgKiBHcmFwaF9sb2dnZXJzX3NpZy5ncmFwaClcbiAgICAgICAgICBNb2RzLkludE1hcC50ID1cbiAgICAgIE1vZHMuSW50TWFwLmVtcHR5XG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGNsaWVudElkUGFyYW1JZCA9IEpzLnN0cmluZyBcImthcHBhcHBDbGllbnRJZFwiXG5sZXQgX2NsaWVudF9pZCA6IHN0cmluZyByZWYgPSByZWYgXCJcIlxubGV0IGdldF9jbGllbnRfaWQgKCkgOiBzdHJpbmcgPSAhX2NsaWVudF9pZFxubGV0IHNldF9jbGllbnRfaWQgKGNsaWVudF9pZCA6IHN0cmluZykgOiB1bml0ID0gX2NsaWVudF9pZCA6PSBjbGllbnRfaWRcbmxldCBmb250U2l6ZVBhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwRm9udFNpemVcIlxubGV0IGN1cnJlbnRGb250U2l6ZSA9IHJlZiAxLjRcblxubGV0IGluaXRGcm9tU3RvcmFnZSAoKSA9XG4gIEpzLk9wdGRlZi5jYXNlXG4gICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgKGZ1biAoKSAtPlxuICAgICAgbGV0ICgpID0gY3VycmVudEZvbnRTaXplIDo9IDEuNCBpblxuICAgICAgX2NsaWVudF9pZCA6PSBDb21tb24uZ3VpZCAoKSlcbiAgICAoZnVuIHN0IC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBjdXJyZW50Rm9udFNpemUgOj1cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKHN0IyNnZXRJdGVtIGZvbnRTaXplUGFyYW1JZClcbiAgICAgICAgICAgIChmdW4gKCkgLT4gMS40KVxuICAgICAgICAgICAgSnMucGFyc2VGbG9hdFxuICAgICAgaW5cbiAgICAgIF9jbGllbnRfaWQgOj1cbiAgICAgICAgSnMuT3B0LmNhc2UgKHN0IyNnZXRJdGVtIGNsaWVudElkUGFyYW1JZCkgQ29tbW9uLmd1aWQgSnMudG9fc3RyaW5nKVxuXG5sZXQgc2V0X3BhcmFtZXRlcnNfYXNfZGVmYXVsdCAoKSA9XG4gIGxldCB2JyA9IHN0cmluZ19vZl9mbG9hdCAhY3VycmVudEZvbnRTaXplIGluXG4gIGxldCAoKSA9XG4gICAgSnMuT3B0ZGVmLml0ZXIgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlIChmdW4gc3QgLT5cbiAgICAgICAgc3QjI3NldEl0ZW0gZm9udFNpemVQYXJhbUlkIChKcy5zdHJpbmcgdicpKVxuICBpblxuICBKcy5PcHRkZWYuaXRlciBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2UgKGZ1biBzdCAtPlxuICAgICAgc3QjI3NldEl0ZW0gY2xpZW50SWRQYXJhbUlkIChKcy5zdHJpbmcgIV9jbGllbnRfaWQpKVxuXG5sZXQgdXBkYXRlRm9udFNpemUgfmRlbHRhID1cbiAgbGV0ICgpID0gY3VycmVudEZvbnRTaXplIDo9IG1heCAwLjIgKG1pbiAoIWN1cnJlbnRGb250U2l6ZSArLiBkZWx0YSkgMy4pIGluXG4gIGxldCB2JyA9IHN0cmluZ19vZl9mbG9hdCAhY3VycmVudEZvbnRTaXplIGluXG4gIGxldCAoKSA9XG4gICAgRG9tX2h0bWwuZG9jdW1lbnQjIy5ib2R5IyMuc3R5bGUjIy5mb250U2l6ZSA6PSBKcy5zdHJpbmcgKHYnIF4gXCJlbVwiKVxuICBpblxuICAoKVxuXG5sZXQgc3luY2gsIHNldF9zeW5jaCA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5sZXQgYWdlbnRfY29sb3JpbmcgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IGluaXQgKCkgOiB1bml0IEx3dC50ID1cbiAgbGV0ICgpID0gaW5pdEZyb21TdG9yYWdlICgpIGluXG4gIGxldCBjbGllbnRfaWRzID0gQ29tbW9uX3N0YXRlLnVybF9hcmdzIFwiY2xpZW50X2lkXCIgaW5cbiAgbGV0IHN5bmNoID0gQ29tbW9uX3N0YXRlLnVybF9hcmdzIFwic3luY2hcIiBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGNsaWVudF9pZHMgd2l0aFxuICAgIHwgY2xpZW50X2lkIDo6IF8gLT4gc2V0X2NsaWVudF9pZCBjbGllbnRfaWRcbiAgICB8IFtdIC0+ICgpXG4gIGluXG4gIGxldCAoKSA9IHNldF9zeW5jaCAoWyBcInRydWVcIiBdID0gc3luY2gpIGluXG4gIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgc3luYyAoKSA6IHVuaXQgTHd0LnQgPSBMd3QucmV0dXJuX3VuaXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmNsYXNzIG1hbmFnZXIgKCkgPVxuICBsZXQga2FzYV93b3JrZXIgPSBXb3JrZXIuY3JlYXRlIFwiS2FTYVdvcmtlci5qc1wiIGluXG4gIGxldCBrYXNhX21haWxib3ggPSBLYXNhX2NsaWVudC5uZXdfbWFpbGJveCAoKSBpblxuICBsZXQga2Ftb2hhX3dvcmtlciA9IFdvcmtlci5jcmVhdGUgXCJLYU1vSGFXb3JrZXIuanNcIiBpblxuICBsZXQga2Ftb2hhX21haWxib3ggPSBLYW1vaGFfY2xpZW50Lm5ld19tYWlsYm94ICgpIGluXG4gIGxldCBrYXN0b3Jfd29ya2VyID0gV29ya2VyLmNyZWF0ZSBcIkthU3Rvcldvcmtlci5qc1wiIGluXG4gIGxldCBzdG9yX3N0YXRlLCB1cGRhdGVfc3Rvcl9zdGF0ZSA9IEthc3Rvcl9jbGllbnQuaW5pdF9zdGF0ZSAoKSBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIHNpbV93b3JrZXIgPSBXb3JrZXIuY3JlYXRlIFwiS2FTaW1Xb3JrZXIuanNcIlxuICAgIHZhbCBtdXRhYmxlIGlzX3J1bm5pbmcgPSB0cnVlXG5cbiAgICBpbml0aWFsaXplclxuICAgICAgbGV0ICgpID1cbiAgICAgICAga2FzYV93b3JrZXIjIy5vbm1lc3NhZ2UgOj1cbiAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIHJlc3BvbnNlX21lc3NhZ2UgLT5cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlX3RleHQgPSByZXNwb25zZV9tZXNzYWdlIyMuZGF0YSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBLYXNhX2NsaWVudC5yZWNlaXZlIGthc2FfbWFpbGJveCByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGthbW9oYV93b3JrZXIjIy5vbm1lc3NhZ2UgOj1cbiAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIHJlc3BvbnNlX21lc3NhZ2UgLT5cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlX3RleHQgPSByZXNwb25zZV9tZXNzYWdlIyMuZGF0YSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBLYW1vaGFfY2xpZW50LnJlY2VpdmUga2Ftb2hhX21haWxib3ggcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBrYXN0b3Jfd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biByZXNwb25zZV9tZXNzYWdlIC0+XG4gICAgICAgICAgICAgIGxldCByZXNwb25zZV90ZXh0ID0gcmVzcG9uc2VfbWVzc2FnZSMjLmRhdGEgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gS2FzdG9yX2NsaWVudC5yZWNlaXZlIHVwZGF0ZV9zdG9yX3N0YXRlIHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgc2ltX3dvcmtlciMjLm9ubWVzc2FnZSA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyXG4gICAgICAgICAgICAoZnVuIChyZXNwb25zZV9tZXNzYWdlIDogc3RyaW5nIFdvcmtlci5tZXNzYWdlRXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlX3RleHQgOiBzdHJpbmcgPSByZXNwb25zZV9tZXNzYWdlIyMuZGF0YSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBzZWxmI3JlY2VpdmUgcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBzaW1fd29ya2VyIyMub25lcnJvciA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBpc19ydW5uaW5nIDwtIGZhbHNlIGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGthc2Ffd29ya2VyIyMub25lcnJvciA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBpc19ydW5uaW5nIDwtIGZhbHNlIGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGthbW9oYV93b3JrZXIjIy5vbmVycm9yIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IGlzX3J1bm5pbmcgPC0gZmFsc2UgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAga2FzdG9yX3dvcmtlciMjLm9uZXJyb3IgOj1cbiAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gaXNfcnVubmluZyA8LSBmYWxzZSBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICAoKVxuXG4gICAgbWV0aG9kIHByaXZhdGUgc2xlZXAgdGltZW91dCA9IEpzX29mX29jYW1sX2x3dC5Md3RfanMuc2xlZXAgdGltZW91dFxuXG4gICAgbWV0aG9kIHByaXZhdGUgcG9zdF9tZXNzYWdlIChtZXNzYWdlX3RleHQgOiBzdHJpbmcpIDogdW5pdCA9XG4gICAgICBzaW1fd29ya2VyIyNwb3N0TWVzc2FnZSBtZXNzYWdlX3RleHRcblxuICAgIGluaGVyaXQgTXBpX2FwaS5tYW5hZ2VyICgpXG5cbiAgICBpbmhlcml0XG4gICAgICBLYXNhX2NsaWVudC5uZXdfdW5pZm9ybV9jbGllbnRcbiAgICAgICAgfmlzX3J1bm5pbmc6KGZ1biAoKSAtPiB0cnVlKVxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPlxuICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIG1lc3NhZ2VfdGV4dCkgaW5cbiAgICAgICAgICBrYXNhX3dvcmtlciMjcG9zdE1lc3NhZ2UgbWVzc2FnZV90ZXh0KVxuICAgICAgICBrYXNhX21haWxib3hcblxuICAgIGluaGVyaXRcbiAgICAgIEthbW9oYV9jbGllbnQubmV3X2NsaWVudFxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPlxuICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIG1lc3NhZ2VfdGV4dCkgaW5cbiAgICAgICAgICBrYW1vaGFfd29ya2VyIyNwb3N0TWVzc2FnZSBtZXNzYWdlX3RleHQpXG4gICAgICAgIGthbW9oYV9tYWlsYm94XG5cbiAgICBpbmhlcml0XG4gICAgICBLYXN0b3JfY2xpZW50Lm5ld19jbGllbnRcbiAgICAgICAgfnBvc3Q6KGZ1biBtZXNzYWdlX3RleHQgLT5cbiAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBtZXNzYWdlX3RleHQpIGluXG4gICAgICAgICAga2FzdG9yX3dvcmtlciMjcG9zdE1lc3NhZ2UgbWVzc2FnZV90ZXh0KVxuICAgICAgICBzdG9yX3N0YXRlXG5cbiAgICB2YWwgbXV0YWJsZSBrYXNhX2xvY2F0b3IgPSBbXVxuXG4gICAgbWV0aG9kIHByb2plY3RfcGFyc2UgfnBhdHRlcm5TaGFyaW5nIG92ZXJ3cml0ZXMgPVxuICAgICAgc2VsZiNzZWNyZXRfcHJvamVjdF9wYXJzZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIG91dCAtPlxuICAgICAgICAgICAgICBsZXQgbG9hZCA9XG4gICAgICAgICAgICAgICAgc2VsZiNzZWNyZXRfc2ltdWxhdGlvbl9sb2FkIHBhdHRlcm5TaGFyaW5nIG91dCBvdmVyd3JpdGVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBpbml0ID0gc2VsZiNpbml0X3N0YXRpY19hbmFseXNlciBvdXQgaW5cbiAgICAgICAgICAgICAgbGV0IGxvY2F0b3JzID1cbiAgICAgICAgICAgICAgICBpbml0XG4gICAgICAgICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBrYXNhX2xvY2F0b3IgPC0gW10gaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIGUpKVxuICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmI3NlY3JldF9nZXRfcG9zX29mX3J1bGVzX2FuZF92YXJzXG4gICAgICAgICAgICAgICAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gaW5mb3MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0ga2FzYV9sb2NhdG9yIDwtIGluZm9zIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0ga2FzYV9sb2NhdG9yIDwtIFtdIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIGUpKSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbG9hZCA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKCkgLT4gbG9jYXRvcnMpKVxuXG4gICAgbWV0aG9kIGdldF9pbmZsdWVuY2VfbWFwX25vZGVfYXQgfmZpbGVuYW1lIHBvcyA6IF8gQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBMaXN0LmZpbmRfb3B0XG4gICAgICAgIChmdW4gKF8sIHgpIC0+IExvYy5pc19pbmNsdWRlZF9pbiBmaWxlbmFtZSBwb3MgeClcbiAgICAgICAga2FzYV9sb2NhdG9yXG4gICAgICB8PiBPcHRpb25fdXRpbC5tYXAgZnN0XG4gICAgICB8PiBSZXN1bHRfdXRpbC5vayA/c3RhdHVzOk5vbmVcbiAgICAgIHw+IEx3dC5yZXR1cm5cblxuICAgIG1ldGhvZCBpc19ydW5uaW5nID0gaXNfcnVubmluZ1xuXG4gICAgbWV0aG9kIHRlcm1pbmF0ZSA9XG4gICAgICBsZXQgKCkgPSBzaW1fd29ya2VyIyN0ZXJtaW5hdGUgaW5cbiAgICAgIGthc2Ffd29ya2VyIyN0ZXJtaW5hdGVcblxuICAgIG1ldGhvZCBpc19jb21wdXRpbmcgPVxuICAgICAgc2VsZiNzaW1faXNfY29tcHV0aW5nXG4gICAgICB8fCBLYXNhX2NsaWVudC5pc19jb21wdXRpbmcga2FzYV9tYWlsYm94XG4gICAgICB8fCBzZWxmI3N0b3J5X2lzX2NvbXB1dGluZ1xuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgY2xpID0geyB1cmw6IHN0cmluZzsgY29tbWFuZDogc3RyaW5nOyBhcmdzOiBzdHJpbmcgbGlzdCB9XG50eXBlIHByb3RvY29sID0gSFRUUCBvZiBzdHJpbmcgfCBDTEkgb2YgY2xpXG50eXBlIHJlbW90ZSA9IHsgbGFiZWw6IHN0cmluZzsgcHJvdG9jb2w6IHByb3RvY29sIH1cbnR5cGUgc3BlYyA9IFdlYldvcmtlciB8IEVtYmVkZGVkIHwgUmVtb3RlIG9mIHJlbW90ZVxudHlwZSBzdGF0ZSA9IHsgc3RhdGVfY3VycmVudDogc3BlYzsgc3RhdGVfcnVudGltZXM6IHNwZWMgbGlzdCB9XG50eXBlIG1vZGVsID0geyBtb2RlbF9jdXJyZW50OiBzcGVjOyBtb2RlbF9ydW50aW1lczogc3BlYyBsaXN0IH1cblxubGV0IHNwZWNfbGFiZWwgOiBzcGVjIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgV2ViV29ya2VyIC0+IFwiV2ViV29ya2VyXCJcbiAgfCBFbWJlZGRlZCAtPiBcIkVtYmVkZGVkXCJcbiAgfCBSZW1vdGUgcmVtb3RlIC0+IHJlbW90ZS5sYWJlbFxuXG5sZXQgc3BlY19pZCA6IHNwZWMgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBXZWJXb3JrZXIgLT4gXCJXZWJXb3JrZXJcIlxuICB8IEVtYmVkZGVkIC0+IFwiRW1iZWRkZWRcIlxuICB8IFJlbW90ZSB7IGxhYmVsID0gXzsgcHJvdG9jb2wgPSBIVFRQIGh0dHAgfSAtPiBodHRwXG4gIHwgUmVtb3RlIHsgbGFiZWwgPSBfOyBwcm90b2NvbCA9IENMSSBjbGkgfSAtPiBjbGkudXJsXG5cbmxldCByZWFkX3NwZWMgOiBzdHJpbmcgLT4gc3BlYyBvcHRpb24gPSBmdW5jdGlvblxuICB8IFwiV2ViV29ya2VyXCIgLT4gU29tZSBXZWJXb3JrZXJcbiAgfCBcIkVtYmVkZGVkXCIgLT4gU29tZSBFbWJlZGRlZFxuICB8IHVybCAtPlxuICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcInBhcnNlX3JlbW90ZTogJXNcIiB1cmwpKSBpblxuICAgIGxldCBmb3JtYXRfdXJsIHVybCA9XG4gICAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCB1cmwgaW5cbiAgICAgIGlmIGxlbmd0aCA+IDAgJiYgU3RyaW5nLmdldCB1cmwgKGxlbmd0aCAtIDEpID09ICcvJyB0aGVuXG4gICAgICAgIFN0cmluZy5zdWIgdXJsIDAgKGxlbmd0aCAtIDEpXG4gICAgICBlbHNlXG4gICAgICAgIHVybFxuICAgIGluXG4gICAgbGV0IGNsZWFuZWRfdXJsIGh0dHAgPVxuICAgICAgbGV0IGNsZWFuZWQgPVxuICAgICAgICBGb3JtYXQuc3ByaW50ZiBcIiVzOiVkLyVzXCIgaHR0cC5VcmwuaHVfaG9zdCBodHRwLlVybC5odV9wb3J0XG4gICAgICAgICAgaHR0cC5VcmwuaHVfcGF0aF9zdHJpbmdcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBDb21tb24uZGVidWcgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJjbGVhbmVkIDogJXNcIiBjbGVhbmVkKSlcbiAgICAgIGluXG4gICAgICBmb3JtYXRfdXJsIGNsZWFuZWRcbiAgICBpblxuICAgIChtYXRjaCBVcmwudXJsX29mX3N0cmluZyB1cmwgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHBhcnNlZCAtPlxuICAgICAgbGV0IHByb3RvY29sIDogcHJvdG9jb2wgPVxuICAgICAgICBtYXRjaCBwYXJzZWQgd2l0aFxuICAgICAgICB8IFVybC5IdHRwIGh0dHAgLT4gSFRUUCAoXCJodHRwOi8vXCIgXiBjbGVhbmVkX3VybCBodHRwKVxuICAgICAgICB8IFVybC5IdHRwcyBodHRwcyAtPiBIVFRQIChcImh0dHBzOi8vXCIgXiBjbGVhbmVkX3VybCBodHRwcylcbiAgICAgICAgfCBVcmwuRmlsZSBmaWxlIC0+XG4gICAgICAgICAgQ0xJXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHVybCA9IFwiZmlsZTovL1wiIF4gZmlsZS5VcmwuZnVfcGF0aF9zdHJpbmc7XG4gICAgICAgICAgICAgIGNvbW1hbmQgPSBmaWxlLlVybC5mdV9wYXRoX3N0cmluZztcbiAgICAgICAgICAgICAgYXJncyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBsYWJlbCA9XG4gICAgICAgIHRyeVxuICAgICAgICAgIExpc3QuYXNzb2MgXCJsYWJlbFwiXG4gICAgICAgICAgICAobWF0Y2ggcGFyc2VkIHdpdGhcbiAgICAgICAgICAgIHwgVXJsLkh0dHAgaHR0cCAtPiBodHRwLlVybC5odV9hcmd1bWVudHNcbiAgICAgICAgICAgIHwgVXJsLkh0dHBzIGh0dHBzIC0+IGh0dHBzLlVybC5odV9hcmd1bWVudHNcbiAgICAgICAgICAgIHwgVXJsLkZpbGUgZmlsZSAtPiBmaWxlLlVybC5mdV9hcmd1bWVudHMpXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgKG1hdGNoIHBhcnNlZCB3aXRoXG4gICAgICAgICAgfCBVcmwuSHR0cCBodHRwIC0+IGh0dHAuVXJsLmh1X2hvc3RcbiAgICAgICAgICB8IFVybC5IdHRwcyBodHRwcyAtPiBodHRwcy5VcmwuaHVfaG9zdFxuICAgICAgICAgIHwgVXJsLkZpbGUgZmlsZSAtPiBmaWxlLlVybC5mdV9wYXRoX3N0cmluZylcbiAgICAgIGluXG4gICAgICBTb21lIChSZW1vdGUgeyBsYWJlbDsgcHJvdG9jb2wgfSkpXG5cbmNsYXNzIGVtYmVkZGVkICgpIDogQXBpLmNvbmNyZXRlX21hbmFnZXIgPVxuICBsZXQga2FzYV93b3JrZXIgPSBXb3JrZXIuY3JlYXRlIFwiS2FTYVdvcmtlci5qc1wiIGluXG4gIGxldCBrYXNhX21haWxib3ggPSBLYXNhX2NsaWVudC5uZXdfbWFpbGJveCAoKSBpblxuICBsZXQga2Ftb2hhX3dvcmtlciA9IFdvcmtlci5jcmVhdGUgXCJLYU1vSGFXb3JrZXIuanNcIiBpblxuICBsZXQga2Ftb2hhX21haWxib3ggPSBLYW1vaGFfY2xpZW50Lm5ld19tYWlsYm94ICgpIGluXG4gIGxldCBrYXN0b3Jfd29ya2VyID0gV29ya2VyLmNyZWF0ZSBcIkthU3Rvcldvcmtlci5qc1wiIGluXG4gIGxldCBzdG9yX3N0YXRlLCB1cGRhdGVfc3Rvcl9zdGF0ZSA9IEthc3Rvcl9jbGllbnQuaW5pdF9zdGF0ZSAoKSBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5pdGlhbGl6ZXJcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGthc2Ffd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXJcbiAgICAgICAgICAgIChmdW4gKHJlc3BvbnNlX21lc3NhZ2UgOiBzdHJpbmcgV29ya2VyLm1lc3NhZ2VFdmVudCBKcy50KSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VfdGV4dCA6IHN0cmluZyA9IHJlc3BvbnNlX21lc3NhZ2UjIy5kYXRhIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IEthc2FfY2xpZW50LnJlY2VpdmUga2FzYV9tYWlsYm94IHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAga2Ftb2hhX3dvcmtlciMjLm9ubWVzc2FnZSA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyXG4gICAgICAgICAgICAoZnVuIChyZXNwb25zZV9tZXNzYWdlIDogc3RyaW5nIFdvcmtlci5tZXNzYWdlRXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlX3RleHQgOiBzdHJpbmcgPSByZXNwb25zZV9tZXNzYWdlIyMuZGF0YSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBLYW1vaGFfY2xpZW50LnJlY2VpdmUga2Ftb2hhX21haWxib3ggcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBrYXN0b3Jfd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXJcbiAgICAgICAgICAgIChmdW4gKHJlc3BvbnNlX21lc3NhZ2UgOiBzdHJpbmcgV29ya2VyLm1lc3NhZ2VFdmVudCBKcy50KSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VfdGV4dCA6IHN0cmluZyA9IHJlc3BvbnNlX21lc3NhZ2UjIy5kYXRhIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IEthc3Rvcl9jbGllbnQucmVjZWl2ZSB1cGRhdGVfc3Rvcl9zdGF0ZSByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgICgpXG5cbiAgICBpbmhlcml0XG4gICAgICBBcGlfcnVudGltZS5tYW5hZ2VyXG4gICAgICAgIChvYmplY3RcbiAgICAgICAgICAgbWV0aG9kIG1pbl9ydW5fZHVyYXRpb24gKCkgPSAwLjFcbiAgICAgICAgICAgbWV0aG9kIHlpZWxkID0gSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcy55aWVsZFxuXG4gICAgICAgICAgIG1ldGhvZCBsb2cgP2V4biAobXNnIDogc3RyaW5nKSA9XG4gICAgICAgICAgICAgbGV0ICgpID0gaWdub3JlIGV4biBpblxuICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICBDb21tb24uZGVidWdcbiAgICAgICAgICAgICAgICAgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJlbWJlZGRlZF9tYW5hZ2VyI2xvZzogJXNcIiBtc2cpKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgTHd0LnJldHVybl91bml0XG4gICAgICAgICBlbmRcbiAgICAgICAgICA6IEthcHBhX2ZhY2FkZS5zeXN0ZW1fcHJvY2VzcylcblxuICAgIGluaGVyaXRcbiAgICAgIEthc2FfY2xpZW50Lm5ld191bmlmb3JtX2NsaWVudFxuICAgICAgICB+aXNfcnVubmluZzooZnVuICgpIC0+IHRydWUpXG4gICAgICAgIH5wb3N0OihmdW4gbWVzc2FnZV90ZXh0IC0+IGthc2Ffd29ya2VyIyNwb3N0TWVzc2FnZSBtZXNzYWdlX3RleHQpXG4gICAgICAgIGthc2FfbWFpbGJveFxuXG4gICAgaW5oZXJpdFxuICAgICAgS2Ftb2hhX2NsaWVudC5uZXdfY2xpZW50XG4gICAgICAgIH5wb3N0OihmdW4gbWVzc2FnZV90ZXh0IC0+IGthbW9oYV93b3JrZXIjI3Bvc3RNZXNzYWdlIG1lc3NhZ2VfdGV4dClcbiAgICAgICAga2Ftb2hhX21haWxib3hcblxuICAgIGluaGVyaXRcbiAgICAgIEthc3Rvcl9jbGllbnQubmV3X2NsaWVudFxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPiBrYXN0b3Jfd29ya2VyIyNwb3N0TWVzc2FnZSBtZXNzYWdlX3RleHQpXG4gICAgICAgIHN0b3Jfc3RhdGVcblxuICAgIG1ldGhvZCBpc19ydW5uaW5nID0gdHJ1ZVxuXG4gICAgbWV0aG9kIHRlcm1pbmF0ZSA9XG4gICAgICBsZXQgKCkgPSBrYXNhX3dvcmtlciMjdGVybWluYXRlIGluXG4gICAgICAoKSAoKlRPRE8qKVxuXG4gICAgbWV0aG9kIGlzX2NvbXB1dGluZyA9IHRydWUgKCpUT0RPKilcbiAgICB2YWwgbXV0YWJsZSBrYXNhX2xvY2F0b3IgPSBbXVxuXG4gICAgbWV0aG9kIHByb2plY3RfcGFyc2UgfnBhdHRlcm5TaGFyaW5nIG92ZXJ3cml0ZXMgPVxuICAgICAgc2VsZiNzZWNyZXRfcHJvamVjdF9wYXJzZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIG91dCAtPlxuICAgICAgICAgICAgICBsZXQgbG9hZCA9XG4gICAgICAgICAgICAgICAgc2VsZiNzZWNyZXRfc2ltdWxhdGlvbl9sb2FkIHBhdHRlcm5TaGFyaW5nIG91dCBvdmVyd3JpdGVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBpbml0ID0gc2VsZiNpbml0X3N0YXRpY19hbmFseXNlciBvdXQgaW5cbiAgICAgICAgICAgICAgbGV0IGxvY2F0b3JzID1cbiAgICAgICAgICAgICAgICBpbml0XG4gICAgICAgICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBrYXNhX2xvY2F0b3IgPC0gW10gaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIGUpKVxuICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmI3NlY3JldF9nZXRfcG9zX29mX3J1bGVzX2FuZF92YXJzXG4gICAgICAgICAgICAgICAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gaW5mb3MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0ga2FzYV9sb2NhdG9yIDwtIGluZm9zIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0ga2FzYV9sb2NhdG9yIDwtIFtdIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIGUpKSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbG9hZCA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKCkgLT4gbG9jYXRvcnMpKVxuXG4gICAgbWV0aG9kIGdldF9pbmZsdWVuY2VfbWFwX25vZGVfYXQgfmZpbGVuYW1lIHBvcyA6IF8gQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBMaXN0LmZpbmRfb3B0XG4gICAgICAgIChmdW4gKF8sIHgpIC0+IExvYy5pc19pbmNsdWRlZF9pbiBmaWxlbmFtZSBwb3MgeClcbiAgICAgICAga2FzYV9sb2NhdG9yXG4gICAgICB8PiBPcHRpb25fdXRpbC5tYXAgZnN0XG4gICAgICB8PiBSZXN1bHRfdXRpbC5vayA/c3RhdHVzOk5vbmVcbiAgICAgIHw+IEx3dC5yZXR1cm5cbiAgZW5kXG5cbmxldCBzdGF0ZSwgc2V0X3N0YXRlID1cbiAgUmVhY3QuUy5jcmVhdGVcbiAgICB7IHN0YXRlX2N1cnJlbnQgPSBXZWJXb3JrZXI7IHN0YXRlX3J1bnRpbWVzID0gWyBXZWJXb3JrZXI7IEVtYmVkZGVkIF0gfVxuXG5sZXQgY3JlYXRlX21hbmFnZXIgfmlzX25ldyBwcm9qZWN0X2lkID1cbiAgbWF0Y2ggKFJlYWN0LlMudmFsdWUgc3RhdGUpLnN0YXRlX2N1cnJlbnQgd2l0aFxuICB8IFdlYldvcmtlciAtPlxuICAgIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnNldF9zeW5jaCBmYWxzZSBpblxuICAgIEx3dC5yZXR1cm5cbiAgICAgIChSZXN1bHRfdXRpbC5vayAobmV3IFdlYl93b3JrZXJfYXBpLm1hbmFnZXIgKCkgOiBBcGkuY29uY3JldGVfbWFuYWdlcikpXG4gIHwgRW1iZWRkZWQgLT5cbiAgICBsZXQgKCkgPSBTdGF0ZV9zZXR0aW5ncy5zZXRfc3luY2ggZmFsc2UgaW5cbiAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAobmV3IGVtYmVkZGVkICgpIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpKVxuICB8IFJlbW90ZSB7IGxhYmVsID0gXzsgcHJvdG9jb2wgPSBIVFRQIHVybCB9IC0+XG4gICAgbGV0IHZlcnNpb25fdXJsIDogc3RyaW5nID0gRm9ybWF0LnNwcmludGYgXCIlcy92MlwiIHVybCBpblxuICAgIGxldCAoKSA9XG4gICAgICBDb21tb24uZGVidWdcbiAgICAgICAgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJzZXRfcnVudGltZV91cmw6ICVzXCIgdmVyc2lvbl91cmwpKVxuICAgIGluXG4gICAgSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LnBlcmZvcm1fcmF3XG4gICAgICB+cmVzcG9uc2VfdHlwZTpYbWxIdHRwUmVxdWVzdC5UZXh0IHZlcnNpb25fdXJsXG4gICAgPj49IGZ1biBmcmFtZSAtPlxuICAgIGxldCBpc192YWxpZF9zZXJ2ZXIgOiBib29sID1cbiAgICAgIGZyYW1lLkpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5jb2RlID0gMjAwXG4gICAgaW5cbiAgICBpZiBpc192YWxpZF9zZXJ2ZXIgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBTdGF0ZV9zZXR0aW5ncy5zZXRfc3luY2ggdHJ1ZSBpblxuICAgICAgbGV0IG1hbmFnZXIgPSBuZXcgUmVzdF9hcGkubWFuYWdlciB+dGltZW91dDpOb25lIH51cmwgfnByb2plY3RfaWQgaW5cbiAgICAgIChpZiBpc19uZXcgdGhlblxuICAgICAgICAgbWFuYWdlciNwcm9qZWN0X2NyZWF0ZVxuICAgICAgICAgICB7IEFwaV90eXBlc19qLnByb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQgPSBwcm9qZWN0X2lkIH1cbiAgICAgICBlbHNlXG4gICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKG1hbmFnZXIgOj4gQXBpLmNvbmNyZXRlX21hbmFnZXIpKSlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiQmFkIFJlc3BvbnNlICVkIGZyb20gJXMgXCJcbiAgICAgICAgICBmcmFtZS5Kc19vZl9vY2FtbF9sd3QuWG1sSHR0cFJlcXVlc3QuY29kZSB1cmxcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuICAgIClcbiAgfCBSZW1vdGUgeyBsYWJlbDsgcHJvdG9jb2wgPSBDTEkgY2xpIH0gLT5cbiAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyAoXCJzZXRfcnVudGltZV91cmw6IFwiIF4gY2xpLnVybCkpIGluXG4gICAgKHRyeVxuICAgICAgIGxldCBqc19ub2RlX3J1bnRpbWUgPSBuZXcgSnNOb2RlLm1hbmFnZXIgY2xpLmNvbW1hbmQgY2xpLmFyZ3MgaW5cbiAgICAgICBpZiBqc19ub2RlX3J1bnRpbWUjaXNfcnVubmluZyB0aGVuIChcbiAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIFwic2V0X3J1bnRpbWVfdXJsOnN1Y2Vzc1wiKSBpblxuICAgICAgICAgbGV0ICgpID0gU3RhdGVfc2V0dGluZ3Muc2V0X3N5bmNoIGZhbHNlIGluXG4gICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoanNfbm9kZV9ydW50aW1lIDo+IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSlcbiAgICAgICApIGVsc2UgKFxuICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgXCJzZXRfcnVudGltZV91cmw6ZmFpbHVyZVwiKSBpblxuICAgICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiQ291bGQgbm90IHN0YXJ0IGNsaSBydW50aW1lICVzIFwiIGxhYmVsXG4gICAgICAgICBpblxuICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgICAgICApXG4gICAgIHdpdGggRmFpbHVyZSB4IC0+IEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB4KSlcblxubGV0IHNldF9zcGVjIHJ1bnRpbWUgPVxuICBsZXQgY3VycmVudF9zdGF0ZSA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgc2V0X3N0YXRlXG4gICAgeyBzdGF0ZV9jdXJyZW50ID0gcnVudGltZTsgc3RhdGVfcnVudGltZXMgPSBjdXJyZW50X3N0YXRlLnN0YXRlX3J1bnRpbWVzIH1cblxubGV0IGNyZWF0ZV9zcGVjIH5sb2FkIChpZCA6IHN0cmluZykgOiB1bml0IEFwaS5yZXN1bHQgPVxuICBtYXRjaCByZWFkX3NwZWMgaWQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgIEZvcm1hdC5zcHJpbnRmIFwiRmFpbGVkIHRvIGNyZWF0ZSBzcGVjOiBjb3VsZCBub3QgcGFyc2UgaWRlbnRpZmllciAlc1wiIGlkXG4gICAgaW5cbiAgICBBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnXG4gIHwgU29tZSBydW50aW1lIC0+XG4gICAgbGV0IGN1cnJlbnRfc3RhdGUgPSBSZWFjdC5TLnZhbHVlIHN0YXRlIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIG5vdCAoTGlzdC5tZW0gcnVudGltZSBjdXJyZW50X3N0YXRlLnN0YXRlX3J1bnRpbWVzKSB0aGVuXG4gICAgICAgIHNldF9zdGF0ZVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXRlX2N1cnJlbnQgPSBjdXJyZW50X3N0YXRlLnN0YXRlX2N1cnJlbnQ7XG4gICAgICAgICAgICBzdGF0ZV9ydW50aW1lcyA9IHJ1bnRpbWUgOjogY3VycmVudF9zdGF0ZS5zdGF0ZV9ydW50aW1lcztcbiAgICAgICAgICB9XG4gICAgaW5cbiAgICBsZXQgKCkgPSBpZiBsb2FkIHRoZW4gc2V0X3NwZWMgcnVudGltZSBpblxuICAgIFJlc3VsdF91dGlsLm9rICgpXG5cbmxldCBtb2RlbCA6IG1vZGVsIFJlYWN0LnNpZ25hbCA9XG4gIFJlYWN0LlMubWFwXG4gICAgKGZ1biBzdGF0ZSAtPlxuICAgICAge1xuICAgICAgICBtb2RlbF9jdXJyZW50ID0gc3RhdGUuc3RhdGVfY3VycmVudDtcbiAgICAgICAgbW9kZWxfcnVudGltZXMgPSBzdGF0ZS5zdGF0ZV9ydW50aW1lcztcbiAgICAgIH0pXG4gICAgc3RhdGVcblxuKCogcnVuIG9uIGFwcGxpY2F0aW9uIGluaXQgKilcbmxldCBpbml0ICgpID1cbiAgKCogZ2V0IHVybCBvZiBob3N0ICopXG4gIGxldCBob3N0cyA9IENvbW1vbl9zdGF0ZS51cmxfYXJncyBcImhvc3RcIiBpblxuICBsZXQgcmVjIGFkZF91cmxzIHVybHMgbG9hZCA9XG4gICAgbWF0Y2ggdXJscyB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgdXJsIDo6IHVybHMgLT5cbiAgICAgIChtYXRjaCBjcmVhdGVfc3BlYyB+bG9hZCB1cmwgd2l0aFxuICAgICAgfCB7IFJlc3VsdF91dGlsLnZhbHVlID0gUmVzdWx0Lk9rICgpOyBfIH0gLT4gYWRkX3VybHMgdXJscyBmYWxzZVxuICAgICAgfCB7IFJlc3VsdF91dGlsLnZhbHVlID0gUmVzdWx0LkVycm9yIF87IF8gfSAtPiBhZGRfdXJscyB1cmxzIGxvYWQpXG4gIGluXG4gIGxldCAoKSA9IGFkZF91cmxzIGhvc3RzIHRydWUgaW5cbiAgbWF0Y2ggKFJlYWN0LlMudmFsdWUgc3RhdGUpLnN0YXRlX2N1cnJlbnQgd2l0aFxuICB8IFJlbW90ZSB7IHByb3RvY29sID0gQ0xJIF87IF8gfSB8IFdlYldvcmtlciB8IEVtYmVkZGVkIC0+IEx3dC5yZXR1cm5fbmlsXG4gIHwgUmVtb3RlIHsgbGFiZWwgPSBfOyBwcm90b2NvbCA9IEhUVFAgdXJsIH0gLT5cbiAgICBsZXQgdmVyc2lvbl91cmwgOiBzdHJpbmcgPSBGb3JtYXQuc3ByaW50ZiBcIiVzL3YyXCIgdXJsIGluXG4gICAgbGV0ICgpID1cbiAgICAgIENvbW1vbi5kZWJ1Z1xuICAgICAgICAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcInNldF9ydW50aW1lX3VybDogJXNcIiB2ZXJzaW9uX3VybCkpXG4gICAgaW5cbiAgICBKc19vZl9vY2FtbF9sd3QuWG1sSHR0cFJlcXVlc3QucGVyZm9ybV9yYXdcbiAgICAgIH5yZXNwb25zZV90eXBlOlhtbEh0dHBSZXF1ZXN0LlRleHQgdmVyc2lvbl91cmxcbiAgICA+Pj0gZnVuIGZyYW1lIC0+XG4gICAgbGV0IGlzX3ZhbGlkX3NlcnZlciA6IGJvb2wgPVxuICAgICAgZnJhbWUuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LmNvZGUgPSAyMDBcbiAgICBpblxuICAgIGlmIGlzX3ZhbGlkX3NlcnZlciB0aGVuIChcbiAgICAgIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnNldF9zeW5jaCB0cnVlIGluXG4gICAgICBsZXQgbWFuYWdlciA9IG5ldyBSZXN0X2FwaS5tYW5hZ2VyIH50aW1lb3V0Ok5vbmUgfnVybCB+cHJvamVjdF9pZDpcIlwiIGluXG4gICAgICBtYW5hZ2VyI3Byb2plY3RfY2F0YWxvZ1xuICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5vazooZnVuIHByb2plY3RzIC0+IEx3dC5yZXR1cm4gcHJvamVjdHMpXG4gICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IEx3dC5yZXR1cm5fbmlsKVxuICAgICkgZWxzZVxuICAgICAgTHd0LnJldHVybl9uaWxcblxuKCogdG8gc3luYyBzdGF0ZSBvZiBhcHBsaWNhdGlvbiB3aXRoIHJ1bnRpbWUgKilcbmxldCBzeW5jICgpID0gTHd0LnJldHVybl91bml0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgcGxvdFBlcmlvZFBhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwUGxvdFBlcmlvZFwiXG5sZXQgcGF1c2VDb25kaXRpb25QYXJhbUlkID0gSnMuc3RyaW5nIFwia2FwcGFwcFBhdXNlQ29uZGl0aW9uXCJcbmxldCBzZWVkUGFyYW1JZCA9IEpzLnN0cmluZyBcImthcHBhcHBEZWZhdWx0U2VlZFwiXG5sZXQgc3RvcmVUcmFjZVBhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwU3RvcmVUcmFjZVwiXG5sZXQgc2hvd0RlYWRSdWxlc1BhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwU2hvd0RlYWRSdWxlc1wiXG5sZXQgc2hvd0RlYWRBZ2VudHNQYXJhbUlkID0gSnMuc3RyaW5nIFwia2FwcGFwcFNob3dEZWFkQWdlbnRzXCJcblxubGV0IHNob3dJcnJldmVyc2libGVUcmFuc2l0aW9uc1BhcmFtSWQgPVxuICBKcy5zdHJpbmcgXCJrYXBwYXBwU2hvd0lycmV2ZXJzaWJsZVRyYW5zaXRpb25cIlxuXG50eXBlIHBhcmFtZXRlcnMgPSB7XG4gIHBsb3RfcGVyaW9kOiBmbG9hdDtcbiAgcGF1c2VfY29uZGl0aW9uOiBzdHJpbmc7XG4gIHNlZWQ6IGludCBvcHRpb247XG4gIHN0b3JlX3RyYWNlOiBib29sO1xuICBzaG93X2RlYWRfcnVsZXM6IGJvb2w7XG4gIHNob3dfZGVhZF9hZ2VudHM6IGJvb2w7XG4gIHNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zOiBib29sO1xufVxuXG50eXBlIGFfcHJvamVjdCA9IHtcbiAgcHJvamVjdF9pZDogc3RyaW5nO1xuICBwcm9qZWN0X2lzX2NvbXB1dGluZzogYm9vbCBSZWFjdC5TLnQ7XG4gIHByb2plY3Rfd2F0Y2hlcl9jYW5jZWw6IGJvb2wgcmVmO1xuICBwcm9qZWN0X21hbmFnZXI6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyO1xufVxuXG50eXBlIHN0YXRlID0ge1xuICBwcm9qZWN0X2N1cnJlbnQ6IGFfcHJvamVjdCBvcHRpb247XG4gIHByb2plY3RfY2F0YWxvZzogYV9wcm9qZWN0IGxpc3Q7XG4gIHByb2plY3RfdmVyc2lvbjogaW50O1xuICBkZWZhdWx0X3BhcmFtZXRlcnM6IHBhcmFtZXRlcnM7XG4gIHByb2plY3RfcGFyYW1ldGVyczogcGFyYW1ldGVycyBNb2RzLlN0cmluZ01hcC50O1xufVxuXG50eXBlIHByb2plY3RfbW9kZWwgPSB7XG4gIG1vZGVsX3Byb2plY3RfaWQ6IHN0cmluZztcbiAgbW9kZWxfcHJvamVjdF9pc19jb21wdXRpbmc6IGJvb2wgUmVhY3QuUy50O1xufVxuXG50eXBlIG1vZGVsID0ge1xuICBtb2RlbF9jdXJyZW50X2lkOiBzdHJpbmcgb3B0aW9uO1xuICBtb2RlbF9jYXRhbG9nOiBwcm9qZWN0X21vZGVsIGxpc3Q7XG4gIG1vZGVsX3Byb2plY3RfdmVyc2lvbjogaW50O1xuICBtb2RlbF9wYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzO1xufVxuXG5sZXQgcHJvamVjdF9lcXVhbCBhIGIgPSBhLnByb2plY3RfaWQgPSBiLnByb2plY3RfaWRcblxubGV0IGNhdGFsb2dfZXF1YWwgeCB5ID1cbiAgdHJ5IExpc3QuZm9yX2FsbDIgcHJvamVjdF9lcXVhbCB4IHkgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gZmFsc2VcblxubGV0IHN0YXRlX2VxdWFsIGEgYiA9XG4gIE9wdGlvbl91dGlsLmVxdWFsIHByb2plY3RfZXF1YWwgYS5wcm9qZWN0X2N1cnJlbnQgYi5wcm9qZWN0X2N1cnJlbnRcbiAgJiYgYS5wcm9qZWN0X3ZlcnNpb24gPSBiLnByb2plY3RfdmVyc2lvblxuICAmJiBhLmRlZmF1bHRfcGFyYW1ldGVycyA9IGIuZGVmYXVsdF9wYXJhbWV0ZXJzXG4gICYmIE1vZHMuU3RyaW5nTWFwLmVxdWFsXG4gICAgICAgKGZ1biB4IHkgLT4gY29tcGFyZSB4IHkgPSAwKVxuICAgICAgIGEucHJvamVjdF9wYXJhbWV0ZXJzIGIucHJvamVjdF9wYXJhbWV0ZXJzXG4gICYmIGNhdGFsb2dfZXF1YWwgYS5wcm9qZWN0X2NhdGFsb2cgYi5wcm9qZWN0X2NhdGFsb2dcblxubGV0IG1vZGVsX2VxdWFsIGEgYiA9XG4gIE9wdGlvbl91dGlsLmVxdWFsXG4gICAgKGZ1biB4IHkgLT4gU3RyaW5nLmNvbXBhcmUgeCB5ID0gMClcbiAgICBhLm1vZGVsX2N1cnJlbnRfaWQgYi5tb2RlbF9jdXJyZW50X2lkXG4gICYmICh0cnlcbiAgICAgICAgTGlzdC5mb3JfYWxsMlxuICAgICAgICAgIChmdW4geCB5IC0+IHgubW9kZWxfcHJvamVjdF9pZCA9IHkubW9kZWxfcHJvamVjdF9pZClcbiAgICAgICAgICBhLm1vZGVsX2NhdGFsb2cgYi5tb2RlbF9jYXRhbG9nXG4gICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBmYWxzZSlcbiAgJiYgYS5tb2RlbF9wcm9qZWN0X3ZlcnNpb24gPSBiLm1vZGVsX3Byb2plY3RfdmVyc2lvblxuICAmJiBhLm1vZGVsX3BhcmFtZXRlcnMgPSBiLm1vZGVsX3BhcmFtZXRlcnNcblxubGV0IGluaXRfZGVmYXVsdF9wYXJhbWV0ZXJzID1cbiAge1xuICAgIHBsb3RfcGVyaW9kID0gMS47XG4gICAgcGF1c2VfY29uZGl0aW9uID0gXCJbZmFsc2VdXCI7XG4gICAgc2VlZCA9IE5vbmU7XG4gICAgc3RvcmVfdHJhY2UgPSBmYWxzZTtcbiAgICBzaG93X2RlYWRfcnVsZXMgPSB0cnVlO1xuICAgIHNob3dfZGVhZF9hZ2VudHMgPSB0cnVlO1xuICAgIHNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID0gZmFsc2U7XG4gIH1cblxubGV0IGluaXRfc3RhdGUgPVxuICB7XG4gICAgcHJvamVjdF9jdXJyZW50ID0gTm9uZTtcbiAgICBwcm9qZWN0X2NhdGFsb2cgPSBbXTtcbiAgICBwcm9qZWN0X3ZlcnNpb24gPSAtMTtcbiAgICBkZWZhdWx0X3BhcmFtZXRlcnMgPSBpbml0X2RlZmF1bHRfcGFyYW1ldGVycztcbiAgICBwcm9qZWN0X3BhcmFtZXRlcnMgPSBNb2RzLlN0cmluZ01hcC5lbXB0eTtcbiAgfVxuXG5sZXQgc3RhdGUsIHNldF9zdGF0ZSA9IFJlYWN0LlMuY3JlYXRlIH5lcTpzdGF0ZV9lcXVhbCBpbml0X3N0YXRlXG5cbmxldCB1cGRhdGVfcGFyYW1ldGVycyBoYW5kbGVyID1cbiAgbGV0IHN0ID0gUmVhY3QuUy52YWx1ZSBzdGF0ZSBpblxuICBsZXQgZGVmYXVsdF9wYXJhbWV0ZXJzLCBwcm9qZWN0X3BhcmFtZXRlcnMgPVxuICAgIG1hdGNoIHN0LnByb2plY3RfY3VycmVudCB3aXRoXG4gICAgfCBOb25lIC0+IGhhbmRsZXIgc3QuZGVmYXVsdF9wYXJhbWV0ZXJzLCBzdC5wcm9qZWN0X3BhcmFtZXRlcnNcbiAgICB8IFNvbWUgcHJvaiAtPlxuICAgICAgKCBzdC5kZWZhdWx0X3BhcmFtZXRlcnMsXG4gICAgICAgIE1vZHMuU3RyaW5nTWFwLmFkZCBwcm9qLnByb2plY3RfaWRcbiAgICAgICAgICAoaGFuZGxlclxuICAgICAgICAgICAgIChNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHQgc3QuZGVmYXVsdF9wYXJhbWV0ZXJzIHByb2oucHJvamVjdF9pZFxuICAgICAgICAgICAgICAgIHN0LnByb2plY3RfcGFyYW1ldGVycykpXG4gICAgICAgICAgc3QucHJvamVjdF9wYXJhbWV0ZXJzIClcbiAgaW5cbiAgc2V0X3N0YXRlXG4gICAge1xuICAgICAgcHJvamVjdF9jdXJyZW50ID0gc3QucHJvamVjdF9jdXJyZW50O1xuICAgICAgcHJvamVjdF9jYXRhbG9nID0gc3QucHJvamVjdF9jYXRhbG9nO1xuICAgICAgcHJvamVjdF92ZXJzaW9uID0gc3QucHJvamVjdF92ZXJzaW9uO1xuICAgICAgZGVmYXVsdF9wYXJhbWV0ZXJzO1xuICAgICAgcHJvamVjdF9wYXJhbWV0ZXJzO1xuICAgIH1cblxubGV0IHNldF9wYXJhbWV0ZXJzX2FzX2RlZmF1bHQgKCkgPVxuICBsZXQgc3QgPSBSZWFjdC5TLnZhbHVlIHN0YXRlIGluXG4gIGxldCBwYSA9XG4gICAgbWF0Y2ggc3QucHJvamVjdF9jdXJyZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gc3QuZGVmYXVsdF9wYXJhbWV0ZXJzXG4gICAgfCBTb21lIHByb2ogLT5cbiAgICAgIE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBzdC5kZWZhdWx0X3BhcmFtZXRlcnMgcHJvai5wcm9qZWN0X2lkXG4gICAgICAgIHN0LnByb2plY3RfcGFyYW1ldGVyc1xuICBpblxuICBsZXQgKCkgPVxuICAgIEpzLk9wdGRlZi5pdGVyIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZSAoZnVuIGxzIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbHMjI3NldEl0ZW0gcGxvdFBlcmlvZFBhcmFtSWRcbiAgICAgICAgICAgIChKcy5zdHJpbmcgKHN0cmluZ19vZl9mbG9hdCBwYS5wbG90X3BlcmlvZCkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbHMjI3NldEl0ZW0gcGF1c2VDb25kaXRpb25QYXJhbUlkIChKcy5zdHJpbmcgcGEucGF1c2VfY29uZGl0aW9uKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIHBhLnNlZWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBscyMjcmVtb3ZlSXRlbSBzZWVkUGFyYW1JZFxuICAgICAgICAgIHwgU29tZSB2YSAtPiBscyMjc2V0SXRlbSBzZWVkUGFyYW1JZCAoSnMuc3RyaW5nIChzdHJpbmdfb2ZfaW50IHZhKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwYS5zdG9yZV90cmFjZSB0aGVuXG4gICAgICAgICAgICBscyMjc2V0SXRlbSBzdG9yZVRyYWNlUGFyYW1JZCAoSnMuc3RyaW5nIFwidHJ1ZVwiKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxzIyNyZW1vdmVJdGVtIHN0b3JlVHJhY2VQYXJhbUlkXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcGEuc2hvd19kZWFkX3J1bGVzIHRoZW5cbiAgICAgICAgICAgIGxzIyNzZXRJdGVtIHNob3dEZWFkUnVsZXNQYXJhbUlkIChKcy5zdHJpbmcgXCJ0cnVlXCIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbHMjI3NldEl0ZW0gc2hvd0RlYWRSdWxlc1BhcmFtSWQgKEpzLnN0cmluZyBcImZhbHNlXCIpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcGEuc2hvd19kZWFkX2FnZW50cyB0aGVuXG4gICAgICAgICAgICBscyMjc2V0SXRlbSBzaG93RGVhZEFnZW50c1BhcmFtSWQgKEpzLnN0cmluZyBcInRydWVcIilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBscyMjc2V0SXRlbSBzaG93RGVhZEFnZW50c1BhcmFtSWQgKEpzLnN0cmluZyBcImZhbHNlXCIpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcGEuc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgdGhlblxuICAgICAgICAgICAgbHMjI3NldEl0ZW0gc2hvd0lycmV2ZXJzaWJsZVRyYW5zaXRpb25zUGFyYW1JZCAoSnMuc3RyaW5nIFwidHJ1ZVwiKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxzIyNyZW1vdmVJdGVtIHNob3dJcnJldmVyc2libGVUcmFuc2l0aW9uc1BhcmFtSWRcbiAgICAgICAgaW5cbiAgICAgICAgKCkpXG4gIGluXG4gIHNldF9zdGF0ZVxuICAgIHtcbiAgICAgIHByb2plY3RfY3VycmVudCA9IHN0LnByb2plY3RfY3VycmVudDtcbiAgICAgIHByb2plY3RfY2F0YWxvZyA9IHN0LnByb2plY3RfY2F0YWxvZztcbiAgICAgIHByb2plY3RfdmVyc2lvbiA9IHN0LnByb2plY3RfdmVyc2lvbjtcbiAgICAgIHByb2plY3RfcGFyYW1ldGVycyA9IHN0LnByb2plY3RfcGFyYW1ldGVycztcbiAgICAgIGRlZmF1bHRfcGFyYW1ldGVycyA9IHBhO1xuICAgIH1cblxubGV0IHNldF9wbG90X3BlcmlvZCBwbG90X3BlcmlvZCA9XG4gIHVwZGF0ZV9wYXJhbWV0ZXJzIChmdW4gcGFyYW0gLT4geyBwYXJhbSB3aXRoIHBsb3RfcGVyaW9kIH0pXG5cbmxldCBzZXRfcGF1c2VfY29uZGl0aW9uIHBhdXNlX2NvbmRpdGlvbiA9XG4gIHVwZGF0ZV9wYXJhbWV0ZXJzIChmdW4gcGFyYW0gLT4geyBwYXJhbSB3aXRoIHBhdXNlX2NvbmRpdGlvbiB9KVxuXG5sZXQgc2V0X3NlZWQgc2VlZCA9IHVwZGF0ZV9wYXJhbWV0ZXJzIChmdW4gcGFyYW0gLT4geyBwYXJhbSB3aXRoIHNlZWQgfSlcblxubGV0IHNldF9zdG9yZV90cmFjZSBzdG9yZV90cmFjZSA9XG4gIHVwZGF0ZV9wYXJhbWV0ZXJzIChmdW4gcGFyYW0gLT4geyBwYXJhbSB3aXRoIHN0b3JlX3RyYWNlIH0pXG5cbmxldCBzZXRfc2hvd19kZWFkX3J1bGVzIHNob3dfZGVhZF9ydWxlcyA9XG4gIHVwZGF0ZV9wYXJhbWV0ZXJzIChmdW4gcGFyYW0gLT4geyBwYXJhbSB3aXRoIHNob3dfZGVhZF9ydWxlcyB9KVxuXG5sZXQgc2V0X3Nob3dfZGVhZF9hZ2VudHMgc2hvd19kZWFkX2FnZW50cyA9XG4gIHVwZGF0ZV9wYXJhbWV0ZXJzIChmdW4gcGFyYW0gLT4geyBwYXJhbSB3aXRoIHNob3dfZGVhZF9hZ2VudHMgfSlcblxubGV0IHNldF9zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuICAgIHNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgdXBkYXRlX3BhcmFtZXRlcnMgKGZ1biBwYXJhbSAtPlxuICAgICAgeyBwYXJhbSB3aXRoIHNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zIH0pXG5cbmxldCB1cGRhdGVfc3RhdGUgbWUgcHJvamVjdF9jYXRhbG9nIGRlZmF1bHRfcGFyYW1ldGVycyBwcm9qZWN0X3BhcmFtZXRlcnMgPVxuICBtZS5wcm9qZWN0X21hbmFnZXIjcHJvamVjdF9wYXJzZSB+cGF0dGVyblNoYXJpbmc6UGF0dGVybi5Db21wYXRpYmxlX3BhdHRlcm5zXG4gICAgW11cbiAgPj49XG4gIGxldCAoKSA9XG4gICAgc2V0X3N0YXRlXG4gICAgICB7XG4gICAgICAgIHByb2plY3RfY3VycmVudCA9IFNvbWUgbWU7XG4gICAgICAgIHByb2plY3RfY2F0YWxvZztcbiAgICAgICAgZGVmYXVsdF9wYXJhbWV0ZXJzO1xuICAgICAgICBwcm9qZWN0X3BhcmFtZXRlcnM7XG4gICAgICAgIHByb2plY3RfdmVyc2lvbiA9IDE7XG4gICAgICB9XG4gIGluXG4gIGZ1biBvdXQgLT5cbiAgICBsZXQgc3QgPSBSZWFjdC5TLnZhbHVlIHN0YXRlIGluXG4gICAgbGV0ICgpID1cbiAgICAgIHNldF9zdGF0ZVxuICAgICAgICB7XG4gICAgICAgICAgc3Qgd2l0aFxuICAgICAgICAgIHByb2plY3RfY3VycmVudCA9IFNvbWUgbWU7XG4gICAgICAgICAgcHJvamVjdF92ZXJzaW9uID0gc3QucHJvamVjdF92ZXJzaW9uICsgMTtcbiAgICAgICAgfVxuICAgIGluXG4gICAgTHd0LnJldHVybiBvdXRcblxubGV0IGNvbXB1dGluZ193YXRjaGVyIG1hbmFnZXIgc2V0dGVyID1cbiAgbGV0IGRlbGF5ID0gMS4gaW5cbiAgbGV0IGNhbmNlbGxlZCA9IHJlZiBmYWxzZSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGxldCAoKSA9IHNldHRlciBtYW5hZ2VyI2lzX2NvbXB1dGluZyBpblxuICAgIGlmICFjYW5jZWxsZWQgdGhlblxuICAgICAgTHd0LnJldHVybl91bml0XG4gICAgZWxzZVxuICAgICAgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcy5zbGVlcCBkZWxheSA+Pj0gbG9vcFxuICBpblxuICBsZXQgKCkgPSBDb21tb24uYXN5bmMgX19MT0NfXyBsb29wIGluXG4gIGNhbmNlbGxlZFxuXG5sZXQgYWRkX3Byb2plY3QgaXNfbmV3IHByb2plY3RfaWQgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBsZXQgc3RhdGVfdmEgPSBSZWFjdC5TLnZhbHVlIHN0YXRlIGluXG4gICgqIFRPRE86IElzIGl0IG9rIHRvIGdldCB0aGUgdmFsdWUgbGlrZSB0aGlzID8gKilcbiAgbGV0IGNhdGFsb2cgPSBzdGF0ZV92YS5wcm9qZWN0X2NhdGFsb2cgaW5cbiAgKHRyeVxuICAgICBMd3QucmV0dXJuXG4gICAgICAgKFJlc3VsdF91dGlsLm9rXG4gICAgICAgICAgKCBMaXN0LmZpbmQgKGZ1biB4IC0+IHgucHJvamVjdF9pZCA9IHByb2plY3RfaWQpIGNhdGFsb2csXG4gICAgICAgICAgICBjYXRhbG9nLFxuICAgICAgICAgICAgc3RhdGVfdmEucHJvamVjdF9wYXJhbWV0ZXJzICkpXG4gICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICBTdGF0ZV9ydW50aW1lLmNyZWF0ZV9tYW5hZ2VyIH5pc19uZXcgcHJvamVjdF9pZFxuICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gcHJvamVjdF9tYW5hZ2VyIC0+XG4gICAgICAgICAgICAgbGV0IHByb2plY3RfaXNfY29tcHV0aW5nLCBzZXRfY29tcHV0ZXMgPSBSZWFjdC5TLmNyZWF0ZSB0cnVlIGluXG4gICAgICAgICAgICAgbGV0IHByb2plY3Rfd2F0Y2hlcl9jYW5jZWwgPVxuICAgICAgICAgICAgICAgY29tcHV0aW5nX3dhdGNoZXIgcHJvamVjdF9tYW5hZ2VyIChzZXRfY29tcHV0ZXMgP3N0ZXA6Tm9uZSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCBtZSA9XG4gICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgIHByb2plY3RfaWQ7XG4gICAgICAgICAgICAgICAgIHByb2plY3RfbWFuYWdlcjtcbiAgICAgICAgICAgICAgICAgcHJvamVjdF9pc19jb21wdXRpbmc7XG4gICAgICAgICAgICAgICAgIHByb2plY3Rfd2F0Y2hlcl9jYW5jZWw7XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsZXQgZGVmYXVsdF9wYXJhbWV0ZXJzID0gc3RhdGVfdmEuZGVmYXVsdF9wYXJhbWV0ZXJzIGluXG4gICAgICAgICAgICAgbGV0IHBhcmFtcyA9XG4gICAgICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5hZGQgcHJvamVjdF9pZCBkZWZhdWx0X3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgc3RhdGVfdmEucHJvamVjdF9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAobWUsIG1lIDo6IGNhdGFsb2csIHBhcmFtcykpKSlcbiAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIChtZSwgY2F0YWxvZywgcGFyYW1zKSAtPlxuICAgICAgICAgIHVwZGF0ZV9zdGF0ZSBtZSBjYXRhbG9nIHN0YXRlX3ZhLmRlZmF1bHRfcGFyYW1ldGVycyBwYXJhbXMpXG5cbmxldCBjcmVhdGVfcHJvamVjdCBwcm9qZWN0X2lkID0gYWRkX3Byb2plY3QgdHJ1ZSBwcm9qZWN0X2lkXG5sZXQgc2V0X3Byb2plY3QgcHJvamVjdF9pZCA9IGFkZF9wcm9qZWN0IGZhbHNlIHByb2plY3RfaWRcblxubGV0IGR1bW15X21vZGVsID1cbiAge1xuICAgIG1vZGVsX2N1cnJlbnRfaWQgPSBOb25lO1xuICAgIG1vZGVsX2NhdGFsb2cgPSBbXTtcbiAgICBtb2RlbF9wcm9qZWN0X3ZlcnNpb24gPSAtMTtcbiAgICBtb2RlbF9wYXJhbWV0ZXJzID0gaW5pdF9kZWZhdWx0X3BhcmFtZXRlcnM7XG4gIH1cblxubGV0IG1vZGVsIDogbW9kZWwgUmVhY3Quc2lnbmFsID1cbiAgUmVhY3QuUy5tYXAgfmVxOm1vZGVsX2VxdWFsXG4gICAgKGZ1biBzdGF0ZSAtPlxuICAgICAgbGV0IG1vZGVsX2NhdGFsb2cgPVxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gcCAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtb2RlbF9wcm9qZWN0X2lkID0gcC5wcm9qZWN0X2lkO1xuICAgICAgICAgICAgICBtb2RlbF9wcm9qZWN0X2lzX2NvbXB1dGluZyA9IHAucHJvamVjdF9pc19jb21wdXRpbmc7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIHN0YXRlLnByb2plY3RfY2F0YWxvZ1xuICAgICAgaW5cbiAgICAgIGxldCBtb2RlbF9wYXJhbWV0ZXJzID1cbiAgICAgICAgbWF0Y2ggc3RhdGUucHJvamVjdF9jdXJyZW50IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHN0YXRlLmRlZmF1bHRfcGFyYW1ldGVyc1xuICAgICAgICB8IFNvbWUgcHJvaiAtPlxuICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBzdGF0ZS5kZWZhdWx0X3BhcmFtZXRlcnMgcHJvai5wcm9qZWN0X2lkXG4gICAgICAgICAgICBzdGF0ZS5wcm9qZWN0X3BhcmFtZXRlcnNcbiAgICAgIGluXG4gICAgICB7XG4gICAgICAgIG1vZGVsX2N1cnJlbnRfaWQgPVxuICAgICAgICAgIE9wdGlvbl91dGlsLm1hcCAoZnVuIHggLT4geC5wcm9qZWN0X2lkKSBzdGF0ZS5wcm9qZWN0X2N1cnJlbnQ7XG4gICAgICAgIG1vZGVsX2NhdGFsb2c7XG4gICAgICAgIG1vZGVsX3Byb2plY3RfdmVyc2lvbiA9IHN0YXRlLnByb2plY3RfdmVyc2lvbjtcbiAgICAgICAgbW9kZWxfcGFyYW1ldGVycztcbiAgICAgIH0pXG4gICAgc3RhdGVcblxubGV0IHN5bmMgKCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBtYXRjaCAoUmVhY3QuUy52YWx1ZSBzdGF0ZSkucHJvamVjdF9jdXJyZW50IHdpdGhcbiAgfCBOb25lIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICB8IFNvbWUgY3VycmVudCAtPlxuICAgIGN1cnJlbnQucHJvamVjdF9tYW5hZ2VyI3Byb2plY3RfcGFyc2VcbiAgICAgIH5wYXR0ZXJuU2hhcmluZzpQYXR0ZXJuLkNvbXBhdGlibGVfcGF0dGVybnMgW11cbiAgICA+Pj0gZnVuIG91dCAtPlxuICAgIGxldCBzdCA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgICBsZXQgKCkgPSBzZXRfc3RhdGUgeyBzdCB3aXRoIHByb2plY3RfdmVyc2lvbiA9IHN1Y2Mgc3QucHJvamVjdF92ZXJzaW9uIH0gaW5cbiAgICBMd3QucmV0dXJuIG91dFxuXG5sZXQgcmVtb3ZlX2ZpbGVzIG1hbmFnZXIgPVxuICBtYW5hZ2VyI2ZpbGVfY2F0YWxvZ1xuICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gY2F0YWxvZyAtPlxuICAgICAgICAgIEx3dF9saXN0Lml0ZXJfcFxuICAgICAgICAgICAgKGZ1biBtIC0+XG4gICAgICAgICAgICAgIG1hbmFnZXIjZmlsZV9kZWxldGUgbS5LZmlsZXMuaWQgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcbiAgICAgICAgICAgIGNhdGFsb2dcbiAgICAgICAgICA+Pj0gZnVuICgpIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcblxubGV0IHJlbW92ZV9wcm9qZWN0IHByb2plY3RfaWQgPVxuICBsZXQgc3RhdGUgPSBSZWFjdC5TLnZhbHVlIHN0YXRlIGluXG4gIHRyeVxuICAgIGxldCBjdXJyZW50ID1cbiAgICAgIExpc3QuZmluZCAoZnVuIHggLT4geC5wcm9qZWN0X2lkID0gcHJvamVjdF9pZCkgc3RhdGUucHJvamVjdF9jYXRhbG9nXG4gICAgaW5cbiAgICByZW1vdmVfZmlsZXMgY3VycmVudC5wcm9qZWN0X21hbmFnZXIgPj49IGZ1biBvdXQnIC0+XG4gICAgbGV0ICgpID0gY3VycmVudC5wcm9qZWN0X3dhdGNoZXJfY2FuY2VsIDo9IHRydWUgaW5cbiAgICBsZXQgcHJvamVjdF9jYXRhbG9nID1cbiAgICAgIExpc3QuZmlsdGVyXG4gICAgICAgIChmdW4geCAtPiB4LnByb2plY3RfaWQgPD4gY3VycmVudC5wcm9qZWN0X2lkKVxuICAgICAgICBzdGF0ZS5wcm9qZWN0X2NhdGFsb2dcbiAgICBpblxuICAgIGxldCBwcm9qZWN0X2N1cnJlbnQgPVxuICAgICAgaWZcbiAgICAgICAgbWF0Y2ggc3RhdGUucHJvamVjdF9jdXJyZW50IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSB2IC0+IHYucHJvamVjdF9pZCA9IGN1cnJlbnQucHJvamVjdF9pZFxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIHByb2plY3RfY2F0YWxvZyB3aXRoXG4gICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICB8IGggOjogXyAtPiBTb21lIGhcbiAgICAgICkgZWxzZVxuICAgICAgICBzdGF0ZS5wcm9qZWN0X2N1cnJlbnRcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBzZXRfc3RhdGVcbiAgICAgICAge1xuICAgICAgICAgIHByb2plY3RfY3VycmVudDtcbiAgICAgICAgICBwcm9qZWN0X2NhdGFsb2c7XG4gICAgICAgICAgZGVmYXVsdF9wYXJhbWV0ZXJzID0gc3RhdGUuZGVmYXVsdF9wYXJhbWV0ZXJzO1xuICAgICAgICAgIHByb2plY3RfcGFyYW1ldGVycyA9XG4gICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5yZW1vdmUgcHJvamVjdF9pZCBzdGF0ZS5wcm9qZWN0X3BhcmFtZXRlcnM7XG4gICAgICAgICAgcHJvamVjdF92ZXJzaW9uID0gLTE7XG4gICAgICAgIH1cbiAgICBpblxuICAgIGxldCAoKSA9IGN1cnJlbnQucHJvamVjdF9tYW5hZ2VyI3Rlcm1pbmF0ZSBpblxuICAgIHN5bmMgKCkgPj49IGZ1biBvdXQnJyAtPlxuICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2NvbWJpbmUgWyBvdXQnOyBvdXQnJyBdKVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIEx3dC5yZXR1cm5cbiAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2dcbiAgICAgICAgIChcIlByb2plY3QgXCIgXiBwcm9qZWN0X2lkIF4gXCIgZG9lcyBub3QgZXhpc3RzXCIpKVxuXG5sZXQgcmVjIGluaXRfcGxvdF9wZXJpb2QgKGFyZyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBtYXRjaCBhcmcgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgaCA6OiB0IC0+XG4gICAgKHRyeSBzZXRfcGxvdF9wZXJpb2QgKGZsb2F0X29mX3N0cmluZyBoKVxuICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgIGxldCBtc2cgPSBGb3JtYXQuc3ByaW50ZiBcImZhaWxlZCB0byBwYXJzZSBpbml0X3Bsb3RfcGVyaW9kICclcydcIiBoIGluXG4gICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgbXNnKSBpblxuICAgICAgIGluaXRfcGxvdF9wZXJpb2QgdClcblxubGV0IGluaXRfcGF1c2VfY29uZGl0aW9uIChhcmcgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGggOjogXyAtPiBzZXRfcGF1c2VfY29uZGl0aW9uIGhcblxubGV0IHJlYyBpbml0X21vZGVsX3NlZWQgKGFyZyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBtYXRjaCBhcmcgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgaCA6OiB0IC0+XG4gICAgKHRyeSBzZXRfcGxvdF9wZXJpb2QgKGZsb2F0X29mX3N0cmluZyBoKVxuICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgIGxldCBtc2cgPSBGb3JtYXQuc3ByaW50ZiBcImZhaWxlZCB0byBwYXJzZSBtb2RlbF9zZWVkICclcydcIiBoIGluXG4gICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgbXNnKSBpblxuICAgICAgIGluaXRfbW9kZWxfc2VlZCB0KVxuXG5sZXQgaW5pdF9zdG9yZV90cmFjZSAoYXJnIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBoIDo6IF8gLT4gc2V0X3N0b3JlX3RyYWNlIChoIDw+IFwiZmFsc2VcIilcblxubGV0IGluaXRfc2hvd19kZWFkX3J1bGVzIChhcmcgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGggOjogXyAtPiBzZXRfc2hvd19kZWFkX3J1bGVzIChoIDw+IFwiZmFsc2VcIilcblxubGV0IGluaXRfc2hvd19kZWFkX2FnZW50cyAoYXJnIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBoIDo6IF8gLT4gc2V0X3Nob3dfZGVhZF9hZ2VudHMgKGggPD4gXCJmYWxzZVwiKVxuXG5sZXQgaW5pdF9zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyAoYXJnIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBoIDo6IF8gLT4gc2V0X3Nob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zIChoIDw+IFwiZmFsc2VcIilcblxubGV0IGluaXQgZXhpc3RpbmdfcHJvamVjdHMgOiB1bml0IEx3dC50ID1cbiAgbGV0IGFyZ19wbG90X3BlcmlvZCA9XG4gICAgbGV0IGRlZmF1bHQgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2VcbiAgICAgICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgIChmdW4gc3QgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKHN0IyNnZXRJdGVtIHBsb3RQZXJpb2RQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwicGxvdF9wZXJpb2RcIlxuICBpblxuICBsZXQgYXJnX3BhdXNlX2NvbmRpdGlvbiA9XG4gICAgbGV0IGRlZmF1bHQgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2VcbiAgICAgICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgIChmdW4gc3QgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKHN0IyNnZXRJdGVtIHBhdXNlQ29uZGl0aW9uUGFyYW1JZClcbiAgICAgICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgICAgICAoZnVuIHggLT4gWyBKcy50b19zdHJpbmcgeCBdKSlcbiAgICBpblxuICAgIENvbW1vbl9zdGF0ZS51cmxfYXJncyB+ZGVmYXVsdCBcInBhdXNlX2NvbmRpdGlvblwiXG4gIGluXG4gIGxldCBhcmdfbW9kZWxfc2VlZCA9XG4gICAgbGV0IGRlZmF1bHQgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2VcbiAgICAgICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgIChmdW4gc3QgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKHN0IyNnZXRJdGVtIHNlZWRQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwibW9kZWxfc2VlZFwiXG4gIGluXG4gIGxldCBhcmdfc3RvcmVfdHJhY2UgPVxuICAgIGxldCBkZWZhdWx0ID1cbiAgICAgIEpzLk9wdGRlZi5jYXNlXG4gICAgICAgIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZVxuICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAoZnVuIHN0IC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChzdCMjZ2V0SXRlbSBzdG9yZVRyYWNlUGFyYW1JZClcbiAgICAgICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgICAgICAoZnVuIHggLT4gWyBKcy50b19zdHJpbmcgeCBdKSlcbiAgICBpblxuICAgIENvbW1vbl9zdGF0ZS51cmxfYXJncyB+ZGVmYXVsdCBcInN0b3JlX3RyYWNlXCJcbiAgaW5cbiAgbGV0IGFyZ19zaG93X2RlYWRfcnVsZXMgPVxuICAgIGxldCBkZWZhdWx0ID1cbiAgICAgIEpzLk9wdGRlZi5jYXNlXG4gICAgICAgIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZVxuICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAoZnVuIHN0IC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChzdCMjZ2V0SXRlbSBzaG93RGVhZFJ1bGVzUGFyYW1JZClcbiAgICAgICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgICAgICAoZnVuIHggLT4gWyBKcy50b19zdHJpbmcgeCBdKSlcbiAgICBpblxuICAgIENvbW1vbl9zdGF0ZS51cmxfYXJncyB+ZGVmYXVsdCBcInNob3dfZGVhZF9ydWxlc1wiXG4gIGluXG4gIGxldCBhcmdfc2hvd19kZWFkX2FnZW50cyA9XG4gICAgbGV0IGRlZmF1bHQgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2VcbiAgICAgICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgIChmdW4gc3QgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKHN0IyNnZXRJdGVtIHNob3dEZWFkQWdlbnRzUGFyYW1JZClcbiAgICAgICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgICAgICAoZnVuIHggLT4gWyBKcy50b19zdHJpbmcgeCBdKSlcbiAgICBpblxuICAgIENvbW1vbl9zdGF0ZS51cmxfYXJncyB+ZGVmYXVsdCBcInNob3dfZGVhZF9hZ2VudHNcIlxuICBpblxuICBsZXQgYXJnX3Nob3dfaXJyZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gc2hvd0lycmV2ZXJzaWJsZVRyYW5zaXRpb25zUGFyYW1JZClcbiAgICAgICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgICAgICAoZnVuIHggLT4gWyBKcy50b19zdHJpbmcgeCBdKSlcbiAgICBpblxuICAgIENvbW1vbl9zdGF0ZS51cmxfYXJncyB+ZGVmYXVsdCBcInNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXCJcbiAgaW5cbiAgbGV0ICgpID0gaW5pdF9wbG90X3BlcmlvZCBhcmdfcGxvdF9wZXJpb2QgaW5cbiAgbGV0ICgpID0gaW5pdF9wYXVzZV9jb25kaXRpb24gYXJnX3BhdXNlX2NvbmRpdGlvbiBpblxuICBsZXQgKCkgPSBpbml0X21vZGVsX3NlZWQgYXJnX21vZGVsX3NlZWQgaW5cbiAgbGV0ICgpID0gaW5pdF9zdG9yZV90cmFjZSBhcmdfc3RvcmVfdHJhY2UgaW5cbiAgbGV0ICgpID0gaW5pdF9zaG93X2RlYWRfcnVsZXMgYXJnX3Nob3dfZGVhZF9ydWxlcyBpblxuICBsZXQgKCkgPSBpbml0X3Nob3dfZGVhZF9hZ2VudHMgYXJnX3Nob3dfZGVhZF9hZ2VudHMgaW5cbiAgbGV0ICgpID1cbiAgICBpbml0X3Nob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICBhcmdfc2hvd19pcnJldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgaW5cblxuICBsZXQgcHJvamVjdHMgPSBDb21tb25fc3RhdGUudXJsX2FyZ3MgfmRlZmF1bHQ6WyBcImRlZmF1bHRcIiBdIFwicHJvamVjdFwiIGluXG4gIGxldCByZWMgYWRkX3Byb2plY3RzIHByb2plY3RzIDogdW5pdCBMd3QudCA9XG4gICAgbWF0Y2ggcHJvamVjdHMgd2l0aFxuICAgIHwgW10gLT4gTHd0LnJldHVybl91bml0XG4gICAgfCBwcm9qZWN0IDo6IHByb2plY3RzIC0+XG4gICAgICBhZGRfcHJvamVjdFxuICAgICAgICAoTGlzdC5mb3JfYWxsIChmdW4geCAtPiB4IDw+IHByb2plY3QpIGV4aXN0aW5nX3Byb2plY3RzKVxuICAgICAgICBwcm9qZWN0XG4gICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfm9rOihmdW4gKCkgLT4gYWRkX3Byb2plY3RzIHByb2plY3RzKVxuICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcImNyZWF0aW5nIHByb2plY3QgJXMgZXJyb3IgQFslYUBdXCIgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgUmVzdWx0X3V0aWwucHJpbnRfbWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgIGVycm9yc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENvbW1vbi5kZWJ1Z1xuICAgICAgICAgICAgICAgICAgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJTdGF0ZV9wcm9qZWN0LmluaXQgMiA6ICVzXCIgbXNnKSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWRkX3Byb2plY3RzIHByb2plY3RzKVxuICBpblxuICBhZGRfcHJvamVjdHMgZXhpc3RpbmdfcHJvamVjdHMgPj49IGZ1biAoKSAtPiBhZGRfcHJvamVjdHMgcHJvamVjdHNcblxubGV0IGV2YWxfd2l0aF9wcm9qZWN0IDpcbiAgICAgICdhLlxuICAgICAgbGFiZWw6c3RyaW5nIC0+XG4gICAgICAoQXBpLmNvbmNyZXRlX21hbmFnZXIgLT4gJ2EgQXBpLnJlc3VsdCBMd3QudCkgLT5cbiAgICAgICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuIGZ1biB+bGFiZWwgaGFuZGxlciAtPlxuICBtYXRjaCAoUmVhY3QuUy52YWx1ZSBzdGF0ZSkucHJvamVjdF9jdXJyZW50IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICBGb3JtYXQuc3ByaW50ZiBcIkZhaWxlZCAlcyBkdWUgdG8gdW5hdmFpbGFibGUgcHJvamVjdC5cIiBsYWJlbFxuICAgIGluXG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgfCBTb21lIGN1cnJlbnQgLT4gaGFuZGxlciBjdXJyZW50LnByb2plY3RfbWFuYWdlclxuXG5sZXQgb25fcHJvamVjdF9jaGFuZ2VfYXN5bmMgP2VxIH5vbiA/KG90aGVyc19lcSA9ICggPSApKSBpbml0X290aGVycyBvdGhlcnNcbiAgICBkZWZhdWx0IGhhbmRsZXIgPVxuICBsZXQgZXFfcGFpciA9IE1vZHMucGFpcl9lcXVhbCBzdGF0ZV9lcXVhbCBvdGhlcnNfZXEgaW5cbiAgUmVhY3QuUy5ob2xkID9lcSBkZWZhdWx0XG4gICAgKEx3dF9yZWFjdC5FLm1hcF9wXG4gICAgICAgKGZ1biAoc3QsIG90aCkgLT5cbiAgICAgICAgIG1hdGNoIHN0LnByb2plY3RfY3VycmVudCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gTHd0LnJldHVybiBkZWZhdWx0XG4gICAgICAgICB8IFNvbWUgY3VycmVudCAtPiBoYW5kbGVyIGN1cnJlbnQucHJvamVjdF9tYW5hZ2VyIG90aClcbiAgICAgICAoUmVhY3QuUy5jaGFuZ2VzXG4gICAgICAgICAgKFJlYWN0LlMub24gfmVxOmVxX3BhaXIgb24gKGluaXRfc3RhdGUsIGluaXRfb3RoZXJzKVxuICAgICAgICAgICAgIChSZWFjdC5TLlBhaXIucGFpciB+ZXE6ZXFfcGFpciBzdGF0ZSBvdGhlcnMpKSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlIHNsb3QgPSB7IGxvY2FsOiBzdHJpbmcgb3B0aW9uOyBuYW1lOiBzdHJpbmcgfVxudHlwZSBhY3RpdmUgPSB7IHJhbms6IGludDsgY3Vyc29yX3BvczogTG9jLnBvc2l0aW9uOyBvdXRfb2Zfc3luYzogYm9vbCB9XG50eXBlIG1vZGVsID0geyBjdXJyZW50OiBhY3RpdmUgb3B0aW9uOyBkaXJlY3Rvcnk6IHNsb3QgTW9kcy5JbnRNYXAudCB9XG5cbmxldCBkdW1teV9jdXJzb3JfcG9zID0geyBMb2MubGluZSA9IC0xOyBMb2MuY2hyID0gMCB9XG5sZXQgYmxhbmtfc3RhdGUgPSB7IGN1cnJlbnQgPSBOb25lOyBkaXJlY3RvcnkgPSBNb2RzLkludE1hcC5lbXB0eSB9XG5sZXQgbW9kZWwsIHNldF9kaXJlY3Rvcnlfc3RhdGUgPSBSZWFjdC5TLmNyZWF0ZSBibGFua19zdGF0ZVxuXG50eXBlIHJlZnJlc2ggPSB7IGZpbGVuYW1lOiBzdHJpbmc7IGNvbnRlbnQ6IHN0cmluZzsgbGluZTogaW50IG9wdGlvbiB9XG5cbmxldCByZWZyZXNoX2ZpbGVfaG9vayA9IHJlZiBbXVxubGV0IHJlZ2lzdGVyX3JlZnJlc2hfZmlsZV9ob29rIHggPSByZWZyZXNoX2ZpbGVfaG9vayA6PSB4IDo6ICFyZWZyZXNoX2ZpbGVfaG9va1xuXG5sZXQgY3VycmVudF9maWxlbmFtZSA9XG4gIFJlYWN0LlMubWFwXG4gICAgKGZ1biBtIC0+XG4gICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgKGZ1biB7IG5hbWU7IF8gfSAtPiBuYW1lKVxuICAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHgucmFuayBtLmRpcmVjdG9yeSkpXG4gICAgICAgIG0uY3VycmVudClcbiAgICBtb2RlbFxuXG5sZXQgd2l0aF9jdXJyZW50X3BvcyA/ZXEgPyhvbiA9IFJlYWN0LlMuY29uc3QgdHJ1ZSkgZiBkZWZhdWx0ID1cbiAgUmVhY3QuUy5mbWFwID9lcVxuICAgIChmdW4gbSAtPlxuICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgICAgICAoZnVuIHsgbmFtZTsgXyB9IC0+IGYgbmFtZSB4LmN1cnNvcl9wb3MpXG4gICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9vcHRpb24geC5yYW5rIG0uZGlyZWN0b3J5KSlcbiAgICAgICAgbS5jdXJyZW50KVxuICAgIGRlZmF1bHRcbiAgICAoUmVhY3QuUy5vbiBvbiBibGFua19zdGF0ZSBtb2RlbClcblxubGV0IHdpdGhfY3VycmVudF9maWxlIGYgPVxuICBsZXQgc3RhdGUgPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIG1hdGNoIHN0YXRlLmN1cnJlbnQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID0gXCJBdHRlbXB0IHRvIGZldGNoIGZpbGUgd2l0aCBub25lIHNlbGVjdGVkLlwiIGluXG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgfCBTb21lIGFjdGl2ZSAtPlxuICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBhY3RpdmUucmFuayBzdGF0ZS5kaXJlY3Rvcnkgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiSW50ZXJuYWwgaW5jb25zaXN0ZW50Y3k6IE5vIGZpbGUgYXQgc2VsZWN0ZWQgcmFuay5cIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpXG4gICAgfCBTb21lIHggLT4gZiBzdGF0ZSBhY3RpdmUgeClcblxubGV0IGdldF9maWxlICgpIDogKHN0cmluZyAqIHN0cmluZykgQXBpLnJlc3VsdCBMd3QudCA9XG4gIHdpdGhfY3VycmVudF9maWxlIChmdW4gX3N0YXRlIGFjdGl2ZSAtPiBmdW5jdGlvblxuICAgIHwgeyBsb2NhbCA9IE5vbmU7IG5hbWUgfSAtPlxuICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJnZXRfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgIG1hbmFnZXIjZmlsZV9nZXQgbmFtZVxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAodGV4dCwgcmFuaycpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBhY3RpdmUucmFuayA9IHJhbmsnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKHRleHQsIG5hbWUpKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvcl9tc2cgPSBcIkluY29uc2lzdGVuY3kgaW4gcmFuayB3aGlsZSBnZXRfZmlsZS5cIiBpblxuICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuICAgICAgICAgICAgICAgICAgKSkpXG4gICAgfCB7IGxvY2FsID0gU29tZSB0ZXh0OyBuYW1lIH0gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKHRleHQsIG5hbWUpKSlcblxubGV0IHNlbmRfcmVmcmVzaCAobGluZSA6IGludCBvcHRpb24pIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgKCogb25seSBzZW5kIHJlZnJlc2ggaWYgdGhlcmUgaXMgYSBjdXJyZW50IGZpbGUgKilcbiAgbWF0Y2ggKFJlYWN0LlMudmFsdWUgbW9kZWwpLmN1cnJlbnQgd2l0aFxuICB8IE5vbmUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gIHwgU29tZSB7IG91dF9vZl9zeW5jOyBfIH0gLT5cbiAgICBpZiBvdXRfb2Zfc3luYyB0aGVuXG4gICAgICBMd3QucmV0dXJuXG4gICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2dcbiAgICAgICAgICAgXCJGaWxlIHdhcyBub3QgaW4gc3luYy4gU3dpdGNoaW5nIG1heSBsZWFkIHRvIGRhdGEgbG9zdC5cIilcbiAgICBlbHNlXG4gICAgICBnZXRfZmlsZSAoKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIChjb250ZW50LCBmaWxlbmFtZSkgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIGNvbnRlbnQgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAgIChmdW4gZiAtPiBmIHsgZmlsZW5hbWU7IGNvbnRlbnQ7IGxpbmUgfSlcbiAgICAgICAgICAgICAgICAgICFyZWZyZXNoX2ZpbGVfaG9va1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG5cbmxldCB1cGRhdGVfZGlyZWN0b3J5IH5yZXNldCBjdXJyZW50IGNhdGFsb2cgPVxuICBsZXQgc3RhdGUgPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIGxldCBkaXJlY3RvcnkgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyB7IEtmaWxlcy5wb3NpdGlvbjsgaWQgfSAtPlxuICAgICAgICBNb2RzLkludE1hcC5hZGQgcG9zaXRpb24geyBuYW1lID0gaWQ7IGxvY2FsID0gTm9uZSB9IGFjYylcbiAgICAgIChpZiByZXNldCB0aGVuXG4gICAgICAgICBNb2RzLkludE1hcC5lbXB0eVxuICAgICAgIGVsc2VcbiAgICAgICAgIHN0YXRlLmRpcmVjdG9yeSlcbiAgICAgIGNhdGFsb2dcbiAgaW5cbiAgc2V0X2RpcmVjdG9yeV9zdGF0ZSB7IGN1cnJlbnQ7IGRpcmVjdG9yeSB9XG5cbmxldCBjcmVhdGVfZmlsZSB+KGZpbGVuYW1lIDogc3RyaW5nKSB+KGNvbnRlbnQgOiBzdHJpbmcpIDogdW5pdCBBcGkucmVzdWx0IEx3dC50XG4gICAgPVxuICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcImNyZWF0ZV9maWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBtYW5hZ2VyI2ZpbGVfY2F0YWxvZ1xuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGNhdGFsb2cgLT5cbiAgICAgICAgICAgICAgbGV0IG1hdGNoaW5nX2ZpbGUgPVxuICAgICAgICAgICAgICAgIExpc3QuZmlsdGVyXG4gICAgICAgICAgICAgICAgICAoZnVuIGZpbGVfbWV0YWRhdGEgLT4gZmlsZW5hbWUgPSBmaWxlX21ldGFkYXRhLktmaWxlcy5pZClcbiAgICAgICAgICAgICAgICAgIGNhdGFsb2dcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIG1hdGNoaW5nX2ZpbGUgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgbGV0IG1heF9wb3MgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBhY2MgeyBLZmlsZXMucG9zaXRpb247IF8gfSAtPiBtYXggYWNjIHBvc2l0aW9uKVxuICAgICAgICAgICAgICAgICAgICAwIGNhdGFsb2dcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hbmFnZXIjZmlsZV9jcmVhdGUgKHN1Y2MgbWF4X3BvcykgZmlsZW5hbWUgY29udGVudFxuICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNmaWxlX2NhdGFsb2dcbiAgICAgICAgICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBjYXRhbG9nJyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm9rIChjYXRhbG9nJywgc3VjYyBtYXhfcG9zKSkpKVxuICAgICAgICAgICAgICB8IG1ldGFkYXRhIDo6IF8gLT5cbiAgICAgICAgICAgICAgICBtYW5hZ2VyI2ZpbGVfdXBkYXRlIGZpbGVuYW1lIGNvbnRlbnRcbiAgICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm9rIChjYXRhbG9nLCBtZXRhZGF0YS5LZmlsZXMucG9zaXRpb24pKSkpXG4gICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoY2F0YWxvZywgY3VycmVudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2RpcmVjdG9yeSB+cmVzZXQ6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmsgPSBjdXJyZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcl9wb3MgPSBkdW1teV9jdXJzb3JfcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9vZl9zeW5jID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGFsb2dcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIHNlbmRfcmVmcmVzaCBOb25lKSkpXG5cbmxldCByZWMgY2hvb3NlX2ZpbGUgY2hvaWNlID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgRm9ybWF0LnNwcmludGYgXCJGYWlsZWQgdG8gc3dpdGNoIGZpbGUgJXMuXCIgY2hvaWNlXG4gICAgaW5cbiAgICBBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnXG4gIHwgeyBLZmlsZXMuaWQ7IHBvc2l0aW9uIH0gOjogdCAtPlxuICAgIGlmIGNob2ljZSA9IGlkIHRoZW5cbiAgICAgIFJlc3VsdF91dGlsLm9rIHBvc2l0aW9uXG4gICAgZWxzZVxuICAgICAgY2hvb3NlX2ZpbGUgY2hvaWNlIHRcblxubGV0IHNlbGVjdF9maWxlIChmaWxlbmFtZSA6IHN0cmluZykgKGxpbmUgOiBpbnQgb3B0aW9uKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudFxuICAgID1cbiAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzZWxlY3RfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNmaWxlX2NhdGFsb2dcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBjYXRhbG9nIC0+XG4gICAgICAgICAgICAgIEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0XG4gICAgICAgICAgICAgICAgfm9rOihmdW4gcmFuayAtPlxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2RpcmVjdG9yeSB+cmVzZXQ6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoU29tZVxuICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbms7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JfcG9zID0gZHVtbXlfY3Vyc29yX3BvcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9vZl9zeW5jID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICBjYXRhbG9nXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgc2VuZF9yZWZyZXNoIGxpbmUpXG4gICAgICAgICAgICAgICAgKGNob29zZV9maWxlIGZpbGVuYW1lIGNhdGFsb2cpKSlcblxubGV0IHNldF9jb250ZW50IChjb250ZW50IDogc3RyaW5nKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIHdpdGhfY3VycmVudF9maWxlIChmdW4gc3RhdGUgYWN0aXZlIC0+IGZ1bmN0aW9uXG4gICAgfCB7IGxvY2FsID0gU29tZSBfOyBuYW1lIH0gLT5cbiAgICAgIGxldCBkaXJlY3RvcnkgPVxuICAgICAgICBNb2RzLkludE1hcC5hZGQgYWN0aXZlLnJhbmtcbiAgICAgICAgICB7IGxvY2FsID0gU29tZSBjb250ZW50OyBuYW1lIH1cbiAgICAgICAgICBzdGF0ZS5kaXJlY3RvcnlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBzZXRfZGlyZWN0b3J5X3N0YXRlIHsgY3VycmVudCA9IHN0YXRlLmN1cnJlbnQ7IGRpcmVjdG9yeSB9IGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICB8IHsgbG9jYWwgPSBOb25lOyBuYW1lIH0gLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHNldF9kaXJlY3Rvcnlfc3RhdGVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjdXJyZW50ID1cbiAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHJhbmsgPSBhY3RpdmUucmFuaztcbiAgICAgICAgICAgICAgICAgIGN1cnNvcl9wb3MgPSBhY3RpdmUuY3Vyc29yX3BvcztcbiAgICAgICAgICAgICAgICAgIG91dF9vZl9zeW5jID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGRpcmVjdG9yeSA9IHN0YXRlLmRpcmVjdG9yeTtcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzZXRfY29udGVudFwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgIG1hbmFnZXIjZmlsZV91cGRhdGUgbmFtZSBjb250ZW50KSlcblxubGV0IHNldF9jb21waWxlIGZpbGVfaWQgKGNvbXBpbGUgOiBib29sKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIGxldCBzdGF0ZSA9IFJlYWN0LlMudmFsdWUgbW9kZWwgaW5cbiAgbWF0Y2hcbiAgICBNb2RzLkludE1hcC5maWx0ZXJfb25lIChmdW4gXyB7IG5hbWU7IF8gfSAtPiBuYW1lID0gZmlsZV9pZCkgc3RhdGUuZGlyZWN0b3J5XG4gIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgbGV0IGVycm9yX21zZyA9IFwiSW50ZXJuYWwgaW5jb25zaXN0ZW5jeTogTm8gZmlsZSBcIiBeIGZpbGVfaWQgaW5cbiAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuICB8IFNvbWUgKHJhbmssIHsgbG9jYWwgPSBTb21lIGNvbnRlbnQ7IG5hbWUgfSkgLT5cbiAgICBpZiBjb21waWxlIHRoZW4gKFxuICAgICAgbGV0IGRpcmVjdG9yeSA9XG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCByYW5rIHsgbG9jYWwgPSBOb25lOyBuYW1lIH0gc3RhdGUuZGlyZWN0b3J5XG4gICAgICBpblxuICAgICAgbGV0ICgpID0gc2V0X2RpcmVjdG9yeV9zdGF0ZSB7IGN1cnJlbnQgPSBzdGF0ZS5jdXJyZW50OyBkaXJlY3RvcnkgfSBpblxuICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzZXRfY29tcGlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgIG1hbmFnZXIjZmlsZV9jcmVhdGUgcmFuayBuYW1lIGNvbnRlbnQpXG4gICAgKSBlbHNlXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgfCBTb21lIChyYW5rLCB7IGxvY2FsID0gTm9uZTsgbmFtZSB9KSAtPlxuICAgIGlmIGNvbXBpbGUgdGhlblxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgZWxzZVxuICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzZXRfY29tcGlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgIG1hbmFnZXIjZmlsZV9nZXQgbmFtZVxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoY29udGVudCwgcmFuaycpIC0+XG4gICAgICAgICAgICAgICAgICBpZiByYW5rID0gcmFuaycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBkaXJlY3RvcnkgPVxuICAgICAgICAgICAgICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCByYW5rXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGxvY2FsID0gU29tZSBjb250ZW50OyBuYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmRpcmVjdG9yeVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIHNldF9kaXJlY3Rvcnlfc3RhdGUgeyBjdXJyZW50ID0gc3RhdGUuY3VycmVudDsgZGlyZWN0b3J5IH1cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzZXRfY29tcGlsZSdcIlxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gbWFuYWdlciAtPiBtYW5hZ2VyI2ZpbGVfZGVsZXRlIG5hbWUpXG4gICAgICAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3JfbXNnID1cbiAgICAgICAgICAgICAgICAgICAgICBcIkluY29uc2lzdGVuY3kgaW4gcmFuayB3aGlsZSBzZXRfY29tcGlsZS5cIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuICAgICAgICAgICAgICAgICAgKSkpXG5cbmxldCByZW1vdmVfZmlsZSAoKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIHdpdGhfY3VycmVudF9maWxlIChmdW4gc3RhdGUgYWN0aXZlIHsgbG9jYWw7IG5hbWUgfSAtPlxuICAgICAgbGV0IGRpcmVjdG9yeSA9IE1vZHMuSW50TWFwLnJlbW92ZSBhY3RpdmUucmFuayBzdGF0ZS5kaXJlY3RvcnkgaW5cbiAgICAgIGxldCBjdXJyZW50ID1cbiAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgKGZ1biAocmFuaywgXykgLT5cbiAgICAgICAgICAgIHsgcmFuazsgY3Vyc29yX3BvcyA9IGR1bW15X2N1cnNvcl9wb3M7IG91dF9vZl9zeW5jID0gZmFsc2UgfSlcbiAgICAgICAgICAoTW9kcy5JbnRNYXAucm9vdCBkaXJlY3RvcnkpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gc2V0X2RpcmVjdG9yeV9zdGF0ZSB7IGN1cnJlbnQ7IGRpcmVjdG9yeSB9IGluXG4gICAgICBsZXQgeCA9IHNlbmRfcmVmcmVzaCBOb25lIGluXG4gICAgICBtYXRjaCBsb2NhbCB3aXRoXG4gICAgICB8IFNvbWUgXyAtPiB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJyZW1vdmVfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgICAgbWFuYWdlciNmaWxlX2RlbGV0ZSBuYW1lID4+PSBmdW4geSAtPlxuICAgICAgICAgICAgeCA+Pj0gZnVuIHggLT4gTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHg7IHkgXSkpKVxuXG5sZXQgZG9fYV9tb3ZlIHN0YXRlIGZpbGVfaWQgcmFuayA9XG4gIG1hdGNoXG4gICAgTW9kcy5JbnRNYXAuZmlsdGVyX29uZSAoZnVuIF8geyBuYW1lOyBfIH0gLT4gbmFtZSA9IGZpbGVfaWQpIHN0YXRlLmRpcmVjdG9yeVxuICB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvcl9tc2cgPSBcIkludGVybmFsIGluY29uc2lzdGVuY3k6IE5vIGZpbGUgXCIgXiBmaWxlX2lkIGluXG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgfCBTb21lIChyYW5rJywgKHsgbG9jYWw7IF8gfSBhcyB4KSkgLT5cbiAgICBsZXQgZGlyZWN0b3J5ID1cbiAgICAgIE1vZHMuSW50TWFwLmFkZCByYW5rIHggKE1vZHMuSW50TWFwLnJlbW92ZSByYW5rJyBzdGF0ZS5kaXJlY3RvcnkpXG4gICAgaW5cbiAgICBsZXQgY3VycmVudCA9XG4gICAgICBtYXRjaCBzdGF0ZS5jdXJyZW50IHdpdGhcbiAgICAgIHwgU29tZSB7IHJhbmsgPSBwb3M7IGN1cnNvcl9wb3M7IG91dF9vZl9zeW5jIH0gd2hlbiBwb3MgPSByYW5rJyAtPlxuICAgICAgICBTb21lIHsgcmFuazsgY3Vyc29yX3Bvczsgb3V0X29mX3N5bmMgfVxuICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGlmIGxvY2FsID0gTm9uZSB0aGVuXG4gICAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInJlbW92ZV9maWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgbWFuYWdlciNmaWxlX21vdmUgcmFuayBmaWxlX2lkXG4gICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayB7IGN1cnJlbnQ7IGRpcmVjdG9yeSB9KSkpXG4gICAgZWxzZVxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgeyBjdXJyZW50OyBkaXJlY3RvcnkgfSlcblxubGV0IHJlYyBzZXRfcG9zaXRpb24gc3RhdGUgZmlsZV9pZCByYW5rID1cbiAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gcmFuayBzdGF0ZS5kaXJlY3Rvcnkgd2l0aFxuICB8IFNvbWUgeyBuYW1lOyBfIH0gLT5cbiAgICBpZiBmaWxlX2lkID0gbmFtZSB0aGVuXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzdGF0ZSlcbiAgICBlbHNlXG4gICAgICBzZXRfcG9zaXRpb24gc3RhdGUgbmFtZSAoc3VjYyByYW5rKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIHN0YXRlJyAtPlxuICAgICAgICAgICAgICBkb19hX21vdmUgc3RhdGUnIGZpbGVfaWQgcmFuaylcbiAgfCBOb25lIC0+IGRvX2FfbW92ZSBzdGF0ZSBmaWxlX2lkIHJhbmtcblxubGV0IG9yZGVyX2ZpbGVzIChmaWxlbmFtZXMgOiBzdHJpbmcgbGlzdCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBsZXQgcmVjIF9vcmRlcl9maWxlIGZpbGVuYW1lcyBzdGF0ZSBpbmRleCA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgbWF0Y2ggZmlsZW5hbWVzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBsZXQgKCkgPSBzZXRfZGlyZWN0b3J5X3N0YXRlIHN0YXRlIGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICB8IGZpbGVfaWQgOjogdGFpbCAtPlxuICAgICAgc2V0X3Bvc2l0aW9uIHN0YXRlIGZpbGVfaWQgaW5kZXhcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBzdGF0ZScgLT5cbiAgICAgICAgICAgICAgX29yZGVyX2ZpbGUgdGFpbCBzdGF0ZScgKGluZGV4ICsgMSkpXG4gIGluXG4gIF9vcmRlcl9maWxlIGZpbGVuYW1lcyAoUmVhY3QuUy52YWx1ZSBtb2RlbCkgMFxuXG5sZXQgY3Vyc29yX2FjdGl2aXR5IH5saW5lIH5jaCA9XG4gIGxldCB2ID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICBtYXRjaCB2LmN1cnJlbnQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHsgcmFuazsgb3V0X29mX3N5bmM7IF8gfSAtPlxuICAgIHNldF9kaXJlY3Rvcnlfc3RhdGVcbiAgICAgIHtcbiAgICAgICAgY3VycmVudCA9XG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICByYW5rO1xuICAgICAgICAgICAgICBjdXJzb3JfcG9zID0geyBMb2MubGluZSA9IHN1Y2MgbGluZTsgY2hyID0gY2ggfTtcbiAgICAgICAgICAgICAgb3V0X29mX3N5bmM7XG4gICAgICAgICAgICB9O1xuICAgICAgICBkaXJlY3RvcnkgPSB2LmRpcmVjdG9yeTtcbiAgICAgIH1cblxubGV0IG91dF9vZl9zeW5jIG91dF9vZl9zeW5jID1cbiAgbGV0IHYgPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIG1hdGNoIHYuY3VycmVudCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeyByYW5rOyBjdXJzb3JfcG9zOyBfIH0gLT5cbiAgICBzZXRfZGlyZWN0b3J5X3N0YXRlXG4gICAgICB7XG4gICAgICAgIGN1cnJlbnQgPSBTb21lIHsgcmFuazsgY3Vyc29yX3Bvczsgb3V0X29mX3N5bmMgfTtcbiAgICAgICAgZGlyZWN0b3J5ID0gdi5kaXJlY3Rvcnk7XG4gICAgICB9XG5cbmxldCBzeW5jID8ocmVzZXQgPSBmYWxzZSkgKCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInNlbGVjdF9maWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBtYW5hZ2VyI2ZpbGVfY2F0YWxvZ1xuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGNhdGFsb2cgLT5cbiAgICAgICAgICAgICAgbGV0IGNhbmQgPSAoUmVhY3QuUy52YWx1ZSBtb2RlbCkuY3VycmVudCBpblxuICAgICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgcmVzZXRcbiAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICBtYXRjaCBjYW5kIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgICAgICAgICAgIChmdW4geyBLZmlsZXMucG9zaXRpb247IF8gfSAtPiB4LnJhbmsgPSBwb3NpdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICBjYXRhbG9nXG4gICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBjYXRhbG9nIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgfCB7IEtmaWxlcy5wb3NpdGlvbjsgXyB9IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmsgPSBwb3NpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcl9wb3MgPSBkdW1teV9jdXJzb3JfcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0X29mX3N5bmMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBjYW5kXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9kaXJlY3RvcnkgfnJlc2V0IHBvcyBjYXRhbG9nIGluXG4gICAgICAgICAgICAgIHNlbmRfcmVmcmVzaCBOb25lKSlcblxubGV0IGxvYWRfZGVmYXVsdCAoKSA6IHVuaXQgTHd0LnQgPVxuICBjcmVhdGVfZmlsZSB+ZmlsZW5hbWU6XCJtb2RlbC5rYVwiIH5jb250ZW50OlwiXCJcbiAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgfm9rOihmdW4gKCkgLT4gTHd0LnJldHVybl91bml0KVxuICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICBcIlN0YXRlX2ZpbGUubG9hZF9kZWZhdWx0IDogY3JlYXRpbmcgZGVmYXVsdCBmaWxlIGVycm9yQCBAWzx2PiVhQF1cIlxuICAgICAgICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSBSZXN1bHRfdXRpbC5wcmludF9tZXNzYWdlKVxuICAgICAgICAgICAgICBlcnJvcnNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIG1zZykgaW5cbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBsb2FkX21vZGVscyAoKSA6IHVuaXQgTHd0LnQgPVxuICBsZXQgbW9kZWxzID0gQ29tbW9uX3N0YXRlLnVybF9hcmdzIFwibW9kZWxcIiBpblxuICBsZXQgcmVjIGFkZF9tb2RlbHMgbW9kZWxzIGxvYWRfZmlsZSA6IHVuaXQgTHd0LnQgPVxuICAgIG1hdGNoIG1vZGVscyB3aXRoXG4gICAgfCBbXSAtPiBMd3QucmV0dXJuX3VuaXRcbiAgICB8IG1vZGVsIDo6IG1vZGVscyAtPlxuICAgICAgKCogZmV0Y2ggbW9kZWwgKilcbiAgICAgIEpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5nZXQgbW9kZWxcbiAgICAgID4+PSAoZnVuIGNvbnRlbnQgLT5cbiAgICAgICAgICAgIGlmIGNvbnRlbnQuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LmNvZGUgPD4gMjAwIHRoZW5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2dcbiAgICAgICAgICAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCJiYWQgcmVzcG9uc2UgY29kZSAlZCBmZXRjaGluZyB1cmwgJXNcIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LmNvZGUgbW9kZWwpKVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgVXJsLnVybF9vZl9zdHJpbmcgY29udGVudC5Kc19vZl9vY2FtbF9sd3QuWG1sSHR0cFJlcXVlc3QudXJsXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZ1xuICAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiZmFpbGVkIHRvIHJldHJpZXZlIHVybCAlc1wiIG1vZGVsKSlcbiAgICAgICAgICAgICAgfCBTb21lIHUgLT5cbiAgICAgICAgICAgICAgICBsZXQgZmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgICAgTGlzdF91dGlsLmxhc3RcbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHUgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFVybC5IdHRwIGggfCBVcmwuSHR0cHMgaCAtPiBoLlVybC5odV9wYXRoXG4gICAgICAgICAgICAgICAgICAgIHwgVXJsLkZpbGUgZiAtPiBmLlVybC5mdV9wYXRoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGZpbGVjb250ZW50IDogc3RyaW5nID1cbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LmNvbnRlbnRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChmaWxlbmFtZSwgZmlsZWNvbnRlbnQpKVxuICAgICAgICAgICAgKSlcbiAgICAgID4+PSAoKiBhZGQgY29udGVudCAqKVxuICAgICAgQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKGZpbGVuYW1lLCBjb250ZW50KSAtPlxuICAgICAgICAgIGNyZWF0ZV9maWxlIH5maWxlbmFtZSB+Y29udGVudFxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgZmlsZW5hbWUpKSlcbiAgICAgID4+PSAoKiBzZWxlY3QgbW9kZWwgaWYgbmVlZGVkICopXG4gICAgICBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgIH5vazooZnVuIGZpbGVuYW1lIC0+XG4gICAgICAgICAgaWYgbG9hZF9maWxlIHRoZW5cbiAgICAgICAgICAgIHNlbGVjdF9maWxlIGZpbGVuYW1lIE5vbmVcbiAgICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICB+b2s6KGZ1biBfIC0+IGFkZF9tb2RlbHMgbW9kZWxzIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBhZGRfbW9kZWxzIG1vZGVscyBsb2FkX2ZpbGUpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYWRkX21vZGVscyBtb2RlbHMgbG9hZF9maWxlKVxuICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcImNyZWF0aW5nIGxvYWRpbmcgdXJsICVzIGVycm9yQCBAWzx2PiVhQF1cIiBtb2RlbFxuICAgICAgICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSBSZXN1bHRfdXRpbC5wcmludF9tZXNzYWdlKVxuICAgICAgICAgICAgICBlcnJvcnNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBDb21tb24uZGVidWdcbiAgICAgICAgICAgICAgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJTdGF0ZV9maWxlLmxvYWRfbW9kZWwgJXNcIiBtc2cpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgYWRkX21vZGVscyBtb2RlbHMgbG9hZF9maWxlKVxuICBpblxuICBtYXRjaCBtb2RlbHMgd2l0aFxuICB8IFtdIC0+IGxvYWRfZGVmYXVsdCAoKVxuICB8IF8gOjogXyAtPiBhZGRfbW9kZWxzIG1vZGVscyB0cnVlXG5cbmxldCBpbml0ICgpIDogdW5pdCBMd3QudCA9IEx3dC5yZXR1cm5fdW5pdCA+Pj0gbG9hZF9tb2RlbHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgc2ltdWxhdGlvbl9zdGF0ZSA9XG4gIHwgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEICgqIHNpbXVsYXRpb24gaXMgdW5hdmFpbGFibGUgKilcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HICgqIHNpbXVsYXRpb24gaXMgYmxvY2tlZCBvbiBhbiBvcGVyYXRpb24gKilcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX1JFQURZIG9mIEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb1xuKCogdGhlIHNpbXVsYXRpb24gaXMgcmVhZHkgKilcblxudHlwZSB0ID0geyBzaW11bGF0aW9uX3N0YXRlOiBzaW11bGF0aW9uX3N0YXRlIH1cblxubGV0IHRfc2ltdWxhdGlvbl9zdGF0ZSBzaW11bGF0aW9uID0gc2ltdWxhdGlvbi5zaW11bGF0aW9uX3N0YXRlXG5cbmxldCB0X3NpbXVsYXRpb25faW5mbyBzaW11bGF0aW9uIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvIG9wdGlvbiA9XG4gIG1hdGNoIHNpbXVsYXRpb24uc2ltdWxhdGlvbl9zdGF0ZSB3aXRoXG4gIHwgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIC0+IE5vbmVcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIC0+IE5vbmVcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX1JFQURZIHNpbXVsYXRpb25faW5mbyAtPiBTb21lIHNpbXVsYXRpb25faW5mb1xuXG50eXBlIHN0YXRlID0gdFxudHlwZSBtb2RlbCA9IHN0YXRlXG50eXBlIG1vZGVsX3N0YXRlID0gU1RPUFBFRCB8IElOSVRBTElaSU5HIHwgUlVOTklORyB8IFBBVVNFRFxuXG5sZXQgbW9kZWxfc3RhdGVfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBTVE9QUEVEIC0+IFwiU3RvcHBlZFwiXG4gIHwgSU5JVEFMSVpJTkcgLT4gXCJJbml0YWxpemluZ1wiXG4gIHwgUlVOTklORyAtPiBcIlJ1bm5pbmdcIlxuICB8IFBBVVNFRCAtPiBcIlBhdXNlZFwiXG5cbmxldCBkdW1teV9tb2RlbCA9IHsgc2ltdWxhdGlvbl9zdGF0ZSA9IFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCB9XG5cbmxldCBtb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gb3B0aW9uID1cbiAgdF9zaW11bGF0aW9uX2luZm8gbW9kZWxcblxubGV0IG1vZGVsX3NpbXVsYXRpb25fc3RhdGUgbW9kZWwgOiBtb2RlbF9zdGF0ZSA9XG4gIG1hdGNoIHRfc2ltdWxhdGlvbl9zdGF0ZSBtb2RlbCB3aXRoXG4gIHwgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIC0+IFNUT1BQRURcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIC0+IElOSVRBTElaSU5HXG4gIHwgU0lNVUxBVElPTl9TVEFURV9SRUFEWSBzaW11bGF0aW9uX2luZm8gLT5cbiAgICBpZlxuICAgICAgc2ltdWxhdGlvbl9pbmZvLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nXG4gICAgdGhlblxuICAgICAgUlVOTklOR1xuICAgIGVsc2VcbiAgICAgIFBBVVNFRFxuXG5sZXQgc3RhdGUsIHNldF9zdGF0ZSA9IFJlYWN0LlMuY3JlYXRlIGR1bW15X21vZGVsXG5cbmxldCB1cGRhdGVfc2ltdWxhdGlvbl9zdGF0ZSAoc2ltdWxhdGlvbl9zdGF0ZSA6IHNpbXVsYXRpb25fc3RhdGUpIDogdW5pdCA9XG4gIGxldCAoKSA9IHNldF9zdGF0ZSB7IHNpbXVsYXRpb25fc3RhdGUgfSBpblxuICAoKVxuXG5sZXQgbW9kZWwgOiBtb2RlbCBSZWFjdC5zaWduYWwgPSBzdGF0ZVxuXG5sZXQgZXZhbF93aXRoX3NpbV9tYW5hZ2VyIDpcbiAgICAgICdhLlxuICAgICAgbGFiZWw6c3RyaW5nIC0+XG4gICAgICAoQXBpLmNvbmNyZXRlX21hbmFnZXIgLT4gdCAtPiAnYSBBcGkucmVzdWx0IEx3dC50KSAtPlxuICAgICAgJ2EgQXBpLnJlc3VsdCBMd3QudCA9XG4gZnVuIH5sYWJlbCBoYW5kbGVyIC0+XG4gIGxldCBwcm9qZWN0X2hhbmRsZXIgbWFuYWdlciA9IGhhbmRsZXIgbWFuYWdlciAoUmVhY3QuUy52YWx1ZSBzdGF0ZSkgaW5cbiAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWwgcHJvamVjdF9oYW5kbGVyXG5cbmxldCBmYWlsX2x3dCBlcnJvcl9tc2cgPSBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuXG5sZXQgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH4obGFiZWwgOiBzdHJpbmcpXG4gICAgPyhzdG9wcGVkIDogQXBpLmNvbmNyZXRlX21hbmFnZXIgLT4gJ2EgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBmdW4gXyAtPiBmYWlsX2x3dCBcIlNpbXVsYXRpb24gc3RvcHBlZFwiKVxuICAgID8oaW5pdGlhbGl6aW5nIDogQXBpLmNvbmNyZXRlX21hbmFnZXIgLT4gJ2EgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBmdW4gXyAtPiBmYWlsX2x3dCBcIlNpbXVsYXRpb24gaW5pdGFsaXppbmdcIilcbiAgICA/KHJlYWR5IDpcbiAgICAgICAgQXBpLmNvbmNyZXRlX21hbmFnZXIgLT5cbiAgICAgICAgQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvIC0+XG4gICAgICAgICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZnVuIF8gXyAtPiBmYWlsX2x3dCBcIlNpbXVsYXRpb24gcmVhZHlcIikgKCkgOiAnYSBBcGkucmVzdWx0IEx3dC50ID1cbiAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyIH5sYWJlbCAoZnVuIG1hbmFnZXIgcyAtPlxuICAgICAgbWF0Y2ggcy5zaW11bGF0aW9uX3N0YXRlIHdpdGhcbiAgICAgIHwgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIC0+IHN0b3BwZWQgbWFuYWdlclxuICAgICAgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIC0+IGluaXRpYWxpemluZyBtYW5hZ2VyXG4gICAgICB8IFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgc2ltdWxhdGlvbl9pbmZvIC0+IHJlYWR5IG1hbmFnZXIgc2ltdWxhdGlvbl9pbmZvKVxuXG5sZXQgZXZhbF93aGVuX3JlYWR5IH4obGFiZWwgOiBzdHJpbmcpXG4gICAgPyhoYW5kbGVyIDogdW5pdCBBcGkucmVzdWx0IC0+IHVuaXQgTHd0LnQgPSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG4gICAgKG9wZXJhdGlvbiA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyIC0+IHVuaXQgQXBpLnJlc3VsdCBMd3QudCkgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbFxuICAgICAgICB+c3RvcHBlZDooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCAtPiBvcGVyYXRpb24gbWFuYWdlcilcbiAgICAgICAgKClcbiAgICAgID4+PSBoYW5kbGVyKVxuXG4oKiB0byBzeW5jaCBzdGF0ZSBvZiBhcHBsaWNhdGlvbiB3aXRoIHJ1bnRpbWUgKilcbmxldCBzbGVlcF90aW1lID0gMS4wXG5cbmxldCByZWMgc3luYyAoKSA9XG4gIG1hdGNoIChSZWFjdC5TLnZhbHVlIHN0YXRlKS5zaW11bGF0aW9uX3N0YXRlIHdpdGhcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIC0+XG4gICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gIHwgU0lNVUxBVElPTl9TVEFURV9SRUFEWSBfIC0+XG4gICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzeW5jXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICgqIGdldCBjdXJyZW50IGRpcmVjdG9yeSAqKVxuICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25faW5mb1xuICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gc2ltdWxhdGlvbl9pbmZvIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIHNldF9zdGF0ZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9zdGF0ZSA9IFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgc2ltdWxhdGlvbl9pbmZvO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9pbmZvLkFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgICAuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nXG4gICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcy5zbGVlcCBzbGVlcF90aW1lID4+PSBzeW5jXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IHJlZnJlc2ggKCkgPVxuICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInN5bmNcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICgqIGdldCBjdXJyZW50IGRpcmVjdG9yeSAqKVxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2luZm9cbiAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICB+b2s6KGZ1biBzaW11bGF0aW9uX2luZm8gLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBzZXRfc3RhdGVcbiAgICAgICAgICAgICAgICAgIHsgc2ltdWxhdGlvbl9zdGF0ZSA9IFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgc2ltdWxhdGlvbl9pbmZvIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgc3luYyAoKSlcbiAgICAgICAgICAgIH5lcnJvcjooZnVuIF8gLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBzZXRfc3RhdGUgeyBzaW11bGF0aW9uX3N0YXRlID0gU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IGluaXQgKCkgOiB1bml0IEx3dC50ID0gTHd0LnJldHVybl91bml0XG5cbmxldCBjb250aW51ZV9zaW11bGF0aW9uIChwYXVzZV9jb25kaXRpb24gOiBzdHJpbmcpIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpcImNvbnRpbnVlX3NpbXVsYXRpb25cIlxuICAgIH5zdG9wcGVkOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIGNvbnRpbnVlIHNpbXVsYXRpb24sIHNpbXVsYXRpb24gc3RvcHBlZFwiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZykpXG4gICAgfmluaXRpYWxpemluZzooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBjb250aW51ZSBzaW11bGF0aW9uLCBzaW11bGF0aW9uIGluaXRpYWxpemluZ1wiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZykpXG4gICAgfnJlYWR5OihmdW4gbWFuYWdlciBfIC0+XG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY29udGludWUgcGF1c2VfY29uZGl0aW9uXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOnN5bmMpXG4gICAgKClcblxubGV0IHBhdXNlX3NpbXVsYXRpb24gKCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOlwicGF1c2Vfc2ltdWxhdGlvblwiXG4gICAgfnN0b3BwZWQ6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gcGF1c2Ugc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBzdG9wcGVkXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIHBhdXNlIHNpbXVsYXRpb24sIHNpbXVsYXRpb24gaW5pdGlhbGl6aW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIChfIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX3BhdXNlKVxuICAgICgpXG5cbmxldCBzdG9wX3NpbXVsYXRpb24gKCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOlwic3RvcF9zaW11bGF0aW9uXCJcbiAgICB+c3RvcHBlZDooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBwYXVzZSBzaW11bGF0aW9uLCBzaW11bGF0aW9uIHN0b3BwZWRcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpKVxuICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gc3RvcCBzaW11bGF0aW9uLCBzaW11bGF0aW9uIGluaXRpYWxpemluZ1wiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZykpXG4gICAgfnJlYWR5OihmdW4gbWFuYWdlciAoXyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbykgLT5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZWxldGVcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfc2ltdWxhdGlvbl9zdGF0ZSBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcbiAgICAoKVxuXG5sZXQgc3RhcnRfc2ltdWxhdGlvbiAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlcikgOlxuICAgIHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIGV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWw6XCJzdGFydF9zaW11bGF0aW9uXCJcbiAgICB+c3RvcHBlZDooZnVuIG1hbmFnZXIgLT5cbiAgICAgIGxldCBvbl9lcnJvciBlcnJvcl9tc2dzIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgICAgbGV0ICgpID0gdXBkYXRlX3NpbXVsYXRpb25fc3RhdGUgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIGluXG4gICAgICAgICgqIHR1cm4gdGhlIGxpZ2h0cyBvZmYgKilcbiAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RlbGV0ZSA+Pj0gZnVuIF8gLT5cbiAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JfbXNncylcbiAgICAgIGluXG4gICAgICBMd3QuY2F0Y2hcbiAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICgqIHNldCBzdGF0ZSB0byBpbml0YWxpemUgKilcbiAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfc2ltdWxhdGlvbl9zdGF0ZSBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIGluXG4gICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX3N0YXJ0IHNpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIF8gLT4gbWFuYWdlciNzaW11bGF0aW9uX2luZm8pXG4gICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIHNpbXVsYXRpb25fc3RhdHVzIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9zdGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgIFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgc2ltdWxhdGlvbl9zdGF0dXNcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfc2ltdWxhdGlvbl9zdGF0ZSBzaW11bGF0aW9uX3N0YXRlIGluXG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcl9tc2cgLT5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCBpblxuICAgICAgICAgICAgICAgICAgb25fZXJyb3IgZXJyb3JfbXNnKVxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6c3luYylcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGVycm9yIC0+XG4gICAgICAgICAgICBsZXQgbXNnID0gRm9ybWF0LnNwcmludGYgXCJSdW50aW1lIGVycm9yICVzXCIgZXJyb3IgaW5cbiAgICAgICAgICAgIG9uX2Vycm9yIFsgQXBpX2NvbW1vbi5lcnJvcl9tc2cgbXNnIF1cbiAgICAgICAgICB8IFN5c19lcnJvciBtZXNzYWdlIC0+IG9uX2Vycm9yIFsgQXBpX2NvbW1vbi5lcnJvcl9tc2cgbWVzc2FnZSBdXG4gICAgICAgICAgfCBfIC0+IG9uX2Vycm9yIFsgQXBpX2NvbW1vbi5lcnJvcl9tc2cgXCJJbml0aWFsaXphdGlvbiBlcnJvclwiIF0pKVxuICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gc3RhcnQgc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBpbml0aWFsaXppbmdcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpKVxuICAgIH5yZWFkeTooZnVuIF8gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIHN0YXJ0IHNpbXVsYXRpb24sIHNpbXVsYXRpb24gcnVubmluZ1wiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZykpXG4gICAgKClcblxubGV0IGludGVydmVuZV9zaW11bGF0aW9uIChjb2RlIDogc3RyaW5nKSA6IHN0cmluZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpcInBlcnR1cmJfc2ltdWxhdGlvblwiXG4gICAgfnN0b3BwZWQ6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gc3RhcnQgc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBydW5uaW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIHN0YXJ0IHNpbXVsYXRpb24sIHNpbXVsYXRpb24gaW5pdGlhbGl6aW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gLT5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gY29kZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIG91dCAtPlxuICAgICAgICAgICAgICBzeW5jICgpXG4gICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIG91dCkpKSlcbiAgICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxubGV0IHJlZnJlc2ggciA9XG4gIGxldCByJyA9IFN0YXRlX2ZpbGUuc3luYyB+cmVzZXQ6dHJ1ZSAoKSBpblxuICBsZXQgcicnID0gU3RhdGVfc2ltdWxhdGlvbi5yZWZyZXNoICgpIGluXG4gIHInID4+PSBmdW4gcicgLT5cbiAgcicnID4+PSBmdW4gcicnIC0+IEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2NvbWJpbmUgWyByOyByJzsgcicnIF0pXG5cbmxldCBjcmVhdGVfcHJvamVjdCAocHJvamVjdF9pZCA6IHN0cmluZykgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9wcm9qZWN0LmNyZWF0ZV9wcm9qZWN0IHByb2plY3RfaWQgPj49IHJlZnJlc2gpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgc2V0X3Byb2plY3QgKHByb2plY3RfaWQgOiBzdHJpbmcpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfXyAoU3RhdGVfcHJvamVjdC5zZXRfcHJvamVjdCBwcm9qZWN0X2lkID4+PSByZWZyZXNoKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IGNsb3NlX3Byb2plY3QgcHJvamVjdF9pZCA6IHVuaXQgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX19cbiAgICAgICAgKFN0YXRlX3Byb2plY3QucmVtb3ZlX3Byb2plY3QgcHJvamVjdF9pZCA+Pj0gcmVmcmVzaClcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzZXRfbWFuYWdlciAocnVudGltZV9pZCA6IHN0cmluZykgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dFxuICAgICAgICAgICB+b2s6KGZ1biAoKSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgIChTdGF0ZV9ydW50aW1lLmNyZWF0ZV9zcGVjIH5sb2FkOnRydWUgcnVudGltZV9pZCkpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgY29uZmlndXJhdGlvbl9zZWVkX2lucHV0X2lkID0gXCJzaW11bGF0aW9uX3NlZWRfaW5wdXRcIlxubGV0IHByZWZlcmVuY2VzX21vZGFsX2lkID0gXCJwcmVmZXJlbmNlc19tb2RhbFwiXG5sZXQgc2V0dGluZ3NfY2xpZW50X2lkX2lucHV0X2lkID0gXCJzZXR0aW5ncy1jbGllbnQtaWQtaW5wdXRcIlxubGV0IHByZWZlcmVuY2VzX2J1dHRvbiA9IEh0bWwuYSBbIEh0bWwudHh0IFwiUHJlZmVyZW5jZXNcIiBdXG5cbmxldCBvcHRpb25fc2VlZF9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGNvbmZpZ3VyYXRpb25fc2VlZF9pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYE51bWJlcjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBvcHRpb25fd2l0aHRyYWNlID0gSHRtbC5pbnB1dCB+YTpbIEh0bWwuYV9pbnB1dF90eXBlIGBDaGVja2JveCBdICgpXG5sZXQgb3B0aW9uX3dpdGhkZWFkcnVsZXMgPSBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94IF0gKClcbmxldCBvcHRpb25fd2l0aGRlYWRhZ2VudHMgPSBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94IF0gKClcbmxldCBvcHRpb25fd2l0aGlycmV2ZXJzaWJsZSA9IEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3ggXSAoKVxuXG5sZXQgZGVjcmVhc2VfZm9udCA9XG4gIEh0bWwuYnV0dG9uXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCI7IFwiYnRuLXNtXCIgXTtcbiAgICAgIF1cbiAgICBbIEh0bWwudHh0IFwiLVwiIF1cblxubGV0IGluY3JlYXNlX2ZvbnQgPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiOyBcImJ0bi1sZ1wiIF07XG4gICAgICBdXG4gICAgWyBIdG1sLnR4dCBcIitcIiBdXG5cbmxldCBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBUZXh0O1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcImNsaWVudCBpZFwiO1xuICAgICAgICBIdG1sLmFfc2l6ZSA0MDtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgc2V0dGluZ3NfY2xpZW50X2lkX2lucHV0X2RvbSA9XG4gIFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRcblxubGV0IG9wdGlvbl9odHRwX3N5bmNoID0gSHRtbC5pbnB1dCB+YTpbIEh0bWwuYV9pbnB1dF90eXBlIGBDaGVja2JveCBdICgpXG5cbmxldCBkcm9wZG93biAobW9kZWwgOiBTdGF0ZV9ydW50aW1lLm1vZGVsKSA9XG4gIGxldCBjdXJyZW50X2lkID0gU3RhdGVfcnVudGltZS5zcGVjX2lkIG1vZGVsLlN0YXRlX3J1bnRpbWUubW9kZWxfY3VycmVudCBpblxuICBMaXN0Lm1hcFxuICAgIChmdW4gKHNwZWMgOiBTdGF0ZV9ydW50aW1lLnNwZWMpIC0+XG4gICAgICBsZXQgc3BlY19pZCA9IFN0YXRlX3J1bnRpbWUuc3BlY19pZCBzcGVjIGluXG4gICAgICBIdG1sLm9wdGlvblxuICAgICAgICB+YTpcbiAgICAgICAgICAoSHRtbC5hX3ZhbHVlIHNwZWNfaWRcbiAgICAgICAgICA6OlxuICAgICAgICAgIChpZiBjdXJyZW50X2lkID0gc3BlY19pZCB0aGVuXG4gICAgICAgICAgICAgWyBIdG1sLmFfc2VsZWN0ZWQgKCkgXVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgW10pKVxuICAgICAgICAoSHRtbC50eHQgKFN0YXRlX3J1bnRpbWUuc3BlY19sYWJlbCBzcGVjKSkpXG4gICAgbW9kZWwuU3RhdGVfcnVudGltZS5tb2RlbF9ydW50aW1lc1xuXG5sZXQgYmFja2VuZF9vcHRpb25zID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgKFJlYWN0LlMubWFwIChmdW4gbGlzdF90IC0+IGRyb3Bkb3duIGxpc3RfdCkgU3RhdGVfcnVudGltZS5tb2RlbClcblxubGV0IGJhY2tlbmRfc2VsZWN0ID1cbiAgVHl4bWxfanMuUi5IdG1sLnNlbGVjdCB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXSBdIGJhY2tlbmRfb3B0aW9uc1xuXG5sZXQlaHRtbCBib2RpZXMgPVxuICB7fFxuICAgIDxoND5BcHBsaWNhdGlvbjwvaDQ+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMlwiPkZvbnQgc2l6ZTwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+fH1cbiAgICBbIGRlY3JlYXNlX2ZvbnQ7IGluY3JlYXNlX2ZvbnQgXVxuICAgIHt8PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMlwiPkJhY2tlbmQgZm9yIG5ldyBwcm9qZWN0czwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+fH1cbiAgICBbIGJhY2tlbmRfc2VsZWN0IF1cbiAgICB7fDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxoND5Qcm9qZWN0PC9oND5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yXCIgZm9yPVwifH1cbiAgICBjb25maWd1cmF0aW9uX3NlZWRfaW5wdXRfaWRcbiAgICB7fFwiPlNlZWQ8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPnx9XG4gICAgWyBvcHRpb25fc2VlZF9pbnB1dCBdXG4gICAge3w8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTIgY29sLW1kLTUgY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG9wdGlvbl93aXRodHJhY2UgXVxuICAgIHt8U3RvcmUgdHJhY2VcbiAgICA8L2xhYmVsPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxoND5IVFRQUyBiYWNrZW5kPC9oND5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yXCIgZm9yPVwifH1cbiAgICBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRfaWRcbiAgICB7fFwiPkNsaWVudCBpZDwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+fH1cbiAgICBbIHNldHRpbmdzX2NsaWVudF9pZF9pbnB1dCBdXG4gICAge3w8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTIgY29sLW1kLTUgY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG9wdGlvbl9odHRwX3N5bmNoIF1cbiAgICB7fEF1dG8gc3luY2hcbiAgICA8L2xhYmVsPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxoND5TdGF0aWMgYW5hbHlzZXM8L2g0PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC1vZmZzZXQtMiBjb2wtbWQtNSBjaGVja2JveFwiPjxsYWJlbD58fVxuICAgIFsgb3B0aW9uX3dpdGhkZWFkcnVsZXMgXVxuICAgIHt8U2hvdyBkZWFkIHJ1bGVzXG4gICAgPC9sYWJlbD48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTIgY29sLW1kLTUgY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG9wdGlvbl93aXRoZGVhZGFnZW50cyBdXG4gICAge3xTaG93IGRlYWQgYWdlbnRzXG4gICAgPC9sYWJlbD48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTIgY29sLW1kLTUgY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG9wdGlvbl93aXRoaXJyZXZlcnNpYmxlIF1cbiAgICB7fFNob3cgbm9uIHdlYWtseSByZXZlcnNpYmxlIHRyYW5zaXRpb25zXG4gICAgPC9sYWJlbD48L2Rpdj5cbiAgICA8L2Rpdj5cbnx9XG5cbmxldCBzZXRfYnV0dG9uID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpbIEh0bWwuYV9idXR0b25fdHlwZSBgU3VibWl0OyBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1wcmltYXJ5XCIgXSBdXG4gICAgWyBIdG1sLnR4dCBcIlNldFwiIF1cblxubGV0IHNhdmVfYnV0dG9uID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpbIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uOyBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXSBdXG4gICAgWyBIdG1sLnR4dCBcIlNhdmUgYXMgZGVmYXVsdFwiIF1cblxubGV0IG1vZGFsID1cbiAgbGV0IGhlYWQgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtaGVhZGVyXCIgXSBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuYnV0dG9uXG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNsb3NlXCIgXTtcbiAgICAgICAgICAgICAgSHRtbC5hX3VzZXJfZGF0YSBcImRpc21pc3NcIiBcIm1vZGFsXCI7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgWyBIdG1sLmVudGl0eSBcInRpbWVzXCIgXTtcbiAgICAgICAgSHRtbC5oNCB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtdGl0bGVcIiBdIF0gWyBIdG1sLnR4dCBcIlByZWZlcmVuY2VzXCIgXTtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IGJvZHkgPSBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtYm9keVwiIF0gXSBib2RpZXMgaW5cbiAgbGV0IGZvb3QgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtZm9vdGVyXCIgXSBdXG4gICAgICBbXG4gICAgICAgIHNldF9idXR0b247XG4gICAgICAgIHNhdmVfYnV0dG9uO1xuICAgICAgICBIdG1sLmJ1dHRvblxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgICAgICAgIEh0bWwuYV91c2VyX2RhdGEgXCJkaXNtaXNzXCIgXCJtb2RhbFwiO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIFsgSHRtbC50eHQgXCJDbG9zZVwiIF07XG4gICAgICBdXG4gIGluXG4gIEh0bWwuZm9ybVxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1jb250ZW50XCI7IFwiZm9ybS1ob3Jpem9udGFsXCIgXSBdXG4gICAgWyBoZWFkOyBib2R5OyBmb290IF1cblxubGV0IGNvbnRlbnQgKCkgPVxuICBbXG4gICAgcHJlZmVyZW5jZXNfYnV0dG9uO1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwibW9kYWxcIjsgXCJmYWRlXCIgXTtcbiAgICAgICAgICBIdG1sLmFfaWQgcHJlZmVyZW5jZXNfbW9kYWxfaWQ7XG4gICAgICAgICAgSHRtbC5hX3JvbGUgWyBcImRpYWxvZ1wiIF07XG4gICAgICAgICAgSHRtbC5hX3RhYmluZGV4ICgtMSk7XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtZGlhbG9nXCIgXTsgSHRtbC5hX3JvbGUgWyBcImRvY3VtZW50XCIgXSBdXG4gICAgICAgICAgWyBtb2RhbCBdO1xuICAgICAgXTtcbiAgXVxuXG5sZXQgc2V0X2FjdGlvbiAoKSA9XG4gIGxldCBzZXR0aW5nc19jbGllbnRfaWQgPSBKcy50b19zdHJpbmcgc2V0dGluZ3NfY2xpZW50X2lkX2lucHV0X2RvbSMjLnZhbHVlIGluXG4gIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnNldF9jbGllbnRfaWQgc2V0dGluZ3NfY2xpZW50X2lkIGluXG5cbiAgbGV0IHN5bmNoX2NoZWNrYm94X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25faHR0cF9zeW5jaCBpblxuICBsZXQgaXNfY2hlY2tlZCA9IEpzLnRvX2Jvb2wgc3luY2hfY2hlY2tib3hfZG9tIyMuY2hlY2tlZCBpblxuICBsZXQgKCkgPSBTdGF0ZV9zZXR0aW5ncy5zZXRfc3luY2ggaXNfY2hlY2tlZCBpblxuXG4gIGxldCBpbnB1dCA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fc2VlZF9pbnB1dCBpblxuICBsZXQgdmFsdWUgOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgaW5wdXQjIy52YWx1ZSBpblxuICBsZXQgbW9kZWxfc2VlZCA9IHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHZhbHVlKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lIGluXG4gIGxldCAoKSA9IFN0YXRlX3Byb2plY3Quc2V0X3NlZWQgbW9kZWxfc2VlZCBpblxuXG4gIGxldCAoKSA9XG4gICAgU3RhdGVfcHJvamVjdC5zZXRfc3RvcmVfdHJhY2VcbiAgICAgIChKcy50b19ib29sIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGh0cmFjZSkjIy5jaGVja2VkKVxuICBpblxuICBsZXQgKCkgPVxuICAgIFN0YXRlX3Byb2plY3Quc2V0X3Nob3dfZGVhZF9ydWxlc1xuICAgICAgKEpzLnRvX2Jvb2wgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fd2l0aGRlYWRydWxlcykjIy5jaGVja2VkKVxuICBpblxuICBsZXQgKCkgPVxuICAgIFN0YXRlX3Byb2plY3Quc2V0X3Nob3dfZGVhZF9hZ2VudHNcbiAgICAgIChKcy50b19ib29sIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhkZWFkYWdlbnRzKSMjLmNoZWNrZWQpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgU3RhdGVfcHJvamVjdC5zZXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgIChKcy50b19ib29sIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhpcnJldmVyc2libGUpIyMuY2hlY2tlZClcbiAgaW5cblxuICBsZXQgKCkgPVxuICAgIFBhbmVsX3Byb2plY3RzX2NvbnRyb2xsZXIuc2V0X21hbmFnZXJcbiAgICAgIChKcy50b19zdHJpbmcgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgYmFja2VuZF9zZWxlY3QpIyMudmFsdWUpXG4gIGluXG4gICgpXG5cbmxldCBzZXRfYW5kX3NhdmVfYWN0aW9uICgpID1cbiAgbGV0ICgpID0gc2V0X2FjdGlvbiAoKSBpblxuXG4gIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnNldF9wYXJhbWV0ZXJzX2FzX2RlZmF1bHQgKCkgaW5cbiAgbGV0ICgpID0gU3RhdGVfcHJvamVjdC5zZXRfcGFyYW1ldGVyc19hc19kZWZhdWx0ICgpIGluXG5cbiAgKClcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9mb3JtIG1vZGFsKSMjLm9uc3VibWl0XG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIChfIDogXyBKcy50KSAtPlxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIENvbW1vbi5tb2RhbCB+aWQ6KFwiI1wiIF4gcHJlZmVyZW5jZXNfbW9kYWxfaWQpIH5hY3Rpb246XCJoaWRlXCJcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID0gc2V0X2FjdGlvbiAoKSBpblxuICAgICAgICAgICBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gc2F2ZV9idXR0b24pIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IHNldF9hbmRfc2F2ZV9hY3Rpb24gKCkgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYSBwcmVmZXJlbmNlc19idXR0b24pIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCBzcCA9IFJlYWN0LlMudmFsdWUgU3RhdGVfcHJvamVjdC5tb2RlbCBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIHNldHRpbmdzX2NsaWVudF9pZF9pbnB1dF9kb20jIy52YWx1ZVxuICAgICAgICAgICAgIDo9IEpzLnN0cmluZyAoU3RhdGVfc2V0dGluZ3MuZ2V0X2NsaWVudF9pZCAoKSlcbiAgICAgICAgICAgaW5cblxuICAgICAgICAgICBsZXQgaW5wdXQgPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3NlZWRfaW5wdXQgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBpbnB1dCMjLnZhbHVlIDo9XG4gICAgICAgICAgICAgICBKcy5zdHJpbmdcbiAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgIHNwLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVycy5TdGF0ZV9wcm9qZWN0LnNlZWRcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgICAgfCBTb21lIG1vZGVsX3NlZWQgLT4gc3RyaW5nX29mX2ludCBtb2RlbF9zZWVkKVxuICAgICAgICAgICBpblxuXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fd2l0aHRyYWNlKSMjLmNoZWNrZWRcbiAgICAgICAgICAgICA6PSBKcy5ib29sXG4gICAgICAgICAgICAgICAgICBzcC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnMuU3RhdGVfcHJvamVjdC5zdG9yZV90cmFjZVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhkZWFkYWdlbnRzKSMjLmNoZWNrZWRcbiAgICAgICAgICAgICA6PSBKcy5ib29sXG4gICAgICAgICAgICAgICAgICBzcC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc2hvd19kZWFkX2FnZW50c1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhkZWFkcnVsZXMpIyMuY2hlY2tlZFxuICAgICAgICAgICAgIDo9IEpzLmJvb2xcbiAgICAgICAgICAgICAgICAgIHNwLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5zaG93X2RlYWRfcnVsZXNcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl93aXRoaXJyZXZlcnNpYmxlKSMjLmNoZWNrZWRcbiAgICAgICAgICAgICA6PSBKcy5ib29sXG4gICAgICAgICAgICAgICAgICBzcC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgaW5cblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX2h0dHBfc3luY2gpIyMuY2hlY2tlZFxuICAgICAgICAgICAgIDo9IEpzLmJvb2wgKFJlYWN0LlMudmFsdWUgU3RhdGVfc2V0dGluZ3Muc3luY2gpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgYmFja2VuZF9zZWxlY3QpIyMudmFsdWVcbiAgICAgICAgICAgICA6PSBKcy5zdHJpbmdcbiAgICAgICAgICAgICAgICAgIChTdGF0ZV9ydW50aW1lLnNwZWNfaWRcbiAgICAgICAgICAgICAgICAgICAgIChSZWFjdC5TLnZhbHVlIFN0YXRlX3J1bnRpbWUubW9kZWwpXG4gICAgICAgICAgICAgICAgICAgICAgIC5TdGF0ZV9ydW50aW1lLm1vZGVsX2N1cnJlbnQpXG4gICAgICAgICAgIGluXG5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBDb21tb24ubW9kYWwgfmlkOihcIiNcIiBeIHByZWZlcmVuY2VzX21vZGFsX2lkKSB+YWN0aW9uOlwic2hvd1wiXG4gICAgICAgICAgIGluXG5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuXG4gIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnVwZGF0ZUZvbnRTaXplIH5kZWx0YTowLiBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGluY3JlYXNlX2ZvbnQpIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnVwZGF0ZUZvbnRTaXplIH5kZWx0YTowLjIgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGRlY3JlYXNlX2ZvbnQpIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnVwZGF0ZUZvbnRTaXplIH5kZWx0YTooLTAuMikgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgdG9nZ2xlX2VsZW1lbnQgKHByb2plY3Rpb24gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gb3B0aW9uIC0+IGJvb2wpXG4gICAgKGNvbnRlbnQgOiBbPCBIdG1sX3R5cGVzLmRpdl9jb250ZW50X2Z1biBdIEh0bWwuZWx0IEh0bWwubGlzdF93cmFwKSA9XG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgKFJlYWN0LlMuYmluZCBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgICAgIFJlYWN0LlMuY29uc3RcbiAgICAgICAgICAgICAgICAgKGlmIHByb2plY3Rpb24gKFN0YXRlX3NpbXVsYXRpb24udF9zaW11bGF0aW9uX2luZm8gbW9kZWwpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgWyBcInNob3dcIiBdXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIFsgXCJoaWRkZW5cIiBdKSkpO1xuICAgICAgXVxuICAgIGNvbnRlbnRcblxubGV0IG9wdGlvbl9sYWJlbCBsYWJlbCA9XG4gIGlmIFN0cmluZy5sZW5ndGggbGFiZWwgPiAxMCB0aGVuXG4gICAgU3RyaW5nLnN1YiBsYWJlbCAwIDcgXiBcIi4uLlwiXG4gIGVsc2VcbiAgICBsYWJlbFxuXG5sZXQgZXhwb3J0X2NvbnRyb2xzIH4oZXhwb3J0X3NlbGVjdF9pZCA6IHN0cmluZykgfihleHBvcnRfZmlsZW5hbWVfaWQgOiBzdHJpbmcpXG4gICAgfihleHBvcnRfYnV0dG9uX2lkIDogc3RyaW5nKSB+KGV4cG9ydF9kYXRhX2xhYmVsIDogc3RyaW5nKSA9XG4gIGxldCBleHBvcnRfZm9ybWF0cyA6IHN0cmluZyBsaXN0ID0gWyBleHBvcnRfZGF0YV9sYWJlbCBdIGluXG4gIGxldCBleHBvcnRfZmlsZW5hbWUgPVxuICAgIEh0bWwuaW5wdXRcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGV4cG9ydF9maWxlbmFtZV9pZDtcbiAgICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgVGV4dDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwiZmlsZSBuYW1lXCI7XG4gICAgICAgIF1cbiAgICAgICgpXG4gIGluXG4gIGxldCBleHBvcnRfYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgZXhwb3J0X2J1dHRvbl9pZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiOyBcInB1bGwtcmlnaHRcIiBdO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJleHBvcnRcIiBdXG4gIGluXG4gIGxldCBleHBvcnRfZm9ybWF0c19zZWxlY3QgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIGZvcm1hdCAtPlxuICAgICAgICBbJWh0bWxcbiAgICAgICAgICB7fDxvcHRpb24gdmFsdWU9XCJ8fSBmb3JtYXQge3xcIj58fSAoSHRtbC5jZGF0YSBmb3JtYXQpIHt8PC9vcHRpb24+fH1dKVxuICAgICAgZXhwb3J0X2Zvcm1hdHNcbiAgaW5cbiAgWyVodG1sXG4gICAge3w8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTJcIj5cbiAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0taW5saW5lXCI+XG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgIGlkPVwifH1cbiAgICAgIGV4cG9ydF9zZWxlY3RfaWRcbiAgICAgIHt8XCI+PG9wdGlvbiB2YWx1ZT1cInBuZ1wiPnBuZzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9XCJzdmdcIj5zdmc8L29wdGlvbj58fVxuICAgICAgZXhwb3J0X2Zvcm1hdHNfc2VsZWN0XG4gICAgICB7fDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlY2tib3gtaW5saW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fVxuICAgICAgWyBleHBvcnRfZmlsZW5hbWUgXVxuICAgICAge3xcbiAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZWNrYm94LWlubGluZVwiPlxuICAgICAgICAgICAgICB8fVxuICAgICAgWyBleHBvcnRfYnV0dG9uIF1cbiAgICAgIHt8XG4gICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj58fV1cblxubGV0IGRvY3VtZW50ID0gRG9tX2h0bWwud2luZG93IyMuZG9jdW1lbnRcblxubGV0IGxhYmVsX25ld3MgdGFiX2lzX2FjdGl2ZSBjb3VudGVyID1cbiAgbGV0IGxhc3RfdmFsdWUgPVxuICAgIHJlZlxuICAgICAgKGxldCBzaW11bGF0aW9uX2luZm8gPVxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi50X3NpbXVsYXRpb25faW5mb1xuICAgICAgICAgICAoUmVhY3QuUy52YWx1ZSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuICAgICAgIGluXG4gICAgICAgY291bnRlciBzaW11bGF0aW9uX2luZm8pXG4gIGluXG4gIFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbFxuICAgIChSZWFjdC5TLmwyXG4gICAgICAgKGZ1biB0YWJfYWN0aXZlIG1vZGVsIC0+XG4gICAgICAgICBpZiB0YWJfYWN0aXZlIHRoZW5cbiAgICAgICAgICAgW11cbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi50X3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBsZXQgdiA9IGNvdW50ZXIgc2ltdWxhdGlvbl9pbmZvIGluXG4gICAgICAgICAgIGlmIHYgPD4gIWxhc3RfdmFsdWUgJiYgdiA+IDAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0ICgpID0gbGFzdF92YWx1ZSA6PSB2IGluXG4gICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgSHRtbC50eHQgXCIgXCI7XG4gICAgICAgICAgICAgICBIdG1sLnNwYW5cbiAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImxhYmVsXCI7IFwibGFiZWwtZGVmYXVsdFwiIF0gXVxuICAgICAgICAgICAgICAgICBbIEh0bWwudHh0IFwiTmV3XCIgXTtcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgIFtdXG4gICAgICAgICApKVxuICAgICAgIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxubGV0IGJhZGdlIChjb3VudGVyIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvIG9wdGlvbiAtPiBpbnQpID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgKFJlYWN0LlMubWFwXG4gICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24udF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgIGxldCBjb3VudCA9IGNvdW50ZXIgc2ltdWxhdGlvbl9pbmZvIGluXG4gICAgICAgICBpZiBjb3VudCA+IDAgdGhlblxuICAgICAgICAgICBbXG4gICAgICAgICAgICAgSHRtbC50eHQgXCIgXCI7XG4gICAgICAgICAgICAgSHRtbC5zcGFuXG4gICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiYmFkZ2VcIiBdIF1cbiAgICAgICAgICAgICAgIFsgSHRtbC50eHQgKHN0cmluZ19vZl9pbnQgY291bnQpIF07XG4gICAgICAgICAgIF1cbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgW10pXG4gICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxubGV0IGFyZ3VtZW50cyAoa2V5IDogc3RyaW5nKSA6IHN0cmluZyBsaXN0ID1cbiAgTGlzdC5tYXAgc25kIChMaXN0LmZpbHRlciAoZnVuIChrLCBfKSAtPiBrZXkgPSBrKSBVcmwuQ3VycmVudC5hcmd1bWVudHMpXG5cbmxldCB2ZXJzaW9uID8odGVzdCA6ICdhIG9wdGlvbiA9IE5vbmUpIH4ocHJvZCA6ICdhKSB+KGRldiA6ICdhKSA6ICdhID1cbiAgbGV0IHZlcnNpb24gOiBzdHJpbmcgbGlzdCA9IGFyZ3VtZW50cyBcInZlcnNpb25cIiBpblxuICBtYXRjaCB0ZXN0LCB2ZXJzaW9uIHdpdGhcbiAgfCBTb21lIHRlc3QsIFsgXCJ0ZXN0XCIgXSAtPiB0ZXN0XG4gIHwgXywgWyBcImRldlwiIF0gLT4gZGV2XG4gIHwgXyAtPiBwcm9kXG5cbmxldCBuYXZsaSBsYWJlbCBmb3JjZV9jbGFzcyBkZWNvcmF0aW9ucyA9XG4gIGxldCBkZWZhdWx0X2F0dHJpYnV0ZXMgPVxuICAgIFsgSHRtbC5hX2lkIChcIm5hdlwiIF4gbGFiZWwpOyBIdG1sLmFfcm9sZSBbIFwicHJlc2VudGF0aW9uXCIgXSBdXG4gIGluXG4gIGxldCBhdHRyaWJ1dGVzID1cbiAgICBtYXRjaCBmb3JjZV9jbGFzcyB3aXRoXG4gICAgfCBOb25lIC0+IGRlZmF1bHRfYXR0cmlidXRlc1xuICAgIHwgU29tZSBsIC0+IFR5eG1sX2pzLlIuSHRtbDUuYV9jbGFzcyBsIDo6IGRlZmF1bHRfYXR0cmlidXRlc1xuICBpblxuICBsZXQgdGV4dCA9XG4gICAgUmVhY3RpdmVEYXRhLlJMaXN0LmNvbmNhdFxuICAgICAgKFJlYWN0aXZlRGF0YS5STGlzdC5zaW5nbGV0b24gKEh0bWwuY2RhdGEgbGFiZWwpKVxuICAgICAgZGVjb3JhdGlvbnNcbiAgaW5cbiAgSHRtbC5saSB+YTphdHRyaWJ1dGVzXG4gICAgW1xuICAgICAgVHl4bWxfanMuUi5IdG1sLmFcbiAgICAgICAgfmE6XG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImRhdGEtdG9nZ2xlXCIgXCJ0YWJcIjtcbiAgICAgICAgICAgIEh0bWwuYV9yb2xlIFsgXCJ0YWJcIiBdO1xuICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImFyaWEtY29udHJvbHNcIiBsYWJlbDtcbiAgICAgICAgICAgIEh0bWwuYV9ocmVmIChcIiNcIiBeIGxhYmVsKTtcbiAgICAgICAgICBdXG4gICAgICAgIHRleHQ7XG4gICAgXVxuXG5sZXQgbmF2dGFicyBuYXZfdGFiX2lkID0gZnVuY3Rpb25cbiAgfCBbXSB8IChfLCBTb21lIF8sIF8pIDo6IF8gLT4gQ29tbW9uLnRvc3MgXCJ1aV9jb21tb24ubmF2dGFicyA6IG1pc3NpbmcgdGFic1wiXG4gIHwgKHRpLCBOb25lLCBsKSA6OiB0IC0+XG4gICAgSHRtbC51bFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgbmF2X3RhYl9pZDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcIm5hdlwiOyBcIm5hdi10YWJzXCIgXTtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwidGFibGlzdFwiO1xuICAgICAgICBdXG4gICAgICAobmF2bGkgdGkgKFNvbWUgKFJlYWN0LlMuY29uc3QgWyBcImFjdGl2ZVwiIF0pKSBsXG4gICAgICA6OiBMaXN0Lm1hcCAoZnVuICh0LCBhX2NsYXNzLCBsaSkgLT4gbmF2bGkgdCBhX2NsYXNzIGxpKSB0KVxuXG5sZXQgb25lbmF2Y29udGVudCBsYWJlbCBhY3RpdmUgY2xhc3NlcyBjb250ZW50ID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGxhYmVsO1xuICAgICAgICBIdG1sLmFfY2xhc3NcbiAgICAgICAgICAoaWYgYWN0aXZlIHRoZW5cbiAgICAgICAgICAgICBcImZsZXgtY29udGVudFwiIDo6IFwidGFiLXBhbmVcIiA6OiBcImFjdGl2ZVwiIDo6IGNsYXNzZXNcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFwiZmxleC1jb250ZW50XCIgOjogXCJ0YWItcGFuZVwiIDo6IGNsYXNzZXMpO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwidGFicGFuZWxcIjtcbiAgICAgIF1cbiAgICBjb250ZW50XG5cbmxldCBuYXZjb250ZW50ID9pZCBjbGFzc2VzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBDb21tb24udG9zcyBcInVpX2NvbW1vbi5uYXZjb250ZW50IDogbWlzc2luZyBjb250ZW50XCJcbiAgfCAodCwgY2wsIGMpIDo6IGwgLT5cbiAgICBsZXQgaWQgOiBbPiBgSWQgXSBIdG1sLmF0dHJpYiBsaXN0ID1cbiAgICAgIG1hdGNoIGlkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIGlkIC0+IFsgSHRtbC5hX2lkIGlkIF1cbiAgICBpblxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgKFtcbiAgICAgICAgICAgSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgKFsgXCJwYW5lbC1jb250ZW50XCI7IFwidGFiLWNvbnRlbnRcIjsgXCJmbGV4LWNvbnRlbnRcIiBdIEAgY2xhc3Nlcyk7XG4gICAgICAgICBdXG4gICAgICAgIEAgaWQpXG4gICAgICAob25lbmF2Y29udGVudCB0IHRydWUgY2wgY1xuICAgICAgOjogTGlzdC5tYXAgKGZ1biAodCwgY2wsIGMpIC0+IG9uZW5hdmNvbnRlbnQgdCBmYWxzZSBjbCBjKSBsKVxuXG5sZXQgbGV2ZWwgP2RlYnVnID9pbmZvID9ub3RpY2UgP3dhcm5pbmcgP2Vycm9yID9mYXRhbCAoKSA6ICdhIGxpc3QgPVxuICBsZXQgbGV2ZWwgOiBzdHJpbmcgbGlzdCA9IGFyZ3VtZW50cyBcImxldmVsXCIgaW5cbiAgbGV0IGV4dHJhY3Qga2V5IHZhbHVlID1cbiAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgfCBOb25lIC0+IFtdXG4gICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICBpZiBMaXN0Lm1lbSBrZXkgbGV2ZWwgdGhlblxuICAgICAgICBbIHZhbHVlIF1cbiAgICAgIGVsc2VcbiAgICAgICAgW11cbiAgaW5cbiAgZXh0cmFjdCBcImRlYnVnXCIgZGVidWcgQCBleHRyYWN0IFwiaW5mb1wiIGluZm8gQCBleHRyYWN0IFwibm90aWNlXCIgbm90aWNlXG4gIEAgZXh0cmFjdCBcIndhcm5pbmdcIiB3YXJuaW5nIEAgZXh0cmFjdCBcImVycm9yXCIgZXJyb3IgQCBleHRyYWN0IFwiZmF0YWxcIiBmYXRhbFxuICBAIFtdXG5cbmxldCBmZWF0dXJlcyA/KGRlZmF1bHQgPSBbXSkgKG9wdGlvbnMgOiAoc3RyaW5nICogJ2EpIGxpc3QpIDogJ2EgbGlzdCA9XG4gIGxldCBmZWF0dXJlcyA6IHN0cmluZyBsaXN0ID0gYXJndW1lbnRzIFwiZmVhdHVyZVwiIGluXG4gIGxldCBtYXRjaGVzIDogJ2EgbGlzdCA9XG4gICAgTGlzdC5tYXAgc25kXG4gICAgICAoTGlzdC5maWx0ZXIgKGZ1biAoZmVhdHVyZSwgXykgLT4gTGlzdC5tZW0gZmVhdHVyZSBmZWF0dXJlcykgb3B0aW9ucylcbiAgaW5cbiAgbWF0Y2ggbWF0Y2hlcyB3aXRoXG4gIHwgW10gLT4gZGVmYXVsdFxuICB8IF8gOjogXyAtPiBtYXRjaGVzXG5cbmxldCBpbnB1dF9jaGFuZ2UgaW5wdXRfZG9tIHNpZ25hbF9oYW5kbGVyID1cbiAgaW5wdXRfZG9tIyMub25jaGFuZ2UgOj1cbiAgICBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSBzaWduYWxfaGFuZGxlciAoSnMudG9fc3RyaW5nIGlucHV0X2RvbSMjLnZhbHVlKSBpblxuICAgICAgICBKcy5fdHJ1ZSlcblxubW9kdWxlIHR5cGUgTWVudSA9IHNpZ1xuICB2YWwgY29udGVudCA6XG4gICAgdW5pdCAtPlxuICAgIFs+IGBCdXR0b24gfCBgRGl2IHwgYFVsIHwgYEEgb2YgWz4gYFBDREFUQSB8IGBTcGFuIF0gXSBUeXhtbF9qcy5IdG1sNS5lbHRcbiAgICBsaXN0XG5cbiAgdmFsIG9ubG9hZCA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIERpdiA9IHNpZ1xuICB2YWwgaWQgOiBzdHJpbmdcbiAgdmFsIGNvbnRlbnQgOiB1bml0IC0+IEh0bWxfdHlwZXMuZGl2X2NvbnRlbnRfZnVuIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3RcbiAgdmFsIG9ubG9hZCA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFRhYiA9IHNpZ1xuICB2YWwgbmF2bGkgOlxuICAgIHVuaXQgLT5cbiAgICBIdG1sX3R5cGVzLmZsb3c1X3dpdGhvdXRfaW50ZXJhY3RpdmUgVHl4bWxfanMuSHRtbDUuZWx0IFJlYWN0aXZlRGF0YS5STGlzdC50XG5cbiAgdmFsIGNvbnRlbnQgOiB1bml0IC0+IEh0bWxfdHlwZXMuZGl2X2NvbnRlbnRfZnVuIFR5eG1sX2pzLkh0bWw1LmVsdCBsaXN0XG4gIHZhbCBvbmxvYWQgOiB1bml0IC0+IHVuaXRcbiAgdmFsIG9ucmVzaXplIDogdW5pdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ViVGFiID0gc2lnXG4gIGluY2x1ZGUgVGFiXG5cbiAgdmFsIHBhcmVudF9oaWRlIDogdW5pdCAtPiB1bml0XG4gIHZhbCBwYXJlbnRfc2hvd24gOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBQYW5lbCA9IHNpZ1xuICB2YWwgY29udGVudCA6IHVuaXQgLT4gSHRtbF90eXBlcy5kaXYgVHl4bWxfanMuSHRtbDUuZWx0XG4gIHZhbCBvbmxvYWQgOiB1bml0IC0+IHVuaXRcbiAgdmFsIG9ucmVzaXplIDogdW5pdCAtPiB1bml0XG5lbmRcblxubGV0IGlkX2RvbSAoaWQgOiBzdHJpbmcpIDogJ2EgSnMudCA9XG4gIEpzLlVuc2FmZS5jb2VyY2VcbiAgICAoSnMuT3B0LmdldFxuICAgICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgQ29tbW9uLnRvc3NcbiAgICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwidWlfY29tbW9uLmlkX2RvbSA6IGNvdWxkIG5vdCBmaW5kIGlkICVzXCIgaWQpKVxuICAgICAgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpXG5cbmxldCBjcmVhdGVfbW9kYWwgfihpZCA6IHN0cmluZykgfih0aXRsZV9sYWJlbCA6IHN0cmluZylcbiAgICB+KGJvZHkgOiBbPCBIdG1sX3R5cGVzLmRpdl9jb250ZW50X2Z1biBdIEh0bWwuZWx0IEh0bWwubGlzdF93cmFwKVxuICAgIH4oc3VibWl0X2xhYmVsIDogc3RyaW5nKSB+KHN1Ym1pdCA6ICgnc2VsZiBKcy50LCBfIEpzLnQpIERvbS5ldmVudF9saXN0ZW5lcilcbiAgICA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gSHRtbC5lbHQgPVxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6WyBIdG1sLmFfYnV0dG9uX3R5cGUgYFN1Ym1pdDsgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tcHJpbWFyeVwiIF0gXVxuICAgICAgWyBIdG1sLnR4dCBzdWJtaXRfbGFiZWwgXVxuICBpblxuICBsZXQgZm9ybSA9XG4gICAgSHRtbC5mb3JtXG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtY29udGVudFwiIF0gXVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1oZWFkZXJcIiBdIF1cbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmJ1dHRvblxuICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNsb3NlXCIgXTtcbiAgICAgICAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJkYXRhLWRpc21pc3NcIiBcIm1vZGFsXCI7XG4gICAgICAgICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiYXJpYS1sYWJlbFwiIFwiQ2xvc2VcIjtcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBIdG1sLnNwYW5cbiAgICAgICAgICAgICAgICAgIH5hOlsgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImFyaWEtaGlkZGVuXCIgXCJ0cnVlXCIgXVxuICAgICAgICAgICAgICAgICAgWyBIdG1sLmVudGl0eSBcInRpbWVzXCIgXTtcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIEh0bWwuaDQgWyBIdG1sLmNkYXRhIHRpdGxlX2xhYmVsIF07XG4gICAgICAgICAgXTtcbiAgICAgICAgSHRtbC5kaXYgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWJvZHlcIiBdIF0gYm9keTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtZm9vdGVyXCIgXSBdXG4gICAgICAgICAgKFtcbiAgICAgICAgICAgICBIdG1sLmJ1dHRvblxuICAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImRhdGEtZGlzbWlzc1wiIFwibW9kYWxcIjtcbiAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgWyBIdG1sLmNkYXRhIFwiQ2FuY2VsXCIgXTtcbiAgICAgICAgICAgXVxuICAgICAgICAgIEAgWyBidXR0b24gXSk7XG4gICAgICBdXG4gIGluXG4gIGxldCAoKSA9IChUeXhtbF9qcy5Ub19kb20ub2ZfZm9ybSBmb3JtKSMjLm9uc3VibWl0IDo9IHN1Ym1pdCBpblxuICBIdG1sLmRpdlxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsXCI7IFwiZmFkZVwiIF07XG4gICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInRhYmluZGV4XCIgXCItMVwiO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwiZGlhbG9nXCI7XG4gICAgICBdXG4gICAgW1xuICAgICAgSHRtbC5kaXZcbiAgICAgICAgfmE6XG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1kaWFsb2dcIiBdO1xuICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcImRvY3VtZW50XCI7XG4gICAgICAgICAgXVxuICAgICAgICBbIGZvcm0gXTtcbiAgICBdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCBwcm9qZWN0X2lkX21vZGFsX2lkID0gXCJtZW51LWVkaXRvci1wcm9qZWN0LWlkLW1vZGFsXCJcblxubGV0IHByb2plY3RfaWRfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBUZXh0O1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcInByb2plY3QgbmV3XCI7XG4gICAgICAgIEh0bWwuYV9zaXplIDQwO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBsaV9uZXcgPSBIdG1sLmxpIFsgSHRtbC5hIFsgSHRtbC5jZGF0YSBcIk5ldyBwcm9qZWN0XCIgXSBdXG5sZXQgbGlfcHJlZnMgPSBIdG1sLmxpIChNb2RhbF9wcmVmZXJlbmNlcy5jb250ZW50ICgpKVxubGV0IHByb2plY3RfaWRfaW5wdXRfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IHByb2plY3RfaWRfaW5wdXRcblxubGV0IGNvbnRlbnQgKCkgPVxuICBIdG1sLmRpdlxuICAgIFtcbiAgICAgIFR5eG1sX2pzLlIuSHRtbDUudWxcbiAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm5hdlwiOyBcIm5hdi10YWJzXCI7IFwibmF2LWp1c3RpZmllZFwiIF0gXVxuICAgICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAgICAgICAgICAgKGZ1biB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsX3Byb2plY3RfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsX3Byb2plY3RfaXNfY29tcHV0aW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlfY2xhc3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9jdXJyZW50X2lkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGN1cnJlbnRfcHJvamVjdF9pZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfcHJvamVjdF9pZCA9IG1vZGVsX3Byb2plY3RfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsgXCJhY3RpdmVcIiBdXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgc3Bhbl9jbG9zZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBIdG1sLmJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY2xvc2VcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyBIdG1sLmVudGl0eSBcInRpbWVzXCIgXVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIHNwYW5fY2xvc2UpIyMub25jbGlja1xuICAgICAgICAgICAgICAgICAgICAgICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBldmVudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYW5lbF9wcm9qZWN0c19jb250cm9sbGVyLmNsb3NlX3Byb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxfcHJvamVjdF9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gRG9tX2h0bWwuc3RvcFByb3BhZ2F0aW9uIGV2ZW50IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnMuX2ZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXB1dGluZyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2xhc3NlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBcImdseXBoaWNvblwiOyBcImdseXBoaWNvbi1yZWZyZXNoXCIgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFwiZ2x5cGhpY29uXCI7IFwiZ2x5cGhpY29uLW9rXCIgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbF9wcm9qZWN0X2lzX2NvbXB1dGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIFR5eG1sX2pzLlIuSHRtbDUuYV9jbGFzcyBjbGFzc2VzIF0gW11cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBhX3Byb2plY3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5hXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5jZGF0YSAoXCIgXCIgXiBtb2RlbF9wcm9qZWN0X2lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFuX2Nsb3NlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9hIGFfcHJvamVjdCkjIy5vbmNsaWNrXG4gICAgICAgICAgICAgICAgICAgICAgICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFuZWxfcHJvamVjdHNfY29udHJvbGxlci5zZXRfcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbF9wcm9qZWN0X2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIEh0bWwubGkgfmE6WyBIdG1sLmFfY2xhc3MgbGlfY2xhc3MgXSBbIGFfcHJvamVjdCBdKVxuICAgICAgICAgICAgICAgICAgICBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX2NhdGFsb2dcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIExpc3QucmV2X2FwcGVuZCBhY2MgWyBsaV9uZXc7IGxpX3ByZWZzIF0pXG4gICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QubW9kZWwpKTtcbiAgICAgIFVpX2NvbW1vbi5jcmVhdGVfbW9kYWwgfmlkOnByb2plY3RfaWRfbW9kYWxfaWQgfnRpdGxlX2xhYmVsOlwiTmV3IFByb2plY3RcIlxuICAgICAgICB+Ym9keTpcbiAgICAgICAgICBbXG4gICAgICAgICAgICBbJWh0bWxcbiAgICAgICAgICAgICAge3w8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj58fSBbIHByb2plY3RfaWRfaW5wdXQgXSB7fDwvZGl2Pnx9XTtcbiAgICAgICAgICBdXG4gICAgICAgIH5zdWJtaXRfbGFiZWw6XCJDcmVhdGUgUHJvamVjdFwiXG4gICAgICAgIH5zdWJtaXQ6XG4gICAgICAgICAgKERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgICAgbGV0IHNldHRpbmdzX2NsaWVudF9pZCA6IHN0cmluZyA9XG4gICAgICAgICAgICAgICAgIEpzLnRvX3N0cmluZyBwcm9qZWN0X2lkX2lucHV0X2RvbSMjLnZhbHVlXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgUGFuZWxfcHJvamVjdHNfY29udHJvbGxlci5jcmVhdGVfcHJvamVjdCBzZXR0aW5nc19jbGllbnRfaWRcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBDb21tb24ubW9kYWwgfmlkOihcIiNcIiBeIHByb2plY3RfaWRfbW9kYWxfaWQpIH5hY3Rpb246XCJoaWRlXCJcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBKcy5fZmFsc2UpKTtcbiAgICBdXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPSBNb2RhbF9wcmVmZXJlbmNlcy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uXG4gICAgICAoXCIjXCIgXiBwcm9qZWN0X2lkX21vZGFsX2lkKVxuICAgICAgXCJzaG93bi5icy5tb2RhbFwiXG4gICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gcHJvamVjdF9pZF9pbnB1dF9kb20jI2ZvY3VzIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zcGFuIGxpX25ldykjIy5vbmNsaWNrXG4gICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgQ29tbW9uLm1vZGFsIH5pZDooXCIjXCIgXiBwcm9qZWN0X2lkX21vZGFsX2lkKSB+YWN0aW9uOlwic2hvd1wiXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBtb2RlbF9pbnRlcnZlbnRpb24sIHNldF9tb2RlbF9pbnRlcnZlbnRpb24gPSBSZWFjdC5TLmNyZWF0ZSBcIlwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgY3JlYXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyIHBhcmFtIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPVxuICB7XG4gICAgQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wbG90X3BlcmlvZCA9IHBhcmFtLlN0YXRlX3Byb2plY3QucGxvdF9wZXJpb2Q7XG4gICAgQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb24gPSBwYXJhbS5TdGF0ZV9wcm9qZWN0LnBhdXNlX2NvbmRpdGlvbjtcbiAgICBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3NlZWQgPSBwYXJhbS5TdGF0ZV9wcm9qZWN0LnNlZWQ7XG4gICAgQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9zdG9yZV90cmFjZSA9IHBhcmFtLlN0YXRlX3Byb2plY3Quc3RvcmVfdHJhY2U7XG4gIH1cblxubGV0IGNvbnRpbnVlX3NpbXVsYXRpb24gKCkgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBsZXQgcGF1c2VfY29uZGl0aW9uID1cbiAgICAgICAgbGV0IG9wZW4gU3RhdGVfcHJvamVjdCBpblxuICAgICAgICAoUmVhY3QuUy52YWx1ZSBtb2RlbCkubW9kZWxfcGFyYW1ldGVycy5wYXVzZV9jb25kaXRpb25cbiAgICAgIGluXG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX19cbiAgICAgICAgKFN0YXRlX3NpbXVsYXRpb24uY29udGludWVfc2ltdWxhdGlvbiBwYXVzZV9jb25kaXRpb24pXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgcGF1c2Vfc2ltdWxhdGlvbiAoKSA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfXyAoU3RhdGVfc2ltdWxhdGlvbi5wYXVzZV9zaW11bGF0aW9uICgpKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHN0b3Bfc2ltdWxhdGlvbiAoKSA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIFwic3VicGFuZWxfZWRpdG9yX2NvbnRyb2xsZXIuc3RvcFwiKSBpblxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fIChTdGF0ZV9zaW11bGF0aW9uLnN0b3Bfc2ltdWxhdGlvbiAoKSlcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzdGFydF9zaW11bGF0aW9uICgpID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgbGV0IHNpbXVsYXRpb25fcGFyYW1ldGVyID1cbiAgICAgICAgY3JlYXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgKFJlYWN0LlMudmFsdWUgU3RhdGVfcHJvamVjdC5tb2RlbCkuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzXG4gICAgICBpblxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9zaW11bGF0aW9uLnN0YXJ0X3NpbXVsYXRpb24gc2ltdWxhdGlvbl9wYXJhbWV0ZXIpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgaW50ZXJ2ZW5lX3NpbXVsYXRpb24gKCkgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBsZXQgbW9kZWxfcGVydHVyYmF0aW9uID1cbiAgICAgICAgUmVhY3QuUy52YWx1ZSBTdGF0ZV9wZXJ0dXJiYXRpb24ubW9kZWxfaW50ZXJ2ZW50aW9uXG4gICAgICBpblxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9zaW11bGF0aW9uLmludGVydmVuZV9zaW11bGF0aW9uIG1vZGVsX3BlcnR1cmJhdGlvbilcbiAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICB+b2s6KGZ1biB0ZXh0IC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgU3RhdGVfZXJyb3IuYWRkX2Vycm9yIF9fTE9DX19cbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5JbmZvO1xuICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0O1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG4gICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdCkpXG5cbmxldCBmb2N1c19yYW5nZSAocmFuZ2UgOiBMb2MudCkgOiB1bml0ID1cbiAgbGV0IGZpbGVfaWQgPSByYW5nZS5Mb2MuZmlsZSBpblxuICBsZXQgbGluZSA9IHJhbmdlLkxvYy5mcm9tX3Bvc2l0aW9uLkxvYy5saW5lIGluXG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgfmFwcGVuZDp0cnVlIF9fTE9DX19cbiAgICAgICAgKFN0YXRlX2ZpbGUuc2VsZWN0X2ZpbGUgZmlsZV9pZCAoU29tZSBsaW5lKSlcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzaW11bGF0aW9uX3RyYWNlICgpID1cbiAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX18gbWFuYWdlciNzaW11bGF0aW9uX3Jhd190cmFjZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGRhdGFfc3RyaW5nIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID0gSnMuc3RyaW5nIGRhdGFfc3RyaW5nIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lOlwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCJcbiAgICAgICAgICAgICAgICAgIH5maWxlbmFtZTpcInRyYWNlLmpzb25cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgc2ltdWxhdGlvbl9vdXRwdXRzICgpID1cbiAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX18gbWFuYWdlciNzaW11bGF0aW9uX291dHB1dHNfemlwXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gZGF0YV9iaWdzdHJpbmcgLT5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSBUeXBlZF9hcnJheS5CaWdzdHJpbmcudG9fYXJyYXlCdWZmZXIgZGF0YV9iaWdzdHJpbmcgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDb21tb24uc2F2ZUZpbGUgfmRhdGEgfm1pbWU6XCJhcHBsaWNhdGlvbi96aXBcIlxuICAgICAgICAgICAgICAgICAgfmZpbGVuYW1lOlwic2ltdWxhdGlvbl9vdXRwdXRzLnppcFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5vcGVuIEx3dC5JbmZpeFxub3BlbiBMaXN0X3V0aWwuSW5maXhcblxubGV0IHZpc2libGVfb25fc3RhdGVzID8oYV9jbGFzcyA9IFtdKVxuICAgIChzdGF0ZSA6IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc3RhdGUgbGlzdCkgOiBzdHJpbmcgbGlzdCBSZWFjdC5zaWduYWwgPVxuICBsZXQgaGlkZGVuX2NsYXNzID0gWyBcImhpZGRlblwiIF0gaW5cbiAgbGV0IHZpc2libGVfY2xhc3MgPSBbIFwidmlzaWJsZVwiIF0gaW5cbiAgUmVhY3QuUy5iaW5kIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwgKGZ1biBtb2RlbCAtPlxuICAgICAgbGV0IGN1cnJlbnRfc3RhdGUgPSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25fc3RhdGUgbW9kZWwgaW5cbiAgICAgIFJlYWN0LlMuY29uc3RcbiAgICAgICAgKGlmIExpc3QubWVtIGN1cnJlbnRfc3RhdGUgc3RhdGUgdGhlblxuICAgICAgICAgICBhX2NsYXNzIEAgdmlzaWJsZV9jbGFzc1xuICAgICAgICAgZWxzZVxuICAgICAgICAgICBhX2NsYXNzIEAgaGlkZGVuX2NsYXNzKSlcblxubW9kdWxlIEZvcm1QZXJ0dXJiYXRpb24gOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfc2V0dGluZ3NfcGVydHVyYmF0aW9uXCJcblxuICBsZXQgaW5wdXQgPVxuICAgIEh0bWwuaW5wdXRcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYFRleHQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcIlNpbXVsYXRpb24gUGVydHVyYmF0aW9uXCI7XG4gICAgICAgIF1cbiAgICAgICgpXG5cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlsgSHRtbC5hX2J1dHRvbl90eXBlIGBTdWJtaXQ7IEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcImludGVydmVudGlvblwiIF1cblxuICBsZXQgZm9ybSA9XG4gICAgSHRtbC5mb3JtXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImZvcm0taG9yaXpvbnRhbFwiIF1cbiAgICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5QQVVTRUQgXSk7XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1ncm91cFwiIF0gXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMTBcIjsgXCJjb2wteHMtOVwiIF0gXSBbIGlucHV0IF07XG4gICAgICAgICAgICBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIjsgXCJjb2wteHMtM1wiIF0gXSBbIGJ1dHRvbiBdO1xuICAgICAgICAgIF07XG4gICAgICBdXG5cbiAgbGV0IGNvbnRlbnQgKCkgPSBbIGZvcm0gXVxuXG4gIGxldCBvbmxvYWQgKCkgOiB1bml0ID1cbiAgICBsZXQgZm9ybV9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfZm9ybSBmb3JtIGluXG4gICAgbGV0IGlucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBpbnB1dCBpblxuICAgIGxldCBoYW5kbGVyIF8gPVxuICAgICAgbGV0IG1vZGVsX3BlcnR1cmJhdGlvbiA6IHN0cmluZyA9IEpzLnRvX3N0cmluZyBpbnB1dF9kb20jIy52YWx1ZSBpblxuICAgICAgbGV0ICgpID0gU3RhdGVfcGVydHVyYmF0aW9uLnNldF9tb2RlbF9pbnRlcnZlbnRpb24gbW9kZWxfcGVydHVyYmF0aW9uIGluXG4gICAgICBKcy5fdHJ1ZVxuICAgIGluXG5cbiAgICBsZXQgKCkgPVxuICAgICAgZm9ybV9kb20jIy5vbnN1Ym1pdCA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3NldHRpbmdzX2NvbnRyb2xsZXIuaW50ZXJ2ZW5lX3NpbXVsYXRpb24gKCkgaW5cbiAgICAgICAgICAgIEpzLl9mYWxzZSlcbiAgICBpblxuICAgIGxldCAoKSA9IGlucHV0X2RvbSMjLm9uY2hhbmdlIDo9IERvbS5oYW5kbGVyIGhhbmRsZXIgaW5cbiAgICAoKVxuZW5kXG5cbmxldCBzaWduYWxfY2hhbmdlIGlucHV0X2RvbSBzaWduYWxfaGFuZGxlciA9XG4gIGlucHV0X2RvbSMjLm9uY2hhbmdlIDo9XG4gICAgRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gc2lnbmFsX2hhbmRsZXIgKEpzLnRvX3N0cmluZyBpbnB1dF9kb20jIy52YWx1ZSkgaW5cbiAgICAgICAgSnMuX3RydWUpXG5cbm1vZHVsZSBJbnB1dFBhdXNlQ29uZGl0aW9uIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3NldHRpbmdzX3BhdXNlX2NvbmRpdGlvblwiXG5cbiAgbGV0IGlucHV0ID1cbiAgICBIdG1sLmlucHV0XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgVGV4dDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwiW1RdID4gMTAwXCI7XG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfdmFsdWVcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgIG0uU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzLlN0YXRlX3Byb2plY3QucGF1c2VfY29uZGl0aW9uKVxuICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbCk7XG4gICAgICAgIF1cbiAgICAgICgpXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGlucHV0IF1cbiAgbGV0IGRvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBpbnB1dFxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCAoKSA9XG4gICAgICBzaWduYWxfY2hhbmdlIGRvbSAoZnVuIHZhbHVlIC0+XG4gICAgICAgICAgbGV0IHYnID1cbiAgICAgICAgICAgIGlmIHZhbHVlID0gXCJcIiB0aGVuXG4gICAgICAgICAgICAgIFwiW2ZhbHNlXVwiXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTdGF0ZV9wcm9qZWN0LnNldF9wYXVzZV9jb25kaXRpb24gdicpXG4gICAgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBJbnB1dFBsb3RQZXJpb2QgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfc2V0dGluZ3NfcGxvdF9wZXJpb2RcIlxuXG4gIGxldCBmb3JtYXRfZmxvYXRfc3RyaW5nIHZhbHVlID1cbiAgICBsZXQgbiA9IHN0cmluZ19vZl9mbG9hdCB2YWx1ZSBpblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIG4gaW5cbiAgICBpZiBsZW5ndGggPiAwICYmIFN0cmluZy5nZXQgbiAobGVuZ3RoIC0gMSkgPSAnLicgdGhlblxuICAgICAgbiBeIFwiMFwiXG4gICAgZWxzZVxuICAgICAgblxuXG4gIGxldCBpbnB1dCA9XG4gICAgSHRtbC5pbnB1dFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgTnVtYmVyO1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwidGltZSB1bml0c1wiO1xuICAgICAgICAgIEh0bWwuYV9pbnB1dF9taW4gKGBOdW1iZXIgMCk7XG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfdmFsdWVcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgIGZvcm1hdF9mbG9hdF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICBtLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVycy5TdGF0ZV9wcm9qZWN0LnBsb3RfcGVyaW9kKVxuICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbCk7XG4gICAgICAgIF1cbiAgICAgICgpXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGlucHV0IF1cblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgaW5wdXRfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IGlucHV0IGluXG4gICAgbGV0ICgpID1cbiAgICAgIHNpZ25hbF9jaGFuZ2UgaW5wdXRfZG9tIChmdW4gdmFsdWUgLT5cbiAgICAgICAgICBsZXQgcmVzZXRfdmFsdWUgKCkgPVxuICAgICAgICAgICAgbGV0IG9sZF92YWx1ZSA9XG4gICAgICAgICAgICAgIChSZWFjdC5TLnZhbHVlIFN0YXRlX3Byb2plY3QubW9kZWwpLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgIC5TdGF0ZV9wcm9qZWN0LnBsb3RfcGVyaW9kXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaW5wdXRfZG9tIyMudmFsdWUgOj0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfZmxvYXQgb2xkX3ZhbHVlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgbmV3X3ZhbHVlID0gZmxvYXRfb2Zfc3RyaW5nIHZhbHVlIGluXG4gICAgICAgICAgICBpZiBuZXdfdmFsdWUgPCAwLiB0aGVuXG4gICAgICAgICAgICAgIHJlc2V0X3ZhbHVlICgpXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIFN0YXRlX3Byb2plY3Quc2V0X3Bsb3RfcGVyaW9kIG5ld192YWx1ZVxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+IHJlc2V0X3ZhbHVlICgpKVxuICAgIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgRGl2RXJyb3JNZXNzYWdlIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcImNvbmZpZ3VyYXRpb25fZXJyb3JfZGl2XCJcbiAgbGV0IG1lc3NhZ2VfbmF2X2luY19pZCA9IFwicGFuZWxfc2V0dGluZ3NfbWVzc2FnZV9uYXZfaW5jX2lkXCJcbiAgbGV0IG1lc3NhZ2VfbmF2X2RlY19pZCA9IFwicGFuZWxfc2V0dGluZ3NfbWVzc2FnZV9uYXZfZGVjX2lkXCJcbiAgbGV0IG1lc3NhZ2VfZmlsZV9sYWJlbF9pZCA9IFwicGFuZWxfc2V0dGluZ3NfbWVzc2FnZV9maWxlX2xhYmVsXCJcbiAgbGV0IGVycm9yX2luZGV4LCBzZXRfZXJyb3JfaW5kZXggPSBSZWFjdC5TLmNyZWF0ZSBOb25lXG5cbiAgbGV0IGRvbnRfZ2NfbWUgPVxuICAgIFJlYWN0LlMubDFcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgKG1hdGNoIFJlYWN0LlMudmFsdWUgZXJyb3JfaW5kZXggd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBzZXRfZXJyb3JfaW5kZXggKFNvbWUgMClcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKSkpXG4gICAgICBTdGF0ZV9lcnJvci5lcnJvcnNcblxuICAoKiBpZiB0aGVyZSBhcmUgbGVzcyBvciBubyBlcnJvcnMgdGhlIGluZGV4IG5lZWRzIHRvIGJlIHVwZGF0ZWQgKilcbiAgbGV0IHNhbml0aXplX2luZGV4IChpbmRleCA6IGludCBvcHRpb24pIGVycm9ycyA6IGludCBvcHRpb24gPVxuICAgIGxldCAoKSA9IGlnbm9yZSBkb250X2djX21lIGluXG4gICAgbWF0Y2ggaW5kZXgsIGVycm9ycyB3aXRoXG4gICAgfCBOb25lLCBbXSAtPiBOb25lXG4gICAgfCBOb25lLCBfIDo6IF8gLT4gU29tZSAwXG4gICAgfCBTb21lIF8sIFtdIC0+IE5vbmVcbiAgICB8IFNvbWUgaW5kZXgsIGVycm9yIC0+XG4gICAgICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGggZXJyb3IgaW5cbiAgICAgIGlmIGluZGV4ID4gbGVuZ3RoIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBzZXRfZXJyb3JfaW5kZXggKFNvbWUgMCkgaW5cbiAgICAgICAgU29tZSAwXG4gICAgICApIGVsc2UgaWYgMCA+IGluZGV4IHRoZW4gKFxuICAgICAgICBsZXQgaW5kZXggPSBTb21lIChMaXN0Lmxlbmd0aCBlcnJvciAtIDEpIGluXG4gICAgICAgIGxldCAoKSA9IHNldF9lcnJvcl9pbmRleCBpbmRleCBpblxuICAgICAgICBpbmRleFxuICAgICAgKSBlbHNlXG4gICAgICAgIFNvbWUgaW5kZXhcblxuICBsZXQgZ2V0X21lc3NhZ2UgKGluZGV4IDogaW50IG9wdGlvbikgZXJyb3JzIDogQXBpX3R5cGVzX3QubWVzc2FnZSBvcHRpb24gPVxuICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgIChmdW4gbiAtPiBTb21lIChMaXN0Lm50aCBlcnJvcnMgbikpXG4gICAgICAoc2FuaXRpemVfaW5kZXggaW5kZXggZXJyb3JzKVxuXG4gIGxldCBtZXNhZ2VfbmF2X3RleHQgPVxuICAgIFJlYWN0LlMubDJcbiAgICAgIChmdW4gaW5kZXggZXJyb3IgLT5cbiAgICAgICAgbWF0Y2ggaW5kZXgsIGVycm9yIHdpdGhcbiAgICAgICAgfCBOb25lLCBbXSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBfLCBbXSAtPiBcIlwiXG4gICAgICAgIHwgTm9uZSwgXyA6OiBfIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIGluZGV4LCAoXyA6OiBfIGFzIGVycm9ycykgLT5cbiAgICAgICAgICBGb3JtYXQuc3ByaW50ZiBcIiVkLyVkXCIgKGluZGV4ICsgMSkgKExpc3QubGVuZ3RoIGVycm9ycykpXG4gICAgICBlcnJvcl9pbmRleCBTdGF0ZV9lcnJvci5lcnJvcnNcblxuICBsZXQgYV9jbGFzcyA9XG4gICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgIChSZWFjdC5TLmJpbmQgU3RhdGVfZXJyb3IuZXJyb3JzIChmdW4gZXJyb3IgLT5cbiAgICAgICAgICAgUmVhY3QuUy5jb25zdFxuICAgICAgICAgICAgIChtYXRjaCBlcnJvciB3aXRoXG4gICAgICAgICAgICAgfCBbXSB8IFsgXyBdIC0+IFsgXCJoaWRlXCIgXVxuICAgICAgICAgICAgIHwgXyA6OiBfIDo6IF8gLT4gWyBcImVycm9yLXNwYW5cIjsgXCJjbGlja2FibGVcIiBdKSkpXG5cbiAgbGV0IG1lc3NhZ2VfbmF2X2RlYyA9XG4gICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2lkIG1lc3NhZ2VfbmF2X2RlY19pZDsgYV9jbGFzcyBdIFsgSHRtbC50eHQgXCIgwqsgXCIgXVxuXG4gIGxldCBtZXNzYWdlX25hdl9pbmMgPVxuICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9pZCBtZXNzYWdlX25hdl9pbmNfaWQ7IGFfY2xhc3MgXSBbIEh0bWwudHh0IFwiIMK7IFwiIF1cblxuICBsZXQgbWVzc2FnZV9uYXYgPVxuICAgIFsgbWVzc2FnZV9uYXZfZGVjOyBUeXhtbF9qcy5SLkh0bWwudHh0IG1lc2FnZV9uYXZfdGV4dDsgbWVzc2FnZV9uYXZfaW5jIF1cblxuICBsZXQgZmlsZV9sYWJlbF90ZXh0ID1cbiAgICBSZWFjdC5TLmwyXG4gICAgICAoZnVuIGluZGV4IGVycm9yIC0+XG4gICAgICAgIGxldCByYW5nZSA9XG4gICAgICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAgICAgKGZ1biBtZXNzYWdlIC0+IG1lc3NhZ2UuUmVzdWx0X3V0aWwucmFuZ2UpXG4gICAgICAgICAgICAoZ2V0X21lc3NhZ2UgaW5kZXggZXJyb3IpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIHJhbmdlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIHJhbmdlIC0+IEZvcm1hdC5zcHJpbnRmIFwiWyVzXVwiIHJhbmdlLkxvYy5maWxlKVxuICAgICAgZXJyb3JfaW5kZXggU3RhdGVfZXJyb3IuZXJyb3JzXG5cbiAgbGV0IGZpbGVfbGFiZWwgPVxuICAgIEh0bWwuc3BhblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgbWVzc2FnZV9maWxlX2xhYmVsX2lkO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZXJyb3Itc3BhblwiOyBcImNsaWNrYWJsZVwiIF07XG4gICAgICAgIF1cbiAgICAgIFsgVHl4bWxfanMuUi5IdG1sLnR4dCBmaWxlX2xhYmVsX3RleHQgXVxuXG4gIGxldCBlcnJvcl9tZXNzYWdlX3RleHQgPVxuICAgIFJlYWN0LlMubDJcbiAgICAgIChmdW4gaW5kZXggZXJyb3IgLT5cbiAgICAgICAgbWF0Y2ggZ2V0X21lc3NhZ2UgaW5kZXggZXJyb3Igd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICB8IFNvbWUgbWVzc2FnZSAtPiBGb3JtYXQuc3ByaW50ZiBcIiAlcyBcIiBtZXNzYWdlLlJlc3VsdF91dGlsLnRleHQpXG4gICAgICBlcnJvcl9pbmRleCBTdGF0ZV9lcnJvci5lcnJvcnNcblxuICBsZXQgZXJyb3JfbWVzc2FnZSA9XG4gICAgSHRtbC5zcGFuXG4gICAgICB+YTpbIEh0bWwuYV9pZCBpZDsgSHRtbC5hX2NsYXNzIFsgXCJlcnJvci1zcGFuXCIgXSBdXG4gICAgICBbIFR5eG1sX2pzLlIuSHRtbC50eHQgZXJyb3JfbWVzc2FnZV90ZXh0IF1cblxuICBsZXQgYWxlcnRfbWVzc2FnZXMgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKFJlYWN0LlMuYmluZCBTdGF0ZV9lcnJvci5lcnJvcnMgKGZ1biBlcnJvciAtPlxuICAgICAgICAgICAgICAgICBSZWFjdC5TLmNvbnN0XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIGVycm9yIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFtdIC0+IFsgXCJhbGVydC1zbVwiOyBcImFsZXJ0XCIgXVxuICAgICAgICAgICAgICAgICAgIHwgXyA6OiBfIC0+IFsgXCJhbGVydC1zbVwiOyBcImFsZXJ0XCI7IFwiYWxlcnQtZGFuZ2VyXCIgXSkpKTtcbiAgICAgICAgXVxuICAgICAgKG1lc3NhZ2VfbmF2IEAgWyBmaWxlX2xhYmVsOyBlcnJvcl9tZXNzYWdlIF0pXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPVxuICAgIFsgYWxlcnRfbWVzc2FnZXMgXVxuXG4gIGxldCBmaWxlX2NsaWNrX2hhbmRsZXIgKCkgPVxuICAgIGxldCBkb20gPSBUeXhtbF9qcy5Ub19kb20ub2Zfc3BhbiBmaWxlX2xhYmVsIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGRvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBcImZpbGVfY2xpY2tfaGFuZGxlclwiKSBpblxuICAgICAgICAgICAgbGV0IG1lc3NhZ2UgOiBBcGlfdHlwZXNfdC5tZXNzYWdlIG9wdGlvbiA9XG4gICAgICAgICAgICAgIGdldF9tZXNzYWdlXG4gICAgICAgICAgICAgICAgKFJlYWN0LlMudmFsdWUgZXJyb3JfaW5kZXgpXG4gICAgICAgICAgICAgICAgKFJlYWN0LlMudmFsdWUgU3RhdGVfZXJyb3IuZXJyb3JzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCByYW5nZSA9XG4gICAgICAgICAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgICAgICAgICAoZnVuIG1lc3NhZ2UgLT4gbWVzc2FnZS5SZXN1bHRfdXRpbC5yYW5nZSlcbiAgICAgICAgICAgICAgICBtZXNzYWdlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgbWF0Y2ggcmFuZ2Ugd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgcmFuZ2UgLT4gUGFuZWxfc2V0dGluZ3NfY29udHJvbGxlci5mb2N1c19yYW5nZSByYW5nZVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuICAgICgpXG5cbiAgbGV0IGluZGV4X2NsaWNrX2hhbmRsZXIgZG9tIGRlbHRhID1cbiAgICBsZXQgKCkgPVxuICAgICAgZG9tIyMub25jbGljayA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIFwiaW5kZXhfY2xpY2tfaGFuZGxlclwiKSBpblxuICAgICAgICAgICAgbGV0IGluZGV4IDogaW50IG9wdGlvbiA9XG4gICAgICAgICAgICAgIHNhbml0aXplX2luZGV4XG4gICAgICAgICAgICAgICAgKFJlYWN0LlMudmFsdWUgZXJyb3JfaW5kZXgpXG4gICAgICAgICAgICAgICAgKFJlYWN0LlMudmFsdWUgU3RhdGVfZXJyb3IuZXJyb3JzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBpbmRleCA9IE9wdGlvbl91dGlsLm1hcCBkZWx0YSBpbmRleCBpblxuICAgICAgICAgICAgbGV0IGluZGV4IDogaW50IG9wdGlvbiA9XG4gICAgICAgICAgICAgIHNhbml0aXplX2luZGV4IGluZGV4IChSZWFjdC5TLnZhbHVlIFN0YXRlX2Vycm9yLmVycm9ycylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBzZXRfZXJyb3JfaW5kZXggaW5kZXggaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG4gICAgKClcblxuICBsZXQgaW5jX2NsaWNrX2hhbmRsZXIgKCkgPVxuICAgIGxldCBkb20gPSBUeXhtbF9qcy5Ub19kb20ub2Zfc3BhbiBtZXNzYWdlX25hdl9kZWMgaW5cbiAgICBsZXQgKCkgPSBpbmRleF9jbGlja19oYW5kbGVyIGRvbSAoZnVuIGluZGV4IC0+IGluZGV4ICsgMSkgaW5cbiAgICAoKVxuXG4gIGxldCBkZWNfY2xpY2tfaGFuZGxlciAoKSA9XG4gICAgbGV0IGRvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9zcGFuIG1lc3NhZ2VfbmF2X2luYyBpblxuICAgIGxldCAoKSA9IGluZGV4X2NsaWNrX2hhbmRsZXIgZG9tIChmdW4gaW5kZXggLT4gaW5kZXggLSAxKSBpblxuICAgICgpXG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0ICgpID0gZmlsZV9jbGlja19oYW5kbGVyICgpIGluXG4gICAgbGV0ICgpID0gaW5jX2NsaWNrX2hhbmRsZXIgKCkgaW5cbiAgICBsZXQgKCkgPSBkZWNfY2xpY2tfaGFuZGxlciAoKSBpblxuICAgICgpXG5lbmRcblxubW9kdWxlIEJ1dHRvblN0YXJ0IDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3NldHRpbmdzX3N0YXJ0X2J1dHRvblwiXG5cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgICAgICBUeXhtbF9qcy5SLmZpbHRlcl9hdHRyaWIgKEh0bWwuYV9kaXNhYmxlZCAoKSlcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgICAgU3RhdGVfZmlsZS5jdXJyZW50ID0gU29tZSB7IFN0YXRlX2ZpbGUub3V0X29mX3N5bmM7IF8gfTtcbiAgICAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgICAgIG91dF9vZl9zeW5jXG4gICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgIFN0YXRlX2ZpbGUubW9kZWwpO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJzdGFydFwiIF1cblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9IFsgYnV0dG9uIF1cblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgc3RhcnRfYnV0dG9uX2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gYnV0dG9uIGluXG4gICAgbGV0ICgpID1cbiAgICAgIHN0YXJ0X2J1dHRvbl9kb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUGFuZWxfc2V0dGluZ3NfY29udHJvbGxlci5zdGFydF9zaW11bGF0aW9uICgpIGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgQnV0dG9uQ2xlYXIgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfc2V0dGluZ3NfY2xlYXJfYnV0dG9uXCJcblxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJjbGVhclwiIF1cblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9IFsgYnV0dG9uIF1cblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBidXR0b24gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgZG9tIyMub25jbGljayA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3NldHRpbmdzX2NvbnRyb2xsZXIuc3RvcF9zaW11bGF0aW9uICgpIGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuICAgICgpXG5lbmRcblxubW9kdWxlIEJ1dHRvblBhdXNlIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3NldHRpbmdzX3BhdXNlX2J1dHRvblwiXG5cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLmNkYXRhIFwicGF1c2VcIiBdXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGJ1dHRvbiBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0IGJ1dHRvbl9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGJ1dHRvbiBpblxuICAgIGxldCAoKSA9XG4gICAgICBidXR0b25fZG9tIyMub25jbGljayA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3NldHRpbmdzX2NvbnRyb2xsZXIucGF1c2Vfc2ltdWxhdGlvbiAoKSBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBCdXR0b25UcmFjZSA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9zZXR0aW5nc19nZXRfdHJhY2VfYnV0dG9uXCJcblxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbDUuYV9jbGFzc1xuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgICAgICAgIChpZlxuICAgICAgICAgICAgICAgICAgICBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5zdG9yZV90cmFjZVxuICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBbIFwiZGlzYWJsZWRcIiBdKVxuICAgICAgICAgICAgICAgICBAIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF0pXG4gICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsKTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLmNkYXRhIFwiZ2V0IHRyYWNlXCIgXVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBidXR0b24gXVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCBidXR0b25fZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBidXR0b24gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgYnV0dG9uX2RvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9zZXR0aW5nc19jb250cm9sbGVyLnNpbXVsYXRpb25fdHJhY2UgKCkgaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgQnV0dG9uT3V0cHV0cyA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9zZXR0aW5nc19vdXRwdXRzX2J1dHRvblwiXG5cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLmNkYXRhIFwiQWxsIG91dHB1dHNcIiBdXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGJ1dHRvbiBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0IGJ1dHRvbl9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGJ1dHRvbiBpblxuICAgIGxldCAoKSA9XG4gICAgICBidXR0b25fZG9tIyMub25jbGljayA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3NldHRpbmdzX2NvbnRyb2xsZXIuc2ltdWxhdGlvbl9vdXRwdXRzICgpIGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuICAgICgpXG5lbmRcblxubW9kdWxlIEJ1dHRvbkNvbnRpbnVlIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3NldHRpbmdzX2NvbnRpbnVlX2J1dHRvblwiXG5cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLmNkYXRhIFwiY29udGludWVcIiBdXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGJ1dHRvbiBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0IGJ1dHRvbl9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGJ1dHRvbiBpblxuICAgIGxldCAoKSA9XG4gICAgICBidXR0b25fZG9tIyMub25jbGljayA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3NldHRpbmdzX2NvbnRyb2xsZXIuY29udGludWVfc2ltdWxhdGlvbiAoKSBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBEaXZTdGF0dXNJbmRpY2F0b3IgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwic2V0dGluZ19zdGF0dXNfaW5kaWNhdG9yXCJcblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9XG4gICAgbGV0IGRlYnVnID1cbiAgICAgIEh0bWwuZGl2XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwudHh0XG4gICAgICAgICAgICAoUmVhY3QuUy5iaW5kIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICAgICAgICBsZXQgbGFiZWwgPVxuICAgICAgICAgICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc3RhdGVfdG9fc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX3N0YXRlIG1vZGVsKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBSZWFjdC5TLmNvbnN0IGxhYmVsKSk7XG4gICAgICAgIF1cbiAgICBpblxuICAgIFsgSHRtbC5kaXYgfmE6WyBIdG1sLmFfaWQgaWQgXSAoVWlfY29tbW9uLmxldmVsIH5kZWJ1ZyAoKSkgXVxuXG4gIGxldCBvbmxvYWQgKCkgPSAoKVxuZW5kXG5cbm1vZHVsZSBSdW5uaW5nUGFuZWxMYXlvdXQgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwic2V0dGluZ3NfcnVuZXRpbWVfbGF5b3V0XCJcblxuICBsZXQgcHJvZ3Jlc3NfYmFyIChwZXJjZW50X3NpZ25hbCA6IGludCBUeXhtbF9qcy5SLkh0bWwud3JhcClcbiAgICAgICh2YWx1ZV9zaWduYWwgOiBzdHJpbmcgUmVhY3Quc2lnbmFsKSA9XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcInByb2dyZXNzYmFyXCI7XG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLlVuc2FmZS5pbnRfYXR0cmliIFwiYXJpYS12YWx1ZW5vd1wiIHBlcmNlbnRfc2lnbmFsO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLmludF9hdHRyaWIgXCJhcmlhLXZhbHVlbWluXCIgMDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5pbnRfYXR0cmliIFwiYXJpYS12YWx1ZW1heFwiIDEwMDtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJzdHlsZVwiXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgIChmdW4gcyAtPiBGb3JtYXQuc3ByaW50ZiBcIndpZHRoOiAlZCUlO1wiIHMpXG4gICAgICAgICAgICAgICBwZXJjZW50X3NpZ25hbCk7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJwcm9ncmVzcy1iYXJcIiBdO1xuICAgICAgICBdXG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC50eHRcbiAgICAgICAgICAoUmVhY3QuUy5iaW5kIHZhbHVlX3NpZ25hbCAoZnVuIHZhbHVlIC0+IFJlYWN0LlMuY29uc3QgdmFsdWUpKTtcbiAgICAgIF1cblxuICBsZXQgdGltZV9wcm9ncmVzc19iYXIgKCkgPVxuICAgIHByb2dyZXNzX2JhclxuICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBsZXQgdGltZV9wZXJjZW50IDogaW50IG9wdGlvbiA9XG4gICAgICAgICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAgICAgICAgKGZ1biAoc3RhdHVzIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgICAgICAgICAgICBzdGF0dXMuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlKVxuICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCB0aW1lX3BlcmNlbnQgOiBpbnQgPSBPcHRpb25fdXRpbC51bnNvbWUgMTAwIHRpbWVfcGVyY2VudCBpblxuICAgICAgICAgICB0aW1lX3BlcmNlbnQpXG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBsZXQgdGltZSA6IGZsb2F0IG9wdGlvbiA9XG4gICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAoZnVuIChzdGF0dXMgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIC0+XG4gICAgICAgICAgICAgICAgIHN0YXR1cy5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lKVxuICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCB0aW1lIDogZmxvYXQgPSBPcHRpb25fdXRpbC51bnNvbWUgMC4wIHRpbWUgaW5cbiAgICAgICAgICAgc3RyaW5nX29mX2Zsb2F0IHRpbWUpXG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuXG4gIGxldCBldmVudF9wcm9ncmVzc19iYXIgKCkgPVxuICAgIHByb2dyZXNzX2JhclxuICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBsZXQgZXZlbnRfcGVyY2VudGFnZSA6IGludCBvcHRpb24gPVxuICAgICAgICAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgICAgICAgIChmdW4gKHN0YXR1cyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbykgLT5cbiAgICAgICAgICAgICAgICAgc3RhdHVzLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2UpXG4gICAgICAgICAgICAgICBzaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGV2ZW50X3BlcmNlbnRhZ2UgOiBpbnQgPVxuICAgICAgICAgICAgIE9wdGlvbl91dGlsLnVuc29tZSAxMDAgZXZlbnRfcGVyY2VudGFnZVxuICAgICAgICAgICBpblxuICAgICAgICAgICBldmVudF9wZXJjZW50YWdlKVxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgICAgbGV0IGV2ZW50IDogaW50IG9wdGlvbiA9XG4gICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAoZnVuIChzdGF0dXMgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIC0+XG4gICAgICAgICAgICAgICAgIHN0YXR1cy5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudClcbiAgICAgICAgICAgICAgIHNpbXVsYXRpb25faW5mb1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgZXZlbnQgOiBpbnQgPSBPcHRpb25fdXRpbC51bnNvbWUgMCBldmVudCBpblxuICAgICAgICAgICBzdHJpbmdfb2ZfaW50IGV2ZW50KVxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxuICBsZXQgdHJhY2tlZF9ldmVudHMgc3RhdGUgPVxuICAgIGxldCB0cmFja2VkX2V2ZW50cyA6IGludCBvcHRpb24gPVxuICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAoZnVuIChzdGF0dXMgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIC0+XG4gICAgICAgICAgc3RhdHVzLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMpXG4gICAgICAgIHN0YXRlXG4gICAgaW5cbiAgICBtYXRjaCB0cmFja2VkX2V2ZW50cyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgdHJhY2tlZF9ldmVudHMgLT5cbiAgICAgIGlmIHRyYWNrZWRfZXZlbnRzID4gMCB0aGVuXG4gICAgICAgIFNvbWUgdHJhY2tlZF9ldmVudHNcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuXG4gIGxldCB0cmFja2VkX2V2ZW50c19jb3VudCAoKSA9XG4gICAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBtYXRjaCB0cmFja2VkX2V2ZW50cyBzaW11bGF0aW9uX2luZm8gd2l0aFxuICAgICAgICAgICB8IFNvbWUgdHJhY2tlZF9ldmVudHMgLT4gc3RyaW5nX29mX2ludCB0cmFja2VkX2V2ZW50c1xuICAgICAgICAgICB8IE5vbmUgLT4gXCIgXCIpXG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuXG4gIGxldCB0cmFja2VkX2V2ZW50c19sYWJlbCAoKSA9XG4gICAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBtYXRjaCB0cmFja2VkX2V2ZW50cyBzaW11bGF0aW9uX2luZm8gd2l0aFxuICAgICAgICAgICB8IFNvbWUgXyAtPiBcInRyYWNrZWQgZXZlbnRzXCJcbiAgICAgICAgICAgfCBOb25lIC0+IFwiIFwiKVxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxuICBsZXQgZWZmaWNpZW5jeV9kZXRhaWwgfmN1cnJlbnRfZXZlbnQgdCA9XG4gICAgbGV0IGFsbCA9XG4gICAgICBmbG9hdF9vZl9pbnRcbiAgICAgICAgKHQuQ291bnRlci5FZmZpY2llbmN5Lm5vX21vcmVfYmluYXJ5XG4gICAgICAgKyB0LkNvdW50ZXIuRWZmaWNpZW5jeS5ub19tb3JlX3VuYXJ5XG4gICAgICAgKyB0LkNvdW50ZXIuRWZmaWNpZW5jeS5jbGFzaGluZ19pbnN0YW5jZVxuICAgICAgICsgdC5Db3VudGVyLkVmZmljaWVuY3kudGltZV9jb3JyZWN0aW9uKVxuICAgIGluXG4gICAgbGV0IGV2ZW50cyA9IGZsb2F0X29mX2ludCBjdXJyZW50X2V2ZW50IGluXG4gICAgSHRtbC5wXG4gICAgICBbXG4gICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkBbJS4yZiUlIG9mIGV2ZW50IGxvb3BzIHdlcmUgcHJvZHVjdGl2ZS4ldEBdXCJcbiAgICAgICAgICAgICAoMTAwLiAqLiBldmVudHMgLy4gKGFsbCArLiBldmVudHMpKVxuICAgICAgICAgICAgIChmdW4gZiAtPiBpZiBhbGwgPiAwLiB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCJAIE51bGwgZXZlbnQgY2F1c2U6XCIpKTtcbiAgICAgIF1cbiAgICA6OiAoKGlmIHQuQ291bnRlci5FZmZpY2llbmN5Lm5vX21vcmVfdW5hcnkgPiAwIHRoZW5cbiAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgIChIdG1sLnBcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgIFwiVmFsaWQgZW1iZWRkaW5nIGJ1dCBubyBsb25nZXIgdW5hcnkgd2hlbiByZXF1aXJlZDogXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICUuMmYlJVwiXG4gICAgICAgICAgICAgICAgICAgICAgICgxMDAuXG4gICAgICAgICAgICAgICAgICAgICAgICouIGZsb2F0X29mX2ludCB0LkNvdW50ZXIuRWZmaWNpZW5jeS5ub19tb3JlX3VuYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgIC8uIGFsbCkpO1xuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgJCQgKChpZiB0LkNvdW50ZXIuRWZmaWNpZW5jeS5ub19tb3JlX2JpbmFyeSA+IDAgdGhlblxuICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgKEh0bWwucFxuICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJWYWxpZCBlbWJlZGRpbmcgYnV0IG5vdCBiaW5hcnkgd2hlbiByZXF1aXJlZDogJS4yZiUlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKDEwMC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKi4gZmxvYXRfb2ZfaW50IHQuQ291bnRlci5FZmZpY2llbmN5Lm5vX21vcmVfYmluYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8uIGFsbCkpO1xuICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgICAgJCQgKChpZiB0LkNvdW50ZXIuRWZmaWNpZW5jeS5jbGFzaGluZ19pbnN0YW5jZSA+IDAgdGhlblxuICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgKEh0bWwucFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJDbGFzaGluZyBpbnN0YW5jZTogJS4yZiUlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEwMC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi4gZmxvYXRfb2ZfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5Db3VudGVyLkVmZmljaWVuY3kuY2xhc2hpbmdfaW5zdGFuY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy4gYWxsKSk7XG4gICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICAgICAkJCAoKGlmIHQuQ291bnRlci5FZmZpY2llbmN5LnRpbWVfY29ycmVjdGlvbiA+IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgICAgKEh0bWwucFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQZXJ0dXJiYXRpb24gaW50ZXJydXB0aW5nIHRpbWUgYWR2YW5jZTogJS4yZiUlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEwMC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi4gZmxvYXRfb2ZfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5Db3VudGVyLkVmZmljaWVuY3kudGltZV9jb3JyZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8uIGFsbCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgICAgICAgICAgJCQgW10pKSkpXG5cbiAgbGV0IGRvbnRfZ2NfbWUgPSByZWYgW11cblxuICBsZXQgY29udGVudCAoKSA6IEh0bWxfdHlwZXMuZGl2X2NvbnRlbnQgVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9XG4gICAgbGV0IHN0YXRlX2xvZywgc2V0X3N0YXRlX2xvZyA9IFJlYWN0aXZlRGF0YS5STGlzdC5jcmVhdGUgW10gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgZG9udF9nY19tZSA6PVxuICAgICAgICBbXG4gICAgICAgICAgTHd0X3JlYWN0LlMubWFwX3NcbiAgICAgICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgc3RhdHVzIC0+XG4gICAgICAgICAgICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZWZmaWNpZW5jeVxuICAgICAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGVmZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudF9ldmVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdGl2ZURhdGEuUkxpc3Quc2V0IHNldF9zdGF0ZV9sb2dcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZmZpY2llbmN5X2RldGFpbCB+Y3VycmVudF9ldmVudCBlZmYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG4gICAgICAgICAgICAgICAgfnN0b3BwZWQ6KGZ1biBfIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3Quc2V0IHNldF9zdGF0ZV9sb2cgW10gaW5cbiAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICAoKSlcbiAgICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWw7XG4gICAgICAgIF1cbiAgICBpblxuXG4gICAgW1xuICAgICAgWyVodG1sXG4gICAgICAgIHt8XG4gICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBpZD1cInx9XG4gICAgICAgICAgaWRcbiAgICAgICAgICB7fFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cbiAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiPlxuICAgICAgICAgICAgfH1cbiAgICAgICAgICBbIGV2ZW50X3Byb2dyZXNzX2JhciAoKSBdXG4gICAgICAgICAge3xcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0zXCI+ZXZlbnRzPC9kaXY+XG4gICAgIDwvZGl2PlxuICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtOVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzXCI+XG4gICAgICAgICAgICB8fVxuICAgICAgICAgIFsgdGltZV9wcm9ncmVzc19iYXIgKCkgXVxuICAgICAgICAgIHt8XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtM1wiPnRpbWU8L2Rpdj5cbiAgICAgPC9kaXY+XG4gICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy05XCI+XG4gICAgICAgICAgIHx9XG4gICAgICAgICAgWyB0cmFja2VkX2V2ZW50c19jb3VudCAoKSBdXG4gICAgICAgICAge3xcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtM1wiPlxuICAgICAgICAgICB8fVxuICAgICAgICAgIFsgdHJhY2tlZF9ldmVudHNfbGFiZWwgKCkgXVxuICAgICAgICAgIHt8XG4gICAgICAgIDwvZGl2PlxuICAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInZpc2libGUtbWQtYmxvY2sgdmlzaWJsZS1sZy1ibG9ja1wiPlxufH1cbiAgICAgICAgICBbIFR5eG1sX2pzLlIuSHRtbC5kaXYgc3RhdGVfbG9nIF1cbiAgICAgICAgICB7fFxuPC9kaXY+XG48L2Rpdj5cbiAgIHx9XTtcbiAgICBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9ICgpXG5lbmRcblxubGV0IHN0b3BwZWRfYm9keSAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbDUuZWx0ID1cbiAgbGV0IHN0b3BwZWRfcm93ID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzXG4gICAgICAgICAgICAgICB+YV9jbGFzczpbIFwiZm9ybS1ncm91cFwiOyBcImZvcm0tZ3JvdXAtc21cIiBdXG4gICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uU1RPUFBFRCBdKTtcbiAgICAgICAgXVxuICAgICAgWyVodG1sXG4gICAgICAgIHt8XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMSBjb2wtbWQtMiBjb2wteHMtMiBjb250cm9sLWxhYmVsXCIgZm9yPVwifH1cbiAgICAgICAgICBJbnB1dFBsb3RQZXJpb2QuaWRcbiAgICAgICAgICB7fFwiPlBsb3QgcGVyaW9kPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBjb2wteHMtM1wiPnx9XG4gICAgICAgICAgKElucHV0UGxvdFBlcmlvZC5jb250ZW50ICgpKVxuICAgICAgICAgIHt8PC9kaXY+fH1dXG4gIGluXG4gIGxldCBwYXVzZWRfcm93ID0gRm9ybVBlcnR1cmJhdGlvbi5jb250ZW50ICgpIGluXG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzXG4gICAgICAgICAgICAgfmFfY2xhc3M6WyBcInBhbmVsLWJvZHlcIjsgXCJwYW5lbC1jb250cm9sc1wiIF1cbiAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uU1RPUFBFRDsgU3RhdGVfc2ltdWxhdGlvbi5QQVVTRUQgXSk7XG4gICAgICBdXG4gICAgKFslaHRtbFxuICAgICAgIHt8XG4gICAgICAgICA8Zm9ybSBjbGFzcz1cImZvcm0taG9yaXpvbnRhbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMSBjb2wtc20tMiBoaWRkZW4teHMgY29udHJvbC1sYWJlbFwiIGZvcj1cInx9XG4gICAgICAgICBJbnB1dFBhdXNlQ29uZGl0aW9uLmlkXG4gICAgICAgICB7fFwiPlBhdXNlIGlmPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBjb2wtc20tMyBjb2wteHMtNVwiPnx9XG4gICAgICAgICAoSW5wdXRQYXVzZUNvbmRpdGlvbi5jb250ZW50ICgpKVxuICAgICAgICAge3w8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOSBjb2wtbWQtOCBjb2wteHMtN1wiPnx9XG4gICAgICAgICAoRGl2RXJyb3JNZXNzYWdlLmNvbnRlbnQgKCkpXG4gICAgICAgICB7fDwvZGl2PlxuICAgICAgICAgIDwvZGl2Pnx9XG4gICAgICAgICBbIHN0b3BwZWRfcm93IF0ge3w8L2Zvcm0+fH1dXG4gICAgOjogcGF1c2VkX3JvdylcblxubGV0IGluaXRpYWxpemluZ19ib2R5ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sNS5lbHQgPVxuICBIdG1sLmRpdlxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlc1xuICAgICAgICAgICAgIH5hX2NsYXNzOlsgXCJwYW5lbC1ib2R5XCI7IFwicGFuZWwtY29udHJvbHNcIiBdXG4gICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLklOSVRBTElaSU5HIF0pO1xuICAgICAgXVxuICAgIFsgSHRtbC5lbnRpdHkgXCJuYnNwXCIgXVxuXG5sZXQgcnVubmluZ19ib2R5ICgpID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXNcbiAgICAgICAgICAgICB+YV9jbGFzczpbIFwicGFuZWwtYm9keVwiOyBcInBhbmVsLWNvbnRyb2xzXCIgXVxuICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5SVU5OSU5HIF0pO1xuICAgICAgXVxuICAgIChSdW5uaW5nUGFuZWxMYXlvdXQuY29udGVudCAoKSlcblxubGV0IGZvb3RlciAoKSA9XG4gIFslaHRtbFxuICAgIHt8XG4gICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtZm9vdGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICB8fVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlcyB+YV9jbGFzczpbIFwiY29sLW1kLTJcIjsgXCJjb2wteHMtNFwiIF1cbiAgICAgICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uU1RPUFBFRCBdKTtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAoQnV0dG9uU3RhcnQuY29udGVudCAoKSk7XG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzIH5hX2NsYXNzOlsgXCJjb2wtbWQtMlwiOyBcImNvbC14cy0zXCIgXVxuICAgICAgICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5QQVVTRUQgXSk7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgKEJ1dHRvbkNvbnRpbnVlLmNvbnRlbnQgKCkpO1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlcyB+YV9jbGFzczpbIFwiY29sLW1kLTJcIjsgXCJjb2wteHMtM1wiIF1cbiAgICAgICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uUEFVU0VEIF0pO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIChCdXR0b25PdXRwdXRzLmNvbnRlbnQgKCkpO1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlcyB+YV9jbGFzczpbIFwiY29sLW1kLTJcIjsgXCJjb2wteHMtM1wiIF1cbiAgICAgICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uUEFVU0VEIF0pO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIChCdXR0b25UcmFjZS5jb250ZW50ICgpKTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImNvbC1tZC0yXCI7IFwiY29sLXhzLTRcIiBdXG4gICAgICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlJVTk5JTkcgXSk7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgKEJ1dHRvblBhdXNlLmNvbnRlbnQgKCkpO1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlcyB+YV9jbGFzczpbIFwiY29sLXhzLTJcIjsgXCJjb2wtc20tMVwiIF1cbiAgICAgICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uUEFVU0VEOyBTdGF0ZV9zaW11bGF0aW9uLlJVTk5JTkcgXSk7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgKEJ1dHRvbkNsZWFyLmNvbnRlbnQgKCkpO1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMVwiOyBcImNvbC14cy0zXCIgXSBdXG4gICAgICAgICAgKERpdlN0YXR1c0luZGljYXRvci5jb250ZW50ICgpIEAgWyBIdG1sLmVudGl0eSBcIm5ic3BcIiBdKTtcbiAgICAgIF1cbiAgICAgIHt8XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgIDwvZGl2PlxuICB8fV1cblxubGV0IGNvbnRlbnQgKCkgPVxuICBIdG1sLmRpdlxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgIChSZWFjdC5TLmJpbmQgU3RhdGVfcHJvamVjdC5tb2RlbCAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgICAgICBtYXRjaCBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX2N1cnJlbnRfaWQgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IFJlYWN0LlMuY29uc3QgWyBcImhpZGVcIiBdXG4gICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBSZWFjdC5TLmNvbnN0IFsgXCJwYW5lbFwiOyBcInBhbmVsLWRlZmF1bHRcIiBdKSk7XG4gICAgICBdXG4gICAgWyBzdG9wcGVkX2JvZHkgKCk7IGluaXRpYWxpemluZ19ib2R5ICgpOyBydW5uaW5nX2JvZHkgKCk7IGZvb3RlciAoKSBdXG5cbmxldCBvbmxvYWQgKCkgOiB1bml0ID1cbiAgbGV0ICgpID0gRm9ybVBlcnR1cmJhdGlvbi5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gSW5wdXRQYXVzZUNvbmRpdGlvbi5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gSW5wdXRQbG90UGVyaW9kLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBEaXZFcnJvck1lc3NhZ2Uub25sb2FkICgpIGluXG4gIGxldCAoKSA9IEJ1dHRvblN0YXJ0Lm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBCdXR0b25QYXVzZS5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gQnV0dG9uQ29udGludWUub25sb2FkICgpIGluXG4gIGxldCAoKSA9IEJ1dHRvblRyYWNlLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBCdXR0b25PdXRwdXRzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBCdXR0b25DbGVhci5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gRGl2U3RhdHVzSW5kaWNhdG9yLm9ubG9hZCAoKSBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcblxubGV0IG5hdmxpICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5cbmxldCBjb250ZW50ICgpID1cbiAgWyVodG1sXG4gICAge3xcbjxoMj5UaGUgS2FwcGEgTGFuZ3VhZ2U8L2gyPlxuPHA+Q29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRjxwPlxuPHA+S2FwcGEgTGFuZ3VhZ2Ugc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMC5odG1sXCI+R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMzwvYT4uXG4gU291cmNlIGNvZGUgaXMgcHVibGlzaGVkIG9uIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vS2FwcGEtRGV2L0thU2ltXCI+aHR0cHM6Ly9naXRodWIuY29tL0thcHBhLURldi9LYVNpbTwvYT4uPC9wPlxuXG48cD5UaGlzIHVzZXIgaW50ZXJmYWNlIHdhcyBkZXZlbG9wZWQgaW4gdGhlIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL2ZvbnRhbmEuaG1zLmhhcnZhcmQuZWR1XCI+Rm9udGFuYSBMYWI8L2E+IHVuZGVyIERBUlBBIGdyYW50IFc5MTFORi0xNC0xLTAzNjcuIFZpc3VhbGl6YXRpb25zIHdlcmUgZGV2ZWxvcGVkIGluIHRoZSA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9jcmVhdGl2ZWNvZGluZy5zb2UudWNzYy5lZHUvbmV3cy5waHBcIj5DcmVhdGl2ZSBDb2RpbmcgTGFiPC9hPiBvZiBBbmd1cyBGb3JiZXM8L3A+XG5cbjxwPlJlZmVyZW5jZSBtYW51YWwgaXMgb25saW5lIGF0IDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3d3dy5rYXBwYWxhbmd1YWdlLm9yZ1wiPmh0dHBzOi8vd3d3LmthcHBhbGFuZ3VhZ2Uub3JnPC9hPi48L3A+XG5cbjx1bD5cbjxsaT5Xcml0dGVuIGluIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vb2NhbWwub3JnXCI+XG4gIDwhLS08aW1nIHNyYz1cImh0dHA6Ly9vY2FtbC5vcmcvbG9nby9Db2xvdXIvU1ZHL2NvbG91ci1sb2dvLnN2Z1wiXG4gICAgICAgYWx0PVwiLS0+T0NhbWw8IS0tXCJcbiAgICAgICBzdHlsZT1cImJvcmRlcjogbm9uZTsgd2lkdGg6IDE1MHB4O1wiIC8+IC0tPlxuPC9hPi4gQ29tcGlsZWQgYnkgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cIj5qc19vZl9vY2FtbDwvYT4uPC9saT5cbjxsaT5UZXh0IGVkaXRvciB1c2VkIGlzIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vY29kZW1pcnJvci5uZXRcIj5Db2RlTWlycm9yPC9hPi4gSXQgY29tZXMgd2l0aCBhIGxvdCBvZiBmZWF0dXJlcy4gQ2hlY2sgb3V0IGl0cyA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2NvZGVtaXJyb3IubmV0L2RvYy9tYW51YWwuaHRtbCNjb21tYW5kc1wiPm1hbnVhbDwvYT4uPC9saT5cbjxsaT5WaXN1YWxpemF0aW9uIHJlbGllcyBvbiA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9kM2pzLm9yZ1wiPmQzPC9hPi48L2xpPlxuPGxpPkxheW91dCB1c2VzIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vZ2V0Ym9vdHN0cmFwLmNvbVwiPmJvb3RzdHJhcDwvYT4gYW5kIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL2pxdWVyeXVpLmNvbVwiPmpRdWVyeTwvYT4uPC9saT5cbjwvdWw+XG5cbjxoMz5Ob21pbmFsIGNvbnRyaWJ1dGlvbjwvaDM+XG48ZGwgY2xhc3M9XCJkbC1ob3Jpem9udGFsXCI+PGR0PlBpZXJyZSBCb3V0aWxsaWVyPC9kdD48ZGQ+R2VuZXJhbCBkZXNpZ24gYW5kIG1haW50ZW5hbmNlLCBwcm90b2NvbHM8L2RkPjxkdD5YaW5nIExpPC9kdD48ZGQ+T3V0cHV0cyB2aXN1YWxpemF0aW9ucywgR2VuZXJhbCBsYXlvdXQ8L2RkPjxkdD5NdXRhYW1iYSBNYWFzaGE8L2R0PjxkZD5UcmFuc3BhcmVudCBtdWx0aSBiYWNrZW5kIGFyY2hpdGVjdHVyZSwgcHJvdG9jb2xzLCBPdXRwdXQgdmlzdWFsaXphdGlvbnMsIEdlbmVyYWwgbGF5b3V0PC9kZD48L2RsPlxufH1dXG5cbmxldCBvbmxvYWQgKCkgPSAoKVxubGV0IG9ucmVzaXplICgpID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEpzIHV0aWwgKilcbigqIHJlZmVyZW5jZXNcbiAgIGh0dHA6Ly90b3NzLnNvdXJjZWZvcmdlLm5ldC9vY2FtbC5odG1sXG4gICBodHRwOi8vcGVwcGVybWludC5qcC90ZW1wL2FvL2FvLm1sXG4qKVxubGV0IHByb3RvdHlwZSA9IEpzLlVuc2FmZS5qc19leHByIFwiQ29kZU1pcnJvci5wcm90b3R5cGVcIlxuXG5sZXQgY3JlYXRlX2hhbmRsZXIgbGFiZWwgPVxuICBsZXQgaGVhZCA6IGNoYXIgPSBDaGFyLnVwcGVyY2FzZV9hc2NpaSAoU3RyaW5nLmdldCBsYWJlbCAwKSBpblxuICBsZXQgdGFpbCA6IHN0cmluZyA9IFN0cmluZy5zdWIgbGFiZWwgMSAoU3RyaW5nLmxlbmd0aCBsYWJlbCAtIDEpIGluXG4gIGxldCBvbl9sYWJlbCA9IFwib25cIiBeIENoYXIuZXNjYXBlZCBoZWFkIF4gdGFpbCBpblxuICBsZXQgd3JhcHBlciBoYW5kbGVyID0gKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ0aGlzXCIpIyNvbiBsYWJlbCBoYW5kbGVyIGluXG4gIGxldCAoKSA9IEpzLlVuc2FmZS5zZXQgcHJvdG90eXBlIChKcy5zdHJpbmcgb25fbGFiZWwpIHdyYXBwZXIgaW5cbiAgKClcblxuKCogYWRkIG9uIGhhbmRsZXJzIHRvIHRoZSBwcm90b3R5cGVzIHNvIHRoZXkgY2FuIGJlIHN0cm9uZ2x5IHR5cGVkICopXG5sZXQgKCkgPVxuICBMaXN0Lml0ZXIgY3JlYXRlX2hhbmRsZXJcbiAgICBbXG4gICAgICBcImJlZm9yZUNoYW5nZVwiO1xuICAgICAgXCJiZWZvcmVDdXJzb3JFbnRlclwiO1xuICAgICAgXCJiZWZvcmVTZWxlY3Rpb25DaGFuZ2VcIjtcbiAgICAgIFwiYmx1clwiO1xuICAgICAgXCJjaGFuZ2VzXCI7XG4gICAgICBcImNsZWFyXCI7XG4gICAgICBcImNvbnRleHRtZW51XCI7XG4gICAgICBcImNvcHlcIjtcbiAgICAgIFwiY3Vyc29yQWN0aXZpdHlcIjtcbiAgICAgIFwiY3V0XCI7XG4gICAgICBcImRibGNsaWNrXCI7XG4gICAgICBcImRlbGV0ZVwiO1xuICAgICAgXCJkcmFnZW50ZXJcIjtcbiAgICAgIFwiZHJhZ2xlYXZlXCI7XG4gICAgICBcImRyYWdvdmVyXCI7XG4gICAgICBcImRyYWdzdGFydFwiO1xuICAgICAgXCJkcm9wXCI7XG4gICAgICBcImVsZWN0cmljSW5wdXRcIjtcbiAgICAgIFwiZm9jdXNcIjtcbiAgICAgIFwiZ3V0dGVyQ2xpY2tcIjtcbiAgICAgIFwiZ3V0dGVyQ29udGV4dE1lbnVcIjtcbiAgICAgIFwiaGlkZVwiO1xuICAgICAgXCJpbnB1dFJlYWRcIjtcbiAgICAgIFwia2V5SGFuZGxlZFwiO1xuICAgICAgXCJrZXlwcmVzc1wiO1xuICAgICAgXCJrZXl1cFwiO1xuICAgICAgXCJtb3VzZWRvd25cIjtcbiAgICAgIFwicGFzdGVcIjtcbiAgICAgIFwicmVkcmF3XCI7XG4gICAgICBcInJlbmRlckxpbmVcIjtcbiAgICAgIFwic2Nyb2xsXCI7XG4gICAgICBcInNjcm9sbEN1cnNvckludG9WaWV3XCI7XG4gICAgICBcInN3YXBEb2NcIjtcbiAgICAgIFwidG91Y2hzdGFydFwiO1xuICAgICAgXCJ1bmhpZGVcIjtcbiAgICAgIFwidXBkYXRlXCI7XG4gICAgICBcInZpZXdwb3J0Q2hhbmdlXCI7XG4gICAgICBcImNoYW5nZVwiO1xuICAgICAgXCJrZXlkb3duXCI7XG4gICAgXVxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBjaCA6IGludCBKcy5yZWFkb25seV9wcm9wXG4gIG1ldGhvZCBsaW5lIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGRpbWVuc2lvbiA9IG9iamVjdFxuICBtZXRob2QgbGVmdCA6IGludCBKcy5yZWFkb25seV9wcm9wXG4gIG1ldGhvZCByaWdodCA6IGludCBKcy5yZWFkb25seV9wcm9wXG4gIG1ldGhvZCB0b3AgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICBtZXRob2QgYm90dG9tIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgcG9zaXRpb24gOiAoaW50IC0+IGludCAtPiBwb3NpdGlvbiBKcy50KSBKcy5jb25zdHIgPVxuICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJDb2RlTWlycm9yXCIpIyMuX1Bvc1xuXG50eXBlIHNldmVyaXR5ID0gRXJyb3IgfCBXYXJuaW5nXG5cbmNsYXNzIHR5cGUgbGludCA9IG9iamVjdFxuICBtZXRob2QgbWVzc2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgbWV0aG9kIHNldmVyaXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBtZXRob2QgZnJvbSA6IHBvc2l0aW9uIEpzLnQgSnMucHJvcFxuICBtZXRob2QgdG9fIDogcG9zaXRpb24gSnMudCBKcy5wcm9wXG5lbmRcblxubGV0IGNvbnN0cnVjdG9yX2xpbnQgOiBsaW50IEpzLnQgSnMuY29uc3RyID0gSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIk9iamVjdFwiXG5cbmxldCBjcmVhdGVfbGludCB+KG1lc3NhZ2UgOiBzdHJpbmcpIH4oc2V2ZXJpdHkgOiBzZXZlcml0eSlcbiAgICB+KGZyb20gOiBwb3NpdGlvbiBKcy50KSB+KHRvXyA6IHBvc2l0aW9uIEpzLnQpIDogbGludCBKcy50ID1cbiAgbGV0IHJlc3VsdCA9IG5ldyVqcyBjb25zdHJ1Y3Rvcl9saW50IGluXG4gIGxldCAoKSA9IHJlc3VsdCMjLm1lc3NhZ2UgOj0gSnMuc3RyaW5nIG1lc3NhZ2UgaW5cbiAgbGV0ICgpID1cbiAgICByZXN1bHQjIy5zZXZlcml0eSA6PVxuICAgICAgbWF0Y2ggc2V2ZXJpdHkgd2l0aFxuICAgICAgfCBFcnJvciAtPiBKcy5zdHJpbmcgXCJlcnJvclwiXG4gICAgICB8IFdhcm5pbmcgLT4gSnMuc3RyaW5nIFwid2FybmluZ1wiXG4gIGluXG4gIGxldCAoKSA9IHJlc3VsdCMjLmZyb20gOj0gZnJvbSBpblxuICBsZXQgKCkgPSByZXN1bHQjIy50b18gOj0gdG9fIGluXG4gIHJlc3VsdFxuXG5jbGFzcyB0eXBlIGNoYW5nZSA9IG9iamVjdFxuICBtZXRob2QgZnJvbSA6IHBvc2l0aW9uIEpzLnQgSnMucHJvcFxuICBtZXRob2QgdG9fIDogcG9zaXRpb24gSnMudCBKcy5wcm9wXG4gIG1ldGhvZCB0ZXh0IDogSnMuc3RyaW5nX2FycmF5IEpzLnQgSnMucHJvcFxuICBtZXRob2QgcmVtb3ZlZCA6IHN0cmluZyBKcy50IEpzLnByb3BcbiAgbWV0aG9kIG9yaWdpbiA6IHN0cmluZyBKcy50IEpzLnByb3BcbmVuZFxuXG5sZXQgY29uc3RydWN0b3JfY2hhbmdlIDogY2hhbmdlIEpzLnQgSnMuY29uc3RyID0gSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIk9iamVjdFwiXG5sZXQgY3JlYXRlX2NoYW5nZSAoKSA6IGNoYW5nZSBKcy50ID0gbmV3JWpzIGNvbnN0cnVjdG9yX2NoYW5nZVxuXG5jbGFzcyB0eXBlIGNvZGVtaXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIGdldFZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMubWV0aFxuICBtZXRob2Qgc2V0VmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGZvY3VzIDogdW5pdCBKcy5tZXRoXG5cbiAgKCogUHJvZ3JhbW1hdGljYWxseSBzZXQgdGhlIHNpemUgb2YgdGhlIGVkaXRvciAob3ZlcnJpZGluZyB0aGVcbiAgICAgYXBwbGljYWJsZSBDU1MgcnVsZXMpLiB3aWR0aCBhbmQgaGVpZ2h0IGNhbiBiZSBlaXRoZXIgbnVtYmVyc1xuICAgICAoaW50ZXJwcmV0ZWQgYXMgcGl4ZWxzKSBvciBDU1MgdW5pdHMgKFwiMTAwJVwiLCBmb3IgZXhhbXBsZSkuXG4gICAgIFlvdSBjYW4gcGFzcyBudWxsIGZvciBlaXRoZXIgb2YgdGhlbSB0byBpbmRpY2F0ZSB0aGF0IHRoYXRcbiAgICAgZGltZW5zaW9uIHNob3VsZCBub3QgYmUgY2hhbmdlZC5cbiAgKilcbiAgbWV0aG9kIHNldFNpemUgOiBpbnQgSnMudCBKcy5vcHQgLT4gaW50IEpzLnQgSnMub3B0IC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIFNjcm9sbCB0aGUgZWRpdG9yIHRvIGEgZ2l2ZW4gKHBpeGVsKSBwb3NpdGlvbi4gQm90aCBhcmd1bWVudHNcbiAgICAgbWF5IGJlIGxlZnQgYXMgbnVsbCBvciB1bmRlZmluZWQgdG8gaGF2ZSBubyBlZmZlY3QuICopXG4gIG1ldGhvZCBzY3JvbGxUbyA6IGludCBKcy5vcHQgLT4gaW50IEpzLm9wdCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgY2hhckNvb3JkcyA6XG4gICAgcG9zaXRpb24gSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gZGltZW5zaW9uIEpzLnQgSnMubWV0aFxuXG4gIG1ldGhvZCBnZXRTY3JvbGxlckVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMubWV0aFxuICBtZXRob2Qgb24gOiBKcy5qc19zdHJpbmcgSnMudCAtPiAoRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBmaXJlZCB3aGVuIGNvbnRlbnQgaXMgY2hhbmdlZCAqKVxuICBtZXRob2Qgb25DaGFuZ2UgOiAoY29kZW1pcnJvciBKcy50IC0+IGNoYW5nZSBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGJhdGNoZWQgY2hhbmdlZCBvcGVyYXRpb24gKilcbiAgbWV0aG9kIG9uQ2hhbmdlcyA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBjaGFuZ2UgSnMuanNfYXJyYXkgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBiZWZvcmUgYSBjaGFuZ2UgaXMgYXBwbGllZCAqKVxuICBtZXRob2Qgb25CZWZvcmVDaGFuZ2UgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gY2hhbmdlIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogY3Vyc29yIG1vdmVzLCBvciBhbnkgY2hhbmdlICopXG4gIG1ldGhvZCBvbkN1cnNvckFjdGl2aXR5IDogKGNvZGVtaXJyb3IgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiB3aGVuIG5ldyBpbnB1dCBpcyByZWFkICopXG4gIG1ldGhvZCBvbktleUhhbmRsZWQgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gSnMuanNfc3RyaW5nIC0+IERvbV9odG1sLmV2ZW50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIHdoZW4gbmV3IGlucHV0IGlzIHJlYWQgKilcbiAgbWV0aG9kIG9uSW5wdXRSZWFkIDogKGNvZGVtaXJyb3IgSnMudCAtPiBjaGFuZ2UgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiB3aGVuIHRleHQgbWF0Y2hlcyBlbGVjdHJpYyBwYXR0ZXJuICopXG4gIG1ldGhvZCBvbkVsZWN0cmljSW5wdXQgOiAoY29kZW1pcnJvciBKcy50IC0+IGludCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGJlZm9yZSBhIHNlbGVjdGlvbiBpcyBtb3ZlZCBUT0RPICopXG4gIG1ldGhvZCBvbkJlZm9yZVNlbGVjdGlvbkNoYW5nZSA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiAnYSAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiB0aGUgdmlldyBwb3J0IGNoYW5nZWQgKilcbiAgbWV0aG9kIG9uVmlld3BvcnRDaGFuZ2UgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gaW50IEpzLnQgLT4gaW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogIGRvY3VtZW50IHN3YXBwZWQgKilcbiAgbWV0aG9kIG9uU3dhcERvYyA6IChjb2RlbWlycm9yIEpzLnQgLT4gJ2EgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogZ3V0dGVyIGNsaWNrZWQgKilcbiAgbWV0aG9kIG9uR3V0dGVyQ2xpY2sgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gaW50IEpzLnQgLT4gSnMuanNfc3RyaW5nIC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT5cbiAgICB1bml0IEpzLm1ldGhcblxuICAoKiBjb250ZXh0IG1lbnUgZXZlbnQgZnJvbSBndXR0ZXIgKilcbiAgbWV0aG9kIG9uR3V0dGVyQ29udGV4dE1lbnUgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gaW50IEpzLnQgLT4gSnMuanNfc3RyaW5nIC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT5cbiAgICB1bml0IEpzLm1ldGhcblxuICAoKiBmb2N1cyAqKVxuICBtZXRob2Qgb25Gb2N1cyA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogYmx1ciAqKVxuICBtZXRob2Qgb25CbHVyIDogKGNvZGVtaXJyb3IgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBzY3JvbGwgKilcbiAgbWV0aG9kIG9uU2Nyb2xsIDogKGNvZGVtaXJyb3IgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBjdXJzb3Igc2Nyb2xsZWQgaW4gdmlldyopXG4gIG1ldGhvZCBvblNjcm9sbEN1cnNvckludG9WaWV3IDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogZG9tIHVwZGF0ZWQgKilcbiAgbWV0aG9kIG9uVXBkYXRlIDogKGNvZGVtaXJyb3IgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBsaW5lIHJlbmRlcmVkICopXG4gIG1ldGhvZCBvblJlbmRlckxpbmUgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gJ2EgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25Nb3VzZWRvd24gOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25EYmxjbGljayA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvblRvdWNoc3RhcnQgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25Db250ZXh0bWVudSA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbktleWRvd24gOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25LZXlwcmVzcyA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbktleXVwIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uQ3V0IDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uQ29weSA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvblBhc3RlIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRHJhZ3N0YXJ0IDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRHJhZ2VudGVyIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRHJhZ292ZXIgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25EcmFnbGVhdmUgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25Ecm9wIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRGVsZXRlIDogKHVuaXQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBvbkJlZm9yZUN1cnNvckVudGVyIDogKHVuaXQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBvbkNsZWFyIDogKHBvc2l0aW9uIEpzLnQgLT4gcG9zaXRpb24gSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIG9uSGlkZSA6ICh1bml0IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2Qgb25VbmhpZGUgOiAodW5pdCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIG9uUmVkcmF3IDogKHVuaXQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBzZXRDdXJzb3IgOiBwb3NpdGlvbiBKcy50IC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2QgZ2V0Q3Vyc29yIDogcG9zaXRpb24gSnMudCBKcy5tZXRoXG4gIG1ldGhvZCBzZXRTZWxlY3Rpb24gOiBwb3NpdGlvbiBKcy50IC0+IHBvc2l0aW9uIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBwZXJmb3JtTGludCA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgbGludF9jb25maWd1cmF0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBkZWxheSA6IGludCBKcy50IEpzLnByb3BcbiAgbWV0aG9kIGFzeW5jIDogYm9vbCBKcy50IEpzLnByb3BcblxuICBtZXRob2QgZ2V0QW5ub3RhdGlvbnMgOlxuICAgIChKcy5qc19zdHJpbmcgLT5cbiAgICBsaW50X2NvbmZpZ3VyYXRpb24gSnMudCAtPlxuICAgIGNvZGVtaXJyb3IgSnMudCAtPlxuICAgIGxpbnQgSnMudCBKcy5qc19hcnJheSBKcy50KVxuICAgIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGxpbnRPbkNoYW5nZSA6IGJvb2wgSnMudCBKcy5wcm9wXG5lbmRcblxubGV0IGNvbnN0cnVjdG9yX2xpbnRfY29uZmlndXJhdGlvbiA6IGxpbnRfY29uZmlndXJhdGlvbiBKcy50IEpzLmNvbnN0ciA9XG4gIEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJPYmplY3RcIlxuXG5sZXQgY3JlYXRlX2xpbnRfY29uZmlndXJhdGlvbiAoKSA6IGxpbnRfY29uZmlndXJhdGlvbiBKcy50ID1cbiAgbmV3JWpzIGNvbnN0cnVjdG9yX2xpbnRfY29uZmlndXJhdGlvblxuXG5jbGFzcyB0eXBlIGNvbmZpZ3VyYXRpb24gPSBvYmplY3RcbiAgKCogVGhlIHN0YXJ0aW5nIHZhbHVlIG9mIHRoZSBlZGl0b3IuICopXG4gIG1ldGhvZCB2YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAoKiBUaGUgbW9kZSB0byB1c2UuICopXG4gIG1ldGhvZCBtb2RlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICgqIEV4cGxpY2l0bHkgc2V0IHRoZSBsaW5lIHNlcGFyYXRvciBmb3IgdGhlIGVkaXRvci4gICopXG4gIG1ldGhvZCBsaW5lU2VwYXJhdG9yIDogSnMuanNfc3RyaW5nIEpzLm9wdCBKcy50IEpzLnByb3BcblxuICAoKiBUaGUgdGhlbWUgdG8gc3R5bGUgdGhlIGVkaXRvciB3aXRoLiAqKVxuICBtZXRob2QgdGhlbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgKCogSG93IG1hbnkgc3BhY2VzIGEgYmxvY2sgc2hvdWxkIGJlIGluZGVudGVkLiAgKilcbiAgbWV0aG9kIGluZGVudFVuaXQgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogV2hldGhlciB0byB1c2UgdGhlIGNvbnRleHQtc2Vuc2l0aXZlIGluZGVudGF0aW9uICopXG4gIG1ldGhvZCBzbWFydEluZGVudCA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogVGhlIHdpZHRoIG9mIGEgdGFiIGNoYXJhY3Rlci4gKilcbiAgbWV0aG9kIHRhYlNpemUgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogVGhlIGZpcnN0IE4qdGFiU2l6ZSBpbiBpbmRlbnRhdGlvbiBzaG91bGQgTiB0YWJzLiAqKVxuICBtZXRob2QgaW5kZW50V2l0aFRhYnMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIFRoZSBlZGl0b3Igc2hvdWxkIHJlLWluZGVudCB0aGUgY3VycmVudCBsaW5lLiAqKVxuICBtZXRob2QgZWxlY3RyaWNDaGFycyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogQSByZWd1bGFyIGV4cHJlc3Npb24gdXNlZCB0byBkZXRlcm1pbmUgc3BlY2lhbCBwbGFjZWhvbGRlci4gKilcbiAgbWV0aG9kIHNwZWNpYWxDaGFycyA6IEpzLnJlZ0V4cCBKcy50IEpzLnByb3BcblxuICAoKiBBIGZ1bmN0aW9uIGlkZW50aWZpZXMgc3BlY2lhbENoYXJzIGFuZCBwcm9kdWNlcyBhIERPTSBub2RlICopXG4gIG1ldGhvZCBzcGVjaWFsQ2hhclBsYWNlaG9sZGVyIDogKGludCAtPiBEb21faHRtbC5lbGVtZW50IEpzLnQpIEpzLnByb3BcblxuICAoKiBIb3Jpem9udGFsIGN1cnNvciBtb3ZlbWVudCB0aHJvdWdoIHJpZ2h0LXRvLWxlZnQuICopXG4gIG1ldGhvZCBydGxNb3ZlVmlzdWFsbHkgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIENvbmZpZ3VyZXMgdGhlIGtleSBtYXAgdG8gdXNlLiAqKVxuICBtZXRob2Qga2V5TWFwIDogc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICgqIHNwZWNpZnkgZXh0cmEga2V5IGJpbmRpbmdzIGZvciB0aGUgZWRpdG9yICopXG4gIG1ldGhvZCBleHRyYUtleXMgOiAnYSBKcy5wcm9wXG5cbiAgKCogU2Nyb2xsIG9yIHdyYXAgZm9yIGxvbmcgbGluZXMgKilcbiAgbWV0aG9kIGxpbmVXcmFwcGluZyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogIFNob3cgbGluZSBudW1iZXJzIHRvIHRoZSBsZWZ0IG9mIHRoZSBlZGl0b3IgKilcbiAgbWV0aG9kIGxpbmVOdW1iZXJzIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBBdCB3aGljaCBudW1iZXIgdG8gc3RhcnQgY291bnRpbmcgbGluZXMuIERlZmF1bHQgaXMgMS4gKilcbiAgbWV0aG9kIGZpcnN0TGluZU51bWJlciA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBBIGZ1bmN0aW9uIHVzZWQgdG8gZm9ybWF0IGxpbmUgbnVtYmVycy4gKilcbiAgbWV0aG9kIGxpbmVOdW1iZXJGb3JtYXR0ZXIgOiAoaW50IEpzLnQgLT4gSnMuanNfc3RyaW5nKSBKcy50IEpzLnByb3BcblxuICAoKiBBZGQgZXh0cmEgZ3V0dGVycyAqKVxuICBtZXRob2QgZ3V0dGVycyA6IEpzLnN0cmluZ19hcnJheSBKcy50IEpzLnByb3BcblxuICAoKiBHdXR0ZXIgc2Nyb2xscyBhbG9uZyB3aXRoIHRoZSBjb250ZW50IGhvcml6b250YWxseSAqKVxuICBtZXRob2QgZml4ZWRHdXR0ZXIgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIENob29zZXMgYSBzY3JvbGxiYXIgaW1wbGVtZW50YXRpb24uICopXG4gIG1ldGhvZCBzY3JvbGxiYXJTdHlsZSA6IHN0cmluZyBKcy50IEpzLnByb3BcblxuICAoKiBjb3ZlciBndXR0ZXIgd2l0aCB3aXRoIGNsYXNzIENvZGVNaXJyb3ItZ3V0dGVyLWZpbGxlci4gKilcbiAgbWV0aG9kIGNvdmVyR3V0dGVyTmV4dFRvU2Nyb2xsYmFyIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBTZWxlY3RzIHRoZSB3YXkgQ29kZU1pcnJvciBoYW5kbGVzIGlucHV0IGFuZCBmb2N1cy4gKilcbiAgbWV0aG9kIGlucHV0U3R5bGUgOiBzdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgKCogZGlzYWJsZSBlZGl0aW5nIG9mIHRoZSBlZGl0b3IgY29udGVudCAqKVxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIHRoZSBjdXJzb3Igc2hvdWxkIGJlIGRyYXduIHdoZW4gYSBzZWxlY3Rpb24gaXMgYWN0aXZlLiAqKVxuICBtZXRob2Qgc2hvd0N1cnNvcldoZW5TZWxlY3RpbmcgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIGNvcHkgb3IgY3V0IHdoZW4gdGhlcmUgaXMgbm8gc2VsZWN0aW9uIHdpbGwgY29weSBvciBjdXQgd2hvbGUgbGluZXMgKilcbiAgbWV0aG9kIGxpbmVXaXNlQ29weUN1dCA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogV2hlbiBwYXN0aW5nIHNvbWV0aGluZyBmcm9tIGFuIGV4dGVybmFsIHNvdXJjZSAobm90IGZyb20gdGhlXG4gICAgIGVkaXRvciBpdHNlbGYpLCBpZiB0aGUgbnVtYmVyIG9mIGxpbmVzIG1hdGNoZXMgdGhlIG51bWJlciBvZlxuICAgICBzZWxlY3Rpb24sIENvZGVNaXJyb3Igd2lsbCBieSBkZWZhdWx0IGluc2VydCBvbmUgbGluZSBwZXJcbiAgICAgc2VsZWN0aW9uLiBZb3UgY2FuIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgdGhhdFxuICAgICBiZWhhdmlvci4gKilcbiAgbWV0aG9kIHBhc3RlTGluZXNQZXJTZWxlY3Rpb24gOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIERldGVybWluZXMgd2hldGhlciBtdWx0aXBsZSBzZWxlY3Rpb25zIGFyZSBqb2luZWQgYXMgc29vbiBhc1xuICAgICB0aGV5IHRvdWNoICh0aGUgZGVmYXVsdCkgb3Igb25seSB3aGVuIHRoZXkgb3ZlcmxhcCAodHJ1ZSkuICopXG4gIG1ldGhvZCBzZWxlY3Rpb25zTWF5VG91Y2ggOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIG1heGltdW0gbnVtYmVyIG9mIHVuZG8gKilcbiAgbWV0aG9kIHVuZG9EZXB0aCA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBtaWxsaXNlY29uZHMgb2YgaW5hY3Rpdml0eSB0byBjcmVhdGUgYSBuZXcgaGlzdG9yeSBldmVudCAqKVxuICBtZXRob2QgaGlzdG9yeUV2ZW50RGVsYXkgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogdGFiIGluZGV4IG9mIGVkaXRvciAqKVxuICBtZXRob2QgdGFiaW5kZXggOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogQ29kZU1pcnJvciBmb2N1cyBpdHNlbGYgb24gaW5pdGlhbGl6YXRpb24gKilcbiAgbWV0aG9kIGF1dG9mb2N1cyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogZW5hYmxlIGRyYWctYW5kLWRyb3AgKilcbiAgbWV0aG9kIGRyYWdEcm9wIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiB3aGVuIHNldCBmaWxlcyB3aXQgbWltZSB0eXBlIGNhbiBiZSBkcm9wcGVkIGludG8gdGhlIGVkaXRvciAqKVxuICBtZXRob2QgYWxsb3dEcm9wRmlsZVR5cGVzIDogSnMuc3RyaW5nX2FycmF5IEpzLm9wdCBKcy50IEpzLnByb3BcblxuICAoKiBIYWxmLXBlcmlvZCBpbiBtaWxsaXNlY29uZHMgdXNlZCBmb3IgY3Vyc29yIGJsaW5raW5nLiAqKVxuICBtZXRob2QgY3Vyc29yQmxpbmtSYXRlIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIEhvdyBtdWNoIGV4dHJhIHNwYWNlIHRvIGFsd2F5cyBrZWVwIGFib3ZlIGFuZCBiZWxvdyB0aGUgY3Vyc29yICopXG4gIG1ldGhvZCBjdXJzb3JTY3JvbGxNYXJnaW4gOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogRGV0ZXJtaW5lcyB0aGUgaGVpZ2h0IG9mIHRoZSBjdXJzb3IuICopXG4gIG1ldGhvZCBjdXJzb3JIZWlnaHQgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogdGhlIGNvbnRleHQgbWVudSBpcyBvcGVuZWQgd2l0aCBhIGNsaWNrIG91dHNpZGUgb2YgdGhlXG4gICAgIGN1cnJlbnQgc2VsZWN0aW9uLCBtb3ZlIGN1cnNvciB0byB0aGUgcG9pbnQgb2YgdGhlIGNsaWNrKilcbiAgbWV0aG9kIHJlc2V0U2VsZWN0aW9uT25Db250ZXh0TWVudSA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogdGltZSB0byBydW4gaGlnaGxpZ2h0aW5nIHRocmVhZCAqKVxuICBtZXRob2Qgd29ya1RpbWUgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogZGVsYXkgdG8gcnVuIGhpZ2hsaWdodGluZyB0aHJlYWQgKilcbiAgbWV0aG9kIHdvcmtEZWxheSA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBob3cgb2Z0ZW4gdG8gcG9sbCBmb3IgY2hhbmdlcyAqKVxuICBtZXRob2QgcG9sbEludGVydmFsIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIGNvbWJpbmUgdG9rZW5zIHRvIGEgc2luZ2xlIHNwYW4gKilcbiAgbWV0aG9kIGZsYXR0ZW5TcGFucyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogcHJlZml4IGNzcyAqKVxuICBtZXRob2QgYWRkTW9kZUNsYXNzIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBsZW5ndGggdG8gaGlnaGxpZ2h0ICopXG4gIG1ldGhvZCBtYXhIaWdobGlnaHRMZW5ndGggOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIGFtb3VudCBvZiBsaW5lcyB0aGF0IGFyZSByZW5kZXJlZCBhYm92ZSBhbmQgYmVsb3cgdGhlXG4gICAgIHZpc2libGUgZG9jdW1lbnQqKVxuICBtZXRob2Qgdmlld3BvcnRNYXJnaW4gOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogQURET04gc2VsZWN0aW9uL2FjdGl2ZS1saW5lLmpzICopXG4gIG1ldGhvZCBzdHlsZUFjdGl2ZUxpbmUgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIEFERE9OIGxpbnQvbGludC5qcyAqKVxuICBtZXRob2QgbGludCA6IGxpbnRfY29uZmlndXJhdGlvbiBKcy50IEpzLnByb3BcblxuICAoKiBBRERPTiBlZGl0L21hdGNoYnJhY2tldHMuanMgKilcbiAgbWV0aG9kIG1hdGNoQnJhY2tldHMgOiBib29sIEpzLnQgSnMucHJvcFxuZW5kXG5cbmxldCBkZWZhdWx0X2NvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uIEpzLnQgPVxuICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJDb2RlTWlycm9yXCIpIyMuZGVmYXVsdHNcblxubGV0IGZyb21UZXh0QXJlYSAoZG9tIDogRG9tX2h0bWwuZWxlbWVudCBKcy50KVxuICAgIChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbiBKcy50KSA6IGNvZGVtaXJyb3IgSnMudCA9XG4gICgqIGxldCAoKSA9IEpzLmRlYnVnZ2VyKCkgaW4gKilcbiAgKEpzLlVuc2FmZS5qc19leHByIFwiQ29kZU1pcnJvclwiKSMjZnJvbVRleHRBcmVhXG4gICAgKEpzLlVuc2FmZS5pbmplY3QgZG9tKVxuICAgIChKcy5VbnNhZmUuaW5qZWN0IGNvbmZpZ3VyYXRpb24pXG5cbmNsYXNzIHR5cGUgY29tbWFuZHMgPSBvYmplY3RcbiAgbWV0aG9kIHNhdmUgOiAoY29kZW1pcnJvciBKcy50IC0+IHVuaXQpIEpzLnByb3BcbmVuZFxuXG5sZXQgY29tbWFuZHMgOiBjb21tYW5kcyBKcy50ID0gKEpzLlVuc2FmZS5qc19leHByIFwiQ29kZU1pcnJvclwiKSMjLmNvbW1hbmRzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgY3JlYXRlX2ZpbGUgPyh0ZXh0ID0gTHd0LnJldHVybiAoSnMuc3RyaW5nIFwiXCIpKSAoZmlsZV9pZCA6IHN0cmluZykgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgICggdGV4dCA+Pj0gZnVuIHR4dCAtPlxuICAgICAgICAgIGxldCBjb250ZW50ID0gSnMudG9fc3RyaW5nIHR4dCBpblxuICAgICAgICAgIFN0YXRlX2ZpbGUuY3JlYXRlX2ZpbGUgfmZpbGVuYW1lOmZpbGVfaWQgfmNvbnRlbnRcbiAgICAgICAgICA+Pj0gKCogZ2V0IG5ldyBjb250YWN0IG1hcCAqKVxuICAgICAgICAgIGZ1biByIC0+XG4gICAgICAgICAgU3RhdGVfcHJvamVjdC5zeW5jICgpID4+PSBmdW4gcicgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgcjsgcicgXSkgKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNldF9maWxlIChmaWxlX2lkIDogc3RyaW5nKSA6IHVuaXQgPVxuICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJzZXRfZmlsZTolc1wiIGZpbGVfaWQpKSBpblxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIH5hcHBlbmQ6dHJ1ZSBfX0xPQ19fXG4gICAgICAgICggU3RhdGVfZmlsZS5zZWxlY3RfZmlsZSBmaWxlX2lkIE5vbmUgPj49IGZ1biByIC0+XG4gICAgICAgICAgU3RhdGVfcHJvamVjdC5zeW5jICgpID4+PSBmdW4gcicgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgcjsgcicgXSkgKVxuICAgICAgKCogZ2V0IG5ldyBjb250YWN0IG1hcCAqKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IGNsb3NlX2ZpbGUgKCkgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgICggU3RhdGVfZmlsZS5yZW1vdmVfZmlsZSAoKSA+Pj0gZnVuIHIgLT5cbiAgICAgICAgICBTdGF0ZV9wcm9qZWN0LnN5bmMgKCkgPj49IGZ1biByJyAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2NvbWJpbmUgWyByOyByJyBdKSApXG4gICAgICAoKiBnZXQgbmV3IGNvbnRhY3QgbWFwICopXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgc2V0X2ZpbGVfY29tcGlsZSByYW5rIChjb21waWxlIDogYm9vbCkgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgICggU3RhdGVfZmlsZS5zZXRfY29tcGlsZSByYW5rIGNvbXBpbGUgPj49IGZ1biByIC0+XG4gICAgICAgICAgU3RhdGVfcHJvamVjdC5zeW5jICgpID4+PSBmdW4gcicgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgcjsgcicgXSkgKVxuICAgICAgKCogZ2V0IG5ldyBjb250YWN0IG1hcCAqKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IG9yZGVyX2ZpbGVzIChmaWxlbmFtZXMgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgICggU3RhdGVfZmlsZS5vcmRlcl9maWxlcyBmaWxlbmFtZXMgPj49IGZ1biByIC0+XG4gICAgICAgICAgU3RhdGVfcHJvamVjdC5zeW5jICgpID4+PSBmdW4gcicgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgcjsgcicgXSkgKVxuICAgICAgKCogZ2V0IG5ldyBjb250YWN0IG1hcCAqKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IGV4cG9ydF9jdXJyZW50X2ZpbGUgKCkgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX18gKFN0YXRlX2ZpbGUuZ2V0X2ZpbGUgKCkpXG4gICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfm9rOihmdW4gKGRhdGEsIGZpbGVuYW1lKSAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YTooSnMuc3RyaW5nIGRhdGEpXG4gICAgICAgICAgICAgICAgICB+bWltZTpcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiIH5maWxlbmFtZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG4gICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCBmaWxlX25ld19tb2RhbF9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1uZXctbW9kYWxcIlxubGV0IGZpbGVfbmV3X2lucHV0X2lkID0gXCJtZW51LWVkaXRvci1maWxlLW5ldy1pbnB1dFwiXG5sZXQgZmlsZV9kcm9wZG93bl9tZW51X2lkID0gXCJtZW51LWVkaXRvci1maWxlLWRyb3Bkb3duLW1lbnVcIlxubGV0IGZpbGVfbmV3X2xpX2lkID0gXCJtZW51LWVkaXRvci1maWxlLW5ldy1saVwiXG5sZXQgZmlsZV9vcGVuX2xpX2lkID0gXCJtZW51LWVkaXRvci1maWxlLW9wZW4tbGlcIlxubGV0IGZpbGVfb3Blbl9zZWxlY3Rvcl9pZCA9IFwibWVudS1lZGl0b3Itb3Blbi1zZWxlY3Rvci1pZFwiXG5sZXQgZmlsZV9jbG9zZV9saV9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1jbG9zZS1saVwiXG5sZXQgZmlsZV9leHBvcnRfbGlfaWQgPSBcIm1lbnUtZWRpdG9yLWZpbGUtZXhwb3J0LWxpXCJcbmxldCBmaWxlX2NvbXBpbGVfY2hlY2tib3ggPSBcIm1lbnUtZWRpdG9yLWZpbGUtY29tcGlsZS1jaGVja2JveFwiXG5cbigqIGxpc3QgZmlsZW5hbWUgYW5ub3RhdGlvbiAqKVxubGV0IGVsZW1lbnRfZ2V0X2ZpbGVuYW1lIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA6XG4gICAgSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ID1cbiAgQ29tbW9uLmVsZW1lbnRfZGF0YSAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgXCJmaWxlLWlkXCJcblxubGV0IGVsZW1lbnRfc2V0X2ZpbGVuYW1lIChuYW1lIDogc3RyaW5nKSA9XG4gIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJkYXRhLWZpbGUtaWRcIiBuYW1lXG5cbmxldCBmaWxlX25ld19pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGZpbGVfbmV3X2lucHV0X2lkO1xuICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgVGV4dDtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICBIdG1sLmFfcGxhY2Vob2xkZXIgXCJmaWxlIG5hbWVcIjtcbiAgICAgICAgSHRtbC5hX3NpemUgNDA7XG4gICAgICBdXG4gICAgKClcblxubGV0IGZpbGVfbmV3X2lucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBmaWxlX25ld19pbnB1dFxuXG5sZXQgZmlsZV9jaGVja2JveCBmaWxlX2lkIGlzX2NoZWNrZWQgPVxuICBsZXQgY2hlY2tlZF9hdHRyaWJ1dGUgPVxuICAgIGlmIGlzX2NoZWNrZWQgdGhlblxuICAgICAgWyBIdG1sLmFfY2hlY2tlZCAoKSBdXG4gICAgZWxzZVxuICAgICAgW11cbiAgaW5cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgKFtcbiAgICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBDaGVja2JveDtcbiAgICAgICAgIEh0bWwuYV9jbGFzcyBbIGZpbGVfY29tcGlsZV9jaGVja2JveCBdO1xuICAgICAgICAgZWxlbWVudF9zZXRfZmlsZW5hbWUgZmlsZV9pZDtcbiAgICAgICBdXG4gICAgICBAIGNoZWNrZWRfYXR0cmlidXRlKVxuICAgICgpXG5cbmxldCBvcGVuX2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgZmlsZV9vcGVuX3NlbGVjdG9yX2lkO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImhpZGRlblwiIF07XG4gICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJmaWxlXCI7XG4gICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJhY2NlcHRcIiBcIi5rYVwiO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBkcm9wZG93biAobW9kZWwgOiBTdGF0ZV9maWxlLm1vZGVsKSA9XG4gICgqIGRpcmVjdG9yaWVzICopXG4gIGxldCBoaWRlX29uX2VtcHR5IGwgPVxuICAgIGlmIE1vZHMuSW50TWFwLmlzX2VtcHR5IG1vZGVsLlN0YXRlX2ZpbGUuZGlyZWN0b3J5IHRoZW5cbiAgICAgIFtdXG4gICAgZWxzZVxuICAgICAgbFxuICBpblxuICBsZXQgZmlsZV9saSA9XG4gICAgbGV0IGN1cnJlbnRfZmlsZV9wb3MgPVxuICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgIChmdW4geyBTdGF0ZV9maWxlLnJhbms7IF8gfSAtPiByYW5rKVxuICAgICAgICBtb2RlbC5TdGF0ZV9maWxlLmN1cnJlbnRcbiAgICBpblxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIChyYW5rLCB7IFN0YXRlX2ZpbGUubmFtZTsgU3RhdGVfZmlsZS5sb2NhbCB9KSAtPlxuICAgICAgICBsZXQgY29tcGlsZSA9IGxvY2FsID0gTm9uZSBpblxuICAgICAgICBsZXQgbGlfY2xhc3MgPVxuICAgICAgICAgIChpZiBjdXJyZW50X2ZpbGVfcG9zID0gU29tZSByYW5rIHRoZW5cbiAgICAgICAgICAgICBbIFwiYWN0aXZlXCIgXVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgW10pXG4gICAgICAgICAgQCBbIFwidWktc3RhdGUtc29ydGFibGVcIiBdXG4gICAgICAgIGluXG4gICAgICAgIEh0bWwubGlcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBsaV9jbGFzczsgZWxlbWVudF9zZXRfZmlsZW5hbWUgbmFtZSBdXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5hXG4gICAgICAgICAgICAgIH5hOlsgZWxlbWVudF9zZXRfZmlsZW5hbWUgbmFtZSBdXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNoZWNrYm94LWNvbnRyb2wtZGl2XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50X3NldF9maWxlbmFtZSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIGZpbGVfY2hlY2tib3ggbmFtZSBjb21waWxlO1xuICAgICAgICAgICAgICAgICAgICBIdG1sLnNwYW5cbiAgICAgICAgICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJjaGVja2JveC1jb250cm9sLWxhYmVsXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudF9zZXRfZmlsZW5hbWUgbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICBbIEh0bWwuY2RhdGEgbmFtZSBdO1xuICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICBdKVxuICAgICAgKE1vZHMuSW50TWFwLmJpbmRpbmdzIG1vZGVsLlN0YXRlX2ZpbGUuZGlyZWN0b3J5KVxuICBpblxuICBsZXQgc2VwYXJhdG9yX2xpID1cbiAgICBoaWRlX29uX2VtcHR5XG4gICAgICBbXG4gICAgICAgIEh0bWwubGlcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcInNlcGFyYXRvclwiO1xuICAgICAgICAgICAgICBIdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICBbIFwiZGl2aWRlclwiOyBcInVpLXNvcnQtZGlzYWJsZWRcIjsgXCJ1aS1zb3J0LWJvdHRvbS1hbmNob3JcIiBdO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIFtdO1xuICAgICAgXVxuICBpblxuICBsZXQgbmV3X2xpID1cbiAgICBbXG4gICAgICBIdG1sLmxpXG4gICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJ1aS1zb3J0LWRpc2FibGVkXCI7IFwidWktc29ydC1ib3R0b20tYW5jaG9yXCIgXSBdXG4gICAgICAgIFsgSHRtbC5hIH5hOlsgSHRtbC5hX2lkIGZpbGVfbmV3X2xpX2lkIF0gWyBIdG1sLmNkYXRhIFwiTmV3XCIgXSBdO1xuICAgIF1cbiAgaW5cblxuICBsZXQgb3Blbl9saSA9XG4gICAgW1xuICAgICAgSHRtbC5saVxuICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwidWktc29ydC1kaXNhYmxlZFwiOyBcInVpLXNvcnQtYm90dG9tLWFuY2hvclwiIF0gXVxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hIH5hOlsgSHRtbC5hX2lkIGZpbGVfb3Blbl9saV9pZCBdIFsgSHRtbC5jZGF0YSBcIk9wZW5cIiBdO1xuICAgICAgICAgIG9wZW5faW5wdXQ7XG4gICAgICAgIF07XG4gICAgXVxuICBpblxuXG4gIGxldCBjbG9zZV9saSA9XG4gICAgaGlkZV9vbl9lbXB0eVxuICAgICAgW1xuICAgICAgICBIdG1sLmxpXG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInVpLXNvcnQtZGlzYWJsZWRcIjsgXCJ1aS1zb3J0LWJvdHRvbS1hbmNob3JcIiBdIF1cbiAgICAgICAgICBbIEh0bWwuYSB+YTpbIEh0bWwuYV9pZCBmaWxlX2Nsb3NlX2xpX2lkIF0gWyBIdG1sLmNkYXRhIFwiQ2xvc2VcIiBdIF07XG4gICAgICBdXG4gIGluXG4gIGxldCBleHBvcnRfbGkgPVxuICAgIGhpZGVfb25fZW1wdHlcbiAgICAgIFtcbiAgICAgICAgSHRtbC5saVxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJ1aS1zb3J0LWRpc2FibGVkXCI7IFwidWktc29ydC1ib3R0b20tYW5jaG9yXCIgXSBdXG4gICAgICAgICAgWyBIdG1sLmEgfmE6WyBIdG1sLmFfaWQgZmlsZV9leHBvcnRfbGlfaWQgXSBbIEh0bWwuY2RhdGEgXCJFeHBvcnRcIiBdIF07XG4gICAgICBdXG4gIGluXG4gIFtdIEAgZmlsZV9saSBAIHNlcGFyYXRvcl9saSBAIG5ld19saSBAIG9wZW5fbGkgQCBjbG9zZV9saSBAIGV4cG9ydF9saVxuXG5sZXQgY29udGVudCA9XG4gIGxldCBsaV9saXN0ID1cbiAgICBSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWxcbiAgICAgIChSZWFjdC5TLm1hcCAoZnVuIG1vZGVsIC0+IGRyb3Bkb3duIG1vZGVsKSBTdGF0ZV9maWxlLm1vZGVsKVxuICBpblxuICBbXG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuIGJ0bi1kZWZhdWx0XCI7IFwiZHJvcGRvd24tdG9nZ2xlXCIgXTtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiZGF0YS10b2dnbGVcIiBcImRyb3Bkb3duXCI7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImFyaWEtaGFzcG9wdXBcIiBcInRydWVcIjtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiYXJpYS1leHBhbmRlZFwiIFwiZmFsc2VcIjtcbiAgICAgICAgICBUeXhtbF9qcy5SLmZpbHRlcl9hdHRyaWIgKEh0bWwuYV9kaXNhYmxlZCAoKSlcbiAgICAgICAgICAgIChSZWFjdC5TLmwyXG4gICAgICAgICAgICAgICAoZnVuIG1vZGVsIGZpbGUgLT5cbiAgICAgICAgICAgICAgICAgbWF0Y2ggbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9jdXJyZW50X2lkIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggZmlsZS5TdGF0ZV9maWxlLmN1cnJlbnQgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHwgU29tZSB7IFN0YXRlX2ZpbGUub3V0X29mX3N5bmM7IF8gfSAtPiBvdXRfb2Zfc3luYykpXG4gICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsIFN0YXRlX2ZpbGUubW9kZWwpO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwudHh0IFwiRmlsZVwiOyBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNhcmV0XCIgXSBdIFtdIF07XG4gICAgVHl4bWxfanMuUi5IdG1sLnVsXG4gICAgICB+YTpbIEh0bWwuYV9pZCBmaWxlX2Ryb3Bkb3duX21lbnVfaWQ7IEh0bWwuYV9jbGFzcyBbIFwiZHJvcGRvd24tbWVudVwiIF0gXVxuICAgICAgbGlfbGlzdDtcbiAgICBVaV9jb21tb24uY3JlYXRlX21vZGFsIH5pZDpmaWxlX25ld19tb2RhbF9pZCB+dGl0bGVfbGFiZWw6XCJOZXcgRmlsZVwiXG4gICAgICB+Ym9keTpcbiAgICAgICAgWyBbJWh0bWwge3w8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj58fSBbIGZpbGVfbmV3X2lucHV0IF0ge3w8L2Rpdj58fV0gXVxuICAgICAgfnN1Ym1pdF9sYWJlbDpcIkNyZWF0ZSBGaWxlXCJcbiAgICAgIH5zdWJtaXQ6XG4gICAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgIGxldCBmaWxlbmFtZSA6IHN0cmluZyA9IEpzLnRvX3N0cmluZyBmaWxlX25ld19pbnB1dF9kb20jIy52YWx1ZSBpblxuICAgICAgICAgICAgIGxldCAoKSA9IE1lbnVfZWRpdG9yX2ZpbGVfY29udHJvbGxlci5jcmVhdGVfZmlsZSBmaWxlbmFtZSBpblxuICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICBDb21tb24ubW9kYWwgfmlkOihcIiNcIiBeIGZpbGVfbmV3X21vZGFsX2lkKSB+YWN0aW9uOlwiaGlkZVwiXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBKcy5fZmFsc2UpKTtcbiAgXVxuXG5sZXQgb3JkZXJfZmlsZXMgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpID1cbiAgbGV0IGZpbGVuYW1lcyA6IHN0cmluZyBsaXN0ID1cbiAgICBDb21tb24uY2hpbGRyZW5fdmFsdWUgZWxlbWVudCBcImxpW2RhdGEtZmlsZS1pZF1cIiAoZnVuIGVsZW1lbnQgLT5cbiAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIGVsZW1lbnQgaW5cbiAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAoZWxlbWVudF9nZXRfZmlsZW5hbWUgZWxlbWVudClcbiAgICAgICAgICAoZnVuICgpIC0+IGZhaWx3aXRoIFwibWlzc2luZyBmaWxlbmFtZVwiKVxuICAgICAgICAgIEpzLnRvX3N0cmluZylcbiAgaW5cbiAgbGV0ICgpID0gTWVudV9lZGl0b3JfZmlsZV9jb250cm9sbGVyLm9yZGVyX2ZpbGVzIGZpbGVuYW1lcyBpblxuICAoKVxuXG5sZXQgZmlsZV9zZWxlY3RfaGFuZGxlciBfIF8gOiB1bml0IEx3dC50ID1cbiAgbGV0IG9wZW5faW5wdXRfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wZW5faW5wdXQgaW5cbiAgbGV0IGZpbGVzID0gSnMuT3B0ZGVmLmdldCBvcGVuX2lucHV0X2RvbSMjLmZpbGVzIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSBpblxuICBsZXQgZmlsZSA9IEpzLk9wdC5nZXQgKGZpbGVzIyNpdGVtIDApIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSBpblxuICBsZXQgZmlsZV9pZCA9IEpzLnRvX3N0cmluZyBmaWxlIyMubmFtZSBpblxuICBsZXQgKCkgPVxuICAgIE1lbnVfZWRpdG9yX2ZpbGVfY29udHJvbGxlci5jcmVhdGVfZmlsZVxuICAgICAgfnRleHQ6KEpzX29mX29jYW1sX2x3dC5GaWxlLnJlYWRBc1RleHQgZmlsZSlcbiAgICAgIGZpbGVfaWRcbiAgaW5cbiAgbGV0ICgpID0gb3Blbl9pbnB1dF9kb20jIy52YWx1ZSA6PSBKcy5zdHJpbmcgXCJcIiBpblxuICBMd3QucmV0dXJuX3VuaXRcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCBvcGVuX2lucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcGVuX2lucHV0IGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiAoXCIjXCIgXiBmaWxlX25ld19saV9pZCkgXCJjbGlja1wiXG4gICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLm1vZGFsIH5pZDooXCIjXCIgXiBmaWxlX25ld19tb2RhbF9pZCkgfmFjdGlvbjpcInNob3dcIiBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gKFwiI1wiIF4gZmlsZV9vcGVuX2xpX2lkKSBcImNsaWNrXCJcbiAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAoKiBjbGljayA6IHVuaXQgSnMubWV0aDsgKilcbiAgICAgICAgICAgbGV0ICgpID0gb3Blbl9pbnB1dF9kb20jI2NsaWNrIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiAoXCIjXCIgXiBmaWxlX2Nsb3NlX2xpX2lkKSBcImNsaWNrXCJcbiAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIuY2xvc2VfZmlsZSAoKSBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gKFwiI1wiIF4gZmlsZV9leHBvcnRfbGlfaWQpIFwiY2xpY2tcIlxuICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IE1lbnVfZWRpdG9yX2ZpbGVfY29udHJvbGxlci5leHBvcnRfY3VycmVudF9maWxlICgpIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcInNwYW5bZGF0YS1maWxlLWlkXVwiIFwiY2xpY2tcIlxuICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biAoZXZlbnQgOiBEb21faHRtbC5ldmVudCBKcy50KSAtPlxuICAgICAgICAgICAoKiBsZXQgKCkgPSBDb21tb24uZGVidWcgZXZlbnQgaW4gKilcbiAgICAgICAgICAgbGV0IHRhcmdldCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCBKcy5vcHQgPSBldmVudCMjLnRhcmdldCBpblxuICAgICAgICAgICBsZXQgZmlsZV9pZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCA9XG4gICAgICAgICAgICAgSnMuT3B0LmJpbmQgdGFyZ2V0IChmdW4gKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIC0+XG4gICAgICAgICAgICAgICAgIGVsZW1lbnRfZ2V0X2ZpbGVuYW1lIGVsZW1lbnQpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgSnMuT3B0LmNhc2UgZmlsZV9pZFxuICAgICAgICAgICAgICAgKGZ1biBfIC0+ICgpKVxuICAgICAgICAgICAgICAgKGZ1biBmaWxlX2lkIC0+XG4gICAgICAgICAgICAgICAgIE1lbnVfZWRpdG9yX2ZpbGVfY29udHJvbGxlci5zZXRfZmlsZSAoSnMudG9fc3RyaW5nIGZpbGVfaWQpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5jcmVhdGVfc29ydCBmaWxlX2Ryb3Bkb3duX21lbnVfaWQgKGZ1biBldmVudCBfICgqIHVpICopIC0+XG4gICAgICAgIGxldCB0YXJnZXQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMub3B0ID0gZXZlbnQjIy50YXJnZXQgaW5cbiAgICAgICAgSnMuT3B0LmNhc2UgdGFyZ2V0XG4gICAgICAgICAgKGZ1biBfIC0+ICgpKVxuICAgICAgICAgIChmdW4gKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIC0+XG4gICAgICAgICAgICBsZXQgaWQgOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgZWxlbWVudCMjLmlkIGluXG4gICAgICAgICAgICBpZiBmaWxlX2Ryb3Bkb3duX21lbnVfaWQgPSBpZCB0aGVuXG4gICAgICAgICAgICAgIG9yZGVyX2ZpbGVzIGVsZW1lbnRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgQ29tbW9uLmRlYnVnIChGb3JtYXQuc3ByaW50ZiBcInVuZXhwZWN0ZWQgaWQgJXNcIiBpZCkpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb25cbiAgICAgIChGb3JtYXQuc3ByaW50ZiBcImlucHV0LiVzXCIgZmlsZV9jb21waWxlX2NoZWNrYm94KVxuICAgICAgXCJjaGFuZ2VcIlxuICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biBldmVudCAtPlxuICAgICAgICAgICBsZXQgdGFyZ2V0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm9wdCA9IGV2ZW50IyMudGFyZ2V0IGluXG4gICAgICAgICAgIGxldCBmaWxlX2lkIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ID1cbiAgICAgICAgICAgICBKcy5PcHQuYmluZCB0YXJnZXQgKGZ1biAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgICAgZWxlbWVudF9nZXRfZmlsZW5hbWUgZWxlbWVudClcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGlzX2NoZWNrZWQgOiBib29sID1cbiAgICAgICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgICAgICAoSnMuT3B0LmNhc2UgdGFyZ2V0XG4gICAgICAgICAgICAgICAgICAoZnVuIF8gLT4gSnMuX2ZhbHNlKVxuICAgICAgICAgICAgICAgICAgKGZ1biAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKEpzLlVuc2FmZS5jb2VyY2UgZWxlbWVudCA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50KSMjLmNoZWNrZWQpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIEpzLk9wdC5jYXNlIGZpbGVfaWRcbiAgICAgICAgICAgICAgIChmdW4gXyAtPiAoKSlcbiAgICAgICAgICAgICAgIChmdW4gZmlsZV9pZCAtPlxuICAgICAgICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgZmlsZV9pZCBpblxuICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgIE1lbnVfZWRpdG9yX2ZpbGVfY29udHJvbGxlci5zZXRfZmlsZV9jb21waWxlXG4gICAgICAgICAgICAgICAgICAgICAoSnMudG9fc3RyaW5nIGZpbGVfaWQpIGlzX2NoZWNrZWRcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgTHd0LmFzeW5jIChmdW4gKCkgLT5cbiAgICAgICAgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qc19ldmVudHMuY2hhbmdlc1xuICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3Blbl9pbnB1dClcbiAgICAgICAgICBmaWxlX3NlbGVjdF9oYW5kbGVyKVxuICBpblxuICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxubGV0IHdpdGhfZmlsZSAoaGFuZGxlciA6IChzdHJpbmcgKiBzdHJpbmcpIEFwaS5yZXN1bHQgLT4gdW5pdCBBcGkucmVzdWx0IEx3dC50KVxuICAgID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fIChTdGF0ZV9maWxlLmdldF9maWxlICgpID4+PSBoYW5kbGVyKSA+Pj0gZnVuIF8gLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNldF9jb250ZW50IH4oZmlsZW5hbWUgOiBzdHJpbmcpIH4oZmlsZWNvbnRlbnQgOiBzdHJpbmcpIDogdW5pdCA9XG4gIHdpdGhfZmlsZVxuICAgIChBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoXywgY3VycmVudF9maWxlbmFtZSkgLT5cbiAgICAgICAgIGlmIGZpbGVuYW1lID0gY3VycmVudF9maWxlbmFtZSB0aGVuXG4gICAgICAgICAgIFN0YXRlX2ZpbGUuc2V0X2NvbnRlbnQgZmlsZWNvbnRlbnQgPj49IGZ1biByIC0+XG4gICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2NvbWJpbmUgWyByOyByJyBdKVxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiZmlsZSBuYW1lIG1pc21hdGNoICVzICVzXCIgZmlsZW5hbWUgY3VycmVudF9maWxlbmFtZVxuICAgICAgICAgICBpblxuICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgbXNnKVxuICAgICAgICAgKSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENvZGVtaXJyb3Jcbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcblxubGV0IGVkaXRvcl9mdWxsLCBzZXRfZWRpdG9yX2Z1bGwgPSBSZWFjdC5TLmNyZWF0ZSAoZmFsc2UgOiBib29sKVxubGV0IGZpbGVuYW1lLCBzZXRfZmlsZW5hbWUgPSBSZWFjdC5TLmNyZWF0ZSAoTm9uZSA6IHN0cmluZyBvcHRpb24pXG5sZXQgbW92ZV9jdXJzb3JfaG9vayA9IHJlZiBOb25lXG5sZXQgc2V0X21vdmVfY3Vyc29yIGxvYyA9IE9wdGlvbi5pdGVyIChmdW4gZiAtPiBmIGxvYykgIW1vdmVfY3Vyc29yX2hvb2tcblxubGV0IGZpbGVfbGFiZWwgPVxuICBUeXhtbF9qcy5SLkh0bWwudHh0XG4gICAgKFJlYWN0LlMubWFwIChPcHRpb25fdXRpbC51bnNvbWUgXCJcIikgU3RhdGVfZmlsZS5jdXJyZW50X2ZpbGVuYW1lKVxuXG5sZXQgdG9nZ2xlX2J1dHRvbl9pZCA9IFwidG9nZ2xlX2J1dHRvblwiXG5cbmxldCB0b2dnbGVfYnV0dG9uID1cbiAgSHRtbC5hXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCB0b2dnbGVfYnV0dG9uX2lkO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIjsgXCJwdWxsLXJpZ2h0XCIgXTtcbiAgICAgIF1cbiAgICBbIEh0bWwuY2RhdGEgXCJ0b2dnbGVcIiBdXG5cbmxldCBwYW5lbF9oZWFkaW5nX2dyb3VwX2lkID0gXCJwYW5lbF9oZWFkaW5nX2dyb3VwXCJcblxubGV0IHBhbmVsX2hlYWRpbmcgPVxuICBsZXQgbWVudV9lZGl0b3JfZmlsZV9jb250ZW50IDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sNS5lbHQgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuLWdyb3VwXCIgXTsgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcImdyb3VwXCI7XG4gICAgICAgIF1cbiAgICAgIE1lbnVfZWRpdG9yX2ZpbGUuY29udGVudFxuICBpblxuICBsZXQgYnV0dG9ucyA9IG1lbnVfZWRpdG9yX2ZpbGVfY29udGVudCA6OiBbIHRvZ2dsZV9idXR0b24gXSBpblxuICBbJWh0bWxcbiAgICB7fDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICA8ZGl2IGlkPVwifH1cbiAgICAgIHBhbmVsX2hlYWRpbmdfZ3JvdXBfaWQge3xcIiBjbGFzcz1cImNvbC1tZC0xMCBidG4tZ3JvdXBcIj58fSBidXR0b25zXG4gICAgICB7fDwvZGl2PlxuICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yIG9uZWxpbmVyIGZpbGVuYW1lXCI+fH1cbiAgICAgIFsgZmlsZV9sYWJlbCBdXG4gICAgICB7fDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj58fV1cblxubGV0IGNvZGVtaXJyb3JfaWQgPSBcImNvZGUtbWlycm9yXCJcbmxldCBlZGl0b3JfcGFuZWxfaWQgPSBcImVkaXRvci1wYW5lbFwiXG5cbmxldCBjb250ZW50ICgpID1cbiAgbGV0IHRleHRhcmVhID0gSHRtbC50ZXh0YXJlYSB+YTpbIEh0bWwuYV9pZCBjb2RlbWlycm9yX2lkIF0gKEh0bWwudHh0IFwiXCIpIGluXG4gIEh0bWwuZGl2XG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZsZXgtY29udGVudFwiOyBcInBhbmVsXCI7IFwicGFuZWwtZGVmYXVsdFwiIF0gXVxuICAgIFtcbiAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1oZWFkaW5nXCIgXSBdIFsgcGFuZWxfaGVhZGluZyBdO1xuICAgICAgSHRtbC5kaXZcbiAgICAgICAgfmE6XG4gICAgICAgICAgW1xuICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBtb2RlbC5TdGF0ZV9maWxlLmN1cnJlbnQgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmhpZGVfY29kZW1pcnJvciAoKSBpblxuICAgICAgICAgICAgICAgICAgICAgWyBcIm5vLXBhbmVsLWJvZHlcIjsgXCJmbGV4LWNvbnRlbnRcIiBdXG4gICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5zaG93X2NvZGVtaXJyb3IgKCkgaW5cbiAgICAgICAgICAgICAgICAgICAgIFsgXCJwYW5lbC1ib2R5XCI7IFwiZmxleC1jb250ZW50XCIgXSlcbiAgICAgICAgICAgICAgICAgU3RhdGVfZmlsZS5tb2RlbCk7XG4gICAgICAgICAgICBIdG1sLmFfaWQgZWRpdG9yX3BhbmVsX2lkO1xuICAgICAgICAgIF1cbiAgICAgICAgWyB0ZXh0YXJlYSBdO1xuICAgIF1cblxubGV0IGVycm9yX2xpbnQgZXJyb3JzIDogQ29kZW1pcnJvci5saW50IEpzLnQgSnMuanNfYXJyYXkgSnMudCA9XG4gIGxldCBwb3NpdGlvbiBwID0gbmV3JWpzIENvZGVtaXJyb3IucG9zaXRpb24gKHAuTG9jLmxpbmUgLSAxKSBwLkxvYy5jaHIgaW5cbiAgbGV0IGh5ZHJhdGUgKGVycm9yIDogQXBpX3R5cGVzX2oubWVzc2FnZSkgOiBsaW50IEpzLnQgb3B0aW9uID1cbiAgICBtYXRjaCBlcnJvci5SZXN1bHRfdXRpbC5yYW5nZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcmFuZ2UgLT5cbiAgICAgIChtYXRjaCBSZWFjdC5TLnZhbHVlIFN0YXRlX2ZpbGUuY3VycmVudF9maWxlbmFtZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGZpbGVfaWQgLT5cbiAgICAgICAgaWYgcmFuZ2UuTG9jLmZpbGUgPSBmaWxlX2lkIHRoZW5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoQ29kZW1pcnJvci5jcmVhdGVfbGludFxuICAgICAgICAgICAgICAgfm1lc3NhZ2U6ZXJyb3IuUmVzdWx0X3V0aWwudGV4dFxuICAgICAgICAgICAgICAgICAoKiBUaGlzIGlzIGEgYml0IG9mIGEgaGFjayAuLi4gaSBhbSB0cnlpbmcgdG8ga2VlcFxuICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb2RlIG1pcnJvciBjb2RlIGluZGVwZW5kZW50IG9mIHRoZSBhcGkgY29kZS5cbiAgICAgICAgICAgICAgICAgKilcbiAgICAgICAgICAgICAgIH5zZXZlcml0eTpcbiAgICAgICAgICAgICAgICAgKG1hdGNoIGVycm9yLlJlc3VsdF91dGlsLnNldmVyaXR5IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBMb2dzLkFwcCAtPiBDb2RlbWlycm9yLkVycm9yXG4gICAgICAgICAgICAgICAgIHwgTG9ncy5FcnJvciAtPiBDb2RlbWlycm9yLkVycm9yXG4gICAgICAgICAgICAgICAgIHwgTG9ncy5XYXJuaW5nIC0+IENvZGVtaXJyb3IuV2FybmluZ1xuICAgICAgICAgICAgICAgICB8IExvZ3MuSW5mbyAtPiBDb2RlbWlycm9yLldhcm5pbmdcbiAgICAgICAgICAgICAgICAgfCBMb2dzLkRlYnVnIC0+IENvZGVtaXJyb3IuV2FybmluZylcbiAgICAgICAgICAgICAgIH5mcm9tOihwb3NpdGlvbiByYW5nZS5Mb2MuZnJvbV9wb3NpdGlvbilcbiAgICAgICAgICAgICAgIH50b186KHBvc2l0aW9uIHJhbmdlLkxvYy50b19wb3NpdGlvbikpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lKVxuICBpblxuICBKcy5hcnJheVxuICAgIChBcnJheS5vZl9saXN0XG4gICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBhY2MgdmFsdWUgLT5cbiAgICAgICAgICAgIG1hdGNoIGh5ZHJhdGUgdmFsdWUgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgfCBTb21lIHZhbHVlIC0+IHZhbHVlIDo6IGFjYylcbiAgICAgICAgICBbXSBlcnJvcnMpKVxuXG5sZXQgc2V0dXBfbGludCBfIF8gXyA9IGVycm9yX2xpbnQgKFJlYWN0LlMudmFsdWUgU3RhdGVfZXJyb3IuZXJyb3JzKVxuXG4oKiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEwNTc1MzQzL2NvZGVtaXJyb3ItaXMtaXQtcG9zc2libGUtdG8tc2Nyb2xsLXRvLWEtbGluZS1zby10aGF0LWl0LWlzLWluLXRoZS1taWRkbGUtb2YtdyAqKVxubGV0IGp1bXBfdG9fbGluZSAoY29kZW1pcnJvciA6IGNvZGVtaXJyb3IgSnMudCkgKGxpbmUgOiBpbnQpIDogdW5pdCA9XG4gIGxldCBwb3NpdGlvbiA6IHBvc2l0aW9uIEpzLnQgPSBuZXclanMgQ29kZW1pcnJvci5wb3NpdGlvbiBsaW5lIDAgaW5cbiAgbGV0IG1vZGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgPSBKcy5zb21lIChKcy5zdHJpbmcgXCJsb2NhbFwiKSBpblxuICBsZXQgY29vcmRzIDogQ29kZW1pcnJvci5kaW1lbnNpb24gSnMudCA9XG4gICAgY29kZW1pcnJvciMjY2hhckNvb3JkcyBwb3NpdGlvbiBtb2RlXG4gIGluXG4gIGxldCB0b3AgOiBpbnQgPSBjb29yZHMjIy50b3AgaW5cbiAgbGV0IGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgPSBjb2RlbWlycm9yIyNnZXRTY3JvbGxlckVsZW1lbnQgaW5cbiAgbGV0IG1pZGRsZUhlaWdodCA6IGludCA9IGVsZW1lbnQjIy5vZmZzZXRIZWlnaHQgLyAyIGluXG4gIGxldCBzY3JvbGxMaW5lIDogaW50ID0gdG9wIC0gbWlkZGxlSGVpZ2h0IC0gNSBpblxuICBsZXQgKCkgPSBjb2RlbWlycm9yIyNzY3JvbGxUbyBKcy5udWxsIChKcy5zb21lIHNjcm9sbExpbmUpIGluXG4gICgpXG5cbmxldCBkb250X2djX21lX3NpZ25hbHMgPSByZWYgW11cblxubGV0IG9ubG9hZCAoKSA6IHVuaXQgPVxuICBsZXQgKCkgPSBNZW51X2VkaXRvcl9maWxlLm9ubG9hZCAoKSBpblxuICBsZXQgbGludF9jb25maWcgPSBDb2RlbWlycm9yLmNyZWF0ZV9saW50X2NvbmZpZ3VyYXRpb24gKCkgaW5cbiAgbGV0ICgpID0gbGludF9jb25maWcjIy5nZXRBbm5vdGF0aW9ucyA6PSBzZXR1cF9saW50IGluXG4gIGxldCAoKSA9IGxpbnRfY29uZmlnIyMubGludE9uQ2hhbmdlIDo9IEpzLl9mYWxzZSBpblxuICBsZXQgY29uZmlndXJhdGlvbiA9IENvZGVtaXJyb3IuZGVmYXVsdF9jb25maWd1cmF0aW9uIGluXG4gIGxldCBndXR0ZXJfb3B0aW9ucyA9XG4gICAgSnMuc3RyaW5nIFwiYnJlYWtwb2ludHMsQ29kZU1pcnJvci1saW50LW1hcmtlcnMsQ29kZU1pcnJvci1saW5lbnVtYmVyc1wiXG4gIGluXG4gIGxldCBndXR0ZXJfb3B0aW9uIDogSnMuc3RyaW5nX2FycmF5IEpzLnQgPVxuICAgIGd1dHRlcl9vcHRpb25zIyNzcGxpdCAoSnMuc3RyaW5nIFwiLFwiKVxuICBpblxuICBsZXQgdGV4dGFyZWEgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgPSBVaV9jb21tb24uaWRfZG9tIFwiY29kZS1taXJyb3JcIiBpblxuICBsZXQgKCkgPVxuICAgIGNvbmZpZ3VyYXRpb24jIy5saW5lTnVtYmVycyA6PSBKcy5fdHJ1ZTtcbiAgICBjb25maWd1cmF0aW9uIyMubGluZVdyYXBwaW5nIDo9IEpzLl90cnVlO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5zdHlsZUFjdGl2ZUxpbmUgOj0gSnMuX3RydWU7XG4gICAgY29uZmlndXJhdGlvbiMjLm1hdGNoQnJhY2tldHMgOj0gSnMuX3RydWU7XG4gICAgY29uZmlndXJhdGlvbiMjLmF1dG9mb2N1cyA6PSBKcy5fdHJ1ZTtcbiAgICBjb25maWd1cmF0aW9uIyMuZ3V0dGVycyA6PSBndXR0ZXJfb3B0aW9uO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5saW50IDo9IGxpbnRfY29uZmlnO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5tb2RlIDo9IEpzLnN0cmluZyBcIkthcHBhXCJcbiAgaW5cbiAgbGV0IGNvZGVtaXJyb3IgOiBjb2RlbWlycm9yIEpzLnQgPVxuICAgIENvZGVtaXJyb3IuZnJvbVRleHRBcmVhIHRleHRhcmVhIGNvbmZpZ3VyYXRpb25cbiAgaW5cbiAgbGV0ICgpID0gY29kZW1pcnJvciMjc2V0VmFsdWUgKEpzLnN0cmluZyBcIlwiKSBpblxuICBsZXQgKCkgPVxuICAgIFN1YnBhbmVsX2VkaXRvcl9jb250cm9sbGVyLndpdGhfZmlsZVxuICAgICAgKFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgIH5vazooZnVuIChjb250ZW50LCBpZCkgLT5cbiAgICAgICAgICAgbGV0ICgpID0gc2V0X2ZpbGVuYW1lIChTb21lIGlkKSBpblxuICAgICAgICAgICBsZXQgKCkgPSBjb2RlbWlycm9yIyNzZXRWYWx1ZSAoSnMuc3RyaW5nIGNvbnRlbnQpIGluXG4gICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgIH5lcnJvcjooZnVuIF8gLT5cbiAgICAgICAgICAgKCogaWdub3JlIGlmIG1pc3NpbmcgZmlsZSAqKVxuICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvZGVtaXJyb3IuY29tbWFuZHMjIy5zYXZlIDo9XG4gICAgICBmdW4gXyAtPiBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIuZXhwb3J0X2N1cnJlbnRfZmlsZSAoKVxuICBpblxuICBsZXQgdGltZW91dCA6IERvbV9odG1sLnRpbWVvdXRfaWQgb3B0aW9uIHJlZiA9IHJlZiBOb25lIGluXG4gIGxldCBoYW5kbGVyIGNvZGVtaXJyb3IgY2hhbmdlID1cbiAgICBsZXQgKCkgPSBTdGF0ZV9maWxlLm91dF9vZl9zeW5jIHRydWUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggIXRpbWVvdXQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgdGltZW91dCAtPiBEb21faHRtbC53aW5kb3cjI2NsZWFyVGltZW91dCB0aW1lb3V0XG4gICAgaW5cbiAgICBsZXQgZGVsYXkgOiBmbG9hdCA9XG4gICAgICBpZiAoSnMuc3RyX2FycmF5IGNoYW5nZSMjLnRleHQpIyMubGVuZ3RoID4gMSB8fCBTdGF0ZV9lcnJvci5oYXNfZXJyb3JzICgpXG4gICAgICB0aGVuXG4gICAgICAgIDEuMCAqLiAxMDAwLjBcbiAgICAgIGVsc2VcbiAgICAgICAgNS4wICouIDEwMDAuMFxuICAgIGluXG4gICAgbGV0IGhhbmRsZV90aW1lb3V0ICgpID1cbiAgICAgIGxldCAoKSA9IFN0YXRlX2ZpbGUub3V0X29mX3N5bmMgZmFsc2UgaW5cbiAgICAgIG1hdGNoIFJlYWN0LlMudmFsdWUgZmlsZW5hbWUgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgZmlsZW5hbWUgLT5cbiAgICAgICAgU3VicGFuZWxfZWRpdG9yX2NvbnRyb2xsZXIuc2V0X2NvbnRlbnQgfmZpbGVuYW1lXG4gICAgICAgICAgfmZpbGVjb250ZW50OihKcy50b19zdHJpbmcgY29kZW1pcnJvciMjZ2V0VmFsdWUpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgdGltZW91dCA6PVxuICAgICAgICBTb21lXG4gICAgICAgICAgKERvbV9odG1sLndpbmRvdyMjc2V0VGltZW91dFxuICAgICAgICAgICAgIChKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPiBoYW5kbGVfdGltZW91dCAoKSkpXG4gICAgICAgICAgICAgZGVsYXkpXG4gICAgaW5cbiAgICAoKVxuICBpblxuICBsZXQgKCkgPSBjb2RlbWlycm9yIyNvbkNoYW5nZSBoYW5kbGVyIGluXG4gIGxldCAoKSA9XG4gICAgY29kZW1pcnJvciMjb25DdXJzb3JBY3Rpdml0eSAoZnVuIF9jb2RlbWlycm9yIC0+XG4gICAgICAgIGxldCBwb3MgPSBjb2RlbWlycm9yIyNnZXRDdXJzb3IgaW5cbiAgICAgICAgbGV0IGxpbmUgPSBwb3MjIy5saW5lIGluXG4gICAgICAgIGxldCBjaCA9IHBvcyMjLmNoIGluXG4gICAgICAgIFN0YXRlX2ZpbGUuY3Vyc29yX2FjdGl2aXR5IH5saW5lIH5jaClcbiAgaW5cbiAgbGV0IHRvZ2dsZV9idXR0b25fZG9tIDogRG9tX2h0bWwubGlua0VsZW1lbnQgSnMudCA9XG4gICAgSnMuVW5zYWZlLmNvZXJjZVxuICAgICAgKEpzLk9wdC5nZXRcbiAgICAgICAgIChVaV9jb21tb24uZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgdG9nZ2xlX2J1dHRvbl9pZCkpXG4gICAgICAgICAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgdG9nZ2xlX2J1dHRvbl9kb20jIy5vbmNsaWNrXG4gICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCBlZGl0b3JfZnVsbCA9IFJlYWN0LlMudmFsdWUgZWRpdG9yX2Z1bGwgaW5cbiAgICAgICAgICAgbGV0ICgpID0gc2V0X2VkaXRvcl9mdWxsIChub3QgZWRpdG9yX2Z1bGwpIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIGRvbnRfZ2NfbWVfc2lnbmFscyA6PVxuICAgICAgWyBSZWFjdC5TLm1hcCAoZnVuIF8gLT4gY29kZW1pcnJvciMjcGVyZm9ybUxpbnQpIFN0YXRlX2Vycm9yLmVycm9ycyBdXG4gIGluXG4gIGxldCAoKSA9XG4gICAgU3RhdGVfZmlsZS5yZWdpc3Rlcl9yZWZyZXNoX2ZpbGVfaG9vayAoZnVuIHJlZnJlc2ggLT5cbiAgICAgICAgbGV0ICgpID0gc2V0X2ZpbGVuYW1lIChTb21lIHJlZnJlc2guU3RhdGVfZmlsZS5maWxlbmFtZSkgaW5cbiAgICAgICAgbGV0IGNhbmQgPSBKcy5zdHJpbmcgcmVmcmVzaC5TdGF0ZV9maWxlLmNvbnRlbnQgaW5cbiAgICAgICAgaWYgY2FuZCA8PiBjb2RlbWlycm9yIyNnZXRWYWx1ZSB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPSBjb2RlbWlycm9yIyNzZXRWYWx1ZSBjYW5kIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIG1hdGNoIHJlZnJlc2guU3RhdGVfZmlsZS5saW5lIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIGxpbmUgLT4ganVtcF90b19saW5lIGNvZGVtaXJyb3IgbGluZVxuICAgICAgICAgIGluXG4gICAgICAgICAgKClcbiAgICAgICAgKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtb3ZlX2N1cnNvcl9ob29rIDo9XG4gICAgICBTb21lXG4gICAgICAgIChmdW4gcG9zIC0+XG4gICAgICAgICAgaWYgU29tZSBwb3MuTG9jLmZpbGUgPSBSZWFjdC5TLnZhbHVlIGZpbGVuYW1lIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGJlZyA9IHBvcy5Mb2MuZnJvbV9wb3NpdGlvbiBpblxuICAgICAgICAgICAgbGV0IGZpcnN0ID1cbiAgICAgICAgICAgICAgbmV3JWpzIENvZGVtaXJyb3IucG9zaXRpb24gKGJlZy5Mb2MubGluZSAtIDEpIGJlZy5Mb2MuY2hyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVuID0gcG9zLkxvYy5mcm9tX3Bvc2l0aW9uIGluXG4gICAgICAgICAgICBsZXQgbGFzdCA9XG4gICAgICAgICAgICAgIG5ldyVqcyBDb2RlbWlycm9yLnBvc2l0aW9uIChlbi5Mb2MubGluZSAtIDEpIGVuLkxvYy5jaHJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBjb2RlbWlycm9yIyNzZXRTZWxlY3Rpb24gZmlyc3QgbGFzdFxuICAgICAgICAgICkpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCBwcmludF9zdHJpbmcgcyBsaXN0ID0gSHRtbC50eHQgcyA6OiBsaXN0XG5sZXQgcHJpbnRfbmV3bGluZSBsaXN0ID0gcHJpbnRfc3RyaW5nIFwiXFxuXCIgbGlzdFxuXG5sZXQgcHJpbnRfc2luZ2xlX2JpbmRpbmdfc3RhdGUgYSBsaXN0ID1cbiAgcHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLmJpbmRpbmdfc3RhdGVfb3BlbmluZ19iYWNrZW5kX3N5bWJvbFxuICAgIChwcmludF9zdHJpbmcgYVxuICAgICAgIChwcmludF9zdHJpbmcgUHVibGljX2RhdGEuYmluZGluZ19zdGF0ZV9jbG9zaW5nX2JhY2tlbmRfc3ltYm9sIGxpc3QpKVxuXG5sZXQgcHJpbnRfc2luZ2xlX2ludGVybmFsX3N0YXRlIGEgbGlzdCA9XG4gIHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5pbnRlcm5hbF9zdGF0ZV9vcGVuaW5nX2JhY2tlbmRfc3ltYm9sXG4gICAgKHByaW50X3N0cmluZyBhXG4gICAgICAgKHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5pbnRlcm5hbF9zdGF0ZV9jbG9zaW5nX2JhY2tlbmRfc3ltYm9sIGxpc3QpKVxuXG5sZXQgcHJpbnRfY291bnRlcl9pbnRlcnZhbCAoYSwgYikgbGlzdCA9XG4gIGxldCBvcGVuX3JhbmdlLCBpbmYgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgKCBQdWJsaWNfZGF0YS5vcGVuX2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2wsXG4gICAgICAgIFB1YmxpY19kYXRhLm1pbnVzX2luZmluaXR5X3N5bWJvbCApXG4gICAgfCBTb21lIGEgLT4gUHVibGljX2RhdGEub3Blbl9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sLCBzdHJpbmdfb2ZfaW50IGFcbiAgaW5cbiAgbGV0IGNsb3NlX3JhbmdlLCBzdXAgPVxuICAgIG1hdGNoIGIgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgKCBQdWJsaWNfZGF0YS5jbG9zZV9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sLFxuICAgICAgICBQdWJsaWNfZGF0YS5wbHVzX2luZmluaXR5X3N5bWJvbCApXG4gICAgfCBTb21lIGIgLT4gUHVibGljX2RhdGEuY2xvc2VfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbCwgc3RyaW5nX29mX2ludCBiXG4gIGluXG4gIHByaW50X3N0cmluZyBvcGVuX3JhbmdlXG4gICAgKHByaW50X3N0cmluZyBpbmZcbiAgICAgICAocHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLmNvdW50ZXJfc3RhdGVfcmFuZ2VfYmFja2VuZF9zeW1ib2xcbiAgICAgICAgICAocHJpbnRfc3RyaW5nIHN1cCAocHJpbnRfc3RyaW5nIGNsb3NlX3JhbmdlIGxpc3QpKSkpXG5cbmxldCBwcmludF9jb3VudGVyX3N0YXRlIChhLCBiKSBsaXN0ID1cbiAgcHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLmNvdW50ZXJfc3RhdGVfb3BlbmluZ19iYWNrZW5kX3N5bWJvbFxuICAgIChwcmludF9jb3VudGVyX2ludGVydmFsIChhLCBiKVxuICAgICAgIChwcmludF9zdHJpbmcgUHVibGljX2RhdGEuY291bnRlcl9zdGF0ZV9jbG9zaW5nX2JhY2tlbmRfc3ltYm9sIGxpc3QpKVxuXG5sZXQgcHJpbnRfc2l0ZSBzaXRlIGxpc3QgPVxuICBsZXQgc2l0ZV9uYW1lLCBwcm9wX29wdCwgYmluZGluZ19vcHQsIGNvdW50ZXJfb3B0ID0gc2l0ZSBpblxuICBsZXQgbGlzdCA9XG4gICAgbWF0Y2ggYmluZGluZ19vcHQgd2l0aFxuICAgIHwgTm9uZSAtPiBwcmludF9zdHJpbmcgUHVibGljX2RhdGEubWlzc2luZ19iaW5kaW5nX3NpdGVfYmFja2VuZF9zeW1ib2wgbGlzdFxuICAgIHwgU29tZSBQdWJsaWNfZGF0YS5GcmVlIC0+XG4gICAgICBwcmludF9zaW5nbGVfYmluZGluZ19zdGF0ZSBQdWJsaWNfZGF0YS5mcmVlX2JhY2tlbmRfc3ltYm9sIGxpc3RcbiAgICB8IFNvbWUgUHVibGljX2RhdGEuV2lsZGNhcmQgLT5cbiAgICAgIHByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlIFB1YmxpY19kYXRhLndpbGRjYXJkX2JhY2tlbmRfc3ltYm9sIGxpc3RcbiAgICB8IFNvbWUgUHVibGljX2RhdGEuQm91bmRfdG9fdW5rbm93biAtPlxuICAgICAgcHJpbnRfc2luZ2xlX2JpbmRpbmdfc3RhdGUgUHVibGljX2RhdGEuYm91bmRfdG9fdW5rbm93bl9iYWNrZW5kX3N5bWJvbFxuICAgICAgICBsaXN0XG4gICAgfCBTb21lIChQdWJsaWNfZGF0YS5CaW5kaW5nX3R5cGUgKGFnZW50X25hbWUsIHNpdGVfbmFtZSkpIC0+XG4gICAgICBsZXQgYmluZGluZ190eXBlX3N5bWJvbCA9IFB1YmxpY19kYXRhLmJpbmRpbmdfdHlwZV9iYWNrZW5kX3N5bWJvbCBpblxuICAgICAgcHJpbnRfc2luZ2xlX2JpbmRpbmdfc3RhdGVcbiAgICAgICAgKFB1YmxpY19kYXRhLnN0cmluZ19vZl9iaW5kaW5nX3R5cGUgfmJpbmRpbmdfdHlwZV9zeW1ib2wgfmFnZW50X25hbWVcbiAgICAgICAgICAgfnNpdGVfbmFtZSAoKSlcbiAgICAgICAgbGlzdFxuICAgIHwgU29tZSAoUHVibGljX2RhdGEuQm91bmRfdG8gaSkgLT5cbiAgICAgIHByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlIChzdHJpbmdfb2ZfaW50IGkpIGxpc3RcbiAgaW5cbiAgbGV0IGxpc3QgPVxuICAgIG1hdGNoIGNvdW50ZXJfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gbGlzdFxuICAgIHwgU29tZSBhIC0+IHByaW50X2NvdW50ZXJfc3RhdGUgYSBsaXN0XG4gIGluXG4gIGxldCBsaXN0ID1cbiAgICBtYXRjaCBwcm9wX29wdCB3aXRoXG4gICAgfCBOb25lIC0+IGxpc3RcbiAgICB8IFNvbWUgYSAtPiBwcmludF9zaW5nbGVfaW50ZXJuYWxfc3RhdGUgYSBsaXN0XG4gIGluXG4gIHByaW50X3N0cmluZyBzaXRlX25hbWUgbGlzdFxuXG5sZXQgcHJpbnRfYWdlbnQgYWdlbnQgbGlzdCA9XG4gIGxldCBhZ2VudF9uYW1lLCBpbnRlcmZhY2UgPSBhZ2VudCBpblxuICBsZXQgbGlzdCA9IHByaW50X3N0cmluZyBcIilcIiBsaXN0IGluXG4gIGxldCBsaXN0ID1cbiAgICBzbmRcbiAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgKGZ1biAoYiwgbGlzdCkgc2l0ZSAtPlxuICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgaWYgYiB0aGVuXG4gICAgICAgICAgICAgICBwcmludF9zdHJpbmcgXCIsXCIgbGlzdFxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGxpc3QgPSBwcmludF9zaXRlIHNpdGUgbGlzdCBpblxuICAgICAgICAgICB0cnVlLCBsaXN0KVxuICAgICAgICAgKGZhbHNlLCBsaXN0KSBpbnRlcmZhY2UpXG4gIGluXG4gIGxldCBsaXN0ID0gSHRtbC50eHQgXCIoXCIgOjogbGlzdCBpblxuICBsZXQgbGlzdCA9IEh0bWwudHh0IGFnZW50X25hbWUgOjogbGlzdCBpblxuICBsaXN0XG5cbmxldCBwcmludF9zaXRlX2dyYXBoIGFnZW50X2xpc3QgbGlzdCA9XG4gIHNuZFxuICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgIChmdW4gKGIsIGxpc3QpIGFnZW50IC0+XG4gICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgIGlmIGIgdGhlblxuICAgICAgICAgICAgIHByaW50X3N0cmluZyBcIixcIiBsaXN0XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsaXN0XG4gICAgICAgICBpblxuICAgICAgICAgdHJ1ZSwgcHJpbnRfYWdlbnQgYWdlbnQgbGlzdClcbiAgICAgICAoZmFsc2UsIGxpc3QpIChMaXN0LnJldiBhZ2VudF9saXN0KSlcblxubGV0IHByaW50X21ldGhvZF9oYW5kbGVyIG1oID1cbiAgbGV0IHVuY2F1Z2h0ID0gRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF91bmNhdWdodF9leGNlcHRpb25fbGlzdCBtaCBpblxuICBsZXQgY2F1Z2h0ID0gRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3QgbWggaW5cbiAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgKGZ1biB4IGwgLT5cbiAgICAgIEh0bWwucFxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYVwiIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5wcF9jYXVnaHQgeCk7XG4gICAgICAgIF1cbiAgICAgIDo6IGwpXG4gICAgY2F1Z2h0XG4gICAgKExpc3QubWFwXG4gICAgICAgKGZ1biB4IC0+XG4gICAgICAgICBIdG1sLnBcbiAgICAgICAgICAgW1xuICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIucHBfdW5jYXVnaHQgeCk7XG4gICAgICAgICAgIF0pXG4gICAgICAgdW5jYXVnaHQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgbmF2bGkgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5sZXQgdGFiX3dhc19hY3RpdmUgPSByZWYgZmFsc2VcblxuKCogdG9kbyBhZGQgYnV0dG9uIHRvIHN3aXRjaCBvbi9vZmYgdGhlIGRpc3BsYXkgb2YgdGhlIGluZm9ybWF0aW9uIG9mIGVhY2ggYWJzdHJhY3QgZG9tYWluXG4gICBsZXQgbm9uX3JlbGF0aW9uYWwgPSByZWYgdHJ1ZVxuICAgbGV0IHJlbGF0aW9uYWwgPSByZWYgdHJ1ZVxuICAgbGV0IHNpdGVfYWNjcm9zcyA9IHJlZiB0cnVlXG4gICBsZXQgcGFyYWxsZWxfYm9uZCA9IHJlZiB0cnVlXG4qKVxuXG5sZXQgY29udGVudCAoKSA9XG4gIGxldCBjb25zdHJhaW50c19kaXYgPVxuICAgIFN0YXRlX3Byb2plY3Qub25fcHJvamVjdF9jaGFuZ2VfYXN5bmMgfm9uOnRhYl9pc19hY3RpdmUgKClcbiAgICAgIChSZWFjdC5TLmNvbnN0ICgpKSBbXSAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpICgpIC0+XG4gICAgICAgIG1hbmFnZXIjZ2V0X2NvbnN0cmFpbnRzX2xpc3RcbiAgICAgICAgPnw9IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgfm9rOihmdW4gY29uc3RyYWludHMgLT5cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBwYW5lbHMgKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqbWF0Y2ggYiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gcGFuZWxzXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBfIDo6IF8gLT4qKVxuICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dHMgPVxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgbGVtbWEgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGh5cCA9IFB1YmxpY19kYXRhLmdldF9oeXAgbGVtbWEgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbmNsdXNpb24gPSBQdWJsaWNfZGF0YS5nZXRfcmVmaW5lbWVudCBsZW1tYSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY29uY2x1c2lvbiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbIHNpdGVfZ3JhcGggXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbGl0eS5wcmludF9zaXRlX2dyYXBoIHNpdGVfZ3JhcGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFV0aWxpdHkucHJpbnRfbmV3bGluZSBsaXN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiBfIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gVXRpbGl0eS5wcmludF9uZXdsaW5lIGxpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gVXRpbGl0eS5wcmludF9zdHJpbmcgXCIgXVwiIGxpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoYm9vbCwgbGlzdCkgYSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LnByaW50X3N0cmluZyBcIiB2IFwiIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxpdHkucHJpbnRfc2l0ZV9ncmFwaCBhIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCBsaXN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmYWxzZSwgbGlzdCkgKExpc3QucmV2IGNvbmNsdXNpb24pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gVXRpbGl0eS5wcmludF9zdHJpbmcgXCJbIFwiIGxpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBVdGlsaXR5LnByaW50X3N0cmluZyBcIiAgPT4gIFwiIGxpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBVdGlsaXR5LnByaW50X3NpdGVfZ3JhcGggaHlwIGxpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgIFtdIChMaXN0LnJldiBiKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPVxuICAgICAgICAgICAgICAgICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtaGVhZGluZ1wiIF0gXVxuICAgICAgICAgICAgICAgICAgICAgICAgWyBIdG1sLnR4dCBhIF1cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtYm9keVwiOyBcInBhbmVsLXByZVwiIF0gXVxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHNcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWxcIjsgXCJwYW5lbC1kZWZhdWx0XCIgXSBdXG4gICAgICAgICAgICAgICAgICAgICAgWyB0aXRsZTsgY29udGVudCBdXG4gICAgICAgICAgICAgICAgICAgIDo6IHBhbmVscylcbiAgICAgICAgICAgICAgICAgIFtdIGNvbnN0cmFpbnRzKVxuICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biByIC0+XG4gICAgICAgICAgICAgICAgbGV0IHRpdGxlID1cbiAgICAgICAgICAgICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1oZWFkaW5nXCIgXSBdXG4gICAgICAgICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJLYVNhIGhhcyBmYWlsZWRcIiBdXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtYm9keVwiOyBcInBhbmVsLXByZVwiIF0gXVxuICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkBbJWFAXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwucHJpbnRfbWVzc2FnZSBtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgIHIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3V0ID1cbiAgICAgICAgICAgICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbFwiOyBcInBhbmVsLWRhbmdlclwiIF0gXVxuICAgICAgICAgICAgICAgICAgICBbIHRpdGxlOyBjb250ZW50IF1cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIFsgb3V0IF0pKVxuICBpblxuICBbXG4gICAgVHl4bWxfanMuUi5IdG1sNS5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1zY3JvbGxcIiBdIF1cbiAgICAgIChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWwgY29uc3RyYWludHNfZGl2KTtcbiAgXVxuXG5sZXQgcGFyZW50X2hpZGUgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZVxubGV0IHBhcmVudF9zaG93biAoKSA9IHNldF90YWJfaXNfYWN0aXZlICF0YWJfd2FzX2FjdGl2ZVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdmNvbnN0cmFpbnRzXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSBmYWxzZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdmNvbnN0cmFpbnRzXCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gdHJ1ZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmNsYXNzIHR5cGUgY29udGFjdF9tYXAgPSBvYmplY3RcbiAgbWV0aG9kIHNldERhdGEgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIHJlZHJhdyA6IHVuaXQgSnMubWV0aFxuICBtZXRob2QgY2xlYXJEYXRhIDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGNyZWF0ZV9jb250YWN0X21hcCAoaWQgOiBzdHJpbmcpIChjb2xvcmluZyA6IHVuaXQgSnMudCkgOiBjb250YWN0X21hcCBKcy50ID1cbiAgSnMuVW5zYWZlLm5ld19vYmpcbiAgICAoSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIkNvbnRhY3RNYXBcIilcbiAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgaWQpOyBKcy5VbnNhZmUuaW5qZWN0IGNvbG9yaW5nIHxdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbnR5cGUgaGFuZGxlciA9IHsgc3VmZml4OiBzdHJpbmc7IGxhYmVsOiBzdHJpbmc7IGV4cG9ydDogc3RyaW5nIC0+IHVuaXQgfVxuXG50eXBlIGNvbmZpZ3VyYXRpb24gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGhhbmRsZXJzOiBoYW5kbGVyIGxpc3Q7XG4gIHNob3c6IGJvb2wgUmVhY3Quc2lnbmFsO1xufVxuXG5sZXQgZXhwb3J0X2Zvcm1hdF9pZCAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24pIDogc3RyaW5nID1cbiAgRm9ybWF0LnNwcmludGYgXCJleHBvcnRfJXNfc2VsZWN0XCIgY29uZmlndXJhdGlvbi5pZFxuXG5sZXQgZXhwb3J0X2ZpbGVuYW1lX2lkIChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbikgOiBzdHJpbmcgPVxuICBGb3JtYXQuc3ByaW50ZiBcImV4cG9ydF8lc19maWxlbmFtZVwiIGNvbmZpZ3VyYXRpb24uaWRcblxubGV0IGV4cG9ydF9idXR0b25faWQgKGNvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uKSA6IHN0cmluZyA9XG4gIEZvcm1hdC5zcHJpbnRmIFwiZXhwb3J0XyVzX2J1dHRvblwiIGNvbmZpZ3VyYXRpb24uaWRcblxubGV0IGV4cG9ydF9kYXRhX2xhYmVsIChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbikgOiBzdHJpbmcgPVxuICBGb3JtYXQuc3ByaW50ZiBcImV4cG9ydF8lc19sYWJlbFwiIGNvbmZpZ3VyYXRpb24uaWRcblxubGV0IGV4cG9ydF9mb3JtX2lkIChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbikgOiBzdHJpbmcgPVxuICBGb3JtYXQuc3ByaW50ZiBcImV4cG9ydF8lc19mb3JtXCIgY29uZmlndXJhdGlvbi5pZFxuXG5sZXQgaW5saW5lX2NvbnRlbnQgKGNvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uKSA9XG4gIGxldCBleHBvcnRfZmlsZW5hbWUgPVxuICAgIEh0bWwuaW5wdXRcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIChleHBvcnRfZmlsZW5hbWVfaWQgY29uZmlndXJhdGlvbik7XG4gICAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYFRleHQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcImZpbGUgbmFtZVwiO1xuICAgICAgICBdXG4gICAgICAoKVxuICBpblxuICBsZXQgZXhwb3J0X2J1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIChleHBvcnRfYnV0dG9uX2lkIGNvbmZpZ3VyYXRpb24pO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgICAgICBUeXhtbF9qcy5SLmZpbHRlcl9hdHRyaWIgKEh0bWwuYV9kaXNhYmxlZCAoKSlcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcCBub3QgY29uZmlndXJhdGlvbi5zaG93KTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLmNkYXRhIFwiZXhwb3J0XCIgXVxuICBpblxuICBsZXQgZXhwb3J0X2Zvcm1hdHNfc2VsZWN0ID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biBoYW5kbGVyIC0+XG4gICAgICAgIFslaHRtbFxuICAgICAgICAgIHt8PG9wdGlvbiB2YWx1ZT1cInx9IGhhbmRsZXIubGFiZWwge3xcIj58fSAoSHRtbC5jZGF0YSBoYW5kbGVyLmxhYmVsKVxuICAgICAgICAgICAge3w8L29wdGlvbj58fV0pXG4gICAgICBjb25maWd1cmF0aW9uLmhhbmRsZXJzXG4gIGluXG4gIFslaHRtbFxuICAgIHt8PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJ8fVxuICAgICAgKGV4cG9ydF9mb3JtYXRfaWQgY29uZmlndXJhdGlvbilcbiAgICAgIHt8XCI+XG4gICAgICAgICAgICAgICB8fVxuICAgICAgZXhwb3J0X2Zvcm1hdHNfc2VsZWN0XG4gICAgICB7fFxuICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICA8bGFiZWwgZm9yPXx9XG4gICAgICAoZXhwb3J0X2ZpbGVuYW1lX2lkIGNvbmZpZ3VyYXRpb24pXG4gICAgICB7fD48L2xhYmVsPlxuICAgICAgICAgICAgICAgfH1cbiAgICAgIFsgZXhwb3J0X2ZpbGVuYW1lIF1cbiAgICAgIHt8XG4gICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgfH1dXG4gIEAgWyBleHBvcnRfYnV0dG9uIF1cblxubGV0IGNvbnRlbnQgY29uZmlndXJhdGlvbiA9XG4gIEh0bWwuZm9ybVxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgKGV4cG9ydF9mb3JtX2lkIGNvbmZpZ3VyYXRpb24pOyBIdG1sLmFfY2xhc3MgWyBcImZvcm0taW5saW5lXCIgXTtcbiAgICAgIF1cbiAgICAoaW5saW5lX2NvbnRlbnQgY29uZmlndXJhdGlvbilcblxubGV0IG9ubG9hZCAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24pID1cbiAgbGV0IGV4cG9ydF9idXR0b24gOiBEb21faHRtbC5idXR0b25FbGVtZW50IEpzLnQgPVxuICAgIFVpX2NvbW1vbi5pZF9kb20gKGV4cG9ydF9idXR0b25faWQgY29uZmlndXJhdGlvbilcbiAgaW5cbiAgbGV0IGV4cG9ydF9maWxlbmFtZSA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50ID1cbiAgICBVaV9jb21tb24uaWRfZG9tIChleHBvcnRfZmlsZW5hbWVfaWQgY29uZmlndXJhdGlvbilcbiAgaW5cbiAgbGV0IGV4cG9ydF9mb3JtYXQgOiBEb21faHRtbC5zZWxlY3RFbGVtZW50IEpzLnQgPVxuICAgIFVpX2NvbW1vbi5pZF9kb20gKGV4cG9ydF9mb3JtYXRfaWQgY29uZmlndXJhdGlvbilcbiAgaW5cbiAgbGV0IGV4cG9ydF9idXR0b25fdG9nZ2xlICgpIDogdW5pdCA9XG4gICAgbGV0IGlzX2Rpc2FibGVkIDogYm9vbCBKcy50ID1cbiAgICAgIEpzLmJvb2xcbiAgICAgICAgKChub3QgKFJlYWN0LlMudmFsdWUgY29uZmlndXJhdGlvbi5zaG93KSlcbiAgICAgICAgfHwgZXhwb3J0X2ZpbGVuYW1lIyMudmFsdWUjI3RyaW0jIy5sZW5ndGggPSAwKVxuICAgIGluXG4gICAgbGV0ICgpID0gZXhwb3J0X2J1dHRvbiMjLmRpc2FibGVkIDo9IGlzX2Rpc2FibGVkIGluXG4gICAgKClcbiAgaW5cbiAgbGV0ICgpID0gZXhwb3J0X2J1dHRvbl90b2dnbGUgKCkgaW5cbiAgbGV0ICgpID1cbiAgICBleHBvcnRfZmlsZW5hbWUjIy5vbmlucHV0IDo9XG4gICAgICBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgIGxldCAoKSA9IGV4cG9ydF9idXR0b25fdG9nZ2xlICgpIGluXG4gICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIGV4cG9ydF9idXR0b24jIy5vbmNsaWNrIDo9XG4gICAgICBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgIGxldCBoYW5kbGVyIDogaGFuZGxlciA9XG4gICAgICAgICAgICBMaXN0Lm50aCBjb25maWd1cmF0aW9uLmhhbmRsZXJzIGV4cG9ydF9mb3JtYXQjIy5zZWxlY3RlZEluZGV4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmlsZW5hbWUgZGVmYXVsdCA6IHN0cmluZyA9XG4gICAgICAgICAgICBsZXQgcm9vdCA6IHN0cmluZyA9IEpzLnRvX3N0cmluZyBleHBvcnRfZmlsZW5hbWUjIy52YWx1ZSBpblxuICAgICAgICAgICAgaWYgU3RyaW5nLmNvbnRhaW5zIHJvb3QgJy4nIHRoZW5cbiAgICAgICAgICAgICAgcm9vdFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICByb290IF4gXCIuXCIgXiBkZWZhdWx0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBoYW5kbGVyLmV4cG9ydCAoZmlsZW5hbWUgaGFuZGxlci5zdWZmaXgpIGluXG4gICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICAoKVxuXG5sZXQgZXhwb3J0X3N2ZyA/c3ZnX3N0eWxlX2lkIH4oc3ZnX2Rpdl9pZCA6IHN0cmluZykgKCkgOiBoYW5kbGVyID1cbiAge1xuICAgIHN1ZmZpeCA9IFwic3ZnXCI7XG4gICAgbGFiZWwgPSBcInN2Z1wiO1xuICAgIGV4cG9ydCA9XG4gICAgICAoZnVuIGZpbGVuYW1lIC0+XG4gICAgICAgIENvbW1vbi5wbG90U1ZHID9wbG90U3R5bGVJZDpzdmdfc3R5bGVfaWQgc3ZnX2Rpdl9pZCBmaWxlbmFtZSBmaWxlbmFtZSk7XG4gIH1cblxubGV0IGV4cG9ydF9wbmcgP3N2Z19zdHlsZV9pZCB+KHN2Z19kaXZfaWQgOiBzdHJpbmcpICgpIDogaGFuZGxlciA9XG4gIHtcbiAgICBzdWZmaXggPSBcInBuZ1wiO1xuICAgIGxhYmVsID0gXCJwbmdcIjtcbiAgICBleHBvcnQgPVxuICAgICAgKGZ1biBmaWxlbmFtZSAtPlxuICAgICAgICBDb21tb24ucGxvdFBORyA/cGxvdFN0eWxlSWQ6c3ZnX3N0eWxlX2lkIHN2Z19kaXZfaWQgZmlsZW5hbWUgZmlsZW5hbWUpO1xuICB9XG5cbmxldCBleHBvcnRfanNvbiB+KHNlcmlhbGl6ZV9qc29uIDogdW5pdCAtPiBzdHJpbmcpIDogaGFuZGxlciA9XG4gIHtcbiAgICBzdWZmaXggPSBcImpzb25cIjtcbiAgICBsYWJlbCA9IFwianNvblwiO1xuICAgIGV4cG9ydCA9XG4gICAgICAoZnVuIGZpbGVuYW1lIC0+XG4gICAgICAgIGxldCBkYXRhID0gSnMuc3RyaW5nIChzZXJpYWxpemVfanNvbiAoKSkgaW5cbiAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lOlwiYXBwbGljYXRpb24vanNvblwiIH5maWxlbmFtZSk7XG4gIH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCBkaXNwbGF5X2lkID0gXCJjb250YWN0LW1hcC1kaXNwbGF5XCJcbmxldCBleHBvcnRfaWQgPSBcImNvbnRhY3QtZXhwb3J0XCJcbmxldCBuYXZsaSAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgdHJ1ZVxubGV0IHRhYl93YXNfYWN0aXZlID0gcmVmIHRydWVcbmxldCBhY2N1cmFjeSwgc2V0X2FjY3VyYWN5ID0gUmVhY3QuUy5jcmVhdGUgKFNvbWUgUHVibGljX2RhdGEuTG93KVxuXG5sZXQgZXh0cmFjdF9jb250YWN0X21hcCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwiY29udGFjdCBtYXBcIiwgYEFzc29jIFsgKFwiYWNjdXJhY3lcIiwgYWNjKTsgKFwibWFwXCIsIGNvbnRhY3QpIF0pIF1cbiAgICAtPlxuICAgIGFjYywgY29udGFjdFxuICB8IGBBc3NvYyBbIChcImNvbnRhY3QgbWFwXCIsIGBBc3NvYyBbIChcIm1hcFwiLCBjb250YWN0KTsgKFwiYWNjdXJhY3lcIiwgYWNjKSBdKSBdXG4gICAgLT5cbiAgICBhY2MsIGNvbnRhY3RcbiAgfCBfIC0+IGZhaWx3aXRoIFwiV3JvbmcgdWdseSBjb250YWN0X21hcCBleHRyYWN0b3JcIlxuXG5sZXQgY29udGFjdF9tYXBfanMgOiBKc19jb250YWN0LmNvbnRhY3RfbWFwIEpzLnQgPVxuICBKc19jb250YWN0LmNyZWF0ZV9jb250YWN0X21hcCBkaXNwbGF5X2lkIFN0YXRlX3NldHRpbmdzLmFnZW50X2NvbG9yaW5nXG5cbmxldCBjb250YWN0X21hcF90ZXh0IDogc3RyaW5nIFJlYWN0LnNpZ25hbCA9XG4gIFN0YXRlX3Byb2plY3Qub25fcHJvamVjdF9jaGFuZ2VfYXN5bmMgfm9uOnRhYl9pc19hY3RpdmUgTm9uZSBhY2N1cmFjeSBcIm51bGxcIlxuICAgIChmdW5cbiAgICAgIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpXG4gICAgICAoYWNjIDogUHVibGljX2RhdGEuYWNjdXJhY3lfbGV2ZWwgb3B0aW9uKVxuICAgIC0+XG4gICAgICBtYW5hZ2VyI2dldF9jb250YWN0X21hcCBhY2NcbiAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICB+ZXJyb3I6KGZ1biBtaCAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBTdGF0ZV9lcnJvci5hZGRfZXJyb3IgXCJ0YWJfY29udGFjdF9tYXBcIiBtaCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBjb250YWN0X21hcF9qcyMjY2xlYXJEYXRhIGluXG4gICAgICAgICAgICAgIFwibnVsbFwiKVxuICAgICAgICAgICAgfm9rOihmdW4gY29udGFjdF9qc29uIC0+XG4gICAgICAgICAgICAgIGxldCBfLCBtYXBfanNvbiA9IGV4dHJhY3RfY29udGFjdF9tYXAgY29udGFjdF9qc29uIGluXG4gICAgICAgICAgICAgIGxldCBkYXRhID0gWW9qc29uLkJhc2ljLnRvX3N0cmluZyBtYXBfanNvbiBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBjb250YWN0X21hcF9qcyMjc2V0RGF0YSAoSnMuc3RyaW5nIGRhdGEpIGluXG4gICAgICAgICAgICAgIGRhdGEpKVxuXG5sZXQgY29uZmlndXJhdGlvbiA6IFdpZGdldF9leHBvcnQuY29uZmlndXJhdGlvbiA9XG4gIHtcbiAgICBXaWRnZXRfZXhwb3J0LmlkID0gZXhwb3J0X2lkO1xuICAgIFdpZGdldF9leHBvcnQuaGFuZGxlcnMgPVxuICAgICAgW1xuICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9zdmcgfnN2Z19kaXZfaWQ6ZGlzcGxheV9pZCAoKTtcbiAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnRfcG5nIH5zdmdfZGl2X2lkOmRpc3BsYXlfaWQgKCk7XG4gICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X2pzb24gfnNlcmlhbGl6ZV9qc29uOihmdW4gKCkgLT5cbiAgICAgICAgICAgIFJlYWN0LlMudmFsdWUgY29udGFjdF9tYXBfdGV4dCk7XG4gICAgICBdO1xuICAgIFdpZGdldF9leHBvcnQuc2hvdyA9IFJlYWN0LlMuY29uc3QgdHJ1ZTtcbiAgfVxuXG5sZXQgYWNjdXJhY3lfY2hvb3Nlcl9pZCA9IFwiY29udGFjdF9tYXAtYWNjdXJhY3lcIlxuXG5sZXQgYWNjdXJhY3lfY2hvb3NlciA9XG4gIGxldCBvcHRpb25fZ2VuIHggPVxuICAgIEh0bWwub3B0aW9uXG4gICAgICB+YTpcbiAgICAgICAgKChmdW4gbCAtPlxuICAgICAgICAgICBpZiBSZWFjdC5TLnZhbHVlIGFjY3VyYWN5ID0gU29tZSB4IHRoZW5cbiAgICAgICAgICAgICBIdG1sLmFfc2VsZWN0ZWQgKCkgOjogbFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbClcbiAgICAgICAgICAgWyBIdG1sLmFfdmFsdWUgKFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyB4KSBdKVxuICAgICAgKEh0bWwudHh0IChQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgeCkpXG4gIGluXG4gIEh0bWwuc2VsZWN0XG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07IEh0bWwuYV9pZCBhY2N1cmFjeV9jaG9vc2VyX2lkIF1cbiAgICAoTGlzdC5tYXAgb3B0aW9uX2dlbiBQdWJsaWNfZGF0YS5jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbHMpXG5cbmxldCBjb250ZW50ICgpID1cbiAgbGV0IGFjY3VyYWN5X2Zvcm0gPVxuICAgIEh0bWwuZm9ybVxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0taG9yaXpvbnRhbFwiIF07XG4gICAgICAgICAgSHRtbC5hX2lkIFwiY29udGFjdF9tYXBfYWNjdXJhY3lfZm9ybVwiO1xuICAgICAgICBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tZ3JvdXBcIiBdIF1cbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmxhYmVsXG4gICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdO1xuICAgICAgICAgICAgICAgICAgSHRtbC5hX2xhYmVsX2ZvciBhY2N1cmFjeV9jaG9vc2VyX2lkO1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgWyBIdG1sLnR4dCBcIkFjY3VyYWN5XCIgXTtcbiAgICAgICAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMTBcIiBdIF0gWyBhY2N1cmFjeV9jaG9vc2VyIF07XG4gICAgICAgICAgXTtcbiAgICAgIF1cbiAgaW5cbiAgW1xuICAgIGFjY3VyYWN5X2Zvcm07XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2lkIGRpc3BsYXlfaWQ7IEh0bWwuYV9jbGFzcyBbIFwiZmxleC1jb250ZW50XCIgXSBdXG4gICAgICBbIEh0bWwuZW50aXR5IFwibmJzcFwiIF07XG4gICAgV2lkZ2V0X2V4cG9ydC5jb250ZW50IGNvbmZpZ3VyYXRpb247XG4gIF1cblxubGV0IHBhcmVudF9oaWRlICgpID0gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2VcbmxldCBwYXJlbnRfc2hvd24gKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSAhdGFiX3dhc19hY3RpdmVcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9IFdpZGdldF9leHBvcnQub25sb2FkIGNvbmZpZ3VyYXRpb24gaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBhY2N1cmFjeV9jaG9vc2VyKSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gdmEgXyAtPlxuICAgICAgICAgICBsZXQgdmEgPSBKcy50b19zdHJpbmcgdmEjIy52YWx1ZSBpblxuICAgICAgICAgICBsZXQgKCkgPSBzZXRfYWNjdXJhY3kgKFB1YmxpY19kYXRhLmFjY3VyYWN5X29mX3N0cmluZyB2YSkgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZjb250YWN0X21hcFwiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gZmFsc2UgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZjb250YWN0X21hcFwiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IHRydWUgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9XG4gIGlmIFJlYWN0LlMudmFsdWUgdGFiX2lzX2FjdGl2ZSB0aGVuIGNvbnRhY3RfbWFwX2pzIyNyZWRyYXdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmNsYXNzIHR5cGUgZ3JhcGhfbG9nZ2VyID0gb2JqZWN0XG4gIG1ldGhvZCBzZXREYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBjbGVhckRhdGEgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgY3JlYXRlX2dyYXBoX2xvZ2dlciAoaWQgOiBzdHJpbmcpIChvbl9jbGljayA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIDpcbiAgICBncmFwaF9sb2dnZXIgSnMudCA9XG4gIEpzLlVuc2FmZS5uZXdfb2JqXG4gICAgKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJHcmFwaExvZ2dlclwiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBpZCk7IEpzLlVuc2FmZS5pbmplY3Qgb25fY2xpY2sgfF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgbW9kZWxfZ3JhcGggPSB7IGZ3ZDogaW50IG9wdGlvbjsgYndkOiBpbnQgb3B0aW9uOyB0b3RhbDogaW50IH1cblxudHlwZSBpbmZsdWVuY2Vfc3BoZXJlID0ge1xuICBwb3NpdGl2ZV9vbjpcbiAgICAoKFB1YmxpY19kYXRhLnJ1bGUsIFB1YmxpY19kYXRhLnZhcikgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGVcbiAgICAqIFB1YmxpY19kYXRhLmxvY2F0aW9uIFB1YmxpY19kYXRhLnBhaXIgbGlzdClcbiAgICBsaXN0O1xuICBuZWdhdGl2ZV9vbjpcbiAgICAoKFB1YmxpY19kYXRhLnJ1bGUsIFB1YmxpY19kYXRhLnZhcikgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGVcbiAgICAqIFB1YmxpY19kYXRhLmxvY2F0aW9uIFB1YmxpY19kYXRhLnBhaXIgbGlzdClcbiAgICBsaXN0O1xuICBwb3NpdGl2ZV9ieTpcbiAgICAoKFB1YmxpY19kYXRhLnJ1bGUsIFB1YmxpY19kYXRhLnZhcikgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGVcbiAgICAqIFB1YmxpY19kYXRhLmxvY2F0aW9uIFB1YmxpY19kYXRhLnBhaXIgbGlzdClcbiAgICBsaXN0O1xuICBuZWdhdGl2ZV9ieTpcbiAgICAoKFB1YmxpY19kYXRhLnJ1bGUsIFB1YmxpY19kYXRhLnZhcikgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGVcbiAgICAqIFB1YmxpY19kYXRhLmxvY2F0aW9uIFB1YmxpY19kYXRhLnBhaXIgbGlzdClcbiAgICBsaXN0O1xufVxuXG5sZXQgZW1wdHlfc3BoZXJlID1cbiAgeyBwb3NpdGl2ZV9vbiA9IFtdOyBwb3NpdGl2ZV9ieSA9IFtdOyBuZWdhdGl2ZV9vbiA9IFtdOyBuZWdhdGl2ZV9ieSA9IFtdIH1cblxudHlwZSBtb2RlbF9yZW5kZXJpbmcgPSBEcmF3R3JhcGggb2YgbW9kZWxfZ3JhcGggfCBEcmF3VGFidWxhciBvZiB1bml0XG5cbnR5cGUgbW9kZWwgPSB7XG4gIHJlbmRlcmluZzogbW9kZWxfcmVuZGVyaW5nO1xuICBhY2N1cmFjeTogUHVibGljX2RhdGEuYWNjdXJhY3lfbGV2ZWwgb3B0aW9uO1xuICBvcmlnaW46IChpbnQsIGludCkgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGUgb3B0aW9uO1xuICBvcmlnaW5fbGFiZWw6IHN0cmluZyBvcHRpb247XG59XG5cbmxldCBuYXZsaSAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCB0YWJfd2FzX2FjdGl2ZSA9IHJlZiBmYWxzZVxubGV0IHRyYWNrX2N1cnNvciwgc2V0X3RyYWNrX2N1cnNvciA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5cbmxldCBkdW1teV9tb2RlbCA9XG4gIHtcbiAgICByZW5kZXJpbmcgPSBEcmF3VGFidWxhciAoKTtcbiAgICBhY2N1cmFjeSA9IFNvbWUgUHVibGljX2RhdGEuTG93O1xuICAgIG9yaWdpbiA9IE5vbmU7XG4gICAgb3JpZ2luX2xhYmVsID0gTm9uZTtcbiAgfVxuXG5sZXQgbW9kZWwsIHNldF9tb2RlbCA9IFJlYWN0LlMuY3JlYXRlIGR1bW15X21vZGVsXG5sZXQgdG90YWxfaW5wdXRfaWQgPSBcInRvdGFsX2lucHV0XCJcbmxldCBmd2RfaW5wdXRfaWQgPSBcImZ3ZF9pbnB1dFwiXG5sZXQgYndkX2lucHV0X2lkID0gXCJid2RfaW5wdXRcIlxuXG5sZXQgaW5mbHVlbmNlX25vZGVfbGFiZWwgPSBmdW5jdGlvblxuICB8IFB1YmxpY19kYXRhLlJ1bGUgciAtPlxuICAgIGlmIHIuUHVibGljX2RhdGEucnVsZV9sYWJlbCA9IFwiXCIgdGhlblxuICAgICAgci5QdWJsaWNfZGF0YS5ydWxlX2FzdFxuICAgIGVsc2VcbiAgICAgIHIuUHVibGljX2RhdGEucnVsZV9sYWJlbFxuICB8IFB1YmxpY19kYXRhLlZhciByIC0+XG4gICAgaWYgci5QdWJsaWNfZGF0YS52YXJfbGFiZWwgPSBcIlwiIHRoZW5cbiAgICAgIHIuUHVibGljX2RhdGEudmFyX2FzdFxuICAgIGVsc2VcbiAgICAgIHIuUHVibGljX2RhdGEudmFyX2xhYmVsXG5cbmxldCB1cGRhdGVfbW9kZWxfZ3JhcGggZiA9XG4gIGxldCBtID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICBtYXRjaCBtLnJlbmRlcmluZyB3aXRoXG4gIHwgRHJhd1RhYnVsYXIgXyAtPiAoKVxuICB8IERyYXdHcmFwaCBnIC0+IHNldF9tb2RlbCB7IG0gd2l0aCByZW5kZXJpbmcgPSBEcmF3R3JhcGggKGYgZykgfVxuXG5sZXQgdXBkYXRlX21vZGVsIGYgPSBzZXRfbW9kZWwgKGYgKFJlYWN0LlMudmFsdWUgbW9kZWwpKVxubGV0IGRpc3BsYXlfaWQgPSBcImluZmx1ZW5jZV9tYXBfZGlzcGxheVwiXG5cbmxldCBpbmZsdWVuY2VtYXAgPVxuICBKc19ncmFwaGxvZ2dlci5jcmVhdGVfZ3JhcGhfbG9nZ2VyIGRpc3BsYXlfaWQgKGZ1biB4IC0+XG4gICAgICB1cGRhdGVfbW9kZWwgKGZ1biBtIC0+XG4gICAgICAgICAgbGV0IG5vZGUgPVxuICAgICAgICAgICAgUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgKEpzLnRvX3N0cmluZyB4KSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBTdWJwYW5lbF9lZGl0b3Iuc2V0X21vdmVfY3Vyc29yXG4gICAgICAgICAgICAgIChQdWJsaWNfZGF0YS5wb3NpdGlvbl9vZl9yZWZpbmVkX2luZmx1ZW5jZV9ub2RlIG5vZGUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb3JpZ2luID0gU29tZSAoUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgbm9kZSkgaW5cbiAgICAgICAgICBsZXQgb3JpZ2luX2xhYmVsID0gU29tZSAoaW5mbHVlbmNlX25vZGVfbGFiZWwgbm9kZSkgaW5cbiAgICAgICAgICB7IG0gd2l0aCBvcmlnaW47IG9yaWdpbl9sYWJlbCB9KSlcblxubGV0IHRvdGFsX2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgdG90YWxfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBOdW1iZXI7XG4gICAgICAgIEh0bWwuYV92YWx1ZSBcIjFcIjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICBIdG1sLmFfc2l6ZSAxO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBmd2RfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCBmd2RfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBOdW1iZXI7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgSHRtbC5hX3NpemUgMTtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgYndkX2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgYndkX2lucHV0X2lkO1xuICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgTnVtYmVyO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgIEh0bWwuYV9zaXplIDE7XG4gICAgICBdXG4gICAgKClcblxubGV0IG5leHRfbm9kZSA9XG4gIEh0bWwuYnV0dG9uXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiOyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgIF1cbiAgICBbIEh0bWwudHh0IFwiTmV4dFwiIF1cblxubGV0IHByZXZfbm9kZSA9XG4gIEh0bWwuYnV0dG9uXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiOyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgIF1cbiAgICBbIEh0bWwudHh0IFwiUHJldmlvdXNcIiBdXG5cbmxldCByZWNlbnRlciA9XG4gIEh0bWwuYnV0dG9uXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiOyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgIF1cbiAgICBbIEh0bWwudHh0IFwiUmVzZXRcIiBdXG5cbmxldCB0cmFja19jdXJzb3Jfc3dpdGNoID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247XG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbDUuYV9jbGFzc1xuICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgIChmdW4gdGMgLT5cbiAgICAgICAgICAgICAgIFwiZm9ybS1jb250cm9sXCIgOjogXCJidG5cIiA6OiBcImJ0bi1kZWZhdWx0XCJcbiAgICAgICAgICAgICAgIDo6XG4gICAgICAgICAgICAgICAoaWYgdGMgdGhlblxuICAgICAgICAgICAgICAgICAgWyBcImFjdGl2ZVwiIF1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBbXSkpXG4gICAgICAgICAgICAgdHJhY2tfY3Vyc29yKTtcbiAgICAgICAgSHRtbC5hX29uY2xpY2sgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBzZXRfdHJhY2tfY3Vyc29yIChub3QgKFJlYWN0LlMudmFsdWUgdHJhY2tfY3Vyc29yKSkgaW5cbiAgICAgICAgICAgIHRydWUpO1xuICAgICAgXVxuICAgIFsgSHRtbC50eHQgXCJUcmFjayBjdXJzb3JcIiBdXG5cbmxldCBleHBvcnRfY29uZmlnID1cbiAge1xuICAgIFdpZGdldF9leHBvcnQuaWQgPSBcImluZmx1ZW5jZS1leHBvcnRcIjtcbiAgICBXaWRnZXRfZXhwb3J0LmhhbmRsZXJzID1cbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJqc29uXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwianNvblwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID1cbiAgICAgICAgICAgIChmdW4gZmlsZW5hbWUgLT5cbiAgICAgICAgICAgICAgTHd0Lmlnbm9yZV9yZXN1bHRcbiAgICAgICAgICAgICAgICAoIFN0YXRlX2Vycm9yLndyYXAgXCJpbmZsdWVuY2VfbWFwX2V4cG9ydFwiXG4gICAgICAgICAgICAgICAgICAgIChTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB7IGFjY3VyYWN5OyBfIH0gPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNnZXRfaW5mbHVlbmNlX21hcF9yYXcgYWNjdXJhY3lcbiAgICAgICAgICAgICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwubWFwIChmdW4gaW5mbHVlbmNlc19zdHJpbmcgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0gSnMuc3RyaW5nIGluZmx1ZW5jZXNfc3RyaW5nIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uc2F2ZUZpbGUgfmRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+bWltZTpcImFwcGxpY2F0aW9uL2pzb25cIiB+ZmlsZW5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKVxuICAgICAgICAgICAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQgKSk7XG4gICAgICAgIH07XG4gICAgICBdO1xuICAgIFdpZGdldF9leHBvcnQuc2hvdyA9IFJlYWN0LlMuY29uc3QgdHJ1ZTtcbiAgfVxuXG5sZXQgcmVuZGVyaW5nX2Nob29zZXJfaWQgPSBcImluZmx1ZW5jZS1yZW5kZXJpbmdcIlxuXG5sZXQgcmVuZGVyaW5nX2Nob29zZXIgPVxuICBsZXQgeyByZW5kZXJpbmc7IF8gfSA9IFJlYWN0LlMudmFsdWUgbW9kZWwgaW5cbiAgSHRtbC5zZWxlY3RcbiAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTsgSHRtbC5hX2lkIHJlbmRlcmluZ19jaG9vc2VyX2lkIF1cbiAgICBbXG4gICAgICBIdG1sLm9wdGlvblxuICAgICAgICB+YTpcbiAgICAgICAgICAoKGZ1biBsIC0+XG4gICAgICAgICAgICAgbWF0Y2ggcmVuZGVyaW5nIHdpdGhcbiAgICAgICAgICAgICB8IERyYXdUYWJ1bGFyIF8gLT4gSHRtbC5hX3NlbGVjdGVkICgpIDo6IGxcbiAgICAgICAgICAgICB8IERyYXdHcmFwaCBfIC0+IGwpXG4gICAgICAgICAgICAgWyBIdG1sLmFfdmFsdWUgXCJ0YWJ1bGFyXCIgXSlcbiAgICAgICAgKEh0bWwudHh0IFwiVGFidWxhclwiKTtcbiAgICAgIEh0bWwub3B0aW9uXG4gICAgICAgIH5hOlxuICAgICAgICAgICgoZnVuIGwgLT5cbiAgICAgICAgICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgICAgICAgIHwgRHJhd0dyYXBoIF8gLT4gSHRtbC5hX3NlbGVjdGVkICgpIDo6IGxcbiAgICAgICAgICAgICB8IERyYXdUYWJ1bGFyIF8gLT4gbClcbiAgICAgICAgICAgICBbIEh0bWwuYV92YWx1ZSBcImdyYXBoXCIgXSlcbiAgICAgICAgKEh0bWwudHh0IFwiR3JhcGhcIik7XG4gICAgXVxuXG5sZXQgYWNjdXJhY3lfY2hvb3Nlcl9pZCA9IFwiaW5mbHVlbmNlLWFjY3VyYWN5XCJcblxubGV0IGFjY3VyYWN5X2Nob29zZXIgPVxuICBsZXQgeyBhY2N1cmFjeTsgXyB9ID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICBsZXQgb3B0aW9uX2dlbiB4ID1cbiAgICBIdG1sLm9wdGlvblxuICAgICAgfmE6XG4gICAgICAgICgoZnVuIGwgLT5cbiAgICAgICAgICAgaWYgYWNjdXJhY3kgPSBTb21lIHggdGhlblxuICAgICAgICAgICAgIEh0bWwuYV9zZWxlY3RlZCAoKSA6OiBsXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsKVxuICAgICAgICAgICBbIEh0bWwuYV92YWx1ZSAoUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIHgpIF0pXG4gICAgICAoSHRtbC50eHQgKFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyB4KSlcbiAgaW5cbiAgSHRtbC5zZWxlY3RcbiAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTsgSHRtbC5hX2lkIGFjY3VyYWN5X2Nob29zZXJfaWQgXVxuICAgIChMaXN0Lm1hcCBvcHRpb25fZ2VuIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWxzKVxuXG5sZXQgaXNfY2VudGVyIG9yaWdpbl9zaG9ydF9vcHQgbm9kZSA9XG4gIG1hdGNoIG9yaWdpbl9zaG9ydF9vcHQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAobWF0Y2ggbm9kZSB3aXRoXG4gICAgfCBQdWJsaWNfZGF0YS5SdWxlIHIgLT4gci5QdWJsaWNfZGF0YS5ydWxlX2lkID0gMFxuICAgIHwgUHVibGljX2RhdGEuVmFyIF8gLT4gZmFsc2UpXG4gIHwgU29tZSBvcmlnaW4gLT5cbiAgICAobWF0Y2ggb3JpZ2luLCBub2RlIHdpdGhcbiAgICB8IFB1YmxpY19kYXRhLlJ1bGUgaWQsIFB1YmxpY19kYXRhLlJ1bGUgYSAtPiBhLlB1YmxpY19kYXRhLnJ1bGVfaWQgPSBpZFxuICAgIHwgUHVibGljX2RhdGEuVmFyIGlkLCBQdWJsaWNfZGF0YS5WYXIgYSAtPiBhLlB1YmxpY19kYXRhLnZhcl9pZCA9IGlkXG4gICAgfCBQdWJsaWNfZGF0YS5WYXIgXywgUHVibGljX2RhdGEuUnVsZSBfXG4gICAgfCBQdWJsaWNfZGF0YS5SdWxlIF8sIFB1YmxpY19kYXRhLlZhciBfIC0+XG4gICAgICBmYWxzZSlcblxubGV0IGpzb25fdG9fZ3JhcGggbG9nZ2VyIChfLCBfLCBfLCBfLCBvcmlnaW4sIGluZmx1ZW5jZV9tYXApID1cbiAgbGV0IG9yaWdpbl9zaG9ydF9vcHQgPVxuICAgIE9wdGlvbl91dGlsLm1hcCBQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBvcmlnaW5cbiAgaW5cbiAgbGV0ICgpID0gR3JhcGhfbG9nZ2Vycy5wcmludF9ncmFwaF9wcmVhbWJsZSBsb2dnZXIgXCJcIiBpblxuICBsZXQgbm9kZXMgPSBpbmZsdWVuY2VfbWFwLlB1YmxpY19kYXRhLm5vZGVzIGluXG4gIGxldCBkaXJlY3RpdmVzX29mX25vZGUgbm9kZSA9XG4gICAgbGV0IGpzb24gPSBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX3RvX2pzb24gbm9kZSBpblxuICAgIGxldCBsYWJlbCA9IGluZmx1ZW5jZV9ub2RlX2xhYmVsIG5vZGUgaW5cbiAgICBtYXRjaCBub2RlIHdpdGhcbiAgICB8IFB1YmxpY19kYXRhLlJ1bGUgciAtPlxuICAgICAgbGV0IHBvcyA9IHIuUHVibGljX2RhdGEucnVsZV9wb3NpdGlvbiBpblxuICAgICAgbGV0IGNvbnRleHR1YWxfaGVscCA9IExvYy50b19zdHJpbmcgcG9zIF4gXCIgXCIgXiByLlB1YmxpY19kYXRhLnJ1bGVfYXN0IGluXG4gICAgICBsZXQgZmlsbGNvbG9yID1cbiAgICAgICAgaWYgaXNfY2VudGVyIG9yaWdpbl9zaG9ydF9vcHQgbm9kZSB0aGVuXG4gICAgICAgICAgIUNvbmZpZy5jZW50ZXJfY29sb3JcbiAgICAgICAgZWxzZVxuICAgICAgICAgICFDb25maWcucnVsZV9jb2xvclxuICAgICAgaW5cbiAgICAgIFtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgbGFiZWw7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlICFDb25maWcucnVsZV9zaGFwZTtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIGZpbGxjb2xvcjtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgZmlsbGNvbG9yO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvbiBbIHBvcyBdO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb247XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBjb250ZXh0dWFsX2hlbHA7XG4gICAgICBdXG4gICAgfCBQdWJsaWNfZGF0YS5WYXIgciAtPlxuICAgICAgbGV0IHBvcyA9IHIuUHVibGljX2RhdGEudmFyX3Bvc2l0aW9uIGluXG4gICAgICBsZXQgY29udGV4dHVhbF9oZWxwID0gTG9jLnRvX3N0cmluZyBwb3MgXiByLlB1YmxpY19kYXRhLnZhcl9hc3QgaW5cbiAgICAgIGxldCBmaWxsY29sb3IgPVxuICAgICAgICBpZiBpc19jZW50ZXIgb3JpZ2luX3Nob3J0X29wdCBub2RlIHRoZW5cbiAgICAgICAgICAhQ29uZmlnLmNlbnRlcl9jb2xvclxuICAgICAgICBlbHNlXG4gICAgICAgICAgIUNvbmZpZy52YXJpYWJsZV9jb2xvclxuICAgICAgaW5cbiAgICAgIFtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgbGFiZWw7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlICFDb25maWcudmFyaWFibGVfc2hhcGU7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBmaWxsY29sb3I7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIGZpbGxjb2xvcjtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb24gWyBwb3MgXTtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBqc29uO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgY29udGV4dHVhbF9oZWxwO1xuICAgICAgXVxuICBpblxuICBsZXQgbWF4X3J1bGVfaWQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGJpZ2dlc3RfaWQgbiAtPlxuICAgICAgICBtYXRjaCBuIHdpdGhcbiAgICAgICAgfCBQdWJsaWNfZGF0YS5SdWxlIHIgLT4gbWF4IGJpZ2dlc3RfaWQgKDEgKyByLlB1YmxpY19kYXRhLnJ1bGVfaWQpXG4gICAgICAgIHwgUHVibGljX2RhdGEuVmFyIF8gLT4gYmlnZ2VzdF9pZClcbiAgICAgICgtMSkgbm9kZXNcbiAgaW5cbiAgbGV0IGdldF9pZF9vZl9ub2RlX2lkIG5vZGVfaWQgPVxuICAgIG1hdGNoIG5vZGVfaWQgd2l0aFxuICAgIHwgUHVibGljX2RhdGEuUnVsZSBpZCAtPiBpZFxuICAgIHwgUHVibGljX2RhdGEuVmFyIGlkIC0+IGlkICsgbWF4X3J1bGVfaWRcbiAgaW5cbiAgbGV0IGdldF9pZF9vZl9ub2RlIG5vZGUgPVxuICAgIGdldF9pZF9vZl9ub2RlX2lkIChQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBub2RlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biBub2RlIC0+XG4gICAgICAgIGxldCBkaXJlY3RpdmVzID0gZGlyZWN0aXZlc19vZl9ub2RlIG5vZGUgaW5cbiAgICAgICAgR3JhcGhfbG9nZ2Vycy5wcmludF9ub2RlIGxvZ2dlciB+ZGlyZWN0aXZlc1xuICAgICAgICAgIChzdHJpbmdfb2ZfaW50IChnZXRfaWRfb2Zfbm9kZSBub2RlKSkpXG4gICAgICBub2Rlc1xuICBpblxuICBsZXQgcHJpbnRfbWFwcyA/KGRpcmVjdGl2ZXMgPSBbXSkgbG9nZ2VyIG1hcCA9XG4gICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5pdGVyXG4gICAgICAoZnVuIHNvdXJjZSBtYXAgLT5cbiAgICAgICAgbGV0IHNvdXJjZV9pZCA9IHN0cmluZ19vZl9pbnQgKGdldF9pZF9vZl9ub2RlX2lkIHNvdXJjZSkgaW5cbiAgICAgICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5pdGVyXG4gICAgICAgICAgKGZ1biB0YXJnZXQgbGFiZWxfbGlzdCAtPlxuICAgICAgICAgICAgbGV0IHRhcmdldF9pZCA9IHN0cmluZ19vZl9pbnQgKGdldF9pZF9vZl9ub2RlX2lkIHRhcmdldCkgaW5cbiAgICAgICAgICAgICgqbGV0IGxhYmVsX3N0cmluZyA9IFwidG9kb1wiXG4gICAgICAgICAgICAgIGluKilcbiAgICAgICAgICAgIGxldCBsYWJlbF9zdHJpbmcgPSBQdWJsaWNfZGF0YS5zdHJpbmdfb2ZfbGFiZWxfbGlzdCBsYWJlbF9saXN0IGluXG4gICAgICAgICAgICBsZXQgZGlyZWN0aXZlcyA9XG4gICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIGxhYmVsX3N0cmluZyA6OiBkaXJlY3RpdmVzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vycy5wcmludF9lZGdlIGxvZ2dlciB+ZGlyZWN0aXZlcyBzb3VyY2VfaWQgdGFyZ2V0X2lkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCkpXG4gICAgICAgICAgbWFwKVxuICAgICAgbWFwXG4gIGluXG4gIGxldCBkaXJlY3RpdmVzID1cbiAgICBbXG4gICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciAhQ29uZmlnLndha2VfdXBfY29sb3I7XG4gICAgICBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd0hlYWQgIUNvbmZpZy53YWtlX3VwX2Fycm93O1xuICAgIF1cbiAgaW5cbiAgbGV0ICgpID0gcHJpbnRfbWFwcyB+ZGlyZWN0aXZlcyBsb2dnZXIgaW5mbHVlbmNlX21hcC5QdWJsaWNfZGF0YS5wb3NpdGl2ZSBpblxuICBsZXQgZGlyZWN0aXZlcyA9XG4gICAgW1xuICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgIUNvbmZpZy5pbmhpYml0aW9uX2NvbG9yO1xuICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkICFDb25maWcuaW5oaWJpdGlvbl9hcnJvdztcbiAgICBdXG4gIGluXG4gIGxldCAoKSA9IHByaW50X21hcHMgfmRpcmVjdGl2ZXMgbG9nZ2VyIGluZmx1ZW5jZV9tYXAuUHVibGljX2RhdGEubmVnYXRpdmUgaW5cbiAgbGV0ICgpID0gR3JhcGhfbG9nZ2Vycy5wcmludF9ncmFwaF9mb290IGxvZ2dlciBpblxuICAoKVxuXG5sZXQgdGFibGVfb2ZfaW5mbHVlbmNlc19qc29uIChfLCBfLCBfLCBfLCBvcmlnaW4sIGluZmx1ZW5jZV9tYXApID1cbiAgbGV0IG5hbWVyID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgZSAtPlxuICAgICAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmFkZFxuICAgICAgICAgIChQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBlKVxuICAgICAgICAgIGUgYWNjKVxuICAgICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5lbXB0eSBpbmZsdWVuY2VfbWFwLlB1YmxpY19kYXRhLm5vZGVzXG4gIGluXG4gIGxldCBvcmlnaW5faWRfb3B0ID1cbiAgICBPcHRpb25fdXRpbC5tYXAgUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgb3JpZ2luXG4gIGluXG4gIG1hdGNoIG9yaWdpbl9pZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gZW1wdHlfc3BoZXJlXG4gIHwgU29tZSBvcmlnaW5faWQgLT5cbiAgICBsZXQgcG9zaXRpdmVfb24sIHBvc2l0aXZlX2J5ID1cbiAgICAgIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZm9sZFxuICAgICAgICAoZnVuIHNyYyAtPlxuICAgICAgICAgIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZm9sZCAoZnVuIGRzdCBkYXRhICgob24sIGJ5KSBhcyBhY2MpIC0+XG4gICAgICAgICAgICAgIGlmIHNyYyA9IG9yaWdpbl9pZCB0aGVuIChcbiAgICAgICAgICAgICAgICBtYXRjaCBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZpbmRfb3B0aW9uIGRzdCBuYW1lciB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgIHwgU29tZSB2IC0+ICh2LCBkYXRhKSA6OiBvbiwgYnlcbiAgICAgICAgICAgICAgKSBlbHNlIGlmIGRzdCA9IG9yaWdpbl9pZCB0aGVuIChcbiAgICAgICAgICAgICAgICBtYXRjaCBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZpbmRfb3B0aW9uIHNyYyBuYW1lciB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgIHwgU29tZSB2IC0+IG9uLCAodiwgZGF0YSkgOjogYnlcbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgYWNjKSlcbiAgICAgICAgaW5mbHVlbmNlX21hcC5QdWJsaWNfZGF0YS5wb3NpdGl2ZSAoW10sIFtdKVxuICAgIGluXG4gICAgbGV0IG5lZ2F0aXZlX29uLCBuZWdhdGl2ZV9ieSA9XG4gICAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZvbGRcbiAgICAgICAgKGZ1biBzcmMgLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZvbGQgKGZ1biBkc3QgZGF0YSAoKG9uLCBieSkgYXMgYWNjKSAtPlxuICAgICAgICAgICAgICBpZiBzcmMgPSBvcmlnaW5faWQgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWF0Y2ggUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5maW5kX29wdGlvbiBkc3QgbmFtZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiAodiwgZGF0YSkgOjogb24sIGJ5XG4gICAgICAgICAgICAgICkgZWxzZSBpZiBkc3QgPSBvcmlnaW5faWQgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWF0Y2ggUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5maW5kX29wdGlvbiBzcmMgbmFtZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBvbiwgKHYsIGRhdGEpIDo6IGJ5XG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGFjYykpXG4gICAgICAgIGluZmx1ZW5jZV9tYXAuUHVibGljX2RhdGEubmVnYXRpdmUgKFtdLCBbXSlcbiAgICBpblxuICAgIHsgcG9zaXRpdmVfb247IHBvc2l0aXZlX2J5OyBuZWdhdGl2ZV9vbjsgbmVnYXRpdmVfYnkgfVxuXG5sZXQgcG9wX2NlbGwgPSBmdW5jdGlvblxuICB8IFtdIC0+IEh0bWwudGQgW10sIFtdXG4gIHwgKChub2RlLCBfbWFwcGluZ3MpLCBwb3NpdGl2ZSkgOjogdCAtPlxuICAgICggSHRtbC50ZFxuICAgICAgICB+YTpcbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmFfb25jbGljayAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgU3VicGFuZWxfZWRpdG9yLnNldF9tb3ZlX2N1cnNvclxuICAgICAgICAgICAgICAgICAgICAoUHVibGljX2RhdGEucG9zaXRpb25fb2ZfcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZSBub2RlKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IG9yaWdpbiA9XG4gICAgICAgICAgICAgICAgICBTb21lIChQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBub2RlKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IG9yaWdpbl9sYWJlbCA9IFNvbWUgKGluZmx1ZW5jZV9ub2RlX2xhYmVsIG5vZGUpIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZV9tb2RlbCAoZnVuIG0gLT4geyBtIHdpdGggb3JpZ2luOyBvcmlnaW5fbGFiZWwgfSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHRydWUpO1xuICAgICAgICAgICAgSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAoaWYgcG9zaXRpdmUgdGhlblxuICAgICAgICAgICAgICAgICAgIFwic3VjY2Vzc1wiXG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICBcImRhbmdlclwiKTtcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICBdXG4gICAgICAgIFsgSHRtbC5jZGF0YSAoaW5mbHVlbmNlX25vZGVfbGFiZWwgbm9kZSkgXSxcbiAgICAgIHQgKVxuXG5sZXQgcmVjIGZpbGxfdGFibGUgYWNjIGJ5IG9uID1cbiAgaWYgb24gPSBbXSAmJiBieSA9IFtdIHRoZW5cbiAgICBMaXN0LnJldiBhY2NcbiAgZWxzZSAoXG4gICAgbGV0IGIsIGJ5JyA9IHBvcF9jZWxsIGJ5IGluXG4gICAgbGV0IG8sIG9uJyA9IHBvcF9jZWxsIG9uIGluXG4gICAgbGV0IGxpbmUgPSBIdG1sLnRyIFsgYjsgbyBdIGluXG4gICAgZmlsbF90YWJsZSAobGluZSA6OiBhY2MpIGJ5JyBvbidcbiAgKVxuXG5sZXQgZHJhd190YWJsZSBvcmlnaW5fbGFiZWxcbiAgICB7IHBvc2l0aXZlX29uOyBwb3NpdGl2ZV9ieTsgbmVnYXRpdmVfb247IG5lZ2F0aXZlX2J5IH0gPVxuICBsZXQgYnkgPVxuICAgIExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZFxuICAgICAgKGZ1biB4IC0+IHgsIGZhbHNlKVxuICAgICAgbmVnYXRpdmVfYnlcbiAgICAgIChMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgsIHRydWUpIHBvc2l0aXZlX2J5KVxuICBpblxuICBsZXQgb24gPVxuICAgIExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZFxuICAgICAgKGZ1biB4IC0+IHgsIGZhbHNlKVxuICAgICAgbmVnYXRpdmVfb25cbiAgICAgIChMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgsIHRydWUpIHBvc2l0aXZlX29uKVxuICBpblxuICBsZXQgb3V0cyA9IGZpbGxfdGFibGUgW10gYnkgb24gaW5cbiAgSHRtbC50YWJsZXhcbiAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwidGFibGVcIiBdIF1cbiAgICB+dGhlYWQ6XG4gICAgICAoSHRtbC50aGVhZFxuICAgICAgICAgW1xuICAgICAgICAgICBIdG1sLnRyXG4gICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgSHRtbC50aFxuICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jb2xzcGFuIDIgXVxuICAgICAgICAgICAgICAgICBbIEh0bWwuY2RhdGEgKE9wdGlvbl91dGlsLnVuc29tZSBcIm9yaWdpblwiIG9yaWdpbl9sYWJlbCkgXTtcbiAgICAgICAgICAgICBdO1xuICAgICAgICAgICBIdG1sLnRyXG4gICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgSHRtbC50aCBbIEh0bWwuY2RhdGEgXCJpcyBpbmZsdWVuY2VkIGJ5XCIgXTtcbiAgICAgICAgICAgICAgIEh0bWwudGggWyBIdG1sLmNkYXRhIFwiaW5mbHVlbmNlc1wiIF07XG4gICAgICAgICAgICAgXTtcbiAgICAgICAgIF0pXG4gICAgWyBIdG1sLnRib2R5IG91dHMgXVxuXG5sZXQgaW5mbHVlbmNlX3NwaGVyZSA9XG4gIFN0YXRlX3Byb2plY3Qub25fcHJvamVjdF9jaGFuZ2VfYXN5bmMgfm9uOnRhYl9pc19hY3RpdmUgZHVtbXlfbW9kZWwgbW9kZWxcbiAgICAoUmVzdWx0X3V0aWwub2sgZW1wdHlfc3BoZXJlKVxuICAgIChmdW4gbWFuYWdlciB7IHJlbmRlcmluZzsgYWNjdXJhY3k7IG9yaWdpbjsgb3JpZ2luX2xhYmVsID0gXyB9IC0+XG4gICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgfCBEcmF3VGFidWxhciBfIC0+XG4gICAgICAgIG1hbmFnZXIjZ2V0X2xvY2FsX2luZmx1ZW5jZV9tYXAgP2Z3ZDpOb25lID9id2Q6Tm9uZSA/b3JpZ2luIH50b3RhbDoxXG4gICAgICAgICAgYWNjdXJhY3lcbiAgICAgICAgPnw9IFJlc3VsdF91dGlsLm1hcCB0YWJsZV9vZl9pbmZsdWVuY2VzX2pzb25cbiAgICAgIHwgRHJhd0dyYXBoIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgZW1wdHlfc3BoZXJlKSlcblxubGV0IGNvbnRlbnQgKCkgPVxuICBsZXQgYWNjdXJhY3lfZm9ybSA9XG4gICAgSHRtbC5mb3JtXG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1ob3Jpem9udGFsXCIgXSBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tZ3JvdXBcIiBdIF1cbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmxhYmVsXG4gICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdO1xuICAgICAgICAgICAgICAgICAgSHRtbC5hX2xhYmVsX2ZvciByZW5kZXJpbmdfY2hvb3Nlcl9pZDtcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJSZW5kZXJpbmdcIiBdO1xuICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtNFwiIF0gXSBbIHJlbmRlcmluZ19jaG9vc2VyIF07XG4gICAgICAgICAgICBIdG1sLmxhYmVsXG4gICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdO1xuICAgICAgICAgICAgICAgICAgSHRtbC5hX2xhYmVsX2ZvciBhY2N1cmFjeV9jaG9vc2VyX2lkO1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgWyBIdG1sLnR4dCBcIkFjY3VyYWN5XCIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyBhY2N1cmFjeV9jaG9vc2VyIF07XG4gICAgICAgICAgXTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1ncm91cFwiIF0gXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwubGFiZWxcbiAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgWyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0zXCIgXTsgSHRtbC5hX2xhYmVsX2ZvciB0b3RhbF9pbnB1dF9pZCBdXG4gICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJOYXZpZ2F0ZVwiIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgcHJldl9ub2RlIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgbmV4dF9ub2RlIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgcmVjZW50ZXIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyB0cmFja19jdXJzb3Jfc3dpdGNoIF07XG4gICAgICAgICAgXTtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IGdyYXBoX2Zvcm0gPVxuICAgIEh0bWwuZm9ybVxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0taG9yaXpvbnRhbFwiIF0gXVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWdyb3VwXCIgXSBdXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5sYWJlbFxuICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTNcIiBdIF1cbiAgICAgICAgICAgICAgWyBIdG1sLnR4dCBcIlNpemUgUmFkaXVzXCIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyB0b3RhbF9pbnB1dCBdO1xuICAgICAgICAgICAgSHRtbC5sYWJlbCB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTFcIiBdIF0gWyBIdG1sLnR4dCBcImZ3ZFwiIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgZndkX2lucHV0IF07XG4gICAgICAgICAgICBIdG1sLmxhYmVsIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF0gXSBbIEh0bWwudHh0IFwiYndkXCIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyBid2RfaW5wdXQgXTtcbiAgICAgICAgICBdO1xuICAgICAgXVxuICBpblxuICBbXG4gICAgYWNjdXJhY3lfZm9ybTtcbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWw1LmFfY2xhc3NcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biB7IHJlbmRlcmluZzsgXyB9IC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIHJlbmRlcmluZyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgRHJhd0dyYXBoIF8gLT4gWyBcImZsZXgtY29udGVudFwiIF1cbiAgICAgICAgICAgICAgICAgfCBEcmF3VGFidWxhciBfIC0+IFtdKVxuICAgICAgICAgICAgICAgbW9kZWwpO1xuICAgICAgICAgIFR5eG1sX2pzLlIuZmlsdGVyX2F0dHJpYiAoSHRtbC5hX2hpZGRlbiAoKSlcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biB7IHJlbmRlcmluZzsgXyB9IC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIHJlbmRlcmluZyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgRHJhd0dyYXBoIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgfCBEcmF3VGFidWxhciBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICBtb2RlbCk7XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgZ3JhcGhfZm9ybTtcbiAgICAgICAgSHRtbC5kaXYgfmE6WyBIdG1sLmFfaWQgZGlzcGxheV9pZDsgSHRtbC5hX2NsYXNzIFsgXCJmbGV4LWNvbnRlbnRcIiBdIF0gW107XG4gICAgICBdO1xuICAgIFR5eG1sX2pzLlIuSHRtbDUuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtc2Nyb2xsXCIgXSBdXG4gICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgICAgICAoUmVhY3QuUy5sMlxuICAgICAgICAgICAgKGZ1biB7IHJlbmRlcmluZzsgb3JpZ2luX2xhYmVsOyBfIH0gc3BoZXJlIC0+XG4gICAgICAgICAgICAgIG1hdGNoIHJlbmRlcmluZyB3aXRoXG4gICAgICAgICAgICAgIHwgRHJhd0dyYXBoIF8gLT4gW11cbiAgICAgICAgICAgICAgfCBEcmF3VGFidWxhciAoKSAtPlxuICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLmZvbGQgc3BoZXJlXG4gICAgICAgICAgICAgICAgICB+b2s6KGZ1biBzcGhlcmUgLT4gWyBkcmF3X3RhYmxlIG9yaWdpbl9sYWJlbCBzcGhlcmUgXSlcbiAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9yIC0+XG4gICAgICAgICAgICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UgbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IpKVxuICAgICAgICAgICAgbW9kZWwgaW5mbHVlbmNlX3NwaGVyZSkpO1xuICAgIFdpZGdldF9leHBvcnQuY29udGVudCBleHBvcnRfY29uZmlnO1xuICBdXG5cbmxldCBuZWl0aGVyX2djX21lID1cbiAgUmVhY3QuUy5sMlxuICAgIChmdW4gXyB7IHJlbmRlcmluZzsgYWNjdXJhY3k7IG9yaWdpbjsgb3JpZ2luX2xhYmVsID0gXyB9IC0+XG4gICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgfCBEcmF3VGFidWxhciBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgfCBEcmF3R3JhcGggeyBmd2Q7IGJ3ZDsgdG90YWwgfSAtPlxuICAgICAgICBTdGF0ZV9lcnJvci53cmFwIH5hcHBlbmQ6dHJ1ZSBcImluZmx1ZW5jZV9tYXBcIlxuICAgICAgICAgIChTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgICAgbWFuYWdlciNnZXRfbG9jYWxfaW5mbHVlbmNlX21hcCA/ZndkID9id2QgP29yaWdpbiB+dG90YWwgYWNjdXJhY3lcbiAgICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biBpbmZsdWVuY2VzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDEwMDAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9nZ2VyID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB+bW9kZTpMb2dnZXJzLkpzX0dyYXBoIGZtdFxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9nZ2VyX2dyYXBoID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5leHRlbmRfbG9nZ2VyIGxvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBqc29uX3RvX2dyYXBoIGxvZ2dlcl9ncmFwaCBpbmZsdWVuY2VzIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBncmFwaCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuZ3JhcGhfb2ZfbG9nZ2VyIGxvZ2dlcl9ncmFwaFxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ3JhcGhfanNvbiA9IEdyYXBoX2pzb24udG9fanNvbiBncmFwaCBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZsdXNoX2xvZ2dlciBsb2dnZXIgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5jbG9zZV9sb2dnZXIgbG9nZ2VyIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgaW5mbHVlbmNlbWFwIyNzZXREYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoSnMuc3RyaW5nIChZb2pzb24uQmFzaWMudG9fc3RyaW5nIGdyYXBoX2pzb24pKVxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gaW5mbHVlbmNlbWFwIyNjbGVhckRhdGEgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuZXJyb3IgZSkpKSlcbiAgICAoUmVhY3QuUy5vbiB+ZXE6U3RhdGVfcHJvamVjdC5tb2RlbF9lcXVhbCB0YWJfaXNfYWN0aXZlXG4gICAgICAgU3RhdGVfcHJvamVjdC5kdW1teV9tb2RlbCBTdGF0ZV9wcm9qZWN0Lm1vZGVsKVxuICAgIG1vZGVsXG5cbmxldCBub3JfZ2NfbWUgPVxuICBTdGF0ZV9maWxlLndpdGhfY3VycmVudF9wb3NcbiAgICB+b246KFJlYWN0LlMuQm9vbC4oICYmICkgdGFiX2lzX2FjdGl2ZSB0cmFja19jdXJzb3IpXG4gICAgKGZ1biBmaWxlbmFtZSBjdXJzb3JfcG9zIC0+XG4gICAgICBTb21lXG4gICAgICAgIChTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgLT5cbiAgICAgICAgICAgICBtYW5hZ2VyI2dldF9pbmZsdWVuY2VfbWFwX25vZGVfYXQgfmZpbGVuYW1lIGN1cnNvcl9wb3NcbiAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwubWFwIChmdW4gb3JpZ2luJyAtPlxuICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX21vZGVsIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIHsgbSB3aXRoIG9yaWdpbiA9IG9yaWdpbic7IG9yaWdpbl9sYWJlbCA9IE5vbmUgfSkpKSkpXG4gICAgKEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcblxubGV0IHBhcmVudF9oaWRlICgpID0gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2VcbmxldCBwYXJlbnRfc2hvd24gKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSAhdGFiX3dhc19hY3RpdmVcbmxldCBkb250X2djX21lID0gcmVmIFtdXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPSBkb250X2djX21lIDo9IFsgbmVpdGhlcl9nY19tZTsgbm9yX2djX21lIF0gaW5cbiAgbGV0ICgpID0gV2lkZ2V0X2V4cG9ydC5vbmxvYWQgZXhwb3J0X2NvbmZpZyBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IHJlbmRlcmluZ19jaG9vc2VyKSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gdmEgXyAtPlxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIHVwZGF0ZV9tb2RlbCAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIG0gd2l0aFxuICAgICAgICAgICAgICAgICAgIHJlbmRlcmluZyA9XG4gICAgICAgICAgICAgICAgICAgICAoaWYgSnMudG9fc3RyaW5nIHZhIyMudmFsdWUgPSBcImdyYXBoXCIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgRHJhd0dyYXBoIHsgZndkID0gTm9uZTsgYndkID0gTm9uZTsgdG90YWwgPSAxIH1cbiAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBEcmF3VGFidWxhciAoKSk7XG4gICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IGFjY3VyYWN5X2Nob29zZXIpIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biB2YSBfIC0+XG4gICAgICAgICAgIGxldCBhY2N1cmFjeSA9XG4gICAgICAgICAgICAgUHVibGljX2RhdGEuYWNjdXJhY3lfb2Zfc3RyaW5nIChKcy50b19zdHJpbmcgdmEjIy52YWx1ZSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID0gdXBkYXRlX21vZGVsIChmdW4gbSAtPiB7IG0gd2l0aCBhY2N1cmFjeSB9KSBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IHRvdGFsX2lucHV0KSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gdmEgXyAtPlxuICAgICAgICAgICBsZXQgdmEgPSBKcy50b19zdHJpbmcgdmEjIy52YWx1ZSBpblxuICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgdXBkYXRlX21vZGVsX2dyYXBoIChmdW4gbSAtPiB7IG0gd2l0aCB0b3RhbCA9IGludF9vZl9zdHJpbmcgdmEgfSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIEpzLl90cnVlXG4gICAgICAgICAgIHdpdGggXyAtPiBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBmd2RfaW5wdXQpIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biB2YSBfIC0+XG4gICAgICAgICAgIGxldCB2YSA9IEpzLnRvX3N0cmluZyB2YSMjLnZhbHVlIGluXG4gICAgICAgICAgIHRyeVxuICAgICAgICAgICAgIGxldCBmd2QgPVxuICAgICAgICAgICAgICAgaWYgdmEgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBTb21lIChpbnRfb2Zfc3RyaW5nIHZhKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0ICgpID0gdXBkYXRlX21vZGVsX2dyYXBoIChmdW4gbSAtPiB7IG0gd2l0aCBmd2QgfSkgaW5cbiAgICAgICAgICAgICBKcy5fdHJ1ZVxuICAgICAgICAgICB3aXRoIF8gLT4gSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgYndkX2lucHV0KSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gdmEgXyAtPlxuICAgICAgICAgICBsZXQgdmEgPSBKcy50b19zdHJpbmcgdmEjIy52YWx1ZSBpblxuICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICBsZXQgYndkID1cbiAgICAgICAgICAgICAgIGlmIHZhID0gXCJcIiB0aGVuXG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgU29tZSAoaW50X29mX3N0cmluZyB2YSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9tb2RlbF9ncmFwaCAoZnVuIG0gLT4geyBtIHdpdGggYndkIH0pIGluXG4gICAgICAgICAgICAgSnMuX3RydWVcbiAgICAgICAgICAgd2l0aCBfIC0+IEpzLl9mYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiByZWNlbnRlcikjIy5vbmNsaWNrXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gXyBfIC0+XG4gICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICBTdGF0ZV9lcnJvci53cmFwIFwiaW5mbHVlbmNlX21hcF9yZWNlbnRlclwiXG4gICAgICAgICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9pbml0aWFsX25vZGVcbiAgICAgICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLm1hcCAoZnVuIG9yaWdpbl9yZWZpbmVkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9yaWdpbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luX3JlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW5fbGFiZWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwIGluZmx1ZW5jZV9ub2RlX2xhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbl9yZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfbW9kZWwgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbSB3aXRoIG9yaWdpbjsgb3JpZ2luX2xhYmVsIH0pKSkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIG5leHRfbm9kZSkjIy5vbmNsaWNrXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gXyBfIC0+XG4gICAgICAgICAgIGxldCB7IG9yaWdpbjsgXyB9ID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgU3RhdGVfZXJyb3Iud3JhcCBcImluZmx1ZW5jZV9tYXBfbmV4dF9ub2RlXCJcbiAgICAgICAgICAgICAgIChTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X25leHRfbm9kZSBvcmlnaW5cbiAgICAgICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLm1hcCAoZnVuIG9yaWdpbl9yZWZpbmVkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9yaWdpbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luX3JlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW5fbGFiZWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwIGluZmx1ZW5jZV9ub2RlX2xhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbl9yZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfbW9kZWwgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbSB3aXRoIG9yaWdpbjsgb3JpZ2luX2xhYmVsIH0pKSkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIHByZXZfbm9kZSkjIy5vbmNsaWNrXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gXyBfIC0+XG4gICAgICAgICAgIGxldCB7IG9yaWdpbjsgXyB9ID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgU3RhdGVfZXJyb3Iud3JhcCBcImluZmx1ZW5jZV9tYXBfcHJldl9ub2RlXCJcbiAgICAgICAgICAgICAgIChTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X3ByZXZpb3VzX25vZGUgb3JpZ2luXG4gICAgICAgICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5tYXAgKGZ1biBvcmlnaW5fcmVmaW5lZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY19kYXRhLnNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbl9yZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3JpZ2luX2xhYmVsID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcCBpbmZsdWVuY2Vfbm9kZV9sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5fcmVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX21vZGVsIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG0gd2l0aCBvcmlnaW47IG9yaWdpbl9sYWJlbCB9KSkpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdmluZmx1ZW5jZXNcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IGZhbHNlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2aW5mbHVlbmNlc1wiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IHRydWUgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgbmF2bGkgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5sZXQgdGFiX3dhc19hY3RpdmUgPSByZWYgZmFsc2VcbmxldCBzaXRlIGEgPSBbIGEsIE5vbmUsIFNvbWUgKFB1YmxpY19kYXRhLkJvdW5kX3RvIDEpLCBOb25lIF1cblxubGV0IHByaW50X2VkZ2UgKChhLCBiKSwgKGMsIGQpKSBsaXN0ID1cbiAgVXRpbGl0eS5wcmludF9uZXdsaW5lIChVdGlsaXR5LnByaW50X3NpdGVfZ3JhcGggWyBhLCBzaXRlIGI7IGMsIHNpdGUgZCBdIGxpc3QpXG5cbmxldCBjb250ZW50ICgpID1cbiAgbGV0IHNjYyA9XG4gICAgU3RhdGVfcHJvamVjdC5vbl9wcm9qZWN0X2NoYW5nZV9hc3luYyB+b246dGFiX2lzX2FjdGl2ZSAoKVxuICAgICAgKFJlYWN0LlMuY29uc3QgKCkpIFtdIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgKCkgLT5cbiAgICAgICAgbWFuYWdlciNnZXRfcG90ZW50aWFsX3BvbHltZXJzIChTb21lIFB1YmxpY19kYXRhLkhpZ2gpXG4gICAgICAgICAgKFNvbWUgUHVibGljX2RhdGEuSGlnaClcbiAgICAgICAgKCpUT0RPOiBtYWtlIHRoZXNlIG9wdGlvbnMgdHVuYWJsZSAqKVxuICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICB+b2s6KGZ1biAoXywgXywgc2NjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBzY2MgPSBMaXN0LnJldl9tYXAgTGlzdC5yZXYgc2NjIGluXG4gICAgICAgICAgICAgICAgbGV0IG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICBpZiBzY2MgPSBbXSB8fCBzY2MgPSBbIFtdIF0gdGhlblxuICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LnByaW50X3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgIFwiVGhlIHNpemUgb2YgYmlvbW9sZWN1bGFyIGNvbXBvdW5kcyBpcyB1bmlmb3JtbHkgYm91bmRlZC5cIlxuICAgICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgbGlzdF9lZGdlcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IFV0aWxpdHkucHJpbnRfbmV3bGluZSBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0ICgoYSwgYiksIChjLCBkKSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50X2VkZ2UgKChhLCBiKSwgKGMsIGQpKSBsaXN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QgbGlzdF9lZGdlcylcbiAgICAgICAgICAgICAgICAgICAgICAgIFtdIHNjY1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IFV0aWxpdHkucHJpbnRfbmV3bGluZSBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LnByaW50X3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGUgZm9sbG93aW5nIGJvbmRzIG1heSBmb3JtIGFyYml0cmFyeSBsb25nIGNoYWlucyBvZiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50czpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBbIEh0bWwucCBvdXRwdXQgXSlcbiAgICAgICAgICAgICAgfmVycm9yOihmdW4gbWggLT5cbiAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgICAgIEh0bWwucFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIiBSZXN1bHRfdXRpbC5wcmludF9tZXNzYWdlIG0pO1xuICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICBtaCkpXG4gIGluXG4gIFtcbiAgICBUeXhtbF9qcy5SLkh0bWw1LmRpdlxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLXByZVwiOyBcInBhbmVsLXNjcm9sbFwiIF0gXVxuICAgICAgKFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbCBzY2MpO1xuICBdXG5cbmxldCBwYXJlbnRfaGlkZSAoKSA9IHNldF90YWJfaXNfYWN0aXZlIGZhbHNlXG5sZXQgcGFyZW50X3Nob3duICgpID0gc2V0X3RhYl9pc19hY3RpdmUgIXRhYl93YXNfYWN0aXZlXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2cG9seW1lcnNcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IGZhbHNlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2cG9seW1lcnNcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSB0cnVlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxubGV0IG5hdmxpICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5sZXQgcmlnaHRzdWJwYW5lbF9pZCA6IHN0cmluZyA9IFwicmlnaHRzdWJwYW5lbFwiXG5cbmxldCByaWdodHN1YnBhbmVsICgpID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAoUmVhY3QuUy5iaW5kIFN1YnBhbmVsX2VkaXRvci5lZGl0b3JfZnVsbCAoZnVuIGVkaXRvcl9mdWxsIC0+XG4gICAgICAgICAgICAgICBSZWFjdC5TLmNvbnN0XG4gICAgICAgICAgICAgICAgIChpZiBlZGl0b3JfZnVsbCB0aGVuXG4gICAgICAgICAgICAgICAgICAgIFsgXCJoaWRkZW5cIiBdXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIFsgXCJjb2wtbWQtNlwiOyBcImhpZGRlbi14c1wiOyBcImhpZGRlbi1zbVwiOyBcImZsZXgtY29udGVudFwiIF0pKSk7XG4gICAgICBdXG4gICAgW1xuICAgICAgVWlfY29tbW9uLm5hdnRhYnMgXCJzdWJuYXZ0YWJcIlxuICAgICAgICBbXG4gICAgICAgICAgXCJjb250YWN0X21hcFwiLCBOb25lLCBUYWJfY29udGFjdF9tYXAubmF2bGkgKCk7XG4gICAgICAgICAgXCJpbmZsdWVuY2VzXCIsIE5vbmUsIFRhYl9pbmZsdWVuY2VzLm5hdmxpICgpO1xuICAgICAgICAgIFwiY29uc3RyYWludHNcIiwgTm9uZSwgVGFiX2NvbnN0cmFpbnRzLm5hdmxpICgpO1xuICAgICAgICAgIFwicG9seW1lcnNcIiwgTm9uZSwgVGFiX3BvbHltZXJzLm5hdmxpICgpO1xuICAgICAgICBdO1xuICAgICAgVWlfY29tbW9uLm5hdmNvbnRlbnQgfmlkOnJpZ2h0c3VicGFuZWxfaWQgW11cbiAgICAgICAgW1xuICAgICAgICAgIFwiY29udGFjdF9tYXBcIiwgW10sIFRhYl9jb250YWN0X21hcC5jb250ZW50ICgpO1xuICAgICAgICAgIFwiaW5mbHVlbmNlc1wiLCBbXSwgVGFiX2luZmx1ZW5jZXMuY29udGVudCAoKTtcbiAgICAgICAgICBcImNvbnN0cmFpbnRzXCIsIFtdLCBUYWJfY29uc3RyYWludHMuY29udGVudCAoKTtcbiAgICAgICAgICBcInBvbHltZXJzXCIsIFtdLCBUYWJfcG9seW1lcnMuY29udGVudCAoKTtcbiAgICAgICAgXTtcbiAgICBdXG5cbigqKiBbY2hpbGRzX2hpZGUgYl0gdHJpZ2dlcnMgY2hhbmdlIHRoZSBzdGF0ZSBvZiBjaGlsZCB0YWJzIHRvIGhpZGUgaWYgYiBpcyBUcnVlLCBvciBlbHNlIHRvIHNob3cgKilcbmxldCBjaGlsZHNfaGlkZSAoYiA6IGJvb2wpIDogdW5pdCA9XG4gIGlmIGIgdGhlbiAoXG4gICAgbGV0ICgpID0gVGFiX2NvbnRhY3RfbWFwLnBhcmVudF9oaWRlICgpIGluXG4gICAgbGV0ICgpID0gVGFiX2luZmx1ZW5jZXMucGFyZW50X2hpZGUgKCkgaW5cbiAgICBsZXQgKCkgPSBUYWJfY29uc3RyYWludHMucGFyZW50X2hpZGUgKCkgaW5cbiAgICBUYWJfcG9seW1lcnMucGFyZW50X2hpZGUgKClcbiAgKSBlbHNlIChcbiAgICBsZXQgKCkgPSBUYWJfY29udGFjdF9tYXAucGFyZW50X3Nob3duICgpIGluXG4gICAgbGV0ICgpID0gVGFiX2luZmx1ZW5jZXMucGFyZW50X3Nob3duICgpIGluXG4gICAgbGV0ICgpID0gVGFiX2NvbnN0cmFpbnRzLnBhcmVudF9zaG93biAoKSBpblxuICAgIFRhYl9wb2x5bWVycy5wYXJlbnRfc2hvd24gKClcbiAgKVxuXG5sZXQgY29udGVudCAoKSA9XG4gIFtcbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKFJlYWN0LlMuYmluZCBTdWJwYW5lbF9lZGl0b3IuZWRpdG9yX2Z1bGwgKGZ1biBlZGl0b3JfZnVsbCAtPlxuICAgICAgICAgICAgICAgICAoKiBjaGlsZCBoaWRpbmcgc2V0IGhlcmUgdG8gYXZvaWQgXCJnY1wiICopXG4gICAgICAgICAgICAgICAgIGxldCAoKSA9IGNoaWxkc19oaWRlIGVkaXRvcl9mdWxsIGluXG4gICAgICAgICAgICAgICAgIFJlYWN0LlMuY29uc3RcbiAgICAgICAgICAgICAgICAgICAoaWYgZWRpdG9yX2Z1bGwgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIFsgXCJjb2wtbWQtMTJcIjsgXCJmbGV4LWNvbnRlbnRcIiBdXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBbIFwiY29sLW1kLTZcIjsgXCJmbGV4LWNvbnRlbnRcIiBdKSkpO1xuICAgICAgICBdXG4gICAgICBbIFN1YnBhbmVsX2VkaXRvci5jb250ZW50ICgpIF07XG4gICAgcmlnaHRzdWJwYW5lbCAoKTtcbiAgXVxuXG5sZXQgaW5pdF9kZWFkX3J1bGVzICgpID1cbiAgUmVhY3QuUy5sMVxuICAgIChmdW4gbW9kZWwgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgfmFwcGVuZDp0cnVlIFwidGFiX2VkaXRvcl9kZWFkX3J1bGVcIlxuICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5zaG93X2RlYWRfcnVsZXNcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9kZWFkX3J1bGVzXG4gICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2FybmluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyBydWxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJ1bGUuUHVibGljX2RhdGEucnVsZV9oaWRkZW4gdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRlYWQgcnVsZSBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2xhYmVsIDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiAnXCIgXiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfbGFiZWwgXiBcIidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfYXN0IDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlLlB1YmxpY19kYXRhLnJ1bGVfYXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuV2FybmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBydWxlLlB1YmxpY19kYXRhLnJ1bGVfcG9zaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgd2FybmluZ3MpXG4gICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBtaCAtPiBtaClcbiAgICAgICAgICAgICAgID58PSBBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyA/cmVzdWx0X2NvZGU6Tm9uZVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpKVxuICAgIFN0YXRlX3Byb2plY3QubW9kZWxcblxubGV0IGluaXRfZGVhZF9hZ2VudHMgKCkgPVxuICBSZWFjdC5TLmwxXG4gICAgKGZ1biBtb2RlbCAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCB+YXBwZW5kOnRydWUgXCJ0YWJfZWRpdG9yX2RlYWRfYWdlbnRcIlxuICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5zaG93X2RlYWRfYWdlbnRzXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgbWFuYWdlciNnZXRfZGVhZF9hZ2VudHNcbiAgICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB3YXJuaW5ncyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjIGFnZW50IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRlYWQgYWdlbnQgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYWdlbnQuUHVibGljX2RhdGEuYWdlbnRfYXN0IDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnQuUHVibGljX2RhdGEuYWdlbnRfYXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludCBhZ2VudC5QdWJsaWNfZGF0YS5hZ2VudF9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjIHJhbmdlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5XYXJuaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5yYW5nZSA9IFNvbWUgcmFuZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjIGFnZW50LlB1YmxpY19kYXRhLmFnZW50X3Bvc2l0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldiB3YXJuaW5ncylcbiAgICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIG1oIC0+IG1oKVxuICAgICAgICAgICAgICAgPnw9IEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzID9yZXN1bHRfY29kZTpOb25lXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSkpXG4gICAgU3RhdGVfcHJvamVjdC5tb2RlbFxuXG5sZXQgaW5pdF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgKCkgPVxuICBSZWFjdC5TLmwxXG4gICAgKGZ1biBtb2RlbCAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCB+YXBwZW5kOnRydWUgXCJ0YWJfZWRpdG9yX2RlYWRfcnVsZVwiXG4gICAgICAgIChTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAgICAgIC5TdGF0ZV9wcm9qZWN0LnNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgbWFuYWdlciNnZXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2FybmluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyAocnVsZSwgY29udGV4dF9saXN0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfaGlkZGVuIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogaGludDogcmV2ZXJzaWJsZSBydWxlIGFyZSBhbHdheXMgd2Vha2x5IHJldmVyc2libGUgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBsdXJhbCwgc2tpcCwgdGFiID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNvbnRleHRfbGlzdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtdIHwgWyBfIF0gLT4gXCJcIiwgXCJcIiwgXCIgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiBfIC0+IFwic1wiLCBcIlxcblwiLCBcIlxcdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJSdWxlICVzIG1heSBpbmR1Y2Ugbm9uIHdlYWtseSByZXZlcnNpYmxlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudHMgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0JXM6JXMlYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfbGFiZWwgPD4gXCJcIiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiICdcIiBeIHJ1bGUuUHVibGljX2RhdGEucnVsZV9sYWJlbCBeIFwiJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIHJ1bGUuUHVibGljX2RhdGEucnVsZV9hc3QgPD4gXCJcIiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUuUHVibGljX2RhdGEucnVsZV9hc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludCBydWxlLlB1YmxpY19kYXRhLnJ1bGVfaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdXJhbCBza2lwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcC5saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZm10IC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzXCIgc2tpcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBmbXQgKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJXMlcyAtPiAlcyBcIiB0YWIgYSBiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dF9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiB0byBkbywgYWRkIHRoZSBwb3RlbnRpYWwgY29udGV4dHMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuV2FybmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBydWxlLlB1YmxpY19kYXRhLnJ1bGVfcG9zaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgd2FybmluZ3MpXG4gICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBtaCAtPiBtaClcbiAgICAgICAgICAgICAgID58PSBBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyA/cmVzdWx0X2NvZGU6Tm9uZVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpKVxuICAgIFN0YXRlX3Byb2plY3QubW9kZWxcblxubGV0IGRvbnRfZ2NfbWUgPSByZWYgW11cblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9IFN1YnBhbmVsX2VkaXRvci5vbmxvYWQgKCkgaW5cbiAgZG9udF9nY19tZSA6PSBpbml0X2RlYWRfcnVsZXMgKCkgOjogIWRvbnRfZ2NfbWU7XG4gIGRvbnRfZ2NfbWUgOj0gaW5pdF9kZWFkX2FnZW50cyAoKSA6OiAhZG9udF9nY19tZTtcbiAgZG9udF9nY19tZSA6PSBpbml0X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyAoKSA6OiAhZG9udF9nY19tZTtcbiAgbGV0ICgpID0gVGFiX2NvbnRhY3RfbWFwLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfaW5mbHVlbmNlcy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2NvbnN0cmFpbnRzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfcG9seW1lcnMub25sb2FkICgpIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZlZGl0b3JcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+IGNoaWxkc19oaWRlIHRydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZlZGl0b3JcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPiBjaGlsZHNfaGlkZSBmYWxzZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9XG4gIGxldCAoKSA9IFN1YnBhbmVsX2VkaXRvci5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfY29udGFjdF9tYXAub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2luZmx1ZW5jZXMub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2NvbnN0cmFpbnRzLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9wb2x5bWVycy5vbnJlc2l6ZSAoKSBpblxuICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcblxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCBkaW5faWQsIHNldF9kaW5faWQgPSBSZWFjdC5TLmNyZWF0ZSBcIlwiXG5cbmxldCBkaW5fbGlzdCA6XG4gICAgWzwgSHRtbF90eXBlcy5zZWxlY3RfY29udGVudF9mdW4gPiBgT3B0aW9uIF0gSHRtbC5lbHQgUmVhY3RpdmVEYXRhLlJMaXN0LnQgPVxuICBSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9ldmVudCBbXVxuICAgIChMd3RfcmVhY3QuRS5tYXBfc1xuICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgTHd0Lm1hcFxuICAgICAgICAgICAoUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICB+b2s6KGZ1biBkaW5faWRzIC0+XG4gICAgICAgICAgICAgICAgbGV0IG91dCA9XG4gICAgICAgICAgICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBpZCAtPiBIdG1sLm9wdGlvbiB+YTpbIEh0bWwuYV92YWx1ZSBpZCBdIChIdG1sLnR4dCBpZCkpXG4gICAgICAgICAgICAgICAgICAgIGRpbl9pZHNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIFJlYWN0aXZlRGF0YS5STGlzdC5TZXQgb3V0KVxuICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IFJlYWN0aXZlRGF0YS5STGlzdC5TZXQgW10pKVxuICAgICAgICAgICAoU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgfnN0b3BwZWQ6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFtdKSlcbiAgICAgICAgICAgICAgfmluaXRpYWxpemluZzooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgW10pKVxuICAgICAgICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gLT4gbWFuYWdlciNzaW11bGF0aW9uX2NhdGFsb2dfZGluKVxuICAgICAgICAgICAgICAoKSkpXG4gICAgICAgKFJlYWN0LlMuY2hhbmdlc1xuICAgICAgICAgIChSZWFjdC5TLm9uIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5kdW1teV9tb2RlbFxuICAgICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpKSlcblxubGV0IGRpbl9zZWxlY3QgOiBbPiBIdG1sX3R5cGVzLnNlbGVjdCBdIEh0bWwuZWx0ID1cbiAgVHl4bWxfanMuUi5IdG1sNS5zZWxlY3QgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF0gXSBkaW5fbGlzdFxuXG5sZXQgZGluX2RhdGEgOiBEYXRhLmRpbiBvcHRpb24gUmVhY3Quc2lnbmFsID1cbiAgUmVhY3QuUy5iaW5kIChSZWFjdGl2ZURhdGEuUkxpc3Quc2lnbmFsIGRpbl9saXN0KSAoZnVuY3Rpb25cbiAgICB8IFtdIC0+IFJlYWN0LlMuY29uc3QgTm9uZVxuICAgIHwgXyA6OiBfIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBzZXRfZGluX2lkIChKcy50b19zdHJpbmcgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgZGluX3NlbGVjdCkjIy52YWx1ZSlcbiAgICAgIGluXG4gICAgICBSZWFjdC5TLmJpbmQgZGluX2lkIChmdW4gZGluX2lkIC0+XG4gICAgICAgICAgUmVhY3QuUy5ob2xkIE5vbmVcbiAgICAgICAgICAgIChMd3RfcmVhY3QuRS5mcm9tIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgTHd0Lm1hcFxuICAgICAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5mb2xkIH5vazooZnVuIHggLT4geCkgfmVycm9yOihmdW4gXyAtPiBOb25lKSlcbiAgICAgICAgICAgICAgICAgICAoU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgICAgICAgIH5zdG9wcGVkOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBOb25lKSlcbiAgICAgICAgICAgICAgICAgICAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBOb25lKSlcbiAgICAgICAgICAgICAgICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcCBPcHRpb24uc29tZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfZGluIGRpbl9pZCkpXG4gICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKVxuXG5sZXQgZGluX2hlYWRlciA6IEh0bWxfdHlwZXMudHIgSHRtbC5lbHQgUmVhY3RpdmVEYXRhLlJMaXN0LnQgPVxuICBSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWxcbiAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgfCBTb21lIGRpbiAtPlxuICAgICAgICAgICBbXG4gICAgICAgICAgICAgSHRtbC50clxuICAgICAgICAgICAgICAgKEh0bWwudGggWyBIdG1sLnR4dCBcImFmZmVjdHNcIiBdXG4gICAgICAgICAgICAgICA6OiBBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAgICAgIChmdW4gciBhY2MgLT4gSHRtbC50aCBbIEh0bWwudHh0IHIgXSA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICAgIGRpbi5EYXRhLmRpbl9ydWxlcyBbXSk7XG4gICAgICAgICAgIF0pXG4gICAgICAgZGluX2RhdGEpXG5cbmxldCBkaW5fdGFibGUgOiBIdG1sX3R5cGVzLnRib2R5IEh0bWwuZWx0IFJlYWN0aXZlRGF0YS5STGlzdC50ID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgKFJlYWN0LlMubWFwXG4gICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgIHwgU29tZSBkaW4gLT5cbiAgICAgICAgICAgbGV0IG9wZW4gRGF0YSBpblxuICAgICAgICAgICBsZXQgYWxsID0gZGluLmRpbl9kYXRhLmRpbl9raW5kID0gUHJpbWl0aXZlcy5QUk9CQUJJTElUWSBpblxuICAgICAgICAgICBsZXQgYm9keSA9XG4gICAgICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9yaWdodGlcbiAgICAgICAgICAgICAgIChmdW4gaSBkYXRhIGFjYyAtPlxuICAgICAgICAgICAgICAgICBpZiBhbGwgfHwgZGluLmRpbl9kYXRhLmRpbl9oaXRzLihpKSA+IDAgdGhlblxuICAgICAgICAgICAgICAgICAgIEh0bWwudHJcbiAgICAgICAgICAgICAgICAgICAgIChIdG1sLnRoXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRpbi5kaW5fcnVsZXMuKGkpIF4gXCIgKFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaW50IGRpbi5kaW5fZGF0YS5kaW5faGl0cy4oaSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIFwiIGhpdHMpXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgOjogQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIHYgYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC50ZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiB2ID4gMC4gdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBcInN1Y2Nlc3NcIiBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiB2IDwgMC4gdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBcImluZm9cIiBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIEh0bWwudHh0IChzdHJpbmdfb2ZfZmxvYXQgdikgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSBbXSlcbiAgICAgICAgICAgICAgICAgICA6OiBhY2NcbiAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgIGRpbi5kaW5fZGF0YS5kaW5fZmx1eHMgW11cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgWyBIdG1sLnRib2R5IGJvZHkgXSlcbiAgICAgICBkaW5fZGF0YSlcblxubGV0IGRpbiA6IFs+IEh0bWxfdHlwZXMudGFibGV4IF0gSHRtbC5lbHQgPVxuICBsZXQgdGhlYWQgPSBSZWFjdC5TLmNvbnN0IChUeXhtbF9qcy5SLkh0bWw1LnRoZWFkIGRpbl9oZWFkZXIpIGluXG4gIFR5eG1sX2pzLlIuSHRtbDUudGFibGV4XG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInRhYmxlXCI7IFwidGFibGUtY29uZGVuc2VkXCI7IFwidGFibGUtYm9yZGVyZWRcIiBdIF1cbiAgICB+dGhlYWQgZGluX3RhYmxlXG5cbmxldCBleHBvcnRfY3VycmVudF9kaW4gKHRvX3N0cmluZyA6IERhdGEuZGluIC0+IHN0cmluZykgKG1pbWUgOiBzdHJpbmcpXG4gICAgKGZpbGVuYW1lIDogc3RyaW5nKSA6IHVuaXQgPVxuICBsZXQgZGluX2lkID0gSnMudG9fc3RyaW5nIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IGRpbl9zZWxlY3QpIyMudmFsdWUgaW5cbiAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX2RpbiBkaW5faWRcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBkaW4gLT5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSBKcy5zdHJpbmcgKHRvX3N0cmluZyBkaW4pIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZSB+ZmlsZW5hbWUgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IGV4cG9ydF9jb25maWd1cmF0aW9uIDogV2lkZ2V0X2V4cG9ydC5jb25maWd1cmF0aW9uID1cbiAge1xuICAgIFdpZGdldF9leHBvcnQuaWQgPSBcImRpbi1leHBvcnRcIjtcbiAgICBXaWRnZXRfZXhwb3J0LnNob3cgPSBSZWFjdC5TLmNvbnN0IHRydWU7XG4gICAgV2lkZ2V0X2V4cG9ydC5oYW5kbGVycyA9XG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwianNvblwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImpzb25cIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydCA9XG4gICAgICAgICAgICBleHBvcnRfY3VycmVudF9kaW4gKERhdGEuc3RyaW5nX29mX2RpbiA/bGVuOk5vbmUpIFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgICB9O1xuICAgICAgICB7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcImRvdFwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImRvdFwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID1cbiAgICAgICAgICAgIGV4cG9ydF9jdXJyZW50X2RpblxuICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCIgKERhdGEucHJpbnRfZG90X2RpbiA/dXVpZDpOb25lKSlcbiAgICAgICAgICAgICAgXCJ0ZXh0L3ZuZC5ncmFwaHZpelwiO1xuICAgICAgICB9O1xuICAgICAgICB7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcImh0bWxcIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmxhYmVsID0gXCJodG1sXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPVxuICAgICAgICAgICAgZXhwb3J0X2N1cnJlbnRfZGluXG4gICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIiBEYXRhLnByaW50X2h0bWxfZGluKVxuICAgICAgICAgICAgICBcInRleHQvaHRtbFwiO1xuICAgICAgICB9O1xuICAgICAgXTtcbiAgfVxuXG5sZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gSHRtbC5lbHQgbGlzdCA9XG4gIFtcbiAgICBIdG1sLmRpdlxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZsZXhfY29udGVudFwiOyBcInRhYmxlLXJlc3BvbnNpdmVcIiBdIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5mb3JtIFsgZGluX3NlbGVjdCBdO1xuICAgICAgICBkaW47XG4gICAgICAgIFdpZGdldF9leHBvcnQuY29udGVudCBleHBvcnRfY29uZmlndXJhdGlvbjtcbiAgICAgIF07XG4gIF1cblxubGV0IG5hdmxpICgpIDogWz4gYFBDREFUQSB8IGBTcGFuIF0gSHRtbC5lbHQgUmVhY3RpdmVEYXRhLlJMaXN0LnQgPVxuICBVaV9jb21tb24uYmFkZ2UgKGZ1biBzdGF0ZSAtPlxuICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IDBcbiAgICAgIHwgU29tZSBzdGF0ZSAtPlxuICAgICAgICBzdGF0ZS5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fb3V0cHV0XG4gICAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fb3V0cHV0X2RpbnMpXG5cbmxldCBvbmxvYWQgKCkgOiAnYSA9XG4gIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IGRpbl9zZWxlY3QpIyMub25jaGFuZ2VcbiAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICBzZXRfZGluX2lkXG4gICAgICAgICAgICgoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBkaW5fc2VsZWN0KSMjLnZhbHVlIHw+IEpzLnRvX3N0cmluZyk7XG4gICAgICAgICBKcy5fZmFsc2UpO1xuICBXaWRnZXRfZXhwb3J0Lm9ubG9hZCBleHBvcnRfY29uZmlndXJhdGlvbjtcbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdkRJTlwiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+IHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2RElOXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPiBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IHRhYl93YXNfYWN0aXZlID0gcmVmIGZhbHNlXG5cbmxldCBsaW5lX2NvdW50IHN0YXRlID1cbiAgbWF0Y2ggc3RhdGUgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgc3RhdGUgLT5cbiAgICBsZXQgb3BlbiBBcGlfdHlwZXNfdCBpblxuICAgIHN0YXRlLnNpbXVsYXRpb25faW5mb19vdXRwdXQuc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzXG5cbmxldCBuYXZsaSAoKSA9XG4gIFVpX2NvbW1vbi5sYWJlbF9uZXdzIHRhYl9pc19hY3RpdmUgKGZ1biBzdGF0ZSAtPiBsaW5lX2NvdW50IHN0YXRlKVxuXG5sZXQgY29udGVudCAoKSA9XG4gIGxldCBzdGF0ZV9sb2cgPVxuICAgICgqIFdlIGdldCB0aGUgc2lnbmFsIG9mIGxvZyBtZXNzYWdlcyBmb3IgY3VycmVudCBzaW11bGF0aW9uIG1vZGVsLiBUaGUgYmluZCBhbGxvd3MgdG8gY2hhbmdlIHRoZSBzaWduYWwgdG8gdGhlIG5ldyBzaW11bGF0aW9uIG1vZGVsIHdoZW4gaXQgY2hhbmdlcyAqKVxuICAgIFJlYWN0LlMuYmluZFxuICAgICAgKFJlYWN0LlMub24gdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLmR1bW15X21vZGVsXG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKSAoZnVuIF8gLT5cbiAgICAgICAgUmVhY3QuUy5ob2xkIFwiXCJcbiAgICAgICAgICAoTHd0X3JlYWN0LkUuZnJvbSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gLT4gbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9sb2dfbWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgfnN0b3BwZWQ6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFwiXCIpKVxuICAgICAgICAgICAgICAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBcIlwiKSlcbiAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgID58PSBmdW4gKHggOiBzdHJpbmcgQXBpLnJlc3VsdCkgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIHguUmVzdWx0X3V0aWwudmFsdWUgd2l0aFxuICAgICAgICAgICAgICAgfCBPayB4IC0+IHhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgbGlzdCAtPlxuICAgICAgICAgICAgICAgICBTdHJpbmcuY29uY2F0IFwiXFxuXCJcbiAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biBSZXN1bHRfdXRpbC57IHRleHQ7IF8gfSAtPiB0ZXh0KSBsaXN0KSkpKVxuICBpblxuICBbXG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1wcmVcIjsgXCJwYW5lbC1zY3JvbGxcIiBdIF1cbiAgICAgIFsgVHl4bWxfanMuUi5IdG1sLnR4dCBzdGF0ZV9sb2cgXTtcbiAgXVxuXG5sZXQgcGFyZW50X2hpZGUgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZVxubGV0IHBhcmVudF9zaG93biAoKSA9IHNldF90YWJfaXNfYWN0aXZlICF0YWJfd2FzX2FjdGl2ZVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdmxvZ1wiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gZmFsc2UgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZsb2dcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSB0cnVlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxubGV0IHNlbGVjdF9pZCA9IFwib3V0cHV0LXNlbGVjdC1pZFwiXG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IGN1cnJlbnRfZmlsZSwgc2V0X2N1cnJlbnRfZmlsZSA9IFJlYWN0LlMuY3JlYXRlIE5vbmVcblxubGV0IHVwZGF0ZV9vdXRwdXRzIChrZXkgOiBzdHJpbmcpIDogdW5pdCA9XG4gIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9maWxlX2xpbmUga2V5XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gbGluZXMgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gc2V0X2N1cnJlbnRfZmlsZSAoU29tZSAoa2V5LCBsaW5lcykpIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG5cbmxldCBmaWxlX2NvdW50IHN0YXRlID1cbiAgbWF0Y2ggc3RhdGUgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgc3RhdGUgLT5cbiAgICBzdGF0ZS5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm9fb3V0cHV0XG4gICAgICAuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lc1xuXG5sZXQgbmF2bGkgKCkgPSBVaV9jb21tb24uYmFkZ2UgKGZ1biBzdGF0ZSAtPiBmaWxlX2NvdW50IHN0YXRlKVxuXG5sZXQgeG1sICgpID1cbiAgbGV0IHNlbGVjdCAoZmlsZV9saW5lX2lkcyA6IHN0cmluZyBsaXN0KSA6IFs+IEh0bWxfdHlwZXMuc2VsZWN0IF0gSHRtbC5lbHQgPVxuICAgIGxldCBsaW5lcyA6IChzdHJpbmcgKiBzdHJpbmcgbGlzdCkgb3B0aW9uID0gUmVhY3QuUy52YWx1ZSBjdXJyZW50X2ZpbGUgaW5cbiAgICBsZXQgY3VycmVudF9maWxlX2lkIDogc3RyaW5nID1cbiAgICAgIG1hdGNoIGZpbGVfbGluZV9pZHMsIGxpbmVzIHdpdGhcbiAgICAgIHwgW10sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IGZpbGUgOjogXywgTm9uZSB8IF8gOjogXywgU29tZSAoZmlsZSwgXykgLT4gZmlsZVxuICAgIGluXG4gICAgbGV0IGZpbGVfb3B0aW9ucyA6IFs+IEh0bWxfdHlwZXMuc2VsZWN0b3B0aW9uIF0gSHRtbC5lbHQgbGlzdCA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIGtleSAtPlxuICAgICAgICAgIEh0bWwub3B0aW9uXG4gICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgKFsgSHRtbC5hX3ZhbHVlIGtleSBdXG4gICAgICAgICAgICAgIEBcbiAgICAgICAgICAgICAgaWYga2V5ID0gY3VycmVudF9maWxlX2lkIHRoZW5cbiAgICAgICAgICAgICAgICBbIEh0bWwuYV9zZWxlY3RlZCAoKSBdXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBbXSlcbiAgICAgICAgICAgIChIdG1sLnR4dCAoVWlfY29tbW9uLm9wdGlvbl9sYWJlbCBrZXkpKSlcbiAgICAgICAgZmlsZV9saW5lX2lkc1xuICAgIGluXG4gICAgbGV0ICgpID0gdXBkYXRlX291dHB1dHMgY3VycmVudF9maWxlX2lkIGluXG4gICAgVHl4bWxfanMuSHRtbC5zZWxlY3RcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdOyBIdG1sLmFfaWQgc2VsZWN0X2lkIF1cbiAgICAgIGZpbGVfb3B0aW9uc1xuICBpblxuICBsZXQgZmlsZV9zZWxlY3QgPVxuICAgIFR5eG1sX2pzLlIuSHRtbC5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJsaXN0LWdyb3VwLWl0ZW1cIiBdIF1cbiAgICAgIChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9ldmVudCBbXVxuICAgICAgICAgKEx3dF9yZWFjdC5FLm1hcF9zXG4gICAgICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICB+c3RvcHBlZDooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgW10pKVxuICAgICAgICAgICAgICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFtdKSlcbiAgICAgICAgICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gLT5cbiAgICAgICAgICAgICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jYXRhbG9nX2ZpbGVfbGluZVxuICAgICAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0XG4gICAgICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlX2xpbmVfaWRzIDogQXBpX3R5cGVzX2ouZmlsZV9saW5lX2NhdGFsb2cpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZWxlY3RfZmlsZSA6IFs+IGBINCB8IGBTZWxlY3QgXSBIdG1sLmVsdCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUT0RPOiBuYW1lICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZmlsZV9saW5lX2lkcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwga2V5IDo6IFtdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfb3V0cHV0cyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5oNFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgSHRtbC50eHQgKFVpX2NvbW1vbi5vcHRpb25fbGFiZWwga2V5KSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiBfIDo6IF8gLT4gWyBzZWxlY3QgZmlsZV9saW5lX2lkcyBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHNlbGVjdF9maWxlKSkpXG4gICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4geCAtPiBSZWFjdGl2ZURhdGEuUkxpc3QuU2V0IHgpXG4gICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIF8gLT4gUmVhY3RpdmVEYXRhLlJMaXN0LlNldCBbXSkpXG4gICAgICAgICAgICAoUmVhY3QuUy5jaGFuZ2VzXG4gICAgICAgICAgICAgICAoUmVhY3QuUy5vbiB0YWJfaXNfYWN0aXZlIFN0YXRlX3NpbXVsYXRpb24uZHVtbXlfbW9kZWxcbiAgICAgICAgICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpKSkpXG4gIGluXG4gIGxldCBmaWxlX2NvbnRlbnQgPVxuICAgIFtcbiAgICAgIFR5eG1sX2pzLlIuSHRtbC5kaXZcbiAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLXNjcm9sbFwiOyBcImZsZXgtY29udGVudFwiIF0gXVxuICAgICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgICAgICB8IFNvbWUgKF8sIGxpbmVzKSAtPlxuICAgICAgICAgICAgICAgICAgTGlzdC5tYXAgKGZ1biBsaW5lIC0+IEh0bWwucCBbIEh0bWwudHh0IGxpbmUgXSkgbGluZXMpXG4gICAgICAgICAgICAgIGN1cnJlbnRfZmlsZSkpO1xuICAgIF1cbiAgaW5cbiAgW1xuICAgIFslaHRtbFxuICAgICAge3w8ZGl2IGNsYXNzPVwibmF2Y29udGVudC12aWV3XCI+XG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZW50ZXItYmxvY2sgZGlzcGxheS1oZWFkZXJcIj5cbiAgICAgICAgICAgfH1cbiAgICAgICAgWyBmaWxlX3NlbGVjdCBdXG4gICAgICAgIHt8XG4gICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgfH1cbiAgICAgICAgZmlsZV9jb250ZW50XG4gICAgICAgIHt8XG4gICAgICAgICAgICAgPC9kaXY+IHx9XTtcbiAgXVxuXG5sZXQgc2VsZWN0X291dHB1dHMgKCkgOiB1bml0ID1cbiAgbGV0IHNlbGVjdF9kb20gPSBVaV9jb21tb24uaWRfZG9tIHNlbGVjdF9pZCBpblxuICBsZXQgZmlsZWluZGV4ID0gSnMudG9fc3RyaW5nIHNlbGVjdF9kb20jIy52YWx1ZSBpblxuICB1cGRhdGVfb3V0cHV0cyBmaWxlaW5kZXhcblxubGV0IGNvbnRlbnQgKCkgPVxuICBbIFVpX2NvbW1vbi50b2dnbGVfZWxlbWVudCAoZnVuIHQgLT4gZmlsZV9jb3VudCB0ID4gMCkgKHhtbCAoKSkgXVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdm91dHB1dHNcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2b3V0cHV0c1wiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiAoRm9ybWF0LnNwcmludGYgXCIjJXNcIiBzZWxlY3RfaWQpIFwiY2hhbmdlXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHNlbGVjdF9vdXRwdXRzICgpIGluXG4gICAgICAgIEpzLl90cnVlKVxuICBpblxuICAoKVxuKCogVE9ET1xuICAgICBsZXQgc2VsZWN0X2RvbSA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50ID1cbiAgICAgICBKcy5VbnNhZmUuY29lcmNlXG4gICAgICAgICAoKEpzLk9wdC5nZXRcbiAgICAgICAgICAgICAoVWlfY29tbW9uLmRvY3VtZW50IyNnZXRFbGVtZW50QnlJZFxuICAgICAgICAgICAgICAgIChKcy5zdHJpbmcgc2VsZWN0X2lkKSlcbiAgICAgICAgICAgICAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICAgICAgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIGluXG4gICAgIGxldCAoKSA9IHNlbGVjdF9kb20jIy5vbmNoYW5nZSA6PSBEb21faHRtbC5oYW5kbGVyXG4gICAoZnVuIF8gLT5cbiAgICAgIGxldCAoKSA9IHNlbGVjdF9vdXRwdXRzIHRcbiAgICAgaW4gSnMuX3RydWUpXG4gICAgIGluXG4qKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqbW9kdWxlIEFwaVR5cGVzID0gQXBpX3R5cGVzX2oqKVxuXG5jbGFzcyB0eXBlIG9ic2VydmFibGVfcGxvdCA9IG9iamVjdFxuICBtZXRob2Qgc2V0RGF0YSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2QgY2xlYXJEYXRhIDogdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCByZWRyYXcgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgY3JlYXRlX29ic2VydmFibGVfcGxvdCBtYWluX2Rpdl9pZCA6IG9ic2VydmFibGVfcGxvdCBKcy50ID1cbiAgSnMuVW5zYWZlLm5ld19vYmpcbiAgICAoSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIk9ic2VydmFibGVQbG90XCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIG1haW5fZGl2X2lkKSB8XVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxubGV0IGRpdl9kaXNwbGF5X2lkID0gXCJwbG90LW1haW5fZGl2XCJcbmxldCBleHBvcnRfaWQgPSBcInBsb3QtZXhwb3J0XCJcblxudHlwZSBvZmZzZXQgPSB7IG9mZnNldF9jdXJyZW50OiBpbnQ7IG9mZnNldF9tYXg6IGludCB9XG5cbmxldCBvZmZzZXQsIHNldF9vZmZzZXQgPSBSZWFjdC5TLmNyZWF0ZSAoTm9uZSA6IG9mZnNldCBvcHRpb24pXG5sZXQgZGVmYXVsdF9wb2ludCA9IDEwMDBcbmxldCBwb2ludCwgc2V0X3BvaW50cyA9IFJlYWN0LlMuY3JlYXRlIGRlZmF1bHRfcG9pbnRcbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5sZXQgcGxvdF9yZWYgPSByZWYgTm9uZVxuXG5sZXQgaGFzX3Bsb3QgKHN0YXRlIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvIG9wdGlvbikgOiBib29sID1cbiAgbWF0Y2ggc3RhdGUgd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIHN0YXRlIC0+XG4gICAgc3RhdGUuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX291dHB1dC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX291dHB1dF9wbG90XG4gICAgPiAwXG5cbmxldCBleHBvcnRfanNvbiBmaWxlbmFtZSA9XG4gIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9wbG90XG4gICAgICAgIHtcbiAgICAgICAgICBBcGlfdHlwZXNfai5wbG90X2xpbWl0X29mZnNldCA9IE5vbmU7XG4gICAgICAgICAgQXBpX3R5cGVzX2oucGxvdF9saW1pdF9wb2ludHMgPSBOb25lO1xuICAgICAgICB9XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKHBsb3QgOiBBcGlfdHlwZXNfdC5wbG90KSAtPlxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IEpzLnN0cmluZyAoRGF0YS5zdHJpbmdfb2ZfcGxvdCBwbG90KSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZTpcImFwcGxpY2F0aW9uL2pzb25cIiB+ZmlsZW5hbWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IGV4cG9ydCBtaW1lIGZpbGVuYW1lID1cbiAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX3Bsb3RcbiAgICAgICAge1xuICAgICAgICAgIEFwaV90eXBlc19qLnBsb3RfbGltaXRfb2Zmc2V0ID0gTm9uZTtcbiAgICAgICAgICBBcGlfdHlwZXNfai5wbG90X2xpbWl0X3BvaW50cyA9IE5vbmU7XG4gICAgICAgIH1cbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAocGxvdCA6IEFwaV90eXBlc190LnBsb3QpIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgICAgICBKcy5zdHJpbmcgKERhdGEuZXhwb3J0X3Bsb3QgfmlzX3RzdjoobWltZSA9IFwidGV4dC90c3ZcIikgcGxvdClcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lIH5maWxlbmFtZSBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgcGxvdF9wb2ludHNfaW5wdXRfaWQgPSBcInBsb3RfcG9pbnRzX2lucHV0XCJcblxubGV0IHBsb3RfcG9pbnRzX2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgcGxvdF9wb2ludHNfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBOdW1iZXI7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgSHRtbC5hX3NpemUgNTtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgcGxvdF9vZmZzZXRfaW5wdXRfaWQgPSBcInBsb3Rfb2Zmc2V0X2lucHV0XCJcblxubGV0IHBsb3Rfb2Zmc2V0X2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgIChSZWFjdC5TLmJpbmQgb2Zmc2V0IChmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+IFJlYWN0LlMuY29uc3QgWyBcImhpZGVcIiBdXG4gICAgICAgICAgICB8IFNvbWUgXyAtPiBSZWFjdC5TLmNvbnN0IFtdKSk7XG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2lucHV0X21heFxuICAgICAgICAgIChSZWFjdC5TLmJpbmQgb2Zmc2V0IChmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+IFJlYWN0LlMuY29uc3QgKGBOdW1iZXIgMClcbiAgICAgICAgICAgIHwgU29tZSBtYXhfb2Zmc2V0IC0+IFJlYWN0LlMuY29uc3QgKGBOdW1iZXIgbWF4X29mZnNldC5vZmZzZXRfbWF4KSkpO1xuICAgICAgICBIdG1sLmFfaWQgcGxvdF9vZmZzZXRfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBSYW5nZTtcbiAgICAgICAgSHRtbC5hX2lucHV0X21pbiAoYE51bWJlciAwKTtcbiAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwib2Zmc2V0XCI7XG4gICAgICBdXG4gICAgKClcblxubGV0IHNpbXVsYXRpb25faW5mb19vZmZzZXRfbWF4IChzaW11bGF0aW9uX2luZm8gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIDpcbiAgICBpbnQgPVxuICBsZXQgcGxvdF9zaXplID1cbiAgICBzaW11bGF0aW9uX2luZm8uQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcbiAgaW5cbiAgbWF4IDAgKHBsb3Rfc2l6ZSAtIFJlYWN0LlMudmFsdWUgcG9pbnQpXG5cbmxldCB1cGRhdGVfb2Zmc2V0ICh1cGRhdGVfb2Zmc2V0X2lucHV0IDogYm9vbCkgOiB1bml0ID1cbiAgbGV0IHNpbXVsYXRpb25fbW9kZWwgPSBSZWFjdC5TLnZhbHVlIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwgaW5cbiAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24udF9zaW11bGF0aW9uX2luZm8gc2ltdWxhdGlvbl9tb2RlbCBpblxuICBtYXRjaCBzaW11bGF0aW9uX2luZm8gd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHNpbXVsYXRpb25faW5mbyAtPlxuICAgIGlmXG4gICAgICBzaW11bGF0aW9uX2luZm8uQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXG4gICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmdcbiAgICB0aGVuXG4gICAgICAoKiBJZiBpdCBpcyBydW5uaW5nIG5vIHNsaWRlciBiZWNhdXNlIHVwZGF0ZSBjYXVzZXMgaml0dGVycy4gKilcbiAgICAgIHNldF9vZmZzZXQgTm9uZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG9mZnNldF9tYXggPSBzaW11bGF0aW9uX2luZm9fb2Zmc2V0X21heCBzaW11bGF0aW9uX2luZm8gaW5cbiAgICAgIGxldCBvbGRfb2Zmc2V0ID0gUmVhY3QuUy52YWx1ZSBvZmZzZXQgaW5cbiAgICAgIGxldCBvZmZzZXRfY3VycmVudCA9XG4gICAgICAgIG1hdGNoIG9sZF9vZmZzZXQgd2l0aFxuICAgICAgICB8IFNvbWUgb2Zmc2V0IC0+IG9mZnNldC5vZmZzZXRfY3VycmVudFxuICAgICAgICB8IE5vbmUgLT4gb2Zmc2V0X21heFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIHVwZGF0ZV9vZmZzZXRfaW5wdXQgdGhlbiAoXG4gICAgICAgICAgbGV0IHBsb3Rfb2Zmc2V0X2lucHV0X2RvbSA9XG4gICAgICAgICAgICBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgcGxvdF9vZmZzZXRfaW5wdXRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIChzdHJpbmdfb2ZfaW50IG9mZnNldF9jdXJyZW50KSkgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgcGxvdF9vZmZzZXRfaW5wdXRfZG9tIyMudmFsdWVcbiAgICAgICAgICAgIDo9IEpzLnN0cmluZyAoc3RyaW5nX29mX2ludCBvZmZzZXRfY3VycmVudClcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgICgpXG4gICAgICBpblxuICAgICAgbGV0IG5ld19vZmZzZXQgPVxuICAgICAgICBpZiBvZmZzZXRfbWF4ID4gMCB0aGVuXG4gICAgICAgICAgU29tZSB7IG9mZnNldF9jdXJyZW50OyBvZmZzZXRfbWF4IH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgICAgIGluXG4gICAgICBzZXRfb2Zmc2V0IG5ld19vZmZzZXRcbiAgICApXG5cbmxldCBwbG90X3BhcmFtZXRlciAoKSA6IEFwaV90eXBlc19qLnBsb3RfcGFyYW1ldGVyID1cbiAgbGV0IHBvaW50ID0gUmVhY3QuUy52YWx1ZSBwb2ludCBpblxuICB7XG4gICAgQXBpX3R5cGVzX2oucGxvdF9saW1pdF9vZmZzZXQgPVxuICAgICAgT3B0aW9uX3V0aWwubWFwIChmdW4geCAtPiB4Lm9mZnNldF9jdXJyZW50KSAoUmVhY3QuUy52YWx1ZSBvZmZzZXQpO1xuICAgIEFwaV90eXBlc19qLnBsb3RfbGltaXRfcG9pbnRzID0gU29tZSBwb2ludDtcbiAgfVxuXG5sZXQgdXBkYXRlX3Bsb3QgKGpzX3Bsb3QgOiBKc19wbG90Lm9ic2VydmFibGVfcGxvdCBKcy50KSA6IHVuaXQgPVxuICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2hlbl9yZWFkeSB+bGFiZWw6X19MT0NfXyAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIGxldCAoKSA9IHVwZGF0ZV9vZmZzZXQgdHJ1ZSBpblxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9wbG90IChwbG90X3BhcmFtZXRlciAoKSlcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAocGxvdCA6IEFwaV90eXBlc190LnBsb3QpIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID0gSnMuc3RyaW5nIChEYXRhLnN0cmluZ19vZl9wbG90IHBsb3QpIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IGpzX3Bsb3QjI3NldERhdGEgZGF0YSBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgb25sb2FkX3Bsb3RfcG9pbnRzX2lucHV0IChqc19wbG90IDogSnNfcGxvdC5vYnNlcnZhYmxlX3Bsb3QgSnMudCkgOiB1bml0ID1cbiAgbGV0IHBsb3RfcG9pbnRzX2lucHV0X2RvbSA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50ID1cbiAgICBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgcGxvdF9wb2ludHNfaW5wdXRcbiAgaW5cbiAgbGV0IGpzX3BvaW50IDogSnMuanNfc3RyaW5nIEpzLnQgPVxuICAgIEpzLnN0cmluZyAoc3RyaW5nX29mX2ludCAoUmVhY3QuUy52YWx1ZSBwb2ludCkpXG4gIGluXG4gIGxldCAoKSA9IHBsb3RfcG9pbnRzX2lucHV0X2RvbSMjLnZhbHVlIDo9IGpzX3BvaW50IGluXG4gIGxldCAoKSA9XG4gICAgcGxvdF9wb2ludHNfaW5wdXRfZG9tIyMub25rZXlwcmVzc1xuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBldiAtPlxuICAgICAgICAgICBpZiBldiMjLmtleUNvZGUgPSAxMyB0aGVuXG4gICAgICAgICAgICAgSnMuX2ZhbHNlXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBwbG90X3BvaW50c19pbnB1dF9kb20jIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCBwbG90X3BvaW50c19zdHJpbmcgOiBzdHJpbmcgPVxuICAgICAgICAgICAgIEpzLnRvX3N0cmluZyBwbG90X3BvaW50c19pbnB1dF9kb20jIy52YWx1ZVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgcGxvdF9wb2ludHNfb3B0aW9uIDogaW50IG9wdGlvbiA9XG4gICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICBsZXQgcGxvdF9wb2ludCA9IGludF9vZl9zdHJpbmcgcGxvdF9wb2ludHNfc3RyaW5nIGluXG4gICAgICAgICAgICAgICBpZiBwbG90X3BvaW50ID4gMCB0aGVuXG4gICAgICAgICAgICAgICAgIFNvbWUgcGxvdF9wb2ludFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIG1hdGNoIHBsb3RfcG9pbnRzX29wdGlvbiB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHBsb3RfcG9pbnRzIC0+IHNldF9wb2ludHMgcGxvdF9wb2ludHNcbiAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgIGxldCBwbG90X3BvaW50IDogaW50ID0gUmVhY3QuUy52YWx1ZSBwb2ludCBpblxuICAgICAgICAgICAgICAgbGV0IHBsb3RfcG9pbnRfc3RyaW5nID0gc3RyaW5nX29mX2ludCBwbG90X3BvaW50IGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBwbG90X3BvaW50c19pbnB1dF9kb20jIy52YWx1ZSA6PSBKcy5zdHJpbmcgcGxvdF9wb2ludF9zdHJpbmdcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPSBzZXRfcG9pbnRzIGRlZmF1bHRfcG9pbnQgaW5cbiAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9wbG90IGpzX3Bsb3QgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gICgpXG5cbmxldCBjb25maWd1cmF0aW9uICgpIDogV2lkZ2V0X2V4cG9ydC5jb25maWd1cmF0aW9uID1cbiAge1xuICAgIFdpZGdldF9leHBvcnQuaWQgPSBleHBvcnRfaWQ7XG4gICAgV2lkZ2V0X2V4cG9ydC5oYW5kbGVycyA9XG4gICAgICBbXG4gICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X3N2ZyB+c3ZnX2Rpdl9pZDpkaXZfZGlzcGxheV9pZCAoKTtcbiAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnRfcG5nIH5zdmdfZGl2X2lkOmRpdl9kaXNwbGF5X2lkICgpO1xuICAgICAgICB7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcImpzb25cIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmxhYmVsID0gXCJqc29uXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPSBleHBvcnRfanNvbjtcbiAgICAgICAgfTtcbiAgICAgICAge1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJjc3ZcIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmxhYmVsID0gXCJjc3ZcIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydCA9IGV4cG9ydCBcInRleHQvY3N2XCI7XG4gICAgICAgIH07XG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwidHN2XCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwidHN2XCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPSBleHBvcnQgXCJ0ZXh0L3RzdlwiO1xuICAgICAgICB9O1xuICAgICAgXTtcbiAgICBzaG93ID1cbiAgICAgIFJlYWN0LlMubWFwXG4gICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICBsZXQgb3V0ID0gaGFzX3Bsb3QgKFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsKSBpblxuICAgICAgICAgIGxldCAoKSA9IGlmIG91dCB0aGVuIE9wdGlvbi5pdGVyIHVwZGF0ZV9wbG90ICFwbG90X3JlZiBpblxuICAgICAgICAgIG91dClcbiAgICAgICAgKFJlYWN0LlMub24gdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLmR1bW15X21vZGVsXG4gICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpO1xuICB9XG5cbmxldCB4bWwgKCkgPVxuICBsZXQgZXhwb3J0X2NvbnRyb2xzID0gV2lkZ2V0X2V4cG9ydC5pbmxpbmVfY29udGVudCAoY29uZmlndXJhdGlvbiAoKSkgaW5cbiAgWyVodG1sXG4gICAge3xcbiAgPGRpdiBjbGFzcz1cIm5hdmNvbnRlbnQtdmlldyBmbGV4LWNvbnRlbnRcIiBpZD1cInx9IGRpdl9kaXNwbGF5X2lkXG4gICAgICB7fFwiPjwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJuYXZjb250ZW50LWNvbnRyb2xzXCI+XG4gICAgPGZvcm0gY2xhc3M9XCJmb3JtLWlubGluZVwiIGlkPXx9XG4gICAgICBleHBvcnRfaWRcbiAgICAgIHt8PlxuICAgICAgfH1cbiAgICAgIGV4cG9ydF9jb250cm9sc1xuICAgICAge3xcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInNyLW9ubHlcIiBmb3I9fH1cbiAgICAgIHBsb3RfcG9pbnRzX2lucHV0X2lkXG4gICAgICB7fD5Sb3cgdG8gcGxvdDwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb25cIj5Qb2ludHM8L3NwYW4+XG4gICAgICAgICAgfH1cbiAgICAgIFsgcGxvdF9wb2ludHNfaW5wdXQgXVxuICAgICAge3xcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInNyLW9ubHlcIiBmb3I9fH1cbiAgICAgIHBsb3Rfb2Zmc2V0X2lucHV0X2lkXG4gICAgICB7fD5TZWxlY3RlZCB3aW5kb3c8L2xhYmVsPlxuICAgICAgICB8fVxuICAgICAgWyBwbG90X29mZnNldF9pbnB1dCBdXG4gICAgICB7fFxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICAgIDwvZGl2PiB8fV1cblxubGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIEh0bWwuZWx0IGxpc3QgPVxuICBbIFVpX2NvbW1vbi50b2dnbGVfZWxlbWVudCAoZnVuIHMgLT4gaGFzX3Bsb3QgcykgKHhtbCAoKSkgXVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0IHBsb3Rfb2Zmc2V0X2lucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBwbG90X29mZnNldF9pbnB1dCBpblxuICBsZXQgKCkgPSBXaWRnZXRfZXhwb3J0Lm9ubG9hZCAoY29uZmlndXJhdGlvbiAoKSkgaW5cbiAgbGV0IHBsb3QgOiBKc19wbG90Lm9ic2VydmFibGVfcGxvdCBKcy50ID1cbiAgICBKc19wbG90LmNyZWF0ZV9vYnNlcnZhYmxlX3Bsb3QgZGl2X2Rpc3BsYXlfaWRcbiAgaW5cbiAgKCogVGhlIGVsZW1lbnRzIHNpemUgdGhlbXNlbHZlcyB1c2luZyB0aGUgZGl2J3MgaWYgdGhleSBhcmUgaGlkZGVuXG4gICAgIGl0IHdpbGwgZGVmYXVsdCB0byBzaXplIHplcm8uICBzbyB0aGV5IG5lZWQgdG8gYmUgc2l6ZWQgd2hlbiBzaG93bi5cbiAgKilcbiAgbGV0ICgpID0gb25sb2FkX3Bsb3RfcG9pbnRzX2lucHV0IHBsb3QgaW5cbiAgbGV0ICgpID0gcGxvdF9yZWYgOj0gU29tZSBwbG90IGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZwbG90XCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPiBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnBsb3RcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlIGluXG4gICAgICAgIGxldCBzaW11bGF0aW9uX21vZGVsID0gUmVhY3QuUy52YWx1ZSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsIGluXG4gICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPVxuICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIHNpbXVsYXRpb25fbW9kZWxcbiAgICAgICAgaW5cbiAgICAgICAgaWYgaGFzX3Bsb3Qgc2ltdWxhdGlvbl9pbmZvIHRoZW5cbiAgICAgICAgICB1cGRhdGVfcGxvdCBwbG90XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBVaV9jb21tb24uaW5wdXRfY2hhbmdlIHBsb3Rfb2Zmc2V0X2lucHV0X2RvbSAoZnVuIHZhbHVlIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBzZXRfb2Zmc2V0XG4gICAgICAgICAgICAgIChtYXRjaCBSZWFjdC5TLnZhbHVlIG9mZnNldCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSBvZmZzZXQgLT5cbiAgICAgICAgICAgICAgICBTb21lIHsgb2Zmc2V0IHdpdGggb2Zmc2V0X2N1cnJlbnQgPSBpbnRfb2Zfc3RyaW5nIHZhbHVlIH0pXG4gICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gdXBkYXRlX3Bsb3QgcGxvdCBpblxuICAgICAgICAoKSlcbiAgaW5cbiAgKClcblxubGV0IHBsb3RfY291bnQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgc3RhdGUgLT5cbiAgICBsZXQgb3BlbiBBcGlfdHlwZXNfdCBpblxuICAgIHN0YXRlLnNpbXVsYXRpb25faW5mb19vdXRwdXQuc2ltdWxhdGlvbl9vdXRwdXRfcGxvdFxuXG5sZXQgbmF2bGkgKCkgPVxuICBVaV9jb21tb24ubGFiZWxfbmV3cyB0YWJfaXNfYWN0aXZlIChmdW4gc3RhdGUgLT4gcGxvdF9jb3VudCBzdGF0ZSlcblxubGV0IG9ucmVzaXplICgpID1cbiAgKCogcmVjYWxjdWF0ZSBzaXplICopXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggIXBsb3RfcmVmIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgcGxvdCAtPlxuICAgICAgbGV0IG1vZGVsID0gUmVhY3QuUy52YWx1ZSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsIGluXG4gICAgICAobWF0Y2ggU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgXyAtPiB1cGRhdGVfcGxvdCBwbG90KVxuICBpblxuICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuY2xhc3MgdHlwZSBzbmFwc2hvdCA9IG9iamVjdFxuICBtZXRob2Qgc2V0RGF0YSA6XG4gICAgY29udGFjdF9tYXA6SnMuanNfc3RyaW5nIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHJlZHJhdyA6IHVuaXQgSnMubWV0aFxuICBtZXRob2QgY2xlYXJEYXRhIDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGNyZWF0ZV9zbmFwc2hvdCAoaWQgOiBzdHJpbmcpIChjb2xvcmluZyA6IHVuaXQgSnMudCkgOiBzbmFwc2hvdCBKcy50ID1cbiAgSnMuVW5zYWZlLm5ld19vYmpcbiAgICAoSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIlNuYXBzaG90XCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGlkKTsgSnMuVW5zYWZlLmluamVjdCBjb2xvcmluZyB8XVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcblxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcblxubGV0IGN1cnJlbnRfc25hcHNob3QsIHNldF9jdXJyZW50X3NuYXBzaG90ID1cbiAgUmVhY3QuUy5jcmVhdGUgKE5vbmUgOiAoc3RyaW5nICogRGF0YS5zbmFwc2hvdCkgb3B0aW9uKVxuXG50eXBlIGRpc3BsYXlfZm9ybWF0ID0gS2FwcGEgfCBHcmFwaFxuXG5sZXQgc3RyaW5nX3RvX2Rpc3BsYXlfZm9ybWF0ID0gZnVuY3Rpb25cbiAgfCBcIkthcHBhXCIgLT4gU29tZSBLYXBwYVxuICB8IFwiR3JhcGhcIiAtPiBTb21lIEdyYXBoXG4gIHwgXyAtPiBOb25lXG5cbmxldCBkaXNwbGF5X2Zvcm1hdCwgc2V0X2Rpc3BsYXlfZm9ybWF0ID0gUmVhY3QuUy5jcmVhdGUgS2FwcGFcblxubGV0IHNuYXBzaG90X2NvdW50IChzdGF0ZSA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbyBvcHRpb24pIDogaW50ID1cbiAgbWF0Y2ggc3RhdGUgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgc3RhdGUgLT5cbiAgICBzdGF0ZS5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fb3V0cHV0XG4gICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzXG5cbmxldCBuYXZsaSAoKSA9IFVpX2NvbW1vbi5iYWRnZSAoZnVuIHN0YXRlIC0+IHNuYXBzaG90X2NvdW50IHN0YXRlKVxubGV0IHNlbGVjdF9pZCA9IFwic25hcHNob3Qtc2VsZWN0LWlkXCJcbmxldCBkaXNwbGF5X2lkID0gXCJzbmFwc2hvdC1tYXAtZGlzcGxheVwiXG5cbmxldCBjb25maWd1cmF0aW9uX3RlbXBsYXRlIGlkIGFkZGl0aW9uYWxfaGFuZGxlcnMgOiBXaWRnZXRfZXhwb3J0LmNvbmZpZ3VyYXRpb25cbiAgICA9XG4gIGxldCBqc29uX2hhbmRsZXIgPVxuICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X2pzb24gfnNlcmlhbGl6ZV9qc29uOihmdW4gKCkgLT5cbiAgICAgICAgbWF0Y2ggUmVhY3QuUy52YWx1ZSBjdXJyZW50X3NuYXBzaG90IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwibnVsbFwiXG4gICAgICAgIHwgU29tZSAoXywgcykgLT4gRGF0YS5zdHJpbmdfb2Zfc25hcHNob3QgcylcbiAgaW5cbiAgbGV0IGthcHBhX2hhbmRsZXIgPVxuICAgIHtcbiAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJrYVwiO1xuICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwia2FwcGFcIjtcbiAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID1cbiAgICAgICAgKGZ1biAoZmlsZW5hbWUgOiBzdHJpbmcpIC0+XG4gICAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgICAgSnMuc3RyaW5nXG4gICAgICAgICAgICAgIChtYXRjaCBSZWFjdC5TLnZhbHVlIGN1cnJlbnRfc25hcHNob3Qgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgICB8IFNvbWUgKF8sIHMpIC0+IEFwaV9kYXRhLmFwaV9zbmFwc2hvdF9rYXBwYSBzKVxuICAgICAgICAgIGluXG4gICAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lOlwiYXBwbGljYXRpb24vanNvblwiIH5maWxlbmFtZSk7XG4gICAgfVxuICBpblxuICBsZXQgZG90X2hhbmRsZXIgPVxuICAgIHtcbiAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJkb3RcIjtcbiAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImRvdFwiO1xuICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPVxuICAgICAgICAoZnVuIChmaWxlbmFtZSA6IHN0cmluZykgLT5cbiAgICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICBKcy5zdHJpbmdcbiAgICAgICAgICAgICAgKG1hdGNoIFJlYWN0LlMudmFsdWUgY3VycmVudF9zbmFwc2hvdCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgICAgIHwgU29tZSAoXywgcykgLT4gQXBpX2RhdGEuYXBpX3NuYXBzaG90X2RvdCBzKVxuICAgICAgICAgIGluXG4gICAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lOlwidGV4dC92bmQuZ3JhcGh2aXpcIiB+ZmlsZW5hbWUpO1xuICAgIH1cbiAgaW5cbiAgbGV0IGRlZmF1bHRfaGFuZGxlcnMgPSBbIGpzb25faGFuZGxlcjsga2FwcGFfaGFuZGxlcjsgZG90X2hhbmRsZXIgXSBpblxuICB7XG4gICAgV2lkZ2V0X2V4cG9ydC5pZDtcbiAgICBXaWRnZXRfZXhwb3J0LmhhbmRsZXJzID0gZGVmYXVsdF9oYW5kbGVycyBAIGFkZGl0aW9uYWxfaGFuZGxlcnM7XG4gICAgV2lkZ2V0X2V4cG9ydC5zaG93ID1cbiAgICAgIFJlYWN0LlMubWFwXG4gICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgICBzbmFwc2hvdF9jb3VudCBzaW11bGF0aW9uX2luZm8gPiAwKVxuICAgICAgICAoUmVhY3QuUy5vbiB0YWJfaXNfYWN0aXZlIFN0YXRlX3NpbXVsYXRpb24uZHVtbXlfbW9kZWxcbiAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCk7XG4gIH1cblxuKCogT25seSBhbGxvdyB0aGUgZXhwb3J0IG9mIG5vbi1ncmFwaGljYWwgZGF0YS4gKilcbmxldCBjb25maWd1cmF0aW9uX2thcHBhICgpIDogV2lkZ2V0X2V4cG9ydC5jb25maWd1cmF0aW9uID1cbiAgY29uZmlndXJhdGlvbl90ZW1wbGF0ZSBcInNuYXBzaG90X2thcHBhXCIgW11cblxuKCogVGhlIG1hcHMgYXJlIHJlbmRlcmVkIHNvIGFsbG93IHRoZSBleHBvcnQgb2ZcbiAgIGdyYXBoaWNhbCBkYXRhLiAqKVxubGV0IGNvbmZpZ3VyYXRpb25fZ3JhcGggKCkgOiBXaWRnZXRfZXhwb3J0LmNvbmZpZ3VyYXRpb24gPVxuICBjb25maWd1cmF0aW9uX3RlbXBsYXRlIFwic25hcHNob3RfZ3JhcGhcIlxuICAgIFtcbiAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X3N2ZyB+c3ZnX2Rpdl9pZDpkaXNwbGF5X2lkICgpO1xuICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnRfcG5nIH5zdmdfZGl2X2lkOmRpc3BsYXlfaWQgKCk7XG4gICAgXVxuXG5sZXQgZm9ybWF0X3NlbGVjdF9pZCA9IFwiZm9ybWF0X3NlbGVjdF9pZFwiXG5cbmxldCByZW5kZXJfc25hcHNob3RfZ3JhcGggKHNuYXBzaG90X2pzIDogSnNfc25hcHNob3Quc25hcHNob3QgSnMudClcbiAgICAoc25hcHNob3QgOiBEYXRhLnNuYXBzaG90KSA6IHVuaXQgPVxuICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyAoRGF0YS5zdHJpbmdfb2Zfc25hcHNob3Qgc25hcHNob3QpKSBpblxuICBtYXRjaCBSZWFjdC5TLnZhbHVlIGRpc3BsYXlfZm9ybWF0IHdpdGhcbiAgfCBHcmFwaCAtPlxuICAgIGxldCBqc29uIDogc3RyaW5nID0gRGF0YS5zdHJpbmdfb2Zfc25hcHNob3Qgc25hcHNob3QgaW5cbiAgICBsZXQgY29udGFjdF9tYXAgPSBSZWFjdC5TLnZhbHVlIFRhYl9jb250YWN0X21hcC5jb250YWN0X21hcF90ZXh0IGluXG4gICAgc25hcHNob3RfanMjI3NldERhdGEgfmNvbnRhY3RfbWFwOihKcy5zdHJpbmcgY29udGFjdF9tYXApIChKcy5zdHJpbmcganNvbilcbiAgfCBLYXBwYSAtPiAoKVxuXG5sZXQgc2VsZWN0X3NuYXBzaG90IChzbmFwc2hvdF9qcyA6IEpzX3NuYXBzaG90LnNuYXBzaG90IEpzLnQpIDogdW5pdCA9XG4gIGxldCBpbmRleCA6IGludCBKcy5vcHQgPVxuICAgIEpzLk9wdC5iaW5kXG4gICAgICAoVWlfY29tbW9uLmRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIHNlbGVjdF9pZCkpXG4gICAgICAoZnVuIGRvbSAtPlxuICAgICAgICBsZXQgc25hcHNob3Rfc2VsZWN0X2RvbSA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50ID1cbiAgICAgICAgICBKcy5VbnNhZmUuY29lcmNlIGRvbVxuICAgICAgICBpblxuICAgICAgICBsZXQgZmlsZWluZGV4IDogc3RyaW5nID0gSnMudG9fc3RyaW5nIHNuYXBzaG90X3NlbGVjdF9kb20jIy52YWx1ZSBpblxuICAgICAgICB0cnkgSnMuc29tZSAoaW50X29mX3N0cmluZyBmaWxlaW5kZXgpIHdpdGggXyAtPiBKcy5udWxsKVxuICBpblxuICBsZXQgKCkgPSBDb21tb24uZGVidWcgaW5kZXggaW5cbiAgbGV0IG1vZGVsIDogU3RhdGVfc2ltdWxhdGlvbi50ID0gUmVhY3QuUy52YWx1ZSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsIGluXG4gIGxldCBzaW11bGF0aW9uX291dHB1dCA6IEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mbyBvcHRpb24gPVxuICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsXG4gIGluXG4gIG1hdGNoIHNpbXVsYXRpb25fb3V0cHV0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBzdGF0ZSAtPlxuICAgIGxldCBpbmRleCA6IGludCA9IEpzLk9wdC5nZXQgaW5kZXggKGZ1biBfIC0+IDApIGluXG4gICAgaWYgc25hcHNob3RfY291bnQgKFNvbWUgc3RhdGUpID4gMCB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2NhdGFsb2dfc25hcHNob3RcbiAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBzbmFwc2hvdF9pZHMgLT5cbiAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHNuYXBzaG90X2lkIDogc3RyaW5nID0gTGlzdC5udGggc25hcHNob3RfaWRzIGluZGV4IGluXG4gICAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9zbmFwc2hvdCBzbmFwc2hvdF9pZFxuICAgICAgICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIChzbmFwc2hvdCA6IERhdGEuc25hcHNob3QpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfY3VycmVudF9zbmFwc2hvdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTb21lIChzbmFwc2hvdF9pZCwgc25hcHNob3QpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl9zbmFwc2hvdF9ncmFwaCBzbmFwc2hvdF9qcyBzbmFwc2hvdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IEZhaWx1cmUgZiAtPiBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZilcbiAgICAgICAgICAgICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZikpKVxuICAgICAgaW5cbiAgICAgICgpXG4gICAgKVxuXG5sZXQgc2VsZWN0IChzbmFwc2hvdHMgOiBBcGlfdHlwZXNfai5zbmFwc2hvdF9pZCBsaXN0KSA6XG4gICAgWz4gSHRtbF90eXBlcy5zZWxlY3RvcHRpb24gXSBIdG1sLmVsdCBsaXN0ID1cbiAgTGlzdC5tYXBpXG4gICAgKGZ1biBpIHNuYXBzaG90X2lkIC0+XG4gICAgICBIdG1sLm9wdGlvblxuICAgICAgICB+YTpcbiAgICAgICAgICAoWyBIdG1sLmFfdmFsdWUgKHN0cmluZ19vZl9pbnQgaSkgXVxuICAgICAgICAgIEBcbiAgICAgICAgICBpZlxuICAgICAgICAgICAgbWF0Y2ggUmVhY3QuUy52YWx1ZSBjdXJyZW50X3NuYXBzaG90IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgfCBTb21lIChmaWxlbmFtZSwgXykgLT4gZmlsZW5hbWUgPSBzbmFwc2hvdF9pZFxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIFsgSHRtbC5hX3NlbGVjdGVkICgpIF1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBbXSlcbiAgICAgICAgKEh0bWwudHh0IHNuYXBzaG90X2lkKSlcbiAgICBzbmFwc2hvdHNcblxubGV0IHNuYXBzaG90X2NsYXNzIDpcbiAgICBlbXB0eToodW5pdCAtPiAnYSkgLT5cbiAgICBzaW5nbGU6KHVuaXQgLT4gJ2EpIC0+XG4gICAgbXVsdGlwbGU6KHVuaXQgLT4gJ2EpIC0+XG4gICAgJ2EgUmVhY3Quc2lnbmFsID1cbiBmdW4gfmVtcHR5IH5zaW5nbGUgfm11bHRpcGxlIC0+XG4gIFJlYWN0LlMubWFwXG4gICAgKGZ1biBtb2RlbCAtPlxuICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICBtYXRjaCBzbmFwc2hvdF9jb3VudCBzaW11bGF0aW9uX2luZm8gd2l0aFxuICAgICAgfCAwIC0+IGVtcHR5ICgpXG4gICAgICB8IDEgLT4gc2luZ2xlICgpXG4gICAgICB8IF8gLT4gbXVsdGlwbGUgKCkpXG4gICAgKFJlYWN0LlMub24gdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLmR1bW15X21vZGVsXG4gICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxubGV0IHNuYXBzaG90X2pzIDogSnNfc25hcHNob3Quc25hcHNob3QgSnMudCA9XG4gIEpzX3NuYXBzaG90LmNyZWF0ZV9zbmFwc2hvdCBkaXNwbGF5X2lkIFN0YXRlX3NldHRpbmdzLmFnZW50X2NvbG9yaW5nXG5cbmxldCB4bWwgKCkgPVxuICBsZXQgbGlzdCA9XG4gICAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fZXZlbnQgW11cbiAgICAgIChMd3RfcmVhY3QuRS5tYXBfc1xuICAgICAgICAgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IHNlbGVjdF9zbmFwc2hvdCBzbmFwc2hvdF9qcyBpblxuICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgIH5zdG9wcGVkOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBbXSkpXG4gICAgICAgICAgICAgfmluaXRpYWxpemluZzooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgW10pKVxuICAgICAgICAgICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyAtPlxuICAgICAgICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2NhdGFsb2dfc25hcHNob3RcbiAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBzbmFwc2hvdF9pZHMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKHNlbGVjdCBzbmFwc2hvdF9pZHMpKSkpXG4gICAgICAgICAgICAgKClcbiAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgfm9rOihmdW4geCAtPiBSZWFjdGl2ZURhdGEuUkxpc3QuU2V0IHgpXG4gICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIF8gLT4gUmVhY3RpdmVEYXRhLlJMaXN0LlNldCBbXSkpXG4gICAgICAgICAoUmVhY3QuUy5jaGFuZ2VzXG4gICAgICAgICAgICAoUmVhY3QuUy5vbiB0YWJfaXNfYWN0aXZlIFN0YXRlX3NpbXVsYXRpb24uZHVtbXlfbW9kZWxcbiAgICAgICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpKSlcbiAgaW5cbiAgbGV0IHNuYXBzaG90X2xhYmVsID1cbiAgICBIdG1sLmg0XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAoc25hcHNob3RfY2xhc3NcbiAgICAgICAgICAgICAgIH5lbXB0eTooZnVuICgpIC0+IFsgXCJoaWRkZW5cIiBdKVxuICAgICAgICAgICAgICAgfnNpbmdsZTooZnVuIF8gLT4gWyBcIm9uZWxpbmVyXCI7IFwidmlzaWJsZVwiIF0pXG4gICAgICAgICAgICAgICB+bXVsdGlwbGU6KGZ1biBfIC0+IFsgXCJoaWRkZW5cIiBdKSk7XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgIChmdW4gc25hcHNob3QgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIHNuYXBzaG90IHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgICAgICB8IFNvbWUgKHNuYXBzaG90X2ZpbGUsIF8pIC0+IHNuYXBzaG90X2ZpbGUpXG4gICAgICAgICAgICAgY3VycmVudF9zbmFwc2hvdCk7XG4gICAgICBdXG4gIGluXG4gIGxldCBzbmFwc2hvdF9zZWxlY3QgPVxuICAgIFR5eG1sX2pzLlIuSHRtbC5zZWxlY3RcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgIChzbmFwc2hvdF9jbGFzc1xuICAgICAgICAgICAgICAgfmVtcHR5OihmdW4gKCkgLT4gWyBcImhpZGRlblwiIF0pXG4gICAgICAgICAgICAgICB+c2luZ2xlOihmdW4gXyAtPiBbIFwiaGlkZGVuXCIgXSlcbiAgICAgICAgICAgICAgIH5tdWx0aXBsZTooZnVuIF8gLT4gWyBcInZpc2libGVcIjsgXCJmb3JtLWNvbnRyb2xcIiBdKSk7XG4gICAgICAgICAgSHRtbC5hX2lkIHNlbGVjdF9pZDtcbiAgICAgICAgXVxuICAgICAgbGlzdFxuICBpblxuICBsZXQgc25hcHNob3RfY2hvb3NlciA9IEh0bWwuZGl2IFsgc25hcHNob3RfbGFiZWw7IHNuYXBzaG90X3NlbGVjdCBdIGluXG4gIGxldCB0b2dnbGVfY29udHJvbHMgfmthcHBhIH5ncmFwaCA9XG4gICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgS2FwcGEgLT4ga2FwcGFcbiAgICAgICAgICAgfCBHcmFwaCAtPiBncmFwaClcbiAgICAgICAgIGRpc3BsYXlfZm9ybWF0KVxuICBpblxuICBsZXQgZXhwb3J0X2NvbnRyb2xzID1cbiAgICBbXG4gICAgICBIdG1sLmRpdlxuICAgICAgICB+YTpbIHRvZ2dsZV9jb250cm9scyB+a2FwcGE6WyBcInZpc2libGVcIiBdIH5ncmFwaDpbIFwiaGlkZGVuXCIgXSBdXG4gICAgICAgIFsgV2lkZ2V0X2V4cG9ydC5jb250ZW50IChjb25maWd1cmF0aW9uX2thcHBhICgpKSBdO1xuICAgICAgSHRtbC5kaXZcbiAgICAgICAgfmE6WyB0b2dnbGVfY29udHJvbHMgfmthcHBhOlsgXCJoaWRkZW5cIiBdIH5ncmFwaDpbIFwidmlzaWJsZVwiIF0gXVxuICAgICAgICBbIFdpZGdldF9leHBvcnQuY29udGVudCAoY29uZmlndXJhdGlvbl9ncmFwaCAoKSkgXTtcbiAgICBdXG4gIGluXG4gIGxldCBrYXBwYV9zbmFwc2hvdF9kaXNwbGF5ID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuIGRpc3BsYXlfZm9ybWF0IC0+XG4gICAgICAgICAgICAgICAgIFwicGFuZWwtc2Nyb2xsXCIgOjogXCJrYXBwYS1jb2RlXCIgOjogXCJmbGV4LWNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICA6OlxuICAgICAgICAgICAgICAgICAobWF0Y2ggZGlzcGxheV9mb3JtYXQgd2l0aFxuICAgICAgICAgICAgICAgICB8IEthcHBhIC0+IFsgXCJ2aXNpYmxlXCIgXVxuICAgICAgICAgICAgICAgICB8IEdyYXBoIC0+IFsgXCJoaWRkZW5cIiBdKSlcbiAgICAgICAgICAgICAgIGRpc3BsYXlfZm9ybWF0KTtcbiAgICAgICAgXVxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwudHh0XG4gICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgKGZ1biBzbmFwc2hvdCAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggc25hcHNob3Qgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgIHwgU29tZSAoXywgc25hcHNob3QpIC0+IEFwaV9kYXRhLmFwaV9zbmFwc2hvdF9rYXBwYSBzbmFwc2hvdClcbiAgICAgICAgICAgICBjdXJyZW50X3NuYXBzaG90KTtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IGthcHBhX2dyYXBoX2Rpc3BsYXkgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgIChmdW4gZGlzcGxheV9mb3JtYXQgLT5cbiAgICAgICAgICAgICAgICAgXCJmbGV4LWNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICA6OlxuICAgICAgICAgICAgICAgICAobWF0Y2ggZGlzcGxheV9mb3JtYXQgd2l0aFxuICAgICAgICAgICAgICAgICB8IEdyYXBoIC0+IFsgXCJ2aXNpYmxlXCIgXVxuICAgICAgICAgICAgICAgICB8IEthcHBhIC0+IFsgXCJoaWRkZW5cIiBdKSlcbiAgICAgICAgICAgICAgIGRpc3BsYXlfZm9ybWF0KTtcbiAgICAgICAgXVxuICAgICAgWyVodG1sXG4gICAgICAgIHt8XG4gICAgICAgIDxmb3JtICBjbGFzcz1cImZvcm0taW5saW5lXCIgaWQ9XCJzbmFwLWZvcm1cIj5cbiAgICAgICAgPGxhYmVsPjxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwibW9kZVwiIHZhbHVlPVwic3VtQnlNYXNzXCIgY2hlY2tlZD4gTWFzczwvbGFiZWw+XG4gICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cIm1vZGVcIiB2YWx1ZT1cInN1bUJ5Q291bnRcIiA+IENvdW50PC9sYWJlbD5cbiAgICAgICAgPGxhYmVsPjxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwibW9kZVwiIHZhbHVlPVwic3VtQnlTaXplXCIgPiBTaXplPC9sYWJlbD5cbiAgICAgICAgPGJ1dHRvbiBpZD1cInJlY2VudGVyU25hcEJ1dHRvblwiIGNsYXNzPVwic3RhdGVCdXR0b25cIiB0eXBlPVwiYnV0dG9uXCI+UmVzZXQgWm9vbTwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGlkPVwicm9vdEJ1dHRvblwiIGNsYXNzPVwic3RhdGVCdXR0b25cIiB0eXBlPVwiYnV0dG9uXCI+QmFjayB0byByb290PC9idXR0b24+XG4gICAgICAgIDwvZm9ybT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY29udGVudFwiIGlkPVwifH1cbiAgICAgICAgICBkaXNwbGF5X2lkIHt8XCI+PC9kaXY+fH1dXG4gIGluXG4gIGxldCBmb3JtYXRfY2hvb3NlciA9XG4gICAgWyVodG1sXG4gICAgICB7fCA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJ8fSBmb3JtYXRfc2VsZWN0X2lkXG4gICAgICAgIHt8XCI+PG9wdGlvbiB2YWx1ZT1cIkthcHBhXCIgc2VsZWN0ZWQ+a2FwcGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPVwiR3JhcGhcIj5ncmFwaDwvb3B0aW9uPjwvc2VsZWN0PiB8fV1cbiAgaW5cbiAgWyVodG1sXG4gICAge3w8ZGl2IGNsYXNzPVwibmF2Y29udGVudC12aWV3IGZsZXgtY29udGVudFwiPlxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm1hcmdpbiA6IDVweDtcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTIgY29sLXhzLTRcIj5cbiAgICAgICAgIHx9XG4gICAgICBbIGZvcm1hdF9jaG9vc2VyIF1cbiAgICAgIHt8XG4gICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTAgY29sLXhzLThcIj4gfH1cbiAgICAgIFsgc25hcHNob3RfY2hvb3NlciBdXG4gICAgICB7fCA8L2Rpdj5cbiAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB8fVxuICAgICAgWyBrYXBwYV9zbmFwc2hvdF9kaXNwbGF5OyBrYXBwYV9ncmFwaF9kaXNwbGF5IF1cbiAgICAgIHt8XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdmNvbnRlbnQtY29udHJvbHNcIj5cbiAgICAgICAgICB8fVxuICAgICAgZXhwb3J0X2NvbnRyb2xzXG4gICAgICB7fFxuICAgICAgICAgIDwvZGl2PlxuICB8fV1cblxubGV0IGNvbnRlbnQgKCkgPVxuICBbIFVpX2NvbW1vbi50b2dnbGVfZWxlbWVudCAoZnVuIHN0YXRlIC0+IHNuYXBzaG90X2NvdW50IHN0YXRlID4gMCkgKHhtbCAoKSkgXVxuXG5sZXQgb25sb2FkICgpIDogdW5pdCA9XG4gIGxldCBzbmFwc2hvdF9zZWxlY3RfZG9tIDogRG9tX2h0bWwuaW5wdXRFbGVtZW50IEpzLnQgPVxuICAgIFVpX2NvbW1vbi5pZF9kb20gc2VsZWN0X2lkXG4gIGluXG4gIGxldCBmb3JtYXRfc2VsZWN0X2RvbSA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50ID1cbiAgICBVaV9jb21tb24uaWRfZG9tIGZvcm1hdF9zZWxlY3RfaWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBzbmFwc2hvdF9zZWxlY3RfZG9tIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgXCJvbmNoYW5nZVwiIGluXG4gICAgICAgICAgIGxldCAoKSA9IHNlbGVjdF9zbmFwc2hvdCBzbmFwc2hvdF9qcyBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0IHVwZGF0ZV9mb3JtYXQgKCkgPVxuICAgIGxldCBmb3JtYXRfdGV4dCA6IHN0cmluZyA9IEpzLnRvX3N0cmluZyBmb3JtYXRfc2VsZWN0X2RvbSMjLnZhbHVlIGluXG4gICAgbWF0Y2ggc3RyaW5nX3RvX2Rpc3BsYXlfZm9ybWF0IGZvcm1hdF90ZXh0IHdpdGhcbiAgICB8IFNvbWUgZm9ybWF0IC0+XG4gICAgICBsZXQgKCkgPSBzZXRfZGlzcGxheV9mb3JtYXQgZm9ybWF0IGluXG4gICAgICAobWF0Y2ggUmVhY3QuUy52YWx1ZSBjdXJyZW50X3NuYXBzaG90IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIChfLCBzbmFwc2hvdCkgLT5cbiAgICAgICAgcmVuZGVyX3NuYXBzaG90X2dyYXBoXG4gICAgICAgICAgKHNuYXBzaG90X2pzIDogSnNfc25hcHNob3Quc25hcHNob3QgSnMudClcbiAgICAgICAgICAoc25hcHNob3QgOiBEYXRhLnNuYXBzaG90KSlcbiAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIGluXG4gICgqIGdldCBpbml0aWFsIHZhbHVlIGZvciBkaXNwbGF5IGZvcm1hdCAqKVxuICBsZXQgKCkgPSB1cGRhdGVfZm9ybWF0ICgpIGluXG4gICgqIHVwZGF0ZSB2YWx1ZSBmb3IgZGlzcGxheSBmb3JtYXQgKilcbiAgbGV0ICgpID1cbiAgICBmb3JtYXRfc2VsZWN0X2RvbSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gdXBkYXRlX2Zvcm1hdCAoKSBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnNuYXBzaG90XCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnNuYXBzaG90XCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSBpblxuICAgICAgICAoKSlcbiAgaW5cbiAgbGV0ICgpID0gV2lkZ2V0X2V4cG9ydC5vbmxvYWQgKGNvbmZpZ3VyYXRpb25fa2FwcGEgKCkpIGluXG4gIGxldCAoKSA9IFdpZGdldF9leHBvcnQub25sb2FkIChjb25maWd1cmF0aW9uX2dyYXBoICgpKSBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gaWYgUmVhY3QuUy52YWx1ZSB0YWJfaXNfYWN0aXZlIHRoZW4gc25hcHNob3RfanMjI3JlZHJhd1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuY2xhc3MgdHlwZSBzdG9yeV9yZW5kZXJpbmcgPSBvYmplY3RcbiAgbWV0aG9kIHNldERhdGEgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIHJlZHJhdyA6IHVuaXQgSnMubWV0aFxuICBtZXRob2QgY2xlYXJEYXRhIDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGNyZWF0ZV9zdG9yeV9yZW5kZXJpbmcgKGlkIDogc3RyaW5nKSA6IHN0b3J5X3JlbmRlcmluZyBKcy50ID1cbiAgSnMuVW5zYWZlLm5ld19vYmpcbiAgICAoSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIlN0b3J5UmVuZGVyaW5nXCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGlkKSB8XVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCB0YWJfd2FzX2FjdGl2ZSA9IHJlZiBmYWxzZVxubGV0IG5hdmxpICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5sZXQgbm9uZV9jaGVja2JveCA9IEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3ggXSAoKVxuXG5sZXQgd2Vha19jaGVja2JveCA9XG4gIEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3g7IEh0bWwuYV9jaGVja2VkICgpIF0gKClcblxubGV0IHN0cm9uZ19jaGVja2JveCA9IEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3ggXSAoKVxubGV0IG5vbmVfYm94ID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG5vbmVfY2hlY2tib3hcbmxldCB3ZWFrX2JveCA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCB3ZWFrX2NoZWNrYm94XG5sZXQgc3Ryb25nX2JveCA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBzdHJvbmdfY2hlY2tib3hcblxubGV0IGxhdW5jaF9idXR0b24gPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07IEh0bWwuYV9idXR0b25fdHlwZSBgU3VibWl0IF1cbiAgICBbIEh0bWwudHh0IFwiTGF1bmNoXCIgXVxuXG5sZXQgc3RvcnlfbGlzdCwgbGlzdF9jb250cm9sID0gUmVhY3QuUy5jcmVhdGUgW11cblxubGV0IHN0b3J5X2xpc3RfaHRtbCA9XG4gIFJlYWN0aXZlRGF0YS5STGlzdC5tYXBcbiAgICAoZnVuIChpZCwgY20pIC0+XG4gICAgICBIdG1sLm9wdGlvblxuICAgICAgICB+YTpbIEh0bWwuYV92YWx1ZSAoc3RyaW5nX29mX2ludCBpZCkgXVxuICAgICAgICAoSHRtbC50eHRcbiAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkBbJWkgKCVhKUBdXCIgaWRcbiAgICAgICAgICAgICAgS2FzdG9yX2NsaWVudC5wcmludF9jb21wcmVzc2lvbl9tb2RlcyBjbSkpKVxuICAgIChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWwgc3RvcnlfbGlzdClcblxubGV0IHNlbGVjdF9zdG9yaWVzID0gVHl4bWxfanMuUi5IdG1sNS5zZWxlY3Qgc3RvcnlfbGlzdF9odG1sXG5sZXQgc2VsZWN0X3N0b3JpZXNfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBzZWxlY3Rfc3Rvcmllc1xuXG5sZXQlaHRtbCBzZXR1cF9mb3JtID1cbiAge3w8Zm9ybSBjbGFzcz1cImZvcm0taW5saW5lXCI+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWw+Q29tcHJlc3Npb24gbGV2ZWw8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveFwiPjxsYWJlbD58fVxuICAgIFsgbm9uZV9jaGVja2JveCBdXG4gICAge3wgQ2F1c2FsPC9sYWJlbD48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIHdlYWtfY2hlY2tib3ggXVxuICAgIHt8IFdlYWtseTwvbGFiZWw+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNoZWNrYm94XCI+PGxhYmVsPnx9XG4gICAgWyBzdHJvbmdfY2hlY2tib3ggXVxuICAgIHt8IFN0cm9uZ2x5PC9sYWJlbD48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPnx9XG4gICAgWyBsYXVuY2hfYnV0dG9uIF1cbiAgICB7fDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsPlNlbGVjdGVkIHN0b3J5PC9sYWJlbD58fVxuICAgIFsgc2VsZWN0X3N0b3JpZXMgXVxuICAgIHt8XG4gICAgPC9kaXY+XG4gICAgPC9mb3JtPnx9XG5cbmxldCBzdG9yeV9sb2csIGxvZ19jb250cm9sID0gUmVhY3QuUy5jcmVhdGUgW11cbmxldCBjdXJyZW50X2luZm8sIHNldF9pbmZvID0gUmVhY3QuUy5jcmVhdGUgXCJcIlxuXG5sZXQgc3RvcnlfbG9nX2h0bWwgPVxuICBSZWFjdGl2ZURhdGEuUkxpc3QubWFwXG4gICAgKGZ1biBsaW5lIC0+IEh0bWwudHh0IChsaW5lIF4gXCJcXG5cIikpXG4gICAgKFJlYWN0aXZlRGF0YS5STGlzdC5yZXYgKFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbCBzdG9yeV9sb2cpKVxuXG5sZXQgbG9nX2RpdiA9XG4gIFR5eG1sX2pzLlIuSHRtbDUuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1wcmVcIiBdIF0gc3RvcnlfbG9nX2h0bWxcblxubGV0IGxvZ19wYW5lbCA9XG4gIFtcbiAgICBVaV9jb21tb24ubmF2dGFicyBcInN0b3J5bG9nbmF2dGFiXCJcbiAgICAgIFtcbiAgICAgICAgXCJzdG9yeV9jb21wdXRhdGlvbl9sb2dcIiwgTm9uZSwgUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5O1xuICAgICAgICBcInN0b3J5X2luZm9fbG9nXCIsIE5vbmUsIFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eTtcbiAgICAgIF07XG4gICAgVWlfY29tbW9uLm5hdmNvbnRlbnQgWyBcInBhbmVsLXNjcm9sbFwiIF1cbiAgICAgIFtcbiAgICAgICAgXCJzdG9yeV9jb21wdXRhdGlvbl9sb2dcIiwgW10sIFsgbG9nX2RpdiBdO1xuICAgICAgICBcInN0b3J5X2luZm9fbG9nXCIsIFsgXCJwYW5lbC1wcmVcIiBdLCBbIFR5eG1sX2pzLlIuSHRtbDUudHh0IGN1cnJlbnRfaW5mbyBdO1xuICAgICAgXTtcbiAgXVxuXG5sZXQgZ3JhcGhfZGlzcGxheV9pZCA9IFwic3RvcnlfZ3JhcGhfZGlzcGxheVwiXG5sZXQgc3RvcnlfZ3JhcGggPSBKc19zdG9yeS5jcmVhdGVfc3RvcnlfcmVuZGVyaW5nIGdyYXBoX2Rpc3BsYXlfaWRcblxubGV0IGNvbnRlbnQgKCkgPVxuICBbXG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtNVwiOyBcImZsZXgtY29udGVudFwiIF0gXVxuICAgICAgKHNldHVwX2Zvcm0gOjogbG9nX3BhbmVsKTtcbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgZ3JhcGhfZGlzcGxheV9pZDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC03XCI7IFwiZmxleC1jb250ZW50XCIgXTtcbiAgICAgICAgXVxuICAgICAgW107XG4gIF1cblxubGV0IGxpZnRfcmVzdWx0ID0gZnVuY3Rpb25cbiAgfCBSZXN1bHQuT2sgeCAtPiBSZXN1bHRfdXRpbC5vayB4XG4gIHwgUmVzdWx0LkVycm9yIGUgLT4gQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVcblxubGV0IGRvX3VwZGF0ZV9jb21wcmVzc2lvbl9sZXZlbCAoKSA9XG4gIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwiQ29uZmlnIGNvbXByZXNzaW9uXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBsZXQgY2F1c2FsID0gSnMudG9fYm9vbCBub25lX2JveCMjLmNoZWNrZWQgaW5cbiAgICAgIGxldCB3ZWFrID0gSnMudG9fYm9vbCB3ZWFrX2JveCMjLmNoZWNrZWQgaW5cbiAgICAgIGxldCBzdHJvbmcgPSBKcy50b19ib29sIHN0cm9uZ19ib3gjIy5jaGVja2VkIGluXG4gICAgICBtYW5hZ2VyI2NvbmZpZ19zdG9yeV9jb21wdXRhdGlvbiB7IEFwaS5jYXVzYWw7IEFwaS53ZWFrOyBBcGkuc3Ryb25nIH1cbiAgICAgID58PSBsaWZ0X3Jlc3VsdClcblxubGV0IHVwZGF0ZV9jb21wcmVzc2lvbl9sZXZlbCA9XG4gIERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICBsZXQgXyA9IGRvX3VwZGF0ZV9jb21wcmVzc2lvbl9sZXZlbCAoKSBpblxuICAgICAgSnMuX2ZhbHNlKVxuXG5sZXQgc2V0X2Ffc3RvcnkgPVxuICBsZXQgcHJlZF9pZCA9IHJlZiBtYXhfaW50IGluXG4gIGZ1biAoKSAtPlxuICAgIGxldCB2YSA9IEpzLnRvX3N0cmluZyBzZWxlY3Rfc3Rvcmllc19kb20jIy52YWx1ZSBpblxuICAgIGlmIHZhID0gXCJcIiB0aGVuIChcbiAgICAgIGxldCAoKSA9IHByZWRfaWQgOj0gbWF4X2ludCBpblxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBpZCA9IGludF9vZl9zdHJpbmcgdmEgaW5cbiAgICAgIGlmICFwcmVkX2lkIDw+IGlkIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBwcmVkX2lkIDo9IGlkIGluXG4gICAgICAgIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwiTGF1bmNoIHN0b3JpZXNcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIG1hbmFnZXIjc3RvcnlfbGlzdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICAgICAgICB8IFNvbWUgKF9jbSwgZCwgdikgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBzZXRfaW5mb1xuICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkBbaWRzOiBAWyVhQF1AIHQ9QFslYUBdQCBldmVudD1AWyVhQF1AXVwiXG4gICAgICAgICAgICAgICAgICAgICAoUHAubGlzdCBQcC5jb21tYVxuICAgICAgICAgICAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKGZ1biBmIGQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ludCBmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQpKSlcbiAgICAgICAgICAgICAgICAgICAgIGRcbiAgICAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hXG4gICAgICAgICAgICAgICAgICAgICAgICAoUHAubGlzdCBQcC5jb21tYSAoZnVuIGYgZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfZmxvYXQgZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWUpKSlcbiAgICAgICAgICAgICAgICAgICAgIGRcbiAgICAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hXG4gICAgICAgICAgICAgICAgICAgICAgICAoUHAubGlzdCBQcC5jb21tYSAoZnVuIGYgZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfaW50IGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudCkpKVxuICAgICAgICAgICAgICAgICAgICAgZClcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBzdG9yeV9ncmFwaCMjc2V0RGF0YVxuICAgICAgICAgICAgICAgICAgKEpzLnN0cmluZyAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoR3JhcGhfanNvbi50b19qc29uIHYpKSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgKSBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgIClcblxubGV0IHJlYyBpbnNwZWN0X3N0b3JpZXMgKCkgPVxuICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcIlN0b3JpZXMgbGlzdFwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgbGlzdF9jb250cm9sXG4gICAgICAgICAgKE1vZHMuSW50TWFwLmZvbGRcbiAgICAgICAgICAgICAoZnVuIGlkIChjbSwgXywgXykgYWNjIC0+IChpZCwgY20pIDo6IGFjYylcbiAgICAgICAgICAgICBtYW5hZ2VyI3N0b3J5X2xpc3QgW10pXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gbG9nX2NvbnRyb2wgbWFuYWdlciNzdG9yeV9sb2cgaW5cbiAgICAgIHNldF9hX3N0b3J5ICgpKVxuICA+Pj0gZnVuIF8gLT5cbiAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJTdG9yaWVzIGNvbXB1dGluZ1wiIChmdW4gbWFuYWdlciAtPlxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgbWFuYWdlciNpc19jb21wdXRpbmcpKVxuICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICB+b2s6KGZ1biBiIC0+XG4gICAgICAgICAgaWYgYiAmJiBSZWFjdC5TLnZhbHVlIHRhYl9pc19hY3RpdmUgdGhlblxuICAgICAgICAgICAgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcy5zbGVlcCAzLiA+Pj0gaW5zcGVjdF9zdG9yaWVzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTHd0LnJldHVybl91bml0KVxuICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHBhcmVudF9oaWRlICgpID0gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2VcbmxldCBwYXJlbnRfc2hvd24gKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSAhdGFiX3dhc19hY3RpdmVcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZzdG9yaWVzXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSBmYWxzZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnN0b3JpZXNcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSB0cnVlIGluXG4gICAgICAgIGxldCAoKSA9IHNldF90YWJfaXNfYWN0aXZlIHRydWUgaW5cbiAgICAgICAgbGV0IF8gPSBkb191cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgKCkgaW5cbiAgICAgICAgTHd0LmFzeW5jIGluc3BlY3Rfc3RvcmllcylcbiAgaW5cbiAgbGV0ICgpID0gbm9uZV9ib3gjIy5vbmNoYW5nZSA6PSB1cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgaW5cbiAgbGV0ICgpID0gd2Vha19ib3gjIy5vbmNoYW5nZSA6PSB1cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgaW5cbiAgbGV0ICgpID0gc3Ryb25nX2JveCMjLm9uY2hhbmdlIDo9IHVwZGF0ZV9jb21wcmVzc2lvbl9sZXZlbCBpblxuICBsZXQgKCkgPVxuICAgIHNlbGVjdF9zdG9yaWVzX2RvbSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0IF8gPSBzZXRfYV9zdG9yeSAoKSBpblxuICAgICAgICAgICBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gbGF1bmNoX2J1dHRvbikjIy5vbmNsaWNrXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwiTGF1bmNoIHN0b3JpZXNcIlxuICAgICAgICAgICAgICAgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgICAgICAgIGlmIG1hbmFnZXIjc3RvcnlfaXNfY29tcHV0aW5nIHRoZW5cbiAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9yYXdfdHJhY2VcbiAgICAgICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gdHJhY2UgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjcmF3X2xhdW5jaF9zdG9yeV9jb21wdXRhdGlvbiB0cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPnw9IGxpZnRfcmVzdWx0KSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID0gTHd0LmFzeW5jIGluc3BlY3Rfc3RvcmllcyBpblxuICAgICAgICAgICBKcy5fZmFsc2UpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IG5hdl90YWJfaWQgPSBcIm5hdnRhYnNcIlxuXG5sZXQgbmF2dGFicyAoKSA9XG4gIGxldCBzdG9yeV9jbGFzcyA9XG4gICAgU29tZVxuICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAoZnVuIHMgLT5cbiAgICAgICAgICAgaWYgcy5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnMuU3RhdGVfcHJvamVjdC5zdG9yZV90cmFjZSB0aGVuXG4gICAgICAgICAgICAgW11cbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFsgXCJkaXNhYmxlZFwiIF0pXG4gICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsKVxuICBpblxuICBUeXhtbF9qcy5Ub19kb20ub2ZfdWxcbiAgQEAgVWlfY29tbW9uLm5hdnRhYnMgbmF2X3RhYl9pZFxuICAgICAgIFtcbiAgICAgICAgIFwiZWRpdG9yXCIsIE5vbmUsIFRhYl9lZGl0b3IubmF2bGkgKCk7XG4gICAgICAgICBcImxvZ1wiLCBOb25lLCBUYWJfbG9nLm5hdmxpICgpO1xuICAgICAgICAgXCJwbG90XCIsIE5vbmUsIFRhYl9wbG90Lm5hdmxpICgpO1xuICAgICAgICAgXCJESU5cIiwgTm9uZSwgVGFiX2ZsdXgubmF2bGkgKCk7XG4gICAgICAgICBcInNuYXBzaG90XCIsIE5vbmUsIFRhYl9zbmFwc2hvdC5uYXZsaSAoKTtcbiAgICAgICAgIFwib3V0cHV0c1wiLCBOb25lLCBUYWJfb3V0cHV0cy5uYXZsaSAoKTtcbiAgICAgICAgIFwic3Rvcmllc1wiLCBzdG9yeV9jbGFzcywgVGFiX3N0b3JpZXMubmF2bGkgKCk7XG4gICAgICAgICBcImFib3V0XCIsIE5vbmUsIFRhYl9hYm91dC5uYXZsaSAoKTtcbiAgICAgICBdXG5cbmxldCBuYXZjb250ZW50c19pZCA6IHN0cmluZyA9IFwibmF2Y29udGVudHNcIlxuXG5sZXQgbmF2Y29udGVudHMgKCkgPVxuICBUeXhtbF9qcy5Ub19kb20ub2ZfZGl2XG4gIEBAIFVpX2NvbW1vbi5uYXZjb250ZW50IH5pZDpuYXZjb250ZW50c19pZCBbXVxuICAgICAgIFtcbiAgICAgICAgIFwiZWRpdG9yXCIsIFsgXCJyb3dcIiBdLCBUYWJfZWRpdG9yLmNvbnRlbnQgKCk7XG4gICAgICAgICBcImxvZ1wiLCBbXSwgVGFiX2xvZy5jb250ZW50ICgpO1xuICAgICAgICAgXCJwbG90XCIsIFtdLCBUYWJfcGxvdC5jb250ZW50ICgpO1xuICAgICAgICAgXCJESU5cIiwgW10sIFRhYl9mbHV4LmNvbnRlbnQgKCk7XG4gICAgICAgICBcInNuYXBzaG90XCIsIFtdLCBUYWJfc25hcHNob3QuY29udGVudCAoKTtcbiAgICAgICAgIFwib3V0cHV0c1wiLCBbXSwgVGFiX291dHB1dHMuY29udGVudCAoKTtcbiAgICAgICAgIFwic3Rvcmllc1wiLCBbIFwicm93XCIgXSwgVGFiX3N0b3JpZXMuY29udGVudCAoKTtcbiAgICAgICAgIFwiYWJvdXRcIiwgWyBcInBhbmVsLXNjcm9sbFwiIF0sIFRhYl9hYm91dC5jb250ZW50ICgpO1xuICAgICAgIF1cblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9IFRhYl9lZGl0b3Iub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9sb2cub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9wbG90Lm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfZmx1eC5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX3NuYXBzaG90Lm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfb3V0cHV0cy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX3N0b3JpZXMub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9hYm91dC5vbmxvYWQgKCkgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpID1cbiAgbGV0ICgpID0gVGFiX2VkaXRvci5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfbG9nLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9wbG90Lm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9mbHV4Lm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9zbmFwc2hvdC5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfb3V0cHV0cy5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfc3Rvcmllcy5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfYWJvdXQub25yZXNpemUgKCkgaW5cbiAgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmxldCBzeW5jICgpIDogdW5pdCBMd3QudCA9XG4gIFN0YXRlX3NldHRpbmdzLnN5bmMgKCkgPj49IFN0YXRlX3J1bnRpbWUuc3luYyA+Pj0gU3RhdGVfcHJvamVjdC5zeW5jXG4gID4+PSBmdW4gXyAtPlxuICBTdGF0ZV9maWxlLnN5bmMgKCkgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgaW5pdCAoKSA6IHVuaXQgTHd0LnQgPVxuICBMd3QucmV0dXJuX3VuaXQgPj49IFN0YXRlX3NldHRpbmdzLmluaXQgPj49IFN0YXRlX3J1bnRpbWUuaW5pdFxuICA+Pj0gU3RhdGVfcHJvamVjdC5pbml0ID4+PSBTdGF0ZV9maWxlLmluaXQgPj49IFN0YXRlX3NpbXVsYXRpb24uaW5pdCA+Pj0gc3luY1xuXG5sZXQgcmVjIGxvb3AgKGggOiB1bml0IC0+IHVuaXQgTHd0LnQpICh0IDogZmxvYXQpICgpIDogdW5pdCBMd3QudCA9XG4gIGggKCkgPj49IChmdW4gXyAtPiBKc19vZl9vY2FtbF9sd3QuTHd0X2pzLnNsZWVwIHQpID4+PSBsb29wIGggdFxuXG5sZXQgbG9vcF9zeW5jICgpIDogdW5pdCBMd3QudCA9XG4gIGlmIFJlYWN0LlMudmFsdWUgU3RhdGVfc2V0dGluZ3Muc3luY2ggdGhlbiAoXG4gICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgXCJsb29wIHN5bmNcIikgaW5cbiAgICBzeW5jICgpXG4gICkgZWxzZVxuICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgb25sb2FkICgpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdCA+Pj0gaW5pdCA+Pj0gbG9vcCBsb29wX3N5bmMgMjAuMClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBvbmxvYWQgKF8gOiAnYSkgOiBib29sIEpzLnQgPVxuICBsZXQgKCkgPSBTdGF0ZV91aS5vbmxvYWQgKCkgaW5cbiAgbGV0IG1haW4gPSBVaV9jb21tb24uaWRfZG9tIFwibWFpblwiIGluXG4gIGxldCAoKSA9XG4gICAgRG9tLmFwcGVuZENoaWxkIG1haW4gKFR5eG1sX2pzLlRvX2RvbS5vZl9kaXYgKFBhbmVsX3Byb2plY3RzLmNvbnRlbnQgKCkpKVxuICBpblxuICBsZXQgKCkgPSBEb20uYXBwZW5kQ2hpbGQgbWFpbiAoUGFuZWxfdGFiLm5hdnRhYnMgKCkpIGluXG4gIGxldCAoKSA9IERvbS5hcHBlbmRDaGlsZCBtYWluIChQYW5lbF90YWIubmF2Y29udGVudHMgKCkpIGluXG4gIGxldCAoKSA9XG4gICAgRG9tLmFwcGVuZENoaWxkIG1haW4gKFR5eG1sX2pzLlRvX2RvbS5vZl9kaXYgKFBhbmVsX3NldHRpbmdzLmNvbnRlbnQgKCkpKVxuICBpblxuXG4gIGxldCAoKSA9IFBhbmVsX3Byb2plY3RzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBQYW5lbF90YWIub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFBhbmVsX3NldHRpbmdzLm9ubG9hZCAoKSBpblxuXG4gIGxldCBfID1cbiAgICBEb21faHRtbC53aW5kb3cjIy5vbnJlc2l6ZSA6PVxuICAgICAgRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9wcm9qZWN0cy5vbnJlc2l6ZSAoKSBpblxuICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3RhYi5vbnJlc2l6ZSAoKSBpblxuICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3NldHRpbmdzLm9ucmVzaXplICgpIGluXG4gICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIEpzLl90cnVlXG5cbmxldCBfID0gRG9tX2h0bWwud2luZG93IyMub25sb2FkIDo9IERvbV9odG1sLmhhbmRsZXIgb25sb2FkXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEVuc3VyZSB0aGF0IFthdF9leGl0XSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGV2ZXJ5IHByb2dyYW0gKilcblxubGV0IF8gPSBkb19hdF9leGl0KClcbiJdfQ== diff --git a/try/KaSaWorker.js b/try/KaSaWorker.js index da961e9d1..52a80fc06 100644 --- a/try/KaSaWorker.js +++ b/try/KaSaWorker.js @@ -105169,7 +105169,7 @@ ko=[2,d2],kp=[2,ja],kq=[2,ev],kr=[2,cA],ks=[0,0,[2,kb],gA,0,1],kt=[2,bH],ku=[2,a "use strict"; var runtime = globalThis.jsoo_runtime, - t = "43af760", + t = "df48d4f", Kappa_version_Git_version = [0, t]; runtime.caml_register_global (1, Kappa_version_Git_version, "Kappa_version__Git_version"); diff --git a/try/KaStorWorker.js b/try/KaStorWorker.js index 6a1715322..a8473a171 100644 --- a/try/KaStorWorker.js +++ b/try/KaStorWorker.js @@ -76949,7 +76949,7 @@ hE=[2,cX],hF=[2,gM],hG=[2,dl],hH=[2,bL],hI=[0,0,[2,hv],eU,0,1],hJ=[2,a3],hK=[2,a "use strict"; var runtime = globalThis.jsoo_runtime, - t = "43af760", + t = "df48d4f", Kappa_version_Git_version = [0, t]; runtime.caml_register_global (1, Kappa_version_Git_version, "Kappa_version__Git_version"); diff --git a/try/index.html b/try/index.html index 2f330e039..fb55fb0eb 100644 --- a/try/index.html +++ b/try/index.html @@ -31,22 +31,22 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - +